From 6c8ca7ab2573e503839514306493ddaa0a438cca Mon Sep 17 00:00:00 2001 From: infinitycat Date: Thu, 27 Nov 2025 13:03:57 +0800 Subject: [PATCH 01/61] =?UTF-8?q?feat:=20docker-compose.yml=E6=9B=B4?= =?UTF-8?q?=E6=96=B0webui=E6=89=80=E9=9C=80=E7=9A=84adapter=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=96=87=E4=BB=B6=E6=98=A0=E5=B0=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/docker-compose.yml b/docker-compose.yml index 29887250..1161e7d5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -35,6 +35,7 @@ services: volumes: - ./docker-config/mmc/.env:/MaiMBot/.env # 持久化env配置文件 - ./docker-config/mmc:/MaiMBot/config # 持久化bot配置文件 + - ./docker-config/adapters:/MaiMBot/adapters-config # adapter配置文件夹映射 - ./data/MaiMBot/maibot_statistics.html:/MaiMBot/maibot_statistics.html #统计数据输出 - ./data/MaiMBot:/MaiMBot/data # 共享目录 - ./data/MaiMBot/plugins:/MaiMBot/plugins # 插件目录 From a58c54d378486970d2156f62cea22e33da722ebc Mon Sep 17 00:00:00 2001 From: Ronifue Date: Thu, 27 Nov 2025 18:43:19 +0800 Subject: [PATCH 02/61] =?UTF-8?q?feat:=20=E6=9B=B4=E5=8A=A0=E8=AF=A6?= =?UTF-8?q?=E7=BB=86=E7=9A=84=E6=A8=A1=E5=9E=8BAPI=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E6=8F=90=E7=A4=BA=E4=B8=8E=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E9=81=87=E5=88=B0=E5=B8=B8=E8=A7=81=E7=9A=84=E9=A2=91=E7=B9=81?= =?UTF-8?q?API=E8=AF=B7=E6=B1=82=E8=B6=85=E6=97=B6=E7=9A=84=E5=BB=BA?= =?UTF-8?q?=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/llm_models/exceptions.py | 7 ++++--- src/llm_models/utils_model.py | 16 ++++++++++++++-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/llm_models/exceptions.py b/src/llm_models/exceptions.py index 65e49f74..25452e0b 100644 --- a/src/llm_models/exceptions.py +++ b/src/llm_models/exceptions.py @@ -18,11 +18,12 @@ error_code_mapping = { class NetworkConnectionError(Exception): """连接异常,常见于网络问题或服务器不可用""" - def __init__(self): - super().__init__() + def __init__(self, message: str | None = None): + super().__init__(message) + self.message = message def __str__(self): - return "连接异常,请检查网络连接状态或URL是否正确" + return self.message or "连接异常,请检查网络连接状态或URL是否正确" class ReqAbortException(Exception): diff --git a/src/llm_models/utils_model.py b/src/llm_models/utils_model.py index 1ed74e03..74bbffaf 100644 --- a/src/llm_models/utils_model.py +++ b/src/llm_models/utils_model.py @@ -333,12 +333,24 @@ class LLMRequest: except NetworkConnectionError as e: # 网络错误:单独记录并重试 + # 尝试从链式异常中获取原始错误信息以诊断具体原因 + original_error_info = "" + if e.__cause__: + original_error_type = type(e.__cause__).__name__ + original_error_msg = str(e.__cause__) + original_error_info = f"\n 底层异常类型: {original_error_type}\n 底层异常信息: {original_error_msg}" + retry_remain -= 1 if retry_remain <= 0: - logger.error(f"模型 '{model_info.name}' 在网络错误重试用尽后仍然失败。") + logger.error(f"模型 '{model_info.name}' 在网络错误重试用尽后仍然失败。{original_error_info}") raise ModelAttemptFailed(f"模型 '{model_info.name}' 重试耗尽", original_exception=e) from e - logger.warning(f"模型 '{model_info.name}' 遇到网络错误(可重试): {str(e)}。剩余重试次数: {retry_remain}") + logger.warning( + f"模型 '{model_info.name}' 遇到网络错误(可重试): {str(e)}{original_error_info}\n" + f" 常见原因: 如请求的API正常但APITimeoutError类型错误过多,请尝试调整模型配置中对应API Provider的timeout值\n" + f" 其它可能原因: 网络波动、DNS 故障、连接超时、防火墙限制或代理问题\n" + f" 剩余重试次数: {retry_remain}" + ) await asyncio.sleep(api_provider.retry_interval) except RespNotOkException as e: From f8477e573e6bc18a5d025269677692c2154ac068 Mon Sep 17 00:00:00 2001 From: SengokuCola <1026294844@qq.com> Date: Fri, 28 Nov 2025 01:29:35 +0800 Subject: [PATCH 03/61] =?UTF-8?q?ref=EF=BC=9A=E9=87=8D=E6=9E=84=E5=8E=86?= =?UTF-8?q?=E5=8F=B2=E6=B6=88=E6=81=AF=E8=AE=B0=E5=BD=95=E6=A6=82=E6=8B=AC?= =?UTF-8?q?=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 支持分话题提取 更智能的截断 支持文件缓存 支持要点提取 --- src/chat/heart_flow/heartFC_chat.py | 2 +- src/chat/planner_actions/planner.py | 28 +- src/chat/utils/chat_history_summarizer.py | 493 ---------- src/common/database/database_model.py | 1 + .../chat_history_summarizer.py | 898 ++++++++++++++++++ 5 files changed, 927 insertions(+), 495 deletions(-) delete mode 100644 src/chat/utils/chat_history_summarizer.py create mode 100644 src/hippo_memorizer/chat_history_summarizer.py diff --git a/src/chat/heart_flow/heartFC_chat.py b/src/chat/heart_flow/heartFC_chat.py index 8d0aec26..bb9c6d76 100644 --- a/src/chat/heart_flow/heartFC_chat.py +++ b/src/chat/heart_flow/heartFC_chat.py @@ -29,7 +29,7 @@ from src.chat.utils.chat_message_builder import ( build_readable_messages_with_id, get_raw_msg_before_timestamp_with_chat, ) -from src.chat.utils.chat_history_summarizer import ChatHistorySummarizer +from src.hippo_memorizer.chat_history_summarizer import ChatHistorySummarizer if TYPE_CHECKING: from src.common.data_models.database_data_model import DatabaseMessages diff --git a/src/chat/planner_actions/planner.py b/src/chat/planner_actions/planner.py index b6ef7e19..d7c7c792 100644 --- a/src/chat/planner_actions/planner.py +++ b/src/chat/planner_actions/planner.py @@ -222,7 +222,8 @@ class ActionPlanner: # 非no_reply动作需要target_message_id target_message = None - if target_message_id := action_json.get("target_message_id"): + target_message_id = action_json.get("target_message_id") + if target_message_id: # 根据target_message_id查找原始消息 target_message = self.find_message_by_id(target_message_id, message_id_list) if target_message is None: @@ -233,6 +234,20 @@ class ActionPlanner: target_message = message_id_list[-1][1] logger.debug(f"{self.log_prefix}动作'{action}'缺少target_message_id,使用最新消息作为target_message") + if ( + action != "no_reply" + and target_message is not None + and self._is_message_from_self(target_message) + ): + logger.info( + f"{self.log_prefix}Planner选择了自己的消息 {target_message_id or target_message.message_id} 作为目标,强制使用 no_reply" + ) + reasoning = ( + f"目标消息 {target_message_id or target_message.message_id} 来自机器人自身,违反不回复自身消息规则。原始理由: {reasoning}" + ) + action = "no_reply" + target_message = None + # 验证action是否可用 available_action_names = [action_name for action_name, _ in current_available_actions] internal_action_names = ["no_reply", "reply", "wait_time", "no_reply_until_call"] @@ -277,6 +292,17 @@ class ActionPlanner: return action_planner_infos + def _is_message_from_self(self, message: "DatabaseMessages") -> bool: + """判断消息是否由机器人自身发送""" + try: + return ( + str(message.user_info.user_id) == str(global_config.bot.qq_account) + and (message.user_info.platform or "") == (global_config.bot.platform or "") + ) + except AttributeError: + logger.warning(f"{self.log_prefix}检测消息发送者失败,缺少必要字段") + return False + async def plan( self, available_actions: Dict[str, ActionInfo], diff --git a/src/chat/utils/chat_history_summarizer.py b/src/chat/utils/chat_history_summarizer.py deleted file mode 100644 index 7fa55834..00000000 --- a/src/chat/utils/chat_history_summarizer.py +++ /dev/null @@ -1,493 +0,0 @@ -""" -聊天内容概括器 -用于累积、打包和压缩聊天记录 -""" - -import asyncio -import json -import time -from typing import List, Optional, Set -from dataclasses import dataclass - -from src.common.logger import get_logger -from src.common.data_models.database_data_model import DatabaseMessages -from src.config.config import global_config, model_config -from src.llm_models.utils_model import LLMRequest -from src.plugin_system.apis import message_api -from src.chat.utils.chat_message_builder import build_readable_messages -from src.person_info.person_info import Person -from src.chat.message_receive.chat_stream import get_chat_manager - -logger = get_logger("chat_history_summarizer") - - -@dataclass -class MessageBatch: - """消息批次""" - - messages: List[DatabaseMessages] - start_time: float - end_time: float - is_preparing: bool = False # 是否处于准备结束模式 - - -class ChatHistorySummarizer: - """聊天内容概括器""" - - def __init__(self, chat_id: str, check_interval: int = 60): - """ - 初始化聊天内容概括器 - - Args: - chat_id: 聊天ID - check_interval: 定期检查间隔(秒),默认60秒 - """ - self.chat_id = chat_id - self._chat_display_name = self._get_chat_display_name() - self.log_prefix = f"[{self._chat_display_name}]" - - # 记录时间点,用于计算新消息 - self.last_check_time = time.time() - - # 当前累积的消息批次 - self.current_batch: Optional[MessageBatch] = None - - # LLM请求器,用于压缩聊天内容 - self.summarizer_llm = LLMRequest( - model_set=model_config.model_task_config.utils, request_type="chat_history_summarizer" - ) - - # 后台循环相关 - self.check_interval = check_interval # 检查间隔(秒) - self._periodic_task: Optional[asyncio.Task] = None - self._running = False - - def _get_chat_display_name(self) -> str: - """获取聊天显示名称""" - try: - chat_name = get_chat_manager().get_stream_name(self.chat_id) - if chat_name: - return chat_name - # 如果获取失败,使用简化的chat_id显示 - if len(self.chat_id) > 20: - return f"{self.chat_id[:8]}..." - return self.chat_id - except Exception: - # 如果获取失败,使用简化的chat_id显示 - if len(self.chat_id) > 20: - return f"{self.chat_id[:8]}..." - return self.chat_id - - async def process(self, current_time: Optional[float] = None): - """ - 处理聊天内容概括 - - Args: - current_time: 当前时间戳,如果为None则使用time.time() - """ - if current_time is None: - current_time = time.time() - - try: - # 获取从上次检查时间到当前时间的新消息 - new_messages = message_api.get_messages_by_time_in_chat( - chat_id=self.chat_id, - start_time=self.last_check_time, - end_time=current_time, - limit=0, - limit_mode="latest", - filter_mai=False, # 不过滤bot消息,因为需要检查bot是否发言 - filter_command=False, - ) - - if not new_messages: - # 没有新消息,检查是否需要打包 - if self.current_batch and self.current_batch.messages: - await self._check_and_package(current_time) - self.last_check_time = current_time - return - - logger.debug( - f"{self.log_prefix} 开始处理聊天概括,时间窗口: {self.last_check_time:.2f} -> {current_time:.2f}" - ) - - # 有新消息,更新最后检查时间 - self.last_check_time = current_time - - # 如果有当前批次,添加新消息 - if self.current_batch: - before_count = len(self.current_batch.messages) - self.current_batch.messages.extend(new_messages) - self.current_batch.end_time = current_time - logger.info(f"{self.log_prefix} 更新聊天话题: {before_count} -> {len(self.current_batch.messages)} 条消息") - else: - # 创建新批次 - self.current_batch = MessageBatch( - messages=new_messages, - start_time=new_messages[0].time if new_messages else current_time, - end_time=current_time, - ) - logger.info(f"{self.log_prefix} 新建聊天话题: {len(new_messages)} 条消息") - - # 检查是否需要打包 - await self._check_and_package(current_time) - - except Exception as e: - logger.error(f"{self.log_prefix} 处理聊天内容概括时出错: {e}") - import traceback - - traceback.print_exc() - - async def _check_and_package(self, current_time: float): - """检查是否需要打包""" - if not self.current_batch or not self.current_batch.messages: - return - - messages = self.current_batch.messages - message_count = len(messages) - last_message_time = messages[-1].time if messages else current_time - time_since_last_message = current_time - last_message_time - - # 格式化时间差显示 - if time_since_last_message < 60: - time_str = f"{time_since_last_message:.1f}秒" - elif time_since_last_message < 3600: - time_str = f"{time_since_last_message / 60:.1f}分钟" - else: - time_str = f"{time_since_last_message / 3600:.1f}小时" - - preparing_status = "是" if self.current_batch.is_preparing else "否" - - logger.info( - f"{self.log_prefix} 批次状态检查 | 消息数: {message_count} | 距最后消息: {time_str} | 准备结束模式: {preparing_status}" - ) - - # 检查打包条件 - should_package = False - - # 条件1: 消息长度超过120,直接打包 - if message_count >= 120: - should_package = True - logger.info(f"{self.log_prefix} 触发打包条件: 消息数量达到 {message_count} 条(阈值: 120条)") - - # 条件2: 最后一条消息的时间和当前时间差>600秒,直接打包 - elif time_since_last_message > 600: - should_package = True - logger.info(f"{self.log_prefix} 触发打包条件: 距最后消息 {time_str}(阈值: 10分钟)") - - # 条件3: 消息长度超过100,进入准备结束模式 - elif message_count > 100: - if not self.current_batch.is_preparing: - self.current_batch.is_preparing = True - logger.info(f"{self.log_prefix} 消息数量 {message_count} 条超过阈值(100条),进入准备结束模式") - - # 在准备结束模式下,如果最后一条消息的时间和当前时间差>10秒,就打包 - if time_since_last_message > 10: - should_package = True - logger.info(f"{self.log_prefix} 触发打包条件: 准备结束模式下,距最后消息 {time_str}(阈值: 10秒)") - - if should_package: - await self._package_and_store() - - async def _package_and_store(self): - """打包并存储聊天记录""" - if not self.current_batch or not self.current_batch.messages: - return - - messages = self.current_batch.messages - start_time = self.current_batch.start_time - end_time = self.current_batch.end_time - - logger.info( - f"{self.log_prefix} 开始打包批次 | 消息数: {len(messages)} | 时间范围: {start_time:.2f} - {end_time:.2f}" - ) - - # 检查是否有bot发言 - # 第一条消息前推600s到最后一条消息的时间内 - check_start_time = max(start_time - 600, 0) - check_end_time = end_time - - # 使用包含边界的时间范围查询 - bot_messages = message_api.get_messages_by_time_in_chat_inclusive( - chat_id=self.chat_id, - start_time=check_start_time, - end_time=check_end_time, - limit=0, - limit_mode="latest", - filter_mai=False, - filter_command=False, - ) - - # 检查是否有bot的发言 - has_bot_message = False - bot_user_id = str(global_config.bot.qq_account) - for msg in bot_messages: - if msg.user_info.user_id == bot_user_id: - has_bot_message = True - break - - if not has_bot_message: - logger.info( - f"{self.log_prefix} 批次内无Bot发言,丢弃批次 | 检查时间范围: {check_start_time:.2f} - {check_end_time:.2f}" - ) - self.current_batch = None - return - - # 有bot发言,进行压缩和存储 - try: - # 构建对话原文 - original_text = build_readable_messages( - messages=messages, - replace_bot_name=True, - timestamp_mode="normal_no_YMD", - read_mark=0.0, - truncate=False, - show_actions=False, - ) - - # 获取参与的所有人的昵称 - participants_set: Set[str] = set() - for msg in messages: - # 使用 msg.user_platform(扁平化字段)或 msg.user_info.platform - platform = ( - getattr(msg, "user_platform", None) - or (msg.user_info.platform if msg.user_info else None) - or msg.chat_info.platform - ) - person = Person(platform=platform, user_id=msg.user_info.user_id) - person_name = person.person_name - if person_name: - participants_set.add(person_name) - participants = list(participants_set) - logger.info(f"{self.log_prefix} 批次参与者: {', '.join(participants) if participants else '未知'}") - - # 使用LLM压缩聊天内容 - success, theme, keywords, summary = await self._compress_with_llm(original_text) - - if not success: - logger.warning(f"{self.log_prefix} LLM压缩失败,不存储到数据库 | 消息数: {len(messages)}") - # 清空当前批次,避免重复处理 - self.current_batch = None - return - - logger.info( - f"{self.log_prefix} LLM压缩完成 | 主题: {theme} | 关键词数: {len(keywords)} | 概括长度: {len(summary)} 字" - ) - - # 存储到数据库 - await self._store_to_database( - start_time=start_time, - end_time=end_time, - original_text=original_text, - participants=participants, - theme=theme, - keywords=keywords, - summary=summary, - ) - - logger.info(f"{self.log_prefix} 成功打包并存储聊天记录 | 消息数: {len(messages)} | 主题: {theme}") - - # 清空当前批次 - self.current_batch = None - - except Exception as e: - logger.error(f"{self.log_prefix} 打包和存储聊天记录时出错: {e}") - import traceback - - traceback.print_exc() - # 出错时也清空批次,避免重复处理 - self.current_batch = None - - async def _compress_with_llm(self, original_text: str) -> tuple[bool, str, List[str], str]: - """ - 使用LLM压缩聊天内容 - - Returns: - tuple[bool, str, List[str], str]: (是否成功, 主题, 关键词列表, 概括) - """ - prompt = f"""请对以下聊天记录进行概括,提取以下信息: - -1. 主题:这段对话的主要内容,一个简短的标题(不超过20字) -2. 关键词:这段对话的关键词,用列表形式返回(3-10个关键词) -3. 概括:对这段话的平文本概括(50-200字) - -请以JSON格式返回,格式如下: -{{ - "theme": "主题", - "keywords": ["关键词1", "关键词2", ...], - "summary": "概括内容" -}} - -聊天记录: -{original_text} - -请直接返回JSON,不要包含其他内容。""" - - try: - response, _ = await self.summarizer_llm.generate_response_async( - prompt=prompt, - temperature=0.3, - max_tokens=500, - ) - - # 解析JSON响应 - import re - - # 移除可能的markdown代码块标记 - json_str = response.strip() - json_str = re.sub(r"^```json\s*", "", json_str, flags=re.MULTILINE) - json_str = re.sub(r"^```\s*", "", json_str, flags=re.MULTILINE) - json_str = json_str.strip() - - # 尝试找到JSON对象的开始和结束位置 - # 查找第一个 { 和最后一个匹配的 } - start_idx = json_str.find("{") - if start_idx == -1: - raise ValueError("未找到JSON对象开始标记") - - # 从后往前查找最后一个 } - end_idx = json_str.rfind("}") - if end_idx == -1 or end_idx <= start_idx: - raise ValueError("未找到JSON对象结束标记") - - # 提取JSON字符串 - json_str = json_str[start_idx : end_idx + 1] - - # 尝试解析JSON - try: - result = json.loads(json_str) - except json.JSONDecodeError: - # 如果解析失败,尝试修复字符串值中的中文引号 - # 简单方法:将字符串值中的中文引号替换为转义的英文引号 - # 使用状态机方法:遍历字符串,在字符串值内部替换中文引号 - fixed_chars = [] - in_string = False - escape_next = False - i = 0 - while i < len(json_str): - char = json_str[i] - if escape_next: - fixed_chars.append(char) - escape_next = False - elif char == "\\": - fixed_chars.append(char) - escape_next = True - elif char == '"' and not escape_next: - fixed_chars.append(char) - in_string = not in_string - elif in_string and (char == '"' or char == '"'): - # 在字符串值内部,将中文引号替换为转义的英文引号 - fixed_chars.append('\\"') - else: - fixed_chars.append(char) - i += 1 - - json_str = "".join(fixed_chars) - # 再次尝试解析 - result = json.loads(json_str) - - theme = result.get("theme", "未命名对话") - keywords = result.get("keywords", []) - summary = result.get("summary", "无概括") - - # 确保keywords是列表 - if isinstance(keywords, str): - keywords = [keywords] - - return True, theme, keywords, summary - - except Exception as e: - logger.error(f"{self.log_prefix} LLM压缩聊天内容时出错: {e}") - logger.error(f"{self.log_prefix} LLM响应: {response if 'response' in locals() else 'N/A'}") - # 返回失败标志和默认值 - return False, "未命名对话", [], "压缩失败,无法生成概括" - - async def _store_to_database( - self, - start_time: float, - end_time: float, - original_text: str, - participants: List[str], - theme: str, - keywords: List[str], - summary: str, - ): - """存储到数据库""" - try: - from src.common.database.database_model import ChatHistory - from src.plugin_system.apis import database_api - - # 准备数据 - data = { - "chat_id": self.chat_id, - "start_time": start_time, - "end_time": end_time, - "original_text": original_text, - "participants": json.dumps(participants, ensure_ascii=False), - "theme": theme, - "keywords": json.dumps(keywords, ensure_ascii=False), - "summary": summary, - "count": 0, - } - - # 使用db_save存储(使用start_time和chat_id作为唯一标识) - # 由于可能有多条记录,我们使用组合键,但peewee不支持,所以使用start_time作为唯一标识 - # 但为了避免冲突,我们使用组合键:chat_id + start_time - # 由于peewee不支持组合键,我们直接创建新记录(不提供key_field和key_value) - saved_record = await database_api.db_save( - ChatHistory, - data=data, - ) - - if saved_record: - logger.debug(f"{self.log_prefix} 成功存储聊天历史记录到数据库") - else: - logger.warning(f"{self.log_prefix} 存储聊天历史记录到数据库失败") - - except Exception as e: - logger.error(f"{self.log_prefix} 存储到数据库时出错: {e}") - import traceback - - traceback.print_exc() - raise - - async def start(self): - """启动后台定期检查循环""" - if self._running: - logger.warning(f"{self.log_prefix} 后台循环已在运行,无需重复启动") - return - - self._running = True - self._periodic_task = asyncio.create_task(self._periodic_check_loop()) - logger.info(f"{self.log_prefix} 已启动后台定期检查循环 | 检查间隔: {self.check_interval}秒") - - async def stop(self): - """停止后台定期检查循环""" - self._running = False - if self._periodic_task: - self._periodic_task.cancel() - try: - await self._periodic_task - except asyncio.CancelledError: - pass - self._periodic_task = None - logger.info(f"{self.log_prefix} 已停止后台定期检查循环") - - async def _periodic_check_loop(self): - """后台定期检查循环""" - try: - while self._running: - # 执行一次检查 - await self.process() - - # 等待指定间隔后再次检查 - await asyncio.sleep(self.check_interval) - except asyncio.CancelledError: - logger.info(f"{self.log_prefix} 后台检查循环被取消") - raise - except Exception as e: - logger.error(f"{self.log_prefix} 后台检查循环出错: {e}") - import traceback - - traceback.print_exc() - self._running = False diff --git a/src/common/database/database_model.py b/src/common/database/database_model.py index bfb11d5a..9b1f18df 100644 --- a/src/common/database/database_model.py +++ b/src/common/database/database_model.py @@ -372,6 +372,7 @@ class ChatHistory(BaseModel): theme = TextField() # 主题:这段对话的主要内容,一个简短的标题 keywords = TextField() # 关键词:这段对话的关键词,JSON格式存储 summary = TextField() # 概括:对这段话的平文本概括 + key_point = TextField(null=True) # 关键信息:话题中的关键信息点,JSON格式存储 count = IntegerField(default=0) # 被检索次数 forget_times = IntegerField(default=0) # 被遗忘检查的次数 diff --git a/src/hippo_memorizer/chat_history_summarizer.py b/src/hippo_memorizer/chat_history_summarizer.py new file mode 100644 index 00000000..3f1b62e0 --- /dev/null +++ b/src/hippo_memorizer/chat_history_summarizer.py @@ -0,0 +1,898 @@ +""" +聊天内容概括器 +用于累积、打包和压缩聊天记录 +""" + +import asyncio +import json +import time +import re +from pathlib import Path +from typing import Dict, List, Optional, Set +from dataclasses import dataclass, field + +from src.common.logger import get_logger +from src.common.data_models.database_data_model import DatabaseMessages +from src.config.config import global_config, model_config +from src.llm_models.utils_model import LLMRequest +from src.plugin_system.apis import message_api +from src.chat.utils.chat_message_builder import build_readable_messages +from src.person_info.person_info import Person +from src.chat.message_receive.chat_stream import get_chat_manager +from src.chat.utils.prompt_builder import Prompt, global_prompt_manager + +logger = get_logger("chat_history_summarizer") + +HIPPO_CACHE_DIR = Path(__file__).resolve().parents[2] / "data" / "hippo_memorizer" + + +def init_prompt(): + """初始化提示词模板""" + + topic_analysis_prompt = """ +【历史话题标题列表】(仅标题,不含具体内容): +{history_topics_block} + +【本次聊天记录】(每条消息前有编号,用于后续引用): +{messages_block} + +请完成以下任务: +**识别话题** +1. 识别【本次聊天记录】中正在进行的一个或多个话题; +2. 判断【历史话题标题列表】中的话题是否在【本次聊天记录】中出现,如果出现,则直接使用该历史话题标题字符串; + +**选取消息** +1. 对于每个话题(新话题或历史话题),从上述带编号的消息中选出与该话题强相关的消息编号列表; +2. 每个话题用一句话清晰地描述正在发生的事件,必须包含时间(大致即可)、人物、主要事件和主题,保证精准且有区分度; + +请先输出一段简短思考,说明有什么话题,哪些是不包含在历史话题中的,哪些是包含在历史话题中的,并说明为什么; +然后严格以 JSON 格式输出【本次聊天记录】中涉及的话题,格式如下: +[ + {{ + "topic": "话题", + "message_indices": [1, 2, 5] + }}, + ... +] +""" + Prompt(topic_analysis_prompt, "hippo_topic_analysis_prompt") + + topic_summary_prompt = """ +请基于以下话题,对聊天记录片段进行概括,提取以下信息: + +**话题**:{topic} + +**要求**: +1. 关键词:提取与话题相关的关键词,用列表形式返回(3-10个关键词) +2. 概括:对这段话的平文本概括(50-200字),要求: + - 仔细地转述发生的事件和聊天内容; + - 可以适当摘取聊天记录中的原文; + - 重点突出事件的发展过程和结果; + - 围绕话题这个中心进行概括。 +3. 关键信息:提取话题中的关键信息点,用列表形式返回(3-8个关键信息点),每个关键信息点应该简洁明了。 + +请以JSON格式返回,格式如下: +{{ + "keywords": ["关键词1", "关键词2", ...], + "summary": "概括内容", + "key_point": ["关键信息1", "关键信息2", ...] +}} + +聊天记录: +{original_text} + +请直接返回JSON,不要包含其他内容。 +""" + Prompt(topic_summary_prompt, "hippo_topic_summary_prompt") + + +@dataclass +class MessageBatch: + """消息批次(用于触发话题检查的原始消息累积)""" + + messages: List[DatabaseMessages] + start_time: float + end_time: float + + +@dataclass +class TopicCacheItem: + """ + 话题缓存项 + + Attributes: + topic: 话题标题(一句话描述时间、人物、事件和主题) + messages: 与该话题相关的消息字符串列表(已经通过 build 函数转成可读文本) + participants: 涉及到的发言人昵称集合 + no_update_checks: 连续多少次“检查”没有新增内容 + """ + + topic: str + messages: List[str] = field(default_factory=list) + participants: Set[str] = field(default_factory=set) + no_update_checks: int = 0 + + +class ChatHistorySummarizer: + """聊天内容概括器""" + + def __init__(self, chat_id: str, check_interval: int = 60): + """ + 初始化聊天内容概括器 + + Args: + chat_id: 聊天ID + check_interval: 定期检查间隔(秒),默认60秒 + """ + self.chat_id = chat_id + self._chat_display_name = self._get_chat_display_name() + self.log_prefix = f"[{self._chat_display_name}]" + + # 记录时间点,用于计算新消息 + self.last_check_time = time.time() + + # 记录上一次话题检查的时间,用于判断是否需要触发检查 + self.last_topic_check_time = time.time() + + # 当前累积的消息批次 + self.current_batch: Optional[MessageBatch] = None + + # 话题缓存:topic_str -> TopicCacheItem + # 在内存中维护,并通过本地文件实时持久化 + self.topic_cache: Dict[str, TopicCacheItem] = {} + self._safe_chat_id = self._sanitize_chat_id(self.chat_id) + self._topic_cache_file = HIPPO_CACHE_DIR / f"{self._safe_chat_id}.json" + # 注意:批次加载需要异步查询消息,所以在 start() 中调用 + + # LLM请求器,用于压缩聊天内容 + self.summarizer_llm = LLMRequest( + model_set=model_config.model_task_config.utils, request_type="chat_history_summarizer" + ) + + # 后台循环相关 + self.check_interval = check_interval # 检查间隔(秒) + self._periodic_task: Optional[asyncio.Task] = None + self._running = False + + def _get_chat_display_name(self) -> str: + """获取聊天显示名称""" + try: + chat_name = get_chat_manager().get_stream_name(self.chat_id) + if chat_name: + return chat_name + # 如果获取失败,使用简化的chat_id显示 + if len(self.chat_id) > 20: + return f"{self.chat_id[:8]}..." + return self.chat_id + except Exception: + # 如果获取失败,使用简化的chat_id显示 + if len(self.chat_id) > 20: + return f"{self.chat_id[:8]}..." + return self.chat_id + + def _sanitize_chat_id(self, chat_id: str) -> str: + """用于生成可作为文件名的 chat_id""" + return re.sub(r"[^a-zA-Z0-9_.-]", "_", chat_id) + + def _load_topic_cache_from_disk(self): + """在启动时加载本地话题缓存(同步部分),支持重启后继续""" + try: + if not self._topic_cache_file.exists(): + return + + with self._topic_cache_file.open("r", encoding="utf-8") as f: + data = json.load(f) + + self.last_topic_check_time = data.get("last_topic_check_time", self.last_topic_check_time) + topics_data = data.get("topics", {}) + loaded_count = 0 + for topic, payload in topics_data.items(): + self.topic_cache[topic] = TopicCacheItem( + topic=topic, + messages=payload.get("messages", []), + participants=set(payload.get("participants", [])), + no_update_checks=payload.get("no_update_checks", 0), + ) + loaded_count += 1 + + if loaded_count: + logger.info(f"{self.log_prefix} 已加载 {loaded_count} 个话题缓存,继续追踪") + except Exception as e: + logger.error(f"{self.log_prefix} 加载话题缓存失败: {e}") + + async def _load_batch_from_disk(self): + """在启动时加载聊天批次,支持重启后继续""" + try: + if not self._topic_cache_file.exists(): + return + + with self._topic_cache_file.open("r", encoding="utf-8") as f: + data = json.load(f) + + batch_data = data.get("current_batch") + if not batch_data: + return + + start_time = batch_data.get("start_time") + end_time = batch_data.get("end_time") + if not start_time or not end_time: + return + + # 根据时间范围重新查询消息 + messages = message_api.get_messages_by_time_in_chat( + chat_id=self.chat_id, + start_time=start_time, + end_time=end_time, + limit=0, + limit_mode="latest", + filter_mai=False, + filter_command=False, + ) + + if messages: + self.current_batch = MessageBatch( + messages=messages, + start_time=start_time, + end_time=end_time, + ) + logger.info(f"{self.log_prefix} 已恢复聊天批次,包含 {len(messages)} 条消息") + except Exception as e: + logger.error(f"{self.log_prefix} 加载聊天批次失败: {e}") + + def _persist_topic_cache(self): + """实时持久化话题缓存和聊天批次,避免重启后丢失""" + try: + # 如果既没有话题缓存也没有批次,删除缓存文件 + if not self.topic_cache and not self.current_batch: + if self._topic_cache_file.exists(): + self._topic_cache_file.unlink() + return + + HIPPO_CACHE_DIR.mkdir(parents=True, exist_ok=True) + data = { + "chat_id": self.chat_id, + "last_topic_check_time": self.last_topic_check_time, + "topics": { + topic: { + "messages": item.messages, + "participants": list(item.participants), + "no_update_checks": item.no_update_checks, + } + for topic, item in self.topic_cache.items() + }, + } + + # 保存当前批次的时间范围(如果有) + if self.current_batch: + data["current_batch"] = { + "start_time": self.current_batch.start_time, + "end_time": self.current_batch.end_time, + } + + with self._topic_cache_file.open("w", encoding="utf-8") as f: + json.dump(data, f, ensure_ascii=False, indent=2) + except Exception as e: + logger.error(f"{self.log_prefix} 持久化话题缓存失败: {e}") + + async def process(self, current_time: Optional[float] = None): + """ + 处理聊天内容概括 + + Args: + current_time: 当前时间戳,如果为None则使用time.time() + """ + if current_time is None: + current_time = time.time() + + try: + # 获取从上次检查时间到当前时间的新消息 + new_messages = message_api.get_messages_by_time_in_chat( + chat_id=self.chat_id, + start_time=self.last_check_time, + end_time=current_time, + limit=0, + limit_mode="latest", + filter_mai=False, # 不过滤bot消息,因为需要检查bot是否发言 + filter_command=False, + ) + + if not new_messages: + # 没有新消息,检查是否需要进行“话题检查” + if self.current_batch and self.current_batch.messages: + await self._check_and_run_topic_check(current_time) + self.last_check_time = current_time + return + + logger.debug( + f"{self.log_prefix} 开始处理聊天概括,时间窗口: {self.last_check_time:.2f} -> {current_time:.2f}" + ) + + # 有新消息,更新最后检查时间 + self.last_check_time = current_time + + # 如果有当前批次,添加新消息 + if self.current_batch: + before_count = len(self.current_batch.messages) + self.current_batch.messages.extend(new_messages) + self.current_batch.end_time = current_time + logger.info(f"{self.log_prefix} 更新聊天检查批次: {before_count} -> {len(self.current_batch.messages)} 条消息") + # 更新批次后持久化 + self._persist_topic_cache() + else: + # 创建新批次 + self.current_batch = MessageBatch( + messages=new_messages, + start_time=new_messages[0].time if new_messages else current_time, + end_time=current_time, + ) + logger.info(f"{self.log_prefix} 新建聊天检查批次: {len(new_messages)} 条消息") + # 创建批次后持久化 + self._persist_topic_cache() + + # 检查是否需要触发“话题检查” + await self._check_and_run_topic_check(current_time) + + except Exception as e: + logger.error(f"{self.log_prefix} 处理聊天内容概括时出错: {e}") + import traceback + + traceback.print_exc() + + async def _check_and_run_topic_check(self, current_time: float): + """ + 检查是否需要进行一次“话题检查” + + 触发条件: + - 当前批次消息数 >= 100,或者 + - 距离上一次检查的时间 > 3600 秒(1小时) + """ + if not self.current_batch or not self.current_batch.messages: + return + + messages = self.current_batch.messages + message_count = len(messages) + time_since_last_check = current_time - self.last_topic_check_time + + # 格式化时间差显示 + if time_since_last_check < 60: + time_str = f"{time_since_last_check:.1f}秒" + elif time_since_last_check < 3600: + time_str = f"{time_since_last_check / 60:.1f}分钟" + else: + time_str = f"{time_since_last_check / 3600:.1f}小时" + + logger.info( + f"{self.log_prefix} 批次状态检查 | 消息数: {message_count} | 距上次检查: {time_str}" + ) + + # 检查“话题检查”触发条件 + should_check = False + + # 条件1: 消息数量 >= 100,触发一次检查 + if message_count >= 50: + should_check = True + logger.info(f"{self.log_prefix} 触发检查条件: 消息数量达到 {message_count} 条(阈值: 100条)") + + # 条件2: 距离上一次检查 > 3600 秒(1小时),触发一次检查 + elif time_since_last_check > 1200: + should_check = True + logger.info(f"{self.log_prefix} 触发检查条件: 距上次检查 {time_str}(阈值: 1小时)") + + if should_check: + await self._run_topic_check_and_update_cache(messages) + # 本批次已经被处理为话题信息,可以清空 + self.current_batch = None + # 更新上一次检查时间,并持久化 + self.last_topic_check_time = current_time + self._persist_topic_cache() + + async def _run_topic_check_and_update_cache(self, messages: List[DatabaseMessages]): + """ + 执行一次“话题检查”: + 1. 首先确认这段消息里是否有 Bot 发言,没有则直接丢弃本次批次; + 2. 将消息编号并转成字符串,构造 LLM Prompt; + 3. 把历史话题标题列表放入 Prompt,要求 LLM: + - 识别当前聊天中的话题(1 个或多个); + - 为每个话题选出相关消息编号; + - 若话题属于历史话题,则沿用原话题标题; + 4. LLM 返回 JSON:多个 {topic, message_indices}; + 5. 更新本地话题缓存,并根据规则触发“话题打包存储”。 + """ + if not messages: + return + + start_time = messages[0].time + end_time = messages[-1].time + + logger.info( + f"{self.log_prefix} 开始话题检查 | 消息数: {len(messages)} | 时间范围: {start_time:.2f} - {end_time:.2f}" + ) + + # 1. 检查当前批次内是否有 bot 发言(只检查当前批次,不往前推) + # 原因:我们要记录的是 bot 参与过的对话片段,如果当前批次内 bot 没有发言, + # 说明 bot 没有参与这段对话,不应该记录 + bot_user_id = str(global_config.bot.qq_account) + has_bot_message = False + + for msg in messages: + if msg.user_info.user_id == bot_user_id: + has_bot_message = True + break + + if not has_bot_message: + logger.info( + f"{self.log_prefix} 当前批次内无 Bot 发言,丢弃本次检查 | 时间范围: {start_time:.2f} - {end_time:.2f}" + ) + return + + # 2. 构造编号后的消息字符串和参与者信息 + numbered_lines, index_to_msg_str, index_to_msg_text, index_to_participants = self._build_numbered_messages_for_llm(messages) + + # 3. 调用 LLM 识别话题,并得到 topic -> indices + existing_topics = list(self.topic_cache.keys()) + success, topic_to_indices = await self._analyze_topics_with_llm( + numbered_lines=numbered_lines, + existing_topics=existing_topics, + ) + + if not success or not topic_to_indices: + logger.warning(f"{self.log_prefix} 话题识别失败或无有效话题,本次检查忽略") + # 即使识别失败,也认为是一次“检查”,但不更新 no_update_checks(保持原状) + return + + # 4. 统计哪些话题在本次检查中有新增内容 + updated_topics: Set[str] = set() + + for topic, indices in topic_to_indices.items(): + if not indices: + continue + + item = self.topic_cache.get(topic) + if not item: + # 新话题 + item = TopicCacheItem(topic=topic) + self.topic_cache[topic] = item + + # 收集属于该话题的消息文本(不带编号) + topic_msg_texts: List[str] = [] + new_participants: Set[str] = set() + for idx in indices: + msg_text = index_to_msg_text.get(idx) + if not msg_text: + continue + topic_msg_texts.append(msg_text) + new_participants.update(index_to_participants.get(idx, set())) + + if not topic_msg_texts: + continue + + # 将本次检查中属于该话题的所有消息合并为一个字符串(不带编号) + merged_text = "\n".join(topic_msg_texts) + item.messages.append(merged_text) + item.participants.update(new_participants) + # 本次检查中该话题有更新,重置计数 + item.no_update_checks = 0 + updated_topics.add(topic) + + # 5. 对于本次没有更新的历史话题,no_update_checks + 1 + for topic, item in list(self.topic_cache.items()): + if topic not in updated_topics: + item.no_update_checks += 1 + + # 6. 检查是否有话题需要打包存储 + topics_to_finalize: List[str] = [] + for topic, item in self.topic_cache.items(): + if item.no_update_checks >= 3: + logger.info(f"{self.log_prefix} 话题[{topic}] 连续 5 次检查无新增内容,触发打包存储") + topics_to_finalize.append(topic) + continue + if len(item.messages) > 8: + logger.info(f"{self.log_prefix} 话题[{topic}] 消息条数超过 30,触发打包存储") + topics_to_finalize.append(topic) + + for topic in topics_to_finalize: + item = self.topic_cache.get(topic) + if not item: + continue + try: + await self._finalize_and_store_topic( + topic=topic, + item=item, + # 这里的时间范围尽量覆盖最近一次检查的区间 + start_time=start_time, + end_time=end_time, + ) + finally: + # 无论成功与否,都从缓存中删除,避免重复 + self.topic_cache.pop(topic, None) + + def _build_numbered_messages_for_llm( + self, messages: List[DatabaseMessages] + ) -> tuple[List[str], Dict[int, str], Dict[int, str], Dict[int, Set[str]]]: + """ + 将消息转为带编号的字符串,供 LLM 选择使用。 + + 返回: + numbered_lines: ["1. xxx", "2. yyy", ...] # 带编号,用于 LLM 选择 + index_to_msg_str: idx -> "idx. xxx" # 带编号,用于 LLM 选择 + index_to_msg_text: idx -> "xxx" # 不带编号,用于最终存储 + index_to_participants: idx -> {nickname1, nickname2, ...} + """ + numbered_lines: List[str] = [] + index_to_msg_str: Dict[int, str] = {} + index_to_msg_text: Dict[int, str] = {} # 不带编号的消息文本 + index_to_participants: Dict[int, Set[str]] = {} + + for idx, msg in enumerate(messages, start=1): + # 使用 build_readable_messages 生成可读文本 + try: + text = build_readable_messages( + messages=[msg], + replace_bot_name=True, + timestamp_mode="normal_no_YMD", + read_mark=0.0, + truncate=False, + show_actions=False, + ).strip() + except Exception: + # 回退到简单文本 + text = getattr(msg, "processed_plain_text", "") or "" + + # 获取发言人昵称 + participants: Set[str] = set() + try: + platform = ( + getattr(msg, "user_platform", None) + or (msg.user_info.platform if msg.user_info else None) + or msg.chat_info.platform + ) + user_id = msg.user_info.user_id if msg.user_info else None + if platform and user_id: + person = Person(platform=platform, user_id=user_id) + if person.person_name: + participants.add(person.person_name) + except Exception: + pass + + # 带编号的字符串(用于 LLM 选择) + line = f"{idx}. {text}" + numbered_lines.append(line) + index_to_msg_str[idx] = line + # 不带编号的文本(用于最终存储) + index_to_msg_text[idx] = text + index_to_participants[idx] = participants + + return numbered_lines, index_to_msg_str, index_to_msg_text, index_to_participants + + async def _analyze_topics_with_llm( + self, + numbered_lines: List[str], + existing_topics: List[str], + ) -> tuple[bool, Dict[str, List[int]]]: + """ + 使用 LLM 识别本次检查中的话题,并为每个话题选择相关消息编号。 + + 要求: + - 话题用一句话清晰描述正在发生的事件,包括时间、人物、主要事件和主题; + - 可以有 1 个或多个话题; + - 若某个话题与历史话题列表中的某个话题是同一件事,请直接使用历史话题的字符串; + - 输出 JSON,格式: + [ + { + "topic": "话题标题字符串", + "message_indices": [1, 2, 5] + }, + ... + ] + """ + if not numbered_lines: + return False, {} + + history_topics_block = ( + "\n".join(f"- {t}" for t in existing_topics) if existing_topics else "(当前无历史话题)" + ) + messages_block = "\n".join(numbered_lines) + + prompt = await global_prompt_manager.format_prompt( + "hippo_topic_analysis_prompt", + history_topics_block=history_topics_block, + messages_block=messages_block, + ) + + try: + response, _ = await self.summarizer_llm.generate_response_async( + prompt=prompt, + temperature=0.2, + max_tokens=800, + ) + + import re + logger.info(f"{self.log_prefix} 话题识别LLM Prompt: {prompt}") + logger.info(f"{self.log_prefix} 话题识别LLM Response: {response}") + + json_str = response.strip() + # 移除可能的 markdown 代码块标记 + json_str = re.sub(r"^```json\s*", "", json_str, flags=re.MULTILINE) + json_str = re.sub(r"^```\s*", "", json_str, flags=re.MULTILINE) + json_str = json_str.strip() + + # 尝试直接解析为 JSON 数组 + result = json.loads(json_str) + + if not isinstance(result, list): + logger.error(f"{self.log_prefix} 话题识别返回的 JSON 不是列表: {result}") + return False, {} + + topic_to_indices: Dict[str, List[int]] = {} + for item in result: + if not isinstance(item, dict): + continue + topic = item.get("topic") + indices = item.get("message_indices") or item.get("messages") or [] + if not topic or not isinstance(topic, str): + continue + if isinstance(indices, list): + valid_indices: List[int] = [] + for v in indices: + try: + iv = int(v) + if iv > 0: + valid_indices.append(iv) + except (TypeError, ValueError): + continue + if valid_indices: + topic_to_indices[topic] = valid_indices + + return True, topic_to_indices + + except Exception as e: + logger.error(f"{self.log_prefix} 话题识别 LLM 调用或解析失败: {e}") + logger.error(f"{self.log_prefix} LLM响应: {response if 'response' in locals() else 'N/A'}") + return False, {} + + async def _finalize_and_store_topic( + self, + topic: str, + item: TopicCacheItem, + start_time: float, + end_time: float, + ): + """ + 对某个话题进行最终打包存储: + 1. 将 messages(list[str]) 拼接为 original_text; + 2. 使用 LLM 对 original_text 进行总结,得到 summary 和 keywords,theme 直接使用话题字符串; + 3. 写入数据库 ChatHistory; + 4. 完成后,调用方会从缓存中删除该话题。 + """ + if not item.messages: + logger.info(f"{self.log_prefix} 话题[{topic}] 无消息内容,跳过打包") + return + + original_text = "\n".join(item.messages) + + logger.info( + f"{self.log_prefix} 开始打包话题[{topic}] | 消息数: {len(item.messages)} | 时间范围: {start_time:.2f} - {end_time:.2f}" + ) + + # 使用 LLM 进行总结(基于话题名) + success, keywords, summary, key_point = await self._compress_with_llm(original_text, topic) + if not success: + logger.warning(f"{self.log_prefix} 话题[{topic}] LLM 概括失败,不写入数据库") + return + + participants = list(item.participants) + + await self._store_to_database( + start_time=start_time, + end_time=end_time, + original_text=original_text, + participants=participants, + theme=topic, # 主题直接使用话题名 + keywords=keywords, + summary=summary, + key_point=key_point, + ) + + logger.info( + f"{self.log_prefix} 话题[{topic}] 成功打包并存储 | 消息数: {len(item.messages)} | 参与者数: {len(participants)}" + ) + + async def _compress_with_llm(self, original_text: str, topic: str) -> tuple[bool, List[str], str, List[str]]: + """ + 使用LLM压缩聊天内容(用于单个话题的最终总结) + + Args: + original_text: 聊天记录原文 + topic: 话题名称 + + Returns: + tuple[bool, List[str], str, List[str]]: (是否成功, 关键词列表, 概括, 关键信息列表) + """ + prompt = await global_prompt_manager.format_prompt( + "hippo_topic_summary_prompt", + topic=topic, + original_text=original_text, + ) + + try: + response, _ = await self.summarizer_llm.generate_response_async( + prompt=prompt, + temperature=0.3, + max_tokens=500, + ) + + # 解析JSON响应 + import re + + # 移除可能的markdown代码块标记 + json_str = response.strip() + json_str = re.sub(r"^```json\s*", "", json_str, flags=re.MULTILINE) + json_str = re.sub(r"^```\s*", "", json_str, flags=re.MULTILINE) + json_str = json_str.strip() + + # 尝试找到JSON对象的开始和结束位置 + # 查找第一个 { 和最后一个匹配的 } + start_idx = json_str.find("{") + if start_idx == -1: + raise ValueError("未找到JSON对象开始标记") + + # 从后往前查找最后一个 } + end_idx = json_str.rfind("}") + if end_idx == -1 or end_idx <= start_idx: + raise ValueError("未找到JSON对象结束标记") + + # 提取JSON字符串 + json_str = json_str[start_idx : end_idx + 1] + + # 尝试解析JSON + try: + result = json.loads(json_str) + except json.JSONDecodeError: + # 如果解析失败,尝试修复字符串值中的中文引号 + # 简单方法:将字符串值中的中文引号替换为转义的英文引号 + # 使用状态机方法:遍历字符串,在字符串值内部替换中文引号 + fixed_chars = [] + in_string = False + escape_next = False + i = 0 + while i < len(json_str): + char = json_str[i] + if escape_next: + fixed_chars.append(char) + escape_next = False + elif char == "\\": + fixed_chars.append(char) + escape_next = True + elif char == '"' and not escape_next: + fixed_chars.append(char) + in_string = not in_string + elif in_string and (char == '"' or char == '"'): + # 在字符串值内部,将中文引号替换为转义的英文引号 + fixed_chars.append('\\"') + else: + fixed_chars.append(char) + i += 1 + + json_str = "".join(fixed_chars) + # 再次尝试解析 + result = json.loads(json_str) + + keywords = result.get("keywords", []) + summary = result.get("summary", "无概括") + key_point = result.get("key_point", []) + + # 确保keywords和key_point是列表 + if isinstance(keywords, str): + keywords = [keywords] + if isinstance(key_point, str): + key_point = [key_point] + + return True, keywords, summary, key_point + + except Exception as e: + logger.error(f"{self.log_prefix} LLM压缩聊天内容时出错: {e}") + logger.error(f"{self.log_prefix} LLM响应: {response if 'response' in locals() else 'N/A'}") + # 返回失败标志和默认值 + return False, [], "压缩失败,无法生成概括", [] + + async def _store_to_database( + self, + start_time: float, + end_time: float, + original_text: str, + participants: List[str], + theme: str, + keywords: List[str], + summary: str, + key_point: Optional[List[str]] = None, + ): + """存储到数据库""" + try: + from src.common.database.database_model import ChatHistory + from src.plugin_system.apis import database_api + + # 准备数据 + data = { + "chat_id": self.chat_id, + "start_time": start_time, + "end_time": end_time, + "original_text": original_text, + "participants": json.dumps(participants, ensure_ascii=False), + "theme": theme, + "keywords": json.dumps(keywords, ensure_ascii=False), + "summary": summary, + "count": 0, + } + + # 存储 key_point(如果存在) + if key_point is not None: + data["key_point"] = json.dumps(key_point, ensure_ascii=False) + + # 使用db_save存储(使用start_time和chat_id作为唯一标识) + # 由于可能有多条记录,我们使用组合键,但peewee不支持,所以使用start_time作为唯一标识 + # 但为了避免冲突,我们使用组合键:chat_id + start_time + # 由于peewee不支持组合键,我们直接创建新记录(不提供key_field和key_value) + saved_record = await database_api.db_save( + ChatHistory, + data=data, + ) + + if saved_record: + logger.debug(f"{self.log_prefix} 成功存储聊天历史记录到数据库") + else: + logger.warning(f"{self.log_prefix} 存储聊天历史记录到数据库失败") + + except Exception as e: + logger.error(f"{self.log_prefix} 存储到数据库时出错: {e}") + import traceback + + traceback.print_exc() + raise + + async def start(self): + """启动后台定期检查循环""" + if self._running: + logger.warning(f"{self.log_prefix} 后台循环已在运行,无需重复启动") + return + + # 加载聊天批次(如果有) + await self._load_batch_from_disk() + + self._running = True + self._periodic_task = asyncio.create_task(self._periodic_check_loop()) + logger.info(f"{self.log_prefix} 已启动后台定期检查循环 | 检查间隔: {self.check_interval}秒") + + async def stop(self): + """停止后台定期检查循环""" + self._running = False + if self._periodic_task: + self._periodic_task.cancel() + try: + await self._periodic_task + except asyncio.CancelledError: + pass + self._periodic_task = None + logger.info(f"{self.log_prefix} 已停止后台定期检查循环") + + async def _periodic_check_loop(self): + """后台定期检查循环""" + try: + while self._running: + # 执行一次检查 + await self.process() + + # 等待指定间隔后再次检查 + await asyncio.sleep(self.check_interval) + except asyncio.CancelledError: + logger.info(f"{self.log_prefix} 后台检查循环被取消") + raise + except Exception as e: + logger.error(f"{self.log_prefix} 后台检查循环出错: {e}") + import traceback + + traceback.print_exc() + self._running = False + + +init_prompt() + From ca645b3ae1bbf8748691b8635bdf4393e51f8bfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Fri, 28 Nov 2025 02:09:37 +0800 Subject: [PATCH 04/61] WebUI 889fcb00b1af0ba298fb14fa0657f1c22ff63334 --- ...{charts-BH1Uno6i.js => charts-0z-hIQr-.js} | 2 +- webui/dist/assets/icons-Bom2zaMH.js | 1 - webui/dist/assets/icons-DMlhlQyz.js | 1 + webui/dist/assets/index--0Z4-njD.js | 407 ++++++++++++++++++ webui/dist/assets/index-BwXMDuHV.css | 1 - webui/dist/assets/index-Bzl8QBn9.css | 1 + webui/dist/assets/index-CrIP7TYI.js | 381 ---------------- webui/dist/index.html | 8 +- 8 files changed, 414 insertions(+), 388 deletions(-) rename webui/dist/assets/{charts-BH1Uno6i.js => charts-0z-hIQr-.js} (99%) delete mode 100644 webui/dist/assets/icons-Bom2zaMH.js create mode 100644 webui/dist/assets/icons-DMlhlQyz.js create mode 100644 webui/dist/assets/index--0Z4-njD.js delete mode 100644 webui/dist/assets/index-BwXMDuHV.css create mode 100644 webui/dist/assets/index-Bzl8QBn9.css delete mode 100644 webui/dist/assets/index-CrIP7TYI.js diff --git a/webui/dist/assets/charts-BH1Uno6i.js b/webui/dist/assets/charts-0z-hIQr-.js similarity index 99% rename from webui/dist/assets/charts-BH1Uno6i.js rename to webui/dist/assets/charts-0z-hIQr-.js index 27531334..1b0cb22d 100644 --- a/webui/dist/assets/charts-BH1Uno6i.js +++ b/webui/dist/assets/charts-0z-hIQr-.js @@ -62,4 +62,4 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Qq(e,t){if(e){if(typeof e=="string")return dh(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return dh(e,t)}}function e2(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function t2(e){if(Array.isArray(e))return dh(e)}function dh(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);rl){p=[].concat(Or(c.slice(0,y)),[l-v]);break}var d=p.length%2===0?[0,h]:[h];return[].concat(Or(t.repeat(c,f)),Or(p),d).map(function(m){return"".concat(m,"px")}).join(", ")}),ut(r,"id",un("recharts-line-")),ut(r,"pathRef",function(o){r.mainCurve=o}),ut(r,"handleAnimationEnd",function(){r.setState({isAnimationFinished:!0}),r.props.onAnimationEnd&&r.props.onAnimationEnd()}),ut(r,"handleAnimationStart",function(){r.setState({isAnimationFinished:!1}),r.props.onAnimationStart&&r.props.onAnimationStart()}),r}return u2(t,e),n2(t,[{key:"componentDidMount",value:function(){if(this.props.isAnimationActive){var n=this.getTotalLength();this.setState({totalLength:n})}}},{key:"componentDidUpdate",value:function(){if(this.props.isAnimationActive){var n=this.getTotalLength();n!==this.state.totalLength&&this.setState({totalLength:n})}}},{key:"getTotalLength",value:function(){var n=this.mainCurve;try{return n&&n.getTotalLength&&n.getTotalLength()||0}catch{return 0}}},{key:"renderErrorBar",value:function(n,i){if(this.props.isAnimationActive&&!this.state.isAnimationFinished)return null;var a=this.props,o=a.points,u=a.xAxis,c=a.yAxis,s=a.layout,f=a.children,l=Ye(f,_i);if(!l)return null;var h=function(v,d){return{x:v.x,y:v.y,value:v.value,errorVal:Ae(v.payload,d)}},p={clipPath:n?"url(#clipPath-".concat(i,")"):null};return S.createElement(ne,p,l.map(function(y){return S.cloneElement(y,{key:"bar-".concat(y.props.dataKey),data:o,xAxis:u,yAxis:c,layout:s,dataPointFormatter:h})}))}},{key:"renderDots",value:function(n,i,a){var o=this.props.isAnimationActive;if(o&&!this.state.isAnimationFinished)return null;var u=this.props,c=u.dot,s=u.points,f=u.dataKey,l=K(this.props,!1),h=K(c,!0),p=s.map(function(v,d){var m=ze(ze(ze({key:"dot-".concat(d),r:3},l),h),{},{index:d,cx:v.x,cy:v.y,value:v.value,dataKey:f,payload:v.payload,points:s});return t.renderDotItem(c,m)}),y={clipPath:n?"url(#clipPath-".concat(i?"":"dots-").concat(a,")"):null};return S.createElement(ne,Rn({className:"recharts-line-dots",key:"dots"},y),p)}},{key:"renderCurveStatically",value:function(n,i,a,o){var u=this.props,c=u.type,s=u.layout,f=u.connectNulls;u.ref;var l=C0(u,Xq),h=ze(ze(ze({},K(l,!0)),{},{fill:"none",className:"recharts-line-curve",clipPath:i?"url(#clipPath-".concat(a,")"):null,points:n},o),{},{type:c,layout:s,connectNulls:f});return S.createElement(pa,Rn({},h,{pathRef:this.pathRef}))}},{key:"renderCurveWithAnimation",value:function(n,i){var a=this,o=this.props,u=o.points,c=o.strokeDasharray,s=o.isAnimationActive,f=o.animationBegin,l=o.animationDuration,h=o.animationEasing,p=o.animationId,y=o.animateNewValues,v=o.width,d=o.height,m=this.state,x=m.prevPoints,w=m.totalLength;return S.createElement(bt,{begin:f,duration:l,isActive:s,easing:h,from:{t:0},to:{t:1},key:"line-".concat(p),onAnimationEnd:this.handleAnimationEnd,onAnimationStart:this.handleAnimationStart},function(O){var g=O.t;if(x){var b=x.length/u.length,_=u.map(function(E,M){var I=Math.floor(M*b);if(x[I]){var $=x[I],k=Ge($.x,E.x),R=Ge($.y,E.y);return ze(ze({},E),{},{x:k(g),y:R(g)})}if(y){var L=Ge(v*2,E.x),B=Ge(d/2,E.y);return ze(ze({},E),{},{x:L(g),y:B(g)})}return ze(ze({},E),{},{x:E.x,y:E.y})});return a.renderCurveStatically(_,n,i)}var A=Ge(0,w),P=A(g),j;if(c){var T="".concat(c).split(/[,\s]+/gim).map(function(E){return parseFloat(E)});j=a.getStrokeDasharray(P,w,T)}else j=a.generateSimpleStrokeDasharray(w,P);return a.renderCurveStatically(u,n,i,{strokeDasharray:j})})}},{key:"renderCurve",value:function(n,i){var a=this.props,o=a.points,u=a.isAnimationActive,c=this.state,s=c.prevPoints,f=c.totalLength;return u&&o&&o.length&&(!s&&f>0||!Oi(s,o))?this.renderCurveWithAnimation(n,i):this.renderCurveStatically(o,n,i)}},{key:"render",value:function(){var n,i=this.props,a=i.hide,o=i.dot,u=i.points,c=i.className,s=i.xAxis,f=i.yAxis,l=i.top,h=i.left,p=i.width,y=i.height,v=i.isAnimationActive,d=i.id;if(a||!u||!u.length)return null;var m=this.state.isAnimationFinished,x=u.length===1,w=te("recharts-line",c),O=s&&s.allowDataOverflow,g=f&&f.allowDataOverflow,b=O||g,_=J(d)?this.id:d,A=(n=K(o,!1))!==null&&n!==void 0?n:{r:3,strokeWidth:2},P=A.r,j=P===void 0?3:P,T=A.strokeWidth,E=T===void 0?2:T,M=V1(o)?o:{},I=M.clipDot,$=I===void 0?!0:I,k=j*2+E;return S.createElement(ne,{className:w},O||g?S.createElement("defs",null,S.createElement("clipPath",{id:"clipPath-".concat(_)},S.createElement("rect",{x:O?h:h-p/2,y:g?l:l-y/2,width:O?p:p*2,height:g?y:y*2})),!$&&S.createElement("clipPath",{id:"clipPath-dots-".concat(_)},S.createElement("rect",{x:h-k/2,y:l-k/2,width:p+k,height:y+k}))):null,!x&&this.renderCurve(b,_),this.renderErrorBar(b,_),(x||o)&&this.renderDots(b,$,_),(!v||m)&&Mt.renderCallByParent(this.props,u))}}],[{key:"getDerivedStateFromProps",value:function(n,i){return n.animationId!==i.prevAnimationId?{prevAnimationId:n.animationId,curPoints:n.points,prevPoints:i.curPoints}:n.points!==i.curPoints?{curPoints:n.points}:null}},{key:"repeat",value:function(n,i){for(var a=n.length%2!==0?[].concat(Or(n),[0]):n,o=[],u=0;ue.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Z2(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function J2(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Q2(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r0?o:t&&t.length&&q(i)&&q(a)?t.slice(i,a+1):[]};function K_(e){return e==="number"?[0,"auto"]:void 0}var Ah=function(t,r,n,i){var a=t.graphicalItems,o=t.tooltipAxis,u=Ao(r,t);return n<0||!a||!a.length||n>=u.length?null:a.reduce(function(c,s){var f,l=(f=s.props.data)!==null&&f!==void 0?f:r;l&&t.dataStartIndex+t.dataEndIndex!==0&&t.dataEndIndex-t.dataStartIndex>=n&&(l=l.slice(t.dataStartIndex,t.dataEndIndex+1));var h;if(o.dataKey&&!o.allowDuplicatedCategory){var p=l===void 0?u:l;h=Bi(p,o.dataKey,i)}else h=l&&l[n]||u[n];return h?[].concat(rn(c),[RO(s,h)]):c},[])},U0=function(t,r,n,i){var a=i||{x:t.chartX,y:t.chartY},o=fL(a,n),u=t.orderedTooltipTicks,c=t.tooltipAxis,s=t.tooltipTicks,f=q$(o,u,s,c);if(f>=0&&s){var l=s[f]&&s[f].value,h=Ah(t,r,f,l),p=hL(n,u,f,a);return{activeTooltipIndex:f,activeLabel:l,activePayload:h,activeCoordinate:p}}return null},pL=function(t,r){var n=r.axes,i=r.graphicalItems,a=r.axisType,o=r.axisIdKey,u=r.stackGroups,c=r.dataStartIndex,s=r.dataEndIndex,f=t.layout,l=t.children,h=t.stackOffset,p=jO(f,a);return n.reduce(function(y,v){var d,m=v.type.defaultProps!==void 0?C(C({},v.type.defaultProps),v.props):v.props,x=m.type,w=m.dataKey,O=m.allowDataOverflow,g=m.allowDuplicatedCategory,b=m.scale,_=m.ticks,A=m.includeHidden,P=m[o];if(y[P])return y;var j=Ao(t.data,{graphicalItems:i.filter(function(U){var G,se=o in U.props?U.props[o]:(G=U.type.defaultProps)===null||G===void 0?void 0:G[o];return se===P}),dataStartIndex:c,dataEndIndex:s}),T=j.length,E,M,I;L2(m.domain,O,x)&&(E=qf(m.domain,null,O),p&&(x==="number"||b!=="auto")&&(I=$n(j,w,"category")));var $=K_(x);if(!E||E.length===0){var k,R=(k=m.domain)!==null&&k!==void 0?k:$;if(w){if(E=$n(j,w,x),x==="category"&&p){var L=q1(E);g&&L?(M=E,E=_a(0,T)):g||(E=Bm(R,E,v).reduce(function(U,G){return U.indexOf(G)>=0?U:[].concat(rn(U),[G])},[]))}else if(x==="category")g?E=E.filter(function(U){return U!==""&&!J(U)}):E=Bm(R,E,v).reduce(function(U,G){return U.indexOf(G)>=0||G===""||J(G)?U:[].concat(rn(U),[G])},[]);else if(x==="number"){var B=W$(j,i.filter(function(U){var G,se,me=o in U.props?U.props[o]:(G=U.type.defaultProps)===null||G===void 0?void 0:G[o],De="hide"in U.props?U.props.hide:(se=U.type.defaultProps)===null||se===void 0?void 0:se.hide;return me===P&&(A||!De)}),w,a,f);B&&(E=B)}p&&(x==="number"||b!=="auto")&&(I=$n(j,w,"category"))}else p?E=_a(0,T):u&&u[P]&&u[P].hasStack&&x==="number"?E=h==="expand"?[0,1]:kO(u[P].stackGroups,c,s):E=EO(j,i.filter(function(U){var G=o in U.props?U.props[o]:U.type.defaultProps[o],se="hide"in U.props?U.props.hide:U.type.defaultProps.hide;return G===P&&(A||!se)}),x,f,!0);if(x==="number")E=wh(l,E,P,a,_),R&&(E=qf(R,E,O));else if(x==="category"&&R){var z=R,H=E.every(function(U){return z.indexOf(U)>=0});H&&(E=z)}}return C(C({},y),{},V({},P,C(C({},m),{},{axisType:a,domain:E,categoricalDomain:I,duplicateDomain:M,originalDomain:(d=m.domain)!==null&&d!==void 0?d:$,isCategorical:p,layout:f})))},{})},dL=function(t,r){var n=r.graphicalItems,i=r.Axis,a=r.axisType,o=r.axisIdKey,u=r.stackGroups,c=r.dataStartIndex,s=r.dataEndIndex,f=t.layout,l=t.children,h=Ao(t.data,{graphicalItems:n,dataStartIndex:c,dataEndIndex:s}),p=h.length,y=jO(f,a),v=-1;return n.reduce(function(d,m){var x=m.type.defaultProps!==void 0?C(C({},m.type.defaultProps),m.props):m.props,w=x[o],O=K_("number");if(!d[w]){v++;var g;return y?g=_a(0,p):u&&u[w]&&u[w].hasStack?(g=kO(u[w].stackGroups,c,s),g=wh(l,g,w,a)):(g=qf(O,EO(h,n.filter(function(b){var _,A,P=o in b.props?b.props[o]:(_=b.type.defaultProps)===null||_===void 0?void 0:_[o],j="hide"in b.props?b.props.hide:(A=b.type.defaultProps)===null||A===void 0?void 0:A.hide;return P===w&&!j}),"number",f),i.defaultProps.allowDataOverflow),g=wh(l,g,w,a)),C(C({},d),{},V({},w,C(C({axisType:a},i.defaultProps),{},{hide:!0,orientation:Xe(sL,"".concat(a,".").concat(v%2),null),domain:g,originalDomain:O,isCategorical:y,layout:f})))}return d},{})},vL=function(t,r){var n=r.axisType,i=n===void 0?"xAxis":n,a=r.AxisComp,o=r.graphicalItems,u=r.stackGroups,c=r.dataStartIndex,s=r.dataEndIndex,f=t.children,l="".concat(i,"Id"),h=Ye(f,a),p={};return h&&h.length?p=pL(t,{axes:h,graphicalItems:o,axisType:i,axisIdKey:l,stackGroups:u,dataStartIndex:c,dataEndIndex:s}):o&&o.length&&(p=dL(t,{Axis:a,graphicalItems:o,axisType:i,axisIdKey:l,stackGroups:u,dataStartIndex:c,dataEndIndex:s})),p},yL=function(t){var r=qt(t),n=Tt(r,!1,!0);return{tooltipTicks:n,orderedTooltipTicks:Zh(n,function(i){return i.coordinate}),tooltipAxis:r,tooltipAxisBandSize:la(r,n)}},W0=function(t){var r=t.children,n=t.defaultShowTooltip,i=He(r,Hr),a=0,o=0;return t.data&&t.data.length!==0&&(o=t.data.length-1),i&&i.props&&(i.props.startIndex>=0&&(a=i.props.startIndex),i.props.endIndex>=0&&(o=i.props.endIndex)),{chartX:0,chartY:0,dataStartIndex:a,dataEndIndex:o,activeTooltipIndex:-1,isTooltipActive:!!n}},gL=function(t){return!t||!t.length?!1:t.some(function(r){var n=Et(r&&r.type);return n&&n.indexOf("Bar")>=0})},z0=function(t){return t==="horizontal"?{numericAxisName:"yAxis",cateAxisName:"xAxis"}:t==="vertical"?{numericAxisName:"xAxis",cateAxisName:"yAxis"}:t==="centric"?{numericAxisName:"radiusAxis",cateAxisName:"angleAxis"}:{numericAxisName:"angleAxis",cateAxisName:"radiusAxis"}},mL=function(t,r){var n=t.props,i=t.graphicalItems,a=t.xAxisMap,o=a===void 0?{}:a,u=t.yAxisMap,c=u===void 0?{}:u,s=n.width,f=n.height,l=n.children,h=n.margin||{},p=He(l,Hr),y=He(l,jr),v=Object.keys(c).reduce(function(g,b){var _=c[b],A=_.orientation;return!_.mirror&&!_.hide?C(C({},g),{},V({},A,g[A]+_.width)):g},{left:h.left||0,right:h.right||0}),d=Object.keys(o).reduce(function(g,b){var _=o[b],A=_.orientation;return!_.mirror&&!_.hide?C(C({},g),{},V({},A,Xe(g,"".concat(A))+_.height)):g},{top:h.top||0,bottom:h.bottom||0}),m=C(C({},d),v),x=m.bottom;p&&(m.bottom+=p.props.height||Hr.defaultProps.height),y&&r&&(m=F$(m,i,n,r));var w=s-m.left-m.right,O=f-m.top-m.bottom;return C(C({brushBottom:x},m),{},{width:Math.max(w,0),height:Math.max(O,0)})},bL=function(t,r){if(r==="xAxis")return t[r].width;if(r==="yAxis")return t[r].height},Np=function(t){var r=t.chartName,n=t.GraphicalChild,i=t.defaultTooltipEventType,a=i===void 0?"axis":i,o=t.validateTooltipEventTypes,u=o===void 0?["axis"]:o,c=t.axisComponents,s=t.legendContent,f=t.formatAxisMap,l=t.defaultProps,h=function(m,x){var w=x.graphicalItems,O=x.stackGroups,g=x.offset,b=x.updateId,_=x.dataStartIndex,A=x.dataEndIndex,P=m.barSize,j=m.layout,T=m.barGap,E=m.barCategoryGap,M=m.maxBarSize,I=z0(j),$=I.numericAxisName,k=I.cateAxisName,R=gL(w),L=[];return w.forEach(function(B,z){var H=Ao(m.data,{graphicalItems:[B],dataStartIndex:_,dataEndIndex:A}),U=B.type.defaultProps!==void 0?C(C({},B.type.defaultProps),B.props):B.props,G=U.dataKey,se=U.maxBarSize,me=U["".concat($,"Id")],De=U["".concat(k,"Id")],wt={},Ie=c.reduce(function(Ze,Ce){var Te=x["".concat(Ce.axisType,"Map")],Kt=U["".concat(Ce.axisType,"Id")];Te&&Te[Kt]||Ce.axisType==="zAxis"||or(!1);var Ht=Te[Kt];return C(C({},Ze),{},V(V({},Ce.axisType,Ht),"".concat(Ce.axisType,"Ticks"),Tt(Ht)))},wt),F=Ie[k],Q=Ie["".concat(k,"Ticks")],ee=O&&O[me]&&O[me].hasStack&&J$(B,O[me].stackGroups),D=Et(B.type).indexOf("Bar")>=0,ve=la(F,Q),re=[],Y=R&&L$({barSize:P,stackGroups:O,totalSize:bL(Ie,k)});if(D){var ye,Z,Ne=J(se)?M:se,We=(ye=(Z=la(F,Q,!0))!==null&&Z!==void 0?Z:Ne)!==null&&ye!==void 0?ye:0;re=B$({barGap:T,barCategoryGap:E,bandSize:We!==ve?We:ve,sizeList:Y[De],maxBarSize:Ne}),We!==ve&&(re=re.map(function(Ze){return C(C({},Ze),{},{position:C(C({},Ze.position),{},{offset:Ze.position.offset-We/2})})}))}var gr=B&&B.type&&B.type.getComposedData;gr&&L.push({props:C(C({},gr(C(C({},Ie),{},{displayedData:H,props:m,dataKey:G,item:B,bandSize:ve,barPosition:re,offset:g,stackedData:ee,layout:j,dataStartIndex:_,dataEndIndex:A}))),{},V(V(V({key:B.key||"item-".concat(z)},$,Ie[$]),k,Ie[k]),"animationId",b)),childIndex:Z1(B,m.children),item:B})}),L},p=function(m,x){var w=m.props,O=m.dataStartIndex,g=m.dataEndIndex,b=m.updateId;if(!Jd({props:w}))return null;var _=w.children,A=w.layout,P=w.stackOffset,j=w.data,T=w.reverseStackOrder,E=z0(A),M=E.numericAxisName,I=E.cateAxisName,$=Ye(_,n),k=Y$(j,$,"".concat(M,"Id"),"".concat(I,"Id"),P,T),R=c.reduce(function(U,G){var se="".concat(G.axisType,"Map");return C(C({},U),{},V({},se,vL(w,C(C({},G),{},{graphicalItems:$,stackGroups:G.axisType===M&&k,dataStartIndex:O,dataEndIndex:g}))))},{}),L=mL(C(C({},R),{},{props:w,graphicalItems:$}),x?.legendBBox);Object.keys(R).forEach(function(U){R[U]=f(w,R[U],L,U.replace("Map",""),r)});var B=R["".concat(I,"Map")],z=yL(B),H=h(w,C(C({},R),{},{dataStartIndex:O,dataEndIndex:g,updateId:b,graphicalItems:$,stackGroups:k,offset:L}));return C(C({formattedGraphicalItems:H,graphicalItems:$,offset:L,stackGroups:k},z),R)},y=(function(d){function m(x){var w,O,g;return J2(this,m),g=tL(this,m,[x]),V(g,"eventEmitterSymbol",Symbol("rechartsEventEmitter")),V(g,"accessibilityManager",new q2),V(g,"handleLegendBBoxUpdate",function(b){if(b){var _=g.state,A=_.dataStartIndex,P=_.dataEndIndex,j=_.updateId;g.setState(C({legendBBox:b},p({props:g.props,dataStartIndex:A,dataEndIndex:P,updateId:j},C(C({},g.state),{},{legendBBox:b}))))}}),V(g,"handleReceiveSyncEvent",function(b,_,A){if(g.props.syncId===b){if(A===g.eventEmitterSymbol&&typeof g.props.syncMethod!="function")return;g.applySyncEvent(_)}}),V(g,"handleBrushChange",function(b){var _=b.startIndex,A=b.endIndex;if(_!==g.state.dataStartIndex||A!==g.state.dataEndIndex){var P=g.state.updateId;g.setState(function(){return C({dataStartIndex:_,dataEndIndex:A},p({props:g.props,dataStartIndex:_,dataEndIndex:A,updateId:P},g.state))}),g.triggerSyncEvent({dataStartIndex:_,dataEndIndex:A})}}),V(g,"handleMouseEnter",function(b){var _=g.getMouseInfo(b);if(_){var A=C(C({},_),{},{isTooltipActive:!0});g.setState(A),g.triggerSyncEvent(A);var P=g.props.onMouseEnter;X(P)&&P(A,b)}}),V(g,"triggeredAfterMouseMove",function(b){var _=g.getMouseInfo(b),A=_?C(C({},_),{},{isTooltipActive:!0}):{isTooltipActive:!1};g.setState(A),g.triggerSyncEvent(A);var P=g.props.onMouseMove;X(P)&&P(A,b)}),V(g,"handleItemMouseEnter",function(b){g.setState(function(){return{isTooltipActive:!0,activeItem:b,activePayload:b.tooltipPayload,activeCoordinate:b.tooltipPosition||{x:b.cx,y:b.cy}}})}),V(g,"handleItemMouseLeave",function(){g.setState(function(){return{isTooltipActive:!1}})}),V(g,"handleMouseMove",function(b){b.persist(),g.throttleTriggeredAfterMouseMove(b)}),V(g,"handleMouseLeave",function(b){g.throttleTriggeredAfterMouseMove.cancel();var _={isTooltipActive:!1};g.setState(_),g.triggerSyncEvent(_);var A=g.props.onMouseLeave;X(A)&&A(_,b)}),V(g,"handleOuterEvent",function(b){var _=Y1(b),A=Xe(g.props,"".concat(_));if(_&&X(A)){var P,j;/.*touch.*/i.test(_)?j=g.getMouseInfo(b.changedTouches[0]):j=g.getMouseInfo(b),A((P=j)!==null&&P!==void 0?P:{},b)}}),V(g,"handleClick",function(b){var _=g.getMouseInfo(b);if(_){var A=C(C({},_),{},{isTooltipActive:!0});g.setState(A),g.triggerSyncEvent(A);var P=g.props.onClick;X(P)&&P(A,b)}}),V(g,"handleMouseDown",function(b){var _=g.props.onMouseDown;if(X(_)){var A=g.getMouseInfo(b);_(A,b)}}),V(g,"handleMouseUp",function(b){var _=g.props.onMouseUp;if(X(_)){var A=g.getMouseInfo(b);_(A,b)}}),V(g,"handleTouchMove",function(b){b.changedTouches!=null&&b.changedTouches.length>0&&g.throttleTriggeredAfterMouseMove(b.changedTouches[0])}),V(g,"handleTouchStart",function(b){b.changedTouches!=null&&b.changedTouches.length>0&&g.handleMouseDown(b.changedTouches[0])}),V(g,"handleTouchEnd",function(b){b.changedTouches!=null&&b.changedTouches.length>0&&g.handleMouseUp(b.changedTouches[0])}),V(g,"handleDoubleClick",function(b){var _=g.props.onDoubleClick;if(X(_)){var A=g.getMouseInfo(b);_(A,b)}}),V(g,"handleContextMenu",function(b){var _=g.props.onContextMenu;if(X(_)){var A=g.getMouseInfo(b);_(A,b)}}),V(g,"triggerSyncEvent",function(b){g.props.syncId!==void 0&&Al.emit(Sl,g.props.syncId,b,g.eventEmitterSymbol)}),V(g,"applySyncEvent",function(b){var _=g.props,A=_.layout,P=_.syncMethod,j=g.state.updateId,T=b.dataStartIndex,E=b.dataEndIndex;if(b.dataStartIndex!==void 0||b.dataEndIndex!==void 0)g.setState(C({dataStartIndex:T,dataEndIndex:E},p({props:g.props,dataStartIndex:T,dataEndIndex:E,updateId:j},g.state)));else if(b.activeTooltipIndex!==void 0){var M=b.chartX,I=b.chartY,$=b.activeTooltipIndex,k=g.state,R=k.offset,L=k.tooltipTicks;if(!R)return;if(typeof P=="function")$=P(L,b);else if(P==="value"){$=-1;for(var B=0;B=0){var ee,D;if(M.dataKey&&!M.allowDuplicatedCategory){var ve=typeof M.dataKey=="function"?Q:"payload.".concat(M.dataKey.toString());ee=Bi(B,ve,$),D=z&&H&&Bi(H,ve,$)}else ee=B?.[I],D=z&&H&&H[I];if(De||me){var re=b.props.activeIndex!==void 0?b.props.activeIndex:I;return[N.cloneElement(b,C(C(C({},P.props),Ie),{},{activeIndex:re})),null,null]}if(!J(ee))return[F].concat(rn(g.renderActivePoints({item:P,activePoint:ee,basePoint:D,childIndex:I,isRange:z})))}else{var Y,ye=(Y=g.getItemByXY(g.state.activeCoordinate))!==null&&Y!==void 0?Y:{graphicalItem:F},Z=ye.graphicalItem,Ne=Z.item,We=Ne===void 0?b:Ne,gr=Z.childIndex,Ze=C(C(C({},P.props),Ie),{},{activeIndex:gr});return[N.cloneElement(We,Ze),null,null]}return z?[F,null,null]:[F,null]}),V(g,"renderCustomized",function(b,_,A){return N.cloneElement(b,C(C({key:"recharts-customized-".concat(A)},g.props),g.state))}),V(g,"renderMap",{CartesianGrid:{handler:qi,once:!0},ReferenceArea:{handler:g.renderReferenceElement},ReferenceLine:{handler:qi},ReferenceDot:{handler:g.renderReferenceElement},XAxis:{handler:qi},YAxis:{handler:qi},Brush:{handler:g.renderBrush,once:!0},Bar:{handler:g.renderGraphicChild},Line:{handler:g.renderGraphicChild},Area:{handler:g.renderGraphicChild},Radar:{handler:g.renderGraphicChild},RadialBar:{handler:g.renderGraphicChild},Scatter:{handler:g.renderGraphicChild},Pie:{handler:g.renderGraphicChild},Funnel:{handler:g.renderGraphicChild},Tooltip:{handler:g.renderCursor,once:!0},PolarGrid:{handler:g.renderPolarGrid,once:!0},PolarAngleAxis:{handler:g.renderPolarAxis},PolarRadiusAxis:{handler:g.renderPolarAxis},Customized:{handler:g.renderCustomized}}),g.clipPathId="".concat((w=x.id)!==null&&w!==void 0?w:un("recharts"),"-clip"),g.throttleTriggeredAfterMouseMove=_w(g.triggeredAfterMouseMove,(O=x.throttleDelay)!==null&&O!==void 0?O:1e3/60),g.state={},g}return iL(m,d),eL(m,[{key:"componentDidMount",value:function(){var w,O;this.addListener(),this.accessibilityManager.setDetails({container:this.container,offset:{left:(w=this.props.margin.left)!==null&&w!==void 0?w:0,top:(O=this.props.margin.top)!==null&&O!==void 0?O:0},coordinateList:this.state.tooltipTicks,mouseHandlerCallback:this.triggeredAfterMouseMove,layout:this.props.layout}),this.displayDefaultTooltip()}},{key:"displayDefaultTooltip",value:function(){var w=this.props,O=w.children,g=w.data,b=w.height,_=w.layout,A=He(O,_t);if(A){var P=A.props.defaultIndex;if(!(typeof P!="number"||P<0||P>this.state.tooltipTicks.length-1)){var j=this.state.tooltipTicks[P]&&this.state.tooltipTicks[P].value,T=Ah(this.state,g,P,j),E=this.state.tooltipTicks[P].coordinate,M=(this.state.offset.top+b)/2,I=_==="horizontal",$=I?{x:E,y:M}:{y:E,x:M},k=this.state.formattedGraphicalItems.find(function(L){var B=L.item;return B.type.name==="Scatter"});k&&($=C(C({},$),k.props.points[P].tooltipPosition),T=k.props.points[P].tooltipPayload);var R={activeTooltipIndex:P,isTooltipActive:!0,activeLabel:j,activePayload:T,activeCoordinate:$};this.setState(R),this.renderCursor(A),this.accessibilityManager.setIndex(P)}}}},{key:"getSnapshotBeforeUpdate",value:function(w,O){if(!this.props.accessibilityLayer)return null;if(this.state.tooltipTicks!==O.tooltipTicks&&this.accessibilityManager.setDetails({coordinateList:this.state.tooltipTicks}),this.props.layout!==w.layout&&this.accessibilityManager.setDetails({layout:this.props.layout}),this.props.margin!==w.margin){var g,b;this.accessibilityManager.setDetails({offset:{left:(g=this.props.margin.left)!==null&&g!==void 0?g:0,top:(b=this.props.margin.top)!==null&&b!==void 0?b:0}})}return null}},{key:"componentDidUpdate",value:function(w){af([He(w.children,_t)],[He(this.props.children,_t)])||this.displayDefaultTooltip()}},{key:"componentWillUnmount",value:function(){this.removeListener(),this.throttleTriggeredAfterMouseMove.cancel()}},{key:"getTooltipEventType",value:function(){var w=He(this.props.children,_t);if(w&&typeof w.props.shared=="boolean"){var O=w.props.shared?"axis":"item";return u.indexOf(O)>=0?O:a}return a}},{key:"getMouseInfo",value:function(w){if(!this.container)return null;var O=this.container,g=O.getBoundingClientRect(),b=PT(g),_={chartX:Math.round(w.pageX-b.left),chartY:Math.round(w.pageY-b.top)},A=g.width/O.offsetWidth||1,P=this.inRange(_.chartX,_.chartY,A);if(!P)return null;var j=this.state,T=j.xAxisMap,E=j.yAxisMap,M=this.getTooltipEventType(),I=U0(this.state,this.props.data,this.props.layout,P);if(M!=="axis"&&T&&E){var $=qt(T).scale,k=qt(E).scale,R=$&&$.invert?$.invert(_.chartX):null,L=k&&k.invert?k.invert(_.chartY):null;return C(C({},_),{},{xValue:R,yValue:L},I)}return I?C(C({},_),I):null}},{key:"inRange",value:function(w,O){var g=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,b=this.props.layout,_=w/g,A=O/g;if(b==="horizontal"||b==="vertical"){var P=this.state.offset,j=_>=P.left&&_<=P.left+P.width&&A>=P.top&&A<=P.top+P.height;return j?{x:_,y:A}:null}var T=this.state,E=T.angleAxisMap,M=T.radiusAxisMap;if(E&&M){var I=qt(E);return Wm({x:_,y:A},I)}return null}},{key:"parseEventsOfWrapper",value:function(){var w=this.props.children,O=this.getTooltipEventType(),g=He(w,_t),b={};g&&O==="axis"&&(g.props.trigger==="click"?b={onClick:this.handleClick}:b={onMouseEnter:this.handleMouseEnter,onDoubleClick:this.handleDoubleClick,onMouseMove:this.handleMouseMove,onMouseLeave:this.handleMouseLeave,onTouchMove:this.handleTouchMove,onTouchStart:this.handleTouchStart,onTouchEnd:this.handleTouchEnd,onContextMenu:this.handleContextMenu});var _=Fi(this.props,this.handleOuterEvent);return C(C({},_),b)}},{key:"addListener",value:function(){Al.on(Sl,this.handleReceiveSyncEvent)}},{key:"removeListener",value:function(){Al.removeListener(Sl,this.handleReceiveSyncEvent)}},{key:"filterFormatItem",value:function(w,O,g){for(var b=this.state.formattedGraphicalItems,_=0,A=b.length;_e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0?o:t&&t.length&&q(i)&&q(a)?t.slice(i,a+1):[]};function K_(e){return e==="number"?[0,"auto"]:void 0}var Ah=function(t,r,n,i){var a=t.graphicalItems,o=t.tooltipAxis,u=Ao(r,t);return n<0||!a||!a.length||n>=u.length?null:a.reduce(function(c,s){var f,l=(f=s.props.data)!==null&&f!==void 0?f:r;l&&t.dataStartIndex+t.dataEndIndex!==0&&t.dataEndIndex-t.dataStartIndex>=n&&(l=l.slice(t.dataStartIndex,t.dataEndIndex+1));var h;if(o.dataKey&&!o.allowDuplicatedCategory){var p=l===void 0?u:l;h=Bi(p,o.dataKey,i)}else h=l&&l[n]||u[n];return h?[].concat(rn(c),[RO(s,h)]):c},[])},U0=function(t,r,n,i){var a=i||{x:t.chartX,y:t.chartY},o=fL(a,n),u=t.orderedTooltipTicks,c=t.tooltipAxis,s=t.tooltipTicks,f=q$(o,u,s,c);if(f>=0&&s){var l=s[f]&&s[f].value,h=Ah(t,r,f,l),p=hL(n,u,f,a);return{activeTooltipIndex:f,activeLabel:l,activePayload:h,activeCoordinate:p}}return null},pL=function(t,r){var n=r.axes,i=r.graphicalItems,a=r.axisType,o=r.axisIdKey,u=r.stackGroups,c=r.dataStartIndex,s=r.dataEndIndex,f=t.layout,l=t.children,h=t.stackOffset,p=jO(f,a);return n.reduce(function(y,v){var d,m=v.type.defaultProps!==void 0?C(C({},v.type.defaultProps),v.props):v.props,x=m.type,w=m.dataKey,O=m.allowDataOverflow,g=m.allowDuplicatedCategory,b=m.scale,_=m.ticks,A=m.includeHidden,P=m[o];if(y[P])return y;var j=Ao(t.data,{graphicalItems:i.filter(function(U){var G,se=o in U.props?U.props[o]:(G=U.type.defaultProps)===null||G===void 0?void 0:G[o];return se===P}),dataStartIndex:c,dataEndIndex:s}),T=j.length,E,M,I;L2(m.domain,O,x)&&(E=qf(m.domain,null,O),p&&(x==="number"||b!=="auto")&&(I=$n(j,w,"category")));var $=K_(x);if(!E||E.length===0){var k,R=(k=m.domain)!==null&&k!==void 0?k:$;if(w){if(E=$n(j,w,x),x==="category"&&p){var L=q1(E);g&&L?(M=E,E=_a(0,T)):g||(E=Bm(R,E,v).reduce(function(U,G){return U.indexOf(G)>=0?U:[].concat(rn(U),[G])},[]))}else if(x==="category")g?E=E.filter(function(U){return U!==""&&!J(U)}):E=Bm(R,E,v).reduce(function(U,G){return U.indexOf(G)>=0||G===""||J(G)?U:[].concat(rn(U),[G])},[]);else if(x==="number"){var B=W$(j,i.filter(function(U){var G,se,me=o in U.props?U.props[o]:(G=U.type.defaultProps)===null||G===void 0?void 0:G[o],De="hide"in U.props?U.props.hide:(se=U.type.defaultProps)===null||se===void 0?void 0:se.hide;return me===P&&(A||!De)}),w,a,f);B&&(E=B)}p&&(x==="number"||b!=="auto")&&(I=$n(j,w,"category"))}else p?E=_a(0,T):u&&u[P]&&u[P].hasStack&&x==="number"?E=h==="expand"?[0,1]:kO(u[P].stackGroups,c,s):E=EO(j,i.filter(function(U){var G=o in U.props?U.props[o]:U.type.defaultProps[o],se="hide"in U.props?U.props.hide:U.type.defaultProps.hide;return G===P&&(A||!se)}),x,f,!0);if(x==="number")E=wh(l,E,P,a,_),R&&(E=qf(R,E,O));else if(x==="category"&&R){var z=R,H=E.every(function(U){return z.indexOf(U)>=0});H&&(E=z)}}return C(C({},y),{},V({},P,C(C({},m),{},{axisType:a,domain:E,categoricalDomain:I,duplicateDomain:M,originalDomain:(d=m.domain)!==null&&d!==void 0?d:$,isCategorical:p,layout:f})))},{})},dL=function(t,r){var n=r.graphicalItems,i=r.Axis,a=r.axisType,o=r.axisIdKey,u=r.stackGroups,c=r.dataStartIndex,s=r.dataEndIndex,f=t.layout,l=t.children,h=Ao(t.data,{graphicalItems:n,dataStartIndex:c,dataEndIndex:s}),p=h.length,y=jO(f,a),v=-1;return n.reduce(function(d,m){var x=m.type.defaultProps!==void 0?C(C({},m.type.defaultProps),m.props):m.props,w=x[o],O=K_("number");if(!d[w]){v++;var g;return y?g=_a(0,p):u&&u[w]&&u[w].hasStack?(g=kO(u[w].stackGroups,c,s),g=wh(l,g,w,a)):(g=qf(O,EO(h,n.filter(function(b){var _,A,P=o in b.props?b.props[o]:(_=b.type.defaultProps)===null||_===void 0?void 0:_[o],j="hide"in b.props?b.props.hide:(A=b.type.defaultProps)===null||A===void 0?void 0:A.hide;return P===w&&!j}),"number",f),i.defaultProps.allowDataOverflow),g=wh(l,g,w,a)),C(C({},d),{},V({},w,C(C({axisType:a},i.defaultProps),{},{hide:!0,orientation:Xe(sL,"".concat(a,".").concat(v%2),null),domain:g,originalDomain:O,isCategorical:y,layout:f})))}return d},{})},vL=function(t,r){var n=r.axisType,i=n===void 0?"xAxis":n,a=r.AxisComp,o=r.graphicalItems,u=r.stackGroups,c=r.dataStartIndex,s=r.dataEndIndex,f=t.children,l="".concat(i,"Id"),h=Ye(f,a),p={};return h&&h.length?p=pL(t,{axes:h,graphicalItems:o,axisType:i,axisIdKey:l,stackGroups:u,dataStartIndex:c,dataEndIndex:s}):o&&o.length&&(p=dL(t,{Axis:a,graphicalItems:o,axisType:i,axisIdKey:l,stackGroups:u,dataStartIndex:c,dataEndIndex:s})),p},yL=function(t){var r=qt(t),n=Tt(r,!1,!0);return{tooltipTicks:n,orderedTooltipTicks:Zh(n,function(i){return i.coordinate}),tooltipAxis:r,tooltipAxisBandSize:la(r,n)}},W0=function(t){var r=t.children,n=t.defaultShowTooltip,i=He(r,Hr),a=0,o=0;return t.data&&t.data.length!==0&&(o=t.data.length-1),i&&i.props&&(i.props.startIndex>=0&&(a=i.props.startIndex),i.props.endIndex>=0&&(o=i.props.endIndex)),{chartX:0,chartY:0,dataStartIndex:a,dataEndIndex:o,activeTooltipIndex:-1,isTooltipActive:!!n}},gL=function(t){return!t||!t.length?!1:t.some(function(r){var n=Et(r&&r.type);return n&&n.indexOf("Bar")>=0})},z0=function(t){return t==="horizontal"?{numericAxisName:"yAxis",cateAxisName:"xAxis"}:t==="vertical"?{numericAxisName:"xAxis",cateAxisName:"yAxis"}:t==="centric"?{numericAxisName:"radiusAxis",cateAxisName:"angleAxis"}:{numericAxisName:"angleAxis",cateAxisName:"radiusAxis"}},mL=function(t,r){var n=t.props,i=t.graphicalItems,a=t.xAxisMap,o=a===void 0?{}:a,u=t.yAxisMap,c=u===void 0?{}:u,s=n.width,f=n.height,l=n.children,h=n.margin||{},p=He(l,Hr),y=He(l,jr),v=Object.keys(c).reduce(function(g,b){var _=c[b],A=_.orientation;return!_.mirror&&!_.hide?C(C({},g),{},V({},A,g[A]+_.width)):g},{left:h.left||0,right:h.right||0}),d=Object.keys(o).reduce(function(g,b){var _=o[b],A=_.orientation;return!_.mirror&&!_.hide?C(C({},g),{},V({},A,Xe(g,"".concat(A))+_.height)):g},{top:h.top||0,bottom:h.bottom||0}),m=C(C({},d),v),x=m.bottom;p&&(m.bottom+=p.props.height||Hr.defaultProps.height),y&&r&&(m=F$(m,i,n,r));var w=s-m.left-m.right,O=f-m.top-m.bottom;return C(C({brushBottom:x},m),{},{width:Math.max(w,0),height:Math.max(O,0)})},bL=function(t,r){if(r==="xAxis")return t[r].width;if(r==="yAxis")return t[r].height},Np=function(t){var r=t.chartName,n=t.GraphicalChild,i=t.defaultTooltipEventType,a=i===void 0?"axis":i,o=t.validateTooltipEventTypes,u=o===void 0?["axis"]:o,c=t.axisComponents,s=t.legendContent,f=t.formatAxisMap,l=t.defaultProps,h=function(m,x){var w=x.graphicalItems,O=x.stackGroups,g=x.offset,b=x.updateId,_=x.dataStartIndex,A=x.dataEndIndex,P=m.barSize,j=m.layout,T=m.barGap,E=m.barCategoryGap,M=m.maxBarSize,I=z0(j),$=I.numericAxisName,k=I.cateAxisName,R=gL(w),L=[];return w.forEach(function(B,z){var H=Ao(m.data,{graphicalItems:[B],dataStartIndex:_,dataEndIndex:A}),U=B.type.defaultProps!==void 0?C(C({},B.type.defaultProps),B.props):B.props,G=U.dataKey,se=U.maxBarSize,me=U["".concat($,"Id")],De=U["".concat(k,"Id")],wt={},Ie=c.reduce(function(Ze,Ce){var Te=x["".concat(Ce.axisType,"Map")],Kt=U["".concat(Ce.axisType,"Id")];Te&&Te[Kt]||Ce.axisType==="zAxis"||or(!1);var Ht=Te[Kt];return C(C({},Ze),{},V(V({},Ce.axisType,Ht),"".concat(Ce.axisType,"Ticks"),Tt(Ht)))},wt),F=Ie[k],Q=Ie["".concat(k,"Ticks")],ee=O&&O[me]&&O[me].hasStack&&J$(B,O[me].stackGroups),D=Et(B.type).indexOf("Bar")>=0,ve=la(F,Q),re=[],Y=R&&L$({barSize:P,stackGroups:O,totalSize:bL(Ie,k)});if(D){var ye,Z,Ne=J(se)?M:se,We=(ye=(Z=la(F,Q,!0))!==null&&Z!==void 0?Z:Ne)!==null&&ye!==void 0?ye:0;re=B$({barGap:T,barCategoryGap:E,bandSize:We!==ve?We:ve,sizeList:Y[De],maxBarSize:Ne}),We!==ve&&(re=re.map(function(Ze){return C(C({},Ze),{},{position:C(C({},Ze.position),{},{offset:Ze.position.offset-We/2})})}))}var gr=B&&B.type&&B.type.getComposedData;gr&&L.push({props:C(C({},gr(C(C({},Ie),{},{displayedData:H,props:m,dataKey:G,item:B,bandSize:ve,barPosition:re,offset:g,stackedData:ee,layout:j,dataStartIndex:_,dataEndIndex:A}))),{},V(V(V({key:B.key||"item-".concat(z)},$,Ie[$]),k,Ie[k]),"animationId",b)),childIndex:Z1(B,m.children),item:B})}),L},p=function(m,x){var w=m.props,O=m.dataStartIndex,g=m.dataEndIndex,b=m.updateId;if(!Jd({props:w}))return null;var _=w.children,A=w.layout,P=w.stackOffset,j=w.data,T=w.reverseStackOrder,E=z0(A),M=E.numericAxisName,I=E.cateAxisName,$=Ye(_,n),k=Y$(j,$,"".concat(M,"Id"),"".concat(I,"Id"),P,T),R=c.reduce(function(U,G){var se="".concat(G.axisType,"Map");return C(C({},U),{},V({},se,vL(w,C(C({},G),{},{graphicalItems:$,stackGroups:G.axisType===M&&k,dataStartIndex:O,dataEndIndex:g}))))},{}),L=mL(C(C({},R),{},{props:w,graphicalItems:$}),x?.legendBBox);Object.keys(R).forEach(function(U){R[U]=f(w,R[U],L,U.replace("Map",""),r)});var B=R["".concat(I,"Map")],z=yL(B),H=h(w,C(C({},R),{},{dataStartIndex:O,dataEndIndex:g,updateId:b,graphicalItems:$,stackGroups:k,offset:L}));return C(C({formattedGraphicalItems:H,graphicalItems:$,offset:L,stackGroups:k},z),R)},y=(function(d){function m(x){var w,O,g;return J2(this,m),g=tL(this,m,[x]),V(g,"eventEmitterSymbol",Symbol("rechartsEventEmitter")),V(g,"accessibilityManager",new q2),V(g,"handleLegendBBoxUpdate",function(b){if(b){var _=g.state,A=_.dataStartIndex,P=_.dataEndIndex,j=_.updateId;g.setState(C({legendBBox:b},p({props:g.props,dataStartIndex:A,dataEndIndex:P,updateId:j},C(C({},g.state),{},{legendBBox:b}))))}}),V(g,"handleReceiveSyncEvent",function(b,_,A){if(g.props.syncId===b){if(A===g.eventEmitterSymbol&&typeof g.props.syncMethod!="function")return;g.applySyncEvent(_)}}),V(g,"handleBrushChange",function(b){var _=b.startIndex,A=b.endIndex;if(_!==g.state.dataStartIndex||A!==g.state.dataEndIndex){var P=g.state.updateId;g.setState(function(){return C({dataStartIndex:_,dataEndIndex:A},p({props:g.props,dataStartIndex:_,dataEndIndex:A,updateId:P},g.state))}),g.triggerSyncEvent({dataStartIndex:_,dataEndIndex:A})}}),V(g,"handleMouseEnter",function(b){var _=g.getMouseInfo(b);if(_){var A=C(C({},_),{},{isTooltipActive:!0});g.setState(A),g.triggerSyncEvent(A);var P=g.props.onMouseEnter;X(P)&&P(A,b)}}),V(g,"triggeredAfterMouseMove",function(b){var _=g.getMouseInfo(b),A=_?C(C({},_),{},{isTooltipActive:!0}):{isTooltipActive:!1};g.setState(A),g.triggerSyncEvent(A);var P=g.props.onMouseMove;X(P)&&P(A,b)}),V(g,"handleItemMouseEnter",function(b){g.setState(function(){return{isTooltipActive:!0,activeItem:b,activePayload:b.tooltipPayload,activeCoordinate:b.tooltipPosition||{x:b.cx,y:b.cy}}})}),V(g,"handleItemMouseLeave",function(){g.setState(function(){return{isTooltipActive:!1}})}),V(g,"handleMouseMove",function(b){b.persist(),g.throttleTriggeredAfterMouseMove(b)}),V(g,"handleMouseLeave",function(b){g.throttleTriggeredAfterMouseMove.cancel();var _={isTooltipActive:!1};g.setState(_),g.triggerSyncEvent(_);var A=g.props.onMouseLeave;X(A)&&A(_,b)}),V(g,"handleOuterEvent",function(b){var _=Y1(b),A=Xe(g.props,"".concat(_));if(_&&X(A)){var P,j;/.*touch.*/i.test(_)?j=g.getMouseInfo(b.changedTouches[0]):j=g.getMouseInfo(b),A((P=j)!==null&&P!==void 0?P:{},b)}}),V(g,"handleClick",function(b){var _=g.getMouseInfo(b);if(_){var A=C(C({},_),{},{isTooltipActive:!0});g.setState(A),g.triggerSyncEvent(A);var P=g.props.onClick;X(P)&&P(A,b)}}),V(g,"handleMouseDown",function(b){var _=g.props.onMouseDown;if(X(_)){var A=g.getMouseInfo(b);_(A,b)}}),V(g,"handleMouseUp",function(b){var _=g.props.onMouseUp;if(X(_)){var A=g.getMouseInfo(b);_(A,b)}}),V(g,"handleTouchMove",function(b){b.changedTouches!=null&&b.changedTouches.length>0&&g.throttleTriggeredAfterMouseMove(b.changedTouches[0])}),V(g,"handleTouchStart",function(b){b.changedTouches!=null&&b.changedTouches.length>0&&g.handleMouseDown(b.changedTouches[0])}),V(g,"handleTouchEnd",function(b){b.changedTouches!=null&&b.changedTouches.length>0&&g.handleMouseUp(b.changedTouches[0])}),V(g,"handleDoubleClick",function(b){var _=g.props.onDoubleClick;if(X(_)){var A=g.getMouseInfo(b);_(A,b)}}),V(g,"handleContextMenu",function(b){var _=g.props.onContextMenu;if(X(_)){var A=g.getMouseInfo(b);_(A,b)}}),V(g,"triggerSyncEvent",function(b){g.props.syncId!==void 0&&Al.emit(Sl,g.props.syncId,b,g.eventEmitterSymbol)}),V(g,"applySyncEvent",function(b){var _=g.props,A=_.layout,P=_.syncMethod,j=g.state.updateId,T=b.dataStartIndex,E=b.dataEndIndex;if(b.dataStartIndex!==void 0||b.dataEndIndex!==void 0)g.setState(C({dataStartIndex:T,dataEndIndex:E},p({props:g.props,dataStartIndex:T,dataEndIndex:E,updateId:j},g.state)));else if(b.activeTooltipIndex!==void 0){var M=b.chartX,I=b.chartY,$=b.activeTooltipIndex,k=g.state,R=k.offset,L=k.tooltipTicks;if(!R)return;if(typeof P=="function")$=P(L,b);else if(P==="value"){$=-1;for(var B=0;B=0){var ee,D;if(M.dataKey&&!M.allowDuplicatedCategory){var ve=typeof M.dataKey=="function"?Q:"payload.".concat(M.dataKey.toString());ee=Bi(B,ve,$),D=z&&H&&Bi(H,ve,$)}else ee=B?.[I],D=z&&H&&H[I];if(De||me){var re=b.props.activeIndex!==void 0?b.props.activeIndex:I;return[N.cloneElement(b,C(C(C({},P.props),Ie),{},{activeIndex:re})),null,null]}if(!J(ee))return[F].concat(rn(g.renderActivePoints({item:P,activePoint:ee,basePoint:D,childIndex:I,isRange:z})))}else{var Y,ye=(Y=g.getItemByXY(g.state.activeCoordinate))!==null&&Y!==void 0?Y:{graphicalItem:F},Z=ye.graphicalItem,Ne=Z.item,We=Ne===void 0?b:Ne,gr=Z.childIndex,Ze=C(C(C({},P.props),Ie),{},{activeIndex:gr});return[N.cloneElement(We,Ze),null,null]}return z?[F,null,null]:[F,null]}),V(g,"renderCustomized",function(b,_,A){return N.cloneElement(b,C(C({key:"recharts-customized-".concat(A)},g.props),g.state))}),V(g,"renderMap",{CartesianGrid:{handler:qi,once:!0},ReferenceArea:{handler:g.renderReferenceElement},ReferenceLine:{handler:qi},ReferenceDot:{handler:g.renderReferenceElement},XAxis:{handler:qi},YAxis:{handler:qi},Brush:{handler:g.renderBrush,once:!0},Bar:{handler:g.renderGraphicChild},Line:{handler:g.renderGraphicChild},Area:{handler:g.renderGraphicChild},Radar:{handler:g.renderGraphicChild},RadialBar:{handler:g.renderGraphicChild},Scatter:{handler:g.renderGraphicChild},Pie:{handler:g.renderGraphicChild},Funnel:{handler:g.renderGraphicChild},Tooltip:{handler:g.renderCursor,once:!0},PolarGrid:{handler:g.renderPolarGrid,once:!0},PolarAngleAxis:{handler:g.renderPolarAxis},PolarRadiusAxis:{handler:g.renderPolarAxis},Customized:{handler:g.renderCustomized}}),g.clipPathId="".concat((w=x.id)!==null&&w!==void 0?w:un("recharts"),"-clip"),g.throttleTriggeredAfterMouseMove=_w(g.triggeredAfterMouseMove,(O=x.throttleDelay)!==null&&O!==void 0?O:1e3/60),g.state={},g}return iL(m,d),eL(m,[{key:"componentDidMount",value:function(){var w,O;this.addListener(),this.accessibilityManager.setDetails({container:this.container,offset:{left:(w=this.props.margin.left)!==null&&w!==void 0?w:0,top:(O=this.props.margin.top)!==null&&O!==void 0?O:0},coordinateList:this.state.tooltipTicks,mouseHandlerCallback:this.triggeredAfterMouseMove,layout:this.props.layout}),this.displayDefaultTooltip()}},{key:"displayDefaultTooltip",value:function(){var w=this.props,O=w.children,g=w.data,b=w.height,_=w.layout,A=He(O,_t);if(A){var P=A.props.defaultIndex;if(!(typeof P!="number"||P<0||P>this.state.tooltipTicks.length-1)){var j=this.state.tooltipTicks[P]&&this.state.tooltipTicks[P].value,T=Ah(this.state,g,P,j),E=this.state.tooltipTicks[P].coordinate,M=(this.state.offset.top+b)/2,I=_==="horizontal",$=I?{x:E,y:M}:{y:E,x:M},k=this.state.formattedGraphicalItems.find(function(L){var B=L.item;return B.type.name==="Scatter"});k&&($=C(C({},$),k.props.points[P].tooltipPosition),T=k.props.points[P].tooltipPayload);var R={activeTooltipIndex:P,isTooltipActive:!0,activeLabel:j,activePayload:T,activeCoordinate:$};this.setState(R),this.renderCursor(A),this.accessibilityManager.setIndex(P)}}}},{key:"getSnapshotBeforeUpdate",value:function(w,O){if(!this.props.accessibilityLayer)return null;if(this.state.tooltipTicks!==O.tooltipTicks&&this.accessibilityManager.setDetails({coordinateList:this.state.tooltipTicks}),this.props.layout!==w.layout&&this.accessibilityManager.setDetails({layout:this.props.layout}),this.props.margin!==w.margin){var g,b;this.accessibilityManager.setDetails({offset:{left:(g=this.props.margin.left)!==null&&g!==void 0?g:0,top:(b=this.props.margin.top)!==null&&b!==void 0?b:0}})}return null}},{key:"componentDidUpdate",value:function(w){af([He(w.children,_t)],[He(this.props.children,_t)])||this.displayDefaultTooltip()}},{key:"componentWillUnmount",value:function(){this.removeListener(),this.throttleTriggeredAfterMouseMove.cancel()}},{key:"getTooltipEventType",value:function(){var w=He(this.props.children,_t);if(w&&typeof w.props.shared=="boolean"){var O=w.props.shared?"axis":"item";return u.indexOf(O)>=0?O:a}return a}},{key:"getMouseInfo",value:function(w){if(!this.container)return null;var O=this.container,g=O.getBoundingClientRect(),b=PT(g),_={chartX:Math.round(w.pageX-b.left),chartY:Math.round(w.pageY-b.top)},A=g.width/O.offsetWidth||1,P=this.inRange(_.chartX,_.chartY,A);if(!P)return null;var j=this.state,T=j.xAxisMap,E=j.yAxisMap,M=this.getTooltipEventType(),I=U0(this.state,this.props.data,this.props.layout,P);if(M!=="axis"&&T&&E){var $=qt(T).scale,k=qt(E).scale,R=$&&$.invert?$.invert(_.chartX):null,L=k&&k.invert?k.invert(_.chartY):null;return C(C({},_),{},{xValue:R,yValue:L},I)}return I?C(C({},_),I):null}},{key:"inRange",value:function(w,O){var g=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,b=this.props.layout,_=w/g,A=O/g;if(b==="horizontal"||b==="vertical"){var P=this.state.offset,j=_>=P.left&&_<=P.left+P.width&&A>=P.top&&A<=P.top+P.height;return j?{x:_,y:A}:null}var T=this.state,E=T.angleAxisMap,M=T.radiusAxisMap;if(E&&M){var I=qt(E);return Wm({x:_,y:A},I)}return null}},{key:"parseEventsOfWrapper",value:function(){var w=this.props.children,O=this.getTooltipEventType(),g=He(w,_t),b={};g&&O==="axis"&&(g.props.trigger==="click"?b={onClick:this.handleClick}:b={onMouseEnter:this.handleMouseEnter,onDoubleClick:this.handleDoubleClick,onMouseMove:this.handleMouseMove,onMouseLeave:this.handleMouseLeave,onTouchMove:this.handleTouchMove,onTouchStart:this.handleTouchStart,onTouchEnd:this.handleTouchEnd,onContextMenu:this.handleContextMenu});var _=Fi(this.props,this.handleOuterEvent);return C(C({},_),b)}},{key:"addListener",value:function(){Al.on(Sl,this.handleReceiveSyncEvent)}},{key:"removeListener",value:function(){Al.removeListener(Sl,this.handleReceiveSyncEvent)}},{key:"filterFormatItem",value:function(w,O,g){for(var b=this.state.formattedGraphicalItems,_=0,A=b.length;_t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),M=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,c,o)=>o?o.toUpperCase():c.toLowerCase()),d=t=>{const a=M(t);return a.charAt(0).toUpperCase()+a.slice(1)},r=(...t)=>t.filter((a,c,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===c).join(" ").trim(),m=t=>{for(const a in t)if(a.startsWith("aria-")||a==="role"||a==="title")return!0};var v={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const x=s.forwardRef(({color:t="currentColor",size:a=24,strokeWidth:c=2,absoluteStrokeWidth:o,className:y="",children:n,iconNode:k,...h},p)=>s.createElement("svg",{ref:p,...v,width:a,height:a,stroke:t,strokeWidth:o?Number(c)*24/Number(a):c,className:r("lucide",y),...!n&&!m(h)&&{"aria-hidden":"true"},...h},[...k.map(([i,l])=>s.createElement(i,l)),...Array.isArray(n)?n:[n]]));const e=(t,a)=>{const c=s.forwardRef(({className:o,...y},n)=>s.createElement(x,{ref:n,iconNode:a,className:r(`lucide-${_(d(t))}`,`lucide-${t}`,o),...y}));return c.displayName=d(t),c};const u=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],Y1=e("activity",u);const g=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],e2=e("arrow-left",g);const f=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],a2=e("arrow-right",f);const $=[["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],t2=e("ban",$);const N=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],c2=e("book-open",N);const w=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],o2=e("bot",w);const z=[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]],n2=e("boxes",z);const b=[["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z",key:"uouzyp"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M21 21a4 4 0 0 0-3.81-4",key:"1b0z45"}],["path",{d:"M21 5a4 4 0 0 1-3.55 3.97",key:"5cxbf6"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M3 21a4 4 0 0 1 3.81-4",key:"1fjd4g"}],["path",{d:"M3 5a4 4 0 0 0 3.55 3.97",key:"1d7oge"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M9 7.13V6a3 3 0 1 1 6 0v1.13",key:"1vgav8"}]],s2=e("bug",b);const q=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],y2=e("calendar",q);const C=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],h2=e("chart-column",C);const j=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],d2=e("check",j);const V=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],r2=e("chevron-down",V);const A=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],k2=e("chevron-left",A);const H=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],p2=e("chevron-right",H);const L=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],i2=e("chevron-up",L);const S=[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]],l2=e("chevrons-left",S);const P=[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]],_2=e("chevrons-right",P);const U=[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]],M2=e("chevrons-up-down",U);const T=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],m2=e("circle-alert",T);const Z=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],v2=e("circle-check",Z);const R=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],x2=e("circle-question-mark",R);const B=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662",key:"154egf"}]],u2=e("circle-user",B);const E=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],g2=e("circle-x",E);const D=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],f2=e("circle",D);const F=[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],$2=e("clock",F);const O=[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]],N2=e("code-xml",O);const I=[["path",{d:"M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z",key:"1t2lqe"}],["path",{d:"M10 21.9V14L2.1 9.1",key:"o7czzq"}],["path",{d:"m10 14 11.9-6.9",key:"zm5e20"}],["path",{d:"M14 19.8v-8.1",key:"159ecu"}],["path",{d:"M18 17.5V9.4",key:"11uown"}]],w2=e("container",I);const K=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],z2=e("copy",K);const W=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],b2=e("database",W);const X=[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]],q2=e("dollar-sign",X);const G=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],C2=e("download",G);const Q=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],j2=e("external-link",Q);const J=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],V2=e("eye-off",J);const Y=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],A2=e("eye",Y);const e1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["circle",{cx:"11.5",cy:"14.5",r:"2.5",key:"1bq0ko"}],["path",{d:"M13.3 16.3 15 18",key:"2quom7"}]],H2=e("file-search",e1);const a1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],L2=e("file-text",a1);const t1=[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]],S2=e("folder-open",t1);const c1=[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]],P2=e("funnel",c1);const o1=[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]],U2=e("grip-vertical",o1);const n1=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],T2=e("hash",n1);const s1=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]],Z2=e("house",s1);const y1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],R2=e("info",y1);const h1=[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]],B2=e("key",h1);const d1=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],E2=e("loader-circle",d1);const r1=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],D2=e("lock",r1);const k1=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],F2=e("log-out",k1);const p1=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],O2=e("menu",p1);const i1=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]],I2=e("message-square",i1);const l1=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]],K2=e("moon",l1);const _1=[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]],W2=e("network",_1);const M1=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],X2=e("package",M1);const m1=[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]],G2=e("palette",m1);const v1=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]],Q2=e("panels-top-left",v1);const x1=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]],J2=e("pause",x1);const u1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],Y2=e("pencil",u1);const g1=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],e0=e("play",g1);const f1=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],a0=e("plus",f1);const $1=[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]],t0=e("power",$1);const N1=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],c0=e("refresh-cw",N1);const w1=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],o0=e("rotate-ccw",w1);const z1=[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]],n0=e("rotate-cw",z1);const b1=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],s0=e("save",b1);const q1=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],y0=e("search",q1);const C1=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],h0=e("server",C1);const j1=[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]],d0=e("settings-2",j1);const V1=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],r0=e("settings",V1);const A1=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]],k0=e("shield",A1);const H1=[["path",{d:"M21 4v16",key:"7j8fe9"}],["path",{d:"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z",key:"zs4d6"}]],p0=e("skip-forward",H1);const L1=[["path",{d:"M10 8h4",key:"1sr2af"}],["path",{d:"M12 21v-9",key:"17s77i"}],["path",{d:"M12 8V3",key:"13r4qs"}],["path",{d:"M17 16h4",key:"h1uq16"}],["path",{d:"M19 12V3",key:"o1uvq1"}],["path",{d:"M19 21v-5",key:"qua636"}],["path",{d:"M3 14h4",key:"bcjad9"}],["path",{d:"M5 10V3",key:"cb8scm"}],["path",{d:"M5 21v-7",key:"1w1uti"}]],i0=e("sliders-vertical",L1);const S1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]],l0=e("smile",S1);const P1=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],_0=e("sparkles",P1);const U1=[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]],M0=e("square-pen",U1);const T1=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],m0=e("star",T1);const Z1=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],v0=e("sun",Z1);const R1=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],x0=e("terminal",R1);const B1=[["path",{d:"M7 10v12",key:"1qc93n"}],["path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z",key:"emmmcr"}]],u0=e("thumbs-up",B1);const E1=[["path",{d:"M17 14V2",key:"8ymqnk"}],["path",{d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z",key:"m61m77"}]],g0=e("thumbs-down",E1);const D1=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],f0=e("trash-2",D1);const F1=[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]],$0=e("trending-up",F1);const O1=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],N0=e("triangle-alert",O1);const I1=[["path",{d:"M12 4v16",key:"1654pz"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2",key:"e0r10z"}],["path",{d:"M9 20h6",key:"s66wpe"}]],w0=e("type",I1);const K1=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],z0=e("upload",K1);const W1=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],b0=e("user",W1);const X1=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],q0=e("users",X1);const G1=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],C0=e("x",G1);const Q1=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],j0=e("zap",Q1);export{_2 as $,Y1 as A,o2 as B,$2 as C,q2 as D,V2 as E,L2 as F,s0 as G,Z2 as H,R2 as I,t0 as J,B2 as K,D2 as L,I2 as M,a0 as N,f0 as O,G2 as P,H2 as Q,c0 as R,k0 as S,$0 as T,b0 as U,Y2 as V,l2 as W,C0 as X,k2 as Y,j0 as Z,p2 as _,b2 as a,M2 as a0,U2 as a1,w2 as a2,X2 as a3,z0 as a4,S2 as a5,C2 as a6,P2 as a7,M0 as a8,t2 as a9,T2 as aa,q0 as ab,W2 as ac,y2 as ad,J2 as ae,e0 as af,w0 as ag,m0 as ah,u0 as ai,g0 as aj,d0 as ak,h0 as al,n2 as am,u2 as an,h2 as ao,f2 as ap,i0 as aq,O2 as ar,c2 as as,F2 as at,n0 as au,s2 as av,r0 as b,N0 as c,d2 as d,z2 as e,A2 as f,v2 as g,g2 as h,o0 as i,v0 as j,K2 as k,m2 as l,x2 as m,x0 as n,j2 as o,E2 as p,_0 as q,l0 as r,p0 as s,a2 as t,y0 as u,e2 as v,r2 as w,i2 as x,Q2 as y,N2 as z}; diff --git a/webui/dist/assets/icons-DMlhlQyz.js b/webui/dist/assets/icons-DMlhlQyz.js new file mode 100644 index 00000000..79468026 --- /dev/null +++ b/webui/dist/assets/icons-DMlhlQyz.js @@ -0,0 +1 @@ +import{r as s}from"./router-SinpzM5S.js";const _=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),M=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,c,o)=>o?o.toUpperCase():c.toLowerCase()),d=t=>{const a=M(t);return a.charAt(0).toUpperCase()+a.slice(1)},r=(...t)=>t.filter((a,c,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===c).join(" ").trim(),v=t=>{for(const a in t)if(a.startsWith("aria-")||a==="role"||a==="title")return!0};var m={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const x=s.forwardRef(({color:t="currentColor",size:a=24,strokeWidth:c=2,absoluteStrokeWidth:o,className:y="",children:n,iconNode:k,...h},p)=>s.createElement("svg",{ref:p,...m,width:a,height:a,stroke:t,strokeWidth:o?Number(c)*24/Number(a):c,className:r("lucide",y),...!n&&!v(h)&&{"aria-hidden":"true"},...h},[...k.map(([i,l])=>s.createElement(i,l)),...Array.isArray(n)?n:[n]]));const e=(t,a)=>{const c=s.forwardRef(({className:o,...y},n)=>s.createElement(x,{ref:n,iconNode:a,className:r(`lucide-${_(d(t))}`,`lucide-${t}`,o),...y}));return c.displayName=d(t),c};const u=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],e2=e("activity",u);const g=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],a2=e("arrow-left",g);const f=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],t2=e("arrow-right",f);const $=[["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],c2=e("ban",$);const N=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],o2=e("book-open",N);const w=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],n2=e("bot",w);const z=[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]],s2=e("boxes",z);const b=[["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z",key:"uouzyp"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M21 21a4 4 0 0 0-3.81-4",key:"1b0z45"}],["path",{d:"M21 5a4 4 0 0 1-3.55 3.97",key:"5cxbf6"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M3 21a4 4 0 0 1 3.81-4",key:"1fjd4g"}],["path",{d:"M3 5a4 4 0 0 0 3.55 3.97",key:"1d7oge"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M9 7.13V6a3 3 0 1 1 6 0v1.13",key:"1vgav8"}]],y2=e("bug",b);const q=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],h2=e("calendar",q);const C=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],d2=e("chart-column",C);const j=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],r2=e("check",j);const V=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],k2=e("chevron-down",V);const A=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],p2=e("chevron-left",A);const H=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],i2=e("chevron-right",H);const L=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],l2=e("chevron-up",L);const S=[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]],_2=e("chevrons-left",S);const P=[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]],M2=e("chevrons-right",P);const U=[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]],v2=e("chevrons-up-down",U);const T=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],m2=e("circle-alert",T);const Z=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],x2=e("circle-check",Z);const R=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],u2=e("circle-question-mark",R);const B=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662",key:"154egf"}]],g2=e("circle-user",B);const E=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],f2=e("circle-x",E);const D=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],$2=e("circle",D);const F=[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],N2=e("clock",F);const O=[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]],w2=e("code-xml",O);const I=[["path",{d:"M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z",key:"1t2lqe"}],["path",{d:"M10 21.9V14L2.1 9.1",key:"o7czzq"}],["path",{d:"m10 14 11.9-6.9",key:"zm5e20"}],["path",{d:"M14 19.8v-8.1",key:"159ecu"}],["path",{d:"M18 17.5V9.4",key:"11uown"}]],z2=e("container",I);const G=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],b2=e("copy",G);const K=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],q2=e("database",K);const W=[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]],C2=e("dollar-sign",W);const X=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],j2=e("download",X);const Q=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],V2=e("external-link",Q);const J=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],A2=e("eye-off",J);const Y=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],H2=e("eye",Y);const e1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["circle",{cx:"11.5",cy:"14.5",r:"2.5",key:"1bq0ko"}],["path",{d:"M13.3 16.3 15 18",key:"2quom7"}]],L2=e("file-search",e1);const a1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],S2=e("file-text",a1);const t1=[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]],P2=e("folder-open",t1);const c1=[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]],U2=e("funnel",c1);const o1=[["path",{d:"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",key:"j76jl0"}],["path",{d:"M22 10v6",key:"1lu8f3"}],["path",{d:"M6 12.5V16a6 3 0 0 0 12 0v-3.5",key:"1r8lef"}]],T2=e("graduation-cap",o1);const n1=[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]],Z2=e("grip-vertical",n1);const s1=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],R2=e("hash",s1);const y1=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]],B2=e("house",y1);const h1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],E2=e("info",h1);const d1=[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]],D2=e("key",d1);const r1=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],F2=e("loader-circle",r1);const k1=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],O2=e("lock",k1);const p1=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],I2=e("log-out",p1);const i1=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],G2=e("menu",i1);const l1=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]],K2=e("message-square",l1);const _1=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]],W2=e("moon",_1);const M1=[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]],X2=e("network",M1);const v1=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],Q2=e("package",v1);const m1=[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]],J2=e("palette",m1);const x1=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]],Y2=e("panels-top-left",x1);const u1=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]],e0=e("pause",u1);const g1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],a0=e("pencil",g1);const f1=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],t0=e("play",f1);const $1=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],c0=e("plus",$1);const N1=[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]],o0=e("power",N1);const w1=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],n0=e("refresh-cw",w1);const z1=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],s0=e("rotate-ccw",z1);const b1=[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]],y0=e("rotate-cw",b1);const q1=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],h0=e("save",q1);const C1=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],d0=e("search",C1);const j1=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],r0=e("server",j1);const V1=[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]],k0=e("settings-2",V1);const A1=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],p0=e("settings",A1);const H1=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]],i0=e("shield",H1);const L1=[["path",{d:"M21 4v16",key:"7j8fe9"}],["path",{d:"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z",key:"zs4d6"}]],l0=e("skip-forward",L1);const S1=[["path",{d:"M10 8h4",key:"1sr2af"}],["path",{d:"M12 21v-9",key:"17s77i"}],["path",{d:"M12 8V3",key:"13r4qs"}],["path",{d:"M17 16h4",key:"h1uq16"}],["path",{d:"M19 12V3",key:"o1uvq1"}],["path",{d:"M19 21v-5",key:"qua636"}],["path",{d:"M3 14h4",key:"bcjad9"}],["path",{d:"M5 10V3",key:"cb8scm"}],["path",{d:"M5 21v-7",key:"1w1uti"}]],_0=e("sliders-vertical",S1);const P1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]],M0=e("smile",P1);const U1=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],v0=e("sparkles",U1);const T1=[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]],m0=e("square-pen",T1);const Z1=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],x0=e("star",Z1);const R1=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],u0=e("sun",R1);const B1=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],g0=e("terminal",B1);const E1=[["path",{d:"M7 10v12",key:"1qc93n"}],["path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z",key:"emmmcr"}]],f0=e("thumbs-up",E1);const D1=[["path",{d:"M17 14V2",key:"8ymqnk"}],["path",{d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z",key:"m61m77"}]],$0=e("thumbs-down",D1);const F1=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],N0=e("trash-2",F1);const O1=[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]],w0=e("trending-up",O1);const I1=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],z0=e("triangle-alert",I1);const G1=[["path",{d:"M12 4v16",key:"1654pz"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2",key:"e0r10z"}],["path",{d:"M9 20h6",key:"s66wpe"}]],b0=e("type",G1);const K1=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],q0=e("upload",K1);const W1=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],C0=e("user",W1);const X1=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],j0=e("users",X1);const Q1=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],V0=e("x",Q1);const J1=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],A0=e("zap",J1);export{M2 as $,e2 as A,n2 as B,N2 as C,C2 as D,A2 as E,S2 as F,h0 as G,B2 as H,E2 as I,o0 as J,D2 as K,O2 as L,K2 as M,c0 as N,N0 as O,J2 as P,L2 as Q,n0 as R,i0 as S,w0 as T,C0 as U,a0 as V,_2 as W,V0 as X,p2 as Y,A0 as Z,i2 as _,q2 as a,v2 as a0,Z2 as a1,T2 as a2,z2 as a3,Q2 as a4,q0 as a5,P2 as a6,j2 as a7,U2 as a8,m0 as a9,c2 as aa,R2 as ab,j0 as ac,X2 as ad,h2 as ae,e0 as af,t0 as ag,b0 as ah,x0 as ai,f0 as aj,$0 as ak,k0 as al,r0 as am,s2 as an,g2 as ao,d2 as ap,$2 as aq,_0 as ar,G2 as as,o2 as at,I2 as au,y0 as av,y2 as aw,p0 as b,z0 as c,r2 as d,b2 as e,H2 as f,x2 as g,f2 as h,s0 as i,u0 as j,W2 as k,m2 as l,u2 as m,g0 as n,V2 as o,F2 as p,v0 as q,M0 as r,l0 as s,t2 as t,d0 as u,a2 as v,k2 as w,l2 as x,Y2 as y,w2 as z}; diff --git a/webui/dist/assets/index--0Z4-njD.js b/webui/dist/assets/index--0Z4-njD.js new file mode 100644 index 00000000..f5e48ce0 --- /dev/null +++ b/webui/dist/assets/index--0Z4-njD.js @@ -0,0 +1,407 @@ +import{r as b,j as o,u as Zi,R as ae,c as K1,b as pa,d as eJ,e as tJ,L as nJ,f as rJ,g as ks,h as sJ,k as iJ,O as Az,l as aJ}from"./router-SinpzM5S.js";import{a as oJ,b as lJ,g as gd}from"./react-vendor-Dtc2IqVY.js";import{c as Rz,R as cJ,T as uJ,L as dJ,a as hJ,C as Qx,X as Vx,Y as Am,b as fJ,B as h4,d as Ux,P as mJ,e as pJ,f as gJ,_ as xJ,g as vJ,h as Ge,i as yJ,j as d9,k as bJ,l as h9,m as wJ,n as SJ,o as kJ,r as Dz,p as OJ,q as cj,s as Pz,t as xd,u as uj,v as jJ,w as NJ,x as zz,y as Iz,z as Lz,A as dj,D as hj,E as fj,F as CJ,G as TJ,H as EJ,I as _J,J as MJ,K as AJ,M as RJ,N as mj,O as Ay,Q as DJ,S as PJ,U as pj,V as zJ,W as IJ,Z as Bz,$ as Fz,a0 as qz,a1 as $z,a2 as Ry,a3 as Hz,a4 as Qz,a5 as LJ,a6 as BJ,a7 as FJ,a8 as qJ,a9 as $J,aa as HJ,ab as QJ,ac as VJ,ad as Vz,ae as Uz,af as UJ,ag as WJ,ah as GJ,ai as XJ,aj as YJ,ak as KJ,al as ZJ,am as JJ,an as eee,ao as tee,ap as nee,aq as ree,ar as see,as as iee,at as aee,au as oee}from"./charts-0z-hIQr-.js";import{c as Ra,a as Dy,u as Ui,P as gn,b as nt,d as Yn,e as Np,f as Gl,g as qs,h as si,i as gj,j as xj,k as vj,S as lee,l as Wz,m as Gz,R as Xz,O as Py,n as yj,C as zy,o as Iy,T as bj,D as wj,p as Sj,q as Yz,r as Kz,W as cee,s as Zz,I as uee,t as Jz,v as eI,w as dee,x as tI,V as hee,L as nI,y as rI,z as fee,A as mee,B as sI,E as pee,F as gee,G as Hc,H as Ly,J as gf,K as iI,M as aI,N as oI,Q as lI,U as kj,X as Oj,Y as By,Z as Fy,_ as jj,$ as cI,a0 as xee,a1 as uI,a2 as vee,a3 as yee,a4 as dI,a5 as bee}from"./ui-vendor-BLBhIcJ8.js";import{R as Qs,A as wee,D as See,a as G3,Z as X3,C as _h,M as Cp,T as kee,X as Tp,P as hI,S as Oee,b as Xu,I as Oa,c as Wa,d as Ro,e as Tv,E as Ev,f as Ea,g as Qc,h as jee,i as Nee,j as Y3,k as K3,L as f9,K as fI,l as Vc,m as qy,n as Cee,F as Pl,o as Mh,p as Uc,q as Tee,B as Eee,U as mI,r as Nj,s as _ee,t as Mee,u as Ni,H as M0,v as pI,w as nd,x as A0,y as Aee,z as Ree,G as $y,J as Cj,N as zs,O as Sn,Q as _v,V as Yu,W as Ep,Y as vd,_ as yd,$ as _p,a0 as Tj,a1 as Dee,a2 as Pee,a3 as zee,a4 as Uh,a5 as m9,a6 as Iee,a7 as Ku,a8 as Z3,a9 as R0,aa as Lee,ab as J3,ac as Bee,ad as gI,ae as p9,af as Fee,ag as qee,ah as $ee,ai as _c,aj as f4,ak as g9,al as Hee,am as xI,an as vI,ao as yI,ap as Qee,aq as Vee,ar as x9,as as Uee,at as Wee,au as v9,av as Gee,aw as Xee}from"./icons-DMlhlQyz.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const i of s)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(s){const i={};return s.integrity&&(i.integrity=s.integrity),s.referrerPolicy&&(i.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?i.credentials="include":s.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(s){if(s.ep)return;s.ep=!0;const i=n(s);fetch(s.href,i)}})();var m4={exports:{}},Rm={},p4={exports:{}},g4={};var y9;function Yee(){return y9||(y9=1,(function(t){function e(B,X){var J=B.length;B.push(X);e:for(;0>>1,R=B[G];if(0>>1;Gs(q,J))Vs(te,q)?(B[G]=te,B[V]=J,G=V):(B[G]=q,B[W]=J,G=W);else if(Vs(te,J))B[G]=te,B[V]=J,G=V;else break e}}return X}function s(B,X){var J=B.sortIndex-X.sortIndex;return J!==0?J:B.id-X.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var i=performance;t.unstable_now=function(){return i.now()}}else{var a=Date,l=a.now();t.unstable_now=function(){return a.now()-l}}var c=[],d=[],h=1,m=null,g=3,x=!1,y=!1,w=!1,S=!1,k=typeof setTimeout=="function"?setTimeout:null,j=typeof clearTimeout=="function"?clearTimeout:null,N=typeof setImmediate<"u"?setImmediate:null;function T(B){for(var X=n(d);X!==null;){if(X.callback===null)r(d);else if(X.startTime<=B)r(d),X.sortIndex=X.expirationTime,e(c,X);else break;X=n(d)}}function E(B){if(w=!1,T(B),!y)if(n(c)!==null)y=!0,_||(_=!0,U());else{var X=n(d);X!==null&&Q(E,X.startTime-B)}}var _=!1,M=-1,I=5,P=-1;function L(){return S?!0:!(t.unstable_now()-PB&&L());){var G=m.callback;if(typeof G=="function"){m.callback=null,g=m.priorityLevel;var R=G(m.expirationTime<=B);if(B=t.unstable_now(),typeof R=="function"){m.callback=R,T(B),X=!0;break t}m===n(c)&&r(c),T(B)}else r(c);m=n(c)}if(m!==null)X=!0;else{var ie=n(d);ie!==null&&Q(E,ie.startTime-B),X=!1}}break e}finally{m=null,g=J,x=!1}X=void 0}}finally{X?U():_=!1}}}var U;if(typeof N=="function")U=function(){N(H)};else if(typeof MessageChannel<"u"){var ee=new MessageChannel,z=ee.port2;ee.port1.onmessage=H,U=function(){z.postMessage(null)}}else U=function(){k(H,0)};function Q(B,X){M=k(function(){B(t.unstable_now())},X)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(B){B.callback=null},t.unstable_forceFrameRate=function(B){0>B||125G?(B.sortIndex=J,e(d,B),n(c)===null&&B===n(d)&&(w?(j(M),M=-1):w=!0,Q(E,J-G))):(B.sortIndex=R,e(c,B),y||x||(y=!0,_||(_=!0,U()))),B},t.unstable_shouldYield=L,t.unstable_wrapCallback=function(B){var X=g;return function(){var J=g;g=X;try{return B.apply(this,arguments)}finally{g=J}}}})(g4)),g4}var b9;function Kee(){return b9||(b9=1,p4.exports=Yee()),p4.exports}var w9;function Zee(){if(w9)return Rm;w9=1;var t=Kee(),e=oJ(),n=lJ();function r(u){var f="https://react.dev/errors/"+u;if(1R||(u.current=G[R],G[R]=null,R--)}function q(u,f){R++,G[R]=u.current,u.current=f}var V=ie(null),te=ie(null),ne=ie(null),K=ie(null);function se(u,f){switch(q(ne,f),q(te,u),q(V,null),f.nodeType){case 9:case 11:u=(u=f.documentElement)&&(u=u.namespaceURI)?DT(u):0;break;default:if(u=f.tagName,f=f.namespaceURI)f=DT(f),u=PT(f,u);else switch(u){case"svg":u=1;break;case"math":u=2;break;default:u=0}}W(V),q(V,u)}function re(){W(V),W(te),W(ne)}function oe(u){u.memoizedState!==null&&q(K,u);var f=V.current,p=PT(f,u.type);f!==p&&(q(te,u),q(V,p))}function Te(u){te.current===u&&(W(V),W(te)),K.current===u&&(W(K),Tm._currentValue=J)}var We,Ye;function Je(u){if(We===void 0)try{throw Error()}catch(p){var f=p.stack.trim().match(/\n( *(at )?)/);We=f&&f[1]||"",Ye=-1)":-1O||ue[v]!==we[O]){var Ee=` +`+ue[v].replace(" at new "," at ");return u.displayName&&Ee.includes("")&&(Ee=Ee.replace("",u.displayName)),Ee}while(1<=v&&0<=O);break}}}finally{Oe=!1,Error.prepareStackTrace=p}return(p=u?u.displayName||u.name:"")?Je(p):""}function Ue(u,f){switch(u.tag){case 26:case 27:case 5:return Je(u.type);case 16:return Je("Lazy");case 13:return u.child!==f&&f!==null?Je("Suspense Fallback"):Je("Suspense");case 19:return Je("SuspenseList");case 0:case 15:return Ve(u.type,!1);case 11:return Ve(u.type.render,!1);case 1:return Ve(u.type,!0);case 31:return Je("Activity");default:return""}}function He(u){try{var f="",p=null;do f+=Ue(u,p),p=u,u=u.return;while(u);return f}catch(v){return` +Error generating stack: `+v.message+` +`+v.stack}}var Ot=Object.prototype.hasOwnProperty,xt=t.unstable_scheduleCallback,kn=t.unstable_cancelCallback,It=t.unstable_shouldYield,Yt=t.unstable_requestPaint,_t=t.unstable_now,mt=t.unstable_getCurrentPriorityLevel,Ne=t.unstable_ImmediatePriority,Ie=t.unstable_UserBlockingPriority,st=t.unstable_NormalPriority,yt=t.unstable_LowPriority,Pt=t.unstable_IdlePriority,At=t.log,zn=t.unstable_setDisableYieldValue,Fe=null,rt=null;function tn(u){if(typeof At=="function"&&zn(u),rt&&typeof rt.setStrictMode=="function")try{rt.setStrictMode(Fe,u)}catch{}}var Rt=Math.clz32?Math.clz32:it,ke=Math.log,Pe=Math.LN2;function it(u){return u>>>=0,u===0?32:31-(ke(u)/Pe|0)|0}var ot=256,nn=262144,Kt=4194304;function pt(u){var f=u&42;if(f!==0)return f;switch(u&-u){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:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return u&261888;case 262144:case 524288:case 1048576:case 2097152:return u&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return u&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return u}}function xr(u,f,p){var v=u.pendingLanes;if(v===0)return 0;var O=0,C=u.suspendedLanes,F=u.pingedLanes;u=u.warmLanes;var Y=v&134217727;return Y!==0?(v=Y&~C,v!==0?O=pt(v):(F&=Y,F!==0?O=pt(F):p||(p=Y&~u,p!==0&&(O=pt(p))))):(Y=v&~C,Y!==0?O=pt(Y):F!==0?O=pt(F):p||(p=v&~u,p!==0&&(O=pt(p)))),O===0?0:f!==0&&f!==O&&(f&C)===0&&(C=O&-O,p=f&-f,C>=p||C===32&&(p&4194048)!==0)?f:O}function Ur(u,f){return(u.pendingLanes&~(u.suspendedLanes&~u.pingedLanes)&f)===0}function Wr(u,f){switch(u){case 1:case 2:case 4:case 8:case 64:return f+250;case 16:case 32: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 f+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 vr(){var u=Kt;return Kt<<=1,(Kt&62914560)===0&&(Kt=4194304),u}function In(u){for(var f=[],p=0;31>p;p++)f.push(u);return f}function cr(u,f){u.pendingLanes|=f,f!==268435456&&(u.suspendedLanes=0,u.pingedLanes=0,u.warmLanes=0)}function nr(u,f,p,v,O,C){var F=u.pendingLanes;u.pendingLanes=p,u.suspendedLanes=0,u.pingedLanes=0,u.warmLanes=0,u.expiredLanes&=p,u.entangledLanes&=p,u.errorRecoveryDisabledLanes&=p,u.shellSuspendCounter=0;var Y=u.entanglements,ue=u.expirationTimes,we=u.hiddenUpdates;for(p=F&~p;0"u")return null;try{return u.activeElement||u.body}catch{return u.body}}var GY=/[\n"\\]/g;function ta(u){return u.replace(GY,function(f){return"\\"+f.charCodeAt(0).toString(16)+" "})}function aw(u,f,p,v,O,C,F,Y){u.name="",F!=null&&typeof F!="function"&&typeof F!="symbol"&&typeof F!="boolean"?u.type=F:u.removeAttribute("type"),f!=null?F==="number"?(f===0&&u.value===""||u.value!=f)&&(u.value=""+ea(f)):u.value!==""+ea(f)&&(u.value=""+ea(f)):F!=="submit"&&F!=="reset"||u.removeAttribute("value"),f!=null?ow(u,F,ea(f)):p!=null?ow(u,F,ea(p)):v!=null&&u.removeAttribute("value"),O==null&&C!=null&&(u.defaultChecked=!!C),O!=null&&(u.checked=O&&typeof O!="function"&&typeof O!="symbol"),Y!=null&&typeof Y!="function"&&typeof Y!="symbol"&&typeof Y!="boolean"?u.name=""+ea(Y):u.removeAttribute("name")}function T7(u,f,p,v,O,C,F,Y){if(C!=null&&typeof C!="function"&&typeof C!="symbol"&&typeof C!="boolean"&&(u.type=C),f!=null||p!=null){if(!(C!=="submit"&&C!=="reset"||f!=null)){iw(u);return}p=p!=null?""+ea(p):"",f=f!=null?""+ea(f):p,Y||f===u.value||(u.value=f),u.defaultValue=f}v=v??O,v=typeof v!="function"&&typeof v!="symbol"&&!!v,u.checked=Y?u.checked:!!v,u.defaultChecked=!!v,F!=null&&typeof F!="function"&&typeof F!="symbol"&&typeof F!="boolean"&&(u.name=F),iw(u)}function ow(u,f,p){f==="number"&&Dg(u.ownerDocument)===u||u.defaultValue===""+p||(u.defaultValue=""+p)}function Nd(u,f,p,v){if(u=u.options,f){f={};for(var O=0;O"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),hw=!1;if(el)try{var Uf={};Object.defineProperty(Uf,"passive",{get:function(){hw=!0}}),window.addEventListener("test",Uf,Uf),window.removeEventListener("test",Uf,Uf)}catch{hw=!1}var tc=null,fw=null,zg=null;function P7(){if(zg)return zg;var u,f=fw,p=f.length,v,O="value"in tc?tc.value:tc.textContent,C=O.length;for(u=0;u=Xf),q7=" ",$7=!1;function H7(u,f){switch(u){case"keyup":return SK.indexOf(f.keyCode)!==-1;case"keydown":return f.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Q7(u){return u=u.detail,typeof u=="object"&&"data"in u?u.data:null}var _d=!1;function OK(u,f){switch(u){case"compositionend":return Q7(f);case"keypress":return f.which!==32?null:($7=!0,q7);case"textInput":return u=f.data,u===q7&&$7?null:u;default:return null}}function jK(u,f){if(_d)return u==="compositionend"||!vw&&H7(u,f)?(u=P7(),zg=fw=tc=null,_d=!1,u):null;switch(u){case"paste":return null;case"keypress":if(!(f.ctrlKey||f.altKey||f.metaKey)||f.ctrlKey&&f.altKey){if(f.char&&1=f)return{node:p,offset:f-u};u=v}e:{for(;p;){if(p.nextSibling){p=p.nextSibling;break e}p=p.parentNode}p=void 0}p=Z7(p)}}function eC(u,f){return u&&f?u===f?!0:u&&u.nodeType===3?!1:f&&f.nodeType===3?eC(u,f.parentNode):"contains"in u?u.contains(f):u.compareDocumentPosition?!!(u.compareDocumentPosition(f)&16):!1:!1}function tC(u){u=u!=null&&u.ownerDocument!=null&&u.ownerDocument.defaultView!=null?u.ownerDocument.defaultView:window;for(var f=Dg(u.document);f instanceof u.HTMLIFrameElement;){try{var p=typeof f.contentWindow.location.href=="string"}catch{p=!1}if(p)u=f.contentWindow;else break;f=Dg(u.document)}return f}function ww(u){var f=u&&u.nodeName&&u.nodeName.toLowerCase();return f&&(f==="input"&&(u.type==="text"||u.type==="search"||u.type==="tel"||u.type==="url"||u.type==="password")||f==="textarea"||u.contentEditable==="true")}var RK=el&&"documentMode"in document&&11>=document.documentMode,Md=null,Sw=null,Jf=null,kw=!1;function nC(u,f,p){var v=p.window===p?p.document:p.nodeType===9?p:p.ownerDocument;kw||Md==null||Md!==Dg(v)||(v=Md,"selectionStart"in v&&ww(v)?v={start:v.selectionStart,end:v.selectionEnd}:(v=(v.ownerDocument&&v.ownerDocument.defaultView||window).getSelection(),v={anchorNode:v.anchorNode,anchorOffset:v.anchorOffset,focusNode:v.focusNode,focusOffset:v.focusOffset}),Jf&&Zf(Jf,v)||(Jf=v,v=Ex(Sw,"onSelect"),0>=F,O-=F,ao=1<<32-Rt(f)+O|p<Zt?(fn=vt,vt=null):fn=vt.sibling;var Bn=Se(pe,vt,ye[Zt],Me);if(Bn===null){vt===null&&(vt=fn);break}u&&vt&&Bn.alternate===null&&f(pe,vt),fe=C(Bn,fe,Zt),Ln===null?Nt=Bn:Ln.sibling=Bn,Ln=Bn,vt=fn}if(Zt===ye.length)return p(pe,vt),vn&&nl(pe,Zt),Nt;if(vt===null){for(;ZtZt?(fn=vt,vt=null):fn=vt.sibling;var kc=Se(pe,vt,Bn.value,Me);if(kc===null){vt===null&&(vt=fn);break}u&&vt&&kc.alternate===null&&f(pe,vt),fe=C(kc,fe,Zt),Ln===null?Nt=kc:Ln.sibling=kc,Ln=kc,vt=fn}if(Bn.done)return p(pe,vt),vn&&nl(pe,Zt),Nt;if(vt===null){for(;!Bn.done;Zt++,Bn=ye.next())Bn=Re(pe,Bn.value,Me),Bn!==null&&(fe=C(Bn,fe,Zt),Ln===null?Nt=Bn:Ln.sibling=Bn,Ln=Bn);return vn&&nl(pe,Zt),Nt}for(vt=v(vt);!Bn.done;Zt++,Bn=ye.next())Bn=Ce(vt,pe,Zt,Bn.value,Me),Bn!==null&&(u&&Bn.alternate!==null&&vt.delete(Bn.key===null?Zt:Bn.key),fe=C(Bn,fe,Zt),Ln===null?Nt=Bn:Ln.sibling=Bn,Ln=Bn);return u&&vt.forEach(function(JZ){return f(pe,JZ)}),vn&&nl(pe,Zt),Nt}function Jn(pe,fe,ye,Me){if(typeof ye=="object"&&ye!==null&&ye.type===w&&ye.key===null&&(ye=ye.props.children),typeof ye=="object"&&ye!==null){switch(ye.$$typeof){case x:e:{for(var Nt=ye.key;fe!==null;){if(fe.key===Nt){if(Nt=ye.type,Nt===w){if(fe.tag===7){p(pe,fe.sibling),Me=O(fe,ye.props.children),Me.return=pe,pe=Me;break e}}else if(fe.elementType===Nt||typeof Nt=="object"&&Nt!==null&&Nt.$$typeof===I&&ju(Nt)===fe.type){p(pe,fe.sibling),Me=O(fe,ye.props),im(Me,ye),Me.return=pe,pe=Me;break e}p(pe,fe);break}else f(pe,fe);fe=fe.sibling}ye.type===w?(Me=bu(ye.props.children,pe.mode,Me,ye.key),Me.return=pe,pe=Me):(Me=Ug(ye.type,ye.key,ye.props,null,pe.mode,Me),im(Me,ye),Me.return=pe,pe=Me)}return F(pe);case y:e:{for(Nt=ye.key;fe!==null;){if(fe.key===Nt)if(fe.tag===4&&fe.stateNode.containerInfo===ye.containerInfo&&fe.stateNode.implementation===ye.implementation){p(pe,fe.sibling),Me=O(fe,ye.children||[]),Me.return=pe,pe=Me;break e}else{p(pe,fe);break}else f(pe,fe);fe=fe.sibling}Me=_w(ye,pe.mode,Me),Me.return=pe,pe=Me}return F(pe);case I:return ye=ju(ye),Jn(pe,fe,ye,Me)}if(Q(ye))return ut(pe,fe,ye,Me);if(U(ye)){if(Nt=U(ye),typeof Nt!="function")throw Error(r(150));return ye=Nt.call(ye),Mt(pe,fe,ye,Me)}if(typeof ye.then=="function")return Jn(pe,fe,Jg(ye),Me);if(ye.$$typeof===N)return Jn(pe,fe,Xg(pe,ye),Me);ex(pe,ye)}return typeof ye=="string"&&ye!==""||typeof ye=="number"||typeof ye=="bigint"?(ye=""+ye,fe!==null&&fe.tag===6?(p(pe,fe.sibling),Me=O(fe,ye),Me.return=pe,pe=Me):(p(pe,fe),Me=Ew(ye,pe.mode,Me),Me.return=pe,pe=Me),F(pe)):p(pe,fe)}return function(pe,fe,ye,Me){try{sm=0;var Nt=Jn(pe,fe,ye,Me);return $d=null,Nt}catch(vt){if(vt===qd||vt===Kg)throw vt;var Ln=Ai(29,vt,null,pe.mode);return Ln.lanes=Me,Ln.return=pe,Ln}finally{}}}var Cu=jC(!0),NC=jC(!1),ac=!1;function $w(u){u.updateQueue={baseState:u.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Hw(u,f){u=u.updateQueue,f.updateQueue===u&&(f.updateQueue={baseState:u.baseState,firstBaseUpdate:u.firstBaseUpdate,lastBaseUpdate:u.lastBaseUpdate,shared:u.shared,callbacks:null})}function oc(u){return{lane:u,tag:0,payload:null,callback:null,next:null}}function lc(u,f,p){var v=u.updateQueue;if(v===null)return null;if(v=v.shared,(Hn&2)!==0){var O=v.pending;return O===null?f.next=f:(f.next=O.next,O.next=f),v.pending=f,f=Vg(u),cC(u,null,p),f}return Qg(u,v,f,p),Vg(u)}function am(u,f,p){if(f=f.updateQueue,f!==null&&(f=f.shared,(p&4194048)!==0)){var v=f.lanes;v&=u.pendingLanes,p|=v,f.lanes=p,gs(u,p)}}function Qw(u,f){var p=u.updateQueue,v=u.alternate;if(v!==null&&(v=v.updateQueue,p===v)){var O=null,C=null;if(p=p.firstBaseUpdate,p!==null){do{var F={lane:p.lane,tag:p.tag,payload:p.payload,callback:null,next:null};C===null?O=C=F:C=C.next=F,p=p.next}while(p!==null);C===null?O=C=f:C=C.next=f}else O=C=f;p={baseState:v.baseState,firstBaseUpdate:O,lastBaseUpdate:C,shared:v.shared,callbacks:v.callbacks},u.updateQueue=p;return}u=p.lastBaseUpdate,u===null?p.firstBaseUpdate=f:u.next=f,p.lastBaseUpdate=f}var Vw=!1;function om(){if(Vw){var u=Fd;if(u!==null)throw u}}function lm(u,f,p,v){Vw=!1;var O=u.updateQueue;ac=!1;var C=O.firstBaseUpdate,F=O.lastBaseUpdate,Y=O.shared.pending;if(Y!==null){O.shared.pending=null;var ue=Y,we=ue.next;ue.next=null,F===null?C=we:F.next=we,F=ue;var Ee=u.alternate;Ee!==null&&(Ee=Ee.updateQueue,Y=Ee.lastBaseUpdate,Y!==F&&(Y===null?Ee.firstBaseUpdate=we:Y.next=we,Ee.lastBaseUpdate=ue))}if(C!==null){var Re=O.baseState;F=0,Ee=we=ue=null,Y=C;do{var Se=Y.lane&-536870913,Ce=Se!==Y.lane;if(Ce?(hn&Se)===Se:(v&Se)===Se){Se!==0&&Se===Bd&&(Vw=!0),Ee!==null&&(Ee=Ee.next={lane:0,tag:Y.tag,payload:Y.payload,callback:null,next:null});e:{var ut=u,Mt=Y;Se=f;var Jn=p;switch(Mt.tag){case 1:if(ut=Mt.payload,typeof ut=="function"){Re=ut.call(Jn,Re,Se);break e}Re=ut;break e;case 3:ut.flags=ut.flags&-65537|128;case 0:if(ut=Mt.payload,Se=typeof ut=="function"?ut.call(Jn,Re,Se):ut,Se==null)break e;Re=m({},Re,Se);break e;case 2:ac=!0}}Se=Y.callback,Se!==null&&(u.flags|=64,Ce&&(u.flags|=8192),Ce=O.callbacks,Ce===null?O.callbacks=[Se]:Ce.push(Se))}else Ce={lane:Se,tag:Y.tag,payload:Y.payload,callback:Y.callback,next:null},Ee===null?(we=Ee=Ce,ue=Re):Ee=Ee.next=Ce,F|=Se;if(Y=Y.next,Y===null){if(Y=O.shared.pending,Y===null)break;Ce=Y,Y=Ce.next,Ce.next=null,O.lastBaseUpdate=Ce,O.shared.pending=null}}while(!0);Ee===null&&(ue=Re),O.baseState=ue,O.firstBaseUpdate=we,O.lastBaseUpdate=Ee,C===null&&(O.shared.lanes=0),fc|=F,u.lanes=F,u.memoizedState=Re}}function CC(u,f){if(typeof u!="function")throw Error(r(191,u));u.call(f)}function TC(u,f){var p=u.callbacks;if(p!==null)for(u.callbacks=null,u=0;uC?C:8;var F=B.T,Y={};B.T=Y,u2(u,!1,f,p);try{var ue=O(),we=B.S;if(we!==null&&we(Y,ue),ue!==null&&typeof ue=="object"&&typeof ue.then=="function"){var Ee=$K(ue,v);dm(u,f,Ee,Ii(u))}else dm(u,f,v,Ii(u))}catch(Re){dm(u,f,{then:function(){},status:"rejected",reason:Re},Ii())}finally{X.p=C,F!==null&&Y.types!==null&&(F.types=Y.types),B.T=F}}function GK(){}function l2(u,f,p,v){if(u.tag!==5)throw Error(r(476));var O=a8(u).queue;i8(u,O,f,J,p===null?GK:function(){return o8(u),p(v)})}function a8(u){var f=u.memoizedState;if(f!==null)return f;f={memoizedState:J,baseState:J,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:al,lastRenderedState:J},next:null};var p={};return f.next={memoizedState:p,baseState:p,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:al,lastRenderedState:p},next:null},u.memoizedState=f,u=u.alternate,u!==null&&(u.memoizedState=f),f}function o8(u){var f=a8(u);f.next===null&&(f=u.alternate.memoizedState),dm(u,f.next.queue,{},Ii())}function c2(){return Ts(Tm)}function l8(){return $r().memoizedState}function c8(){return $r().memoizedState}function XK(u){for(var f=u.return;f!==null;){switch(f.tag){case 24:case 3:var p=Ii();u=oc(p);var v=lc(f,u,p);v!==null&&(hi(v,f,p),am(v,f,p)),f={cache:Lw()},u.payload=f;return}f=f.return}}function YK(u,f,p){var v=Ii();p={lane:v,revertLane:0,gesture:null,action:p,hasEagerState:!1,eagerState:null,next:null},ux(u)?d8(f,p):(p=Cw(u,f,p,v),p!==null&&(hi(p,u,v),h8(p,f,v)))}function u8(u,f,p){var v=Ii();dm(u,f,p,v)}function dm(u,f,p,v){var O={lane:v,revertLane:0,gesture:null,action:p,hasEagerState:!1,eagerState:null,next:null};if(ux(u))d8(f,O);else{var C=u.alternate;if(u.lanes===0&&(C===null||C.lanes===0)&&(C=f.lastRenderedReducer,C!==null))try{var F=f.lastRenderedState,Y=C(F,p);if(O.hasEagerState=!0,O.eagerState=Y,Mi(Y,F))return Qg(u,f,O,0),rr===null&&Hg(),!1}catch{}finally{}if(p=Cw(u,f,O,v),p!==null)return hi(p,u,v),h8(p,f,v),!0}return!1}function u2(u,f,p,v){if(v={lane:2,revertLane:$2(),gesture:null,action:v,hasEagerState:!1,eagerState:null,next:null},ux(u)){if(f)throw Error(r(479))}else f=Cw(u,p,v,2),f!==null&&hi(f,u,2)}function ux(u){var f=u.alternate;return u===Wt||f!==null&&f===Wt}function d8(u,f){Qd=rx=!0;var p=u.pending;p===null?f.next=f:(f.next=p.next,p.next=f),u.pending=f}function h8(u,f,p){if((p&4194048)!==0){var v=f.lanes;v&=u.pendingLanes,p|=v,f.lanes=p,gs(u,p)}}var hm={readContext:Ts,use:ax,useCallback:Pr,useContext:Pr,useEffect:Pr,useImperativeHandle:Pr,useLayoutEffect:Pr,useInsertionEffect:Pr,useMemo:Pr,useReducer:Pr,useRef:Pr,useState:Pr,useDebugValue:Pr,useDeferredValue:Pr,useTransition:Pr,useSyncExternalStore:Pr,useId:Pr,useHostTransitionStatus:Pr,useFormState:Pr,useActionState:Pr,useOptimistic:Pr,useMemoCache:Pr,useCacheRefresh:Pr};hm.useEffectEvent=Pr;var f8={readContext:Ts,use:ax,useCallback:function(u,f){return Xs().memoizedState=[u,f===void 0?null:f],u},useContext:Ts,useEffect:YC,useImperativeHandle:function(u,f,p){p=p!=null?p.concat([u]):null,lx(4194308,4,e8.bind(null,f,u),p)},useLayoutEffect:function(u,f){return lx(4194308,4,u,f)},useInsertionEffect:function(u,f){lx(4,2,u,f)},useMemo:function(u,f){var p=Xs();f=f===void 0?null:f;var v=u();if(Tu){tn(!0);try{u()}finally{tn(!1)}}return p.memoizedState=[v,f],v},useReducer:function(u,f,p){var v=Xs();if(p!==void 0){var O=p(f);if(Tu){tn(!0);try{p(f)}finally{tn(!1)}}}else O=f;return v.memoizedState=v.baseState=O,u={pending:null,lanes:0,dispatch:null,lastRenderedReducer:u,lastRenderedState:O},v.queue=u,u=u.dispatch=YK.bind(null,Wt,u),[v.memoizedState,u]},useRef:function(u){var f=Xs();return u={current:u},f.memoizedState=u},useState:function(u){u=r2(u);var f=u.queue,p=u8.bind(null,Wt,f);return f.dispatch=p,[u.memoizedState,p]},useDebugValue:a2,useDeferredValue:function(u,f){var p=Xs();return o2(p,u,f)},useTransition:function(){var u=r2(!1);return u=i8.bind(null,Wt,u.queue,!0,!1),Xs().memoizedState=u,[!1,u]},useSyncExternalStore:function(u,f,p){var v=Wt,O=Xs();if(vn){if(p===void 0)throw Error(r(407));p=p()}else{if(p=f(),rr===null)throw Error(r(349));(hn&127)!==0||DC(v,f,p)}O.memoizedState=p;var C={value:p,getSnapshot:f};return O.queue=C,YC(zC.bind(null,v,C,u),[u]),v.flags|=2048,Ud(9,{destroy:void 0},PC.bind(null,v,C,p,f),null),p},useId:function(){var u=Xs(),f=rr.identifierPrefix;if(vn){var p=oo,v=ao;p=(v&~(1<<32-Rt(v)-1)).toString(32)+p,f="_"+f+"R_"+p,p=sx++,0<\/script>",C=C.removeChild(C.firstChild);break;case"select":C=typeof v.is=="string"?F.createElement("select",{is:v.is}):F.createElement("select"),v.multiple?C.multiple=!0:v.size&&(C.size=v.size);break;default:C=typeof v.is=="string"?F.createElement(O,{is:v.is}):F.createElement(O)}}C[Cr]=f,C[Tr]=v;e:for(F=f.child;F!==null;){if(F.tag===5||F.tag===6)C.appendChild(F.stateNode);else if(F.tag!==4&&F.tag!==27&&F.child!==null){F.child.return=F,F=F.child;continue}if(F===f)break e;for(;F.sibling===null;){if(F.return===null||F.return===f)break e;F=F.return}F.sibling.return=F.return,F=F.sibling}f.stateNode=C;e:switch(_s(C,O,v),O){case"button":case"input":case"select":case"textarea":v=!!v.autoFocus;break e;case"img":v=!0;break e;default:v=!1}v&&ll(f)}}return mr(f),O2(f,f.type,u===null?null:u.memoizedProps,f.pendingProps,p),null;case 6:if(u&&f.stateNode!=null)u.memoizedProps!==v&&ll(f);else{if(typeof v!="string"&&f.stateNode===null)throw Error(r(166));if(u=ne.current,Id(f)){if(u=f.stateNode,p=f.memoizedProps,v=null,O=Cs,O!==null)switch(O.tag){case 27:case 5:v=O.memoizedProps}u[Cr]=f,u=!!(u.nodeValue===p||v!==null&&v.suppressHydrationWarning===!0||AT(u.nodeValue,p)),u||sc(f,!0)}else u=_x(u).createTextNode(v),u[Cr]=f,f.stateNode=u}return mr(f),null;case 31:if(p=f.memoizedState,u===null||u.memoizedState!==null){if(v=Id(f),p!==null){if(u===null){if(!v)throw Error(r(318));if(u=f.memoizedState,u=u!==null?u.dehydrated:null,!u)throw Error(r(557));u[Cr]=f}else wu(),(f.flags&128)===0&&(f.memoizedState=null),f.flags|=4;mr(f),u=!1}else p=Dw(),u!==null&&u.memoizedState!==null&&(u.memoizedState.hydrationErrors=p),u=!0;if(!u)return f.flags&256?(Di(f),f):(Di(f),null);if((f.flags&128)!==0)throw Error(r(558))}return mr(f),null;case 13:if(v=f.memoizedState,u===null||u.memoizedState!==null&&u.memoizedState.dehydrated!==null){if(O=Id(f),v!==null&&v.dehydrated!==null){if(u===null){if(!O)throw Error(r(318));if(O=f.memoizedState,O=O!==null?O.dehydrated:null,!O)throw Error(r(317));O[Cr]=f}else wu(),(f.flags&128)===0&&(f.memoizedState=null),f.flags|=4;mr(f),O=!1}else O=Dw(),u!==null&&u.memoizedState!==null&&(u.memoizedState.hydrationErrors=O),O=!0;if(!O)return f.flags&256?(Di(f),f):(Di(f),null)}return Di(f),(f.flags&128)!==0?(f.lanes=p,f):(p=v!==null,u=u!==null&&u.memoizedState!==null,p&&(v=f.child,O=null,v.alternate!==null&&v.alternate.memoizedState!==null&&v.alternate.memoizedState.cachePool!==null&&(O=v.alternate.memoizedState.cachePool.pool),C=null,v.memoizedState!==null&&v.memoizedState.cachePool!==null&&(C=v.memoizedState.cachePool.pool),C!==O&&(v.flags|=2048)),p!==u&&p&&(f.child.flags|=8192),px(f,f.updateQueue),mr(f),null);case 4:return re(),u===null&&U2(f.stateNode.containerInfo),mr(f),null;case 10:return sl(f.type),mr(f),null;case 19:if(W(qr),v=f.memoizedState,v===null)return mr(f),null;if(O=(f.flags&128)!==0,C=v.rendering,C===null)if(O)mm(v,!1);else{if(zr!==0||u!==null&&(u.flags&128)!==0)for(u=f.child;u!==null;){if(C=nx(u),C!==null){for(f.flags|=128,mm(v,!1),u=C.updateQueue,f.updateQueue=u,px(f,u),f.subtreeFlags=0,u=p,p=f.child;p!==null;)uC(p,u),p=p.sibling;return q(qr,qr.current&1|2),vn&&nl(f,v.treeForkCount),f.child}u=u.sibling}v.tail!==null&&_t()>bx&&(f.flags|=128,O=!0,mm(v,!1),f.lanes=4194304)}else{if(!O)if(u=nx(C),u!==null){if(f.flags|=128,O=!0,u=u.updateQueue,f.updateQueue=u,px(f,u),mm(v,!0),v.tail===null&&v.tailMode==="hidden"&&!C.alternate&&!vn)return mr(f),null}else 2*_t()-v.renderingStartTime>bx&&p!==536870912&&(f.flags|=128,O=!0,mm(v,!1),f.lanes=4194304);v.isBackwards?(C.sibling=f.child,f.child=C):(u=v.last,u!==null?u.sibling=C:f.child=C,v.last=C)}return v.tail!==null?(u=v.tail,v.rendering=u,v.tail=u.sibling,v.renderingStartTime=_t(),u.sibling=null,p=qr.current,q(qr,O?p&1|2:p&1),vn&&nl(f,v.treeForkCount),u):(mr(f),null);case 22:case 23:return Di(f),Ww(),v=f.memoizedState!==null,u!==null?u.memoizedState!==null!==v&&(f.flags|=8192):v&&(f.flags|=8192),v?(p&536870912)!==0&&(f.flags&128)===0&&(mr(f),f.subtreeFlags&6&&(f.flags|=8192)):mr(f),p=f.updateQueue,p!==null&&px(f,p.retryQueue),p=null,u!==null&&u.memoizedState!==null&&u.memoizedState.cachePool!==null&&(p=u.memoizedState.cachePool.pool),v=null,f.memoizedState!==null&&f.memoizedState.cachePool!==null&&(v=f.memoizedState.cachePool.pool),v!==p&&(f.flags|=2048),u!==null&&W(Ou),null;case 24:return p=null,u!==null&&(p=u.memoizedState.cache),f.memoizedState.cache!==p&&(f.flags|=2048),sl(Xr),mr(f),null;case 25:return null;case 30:return null}throw Error(r(156,f.tag))}function tZ(u,f){switch(Aw(f),f.tag){case 1:return u=f.flags,u&65536?(f.flags=u&-65537|128,f):null;case 3:return sl(Xr),re(),u=f.flags,(u&65536)!==0&&(u&128)===0?(f.flags=u&-65537|128,f):null;case 26:case 27:case 5:return Te(f),null;case 31:if(f.memoizedState!==null){if(Di(f),f.alternate===null)throw Error(r(340));wu()}return u=f.flags,u&65536?(f.flags=u&-65537|128,f):null;case 13:if(Di(f),u=f.memoizedState,u!==null&&u.dehydrated!==null){if(f.alternate===null)throw Error(r(340));wu()}return u=f.flags,u&65536?(f.flags=u&-65537|128,f):null;case 19:return W(qr),null;case 4:return re(),null;case 10:return sl(f.type),null;case 22:case 23:return Di(f),Ww(),u!==null&&W(Ou),u=f.flags,u&65536?(f.flags=u&-65537|128,f):null;case 24:return sl(Xr),null;case 25:return null;default:return null}}function I8(u,f){switch(Aw(f),f.tag){case 3:sl(Xr),re();break;case 26:case 27:case 5:Te(f);break;case 4:re();break;case 31:f.memoizedState!==null&&Di(f);break;case 13:Di(f);break;case 19:W(qr);break;case 10:sl(f.type);break;case 22:case 23:Di(f),Ww(),u!==null&&W(Ou);break;case 24:sl(Xr)}}function pm(u,f){try{var p=f.updateQueue,v=p!==null?p.lastEffect:null;if(v!==null){var O=v.next;p=O;do{if((p.tag&u)===u){v=void 0;var C=p.create,F=p.inst;v=C(),F.destroy=v}p=p.next}while(p!==O)}}catch(Y){Un(f,f.return,Y)}}function dc(u,f,p){try{var v=f.updateQueue,O=v!==null?v.lastEffect:null;if(O!==null){var C=O.next;v=C;do{if((v.tag&u)===u){var F=v.inst,Y=F.destroy;if(Y!==void 0){F.destroy=void 0,O=f;var ue=p,we=Y;try{we()}catch(Ee){Un(O,ue,Ee)}}}v=v.next}while(v!==C)}}catch(Ee){Un(f,f.return,Ee)}}function L8(u){var f=u.updateQueue;if(f!==null){var p=u.stateNode;try{TC(f,p)}catch(v){Un(u,u.return,v)}}}function B8(u,f,p){p.props=Eu(u.type,u.memoizedProps),p.state=u.memoizedState;try{p.componentWillUnmount()}catch(v){Un(u,f,v)}}function gm(u,f){try{var p=u.ref;if(p!==null){switch(u.tag){case 26:case 27:case 5:var v=u.stateNode;break;case 30:v=u.stateNode;break;default:v=u.stateNode}typeof p=="function"?u.refCleanup=p(v):p.current=v}}catch(O){Un(u,f,O)}}function lo(u,f){var p=u.ref,v=u.refCleanup;if(p!==null)if(typeof v=="function")try{v()}catch(O){Un(u,f,O)}finally{u.refCleanup=null,u=u.alternate,u!=null&&(u.refCleanup=null)}else if(typeof p=="function")try{p(null)}catch(O){Un(u,f,O)}else p.current=null}function F8(u){var f=u.type,p=u.memoizedProps,v=u.stateNode;try{e:switch(f){case"button":case"input":case"select":case"textarea":p.autoFocus&&v.focus();break e;case"img":p.src?v.src=p.src:p.srcSet&&(v.srcset=p.srcSet)}}catch(O){Un(u,u.return,O)}}function j2(u,f,p){try{var v=u.stateNode;kZ(v,u.type,p,f),v[Tr]=f}catch(O){Un(u,u.return,O)}}function q8(u){return u.tag===5||u.tag===3||u.tag===26||u.tag===27&&vc(u.type)||u.tag===4}function N2(u){e:for(;;){for(;u.sibling===null;){if(u.return===null||q8(u.return))return null;u=u.return}for(u.sibling.return=u.return,u=u.sibling;u.tag!==5&&u.tag!==6&&u.tag!==18;){if(u.tag===27&&vc(u.type)||u.flags&2||u.child===null||u.tag===4)continue e;u.child.return=u,u=u.child}if(!(u.flags&2))return u.stateNode}}function C2(u,f,p){var v=u.tag;if(v===5||v===6)u=u.stateNode,f?(p.nodeType===9?p.body:p.nodeName==="HTML"?p.ownerDocument.body:p).insertBefore(u,f):(f=p.nodeType===9?p.body:p.nodeName==="HTML"?p.ownerDocument.body:p,f.appendChild(u),p=p._reactRootContainer,p!=null||f.onclick!==null||(f.onclick=Jo));else if(v!==4&&(v===27&&vc(u.type)&&(p=u.stateNode,f=null),u=u.child,u!==null))for(C2(u,f,p),u=u.sibling;u!==null;)C2(u,f,p),u=u.sibling}function gx(u,f,p){var v=u.tag;if(v===5||v===6)u=u.stateNode,f?p.insertBefore(u,f):p.appendChild(u);else if(v!==4&&(v===27&&vc(u.type)&&(p=u.stateNode),u=u.child,u!==null))for(gx(u,f,p),u=u.sibling;u!==null;)gx(u,f,p),u=u.sibling}function $8(u){var f=u.stateNode,p=u.memoizedProps;try{for(var v=u.type,O=f.attributes;O.length;)f.removeAttributeNode(O[0]);_s(f,v,p),f[Cr]=u,f[Tr]=p}catch(C){Un(u,u.return,C)}}var cl=!1,Zr=!1,T2=!1,H8=typeof WeakSet=="function"?WeakSet:Set,xs=null;function nZ(u,f){if(u=u.containerInfo,X2=Ix,u=tC(u),ww(u)){if("selectionStart"in u)var p={start:u.selectionStart,end:u.selectionEnd};else e:{p=(p=u.ownerDocument)&&p.defaultView||window;var v=p.getSelection&&p.getSelection();if(v&&v.rangeCount!==0){p=v.anchorNode;var O=v.anchorOffset,C=v.focusNode;v=v.focusOffset;try{p.nodeType,C.nodeType}catch{p=null;break e}var F=0,Y=-1,ue=-1,we=0,Ee=0,Re=u,Se=null;t:for(;;){for(var Ce;Re!==p||O!==0&&Re.nodeType!==3||(Y=F+O),Re!==C||v!==0&&Re.nodeType!==3||(ue=F+v),Re.nodeType===3&&(F+=Re.nodeValue.length),(Ce=Re.firstChild)!==null;)Se=Re,Re=Ce;for(;;){if(Re===u)break t;if(Se===p&&++we===O&&(Y=F),Se===C&&++Ee===v&&(ue=F),(Ce=Re.nextSibling)!==null)break;Re=Se,Se=Re.parentNode}Re=Ce}p=Y===-1||ue===-1?null:{start:Y,end:ue}}else p=null}p=p||{start:0,end:0}}else p=null;for(Y2={focusedElem:u,selectionRange:p},Ix=!1,xs=f;xs!==null;)if(f=xs,u=f.child,(f.subtreeFlags&1028)!==0&&u!==null)u.return=f,xs=u;else for(;xs!==null;){switch(f=xs,C=f.alternate,u=f.flags,f.tag){case 0:if((u&4)!==0&&(u=f.updateQueue,u=u!==null?u.events:null,u!==null))for(p=0;p title"))),_s(C,v,p),C[Cr]=u,Gr(C),v=C;break e;case"link":var F=XT("link","href",O).get(v+(p.href||""));if(F){for(var Y=0;YJn&&(F=Jn,Jn=Mt,Mt=F);var pe=J7(Y,Mt),fe=J7(Y,Jn);if(pe&&fe&&(Ce.rangeCount!==1||Ce.anchorNode!==pe.node||Ce.anchorOffset!==pe.offset||Ce.focusNode!==fe.node||Ce.focusOffset!==fe.offset)){var ye=Re.createRange();ye.setStart(pe.node,pe.offset),Ce.removeAllRanges(),Mt>Jn?(Ce.addRange(ye),Ce.extend(fe.node,fe.offset)):(ye.setEnd(fe.node,fe.offset),Ce.addRange(ye))}}}}for(Re=[],Ce=Y;Ce=Ce.parentNode;)Ce.nodeType===1&&Re.push({element:Ce,left:Ce.scrollLeft,top:Ce.scrollTop});for(typeof Y.focus=="function"&&Y.focus(),Y=0;Yp?32:p,B.T=null,p=P2,P2=null;var C=pc,F=ml;if(os=0,Kd=pc=null,ml=0,(Hn&6)!==0)throw Error(r(331));var Y=Hn;if(Hn|=4,eT(C.current),K8(C,C.current,F,p),Hn=Y,Sm(0,!1),rt&&typeof rt.onPostCommitFiberRoot=="function")try{rt.onPostCommitFiberRoot(Fe,C)}catch{}return!0}finally{X.p=O,B.T=v,vT(u,f)}}function bT(u,f,p){f=ra(p,f),f=m2(u.stateNode,f,2),u=lc(u,f,2),u!==null&&(cr(u,2),co(u))}function Un(u,f,p){if(u.tag===3)bT(u,u,p);else for(;f!==null;){if(f.tag===3){bT(f,u,p);break}else if(f.tag===1){var v=f.stateNode;if(typeof f.type.getDerivedStateFromError=="function"||typeof v.componentDidCatch=="function"&&(mc===null||!mc.has(v))){u=ra(p,u),p=w8(2),v=lc(f,p,2),v!==null&&(S8(p,v,f,u),cr(v,2),co(v));break}}f=f.return}}function B2(u,f,p){var v=u.pingCache;if(v===null){v=u.pingCache=new iZ;var O=new Set;v.set(f,O)}else O=v.get(f),O===void 0&&(O=new Set,v.set(f,O));O.has(p)||(M2=!0,O.add(p),u=uZ.bind(null,u,f,p),f.then(u,u))}function uZ(u,f,p){var v=u.pingCache;v!==null&&v.delete(f),u.pingedLanes|=u.suspendedLanes&p,u.warmLanes&=~p,rr===u&&(hn&p)===p&&(zr===4||zr===3&&(hn&62914560)===hn&&300>_t()-yx?(Hn&2)===0&&Zd(u,0):A2|=p,Yd===hn&&(Yd=0)),co(u)}function wT(u,f){f===0&&(f=vr()),u=yu(u,f),u!==null&&(cr(u,f),co(u))}function dZ(u){var f=u.memoizedState,p=0;f!==null&&(p=f.retryLane),wT(u,p)}function hZ(u,f){var p=0;switch(u.tag){case 31:case 13:var v=u.stateNode,O=u.memoizedState;O!==null&&(p=O.retryLane);break;case 19:v=u.stateNode;break;case 22:v=u.stateNode._retryCache;break;default:throw Error(r(314))}v!==null&&v.delete(f),wT(u,p)}function fZ(u,f){return xt(u,f)}var Nx=null,eh=null,F2=!1,Cx=!1,q2=!1,xc=0;function co(u){u!==eh&&u.next===null&&(eh===null?Nx=eh=u:eh=eh.next=u),Cx=!0,F2||(F2=!0,pZ())}function Sm(u,f){if(!q2&&Cx){q2=!0;do for(var p=!1,v=Nx;v!==null;){if(u!==0){var O=v.pendingLanes;if(O===0)var C=0;else{var F=v.suspendedLanes,Y=v.pingedLanes;C=(1<<31-Rt(42|u)+1)-1,C&=O&~(F&~Y),C=C&201326741?C&201326741|1:C?C|2:0}C!==0&&(p=!0,jT(v,C))}else C=hn,C=xr(v,v===rr?C:0,v.cancelPendingCommit!==null||v.timeoutHandle!==-1),(C&3)===0||Ur(v,C)||(p=!0,jT(v,C));v=v.next}while(p);q2=!1}}function mZ(){ST()}function ST(){Cx=F2=!1;var u=0;xc!==0&&jZ()&&(u=xc);for(var f=_t(),p=null,v=Nx;v!==null;){var O=v.next,C=kT(v,f);C===0?(v.next=null,p===null?Nx=O:p.next=O,O===null&&(eh=p)):(p=v,(u!==0||(C&3)!==0)&&(Cx=!0)),v=O}os!==0&&os!==5||Sm(u),xc!==0&&(xc=0)}function kT(u,f){for(var p=u.suspendedLanes,v=u.pingedLanes,O=u.expirationTimes,C=u.pendingLanes&-62914561;0Y)break;var Ee=ue.transferSize,Re=ue.initiatorType;Ee&&RT(Re)&&(ue=ue.responseEnd,F+=Ee*(ue"u"?null:document;function VT(u,f,p){var v=th;if(v&&typeof f=="string"&&f){var O=ta(f);O='link[rel="'+u+'"][href="'+O+'"]',typeof p=="string"&&(O+='[crossorigin="'+p+'"]'),QT.has(O)||(QT.add(O),u={rel:u,crossOrigin:p,href:f},v.querySelector(O)===null&&(f=v.createElement("link"),_s(f,"link",u),Gr(f),v.head.appendChild(f)))}}function DZ(u){pl.D(u),VT("dns-prefetch",u,null)}function PZ(u,f){pl.C(u,f),VT("preconnect",u,f)}function zZ(u,f,p){pl.L(u,f,p);var v=th;if(v&&u&&f){var O='link[rel="preload"][as="'+ta(f)+'"]';f==="image"&&p&&p.imageSrcSet?(O+='[imagesrcset="'+ta(p.imageSrcSet)+'"]',typeof p.imageSizes=="string"&&(O+='[imagesizes="'+ta(p.imageSizes)+'"]')):O+='[href="'+ta(u)+'"]';var C=O;switch(f){case"style":C=nh(u);break;case"script":C=rh(u)}ca.has(C)||(u=m({rel:"preload",href:f==="image"&&p&&p.imageSrcSet?void 0:u,as:f},p),ca.set(C,u),v.querySelector(O)!==null||f==="style"&&v.querySelector(Nm(C))||f==="script"&&v.querySelector(Cm(C))||(f=v.createElement("link"),_s(f,"link",u),Gr(f),v.head.appendChild(f)))}}function IZ(u,f){pl.m(u,f);var p=th;if(p&&u){var v=f&&typeof f.as=="string"?f.as:"script",O='link[rel="modulepreload"][as="'+ta(v)+'"][href="'+ta(u)+'"]',C=O;switch(v){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":C=rh(u)}if(!ca.has(C)&&(u=m({rel:"modulepreload",href:u},f),ca.set(C,u),p.querySelector(O)===null)){switch(v){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(p.querySelector(Cm(C)))return}v=p.createElement("link"),_s(v,"link",u),Gr(v),p.head.appendChild(v)}}}function LZ(u,f,p){pl.S(u,f,p);var v=th;if(v&&u){var O=ec(v).hoistableStyles,C=nh(u);f=f||"default";var F=O.get(C);if(!F){var Y={loading:0,preload:null};if(F=v.querySelector(Nm(C)))Y.loading=5;else{u=m({rel:"stylesheet",href:u,"data-precedence":f},p),(p=ca.get(C))&&r4(u,p);var ue=F=v.createElement("link");Gr(ue),_s(ue,"link",u),ue._p=new Promise(function(we,Ee){ue.onload=we,ue.onerror=Ee}),ue.addEventListener("load",function(){Y.loading|=1}),ue.addEventListener("error",function(){Y.loading|=2}),Y.loading|=4,Ax(F,f,v)}F={type:"stylesheet",instance:F,count:1,state:Y},O.set(C,F)}}}function BZ(u,f){pl.X(u,f);var p=th;if(p&&u){var v=ec(p).hoistableScripts,O=rh(u),C=v.get(O);C||(C=p.querySelector(Cm(O)),C||(u=m({src:u,async:!0},f),(f=ca.get(O))&&s4(u,f),C=p.createElement("script"),Gr(C),_s(C,"link",u),p.head.appendChild(C)),C={type:"script",instance:C,count:1,state:null},v.set(O,C))}}function FZ(u,f){pl.M(u,f);var p=th;if(p&&u){var v=ec(p).hoistableScripts,O=rh(u),C=v.get(O);C||(C=p.querySelector(Cm(O)),C||(u=m({src:u,async:!0,type:"module"},f),(f=ca.get(O))&&s4(u,f),C=p.createElement("script"),Gr(C),_s(C,"link",u),p.head.appendChild(C)),C={type:"script",instance:C,count:1,state:null},v.set(O,C))}}function UT(u,f,p,v){var O=(O=ne.current)?Mx(O):null;if(!O)throw Error(r(446));switch(u){case"meta":case"title":return null;case"style":return typeof p.precedence=="string"&&typeof p.href=="string"?(f=nh(p.href),p=ec(O).hoistableStyles,v=p.get(f),v||(v={type:"style",instance:null,count:0,state:null},p.set(f,v)),v):{type:"void",instance:null,count:0,state:null};case"link":if(p.rel==="stylesheet"&&typeof p.href=="string"&&typeof p.precedence=="string"){u=nh(p.href);var C=ec(O).hoistableStyles,F=C.get(u);if(F||(O=O.ownerDocument||O,F={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},C.set(u,F),(C=O.querySelector(Nm(u)))&&!C._p&&(F.instance=C,F.state.loading=5),ca.has(u)||(p={rel:"preload",as:"style",href:p.href,crossOrigin:p.crossOrigin,integrity:p.integrity,media:p.media,hrefLang:p.hrefLang,referrerPolicy:p.referrerPolicy},ca.set(u,p),C||qZ(O,u,p,F.state))),f&&v===null)throw Error(r(528,""));return F}if(f&&v!==null)throw Error(r(529,""));return null;case"script":return f=p.async,p=p.src,typeof p=="string"&&f&&typeof f!="function"&&typeof f!="symbol"?(f=rh(p),p=ec(O).hoistableScripts,v=p.get(f),v||(v={type:"script",instance:null,count:0,state:null},p.set(f,v)),v):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,u))}}function nh(u){return'href="'+ta(u)+'"'}function Nm(u){return'link[rel="stylesheet"]['+u+"]"}function WT(u){return m({},u,{"data-precedence":u.precedence,precedence:null})}function qZ(u,f,p,v){u.querySelector('link[rel="preload"][as="style"]['+f+"]")?v.loading=1:(f=u.createElement("link"),v.preload=f,f.addEventListener("load",function(){return v.loading|=1}),f.addEventListener("error",function(){return v.loading|=2}),_s(f,"link",p),Gr(f),u.head.appendChild(f))}function rh(u){return'[src="'+ta(u)+'"]'}function Cm(u){return"script[async]"+u}function GT(u,f,p){if(f.count++,f.instance===null)switch(f.type){case"style":var v=u.querySelector('style[data-href~="'+ta(p.href)+'"]');if(v)return f.instance=v,Gr(v),v;var O=m({},p,{"data-href":p.href,"data-precedence":p.precedence,href:null,precedence:null});return v=(u.ownerDocument||u).createElement("style"),Gr(v),_s(v,"style",O),Ax(v,p.precedence,u),f.instance=v;case"stylesheet":O=nh(p.href);var C=u.querySelector(Nm(O));if(C)return f.state.loading|=4,f.instance=C,Gr(C),C;v=WT(p),(O=ca.get(O))&&r4(v,O),C=(u.ownerDocument||u).createElement("link"),Gr(C);var F=C;return F._p=new Promise(function(Y,ue){F.onload=Y,F.onerror=ue}),_s(C,"link",v),f.state.loading|=4,Ax(C,p.precedence,u),f.instance=C;case"script":return C=rh(p.src),(O=u.querySelector(Cm(C)))?(f.instance=O,Gr(O),O):(v=p,(O=ca.get(C))&&(v=m({},p),s4(v,O)),u=u.ownerDocument||u,O=u.createElement("script"),Gr(O),_s(O,"link",v),u.head.appendChild(O),f.instance=O);case"void":return null;default:throw Error(r(443,f.type))}else f.type==="stylesheet"&&(f.state.loading&4)===0&&(v=f.instance,f.state.loading|=4,Ax(v,p.precedence,u));return f.instance}function Ax(u,f,p){for(var v=p.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),O=v.length?v[v.length-1]:null,C=O,F=0;F title"):null)}function $Z(u,f,p){if(p===1||f.itemProp!=null)return!1;switch(u){case"meta":case"title":return!0;case"style":if(typeof f.precedence!="string"||typeof f.href!="string"||f.href==="")break;return!0;case"link":if(typeof f.rel!="string"||typeof f.href!="string"||f.href===""||f.onLoad||f.onError)break;switch(f.rel){case"stylesheet":return u=f.disabled,typeof f.precedence=="string"&&u==null;default:return!0}case"script":if(f.async&&typeof f.async!="function"&&typeof f.async!="symbol"&&!f.onLoad&&!f.onError&&f.src&&typeof f.src=="string")return!0}return!1}function KT(u){return!(u.type==="stylesheet"&&(u.state.loading&3)===0)}function HZ(u,f,p,v){if(p.type==="stylesheet"&&(typeof v.media!="string"||matchMedia(v.media).matches!==!1)&&(p.state.loading&4)===0){if(p.instance===null){var O=nh(v.href),C=f.querySelector(Nm(O));if(C){f=C._p,f!==null&&typeof f=="object"&&typeof f.then=="function"&&(u.count++,u=Dx.bind(u),f.then(u,u)),p.state.loading|=4,p.instance=C,Gr(C);return}C=f.ownerDocument||f,v=WT(v),(O=ca.get(O))&&r4(v,O),C=C.createElement("link"),Gr(C);var F=C;F._p=new Promise(function(Y,ue){F.onload=Y,F.onerror=ue}),_s(C,"link",v),p.instance=C}u.stylesheets===null&&(u.stylesheets=new Map),u.stylesheets.set(p,f),(f=p.state.preload)&&(p.state.loading&3)===0&&(u.count++,p=Dx.bind(u),f.addEventListener("load",p),f.addEventListener("error",p))}}var i4=0;function QZ(u,f){return u.stylesheets&&u.count===0&&zx(u,u.stylesheets),0i4?50:800)+f);return u.unsuspend=p,function(){u.unsuspend=null,clearTimeout(v),clearTimeout(O)}}:null}function Dx(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)zx(this,this.stylesheets);else if(this.unsuspend){var u=this.unsuspend;this.unsuspend=null,u()}}}var Px=null;function zx(u,f){u.stylesheets=null,u.unsuspend!==null&&(u.count++,Px=new Map,f.forEach(VZ,u),Px=null,Dx.call(u))}function VZ(u,f){if(!(f.state.loading&4)){var p=Px.get(u);if(p)var v=p.get(null);else{p=new Map,Px.set(u,p);for(var O=u.querySelectorAll("link[data-precedence],style[data-precedence]"),C=0;C"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),m4.exports=Zee(),m4.exports}var ete=Jee();function bI(t,e){return function(){return t.apply(e,arguments)}}const{toString:tte}=Object.prototype,{getPrototypeOf:Ej}=Object,{iterator:Hy,toStringTag:wI}=Symbol,Qy=(t=>e=>{const n=tte.call(e);return t[n]||(t[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),eo=t=>(t=t.toLowerCase(),e=>Qy(e)===t),Vy=t=>e=>typeof e===t,{isArray:xf}=Array,Wh=Vy("undefined");function Mp(t){return t!==null&&!Wh(t)&&t.constructor!==null&&!Wh(t.constructor)&&wi(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const SI=eo("ArrayBuffer");function nte(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&SI(t.buffer),e}const rte=Vy("string"),wi=Vy("function"),kI=Vy("number"),Ap=t=>t!==null&&typeof t=="object",ste=t=>t===!0||t===!1,Z1=t=>{if(Qy(t)!=="object")return!1;const e=Ej(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(wI in t)&&!(Hy in t)},ite=t=>{if(!Ap(t)||Mp(t))return!1;try{return Object.keys(t).length===0&&Object.getPrototypeOf(t)===Object.prototype}catch{return!1}},ate=eo("Date"),ote=eo("File"),lte=eo("Blob"),cte=eo("FileList"),ute=t=>Ap(t)&&wi(t.pipe),dte=t=>{let e;return t&&(typeof FormData=="function"&&t instanceof FormData||wi(t.append)&&((e=Qy(t))==="formdata"||e==="object"&&wi(t.toString)&&t.toString()==="[object FormData]"))},hte=eo("URLSearchParams"),[fte,mte,pte,gte]=["ReadableStream","Request","Response","Headers"].map(eo),xte=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Rp(t,e,{allOwnKeys:n=!1}={}){if(t===null||typeof t>"u")return;let r,s;if(typeof t!="object"&&(t=[t]),xf(t))for(r=0,s=t.length;r0;)if(s=n[r],e===s.toLowerCase())return s;return null}const $u=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,jI=t=>!Wh(t)&&t!==$u;function ek(){const{caseless:t,skipUndefined:e}=jI(this)&&this||{},n={},r=(s,i)=>{const a=t&&OI(n,i)||i;Z1(n[a])&&Z1(s)?n[a]=ek(n[a],s):Z1(s)?n[a]=ek({},s):xf(s)?n[a]=s.slice():(!e||!Wh(s))&&(n[a]=s)};for(let s=0,i=arguments.length;s(Rp(e,(s,i)=>{n&&wi(s)?t[i]=bI(s,n):t[i]=s},{allOwnKeys:r}),t),yte=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),bte=(t,e,n,r)=>{t.prototype=Object.create(e.prototype,r),t.prototype.constructor=t,Object.defineProperty(t,"super",{value:e.prototype}),n&&Object.assign(t.prototype,n)},wte=(t,e,n,r)=>{let s,i,a;const l={};if(e=e||{},t==null)return e;do{for(s=Object.getOwnPropertyNames(t),i=s.length;i-- >0;)a=s[i],(!r||r(a,t,e))&&!l[a]&&(e[a]=t[a],l[a]=!0);t=n!==!1&&Ej(t)}while(t&&(!n||n(t,e))&&t!==Object.prototype);return e},Ste=(t,e,n)=>{t=String(t),(n===void 0||n>t.length)&&(n=t.length),n-=e.length;const r=t.indexOf(e,n);return r!==-1&&r===n},kte=t=>{if(!t)return null;if(xf(t))return t;let e=t.length;if(!kI(e))return null;const n=new Array(e);for(;e-- >0;)n[e]=t[e];return n},Ote=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&Ej(Uint8Array)),jte=(t,e)=>{const r=(t&&t[Hy]).call(t);let s;for(;(s=r.next())&&!s.done;){const i=s.value;e.call(t,i[0],i[1])}},Nte=(t,e)=>{let n;const r=[];for(;(n=t.exec(e))!==null;)r.push(n);return r},Cte=eo("HTMLFormElement"),Tte=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),k9=(({hasOwnProperty:t})=>(e,n)=>t.call(e,n))(Object.prototype),Ete=eo("RegExp"),NI=(t,e)=>{const n=Object.getOwnPropertyDescriptors(t),r={};Rp(n,(s,i)=>{let a;(a=e(s,i,t))!==!1&&(r[i]=a||s)}),Object.defineProperties(t,r)},_te=t=>{NI(t,(e,n)=>{if(wi(t)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=t[n];if(wi(r)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},Mte=(t,e)=>{const n={},r=s=>{s.forEach(i=>{n[i]=!0})};return xf(t)?r(t):r(String(t).split(e)),n},Ate=()=>{},Rte=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e;function Dte(t){return!!(t&&wi(t.append)&&t[wI]==="FormData"&&t[Hy])}const Pte=t=>{const e=new Array(10),n=(r,s)=>{if(Ap(r)){if(e.indexOf(r)>=0)return;if(Mp(r))return r;if(!("toJSON"in r)){e[s]=r;const i=xf(r)?[]:{};return Rp(r,(a,l)=>{const c=n(a,s+1);!Wh(c)&&(i[l]=c)}),e[s]=void 0,i}}return r};return n(t,0)},zte=eo("AsyncFunction"),Ite=t=>t&&(Ap(t)||wi(t))&&wi(t.then)&&wi(t.catch),CI=((t,e)=>t?setImmediate:e?((n,r)=>($u.addEventListener("message",({source:s,data:i})=>{s===$u&&i===n&&r.length&&r.shift()()},!1),s=>{r.push(s),$u.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",wi($u.postMessage)),Lte=typeof queueMicrotask<"u"?queueMicrotask.bind($u):typeof process<"u"&&process.nextTick||CI,Bte=t=>t!=null&&wi(t[Hy]),je={isArray:xf,isArrayBuffer:SI,isBuffer:Mp,isFormData:dte,isArrayBufferView:nte,isString:rte,isNumber:kI,isBoolean:ste,isObject:Ap,isPlainObject:Z1,isEmptyObject:ite,isReadableStream:fte,isRequest:mte,isResponse:pte,isHeaders:gte,isUndefined:Wh,isDate:ate,isFile:ote,isBlob:lte,isRegExp:Ete,isFunction:wi,isStream:ute,isURLSearchParams:hte,isTypedArray:Ote,isFileList:cte,forEach:Rp,merge:ek,extend:vte,trim:xte,stripBOM:yte,inherits:bte,toFlatObject:wte,kindOf:Qy,kindOfTest:eo,endsWith:Ste,toArray:kte,forEachEntry:jte,matchAll:Nte,isHTMLForm:Cte,hasOwnProperty:k9,hasOwnProp:k9,reduceDescriptors:NI,freezeMethods:_te,toObjectSet:Mte,toCamelCase:Tte,noop:Ate,toFiniteNumber:Rte,findKey:OI,global:$u,isContextDefined:jI,isSpecCompliantForm:Dte,toJSONObject:Pte,isAsyncFn:zte,isThenable:Ite,setImmediate:CI,asap:Lte,isIterable:Bte};function Xt(t,e,n,r,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=t,this.name="AxiosError",e&&(this.code=e),n&&(this.config=n),r&&(this.request=r),s&&(this.response=s,this.status=s.status?s.status:null)}je.inherits(Xt,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:je.toJSONObject(this.config),code:this.code,status:this.status}}});const TI=Xt.prototype,EI={};["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(t=>{EI[t]={value:t}});Object.defineProperties(Xt,EI);Object.defineProperty(TI,"isAxiosError",{value:!0});Xt.from=(t,e,n,r,s,i)=>{const a=Object.create(TI);je.toFlatObject(t,a,function(h){return h!==Error.prototype},d=>d!=="isAxiosError");const l=t&&t.message?t.message:"Error",c=e==null&&t?t.code:e;return Xt.call(a,l,c,n,r,s),t&&a.cause==null&&Object.defineProperty(a,"cause",{value:t,configurable:!0}),a.name=t&&t.name||"Error",i&&Object.assign(a,i),a};const Fte=null;function tk(t){return je.isPlainObject(t)||je.isArray(t)}function _I(t){return je.endsWith(t,"[]")?t.slice(0,-2):t}function O9(t,e,n){return t?t.concat(e).map(function(s,i){return s=_I(s),!n&&i?"["+s+"]":s}).join(n?".":""):e}function qte(t){return je.isArray(t)&&!t.some(tk)}const $te=je.toFlatObject(je,{},null,function(e){return/^is[A-Z]/.test(e)});function Uy(t,e,n){if(!je.isObject(t))throw new TypeError("target must be an object");e=e||new FormData,n=je.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(w,S){return!je.isUndefined(S[w])});const r=n.metaTokens,s=n.visitor||h,i=n.dots,a=n.indexes,c=(n.Blob||typeof Blob<"u"&&Blob)&&je.isSpecCompliantForm(e);if(!je.isFunction(s))throw new TypeError("visitor must be a function");function d(y){if(y===null)return"";if(je.isDate(y))return y.toISOString();if(je.isBoolean(y))return y.toString();if(!c&&je.isBlob(y))throw new Xt("Blob is not supported. Use a Buffer instead.");return je.isArrayBuffer(y)||je.isTypedArray(y)?c&&typeof Blob=="function"?new Blob([y]):Buffer.from(y):y}function h(y,w,S){let k=y;if(y&&!S&&typeof y=="object"){if(je.endsWith(w,"{}"))w=r?w:w.slice(0,-2),y=JSON.stringify(y);else if(je.isArray(y)&&qte(y)||(je.isFileList(y)||je.endsWith(w,"[]"))&&(k=je.toArray(y)))return w=_I(w),k.forEach(function(N,T){!(je.isUndefined(N)||N===null)&&e.append(a===!0?O9([w],T,i):a===null?w:w+"[]",d(N))}),!1}return tk(y)?!0:(e.append(O9(S,w,i),d(y)),!1)}const m=[],g=Object.assign($te,{defaultVisitor:h,convertValue:d,isVisitable:tk});function x(y,w){if(!je.isUndefined(y)){if(m.indexOf(y)!==-1)throw Error("Circular reference detected in "+w.join("."));m.push(y),je.forEach(y,function(k,j){(!(je.isUndefined(k)||k===null)&&s.call(e,k,je.isString(j)?j.trim():j,w,g))===!0&&x(k,w?w.concat(j):[j])}),m.pop()}}if(!je.isObject(t))throw new TypeError("data must be an object");return x(t),e}function j9(t){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,function(r){return e[r]})}function _j(t,e){this._pairs=[],t&&Uy(t,this,e)}const MI=_j.prototype;MI.append=function(e,n){this._pairs.push([e,n])};MI.toString=function(e){const n=e?function(r){return e.call(this,r,j9)}:j9;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function Hte(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function AI(t,e,n){if(!e)return t;const r=n&&n.encode||Hte;je.isFunction(n)&&(n={serialize:n});const s=n&&n.serialize;let i;if(s?i=s(e,n):i=je.isURLSearchParams(e)?e.toString():new _j(e,n).toString(r),i){const a=t.indexOf("#");a!==-1&&(t=t.slice(0,a)),t+=(t.indexOf("?")===-1?"?":"&")+i}return t}class N9{constructor(){this.handlers=[]}use(e,n,r){return this.handlers.push({fulfilled:e,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){je.forEach(this.handlers,function(r){r!==null&&e(r)})}}const RI={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Qte=typeof URLSearchParams<"u"?URLSearchParams:_j,Vte=typeof FormData<"u"?FormData:null,Ute=typeof Blob<"u"?Blob:null,Wte={isBrowser:!0,classes:{URLSearchParams:Qte,FormData:Vte,Blob:Ute},protocols:["http","https","file","blob","url","data"]},Mj=typeof window<"u"&&typeof document<"u",nk=typeof navigator=="object"&&navigator||void 0,Gte=Mj&&(!nk||["ReactNative","NativeScript","NS"].indexOf(nk.product)<0),Xte=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",Yte=Mj&&window.location.href||"http://localhost",Kte=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Mj,hasStandardBrowserEnv:Gte,hasStandardBrowserWebWorkerEnv:Xte,navigator:nk,origin:Yte},Symbol.toStringTag,{value:"Module"})),$s={...Kte,...Wte};function Zte(t,e){return Uy(t,new $s.classes.URLSearchParams,{visitor:function(n,r,s,i){return $s.isNode&&je.isBuffer(n)?(this.append(r,n.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)},...e})}function Jte(t){return je.matchAll(/\w+|\[(\w*)]/g,t).map(e=>e[0]==="[]"?"":e[1]||e[0])}function ene(t){const e={},n=Object.keys(t);let r;const s=n.length;let i;for(r=0;r=n.length;return a=!a&&je.isArray(s)?s.length:a,c?(je.hasOwnProp(s,a)?s[a]=[s[a],r]:s[a]=r,!l):((!s[a]||!je.isObject(s[a]))&&(s[a]=[]),e(n,r,s[a],i)&&je.isArray(s[a])&&(s[a]=ene(s[a])),!l)}if(je.isFormData(t)&&je.isFunction(t.entries)){const n={};return je.forEachEntry(t,(r,s)=>{e(Jte(r),s,n,0)}),n}return null}function tne(t,e,n){if(je.isString(t))try{return(e||JSON.parse)(t),je.trim(t)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(t)}const Dp={transitional:RI,adapter:["xhr","http","fetch"],transformRequest:[function(e,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,i=je.isObject(e);if(i&&je.isHTMLForm(e)&&(e=new FormData(e)),je.isFormData(e))return s?JSON.stringify(DI(e)):e;if(je.isArrayBuffer(e)||je.isBuffer(e)||je.isStream(e)||je.isFile(e)||je.isBlob(e)||je.isReadableStream(e))return e;if(je.isArrayBufferView(e))return e.buffer;if(je.isURLSearchParams(e))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let l;if(i){if(r.indexOf("application/x-www-form-urlencoded")>-1)return Zte(e,this.formSerializer).toString();if((l=je.isFileList(e))||r.indexOf("multipart/form-data")>-1){const c=this.env&&this.env.FormData;return Uy(l?{"files[]":e}:e,c&&new c,this.formSerializer)}}return i||s?(n.setContentType("application/json",!1),tne(e)):e}],transformResponse:[function(e){const n=this.transitional||Dp.transitional,r=n&&n.forcedJSONParsing,s=this.responseType==="json";if(je.isResponse(e)||je.isReadableStream(e))return e;if(e&&je.isString(e)&&(r&&!this.responseType||s)){const a=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(e,this.parseReviver)}catch(l){if(a)throw l.name==="SyntaxError"?Xt.from(l,Xt.ERR_BAD_RESPONSE,this,null,this.response):l}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:$s.classes.FormData,Blob:$s.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};je.forEach(["delete","get","head","post","put","patch"],t=>{Dp.headers[t]={}});const nne=je.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"]),rne=t=>{const e={};let n,r,s;return t&&t.split(` +`).forEach(function(a){s=a.indexOf(":"),n=a.substring(0,s).trim().toLowerCase(),r=a.substring(s+1).trim(),!(!n||e[n]&&nne[n])&&(n==="set-cookie"?e[n]?e[n].push(r):e[n]=[r]:e[n]=e[n]?e[n]+", "+r:r)}),e},C9=Symbol("internals");function Dm(t){return t&&String(t).trim().toLowerCase()}function J1(t){return t===!1||t==null?t:je.isArray(t)?t.map(J1):String(t)}function sne(t){const e=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(t);)e[r[1]]=r[2];return e}const ine=t=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function x4(t,e,n,r,s){if(je.isFunction(r))return r.call(this,e,n);if(s&&(e=n),!!je.isString(e)){if(je.isString(r))return e.indexOf(r)!==-1;if(je.isRegExp(r))return r.test(e)}}function ane(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,n,r)=>n.toUpperCase()+r)}function one(t,e){const n=je.toCamelCase(" "+e);["get","set","has"].forEach(r=>{Object.defineProperty(t,r+n,{value:function(s,i,a){return this[r].call(this,e,s,i,a)},configurable:!0})})}let Si=class{constructor(e){e&&this.set(e)}set(e,n,r){const s=this;function i(l,c,d){const h=Dm(c);if(!h)throw new Error("header name must be a non-empty string");const m=je.findKey(s,h);(!m||s[m]===void 0||d===!0||d===void 0&&s[m]!==!1)&&(s[m||c]=J1(l))}const a=(l,c)=>je.forEach(l,(d,h)=>i(d,h,c));if(je.isPlainObject(e)||e instanceof this.constructor)a(e,n);else if(je.isString(e)&&(e=e.trim())&&!ine(e))a(rne(e),n);else if(je.isObject(e)&&je.isIterable(e)){let l={},c,d;for(const h of e){if(!je.isArray(h))throw TypeError("Object iterator must return a key-value pair");l[d=h[0]]=(c=l[d])?je.isArray(c)?[...c,h[1]]:[c,h[1]]:h[1]}a(l,n)}else e!=null&&i(n,e,r);return this}get(e,n){if(e=Dm(e),e){const r=je.findKey(this,e);if(r){const s=this[r];if(!n)return s;if(n===!0)return sne(s);if(je.isFunction(n))return n.call(this,s,r);if(je.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,n){if(e=Dm(e),e){const r=je.findKey(this,e);return!!(r&&this[r]!==void 0&&(!n||x4(this,this[r],r,n)))}return!1}delete(e,n){const r=this;let s=!1;function i(a){if(a=Dm(a),a){const l=je.findKey(r,a);l&&(!n||x4(r,r[l],l,n))&&(delete r[l],s=!0)}}return je.isArray(e)?e.forEach(i):i(e),s}clear(e){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const i=n[r];(!e||x4(this,this[i],i,e,!0))&&(delete this[i],s=!0)}return s}normalize(e){const n=this,r={};return je.forEach(this,(s,i)=>{const a=je.findKey(r,i);if(a){n[a]=J1(s),delete n[i];return}const l=e?ane(i):String(i).trim();l!==i&&delete n[i],n[l]=J1(s),r[l]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const n=Object.create(null);return je.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=e&&je.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,n])=>e+": "+n).join(` +`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...n){const r=new this(e);return n.forEach(s=>r.set(s)),r}static accessor(e){const r=(this[C9]=this[C9]={accessors:{}}).accessors,s=this.prototype;function i(a){const l=Dm(a);r[l]||(one(s,a),r[l]=!0)}return je.isArray(e)?e.forEach(i):i(e),this}};Si.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);je.reduceDescriptors(Si.prototype,({value:t},e)=>{let n=e[0].toUpperCase()+e.slice(1);return{get:()=>t,set(r){this[n]=r}}});je.freezeMethods(Si);function v4(t,e){const n=this||Dp,r=e||n,s=Si.from(r.headers);let i=r.data;return je.forEach(t,function(l){i=l.call(n,i,s.normalize(),e?e.status:void 0)}),s.normalize(),i}function PI(t){return!!(t&&t.__CANCEL__)}function vf(t,e,n){Xt.call(this,t??"canceled",Xt.ERR_CANCELED,e,n),this.name="CanceledError"}je.inherits(vf,Xt,{__CANCEL__:!0});function zI(t,e,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?t(n):e(new Xt("Request failed with status code "+n.status,[Xt.ERR_BAD_REQUEST,Xt.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function lne(t){const e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return e&&e[1]||""}function cne(t,e){t=t||10;const n=new Array(t),r=new Array(t);let s=0,i=0,a;return e=e!==void 0?e:1e3,function(c){const d=Date.now(),h=r[i];a||(a=d),n[s]=c,r[s]=d;let m=i,g=0;for(;m!==s;)g+=n[m++],m=m%t;if(s=(s+1)%t,s===i&&(i=(i+1)%t),d-a{n=h,s=null,i&&(clearTimeout(i),i=null),t(...d)};return[(...d)=>{const h=Date.now(),m=h-n;m>=r?a(d,h):(s=d,i||(i=setTimeout(()=>{i=null,a(s)},r-m)))},()=>s&&a(s)]}const Mv=(t,e,n=3)=>{let r=0;const s=cne(50,250);return une(i=>{const a=i.loaded,l=i.lengthComputable?i.total:void 0,c=a-r,d=s(c),h=a<=l;r=a;const m={loaded:a,total:l,progress:l?a/l:void 0,bytes:c,rate:d||void 0,estimated:d&&l&&h?(l-a)/d:void 0,event:i,lengthComputable:l!=null,[e?"download":"upload"]:!0};t(m)},n)},T9=(t,e)=>{const n=t!=null;return[r=>e[0]({lengthComputable:n,total:t,loaded:r}),e[1]]},E9=t=>(...e)=>je.asap(()=>t(...e)),dne=$s.hasStandardBrowserEnv?((t,e)=>n=>(n=new URL(n,$s.origin),t.protocol===n.protocol&&t.host===n.host&&(e||t.port===n.port)))(new URL($s.origin),$s.navigator&&/(msie|trident)/i.test($s.navigator.userAgent)):()=>!0,hne=$s.hasStandardBrowserEnv?{write(t,e,n,r,s,i,a){if(typeof document>"u")return;const l=[`${t}=${encodeURIComponent(e)}`];je.isNumber(n)&&l.push(`expires=${new Date(n).toUTCString()}`),je.isString(r)&&l.push(`path=${r}`),je.isString(s)&&l.push(`domain=${s}`),i===!0&&l.push("secure"),je.isString(a)&&l.push(`SameSite=${a}`),document.cookie=l.join("; ")},read(t){if(typeof document>"u")return null;const e=document.cookie.match(new RegExp("(?:^|; )"+t+"=([^;]*)"));return e?decodeURIComponent(e[1]):null},remove(t){this.write(t,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function fne(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}function mne(t,e){return e?t.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):t}function II(t,e,n){let r=!fne(e);return t&&(r||n==!1)?mne(t,e):e}const _9=t=>t instanceof Si?{...t}:t;function rd(t,e){e=e||{};const n={};function r(d,h,m,g){return je.isPlainObject(d)&&je.isPlainObject(h)?je.merge.call({caseless:g},d,h):je.isPlainObject(h)?je.merge({},h):je.isArray(h)?h.slice():h}function s(d,h,m,g){if(je.isUndefined(h)){if(!je.isUndefined(d))return r(void 0,d,m,g)}else return r(d,h,m,g)}function i(d,h){if(!je.isUndefined(h))return r(void 0,h)}function a(d,h){if(je.isUndefined(h)){if(!je.isUndefined(d))return r(void 0,d)}else return r(void 0,h)}function l(d,h,m){if(m in e)return r(d,h);if(m in t)return r(void 0,d)}const c={url:i,method:i,data:i,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:l,headers:(d,h,m)=>s(_9(d),_9(h),m,!0)};return je.forEach(Object.keys({...t,...e}),function(h){const m=c[h]||s,g=m(t[h],e[h],h);je.isUndefined(g)&&m!==l||(n[h]=g)}),n}const LI=t=>{const e=rd({},t);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:i,headers:a,auth:l}=e;if(e.headers=a=Si.from(a),e.url=AI(II(e.baseURL,e.url,e.allowAbsoluteUrls),t.params,t.paramsSerializer),l&&a.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):""))),je.isFormData(n)){if($s.hasStandardBrowserEnv||$s.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if(je.isFunction(n.getHeaders)){const c=n.getHeaders(),d=["content-type","content-length"];Object.entries(c).forEach(([h,m])=>{d.includes(h.toLowerCase())&&a.set(h,m)})}}if($s.hasStandardBrowserEnv&&(r&&je.isFunction(r)&&(r=r(e)),r||r!==!1&&dne(e.url))){const c=s&&i&&hne.read(i);c&&a.set(s,c)}return e},pne=typeof XMLHttpRequest<"u",gne=pne&&function(t){return new Promise(function(n,r){const s=LI(t);let i=s.data;const a=Si.from(s.headers).normalize();let{responseType:l,onUploadProgress:c,onDownloadProgress:d}=s,h,m,g,x,y;function w(){x&&x(),y&&y(),s.cancelToken&&s.cancelToken.unsubscribe(h),s.signal&&s.signal.removeEventListener("abort",h)}let S=new XMLHttpRequest;S.open(s.method.toUpperCase(),s.url,!0),S.timeout=s.timeout;function k(){if(!S)return;const N=Si.from("getAllResponseHeaders"in S&&S.getAllResponseHeaders()),E={data:!l||l==="text"||l==="json"?S.responseText:S.response,status:S.status,statusText:S.statusText,headers:N,config:t,request:S};zI(function(M){n(M),w()},function(M){r(M),w()},E),S=null}"onloadend"in S?S.onloadend=k:S.onreadystatechange=function(){!S||S.readyState!==4||S.status===0&&!(S.responseURL&&S.responseURL.indexOf("file:")===0)||setTimeout(k)},S.onabort=function(){S&&(r(new Xt("Request aborted",Xt.ECONNABORTED,t,S)),S=null)},S.onerror=function(T){const E=T&&T.message?T.message:"Network Error",_=new Xt(E,Xt.ERR_NETWORK,t,S);_.event=T||null,r(_),S=null},S.ontimeout=function(){let T=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const E=s.transitional||RI;s.timeoutErrorMessage&&(T=s.timeoutErrorMessage),r(new Xt(T,E.clarifyTimeoutError?Xt.ETIMEDOUT:Xt.ECONNABORTED,t,S)),S=null},i===void 0&&a.setContentType(null),"setRequestHeader"in S&&je.forEach(a.toJSON(),function(T,E){S.setRequestHeader(E,T)}),je.isUndefined(s.withCredentials)||(S.withCredentials=!!s.withCredentials),l&&l!=="json"&&(S.responseType=s.responseType),d&&([g,y]=Mv(d,!0),S.addEventListener("progress",g)),c&&S.upload&&([m,x]=Mv(c),S.upload.addEventListener("progress",m),S.upload.addEventListener("loadend",x)),(s.cancelToken||s.signal)&&(h=N=>{S&&(r(!N||N.type?new vf(null,t,S):N),S.abort(),S=null)},s.cancelToken&&s.cancelToken.subscribe(h),s.signal&&(s.signal.aborted?h():s.signal.addEventListener("abort",h)));const j=lne(s.url);if(j&&$s.protocols.indexOf(j)===-1){r(new Xt("Unsupported protocol "+j+":",Xt.ERR_BAD_REQUEST,t));return}S.send(i||null)})},xne=(t,e)=>{const{length:n}=t=t?t.filter(Boolean):[];if(e||n){let r=new AbortController,s;const i=function(d){if(!s){s=!0,l();const h=d instanceof Error?d:this.reason;r.abort(h instanceof Xt?h:new vf(h instanceof Error?h.message:h))}};let a=e&&setTimeout(()=>{a=null,i(new Xt(`timeout ${e} of ms exceeded`,Xt.ETIMEDOUT))},e);const l=()=>{t&&(a&&clearTimeout(a),a=null,t.forEach(d=>{d.unsubscribe?d.unsubscribe(i):d.removeEventListener("abort",i)}),t=null)};t.forEach(d=>d.addEventListener("abort",i));const{signal:c}=r;return c.unsubscribe=()=>je.asap(l),c}},vne=function*(t,e){let n=t.byteLength;if(n{const s=yne(t,e);let i=0,a,l=c=>{a||(a=!0,r&&r(c))};return new ReadableStream({async pull(c){try{const{done:d,value:h}=await s.next();if(d){l(),c.close();return}let m=h.byteLength;if(n){let g=i+=m;n(g)}c.enqueue(new Uint8Array(h))}catch(d){throw l(d),d}},cancel(c){return l(c),s.return()}},{highWaterMark:2})},A9=64*1024,{isFunction:Wx}=je,wne=(({Request:t,Response:e})=>({Request:t,Response:e}))(je.global),{ReadableStream:R9,TextEncoder:D9}=je.global,P9=(t,...e)=>{try{return!!t(...e)}catch{return!1}},Sne=t=>{t=je.merge.call({skipUndefined:!0},wne,t);const{fetch:e,Request:n,Response:r}=t,s=e?Wx(e):typeof fetch=="function",i=Wx(n),a=Wx(r);if(!s)return!1;const l=s&&Wx(R9),c=s&&(typeof D9=="function"?(y=>w=>y.encode(w))(new D9):async y=>new Uint8Array(await new n(y).arrayBuffer())),d=i&&l&&P9(()=>{let y=!1;const w=new n($s.origin,{body:new R9,method:"POST",get duplex(){return y=!0,"half"}}).headers.has("Content-Type");return y&&!w}),h=a&&l&&P9(()=>je.isReadableStream(new r("").body)),m={stream:h&&(y=>y.body)};s&&["text","arrayBuffer","blob","formData","stream"].forEach(y=>{!m[y]&&(m[y]=(w,S)=>{let k=w&&w[y];if(k)return k.call(w);throw new Xt(`Response type '${y}' is not supported`,Xt.ERR_NOT_SUPPORT,S)})});const g=async y=>{if(y==null)return 0;if(je.isBlob(y))return y.size;if(je.isSpecCompliantForm(y))return(await new n($s.origin,{method:"POST",body:y}).arrayBuffer()).byteLength;if(je.isArrayBufferView(y)||je.isArrayBuffer(y))return y.byteLength;if(je.isURLSearchParams(y)&&(y=y+""),je.isString(y))return(await c(y)).byteLength},x=async(y,w)=>{const S=je.toFiniteNumber(y.getContentLength());return S??g(w)};return async y=>{let{url:w,method:S,data:k,signal:j,cancelToken:N,timeout:T,onDownloadProgress:E,onUploadProgress:_,responseType:M,headers:I,withCredentials:P="same-origin",fetchOptions:L}=LI(y),H=e||fetch;M=M?(M+"").toLowerCase():"text";let U=xne([j,N&&N.toAbortSignal()],T),ee=null;const z=U&&U.unsubscribe&&(()=>{U.unsubscribe()});let Q;try{if(_&&d&&S!=="get"&&S!=="head"&&(Q=await x(I,k))!==0){let ie=new n(w,{method:"POST",body:k,duplex:"half"}),W;if(je.isFormData(k)&&(W=ie.headers.get("content-type"))&&I.setContentType(W),ie.body){const[q,V]=T9(Q,Mv(E9(_)));k=M9(ie.body,A9,q,V)}}je.isString(P)||(P=P?"include":"omit");const B=i&&"credentials"in n.prototype,X={...L,signal:U,method:S.toUpperCase(),headers:I.normalize().toJSON(),body:k,duplex:"half",credentials:B?P:void 0};ee=i&&new n(w,X);let J=await(i?H(ee,L):H(w,X));const G=h&&(M==="stream"||M==="response");if(h&&(E||G&&z)){const ie={};["status","statusText","headers"].forEach(te=>{ie[te]=J[te]});const W=je.toFiniteNumber(J.headers.get("content-length")),[q,V]=E&&T9(W,Mv(E9(E),!0))||[];J=new r(M9(J.body,A9,q,()=>{V&&V(),z&&z()}),ie)}M=M||"text";let R=await m[je.findKey(m,M)||"text"](J,y);return!G&&z&&z(),await new Promise((ie,W)=>{zI(ie,W,{data:R,headers:Si.from(J.headers),status:J.status,statusText:J.statusText,config:y,request:ee})})}catch(B){throw z&&z(),B&&B.name==="TypeError"&&/Load failed|fetch/i.test(B.message)?Object.assign(new Xt("Network Error",Xt.ERR_NETWORK,y,ee),{cause:B.cause||B}):Xt.from(B,B&&B.code,y,ee)}}},kne=new Map,BI=t=>{let e=t&&t.env||{};const{fetch:n,Request:r,Response:s}=e,i=[r,s,n];let a=i.length,l=a,c,d,h=kne;for(;l--;)c=i[l],d=h.get(c),d===void 0&&h.set(c,d=l?new Map:Sne(e)),h=d;return d};BI();const Aj={http:Fte,xhr:gne,fetch:{get:BI}};je.forEach(Aj,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{value:e})}catch{}Object.defineProperty(t,"adapterName",{value:e})}});const z9=t=>`- ${t}`,One=t=>je.isFunction(t)||t===null||t===!1;function jne(t,e){t=je.isArray(t)?t:[t];const{length:n}=t;let r,s;const i={};for(let a=0;a`adapter ${c} `+(d===!1?"is not supported by the environment":"is not available in the build"));let l=n?a.length>1?`since : +`+a.map(z9).join(` +`):" "+z9(a[0]):"as no adapter specified";throw new Xt("There is no suitable adapter to dispatch the request "+l,"ERR_NOT_SUPPORT")}return s}const FI={getAdapter:jne,adapters:Aj};function y4(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new vf(null,t)}function I9(t){return y4(t),t.headers=Si.from(t.headers),t.data=v4.call(t,t.transformRequest),["post","put","patch"].indexOf(t.method)!==-1&&t.headers.setContentType("application/x-www-form-urlencoded",!1),FI.getAdapter(t.adapter||Dp.adapter,t)(t).then(function(r){return y4(t),r.data=v4.call(t,t.transformResponse,r),r.headers=Si.from(r.headers),r},function(r){return PI(r)||(y4(t),r&&r.response&&(r.response.data=v4.call(t,t.transformResponse,r.response),r.response.headers=Si.from(r.response.headers))),Promise.reject(r)})}const qI="1.13.2",Wy={};["object","boolean","number","function","string","symbol"].forEach((t,e)=>{Wy[t]=function(r){return typeof r===t||"a"+(e<1?"n ":" ")+t}});const L9={};Wy.transitional=function(e,n,r){function s(i,a){return"[Axios v"+qI+"] Transitional option '"+i+"'"+a+(r?". "+r:"")}return(i,a,l)=>{if(e===!1)throw new Xt(s(a," has been removed"+(n?" in "+n:"")),Xt.ERR_DEPRECATED);return n&&!L9[a]&&(L9[a]=!0,console.warn(s(a," has been deprecated since v"+n+" and will be removed in the near future"))),e?e(i,a,l):!0}};Wy.spelling=function(e){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${e}`),!0)};function Nne(t,e,n){if(typeof t!="object")throw new Xt("options must be an object",Xt.ERR_BAD_OPTION_VALUE);const r=Object.keys(t);let s=r.length;for(;s-- >0;){const i=r[s],a=e[i];if(a){const l=t[i],c=l===void 0||a(l,i,t);if(c!==!0)throw new Xt("option "+i+" must be "+c,Xt.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new Xt("Unknown option "+i,Xt.ERR_BAD_OPTION)}}const ev={assertOptions:Nne,validators:Wy},uo=ev.validators;let Zu=class{constructor(e){this.defaults=e||{},this.interceptors={request:new N9,response:new N9}}async request(e,n){try{return await this._request(e,n)}catch(r){if(r instanceof Error){let s={};Error.captureStackTrace?Error.captureStackTrace(s):s=new Error;const i=s.stack?s.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(e,n){typeof e=="string"?(n=n||{},n.url=e):n=e||{},n=rd(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:i}=n;r!==void 0&&ev.assertOptions(r,{silentJSONParsing:uo.transitional(uo.boolean),forcedJSONParsing:uo.transitional(uo.boolean),clarifyTimeoutError:uo.transitional(uo.boolean)},!1),s!=null&&(je.isFunction(s)?n.paramsSerializer={serialize:s}:ev.assertOptions(s,{encode:uo.function,serialize:uo.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),ev.assertOptions(n,{baseUrl:uo.spelling("baseURL"),withXsrfToken:uo.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let a=i&&je.merge(i.common,i[n.method]);i&&je.forEach(["delete","get","head","post","put","patch","common"],y=>{delete i[y]}),n.headers=Si.concat(a,i);const l=[];let c=!0;this.interceptors.request.forEach(function(w){typeof w.runWhen=="function"&&w.runWhen(n)===!1||(c=c&&w.synchronous,l.unshift(w.fulfilled,w.rejected))});const d=[];this.interceptors.response.forEach(function(w){d.push(w.fulfilled,w.rejected)});let h,m=0,g;if(!c){const y=[I9.bind(this),void 0];for(y.unshift(...l),y.push(...d),g=y.length,h=Promise.resolve(n);m{if(!r._listeners)return;let i=r._listeners.length;for(;i-- >0;)r._listeners[i](s);r._listeners=null}),this.promise.then=s=>{let i;const a=new Promise(l=>{r.subscribe(l),i=l}).then(s);return a.cancel=function(){r.unsubscribe(i)},a},e(function(i,a,l){r.reason||(r.reason=new vf(i,a,l),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const n=this._listeners.indexOf(e);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const e=new AbortController,n=r=>{e.abort(r)};return this.subscribe(n),e.signal.unsubscribe=()=>this.unsubscribe(n),e.signal}static source(){let e;return{token:new $I(function(s){e=s}),cancel:e}}};function Tne(t){return function(n){return t.apply(null,n)}}function Ene(t){return je.isObject(t)&&t.isAxiosError===!0}const rk={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,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(rk).forEach(([t,e])=>{rk[e]=t});function HI(t){const e=new Zu(t),n=bI(Zu.prototype.request,e);return je.extend(n,Zu.prototype,e,{allOwnKeys:!0}),je.extend(n,e,null,{allOwnKeys:!0}),n.create=function(s){return HI(rd(t,s))},n}const Br=HI(Dp);Br.Axios=Zu;Br.CanceledError=vf;Br.CancelToken=Cne;Br.isCancel=PI;Br.VERSION=qI;Br.toFormData=Uy;Br.AxiosError=Xt;Br.Cancel=Br.CanceledError;Br.all=function(e){return Promise.all(e)};Br.spread=Tne;Br.isAxiosError=Ene;Br.mergeConfig=rd;Br.AxiosHeaders=Si;Br.formToJSON=t=>DI(je.isHTMLForm(t)?new FormData(t):t);Br.getAdapter=FI.getAdapter;Br.HttpStatusCode=rk;Br.default=Br;const{Axios:wDe,AxiosError:SDe,CanceledError:kDe,isCancel:ODe,CancelToken:jDe,VERSION:NDe,all:CDe,Cancel:TDe,isAxiosError:EDe,spread:_De,toFormData:MDe,AxiosHeaders:ADe,HttpStatusCode:RDe,formToJSON:DDe,getAdapter:PDe,mergeConfig:zDe}=Br,_ne=(t,e)=>{const n=new Array(t.length+e.length);for(let r=0;r({classGroupId:t,validator:e}),QI=(t=new Map,e=null,n)=>({nextPart:t,validators:e,classGroupId:n}),Av="-",B9=[],Ane="arbitrary..",Rne=t=>{const e=Pne(t),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=t;return{getClassGroupId:a=>{if(a.startsWith("[")&&a.endsWith("]"))return Dne(a);const l=a.split(Av),c=l[0]===""&&l.length>1?1:0;return VI(l,c,e)},getConflictingClassGroupIds:(a,l)=>{if(l){const c=r[a],d=n[a];return c?d?_ne(d,c):c:d||B9}return n[a]||B9}}},VI=(t,e,n)=>{if(t.length-e===0)return n.classGroupId;const s=t[e],i=n.nextPart.get(s);if(i){const d=VI(t,e+1,i);if(d)return d}const a=n.validators;if(a===null)return;const l=e===0?t.join(Av):t.slice(e).join(Av),c=a.length;for(let d=0;dt.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const e=t.slice(1,-1),n=e.indexOf(":"),r=e.slice(0,n);return r?Ane+r:void 0})(),Pne=t=>{const{theme:e,classGroups:n}=t;return zne(n,e)},zne=(t,e)=>{const n=QI();for(const r in t){const s=t[r];Rj(s,n,r,e)}return n},Rj=(t,e,n,r)=>{const s=t.length;for(let i=0;i{if(typeof t=="string"){Lne(t,e,n);return}if(typeof t=="function"){Bne(t,e,n,r);return}Fne(t,e,n,r)},Lne=(t,e,n)=>{const r=t===""?e:UI(e,t);r.classGroupId=n},Bne=(t,e,n,r)=>{if(qne(t)){Rj(t(r),e,n,r);return}e.validators===null&&(e.validators=[]),e.validators.push(Mne(n,t))},Fne=(t,e,n,r)=>{const s=Object.entries(t),i=s.length;for(let a=0;a{let n=t;const r=e.split(Av),s=r.length;for(let i=0;i"isThemeGetter"in t&&t.isThemeGetter===!0,$ne=t=>{if(t<1)return{get:()=>{},set:()=>{}};let e=0,n=Object.create(null),r=Object.create(null);const s=(i,a)=>{n[i]=a,e++,e>t&&(e=0,r=n,n=Object.create(null))};return{get(i){let a=n[i];if(a!==void 0)return a;if((a=r[i])!==void 0)return s(i,a),a},set(i,a){i in n?n[i]=a:s(i,a)}}},sk="!",F9=":",Hne=[],q9=(t,e,n,r,s)=>({modifiers:t,hasImportantModifier:e,baseClassName:n,maybePostfixModifierPosition:r,isExternal:s}),Qne=t=>{const{prefix:e,experimentalParseClassName:n}=t;let r=s=>{const i=[];let a=0,l=0,c=0,d;const h=s.length;for(let w=0;wc?d-c:void 0;return q9(i,x,g,y)};if(e){const s=e+F9,i=r;r=a=>a.startsWith(s)?i(a.slice(s.length)):q9(Hne,!1,a,void 0,!0)}if(n){const s=r;r=i=>n({className:i,parseClassName:s})}return r},Vne=t=>{const e=new Map;return t.orderSensitiveModifiers.forEach((n,r)=>{e.set(n,1e6+r)}),n=>{const r=[];let s=[];for(let i=0;i0&&(s.sort(),r.push(...s),s=[]),r.push(a)):s.push(a)}return s.length>0&&(s.sort(),r.push(...s)),r}},Une=t=>({cache:$ne(t.cacheSize),parseClassName:Qne(t),sortModifiers:Vne(t),...Rne(t)}),Wne=/\s+/,Gne=(t,e)=>{const{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:s,sortModifiers:i}=e,a=[],l=t.trim().split(Wne);let c="";for(let d=l.length-1;d>=0;d-=1){const h=l[d],{isExternal:m,modifiers:g,hasImportantModifier:x,baseClassName:y,maybePostfixModifierPosition:w}=n(h);if(m){c=h+(c.length>0?" "+c:c);continue}let S=!!w,k=r(S?y.substring(0,w):y);if(!k){if(!S){c=h+(c.length>0?" "+c:c);continue}if(k=r(y),!k){c=h+(c.length>0?" "+c:c);continue}S=!1}const j=g.length===0?"":g.length===1?g[0]:i(g).join(":"),N=x?j+sk:j,T=N+k;if(a.indexOf(T)>-1)continue;a.push(T);const E=s(k,S);for(let _=0;_0?" "+c:c)}return c},Xne=(...t)=>{let e=0,n,r,s="";for(;e{if(typeof t=="string")return t;let e,n="";for(let r=0;r{let n,r,s,i;const a=c=>{const d=e.reduce((h,m)=>m(h),t());return n=Une(d),r=n.cache.get,s=n.cache.set,i=l,l(c)},l=c=>{const d=r(c);if(d)return d;const h=Gne(c,n);return s(c,h),h};return i=a,(...c)=>i(Xne(...c))},Kne=[],ls=t=>{const e=n=>n[t]||Kne;return e.isThemeGetter=!0,e},GI=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,XI=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Zne=/^\d+\/\d+$/,Jne=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,ere=/\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$/,tre=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,nre=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,rre=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ih=t=>Zne.test(t),rn=t=>!!t&&!Number.isNaN(Number(t)),Oc=t=>!!t&&Number.isInteger(Number(t)),b4=t=>t.endsWith("%")&&rn(t.slice(0,-1)),gl=t=>Jne.test(t),sre=()=>!0,ire=t=>ere.test(t)&&!tre.test(t),YI=()=>!1,are=t=>nre.test(t),ore=t=>rre.test(t),lre=t=>!dt(t)&&!ht(t),cre=t=>yf(t,JI,YI),dt=t=>GI.test(t),Au=t=>yf(t,eL,ire),w4=t=>yf(t,mre,rn),$9=t=>yf(t,KI,YI),ure=t=>yf(t,ZI,ore),Gx=t=>yf(t,tL,are),ht=t=>XI.test(t),Pm=t=>bf(t,eL),dre=t=>bf(t,pre),H9=t=>bf(t,KI),hre=t=>bf(t,JI),fre=t=>bf(t,ZI),Xx=t=>bf(t,tL,!0),yf=(t,e,n)=>{const r=GI.exec(t);return r?r[1]?e(r[1]):n(r[2]):!1},bf=(t,e,n=!1)=>{const r=XI.exec(t);return r?r[1]?e(r[1]):n:!1},KI=t=>t==="position"||t==="percentage",ZI=t=>t==="image"||t==="url",JI=t=>t==="length"||t==="size"||t==="bg-size",eL=t=>t==="length",mre=t=>t==="number",pre=t=>t==="family-name",tL=t=>t==="shadow",gre=()=>{const t=ls("color"),e=ls("font"),n=ls("text"),r=ls("font-weight"),s=ls("tracking"),i=ls("leading"),a=ls("breakpoint"),l=ls("container"),c=ls("spacing"),d=ls("radius"),h=ls("shadow"),m=ls("inset-shadow"),g=ls("text-shadow"),x=ls("drop-shadow"),y=ls("blur"),w=ls("perspective"),S=ls("aspect"),k=ls("ease"),j=ls("animate"),N=()=>["auto","avoid","all","avoid-page","page","left","right","column"],T=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],E=()=>[...T(),ht,dt],_=()=>["auto","hidden","clip","visible","scroll"],M=()=>["auto","contain","none"],I=()=>[ht,dt,c],P=()=>[ih,"full","auto",...I()],L=()=>[Oc,"none","subgrid",ht,dt],H=()=>["auto",{span:["full",Oc,ht,dt]},Oc,ht,dt],U=()=>[Oc,"auto",ht,dt],ee=()=>["auto","min","max","fr",ht,dt],z=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],Q=()=>["start","end","center","stretch","center-safe","end-safe"],B=()=>["auto",...I()],X=()=>[ih,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...I()],J=()=>[t,ht,dt],G=()=>[...T(),H9,$9,{position:[ht,dt]}],R=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ie=()=>["auto","cover","contain",hre,cre,{size:[ht,dt]}],W=()=>[b4,Pm,Au],q=()=>["","none","full",d,ht,dt],V=()=>["",rn,Pm,Au],te=()=>["solid","dashed","dotted","double"],ne=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],K=()=>[rn,b4,H9,$9],se=()=>["","none",y,ht,dt],re=()=>["none",rn,ht,dt],oe=()=>["none",rn,ht,dt],Te=()=>[rn,ht,dt],We=()=>[ih,"full",...I()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[gl],breakpoint:[gl],color:[sre],container:[gl],"drop-shadow":[gl],ease:["in","out","in-out"],font:[lre],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[gl],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[gl],shadow:[gl],spacing:["px",rn],text:[gl],"text-shadow":[gl],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",ih,dt,ht,S]}],container:["container"],columns:[{columns:[rn,dt,ht,l]}],"break-after":[{"break-after":N()}],"break-before":[{"break-before":N()}],"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:E()}],overflow:[{overflow:_()}],"overflow-x":[{"overflow-x":_()}],"overflow-y":[{"overflow-y":_()}],overscroll:[{overscroll:M()}],"overscroll-x":[{"overscroll-x":M()}],"overscroll-y":[{"overscroll-y":M()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:P()}],"inset-x":[{"inset-x":P()}],"inset-y":[{"inset-y":P()}],start:[{start:P()}],end:[{end:P()}],top:[{top:P()}],right:[{right:P()}],bottom:[{bottom:P()}],left:[{left:P()}],visibility:["visible","invisible","collapse"],z:[{z:[Oc,"auto",ht,dt]}],basis:[{basis:[ih,"full","auto",l,...I()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[rn,ih,"auto","initial","none",dt]}],grow:[{grow:["",rn,ht,dt]}],shrink:[{shrink:["",rn,ht,dt]}],order:[{order:[Oc,"first","last","none",ht,dt]}],"grid-cols":[{"grid-cols":L()}],"col-start-end":[{col:H()}],"col-start":[{"col-start":U()}],"col-end":[{"col-end":U()}],"grid-rows":[{"grid-rows":L()}],"row-start-end":[{row:H()}],"row-start":[{"row-start":U()}],"row-end":[{"row-end":U()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":ee()}],"auto-rows":[{"auto-rows":ee()}],gap:[{gap:I()}],"gap-x":[{"gap-x":I()}],"gap-y":[{"gap-y":I()}],"justify-content":[{justify:[...z(),"normal"]}],"justify-items":[{"justify-items":[...Q(),"normal"]}],"justify-self":[{"justify-self":["auto",...Q()]}],"align-content":[{content:["normal",...z()]}],"align-items":[{items:[...Q(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...Q(),{baseline:["","last"]}]}],"place-content":[{"place-content":z()}],"place-items":[{"place-items":[...Q(),"baseline"]}],"place-self":[{"place-self":["auto",...Q()]}],p:[{p:I()}],px:[{px:I()}],py:[{py:I()}],ps:[{ps:I()}],pe:[{pe:I()}],pt:[{pt:I()}],pr:[{pr:I()}],pb:[{pb:I()}],pl:[{pl:I()}],m:[{m:B()}],mx:[{mx:B()}],my:[{my:B()}],ms:[{ms:B()}],me:[{me:B()}],mt:[{mt:B()}],mr:[{mr:B()}],mb:[{mb:B()}],ml:[{ml:B()}],"space-x":[{"space-x":I()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":I()}],"space-y-reverse":["space-y-reverse"],size:[{size:X()}],w:[{w:[l,"screen",...X()]}],"min-w":[{"min-w":[l,"screen","none",...X()]}],"max-w":[{"max-w":[l,"screen","none","prose",{screen:[a]},...X()]}],h:[{h:["screen","lh",...X()]}],"min-h":[{"min-h":["screen","lh","none",...X()]}],"max-h":[{"max-h":["screen","lh",...X()]}],"font-size":[{text:["base",n,Pm,Au]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,ht,w4]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",b4,dt]}],"font-family":[{font:[dre,dt,e]}],"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:[s,ht,dt]}],"line-clamp":[{"line-clamp":[rn,"none",ht,w4]}],leading:[{leading:[i,...I()]}],"list-image":[{"list-image":["none",ht,dt]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",ht,dt]}],"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:[...te(),"wavy"]}],"text-decoration-thickness":[{decoration:[rn,"from-font","auto",ht,Au]}],"text-decoration-color":[{decoration:J()}],"underline-offset":[{"underline-offset":[rn,"auto",ht,dt]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:I()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",ht,dt]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",ht,dt]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:G()}],"bg-repeat":[{bg:R()}],"bg-size":[{bg:ie()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Oc,ht,dt],radial:["",ht,dt],conic:[Oc,ht,dt]},fre,ure]}],"bg-color":[{bg:J()}],"gradient-from-pos":[{from:W()}],"gradient-via-pos":[{via:W()}],"gradient-to-pos":[{to:W()}],"gradient-from":[{from:J()}],"gradient-via":[{via:J()}],"gradient-to":[{to:J()}],rounded:[{rounded:q()}],"rounded-s":[{"rounded-s":q()}],"rounded-e":[{"rounded-e":q()}],"rounded-t":[{"rounded-t":q()}],"rounded-r":[{"rounded-r":q()}],"rounded-b":[{"rounded-b":q()}],"rounded-l":[{"rounded-l":q()}],"rounded-ss":[{"rounded-ss":q()}],"rounded-se":[{"rounded-se":q()}],"rounded-ee":[{"rounded-ee":q()}],"rounded-es":[{"rounded-es":q()}],"rounded-tl":[{"rounded-tl":q()}],"rounded-tr":[{"rounded-tr":q()}],"rounded-br":[{"rounded-br":q()}],"rounded-bl":[{"rounded-bl":q()}],"border-w":[{border:V()}],"border-w-x":[{"border-x":V()}],"border-w-y":[{"border-y":V()}],"border-w-s":[{"border-s":V()}],"border-w-e":[{"border-e":V()}],"border-w-t":[{"border-t":V()}],"border-w-r":[{"border-r":V()}],"border-w-b":[{"border-b":V()}],"border-w-l":[{"border-l":V()}],"divide-x":[{"divide-x":V()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":V()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...te(),"hidden","none"]}],"divide-style":[{divide:[...te(),"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:[...te(),"none","hidden"]}],"outline-offset":[{"outline-offset":[rn,ht,dt]}],"outline-w":[{outline:["",rn,Pm,Au]}],"outline-color":[{outline:J()}],shadow:[{shadow:["","none",h,Xx,Gx]}],"shadow-color":[{shadow:J()}],"inset-shadow":[{"inset-shadow":["none",m,Xx,Gx]}],"inset-shadow-color":[{"inset-shadow":J()}],"ring-w":[{ring:V()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:J()}],"ring-offset-w":[{"ring-offset":[rn,Au]}],"ring-offset-color":[{"ring-offset":J()}],"inset-ring-w":[{"inset-ring":V()}],"inset-ring-color":[{"inset-ring":J()}],"text-shadow":[{"text-shadow":["none",g,Xx,Gx]}],"text-shadow-color":[{"text-shadow":J()}],opacity:[{opacity:[rn,ht,dt]}],"mix-blend":[{"mix-blend":[...ne(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ne()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[rn]}],"mask-image-linear-from-pos":[{"mask-linear-from":K()}],"mask-image-linear-to-pos":[{"mask-linear-to":K()}],"mask-image-linear-from-color":[{"mask-linear-from":J()}],"mask-image-linear-to-color":[{"mask-linear-to":J()}],"mask-image-t-from-pos":[{"mask-t-from":K()}],"mask-image-t-to-pos":[{"mask-t-to":K()}],"mask-image-t-from-color":[{"mask-t-from":J()}],"mask-image-t-to-color":[{"mask-t-to":J()}],"mask-image-r-from-pos":[{"mask-r-from":K()}],"mask-image-r-to-pos":[{"mask-r-to":K()}],"mask-image-r-from-color":[{"mask-r-from":J()}],"mask-image-r-to-color":[{"mask-r-to":J()}],"mask-image-b-from-pos":[{"mask-b-from":K()}],"mask-image-b-to-pos":[{"mask-b-to":K()}],"mask-image-b-from-color":[{"mask-b-from":J()}],"mask-image-b-to-color":[{"mask-b-to":J()}],"mask-image-l-from-pos":[{"mask-l-from":K()}],"mask-image-l-to-pos":[{"mask-l-to":K()}],"mask-image-l-from-color":[{"mask-l-from":J()}],"mask-image-l-to-color":[{"mask-l-to":J()}],"mask-image-x-from-pos":[{"mask-x-from":K()}],"mask-image-x-to-pos":[{"mask-x-to":K()}],"mask-image-x-from-color":[{"mask-x-from":J()}],"mask-image-x-to-color":[{"mask-x-to":J()}],"mask-image-y-from-pos":[{"mask-y-from":K()}],"mask-image-y-to-pos":[{"mask-y-to":K()}],"mask-image-y-from-color":[{"mask-y-from":J()}],"mask-image-y-to-color":[{"mask-y-to":J()}],"mask-image-radial":[{"mask-radial":[ht,dt]}],"mask-image-radial-from-pos":[{"mask-radial-from":K()}],"mask-image-radial-to-pos":[{"mask-radial-to":K()}],"mask-image-radial-from-color":[{"mask-radial-from":J()}],"mask-image-radial-to-color":[{"mask-radial-to":J()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":T()}],"mask-image-conic-pos":[{"mask-conic":[rn]}],"mask-image-conic-from-pos":[{"mask-conic-from":K()}],"mask-image-conic-to-pos":[{"mask-conic-to":K()}],"mask-image-conic-from-color":[{"mask-conic-from":J()}],"mask-image-conic-to-color":[{"mask-conic-to":J()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:G()}],"mask-repeat":[{mask:R()}],"mask-size":[{mask:ie()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",ht,dt]}],filter:[{filter:["","none",ht,dt]}],blur:[{blur:se()}],brightness:[{brightness:[rn,ht,dt]}],contrast:[{contrast:[rn,ht,dt]}],"drop-shadow":[{"drop-shadow":["","none",x,Xx,Gx]}],"drop-shadow-color":[{"drop-shadow":J()}],grayscale:[{grayscale:["",rn,ht,dt]}],"hue-rotate":[{"hue-rotate":[rn,ht,dt]}],invert:[{invert:["",rn,ht,dt]}],saturate:[{saturate:[rn,ht,dt]}],sepia:[{sepia:["",rn,ht,dt]}],"backdrop-filter":[{"backdrop-filter":["","none",ht,dt]}],"backdrop-blur":[{"backdrop-blur":se()}],"backdrop-brightness":[{"backdrop-brightness":[rn,ht,dt]}],"backdrop-contrast":[{"backdrop-contrast":[rn,ht,dt]}],"backdrop-grayscale":[{"backdrop-grayscale":["",rn,ht,dt]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[rn,ht,dt]}],"backdrop-invert":[{"backdrop-invert":["",rn,ht,dt]}],"backdrop-opacity":[{"backdrop-opacity":[rn,ht,dt]}],"backdrop-saturate":[{"backdrop-saturate":[rn,ht,dt]}],"backdrop-sepia":[{"backdrop-sepia":["",rn,ht,dt]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":I()}],"border-spacing-x":[{"border-spacing-x":I()}],"border-spacing-y":[{"border-spacing-y":I()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",ht,dt]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[rn,"initial",ht,dt]}],ease:[{ease:["linear","initial",k,ht,dt]}],delay:[{delay:[rn,ht,dt]}],animate:[{animate:["none",j,ht,dt]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,ht,dt]}],"perspective-origin":[{"perspective-origin":E()}],rotate:[{rotate:re()}],"rotate-x":[{"rotate-x":re()}],"rotate-y":[{"rotate-y":re()}],"rotate-z":[{"rotate-z":re()}],scale:[{scale:oe()}],"scale-x":[{"scale-x":oe()}],"scale-y":[{"scale-y":oe()}],"scale-z":[{"scale-z":oe()}],"scale-3d":["scale-3d"],skew:[{skew:Te()}],"skew-x":[{"skew-x":Te()}],"skew-y":[{"skew-y":Te()}],transform:[{transform:[ht,dt,"","none","gpu","cpu"]}],"transform-origin":[{origin:E()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:We()}],"translate-x":[{"translate-x":We()}],"translate-y":[{"translate-y":We()}],"translate-z":[{"translate-z":We()}],"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",ht,dt]}],"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":I()}],"scroll-mx":[{"scroll-mx":I()}],"scroll-my":[{"scroll-my":I()}],"scroll-ms":[{"scroll-ms":I()}],"scroll-me":[{"scroll-me":I()}],"scroll-mt":[{"scroll-mt":I()}],"scroll-mr":[{"scroll-mr":I()}],"scroll-mb":[{"scroll-mb":I()}],"scroll-ml":[{"scroll-ml":I()}],"scroll-p":[{"scroll-p":I()}],"scroll-px":[{"scroll-px":I()}],"scroll-py":[{"scroll-py":I()}],"scroll-ps":[{"scroll-ps":I()}],"scroll-pe":[{"scroll-pe":I()}],"scroll-pt":[{"scroll-pt":I()}],"scroll-pr":[{"scroll-pr":I()}],"scroll-pb":[{"scroll-pb":I()}],"scroll-pl":[{"scroll-pl":I()}],"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",ht,dt]}],fill:[{fill:["none",...J()]}],"stroke-w":[{stroke:[rn,Pm,Au,w4]}],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-x","border-w-y","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-x","border-color-y","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:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},xre=Yne(gre);function ve(...t){return xre(Rz(t))}const qt=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:ve("rounded-xl border bg-card text-card-foreground shadow",t),...e}));qt.displayName="Card";const Fn=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:ve("flex flex-col space-y-1.5 p-6",t),...e}));Fn.displayName="CardHeader";const qn=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:ve("font-semibold leading-none tracking-tight",t),...e}));qn.displayName="CardTitle";const ts=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:ve("text-sm text-muted-foreground",t),...e}));ts.displayName="CardDescription";const Gn=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:ve("p-6 pt-0",t),...e}));Gn.displayName="CardContent";const nL=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:ve("flex items-center p-6 pt-0",t),...e}));nL.displayName="CardFooter";var S4="rovingFocusGroup.onEntryFocus",vre={bubbles:!1,cancelable:!0},Pp="RovingFocusGroup",[ik,rL,yre]=Dy(Pp),[bre,Gy]=Ra(Pp,[yre]),[wre,Sre]=bre(Pp),sL=b.forwardRef((t,e)=>o.jsx(ik.Provider,{scope:t.__scopeRovingFocusGroup,children:o.jsx(ik.Slot,{scope:t.__scopeRovingFocusGroup,children:o.jsx(kre,{...t,ref:e})})}));sL.displayName=Pp;var kre=b.forwardRef((t,e)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:s=!1,dir:i,currentTabStopId:a,defaultCurrentTabStopId:l,onCurrentTabStopIdChange:c,onEntryFocus:d,preventScrollOnEntryFocus:h=!1,...m}=t,g=b.useRef(null),x=Yn(e,g),y=Np(i),[w,S]=Gl({prop:a,defaultProp:l??null,onChange:c,caller:Pp}),[k,j]=b.useState(!1),N=qs(d),T=rL(n),E=b.useRef(!1),[_,M]=b.useState(0);return b.useEffect(()=>{const I=g.current;if(I)return I.addEventListener(S4,N),()=>I.removeEventListener(S4,N)},[N]),o.jsx(wre,{scope:n,orientation:r,dir:y,loop:s,currentTabStopId:w,onItemFocus:b.useCallback(I=>S(I),[S]),onItemShiftTab:b.useCallback(()=>j(!0),[]),onFocusableItemAdd:b.useCallback(()=>M(I=>I+1),[]),onFocusableItemRemove:b.useCallback(()=>M(I=>I-1),[]),children:o.jsx(gn.div,{tabIndex:k||_===0?-1:0,"data-orientation":r,...m,ref:x,style:{outline:"none",...t.style},onMouseDown:nt(t.onMouseDown,()=>{E.current=!0}),onFocus:nt(t.onFocus,I=>{const P=!E.current;if(I.target===I.currentTarget&&P&&!k){const L=new CustomEvent(S4,vre);if(I.currentTarget.dispatchEvent(L),!L.defaultPrevented){const H=T().filter(B=>B.focusable),U=H.find(B=>B.active),ee=H.find(B=>B.id===w),Q=[U,ee,...H].filter(Boolean).map(B=>B.ref.current);oL(Q,h)}}E.current=!1}),onBlur:nt(t.onBlur,()=>j(!1))})})}),iL="RovingFocusGroupItem",aL=b.forwardRef((t,e)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:s=!1,tabStopId:i,children:a,...l}=t,c=Ui(),d=i||c,h=Sre(iL,n),m=h.currentTabStopId===d,g=rL(n),{onFocusableItemAdd:x,onFocusableItemRemove:y,currentTabStopId:w}=h;return b.useEffect(()=>{if(r)return x(),()=>y()},[r,x,y]),o.jsx(ik.ItemSlot,{scope:n,id:d,focusable:r,active:s,children:o.jsx(gn.span,{tabIndex:m?0:-1,"data-orientation":h.orientation,...l,ref:e,onMouseDown:nt(t.onMouseDown,S=>{r?h.onItemFocus(d):S.preventDefault()}),onFocus:nt(t.onFocus,()=>h.onItemFocus(d)),onKeyDown:nt(t.onKeyDown,S=>{if(S.key==="Tab"&&S.shiftKey){h.onItemShiftTab();return}if(S.target!==S.currentTarget)return;const k=Nre(S,h.orientation,h.dir);if(k!==void 0){if(S.metaKey||S.ctrlKey||S.altKey||S.shiftKey)return;S.preventDefault();let N=g().filter(T=>T.focusable).map(T=>T.ref.current);if(k==="last")N.reverse();else if(k==="prev"||k==="next"){k==="prev"&&N.reverse();const T=N.indexOf(S.currentTarget);N=h.loop?Cre(N,T+1):N.slice(T+1)}setTimeout(()=>oL(N))}}),children:typeof a=="function"?a({isCurrentTabStop:m,hasTabStop:w!=null}):a})})});aL.displayName=iL;var Ore={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function jre(t,e){return e!=="rtl"?t:t==="ArrowLeft"?"ArrowRight":t==="ArrowRight"?"ArrowLeft":t}function Nre(t,e,n){const r=jre(t.key,n);if(!(e==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(e==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return Ore[r]}function oL(t,e=!1){const n=document.activeElement;for(const r of t)if(r===n||(r.focus({preventScroll:e}),document.activeElement!==n))return}function Cre(t,e){return t.map((n,r)=>t[(e+r)%t.length])}var lL=sL,cL=aL,Xy="Tabs",[Tre]=Ra(Xy,[Gy]),uL=Gy(),[Ere,Dj]=Tre(Xy),dL=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,onValueChange:s,defaultValue:i,orientation:a="horizontal",dir:l,activationMode:c="automatic",...d}=t,h=Np(l),[m,g]=Gl({prop:r,onChange:s,defaultProp:i??"",caller:Xy});return o.jsx(Ere,{scope:n,baseId:Ui(),value:m,onValueChange:g,orientation:a,dir:h,activationMode:c,children:o.jsx(gn.div,{dir:h,"data-orientation":a,...d,ref:e})})});dL.displayName=Xy;var hL="TabsList",fL=b.forwardRef((t,e)=>{const{__scopeTabs:n,loop:r=!0,...s}=t,i=Dj(hL,n),a=uL(n);return o.jsx(lL,{asChild:!0,...a,orientation:i.orientation,dir:i.dir,loop:r,children:o.jsx(gn.div,{role:"tablist","aria-orientation":i.orientation,...s,ref:e})})});fL.displayName=hL;var mL="TabsTrigger",pL=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,disabled:s=!1,...i}=t,a=Dj(mL,n),l=uL(n),c=vL(a.baseId,r),d=yL(a.baseId,r),h=r===a.value;return o.jsx(cL,{asChild:!0,...l,focusable:!s,active:h,children:o.jsx(gn.button,{type:"button",role:"tab","aria-selected":h,"aria-controls":d,"data-state":h?"active":"inactive","data-disabled":s?"":void 0,disabled:s,id:c,...i,ref:e,onMouseDown:nt(t.onMouseDown,m=>{!s&&m.button===0&&m.ctrlKey===!1?a.onValueChange(r):m.preventDefault()}),onKeyDown:nt(t.onKeyDown,m=>{[" ","Enter"].includes(m.key)&&a.onValueChange(r)}),onFocus:nt(t.onFocus,()=>{const m=a.activationMode!=="manual";!h&&!s&&m&&a.onValueChange(r)})})})});pL.displayName=mL;var gL="TabsContent",xL=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,forceMount:s,children:i,...a}=t,l=Dj(gL,n),c=vL(l.baseId,r),d=yL(l.baseId,r),h=r===l.value,m=b.useRef(h);return b.useEffect(()=>{const g=requestAnimationFrame(()=>m.current=!1);return()=>cancelAnimationFrame(g)},[]),o.jsx(si,{present:s||h,children:({present:g})=>o.jsx(gn.div,{"data-state":h?"active":"inactive","data-orientation":l.orientation,role:"tabpanel","aria-labelledby":c,hidden:!g,id:d,tabIndex:0,...a,ref:e,style:{...t.style,animationDuration:m.current?"0s":void 0},children:g&&i})})});xL.displayName=gL;function vL(t,e){return`${t}-trigger-${e}`}function yL(t,e){return`${t}-content-${e}`}var _re=dL,bL=fL,wL=pL,SL=xL;const ja=_re,Wi=b.forwardRef(({className:t,...e},n)=>o.jsx(bL,{ref:n,className:ve("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",t),...e}));Wi.displayName=bL.displayName;const Lt=b.forwardRef(({className:t,...e},n)=>o.jsx(wL,{ref:n,className:ve("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all duration-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",t),...e}));Lt.displayName=wL.displayName;const un=b.forwardRef(({className:t,...e},n)=>o.jsx(SL,{ref:n,className:ve("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[state=active]:animate-in data-[state=active]:fade-in data-[state=active]:duration-300",t),...e}));un.displayName=SL.displayName;function Mre(t,e){return b.useReducer((n,r)=>e[n][r]??n,t)}var Pj="ScrollArea",[kL]=Ra(Pj),[Are,Da]=kL(Pj),OL=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,type:r="hover",dir:s,scrollHideDelay:i=600,...a}=t,[l,c]=b.useState(null),[d,h]=b.useState(null),[m,g]=b.useState(null),[x,y]=b.useState(null),[w,S]=b.useState(null),[k,j]=b.useState(0),[N,T]=b.useState(0),[E,_]=b.useState(!1),[M,I]=b.useState(!1),P=Yn(e,H=>c(H)),L=Np(s);return o.jsx(Are,{scope:n,type:r,dir:L,scrollHideDelay:i,scrollArea:l,viewport:d,onViewportChange:h,content:m,onContentChange:g,scrollbarX:x,onScrollbarXChange:y,scrollbarXEnabled:E,onScrollbarXEnabledChange:_,scrollbarY:w,onScrollbarYChange:S,scrollbarYEnabled:M,onScrollbarYEnabledChange:I,onCornerWidthChange:j,onCornerHeightChange:T,children:o.jsx(gn.div,{dir:L,...a,ref:P,style:{position:"relative","--radix-scroll-area-corner-width":k+"px","--radix-scroll-area-corner-height":N+"px",...t.style}})})});OL.displayName=Pj;var jL="ScrollAreaViewport",NL=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,children:r,nonce:s,...i}=t,a=Da(jL,n),l=b.useRef(null),c=Yn(e,l,a.onViewportChange);return o.jsxs(o.Fragment,{children:[o.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:s}),o.jsx(gn.div,{"data-radix-scroll-area-viewport":"",...i,ref:c,style:{overflowX:a.scrollbarXEnabled?"scroll":"hidden",overflowY:a.scrollbarYEnabled?"scroll":"hidden",...t.style},children:o.jsx("div",{ref:a.onContentChange,style:{minWidth:"100%",display:"table"},children:r})})]})});NL.displayName=jL;var Bo="ScrollAreaScrollbar",zj=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=Da(Bo,t.__scopeScrollArea),{onScrollbarXEnabledChange:i,onScrollbarYEnabledChange:a}=s,l=t.orientation==="horizontal";return b.useEffect(()=>(l?i(!0):a(!0),()=>{l?i(!1):a(!1)}),[l,i,a]),s.type==="hover"?o.jsx(Rre,{...r,ref:e,forceMount:n}):s.type==="scroll"?o.jsx(Dre,{...r,ref:e,forceMount:n}):s.type==="auto"?o.jsx(CL,{...r,ref:e,forceMount:n}):s.type==="always"?o.jsx(Ij,{...r,ref:e}):null});zj.displayName=Bo;var Rre=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=Da(Bo,t.__scopeScrollArea),[i,a]=b.useState(!1);return b.useEffect(()=>{const l=s.scrollArea;let c=0;if(l){const d=()=>{window.clearTimeout(c),a(!0)},h=()=>{c=window.setTimeout(()=>a(!1),s.scrollHideDelay)};return l.addEventListener("pointerenter",d),l.addEventListener("pointerleave",h),()=>{window.clearTimeout(c),l.removeEventListener("pointerenter",d),l.removeEventListener("pointerleave",h)}}},[s.scrollArea,s.scrollHideDelay]),o.jsx(si,{present:n||i,children:o.jsx(CL,{"data-state":i?"visible":"hidden",...r,ref:e})})}),Dre=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=Da(Bo,t.__scopeScrollArea),i=t.orientation==="horizontal",a=Ky(()=>c("SCROLL_END"),100),[l,c]=Mre("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return b.useEffect(()=>{if(l==="idle"){const d=window.setTimeout(()=>c("HIDE"),s.scrollHideDelay);return()=>window.clearTimeout(d)}},[l,s.scrollHideDelay,c]),b.useEffect(()=>{const d=s.viewport,h=i?"scrollLeft":"scrollTop";if(d){let m=d[h];const g=()=>{const x=d[h];m!==x&&(c("SCROLL"),a()),m=x};return d.addEventListener("scroll",g),()=>d.removeEventListener("scroll",g)}},[s.viewport,i,c,a]),o.jsx(si,{present:n||l!=="hidden",children:o.jsx(Ij,{"data-state":l==="hidden"?"hidden":"visible",...r,ref:e,onPointerEnter:nt(t.onPointerEnter,()=>c("POINTER_ENTER")),onPointerLeave:nt(t.onPointerLeave,()=>c("POINTER_LEAVE"))})})}),CL=b.forwardRef((t,e)=>{const n=Da(Bo,t.__scopeScrollArea),{forceMount:r,...s}=t,[i,a]=b.useState(!1),l=t.orientation==="horizontal",c=Ky(()=>{if(n.viewport){const d=n.viewport.offsetWidth{const{orientation:n="vertical",...r}=t,s=Da(Bo,t.__scopeScrollArea),i=b.useRef(null),a=b.useRef(0),[l,c]=b.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),d=AL(l.viewport,l.content),h={...r,sizes:l,onSizesChange:c,hasThumb:d>0&&d<1,onThumbChange:g=>i.current=g,onThumbPointerUp:()=>a.current=0,onThumbPointerDown:g=>a.current=g};function m(g,x){return Fre(g,a.current,l,x)}return n==="horizontal"?o.jsx(Pre,{...h,ref:e,onThumbPositionChange:()=>{if(s.viewport&&i.current){const g=s.viewport.scrollLeft,x=Q9(g,l,s.dir);i.current.style.transform=`translate3d(${x}px, 0, 0)`}},onWheelScroll:g=>{s.viewport&&(s.viewport.scrollLeft=g)},onDragScroll:g=>{s.viewport&&(s.viewport.scrollLeft=m(g,s.dir))}}):n==="vertical"?o.jsx(zre,{...h,ref:e,onThumbPositionChange:()=>{if(s.viewport&&i.current){const g=s.viewport.scrollTop,x=Q9(g,l);i.current.style.transform=`translate3d(0, ${x}px, 0)`}},onWheelScroll:g=>{s.viewport&&(s.viewport.scrollTop=g)},onDragScroll:g=>{s.viewport&&(s.viewport.scrollTop=m(g))}}):null}),Pre=b.forwardRef((t,e)=>{const{sizes:n,onSizesChange:r,...s}=t,i=Da(Bo,t.__scopeScrollArea),[a,l]=b.useState(),c=b.useRef(null),d=Yn(e,c,i.onScrollbarXChange);return b.useEffect(()=>{c.current&&l(getComputedStyle(c.current))},[c]),o.jsx(EL,{"data-orientation":"horizontal",...s,ref:d,sizes:n,style:{bottom:0,left:i.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:i.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":Yy(n)+"px",...t.style},onThumbPointerDown:h=>t.onThumbPointerDown(h.x),onDragScroll:h=>t.onDragScroll(h.x),onWheelScroll:(h,m)=>{if(i.viewport){const g=i.viewport.scrollLeft+h.deltaX;t.onWheelScroll(g),DL(g,m)&&h.preventDefault()}},onResize:()=>{c.current&&i.viewport&&a&&r({content:i.viewport.scrollWidth,viewport:i.viewport.offsetWidth,scrollbar:{size:c.current.clientWidth,paddingStart:Dv(a.paddingLeft),paddingEnd:Dv(a.paddingRight)}})}})}),zre=b.forwardRef((t,e)=>{const{sizes:n,onSizesChange:r,...s}=t,i=Da(Bo,t.__scopeScrollArea),[a,l]=b.useState(),c=b.useRef(null),d=Yn(e,c,i.onScrollbarYChange);return b.useEffect(()=>{c.current&&l(getComputedStyle(c.current))},[c]),o.jsx(EL,{"data-orientation":"vertical",...s,ref:d,sizes:n,style:{top:0,right:i.dir==="ltr"?0:void 0,left:i.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":Yy(n)+"px",...t.style},onThumbPointerDown:h=>t.onThumbPointerDown(h.y),onDragScroll:h=>t.onDragScroll(h.y),onWheelScroll:(h,m)=>{if(i.viewport){const g=i.viewport.scrollTop+h.deltaY;t.onWheelScroll(g),DL(g,m)&&h.preventDefault()}},onResize:()=>{c.current&&i.viewport&&a&&r({content:i.viewport.scrollHeight,viewport:i.viewport.offsetHeight,scrollbar:{size:c.current.clientHeight,paddingStart:Dv(a.paddingTop),paddingEnd:Dv(a.paddingBottom)}})}})}),[Ire,TL]=kL(Bo),EL=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,sizes:r,hasThumb:s,onThumbChange:i,onThumbPointerUp:a,onThumbPointerDown:l,onThumbPositionChange:c,onDragScroll:d,onWheelScroll:h,onResize:m,...g}=t,x=Da(Bo,n),[y,w]=b.useState(null),S=Yn(e,P=>w(P)),k=b.useRef(null),j=b.useRef(""),N=x.viewport,T=r.content-r.viewport,E=qs(h),_=qs(c),M=Ky(m,10);function I(P){if(k.current){const L=P.clientX-k.current.left,H=P.clientY-k.current.top;d({x:L,y:H})}}return b.useEffect(()=>{const P=L=>{const H=L.target;y?.contains(H)&&E(L,T)};return document.addEventListener("wheel",P,{passive:!1}),()=>document.removeEventListener("wheel",P,{passive:!1})},[N,y,T,E]),b.useEffect(_,[r,_]),Gh(y,M),Gh(x.content,M),o.jsx(Ire,{scope:n,scrollbar:y,hasThumb:s,onThumbChange:qs(i),onThumbPointerUp:qs(a),onThumbPositionChange:_,onThumbPointerDown:qs(l),children:o.jsx(gn.div,{...g,ref:S,style:{position:"absolute",...g.style},onPointerDown:nt(t.onPointerDown,P=>{P.button===0&&(P.target.setPointerCapture(P.pointerId),k.current=y.getBoundingClientRect(),j.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",x.viewport&&(x.viewport.style.scrollBehavior="auto"),I(P))}),onPointerMove:nt(t.onPointerMove,I),onPointerUp:nt(t.onPointerUp,P=>{const L=P.target;L.hasPointerCapture(P.pointerId)&&L.releasePointerCapture(P.pointerId),document.body.style.webkitUserSelect=j.current,x.viewport&&(x.viewport.style.scrollBehavior=""),k.current=null})})})}),Rv="ScrollAreaThumb",_L=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=TL(Rv,t.__scopeScrollArea);return o.jsx(si,{present:n||s.hasThumb,children:o.jsx(Lre,{ref:e,...r})})}),Lre=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,style:r,...s}=t,i=Da(Rv,n),a=TL(Rv,n),{onThumbPositionChange:l}=a,c=Yn(e,m=>a.onThumbChange(m)),d=b.useRef(void 0),h=Ky(()=>{d.current&&(d.current(),d.current=void 0)},100);return b.useEffect(()=>{const m=i.viewport;if(m){const g=()=>{if(h(),!d.current){const x=qre(m,l);d.current=x,l()}};return l(),m.addEventListener("scroll",g),()=>m.removeEventListener("scroll",g)}},[i.viewport,h,l]),o.jsx(gn.div,{"data-state":a.hasThumb?"visible":"hidden",...s,ref:c,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...r},onPointerDownCapture:nt(t.onPointerDownCapture,m=>{const x=m.target.getBoundingClientRect(),y=m.clientX-x.left,w=m.clientY-x.top;a.onThumbPointerDown({x:y,y:w})}),onPointerUp:nt(t.onPointerUp,a.onThumbPointerUp)})});_L.displayName=Rv;var Lj="ScrollAreaCorner",ML=b.forwardRef((t,e)=>{const n=Da(Lj,t.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!=="scroll"&&r?o.jsx(Bre,{...t,ref:e}):null});ML.displayName=Lj;var Bre=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,...r}=t,s=Da(Lj,n),[i,a]=b.useState(0),[l,c]=b.useState(0),d=!!(i&&l);return Gh(s.scrollbarX,()=>{const h=s.scrollbarX?.offsetHeight||0;s.onCornerHeightChange(h),c(h)}),Gh(s.scrollbarY,()=>{const h=s.scrollbarY?.offsetWidth||0;s.onCornerWidthChange(h),a(h)}),d?o.jsx(gn.div,{...r,ref:e,style:{width:i,height:l,position:"absolute",right:s.dir==="ltr"?0:void 0,left:s.dir==="rtl"?0:void 0,bottom:0,...t.style}}):null});function Dv(t){return t?parseInt(t,10):0}function AL(t,e){const n=t/e;return isNaN(n)?0:n}function Yy(t){const e=AL(t.viewport,t.content),n=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,r=(t.scrollbar.size-n)*e;return Math.max(r,18)}function Fre(t,e,n,r="ltr"){const s=Yy(n),i=s/2,a=e||i,l=s-a,c=n.scrollbar.paddingStart+a,d=n.scrollbar.size-n.scrollbar.paddingEnd-l,h=n.content-n.viewport,m=r==="ltr"?[0,h]:[h*-1,0];return RL([c,d],m)(t)}function Q9(t,e,n="ltr"){const r=Yy(e),s=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,i=e.scrollbar.size-s,a=e.content-e.viewport,l=i-r,c=n==="ltr"?[0,a]:[a*-1,0],d=xj(t,c);return RL([0,a],[0,l])(d)}function RL(t,e){return n=>{if(t[0]===t[1]||e[0]===e[1])return e[0];const r=(e[1]-e[0])/(t[1]-t[0]);return e[0]+r*(n-t[0])}}function DL(t,e){return t>0&&t{})=>{let n={left:t.scrollLeft,top:t.scrollTop},r=0;return(function s(){const i={left:t.scrollLeft,top:t.scrollTop},a=n.left!==i.left,l=n.top!==i.top;(a||l)&&e(),n=i,r=window.requestAnimationFrame(s)})(),()=>window.cancelAnimationFrame(r)};function Ky(t,e){const n=qs(t),r=b.useRef(0);return b.useEffect(()=>()=>window.clearTimeout(r.current),[]),b.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,e)},[n,e])}function Gh(t,e){const n=qs(e);gj(()=>{let r=0;if(t){const s=new ResizeObserver(()=>{cancelAnimationFrame(r),r=window.requestAnimationFrame(n)});return s.observe(t),()=>{window.cancelAnimationFrame(r),s.unobserve(t)}}},[t,n])}var PL=OL,$re=NL,Hre=ML;const wn=b.forwardRef(({className:t,children:e,viewportRef:n,...r},s)=>o.jsxs(PL,{ref:s,className:ve("relative overflow-hidden",t),...r,children:[o.jsx($re,{ref:n,className:"h-full w-full rounded-[inherit]",children:e}),o.jsx(ak,{}),o.jsx(ak,{orientation:"horizontal"}),o.jsx(Hre,{})]}));wn.displayName=PL.displayName;const ak=b.forwardRef(({className:t,orientation:e="vertical",...n},r)=>o.jsx(zj,{ref:r,orientation:e,className:ve("flex touch-none select-none transition-colors",e==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",e==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",t),...n,children:o.jsx(_L,{className:"relative flex-1 rounded-full bg-border"})}));ak.displayName=zj.displayName;function Qre({className:t,...e}){return o.jsx("div",{className:ve("animate-pulse rounded-md bg-primary/10",t),...e})}function Vre(t,e=[]){let n=[];function r(i,a){const l=b.createContext(a);l.displayName=i+"Context";const c=n.length;n=[...n,a];const d=m=>{const{scope:g,children:x,...y}=m,w=g?.[t]?.[c]||l,S=b.useMemo(()=>y,Object.values(y));return o.jsx(w.Provider,{value:S,children:x})};d.displayName=i+"Provider";function h(m,g){const x=g?.[t]?.[c]||l,y=b.useContext(x);if(y)return y;if(a!==void 0)return a;throw new Error(`\`${m}\` must be used within \`${i}\``)}return[d,h]}const s=()=>{const i=n.map(a=>b.createContext(a));return function(l){const c=l?.[t]||i;return b.useMemo(()=>({[`__scope${t}`]:{...l,[t]:c}}),[l,c])}};return s.scopeName=t,[r,Ure(s,...e)]}function Ure(...t){const e=t[0];if(t.length===1)return e;const n=()=>{const r=t.map(s=>({useScope:s(),scopeName:s.scopeName}));return function(i){const a=r.reduce((l,{useScope:c,scopeName:d})=>{const m=c(i)[`__scope${d}`];return{...l,...m}},{});return b.useMemo(()=>({[`__scope${e.scopeName}`]:a}),[a])}};return n.scopeName=e.scopeName,n}var Wre=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],zL=Wre.reduce((t,e)=>{const n=vj(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...l}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(c,{...l,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),Bj="Progress",Fj=100,[Gre]=Vre(Bj),[Xre,Yre]=Gre(Bj),IL=b.forwardRef((t,e)=>{const{__scopeProgress:n,value:r=null,max:s,getValueLabel:i=Kre,...a}=t;(s||s===0)&&!V9(s)&&console.error(Zre(`${s}`,"Progress"));const l=V9(s)?s:Fj;r!==null&&!U9(r,l)&&console.error(Jre(`${r}`,"Progress"));const c=U9(r,l)?r:null,d=Pv(c)?i(c,l):void 0;return o.jsx(Xre,{scope:n,value:c,max:l,children:o.jsx(zL.div,{"aria-valuemax":l,"aria-valuemin":0,"aria-valuenow":Pv(c)?c:void 0,"aria-valuetext":d,role:"progressbar","data-state":FL(c,l),"data-value":c??void 0,"data-max":l,...a,ref:e})})});IL.displayName=Bj;var LL="ProgressIndicator",BL=b.forwardRef((t,e)=>{const{__scopeProgress:n,...r}=t,s=Yre(LL,n);return o.jsx(zL.div,{"data-state":FL(s.value,s.max),"data-value":s.value??void 0,"data-max":s.max,...r,ref:e})});BL.displayName=LL;function Kre(t,e){return`${Math.round(t/e*100)}%`}function FL(t,e){return t==null?"indeterminate":t===e?"complete":"loading"}function Pv(t){return typeof t=="number"}function V9(t){return Pv(t)&&!isNaN(t)&&t>0}function U9(t,e){return Pv(t)&&!isNaN(t)&&t<=e&&t>=0}function Zre(t,e){return`Invalid prop \`max\` of value \`${t}\` supplied to \`${e}\`. Only numbers greater than 0 are valid max values. Defaulting to \`${Fj}\`.`}function Jre(t,e){return`Invalid prop \`value\` of value \`${t}\` supplied to \`${e}\`. The \`value\` prop must be: + - a positive number + - less than the value passed to \`max\` (or ${Fj} if no \`max\` prop is set) + - \`null\` or \`undefined\` if the progress is indeterminate. + +Defaulting to \`null\`.`}var qL=IL,ese=BL;const zp=b.forwardRef(({className:t,value:e,...n},r)=>o.jsx(qL,{ref:r,className:ve("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",t),...n,children:o.jsx(ese,{className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(e||0)}%)`}})}));zp.displayName=qL.displayName;const tse={light:"",dark:".dark"},$L=b.createContext(null);function HL(){const t=b.useContext($L);if(!t)throw new Error("useChart must be used within a ");return t}const gh=b.forwardRef(({id:t,className:e,children:n,config:r,...s},i)=>{const a=b.useId(),l=`chart-${t||a.replace(/:/g,"")}`;return o.jsx($L.Provider,{value:{config:r},children:o.jsxs("div",{"data-chart":l,ref:i,className:ve("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",e),...s,children:[o.jsx(nse,{id:l,config:r}),o.jsx(cJ,{children:n})]})})});gh.displayName="Chart";const nse=({id:t,config:e})=>{const n=Object.entries(e).filter(([,r])=>r.theme||r.color);return n.length?o.jsx("style",{dangerouslySetInnerHTML:{__html:Object.entries(tse).map(([r,s])=>` +${s} [data-chart=${t}] { +${n.map(([i,a])=>{const l=a.theme?.[r]||a.color;return l?` --color-${i}: ${l};`:null}).join(` +`)} +} +`).join(` +`)}}):null},zm=uJ,xh=b.forwardRef(({active:t,payload:e,className:n,indicator:r="dot",hideLabel:s=!1,hideIndicator:i=!1,label:a,labelFormatter:l,labelClassName:c,formatter:d,color:h,nameKey:m,labelKey:g},x)=>{const{config:y}=HL(),w=b.useMemo(()=>{if(s||!e?.length)return null;const[k]=e,j=`${g||k?.dataKey||k?.name||"value"}`,N=ok(y,k,j),T=!g&&typeof a=="string"?y[a]?.label||a:N?.label;return l?o.jsx("div",{className:ve("font-medium",c),children:l(T,e)}):T?o.jsx("div",{className:ve("font-medium",c),children:T}):null},[a,l,e,s,c,y,g]);if(!t||!e?.length)return null;const S=e.length===1&&r!=="dot";return o.jsxs("div",{ref:x,className:ve("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",n),children:[S?null:w,o.jsx("div",{className:"grid gap-1.5",children:e.filter(k=>k.type!=="none").map((k,j)=>{const N=`${m||k.name||k.dataKey||"value"}`,T=ok(y,k,N),E=h||k.payload.fill||k.color;return o.jsx("div",{className:ve("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",r==="dot"&&"items-center"),children:d&&k?.value!==void 0&&k.name?d(k.value,k.name,k,j,k.payload):o.jsxs(o.Fragment,{children:[T?.icon?o.jsx(T.icon,{}):!i&&o.jsx("div",{className:ve("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]",{"h-2.5 w-2.5":r==="dot","w-1":r==="line","w-0 border-[1.5px] border-dashed bg-transparent":r==="dashed","my-0.5":S&&r==="dashed"}),style:{"--color-bg":E,"--color-border":E}}),o.jsxs("div",{className:ve("flex flex-1 justify-between leading-none",S?"items-end":"items-center"),children:[o.jsxs("div",{className:"grid gap-1.5",children:[S?w:null,o.jsx("span",{className:"text-muted-foreground",children:T?.label||k.name})]}),k.value&&o.jsx("span",{className:"font-mono font-medium tabular-nums text-foreground",children:k.value.toLocaleString()})]})]})},k.dataKey)})})]})});xh.displayName="ChartTooltip";const rse=dJ,QL=b.forwardRef(({className:t,hideIcon:e=!1,payload:n,verticalAlign:r="bottom",nameKey:s},i)=>{const{config:a}=HL();return n?.length?o.jsx("div",{ref:i,className:ve("flex items-center justify-center gap-4",r==="top"?"pb-3":"pt-3",t),children:n.filter(l=>l.type!=="none").map(l=>{const c=`${s||l.dataKey||"value"}`,d=ok(a,l,c);return o.jsxs("div",{className:ve("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"),children:[d?.icon&&!e?o.jsx(d.icon,{}):o.jsx("div",{className:"h-2 w-2 shrink-0 rounded-[2px]",style:{backgroundColor:l.color}}),d?.label]},l.value)})}):null});QL.displayName="ChartLegend";function ok(t,e,n){if(typeof e!="object"||e===null)return;const r="payload"in e&&typeof e.payload=="object"&&e.payload!==null?e.payload:void 0;let s=n;return n in e&&typeof e[n]=="string"?s=e[n]:r&&n in r&&typeof r[n]=="string"&&(s=r[n]),s in t?t[s]:t[n]}const W9=t=>typeof t=="boolean"?`${t}`:t===0?"0":t,G9=Rz,wf=(t,e)=>n=>{var r;if(e?.variants==null)return G9(t,n?.class,n?.className);const{variants:s,defaultVariants:i}=e,a=Object.keys(s).map(d=>{const h=n?.[d],m=i?.[d];if(h===null)return null;const g=W9(h)||W9(m);return s[d][g]}),l=n&&Object.entries(n).reduce((d,h)=>{let[m,g]=h;return g===void 0||(d[m]=g),d},{}),c=e==null||(r=e.compoundVariants)===null||r===void 0?void 0:r.reduce((d,h)=>{let{class:m,className:g,...x}=h;return Object.entries(x).every(y=>{let[w,S]=y;return Array.isArray(S)?S.includes({...i,...l}[w]):{...i,...l}[w]===S})?[...d,m,g]:d},[]);return G9(t,a,c,n?.class,n?.className)},D0=wf("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),he=b.forwardRef(({className:t,variant:e,size:n,asChild:r=!1,...s},i)=>{const a=r?lee:"button";return o.jsx(a,{className:ve(D0({variant:e,size:n,className:t})),ref:i,...s})});he.displayName="Button";function sse(){const[t,e]=b.useState(null),[n,r]=b.useState(!0),[s,i]=b.useState(0),[a,l]=b.useState(24),[c,d]=b.useState(!0),[h,m]=b.useState(null),[g,x]=b.useState(!0),y=b.useCallback(async()=>{try{x(!0);const P=await Br.get("https://v1.hitokoto.cn/?c=a&c=b&c=c&c=d&c=h&c=i&c=k");m({hitokoto:P.data.hitokoto,from:P.data.from||P.data.from_who||"未知"})}catch(P){console.error("获取一言失败:",P),m({hitokoto:"人生就像一盒巧克力,你永远不知道下一颗是什么味道。",from:"阿甘正传"})}finally{x(!1)}},[]),w=b.useCallback(async()=>{try{const P=localStorage.getItem("access-token"),L=await Br.get(`/api/webui/statistics/dashboard?hours=${a}`,{headers:{Authorization:`Bearer ${P}`}});e(L.data),r(!1),i(100)}catch(P){console.error("Failed to fetch dashboard data:",P),r(!1),i(100)}},[a]);if(b.useEffect(()=>{if(!n)return;i(0);const P=setTimeout(()=>i(15),200),L=setTimeout(()=>i(30),800),H=setTimeout(()=>i(45),2e3),U=setTimeout(()=>i(60),4e3),ee=setTimeout(()=>i(75),6500),z=setTimeout(()=>i(85),9e3),Q=setTimeout(()=>i(92),11e3);return()=>{clearTimeout(P),clearTimeout(L),clearTimeout(H),clearTimeout(U),clearTimeout(ee),clearTimeout(z),clearTimeout(Q)}},[n]),b.useEffect(()=>{w(),y()},[w,y]),b.useEffect(()=>{if(!c)return;const P=setInterval(()=>{w()},3e4);return()=>clearInterval(P)},[c,w]),n||!t)return o.jsx("div",{className:"flex items-center justify-center h-[calc(100vh-200px)]",children:o.jsxs("div",{className:"text-center space-y-6 w-full max-w-md px-4",children:[o.jsx(Qs,{className:"h-12 w-12 animate-spin mx-auto text-primary"}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-lg font-medium",children:"加载统计数据中..."}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"正在获取麦麦运行数据"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(zp,{value:s,className:"h-2"}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:[s,"%"]})]})]})});const{summary:S,model_stats:k,hourly_data:j,daily_data:N,recent_activity:T}=t,E=P=>{const L=Math.floor(P/3600),H=Math.floor(P%3600/60);return`${L}小时${H}分钟`},_=P=>new Date(P).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),M=k.slice(0,6).map(P=>({name:P.model_name,value:P.request_count,fill:`hsl(var(--chart-${k.indexOf(P)%5+1}))`})),I={requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"},tokens:{label:"Tokens",color:"hsl(var(--chart-3))"}};return o.jsx(wn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"实时监控面板"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"麦麦运行状态和统计数据一览"})]}),o.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[o.jsx(ja,{value:a.toString(),onValueChange:P=>l(Number(P)),children:o.jsxs(Wi,{className:"grid grid-cols-3 w-full sm:w-auto",children:[o.jsx(Lt,{value:"24",children:"24小时"}),o.jsx(Lt,{value:"168",children:"7天"}),o.jsx(Lt,{value:"720",children:"30天"})]})}),o.jsxs(he,{variant:c?"default":"outline",size:"sm",onClick:()=>d(!c),className:"gap-2",children:[o.jsx(Qs,{className:`h-4 w-4 ${c?"animate-spin":""}`}),o.jsx("span",{className:"hidden sm:inline",children:"自动刷新"})]}),o.jsx(he,{variant:"outline",size:"sm",onClick:w,children:o.jsx(Qs,{className:"h-4 w-4"})})]})]}),o.jsxs("div",{className:"flex items-center gap-3 px-4 py-2 rounded-lg border border-dashed border-muted-foreground/30 bg-muted/20",children:[g?o.jsx(Qre,{className:"h-5 flex-1"}):h?o.jsxs("p",{className:"flex-1 text-sm text-muted-foreground italic truncate",children:['"',h.hitokoto,'" —— ',h.from]}):null,o.jsx(he,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0",onClick:y,disabled:g,children:o.jsx(Qs,{className:`h-3.5 w-3.5 ${g?"animate-spin":""}`})})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-4",children:[o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"总请求数"}),o.jsx(wee,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:S.total_requests.toLocaleString()}),o.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["最近",a<48?a+"小时":Math.floor(a/24)+"天"]})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"总花费"}),o.jsx(See,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsxs("div",{className:"text-2xl font-bold",children:["¥",S.total_cost.toFixed(2)]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:S.cost_per_hour>0?`¥${S.cost_per_hour.toFixed(2)}/小时`:"暂无数据"})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"Token消耗"}),o.jsx(G3,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsxs("div",{className:"text-2xl font-bold",children:[(S.total_tokens/1e3).toFixed(1),"K"]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:S.tokens_per_hour>0?`${(S.tokens_per_hour/1e3).toFixed(1)}K/小时`:"暂无数据"})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"平均响应"}),o.jsx(X3,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsxs("div",{className:"text-2xl font-bold",children:[S.avg_response_time.toFixed(2),"s"]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"API平均耗时"})]})]})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 sm:grid-cols-3",children:[o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"在线时长"}),o.jsx(_h,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsx(Gn,{children:o.jsx("div",{className:"text-xl font-bold",children:E(S.online_time)})})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"消息处理"}),o.jsx(Cp,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-xl font-bold",children:S.total_messages.toLocaleString()}),o.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["回复 ",S.total_replies.toLocaleString()," 条"]})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"成本效率"}),o.jsx(kee,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-xl font-bold",children:S.total_messages>0?`¥${(S.total_cost/S.total_messages*100).toFixed(2)}`:"¥0.00"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"每100条消息"})]})]})]}),o.jsxs(ja,{defaultValue:"trends",className:"space-y-4",children:[o.jsxs(Wi,{className:"grid w-full grid-cols-2 sm:grid-cols-4",children:[o.jsx(Lt,{value:"trends",children:"趋势"}),o.jsx(Lt,{value:"models",children:"模型"}),o.jsx(Lt,{value:"activity",children:"活动"}),o.jsx(Lt,{value:"daily",children:"日统计"})]}),o.jsxs(un,{value:"trends",className:"space-y-4",children:[o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"请求趋势"}),o.jsxs(ts,{children:["最近",a,"小时的请求量变化"]})]}),o.jsx(Gn,{children:o.jsx(gh,{config:I,className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:o.jsxs(hJ,{data:j,children:[o.jsx(Qx,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),o.jsx(Vx,{dataKey:"timestamp",tickFormatter:P=>_(P),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Am,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(zm,{content:o.jsx(xh,{labelFormatter:P=>_(P)})}),o.jsx(fJ,{type:"monotone",dataKey:"requests",stroke:"var(--color-requests)",strokeWidth:2})]})})})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"花费趋势"}),o.jsx(ts,{children:"API调用成本变化"})]}),o.jsx(Gn,{children:o.jsx(gh,{config:I,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:o.jsxs(h4,{data:j,children:[o.jsx(Qx,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),o.jsx(Vx,{dataKey:"timestamp",tickFormatter:P=>_(P),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Am,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(zm,{content:o.jsx(xh,{labelFormatter:P=>_(P)})}),o.jsx(Ux,{dataKey:"cost",fill:"var(--color-cost)"})]})})})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"Token消耗"}),o.jsx(ts,{children:"Token使用量变化"})]}),o.jsx(Gn,{children:o.jsx(gh,{config:I,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:o.jsxs(h4,{data:j,children:[o.jsx(Qx,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),o.jsx(Vx,{dataKey:"timestamp",tickFormatter:P=>_(P),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Am,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(zm,{content:o.jsx(xh,{labelFormatter:P=>_(P)})}),o.jsx(Ux,{dataKey:"tokens",fill:"var(--color-tokens)"})]})})})]})]})]}),o.jsx(un,{value:"models",className:"space-y-4",children:o.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"模型请求分布"}),o.jsx(ts,{children:"各模型使用占比"})]}),o.jsx(Gn,{children:o.jsx(gh,{config:Object.fromEntries(k.slice(0,6).map((P,L)=>[P.model_name,{label:P.model_name,color:`hsl(var(--chart-${L%5+1}))`}])),className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:o.jsxs(mJ,{children:[o.jsx(zm,{content:o.jsx(xh,{})}),o.jsx(pJ,{data:M,cx:"50%",cy:"50%",labelLine:!1,label:({name:P,percent:L})=>`${P} ${L?(L*100).toFixed(0):0}%`,outerRadius:100,dataKey:"value",children:M.map((P,L)=>o.jsx(gJ,{fill:P.fill},`cell-${L}`))})]})})})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"模型详细统计"}),o.jsx(ts,{children:"请求数、花费和性能"})]}),o.jsx(Gn,{children:o.jsx(wn,{className:"h-[300px] sm:h-[400px]",children:o.jsx("div",{className:"space-y-3",children:k.map((P,L)=>o.jsxs("div",{className:"p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[o.jsxs("div",{className:"flex items-center justify-between mb-2",children:[o.jsx("h4",{className:"font-semibold text-sm truncate flex-1 min-w-0",children:P.model_name}),o.jsx("div",{className:"w-3 h-3 rounded-full ml-2 flex-shrink-0",style:{backgroundColor:`hsl(var(--chart-${L%5+1}))`}})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"请求数:"}),o.jsx("span",{className:"ml-1 font-medium",children:P.request_count.toLocaleString()})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"花费:"}),o.jsxs("span",{className:"ml-1 font-medium",children:["¥",P.total_cost.toFixed(2)]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),o.jsxs("span",{className:"ml-1 font-medium",children:[(P.total_tokens/1e3).toFixed(1),"K"]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"平均耗时:"}),o.jsxs("span",{className:"ml-1 font-medium",children:[P.avg_response_time.toFixed(2),"s"]})]})]})]},L))})})})]})]})}),o.jsx(un,{value:"activity",children:o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"最近活动"}),o.jsx(ts,{children:"最新的API调用记录"})]}),o.jsx(Gn,{children:o.jsx(wn,{className:"h-[400px] sm:h-[500px]",children:o.jsx("div",{className:"space-y-2",children:T.map((P,L)=>o.jsxs("div",{className:"p-3 sm:p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-2 mb-2",children:[o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("div",{className:"font-medium text-sm truncate",children:P.model}),o.jsx("div",{className:"text-xs text-muted-foreground",children:P.request_type})]}),o.jsx("div",{className:"text-xs text-muted-foreground flex-shrink-0",children:_(P.timestamp)})]}),o.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-2 text-xs",children:[o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),o.jsx("span",{className:"ml-1",children:P.tokens})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"花费:"}),o.jsxs("span",{className:"ml-1",children:["¥",P.cost.toFixed(4)]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"耗时:"}),o.jsxs("span",{className:"ml-1",children:[P.time_cost.toFixed(2),"s"]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"状态:"}),o.jsx("span",{className:`ml-1 ${P.status==="success"?"text-green-600":"text-red-600"}`,children:P.status})]})]})]},L))})})})]})}),o.jsx(un,{value:"daily",children:o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"每日统计"}),o.jsx(ts,{children:"最近7天的数据汇总"})]}),o.jsx(Gn,{children:o.jsx(gh,{config:{requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"}},className:"h-[400px] sm:h-[500px] w-full aspect-auto",children:o.jsxs(h4,{data:N,children:[o.jsx(Qx,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),o.jsx(Vx,{dataKey:"timestamp",tickFormatter:P=>{const L=new Date(P);return`${L.getMonth()+1}/${L.getDate()}`},stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Am,{yAxisId:"left",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Am,{yAxisId:"right",orientation:"right",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(zm,{content:o.jsx(xh,{labelFormatter:P=>new Date(P).toLocaleDateString("zh-CN")})}),o.jsx(rse,{content:o.jsx(QL,{})}),o.jsx(Ux,{yAxisId:"left",dataKey:"requests",fill:"var(--color-requests)"}),o.jsx(Ux,{yAxisId:"right",dataKey:"cost",fill:"var(--color-cost)"})]})})})]})})]})]})})}const ise={theme:"system",setTheme:()=>null},VL=b.createContext(ise),qj=()=>{const t=b.useContext(VL);if(t===void 0)throw new Error("useTheme must be used within a ThemeProvider");return t},ase=(t,e,n)=>{const r=document.documentElement.classList.contains("no-animations");if(!document.startViewTransition||r){e(t);return}const s=n.clientX,i=n.clientY,a=Math.hypot(Math.max(s,innerWidth-s),Math.max(i,innerHeight-i));document.startViewTransition(()=>{e(t)}).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${s}px ${i}px)`,`circle(${a}px at ${s}px ${i}px)`]},{duration:500,easing:"ease-in-out",pseudoElement:"::view-transition-new(root)"})})},UL=b.createContext(void 0),WL=()=>{const t=b.useContext(UL);if(t===void 0)throw new Error("useAnimation must be used within an AnimationProvider");return t};var Zy="Switch",[ose]=Ra(Zy),[lse,cse]=ose(Zy),GL=b.forwardRef((t,e)=>{const{__scopeSwitch:n,name:r,checked:s,defaultChecked:i,required:a,disabled:l,value:c="on",onCheckedChange:d,form:h,...m}=t,[g,x]=b.useState(null),y=Yn(e,N=>x(N)),w=b.useRef(!1),S=g?h||!!g.closest("form"):!0,[k,j]=Gl({prop:s,defaultProp:i??!1,onChange:d,caller:Zy});return o.jsxs(lse,{scope:n,checked:k,disabled:l,children:[o.jsx(gn.button,{type:"button",role:"switch","aria-checked":k,"aria-required":a,"data-state":ZL(k),"data-disabled":l?"":void 0,disabled:l,value:c,...m,ref:y,onClick:nt(t.onClick,N=>{j(T=>!T),S&&(w.current=N.isPropagationStopped(),w.current||N.stopPropagation())})}),S&&o.jsx(KL,{control:g,bubbles:!w.current,name:r,value:c,checked:k,required:a,disabled:l,form:h,style:{transform:"translateX(-100%)"}})]})});GL.displayName=Zy;var XL="SwitchThumb",YL=b.forwardRef((t,e)=>{const{__scopeSwitch:n,...r}=t,s=cse(XL,n);return o.jsx(gn.span,{"data-state":ZL(s.checked),"data-disabled":s.disabled?"":void 0,...r,ref:e})});YL.displayName=XL;var use="SwitchBubbleInput",KL=b.forwardRef(({__scopeSwitch:t,control:e,checked:n,bubbles:r=!0,...s},i)=>{const a=b.useRef(null),l=Yn(a,i),c=Wz(n),d=Gz(e);return b.useEffect(()=>{const h=a.current;if(!h)return;const m=window.HTMLInputElement.prototype,x=Object.getOwnPropertyDescriptor(m,"checked").set;if(c!==n&&x){const y=new Event("click",{bubbles:r});x.call(h,n),h.dispatchEvent(y)}},[c,n,r]),o.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:n,...s,tabIndex:-1,ref:l,style:{...s.style,...d,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});KL.displayName=use;function ZL(t){return t?"checked":"unchecked"}var JL=GL,dse=YL;const Bt=b.forwardRef(({className:t,...e},n)=>o.jsx(JL,{className:ve("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",t),...e,ref:n,children:o.jsx(dse,{className:ve("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));Bt.displayName=JL.displayName;const hse=wf("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),de=b.forwardRef(({className:t,...e},n)=>o.jsx(Xz,{ref:n,className:ve(hse(),t),...e}));de.displayName=Xz.displayName;const ze=b.forwardRef(({className:t,type:e,...n},r)=>o.jsx("input",{type:e,className:ve("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",t),ref:r,...n}));ze.displayName="Input";const fse=5,mse=5e3;let k4=0;function pse(){return k4=(k4+1)%Number.MAX_SAFE_INTEGER,k4.toString()}const O4=new Map,X9=t=>{if(O4.has(t))return;const e=setTimeout(()=>{O4.delete(t),g0({type:"REMOVE_TOAST",toastId:t})},mse);O4.set(t,e)},gse=(t,e)=>{switch(e.type){case"ADD_TOAST":return{...t,toasts:[e.toast,...t.toasts].slice(0,fse)};case"UPDATE_TOAST":return{...t,toasts:t.toasts.map(n=>n.id===e.toast.id?{...n,...e.toast}:n)};case"DISMISS_TOAST":{const{toastId:n}=e;return n?X9(n):t.toasts.forEach(r=>{X9(r.id)}),{...t,toasts:t.toasts.map(r=>r.id===n||n===void 0?{...r,open:!1}:r)}}case"REMOVE_TOAST":return e.toastId===void 0?{...t,toasts:[]}:{...t,toasts:t.toasts.filter(n=>n.id!==e.toastId)}}},tv=[];let nv={toasts:[]};function g0(t){nv=gse(nv,t),tv.forEach(e=>{e(nv)})}function xse({...t}){const e=pse(),n=s=>g0({type:"UPDATE_TOAST",toast:{...s,id:e}}),r=()=>g0({type:"DISMISS_TOAST",toastId:e});return g0({type:"ADD_TOAST",toast:{...t,id:e,open:!0,onOpenChange:s=>{s||r()}}}),{id:e,dismiss:r,update:n}}function fs(){const[t,e]=b.useState(nv);return b.useEffect(()=>(tv.push(e),()=>{const n=tv.indexOf(e);n>-1&&tv.splice(n,1)}),[t]),{...t,toast:xse,dismiss:n=>g0({type:"DISMISS_TOAST",toastId:n})}}const vse=[{id:"minLength",label:"长度至少 10 位",description:"Token 长度必须大于等于 10 个字符",validate:t=>t.length>=10},{id:"hasUppercase",label:"包含大写字母",description:"至少包含一个大写字母 (A-Z)",validate:t=>/[A-Z]/.test(t)},{id:"hasLowercase",label:"包含小写字母",description:"至少包含一个小写字母 (a-z)",validate:t=>/[a-z]/.test(t)},{id:"hasSpecialChar",label:"包含特殊符号",description:"至少包含一个特殊符号 (!@#$%^&*()_+-=[]{}|;:,.<>?/)",validate:t=>/[!@#$%^&*()_+\-=[\]{}|;:,.<>?/]/.test(t)}];function yse(t){const e=vse.map(r=>({id:r.id,label:r.label,description:r.description,passed:r.validate(t)}));return{isValid:e.every(r=>r.passed),rules:e}}const $j="0.11.6 Beta",Hj="MaiBot Dashboard",bse=`${Hj} v${$j}`,wse=(t="v")=>`${t}${$j}`,Dr=Sj,Sf=Yz,Sse=yj,Qj=Iy,eB=b.forwardRef(({className:t,...e},n)=>o.jsx(Py,{ref:n,className:ve("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),...e}));eB.displayName=Py.displayName;const Sr=b.forwardRef(({className:t,children:e,preventOutsideClose:n=!1,...r},s)=>o.jsxs(Sse,{children:[o.jsx(eB,{}),o.jsxs(zy,{ref:s,className:ve("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",t),onPointerDownOutside:n?i=>i.preventDefault():void 0,onInteractOutside:n?i=>i.preventDefault():void 0,...r,children:[e,o.jsxs(Iy,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[o.jsx(Tp,{className:"h-4 w-4"}),o.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Sr.displayName=zy.displayName;const kr=({className:t,...e})=>o.jsx("div",{className:ve("flex flex-col space-y-1.5 text-center sm:text-left",t),...e});kr.displayName="DialogHeader";const bs=({className:t,...e})=>o.jsx("div",{className:ve("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...e});bs.displayName="DialogFooter";const Or=b.forwardRef(({className:t,...e},n)=>o.jsx(bj,{ref:n,className:ve("text-lg font-semibold leading-none tracking-tight",t),...e}));Or.displayName=bj.displayName;const ss=b.forwardRef(({className:t,...e},n)=>o.jsx(wj,{ref:n,className:ve("text-sm text-muted-foreground",t),...e}));ss.displayName=wj.displayName;var kse=Symbol("radix.slottable");function Ose(t){const e=({children:n})=>o.jsx(o.Fragment,{children:n});return e.displayName=`${t}.Slottable`,e.__radixId=kse,e}var tB="AlertDialog",[jse]=Ra(tB,[Kz]),Xl=Kz(),nB=t=>{const{__scopeAlertDialog:e,...n}=t,r=Xl(e);return o.jsx(Sj,{...r,...n,modal:!0})};nB.displayName=tB;var Nse="AlertDialogTrigger",rB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Xl(n);return o.jsx(Yz,{...s,...r,ref:e})});rB.displayName=Nse;var Cse="AlertDialogPortal",sB=t=>{const{__scopeAlertDialog:e,...n}=t,r=Xl(e);return o.jsx(yj,{...r,...n})};sB.displayName=Cse;var Tse="AlertDialogOverlay",iB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Xl(n);return o.jsx(Py,{...s,...r,ref:e})});iB.displayName=Tse;var Ah="AlertDialogContent",[Ese,_se]=jse(Ah),Mse=Ose("AlertDialogContent"),aB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,children:r,...s}=t,i=Xl(n),a=b.useRef(null),l=Yn(e,a),c=b.useRef(null);return o.jsx(cee,{contentName:Ah,titleName:oB,docsSlug:"alert-dialog",children:o.jsx(Ese,{scope:n,cancelRef:c,children:o.jsxs(zy,{role:"alertdialog",...i,...s,ref:l,onOpenAutoFocus:nt(s.onOpenAutoFocus,d=>{d.preventDefault(),c.current?.focus({preventScroll:!0})}),onPointerDownOutside:d=>d.preventDefault(),onInteractOutside:d=>d.preventDefault(),children:[o.jsx(Mse,{children:r}),o.jsx(Rse,{contentRef:a})]})})})});aB.displayName=Ah;var oB="AlertDialogTitle",lB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Xl(n);return o.jsx(bj,{...s,...r,ref:e})});lB.displayName=oB;var cB="AlertDialogDescription",uB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Xl(n);return o.jsx(wj,{...s,...r,ref:e})});uB.displayName=cB;var Ase="AlertDialogAction",dB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Xl(n);return o.jsx(Iy,{...s,...r,ref:e})});dB.displayName=Ase;var hB="AlertDialogCancel",fB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,{cancelRef:s}=_se(hB,n),i=Xl(n),a=Yn(e,s);return o.jsx(Iy,{...i,...r,ref:a})});fB.displayName=hB;var Rse=({contentRef:t})=>{const e=`\`${Ah}\` requires a description for the component to be accessible for screen reader users. + +You can add a description to the \`${Ah}\` by passing a \`${cB}\` component as a child, which also benefits sighted users by adding visible context to the dialog. + +Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${Ah}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component. + +For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;return b.useEffect(()=>{document.getElementById(t.current?.getAttribute("aria-describedby"))||console.warn(e)},[e,t]),null},Dse=nB,Pse=rB,zse=sB,mB=iB,pB=aB,gB=dB,xB=fB,vB=lB,yB=uB;const Dn=Dse,rs=Pse,Ise=zse,bB=b.forwardRef(({className:t,...e},n)=>o.jsx(mB,{className:ve("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),...e,ref:n}));bB.displayName=mB.displayName;const Nn=b.forwardRef(({className:t,...e},n)=>o.jsxs(Ise,{children:[o.jsx(bB,{}),o.jsx(pB,{ref:n,className:ve("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",t),...e})]}));Nn.displayName=pB.displayName;const Cn=({className:t,...e})=>o.jsx("div",{className:ve("flex flex-col space-y-2 text-center sm:text-left",t),...e});Cn.displayName="AlertDialogHeader";const Tn=({className:t,...e})=>o.jsx("div",{className:ve("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...e});Tn.displayName="AlertDialogFooter";const En=b.forwardRef(({className:t,...e},n)=>o.jsx(vB,{ref:n,className:ve("text-lg font-semibold",t),...e}));En.displayName=vB.displayName;const _n=b.forwardRef(({className:t,...e},n)=>o.jsx(yB,{ref:n,className:ve("text-sm text-muted-foreground",t),...e}));_n.displayName=yB.displayName;const Mn=b.forwardRef(({className:t,...e},n)=>o.jsx(gB,{ref:n,className:ve(D0(),t),...e}));Mn.displayName=gB.displayName;const An=b.forwardRef(({className:t,...e},n)=>o.jsx(xB,{ref:n,className:ve(D0({variant:"outline"}),"mt-2 sm:mt-0",t),...e}));An.displayName=xB.displayName;function Lse(){return o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"系统设置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理您的应用偏好设置"})]})}),o.jsxs(ja,{defaultValue:"appearance",className:"w-full",children:[o.jsxs(Wi,{className:"grid w-full grid-cols-2 sm:grid-cols-4 gap-0.5 sm:gap-1 h-auto p-1",children:[o.jsxs(Lt,{value:"appearance",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[o.jsx(hI,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),o.jsx("span",{children:"外观"})]}),o.jsxs(Lt,{value:"security",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[o.jsx(Oee,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),o.jsx("span",{children:"安全"})]}),o.jsxs(Lt,{value:"other",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[o.jsx(Xu,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),o.jsx("span",{children:"其他"})]}),o.jsxs(Lt,{value:"about",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[o.jsx(Oa,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),o.jsx("span",{children:"关于"})]})]}),o.jsxs(wn,{className:"h-[calc(100vh-240px)] sm:h-[calc(100vh-280px)] mt-4 sm:mt-6",children:[o.jsx(un,{value:"appearance",className:"mt-0",children:o.jsx(Bse,{})}),o.jsx(un,{value:"security",className:"mt-0",children:o.jsx(Fse,{})}),o.jsx(un,{value:"other",className:"mt-0",children:o.jsx(qse,{})}),o.jsx(un,{value:"about",className:"mt-0",children:o.jsx($se,{})})]})]})]})}function Y9(t){const e=document.documentElement,r={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[t];if(r)e.style.setProperty("--primary",r.hsl),r.gradient?(e.style.setProperty("--primary-gradient",r.gradient),e.classList.add("has-gradient")):(e.style.removeProperty("--primary-gradient"),e.classList.remove("has-gradient"));else if(t.startsWith("#")){const s=i=>{i=i.replace("#","");const a=parseInt(i.substring(0,2),16)/255,l=parseInt(i.substring(2,4),16)/255,c=parseInt(i.substring(4,6),16)/255,d=Math.max(a,l,c),h=Math.min(a,l,c);let m=0,g=0;const x=(d+h)/2;if(d!==h){const y=d-h;switch(g=x>.5?y/(2-d-h):y/(d+h),d){case a:m=((l-c)/y+(llocalStorage.getItem("accent-color")||"blue");b.useEffect(()=>{const d=localStorage.getItem("accent-color")||"blue";Y9(d)},[]);const c=d=>{l(d),localStorage.setItem("accent-color",d),Y9(d)};return o.jsxs("div",{className:"space-y-6 sm:space-y-8",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题模式"}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 sm:gap-4",children:[o.jsx(j4,{value:"light",current:t,onChange:e,label:"浅色",description:"始终使用浅色主题"}),o.jsx(j4,{value:"dark",current:t,onChange:e,label:"深色",description:"始终使用深色主题"}),o.jsx(j4,{value:"system",current:t,onChange:e,label:"跟随系统",description:"根据系统设置自动切换"})]})]}),o.jsxs("div",{children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题色"}),o.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"单色"}),o.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[o.jsx(ua,{value:"blue",current:a,onChange:c,label:"蓝色",colorClass:"bg-blue-500"}),o.jsx(ua,{value:"purple",current:a,onChange:c,label:"紫色",colorClass:"bg-purple-500"}),o.jsx(ua,{value:"green",current:a,onChange:c,label:"绿色",colorClass:"bg-green-500"}),o.jsx(ua,{value:"orange",current:a,onChange:c,label:"橙色",colorClass:"bg-orange-500"}),o.jsx(ua,{value:"pink",current:a,onChange:c,label:"粉色",colorClass:"bg-pink-500"}),o.jsx(ua,{value:"red",current:a,onChange:c,label:"红色",colorClass:"bg-red-500"})]})]}),o.jsxs("div",{children:[o.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"渐变色"}),o.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[o.jsx(ua,{value:"gradient-sunset",current:a,onChange:c,label:"日落",colorClass:"bg-gradient-to-r from-orange-500 to-pink-500"}),o.jsx(ua,{value:"gradient-ocean",current:a,onChange:c,label:"海洋",colorClass:"bg-gradient-to-r from-blue-500 to-cyan-500"}),o.jsx(ua,{value:"gradient-forest",current:a,onChange:c,label:"森林",colorClass:"bg-gradient-to-r from-green-500 to-emerald-500"}),o.jsx(ua,{value:"gradient-aurora",current:a,onChange:c,label:"极光",colorClass:"bg-gradient-to-r from-purple-500 to-pink-500"}),o.jsx(ua,{value:"gradient-fire",current:a,onChange:c,label:"烈焰",colorClass:"bg-gradient-to-r from-red-500 to-orange-500"}),o.jsx(ua,{value:"gradient-twilight",current:a,onChange:c,label:"暮光",colorClass:"bg-gradient-to-r from-indigo-500 to-purple-500"})]})]}),o.jsxs("div",{children:[o.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"自定义颜色"}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 sm:gap-4",children:[o.jsx("div",{className:"flex-1",children:o.jsx("input",{type:"color",value:a.startsWith("#")?a:"#3b82f6",onChange:d=>c(d.target.value),className:"h-10 sm:h-12 w-full rounded-lg border-2 border-border cursor-pointer",title:"选择自定义颜色"})}),o.jsx("div",{className:"flex-1",children:o.jsx(ze,{type:"text",value:a,onChange:d=>c(d.target.value),placeholder:"#3b82f6",className:"font-mono text-sm"})})]}),o.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground mt-2",children:"点击色块选择颜色,或手动输入 HEX 颜色代码"})]})]})]}),o.jsxs("div",{children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"动画效果"}),o.jsxs("div",{className:"space-y-2 sm:space-y-3",children:[o.jsx("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5 flex-1",children:[o.jsx(de,{htmlFor:"animations",className:"text-base font-medium cursor-pointer",children:"启用动画效果"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后将禁用所有过渡动画和特效,提升性能"})]}),o.jsx(Bt,{id:"animations",checked:n,onCheckedChange:r})]})}),o.jsx("div",{className:"rounded-lg border bg-card p-4",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5 flex-1",children:[o.jsx(de,{htmlFor:"waves-background",className:"text-base font-medium cursor-pointer",children:"登录页波浪背景"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后登录页将使用纯色背景,适合低性能设备"})]}),o.jsx(Bt,{id:"waves-background",checked:s,onCheckedChange:i})]})})]})]})]})}function Fse(){const t=Zi(),[e,n]=b.useState(""),[r,s]=b.useState(""),[i,a]=b.useState(!1),[l,c]=b.useState(!1),[d,h]=b.useState(!1),[m,g]=b.useState(!1),[x,y]=b.useState(!1),[w,S]=b.useState(!1),[k,j]=b.useState(""),[N,T]=b.useState(!1),{toast:E}=fs(),_=b.useMemo(()=>yse(r),[r]),M=()=>localStorage.getItem("access-token")||"",I=async z=>{try{await navigator.clipboard.writeText(z),y(!0),E({title:"复制成功",description:"Token 已复制到剪贴板"}),setTimeout(()=>y(!1),2e3)}catch{E({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},P=async()=>{if(!r.trim()){E({title:"输入错误",description:"请输入新的 Token",variant:"destructive"});return}if(!_.isValid){const z=_.rules.filter(Q=>!Q.passed).map(Q=>Q.label).join(", ");E({title:"格式错误",description:`Token 不符合要求: ${z}`,variant:"destructive"});return}h(!0);try{const z=M(),Q=await fetch("/api/webui/auth/update",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${z}`},body:JSON.stringify({new_token:r.trim()})}),B=await Q.json();Q.ok&&B.success?(localStorage.setItem("access-token",r.trim()),s(""),e&&n(r.trim()),E({title:"更新成功",description:"Access Token 已更新,即将跳转到登录页"}),setTimeout(()=>{localStorage.removeItem("access-token"),t({to:"/auth"})},1500)):E({title:"更新失败",description:B.message||"无法更新 Token",variant:"destructive"})}catch(z){console.error("更新 Token 错误:",z),E({title:"更新失败",description:"连接服务器失败",variant:"destructive"})}finally{h(!1)}},L=async()=>{g(!0);try{const z=M(),Q=await fetch("/api/webui/auth/regenerate",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${z}`}}),B=await Q.json();Q.ok&&B.success?(localStorage.setItem("access-token",B.token),n(B.token),j(B.token),S(!0),T(!1),E({title:"生成成功",description:"新的 Access Token 已生成,请及时保存"})):E({title:"生成失败",description:B.message||"无法生成新 Token",variant:"destructive"})}catch(z){console.error("生成 Token 错误:",z),E({title:"生成失败",description:"连接服务器失败",variant:"destructive"})}finally{g(!1)}},H=async()=>{try{await navigator.clipboard.writeText(k),T(!0),E({title:"复制成功",description:"Token 已复制到剪贴板"})}catch{E({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},U=()=>{S(!1),setTimeout(()=>{j(""),T(!1)},300),setTimeout(()=>{localStorage.removeItem("access-token"),t({to:"/auth"})},500)},ee=z=>{z||U()};return o.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[o.jsx(Dr,{open:w,onOpenChange:ee,children:o.jsxs(Sr,{className:"sm:max-w-md",children:[o.jsxs(kr,{children:[o.jsxs(Or,{className:"flex items-center gap-2",children:[o.jsx(Wa,{className:"h-5 w-5 text-yellow-500"}),"新的 Access Token"]}),o.jsx(ss,{children:"这是您的新 Token,请立即保存。关闭此窗口后将跳转到登录页面。"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"rounded-lg border-2 border-primary/20 bg-primary/5 p-4",children:[o.jsx(de,{className:"text-xs text-muted-foreground mb-2 block",children:"您的新 Token (64位安全令牌)"}),o.jsx("div",{className:"font-mono text-sm break-all select-all bg-background p-3 rounded border",children:k})]}),o.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Wa,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5"}),o.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[o.jsx("p",{className:"font-semibold",children:"重要提示"}),o.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[o.jsx("li",{children:"此 Token 仅显示一次,关闭后无法再查看"}),o.jsx("li",{children:"请立即复制并保存到安全的位置"}),o.jsx("li",{children:"关闭窗口后将自动跳转到登录页面"}),o.jsx("li",{children:"请使用新 Token 重新登录系统"})]})]})]})})]}),o.jsxs(bs,{className:"gap-2 sm:gap-0",children:[o.jsx(he,{variant:"outline",onClick:H,className:"gap-2",children:N?o.jsxs(o.Fragment,{children:[o.jsx(Ro,{className:"h-4 w-4 text-green-500"}),"已复制"]}):o.jsxs(o.Fragment,{children:[o.jsx(Tv,{className:"h-4 w-4"}),"复制 Token"]})}),o.jsx(he,{onClick:U,children:"我已保存,关闭"})]})]})}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"当前 Access Token"}),o.jsx("div",{className:"space-y-3 sm:space-y-4",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"current-token",className:"text-sm",children:"您的访问令牌"}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[o.jsxs("div",{className:"relative flex-1",children:[o.jsx(ze,{id:"current-token",type:i?"text":"password",value:e||M(),readOnly:!0,className:"pr-10 font-mono text-sm",placeholder:"点击查看按钮显示 Token"}),o.jsx("button",{onClick:()=>{e||n(M()),a(!i)},className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:i?"隐藏":"显示",children:i?o.jsx(Ev,{className:"h-4 w-4 text-muted-foreground"}):o.jsx(Ea,{className:"h-4 w-4 text-muted-foreground"})})]}),o.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[o.jsx(he,{variant:"outline",size:"icon",onClick:()=>I(M()),title:"复制到剪贴板",className:"flex-shrink-0",children:x?o.jsx(Ro,{className:"h-4 w-4 text-green-500"}):o.jsx(Tv,{className:"h-4 w-4"})}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs(he,{variant:"outline",disabled:m,className:"gap-2 flex-1 sm:flex-none",children:[o.jsx(Qs,{className:ve("h-4 w-4",m&&"animate-spin")}),o.jsx("span",{className:"hidden sm:inline",children:"重新生成"}),o.jsx("span",{className:"sm:hidden",children:"生成"})]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认重新生成 Token"}),o.jsx(_n,{children:"这将生成一个新的 64 位安全令牌,并使当前 Token 立即失效。 您需要使用新 Token 重新登录系统。此操作不可撤销,确定要继续吗?"})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:L,children:"确认生成"})]})]})]})]})]}),o.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground",children:"请妥善保管您的 Access Token,不要泄露给他人"})]})})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"自定义 Access Token"}),o.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"new-token",className:"text-sm",children:"新的访问令牌"}),o.jsxs("div",{className:"relative",children:[o.jsx(ze,{id:"new-token",type:l?"text":"password",value:r,onChange:z=>s(z.target.value),className:"pr-10 font-mono text-sm",placeholder:"输入自定义 Token"}),o.jsx("button",{onClick:()=>c(!l),className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:l?"隐藏":"显示",children:l?o.jsx(Ev,{className:"h-4 w-4 text-muted-foreground"}):o.jsx(Ea,{className:"h-4 w-4 text-muted-foreground"})})]}),r&&o.jsxs("div",{className:"mt-3 space-y-2 p-3 rounded-lg bg-muted/50",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"Token 安全要求:"}),o.jsx("div",{className:"space-y-1.5",children:_.rules.map(z=>o.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[z.passed?o.jsx(Qc,{className:"h-4 w-4 text-green-500 flex-shrink-0"}):o.jsx(jee,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),o.jsx("span",{className:ve(z.passed?"text-green-600 dark:text-green-400":"text-muted-foreground"),children:z.label})]},z.id))}),_.isValid&&o.jsx("div",{className:"mt-2 pt-2 border-t border-border",children:o.jsxs("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[o.jsx(Ro,{className:"h-4 w-4"}),o.jsx("span",{className:"font-medium",children:"Token 格式正确,可以使用"})]})})]})]}),o.jsx(he,{onClick:P,disabled:d||!_.isValid||!r,className:"w-full sm:w-auto",children:d?"更新中...":"更新自定义 Token"})]})]}),o.jsxs("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3 sm:p-4",children:[o.jsx("h4",{className:"text-sm sm:text-base font-semibold text-yellow-900 dark:text-yellow-200 mb-2",children:"安全提示"}),o.jsxs("ul",{className:"text-xs sm:text-sm text-yellow-800 dark:text-yellow-300 space-y-1 list-disc list-inside",children:[o.jsx("li",{children:"重新生成 Token 会创建系统随机生成的 64 位安全令牌"}),o.jsx("li",{children:"自定义 Token 必须满足所有安全要求才能使用"}),o.jsx("li",{children:"更新 Token 后,旧的 Token 将立即失效"}),o.jsx("li",{children:"请在安全的环境下查看和复制 Token"}),o.jsx("li",{children:"如果怀疑 Token 泄露,请立即重新生成或更新"}),o.jsx("li",{children:"建议使用系统生成的 Token 以获得最高安全性"})]})]})]})}function qse(){const t=Zi(),{toast:e}=fs(),[n,r]=b.useState(!1),[s,i]=b.useState(!1);if(s)throw new Error("这是一个手动触发的测试错误,用于验证错误边界组件是否正常工作。");const a=async()=>{r(!0);try{const l=localStorage.getItem("access-token"),c=await fetch("/api/webui/setup/reset",{method:"POST",headers:{Authorization:`Bearer ${l}`}}),d=await c.json();c.ok&&d.success?(e({title:"重置成功",description:"即将进入初次配置向导"}),setTimeout(()=>{t({to:"/setup"})},1e3)):e({title:"重置失败",description:d.message||"无法重置配置状态",variant:"destructive"})}catch(l){console.error("重置配置状态错误:",l),e({title:"重置失败",description:"连接服务器失败",variant:"destructive"})}finally{r(!1)}};return o.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"配置向导"}),o.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[o.jsx("div",{className:"space-y-2",children:o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"重新进行初次配置向导,可以帮助您重新设置系统的基础配置。"})}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs(he,{variant:"outline",disabled:n,className:"gap-2",children:[o.jsx(Nee,{className:ve("h-4 w-4",n&&"animate-spin")}),"重新进行初次配置"]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认重新配置"}),o.jsx(_n,{children:"这将带您重新进入初次配置向导。您可以重新设置系统的基础配置项。确定要继续吗?"})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:a,children:"确认重置"})]})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border border-dashed border-yellow-500/50 bg-yellow-500/5 p-4 sm:p-6",children:[o.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[o.jsx(Wa,{className:"h-5 w-5 text-yellow-500"}),"开发者工具"]}),o.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[o.jsx("div",{className:"space-y-2",children:o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"以下功能仅供开发调试使用,可能会导致页面崩溃或异常。"})}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs(he,{variant:"destructive",className:"gap-2",children:[o.jsx(Wa,{className:"h-4 w-4"}),"触发测试错误"]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认触发错误"}),o.jsx(_n,{children:"这将手动触发一个 React 错误,用于测试错误边界组件的显示效果。 页面将显示错误界面,您可以通过刷新页面或点击返回首页来恢复。"})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>i(!0),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认触发"})]})]})]})]})]})]})}function $se(){return o.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[o.jsx("div",{className:"rounded-lg border-2 border-primary/30 bg-gradient-to-r from-primary/5 to-primary/10 p-4 sm:p-6",children:o.jsxs("div",{className:"flex items-start gap-3 sm:gap-4",children:[o.jsx("div",{className:"flex-shrink-0 rounded-lg bg-primary/10 p-2 sm:p-3",children:o.jsx("svg",{className:"h-6 w-6 sm:h-8 sm:w-8 text-primary",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:o.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})})}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("h3",{className:"text-lg sm:text-xl font-bold text-foreground mb-2",children:"开源项目"}),o.jsx("p",{className:"text-sm sm:text-base text-muted-foreground mb-3",children:"本项目在 GitHub 开源,欢迎 Star ⭐ 支持!"}),o.jsxs("a",{href:"https://github.com/Mai-with-u/MaiBot-Dashboard",target:"_blank",rel:"noopener noreferrer",className:ve("inline-flex items-center gap-2 px-4 py-2 rounded-lg","bg-primary text-primary-foreground font-medium text-sm","hover:bg-primary/90 transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"),children:[o.jsx("svg",{className:"h-4 w-4",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:o.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})}),"前往 GitHub",o.jsx("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:o.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})})]})]})]})}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:["关于 ",Hj]}),o.jsxs("div",{className:"space-y-2 text-xs sm:text-sm text-muted-foreground",children:[o.jsxs("p",{children:["版本: ",$j]}),o.jsx("p",{children:"麦麦(MaiBot)的现代化 Web 管理界面"})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"作者"}),o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx("p",{className:"text-sm font-medium",children:"MaiBot 核心"}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"Mai-with-u"})]}),o.jsxs("div",{className:"space-y-1",children:[o.jsx("p",{className:"text-sm font-medium",children:"WebUI"}),o.jsxs("p",{className:"text-xs sm:text-sm text-muted-foreground",children:["Mai-with-u ",o.jsx("a",{href:"https://github.com/DrSmoothl",target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"@MotricSeven"})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"技术栈"}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-xs sm:text-sm text-muted-foreground",children:[o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("p",{className:"font-medium text-foreground",children:"前端框架"}),o.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[o.jsx("li",{children:"React 19.2.0"}),o.jsx("li",{children:"TypeScript 5.7.2"}),o.jsx("li",{children:"Vite 6.0.7"}),o.jsx("li",{children:"TanStack Router 1.94.2"})]})]}),o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("p",{className:"font-medium text-foreground",children:"UI 组件"}),o.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[o.jsx("li",{children:"shadcn/ui"}),o.jsx("li",{children:"Radix UI"}),o.jsx("li",{children:"Tailwind CSS 3.4.17"}),o.jsx("li",{children:"Lucide Icons"})]})]}),o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("p",{className:"font-medium text-foreground",children:"后端"}),o.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[o.jsx("li",{children:"Python 3.12+"}),o.jsx("li",{children:"FastAPI"}),o.jsx("li",{children:"Uvicorn"}),o.jsx("li",{children:"WebSocket"})]})]}),o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("p",{className:"font-medium text-foreground",children:"构建工具"}),o.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[o.jsx("li",{children:"Bun / npm"}),o.jsx("li",{children:"ESLint 9.17.0"}),o.jsx("li",{children:"PostCSS"})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源库感谢"}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mb-3",children:"本项目使用了以下优秀的开源库,感谢他们的贡献:"}),o.jsx(wn,{className:"h-[300px] sm:h-[400px]",children:o.jsxs("div",{className:"space-y-4 pr-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"UI 框架与组件"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"React",description:"用户界面构建库",license:"MIT"}),o.jsx(Er,{name:"shadcn/ui",description:"优雅的 React 组件库",license:"MIT"}),o.jsx(Er,{name:"Radix UI",description:"无样式的可访问组件库",license:"MIT"}),o.jsx(Er,{name:"Tailwind CSS",description:"实用优先的 CSS 框架",license:"MIT"}),o.jsx(Er,{name:"Lucide React",description:"精美的图标库",license:"ISC"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"路由与状态管理"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"TanStack Router",description:"类型安全的路由库",license:"MIT"}),o.jsx(Er,{name:"Zustand",description:"轻量级状态管理",license:"MIT"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"表单处理"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"React Hook Form",description:"高性能表单库",license:"MIT"}),o.jsx(Er,{name:"Zod",description:"TypeScript 优先的 schema 验证",license:"MIT"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"工具库"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"clsx",description:"条件 className 构建工具",license:"MIT"}),o.jsx(Er,{name:"tailwind-merge",description:"Tailwind 类名合并工具",license:"MIT"}),o.jsx(Er,{name:"class-variance-authority",description:"组件变体管理",license:"Apache-2.0"}),o.jsx(Er,{name:"date-fns",description:"现代化日期处理库",license:"MIT"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"动画效果"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"Framer Motion",description:"React 动画库",license:"MIT"}),o.jsx(Er,{name:"vaul",description:"抽屉组件动画",license:"MIT"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"后端框架"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"FastAPI",description:"现代化 Python Web 框架",license:"MIT"}),o.jsx(Er,{name:"Uvicorn",description:"ASGI 服务器",license:"BSD-3-Clause"}),o.jsx(Er,{name:"Pydantic",description:"数据验证库",license:"MIT"}),o.jsx(Er,{name:"python-multipart",description:"文件上传支持",license:"Apache-2.0"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"开发工具"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"TypeScript",description:"JavaScript 的超集",license:"Apache-2.0"}),o.jsx(Er,{name:"Vite",description:"下一代前端构建工具",license:"MIT"}),o.jsx(Er,{name:"ESLint",description:"JavaScript 代码检查工具",license:"MIT"}),o.jsx(Er,{name:"PostCSS",description:"CSS 转换工具",license:"MIT"})]})]})]})})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源许可"}),o.jsxs("div",{className:"space-y-3",children:[o.jsx("div",{className:"rounded-lg bg-primary/5 border border-primary/20 p-3 sm:p-4",children:o.jsxs("div",{className:"flex items-start gap-2 sm:gap-3",children:[o.jsx("div",{className:"flex-shrink-0 mt-0.5",children:o.jsx("div",{className:"rounded-md bg-primary/10 px-2 py-1",children:o.jsx("span",{className:"text-xs sm:text-sm font-bold text-primary",children:"GPLv3"})})}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("p",{className:"text-sm sm:text-base font-semibold text-foreground mb-1",children:"MaiBot WebUI"}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目采用 GNU General Public License v3.0 开源许可证。 您可以自由地使用、修改和分发本软件,但必须保持相同的开源许可。"})]})]})}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目依赖的所有开源库均遵循各自的开源许可证(MIT、Apache-2.0、BSD 等)。 感谢所有开源贡献者的无私奉献。"})]})]})]})}function Er({name:t,description:e,license:n}){return o.jsxs("div",{className:"flex items-start justify-between gap-2 rounded-lg border bg-muted/30 p-2.5 sm:p-3",children:[o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("p",{className:"font-medium text-foreground truncate",children:t}),o.jsx("p",{className:"text-muted-foreground text-xs mt-0.5",children:e})]}),o.jsx("span",{className:"inline-flex items-center rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-medium text-primary flex-shrink-0",children:n})]})}function j4({value:t,current:e,onChange:n,label:r,description:s}){const i=e===t;return o.jsxs("button",{onClick:()=>n(t),className:ve("relative rounded-lg border-2 p-3 sm:p-4 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",i?"border-primary bg-accent":"border-border"),children:[i&&o.jsx("div",{className:"absolute top-2 right-2 sm:top-3 sm:right-3 h-2 w-2 rounded-full bg-primary"}),o.jsxs("div",{className:"space-y-1",children:[o.jsx("div",{className:"text-sm sm:text-base font-medium",children:r}),o.jsx("div",{className:"text-[10px] sm:text-xs text-muted-foreground",children:s})]}),o.jsxs("div",{className:"mt-2 sm:mt-3 flex gap-1",children:[t==="light"&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-200"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-300"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-400"})]}),t==="dark"&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-700"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-800"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-900"})]}),t==="system"&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-200 to-slate-700"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-300 to-slate-800"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-400 to-slate-900"})]})]})]})}function ua({value:t,current:e,onChange:n,label:r,colorClass:s}){const i=e===t;return o.jsxs("button",{onClick:()=>n(t),className:ve("relative rounded-lg border-2 p-2 sm:p-3 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",i?"border-primary bg-accent":"border-border"),children:[i&&o.jsx("div",{className:"absolute top-1.5 right-1.5 sm:top-2 sm:right-2 h-1.5 w-1.5 sm:h-2 sm:w-2 rounded-full bg-primary"}),o.jsxs("div",{className:"flex flex-col items-center gap-1.5 sm:gap-2",children:[o.jsx("div",{className:ve("h-8 w-8 sm:h-10 sm:w-10 rounded-full",s)}),o.jsx("div",{className:"text-[10px] sm:text-xs font-medium text-center",children:r})]})]})}class Hse{grad3;p;perm;constructor(e=0){this.grad3=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],this.p=[];for(let n=0;n<256;n++)this.p[n]=Math.floor(Math.random()*256);this.perm=[];for(let n=0;n<512;n++)this.perm[n]=this.p[n&255]}dot(e,n,r){return e[0]*n+e[1]*r}mix(e,n,r){return(1-r)*e+r*n}fade(e){return e*e*e*(e*(e*6-15)+10)}perlin2(e,n){const r=Math.floor(e)&255,s=Math.floor(n)&255;e-=Math.floor(e),n-=Math.floor(n);const i=this.fade(e),a=this.fade(n),l=this.perm[r]+s,c=this.perm[l],d=this.perm[l+1],h=this.perm[r+1]+s,m=this.perm[h],g=this.perm[h+1];return this.mix(this.mix(this.dot(this.grad3[c%12],e,n),this.dot(this.grad3[m%12],e-1,n),i),this.mix(this.dot(this.grad3[d%12],e,n-1),this.dot(this.grad3[g%12],e-1,n-1),i),a)}}function Qse(){const t=b.useRef(null),e=b.useRef(null),n=b.useRef(void 0),r=b.useRef({mouse:{x:-10,y:0,lx:0,ly:0,sx:0,sy:0,v:0,vs:0,a:0,set:!1},lines:[],paths:[],noise:new Hse(Math.random()),bounding:null});return b.useEffect(()=>{const s=e.current,i=t.current;if(!s||!i)return;const a=r.current,l=()=>{const w=s.getBoundingClientRect();a.bounding=w,i.style.width=`${w.width}px`,i.style.height=`${w.height}px`},c=()=>{if(!a.bounding)return;const{width:w,height:S}=a.bounding;a.lines=[],a.paths.forEach(P=>P.remove()),a.paths=[];const k=10,j=32,N=w+200,T=S+30,E=Math.ceil(N/k),_=Math.ceil(T/j),M=(w-k*E)/2,I=(S-j*_)/2;for(let P=0;P<=E;P++){const L=[];for(let U=0;U<=_;U++){const ee={x:M+k*P,y:I+j*U,wave:{x:0,y:0},cursor:{x:0,y:0,vx:0,vy:0}};L.push(ee)}const H=document.createElementNS("http://www.w3.org/2000/svg","path");i.appendChild(H),a.paths.push(H),a.lines.push(L)}},d=w=>{const{lines:S,mouse:k,noise:j}=a;S.forEach(N=>{N.forEach(T=>{const E=j.perlin2((T.x+w*.0125)*.002,(T.y+w*.005)*.0015)*12;T.wave.x=Math.cos(E)*32,T.wave.y=Math.sin(E)*16;const _=T.x-k.sx,M=T.y-k.sy,I=Math.hypot(_,M),P=Math.max(175,k.vs);if(I{const k={x:w.x+w.wave.x+(S?w.cursor.x:0),y:w.y+w.wave.y+(S?w.cursor.y:0)};return k.x=Math.round(k.x*10)/10,k.y=Math.round(k.y*10)/10,k},m=()=>{const{lines:w,paths:S}=a;w.forEach((k,j)=>{let N=h(k[0],!1),T=`M ${N.x} ${N.y}`;k.forEach((E,_)=>{const M=_===k.length-1;N=h(E,!M),T+=`L ${N.x} ${N.y}`}),S[j].setAttribute("d",T)})},g=w=>{const{mouse:S}=a;S.sx+=(S.x-S.sx)*.1,S.sy+=(S.y-S.sy)*.1;const k=S.x-S.lx,j=S.y-S.ly,N=Math.hypot(k,j);S.v=N,S.vs+=(N-S.vs)*.1,S.vs=Math.min(100,S.vs),S.lx=S.x,S.ly=S.y,S.a=Math.atan2(j,k),s&&(s.style.setProperty("--x",`${S.sx}px`),s.style.setProperty("--y",`${S.sy}px`)),d(w),m(),n.current=requestAnimationFrame(g)},x=w=>{if(!a.bounding)return;const{mouse:S}=a;S.x=w.pageX-a.bounding.left,S.y=w.pageY-a.bounding.top+window.scrollY,S.set||(S.sx=S.x,S.sy=S.y,S.lx=S.x,S.ly=S.y,S.set=!0)},y=()=>{l(),c()};return l(),c(),window.addEventListener("resize",y),window.addEventListener("mousemove",x),n.current=requestAnimationFrame(g),()=>{window.removeEventListener("resize",y),window.removeEventListener("mousemove",x),n.current&&cancelAnimationFrame(n.current)}},[]),o.jsxs("div",{ref:e,className:"waves-background",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflow:"hidden",pointerEvents:"none"},children:[o.jsx("div",{className:"waves-cursor",style:{position:"absolute",top:0,left:0,width:"0.5rem",height:"0.5rem",background:"hsl(var(--primary) / 0.3)",borderRadius:"50%",transform:"translate3d(calc(var(--x, -0.5rem) - 50%), calc(var(--y, 50%) - 50%), 0)",willChange:"transform",pointerEvents:"none"}}),o.jsx("svg",{ref:t,style:{display:"block",width:"100%",height:"100%"},children:o.jsx("style",{children:` + path { + fill: none; + stroke: hsl(var(--primary) / 0.20); + stroke-width: 1px; + } + `})})]})}function Vse(){const t=Zi();b.useEffect(()=>{localStorage.getItem("access-token")||t({to:"/auth"})},[t])}function wB(){return!!localStorage.getItem("access-token")}function Use(){const[t,e]=b.useState(""),[n,r]=b.useState(!1),[s,i]=b.useState(""),a=Zi(),{enableWavesBackground:l,setEnableWavesBackground:c}=WL(),{theme:d,setTheme:h}=qj();b.useEffect(()=>{wB()&&a({to:"/"})},[a]);const g=d==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":d,x=()=>{h(g==="dark"?"light":"dark")},y=async w=>{if(w.preventDefault(),i(""),!t.trim()){i("请输入 Access Token");return}r(!0);try{const S=await fetch("/api/webui/auth/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t.trim()})}),k=await S.json();if(S.ok&&k.valid){localStorage.setItem("access-token",t.trim());const j=await fetch("/api/webui/setup/status",{method:"GET",headers:{Authorization:`Bearer ${t.trim()}`}}),N=await j.json();j.ok&&N.is_first_setup?a({to:"/setup"}):a({to:"/"})}else i(k.message||"Token 验证失败,请检查后重试")}catch(S){console.error("Token 验证错误:",S),i("连接服务器失败,请检查网络连接")}finally{r(!1)}};return o.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[l&&o.jsx(Qse,{}),o.jsxs(qt,{className:"relative z-10 w-full max-w-md shadow-2xl backdrop-blur-xl bg-card/80 border-border/50",children:[o.jsx("button",{onClick:x,className:"absolute right-4 top-4 rounded-lg p-2 hover:bg-accent transition-colors z-10 text-foreground",title:g==="dark"?"切换到浅色模式":"切换到深色模式",children:g==="dark"?o.jsx(Y3,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"}):o.jsx(K3,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"})}),o.jsxs(Fn,{className:"space-y-4 text-center",children:[o.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-2xl bg-primary/10",children:o.jsx(f9,{className:"h-8 w-8 text-primary",strokeWidth:2,fill:"none"})}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(qn,{className:"text-2xl font-bold",children:"欢迎使用 MaiBot"}),o.jsx(ts,{className:"text-base",children:"请输入您的 Access Token 以继续访问系统"})]})]}),o.jsx(Gn,{children:o.jsxs("form",{onSubmit:y,className:"space-y-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"token",className:"text-sm font-medium",children:"Access Token"}),o.jsxs("div",{className:"relative",children:[o.jsx(fI,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground",strokeWidth:2,fill:"none"}),o.jsx(ze,{id:"token",type:"password",placeholder:"请输入您的 Access Token",value:t,onChange:w=>e(w.target.value),className:ve("pl-10",s&&"border-red-500 focus-visible:ring-red-500"),disabled:n,autoFocus:!0,autoComplete:"off"})]})]}),s&&o.jsxs("div",{className:"flex items-center gap-2 rounded-md bg-red-50 p-3 text-sm text-red-600 dark:bg-red-950/50 dark:text-red-400",children:[o.jsx(Vc,{className:"h-4 w-4 flex-shrink-0",strokeWidth:2,fill:"none"}),o.jsx("span",{children:s})]}),o.jsx(he,{type:"submit",className:"w-full",disabled:n,children:n?o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent"}),"验证中..."]}):"验证并进入"}),o.jsxs(Dr,{children:[o.jsx(Sf,{asChild:!0,children:o.jsxs("button",{className:"w-full text-center text-sm text-primary hover:text-primary/80 transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[o.jsx(qy,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我没有 Token,我该去哪里获得 Token?"]})}),o.jsxs(Sr,{className:"sm:max-w-md",children:[o.jsxs(kr,{children:[o.jsxs(Or,{className:"flex items-center gap-2",children:[o.jsx(f9,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"如何获取 Access Token"]}),o.jsx(ss,{children:"Access Token 是访问 MaiBot WebUI 的唯一凭证,请按以下方式获取"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Cee,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),o.jsxs("div",{className:"flex-1 space-y-2",children:[o.jsx("h4",{className:"font-semibold text-sm",children:"方式一:查看启动日志"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"在 MaiBot 启动时,控制台会显示 WebUI Access Token。"}),o.jsxs("div",{className:"rounded bg-background p-2 font-mono text-xs",children:[o.jsx("p",{className:"text-muted-foreground",children:"🔑 WebUI Access Token: abc123..."}),o.jsx("p",{className:"text-muted-foreground",children:"💡 请使用此 Token 登录 WebUI"})]})]})]})}),o.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Pl,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),o.jsxs("div",{className:"flex-1 space-y-2",children:[o.jsx("h4",{className:"font-semibold text-sm",children:"方式二:查看配置文件"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"Token 保存在项目根目录的配置文件中:"}),o.jsx("div",{className:"rounded bg-background p-2 font-mono text-xs break-all",children:o.jsx("code",{className:"text-primary",children:"data/webui.json"})}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:["打开此文件,复制 ",o.jsx("code",{className:"px-1 py-0.5 bg-background rounded",children:"access_token"})," 字段的值"]})]})]})}),o.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Vc,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),o.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[o.jsx("p",{className:"font-semibold",children:"安全提示"}),o.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[o.jsx("li",{children:"请妥善保管您的 Token,不要泄露给他人"}),o.jsx("li",{children:"如需重置 Token,请在登录后前往系统设置"})]})]})]})})]})]})]}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs("button",{className:"w-full text-center text-sm text-muted-foreground hover:text-foreground transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[o.jsx(X3,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我觉得这个界面很卡怎么办?"]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsxs(En,{className:"flex items-center gap-2",children:[o.jsx(X3,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"关闭背景动画"]}),o.jsx(_n,{children:"背景动画可能会在低性能设备上造成卡顿。关闭动画可以显著提升界面流畅度。"})]}),o.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:o.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭动画后,背景将变为纯色,但不影响任何功能的使用。您可以随时在系统设置中重新开启动画。"})}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>c(!1),children:"关闭动画"})]})]})]})]})})]}),o.jsx("div",{className:"absolute bottom-4 left-0 right-0 text-center text-xs text-muted-foreground",children:o.jsx("p",{children:bse})})]})}const Ar=b.forwardRef(({className:t,...e},n)=>o.jsx("textarea",{className:ve("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",t),ref:n,...e}));Ar.displayName="Textarea";var Wse=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Gse=Wse.reduce((t,e)=>{const n=vj(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...l}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(c,{...l,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),Xse="Separator",K9="horizontal",Yse=["horizontal","vertical"],SB=b.forwardRef((t,e)=>{const{decorative:n,orientation:r=K9,...s}=t,i=Kse(r)?r:K9,l=n?{role:"none"}:{"aria-orientation":i==="vertical"?i:void 0,role:"separator"};return o.jsx(Gse.div,{"data-orientation":i,...l,...s,ref:e})});SB.displayName=Xse;function Kse(t){return Yse.includes(t)}var kB=SB;const P0=b.forwardRef(({className:t,orientation:e="horizontal",decorative:n=!0,...r},s)=>o.jsx(kB,{ref:s,decorative:n,orientation:e,className:ve("shrink-0 bg-border",e==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",t),...r}));P0.displayName=kB.displayName;const Zse=wf("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function Xn({className:t,variant:e,...n}){return o.jsx("div",{className:ve(Zse({variant:e}),t),...n})}function Jse({config:t,onChange:e}){const n=s=>{s.trim()&&!t.alias_names.includes(s.trim())&&e({...t,alias_names:[...t.alias_names,s.trim()]})},r=s=>{e({...t,alias_names:t.alias_names.filter((i,a)=>a!==s)})};return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"qq_account",children:"QQ账号 *"}),o.jsx(ze,{id:"qq_account",type:"number",placeholder:"请输入机器人的QQ账号",value:t.qq_account||"",onChange:s=>e({...t,qq_account:Number(s.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人登录使用的QQ账号"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"nickname",children:"昵称 *"}),o.jsx(ze,{id:"nickname",placeholder:"请输入机器人的昵称",value:t.nickname,onChange:s=>e({...t,nickname:s.target.value})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的主要称呼名称"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{children:"别名"}),o.jsx("div",{className:"flex flex-wrap gap-2 mb-2",children:t.alias_names.map((s,i)=>o.jsxs(Xn,{variant:"secondary",className:"gap-1",children:[s,o.jsx("button",{type:"button",onClick:()=>r(i),className:"ml-1 hover:text-destructive",children:o.jsx(Tp,{className:"h-3 w-3"})})]},i))}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{id:"alias_input",placeholder:"输入别名后按回车添加",onKeyPress:s=>{s.key==="Enter"&&(n(s.target.value),s.target.value="")}}),o.jsx(he,{type:"button",variant:"outline",onClick:()=>{const s=document.getElementById("alias_input");s&&(n(s.value),s.value="")},children:"添加"})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的其他称呼,可以添加多个"})]})]})}function eie({config:t,onChange:e}){return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"personality",children:"人格特征 *"}),o.jsx(Ar,{id:"personality",placeholder:"描述机器人的人格特质和身份特征(建议120字以内)",value:t.personality,onChange:n=>e({...t,personality:n.target.value}),rows:3}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:是一个女大学生,现在在读大二,会刷贴吧"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"reply_style",children:"表达风格 *"}),o.jsx(Ar,{id:"reply_style",placeholder:"描述机器人说话的表达风格、表达习惯",value:t.reply_style,onChange:n=>e({...t,reply_style:n.target.value}),rows:3}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:回复平淡一些,简短一些,说中文,参考贴吧、知乎和微博的回复风格"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"interest",children:"兴趣 *"}),o.jsx(Ar,{id:"interest",placeholder:"描述机器人感兴趣的话题",value:t.interest,onChange:n=>e({...t,interest:n.target.value}),rows:2}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"会影响机器人对什么话题进行回复"})]}),o.jsx(P0,{}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"plan_style",children:"群聊说话规则 *"}),o.jsx(Ar,{id:"plan_style",placeholder:"机器人在群聊中的行为风格和规则",value:t.plan_style,onChange:n=>e({...t,plan_style:n.target.value}),rows:4}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在群聊中如何行动,例如回复频率、条件等"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"private_plan_style",children:"私聊说话规则 *"}),o.jsx(Ar,{id:"private_plan_style",placeholder:"机器人在私聊中的行为风格和规则",value:t.private_plan_style,onChange:n=>e({...t,private_plan_style:n.target.value}),rows:3}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在私聊中的行为方式"})]})]})}function tie({config:t,onChange:e}){return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(de,{htmlFor:"emoji_chance",children:"表情包激活概率"}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:[(t.emoji_chance*100).toFixed(0),"%"]})]}),o.jsx(ze,{id:"emoji_chance",type:"range",min:"0",max:"1",step:"0.1",value:t.emoji_chance,onChange:n=>e({...t,emoji_chance:Number(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人发送表情包的概率"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"max_reg_num",children:"最大表情包数量"}),o.jsx(ze,{id:"max_reg_num",type:"number",min:"1",max:"200",value:t.max_reg_num,onChange:n=>e({...t,max_reg_num:Number(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人最多保存的表情包数量"})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(de,{htmlFor:"do_replace",children:"达到最大数量时替换"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"开启后会删除旧表情包,关闭则不再收集新表情包"})]}),o.jsx(Bt,{id:"do_replace",checked:t.do_replace,onCheckedChange:n=>e({...t,do_replace:n})})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),o.jsx(ze,{id:"check_interval",type:"number",min:"1",max:"120",value:t.check_interval,onChange:n=>e({...t,check_interval:Number(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包注册、破损、删除的时间间隔"})]}),o.jsx(P0,{}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(de,{htmlFor:"steal_emoji",children:"偷取表情包"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人将一些表情包据为己有"})]}),o.jsx(Bt,{id:"steal_emoji",checked:t.steal_emoji,onCheckedChange:n=>e({...t,steal_emoji:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(de,{htmlFor:"content_filtration",children:"启用表情包过滤"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"只保存符合要求的表情包"})]}),o.jsx(Bt,{id:"content_filtration",checked:t.content_filtration,onCheckedChange:n=>e({...t,content_filtration:n})})]}),t.content_filtration&&o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"filtration_prompt",children:"过滤要求"}),o.jsx(ze,{id:"filtration_prompt",placeholder:"例如:符合公序良俗",value:t.filtration_prompt,onChange:n=>e({...t,filtration_prompt:n.target.value})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"描述表情包应该符合的要求"})]})]})}function nie({config:t,onChange:e}){return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(de,{htmlFor:"enable_tool",children:"启用工具系统"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人使用各种工具增强功能"})]}),o.jsx(Bt,{id:"enable_tool",checked:t.enable_tool,onCheckedChange:n=>e({...t,enable_tool:n})})]}),o.jsx(P0,{}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(de,{htmlFor:"enable_mood",children:"启用情绪系统"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"让机器人具有情绪变化能力"})]}),o.jsx(Bt,{id:"enable_mood",checked:t.enable_mood,onCheckedChange:n=>e({...t,enable_mood:n})})]}),t.enable_mood&&o.jsxs("div",{className:"ml-6 space-y-6 border-l-2 border-primary/20 pl-6",children:[o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"mood_update_threshold",children:"情绪更新阈值"}),o.jsx(ze,{id:"mood_update_threshold",type:"number",min:"0.1",max:"10",step:"0.1",value:t.mood_update_threshold||1,onChange:n=>e({...t,mood_update_threshold:Number(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"值越高,情绪更新越慢"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"emotion_style",children:"情感特征"}),o.jsx(Ar,{id:"emotion_style",placeholder:"描述情绪的变化情况,例如:情绪较为稳定,但遭遇特定事件时起伏较大",value:t.emotion_style||"",onChange:n=>e({...t,emotion_style:n.target.value}),rows:2}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"影响机器人的情绪变化方式"})]})]}),o.jsx(P0,{}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(de,{htmlFor:"all_global",children:"启用全局黑话模式"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人学习和使用群组黑话"})]}),o.jsx(Bt,{id:"all_global",checked:t.all_global,onCheckedChange:n=>e({...t,all_global:n})})]})]})}function rie({config:t,onChange:e}){const[n,r]=b.useState(!1);return o.jsxs("div",{className:"space-y-6",children:[o.jsx("div",{className:"rounded-lg bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-4",children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx("div",{className:"mt-0.5",children:o.jsx("svg",{className:"h-5 w-5 text-blue-600 dark:text-blue-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:o.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),o.jsxs("div",{className:"flex-1 text-sm",children:[o.jsx("p",{className:"font-medium text-blue-900 dark:text-blue-100 mb-1",children:"关于硅基流动 (SiliconFlow)"}),o.jsx("p",{className:"text-blue-700 dark:text-blue-300 mb-2",children:"硅基流动提供了完整的模型覆盖,包括 DeepSeek V3、Qwen、视觉模型、语音识别和嵌入模型。 只需一个 API Key 即可使用麦麦的所有功能!"}),o.jsxs("a",{href:"https://cloud.siliconflow.cn",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-blue-600 dark:text-blue-400 hover:underline font-medium",children:["前往硅基流动获取 API Key",o.jsx(Mh,{className:"h-3 w-3"})]})]})]})}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"siliconflow_api_key",children:"SiliconFlow API Key *"}),o.jsxs("div",{className:"relative",children:[o.jsx(ze,{id:"siliconflow_api_key",type:n?"text":"password",placeholder:"sk-...",value:t.api_key,onChange:s=>e({api_key:s.target.value}),className:"font-mono pr-10"}),o.jsx(he,{type:"button",variant:"ghost",size:"sm",className:"absolute right-0 top-0 h-full px-3 hover:bg-transparent",onClick:()=>r(!n),children:n?o.jsx(Ev,{className:"h-4 w-4 text-muted-foreground"}):o.jsx(Ea,{className:"h-4 w-4 text-muted-foreground"})})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"请输入您的硅基流动 API 密钥。获取后,麦麦将自动配置所有必需的模型。"})]}),o.jsxs("div",{className:"rounded-lg bg-muted/50 p-4 text-sm space-y-2",children:[o.jsx("p",{className:"font-medium",children:"将自动配置以下模型:"}),o.jsxs("ul",{className:"list-disc list-inside space-y-1 text-muted-foreground ml-2",children:[o.jsx("li",{children:"DeepSeek V3 - 主要对话和工具模型"}),o.jsx("li",{children:"Qwen3 30B - 高频小任务和工具调用"}),o.jsx("li",{children:"Qwen3 VL 30B - 图像识别"}),o.jsx("li",{children:"SenseVoice - 语音识别"}),o.jsx("li",{children:"BGE-M3 - 文本嵌入"}),o.jsx("li",{children:"知识库相关模型 (LPMM)"})]})]}),o.jsx("div",{className:"rounded-lg border border-amber-200 dark:border-amber-800 bg-amber-50 dark:bg-amber-950/30 p-4",children:o.jsxs("p",{className:"text-sm text-amber-900 dark:text-amber-100",children:[o.jsx("span",{className:"font-medium",children:"💡 提示:"}),'完成向导后,您可以在"系统设置 → 模型配置"中添加更多 API 提供商和模型。']})})]})}async function St(t,e){const n=await fetch(t,e);if(n.status===401)throw localStorage.removeItem("access-token"),window.location.href="/auth",new Error("认证失败,请重新登录");return n}function Dt(){return{"Content-Type":"application/json",Authorization:`Bearer ${localStorage.getItem("access-token")}`}}async function sie(){const t=await St("/api/webui/config/bot",{method:"GET",headers:Dt()});if(!t.ok)throw new Error("读取Bot配置失败");const n=(await t.json()).config.bot||{};return{qq_account:n.qq_account||0,nickname:n.nickname||"",alias_names:n.alias_names||[]}}async function iie(){const t=await St("/api/webui/config/bot",{method:"GET",headers:Dt()});if(!t.ok)throw new Error("读取人格配置失败");const n=(await t.json()).config.personality||{};return{personality:n.personality||"",reply_style:n.reply_style||"",interest:n.interest||"",plan_style:n.plan_style||"",private_plan_style:n.private_plan_style||""}}async function aie(){const t=await St("/api/webui/config/bot",{method:"GET",headers:Dt()});if(!t.ok)throw new Error("读取表情包配置失败");const n=(await t.json()).config.emoji||{};return{emoji_chance:n.emoji_chance??.4,max_reg_num:n.max_reg_num??40,do_replace:n.do_replace??!0,check_interval:n.check_interval??10,steal_emoji:n.steal_emoji??!0,content_filtration:n.content_filtration??!1,filtration_prompt:n.filtration_prompt||""}}async function oie(){const t=await St("/api/webui/config/bot",{method:"GET",headers:Dt()});if(!t.ok)throw new Error("读取其他配置失败");const n=(await t.json()).config,r=n.tool||{},s=n.mood||{},i=n.jargon||{};return{enable_tool:r.enable_tool??!0,enable_mood:s.enable_mood??!1,mood_update_threshold:s.mood_update_threshold,emotion_style:s.emotion_style,all_global:i.all_global??!0}}async function lie(){const t=await St("/api/webui/config/model",{method:"GET",headers:Dt()});if(!t.ok)throw new Error("读取模型配置失败");return{api_key:((await t.json()).config.api_providers||[]).find(i=>i.name==="SiliconFlow")?.api_key||""}}async function cie(t){const e=await St("/api/webui/config/bot/section/bot",{method:"POST",headers:Dt(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"保存Bot基础配置失败")}return await e.json()}async function uie(t){const e=await St("/api/webui/config/bot/section/personality",{method:"POST",headers:Dt(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"保存人格配置失败")}return await e.json()}async function die(t){const e=await St("/api/webui/config/bot/section/emoji",{method:"POST",headers:Dt(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"保存表情包配置失败")}return await e.json()}async function hie(t){const e=[];e.push(St("/api/webui/config/bot/section/tool",{method:"POST",headers:Dt(),body:JSON.stringify({enable_tool:t.enable_tool})})),e.push(St("/api/webui/config/bot/section/jargon",{method:"POST",headers:Dt(),body:JSON.stringify({all_global:t.all_global})}));const n={enable_mood:t.enable_mood};t.enable_mood&&(n.mood_update_threshold=t.mood_update_threshold||1,n.emotion_style=t.emotion_style||""),e.push(St("/api/webui/config/bot/section/mood",{method:"POST",headers:Dt(),body:JSON.stringify(n)}));const r=await Promise.all(e);for(const s of r)if(!s.ok){const i=await s.json();throw new Error(i.detail||"保存其他配置失败")}return{success:!0}}async function fie(t){const e=await St("/api/webui/config/model",{method:"GET",headers:Dt()});if(!e.ok)throw new Error("读取模型配置失败");const r=(await e.json()).config,s=r.api_providers||[],i=s.findIndex(c=>c.name==="SiliconFlow");i>=0?s[i]={...s[i],api_key:t.api_key}:s.push({name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",api_key:t.api_key,client_type:"openai",max_retry:3,timeout:120,retry_interval:5});const a={...r,api_providers:s},l=await St("/api/webui/config/model",{method:"POST",headers:Dt(),body:JSON.stringify(a)});if(!l.ok){const c=await l.json();throw new Error(c.detail||"保存模型配置失败")}return await l.json()}async function Z9(){const t=localStorage.getItem("access-token"),e=await St("/api/webui/setup/complete",{method:"POST",headers:{Authorization:`Bearer ${t}`}});if(!e.ok){const n=await e.json();throw new Error(n.message||"标记配置完成失败")}return await e.json()}async function Jy(){const t=await St("/api/webui/system/restart",{method:"POST",headers:Dt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"重启失败")}return await t.json()}async function mie(){const t=await St("/api/webui/system/status",{method:"GET",headers:Dt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取状态失败")}return await t.json()}function pie(){const t=Zi(),{toast:e}=fs(),[n,r]=b.useState(0),[s,i]=b.useState(!1),[a,l]=b.useState(!1),[c,d]=b.useState(!0),[h,m]=b.useState({qq_account:0,nickname:"",alias_names:[]}),[g,x]=b.useState({personality:"是一个女大学生,现在在读大二,会刷贴吧。",reply_style:"请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景。可以参考贴吧,知乎和微博的回复风格。",interest:"对技术相关话题,游戏和动漫相关话题感兴趣,也对日常话题感兴趣,不喜欢太过沉重严肃的话题",plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 +2.如果相同的内容已经被执行,请不要重复执行 +3.请控制你的发言频率,不要太过频繁的发言 +4.如果有人对你感到厌烦,请减少回复 +5.如果有人对你进行攻击,或者情绪激动,请你以合适的方法应对`,private_plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 +2.如果相同的内容已经被执行,请不要重复执行 +3.某句话如果已经被回复过,不要重复回复`}),[y,w]=b.useState({emoji_chance:.4,max_reg_num:40,do_replace:!0,check_interval:10,steal_emoji:!0,content_filtration:!1,filtration_prompt:"符合公序良俗"}),[S,k]=b.useState({enable_tool:!0,enable_mood:!1,mood_update_threshold:1,emotion_style:"情绪较为稳定,但遇遇特定事件的时候起伏较大",all_global:!0}),[j,N]=b.useState({api_key:""}),[T,E]=b.useState(!1),[_,M]=b.useState(""),I=[{id:"bot-basic",title:"Bot基础",description:"配置机器人的基本信息",icon:Eee},{id:"personality",title:"人格配置",description:"定义机器人的性格和说话风格",icon:mI},{id:"emoji",title:"表情包",description:"配置表情包相关设置",icon:Nj},{id:"other",title:"其他设置",description:"工具、情绪系统等配置",icon:Xu},{id:"siliconflow",title:"API配置",description:"配置硅基流动API密钥",icon:fI}],P=(n+1)/I.length*100;b.useEffect(()=>{(async()=>{try{d(!0);const[X,J,G,R,ie]=await Promise.all([sie(),iie(),aie(),oie(),lie()]);m(X),x(J),w(G),k(R),N(ie)}catch(X){e({title:"加载配置失败",description:X instanceof Error?X.message:"无法加载现有配置,将使用默认值",variant:"destructive"})}finally{d(!1)}})()},[e]);const L=async()=>{l(!0);try{switch(n){case 0:await cie(h);break;case 1:await uie(g);break;case 2:await die(y);break;case 3:await hie(S);break;case 4:await fie(j);break}return e({title:"保存成功",description:`${I[n].title}配置已保存`}),!0}catch(B){return e({title:"保存失败",description:B instanceof Error?B.message:"未知错误",variant:"destructive"}),!1}finally{l(!1)}},H=async()=>{await L()&&n{n>0&&r(n-1)},ee=async()=>{i(!0),E(!0);try{if(M("正在保存API配置..."),!await L()){i(!1),E(!1);return}M("正在完成初始化..."),await Z9(),M("正在重启麦麦..."),await Jy(),e({title:"配置完成",description:"麦麦正在重启以应用新配置..."}),M("等待麦麦重启完成...");const X=60;let J=0,G=!1;for(;JsetTimeout(R,1e3));try{(await mie()).running&&(G=!0,M("重启成功!正在跳转..."))}catch{J++}}if(!G)throw new Error("重启超时,请手动检查麦麦状态");setTimeout(()=>{t({to:"/"})},1e3)}catch(B){E(!1),e({title:"配置失败",description:B instanceof Error?B.message:"未知错误",variant:"destructive"})}finally{i(!1)}},z=async()=>{try{await Z9(),t({to:"/"})}catch(B){e({title:"跳过失败",description:B instanceof Error?B.message:"未知错误",variant:"destructive"})}},Q=()=>{switch(n){case 0:return o.jsx(Jse,{config:h,onChange:m});case 1:return o.jsx(eie,{config:g,onChange:x});case 2:return o.jsx(tie,{config:y,onChange:w});case 3:return o.jsx(nie,{config:S,onChange:k});case 4:return o.jsx(rie,{config:j,onChange:N});default:return null}};return o.jsxs("div",{className:"relative flex min-h-screen flex-col items-center justify-center overflow-hidden bg-gradient-to-br from-primary/5 via-background to-secondary/5 p-4 md:p-6",children:[T&&o.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm",children:o.jsxs("div",{className:"mx-auto flex max-w-md flex-col items-center space-y-6 rounded-lg border bg-card p-8 text-center shadow-lg",children:[o.jsx("div",{className:"flex h-20 w-20 items-center justify-center rounded-full bg-primary/10",children:o.jsx(Uc,{className:"h-10 w-10 animate-spin text-primary"})}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),o.jsx("p",{className:"text-muted-foreground",children:_})]}),o.jsx("div",{className:"w-full",children:o.jsx("div",{className:"h-2 w-full overflow-hidden rounded-full bg-secondary",children:o.jsx("div",{className:"h-full w-full animate-pulse bg-primary",style:{animation:"pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite"}})})}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"请稍候,这可能需要一分钟..."})]})}),o.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[o.jsx("div",{className:"absolute left-1/4 top-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-primary/5 blur-3xl"}),o.jsx("div",{className:"absolute right-1/4 bottom-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-secondary/5 blur-3xl"})]}),c?o.jsxs("div",{className:"relative z-10 text-center",children:[o.jsx("div",{className:"mx-auto mb-4 flex h-16 w-16 items-center justify-center",children:o.jsx("div",{className:"h-12 w-12 animate-spin rounded-full border-4 border-primary border-t-transparent"})}),o.jsx("p",{className:"text-lg font-medium",children:"加载配置中..."}),o.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"正在读取现有配置"})]}):o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"relative z-10 w-full max-w-4xl",children:[o.jsxs("div",{className:"mb-6 md:mb-8 text-center",children:[o.jsx("div",{className:"mx-auto mb-4 flex h-12 w-12 md:h-16 md:w-16 items-center justify-center rounded-2xl bg-primary/10",children:o.jsx(Tee,{className:"h-6 w-6 md:h-8 md:w-8 text-primary",strokeWidth:2,fill:"none"})}),o.jsx("h1",{className:"mb-2 text-2xl md:text-3xl font-bold",children:"首次配置向导"}),o.jsxs("p",{className:"text-sm md:text-base text-muted-foreground",children:["让我们一起完成 ",Hj," 的初始配置"]})]}),o.jsxs("div",{className:"mb-6 md:mb-8",children:[o.jsxs("div",{className:"mb-2 flex items-center justify-between text-xs md:text-sm",children:[o.jsxs("span",{className:"text-muted-foreground",children:["步骤 ",n+1," / ",I.length]}),o.jsxs("span",{className:"font-medium text-primary",children:[Math.round(P),"%"]})]}),o.jsx(zp,{value:P,className:"h-2"})]}),o.jsx("div",{className:"mb-6 md:mb-8 flex justify-between",children:I.map((B,X)=>{const J=B.icon;return o.jsxs("div",{className:ve("flex flex-1 flex-col items-center gap-1 md:gap-2",Xt({to:"/"}),className:"gap-2 w-full sm:w-auto",children:[o.jsx(M0,{className:"h-4 w-4"}),"返回首页"]}),o.jsxs(he,{size:"lg",variant:"outline",onClick:()=>window.history.back(),className:"gap-2 w-full sm:w-auto",children:[o.jsx(pI,{className:"h-4 w-4"}),"返回上一页"]})]}),o.jsx("div",{className:"mt-12 pt-8 border-t border-border",children:o.jsx("p",{className:"text-sm text-muted-foreground",children:"如果您认为这是一个错误,请联系系统管理员"})})]})})}var jB=["PageUp","PageDown"],NB=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],CB={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},kf="Slider",[lk,gie,xie]=Dy(kf),[TB]=Ra(kf,[xie]),[vie,eb]=TB(kf),EB=b.forwardRef((t,e)=>{const{name:n,min:r=0,max:s=100,step:i=1,orientation:a="horizontal",disabled:l=!1,minStepsBetweenThumbs:c=0,defaultValue:d=[r],value:h,onValueChange:m=()=>{},onValueCommit:g=()=>{},inverted:x=!1,form:y,...w}=t,S=b.useRef(new Set),k=b.useRef(0),N=a==="horizontal"?yie:bie,[T=[],E]=Gl({prop:h,defaultProp:d,onChange:H=>{[...S.current][k.current]?.focus(),m(H)}}),_=b.useRef(T);function M(H){const U=jie(T,H);L(H,U)}function I(H){L(H,k.current)}function P(){const H=_.current[k.current];T[k.current]!==H&&g(T)}function L(H,U,{commit:ee}={commit:!1}){const z=Eie(i),Q=_ie(Math.round((H-r)/i)*i+r,z),B=xj(Q,[r,s]);E((X=[])=>{const J=kie(X,B,U);if(Tie(J,c*i)){k.current=J.indexOf(B);const G=String(J)!==String(X);return G&&ee&&g(J),G?J:X}else return X})}return o.jsx(vie,{scope:t.__scopeSlider,name:n,disabled:l,min:r,max:s,valueIndexToChangeRef:k,thumbs:S.current,values:T,orientation:a,form:y,children:o.jsx(lk.Provider,{scope:t.__scopeSlider,children:o.jsx(lk.Slot,{scope:t.__scopeSlider,children:o.jsx(N,{"aria-disabled":l,"data-disabled":l?"":void 0,...w,ref:e,onPointerDown:nt(w.onPointerDown,()=>{l||(_.current=T)}),min:r,max:s,inverted:x,onSlideStart:l?void 0:M,onSlideMove:l?void 0:I,onSlideEnd:l?void 0:P,onHomeKeyDown:()=>!l&&L(r,0,{commit:!0}),onEndKeyDown:()=>!l&&L(s,T.length-1,{commit:!0}),onStepKeyDown:({event:H,direction:U})=>{if(!l){const Q=jB.includes(H.key)||H.shiftKey&&NB.includes(H.key)?10:1,B=k.current,X=T[B],J=i*Q*U;L(X+J,B,{commit:!0})}}})})})})});EB.displayName=kf;var[_B,MB]=TB(kf,{startEdge:"left",endEdge:"right",size:"width",direction:1}),yie=b.forwardRef((t,e)=>{const{min:n,max:r,dir:s,inverted:i,onSlideStart:a,onSlideMove:l,onSlideEnd:c,onStepKeyDown:d,...h}=t,[m,g]=b.useState(null),x=Yn(e,N=>g(N)),y=b.useRef(void 0),w=Np(s),S=w==="ltr",k=S&&!i||!S&&i;function j(N){const T=y.current||m.getBoundingClientRect(),E=[0,T.width],M=Vj(E,k?[n,r]:[r,n]);return y.current=T,M(N-T.left)}return o.jsx(_B,{scope:t.__scopeSlider,startEdge:k?"left":"right",endEdge:k?"right":"left",direction:k?1:-1,size:"width",children:o.jsx(AB,{dir:w,"data-orientation":"horizontal",...h,ref:x,style:{...h.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:N=>{const T=j(N.clientX);a?.(T)},onSlideMove:N=>{const T=j(N.clientX);l?.(T)},onSlideEnd:()=>{y.current=void 0,c?.()},onStepKeyDown:N=>{const E=CB[k?"from-left":"from-right"].includes(N.key);d?.({event:N,direction:E?-1:1})}})})}),bie=b.forwardRef((t,e)=>{const{min:n,max:r,inverted:s,onSlideStart:i,onSlideMove:a,onSlideEnd:l,onStepKeyDown:c,...d}=t,h=b.useRef(null),m=Yn(e,h),g=b.useRef(void 0),x=!s;function y(w){const S=g.current||h.current.getBoundingClientRect(),k=[0,S.height],N=Vj(k,x?[r,n]:[n,r]);return g.current=S,N(w-S.top)}return o.jsx(_B,{scope:t.__scopeSlider,startEdge:x?"bottom":"top",endEdge:x?"top":"bottom",size:"height",direction:x?1:-1,children:o.jsx(AB,{"data-orientation":"vertical",...d,ref:m,style:{...d.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:w=>{const S=y(w.clientY);i?.(S)},onSlideMove:w=>{const S=y(w.clientY);a?.(S)},onSlideEnd:()=>{g.current=void 0,l?.()},onStepKeyDown:w=>{const k=CB[x?"from-bottom":"from-top"].includes(w.key);c?.({event:w,direction:k?-1:1})}})})}),AB=b.forwardRef((t,e)=>{const{__scopeSlider:n,onSlideStart:r,onSlideMove:s,onSlideEnd:i,onHomeKeyDown:a,onEndKeyDown:l,onStepKeyDown:c,...d}=t,h=eb(kf,n);return o.jsx(gn.span,{...d,ref:e,onKeyDown:nt(t.onKeyDown,m=>{m.key==="Home"?(a(m),m.preventDefault()):m.key==="End"?(l(m),m.preventDefault()):jB.concat(NB).includes(m.key)&&(c(m),m.preventDefault())}),onPointerDown:nt(t.onPointerDown,m=>{const g=m.target;g.setPointerCapture(m.pointerId),m.preventDefault(),h.thumbs.has(g)?g.focus():r(m)}),onPointerMove:nt(t.onPointerMove,m=>{m.target.hasPointerCapture(m.pointerId)&&s(m)}),onPointerUp:nt(t.onPointerUp,m=>{const g=m.target;g.hasPointerCapture(m.pointerId)&&(g.releasePointerCapture(m.pointerId),i(m))})})}),RB="SliderTrack",DB=b.forwardRef((t,e)=>{const{__scopeSlider:n,...r}=t,s=eb(RB,n);return o.jsx(gn.span,{"data-disabled":s.disabled?"":void 0,"data-orientation":s.orientation,...r,ref:e})});DB.displayName=RB;var ck="SliderRange",PB=b.forwardRef((t,e)=>{const{__scopeSlider:n,...r}=t,s=eb(ck,n),i=MB(ck,n),a=b.useRef(null),l=Yn(e,a),c=s.values.length,d=s.values.map(g=>LB(g,s.min,s.max)),h=c>1?Math.min(...d):0,m=100-Math.max(...d);return o.jsx(gn.span,{"data-orientation":s.orientation,"data-disabled":s.disabled?"":void 0,...r,ref:l,style:{...t.style,[i.startEdge]:h+"%",[i.endEdge]:m+"%"}})});PB.displayName=ck;var uk="SliderThumb",zB=b.forwardRef((t,e)=>{const n=gie(t.__scopeSlider),[r,s]=b.useState(null),i=Yn(e,l=>s(l)),a=b.useMemo(()=>r?n().findIndex(l=>l.ref.current===r):-1,[n,r]);return o.jsx(wie,{...t,ref:i,index:a})}),wie=b.forwardRef((t,e)=>{const{__scopeSlider:n,index:r,name:s,...i}=t,a=eb(uk,n),l=MB(uk,n),[c,d]=b.useState(null),h=Yn(e,j=>d(j)),m=c?a.form||!!c.closest("form"):!0,g=Gz(c),x=a.values[r],y=x===void 0?0:LB(x,a.min,a.max),w=Oie(r,a.values.length),S=g?.[l.size],k=S?Nie(S,y,l.direction):0;return b.useEffect(()=>{if(c)return a.thumbs.add(c),()=>{a.thumbs.delete(c)}},[c,a.thumbs]),o.jsxs("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[l.startEdge]:`calc(${y}% + ${k}px)`},children:[o.jsx(lk.ItemSlot,{scope:t.__scopeSlider,children:o.jsx(gn.span,{role:"slider","aria-label":t["aria-label"]||w,"aria-valuemin":a.min,"aria-valuenow":x,"aria-valuemax":a.max,"aria-orientation":a.orientation,"data-orientation":a.orientation,"data-disabled":a.disabled?"":void 0,tabIndex:a.disabled?void 0:0,...i,ref:h,style:x===void 0?{display:"none"}:t.style,onFocus:nt(t.onFocus,()=>{a.valueIndexToChangeRef.current=r})})}),m&&o.jsx(IB,{name:s??(a.name?a.name+(a.values.length>1?"[]":""):void 0),form:a.form,value:x},r)]})});zB.displayName=uk;var Sie="RadioBubbleInput",IB=b.forwardRef(({__scopeSlider:t,value:e,...n},r)=>{const s=b.useRef(null),i=Yn(s,r),a=Wz(e);return b.useEffect(()=>{const l=s.current;if(!l)return;const c=window.HTMLInputElement.prototype,h=Object.getOwnPropertyDescriptor(c,"value").set;if(a!==e&&h){const m=new Event("input",{bubbles:!0});h.call(l,e),l.dispatchEvent(m)}},[a,e]),o.jsx(gn.input,{style:{display:"none"},...n,ref:i,defaultValue:e})});IB.displayName=Sie;function kie(t=[],e,n){const r=[...t];return r[n]=e,r.sort((s,i)=>s-i)}function LB(t,e,n){const i=100/(n-e)*(t-e);return xj(i,[0,100])}function Oie(t,e){return e>2?`Value ${t+1} of ${e}`:e===2?["Minimum","Maximum"][t]:void 0}function jie(t,e){if(t.length===1)return 0;const n=t.map(s=>Math.abs(s-e)),r=Math.min(...n);return n.indexOf(r)}function Nie(t,e,n){const r=t/2,i=Vj([0,50],[0,r]);return(r-i(e)*n)*n}function Cie(t){return t.slice(0,-1).map((e,n)=>t[n+1]-e)}function Tie(t,e){if(e>0){const n=Cie(t);return Math.min(...n)>=e}return!0}function Vj(t,e){return n=>{if(t[0]===t[1]||e[0]===e[1])return e[0];const r=(e[1]-e[0])/(t[1]-t[0]);return e[0]+r*(n-t[0])}}function Eie(t){return(String(t).split(".")[1]||"").length}function _ie(t,e){const n=Math.pow(10,e);return Math.round(t*n)/n}var BB=EB,Mie=DB,Aie=PB,Rie=zB;const Ip=b.forwardRef(({className:t,...e},n)=>o.jsxs(BB,{ref:n,className:ve("relative flex w-full touch-none select-none items-center",t),...e,children:[o.jsx(Mie,{className:"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20",children:o.jsx(Aie,{className:"absolute h-full bg-primary"})}),o.jsx(Rie,{className:"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"})]}));Ip.displayName=BB.displayName;const Vt=pee,Ut=gee,$t=b.forwardRef(({className:t,children:e,...n},r)=>o.jsxs(Zz,{ref:r,className:ve("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",t),...n,children:[e,o.jsx(uee,{asChild:!0,children:o.jsx(nd,{className:"h-4 w-4 opacity-50"})})]}));$t.displayName=Zz.displayName;const FB=b.forwardRef(({className:t,...e},n)=>o.jsx(Jz,{ref:n,className:ve("flex cursor-default items-center justify-center py-1",t),...e,children:o.jsx(A0,{className:"h-4 w-4"})}));FB.displayName=Jz.displayName;const qB=b.forwardRef(({className:t,...e},n)=>o.jsx(eI,{ref:n,className:ve("flex cursor-default items-center justify-center py-1",t),...e,children:o.jsx(nd,{className:"h-4 w-4"})}));qB.displayName=eI.displayName;const Ht=b.forwardRef(({className:t,children:e,position:n="popper",...r},s)=>o.jsx(dee,{children:o.jsxs(tI,{ref:s,className:ve("relative z-[100] max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-hidden rounded-md border border-border bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",n==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:n,...r,children:[o.jsx(FB,{}),o.jsx(hee,{className:ve("p-1",n==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:e}),o.jsx(qB,{})]})}));Ht.displayName=tI.displayName;const Die=b.forwardRef(({className:t,...e},n)=>o.jsx(nI,{ref:n,className:ve("px-2 py-1.5 text-sm font-semibold",t),...e}));Die.displayName=nI.displayName;const De=b.forwardRef(({className:t,children:e,...n},r)=>o.jsxs(rI,{ref:r,className:ve("relative flex w-full cursor-default select-none items-center rounded-sm py-2 pl-2 pr-8 text-sm outline-none bg-white dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800 focus:bg-gray-100 dark:focus:bg-gray-800 data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),...n,children:[o.jsx("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:o.jsx(fee,{children:o.jsx(Ro,{className:"h-4 w-4"})})}),o.jsx(mee,{children:e})]}));De.displayName=rI.displayName;const Pie=b.forwardRef(({className:t,...e},n)=>o.jsx(sI,{ref:n,className:ve("-mx-1 my-1 h-px bg-muted",t),...e}));Pie.displayName=sI.displayName;function zie(t){const e=Iie(t),n=b.forwardRef((r,s)=>{const{children:i,...a}=r,l=b.Children.toArray(i),c=l.find(Bie);if(c){const d=c.props.children,h=l.map(m=>m===c?b.Children.count(d)>1?b.Children.only(null):b.isValidElement(d)?d.props.children:null:m);return o.jsx(e,{...a,ref:s,children:b.isValidElement(d)?b.cloneElement(d,void 0,h):null})}return o.jsx(e,{...a,ref:s,children:i})});return n.displayName=`${t}.Slot`,n}function Iie(t){const e=b.forwardRef((n,r)=>{const{children:s,...i}=n;if(b.isValidElement(s)){const a=qie(s),l=Fie(i,s.props);return s.type!==b.Fragment&&(l.ref=r?Hc(r,a):a),b.cloneElement(s,l)}return b.Children.count(s)>1?b.Children.only(null):null});return e.displayName=`${t}.SlotClone`,e}var Lie=Symbol("radix.slottable");function Bie(t){return b.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===Lie}function Fie(t,e){const n={...e};for(const r in e){const s=t[r],i=e[r];/^on[A-Z]/.test(r)?s&&i?n[r]=(...l)=>{const c=i(...l);return s(...l),c}:s&&(n[r]=s):r==="style"?n[r]={...s,...i}:r==="className"&&(n[r]=[s,i].filter(Boolean).join(" "))}return{...t,...n}}function qie(t){let e=Object.getOwnPropertyDescriptor(t.props,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning;return n?t.ref:(e=Object.getOwnPropertyDescriptor(t,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning,n?t.props.ref:t.props.ref||t.ref)}var tb="Popover",[$B]=Ra(tb,[gf]),Lp=gf(),[$ie,iu]=$B(tb),HB=t=>{const{__scopePopover:e,children:n,open:r,defaultOpen:s,onOpenChange:i,modal:a=!1}=t,l=Lp(e),c=b.useRef(null),[d,h]=b.useState(!1),[m,g]=Gl({prop:r,defaultProp:s??!1,onChange:i,caller:tb});return o.jsx(By,{...l,children:o.jsx($ie,{scope:e,contentId:Ui(),triggerRef:c,open:m,onOpenChange:g,onOpenToggle:b.useCallback(()=>g(x=>!x),[g]),hasCustomAnchor:d,onCustomAnchorAdd:b.useCallback(()=>h(!0),[]),onCustomAnchorRemove:b.useCallback(()=>h(!1),[]),modal:a,children:n})})};HB.displayName=tb;var QB="PopoverAnchor",Hie=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=iu(QB,n),i=Lp(n),{onCustomAnchorAdd:a,onCustomAnchorRemove:l}=s;return b.useEffect(()=>(a(),()=>l()),[a,l]),o.jsx(Fy,{...i,...r,ref:e})});Hie.displayName=QB;var VB="PopoverTrigger",UB=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=iu(VB,n),i=Lp(n),a=Yn(e,s.triggerRef),l=o.jsx(gn.button,{type:"button","aria-haspopup":"dialog","aria-expanded":s.open,"aria-controls":s.contentId,"data-state":KB(s.open),...r,ref:a,onClick:nt(t.onClick,s.onOpenToggle)});return s.hasCustomAnchor?l:o.jsx(Fy,{asChild:!0,...i,children:l})});UB.displayName=VB;var Uj="PopoverPortal",[Qie,Vie]=$B(Uj,{forceMount:void 0}),WB=t=>{const{__scopePopover:e,forceMount:n,children:r,container:s}=t,i=iu(Uj,e);return o.jsx(Qie,{scope:e,forceMount:n,children:o.jsx(si,{present:n||i.open,children:o.jsx(Ly,{asChild:!0,container:s,children:r})})})};WB.displayName=Uj;var Xh="PopoverContent",GB=b.forwardRef((t,e)=>{const n=Vie(Xh,t.__scopePopover),{forceMount:r=n.forceMount,...s}=t,i=iu(Xh,t.__scopePopover);return o.jsx(si,{present:r||i.open,children:i.modal?o.jsx(Wie,{...s,ref:e}):o.jsx(Gie,{...s,ref:e})})});GB.displayName=Xh;var Uie=zie("PopoverContent.RemoveScroll"),Wie=b.forwardRef((t,e)=>{const n=iu(Xh,t.__scopePopover),r=b.useRef(null),s=Yn(e,r),i=b.useRef(!1);return b.useEffect(()=>{const a=r.current;if(a)return iI(a)},[]),o.jsx(aI,{as:Uie,allowPinchZoom:!0,children:o.jsx(XB,{...t,ref:s,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:nt(t.onCloseAutoFocus,a=>{a.preventDefault(),i.current||n.triggerRef.current?.focus()}),onPointerDownOutside:nt(t.onPointerDownOutside,a=>{const l=a.detail.originalEvent,c=l.button===0&&l.ctrlKey===!0,d=l.button===2||c;i.current=d},{checkForDefaultPrevented:!1}),onFocusOutside:nt(t.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1})})})}),Gie=b.forwardRef((t,e)=>{const n=iu(Xh,t.__scopePopover),r=b.useRef(!1),s=b.useRef(!1);return o.jsx(XB,{...t,ref:e,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{t.onCloseAutoFocus?.(i),i.defaultPrevented||(r.current||n.triggerRef.current?.focus(),i.preventDefault()),r.current=!1,s.current=!1},onInteractOutside:i=>{t.onInteractOutside?.(i),i.defaultPrevented||(r.current=!0,i.detail.originalEvent.type==="pointerdown"&&(s.current=!0));const a=i.target;n.triggerRef.current?.contains(a)&&i.preventDefault(),i.detail.originalEvent.type==="focusin"&&s.current&&i.preventDefault()}})}),XB=b.forwardRef((t,e)=>{const{__scopePopover:n,trapFocus:r,onOpenAutoFocus:s,onCloseAutoFocus:i,disableOutsidePointerEvents:a,onEscapeKeyDown:l,onPointerDownOutside:c,onFocusOutside:d,onInteractOutside:h,...m}=t,g=iu(Xh,n),x=Lp(n);return oI(),o.jsx(lI,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:s,onUnmountAutoFocus:i,children:o.jsx(kj,{asChild:!0,disableOutsidePointerEvents:a,onInteractOutside:h,onEscapeKeyDown:l,onPointerDownOutside:c,onFocusOutside:d,onDismiss:()=>g.onOpenChange(!1),children:o.jsx(Oj,{"data-state":KB(g.open),role:"dialog",id:g.contentId,...x,...m,ref:e,style:{...m.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),YB="PopoverClose",Xie=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=iu(YB,n);return o.jsx(gn.button,{type:"button",...r,ref:e,onClick:nt(t.onClick,()=>s.onOpenChange(!1))})});Xie.displayName=YB;var Yie="PopoverArrow",Kie=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=Lp(n);return o.jsx(jj,{...s,...r,ref:e})});Kie.displayName=Yie;function KB(t){return t?"open":"closed"}var Zie=HB,Jie=UB,eae=WB,ZB=GB;const Po=Zie,zo=Jie,Xa=b.forwardRef(({className:t,align:e="center",sideOffset:n=4,...r},s)=>o.jsx(eae,{children:o.jsx(ZB,{ref:s,align:e,sideOffset:n,className:ve("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]",t),...r})}));Xa.displayName=ZB.displayName;const au="/api/webui/config";async function J9(){const e=await(await St(`${au}/bot`)).json();if(!e.success)throw new Error("获取配置数据失败");return e.config}async function Rh(){const e=await(await St(`${au}/model`)).json();if(!e.success)throw new Error("获取模型配置数据失败");return e.config}async function eE(t){const n=await(await St(`${au}/bot`,{method:"POST",headers:Dt(),body:JSON.stringify(t)})).json();if(!n.success)throw new Error(n.message||"保存配置失败")}async function tae(){const e=await(await St(`${au}/bot/raw`)).json();if(!e.success)throw new Error("获取配置源代码失败");return e.content}async function nae(t){const n=await(await St(`${au}/bot/raw`,{method:"POST",headers:Dt(),body:JSON.stringify({raw_content:t})})).json();if(!n.success)throw new Error(n.message||"保存配置失败")}async function zv(t){const n=await(await St(`${au}/model`,{method:"POST",headers:Dt(),body:JSON.stringify(t)})).json();if(!n.success)throw new Error(n.message||"保存配置失败")}async function rae(t,e){const r=await(await St(`${au}/bot/section/${t}`,{method:"POST",headers:Dt(),body:JSON.stringify(e)})).json();if(!r.success)throw new Error(r.message||`保存配置节 ${t} 失败`)}async function dk(t,e){const r=await(await St(`${au}/model/section/${t}`,{method:"POST",headers:Dt(),body:JSON.stringify(e)})).json();if(!r.success)throw new Error(r.message||`保存配置节 ${t} 失败`)}async function sae(t,e="openai",n="/models"){const r=new URLSearchParams({provider_name:t,parser:e,endpoint:n}),s=await St(`/api/webui/models/list?${r}`);if(!s.ok){const a=await s.json().catch(()=>({}));throw new Error(a.detail||`获取模型列表失败 (${s.status})`)}const i=await s.json();if(!i.success)throw new Error("获取模型列表失败");return i.models}const iae=wf("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"}}),ga=b.forwardRef(({className:t,variant:e,...n},r)=>o.jsx("div",{ref:r,role:"alert",className:ve(iae({variant:e}),t),...n}));ga.displayName="Alert";const aae=b.forwardRef(({className:t,...e},n)=>o.jsx("h5",{ref:n,className:ve("mb-1 font-medium leading-none tracking-tight",t),...e}));aae.displayName="AlertTitle";const xa=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:ve("text-sm [&_p]:leading-relaxed",t),...e}));xa.displayName="AlertDescription";function Wj({onRestartComplete:t,onRestartFailed:e}){const[n,r]=b.useState(0),[s,i]=b.useState("restarting"),[a,l]=b.useState(0),[c,d]=b.useState(0);b.useEffect(()=>{const g=setInterval(()=>{r(w=>w>=90?w:w+1)},200),x=setInterval(()=>{l(w=>w+1)},1e3),y=setTimeout(()=>{i("checking"),h()},3e3);return()=>{clearInterval(g),clearInterval(x),clearTimeout(y)}},[]);const h=()=>{const x=async()=>{try{if(d(w=>w+1),(await fetch("/api/webui/system/status",{method:"GET",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(3e3)})).ok)r(100),i("success"),setTimeout(()=>{t?.()},1500);else throw new Error("Status check failed")}catch{c<60?setTimeout(x,2e3):(i("failed"),e?.())}};x()},m=g=>{const x=Math.floor(g/60),y=g%60;return`${x}:${y.toString().padStart(2,"0")}`};return o.jsx("div",{className:"fixed inset-0 bg-background/95 backdrop-blur-sm z-50 flex items-center justify-center",children:o.jsxs("div",{className:"max-w-md w-full mx-4 space-y-8",children:[o.jsxs("div",{className:"flex flex-col items-center space-y-4",children:[s==="restarting"&&o.jsxs(o.Fragment,{children:[o.jsx(Uc,{className:"h-16 w-16 text-primary animate-spin"}),o.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),o.jsx("p",{className:"text-muted-foreground text-center",children:"请稍候,麦麦正在重启中..."})]}),s==="checking"&&o.jsxs(o.Fragment,{children:[o.jsx(Uc,{className:"h-16 w-16 text-primary animate-spin"}),o.jsx("h2",{className:"text-2xl font-bold",children:"检查服务状态"}),o.jsxs("p",{className:"text-muted-foreground text-center",children:["等待服务恢复... (尝试 ",c,"/60)"]})]}),s==="success"&&o.jsxs(o.Fragment,{children:[o.jsx(Qc,{className:"h-16 w-16 text-green-500"}),o.jsx("h2",{className:"text-2xl font-bold",children:"重启成功"}),o.jsx("p",{className:"text-muted-foreground text-center",children:"正在跳转到登录页面..."})]}),s==="failed"&&o.jsxs(o.Fragment,{children:[o.jsx(Vc,{className:"h-16 w-16 text-destructive"}),o.jsx("h2",{className:"text-2xl font-bold",children:"重启超时"}),o.jsx("p",{className:"text-muted-foreground text-center",children:"服务未能在预期时间内恢复,请手动检查或刷新页面"})]})]}),s!=="failed"&&o.jsxs("div",{className:"space-y-2",children:[o.jsx(zp,{value:n,className:"h-2"}),o.jsxs("div",{className:"flex justify-between text-sm text-muted-foreground",children:[o.jsxs("span",{children:[n,"%"]}),o.jsxs("span",{children:["已用时: ",m(a)]})]})]}),o.jsx("div",{className:"bg-muted/50 rounded-lg p-4 space-y-2",children:o.jsxs("p",{className:"text-sm text-muted-foreground",children:[s==="restarting"&&"🔄 配置已保存,正在重启主程序...",s==="checking"&&"⏳ 正在等待服务恢复,请勿关闭页面...",s==="success"&&"✅ 配置已生效,服务运行正常",s==="failed"&&"⚠️ 如果长时间无响应,请尝试手动重启"]})}),o.jsx("div",{className:"bg-yellow-500/10 border border-yellow-500/50 rounded-lg p-4",children:o.jsxs("p",{className:"text-sm text-yellow-900 dark:text-yellow-100",children:[o.jsx("strong",{children:"⚠️ 重要提示:"})," 由于技术原因,使用重启功能后,将无法再使用 ",o.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。如需结束程序,请使用脚本目录下的进程管理脚本。"]})}),s==="failed"&&o.jsxs("div",{className:"flex gap-2",children:[o.jsx("button",{onClick:()=>window.location.reload(),className:"flex-1 px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary/90",children:"刷新页面"}),o.jsx("button",{onClick:()=>{i("checking"),d(0),h()},className:"flex-1 px-4 py-2 bg-secondary text-secondary-foreground rounded-md hover:bg-secondary/90",children:"重试检测"})]})]})})}let hk=[],JB=[];(()=>{let t="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,n=0;e>1;if(t=JB[r])e=r+1;else return!0;if(e==n)return!1}}function tE(t){return t>=127462&&t<=127487}const nE=8205;function lae(t,e,n=!0,r=!0){return(n?eF:cae)(t,e,r)}function eF(t,e,n){if(e==t.length)return e;e&&tF(t.charCodeAt(e))&&nF(t.charCodeAt(e-1))&&e--;let r=N4(t,e);for(e+=rE(r);e=0&&tE(N4(t,a));)i++,a-=2;if(i%2==0)break;e+=2}else break}return e}function cae(t,e,n){for(;e>0;){let r=eF(t,e-2,n);if(r=56320&&t<57344}function nF(t){return t>=55296&&t<56320}function rE(t){return t<65536?1:2}class jn{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,n,r){[e,n]=Yh(this,e,n);let s=[];return this.decompose(0,e,s,2),r.length&&r.decompose(0,r.length,s,3),this.decompose(n,this.length,s,1),rv.from(s,this.length-(n-e)+r.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,n=this.length){[e,n]=Yh(this,e,n);let r=[];return this.decompose(e,n,r,0),rv.from(r,n-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let n=this.scanIdentical(e,1),r=this.length-this.scanIdentical(e,-1),s=new x0(this),i=new x0(e);for(let a=n,l=n;;){if(s.next(a),i.next(a),a=0,s.lineBreak!=i.lineBreak||s.done!=i.done||s.value!=i.value)return!1;if(l+=s.value.length,s.done||l>=r)return!0}}iter(e=1){return new x0(this,e)}iterRange(e,n=this.length){return new rF(this,e,n)}iterLines(e,n){let r;if(e==null)r=this.iter();else{n==null&&(n=this.lines+1);let s=this.line(e).from;r=this.iterRange(s,Math.max(s,n==this.lines+1?this.length:n<=1?0:this.line(n-1).to))}return new sF(r)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?jn.empty:e.length<=32?new Hr(e):rv.from(Hr.split(e,[]))}}class Hr extends jn{constructor(e,n=uae(e)){super(),this.text=e,this.length=n}get lines(){return this.text.length}get children(){return null}lineInner(e,n,r,s){for(let i=0;;i++){let a=this.text[i],l=s+a.length;if((n?r:l)>=e)return new dae(s,l,r,a);s=l+1,r++}}decompose(e,n,r,s){let i=e<=0&&n>=this.length?this:new Hr(sE(this.text,e,n),Math.min(n,this.length)-Math.max(0,e));if(s&1){let a=r.pop(),l=sv(i.text,a.text.slice(),0,i.length);if(l.length<=32)r.push(new Hr(l,a.length+i.length));else{let c=l.length>>1;r.push(new Hr(l.slice(0,c)),new Hr(l.slice(c)))}}else r.push(i)}replace(e,n,r){if(!(r instanceof Hr))return super.replace(e,n,r);[e,n]=Yh(this,e,n);let s=sv(this.text,sv(r.text,sE(this.text,0,e)),n),i=this.length+r.length-(n-e);return s.length<=32?new Hr(s,i):rv.from(Hr.split(s,[]),i)}sliceString(e,n=this.length,r=` +`){[e,n]=Yh(this,e,n);let s="";for(let i=0,a=0;i<=n&&ae&&a&&(s+=r),ei&&(s+=l.slice(Math.max(0,e-i),n-i)),i=c+1}return s}flatten(e){for(let n of this.text)e.push(n)}scanIdentical(){return 0}static split(e,n){let r=[],s=-1;for(let i of e)r.push(i),s+=i.length+1,r.length==32&&(n.push(new Hr(r,s)),r=[],s=-1);return s>-1&&n.push(new Hr(r,s)),n}}let rv=class vh extends jn{constructor(e,n){super(),this.children=e,this.length=n,this.lines=0;for(let r of e)this.lines+=r.lines}lineInner(e,n,r,s){for(let i=0;;i++){let a=this.children[i],l=s+a.length,c=r+a.lines-1;if((n?c:l)>=e)return a.lineInner(e,n,r,s);s=l+1,r=c+1}}decompose(e,n,r,s){for(let i=0,a=0;a<=n&&i=a){let d=s&((a<=e?1:0)|(c>=n?2:0));a>=e&&c<=n&&!d?r.push(l):l.decompose(e-a,n-a,r,d)}a=c+1}}replace(e,n,r){if([e,n]=Yh(this,e,n),r.lines=i&&n<=l){let c=a.replace(e-i,n-i,r),d=this.lines-a.lines+c.lines;if(c.lines>4&&c.lines>d>>6){let h=this.children.slice();return h[s]=c,new vh(h,this.length-(n-e)+r.length)}return super.replace(i,l,c)}i=l+1}return super.replace(e,n,r)}sliceString(e,n=this.length,r=` +`){[e,n]=Yh(this,e,n);let s="";for(let i=0,a=0;ie&&i&&(s+=r),ea&&(s+=l.sliceString(e-a,n-a,r)),a=c+1}return s}flatten(e){for(let n of this.children)n.flatten(e)}scanIdentical(e,n){if(!(e instanceof vh))return 0;let r=0,[s,i,a,l]=n>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;s+=n,i+=n){if(s==a||i==l)return r;let c=this.children[s],d=e.children[i];if(c!=d)return r+c.scanIdentical(d,n);r+=c.length+1}}static from(e,n=e.reduce((r,s)=>r+s.length+1,-1)){let r=0;for(let x of e)r+=x.lines;if(r<32){let x=[];for(let y of e)y.flatten(x);return new Hr(x,n)}let s=Math.max(32,r>>5),i=s<<1,a=s>>1,l=[],c=0,d=-1,h=[];function m(x){let y;if(x.lines>i&&x instanceof vh)for(let w of x.children)m(w);else x.lines>a&&(c>a||!c)?(g(),l.push(x)):x instanceof Hr&&c&&(y=h[h.length-1])instanceof Hr&&x.lines+y.lines<=32?(c+=x.lines,d+=x.length+1,h[h.length-1]=new Hr(y.text.concat(x.text),y.length+1+x.length)):(c+x.lines>s&&g(),c+=x.lines,d+=x.length+1,h.push(x))}function g(){c!=0&&(l.push(h.length==1?h[0]:vh.from(h,d)),d=-1,c=h.length=0)}for(let x of e)m(x);return g(),l.length==1?l[0]:new vh(l,n)}};jn.empty=new Hr([""],0);function uae(t){let e=-1;for(let n of t)e+=n.length+1;return e}function sv(t,e,n=0,r=1e9){for(let s=0,i=0,a=!0;i=n&&(c>r&&(l=l.slice(0,r-s)),s0?1:(e instanceof Hr?e.text.length:e.children.length)<<1]}nextInner(e,n){for(this.done=this.lineBreak=!1;;){let r=this.nodes.length-1,s=this.nodes[r],i=this.offsets[r],a=i>>1,l=s instanceof Hr?s.text.length:s.children.length;if(a==(n>0?l:0)){if(r==0)return this.done=!0,this.value="",this;n>0&&this.offsets[r-1]++,this.nodes.pop(),this.offsets.pop()}else if((i&1)==(n>0?0:1)){if(this.offsets[r]+=n,e==0)return this.lineBreak=!0,this.value=` +`,this;e--}else if(s instanceof Hr){let c=s.text[a+(n<0?-1:0)];if(this.offsets[r]+=n,c.length>Math.max(0,e))return this.value=e==0?c:n>0?c.slice(e):c.slice(0,c.length-e),this;e-=c.length}else{let c=s.children[a+(n<0?-1:0)];e>c.length?(e-=c.length,this.offsets[r]+=n):(n<0&&this.offsets[r]--,this.nodes.push(c),this.offsets.push(n>0?1:(c instanceof Hr?c.text.length:c.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class rF{constructor(e,n,r){this.value="",this.done=!1,this.cursor=new x0(e,n>r?-1:1),this.pos=n>r?e.length:0,this.from=Math.min(n,r),this.to=Math.max(n,r)}nextInner(e,n){if(n<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,n<0?this.pos-this.to:this.from-this.pos);let r=n<0?this.pos-this.from:this.to-this.pos;e>r&&(e=r),r-=e;let{value:s}=this.cursor.next(e);return this.pos+=(s.length+e)*n,this.value=s.length<=r?s:n<0?s.slice(s.length-r):s.slice(0,r),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class sF{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:n,lineBreak:r,value:s}=this.inner.next(e);return n&&this.afterBreak?(this.value="",this.afterBreak=!1):n?(this.done=!0,this.value=""):r?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol<"u"&&(jn.prototype[Symbol.iterator]=function(){return this.iter()},x0.prototype[Symbol.iterator]=rF.prototype[Symbol.iterator]=sF.prototype[Symbol.iterator]=function(){return this});class dae{constructor(e,n,r,s){this.from=e,this.to=n,this.number=r,this.text=s}get length(){return this.to-this.from}}function Yh(t,e,n){return e=Math.max(0,Math.min(t.length,e)),[e,Math.max(e,Math.min(t.length,n))]}function Ds(t,e,n=!0,r=!0){return lae(t,e,n,r)}function hae(t){return t>=56320&&t<57344}function fae(t){return t>=55296&&t<56320}function gi(t,e){let n=t.charCodeAt(e);if(!fae(n)||e+1==t.length)return n;let r=t.charCodeAt(e+1);return hae(r)?(n-55296<<10)+(r-56320)+65536:n}function Gj(t){return t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode((t>>10)+55296,(t&1023)+56320))}function wo(t){return t<65536?1:2}const fk=/\r\n?|\n/;var Rs=(function(t){return t[t.Simple=0]="Simple",t[t.TrackDel=1]="TrackDel",t[t.TrackBefore=2]="TrackBefore",t[t.TrackAfter=3]="TrackAfter",t})(Rs||(Rs={}));class Do{constructor(e){this.sections=e}get length(){let e=0;for(let n=0;ne)return i+(e-s);i+=l}else{if(r!=Rs.Simple&&d>=e&&(r==Rs.TrackDel&&se||r==Rs.TrackBefore&&se))return null;if(d>e||d==e&&n<0&&!l)return e==s||n<0?i:i+c;i+=c}s=d}if(e>s)throw new RangeError(`Position ${e} is out of range for changeset of length ${s}`);return i}touchesRange(e,n=e){for(let r=0,s=0;r=0&&s<=n&&l>=e)return sn?"cover":!0;s=l}return!1}toString(){let e="";for(let n=0;n=0?":"+s:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(n=>typeof n!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new Do(e)}static create(e){return new Do(e)}}class cs extends Do{constructor(e,n){super(e),this.inserted=n}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return mk(this,(n,r,s,i,a)=>e=e.replace(s,s+(r-n),a),!1),e}mapDesc(e,n=!1){return pk(this,e,n,!0)}invert(e){let n=this.sections.slice(),r=[];for(let s=0,i=0;s=0){n[s]=l,n[s+1]=a;let c=s>>1;for(;r.length0&&Lc(r,n,i.text),i.forward(h),l+=h}let d=e[a++];for(;l>1].toJSON()))}return e}static of(e,n,r){let s=[],i=[],a=0,l=null;function c(h=!1){if(!h&&!s.length)return;ag||m<0||g>n)throw new RangeError(`Invalid change range ${m} to ${g} (in doc of length ${n})`);let y=x?typeof x=="string"?jn.of(x.split(r||fk)):x:jn.empty,w=y.length;if(m==g&&w==0)return;ma&&Fs(s,m-a,-1),Fs(s,g-m,w),Lc(i,s,y),a=g}}return d(e),c(!l),l}static empty(e){return new cs(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let n=[],r=[];for(let s=0;sl&&typeof a!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(i.length==1)n.push(i[0],0);else{for(;r.length=0&&n<=0&&n==t[s+1]?t[s]+=e:s>=0&&e==0&&t[s]==0?t[s+1]+=n:r?(t[s]+=e,t[s+1]+=n):t.push(e,n)}function Lc(t,e,n){if(n.length==0)return;let r=e.length-2>>1;if(r>1])),!(n||a==t.sections.length||t.sections[a+1]<0);)l=t.sections[a++],c=t.sections[a++];e(s,d,i,h,m),s=d,i=h}}}function pk(t,e,n,r=!1){let s=[],i=r?[]:null,a=new z0(t),l=new z0(e);for(let c=-1;;){if(a.done&&l.len||l.done&&a.len)throw new Error("Mismatched change set lengths");if(a.ins==-1&&l.ins==-1){let d=Math.min(a.len,l.len);Fs(s,d,-1),a.forward(d),l.forward(d)}else if(l.ins>=0&&(a.ins<0||c==a.i||a.off==0&&(l.len=0&&c=0){let d=0,h=a.len;for(;h;)if(l.ins==-1){let m=Math.min(h,l.len);d+=m,h-=m,l.forward(m)}else if(l.ins==0&&l.lenc||a.ins>=0&&a.len>c)&&(l||r.length>d),i.forward2(c),a.forward(c)}}}}class z0{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return n>=e.length?jn.empty:e[n]}textBit(e){let{inserted:n}=this.set,r=this.i-2>>1;return r>=n.length&&!e?jn.empty:n[r].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class Hu{constructor(e,n,r){this.from=e,this.to=n,this.flags=r}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(e,n=-1){let r,s;return this.empty?r=s=e.mapPos(this.from,n):(r=e.mapPos(this.from,1),s=e.mapPos(this.to,-1)),r==this.from&&s==this.to?this:new Hu(r,s,this.flags)}extend(e,n=e){if(e<=this.anchor&&n>=this.anchor)return Ae.range(e,n);let r=Math.abs(e-this.anchor)>Math.abs(n-this.anchor)?e:n;return Ae.range(this.anchor,r)}eq(e,n=!1){return this.anchor==e.anchor&&this.head==e.head&&(!n||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return Ae.range(e.anchor,e.head)}static create(e,n,r){return new Hu(e,n,r)}}class Ae{constructor(e,n){this.ranges=e,this.mainIndex=n}map(e,n=-1){return e.empty?this:Ae.create(this.ranges.map(r=>r.map(e,n)),this.mainIndex)}eq(e,n=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let r=0;re.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new Ae(e.ranges.map(n=>Hu.fromJSON(n)),e.main)}static single(e,n=e){return new Ae([Ae.range(e,n)],0)}static create(e,n=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let r=0,s=0;se?8:0)|i)}static normalized(e,n=0){let r=e[n];e.sort((s,i)=>s.from-i.from),n=e.indexOf(r);for(let s=1;si.head?Ae.range(c,l):Ae.range(l,c))}}return new Ae(e,n)}}function aF(t,e){for(let n of t.ranges)if(n.to>e)throw new RangeError("Selection points outside of document")}let Xj=0;class at{constructor(e,n,r,s,i){this.combine=e,this.compareInput=n,this.compare=r,this.isStatic=s,this.id=Xj++,this.default=e([]),this.extensions=typeof i=="function"?i(this):i}get reader(){return this}static define(e={}){return new at(e.combine||(n=>n),e.compareInput||((n,r)=>n===r),e.compare||(e.combine?(n,r)=>n===r:Yj),!!e.static,e.enables)}of(e){return new iv([],this,0,e)}compute(e,n){if(this.isStatic)throw new Error("Can't compute a static facet");return new iv(e,this,1,n)}computeN(e,n){if(this.isStatic)throw new Error("Can't compute a static facet");return new iv(e,this,2,n)}from(e,n){return n||(n=r=>r),this.compute([e],r=>n(r.field(e)))}}function Yj(t,e){return t==e||t.length==e.length&&t.every((n,r)=>n===e[r])}class iv{constructor(e,n,r,s){this.dependencies=e,this.facet=n,this.type=r,this.value=s,this.id=Xj++}dynamicSlot(e){var n;let r=this.value,s=this.facet.compareInput,i=this.id,a=e[i]>>1,l=this.type==2,c=!1,d=!1,h=[];for(let m of this.dependencies)m=="doc"?c=!0:m=="selection"?d=!0:(((n=e[m.id])!==null&&n!==void 0?n:1)&1)==0&&h.push(e[m.id]);return{create(m){return m.values[a]=r(m),1},update(m,g){if(c&&g.docChanged||d&&(g.docChanged||g.selection)||gk(m,h)){let x=r(m);if(l?!iE(x,m.values[a],s):!s(x,m.values[a]))return m.values[a]=x,1}return 0},reconfigure:(m,g)=>{let x,y=g.config.address[i];if(y!=null){let w=Lv(g,y);if(this.dependencies.every(S=>S instanceof at?g.facet(S)===m.facet(S):S instanceof Os?g.field(S,!1)==m.field(S,!1):!0)||(l?iE(x=r(m),w,s):s(x=r(m),w)))return m.values[a]=w,0}else x=r(m);return m.values[a]=x,1}}}}function iE(t,e,n){if(t.length!=e.length)return!1;for(let r=0;rt[c.id]),s=n.map(c=>c.type),i=r.filter(c=>!(c&1)),a=t[e.id]>>1;function l(c){let d=[];for(let h=0;hr===s),e);return e.provide&&(n.provides=e.provide(n)),n}create(e){let n=e.facet(Yx).find(r=>r.field==this);return(n?.create||this.createF)(e)}slot(e){let n=e[this.id]>>1;return{create:r=>(r.values[n]=this.create(r),1),update:(r,s)=>{let i=r.values[n],a=this.updateF(i,s);return this.compareF(i,a)?0:(r.values[n]=a,1)},reconfigure:(r,s)=>{let i=r.facet(Yx),a=s.facet(Yx),l;return(l=i.find(c=>c.field==this))&&l!=a.find(c=>c.field==this)?(r.values[n]=l.create(r),1):s.config.address[this.id]!=null?(r.values[n]=s.field(this),0):(r.values[n]=this.create(r),1)}}}init(e){return[this,Yx.of({field:this,create:e})]}get extension(){return this}}const Fu={lowest:4,low:3,default:2,high:1,highest:0};function Im(t){return e=>new oF(e,t)}const ou={highest:Im(Fu.highest),high:Im(Fu.high),default:Im(Fu.default),low:Im(Fu.low),lowest:Im(Fu.lowest)};class oF{constructor(e,n){this.inner=e,this.prec=n}}class nb{of(e){return new xk(this,e)}reconfigure(e){return nb.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class xk{constructor(e,n){this.compartment=e,this.inner=n}}class Iv{constructor(e,n,r,s,i,a){for(this.base=e,this.compartments=n,this.dynamicSlots=r,this.address=s,this.staticValues=i,this.facets=a,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,n,r){let s=[],i=Object.create(null),a=new Map;for(let g of pae(e,n,a))g instanceof Os?s.push(g):(i[g.facet.id]||(i[g.facet.id]=[])).push(g);let l=Object.create(null),c=[],d=[];for(let g of s)l[g.id]=d.length<<1,d.push(x=>g.slot(x));let h=r?.config.facets;for(let g in i){let x=i[g],y=x[0].facet,w=h&&h[g]||[];if(x.every(S=>S.type==0))if(l[y.id]=c.length<<1|1,Yj(w,x))c.push(r.facet(y));else{let S=y.combine(x.map(k=>k.value));c.push(r&&y.compare(S,r.facet(y))?r.facet(y):S)}else{for(let S of x)S.type==0?(l[S.id]=c.length<<1|1,c.push(S.value)):(l[S.id]=d.length<<1,d.push(k=>S.dynamicSlot(k)));l[y.id]=d.length<<1,d.push(S=>mae(S,y,x))}}let m=d.map(g=>g(l));return new Iv(e,a,m,l,c,i)}}function pae(t,e,n){let r=[[],[],[],[],[]],s=new Map;function i(a,l){let c=s.get(a);if(c!=null){if(c<=l)return;let d=r[c].indexOf(a);d>-1&&r[c].splice(d,1),a instanceof xk&&n.delete(a.compartment)}if(s.set(a,l),Array.isArray(a))for(let d of a)i(d,l);else if(a instanceof xk){if(n.has(a.compartment))throw new RangeError("Duplicate use of compartment in extensions");let d=e.get(a.compartment)||a.inner;n.set(a.compartment,d),i(d,l)}else if(a instanceof oF)i(a.inner,a.prec);else if(a instanceof Os)r[l].push(a),a.provides&&i(a.provides,l);else if(a instanceof iv)r[l].push(a),a.facet.extensions&&i(a.facet.extensions,Fu.default);else{let d=a.extension;if(!d)throw new Error(`Unrecognized extension value in extension set (${a}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);i(d,l)}}return i(t,Fu.default),r.reduce((a,l)=>a.concat(l))}function v0(t,e){if(e&1)return 2;let n=e>>1,r=t.status[n];if(r==4)throw new Error("Cyclic dependency between fields and/or facets");if(r&2)return r;t.status[n]=4;let s=t.computeSlot(t,t.config.dynamicSlots[n]);return t.status[n]=2|s}function Lv(t,e){return e&1?t.config.staticValues[e>>1]:t.values[e>>1]}const lF=at.define(),vk=at.define({combine:t=>t.some(e=>e),static:!0}),cF=at.define({combine:t=>t.length?t[0]:void 0,static:!0}),uF=at.define(),dF=at.define(),hF=at.define(),fF=at.define({combine:t=>t.length?t[0]:!1});class Fo{constructor(e,n){this.type=e,this.value=n}static define(){return new gae}}class gae{of(e){return new Fo(this,e)}}class xae{constructor(e){this.map=e}of(e){return new Ft(this,e)}}class Ft{constructor(e,n){this.type=e,this.value=n}map(e){let n=this.type.map(this.value,e);return n===void 0?void 0:n==this.value?this:new Ft(this.type,n)}is(e){return this.type==e}static define(e={}){return new xae(e.map||(n=>n))}static mapEffects(e,n){if(!e.length)return e;let r=[];for(let s of e){let i=s.map(n);i&&r.push(i)}return r}}Ft.reconfigure=Ft.define();Ft.appendConfig=Ft.define();class ns{constructor(e,n,r,s,i,a){this.startState=e,this.changes=n,this.selection=r,this.effects=s,this.annotations=i,this.scrollIntoView=a,this._doc=null,this._state=null,r&&aF(r,n.newLength),i.some(l=>l.type==ns.time)||(this.annotations=i.concat(ns.time.of(Date.now())))}static create(e,n,r,s,i,a){return new ns(e,n,r,s,i,a)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let n of this.annotations)if(n.type==e)return n.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let n=this.annotation(ns.userEvent);return!!(n&&(n==e||n.length>e.length&&n.slice(0,e.length)==e&&n[e.length]=="."))}}ns.time=Fo.define();ns.userEvent=Fo.define();ns.addToHistory=Fo.define();ns.remote=Fo.define();function vae(t,e){let n=[];for(let r=0,s=0;;){let i,a;if(r=t[r]))i=t[r++],a=t[r++];else if(s=0;s--){let i=r[s](t);i instanceof ns?t=i:Array.isArray(i)&&i.length==1&&i[0]instanceof ns?t=i[0]:t=pF(e,Dh(i),!1)}return t}function bae(t){let e=t.startState,n=e.facet(hF),r=t;for(let s=n.length-1;s>=0;s--){let i=n[s](t);i&&Object.keys(i).length&&(r=mF(r,yk(e,i,t.changes.newLength),!0))}return r==t?t:ns.create(e,t.changes,t.selection,r.effects,r.annotations,r.scrollIntoView)}const wae=[];function Dh(t){return t==null?wae:Array.isArray(t)?t:[t]}var wr=(function(t){return t[t.Word=0]="Word",t[t.Space=1]="Space",t[t.Other=2]="Other",t})(wr||(wr={}));const Sae=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let bk;try{bk=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function kae(t){if(bk)return bk.test(t);for(let e=0;e"€"&&(n.toUpperCase()!=n.toLowerCase()||Sae.test(n)))return!0}return!1}function Oae(t){return e=>{if(!/\S/.test(e))return wr.Space;if(kae(e))return wr.Word;for(let n=0;n-1)return wr.Word;return wr.Other}}class bn{constructor(e,n,r,s,i,a){this.config=e,this.doc=n,this.selection=r,this.values=s,this.status=e.statusTemplate.slice(),this.computeSlot=i,a&&(a._state=this);for(let l=0;ls.set(d,c)),n=null),s.set(l.value.compartment,l.value.extension)):l.is(Ft.reconfigure)?(n=null,r=l.value):l.is(Ft.appendConfig)&&(n=null,r=Dh(r).concat(l.value));let i;n?i=e.startState.values.slice():(n=Iv.resolve(r,s,this),i=new bn(n,this.doc,this.selection,n.dynamicSlots.map(()=>null),(c,d)=>d.reconfigure(c,this),null).values);let a=e.startState.facet(vk)?e.newSelection:e.newSelection.asSingle();new bn(n,e.newDoc,a,i,(l,c)=>c.update(l,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(n=>({changes:{from:n.from,to:n.to,insert:e},range:Ae.cursor(n.from+e.length)}))}changeByRange(e){let n=this.selection,r=e(n.ranges[0]),s=this.changes(r.changes),i=[r.range],a=Dh(r.effects);for(let l=1;la.spec.fromJSON(l,c)))}}return bn.create({doc:e.doc,selection:Ae.fromJSON(e.selection),extensions:n.extensions?s.concat([n.extensions]):s})}static create(e={}){let n=Iv.resolve(e.extensions||[],new Map),r=e.doc instanceof jn?e.doc:jn.of((e.doc||"").split(n.staticFacet(bn.lineSeparator)||fk)),s=e.selection?e.selection instanceof Ae?e.selection:Ae.single(e.selection.anchor,e.selection.head):Ae.single(0);return aF(s,r.length),n.staticFacet(vk)||(s=s.asSingle()),new bn(n,r,s,n.dynamicSlots.map(()=>null),(i,a)=>a.create(i),null)}get tabSize(){return this.facet(bn.tabSize)}get lineBreak(){return this.facet(bn.lineSeparator)||` +`}get readOnly(){return this.facet(fF)}phrase(e,...n){for(let r of this.facet(bn.phrases))if(Object.prototype.hasOwnProperty.call(r,e)){e=r[e];break}return n.length&&(e=e.replace(/\$(\$|\d*)/g,(r,s)=>{if(s=="$")return"$";let i=+(s||1);return!i||i>n.length?r:n[i-1]})),e}languageDataAt(e,n,r=-1){let s=[];for(let i of this.facet(lF))for(let a of i(this,n,r))Object.prototype.hasOwnProperty.call(a,e)&&s.push(a[e]);return s}charCategorizer(e){return Oae(this.languageDataAt("wordChars",e).join(""))}wordAt(e){let{text:n,from:r,length:s}=this.doc.lineAt(e),i=this.charCategorizer(e),a=e-r,l=e-r;for(;a>0;){let c=Ds(n,a,!1);if(i(n.slice(c,a))!=wr.Word)break;a=c}for(;lt.length?t[0]:4});bn.lineSeparator=cF;bn.readOnly=fF;bn.phrases=at.define({compare(t,e){let n=Object.keys(t),r=Object.keys(e);return n.length==r.length&&n.every(s=>t[s]==e[s])}});bn.languageData=lF;bn.changeFilter=uF;bn.transactionFilter=dF;bn.transactionExtender=hF;nb.reconfigure=Ft.define();function qo(t,e,n={}){let r={};for(let s of t)for(let i of Object.keys(s)){let a=s[i],l=r[i];if(l===void 0)r[i]=a;else if(!(l===a||a===void 0))if(Object.hasOwnProperty.call(n,i))r[i]=n[i](l,a);else throw new Error("Config merge conflict for field "+i)}for(let s in e)r[s]===void 0&&(r[s]=e[s]);return r}class sd{eq(e){return this==e}range(e,n=e){return wk.create(e,n,this)}}sd.prototype.startSide=sd.prototype.endSide=0;sd.prototype.point=!1;sd.prototype.mapMode=Rs.TrackDel;let wk=class gF{constructor(e,n,r){this.from=e,this.to=n,this.value=r}static create(e,n,r){return new gF(e,n,r)}};function Sk(t,e){return t.from-e.from||t.value.startSide-e.value.startSide}class Kj{constructor(e,n,r,s){this.from=e,this.to=n,this.value=r,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(e,n,r,s=0){let i=r?this.to:this.from;for(let a=s,l=i.length;;){if(a==l)return a;let c=a+l>>1,d=i[c]-e||(r?this.value[c].endSide:this.value[c].startSide)-n;if(c==a)return d>=0?a:l;d>=0?l=c:a=c+1}}between(e,n,r,s){for(let i=this.findIndex(n,-1e9,!0),a=this.findIndex(r,1e9,!1,i);ix||g==x&&d.startSide>0&&d.endSide<=0)continue;(x-g||d.endSide-d.startSide)<0||(a<0&&(a=g),d.point&&(l=Math.max(l,x-g)),r.push(d),s.push(g-a),i.push(x-a))}return{mapped:r.length?new Kj(s,i,r,l):null,pos:a}}}class Rn{constructor(e,n,r,s){this.chunkPos=e,this.chunk=n,this.nextLayer=r,this.maxPoint=s}static create(e,n,r,s){return new Rn(e,n,r,s)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let n of this.chunk)e+=n.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:n=[],sort:r=!1,filterFrom:s=0,filterTo:i=this.length}=e,a=e.filter;if(n.length==0&&!a)return this;if(r&&(n=n.slice().sort(Sk)),this.isEmpty)return n.length?Rn.of(n):this;let l=new xF(this,null,-1).goto(0),c=0,d=[],h=new Fl;for(;l.value||c=0){let m=n[c++];h.addInner(m.from,m.to,m.value)||d.push(m)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||il.to||i=i&&e<=i+a.length&&a.between(i,e-i,n-i,r)===!1)return}this.nextLayer.between(e,n,r)}}iter(e=0){return I0.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,n=0){return I0.from(e).goto(n)}static compare(e,n,r,s,i=-1){let a=e.filter(m=>m.maxPoint>0||!m.isEmpty&&m.maxPoint>=i),l=n.filter(m=>m.maxPoint>0||!m.isEmpty&&m.maxPoint>=i),c=aE(a,l,r),d=new Lm(a,c,i),h=new Lm(l,c,i);r.iterGaps((m,g,x)=>oE(d,m,h,g,x,s)),r.empty&&r.length==0&&oE(d,0,h,0,0,s)}static eq(e,n,r=0,s){s==null&&(s=999999999);let i=e.filter(h=>!h.isEmpty&&n.indexOf(h)<0),a=n.filter(h=>!h.isEmpty&&e.indexOf(h)<0);if(i.length!=a.length)return!1;if(!i.length)return!0;let l=aE(i,a),c=new Lm(i,l,0).goto(r),d=new Lm(a,l,0).goto(r);for(;;){if(c.to!=d.to||!kk(c.active,d.active)||c.point&&(!d.point||!c.point.eq(d.point)))return!1;if(c.to>s)return!0;c.next(),d.next()}}static spans(e,n,r,s,i=-1){let a=new Lm(e,null,i).goto(n),l=n,c=a.openStart;for(;;){let d=Math.min(a.to,r);if(a.point){let h=a.activeForPoint(a.to),m=a.pointFroml&&(s.span(l,d,a.active,c),c=a.openEnd(d));if(a.to>r)return c+(a.point&&a.to>r?1:0);l=a.to,a.next()}}static of(e,n=!1){let r=new Fl;for(let s of e instanceof wk?[e]:n?jae(e):e)r.add(s.from,s.to,s.value);return r.finish()}static join(e){if(!e.length)return Rn.empty;let n=e[e.length-1];for(let r=e.length-2;r>=0;r--)for(let s=e[r];s!=Rn.empty;s=s.nextLayer)n=new Rn(s.chunkPos,s.chunk,n,Math.max(s.maxPoint,n.maxPoint));return n}}Rn.empty=new Rn([],[],null,-1);function jae(t){if(t.length>1)for(let e=t[0],n=1;n0)return t.slice().sort(Sk);e=r}return t}Rn.empty.nextLayer=Rn.empty;class Fl{finishChunk(e){this.chunks.push(new Kj(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,n,r){this.addInner(e,n,r)||(this.nextLayer||(this.nextLayer=new Fl)).add(e,n,r)}addInner(e,n,r){let s=e-this.lastTo||r.startSide-this.last.endSide;if(s<=0&&(e-this.lastFrom||r.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(n-this.chunkStart),this.last=r,this.lastFrom=e,this.lastTo=n,this.value.push(r),r.point&&(this.maxPoint=Math.max(this.maxPoint,n-e)),!0)}addChunk(e,n){if((e-this.lastTo||n.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,n.maxPoint),this.chunks.push(n),this.chunkPos.push(e);let r=n.value.length-1;return this.last=n.value[r],this.lastFrom=n.from[r]+e,this.lastTo=n.to[r]+e,!0}finish(){return this.finishInner(Rn.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let n=Rn.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,n}}function aE(t,e,n){let r=new Map;for(let i of t)for(let a=0;a=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=r&&s.push(new xF(a,n,r,i));return s.length==1?s[0]:new I0(s)}get startSide(){return this.value?this.value.startSide:0}goto(e,n=-1e9){for(let r of this.heap)r.goto(e,n);for(let r=this.heap.length>>1;r>=0;r--)C4(this.heap,r);return this.next(),this}forward(e,n){for(let r of this.heap)r.forward(e,n);for(let r=this.heap.length>>1;r>=0;r--)C4(this.heap,r);(this.to-e||this.value.endSide-n)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),C4(this.heap,0)}}}function C4(t,e){for(let n=t[e];;){let r=(e<<1)+1;if(r>=t.length)break;let s=t[r];if(r+1=0&&(s=t[r+1],r++),n.compare(s)<0)break;t[r]=n,t[e]=s,e=r}}class Lm{constructor(e,n,r){this.minPoint=r,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=I0.from(e,n,r)}goto(e,n=-1e9){return this.cursor.goto(e,n),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=n,this.openStart=-1,this.next(),this}forward(e,n){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-n)<0;)this.removeActive(this.minActive);this.cursor.forward(e,n)}removeActive(e){Kx(this.active,e),Kx(this.activeTo,e),Kx(this.activeRank,e),this.minActive=lE(this.active,this.activeTo)}addActive(e){let n=0,{value:r,to:s,rank:i}=this.cursor;for(;n0;)n++;Zx(this.active,n,r),Zx(this.activeTo,n,s),Zx(this.activeRank,n,i),e&&Zx(e,n,this.cursor.from),this.minActive=lE(this.active,this.activeTo)}next(){let e=this.to,n=this.point;this.point=null;let r=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>e){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),r&&Kx(r,s)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let i=this.cursor.value;if(!i.point)this.addActive(r),this.cursor.next();else if(n&&this.cursor.to==this.to&&this.cursor.from=0&&r[s]=0&&!(this.activeRank[r]e||this.activeTo[r]==e&&this.active[r].endSide>=this.point.endSide)&&n.push(this.active[r]);return n.reverse()}openEnd(e){let n=0;for(let r=this.activeTo.length-1;r>=0&&this.activeTo[r]>e;r--)n++;return n}}function oE(t,e,n,r,s,i){t.goto(e),n.goto(r);let a=r+s,l=r,c=r-e;for(;;){let d=t.to+c-n.to,h=d||t.endSide-n.endSide,m=h<0?t.to+c:n.to,g=Math.min(m,a);if(t.point||n.point?t.point&&n.point&&(t.point==n.point||t.point.eq(n.point))&&kk(t.activeForPoint(t.to),n.activeForPoint(n.to))||i.comparePoint(l,g,t.point,n.point):g>l&&!kk(t.active,n.active)&&i.compareRange(l,g,t.active,n.active),m>a)break;(d||t.openEnd!=n.openEnd)&&i.boundChange&&i.boundChange(m),l=m,h<=0&&t.next(),h>=0&&n.next()}}function kk(t,e){if(t.length!=e.length)return!1;for(let n=0;n=e;r--)t[r+1]=t[r];t[e]=n}function lE(t,e){let n=-1,r=1e9;for(let s=0;s=e)return s;if(s==t.length)break;i+=t.charCodeAt(s)==9?n-i%n:1,s=Ds(t,s)}return r===!0?-1:t.length}const jk="ͼ",cE=typeof Symbol>"u"?"__"+jk:Symbol.for(jk),Nk=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),uE=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{};class Wc{constructor(e,n){this.rules=[];let{finish:r}=n||{};function s(a){return/^@/.test(a)?[a]:a.split(/,\s*/)}function i(a,l,c,d){let h=[],m=/^@(\w+)\b/.exec(a[0]),g=m&&m[1]=="keyframes";if(m&&l==null)return c.push(a[0]+";");for(let x in l){let y=l[x];if(/&/.test(x))i(x.split(/,\s*/).map(w=>a.map(S=>w.replace(/&/,S))).reduce((w,S)=>w.concat(S)),y,c);else if(y&&typeof y=="object"){if(!m)throw new RangeError("The value of a property ("+x+") should be a primitive value.");i(s(x),y,h,g)}else y!=null&&h.push(x.replace(/_.*/,"").replace(/[A-Z]/g,w=>"-"+w.toLowerCase())+": "+y+";")}(h.length||g)&&c.push((r&&!m&&!d?a.map(r):a).join(", ")+" {"+h.join(" ")+"}")}for(let a in e)i(s(a),e[a],this.rules)}getRules(){return this.rules.join(` +`)}static newName(){let e=uE[cE]||1;return uE[cE]=e+1,jk+e.toString(36)}static mount(e,n,r){let s=e[Nk],i=r&&r.nonce;s?i&&s.setNonce(i):s=new Nae(e,i),s.mount(Array.isArray(n)?n:[n],e)}}let dE=new Map;class Nae{constructor(e,n){let r=e.ownerDocument||e,s=r.defaultView;if(!e.head&&e.adoptedStyleSheets&&s.CSSStyleSheet){let i=dE.get(r);if(i)return e[Nk]=i;this.sheet=new s.CSSStyleSheet,dE.set(r,this)}else this.styleTag=r.createElement("style"),n&&this.styleTag.setAttribute("nonce",n);this.modules=[],e[Nk]=this}mount(e,n){let r=this.sheet,s=0,i=0;for(let a=0;a-1&&(this.modules.splice(c,1),i--,c=-1),c==-1){if(this.modules.splice(i++,0,l),r)for(let d=0;d",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},Cae=typeof navigator<"u"&&/Mac/.test(navigator.platform),Tae=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(var As=0;As<10;As++)Gc[48+As]=Gc[96+As]=String(As);for(var As=1;As<=24;As++)Gc[As+111]="F"+As;for(var As=65;As<=90;As++)Gc[As]=String.fromCharCode(As+32),L0[As]=String.fromCharCode(As);for(var T4 in Gc)L0.hasOwnProperty(T4)||(L0[T4]=Gc[T4]);function Eae(t){var e=Cae&&t.metaKey&&t.shiftKey&&!t.ctrlKey&&!t.altKey||Tae&&t.shiftKey&&t.key&&t.key.length==1||t.key=="Unidentified",n=!e&&t.key||(t.shiftKey?L0:Gc)[t.keyCode]||t.key||"Unidentified";return n=="Esc"&&(n="Escape"),n=="Del"&&(n="Delete"),n=="Left"&&(n="ArrowLeft"),n=="Up"&&(n="ArrowUp"),n=="Right"&&(n="ArrowRight"),n=="Down"&&(n="ArrowDown"),n}function sr(){var t=arguments[0];typeof t=="string"&&(t=document.createElement(t));var e=1,n=arguments[1];if(n&&typeof n=="object"&&n.nodeType==null&&!Array.isArray(n)){for(var r in n)if(Object.prototype.hasOwnProperty.call(n,r)){var s=n[r];typeof s=="string"?t.setAttribute(r,s):s!=null&&(t[r]=s)}e++}for(;e2);var et={mac:fE||/Mac/.test(Ks.platform),windows:/Win/.test(Ks.platform),linux:/Linux|X11/.test(Ks.platform),ie:rb,ie_version:yF?Ck.documentMode||6:Ek?+Ek[1]:Tk?+Tk[1]:0,gecko:hE,gecko_version:hE?+(/Firefox\/(\d+)/.exec(Ks.userAgent)||[0,0])[1]:0,chrome:!!E4,chrome_version:E4?+E4[1]:0,ios:fE,android:/Android\b/.test(Ks.userAgent),webkit_version:_ae?+(/\bAppleWebKit\/(\d+)/.exec(Ks.userAgent)||[0,0])[1]:0,safari:_k,safari_version:_k?+(/\bVersion\/(\d+(\.\d+)?)/.exec(Ks.userAgent)||[0,0])[1]:0,tabSize:Ck.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function B0(t){let e;return t.nodeType==11?e=t.getSelection?t:t.ownerDocument:e=t,e.getSelection()}function Mk(t,e){return e?t==e||t.contains(e.nodeType!=1?e.parentNode:e):!1}function av(t,e){if(!e.anchorNode)return!1;try{return Mk(t,e.anchorNode)}catch{return!1}}function Kh(t){return t.nodeType==3?ad(t,0,t.nodeValue.length).getClientRects():t.nodeType==1?t.getClientRects():[]}function y0(t,e,n,r){return n?mE(t,e,n,r,-1)||mE(t,e,n,r,1):!1}function id(t){for(var e=0;;e++)if(t=t.previousSibling,!t)return e}function Bv(t){return t.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(t.nodeName)}function mE(t,e,n,r,s){for(;;){if(t==n&&e==r)return!0;if(e==(s<0?0:Io(t))){if(t.nodeName=="DIV")return!1;let i=t.parentNode;if(!i||i.nodeType!=1)return!1;e=id(t)+(s<0?0:1),t=i}else if(t.nodeType==1){if(t=t.childNodes[e+(s<0?-1:0)],t.nodeType==1&&t.contentEditable=="false")return!1;e=s<0?Io(t):0}else return!1}}function Io(t){return t.nodeType==3?t.nodeValue.length:t.childNodes.length}function Bp(t,e){let n=e?t.left:t.right;return{left:n,right:n,top:t.top,bottom:t.bottom}}function Mae(t){let e=t.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:t.innerWidth,top:0,bottom:t.innerHeight}}function bF(t,e){let n=e.width/t.offsetWidth,r=e.height/t.offsetHeight;return(n>.995&&n<1.005||!isFinite(n)||Math.abs(e.width-t.offsetWidth)<1)&&(n=1),(r>.995&&r<1.005||!isFinite(r)||Math.abs(e.height-t.offsetHeight)<1)&&(r=1),{scaleX:n,scaleY:r}}function Aae(t,e,n,r,s,i,a,l){let c=t.ownerDocument,d=c.defaultView||window;for(let h=t,m=!1;h&&!m;)if(h.nodeType==1){let g,x=h==c.body,y=1,w=1;if(x)g=Mae(d);else{if(/^(fixed|sticky)$/.test(getComputedStyle(h).position)&&(m=!0),h.scrollHeight<=h.clientHeight&&h.scrollWidth<=h.clientWidth){h=h.assignedSlot||h.parentNode;continue}let j=h.getBoundingClientRect();({scaleX:y,scaleY:w}=bF(h,j)),g={left:j.left,right:j.left+h.clientWidth*y,top:j.top,bottom:j.top+h.clientHeight*w}}let S=0,k=0;if(s=="nearest")e.top0&&e.bottom>g.bottom+k&&(k=e.bottom-g.bottom+a)):e.bottom>g.bottom&&(k=e.bottom-g.bottom+a,n<0&&e.top-k0&&e.right>g.right+S&&(S=e.right-g.right+i)):e.right>g.right&&(S=e.right-g.right+i,n<0&&e.leftg.bottom||e.leftg.right)&&(e={left:Math.max(e.left,g.left),right:Math.min(e.right,g.right),top:Math.max(e.top,g.top),bottom:Math.min(e.bottom,g.bottom)}),h=h.assignedSlot||h.parentNode}else if(h.nodeType==11)h=h.host;else break}function Rae(t){let e=t.ownerDocument,n,r;for(let s=t.parentNode;s&&!(s==e.body||n&&r);)if(s.nodeType==1)!r&&s.scrollHeight>s.clientHeight&&(r=s),!n&&s.scrollWidth>s.clientWidth&&(n=s),s=s.assignedSlot||s.parentNode;else if(s.nodeType==11)s=s.host;else break;return{x:n,y:r}}class Dae{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:n,focusNode:r}=e;this.set(n,Math.min(e.anchorOffset,n?Io(n):0),r,Math.min(e.focusOffset,r?Io(r):0))}set(e,n,r,s){this.anchorNode=e,this.anchorOffset=n,this.focusNode=r,this.focusOffset=s}}let Iu=null;et.safari&&et.safari_version>=26&&(Iu=!1);function wF(t){if(t.setActive)return t.setActive();if(Iu)return t.focus(Iu);let e=[];for(let n=t;n&&(e.push(n,n.scrollTop,n.scrollLeft),n!=n.ownerDocument);n=n.parentNode);if(t.focus(Iu==null?{get preventScroll(){return Iu={preventScroll:!0},!0}}:void 0),!Iu){Iu=!1;for(let n=0;nMath.max(1,t.scrollHeight-t.clientHeight-4)}function OF(t,e){for(let n=t,r=e;;){if(n.nodeType==3&&r>0)return{node:n,offset:r};if(n.nodeType==1&&r>0){if(n.contentEditable=="false")return null;n=n.childNodes[r-1],r=Io(n)}else if(n.parentNode&&!Bv(n))r=id(n),n=n.parentNode;else return null}}function jF(t,e){for(let n=t,r=e;;){if(n.nodeType==3&&rn)return m.domBoundsAround(e,n,d);if(g>=e&&s==-1&&(s=c,i=d),d>n&&m.dom.parentNode==this.dom){a=c,l=h;break}h=g,d=g+m.breakAfter}return{from:i,to:l<0?r+this.length:l,startDOM:(s?this.children[s-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:a=0?this.children[a].dom:null}}markDirty(e=!1){this.flags|=2,this.markParentsDirty(e)}markParentsDirty(e){for(let n=this.parent;n;n=n.parent){if(e&&(n.flags|=2),n.flags&1)return;n.flags|=1,e=!1}}setParent(e){this.parent!=e&&(this.parent=e,this.flags&7&&this.markParentsDirty(!0))}setDOM(e){this.dom!=e&&(this.dom&&(this.dom.cmView=null),this.dom=e,e.cmView=this)}get rootView(){for(let e=this;;){let n=e.parent;if(!n)return e;e=n}}replaceChildren(e,n,r=Zj){this.markDirty();for(let s=e;sthis.pos||e==this.pos&&(n>0||this.i==0||this.children[this.i-1].breakAfter))return this.off=e-this.pos,this;let r=this.children[--this.i];this.pos-=r.length+r.breakAfter}}}function CF(t,e,n,r,s,i,a,l,c){let{children:d}=t,h=d.length?d[e]:null,m=i.length?i[i.length-1]:null,g=m?m.breakAfter:a;if(!(e==r&&h&&!a&&!g&&i.length<2&&h.merge(n,s,i.length?m:null,n==0,l,c))){if(r0&&(!a&&i.length&&h.merge(n,h.length,i[0],!1,l,0)?h.breakAfter=i.shift().breakAfter:(nIae||r.flags&8)?!1:(this.text=this.text.slice(0,e)+(r?r.text:"")+this.text.slice(n),this.markDirty(),!0)}split(e){let n=new Ya(this.text.slice(e));return this.text=this.text.slice(0,e),this.markDirty(),n.flags|=this.flags&8,n}localPosFromDOM(e,n){return e==this.dom?n:n?this.text.length:0}domAtPos(e){return new Hs(this.dom,e)}domBoundsAround(e,n,r){return{from:r,to:r+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(e,n){return Lae(this.dom,e,n)}}class ql extends er{constructor(e,n=[],r=0){super(),this.mark=e,this.children=n,this.length=r;for(let s of n)s.setParent(this)}setAttrs(e){if(SF(e),this.mark.class&&(e.className=this.mark.class),this.mark.attrs)for(let n in this.mark.attrs)e.setAttribute(n,this.mark.attrs[n]);return e}canReuseDOM(e){return super.canReuseDOM(e)&&!((this.flags|e.flags)&8)}reuseDOM(e){e.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(e),this.flags|=6)}sync(e,n){this.dom?this.flags&4&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(e,n)}merge(e,n,r,s,i,a){return r&&(!(r instanceof ql&&r.mark.eq(this.mark))||e&&i<=0||ne&&n.push(r=e&&(s=i),r=c,i++}let a=this.length-e;return this.length=e,s>-1&&(this.children.length=s,this.markDirty()),new ql(this.mark,n,a)}domAtPos(e){return EF(this,e)}coordsAt(e,n){return MF(this,e,n)}}function Lae(t,e,n){let r=t.nodeValue.length;e>r&&(e=r);let s=e,i=e,a=0;e==0&&n<0||e==r&&n>=0?et.chrome||et.gecko||(e?(s--,a=1):i=0)?0:l.length-1];return et.safari&&!a&&c.width==0&&(c=Array.prototype.find.call(l,d=>d.width)||c),a?Bp(c,a<0):c||null}class _l extends er{static create(e,n,r){return new _l(e,n,r)}constructor(e,n,r){super(),this.widget=e,this.length=n,this.side=r,this.prevWidget=null}split(e){let n=_l.create(this.widget,this.length-e,this.side);return this.length-=e,n}sync(e){(!this.dom||!this.widget.updateDOM(this.dom,e))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(e)),this.widget.editable||(this.dom.contentEditable="false"))}getSide(){return this.side}merge(e,n,r,s,i,a){return r&&(!(r instanceof _l)||!this.widget.compare(r.widget)||e>0&&i<=0||n0)?Hs.before(this.dom):Hs.after(this.dom,e==this.length)}domBoundsAround(){return null}coordsAt(e,n){let r=this.widget.coordsAt(this.dom,e,n);if(r)return r;let s=this.dom.getClientRects(),i=null;if(!s.length)return null;let a=this.side?this.side<0:e>0;for(let l=a?s.length-1:0;i=s[l],!(e>0?l==0:l==s.length-1||i.top0?Hs.before(this.dom):Hs.after(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(e){return this.dom.getBoundingClientRect()}get overrideDOMText(){return jn.empty}get isHidden(){return!0}}Ya.prototype.children=_l.prototype.children=Zh.prototype.children=Zj;function EF(t,e){let n=t.dom,{children:r}=t,s=0;for(let i=0;si&&e0;i--){let a=r[i-1];if(a.dom.parentNode==n)return a.domAtPos(a.length)}for(let i=s;i0&&e instanceof ql&&s.length&&(r=s[s.length-1])instanceof ql&&r.mark.eq(e.mark)?_F(r,e.children[0],n-1):(s.push(e),e.setParent(t)),t.length+=e.length}function MF(t,e,n){let r=null,s=-1,i=null,a=-1;function l(d,h){for(let m=0,g=0;m=h&&(x.children.length?l(x,h-g):(!i||i.isHidden&&(n>0||Fae(i,x)))&&(y>h||g==y&&x.getSide()>0)?(i=x,a=h-g):(g-1?1:0)!=s.length-(n&&s.indexOf(n)>-1?1:0))return!1;for(let i of r)if(i!=n&&(s.indexOf(i)==-1||t[i]!==e[i]))return!1;return!0}function Rk(t,e,n){let r=!1;if(e)for(let s in e)n&&s in n||(r=!0,s=="style"?t.style.cssText="":t.removeAttribute(s));if(n)for(let s in n)e&&e[s]==n[s]||(r=!0,s=="style"?t.style.cssText=n[s]:t.setAttribute(s,n[s]));return r}function qae(t){let e=Object.create(null);for(let n=0;n0?3e8:-4e8:n>0?1e8:-1e8,new Xc(e,n,n,r,e.widget||null,!1)}static replace(e){let n=!!e.block,r,s;if(e.isBlockGap)r=-5e8,s=4e8;else{let{start:i,end:a}=AF(e,n);r=(i?n?-3e8:-1:5e8)-1,s=(a?n?2e8:1:-6e8)+1}return new Xc(e,r,s,n,e.widget||null,!0)}static line(e){return new qp(e)}static set(e,n=!1){return Rn.of(e,n)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}}kt.none=Rn.empty;class Fp extends kt{constructor(e){let{start:n,end:r}=AF(e);super(n?-1:5e8,r?1:-6e8,null,e),this.tagName=e.tagName||"span",this.class=e.class||"",this.attrs=e.attributes||null}eq(e){var n,r;return this==e||e instanceof Fp&&this.tagName==e.tagName&&(this.class||((n=this.attrs)===null||n===void 0?void 0:n.class))==(e.class||((r=e.attrs)===null||r===void 0?void 0:r.class))&&Fv(this.attrs,e.attrs,"class")}range(e,n=e){if(e>=n)throw new RangeError("Mark decorations may not be empty");return super.range(e,n)}}Fp.prototype.point=!1;class qp extends kt{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof qp&&this.spec.class==e.spec.class&&Fv(this.spec.attributes,e.spec.attributes)}range(e,n=e){if(n!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,n)}}qp.prototype.mapMode=Rs.TrackBefore;qp.prototype.point=!0;class Xc extends kt{constructor(e,n,r,s,i,a){super(n,r,i,e),this.block=s,this.isReplace=a,this.mapMode=s?n<=0?Rs.TrackBefore:Rs.TrackAfter:Rs.TrackDel}get type(){return this.startSide!=this.endSide?ti.WidgetRange:this.startSide<=0?ti.WidgetBefore:ti.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof Xc&&$ae(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,n=e){if(this.isReplace&&(e>n||e==n&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&n!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,n)}}Xc.prototype.point=!0;function AF(t,e=!1){let{inclusiveStart:n,inclusiveEnd:r}=t;return n==null&&(n=t.inclusive),r==null&&(r=t.inclusive),{start:n??e,end:r??e}}function $ae(t,e){return t==e||!!(t&&e&&t.compare(e))}function ov(t,e,n,r=0){let s=n.length-1;s>=0&&n[s]+r>=t?n[s]=Math.max(n[s],e):n.push(t,e)}class es extends er{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(e,n,r,s,i,a){if(r){if(!(r instanceof es))return!1;this.dom||r.transferDOM(this)}return s&&this.setDeco(r?r.attrs:null),TF(this,e,n,r?r.children.slice():[],i,a),!0}split(e){let n=new es;if(n.breakAfter=this.breakAfter,this.length==0)return n;let{i:r,off:s}=this.childPos(e);s&&(n.append(this.children[r].split(s),0),this.children[r].merge(s,this.children[r].length,null,!1,0,0),r++);for(let i=r;i0&&this.children[r-1].length==0;)this.children[--r].destroy();return this.children.length=r,this.markDirty(),this.length=e,n}transferDOM(e){this.dom&&(this.markDirty(),e.setDOM(this.dom),e.prevAttrs=this.prevAttrs===void 0?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(e){Fv(this.attrs,e)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=e)}append(e,n){_F(this,e,n)}addLineDeco(e){let n=e.spec.attributes,r=e.spec.class;n&&(this.attrs=Ak(n,this.attrs||{})),r&&(this.attrs=Ak({class:r},this.attrs||{}))}domAtPos(e){return EF(this,e)}reuseDOM(e){e.nodeName=="DIV"&&(this.setDOM(e),this.flags|=6)}sync(e,n){var r;this.dom?this.flags&4&&(SF(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),this.prevAttrs!==void 0&&(Rk(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(e,n);let s=this.dom.lastChild;for(;s&&er.get(s)instanceof ql;)s=s.lastChild;if(!s||!this.length||s.nodeName!="BR"&&((r=er.get(s))===null||r===void 0?void 0:r.isEditable)==!1&&(!et.ios||!this.children.some(i=>i instanceof Ya))){let i=document.createElement("BR");i.cmIgnore=!0,this.dom.appendChild(i)}}measureTextSize(){if(this.children.length==0||this.length>20)return null;let e=0,n;for(let r of this.children){if(!(r instanceof Ya)||/[^ -~]/.test(r.text))return null;let s=Kh(r.dom);if(s.length!=1)return null;e+=s[0].width,n=s[0].height}return e?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length,textHeight:n}:null}coordsAt(e,n){let r=MF(this,e,n);if(!this.children.length&&r&&this.parent){let{heightOracle:s}=this.parent.view.viewState,i=r.bottom-r.top;if(Math.abs(i-s.lineHeight)<2&&s.textHeight=n){if(i instanceof es)return i;if(a>n)break}s=a+i.breakAfter}return null}}class zl extends er{constructor(e,n,r){super(),this.widget=e,this.length=n,this.deco=r,this.breakAfter=0,this.prevWidget=null}merge(e,n,r,s,i,a){return r&&(!(r instanceof zl)||!this.widget.compare(r.widget)||e>0&&i<=0||n0}}class Dk extends $o{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}}class b0{constructor(e,n,r,s){this.doc=e,this.pos=n,this.end=r,this.disallowBlockEffectsFor=s,this.content=[],this.curLine=null,this.breakAtStart=0,this.pendingBuffer=0,this.bufferMarks=[],this.atCursorPos=!0,this.openStart=-1,this.openEnd=-1,this.text="",this.textOff=0,this.cursor=e.iter(),this.skip=n}posCovered(){if(this.content.length==0)return!this.breakAtStart&&this.doc.lineAt(this.pos).from!=this.pos;let e=this.content[this.content.length-1];return!(e.breakAfter||e instanceof zl&&e.deco.endSide<0)}getLine(){return this.curLine||(this.content.push(this.curLine=new es),this.atCursorPos=!0),this.curLine}flushBuffer(e=this.bufferMarks){this.pendingBuffer&&(this.curLine.append(Jx(new Zh(-1),e),e.length),this.pendingBuffer=0)}addBlockWidget(e){this.flushBuffer(),this.curLine=null,this.content.push(e)}finish(e){this.pendingBuffer&&e<=this.bufferMarks.length?this.flushBuffer():this.pendingBuffer=0,!this.posCovered()&&!(e&&this.content.length&&this.content[this.content.length-1]instanceof zl)&&this.getLine()}buildText(e,n,r){for(;e>0;){if(this.textOff==this.text.length){let{value:a,lineBreak:l,done:c}=this.cursor.next(this.skip);if(this.skip=0,c)throw new Error("Ran out of text content when drawing inline views");if(l){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer(),this.curLine=null,this.atCursorPos=!0,e--;continue}else this.text=a,this.textOff=0}let s=Math.min(this.text.length-this.textOff,e),i=Math.min(s,512);this.flushBuffer(n.slice(n.length-r)),this.getLine().append(Jx(new Ya(this.text.slice(this.textOff,this.textOff+i)),n),r),this.atCursorPos=!0,this.textOff+=i,e-=i,r=s<=i?0:n.length}}span(e,n,r,s){this.buildText(n-e,r,s),this.pos=n,this.openStart<0&&(this.openStart=s)}point(e,n,r,s,i,a){if(this.disallowBlockEffectsFor[a]&&r instanceof Xc){if(r.block)throw new RangeError("Block decorations may not be specified via plugins");if(n>this.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}let l=n-e;if(r instanceof Xc)if(r.block)r.startSide>0&&!this.posCovered()&&this.getLine(),this.addBlockWidget(new zl(r.widget||Jh.block,l,r));else{let c=_l.create(r.widget||Jh.inline,l,l?0:r.startSide),d=this.atCursorPos&&!c.isEditable&&i<=s.length&&(e0),h=!c.isEditable&&(es.length||r.startSide<=0),m=this.getLine();this.pendingBuffer==2&&!d&&!c.isEditable&&(this.pendingBuffer=0),this.flushBuffer(s),d&&(m.append(Jx(new Zh(1),s),i),i=s.length+Math.max(0,i-s.length)),m.append(Jx(c,s),i),this.atCursorPos=h,this.pendingBuffer=h?es.length?1:2:0,this.pendingBuffer&&(this.bufferMarks=s.slice())}else this.doc.lineAt(this.pos).from==this.pos&&this.getLine().addLineDeco(r);l&&(this.textOff+l<=this.text.length?this.textOff+=l:(this.skip+=l-(this.text.length-this.textOff),this.text="",this.textOff=0),this.pos=n),this.openStart<0&&(this.openStart=i)}static build(e,n,r,s,i){let a=new b0(e,n,r,i);return a.openEnd=Rn.spans(s,n,r,a),a.openStart<0&&(a.openStart=a.openEnd),a.finish(a.openEnd),a}}function Jx(t,e){for(let n of e)t=new ql(n,[t],t.length);return t}class Jh extends $o{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}}Jh.inline=new Jh("span");Jh.block=new Jh("div");var gr=(function(t){return t[t.LTR=0]="LTR",t[t.RTL=1]="RTL",t})(gr||(gr={}));const od=gr.LTR,Jj=gr.RTL;function RF(t){let e=[];for(let n=0;n=n){if(l.level==r)return a;(i<0||(s!=0?s<0?l.fromn:e[i].level>l.level))&&(i=a)}}if(i<0)throw new RangeError("Index out of range");return i}}function PF(t,e){if(t.length!=e.length)return!1;for(let n=0;n=0;w-=3)if(ho[w+1]==-x){let S=ho[w+2],k=S&2?s:S&4?S&1?i:s:0;k&&(ir[m]=ir[ho[w]]=k),l=w;break}}else{if(ho.length==189)break;ho[l++]=m,ho[l++]=g,ho[l++]=c}else if((y=ir[m])==2||y==1){let w=y==s;c=w?0:1;for(let S=l-3;S>=0;S-=3){let k=ho[S+2];if(k&2)break;if(w)ho[S+2]|=2;else{if(k&4)break;ho[S+2]|=4}}}}}function Gae(t,e,n,r){for(let s=0,i=r;s<=n.length;s++){let a=s?n[s-1].to:t,l=sc;)y==S&&(y=n[--w].from,S=w?n[w-1].to:t),ir[--y]=x;c=h}else i=d,c++}}}function zk(t,e,n,r,s,i,a){let l=r%2?2:1;if(r%2==s%2)for(let c=e,d=0;cc&&a.push(new Bc(c,w.from,x));let S=w.direction==od!=!(x%2);Ik(t,S?r+1:r,s,w.inner,w.from,w.to,a),c=w.to}y=w.to}else{if(y==n||(h?ir[y]!=l:ir[y]==l))break;y++}g?zk(t,c,y,r+1,s,g,a):ce;){let h=!0,m=!1;if(!d||c>i[d-1].to){let w=ir[c-1];w!=l&&(h=!1,m=w==16)}let g=!h&&l==1?[]:null,x=h?r:r+1,y=c;e:for(;;)if(d&&y==i[d-1].to){if(m)break e;let w=i[--d];if(!h)for(let S=w.from,k=d;;){if(S==e)break e;if(k&&i[k-1].to==S)S=i[--k].from;else{if(ir[S-1]==l)break e;break}}if(g)g.push(w);else{w.toir.length;)ir[ir.length]=256;let r=[],s=e==od?0:1;return Ik(t,s,s,n,0,t.length,r),r}function zF(t){return[new Bc(0,t,0)]}let IF="";function Yae(t,e,n,r,s){var i;let a=r.head-t.from,l=Bc.find(e,a,(i=r.bidiLevel)!==null&&i!==void 0?i:-1,r.assoc),c=e[l],d=c.side(s,n);if(a==d){let g=l+=s?1:-1;if(g<0||g>=e.length)return null;c=e[l=g],a=c.side(!s,n),d=c.side(s,n)}let h=Ds(t.text,a,c.forward(s,n));(hc.to)&&(h=d),IF=t.text.slice(Math.min(a,h),Math.max(a,h));let m=l==(s?e.length-1:0)?null:e[l+(s?1:-1)];return m&&h==d&&m.level+(s?0:1)t.some(e=>e)}),VF=at.define({combine:t=>t.some(e=>e)}),UF=at.define();class zh{constructor(e,n="nearest",r="nearest",s=5,i=5,a=!1){this.range=e,this.y=n,this.x=r,this.yMargin=s,this.xMargin=i,this.isSnapshot=a}map(e){return e.empty?this:new zh(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new zh(Ae.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}}const e1=Ft.define({map:(t,e)=>t.map(e)}),WF=Ft.define();function vi(t,e,n){let r=t.facet(qF);r.length?r[0](e):window.onerror&&window.onerror(String(e),n,void 0,void 0,e)||(n?console.error(n+":",e):console.error(e))}const Tl=at.define({combine:t=>t.length?t[0]:!0});let Zae=0;const Nh=at.define({combine(t){return t.filter((e,n)=>{for(let r=0;r{let c=[];return a&&c.push(F0.of(d=>{let h=d.plugin(l);return h?a(h):kt.none})),i&&c.push(i(l)),c})}static fromClass(e,n){return Vr.define((r,s)=>new e(r,s),n)}}class _4{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(e){if(this.value){if(this.mustUpdate){let n=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(n)}catch(r){if(vi(n.state,r,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg)}catch(n){vi(e.state,n,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var n;if(!((n=this.value)===null||n===void 0)&&n.destroy)try{this.value.destroy()}catch(r){vi(e.state,r,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const GF=at.define(),n6=at.define(),F0=at.define(),XF=at.define(),$p=at.define(),YF=at.define();function vE(t,e){let n=t.state.facet(YF);if(!n.length)return n;let r=n.map(i=>i instanceof Function?i(t):i),s=[];return Rn.spans(r,e.from,e.to,{point(){},span(i,a,l,c){let d=i-e.from,h=a-e.from,m=s;for(let g=l.length-1;g>=0;g--,c--){let x=l[g].spec.bidiIsolate,y;if(x==null&&(x=Kae(e.text,d,h)),c>0&&m.length&&(y=m[m.length-1]).to==d&&y.direction==x)y.to=h,m=y.inner;else{let w={from:d,to:h,direction:x,inner:[]};m.push(w),m=w.inner}}}}),s}const KF=at.define();function r6(t){let e=0,n=0,r=0,s=0;for(let i of t.state.facet(KF)){let a=i(t);a&&(a.left!=null&&(e=Math.max(e,a.left)),a.right!=null&&(n=Math.max(n,a.right)),a.top!=null&&(r=Math.max(r,a.top)),a.bottom!=null&&(s=Math.max(s,a.bottom)))}return{left:e,right:n,top:r,bottom:s}}const s0=at.define();class Na{constructor(e,n,r,s){this.fromA=e,this.toA=n,this.fromB=r,this.toB=s}join(e){return new Na(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let n=e.length,r=this;for(;n>0;n--){let s=e[n-1];if(!(s.fromA>r.toA)){if(s.toAh)break;i+=2}if(!c)return r;new Na(c.fromA,c.toA,c.fromB,c.toB).addToSet(r),a=c.toA,l=c.toB}}}class qv{constructor(e,n,r){this.view=e,this.state=n,this.transactions=r,this.flags=0,this.startState=e.state,this.changes=cs.empty(this.startState.doc.length);for(let i of r)this.changes=this.changes.compose(i.changes);let s=[];this.changes.iterChangedRanges((i,a,l,c)=>s.push(new Na(i,a,l,c))),this.changedRanges=s}static create(e,n,r){return new qv(e,n,r)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}}class yE extends er{get length(){return this.view.state.doc.length}constructor(e){super(),this.view=e,this.decorations=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.markedForComposition=new Set,this.editContextFormatting=kt.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(e.contentDOM),this.children=[new es],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new Na(0,0,0,e.state.doc.length)],0,null)}update(e){var n;let r=e.changedRanges;this.minWidth>0&&r.length&&(r.every(({fromA:d,toA:h})=>hthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((n=this.domChanged)===null||n===void 0)&&n.newSel?s=this.domChanged.newSel.head:!ioe(e.changes,this.hasComposition)&&!e.selectionSet&&(s=e.state.selection.main.head));let i=s>-1?eoe(this.view,e.changes,s):null;if(this.domChanged=null,this.hasComposition){this.markedForComposition.clear();let{from:d,to:h}=this.hasComposition;r=new Na(d,h,e.changes.mapPos(d,-1),e.changes.mapPos(h,1)).addToSet(r.slice())}this.hasComposition=i?{from:i.range.fromB,to:i.range.toB}:null,(et.ie||et.chrome)&&!i&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let a=this.decorations,l=this.updateDeco(),c=roe(a,l,e.changes);return r=Na.extendWithRanges(r,c),!(this.flags&7)&&r.length==0?!1:(this.updateInner(r,e.startState.doc.length,i),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,n,r){this.view.viewState.mustMeasureContent=!0,this.updateChildren(e,n,r);let{observer:s}=this.view;s.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let a=et.chrome||et.ios?{node:s.selectionRange.focusNode,written:!1}:void 0;this.sync(this.view,a),this.flags&=-8,a&&(a.written||s.selectionRange.focusNode!=a.node)&&(this.forceSelection=!0),this.dom.style.height=""}),this.markedForComposition.forEach(a=>a.flags&=-9);let i=[];if(this.view.viewport.from||this.view.viewport.to=0?s[a]:null;if(!l)break;let{fromA:c,toA:d,fromB:h,toB:m}=l,g,x,y,w;if(r&&r.range.fromBh){let T=b0.build(this.view.state.doc,h,r.range.fromB,this.decorations,this.dynamicDecorationMap),E=b0.build(this.view.state.doc,r.range.toB,m,this.decorations,this.dynamicDecorationMap);x=T.breakAtStart,y=T.openStart,w=E.openEnd;let _=this.compositionView(r);E.breakAtStart?_.breakAfter=1:E.content.length&&_.merge(_.length,_.length,E.content[0],!1,E.openStart,0)&&(_.breakAfter=E.content[0].breakAfter,E.content.shift()),T.content.length&&_.merge(0,0,T.content[T.content.length-1],!0,0,T.openEnd)&&T.content.pop(),g=T.content.concat(_).concat(E.content)}else({content:g,breakAtStart:x,openStart:y,openEnd:w}=b0.build(this.view.state.doc,h,m,this.decorations,this.dynamicDecorationMap));let{i:S,off:k}=i.findPos(d,1),{i:j,off:N}=i.findPos(c,-1);CF(this,j,N,S,k,g,x,y,w)}r&&this.fixCompositionDOM(r)}updateEditContextFormatting(e){this.editContextFormatting=this.editContextFormatting.map(e.changes);for(let n of e.transactions)for(let r of n.effects)r.is(WF)&&(this.editContextFormatting=r.value)}compositionView(e){let n=new Ya(e.text.nodeValue);n.flags|=8;for(let{deco:s}of e.marks)n=new ql(s,[n],n.length);let r=new es;return r.append(n,0),r}fixCompositionDOM(e){let n=(i,a)=>{a.flags|=8|(a.children.some(c=>c.flags&7)?1:0),this.markedForComposition.add(a);let l=er.get(i);l&&l!=a&&(l.dom=null),a.setDOM(i)},r=this.childPos(e.range.fromB,1),s=this.children[r.i];n(e.line,s);for(let i=e.marks.length-1;i>=-1;i--)r=s.childPos(r.off,1),s=s.children[r.i],n(i>=0?e.marks[i].node:e.text,s)}updateSelection(e=!1,n=!1){(e||!this.view.observer.selectionRange.focusNode)&&this.view.observer.readSelectionRange();let r=this.view.root.activeElement,s=r==this.dom,i=!s&&!(this.view.state.facet(Tl)||this.dom.tabIndex>-1)&&av(this.dom,this.view.observer.selectionRange)&&!(r&&this.dom.contains(r));if(!(s||n||i))return;let a=this.forceSelection;this.forceSelection=!1;let l=this.view.state.selection.main,c=this.moveToLine(this.domAtPos(l.anchor)),d=l.empty?c:this.moveToLine(this.domAtPos(l.head));if(et.gecko&&l.empty&&!this.hasComposition&&Jae(c)){let m=document.createTextNode("");this.view.observer.ignore(()=>c.node.insertBefore(m,c.node.childNodes[c.offset]||null)),c=d=new Hs(m,0),a=!0}let h=this.view.observer.selectionRange;(a||!h.focusNode||(!y0(c.node,c.offset,h.anchorNode,h.anchorOffset)||!y0(d.node,d.offset,h.focusNode,h.focusOffset))&&!this.suppressWidgetCursorChange(h,l))&&(this.view.observer.ignore(()=>{et.android&&et.chrome&&this.dom.contains(h.focusNode)&&soe(h.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let m=B0(this.view.root);if(m)if(l.empty){if(et.gecko){let g=toe(c.node,c.offset);if(g&&g!=3){let x=(g==1?OF:jF)(c.node,c.offset);x&&(c=new Hs(x.node,x.offset))}}m.collapse(c.node,c.offset),l.bidiLevel!=null&&m.caretBidiLevel!==void 0&&(m.caretBidiLevel=l.bidiLevel)}else if(m.extend){m.collapse(c.node,c.offset);try{m.extend(d.node,d.offset)}catch{}}else{let g=document.createRange();l.anchor>l.head&&([c,d]=[d,c]),g.setEnd(d.node,d.offset),g.setStart(c.node,c.offset),m.removeAllRanges(),m.addRange(g)}i&&this.view.root.activeElement==this.dom&&(this.dom.blur(),r&&r.focus())}),this.view.observer.setSelectionRange(c,d)),this.impreciseAnchor=c.precise?null:new Hs(h.anchorNode,h.anchorOffset),this.impreciseHead=d.precise?null:new Hs(h.focusNode,h.focusOffset)}suppressWidgetCursorChange(e,n){return this.hasComposition&&n.empty&&y0(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==n.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,n=e.state.selection.main,r=B0(e.root),{anchorNode:s,anchorOffset:i}=e.observer.selectionRange;if(!r||!n.empty||!n.assoc||!r.modify)return;let a=es.find(this,n.head);if(!a)return;let l=a.posAtStart;if(n.head==l||n.head==l+a.length)return;let c=this.coordsAt(n.head,-1),d=this.coordsAt(n.head,1);if(!c||!d||c.bottom>d.top)return;let h=this.domAtPos(n.head+n.assoc);r.collapse(h.node,h.offset),r.modify("move",n.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let m=e.observer.selectionRange;e.docView.posFromDOM(m.anchorNode,m.anchorOffset)!=n.from&&r.collapse(s,i)}moveToLine(e){let n=this.dom,r;if(e.node!=n)return e;for(let s=e.offset;!r&&s=0;s--){let i=er.get(n.childNodes[s]);i instanceof es&&(r=i.domAtPos(i.length))}return r?new Hs(r.node,r.offset,!0):e}nearest(e){for(let n=e;n;){let r=er.get(n);if(r&&r.rootView==this)return r;n=n.parentNode}return null}posFromDOM(e,n){let r=this.nearest(e);if(!r)throw new RangeError("Trying to find position for a DOM position outside of the document");return r.localPosFromDOM(e,n)+r.posAtStart}domAtPos(e){let{i:n,off:r}=this.childCursor().findPos(e,-1);for(;n=0;a--){let l=this.children[a],c=i-l.breakAfter,d=c-l.length;if(ce||l.covers(1))&&(!r||l instanceof es&&!(r instanceof es&&n>=0)))r=l,s=d;else if(r&&d==e&&c==e&&l instanceof zl&&Math.abs(n)<2){if(l.deco.startSide<0)break;a&&(r=null)}i=d}return r?r.coordsAt(e-s,n):null}coordsForChar(e){let{i:n,off:r}=this.childPos(e,1),s=this.children[n];if(!(s instanceof es))return null;for(;s.children.length;){let{i:l,off:c}=s.childPos(r,1);for(;;l++){if(l==s.children.length)return null;if((s=s.children[l]).length)break}r=c}if(!(s instanceof Ya))return null;let i=Ds(s.text,r);if(i==r)return null;let a=ad(s.dom,r,i).getClientRects();for(let l=0;lMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,c=this.view.textDirection==gr.LTR;for(let d=0,h=0;hs)break;if(d>=r){let x=m.dom.getBoundingClientRect();if(n.push(x.height),a){let y=m.dom.lastChild,w=y?Kh(y):[];if(w.length){let S=w[w.length-1],k=c?S.right-x.left:x.right-S.left;k>l&&(l=k,this.minWidth=i,this.minWidthFrom=d,this.minWidthTo=g)}}}d=g+m.breakAfter}return n}textDirectionAt(e){let{i:n}=this.childPos(e,1);return getComputedStyle(this.children[n].dom).direction=="rtl"?gr.RTL:gr.LTR}measureTextSize(){for(let i of this.children)if(i instanceof es){let a=i.measureTextSize();if(a)return a}let e=document.createElement("div"),n,r,s;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.dom.appendChild(e);let i=Kh(e.firstChild)[0];n=e.getBoundingClientRect().height,r=i?i.width/27:7,s=i?i.height:n,e.remove()}),{lineHeight:n,charWidth:r,textHeight:s}}childCursor(e=this.length){let n=this.children.length;return n&&(e-=this.children[--n].length),new NF(this.children,e,n)}computeBlockGapDeco(){let e=[],n=this.view.viewState;for(let r=0,s=0;;s++){let i=s==n.viewports.length?null:n.viewports[s],a=i?i.from-1:this.length;if(a>r){let l=(n.lineBlockAt(a).bottom-n.lineBlockAt(r).top)/this.view.scaleY;e.push(kt.replace({widget:new Dk(l),block:!0,inclusive:!0,isBlockGap:!0}).range(r,a))}if(!i)break;r=i.to+1}return kt.set(e)}updateDeco(){let e=1,n=this.view.state.facet(F0).map(i=>(this.dynamicDecorationMap[e++]=typeof i=="function")?i(this.view):i),r=!1,s=this.view.state.facet(XF).map((i,a)=>{let l=typeof i=="function";return l&&(r=!0),l?i(this.view):i});for(s.length&&(this.dynamicDecorationMap[e++]=r,n.push(Rn.join(s))),this.decorations=[this.editContextFormatting,...n,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];en.anchor?-1:1),s;if(!r)return;!n.empty&&(s=this.coordsAt(n.anchor,n.anchor>n.head?-1:1))&&(r={left:Math.min(r.left,s.left),top:Math.min(r.top,s.top),right:Math.max(r.right,s.right),bottom:Math.max(r.bottom,s.bottom)});let i=r6(this.view),a={left:r.left-i.left,top:r.top-i.top,right:r.right+i.right,bottom:r.bottom+i.bottom},{offsetWidth:l,offsetHeight:c}=this.view.scrollDOM;Aae(this.view.scrollDOM,a,n.heads instanceof _l||s.children.some(r);return r(this.children[n])}}function Jae(t){return t.node.nodeType==1&&t.node.firstChild&&(t.offset==0||t.node.childNodes[t.offset-1].contentEditable=="false")&&(t.offset==t.node.childNodes.length||t.node.childNodes[t.offset].contentEditable=="false")}function ZF(t,e){let n=t.observer.selectionRange;if(!n.focusNode)return null;let r=OF(n.focusNode,n.focusOffset),s=jF(n.focusNode,n.focusOffset),i=r||s;if(s&&r&&s.node!=r.node){let l=er.get(s.node);if(!l||l instanceof Ya&&l.text!=s.node.nodeValue)i=s;else if(t.docView.lastCompositionAfterCursor){let c=er.get(r.node);!c||c instanceof Ya&&c.text!=r.node.nodeValue||(i=s)}}if(t.docView.lastCompositionAfterCursor=i!=r,!i)return null;let a=e-i.offset;return{from:a,to:a+i.node.nodeValue.length,node:i.node}}function eoe(t,e,n){let r=ZF(t,n);if(!r)return null;let{node:s,from:i,to:a}=r,l=s.nodeValue;if(/[\n\r]/.test(l)||t.state.doc.sliceString(r.from,r.to)!=l)return null;let c=e.invertedDesc,d=new Na(c.mapPos(i),c.mapPos(a),i,a),h=[];for(let m=s.parentNode;;m=m.parentNode){let g=er.get(m);if(g instanceof ql)h.push({node:m,deco:g.mark});else{if(g instanceof es||m.nodeName=="DIV"&&m.parentNode==t.contentDOM)return{range:d,text:s,marks:h,line:m};if(m!=t.contentDOM)h.push({node:m,deco:new Fp({inclusive:!0,attributes:qae(m),tagName:m.tagName.toLowerCase()})});else return null}}}function toe(t,e){return t.nodeType!=1?0:(e&&t.childNodes[e-1].contentEditable=="false"?1:0)|(e{re.from&&(n=!0)}),n}function aoe(t,e,n=1){let r=t.charCategorizer(e),s=t.doc.lineAt(e),i=e-s.from;if(s.length==0)return Ae.cursor(e);i==0?n=1:i==s.length&&(n=-1);let a=i,l=i;n<0?a=Ds(s.text,i,!1):l=Ds(s.text,i);let c=r(s.text.slice(a,l));for(;a>0;){let d=Ds(s.text,a,!1);if(r(s.text.slice(d,a))!=c)break;a=d}for(;lt?e.left-t:Math.max(0,t-e.right)}function loe(t,e){return e.top>t?e.top-t:Math.max(0,t-e.bottom)}function M4(t,e){return t.tope.top+1}function bE(t,e){return et.bottom?{top:t.top,left:t.left,right:t.right,bottom:e}:t}function Bk(t,e,n){let r,s,i,a,l=!1,c,d,h,m;for(let y=t.firstChild;y;y=y.nextSibling){let w=Kh(y);for(let S=0;SN||a==N&&i>j)&&(r=y,s=k,i=j,a=N,l=j?e0:Sk.bottom&&(!h||h.bottomk.top)&&(d=y,m=k):h&&M4(h,k)?h=wE(h,k.bottom):m&&M4(m,k)&&(m=bE(m,k.top))}}if(h&&h.bottom>=n?(r=c,s=h):m&&m.top<=n&&(r=d,s=m),!r)return{node:t,offset:0};let g=Math.max(s.left,Math.min(s.right,e));if(r.nodeType==3)return SE(r,g,n);if(l&&r.contentEditable!="false")return Bk(r,g,n);let x=Array.prototype.indexOf.call(t.childNodes,r)+(e>=(s.left+s.right)/2?1:0);return{node:t,offset:x}}function SE(t,e,n){let r=t.nodeValue.length,s=-1,i=1e9,a=0;for(let l=0;ln?h.top-n:n-h.bottom)-1;if(h.left-1<=e&&h.right+1>=e&&m=(h.left+h.right)/2,x=g;if(et.chrome||et.gecko){let y=ad(t,l).getBoundingClientRect();Math.abs(y.left-h.right)<.1&&(x=!g)}if(m<=0)return{node:t,offset:l+(x?1:0)};s=l+(x?1:0),i=m}}}return{node:t,offset:s>-1?s:a>0?t.nodeValue.length:0}}function JF(t,e,n,r=-1){var s,i;let a=t.contentDOM.getBoundingClientRect(),l=a.top+t.viewState.paddingTop,c,{docHeight:d}=t.viewState,{x:h,y:m}=e,g=m-l;if(g<0)return 0;if(g>d)return t.state.doc.length;for(let T=t.viewState.heightOracle.textHeight/2,E=!1;c=t.elementAtHeight(g),c.type!=ti.Text;)for(;g=r>0?c.bottom+T:c.top-T,!(g>=0&&g<=d);){if(E)return n?null:0;E=!0,r=-r}m=l+g;let x=c.from;if(xt.viewport.to)return t.viewport.to==t.state.doc.length?t.state.doc.length:n?null:kE(t,a,c,h,m);let y=t.dom.ownerDocument,w=t.root.elementFromPoint?t.root:y,S=w.elementFromPoint(h,m);S&&!t.contentDOM.contains(S)&&(S=null),S||(h=Math.max(a.left+1,Math.min(a.right-1,h)),S=w.elementFromPoint(h,m),S&&!t.contentDOM.contains(S)&&(S=null));let k,j=-1;if(S&&((s=t.docView.nearest(S))===null||s===void 0?void 0:s.isEditable)!=!1){if(y.caretPositionFromPoint){let T=y.caretPositionFromPoint(h,m);T&&({offsetNode:k,offset:j}=T)}else if(y.caretRangeFromPoint){let T=y.caretRangeFromPoint(h,m);T&&({startContainer:k,startOffset:j}=T)}k&&(!t.contentDOM.contains(k)||et.safari&&coe(k,j,h)||et.chrome&&uoe(k,j,h))&&(k=void 0),k&&(j=Math.min(Io(k),j))}if(!k||!t.docView.dom.contains(k)){let T=es.find(t.docView,x);if(!T)return g>c.top+c.height/2?c.to:c.from;({node:k,offset:j}=Bk(T.dom,h,m))}let N=t.docView.nearest(k);if(!N)return null;if(N.isWidget&&((i=N.dom)===null||i===void 0?void 0:i.nodeType)==1){let T=N.dom.getBoundingClientRect();return e.yt.defaultLineHeight*1.5){let l=t.viewState.heightOracle.textHeight,c=Math.floor((s-n.top-(t.defaultLineHeight-l)*.5)/l);i+=c*t.viewState.heightOracle.lineLength}let a=t.state.sliceDoc(n.from,n.to);return n.from+Ok(a,i,t.state.tabSize)}function eq(t,e,n){let r,s=t;if(t.nodeType!=3||e!=(r=t.nodeValue.length))return!1;for(;;){let i=s.nextSibling;if(i){if(i.nodeName=="BR")break;return!1}else{let a=s.parentNode;if(!a||a.nodeName=="DIV")break;s=a}}return ad(t,r-1,r).getBoundingClientRect().right>n}function coe(t,e,n){return eq(t,e,n)}function uoe(t,e,n){if(e!=0)return eq(t,e,n);for(let s=t;;){let i=s.parentNode;if(!i||i.nodeType!=1||i.firstChild!=s)return!1;if(i.classList.contains("cm-line"))break;s=i}let r=t.nodeType==1?t.getBoundingClientRect():ad(t,0,Math.max(t.nodeValue.length,1)).getBoundingClientRect();return n-r.left>5}function Fk(t,e,n){let r=t.lineBlockAt(e);if(Array.isArray(r.type)){let s;for(let i of r.type){if(i.from>e)break;if(!(i.toe)return i;(!s||i.type==ti.Text&&(s.type!=i.type||(n<0?i.frome)))&&(s=i)}}return s||r}return r}function doe(t,e,n,r){let s=Fk(t,e.head,e.assoc||-1),i=!r||s.type!=ti.Text||!(t.lineWrapping||s.widgetLineBreaks)?null:t.coordsAtPos(e.assoc<0&&e.head>s.from?e.head-1:e.head);if(i){let a=t.dom.getBoundingClientRect(),l=t.textDirectionAt(s.from),c=t.posAtCoords({x:n==(l==gr.LTR)?a.right-1:a.left+1,y:(i.top+i.bottom)/2});if(c!=null)return Ae.cursor(c,n?-1:1)}return Ae.cursor(n?s.to:s.from,n?-1:1)}function OE(t,e,n,r){let s=t.state.doc.lineAt(e.head),i=t.bidiSpans(s),a=t.textDirectionAt(s.from);for(let l=e,c=null;;){let d=Yae(s,i,a,l,n),h=IF;if(!d){if(s.number==(n?t.state.doc.lines:1))return l;h=` +`,s=t.state.doc.line(s.number+(n?1:-1)),i=t.bidiSpans(s),d=t.visualLineSide(s,!n)}if(c){if(!c(h))return l}else{if(!r)return d;c=r(h)}l=d}}function hoe(t,e,n){let r=t.state.charCategorizer(e),s=r(n);return i=>{let a=r(i);return s==wr.Space&&(s=a),s==a}}function foe(t,e,n,r){let s=e.head,i=n?1:-1;if(s==(n?t.state.doc.length:0))return Ae.cursor(s,e.assoc);let a=e.goalColumn,l,c=t.contentDOM.getBoundingClientRect(),d=t.coordsAtPos(s,e.assoc||-1),h=t.documentTop;if(d)a==null&&(a=d.left-c.left),l=i<0?d.top:d.bottom;else{let x=t.viewState.lineBlockAt(s);a==null&&(a=Math.min(c.right-c.left,t.defaultCharacterWidth*(s-x.from))),l=(i<0?x.top:x.bottom)+h}let m=c.left+a,g=r??t.viewState.heightOracle.textHeight>>1;for(let x=0;;x+=10){let y=l+(g+x)*i,w=JF(t,{x:m,y},!1,i);if(yc.bottom||(i<0?ws)){let S=t.docView.coordsForChar(w),k=!S||y{if(e>i&&es(t)),n.from,e.head>n.from?-1:1);return r==n.from?n:Ae.cursor(r,ri)&&!goe(a,n)&&this.lineBreak(),s=a}return this.findPointBefore(r,n),this}readTextNode(e){let n=e.nodeValue;for(let r of this.points)r.node==e&&(r.pos=this.text.length+Math.min(r.offset,n.length));for(let r=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let i=-1,a=1,l;if(this.lineSeparator?(i=n.indexOf(this.lineSeparator,r),a=this.lineSeparator.length):(l=s.exec(n))&&(i=l.index,a=l[0].length),this.append(n.slice(r,i<0?n.length:i)),i<0)break;if(this.lineBreak(),a>1)for(let c of this.points)c.node==e&&c.pos>this.text.length&&(c.pos-=a-1);r=i+a}}readNode(e){if(e.cmIgnore)return;let n=er.get(e),r=n&&n.overrideDOMText;if(r!=null){this.findPointInside(e,r.length);for(let s=r.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,n){for(let r of this.points)r.node==e&&e.childNodes[r.offset]==n&&(r.pos=this.text.length)}findPointInside(e,n){for(let r of this.points)(e.nodeType==3?r.node==e:e.contains(r.node))&&(r.pos=this.text.length+(poe(e,r.node,r.offset)?n:0))}}function poe(t,e,n){for(;;){if(!e||n-1;let{impreciseHead:i,impreciseAnchor:a}=e.docView;if(e.state.readOnly&&n>-1)this.newSel=null;else if(n>-1&&(this.bounds=e.docView.domBoundsAround(n,r,0))){let l=i||a?[]:yoe(e),c=new moe(l,e.state);c.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=c.text,this.newSel=boe(l,this.bounds.from)}else{let l=e.observer.selectionRange,c=i&&i.node==l.focusNode&&i.offset==l.focusOffset||!Mk(e.contentDOM,l.focusNode)?e.state.selection.main.head:e.docView.posFromDOM(l.focusNode,l.focusOffset),d=a&&a.node==l.anchorNode&&a.offset==l.anchorOffset||!Mk(e.contentDOM,l.anchorNode)?e.state.selection.main.anchor:e.docView.posFromDOM(l.anchorNode,l.anchorOffset),h=e.viewport;if((et.ios||et.chrome)&&e.state.selection.main.empty&&c!=d&&(h.from>0||h.to-1&&e.state.selection.ranges.length>1?this.newSel=e.state.selection.replaceRange(Ae.range(d,c)):this.newSel=Ae.single(d,c)}}}function nq(t,e){let n,{newSel:r}=e,s=t.state.selection.main,i=t.inputState.lastKeyTime>Date.now()-100?t.inputState.lastKeyCode:-1;if(e.bounds){let{from:a,to:l}=e.bounds,c=s.from,d=null;(i===8||et.android&&e.text.length=s.from&&n.to<=s.to&&(n.from!=s.from||n.to!=s.to)&&s.to-s.from-(n.to-n.from)<=4?n={from:s.from,to:s.to,insert:t.state.doc.slice(s.from,n.from).append(n.insert).append(t.state.doc.slice(n.to,s.to))}:t.state.doc.lineAt(s.from).toDate.now()-50?n={from:s.from,to:s.to,insert:t.state.toText(t.inputState.insertingText)}:et.chrome&&n&&n.from==n.to&&n.from==s.head&&n.insert.toString()==` + `&&t.lineWrapping&&(r&&(r=Ae.single(r.main.anchor-1,r.main.head-1)),n={from:s.from,to:s.to,insert:jn.of([" "])}),n)return s6(t,n,r,i);if(r&&!r.main.eq(s)){let a=!1,l="select";return t.inputState.lastSelectionTime>Date.now()-50&&(t.inputState.lastSelectionOrigin=="select"&&(a=!0),l=t.inputState.lastSelectionOrigin,l=="select.pointer"&&(r=tq(t.state.facet($p).map(c=>c(t)),r))),t.dispatch({selection:r,scrollIntoView:a,userEvent:l}),!0}else return!1}function s6(t,e,n,r=-1){if(et.ios&&t.inputState.flushIOSKey(e))return!0;let s=t.state.selection.main;if(et.android&&(e.to==s.to&&(e.from==s.from||e.from==s.from-1&&t.state.sliceDoc(e.from,s.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&Ph(t.contentDOM,"Enter",13)||(e.from==s.from-1&&e.to==s.to&&e.insert.length==0||r==8&&e.insert.lengths.head)&&Ph(t.contentDOM,"Backspace",8)||e.from==s.from&&e.to==s.to+1&&e.insert.length==0&&Ph(t.contentDOM,"Delete",46)))return!0;let i=e.insert.toString();t.inputState.composing>=0&&t.inputState.composing++;let a,l=()=>a||(a=voe(t,e,n));return t.state.facet($F).some(c=>c(t,e.from,e.to,i,l))||t.dispatch(l()),!0}function voe(t,e,n){let r,s=t.state,i=s.selection.main,a=-1;if(e.from==e.to&&e.fromi.to){let c=e.fromm(t)),d,c);e.from==h&&(a=h)}if(a>-1)r={changes:e,selection:Ae.cursor(e.from+e.insert.length,-1)};else if(e.from>=i.from&&e.to<=i.to&&e.to-e.from>=(i.to-i.from)/3&&(!n||n.main.empty&&n.main.from==e.from+e.insert.length)&&t.inputState.composing<0){let c=i.frome.to?s.sliceDoc(e.to,i.to):"";r=s.replaceSelection(t.state.toText(c+e.insert.sliceString(0,void 0,t.state.lineBreak)+d))}else{let c=s.changes(e),d=n&&n.main.to<=c.newLength?n.main:void 0;if(s.selection.ranges.length>1&&(t.inputState.composing>=0||t.inputState.compositionPendingChange)&&e.to<=i.to+10&&e.to>=i.to-10){let h=t.state.sliceDoc(e.from,e.to),m,g=n&&ZF(t,n.main.head);if(g){let y=e.insert.length-(e.to-e.from);m={from:g.from,to:g.to-y}}else m=t.state.doc.lineAt(i.head);let x=i.to-e.to;r=s.changeByRange(y=>{if(y.from==i.from&&y.to==i.to)return{changes:c,range:d||y.map(c)};let w=y.to-x,S=w-h.length;if(t.state.sliceDoc(S,w)!=h||w>=m.from&&S<=m.to)return{range:y};let k=s.changes({from:S,to:w,insert:e.insert}),j=y.to-i.to;return{changes:k,range:d?Ae.range(Math.max(0,d.anchor+j),Math.max(0,d.head+j)):y.map(k)}})}else r={changes:c,selection:d&&s.selection.replaceRange(d)}}let l="input.type";return(t.composing||t.inputState.compositionPendingChange&&t.inputState.compositionEndedAt>Date.now()-50)&&(t.inputState.compositionPendingChange=!1,l+=".compose",t.inputState.compositionFirstChange&&(l+=".start",t.inputState.compositionFirstChange=!1)),s.update(r,{userEvent:l,scrollIntoView:!0})}function rq(t,e,n,r){let s=Math.min(t.length,e.length),i=0;for(;i0&&l>0&&t.charCodeAt(a-1)==e.charCodeAt(l-1);)a--,l--;if(r=="end"){let c=Math.max(0,i-Math.min(a,l));n-=a+c-i}if(a=a?i-n:0;i-=c,l=i+(l-a),a=i}else if(l=l?i-n:0;i-=c,a=i+(a-l),l=i}return{from:i,toA:a,toB:l}}function yoe(t){let e=[];if(t.root.activeElement!=t.contentDOM)return e;let{anchorNode:n,anchorOffset:r,focusNode:s,focusOffset:i}=t.observer.selectionRange;return n&&(e.push(new jE(n,r)),(s!=n||i!=r)&&e.push(new jE(s,i))),e}function boe(t,e){if(t.length==0)return null;let n=t[0].pos,r=t.length==2?t[1].pos:n;return n>-1&&r>-1?Ae.single(n+e,r+e):null}class woe{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,et.safari&&e.contentDOM.addEventListener("input",()=>null),et.gecko&&Ioe(e.contentDOM.ownerDocument)}handleEvent(e){!Eoe(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,n){let r=this.handlers[e];if(r){for(let s of r.observers)s(this.view,n);for(let s of r.handlers){if(n.defaultPrevented)break;if(s(this.view,n)){n.preventDefault();break}}}}ensureHandlers(e){let n=Soe(e),r=this.handlers,s=this.view.contentDOM;for(let i in n)if(i!="scroll"){let a=!n[i].handlers.length,l=r[i];l&&a!=!l.handlers.length&&(s.removeEventListener(i,this.handleEvent),l=null),l||s.addEventListener(i,this.handleEvent,{passive:a})}for(let i in r)i!="scroll"&&!n[i]&&s.removeEventListener(i,this.handleEvent);this.handlers=n}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&iq.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),et.android&&et.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;let n;return et.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&((n=sq.find(r=>r.keyCode==e.keyCode))&&!e.ctrlKey||koe.indexOf(e.key)>-1&&e.ctrlKey&&!e.shiftKey)?(this.pendingIOSKey=n||e,setTimeout(()=>this.flushIOSKey(),250),!0):(e.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(e){let n=this.pendingIOSKey;return!n||n.key=="Enter"&&e&&e.from0?!0:et.safari&&!et.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}function NE(t,e){return(n,r)=>{try{return e.call(t,r,n)}catch(s){vi(n.state,s)}}}function Soe(t){let e=Object.create(null);function n(r){return e[r]||(e[r]={observers:[],handlers:[]})}for(let r of t){let s=r.spec,i=s&&s.plugin.domEventHandlers,a=s&&s.plugin.domEventObservers;if(i)for(let l in i){let c=i[l];c&&n(l).handlers.push(NE(r.value,c))}if(a)for(let l in a){let c=a[l];c&&n(l).observers.push(NE(r.value,c))}}for(let r in Ka)n(r).handlers.push(Ka[r]);for(let r in _a)n(r).observers.push(_a[r]);return e}const sq=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],koe="dthko",iq=[16,17,18,20,91,92,224,225],t1=6;function n1(t){return Math.max(0,t)*.7+8}function Ooe(t,e){return Math.max(Math.abs(t.clientX-e.clientX),Math.abs(t.clientY-e.clientY))}class joe{constructor(e,n,r,s){this.view=e,this.startEvent=n,this.style=r,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=n,this.scrollParents=Rae(e.contentDOM),this.atoms=e.state.facet($p).map(a=>a(e));let i=e.contentDOM.ownerDocument;i.addEventListener("mousemove",this.move=this.move.bind(this)),i.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=n.shiftKey,this.multiple=e.state.facet(bn.allowMultipleSelections)&&Noe(e,n),this.dragging=Toe(e,n)&&lq(n)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Ooe(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let n=0,r=0,s=0,i=0,a=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:a}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:i,bottom:l}=this.scrollParents.y.getBoundingClientRect());let c=r6(this.view);e.clientX-c.left<=s+t1?n=-n1(s-e.clientX):e.clientX+c.right>=a-t1&&(n=n1(e.clientX-a)),e.clientY-c.top<=i+t1?r=-n1(i-e.clientY):e.clientY+c.bottom>=l-t1&&(r=n1(e.clientY-l)),this.setScrollSpeed(n,r)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,n){this.scrollSpeed={x:e,y:n},e||n?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:n}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),n&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=n,n=0),(e||n)&&this.view.win.scrollBy(e,n),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:n}=this,r=tq(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!r.eq(n.state.selection,this.dragging===!1))&&this.view.dispatch({selection:r,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){e.transactions.some(n=>n.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}}function Noe(t,e){let n=t.state.facet(LF);return n.length?n[0](e):et.mac?e.metaKey:e.ctrlKey}function Coe(t,e){let n=t.state.facet(BF);return n.length?n[0](e):et.mac?!e.altKey:!e.ctrlKey}function Toe(t,e){let{main:n}=t.state.selection;if(n.empty)return!1;let r=B0(t.root);if(!r||r.rangeCount==0)return!0;let s=r.getRangeAt(0).getClientRects();for(let i=0;i=e.clientX&&a.top<=e.clientY&&a.bottom>=e.clientY)return!0}return!1}function Eoe(t,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let n=e.target,r;n!=t.contentDOM;n=n.parentNode)if(!n||n.nodeType==11||(r=er.get(n))&&r.ignoreEvent(e))return!1;return!0}const Ka=Object.create(null),_a=Object.create(null),aq=et.ie&&et.ie_version<15||et.ios&&et.webkit_version<604;function _oe(t){let e=t.dom.parentNode;if(!e)return;let n=e.appendChild(document.createElement("textarea"));n.style.cssText="position: fixed; left: -10000px; top: 10px",n.focus(),setTimeout(()=>{t.focus(),n.remove(),oq(t,n.value)},50)}function sb(t,e,n){for(let r of t.facet(e))n=r(n,t);return n}function oq(t,e){e=sb(t.state,e6,e);let{state:n}=t,r,s=1,i=n.toText(e),a=i.lines==n.selection.ranges.length;if(qk!=null&&n.selection.ranges.every(c=>c.empty)&&qk==i.toString()){let c=-1;r=n.changeByRange(d=>{let h=n.doc.lineAt(d.from);if(h.from==c)return{range:d};c=h.from;let m=n.toText((a?i.line(s++).text:e)+n.lineBreak);return{changes:{from:h.from,insert:m},range:Ae.cursor(d.from+m.length)}})}else a?r=n.changeByRange(c=>{let d=i.line(s++);return{changes:{from:c.from,to:c.to,insert:d.text},range:Ae.cursor(c.from+d.length)}}):r=n.replaceSelection(i);t.dispatch(r,{userEvent:"input.paste",scrollIntoView:!0})}_a.scroll=t=>{t.inputState.lastScrollTop=t.scrollDOM.scrollTop,t.inputState.lastScrollLeft=t.scrollDOM.scrollLeft};Ka.keydown=(t,e)=>(t.inputState.setSelectionOrigin("select"),e.keyCode==27&&t.inputState.tabFocusMode!=0&&(t.inputState.tabFocusMode=Date.now()+2e3),!1);_a.touchstart=(t,e)=>{t.inputState.lastTouchTime=Date.now(),t.inputState.setSelectionOrigin("select.pointer")};_a.touchmove=t=>{t.inputState.setSelectionOrigin("select.pointer")};Ka.mousedown=(t,e)=>{if(t.observer.flush(),t.inputState.lastTouchTime>Date.now()-2e3)return!1;let n=null;for(let r of t.state.facet(FF))if(n=r(t,e),n)break;if(!n&&e.button==0&&(n=Roe(t,e)),n){let r=!t.hasFocus;t.inputState.startMouseSelection(new joe(t,e,n,r)),r&&t.observer.ignore(()=>{wF(t.contentDOM);let i=t.root.activeElement;i&&!i.contains(t.contentDOM)&&i.blur()});let s=t.inputState.mouseSelection;if(s)return s.start(e),s.dragging===!1}else t.inputState.setSelectionOrigin("select.pointer");return!1};function CE(t,e,n,r){if(r==1)return Ae.cursor(e,n);if(r==2)return aoe(t.state,e,n);{let s=es.find(t.docView,e),i=t.state.doc.lineAt(s?s.posAtEnd:e),a=s?s.posAtStart:i.from,l=s?s.posAtEnd:i.to;return le>=n.top&&e<=n.bottom&&t>=n.left&&t<=n.right;function Moe(t,e,n,r){let s=es.find(t.docView,e);if(!s)return 1;let i=e-s.posAtStart;if(i==0)return 1;if(i==s.length)return-1;let a=s.coordsAt(i,-1);if(a&&TE(n,r,a))return-1;let l=s.coordsAt(i,1);return l&&TE(n,r,l)?1:a&&a.bottom>=r?-1:1}function EE(t,e){let n=t.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:n,bias:Moe(t,n,e.clientX,e.clientY)}}const Aoe=et.ie&&et.ie_version<=11;let _E=null,ME=0,AE=0;function lq(t){if(!Aoe)return t.detail;let e=_E,n=AE;return _E=t,AE=Date.now(),ME=!e||n>Date.now()-400&&Math.abs(e.clientX-t.clientX)<2&&Math.abs(e.clientY-t.clientY)<2?(ME+1)%3:1}function Roe(t,e){let n=EE(t,e),r=lq(e),s=t.state.selection;return{update(i){i.docChanged&&(n.pos=i.changes.mapPos(n.pos),s=s.map(i.changes))},get(i,a,l){let c=EE(t,i),d,h=CE(t,c.pos,c.bias,r);if(n.pos!=c.pos&&!a){let m=CE(t,n.pos,n.bias,r),g=Math.min(m.from,h.from),x=Math.max(m.to,h.to);h=g1&&(d=Doe(s,c.pos))?d:l?s.addRange(h):Ae.create([h])}}}function Doe(t,e){for(let n=0;n=e)return Ae.create(t.ranges.slice(0,n).concat(t.ranges.slice(n+1)),t.mainIndex==n?0:t.mainIndex-(t.mainIndex>n?1:0))}return null}Ka.dragstart=(t,e)=>{let{selection:{main:n}}=t.state;if(e.target.draggable){let s=t.docView.nearest(e.target);if(s&&s.isWidget){let i=s.posAtStart,a=i+s.length;(i>=n.to||a<=n.from)&&(n=Ae.range(i,a))}}let{inputState:r}=t;return r.mouseSelection&&(r.mouseSelection.dragging=!0),r.draggedContent=n,e.dataTransfer&&(e.dataTransfer.setData("Text",sb(t.state,t6,t.state.sliceDoc(n.from,n.to))),e.dataTransfer.effectAllowed="copyMove"),!1};Ka.dragend=t=>(t.inputState.draggedContent=null,!1);function RE(t,e,n,r){if(n=sb(t.state,e6,n),!n)return;let s=t.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:i}=t.inputState,a=r&&i&&Coe(t,e)?{from:i.from,to:i.to}:null,l={from:s,insert:n},c=t.state.changes(a?[a,l]:l);t.focus(),t.dispatch({changes:c,selection:{anchor:c.mapPos(s,-1),head:c.mapPos(s,1)},userEvent:a?"move.drop":"input.drop"}),t.inputState.draggedContent=null}Ka.drop=(t,e)=>{if(!e.dataTransfer)return!1;if(t.state.readOnly)return!0;let n=e.dataTransfer.files;if(n&&n.length){let r=Array(n.length),s=0,i=()=>{++s==n.length&&RE(t,e,r.filter(a=>a!=null).join(t.state.lineBreak),!1)};for(let a=0;a{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(r[a]=l.result),i()},l.readAsText(n[a])}return!0}else{let r=e.dataTransfer.getData("Text");if(r)return RE(t,e,r,!0),!0}return!1};Ka.paste=(t,e)=>{if(t.state.readOnly)return!0;t.observer.flush();let n=aq?null:e.clipboardData;return n?(oq(t,n.getData("text/plain")||n.getData("text/uri-list")),!0):(_oe(t),!1)};function Poe(t,e){let n=t.dom.parentNode;if(!n)return;let r=n.appendChild(document.createElement("textarea"));r.style.cssText="position: fixed; left: -10000px; top: 10px",r.value=e,r.focus(),r.selectionEnd=e.length,r.selectionStart=0,setTimeout(()=>{r.remove(),t.focus()},50)}function zoe(t){let e=[],n=[],r=!1;for(let s of t.selection.ranges)s.empty||(e.push(t.sliceDoc(s.from,s.to)),n.push(s));if(!e.length){let s=-1;for(let{from:i}of t.selection.ranges){let a=t.doc.lineAt(i);a.number>s&&(e.push(a.text),n.push({from:a.from,to:Math.min(t.doc.length,a.to+1)})),s=a.number}r=!0}return{text:sb(t,t6,e.join(t.lineBreak)),ranges:n,linewise:r}}let qk=null;Ka.copy=Ka.cut=(t,e)=>{let{text:n,ranges:r,linewise:s}=zoe(t.state);if(!n&&!s)return!1;qk=s?n:null,e.type=="cut"&&!t.state.readOnly&&t.dispatch({changes:r,scrollIntoView:!0,userEvent:"delete.cut"});let i=aq?null:e.clipboardData;return i?(i.clearData(),i.setData("text/plain",n),!0):(Poe(t,n),!1)};const cq=Fo.define();function uq(t,e){let n=[];for(let r of t.facet(HF)){let s=r(t,e);s&&n.push(s)}return n.length?t.update({effects:n,annotations:cq.of(!0)}):null}function dq(t){setTimeout(()=>{let e=t.hasFocus;if(e!=t.inputState.notifiedFocused){let n=uq(t.state,e);n?t.dispatch(n):t.update([])}},10)}_a.focus=t=>{t.inputState.lastFocusTime=Date.now(),!t.scrollDOM.scrollTop&&(t.inputState.lastScrollTop||t.inputState.lastScrollLeft)&&(t.scrollDOM.scrollTop=t.inputState.lastScrollTop,t.scrollDOM.scrollLeft=t.inputState.lastScrollLeft),dq(t)};_a.blur=t=>{t.observer.clearSelectionRange(),dq(t)};_a.compositionstart=_a.compositionupdate=t=>{t.observer.editContext||(t.inputState.compositionFirstChange==null&&(t.inputState.compositionFirstChange=!0),t.inputState.composing<0&&(t.inputState.composing=0))};_a.compositionend=t=>{t.observer.editContext||(t.inputState.composing=-1,t.inputState.compositionEndedAt=Date.now(),t.inputState.compositionPendingKey=!0,t.inputState.compositionPendingChange=t.observer.pendingRecords().length>0,t.inputState.compositionFirstChange=null,et.chrome&&et.android?t.observer.flushSoon():t.inputState.compositionPendingChange?Promise.resolve().then(()=>t.observer.flush()):setTimeout(()=>{t.inputState.composing<0&&t.docView.hasComposition&&t.update([])},50))};_a.contextmenu=t=>{t.inputState.lastContextMenu=Date.now()};Ka.beforeinput=(t,e)=>{var n,r;if((e.inputType=="insertText"||e.inputType=="insertCompositionText")&&(t.inputState.insertingText=e.data,t.inputState.insertingTextAt=Date.now()),e.inputType=="insertReplacementText"&&t.observer.editContext){let i=(n=e.dataTransfer)===null||n===void 0?void 0:n.getData("text/plain"),a=e.getTargetRanges();if(i&&a.length){let l=a[0],c=t.posAtDOM(l.startContainer,l.startOffset),d=t.posAtDOM(l.endContainer,l.endOffset);return s6(t,{from:c,to:d,insert:t.state.toText(i)},null),!0}}let s;if(et.chrome&&et.android&&(s=sq.find(i=>i.inputType==e.inputType))&&(t.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let i=((r=window.visualViewport)===null||r===void 0?void 0:r.height)||0;setTimeout(()=>{var a;(((a=window.visualViewport)===null||a===void 0?void 0:a.height)||0)>i+10&&t.hasFocus&&(t.contentDOM.blur(),t.focus())},100)}return et.ios&&e.inputType=="deleteContentForward"&&t.observer.flushSoon(),et.safari&&e.inputType=="insertText"&&t.inputState.composing>=0&&setTimeout(()=>_a.compositionend(t,e),20),!1};const DE=new Set;function Ioe(t){DE.has(t)||(DE.add(t),t.addEventListener("copy",()=>{}),t.addEventListener("cut",()=>{}))}const PE=["pre-wrap","normal","pre-line","break-spaces"];let ef=!1;function zE(){ef=!1}class Loe{constructor(e){this.lineWrapping=e,this.doc=jn.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,n){let r=this.doc.lineAt(n).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(r+=Math.max(0,Math.ceil((n-e-r*this.lineLength*.5)/this.lineLength))),this.lineHeight*r}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return PE.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let n=!1;for(let r=0;r-1,c=Math.round(n)!=Math.round(this.lineHeight)||this.lineWrapping!=l;if(this.lineWrapping=l,this.lineHeight=n,this.charWidth=r,this.textHeight=s,this.lineLength=i,c){this.heightSamples={};for(let d=0;d0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>lv&&(ef=!0),this.height=e)}replace(e,n,r){return ni.of(r)}decomposeLeft(e,n){n.push(this)}decomposeRight(e,n){n.push(this)}applyChanges(e,n,r,s){let i=this,a=r.doc;for(let l=s.length-1;l>=0;l--){let{fromA:c,toA:d,fromB:h,toB:m}=s[l],g=i.lineAt(c,pr.ByPosNoHeight,r.setDoc(n),0,0),x=g.to>=d?g:i.lineAt(d,pr.ByPosNoHeight,r,0,0);for(m+=x.to-d,d=x.to;l>0&&g.from<=s[l-1].toA;)c=s[l-1].fromA,h=s[l-1].fromB,l--,ci*2){let l=e[n-1];l.break?e.splice(--n,1,l.left,null,l.right):e.splice(--n,1,l.left,l.right),r+=1+l.break,s-=l.size}else if(i>s*2){let l=e[r];l.break?e.splice(r,1,l.left,null,l.right):e.splice(r,1,l.left,l.right),r+=2+l.break,i-=l.size}else break;else if(s=i&&a(this.blockAt(0,r,s,i))}updateHeight(e,n=0,r=!1,s){return s&&s.from<=n&&s.more&&this.setHeight(s.heights[s.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}}class $i extends hq{constructor(e,n){super(e,n,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0}blockAt(e,n,r,s){return new So(s,this.length,r,this.height,this.breaks)}replace(e,n,r){let s=r[0];return r.length==1&&(s instanceof $i||s instanceof Ms&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof Ms?s=new $i(s.length,this.height):s.height=this.height,this.outdated||(s.outdated=!1),s):ni.of(r)}updateHeight(e,n=0,r=!1,s){return s&&s.from<=n&&s.more?this.setHeight(s.heights[s.index++]):(r||this.outdated)&&this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class Ms extends ni{constructor(e){super(e,0)}heightMetrics(e,n){let r=e.doc.lineAt(n).number,s=e.doc.lineAt(n+this.length).number,i=s-r+1,a,l=0;if(e.lineWrapping){let c=Math.min(this.height,e.lineHeight*i);a=c/i,this.length>i+1&&(l=(this.height-c)/(this.length-i-1))}else a=this.height/i;return{firstLine:r,lastLine:s,perLine:a,perChar:l}}blockAt(e,n,r,s){let{firstLine:i,lastLine:a,perLine:l,perChar:c}=this.heightMetrics(n,s);if(n.lineWrapping){let d=s+(e0){let i=r[r.length-1];i instanceof Ms?r[r.length-1]=new Ms(i.length+s):r.push(null,new Ms(s-1))}if(e>0){let i=r[0];i instanceof Ms?r[0]=new Ms(e+i.length):r.unshift(new Ms(e-1),null)}return ni.of(r)}decomposeLeft(e,n){n.push(new Ms(e-1),null)}decomposeRight(e,n){n.push(null,new Ms(this.length-e-1))}updateHeight(e,n=0,r=!1,s){let i=n+this.length;if(s&&s.from<=n+this.length&&s.more){let a=[],l=Math.max(n,s.from),c=-1;for(s.from>n&&a.push(new Ms(s.from-n-1).updateHeight(e,n));l<=i&&s.more;){let h=e.doc.lineAt(l).length;a.length&&a.push(null);let m=s.heights[s.index++];c==-1?c=m:Math.abs(m-c)>=lv&&(c=-2);let g=new $i(h,m);g.outdated=!1,a.push(g),l+=h+1}l<=i&&a.push(null,new Ms(i-l).updateHeight(e,l));let d=ni.of(a);return(c<0||Math.abs(d.height-this.height)>=lv||Math.abs(c-this.heightMetrics(e,n).perLine)>=lv)&&(ef=!0),$v(this,d)}else(r||this.outdated)&&(this.setHeight(e.heightForGap(n,n+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}}class Foe extends ni{constructor(e,n,r){super(e.length+n+r.length,e.height+r.height,n|(e.outdated||r.outdated?2:0)),this.left=e,this.right=r,this.size=e.size+r.size}get break(){return this.flags&1}blockAt(e,n,r,s){let i=r+this.left.height;return el))return d;let h=n==pr.ByPosNoHeight?pr.ByPosNoHeight:pr.ByPos;return c?d.join(this.right.lineAt(l,h,r,a,l)):this.left.lineAt(l,h,r,s,i).join(d)}forEachLine(e,n,r,s,i,a){let l=s+this.left.height,c=i+this.left.length+this.break;if(this.break)e=c&&this.right.forEachLine(e,n,r,l,c,a);else{let d=this.lineAt(c,pr.ByPos,r,s,i);e=e&&d.from<=n&&a(d),n>d.to&&this.right.forEachLine(d.to+1,n,r,l,c,a)}}replace(e,n,r){let s=this.left.length+this.break;if(nthis.left.length)return this.balanced(this.left,this.right.replace(e-s,n-s,r));let i=[];e>0&&this.decomposeLeft(e,i);let a=i.length;for(let l of r)i.push(l);if(e>0&&IE(i,a-1),n=r&&n.push(null)),e>r&&this.right.decomposeLeft(e-r,n)}decomposeRight(e,n){let r=this.left.length,s=r+this.break;if(e>=s)return this.right.decomposeRight(e-s,n);e2*n.size||n.size>2*e.size?ni.of(this.break?[e,null,n]:[e,n]):(this.left=$v(this.left,e),this.right=$v(this.right,n),this.setHeight(e.height+n.height),this.outdated=e.outdated||n.outdated,this.size=e.size+n.size,this.length=e.length+this.break+n.length,this)}updateHeight(e,n=0,r=!1,s){let{left:i,right:a}=this,l=n+i.length+this.break,c=null;return s&&s.from<=n+i.length&&s.more?c=i=i.updateHeight(e,n,r,s):i.updateHeight(e,n,r),s&&s.from<=l+a.length&&s.more?c=a=a.updateHeight(e,l,r,s):a.updateHeight(e,l,r),c?this.balanced(i,a):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function IE(t,e){let n,r;t[e]==null&&(n=t[e-1])instanceof Ms&&(r=t[e+1])instanceof Ms&&t.splice(e-1,3,new Ms(n.length+1+r.length))}const qoe=5;class i6{constructor(e,n){this.pos=e,this.oracle=n,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,n){if(this.lineStart>-1){let r=Math.min(n,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof $i?s.length+=r-this.pos:(r>this.pos||!this.isCovered)&&this.nodes.push(new $i(r-this.pos,-1)),this.writtenTo=r,n>r&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=n}point(e,n,r){if(e=qoe)&&this.addLineDeco(s,i,a)}else n>e&&this.span(e,n);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:n}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=n,this.writtenToe&&this.nodes.push(new $i(this.pos-e,-1)),this.writtenTo=this.pos}blankContent(e,n){let r=new Ms(n-e);return this.oracle.doc.lineAt(e).to==n&&(r.flags|=4),r}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof $i)return e;let n=new $i(0,-1);return this.nodes.push(n),n}addBlock(e){this.enterLine();let n=e.deco;n&&n.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,n&&n.endSide>0&&(this.covering=e)}addLineDeco(e,n,r){let s=this.ensureLine();s.length+=r,s.collapsed+=r,s.widgetHeight=Math.max(s.widgetHeight,e),s.breaks+=n,this.writtenTo=this.pos=this.pos+r}finish(e){let n=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(n instanceof $i)&&!this.isCovered?this.nodes.push(new $i(0,-1)):(this.writtenToh.clientHeight||h.scrollWidth>h.clientWidth)&&m.overflow!="visible"){let g=h.getBoundingClientRect();i=Math.max(i,g.left),a=Math.min(a,g.right),l=Math.max(l,g.top),c=Math.min(d==t.parentNode?s.innerHeight:c,g.bottom)}d=m.position=="absolute"||m.position=="fixed"?h.offsetParent:h.parentNode}else if(d.nodeType==11)d=d.host;else break;return{left:i-n.left,right:Math.max(i,a)-n.left,top:l-(n.top+e),bottom:Math.max(l,c)-(n.top+e)}}function Voe(t){let e=t.getBoundingClientRect(),n=t.ownerDocument.defaultView||window;return e.left0&&e.top0}function Uoe(t,e){let n=t.getBoundingClientRect();return{left:0,right:n.right-n.left,top:e,bottom:n.bottom-(n.top+e)}}class R4{constructor(e,n,r,s){this.from=e,this.to=n,this.size=r,this.displaySize=s}static same(e,n){if(e.length!=n.length)return!1;for(let r=0;rtypeof r!="function"&&r.class=="cm-lineWrapping");this.heightOracle=new Loe(n),this.stateDeco=e.facet(F0).filter(r=>typeof r!="function"),this.heightMap=ni.empty().applyChanges(this.stateDeco,jn.empty,this.heightOracle.setDoc(e.doc),[new Na(0,0,0,e.doc.length)]);for(let r=0;r<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());r++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=kt.set(this.lineGaps.map(r=>r.draw(this,!1))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:n}=this.state.selection;for(let r=0;r<=1;r++){let s=r?n.head:n.anchor;if(!e.some(({from:i,to:a})=>s>=i&&s<=a)){let{from:i,to:a}=this.lineBlockAt(s);e.push(new r1(i,a))}}return this.viewports=e.sort((r,s)=>r.from-s.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?BE:new a6(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(a0(e,this.scaler))})}update(e,n=null){this.state=e.state;let r=this.stateDeco;this.stateDeco=this.state.facet(F0).filter(h=>typeof h!="function");let s=e.changedRanges,i=Na.extendWithRanges(s,$oe(r,this.stateDeco,e?e.changes:cs.empty(this.state.doc.length))),a=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);zE(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),i),(this.heightMap.height!=a||ef)&&(e.flags|=2),l?(this.scrollAnchorPos=e.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=a);let c=i.length?this.mapViewport(this.viewport,e.changes):this.viewport;(n&&(n.range.headc.to)||!this.viewportIsAppropriate(c))&&(c=this.getViewport(0,n));let d=c.from!=this.viewport.from||c.to!=this.viewport.to;this.viewport=c,e.flags|=this.updateForViewport(),(d||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),n&&(this.scrollTarget=n),!this.mustEnforceCursorAssoc&&e.selectionSet&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(VF)&&(this.mustEnforceCursorAssoc=!0)}measure(e){let n=e.contentDOM,r=window.getComputedStyle(n),s=this.heightOracle,i=r.whiteSpace;this.defaultTextDirection=r.direction=="rtl"?gr.RTL:gr.LTR;let a=this.heightOracle.mustRefreshForWrapping(i),l=n.getBoundingClientRect(),c=a||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let d=0,h=0;if(l.width&&l.height){let{scaleX:T,scaleY:E}=bF(n,l);(T>.005&&Math.abs(this.scaleX-T)>.005||E>.005&&Math.abs(this.scaleY-E)>.005)&&(this.scaleX=T,this.scaleY=E,d|=16,a=c=!0)}let m=(parseInt(r.paddingTop)||0)*this.scaleY,g=(parseInt(r.paddingBottom)||0)*this.scaleY;(this.paddingTop!=m||this.paddingBottom!=g)&&(this.paddingTop=m,this.paddingBottom=g,d|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(s.lineWrapping&&(c=!0),this.editorWidth=e.scrollDOM.clientWidth,d|=16);let x=e.scrollDOM.scrollTop*this.scaleY;this.scrollTop!=x&&(this.scrollAnchorHeight=-1,this.scrollTop=x),this.scrolledToBottom=kF(e.scrollDOM);let y=(this.printing?Uoe:Qoe)(n,this.paddingTop),w=y.top-this.pixelViewport.top,S=y.bottom-this.pixelViewport.bottom;this.pixelViewport=y;let k=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(k!=this.inView&&(this.inView=k,k&&(c=!0)),!this.inView&&!this.scrollTarget&&!Voe(e.dom))return 0;let j=l.width;if((this.contentDOMWidth!=j||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=e.scrollDOM.clientHeight,d|=16),c){let T=e.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(T)&&(a=!0),a||s.lineWrapping&&Math.abs(j-this.contentDOMWidth)>s.charWidth){let{lineHeight:E,charWidth:_,textHeight:M}=e.docView.measureTextSize();a=E>0&&s.refresh(i,E,_,M,Math.max(5,j/_),T),a&&(e.docView.minWidth=0,d|=16)}w>0&&S>0?h=Math.max(w,S):w<0&&S<0&&(h=Math.min(w,S)),zE();for(let E of this.viewports){let _=E.from==this.viewport.from?T:e.docView.measureVisibleLineHeights(E);this.heightMap=(a?ni.empty().applyChanges(this.stateDeco,jn.empty,this.heightOracle,[new Na(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(s,0,a,new Boe(E.from,_))}ef&&(d|=2)}let N=!this.viewportIsAppropriate(this.viewport,h)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return N&&(d&2&&(d|=this.updateScaler()),this.viewport=this.getViewport(h,this.scrollTarget),d|=this.updateForViewport()),(d&2||N)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(a?[]:this.lineGaps,e)),d|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),d}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,n){let r=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),s=this.heightMap,i=this.heightOracle,{visibleTop:a,visibleBottom:l}=this,c=new r1(s.lineAt(a-r*1e3,pr.ByHeight,i,0,0).from,s.lineAt(l+(1-r)*1e3,pr.ByHeight,i,0,0).to);if(n){let{head:d}=n.range;if(dc.to){let h=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),m=s.lineAt(d,pr.ByPos,i,0,0),g;n.y=="center"?g=(m.top+m.bottom)/2-h/2:n.y=="start"||n.y=="nearest"&&d=l+Math.max(10,Math.min(r,250)))&&s>a-2*1e3&&i>1,a=s<<1;if(this.defaultTextDirection!=gr.LTR&&!r)return[];let l=[],c=(h,m,g,x)=>{if(m-hh&&kk.from>=g.from&&k.to<=g.to&&Math.abs(k.from-h)k.fromj));if(!S){if(mN.from<=m&&N.to>=m)){let N=n.moveToLineBoundary(Ae.cursor(m),!1,!0).head;N>h&&(m=N)}let k=this.gapSize(g,h,m,x),j=r||k<2e6?k:2e6;S=new R4(h,m,k,j)}l.push(S)},d=h=>{if(h.length2e6)for(let _ of e)_.from>=h.from&&_.fromh.from&&c(h.from,x,h,m),yn.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let n=this.stateDeco;this.lineGaps.length&&(n=n.concat(this.lineGapDeco));let r=[];Rn.spans(n,this.viewport.from,this.viewport.to,{span(i,a){r.push({from:i,to:a})},point(){}},20);let s=0;if(r.length!=this.visibleRanges.length)s=12;else for(let i=0;i=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(n=>n.from<=e&&n.to>=e)||a0(this.heightMap.lineAt(e,pr.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(n=>n.top<=e&&n.bottom>=e)||a0(this.heightMap.lineAt(this.scaler.fromDOM(e),pr.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(e){let n=this.lineBlockAtHeight(e+8);return n.from>=this.viewport.from||this.viewportLines[0].top-e>200?n:this.viewportLines[0]}elementAtHeight(e){return a0(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}let r1=class{constructor(e,n){this.from=e,this.to=n}};function Goe(t,e,n){let r=[],s=t,i=0;return Rn.spans(n,t,e,{span(){},point(a,l){a>s&&(r.push({from:s,to:a}),i+=a-s),s=l}},20),s=1)return e[e.length-1].to;let r=Math.floor(t*n);for(let s=0;;s++){let{from:i,to:a}=e[s],l=a-i;if(r<=l)return i+r;r-=l}}function i1(t,e){let n=0;for(let{from:r,to:s}of t.ranges){if(e<=s){n+=e-r;break}n+=s-r}return n/t.total}function Xoe(t,e){for(let n of t)if(e(n))return n}const BE={toDOM(t){return t},fromDOM(t){return t},scale:1,eq(t){return t==this}};class a6{constructor(e,n,r){let s=0,i=0,a=0;this.viewports=r.map(({from:l,to:c})=>{let d=n.lineAt(l,pr.ByPos,e,0,0).top,h=n.lineAt(c,pr.ByPos,e,0,0).bottom;return s+=h-d,{from:l,to:c,top:d,bottom:h,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(n.height-s);for(let l of this.viewports)l.domTop=a+(l.top-i)*this.scale,a=l.domBottom=l.domTop+(l.bottom-l.top),i=l.bottom}toDOM(e){for(let n=0,r=0,s=0;;n++){let i=nn.from==e.viewports[r].from&&n.to==e.viewports[r].to):!1}}function a0(t,e){if(e.scale==1)return t;let n=e.toDOM(t.top),r=e.toDOM(t.bottom);return new So(t.from,t.length,n,r-n,Array.isArray(t._content)?t._content.map(s=>a0(s,e)):t._content)}const a1=at.define({combine:t=>t.join(" ")}),$k=at.define({combine:t=>t.indexOf(!0)>-1}),Hk=Wc.newName(),fq=Wc.newName(),mq=Wc.newName(),pq={"&light":"."+fq,"&dark":"."+mq};function Qk(t,e,n){return new Wc(e,{finish(r){return/&/.test(r)?r.replace(/&\w*/,s=>{if(s=="&")return t;if(!n||!n[s])throw new RangeError(`Unsupported selector: ${s}`);return n[s]}):t+" "+r}})}const Yoe=Qk("."+Hk,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},pq),Koe={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},D4=et.ie&&et.ie_version<=11;class Zoe{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new Dae,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(n=>{for(let r of n)this.queue.push(r);(et.ie&&et.ie_version<=11||et.ios&&e.composing)&&n.some(r=>r.type=="childList"&&r.removedNodes.length||r.type=="characterData"&&r.oldValue.length>r.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&et.android&&e.constructor.EDIT_CONTEXT!==!1&&!(et.chrome&&et.chrome_version<126)&&(this.editContext=new ele(e),e.state.facet(Tl)&&(e.contentDOM.editContext=this.editContext.editContext)),D4&&(this.onCharData=n=>{this.queue.push({target:n.target,type:"characterData",oldValue:n.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var n;((n=this.view.docView)===null||n===void 0?void 0:n.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),n.length>0&&n[n.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(n=>{n.length>0&&n[n.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type=="change"||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((n,r)=>n!=e[r]))){this.gapIntersection.disconnect();for(let n of e)this.gapIntersection.observe(n);this.gaps=e}}onSelectionChange(e){let n=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:r}=this,s=this.selectionRange;if(r.state.facet(Tl)?r.root.activeElement!=this.dom:!av(this.dom,s))return;let i=s.anchorNode&&r.docView.nearest(s.anchorNode);if(i&&i.ignoreEvent(e)){n||(this.selectionChanged=!1);return}(et.ie&&et.ie_version<=11||et.android&&et.chrome)&&!r.state.selection.main.empty&&s.focusNode&&y0(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,n=B0(e.root);if(!n)return!1;let r=et.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&Joe(this.view,n)||n;if(!r||this.selectionRange.eq(r))return!1;let s=av(this.dom,r);return s&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime{let i=this.delayedAndroidKey;i&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=i.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&i.force&&Ph(this.dom,i.key,i.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:n,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let n=-1,r=-1,s=!1;for(let i of e){let a=this.readMutation(i);a&&(a.typeOver&&(s=!0),n==-1?{from:n,to:r}=a:(n=Math.min(a.from,n),r=Math.max(a.to,r)))}return{from:n,to:r,typeOver:s}}readChange(){let{from:e,to:n,typeOver:r}=this.processRecords(),s=this.selectionChanged&&av(this.dom,this.selectionRange);if(e<0&&!s)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let i=new xoe(this.view,e,n,r);return this.view.docView.domChanged={newSel:i.newSel?i.newSel.main:null},i}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let n=this.readChange();if(!n)return this.view.requestMeasure(),!1;let r=this.view.state,s=nq(this.view,n);return this.view.state==r&&(n.domChanged||n.newSel&&!n.newSel.main.eq(this.view.state.selection.main))&&this.view.update([]),s}readMutation(e){let n=this.view.docView.nearest(e.target);if(!n||n.ignoreMutation(e))return null;if(n.markDirty(e.type=="attributes"),e.type=="attributes"&&(n.flags|=4),e.type=="childList"){let r=FE(n,e.previousSibling||e.target.previousSibling,-1),s=FE(n,e.nextSibling||e.target.nextSibling,1);return{from:r?n.posAfter(r):n.posAtStart,to:s?n.posBefore(s):n.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:n.posAtStart,to:n.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(Tl)!=e.state.facet(Tl)&&(e.view.contentDOM.editContext=e.state.facet(Tl)?this.editContext.editContext:null))}destroy(){var e,n,r;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(n=this.gapIntersection)===null||n===void 0||n.disconnect(),(r=this.resizeScroll)===null||r===void 0||r.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}}function FE(t,e,n){for(;e;){let r=er.get(e);if(r&&r.parent==t)return r;let s=e.parentNode;e=s!=t.dom?s:n>0?e.nextSibling:e.previousSibling}return null}function qE(t,e){let n=e.startContainer,r=e.startOffset,s=e.endContainer,i=e.endOffset,a=t.docView.domAtPos(t.state.selection.main.anchor);return y0(a.node,a.offset,s,i)&&([n,r,s,i]=[s,i,n,r]),{anchorNode:n,anchorOffset:r,focusNode:s,focusOffset:i}}function Joe(t,e){if(e.getComposedRanges){let s=e.getComposedRanges(t.root)[0];if(s)return qE(t,s)}let n=null;function r(s){s.preventDefault(),s.stopImmediatePropagation(),n=s.getTargetRanges()[0]}return t.contentDOM.addEventListener("beforeinput",r,!0),t.dom.ownerDocument.execCommand("indent"),t.contentDOM.removeEventListener("beforeinput",r,!0),n?qE(t,n):null}class ele{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let n=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=r=>{let s=e.state.selection.main,{anchor:i,head:a}=s,l=this.toEditorPos(r.updateRangeStart),c=this.toEditorPos(r.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:r.updateRangeStart,editorBase:l,drifted:!1});let d=c-l>r.text.length;l==this.from&&ithis.to&&(c=i);let h=rq(e.state.sliceDoc(l,c),r.text,(d?s.from:s.to)-l,d?"end":null);if(!h){let g=Ae.single(this.toEditorPos(r.selectionStart),this.toEditorPos(r.selectionEnd));g.main.eq(s)||e.dispatch({selection:g,userEvent:"select"});return}let m={from:h.from+l,to:h.toA+l,insert:jn.of(r.text.slice(h.from,h.toB).split(` +`))};if((et.mac||et.android)&&m.from==a-1&&/^\. ?$/.test(r.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(m={from:l,to:c,insert:jn.of([r.text.replace("."," ")])}),this.pendingContextChange=m,!e.state.readOnly){let g=this.to-this.from+(m.to-m.from+m.insert.length);s6(e,m,Ae.single(this.toEditorPos(r.selectionStart,g),this.toEditorPos(r.selectionEnd,g)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),m.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(n.text.slice(Math.max(0,r.updateRangeStart-1),Math.min(n.text.length,r.updateRangeStart+1)))&&this.handlers.compositionend(r)},this.handlers.characterboundsupdate=r=>{let s=[],i=null;for(let a=this.toEditorPos(r.rangeStart),l=this.toEditorPos(r.rangeEnd);a{let s=[];for(let i of r.getTextFormats()){let a=i.underlineStyle,l=i.underlineThickness;if(!/none/i.test(a)&&!/none/i.test(l)){let c=this.toEditorPos(i.rangeStart),d=this.toEditorPos(i.rangeEnd);if(c{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:r}=this.composing;this.composing=null,r&&this.reset(e.state)}};for(let r in this.handlers)n.addEventListener(r,this.handlers[r]);this.measureReq={read:r=>{this.editContext.updateControlBounds(r.contentDOM.getBoundingClientRect());let s=B0(r.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let n=0,r=!1,s=this.pendingContextChange;return e.changes.iterChanges((i,a,l,c,d)=>{if(r)return;let h=d.length-(a-i);if(s&&a>=s.to)if(s.from==i&&s.to==a&&s.insert.eq(d)){s=this.pendingContextChange=null,n+=h,this.to+=h;return}else s=null,this.revertPending(e.state);if(i+=n,a+=n,a<=this.from)this.from+=h,this.to+=h;else if(ithis.to||this.to-this.from+d.length>3e4){r=!0;return}this.editContext.updateText(this.toContextPos(i),this.toContextPos(a),d.toString()),this.to+=h}n+=h}),s&&!r&&this.revertPending(e.state),!r}update(e){let n=this.pendingContextChange,r=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(r.from,r.to)&&e.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||n)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:n}=e.selection.main;this.from=Math.max(0,n-1e4),this.to=Math.min(e.doc.length,n+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let n=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(n.from),this.toContextPos(n.from+n.insert.length),e.doc.sliceString(n.from,n.to))}setSelection(e){let{main:n}=e.selection,r=this.toContextPos(Math.max(this.from,Math.min(this.to,n.anchor))),s=this.toContextPos(n.head);(this.editContext.selectionStart!=r||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(r,s)}rangeIsValid(e){let{head:n}=e.selection.main;return!(this.from>0&&n-this.from<500||this.to1e4*3)}toEditorPos(e,n=this.to-this.from){e=Math.min(e,n);let r=this.composing;return r&&r.drifted?r.editorBase+(e-r.contextBase):e+this.from}toContextPos(e){let n=this.composing;return n&&n.drifted?n.contextBase+(e-n.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}}class Ze{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var n;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:r}=e;this.dispatchTransactions=e.dispatchTransactions||r&&(s=>s.forEach(i=>r(i,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=e.root||Pae(e.parent)||document,this.viewState=new LE(e.state||bn.create(e)),e.scrollTo&&e.scrollTo.is(e1)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Nh).map(s=>new _4(s));for(let s of this.plugins)s.update(this);this.observer=new Zoe(this),this.inputState=new woe(this),this.inputState.ensureHandlers(this.plugins),this.docView=new yE(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((n=document.fonts)===null||n===void 0)&&n.ready&&document.fonts.ready.then(()=>this.requestMeasure())}dispatch(...e){let n=e.length==1&&e[0]instanceof ns?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(n,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let n=!1,r=!1,s,i=this.state;for(let g of e){if(g.startState!=i)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");i=g.state}if(this.destroyed){this.viewState.state=i;return}let a=this.hasFocus,l=0,c=null;e.some(g=>g.annotation(cq))?(this.inputState.notifiedFocused=a,l=1):a!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=a,c=uq(i,a),c||(l=1));let d=this.observer.delayedAndroidKey,h=null;if(d?(this.observer.clearDelayedAndroidKey(),h=this.observer.readChange(),(h&&!this.state.doc.eq(i.doc)||!this.state.selection.eq(i.selection))&&(h=null)):this.observer.clear(),i.facet(bn.phrases)!=this.state.facet(bn.phrases))return this.setState(i);s=qv.create(this,i,e),s.flags|=l;let m=this.viewState.scrollTarget;try{this.updateState=2;for(let g of e){if(m&&(m=m.map(g.changes)),g.scrollIntoView){let{main:x}=g.state.selection;m=new zh(x.empty?x:Ae.cursor(x.head,x.head>x.anchor?-1:1))}for(let x of g.effects)x.is(e1)&&(m=x.value.clip(this.state))}this.viewState.update(s,m),this.bidiCache=Hv.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),n=this.docView.update(s),this.state.facet(s0)!=this.styleModules&&this.mountStyles(),r=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(n,e.some(g=>g.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(a1)!=s.state.facet(a1)&&(this.viewState.mustMeasureContent=!0),(n||r||m||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),n&&this.docViewUpdate(),!s.empty)for(let g of this.state.facet(Lk))try{g(s)}catch(x){vi(this.state,x,"update listener")}(c||h)&&Promise.resolve().then(()=>{c&&this.state==c.startState&&this.dispatch(c),h&&!nq(this,h)&&d.force&&Ph(this.contentDOM,d.key,d.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let n=this.hasFocus;try{for(let r of this.plugins)r.destroy(this);this.viewState=new LE(e),this.plugins=e.facet(Nh).map(r=>new _4(r)),this.pluginMap.clear();for(let r of this.plugins)r.update(this);this.docView.destroy(),this.docView=new yE(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}n&&this.focus(),this.requestMeasure()}updatePlugins(e){let n=e.startState.facet(Nh),r=e.state.facet(Nh);if(n!=r){let s=[];for(let i of r){let a=n.indexOf(i);if(a<0)s.push(new _4(i));else{let l=this.plugins[a];l.mustUpdate=e,s.push(l)}}for(let i of this.plugins)i.mustUpdate!=e&&i.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=e;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let n=null,r=this.scrollDOM,s=r.scrollTop*this.scaleY,{scrollAnchorPos:i,scrollAnchorHeight:a}=this.viewState;Math.abs(s-this.viewState.scrollTop)>1&&(a=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(a<0)if(kF(r))i=-1,a=this.viewState.heightMap.height;else{let x=this.viewState.scrollAnchorAt(s);i=x.from,a=x.top}this.updateState=1;let c=this.viewState.measure(this);if(!c&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let d=[];c&4||([this.measureRequests,d]=[d,this.measureRequests]);let h=d.map(x=>{try{return x.read(this)}catch(y){return vi(this.state,y),$E}}),m=qv.create(this,this.state,[]),g=!1;m.flags|=c,n?n.flags|=c:n=m,this.updateState=2,m.empty||(this.updatePlugins(m),this.inputState.update(m),this.updateAttrs(),g=this.docView.update(m),g&&this.docViewUpdate());for(let x=0;x1||y<-1){s=s+y,r.scrollTop=s/this.scaleY,a=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(n&&!n.empty)for(let l of this.state.facet(Lk))l(n)}get themeClasses(){return Hk+" "+(this.state.facet($k)?mq:fq)+" "+this.state.facet(a1)}updateAttrs(){let e=HE(this,GF,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),n={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Tl)?"true":"false",class:"cm-content",style:`${et.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(n["aria-readonly"]="true"),HE(this,n6,n);let r=this.observer.ignore(()=>{let s=Rk(this.contentDOM,this.contentAttrs,n),i=Rk(this.dom,this.editorAttrs,e);return s||i});return this.editorAttrs=e,this.contentAttrs=n,r}showAnnouncements(e){let n=!0;for(let r of e)for(let s of r.effects)if(s.is(Ze.announce)){n&&(this.announceDOM.textContent=""),n=!1;let i=this.announceDOM.appendChild(document.createElement("div"));i.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(s0);let e=this.state.facet(Ze.cspNonce);Wc.mount(this.root,this.styleModules.concat(Yoe).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let n=0;nr.plugin==e)||null),n&&n.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,n,r){return A4(this,e,OE(this,e,n,r))}moveByGroup(e,n){return A4(this,e,OE(this,e,n,r=>hoe(this,e.head,r)))}visualLineSide(e,n){let r=this.bidiSpans(e),s=this.textDirectionAt(e.from),i=r[n?r.length-1:0];return Ae.cursor(i.side(n,s)+e.from,i.forward(!n,s)?1:-1)}moveToLineBoundary(e,n,r=!0){return doe(this,e,n,r)}moveVertically(e,n,r){return A4(this,e,foe(this,e,n,r))}domAtPos(e){return this.docView.domAtPos(e)}posAtDOM(e,n=0){return this.docView.posFromDOM(e,n)}posAtCoords(e,n=!0){return this.readMeasured(),JF(this,e,n)}coordsAtPos(e,n=1){this.readMeasured();let r=this.docView.coordsAt(e,n);if(!r||r.left==r.right)return r;let s=this.state.doc.lineAt(e),i=this.bidiSpans(s),a=i[Bc.find(i,e-s.from,-1,n)];return Bp(r,a.dir==gr.LTR==n>0)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(QF)||ethis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>tle)return zF(e.length);let n=this.textDirectionAt(e.from),r;for(let i of this.bidiCache)if(i.from==e.from&&i.dir==n&&(i.fresh||PF(i.isolates,r=vE(this,e))))return i.order;r||(r=vE(this,e));let s=Xae(e.text,n,r);return this.bidiCache.push(new Hv(e.from,e.to,n,r,!0,s)),s}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||et.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{wF(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,n={}){return e1.of(new zh(typeof e=="number"?Ae.cursor(e):e,n.y,n.x,n.yMargin,n.xMargin))}scrollSnapshot(){let{scrollTop:e,scrollLeft:n}=this.scrollDOM,r=this.viewState.scrollAnchorAt(e);return e1.of(new zh(Ae.cursor(r.from),"start","start",r.top-e,n,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return Vr.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return Vr.define(()=>({}),{eventObservers:e})}static theme(e,n){let r=Wc.newName(),s=[a1.of(r),s0.of(Qk(`.${r}`,e))];return n&&n.dark&&s.push($k.of(!0)),s}static baseTheme(e){return ou.lowest(s0.of(Qk("."+Hk,e,pq)))}static findFromDOM(e){var n;let r=e.querySelector(".cm-content"),s=r&&er.get(r)||er.get(e);return((n=s?.rootView)===null||n===void 0?void 0:n.view)||null}}Ze.styleModule=s0;Ze.inputHandler=$F;Ze.clipboardInputFilter=e6;Ze.clipboardOutputFilter=t6;Ze.scrollHandler=UF;Ze.focusChangeEffect=HF;Ze.perLineTextDirection=QF;Ze.exceptionSink=qF;Ze.updateListener=Lk;Ze.editable=Tl;Ze.mouseSelectionStyle=FF;Ze.dragMovesSelection=BF;Ze.clickAddsSelectionRange=LF;Ze.decorations=F0;Ze.outerDecorations=XF;Ze.atomicRanges=$p;Ze.bidiIsolatedRanges=YF;Ze.scrollMargins=KF;Ze.darkTheme=$k;Ze.cspNonce=at.define({combine:t=>t.length?t[0]:""});Ze.contentAttributes=n6;Ze.editorAttributes=GF;Ze.lineWrapping=Ze.contentAttributes.of({class:"cm-lineWrapping"});Ze.announce=Ft.define();const tle=4096,$E={};class Hv{constructor(e,n,r,s,i,a){this.from=e,this.to=n,this.dir=r,this.isolates=s,this.fresh=i,this.order=a}static update(e,n){if(n.empty&&!e.some(i=>i.fresh))return e;let r=[],s=e.length?e[e.length-1].dir:gr.LTR;for(let i=Math.max(0,e.length-10);i=0;s--){let i=r[s],a=typeof i=="function"?i(t):i;a&&Ak(a,n)}return n}const nle=et.mac?"mac":et.windows?"win":et.linux?"linux":"key";function rle(t,e){const n=t.split(/-(?!$)/);let r=n[n.length-1];r=="Space"&&(r=" ");let s,i,a,l;for(let c=0;cr.concat(s),[]))),n}function ile(t,e,n){return xq(gq(t.state),e,t,n)}let Pc=null;const ale=4e3;function ole(t,e=nle){let n=Object.create(null),r=Object.create(null),s=(a,l)=>{let c=r[a];if(c==null)r[a]=l;else if(c!=l)throw new Error("Key binding "+a+" is used both as a regular binding and as a multi-stroke prefix")},i=(a,l,c,d,h)=>{var m,g;let x=n[a]||(n[a]=Object.create(null)),y=l.split(/ (?!$)/).map(k=>rle(k,e));for(let k=1;k{let T=Pc={view:N,prefix:j,scope:a};return setTimeout(()=>{Pc==T&&(Pc=null)},ale),!0}]})}let w=y.join(" ");s(w,!1);let S=x[w]||(x[w]={preventDefault:!1,stopPropagation:!1,run:((g=(m=x._any)===null||m===void 0?void 0:m.run)===null||g===void 0?void 0:g.slice())||[]});c&&S.run.push(c),d&&(S.preventDefault=!0),h&&(S.stopPropagation=!0)};for(let a of t){let l=a.scope?a.scope.split(" "):["editor"];if(a.any)for(let d of l){let h=n[d]||(n[d]=Object.create(null));h._any||(h._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:m}=a;for(let g in h)h[g].run.push(x=>m(x,Vk))}let c=a[e]||a.key;if(c)for(let d of l)i(d,c,a.run,a.preventDefault,a.stopPropagation),a.shift&&i(d,"Shift-"+c,a.shift,a.preventDefault,a.stopPropagation)}return n}let Vk=null;function xq(t,e,n,r){Vk=e;let s=Eae(e),i=gi(s,0),a=wo(i)==s.length&&s!=" ",l="",c=!1,d=!1,h=!1;Pc&&Pc.view==n&&Pc.scope==r&&(l=Pc.prefix+" ",iq.indexOf(e.keyCode)<0&&(d=!0,Pc=null));let m=new Set,g=S=>{if(S){for(let k of S.run)if(!m.has(k)&&(m.add(k),k(n)))return S.stopPropagation&&(h=!0),!0;S.preventDefault&&(S.stopPropagation&&(h=!0),d=!0)}return!1},x=t[r],y,w;return x&&(g(x[l+o1(s,e,!a)])?c=!0:a&&(e.altKey||e.metaKey||e.ctrlKey)&&!(et.windows&&e.ctrlKey&&e.altKey)&&!(et.mac&&e.altKey&&!(e.ctrlKey||e.metaKey))&&(y=Gc[e.keyCode])&&y!=s?(g(x[l+o1(y,e,!0)])||e.shiftKey&&(w=L0[e.keyCode])!=s&&w!=y&&g(x[l+o1(w,e,!1)]))&&(c=!0):a&&e.shiftKey&&g(x[l+o1(s,e,!0)])&&(c=!0),!c&&g(x._any)&&(c=!0)),d&&(c=!0),c&&h&&e.stopPropagation(),Vk=null,c}class Qp{constructor(e,n,r,s,i){this.className=e,this.left=n,this.top=r,this.width=s,this.height=i}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,n){return n.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,n,r){if(r.empty){let s=e.coordsAtPos(r.head,r.assoc||1);if(!s)return[];let i=vq(e);return[new Qp(n,s.left-i.left,s.top-i.top,null,s.bottom-s.top)]}else return lle(e,n,r)}}function vq(t){let e=t.scrollDOM.getBoundingClientRect();return{left:(t.textDirection==gr.LTR?e.left:e.right-t.scrollDOM.clientWidth*t.scaleX)-t.scrollDOM.scrollLeft*t.scaleX,top:e.top-t.scrollDOM.scrollTop*t.scaleY}}function VE(t,e,n,r){let s=t.coordsAtPos(e,n*2);if(!s)return r;let i=t.dom.getBoundingClientRect(),a=(s.top+s.bottom)/2,l=t.posAtCoords({x:i.left+1,y:a}),c=t.posAtCoords({x:i.right-1,y:a});return l==null||c==null?r:{from:Math.max(r.from,Math.min(l,c)),to:Math.min(r.to,Math.max(l,c))}}function lle(t,e,n){if(n.to<=t.viewport.from||n.from>=t.viewport.to)return[];let r=Math.max(n.from,t.viewport.from),s=Math.min(n.to,t.viewport.to),i=t.textDirection==gr.LTR,a=t.contentDOM,l=a.getBoundingClientRect(),c=vq(t),d=a.querySelector(".cm-line"),h=d&&window.getComputedStyle(d),m=l.left+(h?parseInt(h.paddingLeft)+Math.min(0,parseInt(h.textIndent)):0),g=l.right-(h?parseInt(h.paddingRight):0),x=Fk(t,r,1),y=Fk(t,s,-1),w=x.type==ti.Text?x:null,S=y.type==ti.Text?y:null;if(w&&(t.lineWrapping||x.widgetLineBreaks)&&(w=VE(t,r,1,w)),S&&(t.lineWrapping||y.widgetLineBreaks)&&(S=VE(t,s,-1,S)),w&&S&&w.from==S.from&&w.to==S.to)return j(N(n.from,n.to,w));{let E=w?N(n.from,null,w):T(x,!1),_=S?N(null,n.to,S):T(y,!0),M=[];return(w||x).to<(S||y).from-(w&&S?1:0)||x.widgetLineBreaks>1&&E.bottom+t.defaultLineHeight/2<_.top?M.push(k(m,E.bottom,g,_.top)):E.bottom<_.top&&t.elementAtHeight((E.bottom+_.top)/2).type==ti.Text&&(E.bottom=_.top=(E.bottom+_.top)/2),j(E).concat(M).concat(j(_))}function k(E,_,M,I){return new Qp(e,E-c.left,_-c.top,M-E,I-_)}function j({top:E,bottom:_,horizontal:M}){let I=[];for(let P=0;PU&&z.from=B)break;R>Q&&H(Math.max(G,Q),E==null&&G<=U,Math.min(R,B),_==null&&R>=ee,J.dir)}if(Q=X.to+1,Q>=B)break}return L.length==0&&H(U,E==null,ee,_==null,t.textDirection),{top:I,bottom:P,horizontal:L}}function T(E,_){let M=l.top+(_?E.top:E.bottom);return{top:M,bottom:M,horizontal:[]}}}function cle(t,e){return t.constructor==e.constructor&&t.eq(e)}class ule{constructor(e,n){this.view=e,this.layer=n,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),n.above&&this.dom.classList.add("cm-layer-above"),n.class&&this.dom.classList.add(n.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),n.mount&&n.mount(this.dom,e)}update(e){e.startState.facet(cv)!=e.state.facet(cv)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let n=0,r=e.facet(cv);for(;n!cle(n,this.drawn[r]))){let n=this.dom.firstChild,r=0;for(let s of e)s.update&&n&&s.constructor&&this.drawn[r].constructor&&s.update(n,this.drawn[r])?(n=n.nextSibling,r++):this.dom.insertBefore(s.draw(),n);for(;n;){let s=n.nextSibling;n.remove(),n=s}this.drawn=e,et.safari&&et.safari_version>=26&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}}const cv=at.define();function yq(t){return[Vr.define(e=>new ule(e,t)),cv.of(t)]}const q0=at.define({combine(t){return qo(t,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,n)=>Math.min(e,n),drawRangeCursor:(e,n)=>e||n})}});function dle(t={}){return[q0.of(t),hle,fle,mle,VF.of(!0)]}function bq(t){return t.startState.facet(q0)!=t.state.facet(q0)}const hle=yq({above:!0,markers(t){let{state:e}=t,n=e.facet(q0),r=[];for(let s of e.selection.ranges){let i=s==e.selection.main;if(s.empty||n.drawRangeCursor){let a=i?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:Ae.cursor(s.head,s.head>s.anchor?-1:1);for(let c of Qp.forRange(t,a,l))r.push(c)}}return r},update(t,e){t.transactions.some(r=>r.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let n=bq(t);return n&&UE(t.state,e),t.docChanged||t.selectionSet||n},mount(t,e){UE(e.state,t)},class:"cm-cursorLayer"});function UE(t,e){e.style.animationDuration=t.facet(q0).cursorBlinkRate+"ms"}const fle=yq({above:!1,markers(t){return t.state.selection.ranges.map(e=>e.empty?[]:Qp.forRange(t,"cm-selectionBackground",e)).reduce((e,n)=>e.concat(n))},update(t,e){return t.docChanged||t.selectionSet||t.viewportChanged||bq(t)},class:"cm-selectionLayer"}),mle=ou.highest(Ze.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}})),wq=Ft.define({map(t,e){return t==null?null:e.mapPos(t)}}),o0=Os.define({create(){return null},update(t,e){return t!=null&&(t=e.changes.mapPos(t)),e.effects.reduce((n,r)=>r.is(wq)?r.value:n,t)}}),ple=Vr.fromClass(class{constructor(t){this.view=t,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(t){var e;let n=t.state.field(o0);n==null?this.cursor!=null&&((e=this.cursor)===null||e===void 0||e.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(t.startState.field(o0)!=n||t.docChanged||t.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:t}=this,e=t.state.field(o0),n=e!=null&&t.coordsAtPos(e);if(!n)return null;let r=t.scrollDOM.getBoundingClientRect();return{left:n.left-r.left+t.scrollDOM.scrollLeft*t.scaleX,top:n.top-r.top+t.scrollDOM.scrollTop*t.scaleY,height:n.bottom-n.top}}drawCursor(t){if(this.cursor){let{scaleX:e,scaleY:n}=this.view;t?(this.cursor.style.left=t.left/e+"px",this.cursor.style.top=t.top/n+"px",this.cursor.style.height=t.height/n+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(t){this.view.state.field(o0)!=t&&this.view.dispatch({effects:wq.of(t)})}},{eventObservers:{dragover(t){this.setDropPos(this.view.posAtCoords({x:t.clientX,y:t.clientY}))},dragleave(t){(t.target==this.view.contentDOM||!this.view.contentDOM.contains(t.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function gle(){return[o0,ple]}function WE(t,e,n,r,s){e.lastIndex=0;for(let i=t.iterRange(n,r),a=n,l;!i.next().done;a+=i.value.length)if(!i.lineBreak)for(;l=e.exec(i.value);)s(a+l.index,l)}function xle(t,e){let n=t.visibleRanges;if(n.length==1&&n[0].from==t.viewport.from&&n[0].to==t.viewport.to)return n;let r=[];for(let{from:s,to:i}of n)s=Math.max(t.state.doc.lineAt(s).from,s-e),i=Math.min(t.state.doc.lineAt(i).to,i+e),r.length&&r[r.length-1].to>=s?r[r.length-1].to=i:r.push({from:s,to:i});return r}class vle{constructor(e){const{regexp:n,decoration:r,decorate:s,boundary:i,maxLength:a=1e3}=e;if(!n.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=n,s)this.addMatch=(l,c,d,h)=>s(h,d,d+l[0].length,l,c);else if(typeof r=="function")this.addMatch=(l,c,d,h)=>{let m=r(l,c,d);m&&h(d,d+l[0].length,m)};else if(r)this.addMatch=(l,c,d,h)=>h(d,d+l[0].length,r);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=i,this.maxLength=a}createDeco(e){let n=new Fl,r=n.add.bind(n);for(let{from:s,to:i}of xle(e,this.maxLength))WE(e.state.doc,this.regexp,s,i,(a,l)=>this.addMatch(l,e,a,r));return n.finish()}updateDeco(e,n){let r=1e9,s=-1;return e.docChanged&&e.changes.iterChanges((i,a,l,c)=>{c>=e.view.viewport.from&&l<=e.view.viewport.to&&(r=Math.min(l,r),s=Math.max(c,s))}),e.viewportMoved||s-r>1e3?this.createDeco(e.view):s>-1?this.updateRange(e.view,n.map(e.changes),r,s):n}updateRange(e,n,r,s){for(let i of e.visibleRanges){let a=Math.max(i.from,r),l=Math.min(i.to,s);if(l>=a){let c=e.state.doc.lineAt(a),d=c.toc.from;a--)if(this.boundary.test(c.text[a-1-c.from])){h=a;break}for(;lg.push(k.range(w,S));if(c==d)for(this.regexp.lastIndex=h-c.from;(x=this.regexp.exec(c.text))&&x.indexthis.addMatch(S,e,w,y));n=n.update({filterFrom:h,filterTo:m,filter:(w,S)=>wm,add:g})}}return n}}const Uk=/x/.unicode!=null?"gu":"g",yle=new RegExp(`[\0-\b +--Ÿ­؜​‎‏\u2028\u2029‭‮⁦⁧⁩\uFEFF-]`,Uk),ble={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let P4=null;function wle(){var t;if(P4==null&&typeof document<"u"&&document.body){let e=document.body.style;P4=((t=e.tabSize)!==null&&t!==void 0?t:e.MozTabSize)!=null}return P4||!1}const uv=at.define({combine(t){let e=qo(t,{render:null,specialChars:yle,addSpecialChars:null});return(e.replaceTabs=!wle())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,Uk)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,Uk)),e}});function Sle(t={}){return[uv.of(t),kle()]}let GE=null;function kle(){return GE||(GE=Vr.fromClass(class{constructor(t){this.view=t,this.decorations=kt.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(t.state.facet(uv)),this.decorations=this.decorator.createDeco(t)}makeDecorator(t){return new vle({regexp:t.specialChars,decoration:(e,n,r)=>{let{doc:s}=n.state,i=gi(e[0],0);if(i==9){let a=s.lineAt(r),l=n.state.tabSize,c=Of(a.text,l,r-a.from);return kt.replace({widget:new Cle((l-c%l)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[i]||(this.decorationCache[i]=kt.replace({widget:new Nle(t,i)}))},boundary:t.replaceTabs?void 0:/[^]/})}update(t){let e=t.state.facet(uv);t.startState.facet(uv)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(t.view)):this.decorations=this.decorator.updateDeco(t,this.decorations)}},{decorations:t=>t.decorations}))}const Ole="•";function jle(t){return t>=32?Ole:t==10?"␤":String.fromCharCode(9216+t)}class Nle extends $o{constructor(e,n){super(),this.options=e,this.code=n}eq(e){return e.code==this.code}toDOM(e){let n=jle(this.code),r=e.state.phrase("Control character")+" "+(ble[this.code]||"0x"+this.code.toString(16)),s=this.options.render&&this.options.render(this.code,r,n);if(s)return s;let i=document.createElement("span");return i.textContent=n,i.title=r,i.setAttribute("aria-label",r),i.className="cm-specialChar",i}ignoreEvent(){return!1}}class Cle extends $o{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}}function Tle(){return _le}const Ele=kt.line({class:"cm-activeLine"}),_le=Vr.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.docChanged||t.selectionSet)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=-1,n=[];for(let r of t.state.selection.ranges){let s=t.lineBlockAt(r.head);s.from>e&&(n.push(Ele.range(s.from)),e=s.from)}return kt.set(n)}},{decorations:t=>t.decorations});class Mle extends $o{constructor(e){super(),this.content=e}toDOM(e){let n=document.createElement("span");return n.className="cm-placeholder",n.style.pointerEvents="none",n.appendChild(typeof this.content=="string"?document.createTextNode(this.content):typeof this.content=="function"?this.content(e):this.content.cloneNode(!0)),n.setAttribute("aria-hidden","true"),n}coordsAt(e){let n=e.firstChild?Kh(e.firstChild):[];if(!n.length)return null;let r=window.getComputedStyle(e.parentNode),s=Bp(n[0],r.direction!="rtl"),i=parseInt(r.lineHeight);return s.bottom-s.top>i*1.5?{left:s.left,right:s.right,top:s.top,bottom:s.top+i}:s}ignoreEvent(){return!1}}function Ale(t){let e=Vr.fromClass(class{constructor(n){this.view=n,this.placeholder=t?kt.set([kt.widget({widget:new Mle(t),side:1}).range(0)]):kt.none}get decorations(){return this.view.state.doc.length?kt.none:this.placeholder}},{decorations:n=>n.decorations});return typeof t=="string"?[e,Ze.contentAttributes.of({"aria-placeholder":t})]:e}const Wk=2e3;function Rle(t,e,n){let r=Math.min(e.line,n.line),s=Math.max(e.line,n.line),i=[];if(e.off>Wk||n.off>Wk||e.col<0||n.col<0){let a=Math.min(e.off,n.off),l=Math.max(e.off,n.off);for(let c=r;c<=s;c++){let d=t.doc.line(c);d.length<=l&&i.push(Ae.range(d.from+a,d.to+l))}}else{let a=Math.min(e.col,n.col),l=Math.max(e.col,n.col);for(let c=r;c<=s;c++){let d=t.doc.line(c),h=Ok(d.text,a,t.tabSize,!0);if(h<0)i.push(Ae.cursor(d.to));else{let m=Ok(d.text,l,t.tabSize);i.push(Ae.range(d.from+h,d.from+m))}}}return i}function Dle(t,e){let n=t.coordsAtPos(t.viewport.from);return n?Math.round(Math.abs((n.left-e)/t.defaultCharacterWidth)):-1}function XE(t,e){let n=t.posAtCoords({x:e.clientX,y:e.clientY},!1),r=t.state.doc.lineAt(n),s=n-r.from,i=s>Wk?-1:s==r.length?Dle(t,e.clientX):Of(r.text,t.state.tabSize,n-r.from);return{line:r.number,col:i,off:s}}function Ple(t,e){let n=XE(t,e),r=t.state.selection;return n?{update(s){if(s.docChanged){let i=s.changes.mapPos(s.startState.doc.line(n.line).from),a=s.state.doc.lineAt(i);n={line:a.number,col:n.col,off:Math.min(n.off,a.length)},r=r.map(s.changes)}},get(s,i,a){let l=XE(t,s);if(!l)return r;let c=Rle(t.state,n,l);return c.length?a?Ae.create(c.concat(r.ranges)):Ae.create(c):r}}:null}function zle(t){let e=(n=>n.altKey&&n.button==0);return Ze.mouseSelectionStyle.of((n,r)=>e(r)?Ple(n,r):null)}const Ile={Alt:[18,t=>!!t.altKey],Control:[17,t=>!!t.ctrlKey],Shift:[16,t=>!!t.shiftKey],Meta:[91,t=>!!t.metaKey]},Lle={style:"cursor: crosshair"};function Ble(t={}){let[e,n]=Ile[t.key||"Alt"],r=Vr.fromClass(class{constructor(s){this.view=s,this.isDown=!1}set(s){this.isDown!=s&&(this.isDown=s,this.view.update([]))}},{eventObservers:{keydown(s){this.set(s.keyCode==e||n(s))},keyup(s){(s.keyCode==e||!n(s))&&this.set(!1)},mousemove(s){this.set(n(s))}}});return[r,Ze.contentAttributes.of(s=>{var i;return!((i=s.plugin(r))===null||i===void 0)&&i.isDown?Lle:null})]}const l1="-10000px";class Sq{constructor(e,n,r,s){this.facet=n,this.createTooltipView=r,this.removeTooltipView=s,this.input=e.state.facet(n),this.tooltips=this.input.filter(a=>a);let i=null;this.tooltipViews=this.tooltips.map(a=>i=r(a,i))}update(e,n){var r;let s=e.state.facet(this.facet),i=s.filter(c=>c);if(s===this.input){for(let c of this.tooltipViews)c.update&&c.update(e);return!1}let a=[],l=n?[]:null;for(let c=0;cn[d]=c),n.length=l.length),this.input=s,this.tooltips=i,this.tooltipViews=a,!0}}function Fle(t){let e=t.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:e.clientHeight,right:e.clientWidth}}const z4=at.define({combine:t=>{var e,n,r;return{position:et.ios?"absolute":((e=t.find(s=>s.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((n=t.find(s=>s.parent))===null||n===void 0?void 0:n.parent)||null,tooltipSpace:((r=t.find(s=>s.tooltipSpace))===null||r===void 0?void 0:r.tooltipSpace)||Fle}}}),YE=new WeakMap,o6=Vr.fromClass(class{constructor(t){this.view=t,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let e=t.state.facet(z4);this.position=e.position,this.parent=e.parent,this.classes=t.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.resizeObserver=typeof ResizeObserver=="function"?new ResizeObserver(()=>this.measureSoon()):null,this.manager=new Sq(t,l6,(n,r)=>this.createTooltip(n,r),n=>{this.resizeObserver&&this.resizeObserver.unobserve(n.dom),n.dom.remove()}),this.above=this.manager.tooltips.map(n=>!!n.above),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(n=>{Date.now()>this.lastTransaction-50&&n.length>0&&n[n.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),t.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let t of this.manager.tooltipViews)this.intersectionObserver.observe(t.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(t){t.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(t,this.above);e&&this.observeIntersection();let n=e||t.geometryChanged,r=t.state.facet(z4);if(r.position!=this.position&&!this.madeAbsolute){this.position=r.position;for(let s of this.manager.tooltipViews)s.dom.style.position=this.position;n=!0}if(r.parent!=this.parent){this.parent&&this.container.remove(),this.parent=r.parent,this.createContainer();for(let s of this.manager.tooltipViews)this.container.appendChild(s.dom);n=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);n&&this.maybeMeasure()}createTooltip(t,e){let n=t.create(this.view),r=e?e.dom:null;if(n.dom.classList.add("cm-tooltip"),t.arrow&&!n.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let s=document.createElement("div");s.className="cm-tooltip-arrow",n.dom.appendChild(s)}return n.dom.style.position=this.position,n.dom.style.top=l1,n.dom.style.left="0px",this.container.insertBefore(n.dom,r),n.mount&&n.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(n.dom),n}destroy(){var t,e,n;this.view.win.removeEventListener("resize",this.measureSoon);for(let r of this.manager.tooltipViews)r.dom.remove(),(t=r.destroy)===null||t===void 0||t.call(r);this.parent&&this.container.remove(),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),(n=this.intersectionObserver)===null||n===void 0||n.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let t=1,e=1,n=!1;if(this.position=="fixed"&&this.manager.tooltipViews.length){let{dom:i}=this.manager.tooltipViews[0];if(et.safari){let a=i.getBoundingClientRect();n=Math.abs(a.top+1e4)>1||Math.abs(a.left)>1}else n=!!i.offsetParent&&i.offsetParent!=this.container.ownerDocument.body}if(n||this.position=="absolute")if(this.parent){let i=this.parent.getBoundingClientRect();i.width&&i.height&&(t=i.width/this.parent.offsetWidth,e=i.height/this.parent.offsetHeight)}else({scaleX:t,scaleY:e}=this.view.viewState);let r=this.view.scrollDOM.getBoundingClientRect(),s=r6(this.view);return{visible:{left:r.left+s.left,top:r.top+s.top,right:r.right-s.right,bottom:r.bottom-s.bottom},parent:this.parent?this.container.getBoundingClientRect():this.view.dom.getBoundingClientRect(),pos:this.manager.tooltips.map((i,a)=>{let l=this.manager.tooltipViews[a];return l.getCoords?l.getCoords(i.pos):this.view.coordsAtPos(i.pos)}),size:this.manager.tooltipViews.map(({dom:i})=>i.getBoundingClientRect()),space:this.view.state.facet(z4).tooltipSpace(this.view),scaleX:t,scaleY:e,makeAbsolute:n}}writeMeasure(t){var e;if(t.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let l of this.manager.tooltipViews)l.dom.style.position="absolute"}let{visible:n,space:r,scaleX:s,scaleY:i}=t,a=[];for(let l=0;l=Math.min(n.bottom,r.bottom)||m.rightMath.min(n.right,r.right)+.1)){h.style.top=l1;continue}let x=c.arrow?d.dom.querySelector(".cm-tooltip-arrow"):null,y=x?7:0,w=g.right-g.left,S=(e=YE.get(d))!==null&&e!==void 0?e:g.bottom-g.top,k=d.offset||$le,j=this.view.textDirection==gr.LTR,N=g.width>r.right-r.left?j?r.left:r.right-g.width:j?Math.max(r.left,Math.min(m.left-(x?14:0)+k.x,r.right-w)):Math.min(Math.max(r.left,m.left-w+(x?14:0)-k.x),r.right-w),T=this.above[l];!c.strictSide&&(T?m.top-S-y-k.yr.bottom)&&T==r.bottom-m.bottom>m.top-r.top&&(T=this.above[l]=!T);let E=(T?m.top-r.top:r.bottom-m.bottom)-y;if(EN&&I.top<_+S&&I.bottom>_&&(_=T?I.top-S-2-y:I.bottom+y+2);if(this.position=="absolute"?(h.style.top=(_-t.parent.top)/i+"px",KE(h,(N-t.parent.left)/s)):(h.style.top=_/i+"px",KE(h,N/s)),x){let I=m.left+(j?k.x:-k.x)-(N+14-7);x.style.left=I/s+"px"}d.overlap!==!0&&a.push({left:N,top:_,right:M,bottom:_+S}),h.classList.toggle("cm-tooltip-above",T),h.classList.toggle("cm-tooltip-below",!T),d.positioned&&d.positioned(t.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let t of this.manager.tooltipViews)t.dom.style.top=l1}},{eventObservers:{scroll(){this.maybeMeasure()}}});function KE(t,e){let n=parseInt(t.style.left,10);(isNaN(n)||Math.abs(e-n)>1)&&(t.style.left=e+"px")}const qle=Ze.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:"14px",position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),$le={x:0,y:0},l6=at.define({enables:[o6,qle]}),Qv=at.define({combine:t=>t.reduce((e,n)=>e.concat(n),[])});class ib{static create(e){return new ib(e)}constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new Sq(e,Qv,(n,r)=>this.createHostedView(n,r),n=>n.dom.remove())}createHostedView(e,n){let r=e.create(this.view);return r.dom.classList.add("cm-tooltip-section"),this.dom.insertBefore(r.dom,n?n.dom.nextSibling:this.dom.firstChild),this.mounted&&r.mount&&r.mount(this.view),r}mount(e){for(let n of this.manager.tooltipViews)n.mount&&n.mount(e);this.mounted=!0}positioned(e){for(let n of this.manager.tooltipViews)n.positioned&&n.positioned(e)}update(e){this.manager.update(e)}destroy(){var e;for(let n of this.manager.tooltipViews)(e=n.destroy)===null||e===void 0||e.call(n)}passProp(e){let n;for(let r of this.manager.tooltipViews){let s=r[e];if(s!==void 0){if(n===void 0)n=s;else if(n!==s)return}}return n}get offset(){return this.passProp("offset")}get getCoords(){return this.passProp("getCoords")}get overlap(){return this.passProp("overlap")}get resize(){return this.passProp("resize")}}const Hle=l6.compute([Qv],t=>{let e=t.facet(Qv);return e.length===0?null:{pos:Math.min(...e.map(n=>n.pos)),end:Math.max(...e.map(n=>{var r;return(r=n.end)!==null&&r!==void 0?r:n.pos})),create:ib.create,above:e[0].above,arrow:e.some(n=>n.arrow)}});class Qle{constructor(e,n,r,s,i){this.view=e,this.source=n,this.field=r,this.setHover=s,this.hoverTime=i,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active.length)return;let e=Date.now()-this.lastMove.time;el.bottom||n.xl.right+e.defaultCharacterWidth)return;let c=e.bidiSpans(e.state.doc.lineAt(s)).find(h=>h.from<=s&&h.to>=s),d=c&&c.dir==gr.RTL?-1:1;i=n.x{this.pending==l&&(this.pending=null,c&&!(Array.isArray(c)&&!c.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(c)?c:[c])}))},c=>vi(e.state,c,"hover tooltip"))}else a&&!(Array.isArray(a)&&!a.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(a)?a:[a])})}get tooltip(){let e=this.view.plugin(o6),n=e?e.manager.tooltips.findIndex(r=>r.create==ib.create):-1;return n>-1?e.manager.tooltipViews[n]:null}mousemove(e){var n,r;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let{active:s,tooltip:i}=this;if(s.length&&i&&!Vle(i.dom,e)||this.pending){let{pos:a}=s[0]||this.pending,l=(r=(n=s[0])===null||n===void 0?void 0:n.end)!==null&&r!==void 0?r:a;(a==l?this.view.posAtCoords(this.lastMove)!=a:!Ule(this.view,a,l,e.clientX,e.clientY))&&(this.view.dispatch({effects:this.setHover.of([])}),this.pending=null)}}mouseleave(e){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;let{active:n}=this;if(n.length){let{tooltip:r}=this;r&&r.dom.contains(e.relatedTarget)?this.watchTooltipLeave(r.dom):this.view.dispatch({effects:this.setHover.of([])})}}watchTooltipLeave(e){let n=r=>{e.removeEventListener("mouseleave",n),this.active.length&&!this.view.dom.contains(r.relatedTarget)&&this.view.dispatch({effects:this.setHover.of([])})};e.addEventListener("mouseleave",n)}destroy(){clearTimeout(this.hoverTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}}const c1=4;function Vle(t,e){let{left:n,right:r,top:s,bottom:i}=t.getBoundingClientRect(),a;if(a=t.querySelector(".cm-tooltip-arrow")){let l=a.getBoundingClientRect();s=Math.min(l.top,s),i=Math.max(l.bottom,i)}return e.clientX>=n-c1&&e.clientX<=r+c1&&e.clientY>=s-c1&&e.clientY<=i+c1}function Ule(t,e,n,r,s,i){let a=t.scrollDOM.getBoundingClientRect(),l=t.documentTop+t.documentPadding.top+t.contentHeight;if(a.left>r||a.rights||Math.min(a.bottom,l)=e&&c<=n}function Wle(t,e={}){let n=Ft.define(),r=Os.define({create(){return[]},update(s,i){if(s.length&&(e.hideOnChange&&(i.docChanged||i.selection)?s=[]:e.hideOn&&(s=s.filter(a=>!e.hideOn(i,a))),i.docChanged)){let a=[];for(let l of s){let c=i.changes.mapPos(l.pos,-1,Rs.TrackDel);if(c!=null){let d=Object.assign(Object.create(null),l);d.pos=c,d.end!=null&&(d.end=i.changes.mapPos(d.end)),a.push(d)}}s=a}for(let a of i.effects)a.is(n)&&(s=a.value),a.is(Gle)&&(s=[]);return s},provide:s=>Qv.from(s)});return{active:r,extension:[r,Vr.define(s=>new Qle(s,t,r,n,e.hoverTime||300)),Hle]}}function kq(t,e){let n=t.plugin(o6);if(!n)return null;let r=n.manager.tooltips.indexOf(e);return r<0?null:n.manager.tooltipViews[r]}const Gle=Ft.define(),ZE=at.define({combine(t){let e,n;for(let r of t)e=e||r.topContainer,n=n||r.bottomContainer;return{topContainer:e,bottomContainer:n}}});function $0(t,e){let n=t.plugin(Oq),r=n?n.specs.indexOf(e):-1;return r>-1?n.panels[r]:null}const Oq=Vr.fromClass(class{constructor(t){this.input=t.state.facet(H0),this.specs=this.input.filter(n=>n),this.panels=this.specs.map(n=>n(t));let e=t.state.facet(ZE);this.top=new u1(t,!0,e.topContainer),this.bottom=new u1(t,!1,e.bottomContainer),this.top.sync(this.panels.filter(n=>n.top)),this.bottom.sync(this.panels.filter(n=>!n.top));for(let n of this.panels)n.dom.classList.add("cm-panel"),n.mount&&n.mount()}update(t){let e=t.state.facet(ZE);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new u1(t.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new u1(t.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let n=t.state.facet(H0);if(n!=this.input){let r=n.filter(c=>c),s=[],i=[],a=[],l=[];for(let c of r){let d=this.specs.indexOf(c),h;d<0?(h=c(t.view),l.push(h)):(h=this.panels[d],h.update&&h.update(t)),s.push(h),(h.top?i:a).push(h)}this.specs=r,this.panels=s,this.top.sync(i),this.bottom.sync(a);for(let c of l)c.dom.classList.add("cm-panel"),c.mount&&c.mount()}else for(let r of this.panels)r.update&&r.update(t)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:t=>Ze.scrollMargins.of(e=>{let n=e.plugin(t);return n&&{top:n.top.scrollMargin(),bottom:n.bottom.scrollMargin()}})});class u1{constructor(e,n,r){this.view=e,this.top=n,this.container=r,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let n of this.panels)n.destroy&&e.indexOf(n)<0&&n.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let n=this.container||this.view.dom;n.insertBefore(this.dom,this.top?n.firstChild:null)}let e=this.dom.firstChild;for(let n of this.panels)if(n.dom.parentNode==this.dom){for(;e!=n.dom;)e=JE(e);e=e.nextSibling}else this.dom.insertBefore(n.dom,e);for(;e;)e=JE(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}}function JE(t){let e=t.nextSibling;return t.remove(),e}const H0=at.define({enables:Oq});class $l extends sd{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}}$l.prototype.elementClass="";$l.prototype.toDOM=void 0;$l.prototype.mapMode=Rs.TrackBefore;$l.prototype.startSide=$l.prototype.endSide=-1;$l.prototype.point=!0;const dv=at.define(),Xle=at.define(),Yle={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>Rn.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{},side:"before"},S0=at.define();function Kle(t){return[jq(),S0.of({...Yle,...t})]}const e_=at.define({combine:t=>t.some(e=>e)});function jq(t){return[Zle]}const Zle=Vr.fromClass(class{constructor(t){this.view=t,this.domAfter=null,this.prevViewport=t.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=t.state.facet(S0).map(e=>new n_(t,e)),this.fixed=!t.state.facet(e_);for(let e of this.gutters)e.config.side=="after"?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),t.scrollDOM.insertBefore(this.dom,t.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(t){if(this.updateGutters(t)){let e=this.prevViewport,n=t.view.viewport,r=Math.min(e.to,n.to)-Math.max(e.from,n.from);this.syncGutters(r<(n.to-n.from)*.8)}if(t.geometryChanged){let e=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=e,this.domAfter&&(this.domAfter.style.minHeight=e)}this.view.state.facet(e_)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=t.view.viewport}syncGutters(t){let e=this.dom.nextSibling;t&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let n=Rn.iter(this.view.state.facet(dv),this.view.viewport.from),r=[],s=this.gutters.map(i=>new Jle(i,this.view.viewport,-this.view.documentPadding.top));for(let i of this.view.viewportLineBlocks)if(r.length&&(r=[]),Array.isArray(i.type)){let a=!0;for(let l of i.type)if(l.type==ti.Text&&a){Gk(n,r,l.from);for(let c of s)c.line(this.view,l,r);a=!1}else if(l.widget)for(let c of s)c.widget(this.view,l)}else if(i.type==ti.Text){Gk(n,r,i.from);for(let a of s)a.line(this.view,i,r)}else if(i.widget)for(let a of s)a.widget(this.view,i);for(let i of s)i.finish();t&&(this.view.scrollDOM.insertBefore(this.dom,e),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(t){let e=t.startState.facet(S0),n=t.state.facet(S0),r=t.docChanged||t.heightChanged||t.viewportChanged||!Rn.eq(t.startState.facet(dv),t.state.facet(dv),t.view.viewport.from,t.view.viewport.to);if(e==n)for(let s of this.gutters)s.update(t)&&(r=!0);else{r=!0;let s=[];for(let i of n){let a=e.indexOf(i);a<0?s.push(new n_(this.view,i)):(this.gutters[a].update(t),s.push(this.gutters[a]))}for(let i of this.gutters)i.dom.remove(),s.indexOf(i)<0&&i.destroy();for(let i of s)i.config.side=="after"?this.getDOMAfter().appendChild(i.dom):this.dom.appendChild(i.dom);this.gutters=s}return r}destroy(){for(let t of this.gutters)t.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:t=>Ze.scrollMargins.of(e=>{let n=e.plugin(t);if(!n||n.gutters.length==0||!n.fixed)return null;let r=n.dom.offsetWidth*e.scaleX,s=n.domAfter?n.domAfter.offsetWidth*e.scaleX:0;return e.textDirection==gr.LTR?{left:r,right:s}:{right:r,left:s}})});function t_(t){return Array.isArray(t)?t:[t]}function Gk(t,e,n){for(;t.value&&t.from<=n;)t.from==n&&e.push(t.value),t.next()}class Jle{constructor(e,n,r){this.gutter=e,this.height=r,this.i=0,this.cursor=Rn.iter(e.markers,n.from)}addElement(e,n,r){let{gutter:s}=this,i=(n.top-this.height)/e.scaleY,a=n.height/e.scaleY;if(this.i==s.elements.length){let l=new Nq(e,a,i,r);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(e,a,i,r);this.height=n.bottom,this.i++}line(e,n,r){let s=[];Gk(this.cursor,s,n.from),r.length&&(s=s.concat(r));let i=this.gutter.config.lineMarker(e,n,s);i&&s.unshift(i);let a=this.gutter;s.length==0&&!a.config.renderEmptyElements||this.addElement(e,n,s)}widget(e,n){let r=this.gutter.config.widgetMarker(e,n.widget,n),s=r?[r]:null;for(let i of e.state.facet(Xle)){let a=i(e,n.widget,n);a&&(s||(s=[])).push(a)}s&&this.addElement(e,n,s)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let n=e.elements.pop();e.dom.removeChild(n.dom),n.destroy()}}}class n_{constructor(e,n){this.view=e,this.config=n,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let r in n.domEventHandlers)this.dom.addEventListener(r,s=>{let i=s.target,a;if(i!=this.dom&&this.dom.contains(i)){for(;i.parentNode!=this.dom;)i=i.parentNode;let c=i.getBoundingClientRect();a=(c.top+c.bottom)/2}else a=s.clientY;let l=e.lineBlockAtHeight(a-e.documentTop);n.domEventHandlers[r](e,l,s)&&s.preventDefault()});this.markers=t_(n.markers(e)),n.initialSpacer&&(this.spacer=new Nq(e,0,0,[n.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let n=this.markers;if(this.markers=t_(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],e);s!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[s])}let r=e.view.viewport;return!Rn.eq(this.markers,n,r.from,r.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}}class Nq{constructor(e,n,r,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,n,r,s)}update(e,n,r,s){this.height!=n&&(this.height=n,this.dom.style.height=n+"px"),this.above!=r&&(this.dom.style.marginTop=(this.above=r)?r+"px":""),ece(this.markers,s)||this.setMarkers(e,s)}setMarkers(e,n){let r="cm-gutterElement",s=this.dom.firstChild;for(let i=0,a=0;;){let l=a,c=ii(l,c,d)||a(l,c,d):a}return r}})}});class I4 extends $l{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}}function L4(t,e){return t.state.facet(Ch).formatNumber(e,t.state)}const rce=S0.compute([Ch],t=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(tce)},lineMarker(e,n,r){return r.some(s=>s.toDOM)?null:new I4(L4(e,e.state.doc.lineAt(n.from).number))},widgetMarker:(e,n,r)=>{for(let s of e.state.facet(nce)){let i=s(e,n,r);if(i)return i}return null},lineMarkerChange:e=>e.startState.facet(Ch)!=e.state.facet(Ch),initialSpacer(e){return new I4(L4(e,r_(e.state.doc.lines)))},updateSpacer(e,n){let r=L4(n.view,r_(n.view.state.doc.lines));return r==e.number?e:new I4(r)},domEventHandlers:t.facet(Ch).domEventHandlers,side:"before"}));function sce(t={}){return[Ch.of(t),jq(),rce]}function r_(t){let e=9;for(;e{let e=[],n=-1;for(let r of t.selection.ranges){let s=t.doc.lineAt(r.head).from;s>n&&(n=s,e.push(ice.range(s)))}return Rn.of(e)});function oce(){return ace}const Cq=1024;let lce=0;class B4{constructor(e,n){this.from=e,this.to=n}}class sn{constructor(e={}){this.id=lce++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=e.combine||null}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=ri.match(e)),n=>{let r=e(n);return r===void 0?null:[this,r]}}}sn.closedBy=new sn({deserialize:t=>t.split(" ")});sn.openedBy=new sn({deserialize:t=>t.split(" ")});sn.group=new sn({deserialize:t=>t.split(" ")});sn.isolate=new sn({deserialize:t=>{if(t&&t!="rtl"&&t!="ltr"&&t!="auto")throw new RangeError("Invalid value for isolate: "+t);return t||"auto"}});sn.contextHash=new sn({perNode:!0});sn.lookAhead=new sn({perNode:!0});sn.mounted=new sn({perNode:!0});class Vv{constructor(e,n,r){this.tree=e,this.overlay=n,this.parser=r}static get(e){return e&&e.props&&e.props[sn.mounted.id]}}const cce=Object.create(null);class ri{constructor(e,n,r,s=0){this.name=e,this.props=n,this.id=r,this.flags=s}static define(e){let n=e.props&&e.props.length?Object.create(null):cce,r=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),s=new ri(e.name||"",n,e.id,r);if(e.props){for(let i of e.props)if(Array.isArray(i)||(i=i(s)),i){if(i[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");n[i[0].id]=i[1]}}return s}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let n=this.prop(sn.group);return n?n.indexOf(e)>-1:!1}return this.id==e}static match(e){let n=Object.create(null);for(let r in e)for(let s of r.split(" "))n[s]=e[r];return r=>{for(let s=r.prop(sn.group),i=-1;i<(s?s.length:0);i++){let a=n[i<0?r.name:s[i]];if(a)return a}}}}ri.none=new ri("",Object.create(null),0,8);class ab{constructor(e){this.types=e;for(let n=0;n0;for(let c=this.cursor(a|ds.IncludeAnonymous);;){let d=!1;if(c.from<=i&&c.to>=s&&(!l&&c.type.isAnonymous||n(c)!==!1)){if(c.firstChild())continue;d=!0}for(;d&&r&&(l||!c.type.isAnonymous)&&r(c),!c.nextSibling();){if(!c.parent())return;d=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let n in this.props)e.push([+n,this.props[n]]);return e}balance(e={}){return this.children.length<=8?this:d6(ri.none,this.children,this.positions,0,this.children.length,0,this.length,(n,r,s)=>new ar(this.type,n,r,s,this.propValues),e.makeTree||((n,r,s)=>new ar(ri.none,n,r,s)))}static build(e){return fce(e)}}ar.empty=new ar(ri.none,[],[],0);class c6{constructor(e,n){this.buffer=e,this.index=n}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new c6(this.buffer,this.index)}}class Yc{constructor(e,n,r){this.buffer=e,this.length=n,this.set=r}get type(){return ri.none}toString(){let e=[];for(let n=0;n0));c=a[c+3]);return l}slice(e,n,r){let s=this.buffer,i=new Uint16Array(n-e),a=0;for(let l=e,c=0;l=e&&ne;case 1:return n<=e&&r>e;case 2:return r>e;case 4:return!0}}function Q0(t,e,n,r){for(var s;t.from==t.to||(n<1?t.from>=e:t.from>e)||(n>-1?t.to<=e:t.to0?l.length:-1;e!=d;e+=n){let h=l[e],m=c[e]+a.from;if(Tq(s,r,m,m+h.length)){if(h instanceof Yc){if(i&ds.ExcludeBuffers)continue;let g=h.findChild(0,h.buffer.length,n,r-m,s);if(g>-1)return new jo(new uce(a,h,e,m),null,g)}else if(i&ds.IncludeAnonymous||!h.type.isAnonymous||u6(h)){let g;if(!(i&ds.IgnoreMounts)&&(g=Vv.get(h))&&!g.overlay)return new ki(g.tree,m,e,a);let x=new ki(h,m,e,a);return i&ds.IncludeAnonymous||!x.type.isAnonymous?x:x.nextChild(n<0?h.children.length-1:0,n,r,s)}}}if(i&ds.IncludeAnonymous||!a.type.isAnonymous||(a.index>=0?e=a.index+n:e=n<0?-1:a._parent._tree.children.length,a=a._parent,!a))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}enter(e,n,r=0){let s;if(!(r&ds.IgnoreOverlays)&&(s=Vv.get(this._tree))&&s.overlay){let i=e-this.from;for(let{from:a,to:l}of s.overlay)if((n>0?a<=i:a=i:l>i))return new ki(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,n,r)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function i_(t,e,n,r){let s=t.cursor(),i=[];if(!s.firstChild())return i;if(n!=null){for(let a=!1;!a;)if(a=s.type.is(n),!s.nextSibling())return i}for(;;){if(r!=null&&s.type.is(r))return i;if(s.type.is(e)&&i.push(s.node),!s.nextSibling())return r==null?i:[]}}function Xk(t,e,n=e.length-1){for(let r=t;n>=0;r=r.parent){if(!r)return!1;if(!r.type.isAnonymous){if(e[n]&&e[n]!=r.name)return!1;n--}}return!0}class uce{constructor(e,n,r,s){this.parent=e,this.buffer=n,this.index=r,this.start=s}}class jo extends Eq{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,n,r){super(),this.context=e,this._parent=n,this.index=r,this.type=e.buffer.set.types[e.buffer.buffer[r]]}child(e,n,r){let{buffer:s}=this.context,i=s.findChild(this.index+4,s.buffer[this.index+3],e,n-this.context.start,r);return i<0?null:new jo(this.context,this,i)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,n,r=0){if(r&ds.ExcludeBuffers)return null;let{buffer:s}=this.context,i=s.findChild(this.index+4,s.buffer[this.index+3],n>0?1:-1,e-this.context.start,n);return i<0?null:new jo(this.context,this,i)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,n=e.buffer[this.index+3];return n<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new jo(this.context,this._parent,n):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,n=this._parent?this._parent.index+4:0;return this.index==n?this.externalSibling(-1):new jo(this.context,this._parent,e.findChild(n,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],n=[],{buffer:r}=this.context,s=this.index+4,i=r.buffer[this.index+3];if(i>s){let a=r.buffer[this.index+1];e.push(r.slice(s,i,a)),n.push(0)}return new ar(this.type,e,n,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function _q(t){if(!t.length)return null;let e=0,n=t[0];for(let i=1;in.from||a.to=e){let l=new ki(a.tree,a.overlay[0].from+i.from,-1,i);(s||(s=[r])).push(Q0(l,e,n,!1))}}return s?_q(s):r}class Yk{get name(){return this.type.name}constructor(e,n=0){if(this.mode=n,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,e instanceof ki)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let r=e._parent;r;r=r._parent)this.stack.unshift(r.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,n){this.index=e;let{start:r,buffer:s}=this.buffer;return this.type=n||s.set.types[s.buffer[e]],this.from=r+s.buffer[e+1],this.to=r+s.buffer[e+2],!0}yield(e){return e?e instanceof ki?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,n,r){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,n,r,this.mode));let{buffer:s}=this.buffer,i=s.findChild(this.index+4,s.buffer[this.index+3],e,n-this.buffer.start,r);return i<0?!1:(this.stack.push(this.index),this.yieldBuf(i))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,n,r=this.mode){return this.buffer?r&ds.ExcludeBuffers?!1:this.enterChild(1,e,n):this.yield(this._tree.enter(e,n,r))}parent(){if(!this.buffer)return this.yieldNode(this.mode&ds.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&ds.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:n}=this.buffer,r=this.stack.length-1;if(e<0){let s=r<0?0:this.stack[r]+4;if(this.index!=s)return this.yieldBuf(n.findChild(s,this.index,-1,0,4))}else{let s=n.buffer[this.index+3];if(s<(r<0?n.buffer.length:n.buffer[this.stack[r]+3]))return this.yieldBuf(s)}return r<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let n,r,{buffer:s}=this;if(s){if(e>0){if(this.index-1)for(let i=n+e,a=e<0?-1:r._tree.children.length;i!=a;i+=e){let l=r._tree.children[i];if(this.mode&ds.IncludeAnonymous||l instanceof Yc||!l.type.isAnonymous||u6(l))return!1}return!0}move(e,n){if(n&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,n=0){for(;(this.from==this.to||(n<1?this.from>=e:this.from>e)||(n>-1?this.to<=e:this.to=0;){for(let a=e;a;a=a._parent)if(a.index==s){if(s==this.index)return a;n=a,r=i+1;break e}s=this.stack[--i]}for(let s=r;s=0;i--){if(i<0)return Xk(this._tree,e,s);let a=r[n.buffer[this.stack[i]]];if(!a.isAnonymous){if(e[s]&&e[s]!=a.name)return!1;s--}}return!0}}function u6(t){return t.children.some(e=>e instanceof Yc||!e.type.isAnonymous||u6(e))}function fce(t){var e;let{buffer:n,nodeSet:r,maxBufferLength:s=Cq,reused:i=[],minRepeatType:a=r.types.length}=t,l=Array.isArray(n)?new c6(n,n.length):n,c=r.types,d=0,h=0;function m(E,_,M,I,P,L){let{id:H,start:U,end:ee,size:z}=l,Q=h,B=d;if(z<0)if(l.next(),z==-1){let ie=i[H];M.push(ie),I.push(U-E);return}else if(z==-3){d=H;return}else if(z==-4){h=H;return}else throw new RangeError(`Unrecognized record size: ${z}`);let X=c[H],J,G,R=U-E;if(ee-U<=s&&(G=S(l.pos-_,P))){let ie=new Uint16Array(G.size-G.skip),W=l.pos-G.size,q=ie.length;for(;l.pos>W;)q=k(G.start,ie,q);J=new Yc(ie,ee-G.start,r),R=G.start-E}else{let ie=l.pos-z;l.next();let W=[],q=[],V=H>=a?H:-1,te=0,ne=ee;for(;l.pos>ie;)V>=0&&l.id==V&&l.size>=0?(l.end<=ne-s&&(y(W,q,U,te,l.end,ne,V,Q,B),te=W.length,ne=l.end),l.next()):L>2500?g(U,ie,W,q):m(U,ie,W,q,V,L+1);if(V>=0&&te>0&&te-1&&te>0){let K=x(X,B);J=d6(X,W,q,0,W.length,0,ee-U,K,K)}else J=w(X,W,q,ee-U,Q-ee,B)}M.push(J),I.push(R)}function g(E,_,M,I){let P=[],L=0,H=-1;for(;l.pos>_;){let{id:U,start:ee,end:z,size:Q}=l;if(Q>4)l.next();else{if(H>-1&&ee=0;z-=3)U[Q++]=P[z],U[Q++]=P[z+1]-ee,U[Q++]=P[z+2]-ee,U[Q++]=Q;M.push(new Yc(U,P[2]-ee,r)),I.push(ee-E)}}function x(E,_){return(M,I,P)=>{let L=0,H=M.length-1,U,ee;if(H>=0&&(U=M[H])instanceof ar){if(!H&&U.type==E&&U.length==P)return U;(ee=U.prop(sn.lookAhead))&&(L=I[H]+U.length+ee)}return w(E,M,I,P,L,_)}}function y(E,_,M,I,P,L,H,U,ee){let z=[],Q=[];for(;E.length>I;)z.push(E.pop()),Q.push(_.pop()+M-P);E.push(w(r.types[H],z,Q,L-P,U-L,ee)),_.push(P-M)}function w(E,_,M,I,P,L,H){if(L){let U=[sn.contextHash,L];H=H?[U].concat(H):[U]}if(P>25){let U=[sn.lookAhead,P];H=H?[U].concat(H):[U]}return new ar(E,_,M,I,H)}function S(E,_){let M=l.fork(),I=0,P=0,L=0,H=M.end-s,U={size:0,start:0,skip:0};e:for(let ee=M.pos-E;M.pos>ee;){let z=M.size;if(M.id==_&&z>=0){U.size=I,U.start=P,U.skip=L,L+=4,I+=4,M.next();continue}let Q=M.pos-z;if(z<0||Q=a?4:0,X=M.start;for(M.next();M.pos>Q;){if(M.size<0)if(M.size==-3)B+=4;else break e;else M.id>=a&&(B+=4);M.next()}P=X,I+=z,L+=B}return(_<0||I==E)&&(U.size=I,U.start=P,U.skip=L),U.size>4?U:void 0}function k(E,_,M){let{id:I,start:P,end:L,size:H}=l;if(l.next(),H>=0&&I4){let ee=l.pos-(H-4);for(;l.pos>ee;)M=k(E,_,M)}_[--M]=U,_[--M]=L-E,_[--M]=P-E,_[--M]=I}else H==-3?d=I:H==-4&&(h=I);return M}let j=[],N=[];for(;l.pos>0;)m(t.start||0,t.bufferStart||0,j,N,-1,0);let T=(e=t.length)!==null&&e!==void 0?e:j.length?N[0]+j[0].length:0;return new ar(c[t.topID],j.reverse(),N.reverse(),T)}const a_=new WeakMap;function hv(t,e){if(!t.isAnonymous||e instanceof Yc||e.type!=t)return 1;let n=a_.get(e);if(n==null){n=1;for(let r of e.children){if(r.type!=t||!(r instanceof ar)){n=1;break}n+=hv(t,r)}a_.set(e,n)}return n}function d6(t,e,n,r,s,i,a,l,c){let d=0;for(let y=r;y=h)break;_+=M}if(N==T+1){if(_>h){let M=y[T];x(M.children,M.positions,0,M.children.length,w[T]+j);continue}m.push(y[T])}else{let M=w[N-1]+y[N-1].length-E;m.push(d6(t,y,w,T,N,E,M,null,c))}g.push(E+j-i)}}return x(e,n,r,s,0),(l||c)(m,g,a)}class mce{constructor(){this.map=new WeakMap}setBuffer(e,n,r){let s=this.map.get(e);s||this.map.set(e,s=new Map),s.set(n,r)}getBuffer(e,n){let r=this.map.get(e);return r&&r.get(n)}set(e,n){e instanceof jo?this.setBuffer(e.context.buffer,e.index,n):e instanceof ki&&this.map.set(e.tree,n)}get(e){return e instanceof jo?this.getBuffer(e.context.buffer,e.index):e instanceof ki?this.map.get(e.tree):void 0}cursorSet(e,n){e.buffer?this.setBuffer(e.buffer.buffer,e.index,n):this.map.set(e.tree,n)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}}class Ju{constructor(e,n,r,s,i=!1,a=!1){this.from=e,this.to=n,this.tree=r,this.offset=s,this.open=(i?1:0)|(a?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,n=[],r=!1){let s=[new Ju(0,e.length,e,0,!1,r)];for(let i of n)i.to>e.length&&s.push(i);return s}static applyChanges(e,n,r=128){if(!n.length)return e;let s=[],i=1,a=e.length?e[0]:null;for(let l=0,c=0,d=0;;l++){let h=l=r)for(;a&&a.from=g.from||m<=g.to||d){let x=Math.max(g.from,c)-d,y=Math.min(g.to,m)-d;g=x>=y?null:new Ju(x,y,g.tree,g.offset+d,l>0,!!h)}if(g&&s.push(g),a.to>m)break;a=inew B4(s.from,s.to)):[new B4(0,0)]:[new B4(0,e.length)],this.createParse(e,n||[],r)}parse(e,n,r){let s=this.startParse(e,n,r);for(;;){let i=s.advance();if(i)return i}}};class pce{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,n){return this.string.slice(e,n)}}new sn({perNode:!0});let gce=0;class ha{constructor(e,n,r,s){this.name=e,this.set=n,this.base=r,this.modified=s,this.id=gce++}toString(){let{name:e}=this;for(let n of this.modified)n.name&&(e=`${n.name}(${e})`);return e}static define(e,n){let r=typeof e=="string"?e:"?";if(e instanceof ha&&(n=e),n?.base)throw new Error("Can not derive from a modified tag");let s=new ha(r,[],null,[]);if(s.set.push(s),n)for(let i of n.set)s.set.push(i);return s}static defineModifier(e){let n=new Uv(e);return r=>r.modified.indexOf(n)>-1?r:Uv.get(r.base||r,r.modified.concat(n).sort((s,i)=>s.id-i.id))}}let xce=0;class Uv{constructor(e){this.name=e,this.instances=[],this.id=xce++}static get(e,n){if(!n.length)return e;let r=n[0].instances.find(l=>l.base==e&&vce(n,l.modified));if(r)return r;let s=[],i=new ha(e.name,s,e,n);for(let l of n)l.instances.push(i);let a=yce(n);for(let l of e.set)if(!l.modified.length)for(let c of a)s.push(Uv.get(l,c));return i}}function vce(t,e){return t.length==e.length&&t.every((n,r)=>n==e[r])}function yce(t){let e=[[]];for(let n=0;nr.length-n.length)}function f6(t){let e=Object.create(null);for(let n in t){let r=t[n];Array.isArray(r)||(r=[r]);for(let s of n.split(" "))if(s){let i=[],a=2,l=s;for(let m=0;;){if(l=="..."&&m>0&&m+3==s.length){a=1;break}let g=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!g)throw new RangeError("Invalid path: "+s);if(i.push(g[0]=="*"?"":g[0][0]=='"'?JSON.parse(g[0]):g[0]),m+=g[0].length,m==s.length)break;let x=s[m++];if(m==s.length&&x=="!"){a=0;break}if(x!="/")throw new RangeError("Invalid path: "+s);l=s.slice(m)}let c=i.length-1,d=i[c];if(!d)throw new RangeError("Invalid path: "+s);let h=new V0(r,a,c>0?i.slice(0,c):null);e[d]=h.sort(e[d])}}return Mq.add(e)}const Mq=new sn({combine(t,e){let n,r,s;for(;t||e;){if(!t||e&&t.depth>=e.depth?(s=e,e=e.next):(s=t,t=t.next),n&&n.mode==s.mode&&!s.context&&!n.context)continue;let i=new V0(s.tags,s.mode,s.context);n?n.next=i:r=i,n=i}return r}});class V0{constructor(e,n,r,s){this.tags=e,this.mode=n,this.context=r,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth{let a=s;for(let l of i)for(let c of l.set){let d=n[c.id];if(d){a=a?a+" "+d:d;break}}return a},scope:r}}function bce(t,e){let n=null;for(let r of t){let s=r.style(e);s&&(n=n?n+" "+s:s)}return n}function wce(t,e,n,r=0,s=t.length){let i=new Sce(r,Array.isArray(e)?e:[e],n);i.highlightRange(t.cursor(),r,s,"",i.highlighters),i.flush(s)}class Sce{constructor(e,n,r){this.at=e,this.highlighters=n,this.span=r,this.class=""}startSpan(e,n){n!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=n)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,n,r,s,i){let{type:a,from:l,to:c}=e;if(l>=r||c<=n)return;a.isTop&&(i=this.highlighters.filter(x=>!x.scope||x.scope(a)));let d=s,h=kce(e)||V0.empty,m=bce(i,h.tags);if(m&&(d&&(d+=" "),d+=m,h.mode==1&&(s+=(s?" ":"")+m)),this.startSpan(Math.max(n,l),d),h.opaque)return;let g=e.tree&&e.tree.prop(sn.mounted);if(g&&g.overlay){let x=e.node.enter(g.overlay[0].from+l,1),y=this.highlighters.filter(S=>!S.scope||S.scope(g.tree.type)),w=e.firstChild();for(let S=0,k=l;;S++){let j=S=N||!e.nextSibling())););if(!j||N>r)break;k=j.to+l,k>n&&(this.highlightRange(x.cursor(),Math.max(n,j.from+l),Math.min(r,k),"",y),this.startSpan(Math.min(r,k),d))}w&&e.parent()}else if(e.firstChild()){g&&(s="");do if(!(e.to<=n)){if(e.from>=r)break;this.highlightRange(e,n,r,s,i),this.startSpan(Math.min(r,e.to),d)}while(e.nextSibling());e.parent()}}}function kce(t){let e=t.type.prop(Mq);for(;e&&e.context&&!t.matchContext(e.context);)e=e.next;return e||null}const Ke=ha.define,h1=Ke(),Mc=Ke(),o_=Ke(Mc),l_=Ke(Mc),Ac=Ke(),f1=Ke(Ac),F4=Ke(Ac),po=Ke(),Ru=Ke(po),fo=Ke(),mo=Ke(),Kk=Ke(),Bm=Ke(Kk),m1=Ke(),xe={comment:h1,lineComment:Ke(h1),blockComment:Ke(h1),docComment:Ke(h1),name:Mc,variableName:Ke(Mc),typeName:o_,tagName:Ke(o_),propertyName:l_,attributeName:Ke(l_),className:Ke(Mc),labelName:Ke(Mc),namespace:Ke(Mc),macroName:Ke(Mc),literal:Ac,string:f1,docString:Ke(f1),character:Ke(f1),attributeValue:Ke(f1),number:F4,integer:Ke(F4),float:Ke(F4),bool:Ke(Ac),regexp:Ke(Ac),escape:Ke(Ac),color:Ke(Ac),url:Ke(Ac),keyword:fo,self:Ke(fo),null:Ke(fo),atom:Ke(fo),unit:Ke(fo),modifier:Ke(fo),operatorKeyword:Ke(fo),controlKeyword:Ke(fo),definitionKeyword:Ke(fo),moduleKeyword:Ke(fo),operator:mo,derefOperator:Ke(mo),arithmeticOperator:Ke(mo),logicOperator:Ke(mo),bitwiseOperator:Ke(mo),compareOperator:Ke(mo),updateOperator:Ke(mo),definitionOperator:Ke(mo),typeOperator:Ke(mo),controlOperator:Ke(mo),punctuation:Kk,separator:Ke(Kk),bracket:Bm,angleBracket:Ke(Bm),squareBracket:Ke(Bm),paren:Ke(Bm),brace:Ke(Bm),content:po,heading:Ru,heading1:Ke(Ru),heading2:Ke(Ru),heading3:Ke(Ru),heading4:Ke(Ru),heading5:Ke(Ru),heading6:Ke(Ru),contentSeparator:Ke(po),list:Ke(po),quote:Ke(po),emphasis:Ke(po),strong:Ke(po),link:Ke(po),monospace:Ke(po),strikethrough:Ke(po),inserted:Ke(),deleted:Ke(),changed:Ke(),invalid:Ke(),meta:m1,documentMeta:Ke(m1),annotation:Ke(m1),processingInstruction:Ke(m1),definition:ha.defineModifier("definition"),constant:ha.defineModifier("constant"),function:ha.defineModifier("function"),standard:ha.defineModifier("standard"),local:ha.defineModifier("local"),special:ha.defineModifier("special")};for(let t in xe){let e=xe[t];e instanceof ha&&(e.name=t)}Aq([{tag:xe.link,class:"tok-link"},{tag:xe.heading,class:"tok-heading"},{tag:xe.emphasis,class:"tok-emphasis"},{tag:xe.strong,class:"tok-strong"},{tag:xe.keyword,class:"tok-keyword"},{tag:xe.atom,class:"tok-atom"},{tag:xe.bool,class:"tok-bool"},{tag:xe.url,class:"tok-url"},{tag:xe.labelName,class:"tok-labelName"},{tag:xe.inserted,class:"tok-inserted"},{tag:xe.deleted,class:"tok-deleted"},{tag:xe.literal,class:"tok-literal"},{tag:xe.string,class:"tok-string"},{tag:xe.number,class:"tok-number"},{tag:[xe.regexp,xe.escape,xe.special(xe.string)],class:"tok-string2"},{tag:xe.variableName,class:"tok-variableName"},{tag:xe.local(xe.variableName),class:"tok-variableName tok-local"},{tag:xe.definition(xe.variableName),class:"tok-variableName tok-definition"},{tag:xe.special(xe.variableName),class:"tok-variableName2"},{tag:xe.definition(xe.propertyName),class:"tok-propertyName tok-definition"},{tag:xe.typeName,class:"tok-typeName"},{tag:xe.namespace,class:"tok-namespace"},{tag:xe.className,class:"tok-className"},{tag:xe.macroName,class:"tok-macroName"},{tag:xe.propertyName,class:"tok-propertyName"},{tag:xe.operator,class:"tok-operator"},{tag:xe.comment,class:"tok-comment"},{tag:xe.meta,class:"tok-meta"},{tag:xe.invalid,class:"tok-invalid"},{tag:xe.punctuation,class:"tok-punctuation"}]);var q4;const Qu=new sn;function Rq(t){return at.define({combine:t?e=>e.concat(t):void 0})}const Oce=new sn;class va{constructor(e,n,r=[],s=""){this.data=e,this.name=s,bn.prototype.hasOwnProperty("tree")||Object.defineProperty(bn.prototype,"tree",{get(){return ws(this)}}),this.parser=n,this.extension=[Kc.of(this),bn.languageData.of((i,a,l)=>{let c=c_(i,a,l),d=c.type.prop(Qu);if(!d)return[];let h=i.facet(d),m=c.type.prop(Oce);if(m){let g=c.resolve(a-c.from,l);for(let x of m)if(x.test(g,i)){let y=i.facet(x.facet);return x.type=="replace"?y:y.concat(h)}}return h})].concat(r)}isActiveAt(e,n,r=-1){return c_(e,n,r).type.prop(Qu)==this.data}findRegions(e){let n=e.facet(Kc);if(n?.data==this.data)return[{from:0,to:e.doc.length}];if(!n||!n.allowsNesting)return[];let r=[],s=(i,a)=>{if(i.prop(Qu)==this.data){r.push({from:a,to:a+i.length});return}let l=i.prop(sn.mounted);if(l){if(l.tree.prop(Qu)==this.data){if(l.overlay)for(let c of l.overlay)r.push({from:c.from+a,to:c.to+a});else r.push({from:a,to:a+i.length});return}else if(l.overlay){let c=r.length;if(s(l.tree,l.overlay[0].from+a),r.length>c)return}}for(let c=0;cr.isTop?n:void 0)]}),e.name)}configure(e,n){return new U0(this.data,this.parser.configure(e),n||this.name)}get allowsNesting(){return this.parser.hasWrappers()}}function ws(t){let e=t.field(va.state,!1);return e?e.tree:ar.empty}class jce{constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,n){let r=this.cursorPos-this.string.length;return e=this.cursorPos?this.doc.sliceString(e,n):this.string.slice(e-r,n-r)}}let Fm=null;class tf{constructor(e,n,r=[],s,i,a,l,c){this.parser=e,this.state=n,this.fragments=r,this.tree=s,this.treeLen=i,this.viewport=a,this.skipped=l,this.scheduleOn=c,this.parse=null,this.tempSkipped=[]}static create(e,n,r){return new tf(e,n,[],ar.empty,0,r,[],null)}startParse(){return this.parser.startParse(new jce(this.state.doc),this.fragments)}work(e,n){return n!=null&&n>=this.state.doc.length&&(n=void 0),this.tree!=ar.empty&&this.isDone(n??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var r;if(typeof e=="number"){let s=Date.now()+e;e=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),n!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>n)&&n=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(n=this.parse.advance()););}),this.treeLen=e,this.tree=n,this.fragments=this.withoutTempSkipped(Ju.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let n=Fm;Fm=this;try{return e()}finally{Fm=n}}withoutTempSkipped(e){for(let n;n=this.tempSkipped.pop();)e=u_(e,n.from,n.to);return e}changes(e,n){let{fragments:r,tree:s,treeLen:i,viewport:a,skipped:l}=this;if(this.takeTree(),!e.empty){let c=[];if(e.iterChangedRanges((d,h,m,g)=>c.push({fromA:d,toA:h,fromB:m,toB:g})),r=Ju.applyChanges(r,c),s=ar.empty,i=0,a={from:e.mapPos(a.from,-1),to:e.mapPos(a.to,1)},this.skipped.length){l=[];for(let d of this.skipped){let h=e.mapPos(d.from,1),m=e.mapPos(d.to,-1);he.from&&(this.fragments=u_(this.fragments,s,i),this.skipped.splice(r--,1))}return this.skipped.length>=n?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,n){this.skipped.push({from:e,to:n})}static getSkippingParser(e){return new class extends h6{createParse(n,r,s){let i=s[0].from,a=s[s.length-1].to;return{parsedPos:i,advance(){let c=Fm;if(c){for(let d of s)c.tempSkipped.push(d);e&&(c.scheduleOn=c.scheduleOn?Promise.all([c.scheduleOn,e]):e)}return this.parsedPos=a,new ar(ri.none,[],[],a-i)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let n=this.fragments;return this.treeLen>=e&&n.length&&n[0].from==0&&n[0].to>=e}static get(){return Fm}}function u_(t,e,n){return Ju.applyChanges(t,[{fromA:e,toA:n,fromB:e,toB:n}])}class nf{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let n=this.context.changes(e.changes,e.state),r=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),n.viewport.to);return n.work(20,r)||n.takeTree(),new nf(n)}static init(e){let n=Math.min(3e3,e.doc.length),r=tf.create(e.facet(Kc).parser,e,{from:0,to:n});return r.work(20,n)||r.takeTree(),new nf(r)}}va.state=Os.define({create:nf.init,update(t,e){for(let n of e.effects)if(n.is(va.setState))return n.value;return e.startState.facet(Kc)!=e.state.facet(Kc)?nf.init(e.state):t.apply(e)}});let Dq=t=>{let e=setTimeout(()=>t(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(Dq=t=>{let e=-1,n=setTimeout(()=>{e=requestIdleCallback(t,{timeout:400})},100);return()=>e<0?clearTimeout(n):cancelIdleCallback(e)});const $4=typeof navigator<"u"&&(!((q4=navigator.scheduling)===null||q4===void 0)&&q4.isInputPending)?()=>navigator.scheduling.isInputPending():null,Nce=Vr.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let n=this.view.state.field(va.state).context;(n.updateViewport(e.view.viewport)||this.view.viewport.to>n.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(n)}scheduleWork(){if(this.working)return;let{state:e}=this.view,n=e.field(va.state);(n.tree!=n.context.tree||!n.context.isDone(e.doc.length))&&(this.working=Dq(this.work))}work(e){this.working=null;let n=Date.now();if(this.chunkEnds+1e3,c=i.context.work(()=>$4&&$4()||Date.now()>a,s+(l?0:1e5));this.chunkBudget-=Date.now()-n,(c||this.chunkBudget<=0)&&(i.context.takeTree(),this.view.dispatch({effects:va.setState.of(new nf(i.context))})),this.chunkBudget>0&&!(c&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(i.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(n=>vi(this.view.state,n)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Kc=at.define({combine(t){return t.length?t[0]:null},enables:t=>[va.state,Nce,Ze.contentAttributes.compute([t],e=>{let n=e.facet(t);return n&&n.name?{"data-language":n.name}:{}})]});class Pq{constructor(e,n=[]){this.language=e,this.support=n,this.extension=[e,n]}}const Cce=at.define(),Vp=at.define({combine:t=>{if(!t.length)return" ";let e=t[0];if(!e||/\S/.test(e)||Array.from(e).some(n=>n!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(t[0]));return e}});function ld(t){let e=t.facet(Vp);return e.charCodeAt(0)==9?t.tabSize*e.length:e.length}function W0(t,e){let n="",r=t.tabSize,s=t.facet(Vp)[0];if(s==" "){for(;e>=r;)n+=" ",e-=r;s=" "}for(let i=0;i=e?Tce(t,n,e):null}class ob{constructor(e,n={}){this.state=e,this.options=n,this.unit=ld(e)}lineAt(e,n=1){let r=this.state.doc.lineAt(e),{simulateBreak:s,simulateDoubleBreak:i}=this.options;return s!=null&&s>=r.from&&s<=r.to?i&&s==e?{text:"",from:e}:(n<0?s-1&&(i+=a-this.countColumn(r,r.search(/\S|$/))),i}countColumn(e,n=e.length){return Of(e,this.state.tabSize,n)}lineIndent(e,n=1){let{text:r,from:s}=this.lineAt(e,n),i=this.options.overrideIndentation;if(i){let a=i(s);if(a>-1)return a}return this.countColumn(r,r.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const lb=new sn;function Tce(t,e,n){let r=e.resolveStack(n),s=e.resolveInner(n,-1).resolve(n,0).enterUnfinishedNodesBefore(n);if(s!=r.node){let i=[];for(let a=s;a&&!(a.fromr.node.to||a.from==r.node.from&&a.type==r.node.type);a=a.parent)i.push(a);for(let a=i.length-1;a>=0;a--)r={node:i[a],next:r}}return zq(r,t,n)}function zq(t,e,n){for(let r=t;r;r=r.next){let s=_ce(r.node);if(s)return s(p6.create(e,n,r))}return 0}function Ece(t){return t.pos==t.options.simulateBreak&&t.options.simulateDoubleBreak}function _ce(t){let e=t.type.prop(lb);if(e)return e;let n=t.firstChild,r;if(n&&(r=n.type.prop(sn.closedBy))){let s=t.lastChild,i=s&&r.indexOf(s.name)>-1;return a=>Iq(a,!0,1,void 0,i&&!Ece(a)?s.from:void 0)}return t.parent==null?Mce:null}function Mce(){return 0}class p6 extends ob{constructor(e,n,r){super(e.state,e.options),this.base=e,this.pos=n,this.context=r}get node(){return this.context.node}static create(e,n,r){return new p6(e,n,r)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let n=this.state.doc.lineAt(e.from);for(;;){let r=e.resolve(n.from);for(;r.parent&&r.parent.from==r.from;)r=r.parent;if(Ace(r,e))break;n=this.state.doc.lineAt(r.from)}return this.lineIndent(n.from)}continue(){return zq(this.context.next,this.base,this.pos)}}function Ace(t,e){for(let n=e;n;n=n.parent)if(t==n)return!0;return!1}function Rce(t){let e=t.node,n=e.childAfter(e.from),r=e.lastChild;if(!n)return null;let s=t.options.simulateBreak,i=t.state.doc.lineAt(n.from),a=s==null||s<=i.from?i.to:Math.min(i.to,s);for(let l=n.to;;){let c=e.childAfter(l);if(!c||c==r)return null;if(!c.type.isSkipped){if(c.from>=a)return null;let d=/^ */.exec(i.text.slice(n.to-i.from))[0].length;return{from:n.from,to:n.to+d}}l=c.to}}function H4({closing:t,align:e=!0,units:n=1}){return r=>Iq(r,e,n,t)}function Iq(t,e,n,r,s){let i=t.textAfter,a=i.match(/^\s*/)[0].length,l=r&&i.slice(a,a+r.length)==r||s==t.pos+a,c=e?Rce(t):null;return c?l?t.column(c.from):t.column(c.to):t.baseIndent+(l?0:t.unit*n)}function d_({except:t,units:e=1}={}){return n=>{let r=t&&t.test(n.textAfter);return n.baseIndent+(r?0:e*n.unit)}}const Dce=200;function Pce(){return bn.transactionFilter.of(t=>{if(!t.docChanged||!t.isUserEvent("input.type")&&!t.isUserEvent("input.complete"))return t;let e=t.startState.languageDataAt("indentOnInput",t.startState.selection.main.head);if(!e.length)return t;let n=t.newDoc,{head:r}=t.newSelection.main,s=n.lineAt(r);if(r>s.from+Dce)return t;let i=n.sliceString(s.from,r);if(!e.some(d=>d.test(i)))return t;let{state:a}=t,l=-1,c=[];for(let{head:d}of a.selection.ranges){let h=a.doc.lineAt(d);if(h.from==l)continue;l=h.from;let m=m6(a,h.from);if(m==null)continue;let g=/^\s*/.exec(h.text)[0],x=W0(a,m);g!=x&&c.push({from:h.from,to:h.from+g.length,insert:x})}return c.length?[t,{changes:c,sequential:!0}]:t})}const zce=at.define(),g6=new sn;function Lq(t){let e=t.firstChild,n=t.lastChild;return e&&e.ton)continue;if(i&&l.from=e&&d.to>n&&(i=d)}}return i}function Lce(t){let e=t.lastChild;return e&&e.to==t.to&&e.type.isError}function Wv(t,e,n){for(let r of t.facet(zce)){let s=r(t,e,n);if(s)return s}return Ice(t,e,n)}function Bq(t,e){let n=e.mapPos(t.from,1),r=e.mapPos(t.to,-1);return n>=r?void 0:{from:n,to:r}}const cb=Ft.define({map:Bq}),Up=Ft.define({map:Bq});function Fq(t){let e=[];for(let{head:n}of t.state.selection.ranges)e.some(r=>r.from<=n&&r.to>=n)||e.push(t.lineBlockAt(n));return e}const cd=Os.define({create(){return kt.none},update(t,e){e.isUserEvent("delete")&&e.changes.iterChangedRanges((n,r)=>t=h_(t,n,r)),t=t.map(e.changes);for(let n of e.effects)if(n.is(cb)&&!Bce(t,n.value.from,n.value.to)){let{preparePlaceholder:r}=e.state.facet(Hq),s=r?kt.replace({widget:new Uce(r(e.state,n.value))}):f_;t=t.update({add:[s.range(n.value.from,n.value.to)]})}else n.is(Up)&&(t=t.update({filter:(r,s)=>n.value.from!=r||n.value.to!=s,filterFrom:n.value.from,filterTo:n.value.to}));return e.selection&&(t=h_(t,e.selection.main.head)),t},provide:t=>Ze.decorations.from(t),toJSON(t,e){let n=[];return t.between(0,e.doc.length,(r,s)=>{n.push(r,s)}),n},fromJSON(t){if(!Array.isArray(t)||t.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let n=0;n{se&&(r=!0)}),r?t.update({filterFrom:e,filterTo:n,filter:(s,i)=>s>=n||i<=e}):t}function Gv(t,e,n){var r;let s=null;return(r=t.field(cd,!1))===null||r===void 0||r.between(e,n,(i,a)=>{(!s||s.from>i)&&(s={from:i,to:a})}),s}function Bce(t,e,n){let r=!1;return t.between(e,e,(s,i)=>{s==e&&i==n&&(r=!0)}),r}function qq(t,e){return t.field(cd,!1)?e:e.concat(Ft.appendConfig.of(Qq()))}const Fce=t=>{for(let e of Fq(t)){let n=Wv(t.state,e.from,e.to);if(n)return t.dispatch({effects:qq(t.state,[cb.of(n),$q(t,n)])}),!0}return!1},qce=t=>{if(!t.state.field(cd,!1))return!1;let e=[];for(let n of Fq(t)){let r=Gv(t.state,n.from,n.to);r&&e.push(Up.of(r),$q(t,r,!1))}return e.length&&t.dispatch({effects:e}),e.length>0};function $q(t,e,n=!0){let r=t.state.doc.lineAt(e.from).number,s=t.state.doc.lineAt(e.to).number;return Ze.announce.of(`${t.state.phrase(n?"Folded lines":"Unfolded lines")} ${r} ${t.state.phrase("to")} ${s}.`)}const $ce=t=>{let{state:e}=t,n=[];for(let r=0;r{let e=t.state.field(cd,!1);if(!e||!e.size)return!1;let n=[];return e.between(0,t.state.doc.length,(r,s)=>{n.push(Up.of({from:r,to:s}))}),t.dispatch({effects:n}),!0},Qce=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:Fce},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:qce},{key:"Ctrl-Alt-[",run:$ce},{key:"Ctrl-Alt-]",run:Hce}],Vce={placeholderDOM:null,preparePlaceholder:null,placeholderText:"…"},Hq=at.define({combine(t){return qo(t,Vce)}});function Qq(t){return[cd,Xce]}function Vq(t,e){let{state:n}=t,r=n.facet(Hq),s=a=>{let l=t.lineBlockAt(t.posAtDOM(a.target)),c=Gv(t.state,l.from,l.to);c&&t.dispatch({effects:Up.of(c)}),a.preventDefault()};if(r.placeholderDOM)return r.placeholderDOM(t,s,e);let i=document.createElement("span");return i.textContent=r.placeholderText,i.setAttribute("aria-label",n.phrase("folded code")),i.title=n.phrase("unfold"),i.className="cm-foldPlaceholder",i.onclick=s,i}const f_=kt.replace({widget:new class extends $o{toDOM(t){return Vq(t,null)}}});class Uce extends $o{constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return Vq(e,this.value)}}const Wce={openText:"⌄",closedText:"›",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1};class Q4 extends $l{constructor(e,n){super(),this.config=e,this.open=n}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let n=document.createElement("span");return n.textContent=this.open?this.config.openText:this.config.closedText,n.title=e.state.phrase(this.open?"Fold line":"Unfold line"),n}}function Gce(t={}){let e={...Wce,...t},n=new Q4(e,!0),r=new Q4(e,!1),s=Vr.fromClass(class{constructor(a){this.from=a.viewport.from,this.markers=this.buildMarkers(a)}update(a){(a.docChanged||a.viewportChanged||a.startState.facet(Kc)!=a.state.facet(Kc)||a.startState.field(cd,!1)!=a.state.field(cd,!1)||ws(a.startState)!=ws(a.state)||e.foldingChanged(a))&&(this.markers=this.buildMarkers(a.view))}buildMarkers(a){let l=new Fl;for(let c of a.viewportLineBlocks){let d=Gv(a.state,c.from,c.to)?r:Wv(a.state,c.from,c.to)?n:null;d&&l.add(c.from,c.from,d)}return l.finish()}}),{domEventHandlers:i}=e;return[s,Kle({class:"cm-foldGutter",markers(a){var l;return((l=a.plugin(s))===null||l===void 0?void 0:l.markers)||Rn.empty},initialSpacer(){return new Q4(e,!1)},domEventHandlers:{...i,click:(a,l,c)=>{if(i.click&&i.click(a,l,c))return!0;let d=Gv(a.state,l.from,l.to);if(d)return a.dispatch({effects:Up.of(d)}),!0;let h=Wv(a.state,l.from,l.to);return h?(a.dispatch({effects:cb.of(h)}),!0):!1}}}),Qq()]}const Xce=Ze.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}});class Wp{constructor(e,n){this.specs=e;let r;function s(l){let c=Wc.newName();return(r||(r=Object.create(null)))["."+c]=l,c}const i=typeof n.all=="string"?n.all:n.all?s(n.all):void 0,a=n.scope;this.scope=a instanceof va?l=>l.prop(Qu)==a.data:a?l=>l==a:void 0,this.style=Aq(e.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:i}).style,this.module=r?new Wc(r):null,this.themeType=n.themeType}static define(e,n){return new Wp(e,n||{})}}const Zk=at.define(),Uq=at.define({combine(t){return t.length?[t[0]]:null}});function V4(t){let e=t.facet(Zk);return e.length?e:t.facet(Uq)}function Wq(t,e){let n=[Kce],r;return t instanceof Wp&&(t.module&&n.push(Ze.styleModule.of(t.module)),r=t.themeType),e?.fallback?n.push(Uq.of(t)):r?n.push(Zk.computeN([Ze.darkTheme],s=>s.facet(Ze.darkTheme)==(r=="dark")?[t]:[])):n.push(Zk.of(t)),n}class Yce{constructor(e){this.markCache=Object.create(null),this.tree=ws(e.state),this.decorations=this.buildDeco(e,V4(e.state)),this.decoratedTo=e.viewport.to}update(e){let n=ws(e.state),r=V4(e.state),s=r!=V4(e.startState),{viewport:i}=e.view,a=e.changes.mapPos(this.decoratedTo,1);n.length=i.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=a):(n!=this.tree||e.viewportChanged||s)&&(this.tree=n,this.decorations=this.buildDeco(e.view,r),this.decoratedTo=i.to)}buildDeco(e,n){if(!n||!this.tree.length)return kt.none;let r=new Fl;for(let{from:s,to:i}of e.visibleRanges)wce(this.tree,n,(a,l,c)=>{r.add(a,l,this.markCache[c]||(this.markCache[c]=kt.mark({class:c})))},s,i);return r.finish()}}const Kce=ou.high(Vr.fromClass(Yce,{decorations:t=>t.decorations})),Zce=Wp.define([{tag:xe.meta,color:"#404740"},{tag:xe.link,textDecoration:"underline"},{tag:xe.heading,textDecoration:"underline",fontWeight:"bold"},{tag:xe.emphasis,fontStyle:"italic"},{tag:xe.strong,fontWeight:"bold"},{tag:xe.strikethrough,textDecoration:"line-through"},{tag:xe.keyword,color:"#708"},{tag:[xe.atom,xe.bool,xe.url,xe.contentSeparator,xe.labelName],color:"#219"},{tag:[xe.literal,xe.inserted],color:"#164"},{tag:[xe.string,xe.deleted],color:"#a11"},{tag:[xe.regexp,xe.escape,xe.special(xe.string)],color:"#e40"},{tag:xe.definition(xe.variableName),color:"#00f"},{tag:xe.local(xe.variableName),color:"#30a"},{tag:[xe.typeName,xe.namespace],color:"#085"},{tag:xe.className,color:"#167"},{tag:[xe.special(xe.variableName),xe.macroName],color:"#256"},{tag:xe.definition(xe.propertyName),color:"#00c"},{tag:xe.comment,color:"#940"},{tag:xe.invalid,color:"#f00"}]),Jce=Ze.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Gq=1e4,Xq="()[]{}",Yq=at.define({combine(t){return qo(t,{afterCursor:!0,brackets:Xq,maxScanDistance:Gq,renderMatch:nue})}}),eue=kt.mark({class:"cm-matchingBracket"}),tue=kt.mark({class:"cm-nonmatchingBracket"});function nue(t){let e=[],n=t.matched?eue:tue;return e.push(n.range(t.start.from,t.start.to)),t.end&&e.push(n.range(t.end.from,t.end.to)),e}const rue=Os.define({create(){return kt.none},update(t,e){if(!e.docChanged&&!e.selection)return t;let n=[],r=e.state.facet(Yq);for(let s of e.state.selection.ranges){if(!s.empty)continue;let i=No(e.state,s.head,-1,r)||s.head>0&&No(e.state,s.head-1,1,r)||r.afterCursor&&(No(e.state,s.head,1,r)||s.headZe.decorations.from(t)}),sue=[rue,Jce];function iue(t={}){return[Yq.of(t),sue]}const aue=new sn;function Jk(t,e,n){let r=t.prop(e<0?sn.openedBy:sn.closedBy);if(r)return r;if(t.name.length==1){let s=n.indexOf(t.name);if(s>-1&&s%2==(e<0?1:0))return[n[s+e]]}return null}function eO(t){let e=t.type.prop(aue);return e?e(t.node):t}function No(t,e,n,r={}){let s=r.maxScanDistance||Gq,i=r.brackets||Xq,a=ws(t),l=a.resolveInner(e,n);for(let c=l;c;c=c.parent){let d=Jk(c.type,n,i);if(d&&c.from0?e>=h.from&&eh.from&&e<=h.to))return oue(t,e,n,c,h,d,i)}}return lue(t,e,n,a,l.type,s,i)}function oue(t,e,n,r,s,i,a){let l=r.parent,c={from:s.from,to:s.to},d=0,h=l?.cursor();if(h&&(n<0?h.childBefore(r.from):h.childAfter(r.to)))do if(n<0?h.to<=r.from:h.from>=r.to){if(d==0&&i.indexOf(h.type.name)>-1&&h.from0)return null;let d={from:n<0?e-1:e,to:n>0?e+1:e},h=t.doc.iterRange(e,n>0?t.doc.length:0),m=0;for(let g=0;!h.next().done&&g<=i;){let x=h.value;n<0&&(g+=x.length);let y=e+g*n;for(let w=n>0?0:x.length-1,S=n>0?x.length:-1;w!=S;w+=n){let k=a.indexOf(x[w]);if(!(k<0||r.resolveInner(y+w,1).type!=s))if(k%2==0==n>0)m++;else{if(m==1)return{start:d,end:{from:y+w,to:y+w+1},matched:k>>1==c>>1};m--}}n>0&&(g+=x.length)}return h.done?{start:d,matched:!1}:null}function m_(t,e,n,r=0,s=0){e==null&&(e=t.search(/[^\s\u00a0]/),e==-1&&(e=t.length));let i=s;for(let a=r;a=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.posn}eatSpace(){let e=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e}skipToEnd(){this.pos=this.string.length}skipTo(e){let n=this.string.indexOf(e,this.pos);if(n>-1)return this.pos=n,!0}backUp(e){this.pos-=e}column(){return this.lastColumnPosr?a.toLowerCase():a,i=this.string.substr(this.pos,e.length);return s(i)==s(e)?(n!==!1&&(this.pos+=e.length),!0):null}else{let s=this.string.slice(this.pos).match(e);return s&&s.index>0?null:(s&&n!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}}function cue(t){return{name:t.name||"",token:t.token,blankLine:t.blankLine||(()=>{}),startState:t.startState||(()=>!0),copyState:t.copyState||uue,indent:t.indent||(()=>null),languageData:t.languageData||{},tokenTable:t.tokenTable||y6,mergeTokens:t.mergeTokens!==!1}}function uue(t){if(typeof t!="object")return t;let e={};for(let n in t){let r=t[n];e[n]=r instanceof Array?r.slice():r}return e}const p_=new WeakMap;class x6 extends va{constructor(e){let n=Rq(e.languageData),r=cue(e),s,i=new class extends h6{createParse(a,l,c){return new hue(s,a,l,c)}};super(n,i,[],e.name),this.topNode=pue(n,this),s=this,this.streamParser=r,this.stateAfter=new sn({perNode:!0}),this.tokenTable=e.tokenTable?new t$(r.tokenTable):mue}static define(e){return new x6(e)}getIndent(e){let n,{overrideIndentation:r}=e.options;r&&(n=p_.get(e.state),n!=null&&n1e4)return null;for(;i=r&&n+e.length<=s&&e.prop(t.stateAfter);if(i)return{state:t.streamParser.copyState(i),pos:n+e.length};for(let a=e.children.length-1;a>=0;a--){let l=e.children[a],c=n+e.positions[a],d=l instanceof ar&&c=e.length)return e;!s&&n==0&&e.type==t.topNode&&(s=!0);for(let i=e.children.length-1;i>=0;i--){let a=e.positions[i],l=e.children[i],c;if(an&&v6(t,i.tree,0-i.offset,n,l),d;if(c&&c.pos<=r&&(d=Zq(t,i.tree,n+i.offset,c.pos+i.offset,!1)))return{state:c.state,tree:d}}return{state:t.streamParser.startState(s?ld(s):4),tree:ar.empty}}let hue=class{constructor(e,n,r,s){this.lang=e,this.input=n,this.fragments=r,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let i=tf.get(),a=s[0].from,{state:l,tree:c}=due(e,r,a,this.to,i?.state);this.state=l,this.parsedPos=this.chunkStart=a+c.length;for(let d=0;dd.from<=i.viewport.from&&d.to>=i.viewport.from)&&(this.state=this.lang.streamParser.startState(ld(i.state)),i.skipUntilInView(this.parsedPos,i.viewport.from),this.parsedPos=i.viewport.from),this.moveRangeIndex()}advance(){let e=tf.get(),n=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),r=Math.min(n,this.chunkStart+512);for(e&&(r=Math.min(r,e.viewport.to));this.parsedPos=n?this.finish():e&&this.parsedPos>=e.viewport.to?(e.skipUntilInView(this.parsedPos,n),this.finish()):null}stopAt(e){this.stoppedAt=e}lineAfter(e){let n=this.input.chunk(e);if(this.input.lineChunks)n==` +`&&(n="");else{let r=n.indexOf(` +`);r>-1&&(n=n.slice(0,r))}return e+n.length<=this.to?n:n.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,n=this.lineAfter(e),r=e+n.length;for(let s=this.rangeIndex;;){let i=this.ranges[s].to;if(i>=r||(n=n.slice(0,i-(r-n.length)),s++,s==this.ranges.length))break;let a=this.ranges[s].from,l=this.lineAfter(a);n+=l,r=a+l.length}return{line:n,end:r}}skipGapsTo(e,n,r){for(;;){let s=this.ranges[this.rangeIndex].to,i=e+n;if(r>0?s>i:s>=i)break;let a=this.ranges[++this.rangeIndex].from;n+=a-s}return n}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(n,s,1),n+=s;let l=this.chunk.length;s=this.skipGapsTo(r,s,-1),r+=s,i+=this.chunk.length-l}let a=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&i==4&&a>=0&&this.chunk[a]==e&&this.chunk[a+2]==n?this.chunk[a+2]=r:this.chunk.push(e,n,r,i),s}parseLine(e){let{line:n,end:r}=this.nextLine(),s=0,{streamParser:i}=this.lang,a=new Kq(n,e?e.state.tabSize:4,e?ld(e.state):2);if(a.eol())i.blankLine(this.state,a.indentUnit);else for(;!a.eol();){let l=Jq(i.token,a,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+a.start,this.parsedPos+a.pos,s)),a.start>1e4)break}this.parsedPos=r,this.moveRangeIndex(),this.parsedPose.start)return s}throw new Error("Stream parser failed to advance stream.")}const y6=Object.create(null),G0=[ri.none],fue=new ab(G0),g_=[],x_=Object.create(null),e$=Object.create(null);for(let[t,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])e$[t]=n$(y6,e);class t${constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),e$)}resolve(e){return e?this.table[e]||(this.table[e]=n$(this.extra,e)):0}}const mue=new t$(y6);function U4(t,e){g_.indexOf(t)>-1||(g_.push(t),console.warn(e))}function n$(t,e){let n=[];for(let l of e.split(" ")){let c=[];for(let d of l.split(".")){let h=t[d]||xe[d];h?typeof h=="function"?c.length?c=c.map(h):U4(d,`Modifier ${d} used at start of tag`):c.length?U4(d,`Tag ${d} used as modifier`):c=Array.isArray(h)?h:[h]:U4(d,`Unknown highlighting tag ${d}`)}for(let d of c)n.push(d)}if(!n.length)return 0;let r=e.replace(/ /g,"_"),s=r+" "+n.map(l=>l.id),i=x_[s];if(i)return i.id;let a=x_[s]=ri.define({id:G0.length,name:r,props:[f6({[r]:n})]});return G0.push(a),a.id}function pue(t,e){let n=ri.define({id:G0.length,name:"Document",props:[Qu.add(()=>t),lb.add(()=>r=>e.getIndent(r))],top:!0});return G0.push(n),n}gr.RTL,gr.LTR;const gue=t=>{let{state:e}=t,n=e.doc.lineAt(e.selection.main.from),r=w6(t.state,n.from);return r.line?xue(t):r.block?yue(t):!1};function b6(t,e){return({state:n,dispatch:r})=>{if(n.readOnly)return!1;let s=t(e,n);return s?(r(n.update(s)),!0):!1}}const xue=b6(Sue,0),vue=b6(r$,0),yue=b6((t,e)=>r$(t,e,wue(e)),0);function w6(t,e){let n=t.languageDataAt("commentTokens",e,1);return n.length?n[0]:{}}const qm=50;function bue(t,{open:e,close:n},r,s){let i=t.sliceDoc(r-qm,r),a=t.sliceDoc(s,s+qm),l=/\s*$/.exec(i)[0].length,c=/^\s*/.exec(a)[0].length,d=i.length-l;if(i.slice(d-e.length,d)==e&&a.slice(c,c+n.length)==n)return{open:{pos:r-l,margin:l&&1},close:{pos:s+c,margin:c&&1}};let h,m;s-r<=2*qm?h=m=t.sliceDoc(r,s):(h=t.sliceDoc(r,r+qm),m=t.sliceDoc(s-qm,s));let g=/^\s*/.exec(h)[0].length,x=/\s*$/.exec(m)[0].length,y=m.length-x-n.length;return h.slice(g,g+e.length)==e&&m.slice(y,y+n.length)==n?{open:{pos:r+g+e.length,margin:/\s/.test(h.charAt(g+e.length))?1:0},close:{pos:s-x-n.length,margin:/\s/.test(m.charAt(y-1))?1:0}}:null}function wue(t){let e=[];for(let n of t.selection.ranges){let r=t.doc.lineAt(n.from),s=n.to<=r.to?r:t.doc.lineAt(n.to);s.from>r.from&&s.from==n.to&&(s=n.to==r.to+1?r:t.doc.lineAt(n.to-1));let i=e.length-1;i>=0&&e[i].to>r.from?e[i].to=s.to:e.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:s.to})}return e}function r$(t,e,n=e.selection.ranges){let r=n.map(i=>w6(e,i.from).block);if(!r.every(i=>i))return null;let s=n.map((i,a)=>bue(e,r[a],i.from,i.to));if(t!=2&&!s.every(i=>i))return{changes:e.changes(n.map((i,a)=>s[a]?[]:[{from:i.from,insert:r[a].open+" "},{from:i.to,insert:" "+r[a].close}]))};if(t!=1&&s.some(i=>i)){let i=[];for(let a=0,l;as&&(i==a||a>m.from)){s=m.from;let g=/^\s*/.exec(m.text)[0].length,x=g==m.length,y=m.text.slice(g,g+d.length)==d?g:-1;gi.comment<0&&(!i.empty||i.single))){let i=[];for(let{line:l,token:c,indent:d,empty:h,single:m}of r)(m||!h)&&i.push({from:l.from+d,insert:c+" "});let a=e.changes(i);return{changes:a,selection:e.selection.map(a,1)}}else if(t!=1&&r.some(i=>i.comment>=0)){let i=[];for(let{line:a,comment:l,token:c}of r)if(l>=0){let d=a.from+l,h=d+c.length;a.text[h-a.from]==" "&&h++,i.push({from:d,to:h})}return{changes:i}}return null}const tO=Fo.define(),kue=Fo.define(),Oue=at.define(),s$=at.define({combine(t){return qo(t,{minDepth:100,newGroupDelay:500,joinToEvent:(e,n)=>n},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,n)=>(r,s)=>e(r,s)||n(r,s)})}}),i$=Os.define({create(){return Co.empty},update(t,e){let n=e.state.facet(s$),r=e.annotation(tO);if(r){let c=yi.fromTransaction(e,r.selection),d=r.side,h=d==0?t.undone:t.done;return c?h=Xv(h,h.length,n.minDepth,c):h=l$(h,e.startState.selection),new Co(d==0?r.rest:h,d==0?h:r.rest)}let s=e.annotation(kue);if((s=="full"||s=="before")&&(t=t.isolate()),e.annotation(ns.addToHistory)===!1)return e.changes.empty?t:t.addMapping(e.changes.desc);let i=yi.fromTransaction(e),a=e.annotation(ns.time),l=e.annotation(ns.userEvent);return i?t=t.addChanges(i,a,l,n,e):e.selection&&(t=t.addSelection(e.startState.selection,a,l,n.newGroupDelay)),(s=="full"||s=="after")&&(t=t.isolate()),t},toJSON(t){return{done:t.done.map(e=>e.toJSON()),undone:t.undone.map(e=>e.toJSON())}},fromJSON(t){return new Co(t.done.map(yi.fromJSON),t.undone.map(yi.fromJSON))}});function jue(t={}){return[i$,s$.of(t),Ze.domEventHandlers({beforeinput(e,n){let r=e.inputType=="historyUndo"?a$:e.inputType=="historyRedo"?nO:null;return r?(e.preventDefault(),r(n)):!1}})]}function ub(t,e){return function({state:n,dispatch:r}){if(!e&&n.readOnly)return!1;let s=n.field(i$,!1);if(!s)return!1;let i=s.pop(t,n,e);return i?(r(i),!0):!1}}const a$=ub(0,!1),nO=ub(1,!1),Nue=ub(0,!0),Cue=ub(1,!0);class yi{constructor(e,n,r,s,i){this.changes=e,this.effects=n,this.mapped=r,this.startSelection=s,this.selectionsAfter=i}setSelAfter(e){return new yi(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,n,r;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(n=this.mapped)===null||n===void 0?void 0:n.toJSON(),startSelection:(r=this.startSelection)===null||r===void 0?void 0:r.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(e){return new yi(e.changes&&cs.fromJSON(e.changes),[],e.mapped&&Do.fromJSON(e.mapped),e.startSelection&&Ae.fromJSON(e.startSelection),e.selectionsAfter.map(Ae.fromJSON))}static fromTransaction(e,n){let r=ya;for(let s of e.startState.facet(Oue)){let i=s(e);i.length&&(r=r.concat(i))}return!r.length&&e.changes.empty?null:new yi(e.changes.invert(e.startState.doc),r,void 0,n||e.startState.selection,ya)}static selection(e){return new yi(void 0,ya,void 0,void 0,e)}}function Xv(t,e,n,r){let s=e+1>n+20?e-n-1:0,i=t.slice(s,e);return i.push(r),i}function Tue(t,e){let n=[],r=!1;return t.iterChangedRanges((s,i)=>n.push(s,i)),e.iterChangedRanges((s,i,a,l)=>{for(let c=0;c=d&&a<=h&&(r=!0)}}),r}function Eue(t,e){return t.ranges.length==e.ranges.length&&t.ranges.filter((n,r)=>n.empty!=e.ranges[r].empty).length===0}function o$(t,e){return t.length?e.length?t.concat(e):t:e}const ya=[],_ue=200;function l$(t,e){if(t.length){let n=t[t.length-1],r=n.selectionsAfter.slice(Math.max(0,n.selectionsAfter.length-_ue));return r.length&&r[r.length-1].eq(e)?t:(r.push(e),Xv(t,t.length-1,1e9,n.setSelAfter(r)))}else return[yi.selection([e])]}function Mue(t){let e=t[t.length-1],n=t.slice();return n[t.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),n}function W4(t,e){if(!t.length)return t;let n=t.length,r=ya;for(;n;){let s=Aue(t[n-1],e,r);if(s.changes&&!s.changes.empty||s.effects.length){let i=t.slice(0,n);return i[n-1]=s,i}else e=s.mapped,n--,r=s.selectionsAfter}return r.length?[yi.selection(r)]:ya}function Aue(t,e,n){let r=o$(t.selectionsAfter.length?t.selectionsAfter.map(l=>l.map(e)):ya,n);if(!t.changes)return yi.selection(r);let s=t.changes.map(e),i=e.mapDesc(t.changes,!0),a=t.mapped?t.mapped.composeDesc(i):i;return new yi(s,Ft.mapEffects(t.effects,e),a,t.startSelection.map(i),r)}const Rue=/^(input\.type|delete)($|\.)/;class Co{constructor(e,n,r=0,s=void 0){this.done=e,this.undone=n,this.prevTime=r,this.prevUserEvent=s}isolate(){return this.prevTime?new Co(this.done,this.undone):this}addChanges(e,n,r,s,i){let a=this.done,l=a[a.length-1];return l&&l.changes&&!l.changes.empty&&e.changes&&(!r||Rue.test(r))&&(!l.selectionsAfter.length&&n-this.prevTime0&&n-this.prevTimen.empty?t.moveByChar(n,e):db(n,e))}function Us(t){return t.textDirectionAt(t.state.selection.main.head)==gr.LTR}const u$=t=>c$(t,!Us(t)),d$=t=>c$(t,Us(t));function h$(t,e){return no(t,n=>n.empty?t.moveByGroup(n,e):db(n,e))}const Pue=t=>h$(t,!Us(t)),zue=t=>h$(t,Us(t));function Iue(t,e,n){if(e.type.prop(n))return!0;let r=e.to-e.from;return r&&(r>2||/[^\s,.;:]/.test(t.sliceDoc(e.from,e.to)))||e.firstChild}function hb(t,e,n){let r=ws(t).resolveInner(e.head),s=n?sn.closedBy:sn.openedBy;for(let c=e.head;;){let d=n?r.childAfter(c):r.childBefore(c);if(!d)break;Iue(t,d,s)?r=d:c=n?d.to:d.from}let i=r.type.prop(s),a,l;return i&&(a=n?No(t,r.from,1):No(t,r.to,-1))&&a.matched?l=n?a.end.to:a.end.from:l=n?r.to:r.from,Ae.cursor(l,n?-1:1)}const Lue=t=>no(t,e=>hb(t.state,e,!Us(t))),Bue=t=>no(t,e=>hb(t.state,e,Us(t)));function f$(t,e){return no(t,n=>{if(!n.empty)return db(n,e);let r=t.moveVertically(n,e);return r.head!=n.head?r:t.moveToLineBoundary(n,e)})}const m$=t=>f$(t,!1),p$=t=>f$(t,!0);function g$(t){let e=t.scrollDOM.clientHeighta.empty?t.moveVertically(a,e,n.height):db(a,e));if(s.eq(r.selection))return!1;let i;if(n.selfScroll){let a=t.coordsAtPos(r.selection.main.head),l=t.scrollDOM.getBoundingClientRect(),c=l.top+n.marginTop,d=l.bottom-n.marginBottom;a&&a.top>c&&a.bottomx$(t,!1),rO=t=>x$(t,!0);function lu(t,e,n){let r=t.lineBlockAt(e.head),s=t.moveToLineBoundary(e,n);if(s.head==e.head&&s.head!=(n?r.to:r.from)&&(s=t.moveToLineBoundary(e,n,!1)),!n&&s.head==r.from&&r.length){let i=/^\s*/.exec(t.state.sliceDoc(r.from,Math.min(r.from+100,r.to)))[0].length;i&&e.head!=r.from+i&&(s=Ae.cursor(r.from+i))}return s}const Fue=t=>no(t,e=>lu(t,e,!0)),que=t=>no(t,e=>lu(t,e,!1)),$ue=t=>no(t,e=>lu(t,e,!Us(t))),Hue=t=>no(t,e=>lu(t,e,Us(t))),Que=t=>no(t,e=>Ae.cursor(t.lineBlockAt(e.head).from,1)),Vue=t=>no(t,e=>Ae.cursor(t.lineBlockAt(e.head).to,-1));function Uue(t,e,n){let r=!1,s=jf(t.selection,i=>{let a=No(t,i.head,-1)||No(t,i.head,1)||i.head>0&&No(t,i.head-1,1)||i.headUue(t,e);function Pa(t,e){let n=jf(t.state.selection,r=>{let s=e(r);return Ae.range(r.anchor,s.head,s.goalColumn,s.bidiLevel||void 0)});return n.eq(t.state.selection)?!1:(t.dispatch(to(t.state,n)),!0)}function v$(t,e){return Pa(t,n=>t.moveByChar(n,e))}const y$=t=>v$(t,!Us(t)),b$=t=>v$(t,Us(t));function w$(t,e){return Pa(t,n=>t.moveByGroup(n,e))}const Gue=t=>w$(t,!Us(t)),Xue=t=>w$(t,Us(t)),Yue=t=>Pa(t,e=>hb(t.state,e,!Us(t))),Kue=t=>Pa(t,e=>hb(t.state,e,Us(t)));function S$(t,e){return Pa(t,n=>t.moveVertically(n,e))}const k$=t=>S$(t,!1),O$=t=>S$(t,!0);function j$(t,e){return Pa(t,n=>t.moveVertically(n,e,g$(t).height))}const y_=t=>j$(t,!1),b_=t=>j$(t,!0),Zue=t=>Pa(t,e=>lu(t,e,!0)),Jue=t=>Pa(t,e=>lu(t,e,!1)),ede=t=>Pa(t,e=>lu(t,e,!Us(t))),tde=t=>Pa(t,e=>lu(t,e,Us(t))),nde=t=>Pa(t,e=>Ae.cursor(t.lineBlockAt(e.head).from)),rde=t=>Pa(t,e=>Ae.cursor(t.lineBlockAt(e.head).to)),w_=({state:t,dispatch:e})=>(e(to(t,{anchor:0})),!0),S_=({state:t,dispatch:e})=>(e(to(t,{anchor:t.doc.length})),!0),k_=({state:t,dispatch:e})=>(e(to(t,{anchor:t.selection.main.anchor,head:0})),!0),O_=({state:t,dispatch:e})=>(e(to(t,{anchor:t.selection.main.anchor,head:t.doc.length})),!0),sde=({state:t,dispatch:e})=>(e(t.update({selection:{anchor:0,head:t.doc.length},userEvent:"select"})),!0),ide=({state:t,dispatch:e})=>{let n=fb(t).map(({from:r,to:s})=>Ae.range(r,Math.min(s+1,t.doc.length)));return e(t.update({selection:Ae.create(n),userEvent:"select"})),!0},ade=({state:t,dispatch:e})=>{let n=jf(t.selection,r=>{let s=ws(t),i=s.resolveStack(r.from,1);if(r.empty){let a=s.resolveStack(r.from,-1);a.node.from>=i.node.from&&a.node.to<=i.node.to&&(i=a)}for(let a=i;a;a=a.next){let{node:l}=a;if((l.from=r.to||l.to>r.to&&l.from<=r.from)&&a.next)return Ae.range(l.to,l.from)}return r});return n.eq(t.selection)?!1:(e(to(t,n)),!0)};function N$(t,e){let{state:n}=t,r=n.selection,s=n.selection.ranges.slice();for(let i of n.selection.ranges){let a=n.doc.lineAt(i.head);if(e?a.to0)for(let l=i;;){let c=t.moveVertically(l,e);if(c.heada.to){s.some(d=>d.head==c.head)||s.push(c);break}else{if(c.head==l.head)break;l=c}}}return s.length==r.ranges.length?!1:(t.dispatch(to(n,Ae.create(s,s.length-1))),!0)}const ode=t=>N$(t,!1),lde=t=>N$(t,!0),cde=({state:t,dispatch:e})=>{let n=t.selection,r=null;return n.ranges.length>1?r=Ae.create([n.main]):n.main.empty||(r=Ae.create([Ae.cursor(n.main.head)])),r?(e(to(t,r)),!0):!1};function Gp(t,e){if(t.state.readOnly)return!1;let n="delete.selection",{state:r}=t,s=r.changeByRange(i=>{let{from:a,to:l}=i;if(a==l){let c=e(i);ca&&(n="delete.forward",c=p1(t,c,!0)),a=Math.min(a,c),l=Math.max(l,c)}else a=p1(t,a,!1),l=p1(t,l,!0);return a==l?{range:i}:{changes:{from:a,to:l},range:Ae.cursor(a,as(t)))r.between(e,e,(s,i)=>{se&&(e=n?i:s)});return e}const C$=(t,e,n)=>Gp(t,r=>{let s=r.from,{state:i}=t,a=i.doc.lineAt(s),l,c;if(n&&!e&&s>a.from&&sC$(t,!1,!0),T$=t=>C$(t,!0,!1),E$=(t,e)=>Gp(t,n=>{let r=n.head,{state:s}=t,i=s.doc.lineAt(r),a=s.charCategorizer(r);for(let l=null;;){if(r==(e?i.to:i.from)){r==n.head&&i.number!=(e?s.doc.lines:1)&&(r+=e?1:-1);break}let c=Ds(i.text,r-i.from,e)+i.from,d=i.text.slice(Math.min(r,c)-i.from,Math.max(r,c)-i.from),h=a(d);if(l!=null&&h!=l)break;(d!=" "||r!=n.head)&&(l=h),r=c}return r}),_$=t=>E$(t,!1),ude=t=>E$(t,!0),dde=t=>Gp(t,e=>{let n=t.lineBlockAt(e.head).to;return e.headGp(t,e=>{let n=t.moveToLineBoundary(e,!1).head;return e.head>n?n:Math.max(0,e.head-1)}),fde=t=>Gp(t,e=>{let n=t.moveToLineBoundary(e,!0).head;return e.head{if(t.readOnly)return!1;let n=t.changeByRange(r=>({changes:{from:r.from,to:r.to,insert:jn.of(["",""])},range:Ae.cursor(r.from)}));return e(t.update(n,{scrollIntoView:!0,userEvent:"input"})),!0},pde=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let n=t.changeByRange(r=>{if(!r.empty||r.from==0||r.from==t.doc.length)return{range:r};let s=r.from,i=t.doc.lineAt(s),a=s==i.from?s-1:Ds(i.text,s-i.from,!1)+i.from,l=s==i.to?s+1:Ds(i.text,s-i.from,!0)+i.from;return{changes:{from:a,to:l,insert:t.doc.slice(s,l).append(t.doc.slice(a,s))},range:Ae.cursor(l)}});return n.changes.empty?!1:(e(t.update(n,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function fb(t){let e=[],n=-1;for(let r of t.selection.ranges){let s=t.doc.lineAt(r.from),i=t.doc.lineAt(r.to);if(!r.empty&&r.to==i.from&&(i=t.doc.lineAt(r.to-1)),n>=s.number){let a=e[e.length-1];a.to=i.to,a.ranges.push(r)}else e.push({from:s.from,to:i.to,ranges:[r]});n=i.number+1}return e}function M$(t,e,n){if(t.readOnly)return!1;let r=[],s=[];for(let i of fb(t)){if(n?i.to==t.doc.length:i.from==0)continue;let a=t.doc.lineAt(n?i.to+1:i.from-1),l=a.length+1;if(n){r.push({from:i.to,to:a.to},{from:i.from,insert:a.text+t.lineBreak});for(let c of i.ranges)s.push(Ae.range(Math.min(t.doc.length,c.anchor+l),Math.min(t.doc.length,c.head+l)))}else{r.push({from:a.from,to:i.from},{from:i.to,insert:t.lineBreak+a.text});for(let c of i.ranges)s.push(Ae.range(c.anchor-l,c.head-l))}}return r.length?(e(t.update({changes:r,scrollIntoView:!0,selection:Ae.create(s,t.selection.mainIndex),userEvent:"move.line"})),!0):!1}const gde=({state:t,dispatch:e})=>M$(t,e,!1),xde=({state:t,dispatch:e})=>M$(t,e,!0);function A$(t,e,n){if(t.readOnly)return!1;let r=[];for(let s of fb(t))n?r.push({from:s.from,insert:t.doc.slice(s.from,s.to)+t.lineBreak}):r.push({from:s.to,insert:t.lineBreak+t.doc.slice(s.from,s.to)});return e(t.update({changes:r,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const vde=({state:t,dispatch:e})=>A$(t,e,!1),yde=({state:t,dispatch:e})=>A$(t,e,!0),bde=t=>{if(t.state.readOnly)return!1;let{state:e}=t,n=e.changes(fb(e).map(({from:s,to:i})=>(s>0?s--:i{let i;if(t.lineWrapping){let a=t.lineBlockAt(s.head),l=t.coordsAtPos(s.head,s.assoc||1);l&&(i=a.bottom+t.documentTop-l.bottom+t.defaultLineHeight/2)}return t.moveVertically(s,!0,i)}).map(n);return t.dispatch({changes:n,selection:r,scrollIntoView:!0,userEvent:"delete.line"}),!0};function wde(t,e){if(/\(\)|\[\]|\{\}/.test(t.sliceDoc(e-1,e+1)))return{from:e,to:e};let n=ws(t).resolveInner(e),r=n.childBefore(e),s=n.childAfter(e),i;return r&&s&&r.to<=e&&s.from>=e&&(i=r.type.prop(sn.closedBy))&&i.indexOf(s.name)>-1&&t.doc.lineAt(r.to).from==t.doc.lineAt(s.from).from&&!/\S/.test(t.sliceDoc(r.to,s.from))?{from:r.to,to:s.from}:null}const j_=R$(!1),Sde=R$(!0);function R$(t){return({state:e,dispatch:n})=>{if(e.readOnly)return!1;let r=e.changeByRange(s=>{let{from:i,to:a}=s,l=e.doc.lineAt(i),c=!t&&i==a&&wde(e,i);t&&(i=a=(a<=l.to?l:e.doc.lineAt(a)).to);let d=new ob(e,{simulateBreak:i,simulateDoubleBreak:!!c}),h=m6(d,i);for(h==null&&(h=Of(/^\s*/.exec(e.doc.lineAt(i).text)[0],e.tabSize));al.from&&i{let s=[];for(let a=r.from;a<=r.to;){let l=t.doc.lineAt(a);l.number>n&&(r.empty||r.to>l.from)&&(e(l,s,r),n=l.number),a=l.to+1}let i=t.changes(s);return{changes:s,range:Ae.range(i.mapPos(r.anchor,1),i.mapPos(r.head,1))}})}const kde=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let n=Object.create(null),r=new ob(t,{overrideIndentation:i=>{let a=n[i];return a??-1}}),s=S6(t,(i,a,l)=>{let c=m6(r,i.from);if(c==null)return;/\S/.test(i.text)||(c=0);let d=/^\s*/.exec(i.text)[0],h=W0(t,c);(d!=h||l.fromt.readOnly?!1:(e(t.update(S6(t,(n,r)=>{r.push({from:n.from,insert:t.facet(Vp)})}),{userEvent:"input.indent"})),!0),P$=({state:t,dispatch:e})=>t.readOnly?!1:(e(t.update(S6(t,(n,r)=>{let s=/^\s*/.exec(n.text)[0];if(!s)return;let i=Of(s,t.tabSize),a=0,l=W0(t,Math.max(0,i-ld(t)));for(;a(t.setTabFocusMode(),!0),jde=[{key:"Ctrl-b",run:u$,shift:y$,preventDefault:!0},{key:"Ctrl-f",run:d$,shift:b$},{key:"Ctrl-p",run:m$,shift:k$},{key:"Ctrl-n",run:p$,shift:O$},{key:"Ctrl-a",run:Que,shift:nde},{key:"Ctrl-e",run:Vue,shift:rde},{key:"Ctrl-d",run:T$},{key:"Ctrl-h",run:sO},{key:"Ctrl-k",run:dde},{key:"Ctrl-Alt-h",run:_$},{key:"Ctrl-o",run:mde},{key:"Ctrl-t",run:pde},{key:"Ctrl-v",run:rO}],Nde=[{key:"ArrowLeft",run:u$,shift:y$,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:Pue,shift:Gue,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:$ue,shift:ede,preventDefault:!0},{key:"ArrowRight",run:d$,shift:b$,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:zue,shift:Xue,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Hue,shift:tde,preventDefault:!0},{key:"ArrowUp",run:m$,shift:k$,preventDefault:!0},{mac:"Cmd-ArrowUp",run:w_,shift:k_},{mac:"Ctrl-ArrowUp",run:v_,shift:y_},{key:"ArrowDown",run:p$,shift:O$,preventDefault:!0},{mac:"Cmd-ArrowDown",run:S_,shift:O_},{mac:"Ctrl-ArrowDown",run:rO,shift:b_},{key:"PageUp",run:v_,shift:y_},{key:"PageDown",run:rO,shift:b_},{key:"Home",run:que,shift:Jue,preventDefault:!0},{key:"Mod-Home",run:w_,shift:k_},{key:"End",run:Fue,shift:Zue,preventDefault:!0},{key:"Mod-End",run:S_,shift:O_},{key:"Enter",run:j_,shift:j_},{key:"Mod-a",run:sde},{key:"Backspace",run:sO,shift:sO,preventDefault:!0},{key:"Delete",run:T$,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:_$,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:ude,preventDefault:!0},{mac:"Mod-Backspace",run:hde,preventDefault:!0},{mac:"Mod-Delete",run:fde,preventDefault:!0}].concat(jde.map(t=>({mac:t.key,run:t.run,shift:t.shift}))),Cde=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:Lue,shift:Yue},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:Bue,shift:Kue},{key:"Alt-ArrowUp",run:gde},{key:"Shift-Alt-ArrowUp",run:vde},{key:"Alt-ArrowDown",run:xde},{key:"Shift-Alt-ArrowDown",run:yde},{key:"Mod-Alt-ArrowUp",run:ode},{key:"Mod-Alt-ArrowDown",run:lde},{key:"Escape",run:cde},{key:"Mod-Enter",run:Sde},{key:"Alt-l",mac:"Ctrl-l",run:ide},{key:"Mod-i",run:ade,preventDefault:!0},{key:"Mod-[",run:P$},{key:"Mod-]",run:D$},{key:"Mod-Alt-\\",run:kde},{key:"Shift-Mod-k",run:bde},{key:"Shift-Mod-\\",run:Wue},{key:"Mod-/",run:gue},{key:"Alt-A",run:vue},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Ode}].concat(Nde),Tde={key:"Tab",run:D$,shift:P$},N_=typeof String.prototype.normalize=="function"?t=>t.normalize("NFKD"):t=>t;class rf{constructor(e,n,r=0,s=e.length,i,a){this.test=a,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(r,s),this.bufferStart=r,this.normalize=i?l=>i(N_(l)):N_,this.query=this.normalize(n)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return gi(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let n=Gj(e),r=this.bufferStart+this.bufferPos;this.bufferPos+=wo(e);let s=this.normalize(n);if(s.length)for(let i=0,a=r;;i++){let l=s.charCodeAt(i),c=this.match(l,a,this.bufferPos+this.bufferStart);if(i==s.length-1){if(c)return this.value=c,this;break}a==r&&ithis.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let n=this.matchPos<=this.to&&this.re.exec(this.curLine);if(n){let r=this.curLineStart+n.index,s=r+n[0].length;if(this.matchPos=Yv(this.text,s+(r==s?1:0)),r==this.curLineStart+this.curLine.length&&this.nextLine(),(rthis.value.to)&&(!this.test||this.test(r,s,n)))return this.value={from:r,to:s,match:n},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length=r||s.to<=n){let l=new Ih(n,e.sliceString(n,r));return G4.set(e,l),l}if(s.from==n&&s.to==r)return s;let{text:i,from:a}=s;return a>n&&(i=e.sliceString(n,a)+i,a=n),s.to=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,n=this.re.exec(this.flat.text);if(n&&!n[0]&&n.index==e&&(this.re.lastIndex=e+1,n=this.re.exec(this.flat.text)),n){let r=this.flat.from+n.index,s=r+n[0].length;if((this.flat.to>=this.to||n.index+n[0].length<=this.flat.text.length-10)&&(!this.test||this.test(r,s,n)))return this.value={from:r,to:s,match:n},this.matchPos=Yv(this.text,s+(r==s?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=Ih.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}typeof Symbol<"u"&&(I$.prototype[Symbol.iterator]=L$.prototype[Symbol.iterator]=function(){return this});function Ede(t){try{return new RegExp(t,k6),!0}catch{return!1}}function Yv(t,e){if(e>=t.length)return e;let n=t.lineAt(e),r;for(;e=56320&&r<57344;)e++;return e}function iO(t){let e=String(t.state.doc.lineAt(t.state.selection.main.head).number),n=sr("input",{class:"cm-textfield",name:"line",value:e}),r=sr("form",{class:"cm-gotoLine",onkeydown:i=>{i.keyCode==27?(i.preventDefault(),t.dispatch({effects:k0.of(!1)}),t.focus()):i.keyCode==13&&(i.preventDefault(),s())},onsubmit:i=>{i.preventDefault(),s()}},sr("label",t.state.phrase("Go to line"),": ",n)," ",sr("button",{class:"cm-button",type:"submit"},t.state.phrase("go")),sr("button",{name:"close",onclick:()=>{t.dispatch({effects:k0.of(!1)}),t.focus()},"aria-label":t.state.phrase("close"),type:"button"},["×"]));function s(){let i=/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(n.value);if(!i)return;let{state:a}=t,l=a.doc.lineAt(a.selection.main.head),[,c,d,h,m]=i,g=h?+h.slice(1):0,x=d?+d:l.number;if(d&&m){let S=x/100;c&&(S=S*(c=="-"?-1:1)+l.number/a.doc.lines),x=Math.round(a.doc.lines*S)}else d&&c&&(x=x*(c=="-"?-1:1)+l.number);let y=a.doc.line(Math.max(1,Math.min(a.doc.lines,x))),w=Ae.cursor(y.from+Math.max(0,Math.min(g,y.length)));t.dispatch({effects:[k0.of(!1),Ze.scrollIntoView(w.from,{y:"center"})],selection:w}),t.focus()}return{dom:r}}const k0=Ft.define(),C_=Os.define({create(){return!0},update(t,e){for(let n of e.effects)n.is(k0)&&(t=n.value);return t},provide:t=>H0.from(t,e=>e?iO:null)}),_de=t=>{let e=$0(t,iO);if(!e){let n=[k0.of(!0)];t.state.field(C_,!1)==null&&n.push(Ft.appendConfig.of([C_,Mde])),t.dispatch({effects:n}),e=$0(t,iO)}return e&&e.dom.querySelector("input").select(),!0},Mde=Ze.baseTheme({".cm-panel.cm-gotoLine":{padding:"2px 6px 4px",position:"relative","& label":{fontSize:"80%"},"& [name=close]":{position:"absolute",top:"0",bottom:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:"0"}}}),Ade={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},Rde=at.define({combine(t){return qo(t,Ade,{highlightWordAroundCursor:(e,n)=>e||n,minSelectionLength:Math.min,maxMatches:Math.min})}});function Dde(t){return[Bde,Lde]}const Pde=kt.mark({class:"cm-selectionMatch"}),zde=kt.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function T_(t,e,n,r){return(n==0||t(e.sliceDoc(n-1,n))!=wr.Word)&&(r==e.doc.length||t(e.sliceDoc(r,r+1))!=wr.Word)}function Ide(t,e,n,r){return t(e.sliceDoc(n,n+1))==wr.Word&&t(e.sliceDoc(r-1,r))==wr.Word}const Lde=Vr.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.selectionSet||t.docChanged||t.viewportChanged)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=t.state.facet(Rde),{state:n}=t,r=n.selection;if(r.ranges.length>1)return kt.none;let s=r.main,i,a=null;if(s.empty){if(!e.highlightWordAroundCursor)return kt.none;let c=n.wordAt(s.head);if(!c)return kt.none;a=n.charCategorizer(s.head),i=n.sliceDoc(c.from,c.to)}else{let c=s.to-s.from;if(c200)return kt.none;if(e.wholeWords){if(i=n.sliceDoc(s.from,s.to),a=n.charCategorizer(s.head),!(T_(a,n,s.from,s.to)&&Ide(a,n,s.from,s.to)))return kt.none}else if(i=n.sliceDoc(s.from,s.to),!i)return kt.none}let l=[];for(let c of t.visibleRanges){let d=new rf(n.doc,i,c.from,c.to);for(;!d.next().done;){let{from:h,to:m}=d.value;if((!a||T_(a,n,h,m))&&(s.empty&&h<=s.from&&m>=s.to?l.push(zde.range(h,m)):(h>=s.to||m<=s.from)&&l.push(Pde.range(h,m)),l.length>e.maxMatches))return kt.none}}return kt.set(l)}},{decorations:t=>t.decorations}),Bde=Ze.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),Fde=({state:t,dispatch:e})=>{let{selection:n}=t,r=Ae.create(n.ranges.map(s=>t.wordAt(s.head)||Ae.cursor(s.head)),n.mainIndex);return r.eq(n)?!1:(e(t.update({selection:r})),!0)};function qde(t,e){let{main:n,ranges:r}=t.selection,s=t.wordAt(n.head),i=s&&s.from==n.from&&s.to==n.to;for(let a=!1,l=new rf(t.doc,e,r[r.length-1].to);;)if(l.next(),l.done){if(a)return null;l=new rf(t.doc,e,0,Math.max(0,r[r.length-1].from-1)),a=!0}else{if(a&&r.some(c=>c.from==l.value.from))continue;if(i){let c=t.wordAt(l.value.from);if(!c||c.from!=l.value.from||c.to!=l.value.to)continue}return l.value}}const $de=({state:t,dispatch:e})=>{let{ranges:n}=t.selection;if(n.some(i=>i.from===i.to))return Fde({state:t,dispatch:e});let r=t.sliceDoc(n[0].from,n[0].to);if(t.selection.ranges.some(i=>t.sliceDoc(i.from,i.to)!=r))return!1;let s=qde(t,r);return s?(e(t.update({selection:t.selection.addRange(Ae.range(s.from,s.to),!1),effects:Ze.scrollIntoView(s.to)})),!0):!1},Nf=at.define({combine(t){return qo(t,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new ehe(e),scrollToMatch:e=>Ze.scrollIntoView(e)})}});class B${constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||Ede(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(n,r)=>r=="n"?` +`:r=="r"?"\r":r=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord}create(){return this.regexp?new Ude(this):new Qde(this)}getCursor(e,n=0,r){let s=e.doc?e:bn.create({doc:e});return r==null&&(r=s.doc.length),this.regexp?bh(this,s,n,r):yh(this,s,n,r)}}class F${constructor(e){this.spec=e}}function yh(t,e,n,r){return new rf(e.doc,t.unquoted,n,r,t.caseSensitive?void 0:s=>s.toLowerCase(),t.wholeWord?Hde(e.doc,e.charCategorizer(e.selection.main.head)):void 0)}function Hde(t,e){return(n,r,s,i)=>((i>n||i+s.length=n)return null;s.push(r.value)}return s}highlight(e,n,r,s){let i=yh(this.spec,e,Math.max(0,n-this.spec.unquoted.length),Math.min(r+this.spec.unquoted.length,e.doc.length));for(;!i.next().done;)s(i.value.from,i.value.to)}}function bh(t,e,n,r){return new I$(e.doc,t.search,{ignoreCase:!t.caseSensitive,test:t.wholeWord?Vde(e.charCategorizer(e.selection.main.head)):void 0},n,r)}function Kv(t,e){return t.slice(Ds(t,e,!1),e)}function Zv(t,e){return t.slice(e,Ds(t,e))}function Vde(t){return(e,n,r)=>!r[0].length||(t(Kv(r.input,r.index))!=wr.Word||t(Zv(r.input,r.index))!=wr.Word)&&(t(Zv(r.input,r.index+r[0].length))!=wr.Word||t(Kv(r.input,r.index+r[0].length))!=wr.Word)}class Ude extends F${nextMatch(e,n,r){let s=bh(this.spec,e,r,e.doc.length).next();return s.done&&(s=bh(this.spec,e,0,n).next()),s.done?null:s.value}prevMatchInRange(e,n,r){for(let s=1;;s++){let i=Math.max(n,r-s*1e4),a=bh(this.spec,e,i,r),l=null;for(;!a.next().done;)l=a.value;if(l&&(i==n||l.from>i+10))return l;if(i==n)return null}}prevMatch(e,n,r){return this.prevMatchInRange(e,0,n)||this.prevMatchInRange(e,r,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(n,r)=>{if(r=="&")return e.match[0];if(r=="$")return"$";for(let s=r.length;s>0;s--){let i=+r.slice(0,s);if(i>0&&i=n)return null;s.push(r.value)}return s}highlight(e,n,r,s){let i=bh(this.spec,e,Math.max(0,n-250),Math.min(r+250,e.doc.length));for(;!i.next().done;)s(i.value.from,i.value.to)}}const X0=Ft.define(),O6=Ft.define(),qc=Os.define({create(t){return new X4(aO(t).create(),null)},update(t,e){for(let n of e.effects)n.is(X0)?t=new X4(n.value.create(),t.panel):n.is(O6)&&(t=new X4(t.query,n.value?j6:null));return t},provide:t=>H0.from(t,e=>e.panel)});class X4{constructor(e,n){this.query=e,this.panel=n}}const Wde=kt.mark({class:"cm-searchMatch"}),Gde=kt.mark({class:"cm-searchMatch cm-searchMatch-selected"}),Xde=Vr.fromClass(class{constructor(t){this.view=t,this.decorations=this.highlight(t.state.field(qc))}update(t){let e=t.state.field(qc);(e!=t.startState.field(qc)||t.docChanged||t.selectionSet||t.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:t,panel:e}){if(!e||!t.spec.valid)return kt.none;let{view:n}=this,r=new Fl;for(let s=0,i=n.visibleRanges,a=i.length;si[s+1].from-500;)c=i[++s].to;t.highlight(n.state,l,c,(d,h)=>{let m=n.state.selection.ranges.some(g=>g.from==d&&g.to==h);r.add(d,h,m?Gde:Wde)})}return r.finish()}},{decorations:t=>t.decorations});function Xp(t){return e=>{let n=e.state.field(qc,!1);return n&&n.query.spec.valid?t(e,n):H$(e)}}const Jv=Xp((t,{query:e})=>{let{to:n}=t.state.selection.main,r=e.nextMatch(t.state,n,n);if(!r)return!1;let s=Ae.single(r.from,r.to),i=t.state.facet(Nf);return t.dispatch({selection:s,effects:[N6(t,r),i.scrollToMatch(s.main,t)],userEvent:"select.search"}),$$(t),!0}),ey=Xp((t,{query:e})=>{let{state:n}=t,{from:r}=n.selection.main,s=e.prevMatch(n,r,r);if(!s)return!1;let i=Ae.single(s.from,s.to),a=t.state.facet(Nf);return t.dispatch({selection:i,effects:[N6(t,s),a.scrollToMatch(i.main,t)],userEvent:"select.search"}),$$(t),!0}),Yde=Xp((t,{query:e})=>{let n=e.matchAll(t.state,1e3);return!n||!n.length?!1:(t.dispatch({selection:Ae.create(n.map(r=>Ae.range(r.from,r.to))),userEvent:"select.search.matches"}),!0)}),Kde=({state:t,dispatch:e})=>{let n=t.selection;if(n.ranges.length>1||n.main.empty)return!1;let{from:r,to:s}=n.main,i=[],a=0;for(let l=new rf(t.doc,t.sliceDoc(r,s));!l.next().done;){if(i.length>1e3)return!1;l.value.from==r&&(a=i.length),i.push(Ae.range(l.value.from,l.value.to))}return e(t.update({selection:Ae.create(i,a),userEvent:"select.search.matches"})),!0},E_=Xp((t,{query:e})=>{let{state:n}=t,{from:r,to:s}=n.selection.main;if(n.readOnly)return!1;let i=e.nextMatch(n,r,r);if(!i)return!1;let a=i,l=[],c,d,h=[];a.from==r&&a.to==s&&(d=n.toText(e.getReplacement(a)),l.push({from:a.from,to:a.to,insert:d}),a=e.nextMatch(n,a.from,a.to),h.push(Ze.announce.of(n.phrase("replaced match on line $",n.doc.lineAt(r).number)+".")));let m=t.state.changes(l);return a&&(c=Ae.single(a.from,a.to).map(m),h.push(N6(t,a)),h.push(n.facet(Nf).scrollToMatch(c.main,t))),t.dispatch({changes:m,selection:c,effects:h,userEvent:"input.replace"}),!0}),Zde=Xp((t,{query:e})=>{if(t.state.readOnly)return!1;let n=e.matchAll(t.state,1e9).map(s=>{let{from:i,to:a}=s;return{from:i,to:a,insert:e.getReplacement(s)}});if(!n.length)return!1;let r=t.state.phrase("replaced $ matches",n.length)+".";return t.dispatch({changes:n,effects:Ze.announce.of(r),userEvent:"input.replace.all"}),!0});function j6(t){return t.state.facet(Nf).createPanel(t)}function aO(t,e){var n,r,s,i,a;let l=t.selection.main,c=l.empty||l.to>l.from+100?"":t.sliceDoc(l.from,l.to);if(e&&!c)return e;let d=t.facet(Nf);return new B$({search:((n=e?.literal)!==null&&n!==void 0?n:d.literal)?c:c.replace(/\n/g,"\\n"),caseSensitive:(r=e?.caseSensitive)!==null&&r!==void 0?r:d.caseSensitive,literal:(s=e?.literal)!==null&&s!==void 0?s:d.literal,regexp:(i=e?.regexp)!==null&&i!==void 0?i:d.regexp,wholeWord:(a=e?.wholeWord)!==null&&a!==void 0?a:d.wholeWord})}function q$(t){let e=$0(t,j6);return e&&e.dom.querySelector("[main-field]")}function $$(t){let e=q$(t);e&&e==t.root.activeElement&&e.select()}const H$=t=>{let e=t.state.field(qc,!1);if(e&&e.panel){let n=q$(t);if(n&&n!=t.root.activeElement){let r=aO(t.state,e.query.spec);r.valid&&t.dispatch({effects:X0.of(r)}),n.focus(),n.select()}}else t.dispatch({effects:[O6.of(!0),e?X0.of(aO(t.state,e.query.spec)):Ft.appendConfig.of(nhe)]});return!0},Q$=t=>{let e=t.state.field(qc,!1);if(!e||!e.panel)return!1;let n=$0(t,j6);return n&&n.dom.contains(t.root.activeElement)&&t.focus(),t.dispatch({effects:O6.of(!1)}),!0},Jde=[{key:"Mod-f",run:H$,scope:"editor search-panel"},{key:"F3",run:Jv,shift:ey,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:Jv,shift:ey,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:Q$,scope:"editor search-panel"},{key:"Mod-Shift-l",run:Kde},{key:"Mod-Alt-g",run:_de},{key:"Mod-d",run:$de,preventDefault:!0}];class ehe{constructor(e){this.view=e;let n=this.query=e.state.field(qc).query.spec;this.commit=this.commit.bind(this),this.searchField=sr("input",{value:n.search,placeholder:Li(e,"Find"),"aria-label":Li(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=sr("input",{value:n.replace,placeholder:Li(e,"Replace"),"aria-label":Li(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=sr("input",{type:"checkbox",name:"case",form:"",checked:n.caseSensitive,onchange:this.commit}),this.reField=sr("input",{type:"checkbox",name:"re",form:"",checked:n.regexp,onchange:this.commit}),this.wordField=sr("input",{type:"checkbox",name:"word",form:"",checked:n.wholeWord,onchange:this.commit});function r(s,i,a){return sr("button",{class:"cm-button",name:s,onclick:i,type:"button"},a)}this.dom=sr("div",{onkeydown:s=>this.keydown(s),class:"cm-search"},[this.searchField,r("next",()=>Jv(e),[Li(e,"next")]),r("prev",()=>ey(e),[Li(e,"previous")]),r("select",()=>Yde(e),[Li(e,"all")]),sr("label",null,[this.caseField,Li(e,"match case")]),sr("label",null,[this.reField,Li(e,"regexp")]),sr("label",null,[this.wordField,Li(e,"by word")]),...e.state.readOnly?[]:[sr("br"),this.replaceField,r("replace",()=>E_(e),[Li(e,"replace")]),r("replaceAll",()=>Zde(e),[Li(e,"replace all")])],sr("button",{name:"close",onclick:()=>Q$(e),"aria-label":Li(e,"close"),type:"button"},["×"])])}commit(){let e=new B$({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:X0.of(e)}))}keydown(e){ile(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?ey:Jv)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),E_(this.view))}update(e){for(let n of e.transactions)for(let r of n.effects)r.is(X0)&&!r.value.eq(this.query)&&this.setQuery(r.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(Nf).top}}function Li(t,e){return t.state.phrase(e)}const g1=30,x1=/[\s\.,:;?!]/;function N6(t,{from:e,to:n}){let r=t.state.doc.lineAt(e),s=t.state.doc.lineAt(n).to,i=Math.max(r.from,e-g1),a=Math.min(s,n+g1),l=t.state.sliceDoc(i,a);if(i!=r.from){for(let c=0;cl.length-g1;c--)if(!x1.test(l[c-1])&&x1.test(l[c])){l=l.slice(0,c);break}}return Ze.announce.of(`${t.state.phrase("current match")}. ${l} ${t.state.phrase("on line")} ${r.number}.`)}const the=Ze.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),nhe=[qc,ou.low(Xde),the];class V${constructor(e,n,r,s){this.state=e,this.pos=n,this.explicit=r,this.view=s,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let n=ws(this.state).resolveInner(this.pos,-1);for(;n&&e.indexOf(n.name)<0;)n=n.parent;return n?{from:n.from,to:this.pos,text:this.state.sliceDoc(n.from,this.pos),type:n.type}:null}matchBefore(e){let n=this.state.doc.lineAt(this.pos),r=Math.max(n.from,this.pos-250),s=n.text.slice(r-n.from,this.pos-n.from),i=s.search(W$(e,!1));return i<0?null:{from:r+i,to:this.pos,text:s.slice(i)}}get aborted(){return this.abortListeners==null}addEventListener(e,n,r){e=="abort"&&this.abortListeners&&(this.abortListeners.push(n),r&&r.onDocChange&&(this.abortOnDocChange=!0))}}function __(t){let e=Object.keys(t).join(""),n=/\w/.test(e);return n&&(e=e.replace(/\w/g,"")),`[${n?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function rhe(t){let e=Object.create(null),n=Object.create(null);for(let{label:s}of t){e[s[0]]=!0;for(let i=1;itypeof s=="string"?{label:s}:s),[n,r]=e.every(s=>/^\w+$/.test(s.label))?[/\w*$/,/\w+$/]:rhe(e);return s=>{let i=s.matchBefore(r);return i||s.explicit?{from:i?i.from:s.pos,options:e,validFor:n}:null}}function she(t,e){return n=>{for(let r=ws(n.state).resolveInner(n.pos,-1);r;r=r.parent){if(t.indexOf(r.name)>-1)return null;if(r.type.isTop)break}return e(n)}}let M_=class{constructor(e,n,r,s){this.completion=e,this.source=n,this.match=r,this.score=s}};function ed(t){return t.selection.main.from}function W$(t,e){var n;let{source:r}=t,s=e&&r[0]!="^",i=r[r.length-1]!="$";return!s&&!i?t:new RegExp(`${s?"^":""}(?:${r})${i?"$":""}`,(n=t.flags)!==null&&n!==void 0?n:t.ignoreCase?"i":"")}const C6=Fo.define();function ihe(t,e,n,r){let{main:s}=t.selection,i=n-s.from,a=r-s.from;return{...t.changeByRange(l=>{if(l!=s&&n!=r&&t.sliceDoc(l.from+i,l.from+a)!=t.sliceDoc(n,r))return{range:l};let c=t.toText(e);return{changes:{from:l.from+i,to:r==s.from?l.to:l.from+a,insert:c},range:Ae.cursor(l.from+i+c.length)}}),scrollIntoView:!0,userEvent:"input.complete"}}const A_=new WeakMap;function ahe(t){if(!Array.isArray(t))return t;let e=A_.get(t);return e||A_.set(t,e=U$(t)),e}const ty=Ft.define(),Y0=Ft.define();class ohe{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let n=0;n=48&&E<=57||E>=97&&E<=122?2:E>=65&&E<=90?1:0:(_=Gj(E))!=_.toLowerCase()?1:_!=_.toUpperCase()?2:0;(!j||M==1&&S||T==0&&M!=0)&&(n[m]==E||r[m]==E&&(g=!0)?a[m++]=j:a.length&&(k=!1)),T=M,j+=wo(E)}return m==c&&a[0]==0&&k?this.result(-100+(g?-200:0),a,e):x==c&&y==0?this.ret(-200-e.length+(w==e.length?0:-100),[0,w]):l>-1?this.ret(-700-e.length,[l,l+this.pattern.length]):x==c?this.ret(-900-e.length,[y,w]):m==c?this.result(-100+(g?-200:0)+-700+(k?0:-1100),a,e):n.length==2?null:this.result((s[0]?-700:0)+-200+-1100,s,e)}result(e,n,r){let s=[],i=0;for(let a of n){let l=a+(this.astral?wo(gi(r,a)):1);i&&s[i-1]==a?s[i-1]=l:(s[i++]=a,s[i++]=l)}return this.ret(e-r.length,s)}}class lhe{constructor(e){this.pattern=e,this.matched=[],this.score=0,this.folded=e.toLowerCase()}match(e){if(e.length!1,activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:()=>"",optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:che,filterStrict:!1,compareCompletions:(e,n)=>e.label.localeCompare(n.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(e,n)=>e&&n,closeOnBlur:(e,n)=>e&&n,icons:(e,n)=>e&&n,tooltipClass:(e,n)=>r=>R_(e(r),n(r)),optionClass:(e,n)=>r=>R_(e(r),n(r)),addToOptions:(e,n)=>e.concat(n),filterStrict:(e,n)=>e||n})}});function R_(t,e){return t?e?t+" "+e:t:e}function che(t,e,n,r,s,i){let a=t.textDirection==gr.RTL,l=a,c=!1,d="top",h,m,g=e.left-s.left,x=s.right-e.right,y=r.right-r.left,w=r.bottom-r.top;if(l&&g=w||j>e.top?h=n.bottom-e.top:(d="bottom",h=e.bottom-n.top)}let S=(e.bottom-e.top)/i.offsetHeight,k=(e.right-e.left)/i.offsetWidth;return{style:`${d}: ${h/S}px; max-width: ${m/k}px`,class:"cm-completionInfo-"+(c?a?"left-narrow":"right-narrow":l?"left":"right")}}function uhe(t){let e=t.addToOptions.slice();return t.icons&&e.push({render(n){let r=document.createElement("div");return r.classList.add("cm-completionIcon"),n.type&&r.classList.add(...n.type.split(/\s+/g).map(s=>"cm-completionIcon-"+s)),r.setAttribute("aria-hidden","true"),r},position:20}),e.push({render(n,r,s,i){let a=document.createElement("span");a.className="cm-completionLabel";let l=n.displayLabel||n.label,c=0;for(let d=0;dc&&a.appendChild(document.createTextNode(l.slice(c,h)));let g=a.appendChild(document.createElement("span"));g.appendChild(document.createTextNode(l.slice(h,m))),g.className="cm-completionMatchedText",c=m}return cn.position-r.position).map(n=>n.render)}function Y4(t,e,n){if(t<=n)return{from:0,to:t};if(e<0&&(e=0),e<=t>>1){let s=Math.floor(e/n);return{from:s*n,to:(s+1)*n}}let r=Math.floor((t-e)/n);return{from:t-(r+1)*n,to:t-r*n}}class dhe{constructor(e,n,r){this.view=e,this.stateField=n,this.applyCompletion=r,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:()=>this.measureInfo(),write:c=>this.placeInfo(c),key:this},this.space=null,this.currentClass="";let s=e.state.field(n),{options:i,selected:a}=s.open,l=e.state.facet(ys);this.optionContent=uhe(l),this.optionClass=l.optionClass,this.tooltipClass=l.tooltipClass,this.range=Y4(i.length,a,l.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.updateTooltipClass(e.state),this.dom.addEventListener("mousedown",c=>{let{options:d}=e.state.field(n).open;for(let h=c.target,m;h&&h!=this.dom;h=h.parentNode)if(h.nodeName=="LI"&&(m=/-(\d+)$/.exec(h.id))&&+m[1]{let d=e.state.field(this.stateField,!1);d&&d.tooltip&&e.state.facet(ys).closeOnBlur&&c.relatedTarget!=e.contentDOM&&e.dispatch({effects:Y0.of(null)})}),this.showOptions(i,s.id)}mount(){this.updateSel()}showOptions(e,n){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(e,n,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(e){var n;let r=e.state.field(this.stateField),s=e.startState.field(this.stateField);if(this.updateTooltipClass(e.state),r!=s){let{options:i,selected:a,disabled:l}=r.open;(!s.open||s.open.options!=i)&&(this.range=Y4(i.length,a,e.state.facet(ys).maxRenderedOptions),this.showOptions(i,r.id)),this.updateSel(),l!=((n=s.open)===null||n===void 0?void 0:n.disabled)&&this.dom.classList.toggle("cm-tooltip-autocomplete-disabled",!!l)}}updateTooltipClass(e){let n=this.tooltipClass(e);if(n!=this.currentClass){for(let r of this.currentClass.split(" "))r&&this.dom.classList.remove(r);for(let r of n.split(" "))r&&this.dom.classList.add(r);this.currentClass=n}}positioned(e){this.space=e,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let e=this.view.state.field(this.stateField),n=e.open;(n.selected>-1&&n.selected=this.range.to)&&(this.range=Y4(n.options.length,n.selected,this.view.state.facet(ys).maxRenderedOptions),this.showOptions(n.options,e.id));let r=this.updateSelectedOption(n.selected);if(r){this.destroyInfo();let{completion:s}=n.options[n.selected],{info:i}=s;if(!i)return;let a=typeof i=="string"?document.createTextNode(i):i(s);if(!a)return;"then"in a?a.then(l=>{l&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(l,s)}).catch(l=>vi(this.view.state,l,"completion info")):(this.addInfoPane(a,s),r.setAttribute("aria-describedby",this.info.id))}}addInfoPane(e,n){this.destroyInfo();let r=this.info=document.createElement("div");if(r.className="cm-tooltip cm-completionInfo",r.id="cm-completionInfo-"+Math.floor(Math.random()*65535).toString(16),e.nodeType!=null)r.appendChild(e),this.infoDestroy=null;else{let{dom:s,destroy:i}=e;r.appendChild(s),this.infoDestroy=i||null}this.dom.appendChild(r),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(e){let n=null;for(let r=this.list.firstChild,s=this.range.from;r;r=r.nextSibling,s++)r.nodeName!="LI"||!r.id?s--:s==e?r.hasAttribute("aria-selected")||(r.setAttribute("aria-selected","true"),n=r):r.hasAttribute("aria-selected")&&(r.removeAttribute("aria-selected"),r.removeAttribute("aria-describedby"));return n&&fhe(this.list,n),n}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let n=this.dom.getBoundingClientRect(),r=this.info.getBoundingClientRect(),s=e.getBoundingClientRect(),i=this.space;if(!i){let a=this.dom.ownerDocument.documentElement;i={left:0,top:0,right:a.clientWidth,bottom:a.clientHeight}}return s.top>Math.min(i.bottom,n.bottom)-10||s.bottom{a.target==s&&a.preventDefault()});let i=null;for(let a=r.from;ar.from||r.from==0))if(i=g,typeof d!="string"&&d.header)s.appendChild(d.header(d));else{let x=s.appendChild(document.createElement("completion-section"));x.textContent=g}}const h=s.appendChild(document.createElement("li"));h.id=n+"-"+a,h.setAttribute("role","option");let m=this.optionClass(l);m&&(h.className=m);for(let g of this.optionContent){let x=g(l,this.view.state,this.view,c);x&&h.appendChild(x)}}return r.from&&s.classList.add("cm-completionListIncompleteTop"),r.tonew dhe(n,t,e)}function fhe(t,e){let n=t.getBoundingClientRect(),r=e.getBoundingClientRect(),s=n.height/t.offsetHeight;r.topn.bottom&&(t.scrollTop+=(r.bottom-n.bottom)/s)}function D_(t){return(t.boost||0)*100+(t.apply?10:0)+(t.info?5:0)+(t.type?1:0)}function mhe(t,e){let n=[],r=null,s=null,i=h=>{n.push(h);let{section:m}=h.completion;if(m){r||(r=[]);let g=typeof m=="string"?m:m.name;r.some(x=>x.name==g)||r.push(typeof m=="string"?{name:g}:m)}},a=e.facet(ys);for(let h of t)if(h.hasResult()){let m=h.result.getMatch;if(h.result.filter===!1)for(let g of h.result.options)i(new M_(g,h.source,m?m(g):[],1e9-n.length));else{let g=e.sliceDoc(h.from,h.to),x,y=a.filterStrict?new lhe(g):new ohe(g);for(let w of h.result.options)if(x=y.match(w.label)){let S=w.displayLabel?m?m(w,x.matched):[]:x.matched,k=x.score+(w.boost||0);if(i(new M_(w,h.source,S,k)),typeof w.section=="object"&&w.section.rank==="dynamic"){let{name:j}=w.section;s||(s=Object.create(null)),s[j]=Math.max(k,s[j]||-1e9)}}}}if(r){let h=Object.create(null),m=0,g=(x,y)=>(x.rank==="dynamic"&&y.rank==="dynamic"?s[y.name]-s[x.name]:0)||(typeof x.rank=="number"?x.rank:1e9)-(typeof y.rank=="number"?y.rank:1e9)||(x.nameg.score-m.score||d(m.completion,g.completion))){let m=h.completion;!c||c.label!=m.label||c.detail!=m.detail||c.type!=null&&m.type!=null&&c.type!=m.type||c.apply!=m.apply||c.boost!=m.boost?l.push(h):D_(h.completion)>D_(c)&&(l[l.length-1]=h),c=h.completion}return l}class Th{constructor(e,n,r,s,i,a){this.options=e,this.attrs=n,this.tooltip=r,this.timestamp=s,this.selected=i,this.disabled=a}setSelected(e,n){return e==this.selected||e>=this.options.length?this:new Th(this.options,P_(n,e),this.tooltip,this.timestamp,e,this.disabled)}static build(e,n,r,s,i,a){if(s&&!a&&e.some(d=>d.isPending))return s.setDisabled();let l=mhe(e,n);if(!l.length)return s&&e.some(d=>d.isPending)?s.setDisabled():null;let c=n.facet(ys).selectOnOpen?0:-1;if(s&&s.selected!=c&&s.selected!=-1){let d=s.options[s.selected].completion;for(let h=0;hh.hasResult()?Math.min(d,h.from):d,1e8),create:bhe,above:i.aboveCursor},s?s.timestamp:Date.now(),c,!1)}map(e){return new Th(this.options,this.attrs,{...this.tooltip,pos:e.mapPos(this.tooltip.pos)},this.timestamp,this.selected,this.disabled)}setDisabled(){return new Th(this.options,this.attrs,this.tooltip,this.timestamp,this.selected,!0)}}class ny{constructor(e,n,r){this.active=e,this.id=n,this.open=r}static start(){return new ny(vhe,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:n}=e,r=n.facet(ys),i=(r.override||n.languageDataAt("autocomplete",ed(n)).map(ahe)).map(c=>(this.active.find(h=>h.source==c)||new ba(c,this.active.some(h=>h.state!=0)?1:0)).update(e,r));i.length==this.active.length&&i.every((c,d)=>c==this.active[d])&&(i=this.active);let a=this.open,l=e.effects.some(c=>c.is(T6));a&&e.docChanged&&(a=a.map(e.changes)),e.selection||i.some(c=>c.hasResult()&&e.changes.touchesRange(c.from,c.to))||!phe(i,this.active)||l?a=Th.build(i,n,this.id,a,r,l):a&&a.disabled&&!i.some(c=>c.isPending)&&(a=null),!a&&i.every(c=>!c.isPending)&&i.some(c=>c.hasResult())&&(i=i.map(c=>c.hasResult()?new ba(c.source,0):c));for(let c of e.effects)c.is(X$)&&(a=a&&a.setSelected(c.value,this.id));return i==this.active&&a==this.open?this:new ny(i,this.id,a)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?ghe:xhe}}function phe(t,e){if(t==e)return!0;for(let n=0,r=0;;){for(;n-1&&(n["aria-activedescendant"]=t+"-"+e),n}const vhe=[];function G$(t,e){if(t.isUserEvent("input.complete")){let r=t.annotation(C6);if(r&&e.activateOnCompletion(r))return 12}let n=t.isUserEvent("input.type");return n&&e.activateOnTyping?5:n?1:t.isUserEvent("delete.backward")?2:t.selection?8:t.docChanged?16:0}class ba{constructor(e,n,r=!1){this.source=e,this.state=n,this.explicit=r}hasResult(){return!1}get isPending(){return this.state==1}update(e,n){let r=G$(e,n),s=this;(r&8||r&16&&this.touches(e))&&(s=new ba(s.source,0)),r&4&&s.state==0&&(s=new ba(this.source,1)),s=s.updateFor(e,r);for(let i of e.effects)if(i.is(ty))s=new ba(s.source,1,i.value);else if(i.is(Y0))s=new ba(s.source,0);else if(i.is(T6))for(let a of i.value)a.source==s.source&&(s=a);return s}updateFor(e,n){return this.map(e.changes)}map(e){return this}touches(e){return e.changes.touchesRange(ed(e.state))}}class Lh extends ba{constructor(e,n,r,s,i,a){super(e,3,n),this.limit=r,this.result=s,this.from=i,this.to=a}hasResult(){return!0}updateFor(e,n){var r;if(!(n&3))return this.map(e.changes);let s=this.result;s.map&&!e.changes.empty&&(s=s.map(s,e.changes));let i=e.changes.mapPos(this.from),a=e.changes.mapPos(this.to,1),l=ed(e.state);if(l>a||!s||n&2&&(ed(e.startState)==this.from||ln.map(e))}}),X$=Ft.define(),xi=Os.define({create(){return ny.start()},update(t,e){return t.update(e)},provide:t=>[l6.from(t,e=>e.tooltip),Ze.contentAttributes.from(t,e=>e.attrs)]});function E6(t,e){const n=e.completion.apply||e.completion.label;let r=t.state.field(xi).active.find(s=>s.source==e.source);return r instanceof Lh?(typeof n=="string"?t.dispatch({...ihe(t.state,n,r.from,r.to),annotations:C6.of(e.completion)}):n(t,e.completion,r.from,r.to),!0):!1}const bhe=hhe(xi,E6);function v1(t,e="option"){return n=>{let r=n.state.field(xi,!1);if(!r||!r.open||r.open.disabled||Date.now()-r.open.timestamp-1?r.open.selected+s*(t?1:-1):t?0:a-1;return l<0?l=e=="page"?0:a-1:l>=a&&(l=e=="page"?a-1:0),n.dispatch({effects:X$.of(l)}),!0}}const whe=t=>{let e=t.state.field(xi,!1);return t.state.readOnly||!e||!e.open||e.open.selected<0||e.open.disabled||Date.now()-e.open.timestampt.state.field(xi,!1)?(t.dispatch({effects:ty.of(!0)}),!0):!1,She=t=>{let e=t.state.field(xi,!1);return!e||!e.active.some(n=>n.state!=0)?!1:(t.dispatch({effects:Y0.of(null)}),!0)};class khe{constructor(e,n){this.active=e,this.context=n,this.time=Date.now(),this.updates=[],this.done=void 0}}const Ohe=50,jhe=1e3,Nhe=Vr.fromClass(class{constructor(t){this.view=t,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(let e of t.state.field(xi).active)e.isPending&&this.startQuery(e)}update(t){let e=t.state.field(xi),n=t.state.facet(ys);if(!t.selectionSet&&!t.docChanged&&t.startState.field(xi)==e)return;let r=t.transactions.some(i=>{let a=G$(i,n);return a&8||(i.selection||i.docChanged)&&!(a&3)});for(let i=0;iOhe&&Date.now()-a.time>jhe){for(let l of a.context.abortListeners)try{l()}catch(c){vi(this.view.state,c)}a.context.abortListeners=null,this.running.splice(i--,1)}else a.updates.push(...t.transactions)}this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),t.transactions.some(i=>i.effects.some(a=>a.is(ty)))&&(this.pendingStart=!0);let s=this.pendingStart?50:n.activateOnTypingDelay;if(this.debounceUpdate=e.active.some(i=>i.isPending&&!this.running.some(a=>a.active.source==i.source))?setTimeout(()=>this.startUpdate(),s):-1,this.composing!=0)for(let i of t.transactions)i.isUserEvent("input.type")?this.composing=2:this.composing==2&&i.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;let{state:t}=this.view,e=t.field(xi);for(let n of e.active)n.isPending&&!this.running.some(r=>r.active.source==n.source)&&this.startQuery(n);this.running.length&&e.open&&e.open.disabled&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(ys).updateSyncTime))}startQuery(t){let{state:e}=this.view,n=ed(e),r=new V$(e,n,t.explicit,this.view),s=new khe(t,r);this.running.push(s),Promise.resolve(t.source(r)).then(i=>{s.context.aborted||(s.done=i||null,this.scheduleAccept())},i=>{this.view.dispatch({effects:Y0.of(null)}),vi(this.view.state,i)})}scheduleAccept(){this.running.every(t=>t.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(ys).updateSyncTime))}accept(){var t;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],n=this.view.state.facet(ys),r=this.view.state.field(xi);for(let s=0;sl.source==i.active.source);if(a&&a.isPending)if(i.done==null){let l=new ba(i.active.source,0);for(let c of i.updates)l=l.update(c,n);l.isPending||e.push(l)}else this.startQuery(a)}(e.length||r.open&&r.open.disabled)&&this.view.dispatch({effects:T6.of(e)})}},{eventHandlers:{blur(t){let e=this.view.state.field(xi,!1);if(e&&e.tooltip&&this.view.state.facet(ys).closeOnBlur){let n=e.open&&kq(this.view,e.open.tooltip);(!n||!n.dom.contains(t.relatedTarget))&&setTimeout(()=>this.view.dispatch({effects:Y0.of(null)}),10)}},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:ty.of(!1)}),20),this.composing=0}}}),Che=typeof navigator=="object"&&/Win/.test(navigator.platform),The=ou.highest(Ze.domEventHandlers({keydown(t,e){let n=e.state.field(xi,!1);if(!n||!n.open||n.open.disabled||n.open.selected<0||t.key.length>1||t.ctrlKey&&!(Che&&t.altKey)||t.metaKey)return!1;let r=n.open.options[n.open.selected],s=n.active.find(a=>a.source==r.source),i=r.completion.commitCharacters||s.result.commitCharacters;return i&&i.indexOf(t.key)>-1&&E6(e,r),!1}})),Y$=Ze.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li, & > completion-section":{padding:"1px 3px",lineHeight:1.2},"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer"},"& > completion-section":{display:"list-item",borderBottom:"1px solid silver",paddingLeft:"0.5em",opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"···"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"400px",boxSizing:"border-box",whiteSpace:"pre-line"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:"30px"},".cm-completionInfo.cm-completionInfo-right-narrow":{left:"30px"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'ƒ'"}},".cm-completionIcon-class":{"&:after":{content:"'○'"}},".cm-completionIcon-interface":{"&:after":{content:"'◌'"}},".cm-completionIcon-variable":{"&:after":{content:"'𝑥'"}},".cm-completionIcon-constant":{"&:after":{content:"'𝐶'"}},".cm-completionIcon-type":{"&:after":{content:"'𝑡'"}},".cm-completionIcon-enum":{"&:after":{content:"'∪'"}},".cm-completionIcon-property":{"&:after":{content:"'□'"}},".cm-completionIcon-keyword":{"&:after":{content:"'🔑︎'"}},".cm-completionIcon-namespace":{"&:after":{content:"'▢'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class Ehe{constructor(e,n,r,s){this.field=e,this.line=n,this.from=r,this.to=s}}class _6{constructor(e,n,r){this.field=e,this.from=n,this.to=r}map(e){let n=e.mapPos(this.from,-1,Rs.TrackDel),r=e.mapPos(this.to,1,Rs.TrackDel);return n==null||r==null?null:new _6(this.field,n,r)}}class M6{constructor(e,n){this.lines=e,this.fieldPositions=n}instantiate(e,n){let r=[],s=[n],i=e.doc.lineAt(n),a=/^\s*/.exec(i.text)[0];for(let c of this.lines){if(r.length){let d=a,h=/^\t*/.exec(c)[0].length;for(let m=0;mnew _6(c.field,s[c.line]+c.from,s[c.line]+c.to));return{text:r,ranges:l}}static parse(e){let n=[],r=[],s=[],i;for(let a of e.split(/\r\n?|\n/)){for(;i=/[#$]\{(?:(\d+)(?::([^{}]*))?|((?:\\[{}]|[^{}])*))\}/.exec(a);){let l=i[1]?+i[1]:null,c=i[2]||i[3]||"",d=-1,h=c.replace(/\\[{}]/g,m=>m[1]);for(let m=0;m=d&&g.field++}for(let m of s)if(m.line==r.length&&m.from>i.index){let g=i[2]?3+(i[1]||"").length:2;m.from-=g,m.to-=g}s.push(new Ehe(d,r.length,i.index,i.index+h.length)),a=a.slice(0,i.index)+c+a.slice(i.index+i[0].length)}a=a.replace(/\\([{}])/g,(l,c,d)=>{for(let h of s)h.line==r.length&&h.from>d&&(h.from--,h.to--);return c}),r.push(a)}return new M6(r,s)}}let _he=kt.widget({widget:new class extends $o{toDOM(){let t=document.createElement("span");return t.className="cm-snippetFieldPosition",t}ignoreEvent(){return!1}}}),Mhe=kt.mark({class:"cm-snippetField"});class Cf{constructor(e,n){this.ranges=e,this.active=n,this.deco=kt.set(e.map(r=>(r.from==r.to?_he:Mhe).range(r.from,r.to)),!0)}map(e){let n=[];for(let r of this.ranges){let s=r.map(e);if(!s)return null;n.push(s)}return new Cf(n,this.active)}selectionInsideField(e){return e.ranges.every(n=>this.ranges.some(r=>r.field==this.active&&r.from<=n.from&&r.to>=n.to))}}const Yp=Ft.define({map(t,e){return t&&t.map(e)}}),Ahe=Ft.define(),K0=Os.define({create(){return null},update(t,e){for(let n of e.effects){if(n.is(Yp))return n.value;if(n.is(Ahe)&&t)return new Cf(t.ranges,n.value)}return t&&e.docChanged&&(t=t.map(e.changes)),t&&e.selection&&!t.selectionInsideField(e.selection)&&(t=null),t},provide:t=>Ze.decorations.from(t,e=>e?e.deco:kt.none)});function A6(t,e){return Ae.create(t.filter(n=>n.field==e).map(n=>Ae.range(n.from,n.to)))}function Rhe(t){let e=M6.parse(t);return(n,r,s,i)=>{let{text:a,ranges:l}=e.instantiate(n.state,s),{main:c}=n.state.selection,d={changes:{from:s,to:i==c.from?c.to:i,insert:jn.of(a)},scrollIntoView:!0,annotations:r?[C6.of(r),ns.userEvent.of("input.complete")]:void 0};if(l.length&&(d.selection=A6(l,0)),l.some(h=>h.field>0)){let h=new Cf(l,0),m=d.effects=[Yp.of(h)];n.state.field(K0,!1)===void 0&&m.push(Ft.appendConfig.of([K0,Lhe,Bhe,Y$]))}n.dispatch(n.state.update(d))}}function K$(t){return({state:e,dispatch:n})=>{let r=e.field(K0,!1);if(!r||t<0&&r.active==0)return!1;let s=r.active+t,i=t>0&&!r.ranges.some(a=>a.field==s+t);return n(e.update({selection:A6(r.ranges,s),effects:Yp.of(i?null:new Cf(r.ranges,s)),scrollIntoView:!0})),!0}}const Dhe=({state:t,dispatch:e})=>t.field(K0,!1)?(e(t.update({effects:Yp.of(null)})),!0):!1,Phe=K$(1),zhe=K$(-1),Ihe=[{key:"Tab",run:Phe,shift:zhe},{key:"Escape",run:Dhe}],z_=at.define({combine(t){return t.length?t[0]:Ihe}}),Lhe=ou.highest(Hp.compute([z_],t=>t.facet(z_)));function xl(t,e){return{...e,apply:Rhe(t)}}const Bhe=Ze.domEventHandlers({mousedown(t,e){let n=e.state.field(K0,!1),r;if(!n||(r=e.posAtCoords({x:t.clientX,y:t.clientY}))==null)return!1;let s=n.ranges.find(i=>i.from<=r&&i.to>=r);return!s||s.field==n.active?!1:(e.dispatch({selection:A6(n.ranges,s.field),effects:Yp.of(n.ranges.some(i=>i.field>s.field)?new Cf(n.ranges,s.field):null),scrollIntoView:!0}),!0)}}),Z0={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},Vu=Ft.define({map(t,e){let n=e.mapPos(t,-1,Rs.TrackAfter);return n??void 0}}),R6=new class extends sd{};R6.startSide=1;R6.endSide=-1;const Z$=Os.define({create(){return Rn.empty},update(t,e){if(t=t.map(e.changes),e.selection){let n=e.state.doc.lineAt(e.selection.main.head);t=t.update({filter:r=>r>=n.from&&r<=n.to})}for(let n of e.effects)n.is(Vu)&&(t=t.update({add:[R6.range(n.value,n.value+1)]}));return t}});function Fhe(){return[$he,Z$]}const Z4="()[]{}<>«»»«[]{}";function J$(t){for(let e=0;e{if((qhe?t.composing:t.compositionStarted)||t.state.readOnly)return!1;let s=t.state.selection.main;if(r.length>2||r.length==2&&wo(gi(r,0))==1||e!=s.from||n!=s.to)return!1;let i=Vhe(t.state,r);return i?(t.dispatch(i),!0):!1}),Hhe=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let r=eH(t,t.selection.main.head).brackets||Z0.brackets,s=null,i=t.changeByRange(a=>{if(a.empty){let l=Uhe(t.doc,a.head);for(let c of r)if(c==l&&mb(t.doc,a.head)==J$(gi(c,0)))return{changes:{from:a.head-c.length,to:a.head+c.length},range:Ae.cursor(a.head-c.length)}}return{range:s=a}});return s||e(t.update(i,{scrollIntoView:!0,userEvent:"delete.backward"})),!s},Qhe=[{key:"Backspace",run:Hhe}];function Vhe(t,e){let n=eH(t,t.selection.main.head),r=n.brackets||Z0.brackets;for(let s of r){let i=J$(gi(s,0));if(e==s)return i==s?Xhe(t,s,r.indexOf(s+s+s)>-1,n):Whe(t,s,i,n.before||Z0.before);if(e==i&&tH(t,t.selection.main.from))return Ghe(t,s,i)}return null}function tH(t,e){let n=!1;return t.field(Z$).between(0,t.doc.length,r=>{r==e&&(n=!0)}),n}function mb(t,e){let n=t.sliceString(e,e+2);return n.slice(0,wo(gi(n,0)))}function Uhe(t,e){let n=t.sliceString(e-2,e);return wo(gi(n,0))==n.length?n:n.slice(1)}function Whe(t,e,n,r){let s=null,i=t.changeByRange(a=>{if(!a.empty)return{changes:[{insert:e,from:a.from},{insert:n,from:a.to}],effects:Vu.of(a.to+e.length),range:Ae.range(a.anchor+e.length,a.head+e.length)};let l=mb(t.doc,a.head);return!l||/\s/.test(l)||r.indexOf(l)>-1?{changes:{insert:e+n,from:a.head},effects:Vu.of(a.head+e.length),range:Ae.cursor(a.head+e.length)}:{range:s=a}});return s?null:t.update(i,{scrollIntoView:!0,userEvent:"input.type"})}function Ghe(t,e,n){let r=null,s=t.changeByRange(i=>i.empty&&mb(t.doc,i.head)==n?{changes:{from:i.head,to:i.head+n.length,insert:n},range:Ae.cursor(i.head+n.length)}:r={range:i});return r?null:t.update(s,{scrollIntoView:!0,userEvent:"input.type"})}function Xhe(t,e,n,r){let s=r.stringPrefixes||Z0.stringPrefixes,i=null,a=t.changeByRange(l=>{if(!l.empty)return{changes:[{insert:e,from:l.from},{insert:e,from:l.to}],effects:Vu.of(l.to+e.length),range:Ae.range(l.anchor+e.length,l.head+e.length)};let c=l.head,d=mb(t.doc,c),h;if(d==e){if(I_(t,c))return{changes:{insert:e+e,from:c},effects:Vu.of(c+e.length),range:Ae.cursor(c+e.length)};if(tH(t,c)){let g=n&&t.sliceDoc(c,c+e.length*3)==e+e+e?e+e+e:e;return{changes:{from:c,to:c+g.length,insert:g},range:Ae.cursor(c+g.length)}}}else{if(n&&t.sliceDoc(c-2*e.length,c)==e+e&&(h=L_(t,c-2*e.length,s))>-1&&I_(t,h))return{changes:{insert:e+e+e+e,from:c},effects:Vu.of(c+e.length),range:Ae.cursor(c+e.length)};if(t.charCategorizer(c)(d)!=wr.Word&&L_(t,c,s)>-1&&!Yhe(t,c,e,s))return{changes:{insert:e+e,from:c},effects:Vu.of(c+e.length),range:Ae.cursor(c+e.length)}}return{range:i=l}});return i?null:t.update(a,{scrollIntoView:!0,userEvent:"input.type"})}function I_(t,e){let n=ws(t).resolveInner(e+1);return n.parent&&n.from==e}function Yhe(t,e,n,r){let s=ws(t).resolveInner(e,-1),i=r.reduce((a,l)=>Math.max(a,l.length),0);for(let a=0;a<5;a++){let l=t.sliceDoc(s.from,Math.min(s.to,s.from+n.length+i)),c=l.indexOf(n);if(!c||c>-1&&r.indexOf(l.slice(0,c))>-1){let h=s.firstChild;for(;h&&h.from==s.from&&h.to-h.from>n.length+c;){if(t.sliceDoc(h.to-n.length,h.to)==n)return!1;h=h.firstChild}return!0}let d=s.to==e&&s.parent;if(!d)break;s=d}return!1}function L_(t,e,n){let r=t.charCategorizer(e);if(r(t.sliceDoc(e-1,e))!=wr.Word)return e;for(let s of n){let i=e-s.length;if(t.sliceDoc(i,e)==s&&r(t.sliceDoc(i-1,i))!=wr.Word)return i}return-1}function Khe(t={}){return[The,xi,ys.of(t),Nhe,Zhe,Y$]}const nH=[{key:"Ctrl-Space",run:K4},{mac:"Alt-`",run:K4},{mac:"Alt-i",run:K4},{key:"Escape",run:She},{key:"ArrowDown",run:v1(!0)},{key:"ArrowUp",run:v1(!1)},{key:"PageDown",run:v1(!0,"page")},{key:"PageUp",run:v1(!1,"page")},{key:"Enter",run:whe}],Zhe=ou.highest(Hp.computeN([ys],t=>t.facet(ys).defaultKeymap?[nH]:[]));class B_{constructor(e,n,r){this.from=e,this.to=n,this.diagnostic=r}}class qu{constructor(e,n,r){this.diagnostics=e,this.panel=n,this.selected=r}static init(e,n,r){let s=r.facet(J0).markerFilter;s&&(e=s(e,r));let i=e.slice().sort((x,y)=>x.from-y.from||x.to-y.to),a=new Fl,l=[],c=0,d=r.doc.iter(),h=0,m=r.doc.length;for(let x=0;;){let y=x==i.length?null:i[x];if(!y&&!l.length)break;let w,S;if(l.length)w=c,S=l.reduce((N,T)=>Math.min(N,T.to),y&&y.from>w?y.from:1e8);else{if(w=y.from,w>m)break;S=y.to,l.push(y),x++}for(;xN.from||N.to==w))l.push(N),x++,S=Math.min(N.to,S);else{S=Math.min(N.from,S);break}}S=Math.min(S,m);let k=!1;if(l.some(N=>N.from==w&&(N.to==S||S==m))&&(k=w==S,!k&&S-w<10)){let N=w-(h+d.value.length);N>0&&(d.next(N),h=w);for(let T=w;;){if(T>=S){k=!0;break}if(!d.lineBreak&&h+d.value.length>T)break;T=h+d.value.length,h+=d.value.length,d.next()}}let j=dfe(l);if(k)a.add(w,w,kt.widget({widget:new ofe(j),diagnostics:l.slice()}));else{let N=l.reduce((T,E)=>E.markClass?T+" "+E.markClass:T,"");a.add(w,S,kt.mark({class:"cm-lintRange cm-lintRange-"+j+N,diagnostics:l.slice(),inclusiveEnd:l.some(T=>T.to>S)}))}if(c=S,c==m)break;for(let N=0;N{if(!(e&&a.diagnostics.indexOf(e)<0))if(!r)r=new B_(s,i,e||a.diagnostics[0]);else{if(a.diagnostics.indexOf(r.diagnostic)<0)return!1;r=new B_(r.from,i,r.diagnostic)}}),r}function Jhe(t,e){let n=e.pos,r=e.end||n,s=t.state.facet(J0).hideOn(t,n,r);if(s!=null)return s;let i=t.startState.doc.lineAt(e.pos);return!!(t.effects.some(a=>a.is(rH))||t.changes.touchesRange(i.from,Math.max(i.to,r)))}function efe(t,e){return t.field(Vi,!1)?e:e.concat(Ft.appendConfig.of(hfe))}const rH=Ft.define(),D6=Ft.define(),sH=Ft.define(),Vi=Os.define({create(){return new qu(kt.none,null,null)},update(t,e){if(e.docChanged&&t.diagnostics.size){let n=t.diagnostics.map(e.changes),r=null,s=t.panel;if(t.selected){let i=e.changes.mapPos(t.selected.from,1);r=sf(n,t.selected.diagnostic,i)||sf(n,null,i)}!n.size&&s&&e.state.facet(J0).autoPanel&&(s=null),t=new qu(n,s,r)}for(let n of e.effects)if(n.is(rH)){let r=e.state.facet(J0).autoPanel?n.value.length?ep.open:null:t.panel;t=qu.init(n.value,r,e.state)}else n.is(D6)?t=new qu(t.diagnostics,n.value?ep.open:null,t.selected):n.is(sH)&&(t=new qu(t.diagnostics,t.panel,n.value));return t},provide:t=>[H0.from(t,e=>e.panel),Ze.decorations.from(t,e=>e.diagnostics)]}),tfe=kt.mark({class:"cm-lintRange cm-lintRange-active"});function nfe(t,e,n){let{diagnostics:r}=t.state.field(Vi),s,i=-1,a=-1;r.between(e-(n<0?1:0),e+(n>0?1:0),(c,d,{spec:h})=>{if(e>=c&&e<=d&&(c==d||(e>c||n>0)&&(eaH(t,n,!1)))}const sfe=t=>{let e=t.state.field(Vi,!1);(!e||!e.panel)&&t.dispatch({effects:efe(t.state,[D6.of(!0)])});let n=$0(t,ep.open);return n&&n.dom.querySelector(".cm-panel-lint ul").focus(),!0},F_=t=>{let e=t.state.field(Vi,!1);return!e||!e.panel?!1:(t.dispatch({effects:D6.of(!1)}),!0)},ife=t=>{let e=t.state.field(Vi,!1);if(!e)return!1;let n=t.state.selection.main,r=e.diagnostics.iter(n.to+1);return!r.value&&(r=e.diagnostics.iter(0),!r.value||r.from==n.from&&r.to==n.to)?!1:(t.dispatch({selection:{anchor:r.from,head:r.to},scrollIntoView:!0}),!0)},afe=[{key:"Mod-Shift-m",run:sfe,preventDefault:!0},{key:"F8",run:ife}],J0=at.define({combine(t){return{sources:t.map(e=>e.source).filter(e=>e!=null),...qo(t.map(e=>e.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null,hideOn:()=>null},{delay:Math.max,markerFilter:q_,tooltipFilter:q_,needsRefresh:(e,n)=>e?n?r=>e(r)||n(r):e:n,hideOn:(e,n)=>e?n?(r,s,i)=>e(r,s,i)||n(r,s,i):e:n,autoPanel:(e,n)=>e||n})}}});function q_(t,e){return t?e?(n,r)=>e(t(n,r),r):t:e}function iH(t){let e=[];if(t)e:for(let{name:n}of t){for(let r=0;ri.toLowerCase()==s.toLowerCase())){e.push(s);continue e}}e.push("")}return e}function aH(t,e,n){var r;let s=n?iH(e.actions):[];return sr("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},sr("span",{class:"cm-diagnosticText"},e.renderMessage?e.renderMessage(t):e.message),(r=e.actions)===null||r===void 0?void 0:r.map((i,a)=>{let l=!1,c=x=>{if(x.preventDefault(),l)return;l=!0;let y=sf(t.state.field(Vi).diagnostics,e);y&&i.apply(t,y.from,y.to)},{name:d}=i,h=s[a]?d.indexOf(s[a]):-1,m=h<0?d:[d.slice(0,h),sr("u",d.slice(h,h+1)),d.slice(h+1)],g=i.markClass?" "+i.markClass:"";return sr("button",{type:"button",class:"cm-diagnosticAction"+g,onclick:c,onmousedown:c,"aria-label":` Action: ${d}${h<0?"":` (access key "${s[a]})"`}.`},m)}),e.source&&sr("div",{class:"cm-diagnosticSource"},e.source))}class ofe extends $o{constructor(e){super(),this.sev=e}eq(e){return e.sev==this.sev}toDOM(){return sr("span",{class:"cm-lintPoint cm-lintPoint-"+this.sev})}}class $_{constructor(e,n){this.diagnostic=n,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=aH(e,n,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class ep{constructor(e){this.view=e,this.items=[];let n=s=>{if(s.keyCode==27)F_(this.view),this.view.focus();else if(s.keyCode==38||s.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(s.keyCode==40||s.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(s.keyCode==36)this.moveSelection(0);else if(s.keyCode==35)this.moveSelection(this.items.length-1);else if(s.keyCode==13)this.view.focus();else if(s.keyCode>=65&&s.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:i}=this.items[this.selectedIndex],a=iH(i.actions);for(let l=0;l{for(let i=0;iF_(this.view)},"×")),this.update()}get selectedIndex(){let e=this.view.state.field(Vi).selected;if(!e)return-1;for(let n=0;n{for(let h of d.diagnostics){if(a.has(h))continue;a.add(h);let m=-1,g;for(let x=r;xr&&(this.items.splice(r,m-r),s=!0)),n&&g.diagnostic==n.diagnostic?g.dom.hasAttribute("aria-selected")||(g.dom.setAttribute("aria-selected","true"),i=g):g.dom.hasAttribute("aria-selected")&&g.dom.removeAttribute("aria-selected"),r++}});r({sel:i.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:l,panel:c})=>{let d=c.height/this.list.offsetHeight;l.topc.bottom&&(this.list.scrollTop+=(l.bottom-c.bottom)/d)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),s&&this.sync()}sync(){let e=this.list.firstChild;function n(){let r=e;e=r.nextSibling,r.remove()}for(let r of this.items)if(r.dom.parentNode==this.list){for(;e!=r.dom;)n();e=r.dom.nextSibling}else this.list.insertBefore(r.dom,e);for(;e;)n()}moveSelection(e){if(this.selectedIndex<0)return;let n=this.view.state.field(Vi),r=sf(n.diagnostics,this.items[e].diagnostic);r&&this.view.dispatch({selection:{anchor:r.from,head:r.to},scrollIntoView:!0,effects:sH.of(r)})}static open(e){return new ep(e)}}function lfe(t,e='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,${encodeURIComponent(t)}')`}function y1(t){return lfe(``,'width="6" height="3"')}const cfe=Ze.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnostic-hint":{borderLeft:"5px solid #66d"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px",cursor:"pointer"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:y1("#d11")},".cm-lintRange-warning":{backgroundImage:y1("orange")},".cm-lintRange-info":{backgroundImage:y1("#999")},".cm-lintRange-hint":{backgroundImage:y1("#66d")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-lintPoint-hint":{"&:after":{borderBottomColor:"#66d"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}}});function ufe(t){return t=="error"?4:t=="warning"?3:t=="info"?2:1}function dfe(t){let e="hint",n=1;for(let r of t){let s=ufe(r.severity);s>n&&(n=s,e=r.severity)}return e}const hfe=[Vi,Ze.decorations.compute([Vi],t=>{let{selected:e,panel:n}=t.field(Vi);return!e||!n||e.from==e.to?kt.none:kt.set([tfe.range(e.from,e.to)])}),Wle(nfe,{hideOn:Jhe}),cfe];var H_=function(e){e===void 0&&(e={});var{crosshairCursor:n=!1}=e,r=[];e.closeBracketsKeymap!==!1&&(r=r.concat(Qhe)),e.defaultKeymap!==!1&&(r=r.concat(Cde)),e.searchKeymap!==!1&&(r=r.concat(Jde)),e.historyKeymap!==!1&&(r=r.concat(Due)),e.foldKeymap!==!1&&(r=r.concat(Qce)),e.completionKeymap!==!1&&(r=r.concat(nH)),e.lintKeymap!==!1&&(r=r.concat(afe));var s=[];return e.lineNumbers!==!1&&s.push(sce()),e.highlightActiveLineGutter!==!1&&s.push(oce()),e.highlightSpecialChars!==!1&&s.push(Sle()),e.history!==!1&&s.push(jue()),e.foldGutter!==!1&&s.push(Gce()),e.drawSelection!==!1&&s.push(dle()),e.dropCursor!==!1&&s.push(gle()),e.allowMultipleSelections!==!1&&s.push(bn.allowMultipleSelections.of(!0)),e.indentOnInput!==!1&&s.push(Pce()),e.syntaxHighlighting!==!1&&s.push(Wq(Zce,{fallback:!0})),e.bracketMatching!==!1&&s.push(iue()),e.closeBrackets!==!1&&s.push(Fhe()),e.autocompletion!==!1&&s.push(Khe()),e.rectangularSelection!==!1&&s.push(zle()),n!==!1&&s.push(Ble()),e.highlightActiveLine!==!1&&s.push(Tle()),e.highlightSelectionMatches!==!1&&s.push(Dde()),e.tabSize&&typeof e.tabSize=="number"&&s.push(Vp.of(" ".repeat(e.tabSize))),s.concat([Hp.of(r.flat())]).filter(Boolean)};const ffe="#e5c07b",Q_="#e06c75",mfe="#56b6c2",pfe="#ffffff",fv="#abb2bf",oO="#7d8799",gfe="#61afef",xfe="#98c379",V_="#d19a66",vfe="#c678dd",yfe="#21252b",U_="#2c313a",W_="#282c34",J4="#353a42",bfe="#3E4451",G_="#528bff",wfe=Ze.theme({"&":{color:fv,backgroundColor:W_},".cm-content":{caretColor:G_},".cm-cursor, .cm-dropCursor":{borderLeftColor:G_},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:bfe},".cm-panels":{backgroundColor:yfe,color:fv},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:W_,color:oO,border:"none"},".cm-activeLineGutter":{backgroundColor:U_},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:J4},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:J4,borderBottomColor:J4},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:U_,color:fv}}},{dark:!0}),Sfe=Wp.define([{tag:xe.keyword,color:vfe},{tag:[xe.name,xe.deleted,xe.character,xe.propertyName,xe.macroName],color:Q_},{tag:[xe.function(xe.variableName),xe.labelName],color:gfe},{tag:[xe.color,xe.constant(xe.name),xe.standard(xe.name)],color:V_},{tag:[xe.definition(xe.name),xe.separator],color:fv},{tag:[xe.typeName,xe.className,xe.number,xe.changed,xe.annotation,xe.modifier,xe.self,xe.namespace],color:ffe},{tag:[xe.operator,xe.operatorKeyword,xe.url,xe.escape,xe.regexp,xe.link,xe.special(xe.string)],color:mfe},{tag:[xe.meta,xe.comment],color:oO},{tag:xe.strong,fontWeight:"bold"},{tag:xe.emphasis,fontStyle:"italic"},{tag:xe.strikethrough,textDecoration:"line-through"},{tag:xe.link,color:oO,textDecoration:"underline"},{tag:xe.heading,fontWeight:"bold",color:Q_},{tag:[xe.atom,xe.bool,xe.special(xe.variableName)],color:V_},{tag:[xe.processingInstruction,xe.string,xe.inserted],color:xfe},{tag:xe.invalid,color:pfe}]),oH=[wfe,Wq(Sfe)];var kfe=Ze.theme({"&":{backgroundColor:"#fff"}},{dark:!1}),Ofe=function(e){e===void 0&&(e={});var{indentWithTab:n=!0,editable:r=!0,readOnly:s=!1,theme:i="light",placeholder:a="",basicSetup:l=!0}=e,c=[];switch(n&&c.unshift(Hp.of([Tde])),l&&(typeof l=="boolean"?c.unshift(H_()):c.unshift(H_(l))),a&&c.unshift(Ale(a)),i){case"light":c.push(kfe);break;case"dark":c.push(oH);break;case"none":break;default:c.push(i);break}return r===!1&&c.push(Ze.editable.of(!1)),s&&c.push(bn.readOnly.of(!0)),[...c]},jfe=t=>({line:t.state.doc.lineAt(t.state.selection.main.from),lineCount:t.state.doc.lines,lineBreak:t.state.lineBreak,length:t.state.doc.length,readOnly:t.state.readOnly,tabSize:t.state.tabSize,selection:t.state.selection,selectionAsSingle:t.state.selection.asSingle().main,ranges:t.state.selection.ranges,selectionCode:t.state.sliceDoc(t.state.selection.main.from,t.state.selection.main.to),selections:t.state.selection.ranges.map(e=>t.state.sliceDoc(e.from,e.to)),selectedText:t.state.selection.ranges.some(e=>!e.empty)});class Nfe{constructor(e,n){this.timeLeftMS=void 0,this.timeoutMS=void 0,this.isCancelled=!1,this.isTimeExhausted=!1,this.callbacks=[],this.timeLeftMS=n,this.timeoutMS=n,this.callbacks.push(e)}tick(){if(!this.isCancelled&&!this.isTimeExhausted&&(this.timeLeftMS--,this.timeLeftMS<=0)){this.isTimeExhausted=!0;var e=this.callbacks.slice();this.callbacks.length=0,e.forEach(n=>{try{n()}catch(r){console.error("TimeoutLatch callback error:",r)}})}}cancel(){this.isCancelled=!0,this.callbacks.length=0}reset(){this.timeLeftMS=this.timeoutMS,this.isCancelled=!1,this.isTimeExhausted=!1}get isDone(){return this.isCancelled||this.isTimeExhausted}}class X_{constructor(){this.interval=null,this.latches=new Set}add(e){this.latches.add(e),this.start()}remove(e){this.latches.delete(e),this.latches.size===0&&this.stop()}start(){this.interval===null&&(this.interval=setInterval(()=>{this.latches.forEach(e=>{e.tick(),e.isDone&&this.remove(e)})},1))}stop(){this.interval!==null&&(clearInterval(this.interval),this.interval=null)}}var eS=null,Cfe=()=>typeof window>"u"?new X_:(eS||(eS=new X_),eS),Y_=Fo.define(),Tfe=200,Efe=[];function _fe(t){var{value:e,selection:n,onChange:r,onStatistics:s,onCreateEditor:i,onUpdate:a,extensions:l=Efe,autoFocus:c,theme:d="light",height:h=null,minHeight:m=null,maxHeight:g=null,width:x=null,minWidth:y=null,maxWidth:w=null,placeholder:S="",editable:k=!0,readOnly:j=!1,indentWithTab:N=!0,basicSetup:T=!0,root:E,initialState:_}=t,[M,I]=b.useState(),[P,L]=b.useState(),[H,U]=b.useState(),ee=b.useState(()=>({current:null}))[0],z=b.useState(()=>({current:null}))[0],Q=Ze.theme({"&":{height:h,minHeight:m,maxHeight:g,width:x,minWidth:y,maxWidth:w},"& .cm-scroller":{height:"100% !important"}}),B=Ze.updateListener.of(G=>{if(G.docChanged&&typeof r=="function"&&!G.transactions.some(W=>W.annotation(Y_))){ee.current?ee.current.reset():(ee.current=new Nfe(()=>{if(z.current){var W=z.current;z.current=null,W()}ee.current=null},Tfe),Cfe().add(ee.current));var R=G.state.doc,ie=R.toString();r(ie,G)}s&&s(jfe(G))}),X=Ofe({theme:d,editable:k,readOnly:j,placeholder:S,indentWithTab:N,basicSetup:T}),J=[B,Q,...X];return a&&typeof a=="function"&&J.push(Ze.updateListener.of(a)),J=J.concat(l),b.useLayoutEffect(()=>{if(M&&!H){var G={doc:e,selection:n,extensions:J},R=_?bn.fromJSON(_.json,G,_.fields):bn.create(G);if(U(R),!P){var ie=new Ze({state:R,parent:M,root:E});L(ie),i&&i(ie,R)}}return()=>{P&&(U(void 0),L(void 0))}},[M,H]),b.useEffect(()=>{t.container&&I(t.container)},[t.container]),b.useEffect(()=>()=>{P&&(P.destroy(),L(void 0)),ee.current&&(ee.current.cancel(),ee.current=null)},[P]),b.useEffect(()=>{c&&P&&P.focus()},[c,P]),b.useEffect(()=>{P&&P.dispatch({effects:Ft.reconfigure.of(J)})},[d,l,h,m,g,x,y,w,S,k,j,N,T,r,a]),b.useEffect(()=>{if(e!==void 0){var G=P?P.state.doc.toString():"";if(P&&e!==G){var R=ee.current&&!ee.current.isDone,ie=()=>{P&&e!==P.state.doc.toString()&&P.dispatch({changes:{from:0,to:P.state.doc.toString().length,insert:e||""},annotations:[Y_.of(!0)]})};R?z.current=ie:ie()}}},[e,P]),{state:H,setState:U,view:P,setView:L,container:M,setContainer:I}}var Mfe=["className","value","selection","extensions","onChange","onStatistics","onCreateEditor","onUpdate","autoFocus","theme","height","minHeight","maxHeight","width","minWidth","maxWidth","basicSetup","placeholder","indentWithTab","editable","readOnly","root","initialState"],lH=b.forwardRef((t,e)=>{var{className:n,value:r="",selection:s,extensions:i=[],onChange:a,onStatistics:l,onCreateEditor:c,onUpdate:d,autoFocus:h,theme:m="light",height:g,minHeight:x,maxHeight:y,width:w,minWidth:S,maxWidth:k,basicSetup:j,placeholder:N,indentWithTab:T,editable:E,readOnly:_,root:M,initialState:I}=t,P=xJ(t,Mfe),L=b.useRef(null),{state:H,view:U,container:ee,setContainer:z}=_fe({root:M,value:r,autoFocus:h,theme:m,height:g,minHeight:x,maxHeight:y,width:w,minWidth:S,maxWidth:k,basicSetup:j,placeholder:N,indentWithTab:T,editable:E,readOnly:_,selection:s,onChange:a,onStatistics:l,onCreateEditor:c,onUpdate:d,extensions:i,initialState:I});b.useImperativeHandle(e,()=>({editor:L.current,state:H,view:U}),[L,ee,H,U]);var Q=b.useCallback(X=>{L.current=X,z(X)},[z]);if(typeof r!="string")throw new Error("value must be typeof string but got "+typeof r);var B=typeof m=="string"?"cm-theme-"+m:"cm-theme";return o.jsx("div",vJ({ref:Q,className:""+B+(n?" "+n:"")},P))});lH.displayName="CodeMirror";var K_={};class ry{constructor(e,n,r,s,i,a,l,c,d,h=0,m){this.p=e,this.stack=n,this.state=r,this.reducePos=s,this.pos=i,this.score=a,this.buffer=l,this.bufferBase=c,this.curContext=d,this.lookAhead=h,this.parent=m}toString(){return`[${this.stack.filter((e,n)=>n%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,n,r=0){let s=e.parser.context;return new ry(e,[],n,r,r,0,[],0,s?new Z_(s,s.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,n){this.stack.push(this.state,n,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var n;let r=e>>19,s=e&65535,{parser:i}=this.p,a=this.reducePos=2e3&&!(!((n=this.p.parser.nodeSet.types[s])===null||n===void 0)&&n.isAnonymous)&&(d==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=h):this.p.lastBigReductionSizec;)this.stack.pop();this.reduceContext(s,d)}storeNode(e,n,r,s=4,i=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]0&&a.buffer[l-4]==0&&a.buffer[l-1]>-1){if(n==r)return;if(a.buffer[l-2]>=n){a.buffer[l-2]=r;return}}}if(!i||this.pos==r)this.buffer.push(e,n,r,s);else{let a=this.buffer.length;if(a>0&&(this.buffer[a-4]!=0||this.buffer[a-1]<0)){let l=!1;for(let c=a;c>0&&this.buffer[c-2]>r;c-=4)if(this.buffer[c-1]>=0){l=!0;break}if(l)for(;a>0&&this.buffer[a-2]>r;)this.buffer[a]=this.buffer[a-4],this.buffer[a+1]=this.buffer[a-3],this.buffer[a+2]=this.buffer[a-2],this.buffer[a+3]=this.buffer[a-1],a-=4,s>4&&(s-=4)}this.buffer[a]=e,this.buffer[a+1]=n,this.buffer[a+2]=r,this.buffer[a+3]=s}}shift(e,n,r,s){if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let i=e,{parser:a}=this.p;(s>this.pos||n<=a.maxNode)&&(this.pos=s,a.stateFlag(i,1)||(this.reducePos=s)),this.pushState(i,r),this.shiftContext(n,r),n<=a.maxNode&&this.buffer.push(n,r,s,4)}else this.pos=s,this.shiftContext(n,r),n<=this.p.parser.maxNode&&this.buffer.push(n,r,s,4)}apply(e,n,r,s){e&65536?this.reduce(e):this.shift(e,n,r,s)}useNode(e,n){let r=this.p.reused.length-1;(r<0||this.p.reused[r]!=e)&&(this.p.reused.push(e),r++);let s=this.pos;this.reducePos=this.pos=s+e.length,this.pushState(n,s),this.buffer.push(r,s,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,n=e.buffer.length;for(;n>0&&e.buffer[n-2]>e.reducePos;)n-=4;let r=e.buffer.slice(n),s=e.bufferBase+n;for(;e&&s==e.bufferBase;)e=e.parent;return new ry(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,r,s,this.curContext,this.lookAhead,e)}recoverByDelete(e,n){let r=e<=this.p.parser.maxNode;r&&this.storeNode(e,this.pos,n,4),this.storeNode(0,this.pos,n,r?8:4),this.pos=this.reducePos=n,this.score-=190}canShift(e){for(let n=new Afe(this);;){let r=this.p.parser.stateSlot(n.state,4)||this.p.parser.hasAction(n.state,e);if(r==0)return!1;if((r&65536)==0)return!0;n.reduce(r)}}recoverByInsert(e){if(this.stack.length>=300)return[];let n=this.p.parser.nextStates(this.state);if(n.length>8||this.stack.length>=120){let s=[];for(let i=0,a;ic&1&&l==a)||s.push(n[i],a)}n=s}let r=[];for(let s=0;s>19,s=n&65535,i=this.stack.length-r*3;if(i<0||e.getGoto(this.stack[i],s,!1)<0){let a=this.findForcedReduction();if(a==null)return!1;n=a}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(n),!0}findForcedReduction(){let{parser:e}=this.p,n=[],r=(s,i)=>{if(!n.includes(s))return n.push(s),e.allActions(s,a=>{if(!(a&393216))if(a&65536){let l=(a>>19)-i;if(l>1){let c=a&65535,d=this.stack.length-l*3;if(d>=0&&e.getGoto(this.stack[d],c,!1)>=0)return l<<19|65536|c}}else{let l=r(a,i+1);if(l!=null)return l}})};return r(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let n=0;nthis.lookAhead&&(this.emitLookAhead(),this.lookAhead=e)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}}class Z_{constructor(e,n){this.tracker=e,this.context=n,this.hash=e.strict?e.hash(n):0}}class Afe{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let n=e&65535,r=e>>19;r==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(r-1)*3;let s=this.start.p.parser.getGoto(this.stack[this.base-3],n,!0);this.state=s}}class sy{constructor(e,n,r){this.stack=e,this.pos=n,this.index=r,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,n=e.bufferBase+e.buffer.length){return new sy(e,n,n-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new sy(this.stack,this.pos,this.index)}}function b1(t,e=Uint16Array){if(typeof t!="string")return t;let n=null;for(let r=0,s=0;r=92&&a--,a>=34&&a--;let c=a-32;if(c>=46&&(c-=46,l=!0),i+=c,l)break;i*=46}n?n[s++]=i:n=new e(i)}return n}class mv{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const J_=new mv;class Rfe{constructor(e,n){this.input=e,this.ranges=n,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=J_,this.rangeIndex=0,this.pos=this.chunkPos=n[0].from,this.range=n[0],this.end=n[n.length-1].to,this.readNext()}resolveOffset(e,n){let r=this.range,s=this.rangeIndex,i=this.pos+e;for(;ir.to:i>=r.to;){if(s==this.ranges.length-1)return null;let a=this.ranges[++s];i+=a.from-r.to,r=a}return i}clipPos(e){if(e>=this.range.from&&ee)return Math.max(e,n.from);return this.end}peek(e){let n=this.chunkOff+e,r,s;if(n>=0&&n=this.chunk2Pos&&rl.to&&(this.chunk2=this.chunk2.slice(0,l.to-r)),s=this.chunk2.charCodeAt(0)}}return r>=this.token.lookAhead&&(this.token.lookAhead=r+1),s}acceptToken(e,n=0){let r=n?this.resolveOffset(n,-1):this.pos;if(r==null||r=this.chunk2Pos&&this.posthis.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,n){if(n?(this.token=n,n.start=e,n.lookAhead=e+1,n.value=n.extended=-1):this.token=J_,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e=this.chunkPos&&n<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,n-this.chunkPos);if(e>=this.chunk2Pos&&n<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,n-this.chunk2Pos);if(e>=this.range.from&&n<=this.range.to)return this.input.read(e,n);let r="";for(let s of this.ranges){if(s.from>=n)break;s.to>e&&(r+=this.input.read(Math.max(s.from,e),Math.min(s.to,n)))}return r}}class Bh{constructor(e,n){this.data=e,this.id=n}token(e,n){let{parser:r}=n.p;Dfe(this.data,e,n,this.id,r.data,r.tokenPrecTable)}}Bh.prototype.contextual=Bh.prototype.fallback=Bh.prototype.extend=!1;Bh.prototype.fallback=Bh.prototype.extend=!1;class pb{constructor(e,n={}){this.token=e,this.contextual=!!n.contextual,this.fallback=!!n.fallback,this.extend=!!n.extend}}function Dfe(t,e,n,r,s,i){let a=0,l=1<0){let y=t[x];if(c.allows(y)&&(e.token.value==-1||e.token.value==y||Pfe(y,e.token.value,s,i))){e.acceptToken(y);break}}let h=e.next,m=0,g=t[a+2];if(e.next<0&&g>m&&t[d+g*3-3]==65535){a=t[d+g*3-1];continue e}for(;m>1,y=d+x+(x<<1),w=t[y],S=t[y+1]||65536;if(h=S)m=x+1;else{a=t[y+2],e.advance();continue e}}break}}function eM(t,e,n){for(let r=e,s;(s=t[r])!=65535;r++)if(s==n)return r-e;return-1}function Pfe(t,e,n,r){let s=eM(n,r,e);return s<0||eM(n,r,t)e)&&!r.type.isError)return n<0?Math.max(0,Math.min(r.to-1,e-25)):Math.min(t.length,Math.max(r.from+1,e+25));if(n<0?r.prevSibling():r.nextSibling())break;if(!r.parent())return n<0?0:t.length}}class zfe{constructor(e,n){this.fragments=e,this.nodeSet=n,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?tM(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?tM(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(ee)return this.nextStart=a,null;if(i instanceof ar){if(a==e){if(a=Math.max(this.safeFrom,e)&&(this.trees.push(i),this.start.push(a),this.index.push(0))}else this.index[n]++,this.nextStart=a+i.length}}}class Ife{constructor(e,n){this.stream=n,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(r=>new mv)}getActions(e){let n=0,r=null,{parser:s}=e.p,{tokenizers:i}=s,a=s.stateSlot(e.state,3),l=e.curContext?e.curContext.hash:0,c=0;for(let d=0;dm.end+25&&(c=Math.max(m.lookAhead,c)),m.value!=0)){let g=n;if(m.extended>-1&&(n=this.addActions(e,m.extended,m.end,n)),n=this.addActions(e,m.value,m.end,n),!h.extend&&(r=m,n>g))break}}for(;this.actions.length>n;)this.actions.pop();return c&&e.setLookAhead(c),!r&&e.pos==this.stream.end&&(r=new mv,r.value=e.p.parser.eofTerm,r.start=r.end=e.pos,n=this.addActions(e,r.value,r.end,n)),this.mainToken=r,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let n=new mv,{pos:r,p:s}=e;return n.start=r,n.end=Math.min(r+1,s.stream.end),n.value=r==s.stream.end?s.parser.eofTerm:0,n}updateCachedToken(e,n,r){let s=this.stream.clipPos(r.pos);if(n.token(this.stream.reset(s,e),r),e.value>-1){let{parser:i}=r.p;for(let a=0;a=0&&r.p.parser.dialect.allows(l>>1)){(l&1)==0?e.value=l>>1:e.extended=l>>1;break}}}else e.value=0,e.end=this.stream.clipPos(s+1)}putAction(e,n,r,s){for(let i=0;ie.bufferLength*4?new zfe(r,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,n=this.minStackPos,r=this.stacks=[],s,i;if(this.bigReductionCount>300&&e.length==1){let[a]=e;for(;a.forceReduce()&&a.stack.length&&a.stack[a.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let a=0;an)r.push(l);else{if(this.advanceStack(l,r,e))continue;{s||(s=[],i=[]),s.push(l);let c=this.tokens.getMainToken(l);i.push(c.value,c.end)}}break}}if(!r.length){let a=s&&qfe(s);if(a)return Bi&&console.log("Finish with "+this.stackID(a)),this.stackToTree(a);if(this.parser.strict)throw Bi&&s&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+n);this.recovering||(this.recovering=5)}if(this.recovering&&s){let a=this.stoppedAt!=null&&s[0].pos>this.stoppedAt?s[0]:this.runRecovery(s,i,r);if(a)return Bi&&console.log("Force-finish "+this.stackID(a)),this.stackToTree(a.forceAll())}if(this.recovering){let a=this.recovering==1?1:this.recovering*3;if(r.length>a)for(r.sort((l,c)=>c.score-l.score);r.length>a;)r.pop();r.some(l=>l.reducePos>n)&&this.recovering--}else if(r.length>1){e:for(let a=0;a500&&d.buffer.length>500)if((l.score-d.score||l.buffer.length-d.buffer.length)>0)r.splice(c--,1);else{r.splice(a--,1);continue e}}}r.length>12&&r.splice(12,r.length-12)}this.minStackPos=r[0].pos;for(let a=1;a ":"";if(this.stoppedAt!=null&&s>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let d=e.curContext&&e.curContext.tracker.strict,h=d?e.curContext.hash:0;for(let m=this.fragments.nodeAt(s);m;){let g=this.parser.nodeSet.types[m.type.id]==m.type?i.getGoto(e.state,m.type.id):-1;if(g>-1&&m.length&&(!d||(m.prop(sn.contextHash)||0)==h))return e.useNode(m,g),Bi&&console.log(a+this.stackID(e)+` (via reuse of ${i.getName(m.type.id)})`),!0;if(!(m instanceof ar)||m.children.length==0||m.positions[0]>0)break;let x=m.children[0];if(x instanceof ar&&m.positions[0]==0)m=x;else break}}let l=i.stateSlot(e.state,4);if(l>0)return e.reduce(l),Bi&&console.log(a+this.stackID(e)+` (via always-reduce ${i.getName(l&65535)})`),!0;if(e.stack.length>=8400)for(;e.stack.length>6e3&&e.forceReduce(););let c=this.tokens.getActions(e);for(let d=0;ds?n.push(y):r.push(y)}return!1}advanceFully(e,n){let r=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>r)return nM(e,n),!0}}runRecovery(e,n,r){let s=null,i=!1;for(let a=0;a ":"";if(l.deadEnd&&(i||(i=!0,l.restart(),Bi&&console.log(h+this.stackID(l)+" (restarted)"),this.advanceFully(l,r))))continue;let m=l.split(),g=h;for(let x=0;x<10&&m.forceReduce()&&(Bi&&console.log(g+this.stackID(m)+" (via force-reduce)"),!this.advanceFully(m,r));x++)Bi&&(g=this.stackID(m)+" -> ");for(let x of l.recoverByInsert(c))Bi&&console.log(h+this.stackID(x)+" (via recover-insert)"),this.advanceFully(x,r);this.stream.end>l.pos?(d==l.pos&&(d++,c=0),l.recoverByDelete(c,d),Bi&&console.log(h+this.stackID(l)+` (via recover-delete ${this.parser.getName(c)})`),nM(l,r)):(!s||s.scoret;class Ffe{constructor(e){this.start=e.start,this.shift=e.shift||nS,this.reduce=e.reduce||nS,this.reuse=e.reuse||nS,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}}class tp extends h6{constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (14)`);let n=e.nodeNames.split(" ");this.minRepeatTerm=n.length;for(let l=0;le.topRules[l][1]),s=[];for(let l=0;l=0)i(h,c,l[d++]);else{let m=l[d+-h];for(let g=-h;g>0;g--)i(l[d++],c,m);d++}}}this.nodeSet=new ab(n.map((l,c)=>ri.define({name:c>=this.minRepeatTerm?void 0:l,id:c,props:s[c],top:r.indexOf(c)>-1,error:c==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(c)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=Cq;let a=b1(e.tokenData);this.context=e.context,this.specializerSpecs=e.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let l=0;ltypeof l=="number"?new Bh(a,l):l),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,n,r){let s=new Lfe(this,e,n,r);for(let i of this.wrappers)s=i(s,e,n,r);return s}getGoto(e,n,r=!1){let s=this.goto;if(n>=s[0])return-1;for(let i=s[n+1];;){let a=s[i++],l=a&1,c=s[i++];if(l&&r)return c;for(let d=i+(a>>1);i0}validAction(e,n){return!!this.allActions(e,r=>r==n?!0:null)}allActions(e,n){let r=this.stateSlot(e,4),s=r?n(r):void 0;for(let i=this.stateSlot(e,1);s==null;i+=3){if(this.data[i]==65535)if(this.data[i+1]==1)i=Nl(this.data,i+2);else break;s=n(Nl(this.data,i+1))}return s}nextStates(e){let n=[];for(let r=this.stateSlot(e,1);;r+=3){if(this.data[r]==65535)if(this.data[r+1]==1)r=Nl(this.data,r+2);else break;if((this.data[r+2]&1)==0){let s=this.data[r+1];n.some((i,a)=>a&1&&i==s)||n.push(this.data[r],s)}}return n}configure(e){let n=Object.assign(Object.create(tp.prototype),this);if(e.props&&(n.nodeSet=this.nodeSet.extend(...e.props)),e.top){let r=this.topRules[e.top];if(!r)throw new RangeError(`Invalid top rule name ${e.top}`);n.top=r}return e.tokenizers&&(n.tokenizers=this.tokenizers.map(r=>{let s=e.tokenizers.find(i=>i.from==r);return s?s.to:r})),e.specializers&&(n.specializers=this.specializers.slice(),n.specializerSpecs=this.specializerSpecs.map((r,s)=>{let i=e.specializers.find(l=>l.from==r.external);if(!i)return r;let a=Object.assign(Object.assign({},r),{external:i.to});return n.specializers[s]=rM(a),a})),e.contextTracker&&(n.context=e.contextTracker),e.dialect&&(n.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(n.strict=e.strict),e.wrap&&(n.wrappers=n.wrappers.concat(e.wrap)),e.bufferLength!=null&&(n.bufferLength=e.bufferLength),n}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let n=this.dynamicPrecedences;return n==null?0:n[e]||0}parseDialect(e){let n=Object.keys(this.dialects),r=n.map(()=>!1);if(e)for(let i of e.split(" ")){let a=n.indexOf(i);a>=0&&(r[a]=!0)}let s=null;for(let i=0;ir)&&n.p.parser.stateFlag(n.state,2)&&(!e||e.scoret.external(n,r)<<1|e}return t.get}const $fe=1,cH=194,uH=195,Hfe=196,sM=197,Qfe=198,Vfe=199,Ufe=200,Wfe=2,dH=3,iM=201,Gfe=24,Xfe=25,Yfe=49,Kfe=50,Zfe=55,Jfe=56,eme=57,tme=59,nme=60,rme=61,sme=62,ime=63,ame=65,ome=238,lme=71,cme=241,ume=242,dme=243,hme=244,fme=245,mme=246,pme=247,gme=248,hH=72,xme=249,vme=250,yme=251,bme=252,wme=253,Sme=254,kme=255,Ome=256,jme=73,Nme=77,Cme=263,Tme=112,Eme=130,_me=151,Mme=152,Ame=155,ud=10,np=13,P6=32,gb=9,z6=35,Rme=40,Dme=46,lO=123,aM=125,fH=39,mH=34,oM=92,Pme=111,zme=120,Ime=78,Lme=117,Bme=85,Fme=new Set([Xfe,Yfe,Kfe,Cme,ame,Eme,Jfe,eme,ome,sme,ime,hH,jme,Nme,nme,rme,_me,Mme,Ame,Tme]);function rS(t){return t==ud||t==np}function sS(t){return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102}const qme=new pb((t,e)=>{let n;if(t.next<0)t.acceptToken(Vfe);else if(e.context.flags&pv)rS(t.next)&&t.acceptToken(Qfe,1);else if(((n=t.peek(-1))<0||rS(n))&&e.canShift(sM)){let r=0;for(;t.next==P6||t.next==gb;)t.advance(),r++;(t.next==ud||t.next==np||t.next==z6)&&t.acceptToken(sM,-r)}else rS(t.next)&&t.acceptToken(Hfe,1)},{contextual:!0}),$me=new pb((t,e)=>{let n=e.context;if(n.flags)return;let r=t.peek(-1);if(r==ud||r==np){let s=0,i=0;for(;;){if(t.next==P6)s++;else if(t.next==gb)s+=8-s%8;else break;t.advance(),i++}s!=n.indent&&t.next!=ud&&t.next!=np&&t.next!=z6&&(s[t,e|pH])),Vme=new Ffe({start:Hme,reduce(t,e,n,r){return t.flags&pv&&Fme.has(e)||(e==lme||e==hH)&&t.flags&pH?t.parent:t},shift(t,e,n,r){return e==cH?new gv(t,Qme(r.read(r.pos,n.pos)),0):e==uH?t.parent:e==Gfe||e==Zfe||e==tme||e==dH?new gv(t,0,pv):lM.has(e)?new gv(t,0,lM.get(e)|t.flags&pv):t},hash(t){return t.hash}}),Ume=new pb(t=>{for(let e=0;e<5;e++){if(t.next!="print".charCodeAt(e))return;t.advance()}if(!/\w/.test(String.fromCharCode(t.next)))for(let e=0;;e++){let n=t.peek(e);if(!(n==P6||n==gb)){n!=Rme&&n!=Dme&&n!=ud&&n!=np&&n!=z6&&t.acceptToken($fe);return}}}),Wme=new pb((t,e)=>{let{flags:n}=e.context,r=n&wl?mH:fH,s=(n&Sl)>0,i=!(n&kl),a=(n&Ol)>0,l=t.pos;for(;!(t.next<0);)if(a&&t.next==lO)if(t.peek(1)==lO)t.advance(2);else{if(t.pos==l){t.acceptToken(dH,1);return}break}else if(i&&t.next==oM){if(t.pos==l){t.advance();let c=t.next;c>=0&&(t.advance(),Gme(t,c)),t.acceptToken(Wfe);return}break}else if(t.next==oM&&!i&&t.peek(1)>-1)t.advance(2);else if(t.next==r&&(!s||t.peek(1)==r&&t.peek(2)==r)){if(t.pos==l){t.acceptToken(iM,s?3:1);return}break}else if(t.next==ud){if(s)t.advance();else if(t.pos==l){t.acceptToken(iM);return}break}else t.advance();t.pos>l&&t.acceptToken(Ufe)});function Gme(t,e){if(e==Pme)for(let n=0;n<2&&t.next>=48&&t.next<=55;n++)t.advance();else if(e==zme)for(let n=0;n<2&&sS(t.next);n++)t.advance();else if(e==Lme)for(let n=0;n<4&&sS(t.next);n++)t.advance();else if(e==Bme)for(let n=0;n<8&&sS(t.next);n++)t.advance();else if(e==Ime&&t.next==lO){for(t.advance();t.next>=0&&t.next!=aM&&t.next!=fH&&t.next!=mH&&t.next!=ud;)t.advance();t.next==aM&&t.advance()}}const Xme=f6({'async "*" "**" FormatConversion FormatSpec':xe.modifier,"for while if elif else try except finally return raise break continue with pass assert await yield match case":xe.controlKeyword,"in not and or is del":xe.operatorKeyword,"from def class global nonlocal lambda":xe.definitionKeyword,import:xe.moduleKeyword,"with as print":xe.keyword,Boolean:xe.bool,None:xe.null,VariableName:xe.variableName,"CallExpression/VariableName":xe.function(xe.variableName),"FunctionDefinition/VariableName":xe.function(xe.definition(xe.variableName)),"ClassDefinition/VariableName":xe.definition(xe.className),PropertyName:xe.propertyName,"CallExpression/MemberExpression/PropertyName":xe.function(xe.propertyName),Comment:xe.lineComment,Number:xe.number,String:xe.string,FormatString:xe.special(xe.string),Escape:xe.escape,UpdateOp:xe.updateOperator,"ArithOp!":xe.arithmeticOperator,BitOp:xe.bitwiseOperator,CompareOp:xe.compareOperator,AssignOp:xe.definitionOperator,Ellipsis:xe.punctuation,At:xe.meta,"( )":xe.paren,"[ ]":xe.squareBracket,"{ }":xe.brace,".":xe.derefOperator,", ;":xe.separator}),Yme={__proto__:null,await:44,or:54,and:56,in:60,not:62,is:64,if:70,else:72,lambda:76,yield:94,from:96,async:102,for:104,None:162,True:164,False:164,del:178,pass:182,break:186,continue:190,return:194,raise:202,import:206,as:208,global:212,nonlocal:214,assert:218,type:223,elif:236,while:240,try:246,except:248,finally:250,with:254,def:258,class:268,match:279,case:285},Kme=tp.deserialize({version:14,states:"##jO`QeOOP$}OSOOO&WQtO'#HUOOQS'#Co'#CoOOQS'#Cp'#CpO'vQdO'#CnO*UQtO'#HTOOQS'#HU'#HUOOQS'#DU'#DUOOQS'#HT'#HTO*rQdO'#D_O+VQdO'#DfO+gQdO'#DjO+zOWO'#DuO,VOWO'#DvO.[QtO'#GuOOQS'#Gu'#GuO'vQdO'#GtO0ZQtO'#GtOOQS'#Eb'#EbO0rQdO'#EcOOQS'#Gs'#GsO0|QdO'#GrOOQV'#Gr'#GrO1XQdO'#FYOOQS'#G^'#G^O1^QdO'#FXOOQV'#IS'#ISOOQV'#Gq'#GqOOQV'#Fq'#FqQ`QeOOO'vQdO'#CqO1lQdO'#C}O1sQdO'#DRO2RQdO'#HYO2cQtO'#EVO'vQdO'#EWOOQS'#EY'#EYOOQS'#E['#E[OOQS'#E^'#E^O2wQdO'#E`O3_QdO'#EdO3rQdO'#EfO3zQtO'#EfO1XQdO'#EiO0rQdO'#ElO1XQdO'#EnO0rQdO'#EtO0rQdO'#EwO4VQdO'#EyO4^QdO'#FOO4iQdO'#EzO0rQdO'#FOO1XQdO'#FQO1XQdO'#FVO4nQdO'#F[P4uOdO'#GpPOOO)CBd)CBdOOQS'#Ce'#CeOOQS'#Cf'#CfOOQS'#Cg'#CgOOQS'#Ch'#ChOOQS'#Ci'#CiOOQS'#Cj'#CjOOQS'#Cl'#ClO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO5TQdO'#DoOOQS,5:Y,5:YO5hQdO'#HdOOQS,5:],5:]O5uQ!fO,5:]O5zQtO,59YO1lQdO,59bO1lQdO,59bO1lQdO,59bO8jQdO,59bO8oQdO,59bO8vQdO,59jO8}QdO'#HTO:TQdO'#HSOOQS'#HS'#HSOOQS'#D['#D[O:lQdO,59aO'vQdO,59aO:zQdO,59aOOQS,59y,59yO;PQdO,5:RO'vQdO,5:ROOQS,5:Q,5:QO;_QdO,5:QO;dQdO,5:XO'vQdO,5:XO'vQdO,5:VOOQS,5:U,5:UO;uQdO,5:UO;zQdO,5:WOOOW'#Fy'#FyOOOOQS'#Ds'#DsOOQS1G/w1G/wOOQS1G.|1G.|O!/[QtO1G.|O!/cQtO1G.|O1lQdO1G.|O!0OQdO1G/UOOQS'#DZ'#DZO0rQdO,59tOOQS1G.{1G.{O!0VQdO1G/eO!0gQdO1G/eO!0oQdO1G/fO'vQdO'#H[O!0tQdO'#H[O!0yQtO1G.{O!1ZQdO,59iO!2aQdO,5=zO!2qQdO,5=zO!2yQdO1G/mO!3OQtO1G/mOOQS1G/l1G/lO!3`QdO,5=uO!4VQdO,5=uO0rQdO1G/qO!4tQdO1G/sO!4yQtO1G/sO!5ZQtO1G/qOOQS1G/p1G/pOOQS1G/r1G/rOOOW-E9w-E9wOOQS1G/{1G/{O!5kQdO'#HxO0rQdO'#HxO!5|QdO,5>cOOOW-E9x-E9xOOQS1G/|1G/|OOQS-E9{-E9{O!6[Q#xO1G2zO!6{QtO1G2zO'vQdO,5kOOQS1G1`1G1`O!8RQdO1G1`OOQS'#DV'#DVO0rQdO,5=qOOQS,5=q,5=qO!8WQdO'#FrO!8cQdO,59oO!8kQdO1G/XO!8uQtO,5=uOOQS1G3`1G3`OOQS,5:m,5:mO!9fQdO'#GtOOQS,5jO!;ZQdO,5>jO1XQdO,5>jO!;lQdO,5>iOOQS-E:R-E:RO!;qQdO1G0lO!;|QdO1G0lO!lO!lO!hO!=VQdO,5>hO!=hQdO'#EpO0rQdO1G0tO!=sQdO1G0tO!=xQgO1G0zO!AvQgO1G0}O!EqQdO,5>oO!E{QdO,5>oO!FTQtO,5>oO0rQdO1G1PO!F_QdO1G1PO4iQdO1G1UO!!vQdO1G1WOOQV,5;a,5;aO!FdQfO,5;aO!FiQgO1G1QO!JjQdO'#GZO4iQdO1G1QO4iQdO1G1QO!JzQdO,5>pO!KXQdO,5>pO1XQdO,5>pOOQV1G1U1G1UO!KaQdO'#FSO!KrQ!fO1G1WO!KzQdO1G1WOOQV1G1]1G1]O4iQdO1G1]O!LPQdO1G1]O!LXQdO'#F^OOQV1G1b1G1bO!#ZQtO1G1bPOOO1G2v1G2vP!L^OSO1G2vOOQS,5=},5=}OOQS'#Dp'#DpO0rQdO,5=}O!LfQdO,5=|O!LyQdO,5=|OOQS1G/u1G/uO!MRQdO,5>PO!McQdO,5>PO!MkQdO,5>PO!NOQdO,5>PO!N`QdO,5>POOQS1G3j1G3jOOQS7+$h7+$hO!8kQdO7+$pO#!RQdO1G.|O#!YQdO1G.|OOQS1G/`1G/`OOQS,5<`,5<`O'vQdO,5<`OOQS7+%P7+%PO#!aQdO7+%POOQS-E9r-E9rOOQS7+%Q7+%QO#!qQdO,5=vO'vQdO,5=vOOQS7+$g7+$gO#!vQdO7+%PO##OQdO7+%QO##TQdO1G3fOOQS7+%X7+%XO##eQdO1G3fO##mQdO7+%XOOQS,5<_,5<_O'vQdO,5<_O##rQdO1G3aOOQS-E9q-E9qO#$iQdO7+%]OOQS7+%_7+%_O#$wQdO1G3aO#%fQdO7+%_O#%kQdO1G3gO#%{QdO1G3gO#&TQdO7+%]O#&YQdO,5>dO#&sQdO,5>dO#&sQdO,5>dOOQS'#Dx'#DxO#'UO&jO'#DzO#'aO`O'#HyOOOW1G3}1G3}O#'fQdO1G3}O#'nQdO1G3}O#'yQ#xO7+(fO#(jQtO1G2UP#)TQdO'#GOOOQS,5nQdO,5sQdO1G4OOOQS-E9y-E9yO#?^QdO1G4OO<[QdO'#H{OOOO'#D{'#D{OOOO'#F|'#F|O#?oO&jO,5:fOOOW,5>e,5>eOOOW7+)i7+)iO#?zQdO7+)iO#@SQdO1G2zO#@mQdO1G2zP'vQdO'#FuO0rQdO<mO#BQQdO,5>mOOQS1G0v1G0vOOQS<rO#KgQdO,5>rO#KrQdO,5>rO#K}QdO,5>qO#L`QdO,5>qOOQS1G1Y1G1YOOQS,5;p,5;pOOQV<VAN>VO$ oQdO<cAN>cO0rQdO1G1|O$!PQtO1G1|P$!ZQdO'#FvOOQS1G2R1G2RP$!hQdO'#F{O$!uQdO7+)jO$#`QdO,5>gOOOO-E9z-E9zOOOW<tO$4{QdO,5>tO1XQdO,5vO$)nQdO,5>vOOQS1G1p1G1pOOQS,5<[,5<[OOQU7+'P7+'PO$+zQdO1G/iO$)nQdO,5wO$8zQdO,5>wOOQS1G1s1G1sOOQS7+'S7+'SP$)nQdO'#GdO$9SQdO1G4bO$9^QdO1G4bO$9fQdO1G4bOOQS7+%T7+%TO$9tQdO1G1tO$:SQtO'#FaO$:ZQdO,5<}OOQS,5<},5<}O$:iQdO1G4cOOQS-E:a-E:aO$)nQdO,5<|O$:pQdO,5<|O$:uQdO7+)|OOQS-E:`-E:`O$;PQdO7+)|O$)nQdO,5S~O%cOS%^OSSOS%]PQ~OPdOVaOfoOhYOopOs!POvqO!PrO!Q{O!T!SO!U!RO!XZO!][O!h`O!r`O!s`O!t`O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#l!QO#o!TO#s!UO#u!VO#z!WO#}hO$P!XO%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~O%]!YO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%j![O%k!]O%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aO~Ok%xXl%xXm%xXn%xXo%xXp%xXs%xXz%xX{%xX!x%xX#g%xX%[%xX%_%xX%z%xXg%xX!T%xX!U%xX%{%xX!W%xX![%xX!Q%xX#[%xXt%xX!m%xX~P%SOfoOhYO!XZO!][O!h`O!r`O!s`O!t`O%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~Oz%wX{%wX#g%wX%[%wX%_%wX%z%wX~Ok!pOl!qOm!oOn!oOo!rOp!sOs!tO!x%wX~P)pOV!zOg!|Oo0cOv0qO!PrO~P'vOV#OOo0cOv0qO!W#PO~P'vOV#SOa#TOo0cOv0qO![#UO~P'vOQ#XO%`#XO%a#ZO~OQ#^OR#[O%`#^O%a#`O~OV%iX_%iXa%iXh%iXk%iXl%iXm%iXn%iXo%iXp%iXs%iXz%iX!X%iX!f%iX%j%iX%k%iX%l%iX%m%iX%n%iX%o%iX%p%iX%q%iX%r%iX%s%iXg%iX!T%iX!U%iX~O&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O{%iX!x%iX#g%iX%[%iX%_%iX%z%iX%{%iX!W%iX![%iX!Q%iX#[%iXt%iX!m%iX~P,eOz#dO{%hX!x%hX#g%hX%[%hX%_%hX%z%hX~Oo0cOv0qO~P'vO#g#gO%[#iO%_#iO~O%uWO~O!T#nO#u!VO#z!WO#}hO~OopO~P'vOV#sOa#tO%uWO{wP~OV#xOo0cOv0qO!Q#yO~P'vO{#{O!x$QO%z#|O#g!yX%[!yX%_!yX~OV#xOo0cOv0qO#g#SX%[#SX%_#SX~P'vOo0cOv0qO#g#WX%[#WX%_#WX~P'vOh$WO%uWO~O!f$YO!r$YO%uWO~OV$eO~P'vO!U$gO#s$hO#u$iO~O{$jO~OV$qO~P'vOS$sO%[$rO%_$rO%c$tO~OV$}Oa$}Og%POo0cOv0qO~P'vOo0cOv0qO{%SO~P'vO&Y%UO~Oa!bOh!iO!X!kO!f!mOVba_bakbalbambanbaobapbasbazba{ba!xba#gba%[ba%_ba%jba%kba%lba%mba%nba%oba%pba%qba%rba%sba%zbagba!Tba!Uba%{ba!Wba![ba!Qba#[batba!mba~On%ZO~Oo%ZO~P'vOo0cO~P'vOk0eOl0fOm0dOn0dOo0mOp0nOs0rOg%wX!T%wX!U%wX%{%wX!W%wX![%wX!Q%wX#[%wX!m%wX~P)pO%{%]Og%vXz%vX!T%vX!U%vX!W%vX{%vX~Og%_Oz%`O!T%dO!U%cO~Og%_O~Oz%gO!T%dO!U%cO!W&SX~O!W%kO~Oz%lO{%nO!T%dO!U%cO![%}X~O![%rO~O![%sO~OQ#XO%`#XO%a%uO~OV%wOo0cOv0qO!PrO~P'vOQ#^OR#[O%`#^O%a%zO~OV!qa_!qaa!qah!qak!qal!qam!qan!qao!qap!qas!qaz!qa{!qa!X!qa!f!qa!x!qa#g!qa%[!qa%_!qa%j!qa%k!qa%l!qa%m!qa%n!qa%o!qa%p!qa%q!qa%r!qa%s!qa%z!qag!qa!T!qa!U!qa%{!qa!W!qa![!qa!Q!qa#[!qat!qa!m!qa~P#yOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P%SOV&OOopOvqO{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P'vOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#g$zX%[$zX%_$zX~P'vO#g#gO%[&TO%_&TO~O!f&UOh&sX%[&sXz&sX#[&sX#g&sX%_&sX#Z&sXg&sX~Oh!iO%[&WO~Okealeameaneaoeapeaseazea{ea!xea#gea%[ea%_ea%zeagea!Tea!Uea%{ea!Wea![ea!Qea#[eatea!mea~P%SOsqazqa{qa#gqa%[qa%_qa%zqa~Ok!pOl!qOm!oOn!oOo!rOp!sO!xqa~PEcO%z&YOz%yX{%yX~O%uWOz%yX{%yX~Oz&]O{wX~O{&_O~Oz%lO#g%}X%[%}X%_%}Xg%}X{%}X![%}X!m%}X%z%}X~OV0lOo0cOv0qO!PrO~P'vO%z#|O#gUa%[Ua%_Ua~Oz&hO#g&PX%[&PX%_&PXn&PX~P%SOz&kO!Q&jO#g#Wa%[#Wa%_#Wa~Oz&lO#[&nO#g&rX%[&rX%_&rXg&rX~O!f$YO!r$YO#Z&qO%uWO~O#Z&qO~Oz&sO#g&tX%[&tX%_&tX~Oz&uO#g&pX%[&pX%_&pX{&pX~O!X&wO%z&xO~Oz&|On&wX~P%SOn'PO~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO%['UO~P'vOt'YO#p'WO#q'XOP#naV#naf#nah#nao#nas#nav#na!P#na!Q#na!T#na!U#na!X#na!]#na!h#na!r#na!s#na!t#na!{#na!}#na#P#na#R#na#T#na#X#na#Z#na#^#na#_#na#a#na#c#na#l#na#o#na#s#na#u#na#z#na#}#na$P#na%X#na%o#na%p#na%t#na%u#na&Z#na&[#na&]#na&^#na&_#na&`#na&a#na&b#na&c#na&d#na&e#na&f#na&g#na&h#na&i#na&j#na%Z#na%_#na~Oz'ZO#[']O{&xX~Oh'_O!X&wO~Oh!iO{$jO!X&wO~O{'eO~P%SO%['hO%_'hO~OS'iO%['hO%_'hO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%k!]O~P!#uO%kWi~P!#uOV!aO_!aOa!bOh!iO!X!kO!f!mO%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%m!_O%n!_O~P!&pO%mWi%nWi~P!&pOa!bOh!iO!X!kO!f!mOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%mWi%nWi%oWi%pWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~OV!aO_!aO%q!aO%r!aO%s!aO~P!)nOVWi_Wi%qWi%rWi%sWi~P!)nO!T%dO!U%cOg&VXz&VX~O%z'kO%{'kO~P,eOz'mOg&UX~Og'oO~Oz'pO{'rO!W&XX~Oo0cOv0qOz'pO{'sO!W&XX~P'vO!W'uO~Om!oOn!oOo!rOp!sOkjisjizji{ji!xji#gji%[ji%_ji%zji~Ol!qO~P!.aOlji~P!.aOk0eOl0fOm0dOn0dOo0mOp0nO~Ot'wO~P!/jOV'|Og'}Oo0cOv0qO~P'vOg'}Oz(OO~Og(QO~O!U(SO~Og(TOz(OO!T%dO!U%cO~P%SOk0eOl0fOm0dOn0dOo0mOp0nOgqa!Tqa!Uqa%{qa!Wqa![qa!Qqa#[qatqa!mqa~PEcOV'|Oo0cOv0qO!W&Sa~P'vOz(WO!W&Sa~O!W(XO~Oz(WO!T%dO!U%cO!W&Sa~P%SOV(]Oo0cOv0qO![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~P'vOz(^O![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~O![(aO~Oz(^O!T%dO!U%cO![%}a~P%SOz(dO!T%dO!U%cO![&Ta~P%SOz(gO{&lX![&lX!m&lX%z&lX~O{(kO![(mO!m(nO%z(jO~OV&OOopOvqO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~P'vOz(pO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~O!f&UOh&sa%[&saz&sa#[&sa#g&sa%_&sa#Z&sag&sa~O%[(uO~OV#sOa#tO%uWO~Oz&]O{wa~OopOvqO~P'vOz(^O#g%}a%[%}a%_%}ag%}a{%}a![%}a!m%}a%z%}a~P%SOz(zO#g%hX%[%hX%_%hX%z%hX~O%z#|O#gUi%[Ui%_Ui~O#g&Pa%[&Pa%_&Pan&Pa~P'vOz(}O#g&Pa%[&Pa%_&Pan&Pa~O%uWO#g&ra%[&ra%_&rag&ra~Oz)SO#g&ra%[&ra%_&rag&ra~Og)VO~OV)WOh$WO%uWO~O#Z)XO~O%uWO#g&ta%[&ta%_&ta~Oz)ZO#g&ta%[&ta%_&ta~Oo0cOv0qO#g&pa%[&pa%_&pa{&pa~P'vOz)^O#g&pa%[&pa%_&pa{&pa~OV)`Oa)`O%uWO~O%z)eO~Ot)hO#j)gOP#hiV#hif#hih#hio#his#hiv#hi!P#hi!Q#hi!T#hi!U#hi!X#hi!]#hi!h#hi!r#hi!s#hi!t#hi!{#hi!}#hi#P#hi#R#hi#T#hi#X#hi#Z#hi#^#hi#_#hi#a#hi#c#hi#l#hi#o#hi#s#hi#u#hi#z#hi#}#hi$P#hi%X#hi%o#hi%p#hi%t#hi%u#hi&Z#hi&[#hi&]#hi&^#hi&_#hi&`#hi&a#hi&b#hi&c#hi&d#hi&e#hi&f#hi&g#hi&h#hi&i#hi&j#hi%Z#hi%_#hi~Ot)iOP#kiV#kif#kih#kio#kis#kiv#ki!P#ki!Q#ki!T#ki!U#ki!X#ki!]#ki!h#ki!r#ki!s#ki!t#ki!{#ki!}#ki#P#ki#R#ki#T#ki#X#ki#Z#ki#^#ki#_#ki#a#ki#c#ki#l#ki#o#ki#s#ki#u#ki#z#ki#}#ki$P#ki%X#ki%o#ki%p#ki%t#ki%u#ki&Z#ki&[#ki&]#ki&^#ki&_#ki&`#ki&a#ki&b#ki&c#ki&d#ki&e#ki&f#ki&g#ki&h#ki&i#ki&j#ki%Z#ki%_#ki~OV)kOn&wa~P'vOz)lOn&wa~Oz)lOn&wa~P%SOn)pO~O%Y)tO~Ot)wO#p'WO#q)vOP#niV#nif#nih#nio#nis#niv#ni!P#ni!Q#ni!T#ni!U#ni!X#ni!]#ni!h#ni!r#ni!s#ni!t#ni!{#ni!}#ni#P#ni#R#ni#T#ni#X#ni#Z#ni#^#ni#_#ni#a#ni#c#ni#l#ni#o#ni#s#ni#u#ni#z#ni#}#ni$P#ni%X#ni%o#ni%p#ni%t#ni%u#ni&Z#ni&[#ni&]#ni&^#ni&_#ni&`#ni&a#ni&b#ni&c#ni&d#ni&e#ni&f#ni&g#ni&h#ni&i#ni&j#ni%Z#ni%_#ni~OV)zOo0cOv0qO{$jO~P'vOo0cOv0qO{&xa~P'vOz*OO{&xa~OV*SOa*TOg*WO%q*UO%uWO~O{$jO&{*YO~Oh'_O~Oh!iO{$jO~O%[*_O~O%[*aO%_*aO~OV$}Oa$}Oo0cOv0qOg&Ua~P'vOz*dOg&Ua~Oo0cOv0qO{*gO!W&Xa~P'vOz*hO!W&Xa~Oo0cOv0qOz*hO{*kO!W&Xa~P'vOo0cOv0qOz*hO!W&Xa~P'vOz*hO{*kO!W&Xa~Om0dOn0dOo0mOp0nOgjikjisjizji!Tji!Uji%{ji!Wji{ji![ji#gji%[ji%_ji!Qji#[jitji!mji%zji~Ol0fO~P!NkOlji~P!NkOV'|Og*pOo0cOv0qO~P'vOn*rO~Og*pOz*tO~Og*uO~OV'|Oo0cOv0qO!W&Si~P'vOz*vO!W&Si~O!W*wO~OV(]Oo0cOv0qO![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~P'vOz*zO!T%dO!U%cO![&Ti~Oz*}O![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~O![+OO~Oa+QOo0cOv0qO![&Ti~P'vOz*zO![&Ti~O![+SO~OV+UOo0cOv0qO{&la![&la!m&la%z&la~P'vOz+VO{&la![&la!m&la%z&la~O!]+YO&n+[O![!nX~O![+^O~O{(kO![+_O~O{(kO![+_O!m+`O~OV&OOopOvqO{%hq!x%hq#g%hq%[%hq%_%hq%z%hq~P'vOz$ri{$ri!x$ri#g$ri%[$ri%_$ri%z$ri~P%SOV&OOopOvqO~P'vOV&OOo0cOv0qO#g%ha%[%ha%_%ha%z%ha~P'vOz+aO#g%ha%[%ha%_%ha%z%ha~Oz$ia#g$ia%[$ia%_$ian$ia~P%SO#g&Pi%[&Pi%_&Pin&Pi~P'vOz+dO#g#Wq%[#Wq%_#Wq~O#[+eOz$va#g$va%[$va%_$vag$va~O%uWO#g&ri%[&ri%_&rig&ri~Oz+gO#g&ri%[&ri%_&rig&ri~OV+iOh$WO%uWO~O%uWO#g&ti%[&ti%_&ti~Oo0cOv0qO#g&pi%[&pi%_&pi{&pi~P'vO{#{Oz#eX!W#eX~Oz+mO!W&uX~O!W+oO~Ot+rO#j)gOP#hqV#hqf#hqh#hqo#hqs#hqv#hq!P#hq!Q#hq!T#hq!U#hq!X#hq!]#hq!h#hq!r#hq!s#hq!t#hq!{#hq!}#hq#P#hq#R#hq#T#hq#X#hq#Z#hq#^#hq#_#hq#a#hq#c#hq#l#hq#o#hq#s#hq#u#hq#z#hq#}#hq$P#hq%X#hq%o#hq%p#hq%t#hq%u#hq&Z#hq&[#hq&]#hq&^#hq&_#hq&`#hq&a#hq&b#hq&c#hq&d#hq&e#hq&f#hq&g#hq&h#hq&i#hq&j#hq%Z#hq%_#hq~On$|az$|a~P%SOV)kOn&wi~P'vOz+yOn&wi~Oz,TO{$jO#[,TO~O#q,VOP#nqV#nqf#nqh#nqo#nqs#nqv#nq!P#nq!Q#nq!T#nq!U#nq!X#nq!]#nq!h#nq!r#nq!s#nq!t#nq!{#nq!}#nq#P#nq#R#nq#T#nq#X#nq#Z#nq#^#nq#_#nq#a#nq#c#nq#l#nq#o#nq#s#nq#u#nq#z#nq#}#nq$P#nq%X#nq%o#nq%p#nq%t#nq%u#nq&Z#nq&[#nq&]#nq&^#nq&_#nq&`#nq&a#nq&b#nq&c#nq&d#nq&e#nq&f#nq&g#nq&h#nq&i#nq&j#nq%Z#nq%_#nq~O#[,WOz%Oa{%Oa~Oo0cOv0qO{&xi~P'vOz,YO{&xi~O{#{O%z,[Og&zXz&zX~O%uWOg&zXz&zX~Oz,`Og&yX~Og,bO~O%Y,eO~O!T%dO!U%cOg&Viz&Vi~OV$}Oa$}Oo0cOv0qOg&Ui~P'vO{,hOz$la!W$la~Oo0cOv0qO{,iOz$la!W$la~P'vOo0cOv0qO{*gO!W&Xi~P'vOz,lO!W&Xi~Oo0cOv0qOz,lO!W&Xi~P'vOz,lO{,oO!W&Xi~Og$hiz$hi!W$hi~P%SOV'|Oo0cOv0qO~P'vOn,qO~OV'|Og,rOo0cOv0qO~P'vOV'|Oo0cOv0qO!W&Sq~P'vOz$gi![$gi#g$gi%[$gi%_$gig$gi{$gi!m$gi%z$gi~P%SOV(]Oo0cOv0qO~P'vOa+QOo0cOv0qO![&Tq~P'vOz,sO![&Tq~O![,tO~OV(]Oo0cOv0qO![%}q#g%}q%[%}q%_%}qg%}q{%}q!m%}q%z%}q~P'vO{,uO~OV+UOo0cOv0qO{&li![&li!m&li%z&li~P'vOz,zO{&li![&li!m&li%z&li~O!]+YO&n+[O![!na~O{(kO![,}O~OV&OOo0cOv0qO#g%hi%[%hi%_%hi%z%hi~P'vOz-OO#g%hi%[%hi%_%hi%z%hi~O%uWO#g&rq%[&rq%_&rqg&rq~Oz-RO#g&rq%[&rq%_&rqg&rq~OV)`Oa)`O%uWO!W&ua~Oz-TO!W&ua~On$|iz$|i~P%SOV)kO~P'vOV)kOn&wq~P'vOt-XOP#myV#myf#myh#myo#mys#myv#my!P#my!Q#my!T#my!U#my!X#my!]#my!h#my!r#my!s#my!t#my!{#my!}#my#P#my#R#my#T#my#X#my#Z#my#^#my#_#my#a#my#c#my#l#my#o#my#s#my#u#my#z#my#}#my$P#my%X#my%o#my%p#my%t#my%u#my&Z#my&[#my&]#my&^#my&_#my&`#my&a#my&b#my&c#my&d#my&e#my&f#my&g#my&h#my&i#my&j#my%Z#my%_#my~O%Z-]O%_-]O~P`O#q-^OP#nyV#nyf#nyh#nyo#nys#nyv#ny!P#ny!Q#ny!T#ny!U#ny!X#ny!]#ny!h#ny!r#ny!s#ny!t#ny!{#ny!}#ny#P#ny#R#ny#T#ny#X#ny#Z#ny#^#ny#_#ny#a#ny#c#ny#l#ny#o#ny#s#ny#u#ny#z#ny#}#ny$P#ny%X#ny%o#ny%p#ny%t#ny%u#ny&Z#ny&[#ny&]#ny&^#ny&_#ny&`#ny&a#ny&b#ny&c#ny&d#ny&e#ny&f#ny&g#ny&h#ny&i#ny&j#ny%Z#ny%_#ny~Oz-aO{$jO#[-aO~Oo0cOv0qO{&xq~P'vOz-dO{&xq~O%z,[Og&zaz&za~O{#{Og&zaz&za~OV*SOa*TO%q*UO%uWOg&ya~Oz-hOg&ya~O$S-lO~OV$}Oa$}Oo0cOv0qO~P'vOo0cOv0qO{-mOz$li!W$li~P'vOo0cOv0qOz$li!W$li~P'vO{-mOz$li!W$li~Oo0cOv0qO{*gO~P'vOo0cOv0qO{*gO!W&Xq~P'vOz-pO!W&Xq~Oo0cOv0qOz-pO!W&Xq~P'vOs-sO!T%dO!U%cOg&Oq!W&Oq![&Oqz&Oq~P!/jOa+QOo0cOv0qO![&Ty~P'vOz$ji![$ji~P%SOa+QOo0cOv0qO~P'vOV+UOo0cOv0qO~P'vOV+UOo0cOv0qO{&lq![&lq!m&lq%z&lq~P'vO{(kO![-xO!m-yO%z-wO~OV&OOo0cOv0qO#g%hq%[%hq%_%hq%z%hq~P'vO%uWO#g&ry%[&ry%_&ryg&ry~OV)`Oa)`O%uWO!W&ui~Ot-}OP#m!RV#m!Rf#m!Rh#m!Ro#m!Rs#m!Rv#m!R!P#m!R!Q#m!R!T#m!R!U#m!R!X#m!R!]#m!R!h#m!R!r#m!R!s#m!R!t#m!R!{#m!R!}#m!R#P#m!R#R#m!R#T#m!R#X#m!R#Z#m!R#^#m!R#_#m!R#a#m!R#c#m!R#l#m!R#o#m!R#s#m!R#u#m!R#z#m!R#}#m!R$P#m!R%X#m!R%o#m!R%p#m!R%t#m!R%u#m!R&Z#m!R&[#m!R&]#m!R&^#m!R&_#m!R&`#m!R&a#m!R&b#m!R&c#m!R&d#m!R&e#m!R&f#m!R&g#m!R&h#m!R&i#m!R&j#m!R%Z#m!R%_#m!R~Oo0cOv0qO{&xy~P'vOV*SOa*TO%q*UO%uWOg&yi~O$S-lO%Z.VO%_.VO~OV.aOh._O!X.^O!].`O!h.YO!s.[O!t.[O%p.XO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O~Oo0cOv0qOz$lq!W$lq~P'vO{.fOz$lq!W$lq~Oo0cOv0qO{*gO!W&Xy~P'vOz.gO!W&Xy~Oo0cOv.kO~P'vOs-sO!T%dO!U%cOg&Oy!W&Oy![&Oyz&Oy~P!/jO{(kO![.nO~O{(kO![.nO!m.oO~OV*SOa*TO%q*UO%uWO~Oh.tO!f.rOz$TX#[$TX%j$TXg$TX~Os$TX{$TX!W$TX![$TX~P$-bO%o.vO%p.vOs$UXz$UX{$UX#[$UX%j$UX!W$UXg$UX![$UX~O!h.xO~Oz.|O#[/OO%j.yOs&|X{&|X!W&|Xg&|X~Oa/RO~P$)zOh.tOs&}Xz&}X{&}X#[&}X%j&}X!W&}Xg&}X![&}X~Os/VO{$jO~Oo0cOv0qOz$ly!W$ly~P'vOo0cOv0qO{*gO!W&X!R~P'vOz/ZO!W&X!R~Og&RXs&RX!T&RX!U&RX!W&RX![&RXz&RX~P!/jOs-sO!T%dO!U%cOg&Qa!W&Qa![&Qaz&Qa~O{(kO![/^O~O!f.rOh$[as$[az$[a{$[a#[$[a%j$[a!W$[ag$[a![$[a~O!h/eO~O%o.vO%p.vOs$Uaz$Ua{$Ua#[$Ua%j$Ua!W$Uag$Ua![$Ua~O%j.yOs$Yaz$Ya{$Ya#[$Ya!W$Yag$Ya![$Ya~Os&|a{&|a!W&|ag&|a~P$)nOz/jOs&|a{&|a!W&|ag&|a~O!W/mO~Og/mO~O{/oO~O![/pO~Oo0cOv0qO{*gO!W&X!Z~P'vO{/sO~O%z/tO~P$-bOz/uO#[/OO%j.yOg'PX~Oz/uOg'PX~Og/wO~O!h/xO~O#[/OOs%Saz%Sa{%Sa%j%Sa!W%Sag%Sa![%Sa~O#[/OO%j.yOs%Waz%Wa{%Wa!W%Wag%Wa~Os&|i{&|i!W&|ig&|i~P$)nOz/zO#[/OO%j.yO!['Oa~Og'Pa~P$)nOz0SOg'Pa~Oa0UO!['Oi~P$)zOz0WO!['Oi~Oz0WO#[/OO%j.yO!['Oi~O#[/OO%j.yOg$biz$bi~O%z0ZO~P$-bO#[/OO%j.yOg%Vaz%Va~Og'Pi~P$)nO{0^O~Oa0UO!['Oq~P$)zOz0`O!['Oq~O#[/OO%j.yOz%Ui![%Ui~Oa0UO~P$)zOa0UO!['Oy~P$)zO#[/OO%j.yOg$ciz$ci~O#[/OO%j.yOz%Uq![%Uq~Oz+aO#g%ha%[%ha%_%ha%z%ha~P%SOV&OOo0cOv0qO~P'vOn0hO~Oo0hO~P'vO{0iO~Ot0jO~P!/jO&]&Z&j&h&i&g&f&d&e&c&b&`&a&_&^&[%u~",goto:"!=j'QPPPPPP'RP'Z*s+[+t,_,y-fP.SP'Z.r.r'ZPPP'Z2[PPPPPP2[5PPP5PP7b7k=sPP=v>h>kPP'Z'ZPP>zPP'Z'ZPP'Z'Z'Z'Z'Z?O?w'ZP?zP@QDXGuGyPG|HWH['ZPPPH_Hk'RP'R'RP'RP'RP'RP'RP'R'R'RP'RPP'RPP'RP'RPHqH}IVPI^IdPI^PI^I^PPPI^PKrPK{LVL]KrPI^LfPI^PLmLsPLwM]MzNeLwLwNkNxLwLwLwLw! ^! d! g! l! o! y!!P!!]!!o!!u!#P!#V!#s!#y!$P!$Z!$a!$g!$y!%T!%Z!%a!%k!%q!%w!%}!&T!&Z!&e!&k!&u!&{!'U!'[!'k!'s!'}!(UPPPPPPPPPPP!([!(_!(e!(n!(x!)TPPPPPPPPPPPP!-u!/Z!3^!6oPP!6w!7W!7a!8Y!8P!8c!8i!8l!8o!8r!8z!9jPPPPPPPPPPPPPPPPP!9m!9q!9wP!:]!:a!:m!:v!;S!;j!;m!;p!;v!;|!_![!]Do!]!^Es!^!_FZ!_!`Gk!`!aHX!a!b%T!b!cIf!c!dJU!d!eK^!e!hJU!h!i!#f!i!tJU!t!u!,|!u!wJU!w!x!.t!x!}JU!}#O!0S#O#P&o#P#Q!0j#Q#R!1Q#R#SJU#S#T%T#T#UJU#U#VK^#V#YJU#Y#Z!#f#Z#fJU#f#g!,|#g#iJU#i#j!.t#j#oJU#o#p!1n#p#q!1s#q#r!2a#r#s!2f#s$g%T$g;'SJU;'S;=`KW<%lOJU`%YT&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T`%lP;=`<%l%To%v]&n`%c_OX%TXY%oY[%T[]%o]p%Tpq%oq#O%T#O#P&o#P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To&tX&n`OY%TYZ%oZ]%T]^%o^#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc'f[&n`O!_%T!_!`([!`#T%T#T#U(r#U#f%T#f#g(r#g#h(r#h#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(cTmR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(yT!mR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk)aV&n`&[ZOr%Trs)vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk){V&n`Or%Trs*bs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk*iT&n`&^ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To+PZS_&n`OY*xYZ%TZ]*x]^%T^#o*x#o#p+r#p#q*x#q#r+r#r;'S*x;'S;=`,^<%lO*x_+wTS_OY+rZ]+r^;'S+r;'S;=`,W<%lO+r_,ZP;=`<%l+ro,aP;=`<%l*xj,kV%rQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-XT!xY&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-oV%lQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.]V&n`&ZZOw%Twx.rx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.wV&n`Ow%Twx/^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/eT&n`&]ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/{ThZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc0cTgR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk0yXVZ&n`Oz%Tz{1f{!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk1mVaR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk2ZV%oZ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc2wTzR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To3_W%pZ&n`O!_%T!_!`-Q!`!a3w!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Td4OT&{S&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk4fX!fQ&n`O!O%T!O!P5R!P!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5WV&n`O!O%T!O!P5m!P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5tT!rZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti6[a!hX&n`O!Q%T!Q![6T![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S6T#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti7fZ&n`O{%T{|8X|}%T}!O8X!O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8^V&n`O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8z]!hX&n`O!Q%T!Q![8s![!l%T!l!m9s!m#R%T#R#S8s#S#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti9zT!hX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk:bX%qR&n`O!P%T!P!Q:}!Q!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj;UV%sQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti;ro!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!d%T!d!e?q!e!g%T!g!h7a!h!l%T!l!m9s!m!q%T!q!rA]!r!z%T!z!{Bq!{#R%T#R#S>_#S#U%T#U#V?q#V#X%T#X#Y7a#Y#^%T#^#_9s#_#c%T#c#dA]#d#l%T#l#mBq#m#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti=xV&n`O!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti>fc!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S>_#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti?vY&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti@mY!hX&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiAbX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBUX!hX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBv]&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiCv]!hX&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToDvV{_&n`O!_%T!_!`E]!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TcEdT%{R&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkEzT#gZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkFbXmR&n`O!^%T!^!_F}!_!`([!`!a([!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjGUV%mQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkGrV%zZ&n`O!_%T!_!`([!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkH`WmR&n`O!_%T!_!`([!`!aHx!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjIPV%nQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkIoV_Q#}P&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToJ_]&n`&YS%uZO!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoKZP;=`<%lJUoKge&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!tJU!t!uLx!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#gLx#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoMRa&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUkN_V&n`&`ZOr%TrsNts#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkNyV&n`Or%Trs! `s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! gT&n`&bZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! }V&n`&_ZOw%Twx!!dx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!!iV&n`Ow%Twx!#Ox#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!#VT&n`&aZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!#oe&n`&YS%uZOr%Trs!%Qsw%Twx!&px!Q%T!Q![JU![!c%T!c!tJU!t!u!(`!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#g!(`#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!%XV&n`&dZOr%Trs!%ns#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!%sV&n`Or%Trs!&Ys#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&aT&n`&fZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&wV&n`&cZOw%Twx!'^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!'cV&n`Ow%Twx!'xx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!(PT&n`&eZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!(ia&n`&YS%uZOr%Trs!)nsw%Twx!+^x!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!)uV&n`&hZOr%Trs!*[s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*aV&n`Or%Trs!*vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*}T&n`&jZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!+eV&n`&gZOw%Twx!+zx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,PV&n`Ow%Twx!,fx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,mT&n`&iZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!-Vi&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!dJU!d!eLx!e!hJU!h!i!(`!i!}JU!}#R%T#R#SJU#S#T%T#T#UJU#U#VLx#V#YJU#Y#Z!(`#Z#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUo!.}a&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!0ZT!XZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc!0qT!WR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj!1XV%kQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!1sO!]~k!1zV%jR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!2fO![~i!2mT%tX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T",tokenizers:[Ume,$me,qme,Wme,0,1,2,3,4],topRules:{Script:[0,5]},specialized:[{term:221,get:t=>Yme[t]||-1}],tokenPrec:7668}),cM=new mce,gH=new Set(["Script","Body","FunctionDefinition","ClassDefinition","LambdaExpression","ForStatement","MatchClause"]);function w1(t){return(e,n,r)=>{if(r)return!1;let s=e.node.getChild("VariableName");return s&&n(s,t),!0}}const Zme={FunctionDefinition:w1("function"),ClassDefinition:w1("class"),ForStatement(t,e,n){if(n){for(let r=t.node.firstChild;r;r=r.nextSibling)if(r.name=="VariableName")e(r,"variable");else if(r.name=="in")break}},ImportStatement(t,e){var n,r;let{node:s}=t,i=((n=s.firstChild)===null||n===void 0?void 0:n.name)=="from";for(let a=s.getChild("import");a;a=a.nextSibling)a.name=="VariableName"&&((r=a.nextSibling)===null||r===void 0?void 0:r.name)!="as"&&e(a,i?"variable":"namespace")},AssignStatement(t,e){for(let n=t.node.firstChild;n;n=n.nextSibling)if(n.name=="VariableName")e(n,"variable");else if(n.name==":"||n.name=="AssignOp")break},ParamList(t,e){for(let n=null,r=t.node.firstChild;r;r=r.nextSibling)r.name=="VariableName"&&(!n||!/\*|AssignOp/.test(n.name))&&e(r,"variable"),n=r},CapturePattern:w1("variable"),AsPattern:w1("variable"),__proto__:null};function xH(t,e){let n=cM.get(e);if(n)return n;let r=[],s=!0;function i(a,l){let c=t.sliceString(a.from,a.to);r.push({label:c,type:l})}return e.cursor(ds.IncludeAnonymous).iterate(a=>{if(a.name){let l=Zme[a.name];if(l&&l(a,i,s)||!s&&gH.has(a.name))return!1;s=!1}else if(a.to-a.from>8192){for(let l of xH(t,a.node))r.push(l);return!1}}),cM.set(e,r),r}const uM=/^[\w\xa1-\uffff][\w\d\xa1-\uffff]*$/,vH=["String","FormatString","Comment","PropertyName"];function Jme(t){let e=ws(t.state).resolveInner(t.pos,-1);if(vH.indexOf(e.name)>-1)return null;let n=e.name=="VariableName"||e.to-e.from<20&&uM.test(t.state.sliceDoc(e.from,e.to));if(!n&&!t.explicit)return null;let r=[];for(let s=e;s;s=s.parent)gH.has(s.name)&&(r=r.concat(xH(t.state.doc,s)));return{options:r,from:n?e.from:t.pos,validFor:uM}}const e0e=["__annotations__","__builtins__","__debug__","__doc__","__import__","__name__","__loader__","__package__","__spec__","False","None","True"].map(t=>({label:t,type:"constant"})).concat(["ArithmeticError","AssertionError","AttributeError","BaseException","BlockingIOError","BrokenPipeError","BufferError","BytesWarning","ChildProcessError","ConnectionAbortedError","ConnectionError","ConnectionRefusedError","ConnectionResetError","DeprecationWarning","EOFError","Ellipsis","EncodingWarning","EnvironmentError","Exception","FileExistsError","FileNotFoundError","FloatingPointError","FutureWarning","GeneratorExit","IOError","ImportError","ImportWarning","IndentationError","IndexError","InterruptedError","IsADirectoryError","KeyError","KeyboardInterrupt","LookupError","MemoryError","ModuleNotFoundError","NameError","NotADirectoryError","NotImplemented","NotImplementedError","OSError","OverflowError","PendingDeprecationWarning","PermissionError","ProcessLookupError","RecursionError","ReferenceError","ResourceWarning","RuntimeError","RuntimeWarning","StopAsyncIteration","StopIteration","SyntaxError","SyntaxWarning","SystemError","SystemExit","TabError","TimeoutError","TypeError","UnboundLocalError","UnicodeDecodeError","UnicodeEncodeError","UnicodeError","UnicodeTranslateError","UnicodeWarning","UserWarning","ValueError","Warning","ZeroDivisionError"].map(t=>({label:t,type:"type"}))).concat(["bool","bytearray","bytes","classmethod","complex","float","frozenset","int","list","map","memoryview","object","range","set","staticmethod","str","super","tuple","type"].map(t=>({label:t,type:"class"}))).concat(["abs","aiter","all","anext","any","ascii","bin","breakpoint","callable","chr","compile","delattr","dict","dir","divmod","enumerate","eval","exec","exit","filter","format","getattr","globals","hasattr","hash","help","hex","id","input","isinstance","issubclass","iter","len","license","locals","max","min","next","oct","open","ord","pow","print","property","quit","repr","reversed","round","setattr","slice","sorted","sum","vars","zip"].map(t=>({label:t,type:"function"}))),t0e=[xl("def ${name}(${params}):\n ${}",{label:"def",detail:"function",type:"keyword"}),xl("for ${name} in ${collection}:\n ${}",{label:"for",detail:"loop",type:"keyword"}),xl("while ${}:\n ${}",{label:"while",detail:"loop",type:"keyword"}),xl("try:\n ${}\nexcept ${error}:\n ${}",{label:"try",detail:"/ except block",type:"keyword"}),xl(`if \${}: + +`,{label:"if",detail:"block",type:"keyword"}),xl("if ${}:\n ${}\nelse:\n ${}",{label:"if",detail:"/ else block",type:"keyword"}),xl("class ${name}:\n def __init__(self, ${params}):\n ${}",{label:"class",detail:"definition",type:"keyword"}),xl("import ${module}",{label:"import",detail:"statement",type:"keyword"}),xl("from ${module} import ${names}",{label:"from",detail:"import",type:"keyword"})],n0e=she(vH,U$(e0e.concat(t0e)));function iS(t){let{node:e,pos:n}=t,r=t.lineIndent(n,-1),s=null;for(;;){let i=e.childBefore(n);if(i)if(i.name=="Comment")n=i.from;else if(i.name=="Body"||i.name=="MatchBody")t.baseIndentFor(i)+t.unit<=r&&(s=i),e=i;else if(i.name=="MatchClause")e=i;else if(i.type.is("Statement"))e=i;else break;else break}return s}function aS(t,e){let n=t.baseIndentFor(e),r=t.lineAt(t.pos,-1),s=r.from+r.text.length;return/^\s*($|#)/.test(r.text)&&t.node.ton?null:n+t.unit}const oS=U0.define({name:"python",parser:Kme.configure({props:[lb.add({Body:t=>{var e;let n=/^\s*(#|$)/.test(t.textAfter)&&iS(t)||t.node;return(e=aS(t,n))!==null&&e!==void 0?e:t.continue()},MatchBody:t=>{var e;let n=iS(t);return(e=aS(t,n||t.node))!==null&&e!==void 0?e:t.continue()},IfStatement:t=>/^\s*(else:|elif )/.test(t.textAfter)?t.baseIndent:t.continue(),"ForStatement WhileStatement":t=>/^\s*else:/.test(t.textAfter)?t.baseIndent:t.continue(),TryStatement:t=>/^\s*(except[ :]|finally:|else:)/.test(t.textAfter)?t.baseIndent:t.continue(),MatchStatement:t=>/^\s*case /.test(t.textAfter)?t.baseIndent+t.unit:t.continue(),"TupleExpression ComprehensionExpression ParamList ArgList ParenthesizedExpression":H4({closing:")"}),"DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression":H4({closing:"}"}),"ArrayExpression ArrayComprehensionExpression":H4({closing:"]"}),MemberExpression:t=>t.baseIndent+t.unit,"String FormatString":()=>null,Script:t=>{var e;let n=iS(t);return(e=n&&aS(t,n))!==null&&e!==void 0?e:t.continue()}}),g6.add({"ArrayExpression DictionaryExpression SetExpression TupleExpression":Lq,Body:(t,e)=>({from:t.from+1,to:t.to-(t.to==e.doc.length?0:1)}),"String FormatString":(t,e)=>({from:e.doc.lineAt(t.from).to,to:t.to})})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"'''",'"""'],stringPrefixes:["f","fr","rf","r","u","b","br","rb","F","FR","RF","R","U","B","BR","RB"]},commentTokens:{line:"#"},indentOnInput:/^\s*([\}\]\)]|else:|elif |except |finally:|case\s+[^:]*:?)$/}});function r0e(){return new Pq(oS,[oS.data.of({autocomplete:Jme}),oS.data.of({autocomplete:n0e})])}const s0e=f6({String:xe.string,Number:xe.number,"True False":xe.bool,PropertyName:xe.propertyName,Null:xe.null,", :":xe.separator,"[ ]":xe.squareBracket,"{ }":xe.brace}),i0e=tp.deserialize({version:14,states:"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l",stateData:"#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O",goto:"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R",nodeNames:"⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array",maxTerm:25,nodeProps:[["isolate",-2,6,11,""],["openedBy",7,"{",14,"["],["closedBy",8,"}",15,"]"]],propSources:[s0e],skippedNodes:[0],repeatNodeCount:2,tokenData:"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~",tokenizers:[0],topRules:{JsonText:[0,1]},tokenPrec:0}),a0e=()=>t=>{try{JSON.parse(t.state.doc.toString())}catch(e){if(!(e instanceof SyntaxError))throw e;const n=o0e(e,t.state.doc);return[{from:n,message:e.message,severity:"error",to:n}]}return[]};function o0e(t,e){let n;return(n=t.message.match(/at position (\d+)/))?Math.min(+n[1],e.length):(n=t.message.match(/at line (\d+) column (\d+)/))?Math.min(e.line(+n[1]).from+ +n[2]-1,e.length):0}const l0e=U0.define({name:"json",parser:i0e.configure({props:[lb.add({Object:d_({except:/^\s*\}/}),Array:d_({except:/^\s*\]/})}),g6.add({"Object Array":Lq})]}),languageData:{closeBrackets:{brackets:["[","{",'"']},indentOnInput:/^\s*[\}\]]$/}});function c0e(){return new Pq(l0e)}const u0e={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(t,e){let n;if(!e.inString&&(n=t.match(/^('''|"""|'|")/))&&(e.stringType=n[0],e.inString=!0),t.sol()&&!e.inString&&e.inArray===0&&(e.lhs=!0),e.inString){for(;e.inString;)if(t.match(e.stringType))e.inString=!1;else if(t.peek()==="\\")t.next(),t.next();else{if(t.eol())break;t.match(/^.[^\\\"\']*/)}return e.lhs?"property":"string"}else{if(e.inArray&&t.peek()==="]")return t.next(),e.inArray--,"bracket";if(e.lhs&&t.peek()==="["&&t.skipTo("]"))return t.next(),t.peek()==="]"&&t.next(),"atom";if(t.peek()==="#")return t.skipToEnd(),"comment";if(t.eatSpace())return null;if(e.lhs&&t.eatWhile(function(r){return r!="="&&r!=" "}))return"property";if(e.lhs&&t.peek()==="=")return t.next(),e.lhs=!1,null;if(!e.lhs&&t.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!e.lhs&&(t.match("true")||t.match("false")))return"atom";if(!e.lhs&&t.peek()==="[")return e.inArray++,t.next(),"bracket";if(!e.lhs&&t.match(/^\-?\d+(?:\.\d+)?/))return"number";t.eatSpace()||t.next()}return null},languageData:{commentTokens:{line:"#"}}},d0e={python:[r0e()],json:[c0e(),a0e()],toml:[x6.define(u0e)],text:[]};function h0e({value:t,onChange:e,language:n="text",readOnly:r=!1,height:s="400px",minHeight:i,maxHeight:a,placeholder:l,theme:c="dark",className:d=""}){const[h,m]=b.useState(!1);if(b.useEffect(()=>{m(!0)},[]),!h)return o.jsx("div",{className:`rounded-md border bg-muted animate-pulse ${d}`,style:{height:s,minHeight:i,maxHeight:a}});const g=[...d0e[n]||[],Ze.lineWrapping];return r&&g.push(Ze.editable.of(!1)),o.jsx("div",{className:`rounded-md overflow-hidden border ${d}`,children:o.jsx(lH,{value:t,height:s,minHeight:i,maxHeight:a,theme:c==="dark"?oH:void 0,extensions:g,onChange:e,placeholder:l,basicSetup:{lineNumbers:!0,highlightActiveLineGutter:!0,highlightSpecialChars:!0,history:!0,foldGutter:!0,drawSelection:!0,dropCursor:!0,allowMultipleSelections:!0,indentOnInput:!0,syntaxHighlighting:!0,bracketMatching:!0,closeBrackets:!0,autocompletion:!0,rectangularSelection:!0,crosshairCursor:!0,highlightActiveLine:!0,highlightSelectionMatches:!0,closeBracketsKeymap:!0,defaultKeymap:!0,searchKeymap:!0,historyKeymap:!0,foldKeymap:!0,completionKeymap:!0,lintKeymap:!0}})})}function f0e(){const[t,e]=b.useState(!0),[n,r]=b.useState(!1),[s,i]=b.useState(!1),[a,l]=b.useState(!1),[c,d]=b.useState(!1),[h,m]=b.useState(!1),[g,x]=b.useState("visual"),[y,w]=b.useState(""),[S,k]=b.useState(!1),{toast:j}=fs(),[N,T]=b.useState(null),[E,_]=b.useState(null),[M,I]=b.useState(null),[P,L]=b.useState(null),[H,U]=b.useState(null),[ee,z]=b.useState(null),[Q,B]=b.useState(null),[X,J]=b.useState(null),[G,R]=b.useState(null),[ie,W]=b.useState(null),[q,V]=b.useState(null),[te,ne]=b.useState(null),[K,se]=b.useState(null),[re,oe]=b.useState(null),[Te,We]=b.useState(null),[Ye,Je]=b.useState(null),[Oe,Ve]=b.useState(null),[Ue,He]=b.useState(null),Ot=b.useRef(null),xt=b.useRef(!0),kn=b.useRef({}),It=b.useCallback(async()=>{try{const Fe=await tae();w(Fe),k(!1)}catch(Fe){j({variant:"destructive",title:"加载失败",description:Fe instanceof Error?Fe.message:"加载源代码失败"})}},[j]),Yt=b.useCallback(async()=>{try{e(!0);const Fe=await J9();kn.current=Fe,T(Fe.bot),_(Fe.personality);const rt=Fe.chat;rt.talk_value_rules||(rt.talk_value_rules=[]),I(rt),L(Fe.expression),U(Fe.emoji),z(Fe.memory),B(Fe.tool),J(Fe.mood),R(Fe.voice),W(Fe.lpmm_knowledge),V(Fe.keyword_reaction),ne(Fe.response_post_process),se(Fe.chinese_typo),oe(Fe.response_splitter),We(Fe.log),Je(Fe.debug),Ve(Fe.maim_message),He(Fe.telemetry),l(!1),xt.current=!1,await It()}catch(Fe){console.error("加载配置失败:",Fe),j({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}finally{e(!1)}},[j,It]);b.useEffect(()=>{Yt()},[Yt]);const _t=b.useCallback(async(Fe,rt)=>{if(!xt.current)try{i(!0),await rae(Fe,rt),l(!1)}catch(tn){console.error(`自动保存 ${Fe} 失败:`,tn),l(!0)}finally{i(!1)}},[]),mt=b.useCallback((Fe,rt)=>{xt.current||(l(!0),Ot.current&&clearTimeout(Ot.current),Ot.current=setTimeout(()=>{_t(Fe,rt)},2e3))},[_t]);b.useEffect(()=>{N&&!xt.current&&mt("bot",N)},[N,mt]),b.useEffect(()=>{E&&!xt.current&&mt("personality",E)},[E,mt]),b.useEffect(()=>{M&&!xt.current&&mt("chat",M)},[M,mt]),b.useEffect(()=>{P&&!xt.current&&mt("expression",P)},[P,mt]),b.useEffect(()=>{H&&!xt.current&&mt("emoji",H)},[H,mt]),b.useEffect(()=>{ee&&!xt.current&&mt("memory",ee)},[ee,mt]),b.useEffect(()=>{Q&&!xt.current&&mt("tool",Q)},[Q,mt]),b.useEffect(()=>{X&&!xt.current&&mt("mood",X)},[X,mt]),b.useEffect(()=>{G&&!xt.current&&mt("voice",G)},[G,mt]),b.useEffect(()=>{ie&&!xt.current&&mt("lpmm_knowledge",ie)},[ie,mt]),b.useEffect(()=>{q&&!xt.current&&mt("keyword_reaction",q)},[q,mt]),b.useEffect(()=>{te&&!xt.current&&mt("response_post_process",te)},[te,mt]),b.useEffect(()=>{K&&!xt.current&&mt("chinese_typo",K)},[K,mt]),b.useEffect(()=>{re&&!xt.current&&mt("response_splitter",re)},[re,mt]),b.useEffect(()=>{Te&&!xt.current&&mt("log",Te)},[Te,mt]),b.useEffect(()=>{Ye&&!xt.current&&mt("debug",Ye)},[Ye,mt]),b.useEffect(()=>{Oe&&!xt.current&&mt("maim_message",Oe)},[Oe,mt]),b.useEffect(()=>{Ue&&!xt.current&&mt("telemetry",Ue)},[Ue,mt]);const Ne=async()=>{try{r(!0),await nae(y),l(!1),k(!1),j({title:"保存成功",description:"配置已保存"}),await Yt()}catch(Fe){k(!0),j({variant:"destructive",title:"保存失败",description:Fe instanceof Error?Fe.message:"保存配置失败"})}finally{r(!1)}},Ie=async Fe=>{if(a){j({variant:"destructive",title:"切换失败",description:"请先保存当前更改"});return}if(x(Fe),Fe==="source")await It();else try{const rt=await J9();kn.current=rt,T(rt.bot),_(rt.personality);const tn=rt.chat;tn.talk_value_rules||(tn.talk_value_rules=[]),I(tn),L(rt.expression),U(rt.emoji),z(rt.memory),B(rt.tool),J(rt.mood),R(rt.voice),W(rt.lpmm_knowledge),V(rt.keyword_reaction),ne(rt.response_post_process),se(rt.chinese_typo),oe(rt.response_splitter),We(rt.log),Je(rt.debug),Ve(rt.maim_message),He(rt.telemetry),l(!1)}catch(rt){console.error("加载配置失败:",rt),j({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}},st=async()=>{try{r(!0),Ot.current&&clearTimeout(Ot.current);const Fe={...kn.current,bot:N,personality:E,chat:M,expression:P,emoji:H,memory:ee,tool:Q,mood:X,voice:G,lpmm_knowledge:ie,keyword_reaction:q,response_post_process:te,chinese_typo:K,response_splitter:re,log:Te,debug:Ye,maim_message:Oe,telemetry:Ue};await eE(Fe),l(!1),j({title:"保存成功",description:"麦麦主程序配置已保存"})}catch(Fe){console.error("保存配置失败:",Fe),j({title:"保存失败",description:Fe.message,variant:"destructive"})}finally{r(!1)}},yt=async()=>{try{d(!0),Jy().catch(()=>{}),m(!0)}catch(Fe){console.error("重启失败:",Fe),m(!1),j({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),d(!1)}},Pt=async()=>{try{r(!0),Ot.current&&clearTimeout(Ot.current);const Fe={...kn.current,bot:N,personality:E,chat:M,expression:P,emoji:H,memory:ee,tool:Q,mood:X,voice:G,lpmm_knowledge:ie,keyword_reaction:q,response_post_process:te,chinese_typo:K,response_splitter:re,log:Te,debug:Ye,maim_message:Oe,telemetry:Ue};await eE(Fe),l(!1),j({title:"保存成功",description:"配置已保存,即将重启麦麦..."}),await new Promise(rt=>setTimeout(rt,500)),await yt()}catch(Fe){console.error("保存失败:",Fe),j({title:"保存失败",description:Fe.message,variant:"destructive"})}finally{r(!1)}},At=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},zn=()=>{m(!1),d(!1),j({title:"重启失败",description:"服务器未能在预期时间内恢复,请手动检查",variant:"destructive"})};return t?o.jsx(wn,{className:"h-full",children:o.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:o.jsx("div",{className:"flex items-center justify-center h-64",children:o.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):o.jsx(wn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦主程序配置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的核心功能和行为设置"})]}),o.jsxs("div",{className:"flex gap-2 w-full sm:w-auto items-center",children:[o.jsx(ja,{value:g,onValueChange:Fe=>Ie(Fe),className:"w-auto",children:o.jsxs(Wi,{className:"h-9",children:[o.jsxs(Lt,{value:"visual",className:"text-xs sm:text-sm px-2 sm:px-3",children:[o.jsx(Aee,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"可视化"]}),o.jsxs(Lt,{value:"source",className:"text-xs sm:text-sm px-2 sm:px-3",children:[o.jsx(Ree,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"源代码"]})]})}),o.jsxs(he,{onClick:g==="visual"?st:Ne,disabled:n||s||!a||c,size:"sm",variant:"outline",className:"flex-1 sm:flex-none",children:[o.jsx($y,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),n?"保存中...":s?"自动保存中...":a?"保存配置":"已保存"]}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs(he,{disabled:n||s||c,size:"sm",className:"flex-1 sm:flex-none",children:[o.jsx(Cj,{className:"mr-2 h-4 w-4"}),c?"重启中...":a?"保存并重启":"重启麦麦"]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认重启麦麦?"}),o.jsx(_n,{className:"space-y-3",asChild:!0,children:o.jsxs("div",{children:[o.jsx("p",{children:a?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),o.jsxs(ga,{className:"border-yellow-500/50 bg-yellow-500/10",children:[o.jsx(Oa,{className:"h-4 w-4 text-yellow-600"}),o.jsxs(xa,{className:"text-yellow-900 dark:text-yellow-100",children:[o.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",o.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",o.jsxs(Dr,{children:[o.jsx(Sf,{asChild:!0,children:o.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[o.jsx(qy,{className:"h-3 w-3"}),"如何结束程序?"]})}),o.jsxs(Sr,{className:"max-w-2xl",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"如何结束使用重启功能后的麦麦程序"}),o.jsx(ss,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),o.jsxs(ja,{defaultValue:"windows",className:"w-full",children:[o.jsxs(Wi,{className:"grid w-full grid-cols-3",children:[o.jsx(Lt,{value:"windows",children:"Windows"}),o.jsx(Lt,{value:"macos",children:"macOS"}),o.jsx(Lt,{value:"linux",children:"Linux"})]}),o.jsxs(un,{value:"windows",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),o.jsxs("li",{children:['在"进程"或"详细信息"标签页中找到 ',o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),o.jsx("li",{children:'右键点击并选择"结束任务"'})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),o.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),o.jsxs(un,{value:"macos",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"}),' 打开 Spotlight,搜索"活动监视器"']}),o.jsxs("li",{children:["在进程列表中找到 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),o.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]})]}),o.jsxs(un,{value:"linux",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),o.jsx("p",{children:'pkill -9 -f "bot.py"'}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["在终端输入 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),o.jsx(bs,{children:o.jsx(Qj,{asChild:!0,children:o.jsx(he,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:a?Pt:yt,children:a?"保存并重启":"确认重启"})]})]})]})]})]}),o.jsxs(ga,{children:[o.jsx(Oa,{className:"h-4 w-4"}),o.jsxs(xa,{children:["配置更新后需要",o.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),g==="source"&&o.jsxs("div",{className:"space-y-4",children:[o.jsxs(ga,{children:[o.jsx(Oa,{className:"h-4 w-4"}),o.jsxs(xa,{children:[o.jsx("strong",{children:"源代码模式(高级功能):"}),"直接编辑 TOML 配置文件。此功能仅适用于熟悉 TOML 语法的高级用户。保存时会在后端验证格式,只有格式完全正确才能保存。",S&&o.jsx("span",{className:"text-destructive font-semibold ml-2",children:"⚠️ 上次保存失败,请检查 TOML 格式"})]})]}),o.jsx(h0e,{value:y,onChange:Fe=>{w(Fe),l(!0),S&&k(!1)},language:"toml",theme:"dark",height:"calc(100vh - 280px)",minHeight:"500px",placeholder:"TOML 配置内容"})]}),g==="visual"&&o.jsx(o.Fragment,{children:o.jsxs(ja,{defaultValue:"bot",className:"w-full",children:[o.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:o.jsxs(Wi,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5 lg:grid-cols-10",children:[o.jsx(Lt,{value:"bot",className:"flex-shrink-0",children:"基本信息"}),o.jsx(Lt,{value:"personality",className:"flex-shrink-0",children:"人格"}),o.jsx(Lt,{value:"chat",className:"flex-shrink-0",children:"聊天"}),o.jsx(Lt,{value:"expression",className:"flex-shrink-0",children:"表达"}),o.jsx(Lt,{value:"features",className:"flex-shrink-0",children:"功能"}),o.jsx(Lt,{value:"processing",className:"flex-shrink-0",children:"处理"}),o.jsx(Lt,{value:"mood",className:"flex-shrink-0",children:"情绪"}),o.jsx(Lt,{value:"voice",className:"flex-shrink-0",children:"语音"}),o.jsx(Lt,{value:"lpmm",className:"flex-shrink-0",children:"知识库"}),o.jsx(Lt,{value:"other",className:"flex-shrink-0",children:"其他"})]})}),o.jsx(un,{value:"bot",className:"space-y-4",children:N&&o.jsx(m0e,{config:N,onChange:T})}),o.jsx(un,{value:"personality",className:"space-y-4",children:E&&o.jsx(p0e,{config:E,onChange:_})}),o.jsx(un,{value:"chat",className:"space-y-4",children:M&&o.jsx(g0e,{config:M,onChange:I})}),o.jsx(un,{value:"expression",className:"space-y-4",children:P&&o.jsx(v0e,{config:P,onChange:L})}),o.jsx(un,{value:"features",className:"space-y-4",children:H&&ee&&Q&&o.jsx(y0e,{emojiConfig:H,memoryConfig:ee,toolConfig:Q,onEmojiChange:U,onMemoryChange:z,onToolChange:B})}),o.jsx(un,{value:"processing",className:"space-y-4",children:q&&te&&K&&re&&o.jsx(b0e,{keywordReactionConfig:q,responsePostProcessConfig:te,chineseTypoConfig:K,responseSplitterConfig:re,onKeywordReactionChange:V,onResponsePostProcessChange:ne,onChineseTypoChange:se,onResponseSplitterChange:oe})}),o.jsx(un,{value:"mood",className:"space-y-4",children:X&&o.jsx(w0e,{config:X,onChange:J})}),o.jsx(un,{value:"voice",className:"space-y-4",children:G&&o.jsx(S0e,{config:G,onChange:R})}),o.jsx(un,{value:"lpmm",className:"space-y-4",children:ie&&o.jsx(k0e,{config:ie,onChange:W})}),o.jsxs(un,{value:"other",className:"space-y-4",children:[Te&&o.jsx(O0e,{config:Te,onChange:We}),Ye&&o.jsx(j0e,{config:Ye,onChange:Je}),Oe&&o.jsx(N0e,{config:Oe,onChange:Ve}),Ue&&o.jsx(C0e,{config:Ue,onChange:He})]})]})}),h&&o.jsx(Wj,{onRestartComplete:At,onRestartFailed:zn})]})})}function m0e({config:t,onChange:e}){const n=()=>{e({...t,platforms:[...t.platforms,""]})},r=c=>{e({...t,platforms:t.platforms.filter((d,h)=>h!==c)})},s=(c,d)=>{const h=[...t.platforms];h[c]=d,e({...t,platforms:h})},i=()=>{e({...t,alias_names:[...t.alias_names,""]})},a=c=>{e({...t,alias_names:t.alias_names.filter((d,h)=>h!==c)})},l=(c,d)=>{const h=[...t.alias_names];h[c]=d,e({...t,alias_names:h})};return o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"基本信息"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"platform",children:"平台"}),o.jsx(ze,{id:"platform",value:t.platform,onChange:c=>e({...t,platform:c.target.value}),placeholder:"qq"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"qq_account",children:"QQ账号"}),o.jsx(ze,{id:"qq_account",value:t.qq_account,onChange:c=>e({...t,qq_account:c.target.value}),placeholder:"123456789"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"nickname",children:"昵称"}),o.jsx(ze,{id:"nickname",value:t.nickname,onChange:c=>e({...t,nickname:c.target.value}),placeholder:"麦麦"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(de,{children:"其他平台账号"}),o.jsxs(he,{onClick:n,size:"sm",variant:"outline",children:[o.jsx(zs,{className:"h-4 w-4 mr-1"}),"添加"]})]}),o.jsxs("div",{className:"space-y-2",children:[t.platforms.map((c,d)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{value:c,onChange:h=>s(d,h.target.value),placeholder:"wx:114514"}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(he,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除平台账号 "',c||"(空)",'" 吗?此操作无法撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>r(d),children:"删除"})]})]})]})]},d)),t.platforms.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无其他平台账号"})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(de,{children:"别名"}),o.jsxs(he,{onClick:i,size:"sm",variant:"outline",children:[o.jsx(zs,{className:"h-4 w-4 mr-1"}),"添加"]})]}),o.jsxs("div",{className:"space-y-2",children:[t.alias_names.map((c,d)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{value:c,onChange:h=>l(d,h.target.value),placeholder:"小麦"}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(he,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除别名 "',c||"(空)",'" 吗?此操作无法撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>a(d),children:"删除"})]})]})]})]},d)),t.alias_names.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无别名"})]})]})]})]})})}function p0e({config:t,onChange:e}){const n=()=>{e({...t,states:[...t.states,""]})},r=i=>{e({...t,states:t.states.filter((a,l)=>l!==i)})},s=(i,a)=>{const l=[...t.states];l[i]=a,e({...t,states:l})};return o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"人格设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"personality",children:"人格特质"}),o.jsx(Ar,{id:"personality",value:t.personality,onChange:i=>e({...t,personality:i.target.value}),placeholder:"描述人格特质和身份特征(建议120字以内)",rows:3}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"建议120字以内,描述人格特质和身份特征"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"reply_style",children:"表达风格"}),o.jsx(Ar,{id:"reply_style",value:t.reply_style,onChange:i=>e({...t,reply_style:i.target.value}),placeholder:"描述说话的表达风格和习惯",rows:3})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"interest",children:"兴趣"}),o.jsx(Ar,{id:"interest",value:t.interest,onChange:i=>e({...t,interest:i.target.value}),placeholder:"会影响麦麦对什么话题进行回复",rows:2})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"plan_style",children:"说话规则与行为风格"}),o.jsx(Ar,{id:"plan_style",value:t.plan_style,onChange:i=>e({...t,plan_style:i.target.value}),placeholder:"麦麦的说话规则和行为风格",rows:5})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"visual_style",children:"识图规则"}),o.jsx(Ar,{id:"visual_style",value:t.visual_style,onChange:i=>e({...t,visual_style:i.target.value}),placeholder:"识图时的处理规则",rows:3})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"private_plan_style",children:"私聊规则"}),o.jsx(Ar,{id:"private_plan_style",value:t.private_plan_style,onChange:i=>e({...t,private_plan_style:i.target.value}),placeholder:"私聊的说话规则和行为风格",rows:4})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(de,{children:"状态列表(人格多样性)"}),o.jsxs(he,{onClick:n,size:"sm",variant:"outline",children:[o.jsx(zs,{className:"h-4 w-4 mr-1"}),"添加状态"]})]}),o.jsx("div",{className:"space-y-2",children:t.states.map((i,a)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Ar,{value:i,onChange:l=>s(a,l.target.value),placeholder:"描述一个人格状态",rows:2}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(he,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsx(_n,{children:"确定要删除这个人格状态吗?此操作无法撤销。"})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>r(a),children:"删除"})]})]})]})]},a))})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"state_probability",children:"状态替换概率"}),o.jsx(ze,{id:"state_probability",type:"number",step:"0.1",min:"0",max:"1",value:t.state_probability,onChange:i=>e({...t,state_probability:parseFloat(i.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"每次构建人格时替换 personality 的概率(0.0-1.0)"})]})]})]})})}function g0e({config:t,onChange:e}){const n=()=>{e({...t,talk_value_rules:[...t.talk_value_rules,{target:"",time:"00:00-23:59",value:1}]})},r=l=>{e({...t,talk_value_rules:t.talk_value_rules.filter((c,d)=>d!==l)})},s=(l,c,d)=>{const h=[...t.talk_value_rules];h[l]={...h[l],[c]:d},e({...t,talk_value_rules:h})},i=({value:l,onChange:c})=>{const[d,h]=b.useState("00"),[m,g]=b.useState("00"),[x,y]=b.useState("23"),[w,S]=b.useState("59");b.useEffect(()=>{const j=l.split("-");if(j.length===2){const[N,T]=j,[E,_]=N.split(":"),[M,I]=T.split(":");E&&h(E.padStart(2,"0")),_&&g(_.padStart(2,"0")),M&&y(M.padStart(2,"0")),I&&S(I.padStart(2,"0"))}},[l]);const k=(j,N,T,E)=>{const _=`${j}:${N}-${T}:${E}`;c(_)};return o.jsxs(Po,{children:[o.jsx(zo,{asChild:!0,children:o.jsxs(he,{variant:"outline",className:"w-full justify-start font-mono text-sm",children:[o.jsx(_h,{className:"h-4 w-4 mr-2"}),l||"选择时间段"]})}),o.jsx(Xa,{className:"w-80",children:o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"font-medium text-sm mb-3",children:"开始时间"}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[o.jsxs("div",{children:[o.jsx(de,{className:"text-xs",children:"小时"}),o.jsxs(Vt,{value:d,onValueChange:j=>{h(j),k(j,m,x,w)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:Array.from({length:24},(j,N)=>N).map(j=>o.jsx(De,{value:j.toString().padStart(2,"0"),children:j.toString().padStart(2,"0")},j))})]})]}),o.jsxs("div",{children:[o.jsx(de,{className:"text-xs",children:"分钟"}),o.jsxs(Vt,{value:m,onValueChange:j=>{g(j),k(d,j,x,w)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:Array.from({length:60},(j,N)=>N).map(j=>o.jsx(De,{value:j.toString().padStart(2,"0"),children:j.toString().padStart(2,"0")},j))})]})]})]})]}),o.jsxs("div",{children:[o.jsx("h4",{className:"font-medium text-sm mb-3",children:"结束时间"}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[o.jsxs("div",{children:[o.jsx(de,{className:"text-xs",children:"小时"}),o.jsxs(Vt,{value:x,onValueChange:j=>{y(j),k(d,m,j,w)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:Array.from({length:24},(j,N)=>N).map(j=>o.jsx(De,{value:j.toString().padStart(2,"0"),children:j.toString().padStart(2,"0")},j))})]})]}),o.jsxs("div",{children:[o.jsx(de,{className:"text-xs",children:"分钟"}),o.jsxs(Vt,{value:w,onValueChange:j=>{S(j),k(d,m,x,j)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:Array.from({length:60},(j,N)=>N).map(j=>o.jsx(De,{value:j.toString().padStart(2,"0"),children:j.toString().padStart(2,"0")},j))})]})]})]})]})]})})]})},a=({rule:l})=>{const c=`{ target = "${l.target}", time = "${l.time}", value = ${l.value.toFixed(1)} }`;return o.jsxs(Po,{children:[o.jsx(zo,{asChild:!0,children:o.jsxs(he,{variant:"outline",size:"sm",children:[o.jsx(Ea,{className:"h-4 w-4 mr-1"}),"预览"]})}),o.jsx(Xa,{className:"w-96",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),o.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:c}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"聊天设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"talk_value",children:"聊天频率(基础值)"}),o.jsx(ze,{id:"talk_value",type:"number",step:"0.1",min:"0",max:"1",value:t.talk_value,onChange:l=>e({...t,talk_value:parseFloat(l.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"越小越沉默,范围 0-1"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"mentioned_bot_reply",checked:t.mentioned_bot_reply,onCheckedChange:l=>e({...t,mentioned_bot_reply:l})}),o.jsx(de,{htmlFor:"mentioned_bot_reply",className:"cursor-pointer",children:"启用提及必回复"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"max_context_size",children:"上下文长度"}),o.jsx(ze,{id:"max_context_size",type:"number",min:"1",value:t.max_context_size,onChange:l=>e({...t,max_context_size:parseInt(l.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"planner_smooth",children:"规划器平滑"}),o.jsx(ze,{id:"planner_smooth",type:"number",step:"1",min:"0",value:t.planner_smooth,onChange:l=>e({...t,planner_smooth:parseFloat(l.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"增大数值会减小 planner 负荷,推荐 1-5,0 为关闭"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"enable_talk_value_rules",checked:t.enable_talk_value_rules,onCheckedChange:l=>e({...t,enable_talk_value_rules:l})}),o.jsx(de,{htmlFor:"enable_talk_value_rules",className:"cursor-pointer",children:"启用动态发言频率规则"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"include_planner_reasoning",checked:t.include_planner_reasoning,onCheckedChange:l=>e({...t,include_planner_reasoning:l})}),o.jsx(de,{htmlFor:"include_planner_reasoning",className:"cursor-pointer",children:"将 planner 推理加入 replyer"})]})]})]}),t.enable_talk_value_rules&&o.jsxs("div",{className:"border-t pt-6",children:[o.jsxs("div",{className:"flex items-center justify-between mb-4",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"text-base font-semibold",children:"动态发言频率规则"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"按时段或聊天流ID调整发言频率,优先匹配具体聊天,再匹配全局规则"})]}),o.jsxs(he,{onClick:n,size:"sm",children:[o.jsx(zs,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),t.talk_value_rules&&t.talk_value_rules.length>0?o.jsx("div",{className:"space-y-4",children:t.talk_value_rules.map((l,c)=>o.jsxs("div",{className:"rounded-lg border p-4 bg-muted/50 space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium text-muted-foreground",children:["规则 #",c+1]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(a,{rule:l}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(he,{variant:"ghost",size:"sm",children:o.jsx(Sn,{className:"h-4 w-4 text-destructive"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除规则 #",c+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>r(c),children:"删除"})]})]})]})]})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-xs font-medium",children:"配置类型"}),o.jsxs(Vt,{value:l.target===""?"global":"specific",onValueChange:d=>{d==="global"?s(c,"target",""):s(c,"target","qq::group")},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"global",children:"全局配置"}),o.jsx(De,{value:"specific",children:"详细配置"})]})]})]}),l.target!==""&&(()=>{const d=l.target.split(":"),h=d[0]||"qq",m=d[1]||"",g=d[2]||"group";return o.jsxs("div",{className:"grid gap-4 p-4 rounded-lg bg-muted/50",children:[o.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-xs font-medium",children:"平台"}),o.jsxs(Vt,{value:h,onValueChange:x=>{s(c,"target",`${x}:${m}:${g}`)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"qq",children:"QQ"}),o.jsx(De,{value:"wx",children:"微信"})]})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-xs font-medium",children:"群 ID"}),o.jsx(ze,{value:m,onChange:x=>{s(c,"target",`${h}:${x.target.value}:${g}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-xs font-medium",children:"类型"}),o.jsxs(Vt,{value:g,onValueChange:x=>{s(c,"target",`${h}:${m}:${x}`)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"group",children:"群组(group)"}),o.jsx(De,{value:"private",children:"私聊(private)"})]})]})]})]}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",l.target||"(未设置)"]})]})})(),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-xs font-medium",children:"时间段 (Time)"}),o.jsx(i,{value:l.time,onChange:d=>s(c,"time",d)}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"支持跨夜区间,例如 23:00-02:00"})]}),o.jsxs("div",{className:"grid gap-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(de,{htmlFor:`rule-value-${c}`,className:"text-xs font-medium",children:"发言频率值 (Value)"}),o.jsx(ze,{id:`rule-value-${c}`,type:"number",step:"0.01",min:"0.01",max:"1",value:l.value,onChange:d=>{const h=parseFloat(d.target.value);isNaN(h)||s(c,"value",Math.max(.01,Math.min(1,h)))},className:"w-20 h-8 text-xs"})]}),o.jsx(Ip,{value:[l.value],onValueChange:d=>s(c,"value",d[0]),min:.01,max:1,step:.01,className:"w-full"}),o.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[o.jsx("span",{children:"0.01 (极少发言)"}),o.jsx("span",{children:"0.5"}),o.jsx("span",{children:"1.0 (正常)"})]})]})]})]},c))}):o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:o.jsx("p",{className:"text-sm",children:'暂无规则,点击"添加规则"按钮创建'})}),o.jsxs("div",{className:"mt-4 p-4 bg-blue-50 dark:bg-blue-950/20 border border-blue-200 dark:border-blue-800 rounded-lg",children:[o.jsx("h5",{className:"text-sm font-semibold text-blue-900 dark:text-blue-100 mb-2",children:"📝 规则说明"}),o.jsxs("ul",{className:"text-xs text-blue-800 dark:text-blue-200 space-y-1",children:[o.jsxs("li",{children:["• ",o.jsx("strong",{children:"Target 为空"}),":全局规则,对所有聊天生效"]}),o.jsxs("li",{children:["• ",o.jsx("strong",{children:"Target 指定"}),":仅对特定聊天流生效(格式:platform:id:type)"]}),o.jsxs("li",{children:["• ",o.jsx("strong",{children:"优先级"}),":先匹配具体聊天流规则,再匹配全局规则"]}),o.jsxs("li",{children:["• ",o.jsx("strong",{children:"时间支持跨夜"}),":例如 23:00-02:00 表示晚上11点到次日凌晨2点"]}),o.jsxs("li",{children:["• ",o.jsx("strong",{children:"数值范围"}),":建议 0-1,0 表示完全沉默,1 表示正常发言"]})]})]})]})]})}function x0e({member:t,groupIndex:e,memberIndex:n,availableChatIds:r,onUpdate:s,onRemove:i}){const a=r.includes(t)||t==="*",[l,c]=b.useState(!a);return o.jsxs("div",{className:"flex gap-2",children:[o.jsx("div",{className:"flex-1 flex gap-2",children:l?o.jsxs(o.Fragment,{children:[o.jsx(ze,{value:t,onChange:d=>s(e,n,d.target.value),placeholder:'输入 "*" 或 "qq:123456:group"',className:"flex-1"}),r.length>0&&o.jsx(he,{size:"sm",variant:"outline",onClick:()=>c(!1),title:"切换到下拉选择",children:"下拉"})]}):o.jsxs(o.Fragment,{children:[o.jsxs(Vt,{value:t,onValueChange:d=>s(e,n,d),children:[o.jsx($t,{className:"flex-1",children:o.jsx(Ut,{placeholder:"选择聊天流"})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"*",children:"* (全局共享)"}),r.map((d,h)=>o.jsx(De,{value:d,children:d},h))]})]}),o.jsx(he,{size:"sm",variant:"outline",onClick:()=>c(!0),title:"切换到手动输入",children:"输入"})]})}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(he,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除组成员 "',t||"(空)",'" 吗?此操作无法撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>i(e,n),children:"删除"})]})]})]})]})}function v0e({config:t,onChange:e}){const n=()=>{e({...t,learning_list:[...t.learning_list,["","enable","enable","1.0"]]})},r=m=>{e({...t,learning_list:t.learning_list.filter((g,x)=>x!==m)})},s=(m,g,x)=>{const y=[...t.learning_list];y[m][g]=x,e({...t,learning_list:y})},i=({rule:m})=>{const g=`["${m[0]}", "${m[1]}", "${m[2]}", "${m[3]}"]`;return o.jsxs(Po,{children:[o.jsx(zo,{asChild:!0,children:o.jsxs(he,{variant:"outline",size:"sm",children:[o.jsx(Ea,{className:"h-4 w-4 mr-1"}),"预览"]})}),o.jsx(Xa,{className:"w-96",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),o.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:g}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},a=()=>{e({...t,expression_groups:[...t.expression_groups,[]]})},l=m=>{e({...t,expression_groups:t.expression_groups.filter((g,x)=>x!==m)})},c=m=>{const g=[...t.expression_groups];g[m]=[...g[m],""],e({...t,expression_groups:g})},d=(m,g)=>{const x=[...t.expression_groups];x[m]=x[m].filter((y,w)=>w!==g),e({...t,expression_groups:x})},h=(m,g,x)=>{const y=[...t.expression_groups];y[m][g]=x,e({...t,expression_groups:y})};return o.jsxs("div",{className:"space-y-6",children:[o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center justify-between mb-4",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold",children:"表达学习配置"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置麦麦如何学习和使用表达方式"})]}),o.jsxs(he,{onClick:n,size:"sm",variant:"outline",children:[o.jsx(zs,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),o.jsxs("div",{className:"space-y-4",children:[t.learning_list.map((m,g)=>{const x=t.learning_list.some((N,T)=>T!==g&&N[0]===""),y=m[0]==="",w=m[0].split(":"),S=w[0]||"qq",k=w[1]||"",j=w[2]||"group";return o.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium",children:["规则 ",g+1," ",y&&"(全局配置)"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(i,{rule:m}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(he,{size:"sm",variant:"ghost",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除学习规则 ",g+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>r(g),children:"删除"})]})]})]})]})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-xs font-medium",children:"配置类型"}),o.jsxs(Vt,{value:y?"global":"specific",onValueChange:N=>{N==="global"?s(g,0,""):s(g,0,"qq::group")},disabled:x&&!y,children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"global",children:"全局配置"}),o.jsx(De,{value:"specific",disabled:x&&!y,children:"详细配置"})]})]}),x&&!y&&o.jsx("p",{className:"text-xs text-amber-600",children:"已存在全局配置,无法创建新的全局配置"})]}),!y&&o.jsxs("div",{className:"grid gap-4 p-4 rounded-lg bg-muted/50",children:[o.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-xs font-medium",children:"平台"}),o.jsxs(Vt,{value:S,onValueChange:N=>{s(g,0,`${N}:${k}:${j}`)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"qq",children:"QQ"}),o.jsx(De,{value:"wx",children:"微信"})]})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-xs font-medium",children:"群 ID"}),o.jsx(ze,{value:k,onChange:N=>{s(g,0,`${S}:${N.target.value}:${j}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-xs font-medium",children:"类型"}),o.jsxs(Vt,{value:j,onValueChange:N=>{s(g,0,`${S}:${k}:${N}`)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"group",children:"群组(group)"}),o.jsx(De,{value:"private",children:"私聊(private)"})]})]})]})]}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",m[0]||"(未设置)"]})]}),o.jsx("div",{className:"grid gap-2",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(de,{className:"text-xs font-medium",children:"使用学到的表达"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦使用从聊天中学到的表达方式"})]}),o.jsx(Bt,{checked:m[1]==="enable",onCheckedChange:N=>s(g,1,N?"enable":"disable")})]})}),o.jsx("div",{className:"grid gap-2",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(de,{className:"text-xs font-medium",children:"学习表达"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦从聊天中学习新的表达方式"})]}),o.jsx(Bt,{checked:m[2]==="enable",onCheckedChange:N=>s(g,2,N?"enable":"disable")})]})}),o.jsxs("div",{className:"grid gap-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(de,{className:"text-xs font-medium",children:"学习强度"}),o.jsx(ze,{type:"number",step:"0.1",min:"0",max:"5",value:m[3],onChange:N=>{const T=parseFloat(N.target.value);isNaN(T)||s(g,3,Math.max(0,Math.min(5,T)).toFixed(1))},className:"w-20 h-8 text-xs"})]}),o.jsx(Ip,{value:[parseFloat(m[3])||1],onValueChange:N=>s(g,3,N[0].toFixed(1)),min:0,max:5,step:.1,className:"w-full"}),o.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[o.jsx("span",{children:"0 (不学习)"}),o.jsx("span",{children:"2.5"}),o.jsx("span",{children:"5.0 (快速学习)"})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"影响学习频率,最短学习间隔 = 300/学习强度(秒)"})]})]})]},g)}),t.learning_list.length===0&&o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无学习规则,点击"添加规则"开始配置'})]})]})}),o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center justify-between mb-4",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold",children:"表达共享组配置"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置不同聊天流之间如何共享学到的表达方式"})]}),o.jsxs(he,{onClick:a,size:"sm",variant:"outline",children:[o.jsx(zs,{className:"h-4 w-4 mr-1"}),"添加共享组"]})]}),o.jsxs("div",{className:"space-y-4",children:[t.expression_groups.map((m,g)=>{const x=t.learning_list.map(y=>y[0]).filter(y=>y!=="");return o.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium",children:["共享组 ",g+1,m.length===1&&m[0]==="*"&&"(全局共享)"]}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx(he,{onClick:()=>c(g),size:"sm",variant:"outline",children:o.jsx(zs,{className:"h-4 w-4"})}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(he,{size:"sm",variant:"ghost",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除共享组 ",g+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>l(g),children:"删除"})]})]})]})]})]}),o.jsx("div",{className:"space-y-2",children:m.map((y,w)=>o.jsx(x0e,{member:y,groupIndex:g,memberIndex:w,availableChatIds:x,onUpdate:h,onRemove:d},`${g}-${w}`))}),o.jsx("p",{className:"text-xs text-muted-foreground",children:'提示:可以从下拉框选择已配置的聊天流,或手动输入。输入 "*" 启用全局共享'})]},g)}),t.expression_groups.length===0&&o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无共享组,点击"添加共享组"开始配置'})]})]})})]})}function y0e({emojiConfig:t,memoryConfig:e,toolConfig:n,onEmojiChange:r,onMemoryChange:s,onToolChange:i}){return o.jsxs("div",{className:"space-y-6",children:[o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"工具设置"}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"enable_tool",checked:n.enable_tool,onCheckedChange:a=>i({...n,enable_tool:a})}),o.jsx(de,{htmlFor:"enable_tool",className:"cursor-pointer",children:"启用工具系统"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"允许麦麦使用各种工具来增强功能"})]})}),o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"记忆设置"}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"max_agent_iterations",children:"记忆思考深度"}),o.jsx(ze,{id:"max_agent_iterations",type:"number",min:"1",value:e.max_agent_iterations,onChange:a=>s({...e,max_agent_iterations:parseInt(a.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"最低为 1(不深入思考)"})]})]})}),o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"表情包设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"emoji_chance",children:"表情包激活概率"}),o.jsx(ze,{id:"emoji_chance",type:"number",step:"0.1",min:"0",max:"1",value:t.emoji_chance,onChange:a=>r({...t,emoji_chance:parseFloat(a.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"范围 0-1,越大越容易发送表情包"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"max_reg_num",children:"最大注册数量"}),o.jsx(ze,{id:"max_reg_num",type:"number",min:"1",value:t.max_reg_num,onChange:a=>r({...t,max_reg_num:parseInt(a.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦最多可以注册的表情包数量"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),o.jsx(ze,{id:"check_interval",type:"number",min:"1",value:t.check_interval,onChange:a=>r({...t,check_interval:parseInt(a.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包(注册、破损、删除)的时间间隔"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"do_replace",checked:t.do_replace,onCheckedChange:a=>r({...t,do_replace:a})}),o.jsx(de,{htmlFor:"do_replace",className:"cursor-pointer",children:"达到最大数量时替换表情包"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"steal_emoji",checked:t.steal_emoji,onCheckedChange:a=>r({...t,steal_emoji:a})}),o.jsx(de,{htmlFor:"steal_emoji",className:"cursor-pointer",children:"偷取表情包"})]}),o.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"允许麦麦将看到的表情包据为己有"}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"content_filtration",checked:t.content_filtration,onCheckedChange:a=>r({...t,content_filtration:a})}),o.jsx(de,{htmlFor:"content_filtration",className:"cursor-pointer",children:"启用表情包过滤"})]}),t.content_filtration&&o.jsxs("div",{className:"grid gap-2 pl-6 border-l-2 border-primary/20",children:[o.jsx(de,{htmlFor:"filtration_prompt",children:"过滤要求"}),o.jsx(ze,{id:"filtration_prompt",value:t.filtration_prompt,onChange:a=>r({...t,filtration_prompt:a.target.value}),placeholder:"符合公序良俗"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"只有符合此要求的表情包才会被保存"})]})]})]})})]})}function b0e({keywordReactionConfig:t,responsePostProcessConfig:e,chineseTypoConfig:n,responseSplitterConfig:r,onKeywordReactionChange:s,onResponsePostProcessChange:i,onChineseTypoChange:a,onResponseSplitterChange:l}){const c=()=>{s({...t,regex_rules:[...t.regex_rules,{regex:[""],reaction:""}]})},d=T=>{s({...t,regex_rules:t.regex_rules.filter((E,_)=>_!==T)})},h=(T,E,_)=>{const M=[...t.regex_rules];E==="regex"&&typeof _=="string"?M[T]={...M[T],regex:[_]}:E==="reaction"&&typeof _=="string"&&(M[T]={...M[T],reaction:_}),s({...t,regex_rules:M})},m=({regex:T,reaction:E,onRegexChange:_,onReactionChange:M})=>{const[I,P]=b.useState(!1),[L,H]=b.useState(""),[U,ee]=b.useState(null),[z,Q]=b.useState(""),[B,X]=b.useState({}),[J,G]=b.useState(""),R=b.useRef(null),[ie,W]=b.useState("build"),q=K=>K.replace(/\(\?P<([^>]+)>/g,"(?<$1>"),V=(K,se=0)=>{const re=R.current;if(!re)return;const oe=re.selectionStart||0,Te=re.selectionEnd||0,We=T.substring(0,oe)+K+T.substring(Te);_(We),setTimeout(()=>{const Ye=oe+K.length+se;re.setSelectionRange(Ye,Ye),re.focus()},0)};b.useEffect(()=>{if(!T||!L){ee(null),X({}),G(E),Q("");return}try{const K=q(T),se=new RegExp(K,"g"),re=L.match(se);ee(re),Q("");const Te=new RegExp(K).exec(L);if(Te&&Te.groups){X(Te.groups);let We=E;Object.entries(Te.groups).forEach(([Ye,Je])=>{We=We.replace(new RegExp(`\\[${Ye}\\]`,"g"),Je||"")}),G(We)}else X({}),G(E)}catch(K){Q(K.message),ee(null),X({}),G(E)}},[T,L,E]);const te=()=>{if(!L||!U||U.length===0)return o.jsx("span",{className:"text-muted-foreground",children:L||"请输入测试文本"});try{const K=q(T),se=new RegExp(K,"g");let re=0;const oe=[];let Te;for(;(Te=se.exec(L))!==null;)Te.index>re&&oe.push(o.jsx("span",{children:L.substring(re,Te.index)},`text-${re}`)),oe.push(o.jsx("span",{className:"bg-yellow-200 dark:bg-yellow-900 font-semibold",children:Te[0]},`match-${Te.index}`)),re=Te.index+Te[0].length;return re)",desc:"Python风格命名捕获组",moveCursor:-1},{label:"非捕获组",pattern:"(?:)",desc:"分组但不保存匹配结果",moveCursor:-1}]},{category:"字符类",items:[{label:"字符集",pattern:"[]",desc:"匹配括号内的任意字符",moveCursor:-1},{label:"排除字符",pattern:"[^]",desc:"匹配不在括号内的字符",moveCursor:-1},{label:"范围",pattern:"[a-z]",desc:"匹配a到z的字符"},{label:"中文字符",pattern:"[\\u4e00-\\u9fa5]",desc:"匹配中文汉字"}]},{category:"常用模板",items:[{label:"捕获词语",pattern:"(?P\\S+)",desc:"捕获一个词语"},{label:"捕获句子",pattern:"(?P.+)",desc:"捕获整个句子"},{label:"捕获数字",pattern:"(?P\\d+)",desc:"捕获一个或多个数字"},{label:"可选词语",pattern:"(?:词语1|词语2)",desc:"匹配多个可选项之一"}]}];return o.jsxs(Dr,{open:I,onOpenChange:P,children:[o.jsx(Sf,{asChild:!0,children:o.jsxs(he,{variant:"outline",size:"sm",children:[o.jsx(_v,{className:"h-4 w-4 mr-1"}),"正则编辑器"]})}),o.jsxs(Sr,{className:"max-w-[95vw] sm:max-w-[900px] max-h-[90vh]",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"正则表达式编辑器"}),o.jsx(ss,{className:"text-sm",children:"使用可视化工具构建正则表达式,并实时测试效果"})]}),o.jsx(wn,{className:"max-h-[calc(90vh-120px)]",children:o.jsxs(ja,{value:ie,onValueChange:K=>W(K),className:"w-full",children:[o.jsxs(Wi,{className:"grid w-full grid-cols-2",children:[o.jsx(Lt,{value:"build",children:"🔧 构建器"}),o.jsx(Lt,{value:"test",children:"🧪 测试器"})]}),o.jsxs(un,{value:"build",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{className:"text-sm font-medium",children:"正则表达式"}),o.jsx(ze,{ref:R,value:T,onChange:K=>_(K.target.value),className:"font-mono text-sm",placeholder:"点击下方按钮构建正则表达式..."})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{className:"text-sm font-medium",children:"Reaction 内容"}),o.jsx(Ar,{value:E,onChange:K=>M(K.target.value),placeholder:"使用 [捕获组名] 引用捕获的内容...",rows:3,className:"text-sm"})]}),o.jsxs("div",{className:"space-y-4 border-t pt-4",children:[ne.map(K=>o.jsxs("div",{className:"space-y-2",children:[o.jsx("h5",{className:"text-xs font-semibold text-primary",children:K.category}),o.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:K.items.map(se=>o.jsx(he,{variant:"outline",size:"sm",className:"justify-start h-auto py-2 px-3",onClick:()=>V(se.pattern,se.moveCursor||0),children:o.jsxs("div",{className:"flex flex-col items-start w-full",children:[o.jsxs("div",{className:"flex items-center gap-2 w-full",children:[o.jsx("span",{className:"text-xs font-medium",children:se.label}),o.jsx("code",{className:"ml-auto text-xs bg-muted px-1.5 py-0.5 rounded font-mono",children:se.pattern})]}),o.jsx("span",{className:"text-xs text-muted-foreground mt-0.5",children:se.desc})]})},se.label))})]},K.category)),o.jsxs("div",{className:"space-y-2 border-t pt-4",children:[o.jsx("h5",{className:"text-xs font-semibold text-primary",children:"完整示例模板"}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>_("^(?P\\S{1,20})是这样的$"),children:o.jsxs("div",{className:"flex flex-col items-start w-full",children:[o.jsxs("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:["^(?P\\S","{1,20}",")是这样的$"]}),o.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「某事物是这样的」并捕获事物名称"})]})}),o.jsx(he,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>_("(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"),children:o.jsxs("div",{className:"flex flex-col items-start w-full",children:[o.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"}),o.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「我没要求你做某事」并捕获具体行为"})]})}),o.jsx(he,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>_("(?P.+?)(?:是|为什么|怎么)"),children:o.jsxs("div",{className:"flex flex-col items-start w-full",children:[o.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?P.+?)(?:是|为什么|怎么)"}),o.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"捕获问题主题词"})]})})]})]})]}),o.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[o.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 使用提示"}),o.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[o.jsx("li",{children:"点击输入框设置光标位置,然后点击按钮插入模式"}),o.jsxs("li",{children:["命名捕获组格式:",o.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"(?P<名称>模式)"})]}),o.jsxs("li",{children:["在 reaction 中使用 ",o.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"[名称]"})," 引用捕获的内容"]}),o.jsx("li",{children:"切换到测试器标签页验证正则表达式效果"})]})]})]}),o.jsxs(un,{value:"test",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{className:"text-sm font-medium",children:"当前正则表达式"}),o.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:T||"(未设置)"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"test-text",className:"text-sm font-medium",children:"测试文本"}),o.jsx(Ar,{id:"test-text",value:L,onChange:K=>H(K.target.value),placeholder:`在此输入要测试的文本... +例如:打游戏是这样的`,className:"min-h-[100px] text-sm"})]}),z&&o.jsxs("div",{className:"rounded-md bg-destructive/10 border border-destructive/20 p-3",children:[o.jsx("p",{className:"text-sm text-destructive font-medium",children:"正则表达式错误"}),o.jsx("p",{className:"text-xs text-destructive/80 mt-1",children:z})]}),!z&&L&&o.jsxs("div",{className:"space-y-3",children:[o.jsx("div",{className:"flex items-center gap-2",children:U&&U.length>0?o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-green-500"}),o.jsxs("span",{className:"text-sm font-medium text-green-600 dark:text-green-400",children:["匹配成功 (",U.length," 处)"]})]}):o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-gray-400"}),o.jsx("span",{className:"text-sm font-medium text-muted-foreground",children:"无匹配"})]})}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{className:"text-sm font-medium",children:"匹配高亮"}),o.jsx(wn,{className:"h-40 rounded-md bg-muted p-3",children:o.jsx("div",{className:"text-sm break-words",children:te()})})]}),Object.keys(B).length>0&&o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{className:"text-sm font-medium",children:"命名捕获组"}),o.jsx(wn,{className:"h-32 rounded-md border p-3",children:o.jsx("div",{className:"space-y-2",children:Object.entries(B).map(([K,se])=>o.jsxs("div",{className:"flex items-start gap-2 text-sm",children:[o.jsxs("span",{className:"font-mono font-semibold text-primary min-w-[80px]",children:["[",K,"]"]}),o.jsx("span",{className:"text-muted-foreground",children:"="}),o.jsx("span",{className:"font-mono bg-muted px-2 py-0.5 rounded",children:se})]},K))})})]}),Object.keys(B).length>0&&E&&o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{className:"text-sm font-medium",children:"Reaction 替换预览"}),o.jsx(wn,{className:"h-48 rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3",children:o.jsx("div",{className:"text-sm break-words",children:J})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"reaction 中的 [name] 已被替换为对应的捕获组值"})]})]}),o.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[o.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 测试说明"}),o.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[o.jsx("li",{children:"匹配的文本会以黄色背景高亮显示"}),o.jsx("li",{children:"命名捕获组的值会显示在下方列表中"}),o.jsx("li",{children:"Reaction 替换预览显示最终生成的反应内容"}),o.jsx("li",{children:"如需修改正则,切换回构建器标签页"})]})]})]})]})})]})]})},g=()=>{s({...t,keyword_rules:[...t.keyword_rules,{keywords:[],reaction:""}]})},x=T=>{s({...t,keyword_rules:t.keyword_rules.filter((E,_)=>_!==T)})},y=(T,E,_)=>{const M=[...t.keyword_rules];typeof _=="string"&&(M[T]={...M[T],reaction:_}),s({...t,keyword_rules:M})},w=T=>{const E=[...t.keyword_rules];E[T]={...E[T],keywords:[...E[T].keywords||[],""]},s({...t,keyword_rules:E})},S=(T,E)=>{const _=[...t.keyword_rules];_[T]={..._[T],keywords:(_[T].keywords||[]).filter((M,I)=>I!==E)},s({...t,keyword_rules:_})},k=(T,E,_)=>{const M=[...t.keyword_rules],I=[...M[T].keywords||[]];I[E]=_,M[T]={...M[T],keywords:I},s({...t,keyword_rules:M})},j=({rule:T})=>{const E=`{ regex = [${(T.regex||[]).map(_=>`"${_}"`).join(", ")}], reaction = "${T.reaction}" }`;return o.jsxs(Po,{children:[o.jsx(zo,{asChild:!0,children:o.jsxs(he,{variant:"outline",size:"sm",children:[o.jsx(Ea,{className:"h-4 w-4 mr-1"}),"预览"]})}),o.jsx(Xa,{className:"w-[95vw] sm:w-[500px]",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),o.jsx(wn,{className:"h-60 rounded-md bg-muted p-3",children:o.jsx("pre",{className:"font-mono text-xs break-all",children:E})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},N=({rule:T})=>{const E=`[[keyword_reaction.keyword_rules]] +keywords = [${(T.keywords||[]).map(_=>`"${_}"`).join(", ")}] +reaction = "${T.reaction}"`;return o.jsxs(Po,{children:[o.jsx(zo,{asChild:!0,children:o.jsxs(he,{variant:"outline",size:"sm",children:[o.jsx(Ea,{className:"h-4 w-4 mr-1"}),"预览"]})}),o.jsx(Xa,{className:"w-[95vw] sm:w-[500px]",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),o.jsx(wn,{className:"h-60 rounded-md bg-muted p-3",children:o.jsx("pre",{className:"font-mono text-xs whitespace-pre-wrap break-all",children:E})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"关键词反应配置"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"配置触发特定反应的关键词和正则表达式规则"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"text-base font-semibold",children:"正则表达式规则"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用正则表达式匹配消息内容"})]}),o.jsxs(he,{onClick:c,size:"sm",variant:"outline",children:[o.jsx(zs,{className:"h-4 w-4 mr-1"}),"添加正则规则"]})]}),o.jsxs("div",{className:"space-y-3",children:[t.regex_rules.map((T,E)=>o.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium",children:["正则规则 ",E+1]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(m,{regex:T.regex&&T.regex[0]||"",reaction:T.reaction,onRegexChange:_=>h(E,"regex",_),onReactionChange:_=>h(E,"reaction",_)}),o.jsx(j,{rule:T}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(he,{size:"sm",variant:"ghost",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除正则规则 ",E+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>d(E),children:"删除"})]})]})]})]})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-xs font-medium",children:"正则表达式(Python 语法)"}),o.jsx(ze,{value:T.regex&&T.regex[0]||"",onChange:_=>h(E,"regex",_.target.value),placeholder:"例如:^(?P\\\\S{1,20})是这样的$ (点击正则编辑器按钮可视化构建)",className:"font-mono text-sm"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:'支持命名捕获组 (?Ppattern),可在 reaction 中使用 [name] 引用。点击"正则编辑器"可视化构建和测试!'})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-xs font-medium",children:"反应内容"}),o.jsx(Ar,{value:T.reaction,onChange:_=>h(E,"reaction",_.target.value),placeholder:`触发后麦麦的反应... +可以使用 [捕获组名] 来引用正则表达式中的内容`,rows:3,className:"text-sm"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"使用 [捕获组名] 引用正则表达式中的命名捕获组,例如 [n] 会被替换为捕获的内容"})]})]})]},E)),t.regex_rules.length===0&&o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无正则规则,点击"添加正则规则"开始配置'})]})]}),o.jsxs("div",{className:"space-y-4 border-t pt-6",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"text-base font-semibold",children:"关键词规则"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用关键词列表匹配消息内容"})]}),o.jsxs(he,{onClick:g,size:"sm",variant:"outline",children:[o.jsx(zs,{className:"h-4 w-4 mr-1"}),"添加关键词规则"]})]}),o.jsxs("div",{className:"space-y-3",children:[t.keyword_rules.map((T,E)=>o.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium",children:["关键词规则 ",E+1]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(N,{rule:T}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(he,{size:"sm",variant:"ghost",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除关键词规则 ",E+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>x(E),children:"删除"})]})]})]})]})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(de,{className:"text-xs font-medium",children:"关键词列表"}),o.jsxs(he,{onClick:()=>w(E),size:"sm",variant:"ghost",children:[o.jsx(zs,{className:"h-3 w-3 mr-1"}),"添加关键词"]})]}),o.jsxs("div",{className:"space-y-2",children:[(T.keywords||[]).map((_,M)=>o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{value:_,onChange:I=>k(E,M,I.target.value),placeholder:"关键词",className:"flex-1"}),o.jsx(he,{onClick:()=>S(E,M),size:"sm",variant:"ghost",children:o.jsx(Sn,{className:"h-4 w-4"})})]},M)),(!T.keywords||T.keywords.length===0)&&o.jsx("p",{className:"text-xs text-muted-foreground text-center py-2",children:'暂无关键词,点击"添加关键词"开始配置'})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-xs font-medium",children:"反应内容"}),o.jsx(Ar,{value:T.reaction,onChange:_=>y(E,"reaction",_.target.value),placeholder:"触发后麦麦的反应...",rows:3,className:"text-sm"})]})]})]},E)),t.keyword_rules.length===0&&o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无关键词规则,点击"添加关键词规则"开始配置'})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"回复后处理配置"}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"enable_response_post_process",checked:e.enable_response_post_process,onCheckedChange:T=>i({...e,enable_response_post_process:T})}),o.jsx(de,{htmlFor:"enable_response_post_process",className:"cursor-pointer",children:"启用回复后处理"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"包括错别字生成器和回复分割器"})]}),e.enable_response_post_process&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"border-t pt-6 space-y-4",children:o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[o.jsx(Bt,{id:"enable_chinese_typo",checked:n.enable,onCheckedChange:T=>a({...n,enable:T})}),o.jsx(de,{htmlFor:"enable_chinese_typo",className:"cursor-pointer font-semibold",children:"中文错别字生成器"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"为回复添加随机错别字,让麦麦的回复更自然"}),n.enable&&o.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"error_rate",className:"text-xs font-medium",children:"单字替换概率"}),o.jsx(ze,{id:"error_rate",type:"number",step:"0.001",min:"0",max:"1",value:n.error_rate,onChange:T=>a({...n,error_rate:parseFloat(T.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"min_freq",className:"text-xs font-medium",children:"最小字频阈值"}),o.jsx(ze,{id:"min_freq",type:"number",min:"0",value:n.min_freq,onChange:T=>a({...n,min_freq:parseInt(T.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"tone_error_rate",className:"text-xs font-medium",children:"声调错误概率"}),o.jsx(ze,{id:"tone_error_rate",type:"number",step:"0.01",min:"0",max:"1",value:n.tone_error_rate,onChange:T=>a({...n,tone_error_rate:parseFloat(T.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"word_replace_rate",className:"text-xs font-medium",children:"整词替换概率"}),o.jsx(ze,{id:"word_replace_rate",type:"number",step:"0.001",min:"0",max:"1",value:n.word_replace_rate,onChange:T=>a({...n,word_replace_rate:parseFloat(T.target.value)})})]})]})]})}),o.jsx("div",{className:"border-t pt-6 space-y-4",children:o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[o.jsx(Bt,{id:"enable_response_splitter",checked:r.enable,onCheckedChange:T=>l({...r,enable:T})}),o.jsx(de,{htmlFor:"enable_response_splitter",className:"cursor-pointer font-semibold",children:"回复分割器"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"控制回复的长度和句子数量"}),r.enable&&o.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"max_length",className:"text-xs font-medium",children:"最大长度"}),o.jsx(ze,{id:"max_length",type:"number",min:"1",value:r.max_length,onChange:T=>l({...r,max_length:parseInt(T.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大字符数"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"max_sentence_num",className:"text-xs font-medium",children:"最大句子数"}),o.jsx(ze,{id:"max_sentence_num",type:"number",min:"1",value:r.max_sentence_num,onChange:T=>l({...r,max_sentence_num:parseInt(T.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大句子数量"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"enable_kaomoji_protection",checked:r.enable_kaomoji_protection,onCheckedChange:T=>l({...r,enable_kaomoji_protection:T})}),o.jsx(de,{htmlFor:"enable_kaomoji_protection",className:"cursor-pointer",children:"启用颜文字保护"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"enable_overflow_return_all",checked:r.enable_overflow_return_all,onCheckedChange:T=>l({...r,enable_overflow_return_all:T})}),o.jsx(de,{htmlFor:"enable_overflow_return_all",className:"cursor-pointer",children:"超出时一次性返回全部"})]}),o.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"当句子数量超出限制时,合并后一次性返回所有内容"})]})]})})]})]})]})}function w0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"情绪设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{checked:t.enable_mood,onCheckedChange:n=>e({...t,enable_mood:n})}),o.jsx(de,{className:"cursor-pointer",children:"启用情绪系统"})]}),t.enable_mood&&o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"情绪更新阈值"}),o.jsx(ze,{type:"number",min:"1",value:t.mood_update_threshold,onChange:n=>e({...t,mood_update_threshold:parseInt(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"越高,更新越慢"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"情感特征"}),o.jsx(Ar,{value:t.emotion_style,onChange:n=>e({...t,emotion_style:n.target.value}),placeholder:"影响情绪的变化情况",rows:2})]})]})]})]})}function S0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"语音设置"}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{checked:t.enable_asr,onCheckedChange:n=>e({...t,enable_asr:n})}),o.jsx(de,{className:"cursor-pointer",children:"启用语音识别"})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"启用后麦麦可以识别语音消息,需要配置语音识别模型"})]})}function k0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{checked:t.enable,onCheckedChange:n=>e({...t,enable:n})}),o.jsx(de,{className:"cursor-pointer",children:"启用 LPMM 知识库"})]}),t.enable&&o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"LPMM 模式"}),o.jsxs(Vt,{value:t.lpmm_mode,onValueChange:n=>e({...t,lpmm_mode:n}),children:[o.jsx($t,{children:o.jsx(Ut,{placeholder:"选择 LPMM 模式"})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"classic",children:"经典模式"}),o.jsx(De,{value:"agent",children:"Agent 模式"})]})]})]}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"同义词搜索 TopK"}),o.jsx(ze,{type:"number",min:"1",value:t.rag_synonym_search_top_k,onChange:n=>e({...t,rag_synonym_search_top_k:parseInt(n.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"同义词阈值"}),o.jsx(ze,{type:"number",step:"0.1",min:"0",max:"1",value:t.rag_synonym_threshold,onChange:n=>e({...t,rag_synonym_threshold:parseFloat(n.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"实体提取线程数"}),o.jsx(ze,{type:"number",min:"1",value:t.info_extraction_workers,onChange:n=>e({...t,info_extraction_workers:parseInt(n.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"嵌入向量维度"}),o.jsx(ze,{type:"number",min:"1",value:t.embedding_dimension,onChange:n=>e({...t,embedding_dimension:parseInt(n.target.value)})})]})]})]})]})]})}function O0e({config:t,onChange:e}){const[n,r]=b.useState(""),[s,i]=b.useState("WARNING"),a=()=>{n&&!t.suppress_libraries.includes(n)&&(e({...t,suppress_libraries:[...t.suppress_libraries,n]}),r(""))},l=x=>{e({...t,suppress_libraries:t.suppress_libraries.filter(y=>y!==x)})},c=()=>{n&&!t.library_log_levels[n]&&(e({...t,library_log_levels:{...t.library_log_levels,[n]:s}}),r(""),i("WARNING"))},d=x=>{const y={...t.library_log_levels};delete y[x],e({...t,library_log_levels:y})},h=["DEBUG","INFO","WARNING","ERROR","CRITICAL"],m=["FULL","compact","lite"],g=["none","title","full"];return o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"日志配置"}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"日期格式"}),o.jsx(ze,{value:t.date_style,onChange:x=>e({...t,date_style:x.target.value}),placeholder:"例如: m-d H:i:s"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"m=月, d=日, H=时, i=分, s=秒"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"日志级别样式"}),o.jsxs(Vt,{value:t.log_level_style,onValueChange:x=>e({...t,log_level_style:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:m.map(x=>o.jsx(De,{value:x,children:x},x))})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"日志文本颜色"}),o.jsxs(Vt,{value:t.color_text,onValueChange:x=>e({...t,color_text:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:g.map(x=>o.jsx(De,{value:x,children:x},x))})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"全局日志级别"}),o.jsxs(Vt,{value:t.log_level,onValueChange:x=>e({...t,log_level:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:h.map(x=>o.jsx(De,{value:x,children:x},x))})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"控制台日志级别"}),o.jsxs(Vt,{value:t.console_log_level,onValueChange:x=>e({...t,console_log_level:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:h.map(x=>o.jsx(De,{value:x,children:x},x))})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"文件日志级别"}),o.jsxs(Vt,{value:t.file_log_level,onValueChange:x=>e({...t,file_log_level:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:h.map(x=>o.jsx(De,{value:x,children:x},x))})]})]})]})]}),o.jsxs("div",{children:[o.jsx(de,{className:"mb-2 block",children:"完全屏蔽的库"}),o.jsxs("div",{className:"flex gap-2 mb-2",children:[o.jsx(ze,{value:n,onChange:x=>r(x.target.value),placeholder:"输入库名",className:"flex-1",onKeyDown:x=>{x.key==="Enter"&&(x.preventDefault(),a())}}),o.jsx(he,{onClick:a,size:"sm",className:"flex-shrink-0",children:o.jsx(zs,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),o.jsx("div",{className:"flex flex-wrap gap-2",children:t.suppress_libraries.map(x=>o.jsxs("div",{className:"flex items-center gap-1 bg-secondary px-3 py-1 rounded-md",children:[o.jsx("span",{className:"text-sm",children:x}),o.jsx(he,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0",onClick:()=>l(x),children:o.jsx(Sn,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},x))})]}),o.jsxs("div",{children:[o.jsx(de,{className:"mb-2 block",children:"特定库的日志级别"}),o.jsxs("div",{className:"flex gap-2 mb-2",children:[o.jsx(ze,{value:n,onChange:x=>r(x.target.value),placeholder:"输入库名",className:"flex-1"}),o.jsxs(Vt,{value:s,onValueChange:i,children:[o.jsx($t,{className:"w-32",children:o.jsx(Ut,{})}),o.jsx(Ht,{children:h.map(x=>o.jsx(De,{value:x,children:x},x))})]}),o.jsx(he,{onClick:c,size:"sm",children:o.jsx(zs,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),o.jsx("div",{className:"space-y-2",children:Object.entries(t.library_log_levels).map(([x,y])=>o.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[o.jsx("span",{className:"text-sm font-medium",children:x}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"text-sm text-muted-foreground",children:y}),o.jsx(he,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>d(x),children:o.jsx(Sn,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]})]},x))})]})]})}function j0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"调试配置"}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(de,{children:"显示 Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否在日志中显示提示词"})]}),o.jsx(Bt,{checked:t.show_prompt,onCheckedChange:n=>e({...t,show_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(de,{children:"显示回复器 Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的提示词"})]}),o.jsx(Bt,{checked:t.show_replyer_prompt,onCheckedChange:n=>e({...t,show_replyer_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(de,{children:"显示回复器推理"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的推理过程"})]}),o.jsx(Bt,{checked:t.show_replyer_reasoning,onCheckedChange:n=>e({...t,show_replyer_reasoning:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(de,{children:"显示 Jargon Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示术语相关的提示词"})]}),o.jsx(Bt,{checked:t.show_jargon_prompt,onCheckedChange:n=>e({...t,show_jargon_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(de,{children:"显示记忆检索 Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示记忆检索相关的提示词"})]}),o.jsx(Bt,{checked:t.show_memory_prompt,onCheckedChange:n=>e({...t,show_memory_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(de,{children:"显示 Planner Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 Planner 的提示词和原始返回结果"})]}),o.jsx(Bt,{checked:t.show_planner_prompt,onCheckedChange:n=>e({...t,show_planner_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(de,{children:"显示 LPMM 相关文段"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 LPMM 知识库找到的相关文段日志"})]}),o.jsx(Bt,{checked:t.show_lpmm_paragraph,onCheckedChange:n=>e({...t,show_lpmm_paragraph:n})})]})]})]})}function N0e({config:t,onChange:e}){const[n,r]=b.useState(""),s=()=>{n&&!t.auth_token.includes(n)&&(e({...t,auth_token:[...t.auth_token,n]}),r(""))},i=a=>{e({...t,auth_token:t.auth_token.filter((l,c)=>c!==a)})};return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"MaimMessage 服务配置"}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(de,{children:"启用自定义服务器"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否使用自定义的 MaimMessage 服务器"})]}),o.jsx(Bt,{checked:t.use_custom,onCheckedChange:a=>e({...t,use_custom:a})})]}),t.use_custom&&o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"主机地址"}),o.jsx(ze,{value:t.host,onChange:a=>e({...t,host:a.target.value}),placeholder:"127.0.0.1"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"端口号"}),o.jsx(ze,{type:"number",value:t.port,onChange:a=>e({...t,port:parseInt(a.target.value)}),placeholder:"8090"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"连接模式"}),o.jsxs(Vt,{value:t.mode,onValueChange:a=>e({...t,mode:a}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"ws",children:"WebSocket (ws)"}),o.jsx(De,{value:"tcp",children:"TCP"})]})]})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{checked:t.use_wss,onCheckedChange:a=>e({...t,use_wss:a}),disabled:t.mode!=="ws"}),o.jsx(de,{children:"使用 WSS 安全连接"})]})]}),t.use_wss&&t.mode==="ws"&&o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"SSL 证书文件路径"}),o.jsx(ze,{value:t.cert_file,onChange:a=>e({...t,cert_file:a.target.value}),placeholder:"cert.pem"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"SSL 密钥文件路径"}),o.jsx(ze,{value:t.key_file,onChange:a=>e({...t,key_file:a.target.value}),placeholder:"key.pem"})]})]})]})]})]}),o.jsxs("div",{children:[o.jsx(de,{className:"mb-2 block",children:"认证令牌"}),o.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:"用于 API 验证,为空则不启用验证"}),o.jsxs("div",{className:"flex gap-2 mb-2",children:[o.jsx(ze,{value:n,onChange:a=>r(a.target.value),placeholder:"输入认证令牌",onKeyDown:a=>{a.key==="Enter"&&(a.preventDefault(),s())}}),o.jsx(he,{onClick:s,size:"sm",children:o.jsx(zs,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),o.jsx("div",{className:"space-y-2",children:t.auth_token.map((a,l)=>o.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[o.jsx("span",{className:"text-sm font-mono",children:a}),o.jsx(he,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>i(l),children:o.jsx(Sn,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},l))})]})]})}function C0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"统计信息"}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(de,{children:"启用统计信息发送"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"发送匿名统计信息,帮助我们了解全球有多少只麦麦在运行"})]}),o.jsx(Bt,{checked:t.enable,onCheckedChange:n=>e({...t,enable:n})})]})]})}const Tf=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{className:"relative w-full overflow-auto",children:o.jsx("table",{ref:n,className:ve("w-full caption-bottom text-sm",t),...e})}));Tf.displayName="Table";const Ef=b.forwardRef(({className:t,...e},n)=>o.jsx("thead",{ref:n,className:ve("[&_tr]:border-b",t),...e}));Ef.displayName="TableHeader";const _f=b.forwardRef(({className:t,...e},n)=>o.jsx("tbody",{ref:n,className:ve("[&_tr:last-child]:border-0",t),...e}));_f.displayName="TableBody";const T0e=b.forwardRef(({className:t,...e},n)=>o.jsx("tfoot",{ref:n,className:ve("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",t),...e}));T0e.displayName="TableFooter";const Ps=b.forwardRef(({className:t,...e},n)=>o.jsx("tr",{ref:n,className:ve("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",t),...e}));Ps.displayName="TableRow";const pn=b.forwardRef(({className:t,...e},n)=>o.jsx("th",{ref:n,className:ve("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...e}));pn.displayName="TableHead";const Gt=b.forwardRef(({className:t,...e},n)=>o.jsx("td",{ref:n,className:ve("px-4 py-3 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...e}));Gt.displayName="TableCell";const E0e=b.forwardRef(({className:t,...e},n)=>o.jsx("caption",{ref:n,className:ve("mt-4 text-sm text-muted-foreground",t),...e}));E0e.displayName="TableCaption";var dM=1,_0e=.9,M0e=.8,A0e=.17,lS=.1,cS=.999,R0e=.9999,D0e=.99,P0e=/[\\\/_+.#"@\[\(\{&]/,z0e=/[\\\/_+.#"@\[\(\{&]/g,I0e=/[\s-]/,yH=/[\s-]/g;function cO(t,e,n,r,s,i,a){if(i===e.length)return s===t.length?dM:D0e;var l=`${s},${i}`;if(a[l]!==void 0)return a[l];for(var c=r.charAt(i),d=n.indexOf(c,s),h=0,m,g,x,y;d>=0;)m=cO(t,e,n,r,d+1,i+1,a),m>h&&(d===s?m*=dM:P0e.test(t.charAt(d-1))?(m*=M0e,x=t.slice(s,d-1).match(z0e),x&&s>0&&(m*=Math.pow(cS,x.length))):I0e.test(t.charAt(d-1))?(m*=_0e,y=t.slice(s,d-1).match(yH),y&&s>0&&(m*=Math.pow(cS,y.length))):(m*=A0e,s>0&&(m*=Math.pow(cS,d-s))),t.charAt(d)!==e.charAt(i)&&(m*=R0e)),(mm&&(m=g*lS)),m>h&&(h=m),d=n.indexOf(c,d+1);return a[l]=h,h}function hM(t){return t.toLowerCase().replace(yH," ")}function L0e(t,e,n){return t=n&&n.length>0?`${t+" "+n.join(" ")}`:t,cO(t,e,hM(t),hM(e),0,0,{})}var B0e=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],cu=B0e.reduce((t,e)=>{const n=vj(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...l}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(c,{...l,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),$m='[cmdk-group=""]',uS='[cmdk-group-items=""]',F0e='[cmdk-group-heading=""]',bH='[cmdk-item=""]',fM=`${bH}:not([aria-disabled="true"])`,uO="cmdk-item-select",wh="data-value",q0e=(t,e,n)=>L0e(t,e,n),wH=b.createContext(void 0),Kp=()=>b.useContext(wH),SH=b.createContext(void 0),I6=()=>b.useContext(SH),kH=b.createContext(void 0),OH=b.forwardRef((t,e)=>{let n=Sh(()=>{var W,q;return{search:"",value:(q=(W=t.value)!=null?W:t.defaultValue)!=null?q:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),r=Sh(()=>new Set),s=Sh(()=>new Map),i=Sh(()=>new Map),a=Sh(()=>new Set),l=jH(t),{label:c,children:d,value:h,onValueChange:m,filter:g,shouldFilter:x,loop:y,disablePointerSelection:w=!1,vimBindings:S=!0,...k}=t,j=Ui(),N=Ui(),T=Ui(),E=b.useRef(null),_=Z0e();dd(()=>{if(h!==void 0){let W=h.trim();n.current.value=W,M.emit()}},[h]),dd(()=>{_(6,ee)},[]);let M=b.useMemo(()=>({subscribe:W=>(a.current.add(W),()=>a.current.delete(W)),snapshot:()=>n.current,setState:(W,q,V)=>{var te,ne,K,se;if(!Object.is(n.current[W],q)){if(n.current[W]=q,W==="search")U(),L(),_(1,H);else if(W==="value"){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let re=document.getElementById(T);re?re.focus():(te=document.getElementById(j))==null||te.focus()}if(_(7,()=>{var re;n.current.selectedItemId=(re=z())==null?void 0:re.id,M.emit()}),V||_(5,ee),((ne=l.current)==null?void 0:ne.value)!==void 0){let re=q??"";(se=(K=l.current).onValueChange)==null||se.call(K,re);return}}M.emit()}},emit:()=>{a.current.forEach(W=>W())}}),[]),I=b.useMemo(()=>({value:(W,q,V)=>{var te;q!==((te=i.current.get(W))==null?void 0:te.value)&&(i.current.set(W,{value:q,keywords:V}),n.current.filtered.items.set(W,P(q,V)),_(2,()=>{L(),M.emit()}))},item:(W,q)=>(r.current.add(W),q&&(s.current.has(q)?s.current.get(q).add(W):s.current.set(q,new Set([W]))),_(3,()=>{U(),L(),n.current.value||H(),M.emit()}),()=>{i.current.delete(W),r.current.delete(W),n.current.filtered.items.delete(W);let V=z();_(4,()=>{U(),V?.getAttribute("id")===W&&H(),M.emit()})}),group:W=>(s.current.has(W)||s.current.set(W,new Set),()=>{i.current.delete(W),s.current.delete(W)}),filter:()=>l.current.shouldFilter,label:c||t["aria-label"],getDisablePointerSelection:()=>l.current.disablePointerSelection,listId:j,inputId:T,labelId:N,listInnerRef:E}),[]);function P(W,q){var V,te;let ne=(te=(V=l.current)==null?void 0:V.filter)!=null?te:q0e;return W?ne(W,n.current.search,q):0}function L(){if(!n.current.search||l.current.shouldFilter===!1)return;let W=n.current.filtered.items,q=[];n.current.filtered.groups.forEach(te=>{let ne=s.current.get(te),K=0;ne.forEach(se=>{let re=W.get(se);K=Math.max(re,K)}),q.push([te,K])});let V=E.current;Q().sort((te,ne)=>{var K,se;let re=te.getAttribute("id"),oe=ne.getAttribute("id");return((K=W.get(oe))!=null?K:0)-((se=W.get(re))!=null?se:0)}).forEach(te=>{let ne=te.closest(uS);ne?ne.appendChild(te.parentElement===ne?te:te.closest(`${uS} > *`)):V.appendChild(te.parentElement===V?te:te.closest(`${uS} > *`))}),q.sort((te,ne)=>ne[1]-te[1]).forEach(te=>{var ne;let K=(ne=E.current)==null?void 0:ne.querySelector(`${$m}[${wh}="${encodeURIComponent(te[0])}"]`);K?.parentElement.appendChild(K)})}function H(){let W=Q().find(V=>V.getAttribute("aria-disabled")!=="true"),q=W?.getAttribute(wh);M.setState("value",q||void 0)}function U(){var W,q,V,te;if(!n.current.search||l.current.shouldFilter===!1){n.current.filtered.count=r.current.size;return}n.current.filtered.groups=new Set;let ne=0;for(let K of r.current){let se=(q=(W=i.current.get(K))==null?void 0:W.value)!=null?q:"",re=(te=(V=i.current.get(K))==null?void 0:V.keywords)!=null?te:[],oe=P(se,re);n.current.filtered.items.set(K,oe),oe>0&&ne++}for(let[K,se]of s.current)for(let re of se)if(n.current.filtered.items.get(re)>0){n.current.filtered.groups.add(K);break}n.current.filtered.count=ne}function ee(){var W,q,V;let te=z();te&&(((W=te.parentElement)==null?void 0:W.firstChild)===te&&((V=(q=te.closest($m))==null?void 0:q.querySelector(F0e))==null||V.scrollIntoView({block:"nearest"})),te.scrollIntoView({block:"nearest"}))}function z(){var W;return(W=E.current)==null?void 0:W.querySelector(`${bH}[aria-selected="true"]`)}function Q(){var W;return Array.from(((W=E.current)==null?void 0:W.querySelectorAll(fM))||[])}function B(W){let q=Q()[W];q&&M.setState("value",q.getAttribute(wh))}function X(W){var q;let V=z(),te=Q(),ne=te.findIndex(se=>se===V),K=te[ne+W];(q=l.current)!=null&&q.loop&&(K=ne+W<0?te[te.length-1]:ne+W===te.length?te[0]:te[ne+W]),K&&M.setState("value",K.getAttribute(wh))}function J(W){let q=z(),V=q?.closest($m),te;for(;V&&!te;)V=W>0?Y0e(V,$m):K0e(V,$m),te=V?.querySelector(fM);te?M.setState("value",te.getAttribute(wh)):X(W)}let G=()=>B(Q().length-1),R=W=>{W.preventDefault(),W.metaKey?G():W.altKey?J(1):X(1)},ie=W=>{W.preventDefault(),W.metaKey?B(0):W.altKey?J(-1):X(-1)};return b.createElement(cu.div,{ref:e,tabIndex:-1,...k,"cmdk-root":"",onKeyDown:W=>{var q;(q=k.onKeyDown)==null||q.call(k,W);let V=W.nativeEvent.isComposing||W.keyCode===229;if(!(W.defaultPrevented||V))switch(W.key){case"n":case"j":{S&&W.ctrlKey&&R(W);break}case"ArrowDown":{R(W);break}case"p":case"k":{S&&W.ctrlKey&&ie(W);break}case"ArrowUp":{ie(W);break}case"Home":{W.preventDefault(),B(0);break}case"End":{W.preventDefault(),G();break}case"Enter":{W.preventDefault();let te=z();if(te){let ne=new Event(uO);te.dispatchEvent(ne)}}}}},b.createElement("label",{"cmdk-label":"",htmlFor:I.inputId,id:I.labelId,style:epe},c),xb(t,W=>b.createElement(SH.Provider,{value:M},b.createElement(wH.Provider,{value:I},W))))}),$0e=b.forwardRef((t,e)=>{var n,r;let s=Ui(),i=b.useRef(null),a=b.useContext(kH),l=Kp(),c=jH(t),d=(r=(n=c.current)==null?void 0:n.forceMount)!=null?r:a?.forceMount;dd(()=>{if(!d)return l.item(s,a?.id)},[d]);let h=NH(s,i,[t.value,t.children,i],t.keywords),m=I6(),g=Zc(_=>_.value&&_.value===h.current),x=Zc(_=>d||l.filter()===!1?!0:_.search?_.filtered.items.get(s)>0:!0);b.useEffect(()=>{let _=i.current;if(!(!_||t.disabled))return _.addEventListener(uO,y),()=>_.removeEventListener(uO,y)},[x,t.onSelect,t.disabled]);function y(){var _,M;w(),(M=(_=c.current).onSelect)==null||M.call(_,h.current)}function w(){m.setState("value",h.current,!0)}if(!x)return null;let{disabled:S,value:k,onSelect:j,forceMount:N,keywords:T,...E}=t;return b.createElement(cu.div,{ref:Hc(i,e),...E,id:s,"cmdk-item":"",role:"option","aria-disabled":!!S,"aria-selected":!!g,"data-disabled":!!S,"data-selected":!!g,onPointerMove:S||l.getDisablePointerSelection()?void 0:w,onClick:S?void 0:y},t.children)}),H0e=b.forwardRef((t,e)=>{let{heading:n,children:r,forceMount:s,...i}=t,a=Ui(),l=b.useRef(null),c=b.useRef(null),d=Ui(),h=Kp(),m=Zc(x=>s||h.filter()===!1?!0:x.search?x.filtered.groups.has(a):!0);dd(()=>h.group(a),[]),NH(a,l,[t.value,t.heading,c]);let g=b.useMemo(()=>({id:a,forceMount:s}),[s]);return b.createElement(cu.div,{ref:Hc(l,e),...i,"cmdk-group":"",role:"presentation",hidden:m?void 0:!0},n&&b.createElement("div",{ref:c,"cmdk-group-heading":"","aria-hidden":!0,id:d},n),xb(t,x=>b.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":n?d:void 0},b.createElement(kH.Provider,{value:g},x))))}),Q0e=b.forwardRef((t,e)=>{let{alwaysRender:n,...r}=t,s=b.useRef(null),i=Zc(a=>!a.search);return!n&&!i?null:b.createElement(cu.div,{ref:Hc(s,e),...r,"cmdk-separator":"",role:"separator"})}),V0e=b.forwardRef((t,e)=>{let{onValueChange:n,...r}=t,s=t.value!=null,i=I6(),a=Zc(d=>d.search),l=Zc(d=>d.selectedItemId),c=Kp();return b.useEffect(()=>{t.value!=null&&i.setState("search",t.value)},[t.value]),b.createElement(cu.input,{ref:e,...r,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":c.listId,"aria-labelledby":c.labelId,"aria-activedescendant":l,id:c.inputId,type:"text",value:s?t.value:a,onChange:d=>{s||i.setState("search",d.target.value),n?.(d.target.value)}})}),U0e=b.forwardRef((t,e)=>{let{children:n,label:r="Suggestions",...s}=t,i=b.useRef(null),a=b.useRef(null),l=Zc(d=>d.selectedItemId),c=Kp();return b.useEffect(()=>{if(a.current&&i.current){let d=a.current,h=i.current,m,g=new ResizeObserver(()=>{m=requestAnimationFrame(()=>{let x=d.offsetHeight;h.style.setProperty("--cmdk-list-height",x.toFixed(1)+"px")})});return g.observe(d),()=>{cancelAnimationFrame(m),g.unobserve(d)}}},[]),b.createElement(cu.div,{ref:Hc(i,e),...s,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":l,"aria-label":r,id:c.listId},xb(t,d=>b.createElement("div",{ref:Hc(a,c.listInnerRef),"cmdk-list-sizer":""},d)))}),W0e=b.forwardRef((t,e)=>{let{open:n,onOpenChange:r,overlayClassName:s,contentClassName:i,container:a,...l}=t;return b.createElement(Sj,{open:n,onOpenChange:r},b.createElement(yj,{container:a},b.createElement(Py,{"cmdk-overlay":"",className:s}),b.createElement(zy,{"aria-label":t.label,"cmdk-dialog":"",className:i},b.createElement(OH,{ref:e,...l}))))}),G0e=b.forwardRef((t,e)=>Zc(n=>n.filtered.count===0)?b.createElement(cu.div,{ref:e,...t,"cmdk-empty":"",role:"presentation"}):null),X0e=b.forwardRef((t,e)=>{let{progress:n,children:r,label:s="Loading...",...i}=t;return b.createElement(cu.div,{ref:e,...i,"cmdk-loading":"",role:"progressbar","aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":s},xb(t,a=>b.createElement("div",{"aria-hidden":!0},a)))}),Ci=Object.assign(OH,{List:U0e,Item:$0e,Input:V0e,Group:H0e,Separator:Q0e,Dialog:W0e,Empty:G0e,Loading:X0e});function Y0e(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return n;n=n.nextElementSibling}}function K0e(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return n;n=n.previousElementSibling}}function jH(t){let e=b.useRef(t);return dd(()=>{e.current=t}),e}var dd=typeof window>"u"?b.useEffect:b.useLayoutEffect;function Sh(t){let e=b.useRef();return e.current===void 0&&(e.current=t()),e}function Zc(t){let e=I6(),n=()=>t(e.snapshot());return b.useSyncExternalStore(e.subscribe,n,n)}function NH(t,e,n,r=[]){let s=b.useRef(),i=Kp();return dd(()=>{var a;let l=(()=>{var d;for(let h of n){if(typeof h=="string")return h.trim();if(typeof h=="object"&&"current"in h)return h.current?(d=h.current.textContent)==null?void 0:d.trim():s.current}})(),c=r.map(d=>d.trim());i.value(t,l,c),(a=e.current)==null||a.setAttribute(wh,l),s.current=l}),s}var Z0e=()=>{let[t,e]=b.useState(),n=Sh(()=>new Map);return dd(()=>{n.current.forEach(r=>r()),n.current=new Map},[t]),(r,s)=>{n.current.set(r,s),e({})}};function J0e(t){let e=t.type;return typeof e=="function"?e(t.props):"render"in e?e.render(t.props):t}function xb({asChild:t,children:e},n){return t&&b.isValidElement(e)?b.cloneElement(J0e(e),{ref:e.ref},n(e.props.children)):n(e)}var epe={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};const vb=b.forwardRef(({className:t,...e},n)=>o.jsx(Ci,{ref:n,className:ve("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",t),...e}));vb.displayName=Ci.displayName;const yb=b.forwardRef(({className:t,...e},n)=>o.jsxs("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[o.jsx(Ni,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),o.jsx(Ci.Input,{ref:n,className:ve("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",t),...e})]}));yb.displayName=Ci.Input.displayName;const bb=b.forwardRef(({className:t,...e},n)=>o.jsx(Ci.List,{ref:n,className:ve("max-h-[300px] overflow-y-auto overflow-x-hidden",t),...e}));bb.displayName=Ci.List.displayName;const wb=b.forwardRef((t,e)=>o.jsx(Ci.Empty,{ref:e,className:"py-6 text-center text-sm",...t}));wb.displayName=Ci.Empty.displayName;const rp=b.forwardRef(({className:t,...e},n)=>o.jsx(Ci.Group,{ref:n,className:ve("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",t),...e}));rp.displayName=Ci.Group.displayName;const tpe=b.forwardRef(({className:t,...e},n)=>o.jsx(Ci.Separator,{ref:n,className:ve("-mx-1 h-px bg-border",t),...e}));tpe.displayName=Ci.Separator.displayName;const sp=b.forwardRef(({className:t,...e},n)=>o.jsx(Ci.Item,{ref:n,className:ve("relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",t),...e}));sp.displayName=Ci.Item.displayName;const Oi=b.forwardRef(({className:t,...e},n)=>o.jsx(cI,{ref:n,className:ve("grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",t),...e,children:o.jsx(xee,{className:ve("grid place-content-center text-current"),children:o.jsx(Ro,{className:"h-4 w-4"})})}));Oi.displayName=cI.displayName;const CH=b.createContext(null),TH="maibot-completed-tours";function npe(){try{const t=localStorage.getItem(TH);return t?new Set(JSON.parse(t)):new Set}catch{return new Set}}function mM(t){localStorage.setItem(TH,JSON.stringify([...t]))}function rpe({children:t}){const[e,n]=b.useState({activeTourId:null,stepIndex:0,isRunning:!1}),r=b.useRef(new Map),[,s]=b.useState(0),[i,a]=b.useState(npe),l=b.useCallback((N,T)=>{r.current.set(N,T),s(E=>E+1)},[]),c=b.useCallback(N=>{r.current.delete(N),n(T=>T.activeTourId===N?{...T,activeTourId:null,isRunning:!1,stepIndex:0}:T)},[]),d=b.useCallback((N,T=0)=>{r.current.has(N)&&n({activeTourId:N,stepIndex:T,isRunning:!0})},[]),h=b.useCallback(()=>{n(N=>({...N,isRunning:!1}))},[]),m=b.useCallback(N=>{n(T=>({...T,stepIndex:N}))},[]),g=b.useCallback(()=>{n(N=>({...N,stepIndex:N.stepIndex+1}))},[]),x=b.useCallback(()=>{n(N=>({...N,stepIndex:Math.max(0,N.stepIndex-1)}))},[]),y=b.useCallback(()=>e.activeTourId?r.current.get(e.activeTourId)||[]:[],[e.activeTourId]),w=b.useCallback(N=>{a(T=>{const E=new Set(T);return E.add(N),mM(E),E})},[]),S=b.useCallback(N=>{const{action:T,index:E,status:_,type:M}=N,I=["finished","skipped"];if(T==="close"){n(P=>({...P,isRunning:!1,stepIndex:0}));return}I.includes(_)?n(P=>(_==="finished"&&P.activeTourId&&setTimeout(()=>w(P.activeTourId),0),{...P,isRunning:!1,stepIndex:0})):M==="step:after"&&(T==="next"?n(P=>({...P,stepIndex:E+1})):T==="prev"&&n(P=>({...P,stepIndex:E-1})))},[w]),k=b.useCallback(N=>i.has(N),[i]),j=b.useCallback(N=>{a(T=>{const E=new Set(T);return E.delete(N),mM(E),E})},[]);return o.jsx(CH.Provider,{value:{state:e,tours:r.current,registerTour:l,unregisterTour:c,startTour:d,stopTour:h,goToStep:m,nextStep:g,prevStep:x,getCurrentSteps:y,handleJoyrideCallback:S,isTourCompleted:k,markTourCompleted:w,resetTourCompleted:j},children:t})}function EH(t){return e=>typeof e===t}var spe=EH("function"),ipe=t=>t===null,pM=t=>Object.prototype.toString.call(t).slice(8,-1)==="RegExp",gM=t=>!ape(t)&&!ipe(t)&&(spe(t)||typeof t=="object"),ape=EH("undefined");function ope(t,e){const{length:n}=t;if(n!==e.length)return!1;for(let r=n;r--!==0;)if(!Js(t[r],e[r]))return!1;return!0}function lpe(t,e){if(t.byteLength!==e.byteLength)return!1;const n=new DataView(t.buffer),r=new DataView(e.buffer);let s=t.byteLength;for(;s--;)if(n.getUint8(s)!==r.getUint8(s))return!1;return!0}function cpe(t,e){if(t.size!==e.size)return!1;for(const n of t.entries())if(!e.has(n[0]))return!1;for(const n of t.entries())if(!Js(n[1],e.get(n[0])))return!1;return!0}function upe(t,e){if(t.size!==e.size)return!1;for(const n of t.entries())if(!e.has(n[0]))return!1;return!0}function Js(t,e){if(t===e)return!0;if(t&&gM(t)&&e&&gM(e)){if(t.constructor!==e.constructor)return!1;if(Array.isArray(t)&&Array.isArray(e))return ope(t,e);if(t instanceof Map&&e instanceof Map)return cpe(t,e);if(t instanceof Set&&e instanceof Set)return upe(t,e);if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(e))return lpe(t,e);if(pM(t)&&pM(e))return t.source===e.source&&t.flags===e.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===e.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===e.toString();const n=Object.keys(t),r=Object.keys(e);if(n.length!==r.length)return!1;for(let s=n.length;s--!==0;)if(!Object.prototype.hasOwnProperty.call(e,n[s]))return!1;for(let s=n.length;s--!==0;){const i=n[s];if(!(i==="_owner"&&t.$$typeof)&&!Js(t[i],e[i]))return!1}return!0}return Number.isNaN(t)&&Number.isNaN(e)?!0:t===e}var dpe=["Array","ArrayBuffer","AsyncFunction","AsyncGenerator","AsyncGeneratorFunction","Date","Error","Function","Generator","GeneratorFunction","HTMLElement","Map","Object","Promise","RegExp","Set","WeakMap","WeakSet"],hpe=["bigint","boolean","null","number","string","symbol","undefined"];function Sb(t){const e=Object.prototype.toString.call(t).slice(8,-1);if(/HTML\w+Element/.test(e))return"HTMLElement";if(fpe(e))return e}function ro(t){return e=>Sb(e)===t}function fpe(t){return dpe.includes(t)}function Mf(t){return e=>typeof e===t}function mpe(t){return hpe.includes(t)}var ppe=["innerHTML","ownerDocument","style","attributes","nodeValue"];function ct(t){if(t===null)return"null";switch(typeof t){case"bigint":return"bigint";case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"symbol":return"symbol";case"undefined":return"undefined"}if(ct.array(t))return"Array";if(ct.plainFunction(t))return"Function";const e=Sb(t);return e||"Object"}ct.array=Array.isArray;ct.arrayOf=(t,e)=>!ct.array(t)&&!ct.function(e)?!1:t.every(n=>e(n));ct.asyncGeneratorFunction=t=>Sb(t)==="AsyncGeneratorFunction";ct.asyncFunction=ro("AsyncFunction");ct.bigint=Mf("bigint");ct.boolean=t=>t===!0||t===!1;ct.date=ro("Date");ct.defined=t=>!ct.undefined(t);ct.domElement=t=>ct.object(t)&&!ct.plainObject(t)&&t.nodeType===1&&ct.string(t.nodeName)&&ppe.every(e=>e in t);ct.empty=t=>ct.string(t)&&t.length===0||ct.array(t)&&t.length===0||ct.object(t)&&!ct.map(t)&&!ct.set(t)&&Object.keys(t).length===0||ct.set(t)&&t.size===0||ct.map(t)&&t.size===0;ct.error=ro("Error");ct.function=Mf("function");ct.generator=t=>ct.iterable(t)&&ct.function(t.next)&&ct.function(t.throw);ct.generatorFunction=ro("GeneratorFunction");ct.instanceOf=(t,e)=>!t||!e?!1:Object.getPrototypeOf(t)===e.prototype;ct.iterable=t=>!ct.nullOrUndefined(t)&&ct.function(t[Symbol.iterator]);ct.map=ro("Map");ct.nan=t=>Number.isNaN(t);ct.null=t=>t===null;ct.nullOrUndefined=t=>ct.null(t)||ct.undefined(t);ct.number=t=>Mf("number")(t)&&!ct.nan(t);ct.numericString=t=>ct.string(t)&&t.length>0&&!Number.isNaN(Number(t));ct.object=t=>!ct.nullOrUndefined(t)&&(ct.function(t)||typeof t=="object");ct.oneOf=(t,e)=>ct.array(t)?t.indexOf(e)>-1:!1;ct.plainFunction=ro("Function");ct.plainObject=t=>{if(Sb(t)!=="Object")return!1;const e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};ct.primitive=t=>ct.null(t)||mpe(typeof t);ct.promise=ro("Promise");ct.propertyOf=(t,e,n)=>{if(!ct.object(t)||!e)return!1;const r=t[e];return ct.function(n)?n(r):ct.defined(r)};ct.regexp=ro("RegExp");ct.set=ro("Set");ct.string=Mf("string");ct.symbol=Mf("symbol");ct.undefined=Mf("undefined");ct.weakMap=ro("WeakMap");ct.weakSet=ro("WeakSet");var ft=ct;function gpe(...t){return t.every(e=>ft.string(e)||ft.array(e)||ft.plainObject(e))}function xpe(t,e,n){return _H(t,e)?[t,e].every(ft.array)?!t.some(wM(n))&&e.some(wM(n)):[t,e].every(ft.plainObject)?!Object.entries(t).some(bM(n))&&Object.entries(e).some(bM(n)):e===n:!1}function xM(t,e,n){const{actual:r,key:s,previous:i,type:a}=n,l=To(t,s),c=To(e,s);let d=[l,c].every(ft.number)&&(a==="increased"?lc);return ft.undefined(r)||(d=d&&c===r),ft.undefined(i)||(d=d&&l===i),d}function vM(t,e,n){const{key:r,type:s,value:i}=n,a=To(t,r),l=To(e,r),c=s==="added"?a:l,d=s==="added"?l:a;if(!ft.nullOrUndefined(i)){if(ft.defined(c)){if(ft.array(c)||ft.plainObject(c))return xpe(c,d,i)}else return Js(d,i);return!1}return[a,l].every(ft.array)?!d.every(L6(c)):[a,l].every(ft.plainObject)?vpe(Object.keys(c),Object.keys(d)):![a,l].every(h=>ft.primitive(h)&&ft.defined(h))&&(s==="added"?!ft.defined(a)&&ft.defined(l):ft.defined(a)&&!ft.defined(l))}function yM(t,e,{key:n}={}){let r=To(t,n),s=To(e,n);if(!_H(r,s))throw new TypeError("Inputs have different types");if(!gpe(r,s))throw new TypeError("Inputs don't have length");return[r,s].every(ft.plainObject)&&(r=Object.keys(r),s=Object.keys(s)),[r,s]}function bM(t){return([e,n])=>ft.array(t)?Js(t,n)||t.some(r=>Js(r,n)||ft.array(n)&&L6(n)(r)):ft.plainObject(t)&&t[e]?!!t[e]&&Js(t[e],n):Js(t,n)}function vpe(t,e){return e.some(n=>!t.includes(n))}function wM(t){return e=>ft.array(t)?t.some(n=>Js(n,e)||ft.array(e)&&L6(e)(n)):Js(t,e)}function Hm(t,e){return ft.array(t)?t.some(n=>Js(n,e)):Js(t,e)}function L6(t){return e=>t.some(n=>Js(n,e))}function _H(...t){return t.every(ft.array)||t.every(ft.number)||t.every(ft.plainObject)||t.every(ft.string)}function To(t,e){return ft.plainObject(t)||ft.array(t)?ft.string(e)?e.split(".").reduce((r,s)=>r&&r[s],t):ft.number(e)?t[e]:t:t}function iy(t,e){if([t,e].some(ft.nullOrUndefined))throw new Error("Missing required parameters");if(![t,e].every(h=>ft.plainObject(h)||ft.array(h)))throw new Error("Expected plain objects or array");return{added:(h,m)=>{try{return vM(t,e,{key:h,type:"added",value:m})}catch{return!1}},changed:(h,m,g)=>{try{const x=To(t,h),y=To(e,h),w=ft.defined(m),S=ft.defined(g);if(w||S){const k=S?Hm(g,x):!Hm(m,x),j=Hm(m,y);return k&&j}return[x,y].every(ft.array)||[x,y].every(ft.plainObject)?!Js(x,y):x!==y}catch{return!1}},changedFrom:(h,m,g)=>{if(!ft.defined(h))return!1;try{const x=To(t,h),y=To(e,h),w=ft.defined(g);return Hm(m,x)&&(w?Hm(g,y):!w)}catch{return!1}},decreased:(h,m,g)=>{if(!ft.defined(h))return!1;try{return xM(t,e,{key:h,actual:m,previous:g,type:"decreased"})}catch{return!1}},emptied:h=>{try{const[m,g]=yM(t,e,{key:h});return!!m.length&&!g.length}catch{return!1}},filled:h=>{try{const[m,g]=yM(t,e,{key:h});return!m.length&&!!g.length}catch{return!1}},increased:(h,m,g)=>{if(!ft.defined(h))return!1;try{return xM(t,e,{key:h,actual:m,previous:g,type:"increased"})}catch{return!1}},removed:(h,m)=>{try{return vM(t,e,{key:h,type:"removed",value:m})}catch{return!1}}}}var dS,SM;function ype(){if(SM)return dS;SM=1;var t=new Error("Element already at target scroll position"),e=new Error("Scroll cancelled"),n=Math.min,r=Date.now;dS={left:s("scrollLeft"),top:s("scrollTop")};function s(l){return function(d,h,m,g){m=m||{},typeof m=="function"&&(g=m,m={}),typeof g!="function"&&(g=a);var x=r(),y=d[l],w=m.ease||i,S=isNaN(m.duration)?350:+m.duration,k=!1;return y===h?g(t,d[l]):requestAnimationFrame(N),j;function j(){k=!0}function N(T){if(k)return g(e,d[l]);var E=r(),_=n(1,(E-x)/S),M=w(_);d[l]=M*(h-y)+y,_<1?requestAnimationFrame(N):requestAnimationFrame(function(){g(null,d[l])})}}}function i(l){return .5*(1-Math.cos(Math.PI*l))}function a(){}return dS}var bpe=ype();const wpe=gd(bpe);var xv={exports:{}},Spe=xv.exports,kM;function kpe(){return kM||(kM=1,(function(t){(function(e,n){t.exports?t.exports=n():e.Scrollparent=n()})(Spe,function(){function e(r){var s=getComputedStyle(r,null).getPropertyValue("overflow");return s.indexOf("scroll")>-1||s.indexOf("auto")>-1}function n(r){if(r instanceof HTMLElement||r instanceof SVGElement){for(var s=r.parentNode;s.parentNode;){if(e(s))return s;s=s.parentNode}return document.scrollingElement||document.documentElement}}return n})})(xv)),xv.exports}var Ope=kpe();const MH=gd(Ope);var hS,OM;function jpe(){if(OM)return hS;OM=1;var t=function(r){return Object.prototype.hasOwnProperty.call(r,"props")},e=function(r,s){return r+n(s)},n=function(r){return r===null||typeof r=="boolean"||typeof r>"u"?"":typeof r=="number"?r.toString():typeof r=="string"?r:Array.isArray(r)?r.reduce(e,""):t(r)&&Object.prototype.hasOwnProperty.call(r.props,"children")?n(r.props.children):""};return n.default=n,hS=n,hS}var Npe=jpe();const jM=gd(Npe);var fS,NM;function Cpe(){if(NM)return fS;NM=1;var t=function(j){return e(j)&&!n(j)};function e(k){return!!k&&typeof k=="object"}function n(k){var j=Object.prototype.toString.call(k);return j==="[object RegExp]"||j==="[object Date]"||i(k)}var r=typeof Symbol=="function"&&Symbol.for,s=r?Symbol.for("react.element"):60103;function i(k){return k.$$typeof===s}function a(k){return Array.isArray(k)?[]:{}}function l(k,j){return j.clone!==!1&&j.isMergeableObject(k)?w(a(k),k,j):k}function c(k,j,N){return k.concat(j).map(function(T){return l(T,N)})}function d(k,j){if(!j.customMerge)return w;var N=j.customMerge(k);return typeof N=="function"?N:w}function h(k){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(k).filter(function(j){return Object.propertyIsEnumerable.call(k,j)}):[]}function m(k){return Object.keys(k).concat(h(k))}function g(k,j){try{return j in k}catch{return!1}}function x(k,j){return g(k,j)&&!(Object.hasOwnProperty.call(k,j)&&Object.propertyIsEnumerable.call(k,j))}function y(k,j,N){var T={};return N.isMergeableObject(k)&&m(k).forEach(function(E){T[E]=l(k[E],N)}),m(j).forEach(function(E){x(k,E)||(g(k,E)&&N.isMergeableObject(j[E])?T[E]=d(E,N)(k[E],j[E],N):T[E]=l(j[E],N))}),T}function w(k,j,N){N=N||{},N.arrayMerge=N.arrayMerge||c,N.isMergeableObject=N.isMergeableObject||t,N.cloneUnlessOtherwiseSpecified=l;var T=Array.isArray(j),E=Array.isArray(k),_=T===E;return _?T?N.arrayMerge(k,j,N):y(k,j,N):l(j,N)}w.all=function(j,N){if(!Array.isArray(j))throw new Error("first argument should be an array");return j.reduce(function(T,E){return w(T,E,N)},{})};var S=w;return fS=S,fS}var Tpe=Cpe();const Va=gd(Tpe);var Zp=typeof window<"u"&&typeof document<"u"&&typeof navigator<"u",Epe=(function(){for(var t=["Edge","Trident","Firefox"],e=0;e=0)return 1;return 0})();function _pe(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then(function(){e=!1,t()}))}}function Mpe(t){var e=!1;return function(){e||(e=!0,setTimeout(function(){e=!1,t()},Epe))}}var Ape=Zp&&window.Promise,Rpe=Ape?_pe:Mpe;function AH(t){var e={};return t&&e.toString.call(t)==="[object Function]"}function bd(t,e){if(t.nodeType!==1)return[];var n=t.ownerDocument.defaultView,r=n.getComputedStyle(t,null);return e?r[e]:r}function B6(t){return t.nodeName==="HTML"?t:t.parentNode||t.host}function Jp(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=bd(t),n=e.overflow,r=e.overflowX,s=e.overflowY;return/(auto|scroll|overlay)/.test(n+s+r)?t:Jp(B6(t))}function RH(t){return t&&t.referenceNode?t.referenceNode:t}var CM=Zp&&!!(window.MSInputMethodContext&&document.documentMode),TM=Zp&&/MSIE 10/.test(navigator.userAgent);function Af(t){return t===11?CM:t===10?TM:CM||TM}function af(t){if(!t)return document.documentElement;for(var e=Af(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var r=n&&n.nodeName;return!r||r==="BODY"||r==="HTML"?t?t.ownerDocument.documentElement:document.documentElement:["TH","TD","TABLE"].indexOf(n.nodeName)!==-1&&bd(n,"position")==="static"?af(n):n}function Dpe(t){var e=t.nodeName;return e==="BODY"?!1:e==="HTML"||af(t.firstElementChild)===t}function dO(t){return t.parentNode!==null?dO(t.parentNode):t}function ay(t,e){if(!t||!t.nodeType||!e||!e.nodeType)return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,r=n?t:e,s=n?e:t,i=document.createRange();i.setStart(r,0),i.setEnd(s,0);var a=i.commonAncestorContainer;if(t!==a&&e!==a||r.contains(s))return Dpe(a)?a:af(a);var l=dO(t);return l.host?ay(l.host,e):ay(t,dO(e).host)}function of(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"top",n=e==="top"?"scrollTop":"scrollLeft",r=t.nodeName;if(r==="BODY"||r==="HTML"){var s=t.ownerDocument.documentElement,i=t.ownerDocument.scrollingElement||s;return i[n]}return t[n]}function Ppe(t,e){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,r=of(e,"top"),s=of(e,"left"),i=n?-1:1;return t.top+=r*i,t.bottom+=r*i,t.left+=s*i,t.right+=s*i,t}function EM(t,e){var n=e==="x"?"Left":"Top",r=n==="Left"?"Right":"Bottom";return parseFloat(t["border"+n+"Width"])+parseFloat(t["border"+r+"Width"])}function _M(t,e,n,r){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],Af(10)?parseInt(n["offset"+t])+parseInt(r["margin"+(t==="Height"?"Top":"Left")])+parseInt(r["margin"+(t==="Height"?"Bottom":"Right")]):0)}function DH(t){var e=t.body,n=t.documentElement,r=Af(10)&&getComputedStyle(n);return{height:_M("Height",e,n,r),width:_M("Width",e,n,r)}}var zpe=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},Ipe=(function(){function t(e,n){for(var r=0;r2&&arguments[2]!==void 0?arguments[2]:!1,r=Af(10),s=e.nodeName==="HTML",i=hO(t),a=hO(e),l=Jp(t),c=bd(e),d=parseFloat(c.borderTopWidth),h=parseFloat(c.borderLeftWidth);n&&s&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var m=Jc({top:i.top-a.top-d,left:i.left-a.left-h,width:i.width,height:i.height});if(m.marginTop=0,m.marginLeft=0,!r&&s){var g=parseFloat(c.marginTop),x=parseFloat(c.marginLeft);m.top-=d-g,m.bottom-=d-g,m.left-=h-x,m.right-=h-x,m.marginTop=g,m.marginLeft=x}return(r&&!n?e.contains(l):e===l&&l.nodeName!=="BODY")&&(m=Ppe(m,e)),m}function Lpe(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=t.ownerDocument.documentElement,r=F6(t,n),s=Math.max(n.clientWidth,window.innerWidth||0),i=Math.max(n.clientHeight,window.innerHeight||0),a=e?0:of(n),l=e?0:of(n,"left"),c={top:a-r.top+r.marginTop,left:l-r.left+r.marginLeft,width:s,height:i};return Jc(c)}function PH(t){var e=t.nodeName;if(e==="BODY"||e==="HTML")return!1;if(bd(t,"position")==="fixed")return!0;var n=B6(t);return n?PH(n):!1}function zH(t){if(!t||!t.parentElement||Af())return document.documentElement;for(var e=t.parentElement;e&&bd(e,"transform")==="none";)e=e.parentElement;return e||document.documentElement}function q6(t,e,n,r){var s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1,i={top:0,left:0},a=s?zH(t):ay(t,RH(e));if(r==="viewport")i=Lpe(a,s);else{var l=void 0;r==="scrollParent"?(l=Jp(B6(e)),l.nodeName==="BODY"&&(l=t.ownerDocument.documentElement)):r==="window"?l=t.ownerDocument.documentElement:l=r;var c=F6(l,a,s);if(l.nodeName==="HTML"&&!PH(a)){var d=DH(t.ownerDocument),h=d.height,m=d.width;i.top+=c.top-c.marginTop,i.bottom=h+c.top,i.left+=c.left-c.marginLeft,i.right=m+c.left}else i=c}n=n||0;var g=typeof n=="number";return i.left+=g?n:n.left||0,i.top+=g?n:n.top||0,i.right-=g?n:n.right||0,i.bottom-=g?n:n.bottom||0,i}function Bpe(t){var e=t.width,n=t.height;return e*n}function IH(t,e,n,r,s){var i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0;if(t.indexOf("auto")===-1)return t;var a=q6(n,r,i,s),l={top:{width:a.width,height:e.top-a.top},right:{width:a.right-e.right,height:a.height},bottom:{width:a.width,height:a.bottom-e.bottom},left:{width:e.left-a.left,height:a.height}},c=Object.keys(l).map(function(g){return wa({key:g},l[g],{area:Bpe(l[g])})}).sort(function(g,x){return x.area-g.area}),d=c.filter(function(g){var x=g.width,y=g.height;return x>=n.clientWidth&&y>=n.clientHeight}),h=d.length>0?d[0].key:c[0].key,m=t.split("-")[1];return h+(m?"-"+m:"")}function LH(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,s=r?zH(e):ay(e,RH(n));return F6(n,s,r)}function BH(t){var e=t.ownerDocument.defaultView,n=e.getComputedStyle(t),r=parseFloat(n.marginTop||0)+parseFloat(n.marginBottom||0),s=parseFloat(n.marginLeft||0)+parseFloat(n.marginRight||0),i={width:t.offsetWidth+s,height:t.offsetHeight+r};return i}function oy(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,function(n){return e[n]})}function FH(t,e,n){n=n.split("-")[0];var r=BH(t),s={width:r.width,height:r.height},i=["right","left"].indexOf(n)!==-1,a=i?"top":"left",l=i?"left":"top",c=i?"height":"width",d=i?"width":"height";return s[a]=e[a]+e[c]/2-r[c]/2,n===l?s[l]=e[l]-r[d]:s[l]=e[oy(l)],s}function eg(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function Fpe(t,e,n){if(Array.prototype.findIndex)return t.findIndex(function(s){return s[e]===n});var r=eg(t,function(s){return s[e]===n});return t.indexOf(r)}function qH(t,e,n){var r=n===void 0?t:t.slice(0,Fpe(t,"name",n));return r.forEach(function(s){s.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var i=s.function||s.fn;s.enabled&&AH(i)&&(e.offsets.popper=Jc(e.offsets.popper),e.offsets.reference=Jc(e.offsets.reference),e=i(e,s))}),e}function qpe(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=LH(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=IH(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=FH(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=qH(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}function $H(t,e){return t.some(function(n){var r=n.name,s=n.enabled;return s&&r===e})}function $6(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),r=0;ra[x]&&(t.offsets.popper[m]+=l[m]+y-a[x]),t.offsets.popper=Jc(t.offsets.popper);var w=l[m]+l[d]/2-y/2,S=bd(t.instance.popper),k=parseFloat(S["margin"+h]),j=parseFloat(S["border"+h+"Width"]),N=w-t.offsets.popper[m]-k-j;return N=Math.max(Math.min(a[d]-y,N),0),t.arrowElement=r,t.offsets.arrow=(n={},lf(n,m,Math.round(N)),lf(n,g,""),n),t}function ege(t){return t==="end"?"start":t==="start"?"end":t}var UH=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],mS=UH.slice(3);function MM(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=mS.indexOf(t),r=mS.slice(n+1).concat(mS.slice(0,n));return e?r.reverse():r}var pS={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function tge(t,e){if($H(t.instance.modifiers,"inner")||t.flipped&&t.placement===t.originalPlacement)return t;var n=q6(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),r=t.placement.split("-")[0],s=oy(r),i=t.placement.split("-")[1]||"",a=[];switch(e.behavior){case pS.FLIP:a=[r,s];break;case pS.CLOCKWISE:a=MM(r);break;case pS.COUNTERCLOCKWISE:a=MM(r,!0);break;default:a=e.behavior}return a.forEach(function(l,c){if(r!==l||a.length===c+1)return t;r=t.placement.split("-")[0],s=oy(r);var d=t.offsets.popper,h=t.offsets.reference,m=Math.floor,g=r==="left"&&m(d.right)>m(h.left)||r==="right"&&m(d.left)m(h.top)||r==="bottom"&&m(d.top)m(n.right),w=m(d.top)m(n.bottom),k=r==="left"&&x||r==="right"&&y||r==="top"&&w||r==="bottom"&&S,j=["top","bottom"].indexOf(r)!==-1,N=!!e.flipVariations&&(j&&i==="start"&&x||j&&i==="end"&&y||!j&&i==="start"&&w||!j&&i==="end"&&S),T=!!e.flipVariationsByContent&&(j&&i==="start"&&y||j&&i==="end"&&x||!j&&i==="start"&&S||!j&&i==="end"&&w),E=N||T;(g||k||E)&&(t.flipped=!0,(g||k)&&(r=a[c+1]),E&&(i=ege(i)),t.placement=r+(i?"-"+i:""),t.offsets.popper=wa({},t.offsets.popper,FH(t.instance.popper,t.offsets.reference,t.placement)),t=qH(t.instance.modifiers,t,"flip"))}),t}function nge(t){var e=t.offsets,n=e.popper,r=e.reference,s=t.placement.split("-")[0],i=Math.floor,a=["top","bottom"].indexOf(s)!==-1,l=a?"right":"bottom",c=a?"left":"top",d=a?"width":"height";return n[l]i(r[l])&&(t.offsets.popper[c]=i(r[l])),t}function rge(t,e,n,r){var s=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),i=+s[1],a=s[2];if(!i)return t;if(a.indexOf("%")===0){var l=void 0;switch(a){case"%p":l=n;break;case"%":case"%r":default:l=r}var c=Jc(l);return c[e]/100*i}else if(a==="vh"||a==="vw"){var d=void 0;return a==="vh"?d=Math.max(document.documentElement.clientHeight,window.innerHeight||0):d=Math.max(document.documentElement.clientWidth,window.innerWidth||0),d/100*i}else return i}function sge(t,e,n,r){var s=[0,0],i=["right","left"].indexOf(r)!==-1,a=t.split(/(\+|\-)/).map(function(h){return h.trim()}),l=a.indexOf(eg(a,function(h){return h.search(/,|\s/)!==-1}));a[l]&&a[l].indexOf(",")===-1&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var c=/\s*,\s*|\s+/,d=l!==-1?[a.slice(0,l).concat([a[l].split(c)[0]]),[a[l].split(c)[1]].concat(a.slice(l+1))]:[a];return d=d.map(function(h,m){var g=(m===1?!i:i)?"height":"width",x=!1;return h.reduce(function(y,w){return y[y.length-1]===""&&["+","-"].indexOf(w)!==-1?(y[y.length-1]=w,x=!0,y):x?(y[y.length-1]+=w,x=!1,y):y.concat(w)},[]).map(function(y){return rge(y,g,e,n)})}),d.forEach(function(h,m){h.forEach(function(g,x){H6(g)&&(s[m]+=g*(h[x-1]==="-"?-1:1))})}),s}function ige(t,e){var n=e.offset,r=t.placement,s=t.offsets,i=s.popper,a=s.reference,l=r.split("-")[0],c=void 0;return H6(+n)?c=[+n,0]:c=sge(n,i,a,l),l==="left"?(i.top+=c[0],i.left-=c[1]):l==="right"?(i.top+=c[0],i.left+=c[1]):l==="top"?(i.left+=c[0],i.top-=c[1]):l==="bottom"&&(i.left+=c[0],i.top+=c[1]),t.popper=i,t}function age(t,e){var n=e.boundariesElement||af(t.instance.popper);t.instance.reference===n&&(n=af(n));var r=$6("transform"),s=t.instance.popper.style,i=s.top,a=s.left,l=s[r];s.top="",s.left="",s[r]="";var c=q6(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);s.top=i,s.left=a,s[r]=l,e.boundaries=c;var d=e.priority,h=t.offsets.popper,m={primary:function(x){var y=h[x];return h[x]c[x]&&!e.escapeWithReference&&(w=Math.min(h[y],c[x]-(x==="right"?h.width:h.height))),lf({},y,w)}};return d.forEach(function(g){var x=["left","top"].indexOf(g)!==-1?"primary":"secondary";h=wa({},h,m[x](g))}),t.offsets.popper=h,t}function oge(t){var e=t.placement,n=e.split("-")[0],r=e.split("-")[1];if(r){var s=t.offsets,i=s.reference,a=s.popper,l=["bottom","top"].indexOf(n)!==-1,c=l?"left":"top",d=l?"width":"height",h={start:lf({},c,i[c]),end:lf({},c,i[c]+i[d]-a[d])};t.offsets.popper=wa({},a,h[r])}return t}function lge(t){if(!VH(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=eg(t.instance.modifiers,function(r){return r.name==="preventOverflow"}).boundaries;if(e.bottomn.right||e.top>n.bottom||e.right2&&arguments[2]!==void 0?arguments[2]:{};zpe(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(r.update)},this.update=Rpe(this.update.bind(this)),this.options=wa({},t.Defaults,s),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(wa({},t.Defaults.modifiers,s.modifiers)).forEach(function(a){r.options.modifiers[a]=wa({},t.Defaults.modifiers[a]||{},s.modifiers?s.modifiers[a]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(a){return wa({name:a},r.options.modifiers[a])}).sort(function(a,l){return a.order-l.order}),this.modifiers.forEach(function(a){a.enabled&&AH(a.onLoad)&&a.onLoad(r.reference,r.popper,r.options,a,r.state)}),this.update();var i=this.options.eventsEnabled;i&&this.enableEventListeners(),this.state.eventsEnabled=i}return Ipe(t,[{key:"update",value:function(){return qpe.call(this)}},{key:"destroy",value:function(){return $pe.call(this)}},{key:"enableEventListeners",value:function(){return Qpe.call(this)}},{key:"disableEventListeners",value:function(){return Upe.call(this)}}]),t})();ip.Utils=(typeof window<"u"?window:global).PopperUtils;ip.placements=UH;ip.Defaults=dge;var hge=["innerHTML","ownerDocument","style","attributes","nodeValue"],fge=["Array","ArrayBuffer","AsyncFunction","AsyncGenerator","AsyncGeneratorFunction","Date","Error","Function","Generator","GeneratorFunction","HTMLElement","Map","Object","Promise","RegExp","Set","WeakMap","WeakSet"],mge=["bigint","boolean","null","number","string","symbol","undefined"];function kb(t){var e=Object.prototype.toString.call(t).slice(8,-1);if(/HTML\w+Element/.test(e))return"HTMLElement";if(pge(e))return e}function so(t){return function(e){return kb(e)===t}}function pge(t){return fge.includes(t)}function Rf(t){return function(e){return typeof e===t}}function gge(t){return mge.includes(t)}function _e(t){if(t===null)return"null";switch(typeof t){case"bigint":return"bigint";case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"symbol":return"symbol";case"undefined":return"undefined"}if(_e.array(t))return"Array";if(_e.plainFunction(t))return"Function";var e=kb(t);return e||"Object"}_e.array=Array.isArray;_e.arrayOf=function(t,e){return!_e.array(t)&&!_e.function(e)?!1:t.every(function(n){return e(n)})};_e.asyncGeneratorFunction=function(t){return kb(t)==="AsyncGeneratorFunction"};_e.asyncFunction=so("AsyncFunction");_e.bigint=Rf("bigint");_e.boolean=function(t){return t===!0||t===!1};_e.date=so("Date");_e.defined=function(t){return!_e.undefined(t)};_e.domElement=function(t){return _e.object(t)&&!_e.plainObject(t)&&t.nodeType===1&&_e.string(t.nodeName)&&hge.every(function(e){return e in t})};_e.empty=function(t){return _e.string(t)&&t.length===0||_e.array(t)&&t.length===0||_e.object(t)&&!_e.map(t)&&!_e.set(t)&&Object.keys(t).length===0||_e.set(t)&&t.size===0||_e.map(t)&&t.size===0};_e.error=so("Error");_e.function=Rf("function");_e.generator=function(t){return _e.iterable(t)&&_e.function(t.next)&&_e.function(t.throw)};_e.generatorFunction=so("GeneratorFunction");_e.instanceOf=function(t,e){return!t||!e?!1:Object.getPrototypeOf(t)===e.prototype};_e.iterable=function(t){return!_e.nullOrUndefined(t)&&_e.function(t[Symbol.iterator])};_e.map=so("Map");_e.nan=function(t){return Number.isNaN(t)};_e.null=function(t){return t===null};_e.nullOrUndefined=function(t){return _e.null(t)||_e.undefined(t)};_e.number=function(t){return Rf("number")(t)&&!_e.nan(t)};_e.numericString=function(t){return _e.string(t)&&t.length>0&&!Number.isNaN(Number(t))};_e.object=function(t){return!_e.nullOrUndefined(t)&&(_e.function(t)||typeof t=="object")};_e.oneOf=function(t,e){return _e.array(t)?t.indexOf(e)>-1:!1};_e.plainFunction=so("Function");_e.plainObject=function(t){if(kb(t)!=="Object")return!1;var e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};_e.primitive=function(t){return _e.null(t)||gge(typeof t)};_e.promise=so("Promise");_e.propertyOf=function(t,e,n){if(!_e.object(t)||!e)return!1;var r=t[e];return _e.function(n)?n(r):_e.defined(r)};_e.regexp=so("RegExp");_e.set=so("Set");_e.string=Rf("string");_e.symbol=Rf("symbol");_e.undefined=Rf("undefined");_e.weakMap=so("WeakMap");_e.weakSet=so("WeakSet");function WH(t){return function(e){return typeof e===t}}var xge=WH("function"),vge=function(t){return t===null},AM=function(t){return Object.prototype.toString.call(t).slice(8,-1)==="RegExp"},RM=function(t){return!yge(t)&&!vge(t)&&(xge(t)||typeof t=="object")},yge=WH("undefined"),mO=function(t){var e=typeof Symbol=="function"&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")};function bge(t,e){var n=t.length;if(n!==e.length)return!1;for(var r=n;r--!==0;)if(!bi(t[r],e[r]))return!1;return!0}function wge(t,e){if(t.byteLength!==e.byteLength)return!1;for(var n=new DataView(t.buffer),r=new DataView(e.buffer),s=t.byteLength;s--;)if(n.getUint8(s)!==r.getUint8(s))return!1;return!0}function Sge(t,e){var n,r,s,i;if(t.size!==e.size)return!1;try{for(var a=mO(t.entries()),l=a.next();!l.done;l=a.next()){var c=l.value;if(!e.has(c[0]))return!1}}catch(m){n={error:m}}finally{try{l&&!l.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}try{for(var d=mO(t.entries()),h=d.next();!h.done;h=d.next()){var c=h.value;if(!bi(c[1],e.get(c[0])))return!1}}catch(m){s={error:m}}finally{try{h&&!h.done&&(i=d.return)&&i.call(d)}finally{if(s)throw s.error}}return!0}function kge(t,e){var n,r;if(t.size!==e.size)return!1;try{for(var s=mO(t.entries()),i=s.next();!i.done;i=s.next()){var a=i.value;if(!e.has(a[0]))return!1}}catch(l){n={error:l}}finally{try{i&&!i.done&&(r=s.return)&&r.call(s)}finally{if(n)throw n.error}}return!0}function bi(t,e){if(t===e)return!0;if(t&&RM(t)&&e&&RM(e)){if(t.constructor!==e.constructor)return!1;if(Array.isArray(t)&&Array.isArray(e))return bge(t,e);if(t instanceof Map&&e instanceof Map)return Sge(t,e);if(t instanceof Set&&e instanceof Set)return kge(t,e);if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(e))return wge(t,e);if(AM(t)&&AM(e))return t.source===e.source&&t.flags===e.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===e.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===e.toString();var n=Object.keys(t),r=Object.keys(e);if(n.length!==r.length)return!1;for(var s=n.length;s--!==0;)if(!Object.prototype.hasOwnProperty.call(e,n[s]))return!1;for(var s=n.length;s--!==0;){var i=n[s];if(!(i==="_owner"&&t.$$typeof)&&!bi(t[i],e[i]))return!1}return!0}return Number.isNaN(t)&&Number.isNaN(e)?!0:t===e}function Oge(){for(var t=[],e=0;ec);return _e.undefined(r)||(d=d&&c===r),_e.undefined(i)||(d=d&&l===i),d}function PM(t,e,n){var r=n.key,s=n.type,i=n.value,a=Eo(t,r),l=Eo(e,r),c=s==="added"?a:l,d=s==="added"?l:a;if(!_e.nullOrUndefined(i)){if(_e.defined(c)){if(_e.array(c)||_e.plainObject(c))return jge(c,d,i)}else return bi(d,i);return!1}return[a,l].every(_e.array)?!d.every(Q6(c)):[a,l].every(_e.plainObject)?Nge(Object.keys(c),Object.keys(d)):![a,l].every(function(h){return _e.primitive(h)&&_e.defined(h)})&&(s==="added"?!_e.defined(a)&&_e.defined(l):_e.defined(a)&&!_e.defined(l))}function zM(t,e,n){var r=n===void 0?{}:n,s=r.key,i=Eo(t,s),a=Eo(e,s);if(!GH(i,a))throw new TypeError("Inputs have different types");if(!Oge(i,a))throw new TypeError("Inputs don't have length");return[i,a].every(_e.plainObject)&&(i=Object.keys(i),a=Object.keys(a)),[i,a]}function IM(t){return function(e){var n=e[0],r=e[1];return _e.array(t)?bi(t,r)||t.some(function(s){return bi(s,r)||_e.array(r)&&Q6(r)(s)}):_e.plainObject(t)&&t[n]?!!t[n]&&bi(t[n],r):bi(t,r)}}function Nge(t,e){return e.some(function(n){return!t.includes(n)})}function LM(t){return function(e){return _e.array(t)?t.some(function(n){return bi(n,e)||_e.array(e)&&Q6(e)(n)}):bi(t,e)}}function Qm(t,e){return _e.array(t)?t.some(function(n){return bi(n,e)}):bi(t,e)}function Q6(t){return function(e){return t.some(function(n){return bi(n,e)})}}function GH(){for(var t=[],e=0;e"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function _ge(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i=0)&&(n[s]=t[s]);return n}function XH(t,e){if(t==null)return{};var n=_ge(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function jl(t){if(t===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function Mge(t,e){if(e&&(typeof e=="object"||typeof e=="function"))return e;if(e!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return jl(t)}function sg(t){var e=Ege();return function(){var r=ly(t),s;if(e){var i=ly(this).constructor;s=Reflect.construct(r,arguments,i)}else s=r.apply(this,arguments);return Mge(this,s)}}function Age(t,e){if(typeof t!="object"||t===null)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function YH(t){var e=Age(t,"string");return typeof e=="symbol"?e:String(e)}var Rge={flip:{padding:20},preventOverflow:{padding:10}},Dge="The typeValidator argument must be a function with the signature function(props, propName, componentName).",Pge="The error message is optional, but must be a string if provided.";function zge(t,e,n,r){return typeof t=="boolean"?t:typeof t=="function"?t(e,n,r):t?!!t:!1}function Ige(t,e){return Object.hasOwnProperty.call(t,e)}function Lge(t,e,n,r){return new Error("Required ".concat(t[e]," `").concat(e,"` was not specified in `").concat(n,"`."))}function Bge(t,e){if(typeof t!="function")throw new TypeError(Dge);if(e&&typeof e!="string")throw new TypeError(Pge)}function FM(t,e,n){return Bge(t,n),function(r,s,i){for(var a=arguments.length,l=new Array(a>3?a-3:0),c=3;c3&&arguments[3]!==void 0?arguments[3]:!1;t.addEventListener(e,n,r)}function qge(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;t.removeEventListener(e,n,r)}function $ge(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,s;s=function(a){n(a),qge(t,e,s)},Fge(t,e,s,r)}function qM(){}var KH=(function(t){rg(n,t);var e=sg(n);function n(){return tg(this,n),e.apply(this,arguments)}return ng(n,[{key:"componentDidMount",value:function(){vo()&&(this.node||this.appendNode(),Vm||this.renderPortal())}},{key:"componentDidUpdate",value:function(){vo()&&(Vm||this.renderPortal())}},{key:"componentWillUnmount",value:function(){!vo()||!this.node||(Vm||K1.unmountComponentAtNode(this.node),this.node&&this.node.parentNode===document.body&&(document.body.removeChild(this.node),this.node=void 0))}},{key:"appendNode",value:function(){var s=this.props,i=s.id,a=s.zIndex;this.node||(this.node=document.createElement("div"),i&&(this.node.id=i),a&&(this.node.style.zIndex=a),document.body.appendChild(this.node))}},{key:"renderPortal",value:function(){if(!vo())return null;var s=this.props,i=s.children,a=s.setRef;if(this.node||this.appendNode(),Vm)return K1.createPortal(i,this.node);var l=K1.unstable_renderSubtreeIntoContainer(this,i.length>1?ae.createElement("div",null,i):i[0],this.node);return a(l),null}},{key:"renderReact16",value:function(){var s=this.props,i=s.hasChildren,a=s.placement,l=s.target;return i?this.renderPortal():l||a==="center"?this.renderPortal():null}},{key:"render",value:function(){return Vm?this.renderReact16():null}}]),n})(ae.Component);Bs(KH,"propTypes",{children:Ge.oneOfType([Ge.element,Ge.array]),hasChildren:Ge.bool,id:Ge.oneOfType([Ge.string,Ge.number]),placement:Ge.string,setRef:Ge.func.isRequired,target:Ge.oneOfType([Ge.object,Ge.string]),zIndex:Ge.number});var ZH=(function(t){rg(n,t);var e=sg(n);function n(){return tg(this,n),e.apply(this,arguments)}return ng(n,[{key:"parentStyle",get:function(){var s=this.props,i=s.placement,a=s.styles,l=a.arrow.length,c={pointerEvents:"none",position:"absolute",width:"100%"};return i.startsWith("top")?(c.bottom=0,c.left=0,c.right=0,c.height=l):i.startsWith("bottom")?(c.left=0,c.right=0,c.top=0,c.height=l):i.startsWith("left")?(c.right=0,c.top=0,c.bottom=0):i.startsWith("right")&&(c.left=0,c.top=0),c}},{key:"render",value:function(){var s=this.props,i=s.placement,a=s.setArrowRef,l=s.styles,c=l.arrow,d=c.color,h=c.display,m=c.length,g=c.margin,x=c.position,y=c.spread,w={display:h,position:x},S,k=y,j=m;return i.startsWith("top")?(S="0,0 ".concat(k/2,",").concat(j," ").concat(k,",0"),w.bottom=0,w.marginLeft=g,w.marginRight=g):i.startsWith("bottom")?(S="".concat(k,",").concat(j," ").concat(k/2,",0 0,").concat(j),w.top=0,w.marginLeft=g,w.marginRight=g):i.startsWith("left")?(j=y,k=m,S="0,0 ".concat(k,",").concat(j/2," 0,").concat(j),w.right=0,w.marginTop=g,w.marginBottom=g):i.startsWith("right")&&(j=y,k=m,S="".concat(k,",").concat(j," ").concat(k,",0 0,").concat(j/2),w.left=0,w.marginTop=g,w.marginBottom=g),ae.createElement("div",{className:"__floater__arrow",style:this.parentStyle},ae.createElement("span",{ref:a,style:w},ae.createElement("svg",{width:k,height:j,version:"1.1",xmlns:"http://www.w3.org/2000/svg"},ae.createElement("polygon",{points:S,fill:d}))))}}]),n})(ae.Component);Bs(ZH,"propTypes",{placement:Ge.string.isRequired,setArrowRef:Ge.func.isRequired,styles:Ge.object.isRequired});var Hge=["color","height","width"];function JH(t){var e=t.handleClick,n=t.styles,r=n.color,s=n.height,i=n.width,a=XH(n,Hge);return ae.createElement("button",{"aria-label":"close",onClick:e,style:a,type:"button"},ae.createElement("svg",{width:"".concat(i,"px"),height:"".concat(s,"px"),viewBox:"0 0 18 18",version:"1.1",xmlns:"http://www.w3.org/2000/svg",preserveAspectRatio:"xMidYMid"},ae.createElement("g",null,ae.createElement("path",{d:"M8.13911129,9.00268191 L0.171521827,17.0258467 C-0.0498027049,17.248715 -0.0498027049,17.6098394 0.171521827,17.8327545 C0.28204354,17.9443526 0.427188206,17.9998706 0.572051765,17.9998706 C0.71714958,17.9998706 0.862013139,17.9443526 0.972581703,17.8327545 L9.0000937,9.74924618 L17.0276057,17.8327545 C17.1384085,17.9443526 17.2832721,17.9998706 17.4281356,17.9998706 C17.5729992,17.9998706 17.718097,17.9443526 17.8286656,17.8327545 C18.0499901,17.6098862 18.0499901,17.2487618 17.8286656,17.0258467 L9.86135722,9.00268191 L17.8340066,0.973848225 C18.0553311,0.750979934 18.0553311,0.389855532 17.8340066,0.16694039 C17.6126821,-0.0556467968 17.254037,-0.0556467968 17.0329467,0.16694039 L9.00042166,8.25611765 L0.967006424,0.167268345 C0.745681892,-0.0553188426 0.387317931,-0.0553188426 0.165993399,0.167268345 C-0.0553311331,0.390136635 -0.0553311331,0.751261038 0.165993399,0.974176179 L8.13920499,9.00268191 L8.13911129,9.00268191 Z",fill:r}))))}JH.propTypes={handleClick:Ge.func.isRequired,styles:Ge.object.isRequired};function eQ(t){var e=t.content,n=t.footer,r=t.handleClick,s=t.open,i=t.positionWrapper,a=t.showCloseButton,l=t.title,c=t.styles,d={content:ae.isValidElement(e)?e:ae.createElement("div",{className:"__floater__content",style:c.content},e)};return l&&(d.title=ae.isValidElement(l)?l:ae.createElement("div",{className:"__floater__title",style:c.title},l)),n&&(d.footer=ae.isValidElement(n)?n:ae.createElement("div",{className:"__floater__footer",style:c.footer},n)),(a||i)&&!_e.boolean(s)&&(d.close=ae.createElement(JH,{styles:c.close,handleClick:r})),ae.createElement("div",{className:"__floater__container",style:c.container},d.close,d.title,d.content,d.footer)}eQ.propTypes={content:Ge.node.isRequired,footer:Ge.node,handleClick:Ge.func.isRequired,open:Ge.bool,positionWrapper:Ge.bool.isRequired,showCloseButton:Ge.bool.isRequired,styles:Ge.object.isRequired,title:Ge.node};var tQ=(function(t){rg(n,t);var e=sg(n);function n(){return tg(this,n),e.apply(this,arguments)}return ng(n,[{key:"style",get:function(){var s=this.props,i=s.disableAnimation,a=s.component,l=s.placement,c=s.hideArrow,d=s.status,h=s.styles,m=h.arrow.length,g=h.floater,x=h.floaterCentered,y=h.floaterClosing,w=h.floaterOpening,S=h.floaterWithAnimation,k=h.floaterWithComponent,j={};return c||(l.startsWith("top")?j.padding="0 0 ".concat(m,"px"):l.startsWith("bottom")?j.padding="".concat(m,"px 0 0"):l.startsWith("left")?j.padding="0 ".concat(m,"px 0 0"):l.startsWith("right")&&(j.padding="0 0 0 ".concat(m,"px"))),[On.OPENING,On.OPEN].indexOf(d)!==-1&&(j=br(br({},j),w)),d===On.CLOSING&&(j=br(br({},j),y)),d===On.OPEN&&!i&&(j=br(br({},j),S)),l==="center"&&(j=br(br({},j),x)),a&&(j=br(br({},j),k)),br(br({},g),j)}},{key:"render",value:function(){var s=this.props,i=s.component,a=s.handleClick,l=s.hideArrow,c=s.setFloaterRef,d=s.status,h={},m=["__floater"];return i?ae.isValidElement(i)?h.content=ae.cloneElement(i,{closeFn:a}):h.content=i({closeFn:a}):h.content=ae.createElement(eQ,this.props),d===On.OPEN&&m.push("__floater__open"),l||(h.arrow=ae.createElement(ZH,this.props)),ae.createElement("div",{ref:c,className:m.join(" "),style:this.style},ae.createElement("div",{className:"__floater__body"},h.content,h.arrow))}}]),n})(ae.Component);Bs(tQ,"propTypes",{component:Ge.oneOfType([Ge.func,Ge.element]),content:Ge.node,disableAnimation:Ge.bool.isRequired,footer:Ge.node,handleClick:Ge.func.isRequired,hideArrow:Ge.bool.isRequired,open:Ge.bool,placement:Ge.string.isRequired,positionWrapper:Ge.bool.isRequired,setArrowRef:Ge.func.isRequired,setFloaterRef:Ge.func.isRequired,showCloseButton:Ge.bool,status:Ge.string.isRequired,styles:Ge.object.isRequired,title:Ge.node});var nQ=(function(t){rg(n,t);var e=sg(n);function n(){return tg(this,n),e.apply(this,arguments)}return ng(n,[{key:"render",value:function(){var s=this.props,i=s.children,a=s.handleClick,l=s.handleMouseEnter,c=s.handleMouseLeave,d=s.setChildRef,h=s.setWrapperRef,m=s.style,g=s.styles,x;if(i)if(ae.Children.count(i)===1)if(!ae.isValidElement(i))x=ae.createElement("span",null,i);else{var y=_e.function(i.type)?"innerRef":"ref";x=ae.cloneElement(ae.Children.only(i),Bs({},y,d))}else x=i;return x?ae.createElement("span",{ref:h,style:br(br({},g),m),onClick:a,onMouseEnter:l,onMouseLeave:c},x):null}}]),n})(ae.Component);Bs(nQ,"propTypes",{children:Ge.node,handleClick:Ge.func.isRequired,handleMouseEnter:Ge.func.isRequired,handleMouseLeave:Ge.func.isRequired,setChildRef:Ge.func.isRequired,setWrapperRef:Ge.func.isRequired,style:Ge.object,styles:Ge.object.isRequired});var Qge={zIndex:100};function Vge(t){var e=Va(Qge,t.options||{});return{wrapper:{cursor:"help",display:"inline-flex",flexDirection:"column",zIndex:e.zIndex},wrapperPosition:{left:-1e3,position:"absolute",top:-1e3,visibility:"hidden"},floater:{display:"inline-block",filter:"drop-shadow(0 0 3px rgba(0, 0, 0, 0.3))",maxWidth:300,opacity:0,position:"relative",transition:"opacity 0.3s",visibility:"hidden",zIndex:e.zIndex},floaterOpening:{opacity:1,visibility:"visible"},floaterWithAnimation:{opacity:1,transition:"opacity 0.3s, transform 0.2s",visibility:"visible"},floaterWithComponent:{maxWidth:"100%"},floaterClosing:{opacity:0,visibility:"visible"},floaterCentered:{left:"50%",position:"fixed",top:"50%",transform:"translate(-50%, -50%)"},container:{backgroundColor:"#fff",color:"#666",minHeight:60,minWidth:200,padding:20,position:"relative",zIndex:10},title:{borderBottom:"1px solid #555",color:"#555",fontSize:18,marginBottom:5,paddingBottom:6,paddingRight:18},content:{fontSize:15},close:{backgroundColor:"transparent",border:0,borderRadius:0,color:"#555",fontSize:0,height:15,outline:"none",padding:10,position:"absolute",right:0,top:0,width:15,WebkitAppearance:"none"},footer:{borderTop:"1px solid #ccc",fontSize:13,marginTop:10,paddingTop:5},arrow:{color:"#fff",display:"inline-flex",length:16,margin:8,position:"absolute",spread:32},options:e}}var Uge=["arrow","flip","offset"],Wge=["position","top","right","bottom","left"],V6=(function(t){rg(n,t);var e=sg(n);function n(r){var s;return tg(this,n),s=e.call(this,r),Bs(jl(s),"setArrowRef",function(i){s.arrowRef=i}),Bs(jl(s),"setChildRef",function(i){s.childRef=i}),Bs(jl(s),"setFloaterRef",function(i){s.floaterRef=i}),Bs(jl(s),"setWrapperRef",function(i){s.wrapperRef=i}),Bs(jl(s),"handleTransitionEnd",function(){var i=s.state.status,a=s.props.callback;s.wrapperPopper&&s.wrapperPopper.instance.update(),s.setState({status:i===On.OPENING?On.OPEN:On.IDLE},function(){var l=s.state.status;a(l===On.OPEN?"open":"close",s.props)})}),Bs(jl(s),"handleClick",function(){var i=s.props,a=i.event,l=i.open;if(!_e.boolean(l)){var c=s.state,d=c.positionWrapper,h=c.status;(s.event==="click"||s.event==="hover"&&d)&&(S1({title:"click",data:[{event:a,status:h===On.OPEN?"closing":"opening"}],debug:s.debug}),s.toggle())}}),Bs(jl(s),"handleMouseEnter",function(){var i=s.props,a=i.event,l=i.open;if(!(_e.boolean(l)||gS())){var c=s.state.status;s.event==="hover"&&c===On.IDLE&&(S1({title:"mouseEnter",data:[{key:"originalEvent",value:a}],debug:s.debug}),clearTimeout(s.eventDelayTimeout),s.toggle())}}),Bs(jl(s),"handleMouseLeave",function(){var i=s.props,a=i.event,l=i.eventDelay,c=i.open;if(!(_e.boolean(c)||gS())){var d=s.state,h=d.status,m=d.positionWrapper;s.event==="hover"&&(S1({title:"mouseLeave",data:[{key:"originalEvent",value:a}],debug:s.debug}),l?[On.OPENING,On.OPEN].indexOf(h)!==-1&&!m&&!s.eventDelayTimeout&&(s.eventDelayTimeout=setTimeout(function(){delete s.eventDelayTimeout,s.toggle()},l*1e3)):s.toggle(On.IDLE))}}),s.state={currentPlacement:r.placement,needsUpdate:!1,positionWrapper:r.wrapperOptions.position&&!!r.target,status:On.INIT,statusWrapper:On.INIT},s._isMounted=!1,s.hasMounted=!1,vo()&&window.addEventListener("load",function(){s.popper&&s.popper.instance.update(),s.wrapperPopper&&s.wrapperPopper.instance.update()}),s}return ng(n,[{key:"componentDidMount",value:function(){if(vo()){var s=this.state.positionWrapper,i=this.props,a=i.children,l=i.open,c=i.target;this._isMounted=!0,S1({title:"init",data:{hasChildren:!!a,hasTarget:!!c,isControlled:_e.boolean(l),positionWrapper:s,target:this.target,floater:this.floaterRef},debug:this.debug}),this.hasMounted||(this.initPopper(),this.hasMounted=!0),!a&&c&&_e.boolean(l)}}},{key:"componentDidUpdate",value:function(s,i){if(vo()){var a=this.props,l=a.autoOpen,c=a.open,d=a.target,h=a.wrapperOptions,m=Cge(i,this.state),g=m.changedFrom,x=m.changed;if(s.open!==c){var y;_e.boolean(c)&&(y=c?On.OPENING:On.CLOSING),this.toggle(y)}(s.wrapperOptions.position!==h.position||s.target!==d)&&this.changeWrapperPosition(this.props),x("status",On.IDLE)&&c?this.toggle(On.OPEN):g("status",On.INIT,On.IDLE)&&l&&this.toggle(On.OPEN),this.popper&&x("status",On.OPENING)&&this.popper.instance.update(),this.floaterRef&&(x("status",On.OPENING)||x("status",On.CLOSING))&&$ge(this.floaterRef,"transitionend",this.handleTransitionEnd),x("needsUpdate",!0)&&this.rebuildPopper()}}},{key:"componentWillUnmount",value:function(){vo()&&(this._isMounted=!1,this.popper&&this.popper.instance.destroy(),this.wrapperPopper&&this.wrapperPopper.instance.destroy())}},{key:"initPopper",value:function(){var s=this,i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.target,a=this.state.positionWrapper,l=this.props,c=l.disableFlip,d=l.getPopper,h=l.hideArrow,m=l.offset,g=l.placement,x=l.wrapperOptions,y=g==="top"||g==="bottom"?"flip":["right","bottom-end","top-end","left","top-start","bottom-start"];if(g==="center")this.setState({status:On.IDLE});else if(i&&this.floaterRef){var w=this.options,S=w.arrow,k=w.flip,j=w.offset,N=XH(w,Uge);new ip(i,this.floaterRef,{placement:g,modifiers:br({arrow:br({enabled:!h,element:this.arrowRef},S),flip:br({enabled:!c,behavior:y},k),offset:br({offset:"0, ".concat(m,"px")},j)},N),onCreate:function(_){var M;if(s.popper=_,!((M=s.floaterRef)!==null&&M!==void 0&&M.isConnected)){s.setState({needsUpdate:!0});return}d(_,"floater"),s._isMounted&&s.setState({currentPlacement:_.placement,status:On.IDLE}),g!==_.placement&&setTimeout(function(){_.instance.update()},1)},onUpdate:function(_){s.popper=_;var M=s.state.currentPlacement;s._isMounted&&_.placement!==M&&s.setState({currentPlacement:_.placement})}})}if(a){var T=_e.undefined(x.offset)?0:x.offset;new ip(this.target,this.wrapperRef,{placement:x.placement||g,modifiers:{arrow:{enabled:!1},offset:{offset:"0, ".concat(T,"px")},flip:{enabled:!1}},onCreate:function(_){s.wrapperPopper=_,s._isMounted&&s.setState({statusWrapper:On.IDLE}),d(_,"wrapper"),g!==_.placement&&setTimeout(function(){_.instance.update()},1)}})}}},{key:"rebuildPopper",value:function(){var s=this;this.floaterRefInterval=setInterval(function(){var i;(i=s.floaterRef)!==null&&i!==void 0&&i.isConnected&&(clearInterval(s.floaterRefInterval),s.setState({needsUpdate:!1}),s.initPopper())},50)}},{key:"changeWrapperPosition",value:function(s){var i=s.target,a=s.wrapperOptions;this.setState({positionWrapper:a.position&&!!i})}},{key:"toggle",value:function(s){var i=this.state.status,a=i===On.OPEN?On.CLOSING:On.OPENING;_e.undefined(s)||(a=s),this.setState({status:a})}},{key:"debug",get:function(){var s=this.props.debug;return s||vo()&&"ReactFloaterDebug"in window&&!!window.ReactFloaterDebug}},{key:"event",get:function(){var s=this.props,i=s.disableHoverToClick,a=s.event;return a==="hover"&&gS()&&!i?"click":a}},{key:"options",get:function(){var s=this.props.options;return Va(Rge,s||{})}},{key:"styles",get:function(){var s=this,i=this.state,a=i.status,l=i.positionWrapper,c=i.statusWrapper,d=this.props.styles,h=Va(Vge(d),d);if(l){var m;[On.IDLE].indexOf(a)===-1||[On.IDLE].indexOf(c)===-1?m=h.wrapperPosition:m=this.wrapperPopper.styles,h.wrapper=br(br({},h.wrapper),m)}if(this.target){var g=window.getComputedStyle(this.target);this.wrapperStyles?h.wrapper=br(br({},h.wrapper),this.wrapperStyles):["relative","static"].indexOf(g.position)===-1&&(this.wrapperStyles={},l||(Wge.forEach(function(x){s.wrapperStyles[x]=g[x]}),h.wrapper=br(br({},h.wrapper),this.wrapperStyles),this.target.style.position="relative",this.target.style.top="auto",this.target.style.right="auto",this.target.style.bottom="auto",this.target.style.left="auto"))}return h}},{key:"target",get:function(){if(!vo())return null;var s=this.props.target;return s?_e.domElement(s)?s:document.querySelector(s):this.childRef||this.wrapperRef}},{key:"render",value:function(){var s=this.state,i=s.currentPlacement,a=s.positionWrapper,l=s.status,c=this.props,d=c.children,h=c.component,m=c.content,g=c.disableAnimation,x=c.footer,y=c.hideArrow,w=c.id,S=c.open,k=c.showCloseButton,j=c.style,N=c.target,T=c.title,E=ae.createElement(nQ,{handleClick:this.handleClick,handleMouseEnter:this.handleMouseEnter,handleMouseLeave:this.handleMouseLeave,setChildRef:this.setChildRef,setWrapperRef:this.setWrapperRef,style:j,styles:this.styles.wrapper},d),_={};return a?_.wrapperInPortal=E:_.wrapperAsChildren=E,ae.createElement("span",null,ae.createElement(KH,{hasChildren:!!d,id:w,placement:i,setRef:this.setFloaterRef,target:N,zIndex:this.styles.options.zIndex},ae.createElement(tQ,{component:h,content:m,disableAnimation:g,footer:x,handleClick:this.handleClick,hideArrow:y||i==="center",open:S,placement:i,positionWrapper:a,setArrowRef:this.setArrowRef,setFloaterRef:this.setFloaterRef,showCloseButton:k,status:l,styles:this.styles,title:T}),_.wrapperInPortal),_.wrapperAsChildren)}}]),n})(ae.Component);Bs(V6,"propTypes",{autoOpen:Ge.bool,callback:Ge.func,children:Ge.node,component:FM(Ge.oneOfType([Ge.func,Ge.element]),function(t){return!t.content}),content:FM(Ge.node,function(t){return!t.component}),debug:Ge.bool,disableAnimation:Ge.bool,disableFlip:Ge.bool,disableHoverToClick:Ge.bool,event:Ge.oneOf(["hover","click"]),eventDelay:Ge.number,footer:Ge.node,getPopper:Ge.func,hideArrow:Ge.bool,id:Ge.oneOfType([Ge.string,Ge.number]),offset:Ge.number,open:Ge.bool,options:Ge.object,placement:Ge.oneOf(["top","top-start","top-end","bottom","bottom-start","bottom-end","left","left-start","left-end","right","right-start","right-end","auto","center"]),showCloseButton:Ge.bool,style:Ge.object,styles:Ge.object,target:Ge.oneOfType([Ge.object,Ge.string]),title:Ge.node,wrapperOptions:Ge.shape({offset:Ge.number,placement:Ge.oneOf(["top","top-start","top-end","bottom","bottom-start","bottom-end","left","left-start","left-end","right","right-start","right-end","auto"]),position:Ge.bool})});Bs(V6,"defaultProps",{autoOpen:!1,callback:qM,debug:!1,disableAnimation:!1,disableFlip:!1,disableHoverToClick:!1,event:"click",eventDelay:.4,getPopper:qM,hideArrow:!1,offset:15,placement:"bottom",showCloseButton:!1,styles:{},target:null,wrapperOptions:{position:!1}});var Gge=Object.defineProperty,Xge=(t,e,n)=>e in t?Gge(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,gt=(t,e,n)=>Xge(t,typeof e!="symbol"?e+"":e,n),Qn={INIT:"init",START:"start",STOP:"stop",RESET:"reset",PREV:"prev",NEXT:"next",GO:"go",CLOSE:"close",SKIP:"skip",UPDATE:"update"},Qa={TOUR_START:"tour:start",STEP_BEFORE:"step:before",BEACON:"beacon",TOOLTIP:"tooltip",STEP_AFTER:"step:after",TOUR_END:"tour:end",TOUR_STATUS:"tour:status",TARGET_NOT_FOUND:"error:target_not_found"},Qt={INIT:"init",READY:"ready",BEACON:"beacon",TOOLTIP:"tooltip",COMPLETE:"complete",ERROR:"error"},mn={IDLE:"idle",READY:"ready",WAITING:"waiting",RUNNING:"running",PAUSED:"paused",SKIPPED:"skipped",FINISHED:"finished"};function zc(){var t;return!!(typeof window<"u"&&((t=window.document)!=null&&t.createElement))}function rQ(t){return t?t.getBoundingClientRect():null}function Yge(t=!1){const{body:e,documentElement:n}=document;if(!e||!n)return 0;if(t){const r=[e.scrollHeight,e.offsetHeight,n.clientHeight,n.scrollHeight,n.offsetHeight].sort((i,a)=>i-a),s=Math.floor(r.length/2);return r.length%2===0?(r[s-1]+r[s])/2:r[s]}return Math.max(e.scrollHeight,e.offsetHeight,n.clientHeight,n.scrollHeight,n.offsetHeight)}function Ml(t){if(typeof t=="string")try{return document.querySelector(t)}catch{return null}return t}function Kge(t){return!t||t.nodeType!==1?null:getComputedStyle(t)}function ap(t,e,n){if(!t)return Uu();const r=MH(t);if(r){if(r.isSameNode(Uu()))return n?document:Uu();if(!(r.scrollHeight>r.offsetHeight)&&!e)return r.style.overflow="initial",Uu()}return r}function Ob(t,e){if(!t)return!1;const n=ap(t,e);return n?!n.isSameNode(Uu()):!1}function Zge(t){return t.offsetParent!==document.body}function cf(t,e="fixed"){if(!t||!(t instanceof HTMLElement))return!1;const{nodeName:n}=t,r=Kge(t);return n==="BODY"||n==="HTML"?!1:r&&r.position===e?!0:t.parentNode?cf(t.parentNode,e):!1}function Jge(t){var e;if(!t)return!1;let n=t;for(;n&&n!==document.body;){if(n instanceof HTMLElement){const{display:r,visibility:s}=getComputedStyle(n);if(r==="none"||s==="hidden")return!1}n=(e=n.parentElement)!=null?e:null}return!0}function exe(t,e,n){var r,s,i;const a=rQ(t),l=ap(t,n),c=Ob(t,n),d=cf(t);let h=0,m=(r=a?.top)!=null?r:0;if(c&&d){const g=(s=t?.offsetTop)!=null?s:0,x=(i=l?.scrollTop)!=null?i:0;m=g-x}else l instanceof HTMLElement&&(h=l.scrollTop,!c&&!cf(t)&&(m+=h),l.isSameNode(Uu())||(m+=Uu().scrollTop));return Math.floor(m-e)}function txe(t,e,n){var r;if(!t)return 0;const{offsetTop:s=0,scrollTop:i=0}=(r=MH(t))!=null?r:{};let a=t.getBoundingClientRect().top+i;s&&(Ob(t,n)||Zge(t))&&(a-=s);const l=Math.floor(a-e);return l<0?0:l}function Uu(){var t;return(t=document.scrollingElement)!=null?t:document.documentElement}function nxe(t,e){const{duration:n,element:r}=e;return new Promise((s,i)=>{const{scrollTop:a}=r,l=t>a?t-a:a-t;wpe.top(r,t,{duration:l<100?50:n},c=>c&&c.message!=="Element already at target scroll position"?i(c):s())})}var Um=pa.createPortal!==void 0;function sQ(t=navigator.userAgent){let e=t;return typeof window>"u"?e="node":document.documentMode?e="ie":/Edge/.test(t)?e="edge":window.opera||t.includes(" OPR/")?e="opera":typeof window.InstallTrigger<"u"?e="firefox":window.chrome?e="chrome":/(Version\/([\d._]+).*Safari|CriOS|FxiOS| Mobile\/)/.test(t)&&(e="safari"),e}function vv(t){return Object.prototype.toString.call(t).slice(8,-1).toLowerCase()}function yo(t,e={}){const{defaultValue:n,step:r,steps:s}=e;let i=jM(t);if(i)(i.includes("{step}")||i.includes("{steps}"))&&r&&s&&(i=i.replace("{step}",r.toString()).replace("{steps}",s.toString()));else if(b.isValidElement(t)&&!Object.values(t.props).length&&vv(t.type)==="function"){const a=t.type({});i=yo(a,e)}else i=jM(n);return i}function rxe(t,e){return!ft.plainObject(t)||!ft.array(e)?!1:Object.keys(t).every(n=>e.includes(n))}function sxe(t){const e=/^#?([\da-f])([\da-f])([\da-f])$/i,n=t.replace(e,(s,i,a,l)=>i+i+a+a+l+l),r=/^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i.exec(n);return r?[parseInt(r[1],16),parseInt(r[2],16),parseInt(r[3],16)]:[]}function $M(t){return t.disableBeacon||t.placement==="center"}function HM(){return!["chrome","safari","firefox","opera"].includes(sQ())}function hd({data:t,debug:e=!1,title:n,warn:r=!1}){const s=r?console.warn||console.error:console.log;e&&(n&&t?(console.groupCollapsed(`%creact-joyride: ${n}`,"color: #ff0044; font-weight: bold; font-size: 12px;"),Array.isArray(t)?t.forEach(i=>{ft.plainObject(i)&&i.key?s.apply(console,[i.key,i.value]):s.apply(console,[i])}):s.apply(console,[t]),console.groupEnd()):console.error("Missing title or data props"))}function ixe(t){return Object.keys(t)}function iQ(t,...e){if(!ft.plainObject(t))throw new TypeError("Expected an object");const n={};for(const r in t)({}).hasOwnProperty.call(t,r)&&(e.includes(r)||(n[r]=t[r]));return n}function axe(t,...e){if(!ft.plainObject(t))throw new TypeError("Expected an object");if(!e.length)return t;const n={};for(const r in t)({}).hasOwnProperty.call(t,r)&&e.includes(r)&&(n[r]=t[r]);return n}function gO(t,e,n){const r=i=>i.replace("{step}",String(e)).replace("{steps}",String(n));if(vv(t)==="string")return r(t);if(!b.isValidElement(t))return t;const{children:s}=t.props;if(vv(s)==="string"&&s.includes("{step}"))return b.cloneElement(t,{children:r(s)});if(Array.isArray(s))return b.cloneElement(t,{children:s.map(i=>typeof i=="string"?r(i):gO(i,e,n))});if(vv(t.type)==="function"&&!Object.values(t.props).length){const i=t.type({});return gO(i,e,n)}return t}function oxe(t){const{isFirstStep:e,lifecycle:n,previousLifecycle:r,scrollToFirstStep:s,step:i,target:a}=t;return!i.disableScrolling&&(!e||s||n===Qt.TOOLTIP)&&i.placement!=="center"&&(!i.isFixed||!cf(a))&&r!==n&&[Qt.BEACON,Qt.TOOLTIP].includes(n)}var lxe={options:{preventOverflow:{boundariesElement:"scrollParent"}},wrapperOptions:{offset:-18,position:!0}},aQ={back:"Back",close:"Close",last:"Last",next:"Next",nextLabelWithProgress:"Next (Step {step} of {steps})",open:"Open the dialog",skip:"Skip"},cxe={event:"click",placement:"bottom",offset:10,disableBeacon:!1,disableCloseOnEsc:!1,disableOverlay:!1,disableOverlayClose:!1,disableScrollParentFix:!1,disableScrolling:!1,hideBackButton:!1,hideCloseButton:!1,hideFooter:!1,isFixed:!1,locale:aQ,showProgress:!1,showSkipButton:!1,spotlightClicks:!1,spotlightPadding:10},uxe={continuous:!1,debug:!1,disableCloseOnEsc:!1,disableOverlay:!1,disableOverlayClose:!1,disableScrolling:!1,disableScrollParentFix:!1,getHelpers:void 0,hideBackButton:!1,run:!0,scrollOffset:20,scrollDuration:300,scrollToFirstStep:!1,showSkipButton:!1,showProgress:!1,spotlightClicks:!1,spotlightPadding:10,steps:[]},dxe={arrowColor:"#fff",backgroundColor:"#fff",beaconSize:36,overlayColor:"rgba(0, 0, 0, 0.5)",primaryColor:"#f04",spotlightShadow:"0 0 15px rgba(0, 0, 0, 0.5)",textColor:"#333",width:380,zIndex:100},Wm={backgroundColor:"transparent",border:0,borderRadius:0,color:"#555",cursor:"pointer",fontSize:16,lineHeight:1,padding:8,WebkitAppearance:"none"},QM={borderRadius:4,position:"absolute"};function hxe(t,e){var n,r,s,i,a;const{floaterProps:l,styles:c}=t,d=Va((n=e.floaterProps)!=null?n:{},l??{}),h=Va(c??{},(r=e.styles)!=null?r:{}),m=Va(dxe,h.options||{}),g=e.placement==="center"||e.disableBeacon;let{width:x}=m;window.innerWidth>480&&(x=380),"width"in m&&(x=typeof m.width=="number"&&window.innerWidthoQ(n,e)):(hd({title:"validateSteps",data:"steps must be an array",warn:!0,debug:e}),!1)}var lQ={action:"init",controlled:!1,index:0,lifecycle:Qt.INIT,origin:null,size:0,status:mn.IDLE},UM=ixe(iQ(lQ,"controlled","size")),mxe=class{constructor(t){gt(this,"beaconPopper"),gt(this,"tooltipPopper"),gt(this,"data",new Map),gt(this,"listener"),gt(this,"store",new Map),gt(this,"addListener",s=>{this.listener=s}),gt(this,"setSteps",s=>{const{size:i,status:a}=this.getState(),l={size:s.length,status:a};this.data.set("steps",s),a===mn.WAITING&&!i&&s.length&&(l.status=mn.RUNNING),this.setState(l)}),gt(this,"getPopper",s=>s==="beacon"?this.beaconPopper:this.tooltipPopper),gt(this,"setPopper",(s,i)=>{s==="beacon"?this.beaconPopper=i:this.tooltipPopper=i}),gt(this,"cleanupPoppers",()=>{this.beaconPopper=null,this.tooltipPopper=null}),gt(this,"close",(s=null)=>{const{index:i,status:a}=this.getState();a===mn.RUNNING&&this.setState({...this.getNextState({action:Qn.CLOSE,index:i+1,origin:s})})}),gt(this,"go",s=>{const{controlled:i,status:a}=this.getState();if(i||a!==mn.RUNNING)return;const l=this.getSteps()[s];this.setState({...this.getNextState({action:Qn.GO,index:s}),status:l?a:mn.FINISHED})}),gt(this,"info",()=>this.getState()),gt(this,"next",()=>{const{index:s,status:i}=this.getState();i===mn.RUNNING&&this.setState(this.getNextState({action:Qn.NEXT,index:s+1}))}),gt(this,"open",()=>{const{status:s}=this.getState();s===mn.RUNNING&&this.setState({...this.getNextState({action:Qn.UPDATE,lifecycle:Qt.TOOLTIP})})}),gt(this,"prev",()=>{const{index:s,status:i}=this.getState();i===mn.RUNNING&&this.setState({...this.getNextState({action:Qn.PREV,index:s-1})})}),gt(this,"reset",(s=!1)=>{const{controlled:i}=this.getState();i||this.setState({...this.getNextState({action:Qn.RESET,index:0}),status:s?mn.RUNNING:mn.READY})}),gt(this,"skip",()=>{const{status:s}=this.getState();s===mn.RUNNING&&this.setState({action:Qn.SKIP,lifecycle:Qt.INIT,status:mn.SKIPPED})}),gt(this,"start",s=>{const{index:i,size:a}=this.getState();this.setState({...this.getNextState({action:Qn.START,index:ft.number(s)?s:i},!0),status:a?mn.RUNNING:mn.WAITING})}),gt(this,"stop",(s=!1)=>{const{index:i,status:a}=this.getState();[mn.FINISHED,mn.SKIPPED].includes(a)||this.setState({...this.getNextState({action:Qn.STOP,index:i+(s?1:0)}),status:mn.PAUSED})}),gt(this,"update",s=>{var i,a;if(!rxe(s,UM))throw new Error(`State is not valid. Valid keys: ${UM.join(", ")}`);this.setState({...this.getNextState({...this.getState(),...s,action:(i=s.action)!=null?i:Qn.UPDATE,origin:(a=s.origin)!=null?a:null},!0)})});const{continuous:e=!1,stepIndex:n,steps:r=[]}=t??{};this.setState({action:Qn.INIT,controlled:ft.number(n),continuous:e,index:ft.number(n)?n:0,lifecycle:Qt.INIT,origin:null,status:r.length?mn.READY:mn.IDLE},!0),this.beaconPopper=null,this.tooltipPopper=null,this.listener=null,this.setSteps(r)}getState(){return this.store.size?{action:this.store.get("action")||"",controlled:this.store.get("controlled")||!1,index:parseInt(this.store.get("index"),10),lifecycle:this.store.get("lifecycle")||"",origin:this.store.get("origin")||null,size:this.store.get("size")||0,status:this.store.get("status")||""}:{...lQ}}getNextState(t,e=!1){var n,r,s,i,a;const{action:l,controlled:c,index:d,size:h,status:m}=this.getState(),g=ft.number(t.index)?t.index:d,x=c&&!e?d:Math.min(Math.max(g,0),h);return{action:(n=t.action)!=null?n:l,controlled:c,index:x,lifecycle:(r=t.lifecycle)!=null?r:Qt.INIT,origin:(s=t.origin)!=null?s:null,size:(i=t.size)!=null?i:h,status:x===h?mn.FINISHED:(a=t.status)!=null?a:m}}getSteps(){const t=this.data.get("steps");return Array.isArray(t)?t:[]}hasUpdatedState(t){const e=JSON.stringify(t),n=JSON.stringify(this.getState());return e!==n}setState(t,e=!1){const n=this.getState(),{action:r,index:s,lifecycle:i,origin:a=null,size:l,status:c}={...n,...t};this.store.set("action",r),this.store.set("index",s),this.store.set("lifecycle",i),this.store.set("origin",a),this.store.set("size",l),this.store.set("status",c),e&&(this.store.set("controlled",t.controlled),this.store.set("continuous",t.continuous)),this.listener&&this.hasUpdatedState(n)&&this.listener(this.getState())}getHelpers(){return{close:this.close,go:this.go,info:this.info,next:this.next,open:this.open,prev:this.prev,reset:this.reset,skip:this.skip}}};function pxe(t){return new mxe(t)}function gxe({styles:t}){return b.createElement("div",{key:"JoyrideSpotlight",className:"react-joyride__spotlight","data-test-id":"spotlight",style:t})}var xxe=gxe,vxe=class extends b.Component{constructor(){super(...arguments),gt(this,"isActive",!1),gt(this,"resizeTimeout"),gt(this,"scrollTimeout"),gt(this,"scrollParent"),gt(this,"state",{isScrolling:!1,mouseOverSpotlight:!1,showSpotlight:!0}),gt(this,"hideSpotlight",()=>{const{continuous:t,disableOverlay:e,lifecycle:n}=this.props,r=[Qt.INIT,Qt.BEACON,Qt.COMPLETE,Qt.ERROR];return e||(t?r.includes(n):n!==Qt.TOOLTIP)}),gt(this,"handleMouseMove",t=>{const{mouseOverSpotlight:e}=this.state,{height:n,left:r,position:s,top:i,width:a}=this.spotlightStyles,l=s==="fixed"?t.clientY:t.pageY,c=s==="fixed"?t.clientX:t.pageX,d=l>=i&&l<=i+n,m=c>=r&&c<=r+a&&d;m!==e&&this.updateState({mouseOverSpotlight:m})}),gt(this,"handleScroll",()=>{const{target:t}=this.props,e=Ml(t);if(this.scrollParent!==document){const{isScrolling:n}=this.state;n||this.updateState({isScrolling:!0,showSpotlight:!1}),clearTimeout(this.scrollTimeout),this.scrollTimeout=window.setTimeout(()=>{this.updateState({isScrolling:!1,showSpotlight:!0})},50)}else cf(e,"sticky")&&this.updateState({})}),gt(this,"handleResize",()=>{clearTimeout(this.resizeTimeout),this.resizeTimeout=window.setTimeout(()=>{this.isActive&&this.forceUpdate()},100)})}componentDidMount(){const{debug:t,disableScrolling:e,disableScrollParentFix:n=!1,target:r}=this.props,s=Ml(r);this.scrollParent=ap(s??document.body,n,!0),this.isActive=!0,window.addEventListener("resize",this.handleResize)}componentDidUpdate(t){var e;const{disableScrollParentFix:n,lifecycle:r,spotlightClicks:s,target:i}=this.props,{changed:a}=iy(t,this.props);if(a("target")||a("disableScrollParentFix")){const l=Ml(i);this.scrollParent=ap(l??document.body,n,!0)}a("lifecycle",Qt.TOOLTIP)&&((e=this.scrollParent)==null||e.addEventListener("scroll",this.handleScroll,{passive:!0}),setTimeout(()=>{const{isScrolling:l}=this.state;l||this.updateState({showSpotlight:!0})},100)),(a("spotlightClicks")||a("disableOverlay")||a("lifecycle"))&&(s&&r===Qt.TOOLTIP?window.addEventListener("mousemove",this.handleMouseMove,!1):r!==Qt.TOOLTIP&&window.removeEventListener("mousemove",this.handleMouseMove))}componentWillUnmount(){var t;this.isActive=!1,window.removeEventListener("mousemove",this.handleMouseMove),window.removeEventListener("resize",this.handleResize),clearTimeout(this.resizeTimeout),clearTimeout(this.scrollTimeout),(t=this.scrollParent)==null||t.removeEventListener("scroll",this.handleScroll)}get overlayStyles(){const{mouseOverSpotlight:t}=this.state,{disableOverlayClose:e,placement:n,styles:r}=this.props;let s=r.overlay;return HM()&&(s=n==="center"?r.overlayLegacyCenter:r.overlayLegacy),{cursor:e?"default":"pointer",height:Yge(),pointerEvents:t?"none":"auto",...s}}get spotlightStyles(){var t,e,n;const{showSpotlight:r}=this.state,{disableScrollParentFix:s=!1,spotlightClicks:i,spotlightPadding:a=0,styles:l,target:c}=this.props,d=Ml(c),h=rQ(d),m=cf(d),g=exe(d,a,s);return{...HM()?l.spotlightLegacy:l.spotlight,height:Math.round(((t=h?.height)!=null?t:0)+a*2),left:Math.round(((e=h?.left)!=null?e:0)-a),opacity:r?1:0,pointerEvents:i?"none":"auto",position:m?"fixed":"absolute",top:g,transition:"opacity 0.2s",width:Math.round(((n=h?.width)!=null?n:0)+a*2)}}updateState(t){this.isActive&&this.setState(e=>({...e,...t}))}render(){const{showSpotlight:t}=this.state,{onClickOverlay:e,placement:n}=this.props,{hideSpotlight:r,overlayStyles:s,spotlightStyles:i}=this;if(r())return null;let a=n!=="center"&&t&&b.createElement(xxe,{styles:i});if(sQ()==="safari"){const{mixBlendMode:l,zIndex:c,...d}=s;a=b.createElement("div",{style:{...d}},a),delete s.backgroundColor}return b.createElement("div",{className:"react-joyride__overlay","data-test-id":"overlay",onClick:e,role:"presentation",style:s},a)}},yxe=class extends b.Component{constructor(){super(...arguments),gt(this,"node",null)}componentDidMount(){const{id:t}=this.props;zc()&&(this.node=document.createElement("div"),this.node.id=t,document.body.appendChild(this.node),Um||this.renderReact15())}componentDidUpdate(){zc()&&(Um||this.renderReact15())}componentWillUnmount(){!zc()||!this.node||(Um||pa.unmountComponentAtNode(this.node),this.node.parentNode===document.body&&(document.body.removeChild(this.node),this.node=null))}renderReact15(){if(!zc())return;const{children:t}=this.props;this.node&&pa.unstable_renderSubtreeIntoContainer(this,t,this.node)}renderReact16(){if(!zc()||!Um)return null;const{children:t}=this.props;return this.node?pa.createPortal(t,this.node):null}render(){return Um?this.renderReact16():null}},bxe=class{constructor(t,e){if(gt(this,"element"),gt(this,"options"),gt(this,"canBeTabbed",n=>{const{tabIndex:r}=n;return r===null||r<0?!1:this.canHaveFocus(n)}),gt(this,"canHaveFocus",n=>{const r=/input|select|textarea|button|object/,s=n.nodeName.toLowerCase();return(r.test(s)&&!n.getAttribute("disabled")||s==="a"&&!!n.getAttribute("href"))&&this.isVisible(n)}),gt(this,"findValidTabElements",()=>[].slice.call(this.element.querySelectorAll("*"),0).filter(this.canBeTabbed)),gt(this,"handleKeyDown",n=>{const{code:r="Tab"}=this.options;n.code===r&&this.interceptTab(n)}),gt(this,"interceptTab",n=>{n.preventDefault();const r=this.findValidTabElements(),{shiftKey:s}=n;if(!r.length)return;let i=document.activeElement?r.indexOf(document.activeElement):0;i===-1||!s&&i+1===r.length?i=0:s&&i===0?i=r.length-1:i+=s?-1:1,r[i].focus()}),gt(this,"isHidden",n=>{const r=n.offsetWidth<=0&&n.offsetHeight<=0,s=window.getComputedStyle(n);return r&&!n.innerHTML?!0:r&&s.getPropertyValue("overflow")!=="visible"||s.getPropertyValue("display")==="none"}),gt(this,"isVisible",n=>{let r=n;for(;r;)if(r instanceof HTMLElement){if(r===document.body)break;if(this.isHidden(r))return!1;r=r.parentNode}return!0}),gt(this,"removeScope",()=>{window.removeEventListener("keydown",this.handleKeyDown)}),gt(this,"checkFocus",n=>{document.activeElement!==n&&(n.focus(),window.requestAnimationFrame(()=>this.checkFocus(n)))}),gt(this,"setFocus",()=>{const{selector:n}=this.options;if(!n)return;const r=this.element.querySelector(n);r&&window.requestAnimationFrame(()=>this.checkFocus(r))}),!(t instanceof HTMLElement))throw new TypeError("Invalid parameter: element must be an HTMLElement");this.element=t,this.options=e,window.addEventListener("keydown",this.handleKeyDown,!1),this.setFocus()}},wxe=class extends b.Component{constructor(t){if(super(t),gt(this,"beacon",null),gt(this,"setBeaconRef",s=>{this.beacon=s}),t.beaconComponent)return;const e=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.id="joyride-beacon-animation",t.nonce&&n.setAttribute("nonce",t.nonce),n.appendChild(document.createTextNode(` + @keyframes joyride-beacon-inner { + 20% { + opacity: 0.9; + } + + 90% { + opacity: 0.7; + } + } + + @keyframes joyride-beacon-outer { + 0% { + transform: scale(1); + } + + 45% { + opacity: 0.7; + transform: scale(0.75); + } + + 100% { + opacity: 0.9; + transform: scale(1); + } + } + `)),e.appendChild(n)}componentDidMount(){const{shouldFocus:t}=this.props;setTimeout(()=>{ft.domElement(this.beacon)&&t&&this.beacon.focus()},0)}componentWillUnmount(){const t=document.getElementById("joyride-beacon-animation");t?.parentNode&&t.parentNode.removeChild(t)}render(){const{beaconComponent:t,continuous:e,index:n,isLastStep:r,locale:s,onClickOrHover:i,size:a,step:l,styles:c}=this.props,d=yo(s.open),h={"aria-label":d,onClick:i,onMouseEnter:i,ref:this.setBeaconRef,title:d};let m;if(t){const g=t;m=b.createElement(g,{continuous:e,index:n,isLastStep:r,size:a,step:l,...h})}else m=b.createElement("button",{key:"JoyrideBeacon",className:"react-joyride__beacon","data-test-id":"button-beacon",style:c.beacon,type:"button",...h},b.createElement("span",{style:c.beaconInner}),b.createElement("span",{style:c.beaconOuter}));return m}};function Sxe({styles:t,...e}){const{color:n,height:r,width:s,...i}=t;return ae.createElement("button",{style:i,type:"button",...e},ae.createElement("svg",{height:typeof r=="number"?`${r}px`:r,preserveAspectRatio:"xMidYMid",version:"1.1",viewBox:"0 0 18 18",width:typeof s=="number"?`${s}px`:s,xmlns:"http://www.w3.org/2000/svg"},ae.createElement("g",null,ae.createElement("path",{d:"M8.13911129,9.00268191 L0.171521827,17.0258467 C-0.0498027049,17.248715 -0.0498027049,17.6098394 0.171521827,17.8327545 C0.28204354,17.9443526 0.427188206,17.9998706 0.572051765,17.9998706 C0.71714958,17.9998706 0.862013139,17.9443526 0.972581703,17.8327545 L9.0000937,9.74924618 L17.0276057,17.8327545 C17.1384085,17.9443526 17.2832721,17.9998706 17.4281356,17.9998706 C17.5729992,17.9998706 17.718097,17.9443526 17.8286656,17.8327545 C18.0499901,17.6098862 18.0499901,17.2487618 17.8286656,17.0258467 L9.86135722,9.00268191 L17.8340066,0.973848225 C18.0553311,0.750979934 18.0553311,0.389855532 17.8340066,0.16694039 C17.6126821,-0.0556467968 17.254037,-0.0556467968 17.0329467,0.16694039 L9.00042166,8.25611765 L0.967006424,0.167268345 C0.745681892,-0.0553188426 0.387317931,-0.0553188426 0.165993399,0.167268345 C-0.0553311331,0.390136635 -0.0553311331,0.751261038 0.165993399,0.974176179 L8.13920499,9.00268191 L8.13911129,9.00268191 Z",fill:n}))))}var kxe=Sxe;function Oxe(t){const{backProps:e,closeProps:n,index:r,isLastStep:s,primaryProps:i,skipProps:a,step:l,tooltipProps:c}=t,{content:d,hideBackButton:h,hideCloseButton:m,hideFooter:g,showSkipButton:x,styles:y,title:w}=l,S={};return S.primary=b.createElement("button",{"data-test-id":"button-primary",style:y.buttonNext,type:"button",...i}),x&&!s&&(S.skip=b.createElement("button",{"aria-live":"off","data-test-id":"button-skip",style:y.buttonSkip,type:"button",...a})),!h&&r>0&&(S.back=b.createElement("button",{"data-test-id":"button-back",style:y.buttonBack,type:"button",...e})),S.close=!m&&b.createElement(kxe,{"data-test-id":"button-close",styles:y.buttonClose,...n}),b.createElement("div",{key:"JoyrideTooltip","aria-label":yo(w??d),className:"react-joyride__tooltip",style:y.tooltip,...c},b.createElement("div",{style:y.tooltipContainer},w&&b.createElement("h1",{"aria-label":yo(w),style:y.tooltipTitle},w),b.createElement("div",{style:y.tooltipContent},d)),!g&&b.createElement("div",{style:y.tooltipFooter},b.createElement("div",{style:y.tooltipFooterSpacer},S.skip),S.back,S.primary),S.close)}var jxe=Oxe,Nxe=class extends b.Component{constructor(){super(...arguments),gt(this,"handleClickBack",t=>{t.preventDefault();const{helpers:e}=this.props;e.prev()}),gt(this,"handleClickClose",t=>{t.preventDefault();const{helpers:e}=this.props;e.close("button_close")}),gt(this,"handleClickPrimary",t=>{t.preventDefault();const{continuous:e,helpers:n}=this.props;if(!e){n.close("button_primary");return}n.next()}),gt(this,"handleClickSkip",t=>{t.preventDefault();const{helpers:e}=this.props;e.skip()}),gt(this,"getElementsProps",()=>{const{continuous:t,index:e,isLastStep:n,setTooltipRef:r,size:s,step:i}=this.props,{back:a,close:l,last:c,next:d,nextLabelWithProgress:h,skip:m}=i.locale,g=yo(a),x=yo(l),y=yo(c),w=yo(d),S=yo(m);let k=l,j=x;if(t){if(k=d,j=w,i.showProgress&&!n){const N=yo(h,{step:e+1,steps:s});k=gO(h,e+1,s),j=N}n&&(k=c,j=y)}return{backProps:{"aria-label":g,children:a,"data-action":"back",onClick:this.handleClickBack,role:"button",title:g},closeProps:{"aria-label":x,children:l,"data-action":"close",onClick:this.handleClickClose,role:"button",title:x},primaryProps:{"aria-label":j,children:k,"data-action":"primary",onClick:this.handleClickPrimary,role:"button",title:j},skipProps:{"aria-label":S,children:m,"data-action":"skip",onClick:this.handleClickSkip,role:"button",title:S},tooltipProps:{"aria-modal":!0,ref:r,role:"alertdialog"}}})}render(){const{continuous:t,index:e,isLastStep:n,setTooltipRef:r,size:s,step:i}=this.props,{beaconComponent:a,tooltipComponent:l,...c}=i;let d;if(l){const h={...this.getElementsProps(),continuous:t,index:e,isLastStep:n,size:s,step:c,setTooltipRef:r},m=l;d=b.createElement(m,{...h})}else d=b.createElement(jxe,{...this.getElementsProps(),continuous:t,index:e,isLastStep:n,size:s,step:i});return d}},Cxe=class extends b.Component{constructor(){super(...arguments),gt(this,"scope",null),gt(this,"tooltip",null),gt(this,"handleClickHoverBeacon",t=>{const{step:e,store:n}=this.props;t.type==="mouseenter"&&e.event!=="hover"||n.update({lifecycle:Qt.TOOLTIP})}),gt(this,"setTooltipRef",t=>{this.tooltip=t}),gt(this,"setPopper",(t,e)=>{var n;const{action:r,lifecycle:s,step:i,store:a}=this.props;e==="wrapper"?a.setPopper("beacon",t):a.setPopper("tooltip",t),a.getPopper("beacon")&&(a.getPopper("tooltip")||i.placement==="center")&&s===Qt.INIT&&a.update({action:r,lifecycle:Qt.READY}),(n=i.floaterProps)!=null&&n.getPopper&&i.floaterProps.getPopper(t,e)}),gt(this,"renderTooltip",t=>{const{continuous:e,helpers:n,index:r,size:s,step:i}=this.props;return b.createElement(Nxe,{continuous:e,helpers:n,index:r,isLastStep:r+1===s,setTooltipRef:this.setTooltipRef,size:s,step:i,...t})})}componentDidMount(){const{debug:t,index:e}=this.props;hd({title:`step:${e}`,data:[{key:"props",value:this.props}],debug:t})}componentDidUpdate(t){var e;const{action:n,callback:r,continuous:s,controlled:i,debug:a,helpers:l,index:c,lifecycle:d,shouldScroll:h,status:m,step:g,store:x}=this.props,{changed:y,changedFrom:w}=iy(t,this.props),S=l.info(),k=s&&n!==Qn.CLOSE&&(c>0||n===Qn.PREV),j=y("action")||y("index")||y("lifecycle")||y("status"),N=w("lifecycle",[Qt.TOOLTIP,Qt.INIT],Qt.INIT),T=y("action",[Qn.NEXT,Qn.PREV,Qn.SKIP,Qn.CLOSE]),E=i&&c===t.index;if(T&&(N||E)&&r({...S,index:t.index,lifecycle:Qt.COMPLETE,step:t.step,type:Qa.STEP_AFTER}),g.placement==="center"&&m===mn.RUNNING&&y("index")&&n!==Qn.START&&d===Qt.INIT&&x.update({lifecycle:Qt.READY}),j){const _=Ml(g.target),M=!!_;M&&Jge(_)?(w("status",mn.READY,mn.RUNNING)||w("lifecycle",Qt.INIT,Qt.READY))&&r({...S,step:g,type:Qa.STEP_BEFORE}):(console.warn(M?"Target not visible":"Target not mounted",g),r({...S,type:Qa.TARGET_NOT_FOUND,step:g}),i||x.update({index:c+(n===Qn.PREV?-1:1)}))}w("lifecycle",Qt.INIT,Qt.READY)&&x.update({lifecycle:$M(g)||k?Qt.TOOLTIP:Qt.BEACON}),y("index")&&hd({title:`step:${d}`,data:[{key:"props",value:this.props}],debug:a}),y("lifecycle",Qt.BEACON)&&r({...S,step:g,type:Qa.BEACON}),y("lifecycle",Qt.TOOLTIP)&&(r({...S,step:g,type:Qa.TOOLTIP}),h&&this.tooltip&&(this.scope=new bxe(this.tooltip,{selector:"[data-action=primary]"}),this.scope.setFocus())),w("lifecycle",[Qt.TOOLTIP,Qt.INIT],Qt.INIT)&&((e=this.scope)==null||e.removeScope(),x.cleanupPoppers())}componentWillUnmount(){var t;(t=this.scope)==null||t.removeScope()}get open(){const{lifecycle:t,step:e}=this.props;return $M(e)||t===Qt.TOOLTIP}render(){const{continuous:t,debug:e,index:n,nonce:r,shouldScroll:s,size:i,step:a}=this.props,l=Ml(a.target);return!oQ(a)||!ft.domElement(l)?null:b.createElement("div",{key:`JoyrideStep-${n}`,className:"react-joyride__step"},b.createElement(V6,{...a.floaterProps,component:this.renderTooltip,debug:e,getPopper:this.setPopper,id:`react-joyride-step-${n}`,open:this.open,placement:a.placement,target:a.target},b.createElement(wxe,{beaconComponent:a.beaconComponent,continuous:t,index:n,isLastStep:n+1===i,locale:a.locale,nonce:r,onClickOrHover:this.handleClickHoverBeacon,shouldFocus:s,size:i,step:a,styles:a.styles})))}},cQ=class extends b.Component{constructor(t){super(t),gt(this,"helpers"),gt(this,"store"),gt(this,"callback",a=>{const{callback:l}=this.props;ft.function(l)&&l(a)}),gt(this,"handleKeyboard",a=>{const{index:l,lifecycle:c}=this.state,{steps:d}=this.props,h=d[l];c===Qt.TOOLTIP&&a.code==="Escape"&&h&&!h.disableCloseOnEsc&&this.store.close("keyboard")}),gt(this,"handleClickOverlay",()=>{const{index:a}=this.state,{steps:l}=this.props;ah(this.props,l[a]).disableOverlayClose||this.helpers.close("overlay")}),gt(this,"syncState",a=>{this.setState(a)});const{debug:e,getHelpers:n,run:r=!0,stepIndex:s}=t;this.store=pxe({...t,controlled:r&&ft.number(s)}),this.helpers=this.store.getHelpers();const{addListener:i}=this.store;hd({title:"init",data:[{key:"props",value:this.props},{key:"state",value:this.state}],debug:e}),i(this.syncState),n&&n(this.helpers),this.state=this.store.getState()}componentDidMount(){if(!zc())return;const{debug:t,disableCloseOnEsc:e,run:n,steps:r}=this.props,{start:s}=this.store;VM(r,t)&&n&&s(),e||document.body.addEventListener("keydown",this.handleKeyboard,{passive:!0})}componentDidUpdate(t,e){if(!zc())return;const{action:n,controlled:r,index:s,status:i}=this.state,{debug:a,run:l,stepIndex:c,steps:d}=this.props,{stepIndex:h,steps:m}=t,{reset:g,setSteps:x,start:y,stop:w,update:S}=this.store,{changed:k}=iy(t,this.props),{changed:j,changedFrom:N}=iy(e,this.state),T=ah(this.props,d[s]),E=!Js(m,d),_=ft.number(c)&&k("stepIndex"),M=Ml(T.target);if(E&&(VM(d,a)?x(d):console.warn("Steps are not valid",d)),k("run")&&(l?y(c):w()),_){let L=ft.number(h)&&h=0?w:0,r===mn.RUNNING&&nxe(w,{element:y,duration:a}).then(()=>{setTimeout(()=>{var j;(j=this.store.getPopper("tooltip"))==null||j.instance.update()},10)})}}render(){if(!zc())return null;const{index:t,lifecycle:e,status:n}=this.state,{continuous:r=!1,debug:s=!1,nonce:i,scrollToFirstStep:a=!1,steps:l}=this.props,c=n===mn.RUNNING,d={};if(c&&l[t]){const h=ah(this.props,l[t]);d.step=b.createElement(Cxe,{...this.state,callback:this.callback,continuous:r,debug:s,helpers:this.helpers,nonce:i,shouldScroll:!h.disableScrolling&&(t!==0||a),step:h,store:this.store}),d.overlay=b.createElement(yxe,{id:"react-joyride-portal"},b.createElement(vxe,{...h,continuous:r,debug:s,lifecycle:e,onClickOverlay:this.handleClickOverlay}))}return b.createElement("div",{className:"react-joyride"},d.step,d.overlay)}};gt(cQ,"defaultProps",uxe);var Txe=cQ;function U6(){const t=b.useContext(CH);if(!t)throw new Error("useTour must be used within a TourProvider");return t}const Exe={options:{zIndex:1e4,primaryColor:"hsl(var(--primary))",textColor:"hsl(var(--foreground))",backgroundColor:"hsl(var(--background))",arrowColor:"hsl(var(--background))",overlayColor:"rgba(0, 0, 0, 0.5)"},tooltip:{borderRadius:"var(--radius)",padding:"1rem"},tooltipContainer:{textAlign:"left"},tooltipTitle:{fontSize:"1rem",fontWeight:600,marginBottom:"0.5rem"},tooltipContent:{fontSize:"0.875rem",padding:"0.5rem 0"},buttonNext:{backgroundColor:"hsl(var(--primary))",color:"hsl(var(--primary-foreground))",borderRadius:"calc(var(--radius) - 2px)",fontSize:"0.875rem",padding:"0.5rem 1rem"},buttonBack:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem",marginRight:"0.5rem"},buttonSkip:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem"},buttonClose:{color:"hsl(var(--muted-foreground))"},spotlight:{borderRadius:"var(--radius)"}},_xe={back:"上一步",close:"关闭",last:"完成",next:"下一步",nextLabelWithProgress:"下一步 ({step}/{steps})",open:"打开对话框",skip:"跳过"};function Mxe(){const{state:t,getCurrentSteps:e,handleJoyrideCallback:n}=U6(),r=e(),[s,i]=b.useState(!1),a=b.useRef(t.stepIndex),l=b.useRef(null);b.useEffect(()=>{a.current!==t.stepIndex&&(i(!1),a.current=t.stepIndex)},[t.stepIndex]),b.useEffect(()=>{if(!t.isRunning||r.length===0){i(!1);return}const h=r[t.stepIndex];if(!h){i(!1);return}const m=h.target;if(m==="body"){i(!0);return}i(!1);const g=setTimeout(()=>{const x=()=>{const k=document.querySelector(m);if(k){const j=k.getBoundingClientRect();if(j.width>0&&j.height>0)return!0}return!1};if(x()){setTimeout(()=>i(!0),100);return}const y=setInterval(()=>{x()&&(clearInterval(y),setTimeout(()=>i(!0),100))},100),w=setTimeout(()=>{clearInterval(y),i(!0)},5e3),S=()=>{clearInterval(y),clearTimeout(w)};l.current=S},150);return()=>{clearTimeout(g),l.current&&(l.current(),l.current=null)}},[t.isRunning,t.stepIndex,r]);const c=b.useRef(null);if(b.useEffect(()=>{let h=document.getElementById("tour-portal-container");return h||(h=document.createElement("div"),h.id="tour-portal-container",h.style.cssText="position: fixed; top: 0; left: 0; z-index: 99999; pointer-events: none;",document.body.appendChild(h)),c.current=h,()=>{}},[]),!t.isRunning||r.length===0||!s)return null;const d=o.jsx(Txe,{steps:r,stepIndex:t.stepIndex,run:t.isRunning,continuous:!0,showSkipButton:!0,showProgress:!0,disableOverlayClose:!0,disableScrolling:!1,disableScrollParentFix:!1,callback:n,styles:Exe,locale:_xe,scrollOffset:80,scrollToFirstStep:!0,floaterProps:{styles:{floater:{zIndex:99999}},disableAnimation:!0}},`tour-step-${t.stepIndex}`);return c.current?pa.createPortal(d,c.current):d}const El="model-assignment-tour",uQ=[{target:"body",content:"本引导旨在帮助你配置模型提供商和对应的模型,并为麦麦的各个组件分配合适的模型。",placement:"center",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="sidebar-model-provider"]',content:'第一步,你需要配置模型提供商。模型提供商决定了你要使用谁家的模型,无论是单一厂商(如 DeepSeek),还是模型平台(如 Siliconflow),都可以在这里进行配置。点击"下一步"进入配置页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-provider-button"]',content:'点击"添加提供商"按钮,开始配置你的模型提供商。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="provider-dialog"]',content:"在这里,你可以选择你想要配置的模型提供商,填写相关信息后保存即可。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-name-input"]',content:"这里的名称是你为这个模型提供商起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-apikey-input"]',content:"这里需要填写你从模型提供商那里获取的 API 密钥,用于验证和调用模型服务。对于不同的提供商,获取 API 密钥的方式可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-url-input"]',content:"这里需要填写模型提供商的 API 访问地址,确保填写正确以便系统能够连接到模型服务。对于不同的提供商,API 地址可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-template-select"]',content:"当然,如果你不知道如何填写这些信息,很多模型提供商在这里都提供了预设的模板供你选择,选择对应的模板后,相关信息会自动填充。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-save-button"]',content:"填写完所有信息后,点击保存按钮,模型提供商就配置完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-cancel-button"]',content:"因为这次咱们什么都没有填写,所以点击取消按钮退出吧。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="sidebar-model-management"]',content:'配置好模型提供商后,接下来我们需要为麦麦添加模型并分配功能。点击"下一步"进入模型管理页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-model-button"]',content:'在为麦麦的组件分配模型之前,首先需要添加你想要分配的模型,点击"添加模型"按钮开始添加。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="model-dialog"]',content:"在这里,你可以选择你之前配置好的模型提供商,然后选择对应的模型来添加。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-name-input"]',content:"这里的模型名称是你为这个模型起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-provider-select"]',content:"在这里选择你之前配置好的模型提供商,这样系统才能知道你要添加哪个提供商的模型。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-identifier-input"]',content:"这里需要填写你想要添加的模型的标识符,不同的模型提供商可能有不同的标识符格式,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-save-button"]',content:"填写完所有信息后,点击保存按钮,模型就添加完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-cancel-button"]',content:"当然,因为这次咱们什么都没有填写,所以直接点击取消按钮退出吧,等你准备好了再来添加模型。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="tasks-tab-trigger"]',content:'最后一步,添加好模型后,切换到"为模型分配功能"标签页,为麦麦的各个组件分配合适的模型。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="task-model-select"]',content:"在这里,你可以为每个组件选择一个或多个合适的模型,选择完成后配置会自动保存。恭喜你完成了模型配置的学习!",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1}],dQ={0:"/config/model",1:"/config/model",2:"/config/modelProvider",3:"/config/modelProvider",4:"/config/modelProvider",5:"/config/modelProvider",6:"/config/modelProvider",7:"/config/modelProvider",8:"/config/modelProvider",9:"/config/modelProvider",10:"/config/modelProvider",11:"/config/model",12:"/config/model",13:"/config/model",14:"/config/model",15:"/config/model",16:"/config/model",17:"/config/model",18:"/config/model",19:"/config/model"},l0=[{id:"siliconflow",name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",client_type:"openai",display_name:"硅基流动 (SiliconFlow)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"deepseek",name:"DeepSeek",base_url:"https://api.deepseek.com",client_type:"openai",display_name:"DeepSeek",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"rinkoai",name:"RinkoAI",base_url:"https://rinkoai.com/v1",client_type:"openai",display_name:"RinkoAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"zhipu",name:"ZhipuAI",base_url:"https://open.bigmodel.cn/api/paas/v4",client_type:"openai",display_name:"智谱 AI (ZhipuAI / GLM)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"moonshot",name:"Moonshot",base_url:"https://api.moonshot.cn/v1",client_type:"openai",display_name:"月之暗面 (Moonshot / Kimi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"doubao",name:"Doubao",base_url:"https://ark.cn-beijing.volces.com/api/v3",client_type:"openai",display_name:"字节豆包 (Doubao)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"alibaba",name:"Alibaba",base_url:"https://dashscope.aliyuncs.com/compatible-mode/v1",client_type:"openai",display_name:"阿里云百炼 (Alibaba Qwen)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"baichuan",name:"Baichuan",base_url:"https://api.baichuan-ai.com/v1",client_type:"openai",display_name:"百川智能 (Baichuan)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"minimax",name:"MiniMax",base_url:"https://api.minimax.chat/v1",client_type:"openai",display_name:"MiniMax (海螺 AI)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"stepfun",name:"StepFun",base_url:"https://api.stepfun.com/v1",client_type:"openai",display_name:"阶跃星辰 (StepFun)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"lingyi",name:"Lingyi",base_url:"https://api.lingyiwanwu.com/v1",client_type:"openai",display_name:"零一万物 (Lingyi / Yi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"openai",name:"OpenAI",base_url:"https://api.openai.com/v1",client_type:"openai",display_name:"OpenAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"xai",name:"xAI",base_url:"https://api.x.ai/v1",client_type:"openai",display_name:"xAI (Grok)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"anthropic",name:"Anthropic",base_url:"https://api.anthropic.com/v1",client_type:"openai",display_name:"Anthropic (Claude)"},{id:"gemini",name:"Gemini",base_url:"https://generativelanguage.googleapis.com/v1beta",client_type:"gemini",display_name:"Google Gemini",modelFetcher:{endpoint:"/models",parser:"gemini"}},{id:"cohere",name:"Cohere",base_url:"https://api.cohere.ai/v1",client_type:"openai",display_name:"Cohere"},{id:"groq",name:"Groq",base_url:"https://api.groq.com/openai/v1",client_type:"openai",display_name:"Groq",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"together",name:"Together AI",base_url:"https://api.together.xyz/v1",client_type:"openai",display_name:"Together AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"fireworks",name:"Fireworks",base_url:"https://api.fireworks.ai/inference/v1",client_type:"openai",display_name:"Fireworks AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"mistral",name:"Mistral",base_url:"https://api.mistral.ai/v1",client_type:"openai",display_name:"Mistral AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"perplexity",name:"Perplexity",base_url:"https://api.perplexity.ai",client_type:"openai",display_name:"Perplexity AI"},{id:"custom",name:"",base_url:"",client_type:"openai",display_name:"自定义"}];function WM(t){return t?t.replace(/\/+$/,"").toLowerCase():""}function Axe(t){if(!t)return null;const e=WM(t);return l0.find(n=>n.id!=="custom"&&WM(n.base_url)===e)||null}function Rxe(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[s,i]=b.useState(!1),[a,l]=b.useState(!1),[c,d]=b.useState(!1),[h,m]=b.useState(!1),[g,x]=b.useState(!1),[y,w]=b.useState(!1),[S,k]=b.useState(null),[j,N]=b.useState(null),[T,E]=b.useState("custom"),[_,M]=b.useState(!1),[I,P]=b.useState(!1),[L,H]=b.useState(null),[U,ee]=b.useState(!1),[z,Q]=b.useState(""),[B,X]=b.useState(new Set),[J,G]=b.useState(!1),[R,ie]=b.useState(1),[W,q]=b.useState(20),[V,te]=b.useState(""),{toast:ne}=fs(),K=Zi(),{state:se,goToStep:re,registerTour:oe}=U6(),Te=b.useRef(null),We=b.useRef(!0);b.useEffect(()=>{oe(El,uQ)},[oe]),b.useEffect(()=>{if(se.activeTourId===El&&se.isRunning){const ke=dQ[se.stepIndex];ke&&!window.location.pathname.endsWith(ke.replace("/config/",""))&&K({to:ke})}},[se.stepIndex,se.activeTourId,se.isRunning,K]);const Ye=b.useRef(se.stepIndex);b.useEffect(()=>{if(se.activeTourId===El&&se.isRunning){const ke=Ye.current,Pe=se.stepIndex;ke>=3&&ke<=9&&Pe<3&&w(!1),Ye.current=Pe}},[se.stepIndex,se.activeTourId,se.isRunning]),b.useEffect(()=>{if(se.activeTourId!==El||!se.isRunning)return;const ke=Pe=>{const it=Pe.target,ot=se.stepIndex;ot===2&&it.closest('[data-tour="add-provider-button"]')?setTimeout(()=>re(3),300):ot===9&&it.closest('[data-tour="provider-cancel-button"]')&&setTimeout(()=>re(10),300)};return document.addEventListener("click",ke,!0),()=>document.removeEventListener("click",ke,!0)},[se,re]),b.useEffect(()=>{Je()},[]);const Je=async()=>{try{r(!0);const ke=await Rh();e(ke.api_providers||[]),d(!1),We.current=!1}catch(ke){console.error("加载配置失败:",ke)}finally{r(!1)}},Oe=async()=>{try{m(!0),Jy().catch(()=>{}),x(!0)}catch(ke){console.error("重启失败:",ke),x(!1),ne({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),m(!1)}},Ve=async()=>{try{i(!0),Te.current&&clearTimeout(Te.current);const ke=await Rh();ke.api_providers=t,await zv(ke),d(!1),ne({title:"保存成功",description:"正在重启麦麦..."}),await Oe()}catch(ke){console.error("保存配置失败:",ke),ne({title:"保存失败",description:ke.message,variant:"destructive"}),i(!1)}},Ue=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},He=()=>{x(!1),m(!1),ne({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},Ot=b.useCallback(async ke=>{if(!We.current)try{l(!0),await dk("api_providers",ke),d(!1)}catch(Pe){console.error("自动保存失败:",Pe),d(!0)}finally{l(!1)}},[]);b.useEffect(()=>{if(!We.current)return d(!0),Te.current&&clearTimeout(Te.current),Te.current=setTimeout(()=>{Ot(t)},2e3),()=>{Te.current&&clearTimeout(Te.current)}},[t,Ot]);const xt=async()=>{try{i(!0),Te.current&&clearTimeout(Te.current);const ke=await Rh();ke.api_providers=t,await zv(ke),d(!1),ne({title:"保存成功",description:"模型提供商配置已保存"})}catch(ke){console.error("保存配置失败:",ke),ne({title:"保存失败",description:ke.message,variant:"destructive"})}finally{i(!1)}},kn=(ke,Pe)=>{if(ke){const it=l0.find(ot=>ot.base_url===ke.base_url&&ot.client_type===ke.client_type);E(it?.id||"custom"),k(ke)}else E("custom"),k({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10});N(Pe),ee(!1),w(!0)},It=ke=>{E(ke),M(!1);const Pe=l0.find(it=>it.id===ke);Pe&&Pe.id!=="custom"?k(it=>({...it,name:Pe.name,base_url:Pe.base_url,client_type:Pe.client_type})):Pe?.id==="custom"&&k(it=>({...it,name:"",base_url:"",client_type:"openai"}))},Yt=b.useMemo(()=>T!=="custom",[T]),_t=async()=>{if(S?.api_key)try{await navigator.clipboard.writeText(S.api_key),ne({title:"复制成功",description:"API Key 已复制到剪贴板"})}catch{ne({title:"复制失败",description:"无法访问剪贴板",variant:"destructive"})}},mt=()=>{if(!S)return;const ke={...S,max_retry:S.max_retry??2,timeout:S.timeout??30,retry_interval:S.retry_interval??10};if(j!==null){const Pe=[...t];Pe[j]=ke,e(Pe)}else e([...t,ke]);w(!1),k(null),N(null)},Ne=ke=>{if(!ke&&S){const Pe={...S,max_retry:S.max_retry??2,timeout:S.timeout??30,retry_interval:S.retry_interval??10};k(Pe)}w(ke)},Ie=ke=>{H(ke),P(!0)},st=()=>{if(L!==null){const ke=t.filter((Pe,it)=>it!==L);e(ke),ne({title:"删除成功",description:"提供商已从列表中移除"})}P(!1),H(null)},yt=ke=>{const Pe=new Set(B);Pe.has(ke)?Pe.delete(ke):Pe.add(ke),X(Pe)},Pt=()=>{if(B.size===Fe.length)X(new Set);else{const ke=Fe.map((Pe,it)=>t.findIndex(ot=>ot===Fe[it]));X(new Set(ke))}},At=()=>{if(B.size===0){ne({title:"提示",description:"请先选择要删除的提供商",variant:"default"});return}G(!0)},zn=()=>{const ke=t.filter((Pe,it)=>!B.has(it));e(ke),X(new Set),G(!1),ne({title:"批量删除成功",description:`已删除 ${B.size} 个提供商`})},Fe=t.filter(ke=>{if(!z)return!0;const Pe=z.toLowerCase();return ke.name.toLowerCase().includes(Pe)||ke.base_url.toLowerCase().includes(Pe)||ke.client_type.toLowerCase().includes(Pe)}),rt=Math.ceil(Fe.length/W),tn=Fe.slice((R-1)*W,R*W),Rt=()=>{const ke=parseInt(V);ke>=1&&ke<=rt&&(ie(ke),te(""))};return n?o.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:o.jsx("div",{className:"flex items-center justify-center h-64",children:o.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})}):o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"AI模型厂商配置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理 AI 模型厂商的 API 配置"})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[B.size>0&&o.jsxs(he,{onClick:At,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[o.jsx(Sn,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",B.size,")"]}),o.jsxs(he,{onClick:()=>kn(null,null),size:"sm",className:"w-full sm:w-auto","data-tour":"add-provider-button",children:[o.jsx(zs,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加提供商"]}),o.jsxs(he,{onClick:xt,disabled:s||a||!c||h,size:"sm",variant:"outline",className:"w-full sm:w-auto sm:min-w-[120px]",children:[o.jsx($y,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),s?"保存中...":a?"自动保存中...":c?"保存配置":"已保存"]}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs(he,{disabled:s||a||h,size:"sm",className:"w-full sm:w-auto sm:min-w-[120px]",children:[o.jsx(Cj,{className:"mr-2 h-4 w-4"}),h?"重启中...":c?"保存并重启":"重启麦麦"]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认重启麦麦?"}),o.jsx(_n,{className:"space-y-3",asChild:!0,children:o.jsxs("div",{children:[o.jsx("p",{children:c?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),o.jsxs(ga,{className:"border-yellow-500/50 bg-yellow-500/10",children:[o.jsx(Oa,{className:"h-4 w-4 text-yellow-600"}),o.jsxs(xa,{className:"text-yellow-900 dark:text-yellow-100",children:[o.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",o.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",o.jsxs(Dr,{children:[o.jsx(Sf,{asChild:!0,children:o.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[o.jsx(qy,{className:"h-3 w-3"}),"如何结束程序?"]})}),o.jsxs(Sr,{className:"max-w-2xl",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"如何结束使用重启功能后的麦麦程序"}),o.jsx(ss,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),o.jsxs(ja,{defaultValue:"windows",className:"w-full",children:[o.jsxs(Wi,{className:"grid w-full grid-cols-3",children:[o.jsx(Lt,{value:"windows",children:"Windows"}),o.jsx(Lt,{value:"macos",children:"macOS"}),o.jsx(Lt,{value:"linux",children:"Linux"})]}),o.jsxs(un,{value:"windows",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),o.jsxs("li",{children:["在“进程”或“详细信息”标签页中找到 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),o.jsx("li",{children:"右键点击并选择“结束任务”"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),o.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),o.jsxs(un,{value:"macos",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"})," 打开 Spotlight,搜索“活动监视器”"]}),o.jsxs("li",{children:["在进程列表中找到 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),o.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]})]}),o.jsxs(un,{value:"linux",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),o.jsx("p",{children:'pkill -9 -f "bot.py"'}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["在终端输入 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),o.jsx(bs,{children:o.jsx(Qj,{asChild:!0,children:o.jsx(he,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:c?Ve:Oe,children:c?"保存并重启":"确认重启"})]})]})]})]})]}),o.jsxs(ga,{children:[o.jsx(Oa,{className:"h-4 w-4"}),o.jsxs(xa,{children:["配置更新后需要",o.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),o.jsxs(wn,{className:"h-[calc(100vh-260px)]",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2 mb-4",children:[o.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[o.jsx(Ni,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(ze,{placeholder:"搜索提供商名称、URL 或类型...",value:z,onChange:ke=>Q(ke.target.value),className:"pl-9"})]}),z&&o.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",Fe.length," 个结果"]})]}),o.jsx("div",{className:"md:hidden space-y-3",children:Fe.length===0?o.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:z?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'}):tn.map((ke,Pe)=>{const it=t.findIndex(ot=>ot===ke);return o.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-start justify-between gap-2",children:[o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("h3",{className:"font-semibold text-base truncate",children:ke.name}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1 break-all",children:ke.base_url})]}),o.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[o.jsxs(he,{variant:"default",size:"sm",onClick:()=>kn(ke,it),children:[o.jsx(Yu,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),o.jsxs(he,{size:"sm",onClick:()=>Ie(it),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Sn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"客户端类型"}),o.jsx("p",{className:"font-medium",children:ke.client_type})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"最大重试"}),o.jsx("p",{className:"font-medium",children:ke.max_retry})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"超时(秒)"}),o.jsx("p",{className:"font-medium",children:ke.timeout})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"重试间隔(秒)"}),o.jsx("p",{className:"font-medium",children:ke.retry_interval})]})]})]},Pe)})}),o.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:o.jsx("div",{className:"overflow-x-auto",children:o.jsxs(Tf,{children:[o.jsx(Ef,{children:o.jsxs(Ps,{children:[o.jsx(pn,{className:"w-12",children:o.jsx(Oi,{checked:B.size===Fe.length&&Fe.length>0,onCheckedChange:Pt})}),o.jsx(pn,{children:"名称"}),o.jsx(pn,{children:"基础URL"}),o.jsx(pn,{children:"客户端类型"}),o.jsx(pn,{className:"text-right",children:"最大重试"}),o.jsx(pn,{className:"text-right",children:"超时(秒)"}),o.jsx(pn,{className:"text-right",children:"重试间隔(秒)"}),o.jsx(pn,{className:"text-right",children:"操作"})]})}),o.jsx(_f,{children:tn.length===0?o.jsx(Ps,{children:o.jsx(Gt,{colSpan:8,className:"text-center text-muted-foreground py-8",children:z?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'})}):tn.map((ke,Pe)=>{const it=t.findIndex(ot=>ot===ke);return o.jsxs(Ps,{children:[o.jsx(Gt,{children:o.jsx(Oi,{checked:B.has(it),onCheckedChange:()=>yt(it)})}),o.jsx(Gt,{className:"font-medium",children:ke.name}),o.jsx(Gt,{className:"max-w-xs truncate",title:ke.base_url,children:ke.base_url}),o.jsx(Gt,{children:ke.client_type}),o.jsx(Gt,{className:"text-right",children:ke.max_retry}),o.jsx(Gt,{className:"text-right",children:ke.timeout}),o.jsx(Gt,{className:"text-right",children:ke.retry_interval}),o.jsx(Gt,{className:"text-right",children:o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsxs(he,{variant:"default",size:"sm",onClick:()=>kn(ke,it),children:[o.jsx(Yu,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),o.jsxs(he,{size:"sm",onClick:()=>Ie(it),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Sn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},Pe)})})]})})}),Fe.length>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(de,{htmlFor:"page-size-provider",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:W.toString(),onValueChange:ke=>{q(parseInt(ke)),ie(1),X(new Set)},children:[o.jsx($t,{id:"page-size-provider",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"10",children:"10"}),o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"50",children:"50"}),o.jsx(De,{value:"100",children:"100"})]})]}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(R-1)*W+1," 到"," ",Math.min(R*W,Fe.length)," 条,共 ",Fe.length," 条"]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{variant:"outline",size:"sm",onClick:()=>ie(1),disabled:R===1,className:"hidden sm:flex",children:o.jsx(Ep,{className:"h-4 w-4"})}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>ie(ke=>Math.max(1,ke-1)),disabled:R===1,children:[o.jsx(vd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{type:"number",value:V,onChange:ke=>te(ke.target.value),onKeyDown:ke=>ke.key==="Enter"&&Rt(),placeholder:R.toString(),className:"w-16 h-8 text-center",min:1,max:rt}),o.jsx(he,{variant:"outline",size:"sm",onClick:Rt,disabled:!V,className:"h-8",children:"跳转"})]}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>ie(ke=>ke+1),disabled:R>=rt,children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(yd,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(he,{variant:"outline",size:"sm",onClick:()=>ie(rt),disabled:R>=rt,className:"hidden sm:flex",children:o.jsx(_p,{className:"h-4 w-4"})})]})]})]}),o.jsx(Dr,{open:y,onOpenChange:Ne,children:o.jsxs(Sr,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"provider-dialog",preventOutsideClose:se.isRunning,children:[o.jsxs(kr,{children:[o.jsx(Or,{children:j!==null?"编辑提供商":"添加提供商"}),o.jsx(ss,{children:"配置 API 提供商的连接信息和参数"})]}),o.jsxs("form",{onSubmit:ke=>{ke.preventDefault(),mt()},autoComplete:"off",children:[o.jsxs("div",{className:"grid gap-4 py-4",children:[o.jsxs("div",{className:"grid gap-2","data-tour":"provider-template-select",children:[o.jsx(de,{htmlFor:"template",children:"提供商模板"}),o.jsxs(Po,{open:_,onOpenChange:M,children:[o.jsx(zo,{asChild:!0,children:o.jsxs(he,{variant:"outline",role:"combobox","aria-expanded":_,className:"w-full justify-between",children:[T?l0.find(ke=>ke.id===T)?.display_name:"选择提供商模板...",o.jsx(Tj,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),o.jsx(Xa,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:o.jsxs(vb,{children:[o.jsx(yb,{placeholder:"搜索提供商模板..."}),o.jsx(wn,{className:"h-[300px]",children:o.jsxs(bb,{className:"max-h-none overflow-visible",children:[o.jsx(wb,{children:"未找到匹配的模板"}),o.jsx(rp,{children:l0.map(ke=>o.jsxs(sp,{value:ke.display_name,onSelect:()=>It(ke.id),children:[o.jsx(Ro,{className:`mr-2 h-4 w-4 ${T===ke.id?"opacity-100":"opacity-0"}`}),ke.display_name]},ke.id))})]})})]})})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"选择预设模板可自动填充 URL 和客户端类型,支持搜索"})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"provider-name-input",children:[o.jsx(de,{htmlFor:"name",children:"名称 *"}),o.jsx(ze,{id:"name",value:S?.name||"",onChange:ke=>k(Pe=>Pe?{...Pe,name:ke.target.value}:null),placeholder:"例如: DeepSeek, SiliconFlow"})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"provider-url-input",children:[o.jsx(de,{htmlFor:"base_url",children:"基础 URL *"}),o.jsx(ze,{id:"base_url",value:S?.base_url||"",onChange:ke=>k(Pe=>Pe?{...Pe,base_url:ke.target.value}:null),placeholder:"https://api.example.com/v1",disabled:Yt,className:Yt?"bg-muted cursor-not-allowed":""}),Yt&&o.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时 URL 不可编辑,切换到"自定义"以手动配置'})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"provider-apikey-input",children:[o.jsx(de,{htmlFor:"api_key",children:"API Key *"}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{id:"api_key",type:U?"text":"password",value:S?.api_key||"",onChange:ke=>k(Pe=>Pe?{...Pe,api_key:ke.target.value}:null),placeholder:"sk-...",className:"flex-1"}),o.jsx(he,{type:"button",variant:"outline",size:"icon",onClick:()=>ee(!U),title:U?"隐藏密钥":"显示密钥",children:U?o.jsx(Ev,{className:"h-4 w-4"}):o.jsx(Ea,{className:"h-4 w-4"})}),o.jsx(he,{type:"button",variant:"outline",size:"icon",onClick:_t,title:"复制密钥",children:o.jsx(Tv,{className:"h-4 w-4"})})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"client_type",children:"客户端类型"}),o.jsxs(Vt,{value:S?.client_type||"openai",onValueChange:ke=>k(Pe=>Pe?{...Pe,client_type:ke}:null),disabled:Yt,children:[o.jsx($t,{id:"client_type",className:Yt?"bg-muted cursor-not-allowed":"",children:o.jsx(Ut,{placeholder:"选择客户端类型"})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"openai",children:"OpenAI"}),o.jsx(De,{value:"gemini",children:"Gemini"})]})]}),Yt&&o.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时客户端类型不可编辑,切换到"自定义"以手动配置'})]}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"max_retry",children:"最大重试"}),o.jsx(ze,{id:"max_retry",type:"number",min:"0",value:S?.max_retry??"",onChange:ke=>{const Pe=ke.target.value===""?null:parseInt(ke.target.value);k(it=>it?{...it,max_retry:Pe}:null)},placeholder:"默认: 2"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"timeout",children:"超时(秒)"}),o.jsx(ze,{id:"timeout",type:"number",min:"1",value:S?.timeout??"",onChange:ke=>{const Pe=ke.target.value===""?null:parseInt(ke.target.value);k(it=>it?{...it,timeout:Pe}:null)},placeholder:"默认: 30"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"retry_interval",children:"重试间隔(秒)"}),o.jsx(ze,{id:"retry_interval",type:"number",min:"1",value:S?.retry_interval??"",onChange:ke=>{const Pe=ke.target.value===""?null:parseInt(ke.target.value);k(it=>it?{...it,retry_interval:Pe}:null)},placeholder:"默认: 10"})]})]})]}),o.jsxs(bs,{children:[o.jsx(he,{type:"button",variant:"outline",onClick:()=>w(!1),"data-tour":"provider-cancel-button",children:"取消"}),o.jsx(he,{type:"submit","data-tour":"provider-save-button",children:"保存"})]})]})]})}),o.jsx(Dn,{open:I,onOpenChange:P,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除提供商 "',L!==null?t[L]?.name:"",'" 吗? 此操作无法撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:st,children:"删除"})]})]})}),o.jsx(Dn,{open:J,onOpenChange:G,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认批量删除"}),o.jsxs(_n,{children:["确定要删除选中的 ",B.size," 个提供商吗? 此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:zn,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),g&&o.jsx(Wj,{onRestartComplete:Ue,onRestartFailed:He})]})}function Dxe(){for(var t=arguments.length,e=new Array(t),n=0;nr=>{e.forEach(s=>s(r))},e)}const jb=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Df(t){const e=Object.prototype.toString.call(t);return e==="[object Window]"||e==="[object global]"}function W6(t){return"nodeType"in t}function Ti(t){var e,n;return t?Df(t)?t:W6(t)&&(e=(n=t.ownerDocument)==null?void 0:n.defaultView)!=null?e:window:window}function G6(t){const{Document:e}=Ti(t);return t instanceof e}function ig(t){return Df(t)?!1:t instanceof Ti(t).HTMLElement}function hQ(t){return t instanceof Ti(t).SVGElement}function Pf(t){return t?Df(t)?t.document:W6(t)?G6(t)?t:ig(t)||hQ(t)?t.ownerDocument:document:document:document}const Lo=jb?b.useLayoutEffect:b.useEffect;function X6(t){const e=b.useRef(t);return Lo(()=>{e.current=t}),b.useCallback(function(){for(var n=arguments.length,r=new Array(n),s=0;s{t.current=setInterval(r,s)},[]),n=b.useCallback(()=>{t.current!==null&&(clearInterval(t.current),t.current=null)},[]);return[e,n]}function op(t,e){e===void 0&&(e=[t]);const n=b.useRef(t);return Lo(()=>{n.current!==t&&(n.current=t)},e),n}function ag(t,e){const n=b.useRef();return b.useMemo(()=>{const r=t(n.current);return n.current=r,r},[...e])}function cy(t){const e=X6(t),n=b.useRef(null),r=b.useCallback(s=>{s!==n.current&&e?.(s,n.current),n.current=s},[]);return[n,r]}function xO(t){const e=b.useRef();return b.useEffect(()=>{e.current=t},[t]),e.current}let xS={};function og(t,e){return b.useMemo(()=>{if(e)return e;const n=xS[t]==null?0:xS[t]+1;return xS[t]=n,t+"-"+n},[t,e])}function fQ(t){return function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),s=1;s{const l=Object.entries(a);for(const[c,d]of l){const h=i[c];h!=null&&(i[c]=h+t*d)}return i},{...e})}}const Fh=fQ(1),lp=fQ(-1);function zxe(t){return"clientX"in t&&"clientY"in t}function Y6(t){if(!t)return!1;const{KeyboardEvent:e}=Ti(t.target);return e&&t instanceof e}function Ixe(t){if(!t)return!1;const{TouchEvent:e}=Ti(t.target);return e&&t instanceof e}function vO(t){if(Ixe(t)){if(t.touches&&t.touches.length){const{clientX:e,clientY:n}=t.touches[0];return{x:e,y:n}}else if(t.changedTouches&&t.changedTouches.length){const{clientX:e,clientY:n}=t.changedTouches[0];return{x:e,y:n}}}return zxe(t)?{x:t.clientX,y:t.clientY}:null}const cp=Object.freeze({Translate:{toString(t){if(!t)return;const{x:e,y:n}=t;return"translate3d("+(e?Math.round(e):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(t){if(!t)return;const{scaleX:e,scaleY:n}=t;return"scaleX("+e+") scaleY("+n+")"}},Transform:{toString(t){if(t)return[cp.Translate.toString(t),cp.Scale.toString(t)].join(" ")}},Transition:{toString(t){let{property:e,duration:n,easing:r}=t;return e+" "+n+"ms "+r}}}),GM="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function Lxe(t){return t.matches(GM)?t:t.querySelector(GM)}const Bxe={display:"none"};function Fxe(t){let{id:e,value:n}=t;return ae.createElement("div",{id:e,style:Bxe},n)}function qxe(t){let{id:e,announcement:n,ariaLiveType:r="assertive"}=t;const s={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return ae.createElement("div",{id:e,style:s,role:"status","aria-live":r,"aria-atomic":!0},n)}function $xe(){const[t,e]=b.useState("");return{announce:b.useCallback(r=>{r!=null&&e(r)},[]),announcement:t}}const mQ=b.createContext(null);function Hxe(t){const e=b.useContext(mQ);b.useEffect(()=>{if(!e)throw new Error("useDndMonitor must be used within a children of ");return e(t)},[t,e])}function Qxe(){const[t]=b.useState(()=>new Set),e=b.useCallback(r=>(t.add(r),()=>t.delete(r)),[t]);return[b.useCallback(r=>{let{type:s,event:i}=r;t.forEach(a=>{var l;return(l=a[s])==null?void 0:l.call(a,i)})},[t]),e]}const Vxe={draggable:` + To pick up a draggable item, press the space bar. + While dragging, use the arrow keys to move the item. + Press space again to drop the item in its new position, or press escape to cancel. + `},Uxe={onDragStart(t){let{active:e}=t;return"Picked up draggable item "+e.id+"."},onDragOver(t){let{active:e,over:n}=t;return n?"Draggable item "+e.id+" was moved over droppable area "+n.id+".":"Draggable item "+e.id+" is no longer over a droppable area."},onDragEnd(t){let{active:e,over:n}=t;return n?"Draggable item "+e.id+" was dropped over droppable area "+n.id:"Draggable item "+e.id+" was dropped."},onDragCancel(t){let{active:e}=t;return"Dragging was cancelled. Draggable item "+e.id+" was dropped."}};function Wxe(t){let{announcements:e=Uxe,container:n,hiddenTextDescribedById:r,screenReaderInstructions:s=Vxe}=t;const{announce:i,announcement:a}=$xe(),l=og("DndLiveRegion"),[c,d]=b.useState(!1);if(b.useEffect(()=>{d(!0)},[]),Hxe(b.useMemo(()=>({onDragStart(m){let{active:g}=m;i(e.onDragStart({active:g}))},onDragMove(m){let{active:g,over:x}=m;e.onDragMove&&i(e.onDragMove({active:g,over:x}))},onDragOver(m){let{active:g,over:x}=m;i(e.onDragOver({active:g,over:x}))},onDragEnd(m){let{active:g,over:x}=m;i(e.onDragEnd({active:g,over:x}))},onDragCancel(m){let{active:g,over:x}=m;i(e.onDragCancel({active:g,over:x}))}}),[i,e])),!c)return null;const h=ae.createElement(ae.Fragment,null,ae.createElement(Fxe,{id:r,value:s.draggable}),ae.createElement(qxe,{id:l,announcement:a}));return n?pa.createPortal(h,n):h}var us;(function(t){t.DragStart="dragStart",t.DragMove="dragMove",t.DragEnd="dragEnd",t.DragCancel="dragCancel",t.DragOver="dragOver",t.RegisterDroppable="registerDroppable",t.SetDroppableDisabled="setDroppableDisabled",t.UnregisterDroppable="unregisterDroppable"})(us||(us={}));function uy(){}function XM(t,e){return b.useMemo(()=>({sensor:t,options:e??{}}),[t,e])}function Gxe(){for(var t=arguments.length,e=new Array(t),n=0;n[...e].filter(r=>r!=null),[...e])}const Za=Object.freeze({x:0,y:0});function pQ(t,e){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function gQ(t,e){let{data:{value:n}}=t,{data:{value:r}}=e;return n-r}function Xxe(t,e){let{data:{value:n}}=t,{data:{value:r}}=e;return r-n}function YM(t){let{left:e,top:n,height:r,width:s}=t;return[{x:e,y:n},{x:e+s,y:n},{x:e,y:n+r},{x:e+s,y:n+r}]}function xQ(t,e){if(!t||t.length===0)return null;const[n]=t;return n[e]}function KM(t,e,n){return e===void 0&&(e=t.left),n===void 0&&(n=t.top),{x:e+t.width*.5,y:n+t.height*.5}}const Yxe=t=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=KM(e,e.left,e.top),i=[];for(const a of r){const{id:l}=a,c=n.get(l);if(c){const d=pQ(KM(c),s);i.push({id:l,data:{droppableContainer:a,value:d}})}}return i.sort(gQ)},Kxe=t=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=YM(e),i=[];for(const a of r){const{id:l}=a,c=n.get(l);if(c){const d=YM(c),h=s.reduce((g,x,y)=>g+pQ(d[y],x),0),m=Number((h/4).toFixed(4));i.push({id:l,data:{droppableContainer:a,value:m}})}}return i.sort(gQ)};function Zxe(t,e){const n=Math.max(e.top,t.top),r=Math.max(e.left,t.left),s=Math.min(e.left+e.width,t.left+t.width),i=Math.min(e.top+e.height,t.top+t.height),a=s-r,l=i-n;if(r{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=[];for(const i of r){const{id:a}=i,l=n.get(a);if(l){const c=Zxe(l,e);c>0&&s.push({id:a,data:{droppableContainer:i,value:c}})}}return s.sort(Xxe)};function e1e(t,e,n){return{...t,scaleX:e&&n?e.width/n.width:1,scaleY:e&&n?e.height/n.height:1}}function vQ(t,e){return t&&e?{x:t.left-e.left,y:t.top-e.top}:Za}function t1e(t){return function(n){for(var r=arguments.length,s=new Array(r>1?r-1:0),i=1;i({...a,top:a.top+t*l.y,bottom:a.bottom+t*l.y,left:a.left+t*l.x,right:a.right+t*l.x}),{...n})}}const n1e=t1e(1);function r1e(t){if(t.startsWith("matrix3d(")){const e=t.slice(9,-1).split(/, /);return{x:+e[12],y:+e[13],scaleX:+e[0],scaleY:+e[5]}}else if(t.startsWith("matrix(")){const e=t.slice(7,-1).split(/, /);return{x:+e[4],y:+e[5],scaleX:+e[0],scaleY:+e[3]}}return null}function s1e(t,e,n){const r=r1e(e);if(!r)return t;const{scaleX:s,scaleY:i,x:a,y:l}=r,c=t.left-a-(1-s)*parseFloat(n),d=t.top-l-(1-i)*parseFloat(n.slice(n.indexOf(" ")+1)),h=s?t.width/s:t.width,m=i?t.height/i:t.height;return{width:h,height:m,top:d,right:c+h,bottom:d+m,left:c}}const i1e={ignoreTransform:!1};function zf(t,e){e===void 0&&(e=i1e);let n=t.getBoundingClientRect();if(e.ignoreTransform){const{transform:d,transformOrigin:h}=Ti(t).getComputedStyle(t);d&&(n=s1e(n,d,h))}const{top:r,left:s,width:i,height:a,bottom:l,right:c}=n;return{top:r,left:s,width:i,height:a,bottom:l,right:c}}function ZM(t){return zf(t,{ignoreTransform:!0})}function a1e(t){const e=t.innerWidth,n=t.innerHeight;return{top:0,left:0,right:e,bottom:n,width:e,height:n}}function o1e(t,e){return e===void 0&&(e=Ti(t).getComputedStyle(t)),e.position==="fixed"}function l1e(t,e){e===void 0&&(e=Ti(t).getComputedStyle(t));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(s=>{const i=e[s];return typeof i=="string"?n.test(i):!1})}function Nb(t,e){const n=[];function r(s){if(e!=null&&n.length>=e||!s)return n;if(G6(s)&&s.scrollingElement!=null&&!n.includes(s.scrollingElement))return n.push(s.scrollingElement),n;if(!ig(s)||hQ(s)||n.includes(s))return n;const i=Ti(t).getComputedStyle(s);return s!==t&&l1e(s,i)&&n.push(s),o1e(s,i)?n:r(s.parentNode)}return t?r(t):n}function yQ(t){const[e]=Nb(t,1);return e??null}function vS(t){return!jb||!t?null:Df(t)?t:W6(t)?G6(t)||t===Pf(t).scrollingElement?window:ig(t)?t:null:null}function bQ(t){return Df(t)?t.scrollX:t.scrollLeft}function wQ(t){return Df(t)?t.scrollY:t.scrollTop}function yO(t){return{x:bQ(t),y:wQ(t)}}var vs;(function(t){t[t.Forward=1]="Forward",t[t.Backward=-1]="Backward"})(vs||(vs={}));function SQ(t){return!jb||!t?!1:t===document.scrollingElement}function kQ(t){const e={x:0,y:0},n=SQ(t)?{height:window.innerHeight,width:window.innerWidth}:{height:t.clientHeight,width:t.clientWidth},r={x:t.scrollWidth-n.width,y:t.scrollHeight-n.height},s=t.scrollTop<=e.y,i=t.scrollLeft<=e.x,a=t.scrollTop>=r.y,l=t.scrollLeft>=r.x;return{isTop:s,isLeft:i,isBottom:a,isRight:l,maxScroll:r,minScroll:e}}const c1e={x:.2,y:.2};function u1e(t,e,n,r,s){let{top:i,left:a,right:l,bottom:c}=n;r===void 0&&(r=10),s===void 0&&(s=c1e);const{isTop:d,isBottom:h,isLeft:m,isRight:g}=kQ(t),x={x:0,y:0},y={x:0,y:0},w={height:e.height*s.y,width:e.width*s.x};return!d&&i<=e.top+w.height?(x.y=vs.Backward,y.y=r*Math.abs((e.top+w.height-i)/w.height)):!h&&c>=e.bottom-w.height&&(x.y=vs.Forward,y.y=r*Math.abs((e.bottom-w.height-c)/w.height)),!g&&l>=e.right-w.width?(x.x=vs.Forward,y.x=r*Math.abs((e.right-w.width-l)/w.width)):!m&&a<=e.left+w.width&&(x.x=vs.Backward,y.x=r*Math.abs((e.left+w.width-a)/w.width)),{direction:x,speed:y}}function d1e(t){if(t===document.scrollingElement){const{innerWidth:i,innerHeight:a}=window;return{top:0,left:0,right:i,bottom:a,width:i,height:a}}const{top:e,left:n,right:r,bottom:s}=t.getBoundingClientRect();return{top:e,left:n,right:r,bottom:s,width:t.clientWidth,height:t.clientHeight}}function OQ(t){return t.reduce((e,n)=>Fh(e,yO(n)),Za)}function h1e(t){return t.reduce((e,n)=>e+bQ(n),0)}function f1e(t){return t.reduce((e,n)=>e+wQ(n),0)}function m1e(t,e){if(e===void 0&&(e=zf),!t)return;const{top:n,left:r,bottom:s,right:i}=e(t);yQ(t)&&(s<=0||i<=0||n>=window.innerHeight||r>=window.innerWidth)&&t.scrollIntoView({block:"center",inline:"center"})}const p1e=[["x",["left","right"],h1e],["y",["top","bottom"],f1e]];class K6{constructor(e,n){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=Nb(n),s=OQ(r);this.rect={...e},this.width=e.width,this.height=e.height;for(const[i,a,l]of p1e)for(const c of a)Object.defineProperty(this,c,{get:()=>{const d=l(r),h=s[i]-d;return this.rect[c]+h},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class O0{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(n=>{var r;return(r=this.target)==null?void 0:r.removeEventListener(...n)})},this.target=e}add(e,n,r){var s;(s=this.target)==null||s.addEventListener(e,n,r),this.listeners.push([e,n,r])}}function g1e(t){const{EventTarget:e}=Ti(t);return t instanceof e?t:Pf(t)}function yS(t,e){const n=Math.abs(t.x),r=Math.abs(t.y);return typeof e=="number"?Math.sqrt(n**2+r**2)>e:"x"in e&&"y"in e?n>e.x&&r>e.y:"x"in e?n>e.x:"y"in e?r>e.y:!1}var da;(function(t){t.Click="click",t.DragStart="dragstart",t.Keydown="keydown",t.ContextMenu="contextmenu",t.Resize="resize",t.SelectionChange="selectionchange",t.VisibilityChange="visibilitychange"})(da||(da={}));function JM(t){t.preventDefault()}function x1e(t){t.stopPropagation()}var yn;(function(t){t.Space="Space",t.Down="ArrowDown",t.Right="ArrowRight",t.Left="ArrowLeft",t.Up="ArrowUp",t.Esc="Escape",t.Enter="Enter",t.Tab="Tab"})(yn||(yn={}));const jQ={start:[yn.Space,yn.Enter],cancel:[yn.Esc],end:[yn.Space,yn.Enter,yn.Tab]},v1e=(t,e)=>{let{currentCoordinates:n}=e;switch(t.code){case yn.Right:return{...n,x:n.x+25};case yn.Left:return{...n,x:n.x-25};case yn.Down:return{...n,y:n.y+25};case yn.Up:return{...n,y:n.y-25}}};class Z6{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;const{event:{target:n}}=e;this.props=e,this.listeners=new O0(Pf(n)),this.windowListeners=new O0(Ti(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(da.Resize,this.handleCancel),this.windowListeners.add(da.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(da.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:e,onStart:n}=this.props,r=e.node.current;r&&m1e(r),n(Za)}handleKeyDown(e){if(Y6(e)){const{active:n,context:r,options:s}=this.props,{keyboardCodes:i=jQ,coordinateGetter:a=v1e,scrollBehavior:l="smooth"}=s,{code:c}=e;if(i.end.includes(c)){this.handleEnd(e);return}if(i.cancel.includes(c)){this.handleCancel(e);return}const{collisionRect:d}=r.current,h=d?{x:d.left,y:d.top}:Za;this.referenceCoordinates||(this.referenceCoordinates=h);const m=a(e,{active:n,context:r.current,currentCoordinates:h});if(m){const g=lp(m,h),x={x:0,y:0},{scrollableAncestors:y}=r.current;for(const w of y){const S=e.code,{isTop:k,isRight:j,isLeft:N,isBottom:T,maxScroll:E,minScroll:_}=kQ(w),M=d1e(w),I={x:Math.min(S===yn.Right?M.right-M.width/2:M.right,Math.max(S===yn.Right?M.left:M.left+M.width/2,m.x)),y:Math.min(S===yn.Down?M.bottom-M.height/2:M.bottom,Math.max(S===yn.Down?M.top:M.top+M.height/2,m.y))},P=S===yn.Right&&!j||S===yn.Left&&!N,L=S===yn.Down&&!T||S===yn.Up&&!k;if(P&&I.x!==m.x){const H=w.scrollLeft+g.x,U=S===yn.Right&&H<=E.x||S===yn.Left&&H>=_.x;if(U&&!g.y){w.scrollTo({left:H,behavior:l});return}U?x.x=w.scrollLeft-H:x.x=S===yn.Right?w.scrollLeft-E.x:w.scrollLeft-_.x,x.x&&w.scrollBy({left:-x.x,behavior:l});break}else if(L&&I.y!==m.y){const H=w.scrollTop+g.y,U=S===yn.Down&&H<=E.y||S===yn.Up&&H>=_.y;if(U&&!g.x){w.scrollTo({top:H,behavior:l});return}U?x.y=w.scrollTop-H:x.y=S===yn.Down?w.scrollTop-E.y:w.scrollTop-_.y,x.y&&w.scrollBy({top:-x.y,behavior:l});break}}this.handleMove(e,Fh(lp(m,this.referenceCoordinates),x))}}}handleMove(e,n){const{onMove:r}=this.props;e.preventDefault(),r(n)}handleEnd(e){const{onEnd:n}=this.props;e.preventDefault(),this.detach(),n()}handleCancel(e){const{onCancel:n}=this.props;e.preventDefault(),this.detach(),n()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}Z6.activators=[{eventName:"onKeyDown",handler:(t,e,n)=>{let{keyboardCodes:r=jQ,onActivation:s}=e,{active:i}=n;const{code:a}=t.nativeEvent;if(r.start.includes(a)){const l=i.activatorNode.current;return l&&t.target!==l?!1:(t.preventDefault(),s?.({event:t.nativeEvent}),!0)}return!1}}];function eA(t){return!!(t&&"distance"in t)}function tA(t){return!!(t&&"delay"in t)}class J6{constructor(e,n,r){var s;r===void 0&&(r=g1e(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=n;const{event:i}=e,{target:a}=i;this.props=e,this.events=n,this.document=Pf(a),this.documentListeners=new O0(this.document),this.listeners=new O0(r),this.windowListeners=new O0(Ti(a)),this.initialCoordinates=(s=vO(i))!=null?s:Za,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:e,props:{options:{activationConstraint:n,bypassActivationConstraint:r}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(da.Resize,this.handleCancel),this.windowListeners.add(da.DragStart,JM),this.windowListeners.add(da.VisibilityChange,this.handleCancel),this.windowListeners.add(da.ContextMenu,JM),this.documentListeners.add(da.Keydown,this.handleKeydown),n){if(r!=null&&r({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(tA(n)){this.timeoutId=setTimeout(this.handleStart,n.delay),this.handlePending(n);return}if(eA(n)){this.handlePending(n);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,n){const{active:r,onPending:s}=this.props;s(r,e,this.initialCoordinates,n)}handleStart(){const{initialCoordinates:e}=this,{onStart:n}=this.props;e&&(this.activated=!0,this.documentListeners.add(da.Click,x1e,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(da.SelectionChange,this.removeTextSelection),n(e))}handleMove(e){var n;const{activated:r,initialCoordinates:s,props:i}=this,{onMove:a,options:{activationConstraint:l}}=i;if(!s)return;const c=(n=vO(e))!=null?n:Za,d=lp(s,c);if(!r&&l){if(eA(l)){if(l.tolerance!=null&&yS(d,l.tolerance))return this.handleCancel();if(yS(d,l.distance))return this.handleStart()}if(tA(l)&&yS(d,l.tolerance))return this.handleCancel();this.handlePending(l,d);return}e.cancelable&&e.preventDefault(),a(c)}handleEnd(){const{onAbort:e,onEnd:n}=this.props;this.detach(),this.activated||e(this.props.active),n()}handleCancel(){const{onAbort:e,onCancel:n}=this.props;this.detach(),this.activated||e(this.props.active),n()}handleKeydown(e){e.code===yn.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}}const y1e={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class eN extends J6{constructor(e){const{event:n}=e,r=Pf(n.target);super(e,y1e,r)}}eN.activators=[{eventName:"onPointerDown",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];const b1e={move:{name:"mousemove"},end:{name:"mouseup"}};var bO;(function(t){t[t.RightClick=2]="RightClick"})(bO||(bO={}));class w1e extends J6{constructor(e){super(e,b1e,Pf(e.event.target))}}w1e.activators=[{eventName:"onMouseDown",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;return n.button===bO.RightClick?!1:(r?.({event:n}),!0)}}];const bS={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class S1e extends J6{constructor(e){super(e,bS)}static setup(){return window.addEventListener(bS.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(bS.move.name,e)};function e(){}}}S1e.activators=[{eventName:"onTouchStart",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;const{touches:s}=n;return s.length>1?!1:(r?.({event:n}),!0)}}];var j0;(function(t){t[t.Pointer=0]="Pointer",t[t.DraggableRect=1]="DraggableRect"})(j0||(j0={}));var dy;(function(t){t[t.TreeOrder=0]="TreeOrder",t[t.ReversedTreeOrder=1]="ReversedTreeOrder"})(dy||(dy={}));function k1e(t){let{acceleration:e,activator:n=j0.Pointer,canScroll:r,draggingRect:s,enabled:i,interval:a=5,order:l=dy.TreeOrder,pointerCoordinates:c,scrollableAncestors:d,scrollableAncestorRects:h,delta:m,threshold:g}=t;const x=j1e({delta:m,disabled:!i}),[y,w]=Pxe(),S=b.useRef({x:0,y:0}),k=b.useRef({x:0,y:0}),j=b.useMemo(()=>{switch(n){case j0.Pointer:return c?{top:c.y,bottom:c.y,left:c.x,right:c.x}:null;case j0.DraggableRect:return s}},[n,s,c]),N=b.useRef(null),T=b.useCallback(()=>{const _=N.current;if(!_)return;const M=S.current.x*k.current.x,I=S.current.y*k.current.y;_.scrollBy(M,I)},[]),E=b.useMemo(()=>l===dy.TreeOrder?[...d].reverse():d,[l,d]);b.useEffect(()=>{if(!i||!d.length||!j){w();return}for(const _ of E){if(r?.(_)===!1)continue;const M=d.indexOf(_),I=h[M];if(!I)continue;const{direction:P,speed:L}=u1e(_,I,j,e,g);for(const H of["x","y"])x[H][P[H]]||(L[H]=0,P[H]=0);if(L.x>0||L.y>0){w(),N.current=_,y(T,a),S.current=L,k.current=P;return}}S.current={x:0,y:0},k.current={x:0,y:0},w()},[e,T,r,w,i,a,JSON.stringify(j),JSON.stringify(x),y,d,E,h,JSON.stringify(g)])}const O1e={x:{[vs.Backward]:!1,[vs.Forward]:!1},y:{[vs.Backward]:!1,[vs.Forward]:!1}};function j1e(t){let{delta:e,disabled:n}=t;const r=xO(e);return ag(s=>{if(n||!r||!s)return O1e;const i={x:Math.sign(e.x-r.x),y:Math.sign(e.y-r.y)};return{x:{[vs.Backward]:s.x[vs.Backward]||i.x===-1,[vs.Forward]:s.x[vs.Forward]||i.x===1},y:{[vs.Backward]:s.y[vs.Backward]||i.y===-1,[vs.Forward]:s.y[vs.Forward]||i.y===1}}},[n,e,r])}function N1e(t,e){const n=e!=null?t.get(e):void 0,r=n?n.node.current:null;return ag(s=>{var i;return e==null?null:(i=r??s)!=null?i:null},[r,e])}function C1e(t,e){return b.useMemo(()=>t.reduce((n,r)=>{const{sensor:s}=r,i=s.activators.map(a=>({eventName:a.eventName,handler:e(a.handler,r)}));return[...n,...i]},[]),[t,e])}var up;(function(t){t[t.Always=0]="Always",t[t.BeforeDragging=1]="BeforeDragging",t[t.WhileDragging=2]="WhileDragging"})(up||(up={}));var wO;(function(t){t.Optimized="optimized"})(wO||(wO={}));const nA=new Map;function T1e(t,e){let{dragging:n,dependencies:r,config:s}=e;const[i,a]=b.useState(null),{frequency:l,measure:c,strategy:d}=s,h=b.useRef(t),m=S(),g=op(m),x=b.useCallback(function(k){k===void 0&&(k=[]),!g.current&&a(j=>j===null?k:j.concat(k.filter(N=>!j.includes(N))))},[g]),y=b.useRef(null),w=ag(k=>{if(m&&!n)return nA;if(!k||k===nA||h.current!==t||i!=null){const j=new Map;for(let N of t){if(!N)continue;if(i&&i.length>0&&!i.includes(N.id)&&N.rect.current){j.set(N.id,N.rect.current);continue}const T=N.node.current,E=T?new K6(c(T),T):null;N.rect.current=E,E&&j.set(N.id,E)}return j}return k},[t,i,n,m,c]);return b.useEffect(()=>{h.current=t},[t]),b.useEffect(()=>{m||x()},[n,m]),b.useEffect(()=>{i&&i.length>0&&a(null)},[JSON.stringify(i)]),b.useEffect(()=>{m||typeof l!="number"||y.current!==null||(y.current=setTimeout(()=>{x(),y.current=null},l))},[l,m,x,...r]),{droppableRects:w,measureDroppableContainers:x,measuringScheduled:i!=null};function S(){switch(d){case up.Always:return!1;case up.BeforeDragging:return n;default:return!n}}}function NQ(t,e){return ag(n=>t?n||(typeof e=="function"?e(t):t):null,[e,t])}function E1e(t,e){return NQ(t,e)}function _1e(t){let{callback:e,disabled:n}=t;const r=X6(e),s=b.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:i}=window;return new i(r)},[r,n]);return b.useEffect(()=>()=>s?.disconnect(),[s]),s}function Cb(t){let{callback:e,disabled:n}=t;const r=X6(e),s=b.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:i}=window;return new i(r)},[n]);return b.useEffect(()=>()=>s?.disconnect(),[s]),s}function M1e(t){return new K6(zf(t),t)}function rA(t,e,n){e===void 0&&(e=M1e);const[r,s]=b.useState(null);function i(){s(c=>{if(!t)return null;if(t.isConnected===!1){var d;return(d=c??n)!=null?d:null}const h=e(t);return JSON.stringify(c)===JSON.stringify(h)?c:h})}const a=_1e({callback(c){if(t)for(const d of c){const{type:h,target:m}=d;if(h==="childList"&&m instanceof HTMLElement&&m.contains(t)){i();break}}}}),l=Cb({callback:i});return Lo(()=>{i(),t?(l?.observe(t),a?.observe(document.body,{childList:!0,subtree:!0})):(l?.disconnect(),a?.disconnect())},[t]),r}function A1e(t){const e=NQ(t);return vQ(t,e)}const sA=[];function R1e(t){const e=b.useRef(t),n=ag(r=>t?r&&r!==sA&&t&&e.current&&t.parentNode===e.current.parentNode?r:Nb(t):sA,[t]);return b.useEffect(()=>{e.current=t},[t]),n}function D1e(t){const[e,n]=b.useState(null),r=b.useRef(t),s=b.useCallback(i=>{const a=vS(i.target);a&&n(l=>l?(l.set(a,yO(a)),new Map(l)):null)},[]);return b.useEffect(()=>{const i=r.current;if(t!==i){a(i);const l=t.map(c=>{const d=vS(c);return d?(d.addEventListener("scroll",s,{passive:!0}),[d,yO(d)]):null}).filter(c=>c!=null);n(l.length?new Map(l):null),r.current=t}return()=>{a(t),a(i)};function a(l){l.forEach(c=>{const d=vS(c);d?.removeEventListener("scroll",s)})}},[s,t]),b.useMemo(()=>t.length?e?Array.from(e.values()).reduce((i,a)=>Fh(i,a),Za):OQ(t):Za,[t,e])}function iA(t,e){e===void 0&&(e=[]);const n=b.useRef(null);return b.useEffect(()=>{n.current=null},e),b.useEffect(()=>{const r=t!==Za;r&&!n.current&&(n.current=t),!r&&n.current&&(n.current=null)},[t]),n.current?lp(t,n.current):Za}function P1e(t){b.useEffect(()=>{if(!jb)return;const e=t.map(n=>{let{sensor:r}=n;return r.setup==null?void 0:r.setup()});return()=>{for(const n of e)n?.()}},t.map(e=>{let{sensor:n}=e;return n}))}function z1e(t,e){return b.useMemo(()=>t.reduce((n,r)=>{let{eventName:s,handler:i}=r;return n[s]=a=>{i(a,e)},n},{}),[t,e])}function CQ(t){return b.useMemo(()=>t?a1e(t):null,[t])}const aA=[];function I1e(t,e){e===void 0&&(e=zf);const[n]=t,r=CQ(n?Ti(n):null),[s,i]=b.useState(aA);function a(){i(()=>t.length?t.map(c=>SQ(c)?r:new K6(e(c),c)):aA)}const l=Cb({callback:a});return Lo(()=>{l?.disconnect(),a(),t.forEach(c=>l?.observe(c))},[t]),s}function L1e(t){if(!t)return null;if(t.children.length>1)return t;const e=t.children[0];return ig(e)?e:t}function B1e(t){let{measure:e}=t;const[n,r]=b.useState(null),s=b.useCallback(d=>{for(const{target:h}of d)if(ig(h)){r(m=>{const g=e(h);return m?{...m,width:g.width,height:g.height}:g});break}},[e]),i=Cb({callback:s}),a=b.useCallback(d=>{const h=L1e(d);i?.disconnect(),h&&i?.observe(h),r(h?e(h):null)},[e,i]),[l,c]=cy(a);return b.useMemo(()=>({nodeRef:l,rect:n,setRef:c}),[n,l,c])}const F1e=[{sensor:eN,options:{}},{sensor:Z6,options:{}}],q1e={current:{}},yv={draggable:{measure:ZM},droppable:{measure:ZM,strategy:up.WhileDragging,frequency:wO.Optimized},dragOverlay:{measure:zf}};class N0 extends Map{get(e){var n;return e!=null&&(n=super.get(e))!=null?n:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:n}=e;return!n})}getNodeFor(e){var n,r;return(n=(r=this.get(e))==null?void 0:r.node.current)!=null?n:void 0}}const $1e={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new N0,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:uy},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:yv,measureDroppableContainers:uy,windowRect:null,measuringScheduled:!1},H1e={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:uy,draggableNodes:new Map,over:null,measureDroppableContainers:uy},Tb=b.createContext(H1e),TQ=b.createContext($1e);function Q1e(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new N0}}}function V1e(t,e){switch(e.type){case us.DragStart:return{...t,draggable:{...t.draggable,initialCoordinates:e.initialCoordinates,active:e.active}};case us.DragMove:return t.draggable.active==null?t:{...t,draggable:{...t.draggable,translate:{x:e.coordinates.x-t.draggable.initialCoordinates.x,y:e.coordinates.y-t.draggable.initialCoordinates.y}}};case us.DragEnd:case us.DragCancel:return{...t,draggable:{...t.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case us.RegisterDroppable:{const{element:n}=e,{id:r}=n,s=new N0(t.droppable.containers);return s.set(r,n),{...t,droppable:{...t.droppable,containers:s}}}case us.SetDroppableDisabled:{const{id:n,key:r,disabled:s}=e,i=t.droppable.containers.get(n);if(!i||r!==i.key)return t;const a=new N0(t.droppable.containers);return a.set(n,{...i,disabled:s}),{...t,droppable:{...t.droppable,containers:a}}}case us.UnregisterDroppable:{const{id:n,key:r}=e,s=t.droppable.containers.get(n);if(!s||r!==s.key)return t;const i=new N0(t.droppable.containers);return i.delete(n),{...t,droppable:{...t.droppable,containers:i}}}default:return t}}function U1e(t){let{disabled:e}=t;const{active:n,activatorEvent:r,draggableNodes:s}=b.useContext(Tb),i=xO(r),a=xO(n?.id);return b.useEffect(()=>{if(!e&&!r&&i&&a!=null){if(!Y6(i)||document.activeElement===i.target)return;const l=s.get(a);if(!l)return;const{activatorNode:c,node:d}=l;if(!c.current&&!d.current)return;requestAnimationFrame(()=>{for(const h of[c.current,d.current]){if(!h)continue;const m=Lxe(h);if(m){m.focus();break}}})}},[r,e,s,a,i]),null}function W1e(t,e){let{transform:n,...r}=e;return t!=null&&t.length?t.reduce((s,i)=>i({transform:s,...r}),n):n}function G1e(t){return b.useMemo(()=>({draggable:{...yv.draggable,...t?.draggable},droppable:{...yv.droppable,...t?.droppable},dragOverlay:{...yv.dragOverlay,...t?.dragOverlay}}),[t?.draggable,t?.droppable,t?.dragOverlay])}function X1e(t){let{activeNode:e,measure:n,initialRect:r,config:s=!0}=t;const i=b.useRef(!1),{x:a,y:l}=typeof s=="boolean"?{x:s,y:s}:s;Lo(()=>{if(!a&&!l||!e){i.current=!1;return}if(i.current||!r)return;const d=e?.node.current;if(!d||d.isConnected===!1)return;const h=n(d),m=vQ(h,r);if(a||(m.x=0),l||(m.y=0),i.current=!0,Math.abs(m.x)>0||Math.abs(m.y)>0){const g=yQ(d);g&&g.scrollBy({top:m.y,left:m.x})}},[e,a,l,r,n])}const EQ=b.createContext({...Za,scaleX:1,scaleY:1});var Rc;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.Initializing=1]="Initializing",t[t.Initialized=2]="Initialized"})(Rc||(Rc={}));const Y1e=b.memo(function(e){var n,r,s,i;let{id:a,accessibility:l,autoScroll:c=!0,children:d,sensors:h=F1e,collisionDetection:m=Jxe,measuring:g,modifiers:x,...y}=e;const w=b.useReducer(V1e,void 0,Q1e),[S,k]=w,[j,N]=Qxe(),[T,E]=b.useState(Rc.Uninitialized),_=T===Rc.Initialized,{draggable:{active:M,nodes:I,translate:P},droppable:{containers:L}}=S,H=M!=null?I.get(M):null,U=b.useRef({initial:null,translated:null}),ee=b.useMemo(()=>{var Kt;return M!=null?{id:M,data:(Kt=H?.data)!=null?Kt:q1e,rect:U}:null},[M,H]),z=b.useRef(null),[Q,B]=b.useState(null),[X,J]=b.useState(null),G=op(y,Object.values(y)),R=og("DndDescribedBy",a),ie=b.useMemo(()=>L.getEnabled(),[L]),W=G1e(g),{droppableRects:q,measureDroppableContainers:V,measuringScheduled:te}=T1e(ie,{dragging:_,dependencies:[P.x,P.y],config:W.droppable}),ne=N1e(I,M),K=b.useMemo(()=>X?vO(X):null,[X]),se=nn(),re=E1e(ne,W.draggable.measure);X1e({activeNode:M!=null?I.get(M):null,config:se.layoutShiftCompensation,initialRect:re,measure:W.draggable.measure});const oe=rA(ne,W.draggable.measure,re),Te=rA(ne?ne.parentElement:null),We=b.useRef({activatorEvent:null,active:null,activeNode:ne,collisionRect:null,collisions:null,droppableRects:q,draggableNodes:I,draggingNode:null,draggingNodeRect:null,droppableContainers:L,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),Ye=L.getNodeFor((n=We.current.over)==null?void 0:n.id),Je=B1e({measure:W.dragOverlay.measure}),Oe=(r=Je.nodeRef.current)!=null?r:ne,Ve=_?(s=Je.rect)!=null?s:oe:null,Ue=!!(Je.nodeRef.current&&Je.rect),He=A1e(Ue?null:oe),Ot=CQ(Oe?Ti(Oe):null),xt=R1e(_?Ye??ne:null),kn=I1e(xt),It=W1e(x,{transform:{x:P.x-He.x,y:P.y-He.y,scaleX:1,scaleY:1},activatorEvent:X,active:ee,activeNodeRect:oe,containerNodeRect:Te,draggingNodeRect:Ve,over:We.current.over,overlayNodeRect:Je.rect,scrollableAncestors:xt,scrollableAncestorRects:kn,windowRect:Ot}),Yt=K?Fh(K,P):null,_t=D1e(xt),mt=iA(_t),Ne=iA(_t,[oe]),Ie=Fh(It,mt),st=Ve?n1e(Ve,It):null,yt=ee&&st?m({active:ee,collisionRect:st,droppableRects:q,droppableContainers:ie,pointerCoordinates:Yt}):null,Pt=xQ(yt,"id"),[At,zn]=b.useState(null),Fe=Ue?It:Fh(It,Ne),rt=e1e(Fe,(i=At?.rect)!=null?i:null,oe),tn=b.useRef(null),Rt=b.useCallback((Kt,pt)=>{let{sensor:xr,options:Ur}=pt;if(z.current==null)return;const Wr=I.get(z.current);if(!Wr)return;const vr=Kt.nativeEvent,In=new xr({active:z.current,activeNode:Wr,event:vr,options:Ur,context:We,onAbort(nr){if(!I.get(nr))return;const{onDragAbort:gs}=G.current,js={id:nr};gs?.(js),j({type:"onDragAbort",event:js})},onPending(nr,ps,gs,js){if(!I.get(nr))return;const{onDragPending:Le}=G.current,Ct={id:nr,constraint:ps,initialCoordinates:gs,offset:js};Le?.(Ct),j({type:"onDragPending",event:Ct})},onStart(nr){const ps=z.current;if(ps==null)return;const gs=I.get(ps);if(!gs)return;const{onDragStart:js}=G.current,ge={activatorEvent:vr,active:{id:ps,data:gs.data,rect:U}};pa.unstable_batchedUpdates(()=>{js?.(ge),E(Rc.Initializing),k({type:us.DragStart,initialCoordinates:nr,active:ps}),j({type:"onDragStart",event:ge}),B(tn.current),J(vr)})},onMove(nr){k({type:us.DragMove,coordinates:nr})},onEnd:cr(us.DragEnd),onCancel:cr(us.DragCancel)});tn.current=In;function cr(nr){return async function(){const{active:gs,collisions:js,over:ge,scrollAdjustedTranslate:Le}=We.current;let Ct=null;if(gs&&Le){const{cancelDrop:xn}=G.current;Ct={activatorEvent:vr,active:gs,collisions:js,delta:Le,over:ge},nr===us.DragEnd&&typeof xn=="function"&&await Promise.resolve(xn(Ct))&&(nr=us.DragCancel)}z.current=null,pa.unstable_batchedUpdates(()=>{k({type:nr}),E(Rc.Uninitialized),zn(null),B(null),J(null),tn.current=null;const xn=nr===us.DragEnd?"onDragEnd":"onDragCancel";if(Ct){const Fr=G.current[xn];Fr?.(Ct),j({type:xn,event:Ct})}})}}},[I]),ke=b.useCallback((Kt,pt)=>(xr,Ur)=>{const Wr=xr.nativeEvent,vr=I.get(Ur);if(z.current!==null||!vr||Wr.dndKit||Wr.defaultPrevented)return;const In={active:vr};Kt(xr,pt.options,In)===!0&&(Wr.dndKit={capturedBy:pt.sensor},z.current=Ur,Rt(xr,pt))},[I,Rt]),Pe=C1e(h,ke);P1e(h),Lo(()=>{oe&&T===Rc.Initializing&&E(Rc.Initialized)},[oe,T]),b.useEffect(()=>{const{onDragMove:Kt}=G.current,{active:pt,activatorEvent:xr,collisions:Ur,over:Wr}=We.current;if(!pt||!xr)return;const vr={active:pt,activatorEvent:xr,collisions:Ur,delta:{x:Ie.x,y:Ie.y},over:Wr};pa.unstable_batchedUpdates(()=>{Kt?.(vr),j({type:"onDragMove",event:vr})})},[Ie.x,Ie.y]),b.useEffect(()=>{const{active:Kt,activatorEvent:pt,collisions:xr,droppableContainers:Ur,scrollAdjustedTranslate:Wr}=We.current;if(!Kt||z.current==null||!pt||!Wr)return;const{onDragOver:vr}=G.current,In=Ur.get(Pt),cr=In&&In.rect.current?{id:In.id,rect:In.rect.current,data:In.data,disabled:In.disabled}:null,nr={active:Kt,activatorEvent:pt,collisions:xr,delta:{x:Wr.x,y:Wr.y},over:cr};pa.unstable_batchedUpdates(()=>{zn(cr),vr?.(nr),j({type:"onDragOver",event:nr})})},[Pt]),Lo(()=>{We.current={activatorEvent:X,active:ee,activeNode:ne,collisionRect:st,collisions:yt,droppableRects:q,draggableNodes:I,draggingNode:Oe,draggingNodeRect:Ve,droppableContainers:L,over:At,scrollableAncestors:xt,scrollAdjustedTranslate:Ie},U.current={initial:Ve,translated:st}},[ee,ne,yt,st,I,Oe,Ve,q,L,At,xt,Ie]),k1e({...se,delta:P,draggingRect:st,pointerCoordinates:Yt,scrollableAncestors:xt,scrollableAncestorRects:kn});const it=b.useMemo(()=>({active:ee,activeNode:ne,activeNodeRect:oe,activatorEvent:X,collisions:yt,containerNodeRect:Te,dragOverlay:Je,draggableNodes:I,droppableContainers:L,droppableRects:q,over:At,measureDroppableContainers:V,scrollableAncestors:xt,scrollableAncestorRects:kn,measuringConfiguration:W,measuringScheduled:te,windowRect:Ot}),[ee,ne,oe,X,yt,Te,Je,I,L,q,At,V,xt,kn,W,te,Ot]),ot=b.useMemo(()=>({activatorEvent:X,activators:Pe,active:ee,activeNodeRect:oe,ariaDescribedById:{draggable:R},dispatch:k,draggableNodes:I,over:At,measureDroppableContainers:V}),[X,Pe,ee,oe,k,R,I,At,V]);return ae.createElement(mQ.Provider,{value:N},ae.createElement(Tb.Provider,{value:ot},ae.createElement(TQ.Provider,{value:it},ae.createElement(EQ.Provider,{value:rt},d)),ae.createElement(U1e,{disabled:l?.restoreFocus===!1})),ae.createElement(Wxe,{...l,hiddenTextDescribedById:R}));function nn(){const Kt=Q?.autoScrollEnabled===!1,pt=typeof c=="object"?c.enabled===!1:c===!1,xr=_&&!Kt&&!pt;return typeof c=="object"?{...c,enabled:xr}:{enabled:xr}}}),K1e=b.createContext(null),oA="button",Z1e="Draggable";function J1e(t){let{id:e,data:n,disabled:r=!1,attributes:s}=t;const i=og(Z1e),{activators:a,activatorEvent:l,active:c,activeNodeRect:d,ariaDescribedById:h,draggableNodes:m,over:g}=b.useContext(Tb),{role:x=oA,roleDescription:y="draggable",tabIndex:w=0}=s??{},S=c?.id===e,k=b.useContext(S?EQ:K1e),[j,N]=cy(),[T,E]=cy(),_=z1e(a,e),M=op(n);Lo(()=>(m.set(e,{id:e,key:i,node:j,activatorNode:T,data:M}),()=>{const P=m.get(e);P&&P.key===i&&m.delete(e)}),[m,e]);const I=b.useMemo(()=>({role:x,tabIndex:w,"aria-disabled":r,"aria-pressed":S&&x===oA?!0:void 0,"aria-roledescription":y,"aria-describedby":h.draggable}),[r,x,w,S,y,h.draggable]);return{active:c,activatorEvent:l,activeNodeRect:d,attributes:I,isDragging:S,listeners:r?void 0:_,node:j,over:g,setNodeRef:N,setActivatorNodeRef:E,transform:k}}function eve(){return b.useContext(TQ)}const tve="Droppable",nve={timeout:25};function rve(t){let{data:e,disabled:n=!1,id:r,resizeObserverConfig:s}=t;const i=og(tve),{active:a,dispatch:l,over:c,measureDroppableContainers:d}=b.useContext(Tb),h=b.useRef({disabled:n}),m=b.useRef(!1),g=b.useRef(null),x=b.useRef(null),{disabled:y,updateMeasurementsFor:w,timeout:S}={...nve,...s},k=op(w??r),j=b.useCallback(()=>{if(!m.current){m.current=!0;return}x.current!=null&&clearTimeout(x.current),x.current=setTimeout(()=>{d(Array.isArray(k.current)?k.current:[k.current]),x.current=null},S)},[S]),N=Cb({callback:j,disabled:y||!a}),T=b.useCallback((I,P)=>{N&&(P&&(N.unobserve(P),m.current=!1),I&&N.observe(I))},[N]),[E,_]=cy(T),M=op(e);return b.useEffect(()=>{!N||!E.current||(N.disconnect(),m.current=!1,N.observe(E.current))},[E,N]),b.useEffect(()=>(l({type:us.RegisterDroppable,element:{id:r,key:i,disabled:n,node:E,rect:g,data:M}}),()=>l({type:us.UnregisterDroppable,key:i,id:r})),[r]),b.useEffect(()=>{n!==h.current.disabled&&(l({type:us.SetDroppableDisabled,id:r,key:i,disabled:n}),h.current.disabled=n)},[r,i,n,l]),{active:a,rect:g,isOver:c?.id===r,node:E,over:c,setNodeRef:_}}function tN(t,e,n){const r=t.slice();return r.splice(n<0?r.length+n:n,0,r.splice(e,1)[0]),r}function sve(t,e){return t.reduce((n,r,s)=>{const i=e.get(r);return i&&(n[s]=i),n},Array(t.length))}function k1(t){return t!==null&&t>=0}function ive(t,e){if(t===e)return!0;if(t.length!==e.length)return!1;for(let n=0;n{var e;let{rects:n,activeNodeRect:r,activeIndex:s,overIndex:i,index:a}=t;const l=(e=n[s])!=null?e:r;if(!l)return null;const c=lve(n,a,s);if(a===s){const d=n[i];return d?{x:ss&&a<=i?{x:-l.width-c,y:0,...O1}:a=i?{x:l.width+c,y:0,...O1}:{x:0,y:0,...O1}};function lve(t,e,n){const r=t[e],s=t[e-1],i=t[e+1];return!r||!s&&!i?0:n{let{rects:e,activeIndex:n,overIndex:r,index:s}=t;const i=tN(e,r,n),a=e[s],l=i[s];return!l||!a?null:{x:l.left-a.left,y:l.top-a.top,scaleX:l.width/a.width,scaleY:l.height/a.height}},MQ="Sortable",AQ=ae.createContext({activeIndex:-1,containerId:MQ,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:_Q,disabled:{draggable:!1,droppable:!1}});function cve(t){let{children:e,id:n,items:r,strategy:s=_Q,disabled:i=!1}=t;const{active:a,dragOverlay:l,droppableRects:c,over:d,measureDroppableContainers:h}=eve(),m=og(MQ,n),g=l.rect!==null,x=b.useMemo(()=>r.map(_=>typeof _=="object"&&"id"in _?_.id:_),[r]),y=a!=null,w=a?x.indexOf(a.id):-1,S=d?x.indexOf(d.id):-1,k=b.useRef(x),j=!ive(x,k.current),N=S!==-1&&w===-1||j,T=ave(i);Lo(()=>{j&&y&&h(x)},[j,x,y,h]),b.useEffect(()=>{k.current=x},[x]);const E=b.useMemo(()=>({activeIndex:w,containerId:m,disabled:T,disableTransforms:N,items:x,overIndex:S,useDragOverlay:g,sortedRects:sve(x,c),strategy:s}),[w,m,T.draggable,T.droppable,N,x,S,c,g,s]);return ae.createElement(AQ.Provider,{value:E},e)}const uve=t=>{let{id:e,items:n,activeIndex:r,overIndex:s}=t;return tN(n,r,s).indexOf(e)},dve=t=>{let{containerId:e,isSorting:n,wasDragging:r,index:s,items:i,newIndex:a,previousItems:l,previousContainerId:c,transition:d}=t;return!d||!r||l!==i&&s===a?!1:n?!0:a!==s&&e===c},hve={duration:200,easing:"ease"},RQ="transform",fve=cp.Transition.toString({property:RQ,duration:0,easing:"linear"}),mve={roleDescription:"sortable"};function pve(t){let{disabled:e,index:n,node:r,rect:s}=t;const[i,a]=b.useState(null),l=b.useRef(n);return Lo(()=>{if(!e&&n!==l.current&&r.current){const c=s.current;if(c){const d=zf(r.current,{ignoreTransform:!0}),h={x:c.left-d.left,y:c.top-d.top,scaleX:c.width/d.width,scaleY:c.height/d.height};(h.x||h.y)&&a(h)}}n!==l.current&&(l.current=n)},[e,n,r,s]),b.useEffect(()=>{i&&a(null)},[i]),i}function gve(t){let{animateLayoutChanges:e=dve,attributes:n,disabled:r,data:s,getNewIndex:i=uve,id:a,strategy:l,resizeObserverConfig:c,transition:d=hve}=t;const{items:h,containerId:m,activeIndex:g,disabled:x,disableTransforms:y,sortedRects:w,overIndex:S,useDragOverlay:k,strategy:j}=b.useContext(AQ),N=xve(r,x),T=h.indexOf(a),E=b.useMemo(()=>({sortable:{containerId:m,index:T,items:h},...s}),[m,s,T,h]),_=b.useMemo(()=>h.slice(h.indexOf(a)),[h,a]),{rect:M,node:I,isOver:P,setNodeRef:L}=rve({id:a,data:E,disabled:N.droppable,resizeObserverConfig:{updateMeasurementsFor:_,...c}}),{active:H,activatorEvent:U,activeNodeRect:ee,attributes:z,setNodeRef:Q,listeners:B,isDragging:X,over:J,setActivatorNodeRef:G,transform:R}=J1e({id:a,data:E,attributes:{...mve,...n},disabled:N.draggable}),ie=Dxe(L,Q),W=!!H,q=W&&!y&&k1(g)&&k1(S),V=!k&&X,te=V&&q?R:null,K=q?te??(l??j)({rects:w,activeNodeRect:ee,activeIndex:g,overIndex:S,index:T}):null,se=k1(g)&&k1(S)?i({id:a,items:h,activeIndex:g,overIndex:S}):T,re=H?.id,oe=b.useRef({activeId:re,items:h,newIndex:se,containerId:m}),Te=h!==oe.current.items,We=e({active:H,containerId:m,isDragging:X,isSorting:W,id:a,index:T,items:h,newIndex:oe.current.newIndex,previousItems:oe.current.items,previousContainerId:oe.current.containerId,transition:d,wasDragging:oe.current.activeId!=null}),Ye=pve({disabled:!We,index:T,node:I,rect:M});return b.useEffect(()=>{W&&oe.current.newIndex!==se&&(oe.current.newIndex=se),m!==oe.current.containerId&&(oe.current.containerId=m),h!==oe.current.items&&(oe.current.items=h)},[W,se,m,h]),b.useEffect(()=>{if(re===oe.current.activeId)return;if(re!=null&&oe.current.activeId==null){oe.current.activeId=re;return}const Oe=setTimeout(()=>{oe.current.activeId=re},50);return()=>clearTimeout(Oe)},[re]),{active:H,activeIndex:g,attributes:z,data:E,rect:M,index:T,newIndex:se,items:h,isOver:P,isSorting:W,isDragging:X,listeners:B,node:I,overIndex:S,over:J,setNodeRef:ie,setActivatorNodeRef:G,setDroppableNodeRef:L,setDraggableNodeRef:Q,transform:Ye??K,transition:Je()};function Je(){if(Ye||Te&&oe.current.newIndex===T)return fve;if(!(V&&!Y6(U)||!d)&&(W||We))return cp.Transition.toString({...d,property:RQ})}}function xve(t,e){var n,r;return typeof t=="boolean"?{draggable:t,droppable:!1}:{draggable:(n=t?.draggable)!=null?n:e.draggable,droppable:(r=t?.droppable)!=null?r:e.droppable}}function hy(t){if(!t)return!1;const e=t.data.current;return!!(e&&"sortable"in e&&typeof e.sortable=="object"&&"containerId"in e.sortable&&"items"in e.sortable&&"index"in e.sortable)}const vve=[yn.Down,yn.Right,yn.Up,yn.Left],yve=(t,e)=>{let{context:{active:n,collisionRect:r,droppableRects:s,droppableContainers:i,over:a,scrollableAncestors:l}}=e;if(vve.includes(t.code)){if(t.preventDefault(),!n||!r)return;const c=[];i.getEnabled().forEach(m=>{if(!m||m!=null&&m.disabled)return;const g=s.get(m.id);if(g)switch(t.code){case yn.Down:r.topg.top&&c.push(m);break;case yn.Left:r.left>g.left&&c.push(m);break;case yn.Right:r.left1&&(h=d[1].id),h!=null){const m=i.get(n.id),g=i.get(h),x=g?s.get(g.id):null,y=g?.node.current;if(y&&x&&m&&g){const S=Nb(y).some((_,M)=>l[M]!==_),k=DQ(m,g),j=bve(m,g),N=S||!k?{x:0,y:0}:{x:j?r.width-x.width:0,y:j?r.height-x.height:0},T={x:x.left,y:x.top};return N.x&&N.y?T:lp(T,N)}}}};function DQ(t,e){return!hy(t)||!hy(e)?!1:t.data.current.sortable.containerId===e.data.current.sortable.containerId}function bve(t,e){return!hy(t)||!hy(e)||!DQ(t,e)?!1:t.data.current.sortable.index{h.stopPropagation(),n(t)}})]})})}function Sve({options:t,selected:e,onChange:n,placeholder:r="选择选项...",emptyText:s="未找到选项",className:i}){const[a,l]=b.useState(!1),c=Gxe(XM(eN,{activationConstraint:{distance:8}}),XM(Z6,{coordinateGetter:yve})),d=g=>{e.includes(g)?n(e.filter(x=>x!==g)):n([...e,g])},h=g=>{n(e.filter(x=>x!==g))},m=g=>{const{active:x,over:y}=g;if(y&&x.id!==y.id){const w=e.indexOf(x.id),S=e.indexOf(y.id);n(tN(e,w,S))}};return o.jsxs(Po,{open:a,onOpenChange:l,children:[o.jsx(zo,{asChild:!0,children:o.jsxs(he,{variant:"outline",role:"combobox","aria-expanded":a,className:ve("w-full justify-between min-h-10 h-auto",i),children:[o.jsx(Y1e,{sensors:c,collisionDetection:Yxe,onDragEnd:m,children:o.jsx(cve,{items:e,strategy:ove,children:o.jsx("div",{className:"flex gap-1 flex-wrap flex-1",children:e.length===0?o.jsx("span",{className:"text-muted-foreground",children:r}):e.map(g=>{const x=t.find(y=>y.value===g);return o.jsx(wve,{value:g,label:x?.label||g,onRemove:h},g)})})})}),o.jsx(Tj,{className:"ml-2 h-4 w-4 shrink-0 opacity-50",strokeWidth:2,fill:"none"})]})}),o.jsx(Xa,{className:"w-full p-0",align:"start",children:o.jsxs(vb,{children:[o.jsx(yb,{placeholder:"搜索...",className:"h-9"}),o.jsxs(bb,{children:[o.jsx(wb,{children:s}),o.jsx(rp,{children:t.map(g=>{const x=e.includes(g.value);return o.jsxs(sp,{value:g.value,onSelect:()=>d(g.value),children:[o.jsx("div",{className:ve("mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary",x?"bg-primary text-primary-foreground":"opacity-50 [&_svg]:invisible"),children:o.jsx(Ro,{className:"h-3 w-3",strokeWidth:2,fill:"none"})}),o.jsx("span",{children:g.label})]},g.value)})})]})]})})]})}const lA=new Map,kve=300*1e3;function Ove(){const[t,e]=b.useState([]),[n,r]=b.useState([]),[s,i]=b.useState([]),[a,l]=b.useState([]),[c,d]=b.useState(null),[h,m]=b.useState(!0),[g,x]=b.useState(!1),[y,w]=b.useState(!1),[S,k]=b.useState(!1),[j,N]=b.useState(!1),[T,E]=b.useState(!1),[_,M]=b.useState(!1),[I,P]=b.useState(null),[L,H]=b.useState(null),[U,ee]=b.useState(!1),[z,Q]=b.useState(null),[B,X]=b.useState(""),[J,G]=b.useState(new Set),[R,ie]=b.useState(!1),[W,q]=b.useState(1),[V,te]=b.useState(20),[ne,K]=b.useState(""),[se,re]=b.useState([]),[oe,Te]=b.useState(!1),[We,Ye]=b.useState(null),[Je,Oe]=b.useState(!1),[Ve,Ue]=b.useState(null),{toast:He}=fs(),Ot=Zi(),{registerTour:xt,startTour:kn,state:It,goToStep:Yt}=U6(),_t=b.useRef(null),mt=b.useRef(null),Ne=b.useRef(!0);b.useEffect(()=>{xt(El,uQ)},[xt]),b.useEffect(()=>{if(It.activeTourId===El&&It.isRunning){const ge=dQ[It.stepIndex];ge&&!window.location.pathname.endsWith(ge.replace("/config/",""))&&Ot({to:ge})}},[It.stepIndex,It.activeTourId,It.isRunning,Ot]);const Ie=b.useRef(It.stepIndex);b.useEffect(()=>{if(It.activeTourId===El&&It.isRunning){const ge=Ie.current,Le=It.stepIndex;ge>=12&&ge<=17&&Le<12&&M(!1),Ie.current=Le}},[It.stepIndex,It.activeTourId,It.isRunning]),b.useEffect(()=>{if(It.activeTourId!==El||!It.isRunning)return;const ge=Le=>{const Ct=Le.target,xn=It.stepIndex;xn===2&&Ct.closest('[data-tour="add-provider-button"]')?setTimeout(()=>Yt(3),300):xn===9&&Ct.closest('[data-tour="provider-cancel-button"]')?setTimeout(()=>Yt(10),300):xn===11&&Ct.closest('[data-tour="add-model-button"]')?setTimeout(()=>Yt(12),300):xn===17&&Ct.closest('[data-tour="model-cancel-button"]')?setTimeout(()=>Yt(18),300):xn===18&&Ct.closest('[data-tour="tasks-tab-trigger"]')&&setTimeout(()=>Yt(19),300)};return document.addEventListener("click",ge,!0),()=>document.removeEventListener("click",ge,!0)},[It,Yt]);const st=()=>{kn(El)};b.useEffect(()=>{yt()},[]);const yt=async()=>{try{m(!0);const ge=await Rh(),Le=ge.models||[];e(Le),l(Le.map(xn=>xn.name));const Ct=ge.api_providers||[];r(Ct.map(xn=>xn.name)),i(Ct),d(ge.model_task_config||null),k(!1),Ne.current=!1}catch(ge){console.error("加载配置失败:",ge)}finally{m(!1)}},Pt=b.useCallback(ge=>s.find(Le=>Le.name===ge),[s]),At=b.useCallback(async(ge,Le=!1)=>{const Ct=Pt(ge);if(!Ct?.base_url){re([]),Ue(null),Ye('提供商配置不完整,请先在"模型提供商配置"中配置');return}if(!Ct.api_key){re([]),Ue(null),Ye('该提供商未配置 API Key,请先在"模型提供商配置"中填写');return}const xn=Axe(Ct.base_url);if(Ue(xn),!xn?.modelFetcher){re([]),Ye(null);return}const Fr=`${ge}:${Ct.base_url}`,Cr=lA.get(Fr);if(!Le&&Cr&&Date.now()-Cr.timestamp{_&&I?.api_provider&&At(I.api_provider)},[_,I?.api_provider,At]);const zn=async()=>{try{N(!0),Jy().catch(()=>{}),E(!0)}catch(ge){console.error("重启失败:",ge),E(!1),He({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),N(!1)}},Fe=async()=>{try{x(!0),_t.current&&clearTimeout(_t.current),mt.current&&clearTimeout(mt.current);const ge=await Rh();ge.models=t,ge.model_task_config=c,await zv(ge),k(!1),He({title:"保存成功",description:"正在重启麦麦..."}),await zn()}catch(ge){console.error("保存配置失败:",ge),He({title:"保存失败",description:ge.message,variant:"destructive"}),x(!1)}},rt=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},tn=()=>{E(!1),N(!1),He({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},Rt=b.useCallback(async ge=>{if(!Ne.current)try{w(!0),await dk("models",ge),k(!1)}catch(Le){console.error("自动保存模型列表失败:",Le),k(!0)}finally{w(!1)}},[]),ke=b.useCallback(async ge=>{if(!Ne.current)try{w(!0),await dk("model_task_config",ge),k(!1)}catch(Le){console.error("自动保存任务配置失败:",Le),k(!0)}finally{w(!1)}},[]);b.useEffect(()=>{if(!Ne.current)return k(!0),_t.current&&clearTimeout(_t.current),_t.current=setTimeout(()=>{Rt(t)},2e3),()=>{_t.current&&clearTimeout(_t.current)}},[t,Rt]),b.useEffect(()=>{if(!(Ne.current||!c))return k(!0),mt.current&&clearTimeout(mt.current),mt.current=setTimeout(()=>{ke(c)},2e3),()=>{mt.current&&clearTimeout(mt.current)}},[c,ke]);const Pe=async()=>{try{x(!0),_t.current&&clearTimeout(_t.current),mt.current&&clearTimeout(mt.current);const ge=await Rh();ge.models=t,ge.model_task_config=c,await zv(ge),k(!1),He({title:"保存成功",description:"模型配置已保存"}),await yt()}catch(ge){console.error("保存配置失败:",ge),He({title:"保存失败",description:ge.message,variant:"destructive"})}finally{x(!1)}},it=(ge,Le)=>{P(ge||{model_identifier:"",name:"",api_provider:n[0]||"",price_in:0,price_out:0,force_stream_mode:!1,extra_params:{}}),H(Le),M(!0)},ot=()=>{if(!I)return;const ge={...I,price_in:I.price_in??0,price_out:I.price_out??0};let Le;L!==null?(Le=[...t],Le[L]=ge):Le=[...t,ge],e(Le),l(Le.map(Ct=>Ct.name)),M(!1),P(null),H(null)},nn=ge=>{if(!ge&&I){const Le={...I,price_in:I.price_in??0,price_out:I.price_out??0};P(Le)}M(ge)},Kt=ge=>{Q(ge),ee(!0)},pt=()=>{if(z!==null){const ge=t.filter((Le,Ct)=>Ct!==z);e(ge),l(ge.map(Le=>Le.name)),He({title:"删除成功",description:"模型已从列表中移除"})}ee(!1),Q(null)},xr=ge=>{const Le=new Set(J);Le.has(ge)?Le.delete(ge):Le.add(ge),G(Le)},Ur=()=>{if(J.size===cr.length)G(new Set);else{const ge=cr.map((Le,Ct)=>t.findIndex(xn=>xn===cr[Ct]));G(new Set(ge))}},Wr=()=>{if(J.size===0){He({title:"提示",description:"请先选择要删除的模型",variant:"default"});return}ie(!0)},vr=()=>{const ge=t.filter((Le,Ct)=>!J.has(Ct));e(ge),l(ge.map(Le=>Le.name)),G(new Set),ie(!1),He({title:"批量删除成功",description:`已删除 ${J.size} 个模型`})},In=(ge,Le,Ct)=>{c&&d({...c,[ge]:{...c[ge],[Le]:Ct}})},cr=t.filter(ge=>{if(!B)return!0;const Le=B.toLowerCase();return ge.name.toLowerCase().includes(Le)||ge.model_identifier.toLowerCase().includes(Le)||ge.api_provider.toLowerCase().includes(Le)}),nr=Math.ceil(cr.length/V),ps=cr.slice((W-1)*V,W*V),gs=()=>{const ge=parseInt(ne);ge>=1&&ge<=nr&&(q(ge),K(""))},js=ge=>c?[c.utils?.model_list||[],c.utils_small?.model_list||[],c.tool_use?.model_list||[],c.replyer?.model_list||[],c.planner?.model_list||[],c.vlm?.model_list||[],c.voice?.model_list||[],c.embedding?.model_list||[],c.lpmm_entity_extract?.model_list||[],c.lpmm_rdf_build?.model_list||[],c.lpmm_qa?.model_list||[]].some(Ct=>Ct.includes(ge)):!1;return h?o.jsx(wn,{className:"h-full",children:o.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:o.jsx("div",{className:"flex items-center justify-center h-64",children:o.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):o.jsx(wn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"模型管理与分配"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"添加模型并为模型分配功能"})]}),o.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[o.jsxs(he,{onClick:Pe,disabled:g||y||!S||j,size:"sm",variant:"outline",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[o.jsx($y,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),g?"保存中...":y?"自动保存中...":S?"保存配置":"已保存"]}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs(he,{disabled:g||y||j,size:"sm",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[o.jsx(Cj,{className:"mr-2 h-4 w-4"}),j?"重启中...":S?"保存并重启":"重启麦麦"]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认重启麦麦?"}),o.jsx(_n,{className:"space-y-3",asChild:!0,children:o.jsxs("div",{children:[o.jsx("p",{children:S?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),o.jsxs(ga,{className:"border-yellow-500/50 bg-yellow-500/10",children:[o.jsx(Oa,{className:"h-4 w-4 text-yellow-600"}),o.jsxs(xa,{className:"text-yellow-900 dark:text-yellow-100",children:[o.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",o.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",o.jsxs(Dr,{children:[o.jsx(Sf,{asChild:!0,children:o.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[o.jsx(qy,{className:"h-3 w-3"}),"如何结束程序?"]})}),o.jsxs(Sr,{className:"max-w-2xl",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"如何结束使用重启功能后的麦麦程序"}),o.jsx(ss,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),o.jsxs(ja,{defaultValue:"windows",className:"w-full",children:[o.jsxs(Wi,{className:"grid w-full grid-cols-3",children:[o.jsx(Lt,{value:"windows",children:"Windows"}),o.jsx(Lt,{value:"macos",children:"macOS"}),o.jsx(Lt,{value:"linux",children:"Linux"})]}),o.jsxs(un,{value:"windows",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),o.jsxs("li",{children:['在"进程"或"详细信息"标签页中找到 ',o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),o.jsx("li",{children:'右键点击并选择"结束任务"'})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),o.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),o.jsxs(un,{value:"macos",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"}),' 打开 Spotlight,搜索"活动监视器"']}),o.jsxs("li",{children:["在进程列表中找到 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),o.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]})]}),o.jsxs(un,{value:"linux",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),o.jsx("p",{children:'pkill -9 -f "bot.py"'}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["在终端输入 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),o.jsx(bs,{children:o.jsx(Qj,{asChild:!0,children:o.jsx(he,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:S?Fe:zn,children:S?"保存并重启":"确认重启"})]})]})]})]})]}),o.jsxs(ga,{children:[o.jsx(Oa,{className:"h-4 w-4"}),o.jsxs(xa,{children:["配置更新后需要",o.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),o.jsxs(ga,{className:"hidden lg:flex border-primary/30 bg-primary/5 cursor-pointer hover:bg-primary/10 transition-colors",onClick:st,children:[o.jsx(Pee,{className:"h-4 w-4 text-primary"}),o.jsxs(xa,{className:"flex items-center justify-between",children:[o.jsxs("span",{children:[o.jsx("strong",{className:"text-primary",children:"新手引导:"}),"不知道如何配置模型?点击这里开始学习如何为麦麦的组件分配模型。"]}),o.jsx(he,{variant:"outline",size:"sm",className:"ml-4 shrink-0",children:"开始引导"})]})]}),o.jsxs(ja,{defaultValue:"models",className:"w-full",children:[o.jsxs(Wi,{className:"grid w-full max-w-full sm:max-w-md grid-cols-2",children:[o.jsx(Lt,{value:"models",children:"添加模型"}),o.jsx(Lt,{value:"tasks","data-tour":"tasks-tab-trigger",children:"为模型分配功能"})]}),o.jsxs(un,{value:"models",className:"space-y-4 mt-0",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-2",children:[o.jsx("p",{className:"text-sm text-muted-foreground",children:"配置可用的模型列表"}),o.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[J.size>0&&o.jsxs(he,{onClick:Wr,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[o.jsx(Sn,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",J.size,")"]}),o.jsxs(he,{onClick:()=>it(null,null),size:"sm",variant:"outline",className:"w-full sm:w-auto","data-tour":"add-model-button",children:[o.jsx(zs,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加模型"]})]})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2",children:[o.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[o.jsx(Ni,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(ze,{placeholder:"搜索模型名称、标识符或提供商...",value:B,onChange:ge=>X(ge.target.value),className:"pl-9"})]}),B&&o.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",cr.length," 个结果"]})]}),o.jsx("div",{className:"md:hidden space-y-3",children:ps.length===0?o.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:B?"未找到匹配的模型":"暂无模型配置"}):ps.map((ge,Le)=>{const Ct=t.findIndex(Fr=>Fr===ge),xn=js(ge.name);return o.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-start justify-between gap-2",children:[o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[o.jsx("h3",{className:"font-semibold text-base",children:ge.name}),o.jsx(Xn,{variant:xn?"default":"secondary",className:xn?"bg-green-600 hover:bg-green-700":"",children:xn?"已使用":"未使用"})]}),o.jsx("p",{className:"text-xs text-muted-foreground break-all",title:ge.model_identifier,children:ge.model_identifier})]}),o.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[o.jsxs(he,{variant:"default",size:"sm",onClick:()=>it(ge,Ct),children:[o.jsx(Yu,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),o.jsxs(he,{size:"sm",onClick:()=>Kt(Ct),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Sn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"提供商"}),o.jsx("p",{className:"font-medium",children:ge.api_provider})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"强制流式"}),o.jsx("p",{className:"font-medium",children:ge.force_stream_mode?"是":"否"})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"输入价格"}),o.jsxs("p",{className:"font-medium",children:["¥",ge.price_in,"/M"]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"输出价格"}),o.jsxs("p",{className:"font-medium",children:["¥",ge.price_out,"/M"]})]})]})]},Le)})}),o.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:o.jsx("div",{className:"overflow-x-auto",children:o.jsxs(Tf,{children:[o.jsx(Ef,{children:o.jsxs(Ps,{children:[o.jsx(pn,{className:"w-12",children:o.jsx(Oi,{checked:J.size===cr.length&&cr.length>0,onCheckedChange:Ur})}),o.jsx(pn,{className:"w-24",children:"使用状态"}),o.jsx(pn,{children:"模型名称"}),o.jsx(pn,{children:"模型标识符"}),o.jsx(pn,{children:"提供商"}),o.jsx(pn,{className:"text-right",children:"输入价格"}),o.jsx(pn,{className:"text-right",children:"输出价格"}),o.jsx(pn,{className:"text-center",children:"强制流式"}),o.jsx(pn,{className:"text-right",children:"操作"})]})}),o.jsx(_f,{children:ps.length===0?o.jsx(Ps,{children:o.jsx(Gt,{colSpan:9,className:"text-center text-muted-foreground py-8",children:B?"未找到匹配的模型":"暂无模型配置"})}):ps.map((ge,Le)=>{const Ct=t.findIndex(Fr=>Fr===ge),xn=js(ge.name);return o.jsxs(Ps,{children:[o.jsx(Gt,{children:o.jsx(Oi,{checked:J.has(Ct),onCheckedChange:()=>xr(Ct)})}),o.jsx(Gt,{children:o.jsx(Xn,{variant:xn?"default":"secondary",className:xn?"bg-green-600 hover:bg-green-700":"",children:xn?"已使用":"未使用"})}),o.jsx(Gt,{className:"font-medium",children:ge.name}),o.jsx(Gt,{className:"max-w-xs truncate",title:ge.model_identifier,children:ge.model_identifier}),o.jsx(Gt,{children:ge.api_provider}),o.jsxs(Gt,{className:"text-right",children:["¥",ge.price_in,"/M"]}),o.jsxs(Gt,{className:"text-right",children:["¥",ge.price_out,"/M"]}),o.jsx(Gt,{className:"text-center",children:ge.force_stream_mode?"是":"否"}),o.jsx(Gt,{className:"text-right",children:o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsxs(he,{variant:"default",size:"sm",onClick:()=>it(ge,Ct),children:[o.jsx(Yu,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),o.jsxs(he,{size:"sm",onClick:()=>Kt(Ct),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Sn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},Le)})})]})})}),cr.length>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(de,{htmlFor:"page-size-model",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:V.toString(),onValueChange:ge=>{te(parseInt(ge)),q(1),G(new Set)},children:[o.jsx($t,{id:"page-size-model",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"10",children:"10"}),o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"50",children:"50"}),o.jsx(De,{value:"100",children:"100"})]})]}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(W-1)*V+1," 到"," ",Math.min(W*V,cr.length)," 条,共 ",cr.length," 条"]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{variant:"outline",size:"sm",onClick:()=>q(1),disabled:W===1,className:"hidden sm:flex",children:o.jsx(Ep,{className:"h-4 w-4"})}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>q(ge=>Math.max(1,ge-1)),disabled:W===1,children:[o.jsx(vd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{type:"number",value:ne,onChange:ge=>K(ge.target.value),onKeyDown:ge=>ge.key==="Enter"&&gs(),placeholder:W.toString(),className:"w-16 h-8 text-center",min:1,max:nr}),o.jsx(he,{variant:"outline",size:"sm",onClick:gs,disabled:!ne,className:"h-8",children:"跳转"})]}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>q(ge=>ge+1),disabled:W>=nr,children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(yd,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(he,{variant:"outline",size:"sm",onClick:()=>q(nr),disabled:W>=nr,className:"hidden sm:flex",children:o.jsx(_p,{className:"h-4 w-4"})})]})]})]}),o.jsxs(un,{value:"tasks",className:"space-y-6 mt-0",children:[o.jsx("p",{className:"text-sm text-muted-foreground",children:"为不同的任务配置使用的模型和参数"}),c&&o.jsxs("div",{className:"grid gap-4 sm:gap-6",children:[o.jsx(Fa,{title:"组件模型 (utils)",description:"用于表情包、取名、关系、情绪变化等组件",taskConfig:c.utils,modelNames:a,onChange:(ge,Le)=>In("utils",ge,Le),dataTour:"task-model-select"}),o.jsx(Fa,{title:"组件小模型 (utils_small)",description:"消耗量较大的组件,建议使用速度较快的小模型",taskConfig:c.utils_small,modelNames:a,onChange:(ge,Le)=>In("utils_small",ge,Le)}),o.jsx(Fa,{title:"工具调用模型 (tool_use)",description:"需要使用支持工具调用的模型",taskConfig:c.tool_use,modelNames:a,onChange:(ge,Le)=>In("tool_use",ge,Le)}),o.jsx(Fa,{title:"首要回复模型 (replyer)",description:"用于表达器和表达方式学习",taskConfig:c.replyer,modelNames:a,onChange:(ge,Le)=>In("replyer",ge,Le)}),o.jsx(Fa,{title:"决策模型 (planner)",description:"负责决定麦麦该什么时候回复",taskConfig:c.planner,modelNames:a,onChange:(ge,Le)=>In("planner",ge,Le)}),o.jsx(Fa,{title:"图像识别模型 (vlm)",description:"视觉语言模型",taskConfig:c.vlm,modelNames:a,onChange:(ge,Le)=>In("vlm",ge,Le),hideTemperature:!0}),o.jsx(Fa,{title:"语音识别模型 (voice)",description:"语音转文字",taskConfig:c.voice,modelNames:a,onChange:(ge,Le)=>In("voice",ge,Le),hideTemperature:!0,hideMaxTokens:!0}),o.jsx(Fa,{title:"嵌入模型 (embedding)",description:"用于向量化",taskConfig:c.embedding,modelNames:a,onChange:(ge,Le)=>In("embedding",ge,Le),hideTemperature:!0,hideMaxTokens:!0}),o.jsxs("div",{className:"space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库模型"}),o.jsx(Fa,{title:"实体提取模型 (lpmm_entity_extract)",description:"从文本中提取实体",taskConfig:c.lpmm_entity_extract,modelNames:a,onChange:(ge,Le)=>In("lpmm_entity_extract",ge,Le)}),o.jsx(Fa,{title:"RDF 构建模型 (lpmm_rdf_build)",description:"构建知识图谱",taskConfig:c.lpmm_rdf_build,modelNames:a,onChange:(ge,Le)=>In("lpmm_rdf_build",ge,Le)}),o.jsx(Fa,{title:"问答模型 (lpmm_qa)",description:"知识库问答",taskConfig:c.lpmm_qa,modelNames:a,onChange:(ge,Le)=>In("lpmm_qa",ge,Le)})]})]})]})]}),o.jsx(Dr,{open:_,onOpenChange:nn,children:o.jsxs(Sr,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"model-dialog",preventOutsideClose:It.isRunning,children:[o.jsxs(kr,{children:[o.jsx(Or,{children:L!==null?"编辑模型":"添加模型"}),o.jsx(ss,{children:"配置模型的基本信息和参数"})]}),o.jsxs("div",{className:"grid gap-4 py-4",children:[o.jsxs("div",{className:"grid gap-2","data-tour":"model-name-input",children:[o.jsx(de,{htmlFor:"model_name",children:"模型名称 *"}),o.jsx(ze,{id:"model_name",value:I?.name||"",onChange:ge=>P(Le=>Le?{...Le,name:ge.target.value}:null),placeholder:"例如: qwen3-30b"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"用于在任务配置中引用此模型"})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"model-provider-select",children:[o.jsx(de,{htmlFor:"api_provider",children:"API 提供商 *"}),o.jsxs(Vt,{value:I?.api_provider||"",onValueChange:ge=>{P(Le=>Le?{...Le,api_provider:ge}:null),re([]),Ye(null)},children:[o.jsx($t,{id:"api_provider",children:o.jsx(Ut,{placeholder:"选择提供商"})}),o.jsx(Ht,{children:n.map(ge=>o.jsx(De,{value:ge,children:ge},ge))})]})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"model-identifier-input",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(de,{htmlFor:"model_identifier",children:"模型标识符 *"}),Ve?.modelFetcher&&o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Xn,{variant:"secondary",className:"text-xs",children:Ve.display_name}),o.jsx(he,{variant:"ghost",size:"sm",className:"h-6 px-2",onClick:()=>I?.api_provider&&At(I.api_provider,!0),disabled:oe,children:oe?o.jsx(Uc,{className:"h-3 w-3 animate-spin"}):o.jsx(Qs,{className:"h-3 w-3"})})]})]}),Ve?.modelFetcher?o.jsxs(Po,{open:Je,onOpenChange:Oe,children:[o.jsx(zo,{asChild:!0,children:o.jsxs(he,{variant:"outline",role:"combobox","aria-expanded":Je,className:"w-full justify-between font-normal",disabled:oe||!!We,children:[oe?o.jsxs("span",{className:"flex items-center gap-2 text-muted-foreground",children:[o.jsx(Uc,{className:"h-4 w-4 animate-spin"}),"正在获取模型列表..."]}):We?o.jsx("span",{className:"text-muted-foreground text-sm",children:"点击下方输入框手动填写"}):I?.model_identifier?o.jsx("span",{className:"truncate",children:I.model_identifier}):o.jsx("span",{className:"text-muted-foreground",children:"搜索或选择模型..."}),o.jsx(Tj,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),o.jsx(Xa,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:o.jsxs(vb,{children:[o.jsx(yb,{placeholder:"搜索模型..."}),o.jsx(wn,{className:"h-[300px]",children:o.jsxs(bb,{className:"max-h-none overflow-visible",children:[o.jsx(wb,{children:We?o.jsxs("div",{className:"py-4 px-2 text-center space-y-2",children:[o.jsx("p",{className:"text-sm text-destructive",children:We}),!We.includes("API Key")&&o.jsx(he,{variant:"link",size:"sm",onClick:()=>I?.api_provider&&At(I.api_provider,!0),children:"重试"})]}):"未找到匹配的模型"}),o.jsx(rp,{heading:"可用模型",children:se.map(ge=>o.jsxs(sp,{value:ge.id,onSelect:()=>{P(Le=>Le?{...Le,model_identifier:ge.id}:null),Oe(!1)},children:[o.jsx(Ro,{className:`mr-2 h-4 w-4 ${I?.model_identifier===ge.id?"opacity-100":"opacity-0"}`}),o.jsxs("div",{className:"flex flex-col",children:[o.jsx("span",{children:ge.id}),ge.name!==ge.id&&o.jsx("span",{className:"text-xs text-muted-foreground",children:ge.name})]})]},ge.id))}),o.jsx(rp,{heading:"手动输入",children:o.jsxs(sp,{value:"__manual_input__",onSelect:()=>{Oe(!1)},children:[o.jsx(Yu,{className:"mr-2 h-4 w-4"}),"手动输入模型标识符..."]})})]})})]})})]}):o.jsx(ze,{id:"model_identifier",value:I?.model_identifier||"",onChange:ge=>P(Le=>Le?{...Le,model_identifier:ge.target.value}:null),placeholder:"Qwen/Qwen3-30B-A3B-Instruct-2507"}),We&&Ve?.modelFetcher&&o.jsxs(ga,{variant:"destructive",className:"mt-2 py-2",children:[o.jsx(Oa,{className:"h-4 w-4"}),o.jsx(xa,{className:"text-xs",children:We})]}),Ve?.modelFetcher&&o.jsx(ze,{value:I?.model_identifier||"",onChange:ge=>P(Le=>Le?{...Le,model_identifier:ge.target.value}:null),placeholder:"或手动输入模型标识符",className:"mt-2"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:We?'请手动输入模型标识符,或前往"模型提供商配置"检查 API Key':Ve?.modelFetcher?`已识别为 ${Ve.display_name},支持自动获取模型列表`:"API 提供商提供的模型 ID"})]}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"price_in",children:"输入价格 (¥/M token)"}),o.jsx(ze,{id:"price_in",type:"number",step:"0.1",min:"0",value:I?.price_in??"",onChange:ge=>{const Le=ge.target.value===""?null:parseFloat(ge.target.value);P(Ct=>Ct?{...Ct,price_in:Le}:null)},placeholder:"默认: 0"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"price_out",children:"输出价格 (¥/M token)"}),o.jsx(ze,{id:"price_out",type:"number",step:"0.1",min:"0",value:I?.price_out??"",onChange:ge=>{const Le=ge.target.value===""?null:parseFloat(ge.target.value);P(Ct=>Ct?{...Ct,price_out:Le}:null)},placeholder:"默认: 0"})]})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"force_stream_mode",checked:I?.force_stream_mode||!1,onCheckedChange:ge=>P(Le=>Le?{...Le,force_stream_mode:ge}:null)}),o.jsx(de,{htmlFor:"force_stream_mode",className:"cursor-pointer",children:"强制流式输出模式"})]})]}),o.jsxs(bs,{children:[o.jsx(he,{variant:"outline",onClick:()=>M(!1),"data-tour":"model-cancel-button",children:"取消"}),o.jsx(he,{onClick:ot,"data-tour":"model-save-button",children:"保存"})]})]})}),o.jsx(Dn,{open:U,onOpenChange:ee,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除模型 "',z!==null?t[z]?.name:"",'" 吗? 此操作无法撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:pt,children:"删除"})]})]})}),o.jsx(Dn,{open:R,onOpenChange:ie,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认批量删除"}),o.jsxs(_n,{children:["确定要删除选中的 ",J.size," 个模型吗? 此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:vr,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),T&&o.jsx(Wj,{onRestartComplete:rt,onRestartFailed:tn})]})})}function Fa({title:t,description:e,taskConfig:n,modelNames:r,onChange:s,hideTemperature:i=!1,hideMaxTokens:a=!1,dataTour:l}){const c=d=>{s("model_list",d)};return o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"font-semibold text-base sm:text-lg",children:t}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:e})]}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2","data-tour":l,children:[o.jsx(de,{children:"模型列表"}),o.jsx(Sve,{options:r.map(d=>({label:d,value:d})),selected:n.model_list||[],onChange:c,placeholder:"选择模型...",emptyText:"暂无可用模型"})]}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[!i&&o.jsxs("div",{className:"grid gap-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(de,{children:"温度"}),o.jsx(ze,{type:"number",step:"0.1",min:"0",max:"1",value:n.temperature??.3,onChange:d=>{const h=parseFloat(d.target.value);!isNaN(h)&&h>=0&&h<=1&&s("temperature",h)},className:"w-20 h-8 text-sm"})]}),o.jsx(Ip,{value:[n.temperature??.3],onValueChange:d=>s("temperature",d[0]),min:0,max:1,step:.1,className:"w-full"})]}),!a&&o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"最大 Token"}),o.jsx(ze,{type:"number",step:"1",min:"1",value:n.max_tokens??1024,onChange:d=>s("max_tokens",parseInt(d.target.value))})]})]})]})]})}const Eb="/api/webui/config";async function jve(){const e=await(await St(`${Eb}/adapter-config/path`)).json();return!e.success||!e.path?null:{path:e.path,lastModified:e.lastModified}}async function cA(t){const n=await(await St(`${Eb}/adapter-config/path`,{method:"POST",headers:Dt(),body:JSON.stringify({path:t})})).json();if(!n.success)throw new Error(n.message||"保存路径失败")}async function uA(t){const n=await(await St(`${Eb}/adapter-config?path=${encodeURIComponent(t)}`)).json();if(!n.success)throw new Error("读取配置文件失败");return n.content}async function dA(t,e){const r=await(await St(`${Eb}/adapter-config`,{method:"POST",headers:Dt(),body:JSON.stringify({path:t,content:e})})).json();if(!r.success)throw new Error(r.message||"保存配置失败")}const Fi={inner:{version:"0.1.2"},nickname:{nickname:""},napcat_server:{host:"localhost",port:8095,token:"",heartbeat_interval:30},maibot_server:{host:"localhost",port:8e3},chat:{group_list_type:"whitelist",group_list:[],private_list_type:"whitelist",private_list:[],ban_user_id:[],ban_qq_bot:!1,enable_poke:!0},voice:{use_tts:!1},debug:{level:"INFO"}},wS={oneclick:{name:"一键包",description:"使用一键包部署的适配器配置",path:"../MaiBot-Napcat-Adapter/config.toml",icon:Uh},docker:{name:"Docker",description:"Docker Compose 部署的适配器配置",path:"/MaiMBot/adapters-config/config.toml",icon:zee}};function Nve(){const[t,e]=b.useState("upload"),[n,r]=b.useState(null),[s,i]=b.useState(""),[a,l]=b.useState(""),[c,d]=b.useState("oneclick"),[h,m]=b.useState(""),[g,x]=b.useState(!1),[y,w]=b.useState(!1),[S,k]=b.useState(!1),[j,N]=b.useState(!1),[T,E]=b.useState(null),_=b.useRef(null),{toast:M}=fs(),I=b.useRef(null),P=K=>{if(!K.trim())return{valid:!1,error:"路径不能为空"};if(!K.toLowerCase().endsWith(".toml"))return{valid:!1,error:"文件必须是 .toml 格式"};const se=/^([a-zA-Z]:\\|\\\\[^\\]+\\[^\\]+\\).+\.toml$/i,re=/^(\/|~\/).+\.toml$/i,oe=/^(\.{1,2}[\\/]|[^:\\/]).+\.toml$/i,Te=se.test(K),We=re.test(K),Ye=oe.test(K);return!Te&&!We&&!Ye?{valid:!1,error:"路径格式错误"}:/[<>"|?*\x00-\x1F]/.test(K)?{valid:!1,error:"路径包含非法字符"}:{valid:!0,error:""}},L=K=>{if(l(K),K.trim()){const se=P(K);m(se.error)}else m("")},H=b.useCallback(async K=>{const se=wS[K];w(!0);try{const re=await uA(se.path),oe=W(re);r(oe),d(K),l(se.path),await cA(se.path),M({title:"加载成功",description:`已从${se.name}预设加载配置`})}catch(re){console.error("加载预设配置失败:",re),M({title:"加载失败",description:re instanceof Error?re.message:"无法读取预设配置文件",variant:"destructive"})}finally{w(!1)}},[M]),U=b.useCallback(async K=>{const se=P(K);if(!se.valid){m(se.error),M({title:"路径无效",description:se.error,variant:"destructive"});return}m(""),w(!0);try{const re=await uA(K),oe=W(re);r(oe),l(K),await cA(K),M({title:"加载成功",description:"已从配置文件加载"})}catch(re){console.error("加载配置失败:",re),M({title:"加载失败",description:re instanceof Error?re.message:"无法读取配置文件",variant:"destructive"})}finally{w(!1)}},[M]);b.useEffect(()=>{(async()=>{try{const se=await jve();if(se&&se.path){l(se.path);const re=Object.entries(wS).find(([,oe])=>oe.path===se.path);re?(e("preset"),d(re[0]),await H(re[0])):(e("path"),await U(se.path))}}catch(se){console.error("加载保存的路径失败:",se)}})()},[U,H]);const ee=b.useCallback(K=>{t!=="path"&&t!=="preset"||!a||(I.current&&clearTimeout(I.current),I.current=setTimeout(async()=>{x(!0);try{const se=q(K);await dA(a,se),M({title:"自动保存成功",description:"配置已保存到文件"})}catch(se){console.error("自动保存失败:",se),M({title:"自动保存失败",description:se instanceof Error?se.message:"保存配置失败",variant:"destructive"})}finally{x(!1)}},1e3))},[t,a,M]),z=async()=>{if(!n||!a)return;const K=P(a);if(!K.valid){M({title:"保存失败",description:K.error,variant:"destructive"});return}x(!0);try{const se=q(n);await dA(a,se),M({title:"保存成功",description:"配置已保存到文件"})}catch(se){console.error("保存失败:",se),M({title:"保存失败",description:se instanceof Error?se.message:"保存配置失败",variant:"destructive"})}finally{x(!1)}},Q=async()=>{a&&await U(a)},B=K=>{if(K!==t){if(n){E(K),k(!0);return}X(K)}},X=K=>{r(null),i(""),m(""),e(K),K==="preset"&&H("oneclick"),M({title:"已切换模式",description:{upload:"现在可以上传配置文件",path:"现在可以指定配置文件路径",preset:"现在可以使用预设配置"}[K]})},J=()=>{T&&(X(T),E(null)),k(!1)},G=()=>{if(n){N(!0);return}R()},R=()=>{l(""),r(null),m(""),M({title:"已清空",description:"路径和配置已清空"})},ie=()=>{R(),N(!1)},W=K=>{const se=JSON.parse(JSON.stringify(Fi)),re=K.split(` +`);let oe="";for(const Te of re){const We=Te.trim();if(!We||We.startsWith("#"))continue;const Ye=We.match(/^\[(\w+)\]/);if(Ye){oe=Ye[1];continue}const Je=We.match(/^(\w+)\s*=\s*(.+)$/);if(Je&&oe){const[,Oe,Ve]=Je;let Ue=Ve.trim();const He=Ue.match(/^("[^"]*")/);if(He)Ue=He[1];else{const xt=Ue.indexOf("#");xt!==-1&&(Ue=Ue.substring(0,xt).trim())}let Ot;if(Ue==="true")Ot=!0;else if(Ue==="false")Ot=!1;else if(Ue.startsWith("[")&&Ue.endsWith("]")){const xt=Ue.slice(1,-1).trim();if(xt){const kn=xt.split(",").map(Yt=>{const _t=Yt.trim();return isNaN(Number(_t))?_t.replace(/"/g,""):Number(_t)}),It=typeof kn[0];Ot=kn.every(Yt=>typeof Yt===It)?kn:kn.filter(Yt=>typeof Yt=="number")}else Ot=[]}else Ue.startsWith('"')&&Ue.endsWith('"')?Ot=Ue.slice(1,-1):isNaN(Number(Ue))?Ot=Ue.replace(/"/g,""):Ot=Number(Ue);if(oe in se){const xt=se[oe];xt[Oe]=Ot}}}return se},q=K=>{const se=[],re=(oe,Te)=>oe===""||oe===null||oe===void 0?Te:oe;return se.push("[inner]"),se.push(`version = "${re(K.inner.version,Fi.inner.version)}" # 版本号`),se.push("# 请勿修改版本号,除非你知道自己在做什么"),se.push(""),se.push("[nickname] # 现在没用"),se.push(`nickname = "${re(K.nickname.nickname,Fi.nickname.nickname)}"`),se.push(""),se.push("[napcat_server] # Napcat连接的ws服务设置"),se.push(`host = "${re(K.napcat_server.host,Fi.napcat_server.host)}" # Napcat设定的主机地址`),se.push(`port = ${re(K.napcat_server.port||0,Fi.napcat_server.port)} # Napcat设定的端口`),se.push(`token = "${re(K.napcat_server.token,Fi.napcat_server.token)}" # Napcat设定的访问令牌,若无则留空`),se.push(`heartbeat_interval = ${re(K.napcat_server.heartbeat_interval||0,Fi.napcat_server.heartbeat_interval)} # 与Napcat设置的心跳相同(按秒计)`),se.push(""),se.push("[maibot_server] # 连接麦麦的ws服务设置"),se.push(`host = "${re(K.maibot_server.host,Fi.maibot_server.host)}" # 麦麦在.env文件中设置的主机地址,即HOST字段`),se.push(`port = ${re(K.maibot_server.port||0,Fi.maibot_server.port)} # 麦麦在.env文件中设置的端口,即PORT字段`),se.push(""),se.push("[chat] # 黑白名单功能"),se.push(`group_list_type = "${re(K.chat.group_list_type,Fi.chat.group_list_type)}" # 群组名单类型,可选为:whitelist, blacklist`),se.push(`group_list = [${K.chat.group_list.join(", ")}] # 群组名单`),se.push("# 当group_list_type为whitelist时,只有群组名单中的群组可以聊天"),se.push("# 当group_list_type为blacklist时,群组名单中的任何群组无法聊天"),se.push(`private_list_type = "${re(K.chat.private_list_type,Fi.chat.private_list_type)}" # 私聊名单类型,可选为:whitelist, blacklist`),se.push(`private_list = [${K.chat.private_list.join(", ")}] # 私聊名单`),se.push("# 当private_list_type为whitelist时,只有私聊名单中的用户可以聊天"),se.push("# 当private_list_type为blacklist时,私聊名单中的任何用户无法聊天"),se.push(`ban_user_id = [${K.chat.ban_user_id.join(", ")}] # 全局禁止名单(全局禁止名单中的用户无法进行任何聊天)`),se.push(`ban_qq_bot = ${K.chat.ban_qq_bot} # 是否屏蔽QQ官方机器人`),se.push(`enable_poke = ${K.chat.enable_poke} # 是否启用戳一戳功能`),se.push(""),se.push("[voice] # 发送语音设置"),se.push(`use_tts = ${K.voice.use_tts} # 是否使用tts语音(请确保你配置了tts并有对应的adapter)`),se.push(""),se.push("[debug]"),se.push(`level = "${re(K.debug.level,Fi.debug.level)}" # 日志等级(DEBUG, INFO, WARNING, ERROR, CRITICAL)`),se.join(` +`)},V=K=>{const se=K.target.files?.[0];if(!se)return;const re=new FileReader;re.onload=oe=>{try{const Te=oe.target?.result,We=W(Te);r(We),i(se.name),M({title:"上传成功",description:`已加载配置文件:${se.name}`})}catch(Te){console.error("解析配置文件失败:",Te),M({title:"解析失败",description:"配置文件格式错误,请检查文件内容",variant:"destructive"})}},re.readAsText(se)},te=()=>{if(!n)return;const K=q(n),se=new Blob([K],{type:"text/plain;charset=utf-8"}),re=URL.createObjectURL(se),oe=document.createElement("a");oe.href=re,oe.download=s||"config.toml",document.body.appendChild(oe),oe.click(),document.body.removeChild(oe),URL.revokeObjectURL(re),M({title:"下载成功",description:"配置文件已下载,请手动覆盖并重启适配器"})},ne=()=>{r(JSON.parse(JSON.stringify(Fi))),i("config.toml"),M({title:"已加载默认配置",description:"可以开始编辑配置"})};return o.jsx(wn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦适配器配置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的 QQ 适配器的配置文件"})]})}),o.jsxs("div",{className:"flex items-start gap-2 p-3 rounded-lg border border-amber-500/50 bg-amber-500/10 text-amber-700 dark:text-amber-400",children:[o.jsx(Vc,{className:"h-4 w-4 mt-0.5 flex-shrink-0"}),o.jsx("p",{className:"text-sm",children:"适配器配置保存之后使用 WebUI 的重启功能适配器并不会重启,需要手动重启适配器。"})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"工作模式"}),o.jsx(ts,{children:"选择配置文件的管理方式"})]}),o.jsxs(Gn,{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3 md:gap-4",children:[o.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${t==="preset"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>B("preset"),children:o.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[o.jsx(Uh,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"min-w-0",children:[o.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"预设模式"}),o.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"使用预设的部署配置"})]})]})}),o.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${t==="upload"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>B("upload"),children:o.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[o.jsx(m9,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"min-w-0",children:[o.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"上传文件模式"}),o.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"上传配置文件,编辑后下载并手动覆盖"})]})]})}),o.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${t==="path"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>B("path"),children:o.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[o.jsx(Iee,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"min-w-0",children:[o.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"指定路径模式"}),o.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"指定配置文件路径,自动加载和保存"})]})]})})]}),t==="preset"&&o.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[o.jsx(de,{className:"text-sm md:text-base",children:"选择部署方式"}),o.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:Object.entries(wS).map(([K,se])=>{const re=se.icon,oe=c===K;return o.jsx("div",{className:`border-2 rounded-lg p-3 cursor-pointer transition-all ${oe?"border-primary bg-primary/5":"border-muted hover:border-primary/50"}`,onClick:()=>{d(K),H(K)},children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(re,{className:"h-5 w-5 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"min-w-0 flex-1",children:[o.jsx("h4",{className:"font-semibold text-sm",children:se.name}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:se.description}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1 font-mono break-all",children:se.path})]})]})},K)})})]}),t==="path"&&o.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"config-path",className:"text-sm md:text-base",children:"配置文件路径"}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[o.jsxs("div",{className:"flex-1 space-y-1",children:[o.jsx(ze,{id:"config-path",value:a,onChange:K=>L(K.target.value),placeholder:"例: C:\\Adapter\\config.toml",className:`text-sm ${h?"border-destructive":""}`}),h&&o.jsx("p",{className:"text-xs text-destructive",children:h})]}),o.jsx(he,{onClick:()=>U(a),disabled:y||!a||!!h,className:"w-full sm:w-auto",children:y?o.jsxs(o.Fragment,{children:[o.jsx(Qs,{className:"h-4 w-4 animate-spin mr-2"}),o.jsx("span",{className:"sm:hidden",children:"加载中..."})]}):o.jsxs(o.Fragment,{children:[o.jsx("span",{className:"sm:hidden",children:"加载配置"}),o.jsx("span",{className:"hidden sm:inline",children:"加载"})]})})]})]}),o.jsxs("details",{className:"rounded-lg bg-muted/50 p-3 group",children:[o.jsxs("summary",{className:"text-xs font-medium cursor-pointer select-none list-none flex items-center justify-between",children:[o.jsx("span",{children:"路径格式说明"}),o.jsx("svg",{className:"h-4 w-4 transition-transform group-open:rotate-180",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:o.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),o.jsxs("div",{className:"mt-2 space-y-2 text-xs text-muted-foreground",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx("div",{className:"flex items-center gap-2",children:o.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Windows"})}),o.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[o.jsx("div",{children:"C:\\Adapter\\config.toml"}),o.jsx("div",{className:"hidden sm:block",children:"D:\\MaiBot\\adapter\\config.toml"}),o.jsx("div",{className:"hidden sm:block",children:"\\\\server\\share\\config.toml"})]})]}),o.jsxs("div",{className:"space-y-1",children:[o.jsx("div",{className:"flex items-center gap-2",children:o.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Linux"})}),o.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[o.jsx("div",{children:"/opt/adapter/config.toml"}),o.jsx("div",{className:"hidden sm:block",children:"/home/user/adapter/config.toml"}),o.jsx("div",{className:"hidden sm:block",children:"~/adapter/config.toml"})]})]}),o.jsx("p",{className:"pt-1 border-t text-[10px] md:text-xs",children:"💡 配置会自动保存到指定文件,修改后 1 秒自动保存"})]})]})]})]})]}),o.jsxs(ga,{children:[o.jsx(Oa,{className:"h-4 w-4"}),o.jsx(xa,{children:t==="preset"?o.jsxs(o.Fragment,{children:[o.jsx("strong",{children:"预设模式:"}),"选择预设的部署方式,配置会自动加载,修改后 1 秒自动保存",g&&" (正在保存...)"]}):t==="upload"?o.jsxs(o.Fragment,{children:[o.jsx("strong",{children:"上传文件模式:"}),"上传配置文件 → 在线编辑 → 下载文件 → 手动覆盖并重启适配器"]}):o.jsxs(o.Fragment,{children:[o.jsx("strong",{children:"指定路径模式:"}),"指定配置文件路径后,配置会自动加载,修改后 1 秒自动保存",g&&" (正在保存...)"]})})]}),t==="upload"&&!n&&o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 w-full",children:[o.jsx("input",{ref:_,type:"file",accept:".toml",className:"hidden",onChange:V}),o.jsxs(he,{onClick:()=>_.current?.click(),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[o.jsx(m9,{className:"mr-2 h-4 w-4"}),"上传配置"]}),o.jsxs(he,{onClick:ne,size:"sm",className:"w-full sm:w-auto",children:[o.jsx(Pl,{className:"mr-2 h-4 w-4"}),"使用默认配置"]})]}),t==="upload"&&n&&o.jsx("div",{className:"flex gap-2",children:o.jsxs(he,{onClick:te,size:"sm",className:"w-full sm:w-auto",children:[o.jsx(Ku,{className:"mr-2 h-4 w-4"}),"下载配置"]})}),(t==="preset"||t==="path")&&n&&o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[o.jsxs(he,{onClick:z,size:"sm",disabled:g||!!h,className:"w-full sm:w-auto",children:[o.jsx($y,{className:"mr-2 h-4 w-4"}),g?"保存中...":"立即保存"]}),o.jsxs(he,{onClick:Q,size:"sm",variant:"outline",disabled:y,className:"w-full sm:w-auto",children:[o.jsx(Qs,{className:`mr-2 h-4 w-4 ${y?"animate-spin":""}`}),"刷新"]}),t==="path"&&o.jsxs(he,{onClick:G,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[o.jsx(Sn,{className:"mr-2 h-4 w-4"}),"清空路径"]})]}),n?o.jsxs(ja,{defaultValue:"napcat",className:"w-full",children:[o.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:o.jsxs(Wi,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5",children:[o.jsxs(Lt,{value:"napcat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[o.jsx("span",{className:"hidden sm:inline",children:"Napcat 连接"}),o.jsx("span",{className:"sm:hidden",children:"Napcat"})]}),o.jsxs(Lt,{value:"maibot",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[o.jsx("span",{className:"hidden sm:inline",children:"麦麦连接"}),o.jsx("span",{className:"sm:hidden",children:"麦麦"})]}),o.jsxs(Lt,{value:"chat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[o.jsx("span",{className:"hidden sm:inline",children:"聊天控制"}),o.jsx("span",{className:"sm:hidden",children:"聊天"})]}),o.jsxs(Lt,{value:"voice",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[o.jsx("span",{className:"hidden sm:inline",children:"语音设置"}),o.jsx("span",{className:"sm:hidden",children:"语音"})]}),o.jsx(Lt,{value:"debug",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:"调试"})]})}),o.jsx(un,{value:"napcat",className:"space-y-4",children:o.jsx(Cve,{config:n,onChange:K=>{r(K),ee(K)}})}),o.jsx(un,{value:"maibot",className:"space-y-4",children:o.jsx(Tve,{config:n,onChange:K=>{r(K),ee(K)}})}),o.jsx(un,{value:"chat",className:"space-y-4",children:o.jsx(Eve,{config:n,onChange:K=>{r(K),ee(K)}})}),o.jsx(un,{value:"voice",className:"space-y-4",children:o.jsx(_ve,{config:n,onChange:K=>{r(K),ee(K)}})}),o.jsx(un,{value:"debug",className:"space-y-4",children:o.jsx(Mve,{config:n,onChange:K=>{r(K),ee(K)}})})]}):o.jsx("div",{className:"rounded-lg border bg-card p-6 md:p-12",children:o.jsxs("div",{className:"text-center space-y-3 md:space-y-4",children:[o.jsx(Pl,{className:"h-12 w-12 md:h-16 md:w-16 mx-auto text-muted-foreground"}),o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold",children:"尚未加载配置"}),o.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-2 px-4",children:t==="preset"?"请选择预设的部署方式":t==="upload"?"请上传现有配置文件,或使用默认配置开始编辑":"请指定配置文件路径并点击加载按钮"})]})]})}),o.jsx(Dn,{open:S,onOpenChange:k,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认切换模式"}),o.jsxs(_n,{children:["切换模式将清空当前配置,确定要继续吗?",o.jsx("br",{}),o.jsx("span",{className:"text-destructive font-medium",children:"请确保已保存重要配置"})]})]}),o.jsxs(Tn,{children:[o.jsx(An,{onClick:()=>{k(!1),E(null)},children:"取消"}),o.jsx(Mn,{onClick:J,children:"确认切换"})]})]})}),o.jsx(Dn,{open:j,onOpenChange:N,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认清空路径"}),o.jsxs(_n,{children:["清空路径将清除当前配置,确定要继续吗?",o.jsx("br",{}),o.jsx("span",{className:"text-muted-foreground text-sm",children:"此操作不会删除配置文件,只是清除界面中的配置"})]})]}),o.jsxs(Tn,{children:[o.jsx(An,{onClick:()=>N(!1),children:"取消"}),o.jsx(Mn,{onClick:ie,className:"bg-destructive hover:bg-destructive/90",children:"确认清空"})]})]})})]})})}function Cve({config:t,onChange:e}){return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"Napcat WebSocket 服务设置"}),o.jsxs("div",{className:"grid gap-3 md:gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"napcat-host",className:"text-sm md:text-base",children:"主机地址"}),o.jsx(ze,{id:"napcat-host",value:t.napcat_server.host,onChange:n=>e({...t,napcat_server:{...t.napcat_server,host:n.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的主机地址"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"napcat-port",className:"text-sm md:text-base",children:"端口"}),o.jsx(ze,{id:"napcat-port",type:"number",value:t.napcat_server.port||"",onChange:n=>e({...t,napcat_server:{...t.napcat_server,port:n.target.value?parseInt(n.target.value):0}}),placeholder:"8095",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的端口(留空使用默认值 8095)"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"napcat-token",className:"text-sm md:text-base",children:"访问令牌(Token)"}),o.jsx(ze,{id:"napcat-token",type:"password",value:t.napcat_server.token,onChange:n=>e({...t,napcat_server:{...t.napcat_server,token:n.target.value}}),placeholder:"留空表示无需令牌",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的访问令牌,若无则留空"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"napcat-heartbeat",className:"text-sm md:text-base",children:"心跳间隔(秒)"}),o.jsx(ze,{id:"napcat-heartbeat",type:"number",value:t.napcat_server.heartbeat_interval||"",onChange:n=>e({...t,napcat_server:{...t.napcat_server,heartbeat_interval:n.target.value?parseInt(n.target.value):0}}),placeholder:"30",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"与 Napcat 设置的心跳间隔保持一致(留空使用默认值 30)"})]})]})]})})}function Tve({config:t,onChange:e}){return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"麦麦 WebSocket 服务设置"}),o.jsxs("div",{className:"grid gap-3 md:gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"maibot-host",className:"text-sm md:text-base",children:"主机地址"}),o.jsx(ze,{id:"maibot-host",value:t.maibot_server.host,onChange:n=>e({...t,maibot_server:{...t.maibot_server,host:n.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 HOST 字段"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"maibot-port",className:"text-sm md:text-base",children:"端口"}),o.jsx(ze,{id:"maibot-port",type:"number",value:t.maibot_server.port||"",onChange:n=>e({...t,maibot_server:{...t.maibot_server,port:n.target.value?parseInt(n.target.value):0}}),placeholder:"8000",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 PORT 字段(留空使用默认值 8000)"})]})]})]})})}function Eve({config:t,onChange:e}){const n=i=>{const a={...t};i==="group"?a.chat.group_list=[...a.chat.group_list,0]:i==="private"?a.chat.private_list=[...a.chat.private_list,0]:a.chat.ban_user_id=[...a.chat.ban_user_id,0],e(a)},r=(i,a)=>{const l={...t};i==="group"?l.chat.group_list=l.chat.group_list.filter((c,d)=>d!==a):i==="private"?l.chat.private_list=l.chat.private_list.filter((c,d)=>d!==a):l.chat.ban_user_id=l.chat.ban_user_id.filter((c,d)=>d!==a),e(l)},s=(i,a,l)=>{const c={...t};i==="group"?c.chat.group_list[a]=l:i==="private"?c.chat.private_list[a]=l:c.chat.ban_user_id[a]=l,e(c)};return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"聊天黑白名单功能"}),o.jsxs("div",{className:"grid gap-4 md:gap-6",children:[o.jsxs("div",{className:"space-y-3 md:space-y-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-sm md:text-base",children:"群组名单类型"}),o.jsxs(Vt,{value:t.chat.group_list_type,onValueChange:i=>e({...t,chat:{...t.chat,group_list_type:i}}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),o.jsx(De,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[o.jsx(de,{className:"text-sm md:text-base",children:"群组列表"}),o.jsxs(he,{onClick:()=>n("group"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[o.jsx(Pl,{className:"mr-1 h-4 w-4"}),"添加群号"]})]}),t.chat.group_list.map((i,a)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{type:"number",value:i,onChange:l=>s("group",a,parseInt(l.target.value)||0),placeholder:"输入群号",className:"text-sm md:text-base"}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(he,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除群号 ",i," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>r("group",a),children:"删除"})]})]})]})]},a)),t.chat.group_list.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无群组"})]})]}),o.jsxs("div",{className:"space-y-3 md:space-y-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-sm md:text-base",children:"私聊名单类型"}),o.jsxs(Vt,{value:t.chat.private_list_type,onValueChange:i=>e({...t,chat:{...t.chat,private_list_type:i}}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),o.jsx(De,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[o.jsx(de,{className:"text-sm md:text-base",children:"私聊列表"}),o.jsxs(he,{onClick:()=>n("private"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[o.jsx(Pl,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),t.chat.private_list.map((i,a)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{type:"number",value:i,onChange:l=>s("private",a,parseInt(l.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(he,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除用户 ",i," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>r("private",a),children:"删除"})]})]})]})]},a)),t.chat.private_list.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无用户"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[o.jsxs("div",{children:[o.jsx(de,{className:"text-sm md:text-base",children:"全局禁止名单"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"名单中的用户无法进行任何聊天"})]}),o.jsxs(he,{onClick:()=>n("ban"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[o.jsx(Pl,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),t.chat.ban_user_id.map((i,a)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{type:"number",value:i,onChange:l=>s("ban",a,parseInt(l.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(he,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要从全局禁止名单中删除用户 ",i," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>r("ban",a),children:"删除"})]})]})]})]},a)),t.chat.ban_user_id.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无禁止用户"})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(de,{className:"text-sm md:text-base",children:"屏蔽QQ官方机器人"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否屏蔽来自QQ官方机器人的消息"})]}),o.jsx(Bt,{checked:t.chat.ban_qq_bot,onCheckedChange:i=>e({...t,chat:{...t.chat,ban_qq_bot:i}})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(de,{className:"text-sm md:text-base",children:"启用戳一戳功能"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否响应戳一戳消息"})]}),o.jsx(Bt,{checked:t.chat.enable_poke,onCheckedChange:i=>e({...t,chat:{...t.chat,enable_poke:i}})})]})]})]})})}function _ve({config:t,onChange:e}){return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"发送语音设置"}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(de,{className:"text-sm md:text-base",children:"使用 TTS 语音"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"请确保已配置 TTS 并有对应的适配器"})]}),o.jsx(Bt,{checked:t.voice.use_tts,onCheckedChange:n=>e({...t,voice:{use_tts:n}})})]})]})})}function Mve({config:t,onChange:e}){return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"调试设置"}),o.jsx("div",{className:"grid gap-3 md:gap-4",children:o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-sm md:text-base",children:"日志等级"}),o.jsxs(Vt,{value:t.debug.level,onValueChange:n=>e({...t,debug:{level:n}}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"DEBUG",children:"DEBUG(调试)"}),o.jsx(De,{value:"INFO",children:"INFO(信息)"}),o.jsx(De,{value:"WARNING",children:"WARNING(警告)"}),o.jsx(De,{value:"ERROR",children:"ERROR(错误)"}),o.jsx(De,{value:"CRITICAL",children:"CRITICAL(严重)"})]})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"设置适配器的日志输出等级"})]})})]})})}function hA(t){const e=[],n=String(t||"");let r=n.indexOf(","),s=0,i=!1;for(;!i;){r===-1&&(r=n.length,i=!0);const a=n.slice(s,r).trim();(a||!i)&&e.push(a),s=r+1,r=n.indexOf(",",s)}return e}function Ave(t,e){const n={};return(t[t.length-1]===""?[...t,""]:t).join((n.padRight?" ":"")+","+(n.padLeft===!1?"":" ")).trim()}const Rve=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,Dve=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,Pve={};function fA(t,e){return(Pve.jsx?Dve:Rve).test(t)}const zve=/[ \t\n\f\r]/g;function Ive(t){return typeof t=="object"?t.type==="text"?mA(t.value):!1:mA(t)}function mA(t){return t.replace(zve,"")===""}class lg{constructor(e,n,r){this.normal=n,this.property=e,r&&(this.space=r)}}lg.prototype.normal={};lg.prototype.property={};lg.prototype.space=void 0;function PQ(t,e){const n={},r={};for(const s of t)Object.assign(n,s.property),Object.assign(r,s.normal);return new lg(n,r,e)}function dp(t){return t.toLowerCase()}class Ei{constructor(e,n){this.attribute=n,this.property=e}}Ei.prototype.attribute="";Ei.prototype.booleanish=!1;Ei.prototype.boolean=!1;Ei.prototype.commaOrSpaceSeparated=!1;Ei.prototype.commaSeparated=!1;Ei.prototype.defined=!1;Ei.prototype.mustUseProperty=!1;Ei.prototype.number=!1;Ei.prototype.overloadedBoolean=!1;Ei.prototype.property="";Ei.prototype.spaceSeparated=!1;Ei.prototype.space=void 0;let Lve=0;const Jt=wd(),Jr=wd(),SO=wd(),Qe=wd(),ur=wd(),qh=wd(),qi=wd();function wd(){return 2**++Lve}const kO=Object.freeze(Object.defineProperty({__proto__:null,boolean:Jt,booleanish:Jr,commaOrSpaceSeparated:qi,commaSeparated:qh,number:Qe,overloadedBoolean:SO,spaceSeparated:ur},Symbol.toStringTag,{value:"Module"})),SS=Object.keys(kO);class nN extends Ei{constructor(e,n,r,s){let i=-1;if(super(e,n),pA(this,"space",s),typeof r=="number")for(;++i4&&n.slice(0,4)==="data"&&Hve.test(e)){if(e.charAt(4)==="-"){const i=e.slice(5).replace(gA,Vve);r="data"+i.charAt(0).toUpperCase()+i.slice(1)}else{const i=e.slice(4);if(!gA.test(i)){let a=i.replace($ve,Qve);a.charAt(0)!=="-"&&(a="-"+a),e="data"+a}}s=nN}return new s(r,e)}function Qve(t){return"-"+t.toLowerCase()}function Vve(t){return t.charAt(1).toUpperCase()}const HQ=PQ([zQ,Bve,BQ,FQ,qQ],"html"),_b=PQ([zQ,Fve,BQ,FQ,qQ],"svg");function xA(t){const e=String(t||"").trim();return e?e.split(/[ \t\n\r\f]+/g):[]}function Uve(t){return t.join(" ").trim()}var oh={},kS,vA;function Wve(){if(vA)return kS;vA=1;var t=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,e=/\n/g,n=/^\s*/,r=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,s=/^:\s*/,i=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,a=/^[;\s]*/,l=/^\s+|\s+$/g,c=` +`,d="/",h="*",m="",g="comment",x="declaration";function y(S,k){if(typeof S!="string")throw new TypeError("First argument must be a string");if(!S)return[];k=k||{};var j=1,N=1;function T(z){var Q=z.match(e);Q&&(j+=Q.length);var B=z.lastIndexOf(c);N=~B?z.length-B:N+z.length}function E(){var z={line:j,column:N};return function(Q){return Q.position=new _(z),P(),Q}}function _(z){this.start=z,this.end={line:j,column:N},this.source=k.source}_.prototype.content=S;function M(z){var Q=new Error(k.source+":"+j+":"+N+": "+z);if(Q.reason=z,Q.filename=k.source,Q.line=j,Q.column=N,Q.source=S,!k.silent)throw Q}function I(z){var Q=z.exec(S);if(Q){var B=Q[0];return T(B),S=S.slice(B.length),Q}}function P(){I(n)}function L(z){var Q;for(z=z||[];Q=H();)Q!==!1&&z.push(Q);return z}function H(){var z=E();if(!(d!=S.charAt(0)||h!=S.charAt(1))){for(var Q=2;m!=S.charAt(Q)&&(h!=S.charAt(Q)||d!=S.charAt(Q+1));)++Q;if(Q+=2,m===S.charAt(Q-1))return M("End of comment missing");var B=S.slice(2,Q-2);return N+=2,T(B),S=S.slice(Q),N+=2,z({type:g,comment:B})}}function U(){var z=E(),Q=I(r);if(Q){if(H(),!I(s))return M("property missing ':'");var B=I(i),X=z({type:x,property:w(Q[0].replace(t,m)),value:B?w(B[0].replace(t,m)):m});return I(a),X}}function ee(){var z=[];L(z);for(var Q;Q=U();)Q!==!1&&(z.push(Q),L(z));return z}return P(),ee()}function w(S){return S?S.replace(l,m):m}return kS=y,kS}var yA;function Gve(){if(yA)return oh;yA=1;var t=oh&&oh.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(oh,"__esModule",{value:!0}),oh.default=n;const e=t(Wve());function n(r,s){let i=null;if(!r||typeof r!="string")return i;const a=(0,e.default)(r),l=typeof s=="function";return a.forEach(c=>{if(c.type!=="declaration")return;const{property:d,value:h}=c;l?s(d,h,c):h&&(i=i||{},i[d]=h)}),i}return oh}var Gm={},bA;function Xve(){if(bA)return Gm;bA=1,Object.defineProperty(Gm,"__esModule",{value:!0}),Gm.camelCase=void 0;var t=/^--[a-zA-Z0-9_-]+$/,e=/-([a-z])/g,n=/^[^-]+$/,r=/^-(webkit|moz|ms|o|khtml)-/,s=/^-(ms)-/,i=function(d){return!d||n.test(d)||t.test(d)},a=function(d,h){return h.toUpperCase()},l=function(d,h){return"".concat(h,"-")},c=function(d,h){return h===void 0&&(h={}),i(d)?d:(d=d.toLowerCase(),h.reactCompat?d=d.replace(s,l):d=d.replace(r,l),d.replace(e,a))};return Gm.camelCase=c,Gm}var Xm,wA;function Yve(){if(wA)return Xm;wA=1;var t=Xm&&Xm.__importDefault||function(s){return s&&s.__esModule?s:{default:s}},e=t(Gve()),n=Xve();function r(s,i){var a={};return!s||typeof s!="string"||(0,e.default)(s,function(l,c){l&&c&&(a[(0,n.camelCase)(l,i)]=c)}),a}return r.default=r,Xm=r,Xm}var Kve=Yve();const Zve=gd(Kve),QQ=VQ("end"),rN=VQ("start");function VQ(t){return e;function e(n){const r=n&&n.position&&n.position[t]||{};if(typeof r.line=="number"&&r.line>0&&typeof r.column=="number"&&r.column>0)return{line:r.line,column:r.column,offset:typeof r.offset=="number"&&r.offset>-1?r.offset:void 0}}}function Jve(t){const e=rN(t),n=QQ(t);if(e&&n)return{start:e,end:n}}function C0(t){return!t||typeof t!="object"?"":"position"in t||"type"in t?SA(t.position):"start"in t||"end"in t?SA(t):"line"in t||"column"in t?OO(t):""}function OO(t){return kA(t&&t.line)+":"+kA(t&&t.column)}function SA(t){return OO(t&&t.start)+"-"+OO(t&&t.end)}function kA(t){return t&&typeof t=="number"?t:1}class Ws extends Error{constructor(e,n,r){super(),typeof n=="string"&&(r=n,n=void 0);let s="",i={},a=!1;if(n&&("line"in n&&"column"in n?i={place:n}:"start"in n&&"end"in n?i={place:n}:"type"in n?i={ancestors:[n],place:n.position}:i={...n}),typeof e=="string"?s=e:!i.cause&&e&&(a=!0,s=e.message,i.cause=e),!i.ruleId&&!i.source&&typeof r=="string"){const c=r.indexOf(":");c===-1?i.ruleId=r:(i.source=r.slice(0,c),i.ruleId=r.slice(c+1))}if(!i.place&&i.ancestors&&i.ancestors){const c=i.ancestors[i.ancestors.length-1];c&&(i.place=c.position)}const l=i.place&&"start"in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=l?l.column:void 0,this.fatal=void 0,this.file="",this.message=s,this.line=l?l.line:void 0,this.name=C0(i.place)||"1:1",this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=a&&i.cause&&typeof i.cause.stack=="string"?i.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}Ws.prototype.file="";Ws.prototype.name="";Ws.prototype.reason="";Ws.prototype.message="";Ws.prototype.stack="";Ws.prototype.column=void 0;Ws.prototype.line=void 0;Ws.prototype.ancestors=void 0;Ws.prototype.cause=void 0;Ws.prototype.fatal=void 0;Ws.prototype.place=void 0;Ws.prototype.ruleId=void 0;Ws.prototype.source=void 0;const sN={}.hasOwnProperty,eye=new Map,tye=/[A-Z]/g,nye=new Set(["table","tbody","thead","tfoot","tr"]),rye=new Set(["td","th"]),UQ="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function sye(t,e){if(!e||e.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const n=e.filePath||void 0;let r;if(e.development){if(typeof e.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");r=hye(n,e.jsxDEV)}else{if(typeof e.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof e.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");r=dye(n,e.jsx,e.jsxs)}const s={Fragment:e.Fragment,ancestors:[],components:e.components||{},create:r,elementAttributeNameCase:e.elementAttributeNameCase||"react",evaluater:e.createEvaluater?e.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:e.ignoreInvalidStyle||!1,passKeys:e.passKeys!==!1,passNode:e.passNode||!1,schema:e.space==="svg"?_b:HQ,stylePropertyNameCase:e.stylePropertyNameCase||"dom",tableCellAlignToStyle:e.tableCellAlignToStyle!==!1},i=WQ(s,t,void 0);return i&&typeof i!="string"?i:s.create(t,s.Fragment,{children:i||void 0},void 0)}function WQ(t,e,n){if(e.type==="element")return iye(t,e,n);if(e.type==="mdxFlowExpression"||e.type==="mdxTextExpression")return aye(t,e);if(e.type==="mdxJsxFlowElement"||e.type==="mdxJsxTextElement")return lye(t,e,n);if(e.type==="mdxjsEsm")return oye(t,e);if(e.type==="root")return cye(t,e,n);if(e.type==="text")return uye(t,e)}function iye(t,e,n){const r=t.schema;let s=r;e.tagName.toLowerCase()==="svg"&&r.space==="html"&&(s=_b,t.schema=s),t.ancestors.push(e);const i=XQ(t,e.tagName,!1),a=fye(t,e);let l=aN(t,e);return nye.has(e.tagName)&&(l=l.filter(function(c){return typeof c=="string"?!Ive(c):!0})),GQ(t,a,i,e),iN(a,l),t.ancestors.pop(),t.schema=r,t.create(e,i,a,n)}function aye(t,e){if(e.data&&e.data.estree&&t.evaluater){const r=e.data.estree.body[0];return r.type,t.evaluater.evaluateExpression(r.expression)}hp(t,e.position)}function oye(t,e){if(e.data&&e.data.estree&&t.evaluater)return t.evaluater.evaluateProgram(e.data.estree);hp(t,e.position)}function lye(t,e,n){const r=t.schema;let s=r;e.name==="svg"&&r.space==="html"&&(s=_b,t.schema=s),t.ancestors.push(e);const i=e.name===null?t.Fragment:XQ(t,e.name,!0),a=mye(t,e),l=aN(t,e);return GQ(t,a,i,e),iN(a,l),t.ancestors.pop(),t.schema=r,t.create(e,i,a,n)}function cye(t,e,n){const r={};return iN(r,aN(t,e)),t.create(e,t.Fragment,r,n)}function uye(t,e){return e.value}function GQ(t,e,n,r){typeof n!="string"&&n!==t.Fragment&&t.passNode&&(e.node=r)}function iN(t,e){if(e.length>0){const n=e.length>1?e:e[0];n&&(t.children=n)}}function dye(t,e,n){return r;function r(s,i,a,l){const d=Array.isArray(a.children)?n:e;return l?d(i,a,l):d(i,a)}}function hye(t,e){return n;function n(r,s,i,a){const l=Array.isArray(i.children),c=rN(r);return e(s,i,a,l,{columnNumber:c?c.column-1:void 0,fileName:t,lineNumber:c?c.line:void 0},void 0)}}function fye(t,e){const n={};let r,s;for(s in e.properties)if(s!=="children"&&sN.call(e.properties,s)){const i=pye(t,s,e.properties[s]);if(i){const[a,l]=i;t.tableCellAlignToStyle&&a==="align"&&typeof l=="string"&&rye.has(e.tagName)?r=l:n[a]=l}}if(r){const i=n.style||(n.style={});i[t.stylePropertyNameCase==="css"?"text-align":"textAlign"]=r}return n}function mye(t,e){const n={};for(const r of e.attributes)if(r.type==="mdxJsxExpressionAttribute")if(r.data&&r.data.estree&&t.evaluater){const i=r.data.estree.body[0];i.type;const a=i.expression;a.type;const l=a.properties[0];l.type,Object.assign(n,t.evaluater.evaluateExpression(l.argument))}else hp(t,e.position);else{const s=r.name;let i;if(r.value&&typeof r.value=="object")if(r.value.data&&r.value.data.estree&&t.evaluater){const l=r.value.data.estree.body[0];l.type,i=t.evaluater.evaluateExpression(l.expression)}else hp(t,e.position);else i=r.value===null?!0:r.value;n[s]=i}return n}function aN(t,e){const n=[];let r=-1;const s=t.passKeys?new Map:eye;for(;++rs?0:s+e:e=e>s?s:e,n=n>0?n:0,r.length<1e4)a=Array.from(r),a.unshift(e,n),t.splice(...a);else for(n&&t.splice(e,n);i0?(Gi(t,t.length,0,e),t):e}const NA={}.hasOwnProperty;function KQ(t){const e={};let n=-1;for(;++n13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)===65535||(n&65535)===65534||n>1114111?"�":String.fromCodePoint(n)}function Ga(t){return t.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const Zs=uu(/[A-Za-z]/),Vs=uu(/[\dA-Za-z]/),Oye=uu(/[#-'*+\--9=?A-Z^-~]/);function fy(t){return t!==null&&(t<32||t===127)}const jO=uu(/\d/),jye=uu(/[\dA-Fa-f]/),Nye=uu(/[!-/:-@[-`{-~]/);function bt(t){return t!==null&&t<-2}function or(t){return t!==null&&(t<0||t===32)}function dn(t){return t===-2||t===-1||t===32}const Mb=uu(new RegExp("\\p{P}|\\p{S}","u")),fd=uu(/\s/);function uu(t){return e;function e(n){return n!==null&&n>-1&&t.test(String.fromCharCode(n))}}function Lf(t){const e=[];let n=-1,r=0,s=0;for(;++n55295&&i<57344){const l=t.charCodeAt(n+1);i<56320&&l>56319&&l<57344?(a=String.fromCharCode(i,l),s=1):a="�"}else a=String.fromCharCode(i);a&&(e.push(t.slice(r,n),encodeURIComponent(a)),r=n+s+1,a=""),s&&(n+=s,s=0)}return e.join("")+t.slice(r)}function on(t,e,n,r){const s=r?r-1:Number.POSITIVE_INFINITY;let i=0;return a;function a(c){return dn(c)?(t.enter(n),l(c)):e(c)}function l(c){return dn(c)&&i++a))return;const M=e.events.length;let I=M,P,L;for(;I--;)if(e.events[I][0]==="exit"&&e.events[I][1].type==="chunkFlow"){if(P){L=e.events[I][1].end;break}P=!0}for(k(r),_=M;_N;){const E=n[T];e.containerState=E[1],E[0].exit.call(e,t)}n.length=N}function j(){s.write([null]),i=void 0,s=void 0,e.containerState._closeFlow=void 0}}function Mye(t,e,n){return on(t,t.attempt(this.parser.constructs.document,e,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function uf(t){if(t===null||or(t)||fd(t))return 1;if(Mb(t))return 2}function Ab(t,e,n){const r=[];let s=-1;for(;++s1&&t[n][1].end.offset-t[n][1].start.offset>1?2:1;const m={...t[r][1].end},g={...t[n][1].start};TA(m,-c),TA(g,c),a={type:c>1?"strongSequence":"emphasisSequence",start:m,end:{...t[r][1].end}},l={type:c>1?"strongSequence":"emphasisSequence",start:{...t[n][1].start},end:g},i={type:c>1?"strongText":"emphasisText",start:{...t[r][1].end},end:{...t[n][1].start}},s={type:c>1?"strong":"emphasis",start:{...a.start},end:{...l.end}},t[r][1].end={...a.start},t[n][1].start={...l.end},d=[],t[r][1].end.offset-t[r][1].start.offset&&(d=fa(d,[["enter",t[r][1],e],["exit",t[r][1],e]])),d=fa(d,[["enter",s,e],["enter",a,e],["exit",a,e],["enter",i,e]]),d=fa(d,Ab(e.parser.constructs.insideSpan.null,t.slice(r+1,n),e)),d=fa(d,[["exit",i,e],["enter",l,e],["exit",l,e],["exit",s,e]]),t[n][1].end.offset-t[n][1].start.offset?(h=2,d=fa(d,[["enter",t[n][1],e],["exit",t[n][1],e]])):h=0,Gi(t,r-1,n-r+3,d),n=r+d.length-h-2;break}}for(n=-1;++n0&&dn(_)?on(t,j,"linePrefix",i+1)(_):j(_)}function j(_){return _===null||bt(_)?t.check(EA,w,T)(_):(t.enter("codeFlowValue"),N(_))}function N(_){return _===null||bt(_)?(t.exit("codeFlowValue"),j(_)):(t.consume(_),N)}function T(_){return t.exit("codeFenced"),e(_)}function E(_,M,I){let P=0;return L;function L(Q){return _.enter("lineEnding"),_.consume(Q),_.exit("lineEnding"),H}function H(Q){return _.enter("codeFencedFence"),dn(Q)?on(_,U,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(Q):U(Q)}function U(Q){return Q===l?(_.enter("codeFencedFenceSequence"),ee(Q)):I(Q)}function ee(Q){return Q===l?(P++,_.consume(Q),ee):P>=a?(_.exit("codeFencedFenceSequence"),dn(Q)?on(_,z,"whitespace")(Q):z(Q)):I(Q)}function z(Q){return Q===null||bt(Q)?(_.exit("codeFencedFence"),M(Q)):I(Q)}}}function Hye(t,e,n){const r=this;return s;function s(a){return a===null?n(a):(t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),i)}function i(a){return r.parser.lazy[r.now().line]?n(a):e(a)}}const jS={name:"codeIndented",tokenize:Vye},Qye={partial:!0,tokenize:Uye};function Vye(t,e,n){const r=this;return s;function s(d){return t.enter("codeIndented"),on(t,i,"linePrefix",5)(d)}function i(d){const h=r.events[r.events.length-1];return h&&h[1].type==="linePrefix"&&h[2].sliceSerialize(h[1],!0).length>=4?a(d):n(d)}function a(d){return d===null?c(d):bt(d)?t.attempt(Qye,a,c)(d):(t.enter("codeFlowValue"),l(d))}function l(d){return d===null||bt(d)?(t.exit("codeFlowValue"),a(d)):(t.consume(d),l)}function c(d){return t.exit("codeIndented"),e(d)}}function Uye(t,e,n){const r=this;return s;function s(a){return r.parser.lazy[r.now().line]?n(a):bt(a)?(t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),s):on(t,i,"linePrefix",5)(a)}function i(a){const l=r.events[r.events.length-1];return l&&l[1].type==="linePrefix"&&l[2].sliceSerialize(l[1],!0).length>=4?e(a):bt(a)?s(a):n(a)}}const Wye={name:"codeText",previous:Xye,resolve:Gye,tokenize:Yye};function Gye(t){let e=t.length-4,n=3,r,s;if((t[n][1].type==="lineEnding"||t[n][1].type==="space")&&(t[e][1].type==="lineEnding"||t[e][1].type==="space")){for(r=n;++r=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return ethis.left.length?this.right.slice(this.right.length-r+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-r+this.left.length).reverse())}splice(e,n,r){const s=n||0;this.setCursor(Math.trunc(e));const i=this.right.splice(this.right.length-s,Number.POSITIVE_INFINITY);return r&&Ym(this.left,r),i.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(e){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(e)}pushMany(e){this.setCursor(Number.POSITIVE_INFINITY),Ym(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),Ym(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0))if(e=4?e(a):t.interrupt(r.parser.constructs.flow,n,e)(a)}}function rV(t,e,n,r,s,i,a,l,c){const d=c||Number.POSITIVE_INFINITY;let h=0;return m;function m(k){return k===60?(t.enter(r),t.enter(s),t.enter(i),t.consume(k),t.exit(i),g):k===null||k===32||k===41||fy(k)?n(k):(t.enter(r),t.enter(a),t.enter(l),t.enter("chunkString",{contentType:"string"}),w(k))}function g(k){return k===62?(t.enter(i),t.consume(k),t.exit(i),t.exit(s),t.exit(r),e):(t.enter(l),t.enter("chunkString",{contentType:"string"}),x(k))}function x(k){return k===62?(t.exit("chunkString"),t.exit(l),g(k)):k===null||k===60||bt(k)?n(k):(t.consume(k),k===92?y:x)}function y(k){return k===60||k===62||k===92?(t.consume(k),x):x(k)}function w(k){return!h&&(k===null||k===41||or(k))?(t.exit("chunkString"),t.exit(l),t.exit(a),t.exit(r),e(k)):h999||x===null||x===91||x===93&&!c||x===94&&!l&&"_hiddenFootnoteSupport"in a.parser.constructs?n(x):x===93?(t.exit(i),t.enter(s),t.consume(x),t.exit(s),t.exit(r),e):bt(x)?(t.enter("lineEnding"),t.consume(x),t.exit("lineEnding"),h):(t.enter("chunkString",{contentType:"string"}),m(x))}function m(x){return x===null||x===91||x===93||bt(x)||l++>999?(t.exit("chunkString"),h(x)):(t.consume(x),c||(c=!dn(x)),x===92?g:m)}function g(x){return x===91||x===92||x===93?(t.consume(x),l++,m):m(x)}}function iV(t,e,n,r,s,i){let a;return l;function l(g){return g===34||g===39||g===40?(t.enter(r),t.enter(s),t.consume(g),t.exit(s),a=g===40?41:g,c):n(g)}function c(g){return g===a?(t.enter(s),t.consume(g),t.exit(s),t.exit(r),e):(t.enter(i),d(g))}function d(g){return g===a?(t.exit(i),c(a)):g===null?n(g):bt(g)?(t.enter("lineEnding"),t.consume(g),t.exit("lineEnding"),on(t,d,"linePrefix")):(t.enter("chunkString",{contentType:"string"}),h(g))}function h(g){return g===a||g===null||bt(g)?(t.exit("chunkString"),d(g)):(t.consume(g),g===92?m:h)}function m(g){return g===a||g===92?(t.consume(g),h):h(g)}}function T0(t,e){let n;return r;function r(s){return bt(s)?(t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),n=!0,r):dn(s)?on(t,r,n?"linePrefix":"lineSuffix")(s):e(s)}}const sbe={name:"definition",tokenize:abe},ibe={partial:!0,tokenize:obe};function abe(t,e,n){const r=this;let s;return i;function i(x){return t.enter("definition"),a(x)}function a(x){return sV.call(r,t,l,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(x)}function l(x){return s=Ga(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),x===58?(t.enter("definitionMarker"),t.consume(x),t.exit("definitionMarker"),c):n(x)}function c(x){return or(x)?T0(t,d)(x):d(x)}function d(x){return rV(t,h,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(x)}function h(x){return t.attempt(ibe,m,m)(x)}function m(x){return dn(x)?on(t,g,"whitespace")(x):g(x)}function g(x){return x===null||bt(x)?(t.exit("definition"),r.parser.defined.push(s),e(x)):n(x)}}function obe(t,e,n){return r;function r(l){return or(l)?T0(t,s)(l):n(l)}function s(l){return iV(t,i,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(l)}function i(l){return dn(l)?on(t,a,"whitespace")(l):a(l)}function a(l){return l===null||bt(l)?e(l):n(l)}}const lbe={name:"hardBreakEscape",tokenize:cbe};function cbe(t,e,n){return r;function r(i){return t.enter("hardBreakEscape"),t.consume(i),s}function s(i){return bt(i)?(t.exit("hardBreakEscape"),e(i)):n(i)}}const ube={name:"headingAtx",resolve:dbe,tokenize:hbe};function dbe(t,e){let n=t.length-2,r=3,s,i;return t[r][1].type==="whitespace"&&(r+=2),n-2>r&&t[n][1].type==="whitespace"&&(n-=2),t[n][1].type==="atxHeadingSequence"&&(r===n-1||n-4>r&&t[n-2][1].type==="whitespace")&&(n-=r+1===n?2:4),n>r&&(s={type:"atxHeadingText",start:t[r][1].start,end:t[n][1].end},i={type:"chunkText",start:t[r][1].start,end:t[n][1].end,contentType:"text"},Gi(t,r,n-r+1,[["enter",s,e],["enter",i,e],["exit",i,e],["exit",s,e]])),t}function hbe(t,e,n){let r=0;return s;function s(h){return t.enter("atxHeading"),i(h)}function i(h){return t.enter("atxHeadingSequence"),a(h)}function a(h){return h===35&&r++<6?(t.consume(h),a):h===null||or(h)?(t.exit("atxHeadingSequence"),l(h)):n(h)}function l(h){return h===35?(t.enter("atxHeadingSequence"),c(h)):h===null||bt(h)?(t.exit("atxHeading"),e(h)):dn(h)?on(t,l,"whitespace")(h):(t.enter("atxHeadingText"),d(h))}function c(h){return h===35?(t.consume(h),c):(t.exit("atxHeadingSequence"),l(h))}function d(h){return h===null||h===35||or(h)?(t.exit("atxHeadingText"),l(h)):(t.consume(h),d)}}const fbe=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],MA=["pre","script","style","textarea"],mbe={concrete:!0,name:"htmlFlow",resolveTo:xbe,tokenize:vbe},pbe={partial:!0,tokenize:bbe},gbe={partial:!0,tokenize:ybe};function xbe(t){let e=t.length;for(;e--&&!(t[e][0]==="enter"&&t[e][1].type==="htmlFlow"););return e>1&&t[e-2][1].type==="linePrefix"&&(t[e][1].start=t[e-2][1].start,t[e+1][1].start=t[e-2][1].start,t.splice(e-2,2)),t}function vbe(t,e,n){const r=this;let s,i,a,l,c;return d;function d(q){return h(q)}function h(q){return t.enter("htmlFlow"),t.enter("htmlFlowData"),t.consume(q),m}function m(q){return q===33?(t.consume(q),g):q===47?(t.consume(q),i=!0,w):q===63?(t.consume(q),s=3,r.interrupt?e:R):Zs(q)?(t.consume(q),a=String.fromCharCode(q),S):n(q)}function g(q){return q===45?(t.consume(q),s=2,x):q===91?(t.consume(q),s=5,l=0,y):Zs(q)?(t.consume(q),s=4,r.interrupt?e:R):n(q)}function x(q){return q===45?(t.consume(q),r.interrupt?e:R):n(q)}function y(q){const V="CDATA[";return q===V.charCodeAt(l++)?(t.consume(q),l===V.length?r.interrupt?e:U:y):n(q)}function w(q){return Zs(q)?(t.consume(q),a=String.fromCharCode(q),S):n(q)}function S(q){if(q===null||q===47||q===62||or(q)){const V=q===47,te=a.toLowerCase();return!V&&!i&&MA.includes(te)?(s=1,r.interrupt?e(q):U(q)):fbe.includes(a.toLowerCase())?(s=6,V?(t.consume(q),k):r.interrupt?e(q):U(q)):(s=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(q):i?j(q):N(q))}return q===45||Vs(q)?(t.consume(q),a+=String.fromCharCode(q),S):n(q)}function k(q){return q===62?(t.consume(q),r.interrupt?e:U):n(q)}function j(q){return dn(q)?(t.consume(q),j):L(q)}function N(q){return q===47?(t.consume(q),L):q===58||q===95||Zs(q)?(t.consume(q),T):dn(q)?(t.consume(q),N):L(q)}function T(q){return q===45||q===46||q===58||q===95||Vs(q)?(t.consume(q),T):E(q)}function E(q){return q===61?(t.consume(q),_):dn(q)?(t.consume(q),E):N(q)}function _(q){return q===null||q===60||q===61||q===62||q===96?n(q):q===34||q===39?(t.consume(q),c=q,M):dn(q)?(t.consume(q),_):I(q)}function M(q){return q===c?(t.consume(q),c=null,P):q===null||bt(q)?n(q):(t.consume(q),M)}function I(q){return q===null||q===34||q===39||q===47||q===60||q===61||q===62||q===96||or(q)?E(q):(t.consume(q),I)}function P(q){return q===47||q===62||dn(q)?N(q):n(q)}function L(q){return q===62?(t.consume(q),H):n(q)}function H(q){return q===null||bt(q)?U(q):dn(q)?(t.consume(q),H):n(q)}function U(q){return q===45&&s===2?(t.consume(q),B):q===60&&s===1?(t.consume(q),X):q===62&&s===4?(t.consume(q),ie):q===63&&s===3?(t.consume(q),R):q===93&&s===5?(t.consume(q),G):bt(q)&&(s===6||s===7)?(t.exit("htmlFlowData"),t.check(pbe,W,ee)(q)):q===null||bt(q)?(t.exit("htmlFlowData"),ee(q)):(t.consume(q),U)}function ee(q){return t.check(gbe,z,W)(q)}function z(q){return t.enter("lineEnding"),t.consume(q),t.exit("lineEnding"),Q}function Q(q){return q===null||bt(q)?ee(q):(t.enter("htmlFlowData"),U(q))}function B(q){return q===45?(t.consume(q),R):U(q)}function X(q){return q===47?(t.consume(q),a="",J):U(q)}function J(q){if(q===62){const V=a.toLowerCase();return MA.includes(V)?(t.consume(q),ie):U(q)}return Zs(q)&&a.length<8?(t.consume(q),a+=String.fromCharCode(q),J):U(q)}function G(q){return q===93?(t.consume(q),R):U(q)}function R(q){return q===62?(t.consume(q),ie):q===45&&s===2?(t.consume(q),R):U(q)}function ie(q){return q===null||bt(q)?(t.exit("htmlFlowData"),W(q)):(t.consume(q),ie)}function W(q){return t.exit("htmlFlow"),e(q)}}function ybe(t,e,n){const r=this;return s;function s(a){return bt(a)?(t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),i):n(a)}function i(a){return r.parser.lazy[r.now().line]?n(a):e(a)}}function bbe(t,e,n){return r;function r(s){return t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),t.attempt(cg,e,n)}}const wbe={name:"htmlText",tokenize:Sbe};function Sbe(t,e,n){const r=this;let s,i,a;return l;function l(R){return t.enter("htmlText"),t.enter("htmlTextData"),t.consume(R),c}function c(R){return R===33?(t.consume(R),d):R===47?(t.consume(R),E):R===63?(t.consume(R),N):Zs(R)?(t.consume(R),I):n(R)}function d(R){return R===45?(t.consume(R),h):R===91?(t.consume(R),i=0,y):Zs(R)?(t.consume(R),j):n(R)}function h(R){return R===45?(t.consume(R),x):n(R)}function m(R){return R===null?n(R):R===45?(t.consume(R),g):bt(R)?(a=m,X(R)):(t.consume(R),m)}function g(R){return R===45?(t.consume(R),x):m(R)}function x(R){return R===62?B(R):R===45?g(R):m(R)}function y(R){const ie="CDATA[";return R===ie.charCodeAt(i++)?(t.consume(R),i===ie.length?w:y):n(R)}function w(R){return R===null?n(R):R===93?(t.consume(R),S):bt(R)?(a=w,X(R)):(t.consume(R),w)}function S(R){return R===93?(t.consume(R),k):w(R)}function k(R){return R===62?B(R):R===93?(t.consume(R),k):w(R)}function j(R){return R===null||R===62?B(R):bt(R)?(a=j,X(R)):(t.consume(R),j)}function N(R){return R===null?n(R):R===63?(t.consume(R),T):bt(R)?(a=N,X(R)):(t.consume(R),N)}function T(R){return R===62?B(R):N(R)}function E(R){return Zs(R)?(t.consume(R),_):n(R)}function _(R){return R===45||Vs(R)?(t.consume(R),_):M(R)}function M(R){return bt(R)?(a=M,X(R)):dn(R)?(t.consume(R),M):B(R)}function I(R){return R===45||Vs(R)?(t.consume(R),I):R===47||R===62||or(R)?P(R):n(R)}function P(R){return R===47?(t.consume(R),B):R===58||R===95||Zs(R)?(t.consume(R),L):bt(R)?(a=P,X(R)):dn(R)?(t.consume(R),P):B(R)}function L(R){return R===45||R===46||R===58||R===95||Vs(R)?(t.consume(R),L):H(R)}function H(R){return R===61?(t.consume(R),U):bt(R)?(a=H,X(R)):dn(R)?(t.consume(R),H):P(R)}function U(R){return R===null||R===60||R===61||R===62||R===96?n(R):R===34||R===39?(t.consume(R),s=R,ee):bt(R)?(a=U,X(R)):dn(R)?(t.consume(R),U):(t.consume(R),z)}function ee(R){return R===s?(t.consume(R),s=void 0,Q):R===null?n(R):bt(R)?(a=ee,X(R)):(t.consume(R),ee)}function z(R){return R===null||R===34||R===39||R===60||R===61||R===96?n(R):R===47||R===62||or(R)?P(R):(t.consume(R),z)}function Q(R){return R===47||R===62||or(R)?P(R):n(R)}function B(R){return R===62?(t.consume(R),t.exit("htmlTextData"),t.exit("htmlText"),e):n(R)}function X(R){return t.exit("htmlTextData"),t.enter("lineEnding"),t.consume(R),t.exit("lineEnding"),J}function J(R){return dn(R)?on(t,G,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(R):G(R)}function G(R){return t.enter("htmlTextData"),a(R)}}const cN={name:"labelEnd",resolveAll:Nbe,resolveTo:Cbe,tokenize:Tbe},kbe={tokenize:Ebe},Obe={tokenize:_be},jbe={tokenize:Mbe};function Nbe(t){let e=-1;const n=[];for(;++e=3&&(d===null||bt(d))?(t.exit("thematicBreak"),e(d)):n(d)}function c(d){return d===s?(t.consume(d),r++,c):(t.exit("thematicBreakSequence"),dn(d)?on(t,l,"whitespace")(d):l(d))}}const fi={continuation:{tokenize:qbe},exit:Hbe,name:"list",tokenize:Fbe},Lbe={partial:!0,tokenize:Qbe},Bbe={partial:!0,tokenize:$be};function Fbe(t,e,n){const r=this,s=r.events[r.events.length-1];let i=s&&s[1].type==="linePrefix"?s[2].sliceSerialize(s[1],!0).length:0,a=0;return l;function l(x){const y=r.containerState.type||(x===42||x===43||x===45?"listUnordered":"listOrdered");if(y==="listUnordered"?!r.containerState.marker||x===r.containerState.marker:jO(x)){if(r.containerState.type||(r.containerState.type=y,t.enter(y,{_container:!0})),y==="listUnordered")return t.enter("listItemPrefix"),x===42||x===45?t.check(bv,n,d)(x):d(x);if(!r.interrupt||x===49)return t.enter("listItemPrefix"),t.enter("listItemValue"),c(x)}return n(x)}function c(x){return jO(x)&&++a<10?(t.consume(x),c):(!r.interrupt||a<2)&&(r.containerState.marker?x===r.containerState.marker:x===41||x===46)?(t.exit("listItemValue"),d(x)):n(x)}function d(x){return t.enter("listItemMarker"),t.consume(x),t.exit("listItemMarker"),r.containerState.marker=r.containerState.marker||x,t.check(cg,r.interrupt?n:h,t.attempt(Lbe,g,m))}function h(x){return r.containerState.initialBlankLine=!0,i++,g(x)}function m(x){return dn(x)?(t.enter("listItemPrefixWhitespace"),t.consume(x),t.exit("listItemPrefixWhitespace"),g):n(x)}function g(x){return r.containerState.size=i+r.sliceSerialize(t.exit("listItemPrefix"),!0).length,e(x)}}function qbe(t,e,n){const r=this;return r.containerState._closeFlow=void 0,t.check(cg,s,i);function s(l){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,on(t,e,"listItemIndent",r.containerState.size+1)(l)}function i(l){return r.containerState.furtherBlankLines||!dn(l)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,a(l)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,t.attempt(Bbe,e,a)(l))}function a(l){return r.containerState._closeFlow=!0,r.interrupt=void 0,on(t,t.attempt(fi,e,n),"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(l)}}function $be(t,e,n){const r=this;return on(t,s,"listItemIndent",r.containerState.size+1);function s(i){const a=r.events[r.events.length-1];return a&&a[1].type==="listItemIndent"&&a[2].sliceSerialize(a[1],!0).length===r.containerState.size?e(i):n(i)}}function Hbe(t){t.exit(this.containerState.type)}function Qbe(t,e,n){const r=this;return on(t,s,"listItemPrefixWhitespace",r.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function s(i){const a=r.events[r.events.length-1];return!dn(i)&&a&&a[1].type==="listItemPrefixWhitespace"?e(i):n(i)}}const AA={name:"setextUnderline",resolveTo:Vbe,tokenize:Ube};function Vbe(t,e){let n=t.length,r,s,i;for(;n--;)if(t[n][0]==="enter"){if(t[n][1].type==="content"){r=n;break}t[n][1].type==="paragraph"&&(s=n)}else t[n][1].type==="content"&&t.splice(n,1),!i&&t[n][1].type==="definition"&&(i=n);const a={type:"setextHeading",start:{...t[r][1].start},end:{...t[t.length-1][1].end}};return t[s][1].type="setextHeadingText",i?(t.splice(s,0,["enter",a,e]),t.splice(i+1,0,["exit",t[r][1],e]),t[r][1].end={...t[i][1].end}):t[r][1]=a,t.push(["exit",a,e]),t}function Ube(t,e,n){const r=this;let s;return i;function i(d){let h=r.events.length,m;for(;h--;)if(r.events[h][1].type!=="lineEnding"&&r.events[h][1].type!=="linePrefix"&&r.events[h][1].type!=="content"){m=r.events[h][1].type==="paragraph";break}return!r.parser.lazy[r.now().line]&&(r.interrupt||m)?(t.enter("setextHeadingLine"),s=d,a(d)):n(d)}function a(d){return t.enter("setextHeadingLineSequence"),l(d)}function l(d){return d===s?(t.consume(d),l):(t.exit("setextHeadingLineSequence"),dn(d)?on(t,c,"lineSuffix")(d):c(d))}function c(d){return d===null||bt(d)?(t.exit("setextHeadingLine"),e(d)):n(d)}}const Wbe={tokenize:Gbe};function Gbe(t){const e=this,n=t.attempt(cg,r,t.attempt(this.parser.constructs.flowInitial,s,on(t,t.attempt(this.parser.constructs.flow,s,t.attempt(Jye,s)),"linePrefix")));return n;function r(i){if(i===null){t.consume(i);return}return t.enter("lineEndingBlank"),t.consume(i),t.exit("lineEndingBlank"),e.currentConstruct=void 0,n}function s(i){if(i===null){t.consume(i);return}return t.enter("lineEnding"),t.consume(i),t.exit("lineEnding"),e.currentConstruct=void 0,n}}const Xbe={resolveAll:oV()},Ybe=aV("string"),Kbe=aV("text");function aV(t){return{resolveAll:oV(t==="text"?Zbe:void 0),tokenize:e};function e(n){const r=this,s=this.parser.constructs[t],i=n.attempt(s,a,l);return a;function a(h){return d(h)?i(h):l(h)}function l(h){if(h===null){n.consume(h);return}return n.enter("data"),n.consume(h),c}function c(h){return d(h)?(n.exit("data"),i(h)):(n.consume(h),c)}function d(h){if(h===null)return!0;const m=s[h];let g=-1;if(m)for(;++g-1){const l=a[0];typeof l=="string"?a[0]=l.slice(r):a.shift()}i>0&&a.push(t[s].slice(0,i))}return a}function dwe(t,e){let n=-1;const r=[];let s;for(;++n0){const At=st.tokenStack[st.tokenStack.length-1];(At[1]||DA).call(st,void 0,At[0])}for(Ie.position={start:jc(Ne.length>0?Ne[0][1].start:{line:1,column:1,offset:0}),end:jc(Ne.length>0?Ne[Ne.length-2][1].end:{line:1,column:1,offset:0})},Pt=-1;++Pt1?"-"+l:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(a)}]};t.patch(e,c);const d={type:"element",tagName:"sup",properties:{},children:[c]};return t.patch(e,d),t.applyData(e,d)}function Twe(t,e){const n={type:"element",tagName:"h"+e.depth,properties:{},children:t.all(e)};return t.patch(e,n),t.applyData(e,n)}function Ewe(t,e){if(t.options.allowDangerousHtml){const n={type:"raw",value:e.value};return t.patch(e,n),t.applyData(e,n)}}function uV(t,e){const n=e.referenceType;let r="]";if(n==="collapsed"?r+="[]":n==="full"&&(r+="["+(e.label||e.identifier)+"]"),e.type==="imageReference")return[{type:"text",value:"!["+e.alt+r}];const s=t.all(e),i=s[0];i&&i.type==="text"?i.value="["+i.value:s.unshift({type:"text",value:"["});const a=s[s.length-1];return a&&a.type==="text"?a.value+=r:s.push({type:"text",value:r}),s}function _we(t,e){const n=String(e.identifier).toUpperCase(),r=t.definitionById.get(n);if(!r)return uV(t,e);const s={src:Lf(r.url||""),alt:e.alt};r.title!==null&&r.title!==void 0&&(s.title=r.title);const i={type:"element",tagName:"img",properties:s,children:[]};return t.patch(e,i),t.applyData(e,i)}function Mwe(t,e){const n={src:Lf(e.url)};e.alt!==null&&e.alt!==void 0&&(n.alt=e.alt),e.title!==null&&e.title!==void 0&&(n.title=e.title);const r={type:"element",tagName:"img",properties:n,children:[]};return t.patch(e,r),t.applyData(e,r)}function Awe(t,e){const n={type:"text",value:e.value.replace(/\r?\n|\r/g," ")};t.patch(e,n);const r={type:"element",tagName:"code",properties:{},children:[n]};return t.patch(e,r),t.applyData(e,r)}function Rwe(t,e){const n=String(e.identifier).toUpperCase(),r=t.definitionById.get(n);if(!r)return uV(t,e);const s={href:Lf(r.url||"")};r.title!==null&&r.title!==void 0&&(s.title=r.title);const i={type:"element",tagName:"a",properties:s,children:t.all(e)};return t.patch(e,i),t.applyData(e,i)}function Dwe(t,e){const n={href:Lf(e.url)};e.title!==null&&e.title!==void 0&&(n.title=e.title);const r={type:"element",tagName:"a",properties:n,children:t.all(e)};return t.patch(e,r),t.applyData(e,r)}function Pwe(t,e,n){const r=t.all(e),s=n?zwe(n):dV(e),i={},a=[];if(typeof e.checked=="boolean"){const h=r[0];let m;h&&h.type==="element"&&h.tagName==="p"?m=h:(m={type:"element",tagName:"p",properties:{},children:[]},r.unshift(m)),m.children.length>0&&m.children.unshift({type:"text",value:" "}),m.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:e.checked,disabled:!0},children:[]}),i.className=["task-list-item"]}let l=-1;for(;++l1}function Iwe(t,e){const n={},r=t.all(e);let s=-1;for(typeof e.start=="number"&&e.start!==1&&(n.start=e.start);++s0){const a={type:"element",tagName:"tbody",properties:{},children:t.wrap(n,!0)},l=rN(e.children[1]),c=QQ(e.children[e.children.length-1]);l&&c&&(a.position={start:l,end:c}),s.push(a)}const i={type:"element",tagName:"table",properties:{},children:t.wrap(s,!0)};return t.patch(e,i),t.applyData(e,i)}function $we(t,e,n){const r=n?n.children:void 0,i=(r?r.indexOf(e):1)===0?"th":"td",a=n&&n.type==="table"?n.align:void 0,l=a?a.length:e.children.length;let c=-1;const d=[];for(;++c0,!0),r[0]),s=r.index+r[0].length,r=n.exec(e);return i.push(IA(e.slice(s),s>0,!1)),i.join("")}function IA(t,e,n){let r=0,s=t.length;if(e){let i=t.codePointAt(r);for(;i===PA||i===zA;)r++,i=t.codePointAt(r)}if(n){let i=t.codePointAt(s-1);for(;i===PA||i===zA;)s--,i=t.codePointAt(s-1)}return s>r?t.slice(r,s):""}function Vwe(t,e){const n={type:"text",value:Qwe(String(e.value))};return t.patch(e,n),t.applyData(e,n)}function Uwe(t,e){const n={type:"element",tagName:"hr",properties:{},children:[]};return t.patch(e,n),t.applyData(e,n)}const Wwe={blockquote:Swe,break:kwe,code:Owe,delete:jwe,emphasis:Nwe,footnoteReference:Cwe,heading:Twe,html:Ewe,imageReference:_we,image:Mwe,inlineCode:Awe,linkReference:Rwe,link:Dwe,listItem:Pwe,list:Iwe,paragraph:Lwe,root:Bwe,strong:Fwe,table:qwe,tableCell:Hwe,tableRow:$we,text:Vwe,thematicBreak:Uwe,toml:j1,yaml:j1,definition:j1,footnoteDefinition:j1};function j1(){}const hV=-1,Rb=0,E0=1,my=2,uN=3,dN=4,hN=5,fN=6,fV=7,mV=8,LA=typeof self=="object"?self:globalThis,Gwe=(t,e)=>{const n=(s,i)=>(t.set(i,s),s),r=s=>{if(t.has(s))return t.get(s);const[i,a]=e[s];switch(i){case Rb:case hV:return n(a,s);case E0:{const l=n([],s);for(const c of a)l.push(r(c));return l}case my:{const l=n({},s);for(const[c,d]of a)l[r(c)]=r(d);return l}case uN:return n(new Date(a),s);case dN:{const{source:l,flags:c}=a;return n(new RegExp(l,c),s)}case hN:{const l=n(new Map,s);for(const[c,d]of a)l.set(r(c),r(d));return l}case fN:{const l=n(new Set,s);for(const c of a)l.add(r(c));return l}case fV:{const{name:l,message:c}=a;return n(new LA[l](c),s)}case mV:return n(BigInt(a),s);case"BigInt":return n(Object(BigInt(a)),s);case"ArrayBuffer":return n(new Uint8Array(a).buffer,a);case"DataView":{const{buffer:l}=new Uint8Array(a);return n(new DataView(l),a)}}return n(new LA[i](a),s)};return r},BA=t=>Gwe(new Map,t)(0),lh="",{toString:Xwe}={},{keys:Ywe}=Object,Km=t=>{const e=typeof t;if(e!=="object"||!t)return[Rb,e];const n=Xwe.call(t).slice(8,-1);switch(n){case"Array":return[E0,lh];case"Object":return[my,lh];case"Date":return[uN,lh];case"RegExp":return[dN,lh];case"Map":return[hN,lh];case"Set":return[fN,lh];case"DataView":return[E0,n]}return n.includes("Array")?[E0,n]:n.includes("Error")?[fV,n]:[my,n]},N1=([t,e])=>t===Rb&&(e==="function"||e==="symbol"),Kwe=(t,e,n,r)=>{const s=(a,l)=>{const c=r.push(a)-1;return n.set(l,c),c},i=a=>{if(n.has(a))return n.get(a);let[l,c]=Km(a);switch(l){case Rb:{let h=a;switch(c){case"bigint":l=mV,h=a.toString();break;case"function":case"symbol":if(t)throw new TypeError("unable to serialize "+c);h=null;break;case"undefined":return s([hV],a)}return s([l,h],a)}case E0:{if(c){let g=a;return c==="DataView"?g=new Uint8Array(a.buffer):c==="ArrayBuffer"&&(g=new Uint8Array(a)),s([c,[...g]],a)}const h=[],m=s([l,h],a);for(const g of a)h.push(i(g));return m}case my:{if(c)switch(c){case"BigInt":return s([c,a.toString()],a);case"Boolean":case"Number":case"String":return s([c,a.valueOf()],a)}if(e&&"toJSON"in a)return i(a.toJSON());const h=[],m=s([l,h],a);for(const g of Ywe(a))(t||!N1(Km(a[g])))&&h.push([i(g),i(a[g])]);return m}case uN:return s([l,a.toISOString()],a);case dN:{const{source:h,flags:m}=a;return s([l,{source:h,flags:m}],a)}case hN:{const h=[],m=s([l,h],a);for(const[g,x]of a)(t||!(N1(Km(g))||N1(Km(x))))&&h.push([i(g),i(x)]);return m}case fN:{const h=[],m=s([l,h],a);for(const g of a)(t||!N1(Km(g)))&&h.push(i(g));return m}}const{message:d}=a;return s([l,{name:c,message:d}],a)};return i},FA=(t,{json:e,lossy:n}={})=>{const r=[];return Kwe(!(e||n),!!e,new Map,r)(t),r},py=typeof structuredClone=="function"?(t,e)=>e&&("json"in e||"lossy"in e)?BA(FA(t,e)):structuredClone(t):(t,e)=>BA(FA(t,e));function Zwe(t,e){const n=[{type:"text",value:"↩"}];return e>1&&n.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(e)}]}),n}function Jwe(t,e){return"Back to reference "+(t+1)+(e>1?"-"+e:"")}function e2e(t){const e=typeof t.options.clobberPrefix=="string"?t.options.clobberPrefix:"user-content-",n=t.options.footnoteBackContent||Zwe,r=t.options.footnoteBackLabel||Jwe,s=t.options.footnoteLabel||"Footnotes",i=t.options.footnoteLabelTagName||"h2",a=t.options.footnoteLabelProperties||{className:["sr-only"]},l=[];let c=-1;for(;++c0&&y.push({type:"text",value:" "});let j=typeof n=="string"?n:n(c,x);typeof j=="string"&&(j={type:"text",value:j}),y.push({type:"element",tagName:"a",properties:{href:"#"+e+"fnref-"+g+(x>1?"-"+x:""),dataFootnoteBackref:"",ariaLabel:typeof r=="string"?r:r(c,x),className:["data-footnote-backref"]},children:Array.isArray(j)?j:[j]})}const S=h[h.length-1];if(S&&S.type==="element"&&S.tagName==="p"){const j=S.children[S.children.length-1];j&&j.type==="text"?j.value+=" ":S.children.push({type:"text",value:" "}),S.children.push(...y)}else h.push(...y);const k={type:"element",tagName:"li",properties:{id:e+"fn-"+g},children:t.wrap(h,!0)};t.patch(d,k),l.push(k)}if(l.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:i,properties:{...py(a),id:"footnote-label"},children:[{type:"text",value:s}]},{type:"text",value:` +`},{type:"element",tagName:"ol",properties:{},children:t.wrap(l,!0)},{type:"text",value:` +`}]}}const ug=(function(t){if(t==null)return s2e;if(typeof t=="function")return Db(t);if(typeof t=="object")return Array.isArray(t)?t2e(t):n2e(t);if(typeof t=="string")return r2e(t);throw new Error("Expected function, string, or object as test")});function t2e(t){const e=[];let n=-1;for(;++n":""))+")"})}return g;function g(){let x=pV,y,w,S;if((!e||i(c,d,h[h.length-1]||void 0))&&(x=o2e(n(c,h)),x[0]===CO))return x;if("children"in c&&c.children){const k=c;if(k.children&&x[0]!==gV)for(w=(r?k.children.length:-1)+a,S=h.concat(k);w>-1&&w0&&n.push({type:"text",value:` +`}),n}function qA(t){let e=0,n=t.charCodeAt(e);for(;n===9||n===32;)e++,n=t.charCodeAt(e);return t.slice(e)}function $A(t,e){const n=c2e(t,e),r=n.one(t,void 0),s=e2e(n),i=Array.isArray(r)?{type:"root",children:r}:r||{type:"root",children:[]};return s&&i.children.push({type:"text",value:` +`},s),i}function m2e(t,e){return t&&"run"in t?async function(n,r){const s=$A(n,{file:r,...e});await t.run(s,r)}:function(n,r){return $A(n,{file:r,...t||e})}}function HA(t){if(t)throw t}var CS,QA;function p2e(){if(QA)return CS;QA=1;var t=Object.prototype.hasOwnProperty,e=Object.prototype.toString,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,s=function(d){return typeof Array.isArray=="function"?Array.isArray(d):e.call(d)==="[object Array]"},i=function(d){if(!d||e.call(d)!=="[object Object]")return!1;var h=t.call(d,"constructor"),m=d.constructor&&d.constructor.prototype&&t.call(d.constructor.prototype,"isPrototypeOf");if(d.constructor&&!h&&!m)return!1;var g;for(g in d);return typeof g>"u"||t.call(d,g)},a=function(d,h){n&&h.name==="__proto__"?n(d,h.name,{enumerable:!0,configurable:!0,value:h.newValue,writable:!0}):d[h.name]=h.newValue},l=function(d,h){if(h==="__proto__")if(t.call(d,h)){if(r)return r(d,h).value}else return;return d[h]};return CS=function c(){var d,h,m,g,x,y,w=arguments[0],S=1,k=arguments.length,j=!1;for(typeof w=="boolean"&&(j=w,w=arguments[1]||{},S=2),(w==null||typeof w!="object"&&typeof w!="function")&&(w={});Sa.length;let c;l&&a.push(s);try{c=t.apply(this,a)}catch(d){const h=d;if(l&&n)throw h;return s(h)}l||(c&&c.then&&typeof c.then=="function"?c.then(i,s):c instanceof Error?s(c):i(c))}function s(a,...l){n||(n=!0,e(a,...l))}function i(a){s(null,a)}}const go={basename:y2e,dirname:b2e,extname:w2e,join:S2e,sep:"/"};function y2e(t,e){if(e!==void 0&&typeof e!="string")throw new TypeError('"ext" argument must be a string');dg(t);let n=0,r=-1,s=t.length,i;if(e===void 0||e.length===0||e.length>t.length){for(;s--;)if(t.codePointAt(s)===47){if(i){n=s+1;break}}else r<0&&(i=!0,r=s+1);return r<0?"":t.slice(n,r)}if(e===t)return"";let a=-1,l=e.length-1;for(;s--;)if(t.codePointAt(s)===47){if(i){n=s+1;break}}else a<0&&(i=!0,a=s+1),l>-1&&(t.codePointAt(s)===e.codePointAt(l--)?l<0&&(r=s):(l=-1,r=a));return n===r?r=a:r<0&&(r=t.length),t.slice(n,r)}function b2e(t){if(dg(t),t.length===0)return".";let e=-1,n=t.length,r;for(;--n;)if(t.codePointAt(n)===47){if(r){e=n;break}}else r||(r=!0);return e<0?t.codePointAt(0)===47?"/":".":e===1&&t.codePointAt(0)===47?"//":t.slice(0,e)}function w2e(t){dg(t);let e=t.length,n=-1,r=0,s=-1,i=0,a;for(;e--;){const l=t.codePointAt(e);if(l===47){if(a){r=e+1;break}continue}n<0&&(a=!0,n=e+1),l===46?s<0?s=e:i!==1&&(i=1):s>-1&&(i=-1)}return s<0||n<0||i===0||i===1&&s===n-1&&s===r+1?"":t.slice(s,n)}function S2e(...t){let e=-1,n;for(;++e0&&t.codePointAt(t.length-1)===47&&(n+="/"),e?"/"+n:n}function O2e(t,e){let n="",r=0,s=-1,i=0,a=-1,l,c;for(;++a<=t.length;){if(a2){if(c=n.lastIndexOf("/"),c!==n.length-1){c<0?(n="",r=0):(n=n.slice(0,c),r=n.length-1-n.lastIndexOf("/")),s=a,i=0;continue}}else if(n.length>0){n="",r=0,s=a,i=0;continue}}e&&(n=n.length>0?n+"/..":"..",r=2)}else n.length>0?n+="/"+t.slice(s+1,a):n=t.slice(s+1,a),r=a-s-1;s=a,i=0}else l===46&&i>-1?i++:i=-1}return n}function dg(t){if(typeof t!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(t))}const j2e={cwd:N2e};function N2e(){return"/"}function _O(t){return!!(t!==null&&typeof t=="object"&&"href"in t&&t.href&&"protocol"in t&&t.protocol&&t.auth===void 0)}function C2e(t){if(typeof t=="string")t=new URL(t);else if(!_O(t)){const e=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+t+"`");throw e.code="ERR_INVALID_ARG_TYPE",e}if(t.protocol!=="file:"){const e=new TypeError("The URL must be of scheme file");throw e.code="ERR_INVALID_URL_SCHEME",e}return T2e(t)}function T2e(t){if(t.hostname!==""){const r=new TypeError('File URL host must be "localhost" or empty on darwin');throw r.code="ERR_INVALID_FILE_URL_HOST",r}const e=t.pathname;let n=-1;for(;++n0){let[x,...y]=h;const w=r[g][1];EO(w)&&EO(x)&&(x=TS(!0,w,x)),r[g]=[d,x,...y]}}}}const A2e=new gN().freeze();function AS(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `parser`")}function RS(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `compiler`")}function DS(t,e){if(e)throw new Error("Cannot call `"+t+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function UA(t){if(!EO(t)||typeof t.type!="string")throw new TypeError("Expected node, got `"+t+"`")}function WA(t,e,n){if(!n)throw new Error("`"+t+"` finished async. Use `"+e+"` instead")}function C1(t){return R2e(t)?t:new xV(t)}function R2e(t){return!!(t&&typeof t=="object"&&"message"in t&&"messages"in t)}function D2e(t){return typeof t=="string"||P2e(t)}function P2e(t){return!!(t&&typeof t=="object"&&"byteLength"in t&&"byteOffset"in t)}const z2e="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",GA=[],XA={allowDangerousHtml:!0},I2e=/^(https?|ircs?|mailto|xmpp)$/i,L2e=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function B2e(t){const e=F2e(t),n=q2e(t);return $2e(e.runSync(e.parse(n),n),t)}function F2e(t){const e=t.rehypePlugins||GA,n=t.remarkPlugins||GA,r=t.remarkRehypeOptions?{...t.remarkRehypeOptions,...XA}:XA;return A2e().use(wwe).use(n).use(m2e,r).use(e)}function q2e(t){const e=t.children||"",n=new xV;return typeof e=="string"&&(n.value=e),n}function $2e(t,e){const n=e.allowedElements,r=e.allowElement,s=e.components,i=e.disallowedElements,a=e.skipHtml,l=e.unwrapDisallowed,c=e.urlTransform||H2e;for(const h of L2e)Object.hasOwn(e,h.from)&&(""+h.from+(h.to?"use `"+h.to+"` instead":"remove it")+z2e+h.id,void 0);return pN(t,d),sye(t,{Fragment:o.Fragment,components:s,ignoreInvalidStyle:!0,jsx:o.jsx,jsxs:o.jsxs,passKeys:!0,passNode:!0});function d(h,m,g){if(h.type==="raw"&&g&&typeof m=="number")return a?g.children.splice(m,1):g.children[m]={type:"text",value:h.value},m;if(h.type==="element"){let x;for(x in OS)if(Object.hasOwn(OS,x)&&Object.hasOwn(h.properties,x)){const y=h.properties[x],w=OS[x];(w===null||w.includes(h.tagName))&&(h.properties[x]=c(String(y||""),x,h))}}if(h.type==="element"){let x=n?!n.includes(h.tagName):i?i.includes(h.tagName):!1;if(!x&&r&&typeof m=="number"&&(x=!r(h,m,g)),x&&g&&typeof m=="number")return l&&h.children?g.children.splice(m,1,...h.children):g.children.splice(m,1),m}}}function H2e(t){const e=t.indexOf(":"),n=t.indexOf("?"),r=t.indexOf("#"),s=t.indexOf("/");return e===-1||s!==-1&&e>s||n!==-1&&e>n||r!==-1&&e>r||I2e.test(t.slice(0,e))?t:""}function YA(t,e){const n=String(t);if(typeof e!="string")throw new TypeError("Expected character");let r=0,s=n.indexOf(e);for(;s!==-1;)r++,s=n.indexOf(e,s+e.length);return r}function Q2e(t){if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function V2e(t,e,n){const s=ug((n||{}).ignore||[]),i=U2e(e);let a=-1;for(;++a0?{type:"text",value:_}:void 0),_===!1?g.lastIndex=T+1:(y!==T&&j.push({type:"text",value:d.value.slice(y,T)}),Array.isArray(_)?j.push(..._):_&&j.push(_),y=T+N[0].length,k=!0),!g.global)break;N=g.exec(d.value)}return k?(y?\]}]+$/.exec(t);if(!e)return[t,void 0];t=t.slice(0,e.index);let n=e[0],r=n.indexOf(")");const s=YA(t,"(");let i=YA(t,")");for(;r!==-1&&s>i;)t+=n.slice(0,r+1),n=n.slice(r+1),r=n.indexOf(")"),i++;return[t,n]}function vV(t,e){const n=t.input.charCodeAt(t.index-1);return(t.index===0||fd(n)||Mb(n))&&(!e||n!==47)}yV.peek=p4e;function o4e(){this.buffer()}function l4e(t){this.enter({type:"footnoteReference",identifier:"",label:""},t)}function c4e(){this.buffer()}function u4e(t){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},t)}function d4e(t){const e=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=Ga(this.sliceSerialize(t)).toLowerCase(),n.label=e}function h4e(t){this.exit(t)}function f4e(t){const e=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=Ga(this.sliceSerialize(t)).toLowerCase(),n.label=e}function m4e(t){this.exit(t)}function p4e(){return"["}function yV(t,e,n,r){const s=n.createTracker(r);let i=s.move("[^");const a=n.enter("footnoteReference"),l=n.enter("reference");return i+=s.move(n.safe(n.associationId(t),{after:"]",before:i})),l(),a(),i+=s.move("]"),i}function g4e(){return{enter:{gfmFootnoteCallString:o4e,gfmFootnoteCall:l4e,gfmFootnoteDefinitionLabelString:c4e,gfmFootnoteDefinition:u4e},exit:{gfmFootnoteCallString:d4e,gfmFootnoteCall:h4e,gfmFootnoteDefinitionLabelString:f4e,gfmFootnoteDefinition:m4e}}}function x4e(t){let e=!1;return t&&t.firstLineBlank&&(e=!0),{handlers:{footnoteDefinition:n,footnoteReference:yV},unsafe:[{character:"[",inConstruct:["label","phrasing","reference"]}]};function n(r,s,i,a){const l=i.createTracker(a);let c=l.move("[^");const d=i.enter("footnoteDefinition"),h=i.enter("label");return c+=l.move(i.safe(i.associationId(r),{before:c,after:"]"})),h(),c+=l.move("]:"),r.children&&r.children.length>0&&(l.shift(4),c+=l.move((e?` +`:" ")+i.indentLines(i.containerFlow(r,l.current()),e?bV:v4e))),d(),c}}function v4e(t,e,n){return e===0?t:bV(t,e,n)}function bV(t,e,n){return(n?"":" ")+t}const y4e=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"];wV.peek=O4e;function b4e(){return{canContainEols:["delete"],enter:{strikethrough:S4e},exit:{strikethrough:k4e}}}function w4e(){return{unsafe:[{character:"~",inConstruct:"phrasing",notInConstruct:y4e}],handlers:{delete:wV}}}function S4e(t){this.enter({type:"delete",children:[]},t)}function k4e(t){this.exit(t)}function wV(t,e,n,r){const s=n.createTracker(r),i=n.enter("strikethrough");let a=s.move("~~");return a+=n.containerPhrasing(t,{...s.current(),before:a,after:"~"}),a+=s.move("~~"),i(),a}function O4e(){return"~"}function j4e(t){return t.length}function N4e(t,e){const n=e||{},r=(n.align||[]).concat(),s=n.stringLength||j4e,i=[],a=[],l=[],c=[];let d=0,h=-1;for(;++hd&&(d=t[h].length);++kc[k])&&(c[k]=N)}w.push(j)}a[h]=w,l[h]=S}let m=-1;if(typeof r=="object"&&"length"in r)for(;++mc[m]&&(c[m]=j),x[m]=j),g[m]=N}a.splice(1,0,g),l.splice(1,0,x),h=-1;const y=[];for(;++h "),i.shift(2);const a=n.indentLines(n.containerFlow(t,i.current()),E4e);return s(),a}function E4e(t,e,n){return">"+(n?"":" ")+t}function _4e(t,e){return ZA(t,e.inConstruct,!0)&&!ZA(t,e.notInConstruct,!1)}function ZA(t,e,n){if(typeof e=="string"&&(e=[e]),!e||e.length===0)return n;let r=-1;for(;++ra&&(a=i):i=1,s=r+e.length,r=n.indexOf(e,s);return a}function M4e(t,e){return!!(e.options.fences===!1&&t.value&&!t.lang&&/[^ \r\n]/.test(t.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(t.value))}function A4e(t){const e=t.options.fence||"`";if(e!=="`"&&e!=="~")throw new Error("Cannot serialize code with `"+e+"` for `options.fence`, expected `` ` `` or `~`");return e}function R4e(t,e,n,r){const s=A4e(n),i=t.value||"",a=s==="`"?"GraveAccent":"Tilde";if(M4e(t,n)){const m=n.enter("codeIndented"),g=n.indentLines(i,D4e);return m(),g}const l=n.createTracker(r),c=s.repeat(Math.max(SV(i,s)+1,3)),d=n.enter("codeFenced");let h=l.move(c);if(t.lang){const m=n.enter(`codeFencedLang${a}`);h+=l.move(n.safe(t.lang,{before:h,after:" ",encode:["`"],...l.current()})),m()}if(t.lang&&t.meta){const m=n.enter(`codeFencedMeta${a}`);h+=l.move(" "),h+=l.move(n.safe(t.meta,{before:h,after:` +`,encode:["`"],...l.current()})),m()}return h+=l.move(` +`),i&&(h+=l.move(i+` +`)),h+=l.move(c),d(),h}function D4e(t,e,n){return(n?"":" ")+t}function xN(t){const e=t.options.quote||'"';if(e!=='"'&&e!=="'")throw new Error("Cannot serialize title with `"+e+"` for `options.quote`, expected `\"`, or `'`");return e}function P4e(t,e,n,r){const s=xN(n),i=s==='"'?"Quote":"Apostrophe",a=n.enter("definition");let l=n.enter("label");const c=n.createTracker(r);let d=c.move("[");return d+=c.move(n.safe(n.associationId(t),{before:d,after:"]",...c.current()})),d+=c.move("]: "),l(),!t.url||/[\0- \u007F]/.test(t.url)?(l=n.enter("destinationLiteral"),d+=c.move("<"),d+=c.move(n.safe(t.url,{before:d,after:">",...c.current()})),d+=c.move(">")):(l=n.enter("destinationRaw"),d+=c.move(n.safe(t.url,{before:d,after:t.title?" ":` +`,...c.current()}))),l(),t.title&&(l=n.enter(`title${i}`),d+=c.move(" "+s),d+=c.move(n.safe(t.title,{before:d,after:s,...c.current()})),d+=c.move(s),l()),a(),d}function z4e(t){const e=t.options.emphasis||"*";if(e!=="*"&&e!=="_")throw new Error("Cannot serialize emphasis with `"+e+"` for `options.emphasis`, expected `*`, or `_`");return e}function fp(t){return"&#x"+t.toString(16).toUpperCase()+";"}function gy(t,e,n){const r=uf(t),s=uf(e);return r===void 0?s===void 0?n==="_"?{inside:!0,outside:!0}:{inside:!1,outside:!1}:s===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:r===1?s===void 0?{inside:!1,outside:!1}:s===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:s===void 0?{inside:!1,outside:!1}:s===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}kV.peek=I4e;function kV(t,e,n,r){const s=z4e(n),i=n.enter("emphasis"),a=n.createTracker(r),l=a.move(s);let c=a.move(n.containerPhrasing(t,{after:s,before:l,...a.current()}));const d=c.charCodeAt(0),h=gy(r.before.charCodeAt(r.before.length-1),d,s);h.inside&&(c=fp(d)+c.slice(1));const m=c.charCodeAt(c.length-1),g=gy(r.after.charCodeAt(0),m,s);g.inside&&(c=c.slice(0,-1)+fp(m));const x=a.move(s);return i(),n.attentionEncodeSurroundingInfo={after:g.outside,before:h.outside},l+c+x}function I4e(t,e,n){return n.options.emphasis||"*"}function L4e(t,e){let n=!1;return pN(t,function(r){if("value"in r&&/\r?\n|\r/.test(r.value)||r.type==="break")return n=!0,CO}),!!((!t.depth||t.depth<3)&&oN(t)&&(e.options.setext||n))}function B4e(t,e,n,r){const s=Math.max(Math.min(6,t.depth||1),1),i=n.createTracker(r);if(L4e(t,n)){const h=n.enter("headingSetext"),m=n.enter("phrasing"),g=n.containerPhrasing(t,{...i.current(),before:` +`,after:` +`});return m(),h(),g+` +`+(s===1?"=":"-").repeat(g.length-(Math.max(g.lastIndexOf("\r"),g.lastIndexOf(` +`))+1))}const a="#".repeat(s),l=n.enter("headingAtx"),c=n.enter("phrasing");i.move(a+" ");let d=n.containerPhrasing(t,{before:"# ",after:` +`,...i.current()});return/^[\t ]/.test(d)&&(d=fp(d.charCodeAt(0))+d.slice(1)),d=d?a+" "+d:a,n.options.closeAtx&&(d+=" "+a),c(),l(),d}OV.peek=F4e;function OV(t){return t.value||""}function F4e(){return"<"}jV.peek=q4e;function jV(t,e,n,r){const s=xN(n),i=s==='"'?"Quote":"Apostrophe",a=n.enter("image");let l=n.enter("label");const c=n.createTracker(r);let d=c.move("![");return d+=c.move(n.safe(t.alt,{before:d,after:"]",...c.current()})),d+=c.move("]("),l(),!t.url&&t.title||/[\0- \u007F]/.test(t.url)?(l=n.enter("destinationLiteral"),d+=c.move("<"),d+=c.move(n.safe(t.url,{before:d,after:">",...c.current()})),d+=c.move(">")):(l=n.enter("destinationRaw"),d+=c.move(n.safe(t.url,{before:d,after:t.title?" ":")",...c.current()}))),l(),t.title&&(l=n.enter(`title${i}`),d+=c.move(" "+s),d+=c.move(n.safe(t.title,{before:d,after:s,...c.current()})),d+=c.move(s),l()),d+=c.move(")"),a(),d}function q4e(){return"!"}NV.peek=$4e;function NV(t,e,n,r){const s=t.referenceType,i=n.enter("imageReference");let a=n.enter("label");const l=n.createTracker(r);let c=l.move("![");const d=n.safe(t.alt,{before:c,after:"]",...l.current()});c+=l.move(d+"]["),a();const h=n.stack;n.stack=[],a=n.enter("reference");const m=n.safe(n.associationId(t),{before:c,after:"]",...l.current()});return a(),n.stack=h,i(),s==="full"||!d||d!==m?c+=l.move(m+"]"):s==="shortcut"?c=c.slice(0,-1):c+=l.move("]"),c}function $4e(){return"!"}CV.peek=H4e;function CV(t,e,n){let r=t.value||"",s="`",i=-1;for(;new RegExp("(^|[^`])"+s+"([^`]|$)").test(r);)s+="`";for(/[^ \r\n]/.test(r)&&(/^[ \r\n]/.test(r)&&/[ \r\n]$/.test(r)||/^`|`$/.test(r))&&(r=" "+r+" ");++i\u007F]/.test(t.url))}EV.peek=Q4e;function EV(t,e,n,r){const s=xN(n),i=s==='"'?"Quote":"Apostrophe",a=n.createTracker(r);let l,c;if(TV(t,n)){const h=n.stack;n.stack=[],l=n.enter("autolink");let m=a.move("<");return m+=a.move(n.containerPhrasing(t,{before:m,after:">",...a.current()})),m+=a.move(">"),l(),n.stack=h,m}l=n.enter("link"),c=n.enter("label");let d=a.move("[");return d+=a.move(n.containerPhrasing(t,{before:d,after:"](",...a.current()})),d+=a.move("]("),c(),!t.url&&t.title||/[\0- \u007F]/.test(t.url)?(c=n.enter("destinationLiteral"),d+=a.move("<"),d+=a.move(n.safe(t.url,{before:d,after:">",...a.current()})),d+=a.move(">")):(c=n.enter("destinationRaw"),d+=a.move(n.safe(t.url,{before:d,after:t.title?" ":")",...a.current()}))),c(),t.title&&(c=n.enter(`title${i}`),d+=a.move(" "+s),d+=a.move(n.safe(t.title,{before:d,after:s,...a.current()})),d+=a.move(s),c()),d+=a.move(")"),l(),d}function Q4e(t,e,n){return TV(t,n)?"<":"["}_V.peek=V4e;function _V(t,e,n,r){const s=t.referenceType,i=n.enter("linkReference");let a=n.enter("label");const l=n.createTracker(r);let c=l.move("[");const d=n.containerPhrasing(t,{before:c,after:"]",...l.current()});c+=l.move(d+"]["),a();const h=n.stack;n.stack=[],a=n.enter("reference");const m=n.safe(n.associationId(t),{before:c,after:"]",...l.current()});return a(),n.stack=h,i(),s==="full"||!d||d!==m?c+=l.move(m+"]"):s==="shortcut"?c=c.slice(0,-1):c+=l.move("]"),c}function V4e(){return"["}function vN(t){const e=t.options.bullet||"*";if(e!=="*"&&e!=="+"&&e!=="-")throw new Error("Cannot serialize items with `"+e+"` for `options.bullet`, expected `*`, `+`, or `-`");return e}function U4e(t){const e=vN(t),n=t.options.bulletOther;if(!n)return e==="*"?"-":"*";if(n!=="*"&&n!=="+"&&n!=="-")throw new Error("Cannot serialize items with `"+n+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(n===e)throw new Error("Expected `bullet` (`"+e+"`) and `bulletOther` (`"+n+"`) to be different");return n}function W4e(t){const e=t.options.bulletOrdered||".";if(e!=="."&&e!==")")throw new Error("Cannot serialize items with `"+e+"` for `options.bulletOrdered`, expected `.` or `)`");return e}function MV(t){const e=t.options.rule||"*";if(e!=="*"&&e!=="-"&&e!=="_")throw new Error("Cannot serialize rules with `"+e+"` for `options.rule`, expected `*`, `-`, or `_`");return e}function G4e(t,e,n,r){const s=n.enter("list"),i=n.bulletCurrent;let a=t.ordered?W4e(n):vN(n);const l=t.ordered?a==="."?")":".":U4e(n);let c=e&&n.bulletLastUsed?a===n.bulletLastUsed:!1;if(!t.ordered){const h=t.children?t.children[0]:void 0;if((a==="*"||a==="-")&&h&&(!h.children||!h.children[0])&&n.stack[n.stack.length-1]==="list"&&n.stack[n.stack.length-2]==="listItem"&&n.stack[n.stack.length-3]==="list"&&n.stack[n.stack.length-4]==="listItem"&&n.indexStack[n.indexStack.length-1]===0&&n.indexStack[n.indexStack.length-2]===0&&n.indexStack[n.indexStack.length-3]===0&&(c=!0),MV(n)===a&&h){let m=-1;for(;++m-1?e.start:1)+(n.options.incrementListMarker===!1?0:e.children.indexOf(t))+i);let a=i.length+1;(s==="tab"||s==="mixed"&&(e&&e.type==="list"&&e.spread||t.spread))&&(a=Math.ceil(a/4)*4);const l=n.createTracker(r);l.move(i+" ".repeat(a-i.length)),l.shift(a);const c=n.enter("listItem"),d=n.indentLines(n.containerFlow(t,l.current()),h);return c(),d;function h(m,g,x){return g?(x?"":" ".repeat(a))+m:(x?i:i+" ".repeat(a-i.length))+m}}function K4e(t,e,n,r){const s=n.enter("paragraph"),i=n.enter("phrasing"),a=n.containerPhrasing(t,r);return i(),s(),a}const Z4e=ug(["break","delete","emphasis","footnote","footnoteReference","image","imageReference","inlineCode","inlineMath","link","linkReference","mdxJsxTextElement","mdxTextExpression","strong","text","textDirective"]);function J4e(t,e,n,r){return(t.children.some(function(a){return Z4e(a)})?n.containerPhrasing:n.containerFlow).call(n,t,r)}function eSe(t){const e=t.options.strong||"*";if(e!=="*"&&e!=="_")throw new Error("Cannot serialize strong with `"+e+"` for `options.strong`, expected `*`, or `_`");return e}AV.peek=tSe;function AV(t,e,n,r){const s=eSe(n),i=n.enter("strong"),a=n.createTracker(r),l=a.move(s+s);let c=a.move(n.containerPhrasing(t,{after:s,before:l,...a.current()}));const d=c.charCodeAt(0),h=gy(r.before.charCodeAt(r.before.length-1),d,s);h.inside&&(c=fp(d)+c.slice(1));const m=c.charCodeAt(c.length-1),g=gy(r.after.charCodeAt(0),m,s);g.inside&&(c=c.slice(0,-1)+fp(m));const x=a.move(s+s);return i(),n.attentionEncodeSurroundingInfo={after:g.outside,before:h.outside},l+c+x}function tSe(t,e,n){return n.options.strong||"*"}function nSe(t,e,n,r){return n.safe(t.value,r)}function rSe(t){const e=t.options.ruleRepetition||3;if(e<3)throw new Error("Cannot serialize rules with repetition `"+e+"` for `options.ruleRepetition`, expected `3` or more");return e}function sSe(t,e,n){const r=(MV(n)+(n.options.ruleSpaces?" ":"")).repeat(rSe(n));return n.options.ruleSpaces?r.slice(0,-1):r}const RV={blockquote:T4e,break:JA,code:R4e,definition:P4e,emphasis:kV,hardBreak:JA,heading:B4e,html:OV,image:jV,imageReference:NV,inlineCode:CV,link:EV,linkReference:_V,list:G4e,listItem:Y4e,paragraph:K4e,root:J4e,strong:AV,text:nSe,thematicBreak:sSe};function iSe(){return{enter:{table:aSe,tableData:eR,tableHeader:eR,tableRow:lSe},exit:{codeText:cSe,table:oSe,tableData:LS,tableHeader:LS,tableRow:LS}}}function aSe(t){const e=t._align;this.enter({type:"table",align:e.map(function(n){return n==="none"?null:n}),children:[]},t),this.data.inTable=!0}function oSe(t){this.exit(t),this.data.inTable=void 0}function lSe(t){this.enter({type:"tableRow",children:[]},t)}function LS(t){this.exit(t)}function eR(t){this.enter({type:"tableCell",children:[]},t)}function cSe(t){let e=this.resume();this.data.inTable&&(e=e.replace(/\\([\\|])/g,uSe));const n=this.stack[this.stack.length-1];n.type,n.value=e,this.exit(t)}function uSe(t,e){return e==="|"?e:t}function dSe(t){const e=t||{},n=e.tableCellPadding,r=e.tablePipeAlign,s=e.stringLength,i=n?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:` +`,inConstruct:"tableCell"},{atBreak:!0,character:"|",after:"[ :-]"},{character:"|",inConstruct:"tableCell"},{atBreak:!0,character:":",after:"-"},{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{inlineCode:g,table:a,tableCell:c,tableRow:l}};function a(x,y,w,S){return d(h(x,w,S),x.align)}function l(x,y,w,S){const k=m(x,w,S),j=d([k]);return j.slice(0,j.indexOf(` +`))}function c(x,y,w,S){const k=w.enter("tableCell"),j=w.enter("phrasing"),N=w.containerPhrasing(x,{...S,before:i,after:i});return j(),k(),N}function d(x,y){return N4e(x,{align:y,alignDelimiters:r,padding:n,stringLength:s})}function h(x,y,w){const S=x.children;let k=-1;const j=[],N=y.enter("table");for(;++k0&&!n&&(t[t.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}const ESe={tokenize:ISe,partial:!0};function _Se(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:DSe,continuation:{tokenize:PSe},exit:zSe}},text:{91:{name:"gfmFootnoteCall",tokenize:RSe},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:MSe,resolveTo:ASe}}}}function MSe(t,e,n){const r=this;let s=r.events.length;const i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let a;for(;s--;){const c=r.events[s][1];if(c.type==="labelImage"){a=c;break}if(c.type==="gfmFootnoteCall"||c.type==="labelLink"||c.type==="label"||c.type==="image"||c.type==="link")break}return l;function l(c){if(!a||!a._balanced)return n(c);const d=Ga(r.sliceSerialize({start:a.end,end:r.now()}));return d.codePointAt(0)!==94||!i.includes(d.slice(1))?n(c):(t.enter("gfmFootnoteCallLabelMarker"),t.consume(c),t.exit("gfmFootnoteCallLabelMarker"),e(c))}}function ASe(t,e){let n=t.length;for(;n--;)if(t[n][1].type==="labelImage"&&t[n][0]==="enter"){t[n][1];break}t[n+1][1].type="data",t[n+3][1].type="gfmFootnoteCallLabelMarker";const r={type:"gfmFootnoteCall",start:Object.assign({},t[n+3][1].start),end:Object.assign({},t[t.length-1][1].end)},s={type:"gfmFootnoteCallMarker",start:Object.assign({},t[n+3][1].end),end:Object.assign({},t[n+3][1].end)};s.end.column++,s.end.offset++,s.end._bufferIndex++;const i={type:"gfmFootnoteCallString",start:Object.assign({},s.end),end:Object.assign({},t[t.length-1][1].start)},a={type:"chunkString",contentType:"string",start:Object.assign({},i.start),end:Object.assign({},i.end)},l=[t[n+1],t[n+2],["enter",r,e],t[n+3],t[n+4],["enter",s,e],["exit",s,e],["enter",i,e],["enter",a,e],["exit",a,e],["exit",i,e],t[t.length-2],t[t.length-1],["exit",r,e]];return t.splice(n,t.length-n+1,...l),t}function RSe(t,e,n){const r=this,s=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let i=0,a;return l;function l(m){return t.enter("gfmFootnoteCall"),t.enter("gfmFootnoteCallLabelMarker"),t.consume(m),t.exit("gfmFootnoteCallLabelMarker"),c}function c(m){return m!==94?n(m):(t.enter("gfmFootnoteCallMarker"),t.consume(m),t.exit("gfmFootnoteCallMarker"),t.enter("gfmFootnoteCallString"),t.enter("chunkString").contentType="string",d)}function d(m){if(i>999||m===93&&!a||m===null||m===91||or(m))return n(m);if(m===93){t.exit("chunkString");const g=t.exit("gfmFootnoteCallString");return s.includes(Ga(r.sliceSerialize(g)))?(t.enter("gfmFootnoteCallLabelMarker"),t.consume(m),t.exit("gfmFootnoteCallLabelMarker"),t.exit("gfmFootnoteCall"),e):n(m)}return or(m)||(a=!0),i++,t.consume(m),m===92?h:d}function h(m){return m===91||m===92||m===93?(t.consume(m),i++,d):d(m)}}function DSe(t,e,n){const r=this,s=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let i,a=0,l;return c;function c(y){return t.enter("gfmFootnoteDefinition")._container=!0,t.enter("gfmFootnoteDefinitionLabel"),t.enter("gfmFootnoteDefinitionLabelMarker"),t.consume(y),t.exit("gfmFootnoteDefinitionLabelMarker"),d}function d(y){return y===94?(t.enter("gfmFootnoteDefinitionMarker"),t.consume(y),t.exit("gfmFootnoteDefinitionMarker"),t.enter("gfmFootnoteDefinitionLabelString"),t.enter("chunkString").contentType="string",h):n(y)}function h(y){if(a>999||y===93&&!l||y===null||y===91||or(y))return n(y);if(y===93){t.exit("chunkString");const w=t.exit("gfmFootnoteDefinitionLabelString");return i=Ga(r.sliceSerialize(w)),t.enter("gfmFootnoteDefinitionLabelMarker"),t.consume(y),t.exit("gfmFootnoteDefinitionLabelMarker"),t.exit("gfmFootnoteDefinitionLabel"),g}return or(y)||(l=!0),a++,t.consume(y),y===92?m:h}function m(y){return y===91||y===92||y===93?(t.consume(y),a++,h):h(y)}function g(y){return y===58?(t.enter("definitionMarker"),t.consume(y),t.exit("definitionMarker"),s.includes(i)||s.push(i),on(t,x,"gfmFootnoteDefinitionWhitespace")):n(y)}function x(y){return e(y)}}function PSe(t,e,n){return t.check(cg,e,t.attempt(ESe,e,n))}function zSe(t){t.exit("gfmFootnoteDefinition")}function ISe(t,e,n){const r=this;return on(t,s,"gfmFootnoteDefinitionIndent",5);function s(i){const a=r.events[r.events.length-1];return a&&a[1].type==="gfmFootnoteDefinitionIndent"&&a[2].sliceSerialize(a[1],!0).length===4?e(i):n(i)}}function LSe(t){let n=(t||{}).singleTilde;const r={name:"strikethrough",tokenize:i,resolveAll:s};return n==null&&(n=!0),{text:{126:r},insideSpan:{null:[r]},attentionMarkers:{null:[126]}};function s(a,l){let c=-1;for(;++c1?c(y):(a.consume(y),m++,x);if(m<2&&!n)return c(y);const S=a.exit("strikethroughSequenceTemporary"),k=uf(y);return S._open=!k||k===2&&!!w,S._close=!w||w===2&&!!k,l(y)}}}class BSe{constructor(){this.map=[]}add(e,n,r){FSe(this,e,n,r)}consume(e){if(this.map.sort(function(i,a){return i[0]-a[0]}),this.map.length===0)return;let n=this.map.length;const r=[];for(;n>0;)n-=1,r.push(e.slice(this.map[n][0]+this.map[n][1]),this.map[n][2]),e.length=this.map[n][0];r.push(e.slice()),e.length=0;let s=r.pop();for(;s;){for(const i of s)e.push(i);s=r.pop()}this.map.length=0}}function FSe(t,e,n,r){let s=0;if(!(n===0&&r.length===0)){for(;s-1;){const z=r.events[H][1].type;if(z==="lineEnding"||z==="linePrefix")H--;else break}const U=H>-1?r.events[H][1].type:null,ee=U==="tableHead"||U==="tableRow"?_:c;return ee===_&&r.parser.lazy[r.now().line]?n(L):ee(L)}function c(L){return t.enter("tableHead"),t.enter("tableRow"),d(L)}function d(L){return L===124||(a=!0,i+=1),h(L)}function h(L){return L===null?n(L):bt(L)?i>1?(i=0,r.interrupt=!0,t.exit("tableRow"),t.enter("lineEnding"),t.consume(L),t.exit("lineEnding"),x):n(L):dn(L)?on(t,h,"whitespace")(L):(i+=1,a&&(a=!1,s+=1),L===124?(t.enter("tableCellDivider"),t.consume(L),t.exit("tableCellDivider"),a=!0,h):(t.enter("data"),m(L)))}function m(L){return L===null||L===124||or(L)?(t.exit("data"),h(L)):(t.consume(L),L===92?g:m)}function g(L){return L===92||L===124?(t.consume(L),m):m(L)}function x(L){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(L):(t.enter("tableDelimiterRow"),a=!1,dn(L)?on(t,y,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(L):y(L))}function y(L){return L===45||L===58?S(L):L===124?(a=!0,t.enter("tableCellDivider"),t.consume(L),t.exit("tableCellDivider"),w):E(L)}function w(L){return dn(L)?on(t,S,"whitespace")(L):S(L)}function S(L){return L===58?(i+=1,a=!0,t.enter("tableDelimiterMarker"),t.consume(L),t.exit("tableDelimiterMarker"),k):L===45?(i+=1,k(L)):L===null||bt(L)?T(L):E(L)}function k(L){return L===45?(t.enter("tableDelimiterFiller"),j(L)):E(L)}function j(L){return L===45?(t.consume(L),j):L===58?(a=!0,t.exit("tableDelimiterFiller"),t.enter("tableDelimiterMarker"),t.consume(L),t.exit("tableDelimiterMarker"),N):(t.exit("tableDelimiterFiller"),N(L))}function N(L){return dn(L)?on(t,T,"whitespace")(L):T(L)}function T(L){return L===124?y(L):L===null||bt(L)?!a||s!==i?E(L):(t.exit("tableDelimiterRow"),t.exit("tableHead"),e(L)):E(L)}function E(L){return n(L)}function _(L){return t.enter("tableRow"),M(L)}function M(L){return L===124?(t.enter("tableCellDivider"),t.consume(L),t.exit("tableCellDivider"),M):L===null||bt(L)?(t.exit("tableRow"),e(L)):dn(L)?on(t,M,"whitespace")(L):(t.enter("data"),I(L))}function I(L){return L===null||L===124||or(L)?(t.exit("data"),M(L)):(t.consume(L),L===92?P:I)}function P(L){return L===92||L===124?(t.consume(L),I):I(L)}}function QSe(t,e){let n=-1,r=!0,s=0,i=[0,0,0,0],a=[0,0,0,0],l=!1,c=0,d,h,m;const g=new BSe;for(;++nn[2]+1){const y=n[2]+1,w=n[3]-n[2]-1;t.add(y,w,[])}}t.add(n[3]+1,0,[["exit",m,e]])}return s!==void 0&&(i.end=Object.assign({},kh(e.events,s)),t.add(s,0,[["exit",i,e]]),i=void 0),i}function nR(t,e,n,r,s){const i=[],a=kh(e.events,n);s&&(s.end=Object.assign({},a),i.push(["exit",s,e])),r.end=Object.assign({},a),i.push(["exit",r,e]),t.add(n+1,0,i)}function kh(t,e){const n=t[e],r=n[0]==="enter"?"start":"end";return n[1][r]}const VSe={name:"tasklistCheck",tokenize:WSe};function USe(){return{text:{91:VSe}}}function WSe(t,e,n){const r=this;return s;function s(c){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(c):(t.enter("taskListCheck"),t.enter("taskListCheckMarker"),t.consume(c),t.exit("taskListCheckMarker"),i)}function i(c){return or(c)?(t.enter("taskListCheckValueUnchecked"),t.consume(c),t.exit("taskListCheckValueUnchecked"),a):c===88||c===120?(t.enter("taskListCheckValueChecked"),t.consume(c),t.exit("taskListCheckValueChecked"),a):n(c)}function a(c){return c===93?(t.enter("taskListCheckMarker"),t.consume(c),t.exit("taskListCheckMarker"),t.exit("taskListCheck"),l):n(c)}function l(c){return bt(c)?e(c):dn(c)?t.check({tokenize:GSe},e,n)(c):n(c)}}function GSe(t,e,n){return on(t,r,"whitespace");function r(s){return s===null?n(s):e(s)}}function XSe(t){return KQ([bSe(),_Se(),LSe(t),$Se(),USe()])}const YSe={};function KSe(t){const e=this,n=t||YSe,r=e.data(),s=r.micromarkExtensions||(r.micromarkExtensions=[]),i=r.fromMarkdownExtensions||(r.fromMarkdownExtensions=[]),a=r.toMarkdownExtensions||(r.toMarkdownExtensions=[]);s.push(XSe(n)),i.push(gSe()),a.push(xSe(n))}function ZSe(){return{enter:{mathFlow:t,mathFlowFenceMeta:e,mathText:i},exit:{mathFlow:s,mathFlowFence:r,mathFlowFenceMeta:n,mathFlowValue:l,mathText:a,mathTextData:l}};function t(c){const d={type:"element",tagName:"code",properties:{className:["language-math","math-display"]},children:[]};this.enter({type:"math",meta:null,value:"",data:{hName:"pre",hChildren:[d]}},c)}function e(){this.buffer()}function n(){const c=this.resume(),d=this.stack[this.stack.length-1];d.type,d.meta=c}function r(){this.data.mathFlowInside||(this.buffer(),this.data.mathFlowInside=!0)}function s(c){const d=this.resume().replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),h=this.stack[this.stack.length-1];h.type,this.exit(c),h.value=d;const m=h.data.hChildren[0];m.type,m.tagName,m.children.push({type:"text",value:d}),this.data.mathFlowInside=void 0}function i(c){this.enter({type:"inlineMath",value:"",data:{hName:"code",hProperties:{className:["language-math","math-inline"]},hChildren:[]}},c),this.buffer()}function a(c){const d=this.resume(),h=this.stack[this.stack.length-1];h.type,this.exit(c),h.value=d,h.data.hChildren.push({type:"text",value:d})}function l(c){this.config.enter.data.call(this,c),this.config.exit.data.call(this,c)}}function JSe(t){let e=(t||{}).singleDollarTextMath;return e==null&&(e=!0),r.peek=s,{unsafe:[{character:"\r",inConstruct:"mathFlowMeta"},{character:` +`,inConstruct:"mathFlowMeta"},{character:"$",after:e?void 0:"\\$",inConstruct:"phrasing"},{character:"$",inConstruct:"mathFlowMeta"},{atBreak:!0,character:"$",after:"\\$"}],handlers:{math:n,inlineMath:r}};function n(i,a,l,c){const d=i.value||"",h=l.createTracker(c),m="$".repeat(Math.max(SV(d,"$")+1,2)),g=l.enter("mathFlow");let x=h.move(m);if(i.meta){const y=l.enter("mathFlowMeta");x+=h.move(l.safe(i.meta,{after:` +`,before:x,encode:["$"],...h.current()})),y()}return x+=h.move(` +`),d&&(x+=h.move(d+` +`)),x+=h.move(m),g(),x}function r(i,a,l){let c=i.value||"",d=1;for(e||d++;new RegExp("(^|[^$])"+"\\$".repeat(d)+"([^$]|$)").test(c);)d++;const h="$".repeat(d);/[^ \r\n]/.test(c)&&(/^[ \r\n]/.test(c)&&/[ \r\n]$/.test(c)||/^\$|\$$/.test(c))&&(c=" "+c+" ");let m=-1;for(;++m15?d="…"+l.slice(s-15,s):d=l.slice(0,s);var h;i+15":">","<":"<",'"':""","'":"'"},d5e=/[&><"']/g;function h5e(t){return String(t).replace(d5e,e=>u5e[e])}var $V=function t(e){return e.type==="ordgroup"||e.type==="color"?e.body.length===1?t(e.body[0]):e:e.type==="font"?t(e.body):e},f5e=function(e){var n=$V(e);return n.type==="mathord"||n.type==="textord"||n.type==="atom"},m5e=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e},p5e=function(e){var n=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return n?n[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(n[1])?null:n[1].toLowerCase():"_relative"},$n={deflt:o5e,escape:h5e,hyphenate:c5e,getBaseElem:$V,isCharacterBox:f5e,protocolFromUrl:p5e},wv={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:t=>"#"+t},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(t,e)=>(e.push(t),e)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:t=>Math.max(0,t),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:t=>Math.max(0,t),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:t=>Math.max(0,t),cli:"-e, --max-expand ",cliProcessor:t=>t==="Infinity"?1/0:parseInt(t)},globalGroup:{type:"boolean",cli:!1}};function g5e(t){if(t.default)return t.default;var e=t.type,n=Array.isArray(e)?e[0]:e;if(typeof n!="string")return n.enum[0];switch(n){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}class bN{constructor(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{};for(var n in wv)if(wv.hasOwnProperty(n)){var r=wv[n];this[n]=e[n]!==void 0?r.processor?r.processor(e[n]):e[n]:g5e(r)}}reportNonstrict(e,n,r){var s=this.strict;if(typeof s=="function"&&(s=s(e,n,r)),!(!s||s==="ignore")){if(s===!0||s==="error")throw new $e("LaTeX-incompatible input and strict mode is set to 'error': "+(n+" ["+e+"]"),r);s==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(n+" ["+e+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+s+"': "+n+" ["+e+"]"))}}useStrictBehavior(e,n,r){var s=this.strict;if(typeof s=="function")try{s=s(e,n,r)}catch{s="error"}return!s||s==="ignore"?!1:s===!0||s==="error"?!0:s==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(n+" ["+e+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+s+"': "+n+" ["+e+"]")),!1)}isTrusted(e){if(e.url&&!e.protocol){var n=$n.protocolFromUrl(e.url);if(n==null)return!1;e.protocol=n}var r=typeof this.trust=="function"?this.trust(e):this.trust;return!!r}}class Nc{constructor(e,n,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=n,this.cramped=r}sup(){return bo[x5e[this.id]]}sub(){return bo[v5e[this.id]]}fracNum(){return bo[y5e[this.id]]}fracDen(){return bo[b5e[this.id]]}cramp(){return bo[w5e[this.id]]}text(){return bo[S5e[this.id]]}isTight(){return this.size>=2}}var wN=0,xy=1,$h=2,Il=3,mp=4,Sa=5,df=6,ei=7,bo=[new Nc(wN,0,!1),new Nc(xy,0,!0),new Nc($h,1,!1),new Nc(Il,1,!0),new Nc(mp,2,!1),new Nc(Sa,2,!0),new Nc(df,3,!1),new Nc(ei,3,!0)],x5e=[mp,Sa,mp,Sa,df,ei,df,ei],v5e=[Sa,Sa,Sa,Sa,ei,ei,ei,ei],y5e=[$h,Il,mp,Sa,df,ei,df,ei],b5e=[Il,Il,Sa,Sa,ei,ei,ei,ei],w5e=[xy,xy,Il,Il,Sa,Sa,ei,ei],S5e=[wN,xy,$h,Il,$h,Il,$h,Il],Et={DISPLAY:bo[wN],TEXT:bo[$h],SCRIPT:bo[mp],SCRIPTSCRIPT:bo[df]},AO=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];function k5e(t){for(var e=0;e=s[0]&&t<=s[1])return n.name}return null}var Sv=[];AO.forEach(t=>t.blocks.forEach(e=>Sv.push(...e)));function HV(t){for(var e=0;e=Sv[e]&&t<=Sv[e+1])return!0;return!1}var ch=80,O5e=function(e,n){return"M95,"+(622+e+n)+` +c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 +c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 +c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 +s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 +c69,-144,104.5,-217.7,106.5,-221 +l`+e/2.075+" -"+e+` +c5.3,-9.3,12,-14,20,-14 +H400000v`+(40+e)+`H845.2724 +s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 +c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z +M`+(834+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},j5e=function(e,n){return"M263,"+(601+e+n)+`c0.7,0,18,39.7,52,119 +c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 +c340,-704.7,510.7,-1060.3,512,-1067 +l`+e/2.084+" -"+e+` +c4.7,-7.3,11,-11,19,-11 +H40000v`+(40+e)+`H1012.3 +s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 +c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 +s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 +c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z +M`+(1001+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},N5e=function(e,n){return"M983 "+(10+e+n)+` +l`+e/3.13+" -"+e+` +c4,-6.7,10,-10,18,-10 H400000v`+(40+e)+` +H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 +s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 +c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 +c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 +c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 +c53.7,-170.3,84.5,-266.8,92.5,-289.5z +M`+(1001+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},C5e=function(e,n){return"M424,"+(2398+e+n)+` +c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 +c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 +s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 +s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 +l`+e/4.223+" -"+e+`c4,-6.7,10,-10,18,-10 H400000 +v`+(40+e)+`H1014.6 +s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 +c-2,6,-10,9,-24,9 +c-8,0,-12,-0.7,-12,-2z M`+(1001+e)+" "+n+` +h400000v`+(40+e)+"h-400000z"},T5e=function(e,n){return"M473,"+(2713+e+n)+` +c339.3,-1799.3,509.3,-2700,510,-2702 l`+e/5.298+" -"+e+` +c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+e)+`H1017.7 +s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 +c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 +c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 +s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, +606zM`+(1001+e)+" "+n+"h400000v"+(40+e)+"H1017.7z"},E5e=function(e){var n=e/2;return"M400000 "+e+" H0 L"+n+" 0 l65 45 L145 "+(e-80)+" H400000z"},_5e=function(e,n,r){var s=r-54-n-e;return"M702 "+(e+n)+"H400000"+(40+e)+` +H742v`+s+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 +h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 +c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 +219 661 l218 661zM702 `+n+"H400000v"+(40+e)+"H742z"},M5e=function(e,n,r){n=1e3*n;var s="";switch(e){case"sqrtMain":s=O5e(n,ch);break;case"sqrtSize1":s=j5e(n,ch);break;case"sqrtSize2":s=N5e(n,ch);break;case"sqrtSize3":s=C5e(n,ch);break;case"sqrtSize4":s=T5e(n,ch);break;case"sqrtTall":s=_5e(n,ch,r)}return s},A5e=function(e,n){switch(e){case"⎜":return"M291 0 H417 V"+n+" H291z M291 0 H417 V"+n+" H291z";case"∣":return"M145 0 H188 V"+n+" H145z M145 0 H188 V"+n+" H145z";case"∥":return"M145 0 H188 V"+n+" H145z M145 0 H188 V"+n+" H145z"+("M367 0 H410 V"+n+" H367z M367 0 H410 V"+n+" H367z");case"⎟":return"M457 0 H583 V"+n+" H457z M457 0 H583 V"+n+" H457z";case"⎢":return"M319 0 H403 V"+n+" H319z M319 0 H403 V"+n+" H319z";case"⎥":return"M263 0 H347 V"+n+" H263z M263 0 H347 V"+n+" H263z";case"⎪":return"M384 0 H504 V"+n+" H384z M384 0 H504 V"+n+" H384z";case"⏐":return"M312 0 H355 V"+n+" H312z M312 0 H355 V"+n+" H312z";case"‖":return"M257 0 H300 V"+n+" H257z M257 0 H300 V"+n+" H257z"+("M478 0 H521 V"+n+" H478z M478 0 H521 V"+n+" H478z");default:return""}},sR={doubleleftarrow:`M262 157 +l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 + 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 + 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 +c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5 + 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87 +-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 +-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z +m8 0v40h399730v-40zm0 194v40h399730v-40z`,doublerightarrow:`M399738 392l +-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5 + 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88 +-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68 +-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18 +-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 +c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3 +-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`,leftarrow:`M400000 241H110l3-3c68.7-52.7 113.7-120 + 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8 +-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247 +c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208 + 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3 + 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202 + l-3-3h399890zM100 241v40h399900v-40z`,leftbrace:`M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 +-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 + 5-6 9-10 13-.7 1-7.3 1-20 1H6z`,leftbraceunder:`M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13 + 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688 + 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 +-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`,leftgroup:`M400000 80 +H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0 + 435 0h399565z`,leftgroupunder:`M400000 262 +H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 + 435 219h399565z`,leftharpoon:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 +-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5 +-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7 +-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`,leftharpoonplus:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5 + 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3 +-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7 +-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z +m0 0v40h400000v-40z`,leftharpoondown:`M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 + 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 + 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667 +-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`,leftharpoondownplus:`M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12 + 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7 +-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 +v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,lefthook:`M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 +-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3 +-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21 + 71.5 23h399859zM103 281v-40h399897v40z`,leftlinesegment:`M40 281 V428 H0 V94 H40 V241 H400000 v40z +M40 281 V428 H0 V94 H40 V241 H400000 v40z`,leftmapsto:`M40 281 V448H0V74H40V241H400000v40z +M40 281 V448H0V74H40V241H400000v40z`,leftToFrom:`M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 +-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8 +c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3 + 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,longequal:`M0 50 h400000 v40H0z m0 194h40000v40H0z +M0 50 h400000 v40H0z m0 194h40000v40H0z`,midbrace:`M200428 334 +c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14 +-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 + 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11 + 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`,midbraceunder:`M199572 214 +c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14 + 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 + 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0 +-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`,oiintSize1:`M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6 +-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z +m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8 +60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`,oiintSize2:`M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8 +-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z +m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 +c0 110 84 276 504 276s502.4-166 502.4-276z`,oiiintSize1:`M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6 +-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z +m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 +85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`,oiiintSize2:`M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8 +-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z +m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 +c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`,rightarrow:`M0 241v40h399891c-47.3 35.3-84 78-110 128 +-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 + 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 + 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85 +-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 +-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 + 151.7 139 205zm0 0v40h399900v-40z`,rightbrace:`M400000 542l +-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5 +s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 +c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`,rightbraceunder:`M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3 + 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 +-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`,rightgroup:`M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0 + 3-1 3-3v-38c-76-158-257-219-435-219H0z`,rightgroupunder:`M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18 + 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`,rightharpoon:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3 +-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2 +-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 + 69.2 92 94.5zm0 0v40h399900v-40z`,rightharpoonplus:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11 +-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7 + 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z +m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`,rightharpoondown:`M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 + 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5 +-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95 +-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`,rightharpoondownplus:`M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8 + 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 + 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3 +-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z +m0-194v40h400000v-40zm0 0v40h400000v-40z`,righthook:`M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3 + 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0 +-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21 + 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,rightlinesegment:`M399960 241 V94 h40 V428 h-40 V281 H0 v-40z +M399960 241 V94 h40 V428 h-40 V281 H0 v-40z`,rightToFrom:`M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23 + 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 +-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142 +-167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,twoheadleftarrow:`M0 167c68 40 + 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69 +-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 +-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 +-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 + 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`,twoheadrightarrow:`M400000 167 +c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 + 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42 + 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 +-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 + 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`,tilde1:`M200 55.538c-77 0-168 73.953-177 73.953-3 0-7 +-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0 + 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0 + 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 +-68.267.847-113-73.952-191-73.952z`,tilde2:`M344 55.266c-142 0-300.638 81.316-311.5 86.418 +-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9 + 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 +c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751 + 181.476 676 181.476c-149 0-189-126.21-332-126.21z`,tilde3:`M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457 +-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 + 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 + 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 + -338 0-409-156.573-744-156.573z`,tilde4:`M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 +-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 + 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 + 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 + -175.236-744-175.236z`,vec:`M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5 +3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 +10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 +-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1 +-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 +H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 +c-16-25.333-24-45-24-59z`,widehat1:`M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 +c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`,widehat2:`M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat3:`M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat4:`M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widecheck1:`M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1, +-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`,widecheck2:`M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck3:`M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck4:`M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,baraboveleftarrow:`M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202 +c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 +c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130 +s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47 +121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6 +s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11 +c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z +M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,rightarrowabovebar:`M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32 +-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 +13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39 +-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5 +-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 +-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 +151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`,baraboveshortleftharpoon:`M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 +c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 +c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21 +c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 +c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z +M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`,rightharpoonaboveshortbar:`M0,241 l0,40c399126,0,399993,0,399993,0 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 +c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z +M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`,shortbaraboveleftharpoon:`M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 +c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9, +1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7, +-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z +M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`,shortrightharpoonabovebar:`M53,241l0,40c398570,0,399437,0,399437,0 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 +c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z +M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},R5e=function(e,n){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+n+` v1759 h347 v-84 +H403z M403 1759 V0 H319 V1759 v`+n+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+n+` v1759 H0 v84 H347z +M347 1759 V0 H263 V1759 v`+n+" v1759 h84z";case"vert":return"M145 15 v585 v"+n+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-n+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+n+" v585 h43z";case"doublevert":return"M145 15 v585 v"+n+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-n+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+n+` v585 h43z +M367 15 v585 v`+n+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-n+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v`+n+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+n+` v1715 h263 v84 H319z +MM319 602 V0 H403 V602 v`+n+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+n+` v1799 H0 v-84 H319z +MM319 602 V0 H403 V602 v`+n+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+n+` v602 h84z +M403 1759 V0 H319 V1759 v`+n+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+n+` v602 h84z +M347 1759 V0 h-84 V1759 v`+n+" v602 h84z";case"lparen":return`M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1 +c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349, +-36,557 l0,`+(n+84)+`c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, +949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9 +c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, +-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 +l0,-`+(n+92)+`c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, +-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z`;case"rparen":return`M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3, +63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 +c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,`+(n+9)+` +c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664 +c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11 +c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 +c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 +l0,-`+(n+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, +-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}};class hg{constructor(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return this.classes.includes(e)}toNode(){for(var e=document.createDocumentFragment(),n=0;nn.toText();return this.children.map(e).join("")}}var _o={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},E1={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},iR={Å:"A",Ð:"D",Þ:"o",å:"a",ð:"d",þ:"o",А:"A",Б:"B",В:"B",Г:"F",Д:"A",Е:"E",Ж:"K",З:"3",И:"N",Й:"N",К:"K",Л:"N",М:"M",Н:"H",О:"O",П:"N",Р:"P",С:"C",Т:"T",У:"y",Ф:"O",Х:"X",Ц:"U",Ч:"h",Ш:"W",Щ:"W",Ъ:"B",Ы:"X",Ь:"B",Э:"3",Ю:"X",Я:"R",а:"a",б:"b",в:"a",г:"r",д:"y",е:"e",ж:"m",з:"e",и:"n",й:"n",к:"n",л:"n",м:"m",н:"n",о:"o",п:"n",р:"p",с:"c",т:"o",у:"y",ф:"b",х:"x",ц:"n",ч:"n",ш:"w",щ:"w",ъ:"a",ы:"m",ь:"a",э:"e",ю:"m",я:"r"};function D5e(t,e){_o[t]=e}function SN(t,e,n){if(!_o[e])throw new Error("Font metrics not found for font: "+e+".");var r=t.charCodeAt(0),s=_o[e][r];if(!s&&t[0]in iR&&(r=iR[t[0]].charCodeAt(0),s=_o[e][r]),!s&&n==="text"&&HV(r)&&(s=_o[e][77]),s)return{depth:s[0],height:s[1],italic:s[2],skew:s[3],width:s[4]}}var BS={};function P5e(t){var e;if(t>=5?e=0:t>=3?e=1:e=2,!BS[e]){var n=BS[e]={cssEmPerMu:E1.quad[e]/18};for(var r in E1)E1.hasOwnProperty(r)&&(n[r]=E1[r][e])}return BS[e]}var z5e=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],aR=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],oR=function(e,n){return n.size<2?e:z5e[e-1][n.size-1]};class Cl{constructor(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||Cl.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=aR[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var n={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);return new Cl(n)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:oR(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:aR[e-1]})}havingBaseStyle(e){e=e||this.style.text();var n=oR(Cl.BASESIZE,e);return this.size===n&&this.textSize===Cl.BASESIZE&&this.style===e?this:this.extend({style:e,size:n})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==Cl.BASESIZE?["sizing","reset-size"+this.size,"size"+Cl.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=P5e(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}Cl.BASESIZE=6;var RO={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},I5e={ex:!0,em:!0,mu:!0},QV=function(e){return typeof e!="string"&&(e=e.unit),e in RO||e in I5e||e==="ex"},Rr=function(e,n){var r;if(e.unit in RO)r=RO[e.unit]/n.fontMetrics().ptPerEm/n.sizeMultiplier;else if(e.unit==="mu")r=n.fontMetrics().cssEmPerMu;else{var s;if(n.style.isTight()?s=n.havingStyle(n.style.text()):s=n,e.unit==="ex")r=s.fontMetrics().xHeight;else if(e.unit==="em")r=s.fontMetrics().quad;else throw new $e("Invalid unit: '"+e.unit+"'");s!==n&&(r*=s.sizeMultiplier/n.sizeMultiplier)}return Math.min(e.number*r,n.maxSize)},Xe=function(e){return+e.toFixed(4)+"em"},eu=function(e){return e.filter(n=>n).join(" ")},VV=function(e,n,r){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},n){n.style.isTight()&&this.classes.push("mtight");var s=n.getColor();s&&(this.style.color=s)}},UV=function(e){var n=document.createElement(e);n.className=eu(this.classes);for(var r in this.style)this.style.hasOwnProperty(r)&&(n.style[r]=this.style[r]);for(var s in this.attributes)this.attributes.hasOwnProperty(s)&&n.setAttribute(s,this.attributes[s]);for(var i=0;i/=\x00-\x1f]/,WV=function(e){var n="<"+e;this.classes.length&&(n+=' class="'+$n.escape(eu(this.classes))+'"');var r="";for(var s in this.style)this.style.hasOwnProperty(s)&&(r+=$n.hyphenate(s)+":"+this.style[s]+";");r&&(n+=' style="'+$n.escape(r)+'"');for(var i in this.attributes)if(this.attributes.hasOwnProperty(i)){if(L5e.test(i))throw new $e("Invalid attribute name '"+i+"'");n+=" "+i+'="'+$n.escape(this.attributes[i])+'"'}n+=">";for(var a=0;a",n};class fg{constructor(e,n,r,s){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,VV.call(this,e,r,s),this.children=n||[]}setAttribute(e,n){this.attributes[e]=n}hasClass(e){return this.classes.includes(e)}toNode(){return UV.call(this,"span")}toMarkup(){return WV.call(this,"span")}}class kN{constructor(e,n,r,s){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,VV.call(this,n,s),this.children=r||[],this.setAttribute("href",e)}setAttribute(e,n){this.attributes[e]=n}hasClass(e){return this.classes.includes(e)}toNode(){return UV.call(this,"a")}toMarkup(){return WV.call(this,"a")}}class B5e{constructor(e,n,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=n,this.src=e,this.classes=["mord"],this.style=r}hasClass(e){return this.classes.includes(e)}toNode(){var e=document.createElement("img");e.src=this.src,e.alt=this.alt,e.className="mord";for(var n in this.style)this.style.hasOwnProperty(n)&&(e.style[n]=this.style[n]);return e}toMarkup(){var e=''+$n.escape(this.alt)+'0&&(n=document.createElement("span"),n.style.marginRight=Xe(this.italic)),this.classes.length>0&&(n=n||document.createElement("span"),n.className=eu(this.classes));for(var r in this.style)this.style.hasOwnProperty(r)&&(n=n||document.createElement("span"),n.style[r]=this.style[r]);return n?(n.appendChild(e),n):e}toMarkup(){var e=!1,n="0&&(r+="margin-right:"+this.italic+"em;");for(var s in this.style)this.style.hasOwnProperty(s)&&(r+=$n.hyphenate(s)+":"+this.style[s]+";");r&&(e=!0,n+=' style="'+$n.escape(r)+'"');var i=$n.escape(this.text);return e?(n+=">",n+=i,n+="",n):i}}class Hl{constructor(e,n){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=n||{}}toNode(){var e="http://www.w3.org/2000/svg",n=document.createElementNS(e,"svg");for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&n.setAttribute(r,this.attributes[r]);for(var s=0;s':''}}class DO{constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e="http://www.w3.org/2000/svg",n=document.createElementNS(e,"line");for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&n.setAttribute(r,this.attributes[r]);return n}toMarkup(){var e=" but got "+String(t)+".")}var $5e={bin:1,close:1,inner:1,open:1,punct:1,rel:1},H5e={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},dr={math:{},text:{}};function A(t,e,n,r,s,i){dr[t][s]={font:e,group:n,replace:r},i&&r&&(dr[t][r]=dr[t][s])}var D="math",Be="text",$="main",le="ams",jr="accent-token",lt="bin",ii="close",Bf="inner",Tt="mathord",as="op-token",Ji="open",Pb="punct",ce="rel",Kl="spacing",me="textord";A(D,$,ce,"≡","\\equiv",!0);A(D,$,ce,"≺","\\prec",!0);A(D,$,ce,"≻","\\succ",!0);A(D,$,ce,"∼","\\sim",!0);A(D,$,ce,"⊥","\\perp");A(D,$,ce,"⪯","\\preceq",!0);A(D,$,ce,"⪰","\\succeq",!0);A(D,$,ce,"≃","\\simeq",!0);A(D,$,ce,"∣","\\mid",!0);A(D,$,ce,"≪","\\ll",!0);A(D,$,ce,"≫","\\gg",!0);A(D,$,ce,"≍","\\asymp",!0);A(D,$,ce,"∥","\\parallel");A(D,$,ce,"⋈","\\bowtie",!0);A(D,$,ce,"⌣","\\smile",!0);A(D,$,ce,"⊑","\\sqsubseteq",!0);A(D,$,ce,"⊒","\\sqsupseteq",!0);A(D,$,ce,"≐","\\doteq",!0);A(D,$,ce,"⌢","\\frown",!0);A(D,$,ce,"∋","\\ni",!0);A(D,$,ce,"∝","\\propto",!0);A(D,$,ce,"⊢","\\vdash",!0);A(D,$,ce,"⊣","\\dashv",!0);A(D,$,ce,"∋","\\owns");A(D,$,Pb,".","\\ldotp");A(D,$,Pb,"⋅","\\cdotp");A(D,$,me,"#","\\#");A(Be,$,me,"#","\\#");A(D,$,me,"&","\\&");A(Be,$,me,"&","\\&");A(D,$,me,"ℵ","\\aleph",!0);A(D,$,me,"∀","\\forall",!0);A(D,$,me,"ℏ","\\hbar",!0);A(D,$,me,"∃","\\exists",!0);A(D,$,me,"∇","\\nabla",!0);A(D,$,me,"♭","\\flat",!0);A(D,$,me,"ℓ","\\ell",!0);A(D,$,me,"♮","\\natural",!0);A(D,$,me,"♣","\\clubsuit",!0);A(D,$,me,"℘","\\wp",!0);A(D,$,me,"♯","\\sharp",!0);A(D,$,me,"♢","\\diamondsuit",!0);A(D,$,me,"ℜ","\\Re",!0);A(D,$,me,"♡","\\heartsuit",!0);A(D,$,me,"ℑ","\\Im",!0);A(D,$,me,"♠","\\spadesuit",!0);A(D,$,me,"§","\\S",!0);A(Be,$,me,"§","\\S");A(D,$,me,"¶","\\P",!0);A(Be,$,me,"¶","\\P");A(D,$,me,"†","\\dag");A(Be,$,me,"†","\\dag");A(Be,$,me,"†","\\textdagger");A(D,$,me,"‡","\\ddag");A(Be,$,me,"‡","\\ddag");A(Be,$,me,"‡","\\textdaggerdbl");A(D,$,ii,"⎱","\\rmoustache",!0);A(D,$,Ji,"⎰","\\lmoustache",!0);A(D,$,ii,"⟯","\\rgroup",!0);A(D,$,Ji,"⟮","\\lgroup",!0);A(D,$,lt,"∓","\\mp",!0);A(D,$,lt,"⊖","\\ominus",!0);A(D,$,lt,"⊎","\\uplus",!0);A(D,$,lt,"⊓","\\sqcap",!0);A(D,$,lt,"∗","\\ast");A(D,$,lt,"⊔","\\sqcup",!0);A(D,$,lt,"◯","\\bigcirc",!0);A(D,$,lt,"∙","\\bullet",!0);A(D,$,lt,"‡","\\ddagger");A(D,$,lt,"≀","\\wr",!0);A(D,$,lt,"⨿","\\amalg");A(D,$,lt,"&","\\And");A(D,$,ce,"⟵","\\longleftarrow",!0);A(D,$,ce,"⇐","\\Leftarrow",!0);A(D,$,ce,"⟸","\\Longleftarrow",!0);A(D,$,ce,"⟶","\\longrightarrow",!0);A(D,$,ce,"⇒","\\Rightarrow",!0);A(D,$,ce,"⟹","\\Longrightarrow",!0);A(D,$,ce,"↔","\\leftrightarrow",!0);A(D,$,ce,"⟷","\\longleftrightarrow",!0);A(D,$,ce,"⇔","\\Leftrightarrow",!0);A(D,$,ce,"⟺","\\Longleftrightarrow",!0);A(D,$,ce,"↦","\\mapsto",!0);A(D,$,ce,"⟼","\\longmapsto",!0);A(D,$,ce,"↗","\\nearrow",!0);A(D,$,ce,"↩","\\hookleftarrow",!0);A(D,$,ce,"↪","\\hookrightarrow",!0);A(D,$,ce,"↘","\\searrow",!0);A(D,$,ce,"↼","\\leftharpoonup",!0);A(D,$,ce,"⇀","\\rightharpoonup",!0);A(D,$,ce,"↙","\\swarrow",!0);A(D,$,ce,"↽","\\leftharpoondown",!0);A(D,$,ce,"⇁","\\rightharpoondown",!0);A(D,$,ce,"↖","\\nwarrow",!0);A(D,$,ce,"⇌","\\rightleftharpoons",!0);A(D,le,ce,"≮","\\nless",!0);A(D,le,ce,"","\\@nleqslant");A(D,le,ce,"","\\@nleqq");A(D,le,ce,"⪇","\\lneq",!0);A(D,le,ce,"≨","\\lneqq",!0);A(D,le,ce,"","\\@lvertneqq");A(D,le,ce,"⋦","\\lnsim",!0);A(D,le,ce,"⪉","\\lnapprox",!0);A(D,le,ce,"⊀","\\nprec",!0);A(D,le,ce,"⋠","\\npreceq",!0);A(D,le,ce,"⋨","\\precnsim",!0);A(D,le,ce,"⪹","\\precnapprox",!0);A(D,le,ce,"≁","\\nsim",!0);A(D,le,ce,"","\\@nshortmid");A(D,le,ce,"∤","\\nmid",!0);A(D,le,ce,"⊬","\\nvdash",!0);A(D,le,ce,"⊭","\\nvDash",!0);A(D,le,ce,"⋪","\\ntriangleleft");A(D,le,ce,"⋬","\\ntrianglelefteq",!0);A(D,le,ce,"⊊","\\subsetneq",!0);A(D,le,ce,"","\\@varsubsetneq");A(D,le,ce,"⫋","\\subsetneqq",!0);A(D,le,ce,"","\\@varsubsetneqq");A(D,le,ce,"≯","\\ngtr",!0);A(D,le,ce,"","\\@ngeqslant");A(D,le,ce,"","\\@ngeqq");A(D,le,ce,"⪈","\\gneq",!0);A(D,le,ce,"≩","\\gneqq",!0);A(D,le,ce,"","\\@gvertneqq");A(D,le,ce,"⋧","\\gnsim",!0);A(D,le,ce,"⪊","\\gnapprox",!0);A(D,le,ce,"⊁","\\nsucc",!0);A(D,le,ce,"⋡","\\nsucceq",!0);A(D,le,ce,"⋩","\\succnsim",!0);A(D,le,ce,"⪺","\\succnapprox",!0);A(D,le,ce,"≆","\\ncong",!0);A(D,le,ce,"","\\@nshortparallel");A(D,le,ce,"∦","\\nparallel",!0);A(D,le,ce,"⊯","\\nVDash",!0);A(D,le,ce,"⋫","\\ntriangleright");A(D,le,ce,"⋭","\\ntrianglerighteq",!0);A(D,le,ce,"","\\@nsupseteqq");A(D,le,ce,"⊋","\\supsetneq",!0);A(D,le,ce,"","\\@varsupsetneq");A(D,le,ce,"⫌","\\supsetneqq",!0);A(D,le,ce,"","\\@varsupsetneqq");A(D,le,ce,"⊮","\\nVdash",!0);A(D,le,ce,"⪵","\\precneqq",!0);A(D,le,ce,"⪶","\\succneqq",!0);A(D,le,ce,"","\\@nsubseteqq");A(D,le,lt,"⊴","\\unlhd");A(D,le,lt,"⊵","\\unrhd");A(D,le,ce,"↚","\\nleftarrow",!0);A(D,le,ce,"↛","\\nrightarrow",!0);A(D,le,ce,"⇍","\\nLeftarrow",!0);A(D,le,ce,"⇏","\\nRightarrow",!0);A(D,le,ce,"↮","\\nleftrightarrow",!0);A(D,le,ce,"⇎","\\nLeftrightarrow",!0);A(D,le,ce,"△","\\vartriangle");A(D,le,me,"ℏ","\\hslash");A(D,le,me,"▽","\\triangledown");A(D,le,me,"◊","\\lozenge");A(D,le,me,"Ⓢ","\\circledS");A(D,le,me,"®","\\circledR");A(Be,le,me,"®","\\circledR");A(D,le,me,"∡","\\measuredangle",!0);A(D,le,me,"∄","\\nexists");A(D,le,me,"℧","\\mho");A(D,le,me,"Ⅎ","\\Finv",!0);A(D,le,me,"⅁","\\Game",!0);A(D,le,me,"‵","\\backprime");A(D,le,me,"▲","\\blacktriangle");A(D,le,me,"▼","\\blacktriangledown");A(D,le,me,"■","\\blacksquare");A(D,le,me,"⧫","\\blacklozenge");A(D,le,me,"★","\\bigstar");A(D,le,me,"∢","\\sphericalangle",!0);A(D,le,me,"∁","\\complement",!0);A(D,le,me,"ð","\\eth",!0);A(Be,$,me,"ð","ð");A(D,le,me,"╱","\\diagup");A(D,le,me,"╲","\\diagdown");A(D,le,me,"□","\\square");A(D,le,me,"□","\\Box");A(D,le,me,"◊","\\Diamond");A(D,le,me,"¥","\\yen",!0);A(Be,le,me,"¥","\\yen",!0);A(D,le,me,"✓","\\checkmark",!0);A(Be,le,me,"✓","\\checkmark");A(D,le,me,"ℶ","\\beth",!0);A(D,le,me,"ℸ","\\daleth",!0);A(D,le,me,"ℷ","\\gimel",!0);A(D,le,me,"ϝ","\\digamma",!0);A(D,le,me,"ϰ","\\varkappa");A(D,le,Ji,"┌","\\@ulcorner",!0);A(D,le,ii,"┐","\\@urcorner",!0);A(D,le,Ji,"└","\\@llcorner",!0);A(D,le,ii,"┘","\\@lrcorner",!0);A(D,le,ce,"≦","\\leqq",!0);A(D,le,ce,"⩽","\\leqslant",!0);A(D,le,ce,"⪕","\\eqslantless",!0);A(D,le,ce,"≲","\\lesssim",!0);A(D,le,ce,"⪅","\\lessapprox",!0);A(D,le,ce,"≊","\\approxeq",!0);A(D,le,lt,"⋖","\\lessdot");A(D,le,ce,"⋘","\\lll",!0);A(D,le,ce,"≶","\\lessgtr",!0);A(D,le,ce,"⋚","\\lesseqgtr",!0);A(D,le,ce,"⪋","\\lesseqqgtr",!0);A(D,le,ce,"≑","\\doteqdot");A(D,le,ce,"≓","\\risingdotseq",!0);A(D,le,ce,"≒","\\fallingdotseq",!0);A(D,le,ce,"∽","\\backsim",!0);A(D,le,ce,"⋍","\\backsimeq",!0);A(D,le,ce,"⫅","\\subseteqq",!0);A(D,le,ce,"⋐","\\Subset",!0);A(D,le,ce,"⊏","\\sqsubset",!0);A(D,le,ce,"≼","\\preccurlyeq",!0);A(D,le,ce,"⋞","\\curlyeqprec",!0);A(D,le,ce,"≾","\\precsim",!0);A(D,le,ce,"⪷","\\precapprox",!0);A(D,le,ce,"⊲","\\vartriangleleft");A(D,le,ce,"⊴","\\trianglelefteq");A(D,le,ce,"⊨","\\vDash",!0);A(D,le,ce,"⊪","\\Vvdash",!0);A(D,le,ce,"⌣","\\smallsmile");A(D,le,ce,"⌢","\\smallfrown");A(D,le,ce,"≏","\\bumpeq",!0);A(D,le,ce,"≎","\\Bumpeq",!0);A(D,le,ce,"≧","\\geqq",!0);A(D,le,ce,"⩾","\\geqslant",!0);A(D,le,ce,"⪖","\\eqslantgtr",!0);A(D,le,ce,"≳","\\gtrsim",!0);A(D,le,ce,"⪆","\\gtrapprox",!0);A(D,le,lt,"⋗","\\gtrdot");A(D,le,ce,"⋙","\\ggg",!0);A(D,le,ce,"≷","\\gtrless",!0);A(D,le,ce,"⋛","\\gtreqless",!0);A(D,le,ce,"⪌","\\gtreqqless",!0);A(D,le,ce,"≖","\\eqcirc",!0);A(D,le,ce,"≗","\\circeq",!0);A(D,le,ce,"≜","\\triangleq",!0);A(D,le,ce,"∼","\\thicksim");A(D,le,ce,"≈","\\thickapprox");A(D,le,ce,"⫆","\\supseteqq",!0);A(D,le,ce,"⋑","\\Supset",!0);A(D,le,ce,"⊐","\\sqsupset",!0);A(D,le,ce,"≽","\\succcurlyeq",!0);A(D,le,ce,"⋟","\\curlyeqsucc",!0);A(D,le,ce,"≿","\\succsim",!0);A(D,le,ce,"⪸","\\succapprox",!0);A(D,le,ce,"⊳","\\vartriangleright");A(D,le,ce,"⊵","\\trianglerighteq");A(D,le,ce,"⊩","\\Vdash",!0);A(D,le,ce,"∣","\\shortmid");A(D,le,ce,"∥","\\shortparallel");A(D,le,ce,"≬","\\between",!0);A(D,le,ce,"⋔","\\pitchfork",!0);A(D,le,ce,"∝","\\varpropto");A(D,le,ce,"◀","\\blacktriangleleft");A(D,le,ce,"∴","\\therefore",!0);A(D,le,ce,"∍","\\backepsilon");A(D,le,ce,"▶","\\blacktriangleright");A(D,le,ce,"∵","\\because",!0);A(D,le,ce,"⋘","\\llless");A(D,le,ce,"⋙","\\gggtr");A(D,le,lt,"⊲","\\lhd");A(D,le,lt,"⊳","\\rhd");A(D,le,ce,"≂","\\eqsim",!0);A(D,$,ce,"⋈","\\Join");A(D,le,ce,"≑","\\Doteq",!0);A(D,le,lt,"∔","\\dotplus",!0);A(D,le,lt,"∖","\\smallsetminus");A(D,le,lt,"⋒","\\Cap",!0);A(D,le,lt,"⋓","\\Cup",!0);A(D,le,lt,"⩞","\\doublebarwedge",!0);A(D,le,lt,"⊟","\\boxminus",!0);A(D,le,lt,"⊞","\\boxplus",!0);A(D,le,lt,"⋇","\\divideontimes",!0);A(D,le,lt,"⋉","\\ltimes",!0);A(D,le,lt,"⋊","\\rtimes",!0);A(D,le,lt,"⋋","\\leftthreetimes",!0);A(D,le,lt,"⋌","\\rightthreetimes",!0);A(D,le,lt,"⋏","\\curlywedge",!0);A(D,le,lt,"⋎","\\curlyvee",!0);A(D,le,lt,"⊝","\\circleddash",!0);A(D,le,lt,"⊛","\\circledast",!0);A(D,le,lt,"⋅","\\centerdot");A(D,le,lt,"⊺","\\intercal",!0);A(D,le,lt,"⋒","\\doublecap");A(D,le,lt,"⋓","\\doublecup");A(D,le,lt,"⊠","\\boxtimes",!0);A(D,le,ce,"⇢","\\dashrightarrow",!0);A(D,le,ce,"⇠","\\dashleftarrow",!0);A(D,le,ce,"⇇","\\leftleftarrows",!0);A(D,le,ce,"⇆","\\leftrightarrows",!0);A(D,le,ce,"⇚","\\Lleftarrow",!0);A(D,le,ce,"↞","\\twoheadleftarrow",!0);A(D,le,ce,"↢","\\leftarrowtail",!0);A(D,le,ce,"↫","\\looparrowleft",!0);A(D,le,ce,"⇋","\\leftrightharpoons",!0);A(D,le,ce,"↶","\\curvearrowleft",!0);A(D,le,ce,"↺","\\circlearrowleft",!0);A(D,le,ce,"↰","\\Lsh",!0);A(D,le,ce,"⇈","\\upuparrows",!0);A(D,le,ce,"↿","\\upharpoonleft",!0);A(D,le,ce,"⇃","\\downharpoonleft",!0);A(D,$,ce,"⊶","\\origof",!0);A(D,$,ce,"⊷","\\imageof",!0);A(D,le,ce,"⊸","\\multimap",!0);A(D,le,ce,"↭","\\leftrightsquigarrow",!0);A(D,le,ce,"⇉","\\rightrightarrows",!0);A(D,le,ce,"⇄","\\rightleftarrows",!0);A(D,le,ce,"↠","\\twoheadrightarrow",!0);A(D,le,ce,"↣","\\rightarrowtail",!0);A(D,le,ce,"↬","\\looparrowright",!0);A(D,le,ce,"↷","\\curvearrowright",!0);A(D,le,ce,"↻","\\circlearrowright",!0);A(D,le,ce,"↱","\\Rsh",!0);A(D,le,ce,"⇊","\\downdownarrows",!0);A(D,le,ce,"↾","\\upharpoonright",!0);A(D,le,ce,"⇂","\\downharpoonright",!0);A(D,le,ce,"⇝","\\rightsquigarrow",!0);A(D,le,ce,"⇝","\\leadsto");A(D,le,ce,"⇛","\\Rrightarrow",!0);A(D,le,ce,"↾","\\restriction");A(D,$,me,"‘","`");A(D,$,me,"$","\\$");A(Be,$,me,"$","\\$");A(Be,$,me,"$","\\textdollar");A(D,$,me,"%","\\%");A(Be,$,me,"%","\\%");A(D,$,me,"_","\\_");A(Be,$,me,"_","\\_");A(Be,$,me,"_","\\textunderscore");A(D,$,me,"∠","\\angle",!0);A(D,$,me,"∞","\\infty",!0);A(D,$,me,"′","\\prime");A(D,$,me,"△","\\triangle");A(D,$,me,"Γ","\\Gamma",!0);A(D,$,me,"Δ","\\Delta",!0);A(D,$,me,"Θ","\\Theta",!0);A(D,$,me,"Λ","\\Lambda",!0);A(D,$,me,"Ξ","\\Xi",!0);A(D,$,me,"Π","\\Pi",!0);A(D,$,me,"Σ","\\Sigma",!0);A(D,$,me,"Υ","\\Upsilon",!0);A(D,$,me,"Φ","\\Phi",!0);A(D,$,me,"Ψ","\\Psi",!0);A(D,$,me,"Ω","\\Omega",!0);A(D,$,me,"A","Α");A(D,$,me,"B","Β");A(D,$,me,"E","Ε");A(D,$,me,"Z","Ζ");A(D,$,me,"H","Η");A(D,$,me,"I","Ι");A(D,$,me,"K","Κ");A(D,$,me,"M","Μ");A(D,$,me,"N","Ν");A(D,$,me,"O","Ο");A(D,$,me,"P","Ρ");A(D,$,me,"T","Τ");A(D,$,me,"X","Χ");A(D,$,me,"¬","\\neg",!0);A(D,$,me,"¬","\\lnot");A(D,$,me,"⊤","\\top");A(D,$,me,"⊥","\\bot");A(D,$,me,"∅","\\emptyset");A(D,le,me,"∅","\\varnothing");A(D,$,Tt,"α","\\alpha",!0);A(D,$,Tt,"β","\\beta",!0);A(D,$,Tt,"γ","\\gamma",!0);A(D,$,Tt,"δ","\\delta",!0);A(D,$,Tt,"ϵ","\\epsilon",!0);A(D,$,Tt,"ζ","\\zeta",!0);A(D,$,Tt,"η","\\eta",!0);A(D,$,Tt,"θ","\\theta",!0);A(D,$,Tt,"ι","\\iota",!0);A(D,$,Tt,"κ","\\kappa",!0);A(D,$,Tt,"λ","\\lambda",!0);A(D,$,Tt,"μ","\\mu",!0);A(D,$,Tt,"ν","\\nu",!0);A(D,$,Tt,"ξ","\\xi",!0);A(D,$,Tt,"ο","\\omicron",!0);A(D,$,Tt,"π","\\pi",!0);A(D,$,Tt,"ρ","\\rho",!0);A(D,$,Tt,"σ","\\sigma",!0);A(D,$,Tt,"τ","\\tau",!0);A(D,$,Tt,"υ","\\upsilon",!0);A(D,$,Tt,"ϕ","\\phi",!0);A(D,$,Tt,"χ","\\chi",!0);A(D,$,Tt,"ψ","\\psi",!0);A(D,$,Tt,"ω","\\omega",!0);A(D,$,Tt,"ε","\\varepsilon",!0);A(D,$,Tt,"ϑ","\\vartheta",!0);A(D,$,Tt,"ϖ","\\varpi",!0);A(D,$,Tt,"ϱ","\\varrho",!0);A(D,$,Tt,"ς","\\varsigma",!0);A(D,$,Tt,"φ","\\varphi",!0);A(D,$,lt,"∗","*",!0);A(D,$,lt,"+","+");A(D,$,lt,"−","-",!0);A(D,$,lt,"⋅","\\cdot",!0);A(D,$,lt,"∘","\\circ",!0);A(D,$,lt,"÷","\\div",!0);A(D,$,lt,"±","\\pm",!0);A(D,$,lt,"×","\\times",!0);A(D,$,lt,"∩","\\cap",!0);A(D,$,lt,"∪","\\cup",!0);A(D,$,lt,"∖","\\setminus",!0);A(D,$,lt,"∧","\\land");A(D,$,lt,"∨","\\lor");A(D,$,lt,"∧","\\wedge",!0);A(D,$,lt,"∨","\\vee",!0);A(D,$,me,"√","\\surd");A(D,$,Ji,"⟨","\\langle",!0);A(D,$,Ji,"∣","\\lvert");A(D,$,Ji,"∥","\\lVert");A(D,$,ii,"?","?");A(D,$,ii,"!","!");A(D,$,ii,"⟩","\\rangle",!0);A(D,$,ii,"∣","\\rvert");A(D,$,ii,"∥","\\rVert");A(D,$,ce,"=","=");A(D,$,ce,":",":");A(D,$,ce,"≈","\\approx",!0);A(D,$,ce,"≅","\\cong",!0);A(D,$,ce,"≥","\\ge");A(D,$,ce,"≥","\\geq",!0);A(D,$,ce,"←","\\gets");A(D,$,ce,">","\\gt",!0);A(D,$,ce,"∈","\\in",!0);A(D,$,ce,"","\\@not");A(D,$,ce,"⊂","\\subset",!0);A(D,$,ce,"⊃","\\supset",!0);A(D,$,ce,"⊆","\\subseteq",!0);A(D,$,ce,"⊇","\\supseteq",!0);A(D,le,ce,"⊈","\\nsubseteq",!0);A(D,le,ce,"⊉","\\nsupseteq",!0);A(D,$,ce,"⊨","\\models");A(D,$,ce,"←","\\leftarrow",!0);A(D,$,ce,"≤","\\le");A(D,$,ce,"≤","\\leq",!0);A(D,$,ce,"<","\\lt",!0);A(D,$,ce,"→","\\rightarrow",!0);A(D,$,ce,"→","\\to");A(D,le,ce,"≱","\\ngeq",!0);A(D,le,ce,"≰","\\nleq",!0);A(D,$,Kl," ","\\ ");A(D,$,Kl," ","\\space");A(D,$,Kl," ","\\nobreakspace");A(Be,$,Kl," ","\\ ");A(Be,$,Kl," "," ");A(Be,$,Kl," ","\\space");A(Be,$,Kl," ","\\nobreakspace");A(D,$,Kl,null,"\\nobreak");A(D,$,Kl,null,"\\allowbreak");A(D,$,Pb,",",",");A(D,$,Pb,";",";");A(D,le,lt,"⊼","\\barwedge",!0);A(D,le,lt,"⊻","\\veebar",!0);A(D,$,lt,"⊙","\\odot",!0);A(D,$,lt,"⊕","\\oplus",!0);A(D,$,lt,"⊗","\\otimes",!0);A(D,$,me,"∂","\\partial",!0);A(D,$,lt,"⊘","\\oslash",!0);A(D,le,lt,"⊚","\\circledcirc",!0);A(D,le,lt,"⊡","\\boxdot",!0);A(D,$,lt,"△","\\bigtriangleup");A(D,$,lt,"▽","\\bigtriangledown");A(D,$,lt,"†","\\dagger");A(D,$,lt,"⋄","\\diamond");A(D,$,lt,"⋆","\\star");A(D,$,lt,"◃","\\triangleleft");A(D,$,lt,"▹","\\triangleright");A(D,$,Ji,"{","\\{");A(Be,$,me,"{","\\{");A(Be,$,me,"{","\\textbraceleft");A(D,$,ii,"}","\\}");A(Be,$,me,"}","\\}");A(Be,$,me,"}","\\textbraceright");A(D,$,Ji,"{","\\lbrace");A(D,$,ii,"}","\\rbrace");A(D,$,Ji,"[","\\lbrack",!0);A(Be,$,me,"[","\\lbrack",!0);A(D,$,ii,"]","\\rbrack",!0);A(Be,$,me,"]","\\rbrack",!0);A(D,$,Ji,"(","\\lparen",!0);A(D,$,ii,")","\\rparen",!0);A(Be,$,me,"<","\\textless",!0);A(Be,$,me,">","\\textgreater",!0);A(D,$,Ji,"⌊","\\lfloor",!0);A(D,$,ii,"⌋","\\rfloor",!0);A(D,$,Ji,"⌈","\\lceil",!0);A(D,$,ii,"⌉","\\rceil",!0);A(D,$,me,"\\","\\backslash");A(D,$,me,"∣","|");A(D,$,me,"∣","\\vert");A(Be,$,me,"|","\\textbar",!0);A(D,$,me,"∥","\\|");A(D,$,me,"∥","\\Vert");A(Be,$,me,"∥","\\textbardbl");A(Be,$,me,"~","\\textasciitilde");A(Be,$,me,"\\","\\textbackslash");A(Be,$,me,"^","\\textasciicircum");A(D,$,ce,"↑","\\uparrow",!0);A(D,$,ce,"⇑","\\Uparrow",!0);A(D,$,ce,"↓","\\downarrow",!0);A(D,$,ce,"⇓","\\Downarrow",!0);A(D,$,ce,"↕","\\updownarrow",!0);A(D,$,ce,"⇕","\\Updownarrow",!0);A(D,$,as,"∐","\\coprod");A(D,$,as,"⋁","\\bigvee");A(D,$,as,"⋀","\\bigwedge");A(D,$,as,"⨄","\\biguplus");A(D,$,as,"⋂","\\bigcap");A(D,$,as,"⋃","\\bigcup");A(D,$,as,"∫","\\int");A(D,$,as,"∫","\\intop");A(D,$,as,"∬","\\iint");A(D,$,as,"∭","\\iiint");A(D,$,as,"∏","\\prod");A(D,$,as,"∑","\\sum");A(D,$,as,"⨂","\\bigotimes");A(D,$,as,"⨁","\\bigoplus");A(D,$,as,"⨀","\\bigodot");A(D,$,as,"∮","\\oint");A(D,$,as,"∯","\\oiint");A(D,$,as,"∰","\\oiiint");A(D,$,as,"⨆","\\bigsqcup");A(D,$,as,"∫","\\smallint");A(Be,$,Bf,"…","\\textellipsis");A(D,$,Bf,"…","\\mathellipsis");A(Be,$,Bf,"…","\\ldots",!0);A(D,$,Bf,"…","\\ldots",!0);A(D,$,Bf,"⋯","\\@cdots",!0);A(D,$,Bf,"⋱","\\ddots",!0);A(D,$,me,"⋮","\\varvdots");A(Be,$,me,"⋮","\\varvdots");A(D,$,jr,"ˊ","\\acute");A(D,$,jr,"ˋ","\\grave");A(D,$,jr,"¨","\\ddot");A(D,$,jr,"~","\\tilde");A(D,$,jr,"ˉ","\\bar");A(D,$,jr,"˘","\\breve");A(D,$,jr,"ˇ","\\check");A(D,$,jr,"^","\\hat");A(D,$,jr,"⃗","\\vec");A(D,$,jr,"˙","\\dot");A(D,$,jr,"˚","\\mathring");A(D,$,Tt,"","\\@imath");A(D,$,Tt,"","\\@jmath");A(D,$,me,"ı","ı");A(D,$,me,"ȷ","ȷ");A(Be,$,me,"ı","\\i",!0);A(Be,$,me,"ȷ","\\j",!0);A(Be,$,me,"ß","\\ss",!0);A(Be,$,me,"æ","\\ae",!0);A(Be,$,me,"œ","\\oe",!0);A(Be,$,me,"ø","\\o",!0);A(Be,$,me,"Æ","\\AE",!0);A(Be,$,me,"Œ","\\OE",!0);A(Be,$,me,"Ø","\\O",!0);A(Be,$,jr,"ˊ","\\'");A(Be,$,jr,"ˋ","\\`");A(Be,$,jr,"ˆ","\\^");A(Be,$,jr,"˜","\\~");A(Be,$,jr,"ˉ","\\=");A(Be,$,jr,"˘","\\u");A(Be,$,jr,"˙","\\.");A(Be,$,jr,"¸","\\c");A(Be,$,jr,"˚","\\r");A(Be,$,jr,"ˇ","\\v");A(Be,$,jr,"¨",'\\"');A(Be,$,jr,"˝","\\H");A(Be,$,jr,"◯","\\textcircled");var GV={"--":!0,"---":!0,"``":!0,"''":!0};A(Be,$,me,"–","--",!0);A(Be,$,me,"–","\\textendash");A(Be,$,me,"—","---",!0);A(Be,$,me,"—","\\textemdash");A(Be,$,me,"‘","`",!0);A(Be,$,me,"‘","\\textquoteleft");A(Be,$,me,"’","'",!0);A(Be,$,me,"’","\\textquoteright");A(Be,$,me,"“","``",!0);A(Be,$,me,"“","\\textquotedblleft");A(Be,$,me,"”","''",!0);A(Be,$,me,"”","\\textquotedblright");A(D,$,me,"°","\\degree",!0);A(Be,$,me,"°","\\degree");A(Be,$,me,"°","\\textdegree",!0);A(D,$,me,"£","\\pounds");A(D,$,me,"£","\\mathsterling",!0);A(Be,$,me,"£","\\pounds");A(Be,$,me,"£","\\textsterling",!0);A(D,le,me,"✠","\\maltese");A(Be,le,me,"✠","\\maltese");var cR='0123456789/@."';for(var FS=0;FS0)return $a(i,d,s,n,a.concat(h));if(c){var m,g;if(c==="boldsymbol"){var x=U5e(i,s,n,a,r);m=x.fontName,g=[x.fontClass]}else l?(m=KV[c].fontName,g=[c]):(m=R1(c,n.fontWeight,n.fontShape),g=[c,n.fontWeight,n.fontShape]);if(zb(i,m,s).metrics)return $a(i,m,s,n,a.concat(g));if(GV.hasOwnProperty(i)&&m.slice(0,10)==="Typewriter"){for(var y=[],w=0;w{if(eu(t.classes)!==eu(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;if(t.classes.length===1){var n=t.classes[0];if(n==="mbin"||n==="mord")return!1}for(var r in t.style)if(t.style.hasOwnProperty(r)&&t.style[r]!==e.style[r])return!1;for(var s in e.style)if(e.style.hasOwnProperty(s)&&t.style[s]!==e.style[s])return!1;return!0},X5e=t=>{for(var e=0;en&&(n=a.height),a.depth>r&&(r=a.depth),a.maxFontSize>s&&(s=a.maxFontSize)}e.height=n,e.depth=r,e.maxFontSize=s},mi=function(e,n,r,s){var i=new fg(e,n,r,s);return ON(i),i},XV=(t,e,n,r)=>new fg(t,e,n,r),Y5e=function(e,n,r){var s=mi([e],[],n);return s.height=Math.max(r||n.fontMetrics().defaultRuleThickness,n.minRuleThickness),s.style.borderBottomWidth=Xe(s.height),s.maxFontSize=1,s},K5e=function(e,n,r,s){var i=new kN(e,n,r,s);return ON(i),i},YV=function(e){var n=new hg(e);return ON(n),n},Z5e=function(e,n){return e instanceof hg?mi([],[e],n):e},J5e=function(e){if(e.positionType==="individualShift"){for(var n=e.children,r=[n[0]],s=-n[0].shift-n[0].elem.depth,i=s,a=1;a{var n=mi(["mspace"],[],e),r=Rr(t,e);return n.style.marginRight=Xe(r),n},R1=function(e,n,r){var s="";switch(e){case"amsrm":s="AMS";break;case"textrm":s="Main";break;case"textsf":s="SansSerif";break;case"texttt":s="Typewriter";break;default:s=e}var i;return n==="textbf"&&r==="textit"?i="BoldItalic":n==="textbf"?i="Bold":n==="textit"?i="Italic":i="Regular",s+"-"+i},KV={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},ZV={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},n3e=function(e,n){var[r,s,i]=ZV[e],a=new tu(r),l=new Hl([a],{width:Xe(s),height:Xe(i),style:"width:"+Xe(s),viewBox:"0 0 "+1e3*s+" "+1e3*i,preserveAspectRatio:"xMinYMin"}),c=XV(["overlay"],[l],n);return c.height=i,c.style.height=Xe(i),c.style.width=Xe(s),c},be={fontMap:KV,makeSymbol:$a,mathsym:V5e,makeSpan:mi,makeSvgSpan:XV,makeLineSpan:Y5e,makeAnchor:K5e,makeFragment:YV,wrapFragment:Z5e,makeVList:e3e,makeOrd:W5e,makeGlue:t3e,staticSvg:n3e,svgData:ZV,tryCombineChars:X5e},_r={number:3,unit:"mu"},zu={number:4,unit:"mu"},vl={number:5,unit:"mu"},r3e={mord:{mop:_r,mbin:zu,mrel:vl,minner:_r},mop:{mord:_r,mop:_r,mrel:vl,minner:_r},mbin:{mord:zu,mop:zu,mopen:zu,minner:zu},mrel:{mord:vl,mop:vl,mopen:vl,minner:vl},mopen:{},mclose:{mop:_r,mbin:zu,mrel:vl,minner:_r},mpunct:{mord:_r,mop:_r,mrel:vl,mopen:_r,mclose:_r,mpunct:_r,minner:_r},minner:{mord:_r,mop:_r,mbin:zu,mrel:vl,mopen:_r,mpunct:_r,minner:_r}},s3e={mord:{mop:_r},mop:{mord:_r,mop:_r},mbin:{},mrel:{},mopen:{},mclose:{mop:_r},mpunct:{},minner:{mop:_r}},JV={},yy={},by={};function tt(t){for(var{type:e,names:n,props:r,handler:s,htmlBuilder:i,mathmlBuilder:a}=t,l={type:e,numArgs:r.numArgs,argTypes:r.argTypes,allowedInArgument:!!r.allowedInArgument,allowedInText:!!r.allowedInText,allowedInMath:r.allowedInMath===void 0?!0:r.allowedInMath,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,primitive:!!r.primitive,handler:s},c=0;c{var S=w.classes[0],k=y.classes[0];S==="mbin"&&a3e.includes(k)?w.classes[0]="mord":k==="mbin"&&i3e.includes(S)&&(y.classes[0]="mord")},{node:m},g,x),mR(i,(y,w)=>{var S=zO(w),k=zO(y),j=S&&k?y.hasClass("mtight")?s3e[S][k]:r3e[S][k]:null;if(j)return be.makeGlue(j,d)},{node:m},g,x),i},mR=function t(e,n,r,s,i){s&&e.push(s);for(var a=0;ag=>{e.splice(m+1,0,g),a++})(a)}s&&e.pop()},eU=function(e){return e instanceof hg||e instanceof kN||e instanceof fg&&e.hasClass("enclosing")?e:null},c3e=function t(e,n){var r=eU(e);if(r){var s=r.children;if(s.length){if(n==="right")return t(s[s.length-1],"right");if(n==="left")return t(s[0],"left")}}return e},zO=function(e,n){return e?(n&&(e=c3e(e,n)),l3e[e.classes[0]]||null):null},pp=function(e,n){var r=["nulldelimiter"].concat(e.baseSizingClasses());return Ql(n.concat(r))},Pn=function(e,n,r){if(!e)return Ql();if(yy[e.type]){var s=yy[e.type](e,n);if(r&&n.size!==r.size){s=Ql(n.sizingClasses(r),[s],n);var i=n.sizeMultiplier/r.sizeMultiplier;s.height*=i,s.depth*=i}return s}else throw new $e("Got group of unknown type: '"+e.type+"'")};function D1(t,e){var n=Ql(["base"],t,e),r=Ql(["strut"]);return r.style.height=Xe(n.height+n.depth),n.depth&&(r.style.verticalAlign=Xe(-n.depth)),n.children.unshift(r),n}function IO(t,e){var n=null;t.length===1&&t[0].type==="tag"&&(n=t[0].tag,t=t[0].body);var r=hs(t,e,"root"),s;r.length===2&&r[1].hasClass("tag")&&(s=r.pop());for(var i=[],a=[],l=0;l0&&(i.push(D1(a,e)),a=[]),i.push(r[l]));a.length>0&&i.push(D1(a,e));var d;n?(d=D1(hs(n,e,!0)),d.classes=["tag"],i.push(d)):s&&i.push(s);var h=Ql(["katex-html"],i);if(h.setAttribute("aria-hidden","true"),d){var m=d.children[0];m.style.height=Xe(h.height+h.depth),h.depth&&(m.style.verticalAlign=Xe(-h.depth))}return h}function tU(t){return new hg(t)}class Qi{constructor(e,n,r){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=n||[],this.classes=r||[]}setAttribute(e,n){this.attributes[e]=n}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&e.setAttribute(n,this.attributes[n]);this.classes.length>0&&(e.className=eu(this.classes));for(var r=0;r0&&(e+=' class ="'+$n.escape(eu(this.classes))+'"'),e+=">";for(var r=0;r",e}toText(){return this.children.map(e=>e.toText()).join("")}}class Mo{constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return $n.escape(this.toText())}toText(){return this.text}}class u3e{constructor(e){this.width=void 0,this.character=void 0,this.width=e,e>=.05555&&e<=.05556?this.character=" ":e>=.1666&&e<=.1667?this.character=" ":e>=.2222&&e<=.2223?this.character=" ":e>=.2777&&e<=.2778?this.character="  ":e>=-.05556&&e<=-.05555?this.character=" ⁣":e>=-.1667&&e<=-.1666?this.character=" ⁣":e>=-.2223&&e<=-.2222?this.character=" ⁣":e>=-.2778&&e<=-.2777?this.character=" ⁣":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",Xe(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}}var qe={MathNode:Qi,TextNode:Mo,SpaceNode:u3e,newDocumentFragment:tU},Aa=function(e,n,r){return dr[n][e]&&dr[n][e].replace&&e.charCodeAt(0)!==55349&&!(GV.hasOwnProperty(e)&&r&&(r.fontFamily&&r.fontFamily.slice(4,6)==="tt"||r.font&&r.font.slice(4,6)==="tt"))&&(e=dr[n][e].replace),new qe.TextNode(e)},jN=function(e){return e.length===1?e[0]:new qe.MathNode("mrow",e)},NN=function(e,n){if(n.fontFamily==="texttt")return"monospace";if(n.fontFamily==="textsf")return n.fontShape==="textit"&&n.fontWeight==="textbf"?"sans-serif-bold-italic":n.fontShape==="textit"?"sans-serif-italic":n.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(n.fontShape==="textit"&&n.fontWeight==="textbf")return"bold-italic";if(n.fontShape==="textit")return"italic";if(n.fontWeight==="textbf")return"bold";var r=n.font;if(!r||r==="mathnormal")return null;var s=e.mode;if(r==="mathit")return"italic";if(r==="boldsymbol")return e.type==="textord"?"bold":"bold-italic";if(r==="mathbf")return"bold";if(r==="mathbb")return"double-struck";if(r==="mathsfit")return"sans-serif-italic";if(r==="mathfrak")return"fraktur";if(r==="mathscr"||r==="mathcal")return"script";if(r==="mathsf")return"sans-serif";if(r==="mathtt")return"monospace";var i=e.text;if(["\\imath","\\jmath"].includes(i))return null;dr[s][i]&&dr[s][i].replace&&(i=dr[s][i].replace);var a=be.fontMap[r].fontName;return SN(i,a,s)?be.fontMap[r].variant:null};function QS(t){if(!t)return!1;if(t.type==="mi"&&t.children.length===1){var e=t.children[0];return e instanceof Mo&&e.text==="."}else if(t.type==="mo"&&t.children.length===1&&t.getAttribute("separator")==="true"&&t.getAttribute("lspace")==="0em"&&t.getAttribute("rspace")==="0em"){var n=t.children[0];return n instanceof Mo&&n.text===","}else return!1}var _i=function(e,n,r){if(e.length===1){var s=lr(e[0],n);return r&&s instanceof Qi&&s.type==="mo"&&(s.setAttribute("lspace","0em"),s.setAttribute("rspace","0em")),[s]}for(var i=[],a,l=0;l=1&&(a.type==="mn"||QS(a))){var d=c.children[0];d instanceof Qi&&d.type==="mn"&&(d.children=[...a.children,...d.children],i.pop())}else if(a.type==="mi"&&a.children.length===1){var h=a.children[0];if(h instanceof Mo&&h.text==="̸"&&(c.type==="mo"||c.type==="mi"||c.type==="mn")){var m=c.children[0];m instanceof Mo&&m.text.length>0&&(m.text=m.text.slice(0,1)+"̸"+m.text.slice(1),i.pop())}}}i.push(c),a=c}return i},nu=function(e,n,r){return jN(_i(e,n,r))},lr=function(e,n){if(!e)return new qe.MathNode("mrow");if(by[e.type]){var r=by[e.type](e,n);return r}else throw new $e("Got group of unknown type: '"+e.type+"'")};function pR(t,e,n,r,s){var i=_i(t,n),a;i.length===1&&i[0]instanceof Qi&&["mrow","mtable"].includes(i[0].type)?a=i[0]:a=new qe.MathNode("mrow",i);var l=new qe.MathNode("annotation",[new qe.TextNode(e)]);l.setAttribute("encoding","application/x-tex");var c=new qe.MathNode("semantics",[a,l]),d=new qe.MathNode("math",[c]);d.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),r&&d.setAttribute("display","block");var h=s?"katex":"katex-mathml";return be.makeSpan([h],[d])}var nU=function(e){return new Cl({style:e.displayMode?Et.DISPLAY:Et.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},rU=function(e,n){if(n.displayMode){var r=["katex-display"];n.leqno&&r.push("leqno"),n.fleqn&&r.push("fleqn"),e=be.makeSpan(r,[e])}return e},d3e=function(e,n,r){var s=nU(r),i;if(r.output==="mathml")return pR(e,n,s,r.displayMode,!0);if(r.output==="html"){var a=IO(e,s);i=be.makeSpan(["katex"],[a])}else{var l=pR(e,n,s,r.displayMode,!1),c=IO(e,s);i=be.makeSpan(["katex"],[l,c])}return rU(i,r)},h3e=function(e,n,r){var s=nU(r),i=IO(e,s),a=be.makeSpan(["katex"],[i]);return rU(a,r)},f3e={widehat:"^",widecheck:"ˇ",widetilde:"~",utilde:"~",overleftarrow:"←",underleftarrow:"←",xleftarrow:"←",overrightarrow:"→",underrightarrow:"→",xrightarrow:"→",underbrace:"⏟",overbrace:"⏞",overgroup:"⏠",undergroup:"⏡",overleftrightarrow:"↔",underleftrightarrow:"↔",xleftrightarrow:"↔",Overrightarrow:"⇒",xRightarrow:"⇒",overleftharpoon:"↼",xleftharpoonup:"↼",overrightharpoon:"⇀",xrightharpoonup:"⇀",xLeftarrow:"⇐",xLeftrightarrow:"⇔",xhookleftarrow:"↩",xhookrightarrow:"↪",xmapsto:"↦",xrightharpoondown:"⇁",xleftharpoondown:"↽",xrightleftharpoons:"⇌",xleftrightharpoons:"⇋",xtwoheadleftarrow:"↞",xtwoheadrightarrow:"↠",xlongequal:"=",xtofrom:"⇄",xrightleftarrows:"⇄",xrightequilibrium:"⇌",xleftequilibrium:"⇋","\\cdrightarrow":"→","\\cdleftarrow":"←","\\cdlongequal":"="},m3e=function(e){var n=new qe.MathNode("mo",[new qe.TextNode(f3e[e.replace(/^\\/,"")])]);return n.setAttribute("stretchy","true"),n},p3e={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},g3e=function(e){return e.type==="ordgroup"?e.body.length:1},x3e=function(e,n){function r(){var l=4e5,c=e.label.slice(1);if(["widehat","widecheck","widetilde","utilde"].includes(c)){var d=e,h=g3e(d.base),m,g,x;if(h>5)c==="widehat"||c==="widecheck"?(m=420,l=2364,x=.42,g=c+"4"):(m=312,l=2340,x=.34,g="tilde4");else{var y=[1,1,2,2,3,3][h];c==="widehat"||c==="widecheck"?(l=[0,1062,2364,2364,2364][y],m=[0,239,300,360,420][y],x=[0,.24,.3,.3,.36,.42][y],g=c+y):(l=[0,600,1033,2339,2340][y],m=[0,260,286,306,312][y],x=[0,.26,.286,.3,.306,.34][y],g="tilde"+y)}var w=new tu(g),S=new Hl([w],{width:"100%",height:Xe(x),viewBox:"0 0 "+l+" "+m,preserveAspectRatio:"none"});return{span:be.makeSvgSpan([],[S],n),minWidth:0,height:x}}else{var k=[],j=p3e[c],[N,T,E]=j,_=E/1e3,M=N.length,I,P;if(M===1){var L=j[3];I=["hide-tail"],P=[L]}else if(M===2)I=["halfarrow-left","halfarrow-right"],P=["xMinYMin","xMaxYMin"];else if(M===3)I=["brace-left","brace-center","brace-right"],P=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support + `+M+" children.");for(var H=0;H0&&(s.style.minWidth=Xe(i)),s},v3e=function(e,n,r,s,i){var a,l=e.height+e.depth+r+s;if(/fbox|color|angl/.test(n)){if(a=be.makeSpan(["stretchy",n],[],i),n==="fbox"){var c=i.color&&i.getColor();c&&(a.style.borderColor=c)}}else{var d=[];/^[bx]cancel$/.test(n)&&d.push(new DO({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(n)&&d.push(new DO({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new Hl(d,{width:"100%",height:Xe(l)});a=be.makeSvgSpan([],[h],i)}return a.height=l,a.style.height=Xe(l),a},Vl={encloseSpan:v3e,mathMLnode:m3e,svgSpan:x3e};function en(t,e){if(!t||t.type!==e)throw new Error("Expected node of type "+e+", but got "+(t?"node of type "+t.type:String(t)));return t}function CN(t){var e=Ib(t);if(!e)throw new Error("Expected node of symbol group type, but got "+(t?"node of type "+t.type:String(t)));return e}function Ib(t){return t&&(t.type==="atom"||H5e.hasOwnProperty(t.type))?t:null}var TN=(t,e)=>{var n,r,s;t&&t.type==="supsub"?(r=en(t.base,"accent"),n=r.base,t.base=n,s=q5e(Pn(t,e)),t.base=r):(r=en(t,"accent"),n=r.base);var i=Pn(n,e.havingCrampedStyle()),a=r.isShifty&&$n.isCharacterBox(n),l=0;if(a){var c=$n.getBaseElem(n),d=Pn(c,e.havingCrampedStyle());l=lR(d).skew}var h=r.label==="\\c",m=h?i.height+i.depth:Math.min(i.height,e.fontMetrics().xHeight),g;if(r.isStretchy)g=Vl.svgSpan(r,e),g=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:g,wrapperClasses:["svg-align"],wrapperStyle:l>0?{width:"calc(100% - "+Xe(2*l)+")",marginLeft:Xe(2*l)}:void 0}]},e);else{var x,y;r.label==="\\vec"?(x=be.staticSvg("vec",e),y=be.svgData.vec[1]):(x=be.makeOrd({mode:r.mode,text:r.label},e,"textord"),x=lR(x),x.italic=0,y=x.width,h&&(m+=x.depth)),g=be.makeSpan(["accent-body"],[x]);var w=r.label==="\\textcircled";w&&(g.classes.push("accent-full"),m=i.height);var S=l;w||(S-=y/2),g.style.left=Xe(S),r.label==="\\textcircled"&&(g.style.top=".2em"),g=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-m},{type:"elem",elem:g}]},e)}var k=be.makeSpan(["mord","accent"],[g],e);return s?(s.children[0]=k,s.height=Math.max(k.height,s.height),s.classes[0]="mord",s):k},sU=(t,e)=>{var n=t.isStretchy?Vl.mathMLnode(t.label):new qe.MathNode("mo",[Aa(t.label,t.mode)]),r=new qe.MathNode("mover",[lr(t.base,e),n]);return r.setAttribute("accent","true"),r},y3e=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(t=>"\\"+t).join("|"));tt({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(t,e)=>{var n=wy(e[0]),r=!y3e.test(t.funcName),s=!r||t.funcName==="\\widehat"||t.funcName==="\\widetilde"||t.funcName==="\\widecheck";return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:r,isShifty:s,base:n}},htmlBuilder:TN,mathmlBuilder:sU});tt({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(t,e)=>{var n=e[0],r=t.parser.mode;return r==="math"&&(t.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+t.funcName+" works only in text mode"),r="text"),{type:"accent",mode:r,label:t.funcName,isStretchy:!1,isShifty:!0,base:n}},htmlBuilder:TN,mathmlBuilder:sU});tt({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0];return{type:"accentUnder",mode:n.mode,label:r,base:s}},htmlBuilder:(t,e)=>{var n=Pn(t.base,e),r=Vl.svgSpan(t,e),s=t.label==="\\utilde"?.12:0,i=be.makeVList({positionType:"top",positionData:n.height,children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:s},{type:"elem",elem:n}]},e);return be.makeSpan(["mord","accentunder"],[i],e)},mathmlBuilder:(t,e)=>{var n=Vl.mathMLnode(t.label),r=new qe.MathNode("munder",[lr(t.base,e),n]);return r.setAttribute("accentunder","true"),r}});var P1=t=>{var e=new qe.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e};tt({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,n){var{parser:r,funcName:s}=t;return{type:"xArrow",mode:r.mode,label:s,body:e[0],below:n[0]}},htmlBuilder(t,e){var n=e.style,r=e.havingStyle(n.sup()),s=be.wrapFragment(Pn(t.body,r,e),e),i=t.label.slice(0,2)==="\\x"?"x":"cd";s.classes.push(i+"-arrow-pad");var a;t.below&&(r=e.havingStyle(n.sub()),a=be.wrapFragment(Pn(t.below,r,e),e),a.classes.push(i+"-arrow-pad"));var l=Vl.svgSpan(t,e),c=-e.fontMetrics().axisHeight+.5*l.height,d=-e.fontMetrics().axisHeight-.5*l.height-.111;(s.depth>.25||t.label==="\\xleftequilibrium")&&(d-=s.depth);var h;if(a){var m=-e.fontMetrics().axisHeight+a.height+.5*l.height+.111;h=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:d},{type:"elem",elem:l,shift:c},{type:"elem",elem:a,shift:m}]},e)}else h=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:d},{type:"elem",elem:l,shift:c}]},e);return h.children[0].children[0].children[1].classes.push("svg-align"),be.makeSpan(["mrel","x-arrow"],[h],e)},mathmlBuilder(t,e){var n=Vl.mathMLnode(t.label);n.setAttribute("minsize",t.label.charAt(0)==="x"?"1.75em":"3.0em");var r;if(t.body){var s=P1(lr(t.body,e));if(t.below){var i=P1(lr(t.below,e));r=new qe.MathNode("munderover",[n,i,s])}else r=new qe.MathNode("mover",[n,s])}else if(t.below){var a=P1(lr(t.below,e));r=new qe.MathNode("munder",[n,a])}else r=P1(),r=new qe.MathNode("mover",[n,r]);return r}});var b3e=be.makeSpan;function iU(t,e){var n=hs(t.body,e,!0);return b3e([t.mclass],n,e)}function aU(t,e){var n,r=_i(t.body,e);return t.mclass==="minner"?n=new qe.MathNode("mpadded",r):t.mclass==="mord"?t.isCharacterBox?(n=r[0],n.type="mi"):n=new qe.MathNode("mi",r):(t.isCharacterBox?(n=r[0],n.type="mo"):n=new qe.MathNode("mo",r),t.mclass==="mbin"?(n.attributes.lspace="0.22em",n.attributes.rspace="0.22em"):t.mclass==="mpunct"?(n.attributes.lspace="0em",n.attributes.rspace="0.17em"):t.mclass==="mopen"||t.mclass==="mclose"?(n.attributes.lspace="0em",n.attributes.rspace="0em"):t.mclass==="minner"&&(n.attributes.lspace="0.0556em",n.attributes.width="+0.1111em")),n}tt({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];return{type:"mclass",mode:n.mode,mclass:"m"+r.slice(5),body:Qr(s),isCharacterBox:$n.isCharacterBox(s)}},htmlBuilder:iU,mathmlBuilder:aU});var Lb=t=>{var e=t.type==="ordgroup"&&t.body.length?t.body[0]:t;return e.type==="atom"&&(e.family==="bin"||e.family==="rel")?"m"+e.family:"mord"};tt({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(t,e){var{parser:n}=t;return{type:"mclass",mode:n.mode,mclass:Lb(e[0]),body:Qr(e[1]),isCharacterBox:$n.isCharacterBox(e[1])}}});tt({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(t,e){var{parser:n,funcName:r}=t,s=e[1],i=e[0],a;r!=="\\stackrel"?a=Lb(s):a="mrel";var l={type:"op",mode:s.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:r!=="\\stackrel",body:Qr(s)},c={type:"supsub",mode:i.mode,base:l,sup:r==="\\underset"?null:i,sub:r==="\\underset"?i:null};return{type:"mclass",mode:n.mode,mclass:a,body:[c],isCharacterBox:$n.isCharacterBox(c)}},htmlBuilder:iU,mathmlBuilder:aU});tt({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"pmb",mode:n.mode,mclass:Lb(e[0]),body:Qr(e[0])}},htmlBuilder(t,e){var n=hs(t.body,e,!0),r=be.makeSpan([t.mclass],n,e);return r.style.textShadow="0.02em 0.01em 0.04px",r},mathmlBuilder(t,e){var n=_i(t.body,e),r=new qe.MathNode("mstyle",n);return r.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),r}});var w3e={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},gR=()=>({type:"styling",body:[],mode:"math",style:"display"}),xR=t=>t.type==="textord"&&t.text==="@",S3e=(t,e)=>(t.type==="mathord"||t.type==="atom")&&t.text===e;function k3e(t,e,n){var r=w3e[t];switch(r){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return n.callFunction(r,[e[0]],[e[1]]);case"\\uparrow":case"\\downarrow":{var s=n.callFunction("\\\\cdleft",[e[0]],[]),i={type:"atom",text:r,mode:"math",family:"rel"},a=n.callFunction("\\Big",[i],[]),l=n.callFunction("\\\\cdright",[e[1]],[]),c={type:"ordgroup",mode:"math",body:[s,a,l]};return n.callFunction("\\\\cdparent",[c],[])}case"\\\\cdlongequal":return n.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var d={type:"textord",text:"\\Vert",mode:"math"};return n.callFunction("\\Big",[d],[])}default:return{type:"textord",text:" ",mode:"math"}}}function O3e(t){var e=[];for(t.gullet.beginGroup(),t.gullet.macros.set("\\cr","\\\\\\relax"),t.gullet.beginGroup();;){e.push(t.parseExpression(!1,"\\\\")),t.gullet.endGroup(),t.gullet.beginGroup();var n=t.fetch().text;if(n==="&"||n==="\\\\")t.consume();else if(n==="\\end"){e[e.length-1].length===0&&e.pop();break}else throw new $e("Expected \\\\ or \\cr or \\end",t.nextToken)}for(var r=[],s=[r],i=0;i-1))if("<>AV".indexOf(d)>-1)for(var m=0;m<2;m++){for(var g=!0,x=c+1;xAV=|." after @',a[c]);var y=k3e(d,h,t),w={type:"styling",body:[y],mode:"math",style:"display"};r.push(w),l=gR()}i%2===0?r.push(l):r.shift(),r=[],s.push(r)}t.gullet.endGroup(),t.gullet.endGroup();var S=new Array(s[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:s,arraystretch:1,addJot:!0,rowGaps:[null],cols:S,colSeparationType:"CD",hLinesBeforeRow:new Array(s.length+1).fill([])}}tt({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:r}=t;return{type:"cdlabel",mode:n.mode,side:r.slice(4),label:e[0]}},htmlBuilder(t,e){var n=e.havingStyle(e.style.sup()),r=be.wrapFragment(Pn(t.label,n,e),e);return r.classes.push("cd-label-"+t.side),r.style.bottom=Xe(.8-r.depth),r.height=0,r.depth=0,r},mathmlBuilder(t,e){var n=new qe.MathNode("mrow",[lr(t.label,e)]);return n=new qe.MathNode("mpadded",[n]),n.setAttribute("width","0"),t.side==="left"&&n.setAttribute("lspace","-1width"),n.setAttribute("voffset","0.7em"),n=new qe.MathNode("mstyle",[n]),n.setAttribute("displaystyle","false"),n.setAttribute("scriptlevel","1"),n}});tt({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(t,e){var{parser:n}=t;return{type:"cdlabelparent",mode:n.mode,fragment:e[0]}},htmlBuilder(t,e){var n=be.wrapFragment(Pn(t.fragment,e),e);return n.classes.push("cd-vert-arrow"),n},mathmlBuilder(t,e){return new qe.MathNode("mrow",[lr(t.fragment,e)])}});tt({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(t,e){for(var{parser:n}=t,r=en(e[0],"ordgroup"),s=r.body,i="",a=0;a=1114111)throw new $e("\\@char with invalid code point "+i);return c<=65535?d=String.fromCharCode(c):(c-=65536,d=String.fromCharCode((c>>10)+55296,(c&1023)+56320)),{type:"textord",mode:n.mode,text:d}}});var oU=(t,e)=>{var n=hs(t.body,e.withColor(t.color),!1);return be.makeFragment(n)},lU=(t,e)=>{var n=_i(t.body,e.withColor(t.color)),r=new qe.MathNode("mstyle",n);return r.setAttribute("mathcolor",t.color),r};tt({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(t,e){var{parser:n}=t,r=en(e[0],"color-token").color,s=e[1];return{type:"color",mode:n.mode,color:r,body:Qr(s)}},htmlBuilder:oU,mathmlBuilder:lU});tt({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(t,e){var{parser:n,breakOnTokenText:r}=t,s=en(e[0],"color-token").color;n.gullet.macros.set("\\current@color",s);var i=n.parseExpression(!0,r);return{type:"color",mode:n.mode,color:s,body:i}},htmlBuilder:oU,mathmlBuilder:lU});tt({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(t,e,n){var{parser:r}=t,s=r.gullet.future().text==="["?r.parseSizeGroup(!0):null,i=!r.settings.displayMode||!r.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:r.mode,newLine:i,size:s&&en(s,"size").value}},htmlBuilder(t,e){var n=be.makeSpan(["mspace"],[],e);return t.newLine&&(n.classes.push("newline"),t.size&&(n.style.marginTop=Xe(Rr(t.size,e)))),n},mathmlBuilder(t,e){var n=new qe.MathNode("mspace");return t.newLine&&(n.setAttribute("linebreak","newline"),t.size&&n.setAttribute("height",Xe(Rr(t.size,e)))),n}});var LO={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},cU=t=>{var e=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new $e("Expected a control sequence",t);return e},j3e=t=>{var e=t.gullet.popToken();return e.text==="="&&(e=t.gullet.popToken(),e.text===" "&&(e=t.gullet.popToken())),e},uU=(t,e,n,r)=>{var s=t.gullet.macros.get(n.text);s==null&&(n.noexpand=!0,s={tokens:[n],numArgs:0,unexpandable:!t.gullet.isExpandable(n.text)}),t.gullet.macros.set(e,s,r)};tt({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(t){var{parser:e,funcName:n}=t;e.consumeSpaces();var r=e.fetch();if(LO[r.text])return(n==="\\global"||n==="\\\\globallong")&&(r.text=LO[r.text]),en(e.parseFunction(),"internal");throw new $e("Invalid token after macro prefix",r)}});tt({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,r=e.gullet.popToken(),s=r.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(s))throw new $e("Expected a control sequence",r);for(var i=0,a,l=[[]];e.gullet.future().text!=="{";)if(r=e.gullet.popToken(),r.text==="#"){if(e.gullet.future().text==="{"){a=e.gullet.future(),l[i].push("{");break}if(r=e.gullet.popToken(),!/^[1-9]$/.test(r.text))throw new $e('Invalid argument number "'+r.text+'"');if(parseInt(r.text)!==i+1)throw new $e('Argument number "'+r.text+'" out of order');i++,l.push([])}else{if(r.text==="EOF")throw new $e("Expected a macro definition");l[i].push(r.text)}var{tokens:c}=e.gullet.consumeArg();return a&&c.unshift(a),(n==="\\edef"||n==="\\xdef")&&(c=e.gullet.expandTokens(c),c.reverse()),e.gullet.macros.set(s,{tokens:c,numArgs:i,delimiters:l},n===LO[n]),{type:"internal",mode:e.mode}}});tt({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,r=cU(e.gullet.popToken());e.gullet.consumeSpaces();var s=j3e(e);return uU(e,r,s,n==="\\\\globallet"),{type:"internal",mode:e.mode}}});tt({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,r=cU(e.gullet.popToken()),s=e.gullet.popToken(),i=e.gullet.popToken();return uU(e,r,i,n==="\\\\globalfuture"),e.gullet.pushToken(i),e.gullet.pushToken(s),{type:"internal",mode:e.mode}}});var c0=function(e,n,r){var s=dr.math[e]&&dr.math[e].replace,i=SN(s||e,n,r);if(!i)throw new Error("Unsupported symbol "+e+" and font size "+n+".");return i},EN=function(e,n,r,s){var i=r.havingBaseStyle(n),a=be.makeSpan(s.concat(i.sizingClasses(r)),[e],r),l=i.sizeMultiplier/r.sizeMultiplier;return a.height*=l,a.depth*=l,a.maxFontSize=i.sizeMultiplier,a},dU=function(e,n,r){var s=n.havingBaseStyle(r),i=(1-n.sizeMultiplier/s.sizeMultiplier)*n.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=Xe(i),e.height-=i,e.depth+=i},N3e=function(e,n,r,s,i,a){var l=be.makeSymbol(e,"Main-Regular",i,s),c=EN(l,n,s,a);return r&&dU(c,s,n),c},C3e=function(e,n,r,s){return be.makeSymbol(e,"Size"+n+"-Regular",r,s)},hU=function(e,n,r,s,i,a){var l=C3e(e,n,i,s),c=EN(be.makeSpan(["delimsizing","size"+n],[l],s),Et.TEXT,s,a);return r&&dU(c,s,Et.TEXT),c},VS=function(e,n,r){var s;n==="Size1-Regular"?s="delim-size1":s="delim-size4";var i=be.makeSpan(["delimsizinginner",s],[be.makeSpan([],[be.makeSymbol(e,n,r)])]);return{type:"elem",elem:i}},US=function(e,n,r){var s=_o["Size4-Regular"][e.charCodeAt(0)]?_o["Size4-Regular"][e.charCodeAt(0)][4]:_o["Size1-Regular"][e.charCodeAt(0)][4],i=new tu("inner",A5e(e,Math.round(1e3*n))),a=new Hl([i],{width:Xe(s),height:Xe(n),style:"width:"+Xe(s),viewBox:"0 0 "+1e3*s+" "+Math.round(1e3*n),preserveAspectRatio:"xMinYMin"}),l=be.makeSvgSpan([],[a],r);return l.height=n,l.style.height=Xe(n),l.style.width=Xe(s),{type:"elem",elem:l}},BO=.008,z1={type:"kern",size:-1*BO},T3e=["|","\\lvert","\\rvert","\\vert"],E3e=["\\|","\\lVert","\\rVert","\\Vert"],fU=function(e,n,r,s,i,a){var l,c,d,h,m="",g=0;l=d=h=e,c=null;var x="Size1-Regular";e==="\\uparrow"?d=h="⏐":e==="\\Uparrow"?d=h="‖":e==="\\downarrow"?l=d="⏐":e==="\\Downarrow"?l=d="‖":e==="\\updownarrow"?(l="\\uparrow",d="⏐",h="\\downarrow"):e==="\\Updownarrow"?(l="\\Uparrow",d="‖",h="\\Downarrow"):T3e.includes(e)?(d="∣",m="vert",g=333):E3e.includes(e)?(d="∥",m="doublevert",g=556):e==="["||e==="\\lbrack"?(l="⎡",d="⎢",h="⎣",x="Size4-Regular",m="lbrack",g=667):e==="]"||e==="\\rbrack"?(l="⎤",d="⎥",h="⎦",x="Size4-Regular",m="rbrack",g=667):e==="\\lfloor"||e==="⌊"?(d=l="⎢",h="⎣",x="Size4-Regular",m="lfloor",g=667):e==="\\lceil"||e==="⌈"?(l="⎡",d=h="⎢",x="Size4-Regular",m="lceil",g=667):e==="\\rfloor"||e==="⌋"?(d=l="⎥",h="⎦",x="Size4-Regular",m="rfloor",g=667):e==="\\rceil"||e==="⌉"?(l="⎤",d=h="⎥",x="Size4-Regular",m="rceil",g=667):e==="("||e==="\\lparen"?(l="⎛",d="⎜",h="⎝",x="Size4-Regular",m="lparen",g=875):e===")"||e==="\\rparen"?(l="⎞",d="⎟",h="⎠",x="Size4-Regular",m="rparen",g=875):e==="\\{"||e==="\\lbrace"?(l="⎧",c="⎨",h="⎩",d="⎪",x="Size4-Regular"):e==="\\}"||e==="\\rbrace"?(l="⎫",c="⎬",h="⎭",d="⎪",x="Size4-Regular"):e==="\\lgroup"||e==="⟮"?(l="⎧",h="⎩",d="⎪",x="Size4-Regular"):e==="\\rgroup"||e==="⟯"?(l="⎫",h="⎭",d="⎪",x="Size4-Regular"):e==="\\lmoustache"||e==="⎰"?(l="⎧",h="⎭",d="⎪",x="Size4-Regular"):(e==="\\rmoustache"||e==="⎱")&&(l="⎫",h="⎩",d="⎪",x="Size4-Regular");var y=c0(l,x,i),w=y.height+y.depth,S=c0(d,x,i),k=S.height+S.depth,j=c0(h,x,i),N=j.height+j.depth,T=0,E=1;if(c!==null){var _=c0(c,x,i);T=_.height+_.depth,E=2}var M=w+N+T,I=Math.max(0,Math.ceil((n-M)/(E*k))),P=M+I*E*k,L=s.fontMetrics().axisHeight;r&&(L*=s.sizeMultiplier);var H=P/2-L,U=[];if(m.length>0){var ee=P-w-N,z=Math.round(P*1e3),Q=R5e(m,Math.round(ee*1e3)),B=new tu(m,Q),X=(g/1e3).toFixed(3)+"em",J=(z/1e3).toFixed(3)+"em",G=new Hl([B],{width:X,height:J,viewBox:"0 0 "+g+" "+z}),R=be.makeSvgSpan([],[G],s);R.height=z/1e3,R.style.width=X,R.style.height=J,U.push({type:"elem",elem:R})}else{if(U.push(VS(h,x,i)),U.push(z1),c===null){var ie=P-w-N+2*BO;U.push(US(d,ie,s))}else{var W=(P-w-N-T)/2+2*BO;U.push(US(d,W,s)),U.push(z1),U.push(VS(c,x,i)),U.push(z1),U.push(US(d,W,s))}U.push(z1),U.push(VS(l,x,i))}var q=s.havingBaseStyle(Et.TEXT),V=be.makeVList({positionType:"bottom",positionData:H,children:U},q);return EN(be.makeSpan(["delimsizing","mult"],[V],q),Et.TEXT,s,a)},WS=80,GS=.08,XS=function(e,n,r,s,i){var a=M5e(e,s,r),l=new tu(e,a),c=new Hl([l],{width:"400em",height:Xe(n),viewBox:"0 0 400000 "+r,preserveAspectRatio:"xMinYMin slice"});return be.makeSvgSpan(["hide-tail"],[c],i)},_3e=function(e,n){var r=n.havingBaseSizing(),s=xU("\\surd",e*r.sizeMultiplier,gU,r),i=r.sizeMultiplier,a=Math.max(0,n.minRuleThickness-n.fontMetrics().sqrtRuleThickness),l,c=0,d=0,h=0,m;return s.type==="small"?(h=1e3+1e3*a+WS,e<1?i=1:e<1.4&&(i=.7),c=(1+a+GS)/i,d=(1+a)/i,l=XS("sqrtMain",c,h,a,n),l.style.minWidth="0.853em",m=.833/i):s.type==="large"?(h=(1e3+WS)*_0[s.size],d=(_0[s.size]+a)/i,c=(_0[s.size]+a+GS)/i,l=XS("sqrtSize"+s.size,c,h,a,n),l.style.minWidth="1.02em",m=1/i):(c=e+a+GS,d=e+a,h=Math.floor(1e3*e+a)+WS,l=XS("sqrtTall",c,h,a,n),l.style.minWidth="0.742em",m=1.056),l.height=d,l.style.height=Xe(c),{span:l,advanceWidth:m,ruleWidth:(n.fontMetrics().sqrtRuleThickness+a)*i}},mU=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"],M3e=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"],pU=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],_0=[0,1.2,1.8,2.4,3],A3e=function(e,n,r,s,i){if(e==="<"||e==="\\lt"||e==="⟨"?e="\\langle":(e===">"||e==="\\gt"||e==="⟩")&&(e="\\rangle"),mU.includes(e)||pU.includes(e))return hU(e,n,!1,r,s,i);if(M3e.includes(e))return fU(e,_0[n],!1,r,s,i);throw new $e("Illegal delimiter: '"+e+"'")},R3e=[{type:"small",style:Et.SCRIPTSCRIPT},{type:"small",style:Et.SCRIPT},{type:"small",style:Et.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],D3e=[{type:"small",style:Et.SCRIPTSCRIPT},{type:"small",style:Et.SCRIPT},{type:"small",style:Et.TEXT},{type:"stack"}],gU=[{type:"small",style:Et.SCRIPTSCRIPT},{type:"small",style:Et.SCRIPT},{type:"small",style:Et.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],P3e=function(e){if(e.type==="small")return"Main-Regular";if(e.type==="large")return"Size"+e.size+"-Regular";if(e.type==="stack")return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},xU=function(e,n,r,s){for(var i=Math.min(2,3-s.style.size),a=i;an)return r[a]}return r[r.length-1]},vU=function(e,n,r,s,i,a){e==="<"||e==="\\lt"||e==="⟨"?e="\\langle":(e===">"||e==="\\gt"||e==="⟩")&&(e="\\rangle");var l;pU.includes(e)?l=R3e:mU.includes(e)?l=gU:l=D3e;var c=xU(e,n,l,s);return c.type==="small"?N3e(e,c.style,r,s,i,a):c.type==="large"?hU(e,c.size,r,s,i,a):fU(e,n,r,s,i,a)},z3e=function(e,n,r,s,i,a){var l=s.fontMetrics().axisHeight*s.sizeMultiplier,c=901,d=5/s.fontMetrics().ptPerEm,h=Math.max(n-l,r+l),m=Math.max(h/500*c,2*h-d);return vU(e,m,!0,s,i,a)},Ll={sqrtImage:_3e,sizedDelim:A3e,sizeToMaxHeight:_0,customSizedDelim:vU,leftRightDelim:z3e},vR={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},I3e=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function Bb(t,e){var n=Ib(t);if(n&&I3e.includes(n.text))return n;throw n?new $e("Invalid delimiter '"+n.text+"' after '"+e.funcName+"'",t):new $e("Invalid delimiter type '"+t.type+"'",t)}tt({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(t,e)=>{var n=Bb(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:vR[t.funcName].size,mclass:vR[t.funcName].mclass,delim:n.text}},htmlBuilder:(t,e)=>t.delim==="."?be.makeSpan([t.mclass]):Ll.sizedDelim(t.delim,t.size,e,t.mode,[t.mclass]),mathmlBuilder:t=>{var e=[];t.delim!=="."&&e.push(Aa(t.delim,t.mode));var n=new qe.MathNode("mo",e);t.mclass==="mopen"||t.mclass==="mclose"?n.setAttribute("fence","true"):n.setAttribute("fence","false"),n.setAttribute("stretchy","true");var r=Xe(Ll.sizeToMaxHeight[t.size]);return n.setAttribute("minsize",r),n.setAttribute("maxsize",r),n}});function yR(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}tt({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=t.parser.gullet.macros.get("\\current@color");if(n&&typeof n!="string")throw new $e("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:Bb(e[0],t).text,color:n}}});tt({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=Bb(e[0],t),r=t.parser;++r.leftrightDepth;var s=r.parseExpression(!1);--r.leftrightDepth,r.expect("\\right",!1);var i=en(r.parseFunction(),"leftright-right");return{type:"leftright",mode:r.mode,body:s,left:n.text,right:i.delim,rightColor:i.color}},htmlBuilder:(t,e)=>{yR(t);for(var n=hs(t.body,e,!0,["mopen","mclose"]),r=0,s=0,i=!1,a=0;a{yR(t);var n=_i(t.body,e);if(t.left!=="."){var r=new qe.MathNode("mo",[Aa(t.left,t.mode)]);r.setAttribute("fence","true"),n.unshift(r)}if(t.right!=="."){var s=new qe.MathNode("mo",[Aa(t.right,t.mode)]);s.setAttribute("fence","true"),t.rightColor&&s.setAttribute("mathcolor",t.rightColor),n.push(s)}return jN(n)}});tt({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=Bb(e[0],t);if(!t.parser.leftrightDepth)throw new $e("\\middle without preceding \\left",n);return{type:"middle",mode:t.parser.mode,delim:n.text}},htmlBuilder:(t,e)=>{var n;if(t.delim===".")n=pp(e,[]);else{n=Ll.sizedDelim(t.delim,1,e,t.mode,[]);var r={delim:t.delim,options:e};n.isMiddle=r}return n},mathmlBuilder:(t,e)=>{var n=t.delim==="\\vert"||t.delim==="|"?Aa("|","text"):Aa(t.delim,t.mode),r=new qe.MathNode("mo",[n]);return r.setAttribute("fence","true"),r.setAttribute("lspace","0.05em"),r.setAttribute("rspace","0.05em"),r}});var _N=(t,e)=>{var n=be.wrapFragment(Pn(t.body,e),e),r=t.label.slice(1),s=e.sizeMultiplier,i,a=0,l=$n.isCharacterBox(t.body);if(r==="sout")i=be.makeSpan(["stretchy","sout"]),i.height=e.fontMetrics().defaultRuleThickness/s,a=-.5*e.fontMetrics().xHeight;else if(r==="phase"){var c=Rr({number:.6,unit:"pt"},e),d=Rr({number:.35,unit:"ex"},e),h=e.havingBaseSizing();s=s/h.sizeMultiplier;var m=n.height+n.depth+c+d;n.style.paddingLeft=Xe(m/2+c);var g=Math.floor(1e3*m*s),x=E5e(g),y=new Hl([new tu("phase",x)],{width:"400em",height:Xe(g/1e3),viewBox:"0 0 400000 "+g,preserveAspectRatio:"xMinYMin slice"});i=be.makeSvgSpan(["hide-tail"],[y],e),i.style.height=Xe(m),a=n.depth+c+d}else{/cancel/.test(r)?l||n.classes.push("cancel-pad"):r==="angl"?n.classes.push("anglpad"):n.classes.push("boxpad");var w=0,S=0,k=0;/box/.test(r)?(k=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),w=e.fontMetrics().fboxsep+(r==="colorbox"?0:k),S=w):r==="angl"?(k=Math.max(e.fontMetrics().defaultRuleThickness,e.minRuleThickness),w=4*k,S=Math.max(0,.25-n.depth)):(w=l?.2:0,S=w),i=Vl.encloseSpan(n,r,w,S,e),/fbox|boxed|fcolorbox/.test(r)?(i.style.borderStyle="solid",i.style.borderWidth=Xe(k)):r==="angl"&&k!==.049&&(i.style.borderTopWidth=Xe(k),i.style.borderRightWidth=Xe(k)),a=n.depth+S,t.backgroundColor&&(i.style.backgroundColor=t.backgroundColor,t.borderColor&&(i.style.borderColor=t.borderColor))}var j;if(t.backgroundColor)j=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:a},{type:"elem",elem:n,shift:0}]},e);else{var N=/cancel|phase/.test(r)?["svg-align"]:[];j=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:0},{type:"elem",elem:i,shift:a,wrapperClasses:N}]},e)}return/cancel/.test(r)&&(j.height=n.height,j.depth=n.depth),/cancel/.test(r)&&!l?be.makeSpan(["mord","cancel-lap"],[j],e):be.makeSpan(["mord"],[j],e)},MN=(t,e)=>{var n=0,r=new qe.MathNode(t.label.indexOf("colorbox")>-1?"mpadded":"menclose",[lr(t.body,e)]);switch(t.label){case"\\cancel":r.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":r.setAttribute("notation","downdiagonalstrike");break;case"\\phase":r.setAttribute("notation","phasorangle");break;case"\\sout":r.setAttribute("notation","horizontalstrike");break;case"\\fbox":r.setAttribute("notation","box");break;case"\\angl":r.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(n=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,r.setAttribute("width","+"+2*n+"pt"),r.setAttribute("height","+"+2*n+"pt"),r.setAttribute("lspace",n+"pt"),r.setAttribute("voffset",n+"pt"),t.label==="\\fcolorbox"){var s=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);r.setAttribute("style","border: "+s+"em solid "+String(t.borderColor))}break;case"\\xcancel":r.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return t.backgroundColor&&r.setAttribute("mathbackground",t.backgroundColor),r};tt({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(t,e,n){var{parser:r,funcName:s}=t,i=en(e[0],"color-token").color,a=e[1];return{type:"enclose",mode:r.mode,label:s,backgroundColor:i,body:a}},htmlBuilder:_N,mathmlBuilder:MN});tt({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(t,e,n){var{parser:r,funcName:s}=t,i=en(e[0],"color-token").color,a=en(e[1],"color-token").color,l=e[2];return{type:"enclose",mode:r.mode,label:s,backgroundColor:a,borderColor:i,body:l}},htmlBuilder:_N,mathmlBuilder:MN});tt({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"enclose",mode:n.mode,label:"\\fbox",body:e[0]}}});tt({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];return{type:"enclose",mode:n.mode,label:r,body:s}},htmlBuilder:_N,mathmlBuilder:MN});tt({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(t,e){var{parser:n}=t;return{type:"enclose",mode:n.mode,label:"\\angl",body:e[0]}}});var yU={};function Qo(t){for(var{type:e,names:n,props:r,handler:s,htmlBuilder:i,mathmlBuilder:a}=t,l={type:e,numArgs:r.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:s},c=0;c{var e=t.parser.settings;if(!e.displayMode)throw new $e("{"+t.envName+"} can be used only in display mode.")};function AN(t){if(t.indexOf("ed")===-1)return t.indexOf("*")===-1}function du(t,e,n){var{hskipBeforeAndAfter:r,addJot:s,cols:i,arraystretch:a,colSeparationType:l,autoTag:c,singleRow:d,emptySingleRow:h,maxNumCols:m,leqno:g}=e;if(t.gullet.beginGroup(),d||t.gullet.macros.set("\\cr","\\\\\\relax"),!a){var x=t.gullet.expandMacroAsText("\\arraystretch");if(x==null)a=1;else if(a=parseFloat(x),!a||a<0)throw new $e("Invalid \\arraystretch: "+x)}t.gullet.beginGroup();var y=[],w=[y],S=[],k=[],j=c!=null?[]:void 0;function N(){c&&t.gullet.macros.set("\\@eqnsw","1",!0)}function T(){j&&(t.gullet.macros.get("\\df@tag")?(j.push(t.subparse([new Xi("\\df@tag")])),t.gullet.macros.set("\\df@tag",void 0,!0)):j.push(!!c&&t.gullet.macros.get("\\@eqnsw")==="1"))}for(N(),k.push(bR(t));;){var E=t.parseExpression(!1,d?"\\end":"\\\\");t.gullet.endGroup(),t.gullet.beginGroup(),E={type:"ordgroup",mode:t.mode,body:E},n&&(E={type:"styling",mode:t.mode,style:n,body:[E]}),y.push(E);var _=t.fetch().text;if(_==="&"){if(m&&y.length===m){if(d||l)throw new $e("Too many tab characters: &",t.nextToken);t.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}t.consume()}else if(_==="\\end"){T(),y.length===1&&E.type==="styling"&&E.body[0].body.length===0&&(w.length>1||!h)&&w.pop(),k.length0&&(N+=.25),d.push({pos:N,isDashed:He[Ot]})}for(T(a[0]),r=0;r0&&(H+=j,MHe))for(r=0;r=l)){var K=void 0;(s>0||e.hskipBeforeAndAfter)&&(K=$n.deflt(W.pregap,g),K!==0&&(Q=be.makeSpan(["arraycolsep"],[]),Q.style.width=Xe(K),z.push(Q)));var se=[];for(r=0;r0){for(var We=be.makeLineSpan("hline",n,h),Ye=be.makeLineSpan("hdashline",n,h),Je=[{type:"elem",elem:c,shift:0}];d.length>0;){var Oe=d.pop(),Ve=Oe.pos-U;Oe.isDashed?Je.push({type:"elem",elem:Ye,shift:Ve}):Je.push({type:"elem",elem:We,shift:Ve})}c=be.makeVList({positionType:"individualShift",children:Je},n)}if(X.length===0)return be.makeSpan(["mord"],[c],n);var Ue=be.makeVList({positionType:"individualShift",children:X},n);return Ue=be.makeSpan(["tag"],[Ue],n),be.makeFragment([c,Ue])},L3e={c:"center ",l:"left ",r:"right "},Uo=function(e,n){for(var r=[],s=new qe.MathNode("mtd",[],["mtr-glue"]),i=new qe.MathNode("mtd",[],["mml-eqn-num"]),a=0;a0){var y=e.cols,w="",S=!1,k=0,j=y.length;y[0].type==="separator"&&(g+="top ",k=1),y[y.length-1].type==="separator"&&(g+="bottom ",j-=1);for(var N=k;N0?"left ":"",g+=I[I.length-1].length>0?"right ":"";for(var P=1;P-1?"alignat":"align",i=e.envName==="split",a=du(e.parser,{cols:r,addJot:!0,autoTag:i?void 0:AN(e.envName),emptySingleRow:!0,colSeparationType:s,maxNumCols:i?2:void 0,leqno:e.parser.settings.leqno},"display"),l,c=0,d={type:"ordgroup",mode:e.mode,body:[]};if(n[0]&&n[0].type==="ordgroup"){for(var h="",m=0;m0&&x&&(S=1),r[y]={type:"align",align:w,pregap:S,postgap:0}}return a.colSeparationType=x?"align":"alignat",a};Qo({type:"array",names:["array","darray"],props:{numArgs:1},handler(t,e){var n=Ib(e[0]),r=n?[e[0]]:en(e[0],"ordgroup").body,s=r.map(function(a){var l=CN(a),c=l.text;if("lcr".indexOf(c)!==-1)return{type:"align",align:c};if(c==="|")return{type:"separator",separator:"|"};if(c===":")return{type:"separator",separator:":"};throw new $e("Unknown column alignment: "+c,a)}),i={cols:s,hskipBeforeAndAfter:!0,maxNumCols:s.length};return du(t.parser,i,RN(t.envName))},htmlBuilder:Vo,mathmlBuilder:Uo});Qo({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName.replace("*","")],n="c",r={hskipBeforeAndAfter:!1,cols:[{type:"align",align:n}]};if(t.envName.charAt(t.envName.length-1)==="*"){var s=t.parser;if(s.consumeSpaces(),s.fetch().text==="["){if(s.consume(),s.consumeSpaces(),n=s.fetch().text,"lcr".indexOf(n)===-1)throw new $e("Expected l or c or r",s.nextToken);s.consume(),s.consumeSpaces(),s.expect("]"),s.consume(),r.cols=[{type:"align",align:n}]}}var i=du(t.parser,r,RN(t.envName)),a=Math.max(0,...i.body.map(l=>l.length));return i.cols=new Array(a).fill({type:"align",align:n}),e?{type:"leftright",mode:t.mode,body:[i],left:e[0],right:e[1],rightColor:void 0}:i},htmlBuilder:Vo,mathmlBuilder:Uo});Qo({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(t){var e={arraystretch:.5},n=du(t.parser,e,"script");return n.colSeparationType="small",n},htmlBuilder:Vo,mathmlBuilder:Uo});Qo({type:"array",names:["subarray"],props:{numArgs:1},handler(t,e){var n=Ib(e[0]),r=n?[e[0]]:en(e[0],"ordgroup").body,s=r.map(function(a){var l=CN(a),c=l.text;if("lc".indexOf(c)!==-1)return{type:"align",align:c};throw new $e("Unknown column alignment: "+c,a)});if(s.length>1)throw new $e("{subarray} can contain only one column");var i={cols:s,hskipBeforeAndAfter:!1,arraystretch:.5};if(i=du(t.parser,i,"script"),i.body.length>0&&i.body[0].length>1)throw new $e("{subarray} can contain only one column");return i},htmlBuilder:Vo,mathmlBuilder:Uo});Qo({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(t){var e={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},n=du(t.parser,e,RN(t.envName));return{type:"leftright",mode:t.mode,body:[n],left:t.envName.indexOf("r")>-1?".":"\\{",right:t.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:Vo,mathmlBuilder:Uo});Qo({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:wU,htmlBuilder:Vo,mathmlBuilder:Uo});Qo({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(t){["gather","gather*"].includes(t.envName)&&Fb(t);var e={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:AN(t.envName),emptySingleRow:!0,leqno:t.parser.settings.leqno};return du(t.parser,e,"display")},htmlBuilder:Vo,mathmlBuilder:Uo});Qo({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:wU,htmlBuilder:Vo,mathmlBuilder:Uo});Qo({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(t){Fb(t);var e={autoTag:AN(t.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:t.parser.settings.leqno};return du(t.parser,e,"display")},htmlBuilder:Vo,mathmlBuilder:Uo});Qo({type:"array",names:["CD"],props:{numArgs:0},handler(t){return Fb(t),O3e(t.parser)},htmlBuilder:Vo,mathmlBuilder:Uo});Z("\\nonumber","\\gdef\\@eqnsw{0}");Z("\\notag","\\nonumber");tt({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(t,e){throw new $e(t.funcName+" valid only within array environment")}});var wR=yU;tt({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];if(s.type!=="ordgroup")throw new $e("Invalid environment name",s);for(var i="",a=0;a{var n=t.font,r=e.withFont(n);return Pn(t.body,r)},kU=(t,e)=>{var n=t.font,r=e.withFont(n);return lr(t.body,r)},SR={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};tt({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=wy(e[0]),i=r;return i in SR&&(i=SR[i]),{type:"font",mode:n.mode,font:i.slice(1),body:s}},htmlBuilder:SU,mathmlBuilder:kU});tt({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(t,e)=>{var{parser:n}=t,r=e[0],s=$n.isCharacterBox(r);return{type:"mclass",mode:n.mode,mclass:Lb(r),body:[{type:"font",mode:n.mode,font:"boldsymbol",body:r}],isCharacterBox:s}}});tt({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(t,e)=>{var{parser:n,funcName:r,breakOnTokenText:s}=t,{mode:i}=n,a=n.parseExpression(!0,s),l="math"+r.slice(1);return{type:"font",mode:i,font:l,body:{type:"ordgroup",mode:n.mode,body:a}}},htmlBuilder:SU,mathmlBuilder:kU});var OU=(t,e)=>{var n=e;return t==="display"?n=n.id>=Et.SCRIPT.id?n.text():Et.DISPLAY:t==="text"&&n.size===Et.DISPLAY.size?n=Et.TEXT:t==="script"?n=Et.SCRIPT:t==="scriptscript"&&(n=Et.SCRIPTSCRIPT),n},DN=(t,e)=>{var n=OU(t.size,e.style),r=n.fracNum(),s=n.fracDen(),i;i=e.havingStyle(r);var a=Pn(t.numer,i,e);if(t.continued){var l=8.5/e.fontMetrics().ptPerEm,c=3.5/e.fontMetrics().ptPerEm;a.height=a.height0?y=3*g:y=7*g,w=e.fontMetrics().denom1):(m>0?(x=e.fontMetrics().num2,y=g):(x=e.fontMetrics().num3,y=3*g),w=e.fontMetrics().denom2);var S;if(h){var j=e.fontMetrics().axisHeight;x-a.depth-(j+.5*m){var n=new qe.MathNode("mfrac",[lr(t.numer,e),lr(t.denom,e)]);if(!t.hasBarLine)n.setAttribute("linethickness","0px");else if(t.barSize){var r=Rr(t.barSize,e);n.setAttribute("linethickness",Xe(r))}var s=OU(t.size,e.style);if(s.size!==e.style.size){n=new qe.MathNode("mstyle",[n]);var i=s.size===Et.DISPLAY.size?"true":"false";n.setAttribute("displaystyle",i),n.setAttribute("scriptlevel","0")}if(t.leftDelim!=null||t.rightDelim!=null){var a=[];if(t.leftDelim!=null){var l=new qe.MathNode("mo",[new qe.TextNode(t.leftDelim.replace("\\",""))]);l.setAttribute("fence","true"),a.push(l)}if(a.push(n),t.rightDelim!=null){var c=new qe.MathNode("mo",[new qe.TextNode(t.rightDelim.replace("\\",""))]);c.setAttribute("fence","true"),a.push(c)}return jN(a)}return n};tt({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0],i=e[1],a,l=null,c=null,d="auto";switch(r){case"\\dfrac":case"\\frac":case"\\tfrac":a=!0;break;case"\\\\atopfrac":a=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":a=!1,l="(",c=")";break;case"\\\\bracefrac":a=!1,l="\\{",c="\\}";break;case"\\\\brackfrac":a=!1,l="[",c="]";break;default:throw new Error("Unrecognized genfrac command")}switch(r){case"\\dfrac":case"\\dbinom":d="display";break;case"\\tfrac":case"\\tbinom":d="text";break}return{type:"genfrac",mode:n.mode,continued:!1,numer:s,denom:i,hasBarLine:a,leftDelim:l,rightDelim:c,size:d,barSize:null}},htmlBuilder:DN,mathmlBuilder:PN});tt({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0],i=e[1];return{type:"genfrac",mode:n.mode,continued:!0,numer:s,denom:i,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}}});tt({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(t){var{parser:e,funcName:n,token:r}=t,s;switch(n){case"\\over":s="\\frac";break;case"\\choose":s="\\binom";break;case"\\atop":s="\\\\atopfrac";break;case"\\brace":s="\\\\bracefrac";break;case"\\brack":s="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:s,token:r}}});var kR=["display","text","script","scriptscript"],OR=function(e){var n=null;return e.length>0&&(n=e,n=n==="."?null:n),n};tt({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(t,e){var{parser:n}=t,r=e[4],s=e[5],i=wy(e[0]),a=i.type==="atom"&&i.family==="open"?OR(i.text):null,l=wy(e[1]),c=l.type==="atom"&&l.family==="close"?OR(l.text):null,d=en(e[2],"size"),h,m=null;d.isBlank?h=!0:(m=d.value,h=m.number>0);var g="auto",x=e[3];if(x.type==="ordgroup"){if(x.body.length>0){var y=en(x.body[0],"textord");g=kR[Number(y.text)]}}else x=en(x,"textord"),g=kR[Number(x.text)];return{type:"genfrac",mode:n.mode,numer:r,denom:s,continued:!1,hasBarLine:h,barSize:m,leftDelim:a,rightDelim:c,size:g}},htmlBuilder:DN,mathmlBuilder:PN});tt({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(t,e){var{parser:n,funcName:r,token:s}=t;return{type:"infix",mode:n.mode,replaceWith:"\\\\abovefrac",size:en(e[0],"size").value,token:s}}});tt({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0],i=m5e(en(e[1],"infix").size),a=e[2],l=i.number>0;return{type:"genfrac",mode:n.mode,numer:s,denom:a,continued:!1,hasBarLine:l,barSize:i,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:DN,mathmlBuilder:PN});var jU=(t,e)=>{var n=e.style,r,s;t.type==="supsub"?(r=t.sup?Pn(t.sup,e.havingStyle(n.sup()),e):Pn(t.sub,e.havingStyle(n.sub()),e),s=en(t.base,"horizBrace")):s=en(t,"horizBrace");var i=Pn(s.base,e.havingBaseStyle(Et.DISPLAY)),a=Vl.svgSpan(s,e),l;if(s.isOver?(l=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:.1},{type:"elem",elem:a}]},e),l.children[0].children[0].children[1].classes.push("svg-align")):(l=be.makeVList({positionType:"bottom",positionData:i.depth+.1+a.height,children:[{type:"elem",elem:a},{type:"kern",size:.1},{type:"elem",elem:i}]},e),l.children[0].children[0].children[0].classes.push("svg-align")),r){var c=be.makeSpan(["mord",s.isOver?"mover":"munder"],[l],e);s.isOver?l=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:c},{type:"kern",size:.2},{type:"elem",elem:r}]},e):l=be.makeVList({positionType:"bottom",positionData:c.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:c}]},e)}return be.makeSpan(["mord",s.isOver?"mover":"munder"],[l],e)},B3e=(t,e)=>{var n=Vl.mathMLnode(t.label);return new qe.MathNode(t.isOver?"mover":"munder",[lr(t.base,e),n])};tt({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:r}=t;return{type:"horizBrace",mode:n.mode,label:r,isOver:/^\\over/.test(r),base:e[0]}},htmlBuilder:jU,mathmlBuilder:B3e});tt({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[1],s=en(e[0],"url").url;return n.settings.isTrusted({command:"\\href",url:s})?{type:"href",mode:n.mode,href:s,body:Qr(r)}:n.formatUnsupportedCmd("\\href")},htmlBuilder:(t,e)=>{var n=hs(t.body,e,!1);return be.makeAnchor(t.href,[],n,e)},mathmlBuilder:(t,e)=>{var n=nu(t.body,e);return n instanceof Qi||(n=new Qi("mrow",[n])),n.setAttribute("href",t.href),n}});tt({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=en(e[0],"url").url;if(!n.settings.isTrusted({command:"\\url",url:r}))return n.formatUnsupportedCmd("\\url");for(var s=[],i=0;i{var{parser:n,funcName:r,token:s}=t,i=en(e[0],"raw").string,a=e[1];n.settings.strict&&n.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var l,c={};switch(r){case"\\htmlClass":c.class=i,l={command:"\\htmlClass",class:i};break;case"\\htmlId":c.id=i,l={command:"\\htmlId",id:i};break;case"\\htmlStyle":c.style=i,l={command:"\\htmlStyle",style:i};break;case"\\htmlData":{for(var d=i.split(","),h=0;h{var n=hs(t.body,e,!1),r=["enclosing"];t.attributes.class&&r.push(...t.attributes.class.trim().split(/\s+/));var s=be.makeSpan(r,n,e);for(var i in t.attributes)i!=="class"&&t.attributes.hasOwnProperty(i)&&s.setAttribute(i,t.attributes[i]);return s},mathmlBuilder:(t,e)=>nu(t.body,e)});tt({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t;return{type:"htmlmathml",mode:n.mode,html:Qr(e[0]),mathml:Qr(e[1])}},htmlBuilder:(t,e)=>{var n=hs(t.html,e,!1);return be.makeFragment(n)},mathmlBuilder:(t,e)=>nu(t.mathml,e)});var YS=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var n=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!n)throw new $e("Invalid size: '"+e+"' in \\includegraphics");var r={number:+(n[1]+n[2]),unit:n[3]};if(!QV(r))throw new $e("Invalid unit: '"+r.unit+"' in \\includegraphics.");return r};tt({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(t,e,n)=>{var{parser:r}=t,s={number:0,unit:"em"},i={number:.9,unit:"em"},a={number:0,unit:"em"},l="";if(n[0])for(var c=en(n[0],"raw").string,d=c.split(","),h=0;h{var n=Rr(t.height,e),r=0;t.totalheight.number>0&&(r=Rr(t.totalheight,e)-n);var s=0;t.width.number>0&&(s=Rr(t.width,e));var i={height:Xe(n+r)};s>0&&(i.width=Xe(s)),r>0&&(i.verticalAlign=Xe(-r));var a=new B5e(t.src,t.alt,i);return a.height=n,a.depth=r,a},mathmlBuilder:(t,e)=>{var n=new qe.MathNode("mglyph",[]);n.setAttribute("alt",t.alt);var r=Rr(t.height,e),s=0;if(t.totalheight.number>0&&(s=Rr(t.totalheight,e)-r,n.setAttribute("valign",Xe(-s))),n.setAttribute("height",Xe(r+s)),t.width.number>0){var i=Rr(t.width,e);n.setAttribute("width",Xe(i))}return n.setAttribute("src",t.src),n}});tt({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(t,e){var{parser:n,funcName:r}=t,s=en(e[0],"size");if(n.settings.strict){var i=r[1]==="m",a=s.value.unit==="mu";i?(a||n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" supports only mu units, "+("not "+s.value.unit+" units")),n.mode!=="math"&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" works only in math mode")):a&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" doesn't support mu units")}return{type:"kern",mode:n.mode,dimension:s.value}},htmlBuilder(t,e){return be.makeGlue(t.dimension,e)},mathmlBuilder(t,e){var n=Rr(t.dimension,e);return new qe.SpaceNode(n)}});tt({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0];return{type:"lap",mode:n.mode,alignment:r.slice(5),body:s}},htmlBuilder:(t,e)=>{var n;t.alignment==="clap"?(n=be.makeSpan([],[Pn(t.body,e)]),n=be.makeSpan(["inner"],[n],e)):n=be.makeSpan(["inner"],[Pn(t.body,e)]);var r=be.makeSpan(["fix"],[]),s=be.makeSpan([t.alignment],[n,r],e),i=be.makeSpan(["strut"]);return i.style.height=Xe(s.height+s.depth),s.depth&&(i.style.verticalAlign=Xe(-s.depth)),s.children.unshift(i),s=be.makeSpan(["thinbox"],[s],e),be.makeSpan(["mord","vbox"],[s],e)},mathmlBuilder:(t,e)=>{var n=new qe.MathNode("mpadded",[lr(t.body,e)]);if(t.alignment!=="rlap"){var r=t.alignment==="llap"?"-1":"-0.5";n.setAttribute("lspace",r+"width")}return n.setAttribute("width","0px"),n}});tt({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){var{funcName:n,parser:r}=t,s=r.mode;r.switchMode("math");var i=n==="\\("?"\\)":"$",a=r.parseExpression(!1,i);return r.expect(i),r.switchMode(s),{type:"styling",mode:r.mode,style:"text",body:a}}});tt({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){throw new $e("Mismatched "+t.funcName)}});var jR=(t,e)=>{switch(e.style.size){case Et.DISPLAY.size:return t.display;case Et.TEXT.size:return t.text;case Et.SCRIPT.size:return t.script;case Et.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}};tt({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(t,e)=>{var{parser:n}=t;return{type:"mathchoice",mode:n.mode,display:Qr(e[0]),text:Qr(e[1]),script:Qr(e[2]),scriptscript:Qr(e[3])}},htmlBuilder:(t,e)=>{var n=jR(t,e),r=hs(n,e,!1);return be.makeFragment(r)},mathmlBuilder:(t,e)=>{var n=jR(t,e);return nu(n,e)}});var NU=(t,e,n,r,s,i,a)=>{t=be.makeSpan([],[t]);var l=n&&$n.isCharacterBox(n),c,d;if(e){var h=Pn(e,r.havingStyle(s.sup()),r);d={elem:h,kern:Math.max(r.fontMetrics().bigOpSpacing1,r.fontMetrics().bigOpSpacing3-h.depth)}}if(n){var m=Pn(n,r.havingStyle(s.sub()),r);c={elem:m,kern:Math.max(r.fontMetrics().bigOpSpacing2,r.fontMetrics().bigOpSpacing4-m.height)}}var g;if(d&&c){var x=r.fontMetrics().bigOpSpacing5+c.elem.height+c.elem.depth+c.kern+t.depth+a;g=be.makeVList({positionType:"bottom",positionData:x,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:c.elem,marginLeft:Xe(-i)},{type:"kern",size:c.kern},{type:"elem",elem:t},{type:"kern",size:d.kern},{type:"elem",elem:d.elem,marginLeft:Xe(i)},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else if(c){var y=t.height-a;g=be.makeVList({positionType:"top",positionData:y,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:c.elem,marginLeft:Xe(-i)},{type:"kern",size:c.kern},{type:"elem",elem:t}]},r)}else if(d){var w=t.depth+a;g=be.makeVList({positionType:"bottom",positionData:w,children:[{type:"elem",elem:t},{type:"kern",size:d.kern},{type:"elem",elem:d.elem,marginLeft:Xe(i)},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else return t;var S=[g];if(c&&i!==0&&!l){var k=be.makeSpan(["mspace"],[],r);k.style.marginRight=Xe(i),S.unshift(k)}return be.makeSpan(["mop","op-limits"],S,r)},CU=["\\smallint"],Ff=(t,e)=>{var n,r,s=!1,i;t.type==="supsub"?(n=t.sup,r=t.sub,i=en(t.base,"op"),s=!0):i=en(t,"op");var a=e.style,l=!1;a.size===Et.DISPLAY.size&&i.symbol&&!CU.includes(i.name)&&(l=!0);var c;if(i.symbol){var d=l?"Size2-Regular":"Size1-Regular",h="";if((i.name==="\\oiint"||i.name==="\\oiiint")&&(h=i.name.slice(1),i.name=h==="oiint"?"\\iint":"\\iiint"),c=be.makeSymbol(i.name,d,"math",e,["mop","op-symbol",l?"large-op":"small-op"]),h.length>0){var m=c.italic,g=be.staticSvg(h+"Size"+(l?"2":"1"),e);c=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:c,shift:0},{type:"elem",elem:g,shift:l?.08:0}]},e),i.name="\\"+h,c.classes.unshift("mop"),c.italic=m}}else if(i.body){var x=hs(i.body,e,!0);x.length===1&&x[0]instanceof Ma?(c=x[0],c.classes[0]="mop"):c=be.makeSpan(["mop"],x,e)}else{for(var y=[],w=1;w{var n;if(t.symbol)n=new Qi("mo",[Aa(t.name,t.mode)]),CU.includes(t.name)&&n.setAttribute("largeop","false");else if(t.body)n=new Qi("mo",_i(t.body,e));else{n=new Qi("mi",[new Mo(t.name.slice(1))]);var r=new Qi("mo",[Aa("⁡","text")]);t.parentIsSupSub?n=new Qi("mrow",[n,r]):n=tU([n,r])}return n},F3e={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"};tt({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=r;return s.length===1&&(s=F3e[s]),{type:"op",mode:n.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:s}},htmlBuilder:Ff,mathmlBuilder:mg});tt({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"op",mode:n.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:Qr(r)}},htmlBuilder:Ff,mathmlBuilder:mg});var q3e={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"};tt({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(t){var{parser:e,funcName:n}=t;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:Ff,mathmlBuilder:mg});tt({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(t){var{parser:e,funcName:n}=t;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:Ff,mathmlBuilder:mg});tt({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],props:{numArgs:0},handler(t){var{parser:e,funcName:n}=t,r=n;return r.length===1&&(r=q3e[r]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:r}},htmlBuilder:Ff,mathmlBuilder:mg});var TU=(t,e)=>{var n,r,s=!1,i;t.type==="supsub"?(n=t.sup,r=t.sub,i=en(t.base,"operatorname"),s=!0):i=en(t,"operatorname");var a;if(i.body.length>0){for(var l=i.body.map(m=>{var g=m.text;return typeof g=="string"?{type:"textord",mode:m.mode,text:g}:m}),c=hs(l,e.withFont("mathrm"),!0),d=0;d{for(var n=_i(t.body,e.withFont("mathrm")),r=!0,s=0;sh.toText()).join("");n=[new qe.TextNode(l)]}var c=new qe.MathNode("mi",n);c.setAttribute("mathvariant","normal");var d=new qe.MathNode("mo",[Aa("⁡","text")]);return t.parentIsSupSub?new qe.MathNode("mrow",[c,d]):qe.newDocumentFragment([c,d])};tt({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0];return{type:"operatorname",mode:n.mode,body:Qr(s),alwaysHandleSupSub:r==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},htmlBuilder:TU,mathmlBuilder:$3e});Z("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");Sd({type:"ordgroup",htmlBuilder(t,e){return t.semisimple?be.makeFragment(hs(t.body,e,!1)):be.makeSpan(["mord"],hs(t.body,e,!0),e)},mathmlBuilder(t,e){return nu(t.body,e,!0)}});tt({type:"overline",names:["\\overline"],props:{numArgs:1},handler(t,e){var{parser:n}=t,r=e[0];return{type:"overline",mode:n.mode,body:r}},htmlBuilder(t,e){var n=Pn(t.body,e.havingCrampedStyle()),r=be.makeLineSpan("overline-line",e),s=e.fontMetrics().defaultRuleThickness,i=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n},{type:"kern",size:3*s},{type:"elem",elem:r},{type:"kern",size:s}]},e);return be.makeSpan(["mord","overline"],[i],e)},mathmlBuilder(t,e){var n=new qe.MathNode("mo",[new qe.TextNode("‾")]);n.setAttribute("stretchy","true");var r=new qe.MathNode("mover",[lr(t.body,e),n]);return r.setAttribute("accent","true"),r}});tt({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"phantom",mode:n.mode,body:Qr(r)}},htmlBuilder:(t,e)=>{var n=hs(t.body,e.withPhantom(),!1);return be.makeFragment(n)},mathmlBuilder:(t,e)=>{var n=_i(t.body,e);return new qe.MathNode("mphantom",n)}});tt({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"hphantom",mode:n.mode,body:r}},htmlBuilder:(t,e)=>{var n=be.makeSpan([],[Pn(t.body,e.withPhantom())]);if(n.height=0,n.depth=0,n.children)for(var r=0;r{var n=_i(Qr(t.body),e),r=new qe.MathNode("mphantom",n),s=new qe.MathNode("mpadded",[r]);return s.setAttribute("height","0px"),s.setAttribute("depth","0px"),s}});tt({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"vphantom",mode:n.mode,body:r}},htmlBuilder:(t,e)=>{var n=be.makeSpan(["inner"],[Pn(t.body,e.withPhantom())]),r=be.makeSpan(["fix"],[]);return be.makeSpan(["mord","rlap"],[n,r],e)},mathmlBuilder:(t,e)=>{var n=_i(Qr(t.body),e),r=new qe.MathNode("mphantom",n),s=new qe.MathNode("mpadded",[r]);return s.setAttribute("width","0px"),s}});tt({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(t,e){var{parser:n}=t,r=en(e[0],"size").value,s=e[1];return{type:"raisebox",mode:n.mode,dy:r,body:s}},htmlBuilder(t,e){var n=Pn(t.body,e),r=Rr(t.dy,e);return be.makeVList({positionType:"shift",positionData:-r,children:[{type:"elem",elem:n}]},e)},mathmlBuilder(t,e){var n=new qe.MathNode("mpadded",[lr(t.body,e)]),r=t.dy.number+t.dy.unit;return n.setAttribute("voffset",r),n}});tt({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(t){var{parser:e}=t;return{type:"internal",mode:e.mode}}});tt({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(t,e,n){var{parser:r}=t,s=n[0],i=en(e[0],"size"),a=en(e[1],"size");return{type:"rule",mode:r.mode,shift:s&&en(s,"size").value,width:i.value,height:a.value}},htmlBuilder(t,e){var n=be.makeSpan(["mord","rule"],[],e),r=Rr(t.width,e),s=Rr(t.height,e),i=t.shift?Rr(t.shift,e):0;return n.style.borderRightWidth=Xe(r),n.style.borderTopWidth=Xe(s),n.style.bottom=Xe(i),n.width=r,n.height=s+i,n.depth=-i,n.maxFontSize=s*1.125*e.sizeMultiplier,n},mathmlBuilder(t,e){var n=Rr(t.width,e),r=Rr(t.height,e),s=t.shift?Rr(t.shift,e):0,i=e.color&&e.getColor()||"black",a=new qe.MathNode("mspace");a.setAttribute("mathbackground",i),a.setAttribute("width",Xe(n)),a.setAttribute("height",Xe(r));var l=new qe.MathNode("mpadded",[a]);return s>=0?l.setAttribute("height",Xe(s)):(l.setAttribute("height",Xe(s)),l.setAttribute("depth",Xe(-s))),l.setAttribute("voffset",Xe(s)),l}});function EU(t,e,n){for(var r=hs(t,e,!1),s=e.sizeMultiplier/n.sizeMultiplier,i=0;i{var n=e.havingSize(t.size);return EU(t.body,n,e)};tt({type:"sizing",names:NR,props:{numArgs:0,allowedInText:!0},handler:(t,e)=>{var{breakOnTokenText:n,funcName:r,parser:s}=t,i=s.parseExpression(!1,n);return{type:"sizing",mode:s.mode,size:NR.indexOf(r)+1,body:i}},htmlBuilder:H3e,mathmlBuilder:(t,e)=>{var n=e.havingSize(t.size),r=_i(t.body,n),s=new qe.MathNode("mstyle",r);return s.setAttribute("mathsize",Xe(n.sizeMultiplier)),s}});tt({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(t,e,n)=>{var{parser:r}=t,s=!1,i=!1,a=n[0]&&en(n[0],"ordgroup");if(a)for(var l="",c=0;c{var n=be.makeSpan([],[Pn(t.body,e)]);if(!t.smashHeight&&!t.smashDepth)return n;if(t.smashHeight&&(n.height=0,n.children))for(var r=0;r{var n=new qe.MathNode("mpadded",[lr(t.body,e)]);return t.smashHeight&&n.setAttribute("height","0px"),t.smashDepth&&n.setAttribute("depth","0px"),n}});tt({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,n){var{parser:r}=t,s=n[0],i=e[0];return{type:"sqrt",mode:r.mode,body:i,index:s}},htmlBuilder(t,e){var n=Pn(t.body,e.havingCrampedStyle());n.height===0&&(n.height=e.fontMetrics().xHeight),n=be.wrapFragment(n,e);var r=e.fontMetrics(),s=r.defaultRuleThickness,i=s;e.style.idn.height+n.depth+a&&(a=(a+m-n.height-n.depth)/2);var g=c.height-n.height-a-d;n.style.paddingLeft=Xe(h);var x=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:-(n.height+g)},{type:"elem",elem:c},{type:"kern",size:d}]},e);if(t.index){var y=e.havingStyle(Et.SCRIPTSCRIPT),w=Pn(t.index,y,e),S=.6*(x.height-x.depth),k=be.makeVList({positionType:"shift",positionData:-S,children:[{type:"elem",elem:w}]},e),j=be.makeSpan(["root"],[k]);return be.makeSpan(["mord","sqrt"],[j,x],e)}else return be.makeSpan(["mord","sqrt"],[x],e)},mathmlBuilder(t,e){var{body:n,index:r}=t;return r?new qe.MathNode("mroot",[lr(n,e),lr(r,e)]):new qe.MathNode("msqrt",[lr(n,e)])}});var CR={display:Et.DISPLAY,text:Et.TEXT,script:Et.SCRIPT,scriptscript:Et.SCRIPTSCRIPT};tt({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t,e){var{breakOnTokenText:n,funcName:r,parser:s}=t,i=s.parseExpression(!0,n),a=r.slice(1,r.length-5);return{type:"styling",mode:s.mode,style:a,body:i}},htmlBuilder(t,e){var n=CR[t.style],r=e.havingStyle(n).withFont("");return EU(t.body,r,e)},mathmlBuilder(t,e){var n=CR[t.style],r=e.havingStyle(n),s=_i(t.body,r),i=new qe.MathNode("mstyle",s),a={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},l=a[t.style];return i.setAttribute("scriptlevel",l[0]),i.setAttribute("displaystyle",l[1]),i}});var Q3e=function(e,n){var r=e.base;if(r)if(r.type==="op"){var s=r.limits&&(n.style.size===Et.DISPLAY.size||r.alwaysHandleSupSub);return s?Ff:null}else if(r.type==="operatorname"){var i=r.alwaysHandleSupSub&&(n.style.size===Et.DISPLAY.size||r.limits);return i?TU:null}else{if(r.type==="accent")return $n.isCharacterBox(r.base)?TN:null;if(r.type==="horizBrace"){var a=!e.sub;return a===r.isOver?jU:null}else return null}else return null};Sd({type:"supsub",htmlBuilder(t,e){var n=Q3e(t,e);if(n)return n(t,e);var{base:r,sup:s,sub:i}=t,a=Pn(r,e),l,c,d=e.fontMetrics(),h=0,m=0,g=r&&$n.isCharacterBox(r);if(s){var x=e.havingStyle(e.style.sup());l=Pn(s,x,e),g||(h=a.height-x.fontMetrics().supDrop*x.sizeMultiplier/e.sizeMultiplier)}if(i){var y=e.havingStyle(e.style.sub());c=Pn(i,y,e),g||(m=a.depth+y.fontMetrics().subDrop*y.sizeMultiplier/e.sizeMultiplier)}var w;e.style===Et.DISPLAY?w=d.sup1:e.style.cramped?w=d.sup3:w=d.sup2;var S=e.sizeMultiplier,k=Xe(.5/d.ptPerEm/S),j=null;if(c){var N=t.base&&t.base.type==="op"&&t.base.name&&(t.base.name==="\\oiint"||t.base.name==="\\oiiint");(a instanceof Ma||N)&&(j=Xe(-a.italic))}var T;if(l&&c){h=Math.max(h,w,l.depth+.25*d.xHeight),m=Math.max(m,d.sub2);var E=d.defaultRuleThickness,_=4*E;if(h-l.depth-(c.height-m)<_){m=_-(h-l.depth)+c.height;var M=.8*d.xHeight-(h-l.depth);M>0&&(h+=M,m-=M)}var I=[{type:"elem",elem:c,shift:m,marginRight:k,marginLeft:j},{type:"elem",elem:l,shift:-h,marginRight:k}];T=be.makeVList({positionType:"individualShift",children:I},e)}else if(c){m=Math.max(m,d.sub1,c.height-.8*d.xHeight);var P=[{type:"elem",elem:c,marginLeft:j,marginRight:k}];T=be.makeVList({positionType:"shift",positionData:m,children:P},e)}else if(l)h=Math.max(h,w,l.depth+.25*d.xHeight),T=be.makeVList({positionType:"shift",positionData:-h,children:[{type:"elem",elem:l,marginRight:k}]},e);else throw new Error("supsub must have either sup or sub.");var L=zO(a,"right")||"mord";return be.makeSpan([L],[a,be.makeSpan(["msupsub"],[T])],e)},mathmlBuilder(t,e){var n=!1,r,s;t.base&&t.base.type==="horizBrace"&&(s=!!t.sup,s===t.base.isOver&&(n=!0,r=t.base.isOver)),t.base&&(t.base.type==="op"||t.base.type==="operatorname")&&(t.base.parentIsSupSub=!0);var i=[lr(t.base,e)];t.sub&&i.push(lr(t.sub,e)),t.sup&&i.push(lr(t.sup,e));var a;if(n)a=r?"mover":"munder";else if(t.sub)if(t.sup){var d=t.base;d&&d.type==="op"&&d.limits&&e.style===Et.DISPLAY||d&&d.type==="operatorname"&&d.alwaysHandleSupSub&&(e.style===Et.DISPLAY||d.limits)?a="munderover":a="msubsup"}else{var c=t.base;c&&c.type==="op"&&c.limits&&(e.style===Et.DISPLAY||c.alwaysHandleSupSub)||c&&c.type==="operatorname"&&c.alwaysHandleSupSub&&(c.limits||e.style===Et.DISPLAY)?a="munder":a="msub"}else{var l=t.base;l&&l.type==="op"&&l.limits&&(e.style===Et.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||e.style===Et.DISPLAY)?a="mover":a="msup"}return new qe.MathNode(a,i)}});Sd({type:"atom",htmlBuilder(t,e){return be.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder(t,e){var n=new qe.MathNode("mo",[Aa(t.text,t.mode)]);if(t.family==="bin"){var r=NN(t,e);r==="bold-italic"&&n.setAttribute("mathvariant",r)}else t.family==="punct"?n.setAttribute("separator","true"):(t.family==="open"||t.family==="close")&&n.setAttribute("stretchy","false");return n}});var _U={mi:"italic",mn:"normal",mtext:"normal"};Sd({type:"mathord",htmlBuilder(t,e){return be.makeOrd(t,e,"mathord")},mathmlBuilder(t,e){var n=new qe.MathNode("mi",[Aa(t.text,t.mode,e)]),r=NN(t,e)||"italic";return r!==_U[n.type]&&n.setAttribute("mathvariant",r),n}});Sd({type:"textord",htmlBuilder(t,e){return be.makeOrd(t,e,"textord")},mathmlBuilder(t,e){var n=Aa(t.text,t.mode,e),r=NN(t,e)||"normal",s;return t.mode==="text"?s=new qe.MathNode("mtext",[n]):/[0-9]/.test(t.text)?s=new qe.MathNode("mn",[n]):t.text==="\\prime"?s=new qe.MathNode("mo",[n]):s=new qe.MathNode("mi",[n]),r!==_U[s.type]&&s.setAttribute("mathvariant",r),s}});var KS={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},ZS={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};Sd({type:"spacing",htmlBuilder(t,e){if(ZS.hasOwnProperty(t.text)){var n=ZS[t.text].className||"";if(t.mode==="text"){var r=be.makeOrd(t,e,"textord");return r.classes.push(n),r}else return be.makeSpan(["mspace",n],[be.mathsym(t.text,t.mode,e)],e)}else{if(KS.hasOwnProperty(t.text))return be.makeSpan(["mspace",KS[t.text]],[],e);throw new $e('Unknown type of space "'+t.text+'"')}},mathmlBuilder(t,e){var n;if(ZS.hasOwnProperty(t.text))n=new qe.MathNode("mtext",[new qe.TextNode(" ")]);else{if(KS.hasOwnProperty(t.text))return new qe.MathNode("mspace");throw new $e('Unknown type of space "'+t.text+'"')}return n}});var TR=()=>{var t=new qe.MathNode("mtd",[]);return t.setAttribute("width","50%"),t};Sd({type:"tag",mathmlBuilder(t,e){var n=new qe.MathNode("mtable",[new qe.MathNode("mtr",[TR(),new qe.MathNode("mtd",[nu(t.body,e)]),TR(),new qe.MathNode("mtd",[nu(t.tag,e)])])]);return n.setAttribute("width","100%"),n}});var ER={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},_R={"\\textbf":"textbf","\\textmd":"textmd"},V3e={"\\textit":"textit","\\textup":"textup"},MR=(t,e)=>{var n=t.font;if(n){if(ER[n])return e.withTextFontFamily(ER[n]);if(_R[n])return e.withTextFontWeight(_R[n]);if(n==="\\emph")return e.fontShape==="textit"?e.withTextFontShape("textup"):e.withTextFontShape("textit")}else return e;return e.withTextFontShape(V3e[n])};tt({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];return{type:"text",mode:n.mode,body:Qr(s),font:r}},htmlBuilder(t,e){var n=MR(t,e),r=hs(t.body,n,!0);return be.makeSpan(["mord","text"],r,n)},mathmlBuilder(t,e){var n=MR(t,e);return nu(t.body,n)}});tt({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"underline",mode:n.mode,body:e[0]}},htmlBuilder(t,e){var n=Pn(t.body,e),r=be.makeLineSpan("underline-line",e),s=e.fontMetrics().defaultRuleThickness,i=be.makeVList({positionType:"top",positionData:n.height,children:[{type:"kern",size:s},{type:"elem",elem:r},{type:"kern",size:3*s},{type:"elem",elem:n}]},e);return be.makeSpan(["mord","underline"],[i],e)},mathmlBuilder(t,e){var n=new qe.MathNode("mo",[new qe.TextNode("‾")]);n.setAttribute("stretchy","true");var r=new qe.MathNode("munder",[lr(t.body,e),n]);return r.setAttribute("accentunder","true"),r}});tt({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(t,e){var{parser:n}=t;return{type:"vcenter",mode:n.mode,body:e[0]}},htmlBuilder(t,e){var n=Pn(t.body,e),r=e.fontMetrics().axisHeight,s=.5*(n.height-r-(n.depth+r));return be.makeVList({positionType:"shift",positionData:s,children:[{type:"elem",elem:n}]},e)},mathmlBuilder(t,e){return new qe.MathNode("mpadded",[lr(t.body,e)],["vcenter"])}});tt({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,e,n){throw new $e("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(t,e){for(var n=AR(t),r=[],s=e.havingStyle(e.style.text()),i=0;it.body.replace(/ /g,t.star?"␣":" "),Fc=JV,MU=`[ \r + ]`,U3e="\\\\[a-zA-Z@]+",W3e="\\\\[^\uD800-\uDFFF]",G3e="("+U3e+")"+MU+"*",X3e=`\\\\( +|[ \r ]+ +?)[ \r ]*`,FO="[̀-ͯ]",Y3e=new RegExp(FO+"+$"),K3e="("+MU+"+)|"+(X3e+"|")+"([!-\\[\\]-‧‪-퟿豈-￿]"+(FO+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(FO+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+G3e)+("|"+W3e+")");class RR{constructor(e,n){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=n,this.tokenRegex=new RegExp(K3e,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,n){this.catcodes[e]=n}lex(){var e=this.input,n=this.tokenRegex.lastIndex;if(n===e.length)return new Xi("EOF",new pi(this,n,n));var r=this.tokenRegex.exec(e);if(r===null||r.index!==n)throw new $e("Unexpected character: '"+e[n]+"'",new Xi(e[n],new pi(this,n,n+1)));var s=r[6]||r[3]||(r[2]?"\\ ":" ");if(this.catcodes[s]===14){var i=e.indexOf(` +`,this.tokenRegex.lastIndex);return i===-1?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=i+1,this.lex()}return new Xi(s,new pi(this,n,this.tokenRegex.lastIndex))}}class Z3e{constructor(e,n){e===void 0&&(e={}),n===void 0&&(n={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=n,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new $e("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var n in e)e.hasOwnProperty(n)&&(e[n]==null?delete this.current[n]:this.current[n]=e[n])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,n,r){if(r===void 0&&(r=!1),r){for(var s=0;s0&&(this.undefStack[this.undefStack.length-1][e]=n)}else{var i=this.undefStack[this.undefStack.length-1];i&&!i.hasOwnProperty(e)&&(i[e]=this.current[e])}n==null?delete this.current[e]:this.current[e]=n}}var J3e=bU;Z("\\noexpand",function(t){var e=t.popToken();return t.isExpandable(e.text)&&(e.noexpand=!0,e.treatAsRelax=!0),{tokens:[e],numArgs:0}});Z("\\expandafter",function(t){var e=t.popToken();return t.expandOnce(!0),{tokens:[e],numArgs:0}});Z("\\@firstoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[0],numArgs:0}});Z("\\@secondoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[1],numArgs:0}});Z("\\@ifnextchar",function(t){var e=t.consumeArgs(3);t.consumeSpaces();var n=t.future();return e[0].length===1&&e[0][0].text===n.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}});Z("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");Z("\\TextOrMath",function(t){var e=t.consumeArgs(2);return t.mode==="text"?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});var DR={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};Z("\\char",function(t){var e=t.popToken(),n,r="";if(e.text==="'")n=8,e=t.popToken();else if(e.text==='"')n=16,e=t.popToken();else if(e.text==="`")if(e=t.popToken(),e.text[0]==="\\")r=e.text.charCodeAt(1);else{if(e.text==="EOF")throw new $e("\\char` missing argument");r=e.text.charCodeAt(0)}else n=10;if(n){if(r=DR[e.text],r==null||r>=n)throw new $e("Invalid base-"+n+" digit "+e.text);for(var s;(s=DR[t.future().text])!=null&&s{var s=t.consumeArg().tokens;if(s.length!==1)throw new $e("\\newcommand's first argument must be a macro name");var i=s[0].text,a=t.isDefined(i);if(a&&!e)throw new $e("\\newcommand{"+i+"} attempting to redefine "+(i+"; use \\renewcommand"));if(!a&&!n)throw new $e("\\renewcommand{"+i+"} when command "+i+" does not yet exist; use \\newcommand");var l=0;if(s=t.consumeArg().tokens,s.length===1&&s[0].text==="["){for(var c="",d=t.expandNextToken();d.text!=="]"&&d.text!=="EOF";)c+=d.text,d=t.expandNextToken();if(!c.match(/^\s*[0-9]+\s*$/))throw new $e("Invalid number of arguments: "+c);l=parseInt(c),s=t.consumeArg().tokens}return a&&r||t.macros.set(i,{tokens:s,numArgs:l}),""};Z("\\newcommand",t=>zN(t,!1,!0,!1));Z("\\renewcommand",t=>zN(t,!0,!1,!1));Z("\\providecommand",t=>zN(t,!0,!0,!0));Z("\\message",t=>{var e=t.consumeArgs(1)[0];return console.log(e.reverse().map(n=>n.text).join("")),""});Z("\\errmessage",t=>{var e=t.consumeArgs(1)[0];return console.error(e.reverse().map(n=>n.text).join("")),""});Z("\\show",t=>{var e=t.popToken(),n=e.text;return console.log(e,t.macros.get(n),Fc[n],dr.math[n],dr.text[n]),""});Z("\\bgroup","{");Z("\\egroup","}");Z("~","\\nobreakspace");Z("\\lq","`");Z("\\rq","'");Z("\\aa","\\r a");Z("\\AA","\\r A");Z("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}");Z("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");Z("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}");Z("ℬ","\\mathscr{B}");Z("ℰ","\\mathscr{E}");Z("ℱ","\\mathscr{F}");Z("ℋ","\\mathscr{H}");Z("ℐ","\\mathscr{I}");Z("ℒ","\\mathscr{L}");Z("ℳ","\\mathscr{M}");Z("ℛ","\\mathscr{R}");Z("ℭ","\\mathfrak{C}");Z("ℌ","\\mathfrak{H}");Z("ℨ","\\mathfrak{Z}");Z("\\Bbbk","\\Bbb{k}");Z("·","\\cdotp");Z("\\llap","\\mathllap{\\textrm{#1}}");Z("\\rlap","\\mathrlap{\\textrm{#1}}");Z("\\clap","\\mathclap{\\textrm{#1}}");Z("\\mathstrut","\\vphantom{(}");Z("\\underbar","\\underline{\\text{#1}}");Z("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');Z("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}");Z("\\ne","\\neq");Z("≠","\\neq");Z("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}");Z("∉","\\notin");Z("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}");Z("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}");Z("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}");Z("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}");Z("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}");Z("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}");Z("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}");Z("⟂","\\perp");Z("‼","\\mathclose{!\\mkern-0.8mu!}");Z("∌","\\notni");Z("⌜","\\ulcorner");Z("⌝","\\urcorner");Z("⌞","\\llcorner");Z("⌟","\\lrcorner");Z("©","\\copyright");Z("®","\\textregistered");Z("️","\\textregistered");Z("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');Z("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');Z("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');Z("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');Z("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");Z("⋮","\\vdots");Z("\\varGamma","\\mathit{\\Gamma}");Z("\\varDelta","\\mathit{\\Delta}");Z("\\varTheta","\\mathit{\\Theta}");Z("\\varLambda","\\mathit{\\Lambda}");Z("\\varXi","\\mathit{\\Xi}");Z("\\varPi","\\mathit{\\Pi}");Z("\\varSigma","\\mathit{\\Sigma}");Z("\\varUpsilon","\\mathit{\\Upsilon}");Z("\\varPhi","\\mathit{\\Phi}");Z("\\varPsi","\\mathit{\\Psi}");Z("\\varOmega","\\mathit{\\Omega}");Z("\\substack","\\begin{subarray}{c}#1\\end{subarray}");Z("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");Z("\\boxed","\\fbox{$\\displaystyle{#1}$}");Z("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");Z("\\implies","\\DOTSB\\;\\Longrightarrow\\;");Z("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");Z("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");Z("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var PR={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};Z("\\dots",function(t){var e="\\dotso",n=t.expandAfterFuture().text;return n in PR?e=PR[n]:(n.slice(0,4)==="\\not"||n in dr.math&&["bin","rel"].includes(dr.math[n].group))&&(e="\\dotsb"),e});var IN={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};Z("\\dotso",function(t){var e=t.future().text;return e in IN?"\\ldots\\,":"\\ldots"});Z("\\dotsc",function(t){var e=t.future().text;return e in IN&&e!==","?"\\ldots\\,":"\\ldots"});Z("\\cdots",function(t){var e=t.future().text;return e in IN?"\\@cdots\\,":"\\@cdots"});Z("\\dotsb","\\cdots");Z("\\dotsm","\\cdots");Z("\\dotsi","\\!\\cdots");Z("\\dotsx","\\ldots\\,");Z("\\DOTSI","\\relax");Z("\\DOTSB","\\relax");Z("\\DOTSX","\\relax");Z("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");Z("\\,","\\tmspace+{3mu}{.1667em}");Z("\\thinspace","\\,");Z("\\>","\\mskip{4mu}");Z("\\:","\\tmspace+{4mu}{.2222em}");Z("\\medspace","\\:");Z("\\;","\\tmspace+{5mu}{.2777em}");Z("\\thickspace","\\;");Z("\\!","\\tmspace-{3mu}{.1667em}");Z("\\negthinspace","\\!");Z("\\negmedspace","\\tmspace-{4mu}{.2222em}");Z("\\negthickspace","\\tmspace-{5mu}{.277em}");Z("\\enspace","\\kern.5em ");Z("\\enskip","\\hskip.5em\\relax");Z("\\quad","\\hskip1em\\relax");Z("\\qquad","\\hskip2em\\relax");Z("\\tag","\\@ifstar\\tag@literal\\tag@paren");Z("\\tag@paren","\\tag@literal{({#1})}");Z("\\tag@literal",t=>{if(t.macros.get("\\df@tag"))throw new $e("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});Z("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");Z("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");Z("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");Z("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");Z("\\newline","\\\\\\relax");Z("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var AU=Xe(_o["Main-Regular"][84][1]-.7*_o["Main-Regular"][65][1]);Z("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+AU+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");Z("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+AU+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");Z("\\hspace","\\@ifstar\\@hspacer\\@hspace");Z("\\@hspace","\\hskip #1\\relax");Z("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");Z("\\ordinarycolon",":");Z("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");Z("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');Z("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');Z("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');Z("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');Z("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');Z("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');Z("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');Z("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');Z("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');Z("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');Z("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');Z("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');Z("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');Z("∷","\\dblcolon");Z("∹","\\eqcolon");Z("≔","\\coloneqq");Z("≕","\\eqqcolon");Z("⩴","\\Coloneqq");Z("\\ratio","\\vcentcolon");Z("\\coloncolon","\\dblcolon");Z("\\colonequals","\\coloneqq");Z("\\coloncolonequals","\\Coloneqq");Z("\\equalscolon","\\eqqcolon");Z("\\equalscoloncolon","\\Eqqcolon");Z("\\colonminus","\\coloneq");Z("\\coloncolonminus","\\Coloneq");Z("\\minuscolon","\\eqcolon");Z("\\minuscoloncolon","\\Eqcolon");Z("\\coloncolonapprox","\\Colonapprox");Z("\\coloncolonsim","\\Colonsim");Z("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");Z("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");Z("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");Z("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");Z("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}");Z("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");Z("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");Z("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");Z("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");Z("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");Z("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");Z("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");Z("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");Z("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}");Z("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}");Z("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}");Z("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}");Z("\\nleqq","\\html@mathml{\\@nleqq}{≰}");Z("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}");Z("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}");Z("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}");Z("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}");Z("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}");Z("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}");Z("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}");Z("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}");Z("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}");Z("\\imath","\\html@mathml{\\@imath}{ı}");Z("\\jmath","\\html@mathml{\\@jmath}{ȷ}");Z("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}");Z("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}");Z("⟦","\\llbracket");Z("⟧","\\rrbracket");Z("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}");Z("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}");Z("⦃","\\lBrace");Z("⦄","\\rBrace");Z("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}");Z("⦵","\\minuso");Z("\\darr","\\downarrow");Z("\\dArr","\\Downarrow");Z("\\Darr","\\Downarrow");Z("\\lang","\\langle");Z("\\rang","\\rangle");Z("\\uarr","\\uparrow");Z("\\uArr","\\Uparrow");Z("\\Uarr","\\Uparrow");Z("\\N","\\mathbb{N}");Z("\\R","\\mathbb{R}");Z("\\Z","\\mathbb{Z}");Z("\\alef","\\aleph");Z("\\alefsym","\\aleph");Z("\\Alpha","\\mathrm{A}");Z("\\Beta","\\mathrm{B}");Z("\\bull","\\bullet");Z("\\Chi","\\mathrm{X}");Z("\\clubs","\\clubsuit");Z("\\cnums","\\mathbb{C}");Z("\\Complex","\\mathbb{C}");Z("\\Dagger","\\ddagger");Z("\\diamonds","\\diamondsuit");Z("\\empty","\\emptyset");Z("\\Epsilon","\\mathrm{E}");Z("\\Eta","\\mathrm{H}");Z("\\exist","\\exists");Z("\\harr","\\leftrightarrow");Z("\\hArr","\\Leftrightarrow");Z("\\Harr","\\Leftrightarrow");Z("\\hearts","\\heartsuit");Z("\\image","\\Im");Z("\\infin","\\infty");Z("\\Iota","\\mathrm{I}");Z("\\isin","\\in");Z("\\Kappa","\\mathrm{K}");Z("\\larr","\\leftarrow");Z("\\lArr","\\Leftarrow");Z("\\Larr","\\Leftarrow");Z("\\lrarr","\\leftrightarrow");Z("\\lrArr","\\Leftrightarrow");Z("\\Lrarr","\\Leftrightarrow");Z("\\Mu","\\mathrm{M}");Z("\\natnums","\\mathbb{N}");Z("\\Nu","\\mathrm{N}");Z("\\Omicron","\\mathrm{O}");Z("\\plusmn","\\pm");Z("\\rarr","\\rightarrow");Z("\\rArr","\\Rightarrow");Z("\\Rarr","\\Rightarrow");Z("\\real","\\Re");Z("\\reals","\\mathbb{R}");Z("\\Reals","\\mathbb{R}");Z("\\Rho","\\mathrm{P}");Z("\\sdot","\\cdot");Z("\\sect","\\S");Z("\\spades","\\spadesuit");Z("\\sub","\\subset");Z("\\sube","\\subseteq");Z("\\supe","\\supseteq");Z("\\Tau","\\mathrm{T}");Z("\\thetasym","\\vartheta");Z("\\weierp","\\wp");Z("\\Zeta","\\mathrm{Z}");Z("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");Z("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");Z("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");Z("\\bra","\\mathinner{\\langle{#1}|}");Z("\\ket","\\mathinner{|{#1}\\rangle}");Z("\\braket","\\mathinner{\\langle{#1}\\rangle}");Z("\\Bra","\\left\\langle#1\\right|");Z("\\Ket","\\left|#1\\right\\rangle");var RU=t=>e=>{var n=e.consumeArg().tokens,r=e.consumeArg().tokens,s=e.consumeArg().tokens,i=e.consumeArg().tokens,a=e.macros.get("|"),l=e.macros.get("\\|");e.macros.beginGroup();var c=m=>g=>{t&&(g.macros.set("|",a),s.length&&g.macros.set("\\|",l));var x=m;if(!m&&s.length){var y=g.future();y.text==="|"&&(g.popToken(),x=!0)}return{tokens:x?s:r,numArgs:0}};e.macros.set("|",c(!1)),s.length&&e.macros.set("\\|",c(!0));var d=e.consumeArg().tokens,h=e.expandTokens([...i,...d,...n]);return e.macros.endGroup(),{tokens:h.reverse(),numArgs:0}};Z("\\bra@ket",RU(!1));Z("\\bra@set",RU(!0));Z("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");Z("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");Z("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");Z("\\angln","{\\angl n}");Z("\\blue","\\textcolor{##6495ed}{#1}");Z("\\orange","\\textcolor{##ffa500}{#1}");Z("\\pink","\\textcolor{##ff00af}{#1}");Z("\\red","\\textcolor{##df0030}{#1}");Z("\\green","\\textcolor{##28ae7b}{#1}");Z("\\gray","\\textcolor{gray}{#1}");Z("\\purple","\\textcolor{##9d38bd}{#1}");Z("\\blueA","\\textcolor{##ccfaff}{#1}");Z("\\blueB","\\textcolor{##80f6ff}{#1}");Z("\\blueC","\\textcolor{##63d9ea}{#1}");Z("\\blueD","\\textcolor{##11accd}{#1}");Z("\\blueE","\\textcolor{##0c7f99}{#1}");Z("\\tealA","\\textcolor{##94fff5}{#1}");Z("\\tealB","\\textcolor{##26edd5}{#1}");Z("\\tealC","\\textcolor{##01d1c1}{#1}");Z("\\tealD","\\textcolor{##01a995}{#1}");Z("\\tealE","\\textcolor{##208170}{#1}");Z("\\greenA","\\textcolor{##b6ffb0}{#1}");Z("\\greenB","\\textcolor{##8af281}{#1}");Z("\\greenC","\\textcolor{##74cf70}{#1}");Z("\\greenD","\\textcolor{##1fab54}{#1}");Z("\\greenE","\\textcolor{##0d923f}{#1}");Z("\\goldA","\\textcolor{##ffd0a9}{#1}");Z("\\goldB","\\textcolor{##ffbb71}{#1}");Z("\\goldC","\\textcolor{##ff9c39}{#1}");Z("\\goldD","\\textcolor{##e07d10}{#1}");Z("\\goldE","\\textcolor{##a75a05}{#1}");Z("\\redA","\\textcolor{##fca9a9}{#1}");Z("\\redB","\\textcolor{##ff8482}{#1}");Z("\\redC","\\textcolor{##f9685d}{#1}");Z("\\redD","\\textcolor{##e84d39}{#1}");Z("\\redE","\\textcolor{##bc2612}{#1}");Z("\\maroonA","\\textcolor{##ffbde0}{#1}");Z("\\maroonB","\\textcolor{##ff92c6}{#1}");Z("\\maroonC","\\textcolor{##ed5fa6}{#1}");Z("\\maroonD","\\textcolor{##ca337c}{#1}");Z("\\maroonE","\\textcolor{##9e034e}{#1}");Z("\\purpleA","\\textcolor{##ddd7ff}{#1}");Z("\\purpleB","\\textcolor{##c6b9fc}{#1}");Z("\\purpleC","\\textcolor{##aa87ff}{#1}");Z("\\purpleD","\\textcolor{##7854ab}{#1}");Z("\\purpleE","\\textcolor{##543b78}{#1}");Z("\\mintA","\\textcolor{##f5f9e8}{#1}");Z("\\mintB","\\textcolor{##edf2df}{#1}");Z("\\mintC","\\textcolor{##e0e5cc}{#1}");Z("\\grayA","\\textcolor{##f6f7f7}{#1}");Z("\\grayB","\\textcolor{##f0f1f2}{#1}");Z("\\grayC","\\textcolor{##e3e5e6}{#1}");Z("\\grayD","\\textcolor{##d6d8da}{#1}");Z("\\grayE","\\textcolor{##babec2}{#1}");Z("\\grayF","\\textcolor{##888d93}{#1}");Z("\\grayG","\\textcolor{##626569}{#1}");Z("\\grayH","\\textcolor{##3b3e40}{#1}");Z("\\grayI","\\textcolor{##21242c}{#1}");Z("\\kaBlue","\\textcolor{##314453}{#1}");Z("\\kaGreen","\\textcolor{##71B307}{#1}");var DU={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class eke{constructor(e,n,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=n,this.expansionCount=0,this.feed(e),this.macros=new Z3e(J3e,n.macros),this.mode=r,this.stack=[]}feed(e){this.lexer=new RR(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var n,r,s;if(e){if(this.consumeSpaces(),this.future().text!=="[")return null;n=this.popToken(),{tokens:s,end:r}=this.consumeArg(["]"])}else({tokens:s,start:n,end:r}=this.consumeArg());return this.pushToken(new Xi("EOF",r.loc)),this.pushTokens(s),new Xi("",pi.range(n,r))}consumeSpaces(){for(;;){var e=this.future();if(e.text===" ")this.stack.pop();else break}}consumeArg(e){var n=[],r=e&&e.length>0;r||this.consumeSpaces();var s=this.future(),i,a=0,l=0;do{if(i=this.popToken(),n.push(i),i.text==="{")++a;else if(i.text==="}"){if(--a,a===-1)throw new $e("Extra }",i)}else if(i.text==="EOF")throw new $e("Unexpected end of input in a macro argument, expected '"+(e&&r?e[l]:"}")+"'",i);if(e&&r)if((a===0||a===1&&e[l]==="{")&&i.text===e[l]){if(++l,l===e.length){n.splice(-l,l);break}}else l=0}while(a!==0||r);return s.text==="{"&&n[n.length-1].text==="}"&&(n.pop(),n.shift()),n.reverse(),{tokens:n,start:s,end:i}}consumeArgs(e,n){if(n){if(n.length!==e+1)throw new $e("The length of delimiters doesn't match the number of args!");for(var r=n[0],s=0;sthis.settings.maxExpand)throw new $e("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var n=this.popToken(),r=n.text,s=n.noexpand?null:this._getExpansion(r);if(s==null||e&&s.unexpandable){if(e&&s==null&&r[0]==="\\"&&!this.isDefined(r))throw new $e("Undefined control sequence: "+r);return this.pushToken(n),!1}this.countExpansion(1);var i=s.tokens,a=this.consumeArgs(s.numArgs,s.delimiters);if(s.numArgs){i=i.slice();for(var l=i.length-1;l>=0;--l){var c=i[l];if(c.text==="#"){if(l===0)throw new $e("Incomplete placeholder at end of macro body",c);if(c=i[--l],c.text==="#")i.splice(l+1,1);else if(/^[1-9]$/.test(c.text))i.splice(l,2,...a[+c.text-1]);else throw new $e("Not a valid argument number",c)}}}return this.pushTokens(i),i.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new Xi(e)]):void 0}expandTokens(e){var n=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;)if(this.expandOnce(!0)===!1){var s=this.stack.pop();s.treatAsRelax&&(s.noexpand=!1,s.treatAsRelax=!1),n.push(s)}return this.countExpansion(n.length),n}expandMacroAsText(e){var n=this.expandMacro(e);return n&&n.map(r=>r.text).join("")}_getExpansion(e){var n=this.macros.get(e);if(n==null)return n;if(e.length===1){var r=this.lexer.catcodes[e];if(r!=null&&r!==13)return}var s=typeof n=="function"?n(this):n;if(typeof s=="string"){var i=0;if(s.indexOf("#")!==-1)for(var a=s.replace(/##/g,"");a.indexOf("#"+(i+1))!==-1;)++i;for(var l=new RR(s,this.settings),c=[],d=l.lex();d.text!=="EOF";)c.push(d),d=l.lex();c.reverse();var h={tokens:c,numArgs:i};return h}return s}isDefined(e){return this.macros.has(e)||Fc.hasOwnProperty(e)||dr.math.hasOwnProperty(e)||dr.text.hasOwnProperty(e)||DU.hasOwnProperty(e)}isExpandable(e){var n=this.macros.get(e);return n!=null?typeof n=="string"||typeof n=="function"||!n.unexpandable:Fc.hasOwnProperty(e)&&!Fc[e].primitive}}var zR=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,I1=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g",ʰ:"h","ⁱ":"i",ʲ:"j","ᵏ":"k",ˡ:"l","ᵐ":"m",ⁿ:"n","ᵒ":"o","ᵖ":"p",ʳ:"r",ˢ:"s","ᵗ":"t","ᵘ":"u","ᵛ":"v",ʷ:"w",ˣ:"x",ʸ:"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),JS={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},IR={á:"á",à:"à",ä:"ä",ǟ:"ǟ",ã:"ã",ā:"ā",ă:"ă",ắ:"ắ",ằ:"ằ",ẵ:"ẵ",ǎ:"ǎ",â:"â",ấ:"ấ",ầ:"ầ",ẫ:"ẫ",ȧ:"ȧ",ǡ:"ǡ",å:"å",ǻ:"ǻ",ḃ:"ḃ",ć:"ć",ḉ:"ḉ",č:"č",ĉ:"ĉ",ċ:"ċ",ç:"ç",ď:"ď",ḋ:"ḋ",ḑ:"ḑ",é:"é",è:"è",ë:"ë",ẽ:"ẽ",ē:"ē",ḗ:"ḗ",ḕ:"ḕ",ĕ:"ĕ",ḝ:"ḝ",ě:"ě",ê:"ê",ế:"ế",ề:"ề",ễ:"ễ",ė:"ė",ȩ:"ȩ",ḟ:"ḟ",ǵ:"ǵ",ḡ:"ḡ",ğ:"ğ",ǧ:"ǧ",ĝ:"ĝ",ġ:"ġ",ģ:"ģ",ḧ:"ḧ",ȟ:"ȟ",ĥ:"ĥ",ḣ:"ḣ",ḩ:"ḩ",í:"í",ì:"ì",ï:"ï",ḯ:"ḯ",ĩ:"ĩ",ī:"ī",ĭ:"ĭ",ǐ:"ǐ",î:"î",ǰ:"ǰ",ĵ:"ĵ",ḱ:"ḱ",ǩ:"ǩ",ķ:"ķ",ĺ:"ĺ",ľ:"ľ",ļ:"ļ",ḿ:"ḿ",ṁ:"ṁ",ń:"ń",ǹ:"ǹ",ñ:"ñ",ň:"ň",ṅ:"ṅ",ņ:"ņ",ó:"ó",ò:"ò",ö:"ö",ȫ:"ȫ",õ:"õ",ṍ:"ṍ",ṏ:"ṏ",ȭ:"ȭ",ō:"ō",ṓ:"ṓ",ṑ:"ṑ",ŏ:"ŏ",ǒ:"ǒ",ô:"ô",ố:"ố",ồ:"ồ",ỗ:"ỗ",ȯ:"ȯ",ȱ:"ȱ",ő:"ő",ṕ:"ṕ",ṗ:"ṗ",ŕ:"ŕ",ř:"ř",ṙ:"ṙ",ŗ:"ŗ",ś:"ś",ṥ:"ṥ",š:"š",ṧ:"ṧ",ŝ:"ŝ",ṡ:"ṡ",ş:"ş",ẗ:"ẗ",ť:"ť",ṫ:"ṫ",ţ:"ţ",ú:"ú",ù:"ù",ü:"ü",ǘ:"ǘ",ǜ:"ǜ",ǖ:"ǖ",ǚ:"ǚ",ũ:"ũ",ṹ:"ṹ",ū:"ū",ṻ:"ṻ",ŭ:"ŭ",ǔ:"ǔ",û:"û",ů:"ů",ű:"ű",ṽ:"ṽ",ẃ:"ẃ",ẁ:"ẁ",ẅ:"ẅ",ŵ:"ŵ",ẇ:"ẇ",ẘ:"ẘ",ẍ:"ẍ",ẋ:"ẋ",ý:"ý",ỳ:"ỳ",ÿ:"ÿ",ỹ:"ỹ",ȳ:"ȳ",ŷ:"ŷ",ẏ:"ẏ",ẙ:"ẙ",ź:"ź",ž:"ž",ẑ:"ẑ",ż:"ż",Á:"Á",À:"À",Ä:"Ä",Ǟ:"Ǟ",Ã:"Ã",Ā:"Ā",Ă:"Ă",Ắ:"Ắ",Ằ:"Ằ",Ẵ:"Ẵ",Ǎ:"Ǎ",Â:"Â",Ấ:"Ấ",Ầ:"Ầ",Ẫ:"Ẫ",Ȧ:"Ȧ",Ǡ:"Ǡ",Å:"Å",Ǻ:"Ǻ",Ḃ:"Ḃ",Ć:"Ć",Ḉ:"Ḉ",Č:"Č",Ĉ:"Ĉ",Ċ:"Ċ",Ç:"Ç",Ď:"Ď",Ḋ:"Ḋ",Ḑ:"Ḑ",É:"É",È:"È",Ë:"Ë",Ẽ:"Ẽ",Ē:"Ē",Ḗ:"Ḗ",Ḕ:"Ḕ",Ĕ:"Ĕ",Ḝ:"Ḝ",Ě:"Ě",Ê:"Ê",Ế:"Ế",Ề:"Ề",Ễ:"Ễ",Ė:"Ė",Ȩ:"Ȩ",Ḟ:"Ḟ",Ǵ:"Ǵ",Ḡ:"Ḡ",Ğ:"Ğ",Ǧ:"Ǧ",Ĝ:"Ĝ",Ġ:"Ġ",Ģ:"Ģ",Ḧ:"Ḧ",Ȟ:"Ȟ",Ĥ:"Ĥ",Ḣ:"Ḣ",Ḩ:"Ḩ",Í:"Í",Ì:"Ì",Ï:"Ï",Ḯ:"Ḯ",Ĩ:"Ĩ",Ī:"Ī",Ĭ:"Ĭ",Ǐ:"Ǐ",Î:"Î",İ:"İ",Ĵ:"Ĵ",Ḱ:"Ḱ",Ǩ:"Ǩ",Ķ:"Ķ",Ĺ:"Ĺ",Ľ:"Ľ",Ļ:"Ļ",Ḿ:"Ḿ",Ṁ:"Ṁ",Ń:"Ń",Ǹ:"Ǹ",Ñ:"Ñ",Ň:"Ň",Ṅ:"Ṅ",Ņ:"Ņ",Ó:"Ó",Ò:"Ò",Ö:"Ö",Ȫ:"Ȫ",Õ:"Õ",Ṍ:"Ṍ",Ṏ:"Ṏ",Ȭ:"Ȭ",Ō:"Ō",Ṓ:"Ṓ",Ṑ:"Ṑ",Ŏ:"Ŏ",Ǒ:"Ǒ",Ô:"Ô",Ố:"Ố",Ồ:"Ồ",Ỗ:"Ỗ",Ȯ:"Ȯ",Ȱ:"Ȱ",Ő:"Ő",Ṕ:"Ṕ",Ṗ:"Ṗ",Ŕ:"Ŕ",Ř:"Ř",Ṙ:"Ṙ",Ŗ:"Ŗ",Ś:"Ś",Ṥ:"Ṥ",Š:"Š",Ṧ:"Ṧ",Ŝ:"Ŝ",Ṡ:"Ṡ",Ş:"Ş",Ť:"Ť",Ṫ:"Ṫ",Ţ:"Ţ",Ú:"Ú",Ù:"Ù",Ü:"Ü",Ǘ:"Ǘ",Ǜ:"Ǜ",Ǖ:"Ǖ",Ǚ:"Ǚ",Ũ:"Ũ",Ṹ:"Ṹ",Ū:"Ū",Ṻ:"Ṻ",Ŭ:"Ŭ",Ǔ:"Ǔ",Û:"Û",Ů:"Ů",Ű:"Ű",Ṽ:"Ṽ",Ẃ:"Ẃ",Ẁ:"Ẁ",Ẅ:"Ẅ",Ŵ:"Ŵ",Ẇ:"Ẇ",Ẍ:"Ẍ",Ẋ:"Ẋ",Ý:"Ý",Ỳ:"Ỳ",Ÿ:"Ÿ",Ỹ:"Ỹ",Ȳ:"Ȳ",Ŷ:"Ŷ",Ẏ:"Ẏ",Ź:"Ź",Ž:"Ž",Ẑ:"Ẑ",Ż:"Ż",ά:"ά",ὰ:"ὰ",ᾱ:"ᾱ",ᾰ:"ᾰ",έ:"έ",ὲ:"ὲ",ή:"ή",ὴ:"ὴ",ί:"ί",ὶ:"ὶ",ϊ:"ϊ",ΐ:"ΐ",ῒ:"ῒ",ῑ:"ῑ",ῐ:"ῐ",ό:"ό",ὸ:"ὸ",ύ:"ύ",ὺ:"ὺ",ϋ:"ϋ",ΰ:"ΰ",ῢ:"ῢ",ῡ:"ῡ",ῠ:"ῠ",ώ:"ώ",ὼ:"ὼ",Ύ:"Ύ",Ὺ:"Ὺ",Ϋ:"Ϋ",Ῡ:"Ῡ",Ῠ:"Ῠ",Ώ:"Ώ",Ὼ:"Ὼ"};class qb{constructor(e,n){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new eke(e,n,this.mode),this.settings=n,this.leftrightDepth=0}expect(e,n){if(n===void 0&&(n=!0),this.fetch().text!==e)throw new $e("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());n&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var n=this.nextToken;this.consume(),this.gullet.pushToken(new Xi("}")),this.gullet.pushTokens(e);var r=this.parseExpression(!1);return this.expect("}"),this.nextToken=n,r}parseExpression(e,n){for(var r=[];;){this.mode==="math"&&this.consumeSpaces();var s=this.fetch();if(qb.endOfExpression.indexOf(s.text)!==-1||n&&s.text===n||e&&Fc[s.text]&&Fc[s.text].infix)break;var i=this.parseAtom(n);if(i){if(i.type==="internal")continue}else break;r.push(i)}return this.mode==="text"&&this.formLigatures(r),this.handleInfixNodes(r)}handleInfixNodes(e){for(var n=-1,r,s=0;s=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+n[0]+'" used in math mode',e);var l=dr[this.mode][n].group,c=pi.range(e),d;if($5e.hasOwnProperty(l)){var h=l;d={type:"atom",mode:this.mode,family:h,loc:c,text:n}}else d={type:l,mode:this.mode,loc:c,text:n};a=d}else if(n.charCodeAt(0)>=128)this.settings.strict&&(HV(n.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+n[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+n[0]+'"'+(" ("+n.charCodeAt(0)+")"),e)),a={type:"textord",mode:"text",loc:pi.range(e),text:n};else return null;if(this.consume(),i)for(var m=0;md&&(d=h):h&&(d!==void 0&&d>-1&&c.push(` +`.repeat(d)||" "),d=-1,c.push(h))}return c.join("")}function qU(t,e,n){return t.type==="element"?Mke(t,e,n):t.type==="text"?n.whitespace==="normal"?$U(t,n):Ake(t):[]}function Mke(t,e,n){const r=HU(t,n),s=t.children||[];let i=-1,a=[];if(Eke(t))return a;let l,c;for($O(t)||UR(t)&&$R(e,t,UR)?c=` +`:Tke(t)?(l=2,c=2):FU(t)&&(l=1,c=1);++i{try{i(!0);const Oe=await $ke({page:a,page_size:h,is_registered:g==="all"?void 0:g==="registered",is_banned:y==="all"?void 0:y==="banned",format:S==="all"?void 0:S,sort_by:j,sort_order:T});e(Oe.data),d(Oe.total)}catch(Oe){const Ve=Oe instanceof Error?Oe.message:"加载表情包列表失败";W({title:"错误",description:Ve,variant:"destructive"})}finally{i(!1)}},[a,h,g,y,S,j,T,W]),V=async()=>{try{const Oe=await Uke();r(Oe.data)}catch(Oe){console.error("加载统计数据失败:",Oe)}};b.useEffect(()=>{q()},[q]),b.useEffect(()=>{V()},[]);const te=async Oe=>{try{const Ve=await Hke(Oe.id);M(Ve.data),P(!0)}catch(Ve){const Ue=Ve instanceof Error?Ve.message:"加载详情失败";W({title:"错误",description:Ue,variant:"destructive"})}},ne=Oe=>{M(Oe),H(!0)},K=Oe=>{M(Oe),ee(!0)},se=async()=>{if(_)try{await Vke(_.id),W({title:"成功",description:"表情包已删除"}),ee(!1),M(null),q(),V()}catch(Oe){const Ve=Oe instanceof Error?Oe.message:"删除失败";W({title:"错误",description:Ve,variant:"destructive"})}},re=async Oe=>{try{await Wke(Oe.id),W({title:"成功",description:"表情包已注册"}),q(),V()}catch(Ve){const Ue=Ve instanceof Error?Ve.message:"注册失败";W({title:"错误",description:Ue,variant:"destructive"})}},oe=async Oe=>{try{await Gke(Oe.id),W({title:"成功",description:"表情包已封禁"}),q(),V()}catch(Ve){const Ue=Ve instanceof Error?Ve.message:"封禁失败";W({title:"错误",description:Ue,variant:"destructive"})}},Te=Oe=>{const Ve=new Set(z);Ve.has(Oe)?Ve.delete(Oe):Ve.add(Oe),Q(Ve)},We=async()=>{try{const Oe=await Xke(Array.from(z));W({title:"批量删除完成",description:Oe.message}),Q(new Set),X(!1),q(),V()}catch(Oe){W({title:"批量删除失败",description:Oe instanceof Error?Oe.message:"批量删除失败",variant:"destructive"})}},Ye=()=>{const Oe=parseInt(J),Ve=Math.ceil(c/h);Oe>=1&&Oe<=Ve?(l(Oe),G("")):W({title:"无效的页码",description:`请输入1-${Ve}之间的页码`,variant:"destructive"})},Je=n?.formats?Object.keys(n.formats):[];return o.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[o.jsxs("div",{className:"mb-4 sm:mb-6",children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"表情包管理"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理麦麦的表情包资源"})]}),o.jsx(wn,{className:"flex-1",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[n&&o.jsxs("div",{className:"grid gap-4 grid-cols-2 lg:grid-cols-4",children:[o.jsx(qt,{children:o.jsxs(Fn,{className:"pb-2",children:[o.jsx(ts,{children:"总数"}),o.jsx(qn,{className:"text-2xl",children:n.total})]})}),o.jsx(qt,{children:o.jsxs(Fn,{className:"pb-2",children:[o.jsx(ts,{children:"已注册"}),o.jsx(qn,{className:"text-2xl text-green-600",children:n.registered})]})}),o.jsx(qt,{children:o.jsxs(Fn,{className:"pb-2",children:[o.jsx(ts,{children:"已封禁"}),o.jsx(qn,{className:"text-2xl text-red-600",children:n.banned})]})}),o.jsx(qt,{children:o.jsxs(Fn,{className:"pb-2",children:[o.jsx(ts,{children:"未注册"}),o.jsx(qn,{className:"text-2xl text-gray-600",children:n.unregistered})]})})]}),o.jsxs(qt,{children:[o.jsx(Fn,{children:o.jsxs(qn,{className:"flex items-center gap-2",children:[o.jsx(Z3,{className:"h-5 w-5"}),"筛选和排序"]})}),o.jsxs(Gn,{className:"space-y-4",children:[o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{children:"排序方式"}),o.jsxs(Vt,{value:`${j}-${T}`,onValueChange:Oe=>{const[Ve,Ue]=Oe.split("-");N(Ve),E(Ue),l(1)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"usage_count-desc",children:"使用次数 (多→少)"}),o.jsx(De,{value:"usage_count-asc",children:"使用次数 (少→多)"}),o.jsx(De,{value:"register_time-desc",children:"注册时间 (新→旧)"}),o.jsx(De,{value:"register_time-asc",children:"注册时间 (旧→新)"}),o.jsx(De,{value:"record_time-desc",children:"记录时间 (新→旧)"}),o.jsx(De,{value:"record_time-asc",children:"记录时间 (旧→新)"}),o.jsx(De,{value:"last_used_time-desc",children:"最后使用 (新→旧)"}),o.jsx(De,{value:"last_used_time-asc",children:"最后使用 (旧→新)"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{children:"注册状态"}),o.jsxs(Vt,{value:g,onValueChange:Oe=>{x(Oe),l(1)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部"}),o.jsx(De,{value:"registered",children:"已注册"}),o.jsx(De,{value:"unregistered",children:"未注册"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{children:"封禁状态"}),o.jsxs(Vt,{value:y,onValueChange:Oe=>{w(Oe),l(1)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部"}),o.jsx(De,{value:"banned",children:"已封禁"}),o.jsx(De,{value:"unbanned",children:"未封禁"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{children:"格式"}),o.jsxs(Vt,{value:S,onValueChange:Oe=>{k(Oe),l(1)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部"}),Je.map(Oe=>o.jsxs(De,{value:Oe,children:[Oe.toUpperCase()," (",n?.formats[Oe],")"]},Oe))]})]})]})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 pt-4 border-t",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[z.size>0&&o.jsxs("span",{className:"text-sm text-muted-foreground",children:["已选择 ",z.size," 个表情包"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(de,{className:"text-sm whitespace-nowrap",children:"卡片大小"}),o.jsxs(Vt,{value:R,onValueChange:Oe=>ie(Oe),children:[o.jsx($t,{className:"w-24",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"small",children:"小"}),o.jsx(De,{value:"medium",children:"中"}),o.jsx(De,{value:"large",children:"大"})]})]})]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(de,{htmlFor:"emoji-page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:h.toString(),onValueChange:Oe=>{m(parseInt(Oe)),l(1),Q(new Set)},children:[o.jsx($t,{id:"emoji-page-size",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"40",children:"40"}),o.jsx(De,{value:"60",children:"60"}),o.jsx(De,{value:"100",children:"100"})]})]}),z.size>0&&o.jsxs(o.Fragment,{children:[o.jsx(he,{variant:"outline",size:"sm",onClick:()=>Q(new Set),children:"取消选择"}),o.jsxs(he,{variant:"destructive",size:"sm",onClick:()=>X(!0),children:[o.jsx(Sn,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]}),o.jsx("div",{className:"flex justify-end pt-4 border-t",children:o.jsxs(he,{variant:"outline",size:"sm",onClick:q,disabled:s,children:[o.jsx(Qs,{className:`h-4 w-4 mr-2 ${s?"animate-spin":""}`}),"刷新"]})})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"表情包列表"}),o.jsxs(ts,{children:["共 ",c," 个表情包,当前第 ",a," 页"]})]}),o.jsxs(Gn,{children:[t.length===0?o.jsx("div",{className:"text-center py-12 text-muted-foreground",children:"暂无数据"}):o.jsx("div",{className:`grid gap-3 ${R==="small"?"grid-cols-3 sm:grid-cols-4 md:grid-cols-6 lg:grid-cols-8 xl:grid-cols-10":R==="medium"?"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 xl:grid-cols-8":"grid-cols-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5"}`,children:t.map(Oe=>o.jsxs("div",{className:`group relative rounded-lg border bg-card overflow-hidden hover:ring-2 hover:ring-primary transition-all cursor-pointer ${z.has(Oe.id)?"ring-2 ring-primary bg-primary/5":""}`,onClick:()=>Te(Oe.id),children:[o.jsx("div",{className:`absolute top-1 left-1 z-10 transition-opacity ${z.has(Oe.id)?"opacity-100":"opacity-0 group-hover:opacity-100"}`,children:o.jsx("div",{className:`w-5 h-5 rounded-full border-2 flex items-center justify-center ${z.has(Oe.id)?"bg-primary border-primary text-primary-foreground":"bg-background/80 border-muted-foreground/50"}`,children:z.has(Oe.id)&&o.jsx(Qc,{className:"h-3 w-3"})})}),o.jsxs("div",{className:"absolute top-1 right-1 z-10 flex flex-col gap-0.5",children:[Oe.is_registered&&o.jsx(Xn,{variant:"default",className:"bg-green-600 text-[10px] px-1 py-0",children:"已注册"}),Oe.is_banned&&o.jsx(Xn,{variant:"destructive",className:"text-[10px] px-1 py-0",children:"已封禁"})]}),o.jsx("div",{className:`aspect-square bg-muted flex items-center justify-center overflow-hidden ${R==="small"?"p-1":R==="medium"?"p-2":"p-3"}`,children:o.jsx("img",{src:QU(Oe.id),alt:"表情包",className:"w-full h-full object-contain",loading:"lazy",onError:Ve=>{const Ue=Ve.target;Ue.style.display="none";const He=Ue.parentElement;He&&(He.innerHTML='')}})}),o.jsxs("div",{className:`border-t bg-card ${R==="small"?"p-1":"p-2"}`,children:[o.jsxs("div",{className:"flex items-center justify-between gap-1 text-xs text-muted-foreground mb-1",children:[o.jsx(Xn,{variant:"outline",className:"text-[10px] px-1 py-0",children:Oe.format.toUpperCase()}),o.jsxs("span",{className:"font-mono",children:[Oe.usage_count,"次"]})]}),o.jsxs("div",{className:`flex gap-1 justify-center opacity-0 group-hover:opacity-100 transition-opacity ${R==="small"?"flex-wrap":""}`,children:[o.jsx(he,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:Ve=>{Ve.stopPropagation(),ne(Oe)},title:"编辑",children:o.jsx(R0,{className:"h-3 w-3"})}),o.jsx(he,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:Ve=>{Ve.stopPropagation(),te(Oe)},title:"详情",children:o.jsx(Oa,{className:"h-3 w-3"})}),!Oe.is_registered&&o.jsx(he,{variant:"ghost",size:"icon",className:"h-6 w-6 text-green-600 hover:text-green-700",onClick:Ve=>{Ve.stopPropagation(),re(Oe)},title:"注册",children:o.jsx(Qc,{className:"h-3 w-3"})}),!Oe.is_banned&&o.jsx(he,{variant:"ghost",size:"icon",className:"h-6 w-6 text-orange-600 hover:text-orange-700",onClick:Ve=>{Ve.stopPropagation(),oe(Oe)},title:"封禁",children:o.jsx(Lee,{className:"h-3 w-3"})}),o.jsx(he,{variant:"ghost",size:"icon",className:"h-6 w-6 text-red-600 hover:text-red-700",onClick:Ve=>{Ve.stopPropagation(),K(Oe)},title:"删除",children:o.jsx(Sn,{className:"h-3 w-3"})})]})]})]},Oe.id))}),c>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[o.jsxs("div",{className:"text-sm text-muted-foreground",children:["显示 ",(a-1)*h+1," 到"," ",Math.min(a*h,c)," 条,共 ",c," 条"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{variant:"outline",size:"sm",onClick:()=>l(1),disabled:a===1,className:"hidden sm:flex",children:o.jsx(Ep,{className:"h-4 w-4"})}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>l(Oe=>Math.max(1,Oe-1)),disabled:a===1,children:[o.jsx(vd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{type:"number",value:J,onChange:Oe=>G(Oe.target.value),onKeyDown:Oe=>Oe.key==="Enter"&&Ye(),placeholder:a.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(c/h)}),o.jsx(he,{variant:"outline",size:"sm",onClick:Ye,disabled:!J,className:"h-8",children:"跳转"})]}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>l(Oe=>Oe+1),disabled:a>=Math.ceil(c/h),children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(yd,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(he,{variant:"outline",size:"sm",onClick:()=>l(Math.ceil(c/h)),disabled:a>=Math.ceil(c/h),className:"hidden sm:flex",children:o.jsx(_p,{className:"h-4 w-4"})})]})]})]})]}),o.jsx(Kke,{emoji:_,open:I,onOpenChange:P}),o.jsx(Zke,{emoji:_,open:L,onOpenChange:H,onSuccess:()=>{q(),V()}})]})}),o.jsx(Dn,{open:B,onOpenChange:X,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认批量删除"}),o.jsxs(_n,{children:["你确定要删除选中的 ",z.size," 个表情包吗?此操作不可撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:We,children:"确认删除"})]})]})}),o.jsx(Dr,{open:U,onOpenChange:ee,children:o.jsxs(Sr,{children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"确认删除"}),o.jsx(ss,{children:"确定要删除这个表情包吗?此操作无法撤销。"})]}),o.jsxs(bs,{children:[o.jsx(he,{variant:"outline",onClick:()=>ee(!1),children:"取消"}),o.jsx(he,{variant:"destructive",onClick:se,children:"删除"})]})]})})]})}function Kke({emoji:t,open:e,onOpenChange:n}){if(!t)return null;const r=s=>s?new Date(s*1e3).toLocaleString("zh-CN"):"-";return o.jsx(Dr,{open:e,onOpenChange:n,children:o.jsxs(Sr,{className:"max-w-2xl max-h-[90vh]",children:[o.jsx(kr,{children:o.jsx(Or,{children:"表情包详情"})}),o.jsx(wn,{className:"max-h-[calc(90vh-8rem)] pr-4",children:o.jsxs("div",{className:"space-y-4",children:[o.jsx("div",{className:"flex justify-center",children:o.jsx("div",{className:"w-32 h-32 bg-muted rounded-lg flex items-center justify-center overflow-hidden",children:o.jsx("img",{src:QU(t.id),alt:t.description||"表情包",className:"w-full h-full object-cover",onError:s=>{const i=s.target;i.style.display="none";const a=i.parentElement;a&&(a.innerHTML='')}})})}),o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx(de,{className:"text-muted-foreground",children:"ID"}),o.jsx("div",{className:"mt-1 font-mono",children:t.id})]}),o.jsxs("div",{children:[o.jsx(de,{className:"text-muted-foreground",children:"格式"}),o.jsx("div",{className:"mt-1",children:o.jsx(Xn,{variant:"outline",children:t.format.toUpperCase()})})]})]}),o.jsxs("div",{children:[o.jsx(de,{className:"text-muted-foreground",children:"文件路径"}),o.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:t.full_path})]}),o.jsxs("div",{children:[o.jsx(de,{className:"text-muted-foreground",children:"哈希值"}),o.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:t.emoji_hash})]}),o.jsxs("div",{children:[o.jsx(de,{className:"text-muted-foreground",children:"描述"}),t.description?o.jsx("div",{className:"mt-1 rounded-lg border bg-muted/50 p-3",children:o.jsx(qke,{className:"prose-sm",children:t.description})}):o.jsx("div",{className:"mt-1 text-sm text-muted-foreground",children:"-"})]}),o.jsxs("div",{children:[o.jsx(de,{className:"text-muted-foreground",children:"情绪"}),o.jsx("div",{className:"mt-1",children:t.emotion?o.jsx("span",{className:"text-sm",children:t.emotion}):o.jsx("span",{className:"text-sm text-muted-foreground",children:"-"})})]}),o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx(de,{className:"text-muted-foreground",children:"状态"}),o.jsxs("div",{className:"mt-2 flex gap-2",children:[t.is_registered&&o.jsx(Xn,{variant:"default",className:"bg-green-600",children:"已注册"}),t.is_banned&&o.jsx(Xn,{variant:"destructive",children:"已封禁"}),!t.is_registered&&!t.is_banned&&o.jsx(Xn,{variant:"outline",children:"未注册"})]})]}),o.jsxs("div",{children:[o.jsx(de,{className:"text-muted-foreground",children:"使用次数"}),o.jsx("div",{className:"mt-1 font-mono text-lg",children:t.usage_count})]})]}),o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx(de,{className:"text-muted-foreground",children:"记录时间"}),o.jsx("div",{className:"mt-1 text-sm",children:r(t.record_time)})]}),o.jsxs("div",{children:[o.jsx(de,{className:"text-muted-foreground",children:"注册时间"}),o.jsx("div",{className:"mt-1 text-sm",children:r(t.register_time)})]})]}),o.jsxs("div",{children:[o.jsx(de,{className:"text-muted-foreground",children:"最后使用"}),o.jsx("div",{className:"mt-1 text-sm",children:r(t.last_used_time)})]})]})})]})})}function Zke({emoji:t,open:e,onOpenChange:n,onSuccess:r}){const[s,i]=b.useState(""),[a,l]=b.useState(!1),[c,d]=b.useState(!1),[h,m]=b.useState(!1),{toast:g}=fs();b.useEffect(()=>{t&&(i(t.emotion||""),l(t.is_registered),d(t.is_banned))},[t]);const x=async()=>{if(t)try{m(!0);const y=s.split(/[,,]/).map(w=>w.trim()).filter(Boolean).join(",");await Qke(t.id,{emotion:y||void 0,is_registered:a,is_banned:c}),g({title:"成功",description:"表情包信息已更新"}),n(!1),r()}catch(y){const w=y instanceof Error?y.message:"保存失败";g({title:"错误",description:w,variant:"destructive"})}finally{m(!1)}};return t?o.jsx(Dr,{open:e,onOpenChange:n,children:o.jsxs(Sr,{className:"max-w-2xl",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"编辑表情包"}),o.jsx(ss,{children:"修改表情包的情绪和状态信息"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{children:[o.jsx(de,{children:"情绪"}),o.jsx(Ar,{value:s,onChange:y=>i(y.target.value),placeholder:"输入情绪描述...",rows:2,className:"mt-1"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"输入情绪相关的文本描述"})]}),o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Oi,{id:"is_registered",checked:a,onCheckedChange:y=>{y===!0?(l(!0),d(!1)):l(!1)}}),o.jsx(de,{htmlFor:"is_registered",className:"cursor-pointer",children:"已注册"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Oi,{id:"is_banned",checked:c,onCheckedChange:y=>{y===!0?(d(!0),l(!1)):d(!1)}}),o.jsx(de,{htmlFor:"is_banned",className:"cursor-pointer",children:"已封禁"})]})]})]}),o.jsxs(bs,{children:[o.jsx(he,{variant:"outline",onClick:()=>n(!1),children:"取消"}),o.jsx(he,{onClick:x,disabled:h,children:h?"保存中...":"保存"})]})]})}):null}const hu="/api/webui/expression";async function Jke(){const t=await St(`${hu}/chats`,{headers:Dt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取聊天列表失败")}return t.json()}async function eOe(t){const e=new URLSearchParams;t.page&&e.append("page",t.page.toString()),t.page_size&&e.append("page_size",t.page_size.toString()),t.search&&e.append("search",t.search),t.chat_id&&e.append("chat_id",t.chat_id);const n=await St(`${hu}/list?${e}`,{headers:Dt()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取表达方式列表失败")}return n.json()}async function tOe(t){const e=await St(`${hu}/${t}`,{headers:Dt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"获取表达方式详情失败")}return e.json()}async function nOe(t){const e=await St(`${hu}/`,{method:"POST",headers:Dt(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"创建表达方式失败")}return e.json()}async function rOe(t,e){const n=await St(`${hu}/${t}`,{method:"PATCH",headers:Dt(),body:JSON.stringify(e)});if(!n.ok){const r=await n.json();throw new Error(r.detail||"更新表达方式失败")}return n.json()}async function sOe(t){const e=await St(`${hu}/${t}`,{method:"DELETE",headers:Dt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"删除表达方式失败")}return e.json()}async function iOe(t){const e=await St(`${hu}/batch/delete`,{method:"POST",headers:Dt(),body:JSON.stringify({ids:t})});if(!e.ok){const n=await e.json();throw new Error(n.detail||"批量删除表达方式失败")}return e.json()}async function aOe(){const t=await St(`${hu}/stats/summary`,{headers:Dt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取统计数据失败")}return t.json()}function oOe(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[s,i]=b.useState(0),[a,l]=b.useState(1),[c,d]=b.useState(20),[h,m]=b.useState(""),[g,x]=b.useState(null),[y,w]=b.useState(!1),[S,k]=b.useState(!1),[j,N]=b.useState(!1),[T,E]=b.useState(null),[_,M]=b.useState(new Set),[I,P]=b.useState(!1),[L,H]=b.useState(""),[U,ee]=b.useState({total:0,recent_7days:0,chat_count:0,top_chats:{}}),[z,Q]=b.useState([]),[B,X]=b.useState(new Map),{toast:J}=fs(),G=async()=>{try{r(!0);const oe=await eOe({page:a,page_size:c,search:h||void 0});e(oe.data),i(oe.total)}catch(oe){J({title:"加载失败",description:oe instanceof Error?oe.message:"无法加载表达方式",variant:"destructive"})}finally{r(!1)}},R=async()=>{try{const oe=await aOe();oe?.data&&ee(oe.data)}catch(oe){console.error("加载统计数据失败:",oe)}},ie=async()=>{try{const oe=await Jke();if(oe?.data){Q(oe.data);const Te=new Map;oe.data.forEach(We=>{Te.set(We.chat_id,We.chat_name)}),X(Te)}}catch(oe){console.error("加载聊天列表失败:",oe)}},W=oe=>B.get(oe)||oe;b.useEffect(()=>{G(),R(),ie()},[a,c,h]);const q=async oe=>{try{const Te=await tOe(oe.id);x(Te.data),w(!0)}catch(Te){J({title:"加载详情失败",description:Te instanceof Error?Te.message:"无法加载表达方式详情",variant:"destructive"})}},V=oe=>{x(oe),k(!0)},te=async oe=>{try{await sOe(oe.id),J({title:"删除成功",description:`已删除表达方式: ${oe.situation}`}),E(null),G(),R()}catch(Te){J({title:"删除失败",description:Te instanceof Error?Te.message:"无法删除表达方式",variant:"destructive"})}},ne=oe=>{const Te=new Set(_);Te.has(oe)?Te.delete(oe):Te.add(oe),M(Te)},K=()=>{_.size===t.length&&t.length>0?M(new Set):M(new Set(t.map(oe=>oe.id)))},se=async()=>{try{await iOe(Array.from(_)),J({title:"批量删除成功",description:`已删除 ${_.size} 个表达方式`}),M(new Set),P(!1),G(),R()}catch(oe){J({title:"批量删除失败",description:oe instanceof Error?oe.message:"无法批量删除表达方式",variant:"destructive"})}},re=()=>{const oe=parseInt(L),Te=Math.ceil(s/c);oe>=1&&oe<=Te?(l(oe),H("")):J({title:"无效的页码",description:`请输入1-${Te}之间的页码`,variant:"destructive"})};return o.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[o.jsx("div",{className:"mb-4 sm:mb-6",children:o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[o.jsx(Cp,{className:"h-8 w-8",strokeWidth:2}),"表达方式管理"]}),o.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦的表达方式和话术模板"})]}),o.jsxs(he,{onClick:()=>N(!0),className:"gap-2",children:[o.jsx(zs,{className:"h-4 w-4"}),"新增表达方式"]})]})}),o.jsx(wn,{className:"flex-1",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"总数量"}),o.jsx("div",{className:"text-2xl font-bold mt-1",children:U.total})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"近7天新增"}),o.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:U.recent_7days})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"关联聊天数"}),o.jsx("div",{className:"text-2xl font-bold mt-1 text-blue-600",children:U.chat_count})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx(de,{htmlFor:"search",children:"搜索"}),o.jsx("div",{className:"flex flex-col sm:flex-row gap-2 mt-1.5",children:o.jsxs("div",{className:"flex-1 relative",children:[o.jsx(Ni,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),o.jsx(ze,{id:"search",placeholder:"搜索情境、风格或上下文...",value:h,onChange:oe=>m(oe.target.value),className:"pl-9"})]})}),o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[o.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:_.size>0&&o.jsxs("span",{children:["已选择 ",_.size," 个表达方式"]})}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(de,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:c.toString(),onValueChange:oe=>{d(parseInt(oe)),l(1),M(new Set)},children:[o.jsx($t,{id:"page-size",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"10",children:"10"}),o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"50",children:"50"}),o.jsx(De,{value:"100",children:"100"})]})]}),_.size>0&&o.jsxs(o.Fragment,{children:[o.jsx(he,{variant:"outline",size:"sm",onClick:()=>M(new Set),children:"取消选择"}),o.jsxs(he,{variant:"destructive",size:"sm",onClick:()=>P(!0),children:[o.jsx(Sn,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card",children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(Tf,{children:[o.jsx(Ef,{children:o.jsxs(Ps,{children:[o.jsx(pn,{className:"w-12",children:o.jsx(Oi,{checked:_.size===t.length&&t.length>0,onCheckedChange:K})}),o.jsx(pn,{children:"情境"}),o.jsx(pn,{children:"风格"}),o.jsx(pn,{children:"聊天"}),o.jsx(pn,{className:"text-right",children:"操作"})]})}),o.jsx(_f,{children:n?o.jsx(Ps,{children:o.jsx(Gt,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):t.length===0?o.jsx(Ps,{children:o.jsx(Gt,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):t.map(oe=>o.jsxs(Ps,{children:[o.jsx(Gt,{children:o.jsx(Oi,{checked:_.has(oe.id),onCheckedChange:()=>ne(oe.id)})}),o.jsx(Gt,{className:"font-medium max-w-xs truncate",children:oe.situation}),o.jsx(Gt,{className:"max-w-xs truncate",children:oe.style}),o.jsx(Gt,{className:"max-w-[200px] truncate",title:W(oe.chat_id),style:{wordBreak:"keep-all"},children:o.jsx("span",{className:"whitespace-nowrap overflow-hidden text-ellipsis block",children:W(oe.chat_id)})}),o.jsx(Gt,{className:"text-right",children:o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsxs(he,{variant:"default",size:"sm",onClick:()=>V(oe),children:[o.jsx(R0,{className:"h-4 w-4 mr-1"}),"编辑"]}),o.jsx(he,{variant:"outline",size:"icon",className:"h-8 w-8",onClick:()=>q(oe),title:"查看详情",children:o.jsx(Ea,{className:"h-4 w-4"})}),o.jsxs(he,{size:"sm",onClick:()=>E(oe),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Sn,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},oe.id))})]})}),o.jsx("div",{className:"md:hidden space-y-3 p-4",children:n?o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):t.length===0?o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):t.map(oe=>o.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Oi,{checked:_.has(oe.id),onCheckedChange:()=>ne(oe.id),className:"mt-1"}),o.jsxs("div",{className:"min-w-0 flex-1 overflow-hidden space-y-2",children:[o.jsxs("div",{children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"情境"}),o.jsx("h3",{className:"font-semibold text-sm line-clamp-2 w-full break-all",title:oe.situation,children:oe.situation})]}),o.jsxs("div",{children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"风格"}),o.jsx("p",{className:"text-sm line-clamp-2 w-full break-all",title:oe.style,children:oe.style})]})]})]}),o.jsxs("div",{className:"text-sm",children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"聊天"}),o.jsx("p",{className:"text-sm truncate",title:W(oe.chat_id),style:{wordBreak:"keep-all"},children:W(oe.chat_id)})]}),o.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>V(oe),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[o.jsx(R0,{className:"h-3 w-3 mr-1"}),"编辑"]}),o.jsx(he,{variant:"outline",size:"sm",onClick:()=>q(oe),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:o.jsx(Ea,{className:"h-3 w-3"})}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>E(oe),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[o.jsx(Sn,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},oe.id))}),s>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[o.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",s," 条记录,第 ",a," / ",Math.ceil(s/c)," 页"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{variant:"outline",size:"sm",onClick:()=>l(1),disabled:a===1,className:"hidden sm:flex",children:o.jsx(Ep,{className:"h-4 w-4"})}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>l(a-1),disabled:a===1,children:[o.jsx(vd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{type:"number",value:L,onChange:oe=>H(oe.target.value),onKeyDown:oe=>oe.key==="Enter"&&re(),placeholder:a.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(s/c)}),o.jsx(he,{variant:"outline",size:"sm",onClick:re,disabled:!L,className:"h-8",children:"跳转"})]}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>l(a+1),disabled:a>=Math.ceil(s/c),children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(yd,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(he,{variant:"outline",size:"sm",onClick:()=>l(Math.ceil(s/c)),disabled:a>=Math.ceil(s/c),className:"hidden sm:flex",children:o.jsx(_p,{className:"h-4 w-4"})})]})]})]})]})}),o.jsx(lOe,{expression:g,open:y,onOpenChange:w,chatNameMap:B}),o.jsx(cOe,{open:j,onOpenChange:N,chatList:z,onSuccess:()=>{G(),R(),N(!1)}}),o.jsx(uOe,{expression:g,open:S,onOpenChange:k,chatList:z,onSuccess:()=>{G(),R(),k(!1)}}),o.jsx(Dn,{open:!!T,onOpenChange:()=>E(null),children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除表达方式 "',T?.situation,'" 吗? 此操作不可撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>T&&te(T),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),o.jsx(dOe,{open:I,onOpenChange:P,onConfirm:se,count:_.size})]})}function lOe({expression:t,open:e,onOpenChange:n,chatNameMap:r}){if(!t)return null;const s=a=>a?new Date(a*1e3).toLocaleString("zh-CN"):"-",i=a=>r.get(a)||a;return o.jsx(Dr,{open:e,onOpenChange:n,children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"表达方式详情"}),o.jsx(ss,{children:"查看表达方式的完整信息"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsx(Zm,{label:"情境",value:t.situation}),o.jsx(Zm,{label:"风格",value:t.style}),o.jsx(Zm,{label:"聊天",value:i(t.chat_id)}),o.jsx(Zm,{icon:J3,label:"记录ID",value:t.id.toString(),mono:!0})]}),o.jsx("div",{className:"grid grid-cols-2 gap-4",children:o.jsx(Zm,{icon:_h,label:"创建时间",value:s(t.create_date)})})]}),o.jsx(bs,{children:o.jsx(he,{onClick:()=>n(!1),children:"关闭"})})]})})}function Zm({icon:t,label:e,value:n,mono:r=!1}){return o.jsxs("div",{className:"space-y-1",children:[o.jsxs(de,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[t&&o.jsx(t,{className:"h-3 w-3"}),e]}),o.jsx("div",{className:ve("text-sm",r&&"font-mono",!n&&"text-muted-foreground"),children:n||"-"})]})}function cOe({open:t,onOpenChange:e,chatList:n,onSuccess:r}){const[s,i]=b.useState({situation:"",style:"",chat_id:""}),[a,l]=b.useState(!1),{toast:c}=fs(),d=async()=>{if(!s.situation||!s.style||!s.chat_id){c({title:"验证失败",description:"请填写必填字段:情境、风格和聊天",variant:"destructive"});return}try{l(!0),await nOe(s),c({title:"创建成功",description:"表达方式已创建"}),i({situation:"",style:"",chat_id:""}),r()}catch(h){c({title:"创建失败",description:h instanceof Error?h.message:"无法创建表达方式",variant:"destructive"})}finally{l(!1)}};return o.jsx(Dr,{open:t,onOpenChange:e,children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"新增表达方式"}),o.jsx(ss,{children:"创建新的表达方式记录"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsxs(de,{htmlFor:"situation",children:["情境 ",o.jsx("span",{className:"text-destructive",children:"*"})]}),o.jsx(ze,{id:"situation",value:s.situation,onChange:h=>i({...s,situation:h.target.value}),placeholder:"描述使用场景"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs(de,{htmlFor:"style",children:["风格 ",o.jsx("span",{className:"text-destructive",children:"*"})]}),o.jsx(ze,{id:"style",value:s.style,onChange:h=>i({...s,style:h.target.value}),placeholder:"描述表达风格"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs(de,{htmlFor:"chat_id",children:["聊天 ",o.jsx("span",{className:"text-destructive",children:"*"})]}),o.jsxs(Vt,{value:s.chat_id,onValueChange:h=>i({...s,chat_id:h}),children:[o.jsx($t,{children:o.jsx(Ut,{placeholder:"选择关联的聊天"})}),o.jsx(Ht,{children:n.map(h=>o.jsx(De,{value:h.chat_id,children:o.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[h.chat_name,h.is_group&&o.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},h.chat_id))})]})]})]}),o.jsxs(bs,{children:[o.jsx(he,{variant:"outline",onClick:()=>e(!1),children:"取消"}),o.jsx(he,{onClick:d,disabled:a,children:a?"创建中...":"创建"})]})]})})}function uOe({expression:t,open:e,onOpenChange:n,chatList:r,onSuccess:s}){const[i,a]=b.useState({}),[l,c]=b.useState(!1),{toast:d}=fs();b.useEffect(()=>{t&&a({situation:t.situation,style:t.style,chat_id:t.chat_id})},[t]);const h=async()=>{if(t)try{c(!0),await rOe(t.id,i),d({title:"保存成功",description:"表达方式已更新"}),s()}catch(m){d({title:"保存失败",description:m instanceof Error?m.message:"无法更新表达方式",variant:"destructive"})}finally{c(!1)}};return t?o.jsx(Dr,{open:e,onOpenChange:n,children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"编辑表达方式"}),o.jsx(ss,{children:"修改表达方式的信息"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"edit_situation",children:"情境"}),o.jsx(ze,{id:"edit_situation",value:i.situation||"",onChange:m=>a({...i,situation:m.target.value}),placeholder:"描述使用场景"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"edit_style",children:"风格"}),o.jsx(ze,{id:"edit_style",value:i.style||"",onChange:m=>a({...i,style:m.target.value}),placeholder:"描述表达风格"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"edit_chat_id",children:"聊天"}),o.jsxs(Vt,{value:i.chat_id||"",onValueChange:m=>a({...i,chat_id:m}),children:[o.jsx($t,{children:o.jsx(Ut,{placeholder:"选择关联的聊天"})}),o.jsx(Ht,{children:r.map(m=>o.jsx(De,{value:m.chat_id,children:o.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[m.chat_name,m.is_group&&o.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},m.chat_id))})]})]})]}),o.jsxs(bs,{children:[o.jsx(he,{variant:"outline",onClick:()=>n(!1),children:"取消"}),o.jsx(he,{onClick:h,disabled:l,children:l?"保存中...":"保存"})]})]})}):null}function dOe({open:t,onOpenChange:e,onConfirm:n,count:r}){return o.jsx(Dn,{open:t,onOpenChange:e,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认批量删除"}),o.jsxs(_n,{children:["您即将删除 ",r," 个表达方式,此操作无法撤销。确定要继续吗?"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:n,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认删除"})]})]})})}const qf="/api/webui/person";async function hOe(t){const e=new URLSearchParams;t.page&&e.append("page",t.page.toString()),t.page_size&&e.append("page_size",t.page_size.toString()),t.search&&e.append("search",t.search),t.is_known!==void 0&&e.append("is_known",t.is_known.toString()),t.platform&&e.append("platform",t.platform);const n=await St(`${qf}/list?${e}`,{headers:Dt()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取人物列表失败")}return n.json()}async function fOe(t){const e=await St(`${qf}/${t}`,{headers:Dt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"获取人物详情失败")}return e.json()}async function mOe(t,e){const n=await St(`${qf}/${t}`,{method:"PATCH",headers:Dt(),body:JSON.stringify(e)});if(!n.ok){const r=await n.json();throw new Error(r.detail||"更新人物信息失败")}return n.json()}async function pOe(t){const e=await St(`${qf}/${t}`,{method:"DELETE",headers:Dt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"删除人物信息失败")}return e.json()}async function gOe(){const t=await St(`${qf}/stats/summary`,{headers:Dt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取统计数据失败")}return t.json()}async function xOe(t){const e=await St(`${qf}/batch/delete`,{method:"POST",headers:Dt(),body:JSON.stringify({person_ids:t})});if(!e.ok){const n=await e.json();throw new Error(n.detail||"批量删除失败")}return e.json()}function vOe(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[s,i]=b.useState(0),[a,l]=b.useState(1),[c,d]=b.useState(20),[h,m]=b.useState(""),[g,x]=b.useState(void 0),[y,w]=b.useState(void 0),[S,k]=b.useState(null),[j,N]=b.useState(!1),[T,E]=b.useState(!1),[_,M]=b.useState(null),[I,P]=b.useState({total:0,known:0,unknown:0,platforms:{}}),[L,H]=b.useState(new Set),[U,ee]=b.useState(!1),[z,Q]=b.useState(""),{toast:B}=fs(),X=async()=>{try{r(!0);const re=await hOe({page:a,page_size:c,search:h||void 0,is_known:g,platform:y});e(re.data),i(re.total)}catch(re){B({title:"加载失败",description:re instanceof Error?re.message:"无法加载人物信息",variant:"destructive"})}finally{r(!1)}},J=async()=>{try{const re=await gOe();re?.data&&P(re.data)}catch(re){console.error("加载统计数据失败:",re)}};b.useEffect(()=>{X(),J()},[a,c,h,g,y]);const G=async re=>{try{const oe=await fOe(re.person_id);k(oe.data),N(!0)}catch(oe){B({title:"加载详情失败",description:oe instanceof Error?oe.message:"无法加载人物详情",variant:"destructive"})}},R=re=>{k(re),E(!0)},ie=async re=>{try{await pOe(re.person_id),B({title:"删除成功",description:`已删除人物信息: ${re.person_name||re.nickname||re.user_id}`}),M(null),X(),J()}catch(oe){B({title:"删除失败",description:oe instanceof Error?oe.message:"无法删除人物信息",variant:"destructive"})}},W=b.useMemo(()=>Object.keys(I.platforms),[I.platforms]),q=re=>{const oe=new Set(L);oe.has(re)?oe.delete(re):oe.add(re),H(oe)},V=()=>{L.size===t.length&&t.length>0?H(new Set):H(new Set(t.map(re=>re.person_id)))},te=()=>{if(L.size===0){B({title:"未选择任何人物",description:"请先选择要删除的人物",variant:"destructive"});return}ee(!0)},ne=async()=>{try{const re=await xOe(Array.from(L));B({title:"批量删除完成",description:re.message}),H(new Set),ee(!1),X(),J()}catch(re){B({title:"批量删除失败",description:re instanceof Error?re.message:"批量删除失败",variant:"destructive"})}},K=()=>{const re=parseInt(z),oe=Math.ceil(s/c);re>=1&&re<=oe?(l(re),Q("")):B({title:"无效的页码",description:`请输入1-${oe}之间的页码`,variant:"destructive"})},se=re=>re?new Date(re*1e3).toLocaleString("zh-CN"):"-";return o.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[o.jsx("div",{className:"mb-4 sm:mb-6",children:o.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:o.jsxs("div",{children:[o.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[o.jsx(Bee,{className:"h-8 w-8",strokeWidth:2}),"人物信息管理"]}),o.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦认识的所有人物信息"})]})})}),o.jsx(wn,{className:"flex-1",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"总人数"}),o.jsx("div",{className:"text-2xl font-bold mt-1",children:I.total})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"已认识"}),o.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:I.known})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"未认识"}),o.jsx("div",{className:"text-2xl font-bold mt-1 text-muted-foreground",children:I.unknown})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-4 gap-4",children:[o.jsxs("div",{className:"sm:col-span-2",children:[o.jsx(de,{htmlFor:"search",children:"搜索"}),o.jsxs("div",{className:"relative mt-1.5",children:[o.jsx(Ni,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),o.jsx(ze,{id:"search",placeholder:"搜索名称、昵称或用户ID...",value:h,onChange:re=>m(re.target.value),className:"pl-9"})]})]}),o.jsxs("div",{children:[o.jsx(de,{htmlFor:"filter-known",children:"认识状态"}),o.jsxs(Vt,{value:g===void 0?"all":g.toString(),onValueChange:re=>{x(re==="all"?void 0:re==="true"),l(1)},children:[o.jsx($t,{id:"filter-known",className:"mt-1.5",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部"}),o.jsx(De,{value:"true",children:"已认识"}),o.jsx(De,{value:"false",children:"未认识"})]})]})]}),o.jsxs("div",{children:[o.jsx(de,{htmlFor:"filter-platform",children:"平台"}),o.jsxs(Vt,{value:y||"all",onValueChange:re=>{w(re==="all"?void 0:re),l(1)},children:[o.jsx($t,{id:"filter-platform",className:"mt-1.5",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部平台"}),W.map(re=>o.jsxs(De,{value:re,children:[re," (",I.platforms[re],")"]},re))]})]})]})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[o.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:L.size>0&&o.jsxs("span",{children:["已选择 ",L.size," 个人物"]})}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(de,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:c.toString(),onValueChange:re=>{d(parseInt(re)),l(1),H(new Set)},children:[o.jsx($t,{id:"page-size",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"10",children:"10"}),o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"50",children:"50"}),o.jsx(De,{value:"100",children:"100"})]})]}),L.size>0&&o.jsxs(o.Fragment,{children:[o.jsx(he,{variant:"outline",size:"sm",onClick:()=>H(new Set),children:"取消选择"}),o.jsxs(he,{variant:"destructive",size:"sm",onClick:te,children:[o.jsx(Sn,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card",children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(Tf,{children:[o.jsx(Ef,{children:o.jsxs(Ps,{children:[o.jsx(pn,{className:"w-12",children:o.jsx(Oi,{checked:t.length>0&&L.size===t.length,onCheckedChange:V,"aria-label":"全选"})}),o.jsx(pn,{children:"状态"}),o.jsx(pn,{children:"名称"}),o.jsx(pn,{children:"昵称"}),o.jsx(pn,{children:"平台"}),o.jsx(pn,{children:"用户ID"}),o.jsx(pn,{children:"最后更新"}),o.jsx(pn,{className:"text-right",children:"操作"})]})}),o.jsx(_f,{children:n?o.jsx(Ps,{children:o.jsx(Gt,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):t.length===0?o.jsx(Ps,{children:o.jsx(Gt,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):t.map(re=>o.jsxs(Ps,{children:[o.jsx(Gt,{children:o.jsx(Oi,{checked:L.has(re.person_id),onCheckedChange:()=>q(re.person_id),"aria-label":`选择 ${re.person_name||re.nickname||re.user_id}`})}),o.jsx(Gt,{children:o.jsx("div",{className:ve("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium",re.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:re.is_known?"已认识":"未认识"})}),o.jsx(Gt,{className:"font-medium",children:re.person_name||o.jsx("span",{className:"text-muted-foreground",children:"-"})}),o.jsx(Gt,{children:re.nickname||"-"}),o.jsx(Gt,{children:re.platform}),o.jsx(Gt,{className:"font-mono text-sm",children:re.user_id}),o.jsx(Gt,{className:"text-sm text-muted-foreground",children:se(re.last_know)}),o.jsx(Gt,{className:"text-right",children:o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsxs(he,{variant:"default",size:"sm",onClick:()=>G(re),children:[o.jsx(Ea,{className:"h-4 w-4 mr-1"}),"详情"]}),o.jsxs(he,{variant:"default",size:"sm",onClick:()=>R(re),children:[o.jsx(R0,{className:"h-4 w-4 mr-1"}),"编辑"]}),o.jsxs(he,{size:"sm",onClick:()=>M(re),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Sn,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},re.id))})]})}),o.jsx("div",{className:"md:hidden space-y-3 p-4",children:n?o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):t.length===0?o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):t.map(re=>o.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Oi,{checked:L.has(re.person_id),onCheckedChange:()=>q(re.person_id),className:"mt-1"}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("div",{className:ve("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium mb-2",re.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:re.is_known?"已认识":"未认识"}),o.jsx("h3",{className:"font-semibold text-sm line-clamp-1 w-full break-all",children:re.person_name||o.jsx("span",{className:"text-muted-foreground",children:"未命名"})}),re.nickname&&o.jsxs("p",{className:"text-xs text-muted-foreground mt-1 line-clamp-1 w-full break-all",children:["昵称: ",re.nickname]})]})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[o.jsxs("div",{children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"平台"}),o.jsx("p",{className:"font-medium text-xs",children:re.platform})]}),o.jsxs("div",{children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"用户ID"}),o.jsx("p",{className:"font-mono text-xs truncate",title:re.user_id,children:re.user_id})]}),o.jsxs("div",{className:"col-span-2",children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"最后更新"}),o.jsx("p",{className:"text-xs",children:se(re.last_know)})]})]}),o.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>G(re),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[o.jsx(Ea,{className:"h-3 w-3 mr-1"}),"查看"]}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>R(re),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[o.jsx(R0,{className:"h-3 w-3 mr-1"}),"编辑"]}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>M(re),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[o.jsx(Sn,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},re.id))}),s>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[o.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",s," 条记录,第 ",a," / ",Math.ceil(s/c)," 页"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{variant:"outline",size:"sm",onClick:()=>l(1),disabled:a===1,className:"hidden sm:flex",children:o.jsx(Ep,{className:"h-4 w-4"})}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>l(a-1),disabled:a===1,children:[o.jsx(vd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{type:"number",value:z,onChange:re=>Q(re.target.value),onKeyDown:re=>re.key==="Enter"&&K(),placeholder:a.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(s/c)}),o.jsx(he,{variant:"outline",size:"sm",onClick:K,disabled:!z,className:"h-8",children:"跳转"})]}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>l(a+1),disabled:a>=Math.ceil(s/c),children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(yd,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(he,{variant:"outline",size:"sm",onClick:()=>l(Math.ceil(s/c)),disabled:a>=Math.ceil(s/c),className:"hidden sm:flex",children:o.jsx(_p,{className:"h-4 w-4"})})]})]})]})]})}),o.jsx(yOe,{person:S,open:j,onOpenChange:N}),o.jsx(bOe,{person:S,open:T,onOpenChange:E,onSuccess:()=>{X(),J(),E(!1)}}),o.jsx(Dn,{open:!!_,onOpenChange:()=>M(null),children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除人物信息 "',_?.person_name||_?.nickname||_?.user_id,'" 吗? 此操作不可撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>_&&ie(_),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),o.jsx(Dn,{open:U,onOpenChange:ee,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认批量删除"}),o.jsxs(_n,{children:["确定要删除选中的 ",L.size," 个人物信息吗? 此操作不可撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:ne,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})})]})}function yOe({person:t,open:e,onOpenChange:n}){if(!t)return null;const r=s=>s?new Date(s*1e3).toLocaleString("zh-CN"):"-";return o.jsx(Dr,{open:e,onOpenChange:n,children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"人物详情"}),o.jsxs(ss,{children:["查看 ",t.person_name||t.nickname||t.user_id," 的完整信息"]})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsx(yl,{icon:mI,label:"人物名称",value:t.person_name}),o.jsx(yl,{icon:Cp,label:"昵称",value:t.nickname}),o.jsx(yl,{icon:J3,label:"用户ID",value:t.user_id,mono:!0}),o.jsx(yl,{icon:J3,label:"人物ID",value:t.person_id,mono:!0}),o.jsx(yl,{label:"平台",value:t.platform}),o.jsx(yl,{label:"状态",value:t.is_known?"已认识":"未认识"})]}),t.name_reason&&o.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[o.jsx(de,{className:"text-xs text-muted-foreground",children:"名称设定原因"}),o.jsx("p",{className:"mt-1 text-sm",children:t.name_reason})]}),t.memory_points&&o.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[o.jsx(de,{className:"text-xs text-muted-foreground",children:"个人印象"}),o.jsx("p",{className:"mt-1 text-sm whitespace-pre-wrap",children:t.memory_points})]}),t.group_nick_name&&t.group_nick_name.length>0&&o.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[o.jsx(de,{className:"text-xs text-muted-foreground",children:"群昵称"}),o.jsx("div",{className:"mt-2 space-y-1",children:t.group_nick_name.map((s,i)=>o.jsxs("div",{className:"text-sm flex items-center gap-2",children:[o.jsx("span",{className:"font-mono text-xs text-muted-foreground",children:s.group_id}),o.jsx("span",{children:"→"}),o.jsx("span",{children:s.group_nick_name})]},i))})]}),o.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[o.jsx(yl,{icon:_h,label:"认识时间",value:r(t.know_times)}),o.jsx(yl,{icon:_h,label:"首次记录",value:r(t.know_since)}),o.jsx(yl,{icon:_h,label:"最后更新",value:r(t.last_know)})]})]}),o.jsx(bs,{children:o.jsx(he,{onClick:()=>n(!1),children:"关闭"})})]})})}function yl({icon:t,label:e,value:n,mono:r=!1}){return o.jsxs("div",{className:"space-y-1",children:[o.jsxs(de,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[t&&o.jsx(t,{className:"h-3 w-3"}),e]}),o.jsx("div",{className:ve("text-sm",r&&"font-mono",!n&&"text-muted-foreground"),children:n||"-"})]})}function bOe({person:t,open:e,onOpenChange:n,onSuccess:r}){const[s,i]=b.useState({}),[a,l]=b.useState(!1),{toast:c}=fs();b.useEffect(()=>{t&&i({person_name:t.person_name||"",name_reason:t.name_reason||"",nickname:t.nickname||"",memory_points:t.memory_points||"",is_known:t.is_known})},[t]);const d=async()=>{if(t)try{l(!0),await mOe(t.person_id,s),c({title:"保存成功",description:"人物信息已更新"}),r()}catch(h){c({title:"保存失败",description:h instanceof Error?h.message:"无法更新人物信息",variant:"destructive"})}finally{l(!1)}};return t?o.jsx(Dr,{open:e,onOpenChange:n,children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"编辑人物信息"}),o.jsxs(ss,{children:["修改 ",t.person_name||t.nickname||t.user_id," 的信息"]})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"person_name",children:"人物名称"}),o.jsx(ze,{id:"person_name",value:s.person_name||"",onChange:h=>i({...s,person_name:h.target.value}),placeholder:"为这个人设置一个名称"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"nickname",children:"昵称"}),o.jsx(ze,{id:"nickname",value:s.nickname||"",onChange:h=>i({...s,nickname:h.target.value}),placeholder:"昵称"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"name_reason",children:"名称设定原因"}),o.jsx(Ar,{id:"name_reason",value:s.name_reason||"",onChange:h=>i({...s,name_reason:h.target.value}),placeholder:"为什么这样称呼这个人?",rows:2})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"memory_points",children:"个人印象"}),o.jsx(Ar,{id:"memory_points",value:s.memory_points||"",onChange:h=>i({...s,memory_points:h.target.value}),placeholder:"对这个人的印象和记忆点...",rows:4})]}),o.jsxs("div",{className:"flex items-center justify-between rounded-lg border p-3",children:[o.jsxs("div",{children:[o.jsx(de,{htmlFor:"is_known",className:"text-base font-medium",children:"已认识"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"标记是否已经认识这个人"})]}),o.jsx(Bt,{id:"is_known",checked:s.is_known,onCheckedChange:h=>i({...s,is_known:h})})]})]}),o.jsxs(bs,{children:[o.jsx(he,{variant:"outline",onClick:()=>n(!1),children:"取消"}),o.jsx(he,{onClick:d,disabled:a,children:a?"保存中...":"保存"})]})]})}):null}function Is(t){if(typeof t=="string"||typeof t=="number")return""+t;let e="";if(Array.isArray(t))for(let n=0,r;n{let e;const n=new Set,r=(h,m)=>{const g=typeof h=="function"?h(e):h;if(!Object.is(g,e)){const x=e;e=m??(typeof g!="object"||g===null)?g:Object.assign({},e,g),n.forEach(y=>y(e,x))}},s=()=>e,c={setState:r,getState:s,getInitialState:()=>d,subscribe:h=>(n.add(h),()=>n.delete(h)),destroy:()=>{(wOe?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},d=e=t(r,s,c);return c},SOe=t=>t?WR(t):WR,{useDebugValue:kOe}=ae,{useSyncExternalStoreWithSelector:OOe}=eJ,jOe=t=>t;function VU(t,e=jOe,n){const r=OOe(t.subscribe,t.getState,t.getServerState||t.getInitialState,e,n);return kOe(r),r}const GR=(t,e)=>{const n=SOe(t),r=(s,i=e)=>VU(n,s,i);return Object.assign(r,n),r},NOe=(t,e)=>t?GR(t,e):GR;function Ss(t,e){if(Object.is(t,e))return!0;if(typeof t!="object"||t===null||typeof e!="object"||e===null)return!1;if(t instanceof Map&&e instanceof Map){if(t.size!==e.size)return!1;for(const[r,s]of t)if(!Object.is(s,e.get(r)))return!1;return!0}if(t instanceof Set&&e instanceof Set){if(t.size!==e.size)return!1;for(const r of t)if(!e.has(r))return!1;return!0}const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!1;for(const r of n)if(!Object.prototype.hasOwnProperty.call(e,r)||!Object.is(t[r],e[r]))return!1;return!0}var COe={value:()=>{}};function $b(){for(var t=0,e=arguments.length,n={},r;t=0&&(r=n.slice(s+1),n=n.slice(0,s)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}kv.prototype=$b.prototype={constructor:kv,on:function(t,e){var n=this._,r=TOe(t+"",n),s,i=-1,a=r.length;if(arguments.length<2){for(;++i0)for(var n=new Array(s),r=0,s,i;r=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),YR.hasOwnProperty(e)?{space:YR[e],local:t}:t}function _Oe(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===HO&&e.documentElement.namespaceURI===HO?e.createElement(t):e.createElementNS(n,t)}}function MOe(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function UU(t){var e=Hb(t);return(e.local?MOe:_Oe)(e)}function AOe(){}function qN(t){return t==null?AOe:function(){return this.querySelector(t)}}function ROe(t){typeof t!="function"&&(t=qN(t));for(var e=this._groups,n=e.length,r=new Array(n),s=0;s=N&&(N=j+1);!(E=S[N])&&++N=0;)(a=r[s])&&(i&&a.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(a,i),i=a);return this}function sje(t){t||(t=ije);function e(m,g){return m&&g?t(m.__data__,g.__data__):!m-!g}for(var n=this._groups,r=n.length,s=new Array(r),i=0;ie?1:t>=e?0:NaN}function aje(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function oje(){return Array.from(this)}function lje(){for(var t=this._groups,e=0,n=t.length;e1?this.each((e==null?yje:typeof e=="function"?wje:bje)(t,e,n??"")):hf(this.node(),t)}function hf(t,e){return t.style.getPropertyValue(e)||KU(t).getComputedStyle(t,null).getPropertyValue(e)}function kje(t){return function(){delete this[t]}}function Oje(t,e){return function(){this[t]=e}}function jje(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}function Nje(t,e){return arguments.length>1?this.each((e==null?kje:typeof e=="function"?jje:Oje)(t,e)):this.node()[t]}function ZU(t){return t.trim().split(/^|\s+/)}function $N(t){return t.classList||new JU(t)}function JU(t){this._node=t,this._names=ZU(t.getAttribute("class")||"")}JU.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function eW(t,e){for(var n=$N(t),r=-1,s=e.length;++r=0&&(n=e.slice(r+1),e=e.slice(0,r)),{type:e,name:n}})}function e6e(t){return function(){var e=this.__on;if(e){for(var n=0,r=-1,s=e.length,i;n()=>t;function QO(t,{sourceEvent:e,subject:n,target:r,identifier:s,active:i,x:a,y:l,dx:c,dy:d,dispatch:h}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:s,enumerable:!0,configurable:!0},active:{value:i,enumerable:!0,configurable:!0},x:{value:a,enumerable:!0,configurable:!0},y:{value:l,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:d,enumerable:!0,configurable:!0},_:{value:h}})}QO.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};function u6e(t){return!t.ctrlKey&&!t.button}function d6e(){return this.parentNode}function h6e(t,e){return e??{x:t.x,y:t.y}}function f6e(){return navigator.maxTouchPoints||"ontouchstart"in this}function m6e(){var t=u6e,e=d6e,n=h6e,r=f6e,s={},i=$b("start","drag","end"),a=0,l,c,d,h,m=0;function g(T){T.on("mousedown.drag",x).filter(r).on("touchstart.drag",S).on("touchmove.drag",k,c6e).on("touchend.drag touchcancel.drag",j).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function x(T,E){if(!(h||!t.call(this,T,E))){var _=N(this,e.call(this,T,E),T,E,"mouse");_&&(ma(T.view).on("mousemove.drag",y,gp).on("mouseup.drag",w,gp),sW(T.view),t5(T),d=!1,l=T.clientX,c=T.clientY,_("start",T))}}function y(T){if(Hh(T),!d){var E=T.clientX-l,_=T.clientY-c;d=E*E+_*_>m}s.mouse("drag",T)}function w(T){ma(T.view).on("mousemove.drag mouseup.drag",null),iW(T.view,d),Hh(T),s.mouse("end",T)}function S(T,E){if(t.call(this,T,E)){var _=T.changedTouches,M=e.call(this,T,E),I=_.length,P,L;for(P=0;P=0&&t._call.call(void 0,e),t=t._next;--ff}function KR(){md=(Oy=xp.now())+Qb,ff=u0=0;try{g6e()}finally{ff=0,v6e(),md=0}}function x6e(){var t=xp.now(),e=t-Oy;e>aW&&(Qb-=e,Oy=t)}function v6e(){for(var t,e=ky,n,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:ky=n);d0=t,VO(r)}function VO(t){if(!ff){u0&&(u0=clearTimeout(u0));var e=t-md;e>24?(t<1/0&&(u0=setTimeout(KR,t-xp.now()-Qb)),Jm&&(Jm=clearInterval(Jm))):(Jm||(Oy=xp.now(),Jm=setInterval(x6e,aW)),ff=1,oW(KR))}}function ZR(t,e,n){var r=new jy;return e=e==null?0:+e,r.restart(s=>{r.stop(),t(s+e)},e,n),r}var y6e=$b("start","end","cancel","interrupt"),b6e=[],cW=0,JR=1,UO=2,Ov=3,eD=4,WO=5,jv=6;function Vb(t,e,n,r,s,i){var a=t.__transition;if(!a)t.__transition={};else if(n in a)return;w6e(t,n,{name:e,index:r,group:s,on:y6e,tween:b6e,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:cW})}function QN(t,e){var n=io(t,e);if(n.state>cW)throw new Error("too late; already scheduled");return n}function Wo(t,e){var n=io(t,e);if(n.state>Ov)throw new Error("too late; already running");return n}function io(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function w6e(t,e,n){var r=t.__transition,s;r[e]=n,n.timer=lW(i,0,n.time);function i(d){n.state=JR,n.timer.restart(a,n.delay,n.time),n.delay<=d&&a(d-n.delay)}function a(d){var h,m,g,x;if(n.state!==JR)return c();for(h in r)if(x=r[h],x.name===n.name){if(x.state===Ov)return ZR(a);x.state===eD?(x.state=jv,x.timer.stop(),x.on.call("interrupt",t,t.__data__,x.index,x.group),delete r[h]):+hUO&&r.state=0&&(e=e.slice(0,n)),!e||e==="start"})}function K6e(t,e,n){var r,s,i=Y6e(e)?QN:Wo;return function(){var a=i(this,t),l=a.on;l!==r&&(s=(r=l).copy()).on(e,n),a.on=s}}function Z6e(t,e){var n=this._id;return arguments.length<2?io(this.node(),n).on.on(t):this.each(K6e(n,t,e))}function J6e(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}function eNe(){return this.on("end.remove",J6e(this._id))}function tNe(t){var e=this._name,n=this._id;typeof t!="function"&&(t=qN(t));for(var r=this._groups,s=r.length,i=new Array(s),a=0;a()=>t;function NNe(t,{sourceEvent:e,target:n,transform:r,dispatch:s}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:s}})}function Al(t,e,n){this.k=t,this.x=e,this.y=n}Al.prototype={constructor:Al,scale:function(t){return t===1?this:new Al(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new Al(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Bl=new Al(1,0,0);Al.prototype;function n5(t){t.stopImmediatePropagation()}function e0(t){t.preventDefault(),t.stopImmediatePropagation()}function CNe(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function TNe(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]):[[0,0],[t.clientWidth,t.clientHeight]]}function tD(){return this.__zoom||Bl}function ENe(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function _Ne(){return navigator.maxTouchPoints||"ontouchstart"in this}function MNe(t,e,n){var r=t.invertX(e[0][0])-n[0][0],s=t.invertX(e[1][0])-n[1][0],i=t.invertY(e[0][1])-n[0][1],a=t.invertY(e[1][1])-n[1][1];return t.translate(s>r?(r+s)/2:Math.min(0,r)||Math.max(0,s),a>i?(i+a)/2:Math.min(0,i)||Math.max(0,a))}function fW(){var t=CNe,e=TNe,n=MNe,r=ENe,s=_Ne,i=[0,1/0],a=[[-1/0,-1/0],[1/0,1/0]],l=250,c=kJ,d=$b("start","zoom","end"),h,m,g,x=500,y=150,w=0,S=10;function k(z){z.property("__zoom",tD).on("wheel.zoom",I,{passive:!1}).on("mousedown.zoom",P).on("dblclick.zoom",L).filter(s).on("touchstart.zoom",H).on("touchmove.zoom",U).on("touchend.zoom touchcancel.zoom",ee).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}k.transform=function(z,Q,B,X){var J=z.selection?z.selection():z;J.property("__zoom",tD),z!==J?E(z,Q,B,X):J.interrupt().each(function(){_(this,arguments).event(X).start().zoom(null,typeof Q=="function"?Q.apply(this,arguments):Q).end()})},k.scaleBy=function(z,Q,B,X){k.scaleTo(z,function(){var J=this.__zoom.k,G=typeof Q=="function"?Q.apply(this,arguments):Q;return J*G},B,X)},k.scaleTo=function(z,Q,B,X){k.transform(z,function(){var J=e.apply(this,arguments),G=this.__zoom,R=B==null?T(J):typeof B=="function"?B.apply(this,arguments):B,ie=G.invert(R),W=typeof Q=="function"?Q.apply(this,arguments):Q;return n(N(j(G,W),R,ie),J,a)},B,X)},k.translateBy=function(z,Q,B,X){k.transform(z,function(){return n(this.__zoom.translate(typeof Q=="function"?Q.apply(this,arguments):Q,typeof B=="function"?B.apply(this,arguments):B),e.apply(this,arguments),a)},null,X)},k.translateTo=function(z,Q,B,X,J){k.transform(z,function(){var G=e.apply(this,arguments),R=this.__zoom,ie=X==null?T(G):typeof X=="function"?X.apply(this,arguments):X;return n(Bl.translate(ie[0],ie[1]).scale(R.k).translate(typeof Q=="function"?-Q.apply(this,arguments):-Q,typeof B=="function"?-B.apply(this,arguments):-B),G,a)},X,J)};function j(z,Q){return Q=Math.max(i[0],Math.min(i[1],Q)),Q===z.k?z:new Al(Q,z.x,z.y)}function N(z,Q,B){var X=Q[0]-B[0]*z.k,J=Q[1]-B[1]*z.k;return X===z.x&&J===z.y?z:new Al(z.k,X,J)}function T(z){return[(+z[0][0]+ +z[1][0])/2,(+z[0][1]+ +z[1][1])/2]}function E(z,Q,B,X){z.on("start.zoom",function(){_(this,arguments).event(X).start()}).on("interrupt.zoom end.zoom",function(){_(this,arguments).event(X).end()}).tween("zoom",function(){var J=this,G=arguments,R=_(J,G).event(X),ie=e.apply(J,G),W=B==null?T(ie):typeof B=="function"?B.apply(J,G):B,q=Math.max(ie[1][0]-ie[0][0],ie[1][1]-ie[0][1]),V=J.__zoom,te=typeof Q=="function"?Q.apply(J,G):Q,ne=c(V.invert(W).concat(q/V.k),te.invert(W).concat(q/te.k));return function(K){if(K===1)K=te;else{var se=ne(K),re=q/se[2];K=new Al(re,W[0]-se[0]*re,W[1]-se[1]*re)}R.zoom(null,K)}})}function _(z,Q,B){return!B&&z.__zooming||new M(z,Q)}function M(z,Q){this.that=z,this.args=Q,this.active=0,this.sourceEvent=null,this.extent=e.apply(z,Q),this.taps=0}M.prototype={event:function(z){return z&&(this.sourceEvent=z),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(z,Q){return this.mouse&&z!=="mouse"&&(this.mouse[1]=Q.invert(this.mouse[0])),this.touch0&&z!=="touch"&&(this.touch0[1]=Q.invert(this.touch0[0])),this.touch1&&z!=="touch"&&(this.touch1[1]=Q.invert(this.touch1[0])),this.that.__zoom=Q,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(z){var Q=ma(this.that).datum();d.call(z,this.that,new NNe(z,{sourceEvent:this.sourceEvent,target:k,transform:this.that.__zoom,dispatch:d}),Q)}};function I(z,...Q){if(!t.apply(this,arguments))return;var B=_(this,Q).event(z),X=this.__zoom,J=Math.max(i[0],Math.min(i[1],X.k*Math.pow(2,r.apply(this,arguments)))),G=Ha(z);if(B.wheel)(B.mouse[0][0]!==G[0]||B.mouse[0][1]!==G[1])&&(B.mouse[1]=X.invert(B.mouse[0]=G)),clearTimeout(B.wheel);else{if(X.k===J)return;B.mouse=[G,X.invert(G)],Nv(this),B.start()}e0(z),B.wheel=setTimeout(R,y),B.zoom("mouse",n(N(j(X,J),B.mouse[0],B.mouse[1]),B.extent,a));function R(){B.wheel=null,B.end()}}function P(z,...Q){if(g||!t.apply(this,arguments))return;var B=z.currentTarget,X=_(this,Q,!0).event(z),J=ma(z.view).on("mousemove.zoom",W,!0).on("mouseup.zoom",q,!0),G=Ha(z,B),R=z.clientX,ie=z.clientY;sW(z.view),n5(z),X.mouse=[G,this.__zoom.invert(G)],Nv(this),X.start();function W(V){if(e0(V),!X.moved){var te=V.clientX-R,ne=V.clientY-ie;X.moved=te*te+ne*ne>w}X.event(V).zoom("mouse",n(N(X.that.__zoom,X.mouse[0]=Ha(V,B),X.mouse[1]),X.extent,a))}function q(V){J.on("mousemove.zoom mouseup.zoom",null),iW(V.view,X.moved),e0(V),X.event(V).end()}}function L(z,...Q){if(t.apply(this,arguments)){var B=this.__zoom,X=Ha(z.changedTouches?z.changedTouches[0]:z,this),J=B.invert(X),G=B.k*(z.shiftKey?.5:2),R=n(N(j(B,G),X,J),e.apply(this,Q),a);e0(z),l>0?ma(this).transition().duration(l).call(E,R,X,z):ma(this).call(k.transform,R,X,z)}}function H(z,...Q){if(t.apply(this,arguments)){var B=z.touches,X=B.length,J=_(this,Q,z.changedTouches.length===X).event(z),G,R,ie,W;for(n5(z),R=0;R"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:t=>`Node type "${t}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:t=>`The old edge with id=${t} does not exist.`,error009:t=>`Marker type "${t}" doesn't exist.`,error008:(t,e)=>`Couldn't create edge for ${t?"target":"source"} handle id: "${t?e.targetHandle:e.sourceHandle}", edge id: ${e.id}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:t=>`Edge type "${t}" not found. Using fallback type "default".`,error012:t=>`Node with id "${t}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`},mW=Wl.error001();function hr(t,e){const n=b.useContext(Ub);if(n===null)throw new Error(mW);return VU(n,t,e)}const ms=()=>{const t=b.useContext(Ub);if(t===null)throw new Error(mW);return b.useMemo(()=>({getState:t.getState,setState:t.setState,subscribe:t.subscribe,destroy:t.destroy}),[t])},RNe=t=>t.userSelectionActive?"none":"all";function Wb({position:t,children:e,className:n,style:r,...s}){const i=hr(RNe),a=`${t}`.split("-");return ae.createElement("div",{className:Is(["react-flow__panel",n,...a]),style:{...r,pointerEvents:i},...s},e)}function DNe({proOptions:t,position:e="bottom-right"}){return t?.hideAttribution?null:ae.createElement(Wb,{position:e,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://reactflow.dev/pro"},ae.createElement("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution"},"React Flow"))}const PNe=({x:t,y:e,label:n,labelStyle:r={},labelShowBg:s=!0,labelBgStyle:i={},labelBgPadding:a=[2,4],labelBgBorderRadius:l=2,children:c,className:d,...h})=>{const m=b.useRef(null),[g,x]=b.useState({x:0,y:0,width:0,height:0}),y=Is(["react-flow__edge-textwrapper",d]);return b.useEffect(()=>{if(m.current){const w=m.current.getBBox();x({x:w.x,y:w.y,width:w.width,height:w.height})}},[n]),typeof n>"u"||!n?null:ae.createElement("g",{transform:`translate(${t-g.width/2} ${e-g.height/2})`,className:y,visibility:g.width?"visible":"hidden",...h},s&&ae.createElement("rect",{width:g.width+2*a[0],x:-a[0],y:-a[1],height:g.height+2*a[1],className:"react-flow__edge-textbg",style:i,rx:l,ry:l}),ae.createElement("text",{className:"react-flow__edge-text",y:g.height/2,dy:"0.3em",ref:m,style:r},n),c)};var zNe=b.memo(PNe);const UN=t=>({width:t.offsetWidth,height:t.offsetHeight}),mf=(t,e=0,n=1)=>Math.min(Math.max(t,e),n),WN=(t={x:0,y:0},e)=>({x:mf(t.x,e[0][0],e[1][0]),y:mf(t.y,e[0][1],e[1][1])}),nD=(t,e,n)=>tn?-mf(Math.abs(t-n),1,50)/50:0,pW=(t,e)=>{const n=nD(t.x,35,e.width-35)*20,r=nD(t.y,35,e.height-35)*20;return[n,r]},gW=t=>t.getRootNode?.()||window?.document,xW=(t,e)=>({x:Math.min(t.x,e.x),y:Math.min(t.y,e.y),x2:Math.max(t.x2,e.x2),y2:Math.max(t.y2,e.y2)}),vp=({x:t,y:e,width:n,height:r})=>({x:t,y:e,x2:t+n,y2:e+r}),vW=({x:t,y:e,x2:n,y2:r})=>({x:t,y:e,width:n-t,height:r-e}),rD=t=>({...t.positionAbsolute||{x:0,y:0},width:t.width||0,height:t.height||0}),INe=(t,e)=>vW(xW(vp(t),vp(e))),GO=(t,e)=>{const n=Math.max(0,Math.min(t.x+t.width,e.x+e.width)-Math.max(t.x,e.x)),r=Math.max(0,Math.min(t.y+t.height,e.y+e.height)-Math.max(t.y,e.y));return Math.ceil(n*r)},LNe=t=>ka(t.width)&&ka(t.height)&&ka(t.x)&&ka(t.y),ka=t=>!isNaN(t)&&isFinite(t),Lr=Symbol.for("internals"),yW=["Enter"," ","Escape"],BNe=(t,e)=>{},FNe=t=>"nativeEvent"in t;function XO(t){const n=(FNe(t)?t.nativeEvent:t).composedPath?.()?.[0]||t.target;return["INPUT","SELECT","TEXTAREA"].includes(n?.nodeName)||n?.hasAttribute("contenteditable")||!!n?.closest(".nokey")}const bW=t=>"clientX"in t,$c=(t,e)=>{const n=bW(t),r=n?t.clientX:t.touches?.[0].clientX,s=n?t.clientY:t.touches?.[0].clientY;return{x:r-(e?.left??0),y:s-(e?.top??0)}},Ny=()=>typeof navigator<"u"&&navigator?.userAgent?.indexOf("Mac")>=0,gg=({id:t,path:e,labelX:n,labelY:r,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d,style:h,markerEnd:m,markerStart:g,interactionWidth:x=20})=>ae.createElement(ae.Fragment,null,ae.createElement("path",{id:t,style:h,d:e,fill:"none",className:"react-flow__edge-path",markerEnd:m,markerStart:g}),x&&ae.createElement("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:x,className:"react-flow__edge-interaction"}),s&&ka(n)&&ka(r)?ae.createElement(zNe,{x:n,y:r,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d}):null);gg.displayName="BaseEdge";function t0(t,e,n){return n===void 0?n:r=>{const s=e().edges.find(i=>i.id===t);s&&n(r,{...s})}}function wW({sourceX:t,sourceY:e,targetX:n,targetY:r}){const s=Math.abs(n-t)/2,i=n{const[S,k,j]=kW({sourceX:t,sourceY:e,sourcePosition:s,targetX:n,targetY:r,targetPosition:i});return ae.createElement(gg,{path:S,labelX:k,labelY:j,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:m,style:g,markerEnd:x,markerStart:y,interactionWidth:w})});GN.displayName="SimpleBezierEdge";const iD={[wt.Left]:{x:-1,y:0},[wt.Right]:{x:1,y:0},[wt.Top]:{x:0,y:-1},[wt.Bottom]:{x:0,y:1}},qNe=({source:t,sourcePosition:e=wt.Bottom,target:n})=>e===wt.Left||e===wt.Right?t.xMath.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2));function $Ne({source:t,sourcePosition:e=wt.Bottom,target:n,targetPosition:r=wt.Top,center:s,offset:i}){const a=iD[e],l=iD[r],c={x:t.x+a.x*i,y:t.y+a.y*i},d={x:n.x+l.x*i,y:n.y+l.y*i},h=qNe({source:c,sourcePosition:e,target:d}),m=h.x!==0?"x":"y",g=h[m];let x=[],y,w;const S={x:0,y:0},k={x:0,y:0},[j,N,T,E]=wW({sourceX:t.x,sourceY:t.y,targetX:n.x,targetY:n.y});if(a[m]*l[m]===-1){y=s.x??j,w=s.y??N;const M=[{x:y,y:c.y},{x:y,y:d.y}],I=[{x:c.x,y:w},{x:d.x,y:w}];a[m]===g?x=m==="x"?M:I:x=m==="x"?I:M}else{const M=[{x:c.x,y:d.y}],I=[{x:d.x,y:c.y}];if(m==="x"?x=a.x===g?I:M:x=a.y===g?M:I,e===r){const ee=Math.abs(t[m]-n[m]);if(ee<=i){const z=Math.min(i-1,i-ee);a[m]===g?S[m]=(c[m]>t[m]?-1:1)*z:k[m]=(d[m]>n[m]?-1:1)*z}}if(e!==r){const ee=m==="x"?"y":"x",z=a[m]===l[ee],Q=c[ee]>d[ee],B=c[ee]=U?(y=(P.x+L.x)/2,w=x[0].y):(y=x[0].x,w=(P.y+L.y)/2)}return[[t,{x:c.x+S.x,y:c.y+S.y},...x,{x:d.x+k.x,y:d.y+k.y},n],y,w,T,E]}function HNe(t,e,n,r){const s=Math.min(aD(t,e)/2,aD(e,n)/2,r),{x:i,y:a}=e;if(t.x===i&&i===n.x||t.y===a&&a===n.y)return`L${i} ${a}`;if(t.y===a){const d=t.x{let N="";return j>0&&j{const[k,j,N]=YO({sourceX:t,sourceY:e,sourcePosition:m,targetX:n,targetY:r,targetPosition:g,borderRadius:w?.borderRadius,offset:w?.offset});return ae.createElement(gg,{path:k,labelX:j,labelY:N,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d,style:h,markerEnd:x,markerStart:y,interactionWidth:S})});Gb.displayName="SmoothStepEdge";const XN=b.memo(t=>ae.createElement(Gb,{...t,pathOptions:b.useMemo(()=>({borderRadius:0,offset:t.pathOptions?.offset}),[t.pathOptions?.offset])}));XN.displayName="StepEdge";function QNe({sourceX:t,sourceY:e,targetX:n,targetY:r}){const[s,i,a,l]=wW({sourceX:t,sourceY:e,targetX:n,targetY:r});return[`M ${t},${e}L ${n},${r}`,s,i,a,l]}const YN=b.memo(({sourceX:t,sourceY:e,targetX:n,targetY:r,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d,style:h,markerEnd:m,markerStart:g,interactionWidth:x})=>{const[y,w,S]=QNe({sourceX:t,sourceY:e,targetX:n,targetY:r});return ae.createElement(gg,{path:y,labelX:w,labelY:S,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d,style:h,markerEnd:m,markerStart:g,interactionWidth:x})});YN.displayName="StraightEdge";function F1(t,e){return t>=0?.5*t:e*25*Math.sqrt(-t)}function oD({pos:t,x1:e,y1:n,x2:r,y2:s,c:i}){switch(t){case wt.Left:return[e-F1(e-r,i),n];case wt.Right:return[e+F1(r-e,i),n];case wt.Top:return[e,n-F1(n-s,i)];case wt.Bottom:return[e,n+F1(s-n,i)]}}function OW({sourceX:t,sourceY:e,sourcePosition:n=wt.Bottom,targetX:r,targetY:s,targetPosition:i=wt.Top,curvature:a=.25}){const[l,c]=oD({pos:n,x1:t,y1:e,x2:r,y2:s,c:a}),[d,h]=oD({pos:i,x1:r,y1:s,x2:t,y2:e,c:a}),[m,g,x,y]=SW({sourceX:t,sourceY:e,targetX:r,targetY:s,sourceControlX:l,sourceControlY:c,targetControlX:d,targetControlY:h});return[`M${t},${e} C${l},${c} ${d},${h} ${r},${s}`,m,g,x,y]}const Ty=b.memo(({sourceX:t,sourceY:e,targetX:n,targetY:r,sourcePosition:s=wt.Bottom,targetPosition:i=wt.Top,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:m,style:g,markerEnd:x,markerStart:y,pathOptions:w,interactionWidth:S})=>{const[k,j,N]=OW({sourceX:t,sourceY:e,sourcePosition:s,targetX:n,targetY:r,targetPosition:i,curvature:w?.curvature});return ae.createElement(gg,{path:k,labelX:j,labelY:N,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:m,style:g,markerEnd:x,markerStart:y,interactionWidth:S})});Ty.displayName="BezierEdge";const KN=b.createContext(null),VNe=KN.Provider;KN.Consumer;const UNe=()=>b.useContext(KN),WNe=t=>"id"in t&&"source"in t&&"target"in t,GNe=({source:t,sourceHandle:e,target:n,targetHandle:r})=>`reactflow__edge-${t}${e||""}-${n}${r||""}`,KO=(t,e)=>typeof t>"u"?"":typeof t=="string"?t:`${e?`${e}__`:""}${Object.keys(t).sort().map(r=>`${r}=${t[r]}`).join("&")}`,XNe=(t,e)=>e.some(n=>n.source===t.source&&n.target===t.target&&(n.sourceHandle===t.sourceHandle||!n.sourceHandle&&!t.sourceHandle)&&(n.targetHandle===t.targetHandle||!n.targetHandle&&!t.targetHandle)),YNe=(t,e)=>{if(!t.source||!t.target)return e;let n;return WNe(t)?n={...t}:n={...t,id:GNe(t)},XNe(n,e)?e:e.concat(n)},ZO=({x:t,y:e},[n,r,s],i,[a,l])=>{const c={x:(t-n)/s,y:(e-r)/s};return i?{x:a*Math.round(c.x/a),y:l*Math.round(c.y/l)}:c},jW=({x:t,y:e},[n,r,s])=>({x:t*s+n,y:e*s+r}),td=(t,e=[0,0])=>{if(!t)return{x:0,y:0,positionAbsolute:{x:0,y:0}};const n=(t.width??0)*e[0],r=(t.height??0)*e[1],s={x:t.position.x-n,y:t.position.y-r};return{...s,positionAbsolute:t.positionAbsolute?{x:t.positionAbsolute.x-n,y:t.positionAbsolute.y-r}:s}},Xb=(t,e=[0,0])=>{if(t.length===0)return{x:0,y:0,width:0,height:0};const n=t.reduce((r,s)=>{const{x:i,y:a}=td(s,e).positionAbsolute;return xW(r,vp({x:i,y:a,width:s.width||0,height:s.height||0}))},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return vW(n)},NW=(t,e,[n,r,s]=[0,0,1],i=!1,a=!1,l=[0,0])=>{const c={x:(e.x-n)/s,y:(e.y-r)/s,width:e.width/s,height:e.height/s},d=[];return t.forEach(h=>{const{width:m,height:g,selectable:x=!0,hidden:y=!1}=h;if(a&&!x||y)return!1;const{positionAbsolute:w}=td(h,l),S={x:w.x,y:w.y,width:m||0,height:g||0},k=GO(c,S),j=typeof m>"u"||typeof g>"u"||m===null||g===null,N=i&&k>0,T=(m||0)*(g||0);(j||N||k>=T||h.dragging)&&d.push(h)}),d},CW=(t,e)=>{const n=t.map(r=>r.id);return e.filter(r=>n.includes(r.source)||n.includes(r.target))},TW=(t,e,n,r,s,i=.1)=>{const a=e/(t.width*(1+i)),l=n/(t.height*(1+i)),c=Math.min(a,l),d=mf(c,r,s),h=t.x+t.width/2,m=t.y+t.height/2,g=e/2-h*d,x=n/2-m*d;return{x:g,y:x,zoom:d}},Lu=(t,e=0)=>t.transition().duration(e);function lD(t,e,n,r){return(e[n]||[]).reduce((s,i)=>(`${t.id}-${i.id}-${n}`!==r&&s.push({id:i.id||null,type:n,nodeId:t.id,x:(t.positionAbsolute?.x??0)+i.x+i.width/2,y:(t.positionAbsolute?.y??0)+i.y+i.height/2}),s),[])}function KNe(t,e,n,r,s,i){const{x:a,y:l}=$c(t),d=e.elementsFromPoint(a,l).find(y=>y.classList.contains("react-flow__handle"));if(d){const y=d.getAttribute("data-nodeid");if(y){const w=ZN(void 0,d),S=d.getAttribute("data-handleid"),k=i({nodeId:y,id:S,type:w});if(k){const j=s.find(N=>N.nodeId===y&&N.type===w&&N.id===S);return{handle:{id:S,type:w,nodeId:y,x:j?.x||n.x,y:j?.y||n.y},validHandleResult:k}}}}let h=[],m=1/0;if(s.forEach(y=>{const w=Math.sqrt((y.x-n.x)**2+(y.y-n.y)**2);if(w<=r){const S=i(y);w<=m&&(wy.isValid),x=h.some(({handle:y})=>y.type==="target");return h.find(({handle:y,validHandleResult:w})=>x?y.type==="target":g?w.isValid:!0)||h[0]}const ZNe={source:null,target:null,sourceHandle:null,targetHandle:null},EW=()=>({handleDomNode:null,isValid:!1,connection:ZNe,endHandle:null});function _W(t,e,n,r,s,i,a){const l=s==="target",c=a.querySelector(`.react-flow__handle[data-id="${t?.nodeId}-${t?.id}-${t?.type}"]`),d={...EW(),handleDomNode:c};if(c){const h=ZN(void 0,c),m=c.getAttribute("data-nodeid"),g=c.getAttribute("data-handleid"),x=c.classList.contains("connectable"),y=c.classList.contains("connectableend"),w={source:l?m:n,sourceHandle:l?g:r,target:l?n:m,targetHandle:l?r:g};d.connection=w,x&&y&&(e===pd.Strict?l&&h==="source"||!l&&h==="target":m!==n||g!==r)&&(d.endHandle={nodeId:m,handleId:g,type:h},d.isValid=i(w))}return d}function JNe({nodes:t,nodeId:e,handleId:n,handleType:r}){return t.reduce((s,i)=>{if(i[Lr]){const{handleBounds:a}=i[Lr];let l=[],c=[];a&&(l=lD(i,a,"source",`${e}-${n}-${r}`),c=lD(i,a,"target",`${e}-${n}-${r}`)),s.push(...l,...c)}return s},[])}function ZN(t,e){return t||(e?.classList.contains("target")?"target":e?.classList.contains("source")?"source":null)}function r5(t){t?.classList.remove("valid","connecting","react-flow__handle-valid","react-flow__handle-connecting")}function e7e(t,e){let n=null;return e?n="valid":t&&!e&&(n="invalid"),n}function MW({event:t,handleId:e,nodeId:n,onConnect:r,isTarget:s,getState:i,setState:a,isValidConnection:l,edgeUpdaterType:c,onReconnectEnd:d}){const h=gW(t.target),{connectionMode:m,domNode:g,autoPanOnConnect:x,connectionRadius:y,onConnectStart:w,panBy:S,getNodes:k,cancelConnection:j}=i();let N=0,T;const{x:E,y:_}=$c(t),M=h?.elementFromPoint(E,_),I=ZN(c,M),P=g?.getBoundingClientRect();if(!P||!I)return;let L,H=$c(t,P),U=!1,ee=null,z=!1,Q=null;const B=JNe({nodes:k(),nodeId:n,handleId:e,handleType:I}),X=()=>{if(!x)return;const[R,ie]=pW(H,P);S({x:R,y:ie}),N=requestAnimationFrame(X)};a({connectionPosition:H,connectionStatus:null,connectionNodeId:n,connectionHandleId:e,connectionHandleType:I,connectionStartHandle:{nodeId:n,handleId:e,type:I},connectionEndHandle:null}),w?.(t,{nodeId:n,handleId:e,handleType:I});function J(R){const{transform:ie}=i();H=$c(R,P);const{handle:W,validHandleResult:q}=KNe(R,h,ZO(H,ie,!1,[1,1]),y,B,V=>_W(V,m,n,e,s?"target":"source",l,h));if(T=W,U||(X(),U=!0),Q=q.handleDomNode,ee=q.connection,z=q.isValid,a({connectionPosition:T&&z?jW({x:T.x,y:T.y},ie):H,connectionStatus:e7e(!!T,z),connectionEndHandle:q.endHandle}),!T&&!z&&!Q)return r5(L);ee.source!==ee.target&&Q&&(r5(L),L=Q,Q.classList.add("connecting","react-flow__handle-connecting"),Q.classList.toggle("valid",z),Q.classList.toggle("react-flow__handle-valid",z))}function G(R){(T||Q)&&ee&&z&&r?.(ee),i().onConnectEnd?.(R),c&&d?.(R),r5(L),j(),cancelAnimationFrame(N),U=!1,z=!1,ee=null,Q=null,h.removeEventListener("mousemove",J),h.removeEventListener("mouseup",G),h.removeEventListener("touchmove",J),h.removeEventListener("touchend",G)}h.addEventListener("mousemove",J),h.addEventListener("mouseup",G),h.addEventListener("touchmove",J),h.addEventListener("touchend",G)}const cD=()=>!0,t7e=t=>({connectionStartHandle:t.connectionStartHandle,connectOnClick:t.connectOnClick,noPanClassName:t.noPanClassName}),n7e=(t,e,n)=>r=>{const{connectionStartHandle:s,connectionEndHandle:i,connectionClickStartHandle:a}=r;return{connecting:s?.nodeId===t&&s?.handleId===e&&s?.type===n||i?.nodeId===t&&i?.handleId===e&&i?.type===n,clickConnecting:a?.nodeId===t&&a?.handleId===e&&a?.type===n}},AW=b.forwardRef(({type:t="source",position:e=wt.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:s=!0,isConnectableEnd:i=!0,id:a,onConnect:l,children:c,className:d,onMouseDown:h,onTouchStart:m,...g},x)=>{const y=a||null,w=t==="target",S=ms(),k=UNe(),{connectOnClick:j,noPanClassName:N}=hr(t7e,Ss),{connecting:T,clickConnecting:E}=hr(n7e(k,y,t),Ss);k||S.getState().onError?.("010",Wl.error010());const _=P=>{const{defaultEdgeOptions:L,onConnect:H,hasDefaultEdges:U}=S.getState(),ee={...L,...P};if(U){const{edges:z,setEdges:Q}=S.getState();Q(YNe(ee,z))}H?.(ee),l?.(ee)},M=P=>{if(!k)return;const L=bW(P);s&&(L&&P.button===0||!L)&&MW({event:P,handleId:y,nodeId:k,onConnect:_,isTarget:w,getState:S.getState,setState:S.setState,isValidConnection:n||S.getState().isValidConnection||cD}),L?h?.(P):m?.(P)},I=P=>{const{onClickConnectStart:L,onClickConnectEnd:H,connectionClickStartHandle:U,connectionMode:ee,isValidConnection:z}=S.getState();if(!k||!U&&!s)return;if(!U){L?.(P,{nodeId:k,handleId:y,handleType:t}),S.setState({connectionClickStartHandle:{nodeId:k,type:t,handleId:y}});return}const Q=gW(P.target),B=n||z||cD,{connection:X,isValid:J}=_W({nodeId:k,id:y,type:t},ee,U.nodeId,U.handleId||null,U.type,B,Q);J&&_(X),H?.(P),S.setState({connectionClickStartHandle:null})};return ae.createElement("div",{"data-handleid":y,"data-nodeid":k,"data-handlepos":e,"data-id":`${k}-${y}-${t}`,className:Is(["react-flow__handle",`react-flow__handle-${e}`,"nodrag",N,d,{source:!w,target:w,connectable:r,connectablestart:s,connectableend:i,connecting:E,connectionindicator:r&&(s&&!T||i&&T)}]),onMouseDown:M,onTouchStart:M,onClick:j?I:void 0,ref:x,...g},c)});AW.displayName="Handle";var ru=b.memo(AW);const RW=({data:t,isConnectable:e,targetPosition:n=wt.Top,sourcePosition:r=wt.Bottom})=>ae.createElement(ae.Fragment,null,ae.createElement(ru,{type:"target",position:n,isConnectable:e}),t?.label,ae.createElement(ru,{type:"source",position:r,isConnectable:e}));RW.displayName="DefaultNode";var JO=b.memo(RW);const DW=({data:t,isConnectable:e,sourcePosition:n=wt.Bottom})=>ae.createElement(ae.Fragment,null,t?.label,ae.createElement(ru,{type:"source",position:n,isConnectable:e}));DW.displayName="InputNode";var PW=b.memo(DW);const zW=({data:t,isConnectable:e,targetPosition:n=wt.Top})=>ae.createElement(ae.Fragment,null,ae.createElement(ru,{type:"target",position:n,isConnectable:e}),t?.label);zW.displayName="OutputNode";var IW=b.memo(zW);const JN=()=>null;JN.displayName="GroupNode";const r7e=t=>({selectedNodes:t.getNodes().filter(e=>e.selected),selectedEdges:t.edges.filter(e=>e.selected).map(e=>({...e}))}),q1=t=>t.id;function s7e(t,e){return Ss(t.selectedNodes.map(q1),e.selectedNodes.map(q1))&&Ss(t.selectedEdges.map(q1),e.selectedEdges.map(q1))}const LW=b.memo(({onSelectionChange:t})=>{const e=ms(),{selectedNodes:n,selectedEdges:r}=hr(r7e,s7e);return b.useEffect(()=>{const s={nodes:n,edges:r};t?.(s),e.getState().onSelectionChange.forEach(i=>i(s))},[n,r,t]),null});LW.displayName="SelectionListener";const i7e=t=>!!t.onSelectionChange;function a7e({onSelectionChange:t}){const e=hr(i7e);return t||e?ae.createElement(LW,{onSelectionChange:t}):null}const o7e=t=>({setNodes:t.setNodes,setEdges:t.setEdges,setDefaultNodesAndEdges:t.setDefaultNodesAndEdges,setMinZoom:t.setMinZoom,setMaxZoom:t.setMaxZoom,setTranslateExtent:t.setTranslateExtent,setNodeExtent:t.setNodeExtent,reset:t.reset});function uh(t,e){b.useEffect(()=>{typeof t<"u"&&e(t)},[t])}function an(t,e,n){b.useEffect(()=>{typeof e<"u"&&n({[t]:e})},[e])}const l7e=({nodes:t,edges:e,defaultNodes:n,defaultEdges:r,onConnect:s,onConnectStart:i,onConnectEnd:a,onClickConnectStart:l,onClickConnectEnd:c,nodesDraggable:d,nodesConnectable:h,nodesFocusable:m,edgesFocusable:g,edgesUpdatable:x,elevateNodesOnSelect:y,minZoom:w,maxZoom:S,nodeExtent:k,onNodesChange:j,onEdgesChange:N,elementsSelectable:T,connectionMode:E,snapGrid:_,snapToGrid:M,translateExtent:I,connectOnClick:P,defaultEdgeOptions:L,fitView:H,fitViewOptions:U,onNodesDelete:ee,onEdgesDelete:z,onNodeDrag:Q,onNodeDragStart:B,onNodeDragStop:X,onSelectionDrag:J,onSelectionDragStart:G,onSelectionDragStop:R,noPanClassName:ie,nodeOrigin:W,rfId:q,autoPanOnConnect:V,autoPanOnNodeDrag:te,onError:ne,connectionRadius:K,isValidConnection:se,nodeDragThreshold:re})=>{const{setNodes:oe,setEdges:Te,setDefaultNodesAndEdges:We,setMinZoom:Ye,setMaxZoom:Je,setTranslateExtent:Oe,setNodeExtent:Ve,reset:Ue}=hr(o7e,Ss),He=ms();return b.useEffect(()=>{const Ot=r?.map(xt=>({...xt,...L}));return We(n,Ot),()=>{Ue()}},[]),an("defaultEdgeOptions",L,He.setState),an("connectionMode",E,He.setState),an("onConnect",s,He.setState),an("onConnectStart",i,He.setState),an("onConnectEnd",a,He.setState),an("onClickConnectStart",l,He.setState),an("onClickConnectEnd",c,He.setState),an("nodesDraggable",d,He.setState),an("nodesConnectable",h,He.setState),an("nodesFocusable",m,He.setState),an("edgesFocusable",g,He.setState),an("edgesUpdatable",x,He.setState),an("elementsSelectable",T,He.setState),an("elevateNodesOnSelect",y,He.setState),an("snapToGrid",M,He.setState),an("snapGrid",_,He.setState),an("onNodesChange",j,He.setState),an("onEdgesChange",N,He.setState),an("connectOnClick",P,He.setState),an("fitViewOnInit",H,He.setState),an("fitViewOnInitOptions",U,He.setState),an("onNodesDelete",ee,He.setState),an("onEdgesDelete",z,He.setState),an("onNodeDrag",Q,He.setState),an("onNodeDragStart",B,He.setState),an("onNodeDragStop",X,He.setState),an("onSelectionDrag",J,He.setState),an("onSelectionDragStart",G,He.setState),an("onSelectionDragStop",R,He.setState),an("noPanClassName",ie,He.setState),an("nodeOrigin",W,He.setState),an("rfId",q,He.setState),an("autoPanOnConnect",V,He.setState),an("autoPanOnNodeDrag",te,He.setState),an("onError",ne,He.setState),an("connectionRadius",K,He.setState),an("isValidConnection",se,He.setState),an("nodeDragThreshold",re,He.setState),uh(t,oe),uh(e,Te),uh(w,Ye),uh(S,Je),uh(I,Oe),uh(k,Ve),null},uD={display:"none"},c7e={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},BW="react-flow__node-desc",FW="react-flow__edge-desc",u7e="react-flow__aria-live",d7e=t=>t.ariaLiveMessage;function h7e({rfId:t}){const e=hr(d7e);return ae.createElement("div",{id:`${u7e}-${t}`,"aria-live":"assertive","aria-atomic":"true",style:c7e},e)}function f7e({rfId:t,disableKeyboardA11y:e}){return ae.createElement(ae.Fragment,null,ae.createElement("div",{id:`${BW}-${t}`,style:uD},"Press enter or space to select a node.",!e&&"You can then use the arrow keys to move the node around."," Press delete to remove it and escape to cancel."," "),ae.createElement("div",{id:`${FW}-${t}`,style:uD},"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."),!e&&ae.createElement(h7e,{rfId:t}))}var bp=(t=null,e={actInsideInputWithModifier:!0})=>{const[n,r]=b.useState(!1),s=b.useRef(!1),i=b.useRef(new Set([])),[a,l]=b.useMemo(()=>{if(t!==null){const d=(Array.isArray(t)?t:[t]).filter(m=>typeof m=="string").map(m=>m.split("+")),h=d.reduce((m,g)=>m.concat(...g),[]);return[d,h]}return[[],[]]},[t]);return b.useEffect(()=>{const c=typeof document<"u"?document:null,d=e?.target||c;if(t!==null){const h=x=>{if(s.current=x.ctrlKey||x.metaKey||x.shiftKey,(!s.current||s.current&&!e.actInsideInputWithModifier)&&XO(x))return!1;const w=hD(x.code,l);i.current.add(x[w]),dD(a,i.current,!1)&&(x.preventDefault(),r(!0))},m=x=>{if((!s.current||s.current&&!e.actInsideInputWithModifier)&&XO(x))return!1;const w=hD(x.code,l);dD(a,i.current,!0)?(r(!1),i.current.clear()):i.current.delete(x[w]),x.key==="Meta"&&i.current.clear(),s.current=!1},g=()=>{i.current.clear(),r(!1)};return d?.addEventListener("keydown",h),d?.addEventListener("keyup",m),window.addEventListener("blur",g),()=>{d?.removeEventListener("keydown",h),d?.removeEventListener("keyup",m),window.removeEventListener("blur",g)}}},[t,r]),n};function dD(t,e,n){return t.filter(r=>n||r.length===e.size).some(r=>r.every(s=>e.has(s)))}function hD(t,e){return e.includes(t)?"code":"key"}function qW(t,e,n,r){const s=t.parentNode||t.parentId;if(!s)return n;const i=e.get(s),a=td(i,r);return qW(i,e,{x:(n.x??0)+a.x,y:(n.y??0)+a.y,z:(i[Lr]?.z??0)>(n.z??0)?i[Lr]?.z??0:n.z??0},r)}function $W(t,e,n){t.forEach(r=>{const s=r.parentNode||r.parentId;if(s&&!t.has(s))throw new Error(`Parent node ${s} not found`);if(s||n?.[r.id]){const{x:i,y:a,z:l}=qW(r,t,{...r.position,z:r[Lr]?.z??0},e);r.positionAbsolute={x:i,y:a},r[Lr].z=l,n?.[r.id]&&(r[Lr].isParent=!0)}})}function s5(t,e,n,r){const s=new Map,i={},a=r?1e3:0;return t.forEach(l=>{const c=(ka(l.zIndex)?l.zIndex:0)+(l.selected?a:0),d=e.get(l.id),h={...l,positionAbsolute:{x:l.position.x,y:l.position.y}},m=l.parentNode||l.parentId;m&&(i[m]=!0);const g=d?.type&&d?.type!==l.type;Object.defineProperty(h,Lr,{enumerable:!1,value:{handleBounds:g?void 0:d?.[Lr]?.handleBounds,z:c}}),s.set(l.id,h)}),$W(s,n,i),s}function HW(t,e={}){const{getNodes:n,width:r,height:s,minZoom:i,maxZoom:a,d3Zoom:l,d3Selection:c,fitViewOnInitDone:d,fitViewOnInit:h,nodeOrigin:m}=t(),g=e.initial&&!d&&h;if(l&&c&&(g||!e.initial)){const y=n().filter(S=>{const k=e.includeHiddenNodes?S.width&&S.height:!S.hidden;return e.nodes?.length?k&&e.nodes.some(j=>j.id===S.id):k}),w=y.every(S=>S.width&&S.height);if(y.length>0&&w){const S=Xb(y,m),{x:k,y:j,zoom:N}=TW(S,r,s,e.minZoom??i,e.maxZoom??a,e.padding??.1),T=Bl.translate(k,j).scale(N);return typeof e.duration=="number"&&e.duration>0?l.transform(Lu(c,e.duration),T):l.transform(c,T),!0}}return!1}function m7e(t,e){return t.forEach(n=>{const r=e.get(n.id);r&&e.set(r.id,{...r,[Lr]:r[Lr],selected:n.selected})}),new Map(e)}function p7e(t,e){return e.map(n=>{const r=t.find(s=>s.id===n.id);return r&&(n.selected=r.selected),n})}function $1({changedNodes:t,changedEdges:e,get:n,set:r}){const{nodeInternals:s,edges:i,onNodesChange:a,onEdgesChange:l,hasDefaultNodes:c,hasDefaultEdges:d}=n();t?.length&&(c&&r({nodeInternals:m7e(t,s)}),a?.(t)),e?.length&&(d&&r({edges:p7e(e,i)}),l?.(e))}const dh=()=>{},g7e={zoomIn:dh,zoomOut:dh,zoomTo:dh,getZoom:()=>1,setViewport:dh,getViewport:()=>({x:0,y:0,zoom:1}),fitView:()=>!1,setCenter:dh,fitBounds:dh,project:t=>t,screenToFlowPosition:t=>t,flowToScreenPosition:t=>t,viewportInitialized:!1},x7e=t=>({d3Zoom:t.d3Zoom,d3Selection:t.d3Selection}),v7e=()=>{const t=ms(),{d3Zoom:e,d3Selection:n}=hr(x7e,Ss);return b.useMemo(()=>n&&e?{zoomIn:s=>e.scaleBy(Lu(n,s?.duration),1.2),zoomOut:s=>e.scaleBy(Lu(n,s?.duration),1/1.2),zoomTo:(s,i)=>e.scaleTo(Lu(n,i?.duration),s),getZoom:()=>t.getState().transform[2],setViewport:(s,i)=>{const[a,l,c]=t.getState().transform,d=Bl.translate(s.x??a,s.y??l).scale(s.zoom??c);e.transform(Lu(n,i?.duration),d)},getViewport:()=>{const[s,i,a]=t.getState().transform;return{x:s,y:i,zoom:a}},fitView:s=>HW(t.getState,s),setCenter:(s,i,a)=>{const{width:l,height:c,maxZoom:d}=t.getState(),h=typeof a?.zoom<"u"?a.zoom:d,m=l/2-s*h,g=c/2-i*h,x=Bl.translate(m,g).scale(h);e.transform(Lu(n,a?.duration),x)},fitBounds:(s,i)=>{const{width:a,height:l,minZoom:c,maxZoom:d}=t.getState(),{x:h,y:m,zoom:g}=TW(s,a,l,c,d,i?.padding??.1),x=Bl.translate(h,m).scale(g);e.transform(Lu(n,i?.duration),x)},project:s=>{const{transform:i,snapToGrid:a,snapGrid:l}=t.getState();return console.warn("[DEPRECATED] `project` is deprecated. Instead use `screenToFlowPosition`. There is no need to subtract the react flow bounds anymore! https://reactflow.dev/api-reference/types/react-flow-instance#screen-to-flow-position"),ZO(s,i,a,l)},screenToFlowPosition:s=>{const{transform:i,snapToGrid:a,snapGrid:l,domNode:c}=t.getState();if(!c)return s;const{x:d,y:h}=c.getBoundingClientRect(),m={x:s.x-d,y:s.y-h};return ZO(m,i,a,l)},flowToScreenPosition:s=>{const{transform:i,domNode:a}=t.getState();if(!a)return s;const{x:l,y:c}=a.getBoundingClientRect(),d=jW(s,i);return{x:d.x+l,y:d.y+c}},viewportInitialized:!0}:g7e,[e,n])};function e7(){const t=v7e(),e=ms(),n=b.useCallback(()=>e.getState().getNodes().map(w=>({...w})),[]),r=b.useCallback(w=>e.getState().nodeInternals.get(w),[]),s=b.useCallback(()=>{const{edges:w=[]}=e.getState();return w.map(S=>({...S}))},[]),i=b.useCallback(w=>{const{edges:S=[]}=e.getState();return S.find(k=>k.id===w)},[]),a=b.useCallback(w=>{const{getNodes:S,setNodes:k,hasDefaultNodes:j,onNodesChange:N}=e.getState(),T=S(),E=typeof w=="function"?w(T):w;if(j)k(E);else if(N){const _=E.length===0?T.map(M=>({type:"remove",id:M.id})):E.map(M=>({item:M,type:"reset"}));N(_)}},[]),l=b.useCallback(w=>{const{edges:S=[],setEdges:k,hasDefaultEdges:j,onEdgesChange:N}=e.getState(),T=typeof w=="function"?w(S):w;if(j)k(T);else if(N){const E=T.length===0?S.map(_=>({type:"remove",id:_.id})):T.map(_=>({item:_,type:"reset"}));N(E)}},[]),c=b.useCallback(w=>{const S=Array.isArray(w)?w:[w],{getNodes:k,setNodes:j,hasDefaultNodes:N,onNodesChange:T}=e.getState();if(N){const _=[...k(),...S];j(_)}else if(T){const E=S.map(_=>({item:_,type:"add"}));T(E)}},[]),d=b.useCallback(w=>{const S=Array.isArray(w)?w:[w],{edges:k=[],setEdges:j,hasDefaultEdges:N,onEdgesChange:T}=e.getState();if(N)j([...k,...S]);else if(T){const E=S.map(_=>({item:_,type:"add"}));T(E)}},[]),h=b.useCallback(()=>{const{getNodes:w,edges:S=[],transform:k}=e.getState(),[j,N,T]=k;return{nodes:w().map(E=>({...E})),edges:S.map(E=>({...E})),viewport:{x:j,y:N,zoom:T}}},[]),m=b.useCallback(({nodes:w,edges:S})=>{const{nodeInternals:k,getNodes:j,edges:N,hasDefaultNodes:T,hasDefaultEdges:E,onNodesDelete:_,onEdgesDelete:M,onNodesChange:I,onEdgesChange:P}=e.getState(),L=(w||[]).map(Q=>Q.id),H=(S||[]).map(Q=>Q.id),U=j().reduce((Q,B)=>{const X=B.parentNode||B.parentId,J=!L.includes(B.id)&&X&&Q.find(R=>R.id===X);return(typeof B.deletable=="boolean"?B.deletable:!0)&&(L.includes(B.id)||J)&&Q.push(B),Q},[]),ee=N.filter(Q=>typeof Q.deletable=="boolean"?Q.deletable:!0),z=ee.filter(Q=>H.includes(Q.id));if(U||z){const Q=CW(U,ee),B=[...z,...Q],X=B.reduce((J,G)=>(J.includes(G.id)||J.push(G.id),J),[]);if((E||T)&&(E&&e.setState({edges:N.filter(J=>!X.includes(J.id))}),T&&(U.forEach(J=>{k.delete(J.id)}),e.setState({nodeInternals:new Map(k)}))),X.length>0&&(M?.(B),P&&P(X.map(J=>({id:J,type:"remove"})))),U.length>0&&(_?.(U),I)){const J=U.map(G=>({id:G.id,type:"remove"}));I(J)}}},[]),g=b.useCallback(w=>{const S=LNe(w),k=S?null:e.getState().nodeInternals.get(w.id);return!S&&!k?[null,null,S]:[S?w:rD(k),k,S]},[]),x=b.useCallback((w,S=!0,k)=>{const[j,N,T]=g(w);return j?(k||e.getState().getNodes()).filter(E=>{if(!T&&(E.id===N.id||!E.positionAbsolute))return!1;const _=rD(E),M=GO(_,j);return S&&M>0||M>=j.width*j.height}):[]},[]),y=b.useCallback((w,S,k=!0)=>{const[j]=g(w);if(!j)return!1;const N=GO(j,S);return k&&N>0||N>=j.width*j.height},[]);return b.useMemo(()=>({...t,getNodes:n,getNode:r,getEdges:s,getEdge:i,setNodes:a,setEdges:l,addNodes:c,addEdges:d,toObject:h,deleteElements:m,getIntersectingNodes:x,isNodeIntersecting:y}),[t,n,r,s,i,a,l,c,d,h,m,x,y])}const y7e={actInsideInputWithModifier:!1};var b7e=({deleteKeyCode:t,multiSelectionKeyCode:e})=>{const n=ms(),{deleteElements:r}=e7(),s=bp(t,y7e),i=bp(e);b.useEffect(()=>{if(s){const{edges:a,getNodes:l}=n.getState(),c=l().filter(h=>h.selected),d=a.filter(h=>h.selected);r({nodes:c,edges:d}),n.setState({nodesSelectionActive:!1})}},[s]),b.useEffect(()=>{n.setState({multiSelectionActive:i})},[i])};function w7e(t){const e=ms();b.useEffect(()=>{let n;const r=()=>{if(!t.current)return;const s=UN(t.current);(s.height===0||s.width===0)&&e.getState().onError?.("004",Wl.error004()),e.setState({width:s.width||500,height:s.height||500})};return r(),window.addEventListener("resize",r),t.current&&(n=new ResizeObserver(()=>r()),n.observe(t.current)),()=>{window.removeEventListener("resize",r),n&&t.current&&n.unobserve(t.current)}},[])}const t7={position:"absolute",width:"100%",height:"100%",top:0,left:0},S7e=(t,e)=>t.x!==e.x||t.y!==e.y||t.zoom!==e.k,H1=t=>({x:t.x,y:t.y,zoom:t.k}),hh=(t,e)=>t.target.closest(`.${e}`),fD=(t,e)=>e===2&&Array.isArray(t)&&t.includes(2),mD=t=>{const e=t.ctrlKey&&Ny()?10:1;return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*e},k7e=t=>({d3Zoom:t.d3Zoom,d3Selection:t.d3Selection,d3ZoomHandler:t.d3ZoomHandler,userSelectionActive:t.userSelectionActive}),O7e=({onMove:t,onMoveStart:e,onMoveEnd:n,onPaneContextMenu:r,zoomOnScroll:s=!0,zoomOnPinch:i=!0,panOnScroll:a=!1,panOnScrollSpeed:l=.5,panOnScrollMode:c=Wu.Free,zoomOnDoubleClick:d=!0,elementsSelectable:h,panOnDrag:m=!0,defaultViewport:g,translateExtent:x,minZoom:y,maxZoom:w,zoomActivationKeyCode:S,preventScrolling:k=!0,children:j,noWheelClassName:N,noPanClassName:T})=>{const E=b.useRef(),_=ms(),M=b.useRef(!1),I=b.useRef(!1),P=b.useRef(null),L=b.useRef({x:0,y:0,zoom:0}),{d3Zoom:H,d3Selection:U,d3ZoomHandler:ee,userSelectionActive:z}=hr(k7e,Ss),Q=bp(S),B=b.useRef(0),X=b.useRef(!1),J=b.useRef();return w7e(P),b.useEffect(()=>{if(P.current){const G=P.current.getBoundingClientRect(),R=fW().scaleExtent([y,w]).translateExtent(x),ie=ma(P.current).call(R),W=Bl.translate(g.x,g.y).scale(mf(g.zoom,y,w)),q=[[0,0],[G.width,G.height]],V=R.constrain()(W,q,x);R.transform(ie,V),R.wheelDelta(mD),_.setState({d3Zoom:R,d3Selection:ie,d3ZoomHandler:ie.on("wheel.zoom"),transform:[V.x,V.y,V.k],domNode:P.current.closest(".react-flow")})}},[]),b.useEffect(()=>{U&&H&&(a&&!Q&&!z?U.on("wheel.zoom",G=>{if(hh(G,N))return!1;G.preventDefault(),G.stopImmediatePropagation();const R=U.property("__zoom").k||1;if(G.ctrlKey&&i){const se=Ha(G),re=mD(G),oe=R*Math.pow(2,re);H.scaleTo(U,oe,se,G);return}const ie=G.deltaMode===1?20:1;let W=c===Wu.Vertical?0:G.deltaX*ie,q=c===Wu.Horizontal?0:G.deltaY*ie;!Ny()&&G.shiftKey&&c!==Wu.Vertical&&(W=G.deltaY*ie,q=0),H.translateBy(U,-(W/R)*l,-(q/R)*l,{internal:!0});const V=H1(U.property("__zoom")),{onViewportChangeStart:te,onViewportChange:ne,onViewportChangeEnd:K}=_.getState();clearTimeout(J.current),X.current||(X.current=!0,e?.(G,V),te?.(V)),X.current&&(t?.(G,V),ne?.(V),J.current=setTimeout(()=>{n?.(G,V),K?.(V),X.current=!1},150))},{passive:!1}):typeof ee<"u"&&U.on("wheel.zoom",function(G,R){if(!k&&G.type==="wheel"&&!G.ctrlKey||hh(G,N))return null;G.preventDefault(),ee.call(this,G,R)},{passive:!1}))},[z,a,c,U,H,ee,Q,i,k,N,e,t,n]),b.useEffect(()=>{H&&H.on("start",G=>{if(!G.sourceEvent||G.sourceEvent.internal)return null;B.current=G.sourceEvent?.button;const{onViewportChangeStart:R}=_.getState(),ie=H1(G.transform);M.current=!0,L.current=ie,G.sourceEvent?.type==="mousedown"&&_.setState({paneDragging:!0}),R?.(ie),e?.(G.sourceEvent,ie)})},[H,e]),b.useEffect(()=>{H&&(z&&!M.current?H.on("zoom",null):z||H.on("zoom",G=>{const{onViewportChange:R}=_.getState();if(_.setState({transform:[G.transform.x,G.transform.y,G.transform.k]}),I.current=!!(r&&fD(m,B.current??0)),(t||R)&&!G.sourceEvent?.internal){const ie=H1(G.transform);R?.(ie),t?.(G.sourceEvent,ie)}}))},[z,H,t,m,r]),b.useEffect(()=>{H&&H.on("end",G=>{if(!G.sourceEvent||G.sourceEvent.internal)return null;const{onViewportChangeEnd:R}=_.getState();if(M.current=!1,_.setState({paneDragging:!1}),r&&fD(m,B.current??0)&&!I.current&&r(G.sourceEvent),I.current=!1,(n||R)&&S7e(L.current,G.transform)){const ie=H1(G.transform);L.current=ie,clearTimeout(E.current),E.current=setTimeout(()=>{R?.(ie),n?.(G.sourceEvent,ie)},a?150:0)}})},[H,a,m,n,r]),b.useEffect(()=>{H&&H.filter(G=>{const R=Q||s,ie=i&&G.ctrlKey;if((m===!0||Array.isArray(m)&&m.includes(1))&&G.button===1&&G.type==="mousedown"&&(hh(G,"react-flow__node")||hh(G,"react-flow__edge")))return!0;if(!m&&!R&&!a&&!d&&!i||z||!d&&G.type==="dblclick"||hh(G,N)&&G.type==="wheel"||hh(G,T)&&(G.type!=="wheel"||a&&G.type==="wheel"&&!Q)||!i&&G.ctrlKey&&G.type==="wheel"||!R&&!a&&!ie&&G.type==="wheel"||!m&&(G.type==="mousedown"||G.type==="touchstart")||Array.isArray(m)&&!m.includes(G.button)&&G.type==="mousedown")return!1;const W=Array.isArray(m)&&m.includes(G.button)||!G.button||G.button<=1;return(!G.ctrlKey||G.type==="wheel")&&W})},[z,H,s,i,a,d,m,h,Q]),ae.createElement("div",{className:"react-flow__renderer",ref:P,style:t7},j)},j7e=t=>({userSelectionActive:t.userSelectionActive,userSelectionRect:t.userSelectionRect});function N7e(){const{userSelectionActive:t,userSelectionRect:e}=hr(j7e,Ss);return t&&e?ae.createElement("div",{className:"react-flow__selection react-flow__container",style:{width:e.width,height:e.height,transform:`translate(${e.x}px, ${e.y}px)`}}):null}function pD(t,e){const n=e.parentNode||e.parentId,r=t.find(s=>s.id===n);if(r){const s=e.position.x+e.width-r.width,i=e.position.y+e.height-r.height;if(s>0||i>0||e.position.x<0||e.position.y<0){if(r.style={...r.style},r.style.width=r.style.width??r.width,r.style.height=r.style.height??r.height,s>0&&(r.style.width+=s),i>0&&(r.style.height+=i),e.position.x<0){const a=Math.abs(e.position.x);r.position.x=r.position.x-a,r.style.width+=a,e.position.x=0}if(e.position.y<0){const a=Math.abs(e.position.y);r.position.y=r.position.y-a,r.style.height+=a,e.position.y=0}r.width=r.style.width,r.height=r.style.height}}}function QW(t,e){if(t.some(r=>r.type==="reset"))return t.filter(r=>r.type==="reset").map(r=>r.item);const n=t.filter(r=>r.type==="add").map(r=>r.item);return e.reduce((r,s)=>{const i=t.filter(l=>l.id===s.id);if(i.length===0)return r.push(s),r;const a={...s};for(const l of i)if(l)switch(l.type){case"select":{a.selected=l.selected;break}case"position":{typeof l.position<"u"&&(a.position=l.position),typeof l.positionAbsolute<"u"&&(a.positionAbsolute=l.positionAbsolute),typeof l.dragging<"u"&&(a.dragging=l.dragging),a.expandParent&&pD(r,a);break}case"dimensions":{typeof l.dimensions<"u"&&(a.width=l.dimensions.width,a.height=l.dimensions.height),typeof l.updateStyle<"u"&&(a.style={...a.style||{},...l.dimensions}),typeof l.resizing=="boolean"&&(a.resizing=l.resizing),a.expandParent&&pD(r,a);break}case"remove":return r}return r.push(a),r},n)}function VW(t,e){return QW(t,e)}function C7e(t,e){return QW(t,e)}const Dc=(t,e)=>({id:t,type:"select",selected:e});function Eh(t,e){return t.reduce((n,r)=>{const s=e.includes(r.id);return!r.selected&&s?(r.selected=!0,n.push(Dc(r.id,!0))):r.selected&&!s&&(r.selected=!1,n.push(Dc(r.id,!1))),n},[])}const i5=(t,e)=>n=>{n.target===e.current&&t?.(n)},T7e=t=>({userSelectionActive:t.userSelectionActive,elementsSelectable:t.elementsSelectable,dragging:t.paneDragging}),UW=b.memo(({isSelecting:t,selectionMode:e=yp.Full,panOnDrag:n,onSelectionStart:r,onSelectionEnd:s,onPaneClick:i,onPaneContextMenu:a,onPaneScroll:l,onPaneMouseEnter:c,onPaneMouseMove:d,onPaneMouseLeave:h,children:m})=>{const g=b.useRef(null),x=ms(),y=b.useRef(0),w=b.useRef(0),S=b.useRef(),{userSelectionActive:k,elementsSelectable:j,dragging:N}=hr(T7e,Ss),T=()=>{x.setState({userSelectionActive:!1,userSelectionRect:null}),y.current=0,w.current=0},E=ee=>{i?.(ee),x.getState().resetSelectedElements(),x.setState({nodesSelectionActive:!1})},_=ee=>{if(Array.isArray(n)&&n?.includes(2)){ee.preventDefault();return}a?.(ee)},M=l?ee=>l(ee):void 0,I=ee=>{const{resetSelectedElements:z,domNode:Q}=x.getState();if(S.current=Q?.getBoundingClientRect(),!j||!t||ee.button!==0||ee.target!==g.current||!S.current)return;const{x:B,y:X}=$c(ee,S.current);z(),x.setState({userSelectionRect:{width:0,height:0,startX:B,startY:X,x:B,y:X}}),r?.(ee)},P=ee=>{const{userSelectionRect:z,nodeInternals:Q,edges:B,transform:X,onNodesChange:J,onEdgesChange:G,nodeOrigin:R,getNodes:ie}=x.getState();if(!t||!S.current||!z)return;x.setState({userSelectionActive:!0,nodesSelectionActive:!1});const W=$c(ee,S.current),q=z.startX??0,V=z.startY??0,te={...z,x:W.xoe.id),re=K.map(oe=>oe.id);if(y.current!==re.length){y.current=re.length;const oe=Eh(ne,re);oe.length&&J?.(oe)}if(w.current!==se.length){w.current=se.length;const oe=Eh(B,se);oe.length&&G?.(oe)}x.setState({userSelectionRect:te})},L=ee=>{if(ee.button!==0)return;const{userSelectionRect:z}=x.getState();!k&&z&&ee.target===g.current&&E?.(ee),x.setState({nodesSelectionActive:y.current>0}),T(),s?.(ee)},H=ee=>{k&&(x.setState({nodesSelectionActive:y.current>0}),s?.(ee)),T()},U=j&&(t||k);return ae.createElement("div",{className:Is(["react-flow__pane",{dragging:N,selection:t}]),onClick:U?void 0:i5(E,g),onContextMenu:i5(_,g),onWheel:i5(M,g),onMouseEnter:U?void 0:c,onMouseDown:U?I:void 0,onMouseMove:U?P:d,onMouseUp:U?L:void 0,onMouseLeave:U?H:h,ref:g,style:t7},m,ae.createElement(N7e,null))});UW.displayName="Pane";function WW(t,e){const n=t.parentNode||t.parentId;if(!n)return!1;const r=e.get(n);return r?r.selected?!0:WW(r,e):!1}function gD(t,e,n){let r=t;do{if(r?.matches(e))return!0;if(r===n.current)return!1;r=r.parentElement}while(r);return!1}function E7e(t,e,n,r){return Array.from(t.values()).filter(s=>(s.selected||s.id===r)&&(!s.parentNode||s.parentId||!WW(s,t))&&(s.draggable||e&&typeof s.draggable>"u")).map(s=>({id:s.id,position:s.position||{x:0,y:0},positionAbsolute:s.positionAbsolute||{x:0,y:0},distance:{x:n.x-(s.positionAbsolute?.x??0),y:n.y-(s.positionAbsolute?.y??0)},delta:{x:0,y:0},extent:s.extent,parentNode:s.parentNode||s.parentId,parentId:s.parentNode||s.parentId,width:s.width,height:s.height,expandParent:s.expandParent}))}function _7e(t,e){return!e||e==="parent"?e:[e[0],[e[1][0]-(t.width||0),e[1][1]-(t.height||0)]]}function GW(t,e,n,r,s=[0,0],i){const a=_7e(t,t.extent||r);let l=a;const c=t.parentNode||t.parentId;if(t.extent==="parent"&&!t.expandParent)if(c&&t.width&&t.height){const m=n.get(c),{x:g,y:x}=td(m,s).positionAbsolute;l=m&&ka(g)&&ka(x)&&ka(m.width)&&ka(m.height)?[[g+t.width*s[0],x+t.height*s[1]],[g+m.width-t.width+t.width*s[0],x+m.height-t.height+t.height*s[1]]]:l}else i?.("005",Wl.error005()),l=a;else if(t.extent&&c&&t.extent!=="parent"){const m=n.get(c),{x:g,y:x}=td(m,s).positionAbsolute;l=[[t.extent[0][0]+g,t.extent[0][1]+x],[t.extent[1][0]+g,t.extent[1][1]+x]]}let d={x:0,y:0};if(c){const m=n.get(c);d=td(m,s).positionAbsolute}const h=l&&l!=="parent"?WN(e,l):e;return{position:{x:h.x-d.x,y:h.y-d.y},positionAbsolute:h}}function a5({nodeId:t,dragItems:e,nodeInternals:n}){const r=e.map(s=>({...n.get(s.id),position:s.position,positionAbsolute:s.positionAbsolute}));return[t?r.find(s=>s.id===t):r[0],r]}const xD=(t,e,n,r)=>{const s=e.querySelectorAll(t);if(!s||!s.length)return null;const i=Array.from(s),a=e.getBoundingClientRect(),l={x:a.width*r[0],y:a.height*r[1]};return i.map(c=>{const d=c.getBoundingClientRect();return{id:c.getAttribute("data-handleid"),position:c.getAttribute("data-handlepos"),x:(d.left-a.left-l.x)/n,y:(d.top-a.top-l.y)/n,...UN(c)}})};function n0(t,e,n){return n===void 0?n:r=>{const s=e().nodeInternals.get(t);s&&n(r,{...s})}}function ej({id:t,store:e,unselect:n=!1,nodeRef:r}){const{addSelectedNodes:s,unselectNodesAndEdges:i,multiSelectionActive:a,nodeInternals:l,onError:c}=e.getState(),d=l.get(t);if(!d){c?.("012",Wl.error012(t));return}e.setState({nodesSelectionActive:!1}),d.selected?(n||d.selected&&a)&&(i({nodes:[d],edges:[]}),requestAnimationFrame(()=>r?.current?.blur())):s([t])}function M7e(){const t=ms();return b.useCallback(({sourceEvent:n})=>{const{transform:r,snapGrid:s,snapToGrid:i}=t.getState(),a=n.touches?n.touches[0].clientX:n.clientX,l=n.touches?n.touches[0].clientY:n.clientY,c={x:(a-r[0])/r[2],y:(l-r[1])/r[2]};return{xSnapped:i?s[0]*Math.round(c.x/s[0]):c.x,ySnapped:i?s[1]*Math.round(c.y/s[1]):c.y,...c}},[])}function o5(t){return(e,n,r)=>t?.(e,r)}function XW({nodeRef:t,disabled:e=!1,noDragClassName:n,handleSelector:r,nodeId:s,isSelectable:i,selectNodesOnDrag:a}){const l=ms(),[c,d]=b.useState(!1),h=b.useRef([]),m=b.useRef({x:null,y:null}),g=b.useRef(0),x=b.useRef(null),y=b.useRef({x:0,y:0}),w=b.useRef(null),S=b.useRef(!1),k=b.useRef(!1),j=b.useRef(!1),N=M7e();return b.useEffect(()=>{if(t?.current){const T=ma(t.current),E=({x:I,y:P})=>{const{nodeInternals:L,onNodeDrag:H,onSelectionDrag:U,updateNodePositions:ee,nodeExtent:z,snapGrid:Q,snapToGrid:B,nodeOrigin:X,onError:J}=l.getState();m.current={x:I,y:P};let G=!1,R={x:0,y:0,x2:0,y2:0};if(h.current.length>1&&z){const W=Xb(h.current,X);R=vp(W)}if(h.current=h.current.map(W=>{const q={x:I-W.distance.x,y:P-W.distance.y};B&&(q.x=Q[0]*Math.round(q.x/Q[0]),q.y=Q[1]*Math.round(q.y/Q[1]));const V=[[z[0][0],z[0][1]],[z[1][0],z[1][1]]];h.current.length>1&&z&&!W.extent&&(V[0][0]=W.positionAbsolute.x-R.x+z[0][0],V[1][0]=W.positionAbsolute.x+(W.width??0)-R.x2+z[1][0],V[0][1]=W.positionAbsolute.y-R.y+z[0][1],V[1][1]=W.positionAbsolute.y+(W.height??0)-R.y2+z[1][1]);const te=GW(W,q,L,V,X,J);return G=G||W.position.x!==te.position.x||W.position.y!==te.position.y,W.position=te.position,W.positionAbsolute=te.positionAbsolute,W}),!G)return;ee(h.current,!0,!0),d(!0);const ie=s?H:o5(U);if(ie&&w.current){const[W,q]=a5({nodeId:s,dragItems:h.current,nodeInternals:L});ie(w.current,W,q)}},_=()=>{if(!x.current)return;const[I,P]=pW(y.current,x.current);if(I!==0||P!==0){const{transform:L,panBy:H}=l.getState();m.current.x=(m.current.x??0)-I/L[2],m.current.y=(m.current.y??0)-P/L[2],H({x:I,y:P})&&E(m.current)}g.current=requestAnimationFrame(_)},M=I=>{const{nodeInternals:P,multiSelectionActive:L,nodesDraggable:H,unselectNodesAndEdges:U,onNodeDragStart:ee,onSelectionDragStart:z}=l.getState();k.current=!0;const Q=s?ee:o5(z);(!a||!i)&&!L&&s&&(P.get(s)?.selected||U()),s&&i&&a&&ej({id:s,store:l,nodeRef:t});const B=N(I);if(m.current=B,h.current=E7e(P,H,B,s),Q&&h.current){const[X,J]=a5({nodeId:s,dragItems:h.current,nodeInternals:P});Q(I.sourceEvent,X,J)}};if(e)T.on(".drag",null);else{const I=m6e().on("start",P=>{const{domNode:L,nodeDragThreshold:H}=l.getState();H===0&&M(P),j.current=!1;const U=N(P);m.current=U,x.current=L?.getBoundingClientRect()||null,y.current=$c(P.sourceEvent,x.current)}).on("drag",P=>{const L=N(P),{autoPanOnNodeDrag:H,nodeDragThreshold:U}=l.getState();if(P.sourceEvent.type==="touchmove"&&P.sourceEvent.touches.length>1&&(j.current=!0),!j.current){if(!S.current&&k.current&&H&&(S.current=!0,_()),!k.current){const ee=L.xSnapped-(m?.current?.x??0),z=L.ySnapped-(m?.current?.y??0);Math.sqrt(ee*ee+z*z)>U&&M(P)}(m.current.x!==L.xSnapped||m.current.y!==L.ySnapped)&&h.current&&k.current&&(w.current=P.sourceEvent,y.current=$c(P.sourceEvent,x.current),E(L))}}).on("end",P=>{if(!(!k.current||j.current)&&(d(!1),S.current=!1,k.current=!1,cancelAnimationFrame(g.current),h.current)){const{updateNodePositions:L,nodeInternals:H,onNodeDragStop:U,onSelectionDragStop:ee}=l.getState(),z=s?U:o5(ee);if(L(h.current,!1,!1),z){const[Q,B]=a5({nodeId:s,dragItems:h.current,nodeInternals:H});z(P.sourceEvent,Q,B)}}}).filter(P=>{const L=P.target;return!P.button&&(!n||!gD(L,`.${n}`,t))&&(!r||gD(L,r,t))});return T.call(I),()=>{T.on(".drag",null)}}}},[t,e,n,r,i,l,s,a,N]),c}function YW(){const t=ms();return b.useCallback(n=>{const{nodeInternals:r,nodeExtent:s,updateNodePositions:i,getNodes:a,snapToGrid:l,snapGrid:c,onError:d,nodesDraggable:h}=t.getState(),m=a().filter(j=>j.selected&&(j.draggable||h&&typeof j.draggable>"u")),g=l?c[0]:5,x=l?c[1]:5,y=n.isShiftPressed?4:1,w=n.x*g*y,S=n.y*x*y,k=m.map(j=>{if(j.positionAbsolute){const N={x:j.positionAbsolute.x+w,y:j.positionAbsolute.y+S};l&&(N.x=c[0]*Math.round(N.x/c[0]),N.y=c[1]*Math.round(N.y/c[1]));const{positionAbsolute:T,position:E}=GW(j,N,r,s,void 0,d);j.position=E,j.positionAbsolute=T}return j});i(k,!0,!1)},[])}const Qh={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}};var r0=t=>{const e=({id:n,type:r,data:s,xPos:i,yPos:a,xPosOrigin:l,yPosOrigin:c,selected:d,onClick:h,onMouseEnter:m,onMouseMove:g,onMouseLeave:x,onContextMenu:y,onDoubleClick:w,style:S,className:k,isDraggable:j,isSelectable:N,isConnectable:T,isFocusable:E,selectNodesOnDrag:_,sourcePosition:M,targetPosition:I,hidden:P,resizeObserver:L,dragHandle:H,zIndex:U,isParent:ee,noDragClassName:z,noPanClassName:Q,initialized:B,disableKeyboardA11y:X,ariaLabel:J,rfId:G,hasHandleBounds:R})=>{const ie=ms(),W=b.useRef(null),q=b.useRef(null),V=b.useRef(M),te=b.useRef(I),ne=b.useRef(r),K=N||j||h||m||g||x,se=YW(),re=n0(n,ie.getState,m),oe=n0(n,ie.getState,g),Te=n0(n,ie.getState,x),We=n0(n,ie.getState,y),Ye=n0(n,ie.getState,w),Je=Ue=>{const{nodeDragThreshold:He}=ie.getState();if(N&&(!_||!j||He>0)&&ej({id:n,store:ie,nodeRef:W}),h){const Ot=ie.getState().nodeInternals.get(n);Ot&&h(Ue,{...Ot})}},Oe=Ue=>{if(!XO(Ue)&&!X)if(yW.includes(Ue.key)&&N){const He=Ue.key==="Escape";ej({id:n,store:ie,unselect:He,nodeRef:W})}else j&&d&&Object.prototype.hasOwnProperty.call(Qh,Ue.key)&&(ie.setState({ariaLiveMessage:`Moved selected node ${Ue.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~i}, y: ${~~a}`}),se({x:Qh[Ue.key].x,y:Qh[Ue.key].y,isShiftPressed:Ue.shiftKey}))};b.useEffect(()=>()=>{q.current&&(L?.unobserve(q.current),q.current=null)},[]),b.useEffect(()=>{if(W.current&&!P){const Ue=W.current;(!B||!R||q.current!==Ue)&&(q.current&&L?.unobserve(q.current),L?.observe(Ue),q.current=Ue)}},[P,B,R]),b.useEffect(()=>{const Ue=ne.current!==r,He=V.current!==M,Ot=te.current!==I;W.current&&(Ue||He||Ot)&&(Ue&&(ne.current=r),He&&(V.current=M),Ot&&(te.current=I),ie.getState().updateNodeDimensions([{id:n,nodeElement:W.current,forceUpdate:!0}]))},[n,r,M,I]);const Ve=XW({nodeRef:W,disabled:P||!j,noDragClassName:z,handleSelector:H,nodeId:n,isSelectable:N,selectNodesOnDrag:_});return P?null:ae.createElement("div",{className:Is(["react-flow__node",`react-flow__node-${r}`,{[Q]:j},k,{selected:d,selectable:N,parent:ee,dragging:Ve}]),ref:W,style:{zIndex:U,transform:`translate(${l}px,${c}px)`,pointerEvents:K?"all":"none",visibility:B?"visible":"hidden",...S},"data-id":n,"data-testid":`rf__node-${n}`,onMouseEnter:re,onMouseMove:oe,onMouseLeave:Te,onContextMenu:We,onClick:Je,onDoubleClick:Ye,onKeyDown:E?Oe:void 0,tabIndex:E?0:void 0,role:E?"button":void 0,"aria-describedby":X?void 0:`${BW}-${G}`,"aria-label":J},ae.createElement(VNe,{value:n},ae.createElement(t,{id:n,data:s,type:r,xPos:i,yPos:a,selected:d,isConnectable:T,sourcePosition:M,targetPosition:I,dragging:Ve,dragHandle:H,zIndex:U})))};return e.displayName="NodeWrapper",b.memo(e)};const A7e=t=>{const e=t.getNodes().filter(n=>n.selected);return{...Xb(e,t.nodeOrigin),transformString:`translate(${t.transform[0]}px,${t.transform[1]}px) scale(${t.transform[2]})`,userSelectionActive:t.userSelectionActive}};function R7e({onSelectionContextMenu:t,noPanClassName:e,disableKeyboardA11y:n}){const r=ms(),{width:s,height:i,x:a,y:l,transformString:c,userSelectionActive:d}=hr(A7e,Ss),h=YW(),m=b.useRef(null);if(b.useEffect(()=>{n||m.current?.focus({preventScroll:!0})},[n]),XW({nodeRef:m}),d||!s||!i)return null;const g=t?y=>{const w=r.getState().getNodes().filter(S=>S.selected);t(y,w)}:void 0,x=y=>{Object.prototype.hasOwnProperty.call(Qh,y.key)&&h({x:Qh[y.key].x,y:Qh[y.key].y,isShiftPressed:y.shiftKey})};return ae.createElement("div",{className:Is(["react-flow__nodesselection","react-flow__container",e]),style:{transform:c}},ae.createElement("div",{ref:m,className:"react-flow__nodesselection-rect",onContextMenu:g,tabIndex:n?void 0:-1,onKeyDown:n?void 0:x,style:{width:s,height:i,top:l,left:a}}))}var D7e=b.memo(R7e);const P7e=t=>t.nodesSelectionActive,KW=({children:t,onPaneClick:e,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:s,onPaneContextMenu:i,onPaneScroll:a,deleteKeyCode:l,onMove:c,onMoveStart:d,onMoveEnd:h,selectionKeyCode:m,selectionOnDrag:g,selectionMode:x,onSelectionStart:y,onSelectionEnd:w,multiSelectionKeyCode:S,panActivationKeyCode:k,zoomActivationKeyCode:j,elementsSelectable:N,zoomOnScroll:T,zoomOnPinch:E,panOnScroll:_,panOnScrollSpeed:M,panOnScrollMode:I,zoomOnDoubleClick:P,panOnDrag:L,defaultViewport:H,translateExtent:U,minZoom:ee,maxZoom:z,preventScrolling:Q,onSelectionContextMenu:B,noWheelClassName:X,noPanClassName:J,disableKeyboardA11y:G})=>{const R=hr(P7e),ie=bp(m),W=bp(k),q=W||L,V=W||_,te=ie||g&&q!==!0;return b7e({deleteKeyCode:l,multiSelectionKeyCode:S}),ae.createElement(O7e,{onMove:c,onMoveStart:d,onMoveEnd:h,onPaneContextMenu:i,elementsSelectable:N,zoomOnScroll:T,zoomOnPinch:E,panOnScroll:V,panOnScrollSpeed:M,panOnScrollMode:I,zoomOnDoubleClick:P,panOnDrag:!ie&&q,defaultViewport:H,translateExtent:U,minZoom:ee,maxZoom:z,zoomActivationKeyCode:j,preventScrolling:Q,noWheelClassName:X,noPanClassName:J},ae.createElement(UW,{onSelectionStart:y,onSelectionEnd:w,onPaneClick:e,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:s,onPaneContextMenu:i,onPaneScroll:a,panOnDrag:q,isSelecting:!!te,selectionMode:x},t,R&&ae.createElement(D7e,{onSelectionContextMenu:B,noPanClassName:J,disableKeyboardA11y:G})))};KW.displayName="FlowRenderer";var z7e=b.memo(KW);function I7e(t){return hr(b.useCallback(n=>t?NW(n.nodeInternals,{x:0,y:0,width:n.width,height:n.height},n.transform,!0):n.getNodes(),[t]))}function L7e(t){const e={input:r0(t.input||PW),default:r0(t.default||JO),output:r0(t.output||IW),group:r0(t.group||JN)},n={},r=Object.keys(t).filter(s=>!["input","default","output","group"].includes(s)).reduce((s,i)=>(s[i]=r0(t[i]||JO),s),n);return{...e,...r}}const B7e=({x:t,y:e,width:n,height:r,origin:s})=>!n||!r?{x:t,y:e}:s[0]<0||s[1]<0||s[0]>1||s[1]>1?{x:t,y:e}:{x:t-n*s[0],y:e-r*s[1]},F7e=t=>({nodesDraggable:t.nodesDraggable,nodesConnectable:t.nodesConnectable,nodesFocusable:t.nodesFocusable,elementsSelectable:t.elementsSelectable,updateNodeDimensions:t.updateNodeDimensions,onError:t.onError}),ZW=t=>{const{nodesDraggable:e,nodesConnectable:n,nodesFocusable:r,elementsSelectable:s,updateNodeDimensions:i,onError:a}=hr(F7e,Ss),l=I7e(t.onlyRenderVisibleElements),c=b.useRef(),d=b.useMemo(()=>{if(typeof ResizeObserver>"u")return null;const h=new ResizeObserver(m=>{const g=m.map(x=>({id:x.target.getAttribute("data-id"),nodeElement:x.target,forceUpdate:!0}));i(g)});return c.current=h,h},[]);return b.useEffect(()=>()=>{c?.current?.disconnect()},[]),ae.createElement("div",{className:"react-flow__nodes",style:t7},l.map(h=>{let m=h.type||"default";t.nodeTypes[m]||(a?.("003",Wl.error003(m)),m="default");const g=t.nodeTypes[m]||t.nodeTypes.default,x=!!(h.draggable||e&&typeof h.draggable>"u"),y=!!(h.selectable||s&&typeof h.selectable>"u"),w=!!(h.connectable||n&&typeof h.connectable>"u"),S=!!(h.focusable||r&&typeof h.focusable>"u"),k=t.nodeExtent?WN(h.positionAbsolute,t.nodeExtent):h.positionAbsolute,j=k?.x??0,N=k?.y??0,T=B7e({x:j,y:N,width:h.width??0,height:h.height??0,origin:t.nodeOrigin});return ae.createElement(g,{key:h.id,id:h.id,className:h.className,style:h.style,type:m,data:h.data,sourcePosition:h.sourcePosition||wt.Bottom,targetPosition:h.targetPosition||wt.Top,hidden:h.hidden,xPos:j,yPos:N,xPosOrigin:T.x,yPosOrigin:T.y,selectNodesOnDrag:t.selectNodesOnDrag,onClick:t.onNodeClick,onMouseEnter:t.onNodeMouseEnter,onMouseMove:t.onNodeMouseMove,onMouseLeave:t.onNodeMouseLeave,onContextMenu:t.onNodeContextMenu,onDoubleClick:t.onNodeDoubleClick,selected:!!h.selected,isDraggable:x,isSelectable:y,isConnectable:w,isFocusable:S,resizeObserver:d,dragHandle:h.dragHandle,zIndex:h[Lr]?.z??0,isParent:!!h[Lr]?.isParent,noDragClassName:t.noDragClassName,noPanClassName:t.noPanClassName,initialized:!!h.width&&!!h.height,rfId:t.rfId,disableKeyboardA11y:t.disableKeyboardA11y,ariaLabel:h.ariaLabel,hasHandleBounds:!!h[Lr]?.handleBounds})}))};ZW.displayName="NodeRenderer";var q7e=b.memo(ZW);const $7e=(t,e,n)=>n===wt.Left?t-e:n===wt.Right?t+e:t,H7e=(t,e,n)=>n===wt.Top?t-e:n===wt.Bottom?t+e:t,vD="react-flow__edgeupdater",yD=({position:t,centerX:e,centerY:n,radius:r=10,onMouseDown:s,onMouseEnter:i,onMouseOut:a,type:l})=>ae.createElement("circle",{onMouseDown:s,onMouseEnter:i,onMouseOut:a,className:Is([vD,`${vD}-${l}`]),cx:$7e(e,r,t),cy:H7e(n,r,t),r,stroke:"transparent",fill:"transparent"}),Q7e=()=>!0;var fh=t=>{const e=({id:n,className:r,type:s,data:i,onClick:a,onEdgeDoubleClick:l,selected:c,animated:d,label:h,labelStyle:m,labelShowBg:g,labelBgStyle:x,labelBgPadding:y,labelBgBorderRadius:w,style:S,source:k,target:j,sourceX:N,sourceY:T,targetX:E,targetY:_,sourcePosition:M,targetPosition:I,elementsSelectable:P,hidden:L,sourceHandleId:H,targetHandleId:U,onContextMenu:ee,onMouseEnter:z,onMouseMove:Q,onMouseLeave:B,reconnectRadius:X,onReconnect:J,onReconnectStart:G,onReconnectEnd:R,markerEnd:ie,markerStart:W,rfId:q,ariaLabel:V,isFocusable:te,isReconnectable:ne,pathOptions:K,interactionWidth:se,disableKeyboardA11y:re})=>{const oe=b.useRef(null),[Te,We]=b.useState(!1),[Ye,Je]=b.useState(!1),Oe=ms(),Ve=b.useMemo(()=>`url('#${KO(W,q)}')`,[W,q]),Ue=b.useMemo(()=>`url('#${KO(ie,q)}')`,[ie,q]);if(L)return null;const He=At=>{const{edges:zn,addSelectedEdges:Fe,unselectNodesAndEdges:rt,multiSelectionActive:tn}=Oe.getState(),Rt=zn.find(ke=>ke.id===n);Rt&&(P&&(Oe.setState({nodesSelectionActive:!1}),Rt.selected&&tn?(rt({nodes:[],edges:[Rt]}),oe.current?.blur()):Fe([n])),a&&a(At,Rt))},Ot=t0(n,Oe.getState,l),xt=t0(n,Oe.getState,ee),kn=t0(n,Oe.getState,z),It=t0(n,Oe.getState,Q),Yt=t0(n,Oe.getState,B),_t=(At,zn)=>{if(At.button!==0)return;const{edges:Fe,isValidConnection:rt}=Oe.getState(),tn=zn?j:k,Rt=(zn?U:H)||null,ke=zn?"target":"source",Pe=rt||Q7e,it=zn,ot=Fe.find(pt=>pt.id===n);Je(!0),G?.(At,ot,ke);const nn=pt=>{Je(!1),R?.(pt,ot,ke)};MW({event:At,handleId:Rt,nodeId:tn,onConnect:pt=>J?.(ot,pt),isTarget:it,getState:Oe.getState,setState:Oe.setState,isValidConnection:Pe,edgeUpdaterType:ke,onReconnectEnd:nn})},mt=At=>_t(At,!0),Ne=At=>_t(At,!1),Ie=()=>We(!0),st=()=>We(!1),yt=!P&&!a,Pt=At=>{if(!re&&yW.includes(At.key)&&P){const{unselectNodesAndEdges:zn,addSelectedEdges:Fe,edges:rt}=Oe.getState();At.key==="Escape"?(oe.current?.blur(),zn({edges:[rt.find(Rt=>Rt.id===n)]})):Fe([n])}};return ae.createElement("g",{className:Is(["react-flow__edge",`react-flow__edge-${s}`,r,{selected:c,animated:d,inactive:yt,updating:Te}]),onClick:He,onDoubleClick:Ot,onContextMenu:xt,onMouseEnter:kn,onMouseMove:It,onMouseLeave:Yt,onKeyDown:te?Pt:void 0,tabIndex:te?0:void 0,role:te?"button":"img","data-testid":`rf__edge-${n}`,"aria-label":V===null?void 0:V||`Edge from ${k} to ${j}`,"aria-describedby":te?`${FW}-${q}`:void 0,ref:oe},!Ye&&ae.createElement(t,{id:n,source:k,target:j,selected:c,animated:d,label:h,labelStyle:m,labelShowBg:g,labelBgStyle:x,labelBgPadding:y,labelBgBorderRadius:w,data:i,style:S,sourceX:N,sourceY:T,targetX:E,targetY:_,sourcePosition:M,targetPosition:I,sourceHandleId:H,targetHandleId:U,markerStart:Ve,markerEnd:Ue,pathOptions:K,interactionWidth:se}),ne&&ae.createElement(ae.Fragment,null,(ne==="source"||ne===!0)&&ae.createElement(yD,{position:M,centerX:N,centerY:T,radius:X,onMouseDown:mt,onMouseEnter:Ie,onMouseOut:st,type:"source"}),(ne==="target"||ne===!0)&&ae.createElement(yD,{position:I,centerX:E,centerY:_,radius:X,onMouseDown:Ne,onMouseEnter:Ie,onMouseOut:st,type:"target"})))};return e.displayName="EdgeWrapper",b.memo(e)};function V7e(t){const e={default:fh(t.default||Ty),straight:fh(t.bezier||YN),step:fh(t.step||XN),smoothstep:fh(t.step||Gb),simplebezier:fh(t.simplebezier||GN)},n={},r=Object.keys(t).filter(s=>!["default","bezier"].includes(s)).reduce((s,i)=>(s[i]=fh(t[i]||Ty),s),n);return{...e,...r}}function bD(t,e,n=null){const r=(n?.x||0)+e.x,s=(n?.y||0)+e.y,i=n?.width||e.width,a=n?.height||e.height;switch(t){case wt.Top:return{x:r+i/2,y:s};case wt.Right:return{x:r+i,y:s+a/2};case wt.Bottom:return{x:r+i/2,y:s+a};case wt.Left:return{x:r,y:s+a/2}}}function wD(t,e){return t?t.length===1||!e?t[0]:e&&t.find(n=>n.id===e)||null:null}const U7e=(t,e,n,r,s,i)=>{const a=bD(n,t,e),l=bD(i,r,s);return{sourceX:a.x,sourceY:a.y,targetX:l.x,targetY:l.y}};function W7e({sourcePos:t,targetPos:e,sourceWidth:n,sourceHeight:r,targetWidth:s,targetHeight:i,width:a,height:l,transform:c}){const d={x:Math.min(t.x,e.x),y:Math.min(t.y,e.y),x2:Math.max(t.x+n,e.x+s),y2:Math.max(t.y+r,e.y+i)};d.x===d.x2&&(d.x2+=1),d.y===d.y2&&(d.y2+=1);const h=vp({x:(0-c[0])/c[2],y:(0-c[1])/c[2],width:a/c[2],height:l/c[2]}),m=Math.max(0,Math.min(h.x2,d.x2)-Math.max(h.x,d.x)),g=Math.max(0,Math.min(h.y2,d.y2)-Math.max(h.y,d.y));return Math.ceil(m*g)>0}function SD(t){const e=t?.[Lr]?.handleBounds||null,n=e&&t?.width&&t?.height&&typeof t?.positionAbsolute?.x<"u"&&typeof t?.positionAbsolute?.y<"u";return[{x:t?.positionAbsolute?.x||0,y:t?.positionAbsolute?.y||0,width:t?.width||0,height:t?.height||0},e,!!n]}const G7e=[{level:0,isMaxLevel:!0,edges:[]}];function X7e(t,e,n=!1){let r=-1;const s=t.reduce((a,l)=>{const c=ka(l.zIndex);let d=c?l.zIndex:0;if(n){const h=e.get(l.target),m=e.get(l.source),g=l.selected||h?.selected||m?.selected,x=Math.max(m?.[Lr]?.z||0,h?.[Lr]?.z||0,1e3);d=(c?l.zIndex:0)+(g?x:0)}return a[d]?a[d].push(l):a[d]=[l],r=d>r?d:r,a},{}),i=Object.entries(s).map(([a,l])=>{const c=+a;return{edges:l,level:c,isMaxLevel:c===r}});return i.length===0?G7e:i}function Y7e(t,e,n){const r=hr(b.useCallback(s=>t?s.edges.filter(i=>{const a=e.get(i.source),l=e.get(i.target);return a?.width&&a?.height&&l?.width&&l?.height&&W7e({sourcePos:a.positionAbsolute||{x:0,y:0},targetPos:l.positionAbsolute||{x:0,y:0},sourceWidth:a.width,sourceHeight:a.height,targetWidth:l.width,targetHeight:l.height,width:s.width,height:s.height,transform:s.transform})}):s.edges,[t,e]));return X7e(r,e,n)}const K7e=({color:t="none",strokeWidth:e=1})=>ae.createElement("polyline",{style:{stroke:t,strokeWidth:e},strokeLinecap:"round",strokeLinejoin:"round",fill:"none",points:"-5,-4 0,0 -5,4"}),Z7e=({color:t="none",strokeWidth:e=1})=>ae.createElement("polyline",{style:{stroke:t,fill:t,strokeWidth:e},strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"}),kD={[Cy.Arrow]:K7e,[Cy.ArrowClosed]:Z7e};function J7e(t){const e=ms();return b.useMemo(()=>Object.prototype.hasOwnProperty.call(kD,t)?kD[t]:(e.getState().onError?.("009",Wl.error009(t)),null),[t])}const eCe=({id:t,type:e,color:n,width:r=12.5,height:s=12.5,markerUnits:i="strokeWidth",strokeWidth:a,orient:l="auto-start-reverse"})=>{const c=J7e(e);return c?ae.createElement("marker",{className:"react-flow__arrowhead",id:t,markerWidth:`${r}`,markerHeight:`${s}`,viewBox:"-10 -10 20 20",markerUnits:i,orient:l,refX:"0",refY:"0"},ae.createElement(c,{color:n,strokeWidth:a})):null},tCe=({defaultColor:t,rfId:e})=>n=>{const r=[];return n.edges.reduce((s,i)=>([i.markerStart,i.markerEnd].forEach(a=>{if(a&&typeof a=="object"){const l=KO(a,e);r.includes(l)||(s.push({id:l,color:a.color||t,...a}),r.push(l))}}),s),[]).sort((s,i)=>s.id.localeCompare(i.id))},JW=({defaultColor:t,rfId:e})=>{const n=hr(b.useCallback(tCe({defaultColor:t,rfId:e}),[t,e]),(r,s)=>!(r.length!==s.length||r.some((i,a)=>i.id!==s[a].id)));return ae.createElement("defs",null,n.map(r=>ae.createElement(eCe,{id:r.id,key:r.id,type:r.type,color:r.color,width:r.width,height:r.height,markerUnits:r.markerUnits,strokeWidth:r.strokeWidth,orient:r.orient})))};JW.displayName="MarkerDefinitions";var nCe=b.memo(JW);const rCe=t=>({nodesConnectable:t.nodesConnectable,edgesFocusable:t.edgesFocusable,edgesUpdatable:t.edgesUpdatable,elementsSelectable:t.elementsSelectable,width:t.width,height:t.height,connectionMode:t.connectionMode,nodeInternals:t.nodeInternals,onError:t.onError}),eG=({defaultMarkerColor:t,onlyRenderVisibleElements:e,elevateEdgesOnSelect:n,rfId:r,edgeTypes:s,noPanClassName:i,onEdgeContextMenu:a,onEdgeMouseEnter:l,onEdgeMouseMove:c,onEdgeMouseLeave:d,onEdgeClick:h,onEdgeDoubleClick:m,onReconnect:g,onReconnectStart:x,onReconnectEnd:y,reconnectRadius:w,children:S,disableKeyboardA11y:k})=>{const{edgesFocusable:j,edgesUpdatable:N,elementsSelectable:T,width:E,height:_,connectionMode:M,nodeInternals:I,onError:P}=hr(rCe,Ss),L=Y7e(e,I,n);return E?ae.createElement(ae.Fragment,null,L.map(({level:H,edges:U,isMaxLevel:ee})=>ae.createElement("svg",{key:H,style:{zIndex:H},width:E,height:_,className:"react-flow__edges react-flow__container"},ee&&ae.createElement(nCe,{defaultColor:t,rfId:r}),ae.createElement("g",null,U.map(z=>{const[Q,B,X]=SD(I.get(z.source)),[J,G,R]=SD(I.get(z.target));if(!X||!R)return null;let ie=z.type||"default";s[ie]||(P?.("011",Wl.error011(ie)),ie="default");const W=s[ie]||s.default,q=M===pd.Strict?G.target:(G.target??[]).concat(G.source??[]),V=wD(B.source,z.sourceHandle),te=wD(q,z.targetHandle),ne=V?.position||wt.Bottom,K=te?.position||wt.Top,se=!!(z.focusable||j&&typeof z.focusable>"u"),re=z.reconnectable||z.updatable,oe=typeof g<"u"&&(re||N&&typeof re>"u");if(!V||!te)return P?.("008",Wl.error008(V,z)),null;const{sourceX:Te,sourceY:We,targetX:Ye,targetY:Je}=U7e(Q,V,ne,J,te,K);return ae.createElement(W,{key:z.id,id:z.id,className:Is([z.className,i]),type:ie,data:z.data,selected:!!z.selected,animated:!!z.animated,hidden:!!z.hidden,label:z.label,labelStyle:z.labelStyle,labelShowBg:z.labelShowBg,labelBgStyle:z.labelBgStyle,labelBgPadding:z.labelBgPadding,labelBgBorderRadius:z.labelBgBorderRadius,style:z.style,source:z.source,target:z.target,sourceHandleId:z.sourceHandle,targetHandleId:z.targetHandle,markerEnd:z.markerEnd,markerStart:z.markerStart,sourceX:Te,sourceY:We,targetX:Ye,targetY:Je,sourcePosition:ne,targetPosition:K,elementsSelectable:T,onContextMenu:a,onMouseEnter:l,onMouseMove:c,onMouseLeave:d,onClick:h,onEdgeDoubleClick:m,onReconnect:g,onReconnectStart:x,onReconnectEnd:y,reconnectRadius:w,rfId:r,ariaLabel:z.ariaLabel,isFocusable:se,isReconnectable:oe,pathOptions:"pathOptions"in z?z.pathOptions:void 0,interactionWidth:z.interactionWidth,disableKeyboardA11y:k})})))),S):null};eG.displayName="EdgeRenderer";var sCe=b.memo(eG);const iCe=t=>`translate(${t.transform[0]}px,${t.transform[1]}px) scale(${t.transform[2]})`;function aCe({children:t}){const e=hr(iCe);return ae.createElement("div",{className:"react-flow__viewport react-flow__container",style:{transform:e}},t)}function oCe(t){const e=e7(),n=b.useRef(!1);b.useEffect(()=>{!n.current&&e.viewportInitialized&&t&&(setTimeout(()=>t(e),1),n.current=!0)},[t,e.viewportInitialized])}const lCe={[wt.Left]:wt.Right,[wt.Right]:wt.Left,[wt.Top]:wt.Bottom,[wt.Bottom]:wt.Top},tG=({nodeId:t,handleType:e,style:n,type:r=Ic.Bezier,CustomComponent:s,connectionStatus:i})=>{const{fromNode:a,handleId:l,toX:c,toY:d,connectionMode:h}=hr(b.useCallback(_=>({fromNode:_.nodeInternals.get(t),handleId:_.connectionHandleId,toX:(_.connectionPosition.x-_.transform[0])/_.transform[2],toY:(_.connectionPosition.y-_.transform[1])/_.transform[2],connectionMode:_.connectionMode}),[t]),Ss),m=a?.[Lr]?.handleBounds;let g=m?.[e];if(h===pd.Loose&&(g=g||m?.[e==="source"?"target":"source"]),!a||!g)return null;const x=l?g.find(_=>_.id===l):g[0],y=x?x.x+x.width/2:(a.width??0)/2,w=x?x.y+x.height/2:a.height??0,S=(a.positionAbsolute?.x??0)+y,k=(a.positionAbsolute?.y??0)+w,j=x?.position,N=j?lCe[j]:null;if(!j||!N)return null;if(s)return ae.createElement(s,{connectionLineType:r,connectionLineStyle:n,fromNode:a,fromHandle:x,fromX:S,fromY:k,toX:c,toY:d,fromPosition:j,toPosition:N,connectionStatus:i});let T="";const E={sourceX:S,sourceY:k,sourcePosition:j,targetX:c,targetY:d,targetPosition:N};return r===Ic.Bezier?[T]=OW(E):r===Ic.Step?[T]=YO({...E,borderRadius:0}):r===Ic.SmoothStep?[T]=YO(E):r===Ic.SimpleBezier?[T]=kW(E):T=`M${S},${k} ${c},${d}`,ae.createElement("path",{d:T,fill:"none",className:"react-flow__connection-path",style:n})};tG.displayName="ConnectionLine";const cCe=t=>({nodeId:t.connectionNodeId,handleType:t.connectionHandleType,nodesConnectable:t.nodesConnectable,connectionStatus:t.connectionStatus,width:t.width,height:t.height});function uCe({containerStyle:t,style:e,type:n,component:r}){const{nodeId:s,handleType:i,nodesConnectable:a,width:l,height:c,connectionStatus:d}=hr(cCe,Ss);return!(s&&i&&l&&a)?null:ae.createElement("svg",{style:t,width:l,height:c,className:"react-flow__edges react-flow__connectionline react-flow__container"},ae.createElement("g",{className:Is(["react-flow__connection",d])},ae.createElement(tG,{nodeId:s,handleType:i,style:e,type:n,CustomComponent:r,connectionStatus:d})))}function OD(t,e){return b.useRef(null),ms(),b.useMemo(()=>e(t),[t])}const nG=({nodeTypes:t,edgeTypes:e,onMove:n,onMoveStart:r,onMoveEnd:s,onInit:i,onNodeClick:a,onEdgeClick:l,onNodeDoubleClick:c,onEdgeDoubleClick:d,onNodeMouseEnter:h,onNodeMouseMove:m,onNodeMouseLeave:g,onNodeContextMenu:x,onSelectionContextMenu:y,onSelectionStart:w,onSelectionEnd:S,connectionLineType:k,connectionLineStyle:j,connectionLineComponent:N,connectionLineContainerStyle:T,selectionKeyCode:E,selectionOnDrag:_,selectionMode:M,multiSelectionKeyCode:I,panActivationKeyCode:P,zoomActivationKeyCode:L,deleteKeyCode:H,onlyRenderVisibleElements:U,elementsSelectable:ee,selectNodesOnDrag:z,defaultViewport:Q,translateExtent:B,minZoom:X,maxZoom:J,preventScrolling:G,defaultMarkerColor:R,zoomOnScroll:ie,zoomOnPinch:W,panOnScroll:q,panOnScrollSpeed:V,panOnScrollMode:te,zoomOnDoubleClick:ne,panOnDrag:K,onPaneClick:se,onPaneMouseEnter:re,onPaneMouseMove:oe,onPaneMouseLeave:Te,onPaneScroll:We,onPaneContextMenu:Ye,onEdgeContextMenu:Je,onEdgeMouseEnter:Oe,onEdgeMouseMove:Ve,onEdgeMouseLeave:Ue,onReconnect:He,onReconnectStart:Ot,onReconnectEnd:xt,reconnectRadius:kn,noDragClassName:It,noWheelClassName:Yt,noPanClassName:_t,elevateEdgesOnSelect:mt,disableKeyboardA11y:Ne,nodeOrigin:Ie,nodeExtent:st,rfId:yt})=>{const Pt=OD(t,L7e),At=OD(e,V7e);return oCe(i),ae.createElement(z7e,{onPaneClick:se,onPaneMouseEnter:re,onPaneMouseMove:oe,onPaneMouseLeave:Te,onPaneContextMenu:Ye,onPaneScroll:We,deleteKeyCode:H,selectionKeyCode:E,selectionOnDrag:_,selectionMode:M,onSelectionStart:w,onSelectionEnd:S,multiSelectionKeyCode:I,panActivationKeyCode:P,zoomActivationKeyCode:L,elementsSelectable:ee,onMove:n,onMoveStart:r,onMoveEnd:s,zoomOnScroll:ie,zoomOnPinch:W,zoomOnDoubleClick:ne,panOnScroll:q,panOnScrollSpeed:V,panOnScrollMode:te,panOnDrag:K,defaultViewport:Q,translateExtent:B,minZoom:X,maxZoom:J,onSelectionContextMenu:y,preventScrolling:G,noDragClassName:It,noWheelClassName:Yt,noPanClassName:_t,disableKeyboardA11y:Ne},ae.createElement(aCe,null,ae.createElement(sCe,{edgeTypes:At,onEdgeClick:l,onEdgeDoubleClick:d,onlyRenderVisibleElements:U,onEdgeContextMenu:Je,onEdgeMouseEnter:Oe,onEdgeMouseMove:Ve,onEdgeMouseLeave:Ue,onReconnect:He,onReconnectStart:Ot,onReconnectEnd:xt,reconnectRadius:kn,defaultMarkerColor:R,noPanClassName:_t,elevateEdgesOnSelect:!!mt,disableKeyboardA11y:Ne,rfId:yt},ae.createElement(uCe,{style:j,type:k,component:N,containerStyle:T})),ae.createElement("div",{className:"react-flow__edgelabel-renderer"}),ae.createElement(q7e,{nodeTypes:Pt,onNodeClick:a,onNodeDoubleClick:c,onNodeMouseEnter:h,onNodeMouseMove:m,onNodeMouseLeave:g,onNodeContextMenu:x,selectNodesOnDrag:z,onlyRenderVisibleElements:U,noPanClassName:_t,noDragClassName:It,disableKeyboardA11y:Ne,nodeOrigin:Ie,nodeExtent:st,rfId:yt})))};nG.displayName="GraphView";var dCe=b.memo(nG);const tj=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],Tc={rfId:"1",width:0,height:0,transform:[0,0,1],nodeInternals:new Map,edges:[],onNodesChange:null,onEdgesChange:null,hasDefaultNodes:!1,hasDefaultEdges:!1,d3Zoom:null,d3Selection:null,d3ZoomHandler:void 0,minZoom:.5,maxZoom:2,translateExtent:tj,nodeExtent:tj,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionNodeId:null,connectionHandleId:null,connectionHandleType:"source",connectionPosition:{x:0,y:0},connectionStatus:null,connectionMode:pd.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:[0,0],nodeDragThreshold:0,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesUpdatable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,fitViewOnInit:!1,fitViewOnInitDone:!1,fitViewOnInitOptions:void 0,onSelectionChange:[],multiSelectionActive:!1,connectionStartHandle:null,connectionEndHandle:null,connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,connectionRadius:20,onError:BNe,isValidConnection:void 0},hCe=()=>NOe((t,e)=>({...Tc,setNodes:n=>{const{nodeInternals:r,nodeOrigin:s,elevateNodesOnSelect:i}=e();t({nodeInternals:s5(n,r,s,i)})},getNodes:()=>Array.from(e().nodeInternals.values()),setEdges:n=>{const{defaultEdgeOptions:r={}}=e();t({edges:n.map(s=>({...r,...s}))})},setDefaultNodesAndEdges:(n,r)=>{const s=typeof n<"u",i=typeof r<"u",a=s?s5(n,new Map,e().nodeOrigin,e().elevateNodesOnSelect):new Map;t({nodeInternals:a,edges:i?r:[],hasDefaultNodes:s,hasDefaultEdges:i})},updateNodeDimensions:n=>{const{onNodesChange:r,nodeInternals:s,fitViewOnInit:i,fitViewOnInitDone:a,fitViewOnInitOptions:l,domNode:c,nodeOrigin:d}=e(),h=c?.querySelector(".react-flow__viewport");if(!h)return;const m=window.getComputedStyle(h),{m22:g}=new window.DOMMatrixReadOnly(m.transform),x=n.reduce((w,S)=>{const k=s.get(S.id);if(k?.hidden)s.set(k.id,{...k,[Lr]:{...k[Lr],handleBounds:void 0}});else if(k){const j=UN(S.nodeElement);!!(j.width&&j.height&&(k.width!==j.width||k.height!==j.height||S.forceUpdate))&&(s.set(k.id,{...k,[Lr]:{...k[Lr],handleBounds:{source:xD(".source",S.nodeElement,g,d),target:xD(".target",S.nodeElement,g,d)}},...j}),w.push({id:k.id,type:"dimensions",dimensions:j}))}return w},[]);$W(s,d);const y=a||i&&!a&&HW(e,{initial:!0,...l});t({nodeInternals:new Map(s),fitViewOnInitDone:y}),x?.length>0&&r?.(x)},updateNodePositions:(n,r=!0,s=!1)=>{const{triggerNodeChanges:i}=e(),a=n.map(l=>{const c={id:l.id,type:"position",dragging:s};return r&&(c.positionAbsolute=l.positionAbsolute,c.position=l.position),c});i(a)},triggerNodeChanges:n=>{const{onNodesChange:r,nodeInternals:s,hasDefaultNodes:i,nodeOrigin:a,getNodes:l,elevateNodesOnSelect:c}=e();if(n?.length){if(i){const d=VW(n,l()),h=s5(d,s,a,c);t({nodeInternals:h})}r?.(n)}},addSelectedNodes:n=>{const{multiSelectionActive:r,edges:s,getNodes:i}=e();let a,l=null;r?a=n.map(c=>Dc(c,!0)):(a=Eh(i(),n),l=Eh(s,[])),$1({changedNodes:a,changedEdges:l,get:e,set:t})},addSelectedEdges:n=>{const{multiSelectionActive:r,edges:s,getNodes:i}=e();let a,l=null;r?a=n.map(c=>Dc(c,!0)):(a=Eh(s,n),l=Eh(i(),[])),$1({changedNodes:l,changedEdges:a,get:e,set:t})},unselectNodesAndEdges:({nodes:n,edges:r}={})=>{const{edges:s,getNodes:i}=e(),a=n||i(),l=r||s,c=a.map(h=>(h.selected=!1,Dc(h.id,!1))),d=l.map(h=>Dc(h.id,!1));$1({changedNodes:c,changedEdges:d,get:e,set:t})},setMinZoom:n=>{const{d3Zoom:r,maxZoom:s}=e();r?.scaleExtent([n,s]),t({minZoom:n})},setMaxZoom:n=>{const{d3Zoom:r,minZoom:s}=e();r?.scaleExtent([s,n]),t({maxZoom:n})},setTranslateExtent:n=>{e().d3Zoom?.translateExtent(n),t({translateExtent:n})},resetSelectedElements:()=>{const{edges:n,getNodes:r}=e(),i=r().filter(l=>l.selected).map(l=>Dc(l.id,!1)),a=n.filter(l=>l.selected).map(l=>Dc(l.id,!1));$1({changedNodes:i,changedEdges:a,get:e,set:t})},setNodeExtent:n=>{const{nodeInternals:r}=e();r.forEach(s=>{s.positionAbsolute=WN(s.position,n)}),t({nodeExtent:n,nodeInternals:new Map(r)})},panBy:n=>{const{transform:r,width:s,height:i,d3Zoom:a,d3Selection:l,translateExtent:c}=e();if(!a||!l||!n.x&&!n.y)return!1;const d=Bl.translate(r[0]+n.x,r[1]+n.y).scale(r[2]),h=[[0,0],[s,i]],m=a?.constrain()(d,h,c);return a.transform(l,m),r[0]!==m.x||r[1]!==m.y||r[2]!==m.k},cancelConnection:()=>t({connectionNodeId:Tc.connectionNodeId,connectionHandleId:Tc.connectionHandleId,connectionHandleType:Tc.connectionHandleType,connectionStatus:Tc.connectionStatus,connectionStartHandle:Tc.connectionStartHandle,connectionEndHandle:Tc.connectionEndHandle}),reset:()=>t({...Tc})}),Object.is),rG=({children:t})=>{const e=b.useRef(null);return e.current||(e.current=hCe()),ae.createElement(ANe,{value:e.current},t)};rG.displayName="ReactFlowProvider";const sG=({children:t})=>b.useContext(Ub)?ae.createElement(ae.Fragment,null,t):ae.createElement(rG,null,t);sG.displayName="ReactFlowWrapper";const fCe={input:PW,default:JO,output:IW,group:JN},mCe={default:Ty,straight:YN,step:XN,smoothstep:Gb,simplebezier:GN},pCe=[0,0],gCe=[15,15],xCe={x:0,y:0,zoom:1},vCe={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0},iG=b.forwardRef(({nodes:t,edges:e,defaultNodes:n,defaultEdges:r,className:s,nodeTypes:i=fCe,edgeTypes:a=mCe,onNodeClick:l,onEdgeClick:c,onInit:d,onMove:h,onMoveStart:m,onMoveEnd:g,onConnect:x,onConnectStart:y,onConnectEnd:w,onClickConnectStart:S,onClickConnectEnd:k,onNodeMouseEnter:j,onNodeMouseMove:N,onNodeMouseLeave:T,onNodeContextMenu:E,onNodeDoubleClick:_,onNodeDragStart:M,onNodeDrag:I,onNodeDragStop:P,onNodesDelete:L,onEdgesDelete:H,onSelectionChange:U,onSelectionDragStart:ee,onSelectionDrag:z,onSelectionDragStop:Q,onSelectionContextMenu:B,onSelectionStart:X,onSelectionEnd:J,connectionMode:G=pd.Strict,connectionLineType:R=Ic.Bezier,connectionLineStyle:ie,connectionLineComponent:W,connectionLineContainerStyle:q,deleteKeyCode:V="Backspace",selectionKeyCode:te="Shift",selectionOnDrag:ne=!1,selectionMode:K=yp.Full,panActivationKeyCode:se="Space",multiSelectionKeyCode:re=Ny()?"Meta":"Control",zoomActivationKeyCode:oe=Ny()?"Meta":"Control",snapToGrid:Te=!1,snapGrid:We=gCe,onlyRenderVisibleElements:Ye=!1,selectNodesOnDrag:Je=!0,nodesDraggable:Oe,nodesConnectable:Ve,nodesFocusable:Ue,nodeOrigin:He=pCe,edgesFocusable:Ot,edgesUpdatable:xt,elementsSelectable:kn,defaultViewport:It=xCe,minZoom:Yt=.5,maxZoom:_t=2,translateExtent:mt=tj,preventScrolling:Ne=!0,nodeExtent:Ie,defaultMarkerColor:st="#b1b1b7",zoomOnScroll:yt=!0,zoomOnPinch:Pt=!0,panOnScroll:At=!1,panOnScrollSpeed:zn=.5,panOnScrollMode:Fe=Wu.Free,zoomOnDoubleClick:rt=!0,panOnDrag:tn=!0,onPaneClick:Rt,onPaneMouseEnter:ke,onPaneMouseMove:Pe,onPaneMouseLeave:it,onPaneScroll:ot,onPaneContextMenu:nn,children:Kt,onEdgeContextMenu:pt,onEdgeDoubleClick:xr,onEdgeMouseEnter:Ur,onEdgeMouseMove:Wr,onEdgeMouseLeave:vr,onEdgeUpdate:In,onEdgeUpdateStart:cr,onEdgeUpdateEnd:nr,onReconnect:ps,onReconnectStart:gs,onReconnectEnd:js,reconnectRadius:ge=10,edgeUpdaterRadius:Le=10,onNodesChange:Ct,onEdgesChange:xn,noDragClassName:Fr="nodrag",noWheelClassName:Cr="nowheel",noPanClassName:Tr="nopan",fitView:Ns=!1,fitViewOptions:$f,connectOnClick:nw=!0,attributionPosition:rw,proOptions:Cg,defaultEdgeOptions:mu,elevateNodesOnSelect:Hf=!0,elevateEdgesOnSelect:Jl=!1,disableKeyboardA11y:Xo=!1,autoPanOnConnect:pu=!0,autoPanOnNodeDrag:ec=!0,connectionRadius:Gr=20,isValidConnection:Tg,onError:Eg,style:Yo,id:Ko,nodeDragThreshold:sw,..._g},Mg)=>{const Qf=Ko||"1";return ae.createElement("div",{..._g,style:{...Yo,...vCe},ref:Mg,className:Is(["react-flow",s]),"data-testid":"rf__wrapper",id:Ko},ae.createElement(sG,null,ae.createElement(dCe,{onInit:d,onMove:h,onMoveStart:m,onMoveEnd:g,onNodeClick:l,onEdgeClick:c,onNodeMouseEnter:j,onNodeMouseMove:N,onNodeMouseLeave:T,onNodeContextMenu:E,onNodeDoubleClick:_,nodeTypes:i,edgeTypes:a,connectionLineType:R,connectionLineStyle:ie,connectionLineComponent:W,connectionLineContainerStyle:q,selectionKeyCode:te,selectionOnDrag:ne,selectionMode:K,deleteKeyCode:V,multiSelectionKeyCode:re,panActivationKeyCode:se,zoomActivationKeyCode:oe,onlyRenderVisibleElements:Ye,selectNodesOnDrag:Je,defaultViewport:It,translateExtent:mt,minZoom:Yt,maxZoom:_t,preventScrolling:Ne,zoomOnScroll:yt,zoomOnPinch:Pt,zoomOnDoubleClick:rt,panOnScroll:At,panOnScrollSpeed:zn,panOnScrollMode:Fe,panOnDrag:tn,onPaneClick:Rt,onPaneMouseEnter:ke,onPaneMouseMove:Pe,onPaneMouseLeave:it,onPaneScroll:ot,onPaneContextMenu:nn,onSelectionContextMenu:B,onSelectionStart:X,onSelectionEnd:J,onEdgeContextMenu:pt,onEdgeDoubleClick:xr,onEdgeMouseEnter:Ur,onEdgeMouseMove:Wr,onEdgeMouseLeave:vr,onReconnect:ps??In,onReconnectStart:gs??cr,onReconnectEnd:js??nr,reconnectRadius:ge??Le,defaultMarkerColor:st,noDragClassName:Fr,noWheelClassName:Cr,noPanClassName:Tr,elevateEdgesOnSelect:Jl,rfId:Qf,disableKeyboardA11y:Xo,nodeOrigin:He,nodeExtent:Ie}),ae.createElement(l7e,{nodes:t,edges:e,defaultNodes:n,defaultEdges:r,onConnect:x,onConnectStart:y,onConnectEnd:w,onClickConnectStart:S,onClickConnectEnd:k,nodesDraggable:Oe,nodesConnectable:Ve,nodesFocusable:Ue,edgesFocusable:Ot,edgesUpdatable:xt,elementsSelectable:kn,elevateNodesOnSelect:Hf,minZoom:Yt,maxZoom:_t,nodeExtent:Ie,onNodesChange:Ct,onEdgesChange:xn,snapToGrid:Te,snapGrid:We,connectionMode:G,translateExtent:mt,connectOnClick:nw,defaultEdgeOptions:mu,fitView:Ns,fitViewOptions:$f,onNodesDelete:L,onEdgesDelete:H,onNodeDragStart:M,onNodeDrag:I,onNodeDragStop:P,onSelectionDrag:z,onSelectionDragStart:ee,onSelectionDragStop:Q,noPanClassName:Tr,nodeOrigin:He,rfId:Qf,autoPanOnConnect:pu,autoPanOnNodeDrag:ec,onError:Eg,connectionRadius:Gr,isValidConnection:Tg,nodeDragThreshold:sw}),ae.createElement(a7e,{onSelectionChange:U}),Kt,ae.createElement(DNe,{proOptions:Cg,position:rw}),ae.createElement(f7e,{rfId:Qf,disableKeyboardA11y:Xo})))});iG.displayName="ReactFlow";function aG(t){return e=>{const[n,r]=b.useState(e),s=b.useCallback(i=>r(a=>t(i,a)),[]);return[n,r,s]}}const yCe=aG(VW),bCe=aG(C7e),oG=({id:t,x:e,y:n,width:r,height:s,style:i,color:a,strokeColor:l,strokeWidth:c,className:d,borderRadius:h,shapeRendering:m,onClick:g,selected:x})=>{const{background:y,backgroundColor:w}=i||{},S=a||y||w;return ae.createElement("rect",{className:Is(["react-flow__minimap-node",{selected:x},d]),x:e,y:n,rx:h,ry:h,width:r,height:s,fill:S,stroke:l,strokeWidth:c,shapeRendering:m,onClick:g?k=>g(k,t):void 0})};oG.displayName="MiniMapNode";var wCe=b.memo(oG);const SCe=t=>t.nodeOrigin,kCe=t=>t.getNodes().filter(e=>!e.hidden&&e.width&&e.height),l5=t=>t instanceof Function?t:()=>t;function OCe({nodeStrokeColor:t="transparent",nodeColor:e="#e2e2e2",nodeClassName:n="",nodeBorderRadius:r=5,nodeStrokeWidth:s=2,nodeComponent:i=wCe,onClick:a}){const l=hr(kCe,Ss),c=hr(SCe),d=l5(e),h=l5(t),m=l5(n),g=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return ae.createElement(ae.Fragment,null,l.map(x=>{const{x:y,y:w}=td(x,c).positionAbsolute;return ae.createElement(i,{key:x.id,x:y,y:w,width:x.width,height:x.height,style:x.style,selected:x.selected,className:m(x),color:d(x),borderRadius:r,strokeColor:h(x),strokeWidth:s,shapeRendering:g,onClick:a,id:x.id})}))}var jCe=b.memo(OCe);const NCe=200,CCe=150,TCe=t=>{const e=t.getNodes(),n={x:-t.transform[0]/t.transform[2],y:-t.transform[1]/t.transform[2],width:t.width/t.transform[2],height:t.height/t.transform[2]};return{viewBB:n,boundingRect:e.length>0?INe(Xb(e,t.nodeOrigin),n):n,rfId:t.rfId}},ECe="react-flow__minimap-desc";function lG({style:t,className:e,nodeStrokeColor:n="transparent",nodeColor:r="#e2e2e2",nodeClassName:s="",nodeBorderRadius:i=5,nodeStrokeWidth:a=2,nodeComponent:l,maskColor:c="rgb(240, 240, 240, 0.6)",maskStrokeColor:d="none",maskStrokeWidth:h=1,position:m="bottom-right",onClick:g,onNodeClick:x,pannable:y=!1,zoomable:w=!1,ariaLabel:S="React Flow mini map",inversePan:k=!1,zoomStep:j=10,offsetScale:N=5}){const T=ms(),E=b.useRef(null),{boundingRect:_,viewBB:M,rfId:I}=hr(TCe,Ss),P=t?.width??NCe,L=t?.height??CCe,H=_.width/P,U=_.height/L,ee=Math.max(H,U),z=ee*P,Q=ee*L,B=N*ee,X=_.x-(z-_.width)/2-B,J=_.y-(Q-_.height)/2-B,G=z+B*2,R=Q+B*2,ie=`${ECe}-${I}`,W=b.useRef(0);W.current=ee,b.useEffect(()=>{if(E.current){const te=ma(E.current),ne=re=>{const{transform:oe,d3Selection:Te,d3Zoom:We}=T.getState();if(re.sourceEvent.type!=="wheel"||!Te||!We)return;const Ye=-re.sourceEvent.deltaY*(re.sourceEvent.deltaMode===1?.05:re.sourceEvent.deltaMode?1:.002)*j,Je=oe[2]*Math.pow(2,Ye);We.scaleTo(Te,Je)},K=re=>{const{transform:oe,d3Selection:Te,d3Zoom:We,translateExtent:Ye,width:Je,height:Oe}=T.getState();if(re.sourceEvent.type!=="mousemove"||!Te||!We)return;const Ve=W.current*Math.max(1,oe[2])*(k?-1:1),Ue={x:oe[0]-re.sourceEvent.movementX*Ve,y:oe[1]-re.sourceEvent.movementY*Ve},He=[[0,0],[Je,Oe]],Ot=Bl.translate(Ue.x,Ue.y).scale(oe[2]),xt=We.constrain()(Ot,He,Ye);We.transform(Te,xt)},se=fW().on("zoom",y?K:null).on("zoom.wheel",w?ne:null);return te.call(se),()=>{te.on("zoom",null)}}},[y,w,k,j]);const q=g?te=>{const ne=Ha(te);g(te,{x:ne[0],y:ne[1]})}:void 0,V=x?(te,ne)=>{const K=T.getState().nodeInternals.get(ne);x(te,K)}:void 0;return ae.createElement(Wb,{position:m,style:t,className:Is(["react-flow__minimap",e]),"data-testid":"rf__minimap"},ae.createElement("svg",{width:P,height:L,viewBox:`${X} ${J} ${G} ${R}`,role:"img","aria-labelledby":ie,ref:E,onClick:q},S&&ae.createElement("title",{id:ie},S),ae.createElement(jCe,{onClick:V,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:i,nodeClassName:s,nodeStrokeWidth:a,nodeComponent:l}),ae.createElement("path",{className:"react-flow__minimap-mask",d:`M${X-B},${J-B}h${G+B*2}v${R+B*2}h${-G-B*2}z + M${M.x},${M.y}h${M.width}v${M.height}h${-M.width}z`,fill:c,fillRule:"evenodd",stroke:d,strokeWidth:h,pointerEvents:"none"})))}lG.displayName="MiniMap";var _Ce=b.memo(lG);function MCe(){return ae.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32"},ae.createElement("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"}))}function ACe(){return ae.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5"},ae.createElement("path",{d:"M0 0h32v4.2H0z"}))}function RCe(){return ae.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30"},ae.createElement("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"}))}function DCe(){return ae.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},ae.createElement("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"}))}function PCe(){return ae.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},ae.createElement("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"}))}const h0=({children:t,className:e,...n})=>ae.createElement("button",{type:"button",className:Is(["react-flow__controls-button",e]),...n},t);h0.displayName="ControlButton";const zCe=t=>({isInteractive:t.nodesDraggable||t.nodesConnectable||t.elementsSelectable,minZoomReached:t.transform[2]<=t.minZoom,maxZoomReached:t.transform[2]>=t.maxZoom}),cG=({style:t,showZoom:e=!0,showFitView:n=!0,showInteractive:r=!0,fitViewOptions:s,onZoomIn:i,onZoomOut:a,onFitView:l,onInteractiveChange:c,className:d,children:h,position:m="bottom-left"})=>{const g=ms(),[x,y]=b.useState(!1),{isInteractive:w,minZoomReached:S,maxZoomReached:k}=hr(zCe,Ss),{zoomIn:j,zoomOut:N,fitView:T}=e7();if(b.useEffect(()=>{y(!0)},[]),!x)return null;const E=()=>{j(),i?.()},_=()=>{N(),a?.()},M=()=>{T(s),l?.()},I=()=>{g.setState({nodesDraggable:!w,nodesConnectable:!w,elementsSelectable:!w}),c?.(!w)};return ae.createElement(Wb,{className:Is(["react-flow__controls",d]),position:m,style:t,"data-testid":"rf__controls"},e&&ae.createElement(ae.Fragment,null,ae.createElement(h0,{onClick:E,className:"react-flow__controls-zoomin",title:"zoom in","aria-label":"zoom in",disabled:k},ae.createElement(MCe,null)),ae.createElement(h0,{onClick:_,className:"react-flow__controls-zoomout",title:"zoom out","aria-label":"zoom out",disabled:S},ae.createElement(ACe,null))),n&&ae.createElement(h0,{className:"react-flow__controls-fitview",onClick:M,title:"fit view","aria-label":"fit view"},ae.createElement(RCe,null)),r&&ae.createElement(h0,{className:"react-flow__controls-interactive",onClick:I,title:"toggle interactivity","aria-label":"toggle interactivity"},w?ae.createElement(PCe,null):ae.createElement(DCe,null)),h)};cG.displayName="Controls";var ICe=b.memo(cG),Ca;(function(t){t.Lines="lines",t.Dots="dots",t.Cross="cross"})(Ca||(Ca={}));function LCe({color:t,dimensions:e,lineWidth:n}){return ae.createElement("path",{stroke:t,strokeWidth:n,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`})}function BCe({color:t,radius:e}){return ae.createElement("circle",{cx:e,cy:e,r:e,fill:t})}const FCe={[Ca.Dots]:"#91919a",[Ca.Lines]:"#eee",[Ca.Cross]:"#e2e2e2"},qCe={[Ca.Dots]:1,[Ca.Lines]:1,[Ca.Cross]:6},$Ce=t=>({transform:t.transform,patternId:`pattern-${t.rfId}`});function uG({id:t,variant:e=Ca.Dots,gap:n=20,size:r,lineWidth:s=1,offset:i=2,color:a,style:l,className:c}){const d=b.useRef(null),{transform:h,patternId:m}=hr($Ce,Ss),g=a||FCe[e],x=r||qCe[e],y=e===Ca.Dots,w=e===Ca.Cross,S=Array.isArray(n)?n:[n,n],k=[S[0]*h[2]||1,S[1]*h[2]||1],j=x*h[2],N=w?[j,j]:k,T=y?[j/i,j/i]:[N[0]/i,N[1]/i];return ae.createElement("svg",{className:Is(["react-flow__background",c]),style:{...l,position:"absolute",width:"100%",height:"100%",top:0,left:0},ref:d,"data-testid":"rf__background"},ae.createElement("pattern",{id:m+t,x:h[0]%k[0],y:h[1]%k[1],width:k[0],height:k[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${T[0]},-${T[1]})`},y?ae.createElement(BCe,{color:g,radius:j/i}):ae.createElement(LCe,{dimensions:N,color:g,lineWidth:s})),ae.createElement("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${m+t})`}))}uG.displayName="Background";var HCe=b.memo(uG);function n7(t){throw new Error('Could not dynamically require "'+t+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var c5,jD;function QCe(){if(jD)return c5;jD=1;var t=Dz(),e=4;function n(r){return t(r,e)}return c5=n,c5}var u5,ND;function dG(){if(ND)return u5;ND=1;var t=OJ();function e(n){return typeof n=="function"?n:t}return u5=e,u5}var d5,CD;function hG(){if(CD)return d5;CD=1;var t=Pz(),e=cj(),n=dG(),r=xd();function s(i,a){var l=r(i)?t:e;return l(i,n(a))}return d5=s,d5}var h5,TD;function fG(){return TD||(TD=1,h5=hG()),h5}var f5,ED;function VCe(){if(ED)return f5;ED=1;var t=cj();function e(n,r){var s=[];return t(n,function(i,a,l){r(i,a,l)&&s.push(i)}),s}return f5=e,f5}var m5,_D;function mG(){if(_D)return m5;_D=1;var t=jJ(),e=VCe(),n=uj(),r=xd();function s(i,a){var l=r(i)?t:e;return l(i,n(a,3))}return m5=s,m5}var p5,MD;function UCe(){if(MD)return p5;MD=1;var t=Object.prototype,e=t.hasOwnProperty;function n(r,s){return r!=null&&e.call(r,s)}return p5=n,p5}var g5,AD;function pG(){if(AD)return g5;AD=1;var t=UCe(),e=NJ();function n(r,s){return r!=null&&e(r,s,t)}return g5=n,g5}var x5,RD;function WCe(){if(RD)return x5;RD=1;var t=zz(),e=Iz(),n=Lz(),r=xd(),s=dj(),i=hj(),a=CJ(),l=fj(),c="[object Map]",d="[object Set]",h=Object.prototype,m=h.hasOwnProperty;function g(x){if(x==null)return!0;if(s(x)&&(r(x)||typeof x=="string"||typeof x.splice=="function"||i(x)||l(x)||n(x)))return!x.length;var y=e(x);if(y==c||y==d)return!x.size;if(a(x))return!t(x).length;for(var w in x)if(m.call(x,w))return!1;return!0}return x5=g,x5}var v5,DD;function gG(){if(DD)return v5;DD=1;function t(e){return e===void 0}return v5=t,v5}var y5,PD;function GCe(){if(PD)return y5;PD=1;function t(e,n,r,s){var i=-1,a=e==null?0:e.length;for(s&&a&&(r=e[++i]);++i1?x.setNode(y,m):x.setNode(y)}),this},s.prototype.setNode=function(h,m){return t.has(this._nodes,h)?(arguments.length>1&&(this._nodes[h]=m),this):(this._nodes[h]=arguments.length>1?m:this._defaultNodeLabelFn(h),this._isCompound&&(this._parent[h]=n,this._children[h]={},this._children[n][h]=!0),this._in[h]={},this._preds[h]={},this._out[h]={},this._sucs[h]={},++this._nodeCount,this)},s.prototype.node=function(h){return this._nodes[h]},s.prototype.hasNode=function(h){return t.has(this._nodes,h)},s.prototype.removeNode=function(h){var m=this;if(t.has(this._nodes,h)){var g=function(x){m.removeEdge(m._edgeObjs[x])};delete this._nodes[h],this._isCompound&&(this._removeFromParentsChildList(h),delete this._parent[h],t.each(this.children(h),function(x){m.setParent(x)}),delete this._children[h]),t.each(t.keys(this._in[h]),g),delete this._in[h],delete this._preds[h],t.each(t.keys(this._out[h]),g),delete this._out[h],delete this._sucs[h],--this._nodeCount}return this},s.prototype.setParent=function(h,m){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(t.isUndefined(m))m=n;else{m+="";for(var g=m;!t.isUndefined(g);g=this.parent(g))if(g===h)throw new Error("Setting "+m+" as parent of "+h+" would create a cycle");this.setNode(m)}return this.setNode(h),this._removeFromParentsChildList(h),this._parent[h]=m,this._children[m][h]=!0,this},s.prototype._removeFromParentsChildList=function(h){delete this._children[this._parent[h]][h]},s.prototype.parent=function(h){if(this._isCompound){var m=this._parent[h];if(m!==n)return m}},s.prototype.children=function(h){if(t.isUndefined(h)&&(h=n),this._isCompound){var m=this._children[h];if(m)return t.keys(m)}else{if(h===n)return this.nodes();if(this.hasNode(h))return[]}},s.prototype.predecessors=function(h){var m=this._preds[h];if(m)return t.keys(m)},s.prototype.successors=function(h){var m=this._sucs[h];if(m)return t.keys(m)},s.prototype.neighbors=function(h){var m=this.predecessors(h);if(m)return t.union(m,this.successors(h))},s.prototype.isLeaf=function(h){var m;return this.isDirected()?m=this.successors(h):m=this.neighbors(h),m.length===0},s.prototype.filterNodes=function(h){var m=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});m.setGraph(this.graph());var g=this;t.each(this._nodes,function(w,S){h(S)&&m.setNode(S,w)}),t.each(this._edgeObjs,function(w){m.hasNode(w.v)&&m.hasNode(w.w)&&m.setEdge(w,g.edge(w))});var x={};function y(w){var S=g.parent(w);return S===void 0||m.hasNode(S)?(x[w]=S,S):S in x?x[S]:y(S)}return this._isCompound&&t.each(m.nodes(),function(w){m.setParent(w,y(w))}),m},s.prototype.setDefaultEdgeLabel=function(h){return t.isFunction(h)||(h=t.constant(h)),this._defaultEdgeLabelFn=h,this},s.prototype.edgeCount=function(){return this._edgeCount},s.prototype.edges=function(){return t.values(this._edgeObjs)},s.prototype.setPath=function(h,m){var g=this,x=arguments;return t.reduce(h,function(y,w){return x.length>1?g.setEdge(y,w,m):g.setEdge(y,w),w}),this},s.prototype.setEdge=function(){var h,m,g,x,y=!1,w=arguments[0];typeof w=="object"&&w!==null&&"v"in w?(h=w.v,m=w.w,g=w.name,arguments.length===2&&(x=arguments[1],y=!0)):(h=w,m=arguments[1],g=arguments[3],arguments.length>2&&(x=arguments[2],y=!0)),h=""+h,m=""+m,t.isUndefined(g)||(g=""+g);var S=l(this._isDirected,h,m,g);if(t.has(this._edgeLabels,S))return y&&(this._edgeLabels[S]=x),this;if(!t.isUndefined(g)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(h),this.setNode(m),this._edgeLabels[S]=y?x:this._defaultEdgeLabelFn(h,m,g);var k=c(this._isDirected,h,m,g);return h=k.v,m=k.w,Object.freeze(k),this._edgeObjs[S]=k,i(this._preds[m],h),i(this._sucs[h],m),this._in[m][S]=k,this._out[h][S]=k,this._edgeCount++,this},s.prototype.edge=function(h,m,g){var x=arguments.length===1?d(this._isDirected,arguments[0]):l(this._isDirected,h,m,g);return this._edgeLabels[x]},s.prototype.hasEdge=function(h,m,g){var x=arguments.length===1?d(this._isDirected,arguments[0]):l(this._isDirected,h,m,g);return t.has(this._edgeLabels,x)},s.prototype.removeEdge=function(h,m,g){var x=arguments.length===1?d(this._isDirected,arguments[0]):l(this._isDirected,h,m,g),y=this._edgeObjs[x];return y&&(h=y.v,m=y.w,delete this._edgeLabels[x],delete this._edgeObjs[x],a(this._preds[m],h),a(this._sucs[h],m),delete this._in[m][x],delete this._out[h][x],this._edgeCount--),this},s.prototype.inEdges=function(h,m){var g=this._in[h];if(g){var x=t.values(g);return m?t.filter(x,function(y){return y.v===m}):x}},s.prototype.outEdges=function(h,m){var g=this._out[h];if(g){var x=t.values(g);return m?t.filter(x,function(y){return y.w===m}):x}},s.prototype.nodeEdges=function(h,m){var g=this.inEdges(h,m);if(g)return g.concat(this.outEdges(h,m))};function i(h,m){h[m]?h[m]++:h[m]=1}function a(h,m){--h[m]||delete h[m]}function l(h,m,g,x){var y=""+m,w=""+g;if(!h&&y>w){var S=y;y=w,w=S}return y+r+w+r+(t.isUndefined(x)?e:x)}function c(h,m,g,x){var y=""+m,w=""+g;if(!h&&y>w){var S=y;y=w,w=S}var k={v:y,w};return x&&(k.name=x),k}function d(h,m){return l(h,m.v,m.w,m.name)}return A5}var R5,XD;function r8e(){return XD||(XD=1,R5="2.1.8"),R5}var D5,YD;function s8e(){return YD||(YD=1,D5={Graph:r7(),version:r8e()}),D5}var P5,KD;function i8e(){if(KD)return P5;KD=1;var t=za(),e=r7();P5={write:n,read:i};function n(a){var l={options:{directed:a.isDirected(),multigraph:a.isMultigraph(),compound:a.isCompound()},nodes:r(a),edges:s(a)};return t.isUndefined(a.graph())||(l.value=t.clone(a.graph())),l}function r(a){return t.map(a.nodes(),function(l){var c=a.node(l),d=a.parent(l),h={v:l};return t.isUndefined(c)||(h.value=c),t.isUndefined(d)||(h.parent=d),h})}function s(a){return t.map(a.edges(),function(l){var c=a.edge(l),d={v:l.v,w:l.w};return t.isUndefined(l.name)||(d.name=l.name),t.isUndefined(c)||(d.value=c),d})}function i(a){var l=new e(a.options).setGraph(a.value);return t.each(a.nodes,function(c){l.setNode(c.v,c.value),c.parent&&l.setParent(c.v,c.parent)}),t.each(a.edges,function(c){l.setEdge({v:c.v,w:c.w,name:c.name},c.value)}),l}return P5}var z5,ZD;function a8e(){if(ZD)return z5;ZD=1;var t=za();z5=e;function e(n){var r={},s=[],i;function a(l){t.has(r,l)||(r[l]=!0,i.push(l),t.each(n.successors(l),a),t.each(n.predecessors(l),a))}return t.each(n.nodes(),function(l){i=[],a(l),i.length&&s.push(i)}),s}return z5}var I5,JD;function bG(){if(JD)return I5;JD=1;var t=za();I5=e;function e(){this._arr=[],this._keyIndices={}}return e.prototype.size=function(){return this._arr.length},e.prototype.keys=function(){return this._arr.map(function(n){return n.key})},e.prototype.has=function(n){return t.has(this._keyIndices,n)},e.prototype.priority=function(n){var r=this._keyIndices[n];if(r!==void 0)return this._arr[r].priority},e.prototype.min=function(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key},e.prototype.add=function(n,r){var s=this._keyIndices;if(n=String(n),!t.has(s,n)){var i=this._arr,a=i.length;return s[n]=a,i.push({key:n,priority:r}),this._decrease(a),!0}return!1},e.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var n=this._arr.pop();return delete this._keyIndices[n.key],this._heapify(0),n.key},e.prototype.decrease=function(n,r){var s=this._keyIndices[n];if(r>this._arr[s].priority)throw new Error("New priority is greater than current priority. Key: "+n+" Old: "+this._arr[s].priority+" New: "+r);this._arr[s].priority=r,this._decrease(s)},e.prototype._heapify=function(n){var r=this._arr,s=2*n,i=s+1,a=n;s>1,!(r[i].priority0&&(m=h.removeMin(),g=d[m],g.distance!==Number.POSITIVE_INFINITY);)c(m).forEach(x);return d}return L5}var B5,tP;function o8e(){if(tP)return B5;tP=1;var t=wG(),e=za();B5=n;function n(r,s,i){return e.transform(r.nodes(),function(a,l){a[l]=t(r,l,s,i)},{})}return B5}var F5,nP;function SG(){if(nP)return F5;nP=1;var t=za();F5=e;function e(n){var r=0,s=[],i={},a=[];function l(c){var d=i[c]={onStack:!0,lowlink:r,index:r++};if(s.push(c),n.successors(c).forEach(function(g){t.has(i,g)?i[g].onStack&&(d.lowlink=Math.min(d.lowlink,i[g].index)):(l(g),d.lowlink=Math.min(d.lowlink,i[g].lowlink))}),d.lowlink===d.index){var h=[],m;do m=s.pop(),i[m].onStack=!1,h.push(m);while(c!==m);a.push(h)}}return n.nodes().forEach(function(c){t.has(i,c)||l(c)}),a}return F5}var q5,rP;function l8e(){if(rP)return q5;rP=1;var t=za(),e=SG();q5=n;function n(r){return t.filter(e(r),function(s){return s.length>1||s.length===1&&r.hasEdge(s[0],s[0])})}return q5}var $5,sP;function c8e(){if(sP)return $5;sP=1;var t=za();$5=n;var e=t.constant(1);function n(s,i,a){return r(s,i||e,a||function(l){return s.outEdges(l)})}function r(s,i,a){var l={},c=s.nodes();return c.forEach(function(d){l[d]={},l[d][d]={distance:0},c.forEach(function(h){d!==h&&(l[d][h]={distance:Number.POSITIVE_INFINITY})}),a(d).forEach(function(h){var m=h.v===d?h.w:h.v,g=i(h);l[d][m]={distance:g,predecessor:d}})}),c.forEach(function(d){var h=l[d];c.forEach(function(m){var g=l[m];c.forEach(function(x){var y=g[d],w=h[x],S=g[x],k=y.distance+w.distance;k0;){if(d=c.removeMin(),t.has(l,d))a.setEdge(d,l[d]);else{if(m)throw new Error("Input graph is not connected: "+s);m=!0}s.nodeEdges(d).forEach(h)}return a}return G5}var X5,dP;function m8e(){return dP||(dP=1,X5={components:a8e(),dijkstra:wG(),dijkstraAll:o8e(),findCycles:l8e(),floydWarshall:c8e(),isAcyclic:u8e(),postorder:d8e(),preorder:h8e(),prim:f8e(),tarjan:SG(),topsort:kG()}),X5}var Y5,hP;function p8e(){if(hP)return Y5;hP=1;var t=s8e();return Y5={Graph:t.Graph,json:i8e(),alg:m8e(),version:t.version},Y5}var K5,fP;function Ja(){if(fP)return K5;fP=1;var t;if(typeof n7=="function")try{t=p8e()}catch{}return t||(t=window.graphlib),K5=t,K5}var Z5,mP;function g8e(){if(mP)return Z5;mP=1;var t=Dz(),e=1,n=4;function r(s){return t(s,e|n)}return Z5=r,Z5}var J5,pP;function x8e(){if(pP)return J5;pP=1;var t=pj(),e=Hz(),n=$z(),r=Ry(),s=Object.prototype,i=s.hasOwnProperty,a=t(function(l,c){l=Object(l);var d=-1,h=c.length,m=h>2?c[2]:void 0;for(m&&n(c[0],c[1],m)&&(h=1);++d1?i[l-1]:void 0,d=l>2?i[2]:void 0;for(c=r.length>3&&typeof c=="function"?(l--,c):void 0,d&&e(i[0],i[1],d)&&(c=l<3?void 0:c,l=1),s=Object(s);++a0;--S)if(w=h[S].dequeue(),w){g=g.concat(a(d,h,m,w,!0));break}}}return g}function a(d,h,m,g,x){var y=x?[]:void 0;return t.forEach(d.inEdges(g.v),function(w){var S=d.edge(w),k=d.node(w.v);x&&y.push({v:w.v,w:w.w}),k.out-=S,c(h,m,k)}),t.forEach(d.outEdges(g.v),function(w){var S=d.edge(w),k=w.w,j=d.node(k);j.in-=S,c(h,m,j)}),d.removeNode(g.v),y}function l(d,h){var m=new e,g=0,x=0;t.forEach(d.nodes(),function(S){m.setNode(S,{v:S,in:0,out:0})}),t.forEach(d.edges(),function(S){var k=m.edge(S.v,S.w)||0,j=h(S),N=k+j;m.setEdge(S.v,S.w,N),x=Math.max(x,m.node(S.v).out+=j),g=Math.max(g,m.node(S.w).in+=j)});var y=t.range(x+g+3).map(function(){return new n}),w=g+1;return t.forEach(m.nodes(),function(S){c(y,w,m.node(S))}),{graph:m,buckets:y,zeroIdx:w}}function c(d,h,m){m.out?m.in?d[m.out-m.in+h].enqueue(m):d[d.length-1].enqueue(m):d[0].enqueue(m)}return x3}var v3,DP;function R8e(){if(DP)return v3;DP=1;var t=Nr(),e=A8e();v3={run:n,undo:s};function n(i){var a=i.graph().acyclicer==="greedy"?e(i,l(i)):r(i);t.forEach(a,function(c){var d=i.edge(c);i.removeEdge(c),d.forwardName=c.name,d.reversed=!0,i.setEdge(c.w,c.v,d,t.uniqueId("rev"))});function l(c){return function(d){return c.edge(d).weight}}}function r(i){var a=[],l={},c={};function d(h){t.has(c,h)||(c[h]=!0,l[h]=!0,t.forEach(i.outEdges(h),function(m){t.has(l,m.w)?a.push(m):d(m.w)}),delete l[h])}return t.forEach(i.nodes(),d),a}function s(i){t.forEach(i.edges(),function(a){var l=i.edge(a);if(l.reversed){i.removeEdge(a);var c=l.forwardName;delete l.reversed,delete l.forwardName,i.setEdge(a.w,a.v,l,c)}})}return v3}var y3,PP;function ji(){if(PP)return y3;PP=1;var t=Nr(),e=Ja().Graph;y3={addDummyNode:n,simplify:r,asNonCompoundGraph:s,successorWeights:i,predecessorWeights:a,intersectRect:l,buildLayerMatrix:c,normalizeRanks:d,removeEmptyRanks:h,addBorderNode:m,maxRank:g,partition:x,time:y,notime:w};function n(S,k,j,N){var T;do T=t.uniqueId(N);while(S.hasNode(T));return j.dummy=k,S.setNode(T,j),T}function r(S){var k=new e().setGraph(S.graph());return t.forEach(S.nodes(),function(j){k.setNode(j,S.node(j))}),t.forEach(S.edges(),function(j){var N=k.edge(j.v,j.w)||{weight:0,minlen:1},T=S.edge(j);k.setEdge(j.v,j.w,{weight:N.weight+T.weight,minlen:Math.max(N.minlen,T.minlen)})}),k}function s(S){var k=new e({multigraph:S.isMultigraph()}).setGraph(S.graph());return t.forEach(S.nodes(),function(j){S.children(j).length||k.setNode(j,S.node(j))}),t.forEach(S.edges(),function(j){k.setEdge(j,S.edge(j))}),k}function i(S){var k=t.map(S.nodes(),function(j){var N={};return t.forEach(S.outEdges(j),function(T){N[T.w]=(N[T.w]||0)+S.edge(T).weight}),N});return t.zipObject(S.nodes(),k)}function a(S){var k=t.map(S.nodes(),function(j){var N={};return t.forEach(S.inEdges(j),function(T){N[T.v]=(N[T.v]||0)+S.edge(T).weight}),N});return t.zipObject(S.nodes(),k)}function l(S,k){var j=S.x,N=S.y,T=k.x-j,E=k.y-N,_=S.width/2,M=S.height/2;if(!T&&!E)throw new Error("Not possible to find intersection inside of the rectangle");var I,P;return Math.abs(E)*_>Math.abs(T)*M?(E<0&&(M=-M),I=M*T/E,P=M):(T<0&&(_=-_),I=_,P=_*E/T),{x:j+I,y:N+P}}function c(S){var k=t.map(t.range(g(S)+1),function(){return[]});return t.forEach(S.nodes(),function(j){var N=S.node(j),T=N.rank;t.isUndefined(T)||(k[T][N.order]=j)}),k}function d(S){var k=t.min(t.map(S.nodes(),function(j){return S.node(j).rank}));t.forEach(S.nodes(),function(j){var N=S.node(j);t.has(N,"rank")&&(N.rank-=k)})}function h(S){var k=t.min(t.map(S.nodes(),function(E){return S.node(E).rank})),j=[];t.forEach(S.nodes(),function(E){var _=S.node(E).rank-k;j[_]||(j[_]=[]),j[_].push(E)});var N=0,T=S.graph().nodeRankFactor;t.forEach(j,function(E,_){t.isUndefined(E)&&_%T!==0?--N:N&&t.forEach(E,function(M){S.node(M).rank+=N})})}function m(S,k,j,N){var T={width:0,height:0};return arguments.length>=4&&(T.rank=j,T.order=N),n(S,"border",T,k)}function g(S){return t.max(t.map(S.nodes(),function(k){var j=S.node(k).rank;if(!t.isUndefined(j))return j}))}function x(S,k){var j={lhs:[],rhs:[]};return t.forEach(S,function(N){k(N)?j.lhs.push(N):j.rhs.push(N)}),j}function y(S,k){var j=t.now();try{return k()}finally{console.log(S+" time: "+(t.now()-j)+"ms")}}function w(S,k){return k()}return y3}var b3,zP;function D8e(){if(zP)return b3;zP=1;var t=Nr(),e=ji();b3={run:n,undo:s};function n(i){i.graph().dummyChains=[],t.forEach(i.edges(),function(a){r(i,a)})}function r(i,a){var l=a.v,c=i.node(l).rank,d=a.w,h=i.node(d).rank,m=a.name,g=i.edge(a),x=g.labelRank;if(h!==c+1){i.removeEdge(a);var y,w,S;for(S=0,++c;cP.lim&&(L=P,H=!0);var U=t.filter(T.edges(),function(ee){return H===j(N,N.node(ee.v),L)&&H!==j(N,N.node(ee.w),L)});return t.minBy(U,function(ee){return n(T,ee)})}function w(N,T,E,_){var M=E.v,I=E.w;N.removeEdge(M,I),N.setEdge(_.v,_.w,{}),m(N),c(N,T),S(N,T)}function S(N,T){var E=t.find(N.nodes(),function(M){return!T.node(M).parent}),_=s(N,E);_=_.slice(1),t.forEach(_,function(M){var I=N.node(M).parent,P=T.edge(M,I),L=!1;P||(P=T.edge(I,M),L=!0),T.node(M).rank=T.node(I).rank+(L?P.minlen:-P.minlen)})}function k(N,T,E){return N.hasEdge(T,E)}function j(N,T,E){return E.low<=T.lim&&T.lim<=E.lim}return k3}var O3,FP;function z8e(){if(FP)return O3;FP=1;var t=Ey(),e=t.longestPath,n=CG(),r=P8e();O3=s;function s(c){switch(c.graph().ranker){case"network-simplex":l(c);break;case"tight-tree":a(c);break;case"longest-path":i(c);break;default:l(c)}}var i=e;function a(c){e(c),n(c)}function l(c){r(c)}return O3}var j3,qP;function I8e(){if(qP)return j3;qP=1;var t=Nr();j3=e;function e(s){var i=r(s);t.forEach(s.graph().dummyChains,function(a){for(var l=s.node(a),c=l.edgeObj,d=n(s,i,c.v,c.w),h=d.path,m=d.lca,g=0,x=h[g],y=!0;a!==c.w;){if(l=s.node(a),y){for(;(x=h[g])!==m&&s.node(x).maxRankh||m>i[g].lim));for(x=g,g=l;(g=s.parent(g))!==x;)d.push(g);return{path:c.concat(d.reverse()),lca:x}}function r(s){var i={},a=0;function l(c){var d=a;t.forEach(s.children(c),l),i[c]={low:d,lim:a++}}return t.forEach(s.children(),l),i}return j3}var N3,$P;function L8e(){if($P)return N3;$P=1;var t=Nr(),e=ji();N3={run:n,cleanup:a};function n(l){var c=e.addDummyNode(l,"root",{},"_root"),d=s(l),h=t.max(t.values(d))-1,m=2*h+1;l.graph().nestingRoot=c,t.forEach(l.edges(),function(x){l.edge(x).minlen*=m});var g=i(l)+1;t.forEach(l.children(),function(x){r(l,c,m,g,h,d,x)}),l.graph().nodeRankFactor=m}function r(l,c,d,h,m,g,x){var y=l.children(x);if(!y.length){x!==c&&l.setEdge(c,x,{weight:0,minlen:d});return}var w=e.addBorderNode(l,"_bt"),S=e.addBorderNode(l,"_bb"),k=l.node(x);l.setParent(w,x),k.borderTop=w,l.setParent(S,x),k.borderBottom=S,t.forEach(y,function(j){r(l,c,d,h,m,g,j);var N=l.node(j),T=N.borderTop?N.borderTop:j,E=N.borderBottom?N.borderBottom:j,_=N.borderTop?h:2*h,M=T!==E?1:m-g[x]+1;l.setEdge(w,T,{weight:_,minlen:M,nestingEdge:!0}),l.setEdge(E,S,{weight:_,minlen:M,nestingEdge:!0})}),l.parent(x)||l.setEdge(c,w,{weight:0,minlen:m+g[x]})}function s(l){var c={};function d(h,m){var g=l.children(h);g&&g.length&&t.forEach(g,function(x){d(x,m+1)}),c[h]=m}return t.forEach(l.children(),function(h){d(h,1)}),c}function i(l){return t.reduce(l.edges(),function(c,d){return c+l.edge(d).weight},0)}function a(l){var c=l.graph();l.removeNode(c.nestingRoot),delete c.nestingRoot,t.forEach(l.edges(),function(d){var h=l.edge(d);h.nestingEdge&&l.removeEdge(d)})}return N3}var C3,HP;function B8e(){if(HP)return C3;HP=1;var t=Nr(),e=ji();C3=n;function n(s){function i(a){var l=s.children(a),c=s.node(a);if(l.length&&t.forEach(l,i),t.has(c,"minRank")){c.borderLeft=[],c.borderRight=[];for(var d=c.minRank,h=c.maxRank+1;d0;)x%2&&(y+=h[x+1]),x=x-1>>1,h[x]+=g.weight;m+=g.weight*y})),m}return _3}var M3,WP;function H8e(){if(WP)return M3;WP=1;var t=Nr();M3=e;function e(n,r){return t.map(r,function(s){var i=n.inEdges(s);if(i.length){var a=t.reduce(i,function(l,c){var d=n.edge(c),h=n.node(c.v);return{sum:l.sum+d.weight*h.order,weight:l.weight+d.weight}},{sum:0,weight:0});return{v:s,barycenter:a.sum/a.weight,weight:a.weight}}else return{v:s}})}return M3}var A3,GP;function Q8e(){if(GP)return A3;GP=1;var t=Nr();A3=e;function e(s,i){var a={};t.forEach(s,function(c,d){var h=a[c.v]={indegree:0,in:[],out:[],vs:[c.v],i:d};t.isUndefined(c.barycenter)||(h.barycenter=c.barycenter,h.weight=c.weight)}),t.forEach(i.edges(),function(c){var d=a[c.v],h=a[c.w];!t.isUndefined(d)&&!t.isUndefined(h)&&(h.indegree++,d.out.push(a[c.w]))});var l=t.filter(a,function(c){return!c.indegree});return n(l)}function n(s){var i=[];function a(d){return function(h){h.merged||(t.isUndefined(h.barycenter)||t.isUndefined(d.barycenter)||h.barycenter>=d.barycenter)&&r(d,h)}}function l(d){return function(h){h.in.push(d),--h.indegree===0&&s.push(h)}}for(;s.length;){var c=s.pop();i.push(c),t.forEach(c.in.reverse(),a(c)),t.forEach(c.out,l(c))}return t.map(t.filter(i,function(d){return!d.merged}),function(d){return t.pick(d,["vs","i","barycenter","weight"])})}function r(s,i){var a=0,l=0;s.weight&&(a+=s.barycenter*s.weight,l+=s.weight),i.weight&&(a+=i.barycenter*i.weight,l+=i.weight),s.vs=i.vs.concat(s.vs),s.barycenter=a/l,s.weight=l,s.i=Math.min(i.i,s.i),i.merged=!0}return A3}var R3,XP;function V8e(){if(XP)return R3;XP=1;var t=Nr(),e=ji();R3=n;function n(i,a){var l=e.partition(i,function(w){return t.has(w,"barycenter")}),c=l.lhs,d=t.sortBy(l.rhs,function(w){return-w.i}),h=[],m=0,g=0,x=0;c.sort(s(!!a)),x=r(h,d,x),t.forEach(c,function(w){x+=w.vs.length,h.push(w.vs),m+=w.barycenter*w.weight,g+=w.weight,x=r(h,d,x)});var y={vs:t.flatten(h,!0)};return g&&(y.barycenter=m/g,y.weight=g),y}function r(i,a,l){for(var c;a.length&&(c=t.last(a)).i<=l;)a.pop(),i.push(c.vs),l++;return l}function s(i){return function(a,l){return a.barycenterl.barycenter?1:i?l.i-a.i:a.i-l.i}}return R3}var D3,YP;function U8e(){if(YP)return D3;YP=1;var t=Nr(),e=H8e(),n=Q8e(),r=V8e();D3=s;function s(l,c,d,h){var m=l.children(c),g=l.node(c),x=g?g.borderLeft:void 0,y=g?g.borderRight:void 0,w={};x&&(m=t.filter(m,function(E){return E!==x&&E!==y}));var S=e(l,m);t.forEach(S,function(E){if(l.children(E.v).length){var _=s(l,E.v,d,h);w[E.v]=_,t.has(_,"barycenter")&&a(E,_)}});var k=n(S,d);i(k,w);var j=r(k,h);if(x&&(j.vs=t.flatten([x,j.vs,y],!0),l.predecessors(x).length)){var N=l.node(l.predecessors(x)[0]),T=l.node(l.predecessors(y)[0]);t.has(j,"barycenter")||(j.barycenter=0,j.weight=0),j.barycenter=(j.barycenter*j.weight+N.order+T.order)/(j.weight+2),j.weight+=2}return j}function i(l,c){t.forEach(l,function(d){d.vs=t.flatten(d.vs.map(function(h){return c[h]?c[h].vs:h}),!0)})}function a(l,c){t.isUndefined(l.barycenter)?(l.barycenter=c.barycenter,l.weight=c.weight):(l.barycenter=(l.barycenter*l.weight+c.barycenter*c.weight)/(l.weight+c.weight),l.weight+=c.weight)}return D3}var P3,KP;function W8e(){if(KP)return P3;KP=1;var t=Nr(),e=Ja().Graph;P3=n;function n(s,i,a){var l=r(s),c=new e({compound:!0}).setGraph({root:l}).setDefaultNodeLabel(function(d){return s.node(d)});return t.forEach(s.nodes(),function(d){var h=s.node(d),m=s.parent(d);(h.rank===i||h.minRank<=i&&i<=h.maxRank)&&(c.setNode(d),c.setParent(d,m||l),t.forEach(s[a](d),function(g){var x=g.v===d?g.w:g.v,y=c.edge(x,d),w=t.isUndefined(y)?0:y.weight;c.setEdge(x,d,{weight:s.edge(g).weight+w})}),t.has(h,"minRank")&&c.setNode(d,{borderLeft:h.borderLeft[i],borderRight:h.borderRight[i]}))}),c}function r(s){for(var i;s.hasNode(i=t.uniqueId("_root")););return i}return P3}var z3,ZP;function G8e(){if(ZP)return z3;ZP=1;var t=Nr();z3=e;function e(n,r,s){var i={},a;t.forEach(s,function(l){for(var c=n.parent(l),d,h;c;){if(d=n.parent(c),d?(h=i[d],i[d]=c):(h=a,a=c),h&&h!==c){r.setEdge(h,c);return}c=d}})}return z3}var I3,JP;function X8e(){if(JP)return I3;JP=1;var t=Nr(),e=q8e(),n=$8e(),r=U8e(),s=W8e(),i=G8e(),a=Ja().Graph,l=ji();I3=c;function c(g){var x=l.maxRank(g),y=d(g,t.range(1,x+1),"inEdges"),w=d(g,t.range(x-1,-1,-1),"outEdges"),S=e(g);m(g,S);for(var k=Number.POSITIVE_INFINITY,j,N=0,T=0;T<4;++N,++T){h(N%2?y:w,N%4>=2),S=l.buildLayerMatrix(g);var E=n(g,S);EL)&&a(N,ee,H)})})}function E(_,M){var I=-1,P,L=0;return t.forEach(M,function(H,U){if(k.node(H).dummy==="border"){var ee=k.predecessors(H);ee.length&&(P=k.node(ee[0]).order,T(M,L,U,I,P),L=U,I=P)}T(M,L,M.length,P,_.length)}),M}return t.reduce(j,E),N}function i(k,j){if(k.node(j).dummy)return t.find(k.predecessors(j),function(N){return k.node(N).dummy})}function a(k,j,N){if(j>N){var T=j;j=N,N=T}var E=k[j];E||(k[j]=E={}),E[N]=!0}function l(k,j,N){if(j>N){var T=j;j=N,N=T}return t.has(k[j],N)}function c(k,j,N,T){var E={},_={},M={};return t.forEach(j,function(I){t.forEach(I,function(P,L){E[P]=P,_[P]=P,M[P]=L})}),t.forEach(j,function(I){var P=-1;t.forEach(I,function(L){var H=T(L);if(H.length){H=t.sortBy(H,function(B){return M[B]});for(var U=(H.length-1)/2,ee=Math.floor(U),z=Math.ceil(U);ee<=z;++ee){var Q=H[ee];_[L]===L&&Po.jsxs("div",{className:"px-4 py-2 shadow-md rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700 min-w-[120px]",children:[o.jsx(ru,{type:"target",position:wt.Top}),o.jsx("div",{className:"font-semibold text-white text-sm truncate max-w-[200px]",title:t.content,children:t.label}),o.jsx(ru,{type:"source",position:wt.Bottom})]}));TG.displayName="EntityNode";const EG=b.memo(({data:t})=>o.jsxs("div",{className:"px-3 py-2 shadow-md rounded-md bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700 min-w-[100px]",children:[o.jsx(ru,{type:"target",position:wt.Top}),o.jsx("div",{className:"font-medium text-white text-xs truncate max-w-[150px]",title:t.content,children:t.label}),o.jsx(ru,{type:"source",position:wt.Bottom})]}));EG.displayName="ParagraphNode";const aTe={entity:TG,paragraph:EG};function oTe(t,e){const n=new az.graphlib.Graph;n.setDefaultEdgeLabel(()=>({})),n.setGraph({rankdir:"TB",ranksep:100,nodesep:80});const r=[],s=[];return t.forEach(i=>{n.setNode(i.id,{width:150,height:50})}),e.forEach(i=>{n.setEdge(i.source,i.target)}),az.layout(n),t.forEach(i=>{const a=n.node(i.id);r.push({id:i.id,type:i.type,position:{x:a.x-75,y:a.y-25},data:{label:i.content.slice(0,20)+(i.content.length>20?"...":""),content:i.content}})}),e.forEach((i,a)=>{const l={id:`edge-${a}`,source:i.source,target:i.target,animated:t.length<=200&&i.weight>5,style:{strokeWidth:Math.min(i.weight/2,5),opacity:.6}};i.weight>10&&t.length<100&&(l.label=`${i.weight.toFixed(0)}`),s.push(l)}),{nodes:r,edges:s}}function lTe(){const t=Zi(),[e,n]=b.useState(!1),[r,s]=b.useState(null),[i,a]=b.useState(""),[l,c]=b.useState("all"),[d,h]=b.useState(50),[m,g]=b.useState("50"),[x,y]=b.useState(!1),[w,S]=b.useState(!0),[k,j]=b.useState(!1),[N,T]=b.useState(!1),[E,_,M]=yCe([]),[I,P,L]=bCe([]),[H,U]=b.useState(0),[ee,z]=b.useState(null),[Q,B]=b.useState(null),{toast:X}=fs(),J=b.useCallback(ne=>ne.type==="entity"?"#6366f1":ne.type==="paragraph"?"#10b981":"#6b7280",[]),G=b.useCallback(async(ne=!1)=>{try{if(!ne&&d>200){T(!0);return}n(!0);const[K,se]=await Promise.all([rTe(d,l),sTe()]);if(s(se),K.nodes.length===0){X({title:"提示",description:"知识库为空,请先导入知识数据"}),_([]),P([]);return}const{nodes:re,edges:oe}=oTe(K.nodes,K.edges);_(re),P(oe),U(re.length),se&&se.total_nodes>d&&X({title:"提示",description:`知识图谱包含 ${se.total_nodes} 个节点,当前显示 ${re.length} 个`}),X({title:"加载成功",description:`已加载 ${re.length} 个节点,${oe.length} 条边`})}catch(K){console.error("加载知识图谱失败:",K),X({title:"加载失败",description:K instanceof Error?K.message:"未知错误",variant:"destructive"})}finally{n(!1)}},[d,l,X]),R=b.useCallback(async()=>{if(!i.trim()){X({title:"提示",description:"请输入搜索关键词"});return}try{const ne=await iTe(i);if(ne.length===0){X({title:"未找到",description:"没有找到匹配的节点"});return}const K=new Set(ne.map(se=>se.id));_(se=>se.map(re=>({...re,style:{...re.style,opacity:K.has(re.id)?1:.3,filter:K.has(re.id)?"brightness(1.2)":"brightness(0.8)"}}))),X({title:"搜索完成",description:`找到 ${ne.length} 个匹配节点`})}catch(ne){console.error("搜索失败:",ne),X({title:"搜索失败",description:ne instanceof Error?ne.message:"未知错误",variant:"destructive"})}},[i,X]),ie=b.useCallback(()=>{_(ne=>ne.map(K=>({...K,style:{...K.style,opacity:1,filter:"brightness(1)"}})))},[]),W=b.useCallback(()=>{S(!1),j(!0),G()},[G]),q=b.useCallback(()=>{T(!1),setTimeout(()=>{G(!0)},0)},[G]),V=b.useCallback((ne,K)=>{E.find(re=>re.id===K.id)&&z({id:K.id,type:K.type,content:K.data.content})},[E]);b.useEffect(()=>{w||k&&G()},[d,l,w,k]);const te=b.useCallback((ne,K)=>{const se=E.find(Te=>Te.id===K.source),re=E.find(Te=>Te.id===K.target),oe=I.find(Te=>Te.id===K.id);se&&re&&oe&&B({source:{id:se.id,type:se.type,content:se.data.content},target:{id:re.id,type:re.type,content:re.data.content},edge:{source:K.source,target:K.target,weight:parseFloat(K.label||"0")}})},[E,I]);return o.jsxs("div",{className:"h-full flex flex-col",children:[o.jsxs("div",{className:"flex-shrink-0 p-4 border-b bg-background",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦知识库图谱"}),o.jsx("p",{className:"text-muted-foreground mt-1",children:"可视化知识实体与关系网络"})]}),r&&o.jsxs("div",{className:"flex gap-2 flex-wrap",children:[o.jsxs(Xn,{variant:"outline",className:"gap-1",children:[o.jsx(G3,{className:"h-3 w-3"}),"节点: ",r.total_nodes]}),o.jsxs(Xn,{variant:"outline",className:"gap-1",children:[o.jsx(gI,{className:"h-3 w-3"}),"边: ",r.total_edges]}),o.jsxs(Xn,{variant:"outline",className:"gap-1",children:[o.jsx(Oa,{className:"h-3 w-3"}),"实体: ",r.entity_nodes]}),o.jsxs(Xn,{variant:"outline",className:"gap-1",children:[o.jsx(Pl,{className:"h-3 w-3"}),"段落: ",r.paragraph_nodes]})]})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 mt-4",children:[o.jsxs("div",{className:"flex-1 flex gap-2",children:[o.jsx(ze,{placeholder:"搜索节点内容...",value:i,onChange:ne=>a(ne.target.value),onKeyDown:ne=>ne.key==="Enter"&&R(),className:"flex-1"}),o.jsx(he,{onClick:R,size:"sm",children:o.jsx(Ni,{className:"h-4 w-4"})}),o.jsx(he,{onClick:ie,variant:"outline",size:"sm",children:"重置"})]}),o.jsxs("div",{className:"flex gap-2",children:[o.jsxs(Vt,{value:l,onValueChange:ne=>c(ne),children:[o.jsx($t,{className:"w-[120px]",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部节点"}),o.jsx(De,{value:"entity",children:"仅实体"}),o.jsx(De,{value:"paragraph",children:"仅段落"})]})]}),o.jsxs(Vt,{value:d===1e4?"all":x?"custom":d.toString(),onValueChange:ne=>{ne==="custom"?(y(!0),g(d.toString())):ne==="all"?(y(!1),h(1e4)):(y(!1),h(Number(ne)))},children:[o.jsx($t,{className:"w-[120px]",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"50",children:"50 节点"}),o.jsx(De,{value:"100",children:"100 节点"}),o.jsx(De,{value:"200",children:"200 节点"}),o.jsx(De,{value:"500",children:"500 节点"}),o.jsx(De,{value:"1000",children:"1000 节点"}),o.jsx(De,{value:"all",children:"全部 (最多10000)"}),o.jsx(De,{value:"custom",children:"自定义..."})]})]}),x&&o.jsx(ze,{type:"number",min:"50",value:m,onChange:ne=>g(ne.target.value),onBlur:()=>{const ne=parseInt(m);!isNaN(ne)&&ne>=50?h(ne):(g("50"),h(50))},onKeyDown:ne=>{if(ne.key==="Enter"){const K=parseInt(m);!isNaN(K)&&K>=50?h(K):(g("50"),h(50))}},placeholder:"最少50个",className:"w-[120px]"}),o.jsx(he,{onClick:()=>G(),variant:"outline",size:"sm",disabled:e,children:o.jsx(Qs,{className:ve("h-4 w-4",e&&"animate-spin")})})]})]})]}),o.jsx("div",{className:"flex-1 relative",children:e?o.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:o.jsxs("div",{className:"text-center",children:[o.jsx(Qs,{className:"h-8 w-8 animate-spin mx-auto mb-2 text-muted-foreground"}),o.jsx("p",{className:"text-muted-foreground",children:"加载知识图谱中..."})]})}):E.length===0?o.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:o.jsxs("div",{className:"text-center",children:[o.jsx(G3,{className:"h-12 w-12 mx-auto mb-4 text-muted-foreground"}),o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"知识库为空"}),o.jsx("p",{className:"text-muted-foreground",children:"请先导入知识数据"})]})}):o.jsxs(iG,{nodes:E,edges:I,onNodesChange:M,onEdgesChange:L,onNodeClick:V,onEdgeClick:te,nodeTypes:aTe,fitView:!0,minZoom:.05,maxZoom:1.5,defaultViewport:{x:0,y:0,zoom:.5},elevateNodesOnSelect:H<=500,nodesDraggable:H<=1e3,attributionPosition:"bottom-left",children:[o.jsx(HCe,{variant:Ca.Dots,gap:12,size:1}),o.jsx(ICe,{}),H<=500&&o.jsx(_Ce,{nodeColor:J,nodeBorderRadius:8,pannable:!0,zoomable:!0}),o.jsxs(Wb,{position:"top-right",className:"bg-background/95 backdrop-blur-sm rounded-lg border p-3 shadow-lg",children:[o.jsx("div",{className:"text-sm font-semibold mb-2",children:"图例"}),o.jsxs("div",{className:"space-y-2 text-xs",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700"}),o.jsx("span",{children:"实体节点"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700"}),o.jsx("span",{children:"段落节点"})]}),H>200&&o.jsxs("div",{className:"mt-2 pt-2 border-t text-yellow-600 dark:text-yellow-500",children:[o.jsx("div",{className:"font-semibold",children:"性能模式"}),o.jsx("div",{children:"已禁用动画"}),H>500&&o.jsx("div",{children:"已禁用缩略图"})]})]})]})]})}),o.jsx(Dr,{open:!!ee,onOpenChange:ne=>!ne&&z(null),children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsx(kr,{children:o.jsx(Or,{children:"节点详情"})}),ee&&o.jsxs("div",{className:"space-y-4",children:[o.jsx("div",{className:"grid grid-cols-2 gap-4",children:o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"类型"}),o.jsx("div",{className:"mt-1",children:o.jsx(Xn,{variant:ee.type==="entity"?"default":"secondary",children:ee.type==="entity"?"🏷️ 实体":"📄 段落"})})]})}),o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"ID"}),o.jsx("code",{className:"mt-1 block p-2 bg-muted rounded text-xs break-all",children:ee.id})]}),o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"内容"}),o.jsx(wn,{className:"mt-1 h-40 p-3 bg-muted rounded",children:o.jsx("p",{className:"text-sm whitespace-pre-wrap",children:ee.content})})]})]})]})}),o.jsx(Dr,{open:!!Q,onOpenChange:ne=>!ne&&B(null),children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-hidden flex flex-col",children:[o.jsx(kr,{children:o.jsx(Or,{children:"边详情"})}),Q&&o.jsx(wn,{className:"flex-1 pr-4",children:o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-blue-50 dark:bg-blue-950 rounded border-2 border-blue-200 dark:border-blue-800",children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"源节点"}),o.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:Q.source.content}),o.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[Q.source.id.slice(0,40),"..."]})]}),o.jsx("div",{className:"text-2xl text-muted-foreground flex-shrink-0",children:"→"}),o.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-green-50 dark:bg-green-950 rounded border-2 border-green-200 dark:border-green-800",children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"目标节点"}),o.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:Q.target.content}),o.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[Q.target.id.slice(0,40),"..."]})]})]}),o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"权重"}),o.jsx("div",{className:"mt-1",children:o.jsx(Xn,{variant:"outline",className:"text-base font-mono",children:Q.edge.weight.toFixed(4)})})]})]})})]})}),o.jsx(Dn,{open:w,onOpenChange:S,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"加载知识图谱"}),o.jsxs(_n,{children:["知识图谱的动态展示会消耗较多系统资源。",o.jsx("br",{}),"确定要加载知识图谱吗?"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{onClick:()=>t({to:"/"}),children:"取消 (返回首页)"}),o.jsx(Mn,{onClick:W,children:"确认加载"})]})]})}),o.jsx(Dn,{open:N,onOpenChange:T,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"⚠️ 节点数量较多"}),o.jsx(_n,{asChild:!0,children:o.jsxs("div",{children:[o.jsxs("p",{children:["您正在尝试加载 ",o.jsx("strong",{className:"text-orange-600",children:d>=1e4?"全部 (最多10000个)":d})," 个节点。"]}),o.jsx("p",{className:"mt-4",children:"节点数量过多可能导致:"}),o.jsxs("ul",{className:"list-disc list-inside mt-2 space-y-1",children:[o.jsx("li",{children:"页面加载时间较长"}),o.jsx("li",{children:"浏览器卡顿或崩溃"}),o.jsx("li",{children:"系统资源占用过高"})]}),o.jsx("p",{className:"mt-4",children:"建议先选择较少的节点数量 (50-200 个)。"})]})})]}),o.jsxs(Tn,{children:[o.jsx(An,{onClick:()=>{T(!1),d>200&&(h(50),y(!1))},children:"取消"}),o.jsx(Mn,{onClick:q,className:"bg-orange-600 hover:bg-orange-700",children:"我了解风险,继续加载"})]})]})})]})}function mh(t,e,n){let r=n.initialDeps??[],s;function i(){var a,l,c,d;let h;n.key&&((a=n.debug)!=null&&a.call(n))&&(h=Date.now());const m=t();if(!(m.length!==r.length||m.some((y,w)=>r[w]!==y)))return s;r=m;let x;if(n.key&&((l=n.debug)!=null&&l.call(n))&&(x=Date.now()),s=e(...m),n.key&&((c=n.debug)!=null&&c.call(n))){const y=Math.round((Date.now()-h)*100)/100,w=Math.round((Date.now()-x)*100)/100,S=w/16,k=(j,N)=>{for(j=String(j);j.length{r=a},i}function oz(t,e){if(t===void 0)throw new Error("Unexpected undefined");return t}const cTe=(t,e)=>Math.abs(t-e)<1.01,uTe=(t,e,n)=>{let r;return function(...s){t.clearTimeout(r),r=t.setTimeout(()=>e.apply(this,s),n)}},lz=t=>{const{offsetWidth:e,offsetHeight:n}=t;return{width:e,height:n}},dTe=t=>t,hTe=t=>{const e=Math.max(t.startIndex-t.overscan,0),n=Math.min(t.endIndex+t.overscan,t.count-1),r=[];for(let s=e;s<=n;s++)r.push(s);return r},fTe=(t,e)=>{const n=t.scrollElement;if(!n)return;const r=t.targetWindow;if(!r)return;const s=a=>{const{width:l,height:c}=a;e({width:Math.round(l),height:Math.round(c)})};if(s(lz(n)),!r.ResizeObserver)return()=>{};const i=new r.ResizeObserver(a=>{const l=()=>{const c=a[0];if(c?.borderBoxSize){const d=c.borderBoxSize[0];if(d){s({width:d.inlineSize,height:d.blockSize});return}}s(lz(n))};t.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(l):l()});return i.observe(n,{box:"border-box"}),()=>{i.unobserve(n)}},cz={passive:!0},uz=typeof window>"u"?!0:"onscrollend"in window,mTe=(t,e)=>{const n=t.scrollElement;if(!n)return;const r=t.targetWindow;if(!r)return;let s=0;const i=t.options.useScrollendEvent&&uz?()=>{}:uTe(r,()=>{e(s,!1)},t.options.isScrollingResetDelay),a=h=>()=>{const{horizontal:m,isRtl:g}=t.options;s=m?n.scrollLeft*(g&&-1||1):n.scrollTop,i(),e(s,h)},l=a(!0),c=a(!1);c(),n.addEventListener("scroll",l,cz);const d=t.options.useScrollendEvent&&uz;return d&&n.addEventListener("scrollend",c,cz),()=>{n.removeEventListener("scroll",l),d&&n.removeEventListener("scrollend",c)}},pTe=(t,e,n)=>{if(e?.borderBoxSize){const r=e.borderBoxSize[0];if(r)return Math.round(r[n.options.horizontal?"inlineSize":"blockSize"])}return t[n.options.horizontal?"offsetWidth":"offsetHeight"]},gTe=(t,{adjustments:e=0,behavior:n},r)=>{var s,i;const a=t+e;(i=(s=r.scrollElement)==null?void 0:s.scrollTo)==null||i.call(s,{[r.options.horizontal?"left":"top"]:a,behavior:n})};class xTe{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.measurementsCache=[],this.itemSizeCache=new Map,this.pendingMeasuredCacheIndexes=[],this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.observer=(()=>{let n=null;const r=()=>n||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:n=new this.targetWindow.ResizeObserver(s=>{s.forEach(i=>{const a=()=>{this._measureElement(i.target,i)};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(a):a()})}));return{disconnect:()=>{var s;(s=r())==null||s.disconnect(),n=null},observe:s=>{var i;return(i=r())==null?void 0:i.observe(s,{box:"border-box"})},unobserve:s=>{var i;return(i=r())==null?void 0:i.unobserve(s)}}})(),this.range=null,this.setOptions=n=>{Object.entries(n).forEach(([r,s])=>{typeof s>"u"&&delete n[r]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:dTe,rangeExtractor:hTe,onChange:()=>{},measureElement:pTe,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,...n}},this.notify=n=>{var r,s;(s=(r=this.options).onChange)==null||s.call(r,this,n)},this.maybeNotify=mh(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),n=>{this.notify(n)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(n=>n()),this.unsubs=[],this.observer.disconnect(),this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var n;const r=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==r){if(this.cleanup(),!r){this.maybeNotify();return}this.scrollElement=r,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((n=this.scrollElement)==null?void 0:n.window)??null,this.elementsCache.forEach(s=>{this.observer.observe(s)}),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0}),this.unsubs.push(this.options.observeElementRect(this,s=>{this.scrollRect=s,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(s,i)=>{this.scrollAdjustments=0,this.scrollDirection=i?this.getScrollOffset()this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(n,r)=>{const s=new Map,i=new Map;for(let a=r-1;a>=0;a--){const l=n[a];if(s.has(l.lane))continue;const c=i.get(l.lane);if(c==null||l.end>c.end?i.set(l.lane,l):l.enda.end===l.end?a.index-l.index:a.end-l.end)[0]:void 0},this.getMeasurementOptions=mh(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled],(n,r,s,i,a)=>(this.pendingMeasuredCacheIndexes=[],{count:n,paddingStart:r,scrollMargin:s,getItemKey:i,enabled:a}),{key:!1}),this.getMeasurements=mh(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:n,paddingStart:r,scrollMargin:s,getItemKey:i,enabled:a},l)=>{if(!a)return this.measurementsCache=[],this.itemSizeCache.clear(),[];this.measurementsCache.length===0&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(h=>{this.itemSizeCache.set(h.key,h.size)}));const c=this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[];const d=this.measurementsCache.slice(0,c);for(let h=c;hthis.options.debug}),this.calculateRange=mh(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(n,r,s,i)=>this.range=n.length>0&&r>0?vTe({measurements:n,outerSize:r,scrollOffset:s,lanes:i}):null,{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=mh(()=>{let n=null,r=null;const s=this.calculateRange();return s&&(n=s.startIndex,r=s.endIndex),this.maybeNotify.updateDeps([this.isScrolling,n,r]),[this.options.rangeExtractor,this.options.overscan,this.options.count,n,r]},(n,r,s,i,a)=>i===null||a===null?[]:n({startIndex:i,endIndex:a,overscan:r,count:s}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=n=>{const r=this.options.indexAttribute,s=n.getAttribute(r);return s?parseInt(s,10):(console.warn(`Missing attribute name '${r}={index}' on measured element.`),-1)},this._measureElement=(n,r)=>{const s=this.indexFromElement(n),i=this.measurementsCache[s];if(!i)return;const a=i.key,l=this.elementsCache.get(a);l!==n&&(l&&this.observer.unobserve(l),this.observer.observe(n),this.elementsCache.set(a,n)),n.isConnected&&this.resizeItem(s,this.options.measureElement(n,r,this))},this.resizeItem=(n,r)=>{const s=this.measurementsCache[n];if(!s)return;const i=this.itemSizeCache.get(s.key)??s.size,a=r-i;a!==0&&((this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(s,a,this):s.start{if(!n){this.elementsCache.forEach((r,s)=>{r.isConnected||(this.observer.unobserve(r),this.elementsCache.delete(s))});return}this._measureElement(n,void 0)},this.getVirtualItems=mh(()=>[this.getVirtualIndexes(),this.getMeasurements()],(n,r)=>{const s=[];for(let i=0,a=n.length;ithis.options.debug}),this.getVirtualItemForOffset=n=>{const r=this.getMeasurements();if(r.length!==0)return oz(r[_G(0,r.length-1,s=>oz(r[s]).start,n)])},this.getOffsetForAlignment=(n,r,s=0)=>{const i=this.getSize(),a=this.getScrollOffset();r==="auto"&&(r=n>=a+i?"end":"start"),r==="center"?n+=(s-i)/2:r==="end"&&(n-=i);const l=this.getTotalSize()+this.options.scrollMargin-i;return Math.max(Math.min(l,n),0)},this.getOffsetForIndex=(n,r="auto")=>{n=Math.max(0,Math.min(n,this.options.count-1));const s=this.measurementsCache[n];if(!s)return;const i=this.getSize(),a=this.getScrollOffset();if(r==="auto")if(s.end>=a+i-this.options.scrollPaddingEnd)r="end";else if(s.start<=a+this.options.scrollPaddingStart)r="start";else return[a,r];const l=r==="end"?s.end+this.options.scrollPaddingEnd:s.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(l,r,s.size),r]},this.isDynamicMode=()=>this.elementsCache.size>0,this.scrollToOffset=(n,{align:r="start",behavior:s}={})=>{s==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getOffsetForAlignment(n,r),{adjustments:void 0,behavior:s})},this.scrollToIndex=(n,{align:r="auto",behavior:s}={})=>{s==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),n=Math.max(0,Math.min(n,this.options.count-1));let i=0;const a=10,l=d=>{if(!this.targetWindow)return;const h=this.getOffsetForIndex(n,d);if(!h){console.warn("Failed to get offset for index:",n);return}const[m,g]=h;this._scrollToOffset(m,{adjustments:void 0,behavior:s}),this.targetWindow.requestAnimationFrame(()=>{const x=this.getScrollOffset(),y=this.getOffsetForIndex(n,g);if(!y){console.warn("Failed to get offset for index:",n);return}cTe(y[0],x)||c(g)})},c=d=>{this.targetWindow&&(i++,il(d)):console.warn(`Failed to scroll to index ${n} after ${a} attempts.`))};l(r)},this.scrollBy=(n,{behavior:r}={})=>{r==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getScrollOffset()+n,{adjustments:void 0,behavior:r})},this.getTotalSize=()=>{var n;const r=this.getMeasurements();let s;if(r.length===0)s=this.options.paddingStart;else if(this.options.lanes===1)s=((n=r[r.length-1])==null?void 0:n.end)??0;else{const i=Array(this.options.lanes).fill(null);let a=r.length-1;for(;a>=0&&i.some(l=>l===null);){const l=r[a];i[l.lane]===null&&(i[l.lane]=l.end),a--}s=Math.max(...i.filter(l=>l!==null))}return Math.max(s-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(n,{adjustments:r,behavior:s})=>{this.options.scrollToFn(n,{behavior:s,adjustments:r},this)},this.measure=()=>{this.itemSizeCache=new Map,this.notify(!1)},this.setOptions(e)}}const _G=(t,e,n,r)=>{for(;t<=e;){const s=(t+e)/2|0,i=n(s);if(ir)e=s-1;else return s}return t>0?t-1:0};function vTe({measurements:t,outerSize:e,scrollOffset:n,lanes:r}){const s=t.length-1,i=c=>t[c].start;if(t.length<=r)return{startIndex:0,endIndex:s};let a=_G(0,s,i,n),l=a;if(r===1)for(;l1){const c=Array(r).fill(0);for(;lh=0&&d.some(h=>h>=n);){const h=t[a];d[h.lane]=h.start,a--}a=Math.max(0,a-a%r),l=Math.min(s,l+(r-1-l%r))}return{startIndex:a,endIndex:l}}const dz=typeof document<"u"?b.useLayoutEffect:b.useEffect;function yTe(t){const e=b.useReducer(()=>({}),{})[1],n={...t,onChange:(s,i)=>{var a;i?pa.flushSync(e):e(),(a=t.onChange)==null||a.call(t,s,i)}},[r]=b.useState(()=>new xTe(n));return r.setOptions(n),dz(()=>r._didMount(),[]),dz(()=>r._willUpdate()),r}function bTe(t){return yTe({observeElementRect:fTe,observeElementOffset:mTe,scrollToFn:gTe,...t})}function wTe(t,e,n="long"){return new Intl.DateTimeFormat("en-US",{hour:"numeric",timeZone:t,timeZoneName:n}).format(e).split(/\s/g).slice(2).join(" ")}const STe={},f0={};function Gu(t,e){try{const r=(STe[t]||=new Intl.DateTimeFormat("en-US",{timeZone:t,timeZoneName:"longOffset"}).format)(e).split("GMT")[1];return r in f0?f0[r]:hz(r,r.split(":"))}catch{if(t in f0)return f0[t];const n=t?.match(kTe);return n?hz(t,n.slice(1)):NaN}}const kTe=/([+-]\d\d):?(\d\d)?/;function hz(t,e){const n=+(e[0]||0),r=+(e[1]||0),s=+(e[2]||0)/60;return f0[t]=n*60+r>0?n*60+r+s:n*60-r-s}class Ao extends Date{constructor(...e){super(),e.length>1&&typeof e[e.length-1]=="string"&&(this.timeZone=e.pop()),this.internal=new Date,isNaN(Gu(this.timeZone,this))?this.setTime(NaN):e.length?typeof e[0]=="number"&&(e.length===1||e.length===2&&typeof e[1]!="number")?this.setTime(e[0]):typeof e[0]=="string"?this.setTime(+new Date(e[0])):e[0]instanceof Date?this.setTime(+e[0]):(this.setTime(+new Date(...e)),MG(this),nj(this)):this.setTime(Date.now())}static tz(e,...n){return n.length?new Ao(...n,e):new Ao(Date.now(),e)}withTimeZone(e){return new Ao(+this,e)}getTimezoneOffset(){const e=-Gu(this.timeZone,this);return e>0?Math.floor(e):Math.ceil(e)}setTime(e){return Date.prototype.setTime.apply(this,arguments),nj(this),+this}[Symbol.for("constructDateFrom")](e){return new Ao(+new Date(e),this.timeZone)}}const fz=/^(get|set)(?!UTC)/;Object.getOwnPropertyNames(Date.prototype).forEach(t=>{if(!fz.test(t))return;const e=t.replace(fz,"$1UTC");Ao.prototype[e]&&(t.startsWith("get")?Ao.prototype[t]=function(){return this.internal[e]()}:(Ao.prototype[t]=function(){return Date.prototype[e].apply(this.internal,arguments),OTe(this),+this},Ao.prototype[e]=function(){return Date.prototype[e].apply(this,arguments),nj(this),+this}))});function nj(t){t.internal.setTime(+t),t.internal.setUTCSeconds(t.internal.getUTCSeconds()-Math.round(-Gu(t.timeZone,t)*60))}function OTe(t){Date.prototype.setFullYear.call(t,t.internal.getUTCFullYear(),t.internal.getUTCMonth(),t.internal.getUTCDate()),Date.prototype.setHours.call(t,t.internal.getUTCHours(),t.internal.getUTCMinutes(),t.internal.getUTCSeconds(),t.internal.getUTCMilliseconds()),MG(t)}function MG(t){const e=Gu(t.timeZone,t),n=e>0?Math.floor(e):Math.ceil(e),r=new Date(+t);r.setUTCHours(r.getUTCHours()-1);const s=-new Date(+t).getTimezoneOffset(),i=-new Date(+r).getTimezoneOffset(),a=s-i,l=Date.prototype.getHours.apply(t)!==t.internal.getUTCHours();a&&l&&t.internal.setUTCMinutes(t.internal.getUTCMinutes()+a);const c=s-n;c&&Date.prototype.setUTCMinutes.call(t,Date.prototype.getUTCMinutes.call(t)+c);const d=new Date(+t);d.setUTCSeconds(0);const h=s>0?d.getSeconds():(d.getSeconds()-60)%60,m=Math.round(-(Gu(t.timeZone,t)*60))%60;(m||h)&&(t.internal.setUTCSeconds(t.internal.getUTCSeconds()+m),Date.prototype.setUTCSeconds.call(t,Date.prototype.getUTCSeconds.call(t)+m+h));const g=Gu(t.timeZone,t),x=g>0?Math.floor(g):Math.ceil(g),w=-new Date(+t).getTimezoneOffset()-x,S=x!==n,k=w-c;if(S&&k){Date.prototype.setUTCMinutes.call(t,Date.prototype.getUTCMinutes.call(t)+k);const j=Gu(t.timeZone,t),N=j>0?Math.floor(j):Math.ceil(j),T=x-N;T&&(t.internal.setUTCMinutes(t.internal.getUTCMinutes()+T),Date.prototype.setUTCMinutes.call(t,Date.prototype.getUTCMinutes.call(t)+T))}}class Ls extends Ao{static tz(e,...n){return n.length?new Ls(...n,e):new Ls(Date.now(),e)}toISOString(){const[e,n,r]=this.tzComponents(),s=`${e}${n}:${r}`;return this.internal.toISOString().slice(0,-1)+s}toString(){return`${this.toDateString()} ${this.toTimeString()}`}toDateString(){const[e,n,r,s]=this.internal.toUTCString().split(" ");return`${e?.slice(0,-1)} ${r} ${n} ${s}`}toTimeString(){const e=this.internal.toUTCString().split(" ")[4],[n,r,s]=this.tzComponents();return`${e} GMT${n}${r}${s} (${wTe(this.timeZone,this)})`}toLocaleString(e,n){return Date.prototype.toLocaleString.call(this,e,{...n,timeZone:n?.timeZone||this.timeZone})}toLocaleDateString(e,n){return Date.prototype.toLocaleDateString.call(this,e,{...n,timeZone:n?.timeZone||this.timeZone})}toLocaleTimeString(e,n){return Date.prototype.toLocaleTimeString.call(this,e,{...n,timeZone:n?.timeZone||this.timeZone})}tzComponents(){const e=this.getTimezoneOffset(),n=e>0?"-":"+",r=String(Math.floor(Math.abs(e)/60)).padStart(2,"0"),s=String(Math.abs(e)%60).padStart(2,"0");return[n,r,s]}withTimeZone(e){return new Ls(+this,e)}[Symbol.for("constructDateFrom")](e){return new Ls(+new Date(e),this.timeZone)}}const AG=6048e5,jTe=864e5,mz=Symbol.for("constructDateFrom");function is(t,e){return typeof t=="function"?t(e):t&&typeof t=="object"&&mz in t?t[mz](e):t instanceof Date?new t.constructor(e):new Date(e)}function tr(t,e){return is(e||t,t)}function RG(t,e,n){const r=tr(t,n?.in);return isNaN(e)?is(t,NaN):(e&&r.setDate(r.getDate()+e),r)}function DG(t,e,n){const r=tr(t,n?.in);if(isNaN(e))return is(t,NaN);if(!e)return r;const s=r.getDate(),i=is(t,r.getTime());i.setMonth(r.getMonth()+e+1,0);const a=i.getDate();return s>=a?i:(r.setFullYear(i.getFullYear(),i.getMonth(),s),r)}let NTe={};function xg(){return NTe}function su(t,e){const n=xg(),r=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,s=tr(t,e?.in),i=s.getDay(),a=(i=i.getTime()?r+1:n.getTime()>=l.getTime()?r:r-1}function pz(t){const e=tr(t),n=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return n.setUTCFullYear(e.getFullYear()),+t-+n}function Od(t,...e){const n=is.bind(null,t||e.find(r=>typeof r=="object"));return e.map(n)}function Sp(t,e){const n=tr(t,e?.in);return n.setHours(0,0,0,0),n}function zG(t,e,n){const[r,s]=Od(n?.in,t,e),i=Sp(r),a=Sp(s),l=+i-pz(i),c=+a-pz(a);return Math.round((l-c)/jTe)}function CTe(t,e){const n=PG(t,e),r=is(t,0);return r.setFullYear(n,0,4),r.setHours(0,0,0,0),wp(r)}function TTe(t,e,n){return RG(t,e*7,n)}function ETe(t,e,n){return DG(t,e*12,n)}function _Te(t,e){let n,r=e?.in;return t.forEach(s=>{!r&&typeof s=="object"&&(r=is.bind(null,s));const i=tr(s,r);(!n||n{!r&&typeof s=="object"&&(r=is.bind(null,s));const i=tr(s,r);(!n||n>i||isNaN(+i))&&(n=i)}),is(r,n||NaN)}function ATe(t,e,n){const[r,s]=Od(n?.in,t,e);return+Sp(r)==+Sp(s)}function IG(t){return t instanceof Date||typeof t=="object"&&Object.prototype.toString.call(t)==="[object Date]"}function RTe(t){return!(!IG(t)&&typeof t!="number"||isNaN(+tr(t)))}function DTe(t,e,n){const[r,s]=Od(n?.in,t,e),i=r.getFullYear()-s.getFullYear(),a=r.getMonth()-s.getMonth();return i*12+a}function PTe(t,e){const n=tr(t,e?.in),r=n.getMonth();return n.setFullYear(n.getFullYear(),r+1,0),n.setHours(23,59,59,999),n}function LG(t,e){const[n,r]=Od(t,e.start,e.end);return{start:n,end:r}}function zTe(t,e){const{start:n,end:r}=LG(e?.in,t);let s=+n>+r;const i=s?+n:+r,a=s?r:n;a.setHours(0,0,0,0),a.setDate(1);let l=1;const c=[];for(;+a<=i;)c.push(is(n,a)),a.setMonth(a.getMonth()+l);return s?c.reverse():c}function ITe(t,e){const n=tr(t,e?.in);return n.setDate(1),n.setHours(0,0,0,0),n}function LTe(t,e){const n=tr(t,e?.in),r=n.getFullYear();return n.setFullYear(r+1,0,0),n.setHours(23,59,59,999),n}function BG(t,e){const n=tr(t,e?.in);return n.setFullYear(n.getFullYear(),0,1),n.setHours(0,0,0,0),n}function BTe(t,e){const{start:n,end:r}=LG(e?.in,t);let s=+n>+r;const i=s?+n:+r,a=s?r:n;a.setHours(0,0,0,0),a.setMonth(0,1);let l=1;const c=[];for(;+a<=i;)c.push(is(n,a)),a.setFullYear(a.getFullYear()+l);return s?c.reverse():c}function FG(t,e){const n=xg(),r=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,s=tr(t,e?.in),i=s.getDay(),a=(i{let r;const s=qTe[t];return typeof s=="string"?r=s:e===1?r=s.one:r=s.other.replace("{{count}}",e.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"in "+r:r+" ago":r};function Vh(t){return(e={})=>{const n=e.width?String(e.width):t.defaultWidth;return t.formats[n]||t.formats[t.defaultWidth]}}const HTe={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},QTe={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},VTe={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},UTe={date:Vh({formats:HTe,defaultWidth:"full"}),time:Vh({formats:QTe,defaultWidth:"full"}),dateTime:Vh({formats:VTe,defaultWidth:"full"})},WTe={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},GTe=(t,e,n,r)=>WTe[t];function ko(t){return(e,n)=>{const r=n?.context?String(n.context):"standalone";let s;if(r==="formatting"&&t.formattingValues){const a=t.defaultFormattingWidth||t.defaultWidth,l=n?.width?String(n.width):a;s=t.formattingValues[l]||t.formattingValues[a]}else{const a=t.defaultWidth,l=n?.width?String(n.width):t.defaultWidth;s=t.values[l]||t.values[a]}const i=t.argumentCallback?t.argumentCallback(e):e;return s[i]}}const XTe={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},YTe={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},KTe={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},ZTe={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},JTe={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},e9e={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},t9e=(t,e)=>{const n=Number(t),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},n9e={ordinalNumber:t9e,era:ko({values:XTe,defaultWidth:"wide"}),quarter:ko({values:YTe,defaultWidth:"wide",argumentCallback:t=>t-1}),month:ko({values:KTe,defaultWidth:"wide"}),day:ko({values:ZTe,defaultWidth:"wide"}),dayPeriod:ko({values:JTe,defaultWidth:"wide",formattingValues:e9e,defaultFormattingWidth:"wide"})};function Oo(t){return(e,n={})=>{const r=n.width,s=r&&t.matchPatterns[r]||t.matchPatterns[t.defaultMatchWidth],i=e.match(s);if(!i)return null;const a=i[0],l=r&&t.parsePatterns[r]||t.parsePatterns[t.defaultParseWidth],c=Array.isArray(l)?s9e(l,m=>m.test(a)):r9e(l,m=>m.test(a));let d;d=t.valueCallback?t.valueCallback(c):c,d=n.valueCallback?n.valueCallback(d):d;const h=e.slice(a.length);return{value:d,rest:h}}}function r9e(t,e){for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&e(t[n]))return n}function s9e(t,e){for(let n=0;n{const r=e.match(t.matchPattern);if(!r)return null;const s=r[0],i=e.match(t.parsePattern);if(!i)return null;let a=t.valueCallback?t.valueCallback(i[0]):i[0];a=n.valueCallback?n.valueCallback(a):a;const l=e.slice(s.length);return{value:a,rest:l}}}const i9e=/^(\d+)(th|st|nd|rd)?/i,a9e=/\d+/i,o9e={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},l9e={any:[/^b/i,/^(a|c)/i]},c9e={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},u9e={any:[/1/i,/2/i,/3/i,/4/i]},d9e={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},h9e={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},f9e={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},m9e={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},p9e={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},g9e={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},x9e={ordinalNumber:qG({matchPattern:i9e,parsePattern:a9e,valueCallback:t=>parseInt(t,10)}),era:Oo({matchPatterns:o9e,defaultMatchWidth:"wide",parsePatterns:l9e,defaultParseWidth:"any"}),quarter:Oo({matchPatterns:c9e,defaultMatchWidth:"wide",parsePatterns:u9e,defaultParseWidth:"any",valueCallback:t=>t+1}),month:Oo({matchPatterns:d9e,defaultMatchWidth:"wide",parsePatterns:h9e,defaultParseWidth:"any"}),day:Oo({matchPatterns:f9e,defaultMatchWidth:"wide",parsePatterns:m9e,defaultParseWidth:"any"}),dayPeriod:Oo({matchPatterns:p9e,defaultMatchWidth:"any",parsePatterns:g9e,defaultParseWidth:"any"})},i7={code:"en-US",formatDistance:$Te,formatLong:UTe,formatRelative:GTe,localize:n9e,match:x9e,options:{weekStartsOn:0,firstWeekContainsDate:1}};function v9e(t,e){const n=tr(t,e?.in);return zG(n,BG(n))+1}function $G(t,e){const n=tr(t,e?.in),r=+wp(n)-+CTe(n);return Math.round(r/AG)+1}function HG(t,e){const n=tr(t,e?.in),r=n.getFullYear(),s=xg(),i=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??s.firstWeekContainsDate??s.locale?.options?.firstWeekContainsDate??1,a=is(e?.in||t,0);a.setFullYear(r+1,0,i),a.setHours(0,0,0,0);const l=su(a,e),c=is(e?.in||t,0);c.setFullYear(r,0,i),c.setHours(0,0,0,0);const d=su(c,e);return+n>=+l?r+1:+n>=+d?r:r-1}function y9e(t,e){const n=xg(),r=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,s=HG(t,e),i=is(e?.in||t,0);return i.setFullYear(s,0,r),i.setHours(0,0,0,0),su(i,e)}function QG(t,e){const n=tr(t,e?.in),r=+su(n,e)-+y9e(n,e);return Math.round(r/AG)+1}function Wn(t,e){const n=t<0?"-":"",r=Math.abs(t).toString().padStart(e,"0");return n+r}const Ec={y(t,e){const n=t.getFullYear(),r=n>0?n:1-n;return Wn(e==="yy"?r%100:r,e.length)},M(t,e){const n=t.getMonth();return e==="M"?String(n+1):Wn(n+1,2)},d(t,e){return Wn(t.getDate(),e.length)},a(t,e){const n=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];case"aaaa":default:return n==="am"?"a.m.":"p.m."}},h(t,e){return Wn(t.getHours()%12||12,e.length)},H(t,e){return Wn(t.getHours(),e.length)},m(t,e){return Wn(t.getMinutes(),e.length)},s(t,e){return Wn(t.getSeconds(),e.length)},S(t,e){const n=e.length,r=t.getMilliseconds(),s=Math.trunc(r*Math.pow(10,n-3));return Wn(s,e.length)}},ph={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},gz={G:function(t,e,n){const r=t.getFullYear()>0?1:0;switch(e){case"G":case"GG":case"GGG":return n.era(r,{width:"abbreviated"});case"GGGGG":return n.era(r,{width:"narrow"});case"GGGG":default:return n.era(r,{width:"wide"})}},y:function(t,e,n){if(e==="yo"){const r=t.getFullYear(),s=r>0?r:1-r;return n.ordinalNumber(s,{unit:"year"})}return Ec.y(t,e)},Y:function(t,e,n,r){const s=HG(t,r),i=s>0?s:1-s;if(e==="YY"){const a=i%100;return Wn(a,2)}return e==="Yo"?n.ordinalNumber(i,{unit:"year"}):Wn(i,e.length)},R:function(t,e){const n=PG(t);return Wn(n,e.length)},u:function(t,e){const n=t.getFullYear();return Wn(n,e.length)},Q:function(t,e,n){const r=Math.ceil((t.getMonth()+1)/3);switch(e){case"Q":return String(r);case"QQ":return Wn(r,2);case"Qo":return n.ordinalNumber(r,{unit:"quarter"});case"QQQ":return n.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(r,{width:"narrow",context:"formatting"});case"QQQQ":default:return n.quarter(r,{width:"wide",context:"formatting"})}},q:function(t,e,n){const r=Math.ceil((t.getMonth()+1)/3);switch(e){case"q":return String(r);case"qq":return Wn(r,2);case"qo":return n.ordinalNumber(r,{unit:"quarter"});case"qqq":return n.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(r,{width:"narrow",context:"standalone"});case"qqqq":default:return n.quarter(r,{width:"wide",context:"standalone"})}},M:function(t,e,n){const r=t.getMonth();switch(e){case"M":case"MM":return Ec.M(t,e);case"Mo":return n.ordinalNumber(r+1,{unit:"month"});case"MMM":return n.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(r,{width:"narrow",context:"formatting"});case"MMMM":default:return n.month(r,{width:"wide",context:"formatting"})}},L:function(t,e,n){const r=t.getMonth();switch(e){case"L":return String(r+1);case"LL":return Wn(r+1,2);case"Lo":return n.ordinalNumber(r+1,{unit:"month"});case"LLL":return n.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(r,{width:"narrow",context:"standalone"});case"LLLL":default:return n.month(r,{width:"wide",context:"standalone"})}},w:function(t,e,n,r){const s=QG(t,r);return e==="wo"?n.ordinalNumber(s,{unit:"week"}):Wn(s,e.length)},I:function(t,e,n){const r=$G(t);return e==="Io"?n.ordinalNumber(r,{unit:"week"}):Wn(r,e.length)},d:function(t,e,n){return e==="do"?n.ordinalNumber(t.getDate(),{unit:"date"}):Ec.d(t,e)},D:function(t,e,n){const r=v9e(t);return e==="Do"?n.ordinalNumber(r,{unit:"dayOfYear"}):Wn(r,e.length)},E:function(t,e,n){const r=t.getDay();switch(e){case"E":case"EE":case"EEE":return n.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(r,{width:"short",context:"formatting"});case"EEEE":default:return n.day(r,{width:"wide",context:"formatting"})}},e:function(t,e,n,r){const s=t.getDay(),i=(s-r.weekStartsOn+8)%7||7;switch(e){case"e":return String(i);case"ee":return Wn(i,2);case"eo":return n.ordinalNumber(i,{unit:"day"});case"eee":return n.day(s,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(s,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(s,{width:"short",context:"formatting"});case"eeee":default:return n.day(s,{width:"wide",context:"formatting"})}},c:function(t,e,n,r){const s=t.getDay(),i=(s-r.weekStartsOn+8)%7||7;switch(e){case"c":return String(i);case"cc":return Wn(i,e.length);case"co":return n.ordinalNumber(i,{unit:"day"});case"ccc":return n.day(s,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(s,{width:"narrow",context:"standalone"});case"cccccc":return n.day(s,{width:"short",context:"standalone"});case"cccc":default:return n.day(s,{width:"wide",context:"standalone"})}},i:function(t,e,n){const r=t.getDay(),s=r===0?7:r;switch(e){case"i":return String(s);case"ii":return Wn(s,e.length);case"io":return n.ordinalNumber(s,{unit:"day"});case"iii":return n.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(r,{width:"short",context:"formatting"});case"iiii":default:return n.day(r,{width:"wide",context:"formatting"})}},a:function(t,e,n){const s=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"aaaa":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},b:function(t,e,n){const r=t.getHours();let s;switch(r===12?s=ph.noon:r===0?s=ph.midnight:s=r/12>=1?"pm":"am",e){case"b":case"bb":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"bbbb":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},B:function(t,e,n){const r=t.getHours();let s;switch(r>=17?s=ph.evening:r>=12?s=ph.afternoon:r>=4?s=ph.morning:s=ph.night,e){case"B":case"BB":case"BBB":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"BBBB":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},h:function(t,e,n){if(e==="ho"){let r=t.getHours()%12;return r===0&&(r=12),n.ordinalNumber(r,{unit:"hour"})}return Ec.h(t,e)},H:function(t,e,n){return e==="Ho"?n.ordinalNumber(t.getHours(),{unit:"hour"}):Ec.H(t,e)},K:function(t,e,n){const r=t.getHours()%12;return e==="Ko"?n.ordinalNumber(r,{unit:"hour"}):Wn(r,e.length)},k:function(t,e,n){let r=t.getHours();return r===0&&(r=24),e==="ko"?n.ordinalNumber(r,{unit:"hour"}):Wn(r,e.length)},m:function(t,e,n){return e==="mo"?n.ordinalNumber(t.getMinutes(),{unit:"minute"}):Ec.m(t,e)},s:function(t,e,n){return e==="so"?n.ordinalNumber(t.getSeconds(),{unit:"second"}):Ec.s(t,e)},S:function(t,e){return Ec.S(t,e)},X:function(t,e,n){const r=t.getTimezoneOffset();if(r===0)return"Z";switch(e){case"X":return vz(r);case"XXXX":case"XX":return Bu(r);case"XXXXX":case"XXX":default:return Bu(r,":")}},x:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"x":return vz(r);case"xxxx":case"xx":return Bu(r);case"xxxxx":case"xxx":default:return Bu(r,":")}},O:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"O":case"OO":case"OOO":return"GMT"+xz(r,":");case"OOOO":default:return"GMT"+Bu(r,":")}},z:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"z":case"zz":case"zzz":return"GMT"+xz(r,":");case"zzzz":default:return"GMT"+Bu(r,":")}},t:function(t,e,n){const r=Math.trunc(+t/1e3);return Wn(r,e.length)},T:function(t,e,n){return Wn(+t,e.length)}};function xz(t,e=""){const n=t>0?"-":"+",r=Math.abs(t),s=Math.trunc(r/60),i=r%60;return i===0?n+String(s):n+String(s)+e+Wn(i,2)}function vz(t,e){return t%60===0?(t>0?"-":"+")+Wn(Math.abs(t)/60,2):Bu(t,e)}function Bu(t,e=""){const n=t>0?"-":"+",r=Math.abs(t),s=Wn(Math.trunc(r/60),2),i=Wn(r%60,2);return n+s+e+i}const yz=(t,e)=>{switch(t){case"P":return e.date({width:"short"});case"PP":return e.date({width:"medium"});case"PPP":return e.date({width:"long"});case"PPPP":default:return e.date({width:"full"})}},VG=(t,e)=>{switch(t){case"p":return e.time({width:"short"});case"pp":return e.time({width:"medium"});case"ppp":return e.time({width:"long"});case"pppp":default:return e.time({width:"full"})}},b9e=(t,e)=>{const n=t.match(/(P+)(p+)?/)||[],r=n[1],s=n[2];if(!s)return yz(t,e);let i;switch(r){case"P":i=e.dateTime({width:"short"});break;case"PP":i=e.dateTime({width:"medium"});break;case"PPP":i=e.dateTime({width:"long"});break;case"PPPP":default:i=e.dateTime({width:"full"});break}return i.replace("{{date}}",yz(r,e)).replace("{{time}}",VG(s,e))},w9e={p:VG,P:b9e},S9e=/^D+$/,k9e=/^Y+$/,O9e=["D","DD","YY","YYYY"];function j9e(t){return S9e.test(t)}function N9e(t){return k9e.test(t)}function C9e(t,e,n){const r=T9e(t,e,n);if(console.warn(r),O9e.includes(t))throw new RangeError(r)}function T9e(t,e,n){const r=t[0]==="Y"?"years":"days of the month";return`Use \`${t.toLowerCase()}\` instead of \`${t}\` (in \`${e}\`) for formatting ${r} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}const E9e=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,_9e=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,M9e=/^'([^]*?)'?$/,A9e=/''/g,R9e=/[a-zA-Z]/;function Cv(t,e,n){const r=xg(),s=n?.locale??r.locale??i7,i=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,a=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,l=tr(t,n?.in);if(!RTe(l))throw new RangeError("Invalid time value");let c=e.match(_9e).map(h=>{const m=h[0];if(m==="p"||m==="P"){const g=w9e[m];return g(h,s.formatLong)}return h}).join("").match(E9e).map(h=>{if(h==="''")return{isToken:!1,value:"'"};const m=h[0];if(m==="'")return{isToken:!1,value:D9e(h)};if(gz[m])return{isToken:!0,value:h};if(m.match(R9e))throw new RangeError("Format string contains an unescaped latin alphabet character `"+m+"`");return{isToken:!1,value:h}});s.localize.preprocessor&&(c=s.localize.preprocessor(l,c));const d={firstWeekContainsDate:i,weekStartsOn:a,locale:s};return c.map(h=>{if(!h.isToken)return h.value;const m=h.value;(!n?.useAdditionalWeekYearTokens&&N9e(m)||!n?.useAdditionalDayOfYearTokens&&j9e(m))&&C9e(m,e,String(t));const g=gz[m[0]];return g(l,m,s.localize,d)}).join("")}function D9e(t){const e=t.match(M9e);return e?e[1].replace(A9e,"'"):t}function P9e(t,e){const n=tr(t,e?.in),r=n.getFullYear(),s=n.getMonth(),i=is(n,0);return i.setFullYear(r,s+1,0),i.setHours(0,0,0,0),i.getDate()}function z9e(t,e){return tr(t,e?.in).getMonth()}function I9e(t,e){return tr(t,e?.in).getFullYear()}function L9e(t,e){return+tr(t)>+tr(e)}function B9e(t,e){return+tr(t)<+tr(e)}function F9e(t,e,n){const[r,s]=Od(n?.in,t,e);return+su(r,n)==+su(s,n)}function q9e(t,e,n){const[r,s]=Od(n?.in,t,e);return r.getFullYear()===s.getFullYear()&&r.getMonth()===s.getMonth()}function $9e(t,e,n){const[r,s]=Od(n?.in,t,e);return r.getFullYear()===s.getFullYear()}function H9e(t,e,n){const r=tr(t,n?.in),s=r.getFullYear(),i=r.getDate(),a=is(t,0);a.setFullYear(s,e,15),a.setHours(0,0,0,0);const l=P9e(a);return r.setMonth(e,Math.min(i,l)),r}function Q9e(t,e,n){const r=tr(t,n?.in);return isNaN(+r)?is(t,NaN):(r.setFullYear(e),r)}const bz=5,V9e=4;function U9e(t,e){const n=e.startOfMonth(t),r=n.getDay()>0?n.getDay():7,s=e.addDays(t,-r+1),i=e.addDays(s,bz*7-1);return e.getMonth(t)===e.getMonth(i)?bz:V9e}function UG(t,e){const n=e.startOfMonth(t),r=n.getDay();return r===1?n:r===0?e.addDays(n,-6):e.addDays(n,-1*(r-1))}function W9e(t,e){const n=UG(t,e),r=U9e(t,e);return e.addDays(n,r*7-1)}class Ki{constructor(e,n){this.Date=Date,this.today=()=>this.overrides?.today?this.overrides.today():this.options.timeZone?Ls.tz(this.options.timeZone):new this.Date,this.newDate=(r,s,i)=>this.overrides?.newDate?this.overrides.newDate(r,s,i):this.options.timeZone?new Ls(r,s,i,this.options.timeZone):new Date(r,s,i),this.addDays=(r,s)=>this.overrides?.addDays?this.overrides.addDays(r,s):RG(r,s),this.addMonths=(r,s)=>this.overrides?.addMonths?this.overrides.addMonths(r,s):DG(r,s),this.addWeeks=(r,s)=>this.overrides?.addWeeks?this.overrides.addWeeks(r,s):TTe(r,s),this.addYears=(r,s)=>this.overrides?.addYears?this.overrides.addYears(r,s):ETe(r,s),this.differenceInCalendarDays=(r,s)=>this.overrides?.differenceInCalendarDays?this.overrides.differenceInCalendarDays(r,s):zG(r,s),this.differenceInCalendarMonths=(r,s)=>this.overrides?.differenceInCalendarMonths?this.overrides.differenceInCalendarMonths(r,s):DTe(r,s),this.eachMonthOfInterval=r=>this.overrides?.eachMonthOfInterval?this.overrides.eachMonthOfInterval(r):zTe(r),this.eachYearOfInterval=r=>{const s=this.overrides?.eachYearOfInterval?this.overrides.eachYearOfInterval(r):BTe(r),i=new Set(s.map(l=>this.getYear(l)));if(i.size===s.length)return s;const a=[];return i.forEach(l=>{a.push(new Date(l,0,1))}),a},this.endOfBroadcastWeek=r=>this.overrides?.endOfBroadcastWeek?this.overrides.endOfBroadcastWeek(r):W9e(r,this),this.endOfISOWeek=r=>this.overrides?.endOfISOWeek?this.overrides.endOfISOWeek(r):FTe(r),this.endOfMonth=r=>this.overrides?.endOfMonth?this.overrides.endOfMonth(r):PTe(r),this.endOfWeek=(r,s)=>this.overrides?.endOfWeek?this.overrides.endOfWeek(r,s):FG(r,this.options),this.endOfYear=r=>this.overrides?.endOfYear?this.overrides.endOfYear(r):LTe(r),this.format=(r,s,i)=>{const a=this.overrides?.format?this.overrides.format(r,s,this.options):Cv(r,s,this.options);return this.options.numerals&&this.options.numerals!=="latn"?this.replaceDigits(a):a},this.getISOWeek=r=>this.overrides?.getISOWeek?this.overrides.getISOWeek(r):$G(r),this.getMonth=(r,s)=>this.overrides?.getMonth?this.overrides.getMonth(r,this.options):z9e(r,this.options),this.getYear=(r,s)=>this.overrides?.getYear?this.overrides.getYear(r,this.options):I9e(r,this.options),this.getWeek=(r,s)=>this.overrides?.getWeek?this.overrides.getWeek(r,this.options):QG(r,this.options),this.isAfter=(r,s)=>this.overrides?.isAfter?this.overrides.isAfter(r,s):L9e(r,s),this.isBefore=(r,s)=>this.overrides?.isBefore?this.overrides.isBefore(r,s):B9e(r,s),this.isDate=r=>this.overrides?.isDate?this.overrides.isDate(r):IG(r),this.isSameDay=(r,s)=>this.overrides?.isSameDay?this.overrides.isSameDay(r,s):ATe(r,s),this.isSameMonth=(r,s)=>this.overrides?.isSameMonth?this.overrides.isSameMonth(r,s):q9e(r,s),this.isSameYear=(r,s)=>this.overrides?.isSameYear?this.overrides.isSameYear(r,s):$9e(r,s),this.max=r=>this.overrides?.max?this.overrides.max(r):_Te(r),this.min=r=>this.overrides?.min?this.overrides.min(r):MTe(r),this.setMonth=(r,s)=>this.overrides?.setMonth?this.overrides.setMonth(r,s):H9e(r,s),this.setYear=(r,s)=>this.overrides?.setYear?this.overrides.setYear(r,s):Q9e(r,s),this.startOfBroadcastWeek=(r,s)=>this.overrides?.startOfBroadcastWeek?this.overrides.startOfBroadcastWeek(r,this):UG(r,this),this.startOfDay=r=>this.overrides?.startOfDay?this.overrides.startOfDay(r):Sp(r),this.startOfISOWeek=r=>this.overrides?.startOfISOWeek?this.overrides.startOfISOWeek(r):wp(r),this.startOfMonth=r=>this.overrides?.startOfMonth?this.overrides.startOfMonth(r):ITe(r),this.startOfWeek=(r,s)=>this.overrides?.startOfWeek?this.overrides.startOfWeek(r,this.options):su(r,this.options),this.startOfYear=r=>this.overrides?.startOfYear?this.overrides.startOfYear(r):BG(r),this.options={locale:i7,...e},this.overrides=n}getDigitMap(){const{numerals:e="latn"}=this.options,n=new Intl.NumberFormat("en-US",{numberingSystem:e}),r={};for(let s=0;s<10;s++)r[s.toString()]=n.format(s);return r}replaceDigits(e){const n=this.getDigitMap();return e.replace(/\d/g,r=>n[r]||r)}formatNumber(e){return this.replaceDigits(e.toString())}getMonthYearOrder(){const e=this.options.locale?.code;return e&&Ki.yearFirstLocales.has(e)?"year-first":"month-first"}formatMonthYear(e){const{locale:n,timeZone:r,numerals:s}=this.options,i=n?.code;if(i&&Ki.yearFirstLocales.has(i))try{return new Intl.DateTimeFormat(i,{month:"long",year:"numeric",timeZone:r,numberingSystem:s}).format(e)}catch{}const a=this.getMonthYearOrder()==="year-first"?"y LLLL":"LLLL y";return this.format(e,a)}}Ki.yearFirstLocales=new Set(["eu","hu","ja","ja-Hira","ja-JP","ko","ko-KR","lt","lt-LT","lv","lv-LV","mn","mn-MN","zh","zh-CN","zh-HK","zh-TW"]);const Go=new Ki;class WG{constructor(e,n,r=Go){this.date=e,this.displayMonth=n,this.outside=!!(n&&!r.isSameMonth(e,n)),this.dateLib=r}isEqualTo(e){return this.dateLib.isSameDay(e.date,this.date)&&this.dateLib.isSameMonth(e.displayMonth,this.displayMonth)}}class G9e{constructor(e,n){this.date=e,this.weeks=n}}class X9e{constructor(e,n){this.days=n,this.weekNumber=e}}function Y9e(t){return ae.createElement("button",{...t})}function K9e(t){return ae.createElement("span",{...t})}function Z9e(t){const{size:e=24,orientation:n="left",className:r}=t;return ae.createElement("svg",{className:r,width:e,height:e,viewBox:"0 0 24 24"},n==="up"&&ae.createElement("polygon",{points:"6.77 17 12.5 11.43 18.24 17 20 15.28 12.5 8 5 15.28"}),n==="down"&&ae.createElement("polygon",{points:"6.77 8 12.5 13.57 18.24 8 20 9.72 12.5 17 5 9.72"}),n==="left"&&ae.createElement("polygon",{points:"16 18.112 9.81111111 12 16 5.87733333 14.0888889 4 6 12 14.0888889 20"}),n==="right"&&ae.createElement("polygon",{points:"8 18.112 14.18888889 12 8 5.87733333 9.91111111 4 18 12 9.91111111 20"}))}function J9e(t){const{day:e,modifiers:n,...r}=t;return ae.createElement("td",{...r})}function eEe(t){const{day:e,modifiers:n,...r}=t,s=ae.useRef(null);return ae.useEffect(()=>{n.focused&&s.current?.focus()},[n.focused]),ae.createElement("button",{ref:s,...r})}var jt;(function(t){t.Root="root",t.Chevron="chevron",t.Day="day",t.DayButton="day_button",t.CaptionLabel="caption_label",t.Dropdowns="dropdowns",t.Dropdown="dropdown",t.DropdownRoot="dropdown_root",t.Footer="footer",t.MonthGrid="month_grid",t.MonthCaption="month_caption",t.MonthsDropdown="months_dropdown",t.Month="month",t.Months="months",t.Nav="nav",t.NextMonthButton="button_next",t.PreviousMonthButton="button_previous",t.Week="week",t.Weeks="weeks",t.Weekday="weekday",t.Weekdays="weekdays",t.WeekNumber="week_number",t.WeekNumberHeader="week_number_header",t.YearsDropdown="years_dropdown"})(jt||(jt={}));var Mr;(function(t){t.disabled="disabled",t.hidden="hidden",t.outside="outside",t.focused="focused",t.today="today"})(Mr||(Mr={}));var Ua;(function(t){t.range_end="range_end",t.range_middle="range_middle",t.range_start="range_start",t.selected="selected"})(Ua||(Ua={}));var Hi;(function(t){t.weeks_before_enter="weeks_before_enter",t.weeks_before_exit="weeks_before_exit",t.weeks_after_enter="weeks_after_enter",t.weeks_after_exit="weeks_after_exit",t.caption_after_enter="caption_after_enter",t.caption_after_exit="caption_after_exit",t.caption_before_enter="caption_before_enter",t.caption_before_exit="caption_before_exit"})(Hi||(Hi={}));function tEe(t){const{options:e,className:n,components:r,classNames:s,...i}=t,a=[s[jt.Dropdown],n].join(" "),l=e?.find(({value:c})=>c===i.value);return ae.createElement("span",{"data-disabled":i.disabled,className:s[jt.DropdownRoot]},ae.createElement(r.Select,{className:a,...i},e?.map(({value:c,label:d,disabled:h})=>ae.createElement(r.Option,{key:c,value:c,disabled:h},d))),ae.createElement("span",{className:s[jt.CaptionLabel],"aria-hidden":!0},l?.label,ae.createElement(r.Chevron,{orientation:"down",size:18,className:s[jt.Chevron]})))}function nEe(t){return ae.createElement("div",{...t})}function rEe(t){return ae.createElement("div",{...t})}function sEe(t){const{calendarMonth:e,displayIndex:n,...r}=t;return ae.createElement("div",{...r},t.children)}function iEe(t){const{calendarMonth:e,displayIndex:n,...r}=t;return ae.createElement("div",{...r})}function aEe(t){return ae.createElement("table",{...t})}function oEe(t){return ae.createElement("div",{...t})}const GG=b.createContext(void 0);function vg(){const t=b.useContext(GG);if(t===void 0)throw new Error("useDayPicker() must be used within a custom component.");return t}function lEe(t){const{components:e}=vg();return ae.createElement(e.Dropdown,{...t})}function cEe(t){const{onPreviousClick:e,onNextClick:n,previousMonth:r,nextMonth:s,...i}=t,{components:a,classNames:l,labels:{labelPrevious:c,labelNext:d}}=vg(),h=b.useCallback(g=>{s&&n?.(g)},[s,n]),m=b.useCallback(g=>{r&&e?.(g)},[r,e]);return ae.createElement("nav",{...i},ae.createElement(a.PreviousMonthButton,{type:"button",className:l[jt.PreviousMonthButton],tabIndex:r?void 0:-1,"aria-disabled":r?void 0:!0,"aria-label":c(r),onClick:m},ae.createElement(a.Chevron,{disabled:r?void 0:!0,className:l[jt.Chevron],orientation:"left"})),ae.createElement(a.NextMonthButton,{type:"button",className:l[jt.NextMonthButton],tabIndex:s?void 0:-1,"aria-disabled":s?void 0:!0,"aria-label":d(s),onClick:h},ae.createElement(a.Chevron,{disabled:s?void 0:!0,orientation:"right",className:l[jt.Chevron]})))}function uEe(t){const{components:e}=vg();return ae.createElement(e.Button,{...t})}function dEe(t){return ae.createElement("option",{...t})}function hEe(t){const{components:e}=vg();return ae.createElement(e.Button,{...t})}function fEe(t){const{rootRef:e,...n}=t;return ae.createElement("div",{...n,ref:e})}function mEe(t){return ae.createElement("select",{...t})}function pEe(t){const{week:e,...n}=t;return ae.createElement("tr",{...n})}function gEe(t){return ae.createElement("th",{...t})}function xEe(t){return ae.createElement("thead",{"aria-hidden":!0},ae.createElement("tr",{...t}))}function vEe(t){const{week:e,...n}=t;return ae.createElement("th",{...n})}function yEe(t){return ae.createElement("th",{...t})}function bEe(t){return ae.createElement("tbody",{...t})}function wEe(t){const{components:e}=vg();return ae.createElement(e.Dropdown,{...t})}const SEe=Object.freeze(Object.defineProperty({__proto__:null,Button:Y9e,CaptionLabel:K9e,Chevron:Z9e,Day:J9e,DayButton:eEe,Dropdown:tEe,DropdownNav:nEe,Footer:rEe,Month:sEe,MonthCaption:iEe,MonthGrid:aEe,Months:oEe,MonthsDropdown:lEe,Nav:cEe,NextMonthButton:uEe,Option:dEe,PreviousMonthButton:hEe,Root:fEe,Select:mEe,Week:pEe,WeekNumber:vEe,WeekNumberHeader:yEe,Weekday:gEe,Weekdays:xEe,Weeks:bEe,YearsDropdown:wEe},Symbol.toStringTag,{value:"Module"}));function Rl(t,e,n=!1,r=Go){let{from:s,to:i}=t;const{differenceInCalendarDays:a,isSameDay:l}=r;return s&&i?(a(i,s)<0&&([s,i]=[i,s]),a(e,s)>=(n?1:0)&&a(i,e)>=(n?1:0)):!n&&i?l(i,e):!n&&s?l(s,e):!1}function XG(t){return!!(t&&typeof t=="object"&&"before"in t&&"after"in t)}function a7(t){return!!(t&&typeof t=="object"&&"from"in t)}function YG(t){return!!(t&&typeof t=="object"&&"after"in t)}function KG(t){return!!(t&&typeof t=="object"&&"before"in t)}function ZG(t){return!!(t&&typeof t=="object"&&"dayOfWeek"in t)}function JG(t,e){return Array.isArray(t)&&t.every(e.isDate)}function Dl(t,e,n=Go){const r=Array.isArray(e)?e:[e],{isSameDay:s,differenceInCalendarDays:i,isAfter:a}=n;return r.some(l=>{if(typeof l=="boolean")return l;if(n.isDate(l))return s(t,l);if(JG(l,n))return l.includes(t);if(a7(l))return Rl(l,t,!1,n);if(ZG(l))return Array.isArray(l.dayOfWeek)?l.dayOfWeek.includes(t.getDay()):l.dayOfWeek===t.getDay();if(XG(l)){const c=i(l.before,t),d=i(l.after,t),h=c>0,m=d<0;return a(l.before,l.after)?m&&h:h||m}return YG(l)?i(t,l.after)>0:KG(l)?i(l.before,t)>0:typeof l=="function"?l(t):!1})}function kEe(t,e,n,r,s){const{disabled:i,hidden:a,modifiers:l,showOutsideDays:c,broadcastCalendar:d,today:h}=e,{isSameDay:m,isSameMonth:g,startOfMonth:x,isBefore:y,endOfMonth:w,isAfter:S}=s,k=n&&x(n),j=r&&w(r),N={[Mr.focused]:[],[Mr.outside]:[],[Mr.disabled]:[],[Mr.hidden]:[],[Mr.today]:[]},T={};for(const E of t){const{date:_,displayMonth:M}=E,I=!!(M&&!g(_,M)),P=!!(k&&y(_,k)),L=!!(j&&S(_,j)),H=!!(i&&Dl(_,i,s)),U=!!(a&&Dl(_,a,s))||P||L||!d&&!c&&I||d&&c===!1&&I,ee=m(_,h??s.today());I&&N.outside.push(E),H&&N.disabled.push(E),U&&N.hidden.push(E),ee&&N.today.push(E),l&&Object.keys(l).forEach(z=>{const Q=l?.[z];Q&&Dl(_,Q,s)&&(T[z]?T[z].push(E):T[z]=[E])})}return E=>{const _={[Mr.focused]:!1,[Mr.disabled]:!1,[Mr.hidden]:!1,[Mr.outside]:!1,[Mr.today]:!1},M={};for(const I in N){const P=N[I];_[I]=P.some(L=>L===E)}for(const I in T)M[I]=T[I].some(P=>P===E);return{..._,...M}}}function OEe(t,e,n={}){return Object.entries(t).filter(([,s])=>s===!0).reduce((s,[i])=>(n[i]?s.push(n[i]):e[Mr[i]]?s.push(e[Mr[i]]):e[Ua[i]]&&s.push(e[Ua[i]]),s),[e[jt.Day]])}function jEe(t){return{...SEe,...t}}function NEe(t){const e={"data-mode":t.mode??void 0,"data-required":"required"in t?t.required:void 0,"data-multiple-months":t.numberOfMonths&&t.numberOfMonths>1||void 0,"data-week-numbers":t.showWeekNumber||void 0,"data-broadcast-calendar":t.broadcastCalendar||void 0,"data-nav-layout":t.navLayout||void 0};return Object.entries(t).forEach(([n,r])=>{n.startsWith("data-")&&(e[n]=r)}),e}function o7(){const t={};for(const e in jt)t[jt[e]]=`rdp-${jt[e]}`;for(const e in Mr)t[Mr[e]]=`rdp-${Mr[e]}`;for(const e in Ua)t[Ua[e]]=`rdp-${Ua[e]}`;for(const e in Hi)t[Hi[e]]=`rdp-${Hi[e]}`;return t}function eX(t,e,n){return(n??new Ki(e)).formatMonthYear(t)}const CEe=eX;function TEe(t,e,n){return(n??new Ki(e)).format(t,"d")}function EEe(t,e=Go){return e.format(t,"LLLL")}function _Ee(t,e,n){return(n??new Ki(e)).format(t,"cccccc")}function MEe(t,e=Go){return t<10?e.formatNumber(`0${t.toLocaleString()}`):e.formatNumber(`${t.toLocaleString()}`)}function AEe(){return""}function tX(t,e=Go){return e.format(t,"yyyy")}const REe=tX,DEe=Object.freeze(Object.defineProperty({__proto__:null,formatCaption:eX,formatDay:TEe,formatMonthCaption:CEe,formatMonthDropdown:EEe,formatWeekNumber:MEe,formatWeekNumberHeader:AEe,formatWeekdayName:_Ee,formatYearCaption:REe,formatYearDropdown:tX},Symbol.toStringTag,{value:"Module"}));function PEe(t){return t?.formatMonthCaption&&!t.formatCaption&&(t.formatCaption=t.formatMonthCaption),t?.formatYearCaption&&!t.formatYearDropdown&&(t.formatYearDropdown=t.formatYearCaption),{...DEe,...t}}function zEe(t,e,n,r,s){const{startOfMonth:i,startOfYear:a,endOfYear:l,eachMonthOfInterval:c,getMonth:d}=s;return c({start:a(t),end:l(t)}).map(g=>{const x=r.formatMonthDropdown(g,s),y=d(g),w=e&&gi(n)||!1;return{value:y,label:x,disabled:w}})}function IEe(t,e={},n={}){let r={...e?.[jt.Day]};return Object.entries(t).filter(([,s])=>s===!0).forEach(([s])=>{r={...r,...n?.[s]}}),r}function LEe(t,e,n){const r=t.today(),s=e?t.startOfISOWeek(r):t.startOfWeek(r),i=[];for(let a=0;a<7;a++){const l=t.addDays(s,a);i.push(l)}return i}function BEe(t,e,n,r,s=!1){if(!t||!e)return;const{startOfYear:i,endOfYear:a,eachYearOfInterval:l,getYear:c}=r,d=i(t),h=a(e),m=l({start:d,end:h});return s&&m.reverse(),m.map(g=>{const x=n.formatYearDropdown(g,r);return{value:c(g),label:x,disabled:!1}})}function nX(t,e,n,r){let s=(r??new Ki(n)).format(t,"PPPP");return e.today&&(s=`Today, ${s}`),e.selected&&(s=`${s}, selected`),s}const FEe=nX;function rX(t,e,n){return(n??new Ki(e)).formatMonthYear(t)}const qEe=rX;function $Ee(t,e,n,r){let s=(r??new Ki(n)).format(t,"PPPP");return e?.today&&(s=`Today, ${s}`),s}function HEe(t){return"Choose the Month"}function QEe(){return""}function VEe(t){return"Go to the Next Month"}function UEe(t){return"Go to the Previous Month"}function WEe(t,e,n){return(n??new Ki(e)).format(t,"cccc")}function GEe(t,e){return`Week ${t}`}function XEe(t){return"Week Number"}function YEe(t){return"Choose the Year"}const KEe=Object.freeze(Object.defineProperty({__proto__:null,labelCaption:qEe,labelDay:FEe,labelDayButton:nX,labelGrid:rX,labelGridcell:$Ee,labelMonthDropdown:HEe,labelNav:QEe,labelNext:VEe,labelPrevious:UEe,labelWeekNumber:GEe,labelWeekNumberHeader:XEe,labelWeekday:WEe,labelYearDropdown:YEe},Symbol.toStringTag,{value:"Module"})),yg=t=>t instanceof HTMLElement?t:null,Q3=t=>[...t.querySelectorAll("[data-animated-month]")??[]],ZEe=t=>yg(t.querySelector("[data-animated-month]")),V3=t=>yg(t.querySelector("[data-animated-caption]")),U3=t=>yg(t.querySelector("[data-animated-weeks]")),JEe=t=>yg(t.querySelector("[data-animated-nav]")),e_e=t=>yg(t.querySelector("[data-animated-weekdays]"));function t_e(t,e,{classNames:n,months:r,focused:s,dateLib:i}){const a=b.useRef(null),l=b.useRef(r),c=b.useRef(!1);b.useLayoutEffect(()=>{const d=l.current;if(l.current=r,!e||!t.current||!(t.current instanceof HTMLElement)||r.length===0||d.length===0||r.length!==d.length)return;const h=i.isSameMonth(r[0].date,d[0].date),m=i.isAfter(r[0].date,d[0].date),g=m?n[Hi.caption_after_enter]:n[Hi.caption_before_enter],x=m?n[Hi.weeks_after_enter]:n[Hi.weeks_before_enter],y=a.current,w=t.current.cloneNode(!0);if(w instanceof HTMLElement?(Q3(w).forEach(N=>{if(!(N instanceof HTMLElement))return;const T=ZEe(N);T&&N.contains(T)&&N.removeChild(T);const E=V3(N);E&&E.classList.remove(g);const _=U3(N);_&&_.classList.remove(x)}),a.current=w):a.current=null,c.current||h||s)return;const S=y instanceof HTMLElement?Q3(y):[],k=Q3(t.current);if(k?.every(j=>j instanceof HTMLElement)&&S&&S.every(j=>j instanceof HTMLElement)){c.current=!0,t.current.style.isolation="isolate";const j=JEe(t.current);j&&(j.style.zIndex="1"),k.forEach((N,T)=>{const E=S[T];if(!E)return;N.style.position="relative",N.style.overflow="hidden";const _=V3(N);_&&_.classList.add(g);const M=U3(N);M&&M.classList.add(x);const I=()=>{c.current=!1,t.current&&(t.current.style.isolation=""),j&&(j.style.zIndex=""),_&&_.classList.remove(g),M&&M.classList.remove(x),N.style.position="",N.style.overflow="",N.contains(E)&&N.removeChild(E)};E.style.pointerEvents="none",E.style.position="absolute",E.style.overflow="hidden",E.setAttribute("aria-hidden","true");const P=e_e(E);P&&(P.style.opacity="0");const L=V3(E);L&&(L.classList.add(m?n[Hi.caption_before_exit]:n[Hi.caption_after_exit]),L.addEventListener("animationend",I));const H=U3(E);H&&H.classList.add(m?n[Hi.weeks_before_exit]:n[Hi.weeks_after_exit]),N.insertBefore(E,N.firstChild)})}})}function n_e(t,e,n,r){const s=t[0],i=t[t.length-1],{ISOWeek:a,fixedWeeks:l,broadcastCalendar:c}=n??{},{addDays:d,differenceInCalendarDays:h,differenceInCalendarMonths:m,endOfBroadcastWeek:g,endOfISOWeek:x,endOfMonth:y,endOfWeek:w,isAfter:S,startOfBroadcastWeek:k,startOfISOWeek:j,startOfWeek:N}=r,T=c?k(s,r):a?j(s):N(s),E=c?g(i):a?x(y(i)):w(y(i)),_=h(E,T),M=m(i,s)+1,I=[];for(let H=0;H<=_;H++){const U=d(T,H);if(e&&S(U,e))break;I.push(U)}const L=(c?35:42)*M;if(l&&I.length{const s=r.weeks.reduce((i,a)=>i.concat(a.days.slice()),e.slice());return n.concat(s.slice())},e.slice())}function s_e(t,e,n,r){const{numberOfMonths:s=1}=n,i=[];for(let a=0;ae)break;i.push(l)}return i}function wz(t,e,n,r){const{month:s,defaultMonth:i,today:a=r.today(),numberOfMonths:l=1}=t;let c=s||i||a;const{differenceInCalendarMonths:d,addMonths:h,startOfMonth:m}=r;if(n&&d(n,c){const k=n.broadcastCalendar?m(S,r):n.ISOWeek?g(S):x(S),j=n.broadcastCalendar?i(S):n.ISOWeek?a(l(S)):c(l(S)),N=e.filter(M=>M>=k&&M<=j),T=n.broadcastCalendar?35:42;if(n.fixedWeeks&&N.length{const P=T-N.length;return I>j&&I<=s(j,P)});N.push(...M)}const E=N.reduce((M,I)=>{const P=n.ISOWeek?d(I):h(I),L=M.find(U=>U.weekNumber===P),H=new WG(I,S,r);return L?L.days.push(H):M.push(new X9e(P,[H])),M},[]),_=new G9e(S,E);return w.push(_),w},[]);return n.reverseMonths?y.reverse():y}function a_e(t,e){let{startMonth:n,endMonth:r}=t;const{startOfYear:s,startOfDay:i,startOfMonth:a,endOfMonth:l,addYears:c,endOfYear:d,newDate:h,today:m}=e,{fromYear:g,toYear:x,fromMonth:y,toMonth:w}=t;!n&&y&&(n=y),!n&&g&&(n=e.newDate(g,0,1)),!r&&w&&(r=w),!r&&x&&(r=h(x,11,31));const S=t.captionLayout==="dropdown"||t.captionLayout==="dropdown-years";return n?n=a(n):g?n=h(g,0,1):!n&&S&&(n=s(c(t.today??m(),-100))),r?r=l(r):x?r=h(x,11,31):!r&&S&&(r=d(t.today??m())),[n&&i(n),r&&i(r)]}function o_e(t,e,n,r){if(n.disableNavigation)return;const{pagedNavigation:s,numberOfMonths:i=1}=n,{startOfMonth:a,addMonths:l,differenceInCalendarMonths:c}=r,d=s?i:1,h=a(t);if(!e)return l(h,d);if(!(c(e,t)n.concat(r.weeks.slice()),e.slice())}function Yb(t,e){const[n,r]=b.useState(t);return[e===void 0?n:e,r]}function u_e(t,e){const[n,r]=a_e(t,e),{startOfMonth:s,endOfMonth:i}=e,a=wz(t,n,r,e),[l,c]=Yb(a,t.month?a:void 0);b.useEffect(()=>{const _=wz(t,n,r,e);c(_)},[t.timeZone]);const d=s_e(l,r,t,e),h=n_e(d,t.endMonth?i(t.endMonth):void 0,t,e),m=i_e(d,h,t,e),g=c_e(m),x=r_e(m),y=l_e(l,n,t,e),w=o_e(l,r,t,e),{disableNavigation:S,onMonthChange:k}=t,j=_=>g.some(M=>M.days.some(I=>I.isEqualTo(_))),N=_=>{if(S)return;let M=s(_);n&&Ms(r)&&(M=s(r)),c(M),k?.(M)};return{months:m,weeks:g,days:x,navStart:n,navEnd:r,previousMonth:y,nextMonth:w,goToMonth:N,goToDay:_=>{j(_)||N(_.date)}}}var xo;(function(t){t[t.Today=0]="Today",t[t.Selected=1]="Selected",t[t.LastFocused=2]="LastFocused",t[t.FocusedModifier=3]="FocusedModifier"})(xo||(xo={}));function Sz(t){return!t[Mr.disabled]&&!t[Mr.hidden]&&!t[Mr.outside]}function d_e(t,e,n,r){let s,i=-1;for(const a of t){const l=e(a);Sz(l)&&(l[Mr.focused]&&iSz(e(a)))),s}function h_e(t,e,n,r,s,i,a){const{ISOWeek:l,broadcastCalendar:c}=i,{addDays:d,addMonths:h,addWeeks:m,addYears:g,endOfBroadcastWeek:x,endOfISOWeek:y,endOfWeek:w,max:S,min:k,startOfBroadcastWeek:j,startOfISOWeek:N,startOfWeek:T}=a;let _={day:d,week:m,month:h,year:g,startOfWeek:M=>c?j(M,a):l?N(M):T(M),endOfWeek:M=>c?x(M):l?y(M):w(M)}[t](n,e==="after"?1:-1);return e==="before"&&r?_=S([r,_]):e==="after"&&s&&(_=k([s,_])),_}function sX(t,e,n,r,s,i,a,l=0){if(l>365)return;const c=h_e(t,e,n.date,r,s,i,a),d=!!(i.disabled&&Dl(c,i.disabled,a)),h=!!(i.hidden&&Dl(c,i.hidden,a)),m=c,g=new WG(c,m,a);return!d&&!h?g:sX(t,e,g,r,s,i,a,l+1)}function f_e(t,e,n,r,s){const{autoFocus:i}=t,[a,l]=b.useState(),c=d_e(e.days,n,r||(()=>!1),a),[d,h]=b.useState(i?c:void 0);return{isFocusTarget:w=>!!c?.isEqualTo(w),setFocused:h,focused:d,blur:()=>{l(d),h(void 0)},moveFocus:(w,S)=>{if(!d)return;const k=sX(w,S,d,e.navStart,e.navEnd,t,s);k&&(t.disableNavigation&&!e.days.some(N=>N.isEqualTo(k))||(e.goToDay(k),h(k)))}}}function m_e(t,e){const{selected:n,required:r,onSelect:s}=t,[i,a]=Yb(n,s?n:void 0),l=s?n:i,{isSameDay:c}=e,d=x=>l?.some(y=>c(y,x))??!1,{min:h,max:m}=t;return{selected:l,select:(x,y,w)=>{let S=[...l??[]];if(d(x)){if(l?.length===h||r&&l?.length===1)return;S=l?.filter(k=>!c(k,x))}else l?.length===m?S=[x]:S=[...S,x];return s||a(S),s?.(S,x,y,w),S},isSelected:d}}function p_e(t,e,n=0,r=0,s=!1,i=Go){const{from:a,to:l}=e||{},{isSameDay:c,isAfter:d,isBefore:h}=i;let m;if(!a&&!l)m={from:t,to:n>0?void 0:t};else if(a&&!l)c(a,t)?n===0?m={from:a,to:t}:s?m={from:a,to:void 0}:m=void 0:h(t,a)?m={from:t,to:a}:m={from:a,to:t};else if(a&&l)if(c(a,t)&&c(l,t))s?m={from:a,to:l}:m=void 0;else if(c(a,t))m={from:a,to:n>0?void 0:t};else if(c(l,t))m={from:t,to:n>0?void 0:t};else if(h(t,a))m={from:t,to:l};else if(d(t,a))m={from:a,to:t};else if(d(t,l))m={from:a,to:t};else throw new Error("Invalid range");if(m?.from&&m?.to){const g=i.differenceInCalendarDays(m.to,m.from);r>0&&g>r?m={from:t,to:void 0}:n>1&&gtypeof l!="function").some(l=>typeof l=="boolean"?l:n.isDate(l)?Rl(t,l,!1,n):JG(l,n)?l.some(c=>Rl(t,c,!1,n)):a7(l)?l.from&&l.to?kz(t,{from:l.from,to:l.to},n):!1:ZG(l)?g_e(t,l.dayOfWeek,n):XG(l)?n.isAfter(l.before,l.after)?kz(t,{from:n.addDays(l.after,1),to:n.addDays(l.before,-1)},n):Dl(t.from,l,n)||Dl(t.to,l,n):YG(l)||KG(l)?Dl(t.from,l,n)||Dl(t.to,l,n):!1))return!0;const a=r.filter(l=>typeof l=="function");if(a.length){let l=t.from;const c=n.differenceInCalendarDays(t.to,t.from);for(let d=0;d<=c;d++){if(a.some(h=>h(l)))return!0;l=n.addDays(l,1)}}return!1}function v_e(t,e){const{disabled:n,excludeDisabled:r,selected:s,required:i,onSelect:a}=t,[l,c]=Yb(s,a?s:void 0),d=a?s:l;return{selected:d,select:(g,x,y)=>{const{min:w,max:S}=t,k=g?p_e(g,d,w,S,i,e):void 0;return r&&n&&k?.from&&k.to&&x_e({from:k.from,to:k.to},n,e)&&(k.from=g,k.to=void 0),a||c(k),a?.(k,g,x,y),k},isSelected:g=>d&&Rl(d,g,!1,e)}}function y_e(t,e){const{selected:n,required:r,onSelect:s}=t,[i,a]=Yb(n,s?n:void 0),l=s?n:i,{isSameDay:c}=e;return{selected:l,select:(m,g,x)=>{let y=m;return!r&&l&&l&&c(m,l)&&(y=void 0),s||a(y),s?.(y,m,g,x),y},isSelected:m=>l?c(l,m):!1}}function b_e(t,e){const n=y_e(t,e),r=m_e(t,e),s=v_e(t,e);switch(t.mode){case"single":return n;case"multiple":return r;case"range":return s;default:return}}function w_e(t){let e=t;e.timeZone&&(e={...t},e.today&&(e.today=new Ls(e.today,e.timeZone)),e.month&&(e.month=new Ls(e.month,e.timeZone)),e.defaultMonth&&(e.defaultMonth=new Ls(e.defaultMonth,e.timeZone)),e.startMonth&&(e.startMonth=new Ls(e.startMonth,e.timeZone)),e.endMonth&&(e.endMonth=new Ls(e.endMonth,e.timeZone)),e.mode==="single"&&e.selected?e.selected=new Ls(e.selected,e.timeZone):e.mode==="multiple"&&e.selected?e.selected=e.selected?.map(Pe=>new Ls(Pe,e.timeZone)):e.mode==="range"&&e.selected&&(e.selected={from:e.selected.from?new Ls(e.selected.from,e.timeZone):void 0,to:e.selected.to?new Ls(e.selected.to,e.timeZone):void 0}));const{components:n,formatters:r,labels:s,dateLib:i,locale:a,classNames:l}=b.useMemo(()=>{const Pe={...i7,...e.locale};return{dateLib:new Ki({locale:Pe,weekStartsOn:e.broadcastCalendar?1:e.weekStartsOn,firstWeekContainsDate:e.firstWeekContainsDate,useAdditionalWeekYearTokens:e.useAdditionalWeekYearTokens,useAdditionalDayOfYearTokens:e.useAdditionalDayOfYearTokens,timeZone:e.timeZone,numerals:e.numerals},e.dateLib),components:jEe(e.components),formatters:PEe(e.formatters),labels:{...KEe,...e.labels},locale:Pe,classNames:{...o7(),...e.classNames}}},[e.locale,e.broadcastCalendar,e.weekStartsOn,e.firstWeekContainsDate,e.useAdditionalWeekYearTokens,e.useAdditionalDayOfYearTokens,e.timeZone,e.numerals,e.dateLib,e.components,e.formatters,e.labels,e.classNames]),{captionLayout:c,mode:d,navLayout:h,numberOfMonths:m=1,onDayBlur:g,onDayClick:x,onDayFocus:y,onDayKeyDown:w,onDayMouseEnter:S,onDayMouseLeave:k,onNextClick:j,onPrevClick:N,showWeekNumber:T,styles:E}=e,{formatCaption:_,formatDay:M,formatMonthDropdown:I,formatWeekNumber:P,formatWeekNumberHeader:L,formatWeekdayName:H,formatYearDropdown:U}=r,ee=u_e(e,i),{days:z,months:Q,navStart:B,navEnd:X,previousMonth:J,nextMonth:G,goToMonth:R}=ee,ie=kEe(z,e,B,X,i),{isSelected:W,select:q,selected:V}=b_e(e,i)??{},{blur:te,focused:ne,isFocusTarget:K,moveFocus:se,setFocused:re}=f_e(e,ee,ie,W??(()=>!1),i),{labelDayButton:oe,labelGridcell:Te,labelGrid:We,labelMonthDropdown:Ye,labelNav:Je,labelPrevious:Oe,labelNext:Ve,labelWeekday:Ue,labelWeekNumber:He,labelWeekNumberHeader:Ot,labelYearDropdown:xt}=s,kn=b.useMemo(()=>LEe(i,e.ISOWeek),[i,e.ISOWeek]),It=d!==void 0||x!==void 0,Yt=b.useCallback(()=>{J&&(R(J),N?.(J))},[J,R,N]),_t=b.useCallback(()=>{G&&(R(G),j?.(G))},[R,G,j]),mt=b.useCallback((Pe,it)=>ot=>{ot.preventDefault(),ot.stopPropagation(),re(Pe),q?.(Pe.date,it,ot),x?.(Pe.date,it,ot)},[q,x,re]),Ne=b.useCallback((Pe,it)=>ot=>{re(Pe),y?.(Pe.date,it,ot)},[y,re]),Ie=b.useCallback((Pe,it)=>ot=>{te(),g?.(Pe.date,it,ot)},[te,g]),st=b.useCallback((Pe,it)=>ot=>{const nn={ArrowLeft:[ot.shiftKey?"month":"day",e.dir==="rtl"?"after":"before"],ArrowRight:[ot.shiftKey?"month":"day",e.dir==="rtl"?"before":"after"],ArrowDown:[ot.shiftKey?"year":"week","after"],ArrowUp:[ot.shiftKey?"year":"week","before"],PageUp:[ot.shiftKey?"year":"month","before"],PageDown:[ot.shiftKey?"year":"month","after"],Home:["startOfWeek","before"],End:["endOfWeek","after"]};if(nn[ot.key]){ot.preventDefault(),ot.stopPropagation();const[Kt,pt]=nn[ot.key];se(Kt,pt)}w?.(Pe.date,it,ot)},[se,w,e.dir]),yt=b.useCallback((Pe,it)=>ot=>{S?.(Pe.date,it,ot)},[S]),Pt=b.useCallback((Pe,it)=>ot=>{k?.(Pe.date,it,ot)},[k]),At=b.useCallback(Pe=>it=>{const ot=Number(it.target.value),nn=i.setMonth(i.startOfMonth(Pe),ot);R(nn)},[i,R]),zn=b.useCallback(Pe=>it=>{const ot=Number(it.target.value),nn=i.setYear(i.startOfMonth(Pe),ot);R(nn)},[i,R]),{className:Fe,style:rt}=b.useMemo(()=>({className:[l[jt.Root],e.className].filter(Boolean).join(" "),style:{...E?.[jt.Root],...e.style}}),[l,e.className,e.style,E]),tn=NEe(e),Rt=b.useRef(null);t_e(Rt,!!e.animate,{classNames:l,months:Q,focused:ne,dateLib:i});const ke={dayPickerProps:e,selected:V,select:q,isSelected:W,months:Q,nextMonth:G,previousMonth:J,goToMonth:R,getModifiers:ie,components:n,classNames:l,styles:E,labels:s,formatters:r};return ae.createElement(GG.Provider,{value:ke},ae.createElement(n.Root,{rootRef:e.animate?Rt:void 0,className:Fe,style:rt,dir:e.dir,id:e.id,lang:e.lang,nonce:e.nonce,title:e.title,role:e.role,"aria-label":e["aria-label"],"aria-labelledby":e["aria-labelledby"],...tn},ae.createElement(n.Months,{className:l[jt.Months],style:E?.[jt.Months]},!e.hideNavigation&&!h&&ae.createElement(n.Nav,{"data-animated-nav":e.animate?"true":void 0,className:l[jt.Nav],style:E?.[jt.Nav],"aria-label":Je(),onPreviousClick:Yt,onNextClick:_t,previousMonth:J,nextMonth:G}),Q.map((Pe,it)=>ae.createElement(n.Month,{"data-animated-month":e.animate?"true":void 0,className:l[jt.Month],style:E?.[jt.Month],key:it,displayIndex:it,calendarMonth:Pe},h==="around"&&!e.hideNavigation&&it===0&&ae.createElement(n.PreviousMonthButton,{type:"button",className:l[jt.PreviousMonthButton],tabIndex:J?void 0:-1,"aria-disabled":J?void 0:!0,"aria-label":Oe(J),onClick:Yt,"data-animated-button":e.animate?"true":void 0},ae.createElement(n.Chevron,{disabled:J?void 0:!0,className:l[jt.Chevron],orientation:e.dir==="rtl"?"right":"left"})),ae.createElement(n.MonthCaption,{"data-animated-caption":e.animate?"true":void 0,className:l[jt.MonthCaption],style:E?.[jt.MonthCaption],calendarMonth:Pe,displayIndex:it},c?.startsWith("dropdown")?ae.createElement(n.DropdownNav,{className:l[jt.Dropdowns],style:E?.[jt.Dropdowns]},(()=>{const ot=c==="dropdown"||c==="dropdown-months"?ae.createElement(n.MonthsDropdown,{key:"month",className:l[jt.MonthsDropdown],"aria-label":Ye(),classNames:l,components:n,disabled:!!e.disableNavigation,onChange:At(Pe.date),options:zEe(Pe.date,B,X,r,i),style:E?.[jt.Dropdown],value:i.getMonth(Pe.date)}):ae.createElement("span",{key:"month"},I(Pe.date,i)),nn=c==="dropdown"||c==="dropdown-years"?ae.createElement(n.YearsDropdown,{key:"year",className:l[jt.YearsDropdown],"aria-label":xt(i.options),classNames:l,components:n,disabled:!!e.disableNavigation,onChange:zn(Pe.date),options:BEe(B,X,r,i,!!e.reverseYears),style:E?.[jt.Dropdown],value:i.getYear(Pe.date)}):ae.createElement("span",{key:"year"},U(Pe.date,i));return i.getMonthYearOrder()==="year-first"?[nn,ot]:[ot,nn]})(),ae.createElement("span",{role:"status","aria-live":"polite",style:{border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",width:"1px",whiteSpace:"nowrap",wordWrap:"normal"}},_(Pe.date,i.options,i))):ae.createElement(n.CaptionLabel,{className:l[jt.CaptionLabel],role:"status","aria-live":"polite"},_(Pe.date,i.options,i))),h==="around"&&!e.hideNavigation&&it===m-1&&ae.createElement(n.NextMonthButton,{type:"button",className:l[jt.NextMonthButton],tabIndex:G?void 0:-1,"aria-disabled":G?void 0:!0,"aria-label":Ve(G),onClick:_t,"data-animated-button":e.animate?"true":void 0},ae.createElement(n.Chevron,{disabled:G?void 0:!0,className:l[jt.Chevron],orientation:e.dir==="rtl"?"left":"right"})),it===m-1&&h==="after"&&!e.hideNavigation&&ae.createElement(n.Nav,{"data-animated-nav":e.animate?"true":void 0,className:l[jt.Nav],style:E?.[jt.Nav],"aria-label":Je(),onPreviousClick:Yt,onNextClick:_t,previousMonth:J,nextMonth:G}),ae.createElement(n.MonthGrid,{role:"grid","aria-multiselectable":d==="multiple"||d==="range","aria-label":We(Pe.date,i.options,i)||void 0,className:l[jt.MonthGrid],style:E?.[jt.MonthGrid]},!e.hideWeekdays&&ae.createElement(n.Weekdays,{"data-animated-weekdays":e.animate?"true":void 0,className:l[jt.Weekdays],style:E?.[jt.Weekdays]},T&&ae.createElement(n.WeekNumberHeader,{"aria-label":Ot(i.options),className:l[jt.WeekNumberHeader],style:E?.[jt.WeekNumberHeader],scope:"col"},L()),kn.map(ot=>ae.createElement(n.Weekday,{"aria-label":Ue(ot,i.options,i),className:l[jt.Weekday],key:String(ot),style:E?.[jt.Weekday],scope:"col"},H(ot,i.options,i)))),ae.createElement(n.Weeks,{"data-animated-weeks":e.animate?"true":void 0,className:l[jt.Weeks],style:E?.[jt.Weeks]},Pe.weeks.map(ot=>ae.createElement(n.Week,{className:l[jt.Week],key:ot.weekNumber,style:E?.[jt.Week],week:ot},T&&ae.createElement(n.WeekNumber,{week:ot,style:E?.[jt.WeekNumber],"aria-label":He(ot.weekNumber,{locale:a}),className:l[jt.WeekNumber],scope:"row",role:"rowheader"},P(ot.weekNumber,i)),ot.days.map(nn=>{const{date:Kt}=nn,pt=ie(nn);if(pt[Mr.focused]=!pt.hidden&&!!ne?.isEqualTo(nn),pt[Ua.selected]=W?.(Kt)||pt.selected,a7(V)){const{from:vr,to:In}=V;pt[Ua.range_start]=!!(vr&&In&&i.isSameDay(Kt,vr)),pt[Ua.range_end]=!!(vr&&In&&i.isSameDay(Kt,In)),pt[Ua.range_middle]=Rl(V,Kt,!0,i)}const xr=IEe(pt,E,e.modifiersStyles),Ur=OEe(pt,l,e.modifiersClassNames),Wr=!It&&!pt.hidden?Te(Kt,pt,i.options,i):void 0;return ae.createElement(n.Day,{key:`${i.format(Kt,"yyyy-MM-dd")}_${i.format(nn.displayMonth,"yyyy-MM")}`,day:nn,modifiers:pt,className:Ur.join(" "),style:xr,role:"gridcell","aria-selected":pt.selected||void 0,"aria-label":Wr,"data-day":i.format(Kt,"yyyy-MM-dd"),"data-month":nn.outside?i.format(Kt,"yyyy-MM"):void 0,"data-selected":pt.selected||void 0,"data-disabled":pt.disabled||void 0,"data-hidden":pt.hidden||void 0,"data-outside":nn.outside||void 0,"data-focused":pt.focused||void 0,"data-today":pt.today||void 0},!pt.hidden&&It?ae.createElement(n.DayButton,{className:l[jt.DayButton],style:E?.[jt.DayButton],type:"button",day:nn,modifiers:pt,disabled:pt.disabled||void 0,tabIndex:K(nn)?0:-1,"aria-label":oe(Kt,pt,i.options,i),onClick:mt(nn,pt),onBlur:Ie(nn,pt),onFocus:Ne(nn,pt),onKeyDown:st(nn,pt),onMouseEnter:yt(nn,pt),onMouseLeave:Pt(nn,pt)},M(Kt,i.options,i)):!pt.hidden&&M(nn.date,i.options,i))})))))))),e.footer&&ae.createElement(n.Footer,{className:l[jt.Footer],style:E?.[jt.Footer],role:"status","aria-live":"polite"},e.footer)))}function Oz({className:t,classNames:e,showOutsideDays:n=!0,captionLayout:r="label",buttonVariant:s="ghost",formatters:i,components:a,...l}){const c=o7();return o.jsx(w_e,{showOutsideDays:n,className:ve("bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,t),captionLayout:r,formatters:{formatMonthDropdown:d=>d.toLocaleString("default",{month:"short"}),...i},classNames:{root:ve("w-fit",c.root),months:ve("relative flex flex-col gap-4 md:flex-row",c.months),month:ve("flex w-full flex-col gap-4",c.month),nav:ve("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",c.nav),button_previous:ve(D0({variant:s}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",c.button_previous),button_next:ve(D0({variant:s}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",c.button_next),month_caption:ve("flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]",c.month_caption),dropdowns:ve("flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium",c.dropdowns),dropdown_root:ve("has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border",c.dropdown_root),dropdown:ve("bg-popover absolute inset-0 opacity-0",c.dropdown),caption_label:ve("select-none font-medium",r==="label"?"text-sm":"[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5",c.caption_label),table:"w-full border-collapse",weekdays:ve("flex",c.weekdays),weekday:ve("text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal",c.weekday),week:ve("mt-2 flex w-full",c.week),week_number_header:ve("w-[--cell-size] select-none",c.week_number_header),week_number:ve("text-muted-foreground select-none text-[0.8rem]",c.week_number),day:ve("group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md",c.day),range_start:ve("bg-accent rounded-l-md",c.range_start),range_middle:ve("rounded-none",c.range_middle),range_end:ve("bg-accent rounded-r-md",c.range_end),today:ve("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",c.today),outside:ve("text-muted-foreground aria-selected:text-muted-foreground",c.outside),disabled:ve("text-muted-foreground opacity-50",c.disabled),hidden:ve("invisible",c.hidden),...e},components:{Root:({className:d,rootRef:h,...m})=>o.jsx("div",{"data-slot":"calendar",ref:h,className:ve(d),...m}),Chevron:({className:d,orientation:h,...m})=>h==="left"?o.jsx(vd,{className:ve("size-4",d),...m}):h==="right"?o.jsx(yd,{className:ve("size-4",d),...m}):o.jsx(nd,{className:ve("size-4",d),...m}),DayButton:S_e,WeekNumber:({children:d,...h})=>o.jsx("td",{...h,children:o.jsx("div",{className:"flex size-[--cell-size] items-center justify-center text-center",children:d})}),...a},...l})}function S_e({className:t,day:e,modifiers:n,...r}){const s=o7(),i=b.useRef(null);return b.useEffect(()=>{n.focused&&i.current?.focus()},[n.focused]),o.jsx(he,{ref:i,variant:"ghost",size:"icon","data-day":e.date.toLocaleDateString(),"data-selected-single":n.selected&&!n.range_start&&!n.range_end&&!n.range_middle,"data-range-start":n.range_start,"data-range-end":n.range_end,"data-range-middle":n.range_middle,className:ve("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70",s.day,t),...r})}class k_e{ws=null;reconnectTimeout=null;reconnectAttempts=0;maxReconnectAttempts=10;heartbeatInterval=null;logCallbacks=new Set;connectionCallbacks=new Set;isConnected=!1;logCache=[];maxCacheSize=1e3;getWebSocketUrl(){{const e=window.location.protocol==="https:"?"wss:":"ws:",n=window.location.host;return`${e}//${n}/ws/logs`}}connect(){if(this.ws?.readyState===WebSocket.OPEN||this.ws?.readyState===WebSocket.CONNECTING)return;const e=this.getWebSocketUrl();try{this.ws=new WebSocket(e),this.ws.onopen=()=>{this.isConnected=!0,this.reconnectAttempts=0,this.notifyConnection(!0),this.startHeartbeat()},this.ws.onmessage=n=>{try{if(n.data==="pong")return;const r=JSON.parse(n.data);this.notifyLog(r)}catch(r){console.error("解析日志消息失败:",r)}},this.ws.onerror=n=>{console.error("❌ WebSocket 错误:",n),this.isConnected=!1,this.notifyConnection(!1)},this.ws.onclose=()=>{this.isConnected=!1,this.notifyConnection(!1),this.stopHeartbeat(),this.attemptReconnect()}}catch(n){console.error("创建 WebSocket 连接失败:",n),this.attemptReconnect()}}attemptReconnect(){if(this.reconnectAttempts>=this.maxReconnectAttempts)return;this.reconnectAttempts+=1;const e=Math.min(1e3*this.reconnectAttempts,1e4);this.reconnectTimeout=window.setTimeout(()=>{this.connect()},e)}startHeartbeat(){this.heartbeatInterval=window.setInterval(()=>{this.ws?.readyState===WebSocket.OPEN&&this.ws.send("ping")},3e4)}stopHeartbeat(){this.heartbeatInterval!==null&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}disconnect(){this.reconnectTimeout!==null&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.stopHeartbeat(),this.ws&&(this.ws.close(),this.ws=null),this.isConnected=!1,this.reconnectAttempts=0}onLog(e){return this.logCallbacks.add(e),()=>this.logCallbacks.delete(e)}onConnectionChange(e){return this.connectionCallbacks.add(e),e(this.isConnected),()=>this.connectionCallbacks.delete(e)}notifyLog(e){this.logCache.some(r=>r.id===e.id)||(this.logCache.push(e),this.logCache.length>this.maxCacheSize&&(this.logCache=this.logCache.slice(-this.maxCacheSize)),this.logCallbacks.forEach(r=>{try{r(e)}catch(s){console.error("日志回调执行失败:",s)}}))}notifyConnection(e){this.connectionCallbacks.forEach(n=>{try{n(e)}catch(r){console.error("连接状态回调执行失败:",r)}})}getAllLogs(){return[...this.logCache]}clearLogs(){this.logCache=[]}getConnectionStatus(){return this.isConnected}}const Oh=new k_e;typeof window<"u"&&Oh.connect();const O_e={lessThanXSeconds:{one:"不到 1 秒",other:"不到 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分钟",lessThanXMinutes:{one:"不到 1 分钟",other:"不到 {{count}} 分钟"},xMinutes:{one:"1 分钟",other:"{{count}} 分钟"},xHours:{one:"1 小时",other:"{{count}} 小时"},aboutXHours:{one:"大约 1 小时",other:"大约 {{count}} 小时"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大约 1 个星期",other:"大约 {{count}} 个星期"},xWeeks:{one:"1 个星期",other:"{{count}} 个星期"},aboutXMonths:{one:"大约 1 个月",other:"大约 {{count}} 个月"},xMonths:{one:"1 个月",other:"{{count}} 个月"},aboutXYears:{one:"大约 1 年",other:"大约 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超过 1 年",other:"超过 {{count}} 年"},almostXYears:{one:"将近 1 年",other:"将近 {{count}} 年"}},j_e=(t,e,n)=>{let r;const s=O_e[t];return typeof s=="string"?r=s:e===1?r=s.one:r=s.other.replace("{{count}}",String(e)),n?.addSuffix?n.comparison&&n.comparison>0?r+"内":r+"前":r},N_e={full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},C_e={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},T_e={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},E_e={date:Vh({formats:N_e,defaultWidth:"full"}),time:Vh({formats:C_e,defaultWidth:"full"}),dateTime:Vh({formats:T_e,defaultWidth:"full"})};function jz(t,e,n){const r="eeee p";return F9e(t,e,n)?r:t.getTime()>e.getTime()?"'下个'"+r:"'上个'"+r}const __e={lastWeek:jz,yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:jz,other:"PP p"},M_e=(t,e,n,r)=>{const s=__e[t];return typeof s=="function"?s(e,n,r):s},A_e={narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},R_e={narrow:["1","2","3","4"],abbreviated:["第一季","第二季","第三季","第四季"],wide:["第一季度","第二季度","第三季度","第四季度"]},D_e={narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},P_e={narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["周日","周一","周二","周三","周四","周五","周六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},z_e={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},I_e={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},L_e=(t,e)=>{const n=Number(t);switch(e?.unit){case"date":return n.toString()+"日";case"hour":return n.toString()+"时";case"minute":return n.toString()+"分";case"second":return n.toString()+"秒";default:return"第 "+n.toString()}},B_e={ordinalNumber:L_e,era:ko({values:A_e,defaultWidth:"wide"}),quarter:ko({values:R_e,defaultWidth:"wide",argumentCallback:t=>t-1}),month:ko({values:D_e,defaultWidth:"wide"}),day:ko({values:P_e,defaultWidth:"wide"}),dayPeriod:ko({values:z_e,defaultWidth:"wide",formattingValues:I_e,defaultFormattingWidth:"wide"})},F_e=/^(第\s*)?\d+(日|时|分|秒)?/i,q_e=/\d+/i,$_e={narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},H_e={any:[/^(前)/i,/^(公元)/i]},Q_e={narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻钟/i},V_e={any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},U_e={narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},W_e={narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},G_e={narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^周[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},X_e={any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},Y_e={any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i},K_e={any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},Z_e={ordinalNumber:qG({matchPattern:F_e,parsePattern:q_e,valueCallback:t=>parseInt(t,10)}),era:Oo({matchPatterns:$_e,defaultMatchWidth:"wide",parsePatterns:H_e,defaultParseWidth:"any"}),quarter:Oo({matchPatterns:Q_e,defaultMatchWidth:"wide",parsePatterns:V_e,defaultParseWidth:"any",valueCallback:t=>t+1}),month:Oo({matchPatterns:U_e,defaultMatchWidth:"wide",parsePatterns:W_e,defaultParseWidth:"any"}),day:Oo({matchPatterns:G_e,defaultMatchWidth:"wide",parsePatterns:X_e,defaultParseWidth:"any"}),dayPeriod:Oo({matchPatterns:Y_e,defaultMatchWidth:"any",parsePatterns:K_e,defaultParseWidth:"any"})},Q1={code:"zh-CN",formatDistance:j_e,formatLong:E_e,formatRelative:M_e,localize:B_e,match:Z_e,options:{weekStartsOn:1,firstWeekContainsDate:4}},V1={xs:{label:"小",rowHeight:28,class:"text-[10px] sm:text-xs"},sm:{label:"中",rowHeight:36,class:"text-xs sm:text-sm"},base:{label:"大",rowHeight:44,class:"text-sm sm:text-base"}};function J_e(){const[t,e]=b.useState([]),[n,r]=b.useState(""),[s,i]=b.useState("all"),[a,l]=b.useState("all"),[c,d]=b.useState(void 0),[h,m]=b.useState(void 0),[g,x]=b.useState(!0),[y,w]=b.useState(!1),[S,k]=b.useState("xs"),[j,N]=b.useState(4),T=b.useRef(null);b.useEffect(()=>{const B=Oh.getAllLogs();e(B);const X=Oh.onLog(()=>{e(Oh.getAllLogs())}),J=Oh.onConnectionChange(G=>{w(G)});return()=>{X(),J()}},[]);const E=b.useMemo(()=>{const B=new Set(t.map(X=>X.module));return Array.from(B).sort()},[t]),_=B=>{switch(B){case"DEBUG":return"text-muted-foreground";case"INFO":return"text-blue-500 dark:text-blue-400";case"WARNING":return"text-yellow-600 dark:text-yellow-500";case"ERROR":return"text-red-600 dark:text-red-500";case"CRITICAL":return"text-red-700 dark:text-red-400 font-bold";default:return"text-foreground"}},M=B=>{switch(B){case"DEBUG":return"bg-gray-800/30 dark:bg-gray-800/50";case"INFO":return"bg-blue-900/20 dark:bg-blue-500/20";case"WARNING":return"bg-yellow-900/20 dark:bg-yellow-500/20";case"ERROR":return"bg-red-900/20 dark:bg-red-500/20";case"CRITICAL":return"bg-red-900/30 dark:bg-red-600/30";default:return"bg-gray-800/20 dark:bg-gray-800/30"}},I=()=>{window.location.reload()},P=()=>{Oh.clearLogs(),e([])},L=()=>{const B=ee.map(R=>`${R.timestamp} [${R.level.padEnd(8)}] [${R.module}] ${R.message}`).join(` +`),X=new Blob([B],{type:"text/plain;charset=utf-8"}),J=URL.createObjectURL(X),G=document.createElement("a");G.href=J,G.download=`logs-${Cv(new Date,"yyyy-MM-dd-HHmmss")}.txt`,G.click(),URL.revokeObjectURL(J)},H=()=>{x(!g)},U=()=>{d(void 0),m(void 0)},ee=b.useMemo(()=>t.filter(B=>{const X=n===""||B.message.toLowerCase().includes(n.toLowerCase())||B.module.toLowerCase().includes(n.toLowerCase()),J=s==="all"||B.level===s,G=a==="all"||B.module===a;let R=!0;if(c||h){const ie=new Date(B.timestamp);if(c){const W=new Date(c);W.setHours(0,0,0,0),R=R&&ie>=W}if(h){const W=new Date(h);W.setHours(23,59,59,999),R=R&&ie<=W}}return X&&J&&G&&R}),[t,n,s,a,c,h]),z=V1[S].rowHeight+j,Q=bTe({count:ee.length,getScrollElement:()=>T.current,estimateSize:()=>z,overscan:15});return b.useEffect(()=>{g&&ee.length>0&&Q.scrollToIndex(ee.length-1,{align:"end",behavior:"auto"})},[ee.length,g,Q]),o.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[o.jsxs("div",{className:"flex-shrink-0 space-y-4 p-3 sm:p-4 lg:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-3",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-xl sm:text-2xl lg:text-3xl font-bold",children:"日志查看器"}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:"实时查看和分析麦麦运行日志"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("div",{className:ve("h-2.5 w-2.5 sm:h-3 sm:w-3 rounded-full",y?"bg-green-500 animate-pulse":"bg-red-500")}),o.jsx("span",{className:"text-xs sm:text-sm text-muted-foreground",children:y?"已连接":"未连接"})]})]}),o.jsx(qt,{className:"p-3 sm:p-4",children:o.jsxs("div",{className:"flex flex-col gap-3 sm:gap-4",children:[o.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:gap-4",children:[o.jsxs("div",{className:"flex-1 relative",children:[o.jsx(Ni,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(ze,{placeholder:"搜索日志...",value:n,onChange:B=>r(B.target.value),className:"pl-9 h-9 text-sm"})]}),o.jsxs(Vt,{value:s,onValueChange:i,children:[o.jsxs($t,{className:"w-full sm:w-[140px] lg:w-[180px] h-9 text-sm",children:[o.jsx(Z3,{className:"h-4 w-4 mr-2"}),o.jsx(Ut,{placeholder:"级别"})]}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部级别"}),o.jsx(De,{value:"DEBUG",children:"DEBUG"}),o.jsx(De,{value:"INFO",children:"INFO"}),o.jsx(De,{value:"WARNING",children:"WARNING"}),o.jsx(De,{value:"ERROR",children:"ERROR"}),o.jsx(De,{value:"CRITICAL",children:"CRITICAL"})]})]}),o.jsxs(Vt,{value:a,onValueChange:l,children:[o.jsxs($t,{className:"w-full sm:w-[160px] lg:w-[200px] h-9 text-sm",children:[o.jsx(Z3,{className:"h-4 w-4 mr-2"}),o.jsx(Ut,{placeholder:"模块"})]}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部模块"}),E.map(B=>o.jsx(De,{value:B,children:B},B))]})]})]}),o.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:gap-4",children:[o.jsxs(Po,{children:[o.jsx(zo,{asChild:!0,children:o.jsxs(he,{variant:"outline",size:"sm",className:ve("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!c&&"text-muted-foreground"),children:[o.jsx(p9,{className:"mr-2 h-4 w-4"}),o.jsx("span",{className:"text-xs sm:text-sm",children:c?Cv(c,"PPP",{locale:Q1}):"开始日期"})]})}),o.jsx(Xa,{className:"w-auto p-0",align:"start",children:o.jsx(Oz,{mode:"single",selected:c,onSelect:d,initialFocus:!0,locale:Q1})})]}),o.jsxs(Po,{children:[o.jsx(zo,{asChild:!0,children:o.jsxs(he,{variant:"outline",size:"sm",className:ve("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!h&&"text-muted-foreground"),children:[o.jsx(p9,{className:"mr-2 h-4 w-4"}),o.jsx("span",{className:"text-xs sm:text-sm",children:h?Cv(h,"PPP",{locale:Q1}):"结束日期"})]})}),o.jsx(Xa,{className:"w-auto p-0",align:"start",children:o.jsx(Oz,{mode:"single",selected:h,onSelect:m,initialFocus:!0,locale:Q1})})]}),(c||h)&&o.jsxs(he,{variant:"outline",size:"sm",onClick:U,className:"w-full sm:w-auto h-9",children:[o.jsx(Tp,{className:"h-4 w-4 sm:mr-2"}),o.jsx("span",{className:"hidden sm:inline text-sm",children:"清除时间筛选"}),o.jsx("span",{className:"sm:hidden text-sm",children:"清除"})]})]}),o.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center",children:[o.jsxs("div",{className:"flex gap-2 flex-wrap",children:[o.jsxs(he,{variant:g?"default":"outline",size:"sm",onClick:H,className:"flex-1 sm:flex-none h-9",children:[g?o.jsx(Fee,{className:"h-4 w-4"}):o.jsx(qee,{className:"h-4 w-4"}),o.jsx("span",{className:"ml-2 text-sm",children:g?"自动滚动":"已暂停"})]}),o.jsxs(he,{variant:"outline",size:"sm",onClick:I,className:"flex-1 sm:flex-none h-9",children:[o.jsx(Qs,{className:"h-4 w-4"}),o.jsx("span",{className:"ml-2 text-sm",children:"刷新"})]}),o.jsxs(he,{variant:"outline",size:"sm",onClick:P,className:"flex-1 sm:flex-none h-9",children:[o.jsx(Sn,{className:"h-4 w-4"}),o.jsx("span",{className:"ml-2 text-sm",children:"清空"})]}),o.jsxs(he,{variant:"outline",size:"sm",onClick:L,className:"flex-1 sm:flex-none h-9",children:[o.jsx(Ku,{className:"h-4 w-4"}),o.jsx("span",{className:"ml-2 text-sm",children:"导出"})]})]}),o.jsx("div",{className:"flex-1 hidden sm:block"}),o.jsxs("div",{className:"text-xs sm:text-sm text-muted-foreground flex items-center justify-center sm:justify-end",children:[o.jsxs("span",{className:"font-mono",children:[ee.length," / ",t.length]}),o.jsx("span",{className:"ml-1",children:"条日志"})]})]}),o.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-6 pt-2 border-t border-border/50",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[o.jsx($ee,{className:"h-4 w-4"}),o.jsx("span",{children:"字号"})]}),o.jsx("div",{className:"flex gap-1",children:Object.keys(V1).map(B=>o.jsx(he,{variant:S===B?"default":"outline",size:"sm",onClick:()=>k(B),className:"h-7 px-3 text-xs",children:V1[B].label},B))})]}),o.jsxs("div",{className:"flex items-center gap-3 flex-1 max-w-xs",children:[o.jsx("span",{className:"text-sm text-muted-foreground whitespace-nowrap",children:"行距"}),o.jsx(Ip,{value:[j],onValueChange:([B])=>N(B),min:0,max:12,step:2,className:"flex-1"}),o.jsxs("span",{className:"text-xs text-muted-foreground w-8",children:[j,"px"]})]})]})]})})]}),o.jsx("div",{className:"flex-1 min-h-0 px-3 sm:px-4 lg:px-6 pb-3 sm:pb-4 lg:pb-6",children:o.jsx(qt,{className:"bg-black dark:bg-gray-950 border-gray-800 dark:border-gray-900 h-full",children:o.jsx(wn,{viewportRef:T,className:"h-full",children:o.jsx("div",{className:ve("p-2 sm:p-3 font-mono relative",V1[S].class),style:{height:`${Q.getTotalSize()}px`},children:ee.length===0?o.jsx("div",{className:"text-gray-500 dark:text-gray-600 text-center py-8 text-sm",children:"暂无日志数据"}):Q.getVirtualItems().map(B=>{const X=ee[B.index];return o.jsxs("div",{"data-index":B.index,ref:Q.measureElement,className:ve("absolute top-0 left-0 w-full px-2 sm:px-3 rounded hover:bg-white/5 transition-colors group",M(X.level)),style:{transform:`translateY(${B.start}px)`,paddingTop:`${j/2}px`,paddingBottom:`${j/2}px`},children:[o.jsxs("div",{className:"flex flex-col gap-0.5 sm:hidden",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"text-gray-500 dark:text-gray-600",children:X.timestamp}),o.jsxs("span",{className:ve("font-semibold",_(X.level)),children:["[",X.level,"]"]})]}),o.jsx("div",{className:"text-cyan-400 dark:text-cyan-500 truncate",children:X.module}),o.jsx("div",{className:"text-gray-300 dark:text-gray-400 whitespace-pre-wrap break-words",children:X.message})]}),o.jsxs("div",{className:"hidden sm:flex gap-2 items-start",children:[o.jsx("span",{className:"text-gray-500 dark:text-gray-600 flex-shrink-0 w-[130px] lg:w-[160px]",children:X.timestamp}),o.jsxs("span",{className:ve("flex-shrink-0 w-[65px] lg:w-[75px] font-semibold",_(X.level)),children:["[",X.level,"]"]}),o.jsx("span",{className:"text-cyan-400 dark:text-cyan-500 flex-shrink-0 w-[100px] lg:w-[130px] truncate",children:X.module}),o.jsx("span",{className:"text-gray-300 dark:text-gray-400 flex-1 whitespace-pre-wrap break-words",children:X.message})]})]},B.key)})})})})})]})}const eMe="Mai-with-u",tMe="plugin-repo",nMe="main",rMe="plugin_details.json";async function sMe(){try{const t=await St("/api/webui/plugins/fetch-raw",{method:"POST",headers:Dt(),body:JSON.stringify({owner:eMe,repo:tMe,branch:nMe,file_path:rMe})});if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);const e=await t.json();if(!e.success||!e.data)throw new Error(e.error||"获取插件列表失败");return JSON.parse(e.data).filter(s=>!s?.id||!s?.manifest?(console.warn("跳过无效插件数据:",s),!1):!s.manifest.name||!s.manifest.version?(console.warn("跳过缺少必需字段的插件:",s.id),!1):!0).map(s=>({id:s.id,manifest:{manifest_version:s.manifest.manifest_version||1,name:s.manifest.name,version:s.manifest.version,description:s.manifest.description||"",author:s.manifest.author||{name:"Unknown"},license:s.manifest.license||"Unknown",host_application:s.manifest.host_application||{min_version:"0.0.0"},homepage_url:s.manifest.homepage_url,repository_url:s.manifest.repository_url,keywords:s.manifest.keywords||[],categories:s.manifest.categories||[],default_locale:s.manifest.default_locale||"zh-CN",locales_path:s.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!1,published_at:new Date().toISOString(),updated_at:new Date().toISOString()}))}catch(t){throw console.error("Failed to fetch plugin list:",t),t}}async function iMe(){try{const t=await St("/api/webui/plugins/git-status");if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);return await t.json()}catch(t){return console.error("Failed to check Git status:",t),{installed:!1,error:"无法检测 Git 安装状态"}}}async function aMe(){try{const t=await St("/api/webui/plugins/version");if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);return await t.json()}catch(t){return console.error("Failed to get Maimai version:",t),{version:"0.0.0",version_major:0,version_minor:0,version_patch:0}}}function oMe(t,e,n){const r=t.split(".").map(l=>parseInt(l)||0),s=r[0]||0,i=r[1]||0,a=r[2]||0;if(n.version_majorparseInt(m)||0),c=l[0]||0,d=l[1]||0,h=l[2]||0;if(n.version_major>c||n.version_major===c&&n.version_minor>d||n.version_major===c&&n.version_minor===d&&n.version_patch>h)return!1}return!0}function lMe(t,e){const n=window.location.protocol==="https:"?"wss:":"ws:",r=window.location.host,s=new WebSocket(`${n}//${r}/api/webui/ws/plugin-progress`);return s.onopen=()=>{console.log("Plugin progress WebSocket connected");const i=setInterval(()=>{s.readyState===WebSocket.OPEN?s.send("ping"):clearInterval(i)},3e4)},s.onmessage=i=>{try{if(i.data==="pong")return;const a=JSON.parse(i.data);t(a)}catch(a){console.error("Failed to parse progress data:",a)}},s.onerror=i=>{console.error("Plugin progress WebSocket error:",i),e?.(i)},s.onclose=()=>{console.log("Plugin progress WebSocket disconnected")},s}async function U1(){try{const t=await St("/api/webui/plugins/installed",{headers:Dt()});if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);const e=await t.json();if(!e.success)throw new Error(e.message||"获取已安装插件列表失败");return e.plugins||[]}catch(t){return console.error("Failed to get installed plugins:",t),[]}}function W1(t,e){return e.some(n=>n.id===t)}function G1(t,e){const n=e.find(r=>r.id===t);if(n)return n.manifest?.version||n.version}async function cMe(t,e,n="main"){const r=await St("/api/webui/plugins/install",{method:"POST",headers:Dt(),body:JSON.stringify({plugin_id:t,repository_url:e,branch:n})});if(!r.ok){const s=await r.json();throw new Error(s.detail||"安装失败")}return await r.json()}async function uMe(t){const e=await St("/api/webui/plugins/uninstall",{method:"POST",headers:Dt(),body:JSON.stringify({plugin_id:t})});if(!e.ok){const n=await e.json();throw new Error(n.detail||"卸载失败")}return await e.json()}async function dMe(t,e,n="main"){const r=await St("/api/webui/plugins/update",{method:"POST",headers:Dt(),body:JSON.stringify({plugin_id:t,repository_url:e,branch:n})});if(!r.ok){const s=await r.json();throw new Error(s.detail||"更新失败")}return await r.json()}const bg="https://maibot-plugin-stats.maibot-webui.workers.dev";async function iX(t){try{const e=await fetch(`${bg}/stats/${t}`);return e.ok?await e.json():(console.error("Failed to fetch plugin stats:",e.statusText),null)}catch(e){return console.error("Error fetching plugin stats:",e),null}}async function hMe(t,e){try{const n=e||l7(),r=await fetch(`${bg}/stats/like`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t,user_id:n})}),s=await r.json();return r.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:r.ok?{success:!0,...s}:{success:!1,error:s.error||"点赞失败"}}catch(n){return console.error("Error liking plugin:",n),{success:!1,error:"网络错误"}}}async function fMe(t,e){try{const n=e||l7(),r=await fetch(`${bg}/stats/dislike`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t,user_id:n})}),s=await r.json();return r.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:r.ok?{success:!0,...s}:{success:!1,error:s.error||"点踩失败"}}catch(n){return console.error("Error disliking plugin:",n),{success:!1,error:"网络错误"}}}async function mMe(t,e,n,r){if(e<1||e>5)return{success:!1,error:"评分必须在 1-5 之间"};try{const s=r||l7(),i=await fetch(`${bg}/stats/rate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t,rating:e,comment:n,user_id:s})}),a=await i.json();return i.status===429?{success:!1,error:"每天最多评分 3 次"}:i.ok?{success:!0,...a}:{success:!1,error:a.error||"评分失败"}}catch(s){return console.error("Error rating plugin:",s),{success:!1,error:"网络错误"}}}async function pMe(t){try{const e=await fetch(`${bg}/stats/download`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t})}),n=await e.json();return e.status===429?(console.warn("Download recording rate limited"),{success:!0}):e.ok?{success:!0,...n}:(console.error("Failed to record download:",n.error),{success:!1,error:n.error})}catch(e){return console.error("Error recording download:",e),{success:!1,error:"网络错误"}}}function gMe(){const t=navigator,e=[navigator.userAgent,navigator.language,navigator.languages?.join(",")||"",navigator.platform,navigator.hardwareConcurrency||0,screen.width,screen.height,screen.colorDepth,screen.pixelDepth,new Date().getTimezoneOffset(),Intl.DateTimeFormat().resolvedOptions().timeZone,navigator.maxTouchPoints||0,t.deviceMemory||0].join("|");let n=0;for(let r=0;r{i(!0);const k=await iX(t);k&&r(k),i(!1)};b.useEffect(()=>{x()},[t]);const y=async()=>{const k=await hMe(t);k.success?(g({title:"已点赞",description:"感谢你的支持!"}),x()):g({title:"点赞失败",description:k.error||"未知错误",variant:"destructive"})},w=async()=>{const k=await fMe(t);k.success?(g({title:"已反馈",description:"感谢你的反馈!"}),x()):g({title:"操作失败",description:k.error||"未知错误",variant:"destructive"})},S=async()=>{if(a===0){g({title:"请选择评分",description:"至少选择 1 颗星",variant:"destructive"});return}const k=await mMe(t,a,c||void 0);k.success?(g({title:"评分成功",description:"感谢你的评价!"}),m(!1),l(0),d(""),x()):g({title:"评分失败",description:k.error||"未知错误",variant:"destructive"})};return s?o.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(Ku,{className:"h-4 w-4"}),o.jsx("span",{children:"-"})]}),o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(_c,{className:"h-4 w-4"}),o.jsx("span",{children:"-"})]})]}):n?e?o.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[o.jsxs("div",{className:"flex items-center gap-1",title:`下载量: ${n.downloads.toLocaleString()}`,children:[o.jsx(Ku,{className:"h-4 w-4"}),o.jsx("span",{children:n.downloads.toLocaleString()})]}),o.jsxs("div",{className:"flex items-center gap-1",title:`评分: ${n.rating.toFixed(1)} (${n.rating_count} 条评价)`,children:[o.jsx(_c,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),o.jsx("span",{children:n.rating.toFixed(1)})]}),o.jsxs("div",{className:"flex items-center gap-1",title:`点赞数: ${n.likes}`,children:[o.jsx(f4,{className:"h-4 w-4"}),o.jsx("span",{children:n.likes})]})]}):o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-4",children:[o.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[o.jsx(Ku,{className:"h-5 w-5 text-muted-foreground mb-1"}),o.jsx("span",{className:"text-2xl font-bold",children:n.downloads.toLocaleString()}),o.jsx("span",{className:"text-xs text-muted-foreground",children:"下载量"})]}),o.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[o.jsx(_c,{className:"h-5 w-5 text-yellow-400 mb-1 fill-yellow-400"}),o.jsx("span",{className:"text-2xl font-bold",children:n.rating.toFixed(1)}),o.jsxs("span",{className:"text-xs text-muted-foreground",children:[n.rating_count," 条评价"]})]}),o.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[o.jsx(f4,{className:"h-5 w-5 text-green-500 mb-1"}),o.jsx("span",{className:"text-2xl font-bold",children:n.likes}),o.jsx("span",{className:"text-xs text-muted-foreground",children:"点赞"})]}),o.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[o.jsx(g9,{className:"h-5 w-5 text-red-500 mb-1"}),o.jsx("span",{className:"text-2xl font-bold",children:n.dislikes}),o.jsx("span",{className:"text-xs text-muted-foreground",children:"点踩"})]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsxs(he,{variant:"outline",size:"sm",onClick:y,children:[o.jsx(f4,{className:"h-4 w-4 mr-1"}),"点赞"]}),o.jsxs(he,{variant:"outline",size:"sm",onClick:w,children:[o.jsx(g9,{className:"h-4 w-4 mr-1"}),"点踩"]}),o.jsxs(Dr,{open:h,onOpenChange:m,children:[o.jsx(Sf,{asChild:!0,children:o.jsxs(he,{variant:"default",size:"sm",children:[o.jsx(_c,{className:"h-4 w-4 mr-1"}),"评分"]})}),o.jsxs(Sr,{children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"为插件评分"}),o.jsx(ss,{children:"分享你的使用体验,帮助其他用户"})]}),o.jsxs("div",{className:"space-y-4 py-4",children:[o.jsxs("div",{className:"flex flex-col items-center gap-2",children:[o.jsx("div",{className:"flex gap-2",children:[1,2,3,4,5].map(k=>o.jsx("button",{onClick:()=>l(k),className:"focus:outline-none",children:o.jsx(_c,{className:`h-8 w-8 transition-colors ${k<=a?"fill-yellow-400 text-yellow-400":"text-muted-foreground hover:text-yellow-300"}`})},k))}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:[a===0&&"点击星星进行评分",a===1&&"很差",a===2&&"一般",a===3&&"还行",a===4&&"不错",a===5&&"非常好"]})]}),o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium mb-2 block",children:"评论(可选)"}),o.jsx(Ar,{value:c,onChange:k=>d(k.target.value),placeholder:"分享你的使用体验...",rows:4,maxLength:500}),o.jsxs("div",{className:"text-xs text-muted-foreground mt-1 text-right",children:[c.length," / 500"]})]})]}),o.jsxs(bs,{children:[o.jsx(he,{variant:"outline",onClick:()=>m(!1),children:"取消"}),o.jsx(he,{onClick:S,disabled:a===0,children:"提交评分"})]})]})]})]}),n.recent_ratings&&n.recent_ratings.length>0&&o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"text-sm font-semibold",children:"最近评价"}),o.jsx("div",{className:"space-y-3",children:n.recent_ratings.map((k,j)=>o.jsxs("div",{className:"p-3 rounded-lg border bg-muted/50",children:[o.jsxs("div",{className:"flex items-center justify-between mb-2",children:[o.jsx("div",{className:"flex gap-1",children:[1,2,3,4,5].map(N=>o.jsx(_c,{className:`h-3 w-3 ${N<=k.rating?"fill-yellow-400 text-yellow-400":"text-muted-foreground"}`},N))}),o.jsx("span",{className:"text-xs text-muted-foreground",children:new Date(k.created_at).toLocaleDateString()})]}),k.comment&&o.jsx("p",{className:"text-sm text-muted-foreground",children:k.comment})]},j))})]})]}):null}const Nz={"Group Management":"群组管理","Entertainment & Interaction":"娱乐互动","Utility Tools":"实用工具","Content Generation":"内容生成",Multimedia:"多媒体","External Integration":"外部集成","Data Analysis & Insights":"数据分析与洞察",Other:"其他"};function vMe(){const t=Zi(),[e,n]=b.useState(null),[r,s]=b.useState(""),[i,a]=b.useState("all"),[l,c]=b.useState("all"),[d,h]=b.useState(!0),[m,g]=b.useState([]),[x,y]=b.useState(!0),[w,S]=b.useState(null),[k,j]=b.useState(null),[N,T]=b.useState(null),[E,_]=b.useState(null),[,M]=b.useState([]),[I,P]=b.useState({}),{toast:L}=fs(),H=async R=>{const ie=R.map(async V=>{try{const te=await iX(V.id);return{id:V.id,stats:te}}catch(te){return console.warn(`Failed to load stats for ${V.id}:`,te),{id:V.id,stats:null}}}),W=await Promise.all(ie),q={};W.forEach(({id:V,stats:te})=>{te&&(q[V]=te)}),P(q)};b.useEffect(()=>{let R=null,ie=!1;return(async()=>{if(R=lMe(q=>{ie||(T(q),q.stage==="success"?setTimeout(()=>{ie||T(null)},2e3):q.stage==="error"&&(y(!1),S(q.error||"加载失败")))},q=>{console.error("WebSocket error:",q),ie||L({title:"WebSocket 连接失败",description:"无法实时显示加载进度",variant:"destructive"})}),await new Promise(q=>{if(!R){q();return}const V=()=>{R&&R.readyState===WebSocket.OPEN?(console.log("WebSocket connected, starting to load plugins"),q()):R&&R.readyState===WebSocket.CLOSED?(console.warn("WebSocket closed before loading plugins"),q()):setTimeout(V,100)};V()}),!ie){const q=await iMe();j(q),q.installed||L({title:"Git 未安装",description:q.error||"请先安装 Git 才能使用插件安装功能",variant:"destructive"})}if(!ie){const q=await aMe();_(q)}if(!ie)try{y(!0),S(null);const q=await sMe();if(!ie){const V=await U1();M(V);const te=q.map(ne=>{const K=W1(ne.id,V),se=G1(ne.id,V);return{...ne,installed:K,installed_version:se}});for(const ne of V)!te.some(se=>se.id===ne.id)&&ne.manifest&&te.push({id:ne.id,manifest:{manifest_version:ne.manifest.manifest_version||1,name:ne.manifest.name,version:ne.manifest.version,description:ne.manifest.description||"",author:ne.manifest.author,license:ne.manifest.license||"Unknown",host_application:ne.manifest.host_application,homepage_url:ne.manifest.homepage_url,repository_url:ne.manifest.repository_url,keywords:ne.manifest.keywords||[],categories:ne.manifest.categories||[],default_locale:ne.manifest.default_locale||"zh-CN",locales_path:ne.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!0,installed_version:ne.manifest.version,published_at:new Date().toISOString(),updated_at:new Date().toISOString()});g(te),H(te)}}catch(q){if(!ie){const V=q instanceof Error?q.message:"加载插件列表失败";S(V),L({title:"加载失败",description:V,variant:"destructive"})}}finally{ie||y(!1)}})(),()=>{ie=!0,R&&R.close()}},[L]);const U=R=>{if(!R.installed&&E&&!ee(R))return o.jsxs(Xn,{variant:"destructive",className:"gap-1",children:[o.jsx(Vc,{className:"h-3 w-3"}),"不兼容"]});if(R.installed){const ie=R.installed_version?.trim(),W=R.manifest.version?.trim();if(ie!==W){const q=ie?.split(".").map(Number)||[0,0,0],V=W?.split(".").map(Number)||[0,0,0];for(let te=0;te<3;te++){if((V[te]||0)>(q[te]||0))return o.jsxs(Xn,{variant:"outline",className:"gap-1 text-orange-600 border-orange-600",children:[o.jsx(Vc,{className:"h-3 w-3"}),"可更新"]});if((V[te]||0)<(q[te]||0))break}}return o.jsxs(Xn,{variant:"default",className:"gap-1",children:[o.jsx(Qc,{className:"h-3 w-3"}),"已安装"]})}return null},ee=R=>!E||!R.manifest?.host_application?!0:oMe(R.manifest.host_application.min_version,R.manifest.host_application.max_version,E),z=R=>{if(!R.installed||!R.installed_version||!R.manifest?.version)return!1;const ie=R.installed_version.trim(),W=R.manifest.version.trim();if(ie===W)return!1;const q=ie.split(".").map(Number),V=W.split(".").map(Number);for(let te=0;te<3;te++){if((V[te]||0)>(q[te]||0))return!0;if((V[te]||0)<(q[te]||0))return!1}return!1},Q=m.filter(R=>{if(!R.manifest)return console.warn("[过滤] 跳过无 manifest 的插件:",R.id),!1;const ie=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(te=>te.toLowerCase().includes(r.toLowerCase())),W=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i);let q=!0;l==="installed"?q=R.installed===!0:l==="updates"&&(q=R.installed===!0&&z(R));const V=!d||!E||ee(R);return ie&&W&&q&&V}),B=()=>{n(null)},X=async R=>{if(!k?.installed){L({title:"无法安装",description:"Git 未安装",variant:"destructive"});return}if(E&&!ee(R)){L({title:"无法安装",description:"插件与当前麦麦版本不兼容",variant:"destructive"});return}try{await cMe(R.id,R.manifest.repository_url||"","main"),pMe(R.id).catch(W=>{console.warn("Failed to record download:",W)}),L({title:"安装成功",description:`${R.manifest.name} 已成功安装`});const ie=await U1();M(ie),g(W=>W.map(q=>{if(q.id===R.id){const V=W1(q.id,ie),te=G1(q.id,ie);return{...q,installed:V,installed_version:te}}return q}))}catch(ie){L({title:"安装失败",description:ie instanceof Error?ie.message:"未知错误",variant:"destructive"})}},J=async R=>{try{await uMe(R.id),L({title:"卸载成功",description:`${R.manifest.name} 已成功卸载`});const ie=await U1();M(ie),g(W=>W.map(q=>{if(q.id===R.id){const V=W1(q.id,ie),te=G1(q.id,ie);return{...q,installed:V,installed_version:te}}return q}))}catch(ie){L({title:"卸载失败",description:ie instanceof Error?ie.message:"未知错误",variant:"destructive"})}},G=async R=>{if(!k?.installed){L({title:"无法更新",description:"Git 未安装",variant:"destructive"});return}try{const ie=await dMe(R.id,R.manifest.repository_url||"","main");L({title:"更新成功",description:`${R.manifest.name} 已从 ${ie.old_version} 更新到 ${ie.new_version}`});const W=await U1();M(W),g(q=>q.map(V=>{if(V.id===R.id){const te=W1(V.id,W),ne=G1(V.id,W);return{...V,installed:te,installed_version:ne}}return V}))}catch(ie){L({title:"更新失败",description:ie instanceof Error?ie.message:"未知错误",variant:"destructive"})}};return o.jsx(wn,{className:"h-full",children:o.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件市场"}),o.jsx("p",{className:"text-muted-foreground mt-2",children:"浏览和管理麦麦的插件"})]}),o.jsxs(he,{onClick:()=>t({to:"/plugin-mirrors"}),children:[o.jsx(Hee,{className:"h-4 w-4 mr-2"}),"配置镜像源"]})]}),k&&!k.installed&&o.jsxs(qt,{className:"border-orange-600 bg-orange-50 dark:bg-orange-950/20",children:[o.jsx(Fn,{children:o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx(Wa,{className:"h-5 w-5 text-orange-600"}),o.jsxs("div",{children:[o.jsx(qn,{className:"text-lg text-orange-900 dark:text-orange-100",children:"Git 未安装"}),o.jsx(ts,{className:"text-orange-800 dark:text-orange-200",children:k.error||"请先安装 Git 才能使用插件安装功能"})]})]})}),o.jsx(Gn,{children:o.jsxs("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:["您可以从 ",o.jsx("a",{href:"https://git-scm.com/downloads",target:"_blank",rel:"noopener noreferrer",className:"underline font-medium",children:"git-scm.com"})," 下载并安装 Git。 安装完成后,请重启麦麦应用。"]})})]}),o.jsx(qt,{className:"p-4",children:o.jsxs("div",{className:"flex flex-col gap-4",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[o.jsxs("div",{className:"flex-1 relative",children:[o.jsx(Ni,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(ze,{placeholder:"搜索插件...",value:r,onChange:R=>s(R.target.value),className:"pl-9"})]}),o.jsxs(Vt,{value:i,onValueChange:a,children:[o.jsx($t,{className:"w-full sm:w-[200px]",children:o.jsx(Ut,{placeholder:"选择分类"})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部分类"}),o.jsx(De,{value:"Group Management",children:"群组管理"}),o.jsx(De,{value:"Entertainment & Interaction",children:"娱乐互动"}),o.jsx(De,{value:"Utility Tools",children:"实用工具"}),o.jsx(De,{value:"Content Generation",children:"内容生成"}),o.jsx(De,{value:"Multimedia",children:"多媒体"}),o.jsx(De,{value:"External Integration",children:"外部集成"}),o.jsx(De,{value:"Data Analysis & Insights",children:"数据分析与洞察"}),o.jsx(De,{value:"Other",children:"其他"})]})]})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Oi,{id:"compatible-only",checked:d,onCheckedChange:R=>h(R===!0)}),o.jsx("label",{htmlFor:"compatible-only",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer",children:"只显示兼容当前版本的插件"})]})]})}),o.jsx(ja,{value:l,onValueChange:c,className:"w-full",children:o.jsxs(Wi,{className:"grid w-full grid-cols-3",children:[o.jsxs(Lt,{value:"all",children:["全部插件 (",m.filter(R=>{if(!R.manifest)return!1;const ie=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(V=>V.toLowerCase().includes(r.toLowerCase())),W=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i),q=!d||!E||ee(R);return ie&&W&&q}).length,")"]}),o.jsxs(Lt,{value:"installed",children:["已安装 (",m.filter(R=>{if(!R.manifest)return!1;const ie=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(V=>V.toLowerCase().includes(r.toLowerCase())),W=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i),q=!d||!E||ee(R);return R.installed&&ie&&W&&q}).length,")"]}),o.jsxs(Lt,{value:"updates",children:["可更新 (",m.filter(R=>{if(!R.manifest)return!1;const ie=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(V=>V.toLowerCase().includes(r.toLowerCase())),W=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i),q=!d||!E||ee(R);return R.installed&&z(R)&&ie&&W&&q}).length,")"]})]})}),N&&N.stage==="loading"&&o.jsx(qt,{className:"p-4",children:o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Uc,{className:"h-4 w-4 animate-spin"}),o.jsxs("span",{className:"text-sm font-medium",children:[N.operation==="fetch"&&"加载插件列表",N.operation==="install"&&`安装插件${N.plugin_id?`: ${N.plugin_id}`:""}`,N.operation==="uninstall"&&`卸载插件${N.plugin_id?`: ${N.plugin_id}`:""}`,N.operation==="update"&&`更新插件${N.plugin_id?`: ${N.plugin_id}`:""}`]})]}),o.jsxs("span",{className:"text-sm font-medium",children:[N.progress,"%"]})]}),o.jsx(zp,{value:N.progress,className:"h-2"}),o.jsx("div",{className:"text-xs text-muted-foreground",children:N.message}),N.operation==="fetch"&&N.total_plugins>0&&o.jsxs("div",{className:"text-xs text-muted-foreground text-center",children:["已加载 ",N.loaded_plugins," / ",N.total_plugins," 个插件"]})]})}),N&&N.stage==="error"&&N.error&&o.jsx(qt,{className:"border-destructive bg-destructive/10",children:o.jsx(Fn,{children:o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx(Wa,{className:"h-5 w-5 text-destructive"}),o.jsxs("div",{children:[o.jsx(qn,{className:"text-lg text-destructive",children:"加载失败"}),o.jsx(ts,{className:"text-destructive/80",children:N.error})]})]})})}),x?o.jsxs("div",{className:"flex items-center justify-center py-12",children:[o.jsx(Uc,{className:"h-8 w-8 animate-spin text-muted-foreground"}),o.jsx("span",{className:"ml-3 text-muted-foreground",children:"加载插件列表中..."})]}):w?o.jsx(qt,{className:"p-6",children:o.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[o.jsx(Wa,{className:"h-12 w-12 text-destructive mb-4"}),o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),o.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:w}),o.jsx(he,{onClick:()=>window.location.reload(),children:"重新加载"})]})}):Q.length===0?o.jsx(qt,{className:"p-6",children:o.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[o.jsx(Ni,{className:"h-12 w-12 text-muted-foreground mb-4"}),o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"未找到插件"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:r||i!=="all"?"尝试调整搜索条件或筛选器":"暂无可用插件"})]})}):o.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:Q.map(R=>o.jsxs(qt,{className:"flex flex-col hover:shadow-lg transition-shadow h-full",children:[o.jsxs(Fn,{children:[o.jsxs("div",{className:"flex items-start justify-between gap-2",children:[o.jsx(qn,{className:"text-xl",children:R.manifest?.name||R.id}),o.jsxs("div",{className:"flex flex-col gap-1",children:[R.manifest?.categories&&R.manifest.categories[0]&&o.jsx(Xn,{variant:"secondary",className:"text-xs whitespace-nowrap",children:Nz[R.manifest.categories[0]]||R.manifest.categories[0]}),U(R)]})]}),o.jsx(ts,{className:"line-clamp-2",children:R.manifest?.description||"无描述"})]}),o.jsx(Gn,{className:"flex-1",children:o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(Ku,{className:"h-4 w-4"}),o.jsx("span",{children:(I[R.id]?.downloads??R.downloads??0).toLocaleString()})]}),o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(_c,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),o.jsx("span",{children:(I[R.id]?.rating??R.rating??0).toFixed(1)})]})]}),o.jsxs("div",{className:"flex flex-wrap gap-2",children:[R.manifest?.keywords&&R.manifest.keywords.slice(0,3).map(ie=>o.jsx(Xn,{variant:"outline",className:"text-xs",children:ie},ie)),R.manifest?.keywords&&R.manifest.keywords.length>3&&o.jsxs(Xn,{variant:"outline",className:"text-xs",children:["+",R.manifest.keywords.length-3]})]}),o.jsxs("div",{className:"text-xs text-muted-foreground pt-2 border-t space-y-1",children:[o.jsxs("div",{children:["v",R.manifest?.version||"unknown"," · ",R.manifest?.author?.name||"Unknown"]}),R.manifest?.host_application&&o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx("span",{children:"支持:"}),o.jsxs("span",{className:"font-medium",children:[R.manifest.host_application.min_version,R.manifest.host_application.max_version?` - ${R.manifest.host_application.max_version}`:" - 最新版本"]})]})]})]})}),o.jsx(nL,{className:"pt-4",children:o.jsxs("div",{className:"flex items-center justify-end gap-2 w-full",children:[o.jsx(he,{variant:"outline",size:"sm",onClick:()=>n(R),children:"查看详情"}),R.installed?z(R)?o.jsxs(he,{size:"sm",disabled:!k?.installed,title:k?.installed?void 0:"Git 未安装",onClick:()=>G(R),children:[o.jsx(Qs,{className:"h-4 w-4 mr-1"}),"更新"]}):o.jsxs(he,{variant:"destructive",size:"sm",disabled:!k?.installed,title:k?.installed?void 0:"Git 未安装",onClick:()=>J(R),children:[o.jsx(Sn,{className:"h-4 w-4 mr-1"}),"卸载"]}):o.jsxs(he,{size:"sm",disabled:!k?.installed||N?.operation==="install"||E!==null&&!ee(R),title:k?.installed?E!==null&&!ee(R)?`不兼容当前版本 (需要 ${R.manifest?.host_application?.min_version||"未知"}${R.manifest?.host_application?.max_version?` - ${R.manifest.host_application.max_version}`:"+"},当前 ${E?.version})`:void 0:"Git 未安装",onClick:()=>X(R),children:[o.jsx(Ku,{className:"h-4 w-4 mr-1"}),N?.operation==="install"&&N?.plugin_id===R.id?"安装中...":"安装"]})]})})]},R.id))}),o.jsx(Dr,{open:e!==null,onOpenChange:B,children:e&&e.manifest&&o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsx(kr,{children:o.jsxs("div",{className:"flex items-start justify-between gap-4",children:[o.jsxs("div",{className:"space-y-2 flex-1",children:[o.jsx(Or,{className:"text-2xl",children:e.manifest.name}),o.jsxs(ss,{children:["作者: ",e.manifest.author?.name||"Unknown",e.manifest.author?.url&&o.jsx("a",{href:e.manifest.author.url,target:"_blank",rel:"noopener noreferrer",className:"ml-2 text-primary hover:underline",children:o.jsx(Mh,{className:"h-3 w-3 inline"})})]})]}),o.jsxs("div",{className:"flex flex-col gap-2",children:[e.manifest.categories&&e.manifest.categories[0]&&o.jsx(Xn,{variant:"secondary",children:Nz[e.manifest.categories[0]]||e.manifest.categories[0]}),U(e)]})]})}),o.jsxs("div",{className:"space-y-6",children:[o.jsx(xMe,{pluginId:e.id}),o.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-4",children:[o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:"版本"}),o.jsxs("p",{className:"text-sm text-muted-foreground",children:["v",e.manifest?.version||"unknown"]}),e.installed&&e.installed_version&&o.jsxs("p",{className:"text-xs text-muted-foreground",children:["已安装: v",e.installed_version]})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:"下载量"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:(I[e.id]?.downloads??e.downloads??0).toLocaleString()})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:"评分"}),o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(_c,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:[(I[e.id]?.rating??e.rating??0).toFixed(1)," (",I[e.id]?.rating_count??e.review_count??0,")"]})]})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:"许可证"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:e.manifest.license||"Unknown"})]}),o.jsxs("div",{className:"col-span-2",children:[o.jsx("p",{className:"text-sm font-medium",children:"支持版本"}),o.jsxs("p",{className:"text-sm text-muted-foreground",children:[e.manifest.host_application?.min_version||"未知",e.manifest.host_application?.max_version?` - ${e.manifest.host_application.max_version}`:" - 最新版本"]})]})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium mb-2",children:"关键词"}),o.jsx("div",{className:"flex flex-wrap gap-2",children:e.manifest.keywords&&e.manifest.keywords.map(R=>o.jsx(Xn,{variant:"outline",children:R},R))})]}),e.detailed_description&&o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium mb-2",children:"详细说明"}),o.jsx("p",{className:"text-sm text-muted-foreground whitespace-pre-line",children:e.detailed_description})]}),!e.detailed_description&&o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium mb-2",children:"说明"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:e.manifest.description||"无描述"})]}),o.jsxs("div",{className:"space-y-2",children:[e.manifest.homepage_url&&o.jsxs("div",{className:"text-sm",children:[o.jsx("span",{className:"font-medium",children:"主页: "}),o.jsx("a",{href:e.manifest.homepage_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:e.manifest.homepage_url})]}),e.manifest.repository_url&&o.jsxs("div",{className:"text-sm",children:[o.jsx("span",{className:"font-medium",children:"仓库: "}),o.jsx("a",{href:e.manifest.repository_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:e.manifest.repository_url})]})]})]}),o.jsxs(bs,{children:[e.manifest.homepage_url&&o.jsxs(he,{onClick:()=>window.open(e.manifest.homepage_url,"_blank"),children:[o.jsx(Mh,{className:"h-4 w-4 mr-2"}),"访问主页"]}),e.manifest.repository_url&&o.jsxs(he,{variant:"outline",onClick:()=>window.open(e.manifest.repository_url,"_blank"),children:[o.jsx(Mh,{className:"h-4 w-4 mr-2"}),"查看仓库"]})]})]})})]})})}function yMe(){return o.jsx(wn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件配置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理和配置已安装的插件"})]}),o.jsxs("div",{className:"flex gap-2",children:[o.jsxs(he,{variant:"outline",size:"sm",children:[o.jsx(Qs,{className:"h-4 w-4 mr-2"}),"刷新"]}),o.jsxs(he,{size:"sm",children:[o.jsx(Xu,{className:"h-4 w-4 mr-2"}),"全局设置"]})]})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-4",children:[o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"已安装插件"}),o.jsx(Uh,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:"0"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"正在加载..."})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"已启用"}),o.jsx(Qc,{className:"h-4 w-4 text-green-600"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:"0"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"运行中的插件"})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"已禁用"}),o.jsx(Vc,{className:"h-4 w-4 text-orange-600"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:"0"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"未激活的插件"})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"可更新"}),o.jsx(Qs,{className:"h-4 w-4 text-blue-600"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:"0"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"有新版本可用"})]})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"已安装的插件"}),o.jsx(ts,{children:"查看和管理已安装插件的配置"})]}),o.jsx(Gn,{children:o.jsxs("div",{className:"flex flex-col items-center justify-center py-12 space-y-4",children:[o.jsx(Uh,{className:"h-16 w-16 text-muted-foreground/50"}),o.jsxs("div",{className:"text-center space-y-2",children:[o.jsx("p",{className:"text-lg font-medium text-muted-foreground",children:"插件配置功能开发中"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"即将支持插件的启用/禁用、参数配置等功能"})]}),o.jsx("div",{className:"flex gap-2",children:o.jsx(he,{variant:"outline",asChild:!0,children:o.jsxs("a",{href:"/plugins",children:[o.jsx(Mh,{className:"h-4 w-4 mr-2"}),"前往插件市场"]})})})]})})]}),o.jsx(qt,{className:"border-blue-200 bg-blue-50 dark:bg-blue-950/20 dark:border-blue-900",children:o.jsx(Gn,{className:"pt-6",children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Vc,{className:"h-5 w-5 text-blue-600 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"space-y-1",children:[o.jsx("p",{className:"text-sm font-medium text-blue-900 dark:text-blue-100",children:"开发进行中"}),o.jsxs("p",{className:"text-sm text-blue-800 dark:text-blue-200",children:["插件配置功能正在积极开发中。目前您可以通过",o.jsx("strong",{children:"插件市场"}),"安装和卸载插件,完整的配置管理功能即将推出。"]})]})]})})})]})})}function bMe(){const t=Zi(),{toast:e}=fs(),[n,r]=b.useState([]),[s,i]=b.useState(!0),[a,l]=b.useState(null),[c,d]=b.useState(null),[h,m]=b.useState(!1),[g,x]=b.useState(!1),[y,w]=b.useState({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),S=b.useCallback(async()=>{try{i(!0),l(null);const M=localStorage.getItem("access-token"),I=await fetch("/api/webui/plugins/mirrors",{headers:{Authorization:`Bearer ${M}`}});if(!I.ok)throw new Error("获取镜像源列表失败");const P=await I.json();r(P.mirrors||[])}catch(M){const I=M instanceof Error?M.message:"加载镜像源失败";l(I),e({title:"加载失败",description:I,variant:"destructive"})}finally{i(!1)}},[e]);b.useEffect(()=>{S()},[S]);const k=async()=>{try{const M=localStorage.getItem("access-token"),I=await fetch("/api/webui/plugins/mirrors",{method:"POST",headers:{Authorization:`Bearer ${M}`,"Content-Type":"application/json"},body:JSON.stringify(y)});if(!I.ok){const P=await I.json();throw new Error(P.detail||"添加镜像源失败")}e({title:"添加成功",description:"镜像源已添加"}),m(!1),w({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),S()}catch(M){e({title:"添加失败",description:M instanceof Error?M.message:"未知错误",variant:"destructive"})}},j=async()=>{if(c)try{const M=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${c.id}`,{method:"PUT",headers:{Authorization:`Bearer ${M}`,"Content-Type":"application/json"},body:JSON.stringify({name:y.name,raw_prefix:y.raw_prefix,clone_prefix:y.clone_prefix,enabled:y.enabled,priority:y.priority})})).ok)throw new Error("更新镜像源失败");e({title:"更新成功",description:"镜像源已更新"}),x(!1),d(null),S()}catch(M){e({title:"更新失败",description:M instanceof Error?M.message:"未知错误",variant:"destructive"})}},N=async M=>{if(confirm("确定要删除这个镜像源吗?"))try{const I=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${M}`,{method:"DELETE",headers:{Authorization:`Bearer ${I}`}})).ok)throw new Error("删除镜像源失败");e({title:"删除成功",description:"镜像源已删除"}),S()}catch(I){e({title:"删除失败",description:I instanceof Error?I.message:"未知错误",variant:"destructive"})}},T=async M=>{try{const I=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${M.id}`,{method:"PUT",headers:{Authorization:`Bearer ${I}`,"Content-Type":"application/json"},body:JSON.stringify({enabled:!M.enabled})})).ok)throw new Error("更新状态失败");S()}catch(I){e({title:"更新失败",description:I instanceof Error?I.message:"未知错误",variant:"destructive"})}},E=M=>{d(M),w({id:M.id,name:M.name,raw_prefix:M.raw_prefix,clone_prefix:M.clone_prefix,enabled:M.enabled,priority:M.priority}),x(!0)},_=async(M,I)=>{const P=I==="up"?M.priority-1:M.priority+1;if(!(P<1))try{const L=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${M.id}`,{method:"PUT",headers:{Authorization:`Bearer ${L}`,"Content-Type":"application/json"},body:JSON.stringify({priority:P})})).ok)throw new Error("更新优先级失败");S()}catch(L){e({title:"更新失败",description:L instanceof Error?L.message:"未知错误",variant:"destructive"})}};return o.jsx(wn,{className:"h-full",children:o.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsx(he,{variant:"ghost",size:"icon",onClick:()=>t({to:"/plugins"}),children:o.jsx(pI,{className:"h-5 w-5"})}),o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"镜像源配置"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理 Git 克隆和文件下载的镜像源"})]})]}),o.jsxs(he,{onClick:()=>m(!0),children:[o.jsx(zs,{className:"h-4 w-4 mr-2"}),"添加镜像源"]})]}),s?o.jsx(qt,{className:"p-6",children:o.jsx("div",{className:"flex items-center justify-center py-8",children:o.jsx(Uc,{className:"h-8 w-8 animate-spin text-primary"})})}):a?o.jsx(qt,{className:"p-6",children:o.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[o.jsx(Wa,{className:"h-12 w-12 text-destructive mb-4"}),o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),o.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:a}),o.jsx(he,{onClick:S,children:"重新加载"})]})}):o.jsxs(qt,{children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(Tf,{children:[o.jsx(Ef,{children:o.jsxs(Ps,{children:[o.jsx(pn,{children:"状态"}),o.jsx(pn,{children:"名称"}),o.jsx(pn,{children:"ID"}),o.jsx(pn,{children:"优先级"}),o.jsx(pn,{className:"text-right",children:"操作"})]})}),o.jsx(_f,{children:n.map(M=>o.jsxs(Ps,{children:[o.jsx(Gt,{children:o.jsx(Bt,{checked:M.enabled,onCheckedChange:()=>T(M)})}),o.jsx(Gt,{children:o.jsxs("div",{children:[o.jsx("div",{className:"font-medium",children:M.name}),o.jsxs("div",{className:"text-xs text-muted-foreground mt-1",children:["Raw: ",M.raw_prefix]})]})}),o.jsx(Gt,{children:o.jsx(Xn,{variant:"outline",children:M.id})}),o.jsx(Gt,{children:o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"font-mono",children:M.priority}),o.jsxs("div",{className:"flex flex-col gap-1",children:[o.jsx(he,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>_(M,"up"),disabled:M.priority===1,children:o.jsx(A0,{className:"h-3 w-3"})}),o.jsx(he,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>_(M,"down"),children:o.jsx(nd,{className:"h-3 w-3"})})]})]})}),o.jsx(Gt,{className:"text-right",children:o.jsxs("div",{className:"flex items-center justify-end gap-2",children:[o.jsx(he,{variant:"ghost",size:"icon",onClick:()=>E(M),children:o.jsx(Yu,{className:"h-4 w-4"})}),o.jsx(he,{variant:"ghost",size:"icon",onClick:()=>N(M.id),children:o.jsx(Sn,{className:"h-4 w-4 text-destructive"})})]})})]},M.id))})]})}),o.jsx("div",{className:"md:hidden p-4 space-y-4",children:n.map(M=>o.jsx(qt,{className:"p-4",children:o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-start justify-between",children:[o.jsxs("div",{className:"flex-1",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("h3",{className:"font-semibold",children:M.name}),M.enabled&&o.jsx(Xn,{variant:"default",className:"text-xs",children:"启用"})]}),o.jsx(Xn,{variant:"outline",className:"mt-1 text-xs",children:M.id})]}),o.jsx(Bt,{checked:M.enabled,onCheckedChange:()=>T(M)})]}),o.jsxs("div",{className:"text-sm space-y-1",children:[o.jsxs("div",{className:"text-muted-foreground",children:[o.jsx("span",{className:"font-medium",children:"Raw: "}),o.jsx("span",{className:"break-all",children:M.raw_prefix})]}),o.jsxs("div",{className:"text-muted-foreground",children:[o.jsx("span",{className:"font-medium",children:"优先级: "}),o.jsx("span",{className:"font-mono",children:M.priority})]})]}),o.jsxs("div",{className:"flex items-center gap-2 pt-2 border-t",children:[o.jsxs(he,{variant:"outline",size:"sm",className:"flex-1",onClick:()=>E(M),children:[o.jsx(Yu,{className:"h-4 w-4 mr-1"}),"编辑"]}),o.jsx(he,{variant:"outline",size:"sm",onClick:()=>_(M,"up"),disabled:M.priority===1,children:o.jsx(A0,{className:"h-4 w-4"})}),o.jsx(he,{variant:"outline",size:"sm",onClick:()=>_(M,"down"),children:o.jsx(nd,{className:"h-4 w-4"})}),o.jsx(he,{variant:"destructive",size:"sm",onClick:()=>N(M.id),children:o.jsx(Sn,{className:"h-4 w-4"})})]})]})},M.id))})]}),o.jsx(Dr,{open:h,onOpenChange:m,children:o.jsxs(Sr,{className:"max-w-lg",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"添加镜像源"}),o.jsx(ss,{children:"添加新的 Git 镜像源配置"})]}),o.jsxs("div",{className:"space-y-4 py-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"add-id",children:"镜像源 ID *"}),o.jsx(ze,{id:"add-id",placeholder:"例如: my-mirror",value:y.id,onChange:M=>w({...y,id:M.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"add-name",children:"名称 *"}),o.jsx(ze,{id:"add-name",placeholder:"例如: 我的镜像源",value:y.name,onChange:M=>w({...y,name:M.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"add-raw",children:"Raw 文件前缀 *"}),o.jsx(ze,{id:"add-raw",placeholder:"https://example.com/raw",value:y.raw_prefix,onChange:M=>w({...y,raw_prefix:M.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"add-clone",children:"克隆前缀 *"}),o.jsx(ze,{id:"add-clone",placeholder:"https://example.com/clone",value:y.clone_prefix,onChange:M=>w({...y,clone_prefix:M.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"add-priority",children:"优先级"}),o.jsx(ze,{id:"add-priority",type:"number",min:"1",value:y.priority,onChange:M=>w({...y,priority:parseInt(M.target.value)||1})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"add-enabled",checked:y.enabled,onCheckedChange:M=>w({...y,enabled:M})}),o.jsx(de,{htmlFor:"add-enabled",children:"启用此镜像源"})]})]}),o.jsxs(bs,{children:[o.jsx(he,{variant:"outline",onClick:()=>m(!1),children:"取消"}),o.jsx(he,{onClick:k,children:"添加"})]})]})}),o.jsx(Dr,{open:g,onOpenChange:x,children:o.jsxs(Sr,{className:"max-w-lg",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"编辑镜像源"}),o.jsx(ss,{children:"修改镜像源配置"})]}),o.jsxs("div",{className:"space-y-4 py-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{children:"镜像源 ID"}),o.jsx(ze,{value:y.id,disabled:!0})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"edit-name",children:"名称 *"}),o.jsx(ze,{id:"edit-name",value:y.name,onChange:M=>w({...y,name:M.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"edit-raw",children:"Raw 文件前缀 *"}),o.jsx(ze,{id:"edit-raw",value:y.raw_prefix,onChange:M=>w({...y,raw_prefix:M.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"edit-clone",children:"克隆前缀 *"}),o.jsx(ze,{id:"edit-clone",value:y.clone_prefix,onChange:M=>w({...y,clone_prefix:M.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"edit-priority",children:"优先级"}),o.jsx(ze,{id:"edit-priority",type:"number",min:"1",value:y.priority,onChange:M=>w({...y,priority:parseInt(M.target.value)||1})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"edit-enabled",checked:y.enabled,onCheckedChange:M=>w({...y,enabled:M})}),o.jsx(de,{htmlFor:"edit-enabled",children:"启用此镜像源"})]})]}),o.jsxs(bs,{children:[o.jsx(he,{variant:"outline",onClick:()=>x(!1),children:"取消"}),o.jsx(he,{onClick:j,children:"保存"})]})]})})]})})}const wMe=wf("pointer-events-none inline-flex select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono font-medium opacity-100",{variants:{size:{sm:"h-5 text-[10px]",default:"h-6 text-xs",lg:"h-7 text-sm"}},defaultVariants:{size:"default"}}),aX=b.forwardRef(({className:t,size:e,abbrTitle:n,children:r,...s},i)=>o.jsx("kbd",{className:ve(wMe({size:e,className:t})),ref:i,...s,children:n?o.jsx("abbr",{title:n,children:r}):r}));aX.displayName="Kbd";const SMe=[{icon:M0,title:"首页",description:"查看仪表板概览",path:"/",category:"概览"},{icon:Pl,title:"麦麦主程序配置",description:"配置麦麦的核心设置",path:"/config/bot",category:"配置"},{icon:xI,title:"麦麦模型提供商配置",description:"配置模型提供商",path:"/config/modelProvider",category:"配置"},{icon:vI,title:"麦麦模型配置",description:"配置模型参数",path:"/config/model",category:"配置"},{icon:Nj,title:"表情包管理",description:"管理麦麦的表情包",path:"/resource/emoji",category:"资源"},{icon:Cp,title:"表达方式管理",description:"管理麦麦的表达方式",path:"/resource/expression",category:"资源"},{icon:yI,title:"人物信息管理",description:"管理人物信息",path:"/resource/person",category:"资源"},{icon:Qee,title:"统计信息",description:"查看使用统计",path:"/statistics",category:"监控"},{icon:Uh,title:"插件市场",description:"浏览和安装插件",path:"/plugins",category:"扩展"},{icon:_v,title:"日志查看器",description:"查看系统日志",path:"/logs",category:"监控"},{icon:Xu,title:"系统设置",description:"配置系统参数",path:"/settings",category:"系统"}];function kMe({open:t,onOpenChange:e}){const[n,r]=b.useState(""),[s,i]=b.useState(0),a=Zi(),l=SMe.filter(h=>h.title.toLowerCase().includes(n.toLowerCase())||h.description.toLowerCase().includes(n.toLowerCase())||h.category.toLowerCase().includes(n.toLowerCase()));b.useEffect(()=>{t&&(r(""),i(0))},[t]);const c=b.useCallback(h=>{a({to:h}),e(!1)},[a,e]),d=b.useCallback(h=>{h.key==="ArrowDown"?(h.preventDefault(),i(m=>(m+1)%l.length)):h.key==="ArrowUp"?(h.preventDefault(),i(m=>(m-1+l.length)%l.length)):h.key==="Enter"&&l[s]&&(h.preventDefault(),c(l[s].path))},[l,s,c]);return o.jsx(Dr,{open:t,onOpenChange:e,children:o.jsxs(Sr,{className:"max-w-2xl p-0 gap-0",children:[o.jsxs(kr,{className:"px-4 pt-4 pb-0",children:[o.jsx(Or,{className:"sr-only",children:"搜索"}),o.jsxs("div",{className:"relative",children:[o.jsx(Ni,{className:"absolute left-3 top-1/2 h-5 w-5 -translate-y-1/2 text-muted-foreground"}),o.jsx(ze,{value:n,onChange:h=>{r(h.target.value),i(0)},onKeyDown:d,placeholder:"搜索页面...",className:"h-12 pl-11 text-base border-0 focus-visible:ring-0 shadow-none",autoFocus:!0})]})]}),o.jsx("div",{className:"border-t",children:o.jsx(wn,{className:"h-[400px]",children:l.length>0?o.jsx("div",{className:"p-2",children:l.map((h,m)=>{const g=h.icon;return o.jsxs("button",{onClick:()=>c(h.path),onMouseEnter:()=>i(m),className:ve("w-full flex items-center gap-3 px-3 py-2.5 rounded-md text-left transition-colors",m===s?"bg-accent text-accent-foreground":"hover:bg-accent/50"),children:[o.jsx(g,{className:"h-5 w-5 flex-shrink-0"}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("div",{className:"font-medium text-sm",children:h.title}),o.jsx("div",{className:"text-xs text-muted-foreground truncate",children:h.description})]}),o.jsx("div",{className:"text-xs text-muted-foreground px-2 py-1 bg-muted rounded",children:h.category})]},h.path)})}):o.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[o.jsx(Ni,{className:"h-12 w-12 text-muted-foreground/50 mb-4"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:n?"未找到匹配的页面":"输入关键词开始搜索"})]})})}),o.jsx("div",{className:"border-t px-4 py-3 flex items-center justify-between text-xs text-muted-foreground",children:o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsxs("span",{className:"flex items-center gap-1",children:[o.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↑"}),o.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↓"}),"导航"]}),o.jsxs("span",{className:"flex items-center gap-1",children:[o.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Enter"}),"选择"]}),o.jsxs("span",{className:"flex items-center gap-1",children:[o.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Esc"}),"关闭"]})]})})]})})}function OMe(t){const e=jMe(t),n=b.forwardRef((r,s)=>{const{children:i,...a}=r,l=b.Children.toArray(i),c=l.find(CMe);if(c){const d=c.props.children,h=l.map(m=>m===c?b.Children.count(d)>1?b.Children.only(null):b.isValidElement(d)?d.props.children:null:m);return o.jsx(e,{...a,ref:s,children:b.isValidElement(d)?b.cloneElement(d,void 0,h):null})}return o.jsx(e,{...a,ref:s,children:i})});return n.displayName=`${t}.Slot`,n}function jMe(t){const e=b.forwardRef((n,r)=>{const{children:s,...i}=n;if(b.isValidElement(s)){const a=EMe(s),l=TMe(i,s.props);return s.type!==b.Fragment&&(l.ref=r?Hc(r,a):a),b.cloneElement(s,l)}return b.Children.count(s)>1?b.Children.only(null):null});return e.displayName=`${t}.SlotClone`,e}var NMe=Symbol("radix.slottable");function CMe(t){return b.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===NMe}function TMe(t,e){const n={...e};for(const r in e){const s=t[r],i=e[r];/^on[A-Z]/.test(r)?s&&i?n[r]=(...l)=>{const c=i(...l);return s(...l),c}:s&&(n[r]=s):r==="style"?n[r]={...s,...i}:r==="className"&&(n[r]=[s,i].filter(Boolean).join(" "))}return{...t,...n}}function EMe(t){let e=Object.getOwnPropertyDescriptor(t.props,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning;return n?t.ref:(e=Object.getOwnPropertyDescriptor(t,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning,n?t.props.ref:t.props.ref||t.ref)}var rj=["Enter"," "],_Me=["ArrowDown","PageUp","Home"],oX=["ArrowUp","PageDown","End"],MMe=[..._Me,...oX],AMe={ltr:[...rj,"ArrowRight"],rtl:[...rj,"ArrowLeft"]},RMe={ltr:["ArrowLeft"],rtl:["ArrowRight"]},wg="Menu",[kp,DMe,PMe]=Dy(wg),[jd,lX]=Ra(wg,[PMe,gf,Gy]),Sg=gf(),cX=Gy(),[uX,fu]=jd(wg),[zMe,kg]=jd(wg),dX=t=>{const{__scopeMenu:e,open:n=!1,children:r,dir:s,onOpenChange:i,modal:a=!0}=t,l=Sg(e),[c,d]=b.useState(null),h=b.useRef(!1),m=qs(i),g=Np(s);return b.useEffect(()=>{const x=()=>{h.current=!0,document.addEventListener("pointerdown",y,{capture:!0,once:!0}),document.addEventListener("pointermove",y,{capture:!0,once:!0})},y=()=>h.current=!1;return document.addEventListener("keydown",x,{capture:!0}),()=>{document.removeEventListener("keydown",x,{capture:!0}),document.removeEventListener("pointerdown",y,{capture:!0}),document.removeEventListener("pointermove",y,{capture:!0})}},[]),o.jsx(By,{...l,children:o.jsx(uX,{scope:e,open:n,onOpenChange:m,content:c,onContentChange:d,children:o.jsx(zMe,{scope:e,onClose:b.useCallback(()=>m(!1),[m]),isUsingKeyboardRef:h,dir:g,modal:a,children:r})})})};dX.displayName=wg;var IMe="MenuAnchor",c7=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t,s=Sg(n);return o.jsx(Fy,{...s,...r,ref:e})});c7.displayName=IMe;var u7="MenuPortal",[LMe,hX]=jd(u7,{forceMount:void 0}),fX=t=>{const{__scopeMenu:e,forceMount:n,children:r,container:s}=t,i=fu(u7,e);return o.jsx(LMe,{scope:e,forceMount:n,children:o.jsx(si,{present:n||i.open,children:o.jsx(Ly,{asChild:!0,container:s,children:r})})})};fX.displayName=u7;var Ta="MenuContent",[BMe,d7]=jd(Ta),mX=b.forwardRef((t,e)=>{const n=hX(Ta,t.__scopeMenu),{forceMount:r=n.forceMount,...s}=t,i=fu(Ta,t.__scopeMenu),a=kg(Ta,t.__scopeMenu);return o.jsx(kp.Provider,{scope:t.__scopeMenu,children:o.jsx(si,{present:r||i.open,children:o.jsx(kp.Slot,{scope:t.__scopeMenu,children:a.modal?o.jsx(FMe,{...s,ref:e}):o.jsx(qMe,{...s,ref:e})})})})}),FMe=b.forwardRef((t,e)=>{const n=fu(Ta,t.__scopeMenu),r=b.useRef(null),s=Yn(e,r);return b.useEffect(()=>{const i=r.current;if(i)return iI(i)},[]),o.jsx(h7,{...t,ref:s,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:nt(t.onFocusOutside,i=>i.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),qMe=b.forwardRef((t,e)=>{const n=fu(Ta,t.__scopeMenu);return o.jsx(h7,{...t,ref:e,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),$Me=OMe("MenuContent.ScrollLock"),h7=b.forwardRef((t,e)=>{const{__scopeMenu:n,loop:r=!1,trapFocus:s,onOpenAutoFocus:i,onCloseAutoFocus:a,disableOutsidePointerEvents:l,onEntryFocus:c,onEscapeKeyDown:d,onPointerDownOutside:h,onFocusOutside:m,onInteractOutside:g,onDismiss:x,disableOutsideScroll:y,...w}=t,S=fu(Ta,n),k=kg(Ta,n),j=Sg(n),N=cX(n),T=DMe(n),[E,_]=b.useState(null),M=b.useRef(null),I=Yn(e,M,S.onContentChange),P=b.useRef(0),L=b.useRef(""),H=b.useRef(0),U=b.useRef(null),ee=b.useRef("right"),z=b.useRef(0),Q=y?aI:b.Fragment,B=y?{as:$Me,allowPinchZoom:!0}:void 0,X=G=>{const R=L.current+G,ie=T().filter(K=>!K.disabled),W=document.activeElement,q=ie.find(K=>K.ref.current===W)?.textValue,V=ie.map(K=>K.textValue),te=eAe(V,R,q),ne=ie.find(K=>K.textValue===te)?.ref.current;(function K(se){L.current=se,window.clearTimeout(P.current),se!==""&&(P.current=window.setTimeout(()=>K(""),1e3))})(R),ne&&setTimeout(()=>ne.focus())};b.useEffect(()=>()=>window.clearTimeout(P.current),[]),oI();const J=b.useCallback(G=>ee.current===U.current?.side&&nAe(G,U.current?.area),[]);return o.jsx(BMe,{scope:n,searchRef:L,onItemEnter:b.useCallback(G=>{J(G)&&G.preventDefault()},[J]),onItemLeave:b.useCallback(G=>{J(G)||(M.current?.focus(),_(null))},[J]),onTriggerLeave:b.useCallback(G=>{J(G)&&G.preventDefault()},[J]),pointerGraceTimerRef:H,onPointerGraceIntentChange:b.useCallback(G=>{U.current=G},[]),children:o.jsx(Q,{...B,children:o.jsx(lI,{asChild:!0,trapped:s,onMountAutoFocus:nt(i,G=>{G.preventDefault(),M.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:a,children:o.jsx(kj,{asChild:!0,disableOutsidePointerEvents:l,onEscapeKeyDown:d,onPointerDownOutside:h,onFocusOutside:m,onInteractOutside:g,onDismiss:x,children:o.jsx(lL,{asChild:!0,...N,dir:k.dir,orientation:"vertical",loop:r,currentTabStopId:E,onCurrentTabStopIdChange:_,onEntryFocus:nt(c,G=>{k.isUsingKeyboardRef.current||G.preventDefault()}),preventScrollOnEntryFocus:!0,children:o.jsx(Oj,{role:"menu","aria-orientation":"vertical","data-state":MX(S.open),"data-radix-menu-content":"",dir:k.dir,...j,...w,ref:I,style:{outline:"none",...w.style},onKeyDown:nt(w.onKeyDown,G=>{const ie=G.target.closest("[data-radix-menu-content]")===G.currentTarget,W=G.ctrlKey||G.altKey||G.metaKey,q=G.key.length===1;ie&&(G.key==="Tab"&&G.preventDefault(),!W&&q&&X(G.key));const V=M.current;if(G.target!==V||!MMe.includes(G.key))return;G.preventDefault();const ne=T().filter(K=>!K.disabled).map(K=>K.ref.current);oX.includes(G.key)&&ne.reverse(),ZMe(ne)}),onBlur:nt(t.onBlur,G=>{G.currentTarget.contains(G.target)||(window.clearTimeout(P.current),L.current="")}),onPointerMove:nt(t.onPointerMove,Op(G=>{const R=G.target,ie=z.current!==G.clientX;if(G.currentTarget.contains(R)&&ie){const W=G.clientX>z.current?"right":"left";ee.current=W,z.current=G.clientX}}))})})})})})})});mX.displayName=Ta;var HMe="MenuGroup",f7=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t;return o.jsx(gn.div,{role:"group",...r,ref:e})});f7.displayName=HMe;var QMe="MenuLabel",pX=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t;return o.jsx(gn.div,{...r,ref:e})});pX.displayName=QMe;var _y="MenuItem",Cz="menu.itemSelect",Kb=b.forwardRef((t,e)=>{const{disabled:n=!1,onSelect:r,...s}=t,i=b.useRef(null),a=kg(_y,t.__scopeMenu),l=d7(_y,t.__scopeMenu),c=Yn(e,i),d=b.useRef(!1),h=()=>{const m=i.current;if(!n&&m){const g=new CustomEvent(Cz,{bubbles:!0,cancelable:!0});m.addEventListener(Cz,x=>r?.(x),{once:!0}),uI(m,g),g.defaultPrevented?d.current=!1:a.onClose()}};return o.jsx(gX,{...s,ref:c,disabled:n,onClick:nt(t.onClick,h),onPointerDown:m=>{t.onPointerDown?.(m),d.current=!0},onPointerUp:nt(t.onPointerUp,m=>{d.current||m.currentTarget?.click()}),onKeyDown:nt(t.onKeyDown,m=>{const g=l.searchRef.current!=="";n||g&&m.key===" "||rj.includes(m.key)&&(m.currentTarget.click(),m.preventDefault())})})});Kb.displayName=_y;var gX=b.forwardRef((t,e)=>{const{__scopeMenu:n,disabled:r=!1,textValue:s,...i}=t,a=d7(_y,n),l=cX(n),c=b.useRef(null),d=Yn(e,c),[h,m]=b.useState(!1),[g,x]=b.useState("");return b.useEffect(()=>{const y=c.current;y&&x((y.textContent??"").trim())},[i.children]),o.jsx(kp.ItemSlot,{scope:n,disabled:r,textValue:s??g,children:o.jsx(cL,{asChild:!0,...l,focusable:!r,children:o.jsx(gn.div,{role:"menuitem","data-highlighted":h?"":void 0,"aria-disabled":r||void 0,"data-disabled":r?"":void 0,...i,ref:d,onPointerMove:nt(t.onPointerMove,Op(y=>{r?a.onItemLeave(y):(a.onItemEnter(y),y.defaultPrevented||y.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:nt(t.onPointerLeave,Op(y=>a.onItemLeave(y))),onFocus:nt(t.onFocus,()=>m(!0)),onBlur:nt(t.onBlur,()=>m(!1))})})})}),VMe="MenuCheckboxItem",xX=b.forwardRef((t,e)=>{const{checked:n=!1,onCheckedChange:r,...s}=t;return o.jsx(SX,{scope:t.__scopeMenu,checked:n,children:o.jsx(Kb,{role:"menuitemcheckbox","aria-checked":My(n)?"mixed":n,...s,ref:e,"data-state":g7(n),onSelect:nt(s.onSelect,()=>r?.(My(n)?!0:!n),{checkForDefaultPrevented:!1})})})});xX.displayName=VMe;var vX="MenuRadioGroup",[UMe,WMe]=jd(vX,{value:void 0,onValueChange:()=>{}}),yX=b.forwardRef((t,e)=>{const{value:n,onValueChange:r,...s}=t,i=qs(r);return o.jsx(UMe,{scope:t.__scopeMenu,value:n,onValueChange:i,children:o.jsx(f7,{...s,ref:e})})});yX.displayName=vX;var bX="MenuRadioItem",wX=b.forwardRef((t,e)=>{const{value:n,...r}=t,s=WMe(bX,t.__scopeMenu),i=n===s.value;return o.jsx(SX,{scope:t.__scopeMenu,checked:i,children:o.jsx(Kb,{role:"menuitemradio","aria-checked":i,...r,ref:e,"data-state":g7(i),onSelect:nt(r.onSelect,()=>s.onValueChange?.(n),{checkForDefaultPrevented:!1})})})});wX.displayName=bX;var m7="MenuItemIndicator",[SX,GMe]=jd(m7,{checked:!1}),kX=b.forwardRef((t,e)=>{const{__scopeMenu:n,forceMount:r,...s}=t,i=GMe(m7,n);return o.jsx(si,{present:r||My(i.checked)||i.checked===!0,children:o.jsx(gn.span,{...s,ref:e,"data-state":g7(i.checked)})})});kX.displayName=m7;var XMe="MenuSeparator",OX=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t;return o.jsx(gn.div,{role:"separator","aria-orientation":"horizontal",...r,ref:e})});OX.displayName=XMe;var YMe="MenuArrow",jX=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t,s=Sg(n);return o.jsx(jj,{...s,...r,ref:e})});jX.displayName=YMe;var p7="MenuSub",[KMe,NX]=jd(p7),CX=t=>{const{__scopeMenu:e,children:n,open:r=!1,onOpenChange:s}=t,i=fu(p7,e),a=Sg(e),[l,c]=b.useState(null),[d,h]=b.useState(null),m=qs(s);return b.useEffect(()=>(i.open===!1&&m(!1),()=>m(!1)),[i.open,m]),o.jsx(By,{...a,children:o.jsx(uX,{scope:e,open:r,onOpenChange:m,content:d,onContentChange:h,children:o.jsx(KMe,{scope:e,contentId:Ui(),triggerId:Ui(),trigger:l,onTriggerChange:c,children:n})})})};CX.displayName=p7;var m0="MenuSubTrigger",TX=b.forwardRef((t,e)=>{const n=fu(m0,t.__scopeMenu),r=kg(m0,t.__scopeMenu),s=NX(m0,t.__scopeMenu),i=d7(m0,t.__scopeMenu),a=b.useRef(null),{pointerGraceTimerRef:l,onPointerGraceIntentChange:c}=i,d={__scopeMenu:t.__scopeMenu},h=b.useCallback(()=>{a.current&&window.clearTimeout(a.current),a.current=null},[]);return b.useEffect(()=>h,[h]),b.useEffect(()=>{const m=l.current;return()=>{window.clearTimeout(m),c(null)}},[l,c]),o.jsx(c7,{asChild:!0,...d,children:o.jsx(gX,{id:s.triggerId,"aria-haspopup":"menu","aria-expanded":n.open,"aria-controls":s.contentId,"data-state":MX(n.open),...t,ref:Hc(e,s.onTriggerChange),onClick:m=>{t.onClick?.(m),!(t.disabled||m.defaultPrevented)&&(m.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:nt(t.onPointerMove,Op(m=>{i.onItemEnter(m),!m.defaultPrevented&&!t.disabled&&!n.open&&!a.current&&(i.onPointerGraceIntentChange(null),a.current=window.setTimeout(()=>{n.onOpenChange(!0),h()},100))})),onPointerLeave:nt(t.onPointerLeave,Op(m=>{h();const g=n.content?.getBoundingClientRect();if(g){const x=n.content?.dataset.side,y=x==="right",w=y?-5:5,S=g[y?"left":"right"],k=g[y?"right":"left"];i.onPointerGraceIntentChange({area:[{x:m.clientX+w,y:m.clientY},{x:S,y:g.top},{x:k,y:g.top},{x:k,y:g.bottom},{x:S,y:g.bottom}],side:x}),window.clearTimeout(l.current),l.current=window.setTimeout(()=>i.onPointerGraceIntentChange(null),300)}else{if(i.onTriggerLeave(m),m.defaultPrevented)return;i.onPointerGraceIntentChange(null)}})),onKeyDown:nt(t.onKeyDown,m=>{const g=i.searchRef.current!=="";t.disabled||g&&m.key===" "||AMe[r.dir].includes(m.key)&&(n.onOpenChange(!0),n.content?.focus(),m.preventDefault())})})})});TX.displayName=m0;var EX="MenuSubContent",_X=b.forwardRef((t,e)=>{const n=hX(Ta,t.__scopeMenu),{forceMount:r=n.forceMount,...s}=t,i=fu(Ta,t.__scopeMenu),a=kg(Ta,t.__scopeMenu),l=NX(EX,t.__scopeMenu),c=b.useRef(null),d=Yn(e,c);return o.jsx(kp.Provider,{scope:t.__scopeMenu,children:o.jsx(si,{present:r||i.open,children:o.jsx(kp.Slot,{scope:t.__scopeMenu,children:o.jsx(h7,{id:l.contentId,"aria-labelledby":l.triggerId,...s,ref:d,align:"start",side:a.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:h=>{a.isUsingKeyboardRef.current&&c.current?.focus(),h.preventDefault()},onCloseAutoFocus:h=>h.preventDefault(),onFocusOutside:nt(t.onFocusOutside,h=>{h.target!==l.trigger&&i.onOpenChange(!1)}),onEscapeKeyDown:nt(t.onEscapeKeyDown,h=>{a.onClose(),h.preventDefault()}),onKeyDown:nt(t.onKeyDown,h=>{const m=h.currentTarget.contains(h.target),g=RMe[a.dir].includes(h.key);m&&g&&(i.onOpenChange(!1),l.trigger?.focus(),h.preventDefault())})})})})})});_X.displayName=EX;function MX(t){return t?"open":"closed"}function My(t){return t==="indeterminate"}function g7(t){return My(t)?"indeterminate":t?"checked":"unchecked"}function ZMe(t){const e=document.activeElement;for(const n of t)if(n===e||(n.focus(),document.activeElement!==e))return}function JMe(t,e){return t.map((n,r)=>t[(e+r)%t.length])}function eAe(t,e,n){const s=e.length>1&&Array.from(e).every(d=>d===e[0])?e[0]:e,i=n?t.indexOf(n):-1;let a=JMe(t,Math.max(i,0));s.length===1&&(a=a.filter(d=>d!==n));const c=a.find(d=>d.toLowerCase().startsWith(s.toLowerCase()));return c!==n?c:void 0}function tAe(t,e){const{x:n,y:r}=t;let s=!1;for(let i=0,a=e.length-1;ir!=g>r&&n<(m-d)*(r-h)/(g-h)+d&&(s=!s)}return s}function nAe(t,e){if(!e)return!1;const n={x:t.clientX,y:t.clientY};return tAe(n,e)}function Op(t){return e=>e.pointerType==="mouse"?t(e):void 0}var rAe=dX,sAe=c7,iAe=fX,aAe=mX,oAe=f7,lAe=pX,cAe=Kb,uAe=xX,dAe=yX,hAe=wX,fAe=kX,mAe=OX,pAe=jX,gAe=CX,xAe=TX,vAe=_X,x7="ContextMenu",[yAe]=Ra(x7,[lX]),Gs=lX(),[bAe,AX]=yAe(x7),RX=t=>{const{__scopeContextMenu:e,children:n,onOpenChange:r,dir:s,modal:i=!0}=t,[a,l]=b.useState(!1),c=Gs(e),d=qs(r),h=b.useCallback(m=>{l(m),d(m)},[d]);return o.jsx(bAe,{scope:e,open:a,onOpenChange:h,modal:i,children:o.jsx(rAe,{...c,dir:s,open:a,onOpenChange:h,modal:i,children:n})})};RX.displayName=x7;var DX="ContextMenuTrigger",PX=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,disabled:r=!1,...s}=t,i=AX(DX,n),a=Gs(n),l=b.useRef({x:0,y:0}),c=b.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...l.current})}),d=b.useRef(0),h=b.useCallback(()=>window.clearTimeout(d.current),[]),m=g=>{l.current={x:g.clientX,y:g.clientY},i.onOpenChange(!0)};return b.useEffect(()=>h,[h]),b.useEffect(()=>void(r&&h()),[r,h]),o.jsxs(o.Fragment,{children:[o.jsx(sAe,{...a,virtualRef:c}),o.jsx(gn.span,{"data-state":i.open?"open":"closed","data-disabled":r?"":void 0,...s,ref:e,style:{WebkitTouchCallout:"none",...t.style},onContextMenu:r?t.onContextMenu:nt(t.onContextMenu,g=>{h(),m(g),g.preventDefault()}),onPointerDown:r?t.onPointerDown:nt(t.onPointerDown,X1(g=>{h(),d.current=window.setTimeout(()=>m(g),700)})),onPointerMove:r?t.onPointerMove:nt(t.onPointerMove,X1(h)),onPointerCancel:r?t.onPointerCancel:nt(t.onPointerCancel,X1(h)),onPointerUp:r?t.onPointerUp:nt(t.onPointerUp,X1(h))})]})});PX.displayName=DX;var wAe="ContextMenuPortal",zX=t=>{const{__scopeContextMenu:e,...n}=t,r=Gs(e);return o.jsx(iAe,{...r,...n})};zX.displayName=wAe;var IX="ContextMenuContent",LX=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=AX(IX,n),i=Gs(n),a=b.useRef(!1);return o.jsx(aAe,{...i,...r,ref:e,side:"right",sideOffset:2,align:"start",onCloseAutoFocus:l=>{t.onCloseAutoFocus?.(l),!l.defaultPrevented&&a.current&&l.preventDefault(),a.current=!1},onInteractOutside:l=>{t.onInteractOutside?.(l),!l.defaultPrevented&&!s.modal&&(a.current=!0)},style:{...t.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});LX.displayName=IX;var SAe="ContextMenuGroup",kAe=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(oAe,{...s,...r,ref:e})});kAe.displayName=SAe;var OAe="ContextMenuLabel",BX=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(lAe,{...s,...r,ref:e})});BX.displayName=OAe;var jAe="ContextMenuItem",FX=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(cAe,{...s,...r,ref:e})});FX.displayName=jAe;var NAe="ContextMenuCheckboxItem",qX=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(uAe,{...s,...r,ref:e})});qX.displayName=NAe;var CAe="ContextMenuRadioGroup",TAe=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(dAe,{...s,...r,ref:e})});TAe.displayName=CAe;var EAe="ContextMenuRadioItem",$X=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(hAe,{...s,...r,ref:e})});$X.displayName=EAe;var _Ae="ContextMenuItemIndicator",HX=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(fAe,{...s,...r,ref:e})});HX.displayName=_Ae;var MAe="ContextMenuSeparator",QX=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(mAe,{...s,...r,ref:e})});QX.displayName=MAe;var AAe="ContextMenuArrow",RAe=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(pAe,{...s,...r,ref:e})});RAe.displayName=AAe;var VX="ContextMenuSub",UX=t=>{const{__scopeContextMenu:e,children:n,onOpenChange:r,open:s,defaultOpen:i}=t,a=Gs(e),[l,c]=Gl({prop:s,defaultProp:i??!1,onChange:r,caller:VX});return o.jsx(gAe,{...a,open:l,onOpenChange:c,children:n})};UX.displayName=VX;var DAe="ContextMenuSubTrigger",WX=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(xAe,{...s,...r,ref:e})});WX.displayName=DAe;var PAe="ContextMenuSubContent",GX=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(vAe,{...s,...r,ref:e,style:{...t.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});GX.displayName=PAe;function X1(t){return e=>e.pointerType!=="mouse"?t(e):void 0}var zAe=RX,IAe=PX,LAe=zX,XX=LX,YX=BX,KX=FX,ZX=qX,JX=$X,eY=HX,tY=QX,BAe=UX,nY=WX,rY=GX;const FAe=zAe,qAe=IAe,$Ae=BAe,sY=b.forwardRef(({className:t,inset:e,children:n,...r},s)=>o.jsxs(nY,{ref:s,className:ve("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",e&&"pl-8",t),...r,children:[n,o.jsx(yd,{className:"ml-auto h-4 w-4"})]}));sY.displayName=nY.displayName;const iY=b.forwardRef(({className:t,...e},n)=>o.jsx(rY,{ref:n,className:ve("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]",t),...e}));iY.displayName=rY.displayName;const aY=b.forwardRef(({className:t,...e},n)=>o.jsx(LAe,{children:o.jsx(XX,{ref:n,className:ve("z-50 max-h-[--radix-context-menu-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]",t),...e})}));aY.displayName=XX.displayName;const qa=b.forwardRef(({className:t,inset:e,...n},r)=>o.jsx(KX,{ref:r,className:ve("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e&&"pl-8",t),...n}));qa.displayName=KX.displayName;const HAe=b.forwardRef(({className:t,children:e,checked:n,...r},s)=>o.jsxs(ZX,{ref:s,className:ve("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),checked:n,...r,children:[o.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:o.jsx(eY,{children:o.jsx(Ro,{className:"h-4 w-4"})})}),e]}));HAe.displayName=ZX.displayName;const QAe=b.forwardRef(({className:t,children:e,...n},r)=>o.jsxs(JX,{ref:r,className:ve("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),...n,children:[o.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:o.jsx(eY,{children:o.jsx(Vee,{className:"h-2 w-2 fill-current"})})}),e]}));QAe.displayName=JX.displayName;const VAe=b.forwardRef(({className:t,inset:e,...n},r)=>o.jsx(YX,{ref:r,className:ve("px-2 py-1.5 text-sm font-semibold text-foreground",e&&"pl-8",t),...n}));VAe.displayName=YX.displayName;const p0=b.forwardRef(({className:t,...e},n)=>o.jsx(tY,{ref:n,className:ve("-mx-1 my-1 h-px bg-border",t),...e}));p0.displayName=tY.displayName;const jh=({className:t,...e})=>o.jsx("span",{className:ve("ml-auto text-xs tracking-widest text-muted-foreground",t),...e});jh.displayName="ContextMenuShortcut";var UAe=Symbol("radix.slottable");function WAe(t){const e=({children:n})=>o.jsx(o.Fragment,{children:n});return e.displayName=`${t}.Slottable`,e.__radixId=UAe,e}var[Zb]=Ra("Tooltip",[gf]),Jb=gf(),oY="TooltipProvider",GAe=700,sj="tooltip.open",[XAe,v7]=Zb(oY),lY=t=>{const{__scopeTooltip:e,delayDuration:n=GAe,skipDelayDuration:r=300,disableHoverableContent:s=!1,children:i}=t,a=b.useRef(!0),l=b.useRef(!1),c=b.useRef(0);return b.useEffect(()=>{const d=c.current;return()=>window.clearTimeout(d)},[]),o.jsx(XAe,{scope:e,isOpenDelayedRef:a,delayDuration:n,onOpen:b.useCallback(()=>{window.clearTimeout(c.current),a.current=!1},[]),onClose:b.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>a.current=!0,r)},[r]),isPointerInTransitRef:l,onPointerInTransitChange:b.useCallback(d=>{l.current=d},[]),disableHoverableContent:s,children:i})};lY.displayName=oY;var jp="Tooltip",[YAe,Og]=Zb(jp),cY=t=>{const{__scopeTooltip:e,children:n,open:r,defaultOpen:s,onOpenChange:i,disableHoverableContent:a,delayDuration:l}=t,c=v7(jp,t.__scopeTooltip),d=Jb(e),[h,m]=b.useState(null),g=Ui(),x=b.useRef(0),y=a??c.disableHoverableContent,w=l??c.delayDuration,S=b.useRef(!1),[k,j]=Gl({prop:r,defaultProp:s??!1,onChange:M=>{M?(c.onOpen(),document.dispatchEvent(new CustomEvent(sj))):c.onClose(),i?.(M)},caller:jp}),N=b.useMemo(()=>k?S.current?"delayed-open":"instant-open":"closed",[k]),T=b.useCallback(()=>{window.clearTimeout(x.current),x.current=0,S.current=!1,j(!0)},[j]),E=b.useCallback(()=>{window.clearTimeout(x.current),x.current=0,j(!1)},[j]),_=b.useCallback(()=>{window.clearTimeout(x.current),x.current=window.setTimeout(()=>{S.current=!0,j(!0),x.current=0},w)},[w,j]);return b.useEffect(()=>()=>{x.current&&(window.clearTimeout(x.current),x.current=0)},[]),o.jsx(By,{...d,children:o.jsx(YAe,{scope:e,contentId:g,open:k,stateAttribute:N,trigger:h,onTriggerChange:m,onTriggerEnter:b.useCallback(()=>{c.isOpenDelayedRef.current?_():T()},[c.isOpenDelayedRef,_,T]),onTriggerLeave:b.useCallback(()=>{y?E():(window.clearTimeout(x.current),x.current=0)},[E,y]),onOpen:T,onClose:E,disableHoverableContent:y,children:n})})};cY.displayName=jp;var ij="TooltipTrigger",uY=b.forwardRef((t,e)=>{const{__scopeTooltip:n,...r}=t,s=Og(ij,n),i=v7(ij,n),a=Jb(n),l=b.useRef(null),c=Yn(e,l,s.onTriggerChange),d=b.useRef(!1),h=b.useRef(!1),m=b.useCallback(()=>d.current=!1,[]);return b.useEffect(()=>()=>document.removeEventListener("pointerup",m),[m]),o.jsx(Fy,{asChild:!0,...a,children:o.jsx(gn.button,{"aria-describedby":s.open?s.contentId:void 0,"data-state":s.stateAttribute,...r,ref:c,onPointerMove:nt(t.onPointerMove,g=>{g.pointerType!=="touch"&&!h.current&&!i.isPointerInTransitRef.current&&(s.onTriggerEnter(),h.current=!0)}),onPointerLeave:nt(t.onPointerLeave,()=>{s.onTriggerLeave(),h.current=!1}),onPointerDown:nt(t.onPointerDown,()=>{s.open&&s.onClose(),d.current=!0,document.addEventListener("pointerup",m,{once:!0})}),onFocus:nt(t.onFocus,()=>{d.current||s.onOpen()}),onBlur:nt(t.onBlur,s.onClose),onClick:nt(t.onClick,s.onClose)})})});uY.displayName=ij;var y7="TooltipPortal",[KAe,ZAe]=Zb(y7,{forceMount:void 0}),dY=t=>{const{__scopeTooltip:e,forceMount:n,children:r,container:s}=t,i=Og(y7,e);return o.jsx(KAe,{scope:e,forceMount:n,children:o.jsx(si,{present:n||i.open,children:o.jsx(Ly,{asChild:!0,container:s,children:r})})})};dY.displayName=y7;var pf="TooltipContent",hY=b.forwardRef((t,e)=>{const n=ZAe(pf,t.__scopeTooltip),{forceMount:r=n.forceMount,side:s="top",...i}=t,a=Og(pf,t.__scopeTooltip);return o.jsx(si,{present:r||a.open,children:a.disableHoverableContent?o.jsx(fY,{side:s,...i,ref:e}):o.jsx(JAe,{side:s,...i,ref:e})})}),JAe=b.forwardRef((t,e)=>{const n=Og(pf,t.__scopeTooltip),r=v7(pf,t.__scopeTooltip),s=b.useRef(null),i=Yn(e,s),[a,l]=b.useState(null),{trigger:c,onClose:d}=n,h=s.current,{onPointerInTransitChange:m}=r,g=b.useCallback(()=>{l(null),m(!1)},[m]),x=b.useCallback((y,w)=>{const S=y.currentTarget,k={x:y.clientX,y:y.clientY},j=sRe(k,S.getBoundingClientRect()),N=iRe(k,j),T=aRe(w.getBoundingClientRect()),E=lRe([...N,...T]);l(E),m(!0)},[m]);return b.useEffect(()=>()=>g(),[g]),b.useEffect(()=>{if(c&&h){const y=S=>x(S,h),w=S=>x(S,c);return c.addEventListener("pointerleave",y),h.addEventListener("pointerleave",w),()=>{c.removeEventListener("pointerleave",y),h.removeEventListener("pointerleave",w)}}},[c,h,x,g]),b.useEffect(()=>{if(a){const y=w=>{const S=w.target,k={x:w.clientX,y:w.clientY},j=c?.contains(S)||h?.contains(S),N=!oRe(k,a);j?g():N&&(g(),d())};return document.addEventListener("pointermove",y),()=>document.removeEventListener("pointermove",y)}},[c,h,a,d,g]),o.jsx(fY,{...t,ref:i})}),[eRe,tRe]=Zb(jp,{isInside:!1}),nRe=WAe("TooltipContent"),fY=b.forwardRef((t,e)=>{const{__scopeTooltip:n,children:r,"aria-label":s,onEscapeKeyDown:i,onPointerDownOutside:a,...l}=t,c=Og(pf,n),d=Jb(n),{onClose:h}=c;return b.useEffect(()=>(document.addEventListener(sj,h),()=>document.removeEventListener(sj,h)),[h]),b.useEffect(()=>{if(c.trigger){const m=g=>{g.target?.contains(c.trigger)&&h()};return window.addEventListener("scroll",m,{capture:!0}),()=>window.removeEventListener("scroll",m,{capture:!0})}},[c.trigger,h]),o.jsx(kj,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:i,onPointerDownOutside:a,onFocusOutside:m=>m.preventDefault(),onDismiss:h,children:o.jsxs(Oj,{"data-state":c.stateAttribute,...d,...l,ref:e,style:{...l.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[o.jsx(nRe,{children:r}),o.jsx(eRe,{scope:n,isInside:!0,children:o.jsx(vee,{id:c.contentId,role:"tooltip",children:s||r})})]})})});hY.displayName=pf;var mY="TooltipArrow",rRe=b.forwardRef((t,e)=>{const{__scopeTooltip:n,...r}=t,s=Jb(n);return tRe(mY,n).isInside?null:o.jsx(jj,{...s,...r,ref:e})});rRe.displayName=mY;function sRe(t,e){const n=Math.abs(e.top-t.y),r=Math.abs(e.bottom-t.y),s=Math.abs(e.right-t.x),i=Math.abs(e.left-t.x);switch(Math.min(n,r,s,i)){case i:return"left";case s:return"right";case n:return"top";case r:return"bottom";default:throw new Error("unreachable")}}function iRe(t,e,n=5){const r=[];switch(e){case"top":r.push({x:t.x-n,y:t.y+n},{x:t.x+n,y:t.y+n});break;case"bottom":r.push({x:t.x-n,y:t.y-n},{x:t.x+n,y:t.y-n});break;case"left":r.push({x:t.x+n,y:t.y-n},{x:t.x+n,y:t.y+n});break;case"right":r.push({x:t.x-n,y:t.y-n},{x:t.x-n,y:t.y+n});break}return r}function aRe(t){const{top:e,right:n,bottom:r,left:s}=t;return[{x:s,y:e},{x:n,y:e},{x:n,y:r},{x:s,y:r}]}function oRe(t,e){const{x:n,y:r}=t;let s=!1;for(let i=0,a=e.length-1;ir!=g>r&&n<(m-d)*(r-h)/(g-h)+d&&(s=!s)}return s}function lRe(t){const e=t.slice();return e.sort((n,r)=>n.xr.x?1:n.yr.y?1:0),cRe(e)}function cRe(t){if(t.length<=1)return t.slice();const e=[];for(let r=0;r=2;){const i=e[e.length-1],a=e[e.length-2];if((i.x-a.x)*(s.y-a.y)>=(i.y-a.y)*(s.x-a.x))e.pop();else break}e.push(s)}e.pop();const n=[];for(let r=t.length-1;r>=0;r--){const s=t[r];for(;n.length>=2;){const i=n[n.length-1],a=n[n.length-2];if((i.x-a.x)*(s.y-a.y)>=(i.y-a.y)*(s.x-a.x))n.pop();else break}n.push(s)}return n.pop(),e.length===1&&n.length===1&&e[0].x===n[0].x&&e[0].y===n[0].y?e:e.concat(n)}var uRe=lY,dRe=cY,hRe=uY,fRe=dY,pY=hY;const mRe=uRe,pRe=dRe,gRe=hRe,gY=b.forwardRef(({className:t,sideOffset:e=4,...n},r)=>o.jsx(fRe,{children:o.jsx(pY,{ref:r,sideOffset:e,className:ve("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",t),...n})}));gY.displayName=pY.displayName;function xRe({children:t}){Vse();const[e,n]=b.useState(!0),[r,s]=b.useState(!1),[i,a]=b.useState(!1),{theme:l,setTheme:c}=qj(),d=tJ(),h=Zi();b.useEffect(()=>{const w=S=>{(S.metaKey||S.ctrlKey)&&S.key==="k"&&(S.preventDefault(),a(!0))};return window.addEventListener("keydown",w),()=>window.removeEventListener("keydown",w)},[]);const m=[{title:"概览",items:[{icon:M0,label:"首页",path:"/"}]},{title:"麦麦配置编辑",items:[{icon:Pl,label:"麦麦主程序配置",path:"/config/bot"},{icon:xI,label:"AI模型厂商配置",path:"/config/modelProvider",tourId:"sidebar-model-provider"},{icon:vI,label:"模型管理与分配",path:"/config/model",tourId:"sidebar-model-management"},{icon:x9,label:"麦麦适配器配置",path:"/config/adapter"}]},{title:"麦麦资源管理",items:[{icon:Nj,label:"表情包管理",path:"/resource/emoji"},{icon:Cp,label:"表达方式管理",path:"/resource/expression"},{icon:yI,label:"人物信息管理",path:"/resource/person"},{icon:gI,label:"知识库图谱可视化",path:"/resource/knowledge-graph"}]},{title:"扩展与监控",items:[{icon:Uh,label:"插件市场",path:"/plugins"},{icon:x9,label:"插件配置",path:"/plugin-config"},{icon:_v,label:"日志查看器",path:"/logs"}]},{title:"系统",items:[{icon:Xu,label:"系统设置",path:"/settings"}]}],x=l==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":l,y=()=>{localStorage.removeItem("access-token"),h({to:"/auth"})};return o.jsx(mRe,{delayDuration:300,children:o.jsxs("div",{className:"flex h-screen overflow-hidden",children:[o.jsxs("aside",{className:ve("fixed inset-y-0 left-0 z-50 flex flex-col border-r bg-card transition-all duration-300 lg:relative lg:z-0","w-64 lg:w-auto",e?"lg:w-64":"lg:w-16",r?"translate-x-0":"-translate-x-full lg:translate-x-0"),children:[o.jsx("div",{className:"flex h-16 items-center border-b px-4",children:o.jsxs("div",{className:ve("relative flex items-center justify-center flex-1 transition-all overflow-hidden","lg:flex-1",!e&&"lg:flex-none lg:w-8"),children:[o.jsxs("div",{className:ve("flex items-baseline gap-2",!e&&"lg:hidden"),children:[o.jsx("span",{className:"font-bold text-xl text-primary-gradient whitespace-nowrap",children:"MaiBot WebUI"}),o.jsx("span",{className:"text-xs text-primary/60 whitespace-nowrap",children:wse()})]}),!e&&o.jsx("span",{className:"hidden lg:block font-bold text-primary-gradient text-2xl",children:"M"})]})}),o.jsx(wn,{className:ve("flex-1 overflow-x-hidden",!e&&"lg:w-16"),children:o.jsx("nav",{className:ve("p-4",!e&&"lg:p-2 lg:w-16"),children:o.jsx("ul",{className:ve("space-y-6",!e&&"lg:space-y-3 lg:w-full"),children:m.map((w,S)=>o.jsxs("li",{children:[o.jsx("div",{className:ve("px-3 h-[1.25rem]","mb-2",!e&&"lg:mb-1 lg:invisible"),children:o.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground/60 whitespace-nowrap",children:w.title})}),!e&&S>0&&o.jsx("div",{className:"hidden lg:block mb-2 border-t border-border"}),o.jsx("ul",{className:"space-y-1",children:w.items.map(k=>{const j=d({to:k.path}),N=k.icon,T=o.jsxs(o.Fragment,{children:[j&&o.jsx("div",{className:"absolute left-0 top-1/2 h-8 w-1 -translate-y-1/2 rounded-r-full bg-primary transition-opacity duration-300"}),o.jsxs("div",{className:ve("flex items-center transition-all duration-300",e?"gap-3":"gap-3 lg:gap-0"),children:[o.jsx(N,{className:ve("h-5 w-5 flex-shrink-0",j&&"text-primary"),strokeWidth:2,fill:"none"}),o.jsx("span",{className:ve("text-sm font-medium whitespace-nowrap transition-all duration-300",j&&"font-semibold",e?"opacity-100 max-w-[200px]":"opacity-100 max-w-[200px] lg:opacity-0 lg:max-w-0 lg:overflow-hidden"),children:k.label})]})]});return o.jsx("li",{className:"relative",children:o.jsxs(pRe,{children:[o.jsx(gRe,{asChild:!0,children:o.jsx(nJ,{to:k.path,"data-tour":k.tourId,className:ve("relative flex items-center rounded-lg py-2 transition-all duration-300","hover:bg-accent hover:text-accent-foreground",j?"bg-accent text-foreground":"text-muted-foreground hover:text-foreground",e?"px-3":"px-3 lg:px-0 lg:justify-center lg:w-12 lg:mx-auto"),onClick:()=>s(!1),children:T})}),!e&&o.jsx(gY,{side:"right",className:"hidden lg:block",children:o.jsx("p",{children:k.label})})]})},k.path)})})]},w.title))})})})]}),r&&o.jsx("div",{className:"fixed inset-0 z-40 bg-black/50 lg:hidden",onClick:()=>s(!1)}),o.jsxs("div",{className:"flex flex-1 flex-col overflow-hidden",children:[o.jsxs("header",{className:"flex h-16 items-center justify-between border-b bg-card/80 backdrop-blur-md px-4 sticky top-0 z-10",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsx("button",{onClick:()=>s(!r),className:"rounded-lg p-2 hover:bg-accent lg:hidden",children:o.jsx(Uee,{className:"h-5 w-5"})}),o.jsx("button",{onClick:()=>n(!e),className:"hidden rounded-lg p-2 hover:bg-accent lg:block",title:e?"收起侧边栏":"展开侧边栏",children:o.jsx(vd,{className:ve("h-5 w-5 transition-transform",!e&&"rotate-180")})})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsxs("button",{onClick:()=>a(!0),className:"relative hidden md:flex items-center w-64 h-9 pl-9 pr-16 bg-background/50 border rounded-md hover:bg-accent/50 transition-colors text-left",children:[o.jsx(Ni,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),o.jsx("span",{className:"text-sm text-muted-foreground",children:"搜索..."}),o.jsxs(aX,{size:"sm",className:"absolute right-2 top-1/2 -translate-y-1/2",children:[o.jsx("span",{className:"text-xs",children:"⌘"}),"K"]})]}),o.jsx(kMe,{open:i,onOpenChange:a}),o.jsxs(he,{variant:"ghost",size:"sm",onClick:()=>window.open("https://docs.mai-mai.org","_blank"),className:"gap-2",title:"查看麦麦文档",children:[o.jsx(Wee,{className:"h-4 w-4"}),o.jsx("span",{className:"hidden sm:inline",children:"麦麦文档"})]}),o.jsx("button",{onClick:w=>{ase(x==="dark"?"light":"dark",c,w)},className:"rounded-lg p-2 hover:bg-accent",title:x==="dark"?"切换到浅色模式":"切换到深色模式",children:x==="dark"?o.jsx(Y3,{className:"h-5 w-5"}):o.jsx(K3,{className:"h-5 w-5"})}),o.jsx("div",{className:"h-6 w-px bg-border"}),o.jsxs(he,{variant:"ghost",size:"sm",onClick:y,className:"gap-2",title:"登出系统",children:[o.jsx(v9,{className:"h-4 w-4"}),o.jsx("span",{className:"hidden sm:inline",children:"登出"})]})]})]}),o.jsxs(FAe,{children:[o.jsx(qAe,{asChild:!0,children:o.jsx("main",{className:"flex-1 overflow-hidden bg-background",children:t})}),o.jsxs(aY,{className:"w-64",children:[o.jsxs(qa,{onClick:()=>h({to:"/"}),children:[o.jsx(M0,{className:"mr-2 h-4 w-4"}),"首页"]}),o.jsxs(qa,{onClick:()=>h({to:"/settings"}),children:[o.jsx(Xu,{className:"mr-2 h-4 w-4"}),"系统设置"]}),o.jsxs(qa,{onClick:()=>h({to:"/logs"}),children:[o.jsx(_v,{className:"mr-2 h-4 w-4"}),"日志查看器"]}),o.jsx(p0,{}),o.jsxs($Ae,{children:[o.jsxs(sY,{children:[o.jsx(hI,{className:"mr-2 h-4 w-4"}),"切换主题"]}),o.jsxs(iY,{className:"w-48",children:[o.jsxs(qa,{onClick:()=>c("light"),disabled:l==="light",children:[o.jsx(Y3,{className:"mr-2 h-4 w-4"}),"浅色",l==="light"&&o.jsx(jh,{children:"✓"})]}),o.jsxs(qa,{onClick:()=>c("dark"),disabled:l==="dark",children:[o.jsx(K3,{className:"mr-2 h-4 w-4"}),"深色",l==="dark"&&o.jsx(jh,{children:"✓"})]}),o.jsxs(qa,{onClick:()=>c("system"),disabled:l==="system",children:[o.jsx(Xu,{className:"mr-2 h-4 w-4"}),"跟随系统",l==="system"&&o.jsx(jh,{children:"✓"})]})]})]}),o.jsx(p0,{}),o.jsxs(qa,{onClick:()=>window.location.reload(),children:[o.jsx(Gee,{className:"mr-2 h-4 w-4"}),"刷新页面",o.jsx(jh,{children:"⌘R"})]}),o.jsxs(qa,{onClick:()=>a(!0),children:[o.jsx(Ni,{className:"mr-2 h-4 w-4"}),"搜索",o.jsx(jh,{children:"⌘K"})]}),o.jsx(p0,{}),o.jsxs(qa,{onClick:()=>window.open("https://docs.mai-mai.org","_blank"),children:[o.jsx(Mh,{className:"mr-2 h-4 w-4"}),"麦麦文档"]}),o.jsx(p0,{}),o.jsxs(qa,{onClick:y,className:"text-destructive focus:text-destructive",children:[o.jsx(v9,{className:"mr-2 h-4 w-4"}),"登出系统"]})]})]})]})]})})}var ew="Collapsible",[vRe]=Ra(ew),[yRe,b7]=vRe(ew),xY=b.forwardRef((t,e)=>{const{__scopeCollapsible:n,open:r,defaultOpen:s,disabled:i,onOpenChange:a,...l}=t,[c,d]=Gl({prop:r,defaultProp:s??!1,onChange:a,caller:ew});return o.jsx(yRe,{scope:n,disabled:i,contentId:Ui(),open:c,onOpenToggle:b.useCallback(()=>d(h=>!h),[d]),children:o.jsx(gn.div,{"data-state":S7(c),"data-disabled":i?"":void 0,...l,ref:e})})});xY.displayName=ew;var vY="CollapsibleTrigger",yY=b.forwardRef((t,e)=>{const{__scopeCollapsible:n,...r}=t,s=b7(vY,n);return o.jsx(gn.button,{type:"button","aria-controls":s.contentId,"aria-expanded":s.open||!1,"data-state":S7(s.open),"data-disabled":s.disabled?"":void 0,disabled:s.disabled,...r,ref:e,onClick:nt(t.onClick,s.onOpenToggle)})});yY.displayName=vY;var w7="CollapsibleContent",bY=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=b7(w7,t.__scopeCollapsible);return o.jsx(si,{present:n||s.open,children:({present:i})=>o.jsx(bRe,{...r,ref:e,present:i})})});bY.displayName=w7;var bRe=b.forwardRef((t,e)=>{const{__scopeCollapsible:n,present:r,children:s,...i}=t,a=b7(w7,n),[l,c]=b.useState(r),d=b.useRef(null),h=Yn(e,d),m=b.useRef(0),g=m.current,x=b.useRef(0),y=x.current,w=a.open||l,S=b.useRef(w),k=b.useRef(void 0);return b.useEffect(()=>{const j=requestAnimationFrame(()=>S.current=!1);return()=>cancelAnimationFrame(j)},[]),gj(()=>{const j=d.current;if(j){k.current=k.current||{transitionDuration:j.style.transitionDuration,animationName:j.style.animationName},j.style.transitionDuration="0s",j.style.animationName="none";const N=j.getBoundingClientRect();m.current=N.height,x.current=N.width,S.current||(j.style.transitionDuration=k.current.transitionDuration,j.style.animationName=k.current.animationName),c(r)}},[a.open,r]),o.jsx(gn.div,{"data-state":S7(a.open),"data-disabled":a.disabled?"":void 0,id:a.contentId,hidden:!w,...i,ref:h,style:{"--radix-collapsible-content-height":g?`${g}px`:void 0,"--radix-collapsible-content-width":y?`${y}px`:void 0,...t.style},children:w&&s})});function S7(t){return t?"open":"closed"}var wRe=xY;const Tz=wRe,Ez=yY,_z=bY;function SRe(t){const e=t.split(` +`).slice(1),n=[];for(const r of e){const s=r.trim();if(!s.startsWith("at "))continue;const i=s.match(/at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?$/);i?n.push({functionName:i[1]||"",fileName:i[2],lineNumber:i[3],columnNumber:i[4],raw:s}):n.push({functionName:"",fileName:"",lineNumber:"",columnNumber:"",raw:s})}return n}function kRe({error:t,errorInfo:e}){const[n,r]=b.useState(!0),[s,i]=b.useState(!1),[a,l]=b.useState(!1),c=t.stack?SRe(t.stack):[],d=async()=>{const h=` +Error: ${t.name} +Message: ${t.message} + +Stack Trace: +${t.stack||"No stack trace available"} + +Component Stack: +${e?.componentStack||"No component stack available"} + +URL: ${window.location.href} +User Agent: ${navigator.userAgent} +Time: ${new Date().toISOString()} + `.trim();try{await navigator.clipboard.writeText(h),l(!0),setTimeout(()=>l(!1),2e3)}catch(m){console.error("Failed to copy:",m)}};return o.jsxs("div",{className:"space-y-4",children:[o.jsxs(ga,{variant:"destructive",className:"border-red-500/50 bg-red-500/10",children:[o.jsx(Wa,{className:"h-4 w-4"}),o.jsxs(xa,{className:"font-mono text-sm",children:[o.jsxs("span",{className:"font-semibold",children:[t.name,":"]})," ",t.message]})]}),c.length>0&&o.jsxs(Tz,{open:n,onOpenChange:r,children:[o.jsx(Ez,{asChild:!0,children:o.jsxs(he,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[o.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[o.jsx(Xee,{className:"h-4 w-4"}),"Stack Trace (",c.length," frames)"]}),n?o.jsx(A0,{className:"h-4 w-4"}):o.jsx(nd,{className:"h-4 w-4"})]})}),o.jsx(_z,{children:o.jsx(wn,{className:"h-[280px] rounded-md border bg-muted/30",children:o.jsx("div",{className:"p-3 space-y-1",children:c.map((h,m)=>o.jsx("div",{className:"font-mono text-xs p-2 rounded hover:bg-muted/50 transition-colors",children:o.jsxs("div",{className:"flex items-start gap-2",children:[o.jsxs("span",{className:"text-muted-foreground w-6 text-right flex-shrink-0",children:[m+1,"."]}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("span",{className:"text-primary font-medium",children:h.functionName}),h.fileName&&o.jsxs("div",{className:"text-muted-foreground mt-0.5 break-all",children:[h.fileName,h.lineNumber&&o.jsxs("span",{className:"text-yellow-600 dark:text-yellow-400",children:[":",h.lineNumber,":",h.columnNumber]})]})]})]})},m))})})})]}),e?.componentStack&&o.jsxs(Tz,{open:s,onOpenChange:i,children:[o.jsx(Ez,{asChild:!0,children:o.jsxs(he,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[o.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[o.jsx(Wa,{className:"h-4 w-4"}),"Component Stack"]}),s?o.jsx(A0,{className:"h-4 w-4"}):o.jsx(nd,{className:"h-4 w-4"})]})}),o.jsx(_z,{children:o.jsx(wn,{className:"h-[200px] rounded-md border bg-muted/30",children:o.jsx("pre",{className:"p-3 font-mono text-xs whitespace-pre-wrap text-muted-foreground",children:e.componentStack})})})]}),o.jsx(he,{variant:"outline",size:"sm",onClick:d,className:"w-full",children:a?o.jsxs(o.Fragment,{children:[o.jsx(Ro,{className:"mr-2 h-4 w-4 text-green-500"}),"已复制到剪贴板"]}):o.jsxs(o.Fragment,{children:[o.jsx(Tv,{className:"mr-2 h-4 w-4"}),"复制错误信息"]})})]})}function wY({error:t,errorInfo:e}){const n=()=>{window.location.href="/"},r=()=>{window.location.reload()};return o.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background p-4",children:o.jsxs(qt,{className:"w-full max-w-2xl shadow-lg",children:[o.jsxs(Fn,{className:"text-center pb-2",children:[o.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30 mb-4",children:o.jsx(Wa,{className:"h-8 w-8 text-red-600 dark:text-red-400"})}),o.jsx(qn,{className:"text-2xl font-bold",children:"页面出现了问题"}),o.jsx(ts,{className:"text-base mt-2",children:"应用程序遇到了意外错误。您可以尝试刷新页面或返回首页。"})]}),o.jsxs(Gn,{className:"space-y-4",children:[o.jsx(kRe,{error:t,errorInfo:e}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 pt-2",children:[o.jsxs(he,{onClick:r,className:"flex-1",children:[o.jsx(Qs,{className:"mr-2 h-4 w-4"}),"刷新页面"]}),o.jsxs(he,{onClick:n,variant:"outline",className:"flex-1",children:[o.jsx(M0,{className:"mr-2 h-4 w-4"}),"返回首页"]})]}),o.jsx("p",{className:"text-xs text-center text-muted-foreground pt-2",children:"如果问题持续存在,请将错误信息复制并反馈给开发者"})]})]})})}class ORe extends b.Component{constructor(e){super(e),this.state={hasError:!1,error:null,errorInfo:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,n){console.error("ErrorBoundary caught an error:",e,n),this.setState({errorInfo:n})}handleReset=()=>{this.setState({hasError:!1,error:null,errorInfo:null})};render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback:o.jsx(wY,{error:this.state.error,errorInfo:this.state.errorInfo}):this.props.children}}function SY({error:t}){return o.jsx(wY,{error:t,errorInfo:null})}const jg=rJ({component:()=>o.jsxs(o.Fragment,{children:[o.jsx(Az,{}),!1]}),beforeLoad:()=>{if(window.location.pathname==="/"&&!wB())throw iJ({to:"/auth"})}}),jRe=ks({getParentRoute:()=>jg,path:"/auth",component:Use}),NRe=ks({getParentRoute:()=>jg,path:"/setup",component:pie}),ai=ks({getParentRoute:()=>jg,id:"protected",component:()=>o.jsx(xRe,{children:o.jsx(Az,{})}),errorComponent:({error:t})=>o.jsx(SY,{error:t})}),CRe=ks({getParentRoute:()=>ai,path:"/",component:sse}),TRe=ks({getParentRoute:()=>ai,path:"/config/bot",component:f0e}),ERe=ks({getParentRoute:()=>ai,path:"/config/modelProvider",component:Rxe}),_Re=ks({getParentRoute:()=>ai,path:"/config/model",component:Ove}),MRe=ks({getParentRoute:()=>ai,path:"/config/adapter",component:Nve}),ARe=ks({getParentRoute:()=>ai,path:"/resource/emoji",component:Yke}),RRe=ks({getParentRoute:()=>ai,path:"/resource/expression",component:oOe}),DRe=ks({getParentRoute:()=>ai,path:"/resource/person",component:vOe}),PRe=ks({getParentRoute:()=>ai,path:"/resource/knowledge-graph",component:lTe}),zRe=ks({getParentRoute:()=>ai,path:"/logs",component:J_e}),IRe=ks({getParentRoute:()=>ai,path:"/plugins",component:vMe}),LRe=ks({getParentRoute:()=>ai,path:"/plugin-config",component:yMe}),BRe=ks({getParentRoute:()=>ai,path:"/plugin-mirrors",component:bMe}),FRe=ks({getParentRoute:()=>ai,path:"/settings",component:Lse}),qRe=ks({getParentRoute:()=>jg,path:"*",component:OB}),$Re=jg.addChildren([jRe,NRe,ai.addChildren([CRe,TRe,ERe,_Re,MRe,ARe,RRe,DRe,PRe,IRe,LRe,BRe,zRe,FRe]),qRe]),HRe=sJ({routeTree:$Re,defaultNotFoundComponent:OB,defaultErrorComponent:({error:t})=>o.jsx(SY,{error:t})});function QRe({children:t,defaultTheme:e="system",storageKey:n="ui-theme",...r}){const[s,i]=b.useState(()=>localStorage.getItem(n)||e);b.useEffect(()=>{const l=window.document.documentElement;if(l.classList.remove("light","dark"),s==="system"){const c=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";l.classList.add(c);return}l.classList.add(s)},[s]),b.useEffect(()=>{const l=localStorage.getItem("accent-color");if(l){const c=document.documentElement,h={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[l];h&&(c.style.setProperty("--primary",h.hsl),h.gradient?(c.style.setProperty("--primary-gradient",h.gradient),c.classList.add("has-gradient")):(c.style.removeProperty("--primary-gradient"),c.classList.remove("has-gradient")))}},[]);const a={theme:s,setTheme:l=>{localStorage.setItem(n,l),i(l)}};return o.jsx(VL.Provider,{...r,value:a,children:t})}function VRe({children:t,defaultEnabled:e=!0,defaultWavesEnabled:n=!0,storageKey:r="enable-animations",wavesStorageKey:s="enable-waves-background"}){const[i,a]=b.useState(()=>{const h=localStorage.getItem(r);return h!==null?h==="true":e}),[l,c]=b.useState(()=>{const h=localStorage.getItem(s);return h!==null?h==="true":n});b.useEffect(()=>{const h=document.documentElement;i?h.classList.remove("no-animations"):h.classList.add("no-animations"),localStorage.setItem(r,String(i))},[i,r]),b.useEffect(()=>{localStorage.setItem(s,String(l))},[l,s]);const d={enableAnimations:i,setEnableAnimations:a,enableWavesBackground:l,setEnableWavesBackground:c};return o.jsx(UL.Provider,{value:d,children:t})}var k7="ToastProvider",[O7,URe,WRe]=Dy("Toast"),[kY]=Ra("Toast",[WRe]),[GRe,tw]=kY(k7),OY=t=>{const{__scopeToast:e,label:n="Notification",duration:r=5e3,swipeDirection:s="right",swipeThreshold:i=50,children:a}=t,[l,c]=b.useState(null),[d,h]=b.useState(0),m=b.useRef(!1),g=b.useRef(!1);return n.trim()||console.error(`Invalid prop \`label\` supplied to \`${k7}\`. Expected non-empty \`string\`.`),o.jsx(O7.Provider,{scope:e,children:o.jsx(GRe,{scope:e,label:n,duration:r,swipeDirection:s,swipeThreshold:i,toastCount:d,viewport:l,onViewportChange:c,onToastAdd:b.useCallback(()=>h(x=>x+1),[]),onToastRemove:b.useCallback(()=>h(x=>x-1),[]),isFocusedToastEscapeKeyDownRef:m,isClosePausedRef:g,children:a})})};OY.displayName=k7;var jY="ToastViewport",XRe=["F8"],aj="toast.viewportPause",oj="toast.viewportResume",NY=b.forwardRef((t,e)=>{const{__scopeToast:n,hotkey:r=XRe,label:s="Notifications ({hotkey})",...i}=t,a=tw(jY,n),l=URe(n),c=b.useRef(null),d=b.useRef(null),h=b.useRef(null),m=b.useRef(null),g=Yn(e,m,a.onViewportChange),x=r.join("+").replace(/Key/g,"").replace(/Digit/g,""),y=a.toastCount>0;b.useEffect(()=>{const S=k=>{r.length!==0&&r.every(N=>k[N]||k.code===N)&&m.current?.focus()};return document.addEventListener("keydown",S),()=>document.removeEventListener("keydown",S)},[r]),b.useEffect(()=>{const S=c.current,k=m.current;if(y&&S&&k){const j=()=>{if(!a.isClosePausedRef.current){const _=new CustomEvent(aj);k.dispatchEvent(_),a.isClosePausedRef.current=!0}},N=()=>{if(a.isClosePausedRef.current){const _=new CustomEvent(oj);k.dispatchEvent(_),a.isClosePausedRef.current=!1}},T=_=>{!S.contains(_.relatedTarget)&&N()},E=()=>{S.contains(document.activeElement)||N()};return S.addEventListener("focusin",j),S.addEventListener("focusout",T),S.addEventListener("pointermove",j),S.addEventListener("pointerleave",E),window.addEventListener("blur",j),window.addEventListener("focus",N),()=>{S.removeEventListener("focusin",j),S.removeEventListener("focusout",T),S.removeEventListener("pointermove",j),S.removeEventListener("pointerleave",E),window.removeEventListener("blur",j),window.removeEventListener("focus",N)}}},[y,a.isClosePausedRef]);const w=b.useCallback(({tabbingDirection:S})=>{const j=l().map(N=>{const T=N.ref.current,E=[T,...lDe(T)];return S==="forwards"?E:E.reverse()});return(S==="forwards"?j.reverse():j).flat()},[l]);return b.useEffect(()=>{const S=m.current;if(S){const k=j=>{const N=j.altKey||j.ctrlKey||j.metaKey;if(j.key==="Tab"&&!N){const E=document.activeElement,_=j.shiftKey;if(j.target===S&&_){d.current?.focus();return}const P=w({tabbingDirection:_?"backwards":"forwards"}),L=P.findIndex(H=>H===E);W3(P.slice(L+1))?j.preventDefault():_?d.current?.focus():h.current?.focus()}};return S.addEventListener("keydown",k),()=>S.removeEventListener("keydown",k)}},[l,w]),o.jsxs(yee,{ref:c,role:"region","aria-label":s.replace("{hotkey}",x),tabIndex:-1,style:{pointerEvents:y?void 0:"none"},children:[y&&o.jsx(lj,{ref:d,onFocusFromOutsideViewport:()=>{const S=w({tabbingDirection:"forwards"});W3(S)}}),o.jsx(O7.Slot,{scope:n,children:o.jsx(gn.ol,{tabIndex:-1,...i,ref:g})}),y&&o.jsx(lj,{ref:h,onFocusFromOutsideViewport:()=>{const S=w({tabbingDirection:"backwards"});W3(S)}})]})});NY.displayName=jY;var CY="ToastFocusProxy",lj=b.forwardRef((t,e)=>{const{__scopeToast:n,onFocusFromOutsideViewport:r,...s}=t,i=tw(CY,n);return o.jsx(dI,{tabIndex:0,...s,ref:e,style:{position:"fixed"},onFocus:a=>{const l=a.relatedTarget;!i.viewport?.contains(l)&&r()}})});lj.displayName=CY;var Ng="Toast",YRe="toast.swipeStart",KRe="toast.swipeMove",ZRe="toast.swipeCancel",JRe="toast.swipeEnd",TY=b.forwardRef((t,e)=>{const{forceMount:n,open:r,defaultOpen:s,onOpenChange:i,...a}=t,[l,c]=Gl({prop:r,defaultProp:s??!0,onChange:i,caller:Ng});return o.jsx(si,{present:n||l,children:o.jsx(nDe,{open:l,...a,ref:e,onClose:()=>c(!1),onPause:qs(t.onPause),onResume:qs(t.onResume),onSwipeStart:nt(t.onSwipeStart,d=>{d.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:nt(t.onSwipeMove,d=>{const{x:h,y:m}=d.detail.delta;d.currentTarget.setAttribute("data-swipe","move"),d.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${h}px`),d.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${m}px`)}),onSwipeCancel:nt(t.onSwipeCancel,d=>{d.currentTarget.setAttribute("data-swipe","cancel"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),d.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),d.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:nt(t.onSwipeEnd,d=>{const{x:h,y:m}=d.detail.delta;d.currentTarget.setAttribute("data-swipe","end"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),d.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${h}px`),d.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${m}px`),c(!1)})})})});TY.displayName=Ng;var[eDe,tDe]=kY(Ng,{onClose(){}}),nDe=b.forwardRef((t,e)=>{const{__scopeToast:n,type:r="foreground",duration:s,open:i,onClose:a,onEscapeKeyDown:l,onPause:c,onResume:d,onSwipeStart:h,onSwipeMove:m,onSwipeCancel:g,onSwipeEnd:x,...y}=t,w=tw(Ng,n),[S,k]=b.useState(null),j=Yn(e,z=>k(z)),N=b.useRef(null),T=b.useRef(null),E=s||w.duration,_=b.useRef(0),M=b.useRef(E),I=b.useRef(0),{onToastAdd:P,onToastRemove:L}=w,H=qs(()=>{S?.contains(document.activeElement)&&w.viewport?.focus(),a()}),U=b.useCallback(z=>{!z||z===1/0||(window.clearTimeout(I.current),_.current=new Date().getTime(),I.current=window.setTimeout(H,z))},[H]);b.useEffect(()=>{const z=w.viewport;if(z){const Q=()=>{U(M.current),d?.()},B=()=>{const X=new Date().getTime()-_.current;M.current=M.current-X,window.clearTimeout(I.current),c?.()};return z.addEventListener(aj,B),z.addEventListener(oj,Q),()=>{z.removeEventListener(aj,B),z.removeEventListener(oj,Q)}}},[w.viewport,E,c,d,U]),b.useEffect(()=>{i&&!w.isClosePausedRef.current&&U(E)},[i,E,w.isClosePausedRef,U]),b.useEffect(()=>(P(),()=>L()),[P,L]);const ee=b.useMemo(()=>S?PY(S):null,[S]);return w.viewport?o.jsxs(o.Fragment,{children:[ee&&o.jsx(rDe,{__scopeToast:n,role:"status","aria-live":r==="foreground"?"assertive":"polite",children:ee}),o.jsx(eDe,{scope:n,onClose:H,children:pa.createPortal(o.jsx(O7.ItemSlot,{scope:n,children:o.jsx(bee,{asChild:!0,onEscapeKeyDown:nt(l,()=>{w.isFocusedToastEscapeKeyDownRef.current||H(),w.isFocusedToastEscapeKeyDownRef.current=!1}),children:o.jsx(gn.li,{tabIndex:0,"data-state":i?"open":"closed","data-swipe-direction":w.swipeDirection,...y,ref:j,style:{userSelect:"none",touchAction:"none",...t.style},onKeyDown:nt(t.onKeyDown,z=>{z.key==="Escape"&&(l?.(z.nativeEvent),z.nativeEvent.defaultPrevented||(w.isFocusedToastEscapeKeyDownRef.current=!0,H()))}),onPointerDown:nt(t.onPointerDown,z=>{z.button===0&&(N.current={x:z.clientX,y:z.clientY})}),onPointerMove:nt(t.onPointerMove,z=>{if(!N.current)return;const Q=z.clientX-N.current.x,B=z.clientY-N.current.y,X=!!T.current,J=["left","right"].includes(w.swipeDirection),G=["left","up"].includes(w.swipeDirection)?Math.min:Math.max,R=J?G(0,Q):0,ie=J?0:G(0,B),W=z.pointerType==="touch"?10:2,q={x:R,y:ie},V={originalEvent:z,delta:q};X?(T.current=q,Y1(KRe,m,V,{discrete:!1})):Mz(q,w.swipeDirection,W)?(T.current=q,Y1(YRe,h,V,{discrete:!1}),z.target.setPointerCapture(z.pointerId)):(Math.abs(Q)>W||Math.abs(B)>W)&&(N.current=null)}),onPointerUp:nt(t.onPointerUp,z=>{const Q=T.current,B=z.target;if(B.hasPointerCapture(z.pointerId)&&B.releasePointerCapture(z.pointerId),T.current=null,N.current=null,Q){const X=z.currentTarget,J={originalEvent:z,delta:Q};Mz(Q,w.swipeDirection,w.swipeThreshold)?Y1(JRe,x,J,{discrete:!0}):Y1(ZRe,g,J,{discrete:!0}),X.addEventListener("click",G=>G.preventDefault(),{once:!0})}})})})}),w.viewport)})]}):null}),rDe=t=>{const{__scopeToast:e,children:n,...r}=t,s=tw(Ng,e),[i,a]=b.useState(!1),[l,c]=b.useState(!1);return aDe(()=>a(!0)),b.useEffect(()=>{const d=window.setTimeout(()=>c(!0),1e3);return()=>window.clearTimeout(d)},[]),l?null:o.jsx(Ly,{asChild:!0,children:o.jsx(dI,{...r,children:i&&o.jsxs(o.Fragment,{children:[s.label," ",n]})})})},sDe="ToastTitle",EY=b.forwardRef((t,e)=>{const{__scopeToast:n,...r}=t;return o.jsx(gn.div,{...r,ref:e})});EY.displayName=sDe;var iDe="ToastDescription",_Y=b.forwardRef((t,e)=>{const{__scopeToast:n,...r}=t;return o.jsx(gn.div,{...r,ref:e})});_Y.displayName=iDe;var MY="ToastAction",AY=b.forwardRef((t,e)=>{const{altText:n,...r}=t;return n.trim()?o.jsx(DY,{altText:n,asChild:!0,children:o.jsx(j7,{...r,ref:e})}):(console.error(`Invalid prop \`altText\` supplied to \`${MY}\`. Expected non-empty \`string\`.`),null)});AY.displayName=MY;var RY="ToastClose",j7=b.forwardRef((t,e)=>{const{__scopeToast:n,...r}=t,s=tDe(RY,n);return o.jsx(DY,{asChild:!0,children:o.jsx(gn.button,{type:"button",...r,ref:e,onClick:nt(t.onClick,s.onClose)})})});j7.displayName=RY;var DY=b.forwardRef((t,e)=>{const{__scopeToast:n,altText:r,...s}=t;return o.jsx(gn.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":r||void 0,...s,ref:e})});function PY(t){const e=[];return Array.from(t.childNodes).forEach(r=>{if(r.nodeType===r.TEXT_NODE&&r.textContent&&e.push(r.textContent),oDe(r)){const s=r.ariaHidden||r.hidden||r.style.display==="none",i=r.dataset.radixToastAnnounceExclude==="";if(!s)if(i){const a=r.dataset.radixToastAnnounceAlt;a&&e.push(a)}else e.push(...PY(r))}}),e}function Y1(t,e,n,{discrete:r}){const s=n.originalEvent.currentTarget,i=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:n});e&&s.addEventListener(t,e,{once:!0}),r?uI(s,i):s.dispatchEvent(i)}var Mz=(t,e,n=0)=>{const r=Math.abs(t.x),s=Math.abs(t.y),i=r>s;return e==="left"||e==="right"?i&&r>n:!i&&s>n};function aDe(t=()=>{}){const e=qs(t);gj(()=>{let n=0,r=0;return n=window.requestAnimationFrame(()=>r=window.requestAnimationFrame(e)),()=>{window.cancelAnimationFrame(n),window.cancelAnimationFrame(r)}},[e])}function oDe(t){return t.nodeType===t.ELEMENT_NODE}function lDe(t){const e=[],n=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const s=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||s?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)e.push(n.currentNode);return e}function W3(t){const e=document.activeElement;return t.some(n=>n===e?!0:(n.focus(),document.activeElement!==e))}var cDe=OY,zY=NY,IY=TY,LY=EY,BY=_Y,FY=AY,qY=j7;const uDe=cDe,$Y=b.forwardRef(({className:t,...e},n)=>o.jsx(zY,{ref:n,className:ve("fixed bottom-0 right-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:max-w-[420px] gap-2",t),...e}));$Y.displayName=zY.displayName;const dDe=wf("group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-slide-in-from-right data-[state=open]:animate-fade-in data-[state=closed]:animate-slide-out-to-right data-[state=closed]:animate-fade-out data-[swipe=end]:animate-slide-out-to-right",{variants:{variant:{default:"border bg-primary/5 text-foreground backdrop-blur-sm",destructive:"destructive group border-destructive bg-destructive/10 text-destructive-foreground backdrop-blur-sm"}},defaultVariants:{variant:"default"}}),HY=b.forwardRef(({className:t,variant:e,...n},r)=>o.jsx(IY,{ref:r,className:ve(dDe({variant:e}),t),...n}));HY.displayName=IY.displayName;const hDe=b.forwardRef(({className:t,...e},n)=>o.jsx(FY,{ref:n,className:ve("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",t),...e}));hDe.displayName=FY.displayName;const QY=b.forwardRef(({className:t,...e},n)=>o.jsx(qY,{ref:n,className:ve("absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",t),"toast-close":"",...e,children:o.jsx(Tp,{className:"h-4 w-4"})}));QY.displayName=qY.displayName;const VY=b.forwardRef(({className:t,...e},n)=>o.jsx(LY,{ref:n,className:ve("text-sm font-semibold [&+div]:text-xs",t),...e}));VY.displayName=LY.displayName;const UY=b.forwardRef(({className:t,...e},n)=>o.jsx(BY,{ref:n,className:ve("text-sm opacity-90",t),...e}));UY.displayName=BY.displayName;function fDe(){const{toasts:t}=fs();return o.jsxs(uDe,{children:[t.map(function({id:e,title:n,description:r,action:s,...i}){return o.jsxs(HY,{...i,children:[o.jsxs("div",{className:"grid gap-1",children:[n&&o.jsx(VY,{children:n}),r&&o.jsx(UY,{children:r})]}),s,o.jsx(QY,{})]},e)}),o.jsx($Y,{})]})}ete.createRoot(document.getElementById("root")).render(o.jsx(b.StrictMode,{children:o.jsx(ORe,{children:o.jsx(QRe,{defaultTheme:"system",children:o.jsx(VRe,{children:o.jsxs(rpe,{children:[o.jsx(aJ,{router:HRe}),o.jsx(Mxe,{}),o.jsx(fDe,{})]})})})})})); diff --git a/webui/dist/assets/index-BwXMDuHV.css b/webui/dist/assets/index-BwXMDuHV.css deleted file mode 100644 index 7aed6d76..00000000 --- a/webui/dist/assets/index-BwXMDuHV.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 0 0% 100%;--foreground: 222.2 84% 4.9%;--card: 0 0% 100%;--card-foreground: 222.2 84% 4.9%;--popover: 0 0% 100%;--popover-foreground: 222.2 84% 4.9%;--primary: 221.2 83.2% 53.3%;--primary-foreground: 210 40% 98%;--primary-gradient: none;--secondary: 210 40% 96.1%;--secondary-foreground: 222.2 47.4% 11.2%;--muted: 210 40% 96.1%;--muted-foreground: 215.4 16.3% 46.9%;--accent: 210 40% 96.1%;--accent-foreground: 222.2 47.4% 11.2%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 210 40% 98%;--border: 214.3 31.8% 91.4%;--input: 214.3 31.8% 91.4%;--ring: 221.2 83.2% 53.3%;--radius: .5rem;--chart-1: 221.2 83.2% 53.3%;--chart-2: 160 60% 45%;--chart-3: 30 80% 55%;--chart-4: 280 65% 60%;--chart-5: 340 75% 55%}.dark{--background: 222.2 84% 4.9%;--foreground: 210 40% 98%;--card: 222.2 84% 4.9%;--card-foreground: 210 40% 98%;--popover: 222.2 84% 4.9%;--popover-foreground: 210 40% 98%;--primary: 217.2 91.2% 59.8%;--primary-foreground: 222.2 47.4% 11.2%;--primary-gradient: none;--secondary: 217.2 32.6% 17.5%;--secondary-foreground: 210 40% 98%;--muted: 217.2 32.6% 17.5%;--muted-foreground: 215 20.2% 65.1%;--accent: 217.2 32.6% 17.5%;--accent-foreground: 210 40% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 210 40% 98%;--border: 217.2 32.6% 17.5%;--input: 217.2 32.6% 17.5%;--ring: 224.3 76.3% 48%;--chart-1: 217.2 91.2% 59.8%;--chart-2: 160 60% 50%;--chart-3: 30 80% 60%;--chart-4: 280 65% 65%;--chart-5: 340 75% 60%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-1\/4{bottom:25%}.bottom-4{bottom:1rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.left-1\/4{left:25%}.left-2{left:.5rem}.left-2\.5{left:.625rem}.left-3{left:.75rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-1\.5{right:.375rem}.right-1\/4{right:25%}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-1\/4{top:25%}.top-2{top:.5rem}.top-2\.5{top:.625rem}.top-3{top:.75rem}.top-4{top:1rem}.top-\[50\%\]{top:50%}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.order-1{order:1}.order-2{order:2}.col-span-2{grid-column:span 2 / span 2}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-mt-2{margin-top:-.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-auto{aspect-ratio:auto}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:16 / 9}.size-4{width:1rem;height:1rem}.size-\[--cell-size\]{width:var(--cell-size);height:var(--cell-size)}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[--cell-size\]{height:var(--cell-size)}.h-\[1\.25rem\]{height:1.25rem}.h-\[1px\]{height:1px}.h-\[200px\]{height:200px}.h-\[250px\]{height:250px}.h-\[280px\]{height:280px}.h-\[300px\]{height:300px}.h-\[400px\]{height:400px}.h-\[calc\(100vh-200px\)\]{height:calc(100vh - 200px)}.h-\[calc\(100vh-240px\)\]{height:calc(100vh - 240px)}.h-\[calc\(100vh-260px\)\]{height:calc(100vh - 260px)}.h-\[calc\(100vh-4rem\)\]{height:calc(100vh - 4rem)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\[--radix-context-menu-content-available-height\]{max-height:var(--radix-context-menu-content-available-height)}.max-h-\[--radix-select-content-available-height\]{max-height:var(--radix-select-content-available-height)}.max-h-\[300px\]{max-height:300px}.max-h-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[calc\(90vh-120px\)\]{max-height:calc(90vh - 120px)}.max-h-\[calc\(90vh-8rem\)\]{max-height:calc(90vh - 8rem)}.max-h-none{max-height:none}.max-h-screen{max-height:100vh}.min-h-0{min-height:0px}.min-h-10{min-height:2.5rem}.min-h-\[100px\]{min-height:100px}.min-h-\[300px\]{min-height:300px}.min-h-\[60px\]{min-height:60px}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-1\/4{width:25%}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-32{width:8rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[--cell-size\]{width:var(--cell-size)}.w-\[100px\]{width:100px}.w-\[120px\]{width:120px}.w-\[130px\]{width:130px}.w-\[1px\]{width:1px}.w-\[65px\]{width:65px}.w-\[95vw\]{width:95vw}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[--cell-size\]{min-width:var(--cell-size)}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[80px\]{min-width:80px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-\[150px\]{max-width:150px}.max-w-\[200px\]{max-width:200px}.max-w-\[60px\]{max-width:60px}.max-w-\[95vw\]{max-width:95vw}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\[--radix-context-menu-content-transform-origin\]{transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\[--radix-popover-content-transform-origin\]{transform-origin:var(--radix-popover-content-transform-origin)}.origin-\[--radix-select-content-transform-origin\]{transform-origin:var(--radix-select-content-transform-origin)}.origin-\[--radix-tooltip-content-transform-origin\]{transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-\[1\.5px\]{border-width:1.5px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[--color-border\]{border-color:var(--color-border)}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-700{--tw-border-opacity: 1;border-color:rgb(29 78 216 / var(--tw-border-opacity, 1))}.border-border{border-color:hsl(var(--border))}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-current{border-color:currentColor}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-green-700{--tw-border-opacity: 1;border-color:rgb(21 128 61 / var(--tw-border-opacity, 1))}.border-input{border-color:hsl(var(--input))}.border-muted{border-color:hsl(var(--muted))}.border-muted-foreground\/50{border-color:hsl(var(--muted-foreground) / .5)}.border-orange-600{--tw-border-opacity: 1;border-color:rgb(234 88 12 / var(--tw-border-opacity, 1))}.border-primary{border-color:hsl(var(--primary))}.border-primary\/20{border-color:hsl(var(--primary) / .2)}.border-primary\/30{border-color:hsl(var(--primary) / .3)}.border-primary\/50{border-color:hsl(var(--primary) / .5)}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-red-500\/50{border-color:#ef444480}.border-transparent{border-color:transparent}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-yellow-500\/50{border-color:#eab30880}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\[--color-bg\]{background-color:var(--color-bg)}.bg-accent{background-color:hsl(var(--accent))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-background{background-color:hsl(var(--background))}.bg-background\/50{background-color:hsl(var(--background) / .5)}.bg-background\/80{background-color:hsl(var(--background) / .8)}.bg-background\/95{background-color:hsl(var(--background) / .95)}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-black\/50{background-color:#00000080}.bg-black\/80{background-color:#000c}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-900\/20{background-color:#1e3a8a33}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-card\/80{background-color:hsl(var(--card) / .8)}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-800\/20{background-color:#1f293733}.bg-gray-800\/30{background-color:#1f29374d}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-orange-600{--tw-bg-opacity: 1;background-color:rgb(234 88 12 / var(--tw-bg-opacity, 1))}.bg-pink-500{--tw-bg-opacity: 1;background-color:rgb(236 72 153 / var(--tw-bg-opacity, 1))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/20{background-color:hsl(var(--primary) / .2)}.bg-primary\/5{background-color:hsl(var(--primary) / .05)}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(168 85 247 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-red-900\/20{background-color:#7f1d1d33}.bg-red-900\/30{background-color:#7f1d1d4d}.bg-secondary{background-color:hsl(var(--secondary))}.bg-secondary\/5{background-color:hsl(var(--secondary) / .05)}.bg-slate-200{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity, 1))}.bg-slate-300{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity, 1))}.bg-slate-400{--tw-bg-opacity: 1;background-color:rgb(148 163 184 / var(--tw-bg-opacity, 1))}.bg-slate-700{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-200{--tw-bg-opacity: 1;background-color:rgb(254 240 138 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-yellow-500\/10{background-color:#eab3081a}.bg-yellow-500\/5{background-color:#eab3080d}.bg-yellow-900\/20{background-color:#713f1233}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-blue-500{--tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-500{--tw-gradient-from: #22c55e var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 197 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-500{--tw-gradient-from: #f97316 var(--tw-gradient-from-position);--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-primary\/5{--tw-gradient-from: hsl(var(--primary) / .05) var(--tw-gradient-from-position);--tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-500{--tw-gradient-from: #a855f7 var(--tw-gradient-from-position);--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-500{--tw-gradient-from: #ef4444 var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 68 68 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-200{--tw-gradient-from: #e2e8f0 var(--tw-gradient-from-position);--tw-gradient-to: rgb(226 232 240 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-300{--tw-gradient-from: #cbd5e1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(203 213 225 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-400{--tw-gradient-from: #94a3b8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(148 163 184 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-background{--tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), hsl(var(--background)) var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-blue-600{--tw-gradient-to: #2563eb var(--tw-gradient-to-position)}.to-cyan-500{--tw-gradient-to: #06b6d4 var(--tw-gradient-to-position)}.to-emerald-500{--tw-gradient-to: #10b981 var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to: #16a34a var(--tw-gradient-to-position)}.to-orange-500{--tw-gradient-to: #f97316 var(--tw-gradient-to-position)}.to-pink-500{--tw-gradient-to: #ec4899 var(--tw-gradient-to-position)}.to-primary\/10{--tw-gradient-to: hsl(var(--primary) / .1) var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to: #a855f7 var(--tw-gradient-to-position)}.to-secondary\/5{--tw-gradient-to: hsl(var(--secondary) / .05) var(--tw-gradient-to-position)}.to-slate-700{--tw-gradient-to: #334155 var(--tw-gradient-to-position)}.to-slate-800{--tw-gradient-to: #1e293b var(--tw-gradient-to-position)}.to-slate-900{--tw-gradient-to: #0f172a var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.fill-yellow-400{fill:#facc15}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[1px\]{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[--cell-size\]{padding-left:var(--cell-size);padding-right:var(--cell-size)}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pl-10{padding-left:2.5rem}.pl-11{padding-left:2.75rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-1{padding-right:.25rem}.pr-10{padding-right:2.5rem}.pr-16{padding-right:4rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.text-\[150px\]{font-size:150px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/50{color:hsl(var(--foreground) / .5)}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/50{color:hsl(var(--muted-foreground) / .5)}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-800{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.text-orange-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary\/10{color:hsl(var(--primary) / .1)}.text-primary\/30{color:hsl(var(--primary) / .3)}.text-primary\/60{color:hsl(var(--primary) / .6)}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.text-yellow-900{--tw-text-opacity: 1;color:rgb(113 63 18 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-primary{--tw-ring-color: hsl(var(--primary))}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur-3xl{--tw-blur: blur(64px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.text-primary-gradient{color:hsl(var(--primary))}.has-gradient .text-primary-gradient{background:var(--primary-gradient);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.\[--cell-size\:2rem\]{--cell-size: 2rem}.no-animations *,.no-animations *:before,.no-animations *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.no-animations *:hover{transition-duration:.01ms!important}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:999}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:border-primary\/50:hover{border-color:hsl(var(--primary) / .5)}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent) / .5)}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-orange-700:hover{--tw-bg-opacity: 1;background-color:rgb(194 65 12 / var(--tw-bg-opacity, 1))}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-secondary:hover{background-color:hsl(var(--secondary))}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-secondary\/90:hover{background-color:hsl(var(--secondary) / .9)}.hover\:bg-transparent:hover{background-color:transparent}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-green-700:hover{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.hover\:text-orange-700:hover{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.hover\:text-primary\/80:hover{color:hsl(var(--primary) / .8)}.hover\:text-red-700:hover{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.hover\:text-yellow-300:hover{--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.hover\:text-yellow-800:hover{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:ring-2:hover{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.hover\:ring-primary:hover{--tw-ring-color: hsl(var(--primary))}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-gray-100:focus{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-red-500:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.active\:cursor-grabbing:active{cursor:grabbing}.active\:border-primary\/70:active{border-color:hsl(var(--primary) / .7)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group[open] .group-open\:rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:opacity-100{opacity:1}.group.destructive .group-\[\.destructive\]\:border-muted\/40{border-color:hsl(var(--muted) / .4)}.group.destructive .group-\[\.destructive\]\:text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:hover\:text-red-50:hover{--tw-text-opacity: 1;color:rgb(254 242 242 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-red-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(248 113 113 / var(--tw-ring-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-offset-red-600:focus{--tw-ring-offset-color: #dc2626}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-selected\:text-muted-foreground[aria-selected=true]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true],.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked],.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x: var(--radix-toast-swipe-end-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x: var(--radix-toast-swipe-move-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes fade-out{0%{opacity:1}to{opacity:0}}.data-\[state\=closed\]\:animate-fade-out[data-state=closed]{animation:fade-out .15s ease-in}.data-\[state\=closed\]\:animate-slide-out-to-right[data-state=closed]{animation:slide-out-to-right .2s ease-in}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.data-\[state\=open\]\:animate-fade-in[data-state=open]{animation:fade-in .2s ease-out}@keyframes slide-in-from-right{0%{transform:translate(100%)}to{transform:translate(0)}}.data-\[state\=open\]\:animate-slide-in-from-right[data-state=open]{animation:slide-in-from-right .3s ease-out}@keyframes slide-out-to-right{0%{transform:translate(0)}to{transform:translate(100%)}}.data-\[swipe\=end\]\:animate-slide-out-to-right[data-swipe=end]{animation:slide-out-to-right .2s ease-in}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) - 2px)}.data-\[selected\=true\]\:rounded-none[data-selected=true]{border-radius:0}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:hsl(var(--primary))}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:hsl(var(--accent))}.data-\[range-start\=true\]\:bg-primary[data-range-start=true],.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:hsl(var(--primary))}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:hsl(var(--primary-foreground))}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:hsl(var(--accent-foreground))}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true],.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:hsl(var(--primary-foreground))}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:opacity-50[data-disabled=true],.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.data-\[state\=active\]\:duration-300[data-state=active]{transition-duration:.3s}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:relative{position:relative}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:z-10{z-index:10}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:border-ring{border-color:hsl(var(--ring))}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-\[3px\]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}.dark\:border-amber-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(146 64 14 / var(--tw-border-opacity, 1))}.dark\:border-blue-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity, 1))}.dark\:border-blue-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 58 138 / var(--tw-border-opacity, 1))}.dark\:border-gray-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(17 24 39 / var(--tw-border-opacity, 1))}.dark\:border-green-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(22 101 52 / var(--tw-border-opacity, 1))}.dark\:border-yellow-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(113 63 18 / var(--tw-border-opacity, 1))}.dark\:bg-amber-950\/30:is(.dark *){background-color:#451a034d}.dark\:bg-blue-500\/20:is(.dark *){background-color:#3b82f633}.dark\:bg-blue-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 37 84 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950\/20:is(.dark *){background-color:#17255433}.dark\:bg-blue-950\/30:is(.dark *){background-color:#1725544d}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800\/30:is(.dark *){background-color:#1f29374d}.dark\:bg-gray-800\/50:is(.dark *){background-color:#1f293780}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(3 7 18 / var(--tw-bg-opacity, 1))}.dark\:bg-green-900\/30:is(.dark *){background-color:#14532d4d}.dark\:bg-green-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(5 46 22 / var(--tw-bg-opacity, 1))}.dark\:bg-orange-950\/20:is(.dark *){background-color:#43140733}.dark\:bg-red-500\/20:is(.dark *){background-color:#ef444433}.dark\:bg-red-600\/30:is(.dark *){background-color:#dc26264d}.dark\:bg-red-900\/30:is(.dark *){background-color:#7f1d1d4d}.dark\:bg-red-950\/50:is(.dark *){background-color:#450a0a80}.dark\:bg-yellow-500\/20:is(.dark *){background-color:#eab30833}.dark\:bg-yellow-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1))}.dark\:bg-yellow-950\/30:is(.dark *){background-color:#4220064d}.dark\:text-amber-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 243 199 / var(--tw-text-opacity, 1))}.dark\:text-blue-100:is(.dark *){--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-200:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-cyan-500:is(.dark *){--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-orange-100:is(.dark *){--tw-text-opacity: 1;color:rgb(255 237 213 / var(--tw-text-opacity, 1))}.dark\:text-orange-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 215 170 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-red-500:is(.dark *){--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.dark\:text-yellow-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 249 195 / var(--tw-text-opacity, 1))}.dark\:text-yellow-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.dark\:text-yellow-400:is(.dark *){--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.dark\:text-yellow-500:is(.dark *){--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:hover\:text-yellow-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:focus\:bg-gray-800:focus:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}@media(min-width:640px){.sm\:right-2{right:.5rem}.sm\:right-3{right:.75rem}.sm\:top-2{top:.5rem}.sm\:top-3{top:.75rem}.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:mb-3{margin-bottom:.75rem}.sm\:mb-4{margin-bottom:1rem}.sm\:mb-6{margin-bottom:1.5rem}.sm\:ml-1{margin-left:.25rem}.sm\:mr-1{margin-right:.25rem}.sm\:mr-2{margin-right:.5rem}.sm\:mt-0{margin-top:0}.sm\:mt-2{margin-top:.5rem}.sm\:mt-3{margin-top:.75rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-12{height:3rem}.sm\:h-2{height:.5rem}.sm\:h-24{height:6rem}.sm\:h-3{height:.75rem}.sm\:h-4{height:1rem}.sm\:h-8{height:2rem}.sm\:h-\[300px\]{height:300px}.sm\:h-\[400px\]{height:400px}.sm\:h-\[500px\]{height:500px}.sm\:h-\[calc\(100vh-280px\)\]{height:calc(100vh - 280px)}.sm\:w-10{width:2.5rem}.sm\:w-2{width:.5rem}.sm\:w-24{width:6rem}.sm\:w-3{width:.75rem}.sm\:w-4{width:1rem}.sm\:w-8{width:2rem}.sm\:w-\[140px\]{width:140px}.sm\:w-\[160px\]{width:160px}.sm\:w-\[200px\]{width:200px}.sm\:w-\[500px\]{width:500px}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-\[420px\]{max-width:420px}.sm\:max-w-\[900px\]{max-width:900px}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:flex-1{flex:1 1 0%}.sm\:flex-none{flex:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-0{gap:0px}.sm\:gap-1{gap:.25rem}.sm\:gap-2{gap:.5rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:gap-6{gap:1.5rem}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.sm\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.sm\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.sm\:space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-\[200px\]{font-size:200px}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:768px){.md\:top-4{top:1rem}.md\:mb-4{margin-bottom:1rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-8{margin-bottom:2rem}.md\:mt-8{margin-top:2rem}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-16{height:4rem}.md\:h-4{height:1rem}.md\:h-5{height:1.25rem}.md\:h-8{height:2rem}.md\:h-96{height:24rem}.md\:h-\[500px\]{height:500px}.md\:min-h-\[400px\]{min-height:400px}.md\:w-16{width:4rem}.md\:w-4{width:1rem}.md\:w-5{width:1.25rem}.md\:w-8{width:2rem}.md\:w-96{width:24rem}.md\:max-w-none{max-width:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:gap-2{gap:.5rem}.md\:gap-3{gap:.75rem}.md\:gap-4{gap:1rem}.md\:gap-6{gap:1.5rem}.md\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.md\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.md\:whitespace-normal{white-space:normal}.md\:p-12{padding:3rem}.md\:p-4{padding:1rem}.md\:p-6{padding:1.5rem}.md\:p-8{padding:2rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:1024px){.lg\:invisible{visibility:hidden}.lg\:relative{position:relative}.lg\:z-0{z-index:0}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:mb-1{margin-bottom:.25rem}.lg\:block{display:block}.lg\:hidden{display:none}.lg\:w-12{width:3rem}.lg\:w-16{width:4rem}.lg\:w-64{width:16rem}.lg\:w-8{width:2rem}.lg\:w-\[130px\]{width:130px}.lg\:w-\[160px\]{width:160px}.lg\:w-\[180px\]{width:180px}.lg\:w-\[200px\]{width:200px}.lg\:w-\[240px\]{width:240px}.lg\:w-\[75px\]{width:75px}.lg\:w-auto{width:auto}.lg\:w-full{width:100%}.lg\:max-w-0{max-width:0px}.lg\:flex-1{flex:1 1 0%}.lg\:flex-none{flex:none}.lg\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:justify-center{justify-content:center}.lg\:gap-0{gap:0px}.lg\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.lg\:overflow-hidden{overflow:hidden}.lg\:p-2{padding:.5rem}.lg\:p-6{padding:1.5rem}.lg\:px-0{padding-left:0;padding-right:0}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:pb-6{padding-bottom:1.5rem}.lg\:text-3xl{font-size:1.875rem;line-height:2.25rem}.lg\:opacity-0{opacity:0}}@media(min-width:1280px){.xl\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}}.\[\&\+div\]\:text-xs+div{font-size:.75rem;line-height:1rem}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>span\]\:text-xs>span{font-size:.75rem;line-height:1rem}.\[\&\>span\]\:opacity-70>span{opacity:.7}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y: -3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-4>svg{top:1rem}.\[\&\>svg\]\:size-3\.5>svg{width:.875rem;height:.875rem}.\[\&\>svg\]\:h-2\.5>svg{height:.625rem}.\[\&\>svg\]\:h-3>svg{height:.75rem}.\[\&\>svg\]\:w-2\.5>svg{width:.625rem}.\[\&\>svg\]\:w-3>svg{width:.75rem}.\[\&\>svg\]\:text-foreground>svg{color:hsl(var(--foreground))}.\[\&\>svg\]\:text-muted-foreground>svg{color:hsl(var(--muted-foreground))}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:1.75rem}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:hsl(var(--muted-foreground))}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:hsl(var(--border) / .5)}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:hsl(var(--border))}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-layer\]\:outline-none .recharts-layer{outline:2px solid transparent;outline-offset:2px}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector,.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:hsl(var(--muted))}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-sector\]\:outline-none .recharts-sector,.\[\&_\.recharts-surface\]\:outline-none .recharts-surface{outline:2px solid transparent;outline-offset:2px}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:1.25rem}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:invisible svg{visibility:hidden}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent,[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:transparent}@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(/assets/KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(/assets/KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(/assets/KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(/assets/KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(/assets/KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmfttwI4mBo1EG15fxJhUiCLbiiyCf/ZA6MFAhg3pGIZGdGIVjtPn6UcMk9A/UUr9PhoNsCENw1APAq0gpH73e+M+0ueyHbabc3vkbcdtzcf/fiy+NxQEjf9ud/ELBHAXJ0nk4z+MXH2Ev/kWyV4k7SkvpPc9Qr38F6RPWnM9cN6DJ0AdD1BhtgABtmoRoFCvPsBAumNm6soZG2Gk5GyVTo2sJncSyp0jQTYoR6WDvTwaaEcHsxHfvuWhHA3a6bN7twRKtcGok6NsCi7jYRrM2jExsUFMxMQYuJbMhuWNOumEJy9hi29Dmg5zMp/A5+hhPG19j1vBrq8JTLr8ki5VLPmG/PynJHVul440bxg5xuymHUFPBshC+nA9I1FmwbRBTNHAcik3Oae0cxKoI3MOriM42UrPe51nsaGxJ+WfXubAsP84aabUlQSJ1IiE0iPETLUU4CATgfXSCSpuRFRmCGbO+wSpAnzaeaCYW1VNEysRtuXCEL1kUFUbbtMv3Tilt/1c11jt3Q5bbMa84cpWipp8Elw3MZhOHsOlwwVUQM3lAR35JiFQbaYCRnMF2lxAWoOg2gyoIV4PouX8HytNIfLhqpJtXB4vjiViUI8IJ7bkC4ikkQvKksnOTKICwnqWSZ9YS5f0WCxmpgjbIq7EJcM4aI2nmhLNY2JIUgOjXZFWBHb+x5oh6cwb0Tv1ackHdKi0I9OO2wE9aogIOn540CCCziyhN+IaejtgAONKznHlHyutPrHGwCx9S6B8kfS4Mfi4Eyv7OU730bT1SCBjt834cXsf43zVjPUqqJjgrjeGnBxSG4aYAKFuVbeCfkDIjAqMb6yLNIbCuvXhMH2/+k2vkNpkORhR59N1CkzoOENvneIosjYmuTxlhUzaGEJQ/iWqx4dmwpmKjrwTiTGTCVozNAYqk/zXOndWxuWSmJkQpJw3pK5KX6QrLt5LATMqpmPAQhkhK6PUjzHUn7E0gHE0kPE0iKkolgkUx9SZmVAdDgpffdyJKg3k7VmzYGCwVXGz/tXmkOIp+vcWs+EMuhhvN0h9uhfzWJziBQmCREGSIFmQIkgVpAnSBRmC//6hkLZwaVhwxlrJSOdqlFtOYxlau9F2QN5Y98xmIAsiM1HVp2VFX+DHHGg6Ecjh3vmqtidX3qHI2qycTk/iwxSt5UzTmEP92ZBnEWTk4Mx8Mpl78ZDokxg/KWb+Q0QkvdKVmq3TMW+RXEgrsziSAfNXFMhDc60N5N9jQzjfO0kBKpUZl0ZmwJ41j/B9Hz6wmRaJB84niNmQrzp9eSlQCDDzazGDdVi3P36VZQ+Jy4f9UBNp+3zTjqI4abaFAm+GShVaXlsGdF3FYzZcDI6cori4kMxUECl9IjJZpzkvitAoxKue+90pDMvcKRxLl53TmOKCmV/xRolNKSqqUxc6LStOETmFOiLZZptlZepcKiAzteG8PEdpnQpbOMNcMsR4RR2Bs0cKFEvSmIjAFcnarqwUL4lDhHmnVkwu1IwshbiCcgvOheZuYyOteufZZwlcTlLgnZ3o/WcYdzZHW/WGaqaVfmTZ1aWCceJjkbZqsfbkOtcFlUZM/jy+hXHDbaUobWqqXaeWobbLO99yG5N3U4wxco0rQGGcOLASFMXeJoham8M+/x6O2WywK2l4HGbq1CoUyC/IZikQhdq3SiuNrvAEj0AVu9x2x3lp/xWzahaxidezFVtdcb5uEnzyl0ZmYiuKI0exvCd4Xc9CV1KB0db00z92wDPde0kukbvZIWN6jUWFTmPIC/Y4UPCm8UfDTFZpZNon1qLFTkBhxzB+FjQRA2Q/YRJT8pQigslMaUpFyAG8TMlXigiqmAZX4xgijKjRlGpLE0GdplRfCaJo0JQaSxNBk6ZmMzcya0FmrcisDdn0Q3HI2sWSppYigmlM1XT/kLQZSNpMJG0WkjYbSZuDpM1F0uYhFc1HxU4m1QJjDK6iL0S5uSj5rgXc3RejEigtcRBtqYPQsiTskmO5vosV+q4VGIKbOkDg0jtRrq+Em1YloaTFar3EGr1EUC8R0kus1Uus00usL97ABr2BjXoDm/QGNhuWtMVBKOwg/i78lT7hBsAvDmwHc/ao3vmUbBmhjeYySZNWvGkfZAgISDSaDo1SVpzGDsAEkF8B+gEapViUoZgUWXcRIGFZNm6gWbAKk0bp0k1MHG9fLYtV4iS2SmLEQFARzRcnf9PUS0LVn05/J9MiRRBU3v2IrvW974v4N00L7ZMk0wXP1409CHo/an8zTRHD3eSJ6m8D4YMkZNl3M79sqeuAsr/m3f+8/yl7A50aiAEJgeBeMWzu7ui9UfUBCe2TIqZIoOd/3/udRBOQidQZUERzb2/VwZN1H/Sju82ew2H2Wfr6qvfVf3hqwDvAIpkQVFy4B9Pe9e4/XvPeceu7h3dvO56iJPf0+A6cqA2ip18ER+iFgggiuOkvj24bby0N9j2UHIkgqIt+sVgfodC4YghLSMjSZbH0VR/6dMDrYJeKHilKTemt6v6kvzvn3/RrdWtr0GoN/xL+Sex/cPYLUpepx9cz/D46UPU5KXgAQa+NDps1v6J3xP1i2HtaDB0M9aX2deA7SYff//+gUCovMmIK/qfsFcOk+4Y5ZN97XlG6zebqtMbKgeRFi51vnxTQYBUik2rS/Cn6PC8ADR8FGxsRPB82dzfND90gIcshOcYUkfjherBz53odpm6TP8txlwOZ71xmfHHOvq053qFF/MRlS3jP0ELudrf2OeN8DHvp6ZceLe8qKYvWz/7yp0u4dKPfli3CYq0O13Ih71mylJ80tOi10On8wi+F4+LWgDPeJ30msSQt9/vkmHq9/Lvo2b461mP801v3W4xTcs6CbvF9UDdrSt+A8OUbpSh55qAUFXWznBBfdeJ8a4d7ugT5tvxUza3h9m4H7ptTqiG4z0g5dc0X29OcGlhpGFMpQo9ytTS+NViZpNdvU4kWx+LKxNY10kQ1yqGXrhe4/1nvP7E+nd5A92TtaRplbHSqoIdOqtRWti+fkB5/n1+/VvCmz12pG1kpQWsfi1ftlBobm0bpngs16CHkbIwdLnParxtTV3QYRlfJ0KFskH7pdN/YDn+yRuSd7sNH3aO0DYPggk6uWuXrfOc+fa3VTxFVvKaNxHsiHmsXyCLIE5yuOeN3/Jdf8HBL/5M6shjyhxHx9BjB1O0+4NLOnjLLSxwO7ukN4jMbOIcD879KLSi6Pk61Oqm2377n8079PXEEQ7cy7OKEC9nbpet118fxweTafpt69x/Bt8UqGzNQt7aelpc44dn5cqhwf71+qKp/Zf/+a0zcizOUWpl/iBcSXip0pplkatCchoH5c5aUM8I7/dWxAej8WicPL1URFZ9BDJelUwEwTkGqUhgSlydVes95YdXvhh9Gfz/aeFWvgVb4tuLbcv4+wLdutVZv/cUonwBD/6eDlE0aSiKK/uoH3+J1wDE/jMVqY2ysGufN84oIXB0sPzy8ollX/LegY74DgJXJR57sn+VGza0x3DnuIgABFM15LmajjjsNlYj+JEZGbuRYcAMOWxFkPN2w6Wd46xo4gVWQR/X4lyI/R6K/YK0110GzudPRW7Y+UOBGTfNNzHeYT0fiH0taunBpq9HEW8OKSaBGj21L0MqenEmNRWBAWDWAk4CpNoEZJ2tTaPFgbQYj8HxtFilErs3BTRwT8uO1NXQaWfIotchmPkAF5mMBAliEmZiOGVgCG9LgRzpscMAOOwowlT3JhusdazXGSC/hxR3UlmWVwWHpOIKheqONvjyhSiTHIkVUco5bnji8m//zL7PKaT1Vl5I6UE609f+gkr6MZKVyKc7zJRmCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC) format("woff2"),url(/assets/KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.25"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:grab}.react-flow__node.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%} diff --git a/webui/dist/assets/index-Bzl8QBn9.css b/webui/dist/assets/index-Bzl8QBn9.css new file mode 100644 index 00000000..f43286e9 --- /dev/null +++ b/webui/dist/assets/index-Bzl8QBn9.css @@ -0,0 +1 @@ +*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 0 0% 100%;--foreground: 222.2 84% 4.9%;--card: 0 0% 100%;--card-foreground: 222.2 84% 4.9%;--popover: 0 0% 100%;--popover-foreground: 222.2 84% 4.9%;--primary: 221.2 83.2% 53.3%;--primary-foreground: 210 40% 98%;--primary-gradient: none;--secondary: 210 40% 96.1%;--secondary-foreground: 222.2 47.4% 11.2%;--muted: 210 40% 96.1%;--muted-foreground: 215.4 16.3% 46.9%;--accent: 210 40% 96.1%;--accent-foreground: 222.2 47.4% 11.2%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 210 40% 98%;--border: 214.3 31.8% 91.4%;--input: 214.3 31.8% 91.4%;--ring: 221.2 83.2% 53.3%;--radius: .5rem;--chart-1: 221.2 83.2% 53.3%;--chart-2: 160 60% 45%;--chart-3: 30 80% 55%;--chart-4: 280 65% 60%;--chart-5: 340 75% 55%}.dark{--background: 222.2 84% 4.9%;--foreground: 210 40% 98%;--card: 222.2 84% 4.9%;--card-foreground: 210 40% 98%;--popover: 222.2 84% 4.9%;--popover-foreground: 210 40% 98%;--primary: 217.2 91.2% 59.8%;--primary-foreground: 222.2 47.4% 11.2%;--primary-gradient: none;--secondary: 217.2 32.6% 17.5%;--secondary-foreground: 210 40% 98%;--muted: 217.2 32.6% 17.5%;--muted-foreground: 215 20.2% 65.1%;--accent: 217.2 32.6% 17.5%;--accent-foreground: 210 40% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 210 40% 98%;--border: 217.2 32.6% 17.5%;--input: 217.2 32.6% 17.5%;--ring: 224.3 76.3% 48%;--chart-1: 217.2 91.2% 59.8%;--chart-2: 160 60% 50%;--chart-3: 30 80% 60%;--chart-4: 280 65% 65%;--chart-5: 340 75% 60%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-1\/4{bottom:25%}.bottom-4{bottom:1rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.left-1\/4{left:25%}.left-2{left:.5rem}.left-2\.5{left:.625rem}.left-3{left:.75rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-1\.5{right:.375rem}.right-1\/4{right:25%}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-1\/4{top:25%}.top-2{top:.5rem}.top-2\.5{top:.625rem}.top-3{top:.75rem}.top-4{top:1rem}.top-\[50\%\]{top:50%}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.order-1{order:1}.order-2{order:2}.col-span-2{grid-column:span 2 / span 2}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-mt-2{margin-top:-.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-auto{aspect-ratio:auto}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:16 / 9}.size-4{width:1rem;height:1rem}.size-\[--cell-size\]{width:var(--cell-size);height:var(--cell-size)}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[--cell-size\]{height:var(--cell-size)}.h-\[1\.25rem\]{height:1.25rem}.h-\[1px\]{height:1px}.h-\[200px\]{height:200px}.h-\[250px\]{height:250px}.h-\[280px\]{height:280px}.h-\[300px\]{height:300px}.h-\[400px\]{height:400px}.h-\[calc\(100vh-200px\)\]{height:calc(100vh - 200px)}.h-\[calc\(100vh-240px\)\]{height:calc(100vh - 240px)}.h-\[calc\(100vh-260px\)\]{height:calc(100vh - 260px)}.h-\[calc\(100vh-4rem\)\]{height:calc(100vh - 4rem)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\[--radix-context-menu-content-available-height\]{max-height:var(--radix-context-menu-content-available-height)}.max-h-\[--radix-select-content-available-height\]{max-height:var(--radix-select-content-available-height)}.max-h-\[300px\]{max-height:300px}.max-h-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[calc\(90vh-120px\)\]{max-height:calc(90vh - 120px)}.max-h-\[calc\(90vh-8rem\)\]{max-height:calc(90vh - 8rem)}.max-h-none{max-height:none}.max-h-screen{max-height:100vh}.min-h-0{min-height:0px}.min-h-10{min-height:2.5rem}.min-h-\[100px\]{min-height:100px}.min-h-\[300px\]{min-height:300px}.min-h-\[60px\]{min-height:60px}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[--cell-size\]{width:var(--cell-size)}.w-\[100px\]{width:100px}.w-\[120px\]{width:120px}.w-\[130px\]{width:130px}.w-\[1px\]{width:1px}.w-\[65px\]{width:65px}.w-\[95vw\]{width:95vw}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[--cell-size\]{min-width:var(--cell-size)}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[80px\]{min-width:80px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-\[150px\]{max-width:150px}.max-w-\[200px\]{max-width:200px}.max-w-\[60px\]{max-width:60px}.max-w-\[95vw\]{max-width:95vw}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\[--radix-context-menu-content-transform-origin\]{transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\[--radix-popover-content-transform-origin\]{transform-origin:var(--radix-popover-content-transform-origin)}.origin-\[--radix-select-content-transform-origin\]{transform-origin:var(--radix-select-content-transform-origin)}.origin-\[--radix-tooltip-content-transform-origin\]{transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-\[1\.5px\]{border-width:1.5px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[--color-border\]{border-color:var(--color-border)}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-500\/50{border-color:#f59e0b80}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-700{--tw-border-opacity: 1;border-color:rgb(29 78 216 / var(--tw-border-opacity, 1))}.border-border{border-color:hsl(var(--border))}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-current{border-color:currentColor}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-green-700{--tw-border-opacity: 1;border-color:rgb(21 128 61 / var(--tw-border-opacity, 1))}.border-input{border-color:hsl(var(--input))}.border-muted{border-color:hsl(var(--muted))}.border-muted-foreground\/30{border-color:hsl(var(--muted-foreground) / .3)}.border-muted-foreground\/50{border-color:hsl(var(--muted-foreground) / .5)}.border-orange-600{--tw-border-opacity: 1;border-color:rgb(234 88 12 / var(--tw-border-opacity, 1))}.border-primary{border-color:hsl(var(--primary))}.border-primary\/20{border-color:hsl(var(--primary) / .2)}.border-primary\/30{border-color:hsl(var(--primary) / .3)}.border-primary\/50{border-color:hsl(var(--primary) / .5)}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-red-500\/50{border-color:#ef444480}.border-transparent{border-color:transparent}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-yellow-500\/50{border-color:#eab30880}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\[--color-bg\]{background-color:var(--color-bg)}.bg-accent{background-color:hsl(var(--accent))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-background{background-color:hsl(var(--background))}.bg-background\/50{background-color:hsl(var(--background) / .5)}.bg-background\/80{background-color:hsl(var(--background) / .8)}.bg-background\/95{background-color:hsl(var(--background) / .95)}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-black\/50{background-color:#00000080}.bg-black\/80{background-color:#000c}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-900\/20{background-color:#1e3a8a33}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-card\/80{background-color:hsl(var(--card) / .8)}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-800\/20{background-color:#1f293733}.bg-gray-800\/30{background-color:#1f29374d}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted\/20{background-color:hsl(var(--muted) / .2)}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-orange-600{--tw-bg-opacity: 1;background-color:rgb(234 88 12 / var(--tw-bg-opacity, 1))}.bg-pink-500{--tw-bg-opacity: 1;background-color:rgb(236 72 153 / var(--tw-bg-opacity, 1))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/20{background-color:hsl(var(--primary) / .2)}.bg-primary\/5{background-color:hsl(var(--primary) / .05)}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(168 85 247 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-red-900\/20{background-color:#7f1d1d33}.bg-red-900\/30{background-color:#7f1d1d4d}.bg-secondary{background-color:hsl(var(--secondary))}.bg-secondary\/5{background-color:hsl(var(--secondary) / .05)}.bg-slate-200{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity, 1))}.bg-slate-300{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity, 1))}.bg-slate-400{--tw-bg-opacity: 1;background-color:rgb(148 163 184 / var(--tw-bg-opacity, 1))}.bg-slate-700{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-200{--tw-bg-opacity: 1;background-color:rgb(254 240 138 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-yellow-500\/10{background-color:#eab3081a}.bg-yellow-500\/5{background-color:#eab3080d}.bg-yellow-900\/20{background-color:#713f1233}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-blue-500{--tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-500{--tw-gradient-from: #22c55e var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 197 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-500{--tw-gradient-from: #f97316 var(--tw-gradient-from-position);--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-primary\/5{--tw-gradient-from: hsl(var(--primary) / .05) var(--tw-gradient-from-position);--tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-500{--tw-gradient-from: #a855f7 var(--tw-gradient-from-position);--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-500{--tw-gradient-from: #ef4444 var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 68 68 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-200{--tw-gradient-from: #e2e8f0 var(--tw-gradient-from-position);--tw-gradient-to: rgb(226 232 240 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-300{--tw-gradient-from: #cbd5e1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(203 213 225 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-400{--tw-gradient-from: #94a3b8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(148 163 184 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-background{--tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), hsl(var(--background)) var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-blue-600{--tw-gradient-to: #2563eb var(--tw-gradient-to-position)}.to-cyan-500{--tw-gradient-to: #06b6d4 var(--tw-gradient-to-position)}.to-emerald-500{--tw-gradient-to: #10b981 var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to: #16a34a var(--tw-gradient-to-position)}.to-orange-500{--tw-gradient-to: #f97316 var(--tw-gradient-to-position)}.to-pink-500{--tw-gradient-to: #ec4899 var(--tw-gradient-to-position)}.to-primary\/10{--tw-gradient-to: hsl(var(--primary) / .1) var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to: #a855f7 var(--tw-gradient-to-position)}.to-secondary\/5{--tw-gradient-to: hsl(var(--secondary) / .05) var(--tw-gradient-to-position)}.to-slate-700{--tw-gradient-to: #334155 var(--tw-gradient-to-position)}.to-slate-800{--tw-gradient-to: #1e293b var(--tw-gradient-to-position)}.to-slate-900{--tw-gradient-to: #0f172a var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.fill-yellow-400{fill:#facc15}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[1px\]{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[--cell-size\]{padding-left:var(--cell-size);padding-right:var(--cell-size)}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pl-10{padding-left:2.5rem}.pl-11{padding-left:2.75rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-1{padding-right:.25rem}.pr-10{padding-right:2.5rem}.pr-16{padding-right:4rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.text-\[150px\]{font-size:150px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/50{color:hsl(var(--foreground) / .5)}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/50{color:hsl(var(--muted-foreground) / .5)}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-800{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.text-orange-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary\/10{color:hsl(var(--primary) / .1)}.text-primary\/30{color:hsl(var(--primary) / .3)}.text-primary\/60{color:hsl(var(--primary) / .6)}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.text-yellow-900{--tw-text-opacity: 1;color:rgb(113 63 18 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-primary{--tw-ring-color: hsl(var(--primary))}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur-3xl{--tw-blur: blur(64px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.text-primary-gradient{color:hsl(var(--primary))}.has-gradient .text-primary-gradient{background:var(--primary-gradient);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.\[--cell-size\:2rem\]{--cell-size: 2rem}.no-animations *,.no-animations *:before,.no-animations *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.no-animations *:hover{transition-duration:.01ms!important}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:999}.__floater{z-index:99999!important;pointer-events:auto!important}.react-joyride__overlay,.react-joyride__spotlight{z-index:99998!important}.react-joyride__tooltip{pointer-events:auto!important}#tour-portal-container *{pointer-events:auto}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:border-primary\/50:hover{border-color:hsl(var(--primary) / .5)}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent) / .5)}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-orange-700:hover{--tw-bg-opacity: 1;background-color:rgb(194 65 12 / var(--tw-bg-opacity, 1))}.hover\:bg-primary\/10:hover{background-color:hsl(var(--primary) / .1)}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-secondary:hover{background-color:hsl(var(--secondary))}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-secondary\/90:hover{background-color:hsl(var(--secondary) / .9)}.hover\:bg-transparent:hover{background-color:transparent}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-green-700:hover{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.hover\:text-orange-700:hover{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.hover\:text-primary\/80:hover{color:hsl(var(--primary) / .8)}.hover\:text-red-700:hover{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.hover\:text-yellow-300:hover{--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.hover\:text-yellow-800:hover{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:ring-2:hover{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.hover\:ring-primary:hover{--tw-ring-color: hsl(var(--primary))}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-gray-100:focus{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-red-500:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.active\:cursor-grabbing:active{cursor:grabbing}.active\:border-primary\/70:active{border-color:hsl(var(--primary) / .7)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group[open] .group-open\:rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:opacity-100{opacity:1}.group.destructive .group-\[\.destructive\]\:border-muted\/40{border-color:hsl(var(--muted) / .4)}.group.destructive .group-\[\.destructive\]\:text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:hover\:text-red-50:hover{--tw-text-opacity: 1;color:rgb(254 242 242 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-red-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(248 113 113 / var(--tw-ring-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-offset-red-600:focus{--tw-ring-offset-color: #dc2626}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-selected\:text-muted-foreground[aria-selected=true]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true],.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked],.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x: var(--radix-toast-swipe-end-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x: var(--radix-toast-swipe-move-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes fade-out{0%{opacity:1}to{opacity:0}}.data-\[state\=closed\]\:animate-fade-out[data-state=closed]{animation:fade-out .15s ease-in}.data-\[state\=closed\]\:animate-slide-out-to-right[data-state=closed]{animation:slide-out-to-right .2s ease-in}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.data-\[state\=open\]\:animate-fade-in[data-state=open]{animation:fade-in .2s ease-out}@keyframes slide-in-from-right{0%{transform:translate(100%)}to{transform:translate(0)}}.data-\[state\=open\]\:animate-slide-in-from-right[data-state=open]{animation:slide-in-from-right .3s ease-out}@keyframes slide-out-to-right{0%{transform:translate(0)}to{transform:translate(100%)}}.data-\[swipe\=end\]\:animate-slide-out-to-right[data-swipe=end]{animation:slide-out-to-right .2s ease-in}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) - 2px)}.data-\[selected\=true\]\:rounded-none[data-selected=true]{border-radius:0}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:hsl(var(--primary))}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:hsl(var(--accent))}.data-\[range-start\=true\]\:bg-primary[data-range-start=true],.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:hsl(var(--primary))}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:hsl(var(--primary-foreground))}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:hsl(var(--accent-foreground))}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true],.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:hsl(var(--primary-foreground))}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:opacity-50[data-disabled=true],.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.data-\[state\=active\]\:duration-300[data-state=active]{transition-duration:.3s}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:relative{position:relative}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:z-10{z-index:10}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:border-ring{border-color:hsl(var(--ring))}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-\[3px\]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}.dark\:border-amber-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(146 64 14 / var(--tw-border-opacity, 1))}.dark\:border-blue-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity, 1))}.dark\:border-blue-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 58 138 / var(--tw-border-opacity, 1))}.dark\:border-gray-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(17 24 39 / var(--tw-border-opacity, 1))}.dark\:border-green-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(22 101 52 / var(--tw-border-opacity, 1))}.dark\:border-yellow-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(113 63 18 / var(--tw-border-opacity, 1))}.dark\:bg-amber-950\/30:is(.dark *){background-color:#451a034d}.dark\:bg-blue-500\/20:is(.dark *){background-color:#3b82f633}.dark\:bg-blue-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 37 84 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950\/20:is(.dark *){background-color:#17255433}.dark\:bg-blue-950\/30:is(.dark *){background-color:#1725544d}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800\/30:is(.dark *){background-color:#1f29374d}.dark\:bg-gray-800\/50:is(.dark *){background-color:#1f293780}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(3 7 18 / var(--tw-bg-opacity, 1))}.dark\:bg-green-900\/30:is(.dark *){background-color:#14532d4d}.dark\:bg-green-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(5 46 22 / var(--tw-bg-opacity, 1))}.dark\:bg-orange-950\/20:is(.dark *){background-color:#43140733}.dark\:bg-red-500\/20:is(.dark *){background-color:#ef444433}.dark\:bg-red-600\/30:is(.dark *){background-color:#dc26264d}.dark\:bg-red-900\/30:is(.dark *){background-color:#7f1d1d4d}.dark\:bg-red-950\/50:is(.dark *){background-color:#450a0a80}.dark\:bg-yellow-500\/20:is(.dark *){background-color:#eab30833}.dark\:bg-yellow-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1))}.dark\:bg-yellow-950\/30:is(.dark *){background-color:#4220064d}.dark\:text-amber-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 243 199 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-blue-100:is(.dark *){--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-200:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-cyan-500:is(.dark *){--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-orange-100:is(.dark *){--tw-text-opacity: 1;color:rgb(255 237 213 / var(--tw-text-opacity, 1))}.dark\:text-orange-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 215 170 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-red-500:is(.dark *){--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.dark\:text-yellow-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 249 195 / var(--tw-text-opacity, 1))}.dark\:text-yellow-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.dark\:text-yellow-400:is(.dark *){--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.dark\:text-yellow-500:is(.dark *){--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:hover\:text-yellow-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:focus\:bg-gray-800:focus:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}@media(min-width:640px){.sm\:right-2{right:.5rem}.sm\:right-3{right:.75rem}.sm\:top-2{top:.5rem}.sm\:top-3{top:.75rem}.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:mb-3{margin-bottom:.75rem}.sm\:mb-4{margin-bottom:1rem}.sm\:mb-6{margin-bottom:1.5rem}.sm\:ml-1{margin-left:.25rem}.sm\:mr-1{margin-right:.25rem}.sm\:mr-2{margin-right:.5rem}.sm\:mt-0{margin-top:0}.sm\:mt-2{margin-top:.5rem}.sm\:mt-3{margin-top:.75rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-12{height:3rem}.sm\:h-2{height:.5rem}.sm\:h-24{height:6rem}.sm\:h-3{height:.75rem}.sm\:h-4{height:1rem}.sm\:h-8{height:2rem}.sm\:h-\[300px\]{height:300px}.sm\:h-\[400px\]{height:400px}.sm\:h-\[500px\]{height:500px}.sm\:h-\[calc\(100vh-280px\)\]{height:calc(100vh - 280px)}.sm\:w-10{width:2.5rem}.sm\:w-2{width:.5rem}.sm\:w-24{width:6rem}.sm\:w-3{width:.75rem}.sm\:w-4{width:1rem}.sm\:w-8{width:2rem}.sm\:w-\[140px\]{width:140px}.sm\:w-\[160px\]{width:160px}.sm\:w-\[200px\]{width:200px}.sm\:w-\[500px\]{width:500px}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:min-w-\[120px\]{min-width:120px}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-\[420px\]{max-width:420px}.sm\:max-w-\[900px\]{max-width:900px}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:flex-1{flex:1 1 0%}.sm\:flex-none{flex:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-0{gap:0px}.sm\:gap-1{gap:.25rem}.sm\:gap-2{gap:.5rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:gap-6{gap:1.5rem}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.sm\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.sm\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.sm\:space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-\[200px\]{font-size:200px}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:768px){.md\:top-4{top:1rem}.md\:mb-4{margin-bottom:1rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-8{margin-bottom:2rem}.md\:mt-8{margin-top:2rem}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-16{height:4rem}.md\:h-4{height:1rem}.md\:h-5{height:1.25rem}.md\:h-8{height:2rem}.md\:h-96{height:24rem}.md\:h-\[500px\]{height:500px}.md\:min-h-\[400px\]{min-height:400px}.md\:w-16{width:4rem}.md\:w-4{width:1rem}.md\:w-5{width:1.25rem}.md\:w-8{width:2rem}.md\:w-96{width:24rem}.md\:max-w-none{max-width:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:gap-2{gap:.5rem}.md\:gap-3{gap:.75rem}.md\:gap-4{gap:1rem}.md\:gap-6{gap:1.5rem}.md\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.md\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.md\:whitespace-normal{white-space:normal}.md\:p-12{padding:3rem}.md\:p-4{padding:1rem}.md\:p-6{padding:1.5rem}.md\:p-8{padding:2rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:1024px){.lg\:invisible{visibility:hidden}.lg\:relative{position:relative}.lg\:z-0{z-index:0}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:mb-1{margin-bottom:.25rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-12{width:3rem}.lg\:w-16{width:4rem}.lg\:w-64{width:16rem}.lg\:w-8{width:2rem}.lg\:w-\[130px\]{width:130px}.lg\:w-\[160px\]{width:160px}.lg\:w-\[180px\]{width:180px}.lg\:w-\[200px\]{width:200px}.lg\:w-\[240px\]{width:240px}.lg\:w-\[75px\]{width:75px}.lg\:w-auto{width:auto}.lg\:w-full{width:100%}.lg\:max-w-0{max-width:0px}.lg\:flex-1{flex:1 1 0%}.lg\:flex-none{flex:none}.lg\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:justify-center{justify-content:center}.lg\:gap-0{gap:0px}.lg\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.lg\:overflow-hidden{overflow:hidden}.lg\:p-2{padding:.5rem}.lg\:p-6{padding:1.5rem}.lg\:px-0{padding-left:0;padding-right:0}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:pb-6{padding-bottom:1.5rem}.lg\:text-3xl{font-size:1.875rem;line-height:2.25rem}.lg\:opacity-0{opacity:0}}@media(min-width:1280px){.xl\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}}.\[\&\+div\]\:text-xs+div{font-size:.75rem;line-height:1rem}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>span\]\:text-xs>span{font-size:.75rem;line-height:1rem}.\[\&\>span\]\:opacity-70>span{opacity:.7}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y: -3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-4>svg{top:1rem}.\[\&\>svg\]\:size-3\.5>svg{width:.875rem;height:.875rem}.\[\&\>svg\]\:h-2\.5>svg{height:.625rem}.\[\&\>svg\]\:h-3>svg{height:.75rem}.\[\&\>svg\]\:w-2\.5>svg{width:.625rem}.\[\&\>svg\]\:w-3>svg{width:.75rem}.\[\&\>svg\]\:text-foreground>svg{color:hsl(var(--foreground))}.\[\&\>svg\]\:text-muted-foreground>svg{color:hsl(var(--muted-foreground))}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:1.75rem}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:hsl(var(--muted-foreground))}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:hsl(var(--border) / .5)}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:hsl(var(--border))}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-layer\]\:outline-none .recharts-layer{outline:2px solid transparent;outline-offset:2px}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector,.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:hsl(var(--muted))}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-sector\]\:outline-none .recharts-sector,.\[\&_\.recharts-surface\]\:outline-none .recharts-surface{outline:2px solid transparent;outline-offset:2px}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:1.25rem}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:invisible svg{visibility:hidden}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent,[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:transparent}@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(/assets/KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(/assets/KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(/assets/KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(/assets/KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(/assets/KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmfttwI4mBo1EG15fxJhUiCLbiiyCf/ZA6MFAhg3pGIZGdGIVjtPn6UcMk9A/UUr9PhoNsCENw1APAq0gpH73e+M+0ueyHbabc3vkbcdtzcf/fiy+NxQEjf9ud/ELBHAXJ0nk4z+MXH2Ev/kWyV4k7SkvpPc9Qr38F6RPWnM9cN6DJ0AdD1BhtgABtmoRoFCvPsBAumNm6soZG2Gk5GyVTo2sJncSyp0jQTYoR6WDvTwaaEcHsxHfvuWhHA3a6bN7twRKtcGok6NsCi7jYRrM2jExsUFMxMQYuJbMhuWNOumEJy9hi29Dmg5zMp/A5+hhPG19j1vBrq8JTLr8ki5VLPmG/PynJHVul440bxg5xuymHUFPBshC+nA9I1FmwbRBTNHAcik3Oae0cxKoI3MOriM42UrPe51nsaGxJ+WfXubAsP84aabUlQSJ1IiE0iPETLUU4CATgfXSCSpuRFRmCGbO+wSpAnzaeaCYW1VNEysRtuXCEL1kUFUbbtMv3Tilt/1c11jt3Q5bbMa84cpWipp8Elw3MZhOHsOlwwVUQM3lAR35JiFQbaYCRnMF2lxAWoOg2gyoIV4PouX8HytNIfLhqpJtXB4vjiViUI8IJ7bkC4ikkQvKksnOTKICwnqWSZ9YS5f0WCxmpgjbIq7EJcM4aI2nmhLNY2JIUgOjXZFWBHb+x5oh6cwb0Tv1ackHdKi0I9OO2wE9aogIOn540CCCziyhN+IaejtgAONKznHlHyutPrHGwCx9S6B8kfS4Mfi4Eyv7OU730bT1SCBjt834cXsf43zVjPUqqJjgrjeGnBxSG4aYAKFuVbeCfkDIjAqMb6yLNIbCuvXhMH2/+k2vkNpkORhR59N1CkzoOENvneIosjYmuTxlhUzaGEJQ/iWqx4dmwpmKjrwTiTGTCVozNAYqk/zXOndWxuWSmJkQpJw3pK5KX6QrLt5LATMqpmPAQhkhK6PUjzHUn7E0gHE0kPE0iKkolgkUx9SZmVAdDgpffdyJKg3k7VmzYGCwVXGz/tXmkOIp+vcWs+EMuhhvN0h9uhfzWJziBQmCREGSIFmQIkgVpAnSBRmC//6hkLZwaVhwxlrJSOdqlFtOYxlau9F2QN5Y98xmIAsiM1HVp2VFX+DHHGg6Ecjh3vmqtidX3qHI2qycTk/iwxSt5UzTmEP92ZBnEWTk4Mx8Mpl78ZDokxg/KWb+Q0QkvdKVmq3TMW+RXEgrsziSAfNXFMhDc60N5N9jQzjfO0kBKpUZl0ZmwJ41j/B9Hz6wmRaJB84niNmQrzp9eSlQCDDzazGDdVi3P36VZQ+Jy4f9UBNp+3zTjqI4abaFAm+GShVaXlsGdF3FYzZcDI6cori4kMxUECl9IjJZpzkvitAoxKue+90pDMvcKRxLl53TmOKCmV/xRolNKSqqUxc6LStOETmFOiLZZptlZepcKiAzteG8PEdpnQpbOMNcMsR4RR2Bs0cKFEvSmIjAFcnarqwUL4lDhHmnVkwu1IwshbiCcgvOheZuYyOteufZZwlcTlLgnZ3o/WcYdzZHW/WGaqaVfmTZ1aWCceJjkbZqsfbkOtcFlUZM/jy+hXHDbaUobWqqXaeWobbLO99yG5N3U4wxco0rQGGcOLASFMXeJoham8M+/x6O2WywK2l4HGbq1CoUyC/IZikQhdq3SiuNrvAEj0AVu9x2x3lp/xWzahaxidezFVtdcb5uEnzyl0ZmYiuKI0exvCd4Xc9CV1KB0db00z92wDPde0kukbvZIWN6jUWFTmPIC/Y4UPCm8UfDTFZpZNon1qLFTkBhxzB+FjQRA2Q/YRJT8pQigslMaUpFyAG8TMlXigiqmAZX4xgijKjRlGpLE0GdplRfCaJo0JQaSxNBk6ZmMzcya0FmrcisDdn0Q3HI2sWSppYigmlM1XT/kLQZSNpMJG0WkjYbSZuDpM1F0uYhFc1HxU4m1QJjDK6iL0S5uSj5rgXc3RejEigtcRBtqYPQsiTskmO5vosV+q4VGIKbOkDg0jtRrq+Em1YloaTFar3EGr1EUC8R0kus1Uus00usL97ABr2BjXoDm/QGNhuWtMVBKOwg/i78lT7hBsAvDmwHc/ao3vmUbBmhjeYySZNWvGkfZAgISDSaDo1SVpzGDsAEkF8B+gEapViUoZgUWXcRIGFZNm6gWbAKk0bp0k1MHG9fLYtV4iS2SmLEQFARzRcnf9PUS0LVn05/J9MiRRBU3v2IrvW974v4N00L7ZMk0wXP1409CHo/an8zTRHD3eSJ6m8D4YMkZNl3M79sqeuAsr/m3f+8/yl7A50aiAEJgeBeMWzu7ui9UfUBCe2TIqZIoOd/3/udRBOQidQZUERzb2/VwZN1H/Sju82ew2H2Wfr6qvfVf3hqwDvAIpkQVFy4B9Pe9e4/XvPeceu7h3dvO56iJPf0+A6cqA2ip18ER+iFgggiuOkvj24bby0N9j2UHIkgqIt+sVgfodC4YghLSMjSZbH0VR/6dMDrYJeKHilKTemt6v6kvzvn3/RrdWtr0GoN/xL+Sex/cPYLUpepx9cz/D46UPU5KXgAQa+NDps1v6J3xP1i2HtaDB0M9aX2deA7SYff//+gUCovMmIK/qfsFcOk+4Y5ZN97XlG6zebqtMbKgeRFi51vnxTQYBUik2rS/Cn6PC8ADR8FGxsRPB82dzfND90gIcshOcYUkfjherBz53odpm6TP8txlwOZ71xmfHHOvq053qFF/MRlS3jP0ELudrf2OeN8DHvp6ZceLe8qKYvWz/7yp0u4dKPfli3CYq0O13Ih71mylJ80tOi10On8wi+F4+LWgDPeJ30msSQt9/vkmHq9/Lvo2b461mP801v3W4xTcs6CbvF9UDdrSt+A8OUbpSh55qAUFXWznBBfdeJ8a4d7ugT5tvxUza3h9m4H7ptTqiG4z0g5dc0X29OcGlhpGFMpQo9ytTS+NViZpNdvU4kWx+LKxNY10kQ1yqGXrhe4/1nvP7E+nd5A92TtaRplbHSqoIdOqtRWti+fkB5/n1+/VvCmz12pG1kpQWsfi1ftlBobm0bpngs16CHkbIwdLnParxtTV3QYRlfJ0KFskH7pdN/YDn+yRuSd7sNH3aO0DYPggk6uWuXrfOc+fa3VTxFVvKaNxHsiHmsXyCLIE5yuOeN3/Jdf8HBL/5M6shjyhxHx9BjB1O0+4NLOnjLLSxwO7ukN4jMbOIcD879KLSi6Pk61Oqm2377n8079PXEEQ7cy7OKEC9nbpet118fxweTafpt69x/Bt8UqGzNQt7aelpc44dn5cqhwf71+qKp/Zf/+a0zcizOUWpl/iBcSXip0pplkatCchoH5c5aUM8I7/dWxAej8WicPL1URFZ9BDJelUwEwTkGqUhgSlydVes95YdXvhh9Gfz/aeFWvgVb4tuLbcv4+wLdutVZv/cUonwBD/6eDlE0aSiKK/uoH3+J1wDE/jMVqY2ysGufN84oIXB0sPzy8ollX/LegY74DgJXJR57sn+VGza0x3DnuIgABFM15LmajjjsNlYj+JEZGbuRYcAMOWxFkPN2w6Wd46xo4gVWQR/X4lyI/R6K/YK0110GzudPRW7Y+UOBGTfNNzHeYT0fiH0taunBpq9HEW8OKSaBGj21L0MqenEmNRWBAWDWAk4CpNoEZJ2tTaPFgbQYj8HxtFilErs3BTRwT8uO1NXQaWfIotchmPkAF5mMBAliEmZiOGVgCG9LgRzpscMAOOwowlT3JhusdazXGSC/hxR3UlmWVwWHpOIKheqONvjyhSiTHIkVUco5bnji8m//zL7PKaT1Vl5I6UE609f+gkr6MZKVyKc7zJRmCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC) format("woff2"),url(/assets/KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.25"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:grab}.react-flow__node.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%} diff --git a/webui/dist/assets/index-CrIP7TYI.js b/webui/dist/assets/index-CrIP7TYI.js deleted file mode 100644 index f8728c7b..00000000 --- a/webui/dist/assets/index-CrIP7TYI.js +++ /dev/null @@ -1,381 +0,0 @@ -import{r as b,j as l,u as Da,R as he,b as fu,d as lY,e as oY,L as cY,f as uY,g as cs,h as dY,k as hY,O as jD,l as fY}from"./router-SinpzM5S.js";import{a as mY,b as pY,g as Fk}from"./react-vendor-Dtc2IqVY.js";import{c as OD,R as gY,T as xY,L as vY,a as yY,C as Vg,X as Ug,Y as Wf,b as bY,B as nw,d as Wg,P as wY,e as SY,f as kY,_ as jY,g as OY,i as NY,h as zC,j as CY,k as PC,l as TY,m as EY,n as _Y,r as ND,o as MY,p as $k,q as CD,s as Fu,t as Qk,u as AY,v as RY,w as TD,x as ED,y as _D,z as Hk,A as Vk,D as Uk,E as DY,F as zY,G as PY,H as LY,I as IY,J as BY,K as qY,M as Wk,N as Ov,O as FY,Q as $Y,S as Gk,U as QY,V as HY,W as MD,Z as AD,$ as RD,a0 as DD,a1 as Nv,a2 as zD,a3 as PD,a4 as VY,a5 as UY,a6 as WY,a7 as GY,a8 as XY,a9 as YY,aa as KY,ab as ZY,ac as LD,ad as ID,ae as JY,af as eK,ag as tK,ah as nK,ai as rK,aj as sK,ak as iK,al as aK,am as lK,an as oK,ao as cK,ap as uK,aq as dK,ar as hK,as as fK,at as mK}from"./charts-BH1Uno6i.js";import{c as ha,a as Cv,u as _i,P as on,b as tt,d as Bn,e as D0,f as wo,g as Os,h as Fs,i as Xk,j as Yk,k as Kk,S as pK,l as BD,m as qD,R as FD,O as Tv,n as Zk,C as Ev,o as _v,T as Jk,D as e6,p as t6,q as $D,r as QD,W as gK,s as HD,I as xK,t as VD,v as UD,w as vK,x as WD,V as yK,L as GD,y as XD,z as bK,A as wK,B as YD,E as SK,F as kK,G as gc,H as Mv,J as Rh,K as KD,M as ZD,N as JD,Q as ez,U as n6,X as r6,Y as Av,Z as Rv,_ as s6,$ as tz,a0 as jK,a1 as nz,a2 as OK,a3 as NK,a4 as rz,a5 as CK}from"./ui-vendor-BLBhIcJ8.js";import{R as Ls,A as TK,D as EK,a as A3,Z as R3,C as Zd,M as z0,T as _K,X as P0,P as sz,S as MK,b as bu,I as ra,c as Oa,d as ol,e as O1,E as N1,f as oa,g as xc,h as AK,i as RK,j as D3,k as z3,L as LC,K as iz,l as Cu,m as Dv,n as DK,F as lo,o as Jd,p as vc,q as zK,B as PK,U as az,r as i6,s as LK,t as IK,u as ci,H as Fm,v as lz,w as Tu,x as $m,y as BK,z as qK,G as zv,J as a6,N as ws,O as fn,Q as C1,V as wu,W as L0,Y as $u,_ as Qu,$ as I0,a0 as l6,a1 as FK,a2 as $K,a3 as mh,a4 as IC,a5 as QK,a6 as Su,a7 as P3,a8 as Qm,a9 as HK,aa as L3,ab as VK,ac as oz,ad as BC,ae as UK,af as WK,ag as GK,ah as sc,ai as rw,aj as qC,ak as XK,al as cz,am as uz,an as dz,ao as YK,ap as KK,aq as FC,ar as ZK,as as JK,at as $C,au as eZ,av as tZ}from"./icons-Bom2zaMH.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const i of s)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(s){const i={};return s.integrity&&(i.integrity=s.integrity),s.referrerPolicy&&(i.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?i.credentials="include":s.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(s){if(s.ep)return;s.ep=!0;const i=n(s);fetch(s.href,i)}})();var sw={exports:{}},Gf={},iw={exports:{}},aw={};var QC;function nZ(){return QC||(QC=1,(function(t){function e(B,X){var J=B.length;B.push(X);e:for(;0>>1,R=B[G];if(0>>1;Gs(F,J))Vs(te,F)?(B[G]=te,B[V]=J,G=V):(B[G]=F,B[W]=J,G=W);else if(Vs(te,J))B[G]=te,B[V]=J,G=V;else break e}}return X}function s(B,X){var J=B.sortIndex-X.sortIndex;return J!==0?J:B.id-X.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var i=performance;t.unstable_now=function(){return i.now()}}else{var a=Date,o=a.now();t.unstable_now=function(){return a.now()-o}}var c=[],h=[],f=1,m=null,g=3,x=!1,y=!1,w=!1,S=!1,k=typeof setTimeout=="function"?setTimeout:null,N=typeof clearTimeout=="function"?clearTimeout:null,C=typeof setImmediate<"u"?setImmediate:null;function T(B){for(var X=n(h);X!==null;){if(X.callback===null)r(h);else if(X.startTime<=B)r(h),X.sortIndex=X.expirationTime,e(c,X);else break;X=n(h)}}function _(B){if(w=!1,T(B),!y)if(n(c)!==null)y=!0,E||(E=!0,U());else{var X=n(h);X!==null&&H(_,X.startTime-B)}}var E=!1,M=-1,L=5,P=-1;function I(){return S?!0:!(t.unstable_now()-PB&&I());){var G=m.callback;if(typeof G=="function"){m.callback=null,g=m.priorityLevel;var R=G(m.expirationTime<=B);if(B=t.unstable_now(),typeof R=="function"){m.callback=R,T(B),X=!0;break t}m===n(c)&&r(c),T(B)}else r(c);m=n(c)}if(m!==null)X=!0;else{var se=n(h);se!==null&&H(_,se.startTime-B),X=!1}}break e}finally{m=null,g=J,x=!1}X=void 0}}finally{X?U():E=!1}}}var U;if(typeof C=="function")U=function(){C(Q)};else if(typeof MessageChannel<"u"){var ee=new MessageChannel,z=ee.port2;ee.port1.onmessage=Q,U=function(){z.postMessage(null)}}else U=function(){k(Q,0)};function H(B,X){M=k(function(){B(t.unstable_now())},X)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(B){B.callback=null},t.unstable_forceFrameRate=function(B){0>B||125G?(B.sortIndex=J,e(h,B),n(c)===null&&B===n(h)&&(w?(N(M),M=-1):w=!0,H(_,J-G))):(B.sortIndex=R,e(c,B),y||x||(y=!0,E||(E=!0,U()))),B},t.unstable_shouldYield=I,t.unstable_wrapCallback=function(B){var X=g;return function(){var J=g;g=X;try{return B.apply(this,arguments)}finally{g=J}}}})(aw)),aw}var HC;function rZ(){return HC||(HC=1,iw.exports=nZ()),iw.exports}var VC;function sZ(){if(VC)return Gf;VC=1;var t=rZ(),e=mY(),n=pY();function r(u){var d="https://react.dev/errors/"+u;if(1R||(u.current=G[R],G[R]=null,R--)}function F(u,d){R++,G[R]=u.current,u.current=d}var V=se(null),te=se(null),ne=se(null),K=se(null);function ie(u,d){switch(F(ne,d),F(te,u),F(V,null),d.nodeType){case 9:case 11:u=(u=d.documentElement)&&(u=u.namespaceURI)?sC(u):0;break;default:if(u=d.tagName,d=d.namespaceURI)d=sC(d),u=iC(d,u);else switch(u){case"svg":u=1;break;case"math":u=2;break;default:u=0}}W(V),F(V,u)}function re(){W(V),W(te),W(ne)}function ae(u){u.memoizedState!==null&&F(K,u);var d=V.current,p=iC(d,u.type);d!==p&&(F(te,u),F(V,p))}function _e(u){te.current===u&&(W(V),W(te)),K.current===u&&(W(K),Qf._currentValue=J)}var Ue,Xe;function Ze(u){if(Ue===void 0)try{throw Error()}catch(p){var d=p.stack.trim().match(/\n( *(at )?)/);Ue=d&&d[1]||"",Xe=-1)":-1j||ce[v]!==we[j]){var Ee=` -`+ce[v].replace(" at new "," at ");return u.displayName&&Ee.includes("")&&(Ee=Ee.replace("",u.displayName)),Ee}while(1<=v&&0<=j);break}}}finally{Oe=!1,Error.prepareStackTrace=p}return(p=u?u.displayName||u.name:"")?Ze(p):""}function Ve(u,d){switch(u.tag){case 26:case 27:case 5:return Ze(u.type);case 16:return Ze("Lazy");case 13:return u.child!==d&&d!==null?Ze("Suspense Fallback"):Ze("Suspense");case 19:return Ze("SuspenseList");case 0:case 15:return He(u.type,!1);case 11:return He(u.type.render,!1);case 1:return He(u.type,!0);case 31:return Ze("Activity");default:return""}}function Be(u){try{var d="",p=null;do d+=Ve(u,p),p=u,u=u.return;while(u);return d}catch(v){return` -Error generating stack: `+v.message+` -`+v.stack}}var ut=Object.prototype.hasOwnProperty,rt=t.unstable_scheduleCallback,rn=t.unstable_cancelCallback,Rn=t.unstable_shouldYield,Tn=t.unstable_requestPaint,Mt=t.unstable_now,vt=t.unstable_getCurrentPriorityLevel,Ce=t.unstable_ImmediatePriority,Le=t.unstable_UserBlockingPriority,Ge=t.unstable_NormalPriority,lt=t.unstable_LowPriority,jt=t.unstable_IdlePriority,Tt=t.log,ke=t.unstable_setDisableYieldValue,Te=null,qe=null;function Rt(u){if(typeof Tt=="function"&&ke(u),qe&&typeof qe.setStrictMode=="function")try{qe.setStrictMode(Te,u)}catch{}}var At=Math.clz32?Math.clz32:mn,vr=Math.log,ft=Math.LN2;function mn(u){return u>>>=0,u===0?32:31-(vr(u)/ft|0)|0}var gt=256,Nt=262144,Ot=4194304;function it(u){var d=u&42;if(d!==0)return d;switch(u&-u){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:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return u&261888;case 262144:case 524288:case 1048576:case 2097152:return u&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return u&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return u}}function Vn(u,d,p){var v=u.pendingLanes;if(v===0)return 0;var j=0,O=u.suspendedLanes,q=u.pingedLanes;u=u.warmLanes;var Y=v&134217727;return Y!==0?(v=Y&~O,v!==0?j=it(v):(q&=Y,q!==0?j=it(q):p||(p=Y&~u,p!==0&&(j=it(p))))):(Y=v&~O,Y!==0?j=it(Y):q!==0?j=it(q):p||(p=v&~u,p!==0&&(j=it(p)))),j===0?0:d!==0&&d!==j&&(d&O)===0&&(O=j&-j,p=d&-d,O>=p||O===32&&(p&4194048)!==0)?d:j}function jr(u,d){return(u.pendingLanes&~(u.suspendedLanes&~u.pingedLanes)&d)===0}function Or(u,d){switch(u){case 1:case 2:case 4:case 8:case 64:return d+250;case 16:case 32: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 d+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 ge(){var u=Ot;return Ot<<=1,(Ot&62914560)===0&&(Ot=4194304),u}function ze(u){for(var d=[],p=0;31>p;p++)d.push(u);return d}function Et(u,d){u.pendingLanes|=d,d!==268435456&&(u.suspendedLanes=0,u.pingedLanes=0,u.warmLanes=0)}function Gt(u,d,p,v,j,O){var q=u.pendingLanes;u.pendingLanes=p,u.suspendedLanes=0,u.pingedLanes=0,u.warmLanes=0,u.expiredLanes&=p,u.entangledLanes&=p,u.errorRecoveryDisabledLanes&=p,u.shellSuspendCounter=0;var Y=u.entanglements,ce=u.expirationTimes,we=u.hiddenUpdates;for(p=q&~p;0"u")return null;try{return u.activeElement||u.body}catch{return u.body}}var tG=/[\n"\\]/g;function Ii(u){return u.replace(tG,function(d){return"\\"+d.charCodeAt(0).toString(16)+" "})}function Yy(u,d,p,v,j,O,q,Y){u.name="",q!=null&&typeof q!="function"&&typeof q!="symbol"&&typeof q!="boolean"?u.type=q:u.removeAttribute("type"),d!=null?q==="number"?(d===0&&u.value===""||u.value!=d)&&(u.value=""+Li(d)):u.value!==""+Li(d)&&(u.value=""+Li(d)):q!=="submit"&&q!=="reset"||u.removeAttribute("value"),d!=null?Ky(u,q,Li(d)):p!=null?Ky(u,q,Li(p)):v!=null&&u.removeAttribute("value"),j==null&&O!=null&&(u.defaultChecked=!!O),j!=null&&(u.checked=j&&typeof j!="function"&&typeof j!="symbol"),Y!=null&&typeof Y!="function"&&typeof Y!="symbol"&&typeof Y!="boolean"?u.name=""+Li(Y):u.removeAttribute("name")}function ZO(u,d,p,v,j,O,q,Y){if(O!=null&&typeof O!="function"&&typeof O!="symbol"&&typeof O!="boolean"&&(u.type=O),d!=null||p!=null){if(!(O!=="submit"&&O!=="reset"||d!=null)){Xy(u);return}p=p!=null?""+Li(p):"",d=d!=null?""+Li(d):p,Y||d===u.value||(u.value=d),u.defaultValue=d}v=v??j,v=typeof v!="function"&&typeof v!="symbol"&&!!v,u.checked=Y?u.checked:!!v,u.defaultChecked=!!v,q!=null&&typeof q!="function"&&typeof q!="symbol"&&typeof q!="boolean"&&(u.name=q),Xy(u)}function Ky(u,d,p){d==="number"&&zp(u.ownerDocument)===u||u.defaultValue===""+p||(u.defaultValue=""+p)}function Xu(u,d,p,v){if(u=u.options,d){d={};for(var j=0;j"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),nb=!1;if(El)try{var lf={};Object.defineProperty(lf,"passive",{get:function(){nb=!0}}),window.addEventListener("test",lf,lf),window.removeEventListener("test",lf,lf)}catch{nb=!1}var Eo=null,rb=null,Lp=null;function iN(){if(Lp)return Lp;var u,d=rb,p=d.length,v,j="value"in Eo?Eo.value:Eo.textContent,O=j.length;for(u=0;u=uf),dN=" ",hN=!1;function fN(u,d){switch(u){case"keyup":return EG.indexOf(d.keyCode)!==-1;case"keydown":return d.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function mN(u){return u=u.detail,typeof u=="object"&&"data"in u?u.data:null}var Ju=!1;function MG(u,d){switch(u){case"compositionend":return mN(d);case"keypress":return d.which!==32?null:(hN=!0,dN);case"textInput":return u=d.data,u===dN&&hN?null:u;default:return null}}function AG(u,d){if(Ju)return u==="compositionend"||!ob&&fN(u,d)?(u=iN(),Lp=rb=Eo=null,Ju=!1,u):null;switch(u){case"paste":return null;case"keypress":if(!(d.ctrlKey||d.altKey||d.metaKey)||d.ctrlKey&&d.altKey){if(d.char&&1=d)return{node:p,offset:d-u};u=v}e:{for(;p;){if(p.nextSibling){p=p.nextSibling;break e}p=p.parentNode}p=void 0}p=SN(p)}}function jN(u,d){return u&&d?u===d?!0:u&&u.nodeType===3?!1:d&&d.nodeType===3?jN(u,d.parentNode):"contains"in u?u.contains(d):u.compareDocumentPosition?!!(u.compareDocumentPosition(d)&16):!1:!1}function ON(u){u=u!=null&&u.ownerDocument!=null&&u.ownerDocument.defaultView!=null?u.ownerDocument.defaultView:window;for(var d=zp(u.document);d instanceof u.HTMLIFrameElement;){try{var p=typeof d.contentWindow.location.href=="string"}catch{p=!1}if(p)u=d.contentWindow;else break;d=zp(u.document)}return d}function db(u){var d=u&&u.nodeName&&u.nodeName.toLowerCase();return d&&(d==="input"&&(u.type==="text"||u.type==="search"||u.type==="tel"||u.type==="url"||u.type==="password")||d==="textarea"||u.contentEditable==="true")}var qG=El&&"documentMode"in document&&11>=document.documentMode,ed=null,hb=null,mf=null,fb=!1;function NN(u,d,p){var v=p.window===p?p.document:p.nodeType===9?p:p.ownerDocument;fb||ed==null||ed!==zp(v)||(v=ed,"selectionStart"in v&&db(v)?v={start:v.selectionStart,end:v.selectionEnd}:(v=(v.ownerDocument&&v.ownerDocument.defaultView||window).getSelection(),v={anchorNode:v.anchorNode,anchorOffset:v.anchorOffset,focusNode:v.focusNode,focusOffset:v.focusOffset}),mf&&ff(mf,v)||(mf=v,v=_g(hb,"onSelect"),0>=q,j-=q,qa=1<<32-At(d)+j|p<Vt?(an=dt,dt=null):an=dt.sibling;var _n=Se(pe,dt,ye[Vt],Me);if(_n===null){dt===null&&(dt=an);break}u&&dt&&_n.alternate===null&&d(pe,dt),fe=O(_n,fe,Vt),En===null?bt=_n:En.sibling=_n,En=_n,dt=an}if(Vt===ye.length)return p(pe,dt),cn&&Ml(pe,Vt),bt;if(dt===null){for(;VtVt?(an=dt,dt=null):an=dt.sibling;var Ko=Se(pe,dt,_n.value,Me);if(Ko===null){dt===null&&(dt=an);break}u&&dt&&Ko.alternate===null&&d(pe,dt),fe=O(Ko,fe,Vt),En===null?bt=Ko:En.sibling=Ko,En=Ko,dt=an}if(_n.done)return p(pe,dt),cn&&Ml(pe,Vt),bt;if(dt===null){for(;!_n.done;Vt++,_n=ye.next())_n=Re(pe,_n.value,Me),_n!==null&&(fe=O(_n,fe,Vt),En===null?bt=_n:En.sibling=_n,En=_n);return cn&&Ml(pe,Vt),bt}for(dt=v(dt);!_n.done;Vt++,_n=ye.next())_n=Ne(dt,pe,Vt,_n.value,Me),_n!==null&&(u&&_n.alternate!==null&&dt.delete(_n.key===null?Vt:_n.key),fe=O(_n,fe,Vt),En===null?bt=_n:En.sibling=_n,En=_n);return u&&dt.forEach(function(aY){return d(pe,aY)}),cn&&Ml(pe,Vt),bt}function $n(pe,fe,ye,Me){if(typeof ye=="object"&&ye!==null&&ye.type===w&&ye.key===null&&(ye=ye.props.children),typeof ye=="object"&&ye!==null){switch(ye.$$typeof){case x:e:{for(var bt=ye.key;fe!==null;){if(fe.key===bt){if(bt=ye.type,bt===w){if(fe.tag===7){p(pe,fe.sibling),Me=j(fe,ye.props.children),Me.return=pe,pe=Me;break e}}else if(fe.elementType===bt||typeof bt=="object"&&bt!==null&&bt.$$typeof===L&&Yc(bt)===fe.type){p(pe,fe.sibling),Me=j(fe,ye.props),bf(Me,ye),Me.return=pe,pe=Me;break e}p(pe,fe);break}else d(pe,fe);fe=fe.sibling}ye.type===w?(Me=Vc(ye.props.children,pe.mode,Me,ye.key),Me.return=pe,pe=Me):(Me=Wp(ye.type,ye.key,ye.props,null,pe.mode,Me),bf(Me,ye),Me.return=pe,pe=Me)}return q(pe);case y:e:{for(bt=ye.key;fe!==null;){if(fe.key===bt)if(fe.tag===4&&fe.stateNode.containerInfo===ye.containerInfo&&fe.stateNode.implementation===ye.implementation){p(pe,fe.sibling),Me=j(fe,ye.children||[]),Me.return=pe,pe=Me;break e}else{p(pe,fe);break}else d(pe,fe);fe=fe.sibling}Me=bb(ye,pe.mode,Me),Me.return=pe,pe=Me}return q(pe);case L:return ye=Yc(ye),$n(pe,fe,ye,Me)}if(H(ye))return at(pe,fe,ye,Me);if(U(ye)){if(bt=U(ye),typeof bt!="function")throw Error(r(150));return ye=bt.call(ye),kt(pe,fe,ye,Me)}if(typeof ye.then=="function")return $n(pe,fe,eg(ye),Me);if(ye.$$typeof===C)return $n(pe,fe,Yp(pe,ye),Me);tg(pe,ye)}return typeof ye=="string"&&ye!==""||typeof ye=="number"||typeof ye=="bigint"?(ye=""+ye,fe!==null&&fe.tag===6?(p(pe,fe.sibling),Me=j(fe,ye),Me.return=pe,pe=Me):(p(pe,fe),Me=yb(ye,pe.mode,Me),Me.return=pe,pe=Me),q(pe)):p(pe,fe)}return function(pe,fe,ye,Me){try{yf=0;var bt=$n(pe,fe,ye,Me);return dd=null,bt}catch(dt){if(dt===ud||dt===Zp)throw dt;var En=gi(29,dt,null,pe.mode);return En.lanes=Me,En.return=pe,En}finally{}}}var Zc=XN(!0),YN=XN(!1),Do=!1;function Ab(u){u.updateQueue={baseState:u.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Rb(u,d){u=u.updateQueue,d.updateQueue===u&&(d.updateQueue={baseState:u.baseState,firstBaseUpdate:u.firstBaseUpdate,lastBaseUpdate:u.lastBaseUpdate,shared:u.shared,callbacks:null})}function zo(u){return{lane:u,tag:0,payload:null,callback:null,next:null}}function Po(u,d,p){var v=u.updateQueue;if(v===null)return null;if(v=v.shared,(An&2)!==0){var j=v.pending;return j===null?d.next=d:(d.next=j.next,j.next=d),v.pending=d,d=Up(u),RN(u,null,p),d}return Vp(u,v,d,p),Up(u)}function wf(u,d,p){if(d=d.updateQueue,d!==null&&(d=d.shared,(p&4194048)!==0)){var v=d.lanes;v&=u.pendingLanes,p|=v,d.lanes=p,Wr(u,p)}}function Db(u,d){var p=u.updateQueue,v=u.alternate;if(v!==null&&(v=v.updateQueue,p===v)){var j=null,O=null;if(p=p.firstBaseUpdate,p!==null){do{var q={lane:p.lane,tag:p.tag,payload:p.payload,callback:null,next:null};O===null?j=O=q:O=O.next=q,p=p.next}while(p!==null);O===null?j=O=d:O=O.next=d}else j=O=d;p={baseState:v.baseState,firstBaseUpdate:j,lastBaseUpdate:O,shared:v.shared,callbacks:v.callbacks},u.updateQueue=p;return}u=p.lastBaseUpdate,u===null?p.firstBaseUpdate=d:u.next=d,p.lastBaseUpdate=d}var zb=!1;function Sf(){if(zb){var u=cd;if(u!==null)throw u}}function kf(u,d,p,v){zb=!1;var j=u.updateQueue;Do=!1;var O=j.firstBaseUpdate,q=j.lastBaseUpdate,Y=j.shared.pending;if(Y!==null){j.shared.pending=null;var ce=Y,we=ce.next;ce.next=null,q===null?O=we:q.next=we,q=ce;var Ee=u.alternate;Ee!==null&&(Ee=Ee.updateQueue,Y=Ee.lastBaseUpdate,Y!==q&&(Y===null?Ee.firstBaseUpdate=we:Y.next=we,Ee.lastBaseUpdate=ce))}if(O!==null){var Re=j.baseState;q=0,Ee=we=ce=null,Y=O;do{var Se=Y.lane&-536870913,Ne=Se!==Y.lane;if(Ne?(sn&Se)===Se:(v&Se)===Se){Se!==0&&Se===od&&(zb=!0),Ee!==null&&(Ee=Ee.next={lane:0,tag:Y.tag,payload:Y.payload,callback:null,next:null});e:{var at=u,kt=Y;Se=d;var $n=p;switch(kt.tag){case 1:if(at=kt.payload,typeof at=="function"){Re=at.call($n,Re,Se);break e}Re=at;break e;case 3:at.flags=at.flags&-65537|128;case 0:if(at=kt.payload,Se=typeof at=="function"?at.call($n,Re,Se):at,Se==null)break e;Re=m({},Re,Se);break e;case 2:Do=!0}}Se=Y.callback,Se!==null&&(u.flags|=64,Ne&&(u.flags|=8192),Ne=j.callbacks,Ne===null?j.callbacks=[Se]:Ne.push(Se))}else Ne={lane:Se,tag:Y.tag,payload:Y.payload,callback:Y.callback,next:null},Ee===null?(we=Ee=Ne,ce=Re):Ee=Ee.next=Ne,q|=Se;if(Y=Y.next,Y===null){if(Y=j.shared.pending,Y===null)break;Ne=Y,Y=Ne.next,Ne.next=null,j.lastBaseUpdate=Ne,j.shared.pending=null}}while(!0);Ee===null&&(ce=Re),j.baseState=ce,j.firstBaseUpdate=we,j.lastBaseUpdate=Ee,O===null&&(j.shared.lanes=0),Fo|=q,u.lanes=q,u.memoizedState=Re}}function KN(u,d){if(typeof u!="function")throw Error(r(191,u));u.call(d)}function ZN(u,d){var p=u.callbacks;if(p!==null)for(u.callbacks=null,u=0;uO?O:8;var q=B.T,Y={};B.T=Y,e2(u,!1,d,p);try{var ce=j(),we=B.S;if(we!==null&&we(Y,ce),ce!==null&&typeof ce=="object"&&typeof ce.then=="function"){var Ee=XG(ce,v);Nf(u,d,Ee,wi(u))}else Nf(u,d,v,wi(u))}catch(Re){Nf(u,d,{then:function(){},status:"rejected",reason:Re},wi())}finally{X.p=O,q!==null&&Y.types!==null&&(q.types=Y.types),B.T=q}}function tX(){}function Zb(u,d,p,v){if(u.tag!==5)throw Error(r(476));var j=_7(u).queue;E7(u,j,d,J,p===null?tX:function(){return M7(u),p(v)})}function _7(u){var d=u.memoizedState;if(d!==null)return d;d={memoizedState:J,baseState:J,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:zl,lastRenderedState:J},next:null};var p={};return d.next={memoizedState:p,baseState:p,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:zl,lastRenderedState:p},next:null},u.memoizedState=d,u=u.alternate,u!==null&&(u.memoizedState=d),d}function M7(u){var d=_7(u);d.next===null&&(d=u.alternate.memoizedState),Nf(u,d.next.queue,{},wi())}function Jb(){return fs(Qf)}function A7(){return Cr().memoizedState}function R7(){return Cr().memoizedState}function nX(u){for(var d=u.return;d!==null;){switch(d.tag){case 24:case 3:var p=wi();u=zo(p);var v=Po(d,u,p);v!==null&&(Ys(v,d,p),wf(v,d,p)),d={cache:Tb()},u.payload=d;return}d=d.return}}function rX(u,d,p){var v=wi();p={lane:v,revertLane:0,gesture:null,action:p,hasEagerState:!1,eagerState:null,next:null},dg(u)?z7(d,p):(p=xb(u,d,p,v),p!==null&&(Ys(p,u,v),P7(p,d,v)))}function D7(u,d,p){var v=wi();Nf(u,d,p,v)}function Nf(u,d,p,v){var j={lane:v,revertLane:0,gesture:null,action:p,hasEagerState:!1,eagerState:null,next:null};if(dg(u))z7(d,j);else{var O=u.alternate;if(u.lanes===0&&(O===null||O.lanes===0)&&(O=d.lastRenderedReducer,O!==null))try{var q=d.lastRenderedState,Y=O(q,p);if(j.hasEagerState=!0,j.eagerState=Y,pi(Y,q))return Vp(u,d,j,0),Un===null&&Hp(),!1}catch{}finally{}if(p=xb(u,d,j,v),p!==null)return Ys(p,u,v),P7(p,d,v),!0}return!1}function e2(u,d,p,v){if(v={lane:2,revertLane:A2(),gesture:null,action:v,hasEagerState:!1,eagerState:null,next:null},dg(u)){if(d)throw Error(r(479))}else d=xb(u,p,v,2),d!==null&&Ys(d,u,2)}function dg(u){var d=u.alternate;return u===$t||d!==null&&d===$t}function z7(u,d){fd=sg=!0;var p=u.pending;p===null?d.next=d:(d.next=p.next,p.next=d),u.pending=d}function P7(u,d,p){if((p&4194048)!==0){var v=d.lanes;v&=u.pendingLanes,p|=v,d.lanes=p,Wr(u,p)}}var Cf={readContext:fs,use:lg,useCallback:yr,useContext:yr,useEffect:yr,useImperativeHandle:yr,useLayoutEffect:yr,useInsertionEffect:yr,useMemo:yr,useReducer:yr,useRef:yr,useState:yr,useDebugValue:yr,useDeferredValue:yr,useTransition:yr,useSyncExternalStore:yr,useId:yr,useHostTransitionStatus:yr,useFormState:yr,useActionState:yr,useOptimistic:yr,useMemoCache:yr,useCacheRefresh:yr};Cf.useEffectEvent=yr;var L7={readContext:fs,use:lg,useCallback:function(u,d){return As().memoizedState=[u,d===void 0?null:d],u},useContext:fs,useEffect:b7,useImperativeHandle:function(u,d,p){p=p!=null?p.concat([u]):null,cg(4194308,4,j7.bind(null,d,u),p)},useLayoutEffect:function(u,d){return cg(4194308,4,u,d)},useInsertionEffect:function(u,d){cg(4,2,u,d)},useMemo:function(u,d){var p=As();d=d===void 0?null:d;var v=u();if(Jc){Rt(!0);try{u()}finally{Rt(!1)}}return p.memoizedState=[v,d],v},useReducer:function(u,d,p){var v=As();if(p!==void 0){var j=p(d);if(Jc){Rt(!0);try{p(d)}finally{Rt(!1)}}}else j=d;return v.memoizedState=v.baseState=j,u={pending:null,lanes:0,dispatch:null,lastRenderedReducer:u,lastRenderedState:j},v.queue=u,u=u.dispatch=rX.bind(null,$t,u),[v.memoizedState,u]},useRef:function(u){var d=As();return u={current:u},d.memoizedState=u},useState:function(u){u=Wb(u);var d=u.queue,p=D7.bind(null,$t,d);return d.dispatch=p,[u.memoizedState,p]},useDebugValue:Yb,useDeferredValue:function(u,d){var p=As();return Kb(p,u,d)},useTransition:function(){var u=Wb(!1);return u=E7.bind(null,$t,u.queue,!0,!1),As().memoizedState=u,[!1,u]},useSyncExternalStore:function(u,d,p){var v=$t,j=As();if(cn){if(p===void 0)throw Error(r(407));p=p()}else{if(p=d(),Un===null)throw Error(r(349));(sn&127)!==0||s7(v,d,p)}j.memoizedState=p;var O={value:p,getSnapshot:d};return j.queue=O,b7(a7.bind(null,v,O,u),[u]),v.flags|=2048,pd(9,{destroy:void 0},i7.bind(null,v,O,p,d),null),p},useId:function(){var u=As(),d=Un.identifierPrefix;if(cn){var p=Fa,v=qa;p=(v&~(1<<32-At(v)-1)).toString(32)+p,d="_"+d+"R_"+p,p=ig++,0<\/script>",O=O.removeChild(O.firstChild);break;case"select":O=typeof v.is=="string"?q.createElement("select",{is:v.is}):q.createElement("select"),v.multiple?O.multiple=!0:v.size&&(O.size=v.size);break;default:O=typeof v.is=="string"?q.createElement(j,{is:v.is}):q.createElement(j)}}O[Gr]=d,O[ds]=v;e:for(q=d.child;q!==null;){if(q.tag===5||q.tag===6)O.appendChild(q.stateNode);else if(q.tag!==4&&q.tag!==27&&q.child!==null){q.child.return=q,q=q.child;continue}if(q===d)break e;for(;q.sibling===null;){if(q.return===null||q.return===d)break e;q=q.return}q.sibling.return=q.return,q=q.sibling}d.stateNode=O;e:switch(ps(O,j,v),j){case"button":case"input":case"select":case"textarea":v=!!v.autoFocus;break e;case"img":v=!0;break e;default:v=!1}v&&Ll(d)}}return nr(d),m2(d,d.type,u===null?null:u.memoizedProps,d.pendingProps,p),null;case 6:if(u&&d.stateNode!=null)u.memoizedProps!==v&&Ll(d);else{if(typeof v!="string"&&d.stateNode===null)throw Error(r(166));if(u=ne.current,ad(d)){if(u=d.stateNode,p=d.memoizedProps,v=null,j=hs,j!==null)switch(j.tag){case 27:case 5:v=j.memoizedProps}u[Gr]=d,u=!!(u.nodeValue===p||v!==null&&v.suppressHydrationWarning===!0||nC(u.nodeValue,p)),u||Ao(d,!0)}else u=Mg(u).createTextNode(v),u[Gr]=d,d.stateNode=u}return nr(d),null;case 31:if(p=d.memoizedState,u===null||u.memoizedState!==null){if(v=ad(d),p!==null){if(u===null){if(!v)throw Error(r(318));if(u=d.memoizedState,u=u!==null?u.dehydrated:null,!u)throw Error(r(557));u[Gr]=d}else Uc(),(d.flags&128)===0&&(d.memoizedState=null),d.flags|=4;nr(d),u=!1}else p=jb(),u!==null&&u.memoizedState!==null&&(u.memoizedState.hydrationErrors=p),u=!0;if(!u)return d.flags&256?(vi(d),d):(vi(d),null);if((d.flags&128)!==0)throw Error(r(558))}return nr(d),null;case 13:if(v=d.memoizedState,u===null||u.memoizedState!==null&&u.memoizedState.dehydrated!==null){if(j=ad(d),v!==null&&v.dehydrated!==null){if(u===null){if(!j)throw Error(r(318));if(j=d.memoizedState,j=j!==null?j.dehydrated:null,!j)throw Error(r(317));j[Gr]=d}else Uc(),(d.flags&128)===0&&(d.memoizedState=null),d.flags|=4;nr(d),j=!1}else j=jb(),u!==null&&u.memoizedState!==null&&(u.memoizedState.hydrationErrors=j),j=!0;if(!j)return d.flags&256?(vi(d),d):(vi(d),null)}return vi(d),(d.flags&128)!==0?(d.lanes=p,d):(p=v!==null,u=u!==null&&u.memoizedState!==null,p&&(v=d.child,j=null,v.alternate!==null&&v.alternate.memoizedState!==null&&v.alternate.memoizedState.cachePool!==null&&(j=v.alternate.memoizedState.cachePool.pool),O=null,v.memoizedState!==null&&v.memoizedState.cachePool!==null&&(O=v.memoizedState.cachePool.pool),O!==j&&(v.flags|=2048)),p!==u&&p&&(d.child.flags|=8192),gg(d,d.updateQueue),nr(d),null);case 4:return re(),u===null&&P2(d.stateNode.containerInfo),nr(d),null;case 10:return Rl(d.type),nr(d),null;case 19:if(W(Nr),v=d.memoizedState,v===null)return nr(d),null;if(j=(d.flags&128)!==0,O=v.rendering,O===null)if(j)Ef(v,!1);else{if(br!==0||u!==null&&(u.flags&128)!==0)for(u=d.child;u!==null;){if(O=rg(u),O!==null){for(d.flags|=128,Ef(v,!1),u=O.updateQueue,d.updateQueue=u,gg(d,u),d.subtreeFlags=0,u=p,p=d.child;p!==null;)DN(p,u),p=p.sibling;return F(Nr,Nr.current&1|2),cn&&Ml(d,v.treeForkCount),d.child}u=u.sibling}v.tail!==null&&Mt()>wg&&(d.flags|=128,j=!0,Ef(v,!1),d.lanes=4194304)}else{if(!j)if(u=rg(O),u!==null){if(d.flags|=128,j=!0,u=u.updateQueue,d.updateQueue=u,gg(d,u),Ef(v,!0),v.tail===null&&v.tailMode==="hidden"&&!O.alternate&&!cn)return nr(d),null}else 2*Mt()-v.renderingStartTime>wg&&p!==536870912&&(d.flags|=128,j=!0,Ef(v,!1),d.lanes=4194304);v.isBackwards?(O.sibling=d.child,d.child=O):(u=v.last,u!==null?u.sibling=O:d.child=O,v.last=O)}return v.tail!==null?(u=v.tail,v.rendering=u,v.tail=u.sibling,v.renderingStartTime=Mt(),u.sibling=null,p=Nr.current,F(Nr,j?p&1|2:p&1),cn&&Ml(d,v.treeForkCount),u):(nr(d),null);case 22:case 23:return vi(d),Lb(),v=d.memoizedState!==null,u!==null?u.memoizedState!==null!==v&&(d.flags|=8192):v&&(d.flags|=8192),v?(p&536870912)!==0&&(d.flags&128)===0&&(nr(d),d.subtreeFlags&6&&(d.flags|=8192)):nr(d),p=d.updateQueue,p!==null&&gg(d,p.retryQueue),p=null,u!==null&&u.memoizedState!==null&&u.memoizedState.cachePool!==null&&(p=u.memoizedState.cachePool.pool),v=null,d.memoizedState!==null&&d.memoizedState.cachePool!==null&&(v=d.memoizedState.cachePool.pool),v!==p&&(d.flags|=2048),u!==null&&W(Xc),null;case 24:return p=null,u!==null&&(p=u.memoizedState.cache),d.memoizedState.cache!==p&&(d.flags|=2048),Rl(zr),nr(d),null;case 25:return null;case 30:return null}throw Error(r(156,d.tag))}function oX(u,d){switch(Sb(d),d.tag){case 1:return u=d.flags,u&65536?(d.flags=u&-65537|128,d):null;case 3:return Rl(zr),re(),u=d.flags,(u&65536)!==0&&(u&128)===0?(d.flags=u&-65537|128,d):null;case 26:case 27:case 5:return _e(d),null;case 31:if(d.memoizedState!==null){if(vi(d),d.alternate===null)throw Error(r(340));Uc()}return u=d.flags,u&65536?(d.flags=u&-65537|128,d):null;case 13:if(vi(d),u=d.memoizedState,u!==null&&u.dehydrated!==null){if(d.alternate===null)throw Error(r(340));Uc()}return u=d.flags,u&65536?(d.flags=u&-65537|128,d):null;case 19:return W(Nr),null;case 4:return re(),null;case 10:return Rl(d.type),null;case 22:case 23:return vi(d),Lb(),u!==null&&W(Xc),u=d.flags,u&65536?(d.flags=u&-65537|128,d):null;case 24:return Rl(zr),null;case 25:return null;default:return null}}function l8(u,d){switch(Sb(d),d.tag){case 3:Rl(zr),re();break;case 26:case 27:case 5:_e(d);break;case 4:re();break;case 31:d.memoizedState!==null&&vi(d);break;case 13:vi(d);break;case 19:W(Nr);break;case 10:Rl(d.type);break;case 22:case 23:vi(d),Lb(),u!==null&&W(Xc);break;case 24:Rl(zr)}}function _f(u,d){try{var p=d.updateQueue,v=p!==null?p.lastEffect:null;if(v!==null){var j=v.next;p=j;do{if((p.tag&u)===u){v=void 0;var O=p.create,q=p.inst;v=O(),q.destroy=v}p=p.next}while(p!==j)}}catch(Y){Pn(d,d.return,Y)}}function Bo(u,d,p){try{var v=d.updateQueue,j=v!==null?v.lastEffect:null;if(j!==null){var O=j.next;v=O;do{if((v.tag&u)===u){var q=v.inst,Y=q.destroy;if(Y!==void 0){q.destroy=void 0,j=d;var ce=p,we=Y;try{we()}catch(Ee){Pn(j,ce,Ee)}}}v=v.next}while(v!==O)}}catch(Ee){Pn(d,d.return,Ee)}}function o8(u){var d=u.updateQueue;if(d!==null){var p=u.stateNode;try{ZN(d,p)}catch(v){Pn(u,u.return,v)}}}function c8(u,d,p){p.props=eu(u.type,u.memoizedProps),p.state=u.memoizedState;try{p.componentWillUnmount()}catch(v){Pn(u,d,v)}}function Mf(u,d){try{var p=u.ref;if(p!==null){switch(u.tag){case 26:case 27:case 5:var v=u.stateNode;break;case 30:v=u.stateNode;break;default:v=u.stateNode}typeof p=="function"?u.refCleanup=p(v):p.current=v}}catch(j){Pn(u,d,j)}}function $a(u,d){var p=u.ref,v=u.refCleanup;if(p!==null)if(typeof v=="function")try{v()}catch(j){Pn(u,d,j)}finally{u.refCleanup=null,u=u.alternate,u!=null&&(u.refCleanup=null)}else if(typeof p=="function")try{p(null)}catch(j){Pn(u,d,j)}else p.current=null}function u8(u){var d=u.type,p=u.memoizedProps,v=u.stateNode;try{e:switch(d){case"button":case"input":case"select":case"textarea":p.autoFocus&&v.focus();break e;case"img":p.src?v.src=p.src:p.srcSet&&(v.srcset=p.srcSet)}}catch(j){Pn(u,u.return,j)}}function p2(u,d,p){try{var v=u.stateNode;_X(v,u.type,p,d),v[ds]=d}catch(j){Pn(u,u.return,j)}}function d8(u){return u.tag===5||u.tag===3||u.tag===26||u.tag===27&&Uo(u.type)||u.tag===4}function g2(u){e:for(;;){for(;u.sibling===null;){if(u.return===null||d8(u.return))return null;u=u.return}for(u.sibling.return=u.return,u=u.sibling;u.tag!==5&&u.tag!==6&&u.tag!==18;){if(u.tag===27&&Uo(u.type)||u.flags&2||u.child===null||u.tag===4)continue e;u.child.return=u,u=u.child}if(!(u.flags&2))return u.stateNode}}function x2(u,d,p){var v=u.tag;if(v===5||v===6)u=u.stateNode,d?(p.nodeType===9?p.body:p.nodeName==="HTML"?p.ownerDocument.body:p).insertBefore(u,d):(d=p.nodeType===9?p.body:p.nodeName==="HTML"?p.ownerDocument.body:p,d.appendChild(u),p=p._reactRootContainer,p!=null||d.onclick!==null||(d.onclick=Tl));else if(v!==4&&(v===27&&Uo(u.type)&&(p=u.stateNode,d=null),u=u.child,u!==null))for(x2(u,d,p),u=u.sibling;u!==null;)x2(u,d,p),u=u.sibling}function xg(u,d,p){var v=u.tag;if(v===5||v===6)u=u.stateNode,d?p.insertBefore(u,d):p.appendChild(u);else if(v!==4&&(v===27&&Uo(u.type)&&(p=u.stateNode),u=u.child,u!==null))for(xg(u,d,p),u=u.sibling;u!==null;)xg(u,d,p),u=u.sibling}function h8(u){var d=u.stateNode,p=u.memoizedProps;try{for(var v=u.type,j=d.attributes;j.length;)d.removeAttributeNode(j[0]);ps(d,v,p),d[Gr]=u,d[ds]=p}catch(O){Pn(u,u.return,O)}}var Il=!1,Ir=!1,v2=!1,f8=typeof WeakSet=="function"?WeakSet:Set,rs=null;function cX(u,d){if(u=u.containerInfo,B2=Ig,u=ON(u),db(u)){if("selectionStart"in u)var p={start:u.selectionStart,end:u.selectionEnd};else e:{p=(p=u.ownerDocument)&&p.defaultView||window;var v=p.getSelection&&p.getSelection();if(v&&v.rangeCount!==0){p=v.anchorNode;var j=v.anchorOffset,O=v.focusNode;v=v.focusOffset;try{p.nodeType,O.nodeType}catch{p=null;break e}var q=0,Y=-1,ce=-1,we=0,Ee=0,Re=u,Se=null;t:for(;;){for(var Ne;Re!==p||j!==0&&Re.nodeType!==3||(Y=q+j),Re!==O||v!==0&&Re.nodeType!==3||(ce=q+v),Re.nodeType===3&&(q+=Re.nodeValue.length),(Ne=Re.firstChild)!==null;)Se=Re,Re=Ne;for(;;){if(Re===u)break t;if(Se===p&&++we===j&&(Y=q),Se===O&&++Ee===v&&(ce=q),(Ne=Re.nextSibling)!==null)break;Re=Se,Se=Re.parentNode}Re=Ne}p=Y===-1||ce===-1?null:{start:Y,end:ce}}else p=null}p=p||{start:0,end:0}}else p=null;for(q2={focusedElem:u,selectionRange:p},Ig=!1,rs=d;rs!==null;)if(d=rs,u=d.child,(d.subtreeFlags&1028)!==0&&u!==null)u.return=d,rs=u;else for(;rs!==null;){switch(d=rs,O=d.alternate,u=d.flags,d.tag){case 0:if((u&4)!==0&&(u=d.updateQueue,u=u!==null?u.events:null,u!==null))for(p=0;p title"))),ps(O,v,p),O[Gr]=u,Dr(O),v=O;break e;case"link":var q=yC("link","href",j).get(v+(p.href||""));if(q){for(var Y=0;Y$n&&(q=$n,$n=kt,kt=q);var pe=kN(Y,kt),fe=kN(Y,$n);if(pe&&fe&&(Ne.rangeCount!==1||Ne.anchorNode!==pe.node||Ne.anchorOffset!==pe.offset||Ne.focusNode!==fe.node||Ne.focusOffset!==fe.offset)){var ye=Re.createRange();ye.setStart(pe.node,pe.offset),Ne.removeAllRanges(),kt>$n?(Ne.addRange(ye),Ne.extend(fe.node,fe.offset)):(ye.setEnd(fe.node,fe.offset),Ne.addRange(ye))}}}}for(Re=[],Ne=Y;Ne=Ne.parentNode;)Ne.nodeType===1&&Re.push({element:Ne,left:Ne.scrollLeft,top:Ne.scrollTop});for(typeof Y.focus=="function"&&Y.focus(),Y=0;Yp?32:p,B.T=null,p=O2,O2=null;var O=Qo,q=Ql;if(Xr=0,bd=Qo=null,Ql=0,(An&6)!==0)throw Error(r(331));var Y=An;if(An|=4,j8(O.current),w8(O,O.current,q,p),An=Y,Lf(0,!1),qe&&typeof qe.onPostCommitFiberRoot=="function")try{qe.onPostCommitFiberRoot(Te,O)}catch{}return!0}finally{X.p=j,B.T=v,$8(u,d)}}function H8(u,d,p){d=qi(p,d),d=s2(u.stateNode,d,2),u=Po(u,d,2),u!==null&&(Et(u,2),Qa(u))}function Pn(u,d,p){if(u.tag===3)H8(u,u,p);else for(;d!==null;){if(d.tag===3){H8(d,u,p);break}else if(d.tag===1){var v=d.stateNode;if(typeof d.type.getDerivedStateFromError=="function"||typeof v.componentDidCatch=="function"&&($o===null||!$o.has(v))){u=qi(p,u),p=V7(2),v=Po(d,p,2),v!==null&&(U7(p,v,d,u),Et(v,2),Qa(v));break}}d=d.return}}function E2(u,d,p){var v=u.pingCache;if(v===null){v=u.pingCache=new hX;var j=new Set;v.set(d,j)}else j=v.get(d),j===void 0&&(j=new Set,v.set(d,j));j.has(p)||(w2=!0,j.add(p),u=xX.bind(null,u,d,p),d.then(u,u))}function xX(u,d,p){var v=u.pingCache;v!==null&&v.delete(d),u.pingedLanes|=u.suspendedLanes&p,u.warmLanes&=~p,Un===u&&(sn&p)===p&&(br===4||br===3&&(sn&62914560)===sn&&300>Mt()-bg?(An&2)===0&&wd(u,0):S2|=p,yd===sn&&(yd=0)),Qa(u)}function V8(u,d){d===0&&(d=ge()),u=Hc(u,d),u!==null&&(Et(u,d),Qa(u))}function vX(u){var d=u.memoizedState,p=0;d!==null&&(p=d.retryLane),V8(u,p)}function yX(u,d){var p=0;switch(u.tag){case 31:case 13:var v=u.stateNode,j=u.memoizedState;j!==null&&(p=j.retryLane);break;case 19:v=u.stateNode;break;case 22:v=u.stateNode._retryCache;break;default:throw Error(r(314))}v!==null&&v.delete(d),V8(u,p)}function bX(u,d){return rt(u,d)}var Cg=null,kd=null,_2=!1,Tg=!1,M2=!1,Vo=0;function Qa(u){u!==kd&&u.next===null&&(kd===null?Cg=kd=u:kd=kd.next=u),Tg=!0,_2||(_2=!0,SX())}function Lf(u,d){if(!M2&&Tg){M2=!0;do for(var p=!1,v=Cg;v!==null;){if(u!==0){var j=v.pendingLanes;if(j===0)var O=0;else{var q=v.suspendedLanes,Y=v.pingedLanes;O=(1<<31-At(42|u)+1)-1,O&=j&~(q&~Y),O=O&201326741?O&201326741|1:O?O|2:0}O!==0&&(p=!0,X8(v,O))}else O=sn,O=Vn(v,v===Un?O:0,v.cancelPendingCommit!==null||v.timeoutHandle!==-1),(O&3)===0||jr(v,O)||(p=!0,X8(v,O));v=v.next}while(p);M2=!1}}function wX(){U8()}function U8(){Tg=_2=!1;var u=0;Vo!==0&&AX()&&(u=Vo);for(var d=Mt(),p=null,v=Cg;v!==null;){var j=v.next,O=W8(v,d);O===0?(v.next=null,p===null?Cg=j:p.next=j,j===null&&(kd=p)):(p=v,(u!==0||(O&3)!==0)&&(Tg=!0)),v=j}Xr!==0&&Xr!==5||Lf(u),Vo!==0&&(Vo=0)}function W8(u,d){for(var p=u.suspendedLanes,v=u.pingedLanes,j=u.expirationTimes,O=u.pendingLanes&-62914561;0Y)break;var Ee=ce.transferSize,Re=ce.initiatorType;Ee&&rC(Re)&&(ce=ce.responseEnd,q+=Ee*(ce"u"?null:document;function pC(u,d,p){var v=jd;if(v&&typeof d=="string"&&d){var j=Ii(d);j='link[rel="'+u+'"][href="'+j+'"]',typeof p=="string"&&(j+='[crossorigin="'+p+'"]'),mC.has(j)||(mC.add(j),u={rel:u,crossOrigin:p,href:d},v.querySelector(j)===null&&(d=v.createElement("link"),ps(d,"link",u),Dr(d),v.head.appendChild(d)))}}function FX(u){Hl.D(u),pC("dns-prefetch",u,null)}function $X(u,d){Hl.C(u,d),pC("preconnect",u,d)}function QX(u,d,p){Hl.L(u,d,p);var v=jd;if(v&&u&&d){var j='link[rel="preload"][as="'+Ii(d)+'"]';d==="image"&&p&&p.imageSrcSet?(j+='[imagesrcset="'+Ii(p.imageSrcSet)+'"]',typeof p.imageSizes=="string"&&(j+='[imagesizes="'+Ii(p.imageSizes)+'"]')):j+='[href="'+Ii(u)+'"]';var O=j;switch(d){case"style":O=Od(u);break;case"script":O=Nd(u)}Ui.has(O)||(u=m({rel:"preload",href:d==="image"&&p&&p.imageSrcSet?void 0:u,as:d},p),Ui.set(O,u),v.querySelector(j)!==null||d==="style"&&v.querySelector(Ff(O))||d==="script"&&v.querySelector($f(O))||(d=v.createElement("link"),ps(d,"link",u),Dr(d),v.head.appendChild(d)))}}function HX(u,d){Hl.m(u,d);var p=jd;if(p&&u){var v=d&&typeof d.as=="string"?d.as:"script",j='link[rel="modulepreload"][as="'+Ii(v)+'"][href="'+Ii(u)+'"]',O=j;switch(v){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":O=Nd(u)}if(!Ui.has(O)&&(u=m({rel:"modulepreload",href:u},d),Ui.set(O,u),p.querySelector(j)===null)){switch(v){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(p.querySelector($f(O)))return}v=p.createElement("link"),ps(v,"link",u),Dr(v),p.head.appendChild(v)}}}function VX(u,d,p){Hl.S(u,d,p);var v=jd;if(v&&u){var j=To(v).hoistableStyles,O=Od(u);d=d||"default";var q=j.get(O);if(!q){var Y={loading:0,preload:null};if(q=v.querySelector(Ff(O)))Y.loading=5;else{u=m({rel:"stylesheet",href:u,"data-precedence":d},p),(p=Ui.get(O))&&W2(u,p);var ce=q=v.createElement("link");Dr(ce),ps(ce,"link",u),ce._p=new Promise(function(we,Ee){ce.onload=we,ce.onerror=Ee}),ce.addEventListener("load",function(){Y.loading|=1}),ce.addEventListener("error",function(){Y.loading|=2}),Y.loading|=4,Rg(q,d,v)}q={type:"stylesheet",instance:q,count:1,state:Y},j.set(O,q)}}}function UX(u,d){Hl.X(u,d);var p=jd;if(p&&u){var v=To(p).hoistableScripts,j=Nd(u),O=v.get(j);O||(O=p.querySelector($f(j)),O||(u=m({src:u,async:!0},d),(d=Ui.get(j))&&G2(u,d),O=p.createElement("script"),Dr(O),ps(O,"link",u),p.head.appendChild(O)),O={type:"script",instance:O,count:1,state:null},v.set(j,O))}}function WX(u,d){Hl.M(u,d);var p=jd;if(p&&u){var v=To(p).hoistableScripts,j=Nd(u),O=v.get(j);O||(O=p.querySelector($f(j)),O||(u=m({src:u,async:!0,type:"module"},d),(d=Ui.get(j))&&G2(u,d),O=p.createElement("script"),Dr(O),ps(O,"link",u),p.head.appendChild(O)),O={type:"script",instance:O,count:1,state:null},v.set(j,O))}}function gC(u,d,p,v){var j=(j=ne.current)?Ag(j):null;if(!j)throw Error(r(446));switch(u){case"meta":case"title":return null;case"style":return typeof p.precedence=="string"&&typeof p.href=="string"?(d=Od(p.href),p=To(j).hoistableStyles,v=p.get(d),v||(v={type:"style",instance:null,count:0,state:null},p.set(d,v)),v):{type:"void",instance:null,count:0,state:null};case"link":if(p.rel==="stylesheet"&&typeof p.href=="string"&&typeof p.precedence=="string"){u=Od(p.href);var O=To(j).hoistableStyles,q=O.get(u);if(q||(j=j.ownerDocument||j,q={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},O.set(u,q),(O=j.querySelector(Ff(u)))&&!O._p&&(q.instance=O,q.state.loading=5),Ui.has(u)||(p={rel:"preload",as:"style",href:p.href,crossOrigin:p.crossOrigin,integrity:p.integrity,media:p.media,hrefLang:p.hrefLang,referrerPolicy:p.referrerPolicy},Ui.set(u,p),O||GX(j,u,p,q.state))),d&&v===null)throw Error(r(528,""));return q}if(d&&v!==null)throw Error(r(529,""));return null;case"script":return d=p.async,p=p.src,typeof p=="string"&&d&&typeof d!="function"&&typeof d!="symbol"?(d=Nd(p),p=To(j).hoistableScripts,v=p.get(d),v||(v={type:"script",instance:null,count:0,state:null},p.set(d,v)),v):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,u))}}function Od(u){return'href="'+Ii(u)+'"'}function Ff(u){return'link[rel="stylesheet"]['+u+"]"}function xC(u){return m({},u,{"data-precedence":u.precedence,precedence:null})}function GX(u,d,p,v){u.querySelector('link[rel="preload"][as="style"]['+d+"]")?v.loading=1:(d=u.createElement("link"),v.preload=d,d.addEventListener("load",function(){return v.loading|=1}),d.addEventListener("error",function(){return v.loading|=2}),ps(d,"link",p),Dr(d),u.head.appendChild(d))}function Nd(u){return'[src="'+Ii(u)+'"]'}function $f(u){return"script[async]"+u}function vC(u,d,p){if(d.count++,d.instance===null)switch(d.type){case"style":var v=u.querySelector('style[data-href~="'+Ii(p.href)+'"]');if(v)return d.instance=v,Dr(v),v;var j=m({},p,{"data-href":p.href,"data-precedence":p.precedence,href:null,precedence:null});return v=(u.ownerDocument||u).createElement("style"),Dr(v),ps(v,"style",j),Rg(v,p.precedence,u),d.instance=v;case"stylesheet":j=Od(p.href);var O=u.querySelector(Ff(j));if(O)return d.state.loading|=4,d.instance=O,Dr(O),O;v=xC(p),(j=Ui.get(j))&&W2(v,j),O=(u.ownerDocument||u).createElement("link"),Dr(O);var q=O;return q._p=new Promise(function(Y,ce){q.onload=Y,q.onerror=ce}),ps(O,"link",v),d.state.loading|=4,Rg(O,p.precedence,u),d.instance=O;case"script":return O=Nd(p.src),(j=u.querySelector($f(O)))?(d.instance=j,Dr(j),j):(v=p,(j=Ui.get(O))&&(v=m({},p),G2(v,j)),u=u.ownerDocument||u,j=u.createElement("script"),Dr(j),ps(j,"link",v),u.head.appendChild(j),d.instance=j);case"void":return null;default:throw Error(r(443,d.type))}else d.type==="stylesheet"&&(d.state.loading&4)===0&&(v=d.instance,d.state.loading|=4,Rg(v,p.precedence,u));return d.instance}function Rg(u,d,p){for(var v=p.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),j=v.length?v[v.length-1]:null,O=j,q=0;q title"):null)}function XX(u,d,p){if(p===1||d.itemProp!=null)return!1;switch(u){case"meta":case"title":return!0;case"style":if(typeof d.precedence!="string"||typeof d.href!="string"||d.href==="")break;return!0;case"link":if(typeof d.rel!="string"||typeof d.href!="string"||d.href===""||d.onLoad||d.onError)break;switch(d.rel){case"stylesheet":return u=d.disabled,typeof d.precedence=="string"&&u==null;default:return!0}case"script":if(d.async&&typeof d.async!="function"&&typeof d.async!="symbol"&&!d.onLoad&&!d.onError&&d.src&&typeof d.src=="string")return!0}return!1}function wC(u){return!(u.type==="stylesheet"&&(u.state.loading&3)===0)}function YX(u,d,p,v){if(p.type==="stylesheet"&&(typeof v.media!="string"||matchMedia(v.media).matches!==!1)&&(p.state.loading&4)===0){if(p.instance===null){var j=Od(v.href),O=d.querySelector(Ff(j));if(O){d=O._p,d!==null&&typeof d=="object"&&typeof d.then=="function"&&(u.count++,u=zg.bind(u),d.then(u,u)),p.state.loading|=4,p.instance=O,Dr(O);return}O=d.ownerDocument||d,v=xC(v),(j=Ui.get(j))&&W2(v,j),O=O.createElement("link"),Dr(O);var q=O;q._p=new Promise(function(Y,ce){q.onload=Y,q.onerror=ce}),ps(O,"link",v),p.instance=O}u.stylesheets===null&&(u.stylesheets=new Map),u.stylesheets.set(p,d),(d=p.state.preload)&&(p.state.loading&3)===0&&(u.count++,p=zg.bind(u),d.addEventListener("load",p),d.addEventListener("error",p))}}var X2=0;function KX(u,d){return u.stylesheets&&u.count===0&&Lg(u,u.stylesheets),0X2?50:800)+d);return u.unsuspend=p,function(){u.unsuspend=null,clearTimeout(v),clearTimeout(j)}}:null}function zg(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Lg(this,this.stylesheets);else if(this.unsuspend){var u=this.unsuspend;this.unsuspend=null,u()}}}var Pg=null;function Lg(u,d){u.stylesheets=null,u.unsuspend!==null&&(u.count++,Pg=new Map,d.forEach(ZX,u),Pg=null,zg.call(u))}function ZX(u,d){if(!(d.state.loading&4)){var p=Pg.get(u);if(p)var v=p.get(null);else{p=new Map,Pg.set(u,p);for(var j=u.querySelectorAll("link[data-precedence],style[data-precedence]"),O=0;O"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),sw.exports=sZ(),sw.exports}var aZ=iZ();function hz(t,e){return function(){return t.apply(e,arguments)}}const{toString:lZ}=Object.prototype,{getPrototypeOf:o6}=Object,{iterator:Pv,toStringTag:fz}=Symbol,Lv=(t=>e=>{const n=lZ.call(e);return t[n]||(t[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),za=t=>(t=t.toLowerCase(),e=>Lv(e)===t),Iv=t=>e=>typeof e===t,{isArray:Dh}=Array,ph=Iv("undefined");function B0(t){return t!==null&&!ph(t)&&t.constructor!==null&&!ph(t.constructor)&&si(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const mz=za("ArrayBuffer");function oZ(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&mz(t.buffer),e}const cZ=Iv("string"),si=Iv("function"),pz=Iv("number"),q0=t=>t!==null&&typeof t=="object",uZ=t=>t===!0||t===!1,Kx=t=>{if(Lv(t)!=="object")return!1;const e=o6(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(fz in t)&&!(Pv in t)},dZ=t=>{if(!q0(t)||B0(t))return!1;try{return Object.keys(t).length===0&&Object.getPrototypeOf(t)===Object.prototype}catch{return!1}},hZ=za("Date"),fZ=za("File"),mZ=za("Blob"),pZ=za("FileList"),gZ=t=>q0(t)&&si(t.pipe),xZ=t=>{let e;return t&&(typeof FormData=="function"&&t instanceof FormData||si(t.append)&&((e=Lv(t))==="formdata"||e==="object"&&si(t.toString)&&t.toString()==="[object FormData]"))},vZ=za("URLSearchParams"),[yZ,bZ,wZ,SZ]=["ReadableStream","Request","Response","Headers"].map(za),kZ=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function F0(t,e,{allOwnKeys:n=!1}={}){if(t===null||typeof t>"u")return;let r,s;if(typeof t!="object"&&(t=[t]),Dh(t))for(r=0,s=t.length;r0;)if(s=n[r],e===s.toLowerCase())return s;return null}const mu=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,xz=t=>!ph(t)&&t!==mu;function I3(){const{caseless:t,skipUndefined:e}=xz(this)&&this||{},n={},r=(s,i)=>{const a=t&&gz(n,i)||i;Kx(n[a])&&Kx(s)?n[a]=I3(n[a],s):Kx(s)?n[a]=I3({},s):Dh(s)?n[a]=s.slice():(!e||!ph(s))&&(n[a]=s)};for(let s=0,i=arguments.length;s(F0(e,(s,i)=>{n&&si(s)?t[i]=hz(s,n):t[i]=s},{allOwnKeys:r}),t),OZ=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),NZ=(t,e,n,r)=>{t.prototype=Object.create(e.prototype,r),t.prototype.constructor=t,Object.defineProperty(t,"super",{value:e.prototype}),n&&Object.assign(t.prototype,n)},CZ=(t,e,n,r)=>{let s,i,a;const o={};if(e=e||{},t==null)return e;do{for(s=Object.getOwnPropertyNames(t),i=s.length;i-- >0;)a=s[i],(!r||r(a,t,e))&&!o[a]&&(e[a]=t[a],o[a]=!0);t=n!==!1&&o6(t)}while(t&&(!n||n(t,e))&&t!==Object.prototype);return e},TZ=(t,e,n)=>{t=String(t),(n===void 0||n>t.length)&&(n=t.length),n-=e.length;const r=t.indexOf(e,n);return r!==-1&&r===n},EZ=t=>{if(!t)return null;if(Dh(t))return t;let e=t.length;if(!pz(e))return null;const n=new Array(e);for(;e-- >0;)n[e]=t[e];return n},_Z=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&o6(Uint8Array)),MZ=(t,e)=>{const r=(t&&t[Pv]).call(t);let s;for(;(s=r.next())&&!s.done;){const i=s.value;e.call(t,i[0],i[1])}},AZ=(t,e)=>{let n;const r=[];for(;(n=t.exec(e))!==null;)r.push(n);return r},RZ=za("HTMLFormElement"),DZ=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),WC=(({hasOwnProperty:t})=>(e,n)=>t.call(e,n))(Object.prototype),zZ=za("RegExp"),vz=(t,e)=>{const n=Object.getOwnPropertyDescriptors(t),r={};F0(n,(s,i)=>{let a;(a=e(s,i,t))!==!1&&(r[i]=a||s)}),Object.defineProperties(t,r)},PZ=t=>{vz(t,(e,n)=>{if(si(t)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=t[n];if(si(r)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},LZ=(t,e)=>{const n={},r=s=>{s.forEach(i=>{n[i]=!0})};return Dh(t)?r(t):r(String(t).split(e)),n},IZ=()=>{},BZ=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e;function qZ(t){return!!(t&&si(t.append)&&t[fz]==="FormData"&&t[Pv])}const FZ=t=>{const e=new Array(10),n=(r,s)=>{if(q0(r)){if(e.indexOf(r)>=0)return;if(B0(r))return r;if(!("toJSON"in r)){e[s]=r;const i=Dh(r)?[]:{};return F0(r,(a,o)=>{const c=n(a,s+1);!ph(c)&&(i[o]=c)}),e[s]=void 0,i}}return r};return n(t,0)},$Z=za("AsyncFunction"),QZ=t=>t&&(q0(t)||si(t))&&si(t.then)&&si(t.catch),yz=((t,e)=>t?setImmediate:e?((n,r)=>(mu.addEventListener("message",({source:s,data:i})=>{s===mu&&i===n&&r.length&&r.shift()()},!1),s=>{r.push(s),mu.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",si(mu.postMessage)),HZ=typeof queueMicrotask<"u"?queueMicrotask.bind(mu):typeof process<"u"&&process.nextTick||yz,VZ=t=>t!=null&&si(t[Pv]),je={isArray:Dh,isArrayBuffer:mz,isBuffer:B0,isFormData:xZ,isArrayBufferView:oZ,isString:cZ,isNumber:pz,isBoolean:uZ,isObject:q0,isPlainObject:Kx,isEmptyObject:dZ,isReadableStream:yZ,isRequest:bZ,isResponse:wZ,isHeaders:SZ,isUndefined:ph,isDate:hZ,isFile:fZ,isBlob:mZ,isRegExp:zZ,isFunction:si,isStream:gZ,isURLSearchParams:vZ,isTypedArray:_Z,isFileList:pZ,forEach:F0,merge:I3,extend:jZ,trim:kZ,stripBOM:OZ,inherits:NZ,toFlatObject:CZ,kindOf:Lv,kindOfTest:za,endsWith:TZ,toArray:EZ,forEachEntry:MZ,matchAll:AZ,isHTMLForm:RZ,hasOwnProperty:WC,hasOwnProp:WC,reduceDescriptors:vz,freezeMethods:PZ,toObjectSet:LZ,toCamelCase:DZ,noop:IZ,toFiniteNumber:BZ,findKey:gz,global:mu,isContextDefined:xz,isSpecCompliantForm:qZ,toJSONObject:FZ,isAsyncFn:$Z,isThenable:QZ,setImmediate:yz,asap:HZ,isIterable:VZ};function Ht(t,e,n,r,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=t,this.name="AxiosError",e&&(this.code=e),n&&(this.config=n),r&&(this.request=r),s&&(this.response=s,this.status=s.status?s.status:null)}je.inherits(Ht,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:je.toJSONObject(this.config),code:this.code,status:this.status}}});const bz=Ht.prototype,wz={};["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(t=>{wz[t]={value:t}});Object.defineProperties(Ht,wz);Object.defineProperty(bz,"isAxiosError",{value:!0});Ht.from=(t,e,n,r,s,i)=>{const a=Object.create(bz);je.toFlatObject(t,a,function(f){return f!==Error.prototype},h=>h!=="isAxiosError");const o=t&&t.message?t.message:"Error",c=e==null&&t?t.code:e;return Ht.call(a,o,c,n,r,s),t&&a.cause==null&&Object.defineProperty(a,"cause",{value:t,configurable:!0}),a.name=t&&t.name||"Error",i&&Object.assign(a,i),a};const UZ=null;function B3(t){return je.isPlainObject(t)||je.isArray(t)}function Sz(t){return je.endsWith(t,"[]")?t.slice(0,-2):t}function GC(t,e,n){return t?t.concat(e).map(function(s,i){return s=Sz(s),!n&&i?"["+s+"]":s}).join(n?".":""):e}function WZ(t){return je.isArray(t)&&!t.some(B3)}const GZ=je.toFlatObject(je,{},null,function(e){return/^is[A-Z]/.test(e)});function Bv(t,e,n){if(!je.isObject(t))throw new TypeError("target must be an object");e=e||new FormData,n=je.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(w,S){return!je.isUndefined(S[w])});const r=n.metaTokens,s=n.visitor||f,i=n.dots,a=n.indexes,c=(n.Blob||typeof Blob<"u"&&Blob)&&je.isSpecCompliantForm(e);if(!je.isFunction(s))throw new TypeError("visitor must be a function");function h(y){if(y===null)return"";if(je.isDate(y))return y.toISOString();if(je.isBoolean(y))return y.toString();if(!c&&je.isBlob(y))throw new Ht("Blob is not supported. Use a Buffer instead.");return je.isArrayBuffer(y)||je.isTypedArray(y)?c&&typeof Blob=="function"?new Blob([y]):Buffer.from(y):y}function f(y,w,S){let k=y;if(y&&!S&&typeof y=="object"){if(je.endsWith(w,"{}"))w=r?w:w.slice(0,-2),y=JSON.stringify(y);else if(je.isArray(y)&&WZ(y)||(je.isFileList(y)||je.endsWith(w,"[]"))&&(k=je.toArray(y)))return w=Sz(w),k.forEach(function(C,T){!(je.isUndefined(C)||C===null)&&e.append(a===!0?GC([w],T,i):a===null?w:w+"[]",h(C))}),!1}return B3(y)?!0:(e.append(GC(S,w,i),h(y)),!1)}const m=[],g=Object.assign(GZ,{defaultVisitor:f,convertValue:h,isVisitable:B3});function x(y,w){if(!je.isUndefined(y)){if(m.indexOf(y)!==-1)throw Error("Circular reference detected in "+w.join("."));m.push(y),je.forEach(y,function(k,N){(!(je.isUndefined(k)||k===null)&&s.call(e,k,je.isString(N)?N.trim():N,w,g))===!0&&x(k,w?w.concat(N):[N])}),m.pop()}}if(!je.isObject(t))throw new TypeError("data must be an object");return x(t),e}function XC(t){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,function(r){return e[r]})}function c6(t,e){this._pairs=[],t&&Bv(t,this,e)}const kz=c6.prototype;kz.append=function(e,n){this._pairs.push([e,n])};kz.toString=function(e){const n=e?function(r){return e.call(this,r,XC)}:XC;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function XZ(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function jz(t,e,n){if(!e)return t;const r=n&&n.encode||XZ;je.isFunction(n)&&(n={serialize:n});const s=n&&n.serialize;let i;if(s?i=s(e,n):i=je.isURLSearchParams(e)?e.toString():new c6(e,n).toString(r),i){const a=t.indexOf("#");a!==-1&&(t=t.slice(0,a)),t+=(t.indexOf("?")===-1?"?":"&")+i}return t}class YC{constructor(){this.handlers=[]}use(e,n,r){return this.handlers.push({fulfilled:e,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){je.forEach(this.handlers,function(r){r!==null&&e(r)})}}const Oz={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},YZ=typeof URLSearchParams<"u"?URLSearchParams:c6,KZ=typeof FormData<"u"?FormData:null,ZZ=typeof Blob<"u"?Blob:null,JZ={isBrowser:!0,classes:{URLSearchParams:YZ,FormData:KZ,Blob:ZZ},protocols:["http","https","file","blob","url","data"]},u6=typeof window<"u"&&typeof document<"u",q3=typeof navigator=="object"&&navigator||void 0,eJ=u6&&(!q3||["ReactNative","NativeScript","NS"].indexOf(q3.product)<0),tJ=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",nJ=u6&&window.location.href||"http://localhost",rJ=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:u6,hasStandardBrowserEnv:eJ,hasStandardBrowserWebWorkerEnv:tJ,navigator:q3,origin:nJ},Symbol.toStringTag,{value:"Module"})),Ns={...rJ,...JZ};function sJ(t,e){return Bv(t,new Ns.classes.URLSearchParams,{visitor:function(n,r,s,i){return Ns.isNode&&je.isBuffer(n)?(this.append(r,n.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)},...e})}function iJ(t){return je.matchAll(/\w+|\[(\w*)]/g,t).map(e=>e[0]==="[]"?"":e[1]||e[0])}function aJ(t){const e={},n=Object.keys(t);let r;const s=n.length;let i;for(r=0;r=n.length;return a=!a&&je.isArray(s)?s.length:a,c?(je.hasOwnProp(s,a)?s[a]=[s[a],r]:s[a]=r,!o):((!s[a]||!je.isObject(s[a]))&&(s[a]=[]),e(n,r,s[a],i)&&je.isArray(s[a])&&(s[a]=aJ(s[a])),!o)}if(je.isFormData(t)&&je.isFunction(t.entries)){const n={};return je.forEachEntry(t,(r,s)=>{e(iJ(r),s,n,0)}),n}return null}function lJ(t,e,n){if(je.isString(t))try{return(e||JSON.parse)(t),je.trim(t)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(t)}const $0={transitional:Oz,adapter:["xhr","http","fetch"],transformRequest:[function(e,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,i=je.isObject(e);if(i&&je.isHTMLForm(e)&&(e=new FormData(e)),je.isFormData(e))return s?JSON.stringify(Nz(e)):e;if(je.isArrayBuffer(e)||je.isBuffer(e)||je.isStream(e)||je.isFile(e)||je.isBlob(e)||je.isReadableStream(e))return e;if(je.isArrayBufferView(e))return e.buffer;if(je.isURLSearchParams(e))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let o;if(i){if(r.indexOf("application/x-www-form-urlencoded")>-1)return sJ(e,this.formSerializer).toString();if((o=je.isFileList(e))||r.indexOf("multipart/form-data")>-1){const c=this.env&&this.env.FormData;return Bv(o?{"files[]":e}:e,c&&new c,this.formSerializer)}}return i||s?(n.setContentType("application/json",!1),lJ(e)):e}],transformResponse:[function(e){const n=this.transitional||$0.transitional,r=n&&n.forcedJSONParsing,s=this.responseType==="json";if(je.isResponse(e)||je.isReadableStream(e))return e;if(e&&je.isString(e)&&(r&&!this.responseType||s)){const a=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(e,this.parseReviver)}catch(o){if(a)throw o.name==="SyntaxError"?Ht.from(o,Ht.ERR_BAD_RESPONSE,this,null,this.response):o}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Ns.classes.FormData,Blob:Ns.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};je.forEach(["delete","get","head","post","put","patch"],t=>{$0.headers[t]={}});const oJ=je.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"]),cJ=t=>{const e={};let n,r,s;return t&&t.split(` -`).forEach(function(a){s=a.indexOf(":"),n=a.substring(0,s).trim().toLowerCase(),r=a.substring(s+1).trim(),!(!n||e[n]&&oJ[n])&&(n==="set-cookie"?e[n]?e[n].push(r):e[n]=[r]:e[n]=e[n]?e[n]+", "+r:r)}),e},KC=Symbol("internals");function Xf(t){return t&&String(t).trim().toLowerCase()}function Zx(t){return t===!1||t==null?t:je.isArray(t)?t.map(Zx):String(t)}function uJ(t){const e=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(t);)e[r[1]]=r[2];return e}const dJ=t=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function lw(t,e,n,r,s){if(je.isFunction(r))return r.call(this,e,n);if(s&&(e=n),!!je.isString(e)){if(je.isString(r))return e.indexOf(r)!==-1;if(je.isRegExp(r))return r.test(e)}}function hJ(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,n,r)=>n.toUpperCase()+r)}function fJ(t,e){const n=je.toCamelCase(" "+e);["get","set","has"].forEach(r=>{Object.defineProperty(t,r+n,{value:function(s,i,a){return this[r].call(this,e,s,i,a)},configurable:!0})})}let ii=class{constructor(e){e&&this.set(e)}set(e,n,r){const s=this;function i(o,c,h){const f=Xf(c);if(!f)throw new Error("header name must be a non-empty string");const m=je.findKey(s,f);(!m||s[m]===void 0||h===!0||h===void 0&&s[m]!==!1)&&(s[m||c]=Zx(o))}const a=(o,c)=>je.forEach(o,(h,f)=>i(h,f,c));if(je.isPlainObject(e)||e instanceof this.constructor)a(e,n);else if(je.isString(e)&&(e=e.trim())&&!dJ(e))a(cJ(e),n);else if(je.isObject(e)&&je.isIterable(e)){let o={},c,h;for(const f of e){if(!je.isArray(f))throw TypeError("Object iterator must return a key-value pair");o[h=f[0]]=(c=o[h])?je.isArray(c)?[...c,f[1]]:[c,f[1]]:f[1]}a(o,n)}else e!=null&&i(n,e,r);return this}get(e,n){if(e=Xf(e),e){const r=je.findKey(this,e);if(r){const s=this[r];if(!n)return s;if(n===!0)return uJ(s);if(je.isFunction(n))return n.call(this,s,r);if(je.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,n){if(e=Xf(e),e){const r=je.findKey(this,e);return!!(r&&this[r]!==void 0&&(!n||lw(this,this[r],r,n)))}return!1}delete(e,n){const r=this;let s=!1;function i(a){if(a=Xf(a),a){const o=je.findKey(r,a);o&&(!n||lw(r,r[o],o,n))&&(delete r[o],s=!0)}}return je.isArray(e)?e.forEach(i):i(e),s}clear(e){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const i=n[r];(!e||lw(this,this[i],i,e,!0))&&(delete this[i],s=!0)}return s}normalize(e){const n=this,r={};return je.forEach(this,(s,i)=>{const a=je.findKey(r,i);if(a){n[a]=Zx(s),delete n[i];return}const o=e?hJ(i):String(i).trim();o!==i&&delete n[i],n[o]=Zx(s),r[o]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const n=Object.create(null);return je.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=e&&je.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,n])=>e+": "+n).join(` -`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...n){const r=new this(e);return n.forEach(s=>r.set(s)),r}static accessor(e){const r=(this[KC]=this[KC]={accessors:{}}).accessors,s=this.prototype;function i(a){const o=Xf(a);r[o]||(fJ(s,a),r[o]=!0)}return je.isArray(e)?e.forEach(i):i(e),this}};ii.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);je.reduceDescriptors(ii.prototype,({value:t},e)=>{let n=e[0].toUpperCase()+e.slice(1);return{get:()=>t,set(r){this[n]=r}}});je.freezeMethods(ii);function ow(t,e){const n=this||$0,r=e||n,s=ii.from(r.headers);let i=r.data;return je.forEach(t,function(o){i=o.call(n,i,s.normalize(),e?e.status:void 0)}),s.normalize(),i}function Cz(t){return!!(t&&t.__CANCEL__)}function zh(t,e,n){Ht.call(this,t??"canceled",Ht.ERR_CANCELED,e,n),this.name="CanceledError"}je.inherits(zh,Ht,{__CANCEL__:!0});function Tz(t,e,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?t(n):e(new Ht("Request failed with status code "+n.status,[Ht.ERR_BAD_REQUEST,Ht.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function mJ(t){const e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return e&&e[1]||""}function pJ(t,e){t=t||10;const n=new Array(t),r=new Array(t);let s=0,i=0,a;return e=e!==void 0?e:1e3,function(c){const h=Date.now(),f=r[i];a||(a=h),n[s]=c,r[s]=h;let m=i,g=0;for(;m!==s;)g+=n[m++],m=m%t;if(s=(s+1)%t,s===i&&(i=(i+1)%t),h-a{n=f,s=null,i&&(clearTimeout(i),i=null),t(...h)};return[(...h)=>{const f=Date.now(),m=f-n;m>=r?a(h,f):(s=h,i||(i=setTimeout(()=>{i=null,a(s)},r-m)))},()=>s&&a(s)]}const T1=(t,e,n=3)=>{let r=0;const s=pJ(50,250);return gJ(i=>{const a=i.loaded,o=i.lengthComputable?i.total:void 0,c=a-r,h=s(c),f=a<=o;r=a;const m={loaded:a,total:o,progress:o?a/o:void 0,bytes:c,rate:h||void 0,estimated:h&&o&&f?(o-a)/h:void 0,event:i,lengthComputable:o!=null,[e?"download":"upload"]:!0};t(m)},n)},ZC=(t,e)=>{const n=t!=null;return[r=>e[0]({lengthComputable:n,total:t,loaded:r}),e[1]]},JC=t=>(...e)=>je.asap(()=>t(...e)),xJ=Ns.hasStandardBrowserEnv?((t,e)=>n=>(n=new URL(n,Ns.origin),t.protocol===n.protocol&&t.host===n.host&&(e||t.port===n.port)))(new URL(Ns.origin),Ns.navigator&&/(msie|trident)/i.test(Ns.navigator.userAgent)):()=>!0,vJ=Ns.hasStandardBrowserEnv?{write(t,e,n,r,s,i,a){if(typeof document>"u")return;const o=[`${t}=${encodeURIComponent(e)}`];je.isNumber(n)&&o.push(`expires=${new Date(n).toUTCString()}`),je.isString(r)&&o.push(`path=${r}`),je.isString(s)&&o.push(`domain=${s}`),i===!0&&o.push("secure"),je.isString(a)&&o.push(`SameSite=${a}`),document.cookie=o.join("; ")},read(t){if(typeof document>"u")return null;const e=document.cookie.match(new RegExp("(?:^|; )"+t+"=([^;]*)"));return e?decodeURIComponent(e[1]):null},remove(t){this.write(t,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function yJ(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}function bJ(t,e){return e?t.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):t}function Ez(t,e,n){let r=!yJ(e);return t&&(r||n==!1)?bJ(t,e):e}const e9=t=>t instanceof ii?{...t}:t;function Eu(t,e){e=e||{};const n={};function r(h,f,m,g){return je.isPlainObject(h)&&je.isPlainObject(f)?je.merge.call({caseless:g},h,f):je.isPlainObject(f)?je.merge({},f):je.isArray(f)?f.slice():f}function s(h,f,m,g){if(je.isUndefined(f)){if(!je.isUndefined(h))return r(void 0,h,m,g)}else return r(h,f,m,g)}function i(h,f){if(!je.isUndefined(f))return r(void 0,f)}function a(h,f){if(je.isUndefined(f)){if(!je.isUndefined(h))return r(void 0,h)}else return r(void 0,f)}function o(h,f,m){if(m in e)return r(h,f);if(m in t)return r(void 0,h)}const c={url:i,method:i,data:i,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:o,headers:(h,f,m)=>s(e9(h),e9(f),m,!0)};return je.forEach(Object.keys({...t,...e}),function(f){const m=c[f]||s,g=m(t[f],e[f],f);je.isUndefined(g)&&m!==o||(n[f]=g)}),n}const _z=t=>{const e=Eu({},t);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:i,headers:a,auth:o}=e;if(e.headers=a=ii.from(a),e.url=jz(Ez(e.baseURL,e.url,e.allowAbsoluteUrls),t.params,t.paramsSerializer),o&&a.set("Authorization","Basic "+btoa((o.username||"")+":"+(o.password?unescape(encodeURIComponent(o.password)):""))),je.isFormData(n)){if(Ns.hasStandardBrowserEnv||Ns.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if(je.isFunction(n.getHeaders)){const c=n.getHeaders(),h=["content-type","content-length"];Object.entries(c).forEach(([f,m])=>{h.includes(f.toLowerCase())&&a.set(f,m)})}}if(Ns.hasStandardBrowserEnv&&(r&&je.isFunction(r)&&(r=r(e)),r||r!==!1&&xJ(e.url))){const c=s&&i&&vJ.read(i);c&&a.set(s,c)}return e},wJ=typeof XMLHttpRequest<"u",SJ=wJ&&function(t){return new Promise(function(n,r){const s=_z(t);let i=s.data;const a=ii.from(s.headers).normalize();let{responseType:o,onUploadProgress:c,onDownloadProgress:h}=s,f,m,g,x,y;function w(){x&&x(),y&&y(),s.cancelToken&&s.cancelToken.unsubscribe(f),s.signal&&s.signal.removeEventListener("abort",f)}let S=new XMLHttpRequest;S.open(s.method.toUpperCase(),s.url,!0),S.timeout=s.timeout;function k(){if(!S)return;const C=ii.from("getAllResponseHeaders"in S&&S.getAllResponseHeaders()),_={data:!o||o==="text"||o==="json"?S.responseText:S.response,status:S.status,statusText:S.statusText,headers:C,config:t,request:S};Tz(function(M){n(M),w()},function(M){r(M),w()},_),S=null}"onloadend"in S?S.onloadend=k:S.onreadystatechange=function(){!S||S.readyState!==4||S.status===0&&!(S.responseURL&&S.responseURL.indexOf("file:")===0)||setTimeout(k)},S.onabort=function(){S&&(r(new Ht("Request aborted",Ht.ECONNABORTED,t,S)),S=null)},S.onerror=function(T){const _=T&&T.message?T.message:"Network Error",E=new Ht(_,Ht.ERR_NETWORK,t,S);E.event=T||null,r(E),S=null},S.ontimeout=function(){let T=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const _=s.transitional||Oz;s.timeoutErrorMessage&&(T=s.timeoutErrorMessage),r(new Ht(T,_.clarifyTimeoutError?Ht.ETIMEDOUT:Ht.ECONNABORTED,t,S)),S=null},i===void 0&&a.setContentType(null),"setRequestHeader"in S&&je.forEach(a.toJSON(),function(T,_){S.setRequestHeader(_,T)}),je.isUndefined(s.withCredentials)||(S.withCredentials=!!s.withCredentials),o&&o!=="json"&&(S.responseType=s.responseType),h&&([g,y]=T1(h,!0),S.addEventListener("progress",g)),c&&S.upload&&([m,x]=T1(c),S.upload.addEventListener("progress",m),S.upload.addEventListener("loadend",x)),(s.cancelToken||s.signal)&&(f=C=>{S&&(r(!C||C.type?new zh(null,t,S):C),S.abort(),S=null)},s.cancelToken&&s.cancelToken.subscribe(f),s.signal&&(s.signal.aborted?f():s.signal.addEventListener("abort",f)));const N=mJ(s.url);if(N&&Ns.protocols.indexOf(N)===-1){r(new Ht("Unsupported protocol "+N+":",Ht.ERR_BAD_REQUEST,t));return}S.send(i||null)})},kJ=(t,e)=>{const{length:n}=t=t?t.filter(Boolean):[];if(e||n){let r=new AbortController,s;const i=function(h){if(!s){s=!0,o();const f=h instanceof Error?h:this.reason;r.abort(f instanceof Ht?f:new zh(f instanceof Error?f.message:f))}};let a=e&&setTimeout(()=>{a=null,i(new Ht(`timeout ${e} of ms exceeded`,Ht.ETIMEDOUT))},e);const o=()=>{t&&(a&&clearTimeout(a),a=null,t.forEach(h=>{h.unsubscribe?h.unsubscribe(i):h.removeEventListener("abort",i)}),t=null)};t.forEach(h=>h.addEventListener("abort",i));const{signal:c}=r;return c.unsubscribe=()=>je.asap(o),c}},jJ=function*(t,e){let n=t.byteLength;if(n{const s=OJ(t,e);let i=0,a,o=c=>{a||(a=!0,r&&r(c))};return new ReadableStream({async pull(c){try{const{done:h,value:f}=await s.next();if(h){o(),c.close();return}let m=f.byteLength;if(n){let g=i+=m;n(g)}c.enqueue(new Uint8Array(f))}catch(h){throw o(h),h}},cancel(c){return o(c),s.return()}},{highWaterMark:2})},n9=64*1024,{isFunction:Gg}=je,CJ=(({Request:t,Response:e})=>({Request:t,Response:e}))(je.global),{ReadableStream:r9,TextEncoder:s9}=je.global,i9=(t,...e)=>{try{return!!t(...e)}catch{return!1}},TJ=t=>{t=je.merge.call({skipUndefined:!0},CJ,t);const{fetch:e,Request:n,Response:r}=t,s=e?Gg(e):typeof fetch=="function",i=Gg(n),a=Gg(r);if(!s)return!1;const o=s&&Gg(r9),c=s&&(typeof s9=="function"?(y=>w=>y.encode(w))(new s9):async y=>new Uint8Array(await new n(y).arrayBuffer())),h=i&&o&&i9(()=>{let y=!1;const w=new n(Ns.origin,{body:new r9,method:"POST",get duplex(){return y=!0,"half"}}).headers.has("Content-Type");return y&&!w}),f=a&&o&&i9(()=>je.isReadableStream(new r("").body)),m={stream:f&&(y=>y.body)};s&&["text","arrayBuffer","blob","formData","stream"].forEach(y=>{!m[y]&&(m[y]=(w,S)=>{let k=w&&w[y];if(k)return k.call(w);throw new Ht(`Response type '${y}' is not supported`,Ht.ERR_NOT_SUPPORT,S)})});const g=async y=>{if(y==null)return 0;if(je.isBlob(y))return y.size;if(je.isSpecCompliantForm(y))return(await new n(Ns.origin,{method:"POST",body:y}).arrayBuffer()).byteLength;if(je.isArrayBufferView(y)||je.isArrayBuffer(y))return y.byteLength;if(je.isURLSearchParams(y)&&(y=y+""),je.isString(y))return(await c(y)).byteLength},x=async(y,w)=>{const S=je.toFiniteNumber(y.getContentLength());return S??g(w)};return async y=>{let{url:w,method:S,data:k,signal:N,cancelToken:C,timeout:T,onDownloadProgress:_,onUploadProgress:E,responseType:M,headers:L,withCredentials:P="same-origin",fetchOptions:I}=_z(y),Q=e||fetch;M=M?(M+"").toLowerCase():"text";let U=kJ([N,C&&C.toAbortSignal()],T),ee=null;const z=U&&U.unsubscribe&&(()=>{U.unsubscribe()});let H;try{if(E&&h&&S!=="get"&&S!=="head"&&(H=await x(L,k))!==0){let se=new n(w,{method:"POST",body:k,duplex:"half"}),W;if(je.isFormData(k)&&(W=se.headers.get("content-type"))&&L.setContentType(W),se.body){const[F,V]=ZC(H,T1(JC(E)));k=t9(se.body,n9,F,V)}}je.isString(P)||(P=P?"include":"omit");const B=i&&"credentials"in n.prototype,X={...I,signal:U,method:S.toUpperCase(),headers:L.normalize().toJSON(),body:k,duplex:"half",credentials:B?P:void 0};ee=i&&new n(w,X);let J=await(i?Q(ee,I):Q(w,X));const G=f&&(M==="stream"||M==="response");if(f&&(_||G&&z)){const se={};["status","statusText","headers"].forEach(te=>{se[te]=J[te]});const W=je.toFiniteNumber(J.headers.get("content-length")),[F,V]=_&&ZC(W,T1(JC(_),!0))||[];J=new r(t9(J.body,n9,F,()=>{V&&V(),z&&z()}),se)}M=M||"text";let R=await m[je.findKey(m,M)||"text"](J,y);return!G&&z&&z(),await new Promise((se,W)=>{Tz(se,W,{data:R,headers:ii.from(J.headers),status:J.status,statusText:J.statusText,config:y,request:ee})})}catch(B){throw z&&z(),B&&B.name==="TypeError"&&/Load failed|fetch/i.test(B.message)?Object.assign(new Ht("Network Error",Ht.ERR_NETWORK,y,ee),{cause:B.cause||B}):Ht.from(B,B&&B.code,y,ee)}}},EJ=new Map,Mz=t=>{let e=t&&t.env||{};const{fetch:n,Request:r,Response:s}=e,i=[r,s,n];let a=i.length,o=a,c,h,f=EJ;for(;o--;)c=i[o],h=f.get(c),h===void 0&&f.set(c,h=o?new Map:TJ(e)),f=h;return h};Mz();const d6={http:UZ,xhr:SJ,fetch:{get:Mz}};je.forEach(d6,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{value:e})}catch{}Object.defineProperty(t,"adapterName",{value:e})}});const a9=t=>`- ${t}`,_J=t=>je.isFunction(t)||t===null||t===!1;function MJ(t,e){t=je.isArray(t)?t:[t];const{length:n}=t;let r,s;const i={};for(let a=0;a`adapter ${c} `+(h===!1?"is not supported by the environment":"is not available in the build"));let o=n?a.length>1?`since : -`+a.map(a9).join(` -`):" "+a9(a[0]):"as no adapter specified";throw new Ht("There is no suitable adapter to dispatch the request "+o,"ERR_NOT_SUPPORT")}return s}const Az={getAdapter:MJ,adapters:d6};function cw(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new zh(null,t)}function l9(t){return cw(t),t.headers=ii.from(t.headers),t.data=ow.call(t,t.transformRequest),["post","put","patch"].indexOf(t.method)!==-1&&t.headers.setContentType("application/x-www-form-urlencoded",!1),Az.getAdapter(t.adapter||$0.adapter,t)(t).then(function(r){return cw(t),r.data=ow.call(t,t.transformResponse,r),r.headers=ii.from(r.headers),r},function(r){return Cz(r)||(cw(t),r&&r.response&&(r.response.data=ow.call(t,t.transformResponse,r.response),r.response.headers=ii.from(r.response.headers))),Promise.reject(r)})}const Rz="1.13.2",qv={};["object","boolean","number","function","string","symbol"].forEach((t,e)=>{qv[t]=function(r){return typeof r===t||"a"+(e<1?"n ":" ")+t}});const o9={};qv.transitional=function(e,n,r){function s(i,a){return"[Axios v"+Rz+"] Transitional option '"+i+"'"+a+(r?". "+r:"")}return(i,a,o)=>{if(e===!1)throw new Ht(s(a," has been removed"+(n?" in "+n:"")),Ht.ERR_DEPRECATED);return n&&!o9[a]&&(o9[a]=!0,console.warn(s(a," has been deprecated since v"+n+" and will be removed in the near future"))),e?e(i,a,o):!0}};qv.spelling=function(e){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${e}`),!0)};function AJ(t,e,n){if(typeof t!="object")throw new Ht("options must be an object",Ht.ERR_BAD_OPTION_VALUE);const r=Object.keys(t);let s=r.length;for(;s-- >0;){const i=r[s],a=e[i];if(a){const o=t[i],c=o===void 0||a(o,i,t);if(c!==!0)throw new Ht("option "+i+" must be "+c,Ht.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new Ht("Unknown option "+i,Ht.ERR_BAD_OPTION)}}const Jx={assertOptions:AJ,validators:qv},Ha=Jx.validators;let ku=class{constructor(e){this.defaults=e||{},this.interceptors={request:new YC,response:new YC}}async request(e,n){try{return await this._request(e,n)}catch(r){if(r instanceof Error){let s={};Error.captureStackTrace?Error.captureStackTrace(s):s=new Error;const i=s.stack?s.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(e,n){typeof e=="string"?(n=n||{},n.url=e):n=e||{},n=Eu(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:i}=n;r!==void 0&&Jx.assertOptions(r,{silentJSONParsing:Ha.transitional(Ha.boolean),forcedJSONParsing:Ha.transitional(Ha.boolean),clarifyTimeoutError:Ha.transitional(Ha.boolean)},!1),s!=null&&(je.isFunction(s)?n.paramsSerializer={serialize:s}:Jx.assertOptions(s,{encode:Ha.function,serialize:Ha.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),Jx.assertOptions(n,{baseUrl:Ha.spelling("baseURL"),withXsrfToken:Ha.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let a=i&&je.merge(i.common,i[n.method]);i&&je.forEach(["delete","get","head","post","put","patch","common"],y=>{delete i[y]}),n.headers=ii.concat(a,i);const o=[];let c=!0;this.interceptors.request.forEach(function(w){typeof w.runWhen=="function"&&w.runWhen(n)===!1||(c=c&&w.synchronous,o.unshift(w.fulfilled,w.rejected))});const h=[];this.interceptors.response.forEach(function(w){h.push(w.fulfilled,w.rejected)});let f,m=0,g;if(!c){const y=[l9.bind(this),void 0];for(y.unshift(...o),y.push(...h),g=y.length,f=Promise.resolve(n);m{if(!r._listeners)return;let i=r._listeners.length;for(;i-- >0;)r._listeners[i](s);r._listeners=null}),this.promise.then=s=>{let i;const a=new Promise(o=>{r.subscribe(o),i=o}).then(s);return a.cancel=function(){r.unsubscribe(i)},a},e(function(i,a,o){r.reason||(r.reason=new zh(i,a,o),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const n=this._listeners.indexOf(e);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const e=new AbortController,n=r=>{e.abort(r)};return this.subscribe(n),e.signal.unsubscribe=()=>this.unsubscribe(n),e.signal}static source(){let e;return{token:new Dz(function(s){e=s}),cancel:e}}};function DJ(t){return function(n){return t.apply(null,n)}}function zJ(t){return je.isObject(t)&&t.isAxiosError===!0}const F3={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,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(F3).forEach(([t,e])=>{F3[e]=t});function zz(t){const e=new ku(t),n=hz(ku.prototype.request,e);return je.extend(n,ku.prototype,e,{allOwnKeys:!0}),je.extend(n,e,null,{allOwnKeys:!0}),n.create=function(s){return zz(Eu(t,s))},n}const kr=zz($0);kr.Axios=ku;kr.CanceledError=zh;kr.CancelToken=RJ;kr.isCancel=Cz;kr.VERSION=Rz;kr.toFormData=Bv;kr.AxiosError=Ht;kr.Cancel=kr.CanceledError;kr.all=function(e){return Promise.all(e)};kr.spread=DJ;kr.isAxiosError=zJ;kr.mergeConfig=Eu;kr.AxiosHeaders=ii;kr.formToJSON=t=>Nz(je.isHTMLForm(t)?new FormData(t):t);kr.getAdapter=Az.getAdapter;kr.HttpStatusCode=F3;kr.default=kr;const{Axios:YTe,AxiosError:KTe,CanceledError:ZTe,isCancel:JTe,CancelToken:eEe,VERSION:tEe,all:nEe,Cancel:rEe,isAxiosError:sEe,spread:iEe,toFormData:aEe,AxiosHeaders:lEe,HttpStatusCode:oEe,formToJSON:cEe,getAdapter:uEe,mergeConfig:dEe}=kr,PJ=(t,e)=>{const n=new Array(t.length+e.length);for(let r=0;r({classGroupId:t,validator:e}),Pz=(t=new Map,e=null,n)=>({nextPart:t,validators:e,classGroupId:n}),E1="-",c9=[],IJ="arbitrary..",BJ=t=>{const e=FJ(t),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=t;return{getClassGroupId:a=>{if(a.startsWith("[")&&a.endsWith("]"))return qJ(a);const o=a.split(E1),c=o[0]===""&&o.length>1?1:0;return Lz(o,c,e)},getConflictingClassGroupIds:(a,o)=>{if(o){const c=r[a],h=n[a];return c?h?PJ(h,c):c:h||c9}return n[a]||c9}}},Lz=(t,e,n)=>{if(t.length-e===0)return n.classGroupId;const s=t[e],i=n.nextPart.get(s);if(i){const h=Lz(t,e+1,i);if(h)return h}const a=n.validators;if(a===null)return;const o=e===0?t.join(E1):t.slice(e).join(E1),c=a.length;for(let h=0;ht.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const e=t.slice(1,-1),n=e.indexOf(":"),r=e.slice(0,n);return r?IJ+r:void 0})(),FJ=t=>{const{theme:e,classGroups:n}=t;return $J(n,e)},$J=(t,e)=>{const n=Pz();for(const r in t){const s=t[r];h6(s,n,r,e)}return n},h6=(t,e,n,r)=>{const s=t.length;for(let i=0;i{if(typeof t=="string"){HJ(t,e,n);return}if(typeof t=="function"){VJ(t,e,n,r);return}UJ(t,e,n,r)},HJ=(t,e,n)=>{const r=t===""?e:Iz(e,t);r.classGroupId=n},VJ=(t,e,n,r)=>{if(WJ(t)){h6(t(r),e,n,r);return}e.validators===null&&(e.validators=[]),e.validators.push(LJ(n,t))},UJ=(t,e,n,r)=>{const s=Object.entries(t),i=s.length;for(let a=0;a{let n=t;const r=e.split(E1),s=r.length;for(let i=0;i"isThemeGetter"in t&&t.isThemeGetter===!0,GJ=t=>{if(t<1)return{get:()=>{},set:()=>{}};let e=0,n=Object.create(null),r=Object.create(null);const s=(i,a)=>{n[i]=a,e++,e>t&&(e=0,r=n,n=Object.create(null))};return{get(i){let a=n[i];if(a!==void 0)return a;if((a=r[i])!==void 0)return s(i,a),a},set(i,a){i in n?n[i]=a:s(i,a)}}},$3="!",u9=":",XJ=[],d9=(t,e,n,r,s)=>({modifiers:t,hasImportantModifier:e,baseClassName:n,maybePostfixModifierPosition:r,isExternal:s}),YJ=t=>{const{prefix:e,experimentalParseClassName:n}=t;let r=s=>{const i=[];let a=0,o=0,c=0,h;const f=s.length;for(let w=0;wc?h-c:void 0;return d9(i,x,g,y)};if(e){const s=e+u9,i=r;r=a=>a.startsWith(s)?i(a.slice(s.length)):d9(XJ,!1,a,void 0,!0)}if(n){const s=r;r=i=>n({className:i,parseClassName:s})}return r},KJ=t=>{const e=new Map;return t.orderSensitiveModifiers.forEach((n,r)=>{e.set(n,1e6+r)}),n=>{const r=[];let s=[];for(let i=0;i0&&(s.sort(),r.push(...s),s=[]),r.push(a)):s.push(a)}return s.length>0&&(s.sort(),r.push(...s)),r}},ZJ=t=>({cache:GJ(t.cacheSize),parseClassName:YJ(t),sortModifiers:KJ(t),...BJ(t)}),JJ=/\s+/,eee=(t,e)=>{const{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:s,sortModifiers:i}=e,a=[],o=t.trim().split(JJ);let c="";for(let h=o.length-1;h>=0;h-=1){const f=o[h],{isExternal:m,modifiers:g,hasImportantModifier:x,baseClassName:y,maybePostfixModifierPosition:w}=n(f);if(m){c=f+(c.length>0?" "+c:c);continue}let S=!!w,k=r(S?y.substring(0,w):y);if(!k){if(!S){c=f+(c.length>0?" "+c:c);continue}if(k=r(y),!k){c=f+(c.length>0?" "+c:c);continue}S=!1}const N=g.length===0?"":g.length===1?g[0]:i(g).join(":"),C=x?N+$3:N,T=C+k;if(a.indexOf(T)>-1)continue;a.push(T);const _=s(k,S);for(let E=0;E<_.length;++E){const M=_[E];a.push(C+M)}c=f+(c.length>0?" "+c:c)}return c},tee=(...t)=>{let e=0,n,r,s="";for(;e{if(typeof t=="string")return t;let e,n="";for(let r=0;r{let n,r,s,i;const a=c=>{const h=e.reduce((f,m)=>m(f),t());return n=ZJ(h),r=n.cache.get,s=n.cache.set,i=o,o(c)},o=c=>{const h=r(c);if(h)return h;const f=eee(c,n);return s(c,f),f};return i=a,(...c)=>i(tee(...c))},ree=[],Yr=t=>{const e=n=>n[t]||ree;return e.isThemeGetter=!0,e},qz=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Fz=/^\((?:(\w[\w-]*):)?(.+)\)$/i,see=/^\d+\/\d+$/,iee=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,aee=/\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$/,lee=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,oee=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,cee=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,Td=t=>see.test(t),Xt=t=>!!t&&!Number.isNaN(Number(t)),Zo=t=>!!t&&Number.isInteger(Number(t)),uw=t=>t.endsWith("%")&&Xt(t.slice(0,-1)),Vl=t=>iee.test(t),uee=()=>!0,dee=t=>aee.test(t)&&!lee.test(t),$z=()=>!1,hee=t=>oee.test(t),fee=t=>cee.test(t),mee=t=>!ot(t)&&!ct(t),pee=t=>Ph(t,Vz,$z),ot=t=>qz.test(t),ru=t=>Ph(t,Uz,dee),dw=t=>Ph(t,bee,Xt),h9=t=>Ph(t,Qz,$z),gee=t=>Ph(t,Hz,fee),Xg=t=>Ph(t,Wz,hee),ct=t=>Fz.test(t),Yf=t=>Lh(t,Uz),xee=t=>Lh(t,wee),f9=t=>Lh(t,Qz),vee=t=>Lh(t,Vz),yee=t=>Lh(t,Hz),Yg=t=>Lh(t,Wz,!0),Ph=(t,e,n)=>{const r=qz.exec(t);return r?r[1]?e(r[1]):n(r[2]):!1},Lh=(t,e,n=!1)=>{const r=Fz.exec(t);return r?r[1]?e(r[1]):n:!1},Qz=t=>t==="position"||t==="percentage",Hz=t=>t==="image"||t==="url",Vz=t=>t==="length"||t==="size"||t==="bg-size",Uz=t=>t==="length",bee=t=>t==="number",wee=t=>t==="family-name",Wz=t=>t==="shadow",See=()=>{const t=Yr("color"),e=Yr("font"),n=Yr("text"),r=Yr("font-weight"),s=Yr("tracking"),i=Yr("leading"),a=Yr("breakpoint"),o=Yr("container"),c=Yr("spacing"),h=Yr("radius"),f=Yr("shadow"),m=Yr("inset-shadow"),g=Yr("text-shadow"),x=Yr("drop-shadow"),y=Yr("blur"),w=Yr("perspective"),S=Yr("aspect"),k=Yr("ease"),N=Yr("animate"),C=()=>["auto","avoid","all","avoid-page","page","left","right","column"],T=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],_=()=>[...T(),ct,ot],E=()=>["auto","hidden","clip","visible","scroll"],M=()=>["auto","contain","none"],L=()=>[ct,ot,c],P=()=>[Td,"full","auto",...L()],I=()=>[Zo,"none","subgrid",ct,ot],Q=()=>["auto",{span:["full",Zo,ct,ot]},Zo,ct,ot],U=()=>[Zo,"auto",ct,ot],ee=()=>["auto","min","max","fr",ct,ot],z=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],H=()=>["start","end","center","stretch","center-safe","end-safe"],B=()=>["auto",...L()],X=()=>[Td,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...L()],J=()=>[t,ct,ot],G=()=>[...T(),f9,h9,{position:[ct,ot]}],R=()=>["no-repeat",{repeat:["","x","y","space","round"]}],se=()=>["auto","cover","contain",vee,pee,{size:[ct,ot]}],W=()=>[uw,Yf,ru],F=()=>["","none","full",h,ct,ot],V=()=>["",Xt,Yf,ru],te=()=>["solid","dashed","dotted","double"],ne=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],K=()=>[Xt,uw,f9,h9],ie=()=>["","none",y,ct,ot],re=()=>["none",Xt,ct,ot],ae=()=>["none",Xt,ct,ot],_e=()=>[Xt,ct,ot],Ue=()=>[Td,"full",...L()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[Vl],breakpoint:[Vl],color:[uee],container:[Vl],"drop-shadow":[Vl],ease:["in","out","in-out"],font:[mee],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[Vl],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[Vl],shadow:[Vl],spacing:["px",Xt],text:[Vl],"text-shadow":[Vl],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",Td,ot,ct,S]}],container:["container"],columns:[{columns:[Xt,ot,ct,o]}],"break-after":[{"break-after":C()}],"break-before":[{"break-before":C()}],"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:_()}],overflow:[{overflow:E()}],"overflow-x":[{"overflow-x":E()}],"overflow-y":[{"overflow-y":E()}],overscroll:[{overscroll:M()}],"overscroll-x":[{"overscroll-x":M()}],"overscroll-y":[{"overscroll-y":M()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:P()}],"inset-x":[{"inset-x":P()}],"inset-y":[{"inset-y":P()}],start:[{start:P()}],end:[{end:P()}],top:[{top:P()}],right:[{right:P()}],bottom:[{bottom:P()}],left:[{left:P()}],visibility:["visible","invisible","collapse"],z:[{z:[Zo,"auto",ct,ot]}],basis:[{basis:[Td,"full","auto",o,...L()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[Xt,Td,"auto","initial","none",ot]}],grow:[{grow:["",Xt,ct,ot]}],shrink:[{shrink:["",Xt,ct,ot]}],order:[{order:[Zo,"first","last","none",ct,ot]}],"grid-cols":[{"grid-cols":I()}],"col-start-end":[{col:Q()}],"col-start":[{"col-start":U()}],"col-end":[{"col-end":U()}],"grid-rows":[{"grid-rows":I()}],"row-start-end":[{row:Q()}],"row-start":[{"row-start":U()}],"row-end":[{"row-end":U()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":ee()}],"auto-rows":[{"auto-rows":ee()}],gap:[{gap:L()}],"gap-x":[{"gap-x":L()}],"gap-y":[{"gap-y":L()}],"justify-content":[{justify:[...z(),"normal"]}],"justify-items":[{"justify-items":[...H(),"normal"]}],"justify-self":[{"justify-self":["auto",...H()]}],"align-content":[{content:["normal",...z()]}],"align-items":[{items:[...H(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...H(),{baseline:["","last"]}]}],"place-content":[{"place-content":z()}],"place-items":[{"place-items":[...H(),"baseline"]}],"place-self":[{"place-self":["auto",...H()]}],p:[{p:L()}],px:[{px:L()}],py:[{py:L()}],ps:[{ps:L()}],pe:[{pe:L()}],pt:[{pt:L()}],pr:[{pr:L()}],pb:[{pb:L()}],pl:[{pl:L()}],m:[{m:B()}],mx:[{mx:B()}],my:[{my:B()}],ms:[{ms:B()}],me:[{me:B()}],mt:[{mt:B()}],mr:[{mr:B()}],mb:[{mb:B()}],ml:[{ml:B()}],"space-x":[{"space-x":L()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":L()}],"space-y-reverse":["space-y-reverse"],size:[{size:X()}],w:[{w:[o,"screen",...X()]}],"min-w":[{"min-w":[o,"screen","none",...X()]}],"max-w":[{"max-w":[o,"screen","none","prose",{screen:[a]},...X()]}],h:[{h:["screen","lh",...X()]}],"min-h":[{"min-h":["screen","lh","none",...X()]}],"max-h":[{"max-h":["screen","lh",...X()]}],"font-size":[{text:["base",n,Yf,ru]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,ct,dw]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",uw,ot]}],"font-family":[{font:[xee,ot,e]}],"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:[s,ct,ot]}],"line-clamp":[{"line-clamp":[Xt,"none",ct,dw]}],leading:[{leading:[i,...L()]}],"list-image":[{"list-image":["none",ct,ot]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",ct,ot]}],"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:[...te(),"wavy"]}],"text-decoration-thickness":[{decoration:[Xt,"from-font","auto",ct,ru]}],"text-decoration-color":[{decoration:J()}],"underline-offset":[{"underline-offset":[Xt,"auto",ct,ot]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:L()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",ct,ot]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",ct,ot]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:G()}],"bg-repeat":[{bg:R()}],"bg-size":[{bg:se()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Zo,ct,ot],radial:["",ct,ot],conic:[Zo,ct,ot]},yee,gee]}],"bg-color":[{bg:J()}],"gradient-from-pos":[{from:W()}],"gradient-via-pos":[{via:W()}],"gradient-to-pos":[{to:W()}],"gradient-from":[{from:J()}],"gradient-via":[{via:J()}],"gradient-to":[{to:J()}],rounded:[{rounded:F()}],"rounded-s":[{"rounded-s":F()}],"rounded-e":[{"rounded-e":F()}],"rounded-t":[{"rounded-t":F()}],"rounded-r":[{"rounded-r":F()}],"rounded-b":[{"rounded-b":F()}],"rounded-l":[{"rounded-l":F()}],"rounded-ss":[{"rounded-ss":F()}],"rounded-se":[{"rounded-se":F()}],"rounded-ee":[{"rounded-ee":F()}],"rounded-es":[{"rounded-es":F()}],"rounded-tl":[{"rounded-tl":F()}],"rounded-tr":[{"rounded-tr":F()}],"rounded-br":[{"rounded-br":F()}],"rounded-bl":[{"rounded-bl":F()}],"border-w":[{border:V()}],"border-w-x":[{"border-x":V()}],"border-w-y":[{"border-y":V()}],"border-w-s":[{"border-s":V()}],"border-w-e":[{"border-e":V()}],"border-w-t":[{"border-t":V()}],"border-w-r":[{"border-r":V()}],"border-w-b":[{"border-b":V()}],"border-w-l":[{"border-l":V()}],"divide-x":[{"divide-x":V()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":V()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...te(),"hidden","none"]}],"divide-style":[{divide:[...te(),"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:[...te(),"none","hidden"]}],"outline-offset":[{"outline-offset":[Xt,ct,ot]}],"outline-w":[{outline:["",Xt,Yf,ru]}],"outline-color":[{outline:J()}],shadow:[{shadow:["","none",f,Yg,Xg]}],"shadow-color":[{shadow:J()}],"inset-shadow":[{"inset-shadow":["none",m,Yg,Xg]}],"inset-shadow-color":[{"inset-shadow":J()}],"ring-w":[{ring:V()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:J()}],"ring-offset-w":[{"ring-offset":[Xt,ru]}],"ring-offset-color":[{"ring-offset":J()}],"inset-ring-w":[{"inset-ring":V()}],"inset-ring-color":[{"inset-ring":J()}],"text-shadow":[{"text-shadow":["none",g,Yg,Xg]}],"text-shadow-color":[{"text-shadow":J()}],opacity:[{opacity:[Xt,ct,ot]}],"mix-blend":[{"mix-blend":[...ne(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ne()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[Xt]}],"mask-image-linear-from-pos":[{"mask-linear-from":K()}],"mask-image-linear-to-pos":[{"mask-linear-to":K()}],"mask-image-linear-from-color":[{"mask-linear-from":J()}],"mask-image-linear-to-color":[{"mask-linear-to":J()}],"mask-image-t-from-pos":[{"mask-t-from":K()}],"mask-image-t-to-pos":[{"mask-t-to":K()}],"mask-image-t-from-color":[{"mask-t-from":J()}],"mask-image-t-to-color":[{"mask-t-to":J()}],"mask-image-r-from-pos":[{"mask-r-from":K()}],"mask-image-r-to-pos":[{"mask-r-to":K()}],"mask-image-r-from-color":[{"mask-r-from":J()}],"mask-image-r-to-color":[{"mask-r-to":J()}],"mask-image-b-from-pos":[{"mask-b-from":K()}],"mask-image-b-to-pos":[{"mask-b-to":K()}],"mask-image-b-from-color":[{"mask-b-from":J()}],"mask-image-b-to-color":[{"mask-b-to":J()}],"mask-image-l-from-pos":[{"mask-l-from":K()}],"mask-image-l-to-pos":[{"mask-l-to":K()}],"mask-image-l-from-color":[{"mask-l-from":J()}],"mask-image-l-to-color":[{"mask-l-to":J()}],"mask-image-x-from-pos":[{"mask-x-from":K()}],"mask-image-x-to-pos":[{"mask-x-to":K()}],"mask-image-x-from-color":[{"mask-x-from":J()}],"mask-image-x-to-color":[{"mask-x-to":J()}],"mask-image-y-from-pos":[{"mask-y-from":K()}],"mask-image-y-to-pos":[{"mask-y-to":K()}],"mask-image-y-from-color":[{"mask-y-from":J()}],"mask-image-y-to-color":[{"mask-y-to":J()}],"mask-image-radial":[{"mask-radial":[ct,ot]}],"mask-image-radial-from-pos":[{"mask-radial-from":K()}],"mask-image-radial-to-pos":[{"mask-radial-to":K()}],"mask-image-radial-from-color":[{"mask-radial-from":J()}],"mask-image-radial-to-color":[{"mask-radial-to":J()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":T()}],"mask-image-conic-pos":[{"mask-conic":[Xt]}],"mask-image-conic-from-pos":[{"mask-conic-from":K()}],"mask-image-conic-to-pos":[{"mask-conic-to":K()}],"mask-image-conic-from-color":[{"mask-conic-from":J()}],"mask-image-conic-to-color":[{"mask-conic-to":J()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:G()}],"mask-repeat":[{mask:R()}],"mask-size":[{mask:se()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",ct,ot]}],filter:[{filter:["","none",ct,ot]}],blur:[{blur:ie()}],brightness:[{brightness:[Xt,ct,ot]}],contrast:[{contrast:[Xt,ct,ot]}],"drop-shadow":[{"drop-shadow":["","none",x,Yg,Xg]}],"drop-shadow-color":[{"drop-shadow":J()}],grayscale:[{grayscale:["",Xt,ct,ot]}],"hue-rotate":[{"hue-rotate":[Xt,ct,ot]}],invert:[{invert:["",Xt,ct,ot]}],saturate:[{saturate:[Xt,ct,ot]}],sepia:[{sepia:["",Xt,ct,ot]}],"backdrop-filter":[{"backdrop-filter":["","none",ct,ot]}],"backdrop-blur":[{"backdrop-blur":ie()}],"backdrop-brightness":[{"backdrop-brightness":[Xt,ct,ot]}],"backdrop-contrast":[{"backdrop-contrast":[Xt,ct,ot]}],"backdrop-grayscale":[{"backdrop-grayscale":["",Xt,ct,ot]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[Xt,ct,ot]}],"backdrop-invert":[{"backdrop-invert":["",Xt,ct,ot]}],"backdrop-opacity":[{"backdrop-opacity":[Xt,ct,ot]}],"backdrop-saturate":[{"backdrop-saturate":[Xt,ct,ot]}],"backdrop-sepia":[{"backdrop-sepia":["",Xt,ct,ot]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":L()}],"border-spacing-x":[{"border-spacing-x":L()}],"border-spacing-y":[{"border-spacing-y":L()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",ct,ot]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[Xt,"initial",ct,ot]}],ease:[{ease:["linear","initial",k,ct,ot]}],delay:[{delay:[Xt,ct,ot]}],animate:[{animate:["none",N,ct,ot]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,ct,ot]}],"perspective-origin":[{"perspective-origin":_()}],rotate:[{rotate:re()}],"rotate-x":[{"rotate-x":re()}],"rotate-y":[{"rotate-y":re()}],"rotate-z":[{"rotate-z":re()}],scale:[{scale:ae()}],"scale-x":[{"scale-x":ae()}],"scale-y":[{"scale-y":ae()}],"scale-z":[{"scale-z":ae()}],"scale-3d":["scale-3d"],skew:[{skew:_e()}],"skew-x":[{"skew-x":_e()}],"skew-y":[{"skew-y":_e()}],transform:[{transform:[ct,ot,"","none","gpu","cpu"]}],"transform-origin":[{origin:_()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Ue()}],"translate-x":[{"translate-x":Ue()}],"translate-y":[{"translate-y":Ue()}],"translate-z":[{"translate-z":Ue()}],"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",ct,ot]}],"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":L()}],"scroll-mx":[{"scroll-mx":L()}],"scroll-my":[{"scroll-my":L()}],"scroll-ms":[{"scroll-ms":L()}],"scroll-me":[{"scroll-me":L()}],"scroll-mt":[{"scroll-mt":L()}],"scroll-mr":[{"scroll-mr":L()}],"scroll-mb":[{"scroll-mb":L()}],"scroll-ml":[{"scroll-ml":L()}],"scroll-p":[{"scroll-p":L()}],"scroll-px":[{"scroll-px":L()}],"scroll-py":[{"scroll-py":L()}],"scroll-ps":[{"scroll-ps":L()}],"scroll-pe":[{"scroll-pe":L()}],"scroll-pt":[{"scroll-pt":L()}],"scroll-pr":[{"scroll-pr":L()}],"scroll-pb":[{"scroll-pb":L()}],"scroll-pl":[{"scroll-pl":L()}],"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",ct,ot]}],fill:[{fill:["none",...J()]}],"stroke-w":[{stroke:[Xt,Yf,ru,dw]}],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-x","border-w-y","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-x","border-color-y","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:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},kee=nee(See);function ve(...t){return kee(OD(t))}const Dt=b.forwardRef(({className:t,...e},n)=>l.jsx("div",{ref:n,className:ve("rounded-xl border bg-card text-card-foreground shadow",t),...e}));Dt.displayName="Card";const kn=b.forwardRef(({className:t,...e},n)=>l.jsx("div",{ref:n,className:ve("flex flex-col space-y-1.5 p-6",t),...e}));kn.displayName="CardHeader";const jn=b.forwardRef(({className:t,...e},n)=>l.jsx("div",{ref:n,className:ve("font-semibold leading-none tracking-tight",t),...e}));jn.displayName="CardTitle";const Fr=b.forwardRef(({className:t,...e},n)=>l.jsx("div",{ref:n,className:ve("text-sm text-muted-foreground",t),...e}));Fr.displayName="CardDescription";const Dn=b.forwardRef(({className:t,...e},n)=>l.jsx("div",{ref:n,className:ve("p-6 pt-0",t),...e}));Dn.displayName="CardContent";const Gz=b.forwardRef(({className:t,...e},n)=>l.jsx("div",{ref:n,className:ve("flex items-center p-6 pt-0",t),...e}));Gz.displayName="CardFooter";var hw="rovingFocusGroup.onEntryFocus",jee={bubbles:!1,cancelable:!0},Q0="RovingFocusGroup",[Q3,Xz,Oee]=Cv(Q0),[Nee,Fv]=ha(Q0,[Oee]),[Cee,Tee]=Nee(Q0),Yz=b.forwardRef((t,e)=>l.jsx(Q3.Provider,{scope:t.__scopeRovingFocusGroup,children:l.jsx(Q3.Slot,{scope:t.__scopeRovingFocusGroup,children:l.jsx(Eee,{...t,ref:e})})}));Yz.displayName=Q0;var Eee=b.forwardRef((t,e)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:s=!1,dir:i,currentTabStopId:a,defaultCurrentTabStopId:o,onCurrentTabStopIdChange:c,onEntryFocus:h,preventScrollOnEntryFocus:f=!1,...m}=t,g=b.useRef(null),x=Bn(e,g),y=D0(i),[w,S]=wo({prop:a,defaultProp:o??null,onChange:c,caller:Q0}),[k,N]=b.useState(!1),C=Os(h),T=Xz(n),_=b.useRef(!1),[E,M]=b.useState(0);return b.useEffect(()=>{const L=g.current;if(L)return L.addEventListener(hw,C),()=>L.removeEventListener(hw,C)},[C]),l.jsx(Cee,{scope:n,orientation:r,dir:y,loop:s,currentTabStopId:w,onItemFocus:b.useCallback(L=>S(L),[S]),onItemShiftTab:b.useCallback(()=>N(!0),[]),onFocusableItemAdd:b.useCallback(()=>M(L=>L+1),[]),onFocusableItemRemove:b.useCallback(()=>M(L=>L-1),[]),children:l.jsx(on.div,{tabIndex:k||E===0?-1:0,"data-orientation":r,...m,ref:x,style:{outline:"none",...t.style},onMouseDown:tt(t.onMouseDown,()=>{_.current=!0}),onFocus:tt(t.onFocus,L=>{const P=!_.current;if(L.target===L.currentTarget&&P&&!k){const I=new CustomEvent(hw,jee);if(L.currentTarget.dispatchEvent(I),!I.defaultPrevented){const Q=T().filter(B=>B.focusable),U=Q.find(B=>B.active),ee=Q.find(B=>B.id===w),H=[U,ee,...Q].filter(Boolean).map(B=>B.ref.current);Jz(H,f)}}_.current=!1}),onBlur:tt(t.onBlur,()=>N(!1))})})}),Kz="RovingFocusGroupItem",Zz=b.forwardRef((t,e)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:s=!1,tabStopId:i,children:a,...o}=t,c=_i(),h=i||c,f=Tee(Kz,n),m=f.currentTabStopId===h,g=Xz(n),{onFocusableItemAdd:x,onFocusableItemRemove:y,currentTabStopId:w}=f;return b.useEffect(()=>{if(r)return x(),()=>y()},[r,x,y]),l.jsx(Q3.ItemSlot,{scope:n,id:h,focusable:r,active:s,children:l.jsx(on.span,{tabIndex:m?0:-1,"data-orientation":f.orientation,...o,ref:e,onMouseDown:tt(t.onMouseDown,S=>{r?f.onItemFocus(h):S.preventDefault()}),onFocus:tt(t.onFocus,()=>f.onItemFocus(h)),onKeyDown:tt(t.onKeyDown,S=>{if(S.key==="Tab"&&S.shiftKey){f.onItemShiftTab();return}if(S.target!==S.currentTarget)return;const k=Aee(S,f.orientation,f.dir);if(k!==void 0){if(S.metaKey||S.ctrlKey||S.altKey||S.shiftKey)return;S.preventDefault();let C=g().filter(T=>T.focusable).map(T=>T.ref.current);if(k==="last")C.reverse();else if(k==="prev"||k==="next"){k==="prev"&&C.reverse();const T=C.indexOf(S.currentTarget);C=f.loop?Ree(C,T+1):C.slice(T+1)}setTimeout(()=>Jz(C))}}),children:typeof a=="function"?a({isCurrentTabStop:m,hasTabStop:w!=null}):a})})});Zz.displayName=Kz;var _ee={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function Mee(t,e){return e!=="rtl"?t:t==="ArrowLeft"?"ArrowRight":t==="ArrowRight"?"ArrowLeft":t}function Aee(t,e,n){const r=Mee(t.key,n);if(!(e==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(e==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return _ee[r]}function Jz(t,e=!1){const n=document.activeElement;for(const r of t)if(r===n||(r.focus({preventScroll:e}),document.activeElement!==n))return}function Ree(t,e){return t.map((n,r)=>t[(e+r)%t.length])}var eP=Yz,tP=Zz,$v="Tabs",[Dee]=ha($v,[Fv]),nP=Fv(),[zee,f6]=Dee($v),rP=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,onValueChange:s,defaultValue:i,orientation:a="horizontal",dir:o,activationMode:c="automatic",...h}=t,f=D0(o),[m,g]=wo({prop:r,onChange:s,defaultProp:i??"",caller:$v});return l.jsx(zee,{scope:n,baseId:_i(),value:m,onValueChange:g,orientation:a,dir:f,activationMode:c,children:l.jsx(on.div,{dir:f,"data-orientation":a,...h,ref:e})})});rP.displayName=$v;var sP="TabsList",iP=b.forwardRef((t,e)=>{const{__scopeTabs:n,loop:r=!0,...s}=t,i=f6(sP,n),a=nP(n);return l.jsx(eP,{asChild:!0,...a,orientation:i.orientation,dir:i.dir,loop:r,children:l.jsx(on.div,{role:"tablist","aria-orientation":i.orientation,...s,ref:e})})});iP.displayName=sP;var aP="TabsTrigger",lP=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,disabled:s=!1,...i}=t,a=f6(aP,n),o=nP(n),c=uP(a.baseId,r),h=dP(a.baseId,r),f=r===a.value;return l.jsx(tP,{asChild:!0,...o,focusable:!s,active:f,children:l.jsx(on.button,{type:"button",role:"tab","aria-selected":f,"aria-controls":h,"data-state":f?"active":"inactive","data-disabled":s?"":void 0,disabled:s,id:c,...i,ref:e,onMouseDown:tt(t.onMouseDown,m=>{!s&&m.button===0&&m.ctrlKey===!1?a.onValueChange(r):m.preventDefault()}),onKeyDown:tt(t.onKeyDown,m=>{[" ","Enter"].includes(m.key)&&a.onValueChange(r)}),onFocus:tt(t.onFocus,()=>{const m=a.activationMode!=="manual";!f&&!s&&m&&a.onValueChange(r)})})})});lP.displayName=aP;var oP="TabsContent",cP=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,forceMount:s,children:i,...a}=t,o=f6(oP,n),c=uP(o.baseId,r),h=dP(o.baseId,r),f=r===o.value,m=b.useRef(f);return b.useEffect(()=>{const g=requestAnimationFrame(()=>m.current=!1);return()=>cancelAnimationFrame(g)},[]),l.jsx(Fs,{present:s||f,children:({present:g})=>l.jsx(on.div,{"data-state":f?"active":"inactive","data-orientation":o.orientation,role:"tabpanel","aria-labelledby":c,hidden:!g,id:h,tabIndex:0,...a,ref:e,style:{...t.style,animationDuration:m.current?"0s":void 0},children:g&&i})})});cP.displayName=oP;function uP(t,e){return`${t}-trigger-${e}`}function dP(t,e){return`${t}-content-${e}`}var Pee=rP,hP=iP,fP=lP,mP=cP;const sa=Pee,Mi=b.forwardRef(({className:t,...e},n)=>l.jsx(hP,{ref:n,className:ve("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",t),...e}));Mi.displayName=hP.displayName;const zt=b.forwardRef(({className:t,...e},n)=>l.jsx(fP,{ref:n,className:ve("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all duration-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",t),...e}));zt.displayName=fP.displayName;const tn=b.forwardRef(({className:t,...e},n)=>l.jsx(mP,{ref:n,className:ve("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[state=active]:animate-in data-[state=active]:fade-in data-[state=active]:duration-300",t),...e}));tn.displayName=mP.displayName;function Lee(t,e){return b.useReducer((n,r)=>e[n][r]??n,t)}var m6="ScrollArea",[pP]=ha(m6),[Iee,fa]=pP(m6),gP=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,type:r="hover",dir:s,scrollHideDelay:i=600,...a}=t,[o,c]=b.useState(null),[h,f]=b.useState(null),[m,g]=b.useState(null),[x,y]=b.useState(null),[w,S]=b.useState(null),[k,N]=b.useState(0),[C,T]=b.useState(0),[_,E]=b.useState(!1),[M,L]=b.useState(!1),P=Bn(e,Q=>c(Q)),I=D0(s);return l.jsx(Iee,{scope:n,type:r,dir:I,scrollHideDelay:i,scrollArea:o,viewport:h,onViewportChange:f,content:m,onContentChange:g,scrollbarX:x,onScrollbarXChange:y,scrollbarXEnabled:_,onScrollbarXEnabledChange:E,scrollbarY:w,onScrollbarYChange:S,scrollbarYEnabled:M,onScrollbarYEnabledChange:L,onCornerWidthChange:N,onCornerHeightChange:T,children:l.jsx(on.div,{dir:I,...a,ref:P,style:{position:"relative","--radix-scroll-area-corner-width":k+"px","--radix-scroll-area-corner-height":C+"px",...t.style}})})});gP.displayName=m6;var xP="ScrollAreaViewport",vP=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,children:r,nonce:s,...i}=t,a=fa(xP,n),o=b.useRef(null),c=Bn(e,o,a.onViewportChange);return l.jsxs(l.Fragment,{children:[l.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:s}),l.jsx(on.div,{"data-radix-scroll-area-viewport":"",...i,ref:c,style:{overflowX:a.scrollbarXEnabled?"scroll":"hidden",overflowY:a.scrollbarYEnabled?"scroll":"hidden",...t.style},children:l.jsx("div",{ref:a.onContentChange,style:{minWidth:"100%",display:"table"},children:r})})]})});vP.displayName=xP;var ml="ScrollAreaScrollbar",p6=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=fa(ml,t.__scopeScrollArea),{onScrollbarXEnabledChange:i,onScrollbarYEnabledChange:a}=s,o=t.orientation==="horizontal";return b.useEffect(()=>(o?i(!0):a(!0),()=>{o?i(!1):a(!1)}),[o,i,a]),s.type==="hover"?l.jsx(Bee,{...r,ref:e,forceMount:n}):s.type==="scroll"?l.jsx(qee,{...r,ref:e,forceMount:n}):s.type==="auto"?l.jsx(yP,{...r,ref:e,forceMount:n}):s.type==="always"?l.jsx(g6,{...r,ref:e}):null});p6.displayName=ml;var Bee=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=fa(ml,t.__scopeScrollArea),[i,a]=b.useState(!1);return b.useEffect(()=>{const o=s.scrollArea;let c=0;if(o){const h=()=>{window.clearTimeout(c),a(!0)},f=()=>{c=window.setTimeout(()=>a(!1),s.scrollHideDelay)};return o.addEventListener("pointerenter",h),o.addEventListener("pointerleave",f),()=>{window.clearTimeout(c),o.removeEventListener("pointerenter",h),o.removeEventListener("pointerleave",f)}}},[s.scrollArea,s.scrollHideDelay]),l.jsx(Fs,{present:n||i,children:l.jsx(yP,{"data-state":i?"visible":"hidden",...r,ref:e})})}),qee=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=fa(ml,t.__scopeScrollArea),i=t.orientation==="horizontal",a=Hv(()=>c("SCROLL_END"),100),[o,c]=Lee("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return b.useEffect(()=>{if(o==="idle"){const h=window.setTimeout(()=>c("HIDE"),s.scrollHideDelay);return()=>window.clearTimeout(h)}},[o,s.scrollHideDelay,c]),b.useEffect(()=>{const h=s.viewport,f=i?"scrollLeft":"scrollTop";if(h){let m=h[f];const g=()=>{const x=h[f];m!==x&&(c("SCROLL"),a()),m=x};return h.addEventListener("scroll",g),()=>h.removeEventListener("scroll",g)}},[s.viewport,i,c,a]),l.jsx(Fs,{present:n||o!=="hidden",children:l.jsx(g6,{"data-state":o==="hidden"?"hidden":"visible",...r,ref:e,onPointerEnter:tt(t.onPointerEnter,()=>c("POINTER_ENTER")),onPointerLeave:tt(t.onPointerLeave,()=>c("POINTER_LEAVE"))})})}),yP=b.forwardRef((t,e)=>{const n=fa(ml,t.__scopeScrollArea),{forceMount:r,...s}=t,[i,a]=b.useState(!1),o=t.orientation==="horizontal",c=Hv(()=>{if(n.viewport){const h=n.viewport.offsetWidth{const{orientation:n="vertical",...r}=t,s=fa(ml,t.__scopeScrollArea),i=b.useRef(null),a=b.useRef(0),[o,c]=b.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),h=jP(o.viewport,o.content),f={...r,sizes:o,onSizesChange:c,hasThumb:h>0&&h<1,onThumbChange:g=>i.current=g,onThumbPointerUp:()=>a.current=0,onThumbPointerDown:g=>a.current=g};function m(g,x){return Uee(g,a.current,o,x)}return n==="horizontal"?l.jsx(Fee,{...f,ref:e,onThumbPositionChange:()=>{if(s.viewport&&i.current){const g=s.viewport.scrollLeft,x=m9(g,o,s.dir);i.current.style.transform=`translate3d(${x}px, 0, 0)`}},onWheelScroll:g=>{s.viewport&&(s.viewport.scrollLeft=g)},onDragScroll:g=>{s.viewport&&(s.viewport.scrollLeft=m(g,s.dir))}}):n==="vertical"?l.jsx($ee,{...f,ref:e,onThumbPositionChange:()=>{if(s.viewport&&i.current){const g=s.viewport.scrollTop,x=m9(g,o);i.current.style.transform=`translate3d(0, ${x}px, 0)`}},onWheelScroll:g=>{s.viewport&&(s.viewport.scrollTop=g)},onDragScroll:g=>{s.viewport&&(s.viewport.scrollTop=m(g))}}):null}),Fee=b.forwardRef((t,e)=>{const{sizes:n,onSizesChange:r,...s}=t,i=fa(ml,t.__scopeScrollArea),[a,o]=b.useState(),c=b.useRef(null),h=Bn(e,c,i.onScrollbarXChange);return b.useEffect(()=>{c.current&&o(getComputedStyle(c.current))},[c]),l.jsx(wP,{"data-orientation":"horizontal",...s,ref:h,sizes:n,style:{bottom:0,left:i.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:i.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":Qv(n)+"px",...t.style},onThumbPointerDown:f=>t.onThumbPointerDown(f.x),onDragScroll:f=>t.onDragScroll(f.x),onWheelScroll:(f,m)=>{if(i.viewport){const g=i.viewport.scrollLeft+f.deltaX;t.onWheelScroll(g),NP(g,m)&&f.preventDefault()}},onResize:()=>{c.current&&i.viewport&&a&&r({content:i.viewport.scrollWidth,viewport:i.viewport.offsetWidth,scrollbar:{size:c.current.clientWidth,paddingStart:M1(a.paddingLeft),paddingEnd:M1(a.paddingRight)}})}})}),$ee=b.forwardRef((t,e)=>{const{sizes:n,onSizesChange:r,...s}=t,i=fa(ml,t.__scopeScrollArea),[a,o]=b.useState(),c=b.useRef(null),h=Bn(e,c,i.onScrollbarYChange);return b.useEffect(()=>{c.current&&o(getComputedStyle(c.current))},[c]),l.jsx(wP,{"data-orientation":"vertical",...s,ref:h,sizes:n,style:{top:0,right:i.dir==="ltr"?0:void 0,left:i.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":Qv(n)+"px",...t.style},onThumbPointerDown:f=>t.onThumbPointerDown(f.y),onDragScroll:f=>t.onDragScroll(f.y),onWheelScroll:(f,m)=>{if(i.viewport){const g=i.viewport.scrollTop+f.deltaY;t.onWheelScroll(g),NP(g,m)&&f.preventDefault()}},onResize:()=>{c.current&&i.viewport&&a&&r({content:i.viewport.scrollHeight,viewport:i.viewport.offsetHeight,scrollbar:{size:c.current.clientHeight,paddingStart:M1(a.paddingTop),paddingEnd:M1(a.paddingBottom)}})}})}),[Qee,bP]=pP(ml),wP=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,sizes:r,hasThumb:s,onThumbChange:i,onThumbPointerUp:a,onThumbPointerDown:o,onThumbPositionChange:c,onDragScroll:h,onWheelScroll:f,onResize:m,...g}=t,x=fa(ml,n),[y,w]=b.useState(null),S=Bn(e,P=>w(P)),k=b.useRef(null),N=b.useRef(""),C=x.viewport,T=r.content-r.viewport,_=Os(f),E=Os(c),M=Hv(m,10);function L(P){if(k.current){const I=P.clientX-k.current.left,Q=P.clientY-k.current.top;h({x:I,y:Q})}}return b.useEffect(()=>{const P=I=>{const Q=I.target;y?.contains(Q)&&_(I,T)};return document.addEventListener("wheel",P,{passive:!1}),()=>document.removeEventListener("wheel",P,{passive:!1})},[C,y,T,_]),b.useEffect(E,[r,E]),gh(y,M),gh(x.content,M),l.jsx(Qee,{scope:n,scrollbar:y,hasThumb:s,onThumbChange:Os(i),onThumbPointerUp:Os(a),onThumbPositionChange:E,onThumbPointerDown:Os(o),children:l.jsx(on.div,{...g,ref:S,style:{position:"absolute",...g.style},onPointerDown:tt(t.onPointerDown,P=>{P.button===0&&(P.target.setPointerCapture(P.pointerId),k.current=y.getBoundingClientRect(),N.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",x.viewport&&(x.viewport.style.scrollBehavior="auto"),L(P))}),onPointerMove:tt(t.onPointerMove,L),onPointerUp:tt(t.onPointerUp,P=>{const I=P.target;I.hasPointerCapture(P.pointerId)&&I.releasePointerCapture(P.pointerId),document.body.style.webkitUserSelect=N.current,x.viewport&&(x.viewport.style.scrollBehavior=""),k.current=null})})})}),_1="ScrollAreaThumb",SP=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=bP(_1,t.__scopeScrollArea);return l.jsx(Fs,{present:n||s.hasThumb,children:l.jsx(Hee,{ref:e,...r})})}),Hee=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,style:r,...s}=t,i=fa(_1,n),a=bP(_1,n),{onThumbPositionChange:o}=a,c=Bn(e,m=>a.onThumbChange(m)),h=b.useRef(void 0),f=Hv(()=>{h.current&&(h.current(),h.current=void 0)},100);return b.useEffect(()=>{const m=i.viewport;if(m){const g=()=>{if(f(),!h.current){const x=Wee(m,o);h.current=x,o()}};return o(),m.addEventListener("scroll",g),()=>m.removeEventListener("scroll",g)}},[i.viewport,f,o]),l.jsx(on.div,{"data-state":a.hasThumb?"visible":"hidden",...s,ref:c,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...r},onPointerDownCapture:tt(t.onPointerDownCapture,m=>{const x=m.target.getBoundingClientRect(),y=m.clientX-x.left,w=m.clientY-x.top;a.onThumbPointerDown({x:y,y:w})}),onPointerUp:tt(t.onPointerUp,a.onThumbPointerUp)})});SP.displayName=_1;var x6="ScrollAreaCorner",kP=b.forwardRef((t,e)=>{const n=fa(x6,t.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!=="scroll"&&r?l.jsx(Vee,{...t,ref:e}):null});kP.displayName=x6;var Vee=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,...r}=t,s=fa(x6,n),[i,a]=b.useState(0),[o,c]=b.useState(0),h=!!(i&&o);return gh(s.scrollbarX,()=>{const f=s.scrollbarX?.offsetHeight||0;s.onCornerHeightChange(f),c(f)}),gh(s.scrollbarY,()=>{const f=s.scrollbarY?.offsetWidth||0;s.onCornerWidthChange(f),a(f)}),h?l.jsx(on.div,{...r,ref:e,style:{width:i,height:o,position:"absolute",right:s.dir==="ltr"?0:void 0,left:s.dir==="rtl"?0:void 0,bottom:0,...t.style}}):null});function M1(t){return t?parseInt(t,10):0}function jP(t,e){const n=t/e;return isNaN(n)?0:n}function Qv(t){const e=jP(t.viewport,t.content),n=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,r=(t.scrollbar.size-n)*e;return Math.max(r,18)}function Uee(t,e,n,r="ltr"){const s=Qv(n),i=s/2,a=e||i,o=s-a,c=n.scrollbar.paddingStart+a,h=n.scrollbar.size-n.scrollbar.paddingEnd-o,f=n.content-n.viewport,m=r==="ltr"?[0,f]:[f*-1,0];return OP([c,h],m)(t)}function m9(t,e,n="ltr"){const r=Qv(e),s=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,i=e.scrollbar.size-s,a=e.content-e.viewport,o=i-r,c=n==="ltr"?[0,a]:[a*-1,0],h=Yk(t,c);return OP([0,a],[0,o])(h)}function OP(t,e){return n=>{if(t[0]===t[1]||e[0]===e[1])return e[0];const r=(e[1]-e[0])/(t[1]-t[0]);return e[0]+r*(n-t[0])}}function NP(t,e){return t>0&&t{})=>{let n={left:t.scrollLeft,top:t.scrollTop},r=0;return(function s(){const i={left:t.scrollLeft,top:t.scrollTop},a=n.left!==i.left,o=n.top!==i.top;(a||o)&&e(),n=i,r=window.requestAnimationFrame(s)})(),()=>window.cancelAnimationFrame(r)};function Hv(t,e){const n=Os(t),r=b.useRef(0);return b.useEffect(()=>()=>window.clearTimeout(r.current),[]),b.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,e)},[n,e])}function gh(t,e){const n=Os(e);Xk(()=>{let r=0;if(t){const s=new ResizeObserver(()=>{cancelAnimationFrame(r),r=window.requestAnimationFrame(n)});return s.observe(t),()=>{window.cancelAnimationFrame(r),s.unobserve(t)}}},[t,n])}var CP=gP,Gee=vP,Xee=kP;const hn=b.forwardRef(({className:t,children:e,viewportRef:n,...r},s)=>l.jsxs(CP,{ref:s,className:ve("relative overflow-hidden",t),...r,children:[l.jsx(Gee,{ref:n,className:"h-full w-full rounded-[inherit]",children:e}),l.jsx(H3,{}),l.jsx(H3,{orientation:"horizontal"}),l.jsx(Xee,{})]}));hn.displayName=CP.displayName;const H3=b.forwardRef(({className:t,orientation:e="vertical",...n},r)=>l.jsx(p6,{ref:r,orientation:e,className:ve("flex touch-none select-none transition-colors",e==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",e==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",t),...n,children:l.jsx(SP,{className:"relative flex-1 rounded-full bg-border"})}));H3.displayName=p6.displayName;function p9({className:t,...e}){return l.jsx("div",{className:ve("animate-pulse rounded-md bg-primary/10",t),...e})}function Yee(t,e=[]){let n=[];function r(i,a){const o=b.createContext(a);o.displayName=i+"Context";const c=n.length;n=[...n,a];const h=m=>{const{scope:g,children:x,...y}=m,w=g?.[t]?.[c]||o,S=b.useMemo(()=>y,Object.values(y));return l.jsx(w.Provider,{value:S,children:x})};h.displayName=i+"Provider";function f(m,g){const x=g?.[t]?.[c]||o,y=b.useContext(x);if(y)return y;if(a!==void 0)return a;throw new Error(`\`${m}\` must be used within \`${i}\``)}return[h,f]}const s=()=>{const i=n.map(a=>b.createContext(a));return function(o){const c=o?.[t]||i;return b.useMemo(()=>({[`__scope${t}`]:{...o,[t]:c}}),[o,c])}};return s.scopeName=t,[r,Kee(s,...e)]}function Kee(...t){const e=t[0];if(t.length===1)return e;const n=()=>{const r=t.map(s=>({useScope:s(),scopeName:s.scopeName}));return function(i){const a=r.reduce((o,{useScope:c,scopeName:h})=>{const m=c(i)[`__scope${h}`];return{...o,...m}},{});return b.useMemo(()=>({[`__scope${e.scopeName}`]:a}),[a])}};return n.scopeName=e.scopeName,n}var Zee=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],TP=Zee.reduce((t,e)=>{const n=Kk(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...o}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),l.jsx(c,{...o,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),v6="Progress",y6=100,[Jee]=Yee(v6),[ete,tte]=Jee(v6),EP=b.forwardRef((t,e)=>{const{__scopeProgress:n,value:r=null,max:s,getValueLabel:i=nte,...a}=t;(s||s===0)&&!g9(s)&&console.error(rte(`${s}`,"Progress"));const o=g9(s)?s:y6;r!==null&&!x9(r,o)&&console.error(ste(`${r}`,"Progress"));const c=x9(r,o)?r:null,h=A1(c)?i(c,o):void 0;return l.jsx(ete,{scope:n,value:c,max:o,children:l.jsx(TP.div,{"aria-valuemax":o,"aria-valuemin":0,"aria-valuenow":A1(c)?c:void 0,"aria-valuetext":h,role:"progressbar","data-state":AP(c,o),"data-value":c??void 0,"data-max":o,...a,ref:e})})});EP.displayName=v6;var _P="ProgressIndicator",MP=b.forwardRef((t,e)=>{const{__scopeProgress:n,...r}=t,s=tte(_P,n);return l.jsx(TP.div,{"data-state":AP(s.value,s.max),"data-value":s.value??void 0,"data-max":s.max,...r,ref:e})});MP.displayName=_P;function nte(t,e){return`${Math.round(t/e*100)}%`}function AP(t,e){return t==null?"indeterminate":t===e?"complete":"loading"}function A1(t){return typeof t=="number"}function g9(t){return A1(t)&&!isNaN(t)&&t>0}function x9(t,e){return A1(t)&&!isNaN(t)&&t<=e&&t>=0}function rte(t,e){return`Invalid prop \`max\` of value \`${t}\` supplied to \`${e}\`. Only numbers greater than 0 are valid max values. Defaulting to \`${y6}\`.`}function ste(t,e){return`Invalid prop \`value\` of value \`${t}\` supplied to \`${e}\`. The \`value\` prop must be: - - a positive number - - less than the value passed to \`max\` (or ${y6} if no \`max\` prop is set) - - \`null\` or \`undefined\` if the progress is indeterminate. - -Defaulting to \`null\`.`}var RP=EP,ite=MP;const H0=b.forwardRef(({className:t,value:e,...n},r)=>l.jsx(RP,{ref:r,className:ve("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",t),...n,children:l.jsx(ite,{className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(e||0)}%)`}})}));H0.displayName=RP.displayName;const ate={light:"",dark:".dark"},DP=b.createContext(null);function zP(){const t=b.useContext(DP);if(!t)throw new Error("useChart must be used within a ");return t}const Id=b.forwardRef(({id:t,className:e,children:n,config:r,...s},i)=>{const a=b.useId(),o=`chart-${t||a.replace(/:/g,"")}`;return l.jsx(DP.Provider,{value:{config:r},children:l.jsxs("div",{"data-chart":o,ref:i,className:ve("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",e),...s,children:[l.jsx(lte,{id:o,config:r}),l.jsx(gY,{children:n})]})})});Id.displayName="Chart";const lte=({id:t,config:e})=>{const n=Object.entries(e).filter(([,r])=>r.theme||r.color);return n.length?l.jsx("style",{dangerouslySetInnerHTML:{__html:Object.entries(ate).map(([r,s])=>` -${s} [data-chart=${t}] { -${n.map(([i,a])=>{const o=a.theme?.[r]||a.color;return o?` --color-${i}: ${o};`:null}).join(` -`)} -} -`).join(` -`)}}):null},Kf=xY,Bd=b.forwardRef(({active:t,payload:e,className:n,indicator:r="dot",hideLabel:s=!1,hideIndicator:i=!1,label:a,labelFormatter:o,labelClassName:c,formatter:h,color:f,nameKey:m,labelKey:g},x)=>{const{config:y}=zP(),w=b.useMemo(()=>{if(s||!e?.length)return null;const[k]=e,N=`${g||k?.dataKey||k?.name||"value"}`,C=V3(y,k,N),T=!g&&typeof a=="string"?y[a]?.label||a:C?.label;return o?l.jsx("div",{className:ve("font-medium",c),children:o(T,e)}):T?l.jsx("div",{className:ve("font-medium",c),children:T}):null},[a,o,e,s,c,y,g]);if(!t||!e?.length)return null;const S=e.length===1&&r!=="dot";return l.jsxs("div",{ref:x,className:ve("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",n),children:[S?null:w,l.jsx("div",{className:"grid gap-1.5",children:e.filter(k=>k.type!=="none").map((k,N)=>{const C=`${m||k.name||k.dataKey||"value"}`,T=V3(y,k,C),_=f||k.payload.fill||k.color;return l.jsx("div",{className:ve("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",r==="dot"&&"items-center"),children:h&&k?.value!==void 0&&k.name?h(k.value,k.name,k,N,k.payload):l.jsxs(l.Fragment,{children:[T?.icon?l.jsx(T.icon,{}):!i&&l.jsx("div",{className:ve("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]",{"h-2.5 w-2.5":r==="dot","w-1":r==="line","w-0 border-[1.5px] border-dashed bg-transparent":r==="dashed","my-0.5":S&&r==="dashed"}),style:{"--color-bg":_,"--color-border":_}}),l.jsxs("div",{className:ve("flex flex-1 justify-between leading-none",S?"items-end":"items-center"),children:[l.jsxs("div",{className:"grid gap-1.5",children:[S?w:null,l.jsx("span",{className:"text-muted-foreground",children:T?.label||k.name})]}),k.value&&l.jsx("span",{className:"font-mono font-medium tabular-nums text-foreground",children:k.value.toLocaleString()})]})]})},k.dataKey)})})]})});Bd.displayName="ChartTooltip";const ote=vY,PP=b.forwardRef(({className:t,hideIcon:e=!1,payload:n,verticalAlign:r="bottom",nameKey:s},i)=>{const{config:a}=zP();return n?.length?l.jsx("div",{ref:i,className:ve("flex items-center justify-center gap-4",r==="top"?"pb-3":"pt-3",t),children:n.filter(o=>o.type!=="none").map(o=>{const c=`${s||o.dataKey||"value"}`,h=V3(a,o,c);return l.jsxs("div",{className:ve("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"),children:[h?.icon&&!e?l.jsx(h.icon,{}):l.jsx("div",{className:"h-2 w-2 shrink-0 rounded-[2px]",style:{backgroundColor:o.color}}),h?.label]},o.value)})}):null});PP.displayName="ChartLegend";function V3(t,e,n){if(typeof e!="object"||e===null)return;const r="payload"in e&&typeof e.payload=="object"&&e.payload!==null?e.payload:void 0;let s=n;return n in e&&typeof e[n]=="string"?s=e[n]:r&&n in r&&typeof r[n]=="string"&&(s=r[n]),s in t?t[s]:t[n]}const v9=t=>typeof t=="boolean"?`${t}`:t===0?"0":t,y9=OD,Ih=(t,e)=>n=>{var r;if(e?.variants==null)return y9(t,n?.class,n?.className);const{variants:s,defaultVariants:i}=e,a=Object.keys(s).map(h=>{const f=n?.[h],m=i?.[h];if(f===null)return null;const g=v9(f)||v9(m);return s[h][g]}),o=n&&Object.entries(n).reduce((h,f)=>{let[m,g]=f;return g===void 0||(h[m]=g),h},{}),c=e==null||(r=e.compoundVariants)===null||r===void 0?void 0:r.reduce((h,f)=>{let{class:m,className:g,...x}=f;return Object.entries(x).every(y=>{let[w,S]=y;return Array.isArray(S)?S.includes({...i,...o}[w]):{...i,...o}[w]===S})?[...h,m,g]:h},[]);return y9(t,a,c,n?.class,n?.className)},Hm=Ih("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),de=b.forwardRef(({className:t,variant:e,size:n,asChild:r=!1,...s},i)=>{const a=r?pK:"button";return l.jsx(a,{className:ve(Hm({variant:e,size:n,className:t})),ref:i,...s})});de.displayName="Button";function cte(){const[t,e]=b.useState(null),[n,r]=b.useState(!0),[s,i]=b.useState(0),[a,o]=b.useState(24),[c,h]=b.useState(!0),[f,m]=b.useState(null),[g,x]=b.useState(!0),y=b.useCallback(async()=>{try{x(!0);const P=await kr.get("https://v1.hitokoto.cn/?c=a&c=b&c=c&c=d&c=h&c=i&c=k");m({hitokoto:P.data.hitokoto,from:P.data.from||P.data.from_who||"未知"})}catch(P){console.error("获取一言失败:",P),m({hitokoto:"人生就像一盒巧克力,你永远不知道下一颗是什么味道。",from:"阿甘正传"})}finally{x(!1)}},[]),w=b.useCallback(async()=>{try{const P=localStorage.getItem("access-token"),I=await kr.get(`/api/webui/statistics/dashboard?hours=${a}`,{headers:{Authorization:`Bearer ${P}`}});e(I.data),r(!1),i(100)}catch(P){console.error("Failed to fetch dashboard data:",P),r(!1),i(100)}},[a]);if(b.useEffect(()=>{if(!n)return;i(0);const P=setTimeout(()=>i(15),200),I=setTimeout(()=>i(30),800),Q=setTimeout(()=>i(45),2e3),U=setTimeout(()=>i(60),4e3),ee=setTimeout(()=>i(75),6500),z=setTimeout(()=>i(85),9e3),H=setTimeout(()=>i(92),11e3);return()=>{clearTimeout(P),clearTimeout(I),clearTimeout(Q),clearTimeout(U),clearTimeout(ee),clearTimeout(z),clearTimeout(H)}},[n]),b.useEffect(()=>{w(),y()},[w,y]),b.useEffect(()=>{if(!c)return;const P=setInterval(()=>{w()},3e4);return()=>clearInterval(P)},[c,w]),n||!t)return l.jsx("div",{className:"flex items-center justify-center h-[calc(100vh-200px)]",children:l.jsxs("div",{className:"text-center space-y-6 w-full max-w-md px-4",children:[l.jsx(Ls,{className:"h-12 w-12 animate-spin mx-auto text-primary"}),l.jsxs("div",{className:"space-y-2",children:[l.jsx("p",{className:"text-lg font-medium",children:"加载统计数据中..."}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"正在获取麦麦运行数据"})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(H0,{value:s,className:"h-2"}),l.jsxs("p",{className:"text-xs text-muted-foreground",children:[s,"%"]})]})]})});const{summary:S,model_stats:k,hourly_data:N,daily_data:C,recent_activity:T}=t,_=P=>{const I=Math.floor(P/3600),Q=Math.floor(P%3600/60);return`${I}小时${Q}分钟`},E=P=>new Date(P).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),M=k.slice(0,6).map(P=>({name:P.model_name,value:P.request_count,fill:`hsl(var(--chart-${k.indexOf(P)%5+1}))`})),L={requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"},tokens:{label:"Tokens",color:"hsl(var(--chart-3))"}};return l.jsx(hn,{className:"h-full",children:l.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[l.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[l.jsxs("div",{children:[l.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"实时监控面板"}),l.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"麦麦运行状态和统计数据一览"})]}),l.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[l.jsx(sa,{value:a.toString(),onValueChange:P=>o(Number(P)),children:l.jsxs(Mi,{className:"grid grid-cols-3 w-full sm:w-auto",children:[l.jsx(zt,{value:"24",children:"24小时"}),l.jsx(zt,{value:"168",children:"7天"}),l.jsx(zt,{value:"720",children:"30天"})]})}),l.jsxs(de,{variant:c?"default":"outline",size:"sm",onClick:()=>h(!c),className:"gap-2",children:[l.jsx(Ls,{className:`h-4 w-4 ${c?"animate-spin":""}`}),l.jsx("span",{className:"hidden sm:inline",children:"自动刷新"})]}),l.jsx(de,{variant:"outline",size:"sm",onClick:w,children:l.jsx(Ls,{className:"h-4 w-4"})})]})]}),l.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-4",children:[l.jsxs(Dt,{children:[l.jsxs(kn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[l.jsx(jn,{className:"text-sm font-medium",children:"总请求数"}),l.jsx(TK,{className:"h-4 w-4 text-muted-foreground"})]}),l.jsxs(Dn,{children:[l.jsx("div",{className:"text-2xl font-bold",children:S.total_requests.toLocaleString()}),l.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["最近",a<48?a+"小时":Math.floor(a/24)+"天"]})]})]}),l.jsxs(Dt,{children:[l.jsxs(kn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[l.jsx(jn,{className:"text-sm font-medium",children:"总花费"}),l.jsx(EK,{className:"h-4 w-4 text-muted-foreground"})]}),l.jsxs(Dn,{children:[l.jsxs("div",{className:"text-2xl font-bold",children:["¥",S.total_cost.toFixed(2)]}),l.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:S.cost_per_hour>0?`¥${S.cost_per_hour.toFixed(2)}/小时`:"暂无数据"})]})]}),l.jsxs(Dt,{children:[l.jsxs(kn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[l.jsx(jn,{className:"text-sm font-medium",children:"Token消耗"}),l.jsx(A3,{className:"h-4 w-4 text-muted-foreground"})]}),l.jsxs(Dn,{children:[l.jsxs("div",{className:"text-2xl font-bold",children:[(S.total_tokens/1e3).toFixed(1),"K"]}),l.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:S.tokens_per_hour>0?`${(S.tokens_per_hour/1e3).toFixed(1)}K/小时`:"暂无数据"})]})]}),l.jsxs(Dt,{children:[l.jsxs(kn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[l.jsx(jn,{className:"text-sm font-medium",children:"平均响应"}),l.jsx(R3,{className:"h-4 w-4 text-muted-foreground"})]}),l.jsxs(Dn,{children:[l.jsxs("div",{className:"text-2xl font-bold",children:[S.avg_response_time.toFixed(2),"s"]}),l.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"API平均耗时"})]})]})]}),l.jsxs("div",{className:"grid gap-4 grid-cols-1 sm:grid-cols-3",children:[l.jsxs(Dt,{children:[l.jsxs(kn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[l.jsx(jn,{className:"text-sm font-medium",children:"在线时长"}),l.jsx(Zd,{className:"h-4 w-4 text-muted-foreground"})]}),l.jsx(Dn,{children:l.jsx("div",{className:"text-xl font-bold",children:_(S.online_time)})})]}),l.jsxs(Dt,{children:[l.jsxs(kn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[l.jsx(jn,{className:"text-sm font-medium",children:"消息处理"}),l.jsx(z0,{className:"h-4 w-4 text-muted-foreground"})]}),l.jsxs(Dn,{children:[l.jsx("div",{className:"text-xl font-bold",children:S.total_messages.toLocaleString()}),l.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["回复 ",S.total_replies.toLocaleString()," 条"]})]})]}),l.jsxs(Dt,{children:[l.jsxs(kn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[l.jsx(jn,{className:"text-sm font-medium",children:"成本效率"}),l.jsx(_K,{className:"h-4 w-4 text-muted-foreground"})]}),l.jsxs(Dn,{children:[l.jsx("div",{className:"text-xl font-bold",children:S.total_messages>0?`¥${(S.total_cost/S.total_messages*100).toFixed(2)}`:"¥0.00"}),l.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"每100条消息"})]})]})]}),l.jsxs(sa,{defaultValue:"trends",className:"space-y-4",children:[l.jsxs(Mi,{className:"grid w-full grid-cols-2 sm:grid-cols-4",children:[l.jsx(zt,{value:"trends",children:"趋势"}),l.jsx(zt,{value:"models",children:"模型"}),l.jsx(zt,{value:"activity",children:"活动"}),l.jsx(zt,{value:"daily",children:"日统计"})]}),l.jsxs(tn,{value:"trends",className:"space-y-4",children:[l.jsxs(Dt,{children:[l.jsxs(kn,{children:[l.jsx(jn,{children:"请求趋势"}),l.jsxs(Fr,{children:["最近",a,"小时的请求量变化"]})]}),l.jsx(Dn,{children:l.jsx(Id,{config:L,className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:l.jsxs(yY,{data:N,children:[l.jsx(Vg,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),l.jsx(Ug,{dataKey:"timestamp",tickFormatter:P=>E(P),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),l.jsx(Wf,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),l.jsx(Kf,{content:l.jsx(Bd,{labelFormatter:P=>E(P)})}),l.jsx(bY,{type:"monotone",dataKey:"requests",stroke:"var(--color-requests)",strokeWidth:2})]})})})]}),l.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[l.jsxs(Dt,{children:[l.jsxs(kn,{children:[l.jsx(jn,{children:"花费趋势"}),l.jsx(Fr,{children:"API调用成本变化"})]}),l.jsx(Dn,{children:l.jsx(Id,{config:L,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:l.jsxs(nw,{data:N,children:[l.jsx(Vg,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),l.jsx(Ug,{dataKey:"timestamp",tickFormatter:P=>E(P),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),l.jsx(Wf,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),l.jsx(Kf,{content:l.jsx(Bd,{labelFormatter:P=>E(P)})}),l.jsx(Wg,{dataKey:"cost",fill:"var(--color-cost)"})]})})})]}),l.jsxs(Dt,{children:[l.jsxs(kn,{children:[l.jsx(jn,{children:"Token消耗"}),l.jsx(Fr,{children:"Token使用量变化"})]}),l.jsx(Dn,{children:l.jsx(Id,{config:L,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:l.jsxs(nw,{data:N,children:[l.jsx(Vg,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),l.jsx(Ug,{dataKey:"timestamp",tickFormatter:P=>E(P),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),l.jsx(Wf,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),l.jsx(Kf,{content:l.jsx(Bd,{labelFormatter:P=>E(P)})}),l.jsx(Wg,{dataKey:"tokens",fill:"var(--color-tokens)"})]})})})]})]})]}),l.jsx(tn,{value:"models",className:"space-y-4",children:l.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[l.jsxs(Dt,{children:[l.jsxs(kn,{children:[l.jsx(jn,{children:"模型请求分布"}),l.jsx(Fr,{children:"各模型使用占比"})]}),l.jsx(Dn,{children:l.jsx(Id,{config:Object.fromEntries(k.slice(0,6).map((P,I)=>[P.model_name,{label:P.model_name,color:`hsl(var(--chart-${I%5+1}))`}])),className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:l.jsxs(wY,{children:[l.jsx(Kf,{content:l.jsx(Bd,{})}),l.jsx(SY,{data:M,cx:"50%",cy:"50%",labelLine:!1,label:({name:P,percent:I})=>`${P} ${I?(I*100).toFixed(0):0}%`,outerRadius:100,dataKey:"value",children:M.map((P,I)=>l.jsx(kY,{fill:P.fill},`cell-${I}`))})]})})})]}),l.jsxs(Dt,{children:[l.jsxs(kn,{children:[l.jsx(jn,{children:"模型详细统计"}),l.jsx(Fr,{children:"请求数、花费和性能"})]}),l.jsx(Dn,{children:l.jsx(hn,{className:"h-[300px] sm:h-[400px]",children:l.jsx("div",{className:"space-y-3",children:k.map((P,I)=>l.jsxs("div",{className:"p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[l.jsxs("div",{className:"flex items-center justify-between mb-2",children:[l.jsx("h4",{className:"font-semibold text-sm truncate flex-1 min-w-0",children:P.model_name}),l.jsx("div",{className:"w-3 h-3 rounded-full ml-2 flex-shrink-0",style:{backgroundColor:`hsl(var(--chart-${I%5+1}))`}})]}),l.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[l.jsxs("div",{children:[l.jsx("span",{className:"text-muted-foreground",children:"请求数:"}),l.jsx("span",{className:"ml-1 font-medium",children:P.request_count.toLocaleString()})]}),l.jsxs("div",{children:[l.jsx("span",{className:"text-muted-foreground",children:"花费:"}),l.jsxs("span",{className:"ml-1 font-medium",children:["¥",P.total_cost.toFixed(2)]})]}),l.jsxs("div",{children:[l.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),l.jsxs("span",{className:"ml-1 font-medium",children:[(P.total_tokens/1e3).toFixed(1),"K"]})]}),l.jsxs("div",{children:[l.jsx("span",{className:"text-muted-foreground",children:"平均耗时:"}),l.jsxs("span",{className:"ml-1 font-medium",children:[P.avg_response_time.toFixed(2),"s"]})]})]})]},I))})})})]})]})}),l.jsx(tn,{value:"activity",children:l.jsxs(Dt,{children:[l.jsxs(kn,{children:[l.jsx(jn,{children:"最近活动"}),l.jsx(Fr,{children:"最新的API调用记录"})]}),l.jsx(Dn,{children:l.jsx(hn,{className:"h-[400px] sm:h-[500px]",children:l.jsx("div",{className:"space-y-2",children:T.map((P,I)=>l.jsxs("div",{className:"p-3 sm:p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[l.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-2 mb-2",children:[l.jsxs("div",{className:"flex-1 min-w-0",children:[l.jsx("div",{className:"font-medium text-sm truncate",children:P.model}),l.jsx("div",{className:"text-xs text-muted-foreground",children:P.request_type})]}),l.jsx("div",{className:"text-xs text-muted-foreground flex-shrink-0",children:E(P.timestamp)})]}),l.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-2 text-xs",children:[l.jsxs("div",{children:[l.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),l.jsx("span",{className:"ml-1",children:P.tokens})]}),l.jsxs("div",{children:[l.jsx("span",{className:"text-muted-foreground",children:"花费:"}),l.jsxs("span",{className:"ml-1",children:["¥",P.cost.toFixed(4)]})]}),l.jsxs("div",{children:[l.jsx("span",{className:"text-muted-foreground",children:"耗时:"}),l.jsxs("span",{className:"ml-1",children:[P.time_cost.toFixed(2),"s"]})]}),l.jsxs("div",{children:[l.jsx("span",{className:"text-muted-foreground",children:"状态:"}),l.jsx("span",{className:`ml-1 ${P.status==="success"?"text-green-600":"text-red-600"}`,children:P.status})]})]})]},I))})})})]})}),l.jsx(tn,{value:"daily",children:l.jsxs(Dt,{children:[l.jsxs(kn,{children:[l.jsx(jn,{children:"每日统计"}),l.jsx(Fr,{children:"最近7天的数据汇总"})]}),l.jsx(Dn,{children:l.jsx(Id,{config:{requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"}},className:"h-[400px] sm:h-[500px] w-full aspect-auto",children:l.jsxs(nw,{data:C,children:[l.jsx(Vg,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),l.jsx(Ug,{dataKey:"timestamp",tickFormatter:P=>{const I=new Date(P);return`${I.getMonth()+1}/${I.getDate()}`},stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),l.jsx(Wf,{yAxisId:"left",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),l.jsx(Wf,{yAxisId:"right",orientation:"right",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),l.jsx(Kf,{content:l.jsx(Bd,{labelFormatter:P=>new Date(P).toLocaleDateString("zh-CN")})}),l.jsx(ote,{content:l.jsx(PP,{})}),l.jsx(Wg,{yAxisId:"left",dataKey:"requests",fill:"var(--color-requests)"}),l.jsx(Wg,{yAxisId:"right",dataKey:"cost",fill:"var(--color-cost)"})]})})})]})})]}),l.jsxs(Dt,{className:"border-2 border-primary/20",children:[l.jsx(kn,{className:"pb-3",children:l.jsx(jn,{className:"text-lg",children:"每日一言"})}),l.jsx(Dn,{children:g?l.jsxs("div",{className:"space-y-2",children:[l.jsx(p9,{className:"h-6 w-3/4"}),l.jsx(p9,{className:"h-4 w-1/4"})]}):f?l.jsxs("div",{className:"space-y-2",children:[l.jsxs("p",{className:"text-lg font-medium leading-relaxed italic",children:['"',f.hitokoto,'"']}),l.jsxs("p",{className:"text-sm text-muted-foreground text-right",children:["—— ",f.from]})]}):null})]})]})})}const ute={theme:"system",setTheme:()=>null},LP=b.createContext(ute),b6=()=>{const t=b.useContext(LP);if(t===void 0)throw new Error("useTheme must be used within a ThemeProvider");return t},dte=(t,e,n)=>{const r=document.documentElement.classList.contains("no-animations");if(!document.startViewTransition||r){e(t);return}const s=n.clientX,i=n.clientY,a=Math.hypot(Math.max(s,innerWidth-s),Math.max(i,innerHeight-i));document.startViewTransition(()=>{e(t)}).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${s}px ${i}px)`,`circle(${a}px at ${s}px ${i}px)`]},{duration:500,easing:"ease-in-out",pseudoElement:"::view-transition-new(root)"})})},IP=b.createContext(void 0),BP=()=>{const t=b.useContext(IP);if(t===void 0)throw new Error("useAnimation must be used within an AnimationProvider");return t};var Vv="Switch",[hte]=ha(Vv),[fte,mte]=hte(Vv),qP=b.forwardRef((t,e)=>{const{__scopeSwitch:n,name:r,checked:s,defaultChecked:i,required:a,disabled:o,value:c="on",onCheckedChange:h,form:f,...m}=t,[g,x]=b.useState(null),y=Bn(e,C=>x(C)),w=b.useRef(!1),S=g?f||!!g.closest("form"):!0,[k,N]=wo({prop:s,defaultProp:i??!1,onChange:h,caller:Vv});return l.jsxs(fte,{scope:n,checked:k,disabled:o,children:[l.jsx(on.button,{type:"button",role:"switch","aria-checked":k,"aria-required":a,"data-state":HP(k),"data-disabled":o?"":void 0,disabled:o,value:c,...m,ref:y,onClick:tt(t.onClick,C=>{N(T=>!T),S&&(w.current=C.isPropagationStopped(),w.current||C.stopPropagation())})}),S&&l.jsx(QP,{control:g,bubbles:!w.current,name:r,value:c,checked:k,required:a,disabled:o,form:f,style:{transform:"translateX(-100%)"}})]})});qP.displayName=Vv;var FP="SwitchThumb",$P=b.forwardRef((t,e)=>{const{__scopeSwitch:n,...r}=t,s=mte(FP,n);return l.jsx(on.span,{"data-state":HP(s.checked),"data-disabled":s.disabled?"":void 0,...r,ref:e})});$P.displayName=FP;var pte="SwitchBubbleInput",QP=b.forwardRef(({__scopeSwitch:t,control:e,checked:n,bubbles:r=!0,...s},i)=>{const a=b.useRef(null),o=Bn(a,i),c=BD(n),h=qD(e);return b.useEffect(()=>{const f=a.current;if(!f)return;const m=window.HTMLInputElement.prototype,x=Object.getOwnPropertyDescriptor(m,"checked").set;if(c!==n&&x){const y=new Event("click",{bubbles:r});x.call(f,n),f.dispatchEvent(y)}},[c,n,r]),l.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:n,...s,tabIndex:-1,ref:o,style:{...s.style,...h,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});QP.displayName=pte;function HP(t){return t?"checked":"unchecked"}var VP=qP,gte=$P;const Pt=b.forwardRef(({className:t,...e},n)=>l.jsx(VP,{className:ve("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",t),...e,ref:n,children:l.jsx(gte,{className:ve("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));Pt.displayName=VP.displayName;const xte=Ih("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),ue=b.forwardRef(({className:t,...e},n)=>l.jsx(FD,{ref:n,className:ve(xte(),t),...e}));ue.displayName=FD.displayName;const Pe=b.forwardRef(({className:t,type:e,...n},r)=>l.jsx("input",{type:e,className:ve("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",t),ref:r,...n}));Pe.displayName="Input";const vte=5,yte=5e3;let fw=0;function bte(){return fw=(fw+1)%Number.MAX_SAFE_INTEGER,fw.toString()}const mw=new Map,b9=t=>{if(mw.has(t))return;const e=setTimeout(()=>{mw.delete(t),Nm({type:"REMOVE_TOAST",toastId:t})},yte);mw.set(t,e)},wte=(t,e)=>{switch(e.type){case"ADD_TOAST":return{...t,toasts:[e.toast,...t.toasts].slice(0,vte)};case"UPDATE_TOAST":return{...t,toasts:t.toasts.map(n=>n.id===e.toast.id?{...n,...e.toast}:n)};case"DISMISS_TOAST":{const{toastId:n}=e;return n?b9(n):t.toasts.forEach(r=>{b9(r.id)}),{...t,toasts:t.toasts.map(r=>r.id===n||n===void 0?{...r,open:!1}:r)}}case"REMOVE_TOAST":return e.toastId===void 0?{...t,toasts:[]}:{...t,toasts:t.toasts.filter(n=>n.id!==e.toastId)}}},e1=[];let t1={toasts:[]};function Nm(t){t1=wte(t1,t),e1.forEach(e=>{e(t1)})}function Ste({...t}){const e=bte(),n=s=>Nm({type:"UPDATE_TOAST",toast:{...s,id:e}}),r=()=>Nm({type:"DISMISS_TOAST",toastId:e});return Nm({type:"ADD_TOAST",toast:{...t,id:e,open:!0,onOpenChange:s=>{s||r()}}}),{id:e,dismiss:r,update:n}}function ts(){const[t,e]=b.useState(t1);return b.useEffect(()=>(e1.push(e),()=>{const n=e1.indexOf(e);n>-1&&e1.splice(n,1)}),[t]),{...t,toast:Ste,dismiss:n=>Nm({type:"DISMISS_TOAST",toastId:n})}}const kte=[{id:"minLength",label:"长度至少 10 位",description:"Token 长度必须大于等于 10 个字符",validate:t=>t.length>=10},{id:"hasUppercase",label:"包含大写字母",description:"至少包含一个大写字母 (A-Z)",validate:t=>/[A-Z]/.test(t)},{id:"hasLowercase",label:"包含小写字母",description:"至少包含一个小写字母 (a-z)",validate:t=>/[a-z]/.test(t)},{id:"hasSpecialChar",label:"包含特殊符号",description:"至少包含一个特殊符号 (!@#$%^&*()_+-=[]{}|;:,.<>?/)",validate:t=>/[!@#$%^&*()_+\-=[\]{}|;:,.<>?/]/.test(t)}];function jte(t){const e=kte.map(r=>({id:r.id,label:r.label,description:r.description,passed:r.validate(t)}));return{isValid:e.every(r=>r.passed),rules:e}}const w6="0.11.5",S6="MaiBot Dashboard",Ote=`${S6} v${w6}`,Nte=(t="v")=>`${t}${w6}`,xr=t6,Bh=$D,Cte=Zk,k6=_v,UP=b.forwardRef(({className:t,...e},n)=>l.jsx(Tv,{ref:n,className:ve("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),...e}));UP.displayName=Tv.displayName;const lr=b.forwardRef(({className:t,children:e,...n},r)=>l.jsxs(Cte,{children:[l.jsx(UP,{}),l.jsxs(Ev,{ref:r,className:ve("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",t),...n,children:[e,l.jsxs(_v,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[l.jsx(P0,{className:"h-4 w-4"}),l.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));lr.displayName=Ev.displayName;const or=({className:t,...e})=>l.jsx("div",{className:ve("flex flex-col space-y-1.5 text-center sm:text-left",t),...e});or.displayName="DialogHeader";const as=({className:t,...e})=>l.jsx("div",{className:ve("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...e});as.displayName="DialogFooter";const cr=b.forwardRef(({className:t,...e},n)=>l.jsx(Jk,{ref:n,className:ve("text-lg font-semibold leading-none tracking-tight",t),...e}));cr.displayName=Jk.displayName;const Hr=b.forwardRef(({className:t,...e},n)=>l.jsx(e6,{ref:n,className:ve("text-sm text-muted-foreground",t),...e}));Hr.displayName=e6.displayName;var Tte=Symbol("radix.slottable");function Ete(t){const e=({children:n})=>l.jsx(l.Fragment,{children:n});return e.displayName=`${t}.Slottable`,e.__radixId=Tte,e}var WP="AlertDialog",[_te]=ha(WP,[QD]),So=QD(),GP=t=>{const{__scopeAlertDialog:e,...n}=t,r=So(e);return l.jsx(t6,{...r,...n,modal:!0})};GP.displayName=WP;var Mte="AlertDialogTrigger",XP=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=So(n);return l.jsx($D,{...s,...r,ref:e})});XP.displayName=Mte;var Ate="AlertDialogPortal",YP=t=>{const{__scopeAlertDialog:e,...n}=t,r=So(e);return l.jsx(Zk,{...r,...n})};YP.displayName=Ate;var Rte="AlertDialogOverlay",KP=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=So(n);return l.jsx(Tv,{...s,...r,ref:e})});KP.displayName=Rte;var eh="AlertDialogContent",[Dte,zte]=_te(eh),Pte=Ete("AlertDialogContent"),ZP=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,children:r,...s}=t,i=So(n),a=b.useRef(null),o=Bn(e,a),c=b.useRef(null);return l.jsx(gK,{contentName:eh,titleName:JP,docsSlug:"alert-dialog",children:l.jsx(Dte,{scope:n,cancelRef:c,children:l.jsxs(Ev,{role:"alertdialog",...i,...s,ref:o,onOpenAutoFocus:tt(s.onOpenAutoFocus,h=>{h.preventDefault(),c.current?.focus({preventScroll:!0})}),onPointerDownOutside:h=>h.preventDefault(),onInteractOutside:h=>h.preventDefault(),children:[l.jsx(Pte,{children:r}),l.jsx(Ite,{contentRef:a})]})})})});ZP.displayName=eh;var JP="AlertDialogTitle",eL=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=So(n);return l.jsx(Jk,{...s,...r,ref:e})});eL.displayName=JP;var tL="AlertDialogDescription",nL=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=So(n);return l.jsx(e6,{...s,...r,ref:e})});nL.displayName=tL;var Lte="AlertDialogAction",rL=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=So(n);return l.jsx(_v,{...s,...r,ref:e})});rL.displayName=Lte;var sL="AlertDialogCancel",iL=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,{cancelRef:s}=zte(sL,n),i=So(n),a=Bn(e,s);return l.jsx(_v,{...i,...r,ref:a})});iL.displayName=sL;var Ite=({contentRef:t})=>{const e=`\`${eh}\` requires a description for the component to be accessible for screen reader users. - -You can add a description to the \`${eh}\` by passing a \`${tL}\` component as a child, which also benefits sighted users by adding visible context to the dialog. - -Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${eh}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component. - -For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;return b.useEffect(()=>{document.getElementById(t.current?.getAttribute("aria-describedby"))||console.warn(e)},[e,t]),null},Bte=GP,qte=XP,Fte=YP,aL=KP,lL=ZP,oL=rL,cL=iL,uL=eL,dL=nL;const Nn=Bte,Qr=qte,$te=Fte,hL=b.forwardRef(({className:t,...e},n)=>l.jsx(aL,{className:ve("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),...e,ref:n}));hL.displayName=aL.displayName;const gn=b.forwardRef(({className:t,...e},n)=>l.jsxs($te,{children:[l.jsx(hL,{}),l.jsx(lL,{ref:n,className:ve("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",t),...e})]}));gn.displayName=lL.displayName;const xn=({className:t,...e})=>l.jsx("div",{className:ve("flex flex-col space-y-2 text-center sm:text-left",t),...e});xn.displayName="AlertDialogHeader";const vn=({className:t,...e})=>l.jsx("div",{className:ve("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...e});vn.displayName="AlertDialogFooter";const yn=b.forwardRef(({className:t,...e},n)=>l.jsx(uL,{ref:n,className:ve("text-lg font-semibold",t),...e}));yn.displayName=uL.displayName;const bn=b.forwardRef(({className:t,...e},n)=>l.jsx(dL,{ref:n,className:ve("text-sm text-muted-foreground",t),...e}));bn.displayName=dL.displayName;const wn=b.forwardRef(({className:t,...e},n)=>l.jsx(oL,{ref:n,className:ve(Hm(),t),...e}));wn.displayName=oL.displayName;const Sn=b.forwardRef(({className:t,...e},n)=>l.jsx(cL,{ref:n,className:ve(Hm({variant:"outline"}),"mt-2 sm:mt-0",t),...e}));Sn.displayName=cL.displayName;function Qte(){return l.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[l.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:l.jsxs("div",{children:[l.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"系统设置"}),l.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理您的应用偏好设置"})]})}),l.jsxs(sa,{defaultValue:"appearance",className:"w-full",children:[l.jsxs(Mi,{className:"grid w-full grid-cols-2 sm:grid-cols-4 gap-0.5 sm:gap-1 h-auto p-1",children:[l.jsxs(zt,{value:"appearance",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[l.jsx(sz,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),l.jsx("span",{children:"外观"})]}),l.jsxs(zt,{value:"security",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[l.jsx(MK,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),l.jsx("span",{children:"安全"})]}),l.jsxs(zt,{value:"other",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[l.jsx(bu,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),l.jsx("span",{children:"其他"})]}),l.jsxs(zt,{value:"about",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[l.jsx(ra,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),l.jsx("span",{children:"关于"})]})]}),l.jsxs(hn,{className:"h-[calc(100vh-240px)] sm:h-[calc(100vh-280px)] mt-4 sm:mt-6",children:[l.jsx(tn,{value:"appearance",className:"mt-0",children:l.jsx(Hte,{})}),l.jsx(tn,{value:"security",className:"mt-0",children:l.jsx(Vte,{})}),l.jsx(tn,{value:"other",className:"mt-0",children:l.jsx(Ute,{})}),l.jsx(tn,{value:"about",className:"mt-0",children:l.jsx(Wte,{})})]})]})]})}function w9(t){const e=document.documentElement,r={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[t];if(r)e.style.setProperty("--primary",r.hsl),r.gradient?(e.style.setProperty("--primary-gradient",r.gradient),e.classList.add("has-gradient")):(e.style.removeProperty("--primary-gradient"),e.classList.remove("has-gradient"));else if(t.startsWith("#")){const s=i=>{i=i.replace("#","");const a=parseInt(i.substring(0,2),16)/255,o=parseInt(i.substring(2,4),16)/255,c=parseInt(i.substring(4,6),16)/255,h=Math.max(a,o,c),f=Math.min(a,o,c);let m=0,g=0;const x=(h+f)/2;if(h!==f){const y=h-f;switch(g=x>.5?y/(2-h-f):y/(h+f),h){case a:m=((o-c)/y+(olocalStorage.getItem("accent-color")||"blue");b.useEffect(()=>{const h=localStorage.getItem("accent-color")||"blue";w9(h)},[]);const c=h=>{o(h),localStorage.setItem("accent-color",h),w9(h)};return l.jsxs("div",{className:"space-y-6 sm:space-y-8",children:[l.jsxs("div",{children:[l.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题模式"}),l.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 sm:gap-4",children:[l.jsx(pw,{value:"light",current:t,onChange:e,label:"浅色",description:"始终使用浅色主题"}),l.jsx(pw,{value:"dark",current:t,onChange:e,label:"深色",description:"始终使用深色主题"}),l.jsx(pw,{value:"system",current:t,onChange:e,label:"跟随系统",description:"根据系统设置自动切换"})]})]}),l.jsxs("div",{children:[l.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题色"}),l.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[l.jsxs("div",{children:[l.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"单色"}),l.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[l.jsx(Wi,{value:"blue",current:a,onChange:c,label:"蓝色",colorClass:"bg-blue-500"}),l.jsx(Wi,{value:"purple",current:a,onChange:c,label:"紫色",colorClass:"bg-purple-500"}),l.jsx(Wi,{value:"green",current:a,onChange:c,label:"绿色",colorClass:"bg-green-500"}),l.jsx(Wi,{value:"orange",current:a,onChange:c,label:"橙色",colorClass:"bg-orange-500"}),l.jsx(Wi,{value:"pink",current:a,onChange:c,label:"粉色",colorClass:"bg-pink-500"}),l.jsx(Wi,{value:"red",current:a,onChange:c,label:"红色",colorClass:"bg-red-500"})]})]}),l.jsxs("div",{children:[l.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"渐变色"}),l.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[l.jsx(Wi,{value:"gradient-sunset",current:a,onChange:c,label:"日落",colorClass:"bg-gradient-to-r from-orange-500 to-pink-500"}),l.jsx(Wi,{value:"gradient-ocean",current:a,onChange:c,label:"海洋",colorClass:"bg-gradient-to-r from-blue-500 to-cyan-500"}),l.jsx(Wi,{value:"gradient-forest",current:a,onChange:c,label:"森林",colorClass:"bg-gradient-to-r from-green-500 to-emerald-500"}),l.jsx(Wi,{value:"gradient-aurora",current:a,onChange:c,label:"极光",colorClass:"bg-gradient-to-r from-purple-500 to-pink-500"}),l.jsx(Wi,{value:"gradient-fire",current:a,onChange:c,label:"烈焰",colorClass:"bg-gradient-to-r from-red-500 to-orange-500"}),l.jsx(Wi,{value:"gradient-twilight",current:a,onChange:c,label:"暮光",colorClass:"bg-gradient-to-r from-indigo-500 to-purple-500"})]})]}),l.jsxs("div",{children:[l.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"自定义颜色"}),l.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 sm:gap-4",children:[l.jsx("div",{className:"flex-1",children:l.jsx("input",{type:"color",value:a.startsWith("#")?a:"#3b82f6",onChange:h=>c(h.target.value),className:"h-10 sm:h-12 w-full rounded-lg border-2 border-border cursor-pointer",title:"选择自定义颜色"})}),l.jsx("div",{className:"flex-1",children:l.jsx(Pe,{type:"text",value:a,onChange:h=>c(h.target.value),placeholder:"#3b82f6",className:"font-mono text-sm"})})]}),l.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground mt-2",children:"点击色块选择颜色,或手动输入 HEX 颜色代码"})]})]})]}),l.jsxs("div",{children:[l.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"动画效果"}),l.jsxs("div",{className:"space-y-2 sm:space-y-3",children:[l.jsx("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{className:"space-y-0.5 flex-1",children:[l.jsx(ue,{htmlFor:"animations",className:"text-base font-medium cursor-pointer",children:"启用动画效果"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后将禁用所有过渡动画和特效,提升性能"})]}),l.jsx(Pt,{id:"animations",checked:n,onCheckedChange:r})]})}),l.jsx("div",{className:"rounded-lg border bg-card p-4",children:l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{className:"space-y-0.5 flex-1",children:[l.jsx(ue,{htmlFor:"waves-background",className:"text-base font-medium cursor-pointer",children:"登录页波浪背景"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后登录页将使用纯色背景,适合低性能设备"})]}),l.jsx(Pt,{id:"waves-background",checked:s,onCheckedChange:i})]})})]})]})]})}function Vte(){const t=Da(),[e,n]=b.useState(""),[r,s]=b.useState(""),[i,a]=b.useState(!1),[o,c]=b.useState(!1),[h,f]=b.useState(!1),[m,g]=b.useState(!1),[x,y]=b.useState(!1),[w,S]=b.useState(!1),[k,N]=b.useState(""),[C,T]=b.useState(!1),{toast:_}=ts(),E=b.useMemo(()=>jte(r),[r]),M=()=>localStorage.getItem("access-token")||"",L=async z=>{try{await navigator.clipboard.writeText(z),y(!0),_({title:"复制成功",description:"Token 已复制到剪贴板"}),setTimeout(()=>y(!1),2e3)}catch{_({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},P=async()=>{if(!r.trim()){_({title:"输入错误",description:"请输入新的 Token",variant:"destructive"});return}if(!E.isValid){const z=E.rules.filter(H=>!H.passed).map(H=>H.label).join(", ");_({title:"格式错误",description:`Token 不符合要求: ${z}`,variant:"destructive"});return}f(!0);try{const z=M(),H=await fetch("/api/webui/auth/update",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${z}`},body:JSON.stringify({new_token:r.trim()})}),B=await H.json();H.ok&&B.success?(localStorage.setItem("access-token",r.trim()),s(""),e&&n(r.trim()),_({title:"更新成功",description:"Access Token 已更新,即将跳转到登录页"}),setTimeout(()=>{localStorage.removeItem("access-token"),t({to:"/auth"})},1500)):_({title:"更新失败",description:B.message||"无法更新 Token",variant:"destructive"})}catch(z){console.error("更新 Token 错误:",z),_({title:"更新失败",description:"连接服务器失败",variant:"destructive"})}finally{f(!1)}},I=async()=>{g(!0);try{const z=M(),H=await fetch("/api/webui/auth/regenerate",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${z}`}}),B=await H.json();H.ok&&B.success?(localStorage.setItem("access-token",B.token),n(B.token),N(B.token),S(!0),T(!1),_({title:"生成成功",description:"新的 Access Token 已生成,请及时保存"})):_({title:"生成失败",description:B.message||"无法生成新 Token",variant:"destructive"})}catch(z){console.error("生成 Token 错误:",z),_({title:"生成失败",description:"连接服务器失败",variant:"destructive"})}finally{g(!1)}},Q=async()=>{try{await navigator.clipboard.writeText(k),T(!0),_({title:"复制成功",description:"Token 已复制到剪贴板"})}catch{_({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},U=()=>{S(!1),setTimeout(()=>{N(""),T(!1)},300),setTimeout(()=>{localStorage.removeItem("access-token"),t({to:"/auth"})},500)},ee=z=>{z||U()};return l.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[l.jsx(xr,{open:w,onOpenChange:ee,children:l.jsxs(lr,{className:"sm:max-w-md",children:[l.jsxs(or,{children:[l.jsxs(cr,{className:"flex items-center gap-2",children:[l.jsx(Oa,{className:"h-5 w-5 text-yellow-500"}),"新的 Access Token"]}),l.jsx(Hr,{children:"这是您的新 Token,请立即保存。关闭此窗口后将跳转到登录页面。"})]}),l.jsxs("div",{className:"space-y-4",children:[l.jsxs("div",{className:"rounded-lg border-2 border-primary/20 bg-primary/5 p-4",children:[l.jsx(ue,{className:"text-xs text-muted-foreground mb-2 block",children:"您的新 Token (64位安全令牌)"}),l.jsx("div",{className:"font-mono text-sm break-all select-all bg-background p-3 rounded border",children:k})]}),l.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:l.jsxs("div",{className:"flex gap-2",children:[l.jsx(Oa,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5"}),l.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[l.jsx("p",{className:"font-semibold",children:"重要提示"}),l.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[l.jsx("li",{children:"此 Token 仅显示一次,关闭后无法再查看"}),l.jsx("li",{children:"请立即复制并保存到安全的位置"}),l.jsx("li",{children:"关闭窗口后将自动跳转到登录页面"}),l.jsx("li",{children:"请使用新 Token 重新登录系统"})]})]})]})})]}),l.jsxs(as,{className:"gap-2 sm:gap-0",children:[l.jsx(de,{variant:"outline",onClick:Q,className:"gap-2",children:C?l.jsxs(l.Fragment,{children:[l.jsx(ol,{className:"h-4 w-4 text-green-500"}),"已复制"]}):l.jsxs(l.Fragment,{children:[l.jsx(O1,{className:"h-4 w-4"}),"复制 Token"]})}),l.jsx(de,{onClick:U,children:"我已保存,关闭"})]})]})}),l.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[l.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"当前 Access Token"}),l.jsx("div",{className:"space-y-3 sm:space-y-4",children:l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{htmlFor:"current-token",className:"text-sm",children:"您的访问令牌"}),l.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[l.jsxs("div",{className:"relative flex-1",children:[l.jsx(Pe,{id:"current-token",type:i?"text":"password",value:e||M(),readOnly:!0,className:"pr-10 font-mono text-sm",placeholder:"点击查看按钮显示 Token"}),l.jsx("button",{onClick:()=>{e||n(M()),a(!i)},className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:i?"隐藏":"显示",children:i?l.jsx(N1,{className:"h-4 w-4 text-muted-foreground"}):l.jsx(oa,{className:"h-4 w-4 text-muted-foreground"})})]}),l.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[l.jsx(de,{variant:"outline",size:"icon",onClick:()=>L(M()),title:"复制到剪贴板",className:"flex-shrink-0",children:x?l.jsx(ol,{className:"h-4 w-4 text-green-500"}):l.jsx(O1,{className:"h-4 w-4"})}),l.jsxs(Nn,{children:[l.jsx(Qr,{asChild:!0,children:l.jsxs(de,{variant:"outline",disabled:m,className:"gap-2 flex-1 sm:flex-none",children:[l.jsx(Ls,{className:ve("h-4 w-4",m&&"animate-spin")}),l.jsx("span",{className:"hidden sm:inline",children:"重新生成"}),l.jsx("span",{className:"sm:hidden",children:"生成"})]})}),l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认重新生成 Token"}),l.jsx(bn,{children:"这将生成一个新的 64 位安全令牌,并使当前 Token 立即失效。 您需要使用新 Token 重新登录系统。此操作不可撤销,确定要继续吗?"})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:I,children:"确认生成"})]})]})]})]})]}),l.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground",children:"请妥善保管您的 Access Token,不要泄露给他人"})]})})]}),l.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[l.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"自定义 Access Token"}),l.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{htmlFor:"new-token",className:"text-sm",children:"新的访问令牌"}),l.jsxs("div",{className:"relative",children:[l.jsx(Pe,{id:"new-token",type:o?"text":"password",value:r,onChange:z=>s(z.target.value),className:"pr-10 font-mono text-sm",placeholder:"输入自定义 Token"}),l.jsx("button",{onClick:()=>c(!o),className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:o?"隐藏":"显示",children:o?l.jsx(N1,{className:"h-4 w-4 text-muted-foreground"}):l.jsx(oa,{className:"h-4 w-4 text-muted-foreground"})})]}),r&&l.jsxs("div",{className:"mt-3 space-y-2 p-3 rounded-lg bg-muted/50",children:[l.jsx("p",{className:"text-sm font-medium text-foreground",children:"Token 安全要求:"}),l.jsx("div",{className:"space-y-1.5",children:E.rules.map(z=>l.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[z.passed?l.jsx(xc,{className:"h-4 w-4 text-green-500 flex-shrink-0"}):l.jsx(AK,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),l.jsx("span",{className:ve(z.passed?"text-green-600 dark:text-green-400":"text-muted-foreground"),children:z.label})]},z.id))}),E.isValid&&l.jsx("div",{className:"mt-2 pt-2 border-t border-border",children:l.jsxs("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[l.jsx(ol,{className:"h-4 w-4"}),l.jsx("span",{className:"font-medium",children:"Token 格式正确,可以使用"})]})})]})]}),l.jsx(de,{onClick:P,disabled:h||!E.isValid||!r,className:"w-full sm:w-auto",children:h?"更新中...":"更新自定义 Token"})]})]}),l.jsxs("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3 sm:p-4",children:[l.jsx("h4",{className:"text-sm sm:text-base font-semibold text-yellow-900 dark:text-yellow-200 mb-2",children:"安全提示"}),l.jsxs("ul",{className:"text-xs sm:text-sm text-yellow-800 dark:text-yellow-300 space-y-1 list-disc list-inside",children:[l.jsx("li",{children:"重新生成 Token 会创建系统随机生成的 64 位安全令牌"}),l.jsx("li",{children:"自定义 Token 必须满足所有安全要求才能使用"}),l.jsx("li",{children:"更新 Token 后,旧的 Token 将立即失效"}),l.jsx("li",{children:"请在安全的环境下查看和复制 Token"}),l.jsx("li",{children:"如果怀疑 Token 泄露,请立即重新生成或更新"}),l.jsx("li",{children:"建议使用系统生成的 Token 以获得最高安全性"})]})]})]})}function Ute(){const t=Da(),{toast:e}=ts(),[n,r]=b.useState(!1),[s,i]=b.useState(!1);if(s)throw new Error("这是一个手动触发的测试错误,用于验证错误边界组件是否正常工作。");const a=async()=>{r(!0);try{const o=localStorage.getItem("access-token"),c=await fetch("/api/webui/setup/reset",{method:"POST",headers:{Authorization:`Bearer ${o}`}}),h=await c.json();c.ok&&h.success?(e({title:"重置成功",description:"即将进入初次配置向导"}),setTimeout(()=>{t({to:"/setup"})},1e3)):e({title:"重置失败",description:h.message||"无法重置配置状态",variant:"destructive"})}catch(o){console.error("重置配置状态错误:",o),e({title:"重置失败",description:"连接服务器失败",variant:"destructive"})}finally{r(!1)}};return l.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[l.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[l.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"配置向导"}),l.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[l.jsx("div",{className:"space-y-2",children:l.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"重新进行初次配置向导,可以帮助您重新设置系统的基础配置。"})}),l.jsxs(Nn,{children:[l.jsx(Qr,{asChild:!0,children:l.jsxs(de,{variant:"outline",disabled:n,className:"gap-2",children:[l.jsx(RK,{className:ve("h-4 w-4",n&&"animate-spin")}),"重新进行初次配置"]})}),l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认重新配置"}),l.jsx(bn,{children:"这将带您重新进入初次配置向导。您可以重新设置系统的基础配置项。确定要继续吗?"})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:a,children:"确认重置"})]})]})]})]})]}),l.jsxs("div",{className:"rounded-lg border border-dashed border-yellow-500/50 bg-yellow-500/5 p-4 sm:p-6",children:[l.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[l.jsx(Oa,{className:"h-5 w-5 text-yellow-500"}),"开发者工具"]}),l.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[l.jsx("div",{className:"space-y-2",children:l.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"以下功能仅供开发调试使用,可能会导致页面崩溃或异常。"})}),l.jsxs(Nn,{children:[l.jsx(Qr,{asChild:!0,children:l.jsxs(de,{variant:"destructive",className:"gap-2",children:[l.jsx(Oa,{className:"h-4 w-4"}),"触发测试错误"]})}),l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认触发错误"}),l.jsx(bn,{children:"这将手动触发一个 React 错误,用于测试错误边界组件的显示效果。 页面将显示错误界面,您可以通过刷新页面或点击返回首页来恢复。"})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:()=>i(!0),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认触发"})]})]})]})]})]})]})}function Wte(){return l.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[l.jsx("div",{className:"rounded-lg border-2 border-primary/30 bg-gradient-to-r from-primary/5 to-primary/10 p-4 sm:p-6",children:l.jsxs("div",{className:"flex items-start gap-3 sm:gap-4",children:[l.jsx("div",{className:"flex-shrink-0 rounded-lg bg-primary/10 p-2 sm:p-3",children:l.jsx("svg",{className:"h-6 w-6 sm:h-8 sm:w-8 text-primary",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:l.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})})}),l.jsxs("div",{className:"flex-1 min-w-0",children:[l.jsx("h3",{className:"text-lg sm:text-xl font-bold text-foreground mb-2",children:"开源项目"}),l.jsx("p",{className:"text-sm sm:text-base text-muted-foreground mb-3",children:"本项目在 GitHub 开源,欢迎 Star ⭐ 支持!"}),l.jsxs("a",{href:"https://github.com/Mai-with-u/MaiBot-Dashboard",target:"_blank",rel:"noopener noreferrer",className:ve("inline-flex items-center gap-2 px-4 py-2 rounded-lg","bg-primary text-primary-foreground font-medium text-sm","hover:bg-primary/90 transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"),children:[l.jsx("svg",{className:"h-4 w-4",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:l.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})}),"前往 GitHub",l.jsx("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:l.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})})]})]})]})}),l.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[l.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:["关于 ",S6]}),l.jsxs("div",{className:"space-y-2 text-xs sm:text-sm text-muted-foreground",children:[l.jsxs("p",{children:["版本: ",w6]}),l.jsx("p",{children:"麦麦(MaiBot)的现代化 Web 管理界面"})]})]}),l.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[l.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"作者"}),l.jsxs("div",{className:"space-y-3",children:[l.jsxs("div",{className:"space-y-1",children:[l.jsx("p",{className:"text-sm font-medium",children:"MaiBot 核心"}),l.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"Mai-with-u"})]}),l.jsxs("div",{className:"space-y-1",children:[l.jsx("p",{className:"text-sm font-medium",children:"WebUI"}),l.jsxs("p",{className:"text-xs sm:text-sm text-muted-foreground",children:["Mai-with-u ",l.jsx("a",{href:"https://github.com/DrSmoothl",target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"@MotricSeven"})]})]})]})]}),l.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[l.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"技术栈"}),l.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-xs sm:text-sm text-muted-foreground",children:[l.jsxs("div",{className:"space-y-1.5",children:[l.jsx("p",{className:"font-medium text-foreground",children:"前端框架"}),l.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[l.jsx("li",{children:"React 19.2.0"}),l.jsx("li",{children:"TypeScript 5.7.2"}),l.jsx("li",{children:"Vite 6.0.7"}),l.jsx("li",{children:"TanStack Router 1.94.2"})]})]}),l.jsxs("div",{className:"space-y-1.5",children:[l.jsx("p",{className:"font-medium text-foreground",children:"UI 组件"}),l.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[l.jsx("li",{children:"shadcn/ui"}),l.jsx("li",{children:"Radix UI"}),l.jsx("li",{children:"Tailwind CSS 3.4.17"}),l.jsx("li",{children:"Lucide Icons"})]})]}),l.jsxs("div",{className:"space-y-1.5",children:[l.jsx("p",{className:"font-medium text-foreground",children:"后端"}),l.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[l.jsx("li",{children:"Python 3.12+"}),l.jsx("li",{children:"FastAPI"}),l.jsx("li",{children:"Uvicorn"}),l.jsx("li",{children:"WebSocket"})]})]}),l.jsxs("div",{className:"space-y-1.5",children:[l.jsx("p",{className:"font-medium text-foreground",children:"构建工具"}),l.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[l.jsx("li",{children:"Bun / npm"}),l.jsx("li",{children:"ESLint 9.17.0"}),l.jsx("li",{children:"PostCSS"})]})]})]})]}),l.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[l.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源库感谢"}),l.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mb-3",children:"本项目使用了以下优秀的开源库,感谢他们的贡献:"}),l.jsx(hn,{className:"h-[300px] sm:h-[400px]",children:l.jsxs("div",{className:"space-y-4 pr-4",children:[l.jsxs("div",{className:"space-y-2",children:[l.jsx("p",{className:"text-sm font-medium text-foreground",children:"UI 框架与组件"}),l.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[l.jsx(hr,{name:"React",description:"用户界面构建库",license:"MIT"}),l.jsx(hr,{name:"shadcn/ui",description:"优雅的 React 组件库",license:"MIT"}),l.jsx(hr,{name:"Radix UI",description:"无样式的可访问组件库",license:"MIT"}),l.jsx(hr,{name:"Tailwind CSS",description:"实用优先的 CSS 框架",license:"MIT"}),l.jsx(hr,{name:"Lucide React",description:"精美的图标库",license:"ISC"})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx("p",{className:"text-sm font-medium text-foreground",children:"路由与状态管理"}),l.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[l.jsx(hr,{name:"TanStack Router",description:"类型安全的路由库",license:"MIT"}),l.jsx(hr,{name:"Zustand",description:"轻量级状态管理",license:"MIT"})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx("p",{className:"text-sm font-medium text-foreground",children:"表单处理"}),l.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[l.jsx(hr,{name:"React Hook Form",description:"高性能表单库",license:"MIT"}),l.jsx(hr,{name:"Zod",description:"TypeScript 优先的 schema 验证",license:"MIT"})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx("p",{className:"text-sm font-medium text-foreground",children:"工具库"}),l.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[l.jsx(hr,{name:"clsx",description:"条件 className 构建工具",license:"MIT"}),l.jsx(hr,{name:"tailwind-merge",description:"Tailwind 类名合并工具",license:"MIT"}),l.jsx(hr,{name:"class-variance-authority",description:"组件变体管理",license:"Apache-2.0"}),l.jsx(hr,{name:"date-fns",description:"现代化日期处理库",license:"MIT"})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx("p",{className:"text-sm font-medium text-foreground",children:"动画效果"}),l.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[l.jsx(hr,{name:"Framer Motion",description:"React 动画库",license:"MIT"}),l.jsx(hr,{name:"vaul",description:"抽屉组件动画",license:"MIT"})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx("p",{className:"text-sm font-medium text-foreground",children:"后端框架"}),l.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[l.jsx(hr,{name:"FastAPI",description:"现代化 Python Web 框架",license:"MIT"}),l.jsx(hr,{name:"Uvicorn",description:"ASGI 服务器",license:"BSD-3-Clause"}),l.jsx(hr,{name:"Pydantic",description:"数据验证库",license:"MIT"}),l.jsx(hr,{name:"python-multipart",description:"文件上传支持",license:"Apache-2.0"})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx("p",{className:"text-sm font-medium text-foreground",children:"开发工具"}),l.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[l.jsx(hr,{name:"TypeScript",description:"JavaScript 的超集",license:"Apache-2.0"}),l.jsx(hr,{name:"Vite",description:"下一代前端构建工具",license:"MIT"}),l.jsx(hr,{name:"ESLint",description:"JavaScript 代码检查工具",license:"MIT"}),l.jsx(hr,{name:"PostCSS",description:"CSS 转换工具",license:"MIT"})]})]})]})})]}),l.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[l.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源许可"}),l.jsxs("div",{className:"space-y-3",children:[l.jsx("div",{className:"rounded-lg bg-primary/5 border border-primary/20 p-3 sm:p-4",children:l.jsxs("div",{className:"flex items-start gap-2 sm:gap-3",children:[l.jsx("div",{className:"flex-shrink-0 mt-0.5",children:l.jsx("div",{className:"rounded-md bg-primary/10 px-2 py-1",children:l.jsx("span",{className:"text-xs sm:text-sm font-bold text-primary",children:"GPLv3"})})}),l.jsxs("div",{className:"flex-1 min-w-0",children:[l.jsx("p",{className:"text-sm sm:text-base font-semibold text-foreground mb-1",children:"MaiBot WebUI"}),l.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目采用 GNU General Public License v3.0 开源许可证。 您可以自由地使用、修改和分发本软件,但必须保持相同的开源许可。"})]})]})}),l.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目依赖的所有开源库均遵循各自的开源许可证(MIT、Apache-2.0、BSD 等)。 感谢所有开源贡献者的无私奉献。"})]})]})]})}function hr({name:t,description:e,license:n}){return l.jsxs("div",{className:"flex items-start justify-between gap-2 rounded-lg border bg-muted/30 p-2.5 sm:p-3",children:[l.jsxs("div",{className:"flex-1 min-w-0",children:[l.jsx("p",{className:"font-medium text-foreground truncate",children:t}),l.jsx("p",{className:"text-muted-foreground text-xs mt-0.5",children:e})]}),l.jsx("span",{className:"inline-flex items-center rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-medium text-primary flex-shrink-0",children:n})]})}function pw({value:t,current:e,onChange:n,label:r,description:s}){const i=e===t;return l.jsxs("button",{onClick:()=>n(t),className:ve("relative rounded-lg border-2 p-3 sm:p-4 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",i?"border-primary bg-accent":"border-border"),children:[i&&l.jsx("div",{className:"absolute top-2 right-2 sm:top-3 sm:right-3 h-2 w-2 rounded-full bg-primary"}),l.jsxs("div",{className:"space-y-1",children:[l.jsx("div",{className:"text-sm sm:text-base font-medium",children:r}),l.jsx("div",{className:"text-[10px] sm:text-xs text-muted-foreground",children:s})]}),l.jsxs("div",{className:"mt-2 sm:mt-3 flex gap-1",children:[t==="light"&&l.jsxs(l.Fragment,{children:[l.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-200"}),l.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-300"}),l.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-400"})]}),t==="dark"&&l.jsxs(l.Fragment,{children:[l.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-700"}),l.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-800"}),l.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-900"})]}),t==="system"&&l.jsxs(l.Fragment,{children:[l.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-200 to-slate-700"}),l.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-300 to-slate-800"}),l.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-400 to-slate-900"})]})]})]})}function Wi({value:t,current:e,onChange:n,label:r,colorClass:s}){const i=e===t;return l.jsxs("button",{onClick:()=>n(t),className:ve("relative rounded-lg border-2 p-2 sm:p-3 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",i?"border-primary bg-accent":"border-border"),children:[i&&l.jsx("div",{className:"absolute top-1.5 right-1.5 sm:top-2 sm:right-2 h-1.5 w-1.5 sm:h-2 sm:w-2 rounded-full bg-primary"}),l.jsxs("div",{className:"flex flex-col items-center gap-1.5 sm:gap-2",children:[l.jsx("div",{className:ve("h-8 w-8 sm:h-10 sm:w-10 rounded-full",s)}),l.jsx("div",{className:"text-[10px] sm:text-xs font-medium text-center",children:r})]})]})}class Gte{grad3;p;perm;constructor(e=0){this.grad3=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],this.p=[];for(let n=0;n<256;n++)this.p[n]=Math.floor(Math.random()*256);this.perm=[];for(let n=0;n<512;n++)this.perm[n]=this.p[n&255]}dot(e,n,r){return e[0]*n+e[1]*r}mix(e,n,r){return(1-r)*e+r*n}fade(e){return e*e*e*(e*(e*6-15)+10)}perlin2(e,n){const r=Math.floor(e)&255,s=Math.floor(n)&255;e-=Math.floor(e),n-=Math.floor(n);const i=this.fade(e),a=this.fade(n),o=this.perm[r]+s,c=this.perm[o],h=this.perm[o+1],f=this.perm[r+1]+s,m=this.perm[f],g=this.perm[f+1];return this.mix(this.mix(this.dot(this.grad3[c%12],e,n),this.dot(this.grad3[m%12],e-1,n),i),this.mix(this.dot(this.grad3[h%12],e,n-1),this.dot(this.grad3[g%12],e-1,n-1),i),a)}}function Xte(){const t=b.useRef(null),e=b.useRef(null),n=b.useRef(void 0),r=b.useRef({mouse:{x:-10,y:0,lx:0,ly:0,sx:0,sy:0,v:0,vs:0,a:0,set:!1},lines:[],paths:[],noise:new Gte(Math.random()),bounding:null});return b.useEffect(()=>{const s=e.current,i=t.current;if(!s||!i)return;const a=r.current,o=()=>{const w=s.getBoundingClientRect();a.bounding=w,i.style.width=`${w.width}px`,i.style.height=`${w.height}px`},c=()=>{if(!a.bounding)return;const{width:w,height:S}=a.bounding;a.lines=[],a.paths.forEach(P=>P.remove()),a.paths=[];const k=10,N=32,C=w+200,T=S+30,_=Math.ceil(C/k),E=Math.ceil(T/N),M=(w-k*_)/2,L=(S-N*E)/2;for(let P=0;P<=_;P++){const I=[];for(let U=0;U<=E;U++){const ee={x:M+k*P,y:L+N*U,wave:{x:0,y:0},cursor:{x:0,y:0,vx:0,vy:0}};I.push(ee)}const Q=document.createElementNS("http://www.w3.org/2000/svg","path");i.appendChild(Q),a.paths.push(Q),a.lines.push(I)}},h=w=>{const{lines:S,mouse:k,noise:N}=a;S.forEach(C=>{C.forEach(T=>{const _=N.perlin2((T.x+w*.0125)*.002,(T.y+w*.005)*.0015)*12;T.wave.x=Math.cos(_)*32,T.wave.y=Math.sin(_)*16;const E=T.x-k.sx,M=T.y-k.sy,L=Math.hypot(E,M),P=Math.max(175,k.vs);if(L{const k={x:w.x+w.wave.x+(S?w.cursor.x:0),y:w.y+w.wave.y+(S?w.cursor.y:0)};return k.x=Math.round(k.x*10)/10,k.y=Math.round(k.y*10)/10,k},m=()=>{const{lines:w,paths:S}=a;w.forEach((k,N)=>{let C=f(k[0],!1),T=`M ${C.x} ${C.y}`;k.forEach((_,E)=>{const M=E===k.length-1;C=f(_,!M),T+=`L ${C.x} ${C.y}`}),S[N].setAttribute("d",T)})},g=w=>{const{mouse:S}=a;S.sx+=(S.x-S.sx)*.1,S.sy+=(S.y-S.sy)*.1;const k=S.x-S.lx,N=S.y-S.ly,C=Math.hypot(k,N);S.v=C,S.vs+=(C-S.vs)*.1,S.vs=Math.min(100,S.vs),S.lx=S.x,S.ly=S.y,S.a=Math.atan2(N,k),s&&(s.style.setProperty("--x",`${S.sx}px`),s.style.setProperty("--y",`${S.sy}px`)),h(w),m(),n.current=requestAnimationFrame(g)},x=w=>{if(!a.bounding)return;const{mouse:S}=a;S.x=w.pageX-a.bounding.left,S.y=w.pageY-a.bounding.top+window.scrollY,S.set||(S.sx=S.x,S.sy=S.y,S.lx=S.x,S.ly=S.y,S.set=!0)},y=()=>{o(),c()};return o(),c(),window.addEventListener("resize",y),window.addEventListener("mousemove",x),n.current=requestAnimationFrame(g),()=>{window.removeEventListener("resize",y),window.removeEventListener("mousemove",x),n.current&&cancelAnimationFrame(n.current)}},[]),l.jsxs("div",{ref:e,className:"waves-background",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflow:"hidden",pointerEvents:"none"},children:[l.jsx("div",{className:"waves-cursor",style:{position:"absolute",top:0,left:0,width:"0.5rem",height:"0.5rem",background:"hsl(var(--primary) / 0.3)",borderRadius:"50%",transform:"translate3d(calc(var(--x, -0.5rem) - 50%), calc(var(--y, 50%) - 50%), 0)",willChange:"transform",pointerEvents:"none"}}),l.jsx("svg",{ref:t,style:{display:"block",width:"100%",height:"100%"},children:l.jsx("style",{children:` - path { - fill: none; - stroke: hsl(var(--primary) / 0.20); - stroke-width: 1px; - } - `})})]})}function Yte(){const t=Da();b.useEffect(()=>{localStorage.getItem("access-token")||t({to:"/auth"})},[t])}function fL(){return!!localStorage.getItem("access-token")}function Kte(){const[t,e]=b.useState(""),[n,r]=b.useState(!1),[s,i]=b.useState(""),a=Da(),{enableWavesBackground:o,setEnableWavesBackground:c}=BP(),{theme:h,setTheme:f}=b6();b.useEffect(()=>{fL()&&a({to:"/"})},[a]);const g=h==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":h,x=()=>{f(g==="dark"?"light":"dark")},y=async w=>{if(w.preventDefault(),i(""),!t.trim()){i("请输入 Access Token");return}r(!0);try{const S=await fetch("/api/webui/auth/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t.trim()})}),k=await S.json();if(S.ok&&k.valid){localStorage.setItem("access-token",t.trim());const N=await fetch("/api/webui/setup/status",{method:"GET",headers:{Authorization:`Bearer ${t.trim()}`}}),C=await N.json();N.ok&&C.is_first_setup?a({to:"/setup"}):a({to:"/"})}else i(k.message||"Token 验证失败,请检查后重试")}catch(S){console.error("Token 验证错误:",S),i("连接服务器失败,请检查网络连接")}finally{r(!1)}};return l.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[o&&l.jsx(Xte,{}),l.jsxs(Dt,{className:"relative z-10 w-full max-w-md shadow-2xl backdrop-blur-xl bg-card/80 border-border/50",children:[l.jsx("button",{onClick:x,className:"absolute right-4 top-4 rounded-lg p-2 hover:bg-accent transition-colors z-10 text-foreground",title:g==="dark"?"切换到浅色模式":"切换到深色模式",children:g==="dark"?l.jsx(D3,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"}):l.jsx(z3,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"})}),l.jsxs(kn,{className:"space-y-4 text-center",children:[l.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-2xl bg-primary/10",children:l.jsx(LC,{className:"h-8 w-8 text-primary",strokeWidth:2,fill:"none"})}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(jn,{className:"text-2xl font-bold",children:"欢迎使用 MaiBot"}),l.jsx(Fr,{className:"text-base",children:"请输入您的 Access Token 以继续访问系统"})]})]}),l.jsx(Dn,{children:l.jsxs("form",{onSubmit:y,className:"space-y-4",children:[l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{htmlFor:"token",className:"text-sm font-medium",children:"Access Token"}),l.jsxs("div",{className:"relative",children:[l.jsx(iz,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground",strokeWidth:2,fill:"none"}),l.jsx(Pe,{id:"token",type:"password",placeholder:"请输入您的 Access Token",value:t,onChange:w=>e(w.target.value),className:ve("pl-10",s&&"border-red-500 focus-visible:ring-red-500"),disabled:n,autoFocus:!0,autoComplete:"off"})]})]}),s&&l.jsxs("div",{className:"flex items-center gap-2 rounded-md bg-red-50 p-3 text-sm text-red-600 dark:bg-red-950/50 dark:text-red-400",children:[l.jsx(Cu,{className:"h-4 w-4 flex-shrink-0",strokeWidth:2,fill:"none"}),l.jsx("span",{children:s})]}),l.jsx(de,{type:"submit",className:"w-full",disabled:n,children:n?l.jsxs(l.Fragment,{children:[l.jsx("div",{className:"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent"}),"验证中..."]}):"验证并进入"}),l.jsxs(xr,{children:[l.jsx(Bh,{asChild:!0,children:l.jsxs("button",{className:"w-full text-center text-sm text-primary hover:text-primary/80 transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[l.jsx(Dv,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我没有 Token,我该去哪里获得 Token?"]})}),l.jsxs(lr,{className:"sm:max-w-md",children:[l.jsxs(or,{children:[l.jsxs(cr,{className:"flex items-center gap-2",children:[l.jsx(LC,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"如何获取 Access Token"]}),l.jsx(Hr,{children:"Access Token 是访问 MaiBot WebUI 的唯一凭证,请按以下方式获取"})]}),l.jsxs("div",{className:"space-y-4",children:[l.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:l.jsxs("div",{className:"flex items-start gap-3",children:[l.jsx(DK,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),l.jsxs("div",{className:"flex-1 space-y-2",children:[l.jsx("h4",{className:"font-semibold text-sm",children:"方式一:查看启动日志"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"在 MaiBot 启动时,控制台会显示 WebUI Access Token。"}),l.jsxs("div",{className:"rounded bg-background p-2 font-mono text-xs",children:[l.jsx("p",{className:"text-muted-foreground",children:"🔑 WebUI Access Token: abc123..."}),l.jsx("p",{className:"text-muted-foreground",children:"💡 请使用此 Token 登录 WebUI"})]})]})]})}),l.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:l.jsxs("div",{className:"flex items-start gap-3",children:[l.jsx(lo,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),l.jsxs("div",{className:"flex-1 space-y-2",children:[l.jsx("h4",{className:"font-semibold text-sm",children:"方式二:查看配置文件"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"Token 保存在项目根目录的配置文件中:"}),l.jsx("div",{className:"rounded bg-background p-2 font-mono text-xs break-all",children:l.jsx("code",{className:"text-primary",children:"data/webui.json"})}),l.jsxs("p",{className:"text-xs text-muted-foreground",children:["打开此文件,复制 ",l.jsx("code",{className:"px-1 py-0.5 bg-background rounded",children:"access_token"})," 字段的值"]})]})]})}),l.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:l.jsxs("div",{className:"flex gap-2",children:[l.jsx(Cu,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),l.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[l.jsx("p",{className:"font-semibold",children:"安全提示"}),l.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[l.jsx("li",{children:"请妥善保管您的 Token,不要泄露给他人"}),l.jsx("li",{children:"如需重置 Token,请在登录后前往系统设置"})]})]})]})})]})]})]}),l.jsxs(Nn,{children:[l.jsx(Qr,{asChild:!0,children:l.jsxs("button",{className:"w-full text-center text-sm text-muted-foreground hover:text-foreground transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[l.jsx(R3,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我觉得这个界面很卡怎么办?"]})}),l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsxs(yn,{className:"flex items-center gap-2",children:[l.jsx(R3,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"关闭背景动画"]}),l.jsx(bn,{children:"背景动画可能会在低性能设备上造成卡顿。关闭动画可以显著提升界面流畅度。"})]}),l.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:l.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭动画后,背景将变为纯色,但不影响任何功能的使用。您可以随时在系统设置中重新开启动画。"})}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:()=>c(!1),children:"关闭动画"})]})]})]})]})})]}),l.jsx("div",{className:"absolute bottom-4 left-0 right-0 text-center text-xs text-muted-foreground",children:l.jsx("p",{children:Ote})})]})}const pr=b.forwardRef(({className:t,...e},n)=>l.jsx("textarea",{className:ve("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",t),ref:n,...e}));pr.displayName="Textarea";var Zte=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Jte=Zte.reduce((t,e)=>{const n=Kk(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...o}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),l.jsx(c,{...o,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),ene="Separator",S9="horizontal",tne=["horizontal","vertical"],mL=b.forwardRef((t,e)=>{const{decorative:n,orientation:r=S9,...s}=t,i=nne(r)?r:S9,o=n?{role:"none"}:{"aria-orientation":i==="vertical"?i:void 0,role:"separator"};return l.jsx(Jte.div,{"data-orientation":i,...o,...s,ref:e})});mL.displayName=ene;function nne(t){return tne.includes(t)}var pL=mL;const Vm=b.forwardRef(({className:t,orientation:e="horizontal",decorative:n=!0,...r},s)=>l.jsx(pL,{ref:s,decorative:n,orientation:e,className:ve("shrink-0 bg-border",e==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",t),...r}));Vm.displayName=pL.displayName;const rne=Ih("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function In({className:t,variant:e,...n}){return l.jsx("div",{className:ve(rne({variant:e}),t),...n})}function sne({config:t,onChange:e}){const n=s=>{s.trim()&&!t.alias_names.includes(s.trim())&&e({...t,alias_names:[...t.alias_names,s.trim()]})},r=s=>{e({...t,alias_names:t.alias_names.filter((i,a)=>a!==s)})};return l.jsxs("div",{className:"space-y-6",children:[l.jsxs("div",{className:"space-y-3",children:[l.jsx(ue,{htmlFor:"qq_account",children:"QQ账号 *"}),l.jsx(Pe,{id:"qq_account",type:"number",placeholder:"请输入机器人的QQ账号",value:t.qq_account||"",onChange:s=>e({...t,qq_account:Number(s.target.value)})}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人登录使用的QQ账号"})]}),l.jsxs("div",{className:"space-y-3",children:[l.jsx(ue,{htmlFor:"nickname",children:"昵称 *"}),l.jsx(Pe,{id:"nickname",placeholder:"请输入机器人的昵称",value:t.nickname,onChange:s=>e({...t,nickname:s.target.value})}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的主要称呼名称"})]}),l.jsxs("div",{className:"space-y-3",children:[l.jsx(ue,{children:"别名"}),l.jsx("div",{className:"flex flex-wrap gap-2 mb-2",children:t.alias_names.map((s,i)=>l.jsxs(In,{variant:"secondary",className:"gap-1",children:[s,l.jsx("button",{type:"button",onClick:()=>r(i),className:"ml-1 hover:text-destructive",children:l.jsx(P0,{className:"h-3 w-3"})})]},i))}),l.jsxs("div",{className:"flex gap-2",children:[l.jsx(Pe,{id:"alias_input",placeholder:"输入别名后按回车添加",onKeyPress:s=>{s.key==="Enter"&&(n(s.target.value),s.target.value="")}}),l.jsx(de,{type:"button",variant:"outline",onClick:()=>{const s=document.getElementById("alias_input");s&&(n(s.value),s.value="")},children:"添加"})]}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的其他称呼,可以添加多个"})]})]})}function ine({config:t,onChange:e}){return l.jsxs("div",{className:"space-y-6",children:[l.jsxs("div",{className:"space-y-3",children:[l.jsx(ue,{htmlFor:"personality",children:"人格特征 *"}),l.jsx(pr,{id:"personality",placeholder:"描述机器人的人格特质和身份特征(建议120字以内)",value:t.personality,onChange:n=>e({...t,personality:n.target.value}),rows:3}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:是一个女大学生,现在在读大二,会刷贴吧"})]}),l.jsxs("div",{className:"space-y-3",children:[l.jsx(ue,{htmlFor:"reply_style",children:"表达风格 *"}),l.jsx(pr,{id:"reply_style",placeholder:"描述机器人说话的表达风格、表达习惯",value:t.reply_style,onChange:n=>e({...t,reply_style:n.target.value}),rows:3}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:回复平淡一些,简短一些,说中文,参考贴吧、知乎和微博的回复风格"})]}),l.jsxs("div",{className:"space-y-3",children:[l.jsx(ue,{htmlFor:"interest",children:"兴趣 *"}),l.jsx(pr,{id:"interest",placeholder:"描述机器人感兴趣的话题",value:t.interest,onChange:n=>e({...t,interest:n.target.value}),rows:2}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"会影响机器人对什么话题进行回复"})]}),l.jsx(Vm,{}),l.jsxs("div",{className:"space-y-3",children:[l.jsx(ue,{htmlFor:"plan_style",children:"群聊说话规则 *"}),l.jsx(pr,{id:"plan_style",placeholder:"机器人在群聊中的行为风格和规则",value:t.plan_style,onChange:n=>e({...t,plan_style:n.target.value}),rows:4}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在群聊中如何行动,例如回复频率、条件等"})]}),l.jsxs("div",{className:"space-y-3",children:[l.jsx(ue,{htmlFor:"private_plan_style",children:"私聊说话规则 *"}),l.jsx(pr,{id:"private_plan_style",placeholder:"机器人在私聊中的行为风格和规则",value:t.private_plan_style,onChange:n=>e({...t,private_plan_style:n.target.value}),rows:3}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在私聊中的行为方式"})]})]})}function ane({config:t,onChange:e}){return l.jsxs("div",{className:"space-y-6",children:[l.jsxs("div",{className:"space-y-3",children:[l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsx(ue,{htmlFor:"emoji_chance",children:"表情包激活概率"}),l.jsxs("span",{className:"text-sm text-muted-foreground",children:[(t.emoji_chance*100).toFixed(0),"%"]})]}),l.jsx(Pe,{id:"emoji_chance",type:"range",min:"0",max:"1",step:"0.1",value:t.emoji_chance,onChange:n=>e({...t,emoji_chance:Number(n.target.value)})}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人发送表情包的概率"})]}),l.jsxs("div",{className:"space-y-3",children:[l.jsx(ue,{htmlFor:"max_reg_num",children:"最大表情包数量"}),l.jsx(Pe,{id:"max_reg_num",type:"number",min:"1",max:"200",value:t.max_reg_num,onChange:n=>e({...t,max_reg_num:Number(n.target.value)})}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人最多保存的表情包数量"})]}),l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{className:"space-y-1",children:[l.jsx(ue,{htmlFor:"do_replace",children:"达到最大数量时替换"}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"开启后会删除旧表情包,关闭则不再收集新表情包"})]}),l.jsx(Pt,{id:"do_replace",checked:t.do_replace,onCheckedChange:n=>e({...t,do_replace:n})})]}),l.jsxs("div",{className:"space-y-3",children:[l.jsx(ue,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),l.jsx(Pe,{id:"check_interval",type:"number",min:"1",max:"120",value:t.check_interval,onChange:n=>e({...t,check_interval:Number(n.target.value)})}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包注册、破损、删除的时间间隔"})]}),l.jsx(Vm,{}),l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{className:"space-y-1",children:[l.jsx(ue,{htmlFor:"steal_emoji",children:"偷取表情包"}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人将一些表情包据为己有"})]}),l.jsx(Pt,{id:"steal_emoji",checked:t.steal_emoji,onCheckedChange:n=>e({...t,steal_emoji:n})})]}),l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{className:"space-y-1",children:[l.jsx(ue,{htmlFor:"content_filtration",children:"启用表情包过滤"}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"只保存符合要求的表情包"})]}),l.jsx(Pt,{id:"content_filtration",checked:t.content_filtration,onCheckedChange:n=>e({...t,content_filtration:n})})]}),t.content_filtration&&l.jsxs("div",{className:"space-y-3",children:[l.jsx(ue,{htmlFor:"filtration_prompt",children:"过滤要求"}),l.jsx(Pe,{id:"filtration_prompt",placeholder:"例如:符合公序良俗",value:t.filtration_prompt,onChange:n=>e({...t,filtration_prompt:n.target.value})}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"描述表情包应该符合的要求"})]})]})}function lne({config:t,onChange:e}){return l.jsxs("div",{className:"space-y-6",children:[l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{className:"space-y-1",children:[l.jsx(ue,{htmlFor:"enable_tool",children:"启用工具系统"}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人使用各种工具增强功能"})]}),l.jsx(Pt,{id:"enable_tool",checked:t.enable_tool,onCheckedChange:n=>e({...t,enable_tool:n})})]}),l.jsx(Vm,{}),l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{className:"space-y-1",children:[l.jsx(ue,{htmlFor:"enable_mood",children:"启用情绪系统"}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"让机器人具有情绪变化能力"})]}),l.jsx(Pt,{id:"enable_mood",checked:t.enable_mood,onCheckedChange:n=>e({...t,enable_mood:n})})]}),t.enable_mood&&l.jsxs("div",{className:"ml-6 space-y-6 border-l-2 border-primary/20 pl-6",children:[l.jsxs("div",{className:"space-y-3",children:[l.jsx(ue,{htmlFor:"mood_update_threshold",children:"情绪更新阈值"}),l.jsx(Pe,{id:"mood_update_threshold",type:"number",min:"0.1",max:"10",step:"0.1",value:t.mood_update_threshold||1,onChange:n=>e({...t,mood_update_threshold:Number(n.target.value)})}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"值越高,情绪更新越慢"})]}),l.jsxs("div",{className:"space-y-3",children:[l.jsx(ue,{htmlFor:"emotion_style",children:"情感特征"}),l.jsx(pr,{id:"emotion_style",placeholder:"描述情绪的变化情况,例如:情绪较为稳定,但遭遇特定事件时起伏较大",value:t.emotion_style||"",onChange:n=>e({...t,emotion_style:n.target.value}),rows:2}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"影响机器人的情绪变化方式"})]})]}),l.jsx(Vm,{}),l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{className:"space-y-1",children:[l.jsx(ue,{htmlFor:"all_global",children:"启用全局黑话模式"}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人学习和使用群组黑话"})]}),l.jsx(Pt,{id:"all_global",checked:t.all_global,onCheckedChange:n=>e({...t,all_global:n})})]})]})}function one({config:t,onChange:e}){const[n,r]=b.useState(!1);return l.jsxs("div",{className:"space-y-6",children:[l.jsx("div",{className:"rounded-lg bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-4",children:l.jsxs("div",{className:"flex items-start gap-3",children:[l.jsx("div",{className:"mt-0.5",children:l.jsx("svg",{className:"h-5 w-5 text-blue-600 dark:text-blue-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:l.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),l.jsxs("div",{className:"flex-1 text-sm",children:[l.jsx("p",{className:"font-medium text-blue-900 dark:text-blue-100 mb-1",children:"关于硅基流动 (SiliconFlow)"}),l.jsx("p",{className:"text-blue-700 dark:text-blue-300 mb-2",children:"硅基流动提供了完整的模型覆盖,包括 DeepSeek V3、Qwen、视觉模型、语音识别和嵌入模型。 只需一个 API Key 即可使用麦麦的所有功能!"}),l.jsxs("a",{href:"https://cloud.siliconflow.cn",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-blue-600 dark:text-blue-400 hover:underline font-medium",children:["前往硅基流动获取 API Key",l.jsx(Jd,{className:"h-3 w-3"})]})]})]})}),l.jsxs("div",{className:"space-y-3",children:[l.jsx(ue,{htmlFor:"siliconflow_api_key",children:"SiliconFlow API Key *"}),l.jsxs("div",{className:"relative",children:[l.jsx(Pe,{id:"siliconflow_api_key",type:n?"text":"password",placeholder:"sk-...",value:t.api_key,onChange:s=>e({api_key:s.target.value}),className:"font-mono pr-10"}),l.jsx(de,{type:"button",variant:"ghost",size:"sm",className:"absolute right-0 top-0 h-full px-3 hover:bg-transparent",onClick:()=>r(!n),children:n?l.jsx(N1,{className:"h-4 w-4 text-muted-foreground"}):l.jsx(oa,{className:"h-4 w-4 text-muted-foreground"})})]}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"请输入您的硅基流动 API 密钥。获取后,麦麦将自动配置所有必需的模型。"})]}),l.jsxs("div",{className:"rounded-lg bg-muted/50 p-4 text-sm space-y-2",children:[l.jsx("p",{className:"font-medium",children:"将自动配置以下模型:"}),l.jsxs("ul",{className:"list-disc list-inside space-y-1 text-muted-foreground ml-2",children:[l.jsx("li",{children:"DeepSeek V3 - 主要对话和工具模型"}),l.jsx("li",{children:"Qwen3 30B - 高频小任务和工具调用"}),l.jsx("li",{children:"Qwen3 VL 30B - 图像识别"}),l.jsx("li",{children:"SenseVoice - 语音识别"}),l.jsx("li",{children:"BGE-M3 - 文本嵌入"}),l.jsx("li",{children:"知识库相关模型 (LPMM)"})]})]}),l.jsx("div",{className:"rounded-lg border border-amber-200 dark:border-amber-800 bg-amber-50 dark:bg-amber-950/30 p-4",children:l.jsxs("p",{className:"text-sm text-amber-900 dark:text-amber-100",children:[l.jsx("span",{className:"font-medium",children:"💡 提示:"}),'完成向导后,您可以在"系统设置 → 模型配置"中添加更多 API 提供商和模型。']})})]})}async function pt(t,e){const n=await fetch(t,e);if(n.status===401)throw localStorage.removeItem("access-token"),window.location.href="/auth",new Error("认证失败,请重新登录");return n}function Ct(){return{"Content-Type":"application/json",Authorization:`Bearer ${localStorage.getItem("access-token")}`}}async function cne(){const t=await pt("/api/webui/config/bot",{method:"GET",headers:Ct()});if(!t.ok)throw new Error("读取Bot配置失败");const n=(await t.json()).config.bot||{};return{qq_account:n.qq_account||0,nickname:n.nickname||"",alias_names:n.alias_names||[]}}async function une(){const t=await pt("/api/webui/config/bot",{method:"GET",headers:Ct()});if(!t.ok)throw new Error("读取人格配置失败");const n=(await t.json()).config.personality||{};return{personality:n.personality||"",reply_style:n.reply_style||"",interest:n.interest||"",plan_style:n.plan_style||"",private_plan_style:n.private_plan_style||""}}async function dne(){const t=await pt("/api/webui/config/bot",{method:"GET",headers:Ct()});if(!t.ok)throw new Error("读取表情包配置失败");const n=(await t.json()).config.emoji||{};return{emoji_chance:n.emoji_chance??.4,max_reg_num:n.max_reg_num??40,do_replace:n.do_replace??!0,check_interval:n.check_interval??10,steal_emoji:n.steal_emoji??!0,content_filtration:n.content_filtration??!1,filtration_prompt:n.filtration_prompt||""}}async function hne(){const t=await pt("/api/webui/config/bot",{method:"GET",headers:Ct()});if(!t.ok)throw new Error("读取其他配置失败");const n=(await t.json()).config,r=n.tool||{},s=n.mood||{},i=n.jargon||{};return{enable_tool:r.enable_tool??!0,enable_mood:s.enable_mood??!1,mood_update_threshold:s.mood_update_threshold,emotion_style:s.emotion_style,all_global:i.all_global??!0}}async function fne(){const t=await pt("/api/webui/config/model",{method:"GET",headers:Ct()});if(!t.ok)throw new Error("读取模型配置失败");return{api_key:((await t.json()).config.api_providers||[]).find(i=>i.name==="SiliconFlow")?.api_key||""}}async function mne(t){const e=await pt("/api/webui/config/bot/section/bot",{method:"POST",headers:Ct(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"保存Bot基础配置失败")}return await e.json()}async function pne(t){const e=await pt("/api/webui/config/bot/section/personality",{method:"POST",headers:Ct(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"保存人格配置失败")}return await e.json()}async function gne(t){const e=await pt("/api/webui/config/bot/section/emoji",{method:"POST",headers:Ct(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"保存表情包配置失败")}return await e.json()}async function xne(t){const e=[];e.push(pt("/api/webui/config/bot/section/tool",{method:"POST",headers:Ct(),body:JSON.stringify({enable_tool:t.enable_tool})})),e.push(pt("/api/webui/config/bot/section/jargon",{method:"POST",headers:Ct(),body:JSON.stringify({all_global:t.all_global})}));const n={enable_mood:t.enable_mood};t.enable_mood&&(n.mood_update_threshold=t.mood_update_threshold||1,n.emotion_style=t.emotion_style||""),e.push(pt("/api/webui/config/bot/section/mood",{method:"POST",headers:Ct(),body:JSON.stringify(n)}));const r=await Promise.all(e);for(const s of r)if(!s.ok){const i=await s.json();throw new Error(i.detail||"保存其他配置失败")}return{success:!0}}async function vne(t){const e=await pt("/api/webui/config/model",{method:"GET",headers:Ct()});if(!e.ok)throw new Error("读取模型配置失败");const r=(await e.json()).config,s=r.api_providers||[],i=s.findIndex(c=>c.name==="SiliconFlow");i>=0?s[i]={...s[i],api_key:t.api_key}:s.push({name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",api_key:t.api_key,client_type:"openai",max_retry:3,timeout:120,retry_interval:5});const a={...r,api_providers:s},o=await pt("/api/webui/config/model",{method:"POST",headers:Ct(),body:JSON.stringify(a)});if(!o.ok){const c=await o.json();throw new Error(c.detail||"保存模型配置失败")}return await o.json()}async function k9(){const t=localStorage.getItem("access-token"),e=await pt("/api/webui/setup/complete",{method:"POST",headers:{Authorization:`Bearer ${t}`}});if(!e.ok){const n=await e.json();throw new Error(n.message||"标记配置完成失败")}return await e.json()}async function Uv(){const t=await pt("/api/webui/system/restart",{method:"POST",headers:Ct()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"重启失败")}return await t.json()}async function yne(){const t=await pt("/api/webui/system/status",{method:"GET",headers:Ct()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取状态失败")}return await t.json()}function bne(){const t=Da(),{toast:e}=ts(),[n,r]=b.useState(0),[s,i]=b.useState(!1),[a,o]=b.useState(!1),[c,h]=b.useState(!0),[f,m]=b.useState({qq_account:0,nickname:"",alias_names:[]}),[g,x]=b.useState({personality:"是一个女大学生,现在在读大二,会刷贴吧。",reply_style:"请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景。可以参考贴吧,知乎和微博的回复风格。",interest:"对技术相关话题,游戏和动漫相关话题感兴趣,也对日常话题感兴趣,不喜欢太过沉重严肃的话题",plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 -2.如果相同的内容已经被执行,请不要重复执行 -3.请控制你的发言频率,不要太过频繁的发言 -4.如果有人对你感到厌烦,请减少回复 -5.如果有人对你进行攻击,或者情绪激动,请你以合适的方法应对`,private_plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 -2.如果相同的内容已经被执行,请不要重复执行 -3.某句话如果已经被回复过,不要重复回复`}),[y,w]=b.useState({emoji_chance:.4,max_reg_num:40,do_replace:!0,check_interval:10,steal_emoji:!0,content_filtration:!1,filtration_prompt:"符合公序良俗"}),[S,k]=b.useState({enable_tool:!0,enable_mood:!1,mood_update_threshold:1,emotion_style:"情绪较为稳定,但遇遇特定事件的时候起伏较大",all_global:!0}),[N,C]=b.useState({api_key:""}),[T,_]=b.useState(!1),[E,M]=b.useState(""),L=[{id:"bot-basic",title:"Bot基础",description:"配置机器人的基本信息",icon:PK},{id:"personality",title:"人格配置",description:"定义机器人的性格和说话风格",icon:az},{id:"emoji",title:"表情包",description:"配置表情包相关设置",icon:i6},{id:"other",title:"其他设置",description:"工具、情绪系统等配置",icon:bu},{id:"siliconflow",title:"API配置",description:"配置硅基流动API密钥",icon:iz}],P=(n+1)/L.length*100;b.useEffect(()=>{(async()=>{try{h(!0);const[X,J,G,R,se]=await Promise.all([cne(),une(),dne(),hne(),fne()]);m(X),x(J),w(G),k(R),C(se)}catch(X){e({title:"加载配置失败",description:X instanceof Error?X.message:"无法加载现有配置,将使用默认值",variant:"destructive"})}finally{h(!1)}})()},[e]);const I=async()=>{o(!0);try{switch(n){case 0:await mne(f);break;case 1:await pne(g);break;case 2:await gne(y);break;case 3:await xne(S);break;case 4:await vne(N);break}return e({title:"保存成功",description:`${L[n].title}配置已保存`}),!0}catch(B){return e({title:"保存失败",description:B instanceof Error?B.message:"未知错误",variant:"destructive"}),!1}finally{o(!1)}},Q=async()=>{await I()&&n{n>0&&r(n-1)},ee=async()=>{i(!0),_(!0);try{if(M("正在保存API配置..."),!await I()){i(!1),_(!1);return}M("正在完成初始化..."),await k9(),M("正在重启麦麦..."),await Uv(),e({title:"配置完成",description:"麦麦正在重启以应用新配置..."}),M("等待麦麦重启完成...");const X=60;let J=0,G=!1;for(;JsetTimeout(R,1e3));try{(await yne()).running&&(G=!0,M("重启成功!正在跳转..."))}catch{J++}}if(!G)throw new Error("重启超时,请手动检查麦麦状态");setTimeout(()=>{t({to:"/"})},1e3)}catch(B){_(!1),e({title:"配置失败",description:B instanceof Error?B.message:"未知错误",variant:"destructive"})}finally{i(!1)}},z=async()=>{try{await k9(),t({to:"/"})}catch(B){e({title:"跳过失败",description:B instanceof Error?B.message:"未知错误",variant:"destructive"})}},H=()=>{switch(n){case 0:return l.jsx(sne,{config:f,onChange:m});case 1:return l.jsx(ine,{config:g,onChange:x});case 2:return l.jsx(ane,{config:y,onChange:w});case 3:return l.jsx(lne,{config:S,onChange:k});case 4:return l.jsx(one,{config:N,onChange:C});default:return null}};return l.jsxs("div",{className:"relative flex min-h-screen flex-col items-center justify-center overflow-hidden bg-gradient-to-br from-primary/5 via-background to-secondary/5 p-4 md:p-6",children:[T&&l.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm",children:l.jsxs("div",{className:"mx-auto flex max-w-md flex-col items-center space-y-6 rounded-lg border bg-card p-8 text-center shadow-lg",children:[l.jsx("div",{className:"flex h-20 w-20 items-center justify-center rounded-full bg-primary/10",children:l.jsx(vc,{className:"h-10 w-10 animate-spin text-primary"})}),l.jsxs("div",{className:"space-y-2",children:[l.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),l.jsx("p",{className:"text-muted-foreground",children:E})]}),l.jsx("div",{className:"w-full",children:l.jsx("div",{className:"h-2 w-full overflow-hidden rounded-full bg-secondary",children:l.jsx("div",{className:"h-full w-full animate-pulse bg-primary",style:{animation:"pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite"}})})}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"请稍候,这可能需要一分钟..."})]})}),l.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[l.jsx("div",{className:"absolute left-1/4 top-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-primary/5 blur-3xl"}),l.jsx("div",{className:"absolute right-1/4 bottom-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-secondary/5 blur-3xl"})]}),c?l.jsxs("div",{className:"relative z-10 text-center",children:[l.jsx("div",{className:"mx-auto mb-4 flex h-16 w-16 items-center justify-center",children:l.jsx("div",{className:"h-12 w-12 animate-spin rounded-full border-4 border-primary border-t-transparent"})}),l.jsx("p",{className:"text-lg font-medium",children:"加载配置中..."}),l.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"正在读取现有配置"})]}):l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:"relative z-10 w-full max-w-4xl",children:[l.jsxs("div",{className:"mb-6 md:mb-8 text-center",children:[l.jsx("div",{className:"mx-auto mb-4 flex h-12 w-12 md:h-16 md:w-16 items-center justify-center rounded-2xl bg-primary/10",children:l.jsx(zK,{className:"h-6 w-6 md:h-8 md:w-8 text-primary",strokeWidth:2,fill:"none"})}),l.jsx("h1",{className:"mb-2 text-2xl md:text-3xl font-bold",children:"首次配置向导"}),l.jsxs("p",{className:"text-sm md:text-base text-muted-foreground",children:["让我们一起完成 ",S6," 的初始配置"]})]}),l.jsxs("div",{className:"mb-6 md:mb-8",children:[l.jsxs("div",{className:"mb-2 flex items-center justify-between text-xs md:text-sm",children:[l.jsxs("span",{className:"text-muted-foreground",children:["步骤 ",n+1," / ",L.length]}),l.jsxs("span",{className:"font-medium text-primary",children:[Math.round(P),"%"]})]}),l.jsx(H0,{value:P,className:"h-2"})]}),l.jsx("div",{className:"mb-6 md:mb-8 flex justify-between",children:L.map((B,X)=>{const J=B.icon;return l.jsxs("div",{className:ve("flex flex-1 flex-col items-center gap-1 md:gap-2",Xt({to:"/"}),className:"gap-2 w-full sm:w-auto",children:[l.jsx(Fm,{className:"h-4 w-4"}),"返回首页"]}),l.jsxs(de,{size:"lg",variant:"outline",onClick:()=>window.history.back(),className:"gap-2 w-full sm:w-auto",children:[l.jsx(lz,{className:"h-4 w-4"}),"返回上一页"]})]}),l.jsx("div",{className:"mt-12 pt-8 border-t border-border",children:l.jsx("p",{className:"text-sm text-muted-foreground",children:"如果您认为这是一个错误,请联系系统管理员"})})]})})}var xL=["PageUp","PageDown"],vL=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],yL={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},qh="Slider",[U3,wne,Sne]=Cv(qh),[bL]=ha(qh,[Sne]),[kne,Wv]=bL(qh),wL=b.forwardRef((t,e)=>{const{name:n,min:r=0,max:s=100,step:i=1,orientation:a="horizontal",disabled:o=!1,minStepsBetweenThumbs:c=0,defaultValue:h=[r],value:f,onValueChange:m=()=>{},onValueCommit:g=()=>{},inverted:x=!1,form:y,...w}=t,S=b.useRef(new Set),k=b.useRef(0),C=a==="horizontal"?jne:One,[T=[],_]=wo({prop:f,defaultProp:h,onChange:Q=>{[...S.current][k.current]?.focus(),m(Q)}}),E=b.useRef(T);function M(Q){const U=_ne(T,Q);I(Q,U)}function L(Q){I(Q,k.current)}function P(){const Q=E.current[k.current];T[k.current]!==Q&&g(T)}function I(Q,U,{commit:ee}={commit:!1}){const z=Dne(i),H=zne(Math.round((Q-r)/i)*i+r,z),B=Yk(H,[r,s]);_((X=[])=>{const J=Tne(X,B,U);if(Rne(J,c*i)){k.current=J.indexOf(B);const G=String(J)!==String(X);return G&&ee&&g(J),G?J:X}else return X})}return l.jsx(kne,{scope:t.__scopeSlider,name:n,disabled:o,min:r,max:s,valueIndexToChangeRef:k,thumbs:S.current,values:T,orientation:a,form:y,children:l.jsx(U3.Provider,{scope:t.__scopeSlider,children:l.jsx(U3.Slot,{scope:t.__scopeSlider,children:l.jsx(C,{"aria-disabled":o,"data-disabled":o?"":void 0,...w,ref:e,onPointerDown:tt(w.onPointerDown,()=>{o||(E.current=T)}),min:r,max:s,inverted:x,onSlideStart:o?void 0:M,onSlideMove:o?void 0:L,onSlideEnd:o?void 0:P,onHomeKeyDown:()=>!o&&I(r,0,{commit:!0}),onEndKeyDown:()=>!o&&I(s,T.length-1,{commit:!0}),onStepKeyDown:({event:Q,direction:U})=>{if(!o){const H=xL.includes(Q.key)||Q.shiftKey&&vL.includes(Q.key)?10:1,B=k.current,X=T[B],J=i*H*U;I(X+J,B,{commit:!0})}}})})})})});wL.displayName=qh;var[SL,kL]=bL(qh,{startEdge:"left",endEdge:"right",size:"width",direction:1}),jne=b.forwardRef((t,e)=>{const{min:n,max:r,dir:s,inverted:i,onSlideStart:a,onSlideMove:o,onSlideEnd:c,onStepKeyDown:h,...f}=t,[m,g]=b.useState(null),x=Bn(e,C=>g(C)),y=b.useRef(void 0),w=D0(s),S=w==="ltr",k=S&&!i||!S&&i;function N(C){const T=y.current||m.getBoundingClientRect(),_=[0,T.width],M=j6(_,k?[n,r]:[r,n]);return y.current=T,M(C-T.left)}return l.jsx(SL,{scope:t.__scopeSlider,startEdge:k?"left":"right",endEdge:k?"right":"left",direction:k?1:-1,size:"width",children:l.jsx(jL,{dir:w,"data-orientation":"horizontal",...f,ref:x,style:{...f.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:C=>{const T=N(C.clientX);a?.(T)},onSlideMove:C=>{const T=N(C.clientX);o?.(T)},onSlideEnd:()=>{y.current=void 0,c?.()},onStepKeyDown:C=>{const _=yL[k?"from-left":"from-right"].includes(C.key);h?.({event:C,direction:_?-1:1})}})})}),One=b.forwardRef((t,e)=>{const{min:n,max:r,inverted:s,onSlideStart:i,onSlideMove:a,onSlideEnd:o,onStepKeyDown:c,...h}=t,f=b.useRef(null),m=Bn(e,f),g=b.useRef(void 0),x=!s;function y(w){const S=g.current||f.current.getBoundingClientRect(),k=[0,S.height],C=j6(k,x?[r,n]:[n,r]);return g.current=S,C(w-S.top)}return l.jsx(SL,{scope:t.__scopeSlider,startEdge:x?"bottom":"top",endEdge:x?"top":"bottom",size:"height",direction:x?1:-1,children:l.jsx(jL,{"data-orientation":"vertical",...h,ref:m,style:{...h.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:w=>{const S=y(w.clientY);i?.(S)},onSlideMove:w=>{const S=y(w.clientY);a?.(S)},onSlideEnd:()=>{g.current=void 0,o?.()},onStepKeyDown:w=>{const k=yL[x?"from-bottom":"from-top"].includes(w.key);c?.({event:w,direction:k?-1:1})}})})}),jL=b.forwardRef((t,e)=>{const{__scopeSlider:n,onSlideStart:r,onSlideMove:s,onSlideEnd:i,onHomeKeyDown:a,onEndKeyDown:o,onStepKeyDown:c,...h}=t,f=Wv(qh,n);return l.jsx(on.span,{...h,ref:e,onKeyDown:tt(t.onKeyDown,m=>{m.key==="Home"?(a(m),m.preventDefault()):m.key==="End"?(o(m),m.preventDefault()):xL.concat(vL).includes(m.key)&&(c(m),m.preventDefault())}),onPointerDown:tt(t.onPointerDown,m=>{const g=m.target;g.setPointerCapture(m.pointerId),m.preventDefault(),f.thumbs.has(g)?g.focus():r(m)}),onPointerMove:tt(t.onPointerMove,m=>{m.target.hasPointerCapture(m.pointerId)&&s(m)}),onPointerUp:tt(t.onPointerUp,m=>{const g=m.target;g.hasPointerCapture(m.pointerId)&&(g.releasePointerCapture(m.pointerId),i(m))})})}),OL="SliderTrack",NL=b.forwardRef((t,e)=>{const{__scopeSlider:n,...r}=t,s=Wv(OL,n);return l.jsx(on.span,{"data-disabled":s.disabled?"":void 0,"data-orientation":s.orientation,...r,ref:e})});NL.displayName=OL;var W3="SliderRange",CL=b.forwardRef((t,e)=>{const{__scopeSlider:n,...r}=t,s=Wv(W3,n),i=kL(W3,n),a=b.useRef(null),o=Bn(e,a),c=s.values.length,h=s.values.map(g=>_L(g,s.min,s.max)),f=c>1?Math.min(...h):0,m=100-Math.max(...h);return l.jsx(on.span,{"data-orientation":s.orientation,"data-disabled":s.disabled?"":void 0,...r,ref:o,style:{...t.style,[i.startEdge]:f+"%",[i.endEdge]:m+"%"}})});CL.displayName=W3;var G3="SliderThumb",TL=b.forwardRef((t,e)=>{const n=wne(t.__scopeSlider),[r,s]=b.useState(null),i=Bn(e,o=>s(o)),a=b.useMemo(()=>r?n().findIndex(o=>o.ref.current===r):-1,[n,r]);return l.jsx(Nne,{...t,ref:i,index:a})}),Nne=b.forwardRef((t,e)=>{const{__scopeSlider:n,index:r,name:s,...i}=t,a=Wv(G3,n),o=kL(G3,n),[c,h]=b.useState(null),f=Bn(e,N=>h(N)),m=c?a.form||!!c.closest("form"):!0,g=qD(c),x=a.values[r],y=x===void 0?0:_L(x,a.min,a.max),w=Ene(r,a.values.length),S=g?.[o.size],k=S?Mne(S,y,o.direction):0;return b.useEffect(()=>{if(c)return a.thumbs.add(c),()=>{a.thumbs.delete(c)}},[c,a.thumbs]),l.jsxs("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[o.startEdge]:`calc(${y}% + ${k}px)`},children:[l.jsx(U3.ItemSlot,{scope:t.__scopeSlider,children:l.jsx(on.span,{role:"slider","aria-label":t["aria-label"]||w,"aria-valuemin":a.min,"aria-valuenow":x,"aria-valuemax":a.max,"aria-orientation":a.orientation,"data-orientation":a.orientation,"data-disabled":a.disabled?"":void 0,tabIndex:a.disabled?void 0:0,...i,ref:f,style:x===void 0?{display:"none"}:t.style,onFocus:tt(t.onFocus,()=>{a.valueIndexToChangeRef.current=r})})}),m&&l.jsx(EL,{name:s??(a.name?a.name+(a.values.length>1?"[]":""):void 0),form:a.form,value:x},r)]})});TL.displayName=G3;var Cne="RadioBubbleInput",EL=b.forwardRef(({__scopeSlider:t,value:e,...n},r)=>{const s=b.useRef(null),i=Bn(s,r),a=BD(e);return b.useEffect(()=>{const o=s.current;if(!o)return;const c=window.HTMLInputElement.prototype,f=Object.getOwnPropertyDescriptor(c,"value").set;if(a!==e&&f){const m=new Event("input",{bubbles:!0});f.call(o,e),o.dispatchEvent(m)}},[a,e]),l.jsx(on.input,{style:{display:"none"},...n,ref:i,defaultValue:e})});EL.displayName=Cne;function Tne(t=[],e,n){const r=[...t];return r[n]=e,r.sort((s,i)=>s-i)}function _L(t,e,n){const i=100/(n-e)*(t-e);return Yk(i,[0,100])}function Ene(t,e){return e>2?`Value ${t+1} of ${e}`:e===2?["Minimum","Maximum"][t]:void 0}function _ne(t,e){if(t.length===1)return 0;const n=t.map(s=>Math.abs(s-e)),r=Math.min(...n);return n.indexOf(r)}function Mne(t,e,n){const r=t/2,i=j6([0,50],[0,r]);return(r-i(e)*n)*n}function Ane(t){return t.slice(0,-1).map((e,n)=>t[n+1]-e)}function Rne(t,e){if(e>0){const n=Ane(t);return Math.min(...n)>=e}return!0}function j6(t,e){return n=>{if(t[0]===t[1]||e[0]===e[1])return e[0];const r=(e[1]-e[0])/(t[1]-t[0]);return e[0]+r*(n-t[0])}}function Dne(t){return(String(t).split(".")[1]||"").length}function zne(t,e){const n=Math.pow(10,e);return Math.round(t*n)/n}var ML=wL,Pne=NL,Lne=CL,Ine=TL;const V0=b.forwardRef(({className:t,...e},n)=>l.jsxs(ML,{ref:n,className:ve("relative flex w-full touch-none select-none items-center",t),...e,children:[l.jsx(Pne,{className:"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20",children:l.jsx(Lne,{className:"absolute h-full bg-primary"})}),l.jsx(Ine,{className:"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"})]}));V0.displayName=ML.displayName;const qt=SK,Ft=kK,It=b.forwardRef(({className:t,children:e,...n},r)=>l.jsxs(HD,{ref:r,className:ve("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",t),...n,children:[e,l.jsx(xK,{asChild:!0,children:l.jsx(Tu,{className:"h-4 w-4 opacity-50"})})]}));It.displayName=HD.displayName;const AL=b.forwardRef(({className:t,...e},n)=>l.jsx(VD,{ref:n,className:ve("flex cursor-default items-center justify-center py-1",t),...e,children:l.jsx($m,{className:"h-4 w-4"})}));AL.displayName=VD.displayName;const RL=b.forwardRef(({className:t,...e},n)=>l.jsx(UD,{ref:n,className:ve("flex cursor-default items-center justify-center py-1",t),...e,children:l.jsx(Tu,{className:"h-4 w-4"})}));RL.displayName=UD.displayName;const Bt=b.forwardRef(({className:t,children:e,position:n="popper",...r},s)=>l.jsx(vK,{children:l.jsxs(WD,{ref:s,className:ve("relative z-[100] max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-hidden rounded-md border border-border bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",n==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:n,...r,children:[l.jsx(AL,{}),l.jsx(yK,{className:ve("p-1",n==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:e}),l.jsx(RL,{})]})}));Bt.displayName=WD.displayName;const Bne=b.forwardRef(({className:t,...e},n)=>l.jsx(GD,{ref:n,className:ve("px-2 py-1.5 text-sm font-semibold",t),...e}));Bne.displayName=GD.displayName;const De=b.forwardRef(({className:t,children:e,...n},r)=>l.jsxs(XD,{ref:r,className:ve("relative flex w-full cursor-default select-none items-center rounded-sm py-2 pl-2 pr-8 text-sm outline-none bg-white dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800 focus:bg-gray-100 dark:focus:bg-gray-800 data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),...n,children:[l.jsx("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:l.jsx(bK,{children:l.jsx(ol,{className:"h-4 w-4"})})}),l.jsx(wK,{children:e})]}));De.displayName=XD.displayName;const qne=b.forwardRef(({className:t,...e},n)=>l.jsx(YD,{ref:n,className:ve("-mx-1 my-1 h-px bg-muted",t),...e}));qne.displayName=YD.displayName;function Fne(t){const e=$ne(t),n=b.forwardRef((r,s)=>{const{children:i,...a}=r,o=b.Children.toArray(i),c=o.find(Hne);if(c){const h=c.props.children,f=o.map(m=>m===c?b.Children.count(h)>1?b.Children.only(null):b.isValidElement(h)?h.props.children:null:m);return l.jsx(e,{...a,ref:s,children:b.isValidElement(h)?b.cloneElement(h,void 0,f):null})}return l.jsx(e,{...a,ref:s,children:i})});return n.displayName=`${t}.Slot`,n}function $ne(t){const e=b.forwardRef((n,r)=>{const{children:s,...i}=n;if(b.isValidElement(s)){const a=Une(s),o=Vne(i,s.props);return s.type!==b.Fragment&&(o.ref=r?gc(r,a):a),b.cloneElement(s,o)}return b.Children.count(s)>1?b.Children.only(null):null});return e.displayName=`${t}.SlotClone`,e}var Qne=Symbol("radix.slottable");function Hne(t){return b.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===Qne}function Vne(t,e){const n={...e};for(const r in e){const s=t[r],i=e[r];/^on[A-Z]/.test(r)?s&&i?n[r]=(...o)=>{const c=i(...o);return s(...o),c}:s&&(n[r]=s):r==="style"?n[r]={...s,...i}:r==="className"&&(n[r]=[s,i].filter(Boolean).join(" "))}return{...t,...n}}function Une(t){let e=Object.getOwnPropertyDescriptor(t.props,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning;return n?t.ref:(e=Object.getOwnPropertyDescriptor(t,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning,n?t.props.ref:t.props.ref||t.ref)}var Gv="Popover",[DL]=ha(Gv,[Rh]),U0=Rh(),[Wne,_c]=DL(Gv),zL=t=>{const{__scopePopover:e,children:n,open:r,defaultOpen:s,onOpenChange:i,modal:a=!1}=t,o=U0(e),c=b.useRef(null),[h,f]=b.useState(!1),[m,g]=wo({prop:r,defaultProp:s??!1,onChange:i,caller:Gv});return l.jsx(Av,{...o,children:l.jsx(Wne,{scope:e,contentId:_i(),triggerRef:c,open:m,onOpenChange:g,onOpenToggle:b.useCallback(()=>g(x=>!x),[g]),hasCustomAnchor:h,onCustomAnchorAdd:b.useCallback(()=>f(!0),[]),onCustomAnchorRemove:b.useCallback(()=>f(!1),[]),modal:a,children:n})})};zL.displayName=Gv;var PL="PopoverAnchor",Gne=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=_c(PL,n),i=U0(n),{onCustomAnchorAdd:a,onCustomAnchorRemove:o}=s;return b.useEffect(()=>(a(),()=>o()),[a,o]),l.jsx(Rv,{...i,...r,ref:e})});Gne.displayName=PL;var LL="PopoverTrigger",IL=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=_c(LL,n),i=U0(n),a=Bn(e,s.triggerRef),o=l.jsx(on.button,{type:"button","aria-haspopup":"dialog","aria-expanded":s.open,"aria-controls":s.contentId,"data-state":QL(s.open),...r,ref:a,onClick:tt(t.onClick,s.onOpenToggle)});return s.hasCustomAnchor?o:l.jsx(Rv,{asChild:!0,...i,children:o})});IL.displayName=LL;var O6="PopoverPortal",[Xne,Yne]=DL(O6,{forceMount:void 0}),BL=t=>{const{__scopePopover:e,forceMount:n,children:r,container:s}=t,i=_c(O6,e);return l.jsx(Xne,{scope:e,forceMount:n,children:l.jsx(Fs,{present:n||i.open,children:l.jsx(Mv,{asChild:!0,container:s,children:r})})})};BL.displayName=O6;var xh="PopoverContent",qL=b.forwardRef((t,e)=>{const n=Yne(xh,t.__scopePopover),{forceMount:r=n.forceMount,...s}=t,i=_c(xh,t.__scopePopover);return l.jsx(Fs,{present:r||i.open,children:i.modal?l.jsx(Zne,{...s,ref:e}):l.jsx(Jne,{...s,ref:e})})});qL.displayName=xh;var Kne=Fne("PopoverContent.RemoveScroll"),Zne=b.forwardRef((t,e)=>{const n=_c(xh,t.__scopePopover),r=b.useRef(null),s=Bn(e,r),i=b.useRef(!1);return b.useEffect(()=>{const a=r.current;if(a)return KD(a)},[]),l.jsx(ZD,{as:Kne,allowPinchZoom:!0,children:l.jsx(FL,{...t,ref:s,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:tt(t.onCloseAutoFocus,a=>{a.preventDefault(),i.current||n.triggerRef.current?.focus()}),onPointerDownOutside:tt(t.onPointerDownOutside,a=>{const o=a.detail.originalEvent,c=o.button===0&&o.ctrlKey===!0,h=o.button===2||c;i.current=h},{checkForDefaultPrevented:!1}),onFocusOutside:tt(t.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1})})})}),Jne=b.forwardRef((t,e)=>{const n=_c(xh,t.__scopePopover),r=b.useRef(!1),s=b.useRef(!1);return l.jsx(FL,{...t,ref:e,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{t.onCloseAutoFocus?.(i),i.defaultPrevented||(r.current||n.triggerRef.current?.focus(),i.preventDefault()),r.current=!1,s.current=!1},onInteractOutside:i=>{t.onInteractOutside?.(i),i.defaultPrevented||(r.current=!0,i.detail.originalEvent.type==="pointerdown"&&(s.current=!0));const a=i.target;n.triggerRef.current?.contains(a)&&i.preventDefault(),i.detail.originalEvent.type==="focusin"&&s.current&&i.preventDefault()}})}),FL=b.forwardRef((t,e)=>{const{__scopePopover:n,trapFocus:r,onOpenAutoFocus:s,onCloseAutoFocus:i,disableOutsidePointerEvents:a,onEscapeKeyDown:o,onPointerDownOutside:c,onFocusOutside:h,onInteractOutside:f,...m}=t,g=_c(xh,n),x=U0(n);return JD(),l.jsx(ez,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:s,onUnmountAutoFocus:i,children:l.jsx(n6,{asChild:!0,disableOutsidePointerEvents:a,onInteractOutside:f,onEscapeKeyDown:o,onPointerDownOutside:c,onFocusOutside:h,onDismiss:()=>g.onOpenChange(!1),children:l.jsx(r6,{"data-state":QL(g.open),role:"dialog",id:g.contentId,...x,...m,ref:e,style:{...m.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),$L="PopoverClose",ere=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=_c($L,n);return l.jsx(on.button,{type:"button",...r,ref:e,onClick:tt(t.onClick,()=>s.onOpenChange(!1))})});ere.displayName=$L;var tre="PopoverArrow",nre=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=U0(n);return l.jsx(s6,{...s,...r,ref:e})});nre.displayName=tre;function QL(t){return t?"open":"closed"}var rre=zL,sre=IL,ire=BL,HL=qL;const ul=rre,dl=sre,Ea=b.forwardRef(({className:t,align:e="center",sideOffset:n=4,...r},s)=>l.jsx(ire,{children:l.jsx(HL,{ref:s,align:e,sideOffset:n,className:ve("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]",t),...r})}));Ea.displayName=HL.displayName;const Mc="/api/webui/config";async function j9(){const e=await(await pt(`${Mc}/bot`)).json();if(!e.success)throw new Error("获取配置数据失败");return e.config}async function th(){const e=await(await pt(`${Mc}/model`)).json();if(!e.success)throw new Error("获取模型配置数据失败");return e.config}async function O9(t){const n=await(await pt(`${Mc}/bot`,{method:"POST",headers:Ct(),body:JSON.stringify(t)})).json();if(!n.success)throw new Error(n.message||"保存配置失败")}async function are(){const e=await(await pt(`${Mc}/bot/raw`)).json();if(!e.success)throw new Error("获取配置源代码失败");return e.content}async function lre(t){const n=await(await pt(`${Mc}/bot/raw`,{method:"POST",headers:Ct(),body:JSON.stringify({raw_content:t})})).json();if(!n.success)throw new Error(n.message||"保存配置失败")}async function R1(t){const n=await(await pt(`${Mc}/model`,{method:"POST",headers:Ct(),body:JSON.stringify(t)})).json();if(!n.success)throw new Error(n.message||"保存配置失败")}async function ore(t,e){const r=await(await pt(`${Mc}/bot/section/${t}`,{method:"POST",headers:Ct(),body:JSON.stringify(e)})).json();if(!r.success)throw new Error(r.message||`保存配置节 ${t} 失败`)}async function X3(t,e){const r=await(await pt(`${Mc}/model/section/${t}`,{method:"POST",headers:Ct(),body:JSON.stringify(e)})).json();if(!r.success)throw new Error(r.message||`保存配置节 ${t} 失败`)}async function cre(t,e="openai",n="/models"){const r=new URLSearchParams({provider_name:t,parser:e,endpoint:n}),s=await pt(`/api/webui/models/list?${r}`);if(!s.ok){const a=await s.json().catch(()=>({}));throw new Error(a.detail||`获取模型列表失败 (${s.status})`)}const i=await s.json();if(!i.success)throw new Error("获取模型列表失败");return i.models}const ure=Ih("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"}}),Na=b.forwardRef(({className:t,variant:e,...n},r)=>l.jsx("div",{ref:r,role:"alert",className:ve(ure({variant:e}),t),...n}));Na.displayName="Alert";const dre=b.forwardRef(({className:t,...e},n)=>l.jsx("h5",{ref:n,className:ve("mb-1 font-medium leading-none tracking-tight",t),...e}));dre.displayName="AlertTitle";const Ca=b.forwardRef(({className:t,...e},n)=>l.jsx("div",{ref:n,className:ve("text-sm [&_p]:leading-relaxed",t),...e}));Ca.displayName="AlertDescription";function N6({onRestartComplete:t,onRestartFailed:e}){const[n,r]=b.useState(0),[s,i]=b.useState("restarting"),[a,o]=b.useState(0),[c,h]=b.useState(0);b.useEffect(()=>{const g=setInterval(()=>{r(w=>w>=90?w:w+1)},200),x=setInterval(()=>{o(w=>w+1)},1e3),y=setTimeout(()=>{i("checking"),f()},3e3);return()=>{clearInterval(g),clearInterval(x),clearTimeout(y)}},[]);const f=()=>{const x=async()=>{try{if(h(w=>w+1),(await fetch("/api/webui/system/status",{method:"GET",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(3e3)})).ok)r(100),i("success"),setTimeout(()=>{t?.()},1500);else throw new Error("Status check failed")}catch{c<60?setTimeout(x,2e3):(i("failed"),e?.())}};x()},m=g=>{const x=Math.floor(g/60),y=g%60;return`${x}:${y.toString().padStart(2,"0")}`};return l.jsx("div",{className:"fixed inset-0 bg-background/95 backdrop-blur-sm z-50 flex items-center justify-center",children:l.jsxs("div",{className:"max-w-md w-full mx-4 space-y-8",children:[l.jsxs("div",{className:"flex flex-col items-center space-y-4",children:[s==="restarting"&&l.jsxs(l.Fragment,{children:[l.jsx(vc,{className:"h-16 w-16 text-primary animate-spin"}),l.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),l.jsx("p",{className:"text-muted-foreground text-center",children:"请稍候,麦麦正在重启中..."})]}),s==="checking"&&l.jsxs(l.Fragment,{children:[l.jsx(vc,{className:"h-16 w-16 text-primary animate-spin"}),l.jsx("h2",{className:"text-2xl font-bold",children:"检查服务状态"}),l.jsxs("p",{className:"text-muted-foreground text-center",children:["等待服务恢复... (尝试 ",c,"/60)"]})]}),s==="success"&&l.jsxs(l.Fragment,{children:[l.jsx(xc,{className:"h-16 w-16 text-green-500"}),l.jsx("h2",{className:"text-2xl font-bold",children:"重启成功"}),l.jsx("p",{className:"text-muted-foreground text-center",children:"正在跳转到登录页面..."})]}),s==="failed"&&l.jsxs(l.Fragment,{children:[l.jsx(Cu,{className:"h-16 w-16 text-destructive"}),l.jsx("h2",{className:"text-2xl font-bold",children:"重启超时"}),l.jsx("p",{className:"text-muted-foreground text-center",children:"服务未能在预期时间内恢复,请手动检查或刷新页面"})]})]}),s!=="failed"&&l.jsxs("div",{className:"space-y-2",children:[l.jsx(H0,{value:n,className:"h-2"}),l.jsxs("div",{className:"flex justify-between text-sm text-muted-foreground",children:[l.jsxs("span",{children:[n,"%"]}),l.jsxs("span",{children:["已用时: ",m(a)]})]})]}),l.jsx("div",{className:"bg-muted/50 rounded-lg p-4 space-y-2",children:l.jsxs("p",{className:"text-sm text-muted-foreground",children:[s==="restarting"&&"🔄 配置已保存,正在重启主程序...",s==="checking"&&"⏳ 正在等待服务恢复,请勿关闭页面...",s==="success"&&"✅ 配置已生效,服务运行正常",s==="failed"&&"⚠️ 如果长时间无响应,请尝试手动重启"]})}),l.jsx("div",{className:"bg-yellow-500/10 border border-yellow-500/50 rounded-lg p-4",children:l.jsxs("p",{className:"text-sm text-yellow-900 dark:text-yellow-100",children:[l.jsx("strong",{children:"⚠️ 重要提示:"})," 由于技术原因,使用重启功能后,将无法再使用 ",l.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。如需结束程序,请使用脚本目录下的进程管理脚本。"]})}),s==="failed"&&l.jsxs("div",{className:"flex gap-2",children:[l.jsx("button",{onClick:()=>window.location.reload(),className:"flex-1 px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary/90",children:"刷新页面"}),l.jsx("button",{onClick:()=>{i("checking"),h(0),f()},className:"flex-1 px-4 py-2 bg-secondary text-secondary-foreground rounded-md hover:bg-secondary/90",children:"重试检测"})]})]})})}let Y3=[],VL=[];(()=>{let t="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,n=0;e>1;if(t=VL[r])e=r+1;else return!0;if(e==n)return!1}}function N9(t){return t>=127462&&t<=127487}const C9=8205;function fre(t,e,n=!0,r=!0){return(n?UL:mre)(t,e,r)}function UL(t,e,n){if(e==t.length)return e;e&&WL(t.charCodeAt(e))&&GL(t.charCodeAt(e-1))&&e--;let r=gw(t,e);for(e+=T9(r);e=0&&N9(gw(t,a));)i++,a-=2;if(i%2==0)break;e+=2}else break}return e}function mre(t,e,n){for(;e>0;){let r=UL(t,e-2,n);if(r=56320&&t<57344}function GL(t){return t>=55296&&t<56320}function T9(t){return t<65536?1:2}class pn{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,n,r){[e,n]=vh(this,e,n);let s=[];return this.decompose(0,e,s,2),r.length&&r.decompose(0,r.length,s,3),this.decompose(n,this.length,s,1),n1.from(s,this.length-(n-e)+r.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,n=this.length){[e,n]=vh(this,e,n);let r=[];return this.decompose(e,n,r,0),n1.from(r,n-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let n=this.scanIdentical(e,1),r=this.length-this.scanIdentical(e,-1),s=new Cm(this),i=new Cm(e);for(let a=n,o=n;;){if(s.next(a),i.next(a),a=0,s.lineBreak!=i.lineBreak||s.done!=i.done||s.value!=i.value)return!1;if(o+=s.value.length,s.done||o>=r)return!0}}iter(e=1){return new Cm(this,e)}iterRange(e,n=this.length){return new XL(this,e,n)}iterLines(e,n){let r;if(e==null)r=this.iter();else{n==null&&(n=this.lines+1);let s=this.line(e).from;r=this.iterRange(s,Math.max(s,n==this.lines+1?this.length:n<=1?0:this.line(n-1).to))}return new YL(r)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?pn.empty:e.length<=32?new Tr(e):n1.from(Tr.split(e,[]))}}class Tr extends pn{constructor(e,n=pre(e)){super(),this.text=e,this.length=n}get lines(){return this.text.length}get children(){return null}lineInner(e,n,r,s){for(let i=0;;i++){let a=this.text[i],o=s+a.length;if((n?r:o)>=e)return new gre(s,o,r,a);s=o+1,r++}}decompose(e,n,r,s){let i=e<=0&&n>=this.length?this:new Tr(E9(this.text,e,n),Math.min(n,this.length)-Math.max(0,e));if(s&1){let a=r.pop(),o=r1(i.text,a.text.slice(),0,i.length);if(o.length<=32)r.push(new Tr(o,a.length+i.length));else{let c=o.length>>1;r.push(new Tr(o.slice(0,c)),new Tr(o.slice(c)))}}else r.push(i)}replace(e,n,r){if(!(r instanceof Tr))return super.replace(e,n,r);[e,n]=vh(this,e,n);let s=r1(this.text,r1(r.text,E9(this.text,0,e)),n),i=this.length+r.length-(n-e);return s.length<=32?new Tr(s,i):n1.from(Tr.split(s,[]),i)}sliceString(e,n=this.length,r=` -`){[e,n]=vh(this,e,n);let s="";for(let i=0,a=0;i<=n&&ae&&a&&(s+=r),ei&&(s+=o.slice(Math.max(0,e-i),n-i)),i=c+1}return s}flatten(e){for(let n of this.text)e.push(n)}scanIdentical(){return 0}static split(e,n){let r=[],s=-1;for(let i of e)r.push(i),s+=i.length+1,r.length==32&&(n.push(new Tr(r,s)),r=[],s=-1);return s>-1&&n.push(new Tr(r,s)),n}}let n1=class qd extends pn{constructor(e,n){super(),this.children=e,this.length=n,this.lines=0;for(let r of e)this.lines+=r.lines}lineInner(e,n,r,s){for(let i=0;;i++){let a=this.children[i],o=s+a.length,c=r+a.lines-1;if((n?c:o)>=e)return a.lineInner(e,n,r,s);s=o+1,r=c+1}}decompose(e,n,r,s){for(let i=0,a=0;a<=n&&i=a){let h=s&((a<=e?1:0)|(c>=n?2:0));a>=e&&c<=n&&!h?r.push(o):o.decompose(e-a,n-a,r,h)}a=c+1}}replace(e,n,r){if([e,n]=vh(this,e,n),r.lines=i&&n<=o){let c=a.replace(e-i,n-i,r),h=this.lines-a.lines+c.lines;if(c.lines>4&&c.lines>h>>6){let f=this.children.slice();return f[s]=c,new qd(f,this.length-(n-e)+r.length)}return super.replace(i,o,c)}i=o+1}return super.replace(e,n,r)}sliceString(e,n=this.length,r=` -`){[e,n]=vh(this,e,n);let s="";for(let i=0,a=0;ie&&i&&(s+=r),ea&&(s+=o.sliceString(e-a,n-a,r)),a=c+1}return s}flatten(e){for(let n of this.children)n.flatten(e)}scanIdentical(e,n){if(!(e instanceof qd))return 0;let r=0,[s,i,a,o]=n>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;s+=n,i+=n){if(s==a||i==o)return r;let c=this.children[s],h=e.children[i];if(c!=h)return r+c.scanIdentical(h,n);r+=c.length+1}}static from(e,n=e.reduce((r,s)=>r+s.length+1,-1)){let r=0;for(let x of e)r+=x.lines;if(r<32){let x=[];for(let y of e)y.flatten(x);return new Tr(x,n)}let s=Math.max(32,r>>5),i=s<<1,a=s>>1,o=[],c=0,h=-1,f=[];function m(x){let y;if(x.lines>i&&x instanceof qd)for(let w of x.children)m(w);else x.lines>a&&(c>a||!c)?(g(),o.push(x)):x instanceof Tr&&c&&(y=f[f.length-1])instanceof Tr&&x.lines+y.lines<=32?(c+=x.lines,h+=x.length+1,f[f.length-1]=new Tr(y.text.concat(x.text),y.length+1+x.length)):(c+x.lines>s&&g(),c+=x.lines,h+=x.length+1,f.push(x))}function g(){c!=0&&(o.push(f.length==1?f[0]:qd.from(f,h)),h=-1,c=f.length=0)}for(let x of e)m(x);return g(),o.length==1?o[0]:new qd(o,n)}};pn.empty=new Tr([""],0);function pre(t){let e=-1;for(let n of t)e+=n.length+1;return e}function r1(t,e,n=0,r=1e9){for(let s=0,i=0,a=!0;i=n&&(c>r&&(o=o.slice(0,r-s)),s0?1:(e instanceof Tr?e.text.length:e.children.length)<<1]}nextInner(e,n){for(this.done=this.lineBreak=!1;;){let r=this.nodes.length-1,s=this.nodes[r],i=this.offsets[r],a=i>>1,o=s instanceof Tr?s.text.length:s.children.length;if(a==(n>0?o:0)){if(r==0)return this.done=!0,this.value="",this;n>0&&this.offsets[r-1]++,this.nodes.pop(),this.offsets.pop()}else if((i&1)==(n>0?0:1)){if(this.offsets[r]+=n,e==0)return this.lineBreak=!0,this.value=` -`,this;e--}else if(s instanceof Tr){let c=s.text[a+(n<0?-1:0)];if(this.offsets[r]+=n,c.length>Math.max(0,e))return this.value=e==0?c:n>0?c.slice(e):c.slice(0,c.length-e),this;e-=c.length}else{let c=s.children[a+(n<0?-1:0)];e>c.length?(e-=c.length,this.offsets[r]+=n):(n<0&&this.offsets[r]--,this.nodes.push(c),this.offsets.push(n>0?1:(c instanceof Tr?c.text.length:c.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class XL{constructor(e,n,r){this.value="",this.done=!1,this.cursor=new Cm(e,n>r?-1:1),this.pos=n>r?e.length:0,this.from=Math.min(n,r),this.to=Math.max(n,r)}nextInner(e,n){if(n<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,n<0?this.pos-this.to:this.from-this.pos);let r=n<0?this.pos-this.from:this.to-this.pos;e>r&&(e=r),r-=e;let{value:s}=this.cursor.next(e);return this.pos+=(s.length+e)*n,this.value=s.length<=r?s:n<0?s.slice(s.length-r):s.slice(0,r),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class YL{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:n,lineBreak:r,value:s}=this.inner.next(e);return n&&this.afterBreak?(this.value="",this.afterBreak=!1):n?(this.done=!0,this.value=""):r?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol<"u"&&(pn.prototype[Symbol.iterator]=function(){return this.iter()},Cm.prototype[Symbol.iterator]=XL.prototype[Symbol.iterator]=YL.prototype[Symbol.iterator]=function(){return this});class gre{constructor(e,n,r,s){this.from=e,this.to=n,this.number=r,this.text=s}get length(){return this.to-this.from}}function vh(t,e,n){return e=Math.max(0,Math.min(t.length,e)),[e,Math.max(e,Math.min(t.length,n))]}function ys(t,e,n=!0,r=!0){return fre(t,e,n,r)}function xre(t){return t>=56320&&t<57344}function vre(t){return t>=55296&&t<56320}function ei(t,e){let n=t.charCodeAt(e);if(!vre(n)||e+1==t.length)return n;let r=t.charCodeAt(e+1);return xre(r)?(n-55296<<10)+(r-56320)+65536:n}function C6(t){return t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode((t>>10)+55296,(t&1023)+56320))}function Za(t){return t<65536?1:2}const K3=/\r\n?|\n/;var vs=(function(t){return t[t.Simple=0]="Simple",t[t.TrackDel=1]="TrackDel",t[t.TrackBefore=2]="TrackBefore",t[t.TrackAfter=3]="TrackAfter",t})(vs||(vs={}));class cl{constructor(e){this.sections=e}get length(){let e=0;for(let n=0;ne)return i+(e-s);i+=o}else{if(r!=vs.Simple&&h>=e&&(r==vs.TrackDel&&se||r==vs.TrackBefore&&se))return null;if(h>e||h==e&&n<0&&!o)return e==s||n<0?i:i+c;i+=c}s=h}if(e>s)throw new RangeError(`Position ${e} is out of range for changeset of length ${s}`);return i}touchesRange(e,n=e){for(let r=0,s=0;r=0&&s<=n&&o>=e)return sn?"cover":!0;s=o}return!1}toString(){let e="";for(let n=0;n=0?":"+s:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(n=>typeof n!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new cl(e)}static create(e){return new cl(e)}}class Kr extends cl{constructor(e,n){super(e),this.inserted=n}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return Z3(this,(n,r,s,i,a)=>e=e.replace(s,s+(r-n),a),!1),e}mapDesc(e,n=!1){return J3(this,e,n,!0)}invert(e){let n=this.sections.slice(),r=[];for(let s=0,i=0;s=0){n[s]=o,n[s+1]=a;let c=s>>1;for(;r.length0&&dc(r,n,i.text),i.forward(f),o+=f}let h=e[a++];for(;o>1].toJSON()))}return e}static of(e,n,r){let s=[],i=[],a=0,o=null;function c(f=!1){if(!f&&!s.length)return;ag||m<0||g>n)throw new RangeError(`Invalid change range ${m} to ${g} (in doc of length ${n})`);let y=x?typeof x=="string"?pn.of(x.split(r||K3)):x:pn.empty,w=y.length;if(m==g&&w==0)return;ma&&js(s,m-a,-1),js(s,g-m,w),dc(i,s,y),a=g}}return h(e),c(!o),o}static empty(e){return new Kr(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let n=[],r=[];for(let s=0;so&&typeof a!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(i.length==1)n.push(i[0],0);else{for(;r.length=0&&n<=0&&n==t[s+1]?t[s]+=e:s>=0&&e==0&&t[s]==0?t[s+1]+=n:r?(t[s]+=e,t[s+1]+=n):t.push(e,n)}function dc(t,e,n){if(n.length==0)return;let r=e.length-2>>1;if(r>1])),!(n||a==t.sections.length||t.sections[a+1]<0);)o=t.sections[a++],c=t.sections[a++];e(s,h,i,f,m),s=h,i=f}}}function J3(t,e,n,r=!1){let s=[],i=r?[]:null,a=new Um(t),o=new Um(e);for(let c=-1;;){if(a.done&&o.len||o.done&&a.len)throw new Error("Mismatched change set lengths");if(a.ins==-1&&o.ins==-1){let h=Math.min(a.len,o.len);js(s,h,-1),a.forward(h),o.forward(h)}else if(o.ins>=0&&(a.ins<0||c==a.i||a.off==0&&(o.len=0&&c=0){let h=0,f=a.len;for(;f;)if(o.ins==-1){let m=Math.min(f,o.len);h+=m,f-=m,o.forward(m)}else if(o.ins==0&&o.lenc||a.ins>=0&&a.len>c)&&(o||r.length>h),i.forward2(c),a.forward(c)}}}}class Um{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return n>=e.length?pn.empty:e[n]}textBit(e){let{inserted:n}=this.set,r=this.i-2>>1;return r>=n.length&&!e?pn.empty:n[r].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class pu{constructor(e,n,r){this.from=e,this.to=n,this.flags=r}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(e,n=-1){let r,s;return this.empty?r=s=e.mapPos(this.from,n):(r=e.mapPos(this.from,1),s=e.mapPos(this.to,-1)),r==this.from&&s==this.to?this:new pu(r,s,this.flags)}extend(e,n=e){if(e<=this.anchor&&n>=this.anchor)return Ae.range(e,n);let r=Math.abs(e-this.anchor)>Math.abs(n-this.anchor)?e:n;return Ae.range(this.anchor,r)}eq(e,n=!1){return this.anchor==e.anchor&&this.head==e.head&&(!n||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return Ae.range(e.anchor,e.head)}static create(e,n,r){return new pu(e,n,r)}}class Ae{constructor(e,n){this.ranges=e,this.mainIndex=n}map(e,n=-1){return e.empty?this:Ae.create(this.ranges.map(r=>r.map(e,n)),this.mainIndex)}eq(e,n=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let r=0;re.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new Ae(e.ranges.map(n=>pu.fromJSON(n)),e.main)}static single(e,n=e){return new Ae([Ae.range(e,n)],0)}static create(e,n=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let r=0,s=0;se?8:0)|i)}static normalized(e,n=0){let r=e[n];e.sort((s,i)=>s.from-i.from),n=e.indexOf(r);for(let s=1;si.head?Ae.range(c,o):Ae.range(o,c))}}return new Ae(e,n)}}function ZL(t,e){for(let n of t.ranges)if(n.to>e)throw new RangeError("Selection points outside of document")}let T6=0;class nt{constructor(e,n,r,s,i){this.combine=e,this.compareInput=n,this.compare=r,this.isStatic=s,this.id=T6++,this.default=e([]),this.extensions=typeof i=="function"?i(this):i}get reader(){return this}static define(e={}){return new nt(e.combine||(n=>n),e.compareInput||((n,r)=>n===r),e.compare||(e.combine?(n,r)=>n===r:E6),!!e.static,e.enables)}of(e){return new s1([],this,0,e)}compute(e,n){if(this.isStatic)throw new Error("Can't compute a static facet");return new s1(e,this,1,n)}computeN(e,n){if(this.isStatic)throw new Error("Can't compute a static facet");return new s1(e,this,2,n)}from(e,n){return n||(n=r=>r),this.compute([e],r=>n(r.field(e)))}}function E6(t,e){return t==e||t.length==e.length&&t.every((n,r)=>n===e[r])}class s1{constructor(e,n,r,s){this.dependencies=e,this.facet=n,this.type=r,this.value=s,this.id=T6++}dynamicSlot(e){var n;let r=this.value,s=this.facet.compareInput,i=this.id,a=e[i]>>1,o=this.type==2,c=!1,h=!1,f=[];for(let m of this.dependencies)m=="doc"?c=!0:m=="selection"?h=!0:(((n=e[m.id])!==null&&n!==void 0?n:1)&1)==0&&f.push(e[m.id]);return{create(m){return m.values[a]=r(m),1},update(m,g){if(c&&g.docChanged||h&&(g.docChanged||g.selection)||eS(m,f)){let x=r(m);if(o?!_9(x,m.values[a],s):!s(x,m.values[a]))return m.values[a]=x,1}return 0},reconfigure:(m,g)=>{let x,y=g.config.address[i];if(y!=null){let w=z1(g,y);if(this.dependencies.every(S=>S instanceof nt?g.facet(S)===m.facet(S):S instanceof us?g.field(S,!1)==m.field(S,!1):!0)||(o?_9(x=r(m),w,s):s(x=r(m),w)))return m.values[a]=w,0}else x=r(m);return m.values[a]=x,1}}}}function _9(t,e,n){if(t.length!=e.length)return!1;for(let r=0;rt[c.id]),s=n.map(c=>c.type),i=r.filter(c=>!(c&1)),a=t[e.id]>>1;function o(c){let h=[];for(let f=0;fr===s),e);return e.provide&&(n.provides=e.provide(n)),n}create(e){let n=e.facet(Kg).find(r=>r.field==this);return(n?.create||this.createF)(e)}slot(e){let n=e[this.id]>>1;return{create:r=>(r.values[n]=this.create(r),1),update:(r,s)=>{let i=r.values[n],a=this.updateF(i,s);return this.compareF(i,a)?0:(r.values[n]=a,1)},reconfigure:(r,s)=>{let i=r.facet(Kg),a=s.facet(Kg),o;return(o=i.find(c=>c.field==this))&&o!=a.find(c=>c.field==this)?(r.values[n]=o.create(r),1):s.config.address[this.id]!=null?(r.values[n]=s.field(this),0):(r.values[n]=this.create(r),1)}}}init(e){return[this,Kg.of({field:this,create:e})]}get extension(){return this}}const du={lowest:4,low:3,default:2,high:1,highest:0};function Zf(t){return e=>new JL(e,t)}const Ac={highest:Zf(du.highest),high:Zf(du.high),default:Zf(du.default),low:Zf(du.low),lowest:Zf(du.lowest)};class JL{constructor(e,n){this.inner=e,this.prec=n}}class Xv{of(e){return new tS(this,e)}reconfigure(e){return Xv.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class tS{constructor(e,n){this.compartment=e,this.inner=n}}class D1{constructor(e,n,r,s,i,a){for(this.base=e,this.compartments=n,this.dynamicSlots=r,this.address=s,this.staticValues=i,this.facets=a,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,n,r){let s=[],i=Object.create(null),a=new Map;for(let g of bre(e,n,a))g instanceof us?s.push(g):(i[g.facet.id]||(i[g.facet.id]=[])).push(g);let o=Object.create(null),c=[],h=[];for(let g of s)o[g.id]=h.length<<1,h.push(x=>g.slot(x));let f=r?.config.facets;for(let g in i){let x=i[g],y=x[0].facet,w=f&&f[g]||[];if(x.every(S=>S.type==0))if(o[y.id]=c.length<<1|1,E6(w,x))c.push(r.facet(y));else{let S=y.combine(x.map(k=>k.value));c.push(r&&y.compare(S,r.facet(y))?r.facet(y):S)}else{for(let S of x)S.type==0?(o[S.id]=c.length<<1|1,c.push(S.value)):(o[S.id]=h.length<<1,h.push(k=>S.dynamicSlot(k)));o[y.id]=h.length<<1,h.push(S=>yre(S,y,x))}}let m=h.map(g=>g(o));return new D1(e,a,m,o,c,i)}}function bre(t,e,n){let r=[[],[],[],[],[]],s=new Map;function i(a,o){let c=s.get(a);if(c!=null){if(c<=o)return;let h=r[c].indexOf(a);h>-1&&r[c].splice(h,1),a instanceof tS&&n.delete(a.compartment)}if(s.set(a,o),Array.isArray(a))for(let h of a)i(h,o);else if(a instanceof tS){if(n.has(a.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=e.get(a.compartment)||a.inner;n.set(a.compartment,h),i(h,o)}else if(a instanceof JL)i(a.inner,a.prec);else if(a instanceof us)r[o].push(a),a.provides&&i(a.provides,o);else if(a instanceof s1)r[o].push(a),a.facet.extensions&&i(a.facet.extensions,du.default);else{let h=a.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${a}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);i(h,o)}}return i(t,du.default),r.reduce((a,o)=>a.concat(o))}function Tm(t,e){if(e&1)return 2;let n=e>>1,r=t.status[n];if(r==4)throw new Error("Cyclic dependency between fields and/or facets");if(r&2)return r;t.status[n]=4;let s=t.computeSlot(t,t.config.dynamicSlots[n]);return t.status[n]=2|s}function z1(t,e){return e&1?t.config.staticValues[e>>1]:t.values[e>>1]}const eI=nt.define(),nS=nt.define({combine:t=>t.some(e=>e),static:!0}),tI=nt.define({combine:t=>t.length?t[0]:void 0,static:!0}),nI=nt.define(),rI=nt.define(),sI=nt.define(),iI=nt.define({combine:t=>t.length?t[0]:!1});class pl{constructor(e,n){this.type=e,this.value=n}static define(){return new wre}}class wre{of(e){return new pl(this,e)}}class Sre{constructor(e){this.map=e}of(e){return new Lt(this,e)}}class Lt{constructor(e,n){this.type=e,this.value=n}map(e){let n=this.type.map(this.value,e);return n===void 0?void 0:n==this.value?this:new Lt(this.type,n)}is(e){return this.type==e}static define(e={}){return new Sre(e.map||(n=>n))}static mapEffects(e,n){if(!e.length)return e;let r=[];for(let s of e){let i=s.map(n);i&&r.push(i)}return r}}Lt.reconfigure=Lt.define();Lt.appendConfig=Lt.define();class $r{constructor(e,n,r,s,i,a){this.startState=e,this.changes=n,this.selection=r,this.effects=s,this.annotations=i,this.scrollIntoView=a,this._doc=null,this._state=null,r&&ZL(r,n.newLength),i.some(o=>o.type==$r.time)||(this.annotations=i.concat($r.time.of(Date.now())))}static create(e,n,r,s,i,a){return new $r(e,n,r,s,i,a)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let n of this.annotations)if(n.type==e)return n.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let n=this.annotation($r.userEvent);return!!(n&&(n==e||n.length>e.length&&n.slice(0,e.length)==e&&n[e.length]=="."))}}$r.time=pl.define();$r.userEvent=pl.define();$r.addToHistory=pl.define();$r.remote=pl.define();function kre(t,e){let n=[];for(let r=0,s=0;;){let i,a;if(r=t[r]))i=t[r++],a=t[r++];else if(s=0;s--){let i=r[s](t);i instanceof $r?t=i:Array.isArray(i)&&i.length==1&&i[0]instanceof $r?t=i[0]:t=lI(e,nh(i),!1)}return t}function Ore(t){let e=t.startState,n=e.facet(sI),r=t;for(let s=n.length-1;s>=0;s--){let i=n[s](t);i&&Object.keys(i).length&&(r=aI(r,rS(e,i,t.changes.newLength),!0))}return r==t?t:$r.create(e,t.changes,t.selection,r.effects,r.annotations,r.scrollIntoView)}const Nre=[];function nh(t){return t==null?Nre:Array.isArray(t)?t:[t]}var ar=(function(t){return t[t.Word=0]="Word",t[t.Space=1]="Space",t[t.Other=2]="Other",t})(ar||(ar={}));const Cre=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let sS;try{sS=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function Tre(t){if(sS)return sS.test(t);for(let e=0;e"€"&&(n.toUpperCase()!=n.toLowerCase()||Cre.test(n)))return!0}return!1}function Ere(t){return e=>{if(!/\S/.test(e))return ar.Space;if(Tre(e))return ar.Word;for(let n=0;n-1)return ar.Word;return ar.Other}}class dn{constructor(e,n,r,s,i,a){this.config=e,this.doc=n,this.selection=r,this.values=s,this.status=e.statusTemplate.slice(),this.computeSlot=i,a&&(a._state=this);for(let o=0;os.set(h,c)),n=null),s.set(o.value.compartment,o.value.extension)):o.is(Lt.reconfigure)?(n=null,r=o.value):o.is(Lt.appendConfig)&&(n=null,r=nh(r).concat(o.value));let i;n?i=e.startState.values.slice():(n=D1.resolve(r,s,this),i=new dn(n,this.doc,this.selection,n.dynamicSlots.map(()=>null),(c,h)=>h.reconfigure(c,this),null).values);let a=e.startState.facet(nS)?e.newSelection:e.newSelection.asSingle();new dn(n,e.newDoc,a,i,(o,c)=>c.update(o,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(n=>({changes:{from:n.from,to:n.to,insert:e},range:Ae.cursor(n.from+e.length)}))}changeByRange(e){let n=this.selection,r=e(n.ranges[0]),s=this.changes(r.changes),i=[r.range],a=nh(r.effects);for(let o=1;oa.spec.fromJSON(o,c)))}}return dn.create({doc:e.doc,selection:Ae.fromJSON(e.selection),extensions:n.extensions?s.concat([n.extensions]):s})}static create(e={}){let n=D1.resolve(e.extensions||[],new Map),r=e.doc instanceof pn?e.doc:pn.of((e.doc||"").split(n.staticFacet(dn.lineSeparator)||K3)),s=e.selection?e.selection instanceof Ae?e.selection:Ae.single(e.selection.anchor,e.selection.head):Ae.single(0);return ZL(s,r.length),n.staticFacet(nS)||(s=s.asSingle()),new dn(n,r,s,n.dynamicSlots.map(()=>null),(i,a)=>a.create(i),null)}get tabSize(){return this.facet(dn.tabSize)}get lineBreak(){return this.facet(dn.lineSeparator)||` -`}get readOnly(){return this.facet(iI)}phrase(e,...n){for(let r of this.facet(dn.phrases))if(Object.prototype.hasOwnProperty.call(r,e)){e=r[e];break}return n.length&&(e=e.replace(/\$(\$|\d*)/g,(r,s)=>{if(s=="$")return"$";let i=+(s||1);return!i||i>n.length?r:n[i-1]})),e}languageDataAt(e,n,r=-1){let s=[];for(let i of this.facet(eI))for(let a of i(this,n,r))Object.prototype.hasOwnProperty.call(a,e)&&s.push(a[e]);return s}charCategorizer(e){return Ere(this.languageDataAt("wordChars",e).join(""))}wordAt(e){let{text:n,from:r,length:s}=this.doc.lineAt(e),i=this.charCategorizer(e),a=e-r,o=e-r;for(;a>0;){let c=ys(n,a,!1);if(i(n.slice(c,a))!=ar.Word)break;a=c}for(;ot.length?t[0]:4});dn.lineSeparator=tI;dn.readOnly=iI;dn.phrases=nt.define({compare(t,e){let n=Object.keys(t),r=Object.keys(e);return n.length==r.length&&n.every(s=>t[s]==e[s])}});dn.languageData=eI;dn.changeFilter=nI;dn.transactionFilter=rI;dn.transactionExtender=sI;Xv.reconfigure=Lt.define();function gl(t,e,n={}){let r={};for(let s of t)for(let i of Object.keys(s)){let a=s[i],o=r[i];if(o===void 0)r[i]=a;else if(!(o===a||a===void 0))if(Object.hasOwnProperty.call(n,i))r[i]=n[i](o,a);else throw new Error("Config merge conflict for field "+i)}for(let s in e)r[s]===void 0&&(r[s]=e[s]);return r}class _u{eq(e){return this==e}range(e,n=e){return iS.create(e,n,this)}}_u.prototype.startSide=_u.prototype.endSide=0;_u.prototype.point=!1;_u.prototype.mapMode=vs.TrackDel;let iS=class oI{constructor(e,n,r){this.from=e,this.to=n,this.value=r}static create(e,n,r){return new oI(e,n,r)}};function aS(t,e){return t.from-e.from||t.value.startSide-e.value.startSide}class _6{constructor(e,n,r,s){this.from=e,this.to=n,this.value=r,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(e,n,r,s=0){let i=r?this.to:this.from;for(let a=s,o=i.length;;){if(a==o)return a;let c=a+o>>1,h=i[c]-e||(r?this.value[c].endSide:this.value[c].startSide)-n;if(c==a)return h>=0?a:o;h>=0?o=c:a=c+1}}between(e,n,r,s){for(let i=this.findIndex(n,-1e9,!0),a=this.findIndex(r,1e9,!1,i);ix||g==x&&h.startSide>0&&h.endSide<=0)continue;(x-g||h.endSide-h.startSide)<0||(a<0&&(a=g),h.point&&(o=Math.max(o,x-g)),r.push(h),s.push(g-a),i.push(x-a))}return{mapped:r.length?new _6(s,i,r,o):null,pos:a}}}class On{constructor(e,n,r,s){this.chunkPos=e,this.chunk=n,this.nextLayer=r,this.maxPoint=s}static create(e,n,r,s){return new On(e,n,r,s)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let n of this.chunk)e+=n.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:n=[],sort:r=!1,filterFrom:s=0,filterTo:i=this.length}=e,a=e.filter;if(n.length==0&&!a)return this;if(r&&(n=n.slice().sort(aS)),this.isEmpty)return n.length?On.of(n):this;let o=new cI(this,null,-1).goto(0),c=0,h=[],f=new fo;for(;o.value||c=0){let m=n[c++];f.addInner(m.from,m.to,m.value)||h.push(m)}else o.rangeIndex==1&&o.chunkIndexthis.chunkEnd(o.chunkIndex)||io.to||i=i&&e<=i+a.length&&a.between(i,e-i,n-i,r)===!1)return}this.nextLayer.between(e,n,r)}}iter(e=0){return Wm.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,n=0){return Wm.from(e).goto(n)}static compare(e,n,r,s,i=-1){let a=e.filter(m=>m.maxPoint>0||!m.isEmpty&&m.maxPoint>=i),o=n.filter(m=>m.maxPoint>0||!m.isEmpty&&m.maxPoint>=i),c=M9(a,o,r),h=new Jf(a,c,i),f=new Jf(o,c,i);r.iterGaps((m,g,x)=>A9(h,m,f,g,x,s)),r.empty&&r.length==0&&A9(h,0,f,0,0,s)}static eq(e,n,r=0,s){s==null&&(s=999999999);let i=e.filter(f=>!f.isEmpty&&n.indexOf(f)<0),a=n.filter(f=>!f.isEmpty&&e.indexOf(f)<0);if(i.length!=a.length)return!1;if(!i.length)return!0;let o=M9(i,a),c=new Jf(i,o,0).goto(r),h=new Jf(a,o,0).goto(r);for(;;){if(c.to!=h.to||!lS(c.active,h.active)||c.point&&(!h.point||!c.point.eq(h.point)))return!1;if(c.to>s)return!0;c.next(),h.next()}}static spans(e,n,r,s,i=-1){let a=new Jf(e,null,i).goto(n),o=n,c=a.openStart;for(;;){let h=Math.min(a.to,r);if(a.point){let f=a.activeForPoint(a.to),m=a.pointFromo&&(s.span(o,h,a.active,c),c=a.openEnd(h));if(a.to>r)return c+(a.point&&a.to>r?1:0);o=a.to,a.next()}}static of(e,n=!1){let r=new fo;for(let s of e instanceof iS?[e]:n?_re(e):e)r.add(s.from,s.to,s.value);return r.finish()}static join(e){if(!e.length)return On.empty;let n=e[e.length-1];for(let r=e.length-2;r>=0;r--)for(let s=e[r];s!=On.empty;s=s.nextLayer)n=new On(s.chunkPos,s.chunk,n,Math.max(s.maxPoint,n.maxPoint));return n}}On.empty=new On([],[],null,-1);function _re(t){if(t.length>1)for(let e=t[0],n=1;n0)return t.slice().sort(aS);e=r}return t}On.empty.nextLayer=On.empty;class fo{finishChunk(e){this.chunks.push(new _6(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,n,r){this.addInner(e,n,r)||(this.nextLayer||(this.nextLayer=new fo)).add(e,n,r)}addInner(e,n,r){let s=e-this.lastTo||r.startSide-this.last.endSide;if(s<=0&&(e-this.lastFrom||r.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(n-this.chunkStart),this.last=r,this.lastFrom=e,this.lastTo=n,this.value.push(r),r.point&&(this.maxPoint=Math.max(this.maxPoint,n-e)),!0)}addChunk(e,n){if((e-this.lastTo||n.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,n.maxPoint),this.chunks.push(n),this.chunkPos.push(e);let r=n.value.length-1;return this.last=n.value[r],this.lastFrom=n.from[r]+e,this.lastTo=n.to[r]+e,!0}finish(){return this.finishInner(On.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let n=On.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,n}}function M9(t,e,n){let r=new Map;for(let i of t)for(let a=0;a=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=r&&s.push(new cI(a,n,r,i));return s.length==1?s[0]:new Wm(s)}get startSide(){return this.value?this.value.startSide:0}goto(e,n=-1e9){for(let r of this.heap)r.goto(e,n);for(let r=this.heap.length>>1;r>=0;r--)xw(this.heap,r);return this.next(),this}forward(e,n){for(let r of this.heap)r.forward(e,n);for(let r=this.heap.length>>1;r>=0;r--)xw(this.heap,r);(this.to-e||this.value.endSide-n)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),xw(this.heap,0)}}}function xw(t,e){for(let n=t[e];;){let r=(e<<1)+1;if(r>=t.length)break;let s=t[r];if(r+1=0&&(s=t[r+1],r++),n.compare(s)<0)break;t[r]=n,t[e]=s,e=r}}class Jf{constructor(e,n,r){this.minPoint=r,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=Wm.from(e,n,r)}goto(e,n=-1e9){return this.cursor.goto(e,n),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=n,this.openStart=-1,this.next(),this}forward(e,n){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-n)<0;)this.removeActive(this.minActive);this.cursor.forward(e,n)}removeActive(e){Zg(this.active,e),Zg(this.activeTo,e),Zg(this.activeRank,e),this.minActive=R9(this.active,this.activeTo)}addActive(e){let n=0,{value:r,to:s,rank:i}=this.cursor;for(;n0;)n++;Jg(this.active,n,r),Jg(this.activeTo,n,s),Jg(this.activeRank,n,i),e&&Jg(e,n,this.cursor.from),this.minActive=R9(this.active,this.activeTo)}next(){let e=this.to,n=this.point;this.point=null;let r=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>e){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),r&&Zg(r,s)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let i=this.cursor.value;if(!i.point)this.addActive(r),this.cursor.next();else if(n&&this.cursor.to==this.to&&this.cursor.from=0&&r[s]=0&&!(this.activeRank[r]e||this.activeTo[r]==e&&this.active[r].endSide>=this.point.endSide)&&n.push(this.active[r]);return n.reverse()}openEnd(e){let n=0;for(let r=this.activeTo.length-1;r>=0&&this.activeTo[r]>e;r--)n++;return n}}function A9(t,e,n,r,s,i){t.goto(e),n.goto(r);let a=r+s,o=r,c=r-e;for(;;){let h=t.to+c-n.to,f=h||t.endSide-n.endSide,m=f<0?t.to+c:n.to,g=Math.min(m,a);if(t.point||n.point?t.point&&n.point&&(t.point==n.point||t.point.eq(n.point))&&lS(t.activeForPoint(t.to),n.activeForPoint(n.to))||i.comparePoint(o,g,t.point,n.point):g>o&&!lS(t.active,n.active)&&i.compareRange(o,g,t.active,n.active),m>a)break;(h||t.openEnd!=n.openEnd)&&i.boundChange&&i.boundChange(m),o=m,f<=0&&t.next(),f>=0&&n.next()}}function lS(t,e){if(t.length!=e.length)return!1;for(let n=0;n=e;r--)t[r+1]=t[r];t[e]=n}function R9(t,e){let n=-1,r=1e9;for(let s=0;s=e)return s;if(s==t.length)break;i+=t.charCodeAt(s)==9?n-i%n:1,s=ys(t,s)}return r===!0?-1:t.length}const cS="ͼ",D9=typeof Symbol>"u"?"__"+cS:Symbol.for(cS),uS=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),z9=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{};class yc{constructor(e,n){this.rules=[];let{finish:r}=n||{};function s(a){return/^@/.test(a)?[a]:a.split(/,\s*/)}function i(a,o,c,h){let f=[],m=/^@(\w+)\b/.exec(a[0]),g=m&&m[1]=="keyframes";if(m&&o==null)return c.push(a[0]+";");for(let x in o){let y=o[x];if(/&/.test(x))i(x.split(/,\s*/).map(w=>a.map(S=>w.replace(/&/,S))).reduce((w,S)=>w.concat(S)),y,c);else if(y&&typeof y=="object"){if(!m)throw new RangeError("The value of a property ("+x+") should be a primitive value.");i(s(x),y,f,g)}else y!=null&&f.push(x.replace(/_.*/,"").replace(/[A-Z]/g,w=>"-"+w.toLowerCase())+": "+y+";")}(f.length||g)&&c.push((r&&!m&&!h?a.map(r):a).join(", ")+" {"+f.join(" ")+"}")}for(let a in e)i(s(a),e[a],this.rules)}getRules(){return this.rules.join(` -`)}static newName(){let e=z9[D9]||1;return z9[D9]=e+1,cS+e.toString(36)}static mount(e,n,r){let s=e[uS],i=r&&r.nonce;s?i&&s.setNonce(i):s=new Mre(e,i),s.mount(Array.isArray(n)?n:[n],e)}}let P9=new Map;class Mre{constructor(e,n){let r=e.ownerDocument||e,s=r.defaultView;if(!e.head&&e.adoptedStyleSheets&&s.CSSStyleSheet){let i=P9.get(r);if(i)return e[uS]=i;this.sheet=new s.CSSStyleSheet,P9.set(r,this)}else this.styleTag=r.createElement("style"),n&&this.styleTag.setAttribute("nonce",n);this.modules=[],e[uS]=this}mount(e,n){let r=this.sheet,s=0,i=0;for(let a=0;a-1&&(this.modules.splice(c,1),i--,c=-1),c==-1){if(this.modules.splice(i++,0,o),r)for(let h=0;h",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},Are=typeof navigator<"u"&&/Mac/.test(navigator.platform),Rre=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(var xs=0;xs<10;xs++)bc[48+xs]=bc[96+xs]=String(xs);for(var xs=1;xs<=24;xs++)bc[xs+111]="F"+xs;for(var xs=65;xs<=90;xs++)bc[xs]=String.fromCharCode(xs+32),Gm[xs]=String.fromCharCode(xs);for(var vw in bc)Gm.hasOwnProperty(vw)||(Gm[vw]=bc[vw]);function Dre(t){var e=Are&&t.metaKey&&t.shiftKey&&!t.ctrlKey&&!t.altKey||Rre&&t.shiftKey&&t.key&&t.key.length==1||t.key=="Unidentified",n=!e&&t.key||(t.shiftKey?Gm:bc)[t.keyCode]||t.key||"Unidentified";return n=="Esc"&&(n="Escape"),n=="Del"&&(n="Delete"),n=="Left"&&(n="ArrowLeft"),n=="Up"&&(n="ArrowUp"),n=="Right"&&(n="ArrowRight"),n=="Down"&&(n="ArrowDown"),n}function Wn(){var t=arguments[0];typeof t=="string"&&(t=document.createElement(t));var e=1,n=arguments[1];if(n&&typeof n=="object"&&n.nodeType==null&&!Array.isArray(n)){for(var r in n)if(Object.prototype.hasOwnProperty.call(n,r)){var s=n[r];typeof s=="string"?t.setAttribute(r,s):s!=null&&(t[r]=s)}e++}for(;e2);var Je={mac:I9||/Mac/.test(Ds.platform),windows:/Win/.test(Ds.platform),linux:/Linux|X11/.test(Ds.platform),ie:Yv,ie_version:dI?dS.documentMode||6:fS?+fS[1]:hS?+hS[1]:0,gecko:L9,gecko_version:L9?+(/Firefox\/(\d+)/.exec(Ds.userAgent)||[0,0])[1]:0,chrome:!!yw,chrome_version:yw?+yw[1]:0,ios:I9,android:/Android\b/.test(Ds.userAgent),webkit_version:zre?+(/\bAppleWebKit\/(\d+)/.exec(Ds.userAgent)||[0,0])[1]:0,safari:mS,safari_version:mS?+(/\bVersion\/(\d+(\.\d+)?)/.exec(Ds.userAgent)||[0,0])[1]:0,tabSize:dS.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function Xm(t){let e;return t.nodeType==11?e=t.getSelection?t:t.ownerDocument:e=t,e.getSelection()}function pS(t,e){return e?t==e||t.contains(e.nodeType!=1?e.parentNode:e):!1}function i1(t,e){if(!e.anchorNode)return!1;try{return pS(t,e.anchorNode)}catch{return!1}}function yh(t){return t.nodeType==3?Au(t,0,t.nodeValue.length).getClientRects():t.nodeType==1?t.getClientRects():[]}function Em(t,e,n,r){return n?B9(t,e,n,r,-1)||B9(t,e,n,r,1):!1}function Mu(t){for(var e=0;;e++)if(t=t.previousSibling,!t)return e}function P1(t){return t.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(t.nodeName)}function B9(t,e,n,r,s){for(;;){if(t==n&&e==r)return!0;if(e==(s<0?0:hl(t))){if(t.nodeName=="DIV")return!1;let i=t.parentNode;if(!i||i.nodeType!=1)return!1;e=Mu(t)+(s<0?0:1),t=i}else if(t.nodeType==1){if(t=t.childNodes[e+(s<0?-1:0)],t.nodeType==1&&t.contentEditable=="false")return!1;e=s<0?hl(t):0}else return!1}}function hl(t){return t.nodeType==3?t.nodeValue.length:t.childNodes.length}function W0(t,e){let n=e?t.left:t.right;return{left:n,right:n,top:t.top,bottom:t.bottom}}function Pre(t){let e=t.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:t.innerWidth,top:0,bottom:t.innerHeight}}function hI(t,e){let n=e.width/t.offsetWidth,r=e.height/t.offsetHeight;return(n>.995&&n<1.005||!isFinite(n)||Math.abs(e.width-t.offsetWidth)<1)&&(n=1),(r>.995&&r<1.005||!isFinite(r)||Math.abs(e.height-t.offsetHeight)<1)&&(r=1),{scaleX:n,scaleY:r}}function Lre(t,e,n,r,s,i,a,o){let c=t.ownerDocument,h=c.defaultView||window;for(let f=t,m=!1;f&&!m;)if(f.nodeType==1){let g,x=f==c.body,y=1,w=1;if(x)g=Pre(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(f).position)&&(m=!0),f.scrollHeight<=f.clientHeight&&f.scrollWidth<=f.clientWidth){f=f.assignedSlot||f.parentNode;continue}let N=f.getBoundingClientRect();({scaleX:y,scaleY:w}=hI(f,N)),g={left:N.left,right:N.left+f.clientWidth*y,top:N.top,bottom:N.top+f.clientHeight*w}}let S=0,k=0;if(s=="nearest")e.top0&&e.bottom>g.bottom+k&&(k=e.bottom-g.bottom+a)):e.bottom>g.bottom&&(k=e.bottom-g.bottom+a,n<0&&e.top-k0&&e.right>g.right+S&&(S=e.right-g.right+i)):e.right>g.right&&(S=e.right-g.right+i,n<0&&e.leftg.bottom||e.leftg.right)&&(e={left:Math.max(e.left,g.left),right:Math.min(e.right,g.right),top:Math.max(e.top,g.top),bottom:Math.min(e.bottom,g.bottom)}),f=f.assignedSlot||f.parentNode}else if(f.nodeType==11)f=f.host;else break}function Ire(t){let e=t.ownerDocument,n,r;for(let s=t.parentNode;s&&!(s==e.body||n&&r);)if(s.nodeType==1)!r&&s.scrollHeight>s.clientHeight&&(r=s),!n&&s.scrollWidth>s.clientWidth&&(n=s),s=s.assignedSlot||s.parentNode;else if(s.nodeType==11)s=s.host;else break;return{x:n,y:r}}class Bre{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:n,focusNode:r}=e;this.set(n,Math.min(e.anchorOffset,n?hl(n):0),r,Math.min(e.focusOffset,r?hl(r):0))}set(e,n,r,s){this.anchorNode=e,this.anchorOffset=n,this.focusNode=r,this.focusOffset=s}}let ou=null;Je.safari&&Je.safari_version>=26&&(ou=!1);function fI(t){if(t.setActive)return t.setActive();if(ou)return t.focus(ou);let e=[];for(let n=t;n&&(e.push(n,n.scrollTop,n.scrollLeft),n!=n.ownerDocument);n=n.parentNode);if(t.focus(ou==null?{get preventScroll(){return ou={preventScroll:!0},!0}}:void 0),!ou){ou=!1;for(let n=0;nMath.max(1,t.scrollHeight-t.clientHeight-4)}function gI(t,e){for(let n=t,r=e;;){if(n.nodeType==3&&r>0)return{node:n,offset:r};if(n.nodeType==1&&r>0){if(n.contentEditable=="false")return null;n=n.childNodes[r-1],r=hl(n)}else if(n.parentNode&&!P1(n))r=Mu(n),n=n.parentNode;else return null}}function xI(t,e){for(let n=t,r=e;;){if(n.nodeType==3&&rn)return m.domBoundsAround(e,n,h);if(g>=e&&s==-1&&(s=c,i=h),h>n&&m.dom.parentNode==this.dom){a=c,o=f;break}f=g,h=g+m.breakAfter}return{from:i,to:o<0?r+this.length:o,startDOM:(s?this.children[s-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:a=0?this.children[a].dom:null}}markDirty(e=!1){this.flags|=2,this.markParentsDirty(e)}markParentsDirty(e){for(let n=this.parent;n;n=n.parent){if(e&&(n.flags|=2),n.flags&1)return;n.flags|=1,e=!1}}setParent(e){this.parent!=e&&(this.parent=e,this.flags&7&&this.markParentsDirty(!0))}setDOM(e){this.dom!=e&&(this.dom&&(this.dom.cmView=null),this.dom=e,e.cmView=this)}get rootView(){for(let e=this;;){let n=e.parent;if(!n)return e;e=n}}replaceChildren(e,n,r=M6){this.markDirty();for(let s=e;sthis.pos||e==this.pos&&(n>0||this.i==0||this.children[this.i-1].breakAfter))return this.off=e-this.pos,this;let r=this.children[--this.i];this.pos-=r.length+r.breakAfter}}}function yI(t,e,n,r,s,i,a,o,c){let{children:h}=t,f=h.length?h[e]:null,m=i.length?i[i.length-1]:null,g=m?m.breakAfter:a;if(!(e==r&&f&&!a&&!g&&i.length<2&&f.merge(n,s,i.length?m:null,n==0,o,c))){if(r0&&(!a&&i.length&&f.merge(n,f.length,i[0],!1,o,0)?f.breakAfter=i.shift().breakAfter:(n$re||r.flags&8)?!1:(this.text=this.text.slice(0,e)+(r?r.text:"")+this.text.slice(n),this.markDirty(),!0)}split(e){let n=new _a(this.text.slice(e));return this.text=this.text.slice(0,e),this.markDirty(),n.flags|=this.flags&8,n}localPosFromDOM(e,n){return e==this.dom?n:n?this.text.length:0}domAtPos(e){return new Cs(this.dom,e)}domBoundsAround(e,n,r){return{from:r,to:r+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(e,n){return Qre(this.dom,e,n)}}class mo extends Qn{constructor(e,n=[],r=0){super(),this.mark=e,this.children=n,this.length=r;for(let s of n)s.setParent(this)}setAttrs(e){if(mI(e),this.mark.class&&(e.className=this.mark.class),this.mark.attrs)for(let n in this.mark.attrs)e.setAttribute(n,this.mark.attrs[n]);return e}canReuseDOM(e){return super.canReuseDOM(e)&&!((this.flags|e.flags)&8)}reuseDOM(e){e.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(e),this.flags|=6)}sync(e,n){this.dom?this.flags&4&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(e,n)}merge(e,n,r,s,i,a){return r&&(!(r instanceof mo&&r.mark.eq(this.mark))||e&&i<=0||ne&&n.push(r=e&&(s=i),r=c,i++}let a=this.length-e;return this.length=e,s>-1&&(this.children.length=s,this.markDirty()),new mo(this.mark,n,a)}domAtPos(e){return wI(this,e)}coordsAt(e,n){return kI(this,e,n)}}function Qre(t,e,n){let r=t.nodeValue.length;e>r&&(e=r);let s=e,i=e,a=0;e==0&&n<0||e==r&&n>=0?Je.chrome||Je.gecko||(e?(s--,a=1):i=0)?0:o.length-1];return Je.safari&&!a&&c.width==0&&(c=Array.prototype.find.call(o,h=>h.width)||c),a?W0(c,a<0):c||null}class ro extends Qn{static create(e,n,r){return new ro(e,n,r)}constructor(e,n,r){super(),this.widget=e,this.length=n,this.side=r,this.prevWidget=null}split(e){let n=ro.create(this.widget,this.length-e,this.side);return this.length-=e,n}sync(e){(!this.dom||!this.widget.updateDOM(this.dom,e))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(e)),this.widget.editable||(this.dom.contentEditable="false"))}getSide(){return this.side}merge(e,n,r,s,i,a){return r&&(!(r instanceof ro)||!this.widget.compare(r.widget)||e>0&&i<=0||n0)?Cs.before(this.dom):Cs.after(this.dom,e==this.length)}domBoundsAround(){return null}coordsAt(e,n){let r=this.widget.coordsAt(this.dom,e,n);if(r)return r;let s=this.dom.getClientRects(),i=null;if(!s.length)return null;let a=this.side?this.side<0:e>0;for(let o=a?s.length-1:0;i=s[o],!(e>0?o==0:o==s.length-1||i.top0?Cs.before(this.dom):Cs.after(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(e){return this.dom.getBoundingClientRect()}get overrideDOMText(){return pn.empty}get isHidden(){return!0}}_a.prototype.children=ro.prototype.children=bh.prototype.children=M6;function wI(t,e){let n=t.dom,{children:r}=t,s=0;for(let i=0;si&&e0;i--){let a=r[i-1];if(a.dom.parentNode==n)return a.domAtPos(a.length)}for(let i=s;i0&&e instanceof mo&&s.length&&(r=s[s.length-1])instanceof mo&&r.mark.eq(e.mark)?SI(r,e.children[0],n-1):(s.push(e),e.setParent(t)),t.length+=e.length}function kI(t,e,n){let r=null,s=-1,i=null,a=-1;function o(h,f){for(let m=0,g=0;m=f&&(x.children.length?o(x,f-g):(!i||i.isHidden&&(n>0||Vre(i,x)))&&(y>f||g==y&&x.getSide()>0)?(i=x,a=f-g):(g-1?1:0)!=s.length-(n&&s.indexOf(n)>-1?1:0))return!1;for(let i of r)if(i!=n&&(s.indexOf(i)==-1||t[i]!==e[i]))return!1;return!0}function xS(t,e,n){let r=!1;if(e)for(let s in e)n&&s in n||(r=!0,s=="style"?t.style.cssText="":t.removeAttribute(s));if(n)for(let s in n)e&&e[s]==n[s]||(r=!0,s=="style"?t.style.cssText=n[s]:t.setAttribute(s,n[s]));return r}function Ure(t){let e=Object.create(null);for(let n=0;n0?3e8:-4e8:n>0?1e8:-1e8,new wc(e,n,n,r,e.widget||null,!1)}static replace(e){let n=!!e.block,r,s;if(e.isBlockGap)r=-5e8,s=4e8;else{let{start:i,end:a}=jI(e,n);r=(i?n?-3e8:-1:5e8)-1,s=(a?n?2e8:1:-6e8)+1}return new wc(e,r,s,n,e.widget||null,!0)}static line(e){return new X0(e)}static set(e,n=!1){return On.of(e,n)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}}xt.none=On.empty;class G0 extends xt{constructor(e){let{start:n,end:r}=jI(e);super(n?-1:5e8,r?1:-6e8,null,e),this.tagName=e.tagName||"span",this.class=e.class||"",this.attrs=e.attributes||null}eq(e){var n,r;return this==e||e instanceof G0&&this.tagName==e.tagName&&(this.class||((n=this.attrs)===null||n===void 0?void 0:n.class))==(e.class||((r=e.attrs)===null||r===void 0?void 0:r.class))&&L1(this.attrs,e.attrs,"class")}range(e,n=e){if(e>=n)throw new RangeError("Mark decorations may not be empty");return super.range(e,n)}}G0.prototype.point=!1;class X0 extends xt{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof X0&&this.spec.class==e.spec.class&&L1(this.spec.attributes,e.spec.attributes)}range(e,n=e){if(n!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,n)}}X0.prototype.mapMode=vs.TrackBefore;X0.prototype.point=!0;class wc extends xt{constructor(e,n,r,s,i,a){super(n,r,i,e),this.block=s,this.isReplace=a,this.mapMode=s?n<=0?vs.TrackBefore:vs.TrackAfter:vs.TrackDel}get type(){return this.startSide!=this.endSide?Is.WidgetRange:this.startSide<=0?Is.WidgetBefore:Is.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof wc&&Wre(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,n=e){if(this.isReplace&&(e>n||e==n&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&n!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,n)}}wc.prototype.point=!0;function jI(t,e=!1){let{inclusiveStart:n,inclusiveEnd:r}=t;return n==null&&(n=t.inclusive),r==null&&(r=t.inclusive),{start:n??e,end:r??e}}function Wre(t,e){return t==e||!!(t&&e&&t.compare(e))}function a1(t,e,n,r=0){let s=n.length-1;s>=0&&n[s]+r>=t?n[s]=Math.max(n[s],e):n.push(t,e)}class qr extends Qn{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(e,n,r,s,i,a){if(r){if(!(r instanceof qr))return!1;this.dom||r.transferDOM(this)}return s&&this.setDeco(r?r.attrs:null),bI(this,e,n,r?r.children.slice():[],i,a),!0}split(e){let n=new qr;if(n.breakAfter=this.breakAfter,this.length==0)return n;let{i:r,off:s}=this.childPos(e);s&&(n.append(this.children[r].split(s),0),this.children[r].merge(s,this.children[r].length,null,!1,0,0),r++);for(let i=r;i0&&this.children[r-1].length==0;)this.children[--r].destroy();return this.children.length=r,this.markDirty(),this.length=e,n}transferDOM(e){this.dom&&(this.markDirty(),e.setDOM(this.dom),e.prevAttrs=this.prevAttrs===void 0?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(e){L1(this.attrs,e)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=e)}append(e,n){SI(this,e,n)}addLineDeco(e){let n=e.spec.attributes,r=e.spec.class;n&&(this.attrs=gS(n,this.attrs||{})),r&&(this.attrs=gS({class:r},this.attrs||{}))}domAtPos(e){return wI(this,e)}reuseDOM(e){e.nodeName=="DIV"&&(this.setDOM(e),this.flags|=6)}sync(e,n){var r;this.dom?this.flags&4&&(mI(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),this.prevAttrs!==void 0&&(xS(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(e,n);let s=this.dom.lastChild;for(;s&&Qn.get(s)instanceof mo;)s=s.lastChild;if(!s||!this.length||s.nodeName!="BR"&&((r=Qn.get(s))===null||r===void 0?void 0:r.isEditable)==!1&&(!Je.ios||!this.children.some(i=>i instanceof _a))){let i=document.createElement("BR");i.cmIgnore=!0,this.dom.appendChild(i)}}measureTextSize(){if(this.children.length==0||this.length>20)return null;let e=0,n;for(let r of this.children){if(!(r instanceof _a)||/[^ -~]/.test(r.text))return null;let s=yh(r.dom);if(s.length!=1)return null;e+=s[0].width,n=s[0].height}return e?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length,textHeight:n}:null}coordsAt(e,n){let r=kI(this,e,n);if(!this.children.length&&r&&this.parent){let{heightOracle:s}=this.parent.view.viewState,i=r.bottom-r.top;if(Math.abs(i-s.lineHeight)<2&&s.textHeight=n){if(i instanceof qr)return i;if(a>n)break}s=a+i.breakAfter}return null}}class oo extends Qn{constructor(e,n,r){super(),this.widget=e,this.length=n,this.deco=r,this.breakAfter=0,this.prevWidget=null}merge(e,n,r,s,i,a){return r&&(!(r instanceof oo)||!this.widget.compare(r.widget)||e>0&&i<=0||n0}}class vS extends xl{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}}class _m{constructor(e,n,r,s){this.doc=e,this.pos=n,this.end=r,this.disallowBlockEffectsFor=s,this.content=[],this.curLine=null,this.breakAtStart=0,this.pendingBuffer=0,this.bufferMarks=[],this.atCursorPos=!0,this.openStart=-1,this.openEnd=-1,this.text="",this.textOff=0,this.cursor=e.iter(),this.skip=n}posCovered(){if(this.content.length==0)return!this.breakAtStart&&this.doc.lineAt(this.pos).from!=this.pos;let e=this.content[this.content.length-1];return!(e.breakAfter||e instanceof oo&&e.deco.endSide<0)}getLine(){return this.curLine||(this.content.push(this.curLine=new qr),this.atCursorPos=!0),this.curLine}flushBuffer(e=this.bufferMarks){this.pendingBuffer&&(this.curLine.append(ex(new bh(-1),e),e.length),this.pendingBuffer=0)}addBlockWidget(e){this.flushBuffer(),this.curLine=null,this.content.push(e)}finish(e){this.pendingBuffer&&e<=this.bufferMarks.length?this.flushBuffer():this.pendingBuffer=0,!this.posCovered()&&!(e&&this.content.length&&this.content[this.content.length-1]instanceof oo)&&this.getLine()}buildText(e,n,r){for(;e>0;){if(this.textOff==this.text.length){let{value:a,lineBreak:o,done:c}=this.cursor.next(this.skip);if(this.skip=0,c)throw new Error("Ran out of text content when drawing inline views");if(o){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer(),this.curLine=null,this.atCursorPos=!0,e--;continue}else this.text=a,this.textOff=0}let s=Math.min(this.text.length-this.textOff,e),i=Math.min(s,512);this.flushBuffer(n.slice(n.length-r)),this.getLine().append(ex(new _a(this.text.slice(this.textOff,this.textOff+i)),n),r),this.atCursorPos=!0,this.textOff+=i,e-=i,r=s<=i?0:n.length}}span(e,n,r,s){this.buildText(n-e,r,s),this.pos=n,this.openStart<0&&(this.openStart=s)}point(e,n,r,s,i,a){if(this.disallowBlockEffectsFor[a]&&r instanceof wc){if(r.block)throw new RangeError("Block decorations may not be specified via plugins");if(n>this.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}let o=n-e;if(r instanceof wc)if(r.block)r.startSide>0&&!this.posCovered()&&this.getLine(),this.addBlockWidget(new oo(r.widget||wh.block,o,r));else{let c=ro.create(r.widget||wh.inline,o,o?0:r.startSide),h=this.atCursorPos&&!c.isEditable&&i<=s.length&&(e0),f=!c.isEditable&&(es.length||r.startSide<=0),m=this.getLine();this.pendingBuffer==2&&!h&&!c.isEditable&&(this.pendingBuffer=0),this.flushBuffer(s),h&&(m.append(ex(new bh(1),s),i),i=s.length+Math.max(0,i-s.length)),m.append(ex(c,s),i),this.atCursorPos=f,this.pendingBuffer=f?es.length?1:2:0,this.pendingBuffer&&(this.bufferMarks=s.slice())}else this.doc.lineAt(this.pos).from==this.pos&&this.getLine().addLineDeco(r);o&&(this.textOff+o<=this.text.length?this.textOff+=o:(this.skip+=o-(this.text.length-this.textOff),this.text="",this.textOff=0),this.pos=n),this.openStart<0&&(this.openStart=i)}static build(e,n,r,s,i){let a=new _m(e,n,r,i);return a.openEnd=On.spans(s,n,r,a),a.openStart<0&&(a.openStart=a.openEnd),a.finish(a.openEnd),a}}function ex(t,e){for(let n of e)t=new mo(n,[t],t.length);return t}class wh extends xl{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}}wh.inline=new wh("span");wh.block=new wh("div");var sr=(function(t){return t[t.LTR=0]="LTR",t[t.RTL=1]="RTL",t})(sr||(sr={}));const Ru=sr.LTR,A6=sr.RTL;function OI(t){let e=[];for(let n=0;n=n){if(o.level==r)return a;(i<0||(s!=0?s<0?o.fromn:e[i].level>o.level))&&(i=a)}}if(i<0)throw new RangeError("Index out of range");return i}}function CI(t,e){if(t.length!=e.length)return!1;for(let n=0;n=0;w-=3)if(Va[w+1]==-x){let S=Va[w+2],k=S&2?s:S&4?S&1?i:s:0;k&&(Gn[m]=Gn[Va[w]]=k),o=w;break}}else{if(Va.length==189)break;Va[o++]=m,Va[o++]=g,Va[o++]=c}else if((y=Gn[m])==2||y==1){let w=y==s;c=w?0:1;for(let S=o-3;S>=0;S-=3){let k=Va[S+2];if(k&2)break;if(w)Va[S+2]|=2;else{if(k&4)break;Va[S+2]|=4}}}}}function Jre(t,e,n,r){for(let s=0,i=r;s<=n.length;s++){let a=s?n[s-1].to:t,o=sc;)y==S&&(y=n[--w].from,S=w?n[w-1].to:t),Gn[--y]=x;c=f}else i=h,c++}}}function bS(t,e,n,r,s,i,a){let o=r%2?2:1;if(r%2==s%2)for(let c=e,h=0;cc&&a.push(new hc(c,w.from,x));let S=w.direction==Ru!=!(x%2);wS(t,S?r+1:r,s,w.inner,w.from,w.to,a),c=w.to}y=w.to}else{if(y==n||(f?Gn[y]!=o:Gn[y]==o))break;y++}g?bS(t,c,y,r+1,s,g,a):ce;){let f=!0,m=!1;if(!h||c>i[h-1].to){let w=Gn[c-1];w!=o&&(f=!1,m=w==16)}let g=!f&&o==1?[]:null,x=f?r:r+1,y=c;e:for(;;)if(h&&y==i[h-1].to){if(m)break e;let w=i[--h];if(!f)for(let S=w.from,k=h;;){if(S==e)break e;if(k&&i[k-1].to==S)S=i[--k].from;else{if(Gn[S-1]==o)break e;break}}if(g)g.push(w);else{w.toGn.length;)Gn[Gn.length]=256;let r=[],s=e==Ru?0:1;return wS(t,s,s,n,0,t.length,r),r}function TI(t){return[new hc(0,t,0)]}let EI="";function tse(t,e,n,r,s){var i;let a=r.head-t.from,o=hc.find(e,a,(i=r.bidiLevel)!==null&&i!==void 0?i:-1,r.assoc),c=e[o],h=c.side(s,n);if(a==h){let g=o+=s?1:-1;if(g<0||g>=e.length)return null;c=e[o=g],a=c.side(!s,n),h=c.side(s,n)}let f=ys(t.text,a,c.forward(s,n));(fc.to)&&(f=h),EI=t.text.slice(Math.min(a,f),Math.max(a,f));let m=o==(s?e.length-1:0)?null:e[o+(s?1:-1)];return m&&f==h&&m.level+(s?0:1)t.some(e=>e)}),LI=nt.define({combine:t=>t.some(e=>e)}),II=nt.define();class sh{constructor(e,n="nearest",r="nearest",s=5,i=5,a=!1){this.range=e,this.y=n,this.x=r,this.yMargin=s,this.xMargin=i,this.isSnapshot=a}map(e){return e.empty?this:new sh(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new sh(Ae.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}}const tx=Lt.define({map:(t,e)=>t.map(e)}),BI=Lt.define();function ni(t,e,n){let r=t.facet(RI);r.length?r[0](e):window.onerror&&window.onerror(String(e),n,void 0,void 0,e)||(n?console.error(n+":",e):console.error(e))}const no=nt.define({combine:t=>t.length?t[0]:!0});let rse=0;const Gd=nt.define({combine(t){return t.filter((e,n)=>{for(let r=0;r{let c=[];return a&&c.push(Ym.of(h=>{let f=h.plugin(o);return f?a(f):xt.none})),i&&c.push(i(o)),c})}static fromClass(e,n){return _r.define((r,s)=>new e(r,s),n)}}class bw{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(e){if(this.value){if(this.mustUpdate){let n=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(n)}catch(r){if(ni(n.state,r,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg)}catch(n){ni(e.state,n,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var n;if(!((n=this.value)===null||n===void 0)&&n.destroy)try{this.value.destroy()}catch(r){ni(e.state,r,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const qI=nt.define(),z6=nt.define(),Ym=nt.define(),FI=nt.define(),Y0=nt.define(),$I=nt.define();function Q9(t,e){let n=t.state.facet($I);if(!n.length)return n;let r=n.map(i=>i instanceof Function?i(t):i),s=[];return On.spans(r,e.from,e.to,{point(){},span(i,a,o,c){let h=i-e.from,f=a-e.from,m=s;for(let g=o.length-1;g>=0;g--,c--){let x=o[g].spec.bidiIsolate,y;if(x==null&&(x=nse(e.text,h,f)),c>0&&m.length&&(y=m[m.length-1]).to==h&&y.direction==x)y.to=f,m=y.inner;else{let w={from:h,to:f,direction:x,inner:[]};m.push(w),m=w.inner}}}}),s}const QI=nt.define();function P6(t){let e=0,n=0,r=0,s=0;for(let i of t.state.facet(QI)){let a=i(t);a&&(a.left!=null&&(e=Math.max(e,a.left)),a.right!=null&&(n=Math.max(n,a.right)),a.top!=null&&(r=Math.max(r,a.top)),a.bottom!=null&&(s=Math.max(s,a.bottom)))}return{left:e,right:n,top:r,bottom:s}}const mm=nt.define();class ia{constructor(e,n,r,s){this.fromA=e,this.toA=n,this.fromB=r,this.toB=s}join(e){return new ia(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let n=e.length,r=this;for(;n>0;n--){let s=e[n-1];if(!(s.fromA>r.toA)){if(s.toAf)break;i+=2}if(!c)return r;new ia(c.fromA,c.toA,c.fromB,c.toB).addToSet(r),a=c.toA,o=c.toB}}}class I1{constructor(e,n,r){this.view=e,this.state=n,this.transactions=r,this.flags=0,this.startState=e.state,this.changes=Kr.empty(this.startState.doc.length);for(let i of r)this.changes=this.changes.compose(i.changes);let s=[];this.changes.iterChangedRanges((i,a,o,c)=>s.push(new ia(i,a,o,c))),this.changedRanges=s}static create(e,n,r){return new I1(e,n,r)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}}class H9 extends Qn{get length(){return this.view.state.doc.length}constructor(e){super(),this.view=e,this.decorations=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.markedForComposition=new Set,this.editContextFormatting=xt.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(e.contentDOM),this.children=[new qr],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new ia(0,0,0,e.state.doc.length)],0,null)}update(e){var n;let r=e.changedRanges;this.minWidth>0&&r.length&&(r.every(({fromA:h,toA:f})=>fthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((n=this.domChanged)===null||n===void 0)&&n.newSel?s=this.domChanged.newSel.head:!use(e.changes,this.hasComposition)&&!e.selectionSet&&(s=e.state.selection.main.head));let i=s>-1?ise(this.view,e.changes,s):null;if(this.domChanged=null,this.hasComposition){this.markedForComposition.clear();let{from:h,to:f}=this.hasComposition;r=new ia(h,f,e.changes.mapPos(h,-1),e.changes.mapPos(f,1)).addToSet(r.slice())}this.hasComposition=i?{from:i.range.fromB,to:i.range.toB}:null,(Je.ie||Je.chrome)&&!i&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let a=this.decorations,o=this.updateDeco(),c=ose(a,o,e.changes);return r=ia.extendWithRanges(r,c),!(this.flags&7)&&r.length==0?!1:(this.updateInner(r,e.startState.doc.length,i),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,n,r){this.view.viewState.mustMeasureContent=!0,this.updateChildren(e,n,r);let{observer:s}=this.view;s.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let a=Je.chrome||Je.ios?{node:s.selectionRange.focusNode,written:!1}:void 0;this.sync(this.view,a),this.flags&=-8,a&&(a.written||s.selectionRange.focusNode!=a.node)&&(this.forceSelection=!0),this.dom.style.height=""}),this.markedForComposition.forEach(a=>a.flags&=-9);let i=[];if(this.view.viewport.from||this.view.viewport.to=0?s[a]:null;if(!o)break;let{fromA:c,toA:h,fromB:f,toB:m}=o,g,x,y,w;if(r&&r.range.fromBf){let T=_m.build(this.view.state.doc,f,r.range.fromB,this.decorations,this.dynamicDecorationMap),_=_m.build(this.view.state.doc,r.range.toB,m,this.decorations,this.dynamicDecorationMap);x=T.breakAtStart,y=T.openStart,w=_.openEnd;let E=this.compositionView(r);_.breakAtStart?E.breakAfter=1:_.content.length&&E.merge(E.length,E.length,_.content[0],!1,_.openStart,0)&&(E.breakAfter=_.content[0].breakAfter,_.content.shift()),T.content.length&&E.merge(0,0,T.content[T.content.length-1],!0,0,T.openEnd)&&T.content.pop(),g=T.content.concat(E).concat(_.content)}else({content:g,breakAtStart:x,openStart:y,openEnd:w}=_m.build(this.view.state.doc,f,m,this.decorations,this.dynamicDecorationMap));let{i:S,off:k}=i.findPos(h,1),{i:N,off:C}=i.findPos(c,-1);yI(this,N,C,S,k,g,x,y,w)}r&&this.fixCompositionDOM(r)}updateEditContextFormatting(e){this.editContextFormatting=this.editContextFormatting.map(e.changes);for(let n of e.transactions)for(let r of n.effects)r.is(BI)&&(this.editContextFormatting=r.value)}compositionView(e){let n=new _a(e.text.nodeValue);n.flags|=8;for(let{deco:s}of e.marks)n=new mo(s,[n],n.length);let r=new qr;return r.append(n,0),r}fixCompositionDOM(e){let n=(i,a)=>{a.flags|=8|(a.children.some(c=>c.flags&7)?1:0),this.markedForComposition.add(a);let o=Qn.get(i);o&&o!=a&&(o.dom=null),a.setDOM(i)},r=this.childPos(e.range.fromB,1),s=this.children[r.i];n(e.line,s);for(let i=e.marks.length-1;i>=-1;i--)r=s.childPos(r.off,1),s=s.children[r.i],n(i>=0?e.marks[i].node:e.text,s)}updateSelection(e=!1,n=!1){(e||!this.view.observer.selectionRange.focusNode)&&this.view.observer.readSelectionRange();let r=this.view.root.activeElement,s=r==this.dom,i=!s&&!(this.view.state.facet(no)||this.dom.tabIndex>-1)&&i1(this.dom,this.view.observer.selectionRange)&&!(r&&this.dom.contains(r));if(!(s||n||i))return;let a=this.forceSelection;this.forceSelection=!1;let o=this.view.state.selection.main,c=this.moveToLine(this.domAtPos(o.anchor)),h=o.empty?c:this.moveToLine(this.domAtPos(o.head));if(Je.gecko&&o.empty&&!this.hasComposition&&sse(c)){let m=document.createTextNode("");this.view.observer.ignore(()=>c.node.insertBefore(m,c.node.childNodes[c.offset]||null)),c=h=new Cs(m,0),a=!0}let f=this.view.observer.selectionRange;(a||!f.focusNode||(!Em(c.node,c.offset,f.anchorNode,f.anchorOffset)||!Em(h.node,h.offset,f.focusNode,f.focusOffset))&&!this.suppressWidgetCursorChange(f,o))&&(this.view.observer.ignore(()=>{Je.android&&Je.chrome&&this.dom.contains(f.focusNode)&&cse(f.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let m=Xm(this.view.root);if(m)if(o.empty){if(Je.gecko){let g=ase(c.node,c.offset);if(g&&g!=3){let x=(g==1?gI:xI)(c.node,c.offset);x&&(c=new Cs(x.node,x.offset))}}m.collapse(c.node,c.offset),o.bidiLevel!=null&&m.caretBidiLevel!==void 0&&(m.caretBidiLevel=o.bidiLevel)}else if(m.extend){m.collapse(c.node,c.offset);try{m.extend(h.node,h.offset)}catch{}}else{let g=document.createRange();o.anchor>o.head&&([c,h]=[h,c]),g.setEnd(h.node,h.offset),g.setStart(c.node,c.offset),m.removeAllRanges(),m.addRange(g)}i&&this.view.root.activeElement==this.dom&&(this.dom.blur(),r&&r.focus())}),this.view.observer.setSelectionRange(c,h)),this.impreciseAnchor=c.precise?null:new Cs(f.anchorNode,f.anchorOffset),this.impreciseHead=h.precise?null:new Cs(f.focusNode,f.focusOffset)}suppressWidgetCursorChange(e,n){return this.hasComposition&&n.empty&&Em(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==n.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,n=e.state.selection.main,r=Xm(e.root),{anchorNode:s,anchorOffset:i}=e.observer.selectionRange;if(!r||!n.empty||!n.assoc||!r.modify)return;let a=qr.find(this,n.head);if(!a)return;let o=a.posAtStart;if(n.head==o||n.head==o+a.length)return;let c=this.coordsAt(n.head,-1),h=this.coordsAt(n.head,1);if(!c||!h||c.bottom>h.top)return;let f=this.domAtPos(n.head+n.assoc);r.collapse(f.node,f.offset),r.modify("move",n.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let m=e.observer.selectionRange;e.docView.posFromDOM(m.anchorNode,m.anchorOffset)!=n.from&&r.collapse(s,i)}moveToLine(e){let n=this.dom,r;if(e.node!=n)return e;for(let s=e.offset;!r&&s=0;s--){let i=Qn.get(n.childNodes[s]);i instanceof qr&&(r=i.domAtPos(i.length))}return r?new Cs(r.node,r.offset,!0):e}nearest(e){for(let n=e;n;){let r=Qn.get(n);if(r&&r.rootView==this)return r;n=n.parentNode}return null}posFromDOM(e,n){let r=this.nearest(e);if(!r)throw new RangeError("Trying to find position for a DOM position outside of the document");return r.localPosFromDOM(e,n)+r.posAtStart}domAtPos(e){let{i:n,off:r}=this.childCursor().findPos(e,-1);for(;n=0;a--){let o=this.children[a],c=i-o.breakAfter,h=c-o.length;if(ce||o.covers(1))&&(!r||o instanceof qr&&!(r instanceof qr&&n>=0)))r=o,s=h;else if(r&&h==e&&c==e&&o instanceof oo&&Math.abs(n)<2){if(o.deco.startSide<0)break;a&&(r=null)}i=h}return r?r.coordsAt(e-s,n):null}coordsForChar(e){let{i:n,off:r}=this.childPos(e,1),s=this.children[n];if(!(s instanceof qr))return null;for(;s.children.length;){let{i:o,off:c}=s.childPos(r,1);for(;;o++){if(o==s.children.length)return null;if((s=s.children[o]).length)break}r=c}if(!(s instanceof _a))return null;let i=ys(s.text,r);if(i==r)return null;let a=Au(s.dom,r,i).getClientRects();for(let o=0;oMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,o=-1,c=this.view.textDirection==sr.LTR;for(let h=0,f=0;fs)break;if(h>=r){let x=m.dom.getBoundingClientRect();if(n.push(x.height),a){let y=m.dom.lastChild,w=y?yh(y):[];if(w.length){let S=w[w.length-1],k=c?S.right-x.left:x.right-S.left;k>o&&(o=k,this.minWidth=i,this.minWidthFrom=h,this.minWidthTo=g)}}}h=g+m.breakAfter}return n}textDirectionAt(e){let{i:n}=this.childPos(e,1);return getComputedStyle(this.children[n].dom).direction=="rtl"?sr.RTL:sr.LTR}measureTextSize(){for(let i of this.children)if(i instanceof qr){let a=i.measureTextSize();if(a)return a}let e=document.createElement("div"),n,r,s;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.dom.appendChild(e);let i=yh(e.firstChild)[0];n=e.getBoundingClientRect().height,r=i?i.width/27:7,s=i?i.height:n,e.remove()}),{lineHeight:n,charWidth:r,textHeight:s}}childCursor(e=this.length){let n=this.children.length;return n&&(e-=this.children[--n].length),new vI(this.children,e,n)}computeBlockGapDeco(){let e=[],n=this.view.viewState;for(let r=0,s=0;;s++){let i=s==n.viewports.length?null:n.viewports[s],a=i?i.from-1:this.length;if(a>r){let o=(n.lineBlockAt(a).bottom-n.lineBlockAt(r).top)/this.view.scaleY;e.push(xt.replace({widget:new vS(o),block:!0,inclusive:!0,isBlockGap:!0}).range(r,a))}if(!i)break;r=i.to+1}return xt.set(e)}updateDeco(){let e=1,n=this.view.state.facet(Ym).map(i=>(this.dynamicDecorationMap[e++]=typeof i=="function")?i(this.view):i),r=!1,s=this.view.state.facet(FI).map((i,a)=>{let o=typeof i=="function";return o&&(r=!0),o?i(this.view):i});for(s.length&&(this.dynamicDecorationMap[e++]=r,n.push(On.join(s))),this.decorations=[this.editContextFormatting,...n,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];en.anchor?-1:1),s;if(!r)return;!n.empty&&(s=this.coordsAt(n.anchor,n.anchor>n.head?-1:1))&&(r={left:Math.min(r.left,s.left),top:Math.min(r.top,s.top),right:Math.max(r.right,s.right),bottom:Math.max(r.bottom,s.bottom)});let i=P6(this.view),a={left:r.left-i.left,top:r.top-i.top,right:r.right+i.right,bottom:r.bottom+i.bottom},{offsetWidth:o,offsetHeight:c}=this.view.scrollDOM;Lre(this.view.scrollDOM,a,n.heads instanceof ro||s.children.some(r);return r(this.children[n])}}function sse(t){return t.node.nodeType==1&&t.node.firstChild&&(t.offset==0||t.node.childNodes[t.offset-1].contentEditable=="false")&&(t.offset==t.node.childNodes.length||t.node.childNodes[t.offset].contentEditable=="false")}function HI(t,e){let n=t.observer.selectionRange;if(!n.focusNode)return null;let r=gI(n.focusNode,n.focusOffset),s=xI(n.focusNode,n.focusOffset),i=r||s;if(s&&r&&s.node!=r.node){let o=Qn.get(s.node);if(!o||o instanceof _a&&o.text!=s.node.nodeValue)i=s;else if(t.docView.lastCompositionAfterCursor){let c=Qn.get(r.node);!c||c instanceof _a&&c.text!=r.node.nodeValue||(i=s)}}if(t.docView.lastCompositionAfterCursor=i!=r,!i)return null;let a=e-i.offset;return{from:a,to:a+i.node.nodeValue.length,node:i.node}}function ise(t,e,n){let r=HI(t,n);if(!r)return null;let{node:s,from:i,to:a}=r,o=s.nodeValue;if(/[\n\r]/.test(o)||t.state.doc.sliceString(r.from,r.to)!=o)return null;let c=e.invertedDesc,h=new ia(c.mapPos(i),c.mapPos(a),i,a),f=[];for(let m=s.parentNode;;m=m.parentNode){let g=Qn.get(m);if(g instanceof mo)f.push({node:m,deco:g.mark});else{if(g instanceof qr||m.nodeName=="DIV"&&m.parentNode==t.contentDOM)return{range:h,text:s,marks:f,line:m};if(m!=t.contentDOM)f.push({node:m,deco:new G0({inclusive:!0,attributes:Ure(m),tagName:m.tagName.toLowerCase()})});else return null}}}function ase(t,e){return t.nodeType!=1?0:(e&&t.childNodes[e-1].contentEditable=="false"?1:0)|(e{re.from&&(n=!0)}),n}function dse(t,e,n=1){let r=t.charCategorizer(e),s=t.doc.lineAt(e),i=e-s.from;if(s.length==0)return Ae.cursor(e);i==0?n=1:i==s.length&&(n=-1);let a=i,o=i;n<0?a=ys(s.text,i,!1):o=ys(s.text,i);let c=r(s.text.slice(a,o));for(;a>0;){let h=ys(s.text,a,!1);if(r(s.text.slice(h,a))!=c)break;a=h}for(;ot?e.left-t:Math.max(0,t-e.right)}function fse(t,e){return e.top>t?e.top-t:Math.max(0,t-e.bottom)}function ww(t,e){return t.tope.top+1}function V9(t,e){return et.bottom?{top:t.top,left:t.left,right:t.right,bottom:e}:t}function kS(t,e,n){let r,s,i,a,o=!1,c,h,f,m;for(let y=t.firstChild;y;y=y.nextSibling){let w=yh(y);for(let S=0;SC||a==C&&i>N)&&(r=y,s=k,i=N,a=C,o=N?e0:Sk.bottom&&(!f||f.bottomk.top)&&(h=y,m=k):f&&ww(f,k)?f=U9(f,k.bottom):m&&ww(m,k)&&(m=V9(m,k.top))}}if(f&&f.bottom>=n?(r=c,s=f):m&&m.top<=n&&(r=h,s=m),!r)return{node:t,offset:0};let g=Math.max(s.left,Math.min(s.right,e));if(r.nodeType==3)return W9(r,g,n);if(o&&r.contentEditable!="false")return kS(r,g,n);let x=Array.prototype.indexOf.call(t.childNodes,r)+(e>=(s.left+s.right)/2?1:0);return{node:t,offset:x}}function W9(t,e,n){let r=t.nodeValue.length,s=-1,i=1e9,a=0;for(let o=0;on?f.top-n:n-f.bottom)-1;if(f.left-1<=e&&f.right+1>=e&&m=(f.left+f.right)/2,x=g;if(Je.chrome||Je.gecko){let y=Au(t,o).getBoundingClientRect();Math.abs(y.left-f.right)<.1&&(x=!g)}if(m<=0)return{node:t,offset:o+(x?1:0)};s=o+(x?1:0),i=m}}}return{node:t,offset:s>-1?s:a>0?t.nodeValue.length:0}}function VI(t,e,n,r=-1){var s,i;let a=t.contentDOM.getBoundingClientRect(),o=a.top+t.viewState.paddingTop,c,{docHeight:h}=t.viewState,{x:f,y:m}=e,g=m-o;if(g<0)return 0;if(g>h)return t.state.doc.length;for(let T=t.viewState.heightOracle.textHeight/2,_=!1;c=t.elementAtHeight(g),c.type!=Is.Text;)for(;g=r>0?c.bottom+T:c.top-T,!(g>=0&&g<=h);){if(_)return n?null:0;_=!0,r=-r}m=o+g;let x=c.from;if(xt.viewport.to)return t.viewport.to==t.state.doc.length?t.state.doc.length:n?null:G9(t,a,c,f,m);let y=t.dom.ownerDocument,w=t.root.elementFromPoint?t.root:y,S=w.elementFromPoint(f,m);S&&!t.contentDOM.contains(S)&&(S=null),S||(f=Math.max(a.left+1,Math.min(a.right-1,f)),S=w.elementFromPoint(f,m),S&&!t.contentDOM.contains(S)&&(S=null));let k,N=-1;if(S&&((s=t.docView.nearest(S))===null||s===void 0?void 0:s.isEditable)!=!1){if(y.caretPositionFromPoint){let T=y.caretPositionFromPoint(f,m);T&&({offsetNode:k,offset:N}=T)}else if(y.caretRangeFromPoint){let T=y.caretRangeFromPoint(f,m);T&&({startContainer:k,startOffset:N}=T)}k&&(!t.contentDOM.contains(k)||Je.safari&&mse(k,N,f)||Je.chrome&&pse(k,N,f))&&(k=void 0),k&&(N=Math.min(hl(k),N))}if(!k||!t.docView.dom.contains(k)){let T=qr.find(t.docView,x);if(!T)return g>c.top+c.height/2?c.to:c.from;({node:k,offset:N}=kS(T.dom,f,m))}let C=t.docView.nearest(k);if(!C)return null;if(C.isWidget&&((i=C.dom)===null||i===void 0?void 0:i.nodeType)==1){let T=C.dom.getBoundingClientRect();return e.yt.defaultLineHeight*1.5){let o=t.viewState.heightOracle.textHeight,c=Math.floor((s-n.top-(t.defaultLineHeight-o)*.5)/o);i+=c*t.viewState.heightOracle.lineLength}let a=t.state.sliceDoc(n.from,n.to);return n.from+oS(a,i,t.state.tabSize)}function UI(t,e,n){let r,s=t;if(t.nodeType!=3||e!=(r=t.nodeValue.length))return!1;for(;;){let i=s.nextSibling;if(i){if(i.nodeName=="BR")break;return!1}else{let a=s.parentNode;if(!a||a.nodeName=="DIV")break;s=a}}return Au(t,r-1,r).getBoundingClientRect().right>n}function mse(t,e,n){return UI(t,e,n)}function pse(t,e,n){if(e!=0)return UI(t,e,n);for(let s=t;;){let i=s.parentNode;if(!i||i.nodeType!=1||i.firstChild!=s)return!1;if(i.classList.contains("cm-line"))break;s=i}let r=t.nodeType==1?t.getBoundingClientRect():Au(t,0,Math.max(t.nodeValue.length,1)).getBoundingClientRect();return n-r.left>5}function jS(t,e,n){let r=t.lineBlockAt(e);if(Array.isArray(r.type)){let s;for(let i of r.type){if(i.from>e)break;if(!(i.toe)return i;(!s||i.type==Is.Text&&(s.type!=i.type||(n<0?i.frome)))&&(s=i)}}return s||r}return r}function gse(t,e,n,r){let s=jS(t,e.head,e.assoc||-1),i=!r||s.type!=Is.Text||!(t.lineWrapping||s.widgetLineBreaks)?null:t.coordsAtPos(e.assoc<0&&e.head>s.from?e.head-1:e.head);if(i){let a=t.dom.getBoundingClientRect(),o=t.textDirectionAt(s.from),c=t.posAtCoords({x:n==(o==sr.LTR)?a.right-1:a.left+1,y:(i.top+i.bottom)/2});if(c!=null)return Ae.cursor(c,n?-1:1)}return Ae.cursor(n?s.to:s.from,n?-1:1)}function X9(t,e,n,r){let s=t.state.doc.lineAt(e.head),i=t.bidiSpans(s),a=t.textDirectionAt(s.from);for(let o=e,c=null;;){let h=tse(s,i,a,o,n),f=EI;if(!h){if(s.number==(n?t.state.doc.lines:1))return o;f=` -`,s=t.state.doc.line(s.number+(n?1:-1)),i=t.bidiSpans(s),h=t.visualLineSide(s,!n)}if(c){if(!c(f))return o}else{if(!r)return h;c=r(f)}o=h}}function xse(t,e,n){let r=t.state.charCategorizer(e),s=r(n);return i=>{let a=r(i);return s==ar.Space&&(s=a),s==a}}function vse(t,e,n,r){let s=e.head,i=n?1:-1;if(s==(n?t.state.doc.length:0))return Ae.cursor(s,e.assoc);let a=e.goalColumn,o,c=t.contentDOM.getBoundingClientRect(),h=t.coordsAtPos(s,e.assoc||-1),f=t.documentTop;if(h)a==null&&(a=h.left-c.left),o=i<0?h.top:h.bottom;else{let x=t.viewState.lineBlockAt(s);a==null&&(a=Math.min(c.right-c.left,t.defaultCharacterWidth*(s-x.from))),o=(i<0?x.top:x.bottom)+f}let m=c.left+a,g=r??t.viewState.heightOracle.textHeight>>1;for(let x=0;;x+=10){let y=o+(g+x)*i,w=VI(t,{x:m,y},!1,i);if(yc.bottom||(i<0?ws)){let S=t.docView.coordsForChar(w),k=!S||y{if(e>i&&es(t)),n.from,e.head>n.from?-1:1);return r==n.from?n:Ae.cursor(r,ri)&&!wse(a,n)&&this.lineBreak(),s=a}return this.findPointBefore(r,n),this}readTextNode(e){let n=e.nodeValue;for(let r of this.points)r.node==e&&(r.pos=this.text.length+Math.min(r.offset,n.length));for(let r=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let i=-1,a=1,o;if(this.lineSeparator?(i=n.indexOf(this.lineSeparator,r),a=this.lineSeparator.length):(o=s.exec(n))&&(i=o.index,a=o[0].length),this.append(n.slice(r,i<0?n.length:i)),i<0)break;if(this.lineBreak(),a>1)for(let c of this.points)c.node==e&&c.pos>this.text.length&&(c.pos-=a-1);r=i+a}}readNode(e){if(e.cmIgnore)return;let n=Qn.get(e),r=n&&n.overrideDOMText;if(r!=null){this.findPointInside(e,r.length);for(let s=r.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,n){for(let r of this.points)r.node==e&&e.childNodes[r.offset]==n&&(r.pos=this.text.length)}findPointInside(e,n){for(let r of this.points)(e.nodeType==3?r.node==e:e.contains(r.node))&&(r.pos=this.text.length+(bse(e,r.node,r.offset)?n:0))}}function bse(t,e,n){for(;;){if(!e||n-1;let{impreciseHead:i,impreciseAnchor:a}=e.docView;if(e.state.readOnly&&n>-1)this.newSel=null;else if(n>-1&&(this.bounds=e.docView.domBoundsAround(n,r,0))){let o=i||a?[]:jse(e),c=new yse(o,e.state);c.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=c.text,this.newSel=Ose(o,this.bounds.from)}else{let o=e.observer.selectionRange,c=i&&i.node==o.focusNode&&i.offset==o.focusOffset||!pS(e.contentDOM,o.focusNode)?e.state.selection.main.head:e.docView.posFromDOM(o.focusNode,o.focusOffset),h=a&&a.node==o.anchorNode&&a.offset==o.anchorOffset||!pS(e.contentDOM,o.anchorNode)?e.state.selection.main.anchor:e.docView.posFromDOM(o.anchorNode,o.anchorOffset),f=e.viewport;if((Je.ios||Je.chrome)&&e.state.selection.main.empty&&c!=h&&(f.from>0||f.to-1&&e.state.selection.ranges.length>1?this.newSel=e.state.selection.replaceRange(Ae.range(h,c)):this.newSel=Ae.single(h,c)}}}function GI(t,e){let n,{newSel:r}=e,s=t.state.selection.main,i=t.inputState.lastKeyTime>Date.now()-100?t.inputState.lastKeyCode:-1;if(e.bounds){let{from:a,to:o}=e.bounds,c=s.from,h=null;(i===8||Je.android&&e.text.length=s.from&&n.to<=s.to&&(n.from!=s.from||n.to!=s.to)&&s.to-s.from-(n.to-n.from)<=4?n={from:s.from,to:s.to,insert:t.state.doc.slice(s.from,n.from).append(n.insert).append(t.state.doc.slice(n.to,s.to))}:t.state.doc.lineAt(s.from).toDate.now()-50?n={from:s.from,to:s.to,insert:t.state.toText(t.inputState.insertingText)}:Je.chrome&&n&&n.from==n.to&&n.from==s.head&&n.insert.toString()==` - `&&t.lineWrapping&&(r&&(r=Ae.single(r.main.anchor-1,r.main.head-1)),n={from:s.from,to:s.to,insert:pn.of([" "])}),n)return L6(t,n,r,i);if(r&&!r.main.eq(s)){let a=!1,o="select";return t.inputState.lastSelectionTime>Date.now()-50&&(t.inputState.lastSelectionOrigin=="select"&&(a=!0),o=t.inputState.lastSelectionOrigin,o=="select.pointer"&&(r=WI(t.state.facet(Y0).map(c=>c(t)),r))),t.dispatch({selection:r,scrollIntoView:a,userEvent:o}),!0}else return!1}function L6(t,e,n,r=-1){if(Je.ios&&t.inputState.flushIOSKey(e))return!0;let s=t.state.selection.main;if(Je.android&&(e.to==s.to&&(e.from==s.from||e.from==s.from-1&&t.state.sliceDoc(e.from,s.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&rh(t.contentDOM,"Enter",13)||(e.from==s.from-1&&e.to==s.to&&e.insert.length==0||r==8&&e.insert.lengths.head)&&rh(t.contentDOM,"Backspace",8)||e.from==s.from&&e.to==s.to+1&&e.insert.length==0&&rh(t.contentDOM,"Delete",46)))return!0;let i=e.insert.toString();t.inputState.composing>=0&&t.inputState.composing++;let a,o=()=>a||(a=kse(t,e,n));return t.state.facet(DI).some(c=>c(t,e.from,e.to,i,o))||t.dispatch(o()),!0}function kse(t,e,n){let r,s=t.state,i=s.selection.main,a=-1;if(e.from==e.to&&e.fromi.to){let c=e.fromm(t)),h,c);e.from==f&&(a=f)}if(a>-1)r={changes:e,selection:Ae.cursor(e.from+e.insert.length,-1)};else if(e.from>=i.from&&e.to<=i.to&&e.to-e.from>=(i.to-i.from)/3&&(!n||n.main.empty&&n.main.from==e.from+e.insert.length)&&t.inputState.composing<0){let c=i.frome.to?s.sliceDoc(e.to,i.to):"";r=s.replaceSelection(t.state.toText(c+e.insert.sliceString(0,void 0,t.state.lineBreak)+h))}else{let c=s.changes(e),h=n&&n.main.to<=c.newLength?n.main:void 0;if(s.selection.ranges.length>1&&(t.inputState.composing>=0||t.inputState.compositionPendingChange)&&e.to<=i.to+10&&e.to>=i.to-10){let f=t.state.sliceDoc(e.from,e.to),m,g=n&&HI(t,n.main.head);if(g){let y=e.insert.length-(e.to-e.from);m={from:g.from,to:g.to-y}}else m=t.state.doc.lineAt(i.head);let x=i.to-e.to;r=s.changeByRange(y=>{if(y.from==i.from&&y.to==i.to)return{changes:c,range:h||y.map(c)};let w=y.to-x,S=w-f.length;if(t.state.sliceDoc(S,w)!=f||w>=m.from&&S<=m.to)return{range:y};let k=s.changes({from:S,to:w,insert:e.insert}),N=y.to-i.to;return{changes:k,range:h?Ae.range(Math.max(0,h.anchor+N),Math.max(0,h.head+N)):y.map(k)}})}else r={changes:c,selection:h&&s.selection.replaceRange(h)}}let o="input.type";return(t.composing||t.inputState.compositionPendingChange&&t.inputState.compositionEndedAt>Date.now()-50)&&(t.inputState.compositionPendingChange=!1,o+=".compose",t.inputState.compositionFirstChange&&(o+=".start",t.inputState.compositionFirstChange=!1)),s.update(r,{userEvent:o,scrollIntoView:!0})}function XI(t,e,n,r){let s=Math.min(t.length,e.length),i=0;for(;i0&&o>0&&t.charCodeAt(a-1)==e.charCodeAt(o-1);)a--,o--;if(r=="end"){let c=Math.max(0,i-Math.min(a,o));n-=a+c-i}if(a=a?i-n:0;i-=c,o=i+(o-a),a=i}else if(o=o?i-n:0;i-=c,a=i+(a-o),o=i}return{from:i,toA:a,toB:o}}function jse(t){let e=[];if(t.root.activeElement!=t.contentDOM)return e;let{anchorNode:n,anchorOffset:r,focusNode:s,focusOffset:i}=t.observer.selectionRange;return n&&(e.push(new Y9(n,r)),(s!=n||i!=r)&&e.push(new Y9(s,i))),e}function Ose(t,e){if(t.length==0)return null;let n=t[0].pos,r=t.length==2?t[1].pos:n;return n>-1&&r>-1?Ae.single(n+e,r+e):null}class Nse{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,Je.safari&&e.contentDOM.addEventListener("input",()=>null),Je.gecko&&$se(e.contentDOM.ownerDocument)}handleEvent(e){!Dse(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,n){let r=this.handlers[e];if(r){for(let s of r.observers)s(this.view,n);for(let s of r.handlers){if(n.defaultPrevented)break;if(s(this.view,n)){n.preventDefault();break}}}}ensureHandlers(e){let n=Cse(e),r=this.handlers,s=this.view.contentDOM;for(let i in n)if(i!="scroll"){let a=!n[i].handlers.length,o=r[i];o&&a!=!o.handlers.length&&(s.removeEventListener(i,this.handleEvent),o=null),o||s.addEventListener(i,this.handleEvent,{passive:a})}for(let i in r)i!="scroll"&&!n[i]&&s.removeEventListener(i,this.handleEvent);this.handlers=n}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&KI.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),Je.android&&Je.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;let n;return Je.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&((n=YI.find(r=>r.keyCode==e.keyCode))&&!e.ctrlKey||Tse.indexOf(e.key)>-1&&e.ctrlKey&&!e.shiftKey)?(this.pendingIOSKey=n||e,setTimeout(()=>this.flushIOSKey(),250),!0):(e.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(e){let n=this.pendingIOSKey;return!n||n.key=="Enter"&&e&&e.from0?!0:Je.safari&&!Je.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}function K9(t,e){return(n,r)=>{try{return e.call(t,r,n)}catch(s){ni(n.state,s)}}}function Cse(t){let e=Object.create(null);function n(r){return e[r]||(e[r]={observers:[],handlers:[]})}for(let r of t){let s=r.spec,i=s&&s.plugin.domEventHandlers,a=s&&s.plugin.domEventObservers;if(i)for(let o in i){let c=i[o];c&&n(o).handlers.push(K9(r.value,c))}if(a)for(let o in a){let c=a[o];c&&n(o).observers.push(K9(r.value,c))}}for(let r in Ma)n(r).handlers.push(Ma[r]);for(let r in ca)n(r).observers.push(ca[r]);return e}const YI=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],Tse="dthko",KI=[16,17,18,20,91,92,224,225],nx=6;function rx(t){return Math.max(0,t)*.7+8}function Ese(t,e){return Math.max(Math.abs(t.clientX-e.clientX),Math.abs(t.clientY-e.clientY))}class _se{constructor(e,n,r,s){this.view=e,this.startEvent=n,this.style=r,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=n,this.scrollParents=Ire(e.contentDOM),this.atoms=e.state.facet(Y0).map(a=>a(e));let i=e.contentDOM.ownerDocument;i.addEventListener("mousemove",this.move=this.move.bind(this)),i.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=n.shiftKey,this.multiple=e.state.facet(dn.allowMultipleSelections)&&Mse(e,n),this.dragging=Rse(e,n)&&eB(n)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Ese(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let n=0,r=0,s=0,i=0,a=this.view.win.innerWidth,o=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:a}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:i,bottom:o}=this.scrollParents.y.getBoundingClientRect());let c=P6(this.view);e.clientX-c.left<=s+nx?n=-rx(s-e.clientX):e.clientX+c.right>=a-nx&&(n=rx(e.clientX-a)),e.clientY-c.top<=i+nx?r=-rx(i-e.clientY):e.clientY+c.bottom>=o-nx&&(r=rx(e.clientY-o)),this.setScrollSpeed(n,r)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,n){this.scrollSpeed={x:e,y:n},e||n?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:n}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),n&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=n,n=0),(e||n)&&this.view.win.scrollBy(e,n),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:n}=this,r=WI(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!r.eq(n.state.selection,this.dragging===!1))&&this.view.dispatch({selection:r,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){e.transactions.some(n=>n.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}}function Mse(t,e){let n=t.state.facet(_I);return n.length?n[0](e):Je.mac?e.metaKey:e.ctrlKey}function Ase(t,e){let n=t.state.facet(MI);return n.length?n[0](e):Je.mac?!e.altKey:!e.ctrlKey}function Rse(t,e){let{main:n}=t.state.selection;if(n.empty)return!1;let r=Xm(t.root);if(!r||r.rangeCount==0)return!0;let s=r.getRangeAt(0).getClientRects();for(let i=0;i=e.clientX&&a.top<=e.clientY&&a.bottom>=e.clientY)return!0}return!1}function Dse(t,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let n=e.target,r;n!=t.contentDOM;n=n.parentNode)if(!n||n.nodeType==11||(r=Qn.get(n))&&r.ignoreEvent(e))return!1;return!0}const Ma=Object.create(null),ca=Object.create(null),ZI=Je.ie&&Je.ie_version<15||Je.ios&&Je.webkit_version<604;function zse(t){let e=t.dom.parentNode;if(!e)return;let n=e.appendChild(document.createElement("textarea"));n.style.cssText="position: fixed; left: -10000px; top: 10px",n.focus(),setTimeout(()=>{t.focus(),n.remove(),JI(t,n.value)},50)}function Kv(t,e,n){for(let r of t.facet(e))n=r(n,t);return n}function JI(t,e){e=Kv(t.state,R6,e);let{state:n}=t,r,s=1,i=n.toText(e),a=i.lines==n.selection.ranges.length;if(OS!=null&&n.selection.ranges.every(c=>c.empty)&&OS==i.toString()){let c=-1;r=n.changeByRange(h=>{let f=n.doc.lineAt(h.from);if(f.from==c)return{range:h};c=f.from;let m=n.toText((a?i.line(s++).text:e)+n.lineBreak);return{changes:{from:f.from,insert:m},range:Ae.cursor(h.from+m.length)}})}else a?r=n.changeByRange(c=>{let h=i.line(s++);return{changes:{from:c.from,to:c.to,insert:h.text},range:Ae.cursor(c.from+h.length)}}):r=n.replaceSelection(i);t.dispatch(r,{userEvent:"input.paste",scrollIntoView:!0})}ca.scroll=t=>{t.inputState.lastScrollTop=t.scrollDOM.scrollTop,t.inputState.lastScrollLeft=t.scrollDOM.scrollLeft};Ma.keydown=(t,e)=>(t.inputState.setSelectionOrigin("select"),e.keyCode==27&&t.inputState.tabFocusMode!=0&&(t.inputState.tabFocusMode=Date.now()+2e3),!1);ca.touchstart=(t,e)=>{t.inputState.lastTouchTime=Date.now(),t.inputState.setSelectionOrigin("select.pointer")};ca.touchmove=t=>{t.inputState.setSelectionOrigin("select.pointer")};Ma.mousedown=(t,e)=>{if(t.observer.flush(),t.inputState.lastTouchTime>Date.now()-2e3)return!1;let n=null;for(let r of t.state.facet(AI))if(n=r(t,e),n)break;if(!n&&e.button==0&&(n=Ise(t,e)),n){let r=!t.hasFocus;t.inputState.startMouseSelection(new _se(t,e,n,r)),r&&t.observer.ignore(()=>{fI(t.contentDOM);let i=t.root.activeElement;i&&!i.contains(t.contentDOM)&&i.blur()});let s=t.inputState.mouseSelection;if(s)return s.start(e),s.dragging===!1}else t.inputState.setSelectionOrigin("select.pointer");return!1};function Z9(t,e,n,r){if(r==1)return Ae.cursor(e,n);if(r==2)return dse(t.state,e,n);{let s=qr.find(t.docView,e),i=t.state.doc.lineAt(s?s.posAtEnd:e),a=s?s.posAtStart:i.from,o=s?s.posAtEnd:i.to;return oe>=n.top&&e<=n.bottom&&t>=n.left&&t<=n.right;function Pse(t,e,n,r){let s=qr.find(t.docView,e);if(!s)return 1;let i=e-s.posAtStart;if(i==0)return 1;if(i==s.length)return-1;let a=s.coordsAt(i,-1);if(a&&J9(n,r,a))return-1;let o=s.coordsAt(i,1);return o&&J9(n,r,o)?1:a&&a.bottom>=r?-1:1}function eT(t,e){let n=t.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:n,bias:Pse(t,n,e.clientX,e.clientY)}}const Lse=Je.ie&&Je.ie_version<=11;let tT=null,nT=0,rT=0;function eB(t){if(!Lse)return t.detail;let e=tT,n=rT;return tT=t,rT=Date.now(),nT=!e||n>Date.now()-400&&Math.abs(e.clientX-t.clientX)<2&&Math.abs(e.clientY-t.clientY)<2?(nT+1)%3:1}function Ise(t,e){let n=eT(t,e),r=eB(e),s=t.state.selection;return{update(i){i.docChanged&&(n.pos=i.changes.mapPos(n.pos),s=s.map(i.changes))},get(i,a,o){let c=eT(t,i),h,f=Z9(t,c.pos,c.bias,r);if(n.pos!=c.pos&&!a){let m=Z9(t,n.pos,n.bias,r),g=Math.min(m.from,f.from),x=Math.max(m.to,f.to);f=g1&&(h=Bse(s,c.pos))?h:o?s.addRange(f):Ae.create([f])}}}function Bse(t,e){for(let n=0;n=e)return Ae.create(t.ranges.slice(0,n).concat(t.ranges.slice(n+1)),t.mainIndex==n?0:t.mainIndex-(t.mainIndex>n?1:0))}return null}Ma.dragstart=(t,e)=>{let{selection:{main:n}}=t.state;if(e.target.draggable){let s=t.docView.nearest(e.target);if(s&&s.isWidget){let i=s.posAtStart,a=i+s.length;(i>=n.to||a<=n.from)&&(n=Ae.range(i,a))}}let{inputState:r}=t;return r.mouseSelection&&(r.mouseSelection.dragging=!0),r.draggedContent=n,e.dataTransfer&&(e.dataTransfer.setData("Text",Kv(t.state,D6,t.state.sliceDoc(n.from,n.to))),e.dataTransfer.effectAllowed="copyMove"),!1};Ma.dragend=t=>(t.inputState.draggedContent=null,!1);function sT(t,e,n,r){if(n=Kv(t.state,R6,n),!n)return;let s=t.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:i}=t.inputState,a=r&&i&&Ase(t,e)?{from:i.from,to:i.to}:null,o={from:s,insert:n},c=t.state.changes(a?[a,o]:o);t.focus(),t.dispatch({changes:c,selection:{anchor:c.mapPos(s,-1),head:c.mapPos(s,1)},userEvent:a?"move.drop":"input.drop"}),t.inputState.draggedContent=null}Ma.drop=(t,e)=>{if(!e.dataTransfer)return!1;if(t.state.readOnly)return!0;let n=e.dataTransfer.files;if(n&&n.length){let r=Array(n.length),s=0,i=()=>{++s==n.length&&sT(t,e,r.filter(a=>a!=null).join(t.state.lineBreak),!1)};for(let a=0;a{/[\x00-\x08\x0e-\x1f]{2}/.test(o.result)||(r[a]=o.result),i()},o.readAsText(n[a])}return!0}else{let r=e.dataTransfer.getData("Text");if(r)return sT(t,e,r,!0),!0}return!1};Ma.paste=(t,e)=>{if(t.state.readOnly)return!0;t.observer.flush();let n=ZI?null:e.clipboardData;return n?(JI(t,n.getData("text/plain")||n.getData("text/uri-list")),!0):(zse(t),!1)};function qse(t,e){let n=t.dom.parentNode;if(!n)return;let r=n.appendChild(document.createElement("textarea"));r.style.cssText="position: fixed; left: -10000px; top: 10px",r.value=e,r.focus(),r.selectionEnd=e.length,r.selectionStart=0,setTimeout(()=>{r.remove(),t.focus()},50)}function Fse(t){let e=[],n=[],r=!1;for(let s of t.selection.ranges)s.empty||(e.push(t.sliceDoc(s.from,s.to)),n.push(s));if(!e.length){let s=-1;for(let{from:i}of t.selection.ranges){let a=t.doc.lineAt(i);a.number>s&&(e.push(a.text),n.push({from:a.from,to:Math.min(t.doc.length,a.to+1)})),s=a.number}r=!0}return{text:Kv(t,D6,e.join(t.lineBreak)),ranges:n,linewise:r}}let OS=null;Ma.copy=Ma.cut=(t,e)=>{let{text:n,ranges:r,linewise:s}=Fse(t.state);if(!n&&!s)return!1;OS=s?n:null,e.type=="cut"&&!t.state.readOnly&&t.dispatch({changes:r,scrollIntoView:!0,userEvent:"delete.cut"});let i=ZI?null:e.clipboardData;return i?(i.clearData(),i.setData("text/plain",n),!0):(qse(t,n),!1)};const tB=pl.define();function nB(t,e){let n=[];for(let r of t.facet(zI)){let s=r(t,e);s&&n.push(s)}return n.length?t.update({effects:n,annotations:tB.of(!0)}):null}function rB(t){setTimeout(()=>{let e=t.hasFocus;if(e!=t.inputState.notifiedFocused){let n=nB(t.state,e);n?t.dispatch(n):t.update([])}},10)}ca.focus=t=>{t.inputState.lastFocusTime=Date.now(),!t.scrollDOM.scrollTop&&(t.inputState.lastScrollTop||t.inputState.lastScrollLeft)&&(t.scrollDOM.scrollTop=t.inputState.lastScrollTop,t.scrollDOM.scrollLeft=t.inputState.lastScrollLeft),rB(t)};ca.blur=t=>{t.observer.clearSelectionRange(),rB(t)};ca.compositionstart=ca.compositionupdate=t=>{t.observer.editContext||(t.inputState.compositionFirstChange==null&&(t.inputState.compositionFirstChange=!0),t.inputState.composing<0&&(t.inputState.composing=0))};ca.compositionend=t=>{t.observer.editContext||(t.inputState.composing=-1,t.inputState.compositionEndedAt=Date.now(),t.inputState.compositionPendingKey=!0,t.inputState.compositionPendingChange=t.observer.pendingRecords().length>0,t.inputState.compositionFirstChange=null,Je.chrome&&Je.android?t.observer.flushSoon():t.inputState.compositionPendingChange?Promise.resolve().then(()=>t.observer.flush()):setTimeout(()=>{t.inputState.composing<0&&t.docView.hasComposition&&t.update([])},50))};ca.contextmenu=t=>{t.inputState.lastContextMenu=Date.now()};Ma.beforeinput=(t,e)=>{var n,r;if((e.inputType=="insertText"||e.inputType=="insertCompositionText")&&(t.inputState.insertingText=e.data,t.inputState.insertingTextAt=Date.now()),e.inputType=="insertReplacementText"&&t.observer.editContext){let i=(n=e.dataTransfer)===null||n===void 0?void 0:n.getData("text/plain"),a=e.getTargetRanges();if(i&&a.length){let o=a[0],c=t.posAtDOM(o.startContainer,o.startOffset),h=t.posAtDOM(o.endContainer,o.endOffset);return L6(t,{from:c,to:h,insert:t.state.toText(i)},null),!0}}let s;if(Je.chrome&&Je.android&&(s=YI.find(i=>i.inputType==e.inputType))&&(t.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let i=((r=window.visualViewport)===null||r===void 0?void 0:r.height)||0;setTimeout(()=>{var a;(((a=window.visualViewport)===null||a===void 0?void 0:a.height)||0)>i+10&&t.hasFocus&&(t.contentDOM.blur(),t.focus())},100)}return Je.ios&&e.inputType=="deleteContentForward"&&t.observer.flushSoon(),Je.safari&&e.inputType=="insertText"&&t.inputState.composing>=0&&setTimeout(()=>ca.compositionend(t,e),20),!1};const iT=new Set;function $se(t){iT.has(t)||(iT.add(t),t.addEventListener("copy",()=>{}),t.addEventListener("cut",()=>{}))}const aT=["pre-wrap","normal","pre-line","break-spaces"];let Sh=!1;function lT(){Sh=!1}class Qse{constructor(e){this.lineWrapping=e,this.doc=pn.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,n){let r=this.doc.lineAt(n).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(r+=Math.max(0,Math.ceil((n-e-r*this.lineLength*.5)/this.lineLength))),this.lineHeight*r}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return aT.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let n=!1;for(let r=0;r-1,c=Math.round(n)!=Math.round(this.lineHeight)||this.lineWrapping!=o;if(this.lineWrapping=o,this.lineHeight=n,this.charWidth=r,this.textHeight=s,this.lineLength=i,c){this.heightSamples={};for(let h=0;h0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>l1&&(Sh=!0),this.height=e)}replace(e,n,r){return Bs.of(r)}decomposeLeft(e,n){n.push(this)}decomposeRight(e,n){n.push(this)}applyChanges(e,n,r,s){let i=this,a=r.doc;for(let o=s.length-1;o>=0;o--){let{fromA:c,toA:h,fromB:f,toB:m}=s[o],g=i.lineAt(c,rr.ByPosNoHeight,r.setDoc(n),0,0),x=g.to>=h?g:i.lineAt(h,rr.ByPosNoHeight,r,0,0);for(m+=x.to-h,h=x.to;o>0&&g.from<=s[o-1].toA;)c=s[o-1].fromA,f=s[o-1].fromB,o--,ci*2){let o=e[n-1];o.break?e.splice(--n,1,o.left,null,o.right):e.splice(--n,1,o.left,o.right),r+=1+o.break,s-=o.size}else if(i>s*2){let o=e[r];o.break?e.splice(r,1,o.left,null,o.right):e.splice(r,1,o.left,o.right),r+=2+o.break,i-=o.size}else break;else if(s=i&&a(this.blockAt(0,r,s,i))}updateHeight(e,n=0,r=!1,s){return s&&s.from<=n&&s.more&&this.setHeight(s.heights[s.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}}class Ni extends sB{constructor(e,n){super(e,n,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0}blockAt(e,n,r,s){return new Ja(s,this.length,r,this.height,this.breaks)}replace(e,n,r){let s=r[0];return r.length==1&&(s instanceof Ni||s instanceof gs&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof gs?s=new Ni(s.length,this.height):s.height=this.height,this.outdated||(s.outdated=!1),s):Bs.of(r)}updateHeight(e,n=0,r=!1,s){return s&&s.from<=n&&s.more?this.setHeight(s.heights[s.index++]):(r||this.outdated)&&this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class gs extends Bs{constructor(e){super(e,0)}heightMetrics(e,n){let r=e.doc.lineAt(n).number,s=e.doc.lineAt(n+this.length).number,i=s-r+1,a,o=0;if(e.lineWrapping){let c=Math.min(this.height,e.lineHeight*i);a=c/i,this.length>i+1&&(o=(this.height-c)/(this.length-i-1))}else a=this.height/i;return{firstLine:r,lastLine:s,perLine:a,perChar:o}}blockAt(e,n,r,s){let{firstLine:i,lastLine:a,perLine:o,perChar:c}=this.heightMetrics(n,s);if(n.lineWrapping){let h=s+(e0){let i=r[r.length-1];i instanceof gs?r[r.length-1]=new gs(i.length+s):r.push(null,new gs(s-1))}if(e>0){let i=r[0];i instanceof gs?r[0]=new gs(e+i.length):r.unshift(new gs(e-1),null)}return Bs.of(r)}decomposeLeft(e,n){n.push(new gs(e-1),null)}decomposeRight(e,n){n.push(null,new gs(this.length-e-1))}updateHeight(e,n=0,r=!1,s){let i=n+this.length;if(s&&s.from<=n+this.length&&s.more){let a=[],o=Math.max(n,s.from),c=-1;for(s.from>n&&a.push(new gs(s.from-n-1).updateHeight(e,n));o<=i&&s.more;){let f=e.doc.lineAt(o).length;a.length&&a.push(null);let m=s.heights[s.index++];c==-1?c=m:Math.abs(m-c)>=l1&&(c=-2);let g=new Ni(f,m);g.outdated=!1,a.push(g),o+=f+1}o<=i&&a.push(null,new gs(i-o).updateHeight(e,o));let h=Bs.of(a);return(c<0||Math.abs(h.height-this.height)>=l1||Math.abs(c-this.heightMetrics(e,n).perLine)>=l1)&&(Sh=!0),B1(this,h)}else(r||this.outdated)&&(this.setHeight(e.heightForGap(n,n+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}}class Vse extends Bs{constructor(e,n,r){super(e.length+n+r.length,e.height+r.height,n|(e.outdated||r.outdated?2:0)),this.left=e,this.right=r,this.size=e.size+r.size}get break(){return this.flags&1}blockAt(e,n,r,s){let i=r+this.left.height;return eo))return h;let f=n==rr.ByPosNoHeight?rr.ByPosNoHeight:rr.ByPos;return c?h.join(this.right.lineAt(o,f,r,a,o)):this.left.lineAt(o,f,r,s,i).join(h)}forEachLine(e,n,r,s,i,a){let o=s+this.left.height,c=i+this.left.length+this.break;if(this.break)e=c&&this.right.forEachLine(e,n,r,o,c,a);else{let h=this.lineAt(c,rr.ByPos,r,s,i);e=e&&h.from<=n&&a(h),n>h.to&&this.right.forEachLine(h.to+1,n,r,o,c,a)}}replace(e,n,r){let s=this.left.length+this.break;if(nthis.left.length)return this.balanced(this.left,this.right.replace(e-s,n-s,r));let i=[];e>0&&this.decomposeLeft(e,i);let a=i.length;for(let o of r)i.push(o);if(e>0&&oT(i,a-1),n=r&&n.push(null)),e>r&&this.right.decomposeLeft(e-r,n)}decomposeRight(e,n){let r=this.left.length,s=r+this.break;if(e>=s)return this.right.decomposeRight(e-s,n);e2*n.size||n.size>2*e.size?Bs.of(this.break?[e,null,n]:[e,n]):(this.left=B1(this.left,e),this.right=B1(this.right,n),this.setHeight(e.height+n.height),this.outdated=e.outdated||n.outdated,this.size=e.size+n.size,this.length=e.length+this.break+n.length,this)}updateHeight(e,n=0,r=!1,s){let{left:i,right:a}=this,o=n+i.length+this.break,c=null;return s&&s.from<=n+i.length&&s.more?c=i=i.updateHeight(e,n,r,s):i.updateHeight(e,n,r),s&&s.from<=o+a.length&&s.more?c=a=a.updateHeight(e,o,r,s):a.updateHeight(e,o,r),c?this.balanced(i,a):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function oT(t,e){let n,r;t[e]==null&&(n=t[e-1])instanceof gs&&(r=t[e+1])instanceof gs&&t.splice(e-1,3,new gs(n.length+1+r.length))}const Use=5;class I6{constructor(e,n){this.pos=e,this.oracle=n,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,n){if(this.lineStart>-1){let r=Math.min(n,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof Ni?s.length+=r-this.pos:(r>this.pos||!this.isCovered)&&this.nodes.push(new Ni(r-this.pos,-1)),this.writtenTo=r,n>r&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=n}point(e,n,r){if(e=Use)&&this.addLineDeco(s,i,a)}else n>e&&this.span(e,n);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:n}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=n,this.writtenToe&&this.nodes.push(new Ni(this.pos-e,-1)),this.writtenTo=this.pos}blankContent(e,n){let r=new gs(n-e);return this.oracle.doc.lineAt(e).to==n&&(r.flags|=4),r}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof Ni)return e;let n=new Ni(0,-1);return this.nodes.push(n),n}addBlock(e){this.enterLine();let n=e.deco;n&&n.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,n&&n.endSide>0&&(this.covering=e)}addLineDeco(e,n,r){let s=this.ensureLine();s.length+=r,s.collapsed+=r,s.widgetHeight=Math.max(s.widgetHeight,e),s.breaks+=n,this.writtenTo=this.pos=this.pos+r}finish(e){let n=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(n instanceof Ni)&&!this.isCovered?this.nodes.push(new Ni(0,-1)):(this.writtenTof.clientHeight||f.scrollWidth>f.clientWidth)&&m.overflow!="visible"){let g=f.getBoundingClientRect();i=Math.max(i,g.left),a=Math.min(a,g.right),o=Math.max(o,g.top),c=Math.min(h==t.parentNode?s.innerHeight:c,g.bottom)}h=m.position=="absolute"||m.position=="fixed"?f.offsetParent:f.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:i-n.left,right:Math.max(i,a)-n.left,top:o-(n.top+e),bottom:Math.max(o,c)-(n.top+e)}}function Yse(t){let e=t.getBoundingClientRect(),n=t.ownerDocument.defaultView||window;return e.left0&&e.top0}function Kse(t,e){let n=t.getBoundingClientRect();return{left:0,right:n.right-n.left,top:e,bottom:n.bottom-(n.top+e)}}class kw{constructor(e,n,r,s){this.from=e,this.to=n,this.size=r,this.displaySize=s}static same(e,n){if(e.length!=n.length)return!1;for(let r=0;rtypeof r!="function"&&r.class=="cm-lineWrapping");this.heightOracle=new Qse(n),this.stateDeco=e.facet(Ym).filter(r=>typeof r!="function"),this.heightMap=Bs.empty().applyChanges(this.stateDeco,pn.empty,this.heightOracle.setDoc(e.doc),[new ia(0,0,0,e.doc.length)]);for(let r=0;r<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());r++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=xt.set(this.lineGaps.map(r=>r.draw(this,!1))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:n}=this.state.selection;for(let r=0;r<=1;r++){let s=r?n.head:n.anchor;if(!e.some(({from:i,to:a})=>s>=i&&s<=a)){let{from:i,to:a}=this.lineBlockAt(s);e.push(new sx(i,a))}}return this.viewports=e.sort((r,s)=>r.from-s.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?uT:new B6(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(gm(e,this.scaler))})}update(e,n=null){this.state=e.state;let r=this.stateDeco;this.stateDeco=this.state.facet(Ym).filter(f=>typeof f!="function");let s=e.changedRanges,i=ia.extendWithRanges(s,Wse(r,this.stateDeco,e?e.changes:Kr.empty(this.state.doc.length))),a=this.heightMap.height,o=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);lT(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),i),(this.heightMap.height!=a||Sh)&&(e.flags|=2),o?(this.scrollAnchorPos=e.changes.mapPos(o.from,-1),this.scrollAnchorHeight=o.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=a);let c=i.length?this.mapViewport(this.viewport,e.changes):this.viewport;(n&&(n.range.headc.to)||!this.viewportIsAppropriate(c))&&(c=this.getViewport(0,n));let h=c.from!=this.viewport.from||c.to!=this.viewport.to;this.viewport=c,e.flags|=this.updateForViewport(),(h||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),n&&(this.scrollTarget=n),!this.mustEnforceCursorAssoc&&e.selectionSet&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(LI)&&(this.mustEnforceCursorAssoc=!0)}measure(e){let n=e.contentDOM,r=window.getComputedStyle(n),s=this.heightOracle,i=r.whiteSpace;this.defaultTextDirection=r.direction=="rtl"?sr.RTL:sr.LTR;let a=this.heightOracle.mustRefreshForWrapping(i),o=n.getBoundingClientRect(),c=a||this.mustMeasureContent||this.contentDOMHeight!=o.height;this.contentDOMHeight=o.height,this.mustMeasureContent=!1;let h=0,f=0;if(o.width&&o.height){let{scaleX:T,scaleY:_}=hI(n,o);(T>.005&&Math.abs(this.scaleX-T)>.005||_>.005&&Math.abs(this.scaleY-_)>.005)&&(this.scaleX=T,this.scaleY=_,h|=16,a=c=!0)}let m=(parseInt(r.paddingTop)||0)*this.scaleY,g=(parseInt(r.paddingBottom)||0)*this.scaleY;(this.paddingTop!=m||this.paddingBottom!=g)&&(this.paddingTop=m,this.paddingBottom=g,h|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(s.lineWrapping&&(c=!0),this.editorWidth=e.scrollDOM.clientWidth,h|=16);let x=e.scrollDOM.scrollTop*this.scaleY;this.scrollTop!=x&&(this.scrollAnchorHeight=-1,this.scrollTop=x),this.scrolledToBottom=pI(e.scrollDOM);let y=(this.printing?Kse:Xse)(n,this.paddingTop),w=y.top-this.pixelViewport.top,S=y.bottom-this.pixelViewport.bottom;this.pixelViewport=y;let k=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(k!=this.inView&&(this.inView=k,k&&(c=!0)),!this.inView&&!this.scrollTarget&&!Yse(e.dom))return 0;let N=o.width;if((this.contentDOMWidth!=N||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=o.width,this.editorHeight=e.scrollDOM.clientHeight,h|=16),c){let T=e.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(T)&&(a=!0),a||s.lineWrapping&&Math.abs(N-this.contentDOMWidth)>s.charWidth){let{lineHeight:_,charWidth:E,textHeight:M}=e.docView.measureTextSize();a=_>0&&s.refresh(i,_,E,M,Math.max(5,N/E),T),a&&(e.docView.minWidth=0,h|=16)}w>0&&S>0?f=Math.max(w,S):w<0&&S<0&&(f=Math.min(w,S)),lT();for(let _ of this.viewports){let E=_.from==this.viewport.from?T:e.docView.measureVisibleLineHeights(_);this.heightMap=(a?Bs.empty().applyChanges(this.stateDeco,pn.empty,this.heightOracle,[new ia(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(s,0,a,new Hse(_.from,E))}Sh&&(h|=2)}let C=!this.viewportIsAppropriate(this.viewport,f)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return C&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(f,this.scrollTarget),h|=this.updateForViewport()),(h&2||C)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(a?[]:this.lineGaps,e)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,n){let r=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),s=this.heightMap,i=this.heightOracle,{visibleTop:a,visibleBottom:o}=this,c=new sx(s.lineAt(a-r*1e3,rr.ByHeight,i,0,0).from,s.lineAt(o+(1-r)*1e3,rr.ByHeight,i,0,0).to);if(n){let{head:h}=n.range;if(hc.to){let f=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),m=s.lineAt(h,rr.ByPos,i,0,0),g;n.y=="center"?g=(m.top+m.bottom)/2-f/2:n.y=="start"||n.y=="nearest"&&h=o+Math.max(10,Math.min(r,250)))&&s>a-2*1e3&&i>1,a=s<<1;if(this.defaultTextDirection!=sr.LTR&&!r)return[];let o=[],c=(f,m,g,x)=>{if(m-ff&&kk.from>=g.from&&k.to<=g.to&&Math.abs(k.from-f)k.fromN));if(!S){if(mC.from<=m&&C.to>=m)){let C=n.moveToLineBoundary(Ae.cursor(m),!1,!0).head;C>f&&(m=C)}let k=this.gapSize(g,f,m,x),N=r||k<2e6?k:2e6;S=new kw(f,m,k,N)}o.push(S)},h=f=>{if(f.length2e6)for(let E of e)E.from>=f.from&&E.fromf.from&&c(f.from,x,f,m),yn.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let n=this.stateDeco;this.lineGaps.length&&(n=n.concat(this.lineGapDeco));let r=[];On.spans(n,this.viewport.from,this.viewport.to,{span(i,a){r.push({from:i,to:a})},point(){}},20);let s=0;if(r.length!=this.visibleRanges.length)s=12;else for(let i=0;i=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(n=>n.from<=e&&n.to>=e)||gm(this.heightMap.lineAt(e,rr.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(n=>n.top<=e&&n.bottom>=e)||gm(this.heightMap.lineAt(this.scaler.fromDOM(e),rr.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(e){let n=this.lineBlockAtHeight(e+8);return n.from>=this.viewport.from||this.viewportLines[0].top-e>200?n:this.viewportLines[0]}elementAtHeight(e){return gm(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}let sx=class{constructor(e,n){this.from=e,this.to=n}};function Jse(t,e,n){let r=[],s=t,i=0;return On.spans(n,t,e,{span(){},point(a,o){a>s&&(r.push({from:s,to:a}),i+=a-s),s=o}},20),s=1)return e[e.length-1].to;let r=Math.floor(t*n);for(let s=0;;s++){let{from:i,to:a}=e[s],o=a-i;if(r<=o)return i+r;r-=o}}function ax(t,e){let n=0;for(let{from:r,to:s}of t.ranges){if(e<=s){n+=e-r;break}n+=s-r}return n/t.total}function eie(t,e){for(let n of t)if(e(n))return n}const uT={toDOM(t){return t},fromDOM(t){return t},scale:1,eq(t){return t==this}};class B6{constructor(e,n,r){let s=0,i=0,a=0;this.viewports=r.map(({from:o,to:c})=>{let h=n.lineAt(o,rr.ByPos,e,0,0).top,f=n.lineAt(c,rr.ByPos,e,0,0).bottom;return s+=f-h,{from:o,to:c,top:h,bottom:f,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(n.height-s);for(let o of this.viewports)o.domTop=a+(o.top-i)*this.scale,a=o.domBottom=o.domTop+(o.bottom-o.top),i=o.bottom}toDOM(e){for(let n=0,r=0,s=0;;n++){let i=nn.from==e.viewports[r].from&&n.to==e.viewports[r].to):!1}}function gm(t,e){if(e.scale==1)return t;let n=e.toDOM(t.top),r=e.toDOM(t.bottom);return new Ja(t.from,t.length,n,r-n,Array.isArray(t._content)?t._content.map(s=>gm(s,e)):t._content)}const lx=nt.define({combine:t=>t.join(" ")}),NS=nt.define({combine:t=>t.indexOf(!0)>-1}),CS=yc.newName(),iB=yc.newName(),aB=yc.newName(),lB={"&light":"."+iB,"&dark":"."+aB};function TS(t,e,n){return new yc(e,{finish(r){return/&/.test(r)?r.replace(/&\w*/,s=>{if(s=="&")return t;if(!n||!n[s])throw new RangeError(`Unsupported selector: ${s}`);return n[s]}):t+" "+r}})}const tie=TS("."+CS,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},lB),nie={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},jw=Je.ie&&Je.ie_version<=11;class rie{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new Bre,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(n=>{for(let r of n)this.queue.push(r);(Je.ie&&Je.ie_version<=11||Je.ios&&e.composing)&&n.some(r=>r.type=="childList"&&r.removedNodes.length||r.type=="characterData"&&r.oldValue.length>r.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&Je.android&&e.constructor.EDIT_CONTEXT!==!1&&!(Je.chrome&&Je.chrome_version<126)&&(this.editContext=new iie(e),e.state.facet(no)&&(e.contentDOM.editContext=this.editContext.editContext)),jw&&(this.onCharData=n=>{this.queue.push({target:n.target,type:"characterData",oldValue:n.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var n;((n=this.view.docView)===null||n===void 0?void 0:n.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),n.length>0&&n[n.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(n=>{n.length>0&&n[n.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type=="change"||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((n,r)=>n!=e[r]))){this.gapIntersection.disconnect();for(let n of e)this.gapIntersection.observe(n);this.gaps=e}}onSelectionChange(e){let n=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:r}=this,s=this.selectionRange;if(r.state.facet(no)?r.root.activeElement!=this.dom:!i1(this.dom,s))return;let i=s.anchorNode&&r.docView.nearest(s.anchorNode);if(i&&i.ignoreEvent(e)){n||(this.selectionChanged=!1);return}(Je.ie&&Je.ie_version<=11||Je.android&&Je.chrome)&&!r.state.selection.main.empty&&s.focusNode&&Em(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,n=Xm(e.root);if(!n)return!1;let r=Je.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&sie(this.view,n)||n;if(!r||this.selectionRange.eq(r))return!1;let s=i1(this.dom,r);return s&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime{let i=this.delayedAndroidKey;i&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=i.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&i.force&&rh(this.dom,i.key,i.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:n,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let n=-1,r=-1,s=!1;for(let i of e){let a=this.readMutation(i);a&&(a.typeOver&&(s=!0),n==-1?{from:n,to:r}=a:(n=Math.min(a.from,n),r=Math.max(a.to,r)))}return{from:n,to:r,typeOver:s}}readChange(){let{from:e,to:n,typeOver:r}=this.processRecords(),s=this.selectionChanged&&i1(this.dom,this.selectionRange);if(e<0&&!s)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let i=new Sse(this.view,e,n,r);return this.view.docView.domChanged={newSel:i.newSel?i.newSel.main:null},i}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let n=this.readChange();if(!n)return this.view.requestMeasure(),!1;let r=this.view.state,s=GI(this.view,n);return this.view.state==r&&(n.domChanged||n.newSel&&!n.newSel.main.eq(this.view.state.selection.main))&&this.view.update([]),s}readMutation(e){let n=this.view.docView.nearest(e.target);if(!n||n.ignoreMutation(e))return null;if(n.markDirty(e.type=="attributes"),e.type=="attributes"&&(n.flags|=4),e.type=="childList"){let r=dT(n,e.previousSibling||e.target.previousSibling,-1),s=dT(n,e.nextSibling||e.target.nextSibling,1);return{from:r?n.posAfter(r):n.posAtStart,to:s?n.posBefore(s):n.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:n.posAtStart,to:n.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(no)!=e.state.facet(no)&&(e.view.contentDOM.editContext=e.state.facet(no)?this.editContext.editContext:null))}destroy(){var e,n,r;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(n=this.gapIntersection)===null||n===void 0||n.disconnect(),(r=this.resizeScroll)===null||r===void 0||r.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}}function dT(t,e,n){for(;e;){let r=Qn.get(e);if(r&&r.parent==t)return r;let s=e.parentNode;e=s!=t.dom?s:n>0?e.nextSibling:e.previousSibling}return null}function hT(t,e){let n=e.startContainer,r=e.startOffset,s=e.endContainer,i=e.endOffset,a=t.docView.domAtPos(t.state.selection.main.anchor);return Em(a.node,a.offset,s,i)&&([n,r,s,i]=[s,i,n,r]),{anchorNode:n,anchorOffset:r,focusNode:s,focusOffset:i}}function sie(t,e){if(e.getComposedRanges){let s=e.getComposedRanges(t.root)[0];if(s)return hT(t,s)}let n=null;function r(s){s.preventDefault(),s.stopImmediatePropagation(),n=s.getTargetRanges()[0]}return t.contentDOM.addEventListener("beforeinput",r,!0),t.dom.ownerDocument.execCommand("indent"),t.contentDOM.removeEventListener("beforeinput",r,!0),n?hT(t,n):null}class iie{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let n=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=r=>{let s=e.state.selection.main,{anchor:i,head:a}=s,o=this.toEditorPos(r.updateRangeStart),c=this.toEditorPos(r.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:r.updateRangeStart,editorBase:o,drifted:!1});let h=c-o>r.text.length;o==this.from&&ithis.to&&(c=i);let f=XI(e.state.sliceDoc(o,c),r.text,(h?s.from:s.to)-o,h?"end":null);if(!f){let g=Ae.single(this.toEditorPos(r.selectionStart),this.toEditorPos(r.selectionEnd));g.main.eq(s)||e.dispatch({selection:g,userEvent:"select"});return}let m={from:f.from+o,to:f.toA+o,insert:pn.of(r.text.slice(f.from,f.toB).split(` -`))};if((Je.mac||Je.android)&&m.from==a-1&&/^\. ?$/.test(r.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(m={from:o,to:c,insert:pn.of([r.text.replace("."," ")])}),this.pendingContextChange=m,!e.state.readOnly){let g=this.to-this.from+(m.to-m.from+m.insert.length);L6(e,m,Ae.single(this.toEditorPos(r.selectionStart,g),this.toEditorPos(r.selectionEnd,g)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),m.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(n.text.slice(Math.max(0,r.updateRangeStart-1),Math.min(n.text.length,r.updateRangeStart+1)))&&this.handlers.compositionend(r)},this.handlers.characterboundsupdate=r=>{let s=[],i=null;for(let a=this.toEditorPos(r.rangeStart),o=this.toEditorPos(r.rangeEnd);a{let s=[];for(let i of r.getTextFormats()){let a=i.underlineStyle,o=i.underlineThickness;if(!/none/i.test(a)&&!/none/i.test(o)){let c=this.toEditorPos(i.rangeStart),h=this.toEditorPos(i.rangeEnd);if(c{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:r}=this.composing;this.composing=null,r&&this.reset(e.state)}};for(let r in this.handlers)n.addEventListener(r,this.handlers[r]);this.measureReq={read:r=>{this.editContext.updateControlBounds(r.contentDOM.getBoundingClientRect());let s=Xm(r.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let n=0,r=!1,s=this.pendingContextChange;return e.changes.iterChanges((i,a,o,c,h)=>{if(r)return;let f=h.length-(a-i);if(s&&a>=s.to)if(s.from==i&&s.to==a&&s.insert.eq(h)){s=this.pendingContextChange=null,n+=f,this.to+=f;return}else s=null,this.revertPending(e.state);if(i+=n,a+=n,a<=this.from)this.from+=f,this.to+=f;else if(ithis.to||this.to-this.from+h.length>3e4){r=!0;return}this.editContext.updateText(this.toContextPos(i),this.toContextPos(a),h.toString()),this.to+=f}n+=f}),s&&!r&&this.revertPending(e.state),!r}update(e){let n=this.pendingContextChange,r=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(r.from,r.to)&&e.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||n)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:n}=e.selection.main;this.from=Math.max(0,n-1e4),this.to=Math.min(e.doc.length,n+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let n=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(n.from),this.toContextPos(n.from+n.insert.length),e.doc.sliceString(n.from,n.to))}setSelection(e){let{main:n}=e.selection,r=this.toContextPos(Math.max(this.from,Math.min(this.to,n.anchor))),s=this.toContextPos(n.head);(this.editContext.selectionStart!=r||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(r,s)}rangeIsValid(e){let{head:n}=e.selection.main;return!(this.from>0&&n-this.from<500||this.to1e4*3)}toEditorPos(e,n=this.to-this.from){e=Math.min(e,n);let r=this.composing;return r&&r.drifted?r.editorBase+(e-r.contextBase):e+this.from}toContextPos(e){let n=this.composing;return n&&n.drifted?n.contextBase+(e-n.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}}class Ke{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var n;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:r}=e;this.dispatchTransactions=e.dispatchTransactions||r&&(s=>s.forEach(i=>r(i,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=e.root||qre(e.parent)||document,this.viewState=new cT(e.state||dn.create(e)),e.scrollTo&&e.scrollTo.is(tx)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Gd).map(s=>new bw(s));for(let s of this.plugins)s.update(this);this.observer=new rie(this),this.inputState=new Nse(this),this.inputState.ensureHandlers(this.plugins),this.docView=new H9(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((n=document.fonts)===null||n===void 0)&&n.ready&&document.fonts.ready.then(()=>this.requestMeasure())}dispatch(...e){let n=e.length==1&&e[0]instanceof $r?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(n,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let n=!1,r=!1,s,i=this.state;for(let g of e){if(g.startState!=i)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");i=g.state}if(this.destroyed){this.viewState.state=i;return}let a=this.hasFocus,o=0,c=null;e.some(g=>g.annotation(tB))?(this.inputState.notifiedFocused=a,o=1):a!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=a,c=nB(i,a),c||(o=1));let h=this.observer.delayedAndroidKey,f=null;if(h?(this.observer.clearDelayedAndroidKey(),f=this.observer.readChange(),(f&&!this.state.doc.eq(i.doc)||!this.state.selection.eq(i.selection))&&(f=null)):this.observer.clear(),i.facet(dn.phrases)!=this.state.facet(dn.phrases))return this.setState(i);s=I1.create(this,i,e),s.flags|=o;let m=this.viewState.scrollTarget;try{this.updateState=2;for(let g of e){if(m&&(m=m.map(g.changes)),g.scrollIntoView){let{main:x}=g.state.selection;m=new sh(x.empty?x:Ae.cursor(x.head,x.head>x.anchor?-1:1))}for(let x of g.effects)x.is(tx)&&(m=x.value.clip(this.state))}this.viewState.update(s,m),this.bidiCache=q1.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),n=this.docView.update(s),this.state.facet(mm)!=this.styleModules&&this.mountStyles(),r=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(n,e.some(g=>g.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(lx)!=s.state.facet(lx)&&(this.viewState.mustMeasureContent=!0),(n||r||m||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),n&&this.docViewUpdate(),!s.empty)for(let g of this.state.facet(SS))try{g(s)}catch(x){ni(this.state,x,"update listener")}(c||f)&&Promise.resolve().then(()=>{c&&this.state==c.startState&&this.dispatch(c),f&&!GI(this,f)&&h.force&&rh(this.contentDOM,h.key,h.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let n=this.hasFocus;try{for(let r of this.plugins)r.destroy(this);this.viewState=new cT(e),this.plugins=e.facet(Gd).map(r=>new bw(r)),this.pluginMap.clear();for(let r of this.plugins)r.update(this);this.docView.destroy(),this.docView=new H9(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}n&&this.focus(),this.requestMeasure()}updatePlugins(e){let n=e.startState.facet(Gd),r=e.state.facet(Gd);if(n!=r){let s=[];for(let i of r){let a=n.indexOf(i);if(a<0)s.push(new bw(i));else{let o=this.plugins[a];o.mustUpdate=e,s.push(o)}}for(let i of this.plugins)i.mustUpdate!=e&&i.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=e;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let n=null,r=this.scrollDOM,s=r.scrollTop*this.scaleY,{scrollAnchorPos:i,scrollAnchorHeight:a}=this.viewState;Math.abs(s-this.viewState.scrollTop)>1&&(a=-1),this.viewState.scrollAnchorHeight=-1;try{for(let o=0;;o++){if(a<0)if(pI(r))i=-1,a=this.viewState.heightMap.height;else{let x=this.viewState.scrollAnchorAt(s);i=x.from,a=x.top}this.updateState=1;let c=this.viewState.measure(this);if(!c&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(o>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];c&4||([this.measureRequests,h]=[h,this.measureRequests]);let f=h.map(x=>{try{return x.read(this)}catch(y){return ni(this.state,y),fT}}),m=I1.create(this,this.state,[]),g=!1;m.flags|=c,n?n.flags|=c:n=m,this.updateState=2,m.empty||(this.updatePlugins(m),this.inputState.update(m),this.updateAttrs(),g=this.docView.update(m),g&&this.docViewUpdate());for(let x=0;x1||y<-1){s=s+y,r.scrollTop=s/this.scaleY,a=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(n&&!n.empty)for(let o of this.state.facet(SS))o(n)}get themeClasses(){return CS+" "+(this.state.facet(NS)?aB:iB)+" "+this.state.facet(lx)}updateAttrs(){let e=mT(this,qI,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),n={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(no)?"true":"false",class:"cm-content",style:`${Je.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(n["aria-readonly"]="true"),mT(this,z6,n);let r=this.observer.ignore(()=>{let s=xS(this.contentDOM,this.contentAttrs,n),i=xS(this.dom,this.editorAttrs,e);return s||i});return this.editorAttrs=e,this.contentAttrs=n,r}showAnnouncements(e){let n=!0;for(let r of e)for(let s of r.effects)if(s.is(Ke.announce)){n&&(this.announceDOM.textContent=""),n=!1;let i=this.announceDOM.appendChild(document.createElement("div"));i.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(mm);let e=this.state.facet(Ke.cspNonce);yc.mount(this.root,this.styleModules.concat(tie).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let n=0;nr.plugin==e)||null),n&&n.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,n,r){return Sw(this,e,X9(this,e,n,r))}moveByGroup(e,n){return Sw(this,e,X9(this,e,n,r=>xse(this,e.head,r)))}visualLineSide(e,n){let r=this.bidiSpans(e),s=this.textDirectionAt(e.from),i=r[n?r.length-1:0];return Ae.cursor(i.side(n,s)+e.from,i.forward(!n,s)?1:-1)}moveToLineBoundary(e,n,r=!0){return gse(this,e,n,r)}moveVertically(e,n,r){return Sw(this,e,vse(this,e,n,r))}domAtPos(e){return this.docView.domAtPos(e)}posAtDOM(e,n=0){return this.docView.posFromDOM(e,n)}posAtCoords(e,n=!0){return this.readMeasured(),VI(this,e,n)}coordsAtPos(e,n=1){this.readMeasured();let r=this.docView.coordsAt(e,n);if(!r||r.left==r.right)return r;let s=this.state.doc.lineAt(e),i=this.bidiSpans(s),a=i[hc.find(i,e-s.from,-1,n)];return W0(r,a.dir==sr.LTR==n>0)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(PI)||ethis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>aie)return TI(e.length);let n=this.textDirectionAt(e.from),r;for(let i of this.bidiCache)if(i.from==e.from&&i.dir==n&&(i.fresh||CI(i.isolates,r=Q9(this,e))))return i.order;r||(r=Q9(this,e));let s=ese(e.text,n,r);return this.bidiCache.push(new q1(e.from,e.to,n,r,!0,s)),s}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||Je.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{fI(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,n={}){return tx.of(new sh(typeof e=="number"?Ae.cursor(e):e,n.y,n.x,n.yMargin,n.xMargin))}scrollSnapshot(){let{scrollTop:e,scrollLeft:n}=this.scrollDOM,r=this.viewState.scrollAnchorAt(e);return tx.of(new sh(Ae.cursor(r.from),"start","start",r.top-e,n,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return _r.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return _r.define(()=>({}),{eventObservers:e})}static theme(e,n){let r=yc.newName(),s=[lx.of(r),mm.of(TS(`.${r}`,e))];return n&&n.dark&&s.push(NS.of(!0)),s}static baseTheme(e){return Ac.lowest(mm.of(TS("."+CS,e,lB)))}static findFromDOM(e){var n;let r=e.querySelector(".cm-content"),s=r&&Qn.get(r)||Qn.get(e);return((n=s?.rootView)===null||n===void 0?void 0:n.view)||null}}Ke.styleModule=mm;Ke.inputHandler=DI;Ke.clipboardInputFilter=R6;Ke.clipboardOutputFilter=D6;Ke.scrollHandler=II;Ke.focusChangeEffect=zI;Ke.perLineTextDirection=PI;Ke.exceptionSink=RI;Ke.updateListener=SS;Ke.editable=no;Ke.mouseSelectionStyle=AI;Ke.dragMovesSelection=MI;Ke.clickAddsSelectionRange=_I;Ke.decorations=Ym;Ke.outerDecorations=FI;Ke.atomicRanges=Y0;Ke.bidiIsolatedRanges=$I;Ke.scrollMargins=QI;Ke.darkTheme=NS;Ke.cspNonce=nt.define({combine:t=>t.length?t[0]:""});Ke.contentAttributes=z6;Ke.editorAttributes=qI;Ke.lineWrapping=Ke.contentAttributes.of({class:"cm-lineWrapping"});Ke.announce=Lt.define();const aie=4096,fT={};class q1{constructor(e,n,r,s,i,a){this.from=e,this.to=n,this.dir=r,this.isolates=s,this.fresh=i,this.order=a}static update(e,n){if(n.empty&&!e.some(i=>i.fresh))return e;let r=[],s=e.length?e[e.length-1].dir:sr.LTR;for(let i=Math.max(0,e.length-10);i=0;s--){let i=r[s],a=typeof i=="function"?i(t):i;a&&gS(a,n)}return n}const lie=Je.mac?"mac":Je.windows?"win":Je.linux?"linux":"key";function oie(t,e){const n=t.split(/-(?!$)/);let r=n[n.length-1];r=="Space"&&(r=" ");let s,i,a,o;for(let c=0;cr.concat(s),[]))),n}function uie(t,e,n){return cB(oB(t.state),e,t,n)}let cc=null;const die=4e3;function hie(t,e=lie){let n=Object.create(null),r=Object.create(null),s=(a,o)=>{let c=r[a];if(c==null)r[a]=o;else if(c!=o)throw new Error("Key binding "+a+" is used both as a regular binding and as a multi-stroke prefix")},i=(a,o,c,h,f)=>{var m,g;let x=n[a]||(n[a]=Object.create(null)),y=o.split(/ (?!$)/).map(k=>oie(k,e));for(let k=1;k{let T=cc={view:C,prefix:N,scope:a};return setTimeout(()=>{cc==T&&(cc=null)},die),!0}]})}let w=y.join(" ");s(w,!1);let S=x[w]||(x[w]={preventDefault:!1,stopPropagation:!1,run:((g=(m=x._any)===null||m===void 0?void 0:m.run)===null||g===void 0?void 0:g.slice())||[]});c&&S.run.push(c),h&&(S.preventDefault=!0),f&&(S.stopPropagation=!0)};for(let a of t){let o=a.scope?a.scope.split(" "):["editor"];if(a.any)for(let h of o){let f=n[h]||(n[h]=Object.create(null));f._any||(f._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:m}=a;for(let g in f)f[g].run.push(x=>m(x,ES))}let c=a[e]||a.key;if(c)for(let h of o)i(h,c,a.run,a.preventDefault,a.stopPropagation),a.shift&&i(h,"Shift-"+c,a.shift,a.preventDefault,a.stopPropagation)}return n}let ES=null;function cB(t,e,n,r){ES=e;let s=Dre(e),i=ei(s,0),a=Za(i)==s.length&&s!=" ",o="",c=!1,h=!1,f=!1;cc&&cc.view==n&&cc.scope==r&&(o=cc.prefix+" ",KI.indexOf(e.keyCode)<0&&(h=!0,cc=null));let m=new Set,g=S=>{if(S){for(let k of S.run)if(!m.has(k)&&(m.add(k),k(n)))return S.stopPropagation&&(f=!0),!0;S.preventDefault&&(S.stopPropagation&&(f=!0),h=!0)}return!1},x=t[r],y,w;return x&&(g(x[o+ox(s,e,!a)])?c=!0:a&&(e.altKey||e.metaKey||e.ctrlKey)&&!(Je.windows&&e.ctrlKey&&e.altKey)&&!(Je.mac&&e.altKey&&!(e.ctrlKey||e.metaKey))&&(y=bc[e.keyCode])&&y!=s?(g(x[o+ox(y,e,!0)])||e.shiftKey&&(w=Gm[e.keyCode])!=s&&w!=y&&g(x[o+ox(w,e,!1)]))&&(c=!0):a&&e.shiftKey&&g(x[o+ox(s,e,!0)])&&(c=!0),!c&&g(x._any)&&(c=!0)),h&&(c=!0),c&&f&&e.stopPropagation(),ES=null,c}class Z0{constructor(e,n,r,s,i){this.className=e,this.left=n,this.top=r,this.width=s,this.height=i}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,n){return n.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,n,r){if(r.empty){let s=e.coordsAtPos(r.head,r.assoc||1);if(!s)return[];let i=uB(e);return[new Z0(n,s.left-i.left,s.top-i.top,null,s.bottom-s.top)]}else return fie(e,n,r)}}function uB(t){let e=t.scrollDOM.getBoundingClientRect();return{left:(t.textDirection==sr.LTR?e.left:e.right-t.scrollDOM.clientWidth*t.scaleX)-t.scrollDOM.scrollLeft*t.scaleX,top:e.top-t.scrollDOM.scrollTop*t.scaleY}}function gT(t,e,n,r){let s=t.coordsAtPos(e,n*2);if(!s)return r;let i=t.dom.getBoundingClientRect(),a=(s.top+s.bottom)/2,o=t.posAtCoords({x:i.left+1,y:a}),c=t.posAtCoords({x:i.right-1,y:a});return o==null||c==null?r:{from:Math.max(r.from,Math.min(o,c)),to:Math.min(r.to,Math.max(o,c))}}function fie(t,e,n){if(n.to<=t.viewport.from||n.from>=t.viewport.to)return[];let r=Math.max(n.from,t.viewport.from),s=Math.min(n.to,t.viewport.to),i=t.textDirection==sr.LTR,a=t.contentDOM,o=a.getBoundingClientRect(),c=uB(t),h=a.querySelector(".cm-line"),f=h&&window.getComputedStyle(h),m=o.left+(f?parseInt(f.paddingLeft)+Math.min(0,parseInt(f.textIndent)):0),g=o.right-(f?parseInt(f.paddingRight):0),x=jS(t,r,1),y=jS(t,s,-1),w=x.type==Is.Text?x:null,S=y.type==Is.Text?y:null;if(w&&(t.lineWrapping||x.widgetLineBreaks)&&(w=gT(t,r,1,w)),S&&(t.lineWrapping||y.widgetLineBreaks)&&(S=gT(t,s,-1,S)),w&&S&&w.from==S.from&&w.to==S.to)return N(C(n.from,n.to,w));{let _=w?C(n.from,null,w):T(x,!1),E=S?C(null,n.to,S):T(y,!0),M=[];return(w||x).to<(S||y).from-(w&&S?1:0)||x.widgetLineBreaks>1&&_.bottom+t.defaultLineHeight/2U&&z.from=B)break;R>H&&Q(Math.max(G,H),_==null&&G<=U,Math.min(R,B),E==null&&R>=ee,J.dir)}if(H=X.to+1,H>=B)break}return I.length==0&&Q(U,_==null,ee,E==null,t.textDirection),{top:L,bottom:P,horizontal:I}}function T(_,E){let M=o.top+(E?_.top:_.bottom);return{top:M,bottom:M,horizontal:[]}}}function mie(t,e){return t.constructor==e.constructor&&t.eq(e)}class pie{constructor(e,n){this.view=e,this.layer=n,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),n.above&&this.dom.classList.add("cm-layer-above"),n.class&&this.dom.classList.add(n.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),n.mount&&n.mount(this.dom,e)}update(e){e.startState.facet(o1)!=e.state.facet(o1)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let n=0,r=e.facet(o1);for(;n!mie(n,this.drawn[r]))){let n=this.dom.firstChild,r=0;for(let s of e)s.update&&n&&s.constructor&&this.drawn[r].constructor&&s.update(n,this.drawn[r])?(n=n.nextSibling,r++):this.dom.insertBefore(s.draw(),n);for(;n;){let s=n.nextSibling;n.remove(),n=s}this.drawn=e,Je.safari&&Je.safari_version>=26&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}}const o1=nt.define();function dB(t){return[_r.define(e=>new pie(e,t)),o1.of(t)]}const Km=nt.define({combine(t){return gl(t,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,n)=>Math.min(e,n),drawRangeCursor:(e,n)=>e||n})}});function gie(t={}){return[Km.of(t),xie,vie,yie,LI.of(!0)]}function hB(t){return t.startState.facet(Km)!=t.state.facet(Km)}const xie=dB({above:!0,markers(t){let{state:e}=t,n=e.facet(Km),r=[];for(let s of e.selection.ranges){let i=s==e.selection.main;if(s.empty||n.drawRangeCursor){let a=i?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",o=s.empty?s:Ae.cursor(s.head,s.head>s.anchor?-1:1);for(let c of Z0.forRange(t,a,o))r.push(c)}}return r},update(t,e){t.transactions.some(r=>r.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let n=hB(t);return n&&xT(t.state,e),t.docChanged||t.selectionSet||n},mount(t,e){xT(e.state,t)},class:"cm-cursorLayer"});function xT(t,e){e.style.animationDuration=t.facet(Km).cursorBlinkRate+"ms"}const vie=dB({above:!1,markers(t){return t.state.selection.ranges.map(e=>e.empty?[]:Z0.forRange(t,"cm-selectionBackground",e)).reduce((e,n)=>e.concat(n))},update(t,e){return t.docChanged||t.selectionSet||t.viewportChanged||hB(t)},class:"cm-selectionLayer"}),yie=Ac.highest(Ke.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}})),fB=Lt.define({map(t,e){return t==null?null:e.mapPos(t)}}),xm=us.define({create(){return null},update(t,e){return t!=null&&(t=e.changes.mapPos(t)),e.effects.reduce((n,r)=>r.is(fB)?r.value:n,t)}}),bie=_r.fromClass(class{constructor(t){this.view=t,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(t){var e;let n=t.state.field(xm);n==null?this.cursor!=null&&((e=this.cursor)===null||e===void 0||e.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(t.startState.field(xm)!=n||t.docChanged||t.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:t}=this,e=t.state.field(xm),n=e!=null&&t.coordsAtPos(e);if(!n)return null;let r=t.scrollDOM.getBoundingClientRect();return{left:n.left-r.left+t.scrollDOM.scrollLeft*t.scaleX,top:n.top-r.top+t.scrollDOM.scrollTop*t.scaleY,height:n.bottom-n.top}}drawCursor(t){if(this.cursor){let{scaleX:e,scaleY:n}=this.view;t?(this.cursor.style.left=t.left/e+"px",this.cursor.style.top=t.top/n+"px",this.cursor.style.height=t.height/n+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(t){this.view.state.field(xm)!=t&&this.view.dispatch({effects:fB.of(t)})}},{eventObservers:{dragover(t){this.setDropPos(this.view.posAtCoords({x:t.clientX,y:t.clientY}))},dragleave(t){(t.target==this.view.contentDOM||!this.view.contentDOM.contains(t.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function wie(){return[xm,bie]}function vT(t,e,n,r,s){e.lastIndex=0;for(let i=t.iterRange(n,r),a=n,o;!i.next().done;a+=i.value.length)if(!i.lineBreak)for(;o=e.exec(i.value);)s(a+o.index,o)}function Sie(t,e){let n=t.visibleRanges;if(n.length==1&&n[0].from==t.viewport.from&&n[0].to==t.viewport.to)return n;let r=[];for(let{from:s,to:i}of n)s=Math.max(t.state.doc.lineAt(s).from,s-e),i=Math.min(t.state.doc.lineAt(i).to,i+e),r.length&&r[r.length-1].to>=s?r[r.length-1].to=i:r.push({from:s,to:i});return r}class kie{constructor(e){const{regexp:n,decoration:r,decorate:s,boundary:i,maxLength:a=1e3}=e;if(!n.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=n,s)this.addMatch=(o,c,h,f)=>s(f,h,h+o[0].length,o,c);else if(typeof r=="function")this.addMatch=(o,c,h,f)=>{let m=r(o,c,h);m&&f(h,h+o[0].length,m)};else if(r)this.addMatch=(o,c,h,f)=>f(h,h+o[0].length,r);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=i,this.maxLength=a}createDeco(e){let n=new fo,r=n.add.bind(n);for(let{from:s,to:i}of Sie(e,this.maxLength))vT(e.state.doc,this.regexp,s,i,(a,o)=>this.addMatch(o,e,a,r));return n.finish()}updateDeco(e,n){let r=1e9,s=-1;return e.docChanged&&e.changes.iterChanges((i,a,o,c)=>{c>=e.view.viewport.from&&o<=e.view.viewport.to&&(r=Math.min(o,r),s=Math.max(c,s))}),e.viewportMoved||s-r>1e3?this.createDeco(e.view):s>-1?this.updateRange(e.view,n.map(e.changes),r,s):n}updateRange(e,n,r,s){for(let i of e.visibleRanges){let a=Math.max(i.from,r),o=Math.min(i.to,s);if(o>=a){let c=e.state.doc.lineAt(a),h=c.toc.from;a--)if(this.boundary.test(c.text[a-1-c.from])){f=a;break}for(;og.push(k.range(w,S));if(c==h)for(this.regexp.lastIndex=f-c.from;(x=this.regexp.exec(c.text))&&x.indexthis.addMatch(S,e,w,y));n=n.update({filterFrom:f,filterTo:m,filter:(w,S)=>wm,add:g})}}return n}}const _S=/x/.unicode!=null?"gu":"g",jie=new RegExp(`[\0-\b ---Ÿ­؜​‎‏\u2028\u2029‭‮⁦⁧⁩\uFEFF-]`,_S),Oie={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let Ow=null;function Nie(){var t;if(Ow==null&&typeof document<"u"&&document.body){let e=document.body.style;Ow=((t=e.tabSize)!==null&&t!==void 0?t:e.MozTabSize)!=null}return Ow||!1}const c1=nt.define({combine(t){let e=gl(t,{render:null,specialChars:jie,addSpecialChars:null});return(e.replaceTabs=!Nie())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,_S)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,_S)),e}});function Cie(t={}){return[c1.of(t),Tie()]}let yT=null;function Tie(){return yT||(yT=_r.fromClass(class{constructor(t){this.view=t,this.decorations=xt.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(t.state.facet(c1)),this.decorations=this.decorator.createDeco(t)}makeDecorator(t){return new kie({regexp:t.specialChars,decoration:(e,n,r)=>{let{doc:s}=n.state,i=ei(e[0],0);if(i==9){let a=s.lineAt(r),o=n.state.tabSize,c=Fh(a.text,o,r-a.from);return xt.replace({widget:new Aie((o-c%o)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[i]||(this.decorationCache[i]=xt.replace({widget:new Mie(t,i)}))},boundary:t.replaceTabs?void 0:/[^]/})}update(t){let e=t.state.facet(c1);t.startState.facet(c1)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(t.view)):this.decorations=this.decorator.updateDeco(t,this.decorations)}},{decorations:t=>t.decorations}))}const Eie="•";function _ie(t){return t>=32?Eie:t==10?"␤":String.fromCharCode(9216+t)}class Mie extends xl{constructor(e,n){super(),this.options=e,this.code=n}eq(e){return e.code==this.code}toDOM(e){let n=_ie(this.code),r=e.state.phrase("Control character")+" "+(Oie[this.code]||"0x"+this.code.toString(16)),s=this.options.render&&this.options.render(this.code,r,n);if(s)return s;let i=document.createElement("span");return i.textContent=n,i.title=r,i.setAttribute("aria-label",r),i.className="cm-specialChar",i}ignoreEvent(){return!1}}class Aie extends xl{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}}function Rie(){return zie}const Die=xt.line({class:"cm-activeLine"}),zie=_r.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.docChanged||t.selectionSet)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=-1,n=[];for(let r of t.state.selection.ranges){let s=t.lineBlockAt(r.head);s.from>e&&(n.push(Die.range(s.from)),e=s.from)}return xt.set(n)}},{decorations:t=>t.decorations});class Pie extends xl{constructor(e){super(),this.content=e}toDOM(e){let n=document.createElement("span");return n.className="cm-placeholder",n.style.pointerEvents="none",n.appendChild(typeof this.content=="string"?document.createTextNode(this.content):typeof this.content=="function"?this.content(e):this.content.cloneNode(!0)),n.setAttribute("aria-hidden","true"),n}coordsAt(e){let n=e.firstChild?yh(e.firstChild):[];if(!n.length)return null;let r=window.getComputedStyle(e.parentNode),s=W0(n[0],r.direction!="rtl"),i=parseInt(r.lineHeight);return s.bottom-s.top>i*1.5?{left:s.left,right:s.right,top:s.top,bottom:s.top+i}:s}ignoreEvent(){return!1}}function Lie(t){let e=_r.fromClass(class{constructor(n){this.view=n,this.placeholder=t?xt.set([xt.widget({widget:new Pie(t),side:1}).range(0)]):xt.none}get decorations(){return this.view.state.doc.length?xt.none:this.placeholder}},{decorations:n=>n.decorations});return typeof t=="string"?[e,Ke.contentAttributes.of({"aria-placeholder":t})]:e}const MS=2e3;function Iie(t,e,n){let r=Math.min(e.line,n.line),s=Math.max(e.line,n.line),i=[];if(e.off>MS||n.off>MS||e.col<0||n.col<0){let a=Math.min(e.off,n.off),o=Math.max(e.off,n.off);for(let c=r;c<=s;c++){let h=t.doc.line(c);h.length<=o&&i.push(Ae.range(h.from+a,h.to+o))}}else{let a=Math.min(e.col,n.col),o=Math.max(e.col,n.col);for(let c=r;c<=s;c++){let h=t.doc.line(c),f=oS(h.text,a,t.tabSize,!0);if(f<0)i.push(Ae.cursor(h.to));else{let m=oS(h.text,o,t.tabSize);i.push(Ae.range(h.from+f,h.from+m))}}}return i}function Bie(t,e){let n=t.coordsAtPos(t.viewport.from);return n?Math.round(Math.abs((n.left-e)/t.defaultCharacterWidth)):-1}function bT(t,e){let n=t.posAtCoords({x:e.clientX,y:e.clientY},!1),r=t.state.doc.lineAt(n),s=n-r.from,i=s>MS?-1:s==r.length?Bie(t,e.clientX):Fh(r.text,t.state.tabSize,n-r.from);return{line:r.number,col:i,off:s}}function qie(t,e){let n=bT(t,e),r=t.state.selection;return n?{update(s){if(s.docChanged){let i=s.changes.mapPos(s.startState.doc.line(n.line).from),a=s.state.doc.lineAt(i);n={line:a.number,col:n.col,off:Math.min(n.off,a.length)},r=r.map(s.changes)}},get(s,i,a){let o=bT(t,s);if(!o)return r;let c=Iie(t.state,n,o);return c.length?a?Ae.create(c.concat(r.ranges)):Ae.create(c):r}}:null}function Fie(t){let e=(n=>n.altKey&&n.button==0);return Ke.mouseSelectionStyle.of((n,r)=>e(r)?qie(n,r):null)}const $ie={Alt:[18,t=>!!t.altKey],Control:[17,t=>!!t.ctrlKey],Shift:[16,t=>!!t.shiftKey],Meta:[91,t=>!!t.metaKey]},Qie={style:"cursor: crosshair"};function Hie(t={}){let[e,n]=$ie[t.key||"Alt"],r=_r.fromClass(class{constructor(s){this.view=s,this.isDown=!1}set(s){this.isDown!=s&&(this.isDown=s,this.view.update([]))}},{eventObservers:{keydown(s){this.set(s.keyCode==e||n(s))},keyup(s){(s.keyCode==e||!n(s))&&this.set(!1)},mousemove(s){this.set(n(s))}}});return[r,Ke.contentAttributes.of(s=>{var i;return!((i=s.plugin(r))===null||i===void 0)&&i.isDown?Qie:null})]}const cx="-10000px";class mB{constructor(e,n,r,s){this.facet=n,this.createTooltipView=r,this.removeTooltipView=s,this.input=e.state.facet(n),this.tooltips=this.input.filter(a=>a);let i=null;this.tooltipViews=this.tooltips.map(a=>i=r(a,i))}update(e,n){var r;let s=e.state.facet(this.facet),i=s.filter(c=>c);if(s===this.input){for(let c of this.tooltipViews)c.update&&c.update(e);return!1}let a=[],o=n?[]:null;for(let c=0;cn[h]=c),n.length=o.length),this.input=s,this.tooltips=i,this.tooltipViews=a,!0}}function Vie(t){let e=t.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:e.clientHeight,right:e.clientWidth}}const Nw=nt.define({combine:t=>{var e,n,r;return{position:Je.ios?"absolute":((e=t.find(s=>s.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((n=t.find(s=>s.parent))===null||n===void 0?void 0:n.parent)||null,tooltipSpace:((r=t.find(s=>s.tooltipSpace))===null||r===void 0?void 0:r.tooltipSpace)||Vie}}}),wT=new WeakMap,q6=_r.fromClass(class{constructor(t){this.view=t,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let e=t.state.facet(Nw);this.position=e.position,this.parent=e.parent,this.classes=t.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.resizeObserver=typeof ResizeObserver=="function"?new ResizeObserver(()=>this.measureSoon()):null,this.manager=new mB(t,F6,(n,r)=>this.createTooltip(n,r),n=>{this.resizeObserver&&this.resizeObserver.unobserve(n.dom),n.dom.remove()}),this.above=this.manager.tooltips.map(n=>!!n.above),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(n=>{Date.now()>this.lastTransaction-50&&n.length>0&&n[n.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),t.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let t of this.manager.tooltipViews)this.intersectionObserver.observe(t.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(t){t.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(t,this.above);e&&this.observeIntersection();let n=e||t.geometryChanged,r=t.state.facet(Nw);if(r.position!=this.position&&!this.madeAbsolute){this.position=r.position;for(let s of this.manager.tooltipViews)s.dom.style.position=this.position;n=!0}if(r.parent!=this.parent){this.parent&&this.container.remove(),this.parent=r.parent,this.createContainer();for(let s of this.manager.tooltipViews)this.container.appendChild(s.dom);n=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);n&&this.maybeMeasure()}createTooltip(t,e){let n=t.create(this.view),r=e?e.dom:null;if(n.dom.classList.add("cm-tooltip"),t.arrow&&!n.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let s=document.createElement("div");s.className="cm-tooltip-arrow",n.dom.appendChild(s)}return n.dom.style.position=this.position,n.dom.style.top=cx,n.dom.style.left="0px",this.container.insertBefore(n.dom,r),n.mount&&n.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(n.dom),n}destroy(){var t,e,n;this.view.win.removeEventListener("resize",this.measureSoon);for(let r of this.manager.tooltipViews)r.dom.remove(),(t=r.destroy)===null||t===void 0||t.call(r);this.parent&&this.container.remove(),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),(n=this.intersectionObserver)===null||n===void 0||n.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let t=1,e=1,n=!1;if(this.position=="fixed"&&this.manager.tooltipViews.length){let{dom:i}=this.manager.tooltipViews[0];if(Je.safari){let a=i.getBoundingClientRect();n=Math.abs(a.top+1e4)>1||Math.abs(a.left)>1}else n=!!i.offsetParent&&i.offsetParent!=this.container.ownerDocument.body}if(n||this.position=="absolute")if(this.parent){let i=this.parent.getBoundingClientRect();i.width&&i.height&&(t=i.width/this.parent.offsetWidth,e=i.height/this.parent.offsetHeight)}else({scaleX:t,scaleY:e}=this.view.viewState);let r=this.view.scrollDOM.getBoundingClientRect(),s=P6(this.view);return{visible:{left:r.left+s.left,top:r.top+s.top,right:r.right-s.right,bottom:r.bottom-s.bottom},parent:this.parent?this.container.getBoundingClientRect():this.view.dom.getBoundingClientRect(),pos:this.manager.tooltips.map((i,a)=>{let o=this.manager.tooltipViews[a];return o.getCoords?o.getCoords(i.pos):this.view.coordsAtPos(i.pos)}),size:this.manager.tooltipViews.map(({dom:i})=>i.getBoundingClientRect()),space:this.view.state.facet(Nw).tooltipSpace(this.view),scaleX:t,scaleY:e,makeAbsolute:n}}writeMeasure(t){var e;if(t.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let o of this.manager.tooltipViews)o.dom.style.position="absolute"}let{visible:n,space:r,scaleX:s,scaleY:i}=t,a=[];for(let o=0;o=Math.min(n.bottom,r.bottom)||m.rightMath.min(n.right,r.right)+.1)){f.style.top=cx;continue}let x=c.arrow?h.dom.querySelector(".cm-tooltip-arrow"):null,y=x?7:0,w=g.right-g.left,S=(e=wT.get(h))!==null&&e!==void 0?e:g.bottom-g.top,k=h.offset||Wie,N=this.view.textDirection==sr.LTR,C=g.width>r.right-r.left?N?r.left:r.right-g.width:N?Math.max(r.left,Math.min(m.left-(x?14:0)+k.x,r.right-w)):Math.min(Math.max(r.left,m.left-w+(x?14:0)-k.x),r.right-w),T=this.above[o];!c.strictSide&&(T?m.top-S-y-k.yr.bottom)&&T==r.bottom-m.bottom>m.top-r.top&&(T=this.above[o]=!T);let _=(T?m.top-r.top:r.bottom-m.bottom)-y;if(_C&&L.topE&&(E=T?L.top-S-2-y:L.bottom+y+2);if(this.position=="absolute"?(f.style.top=(E-t.parent.top)/i+"px",ST(f,(C-t.parent.left)/s)):(f.style.top=E/i+"px",ST(f,C/s)),x){let L=m.left+(N?k.x:-k.x)-(C+14-7);x.style.left=L/s+"px"}h.overlap!==!0&&a.push({left:C,top:E,right:M,bottom:E+S}),f.classList.toggle("cm-tooltip-above",T),f.classList.toggle("cm-tooltip-below",!T),h.positioned&&h.positioned(t.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let t of this.manager.tooltipViews)t.dom.style.top=cx}},{eventObservers:{scroll(){this.maybeMeasure()}}});function ST(t,e){let n=parseInt(t.style.left,10);(isNaN(n)||Math.abs(e-n)>1)&&(t.style.left=e+"px")}const Uie=Ke.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:"14px",position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),Wie={x:0,y:0},F6=nt.define({enables:[q6,Uie]}),F1=nt.define({combine:t=>t.reduce((e,n)=>e.concat(n),[])});class Zv{static create(e){return new Zv(e)}constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new mB(e,F1,(n,r)=>this.createHostedView(n,r),n=>n.dom.remove())}createHostedView(e,n){let r=e.create(this.view);return r.dom.classList.add("cm-tooltip-section"),this.dom.insertBefore(r.dom,n?n.dom.nextSibling:this.dom.firstChild),this.mounted&&r.mount&&r.mount(this.view),r}mount(e){for(let n of this.manager.tooltipViews)n.mount&&n.mount(e);this.mounted=!0}positioned(e){for(let n of this.manager.tooltipViews)n.positioned&&n.positioned(e)}update(e){this.manager.update(e)}destroy(){var e;for(let n of this.manager.tooltipViews)(e=n.destroy)===null||e===void 0||e.call(n)}passProp(e){let n;for(let r of this.manager.tooltipViews){let s=r[e];if(s!==void 0){if(n===void 0)n=s;else if(n!==s)return}}return n}get offset(){return this.passProp("offset")}get getCoords(){return this.passProp("getCoords")}get overlap(){return this.passProp("overlap")}get resize(){return this.passProp("resize")}}const Gie=F6.compute([F1],t=>{let e=t.facet(F1);return e.length===0?null:{pos:Math.min(...e.map(n=>n.pos)),end:Math.max(...e.map(n=>{var r;return(r=n.end)!==null&&r!==void 0?r:n.pos})),create:Zv.create,above:e[0].above,arrow:e.some(n=>n.arrow)}});class Xie{constructor(e,n,r,s,i){this.view=e,this.source=n,this.field=r,this.setHover=s,this.hoverTime=i,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active.length)return;let e=Date.now()-this.lastMove.time;eo.bottom||n.xo.right+e.defaultCharacterWidth)return;let c=e.bidiSpans(e.state.doc.lineAt(s)).find(f=>f.from<=s&&f.to>=s),h=c&&c.dir==sr.RTL?-1:1;i=n.x{this.pending==o&&(this.pending=null,c&&!(Array.isArray(c)&&!c.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(c)?c:[c])}))},c=>ni(e.state,c,"hover tooltip"))}else a&&!(Array.isArray(a)&&!a.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(a)?a:[a])})}get tooltip(){let e=this.view.plugin(q6),n=e?e.manager.tooltips.findIndex(r=>r.create==Zv.create):-1;return n>-1?e.manager.tooltipViews[n]:null}mousemove(e){var n,r;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let{active:s,tooltip:i}=this;if(s.length&&i&&!Yie(i.dom,e)||this.pending){let{pos:a}=s[0]||this.pending,o=(r=(n=s[0])===null||n===void 0?void 0:n.end)!==null&&r!==void 0?r:a;(a==o?this.view.posAtCoords(this.lastMove)!=a:!Kie(this.view,a,o,e.clientX,e.clientY))&&(this.view.dispatch({effects:this.setHover.of([])}),this.pending=null)}}mouseleave(e){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;let{active:n}=this;if(n.length){let{tooltip:r}=this;r&&r.dom.contains(e.relatedTarget)?this.watchTooltipLeave(r.dom):this.view.dispatch({effects:this.setHover.of([])})}}watchTooltipLeave(e){let n=r=>{e.removeEventListener("mouseleave",n),this.active.length&&!this.view.dom.contains(r.relatedTarget)&&this.view.dispatch({effects:this.setHover.of([])})};e.addEventListener("mouseleave",n)}destroy(){clearTimeout(this.hoverTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}}const ux=4;function Yie(t,e){let{left:n,right:r,top:s,bottom:i}=t.getBoundingClientRect(),a;if(a=t.querySelector(".cm-tooltip-arrow")){let o=a.getBoundingClientRect();s=Math.min(o.top,s),i=Math.max(o.bottom,i)}return e.clientX>=n-ux&&e.clientX<=r+ux&&e.clientY>=s-ux&&e.clientY<=i+ux}function Kie(t,e,n,r,s,i){let a=t.scrollDOM.getBoundingClientRect(),o=t.documentTop+t.documentPadding.top+t.contentHeight;if(a.left>r||a.rights||Math.min(a.bottom,o)=e&&c<=n}function Zie(t,e={}){let n=Lt.define(),r=us.define({create(){return[]},update(s,i){if(s.length&&(e.hideOnChange&&(i.docChanged||i.selection)?s=[]:e.hideOn&&(s=s.filter(a=>!e.hideOn(i,a))),i.docChanged)){let a=[];for(let o of s){let c=i.changes.mapPos(o.pos,-1,vs.TrackDel);if(c!=null){let h=Object.assign(Object.create(null),o);h.pos=c,h.end!=null&&(h.end=i.changes.mapPos(h.end)),a.push(h)}}s=a}for(let a of i.effects)a.is(n)&&(s=a.value),a.is(Jie)&&(s=[]);return s},provide:s=>F1.from(s)});return{active:r,extension:[r,_r.define(s=>new Xie(s,t,r,n,e.hoverTime||300)),Gie]}}function pB(t,e){let n=t.plugin(q6);if(!n)return null;let r=n.manager.tooltips.indexOf(e);return r<0?null:n.manager.tooltipViews[r]}const Jie=Lt.define(),kT=nt.define({combine(t){let e,n;for(let r of t)e=e||r.topContainer,n=n||r.bottomContainer;return{topContainer:e,bottomContainer:n}}});function Zm(t,e){let n=t.plugin(gB),r=n?n.specs.indexOf(e):-1;return r>-1?n.panels[r]:null}const gB=_r.fromClass(class{constructor(t){this.input=t.state.facet(Jm),this.specs=this.input.filter(n=>n),this.panels=this.specs.map(n=>n(t));let e=t.state.facet(kT);this.top=new dx(t,!0,e.topContainer),this.bottom=new dx(t,!1,e.bottomContainer),this.top.sync(this.panels.filter(n=>n.top)),this.bottom.sync(this.panels.filter(n=>!n.top));for(let n of this.panels)n.dom.classList.add("cm-panel"),n.mount&&n.mount()}update(t){let e=t.state.facet(kT);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new dx(t.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new dx(t.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let n=t.state.facet(Jm);if(n!=this.input){let r=n.filter(c=>c),s=[],i=[],a=[],o=[];for(let c of r){let h=this.specs.indexOf(c),f;h<0?(f=c(t.view),o.push(f)):(f=this.panels[h],f.update&&f.update(t)),s.push(f),(f.top?i:a).push(f)}this.specs=r,this.panels=s,this.top.sync(i),this.bottom.sync(a);for(let c of o)c.dom.classList.add("cm-panel"),c.mount&&c.mount()}else for(let r of this.panels)r.update&&r.update(t)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:t=>Ke.scrollMargins.of(e=>{let n=e.plugin(t);return n&&{top:n.top.scrollMargin(),bottom:n.bottom.scrollMargin()}})});class dx{constructor(e,n,r){this.view=e,this.top=n,this.container=r,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let n of this.panels)n.destroy&&e.indexOf(n)<0&&n.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let n=this.container||this.view.dom;n.insertBefore(this.dom,this.top?n.firstChild:null)}let e=this.dom.firstChild;for(let n of this.panels)if(n.dom.parentNode==this.dom){for(;e!=n.dom;)e=jT(e);e=e.nextSibling}else this.dom.insertBefore(n.dom,e);for(;e;)e=jT(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}}function jT(t){let e=t.nextSibling;return t.remove(),e}const Jm=nt.define({enables:gB});class po extends _u{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}}po.prototype.elementClass="";po.prototype.toDOM=void 0;po.prototype.mapMode=vs.TrackBefore;po.prototype.startSide=po.prototype.endSide=-1;po.prototype.point=!0;const u1=nt.define(),eae=nt.define(),tae={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>On.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{},side:"before"},Am=nt.define();function nae(t){return[xB(),Am.of({...tae,...t})]}const OT=nt.define({combine:t=>t.some(e=>e)});function xB(t){return[rae]}const rae=_r.fromClass(class{constructor(t){this.view=t,this.domAfter=null,this.prevViewport=t.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=t.state.facet(Am).map(e=>new CT(t,e)),this.fixed=!t.state.facet(OT);for(let e of this.gutters)e.config.side=="after"?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),t.scrollDOM.insertBefore(this.dom,t.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(t){if(this.updateGutters(t)){let e=this.prevViewport,n=t.view.viewport,r=Math.min(e.to,n.to)-Math.max(e.from,n.from);this.syncGutters(r<(n.to-n.from)*.8)}if(t.geometryChanged){let e=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=e,this.domAfter&&(this.domAfter.style.minHeight=e)}this.view.state.facet(OT)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=t.view.viewport}syncGutters(t){let e=this.dom.nextSibling;t&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let n=On.iter(this.view.state.facet(u1),this.view.viewport.from),r=[],s=this.gutters.map(i=>new sae(i,this.view.viewport,-this.view.documentPadding.top));for(let i of this.view.viewportLineBlocks)if(r.length&&(r=[]),Array.isArray(i.type)){let a=!0;for(let o of i.type)if(o.type==Is.Text&&a){AS(n,r,o.from);for(let c of s)c.line(this.view,o,r);a=!1}else if(o.widget)for(let c of s)c.widget(this.view,o)}else if(i.type==Is.Text){AS(n,r,i.from);for(let a of s)a.line(this.view,i,r)}else if(i.widget)for(let a of s)a.widget(this.view,i);for(let i of s)i.finish();t&&(this.view.scrollDOM.insertBefore(this.dom,e),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(t){let e=t.startState.facet(Am),n=t.state.facet(Am),r=t.docChanged||t.heightChanged||t.viewportChanged||!On.eq(t.startState.facet(u1),t.state.facet(u1),t.view.viewport.from,t.view.viewport.to);if(e==n)for(let s of this.gutters)s.update(t)&&(r=!0);else{r=!0;let s=[];for(let i of n){let a=e.indexOf(i);a<0?s.push(new CT(this.view,i)):(this.gutters[a].update(t),s.push(this.gutters[a]))}for(let i of this.gutters)i.dom.remove(),s.indexOf(i)<0&&i.destroy();for(let i of s)i.config.side=="after"?this.getDOMAfter().appendChild(i.dom):this.dom.appendChild(i.dom);this.gutters=s}return r}destroy(){for(let t of this.gutters)t.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:t=>Ke.scrollMargins.of(e=>{let n=e.plugin(t);if(!n||n.gutters.length==0||!n.fixed)return null;let r=n.dom.offsetWidth*e.scaleX,s=n.domAfter?n.domAfter.offsetWidth*e.scaleX:0;return e.textDirection==sr.LTR?{left:r,right:s}:{right:r,left:s}})});function NT(t){return Array.isArray(t)?t:[t]}function AS(t,e,n){for(;t.value&&t.from<=n;)t.from==n&&e.push(t.value),t.next()}class sae{constructor(e,n,r){this.gutter=e,this.height=r,this.i=0,this.cursor=On.iter(e.markers,n.from)}addElement(e,n,r){let{gutter:s}=this,i=(n.top-this.height)/e.scaleY,a=n.height/e.scaleY;if(this.i==s.elements.length){let o=new vB(e,a,i,r);s.elements.push(o),s.dom.appendChild(o.dom)}else s.elements[this.i].update(e,a,i,r);this.height=n.bottom,this.i++}line(e,n,r){let s=[];AS(this.cursor,s,n.from),r.length&&(s=s.concat(r));let i=this.gutter.config.lineMarker(e,n,s);i&&s.unshift(i);let a=this.gutter;s.length==0&&!a.config.renderEmptyElements||this.addElement(e,n,s)}widget(e,n){let r=this.gutter.config.widgetMarker(e,n.widget,n),s=r?[r]:null;for(let i of e.state.facet(eae)){let a=i(e,n.widget,n);a&&(s||(s=[])).push(a)}s&&this.addElement(e,n,s)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let n=e.elements.pop();e.dom.removeChild(n.dom),n.destroy()}}}class CT{constructor(e,n){this.view=e,this.config=n,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let r in n.domEventHandlers)this.dom.addEventListener(r,s=>{let i=s.target,a;if(i!=this.dom&&this.dom.contains(i)){for(;i.parentNode!=this.dom;)i=i.parentNode;let c=i.getBoundingClientRect();a=(c.top+c.bottom)/2}else a=s.clientY;let o=e.lineBlockAtHeight(a-e.documentTop);n.domEventHandlers[r](e,o,s)&&s.preventDefault()});this.markers=NT(n.markers(e)),n.initialSpacer&&(this.spacer=new vB(e,0,0,[n.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let n=this.markers;if(this.markers=NT(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],e);s!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[s])}let r=e.view.viewport;return!On.eq(this.markers,n,r.from,r.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}}class vB{constructor(e,n,r,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,n,r,s)}update(e,n,r,s){this.height!=n&&(this.height=n,this.dom.style.height=n+"px"),this.above!=r&&(this.dom.style.marginTop=(this.above=r)?r+"px":""),iae(this.markers,s)||this.setMarkers(e,s)}setMarkers(e,n){let r="cm-gutterElement",s=this.dom.firstChild;for(let i=0,a=0;;){let o=a,c=ii(o,c,h)||a(o,c,h):a}return r}})}});class Cw extends po{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}}function Tw(t,e){return t.state.facet(Xd).formatNumber(e,t.state)}const oae=Am.compute([Xd],t=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(aae)},lineMarker(e,n,r){return r.some(s=>s.toDOM)?null:new Cw(Tw(e,e.state.doc.lineAt(n.from).number))},widgetMarker:(e,n,r)=>{for(let s of e.state.facet(lae)){let i=s(e,n,r);if(i)return i}return null},lineMarkerChange:e=>e.startState.facet(Xd)!=e.state.facet(Xd),initialSpacer(e){return new Cw(Tw(e,TT(e.state.doc.lines)))},updateSpacer(e,n){let r=Tw(n.view,TT(n.view.state.doc.lines));return r==e.number?e:new Cw(r)},domEventHandlers:t.facet(Xd).domEventHandlers,side:"before"}));function cae(t={}){return[Xd.of(t),xB(),oae]}function TT(t){let e=9;for(;e{let e=[],n=-1;for(let r of t.selection.ranges){let s=t.doc.lineAt(r.head).from;s>n&&(n=s,e.push(uae.range(s)))}return On.of(e)});function hae(){return dae}const yB=1024;let fae=0;class Ew{constructor(e,n){this.from=e,this.to=n}}class Yt{constructor(e={}){this.id=fae++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=e.combine||null}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=qs.match(e)),n=>{let r=e(n);return r===void 0?null:[this,r]}}}Yt.closedBy=new Yt({deserialize:t=>t.split(" ")});Yt.openedBy=new Yt({deserialize:t=>t.split(" ")});Yt.group=new Yt({deserialize:t=>t.split(" ")});Yt.isolate=new Yt({deserialize:t=>{if(t&&t!="rtl"&&t!="ltr"&&t!="auto")throw new RangeError("Invalid value for isolate: "+t);return t||"auto"}});Yt.contextHash=new Yt({perNode:!0});Yt.lookAhead=new Yt({perNode:!0});Yt.mounted=new Yt({perNode:!0});class $1{constructor(e,n,r){this.tree=e,this.overlay=n,this.parser=r}static get(e){return e&&e.props&&e.props[Yt.mounted.id]}}const mae=Object.create(null);class qs{constructor(e,n,r,s=0){this.name=e,this.props=n,this.id=r,this.flags=s}static define(e){let n=e.props&&e.props.length?Object.create(null):mae,r=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),s=new qs(e.name||"",n,e.id,r);if(e.props){for(let i of e.props)if(Array.isArray(i)||(i=i(s)),i){if(i[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");n[i[0].id]=i[1]}}return s}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let n=this.prop(Yt.group);return n?n.indexOf(e)>-1:!1}return this.id==e}static match(e){let n=Object.create(null);for(let r in e)for(let s of r.split(" "))n[s]=e[r];return r=>{for(let s=r.prop(Yt.group),i=-1;i<(s?s.length:0);i++){let a=n[i<0?r.name:s[i]];if(a)return a}}}}qs.none=new qs("",Object.create(null),0,8);class Jv{constructor(e){this.types=e;for(let n=0;n0;for(let c=this.cursor(a|Jr.IncludeAnonymous);;){let h=!1;if(c.from<=i&&c.to>=s&&(!o&&c.type.isAnonymous||n(c)!==!1)){if(c.firstChild())continue;h=!0}for(;h&&r&&(o||!c.type.isAnonymous)&&r(c),!c.nextSibling();){if(!c.parent())return;h=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let n in this.props)e.push([+n,this.props[n]]);return e}balance(e={}){return this.children.length<=8?this:H6(qs.none,this.children,this.positions,0,this.children.length,0,this.length,(n,r,s)=>new Xn(this.type,n,r,s,this.propValues),e.makeTree||((n,r,s)=>new Xn(qs.none,n,r,s)))}static build(e){return vae(e)}}Xn.empty=new Xn(qs.none,[],[],0);class $6{constructor(e,n){this.buffer=e,this.index=n}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new $6(this.buffer,this.index)}}class Sc{constructor(e,n,r){this.buffer=e,this.length=n,this.set=r}get type(){return qs.none}toString(){let e=[];for(let n=0;n0));c=a[c+3]);return o}slice(e,n,r){let s=this.buffer,i=new Uint16Array(n-e),a=0;for(let o=e,c=0;o=e&&ne;case 1:return n<=e&&r>e;case 2:return r>e;case 4:return!0}}function e0(t,e,n,r){for(var s;t.from==t.to||(n<1?t.from>=e:t.from>e)||(n>-1?t.to<=e:t.to0?o.length:-1;e!=h;e+=n){let f=o[e],m=c[e]+a.from;if(bB(s,r,m,m+f.length)){if(f instanceof Sc){if(i&Jr.ExcludeBuffers)continue;let g=f.findChild(0,f.buffer.length,n,r-m,s);if(g>-1)return new nl(new pae(a,f,e,m),null,g)}else if(i&Jr.IncludeAnonymous||!f.type.isAnonymous||Q6(f)){let g;if(!(i&Jr.IgnoreMounts)&&(g=$1.get(f))&&!g.overlay)return new ai(g.tree,m,e,a);let x=new ai(f,m,e,a);return i&Jr.IncludeAnonymous||!x.type.isAnonymous?x:x.nextChild(n<0?f.children.length-1:0,n,r,s)}}}if(i&Jr.IncludeAnonymous||!a.type.isAnonymous||(a.index>=0?e=a.index+n:e=n<0?-1:a._parent._tree.children.length,a=a._parent,!a))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}enter(e,n,r=0){let s;if(!(r&Jr.IgnoreOverlays)&&(s=$1.get(this._tree))&&s.overlay){let i=e-this.from;for(let{from:a,to:o}of s.overlay)if((n>0?a<=i:a=i:o>i))return new ai(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,n,r)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function _T(t,e,n,r){let s=t.cursor(),i=[];if(!s.firstChild())return i;if(n!=null){for(let a=!1;!a;)if(a=s.type.is(n),!s.nextSibling())return i}for(;;){if(r!=null&&s.type.is(r))return i;if(s.type.is(e)&&i.push(s.node),!s.nextSibling())return r==null?i:[]}}function RS(t,e,n=e.length-1){for(let r=t;n>=0;r=r.parent){if(!r)return!1;if(!r.type.isAnonymous){if(e[n]&&e[n]!=r.name)return!1;n--}}return!0}class pae{constructor(e,n,r,s){this.parent=e,this.buffer=n,this.index=r,this.start=s}}class nl extends wB{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,n,r){super(),this.context=e,this._parent=n,this.index=r,this.type=e.buffer.set.types[e.buffer.buffer[r]]}child(e,n,r){let{buffer:s}=this.context,i=s.findChild(this.index+4,s.buffer[this.index+3],e,n-this.context.start,r);return i<0?null:new nl(this.context,this,i)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,n,r=0){if(r&Jr.ExcludeBuffers)return null;let{buffer:s}=this.context,i=s.findChild(this.index+4,s.buffer[this.index+3],n>0?1:-1,e-this.context.start,n);return i<0?null:new nl(this.context,this,i)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,n=e.buffer[this.index+3];return n<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new nl(this.context,this._parent,n):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,n=this._parent?this._parent.index+4:0;return this.index==n?this.externalSibling(-1):new nl(this.context,this._parent,e.findChild(n,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],n=[],{buffer:r}=this.context,s=this.index+4,i=r.buffer[this.index+3];if(i>s){let a=r.buffer[this.index+1];e.push(r.slice(s,i,a)),n.push(0)}return new Xn(this.type,e,n,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function SB(t){if(!t.length)return null;let e=0,n=t[0];for(let i=1;in.from||a.to=e){let o=new ai(a.tree,a.overlay[0].from+i.from,-1,i);(s||(s=[r])).push(e0(o,e,n,!1))}}return s?SB(s):r}class DS{get name(){return this.type.name}constructor(e,n=0){if(this.mode=n,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,e instanceof ai)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let r=e._parent;r;r=r._parent)this.stack.unshift(r.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,n){this.index=e;let{start:r,buffer:s}=this.buffer;return this.type=n||s.set.types[s.buffer[e]],this.from=r+s.buffer[e+1],this.to=r+s.buffer[e+2],!0}yield(e){return e?e instanceof ai?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,n,r){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,n,r,this.mode));let{buffer:s}=this.buffer,i=s.findChild(this.index+4,s.buffer[this.index+3],e,n-this.buffer.start,r);return i<0?!1:(this.stack.push(this.index),this.yieldBuf(i))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,n,r=this.mode){return this.buffer?r&Jr.ExcludeBuffers?!1:this.enterChild(1,e,n):this.yield(this._tree.enter(e,n,r))}parent(){if(!this.buffer)return this.yieldNode(this.mode&Jr.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&Jr.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:n}=this.buffer,r=this.stack.length-1;if(e<0){let s=r<0?0:this.stack[r]+4;if(this.index!=s)return this.yieldBuf(n.findChild(s,this.index,-1,0,4))}else{let s=n.buffer[this.index+3];if(s<(r<0?n.buffer.length:n.buffer[this.stack[r]+3]))return this.yieldBuf(s)}return r<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let n,r,{buffer:s}=this;if(s){if(e>0){if(this.index-1)for(let i=n+e,a=e<0?-1:r._tree.children.length;i!=a;i+=e){let o=r._tree.children[i];if(this.mode&Jr.IncludeAnonymous||o instanceof Sc||!o.type.isAnonymous||Q6(o))return!1}return!0}move(e,n){if(n&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,n=0){for(;(this.from==this.to||(n<1?this.from>=e:this.from>e)||(n>-1?this.to<=e:this.to=0;){for(let a=e;a;a=a._parent)if(a.index==s){if(s==this.index)return a;n=a,r=i+1;break e}s=this.stack[--i]}for(let s=r;s=0;i--){if(i<0)return RS(this._tree,e,s);let a=r[n.buffer[this.stack[i]]];if(!a.isAnonymous){if(e[s]&&e[s]!=a.name)return!1;s--}}return!0}}function Q6(t){return t.children.some(e=>e instanceof Sc||!e.type.isAnonymous||Q6(e))}function vae(t){var e;let{buffer:n,nodeSet:r,maxBufferLength:s=yB,reused:i=[],minRepeatType:a=r.types.length}=t,o=Array.isArray(n)?new $6(n,n.length):n,c=r.types,h=0,f=0;function m(_,E,M,L,P,I){let{id:Q,start:U,end:ee,size:z}=o,H=f,B=h;if(z<0)if(o.next(),z==-1){let se=i[Q];M.push(se),L.push(U-_);return}else if(z==-3){h=Q;return}else if(z==-4){f=Q;return}else throw new RangeError(`Unrecognized record size: ${z}`);let X=c[Q],J,G,R=U-_;if(ee-U<=s&&(G=S(o.pos-E,P))){let se=new Uint16Array(G.size-G.skip),W=o.pos-G.size,F=se.length;for(;o.pos>W;)F=k(G.start,se,F);J=new Sc(se,ee-G.start,r),R=G.start-_}else{let se=o.pos-z;o.next();let W=[],F=[],V=Q>=a?Q:-1,te=0,ne=ee;for(;o.pos>se;)V>=0&&o.id==V&&o.size>=0?(o.end<=ne-s&&(y(W,F,U,te,o.end,ne,V,H,B),te=W.length,ne=o.end),o.next()):I>2500?g(U,se,W,F):m(U,se,W,F,V,I+1);if(V>=0&&te>0&&te-1&&te>0){let K=x(X,B);J=H6(X,W,F,0,W.length,0,ee-U,K,K)}else J=w(X,W,F,ee-U,H-ee,B)}M.push(J),L.push(R)}function g(_,E,M,L){let P=[],I=0,Q=-1;for(;o.pos>E;){let{id:U,start:ee,end:z,size:H}=o;if(H>4)o.next();else{if(Q>-1&&ee=0;z-=3)U[H++]=P[z],U[H++]=P[z+1]-ee,U[H++]=P[z+2]-ee,U[H++]=H;M.push(new Sc(U,P[2]-ee,r)),L.push(ee-_)}}function x(_,E){return(M,L,P)=>{let I=0,Q=M.length-1,U,ee;if(Q>=0&&(U=M[Q])instanceof Xn){if(!Q&&U.type==_&&U.length==P)return U;(ee=U.prop(Yt.lookAhead))&&(I=L[Q]+U.length+ee)}return w(_,M,L,P,I,E)}}function y(_,E,M,L,P,I,Q,U,ee){let z=[],H=[];for(;_.length>L;)z.push(_.pop()),H.push(E.pop()+M-P);_.push(w(r.types[Q],z,H,I-P,U-I,ee)),E.push(P-M)}function w(_,E,M,L,P,I,Q){if(I){let U=[Yt.contextHash,I];Q=Q?[U].concat(Q):[U]}if(P>25){let U=[Yt.lookAhead,P];Q=Q?[U].concat(Q):[U]}return new Xn(_,E,M,L,Q)}function S(_,E){let M=o.fork(),L=0,P=0,I=0,Q=M.end-s,U={size:0,start:0,skip:0};e:for(let ee=M.pos-_;M.pos>ee;){let z=M.size;if(M.id==E&&z>=0){U.size=L,U.start=P,U.skip=I,I+=4,L+=4,M.next();continue}let H=M.pos-z;if(z<0||H=a?4:0,X=M.start;for(M.next();M.pos>H;){if(M.size<0)if(M.size==-3)B+=4;else break e;else M.id>=a&&(B+=4);M.next()}P=X,L+=z,I+=B}return(E<0||L==_)&&(U.size=L,U.start=P,U.skip=I),U.size>4?U:void 0}function k(_,E,M){let{id:L,start:P,end:I,size:Q}=o;if(o.next(),Q>=0&&L4){let ee=o.pos-(Q-4);for(;o.pos>ee;)M=k(_,E,M)}E[--M]=U,E[--M]=I-_,E[--M]=P-_,E[--M]=L}else Q==-3?h=L:Q==-4&&(f=L);return M}let N=[],C=[];for(;o.pos>0;)m(t.start||0,t.bufferStart||0,N,C,-1,0);let T=(e=t.length)!==null&&e!==void 0?e:N.length?C[0]+N[0].length:0;return new Xn(c[t.topID],N.reverse(),C.reverse(),T)}const MT=new WeakMap;function d1(t,e){if(!t.isAnonymous||e instanceof Sc||e.type!=t)return 1;let n=MT.get(e);if(n==null){n=1;for(let r of e.children){if(r.type!=t||!(r instanceof Xn)){n=1;break}n+=d1(t,r)}MT.set(e,n)}return n}function H6(t,e,n,r,s,i,a,o,c){let h=0;for(let y=r;y=f)break;E+=M}if(C==T+1){if(E>f){let M=y[T];x(M.children,M.positions,0,M.children.length,w[T]+N);continue}m.push(y[T])}else{let M=w[C-1]+y[C-1].length-_;m.push(H6(t,y,w,T,C,_,M,null,c))}g.push(_+N-i)}}return x(e,n,r,s,0),(o||c)(m,g,a)}class yae{constructor(){this.map=new WeakMap}setBuffer(e,n,r){let s=this.map.get(e);s||this.map.set(e,s=new Map),s.set(n,r)}getBuffer(e,n){let r=this.map.get(e);return r&&r.get(n)}set(e,n){e instanceof nl?this.setBuffer(e.context.buffer,e.index,n):e instanceof ai&&this.map.set(e.tree,n)}get(e){return e instanceof nl?this.getBuffer(e.context.buffer,e.index):e instanceof ai?this.map.get(e.tree):void 0}cursorSet(e,n){e.buffer?this.setBuffer(e.buffer.buffer,e.index,n):this.map.set(e.tree,n)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}}class ju{constructor(e,n,r,s,i=!1,a=!1){this.from=e,this.to=n,this.tree=r,this.offset=s,this.open=(i?1:0)|(a?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,n=[],r=!1){let s=[new ju(0,e.length,e,0,!1,r)];for(let i of n)i.to>e.length&&s.push(i);return s}static applyChanges(e,n,r=128){if(!n.length)return e;let s=[],i=1,a=e.length?e[0]:null;for(let o=0,c=0,h=0;;o++){let f=o=r)for(;a&&a.from=g.from||m<=g.to||h){let x=Math.max(g.from,c)-h,y=Math.min(g.to,m)-h;g=x>=y?null:new ju(x,y,g.tree,g.offset+h,o>0,!!f)}if(g&&s.push(g),a.to>m)break;a=inew Ew(s.from,s.to)):[new Ew(0,0)]:[new Ew(0,e.length)],this.createParse(e,n||[],r)}parse(e,n,r){let s=this.startParse(e,n,r);for(;;){let i=s.advance();if(i)return i}}};class bae{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,n){return this.string.slice(e,n)}}new Yt({perNode:!0});let wae=0;class Xi{constructor(e,n,r,s){this.name=e,this.set=n,this.base=r,this.modified=s,this.id=wae++}toString(){let{name:e}=this;for(let n of this.modified)n.name&&(e=`${n.name}(${e})`);return e}static define(e,n){let r=typeof e=="string"?e:"?";if(e instanceof Xi&&(n=e),n?.base)throw new Error("Can not derive from a modified tag");let s=new Xi(r,[],null,[]);if(s.set.push(s),n)for(let i of n.set)s.set.push(i);return s}static defineModifier(e){let n=new Q1(e);return r=>r.modified.indexOf(n)>-1?r:Q1.get(r.base||r,r.modified.concat(n).sort((s,i)=>s.id-i.id))}}let Sae=0;class Q1{constructor(e){this.name=e,this.instances=[],this.id=Sae++}static get(e,n){if(!n.length)return e;let r=n[0].instances.find(o=>o.base==e&&kae(n,o.modified));if(r)return r;let s=[],i=new Xi(e.name,s,e,n);for(let o of n)o.instances.push(i);let a=jae(n);for(let o of e.set)if(!o.modified.length)for(let c of a)s.push(Q1.get(o,c));return i}}function kae(t,e){return t.length==e.length&&t.every((n,r)=>n==e[r])}function jae(t){let e=[[]];for(let n=0;nr.length-n.length)}function U6(t){let e=Object.create(null);for(let n in t){let r=t[n];Array.isArray(r)||(r=[r]);for(let s of n.split(" "))if(s){let i=[],a=2,o=s;for(let m=0;;){if(o=="..."&&m>0&&m+3==s.length){a=1;break}let g=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(o);if(!g)throw new RangeError("Invalid path: "+s);if(i.push(g[0]=="*"?"":g[0][0]=='"'?JSON.parse(g[0]):g[0]),m+=g[0].length,m==s.length)break;let x=s[m++];if(m==s.length&&x=="!"){a=0;break}if(x!="/")throw new RangeError("Invalid path: "+s);o=s.slice(m)}let c=i.length-1,h=i[c];if(!h)throw new RangeError("Invalid path: "+s);let f=new t0(r,a,c>0?i.slice(0,c):null);e[h]=f.sort(e[h])}}return kB.add(e)}const kB=new Yt({combine(t,e){let n,r,s;for(;t||e;){if(!t||e&&t.depth>=e.depth?(s=e,e=e.next):(s=t,t=t.next),n&&n.mode==s.mode&&!s.context&&!n.context)continue;let i=new t0(s.tags,s.mode,s.context);n?n.next=i:r=i,n=i}return r}});class t0{constructor(e,n,r,s){this.tags=e,this.mode=n,this.context=r,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth{let a=s;for(let o of i)for(let c of o.set){let h=n[c.id];if(h){a=a?a+" "+h:h;break}}return a},scope:r}}function Oae(t,e){let n=null;for(let r of t){let s=r.style(e);s&&(n=n?n+" "+s:s)}return n}function Nae(t,e,n,r=0,s=t.length){let i=new Cae(r,Array.isArray(e)?e:[e],n);i.highlightRange(t.cursor(),r,s,"",i.highlighters),i.flush(s)}class Cae{constructor(e,n,r){this.at=e,this.highlighters=n,this.span=r,this.class=""}startSpan(e,n){n!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=n)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,n,r,s,i){let{type:a,from:o,to:c}=e;if(o>=r||c<=n)return;a.isTop&&(i=this.highlighters.filter(x=>!x.scope||x.scope(a)));let h=s,f=Tae(e)||t0.empty,m=Oae(i,f.tags);if(m&&(h&&(h+=" "),h+=m,f.mode==1&&(s+=(s?" ":"")+m)),this.startSpan(Math.max(n,o),h),f.opaque)return;let g=e.tree&&e.tree.prop(Yt.mounted);if(g&&g.overlay){let x=e.node.enter(g.overlay[0].from+o,1),y=this.highlighters.filter(S=>!S.scope||S.scope(g.tree.type)),w=e.firstChild();for(let S=0,k=o;;S++){let N=S=C||!e.nextSibling())););if(!N||C>r)break;k=N.to+o,k>n&&(this.highlightRange(x.cursor(),Math.max(n,N.from+o),Math.min(r,k),"",y),this.startSpan(Math.min(r,k),h))}w&&e.parent()}else if(e.firstChild()){g&&(s="");do if(!(e.to<=n)){if(e.from>=r)break;this.highlightRange(e,n,r,s,i),this.startSpan(Math.min(r,e.to),h)}while(e.nextSibling());e.parent()}}}function Tae(t){let e=t.type.prop(kB);for(;e&&e.context&&!t.matchContext(e.context);)e=e.next;return e||null}const Ye=Xi.define,fx=Ye(),ic=Ye(),AT=Ye(ic),RT=Ye(ic),ac=Ye(),mx=Ye(ac),_w=Ye(ac),Ga=Ye(),su=Ye(Ga),Ua=Ye(),Wa=Ye(),zS=Ye(),em=Ye(zS),px=Ye(),xe={comment:fx,lineComment:Ye(fx),blockComment:Ye(fx),docComment:Ye(fx),name:ic,variableName:Ye(ic),typeName:AT,tagName:Ye(AT),propertyName:RT,attributeName:Ye(RT),className:Ye(ic),labelName:Ye(ic),namespace:Ye(ic),macroName:Ye(ic),literal:ac,string:mx,docString:Ye(mx),character:Ye(mx),attributeValue:Ye(mx),number:_w,integer:Ye(_w),float:Ye(_w),bool:Ye(ac),regexp:Ye(ac),escape:Ye(ac),color:Ye(ac),url:Ye(ac),keyword:Ua,self:Ye(Ua),null:Ye(Ua),atom:Ye(Ua),unit:Ye(Ua),modifier:Ye(Ua),operatorKeyword:Ye(Ua),controlKeyword:Ye(Ua),definitionKeyword:Ye(Ua),moduleKeyword:Ye(Ua),operator:Wa,derefOperator:Ye(Wa),arithmeticOperator:Ye(Wa),logicOperator:Ye(Wa),bitwiseOperator:Ye(Wa),compareOperator:Ye(Wa),updateOperator:Ye(Wa),definitionOperator:Ye(Wa),typeOperator:Ye(Wa),controlOperator:Ye(Wa),punctuation:zS,separator:Ye(zS),bracket:em,angleBracket:Ye(em),squareBracket:Ye(em),paren:Ye(em),brace:Ye(em),content:Ga,heading:su,heading1:Ye(su),heading2:Ye(su),heading3:Ye(su),heading4:Ye(su),heading5:Ye(su),heading6:Ye(su),contentSeparator:Ye(Ga),list:Ye(Ga),quote:Ye(Ga),emphasis:Ye(Ga),strong:Ye(Ga),link:Ye(Ga),monospace:Ye(Ga),strikethrough:Ye(Ga),inserted:Ye(),deleted:Ye(),changed:Ye(),invalid:Ye(),meta:px,documentMeta:Ye(px),annotation:Ye(px),processingInstruction:Ye(px),definition:Xi.defineModifier("definition"),constant:Xi.defineModifier("constant"),function:Xi.defineModifier("function"),standard:Xi.defineModifier("standard"),local:Xi.defineModifier("local"),special:Xi.defineModifier("special")};for(let t in xe){let e=xe[t];e instanceof Xi&&(e.name=t)}jB([{tag:xe.link,class:"tok-link"},{tag:xe.heading,class:"tok-heading"},{tag:xe.emphasis,class:"tok-emphasis"},{tag:xe.strong,class:"tok-strong"},{tag:xe.keyword,class:"tok-keyword"},{tag:xe.atom,class:"tok-atom"},{tag:xe.bool,class:"tok-bool"},{tag:xe.url,class:"tok-url"},{tag:xe.labelName,class:"tok-labelName"},{tag:xe.inserted,class:"tok-inserted"},{tag:xe.deleted,class:"tok-deleted"},{tag:xe.literal,class:"tok-literal"},{tag:xe.string,class:"tok-string"},{tag:xe.number,class:"tok-number"},{tag:[xe.regexp,xe.escape,xe.special(xe.string)],class:"tok-string2"},{tag:xe.variableName,class:"tok-variableName"},{tag:xe.local(xe.variableName),class:"tok-variableName tok-local"},{tag:xe.definition(xe.variableName),class:"tok-variableName tok-definition"},{tag:xe.special(xe.variableName),class:"tok-variableName2"},{tag:xe.definition(xe.propertyName),class:"tok-propertyName tok-definition"},{tag:xe.typeName,class:"tok-typeName"},{tag:xe.namespace,class:"tok-namespace"},{tag:xe.className,class:"tok-className"},{tag:xe.macroName,class:"tok-macroName"},{tag:xe.propertyName,class:"tok-propertyName"},{tag:xe.operator,class:"tok-operator"},{tag:xe.comment,class:"tok-comment"},{tag:xe.meta,class:"tok-meta"},{tag:xe.invalid,class:"tok-invalid"},{tag:xe.punctuation,class:"tok-punctuation"}]);var Mw;const gu=new Yt;function OB(t){return nt.define({combine:t?e=>e.concat(t):void 0})}const Eae=new Yt;class Zi{constructor(e,n,r=[],s=""){this.data=e,this.name=s,dn.prototype.hasOwnProperty("tree")||Object.defineProperty(dn.prototype,"tree",{get(){return ls(this)}}),this.parser=n,this.extension=[kc.of(this),dn.languageData.of((i,a,o)=>{let c=DT(i,a,o),h=c.type.prop(gu);if(!h)return[];let f=i.facet(h),m=c.type.prop(Eae);if(m){let g=c.resolve(a-c.from,o);for(let x of m)if(x.test(g,i)){let y=i.facet(x.facet);return x.type=="replace"?y:y.concat(f)}}return f})].concat(r)}isActiveAt(e,n,r=-1){return DT(e,n,r).type.prop(gu)==this.data}findRegions(e){let n=e.facet(kc);if(n?.data==this.data)return[{from:0,to:e.doc.length}];if(!n||!n.allowsNesting)return[];let r=[],s=(i,a)=>{if(i.prop(gu)==this.data){r.push({from:a,to:a+i.length});return}let o=i.prop(Yt.mounted);if(o){if(o.tree.prop(gu)==this.data){if(o.overlay)for(let c of o.overlay)r.push({from:c.from+a,to:c.to+a});else r.push({from:a,to:a+i.length});return}else if(o.overlay){let c=r.length;if(s(o.tree,o.overlay[0].from+a),r.length>c)return}}for(let c=0;cr.isTop?n:void 0)]}),e.name)}configure(e,n){return new n0(this.data,this.parser.configure(e),n||this.name)}get allowsNesting(){return this.parser.hasWrappers()}}function ls(t){let e=t.field(Zi.state,!1);return e?e.tree:Xn.empty}class _ae{constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,n){let r=this.cursorPos-this.string.length;return e=this.cursorPos?this.doc.sliceString(e,n):this.string.slice(e-r,n-r)}}let tm=null;class kh{constructor(e,n,r=[],s,i,a,o,c){this.parser=e,this.state=n,this.fragments=r,this.tree=s,this.treeLen=i,this.viewport=a,this.skipped=o,this.scheduleOn=c,this.parse=null,this.tempSkipped=[]}static create(e,n,r){return new kh(e,n,[],Xn.empty,0,r,[],null)}startParse(){return this.parser.startParse(new _ae(this.state.doc),this.fragments)}work(e,n){return n!=null&&n>=this.state.doc.length&&(n=void 0),this.tree!=Xn.empty&&this.isDone(n??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var r;if(typeof e=="number"){let s=Date.now()+e;e=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),n!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>n)&&n=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(n=this.parse.advance()););}),this.treeLen=e,this.tree=n,this.fragments=this.withoutTempSkipped(ju.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let n=tm;tm=this;try{return e()}finally{tm=n}}withoutTempSkipped(e){for(let n;n=this.tempSkipped.pop();)e=zT(e,n.from,n.to);return e}changes(e,n){let{fragments:r,tree:s,treeLen:i,viewport:a,skipped:o}=this;if(this.takeTree(),!e.empty){let c=[];if(e.iterChangedRanges((h,f,m,g)=>c.push({fromA:h,toA:f,fromB:m,toB:g})),r=ju.applyChanges(r,c),s=Xn.empty,i=0,a={from:e.mapPos(a.from,-1),to:e.mapPos(a.to,1)},this.skipped.length){o=[];for(let h of this.skipped){let f=e.mapPos(h.from,1),m=e.mapPos(h.to,-1);fe.from&&(this.fragments=zT(this.fragments,s,i),this.skipped.splice(r--,1))}return this.skipped.length>=n?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,n){this.skipped.push({from:e,to:n})}static getSkippingParser(e){return new class extends V6{createParse(n,r,s){let i=s[0].from,a=s[s.length-1].to;return{parsedPos:i,advance(){let c=tm;if(c){for(let h of s)c.tempSkipped.push(h);e&&(c.scheduleOn=c.scheduleOn?Promise.all([c.scheduleOn,e]):e)}return this.parsedPos=a,new Xn(qs.none,[],[],a-i)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let n=this.fragments;return this.treeLen>=e&&n.length&&n[0].from==0&&n[0].to>=e}static get(){return tm}}function zT(t,e,n){return ju.applyChanges(t,[{fromA:e,toA:n,fromB:e,toB:n}])}class jh{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let n=this.context.changes(e.changes,e.state),r=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),n.viewport.to);return n.work(20,r)||n.takeTree(),new jh(n)}static init(e){let n=Math.min(3e3,e.doc.length),r=kh.create(e.facet(kc).parser,e,{from:0,to:n});return r.work(20,n)||r.takeTree(),new jh(r)}}Zi.state=us.define({create:jh.init,update(t,e){for(let n of e.effects)if(n.is(Zi.setState))return n.value;return e.startState.facet(kc)!=e.state.facet(kc)?jh.init(e.state):t.apply(e)}});let NB=t=>{let e=setTimeout(()=>t(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(NB=t=>{let e=-1,n=setTimeout(()=>{e=requestIdleCallback(t,{timeout:400})},100);return()=>e<0?clearTimeout(n):cancelIdleCallback(e)});const Aw=typeof navigator<"u"&&(!((Mw=navigator.scheduling)===null||Mw===void 0)&&Mw.isInputPending)?()=>navigator.scheduling.isInputPending():null,Mae=_r.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let n=this.view.state.field(Zi.state).context;(n.updateViewport(e.view.viewport)||this.view.viewport.to>n.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(n)}scheduleWork(){if(this.working)return;let{state:e}=this.view,n=e.field(Zi.state);(n.tree!=n.context.tree||!n.context.isDone(e.doc.length))&&(this.working=NB(this.work))}work(e){this.working=null;let n=Date.now();if(this.chunkEnds+1e3,c=i.context.work(()=>Aw&&Aw()||Date.now()>a,s+(o?0:1e5));this.chunkBudget-=Date.now()-n,(c||this.chunkBudget<=0)&&(i.context.takeTree(),this.view.dispatch({effects:Zi.setState.of(new jh(i.context))})),this.chunkBudget>0&&!(c&&!o)&&this.scheduleWork(),this.checkAsyncSchedule(i.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(n=>ni(this.view.state,n)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),kc=nt.define({combine(t){return t.length?t[0]:null},enables:t=>[Zi.state,Mae,Ke.contentAttributes.compute([t],e=>{let n=e.facet(t);return n&&n.name?{"data-language":n.name}:{}})]});class CB{constructor(e,n=[]){this.language=e,this.support=n,this.extension=[e,n]}}const Aae=nt.define(),J0=nt.define({combine:t=>{if(!t.length)return" ";let e=t[0];if(!e||/\S/.test(e)||Array.from(e).some(n=>n!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(t[0]));return e}});function Du(t){let e=t.facet(J0);return e.charCodeAt(0)==9?t.tabSize*e.length:e.length}function r0(t,e){let n="",r=t.tabSize,s=t.facet(J0)[0];if(s==" "){for(;e>=r;)n+=" ",e-=r;s=" "}for(let i=0;i=e?Rae(t,n,e):null}class ey{constructor(e,n={}){this.state=e,this.options=n,this.unit=Du(e)}lineAt(e,n=1){let r=this.state.doc.lineAt(e),{simulateBreak:s,simulateDoubleBreak:i}=this.options;return s!=null&&s>=r.from&&s<=r.to?i&&s==e?{text:"",from:e}:(n<0?s-1&&(i+=a-this.countColumn(r,r.search(/\S|$/))),i}countColumn(e,n=e.length){return Fh(e,this.state.tabSize,n)}lineIndent(e,n=1){let{text:r,from:s}=this.lineAt(e,n),i=this.options.overrideIndentation;if(i){let a=i(s);if(a>-1)return a}return this.countColumn(r,r.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const ty=new Yt;function Rae(t,e,n){let r=e.resolveStack(n),s=e.resolveInner(n,-1).resolve(n,0).enterUnfinishedNodesBefore(n);if(s!=r.node){let i=[];for(let a=s;a&&!(a.fromr.node.to||a.from==r.node.from&&a.type==r.node.type);a=a.parent)i.push(a);for(let a=i.length-1;a>=0;a--)r={node:i[a],next:r}}return TB(r,t,n)}function TB(t,e,n){for(let r=t;r;r=r.next){let s=zae(r.node);if(s)return s(G6.create(e,n,r))}return 0}function Dae(t){return t.pos==t.options.simulateBreak&&t.options.simulateDoubleBreak}function zae(t){let e=t.type.prop(ty);if(e)return e;let n=t.firstChild,r;if(n&&(r=n.type.prop(Yt.closedBy))){let s=t.lastChild,i=s&&r.indexOf(s.name)>-1;return a=>EB(a,!0,1,void 0,i&&!Dae(a)?s.from:void 0)}return t.parent==null?Pae:null}function Pae(){return 0}class G6 extends ey{constructor(e,n,r){super(e.state,e.options),this.base=e,this.pos=n,this.context=r}get node(){return this.context.node}static create(e,n,r){return new G6(e,n,r)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let n=this.state.doc.lineAt(e.from);for(;;){let r=e.resolve(n.from);for(;r.parent&&r.parent.from==r.from;)r=r.parent;if(Lae(r,e))break;n=this.state.doc.lineAt(r.from)}return this.lineIndent(n.from)}continue(){return TB(this.context.next,this.base,this.pos)}}function Lae(t,e){for(let n=e;n;n=n.parent)if(t==n)return!0;return!1}function Iae(t){let e=t.node,n=e.childAfter(e.from),r=e.lastChild;if(!n)return null;let s=t.options.simulateBreak,i=t.state.doc.lineAt(n.from),a=s==null||s<=i.from?i.to:Math.min(i.to,s);for(let o=n.to;;){let c=e.childAfter(o);if(!c||c==r)return null;if(!c.type.isSkipped){if(c.from>=a)return null;let h=/^ */.exec(i.text.slice(n.to-i.from))[0].length;return{from:n.from,to:n.to+h}}o=c.to}}function Rw({closing:t,align:e=!0,units:n=1}){return r=>EB(r,e,n,t)}function EB(t,e,n,r,s){let i=t.textAfter,a=i.match(/^\s*/)[0].length,o=r&&i.slice(a,a+r.length)==r||s==t.pos+a,c=e?Iae(t):null;return c?o?t.column(c.from):t.column(c.to):t.baseIndent+(o?0:t.unit*n)}function PT({except:t,units:e=1}={}){return n=>{let r=t&&t.test(n.textAfter);return n.baseIndent+(r?0:e*n.unit)}}const Bae=200;function qae(){return dn.transactionFilter.of(t=>{if(!t.docChanged||!t.isUserEvent("input.type")&&!t.isUserEvent("input.complete"))return t;let e=t.startState.languageDataAt("indentOnInput",t.startState.selection.main.head);if(!e.length)return t;let n=t.newDoc,{head:r}=t.newSelection.main,s=n.lineAt(r);if(r>s.from+Bae)return t;let i=n.sliceString(s.from,r);if(!e.some(h=>h.test(i)))return t;let{state:a}=t,o=-1,c=[];for(let{head:h}of a.selection.ranges){let f=a.doc.lineAt(h);if(f.from==o)continue;o=f.from;let m=W6(a,f.from);if(m==null)continue;let g=/^\s*/.exec(f.text)[0],x=r0(a,m);g!=x&&c.push({from:f.from,to:f.from+g.length,insert:x})}return c.length?[t,{changes:c,sequential:!0}]:t})}const Fae=nt.define(),X6=new Yt;function _B(t){let e=t.firstChild,n=t.lastChild;return e&&e.ton)continue;if(i&&o.from=e&&h.to>n&&(i=h)}}return i}function Qae(t){let e=t.lastChild;return e&&e.to==t.to&&e.type.isError}function H1(t,e,n){for(let r of t.facet(Fae)){let s=r(t,e,n);if(s)return s}return $ae(t,e,n)}function MB(t,e){let n=e.mapPos(t.from,1),r=e.mapPos(t.to,-1);return n>=r?void 0:{from:n,to:r}}const ny=Lt.define({map:MB}),ep=Lt.define({map:MB});function AB(t){let e=[];for(let{head:n}of t.state.selection.ranges)e.some(r=>r.from<=n&&r.to>=n)||e.push(t.lineBlockAt(n));return e}const zu=us.define({create(){return xt.none},update(t,e){e.isUserEvent("delete")&&e.changes.iterChangedRanges((n,r)=>t=LT(t,n,r)),t=t.map(e.changes);for(let n of e.effects)if(n.is(ny)&&!Hae(t,n.value.from,n.value.to)){let{preparePlaceholder:r}=e.state.facet(zB),s=r?xt.replace({widget:new Kae(r(e.state,n.value))}):IT;t=t.update({add:[s.range(n.value.from,n.value.to)]})}else n.is(ep)&&(t=t.update({filter:(r,s)=>n.value.from!=r||n.value.to!=s,filterFrom:n.value.from,filterTo:n.value.to}));return e.selection&&(t=LT(t,e.selection.main.head)),t},provide:t=>Ke.decorations.from(t),toJSON(t,e){let n=[];return t.between(0,e.doc.length,(r,s)=>{n.push(r,s)}),n},fromJSON(t){if(!Array.isArray(t)||t.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let n=0;n{se&&(r=!0)}),r?t.update({filterFrom:e,filterTo:n,filter:(s,i)=>s>=n||i<=e}):t}function V1(t,e,n){var r;let s=null;return(r=t.field(zu,!1))===null||r===void 0||r.between(e,n,(i,a)=>{(!s||s.from>i)&&(s={from:i,to:a})}),s}function Hae(t,e,n){let r=!1;return t.between(e,e,(s,i)=>{s==e&&i==n&&(r=!0)}),r}function RB(t,e){return t.field(zu,!1)?e:e.concat(Lt.appendConfig.of(PB()))}const Vae=t=>{for(let e of AB(t)){let n=H1(t.state,e.from,e.to);if(n)return t.dispatch({effects:RB(t.state,[ny.of(n),DB(t,n)])}),!0}return!1},Uae=t=>{if(!t.state.field(zu,!1))return!1;let e=[];for(let n of AB(t)){let r=V1(t.state,n.from,n.to);r&&e.push(ep.of(r),DB(t,r,!1))}return e.length&&t.dispatch({effects:e}),e.length>0};function DB(t,e,n=!0){let r=t.state.doc.lineAt(e.from).number,s=t.state.doc.lineAt(e.to).number;return Ke.announce.of(`${t.state.phrase(n?"Folded lines":"Unfolded lines")} ${r} ${t.state.phrase("to")} ${s}.`)}const Wae=t=>{let{state:e}=t,n=[];for(let r=0;r{let e=t.state.field(zu,!1);if(!e||!e.size)return!1;let n=[];return e.between(0,t.state.doc.length,(r,s)=>{n.push(ep.of({from:r,to:s}))}),t.dispatch({effects:n}),!0},Xae=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:Vae},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:Uae},{key:"Ctrl-Alt-[",run:Wae},{key:"Ctrl-Alt-]",run:Gae}],Yae={placeholderDOM:null,preparePlaceholder:null,placeholderText:"…"},zB=nt.define({combine(t){return gl(t,Yae)}});function PB(t){return[zu,ele]}function LB(t,e){let{state:n}=t,r=n.facet(zB),s=a=>{let o=t.lineBlockAt(t.posAtDOM(a.target)),c=V1(t.state,o.from,o.to);c&&t.dispatch({effects:ep.of(c)}),a.preventDefault()};if(r.placeholderDOM)return r.placeholderDOM(t,s,e);let i=document.createElement("span");return i.textContent=r.placeholderText,i.setAttribute("aria-label",n.phrase("folded code")),i.title=n.phrase("unfold"),i.className="cm-foldPlaceholder",i.onclick=s,i}const IT=xt.replace({widget:new class extends xl{toDOM(t){return LB(t,null)}}});class Kae extends xl{constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return LB(e,this.value)}}const Zae={openText:"⌄",closedText:"›",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1};class Dw extends po{constructor(e,n){super(),this.config=e,this.open=n}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let n=document.createElement("span");return n.textContent=this.open?this.config.openText:this.config.closedText,n.title=e.state.phrase(this.open?"Fold line":"Unfold line"),n}}function Jae(t={}){let e={...Zae,...t},n=new Dw(e,!0),r=new Dw(e,!1),s=_r.fromClass(class{constructor(a){this.from=a.viewport.from,this.markers=this.buildMarkers(a)}update(a){(a.docChanged||a.viewportChanged||a.startState.facet(kc)!=a.state.facet(kc)||a.startState.field(zu,!1)!=a.state.field(zu,!1)||ls(a.startState)!=ls(a.state)||e.foldingChanged(a))&&(this.markers=this.buildMarkers(a.view))}buildMarkers(a){let o=new fo;for(let c of a.viewportLineBlocks){let h=V1(a.state,c.from,c.to)?r:H1(a.state,c.from,c.to)?n:null;h&&o.add(c.from,c.from,h)}return o.finish()}}),{domEventHandlers:i}=e;return[s,nae({class:"cm-foldGutter",markers(a){var o;return((o=a.plugin(s))===null||o===void 0?void 0:o.markers)||On.empty},initialSpacer(){return new Dw(e,!1)},domEventHandlers:{...i,click:(a,o,c)=>{if(i.click&&i.click(a,o,c))return!0;let h=V1(a.state,o.from,o.to);if(h)return a.dispatch({effects:ep.of(h)}),!0;let f=H1(a.state,o.from,o.to);return f?(a.dispatch({effects:ny.of(f)}),!0):!1}}}),PB()]}const ele=Ke.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}});class tp{constructor(e,n){this.specs=e;let r;function s(o){let c=yc.newName();return(r||(r=Object.create(null)))["."+c]=o,c}const i=typeof n.all=="string"?n.all:n.all?s(n.all):void 0,a=n.scope;this.scope=a instanceof Zi?o=>o.prop(gu)==a.data:a?o=>o==a:void 0,this.style=jB(e.map(o=>({tag:o.tag,class:o.class||s(Object.assign({},o,{tag:null}))})),{all:i}).style,this.module=r?new yc(r):null,this.themeType=n.themeType}static define(e,n){return new tp(e,n||{})}}const PS=nt.define(),IB=nt.define({combine(t){return t.length?[t[0]]:null}});function zw(t){let e=t.facet(PS);return e.length?e:t.facet(IB)}function BB(t,e){let n=[nle],r;return t instanceof tp&&(t.module&&n.push(Ke.styleModule.of(t.module)),r=t.themeType),e?.fallback?n.push(IB.of(t)):r?n.push(PS.computeN([Ke.darkTheme],s=>s.facet(Ke.darkTheme)==(r=="dark")?[t]:[])):n.push(PS.of(t)),n}class tle{constructor(e){this.markCache=Object.create(null),this.tree=ls(e.state),this.decorations=this.buildDeco(e,zw(e.state)),this.decoratedTo=e.viewport.to}update(e){let n=ls(e.state),r=zw(e.state),s=r!=zw(e.startState),{viewport:i}=e.view,a=e.changes.mapPos(this.decoratedTo,1);n.length=i.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=a):(n!=this.tree||e.viewportChanged||s)&&(this.tree=n,this.decorations=this.buildDeco(e.view,r),this.decoratedTo=i.to)}buildDeco(e,n){if(!n||!this.tree.length)return xt.none;let r=new fo;for(let{from:s,to:i}of e.visibleRanges)Nae(this.tree,n,(a,o,c)=>{r.add(a,o,this.markCache[c]||(this.markCache[c]=xt.mark({class:c})))},s,i);return r.finish()}}const nle=Ac.high(_r.fromClass(tle,{decorations:t=>t.decorations})),rle=tp.define([{tag:xe.meta,color:"#404740"},{tag:xe.link,textDecoration:"underline"},{tag:xe.heading,textDecoration:"underline",fontWeight:"bold"},{tag:xe.emphasis,fontStyle:"italic"},{tag:xe.strong,fontWeight:"bold"},{tag:xe.strikethrough,textDecoration:"line-through"},{tag:xe.keyword,color:"#708"},{tag:[xe.atom,xe.bool,xe.url,xe.contentSeparator,xe.labelName],color:"#219"},{tag:[xe.literal,xe.inserted],color:"#164"},{tag:[xe.string,xe.deleted],color:"#a11"},{tag:[xe.regexp,xe.escape,xe.special(xe.string)],color:"#e40"},{tag:xe.definition(xe.variableName),color:"#00f"},{tag:xe.local(xe.variableName),color:"#30a"},{tag:[xe.typeName,xe.namespace],color:"#085"},{tag:xe.className,color:"#167"},{tag:[xe.special(xe.variableName),xe.macroName],color:"#256"},{tag:xe.definition(xe.propertyName),color:"#00c"},{tag:xe.comment,color:"#940"},{tag:xe.invalid,color:"#f00"}]),sle=Ke.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),qB=1e4,FB="()[]{}",$B=nt.define({combine(t){return gl(t,{afterCursor:!0,brackets:FB,maxScanDistance:qB,renderMatch:lle})}}),ile=xt.mark({class:"cm-matchingBracket"}),ale=xt.mark({class:"cm-nonmatchingBracket"});function lle(t){let e=[],n=t.matched?ile:ale;return e.push(n.range(t.start.from,t.start.to)),t.end&&e.push(n.range(t.end.from,t.end.to)),e}const ole=us.define({create(){return xt.none},update(t,e){if(!e.docChanged&&!e.selection)return t;let n=[],r=e.state.facet($B);for(let s of e.state.selection.ranges){if(!s.empty)continue;let i=rl(e.state,s.head,-1,r)||s.head>0&&rl(e.state,s.head-1,1,r)||r.afterCursor&&(rl(e.state,s.head,1,r)||s.headKe.decorations.from(t)}),cle=[ole,sle];function ule(t={}){return[$B.of(t),cle]}const dle=new Yt;function LS(t,e,n){let r=t.prop(e<0?Yt.openedBy:Yt.closedBy);if(r)return r;if(t.name.length==1){let s=n.indexOf(t.name);if(s>-1&&s%2==(e<0?1:0))return[n[s+e]]}return null}function IS(t){let e=t.type.prop(dle);return e?e(t.node):t}function rl(t,e,n,r={}){let s=r.maxScanDistance||qB,i=r.brackets||FB,a=ls(t),o=a.resolveInner(e,n);for(let c=o;c;c=c.parent){let h=LS(c.type,n,i);if(h&&c.from0?e>=f.from&&ef.from&&e<=f.to))return hle(t,e,n,c,f,h,i)}}return fle(t,e,n,a,o.type,s,i)}function hle(t,e,n,r,s,i,a){let o=r.parent,c={from:s.from,to:s.to},h=0,f=o?.cursor();if(f&&(n<0?f.childBefore(r.from):f.childAfter(r.to)))do if(n<0?f.to<=r.from:f.from>=r.to){if(h==0&&i.indexOf(f.type.name)>-1&&f.from0)return null;let h={from:n<0?e-1:e,to:n>0?e+1:e},f=t.doc.iterRange(e,n>0?t.doc.length:0),m=0;for(let g=0;!f.next().done&&g<=i;){let x=f.value;n<0&&(g+=x.length);let y=e+g*n;for(let w=n>0?0:x.length-1,S=n>0?x.length:-1;w!=S;w+=n){let k=a.indexOf(x[w]);if(!(k<0||r.resolveInner(y+w,1).type!=s))if(k%2==0==n>0)m++;else{if(m==1)return{start:h,end:{from:y+w,to:y+w+1},matched:k>>1==c>>1};m--}}n>0&&(g+=x.length)}return f.done?{start:h,matched:!1}:null}function BT(t,e,n,r=0,s=0){e==null&&(e=t.search(/[^\s\u00a0]/),e==-1&&(e=t.length));let i=s;for(let a=r;a=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.posn}eatSpace(){let e=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e}skipToEnd(){this.pos=this.string.length}skipTo(e){let n=this.string.indexOf(e,this.pos);if(n>-1)return this.pos=n,!0}backUp(e){this.pos-=e}column(){return this.lastColumnPosr?a.toLowerCase():a,i=this.string.substr(this.pos,e.length);return s(i)==s(e)?(n!==!1&&(this.pos+=e.length),!0):null}else{let s=this.string.slice(this.pos).match(e);return s&&s.index>0?null:(s&&n!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}}function mle(t){return{name:t.name||"",token:t.token,blankLine:t.blankLine||(()=>{}),startState:t.startState||(()=>!0),copyState:t.copyState||ple,indent:t.indent||(()=>null),languageData:t.languageData||{},tokenTable:t.tokenTable||Z6,mergeTokens:t.mergeTokens!==!1}}function ple(t){if(typeof t!="object")return t;let e={};for(let n in t){let r=t[n];e[n]=r instanceof Array?r.slice():r}return e}const qT=new WeakMap;class Y6 extends Zi{constructor(e){let n=OB(e.languageData),r=mle(e),s,i=new class extends V6{createParse(a,o,c){return new xle(s,a,o,c)}};super(n,i,[],e.name),this.topNode=ble(n,this),s=this,this.streamParser=r,this.stateAfter=new Yt({perNode:!0}),this.tokenTable=e.tokenTable?new WB(r.tokenTable):yle}static define(e){return new Y6(e)}getIndent(e){let n,{overrideIndentation:r}=e.options;r&&(n=qT.get(e.state),n!=null&&n1e4)return null;for(;i=r&&n+e.length<=s&&e.prop(t.stateAfter);if(i)return{state:t.streamParser.copyState(i),pos:n+e.length};for(let a=e.children.length-1;a>=0;a--){let o=e.children[a],c=n+e.positions[a],h=o instanceof Xn&&c=e.length)return e;!s&&n==0&&e.type==t.topNode&&(s=!0);for(let i=e.children.length-1;i>=0;i--){let a=e.positions[i],o=e.children[i],c;if(an&&K6(t,i.tree,0-i.offset,n,o),h;if(c&&c.pos<=r&&(h=HB(t,i.tree,n+i.offset,c.pos+i.offset,!1)))return{state:c.state,tree:h}}return{state:t.streamParser.startState(s?Du(s):4),tree:Xn.empty}}let xle=class{constructor(e,n,r,s){this.lang=e,this.input=n,this.fragments=r,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let i=kh.get(),a=s[0].from,{state:o,tree:c}=gle(e,r,a,this.to,i?.state);this.state=o,this.parsedPos=this.chunkStart=a+c.length;for(let h=0;hh.from<=i.viewport.from&&h.to>=i.viewport.from)&&(this.state=this.lang.streamParser.startState(Du(i.state)),i.skipUntilInView(this.parsedPos,i.viewport.from),this.parsedPos=i.viewport.from),this.moveRangeIndex()}advance(){let e=kh.get(),n=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),r=Math.min(n,this.chunkStart+512);for(e&&(r=Math.min(r,e.viewport.to));this.parsedPos=n?this.finish():e&&this.parsedPos>=e.viewport.to?(e.skipUntilInView(this.parsedPos,n),this.finish()):null}stopAt(e){this.stoppedAt=e}lineAfter(e){let n=this.input.chunk(e);if(this.input.lineChunks)n==` -`&&(n="");else{let r=n.indexOf(` -`);r>-1&&(n=n.slice(0,r))}return e+n.length<=this.to?n:n.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,n=this.lineAfter(e),r=e+n.length;for(let s=this.rangeIndex;;){let i=this.ranges[s].to;if(i>=r||(n=n.slice(0,i-(r-n.length)),s++,s==this.ranges.length))break;let a=this.ranges[s].from,o=this.lineAfter(a);n+=o,r=a+o.length}return{line:n,end:r}}skipGapsTo(e,n,r){for(;;){let s=this.ranges[this.rangeIndex].to,i=e+n;if(r>0?s>i:s>=i)break;let a=this.ranges[++this.rangeIndex].from;n+=a-s}return n}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(n,s,1),n+=s;let o=this.chunk.length;s=this.skipGapsTo(r,s,-1),r+=s,i+=this.chunk.length-o}let a=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&i==4&&a>=0&&this.chunk[a]==e&&this.chunk[a+2]==n?this.chunk[a+2]=r:this.chunk.push(e,n,r,i),s}parseLine(e){let{line:n,end:r}=this.nextLine(),s=0,{streamParser:i}=this.lang,a=new QB(n,e?e.state.tabSize:4,e?Du(e.state):2);if(a.eol())i.blankLine(this.state,a.indentUnit);else for(;!a.eol();){let o=VB(i.token,a,this.state);if(o&&(s=this.emitToken(this.lang.tokenTable.resolve(o),this.parsedPos+a.start,this.parsedPos+a.pos,s)),a.start>1e4)break}this.parsedPos=r,this.moveRangeIndex(),this.parsedPose.start)return s}throw new Error("Stream parser failed to advance stream.")}const Z6=Object.create(null),s0=[qs.none],vle=new Jv(s0),FT=[],$T=Object.create(null),UB=Object.create(null);for(let[t,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])UB[t]=GB(Z6,e);class WB{constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),UB)}resolve(e){return e?this.table[e]||(this.table[e]=GB(this.extra,e)):0}}const yle=new WB(Z6);function Pw(t,e){FT.indexOf(t)>-1||(FT.push(t),console.warn(e))}function GB(t,e){let n=[];for(let o of e.split(" ")){let c=[];for(let h of o.split(".")){let f=t[h]||xe[h];f?typeof f=="function"?c.length?c=c.map(f):Pw(h,`Modifier ${h} used at start of tag`):c.length?Pw(h,`Tag ${h} used as modifier`):c=Array.isArray(f)?f:[f]:Pw(h,`Unknown highlighting tag ${h}`)}for(let h of c)n.push(h)}if(!n.length)return 0;let r=e.replace(/ /g,"_"),s=r+" "+n.map(o=>o.id),i=$T[s];if(i)return i.id;let a=$T[s]=qs.define({id:s0.length,name:r,props:[U6({[r]:n})]});return s0.push(a),a.id}function ble(t,e){let n=qs.define({id:s0.length,name:"Document",props:[gu.add(()=>t),ty.add(()=>r=>e.getIndent(r))],top:!0});return s0.push(n),n}sr.RTL,sr.LTR;const wle=t=>{let{state:e}=t,n=e.doc.lineAt(e.selection.main.from),r=ej(t.state,n.from);return r.line?Sle(t):r.block?jle(t):!1};function J6(t,e){return({state:n,dispatch:r})=>{if(n.readOnly)return!1;let s=t(e,n);return s?(r(n.update(s)),!0):!1}}const Sle=J6(Cle,0),kle=J6(XB,0),jle=J6((t,e)=>XB(t,e,Nle(e)),0);function ej(t,e){let n=t.languageDataAt("commentTokens",e,1);return n.length?n[0]:{}}const nm=50;function Ole(t,{open:e,close:n},r,s){let i=t.sliceDoc(r-nm,r),a=t.sliceDoc(s,s+nm),o=/\s*$/.exec(i)[0].length,c=/^\s*/.exec(a)[0].length,h=i.length-o;if(i.slice(h-e.length,h)==e&&a.slice(c,c+n.length)==n)return{open:{pos:r-o,margin:o&&1},close:{pos:s+c,margin:c&&1}};let f,m;s-r<=2*nm?f=m=t.sliceDoc(r,s):(f=t.sliceDoc(r,r+nm),m=t.sliceDoc(s-nm,s));let g=/^\s*/.exec(f)[0].length,x=/\s*$/.exec(m)[0].length,y=m.length-x-n.length;return f.slice(g,g+e.length)==e&&m.slice(y,y+n.length)==n?{open:{pos:r+g+e.length,margin:/\s/.test(f.charAt(g+e.length))?1:0},close:{pos:s-x-n.length,margin:/\s/.test(m.charAt(y-1))?1:0}}:null}function Nle(t){let e=[];for(let n of t.selection.ranges){let r=t.doc.lineAt(n.from),s=n.to<=r.to?r:t.doc.lineAt(n.to);s.from>r.from&&s.from==n.to&&(s=n.to==r.to+1?r:t.doc.lineAt(n.to-1));let i=e.length-1;i>=0&&e[i].to>r.from?e[i].to=s.to:e.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:s.to})}return e}function XB(t,e,n=e.selection.ranges){let r=n.map(i=>ej(e,i.from).block);if(!r.every(i=>i))return null;let s=n.map((i,a)=>Ole(e,r[a],i.from,i.to));if(t!=2&&!s.every(i=>i))return{changes:e.changes(n.map((i,a)=>s[a]?[]:[{from:i.from,insert:r[a].open+" "},{from:i.to,insert:" "+r[a].close}]))};if(t!=1&&s.some(i=>i)){let i=[];for(let a=0,o;as&&(i==a||a>m.from)){s=m.from;let g=/^\s*/.exec(m.text)[0].length,x=g==m.length,y=m.text.slice(g,g+h.length)==h?g:-1;gi.comment<0&&(!i.empty||i.single))){let i=[];for(let{line:o,token:c,indent:h,empty:f,single:m}of r)(m||!f)&&i.push({from:o.from+h,insert:c+" "});let a=e.changes(i);return{changes:a,selection:e.selection.map(a,1)}}else if(t!=1&&r.some(i=>i.comment>=0)){let i=[];for(let{line:a,comment:o,token:c}of r)if(o>=0){let h=a.from+o,f=h+c.length;a.text[f-a.from]==" "&&f++,i.push({from:h,to:f})}return{changes:i}}return null}const BS=pl.define(),Tle=pl.define(),Ele=nt.define(),YB=nt.define({combine(t){return gl(t,{minDepth:100,newGroupDelay:500,joinToEvent:(e,n)=>n},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,n)=>(r,s)=>e(r,s)||n(r,s)})}}),KB=us.define({create(){return sl.empty},update(t,e){let n=e.state.facet(YB),r=e.annotation(BS);if(r){let c=ri.fromTransaction(e,r.selection),h=r.side,f=h==0?t.undone:t.done;return c?f=U1(f,f.length,n.minDepth,c):f=eq(f,e.startState.selection),new sl(h==0?r.rest:f,h==0?f:r.rest)}let s=e.annotation(Tle);if((s=="full"||s=="before")&&(t=t.isolate()),e.annotation($r.addToHistory)===!1)return e.changes.empty?t:t.addMapping(e.changes.desc);let i=ri.fromTransaction(e),a=e.annotation($r.time),o=e.annotation($r.userEvent);return i?t=t.addChanges(i,a,o,n,e):e.selection&&(t=t.addSelection(e.startState.selection,a,o,n.newGroupDelay)),(s=="full"||s=="after")&&(t=t.isolate()),t},toJSON(t){return{done:t.done.map(e=>e.toJSON()),undone:t.undone.map(e=>e.toJSON())}},fromJSON(t){return new sl(t.done.map(ri.fromJSON),t.undone.map(ri.fromJSON))}});function _le(t={}){return[KB,YB.of(t),Ke.domEventHandlers({beforeinput(e,n){let r=e.inputType=="historyUndo"?ZB:e.inputType=="historyRedo"?qS:null;return r?(e.preventDefault(),r(n)):!1}})]}function ry(t,e){return function({state:n,dispatch:r}){if(!e&&n.readOnly)return!1;let s=n.field(KB,!1);if(!s)return!1;let i=s.pop(t,n,e);return i?(r(i),!0):!1}}const ZB=ry(0,!1),qS=ry(1,!1),Mle=ry(0,!0),Ale=ry(1,!0);class ri{constructor(e,n,r,s,i){this.changes=e,this.effects=n,this.mapped=r,this.startSelection=s,this.selectionsAfter=i}setSelAfter(e){return new ri(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,n,r;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(n=this.mapped)===null||n===void 0?void 0:n.toJSON(),startSelection:(r=this.startSelection)===null||r===void 0?void 0:r.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(e){return new ri(e.changes&&Kr.fromJSON(e.changes),[],e.mapped&&cl.fromJSON(e.mapped),e.startSelection&&Ae.fromJSON(e.startSelection),e.selectionsAfter.map(Ae.fromJSON))}static fromTransaction(e,n){let r=Ji;for(let s of e.startState.facet(Ele)){let i=s(e);i.length&&(r=r.concat(i))}return!r.length&&e.changes.empty?null:new ri(e.changes.invert(e.startState.doc),r,void 0,n||e.startState.selection,Ji)}static selection(e){return new ri(void 0,Ji,void 0,void 0,e)}}function U1(t,e,n,r){let s=e+1>n+20?e-n-1:0,i=t.slice(s,e);return i.push(r),i}function Rle(t,e){let n=[],r=!1;return t.iterChangedRanges((s,i)=>n.push(s,i)),e.iterChangedRanges((s,i,a,o)=>{for(let c=0;c=h&&a<=f&&(r=!0)}}),r}function Dle(t,e){return t.ranges.length==e.ranges.length&&t.ranges.filter((n,r)=>n.empty!=e.ranges[r].empty).length===0}function JB(t,e){return t.length?e.length?t.concat(e):t:e}const Ji=[],zle=200;function eq(t,e){if(t.length){let n=t[t.length-1],r=n.selectionsAfter.slice(Math.max(0,n.selectionsAfter.length-zle));return r.length&&r[r.length-1].eq(e)?t:(r.push(e),U1(t,t.length-1,1e9,n.setSelAfter(r)))}else return[ri.selection([e])]}function Ple(t){let e=t[t.length-1],n=t.slice();return n[t.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),n}function Lw(t,e){if(!t.length)return t;let n=t.length,r=Ji;for(;n;){let s=Lle(t[n-1],e,r);if(s.changes&&!s.changes.empty||s.effects.length){let i=t.slice(0,n);return i[n-1]=s,i}else e=s.mapped,n--,r=s.selectionsAfter}return r.length?[ri.selection(r)]:Ji}function Lle(t,e,n){let r=JB(t.selectionsAfter.length?t.selectionsAfter.map(o=>o.map(e)):Ji,n);if(!t.changes)return ri.selection(r);let s=t.changes.map(e),i=e.mapDesc(t.changes,!0),a=t.mapped?t.mapped.composeDesc(i):i;return new ri(s,Lt.mapEffects(t.effects,e),a,t.startSelection.map(i),r)}const Ile=/^(input\.type|delete)($|\.)/;class sl{constructor(e,n,r=0,s=void 0){this.done=e,this.undone=n,this.prevTime=r,this.prevUserEvent=s}isolate(){return this.prevTime?new sl(this.done,this.undone):this}addChanges(e,n,r,s,i){let a=this.done,o=a[a.length-1];return o&&o.changes&&!o.changes.empty&&e.changes&&(!r||Ile.test(r))&&(!o.selectionsAfter.length&&n-this.prevTime0&&n-this.prevTimen.empty?t.moveByChar(n,e):sy(n,e))}function Es(t){return t.textDirectionAt(t.state.selection.main.head)==sr.LTR}const nq=t=>tq(t,!Es(t)),rq=t=>tq(t,Es(t));function sq(t,e){return La(t,n=>n.empty?t.moveByGroup(n,e):sy(n,e))}const qle=t=>sq(t,!Es(t)),Fle=t=>sq(t,Es(t));function $le(t,e,n){if(e.type.prop(n))return!0;let r=e.to-e.from;return r&&(r>2||/[^\s,.;:]/.test(t.sliceDoc(e.from,e.to)))||e.firstChild}function iy(t,e,n){let r=ls(t).resolveInner(e.head),s=n?Yt.closedBy:Yt.openedBy;for(let c=e.head;;){let h=n?r.childAfter(c):r.childBefore(c);if(!h)break;$le(t,h,s)?r=h:c=n?h.to:h.from}let i=r.type.prop(s),a,o;return i&&(a=n?rl(t,r.from,1):rl(t,r.to,-1))&&a.matched?o=n?a.end.to:a.end.from:o=n?r.to:r.from,Ae.cursor(o,n?-1:1)}const Qle=t=>La(t,e=>iy(t.state,e,!Es(t))),Hle=t=>La(t,e=>iy(t.state,e,Es(t)));function iq(t,e){return La(t,n=>{if(!n.empty)return sy(n,e);let r=t.moveVertically(n,e);return r.head!=n.head?r:t.moveToLineBoundary(n,e)})}const aq=t=>iq(t,!1),lq=t=>iq(t,!0);function oq(t){let e=t.scrollDOM.clientHeighta.empty?t.moveVertically(a,e,n.height):sy(a,e));if(s.eq(r.selection))return!1;let i;if(n.selfScroll){let a=t.coordsAtPos(r.selection.main.head),o=t.scrollDOM.getBoundingClientRect(),c=o.top+n.marginTop,h=o.bottom-n.marginBottom;a&&a.top>c&&a.bottomcq(t,!1),FS=t=>cq(t,!0);function Rc(t,e,n){let r=t.lineBlockAt(e.head),s=t.moveToLineBoundary(e,n);if(s.head==e.head&&s.head!=(n?r.to:r.from)&&(s=t.moveToLineBoundary(e,n,!1)),!n&&s.head==r.from&&r.length){let i=/^\s*/.exec(t.state.sliceDoc(r.from,Math.min(r.from+100,r.to)))[0].length;i&&e.head!=r.from+i&&(s=Ae.cursor(r.from+i))}return s}const Vle=t=>La(t,e=>Rc(t,e,!0)),Ule=t=>La(t,e=>Rc(t,e,!1)),Wle=t=>La(t,e=>Rc(t,e,!Es(t))),Gle=t=>La(t,e=>Rc(t,e,Es(t))),Xle=t=>La(t,e=>Ae.cursor(t.lineBlockAt(e.head).from,1)),Yle=t=>La(t,e=>Ae.cursor(t.lineBlockAt(e.head).to,-1));function Kle(t,e,n){let r=!1,s=$h(t.selection,i=>{let a=rl(t,i.head,-1)||rl(t,i.head,1)||i.head>0&&rl(t,i.head-1,1)||i.headKle(t,e);function ma(t,e){let n=$h(t.state.selection,r=>{let s=e(r);return Ae.range(r.anchor,s.head,s.goalColumn,s.bidiLevel||void 0)});return n.eq(t.state.selection)?!1:(t.dispatch(Pa(t.state,n)),!0)}function uq(t,e){return ma(t,n=>t.moveByChar(n,e))}const dq=t=>uq(t,!Es(t)),hq=t=>uq(t,Es(t));function fq(t,e){return ma(t,n=>t.moveByGroup(n,e))}const Jle=t=>fq(t,!Es(t)),eoe=t=>fq(t,Es(t)),toe=t=>ma(t,e=>iy(t.state,e,!Es(t))),noe=t=>ma(t,e=>iy(t.state,e,Es(t)));function mq(t,e){return ma(t,n=>t.moveVertically(n,e))}const pq=t=>mq(t,!1),gq=t=>mq(t,!0);function xq(t,e){return ma(t,n=>t.moveVertically(n,e,oq(t).height))}const HT=t=>xq(t,!1),VT=t=>xq(t,!0),roe=t=>ma(t,e=>Rc(t,e,!0)),soe=t=>ma(t,e=>Rc(t,e,!1)),ioe=t=>ma(t,e=>Rc(t,e,!Es(t))),aoe=t=>ma(t,e=>Rc(t,e,Es(t))),loe=t=>ma(t,e=>Ae.cursor(t.lineBlockAt(e.head).from)),ooe=t=>ma(t,e=>Ae.cursor(t.lineBlockAt(e.head).to)),UT=({state:t,dispatch:e})=>(e(Pa(t,{anchor:0})),!0),WT=({state:t,dispatch:e})=>(e(Pa(t,{anchor:t.doc.length})),!0),GT=({state:t,dispatch:e})=>(e(Pa(t,{anchor:t.selection.main.anchor,head:0})),!0),XT=({state:t,dispatch:e})=>(e(Pa(t,{anchor:t.selection.main.anchor,head:t.doc.length})),!0),coe=({state:t,dispatch:e})=>(e(t.update({selection:{anchor:0,head:t.doc.length},userEvent:"select"})),!0),uoe=({state:t,dispatch:e})=>{let n=ay(t).map(({from:r,to:s})=>Ae.range(r,Math.min(s+1,t.doc.length)));return e(t.update({selection:Ae.create(n),userEvent:"select"})),!0},doe=({state:t,dispatch:e})=>{let n=$h(t.selection,r=>{let s=ls(t),i=s.resolveStack(r.from,1);if(r.empty){let a=s.resolveStack(r.from,-1);a.node.from>=i.node.from&&a.node.to<=i.node.to&&(i=a)}for(let a=i;a;a=a.next){let{node:o}=a;if((o.from=r.to||o.to>r.to&&o.from<=r.from)&&a.next)return Ae.range(o.to,o.from)}return r});return n.eq(t.selection)?!1:(e(Pa(t,n)),!0)};function vq(t,e){let{state:n}=t,r=n.selection,s=n.selection.ranges.slice();for(let i of n.selection.ranges){let a=n.doc.lineAt(i.head);if(e?a.to0)for(let o=i;;){let c=t.moveVertically(o,e);if(c.heada.to){s.some(h=>h.head==c.head)||s.push(c);break}else{if(c.head==o.head)break;o=c}}}return s.length==r.ranges.length?!1:(t.dispatch(Pa(n,Ae.create(s,s.length-1))),!0)}const hoe=t=>vq(t,!1),foe=t=>vq(t,!0),moe=({state:t,dispatch:e})=>{let n=t.selection,r=null;return n.ranges.length>1?r=Ae.create([n.main]):n.main.empty||(r=Ae.create([Ae.cursor(n.main.head)])),r?(e(Pa(t,r)),!0):!1};function np(t,e){if(t.state.readOnly)return!1;let n="delete.selection",{state:r}=t,s=r.changeByRange(i=>{let{from:a,to:o}=i;if(a==o){let c=e(i);ca&&(n="delete.forward",c=gx(t,c,!0)),a=Math.min(a,c),o=Math.max(o,c)}else a=gx(t,a,!1),o=gx(t,o,!0);return a==o?{range:i}:{changes:{from:a,to:o},range:Ae.cursor(a,as(t)))r.between(e,e,(s,i)=>{se&&(e=n?i:s)});return e}const yq=(t,e,n)=>np(t,r=>{let s=r.from,{state:i}=t,a=i.doc.lineAt(s),o,c;if(n&&!e&&s>a.from&&syq(t,!1,!0),bq=t=>yq(t,!0,!1),wq=(t,e)=>np(t,n=>{let r=n.head,{state:s}=t,i=s.doc.lineAt(r),a=s.charCategorizer(r);for(let o=null;;){if(r==(e?i.to:i.from)){r==n.head&&i.number!=(e?s.doc.lines:1)&&(r+=e?1:-1);break}let c=ys(i.text,r-i.from,e)+i.from,h=i.text.slice(Math.min(r,c)-i.from,Math.max(r,c)-i.from),f=a(h);if(o!=null&&f!=o)break;(h!=" "||r!=n.head)&&(o=f),r=c}return r}),Sq=t=>wq(t,!1),poe=t=>wq(t,!0),goe=t=>np(t,e=>{let n=t.lineBlockAt(e.head).to;return e.headnp(t,e=>{let n=t.moveToLineBoundary(e,!1).head;return e.head>n?n:Math.max(0,e.head-1)}),voe=t=>np(t,e=>{let n=t.moveToLineBoundary(e,!0).head;return e.head{if(t.readOnly)return!1;let n=t.changeByRange(r=>({changes:{from:r.from,to:r.to,insert:pn.of(["",""])},range:Ae.cursor(r.from)}));return e(t.update(n,{scrollIntoView:!0,userEvent:"input"})),!0},boe=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let n=t.changeByRange(r=>{if(!r.empty||r.from==0||r.from==t.doc.length)return{range:r};let s=r.from,i=t.doc.lineAt(s),a=s==i.from?s-1:ys(i.text,s-i.from,!1)+i.from,o=s==i.to?s+1:ys(i.text,s-i.from,!0)+i.from;return{changes:{from:a,to:o,insert:t.doc.slice(s,o).append(t.doc.slice(a,s))},range:Ae.cursor(o)}});return n.changes.empty?!1:(e(t.update(n,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function ay(t){let e=[],n=-1;for(let r of t.selection.ranges){let s=t.doc.lineAt(r.from),i=t.doc.lineAt(r.to);if(!r.empty&&r.to==i.from&&(i=t.doc.lineAt(r.to-1)),n>=s.number){let a=e[e.length-1];a.to=i.to,a.ranges.push(r)}else e.push({from:s.from,to:i.to,ranges:[r]});n=i.number+1}return e}function kq(t,e,n){if(t.readOnly)return!1;let r=[],s=[];for(let i of ay(t)){if(n?i.to==t.doc.length:i.from==0)continue;let a=t.doc.lineAt(n?i.to+1:i.from-1),o=a.length+1;if(n){r.push({from:i.to,to:a.to},{from:i.from,insert:a.text+t.lineBreak});for(let c of i.ranges)s.push(Ae.range(Math.min(t.doc.length,c.anchor+o),Math.min(t.doc.length,c.head+o)))}else{r.push({from:a.from,to:i.from},{from:i.to,insert:t.lineBreak+a.text});for(let c of i.ranges)s.push(Ae.range(c.anchor-o,c.head-o))}}return r.length?(e(t.update({changes:r,scrollIntoView:!0,selection:Ae.create(s,t.selection.mainIndex),userEvent:"move.line"})),!0):!1}const woe=({state:t,dispatch:e})=>kq(t,e,!1),Soe=({state:t,dispatch:e})=>kq(t,e,!0);function jq(t,e,n){if(t.readOnly)return!1;let r=[];for(let s of ay(t))n?r.push({from:s.from,insert:t.doc.slice(s.from,s.to)+t.lineBreak}):r.push({from:s.to,insert:t.lineBreak+t.doc.slice(s.from,s.to)});return e(t.update({changes:r,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const koe=({state:t,dispatch:e})=>jq(t,e,!1),joe=({state:t,dispatch:e})=>jq(t,e,!0),Ooe=t=>{if(t.state.readOnly)return!1;let{state:e}=t,n=e.changes(ay(e).map(({from:s,to:i})=>(s>0?s--:i{let i;if(t.lineWrapping){let a=t.lineBlockAt(s.head),o=t.coordsAtPos(s.head,s.assoc||1);o&&(i=a.bottom+t.documentTop-o.bottom+t.defaultLineHeight/2)}return t.moveVertically(s,!0,i)}).map(n);return t.dispatch({changes:n,selection:r,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Noe(t,e){if(/\(\)|\[\]|\{\}/.test(t.sliceDoc(e-1,e+1)))return{from:e,to:e};let n=ls(t).resolveInner(e),r=n.childBefore(e),s=n.childAfter(e),i;return r&&s&&r.to<=e&&s.from>=e&&(i=r.type.prop(Yt.closedBy))&&i.indexOf(s.name)>-1&&t.doc.lineAt(r.to).from==t.doc.lineAt(s.from).from&&!/\S/.test(t.sliceDoc(r.to,s.from))?{from:r.to,to:s.from}:null}const YT=Oq(!1),Coe=Oq(!0);function Oq(t){return({state:e,dispatch:n})=>{if(e.readOnly)return!1;let r=e.changeByRange(s=>{let{from:i,to:a}=s,o=e.doc.lineAt(i),c=!t&&i==a&&Noe(e,i);t&&(i=a=(a<=o.to?o:e.doc.lineAt(a)).to);let h=new ey(e,{simulateBreak:i,simulateDoubleBreak:!!c}),f=W6(h,i);for(f==null&&(f=Fh(/^\s*/.exec(e.doc.lineAt(i).text)[0],e.tabSize));ao.from&&i{let s=[];for(let a=r.from;a<=r.to;){let o=t.doc.lineAt(a);o.number>n&&(r.empty||r.to>o.from)&&(e(o,s,r),n=o.number),a=o.to+1}let i=t.changes(s);return{changes:s,range:Ae.range(i.mapPos(r.anchor,1),i.mapPos(r.head,1))}})}const Toe=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let n=Object.create(null),r=new ey(t,{overrideIndentation:i=>{let a=n[i];return a??-1}}),s=tj(t,(i,a,o)=>{let c=W6(r,i.from);if(c==null)return;/\S/.test(i.text)||(c=0);let h=/^\s*/.exec(i.text)[0],f=r0(t,c);(h!=f||o.fromt.readOnly?!1:(e(t.update(tj(t,(n,r)=>{r.push({from:n.from,insert:t.facet(J0)})}),{userEvent:"input.indent"})),!0),Cq=({state:t,dispatch:e})=>t.readOnly?!1:(e(t.update(tj(t,(n,r)=>{let s=/^\s*/.exec(n.text)[0];if(!s)return;let i=Fh(s,t.tabSize),a=0,o=r0(t,Math.max(0,i-Du(t)));for(;a(t.setTabFocusMode(),!0),_oe=[{key:"Ctrl-b",run:nq,shift:dq,preventDefault:!0},{key:"Ctrl-f",run:rq,shift:hq},{key:"Ctrl-p",run:aq,shift:pq},{key:"Ctrl-n",run:lq,shift:gq},{key:"Ctrl-a",run:Xle,shift:loe},{key:"Ctrl-e",run:Yle,shift:ooe},{key:"Ctrl-d",run:bq},{key:"Ctrl-h",run:$S},{key:"Ctrl-k",run:goe},{key:"Ctrl-Alt-h",run:Sq},{key:"Ctrl-o",run:yoe},{key:"Ctrl-t",run:boe},{key:"Ctrl-v",run:FS}],Moe=[{key:"ArrowLeft",run:nq,shift:dq,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:qle,shift:Jle,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:Wle,shift:ioe,preventDefault:!0},{key:"ArrowRight",run:rq,shift:hq,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:Fle,shift:eoe,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Gle,shift:aoe,preventDefault:!0},{key:"ArrowUp",run:aq,shift:pq,preventDefault:!0},{mac:"Cmd-ArrowUp",run:UT,shift:GT},{mac:"Ctrl-ArrowUp",run:QT,shift:HT},{key:"ArrowDown",run:lq,shift:gq,preventDefault:!0},{mac:"Cmd-ArrowDown",run:WT,shift:XT},{mac:"Ctrl-ArrowDown",run:FS,shift:VT},{key:"PageUp",run:QT,shift:HT},{key:"PageDown",run:FS,shift:VT},{key:"Home",run:Ule,shift:soe,preventDefault:!0},{key:"Mod-Home",run:UT,shift:GT},{key:"End",run:Vle,shift:roe,preventDefault:!0},{key:"Mod-End",run:WT,shift:XT},{key:"Enter",run:YT,shift:YT},{key:"Mod-a",run:coe},{key:"Backspace",run:$S,shift:$S,preventDefault:!0},{key:"Delete",run:bq,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:Sq,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:poe,preventDefault:!0},{mac:"Mod-Backspace",run:xoe,preventDefault:!0},{mac:"Mod-Delete",run:voe,preventDefault:!0}].concat(_oe.map(t=>({mac:t.key,run:t.run,shift:t.shift}))),Aoe=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:Qle,shift:toe},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:Hle,shift:noe},{key:"Alt-ArrowUp",run:woe},{key:"Shift-Alt-ArrowUp",run:koe},{key:"Alt-ArrowDown",run:Soe},{key:"Shift-Alt-ArrowDown",run:joe},{key:"Mod-Alt-ArrowUp",run:hoe},{key:"Mod-Alt-ArrowDown",run:foe},{key:"Escape",run:moe},{key:"Mod-Enter",run:Coe},{key:"Alt-l",mac:"Ctrl-l",run:uoe},{key:"Mod-i",run:doe,preventDefault:!0},{key:"Mod-[",run:Cq},{key:"Mod-]",run:Nq},{key:"Mod-Alt-\\",run:Toe},{key:"Shift-Mod-k",run:Ooe},{key:"Shift-Mod-\\",run:Zle},{key:"Mod-/",run:wle},{key:"Alt-A",run:kle},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Eoe}].concat(Moe),Roe={key:"Tab",run:Nq,shift:Cq},KT=typeof String.prototype.normalize=="function"?t=>t.normalize("NFKD"):t=>t;class Oh{constructor(e,n,r=0,s=e.length,i,a){this.test=a,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(r,s),this.bufferStart=r,this.normalize=i?o=>i(KT(o)):KT,this.query=this.normalize(n)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return ei(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let n=C6(e),r=this.bufferStart+this.bufferPos;this.bufferPos+=Za(e);let s=this.normalize(n);if(s.length)for(let i=0,a=r;;i++){let o=s.charCodeAt(i),c=this.match(o,a,this.bufferPos+this.bufferStart);if(i==s.length-1){if(c)return this.value=c,this;break}a==r&&ithis.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let n=this.matchPos<=this.to&&this.re.exec(this.curLine);if(n){let r=this.curLineStart+n.index,s=r+n[0].length;if(this.matchPos=W1(this.text,s+(r==s?1:0)),r==this.curLineStart+this.curLine.length&&this.nextLine(),(rthis.value.to)&&(!this.test||this.test(r,s,n)))return this.value={from:r,to:s,match:n},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length=r||s.to<=n){let o=new ih(n,e.sliceString(n,r));return Iw.set(e,o),o}if(s.from==n&&s.to==r)return s;let{text:i,from:a}=s;return a>n&&(i=e.sliceString(n,a)+i,a=n),s.to=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,n=this.re.exec(this.flat.text);if(n&&!n[0]&&n.index==e&&(this.re.lastIndex=e+1,n=this.re.exec(this.flat.text)),n){let r=this.flat.from+n.index,s=r+n[0].length;if((this.flat.to>=this.to||n.index+n[0].length<=this.flat.text.length-10)&&(!this.test||this.test(r,s,n)))return this.value={from:r,to:s,match:n},this.matchPos=W1(this.text,s+(r==s?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=ih.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}typeof Symbol<"u"&&(Eq.prototype[Symbol.iterator]=_q.prototype[Symbol.iterator]=function(){return this});function Doe(t){try{return new RegExp(t,nj),!0}catch{return!1}}function W1(t,e){if(e>=t.length)return e;let n=t.lineAt(e),r;for(;e=56320&&r<57344;)e++;return e}function QS(t){let e=String(t.state.doc.lineAt(t.state.selection.main.head).number),n=Wn("input",{class:"cm-textfield",name:"line",value:e}),r=Wn("form",{class:"cm-gotoLine",onkeydown:i=>{i.keyCode==27?(i.preventDefault(),t.dispatch({effects:Rm.of(!1)}),t.focus()):i.keyCode==13&&(i.preventDefault(),s())},onsubmit:i=>{i.preventDefault(),s()}},Wn("label",t.state.phrase("Go to line"),": ",n)," ",Wn("button",{class:"cm-button",type:"submit"},t.state.phrase("go")),Wn("button",{name:"close",onclick:()=>{t.dispatch({effects:Rm.of(!1)}),t.focus()},"aria-label":t.state.phrase("close"),type:"button"},["×"]));function s(){let i=/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(n.value);if(!i)return;let{state:a}=t,o=a.doc.lineAt(a.selection.main.head),[,c,h,f,m]=i,g=f?+f.slice(1):0,x=h?+h:o.number;if(h&&m){let S=x/100;c&&(S=S*(c=="-"?-1:1)+o.number/a.doc.lines),x=Math.round(a.doc.lines*S)}else h&&c&&(x=x*(c=="-"?-1:1)+o.number);let y=a.doc.line(Math.max(1,Math.min(a.doc.lines,x))),w=Ae.cursor(y.from+Math.max(0,Math.min(g,y.length)));t.dispatch({effects:[Rm.of(!1),Ke.scrollIntoView(w.from,{y:"center"})],selection:w}),t.focus()}return{dom:r}}const Rm=Lt.define(),ZT=us.define({create(){return!0},update(t,e){for(let n of e.effects)n.is(Rm)&&(t=n.value);return t},provide:t=>Jm.from(t,e=>e?QS:null)}),zoe=t=>{let e=Zm(t,QS);if(!e){let n=[Rm.of(!0)];t.state.field(ZT,!1)==null&&n.push(Lt.appendConfig.of([ZT,Poe])),t.dispatch({effects:n}),e=Zm(t,QS)}return e&&e.dom.querySelector("input").select(),!0},Poe=Ke.baseTheme({".cm-panel.cm-gotoLine":{padding:"2px 6px 4px",position:"relative","& label":{fontSize:"80%"},"& [name=close]":{position:"absolute",top:"0",bottom:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:"0"}}}),Loe={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},Ioe=nt.define({combine(t){return gl(t,Loe,{highlightWordAroundCursor:(e,n)=>e||n,minSelectionLength:Math.min,maxMatches:Math.min})}});function Boe(t){return[Hoe,Qoe]}const qoe=xt.mark({class:"cm-selectionMatch"}),Foe=xt.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function JT(t,e,n,r){return(n==0||t(e.sliceDoc(n-1,n))!=ar.Word)&&(r==e.doc.length||t(e.sliceDoc(r,r+1))!=ar.Word)}function $oe(t,e,n,r){return t(e.sliceDoc(n,n+1))==ar.Word&&t(e.sliceDoc(r-1,r))==ar.Word}const Qoe=_r.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.selectionSet||t.docChanged||t.viewportChanged)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=t.state.facet(Ioe),{state:n}=t,r=n.selection;if(r.ranges.length>1)return xt.none;let s=r.main,i,a=null;if(s.empty){if(!e.highlightWordAroundCursor)return xt.none;let c=n.wordAt(s.head);if(!c)return xt.none;a=n.charCategorizer(s.head),i=n.sliceDoc(c.from,c.to)}else{let c=s.to-s.from;if(c200)return xt.none;if(e.wholeWords){if(i=n.sliceDoc(s.from,s.to),a=n.charCategorizer(s.head),!(JT(a,n,s.from,s.to)&&$oe(a,n,s.from,s.to)))return xt.none}else if(i=n.sliceDoc(s.from,s.to),!i)return xt.none}let o=[];for(let c of t.visibleRanges){let h=new Oh(n.doc,i,c.from,c.to);for(;!h.next().done;){let{from:f,to:m}=h.value;if((!a||JT(a,n,f,m))&&(s.empty&&f<=s.from&&m>=s.to?o.push(Foe.range(f,m)):(f>=s.to||m<=s.from)&&o.push(qoe.range(f,m)),o.length>e.maxMatches))return xt.none}}return xt.set(o)}},{decorations:t=>t.decorations}),Hoe=Ke.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),Voe=({state:t,dispatch:e})=>{let{selection:n}=t,r=Ae.create(n.ranges.map(s=>t.wordAt(s.head)||Ae.cursor(s.head)),n.mainIndex);return r.eq(n)?!1:(e(t.update({selection:r})),!0)};function Uoe(t,e){let{main:n,ranges:r}=t.selection,s=t.wordAt(n.head),i=s&&s.from==n.from&&s.to==n.to;for(let a=!1,o=new Oh(t.doc,e,r[r.length-1].to);;)if(o.next(),o.done){if(a)return null;o=new Oh(t.doc,e,0,Math.max(0,r[r.length-1].from-1)),a=!0}else{if(a&&r.some(c=>c.from==o.value.from))continue;if(i){let c=t.wordAt(o.value.from);if(!c||c.from!=o.value.from||c.to!=o.value.to)continue}return o.value}}const Woe=({state:t,dispatch:e})=>{let{ranges:n}=t.selection;if(n.some(i=>i.from===i.to))return Voe({state:t,dispatch:e});let r=t.sliceDoc(n[0].from,n[0].to);if(t.selection.ranges.some(i=>t.sliceDoc(i.from,i.to)!=r))return!1;let s=Uoe(t,r);return s?(e(t.update({selection:t.selection.addRange(Ae.range(s.from,s.to),!1),effects:Ke.scrollIntoView(s.to)})),!0):!1},Qh=nt.define({combine(t){return gl(t,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new ice(e),scrollToMatch:e=>Ke.scrollIntoView(e)})}});class Mq{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||Doe(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(n,r)=>r=="n"?` -`:r=="r"?"\r":r=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord}create(){return this.regexp?new Koe(this):new Xoe(this)}getCursor(e,n=0,r){let s=e.doc?e:dn.create({doc:e});return r==null&&(r=s.doc.length),this.regexp?$d(this,s,n,r):Fd(this,s,n,r)}}class Aq{constructor(e){this.spec=e}}function Fd(t,e,n,r){return new Oh(e.doc,t.unquoted,n,r,t.caseSensitive?void 0:s=>s.toLowerCase(),t.wholeWord?Goe(e.doc,e.charCategorizer(e.selection.main.head)):void 0)}function Goe(t,e){return(n,r,s,i)=>((i>n||i+s.length=n)return null;s.push(r.value)}return s}highlight(e,n,r,s){let i=Fd(this.spec,e,Math.max(0,n-this.spec.unquoted.length),Math.min(r+this.spec.unquoted.length,e.doc.length));for(;!i.next().done;)s(i.value.from,i.value.to)}}function $d(t,e,n,r){return new Eq(e.doc,t.search,{ignoreCase:!t.caseSensitive,test:t.wholeWord?Yoe(e.charCategorizer(e.selection.main.head)):void 0},n,r)}function G1(t,e){return t.slice(ys(t,e,!1),e)}function X1(t,e){return t.slice(e,ys(t,e))}function Yoe(t){return(e,n,r)=>!r[0].length||(t(G1(r.input,r.index))!=ar.Word||t(X1(r.input,r.index))!=ar.Word)&&(t(X1(r.input,r.index+r[0].length))!=ar.Word||t(G1(r.input,r.index+r[0].length))!=ar.Word)}class Koe extends Aq{nextMatch(e,n,r){let s=$d(this.spec,e,r,e.doc.length).next();return s.done&&(s=$d(this.spec,e,0,n).next()),s.done?null:s.value}prevMatchInRange(e,n,r){for(let s=1;;s++){let i=Math.max(n,r-s*1e4),a=$d(this.spec,e,i,r),o=null;for(;!a.next().done;)o=a.value;if(o&&(i==n||o.from>i+10))return o;if(i==n)return null}}prevMatch(e,n,r){return this.prevMatchInRange(e,0,n)||this.prevMatchInRange(e,r,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(n,r)=>{if(r=="&")return e.match[0];if(r=="$")return"$";for(let s=r.length;s>0;s--){let i=+r.slice(0,s);if(i>0&&i=n)return null;s.push(r.value)}return s}highlight(e,n,r,s){let i=$d(this.spec,e,Math.max(0,n-250),Math.min(r+250,e.doc.length));for(;!i.next().done;)s(i.value.from,i.value.to)}}const i0=Lt.define(),rj=Lt.define(),mc=us.define({create(t){return new Bw(HS(t).create(),null)},update(t,e){for(let n of e.effects)n.is(i0)?t=new Bw(n.value.create(),t.panel):n.is(rj)&&(t=new Bw(t.query,n.value?sj:null));return t},provide:t=>Jm.from(t,e=>e.panel)});class Bw{constructor(e,n){this.query=e,this.panel=n}}const Zoe=xt.mark({class:"cm-searchMatch"}),Joe=xt.mark({class:"cm-searchMatch cm-searchMatch-selected"}),ece=_r.fromClass(class{constructor(t){this.view=t,this.decorations=this.highlight(t.state.field(mc))}update(t){let e=t.state.field(mc);(e!=t.startState.field(mc)||t.docChanged||t.selectionSet||t.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:t,panel:e}){if(!e||!t.spec.valid)return xt.none;let{view:n}=this,r=new fo;for(let s=0,i=n.visibleRanges,a=i.length;si[s+1].from-500;)c=i[++s].to;t.highlight(n.state,o,c,(h,f)=>{let m=n.state.selection.ranges.some(g=>g.from==h&&g.to==f);r.add(h,f,m?Joe:Zoe)})}return r.finish()}},{decorations:t=>t.decorations});function rp(t){return e=>{let n=e.state.field(mc,!1);return n&&n.query.spec.valid?t(e,n):zq(e)}}const Y1=rp((t,{query:e})=>{let{to:n}=t.state.selection.main,r=e.nextMatch(t.state,n,n);if(!r)return!1;let s=Ae.single(r.from,r.to),i=t.state.facet(Qh);return t.dispatch({selection:s,effects:[ij(t,r),i.scrollToMatch(s.main,t)],userEvent:"select.search"}),Dq(t),!0}),K1=rp((t,{query:e})=>{let{state:n}=t,{from:r}=n.selection.main,s=e.prevMatch(n,r,r);if(!s)return!1;let i=Ae.single(s.from,s.to),a=t.state.facet(Qh);return t.dispatch({selection:i,effects:[ij(t,s),a.scrollToMatch(i.main,t)],userEvent:"select.search"}),Dq(t),!0}),tce=rp((t,{query:e})=>{let n=e.matchAll(t.state,1e3);return!n||!n.length?!1:(t.dispatch({selection:Ae.create(n.map(r=>Ae.range(r.from,r.to))),userEvent:"select.search.matches"}),!0)}),nce=({state:t,dispatch:e})=>{let n=t.selection;if(n.ranges.length>1||n.main.empty)return!1;let{from:r,to:s}=n.main,i=[],a=0;for(let o=new Oh(t.doc,t.sliceDoc(r,s));!o.next().done;){if(i.length>1e3)return!1;o.value.from==r&&(a=i.length),i.push(Ae.range(o.value.from,o.value.to))}return e(t.update({selection:Ae.create(i,a),userEvent:"select.search.matches"})),!0},eE=rp((t,{query:e})=>{let{state:n}=t,{from:r,to:s}=n.selection.main;if(n.readOnly)return!1;let i=e.nextMatch(n,r,r);if(!i)return!1;let a=i,o=[],c,h,f=[];a.from==r&&a.to==s&&(h=n.toText(e.getReplacement(a)),o.push({from:a.from,to:a.to,insert:h}),a=e.nextMatch(n,a.from,a.to),f.push(Ke.announce.of(n.phrase("replaced match on line $",n.doc.lineAt(r).number)+".")));let m=t.state.changes(o);return a&&(c=Ae.single(a.from,a.to).map(m),f.push(ij(t,a)),f.push(n.facet(Qh).scrollToMatch(c.main,t))),t.dispatch({changes:m,selection:c,effects:f,userEvent:"input.replace"}),!0}),rce=rp((t,{query:e})=>{if(t.state.readOnly)return!1;let n=e.matchAll(t.state,1e9).map(s=>{let{from:i,to:a}=s;return{from:i,to:a,insert:e.getReplacement(s)}});if(!n.length)return!1;let r=t.state.phrase("replaced $ matches",n.length)+".";return t.dispatch({changes:n,effects:Ke.announce.of(r),userEvent:"input.replace.all"}),!0});function sj(t){return t.state.facet(Qh).createPanel(t)}function HS(t,e){var n,r,s,i,a;let o=t.selection.main,c=o.empty||o.to>o.from+100?"":t.sliceDoc(o.from,o.to);if(e&&!c)return e;let h=t.facet(Qh);return new Mq({search:((n=e?.literal)!==null&&n!==void 0?n:h.literal)?c:c.replace(/\n/g,"\\n"),caseSensitive:(r=e?.caseSensitive)!==null&&r!==void 0?r:h.caseSensitive,literal:(s=e?.literal)!==null&&s!==void 0?s:h.literal,regexp:(i=e?.regexp)!==null&&i!==void 0?i:h.regexp,wholeWord:(a=e?.wholeWord)!==null&&a!==void 0?a:h.wholeWord})}function Rq(t){let e=Zm(t,sj);return e&&e.dom.querySelector("[main-field]")}function Dq(t){let e=Rq(t);e&&e==t.root.activeElement&&e.select()}const zq=t=>{let e=t.state.field(mc,!1);if(e&&e.panel){let n=Rq(t);if(n&&n!=t.root.activeElement){let r=HS(t.state,e.query.spec);r.valid&&t.dispatch({effects:i0.of(r)}),n.focus(),n.select()}}else t.dispatch({effects:[rj.of(!0),e?i0.of(HS(t.state,e.query.spec)):Lt.appendConfig.of(lce)]});return!0},Pq=t=>{let e=t.state.field(mc,!1);if(!e||!e.panel)return!1;let n=Zm(t,sj);return n&&n.dom.contains(t.root.activeElement)&&t.focus(),t.dispatch({effects:rj.of(!1)}),!0},sce=[{key:"Mod-f",run:zq,scope:"editor search-panel"},{key:"F3",run:Y1,shift:K1,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:Y1,shift:K1,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:Pq,scope:"editor search-panel"},{key:"Mod-Shift-l",run:nce},{key:"Mod-Alt-g",run:zoe},{key:"Mod-d",run:Woe,preventDefault:!0}];class ice{constructor(e){this.view=e;let n=this.query=e.state.field(mc).query.spec;this.commit=this.commit.bind(this),this.searchField=Wn("input",{value:n.search,placeholder:Si(e,"Find"),"aria-label":Si(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=Wn("input",{value:n.replace,placeholder:Si(e,"Replace"),"aria-label":Si(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=Wn("input",{type:"checkbox",name:"case",form:"",checked:n.caseSensitive,onchange:this.commit}),this.reField=Wn("input",{type:"checkbox",name:"re",form:"",checked:n.regexp,onchange:this.commit}),this.wordField=Wn("input",{type:"checkbox",name:"word",form:"",checked:n.wholeWord,onchange:this.commit});function r(s,i,a){return Wn("button",{class:"cm-button",name:s,onclick:i,type:"button"},a)}this.dom=Wn("div",{onkeydown:s=>this.keydown(s),class:"cm-search"},[this.searchField,r("next",()=>Y1(e),[Si(e,"next")]),r("prev",()=>K1(e),[Si(e,"previous")]),r("select",()=>tce(e),[Si(e,"all")]),Wn("label",null,[this.caseField,Si(e,"match case")]),Wn("label",null,[this.reField,Si(e,"regexp")]),Wn("label",null,[this.wordField,Si(e,"by word")]),...e.state.readOnly?[]:[Wn("br"),this.replaceField,r("replace",()=>eE(e),[Si(e,"replace")]),r("replaceAll",()=>rce(e),[Si(e,"replace all")])],Wn("button",{name:"close",onclick:()=>Pq(e),"aria-label":Si(e,"close"),type:"button"},["×"])])}commit(){let e=new Mq({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:i0.of(e)}))}keydown(e){uie(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?K1:Y1)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),eE(this.view))}update(e){for(let n of e.transactions)for(let r of n.effects)r.is(i0)&&!r.value.eq(this.query)&&this.setQuery(r.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(Qh).top}}function Si(t,e){return t.state.phrase(e)}const xx=30,vx=/[\s\.,:;?!]/;function ij(t,{from:e,to:n}){let r=t.state.doc.lineAt(e),s=t.state.doc.lineAt(n).to,i=Math.max(r.from,e-xx),a=Math.min(s,n+xx),o=t.state.sliceDoc(i,a);if(i!=r.from){for(let c=0;co.length-xx;c--)if(!vx.test(o[c-1])&&vx.test(o[c])){o=o.slice(0,c);break}}return Ke.announce.of(`${t.state.phrase("current match")}. ${o} ${t.state.phrase("on line")} ${r.number}.`)}const ace=Ke.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),lce=[mc,Ac.low(ece),ace];class Lq{constructor(e,n,r,s){this.state=e,this.pos=n,this.explicit=r,this.view=s,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let n=ls(this.state).resolveInner(this.pos,-1);for(;n&&e.indexOf(n.name)<0;)n=n.parent;return n?{from:n.from,to:this.pos,text:this.state.sliceDoc(n.from,this.pos),type:n.type}:null}matchBefore(e){let n=this.state.doc.lineAt(this.pos),r=Math.max(n.from,this.pos-250),s=n.text.slice(r-n.from,this.pos-n.from),i=s.search(Bq(e,!1));return i<0?null:{from:r+i,to:this.pos,text:s.slice(i)}}get aborted(){return this.abortListeners==null}addEventListener(e,n,r){e=="abort"&&this.abortListeners&&(this.abortListeners.push(n),r&&r.onDocChange&&(this.abortOnDocChange=!0))}}function tE(t){let e=Object.keys(t).join(""),n=/\w/.test(e);return n&&(e=e.replace(/\w/g,"")),`[${n?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function oce(t){let e=Object.create(null),n=Object.create(null);for(let{label:s}of t){e[s[0]]=!0;for(let i=1;itypeof s=="string"?{label:s}:s),[n,r]=e.every(s=>/^\w+$/.test(s.label))?[/\w*$/,/\w+$/]:oce(e);return s=>{let i=s.matchBefore(r);return i||s.explicit?{from:i?i.from:s.pos,options:e,validFor:n}:null}}function cce(t,e){return n=>{for(let r=ls(n.state).resolveInner(n.pos,-1);r;r=r.parent){if(t.indexOf(r.name)>-1)return null;if(r.type.isTop)break}return e(n)}}let nE=class{constructor(e,n,r,s){this.completion=e,this.source=n,this.match=r,this.score=s}};function Ou(t){return t.selection.main.from}function Bq(t,e){var n;let{source:r}=t,s=e&&r[0]!="^",i=r[r.length-1]!="$";return!s&&!i?t:new RegExp(`${s?"^":""}(?:${r})${i?"$":""}`,(n=t.flags)!==null&&n!==void 0?n:t.ignoreCase?"i":"")}const aj=pl.define();function uce(t,e,n,r){let{main:s}=t.selection,i=n-s.from,a=r-s.from;return{...t.changeByRange(o=>{if(o!=s&&n!=r&&t.sliceDoc(o.from+i,o.from+a)!=t.sliceDoc(n,r))return{range:o};let c=t.toText(e);return{changes:{from:o.from+i,to:r==s.from?o.to:o.from+a,insert:c},range:Ae.cursor(o.from+i+c.length)}}),scrollIntoView:!0,userEvent:"input.complete"}}const rE=new WeakMap;function dce(t){if(!Array.isArray(t))return t;let e=rE.get(t);return e||rE.set(t,e=Iq(t)),e}const Z1=Lt.define(),a0=Lt.define();class hce{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let n=0;n=48&&_<=57||_>=97&&_<=122?2:_>=65&&_<=90?1:0:(E=C6(_))!=E.toLowerCase()?1:E!=E.toUpperCase()?2:0;(!N||M==1&&S||T==0&&M!=0)&&(n[m]==_||r[m]==_&&(g=!0)?a[m++]=N:a.length&&(k=!1)),T=M,N+=Za(_)}return m==c&&a[0]==0&&k?this.result(-100+(g?-200:0),a,e):x==c&&y==0?this.ret(-200-e.length+(w==e.length?0:-100),[0,w]):o>-1?this.ret(-700-e.length,[o,o+this.pattern.length]):x==c?this.ret(-900-e.length,[y,w]):m==c?this.result(-100+(g?-200:0)+-700+(k?0:-1100),a,e):n.length==2?null:this.result((s[0]?-700:0)+-200+-1100,s,e)}result(e,n,r){let s=[],i=0;for(let a of n){let o=a+(this.astral?Za(ei(r,a)):1);i&&s[i-1]==a?s[i-1]=o:(s[i++]=a,s[i++]=o)}return this.ret(e-r.length,s)}}class fce{constructor(e){this.pattern=e,this.matched=[],this.score=0,this.folded=e.toLowerCase()}match(e){if(e.length!1,activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:()=>"",optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:mce,filterStrict:!1,compareCompletions:(e,n)=>e.label.localeCompare(n.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(e,n)=>e&&n,closeOnBlur:(e,n)=>e&&n,icons:(e,n)=>e&&n,tooltipClass:(e,n)=>r=>sE(e(r),n(r)),optionClass:(e,n)=>r=>sE(e(r),n(r)),addToOptions:(e,n)=>e.concat(n),filterStrict:(e,n)=>e||n})}});function sE(t,e){return t?e?t+" "+e:t:e}function mce(t,e,n,r,s,i){let a=t.textDirection==sr.RTL,o=a,c=!1,h="top",f,m,g=e.left-s.left,x=s.right-e.right,y=r.right-r.left,w=r.bottom-r.top;if(o&&g=w||N>e.top?f=n.bottom-e.top:(h="bottom",f=e.bottom-n.top)}let S=(e.bottom-e.top)/i.offsetHeight,k=(e.right-e.left)/i.offsetWidth;return{style:`${h}: ${f/S}px; max-width: ${m/k}px`,class:"cm-completionInfo-"+(c?a?"left-narrow":"right-narrow":o?"left":"right")}}function pce(t){let e=t.addToOptions.slice();return t.icons&&e.push({render(n){let r=document.createElement("div");return r.classList.add("cm-completionIcon"),n.type&&r.classList.add(...n.type.split(/\s+/g).map(s=>"cm-completionIcon-"+s)),r.setAttribute("aria-hidden","true"),r},position:20}),e.push({render(n,r,s,i){let a=document.createElement("span");a.className="cm-completionLabel";let o=n.displayLabel||n.label,c=0;for(let h=0;hc&&a.appendChild(document.createTextNode(o.slice(c,f)));let g=a.appendChild(document.createElement("span"));g.appendChild(document.createTextNode(o.slice(f,m))),g.className="cm-completionMatchedText",c=m}return cn.position-r.position).map(n=>n.render)}function qw(t,e,n){if(t<=n)return{from:0,to:t};if(e<0&&(e=0),e<=t>>1){let s=Math.floor(e/n);return{from:s*n,to:(s+1)*n}}let r=Math.floor((t-e)/n);return{from:t-(r+1)*n,to:t-r*n}}class gce{constructor(e,n,r){this.view=e,this.stateField=n,this.applyCompletion=r,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:()=>this.measureInfo(),write:c=>this.placeInfo(c),key:this},this.space=null,this.currentClass="";let s=e.state.field(n),{options:i,selected:a}=s.open,o=e.state.facet(is);this.optionContent=pce(o),this.optionClass=o.optionClass,this.tooltipClass=o.tooltipClass,this.range=qw(i.length,a,o.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.updateTooltipClass(e.state),this.dom.addEventListener("mousedown",c=>{let{options:h}=e.state.field(n).open;for(let f=c.target,m;f&&f!=this.dom;f=f.parentNode)if(f.nodeName=="LI"&&(m=/-(\d+)$/.exec(f.id))&&+m[1]{let h=e.state.field(this.stateField,!1);h&&h.tooltip&&e.state.facet(is).closeOnBlur&&c.relatedTarget!=e.contentDOM&&e.dispatch({effects:a0.of(null)})}),this.showOptions(i,s.id)}mount(){this.updateSel()}showOptions(e,n){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(e,n,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(e){var n;let r=e.state.field(this.stateField),s=e.startState.field(this.stateField);if(this.updateTooltipClass(e.state),r!=s){let{options:i,selected:a,disabled:o}=r.open;(!s.open||s.open.options!=i)&&(this.range=qw(i.length,a,e.state.facet(is).maxRenderedOptions),this.showOptions(i,r.id)),this.updateSel(),o!=((n=s.open)===null||n===void 0?void 0:n.disabled)&&this.dom.classList.toggle("cm-tooltip-autocomplete-disabled",!!o)}}updateTooltipClass(e){let n=this.tooltipClass(e);if(n!=this.currentClass){for(let r of this.currentClass.split(" "))r&&this.dom.classList.remove(r);for(let r of n.split(" "))r&&this.dom.classList.add(r);this.currentClass=n}}positioned(e){this.space=e,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let e=this.view.state.field(this.stateField),n=e.open;(n.selected>-1&&n.selected=this.range.to)&&(this.range=qw(n.options.length,n.selected,this.view.state.facet(is).maxRenderedOptions),this.showOptions(n.options,e.id));let r=this.updateSelectedOption(n.selected);if(r){this.destroyInfo();let{completion:s}=n.options[n.selected],{info:i}=s;if(!i)return;let a=typeof i=="string"?document.createTextNode(i):i(s);if(!a)return;"then"in a?a.then(o=>{o&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(o,s)}).catch(o=>ni(this.view.state,o,"completion info")):(this.addInfoPane(a,s),r.setAttribute("aria-describedby",this.info.id))}}addInfoPane(e,n){this.destroyInfo();let r=this.info=document.createElement("div");if(r.className="cm-tooltip cm-completionInfo",r.id="cm-completionInfo-"+Math.floor(Math.random()*65535).toString(16),e.nodeType!=null)r.appendChild(e),this.infoDestroy=null;else{let{dom:s,destroy:i}=e;r.appendChild(s),this.infoDestroy=i||null}this.dom.appendChild(r),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(e){let n=null;for(let r=this.list.firstChild,s=this.range.from;r;r=r.nextSibling,s++)r.nodeName!="LI"||!r.id?s--:s==e?r.hasAttribute("aria-selected")||(r.setAttribute("aria-selected","true"),n=r):r.hasAttribute("aria-selected")&&(r.removeAttribute("aria-selected"),r.removeAttribute("aria-describedby"));return n&&vce(this.list,n),n}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let n=this.dom.getBoundingClientRect(),r=this.info.getBoundingClientRect(),s=e.getBoundingClientRect(),i=this.space;if(!i){let a=this.dom.ownerDocument.documentElement;i={left:0,top:0,right:a.clientWidth,bottom:a.clientHeight}}return s.top>Math.min(i.bottom,n.bottom)-10||s.bottom{a.target==s&&a.preventDefault()});let i=null;for(let a=r.from;ar.from||r.from==0))if(i=g,typeof h!="string"&&h.header)s.appendChild(h.header(h));else{let x=s.appendChild(document.createElement("completion-section"));x.textContent=g}}const f=s.appendChild(document.createElement("li"));f.id=n+"-"+a,f.setAttribute("role","option");let m=this.optionClass(o);m&&(f.className=m);for(let g of this.optionContent){let x=g(o,this.view.state,this.view,c);x&&f.appendChild(x)}}return r.from&&s.classList.add("cm-completionListIncompleteTop"),r.tonew gce(n,t,e)}function vce(t,e){let n=t.getBoundingClientRect(),r=e.getBoundingClientRect(),s=n.height/t.offsetHeight;r.topn.bottom&&(t.scrollTop+=(r.bottom-n.bottom)/s)}function iE(t){return(t.boost||0)*100+(t.apply?10:0)+(t.info?5:0)+(t.type?1:0)}function yce(t,e){let n=[],r=null,s=null,i=f=>{n.push(f);let{section:m}=f.completion;if(m){r||(r=[]);let g=typeof m=="string"?m:m.name;r.some(x=>x.name==g)||r.push(typeof m=="string"?{name:g}:m)}},a=e.facet(is);for(let f of t)if(f.hasResult()){let m=f.result.getMatch;if(f.result.filter===!1)for(let g of f.result.options)i(new nE(g,f.source,m?m(g):[],1e9-n.length));else{let g=e.sliceDoc(f.from,f.to),x,y=a.filterStrict?new fce(g):new hce(g);for(let w of f.result.options)if(x=y.match(w.label)){let S=w.displayLabel?m?m(w,x.matched):[]:x.matched,k=x.score+(w.boost||0);if(i(new nE(w,f.source,S,k)),typeof w.section=="object"&&w.section.rank==="dynamic"){let{name:N}=w.section;s||(s=Object.create(null)),s[N]=Math.max(k,s[N]||-1e9)}}}}if(r){let f=Object.create(null),m=0,g=(x,y)=>(x.rank==="dynamic"&&y.rank==="dynamic"?s[y.name]-s[x.name]:0)||(typeof x.rank=="number"?x.rank:1e9)-(typeof y.rank=="number"?y.rank:1e9)||(x.nameg.score-m.score||h(m.completion,g.completion))){let m=f.completion;!c||c.label!=m.label||c.detail!=m.detail||c.type!=null&&m.type!=null&&c.type!=m.type||c.apply!=m.apply||c.boost!=m.boost?o.push(f):iE(f.completion)>iE(c)&&(o[o.length-1]=f),c=f.completion}return o}class Yd{constructor(e,n,r,s,i,a){this.options=e,this.attrs=n,this.tooltip=r,this.timestamp=s,this.selected=i,this.disabled=a}setSelected(e,n){return e==this.selected||e>=this.options.length?this:new Yd(this.options,aE(n,e),this.tooltip,this.timestamp,e,this.disabled)}static build(e,n,r,s,i,a){if(s&&!a&&e.some(h=>h.isPending))return s.setDisabled();let o=yce(e,n);if(!o.length)return s&&e.some(h=>h.isPending)?s.setDisabled():null;let c=n.facet(is).selectOnOpen?0:-1;if(s&&s.selected!=c&&s.selected!=-1){let h=s.options[s.selected].completion;for(let f=0;ff.hasResult()?Math.min(h,f.from):h,1e8),create:Oce,above:i.aboveCursor},s?s.timestamp:Date.now(),c,!1)}map(e){return new Yd(this.options,this.attrs,{...this.tooltip,pos:e.mapPos(this.tooltip.pos)},this.timestamp,this.selected,this.disabled)}setDisabled(){return new Yd(this.options,this.attrs,this.tooltip,this.timestamp,this.selected,!0)}}class J1{constructor(e,n,r){this.active=e,this.id=n,this.open=r}static start(){return new J1(kce,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:n}=e,r=n.facet(is),i=(r.override||n.languageDataAt("autocomplete",Ou(n)).map(dce)).map(c=>(this.active.find(f=>f.source==c)||new ea(c,this.active.some(f=>f.state!=0)?1:0)).update(e,r));i.length==this.active.length&&i.every((c,h)=>c==this.active[h])&&(i=this.active);let a=this.open,o=e.effects.some(c=>c.is(lj));a&&e.docChanged&&(a=a.map(e.changes)),e.selection||i.some(c=>c.hasResult()&&e.changes.touchesRange(c.from,c.to))||!bce(i,this.active)||o?a=Yd.build(i,n,this.id,a,r,o):a&&a.disabled&&!i.some(c=>c.isPending)&&(a=null),!a&&i.every(c=>!c.isPending)&&i.some(c=>c.hasResult())&&(i=i.map(c=>c.hasResult()?new ea(c.source,0):c));for(let c of e.effects)c.is(Fq)&&(a=a&&a.setSelected(c.value,this.id));return i==this.active&&a==this.open?this:new J1(i,this.id,a)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?wce:Sce}}function bce(t,e){if(t==e)return!0;for(let n=0,r=0;;){for(;n-1&&(n["aria-activedescendant"]=t+"-"+e),n}const kce=[];function qq(t,e){if(t.isUserEvent("input.complete")){let r=t.annotation(aj);if(r&&e.activateOnCompletion(r))return 12}let n=t.isUserEvent("input.type");return n&&e.activateOnTyping?5:n?1:t.isUserEvent("delete.backward")?2:t.selection?8:t.docChanged?16:0}class ea{constructor(e,n,r=!1){this.source=e,this.state=n,this.explicit=r}hasResult(){return!1}get isPending(){return this.state==1}update(e,n){let r=qq(e,n),s=this;(r&8||r&16&&this.touches(e))&&(s=new ea(s.source,0)),r&4&&s.state==0&&(s=new ea(this.source,1)),s=s.updateFor(e,r);for(let i of e.effects)if(i.is(Z1))s=new ea(s.source,1,i.value);else if(i.is(a0))s=new ea(s.source,0);else if(i.is(lj))for(let a of i.value)a.source==s.source&&(s=a);return s}updateFor(e,n){return this.map(e.changes)}map(e){return this}touches(e){return e.changes.touchesRange(Ou(e.state))}}class ah extends ea{constructor(e,n,r,s,i,a){super(e,3,n),this.limit=r,this.result=s,this.from=i,this.to=a}hasResult(){return!0}updateFor(e,n){var r;if(!(n&3))return this.map(e.changes);let s=this.result;s.map&&!e.changes.empty&&(s=s.map(s,e.changes));let i=e.changes.mapPos(this.from),a=e.changes.mapPos(this.to,1),o=Ou(e.state);if(o>a||!s||n&2&&(Ou(e.startState)==this.from||on.map(e))}}),Fq=Lt.define(),ti=us.define({create(){return J1.start()},update(t,e){return t.update(e)},provide:t=>[F6.from(t,e=>e.tooltip),Ke.contentAttributes.from(t,e=>e.attrs)]});function oj(t,e){const n=e.completion.apply||e.completion.label;let r=t.state.field(ti).active.find(s=>s.source==e.source);return r instanceof ah?(typeof n=="string"?t.dispatch({...uce(t.state,n,r.from,r.to),annotations:aj.of(e.completion)}):n(t,e.completion,r.from,r.to),!0):!1}const Oce=xce(ti,oj);function yx(t,e="option"){return n=>{let r=n.state.field(ti,!1);if(!r||!r.open||r.open.disabled||Date.now()-r.open.timestamp-1?r.open.selected+s*(t?1:-1):t?0:a-1;return o<0?o=e=="page"?0:a-1:o>=a&&(o=e=="page"?a-1:0),n.dispatch({effects:Fq.of(o)}),!0}}const Nce=t=>{let e=t.state.field(ti,!1);return t.state.readOnly||!e||!e.open||e.open.selected<0||e.open.disabled||Date.now()-e.open.timestampt.state.field(ti,!1)?(t.dispatch({effects:Z1.of(!0)}),!0):!1,Cce=t=>{let e=t.state.field(ti,!1);return!e||!e.active.some(n=>n.state!=0)?!1:(t.dispatch({effects:a0.of(null)}),!0)};class Tce{constructor(e,n){this.active=e,this.context=n,this.time=Date.now(),this.updates=[],this.done=void 0}}const Ece=50,_ce=1e3,Mce=_r.fromClass(class{constructor(t){this.view=t,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(let e of t.state.field(ti).active)e.isPending&&this.startQuery(e)}update(t){let e=t.state.field(ti),n=t.state.facet(is);if(!t.selectionSet&&!t.docChanged&&t.startState.field(ti)==e)return;let r=t.transactions.some(i=>{let a=qq(i,n);return a&8||(i.selection||i.docChanged)&&!(a&3)});for(let i=0;iEce&&Date.now()-a.time>_ce){for(let o of a.context.abortListeners)try{o()}catch(c){ni(this.view.state,c)}a.context.abortListeners=null,this.running.splice(i--,1)}else a.updates.push(...t.transactions)}this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),t.transactions.some(i=>i.effects.some(a=>a.is(Z1)))&&(this.pendingStart=!0);let s=this.pendingStart?50:n.activateOnTypingDelay;if(this.debounceUpdate=e.active.some(i=>i.isPending&&!this.running.some(a=>a.active.source==i.source))?setTimeout(()=>this.startUpdate(),s):-1,this.composing!=0)for(let i of t.transactions)i.isUserEvent("input.type")?this.composing=2:this.composing==2&&i.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;let{state:t}=this.view,e=t.field(ti);for(let n of e.active)n.isPending&&!this.running.some(r=>r.active.source==n.source)&&this.startQuery(n);this.running.length&&e.open&&e.open.disabled&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(is).updateSyncTime))}startQuery(t){let{state:e}=this.view,n=Ou(e),r=new Lq(e,n,t.explicit,this.view),s=new Tce(t,r);this.running.push(s),Promise.resolve(t.source(r)).then(i=>{s.context.aborted||(s.done=i||null,this.scheduleAccept())},i=>{this.view.dispatch({effects:a0.of(null)}),ni(this.view.state,i)})}scheduleAccept(){this.running.every(t=>t.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(is).updateSyncTime))}accept(){var t;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],n=this.view.state.facet(is),r=this.view.state.field(ti);for(let s=0;so.source==i.active.source);if(a&&a.isPending)if(i.done==null){let o=new ea(i.active.source,0);for(let c of i.updates)o=o.update(c,n);o.isPending||e.push(o)}else this.startQuery(a)}(e.length||r.open&&r.open.disabled)&&this.view.dispatch({effects:lj.of(e)})}},{eventHandlers:{blur(t){let e=this.view.state.field(ti,!1);if(e&&e.tooltip&&this.view.state.facet(is).closeOnBlur){let n=e.open&&pB(this.view,e.open.tooltip);(!n||!n.dom.contains(t.relatedTarget))&&setTimeout(()=>this.view.dispatch({effects:a0.of(null)}),10)}},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:Z1.of(!1)}),20),this.composing=0}}}),Ace=typeof navigator=="object"&&/Win/.test(navigator.platform),Rce=Ac.highest(Ke.domEventHandlers({keydown(t,e){let n=e.state.field(ti,!1);if(!n||!n.open||n.open.disabled||n.open.selected<0||t.key.length>1||t.ctrlKey&&!(Ace&&t.altKey)||t.metaKey)return!1;let r=n.open.options[n.open.selected],s=n.active.find(a=>a.source==r.source),i=r.completion.commitCharacters||s.result.commitCharacters;return i&&i.indexOf(t.key)>-1&&oj(e,r),!1}})),$q=Ke.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li, & > completion-section":{padding:"1px 3px",lineHeight:1.2},"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer"},"& > completion-section":{display:"list-item",borderBottom:"1px solid silver",paddingLeft:"0.5em",opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"···"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"400px",boxSizing:"border-box",whiteSpace:"pre-line"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:"30px"},".cm-completionInfo.cm-completionInfo-right-narrow":{left:"30px"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'ƒ'"}},".cm-completionIcon-class":{"&:after":{content:"'○'"}},".cm-completionIcon-interface":{"&:after":{content:"'◌'"}},".cm-completionIcon-variable":{"&:after":{content:"'𝑥'"}},".cm-completionIcon-constant":{"&:after":{content:"'𝐶'"}},".cm-completionIcon-type":{"&:after":{content:"'𝑡'"}},".cm-completionIcon-enum":{"&:after":{content:"'∪'"}},".cm-completionIcon-property":{"&:after":{content:"'□'"}},".cm-completionIcon-keyword":{"&:after":{content:"'🔑︎'"}},".cm-completionIcon-namespace":{"&:after":{content:"'▢'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class Dce{constructor(e,n,r,s){this.field=e,this.line=n,this.from=r,this.to=s}}class cj{constructor(e,n,r){this.field=e,this.from=n,this.to=r}map(e){let n=e.mapPos(this.from,-1,vs.TrackDel),r=e.mapPos(this.to,1,vs.TrackDel);return n==null||r==null?null:new cj(this.field,n,r)}}class uj{constructor(e,n){this.lines=e,this.fieldPositions=n}instantiate(e,n){let r=[],s=[n],i=e.doc.lineAt(n),a=/^\s*/.exec(i.text)[0];for(let c of this.lines){if(r.length){let h=a,f=/^\t*/.exec(c)[0].length;for(let m=0;mnew cj(c.field,s[c.line]+c.from,s[c.line]+c.to));return{text:r,ranges:o}}static parse(e){let n=[],r=[],s=[],i;for(let a of e.split(/\r\n?|\n/)){for(;i=/[#$]\{(?:(\d+)(?::([^{}]*))?|((?:\\[{}]|[^{}])*))\}/.exec(a);){let o=i[1]?+i[1]:null,c=i[2]||i[3]||"",h=-1,f=c.replace(/\\[{}]/g,m=>m[1]);for(let m=0;m=h&&g.field++}for(let m of s)if(m.line==r.length&&m.from>i.index){let g=i[2]?3+(i[1]||"").length:2;m.from-=g,m.to-=g}s.push(new Dce(h,r.length,i.index,i.index+f.length)),a=a.slice(0,i.index)+c+a.slice(i.index+i[0].length)}a=a.replace(/\\([{}])/g,(o,c,h)=>{for(let f of s)f.line==r.length&&f.from>h&&(f.from--,f.to--);return c}),r.push(a)}return new uj(r,s)}}let zce=xt.widget({widget:new class extends xl{toDOM(){let t=document.createElement("span");return t.className="cm-snippetFieldPosition",t}ignoreEvent(){return!1}}}),Pce=xt.mark({class:"cm-snippetField"});class Hh{constructor(e,n){this.ranges=e,this.active=n,this.deco=xt.set(e.map(r=>(r.from==r.to?zce:Pce).range(r.from,r.to)),!0)}map(e){let n=[];for(let r of this.ranges){let s=r.map(e);if(!s)return null;n.push(s)}return new Hh(n,this.active)}selectionInsideField(e){return e.ranges.every(n=>this.ranges.some(r=>r.field==this.active&&r.from<=n.from&&r.to>=n.to))}}const sp=Lt.define({map(t,e){return t&&t.map(e)}}),Lce=Lt.define(),l0=us.define({create(){return null},update(t,e){for(let n of e.effects){if(n.is(sp))return n.value;if(n.is(Lce)&&t)return new Hh(t.ranges,n.value)}return t&&e.docChanged&&(t=t.map(e.changes)),t&&e.selection&&!t.selectionInsideField(e.selection)&&(t=null),t},provide:t=>Ke.decorations.from(t,e=>e?e.deco:xt.none)});function dj(t,e){return Ae.create(t.filter(n=>n.field==e).map(n=>Ae.range(n.from,n.to)))}function Ice(t){let e=uj.parse(t);return(n,r,s,i)=>{let{text:a,ranges:o}=e.instantiate(n.state,s),{main:c}=n.state.selection,h={changes:{from:s,to:i==c.from?c.to:i,insert:pn.of(a)},scrollIntoView:!0,annotations:r?[aj.of(r),$r.userEvent.of("input.complete")]:void 0};if(o.length&&(h.selection=dj(o,0)),o.some(f=>f.field>0)){let f=new Hh(o,0),m=h.effects=[sp.of(f)];n.state.field(l0,!1)===void 0&&m.push(Lt.appendConfig.of([l0,Qce,Hce,$q]))}n.dispatch(n.state.update(h))}}function Qq(t){return({state:e,dispatch:n})=>{let r=e.field(l0,!1);if(!r||t<0&&r.active==0)return!1;let s=r.active+t,i=t>0&&!r.ranges.some(a=>a.field==s+t);return n(e.update({selection:dj(r.ranges,s),effects:sp.of(i?null:new Hh(r.ranges,s)),scrollIntoView:!0})),!0}}const Bce=({state:t,dispatch:e})=>t.field(l0,!1)?(e(t.update({effects:sp.of(null)})),!0):!1,qce=Qq(1),Fce=Qq(-1),$ce=[{key:"Tab",run:qce,shift:Fce},{key:"Escape",run:Bce}],lE=nt.define({combine(t){return t.length?t[0]:$ce}}),Qce=Ac.highest(K0.compute([lE],t=>t.facet(lE)));function Ul(t,e){return{...e,apply:Ice(t)}}const Hce=Ke.domEventHandlers({mousedown(t,e){let n=e.state.field(l0,!1),r;if(!n||(r=e.posAtCoords({x:t.clientX,y:t.clientY}))==null)return!1;let s=n.ranges.find(i=>i.from<=r&&i.to>=r);return!s||s.field==n.active?!1:(e.dispatch({selection:dj(n.ranges,s.field),effects:sp.of(n.ranges.some(i=>i.field>s.field)?new Hh(n.ranges,s.field):null),scrollIntoView:!0}),!0)}}),o0={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},xu=Lt.define({map(t,e){let n=e.mapPos(t,-1,vs.TrackAfter);return n??void 0}}),hj=new class extends _u{};hj.startSide=1;hj.endSide=-1;const Hq=us.define({create(){return On.empty},update(t,e){if(t=t.map(e.changes),e.selection){let n=e.state.doc.lineAt(e.selection.main.head);t=t.update({filter:r=>r>=n.from&&r<=n.to})}for(let n of e.effects)n.is(xu)&&(t=t.update({add:[hj.range(n.value,n.value+1)]}));return t}});function Vce(){return[Wce,Hq]}const $w="()[]{}<>«»»«[]{}";function Vq(t){for(let e=0;e<$w.length;e+=2)if($w.charCodeAt(e)==t)return $w.charAt(e+1);return C6(t<128?t:t+1)}function Uq(t,e){return t.languageDataAt("closeBrackets",e)[0]||o0}const Uce=typeof navigator=="object"&&/Android\b/.test(navigator.userAgent),Wce=Ke.inputHandler.of((t,e,n,r)=>{if((Uce?t.composing:t.compositionStarted)||t.state.readOnly)return!1;let s=t.state.selection.main;if(r.length>2||r.length==2&&Za(ei(r,0))==1||e!=s.from||n!=s.to)return!1;let i=Yce(t.state,r);return i?(t.dispatch(i),!0):!1}),Gce=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let r=Uq(t,t.selection.main.head).brackets||o0.brackets,s=null,i=t.changeByRange(a=>{if(a.empty){let o=Kce(t.doc,a.head);for(let c of r)if(c==o&&ly(t.doc,a.head)==Vq(ei(c,0)))return{changes:{from:a.head-c.length,to:a.head+c.length},range:Ae.cursor(a.head-c.length)}}return{range:s=a}});return s||e(t.update(i,{scrollIntoView:!0,userEvent:"delete.backward"})),!s},Xce=[{key:"Backspace",run:Gce}];function Yce(t,e){let n=Uq(t,t.selection.main.head),r=n.brackets||o0.brackets;for(let s of r){let i=Vq(ei(s,0));if(e==s)return i==s?eue(t,s,r.indexOf(s+s+s)>-1,n):Zce(t,s,i,n.before||o0.before);if(e==i&&Wq(t,t.selection.main.from))return Jce(t,s,i)}return null}function Wq(t,e){let n=!1;return t.field(Hq).between(0,t.doc.length,r=>{r==e&&(n=!0)}),n}function ly(t,e){let n=t.sliceString(e,e+2);return n.slice(0,Za(ei(n,0)))}function Kce(t,e){let n=t.sliceString(e-2,e);return Za(ei(n,0))==n.length?n:n.slice(1)}function Zce(t,e,n,r){let s=null,i=t.changeByRange(a=>{if(!a.empty)return{changes:[{insert:e,from:a.from},{insert:n,from:a.to}],effects:xu.of(a.to+e.length),range:Ae.range(a.anchor+e.length,a.head+e.length)};let o=ly(t.doc,a.head);return!o||/\s/.test(o)||r.indexOf(o)>-1?{changes:{insert:e+n,from:a.head},effects:xu.of(a.head+e.length),range:Ae.cursor(a.head+e.length)}:{range:s=a}});return s?null:t.update(i,{scrollIntoView:!0,userEvent:"input.type"})}function Jce(t,e,n){let r=null,s=t.changeByRange(i=>i.empty&&ly(t.doc,i.head)==n?{changes:{from:i.head,to:i.head+n.length,insert:n},range:Ae.cursor(i.head+n.length)}:r={range:i});return r?null:t.update(s,{scrollIntoView:!0,userEvent:"input.type"})}function eue(t,e,n,r){let s=r.stringPrefixes||o0.stringPrefixes,i=null,a=t.changeByRange(o=>{if(!o.empty)return{changes:[{insert:e,from:o.from},{insert:e,from:o.to}],effects:xu.of(o.to+e.length),range:Ae.range(o.anchor+e.length,o.head+e.length)};let c=o.head,h=ly(t.doc,c),f;if(h==e){if(oE(t,c))return{changes:{insert:e+e,from:c},effects:xu.of(c+e.length),range:Ae.cursor(c+e.length)};if(Wq(t,c)){let g=n&&t.sliceDoc(c,c+e.length*3)==e+e+e?e+e+e:e;return{changes:{from:c,to:c+g.length,insert:g},range:Ae.cursor(c+g.length)}}}else{if(n&&t.sliceDoc(c-2*e.length,c)==e+e&&(f=cE(t,c-2*e.length,s))>-1&&oE(t,f))return{changes:{insert:e+e+e+e,from:c},effects:xu.of(c+e.length),range:Ae.cursor(c+e.length)};if(t.charCategorizer(c)(h)!=ar.Word&&cE(t,c,s)>-1&&!tue(t,c,e,s))return{changes:{insert:e+e,from:c},effects:xu.of(c+e.length),range:Ae.cursor(c+e.length)}}return{range:i=o}});return i?null:t.update(a,{scrollIntoView:!0,userEvent:"input.type"})}function oE(t,e){let n=ls(t).resolveInner(e+1);return n.parent&&n.from==e}function tue(t,e,n,r){let s=ls(t).resolveInner(e,-1),i=r.reduce((a,o)=>Math.max(a,o.length),0);for(let a=0;a<5;a++){let o=t.sliceDoc(s.from,Math.min(s.to,s.from+n.length+i)),c=o.indexOf(n);if(!c||c>-1&&r.indexOf(o.slice(0,c))>-1){let f=s.firstChild;for(;f&&f.from==s.from&&f.to-f.from>n.length+c;){if(t.sliceDoc(f.to-n.length,f.to)==n)return!1;f=f.firstChild}return!0}let h=s.to==e&&s.parent;if(!h)break;s=h}return!1}function cE(t,e,n){let r=t.charCategorizer(e);if(r(t.sliceDoc(e-1,e))!=ar.Word)return e;for(let s of n){let i=e-s.length;if(t.sliceDoc(i,e)==s&&r(t.sliceDoc(i-1,i))!=ar.Word)return i}return-1}function nue(t={}){return[Rce,ti,is.of(t),Mce,rue,$q]}const Gq=[{key:"Ctrl-Space",run:Fw},{mac:"Alt-`",run:Fw},{mac:"Alt-i",run:Fw},{key:"Escape",run:Cce},{key:"ArrowDown",run:yx(!0)},{key:"ArrowUp",run:yx(!1)},{key:"PageDown",run:yx(!0,"page")},{key:"PageUp",run:yx(!1,"page")},{key:"Enter",run:Nce}],rue=Ac.highest(K0.computeN([is],t=>t.facet(is).defaultKeymap?[Gq]:[]));class uE{constructor(e,n,r){this.from=e,this.to=n,this.diagnostic=r}}class hu{constructor(e,n,r){this.diagnostics=e,this.panel=n,this.selected=r}static init(e,n,r){let s=r.facet(c0).markerFilter;s&&(e=s(e,r));let i=e.slice().sort((x,y)=>x.from-y.from||x.to-y.to),a=new fo,o=[],c=0,h=r.doc.iter(),f=0,m=r.doc.length;for(let x=0;;){let y=x==i.length?null:i[x];if(!y&&!o.length)break;let w,S;if(o.length)w=c,S=o.reduce((C,T)=>Math.min(C,T.to),y&&y.from>w?y.from:1e8);else{if(w=y.from,w>m)break;S=y.to,o.push(y),x++}for(;xC.from||C.to==w))o.push(C),x++,S=Math.min(C.to,S);else{S=Math.min(C.from,S);break}}S=Math.min(S,m);let k=!1;if(o.some(C=>C.from==w&&(C.to==S||S==m))&&(k=w==S,!k&&S-w<10)){let C=w-(f+h.value.length);C>0&&(h.next(C),f=w);for(let T=w;;){if(T>=S){k=!0;break}if(!h.lineBreak&&f+h.value.length>T)break;T=f+h.value.length,f+=h.value.length,h.next()}}let N=gue(o);if(k)a.add(w,w,xt.widget({widget:new hue(N),diagnostics:o.slice()}));else{let C=o.reduce((T,_)=>_.markClass?T+" "+_.markClass:T,"");a.add(w,S,xt.mark({class:"cm-lintRange cm-lintRange-"+N+C,diagnostics:o.slice(),inclusiveEnd:o.some(T=>T.to>S)}))}if(c=S,c==m)break;for(let C=0;C{if(!(e&&a.diagnostics.indexOf(e)<0))if(!r)r=new uE(s,i,e||a.diagnostics[0]);else{if(a.diagnostics.indexOf(r.diagnostic)<0)return!1;r=new uE(r.from,i,r.diagnostic)}}),r}function sue(t,e){let n=e.pos,r=e.end||n,s=t.state.facet(c0).hideOn(t,n,r);if(s!=null)return s;let i=t.startState.doc.lineAt(e.pos);return!!(t.effects.some(a=>a.is(Xq))||t.changes.touchesRange(i.from,Math.max(i.to,r)))}function iue(t,e){return t.field(Ei,!1)?e:e.concat(Lt.appendConfig.of(xue))}const Xq=Lt.define(),fj=Lt.define(),Yq=Lt.define(),Ei=us.define({create(){return new hu(xt.none,null,null)},update(t,e){if(e.docChanged&&t.diagnostics.size){let n=t.diagnostics.map(e.changes),r=null,s=t.panel;if(t.selected){let i=e.changes.mapPos(t.selected.from,1);r=Nh(n,t.selected.diagnostic,i)||Nh(n,null,i)}!n.size&&s&&e.state.facet(c0).autoPanel&&(s=null),t=new hu(n,s,r)}for(let n of e.effects)if(n.is(Xq)){let r=e.state.facet(c0).autoPanel?n.value.length?u0.open:null:t.panel;t=hu.init(n.value,r,e.state)}else n.is(fj)?t=new hu(t.diagnostics,n.value?u0.open:null,t.selected):n.is(Yq)&&(t=new hu(t.diagnostics,t.panel,n.value));return t},provide:t=>[Jm.from(t,e=>e.panel),Ke.decorations.from(t,e=>e.diagnostics)]}),aue=xt.mark({class:"cm-lintRange cm-lintRange-active"});function lue(t,e,n){let{diagnostics:r}=t.state.field(Ei),s,i=-1,a=-1;r.between(e-(n<0?1:0),e+(n>0?1:0),(c,h,{spec:f})=>{if(e>=c&&e<=h&&(c==h||(e>c||n>0)&&(eZq(t,n,!1)))}const cue=t=>{let e=t.state.field(Ei,!1);(!e||!e.panel)&&t.dispatch({effects:iue(t.state,[fj.of(!0)])});let n=Zm(t,u0.open);return n&&n.dom.querySelector(".cm-panel-lint ul").focus(),!0},dE=t=>{let e=t.state.field(Ei,!1);return!e||!e.panel?!1:(t.dispatch({effects:fj.of(!1)}),!0)},uue=t=>{let e=t.state.field(Ei,!1);if(!e)return!1;let n=t.state.selection.main,r=e.diagnostics.iter(n.to+1);return!r.value&&(r=e.diagnostics.iter(0),!r.value||r.from==n.from&&r.to==n.to)?!1:(t.dispatch({selection:{anchor:r.from,head:r.to},scrollIntoView:!0}),!0)},due=[{key:"Mod-Shift-m",run:cue,preventDefault:!0},{key:"F8",run:uue}],c0=nt.define({combine(t){return{sources:t.map(e=>e.source).filter(e=>e!=null),...gl(t.map(e=>e.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null,hideOn:()=>null},{delay:Math.max,markerFilter:hE,tooltipFilter:hE,needsRefresh:(e,n)=>e?n?r=>e(r)||n(r):e:n,hideOn:(e,n)=>e?n?(r,s,i)=>e(r,s,i)||n(r,s,i):e:n,autoPanel:(e,n)=>e||n})}}});function hE(t,e){return t?e?(n,r)=>e(t(n,r),r):t:e}function Kq(t){let e=[];if(t)e:for(let{name:n}of t){for(let r=0;ri.toLowerCase()==s.toLowerCase())){e.push(s);continue e}}e.push("")}return e}function Zq(t,e,n){var r;let s=n?Kq(e.actions):[];return Wn("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},Wn("span",{class:"cm-diagnosticText"},e.renderMessage?e.renderMessage(t):e.message),(r=e.actions)===null||r===void 0?void 0:r.map((i,a)=>{let o=!1,c=x=>{if(x.preventDefault(),o)return;o=!0;let y=Nh(t.state.field(Ei).diagnostics,e);y&&i.apply(t,y.from,y.to)},{name:h}=i,f=s[a]?h.indexOf(s[a]):-1,m=f<0?h:[h.slice(0,f),Wn("u",h.slice(f,f+1)),h.slice(f+1)],g=i.markClass?" "+i.markClass:"";return Wn("button",{type:"button",class:"cm-diagnosticAction"+g,onclick:c,onmousedown:c,"aria-label":` Action: ${h}${f<0?"":` (access key "${s[a]})"`}.`},m)}),e.source&&Wn("div",{class:"cm-diagnosticSource"},e.source))}class hue extends xl{constructor(e){super(),this.sev=e}eq(e){return e.sev==this.sev}toDOM(){return Wn("span",{class:"cm-lintPoint cm-lintPoint-"+this.sev})}}class fE{constructor(e,n){this.diagnostic=n,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=Zq(e,n,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class u0{constructor(e){this.view=e,this.items=[];let n=s=>{if(s.keyCode==27)dE(this.view),this.view.focus();else if(s.keyCode==38||s.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(s.keyCode==40||s.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(s.keyCode==36)this.moveSelection(0);else if(s.keyCode==35)this.moveSelection(this.items.length-1);else if(s.keyCode==13)this.view.focus();else if(s.keyCode>=65&&s.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:i}=this.items[this.selectedIndex],a=Kq(i.actions);for(let o=0;o{for(let i=0;idE(this.view)},"×")),this.update()}get selectedIndex(){let e=this.view.state.field(Ei).selected;if(!e)return-1;for(let n=0;n{for(let f of h.diagnostics){if(a.has(f))continue;a.add(f);let m=-1,g;for(let x=r;xr&&(this.items.splice(r,m-r),s=!0)),n&&g.diagnostic==n.diagnostic?g.dom.hasAttribute("aria-selected")||(g.dom.setAttribute("aria-selected","true"),i=g):g.dom.hasAttribute("aria-selected")&&g.dom.removeAttribute("aria-selected"),r++}});r({sel:i.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:o,panel:c})=>{let h=c.height/this.list.offsetHeight;o.topc.bottom&&(this.list.scrollTop+=(o.bottom-c.bottom)/h)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),s&&this.sync()}sync(){let e=this.list.firstChild;function n(){let r=e;e=r.nextSibling,r.remove()}for(let r of this.items)if(r.dom.parentNode==this.list){for(;e!=r.dom;)n();e=r.dom.nextSibling}else this.list.insertBefore(r.dom,e);for(;e;)n()}moveSelection(e){if(this.selectedIndex<0)return;let n=this.view.state.field(Ei),r=Nh(n.diagnostics,this.items[e].diagnostic);r&&this.view.dispatch({selection:{anchor:r.from,head:r.to},scrollIntoView:!0,effects:Yq.of(r)})}static open(e){return new u0(e)}}function fue(t,e='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,${encodeURIComponent(t)}')`}function bx(t){return fue(``,'width="6" height="3"')}const mue=Ke.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnostic-hint":{borderLeft:"5px solid #66d"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px",cursor:"pointer"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:bx("#d11")},".cm-lintRange-warning":{backgroundImage:bx("orange")},".cm-lintRange-info":{backgroundImage:bx("#999")},".cm-lintRange-hint":{backgroundImage:bx("#66d")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-lintPoint-hint":{"&:after":{borderBottomColor:"#66d"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}}});function pue(t){return t=="error"?4:t=="warning"?3:t=="info"?2:1}function gue(t){let e="hint",n=1;for(let r of t){let s=pue(r.severity);s>n&&(n=s,e=r.severity)}return e}const xue=[Ei,Ke.decorations.compute([Ei],t=>{let{selected:e,panel:n}=t.field(Ei);return!e||!n||e.from==e.to?xt.none:xt.set([aue.range(e.from,e.to)])}),Zie(lue,{hideOn:sue}),mue];var mE=function(e){e===void 0&&(e={});var{crosshairCursor:n=!1}=e,r=[];e.closeBracketsKeymap!==!1&&(r=r.concat(Xce)),e.defaultKeymap!==!1&&(r=r.concat(Aoe)),e.searchKeymap!==!1&&(r=r.concat(sce)),e.historyKeymap!==!1&&(r=r.concat(Ble)),e.foldKeymap!==!1&&(r=r.concat(Xae)),e.completionKeymap!==!1&&(r=r.concat(Gq)),e.lintKeymap!==!1&&(r=r.concat(due));var s=[];return e.lineNumbers!==!1&&s.push(cae()),e.highlightActiveLineGutter!==!1&&s.push(hae()),e.highlightSpecialChars!==!1&&s.push(Cie()),e.history!==!1&&s.push(_le()),e.foldGutter!==!1&&s.push(Jae()),e.drawSelection!==!1&&s.push(gie()),e.dropCursor!==!1&&s.push(wie()),e.allowMultipleSelections!==!1&&s.push(dn.allowMultipleSelections.of(!0)),e.indentOnInput!==!1&&s.push(qae()),e.syntaxHighlighting!==!1&&s.push(BB(rle,{fallback:!0})),e.bracketMatching!==!1&&s.push(ule()),e.closeBrackets!==!1&&s.push(Vce()),e.autocompletion!==!1&&s.push(nue()),e.rectangularSelection!==!1&&s.push(Fie()),n!==!1&&s.push(Hie()),e.highlightActiveLine!==!1&&s.push(Rie()),e.highlightSelectionMatches!==!1&&s.push(Boe()),e.tabSize&&typeof e.tabSize=="number"&&s.push(J0.of(" ".repeat(e.tabSize))),s.concat([K0.of(r.flat())]).filter(Boolean)};const vue="#e5c07b",pE="#e06c75",yue="#56b6c2",bue="#ffffff",h1="#abb2bf",VS="#7d8799",wue="#61afef",Sue="#98c379",gE="#d19a66",kue="#c678dd",jue="#21252b",xE="#2c313a",vE="#282c34",Qw="#353a42",Oue="#3E4451",yE="#528bff",Nue=Ke.theme({"&":{color:h1,backgroundColor:vE},".cm-content":{caretColor:yE},".cm-cursor, .cm-dropCursor":{borderLeftColor:yE},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:Oue},".cm-panels":{backgroundColor:jue,color:h1},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:vE,color:VS,border:"none"},".cm-activeLineGutter":{backgroundColor:xE},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:Qw},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:Qw,borderBottomColor:Qw},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:xE,color:h1}}},{dark:!0}),Cue=tp.define([{tag:xe.keyword,color:kue},{tag:[xe.name,xe.deleted,xe.character,xe.propertyName,xe.macroName],color:pE},{tag:[xe.function(xe.variableName),xe.labelName],color:wue},{tag:[xe.color,xe.constant(xe.name),xe.standard(xe.name)],color:gE},{tag:[xe.definition(xe.name),xe.separator],color:h1},{tag:[xe.typeName,xe.className,xe.number,xe.changed,xe.annotation,xe.modifier,xe.self,xe.namespace],color:vue},{tag:[xe.operator,xe.operatorKeyword,xe.url,xe.escape,xe.regexp,xe.link,xe.special(xe.string)],color:yue},{tag:[xe.meta,xe.comment],color:VS},{tag:xe.strong,fontWeight:"bold"},{tag:xe.emphasis,fontStyle:"italic"},{tag:xe.strikethrough,textDecoration:"line-through"},{tag:xe.link,color:VS,textDecoration:"underline"},{tag:xe.heading,fontWeight:"bold",color:pE},{tag:[xe.atom,xe.bool,xe.special(xe.variableName)],color:gE},{tag:[xe.processingInstruction,xe.string,xe.inserted],color:Sue},{tag:xe.invalid,color:bue}]),Jq=[Nue,BB(Cue)];var Tue=Ke.theme({"&":{backgroundColor:"#fff"}},{dark:!1}),Eue=function(e){e===void 0&&(e={});var{indentWithTab:n=!0,editable:r=!0,readOnly:s=!1,theme:i="light",placeholder:a="",basicSetup:o=!0}=e,c=[];switch(n&&c.unshift(K0.of([Roe])),o&&(typeof o=="boolean"?c.unshift(mE()):c.unshift(mE(o))),a&&c.unshift(Lie(a)),i){case"light":c.push(Tue);break;case"dark":c.push(Jq);break;case"none":break;default:c.push(i);break}return r===!1&&c.push(Ke.editable.of(!1)),s&&c.push(dn.readOnly.of(!0)),[...c]},_ue=t=>({line:t.state.doc.lineAt(t.state.selection.main.from),lineCount:t.state.doc.lines,lineBreak:t.state.lineBreak,length:t.state.doc.length,readOnly:t.state.readOnly,tabSize:t.state.tabSize,selection:t.state.selection,selectionAsSingle:t.state.selection.asSingle().main,ranges:t.state.selection.ranges,selectionCode:t.state.sliceDoc(t.state.selection.main.from,t.state.selection.main.to),selections:t.state.selection.ranges.map(e=>t.state.sliceDoc(e.from,e.to)),selectedText:t.state.selection.ranges.some(e=>!e.empty)});class Mue{constructor(e,n){this.timeLeftMS=void 0,this.timeoutMS=void 0,this.isCancelled=!1,this.isTimeExhausted=!1,this.callbacks=[],this.timeLeftMS=n,this.timeoutMS=n,this.callbacks.push(e)}tick(){if(!this.isCancelled&&!this.isTimeExhausted&&(this.timeLeftMS--,this.timeLeftMS<=0)){this.isTimeExhausted=!0;var e=this.callbacks.slice();this.callbacks.length=0,e.forEach(n=>{try{n()}catch(r){console.error("TimeoutLatch callback error:",r)}})}}cancel(){this.isCancelled=!0,this.callbacks.length=0}reset(){this.timeLeftMS=this.timeoutMS,this.isCancelled=!1,this.isTimeExhausted=!1}get isDone(){return this.isCancelled||this.isTimeExhausted}}class bE{constructor(){this.interval=null,this.latches=new Set}add(e){this.latches.add(e),this.start()}remove(e){this.latches.delete(e),this.latches.size===0&&this.stop()}start(){this.interval===null&&(this.interval=setInterval(()=>{this.latches.forEach(e=>{e.tick(),e.isDone&&this.remove(e)})},1))}stop(){this.interval!==null&&(clearInterval(this.interval),this.interval=null)}}var Hw=null,Aue=()=>typeof window>"u"?new bE:(Hw||(Hw=new bE),Hw),wE=pl.define(),Rue=200,Due=[];function zue(t){var{value:e,selection:n,onChange:r,onStatistics:s,onCreateEditor:i,onUpdate:a,extensions:o=Due,autoFocus:c,theme:h="light",height:f=null,minHeight:m=null,maxHeight:g=null,width:x=null,minWidth:y=null,maxWidth:w=null,placeholder:S="",editable:k=!0,readOnly:N=!1,indentWithTab:C=!0,basicSetup:T=!0,root:_,initialState:E}=t,[M,L]=b.useState(),[P,I]=b.useState(),[Q,U]=b.useState(),ee=b.useState(()=>({current:null}))[0],z=b.useState(()=>({current:null}))[0],H=Ke.theme({"&":{height:f,minHeight:m,maxHeight:g,width:x,minWidth:y,maxWidth:w},"& .cm-scroller":{height:"100% !important"}}),B=Ke.updateListener.of(G=>{if(G.docChanged&&typeof r=="function"&&!G.transactions.some(W=>W.annotation(wE))){ee.current?ee.current.reset():(ee.current=new Mue(()=>{if(z.current){var W=z.current;z.current=null,W()}ee.current=null},Rue),Aue().add(ee.current));var R=G.state.doc,se=R.toString();r(se,G)}s&&s(_ue(G))}),X=Eue({theme:h,editable:k,readOnly:N,placeholder:S,indentWithTab:C,basicSetup:T}),J=[B,H,...X];return a&&typeof a=="function"&&J.push(Ke.updateListener.of(a)),J=J.concat(o),b.useLayoutEffect(()=>{if(M&&!Q){var G={doc:e,selection:n,extensions:J},R=E?dn.fromJSON(E.json,G,E.fields):dn.create(G);if(U(R),!P){var se=new Ke({state:R,parent:M,root:_});I(se),i&&i(se,R)}}return()=>{P&&(U(void 0),I(void 0))}},[M,Q]),b.useEffect(()=>{t.container&&L(t.container)},[t.container]),b.useEffect(()=>()=>{P&&(P.destroy(),I(void 0)),ee.current&&(ee.current.cancel(),ee.current=null)},[P]),b.useEffect(()=>{c&&P&&P.focus()},[c,P]),b.useEffect(()=>{P&&P.dispatch({effects:Lt.reconfigure.of(J)})},[h,o,f,m,g,x,y,w,S,k,N,C,T,r,a]),b.useEffect(()=>{if(e!==void 0){var G=P?P.state.doc.toString():"";if(P&&e!==G){var R=ee.current&&!ee.current.isDone,se=()=>{P&&e!==P.state.doc.toString()&&P.dispatch({changes:{from:0,to:P.state.doc.toString().length,insert:e||""},annotations:[wE.of(!0)]})};R?z.current=se:se()}}},[e,P]),{state:Q,setState:U,view:P,setView:I,container:M,setContainer:L}}var Pue=["className","value","selection","extensions","onChange","onStatistics","onCreateEditor","onUpdate","autoFocus","theme","height","minHeight","maxHeight","width","minWidth","maxWidth","basicSetup","placeholder","indentWithTab","editable","readOnly","root","initialState"],eF=b.forwardRef((t,e)=>{var{className:n,value:r="",selection:s,extensions:i=[],onChange:a,onStatistics:o,onCreateEditor:c,onUpdate:h,autoFocus:f,theme:m="light",height:g,minHeight:x,maxHeight:y,width:w,minWidth:S,maxWidth:k,basicSetup:N,placeholder:C,indentWithTab:T,editable:_,readOnly:E,root:M,initialState:L}=t,P=jY(t,Pue),I=b.useRef(null),{state:Q,view:U,container:ee,setContainer:z}=zue({root:M,value:r,autoFocus:f,theme:m,height:g,minHeight:x,maxHeight:y,width:w,minWidth:S,maxWidth:k,basicSetup:N,placeholder:C,indentWithTab:T,editable:_,readOnly:E,selection:s,onChange:a,onStatistics:o,onCreateEditor:c,onUpdate:h,extensions:i,initialState:L});b.useImperativeHandle(e,()=>({editor:I.current,state:Q,view:U}),[I,ee,Q,U]);var H=b.useCallback(X=>{I.current=X,z(X)},[z]);if(typeof r!="string")throw new Error("value must be typeof string but got "+typeof r);var B=typeof m=="string"?"cm-theme-"+m:"cm-theme";return l.jsx("div",OY({ref:H,className:""+B+(n?" "+n:"")},P))});eF.displayName="CodeMirror";var SE={};class ev{constructor(e,n,r,s,i,a,o,c,h,f=0,m){this.p=e,this.stack=n,this.state=r,this.reducePos=s,this.pos=i,this.score=a,this.buffer=o,this.bufferBase=c,this.curContext=h,this.lookAhead=f,this.parent=m}toString(){return`[${this.stack.filter((e,n)=>n%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,n,r=0){let s=e.parser.context;return new ev(e,[],n,r,r,0,[],0,s?new kE(s,s.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,n){this.stack.push(this.state,n,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var n;let r=e>>19,s=e&65535,{parser:i}=this.p,a=this.reducePos=2e3&&!(!((n=this.p.parser.nodeSet.types[s])===null||n===void 0)&&n.isAnonymous)&&(h==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=f):this.p.lastBigReductionSizec;)this.stack.pop();this.reduceContext(s,h)}storeNode(e,n,r,s=4,i=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]0&&a.buffer[o-4]==0&&a.buffer[o-1]>-1){if(n==r)return;if(a.buffer[o-2]>=n){a.buffer[o-2]=r;return}}}if(!i||this.pos==r)this.buffer.push(e,n,r,s);else{let a=this.buffer.length;if(a>0&&(this.buffer[a-4]!=0||this.buffer[a-1]<0)){let o=!1;for(let c=a;c>0&&this.buffer[c-2]>r;c-=4)if(this.buffer[c-1]>=0){o=!0;break}if(o)for(;a>0&&this.buffer[a-2]>r;)this.buffer[a]=this.buffer[a-4],this.buffer[a+1]=this.buffer[a-3],this.buffer[a+2]=this.buffer[a-2],this.buffer[a+3]=this.buffer[a-1],a-=4,s>4&&(s-=4)}this.buffer[a]=e,this.buffer[a+1]=n,this.buffer[a+2]=r,this.buffer[a+3]=s}}shift(e,n,r,s){if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let i=e,{parser:a}=this.p;(s>this.pos||n<=a.maxNode)&&(this.pos=s,a.stateFlag(i,1)||(this.reducePos=s)),this.pushState(i,r),this.shiftContext(n,r),n<=a.maxNode&&this.buffer.push(n,r,s,4)}else this.pos=s,this.shiftContext(n,r),n<=this.p.parser.maxNode&&this.buffer.push(n,r,s,4)}apply(e,n,r,s){e&65536?this.reduce(e):this.shift(e,n,r,s)}useNode(e,n){let r=this.p.reused.length-1;(r<0||this.p.reused[r]!=e)&&(this.p.reused.push(e),r++);let s=this.pos;this.reducePos=this.pos=s+e.length,this.pushState(n,s),this.buffer.push(r,s,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,n=e.buffer.length;for(;n>0&&e.buffer[n-2]>e.reducePos;)n-=4;let r=e.buffer.slice(n),s=e.bufferBase+n;for(;e&&s==e.bufferBase;)e=e.parent;return new ev(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,r,s,this.curContext,this.lookAhead,e)}recoverByDelete(e,n){let r=e<=this.p.parser.maxNode;r&&this.storeNode(e,this.pos,n,4),this.storeNode(0,this.pos,n,r?8:4),this.pos=this.reducePos=n,this.score-=190}canShift(e){for(let n=new Lue(this);;){let r=this.p.parser.stateSlot(n.state,4)||this.p.parser.hasAction(n.state,e);if(r==0)return!1;if((r&65536)==0)return!0;n.reduce(r)}}recoverByInsert(e){if(this.stack.length>=300)return[];let n=this.p.parser.nextStates(this.state);if(n.length>8||this.stack.length>=120){let s=[];for(let i=0,a;ic&1&&o==a)||s.push(n[i],a)}n=s}let r=[];for(let s=0;s>19,s=n&65535,i=this.stack.length-r*3;if(i<0||e.getGoto(this.stack[i],s,!1)<0){let a=this.findForcedReduction();if(a==null)return!1;n=a}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(n),!0}findForcedReduction(){let{parser:e}=this.p,n=[],r=(s,i)=>{if(!n.includes(s))return n.push(s),e.allActions(s,a=>{if(!(a&393216))if(a&65536){let o=(a>>19)-i;if(o>1){let c=a&65535,h=this.stack.length-o*3;if(h>=0&&e.getGoto(this.stack[h],c,!1)>=0)return o<<19|65536|c}}else{let o=r(a,i+1);if(o!=null)return o}})};return r(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let n=0;nthis.lookAhead&&(this.emitLookAhead(),this.lookAhead=e)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}}class kE{constructor(e,n){this.tracker=e,this.context=n,this.hash=e.strict?e.hash(n):0}}class Lue{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let n=e&65535,r=e>>19;r==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(r-1)*3;let s=this.start.p.parser.getGoto(this.stack[this.base-3],n,!0);this.state=s}}class tv{constructor(e,n,r){this.stack=e,this.pos=n,this.index=r,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,n=e.bufferBase+e.buffer.length){return new tv(e,n,n-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new tv(this.stack,this.pos,this.index)}}function wx(t,e=Uint16Array){if(typeof t!="string")return t;let n=null;for(let r=0,s=0;r=92&&a--,a>=34&&a--;let c=a-32;if(c>=46&&(c-=46,o=!0),i+=c,o)break;i*=46}n?n[s++]=i:n=new e(i)}return n}class f1{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const jE=new f1;class Iue{constructor(e,n){this.input=e,this.ranges=n,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=jE,this.rangeIndex=0,this.pos=this.chunkPos=n[0].from,this.range=n[0],this.end=n[n.length-1].to,this.readNext()}resolveOffset(e,n){let r=this.range,s=this.rangeIndex,i=this.pos+e;for(;ir.to:i>=r.to;){if(s==this.ranges.length-1)return null;let a=this.ranges[++s];i+=a.from-r.to,r=a}return i}clipPos(e){if(e>=this.range.from&&ee)return Math.max(e,n.from);return this.end}peek(e){let n=this.chunkOff+e,r,s;if(n>=0&&n=this.chunk2Pos&&ro.to&&(this.chunk2=this.chunk2.slice(0,o.to-r)),s=this.chunk2.charCodeAt(0)}}return r>=this.token.lookAhead&&(this.token.lookAhead=r+1),s}acceptToken(e,n=0){let r=n?this.resolveOffset(n,-1):this.pos;if(r==null||r=this.chunk2Pos&&this.posthis.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,n){if(n?(this.token=n,n.start=e,n.lookAhead=e+1,n.value=n.extended=-1):this.token=jE,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e=this.chunkPos&&n<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,n-this.chunkPos);if(e>=this.chunk2Pos&&n<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,n-this.chunk2Pos);if(e>=this.range.from&&n<=this.range.to)return this.input.read(e,n);let r="";for(let s of this.ranges){if(s.from>=n)break;s.to>e&&(r+=this.input.read(Math.max(s.from,e),Math.min(s.to,n)))}return r}}class lh{constructor(e,n){this.data=e,this.id=n}token(e,n){let{parser:r}=n.p;Bue(this.data,e,n,this.id,r.data,r.tokenPrecTable)}}lh.prototype.contextual=lh.prototype.fallback=lh.prototype.extend=!1;lh.prototype.fallback=lh.prototype.extend=!1;class oy{constructor(e,n={}){this.token=e,this.contextual=!!n.contextual,this.fallback=!!n.fallback,this.extend=!!n.extend}}function Bue(t,e,n,r,s,i){let a=0,o=1<0){let y=t[x];if(c.allows(y)&&(e.token.value==-1||e.token.value==y||que(y,e.token.value,s,i))){e.acceptToken(y);break}}let f=e.next,m=0,g=t[a+2];if(e.next<0&&g>m&&t[h+g*3-3]==65535){a=t[h+g*3-1];continue e}for(;m>1,y=h+x+(x<<1),w=t[y],S=t[y+1]||65536;if(f=S)m=x+1;else{a=t[y+2],e.advance();continue e}}break}}function OE(t,e,n){for(let r=e,s;(s=t[r])!=65535;r++)if(s==n)return r-e;return-1}function que(t,e,n,r){let s=OE(n,r,e);return s<0||OE(n,r,t)e)&&!r.type.isError)return n<0?Math.max(0,Math.min(r.to-1,e-25)):Math.min(t.length,Math.max(r.from+1,e+25));if(n<0?r.prevSibling():r.nextSibling())break;if(!r.parent())return n<0?0:t.length}}class Fue{constructor(e,n){this.fragments=e,this.nodeSet=n,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?NE(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?NE(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(ee)return this.nextStart=a,null;if(i instanceof Xn){if(a==e){if(a=Math.max(this.safeFrom,e)&&(this.trees.push(i),this.start.push(a),this.index.push(0))}else this.index[n]++,this.nextStart=a+i.length}}}class $ue{constructor(e,n){this.stream=n,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(r=>new f1)}getActions(e){let n=0,r=null,{parser:s}=e.p,{tokenizers:i}=s,a=s.stateSlot(e.state,3),o=e.curContext?e.curContext.hash:0,c=0;for(let h=0;hm.end+25&&(c=Math.max(m.lookAhead,c)),m.value!=0)){let g=n;if(m.extended>-1&&(n=this.addActions(e,m.extended,m.end,n)),n=this.addActions(e,m.value,m.end,n),!f.extend&&(r=m,n>g))break}}for(;this.actions.length>n;)this.actions.pop();return c&&e.setLookAhead(c),!r&&e.pos==this.stream.end&&(r=new f1,r.value=e.p.parser.eofTerm,r.start=r.end=e.pos,n=this.addActions(e,r.value,r.end,n)),this.mainToken=r,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let n=new f1,{pos:r,p:s}=e;return n.start=r,n.end=Math.min(r+1,s.stream.end),n.value=r==s.stream.end?s.parser.eofTerm:0,n}updateCachedToken(e,n,r){let s=this.stream.clipPos(r.pos);if(n.token(this.stream.reset(s,e),r),e.value>-1){let{parser:i}=r.p;for(let a=0;a=0&&r.p.parser.dialect.allows(o>>1)){(o&1)==0?e.value=o>>1:e.extended=o>>1;break}}}else e.value=0,e.end=this.stream.clipPos(s+1)}putAction(e,n,r,s){for(let i=0;ie.bufferLength*4?new Fue(r,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,n=this.minStackPos,r=this.stacks=[],s,i;if(this.bigReductionCount>300&&e.length==1){let[a]=e;for(;a.forceReduce()&&a.stack.length&&a.stack[a.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let a=0;an)r.push(o);else{if(this.advanceStack(o,r,e))continue;{s||(s=[],i=[]),s.push(o);let c=this.tokens.getMainToken(o);i.push(c.value,c.end)}}break}}if(!r.length){let a=s&&Uue(s);if(a)return ki&&console.log("Finish with "+this.stackID(a)),this.stackToTree(a);if(this.parser.strict)throw ki&&s&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+n);this.recovering||(this.recovering=5)}if(this.recovering&&s){let a=this.stoppedAt!=null&&s[0].pos>this.stoppedAt?s[0]:this.runRecovery(s,i,r);if(a)return ki&&console.log("Force-finish "+this.stackID(a)),this.stackToTree(a.forceAll())}if(this.recovering){let a=this.recovering==1?1:this.recovering*3;if(r.length>a)for(r.sort((o,c)=>c.score-o.score);r.length>a;)r.pop();r.some(o=>o.reducePos>n)&&this.recovering--}else if(r.length>1){e:for(let a=0;a500&&h.buffer.length>500)if((o.score-h.score||o.buffer.length-h.buffer.length)>0)r.splice(c--,1);else{r.splice(a--,1);continue e}}}r.length>12&&r.splice(12,r.length-12)}this.minStackPos=r[0].pos;for(let a=1;a ":"";if(this.stoppedAt!=null&&s>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let h=e.curContext&&e.curContext.tracker.strict,f=h?e.curContext.hash:0;for(let m=this.fragments.nodeAt(s);m;){let g=this.parser.nodeSet.types[m.type.id]==m.type?i.getGoto(e.state,m.type.id):-1;if(g>-1&&m.length&&(!h||(m.prop(Yt.contextHash)||0)==f))return e.useNode(m,g),ki&&console.log(a+this.stackID(e)+` (via reuse of ${i.getName(m.type.id)})`),!0;if(!(m instanceof Xn)||m.children.length==0||m.positions[0]>0)break;let x=m.children[0];if(x instanceof Xn&&m.positions[0]==0)m=x;else break}}let o=i.stateSlot(e.state,4);if(o>0)return e.reduce(o),ki&&console.log(a+this.stackID(e)+` (via always-reduce ${i.getName(o&65535)})`),!0;if(e.stack.length>=8400)for(;e.stack.length>6e3&&e.forceReduce(););let c=this.tokens.getActions(e);for(let h=0;hs?n.push(y):r.push(y)}return!1}advanceFully(e,n){let r=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>r)return CE(e,n),!0}}runRecovery(e,n,r){let s=null,i=!1;for(let a=0;a ":"";if(o.deadEnd&&(i||(i=!0,o.restart(),ki&&console.log(f+this.stackID(o)+" (restarted)"),this.advanceFully(o,r))))continue;let m=o.split(),g=f;for(let x=0;x<10&&m.forceReduce()&&(ki&&console.log(g+this.stackID(m)+" (via force-reduce)"),!this.advanceFully(m,r));x++)ki&&(g=this.stackID(m)+" -> ");for(let x of o.recoverByInsert(c))ki&&console.log(f+this.stackID(x)+" (via recover-insert)"),this.advanceFully(x,r);this.stream.end>o.pos?(h==o.pos&&(h++,c=0),o.recoverByDelete(c,h),ki&&console.log(f+this.stackID(o)+` (via recover-delete ${this.parser.getName(c)})`),CE(o,r)):(!s||s.scoret;class Vue{constructor(e){this.start=e.start,this.shift=e.shift||Uw,this.reduce=e.reduce||Uw,this.reuse=e.reuse||Uw,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}}class d0 extends V6{constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (14)`);let n=e.nodeNames.split(" ");this.minRepeatTerm=n.length;for(let o=0;oe.topRules[o][1]),s=[];for(let o=0;o=0)i(f,c,o[h++]);else{let m=o[h+-f];for(let g=-f;g>0;g--)i(o[h++],c,m);h++}}}this.nodeSet=new Jv(n.map((o,c)=>qs.define({name:c>=this.minRepeatTerm?void 0:o,id:c,props:s[c],top:r.indexOf(c)>-1,error:c==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(c)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=yB;let a=wx(e.tokenData);this.context=e.context,this.specializerSpecs=e.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let o=0;otypeof o=="number"?new lh(a,o):o),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,n,r){let s=new Que(this,e,n,r);for(let i of this.wrappers)s=i(s,e,n,r);return s}getGoto(e,n,r=!1){let s=this.goto;if(n>=s[0])return-1;for(let i=s[n+1];;){let a=s[i++],o=a&1,c=s[i++];if(o&&r)return c;for(let h=i+(a>>1);i0}validAction(e,n){return!!this.allActions(e,r=>r==n?!0:null)}allActions(e,n){let r=this.stateSlot(e,4),s=r?n(r):void 0;for(let i=this.stateSlot(e,1);s==null;i+=3){if(this.data[i]==65535)if(this.data[i+1]==1)i=eo(this.data,i+2);else break;s=n(eo(this.data,i+1))}return s}nextStates(e){let n=[];for(let r=this.stateSlot(e,1);;r+=3){if(this.data[r]==65535)if(this.data[r+1]==1)r=eo(this.data,r+2);else break;if((this.data[r+2]&1)==0){let s=this.data[r+1];n.some((i,a)=>a&1&&i==s)||n.push(this.data[r],s)}}return n}configure(e){let n=Object.assign(Object.create(d0.prototype),this);if(e.props&&(n.nodeSet=this.nodeSet.extend(...e.props)),e.top){let r=this.topRules[e.top];if(!r)throw new RangeError(`Invalid top rule name ${e.top}`);n.top=r}return e.tokenizers&&(n.tokenizers=this.tokenizers.map(r=>{let s=e.tokenizers.find(i=>i.from==r);return s?s.to:r})),e.specializers&&(n.specializers=this.specializers.slice(),n.specializerSpecs=this.specializerSpecs.map((r,s)=>{let i=e.specializers.find(o=>o.from==r.external);if(!i)return r;let a=Object.assign(Object.assign({},r),{external:i.to});return n.specializers[s]=TE(a),a})),e.contextTracker&&(n.context=e.contextTracker),e.dialect&&(n.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(n.strict=e.strict),e.wrap&&(n.wrappers=n.wrappers.concat(e.wrap)),e.bufferLength!=null&&(n.bufferLength=e.bufferLength),n}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let n=this.dynamicPrecedences;return n==null?0:n[e]||0}parseDialect(e){let n=Object.keys(this.dialects),r=n.map(()=>!1);if(e)for(let i of e.split(" ")){let a=n.indexOf(i);a>=0&&(r[a]=!0)}let s=null;for(let i=0;ir)&&n.p.parser.stateFlag(n.state,2)&&(!e||e.scoret.external(n,r)<<1|e}return t.get}const Wue=1,tF=194,nF=195,Gue=196,EE=197,Xue=198,Yue=199,Kue=200,Zue=2,rF=3,_E=201,Jue=24,ede=25,tde=49,nde=50,rde=55,sde=56,ide=57,ade=59,lde=60,ode=61,cde=62,ude=63,dde=65,hde=238,fde=71,mde=241,pde=242,gde=243,xde=244,vde=245,yde=246,bde=247,wde=248,sF=72,Sde=249,kde=250,jde=251,Ode=252,Nde=253,Cde=254,Tde=255,Ede=256,_de=73,Mde=77,Ade=263,Rde=112,Dde=130,zde=151,Pde=152,Lde=155,Pu=10,h0=13,mj=32,cy=9,pj=35,Ide=40,Bde=46,US=123,ME=125,iF=39,aF=34,AE=92,qde=111,Fde=120,$de=78,Qde=117,Hde=85,Vde=new Set([ede,tde,nde,Ade,dde,Dde,sde,ide,hde,cde,ude,sF,_de,Mde,lde,ode,zde,Pde,Lde,Rde]);function Ww(t){return t==Pu||t==h0}function Gw(t){return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102}const Ude=new oy((t,e)=>{let n;if(t.next<0)t.acceptToken(Yue);else if(e.context.flags&m1)Ww(t.next)&&t.acceptToken(Xue,1);else if(((n=t.peek(-1))<0||Ww(n))&&e.canShift(EE)){let r=0;for(;t.next==mj||t.next==cy;)t.advance(),r++;(t.next==Pu||t.next==h0||t.next==pj)&&t.acceptToken(EE,-r)}else Ww(t.next)&&t.acceptToken(Gue,1)},{contextual:!0}),Wde=new oy((t,e)=>{let n=e.context;if(n.flags)return;let r=t.peek(-1);if(r==Pu||r==h0){let s=0,i=0;for(;;){if(t.next==mj)s++;else if(t.next==cy)s+=8-s%8;else break;t.advance(),i++}s!=n.indent&&t.next!=Pu&&t.next!=h0&&t.next!=pj&&(s[t,e|lF])),Yde=new Vue({start:Gde,reduce(t,e,n,r){return t.flags&m1&&Vde.has(e)||(e==fde||e==sF)&&t.flags&lF?t.parent:t},shift(t,e,n,r){return e==tF?new p1(t,Xde(r.read(r.pos,n.pos)),0):e==nF?t.parent:e==Jue||e==rde||e==ade||e==rF?new p1(t,0,m1):RE.has(e)?new p1(t,0,RE.get(e)|t.flags&m1):t},hash(t){return t.hash}}),Kde=new oy(t=>{for(let e=0;e<5;e++){if(t.next!="print".charCodeAt(e))return;t.advance()}if(!/\w/.test(String.fromCharCode(t.next)))for(let e=0;;e++){let n=t.peek(e);if(!(n==mj||n==cy)){n!=Ide&&n!=Bde&&n!=Pu&&n!=h0&&n!=pj&&t.acceptToken(Wue);return}}}),Zde=new oy((t,e)=>{let{flags:n}=e.context,r=n&Yl?aF:iF,s=(n&Kl)>0,i=!(n&Zl),a=(n&Jl)>0,o=t.pos;for(;!(t.next<0);)if(a&&t.next==US)if(t.peek(1)==US)t.advance(2);else{if(t.pos==o){t.acceptToken(rF,1);return}break}else if(i&&t.next==AE){if(t.pos==o){t.advance();let c=t.next;c>=0&&(t.advance(),Jde(t,c)),t.acceptToken(Zue);return}break}else if(t.next==AE&&!i&&t.peek(1)>-1)t.advance(2);else if(t.next==r&&(!s||t.peek(1)==r&&t.peek(2)==r)){if(t.pos==o){t.acceptToken(_E,s?3:1);return}break}else if(t.next==Pu){if(s)t.advance();else if(t.pos==o){t.acceptToken(_E);return}break}else t.advance();t.pos>o&&t.acceptToken(Kue)});function Jde(t,e){if(e==qde)for(let n=0;n<2&&t.next>=48&&t.next<=55;n++)t.advance();else if(e==Fde)for(let n=0;n<2&&Gw(t.next);n++)t.advance();else if(e==Qde)for(let n=0;n<4&&Gw(t.next);n++)t.advance();else if(e==Hde)for(let n=0;n<8&&Gw(t.next);n++)t.advance();else if(e==$de&&t.next==US){for(t.advance();t.next>=0&&t.next!=ME&&t.next!=iF&&t.next!=aF&&t.next!=Pu;)t.advance();t.next==ME&&t.advance()}}const ehe=U6({'async "*" "**" FormatConversion FormatSpec':xe.modifier,"for while if elif else try except finally return raise break continue with pass assert await yield match case":xe.controlKeyword,"in not and or is del":xe.operatorKeyword,"from def class global nonlocal lambda":xe.definitionKeyword,import:xe.moduleKeyword,"with as print":xe.keyword,Boolean:xe.bool,None:xe.null,VariableName:xe.variableName,"CallExpression/VariableName":xe.function(xe.variableName),"FunctionDefinition/VariableName":xe.function(xe.definition(xe.variableName)),"ClassDefinition/VariableName":xe.definition(xe.className),PropertyName:xe.propertyName,"CallExpression/MemberExpression/PropertyName":xe.function(xe.propertyName),Comment:xe.lineComment,Number:xe.number,String:xe.string,FormatString:xe.special(xe.string),Escape:xe.escape,UpdateOp:xe.updateOperator,"ArithOp!":xe.arithmeticOperator,BitOp:xe.bitwiseOperator,CompareOp:xe.compareOperator,AssignOp:xe.definitionOperator,Ellipsis:xe.punctuation,At:xe.meta,"( )":xe.paren,"[ ]":xe.squareBracket,"{ }":xe.brace,".":xe.derefOperator,", ;":xe.separator}),the={__proto__:null,await:44,or:54,and:56,in:60,not:62,is:64,if:70,else:72,lambda:76,yield:94,from:96,async:102,for:104,None:162,True:164,False:164,del:178,pass:182,break:186,continue:190,return:194,raise:202,import:206,as:208,global:212,nonlocal:214,assert:218,type:223,elif:236,while:240,try:246,except:248,finally:250,with:254,def:258,class:268,match:279,case:285},nhe=d0.deserialize({version:14,states:"##jO`QeOOP$}OSOOO&WQtO'#HUOOQS'#Co'#CoOOQS'#Cp'#CpO'vQdO'#CnO*UQtO'#HTOOQS'#HU'#HUOOQS'#DU'#DUOOQS'#HT'#HTO*rQdO'#D_O+VQdO'#DfO+gQdO'#DjO+zOWO'#DuO,VOWO'#DvO.[QtO'#GuOOQS'#Gu'#GuO'vQdO'#GtO0ZQtO'#GtOOQS'#Eb'#EbO0rQdO'#EcOOQS'#Gs'#GsO0|QdO'#GrOOQV'#Gr'#GrO1XQdO'#FYOOQS'#G^'#G^O1^QdO'#FXOOQV'#IS'#ISOOQV'#Gq'#GqOOQV'#Fq'#FqQ`QeOOO'vQdO'#CqO1lQdO'#C}O1sQdO'#DRO2RQdO'#HYO2cQtO'#EVO'vQdO'#EWOOQS'#EY'#EYOOQS'#E['#E[OOQS'#E^'#E^O2wQdO'#E`O3_QdO'#EdO3rQdO'#EfO3zQtO'#EfO1XQdO'#EiO0rQdO'#ElO1XQdO'#EnO0rQdO'#EtO0rQdO'#EwO4VQdO'#EyO4^QdO'#FOO4iQdO'#EzO0rQdO'#FOO1XQdO'#FQO1XQdO'#FVO4nQdO'#F[P4uOdO'#GpPOOO)CBd)CBdOOQS'#Ce'#CeOOQS'#Cf'#CfOOQS'#Cg'#CgOOQS'#Ch'#ChOOQS'#Ci'#CiOOQS'#Cj'#CjOOQS'#Cl'#ClO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO5TQdO'#DoOOQS,5:Y,5:YO5hQdO'#HdOOQS,5:],5:]O5uQ!fO,5:]O5zQtO,59YO1lQdO,59bO1lQdO,59bO1lQdO,59bO8jQdO,59bO8oQdO,59bO8vQdO,59jO8}QdO'#HTO:TQdO'#HSOOQS'#HS'#HSOOQS'#D['#D[O:lQdO,59aO'vQdO,59aO:zQdO,59aOOQS,59y,59yO;PQdO,5:RO'vQdO,5:ROOQS,5:Q,5:QO;_QdO,5:QO;dQdO,5:XO'vQdO,5:XO'vQdO,5:VOOQS,5:U,5:UO;uQdO,5:UO;zQdO,5:WOOOW'#Fy'#FyOOOOQS'#Ds'#DsOOQS1G/w1G/wOOQS1G.|1G.|O!/[QtO1G.|O!/cQtO1G.|O1lQdO1G.|O!0OQdO1G/UOOQS'#DZ'#DZO0rQdO,59tOOQS1G.{1G.{O!0VQdO1G/eO!0gQdO1G/eO!0oQdO1G/fO'vQdO'#H[O!0tQdO'#H[O!0yQtO1G.{O!1ZQdO,59iO!2aQdO,5=zO!2qQdO,5=zO!2yQdO1G/mO!3OQtO1G/mOOQS1G/l1G/lO!3`QdO,5=uO!4VQdO,5=uO0rQdO1G/qO!4tQdO1G/sO!4yQtO1G/sO!5ZQtO1G/qOOQS1G/p1G/pOOQS1G/r1G/rOOOW-E9w-E9wOOQS1G/{1G/{O!5kQdO'#HxO0rQdO'#HxO!5|QdO,5>cOOOW-E9x-E9xOOQS1G/|1G/|OOQS-E9{-E9{O!6[Q#xO1G2zO!6{QtO1G2zO'vQdO,5kOOQS1G1`1G1`O!8RQdO1G1`OOQS'#DV'#DVO0rQdO,5=qOOQS,5=q,5=qO!8WQdO'#FrO!8cQdO,59oO!8kQdO1G/XO!8uQtO,5=uOOQS1G3`1G3`OOQS,5:m,5:mO!9fQdO'#GtOOQS,5jO!;ZQdO,5>jO1XQdO,5>jO!;lQdO,5>iOOQS-E:R-E:RO!;qQdO1G0lO!;|QdO1G0lO!lO!lO!hO!=VQdO,5>hO!=hQdO'#EpO0rQdO1G0tO!=sQdO1G0tO!=xQgO1G0zO!AvQgO1G0}O!EqQdO,5>oO!E{QdO,5>oO!FTQtO,5>oO0rQdO1G1PO!F_QdO1G1PO4iQdO1G1UO!!vQdO1G1WOOQV,5;a,5;aO!FdQfO,5;aO!FiQgO1G1QO!JjQdO'#GZO4iQdO1G1QO4iQdO1G1QO!JzQdO,5>pO!KXQdO,5>pO1XQdO,5>pOOQV1G1U1G1UO!KaQdO'#FSO!KrQ!fO1G1WO!KzQdO1G1WOOQV1G1]1G1]O4iQdO1G1]O!LPQdO1G1]O!LXQdO'#F^OOQV1G1b1G1bO!#ZQtO1G1bPOOO1G2v1G2vP!L^OSO1G2vOOQS,5=},5=}OOQS'#Dp'#DpO0rQdO,5=}O!LfQdO,5=|O!LyQdO,5=|OOQS1G/u1G/uO!MRQdO,5>PO!McQdO,5>PO!MkQdO,5>PO!NOQdO,5>PO!N`QdO,5>POOQS1G3j1G3jOOQS7+$h7+$hO!8kQdO7+$pO#!RQdO1G.|O#!YQdO1G.|OOQS1G/`1G/`OOQS,5<`,5<`O'vQdO,5<`OOQS7+%P7+%PO#!aQdO7+%POOQS-E9r-E9rOOQS7+%Q7+%QO#!qQdO,5=vO'vQdO,5=vOOQS7+$g7+$gO#!vQdO7+%PO##OQdO7+%QO##TQdO1G3fOOQS7+%X7+%XO##eQdO1G3fO##mQdO7+%XOOQS,5<_,5<_O'vQdO,5<_O##rQdO1G3aOOQS-E9q-E9qO#$iQdO7+%]OOQS7+%_7+%_O#$wQdO1G3aO#%fQdO7+%_O#%kQdO1G3gO#%{QdO1G3gO#&TQdO7+%]O#&YQdO,5>dO#&sQdO,5>dO#&sQdO,5>dOOQS'#Dx'#DxO#'UO&jO'#DzO#'aO`O'#HyOOOW1G3}1G3}O#'fQdO1G3}O#'nQdO1G3}O#'yQ#xO7+(fO#(jQtO1G2UP#)TQdO'#GOOOQS,5nQdO,5sQdO1G4OOOQS-E9y-E9yO#?^QdO1G4OO<[QdO'#H{OOOO'#D{'#D{OOOO'#F|'#F|O#?oO&jO,5:fOOOW,5>e,5>eOOOW7+)i7+)iO#?zQdO7+)iO#@SQdO1G2zO#@mQdO1G2zP'vQdO'#FuO0rQdO<mO#BQQdO,5>mOOQS1G0v1G0vOOQS<rO#KgQdO,5>rO#KrQdO,5>rO#K}QdO,5>qO#L`QdO,5>qOOQS1G1Y1G1YOOQS,5;p,5;pOOQV<VAN>VO$ oQdO<cAN>cO0rQdO1G1|O$!PQtO1G1|P$!ZQdO'#FvOOQS1G2R1G2RP$!hQdO'#F{O$!uQdO7+)jO$#`QdO,5>gOOOO-E9z-E9zOOOW<tO$4{QdO,5>tO1XQdO,5vO$)nQdO,5>vOOQS1G1p1G1pOOQS,5<[,5<[OOQU7+'P7+'PO$+zQdO1G/iO$)nQdO,5wO$8zQdO,5>wOOQS1G1s1G1sOOQS7+'S7+'SP$)nQdO'#GdO$9SQdO1G4bO$9^QdO1G4bO$9fQdO1G4bOOQS7+%T7+%TO$9tQdO1G1tO$:SQtO'#FaO$:ZQdO,5<}OOQS,5<},5<}O$:iQdO1G4cOOQS-E:a-E:aO$)nQdO,5<|O$:pQdO,5<|O$:uQdO7+)|OOQS-E:`-E:`O$;PQdO7+)|O$)nQdO,5S~O%cOS%^OSSOS%]PQ~OPdOVaOfoOhYOopOs!POvqO!PrO!Q{O!T!SO!U!RO!XZO!][O!h`O!r`O!s`O!t`O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#l!QO#o!TO#s!UO#u!VO#z!WO#}hO$P!XO%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~O%]!YO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%j![O%k!]O%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aO~Ok%xXl%xXm%xXn%xXo%xXp%xXs%xXz%xX{%xX!x%xX#g%xX%[%xX%_%xX%z%xXg%xX!T%xX!U%xX%{%xX!W%xX![%xX!Q%xX#[%xXt%xX!m%xX~P%SOfoOhYO!XZO!][O!h`O!r`O!s`O!t`O%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~Oz%wX{%wX#g%wX%[%wX%_%wX%z%wX~Ok!pOl!qOm!oOn!oOo!rOp!sOs!tO!x%wX~P)pOV!zOg!|Oo0cOv0qO!PrO~P'vOV#OOo0cOv0qO!W#PO~P'vOV#SOa#TOo0cOv0qO![#UO~P'vOQ#XO%`#XO%a#ZO~OQ#^OR#[O%`#^O%a#`O~OV%iX_%iXa%iXh%iXk%iXl%iXm%iXn%iXo%iXp%iXs%iXz%iX!X%iX!f%iX%j%iX%k%iX%l%iX%m%iX%n%iX%o%iX%p%iX%q%iX%r%iX%s%iXg%iX!T%iX!U%iX~O&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O{%iX!x%iX#g%iX%[%iX%_%iX%z%iX%{%iX!W%iX![%iX!Q%iX#[%iXt%iX!m%iX~P,eOz#dO{%hX!x%hX#g%hX%[%hX%_%hX%z%hX~Oo0cOv0qO~P'vO#g#gO%[#iO%_#iO~O%uWO~O!T#nO#u!VO#z!WO#}hO~OopO~P'vOV#sOa#tO%uWO{wP~OV#xOo0cOv0qO!Q#yO~P'vO{#{O!x$QO%z#|O#g!yX%[!yX%_!yX~OV#xOo0cOv0qO#g#SX%[#SX%_#SX~P'vOo0cOv0qO#g#WX%[#WX%_#WX~P'vOh$WO%uWO~O!f$YO!r$YO%uWO~OV$eO~P'vO!U$gO#s$hO#u$iO~O{$jO~OV$qO~P'vOS$sO%[$rO%_$rO%c$tO~OV$}Oa$}Og%POo0cOv0qO~P'vOo0cOv0qO{%SO~P'vO&Y%UO~Oa!bOh!iO!X!kO!f!mOVba_bakbalbambanbaobapbasbazba{ba!xba#gba%[ba%_ba%jba%kba%lba%mba%nba%oba%pba%qba%rba%sba%zbagba!Tba!Uba%{ba!Wba![ba!Qba#[batba!mba~On%ZO~Oo%ZO~P'vOo0cO~P'vOk0eOl0fOm0dOn0dOo0mOp0nOs0rOg%wX!T%wX!U%wX%{%wX!W%wX![%wX!Q%wX#[%wX!m%wX~P)pO%{%]Og%vXz%vX!T%vX!U%vX!W%vX{%vX~Og%_Oz%`O!T%dO!U%cO~Og%_O~Oz%gO!T%dO!U%cO!W&SX~O!W%kO~Oz%lO{%nO!T%dO!U%cO![%}X~O![%rO~O![%sO~OQ#XO%`#XO%a%uO~OV%wOo0cOv0qO!PrO~P'vOQ#^OR#[O%`#^O%a%zO~OV!qa_!qaa!qah!qak!qal!qam!qan!qao!qap!qas!qaz!qa{!qa!X!qa!f!qa!x!qa#g!qa%[!qa%_!qa%j!qa%k!qa%l!qa%m!qa%n!qa%o!qa%p!qa%q!qa%r!qa%s!qa%z!qag!qa!T!qa!U!qa%{!qa!W!qa![!qa!Q!qa#[!qat!qa!m!qa~P#yOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P%SOV&OOopOvqO{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P'vOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#g$zX%[$zX%_$zX~P'vO#g#gO%[&TO%_&TO~O!f&UOh&sX%[&sXz&sX#[&sX#g&sX%_&sX#Z&sXg&sX~Oh!iO%[&WO~Okealeameaneaoeapeaseazea{ea!xea#gea%[ea%_ea%zeagea!Tea!Uea%{ea!Wea![ea!Qea#[eatea!mea~P%SOsqazqa{qa#gqa%[qa%_qa%zqa~Ok!pOl!qOm!oOn!oOo!rOp!sO!xqa~PEcO%z&YOz%yX{%yX~O%uWOz%yX{%yX~Oz&]O{wX~O{&_O~Oz%lO#g%}X%[%}X%_%}Xg%}X{%}X![%}X!m%}X%z%}X~OV0lOo0cOv0qO!PrO~P'vO%z#|O#gUa%[Ua%_Ua~Oz&hO#g&PX%[&PX%_&PXn&PX~P%SOz&kO!Q&jO#g#Wa%[#Wa%_#Wa~Oz&lO#[&nO#g&rX%[&rX%_&rXg&rX~O!f$YO!r$YO#Z&qO%uWO~O#Z&qO~Oz&sO#g&tX%[&tX%_&tX~Oz&uO#g&pX%[&pX%_&pX{&pX~O!X&wO%z&xO~Oz&|On&wX~P%SOn'PO~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO%['UO~P'vOt'YO#p'WO#q'XOP#naV#naf#nah#nao#nas#nav#na!P#na!Q#na!T#na!U#na!X#na!]#na!h#na!r#na!s#na!t#na!{#na!}#na#P#na#R#na#T#na#X#na#Z#na#^#na#_#na#a#na#c#na#l#na#o#na#s#na#u#na#z#na#}#na$P#na%X#na%o#na%p#na%t#na%u#na&Z#na&[#na&]#na&^#na&_#na&`#na&a#na&b#na&c#na&d#na&e#na&f#na&g#na&h#na&i#na&j#na%Z#na%_#na~Oz'ZO#[']O{&xX~Oh'_O!X&wO~Oh!iO{$jO!X&wO~O{'eO~P%SO%['hO%_'hO~OS'iO%['hO%_'hO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%k!]O~P!#uO%kWi~P!#uOV!aO_!aOa!bOh!iO!X!kO!f!mO%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%m!_O%n!_O~P!&pO%mWi%nWi~P!&pOa!bOh!iO!X!kO!f!mOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%mWi%nWi%oWi%pWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~OV!aO_!aO%q!aO%r!aO%s!aO~P!)nOVWi_Wi%qWi%rWi%sWi~P!)nO!T%dO!U%cOg&VXz&VX~O%z'kO%{'kO~P,eOz'mOg&UX~Og'oO~Oz'pO{'rO!W&XX~Oo0cOv0qOz'pO{'sO!W&XX~P'vO!W'uO~Om!oOn!oOo!rOp!sOkjisjizji{ji!xji#gji%[ji%_ji%zji~Ol!qO~P!.aOlji~P!.aOk0eOl0fOm0dOn0dOo0mOp0nO~Ot'wO~P!/jOV'|Og'}Oo0cOv0qO~P'vOg'}Oz(OO~Og(QO~O!U(SO~Og(TOz(OO!T%dO!U%cO~P%SOk0eOl0fOm0dOn0dOo0mOp0nOgqa!Tqa!Uqa%{qa!Wqa![qa!Qqa#[qatqa!mqa~PEcOV'|Oo0cOv0qO!W&Sa~P'vOz(WO!W&Sa~O!W(XO~Oz(WO!T%dO!U%cO!W&Sa~P%SOV(]Oo0cOv0qO![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~P'vOz(^O![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~O![(aO~Oz(^O!T%dO!U%cO![%}a~P%SOz(dO!T%dO!U%cO![&Ta~P%SOz(gO{&lX![&lX!m&lX%z&lX~O{(kO![(mO!m(nO%z(jO~OV&OOopOvqO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~P'vOz(pO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~O!f&UOh&sa%[&saz&sa#[&sa#g&sa%_&sa#Z&sag&sa~O%[(uO~OV#sOa#tO%uWO~Oz&]O{wa~OopOvqO~P'vOz(^O#g%}a%[%}a%_%}ag%}a{%}a![%}a!m%}a%z%}a~P%SOz(zO#g%hX%[%hX%_%hX%z%hX~O%z#|O#gUi%[Ui%_Ui~O#g&Pa%[&Pa%_&Pan&Pa~P'vOz(}O#g&Pa%[&Pa%_&Pan&Pa~O%uWO#g&ra%[&ra%_&rag&ra~Oz)SO#g&ra%[&ra%_&rag&ra~Og)VO~OV)WOh$WO%uWO~O#Z)XO~O%uWO#g&ta%[&ta%_&ta~Oz)ZO#g&ta%[&ta%_&ta~Oo0cOv0qO#g&pa%[&pa%_&pa{&pa~P'vOz)^O#g&pa%[&pa%_&pa{&pa~OV)`Oa)`O%uWO~O%z)eO~Ot)hO#j)gOP#hiV#hif#hih#hio#his#hiv#hi!P#hi!Q#hi!T#hi!U#hi!X#hi!]#hi!h#hi!r#hi!s#hi!t#hi!{#hi!}#hi#P#hi#R#hi#T#hi#X#hi#Z#hi#^#hi#_#hi#a#hi#c#hi#l#hi#o#hi#s#hi#u#hi#z#hi#}#hi$P#hi%X#hi%o#hi%p#hi%t#hi%u#hi&Z#hi&[#hi&]#hi&^#hi&_#hi&`#hi&a#hi&b#hi&c#hi&d#hi&e#hi&f#hi&g#hi&h#hi&i#hi&j#hi%Z#hi%_#hi~Ot)iOP#kiV#kif#kih#kio#kis#kiv#ki!P#ki!Q#ki!T#ki!U#ki!X#ki!]#ki!h#ki!r#ki!s#ki!t#ki!{#ki!}#ki#P#ki#R#ki#T#ki#X#ki#Z#ki#^#ki#_#ki#a#ki#c#ki#l#ki#o#ki#s#ki#u#ki#z#ki#}#ki$P#ki%X#ki%o#ki%p#ki%t#ki%u#ki&Z#ki&[#ki&]#ki&^#ki&_#ki&`#ki&a#ki&b#ki&c#ki&d#ki&e#ki&f#ki&g#ki&h#ki&i#ki&j#ki%Z#ki%_#ki~OV)kOn&wa~P'vOz)lOn&wa~Oz)lOn&wa~P%SOn)pO~O%Y)tO~Ot)wO#p'WO#q)vOP#niV#nif#nih#nio#nis#niv#ni!P#ni!Q#ni!T#ni!U#ni!X#ni!]#ni!h#ni!r#ni!s#ni!t#ni!{#ni!}#ni#P#ni#R#ni#T#ni#X#ni#Z#ni#^#ni#_#ni#a#ni#c#ni#l#ni#o#ni#s#ni#u#ni#z#ni#}#ni$P#ni%X#ni%o#ni%p#ni%t#ni%u#ni&Z#ni&[#ni&]#ni&^#ni&_#ni&`#ni&a#ni&b#ni&c#ni&d#ni&e#ni&f#ni&g#ni&h#ni&i#ni&j#ni%Z#ni%_#ni~OV)zOo0cOv0qO{$jO~P'vOo0cOv0qO{&xa~P'vOz*OO{&xa~OV*SOa*TOg*WO%q*UO%uWO~O{$jO&{*YO~Oh'_O~Oh!iO{$jO~O%[*_O~O%[*aO%_*aO~OV$}Oa$}Oo0cOv0qOg&Ua~P'vOz*dOg&Ua~Oo0cOv0qO{*gO!W&Xa~P'vOz*hO!W&Xa~Oo0cOv0qOz*hO{*kO!W&Xa~P'vOo0cOv0qOz*hO!W&Xa~P'vOz*hO{*kO!W&Xa~Om0dOn0dOo0mOp0nOgjikjisjizji!Tji!Uji%{ji!Wji{ji![ji#gji%[ji%_ji!Qji#[jitji!mji%zji~Ol0fO~P!NkOlji~P!NkOV'|Og*pOo0cOv0qO~P'vOn*rO~Og*pOz*tO~Og*uO~OV'|Oo0cOv0qO!W&Si~P'vOz*vO!W&Si~O!W*wO~OV(]Oo0cOv0qO![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~P'vOz*zO!T%dO!U%cO![&Ti~Oz*}O![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~O![+OO~Oa+QOo0cOv0qO![&Ti~P'vOz*zO![&Ti~O![+SO~OV+UOo0cOv0qO{&la![&la!m&la%z&la~P'vOz+VO{&la![&la!m&la%z&la~O!]+YO&n+[O![!nX~O![+^O~O{(kO![+_O~O{(kO![+_O!m+`O~OV&OOopOvqO{%hq!x%hq#g%hq%[%hq%_%hq%z%hq~P'vOz$ri{$ri!x$ri#g$ri%[$ri%_$ri%z$ri~P%SOV&OOopOvqO~P'vOV&OOo0cOv0qO#g%ha%[%ha%_%ha%z%ha~P'vOz+aO#g%ha%[%ha%_%ha%z%ha~Oz$ia#g$ia%[$ia%_$ian$ia~P%SO#g&Pi%[&Pi%_&Pin&Pi~P'vOz+dO#g#Wq%[#Wq%_#Wq~O#[+eOz$va#g$va%[$va%_$vag$va~O%uWO#g&ri%[&ri%_&rig&ri~Oz+gO#g&ri%[&ri%_&rig&ri~OV+iOh$WO%uWO~O%uWO#g&ti%[&ti%_&ti~Oo0cOv0qO#g&pi%[&pi%_&pi{&pi~P'vO{#{Oz#eX!W#eX~Oz+mO!W&uX~O!W+oO~Ot+rO#j)gOP#hqV#hqf#hqh#hqo#hqs#hqv#hq!P#hq!Q#hq!T#hq!U#hq!X#hq!]#hq!h#hq!r#hq!s#hq!t#hq!{#hq!}#hq#P#hq#R#hq#T#hq#X#hq#Z#hq#^#hq#_#hq#a#hq#c#hq#l#hq#o#hq#s#hq#u#hq#z#hq#}#hq$P#hq%X#hq%o#hq%p#hq%t#hq%u#hq&Z#hq&[#hq&]#hq&^#hq&_#hq&`#hq&a#hq&b#hq&c#hq&d#hq&e#hq&f#hq&g#hq&h#hq&i#hq&j#hq%Z#hq%_#hq~On$|az$|a~P%SOV)kOn&wi~P'vOz+yOn&wi~Oz,TO{$jO#[,TO~O#q,VOP#nqV#nqf#nqh#nqo#nqs#nqv#nq!P#nq!Q#nq!T#nq!U#nq!X#nq!]#nq!h#nq!r#nq!s#nq!t#nq!{#nq!}#nq#P#nq#R#nq#T#nq#X#nq#Z#nq#^#nq#_#nq#a#nq#c#nq#l#nq#o#nq#s#nq#u#nq#z#nq#}#nq$P#nq%X#nq%o#nq%p#nq%t#nq%u#nq&Z#nq&[#nq&]#nq&^#nq&_#nq&`#nq&a#nq&b#nq&c#nq&d#nq&e#nq&f#nq&g#nq&h#nq&i#nq&j#nq%Z#nq%_#nq~O#[,WOz%Oa{%Oa~Oo0cOv0qO{&xi~P'vOz,YO{&xi~O{#{O%z,[Og&zXz&zX~O%uWOg&zXz&zX~Oz,`Og&yX~Og,bO~O%Y,eO~O!T%dO!U%cOg&Viz&Vi~OV$}Oa$}Oo0cOv0qOg&Ui~P'vO{,hOz$la!W$la~Oo0cOv0qO{,iOz$la!W$la~P'vOo0cOv0qO{*gO!W&Xi~P'vOz,lO!W&Xi~Oo0cOv0qOz,lO!W&Xi~P'vOz,lO{,oO!W&Xi~Og$hiz$hi!W$hi~P%SOV'|Oo0cOv0qO~P'vOn,qO~OV'|Og,rOo0cOv0qO~P'vOV'|Oo0cOv0qO!W&Sq~P'vOz$gi![$gi#g$gi%[$gi%_$gig$gi{$gi!m$gi%z$gi~P%SOV(]Oo0cOv0qO~P'vOa+QOo0cOv0qO![&Tq~P'vOz,sO![&Tq~O![,tO~OV(]Oo0cOv0qO![%}q#g%}q%[%}q%_%}qg%}q{%}q!m%}q%z%}q~P'vO{,uO~OV+UOo0cOv0qO{&li![&li!m&li%z&li~P'vOz,zO{&li![&li!m&li%z&li~O!]+YO&n+[O![!na~O{(kO![,}O~OV&OOo0cOv0qO#g%hi%[%hi%_%hi%z%hi~P'vOz-OO#g%hi%[%hi%_%hi%z%hi~O%uWO#g&rq%[&rq%_&rqg&rq~Oz-RO#g&rq%[&rq%_&rqg&rq~OV)`Oa)`O%uWO!W&ua~Oz-TO!W&ua~On$|iz$|i~P%SOV)kO~P'vOV)kOn&wq~P'vOt-XOP#myV#myf#myh#myo#mys#myv#my!P#my!Q#my!T#my!U#my!X#my!]#my!h#my!r#my!s#my!t#my!{#my!}#my#P#my#R#my#T#my#X#my#Z#my#^#my#_#my#a#my#c#my#l#my#o#my#s#my#u#my#z#my#}#my$P#my%X#my%o#my%p#my%t#my%u#my&Z#my&[#my&]#my&^#my&_#my&`#my&a#my&b#my&c#my&d#my&e#my&f#my&g#my&h#my&i#my&j#my%Z#my%_#my~O%Z-]O%_-]O~P`O#q-^OP#nyV#nyf#nyh#nyo#nys#nyv#ny!P#ny!Q#ny!T#ny!U#ny!X#ny!]#ny!h#ny!r#ny!s#ny!t#ny!{#ny!}#ny#P#ny#R#ny#T#ny#X#ny#Z#ny#^#ny#_#ny#a#ny#c#ny#l#ny#o#ny#s#ny#u#ny#z#ny#}#ny$P#ny%X#ny%o#ny%p#ny%t#ny%u#ny&Z#ny&[#ny&]#ny&^#ny&_#ny&`#ny&a#ny&b#ny&c#ny&d#ny&e#ny&f#ny&g#ny&h#ny&i#ny&j#ny%Z#ny%_#ny~Oz-aO{$jO#[-aO~Oo0cOv0qO{&xq~P'vOz-dO{&xq~O%z,[Og&zaz&za~O{#{Og&zaz&za~OV*SOa*TO%q*UO%uWOg&ya~Oz-hOg&ya~O$S-lO~OV$}Oa$}Oo0cOv0qO~P'vOo0cOv0qO{-mOz$li!W$li~P'vOo0cOv0qOz$li!W$li~P'vO{-mOz$li!W$li~Oo0cOv0qO{*gO~P'vOo0cOv0qO{*gO!W&Xq~P'vOz-pO!W&Xq~Oo0cOv0qOz-pO!W&Xq~P'vOs-sO!T%dO!U%cOg&Oq!W&Oq![&Oqz&Oq~P!/jOa+QOo0cOv0qO![&Ty~P'vOz$ji![$ji~P%SOa+QOo0cOv0qO~P'vOV+UOo0cOv0qO~P'vOV+UOo0cOv0qO{&lq![&lq!m&lq%z&lq~P'vO{(kO![-xO!m-yO%z-wO~OV&OOo0cOv0qO#g%hq%[%hq%_%hq%z%hq~P'vO%uWO#g&ry%[&ry%_&ryg&ry~OV)`Oa)`O%uWO!W&ui~Ot-}OP#m!RV#m!Rf#m!Rh#m!Ro#m!Rs#m!Rv#m!R!P#m!R!Q#m!R!T#m!R!U#m!R!X#m!R!]#m!R!h#m!R!r#m!R!s#m!R!t#m!R!{#m!R!}#m!R#P#m!R#R#m!R#T#m!R#X#m!R#Z#m!R#^#m!R#_#m!R#a#m!R#c#m!R#l#m!R#o#m!R#s#m!R#u#m!R#z#m!R#}#m!R$P#m!R%X#m!R%o#m!R%p#m!R%t#m!R%u#m!R&Z#m!R&[#m!R&]#m!R&^#m!R&_#m!R&`#m!R&a#m!R&b#m!R&c#m!R&d#m!R&e#m!R&f#m!R&g#m!R&h#m!R&i#m!R&j#m!R%Z#m!R%_#m!R~Oo0cOv0qO{&xy~P'vOV*SOa*TO%q*UO%uWOg&yi~O$S-lO%Z.VO%_.VO~OV.aOh._O!X.^O!].`O!h.YO!s.[O!t.[O%p.XO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O~Oo0cOv0qOz$lq!W$lq~P'vO{.fOz$lq!W$lq~Oo0cOv0qO{*gO!W&Xy~P'vOz.gO!W&Xy~Oo0cOv.kO~P'vOs-sO!T%dO!U%cOg&Oy!W&Oy![&Oyz&Oy~P!/jO{(kO![.nO~O{(kO![.nO!m.oO~OV*SOa*TO%q*UO%uWO~Oh.tO!f.rOz$TX#[$TX%j$TXg$TX~Os$TX{$TX!W$TX![$TX~P$-bO%o.vO%p.vOs$UXz$UX{$UX#[$UX%j$UX!W$UXg$UX![$UX~O!h.xO~Oz.|O#[/OO%j.yOs&|X{&|X!W&|Xg&|X~Oa/RO~P$)zOh.tOs&}Xz&}X{&}X#[&}X%j&}X!W&}Xg&}X![&}X~Os/VO{$jO~Oo0cOv0qOz$ly!W$ly~P'vOo0cOv0qO{*gO!W&X!R~P'vOz/ZO!W&X!R~Og&RXs&RX!T&RX!U&RX!W&RX![&RXz&RX~P!/jOs-sO!T%dO!U%cOg&Qa!W&Qa![&Qaz&Qa~O{(kO![/^O~O!f.rOh$[as$[az$[a{$[a#[$[a%j$[a!W$[ag$[a![$[a~O!h/eO~O%o.vO%p.vOs$Uaz$Ua{$Ua#[$Ua%j$Ua!W$Uag$Ua![$Ua~O%j.yOs$Yaz$Ya{$Ya#[$Ya!W$Yag$Ya![$Ya~Os&|a{&|a!W&|ag&|a~P$)nOz/jOs&|a{&|a!W&|ag&|a~O!W/mO~Og/mO~O{/oO~O![/pO~Oo0cOv0qO{*gO!W&X!Z~P'vO{/sO~O%z/tO~P$-bOz/uO#[/OO%j.yOg'PX~Oz/uOg'PX~Og/wO~O!h/xO~O#[/OOs%Saz%Sa{%Sa%j%Sa!W%Sag%Sa![%Sa~O#[/OO%j.yOs%Waz%Wa{%Wa!W%Wag%Wa~Os&|i{&|i!W&|ig&|i~P$)nOz/zO#[/OO%j.yO!['Oa~Og'Pa~P$)nOz0SOg'Pa~Oa0UO!['Oi~P$)zOz0WO!['Oi~Oz0WO#[/OO%j.yO!['Oi~O#[/OO%j.yOg$biz$bi~O%z0ZO~P$-bO#[/OO%j.yOg%Vaz%Va~Og'Pi~P$)nO{0^O~Oa0UO!['Oq~P$)zOz0`O!['Oq~O#[/OO%j.yOz%Ui![%Ui~Oa0UO~P$)zOa0UO!['Oy~P$)zO#[/OO%j.yOg$ciz$ci~O#[/OO%j.yOz%Uq![%Uq~Oz+aO#g%ha%[%ha%_%ha%z%ha~P%SOV&OOo0cOv0qO~P'vOn0hO~Oo0hO~P'vO{0iO~Ot0jO~P!/jO&]&Z&j&h&i&g&f&d&e&c&b&`&a&_&^&[%u~",goto:"!=j'QPPPPPP'RP'Z*s+[+t,_,y-fP.SP'Z.r.r'ZPPP'Z2[PPPPPP2[5PPP5PP7b7k=sPP=v>h>kPP'Z'ZPP>zPP'Z'ZPP'Z'Z'Z'Z'Z?O?w'ZP?zP@QDXGuGyPG|HWH['ZPPPH_Hk'RP'R'RP'RP'RP'RP'RP'R'R'RP'RPP'RPP'RP'RPHqH}IVPI^IdPI^PI^I^PPPI^PKrPK{LVL]KrPI^LfPI^PLmLsPLwM]MzNeLwLwNkNxLwLwLwLw! ^! d! g! l! o! y!!P!!]!!o!!u!#P!#V!#s!#y!$P!$Z!$a!$g!$y!%T!%Z!%a!%k!%q!%w!%}!&T!&Z!&e!&k!&u!&{!'U!'[!'k!'s!'}!(UPPPPPPPPPPP!([!(_!(e!(n!(x!)TPPPPPPPPPPPP!-u!/Z!3^!6oPP!6w!7W!7a!8Y!8P!8c!8i!8l!8o!8r!8z!9jPPPPPPPPPPPPPPPPP!9m!9q!9wP!:]!:a!:m!:v!;S!;j!;m!;p!;v!;|!_![!]Do!]!^Es!^!_FZ!_!`Gk!`!aHX!a!b%T!b!cIf!c!dJU!d!eK^!e!hJU!h!i!#f!i!tJU!t!u!,|!u!wJU!w!x!.t!x!}JU!}#O!0S#O#P&o#P#Q!0j#Q#R!1Q#R#SJU#S#T%T#T#UJU#U#VK^#V#YJU#Y#Z!#f#Z#fJU#f#g!,|#g#iJU#i#j!.t#j#oJU#o#p!1n#p#q!1s#q#r!2a#r#s!2f#s$g%T$g;'SJU;'S;=`KW<%lOJU`%YT&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T`%lP;=`<%l%To%v]&n`%c_OX%TXY%oY[%T[]%o]p%Tpq%oq#O%T#O#P&o#P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To&tX&n`OY%TYZ%oZ]%T]^%o^#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc'f[&n`O!_%T!_!`([!`#T%T#T#U(r#U#f%T#f#g(r#g#h(r#h#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(cTmR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(yT!mR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk)aV&n`&[ZOr%Trs)vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk){V&n`Or%Trs*bs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk*iT&n`&^ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To+PZS_&n`OY*xYZ%TZ]*x]^%T^#o*x#o#p+r#p#q*x#q#r+r#r;'S*x;'S;=`,^<%lO*x_+wTS_OY+rZ]+r^;'S+r;'S;=`,W<%lO+r_,ZP;=`<%l+ro,aP;=`<%l*xj,kV%rQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-XT!xY&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-oV%lQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.]V&n`&ZZOw%Twx.rx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.wV&n`Ow%Twx/^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/eT&n`&]ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/{ThZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc0cTgR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk0yXVZ&n`Oz%Tz{1f{!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk1mVaR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk2ZV%oZ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc2wTzR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To3_W%pZ&n`O!_%T!_!`-Q!`!a3w!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Td4OT&{S&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk4fX!fQ&n`O!O%T!O!P5R!P!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5WV&n`O!O%T!O!P5m!P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5tT!rZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti6[a!hX&n`O!Q%T!Q![6T![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S6T#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti7fZ&n`O{%T{|8X|}%T}!O8X!O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8^V&n`O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8z]!hX&n`O!Q%T!Q![8s![!l%T!l!m9s!m#R%T#R#S8s#S#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti9zT!hX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk:bX%qR&n`O!P%T!P!Q:}!Q!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj;UV%sQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti;ro!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!d%T!d!e?q!e!g%T!g!h7a!h!l%T!l!m9s!m!q%T!q!rA]!r!z%T!z!{Bq!{#R%T#R#S>_#S#U%T#U#V?q#V#X%T#X#Y7a#Y#^%T#^#_9s#_#c%T#c#dA]#d#l%T#l#mBq#m#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti=xV&n`O!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti>fc!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S>_#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti?vY&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti@mY!hX&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiAbX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBUX!hX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBv]&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiCv]!hX&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToDvV{_&n`O!_%T!_!`E]!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TcEdT%{R&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkEzT#gZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkFbXmR&n`O!^%T!^!_F}!_!`([!`!a([!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjGUV%mQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkGrV%zZ&n`O!_%T!_!`([!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkH`WmR&n`O!_%T!_!`([!`!aHx!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjIPV%nQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkIoV_Q#}P&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToJ_]&n`&YS%uZO!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoKZP;=`<%lJUoKge&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!tJU!t!uLx!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#gLx#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoMRa&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUkN_V&n`&`ZOr%TrsNts#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkNyV&n`Or%Trs! `s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! gT&n`&bZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! }V&n`&_ZOw%Twx!!dx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!!iV&n`Ow%Twx!#Ox#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!#VT&n`&aZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!#oe&n`&YS%uZOr%Trs!%Qsw%Twx!&px!Q%T!Q![JU![!c%T!c!tJU!t!u!(`!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#g!(`#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!%XV&n`&dZOr%Trs!%ns#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!%sV&n`Or%Trs!&Ys#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&aT&n`&fZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&wV&n`&cZOw%Twx!'^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!'cV&n`Ow%Twx!'xx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!(PT&n`&eZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!(ia&n`&YS%uZOr%Trs!)nsw%Twx!+^x!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!)uV&n`&hZOr%Trs!*[s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*aV&n`Or%Trs!*vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*}T&n`&jZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!+eV&n`&gZOw%Twx!+zx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,PV&n`Ow%Twx!,fx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,mT&n`&iZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!-Vi&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!dJU!d!eLx!e!hJU!h!i!(`!i!}JU!}#R%T#R#SJU#S#T%T#T#UJU#U#VLx#V#YJU#Y#Z!(`#Z#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUo!.}a&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!0ZT!XZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc!0qT!WR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj!1XV%kQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!1sO!]~k!1zV%jR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!2fO![~i!2mT%tX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T",tokenizers:[Kde,Wde,Ude,Zde,0,1,2,3,4],topRules:{Script:[0,5]},specialized:[{term:221,get:t=>the[t]||-1}],tokenPrec:7668}),DE=new yae,oF=new Set(["Script","Body","FunctionDefinition","ClassDefinition","LambdaExpression","ForStatement","MatchClause"]);function Sx(t){return(e,n,r)=>{if(r)return!1;let s=e.node.getChild("VariableName");return s&&n(s,t),!0}}const rhe={FunctionDefinition:Sx("function"),ClassDefinition:Sx("class"),ForStatement(t,e,n){if(n){for(let r=t.node.firstChild;r;r=r.nextSibling)if(r.name=="VariableName")e(r,"variable");else if(r.name=="in")break}},ImportStatement(t,e){var n,r;let{node:s}=t,i=((n=s.firstChild)===null||n===void 0?void 0:n.name)=="from";for(let a=s.getChild("import");a;a=a.nextSibling)a.name=="VariableName"&&((r=a.nextSibling)===null||r===void 0?void 0:r.name)!="as"&&e(a,i?"variable":"namespace")},AssignStatement(t,e){for(let n=t.node.firstChild;n;n=n.nextSibling)if(n.name=="VariableName")e(n,"variable");else if(n.name==":"||n.name=="AssignOp")break},ParamList(t,e){for(let n=null,r=t.node.firstChild;r;r=r.nextSibling)r.name=="VariableName"&&(!n||!/\*|AssignOp/.test(n.name))&&e(r,"variable"),n=r},CapturePattern:Sx("variable"),AsPattern:Sx("variable"),__proto__:null};function cF(t,e){let n=DE.get(e);if(n)return n;let r=[],s=!0;function i(a,o){let c=t.sliceString(a.from,a.to);r.push({label:c,type:o})}return e.cursor(Jr.IncludeAnonymous).iterate(a=>{if(a.name){let o=rhe[a.name];if(o&&o(a,i,s)||!s&&oF.has(a.name))return!1;s=!1}else if(a.to-a.from>8192){for(let o of cF(t,a.node))r.push(o);return!1}}),DE.set(e,r),r}const zE=/^[\w\xa1-\uffff][\w\d\xa1-\uffff]*$/,uF=["String","FormatString","Comment","PropertyName"];function she(t){let e=ls(t.state).resolveInner(t.pos,-1);if(uF.indexOf(e.name)>-1)return null;let n=e.name=="VariableName"||e.to-e.from<20&&zE.test(t.state.sliceDoc(e.from,e.to));if(!n&&!t.explicit)return null;let r=[];for(let s=e;s;s=s.parent)oF.has(s.name)&&(r=r.concat(cF(t.state.doc,s)));return{options:r,from:n?e.from:t.pos,validFor:zE}}const ihe=["__annotations__","__builtins__","__debug__","__doc__","__import__","__name__","__loader__","__package__","__spec__","False","None","True"].map(t=>({label:t,type:"constant"})).concat(["ArithmeticError","AssertionError","AttributeError","BaseException","BlockingIOError","BrokenPipeError","BufferError","BytesWarning","ChildProcessError","ConnectionAbortedError","ConnectionError","ConnectionRefusedError","ConnectionResetError","DeprecationWarning","EOFError","Ellipsis","EncodingWarning","EnvironmentError","Exception","FileExistsError","FileNotFoundError","FloatingPointError","FutureWarning","GeneratorExit","IOError","ImportError","ImportWarning","IndentationError","IndexError","InterruptedError","IsADirectoryError","KeyError","KeyboardInterrupt","LookupError","MemoryError","ModuleNotFoundError","NameError","NotADirectoryError","NotImplemented","NotImplementedError","OSError","OverflowError","PendingDeprecationWarning","PermissionError","ProcessLookupError","RecursionError","ReferenceError","ResourceWarning","RuntimeError","RuntimeWarning","StopAsyncIteration","StopIteration","SyntaxError","SyntaxWarning","SystemError","SystemExit","TabError","TimeoutError","TypeError","UnboundLocalError","UnicodeDecodeError","UnicodeEncodeError","UnicodeError","UnicodeTranslateError","UnicodeWarning","UserWarning","ValueError","Warning","ZeroDivisionError"].map(t=>({label:t,type:"type"}))).concat(["bool","bytearray","bytes","classmethod","complex","float","frozenset","int","list","map","memoryview","object","range","set","staticmethod","str","super","tuple","type"].map(t=>({label:t,type:"class"}))).concat(["abs","aiter","all","anext","any","ascii","bin","breakpoint","callable","chr","compile","delattr","dict","dir","divmod","enumerate","eval","exec","exit","filter","format","getattr","globals","hasattr","hash","help","hex","id","input","isinstance","issubclass","iter","len","license","locals","max","min","next","oct","open","ord","pow","print","property","quit","repr","reversed","round","setattr","slice","sorted","sum","vars","zip"].map(t=>({label:t,type:"function"}))),ahe=[Ul("def ${name}(${params}):\n ${}",{label:"def",detail:"function",type:"keyword"}),Ul("for ${name} in ${collection}:\n ${}",{label:"for",detail:"loop",type:"keyword"}),Ul("while ${}:\n ${}",{label:"while",detail:"loop",type:"keyword"}),Ul("try:\n ${}\nexcept ${error}:\n ${}",{label:"try",detail:"/ except block",type:"keyword"}),Ul(`if \${}: - -`,{label:"if",detail:"block",type:"keyword"}),Ul("if ${}:\n ${}\nelse:\n ${}",{label:"if",detail:"/ else block",type:"keyword"}),Ul("class ${name}:\n def __init__(self, ${params}):\n ${}",{label:"class",detail:"definition",type:"keyword"}),Ul("import ${module}",{label:"import",detail:"statement",type:"keyword"}),Ul("from ${module} import ${names}",{label:"from",detail:"import",type:"keyword"})],lhe=cce(uF,Iq(ihe.concat(ahe)));function Xw(t){let{node:e,pos:n}=t,r=t.lineIndent(n,-1),s=null;for(;;){let i=e.childBefore(n);if(i)if(i.name=="Comment")n=i.from;else if(i.name=="Body"||i.name=="MatchBody")t.baseIndentFor(i)+t.unit<=r&&(s=i),e=i;else if(i.name=="MatchClause")e=i;else if(i.type.is("Statement"))e=i;else break;else break}return s}function Yw(t,e){let n=t.baseIndentFor(e),r=t.lineAt(t.pos,-1),s=r.from+r.text.length;return/^\s*($|#)/.test(r.text)&&t.node.ton?null:n+t.unit}const Kw=n0.define({name:"python",parser:nhe.configure({props:[ty.add({Body:t=>{var e;let n=/^\s*(#|$)/.test(t.textAfter)&&Xw(t)||t.node;return(e=Yw(t,n))!==null&&e!==void 0?e:t.continue()},MatchBody:t=>{var e;let n=Xw(t);return(e=Yw(t,n||t.node))!==null&&e!==void 0?e:t.continue()},IfStatement:t=>/^\s*(else:|elif )/.test(t.textAfter)?t.baseIndent:t.continue(),"ForStatement WhileStatement":t=>/^\s*else:/.test(t.textAfter)?t.baseIndent:t.continue(),TryStatement:t=>/^\s*(except[ :]|finally:|else:)/.test(t.textAfter)?t.baseIndent:t.continue(),MatchStatement:t=>/^\s*case /.test(t.textAfter)?t.baseIndent+t.unit:t.continue(),"TupleExpression ComprehensionExpression ParamList ArgList ParenthesizedExpression":Rw({closing:")"}),"DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression":Rw({closing:"}"}),"ArrayExpression ArrayComprehensionExpression":Rw({closing:"]"}),MemberExpression:t=>t.baseIndent+t.unit,"String FormatString":()=>null,Script:t=>{var e;let n=Xw(t);return(e=n&&Yw(t,n))!==null&&e!==void 0?e:t.continue()}}),X6.add({"ArrayExpression DictionaryExpression SetExpression TupleExpression":_B,Body:(t,e)=>({from:t.from+1,to:t.to-(t.to==e.doc.length?0:1)}),"String FormatString":(t,e)=>({from:e.doc.lineAt(t.from).to,to:t.to})})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"'''",'"""'],stringPrefixes:["f","fr","rf","r","u","b","br","rb","F","FR","RF","R","U","B","BR","RB"]},commentTokens:{line:"#"},indentOnInput:/^\s*([\}\]\)]|else:|elif |except |finally:|case\s+[^:]*:?)$/}});function ohe(){return new CB(Kw,[Kw.data.of({autocomplete:she}),Kw.data.of({autocomplete:lhe})])}const che=U6({String:xe.string,Number:xe.number,"True False":xe.bool,PropertyName:xe.propertyName,Null:xe.null,", :":xe.separator,"[ ]":xe.squareBracket,"{ }":xe.brace}),uhe=d0.deserialize({version:14,states:"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l",stateData:"#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O",goto:"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R",nodeNames:"⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array",maxTerm:25,nodeProps:[["isolate",-2,6,11,""],["openedBy",7,"{",14,"["],["closedBy",8,"}",15,"]"]],propSources:[che],skippedNodes:[0],repeatNodeCount:2,tokenData:"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~",tokenizers:[0],topRules:{JsonText:[0,1]},tokenPrec:0}),dhe=()=>t=>{try{JSON.parse(t.state.doc.toString())}catch(e){if(!(e instanceof SyntaxError))throw e;const n=hhe(e,t.state.doc);return[{from:n,message:e.message,severity:"error",to:n}]}return[]};function hhe(t,e){let n;return(n=t.message.match(/at position (\d+)/))?Math.min(+n[1],e.length):(n=t.message.match(/at line (\d+) column (\d+)/))?Math.min(e.line(+n[1]).from+ +n[2]-1,e.length):0}const fhe=n0.define({name:"json",parser:uhe.configure({props:[ty.add({Object:PT({except:/^\s*\}/}),Array:PT({except:/^\s*\]/})}),X6.add({"Object Array":_B})]}),languageData:{closeBrackets:{brackets:["[","{",'"']},indentOnInput:/^\s*[\}\]]$/}});function mhe(){return new CB(fhe)}const phe={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(t,e){let n;if(!e.inString&&(n=t.match(/^('''|"""|'|")/))&&(e.stringType=n[0],e.inString=!0),t.sol()&&!e.inString&&e.inArray===0&&(e.lhs=!0),e.inString){for(;e.inString;)if(t.match(e.stringType))e.inString=!1;else if(t.peek()==="\\")t.next(),t.next();else{if(t.eol())break;t.match(/^.[^\\\"\']*/)}return e.lhs?"property":"string"}else{if(e.inArray&&t.peek()==="]")return t.next(),e.inArray--,"bracket";if(e.lhs&&t.peek()==="["&&t.skipTo("]"))return t.next(),t.peek()==="]"&&t.next(),"atom";if(t.peek()==="#")return t.skipToEnd(),"comment";if(t.eatSpace())return null;if(e.lhs&&t.eatWhile(function(r){return r!="="&&r!=" "}))return"property";if(e.lhs&&t.peek()==="=")return t.next(),e.lhs=!1,null;if(!e.lhs&&t.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!e.lhs&&(t.match("true")||t.match("false")))return"atom";if(!e.lhs&&t.peek()==="[")return e.inArray++,t.next(),"bracket";if(!e.lhs&&t.match(/^\-?\d+(?:\.\d+)?/))return"number";t.eatSpace()||t.next()}return null},languageData:{commentTokens:{line:"#"}}},ghe={python:[ohe()],json:[mhe(),dhe()],toml:[Y6.define(phe)],text:[]};function xhe({value:t,onChange:e,language:n="text",readOnly:r=!1,height:s="400px",minHeight:i,maxHeight:a,placeholder:o,theme:c="dark",className:h=""}){const[f,m]=b.useState(!1);if(b.useEffect(()=>{m(!0)},[]),!f)return l.jsx("div",{className:`rounded-md border bg-muted animate-pulse ${h}`,style:{height:s,minHeight:i,maxHeight:a}});const g=[...ghe[n]||[],Ke.lineWrapping];return r&&g.push(Ke.editable.of(!1)),l.jsx("div",{className:`rounded-md overflow-hidden border ${h}`,children:l.jsx(eF,{value:t,height:s,minHeight:i,maxHeight:a,theme:c==="dark"?Jq:void 0,extensions:g,onChange:e,placeholder:o,basicSetup:{lineNumbers:!0,highlightActiveLineGutter:!0,highlightSpecialChars:!0,history:!0,foldGutter:!0,drawSelection:!0,dropCursor:!0,allowMultipleSelections:!0,indentOnInput:!0,syntaxHighlighting:!0,bracketMatching:!0,closeBrackets:!0,autocompletion:!0,rectangularSelection:!0,crosshairCursor:!0,highlightActiveLine:!0,highlightSelectionMatches:!0,closeBracketsKeymap:!0,defaultKeymap:!0,searchKeymap:!0,historyKeymap:!0,foldKeymap:!0,completionKeymap:!0,lintKeymap:!0}})})}function vhe(){const[t,e]=b.useState(!0),[n,r]=b.useState(!1),[s,i]=b.useState(!1),[a,o]=b.useState(!1),[c,h]=b.useState(!1),[f,m]=b.useState(!1),[g,x]=b.useState("visual"),[y,w]=b.useState(""),[S,k]=b.useState(!1),{toast:N}=ts(),[C,T]=b.useState(null),[_,E]=b.useState(null),[M,L]=b.useState(null),[P,I]=b.useState(null),[Q,U]=b.useState(null),[ee,z]=b.useState(null),[H,B]=b.useState(null),[X,J]=b.useState(null),[G,R]=b.useState(null),[se,W]=b.useState(null),[F,V]=b.useState(null),[te,ne]=b.useState(null),[K,ie]=b.useState(null),[re,ae]=b.useState(null),[_e,Ue]=b.useState(null),[Xe,Ze]=b.useState(null),[Oe,He]=b.useState(null),[Ve,Be]=b.useState(null),ut=b.useRef(null),rt=b.useRef(!0),rn=b.useRef({}),Rn=b.useCallback(async()=>{try{const Te=await are();w(Te),k(!1)}catch(Te){N({variant:"destructive",title:"加载失败",description:Te instanceof Error?Te.message:"加载源代码失败"})}},[N]),Tn=b.useCallback(async()=>{try{e(!0);const Te=await j9();rn.current=Te,T(Te.bot),E(Te.personality);const qe=Te.chat;qe.talk_value_rules||(qe.talk_value_rules=[]),L(qe),I(Te.expression),U(Te.emoji),z(Te.memory),B(Te.tool),J(Te.mood),R(Te.voice),W(Te.lpmm_knowledge),V(Te.keyword_reaction),ne(Te.response_post_process),ie(Te.chinese_typo),ae(Te.response_splitter),Ue(Te.log),Ze(Te.debug),He(Te.maim_message),Be(Te.telemetry),o(!1),rt.current=!1,await Rn()}catch(Te){console.error("加载配置失败:",Te),N({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}finally{e(!1)}},[N,Rn]);b.useEffect(()=>{Tn()},[Tn]);const Mt=b.useCallback(async(Te,qe)=>{if(!rt.current)try{i(!0),await ore(Te,qe),o(!1)}catch(Rt){console.error(`自动保存 ${Te} 失败:`,Rt),o(!0)}finally{i(!1)}},[]),vt=b.useCallback((Te,qe)=>{rt.current||(o(!0),ut.current&&clearTimeout(ut.current),ut.current=setTimeout(()=>{Mt(Te,qe)},2e3))},[Mt]);b.useEffect(()=>{C&&!rt.current&&vt("bot",C)},[C,vt]),b.useEffect(()=>{_&&!rt.current&&vt("personality",_)},[_,vt]),b.useEffect(()=>{M&&!rt.current&&vt("chat",M)},[M,vt]),b.useEffect(()=>{P&&!rt.current&&vt("expression",P)},[P,vt]),b.useEffect(()=>{Q&&!rt.current&&vt("emoji",Q)},[Q,vt]),b.useEffect(()=>{ee&&!rt.current&&vt("memory",ee)},[ee,vt]),b.useEffect(()=>{H&&!rt.current&&vt("tool",H)},[H,vt]),b.useEffect(()=>{X&&!rt.current&&vt("mood",X)},[X,vt]),b.useEffect(()=>{G&&!rt.current&&vt("voice",G)},[G,vt]),b.useEffect(()=>{se&&!rt.current&&vt("lpmm_knowledge",se)},[se,vt]),b.useEffect(()=>{F&&!rt.current&&vt("keyword_reaction",F)},[F,vt]),b.useEffect(()=>{te&&!rt.current&&vt("response_post_process",te)},[te,vt]),b.useEffect(()=>{K&&!rt.current&&vt("chinese_typo",K)},[K,vt]),b.useEffect(()=>{re&&!rt.current&&vt("response_splitter",re)},[re,vt]),b.useEffect(()=>{_e&&!rt.current&&vt("log",_e)},[_e,vt]),b.useEffect(()=>{Xe&&!rt.current&&vt("debug",Xe)},[Xe,vt]),b.useEffect(()=>{Oe&&!rt.current&&vt("maim_message",Oe)},[Oe,vt]),b.useEffect(()=>{Ve&&!rt.current&&vt("telemetry",Ve)},[Ve,vt]);const Ce=async()=>{try{r(!0),await lre(y),o(!1),k(!1),N({title:"保存成功",description:"配置已保存"}),await Tn()}catch(Te){k(!0),N({variant:"destructive",title:"保存失败",description:Te instanceof Error?Te.message:"保存配置失败"})}finally{r(!1)}},Le=async Te=>{if(a){N({variant:"destructive",title:"切换失败",description:"请先保存当前更改"});return}if(x(Te),Te==="source")await Rn();else try{const qe=await j9();rn.current=qe,T(qe.bot),E(qe.personality);const Rt=qe.chat;Rt.talk_value_rules||(Rt.talk_value_rules=[]),L(Rt),I(qe.expression),U(qe.emoji),z(qe.memory),B(qe.tool),J(qe.mood),R(qe.voice),W(qe.lpmm_knowledge),V(qe.keyword_reaction),ne(qe.response_post_process),ie(qe.chinese_typo),ae(qe.response_splitter),Ue(qe.log),Ze(qe.debug),He(qe.maim_message),Be(qe.telemetry),o(!1)}catch(qe){console.error("加载配置失败:",qe),N({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}},Ge=async()=>{try{r(!0),ut.current&&clearTimeout(ut.current);const Te={...rn.current,bot:C,personality:_,chat:M,expression:P,emoji:Q,memory:ee,tool:H,mood:X,voice:G,lpmm_knowledge:se,keyword_reaction:F,response_post_process:te,chinese_typo:K,response_splitter:re,log:_e,debug:Xe,maim_message:Oe,telemetry:Ve};await O9(Te),o(!1),N({title:"保存成功",description:"麦麦主程序配置已保存"})}catch(Te){console.error("保存配置失败:",Te),N({title:"保存失败",description:Te.message,variant:"destructive"})}finally{r(!1)}},lt=async()=>{try{h(!0),Uv().catch(()=>{}),m(!0)}catch(Te){console.error("重启失败:",Te),m(!1),N({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),h(!1)}},jt=async()=>{try{r(!0),ut.current&&clearTimeout(ut.current);const Te={...rn.current,bot:C,personality:_,chat:M,expression:P,emoji:Q,memory:ee,tool:H,mood:X,voice:G,lpmm_knowledge:se,keyword_reaction:F,response_post_process:te,chinese_typo:K,response_splitter:re,log:_e,debug:Xe,maim_message:Oe,telemetry:Ve};await O9(Te),o(!1),N({title:"保存成功",description:"配置已保存,即将重启麦麦..."}),await new Promise(qe=>setTimeout(qe,500)),await lt()}catch(Te){console.error("保存失败:",Te),N({title:"保存失败",description:Te.message,variant:"destructive"})}finally{r(!1)}},Tt=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},ke=()=>{m(!1),h(!1),N({title:"重启失败",description:"服务器未能在预期时间内恢复,请手动检查",variant:"destructive"})};return t?l.jsx(hn,{className:"h-full",children:l.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:l.jsx("div",{className:"flex items-center justify-center h-64",children:l.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):l.jsx(hn,{className:"h-full",children:l.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[l.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[l.jsxs("div",{children:[l.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦主程序配置"}),l.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的核心功能和行为设置"})]}),l.jsxs("div",{className:"flex gap-2 w-full sm:w-auto items-center",children:[l.jsx(sa,{value:g,onValueChange:Te=>Le(Te),className:"w-auto",children:l.jsxs(Mi,{className:"h-9",children:[l.jsxs(zt,{value:"visual",className:"text-xs sm:text-sm px-2 sm:px-3",children:[l.jsx(BK,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"可视化"]}),l.jsxs(zt,{value:"source",className:"text-xs sm:text-sm px-2 sm:px-3",children:[l.jsx(qK,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"源代码"]})]})}),l.jsxs(de,{onClick:g==="visual"?Ge:Ce,disabled:n||s||!a||c,size:"sm",variant:"outline",className:"flex-1 sm:flex-none",children:[l.jsx(zv,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),n?"保存中...":s?"自动保存中...":a?"保存配置":"已保存"]}),l.jsxs(Nn,{children:[l.jsx(Qr,{asChild:!0,children:l.jsxs(de,{disabled:n||s||c,size:"sm",className:"flex-1 sm:flex-none",children:[l.jsx(a6,{className:"mr-2 h-4 w-4"}),c?"重启中...":a?"保存并重启":"重启麦麦"]})}),l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认重启麦麦?"}),l.jsx(bn,{className:"space-y-3",asChild:!0,children:l.jsxs("div",{children:[l.jsx("p",{children:a?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),l.jsxs(Na,{className:"border-yellow-500/50 bg-yellow-500/10",children:[l.jsx(ra,{className:"h-4 w-4 text-yellow-600"}),l.jsxs(Ca,{className:"text-yellow-900 dark:text-yellow-100",children:[l.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",l.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",l.jsxs(xr,{children:[l.jsx(Bh,{asChild:!0,children:l.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[l.jsx(Dv,{className:"h-3 w-3"}),"如何结束程序?"]})}),l.jsxs(lr,{className:"max-w-2xl",children:[l.jsxs(or,{children:[l.jsx(cr,{children:"如何结束使用重启功能后的麦麦程序"}),l.jsx(Hr,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),l.jsxs(sa,{defaultValue:"windows",className:"w-full",children:[l.jsxs(Mi,{className:"grid w-full grid-cols-3",children:[l.jsx(zt,{value:"windows",children:"Windows"}),l.jsx(zt,{value:"macos",children:"macOS"}),l.jsx(zt,{value:"linux",children:"Linux"})]}),l.jsxs(tn,{value:"windows",className:"space-y-4 mt-4",children:[l.jsxs("div",{className:"space-y-2",children:[l.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),l.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[l.jsxs("li",{children:["按 ",l.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),l.jsxs("li",{children:['在"进程"或"详细信息"标签页中找到 ',l.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),l.jsx("li",{children:'右键点击并选择"结束任务"'})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),l.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[l.jsx("p",{children:"# 查找麦麦进程"}),l.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),l.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),l.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),l.jsxs(tn,{value:"macos",className:"space-y-4 mt-4",children:[l.jsxs("div",{className:"space-y-2",children:[l.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),l.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[l.jsxs("li",{children:["按 ",l.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"}),' 打开 Spotlight,搜索"活动监视器"']}),l.jsxs("li",{children:["在进程列表中找到 ",l.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),l.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),l.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[l.jsx("p",{children:"# 查找麦麦进程"}),l.jsx("p",{children:"ps aux | grep python | grep -v grep"}),l.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),l.jsx("p",{children:"kill -9 "}),l.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),l.jsx("p",{children:"pkill -9 python"})]})]})]}),l.jsxs(tn,{value:"linux",className:"space-y-4 mt-4",children:[l.jsxs("div",{className:"space-y-2",children:[l.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),l.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[l.jsx("p",{children:"# 查找麦麦进程"}),l.jsx("p",{children:"ps aux | grep python | grep -v grep"}),l.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),l.jsx("p",{children:"kill -9 "}),l.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),l.jsx("p",{children:'pkill -9 -f "bot.py"'}),l.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),l.jsx("p",{children:"pkill -9 python"})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),l.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[l.jsxs("li",{children:["在终端输入 ",l.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),l.jsxs("li",{children:["按 ",l.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),l.jsxs("li",{children:["按 ",l.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),l.jsx(as,{children:l.jsx(k6,{asChild:!0,children:l.jsx(de,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:a?jt:lt,children:a?"保存并重启":"确认重启"})]})]})]})]})]}),l.jsxs(Na,{children:[l.jsx(ra,{className:"h-4 w-4"}),l.jsxs(Ca,{children:["配置更新后需要",l.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),g==="source"&&l.jsxs("div",{className:"space-y-4",children:[l.jsxs(Na,{children:[l.jsx(ra,{className:"h-4 w-4"}),l.jsxs(Ca,{children:[l.jsx("strong",{children:"源代码模式(高级功能):"}),"直接编辑 TOML 配置文件。此功能仅适用于熟悉 TOML 语法的高级用户。保存时会在后端验证格式,只有格式完全正确才能保存。",S&&l.jsx("span",{className:"text-destructive font-semibold ml-2",children:"⚠️ 上次保存失败,请检查 TOML 格式"})]})]}),l.jsx(xhe,{value:y,onChange:Te=>{w(Te),o(!0),S&&k(!1)},language:"toml",theme:"dark",height:"calc(100vh - 280px)",minHeight:"500px",placeholder:"TOML 配置内容"})]}),g==="visual"&&l.jsx(l.Fragment,{children:l.jsxs(sa,{defaultValue:"bot",className:"w-full",children:[l.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:l.jsxs(Mi,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5 lg:grid-cols-10",children:[l.jsx(zt,{value:"bot",className:"flex-shrink-0",children:"基本信息"}),l.jsx(zt,{value:"personality",className:"flex-shrink-0",children:"人格"}),l.jsx(zt,{value:"chat",className:"flex-shrink-0",children:"聊天"}),l.jsx(zt,{value:"expression",className:"flex-shrink-0",children:"表达"}),l.jsx(zt,{value:"features",className:"flex-shrink-0",children:"功能"}),l.jsx(zt,{value:"processing",className:"flex-shrink-0",children:"处理"}),l.jsx(zt,{value:"mood",className:"flex-shrink-0",children:"情绪"}),l.jsx(zt,{value:"voice",className:"flex-shrink-0",children:"语音"}),l.jsx(zt,{value:"lpmm",className:"flex-shrink-0",children:"知识库"}),l.jsx(zt,{value:"other",className:"flex-shrink-0",children:"其他"})]})}),l.jsx(tn,{value:"bot",className:"space-y-4",children:C&&l.jsx(yhe,{config:C,onChange:T})}),l.jsx(tn,{value:"personality",className:"space-y-4",children:_&&l.jsx(bhe,{config:_,onChange:E})}),l.jsx(tn,{value:"chat",className:"space-y-4",children:M&&l.jsx(whe,{config:M,onChange:L})}),l.jsx(tn,{value:"expression",className:"space-y-4",children:P&&l.jsx(khe,{config:P,onChange:I})}),l.jsx(tn,{value:"features",className:"space-y-4",children:Q&&ee&&H&&l.jsx(jhe,{emojiConfig:Q,memoryConfig:ee,toolConfig:H,onEmojiChange:U,onMemoryChange:z,onToolChange:B})}),l.jsx(tn,{value:"processing",className:"space-y-4",children:F&&te&&K&&re&&l.jsx(Ohe,{keywordReactionConfig:F,responsePostProcessConfig:te,chineseTypoConfig:K,responseSplitterConfig:re,onKeywordReactionChange:V,onResponsePostProcessChange:ne,onChineseTypoChange:ie,onResponseSplitterChange:ae})}),l.jsx(tn,{value:"mood",className:"space-y-4",children:X&&l.jsx(Nhe,{config:X,onChange:J})}),l.jsx(tn,{value:"voice",className:"space-y-4",children:G&&l.jsx(Che,{config:G,onChange:R})}),l.jsx(tn,{value:"lpmm",className:"space-y-4",children:se&&l.jsx(The,{config:se,onChange:W})}),l.jsxs(tn,{value:"other",className:"space-y-4",children:[_e&&l.jsx(Ehe,{config:_e,onChange:Ue}),Xe&&l.jsx(_he,{config:Xe,onChange:Ze}),Oe&&l.jsx(Mhe,{config:Oe,onChange:He}),Ve&&l.jsx(Ahe,{config:Ve,onChange:Be})]})]})}),f&&l.jsx(N6,{onRestartComplete:Tt,onRestartFailed:ke})]})})}function yhe({config:t,onChange:e}){const n=()=>{e({...t,platforms:[...t.platforms,""]})},r=c=>{e({...t,platforms:t.platforms.filter((h,f)=>f!==c)})},s=(c,h)=>{const f=[...t.platforms];f[c]=h,e({...t,platforms:f})},i=()=>{e({...t,alias_names:[...t.alias_names,""]})},a=c=>{e({...t,alias_names:t.alias_names.filter((h,f)=>f!==c)})},o=(c,h)=>{const f=[...t.alias_names];f[c]=h,e({...t,alias_names:f})};return l.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:l.jsxs("div",{children:[l.jsx("h3",{className:"text-lg font-semibold mb-4",children:"基本信息"}),l.jsxs("div",{className:"grid gap-4",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"platform",children:"平台"}),l.jsx(Pe,{id:"platform",value:t.platform,onChange:c=>e({...t,platform:c.target.value}),placeholder:"qq"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"qq_account",children:"QQ账号"}),l.jsx(Pe,{id:"qq_account",value:t.qq_account,onChange:c=>e({...t,qq_account:c.target.value}),placeholder:"123456789"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"nickname",children:"昵称"}),l.jsx(Pe,{id:"nickname",value:t.nickname,onChange:c=>e({...t,nickname:c.target.value}),placeholder:"麦麦"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsx(ue,{children:"其他平台账号"}),l.jsxs(de,{onClick:n,size:"sm",variant:"outline",children:[l.jsx(ws,{className:"h-4 w-4 mr-1"}),"添加"]})]}),l.jsxs("div",{className:"space-y-2",children:[t.platforms.map((c,h)=>l.jsxs("div",{className:"flex gap-2",children:[l.jsx(Pe,{value:c,onChange:f=>s(h,f.target.value),placeholder:"wx:114514"}),l.jsxs(Nn,{children:[l.jsx(Qr,{asChild:!0,children:l.jsx(de,{size:"icon",variant:"outline",children:l.jsx(fn,{className:"h-4 w-4"})})}),l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认删除"}),l.jsxs(bn,{children:['确定要删除平台账号 "',c||"(空)",'" 吗?此操作无法撤销。']})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:()=>r(h),children:"删除"})]})]})]})]},h)),t.platforms.length===0&&l.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无其他平台账号"})]})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsx(ue,{children:"别名"}),l.jsxs(de,{onClick:i,size:"sm",variant:"outline",children:[l.jsx(ws,{className:"h-4 w-4 mr-1"}),"添加"]})]}),l.jsxs("div",{className:"space-y-2",children:[t.alias_names.map((c,h)=>l.jsxs("div",{className:"flex gap-2",children:[l.jsx(Pe,{value:c,onChange:f=>o(h,f.target.value),placeholder:"小麦"}),l.jsxs(Nn,{children:[l.jsx(Qr,{asChild:!0,children:l.jsx(de,{size:"icon",variant:"outline",children:l.jsx(fn,{className:"h-4 w-4"})})}),l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认删除"}),l.jsxs(bn,{children:['确定要删除别名 "',c||"(空)",'" 吗?此操作无法撤销。']})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:()=>a(h),children:"删除"})]})]})]})]},h)),t.alias_names.length===0&&l.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无别名"})]})]})]})]})})}function bhe({config:t,onChange:e}){const n=()=>{e({...t,states:[...t.states,""]})},r=i=>{e({...t,states:t.states.filter((a,o)=>o!==i)})},s=(i,a)=>{const o=[...t.states];o[i]=a,e({...t,states:o})};return l.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:l.jsxs("div",{children:[l.jsx("h3",{className:"text-lg font-semibold mb-4",children:"人格设置"}),l.jsxs("div",{className:"grid gap-4",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"personality",children:"人格特质"}),l.jsx(pr,{id:"personality",value:t.personality,onChange:i=>e({...t,personality:i.target.value}),placeholder:"描述人格特质和身份特征(建议120字以内)",rows:3}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"建议120字以内,描述人格特质和身份特征"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"reply_style",children:"表达风格"}),l.jsx(pr,{id:"reply_style",value:t.reply_style,onChange:i=>e({...t,reply_style:i.target.value}),placeholder:"描述说话的表达风格和习惯",rows:3})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"interest",children:"兴趣"}),l.jsx(pr,{id:"interest",value:t.interest,onChange:i=>e({...t,interest:i.target.value}),placeholder:"会影响麦麦对什么话题进行回复",rows:2})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"plan_style",children:"说话规则与行为风格"}),l.jsx(pr,{id:"plan_style",value:t.plan_style,onChange:i=>e({...t,plan_style:i.target.value}),placeholder:"麦麦的说话规则和行为风格",rows:5})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"visual_style",children:"识图规则"}),l.jsx(pr,{id:"visual_style",value:t.visual_style,onChange:i=>e({...t,visual_style:i.target.value}),placeholder:"识图时的处理规则",rows:3})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"private_plan_style",children:"私聊规则"}),l.jsx(pr,{id:"private_plan_style",value:t.private_plan_style,onChange:i=>e({...t,private_plan_style:i.target.value}),placeholder:"私聊的说话规则和行为风格",rows:4})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsx(ue,{children:"状态列表(人格多样性)"}),l.jsxs(de,{onClick:n,size:"sm",variant:"outline",children:[l.jsx(ws,{className:"h-4 w-4 mr-1"}),"添加状态"]})]}),l.jsx("div",{className:"space-y-2",children:t.states.map((i,a)=>l.jsxs("div",{className:"flex gap-2",children:[l.jsx(pr,{value:i,onChange:o=>s(a,o.target.value),placeholder:"描述一个人格状态",rows:2}),l.jsxs(Nn,{children:[l.jsx(Qr,{asChild:!0,children:l.jsx(de,{size:"icon",variant:"outline",children:l.jsx(fn,{className:"h-4 w-4"})})}),l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认删除"}),l.jsx(bn,{children:"确定要删除这个人格状态吗?此操作无法撤销。"})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:()=>r(a),children:"删除"})]})]})]})]},a))})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"state_probability",children:"状态替换概率"}),l.jsx(Pe,{id:"state_probability",type:"number",step:"0.1",min:"0",max:"1",value:t.state_probability,onChange:i=>e({...t,state_probability:parseFloat(i.target.value)})}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"每次构建人格时替换 personality 的概率(0.0-1.0)"})]})]})]})})}function whe({config:t,onChange:e}){const n=()=>{e({...t,talk_value_rules:[...t.talk_value_rules,{target:"",time:"00:00-23:59",value:1}]})},r=o=>{e({...t,talk_value_rules:t.talk_value_rules.filter((c,h)=>h!==o)})},s=(o,c,h)=>{const f=[...t.talk_value_rules];f[o]={...f[o],[c]:h},e({...t,talk_value_rules:f})},i=({value:o,onChange:c})=>{const[h,f]=b.useState("00"),[m,g]=b.useState("00"),[x,y]=b.useState("23"),[w,S]=b.useState("59");b.useEffect(()=>{const N=o.split("-");if(N.length===2){const[C,T]=N,[_,E]=C.split(":"),[M,L]=T.split(":");_&&f(_.padStart(2,"0")),E&&g(E.padStart(2,"0")),M&&y(M.padStart(2,"0")),L&&S(L.padStart(2,"0"))}},[o]);const k=(N,C,T,_)=>{const E=`${N}:${C}-${T}:${_}`;c(E)};return l.jsxs(ul,{children:[l.jsx(dl,{asChild:!0,children:l.jsxs(de,{variant:"outline",className:"w-full justify-start font-mono text-sm",children:[l.jsx(Zd,{className:"h-4 w-4 mr-2"}),o||"选择时间段"]})}),l.jsx(Ea,{className:"w-80",children:l.jsxs("div",{className:"space-y-4",children:[l.jsxs("div",{children:[l.jsx("h4",{className:"font-medium text-sm mb-3",children:"开始时间"}),l.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[l.jsxs("div",{children:[l.jsx(ue,{className:"text-xs",children:"小时"}),l.jsxs(qt,{value:h,onValueChange:N=>{f(N),k(N,m,x,w)},children:[l.jsx(It,{children:l.jsx(Ft,{})}),l.jsx(Bt,{children:Array.from({length:24},(N,C)=>C).map(N=>l.jsx(De,{value:N.toString().padStart(2,"0"),children:N.toString().padStart(2,"0")},N))})]})]}),l.jsxs("div",{children:[l.jsx(ue,{className:"text-xs",children:"分钟"}),l.jsxs(qt,{value:m,onValueChange:N=>{g(N),k(h,N,x,w)},children:[l.jsx(It,{children:l.jsx(Ft,{})}),l.jsx(Bt,{children:Array.from({length:60},(N,C)=>C).map(N=>l.jsx(De,{value:N.toString().padStart(2,"0"),children:N.toString().padStart(2,"0")},N))})]})]})]})]}),l.jsxs("div",{children:[l.jsx("h4",{className:"font-medium text-sm mb-3",children:"结束时间"}),l.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[l.jsxs("div",{children:[l.jsx(ue,{className:"text-xs",children:"小时"}),l.jsxs(qt,{value:x,onValueChange:N=>{y(N),k(h,m,N,w)},children:[l.jsx(It,{children:l.jsx(Ft,{})}),l.jsx(Bt,{children:Array.from({length:24},(N,C)=>C).map(N=>l.jsx(De,{value:N.toString().padStart(2,"0"),children:N.toString().padStart(2,"0")},N))})]})]}),l.jsxs("div",{children:[l.jsx(ue,{className:"text-xs",children:"分钟"}),l.jsxs(qt,{value:w,onValueChange:N=>{S(N),k(h,m,x,N)},children:[l.jsx(It,{children:l.jsx(Ft,{})}),l.jsx(Bt,{children:Array.from({length:60},(N,C)=>C).map(N=>l.jsx(De,{value:N.toString().padStart(2,"0"),children:N.toString().padStart(2,"0")},N))})]})]})]})]})]})})]})},a=({rule:o})=>{const c=`{ target = "${o.target}", time = "${o.time}", value = ${o.value.toFixed(1)} }`;return l.jsxs(ul,{children:[l.jsx(dl,{asChild:!0,children:l.jsxs(de,{variant:"outline",size:"sm",children:[l.jsx(oa,{className:"h-4 w-4 mr-1"}),"预览"]})}),l.jsx(Ea,{className:"w-96",children:l.jsxs("div",{className:"space-y-2",children:[l.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),l.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:c}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return l.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[l.jsxs("div",{children:[l.jsx("h3",{className:"text-lg font-semibold mb-4",children:"聊天设置"}),l.jsxs("div",{className:"grid gap-4",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"talk_value",children:"聊天频率(基础值)"}),l.jsx(Pe,{id:"talk_value",type:"number",step:"0.1",min:"0",max:"1",value:t.talk_value,onChange:o=>e({...t,talk_value:parseFloat(o.target.value)})}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"越小越沉默,范围 0-1"})]}),l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx(Pt,{id:"mentioned_bot_reply",checked:t.mentioned_bot_reply,onCheckedChange:o=>e({...t,mentioned_bot_reply:o})}),l.jsx(ue,{htmlFor:"mentioned_bot_reply",className:"cursor-pointer",children:"启用提及必回复"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"max_context_size",children:"上下文长度"}),l.jsx(Pe,{id:"max_context_size",type:"number",min:"1",value:t.max_context_size,onChange:o=>e({...t,max_context_size:parseInt(o.target.value)})})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"planner_smooth",children:"规划器平滑"}),l.jsx(Pe,{id:"planner_smooth",type:"number",step:"1",min:"0",value:t.planner_smooth,onChange:o=>e({...t,planner_smooth:parseFloat(o.target.value)})}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"增大数值会减小 planner 负荷,推荐 1-5,0 为关闭"})]}),l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx(Pt,{id:"enable_talk_value_rules",checked:t.enable_talk_value_rules,onCheckedChange:o=>e({...t,enable_talk_value_rules:o})}),l.jsx(ue,{htmlFor:"enable_talk_value_rules",className:"cursor-pointer",children:"启用动态发言频率规则"})]}),l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx(Pt,{id:"include_planner_reasoning",checked:t.include_planner_reasoning,onCheckedChange:o=>e({...t,include_planner_reasoning:o})}),l.jsx(ue,{htmlFor:"include_planner_reasoning",className:"cursor-pointer",children:"将 planner 推理加入 replyer"})]})]})]}),t.enable_talk_value_rules&&l.jsxs("div",{className:"border-t pt-6",children:[l.jsxs("div",{className:"flex items-center justify-between mb-4",children:[l.jsxs("div",{children:[l.jsx("h4",{className:"text-base font-semibold",children:"动态发言频率规则"}),l.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"按时段或聊天流ID调整发言频率,优先匹配具体聊天,再匹配全局规则"})]}),l.jsxs(de,{onClick:n,size:"sm",children:[l.jsx(ws,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),t.talk_value_rules&&t.talk_value_rules.length>0?l.jsx("div",{className:"space-y-4",children:t.talk_value_rules.map((o,c)=>l.jsxs("div",{className:"rounded-lg border p-4 bg-muted/50 space-y-4",children:[l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("span",{className:"text-sm font-medium text-muted-foreground",children:["规则 #",c+1]}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx(a,{rule:o}),l.jsxs(Nn,{children:[l.jsx(Qr,{asChild:!0,children:l.jsx(de,{variant:"ghost",size:"sm",children:l.jsx(fn,{className:"h-4 w-4 text-destructive"})})}),l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认删除"}),l.jsxs(bn,{children:["确定要删除规则 #",c+1," 吗?此操作无法撤销。"]})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:()=>r(c),children:"删除"})]})]})]})]})]}),l.jsxs("div",{className:"space-y-4",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{className:"text-xs font-medium",children:"配置类型"}),l.jsxs(qt,{value:o.target===""?"global":"specific",onValueChange:h=>{h==="global"?s(c,"target",""):s(c,"target","qq::group")},children:[l.jsx(It,{children:l.jsx(Ft,{})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"global",children:"全局配置"}),l.jsx(De,{value:"specific",children:"详细配置"})]})]})]}),o.target!==""&&(()=>{const h=o.target.split(":"),f=h[0]||"qq",m=h[1]||"",g=h[2]||"group";return l.jsxs("div",{className:"grid gap-4 p-4 rounded-lg bg-muted/50",children:[l.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{className:"text-xs font-medium",children:"平台"}),l.jsxs(qt,{value:f,onValueChange:x=>{s(c,"target",`${x}:${m}:${g}`)},children:[l.jsx(It,{children:l.jsx(Ft,{})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"qq",children:"QQ"}),l.jsx(De,{value:"wx",children:"微信"})]})]})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{className:"text-xs font-medium",children:"群 ID"}),l.jsx(Pe,{value:m,onChange:x=>{s(c,"target",`${f}:${x.target.value}:${g}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{className:"text-xs font-medium",children:"类型"}),l.jsxs(qt,{value:g,onValueChange:x=>{s(c,"target",`${f}:${m}:${x}`)},children:[l.jsx(It,{children:l.jsx(Ft,{})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"group",children:"群组(group)"}),l.jsx(De,{value:"private",children:"私聊(private)"})]})]})]})]}),l.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",o.target||"(未设置)"]})]})})(),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{className:"text-xs font-medium",children:"时间段 (Time)"}),l.jsx(i,{value:o.time,onChange:h=>s(c,"time",h)}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"支持跨夜区间,例如 23:00-02:00"})]}),l.jsxs("div",{className:"grid gap-3",children:[l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsx(ue,{htmlFor:`rule-value-${c}`,className:"text-xs font-medium",children:"发言频率值 (Value)"}),l.jsx(Pe,{id:`rule-value-${c}`,type:"number",step:"0.01",min:"0.01",max:"1",value:o.value,onChange:h=>{const f=parseFloat(h.target.value);isNaN(f)||s(c,"value",Math.max(.01,Math.min(1,f)))},className:"w-20 h-8 text-xs"})]}),l.jsx(V0,{value:[o.value],onValueChange:h=>s(c,"value",h[0]),min:.01,max:1,step:.01,className:"w-full"}),l.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[l.jsx("span",{children:"0.01 (极少发言)"}),l.jsx("span",{children:"0.5"}),l.jsx("span",{children:"1.0 (正常)"})]})]})]})]},c))}):l.jsx("div",{className:"text-center py-8 text-muted-foreground",children:l.jsx("p",{className:"text-sm",children:'暂无规则,点击"添加规则"按钮创建'})}),l.jsxs("div",{className:"mt-4 p-4 bg-blue-50 dark:bg-blue-950/20 border border-blue-200 dark:border-blue-800 rounded-lg",children:[l.jsx("h5",{className:"text-sm font-semibold text-blue-900 dark:text-blue-100 mb-2",children:"📝 规则说明"}),l.jsxs("ul",{className:"text-xs text-blue-800 dark:text-blue-200 space-y-1",children:[l.jsxs("li",{children:["• ",l.jsx("strong",{children:"Target 为空"}),":全局规则,对所有聊天生效"]}),l.jsxs("li",{children:["• ",l.jsx("strong",{children:"Target 指定"}),":仅对特定聊天流生效(格式:platform:id:type)"]}),l.jsxs("li",{children:["• ",l.jsx("strong",{children:"优先级"}),":先匹配具体聊天流规则,再匹配全局规则"]}),l.jsxs("li",{children:["• ",l.jsx("strong",{children:"时间支持跨夜"}),":例如 23:00-02:00 表示晚上11点到次日凌晨2点"]}),l.jsxs("li",{children:["• ",l.jsx("strong",{children:"数值范围"}),":建议 0-1,0 表示完全沉默,1 表示正常发言"]})]})]})]})]})}function She({member:t,groupIndex:e,memberIndex:n,availableChatIds:r,onUpdate:s,onRemove:i}){const a=r.includes(t)||t==="*",[o,c]=b.useState(!a);return l.jsxs("div",{className:"flex gap-2",children:[l.jsx("div",{className:"flex-1 flex gap-2",children:o?l.jsxs(l.Fragment,{children:[l.jsx(Pe,{value:t,onChange:h=>s(e,n,h.target.value),placeholder:'输入 "*" 或 "qq:123456:group"',className:"flex-1"}),r.length>0&&l.jsx(de,{size:"sm",variant:"outline",onClick:()=>c(!1),title:"切换到下拉选择",children:"下拉"})]}):l.jsxs(l.Fragment,{children:[l.jsxs(qt,{value:t,onValueChange:h=>s(e,n,h),children:[l.jsx(It,{className:"flex-1",children:l.jsx(Ft,{placeholder:"选择聊天流"})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"*",children:"* (全局共享)"}),r.map((h,f)=>l.jsx(De,{value:h,children:h},f))]})]}),l.jsx(de,{size:"sm",variant:"outline",onClick:()=>c(!0),title:"切换到手动输入",children:"输入"})]})}),l.jsxs(Nn,{children:[l.jsx(Qr,{asChild:!0,children:l.jsx(de,{size:"icon",variant:"outline",children:l.jsx(fn,{className:"h-4 w-4"})})}),l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认删除"}),l.jsxs(bn,{children:['确定要删除组成员 "',t||"(空)",'" 吗?此操作无法撤销。']})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:()=>i(e,n),children:"删除"})]})]})]})]})}function khe({config:t,onChange:e}){const n=()=>{e({...t,learning_list:[...t.learning_list,["","enable","enable","1.0"]]})},r=m=>{e({...t,learning_list:t.learning_list.filter((g,x)=>x!==m)})},s=(m,g,x)=>{const y=[...t.learning_list];y[m][g]=x,e({...t,learning_list:y})},i=({rule:m})=>{const g=`["${m[0]}", "${m[1]}", "${m[2]}", "${m[3]}"]`;return l.jsxs(ul,{children:[l.jsx(dl,{asChild:!0,children:l.jsxs(de,{variant:"outline",size:"sm",children:[l.jsx(oa,{className:"h-4 w-4 mr-1"}),"预览"]})}),l.jsx(Ea,{className:"w-96",children:l.jsxs("div",{className:"space-y-2",children:[l.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),l.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:g}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},a=()=>{e({...t,expression_groups:[...t.expression_groups,[]]})},o=m=>{e({...t,expression_groups:t.expression_groups.filter((g,x)=>x!==m)})},c=m=>{const g=[...t.expression_groups];g[m]=[...g[m],""],e({...t,expression_groups:g})},h=(m,g)=>{const x=[...t.expression_groups];x[m]=x[m].filter((y,w)=>w!==g),e({...t,expression_groups:x})},f=(m,g,x)=>{const y=[...t.expression_groups];y[m][g]=x,e({...t,expression_groups:y})};return l.jsxs("div",{className:"space-y-6",children:[l.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:l.jsxs("div",{children:[l.jsxs("div",{className:"flex items-center justify-between mb-4",children:[l.jsxs("div",{children:[l.jsx("h3",{className:"text-lg font-semibold",children:"表达学习配置"}),l.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置麦麦如何学习和使用表达方式"})]}),l.jsxs(de,{onClick:n,size:"sm",variant:"outline",children:[l.jsx(ws,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),l.jsxs("div",{className:"space-y-4",children:[t.learning_list.map((m,g)=>{const x=t.learning_list.some((C,T)=>T!==g&&C[0]===""),y=m[0]==="",w=m[0].split(":"),S=w[0]||"qq",k=w[1]||"",N=w[2]||"group";return l.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("span",{className:"text-sm font-medium",children:["规则 ",g+1," ",y&&"(全局配置)"]}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx(i,{rule:m}),l.jsxs(Nn,{children:[l.jsx(Qr,{asChild:!0,children:l.jsx(de,{size:"sm",variant:"ghost",children:l.jsx(fn,{className:"h-4 w-4"})})}),l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认删除"}),l.jsxs(bn,{children:["确定要删除学习规则 ",g+1," 吗?此操作无法撤销。"]})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:()=>r(g),children:"删除"})]})]})]})]})]}),l.jsxs("div",{className:"space-y-4",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{className:"text-xs font-medium",children:"配置类型"}),l.jsxs(qt,{value:y?"global":"specific",onValueChange:C=>{C==="global"?s(g,0,""):s(g,0,"qq::group")},disabled:x&&!y,children:[l.jsx(It,{children:l.jsx(Ft,{})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"global",children:"全局配置"}),l.jsx(De,{value:"specific",disabled:x&&!y,children:"详细配置"})]})]}),x&&!y&&l.jsx("p",{className:"text-xs text-amber-600",children:"已存在全局配置,无法创建新的全局配置"})]}),!y&&l.jsxs("div",{className:"grid gap-4 p-4 rounded-lg bg-muted/50",children:[l.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{className:"text-xs font-medium",children:"平台"}),l.jsxs(qt,{value:S,onValueChange:C=>{s(g,0,`${C}:${k}:${N}`)},children:[l.jsx(It,{children:l.jsx(Ft,{})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"qq",children:"QQ"}),l.jsx(De,{value:"wx",children:"微信"})]})]})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{className:"text-xs font-medium",children:"群 ID"}),l.jsx(Pe,{value:k,onChange:C=>{s(g,0,`${S}:${C.target.value}:${N}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{className:"text-xs font-medium",children:"类型"}),l.jsxs(qt,{value:N,onValueChange:C=>{s(g,0,`${S}:${k}:${C}`)},children:[l.jsx(It,{children:l.jsx(Ft,{})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"group",children:"群组(group)"}),l.jsx(De,{value:"private",children:"私聊(private)"})]})]})]})]}),l.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",m[0]||"(未设置)"]})]}),l.jsx("div",{className:"grid gap-2",children:l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{children:[l.jsx(ue,{className:"text-xs font-medium",children:"使用学到的表达"}),l.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦使用从聊天中学到的表达方式"})]}),l.jsx(Pt,{checked:m[1]==="enable",onCheckedChange:C=>s(g,1,C?"enable":"disable")})]})}),l.jsx("div",{className:"grid gap-2",children:l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{children:[l.jsx(ue,{className:"text-xs font-medium",children:"学习表达"}),l.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦从聊天中学习新的表达方式"})]}),l.jsx(Pt,{checked:m[2]==="enable",onCheckedChange:C=>s(g,2,C?"enable":"disable")})]})}),l.jsxs("div",{className:"grid gap-3",children:[l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsx(ue,{className:"text-xs font-medium",children:"学习强度"}),l.jsx(Pe,{type:"number",step:"0.1",min:"0",max:"5",value:m[3],onChange:C=>{const T=parseFloat(C.target.value);isNaN(T)||s(g,3,Math.max(0,Math.min(5,T)).toFixed(1))},className:"w-20 h-8 text-xs"})]}),l.jsx(V0,{value:[parseFloat(m[3])||1],onValueChange:C=>s(g,3,C[0].toFixed(1)),min:0,max:5,step:.1,className:"w-full"}),l.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[l.jsx("span",{children:"0 (不学习)"}),l.jsx("span",{children:"2.5"}),l.jsx("span",{children:"5.0 (快速学习)"})]}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"影响学习频率,最短学习间隔 = 300/学习强度(秒)"})]})]})]},g)}),t.learning_list.length===0&&l.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无学习规则,点击"添加规则"开始配置'})]})]})}),l.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:l.jsxs("div",{children:[l.jsxs("div",{className:"flex items-center justify-between mb-4",children:[l.jsxs("div",{children:[l.jsx("h3",{className:"text-lg font-semibold",children:"表达共享组配置"}),l.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置不同聊天流之间如何共享学到的表达方式"})]}),l.jsxs(de,{onClick:a,size:"sm",variant:"outline",children:[l.jsx(ws,{className:"h-4 w-4 mr-1"}),"添加共享组"]})]}),l.jsxs("div",{className:"space-y-4",children:[t.expression_groups.map((m,g)=>{const x=t.learning_list.map(y=>y[0]).filter(y=>y!=="");return l.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("span",{className:"text-sm font-medium",children:["共享组 ",g+1,m.length===1&&m[0]==="*"&&"(全局共享)"]}),l.jsxs("div",{className:"flex gap-2",children:[l.jsx(de,{onClick:()=>c(g),size:"sm",variant:"outline",children:l.jsx(ws,{className:"h-4 w-4"})}),l.jsxs(Nn,{children:[l.jsx(Qr,{asChild:!0,children:l.jsx(de,{size:"sm",variant:"ghost",children:l.jsx(fn,{className:"h-4 w-4"})})}),l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认删除"}),l.jsxs(bn,{children:["确定要删除共享组 ",g+1," 吗?此操作无法撤销。"]})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:()=>o(g),children:"删除"})]})]})]})]})]}),l.jsx("div",{className:"space-y-2",children:m.map((y,w)=>l.jsx(She,{member:y,groupIndex:g,memberIndex:w,availableChatIds:x,onUpdate:f,onRemove:h},`${g}-${w}`))}),l.jsx("p",{className:"text-xs text-muted-foreground",children:'提示:可以从下拉框选择已配置的聊天流,或手动输入。输入 "*" 启用全局共享'})]},g)}),t.expression_groups.length===0&&l.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无共享组,点击"添加共享组"开始配置'})]})]})})]})}function jhe({emojiConfig:t,memoryConfig:e,toolConfig:n,onEmojiChange:r,onMemoryChange:s,onToolChange:i}){return l.jsxs("div",{className:"space-y-6",children:[l.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:l.jsxs("div",{children:[l.jsx("h3",{className:"text-lg font-semibold mb-4",children:"工具设置"}),l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx(Pt,{id:"enable_tool",checked:n.enable_tool,onCheckedChange:a=>i({...n,enable_tool:a})}),l.jsx(ue,{htmlFor:"enable_tool",className:"cursor-pointer",children:"启用工具系统"})]}),l.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"允许麦麦使用各种工具来增强功能"})]})}),l.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:l.jsxs("div",{children:[l.jsx("h3",{className:"text-lg font-semibold mb-4",children:"记忆设置"}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"max_agent_iterations",children:"记忆思考深度"}),l.jsx(Pe,{id:"max_agent_iterations",type:"number",min:"1",value:e.max_agent_iterations,onChange:a=>s({...e,max_agent_iterations:parseInt(a.target.value)})}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"最低为 1(不深入思考)"})]})]})}),l.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:l.jsxs("div",{children:[l.jsx("h3",{className:"text-lg font-semibold mb-4",children:"表情包设置"}),l.jsxs("div",{className:"grid gap-4",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"emoji_chance",children:"表情包激活概率"}),l.jsx(Pe,{id:"emoji_chance",type:"number",step:"0.1",min:"0",max:"1",value:t.emoji_chance,onChange:a=>r({...t,emoji_chance:parseFloat(a.target.value)})}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"范围 0-1,越大越容易发送表情包"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"max_reg_num",children:"最大注册数量"}),l.jsx(Pe,{id:"max_reg_num",type:"number",min:"1",value:t.max_reg_num,onChange:a=>r({...t,max_reg_num:parseInt(a.target.value)})}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦最多可以注册的表情包数量"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),l.jsx(Pe,{id:"check_interval",type:"number",min:"1",value:t.check_interval,onChange:a=>r({...t,check_interval:parseInt(a.target.value)})}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包(注册、破损、删除)的时间间隔"})]}),l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx(Pt,{id:"do_replace",checked:t.do_replace,onCheckedChange:a=>r({...t,do_replace:a})}),l.jsx(ue,{htmlFor:"do_replace",className:"cursor-pointer",children:"达到最大数量时替换表情包"})]}),l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx(Pt,{id:"steal_emoji",checked:t.steal_emoji,onCheckedChange:a=>r({...t,steal_emoji:a})}),l.jsx(ue,{htmlFor:"steal_emoji",className:"cursor-pointer",children:"偷取表情包"})]}),l.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"允许麦麦将看到的表情包据为己有"}),l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx(Pt,{id:"content_filtration",checked:t.content_filtration,onCheckedChange:a=>r({...t,content_filtration:a})}),l.jsx(ue,{htmlFor:"content_filtration",className:"cursor-pointer",children:"启用表情包过滤"})]}),t.content_filtration&&l.jsxs("div",{className:"grid gap-2 pl-6 border-l-2 border-primary/20",children:[l.jsx(ue,{htmlFor:"filtration_prompt",children:"过滤要求"}),l.jsx(Pe,{id:"filtration_prompt",value:t.filtration_prompt,onChange:a=>r({...t,filtration_prompt:a.target.value}),placeholder:"符合公序良俗"}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"只有符合此要求的表情包才会被保存"})]})]})]})})]})}function Ohe({keywordReactionConfig:t,responsePostProcessConfig:e,chineseTypoConfig:n,responseSplitterConfig:r,onKeywordReactionChange:s,onResponsePostProcessChange:i,onChineseTypoChange:a,onResponseSplitterChange:o}){const c=()=>{s({...t,regex_rules:[...t.regex_rules,{regex:[""],reaction:""}]})},h=T=>{s({...t,regex_rules:t.regex_rules.filter((_,E)=>E!==T)})},f=(T,_,E)=>{const M=[...t.regex_rules];_==="regex"&&typeof E=="string"?M[T]={...M[T],regex:[E]}:_==="reaction"&&typeof E=="string"&&(M[T]={...M[T],reaction:E}),s({...t,regex_rules:M})},m=({regex:T,reaction:_,onRegexChange:E,onReactionChange:M})=>{const[L,P]=b.useState(!1),[I,Q]=b.useState(""),[U,ee]=b.useState(null),[z,H]=b.useState(""),[B,X]=b.useState({}),[J,G]=b.useState(""),R=b.useRef(null),[se,W]=b.useState("build"),F=K=>K.replace(/\(\?P<([^>]+)>/g,"(?<$1>"),V=(K,ie=0)=>{const re=R.current;if(!re)return;const ae=re.selectionStart||0,_e=re.selectionEnd||0,Ue=T.substring(0,ae)+K+T.substring(_e);E(Ue),setTimeout(()=>{const Xe=ae+K.length+ie;re.setSelectionRange(Xe,Xe),re.focus()},0)};b.useEffect(()=>{if(!T||!I){ee(null),X({}),G(_),H("");return}try{const K=F(T),ie=new RegExp(K,"g"),re=I.match(ie);ee(re),H("");const _e=new RegExp(K).exec(I);if(_e&&_e.groups){X(_e.groups);let Ue=_;Object.entries(_e.groups).forEach(([Xe,Ze])=>{Ue=Ue.replace(new RegExp(`\\[${Xe}\\]`,"g"),Ze||"")}),G(Ue)}else X({}),G(_)}catch(K){H(K.message),ee(null),X({}),G(_)}},[T,I,_]);const te=()=>{if(!I||!U||U.length===0)return l.jsx("span",{className:"text-muted-foreground",children:I||"请输入测试文本"});try{const K=F(T),ie=new RegExp(K,"g");let re=0;const ae=[];let _e;for(;(_e=ie.exec(I))!==null;)_e.index>re&&ae.push(l.jsx("span",{children:I.substring(re,_e.index)},`text-${re}`)),ae.push(l.jsx("span",{className:"bg-yellow-200 dark:bg-yellow-900 font-semibold",children:_e[0]},`match-${_e.index}`)),re=_e.index+_e[0].length;return re)",desc:"Python风格命名捕获组",moveCursor:-1},{label:"非捕获组",pattern:"(?:)",desc:"分组但不保存匹配结果",moveCursor:-1}]},{category:"字符类",items:[{label:"字符集",pattern:"[]",desc:"匹配括号内的任意字符",moveCursor:-1},{label:"排除字符",pattern:"[^]",desc:"匹配不在括号内的字符",moveCursor:-1},{label:"范围",pattern:"[a-z]",desc:"匹配a到z的字符"},{label:"中文字符",pattern:"[\\u4e00-\\u9fa5]",desc:"匹配中文汉字"}]},{category:"常用模板",items:[{label:"捕获词语",pattern:"(?P\\S+)",desc:"捕获一个词语"},{label:"捕获句子",pattern:"(?P.+)",desc:"捕获整个句子"},{label:"捕获数字",pattern:"(?P\\d+)",desc:"捕获一个或多个数字"},{label:"可选词语",pattern:"(?:词语1|词语2)",desc:"匹配多个可选项之一"}]}];return l.jsxs(xr,{open:L,onOpenChange:P,children:[l.jsx(Bh,{asChild:!0,children:l.jsxs(de,{variant:"outline",size:"sm",children:[l.jsx(C1,{className:"h-4 w-4 mr-1"}),"正则编辑器"]})}),l.jsxs(lr,{className:"max-w-[95vw] sm:max-w-[900px] max-h-[90vh]",children:[l.jsxs(or,{children:[l.jsx(cr,{children:"正则表达式编辑器"}),l.jsx(Hr,{className:"text-sm",children:"使用可视化工具构建正则表达式,并实时测试效果"})]}),l.jsx(hn,{className:"max-h-[calc(90vh-120px)]",children:l.jsxs(sa,{value:se,onValueChange:K=>W(K),className:"w-full",children:[l.jsxs(Mi,{className:"grid w-full grid-cols-2",children:[l.jsx(zt,{value:"build",children:"🔧 构建器"}),l.jsx(zt,{value:"test",children:"🧪 测试器"})]}),l.jsxs(tn,{value:"build",className:"space-y-4 mt-4",children:[l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{className:"text-sm font-medium",children:"正则表达式"}),l.jsx(Pe,{ref:R,value:T,onChange:K=>E(K.target.value),className:"font-mono text-sm",placeholder:"点击下方按钮构建正则表达式..."})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{className:"text-sm font-medium",children:"Reaction 内容"}),l.jsx(pr,{value:_,onChange:K=>M(K.target.value),placeholder:"使用 [捕获组名] 引用捕获的内容...",rows:3,className:"text-sm"})]}),l.jsxs("div",{className:"space-y-4 border-t pt-4",children:[ne.map(K=>l.jsxs("div",{className:"space-y-2",children:[l.jsx("h5",{className:"text-xs font-semibold text-primary",children:K.category}),l.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:K.items.map(ie=>l.jsx(de,{variant:"outline",size:"sm",className:"justify-start h-auto py-2 px-3",onClick:()=>V(ie.pattern,ie.moveCursor||0),children:l.jsxs("div",{className:"flex flex-col items-start w-full",children:[l.jsxs("div",{className:"flex items-center gap-2 w-full",children:[l.jsx("span",{className:"text-xs font-medium",children:ie.label}),l.jsx("code",{className:"ml-auto text-xs bg-muted px-1.5 py-0.5 rounded font-mono",children:ie.pattern})]}),l.jsx("span",{className:"text-xs text-muted-foreground mt-0.5",children:ie.desc})]})},ie.label))})]},K.category)),l.jsxs("div",{className:"space-y-2 border-t pt-4",children:[l.jsx("h5",{className:"text-xs font-semibold text-primary",children:"完整示例模板"}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(de,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>E("^(?P\\S{1,20})是这样的$"),children:l.jsxs("div",{className:"flex flex-col items-start w-full",children:[l.jsxs("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:["^(?P\\S","{1,20}",")是这样的$"]}),l.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「某事物是这样的」并捕获事物名称"})]})}),l.jsx(de,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>E("(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"),children:l.jsxs("div",{className:"flex flex-col items-start w-full",children:[l.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"}),l.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「我没要求你做某事」并捕获具体行为"})]})}),l.jsx(de,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>E("(?P.+?)(?:是|为什么|怎么)"),children:l.jsxs("div",{className:"flex flex-col items-start w-full",children:[l.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?P.+?)(?:是|为什么|怎么)"}),l.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"捕获问题主题词"})]})})]})]})]}),l.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[l.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 使用提示"}),l.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[l.jsx("li",{children:"点击输入框设置光标位置,然后点击按钮插入模式"}),l.jsxs("li",{children:["命名捕获组格式:",l.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"(?P<名称>模式)"})]}),l.jsxs("li",{children:["在 reaction 中使用 ",l.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"[名称]"})," 引用捕获的内容"]}),l.jsx("li",{children:"切换到测试器标签页验证正则表达式效果"})]})]})]}),l.jsxs(tn,{value:"test",className:"space-y-4 mt-4",children:[l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{className:"text-sm font-medium",children:"当前正则表达式"}),l.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:T||"(未设置)"})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{htmlFor:"test-text",className:"text-sm font-medium",children:"测试文本"}),l.jsx(pr,{id:"test-text",value:I,onChange:K=>Q(K.target.value),placeholder:`在此输入要测试的文本... -例如:打游戏是这样的`,className:"min-h-[100px] text-sm"})]}),z&&l.jsxs("div",{className:"rounded-md bg-destructive/10 border border-destructive/20 p-3",children:[l.jsx("p",{className:"text-sm text-destructive font-medium",children:"正则表达式错误"}),l.jsx("p",{className:"text-xs text-destructive/80 mt-1",children:z})]}),!z&&I&&l.jsxs("div",{className:"space-y-3",children:[l.jsx("div",{className:"flex items-center gap-2",children:U&&U.length>0?l.jsxs(l.Fragment,{children:[l.jsx("div",{className:"h-2 w-2 rounded-full bg-green-500"}),l.jsxs("span",{className:"text-sm font-medium text-green-600 dark:text-green-400",children:["匹配成功 (",U.length," 处)"]})]}):l.jsxs(l.Fragment,{children:[l.jsx("div",{className:"h-2 w-2 rounded-full bg-gray-400"}),l.jsx("span",{className:"text-sm font-medium text-muted-foreground",children:"无匹配"})]})}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{className:"text-sm font-medium",children:"匹配高亮"}),l.jsx(hn,{className:"h-40 rounded-md bg-muted p-3",children:l.jsx("div",{className:"text-sm break-words",children:te()})})]}),Object.keys(B).length>0&&l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{className:"text-sm font-medium",children:"命名捕获组"}),l.jsx(hn,{className:"h-32 rounded-md border p-3",children:l.jsx("div",{className:"space-y-2",children:Object.entries(B).map(([K,ie])=>l.jsxs("div",{className:"flex items-start gap-2 text-sm",children:[l.jsxs("span",{className:"font-mono font-semibold text-primary min-w-[80px]",children:["[",K,"]"]}),l.jsx("span",{className:"text-muted-foreground",children:"="}),l.jsx("span",{className:"font-mono bg-muted px-2 py-0.5 rounded",children:ie})]},K))})})]}),Object.keys(B).length>0&&_&&l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{className:"text-sm font-medium",children:"Reaction 替换预览"}),l.jsx(hn,{className:"h-48 rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3",children:l.jsx("div",{className:"text-sm break-words",children:J})}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"reaction 中的 [name] 已被替换为对应的捕获组值"})]})]}),l.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[l.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 测试说明"}),l.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[l.jsx("li",{children:"匹配的文本会以黄色背景高亮显示"}),l.jsx("li",{children:"命名捕获组的值会显示在下方列表中"}),l.jsx("li",{children:"Reaction 替换预览显示最终生成的反应内容"}),l.jsx("li",{children:"如需修改正则,切换回构建器标签页"})]})]})]})]})})]})]})},g=()=>{s({...t,keyword_rules:[...t.keyword_rules,{keywords:[],reaction:""}]})},x=T=>{s({...t,keyword_rules:t.keyword_rules.filter((_,E)=>E!==T)})},y=(T,_,E)=>{const M=[...t.keyword_rules];typeof E=="string"&&(M[T]={...M[T],reaction:E}),s({...t,keyword_rules:M})},w=T=>{const _=[...t.keyword_rules];_[T]={..._[T],keywords:[..._[T].keywords||[],""]},s({...t,keyword_rules:_})},S=(T,_)=>{const E=[...t.keyword_rules];E[T]={...E[T],keywords:(E[T].keywords||[]).filter((M,L)=>L!==_)},s({...t,keyword_rules:E})},k=(T,_,E)=>{const M=[...t.keyword_rules],L=[...M[T].keywords||[]];L[_]=E,M[T]={...M[T],keywords:L},s({...t,keyword_rules:M})},N=({rule:T})=>{const _=`{ regex = [${(T.regex||[]).map(E=>`"${E}"`).join(", ")}], reaction = "${T.reaction}" }`;return l.jsxs(ul,{children:[l.jsx(dl,{asChild:!0,children:l.jsxs(de,{variant:"outline",size:"sm",children:[l.jsx(oa,{className:"h-4 w-4 mr-1"}),"预览"]})}),l.jsx(Ea,{className:"w-[95vw] sm:w-[500px]",children:l.jsxs("div",{className:"space-y-2",children:[l.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),l.jsx(hn,{className:"h-60 rounded-md bg-muted p-3",children:l.jsx("pre",{className:"font-mono text-xs break-all",children:_})}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},C=({rule:T})=>{const _=`[[keyword_reaction.keyword_rules]] -keywords = [${(T.keywords||[]).map(E=>`"${E}"`).join(", ")}] -reaction = "${T.reaction}"`;return l.jsxs(ul,{children:[l.jsx(dl,{asChild:!0,children:l.jsxs(de,{variant:"outline",size:"sm",children:[l.jsx(oa,{className:"h-4 w-4 mr-1"}),"预览"]})}),l.jsx(Ea,{className:"w-[95vw] sm:w-[500px]",children:l.jsxs("div",{className:"space-y-2",children:[l.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),l.jsx(hn,{className:"h-60 rounded-md bg-muted p-3",children:l.jsx("pre",{className:"font-mono text-xs whitespace-pre-wrap break-all",children:_})}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return l.jsxs("div",{className:"space-y-6",children:[l.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[l.jsxs("div",{children:[l.jsx("h3",{className:"text-lg font-semibold mb-2",children:"关键词反应配置"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"配置触发特定反应的关键词和正则表达式规则"})]}),l.jsxs("div",{className:"space-y-4",children:[l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{children:[l.jsx("h4",{className:"text-base font-semibold",children:"正则表达式规则"}),l.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用正则表达式匹配消息内容"})]}),l.jsxs(de,{onClick:c,size:"sm",variant:"outline",children:[l.jsx(ws,{className:"h-4 w-4 mr-1"}),"添加正则规则"]})]}),l.jsxs("div",{className:"space-y-3",children:[t.regex_rules.map((T,_)=>l.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("span",{className:"text-sm font-medium",children:["正则规则 ",_+1]}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx(m,{regex:T.regex&&T.regex[0]||"",reaction:T.reaction,onRegexChange:E=>f(_,"regex",E),onReactionChange:E=>f(_,"reaction",E)}),l.jsx(N,{rule:T}),l.jsxs(Nn,{children:[l.jsx(Qr,{asChild:!0,children:l.jsx(de,{size:"sm",variant:"ghost",children:l.jsx(fn,{className:"h-4 w-4"})})}),l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认删除"}),l.jsxs(bn,{children:["确定要删除正则规则 ",_+1," 吗?此操作无法撤销。"]})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:()=>h(_),children:"删除"})]})]})]})]})]}),l.jsxs("div",{className:"space-y-3",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{className:"text-xs font-medium",children:"正则表达式(Python 语法)"}),l.jsx(Pe,{value:T.regex&&T.regex[0]||"",onChange:E=>f(_,"regex",E.target.value),placeholder:"例如:^(?P\\\\S{1,20})是这样的$ (点击正则编辑器按钮可视化构建)",className:"font-mono text-sm"}),l.jsx("p",{className:"text-xs text-muted-foreground",children:'支持命名捕获组 (?Ppattern),可在 reaction 中使用 [name] 引用。点击"正则编辑器"可视化构建和测试!'})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{className:"text-xs font-medium",children:"反应内容"}),l.jsx(pr,{value:T.reaction,onChange:E=>f(_,"reaction",E.target.value),placeholder:`触发后麦麦的反应... -可以使用 [捕获组名] 来引用正则表达式中的内容`,rows:3,className:"text-sm"}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"使用 [捕获组名] 引用正则表达式中的命名捕获组,例如 [n] 会被替换为捕获的内容"})]})]})]},_)),t.regex_rules.length===0&&l.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无正则规则,点击"添加正则规则"开始配置'})]})]}),l.jsxs("div",{className:"space-y-4 border-t pt-6",children:[l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{children:[l.jsx("h4",{className:"text-base font-semibold",children:"关键词规则"}),l.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用关键词列表匹配消息内容"})]}),l.jsxs(de,{onClick:g,size:"sm",variant:"outline",children:[l.jsx(ws,{className:"h-4 w-4 mr-1"}),"添加关键词规则"]})]}),l.jsxs("div",{className:"space-y-3",children:[t.keyword_rules.map((T,_)=>l.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("span",{className:"text-sm font-medium",children:["关键词规则 ",_+1]}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx(C,{rule:T}),l.jsxs(Nn,{children:[l.jsx(Qr,{asChild:!0,children:l.jsx(de,{size:"sm",variant:"ghost",children:l.jsx(fn,{className:"h-4 w-4"})})}),l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认删除"}),l.jsxs(bn,{children:["确定要删除关键词规则 ",_+1," 吗?此操作无法撤销。"]})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:()=>x(_),children:"删除"})]})]})]})]})]}),l.jsxs("div",{className:"space-y-3",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsx(ue,{className:"text-xs font-medium",children:"关键词列表"}),l.jsxs(de,{onClick:()=>w(_),size:"sm",variant:"ghost",children:[l.jsx(ws,{className:"h-3 w-3 mr-1"}),"添加关键词"]})]}),l.jsxs("div",{className:"space-y-2",children:[(T.keywords||[]).map((E,M)=>l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx(Pe,{value:E,onChange:L=>k(_,M,L.target.value),placeholder:"关键词",className:"flex-1"}),l.jsx(de,{onClick:()=>S(_,M),size:"sm",variant:"ghost",children:l.jsx(fn,{className:"h-4 w-4"})})]},M)),(!T.keywords||T.keywords.length===0)&&l.jsx("p",{className:"text-xs text-muted-foreground text-center py-2",children:'暂无关键词,点击"添加关键词"开始配置'})]})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{className:"text-xs font-medium",children:"反应内容"}),l.jsx(pr,{value:T.reaction,onChange:E=>y(_,"reaction",E.target.value),placeholder:"触发后麦麦的反应...",rows:3,className:"text-sm"})]})]})]},_)),t.keyword_rules.length===0&&l.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无关键词规则,点击"添加关键词规则"开始配置'})]})]})]}),l.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[l.jsxs("div",{children:[l.jsx("h3",{className:"text-lg font-semibold mb-4",children:"回复后处理配置"}),l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx(Pt,{id:"enable_response_post_process",checked:e.enable_response_post_process,onCheckedChange:T=>i({...e,enable_response_post_process:T})}),l.jsx(ue,{htmlFor:"enable_response_post_process",className:"cursor-pointer",children:"启用回复后处理"})]}),l.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"包括错别字生成器和回复分割器"})]}),e.enable_response_post_process&&l.jsxs(l.Fragment,{children:[l.jsx("div",{className:"border-t pt-6 space-y-4",children:l.jsxs("div",{children:[l.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[l.jsx(Pt,{id:"enable_chinese_typo",checked:n.enable,onCheckedChange:T=>a({...n,enable:T})}),l.jsx(ue,{htmlFor:"enable_chinese_typo",className:"cursor-pointer font-semibold",children:"中文错别字生成器"})]}),l.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"为回复添加随机错别字,让麦麦的回复更自然"}),n.enable&&l.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"error_rate",className:"text-xs font-medium",children:"单字替换概率"}),l.jsx(Pe,{id:"error_rate",type:"number",step:"0.001",min:"0",max:"1",value:n.error_rate,onChange:T=>a({...n,error_rate:parseFloat(T.target.value)})})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"min_freq",className:"text-xs font-medium",children:"最小字频阈值"}),l.jsx(Pe,{id:"min_freq",type:"number",min:"0",value:n.min_freq,onChange:T=>a({...n,min_freq:parseInt(T.target.value)})})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"tone_error_rate",className:"text-xs font-medium",children:"声调错误概率"}),l.jsx(Pe,{id:"tone_error_rate",type:"number",step:"0.01",min:"0",max:"1",value:n.tone_error_rate,onChange:T=>a({...n,tone_error_rate:parseFloat(T.target.value)})})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"word_replace_rate",className:"text-xs font-medium",children:"整词替换概率"}),l.jsx(Pe,{id:"word_replace_rate",type:"number",step:"0.001",min:"0",max:"1",value:n.word_replace_rate,onChange:T=>a({...n,word_replace_rate:parseFloat(T.target.value)})})]})]})]})}),l.jsx("div",{className:"border-t pt-6 space-y-4",children:l.jsxs("div",{children:[l.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[l.jsx(Pt,{id:"enable_response_splitter",checked:r.enable,onCheckedChange:T=>o({...r,enable:T})}),l.jsx(ue,{htmlFor:"enable_response_splitter",className:"cursor-pointer font-semibold",children:"回复分割器"})]}),l.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"控制回复的长度和句子数量"}),r.enable&&l.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"max_length",className:"text-xs font-medium",children:"最大长度"}),l.jsx(Pe,{id:"max_length",type:"number",min:"1",value:r.max_length,onChange:T=>o({...r,max_length:parseInt(T.target.value)})}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大字符数"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"max_sentence_num",className:"text-xs font-medium",children:"最大句子数"}),l.jsx(Pe,{id:"max_sentence_num",type:"number",min:"1",value:r.max_sentence_num,onChange:T=>o({...r,max_sentence_num:parseInt(T.target.value)})}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大句子数量"})]}),l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx(Pt,{id:"enable_kaomoji_protection",checked:r.enable_kaomoji_protection,onCheckedChange:T=>o({...r,enable_kaomoji_protection:T})}),l.jsx(ue,{htmlFor:"enable_kaomoji_protection",className:"cursor-pointer",children:"启用颜文字保护"})]}),l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx(Pt,{id:"enable_overflow_return_all",checked:r.enable_overflow_return_all,onCheckedChange:T=>o({...r,enable_overflow_return_all:T})}),l.jsx(ue,{htmlFor:"enable_overflow_return_all",className:"cursor-pointer",children:"超出时一次性返回全部"})]}),l.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"当句子数量超出限制时,合并后一次性返回所有内容"})]})]})})]})]})]})}function Nhe({config:t,onChange:e}){return l.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[l.jsx("h3",{className:"text-lg font-semibold",children:"情绪设置"}),l.jsxs("div",{className:"grid gap-4",children:[l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx(Pt,{checked:t.enable_mood,onCheckedChange:n=>e({...t,enable_mood:n})}),l.jsx(ue,{className:"cursor-pointer",children:"启用情绪系统"})]}),t.enable_mood&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{children:"情绪更新阈值"}),l.jsx(Pe,{type:"number",min:"1",value:t.mood_update_threshold,onChange:n=>e({...t,mood_update_threshold:parseInt(n.target.value)})}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"越高,更新越慢"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{children:"情感特征"}),l.jsx(pr,{value:t.emotion_style,onChange:n=>e({...t,emotion_style:n.target.value}),placeholder:"影响情绪的变化情况",rows:2})]})]})]})]})}function Che({config:t,onChange:e}){return l.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[l.jsx("h3",{className:"text-lg font-semibold",children:"语音设置"}),l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx(Pt,{checked:t.enable_asr,onCheckedChange:n=>e({...t,enable_asr:n})}),l.jsx(ue,{className:"cursor-pointer",children:"启用语音识别"})]}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"启用后麦麦可以识别语音消息,需要配置语音识别模型"})]})}function The({config:t,onChange:e}){return l.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[l.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库设置"}),l.jsxs("div",{className:"grid gap-4",children:[l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx(Pt,{checked:t.enable,onCheckedChange:n=>e({...t,enable:n})}),l.jsx(ue,{className:"cursor-pointer",children:"启用 LPMM 知识库"})]}),t.enable&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{children:"LPMM 模式"}),l.jsxs(qt,{value:t.lpmm_mode,onValueChange:n=>e({...t,lpmm_mode:n}),children:[l.jsx(It,{children:l.jsx(Ft,{placeholder:"选择 LPMM 模式"})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"classic",children:"经典模式"}),l.jsx(De,{value:"agent",children:"Agent 模式"})]})]})]}),l.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{children:"同义词搜索 TopK"}),l.jsx(Pe,{type:"number",min:"1",value:t.rag_synonym_search_top_k,onChange:n=>e({...t,rag_synonym_search_top_k:parseInt(n.target.value)})})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{children:"同义词阈值"}),l.jsx(Pe,{type:"number",step:"0.1",min:"0",max:"1",value:t.rag_synonym_threshold,onChange:n=>e({...t,rag_synonym_threshold:parseFloat(n.target.value)})})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{children:"实体提取线程数"}),l.jsx(Pe,{type:"number",min:"1",value:t.info_extraction_workers,onChange:n=>e({...t,info_extraction_workers:parseInt(n.target.value)})})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{children:"嵌入向量维度"}),l.jsx(Pe,{type:"number",min:"1",value:t.embedding_dimension,onChange:n=>e({...t,embedding_dimension:parseInt(n.target.value)})})]})]})]})]})]})}function Ehe({config:t,onChange:e}){const[n,r]=b.useState(""),[s,i]=b.useState("WARNING"),a=()=>{n&&!t.suppress_libraries.includes(n)&&(e({...t,suppress_libraries:[...t.suppress_libraries,n]}),r(""))},o=x=>{e({...t,suppress_libraries:t.suppress_libraries.filter(y=>y!==x)})},c=()=>{n&&!t.library_log_levels[n]&&(e({...t,library_log_levels:{...t.library_log_levels,[n]:s}}),r(""),i("WARNING"))},h=x=>{const y={...t.library_log_levels};delete y[x],e({...t,library_log_levels:y})},f=["DEBUG","INFO","WARNING","ERROR","CRITICAL"],m=["FULL","compact","lite"],g=["none","title","full"];return l.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[l.jsxs("div",{children:[l.jsx("h3",{className:"text-lg font-semibold mb-4",children:"日志配置"}),l.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{children:"日期格式"}),l.jsx(Pe,{value:t.date_style,onChange:x=>e({...t,date_style:x.target.value}),placeholder:"例如: m-d H:i:s"}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"m=月, d=日, H=时, i=分, s=秒"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{children:"日志级别样式"}),l.jsxs(qt,{value:t.log_level_style,onValueChange:x=>e({...t,log_level_style:x}),children:[l.jsx(It,{children:l.jsx(Ft,{})}),l.jsx(Bt,{children:m.map(x=>l.jsx(De,{value:x,children:x},x))})]})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{children:"日志文本颜色"}),l.jsxs(qt,{value:t.color_text,onValueChange:x=>e({...t,color_text:x}),children:[l.jsx(It,{children:l.jsx(Ft,{})}),l.jsx(Bt,{children:g.map(x=>l.jsx(De,{value:x,children:x},x))})]})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{children:"全局日志级别"}),l.jsxs(qt,{value:t.log_level,onValueChange:x=>e({...t,log_level:x}),children:[l.jsx(It,{children:l.jsx(Ft,{})}),l.jsx(Bt,{children:f.map(x=>l.jsx(De,{value:x,children:x},x))})]})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{children:"控制台日志级别"}),l.jsxs(qt,{value:t.console_log_level,onValueChange:x=>e({...t,console_log_level:x}),children:[l.jsx(It,{children:l.jsx(Ft,{})}),l.jsx(Bt,{children:f.map(x=>l.jsx(De,{value:x,children:x},x))})]})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{children:"文件日志级别"}),l.jsxs(qt,{value:t.file_log_level,onValueChange:x=>e({...t,file_log_level:x}),children:[l.jsx(It,{children:l.jsx(Ft,{})}),l.jsx(Bt,{children:f.map(x=>l.jsx(De,{value:x,children:x},x))})]})]})]})]}),l.jsxs("div",{children:[l.jsx(ue,{className:"mb-2 block",children:"完全屏蔽的库"}),l.jsxs("div",{className:"flex gap-2 mb-2",children:[l.jsx(Pe,{value:n,onChange:x=>r(x.target.value),placeholder:"输入库名",className:"flex-1",onKeyDown:x=>{x.key==="Enter"&&(x.preventDefault(),a())}}),l.jsx(de,{onClick:a,size:"sm",className:"flex-shrink-0",children:l.jsx(ws,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),l.jsx("div",{className:"flex flex-wrap gap-2",children:t.suppress_libraries.map(x=>l.jsxs("div",{className:"flex items-center gap-1 bg-secondary px-3 py-1 rounded-md",children:[l.jsx("span",{className:"text-sm",children:x}),l.jsx(de,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0",onClick:()=>o(x),children:l.jsx(fn,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},x))})]}),l.jsxs("div",{children:[l.jsx(ue,{className:"mb-2 block",children:"特定库的日志级别"}),l.jsxs("div",{className:"flex gap-2 mb-2",children:[l.jsx(Pe,{value:n,onChange:x=>r(x.target.value),placeholder:"输入库名",className:"flex-1"}),l.jsxs(qt,{value:s,onValueChange:i,children:[l.jsx(It,{className:"w-32",children:l.jsx(Ft,{})}),l.jsx(Bt,{children:f.map(x=>l.jsx(De,{value:x,children:x},x))})]}),l.jsx(de,{onClick:c,size:"sm",children:l.jsx(ws,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),l.jsx("div",{className:"space-y-2",children:Object.entries(t.library_log_levels).map(([x,y])=>l.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[l.jsx("span",{className:"text-sm font-medium",children:x}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx("span",{className:"text-sm text-muted-foreground",children:y}),l.jsx(de,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>h(x),children:l.jsx(fn,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]})]},x))})]})]})}function _he({config:t,onChange:e}){return l.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[l.jsx("h3",{className:"text-lg font-semibold",children:"调试配置"}),l.jsxs("div",{className:"space-y-4",children:[l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{className:"space-y-0.5",children:[l.jsx(ue,{children:"显示 Prompt"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"是否在日志中显示提示词"})]}),l.jsx(Pt,{checked:t.show_prompt,onCheckedChange:n=>e({...t,show_prompt:n})})]}),l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{className:"space-y-0.5",children:[l.jsx(ue,{children:"显示回复器 Prompt"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的提示词"})]}),l.jsx(Pt,{checked:t.show_replyer_prompt,onCheckedChange:n=>e({...t,show_replyer_prompt:n})})]}),l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{className:"space-y-0.5",children:[l.jsx(ue,{children:"显示回复器推理"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的推理过程"})]}),l.jsx(Pt,{checked:t.show_replyer_reasoning,onCheckedChange:n=>e({...t,show_replyer_reasoning:n})})]}),l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{className:"space-y-0.5",children:[l.jsx(ue,{children:"显示 Jargon Prompt"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示术语相关的提示词"})]}),l.jsx(Pt,{checked:t.show_jargon_prompt,onCheckedChange:n=>e({...t,show_jargon_prompt:n})})]}),l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{className:"space-y-0.5",children:[l.jsx(ue,{children:"显示记忆检索 Prompt"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示记忆检索相关的提示词"})]}),l.jsx(Pt,{checked:t.show_memory_prompt,onCheckedChange:n=>e({...t,show_memory_prompt:n})})]}),l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{className:"space-y-0.5",children:[l.jsx(ue,{children:"显示 Planner Prompt"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 Planner 的提示词和原始返回结果"})]}),l.jsx(Pt,{checked:t.show_planner_prompt,onCheckedChange:n=>e({...t,show_planner_prompt:n})})]}),l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{className:"space-y-0.5",children:[l.jsx(ue,{children:"显示 LPMM 相关文段"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 LPMM 知识库找到的相关文段日志"})]}),l.jsx(Pt,{checked:t.show_lpmm_paragraph,onCheckedChange:n=>e({...t,show_lpmm_paragraph:n})})]})]})]})}function Mhe({config:t,onChange:e}){const[n,r]=b.useState(""),s=()=>{n&&!t.auth_token.includes(n)&&(e({...t,auth_token:[...t.auth_token,n]}),r(""))},i=a=>{e({...t,auth_token:t.auth_token.filter((o,c)=>c!==a)})};return l.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[l.jsxs("div",{children:[l.jsx("h3",{className:"text-lg font-semibold mb-4",children:"MaimMessage 服务配置"}),l.jsxs("div",{className:"space-y-4",children:[l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{className:"space-y-0.5",children:[l.jsx(ue,{children:"启用自定义服务器"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"是否使用自定义的 MaimMessage 服务器"})]}),l.jsx(Pt,{checked:t.use_custom,onCheckedChange:a=>e({...t,use_custom:a})})]}),t.use_custom&&l.jsxs(l.Fragment,{children:[l.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{children:"主机地址"}),l.jsx(Pe,{value:t.host,onChange:a=>e({...t,host:a.target.value}),placeholder:"127.0.0.1"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{children:"端口号"}),l.jsx(Pe,{type:"number",value:t.port,onChange:a=>e({...t,port:parseInt(a.target.value)}),placeholder:"8090"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{children:"连接模式"}),l.jsxs(qt,{value:t.mode,onValueChange:a=>e({...t,mode:a}),children:[l.jsx(It,{children:l.jsx(Ft,{})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"ws",children:"WebSocket (ws)"}),l.jsx(De,{value:"tcp",children:"TCP"})]})]})]}),l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx(Pt,{checked:t.use_wss,onCheckedChange:a=>e({...t,use_wss:a}),disabled:t.mode!=="ws"}),l.jsx(ue,{children:"使用 WSS 安全连接"})]})]}),t.use_wss&&t.mode==="ws"&&l.jsxs("div",{className:"grid gap-4",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{children:"SSL 证书文件路径"}),l.jsx(Pe,{value:t.cert_file,onChange:a=>e({...t,cert_file:a.target.value}),placeholder:"cert.pem"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{children:"SSL 密钥文件路径"}),l.jsx(Pe,{value:t.key_file,onChange:a=>e({...t,key_file:a.target.value}),placeholder:"key.pem"})]})]})]})]})]}),l.jsxs("div",{children:[l.jsx(ue,{className:"mb-2 block",children:"认证令牌"}),l.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:"用于 API 验证,为空则不启用验证"}),l.jsxs("div",{className:"flex gap-2 mb-2",children:[l.jsx(Pe,{value:n,onChange:a=>r(a.target.value),placeholder:"输入认证令牌",onKeyDown:a=>{a.key==="Enter"&&(a.preventDefault(),s())}}),l.jsx(de,{onClick:s,size:"sm",children:l.jsx(ws,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),l.jsx("div",{className:"space-y-2",children:t.auth_token.map((a,o)=>l.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[l.jsx("span",{className:"text-sm font-mono",children:a}),l.jsx(de,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>i(o),children:l.jsx(fn,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},o))})]})]})}function Ahe({config:t,onChange:e}){return l.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[l.jsx("h3",{className:"text-lg font-semibold",children:"统计信息"}),l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{className:"space-y-0.5",children:[l.jsx(ue,{children:"启用统计信息发送"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"发送匿名统计信息,帮助我们了解全球有多少只麦麦在运行"})]}),l.jsx(Pt,{checked:t.enable,onCheckedChange:n=>e({...t,enable:n})})]})]})}const Vh=b.forwardRef(({className:t,...e},n)=>l.jsx("div",{className:"relative w-full overflow-auto",children:l.jsx("table",{ref:n,className:ve("w-full caption-bottom text-sm",t),...e})}));Vh.displayName="Table";const Uh=b.forwardRef(({className:t,...e},n)=>l.jsx("thead",{ref:n,className:ve("[&_tr]:border-b",t),...e}));Uh.displayName="TableHeader";const Wh=b.forwardRef(({className:t,...e},n)=>l.jsx("tbody",{ref:n,className:ve("[&_tr:last-child]:border-0",t),...e}));Wh.displayName="TableBody";const Rhe=b.forwardRef(({className:t,...e},n)=>l.jsx("tfoot",{ref:n,className:ve("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",t),...e}));Rhe.displayName="TableFooter";const bs=b.forwardRef(({className:t,...e},n)=>l.jsx("tr",{ref:n,className:ve("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",t),...e}));bs.displayName="TableRow";const ln=b.forwardRef(({className:t,...e},n)=>l.jsx("th",{ref:n,className:ve("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...e}));ln.displayName="TableHead";const Qt=b.forwardRef(({className:t,...e},n)=>l.jsx("td",{ref:n,className:ve("px-4 py-3 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...e}));Qt.displayName="TableCell";const Dhe=b.forwardRef(({className:t,...e},n)=>l.jsx("caption",{ref:n,className:ve("mt-4 text-sm text-muted-foreground",t),...e}));Dhe.displayName="TableCaption";var PE=1,zhe=.9,Phe=.8,Lhe=.17,Zw=.1,Jw=.999,Ihe=.9999,Bhe=.99,qhe=/[\\\/_+.#"@\[\(\{&]/,Fhe=/[\\\/_+.#"@\[\(\{&]/g,$he=/[\s-]/,dF=/[\s-]/g;function WS(t,e,n,r,s,i,a){if(i===e.length)return s===t.length?PE:Bhe;var o=`${s},${i}`;if(a[o]!==void 0)return a[o];for(var c=r.charAt(i),h=n.indexOf(c,s),f=0,m,g,x,y;h>=0;)m=WS(t,e,n,r,h+1,i+1,a),m>f&&(h===s?m*=PE:qhe.test(t.charAt(h-1))?(m*=Phe,x=t.slice(s,h-1).match(Fhe),x&&s>0&&(m*=Math.pow(Jw,x.length))):$he.test(t.charAt(h-1))?(m*=zhe,y=t.slice(s,h-1).match(dF),y&&s>0&&(m*=Math.pow(Jw,y.length))):(m*=Lhe,s>0&&(m*=Math.pow(Jw,h-s))),t.charAt(h)!==e.charAt(i)&&(m*=Ihe)),(mm&&(m=g*Zw)),m>f&&(f=m),h=n.indexOf(c,h+1);return a[o]=f,f}function LE(t){return t.toLowerCase().replace(dF," ")}function Qhe(t,e,n){return t=n&&n.length>0?`${t+" "+n.join(" ")}`:t,WS(t,e,LE(t),LE(e),0,0,{})}var Hhe=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Dc=Hhe.reduce((t,e)=>{const n=Kk(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...o}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),l.jsx(c,{...o,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),rm='[cmdk-group=""]',e4='[cmdk-group-items=""]',Vhe='[cmdk-group-heading=""]',hF='[cmdk-item=""]',IE=`${hF}:not([aria-disabled="true"])`,GS="cmdk-item-select",Qd="data-value",Uhe=(t,e,n)=>Qhe(t,e,n),fF=b.createContext(void 0),ip=()=>b.useContext(fF),mF=b.createContext(void 0),gj=()=>b.useContext(mF),pF=b.createContext(void 0),gF=b.forwardRef((t,e)=>{let n=Hd(()=>{var W,F;return{search:"",value:(F=(W=t.value)!=null?W:t.defaultValue)!=null?F:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),r=Hd(()=>new Set),s=Hd(()=>new Map),i=Hd(()=>new Map),a=Hd(()=>new Set),o=xF(t),{label:c,children:h,value:f,onValueChange:m,filter:g,shouldFilter:x,loop:y,disablePointerSelection:w=!1,vimBindings:S=!0,...k}=t,N=_i(),C=_i(),T=_i(),_=b.useRef(null),E=rfe();Lu(()=>{if(f!==void 0){let W=f.trim();n.current.value=W,M.emit()}},[f]),Lu(()=>{E(6,ee)},[]);let M=b.useMemo(()=>({subscribe:W=>(a.current.add(W),()=>a.current.delete(W)),snapshot:()=>n.current,setState:(W,F,V)=>{var te,ne,K,ie;if(!Object.is(n.current[W],F)){if(n.current[W]=F,W==="search")U(),I(),E(1,Q);else if(W==="value"){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let re=document.getElementById(T);re?re.focus():(te=document.getElementById(N))==null||te.focus()}if(E(7,()=>{var re;n.current.selectedItemId=(re=z())==null?void 0:re.id,M.emit()}),V||E(5,ee),((ne=o.current)==null?void 0:ne.value)!==void 0){let re=F??"";(ie=(K=o.current).onValueChange)==null||ie.call(K,re);return}}M.emit()}},emit:()=>{a.current.forEach(W=>W())}}),[]),L=b.useMemo(()=>({value:(W,F,V)=>{var te;F!==((te=i.current.get(W))==null?void 0:te.value)&&(i.current.set(W,{value:F,keywords:V}),n.current.filtered.items.set(W,P(F,V)),E(2,()=>{I(),M.emit()}))},item:(W,F)=>(r.current.add(W),F&&(s.current.has(F)?s.current.get(F).add(W):s.current.set(F,new Set([W]))),E(3,()=>{U(),I(),n.current.value||Q(),M.emit()}),()=>{i.current.delete(W),r.current.delete(W),n.current.filtered.items.delete(W);let V=z();E(4,()=>{U(),V?.getAttribute("id")===W&&Q(),M.emit()})}),group:W=>(s.current.has(W)||s.current.set(W,new Set),()=>{i.current.delete(W),s.current.delete(W)}),filter:()=>o.current.shouldFilter,label:c||t["aria-label"],getDisablePointerSelection:()=>o.current.disablePointerSelection,listId:N,inputId:T,labelId:C,listInnerRef:_}),[]);function P(W,F){var V,te;let ne=(te=(V=o.current)==null?void 0:V.filter)!=null?te:Uhe;return W?ne(W,n.current.search,F):0}function I(){if(!n.current.search||o.current.shouldFilter===!1)return;let W=n.current.filtered.items,F=[];n.current.filtered.groups.forEach(te=>{let ne=s.current.get(te),K=0;ne.forEach(ie=>{let re=W.get(ie);K=Math.max(re,K)}),F.push([te,K])});let V=_.current;H().sort((te,ne)=>{var K,ie;let re=te.getAttribute("id"),ae=ne.getAttribute("id");return((K=W.get(ae))!=null?K:0)-((ie=W.get(re))!=null?ie:0)}).forEach(te=>{let ne=te.closest(e4);ne?ne.appendChild(te.parentElement===ne?te:te.closest(`${e4} > *`)):V.appendChild(te.parentElement===V?te:te.closest(`${e4} > *`))}),F.sort((te,ne)=>ne[1]-te[1]).forEach(te=>{var ne;let K=(ne=_.current)==null?void 0:ne.querySelector(`${rm}[${Qd}="${encodeURIComponent(te[0])}"]`);K?.parentElement.appendChild(K)})}function Q(){let W=H().find(V=>V.getAttribute("aria-disabled")!=="true"),F=W?.getAttribute(Qd);M.setState("value",F||void 0)}function U(){var W,F,V,te;if(!n.current.search||o.current.shouldFilter===!1){n.current.filtered.count=r.current.size;return}n.current.filtered.groups=new Set;let ne=0;for(let K of r.current){let ie=(F=(W=i.current.get(K))==null?void 0:W.value)!=null?F:"",re=(te=(V=i.current.get(K))==null?void 0:V.keywords)!=null?te:[],ae=P(ie,re);n.current.filtered.items.set(K,ae),ae>0&&ne++}for(let[K,ie]of s.current)for(let re of ie)if(n.current.filtered.items.get(re)>0){n.current.filtered.groups.add(K);break}n.current.filtered.count=ne}function ee(){var W,F,V;let te=z();te&&(((W=te.parentElement)==null?void 0:W.firstChild)===te&&((V=(F=te.closest(rm))==null?void 0:F.querySelector(Vhe))==null||V.scrollIntoView({block:"nearest"})),te.scrollIntoView({block:"nearest"}))}function z(){var W;return(W=_.current)==null?void 0:W.querySelector(`${hF}[aria-selected="true"]`)}function H(){var W;return Array.from(((W=_.current)==null?void 0:W.querySelectorAll(IE))||[])}function B(W){let F=H()[W];F&&M.setState("value",F.getAttribute(Qd))}function X(W){var F;let V=z(),te=H(),ne=te.findIndex(ie=>ie===V),K=te[ne+W];(F=o.current)!=null&&F.loop&&(K=ne+W<0?te[te.length-1]:ne+W===te.length?te[0]:te[ne+W]),K&&M.setState("value",K.getAttribute(Qd))}function J(W){let F=z(),V=F?.closest(rm),te;for(;V&&!te;)V=W>0?tfe(V,rm):nfe(V,rm),te=V?.querySelector(IE);te?M.setState("value",te.getAttribute(Qd)):X(W)}let G=()=>B(H().length-1),R=W=>{W.preventDefault(),W.metaKey?G():W.altKey?J(1):X(1)},se=W=>{W.preventDefault(),W.metaKey?B(0):W.altKey?J(-1):X(-1)};return b.createElement(Dc.div,{ref:e,tabIndex:-1,...k,"cmdk-root":"",onKeyDown:W=>{var F;(F=k.onKeyDown)==null||F.call(k,W);let V=W.nativeEvent.isComposing||W.keyCode===229;if(!(W.defaultPrevented||V))switch(W.key){case"n":case"j":{S&&W.ctrlKey&&R(W);break}case"ArrowDown":{R(W);break}case"p":case"k":{S&&W.ctrlKey&&se(W);break}case"ArrowUp":{se(W);break}case"Home":{W.preventDefault(),B(0);break}case"End":{W.preventDefault(),G();break}case"Enter":{W.preventDefault();let te=z();if(te){let ne=new Event(GS);te.dispatchEvent(ne)}}}}},b.createElement("label",{"cmdk-label":"",htmlFor:L.inputId,id:L.labelId,style:ife},c),uy(t,W=>b.createElement(mF.Provider,{value:M},b.createElement(fF.Provider,{value:L},W))))}),Whe=b.forwardRef((t,e)=>{var n,r;let s=_i(),i=b.useRef(null),a=b.useContext(pF),o=ip(),c=xF(t),h=(r=(n=c.current)==null?void 0:n.forceMount)!=null?r:a?.forceMount;Lu(()=>{if(!h)return o.item(s,a?.id)},[h]);let f=vF(s,i,[t.value,t.children,i],t.keywords),m=gj(),g=jc(E=>E.value&&E.value===f.current),x=jc(E=>h||o.filter()===!1?!0:E.search?E.filtered.items.get(s)>0:!0);b.useEffect(()=>{let E=i.current;if(!(!E||t.disabled))return E.addEventListener(GS,y),()=>E.removeEventListener(GS,y)},[x,t.onSelect,t.disabled]);function y(){var E,M;w(),(M=(E=c.current).onSelect)==null||M.call(E,f.current)}function w(){m.setState("value",f.current,!0)}if(!x)return null;let{disabled:S,value:k,onSelect:N,forceMount:C,keywords:T,..._}=t;return b.createElement(Dc.div,{ref:gc(i,e),..._,id:s,"cmdk-item":"",role:"option","aria-disabled":!!S,"aria-selected":!!g,"data-disabled":!!S,"data-selected":!!g,onPointerMove:S||o.getDisablePointerSelection()?void 0:w,onClick:S?void 0:y},t.children)}),Ghe=b.forwardRef((t,e)=>{let{heading:n,children:r,forceMount:s,...i}=t,a=_i(),o=b.useRef(null),c=b.useRef(null),h=_i(),f=ip(),m=jc(x=>s||f.filter()===!1?!0:x.search?x.filtered.groups.has(a):!0);Lu(()=>f.group(a),[]),vF(a,o,[t.value,t.heading,c]);let g=b.useMemo(()=>({id:a,forceMount:s}),[s]);return b.createElement(Dc.div,{ref:gc(o,e),...i,"cmdk-group":"",role:"presentation",hidden:m?void 0:!0},n&&b.createElement("div",{ref:c,"cmdk-group-heading":"","aria-hidden":!0,id:h},n),uy(t,x=>b.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":n?h:void 0},b.createElement(pF.Provider,{value:g},x))))}),Xhe=b.forwardRef((t,e)=>{let{alwaysRender:n,...r}=t,s=b.useRef(null),i=jc(a=>!a.search);return!n&&!i?null:b.createElement(Dc.div,{ref:gc(s,e),...r,"cmdk-separator":"",role:"separator"})}),Yhe=b.forwardRef((t,e)=>{let{onValueChange:n,...r}=t,s=t.value!=null,i=gj(),a=jc(h=>h.search),o=jc(h=>h.selectedItemId),c=ip();return b.useEffect(()=>{t.value!=null&&i.setState("search",t.value)},[t.value]),b.createElement(Dc.input,{ref:e,...r,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":c.listId,"aria-labelledby":c.labelId,"aria-activedescendant":o,id:c.inputId,type:"text",value:s?t.value:a,onChange:h=>{s||i.setState("search",h.target.value),n?.(h.target.value)}})}),Khe=b.forwardRef((t,e)=>{let{children:n,label:r="Suggestions",...s}=t,i=b.useRef(null),a=b.useRef(null),o=jc(h=>h.selectedItemId),c=ip();return b.useEffect(()=>{if(a.current&&i.current){let h=a.current,f=i.current,m,g=new ResizeObserver(()=>{m=requestAnimationFrame(()=>{let x=h.offsetHeight;f.style.setProperty("--cmdk-list-height",x.toFixed(1)+"px")})});return g.observe(h),()=>{cancelAnimationFrame(m),g.unobserve(h)}}},[]),b.createElement(Dc.div,{ref:gc(i,e),...s,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":o,"aria-label":r,id:c.listId},uy(t,h=>b.createElement("div",{ref:gc(a,c.listInnerRef),"cmdk-list-sizer":""},h)))}),Zhe=b.forwardRef((t,e)=>{let{open:n,onOpenChange:r,overlayClassName:s,contentClassName:i,container:a,...o}=t;return b.createElement(t6,{open:n,onOpenChange:r},b.createElement(Zk,{container:a},b.createElement(Tv,{"cmdk-overlay":"",className:s}),b.createElement(Ev,{"aria-label":t.label,"cmdk-dialog":"",className:i},b.createElement(gF,{ref:e,...o}))))}),Jhe=b.forwardRef((t,e)=>jc(n=>n.filtered.count===0)?b.createElement(Dc.div,{ref:e,...t,"cmdk-empty":"",role:"presentation"}):null),efe=b.forwardRef((t,e)=>{let{progress:n,children:r,label:s="Loading...",...i}=t;return b.createElement(Dc.div,{ref:e,...i,"cmdk-loading":"",role:"progressbar","aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":s},uy(t,a=>b.createElement("div",{"aria-hidden":!0},a)))}),ui=Object.assign(gF,{List:Khe,Item:Whe,Input:Yhe,Group:Ghe,Separator:Xhe,Dialog:Zhe,Empty:Jhe,Loading:efe});function tfe(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return n;n=n.nextElementSibling}}function nfe(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return n;n=n.previousElementSibling}}function xF(t){let e=b.useRef(t);return Lu(()=>{e.current=t}),e}var Lu=typeof window>"u"?b.useEffect:b.useLayoutEffect;function Hd(t){let e=b.useRef();return e.current===void 0&&(e.current=t()),e}function jc(t){let e=gj(),n=()=>t(e.snapshot());return b.useSyncExternalStore(e.subscribe,n,n)}function vF(t,e,n,r=[]){let s=b.useRef(),i=ip();return Lu(()=>{var a;let o=(()=>{var h;for(let f of n){if(typeof f=="string")return f.trim();if(typeof f=="object"&&"current"in f)return f.current?(h=f.current.textContent)==null?void 0:h.trim():s.current}})(),c=r.map(h=>h.trim());i.value(t,o,c),(a=e.current)==null||a.setAttribute(Qd,o),s.current=o}),s}var rfe=()=>{let[t,e]=b.useState(),n=Hd(()=>new Map);return Lu(()=>{n.current.forEach(r=>r()),n.current=new Map},[t]),(r,s)=>{n.current.set(r,s),e({})}};function sfe(t){let e=t.type;return typeof e=="function"?e(t.props):"render"in e?e.render(t.props):t}function uy({asChild:t,children:e},n){return t&&b.isValidElement(e)?b.cloneElement(sfe(e),{ref:e.ref},n(e.props.children)):n(e)}var ife={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};const dy=b.forwardRef(({className:t,...e},n)=>l.jsx(ui,{ref:n,className:ve("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",t),...e}));dy.displayName=ui.displayName;const hy=b.forwardRef(({className:t,...e},n)=>l.jsxs("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[l.jsx(ci,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),l.jsx(ui.Input,{ref:n,className:ve("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",t),...e})]}));hy.displayName=ui.Input.displayName;const fy=b.forwardRef(({className:t,...e},n)=>l.jsx(ui.List,{ref:n,className:ve("max-h-[300px] overflow-y-auto overflow-x-hidden",t),...e}));fy.displayName=ui.List.displayName;const my=b.forwardRef((t,e)=>l.jsx(ui.Empty,{ref:e,className:"py-6 text-center text-sm",...t}));my.displayName=ui.Empty.displayName;const f0=b.forwardRef(({className:t,...e},n)=>l.jsx(ui.Group,{ref:n,className:ve("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",t),...e}));f0.displayName=ui.Group.displayName;const afe=b.forwardRef(({className:t,...e},n)=>l.jsx(ui.Separator,{ref:n,className:ve("-mx-1 h-px bg-border",t),...e}));afe.displayName=ui.Separator.displayName;const m0=b.forwardRef(({className:t,...e},n)=>l.jsx(ui.Item,{ref:n,className:ve("relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",t),...e}));m0.displayName=ui.Item.displayName;const li=b.forwardRef(({className:t,...e},n)=>l.jsx(tz,{ref:n,className:ve("grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",t),...e,children:l.jsx(jK,{className:ve("grid place-content-center text-current"),children:l.jsx(ol,{className:"h-4 w-4"})})}));li.displayName=tz.displayName;const vm=[{id:"siliconflow",name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",client_type:"openai",display_name:"硅基流动 (SiliconFlow)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"deepseek",name:"DeepSeek",base_url:"https://api.deepseek.com",client_type:"openai",display_name:"DeepSeek",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"rinkoai",name:"RinkoAI",base_url:"https://rinkoai.com/v1",client_type:"openai",display_name:"RinkoAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"zhipu",name:"ZhipuAI",base_url:"https://open.bigmodel.cn/api/paas/v4",client_type:"openai",display_name:"智谱 AI (ZhipuAI / GLM)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"moonshot",name:"Moonshot",base_url:"https://api.moonshot.cn/v1",client_type:"openai",display_name:"月之暗面 (Moonshot / Kimi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"doubao",name:"Doubao",base_url:"https://ark.cn-beijing.volces.com/api/v3",client_type:"openai",display_name:"字节豆包 (Doubao)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"alibaba",name:"Alibaba",base_url:"https://dashscope.aliyuncs.com/compatible-mode/v1",client_type:"openai",display_name:"阿里云百炼 (Alibaba Qwen)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"baichuan",name:"Baichuan",base_url:"https://api.baichuan-ai.com/v1",client_type:"openai",display_name:"百川智能 (Baichuan)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"minimax",name:"MiniMax",base_url:"https://api.minimax.chat/v1",client_type:"openai",display_name:"MiniMax (海螺 AI)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"stepfun",name:"StepFun",base_url:"https://api.stepfun.com/v1",client_type:"openai",display_name:"阶跃星辰 (StepFun)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"lingyi",name:"Lingyi",base_url:"https://api.lingyiwanwu.com/v1",client_type:"openai",display_name:"零一万物 (Lingyi / Yi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"openai",name:"OpenAI",base_url:"https://api.openai.com/v1",client_type:"openai",display_name:"OpenAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"xai",name:"xAI",base_url:"https://api.x.ai/v1",client_type:"openai",display_name:"xAI (Grok)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"anthropic",name:"Anthropic",base_url:"https://api.anthropic.com/v1",client_type:"openai",display_name:"Anthropic (Claude)"},{id:"gemini",name:"Gemini",base_url:"https://generativelanguage.googleapis.com/v1beta",client_type:"gemini",display_name:"Google Gemini",modelFetcher:{endpoint:"/models",parser:"gemini"}},{id:"cohere",name:"Cohere",base_url:"https://api.cohere.ai/v1",client_type:"openai",display_name:"Cohere"},{id:"groq",name:"Groq",base_url:"https://api.groq.com/openai/v1",client_type:"openai",display_name:"Groq",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"together",name:"Together AI",base_url:"https://api.together.xyz/v1",client_type:"openai",display_name:"Together AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"fireworks",name:"Fireworks",base_url:"https://api.fireworks.ai/inference/v1",client_type:"openai",display_name:"Fireworks AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"mistral",name:"Mistral",base_url:"https://api.mistral.ai/v1",client_type:"openai",display_name:"Mistral AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"perplexity",name:"Perplexity",base_url:"https://api.perplexity.ai",client_type:"openai",display_name:"Perplexity AI"},{id:"custom",name:"",base_url:"",client_type:"openai",display_name:"自定义"}];function BE(t){return t?t.replace(/\/+$/,"").toLowerCase():""}function lfe(t){if(!t)return null;const e=BE(t);return vm.find(n=>n.id!=="custom"&&BE(n.base_url)===e)||null}function ofe(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[s,i]=b.useState(!1),[a,o]=b.useState(!1),[c,h]=b.useState(!1),[f,m]=b.useState(!1),[g,x]=b.useState(!1),[y,w]=b.useState(!1),[S,k]=b.useState(null),[N,C]=b.useState(null),[T,_]=b.useState("custom"),[E,M]=b.useState(!1),[L,P]=b.useState(!1),[I,Q]=b.useState(null),[U,ee]=b.useState(!1),[z,H]=b.useState(""),[B,X]=b.useState(new Set),[J,G]=b.useState(!1),[R,se]=b.useState(1),[W,F]=b.useState(20),[V,te]=b.useState(""),{toast:ne}=ts(),K=b.useRef(null),ie=b.useRef(!0);b.useEffect(()=>{re()},[]);const re=async()=>{try{r(!0);const ke=await th();e(ke.api_providers||[]),h(!1),ie.current=!1}catch(ke){console.error("加载配置失败:",ke)}finally{r(!1)}},ae=async()=>{try{m(!0),Uv().catch(()=>{}),x(!0)}catch(ke){console.error("重启失败:",ke),x(!1),ne({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),m(!1)}},_e=async()=>{try{i(!0),K.current&&clearTimeout(K.current);const ke=await th();ke.api_providers=t,await R1(ke),h(!1),ne({title:"保存成功",description:"正在重启麦麦..."}),await ae()}catch(ke){console.error("保存配置失败:",ke),ne({title:"保存失败",description:ke.message,variant:"destructive"}),i(!1)}},Ue=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},Xe=()=>{x(!1),m(!1),ne({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},Ze=b.useCallback(async ke=>{if(!ie.current)try{o(!0),await X3("api_providers",ke),h(!1)}catch(Te){console.error("自动保存失败:",Te),h(!0)}finally{o(!1)}},[]);b.useEffect(()=>{if(!ie.current)return h(!0),K.current&&clearTimeout(K.current),K.current=setTimeout(()=>{Ze(t)},2e3),()=>{K.current&&clearTimeout(K.current)}},[t,Ze]);const Oe=async()=>{try{i(!0),K.current&&clearTimeout(K.current);const ke=await th();ke.api_providers=t,await R1(ke),h(!1),ne({title:"保存成功",description:"模型提供商配置已保存"})}catch(ke){console.error("保存配置失败:",ke),ne({title:"保存失败",description:ke.message,variant:"destructive"})}finally{i(!1)}},He=(ke,Te)=>{if(ke){const qe=vm.find(Rt=>Rt.base_url===ke.base_url&&Rt.client_type===ke.client_type);_(qe?.id||"custom"),k(ke)}else _("custom"),k({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10});C(Te),ee(!1),w(!0)},Ve=ke=>{_(ke),M(!1);const Te=vm.find(qe=>qe.id===ke);Te&&Te.id!=="custom"?k(qe=>({...qe,name:Te.name,base_url:Te.base_url,client_type:Te.client_type})):Te?.id==="custom"&&k(qe=>({...qe,name:"",base_url:"",client_type:"openai"}))},Be=b.useMemo(()=>T!=="custom",[T]),ut=async()=>{if(S?.api_key)try{await navigator.clipboard.writeText(S.api_key),ne({title:"复制成功",description:"API Key 已复制到剪贴板"})}catch{ne({title:"复制失败",description:"无法访问剪贴板",variant:"destructive"})}},rt=()=>{if(!S)return;const ke={...S,max_retry:S.max_retry??2,timeout:S.timeout??30,retry_interval:S.retry_interval??10};if(N!==null){const Te=[...t];Te[N]=ke,e(Te)}else e([...t,ke]);w(!1),k(null),C(null)},rn=ke=>{if(!ke&&S){const Te={...S,max_retry:S.max_retry??2,timeout:S.timeout??30,retry_interval:S.retry_interval??10};k(Te)}w(ke)},Rn=ke=>{Q(ke),P(!0)},Tn=()=>{if(I!==null){const ke=t.filter((Te,qe)=>qe!==I);e(ke),ne({title:"删除成功",description:"提供商已从列表中移除"})}P(!1),Q(null)},Mt=ke=>{const Te=new Set(B);Te.has(ke)?Te.delete(ke):Te.add(ke),X(Te)},vt=()=>{if(B.size===Ge.length)X(new Set);else{const ke=Ge.map((Te,qe)=>t.findIndex(Rt=>Rt===Ge[qe]));X(new Set(ke))}},Ce=()=>{if(B.size===0){ne({title:"提示",description:"请先选择要删除的提供商",variant:"default"});return}G(!0)},Le=()=>{const ke=t.filter((Te,qe)=>!B.has(qe));e(ke),X(new Set),G(!1),ne({title:"批量删除成功",description:`已删除 ${B.size} 个提供商`})},Ge=t.filter(ke=>{if(!z)return!0;const Te=z.toLowerCase();return ke.name.toLowerCase().includes(Te)||ke.base_url.toLowerCase().includes(Te)||ke.client_type.toLowerCase().includes(Te)}),lt=Math.ceil(Ge.length/W),jt=Ge.slice((R-1)*W,R*W),Tt=()=>{const ke=parseInt(V);ke>=1&&ke<=lt&&(se(ke),te(""))};return n?l.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:l.jsx("div",{className:"flex items-center justify-center h-64",children:l.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})}):l.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[l.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[l.jsxs("div",{children:[l.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"AI模型厂商配置"}),l.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理 AI 模型厂商的 API 配置"})]}),l.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[B.size>0&&l.jsxs(de,{onClick:Ce,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[l.jsx(fn,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",B.size,")"]}),l.jsxs(de,{onClick:()=>He(null,null),size:"sm",className:"w-full sm:w-auto",children:[l.jsx(ws,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加提供商"]}),l.jsxs(de,{onClick:Oe,disabled:s||a||!c||f,size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[l.jsx(zv,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),s?"保存中...":a?"自动保存中...":c?"保存配置":"已保存"]}),l.jsxs(Nn,{children:[l.jsx(Qr,{asChild:!0,children:l.jsxs(de,{disabled:s||a||f,size:"sm",className:"w-full sm:w-auto",children:[l.jsx(a6,{className:"mr-2 h-4 w-4"}),f?"重启中...":c?"保存并重启":"重启麦麦"]})}),l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认重启麦麦?"}),l.jsx(bn,{className:"space-y-3",asChild:!0,children:l.jsxs("div",{children:[l.jsx("p",{children:c?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),l.jsxs(Na,{className:"border-yellow-500/50 bg-yellow-500/10",children:[l.jsx(ra,{className:"h-4 w-4 text-yellow-600"}),l.jsxs(Ca,{className:"text-yellow-900 dark:text-yellow-100",children:[l.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",l.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",l.jsxs(xr,{children:[l.jsx(Bh,{asChild:!0,children:l.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[l.jsx(Dv,{className:"h-3 w-3"}),"如何结束程序?"]})}),l.jsxs(lr,{className:"max-w-2xl",children:[l.jsxs(or,{children:[l.jsx(cr,{children:"如何结束使用重启功能后的麦麦程序"}),l.jsx(Hr,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),l.jsxs(sa,{defaultValue:"windows",className:"w-full",children:[l.jsxs(Mi,{className:"grid w-full grid-cols-3",children:[l.jsx(zt,{value:"windows",children:"Windows"}),l.jsx(zt,{value:"macos",children:"macOS"}),l.jsx(zt,{value:"linux",children:"Linux"})]}),l.jsxs(tn,{value:"windows",className:"space-y-4 mt-4",children:[l.jsxs("div",{className:"space-y-2",children:[l.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),l.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[l.jsxs("li",{children:["按 ",l.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),l.jsxs("li",{children:["在“进程”或“详细信息”标签页中找到 ",l.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),l.jsx("li",{children:"右键点击并选择“结束任务”"})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),l.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[l.jsx("p",{children:"# 查找麦麦进程"}),l.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),l.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),l.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),l.jsxs(tn,{value:"macos",className:"space-y-4 mt-4",children:[l.jsxs("div",{className:"space-y-2",children:[l.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),l.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[l.jsxs("li",{children:["按 ",l.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"})," 打开 Spotlight,搜索“活动监视器”"]}),l.jsxs("li",{children:["在进程列表中找到 ",l.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),l.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),l.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[l.jsx("p",{children:"# 查找麦麦进程"}),l.jsx("p",{children:"ps aux | grep python | grep -v grep"}),l.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),l.jsx("p",{children:"kill -9 "}),l.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),l.jsx("p",{children:"pkill -9 python"})]})]})]}),l.jsxs(tn,{value:"linux",className:"space-y-4 mt-4",children:[l.jsxs("div",{className:"space-y-2",children:[l.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),l.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[l.jsx("p",{children:"# 查找麦麦进程"}),l.jsx("p",{children:"ps aux | grep python | grep -v grep"}),l.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),l.jsx("p",{children:"kill -9 "}),l.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),l.jsx("p",{children:'pkill -9 -f "bot.py"'}),l.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),l.jsx("p",{children:"pkill -9 python"})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),l.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[l.jsxs("li",{children:["在终端输入 ",l.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),l.jsxs("li",{children:["按 ",l.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),l.jsxs("li",{children:["按 ",l.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),l.jsx(as,{children:l.jsx(k6,{asChild:!0,children:l.jsx(de,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:c?_e:ae,children:c?"保存并重启":"确认重启"})]})]})]})]})]}),l.jsxs(Na,{children:[l.jsx(ra,{className:"h-4 w-4"}),l.jsxs(Ca,{children:["配置更新后需要",l.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),l.jsxs(hn,{className:"h-[calc(100vh-260px)]",children:[l.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2 mb-4",children:[l.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[l.jsx(ci,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),l.jsx(Pe,{placeholder:"搜索提供商名称、URL 或类型...",value:z,onChange:ke=>H(ke.target.value),className:"pl-9"})]}),z&&l.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",Ge.length," 个结果"]})]}),l.jsx("div",{className:"md:hidden space-y-3",children:Ge.length===0?l.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:z?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'}):jt.map((ke,Te)=>{const qe=t.findIndex(Rt=>Rt===ke);return l.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[l.jsxs("div",{className:"flex items-start justify-between gap-2",children:[l.jsxs("div",{className:"flex-1 min-w-0",children:[l.jsx("h3",{className:"font-semibold text-base truncate",children:ke.name}),l.jsx("p",{className:"text-xs text-muted-foreground mt-1 break-all",children:ke.base_url})]}),l.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[l.jsxs(de,{variant:"default",size:"sm",onClick:()=>He(ke,qe),children:[l.jsx(wu,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),l.jsxs(de,{size:"sm",onClick:()=>Rn(qe),className:"bg-red-600 hover:bg-red-700 text-white",children:[l.jsx(fn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})]}),l.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[l.jsxs("div",{children:[l.jsx("span",{className:"text-muted-foreground text-xs",children:"客户端类型"}),l.jsx("p",{className:"font-medium",children:ke.client_type})]}),l.jsxs("div",{children:[l.jsx("span",{className:"text-muted-foreground text-xs",children:"最大重试"}),l.jsx("p",{className:"font-medium",children:ke.max_retry})]}),l.jsxs("div",{children:[l.jsx("span",{className:"text-muted-foreground text-xs",children:"超时(秒)"}),l.jsx("p",{className:"font-medium",children:ke.timeout})]}),l.jsxs("div",{children:[l.jsx("span",{className:"text-muted-foreground text-xs",children:"重试间隔(秒)"}),l.jsx("p",{className:"font-medium",children:ke.retry_interval})]})]})]},Te)})}),l.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:l.jsx("div",{className:"overflow-x-auto",children:l.jsxs(Vh,{children:[l.jsx(Uh,{children:l.jsxs(bs,{children:[l.jsx(ln,{className:"w-12",children:l.jsx(li,{checked:B.size===Ge.length&&Ge.length>0,onCheckedChange:vt})}),l.jsx(ln,{children:"名称"}),l.jsx(ln,{children:"基础URL"}),l.jsx(ln,{children:"客户端类型"}),l.jsx(ln,{className:"text-right",children:"最大重试"}),l.jsx(ln,{className:"text-right",children:"超时(秒)"}),l.jsx(ln,{className:"text-right",children:"重试间隔(秒)"}),l.jsx(ln,{className:"text-right",children:"操作"})]})}),l.jsx(Wh,{children:jt.length===0?l.jsx(bs,{children:l.jsx(Qt,{colSpan:8,className:"text-center text-muted-foreground py-8",children:z?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'})}):jt.map((ke,Te)=>{const qe=t.findIndex(Rt=>Rt===ke);return l.jsxs(bs,{children:[l.jsx(Qt,{children:l.jsx(li,{checked:B.has(qe),onCheckedChange:()=>Mt(qe)})}),l.jsx(Qt,{className:"font-medium",children:ke.name}),l.jsx(Qt,{className:"max-w-xs truncate",title:ke.base_url,children:ke.base_url}),l.jsx(Qt,{children:ke.client_type}),l.jsx(Qt,{className:"text-right",children:ke.max_retry}),l.jsx(Qt,{className:"text-right",children:ke.timeout}),l.jsx(Qt,{className:"text-right",children:ke.retry_interval}),l.jsx(Qt,{className:"text-right",children:l.jsxs("div",{className:"flex justify-end gap-2",children:[l.jsxs(de,{variant:"default",size:"sm",onClick:()=>He(ke,qe),children:[l.jsx(wu,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),l.jsxs(de,{size:"sm",onClick:()=>Rn(qe),className:"bg-red-600 hover:bg-red-700 text-white",children:[l.jsx(fn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},Te)})})]})})}),Ge.length>0&&l.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx(ue,{htmlFor:"page-size-provider",className:"text-sm whitespace-nowrap",children:"每页显示"}),l.jsxs(qt,{value:W.toString(),onValueChange:ke=>{F(parseInt(ke)),se(1),X(new Set)},children:[l.jsx(It,{id:"page-size-provider",className:"w-20",children:l.jsx(Ft,{})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"10",children:"10"}),l.jsx(De,{value:"20",children:"20"}),l.jsx(De,{value:"50",children:"50"}),l.jsx(De,{value:"100",children:"100"})]})]}),l.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(R-1)*W+1," 到"," ",Math.min(R*W,Ge.length)," 条,共 ",Ge.length," 条"]})]}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx(de,{variant:"outline",size:"sm",onClick:()=>se(1),disabled:R===1,className:"hidden sm:flex",children:l.jsx(L0,{className:"h-4 w-4"})}),l.jsxs(de,{variant:"outline",size:"sm",onClick:()=>se(ke=>Math.max(1,ke-1)),disabled:R===1,children:[l.jsx($u,{className:"h-4 w-4 sm:mr-1"}),l.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx(Pe,{type:"number",value:V,onChange:ke=>te(ke.target.value),onKeyDown:ke=>ke.key==="Enter"&&Tt(),placeholder:R.toString(),className:"w-16 h-8 text-center",min:1,max:lt}),l.jsx(de,{variant:"outline",size:"sm",onClick:Tt,disabled:!V,className:"h-8",children:"跳转"})]}),l.jsxs(de,{variant:"outline",size:"sm",onClick:()=>se(ke=>ke+1),disabled:R>=lt,children:[l.jsx("span",{className:"hidden sm:inline",children:"下一页"}),l.jsx(Qu,{className:"h-4 w-4 sm:ml-1"})]}),l.jsx(de,{variant:"outline",size:"sm",onClick:()=>se(lt),disabled:R>=lt,className:"hidden sm:flex",children:l.jsx(I0,{className:"h-4 w-4"})})]})]})]}),l.jsx(xr,{open:y,onOpenChange:rn,children:l.jsxs(lr,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto",children:[l.jsxs(or,{children:[l.jsx(cr,{children:N!==null?"编辑提供商":"添加提供商"}),l.jsx(Hr,{children:"配置 API 提供商的连接信息和参数"})]}),l.jsxs("form",{onSubmit:ke=>{ke.preventDefault(),rt()},autoComplete:"off",children:[l.jsxs("div",{className:"grid gap-4 py-4",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"template",children:"提供商模板"}),l.jsxs(ul,{open:E,onOpenChange:M,children:[l.jsx(dl,{asChild:!0,children:l.jsxs(de,{variant:"outline",role:"combobox","aria-expanded":E,className:"w-full justify-between",children:[T?vm.find(ke=>ke.id===T)?.display_name:"选择提供商模板...",l.jsx(l6,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),l.jsx(Ea,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:l.jsxs(dy,{children:[l.jsx(hy,{placeholder:"搜索提供商模板..."}),l.jsx(hn,{className:"h-[300px]",children:l.jsxs(fy,{className:"max-h-none overflow-visible",children:[l.jsx(my,{children:"未找到匹配的模板"}),l.jsx(f0,{children:vm.map(ke=>l.jsxs(m0,{value:ke.display_name,onSelect:()=>Ve(ke.id),children:[l.jsx(ol,{className:`mr-2 h-4 w-4 ${T===ke.id?"opacity-100":"opacity-0"}`}),ke.display_name]},ke.id))})]})})]})})]}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"选择预设模板可自动填充 URL 和客户端类型,支持搜索"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"name",children:"名称 *"}),l.jsx(Pe,{id:"name",value:S?.name||"",onChange:ke=>k(Te=>Te?{...Te,name:ke.target.value}:null),placeholder:"例如: DeepSeek, SiliconFlow"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"base_url",children:"基础 URL *"}),l.jsx(Pe,{id:"base_url",value:S?.base_url||"",onChange:ke=>k(Te=>Te?{...Te,base_url:ke.target.value}:null),placeholder:"https://api.example.com/v1",disabled:Be,className:Be?"bg-muted cursor-not-allowed":""}),Be&&l.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时 URL 不可编辑,切换到"自定义"以手动配置'})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"api_key",children:"API Key *"}),l.jsxs("div",{className:"flex gap-2",children:[l.jsx(Pe,{id:"api_key",type:U?"text":"password",value:S?.api_key||"",onChange:ke=>k(Te=>Te?{...Te,api_key:ke.target.value}:null),placeholder:"sk-...",className:"flex-1"}),l.jsx(de,{type:"button",variant:"outline",size:"icon",onClick:()=>ee(!U),title:U?"隐藏密钥":"显示密钥",children:U?l.jsx(N1,{className:"h-4 w-4"}):l.jsx(oa,{className:"h-4 w-4"})}),l.jsx(de,{type:"button",variant:"outline",size:"icon",onClick:ut,title:"复制密钥",children:l.jsx(O1,{className:"h-4 w-4"})})]})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"client_type",children:"客户端类型"}),l.jsxs(qt,{value:S?.client_type||"openai",onValueChange:ke=>k(Te=>Te?{...Te,client_type:ke}:null),disabled:Be,children:[l.jsx(It,{id:"client_type",className:Be?"bg-muted cursor-not-allowed":"",children:l.jsx(Ft,{placeholder:"选择客户端类型"})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"openai",children:"OpenAI"}),l.jsx(De,{value:"gemini",children:"Gemini"})]})]}),Be&&l.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时客户端类型不可编辑,切换到"自定义"以手动配置'})]}),l.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"max_retry",children:"最大重试"}),l.jsx(Pe,{id:"max_retry",type:"number",min:"0",value:S?.max_retry??"",onChange:ke=>{const Te=ke.target.value===""?null:parseInt(ke.target.value);k(qe=>qe?{...qe,max_retry:Te}:null)},placeholder:"默认: 2"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"timeout",children:"超时(秒)"}),l.jsx(Pe,{id:"timeout",type:"number",min:"1",value:S?.timeout??"",onChange:ke=>{const Te=ke.target.value===""?null:parseInt(ke.target.value);k(qe=>qe?{...qe,timeout:Te}:null)},placeholder:"默认: 30"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"retry_interval",children:"重试间隔(秒)"}),l.jsx(Pe,{id:"retry_interval",type:"number",min:"1",value:S?.retry_interval??"",onChange:ke=>{const Te=ke.target.value===""?null:parseInt(ke.target.value);k(qe=>qe?{...qe,retry_interval:Te}:null)},placeholder:"默认: 10"})]})]})]}),l.jsxs(as,{children:[l.jsx(de,{type:"button",variant:"outline",onClick:()=>w(!1),children:"取消"}),l.jsx(de,{type:"submit",children:"保存"})]})]})]})}),l.jsx(Nn,{open:L,onOpenChange:P,children:l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认删除"}),l.jsxs(bn,{children:['确定要删除提供商 "',I!==null?t[I]?.name:"",'" 吗? 此操作无法撤销。']})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:Tn,children:"删除"})]})]})}),l.jsx(Nn,{open:J,onOpenChange:G,children:l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认批量删除"}),l.jsxs(bn,{children:["确定要删除选中的 ",B.size," 个提供商吗? 此操作无法撤销。"]})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:Le,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),g&&l.jsx(N6,{onRestartComplete:Ue,onRestartFailed:Xe})]})}function cfe(){for(var t=arguments.length,e=new Array(t),n=0;nr=>{e.forEach(s=>s(r))},e)}const py=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Gh(t){const e=Object.prototype.toString.call(t);return e==="[object Window]"||e==="[object global]"}function xj(t){return"nodeType"in t}function di(t){var e,n;return t?Gh(t)?t:xj(t)&&(e=(n=t.ownerDocument)==null?void 0:n.defaultView)!=null?e:window:window}function vj(t){const{Document:e}=di(t);return t instanceof e}function ap(t){return Gh(t)?!1:t instanceof di(t).HTMLElement}function yF(t){return t instanceof di(t).SVGElement}function Xh(t){return t?Gh(t)?t.document:xj(t)?vj(t)?t:ap(t)||yF(t)?t.ownerDocument:document:document:document}const fl=py?b.useLayoutEffect:b.useEffect;function yj(t){const e=b.useRef(t);return fl(()=>{e.current=t}),b.useCallback(function(){for(var n=arguments.length,r=new Array(n),s=0;s{t.current=setInterval(r,s)},[]),n=b.useCallback(()=>{t.current!==null&&(clearInterval(t.current),t.current=null)},[]);return[e,n]}function p0(t,e){e===void 0&&(e=[t]);const n=b.useRef(t);return fl(()=>{n.current!==t&&(n.current=t)},e),n}function lp(t,e){const n=b.useRef();return b.useMemo(()=>{const r=t(n.current);return n.current=r,r},[...e])}function nv(t){const e=yj(t),n=b.useRef(null),r=b.useCallback(s=>{s!==n.current&&e?.(s,n.current),n.current=s},[]);return[n,r]}function XS(t){const e=b.useRef();return b.useEffect(()=>{e.current=t},[t]),e.current}let t4={};function op(t,e){return b.useMemo(()=>{if(e)return e;const n=t4[t]==null?0:t4[t]+1;return t4[t]=n,t+"-"+n},[t,e])}function bF(t){return function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),s=1;s{const o=Object.entries(a);for(const[c,h]of o){const f=i[c];f!=null&&(i[c]=f+t*h)}return i},{...e})}}const oh=bF(1),g0=bF(-1);function dfe(t){return"clientX"in t&&"clientY"in t}function bj(t){if(!t)return!1;const{KeyboardEvent:e}=di(t.target);return e&&t instanceof e}function hfe(t){if(!t)return!1;const{TouchEvent:e}=di(t.target);return e&&t instanceof e}function YS(t){if(hfe(t)){if(t.touches&&t.touches.length){const{clientX:e,clientY:n}=t.touches[0];return{x:e,y:n}}else if(t.changedTouches&&t.changedTouches.length){const{clientX:e,clientY:n}=t.changedTouches[0];return{x:e,y:n}}}return dfe(t)?{x:t.clientX,y:t.clientY}:null}const x0=Object.freeze({Translate:{toString(t){if(!t)return;const{x:e,y:n}=t;return"translate3d("+(e?Math.round(e):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(t){if(!t)return;const{scaleX:e,scaleY:n}=t;return"scaleX("+e+") scaleY("+n+")"}},Transform:{toString(t){if(t)return[x0.Translate.toString(t),x0.Scale.toString(t)].join(" ")}},Transition:{toString(t){let{property:e,duration:n,easing:r}=t;return e+" "+n+"ms "+r}}}),qE="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function ffe(t){return t.matches(qE)?t:t.querySelector(qE)}const mfe={display:"none"};function pfe(t){let{id:e,value:n}=t;return he.createElement("div",{id:e,style:mfe},n)}function gfe(t){let{id:e,announcement:n,ariaLiveType:r="assertive"}=t;const s={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return he.createElement("div",{id:e,style:s,role:"status","aria-live":r,"aria-atomic":!0},n)}function xfe(){const[t,e]=b.useState("");return{announce:b.useCallback(r=>{r!=null&&e(r)},[]),announcement:t}}const wF=b.createContext(null);function vfe(t){const e=b.useContext(wF);b.useEffect(()=>{if(!e)throw new Error("useDndMonitor must be used within a children of ");return e(t)},[t,e])}function yfe(){const[t]=b.useState(()=>new Set),e=b.useCallback(r=>(t.add(r),()=>t.delete(r)),[t]);return[b.useCallback(r=>{let{type:s,event:i}=r;t.forEach(a=>{var o;return(o=a[s])==null?void 0:o.call(a,i)})},[t]),e]}const bfe={draggable:` - To pick up a draggable item, press the space bar. - While dragging, use the arrow keys to move the item. - Press space again to drop the item in its new position, or press escape to cancel. - `},wfe={onDragStart(t){let{active:e}=t;return"Picked up draggable item "+e.id+"."},onDragOver(t){let{active:e,over:n}=t;return n?"Draggable item "+e.id+" was moved over droppable area "+n.id+".":"Draggable item "+e.id+" is no longer over a droppable area."},onDragEnd(t){let{active:e,over:n}=t;return n?"Draggable item "+e.id+" was dropped over droppable area "+n.id:"Draggable item "+e.id+" was dropped."},onDragCancel(t){let{active:e}=t;return"Dragging was cancelled. Draggable item "+e.id+" was dropped."}};function Sfe(t){let{announcements:e=wfe,container:n,hiddenTextDescribedById:r,screenReaderInstructions:s=bfe}=t;const{announce:i,announcement:a}=xfe(),o=op("DndLiveRegion"),[c,h]=b.useState(!1);if(b.useEffect(()=>{h(!0)},[]),vfe(b.useMemo(()=>({onDragStart(m){let{active:g}=m;i(e.onDragStart({active:g}))},onDragMove(m){let{active:g,over:x}=m;e.onDragMove&&i(e.onDragMove({active:g,over:x}))},onDragOver(m){let{active:g,over:x}=m;i(e.onDragOver({active:g,over:x}))},onDragEnd(m){let{active:g,over:x}=m;i(e.onDragEnd({active:g,over:x}))},onDragCancel(m){let{active:g,over:x}=m;i(e.onDragCancel({active:g,over:x}))}}),[i,e])),!c)return null;const f=he.createElement(he.Fragment,null,he.createElement(pfe,{id:r,value:s.draggable}),he.createElement(gfe,{id:o,announcement:a}));return n?fu.createPortal(f,n):f}var Zr;(function(t){t.DragStart="dragStart",t.DragMove="dragMove",t.DragEnd="dragEnd",t.DragCancel="dragCancel",t.DragOver="dragOver",t.RegisterDroppable="registerDroppable",t.SetDroppableDisabled="setDroppableDisabled",t.UnregisterDroppable="unregisterDroppable"})(Zr||(Zr={}));function rv(){}function FE(t,e){return b.useMemo(()=>({sensor:t,options:e??{}}),[t,e])}function kfe(){for(var t=arguments.length,e=new Array(t),n=0;n[...e].filter(r=>r!=null),[...e])}const Aa=Object.freeze({x:0,y:0});function SF(t,e){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function kF(t,e){let{data:{value:n}}=t,{data:{value:r}}=e;return n-r}function jfe(t,e){let{data:{value:n}}=t,{data:{value:r}}=e;return r-n}function $E(t){let{left:e,top:n,height:r,width:s}=t;return[{x:e,y:n},{x:e+s,y:n},{x:e,y:n+r},{x:e+s,y:n+r}]}function jF(t,e){if(!t||t.length===0)return null;const[n]=t;return n[e]}function QE(t,e,n){return e===void 0&&(e=t.left),n===void 0&&(n=t.top),{x:e+t.width*.5,y:n+t.height*.5}}const Ofe=t=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=QE(e,e.left,e.top),i=[];for(const a of r){const{id:o}=a,c=n.get(o);if(c){const h=SF(QE(c),s);i.push({id:o,data:{droppableContainer:a,value:h}})}}return i.sort(kF)},Nfe=t=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=$E(e),i=[];for(const a of r){const{id:o}=a,c=n.get(o);if(c){const h=$E(c),f=s.reduce((g,x,y)=>g+SF(h[y],x),0),m=Number((f/4).toFixed(4));i.push({id:o,data:{droppableContainer:a,value:m}})}}return i.sort(kF)};function Cfe(t,e){const n=Math.max(e.top,t.top),r=Math.max(e.left,t.left),s=Math.min(e.left+e.width,t.left+t.width),i=Math.min(e.top+e.height,t.top+t.height),a=s-r,o=i-n;if(r{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=[];for(const i of r){const{id:a}=i,o=n.get(a);if(o){const c=Cfe(o,e);c>0&&s.push({id:a,data:{droppableContainer:i,value:c}})}}return s.sort(jfe)};function Efe(t,e,n){return{...t,scaleX:e&&n?e.width/n.width:1,scaleY:e&&n?e.height/n.height:1}}function OF(t,e){return t&&e?{x:t.left-e.left,y:t.top-e.top}:Aa}function _fe(t){return function(n){for(var r=arguments.length,s=new Array(r>1?r-1:0),i=1;i({...a,top:a.top+t*o.y,bottom:a.bottom+t*o.y,left:a.left+t*o.x,right:a.right+t*o.x}),{...n})}}const Mfe=_fe(1);function Afe(t){if(t.startsWith("matrix3d(")){const e=t.slice(9,-1).split(/, /);return{x:+e[12],y:+e[13],scaleX:+e[0],scaleY:+e[5]}}else if(t.startsWith("matrix(")){const e=t.slice(7,-1).split(/, /);return{x:+e[4],y:+e[5],scaleX:+e[0],scaleY:+e[3]}}return null}function Rfe(t,e,n){const r=Afe(e);if(!r)return t;const{scaleX:s,scaleY:i,x:a,y:o}=r,c=t.left-a-(1-s)*parseFloat(n),h=t.top-o-(1-i)*parseFloat(n.slice(n.indexOf(" ")+1)),f=s?t.width/s:t.width,m=i?t.height/i:t.height;return{width:f,height:m,top:h,right:c+f,bottom:h+m,left:c}}const Dfe={ignoreTransform:!1};function Yh(t,e){e===void 0&&(e=Dfe);let n=t.getBoundingClientRect();if(e.ignoreTransform){const{transform:h,transformOrigin:f}=di(t).getComputedStyle(t);h&&(n=Rfe(n,h,f))}const{top:r,left:s,width:i,height:a,bottom:o,right:c}=n;return{top:r,left:s,width:i,height:a,bottom:o,right:c}}function HE(t){return Yh(t,{ignoreTransform:!0})}function zfe(t){const e=t.innerWidth,n=t.innerHeight;return{top:0,left:0,right:e,bottom:n,width:e,height:n}}function Pfe(t,e){return e===void 0&&(e=di(t).getComputedStyle(t)),e.position==="fixed"}function Lfe(t,e){e===void 0&&(e=di(t).getComputedStyle(t));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(s=>{const i=e[s];return typeof i=="string"?n.test(i):!1})}function gy(t,e){const n=[];function r(s){if(e!=null&&n.length>=e||!s)return n;if(vj(s)&&s.scrollingElement!=null&&!n.includes(s.scrollingElement))return n.push(s.scrollingElement),n;if(!ap(s)||yF(s)||n.includes(s))return n;const i=di(t).getComputedStyle(s);return s!==t&&Lfe(s,i)&&n.push(s),Pfe(s,i)?n:r(s.parentNode)}return t?r(t):n}function NF(t){const[e]=gy(t,1);return e??null}function n4(t){return!py||!t?null:Gh(t)?t:xj(t)?vj(t)||t===Xh(t).scrollingElement?window:ap(t)?t:null:null}function CF(t){return Gh(t)?t.scrollX:t.scrollLeft}function TF(t){return Gh(t)?t.scrollY:t.scrollTop}function KS(t){return{x:CF(t),y:TF(t)}}var ss;(function(t){t[t.Forward=1]="Forward",t[t.Backward=-1]="Backward"})(ss||(ss={}));function EF(t){return!py||!t?!1:t===document.scrollingElement}function _F(t){const e={x:0,y:0},n=EF(t)?{height:window.innerHeight,width:window.innerWidth}:{height:t.clientHeight,width:t.clientWidth},r={x:t.scrollWidth-n.width,y:t.scrollHeight-n.height},s=t.scrollTop<=e.y,i=t.scrollLeft<=e.x,a=t.scrollTop>=r.y,o=t.scrollLeft>=r.x;return{isTop:s,isLeft:i,isBottom:a,isRight:o,maxScroll:r,minScroll:e}}const Ife={x:.2,y:.2};function Bfe(t,e,n,r,s){let{top:i,left:a,right:o,bottom:c}=n;r===void 0&&(r=10),s===void 0&&(s=Ife);const{isTop:h,isBottom:f,isLeft:m,isRight:g}=_F(t),x={x:0,y:0},y={x:0,y:0},w={height:e.height*s.y,width:e.width*s.x};return!h&&i<=e.top+w.height?(x.y=ss.Backward,y.y=r*Math.abs((e.top+w.height-i)/w.height)):!f&&c>=e.bottom-w.height&&(x.y=ss.Forward,y.y=r*Math.abs((e.bottom-w.height-c)/w.height)),!g&&o>=e.right-w.width?(x.x=ss.Forward,y.x=r*Math.abs((e.right-w.width-o)/w.width)):!m&&a<=e.left+w.width&&(x.x=ss.Backward,y.x=r*Math.abs((e.left+w.width-a)/w.width)),{direction:x,speed:y}}function qfe(t){if(t===document.scrollingElement){const{innerWidth:i,innerHeight:a}=window;return{top:0,left:0,right:i,bottom:a,width:i,height:a}}const{top:e,left:n,right:r,bottom:s}=t.getBoundingClientRect();return{top:e,left:n,right:r,bottom:s,width:t.clientWidth,height:t.clientHeight}}function MF(t){return t.reduce((e,n)=>oh(e,KS(n)),Aa)}function Ffe(t){return t.reduce((e,n)=>e+CF(n),0)}function $fe(t){return t.reduce((e,n)=>e+TF(n),0)}function Qfe(t,e){if(e===void 0&&(e=Yh),!t)return;const{top:n,left:r,bottom:s,right:i}=e(t);NF(t)&&(s<=0||i<=0||n>=window.innerHeight||r>=window.innerWidth)&&t.scrollIntoView({block:"center",inline:"center"})}const Hfe=[["x",["left","right"],Ffe],["y",["top","bottom"],$fe]];class wj{constructor(e,n){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=gy(n),s=MF(r);this.rect={...e},this.width=e.width,this.height=e.height;for(const[i,a,o]of Hfe)for(const c of a)Object.defineProperty(this,c,{get:()=>{const h=o(r),f=s[i]-h;return this.rect[c]+f},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class Dm{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(n=>{var r;return(r=this.target)==null?void 0:r.removeEventListener(...n)})},this.target=e}add(e,n,r){var s;(s=this.target)==null||s.addEventListener(e,n,r),this.listeners.push([e,n,r])}}function Vfe(t){const{EventTarget:e}=di(t);return t instanceof e?t:Xh(t)}function r4(t,e){const n=Math.abs(t.x),r=Math.abs(t.y);return typeof e=="number"?Math.sqrt(n**2+r**2)>e:"x"in e&&"y"in e?n>e.x&&r>e.y:"x"in e?n>e.x:"y"in e?r>e.y:!1}var Gi;(function(t){t.Click="click",t.DragStart="dragstart",t.Keydown="keydown",t.ContextMenu="contextmenu",t.Resize="resize",t.SelectionChange="selectionchange",t.VisibilityChange="visibilitychange"})(Gi||(Gi={}));function VE(t){t.preventDefault()}function Ufe(t){t.stopPropagation()}var un;(function(t){t.Space="Space",t.Down="ArrowDown",t.Right="ArrowRight",t.Left="ArrowLeft",t.Up="ArrowUp",t.Esc="Escape",t.Enter="Enter",t.Tab="Tab"})(un||(un={}));const AF={start:[un.Space,un.Enter],cancel:[un.Esc],end:[un.Space,un.Enter,un.Tab]},Wfe=(t,e)=>{let{currentCoordinates:n}=e;switch(t.code){case un.Right:return{...n,x:n.x+25};case un.Left:return{...n,x:n.x-25};case un.Down:return{...n,y:n.y+25};case un.Up:return{...n,y:n.y-25}}};class Sj{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;const{event:{target:n}}=e;this.props=e,this.listeners=new Dm(Xh(n)),this.windowListeners=new Dm(di(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(Gi.Resize,this.handleCancel),this.windowListeners.add(Gi.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(Gi.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:e,onStart:n}=this.props,r=e.node.current;r&&Qfe(r),n(Aa)}handleKeyDown(e){if(bj(e)){const{active:n,context:r,options:s}=this.props,{keyboardCodes:i=AF,coordinateGetter:a=Wfe,scrollBehavior:o="smooth"}=s,{code:c}=e;if(i.end.includes(c)){this.handleEnd(e);return}if(i.cancel.includes(c)){this.handleCancel(e);return}const{collisionRect:h}=r.current,f=h?{x:h.left,y:h.top}:Aa;this.referenceCoordinates||(this.referenceCoordinates=f);const m=a(e,{active:n,context:r.current,currentCoordinates:f});if(m){const g=g0(m,f),x={x:0,y:0},{scrollableAncestors:y}=r.current;for(const w of y){const S=e.code,{isTop:k,isRight:N,isLeft:C,isBottom:T,maxScroll:_,minScroll:E}=_F(w),M=qfe(w),L={x:Math.min(S===un.Right?M.right-M.width/2:M.right,Math.max(S===un.Right?M.left:M.left+M.width/2,m.x)),y:Math.min(S===un.Down?M.bottom-M.height/2:M.bottom,Math.max(S===un.Down?M.top:M.top+M.height/2,m.y))},P=S===un.Right&&!N||S===un.Left&&!C,I=S===un.Down&&!T||S===un.Up&&!k;if(P&&L.x!==m.x){const Q=w.scrollLeft+g.x,U=S===un.Right&&Q<=_.x||S===un.Left&&Q>=E.x;if(U&&!g.y){w.scrollTo({left:Q,behavior:o});return}U?x.x=w.scrollLeft-Q:x.x=S===un.Right?w.scrollLeft-_.x:w.scrollLeft-E.x,x.x&&w.scrollBy({left:-x.x,behavior:o});break}else if(I&&L.y!==m.y){const Q=w.scrollTop+g.y,U=S===un.Down&&Q<=_.y||S===un.Up&&Q>=E.y;if(U&&!g.x){w.scrollTo({top:Q,behavior:o});return}U?x.y=w.scrollTop-Q:x.y=S===un.Down?w.scrollTop-_.y:w.scrollTop-E.y,x.y&&w.scrollBy({top:-x.y,behavior:o});break}}this.handleMove(e,oh(g0(m,this.referenceCoordinates),x))}}}handleMove(e,n){const{onMove:r}=this.props;e.preventDefault(),r(n)}handleEnd(e){const{onEnd:n}=this.props;e.preventDefault(),this.detach(),n()}handleCancel(e){const{onCancel:n}=this.props;e.preventDefault(),this.detach(),n()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}Sj.activators=[{eventName:"onKeyDown",handler:(t,e,n)=>{let{keyboardCodes:r=AF,onActivation:s}=e,{active:i}=n;const{code:a}=t.nativeEvent;if(r.start.includes(a)){const o=i.activatorNode.current;return o&&t.target!==o?!1:(t.preventDefault(),s?.({event:t.nativeEvent}),!0)}return!1}}];function UE(t){return!!(t&&"distance"in t)}function WE(t){return!!(t&&"delay"in t)}class kj{constructor(e,n,r){var s;r===void 0&&(r=Vfe(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=n;const{event:i}=e,{target:a}=i;this.props=e,this.events=n,this.document=Xh(a),this.documentListeners=new Dm(this.document),this.listeners=new Dm(r),this.windowListeners=new Dm(di(a)),this.initialCoordinates=(s=YS(i))!=null?s:Aa,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:e,props:{options:{activationConstraint:n,bypassActivationConstraint:r}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(Gi.Resize,this.handleCancel),this.windowListeners.add(Gi.DragStart,VE),this.windowListeners.add(Gi.VisibilityChange,this.handleCancel),this.windowListeners.add(Gi.ContextMenu,VE),this.documentListeners.add(Gi.Keydown,this.handleKeydown),n){if(r!=null&&r({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(WE(n)){this.timeoutId=setTimeout(this.handleStart,n.delay),this.handlePending(n);return}if(UE(n)){this.handlePending(n);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,n){const{active:r,onPending:s}=this.props;s(r,e,this.initialCoordinates,n)}handleStart(){const{initialCoordinates:e}=this,{onStart:n}=this.props;e&&(this.activated=!0,this.documentListeners.add(Gi.Click,Ufe,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(Gi.SelectionChange,this.removeTextSelection),n(e))}handleMove(e){var n;const{activated:r,initialCoordinates:s,props:i}=this,{onMove:a,options:{activationConstraint:o}}=i;if(!s)return;const c=(n=YS(e))!=null?n:Aa,h=g0(s,c);if(!r&&o){if(UE(o)){if(o.tolerance!=null&&r4(h,o.tolerance))return this.handleCancel();if(r4(h,o.distance))return this.handleStart()}if(WE(o)&&r4(h,o.tolerance))return this.handleCancel();this.handlePending(o,h);return}e.cancelable&&e.preventDefault(),a(c)}handleEnd(){const{onAbort:e,onEnd:n}=this.props;this.detach(),this.activated||e(this.props.active),n()}handleCancel(){const{onAbort:e,onCancel:n}=this.props;this.detach(),this.activated||e(this.props.active),n()}handleKeydown(e){e.code===un.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}}const Gfe={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class jj extends kj{constructor(e){const{event:n}=e,r=Xh(n.target);super(e,Gfe,r)}}jj.activators=[{eventName:"onPointerDown",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];const Xfe={move:{name:"mousemove"},end:{name:"mouseup"}};var ZS;(function(t){t[t.RightClick=2]="RightClick"})(ZS||(ZS={}));class Yfe extends kj{constructor(e){super(e,Xfe,Xh(e.event.target))}}Yfe.activators=[{eventName:"onMouseDown",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;return n.button===ZS.RightClick?!1:(r?.({event:n}),!0)}}];const s4={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class Kfe extends kj{constructor(e){super(e,s4)}static setup(){return window.addEventListener(s4.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(s4.move.name,e)};function e(){}}}Kfe.activators=[{eventName:"onTouchStart",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;const{touches:s}=n;return s.length>1?!1:(r?.({event:n}),!0)}}];var zm;(function(t){t[t.Pointer=0]="Pointer",t[t.DraggableRect=1]="DraggableRect"})(zm||(zm={}));var sv;(function(t){t[t.TreeOrder=0]="TreeOrder",t[t.ReversedTreeOrder=1]="ReversedTreeOrder"})(sv||(sv={}));function Zfe(t){let{acceleration:e,activator:n=zm.Pointer,canScroll:r,draggingRect:s,enabled:i,interval:a=5,order:o=sv.TreeOrder,pointerCoordinates:c,scrollableAncestors:h,scrollableAncestorRects:f,delta:m,threshold:g}=t;const x=eme({delta:m,disabled:!i}),[y,w]=ufe(),S=b.useRef({x:0,y:0}),k=b.useRef({x:0,y:0}),N=b.useMemo(()=>{switch(n){case zm.Pointer:return c?{top:c.y,bottom:c.y,left:c.x,right:c.x}:null;case zm.DraggableRect:return s}},[n,s,c]),C=b.useRef(null),T=b.useCallback(()=>{const E=C.current;if(!E)return;const M=S.current.x*k.current.x,L=S.current.y*k.current.y;E.scrollBy(M,L)},[]),_=b.useMemo(()=>o===sv.TreeOrder?[...h].reverse():h,[o,h]);b.useEffect(()=>{if(!i||!h.length||!N){w();return}for(const E of _){if(r?.(E)===!1)continue;const M=h.indexOf(E),L=f[M];if(!L)continue;const{direction:P,speed:I}=Bfe(E,L,N,e,g);for(const Q of["x","y"])x[Q][P[Q]]||(I[Q]=0,P[Q]=0);if(I.x>0||I.y>0){w(),C.current=E,y(T,a),S.current=I,k.current=P;return}}S.current={x:0,y:0},k.current={x:0,y:0},w()},[e,T,r,w,i,a,JSON.stringify(N),JSON.stringify(x),y,h,_,f,JSON.stringify(g)])}const Jfe={x:{[ss.Backward]:!1,[ss.Forward]:!1},y:{[ss.Backward]:!1,[ss.Forward]:!1}};function eme(t){let{delta:e,disabled:n}=t;const r=XS(e);return lp(s=>{if(n||!r||!s)return Jfe;const i={x:Math.sign(e.x-r.x),y:Math.sign(e.y-r.y)};return{x:{[ss.Backward]:s.x[ss.Backward]||i.x===-1,[ss.Forward]:s.x[ss.Forward]||i.x===1},y:{[ss.Backward]:s.y[ss.Backward]||i.y===-1,[ss.Forward]:s.y[ss.Forward]||i.y===1}}},[n,e,r])}function tme(t,e){const n=e!=null?t.get(e):void 0,r=n?n.node.current:null;return lp(s=>{var i;return e==null?null:(i=r??s)!=null?i:null},[r,e])}function nme(t,e){return b.useMemo(()=>t.reduce((n,r)=>{const{sensor:s}=r,i=s.activators.map(a=>({eventName:a.eventName,handler:e(a.handler,r)}));return[...n,...i]},[]),[t,e])}var v0;(function(t){t[t.Always=0]="Always",t[t.BeforeDragging=1]="BeforeDragging",t[t.WhileDragging=2]="WhileDragging"})(v0||(v0={}));var JS;(function(t){t.Optimized="optimized"})(JS||(JS={}));const GE=new Map;function rme(t,e){let{dragging:n,dependencies:r,config:s}=e;const[i,a]=b.useState(null),{frequency:o,measure:c,strategy:h}=s,f=b.useRef(t),m=S(),g=p0(m),x=b.useCallback(function(k){k===void 0&&(k=[]),!g.current&&a(N=>N===null?k:N.concat(k.filter(C=>!N.includes(C))))},[g]),y=b.useRef(null),w=lp(k=>{if(m&&!n)return GE;if(!k||k===GE||f.current!==t||i!=null){const N=new Map;for(let C of t){if(!C)continue;if(i&&i.length>0&&!i.includes(C.id)&&C.rect.current){N.set(C.id,C.rect.current);continue}const T=C.node.current,_=T?new wj(c(T),T):null;C.rect.current=_,_&&N.set(C.id,_)}return N}return k},[t,i,n,m,c]);return b.useEffect(()=>{f.current=t},[t]),b.useEffect(()=>{m||x()},[n,m]),b.useEffect(()=>{i&&i.length>0&&a(null)},[JSON.stringify(i)]),b.useEffect(()=>{m||typeof o!="number"||y.current!==null||(y.current=setTimeout(()=>{x(),y.current=null},o))},[o,m,x,...r]),{droppableRects:w,measureDroppableContainers:x,measuringScheduled:i!=null};function S(){switch(h){case v0.Always:return!1;case v0.BeforeDragging:return n;default:return!n}}}function RF(t,e){return lp(n=>t?n||(typeof e=="function"?e(t):t):null,[e,t])}function sme(t,e){return RF(t,e)}function ime(t){let{callback:e,disabled:n}=t;const r=yj(e),s=b.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:i}=window;return new i(r)},[r,n]);return b.useEffect(()=>()=>s?.disconnect(),[s]),s}function xy(t){let{callback:e,disabled:n}=t;const r=yj(e),s=b.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:i}=window;return new i(r)},[n]);return b.useEffect(()=>()=>s?.disconnect(),[s]),s}function ame(t){return new wj(Yh(t),t)}function XE(t,e,n){e===void 0&&(e=ame);const[r,s]=b.useState(null);function i(){s(c=>{if(!t)return null;if(t.isConnected===!1){var h;return(h=c??n)!=null?h:null}const f=e(t);return JSON.stringify(c)===JSON.stringify(f)?c:f})}const a=ime({callback(c){if(t)for(const h of c){const{type:f,target:m}=h;if(f==="childList"&&m instanceof HTMLElement&&m.contains(t)){i();break}}}}),o=xy({callback:i});return fl(()=>{i(),t?(o?.observe(t),a?.observe(document.body,{childList:!0,subtree:!0})):(o?.disconnect(),a?.disconnect())},[t]),r}function lme(t){const e=RF(t);return OF(t,e)}const YE=[];function ome(t){const e=b.useRef(t),n=lp(r=>t?r&&r!==YE&&t&&e.current&&t.parentNode===e.current.parentNode?r:gy(t):YE,[t]);return b.useEffect(()=>{e.current=t},[t]),n}function cme(t){const[e,n]=b.useState(null),r=b.useRef(t),s=b.useCallback(i=>{const a=n4(i.target);a&&n(o=>o?(o.set(a,KS(a)),new Map(o)):null)},[]);return b.useEffect(()=>{const i=r.current;if(t!==i){a(i);const o=t.map(c=>{const h=n4(c);return h?(h.addEventListener("scroll",s,{passive:!0}),[h,KS(h)]):null}).filter(c=>c!=null);n(o.length?new Map(o):null),r.current=t}return()=>{a(t),a(i)};function a(o){o.forEach(c=>{const h=n4(c);h?.removeEventListener("scroll",s)})}},[s,t]),b.useMemo(()=>t.length?e?Array.from(e.values()).reduce((i,a)=>oh(i,a),Aa):MF(t):Aa,[t,e])}function KE(t,e){e===void 0&&(e=[]);const n=b.useRef(null);return b.useEffect(()=>{n.current=null},e),b.useEffect(()=>{const r=t!==Aa;r&&!n.current&&(n.current=t),!r&&n.current&&(n.current=null)},[t]),n.current?g0(t,n.current):Aa}function ume(t){b.useEffect(()=>{if(!py)return;const e=t.map(n=>{let{sensor:r}=n;return r.setup==null?void 0:r.setup()});return()=>{for(const n of e)n?.()}},t.map(e=>{let{sensor:n}=e;return n}))}function dme(t,e){return b.useMemo(()=>t.reduce((n,r)=>{let{eventName:s,handler:i}=r;return n[s]=a=>{i(a,e)},n},{}),[t,e])}function DF(t){return b.useMemo(()=>t?zfe(t):null,[t])}const ZE=[];function hme(t,e){e===void 0&&(e=Yh);const[n]=t,r=DF(n?di(n):null),[s,i]=b.useState(ZE);function a(){i(()=>t.length?t.map(c=>EF(c)?r:new wj(e(c),c)):ZE)}const o=xy({callback:a});return fl(()=>{o?.disconnect(),a(),t.forEach(c=>o?.observe(c))},[t]),s}function fme(t){if(!t)return null;if(t.children.length>1)return t;const e=t.children[0];return ap(e)?e:t}function mme(t){let{measure:e}=t;const[n,r]=b.useState(null),s=b.useCallback(h=>{for(const{target:f}of h)if(ap(f)){r(m=>{const g=e(f);return m?{...m,width:g.width,height:g.height}:g});break}},[e]),i=xy({callback:s}),a=b.useCallback(h=>{const f=fme(h);i?.disconnect(),f&&i?.observe(f),r(f?e(f):null)},[e,i]),[o,c]=nv(a);return b.useMemo(()=>({nodeRef:o,rect:n,setRef:c}),[n,o,c])}const pme=[{sensor:jj,options:{}},{sensor:Sj,options:{}}],gme={current:{}},g1={draggable:{measure:HE},droppable:{measure:HE,strategy:v0.WhileDragging,frequency:JS.Optimized},dragOverlay:{measure:Yh}};class Pm extends Map{get(e){var n;return e!=null&&(n=super.get(e))!=null?n:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:n}=e;return!n})}getNodeFor(e){var n,r;return(n=(r=this.get(e))==null?void 0:r.node.current)!=null?n:void 0}}const xme={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new Pm,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:rv},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:g1,measureDroppableContainers:rv,windowRect:null,measuringScheduled:!1},vme={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:rv,draggableNodes:new Map,over:null,measureDroppableContainers:rv},vy=b.createContext(vme),zF=b.createContext(xme);function yme(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new Pm}}}function bme(t,e){switch(e.type){case Zr.DragStart:return{...t,draggable:{...t.draggable,initialCoordinates:e.initialCoordinates,active:e.active}};case Zr.DragMove:return t.draggable.active==null?t:{...t,draggable:{...t.draggable,translate:{x:e.coordinates.x-t.draggable.initialCoordinates.x,y:e.coordinates.y-t.draggable.initialCoordinates.y}}};case Zr.DragEnd:case Zr.DragCancel:return{...t,draggable:{...t.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case Zr.RegisterDroppable:{const{element:n}=e,{id:r}=n,s=new Pm(t.droppable.containers);return s.set(r,n),{...t,droppable:{...t.droppable,containers:s}}}case Zr.SetDroppableDisabled:{const{id:n,key:r,disabled:s}=e,i=t.droppable.containers.get(n);if(!i||r!==i.key)return t;const a=new Pm(t.droppable.containers);return a.set(n,{...i,disabled:s}),{...t,droppable:{...t.droppable,containers:a}}}case Zr.UnregisterDroppable:{const{id:n,key:r}=e,s=t.droppable.containers.get(n);if(!s||r!==s.key)return t;const i=new Pm(t.droppable.containers);return i.delete(n),{...t,droppable:{...t.droppable,containers:i}}}default:return t}}function wme(t){let{disabled:e}=t;const{active:n,activatorEvent:r,draggableNodes:s}=b.useContext(vy),i=XS(r),a=XS(n?.id);return b.useEffect(()=>{if(!e&&!r&&i&&a!=null){if(!bj(i)||document.activeElement===i.target)return;const o=s.get(a);if(!o)return;const{activatorNode:c,node:h}=o;if(!c.current&&!h.current)return;requestAnimationFrame(()=>{for(const f of[c.current,h.current]){if(!f)continue;const m=ffe(f);if(m){m.focus();break}}})}},[r,e,s,a,i]),null}function Sme(t,e){let{transform:n,...r}=e;return t!=null&&t.length?t.reduce((s,i)=>i({transform:s,...r}),n):n}function kme(t){return b.useMemo(()=>({draggable:{...g1.draggable,...t?.draggable},droppable:{...g1.droppable,...t?.droppable},dragOverlay:{...g1.dragOverlay,...t?.dragOverlay}}),[t?.draggable,t?.droppable,t?.dragOverlay])}function jme(t){let{activeNode:e,measure:n,initialRect:r,config:s=!0}=t;const i=b.useRef(!1),{x:a,y:o}=typeof s=="boolean"?{x:s,y:s}:s;fl(()=>{if(!a&&!o||!e){i.current=!1;return}if(i.current||!r)return;const h=e?.node.current;if(!h||h.isConnected===!1)return;const f=n(h),m=OF(f,r);if(a||(m.x=0),o||(m.y=0),i.current=!0,Math.abs(m.x)>0||Math.abs(m.y)>0){const g=NF(h);g&&g.scrollBy({top:m.y,left:m.x})}},[e,a,o,r,n])}const PF=b.createContext({...Aa,scaleX:1,scaleY:1});var lc;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.Initializing=1]="Initializing",t[t.Initialized=2]="Initialized"})(lc||(lc={}));const Ome=b.memo(function(e){var n,r,s,i;let{id:a,accessibility:o,autoScroll:c=!0,children:h,sensors:f=pme,collisionDetection:m=Tfe,measuring:g,modifiers:x,...y}=e;const w=b.useReducer(bme,void 0,yme),[S,k]=w,[N,C]=yfe(),[T,_]=b.useState(lc.Uninitialized),E=T===lc.Initialized,{draggable:{active:M,nodes:L,translate:P},droppable:{containers:I}}=S,Q=M!=null?L.get(M):null,U=b.useRef({initial:null,translated:null}),ee=b.useMemo(()=>{var Ot;return M!=null?{id:M,data:(Ot=Q?.data)!=null?Ot:gme,rect:U}:null},[M,Q]),z=b.useRef(null),[H,B]=b.useState(null),[X,J]=b.useState(null),G=p0(y,Object.values(y)),R=op("DndDescribedBy",a),se=b.useMemo(()=>I.getEnabled(),[I]),W=kme(g),{droppableRects:F,measureDroppableContainers:V,measuringScheduled:te}=rme(se,{dragging:E,dependencies:[P.x,P.y],config:W.droppable}),ne=tme(L,M),K=b.useMemo(()=>X?YS(X):null,[X]),ie=Nt(),re=sme(ne,W.draggable.measure);jme({activeNode:M!=null?L.get(M):null,config:ie.layoutShiftCompensation,initialRect:re,measure:W.draggable.measure});const ae=XE(ne,W.draggable.measure,re),_e=XE(ne?ne.parentElement:null),Ue=b.useRef({activatorEvent:null,active:null,activeNode:ne,collisionRect:null,collisions:null,droppableRects:F,draggableNodes:L,draggingNode:null,draggingNodeRect:null,droppableContainers:I,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),Xe=I.getNodeFor((n=Ue.current.over)==null?void 0:n.id),Ze=mme({measure:W.dragOverlay.measure}),Oe=(r=Ze.nodeRef.current)!=null?r:ne,He=E?(s=Ze.rect)!=null?s:ae:null,Ve=!!(Ze.nodeRef.current&&Ze.rect),Be=lme(Ve?null:ae),ut=DF(Oe?di(Oe):null),rt=ome(E?Xe??ne:null),rn=hme(rt),Rn=Sme(x,{transform:{x:P.x-Be.x,y:P.y-Be.y,scaleX:1,scaleY:1},activatorEvent:X,active:ee,activeNodeRect:ae,containerNodeRect:_e,draggingNodeRect:He,over:Ue.current.over,overlayNodeRect:Ze.rect,scrollableAncestors:rt,scrollableAncestorRects:rn,windowRect:ut}),Tn=K?oh(K,P):null,Mt=cme(rt),vt=KE(Mt),Ce=KE(Mt,[ae]),Le=oh(Rn,vt),Ge=He?Mfe(He,Rn):null,lt=ee&&Ge?m({active:ee,collisionRect:Ge,droppableRects:F,droppableContainers:se,pointerCoordinates:Tn}):null,jt=jF(lt,"id"),[Tt,ke]=b.useState(null),Te=Ve?Rn:oh(Rn,Ce),qe=Efe(Te,(i=Tt?.rect)!=null?i:null,ae),Rt=b.useRef(null),At=b.useCallback((Ot,it)=>{let{sensor:Vn,options:jr}=it;if(z.current==null)return;const Or=L.get(z.current);if(!Or)return;const ge=Ot.nativeEvent,ze=new Vn({active:z.current,activeNode:Or,event:ge,options:jr,context:Ue,onAbort(Gt){if(!L.get(Gt))return;const{onDragAbort:Wr}=G.current,Ar={id:Gt};Wr?.(Ar),N({type:"onDragAbort",event:Ar})},onPending(Gt,Mr,Wr,Ar){if(!L.get(Gt))return;const{onDragPending:ga}=G.current,mi={id:Gt,constraint:Mr,initialCoordinates:Wr,offset:Ar};ga?.(mi),N({type:"onDragPending",event:mi})},onStart(Gt){const Mr=z.current;if(Mr==null)return;const Wr=L.get(Mr);if(!Wr)return;const{onDragStart:Ar}=G.current,Rr={activatorEvent:ge,active:{id:Mr,data:Wr.data,rect:U}};fu.unstable_batchedUpdates(()=>{Ar?.(Rr),_(lc.Initializing),k({type:Zr.DragStart,initialCoordinates:Gt,active:Mr}),N({type:"onDragStart",event:Rr}),B(Rt.current),J(ge)})},onMove(Gt){k({type:Zr.DragMove,coordinates:Gt})},onEnd:Et(Zr.DragEnd),onCancel:Et(Zr.DragCancel)});Rt.current=ze;function Et(Gt){return async function(){const{active:Wr,collisions:Ar,over:Rr,scrollAdjustedTranslate:ga}=Ue.current;let mi=null;if(Wr&&ga){const{cancelDrop:Ba}=G.current;mi={activatorEvent:ge,active:Wr,collisions:Ar,delta:ga,over:Rr},Gt===Zr.DragEnd&&typeof Ba=="function"&&await Promise.resolve(Ba(mi))&&(Gt=Zr.DragCancel)}z.current=null,fu.unstable_batchedUpdates(()=>{k({type:Gt}),_(lc.Uninitialized),ke(null),B(null),J(null),Rt.current=null;const Ba=Gt===Zr.DragEnd?"onDragEnd":"onDragCancel";if(mi){const Hs=G.current[Ba];Hs?.(mi),N({type:Ba,event:mi})}})}}},[L]),vr=b.useCallback((Ot,it)=>(Vn,jr)=>{const Or=Vn.nativeEvent,ge=L.get(jr);if(z.current!==null||!ge||Or.dndKit||Or.defaultPrevented)return;const ze={active:ge};Ot(Vn,it.options,ze)===!0&&(Or.dndKit={capturedBy:it.sensor},z.current=jr,At(Vn,it))},[L,At]),ft=nme(f,vr);ume(f),fl(()=>{ae&&T===lc.Initializing&&_(lc.Initialized)},[ae,T]),b.useEffect(()=>{const{onDragMove:Ot}=G.current,{active:it,activatorEvent:Vn,collisions:jr,over:Or}=Ue.current;if(!it||!Vn)return;const ge={active:it,activatorEvent:Vn,collisions:jr,delta:{x:Le.x,y:Le.y},over:Or};fu.unstable_batchedUpdates(()=>{Ot?.(ge),N({type:"onDragMove",event:ge})})},[Le.x,Le.y]),b.useEffect(()=>{const{active:Ot,activatorEvent:it,collisions:Vn,droppableContainers:jr,scrollAdjustedTranslate:Or}=Ue.current;if(!Ot||z.current==null||!it||!Or)return;const{onDragOver:ge}=G.current,ze=jr.get(jt),Et=ze&&ze.rect.current?{id:ze.id,rect:ze.rect.current,data:ze.data,disabled:ze.disabled}:null,Gt={active:Ot,activatorEvent:it,collisions:Vn,delta:{x:Or.x,y:Or.y},over:Et};fu.unstable_batchedUpdates(()=>{ke(Et),ge?.(Gt),N({type:"onDragOver",event:Gt})})},[jt]),fl(()=>{Ue.current={activatorEvent:X,active:ee,activeNode:ne,collisionRect:Ge,collisions:lt,droppableRects:F,draggableNodes:L,draggingNode:Oe,draggingNodeRect:He,droppableContainers:I,over:Tt,scrollableAncestors:rt,scrollAdjustedTranslate:Le},U.current={initial:He,translated:Ge}},[ee,ne,lt,Ge,L,Oe,He,F,I,Tt,rt,Le]),Zfe({...ie,delta:P,draggingRect:Ge,pointerCoordinates:Tn,scrollableAncestors:rt,scrollableAncestorRects:rn});const mn=b.useMemo(()=>({active:ee,activeNode:ne,activeNodeRect:ae,activatorEvent:X,collisions:lt,containerNodeRect:_e,dragOverlay:Ze,draggableNodes:L,droppableContainers:I,droppableRects:F,over:Tt,measureDroppableContainers:V,scrollableAncestors:rt,scrollableAncestorRects:rn,measuringConfiguration:W,measuringScheduled:te,windowRect:ut}),[ee,ne,ae,X,lt,_e,Ze,L,I,F,Tt,V,rt,rn,W,te,ut]),gt=b.useMemo(()=>({activatorEvent:X,activators:ft,active:ee,activeNodeRect:ae,ariaDescribedById:{draggable:R},dispatch:k,draggableNodes:L,over:Tt,measureDroppableContainers:V}),[X,ft,ee,ae,k,R,L,Tt,V]);return he.createElement(wF.Provider,{value:C},he.createElement(vy.Provider,{value:gt},he.createElement(zF.Provider,{value:mn},he.createElement(PF.Provider,{value:qe},h)),he.createElement(wme,{disabled:o?.restoreFocus===!1})),he.createElement(Sfe,{...o,hiddenTextDescribedById:R}));function Nt(){const Ot=H?.autoScrollEnabled===!1,it=typeof c=="object"?c.enabled===!1:c===!1,Vn=E&&!Ot&&!it;return typeof c=="object"?{...c,enabled:Vn}:{enabled:Vn}}}),Nme=b.createContext(null),JE="button",Cme="Draggable";function Tme(t){let{id:e,data:n,disabled:r=!1,attributes:s}=t;const i=op(Cme),{activators:a,activatorEvent:o,active:c,activeNodeRect:h,ariaDescribedById:f,draggableNodes:m,over:g}=b.useContext(vy),{role:x=JE,roleDescription:y="draggable",tabIndex:w=0}=s??{},S=c?.id===e,k=b.useContext(S?PF:Nme),[N,C]=nv(),[T,_]=nv(),E=dme(a,e),M=p0(n);fl(()=>(m.set(e,{id:e,key:i,node:N,activatorNode:T,data:M}),()=>{const P=m.get(e);P&&P.key===i&&m.delete(e)}),[m,e]);const L=b.useMemo(()=>({role:x,tabIndex:w,"aria-disabled":r,"aria-pressed":S&&x===JE?!0:void 0,"aria-roledescription":y,"aria-describedby":f.draggable}),[r,x,w,S,y,f.draggable]);return{active:c,activatorEvent:o,activeNodeRect:h,attributes:L,isDragging:S,listeners:r?void 0:E,node:N,over:g,setNodeRef:C,setActivatorNodeRef:_,transform:k}}function Eme(){return b.useContext(zF)}const _me="Droppable",Mme={timeout:25};function Ame(t){let{data:e,disabled:n=!1,id:r,resizeObserverConfig:s}=t;const i=op(_me),{active:a,dispatch:o,over:c,measureDroppableContainers:h}=b.useContext(vy),f=b.useRef({disabled:n}),m=b.useRef(!1),g=b.useRef(null),x=b.useRef(null),{disabled:y,updateMeasurementsFor:w,timeout:S}={...Mme,...s},k=p0(w??r),N=b.useCallback(()=>{if(!m.current){m.current=!0;return}x.current!=null&&clearTimeout(x.current),x.current=setTimeout(()=>{h(Array.isArray(k.current)?k.current:[k.current]),x.current=null},S)},[S]),C=xy({callback:N,disabled:y||!a}),T=b.useCallback((L,P)=>{C&&(P&&(C.unobserve(P),m.current=!1),L&&C.observe(L))},[C]),[_,E]=nv(T),M=p0(e);return b.useEffect(()=>{!C||!_.current||(C.disconnect(),m.current=!1,C.observe(_.current))},[_,C]),b.useEffect(()=>(o({type:Zr.RegisterDroppable,element:{id:r,key:i,disabled:n,node:_,rect:g,data:M}}),()=>o({type:Zr.UnregisterDroppable,key:i,id:r})),[r]),b.useEffect(()=>{n!==f.current.disabled&&(o({type:Zr.SetDroppableDisabled,id:r,key:i,disabled:n}),f.current.disabled=n)},[r,i,n,o]),{active:a,rect:g,isOver:c?.id===r,node:_,over:c,setNodeRef:E}}function Oj(t,e,n){const r=t.slice();return r.splice(n<0?r.length+n:n,0,r.splice(e,1)[0]),r}function Rme(t,e){return t.reduce((n,r,s)=>{const i=e.get(r);return i&&(n[s]=i),n},Array(t.length))}function kx(t){return t!==null&&t>=0}function Dme(t,e){if(t===e)return!0;if(t.length!==e.length)return!1;for(let n=0;n{var e;let{rects:n,activeNodeRect:r,activeIndex:s,overIndex:i,index:a}=t;const o=(e=n[s])!=null?e:r;if(!o)return null;const c=Lme(n,a,s);if(a===s){const h=n[i];return h?{x:ss&&a<=i?{x:-o.width-c,y:0,...jx}:a=i?{x:o.width+c,y:0,...jx}:{x:0,y:0,...jx}};function Lme(t,e,n){const r=t[e],s=t[e-1],i=t[e+1];return!r||!s&&!i?0:n{let{rects:e,activeIndex:n,overIndex:r,index:s}=t;const i=Oj(e,r,n),a=e[s],o=i[s];return!o||!a?null:{x:o.left-a.left,y:o.top-a.top,scaleX:o.width/a.width,scaleY:o.height/a.height}},IF="Sortable",BF=he.createContext({activeIndex:-1,containerId:IF,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:LF,disabled:{draggable:!1,droppable:!1}});function Ime(t){let{children:e,id:n,items:r,strategy:s=LF,disabled:i=!1}=t;const{active:a,dragOverlay:o,droppableRects:c,over:h,measureDroppableContainers:f}=Eme(),m=op(IF,n),g=o.rect!==null,x=b.useMemo(()=>r.map(E=>typeof E=="object"&&"id"in E?E.id:E),[r]),y=a!=null,w=a?x.indexOf(a.id):-1,S=h?x.indexOf(h.id):-1,k=b.useRef(x),N=!Dme(x,k.current),C=S!==-1&&w===-1||N,T=zme(i);fl(()=>{N&&y&&f(x)},[N,x,y,f]),b.useEffect(()=>{k.current=x},[x]);const _=b.useMemo(()=>({activeIndex:w,containerId:m,disabled:T,disableTransforms:C,items:x,overIndex:S,useDragOverlay:g,sortedRects:Rme(x,c),strategy:s}),[w,m,T.draggable,T.droppable,C,x,S,c,g,s]);return he.createElement(BF.Provider,{value:_},e)}const Bme=t=>{let{id:e,items:n,activeIndex:r,overIndex:s}=t;return Oj(n,r,s).indexOf(e)},qme=t=>{let{containerId:e,isSorting:n,wasDragging:r,index:s,items:i,newIndex:a,previousItems:o,previousContainerId:c,transition:h}=t;return!h||!r||o!==i&&s===a?!1:n?!0:a!==s&&e===c},Fme={duration:200,easing:"ease"},qF="transform",$me=x0.Transition.toString({property:qF,duration:0,easing:"linear"}),Qme={roleDescription:"sortable"};function Hme(t){let{disabled:e,index:n,node:r,rect:s}=t;const[i,a]=b.useState(null),o=b.useRef(n);return fl(()=>{if(!e&&n!==o.current&&r.current){const c=s.current;if(c){const h=Yh(r.current,{ignoreTransform:!0}),f={x:c.left-h.left,y:c.top-h.top,scaleX:c.width/h.width,scaleY:c.height/h.height};(f.x||f.y)&&a(f)}}n!==o.current&&(o.current=n)},[e,n,r,s]),b.useEffect(()=>{i&&a(null)},[i]),i}function Vme(t){let{animateLayoutChanges:e=qme,attributes:n,disabled:r,data:s,getNewIndex:i=Bme,id:a,strategy:o,resizeObserverConfig:c,transition:h=Fme}=t;const{items:f,containerId:m,activeIndex:g,disabled:x,disableTransforms:y,sortedRects:w,overIndex:S,useDragOverlay:k,strategy:N}=b.useContext(BF),C=Ume(r,x),T=f.indexOf(a),_=b.useMemo(()=>({sortable:{containerId:m,index:T,items:f},...s}),[m,s,T,f]),E=b.useMemo(()=>f.slice(f.indexOf(a)),[f,a]),{rect:M,node:L,isOver:P,setNodeRef:I}=Ame({id:a,data:_,disabled:C.droppable,resizeObserverConfig:{updateMeasurementsFor:E,...c}}),{active:Q,activatorEvent:U,activeNodeRect:ee,attributes:z,setNodeRef:H,listeners:B,isDragging:X,over:J,setActivatorNodeRef:G,transform:R}=Tme({id:a,data:_,attributes:{...Qme,...n},disabled:C.draggable}),se=cfe(I,H),W=!!Q,F=W&&!y&&kx(g)&&kx(S),V=!k&&X,te=V&&F?R:null,K=F?te??(o??N)({rects:w,activeNodeRect:ee,activeIndex:g,overIndex:S,index:T}):null,ie=kx(g)&&kx(S)?i({id:a,items:f,activeIndex:g,overIndex:S}):T,re=Q?.id,ae=b.useRef({activeId:re,items:f,newIndex:ie,containerId:m}),_e=f!==ae.current.items,Ue=e({active:Q,containerId:m,isDragging:X,isSorting:W,id:a,index:T,items:f,newIndex:ae.current.newIndex,previousItems:ae.current.items,previousContainerId:ae.current.containerId,transition:h,wasDragging:ae.current.activeId!=null}),Xe=Hme({disabled:!Ue,index:T,node:L,rect:M});return b.useEffect(()=>{W&&ae.current.newIndex!==ie&&(ae.current.newIndex=ie),m!==ae.current.containerId&&(ae.current.containerId=m),f!==ae.current.items&&(ae.current.items=f)},[W,ie,m,f]),b.useEffect(()=>{if(re===ae.current.activeId)return;if(re!=null&&ae.current.activeId==null){ae.current.activeId=re;return}const Oe=setTimeout(()=>{ae.current.activeId=re},50);return()=>clearTimeout(Oe)},[re]),{active:Q,activeIndex:g,attributes:z,data:_,rect:M,index:T,newIndex:ie,items:f,isOver:P,isSorting:W,isDragging:X,listeners:B,node:L,overIndex:S,over:J,setNodeRef:se,setActivatorNodeRef:G,setDroppableNodeRef:I,setDraggableNodeRef:H,transform:Xe??K,transition:Ze()};function Ze(){if(Xe||_e&&ae.current.newIndex===T)return $me;if(!(V&&!bj(U)||!h)&&(W||Ue))return x0.Transition.toString({...h,property:qF})}}function Ume(t,e){var n,r;return typeof t=="boolean"?{draggable:t,droppable:!1}:{draggable:(n=t?.draggable)!=null?n:e.draggable,droppable:(r=t?.droppable)!=null?r:e.droppable}}function iv(t){if(!t)return!1;const e=t.data.current;return!!(e&&"sortable"in e&&typeof e.sortable=="object"&&"containerId"in e.sortable&&"items"in e.sortable&&"index"in e.sortable)}const Wme=[un.Down,un.Right,un.Up,un.Left],Gme=(t,e)=>{let{context:{active:n,collisionRect:r,droppableRects:s,droppableContainers:i,over:a,scrollableAncestors:o}}=e;if(Wme.includes(t.code)){if(t.preventDefault(),!n||!r)return;const c=[];i.getEnabled().forEach(m=>{if(!m||m!=null&&m.disabled)return;const g=s.get(m.id);if(g)switch(t.code){case un.Down:r.topg.top&&c.push(m);break;case un.Left:r.left>g.left&&c.push(m);break;case un.Right:r.left1&&(f=h[1].id),f!=null){const m=i.get(n.id),g=i.get(f),x=g?s.get(g.id):null,y=g?.node.current;if(y&&x&&m&&g){const S=gy(y).some((E,M)=>o[M]!==E),k=FF(m,g),N=Xme(m,g),C=S||!k?{x:0,y:0}:{x:N?r.width-x.width:0,y:N?r.height-x.height:0},T={x:x.left,y:x.top};return C.x&&C.y?T:g0(T,C)}}}};function FF(t,e){return!iv(t)||!iv(e)?!1:t.data.current.sortable.containerId===e.data.current.sortable.containerId}function Xme(t,e){return!iv(t)||!iv(e)||!FF(t,e)?!1:t.data.current.sortable.index{f.stopPropagation(),n(t)}})]})})}function Kme({options:t,selected:e,onChange:n,placeholder:r="选择选项...",emptyText:s="未找到选项",className:i}){const[a,o]=b.useState(!1),c=kfe(FE(jj,{activationConstraint:{distance:8}}),FE(Sj,{coordinateGetter:Gme})),h=g=>{e.includes(g)?n(e.filter(x=>x!==g)):n([...e,g])},f=g=>{n(e.filter(x=>x!==g))},m=g=>{const{active:x,over:y}=g;if(y&&x.id!==y.id){const w=e.indexOf(x.id),S=e.indexOf(y.id);n(Oj(e,w,S))}};return l.jsxs(ul,{open:a,onOpenChange:o,children:[l.jsx(dl,{asChild:!0,children:l.jsxs(de,{variant:"outline",role:"combobox","aria-expanded":a,className:ve("w-full justify-between min-h-10 h-auto",i),children:[l.jsx(Ome,{sensors:c,collisionDetection:Ofe,onDragEnd:m,children:l.jsx(Ime,{items:e,strategy:Pme,children:l.jsx("div",{className:"flex gap-1 flex-wrap flex-1",children:e.length===0?l.jsx("span",{className:"text-muted-foreground",children:r}):e.map(g=>{const x=t.find(y=>y.value===g);return l.jsx(Yme,{value:g,label:x?.label||g,onRemove:f},g)})})})}),l.jsx(l6,{className:"ml-2 h-4 w-4 shrink-0 opacity-50",strokeWidth:2,fill:"none"})]})}),l.jsx(Ea,{className:"w-full p-0",align:"start",children:l.jsxs(dy,{children:[l.jsx(hy,{placeholder:"搜索...",className:"h-9"}),l.jsxs(fy,{children:[l.jsx(my,{children:s}),l.jsx(f0,{children:t.map(g=>{const x=e.includes(g.value);return l.jsxs(m0,{value:g.value,onSelect:()=>h(g.value),children:[l.jsx("div",{className:ve("mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary",x?"bg-primary text-primary-foreground":"opacity-50 [&_svg]:invisible"),children:l.jsx(ol,{className:"h-3 w-3",strokeWidth:2,fill:"none"})}),l.jsx("span",{children:g.label})]},g.value)})})]})]})})]})}const e_=new Map,Zme=300*1e3;function Jme(){const[t,e]=b.useState([]),[n,r]=b.useState([]),[s,i]=b.useState([]),[a,o]=b.useState([]),[c,h]=b.useState(null),[f,m]=b.useState(!0),[g,x]=b.useState(!1),[y,w]=b.useState(!1),[S,k]=b.useState(!1),[N,C]=b.useState(!1),[T,_]=b.useState(!1),[E,M]=b.useState(!1),[L,P]=b.useState(null),[I,Q]=b.useState(null),[U,ee]=b.useState(!1),[z,H]=b.useState(null),[B,X]=b.useState(""),[J,G]=b.useState(new Set),[R,se]=b.useState(!1),[W,F]=b.useState(1),[V,te]=b.useState(20),[ne,K]=b.useState(""),[ie,re]=b.useState([]),[ae,_e]=b.useState(!1),[Ue,Xe]=b.useState(null),[Ze,Oe]=b.useState(!1),[He,Ve]=b.useState(null),{toast:Be}=ts(),ut=b.useRef(null),rt=b.useRef(null),rn=b.useRef(!0);b.useEffect(()=>{Rn()},[]);const Rn=async()=>{try{m(!0);const ge=await th(),ze=ge.models||[];e(ze),o(ze.map(Gt=>Gt.name));const Et=ge.api_providers||[];r(Et.map(Gt=>Gt.name)),i(Et),h(ge.model_task_config||null),k(!1),rn.current=!1}catch(ge){console.error("加载配置失败:",ge)}finally{m(!1)}},Tn=b.useCallback(ge=>s.find(ze=>ze.name===ge),[s]),Mt=b.useCallback(async(ge,ze=!1)=>{const Et=Tn(ge);if(!Et?.base_url){re([]),Ve(null),Xe('提供商配置不完整,请先在"模型提供商配置"中配置');return}if(!Et.api_key){re([]),Ve(null),Xe('该提供商未配置 API Key,请先在"模型提供商配置"中填写');return}const Gt=lfe(Et.base_url);if(Ve(Gt),!Gt?.modelFetcher){re([]),Xe(null);return}const Mr=`${ge}:${Et.base_url}`,Wr=e_.get(Mr);if(!ze&&Wr&&Date.now()-Wr.timestamp{E&&L?.api_provider&&Mt(L.api_provider)},[E,L?.api_provider,Mt]);const vt=async()=>{try{C(!0),Uv().catch(()=>{}),_(!0)}catch(ge){console.error("重启失败:",ge),_(!1),Be({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),C(!1)}},Ce=async()=>{try{x(!0),ut.current&&clearTimeout(ut.current),rt.current&&clearTimeout(rt.current);const ge=await th();ge.models=t,ge.model_task_config=c,await R1(ge),k(!1),Be({title:"保存成功",description:"正在重启麦麦..."}),await vt()}catch(ge){console.error("保存配置失败:",ge),Be({title:"保存失败",description:ge.message,variant:"destructive"}),x(!1)}},Le=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},Ge=()=>{_(!1),C(!1),Be({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},lt=b.useCallback(async ge=>{if(!rn.current)try{w(!0),await X3("models",ge),k(!1)}catch(ze){console.error("自动保存模型列表失败:",ze),k(!0)}finally{w(!1)}},[]),jt=b.useCallback(async ge=>{if(!rn.current)try{w(!0),await X3("model_task_config",ge),k(!1)}catch(ze){console.error("自动保存任务配置失败:",ze),k(!0)}finally{w(!1)}},[]);b.useEffect(()=>{if(!rn.current)return k(!0),ut.current&&clearTimeout(ut.current),ut.current=setTimeout(()=>{lt(t)},2e3),()=>{ut.current&&clearTimeout(ut.current)}},[t,lt]),b.useEffect(()=>{if(!(rn.current||!c))return k(!0),rt.current&&clearTimeout(rt.current),rt.current=setTimeout(()=>{jt(c)},2e3),()=>{rt.current&&clearTimeout(rt.current)}},[c,jt]);const Tt=async()=>{try{x(!0),ut.current&&clearTimeout(ut.current),rt.current&&clearTimeout(rt.current);const ge=await th();ge.models=t,ge.model_task_config=c,await R1(ge),k(!1),Be({title:"保存成功",description:"模型配置已保存"}),await Rn()}catch(ge){console.error("保存配置失败:",ge),Be({title:"保存失败",description:ge.message,variant:"destructive"})}finally{x(!1)}},ke=(ge,ze)=>{P(ge||{model_identifier:"",name:"",api_provider:n[0]||"",price_in:0,price_out:0,force_stream_mode:!1,extra_params:{}}),Q(ze),M(!0)},Te=()=>{if(!L)return;const ge={...L,price_in:L.price_in??0,price_out:L.price_out??0};let ze;I!==null?(ze=[...t],ze[I]=ge):ze=[...t,ge],e(ze),o(ze.map(Et=>Et.name)),M(!1),P(null),Q(null)},qe=ge=>{if(!ge&&L){const ze={...L,price_in:L.price_in??0,price_out:L.price_out??0};P(ze)}M(ge)},Rt=ge=>{H(ge),ee(!0)},At=()=>{if(z!==null){const ge=t.filter((ze,Et)=>Et!==z);e(ge),o(ge.map(ze=>ze.name)),Be({title:"删除成功",description:"模型已从列表中移除"})}ee(!1),H(null)},vr=ge=>{const ze=new Set(J);ze.has(ge)?ze.delete(ge):ze.add(ge),G(ze)},ft=()=>{if(J.size===Ot.length)G(new Set);else{const ge=Ot.map((ze,Et)=>t.findIndex(Gt=>Gt===Ot[Et]));G(new Set(ge))}},mn=()=>{if(J.size===0){Be({title:"提示",description:"请先选择要删除的模型",variant:"default"});return}se(!0)},gt=()=>{const ge=t.filter((ze,Et)=>!J.has(Et));e(ge),o(ge.map(ze=>ze.name)),G(new Set),se(!1),Be({title:"批量删除成功",description:`已删除 ${J.size} 个模型`})},Nt=(ge,ze,Et)=>{c&&h({...c,[ge]:{...c[ge],[ze]:Et}})},Ot=t.filter(ge=>{if(!B)return!0;const ze=B.toLowerCase();return ge.name.toLowerCase().includes(ze)||ge.model_identifier.toLowerCase().includes(ze)||ge.api_provider.toLowerCase().includes(ze)}),it=Math.ceil(Ot.length/V),Vn=Ot.slice((W-1)*V,W*V),jr=()=>{const ge=parseInt(ne);ge>=1&&ge<=it&&(F(ge),K(""))},Or=ge=>c?[c.utils?.model_list||[],c.utils_small?.model_list||[],c.tool_use?.model_list||[],c.replyer?.model_list||[],c.planner?.model_list||[],c.vlm?.model_list||[],c.voice?.model_list||[],c.embedding?.model_list||[],c.lpmm_entity_extract?.model_list||[],c.lpmm_rdf_build?.model_list||[],c.lpmm_qa?.model_list||[]].some(Et=>Et.includes(ge)):!1;return f?l.jsx(hn,{className:"h-full",children:l.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:l.jsx("div",{className:"flex items-center justify-center h-64",children:l.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):l.jsx(hn,{className:"h-full",children:l.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[l.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[l.jsxs("div",{children:[l.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"模型管理与分配"}),l.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"添加模型并为模型分配功能"})]}),l.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[l.jsxs(de,{onClick:Tt,disabled:g||y||!S||N,size:"sm",variant:"outline",className:"flex-1 sm:flex-none",children:[l.jsx(zv,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),g?"保存中...":y?"自动保存中...":S?"保存配置":"已保存"]}),l.jsxs(Nn,{children:[l.jsx(Qr,{asChild:!0,children:l.jsxs(de,{disabled:g||y||N,size:"sm",className:"flex-1 sm:flex-none",children:[l.jsx(a6,{className:"mr-2 h-4 w-4"}),N?"重启中...":S?"保存并重启":"重启麦麦"]})}),l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认重启麦麦?"}),l.jsx(bn,{className:"space-y-3",asChild:!0,children:l.jsxs("div",{children:[l.jsx("p",{children:S?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),l.jsxs(Na,{className:"border-yellow-500/50 bg-yellow-500/10",children:[l.jsx(ra,{className:"h-4 w-4 text-yellow-600"}),l.jsxs(Ca,{className:"text-yellow-900 dark:text-yellow-100",children:[l.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",l.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",l.jsxs(xr,{children:[l.jsx(Bh,{asChild:!0,children:l.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[l.jsx(Dv,{className:"h-3 w-3"}),"如何结束程序?"]})}),l.jsxs(lr,{className:"max-w-2xl",children:[l.jsxs(or,{children:[l.jsx(cr,{children:"如何结束使用重启功能后的麦麦程序"}),l.jsx(Hr,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),l.jsxs(sa,{defaultValue:"windows",className:"w-full",children:[l.jsxs(Mi,{className:"grid w-full grid-cols-3",children:[l.jsx(zt,{value:"windows",children:"Windows"}),l.jsx(zt,{value:"macos",children:"macOS"}),l.jsx(zt,{value:"linux",children:"Linux"})]}),l.jsxs(tn,{value:"windows",className:"space-y-4 mt-4",children:[l.jsxs("div",{className:"space-y-2",children:[l.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),l.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[l.jsxs("li",{children:["按 ",l.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),l.jsxs("li",{children:['在"进程"或"详细信息"标签页中找到 ',l.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),l.jsx("li",{children:'右键点击并选择"结束任务"'})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),l.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[l.jsx("p",{children:"# 查找麦麦进程"}),l.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),l.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),l.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),l.jsxs(tn,{value:"macos",className:"space-y-4 mt-4",children:[l.jsxs("div",{className:"space-y-2",children:[l.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),l.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[l.jsxs("li",{children:["按 ",l.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"}),' 打开 Spotlight,搜索"活动监视器"']}),l.jsxs("li",{children:["在进程列表中找到 ",l.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),l.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),l.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[l.jsx("p",{children:"# 查找麦麦进程"}),l.jsx("p",{children:"ps aux | grep python | grep -v grep"}),l.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),l.jsx("p",{children:"kill -9 "}),l.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),l.jsx("p",{children:"pkill -9 python"})]})]})]}),l.jsxs(tn,{value:"linux",className:"space-y-4 mt-4",children:[l.jsxs("div",{className:"space-y-2",children:[l.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),l.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[l.jsx("p",{children:"# 查找麦麦进程"}),l.jsx("p",{children:"ps aux | grep python | grep -v grep"}),l.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),l.jsx("p",{children:"kill -9 "}),l.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),l.jsx("p",{children:'pkill -9 -f "bot.py"'}),l.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),l.jsx("p",{children:"pkill -9 python"})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),l.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[l.jsxs("li",{children:["在终端输入 ",l.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),l.jsxs("li",{children:["按 ",l.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),l.jsxs("li",{children:["按 ",l.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),l.jsx(as,{children:l.jsx(k6,{asChild:!0,children:l.jsx(de,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:S?Ce:vt,children:S?"保存并重启":"确认重启"})]})]})]})]})]}),l.jsxs(Na,{children:[l.jsx(ra,{className:"h-4 w-4"}),l.jsxs(Ca,{children:["配置更新后需要",l.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),l.jsxs(sa,{defaultValue:"models",className:"w-full",children:[l.jsxs(Mi,{className:"grid w-full max-w-full sm:max-w-md grid-cols-2",children:[l.jsx(zt,{value:"models",children:"添加模型"}),l.jsx(zt,{value:"tasks",children:"为模型分配功能"})]}),l.jsxs(tn,{value:"models",className:"space-y-4 mt-0",children:[l.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-2",children:[l.jsx("p",{className:"text-sm text-muted-foreground",children:"配置可用的模型列表"}),l.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[J.size>0&&l.jsxs(de,{onClick:mn,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[l.jsx(fn,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",J.size,")"]}),l.jsxs(de,{onClick:()=>ke(null,null),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[l.jsx(ws,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加模型"]})]})]}),l.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2",children:[l.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[l.jsx(ci,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),l.jsx(Pe,{placeholder:"搜索模型名称、标识符或提供商...",value:B,onChange:ge=>X(ge.target.value),className:"pl-9"})]}),B&&l.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",Ot.length," 个结果"]})]}),l.jsx("div",{className:"md:hidden space-y-3",children:Vn.length===0?l.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:B?"未找到匹配的模型":"暂无模型配置"}):Vn.map((ge,ze)=>{const Et=t.findIndex(Mr=>Mr===ge),Gt=Or(ge.name);return l.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[l.jsxs("div",{className:"flex items-start justify-between gap-2",children:[l.jsxs("div",{className:"flex-1 min-w-0",children:[l.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[l.jsx("h3",{className:"font-semibold text-base",children:ge.name}),l.jsx(In,{variant:Gt?"default":"secondary",className:Gt?"bg-green-600 hover:bg-green-700":"",children:Gt?"已使用":"未使用"})]}),l.jsx("p",{className:"text-xs text-muted-foreground break-all",title:ge.model_identifier,children:ge.model_identifier})]}),l.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[l.jsxs(de,{variant:"default",size:"sm",onClick:()=>ke(ge,Et),children:[l.jsx(wu,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),l.jsxs(de,{size:"sm",onClick:()=>Rt(Et),className:"bg-red-600 hover:bg-red-700 text-white",children:[l.jsx(fn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})]}),l.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[l.jsxs("div",{children:[l.jsx("span",{className:"text-muted-foreground text-xs",children:"提供商"}),l.jsx("p",{className:"font-medium",children:ge.api_provider})]}),l.jsxs("div",{children:[l.jsx("span",{className:"text-muted-foreground text-xs",children:"强制流式"}),l.jsx("p",{className:"font-medium",children:ge.force_stream_mode?"是":"否"})]}),l.jsxs("div",{children:[l.jsx("span",{className:"text-muted-foreground text-xs",children:"输入价格"}),l.jsxs("p",{className:"font-medium",children:["¥",ge.price_in,"/M"]})]}),l.jsxs("div",{children:[l.jsx("span",{className:"text-muted-foreground text-xs",children:"输出价格"}),l.jsxs("p",{className:"font-medium",children:["¥",ge.price_out,"/M"]})]})]})]},ze)})}),l.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:l.jsx("div",{className:"overflow-x-auto",children:l.jsxs(Vh,{children:[l.jsx(Uh,{children:l.jsxs(bs,{children:[l.jsx(ln,{className:"w-12",children:l.jsx(li,{checked:J.size===Ot.length&&Ot.length>0,onCheckedChange:ft})}),l.jsx(ln,{className:"w-24",children:"使用状态"}),l.jsx(ln,{children:"模型名称"}),l.jsx(ln,{children:"模型标识符"}),l.jsx(ln,{children:"提供商"}),l.jsx(ln,{className:"text-right",children:"输入价格"}),l.jsx(ln,{className:"text-right",children:"输出价格"}),l.jsx(ln,{className:"text-center",children:"强制流式"}),l.jsx(ln,{className:"text-right",children:"操作"})]})}),l.jsx(Wh,{children:Vn.length===0?l.jsx(bs,{children:l.jsx(Qt,{colSpan:9,className:"text-center text-muted-foreground py-8",children:B?"未找到匹配的模型":"暂无模型配置"})}):Vn.map((ge,ze)=>{const Et=t.findIndex(Mr=>Mr===ge),Gt=Or(ge.name);return l.jsxs(bs,{children:[l.jsx(Qt,{children:l.jsx(li,{checked:J.has(Et),onCheckedChange:()=>vr(Et)})}),l.jsx(Qt,{children:l.jsx(In,{variant:Gt?"default":"secondary",className:Gt?"bg-green-600 hover:bg-green-700":"",children:Gt?"已使用":"未使用"})}),l.jsx(Qt,{className:"font-medium",children:ge.name}),l.jsx(Qt,{className:"max-w-xs truncate",title:ge.model_identifier,children:ge.model_identifier}),l.jsx(Qt,{children:ge.api_provider}),l.jsxs(Qt,{className:"text-right",children:["¥",ge.price_in,"/M"]}),l.jsxs(Qt,{className:"text-right",children:["¥",ge.price_out,"/M"]}),l.jsx(Qt,{className:"text-center",children:ge.force_stream_mode?"是":"否"}),l.jsx(Qt,{className:"text-right",children:l.jsxs("div",{className:"flex justify-end gap-2",children:[l.jsxs(de,{variant:"default",size:"sm",onClick:()=>ke(ge,Et),children:[l.jsx(wu,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),l.jsxs(de,{size:"sm",onClick:()=>Rt(Et),className:"bg-red-600 hover:bg-red-700 text-white",children:[l.jsx(fn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},ze)})})]})})}),Ot.length>0&&l.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx(ue,{htmlFor:"page-size-model",className:"text-sm whitespace-nowrap",children:"每页显示"}),l.jsxs(qt,{value:V.toString(),onValueChange:ge=>{te(parseInt(ge)),F(1),G(new Set)},children:[l.jsx(It,{id:"page-size-model",className:"w-20",children:l.jsx(Ft,{})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"10",children:"10"}),l.jsx(De,{value:"20",children:"20"}),l.jsx(De,{value:"50",children:"50"}),l.jsx(De,{value:"100",children:"100"})]})]}),l.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(W-1)*V+1," 到"," ",Math.min(W*V,Ot.length)," 条,共 ",Ot.length," 条"]})]}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx(de,{variant:"outline",size:"sm",onClick:()=>F(1),disabled:W===1,className:"hidden sm:flex",children:l.jsx(L0,{className:"h-4 w-4"})}),l.jsxs(de,{variant:"outline",size:"sm",onClick:()=>F(ge=>Math.max(1,ge-1)),disabled:W===1,children:[l.jsx($u,{className:"h-4 w-4 sm:mr-1"}),l.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx(Pe,{type:"number",value:ne,onChange:ge=>K(ge.target.value),onKeyDown:ge=>ge.key==="Enter"&&jr(),placeholder:W.toString(),className:"w-16 h-8 text-center",min:1,max:it}),l.jsx(de,{variant:"outline",size:"sm",onClick:jr,disabled:!ne,className:"h-8",children:"跳转"})]}),l.jsxs(de,{variant:"outline",size:"sm",onClick:()=>F(ge=>ge+1),disabled:W>=it,children:[l.jsx("span",{className:"hidden sm:inline",children:"下一页"}),l.jsx(Qu,{className:"h-4 w-4 sm:ml-1"})]}),l.jsx(de,{variant:"outline",size:"sm",onClick:()=>F(it),disabled:W>=it,className:"hidden sm:flex",children:l.jsx(I0,{className:"h-4 w-4"})})]})]})]}),l.jsxs(tn,{value:"tasks",className:"space-y-6 mt-0",children:[l.jsx("p",{className:"text-sm text-muted-foreground",children:"为不同的任务配置使用的模型和参数"}),c&&l.jsxs("div",{className:"grid gap-4 sm:gap-6",children:[l.jsx(ba,{title:"组件模型 (utils)",description:"用于表情包、取名、关系、情绪变化等组件",taskConfig:c.utils,modelNames:a,onChange:(ge,ze)=>Nt("utils",ge,ze)}),l.jsx(ba,{title:"组件小模型 (utils_small)",description:"消耗量较大的组件,建议使用速度较快的小模型",taskConfig:c.utils_small,modelNames:a,onChange:(ge,ze)=>Nt("utils_small",ge,ze)}),l.jsx(ba,{title:"工具调用模型 (tool_use)",description:"需要使用支持工具调用的模型",taskConfig:c.tool_use,modelNames:a,onChange:(ge,ze)=>Nt("tool_use",ge,ze)}),l.jsx(ba,{title:"首要回复模型 (replyer)",description:"用于表达器和表达方式学习",taskConfig:c.replyer,modelNames:a,onChange:(ge,ze)=>Nt("replyer",ge,ze)}),l.jsx(ba,{title:"决策模型 (planner)",description:"负责决定麦麦该什么时候回复",taskConfig:c.planner,modelNames:a,onChange:(ge,ze)=>Nt("planner",ge,ze)}),l.jsx(ba,{title:"图像识别模型 (vlm)",description:"视觉语言模型",taskConfig:c.vlm,modelNames:a,onChange:(ge,ze)=>Nt("vlm",ge,ze),hideTemperature:!0}),l.jsx(ba,{title:"语音识别模型 (voice)",description:"语音转文字",taskConfig:c.voice,modelNames:a,onChange:(ge,ze)=>Nt("voice",ge,ze),hideTemperature:!0,hideMaxTokens:!0}),l.jsx(ba,{title:"嵌入模型 (embedding)",description:"用于向量化",taskConfig:c.embedding,modelNames:a,onChange:(ge,ze)=>Nt("embedding",ge,ze),hideTemperature:!0,hideMaxTokens:!0}),l.jsxs("div",{className:"space-y-4",children:[l.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库模型"}),l.jsx(ba,{title:"实体提取模型 (lpmm_entity_extract)",description:"从文本中提取实体",taskConfig:c.lpmm_entity_extract,modelNames:a,onChange:(ge,ze)=>Nt("lpmm_entity_extract",ge,ze)}),l.jsx(ba,{title:"RDF 构建模型 (lpmm_rdf_build)",description:"构建知识图谱",taskConfig:c.lpmm_rdf_build,modelNames:a,onChange:(ge,ze)=>Nt("lpmm_rdf_build",ge,ze)}),l.jsx(ba,{title:"问答模型 (lpmm_qa)",description:"知识库问答",taskConfig:c.lpmm_qa,modelNames:a,onChange:(ge,ze)=>Nt("lpmm_qa",ge,ze)})]})]})]})]}),l.jsx(xr,{open:E,onOpenChange:qe,children:l.jsxs(lr,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto",children:[l.jsxs(or,{children:[l.jsx(cr,{children:I!==null?"编辑模型":"添加模型"}),l.jsx(Hr,{children:"配置模型的基本信息和参数"})]}),l.jsxs("div",{className:"grid gap-4 py-4",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"model_name",children:"模型名称 *"}),l.jsx(Pe,{id:"model_name",value:L?.name||"",onChange:ge=>P(ze=>ze?{...ze,name:ge.target.value}:null),placeholder:"例如: qwen3-30b"}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"用于在任务配置中引用此模型"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"api_provider",children:"API 提供商 *"}),l.jsxs(qt,{value:L?.api_provider||"",onValueChange:ge=>{P(ze=>ze?{...ze,api_provider:ge}:null),re([]),Xe(null)},children:[l.jsx(It,{id:"api_provider",children:l.jsx(Ft,{placeholder:"选择提供商"})}),l.jsx(Bt,{children:n.map(ge=>l.jsx(De,{value:ge,children:ge},ge))})]})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsx(ue,{htmlFor:"model_identifier",children:"模型标识符 *"}),He?.modelFetcher&&l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx(In,{variant:"secondary",className:"text-xs",children:He.display_name}),l.jsx(de,{variant:"ghost",size:"sm",className:"h-6 px-2",onClick:()=>L?.api_provider&&Mt(L.api_provider,!0),disabled:ae,children:ae?l.jsx(vc,{className:"h-3 w-3 animate-spin"}):l.jsx(Ls,{className:"h-3 w-3"})})]})]}),He?.modelFetcher?l.jsxs(ul,{open:Ze,onOpenChange:Oe,children:[l.jsx(dl,{asChild:!0,children:l.jsxs(de,{variant:"outline",role:"combobox","aria-expanded":Ze,className:"w-full justify-between font-normal",disabled:ae||!!Ue,children:[ae?l.jsxs("span",{className:"flex items-center gap-2 text-muted-foreground",children:[l.jsx(vc,{className:"h-4 w-4 animate-spin"}),"正在获取模型列表..."]}):Ue?l.jsx("span",{className:"text-muted-foreground text-sm",children:"点击下方输入框手动填写"}):L?.model_identifier?l.jsx("span",{className:"truncate",children:L.model_identifier}):l.jsx("span",{className:"text-muted-foreground",children:"搜索或选择模型..."}),l.jsx(l6,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),l.jsx(Ea,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:l.jsxs(dy,{children:[l.jsx(hy,{placeholder:"搜索模型..."}),l.jsx(hn,{className:"h-[300px]",children:l.jsxs(fy,{className:"max-h-none overflow-visible",children:[l.jsx(my,{children:Ue?l.jsxs("div",{className:"py-4 px-2 text-center space-y-2",children:[l.jsx("p",{className:"text-sm text-destructive",children:Ue}),!Ue.includes("API Key")&&l.jsx(de,{variant:"link",size:"sm",onClick:()=>L?.api_provider&&Mt(L.api_provider,!0),children:"重试"})]}):"未找到匹配的模型"}),l.jsx(f0,{heading:"可用模型",children:ie.map(ge=>l.jsxs(m0,{value:ge.id,onSelect:()=>{P(ze=>ze?{...ze,model_identifier:ge.id}:null),Oe(!1)},children:[l.jsx(ol,{className:`mr-2 h-4 w-4 ${L?.model_identifier===ge.id?"opacity-100":"opacity-0"}`}),l.jsxs("div",{className:"flex flex-col",children:[l.jsx("span",{children:ge.id}),ge.name!==ge.id&&l.jsx("span",{className:"text-xs text-muted-foreground",children:ge.name})]})]},ge.id))}),l.jsx(f0,{heading:"手动输入",children:l.jsxs(m0,{value:"__manual_input__",onSelect:()=>{Oe(!1)},children:[l.jsx(wu,{className:"mr-2 h-4 w-4"}),"手动输入模型标识符..."]})})]})})]})})]}):l.jsx(Pe,{id:"model_identifier",value:L?.model_identifier||"",onChange:ge=>P(ze=>ze?{...ze,model_identifier:ge.target.value}:null),placeholder:"Qwen/Qwen3-30B-A3B-Instruct-2507"}),Ue&&He?.modelFetcher&&l.jsxs(Na,{variant:"destructive",className:"mt-2 py-2",children:[l.jsx(ra,{className:"h-4 w-4"}),l.jsx(Ca,{className:"text-xs",children:Ue})]}),He?.modelFetcher&&l.jsx(Pe,{value:L?.model_identifier||"",onChange:ge=>P(ze=>ze?{...ze,model_identifier:ge.target.value}:null),placeholder:"或手动输入模型标识符",className:"mt-2"}),l.jsx("p",{className:"text-xs text-muted-foreground",children:Ue?'请手动输入模型标识符,或前往"模型提供商配置"检查 API Key':He?.modelFetcher?`已识别为 ${He.display_name},支持自动获取模型列表`:"API 提供商提供的模型 ID"})]}),l.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"price_in",children:"输入价格 (¥/M token)"}),l.jsx(Pe,{id:"price_in",type:"number",step:"0.1",min:"0",value:L?.price_in??"",onChange:ge=>{const ze=ge.target.value===""?null:parseFloat(ge.target.value);P(Et=>Et?{...Et,price_in:ze}:null)},placeholder:"默认: 0"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"price_out",children:"输出价格 (¥/M token)"}),l.jsx(Pe,{id:"price_out",type:"number",step:"0.1",min:"0",value:L?.price_out??"",onChange:ge=>{const ze=ge.target.value===""?null:parseFloat(ge.target.value);P(Et=>Et?{...Et,price_out:ze}:null)},placeholder:"默认: 0"})]})]}),l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx(Pt,{id:"force_stream_mode",checked:L?.force_stream_mode||!1,onCheckedChange:ge=>P(ze=>ze?{...ze,force_stream_mode:ge}:null)}),l.jsx(ue,{htmlFor:"force_stream_mode",className:"cursor-pointer",children:"强制流式输出模式"})]})]}),l.jsxs(as,{children:[l.jsx(de,{variant:"outline",onClick:()=>M(!1),children:"取消"}),l.jsx(de,{onClick:Te,children:"保存"})]})]})}),l.jsx(Nn,{open:U,onOpenChange:ee,children:l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认删除"}),l.jsxs(bn,{children:['确定要删除模型 "',z!==null?t[z]?.name:"",'" 吗? 此操作无法撤销。']})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:At,children:"删除"})]})]})}),l.jsx(Nn,{open:R,onOpenChange:se,children:l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认批量删除"}),l.jsxs(bn,{children:["确定要删除选中的 ",J.size," 个模型吗? 此操作无法撤销。"]})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:gt,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),T&&l.jsx(N6,{onRestartComplete:Le,onRestartFailed:Ge})]})})}function ba({title:t,description:e,taskConfig:n,modelNames:r,onChange:s,hideTemperature:i=!1,hideMaxTokens:a=!1}){const o=c=>{s("model_list",c)};return l.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[l.jsxs("div",{children:[l.jsx("h4",{className:"font-semibold text-base sm:text-lg",children:t}),l.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:e})]}),l.jsxs("div",{className:"grid gap-4",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{children:"模型列表"}),l.jsx(Kme,{options:r.map(c=>({label:c,value:c})),selected:n.model_list||[],onChange:o,placeholder:"选择模型...",emptyText:"暂无可用模型"})]}),l.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[!i&&l.jsxs("div",{className:"grid gap-3",children:[l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsx(ue,{children:"温度"}),l.jsx(Pe,{type:"number",step:"0.1",min:"0",max:"1",value:n.temperature??.3,onChange:c=>{const h=parseFloat(c.target.value);!isNaN(h)&&h>=0&&h<=1&&s("temperature",h)},className:"w-20 h-8 text-sm"})]}),l.jsx(V0,{value:[n.temperature??.3],onValueChange:c=>s("temperature",c[0]),min:0,max:1,step:.1,className:"w-full"})]}),!a&&l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{children:"最大 Token"}),l.jsx(Pe,{type:"number",step:"1",min:"1",value:n.max_tokens??1024,onChange:c=>s("max_tokens",parseInt(c.target.value))})]})]})]})]})}const yy="/api/webui/config";async function e0e(){const e=await(await pt(`${yy}/adapter-config/path`)).json();return!e.success||!e.path?null:{path:e.path,lastModified:e.lastModified}}async function t_(t){const n=await(await pt(`${yy}/adapter-config/path`,{method:"POST",headers:Ct(),body:JSON.stringify({path:t})})).json();if(!n.success)throw new Error(n.message||"保存路径失败")}async function n_(t){const n=await(await pt(`${yy}/adapter-config?path=${encodeURIComponent(t)}`)).json();if(!n.success)throw new Error("读取配置文件失败");return n.content}async function r_(t,e){const r=await(await pt(`${yy}/adapter-config`,{method:"POST",headers:Ct(),body:JSON.stringify({path:t,content:e})})).json();if(!r.success)throw new Error(r.message||"保存配置失败")}const ji={inner:{version:"0.1.2"},nickname:{nickname:""},napcat_server:{host:"localhost",port:8095,token:"",heartbeat_interval:30},maibot_server:{host:"localhost",port:8e3},chat:{group_list_type:"whitelist",group_list:[],private_list_type:"whitelist",private_list:[],ban_user_id:[],ban_qq_bot:!1,enable_poke:!0},voice:{use_tts:!1},debug:{level:"INFO"}},i4={oneclick:{name:"一键包",description:"使用一键包部署的适配器配置",path:"../MaiBot-Napcat-Adapter/config.toml",icon:mh},docker:{name:"Docker",description:"Docker Compose 部署的适配器配置",path:"./docker-config/adapters/config.toml",icon:$K}};function t0e(){const[t,e]=b.useState("upload"),[n,r]=b.useState(null),[s,i]=b.useState(""),[a,o]=b.useState(""),[c,h]=b.useState("oneclick"),[f,m]=b.useState(""),[g,x]=b.useState(!1),[y,w]=b.useState(!1),[S,k]=b.useState(!1),[N,C]=b.useState(!1),[T,_]=b.useState(null),E=b.useRef(null),{toast:M}=ts(),L=b.useRef(null),P=K=>{if(!K.trim())return{valid:!1,error:"路径不能为空"};if(!K.toLowerCase().endsWith(".toml"))return{valid:!1,error:"文件必须是 .toml 格式"};const ie=/^([a-zA-Z]:\\|\\\\[^\\]+\\[^\\]+\\).+\.toml$/i,re=/^(\/|~\/).+\.toml$/i,ae=/^(\.{1,2}[\\/]|[^:\\/]).+\.toml$/i,_e=ie.test(K),Ue=re.test(K),Xe=ae.test(K);return!_e&&!Ue&&!Xe?{valid:!1,error:"路径格式错误"}:/[<>"|?*\x00-\x1F]/.test(K)?{valid:!1,error:"路径包含非法字符"}:{valid:!0,error:""}},I=K=>{if(o(K),K.trim()){const ie=P(K);m(ie.error)}else m("")},Q=b.useCallback(async K=>{const ie=i4[K];w(!0);try{const re=await n_(ie.path),ae=W(re);r(ae),h(K),o(ie.path),await t_(ie.path),M({title:"加载成功",description:`已从${ie.name}预设加载配置`})}catch(re){console.error("加载预设配置失败:",re),M({title:"加载失败",description:re instanceof Error?re.message:"无法读取预设配置文件",variant:"destructive"})}finally{w(!1)}},[M]),U=b.useCallback(async K=>{const ie=P(K);if(!ie.valid){m(ie.error),M({title:"路径无效",description:ie.error,variant:"destructive"});return}m(""),w(!0);try{const re=await n_(K),ae=W(re);r(ae),o(K),await t_(K),M({title:"加载成功",description:"已从配置文件加载"})}catch(re){console.error("加载配置失败:",re),M({title:"加载失败",description:re instanceof Error?re.message:"无法读取配置文件",variant:"destructive"})}finally{w(!1)}},[M]);b.useEffect(()=>{(async()=>{try{const ie=await e0e();if(ie&&ie.path){o(ie.path);const re=Object.entries(i4).find(([,ae])=>ae.path===ie.path);re?(e("preset"),h(re[0]),await Q(re[0])):(e("path"),await U(ie.path))}}catch(ie){console.error("加载保存的路径失败:",ie)}})()},[U,Q]);const ee=b.useCallback(K=>{t!=="path"&&t!=="preset"||!a||(L.current&&clearTimeout(L.current),L.current=setTimeout(async()=>{x(!0);try{const ie=F(K);await r_(a,ie),M({title:"自动保存成功",description:"配置已保存到文件"})}catch(ie){console.error("自动保存失败:",ie),M({title:"自动保存失败",description:ie instanceof Error?ie.message:"保存配置失败",variant:"destructive"})}finally{x(!1)}},1e3))},[t,a,M]),z=async()=>{if(!n||!a)return;const K=P(a);if(!K.valid){M({title:"保存失败",description:K.error,variant:"destructive"});return}x(!0);try{const ie=F(n);await r_(a,ie),M({title:"保存成功",description:"配置已保存到文件"})}catch(ie){console.error("保存失败:",ie),M({title:"保存失败",description:ie instanceof Error?ie.message:"保存配置失败",variant:"destructive"})}finally{x(!1)}},H=async()=>{a&&await U(a)},B=K=>{if(K!==t){if(n){_(K),k(!0);return}X(K)}},X=K=>{r(null),i(""),m(""),e(K),K==="preset"&&Q("oneclick"),M({title:"已切换模式",description:{upload:"现在可以上传配置文件",path:"现在可以指定配置文件路径",preset:"现在可以使用预设配置"}[K]})},J=()=>{T&&(X(T),_(null)),k(!1)},G=()=>{if(n){C(!0);return}R()},R=()=>{o(""),r(null),m(""),M({title:"已清空",description:"路径和配置已清空"})},se=()=>{R(),C(!1)},W=K=>{const ie=JSON.parse(JSON.stringify(ji)),re=K.split(` -`);let ae="";for(const _e of re){const Ue=_e.trim();if(!Ue||Ue.startsWith("#"))continue;const Xe=Ue.match(/^\[(\w+)\]/);if(Xe){ae=Xe[1];continue}const Ze=Ue.match(/^(\w+)\s*=\s*(.+)$/);if(Ze&&ae){const[,Oe,He]=Ze;let Ve=He.trim();const Be=Ve.match(/^("[^"]*")/);if(Be)Ve=Be[1];else{const rt=Ve.indexOf("#");rt!==-1&&(Ve=Ve.substring(0,rt).trim())}let ut;if(Ve==="true")ut=!0;else if(Ve==="false")ut=!1;else if(Ve.startsWith("[")&&Ve.endsWith("]")){const rt=Ve.slice(1,-1).trim();if(rt){const rn=rt.split(",").map(Tn=>{const Mt=Tn.trim();return isNaN(Number(Mt))?Mt.replace(/"/g,""):Number(Mt)}),Rn=typeof rn[0];ut=rn.every(Tn=>typeof Tn===Rn)?rn:rn.filter(Tn=>typeof Tn=="number")}else ut=[]}else Ve.startsWith('"')&&Ve.endsWith('"')?ut=Ve.slice(1,-1):isNaN(Number(Ve))?ut=Ve.replace(/"/g,""):ut=Number(Ve);if(ae in ie){const rt=ie[ae];rt[Oe]=ut}}}return ie},F=K=>{const ie=[],re=(ae,_e)=>ae===""||ae===null||ae===void 0?_e:ae;return ie.push("[inner]"),ie.push(`version = "${re(K.inner.version,ji.inner.version)}" # 版本号`),ie.push("# 请勿修改版本号,除非你知道自己在做什么"),ie.push(""),ie.push("[nickname] # 现在没用"),ie.push(`nickname = "${re(K.nickname.nickname,ji.nickname.nickname)}"`),ie.push(""),ie.push("[napcat_server] # Napcat连接的ws服务设置"),ie.push(`host = "${re(K.napcat_server.host,ji.napcat_server.host)}" # Napcat设定的主机地址`),ie.push(`port = ${re(K.napcat_server.port||0,ji.napcat_server.port)} # Napcat设定的端口`),ie.push(`token = "${re(K.napcat_server.token,ji.napcat_server.token)}" # Napcat设定的访问令牌,若无则留空`),ie.push(`heartbeat_interval = ${re(K.napcat_server.heartbeat_interval||0,ji.napcat_server.heartbeat_interval)} # 与Napcat设置的心跳相同(按秒计)`),ie.push(""),ie.push("[maibot_server] # 连接麦麦的ws服务设置"),ie.push(`host = "${re(K.maibot_server.host,ji.maibot_server.host)}" # 麦麦在.env文件中设置的主机地址,即HOST字段`),ie.push(`port = ${re(K.maibot_server.port||0,ji.maibot_server.port)} # 麦麦在.env文件中设置的端口,即PORT字段`),ie.push(""),ie.push("[chat] # 黑白名单功能"),ie.push(`group_list_type = "${re(K.chat.group_list_type,ji.chat.group_list_type)}" # 群组名单类型,可选为:whitelist, blacklist`),ie.push(`group_list = [${K.chat.group_list.join(", ")}] # 群组名单`),ie.push("# 当group_list_type为whitelist时,只有群组名单中的群组可以聊天"),ie.push("# 当group_list_type为blacklist时,群组名单中的任何群组无法聊天"),ie.push(`private_list_type = "${re(K.chat.private_list_type,ji.chat.private_list_type)}" # 私聊名单类型,可选为:whitelist, blacklist`),ie.push(`private_list = [${K.chat.private_list.join(", ")}] # 私聊名单`),ie.push("# 当private_list_type为whitelist时,只有私聊名单中的用户可以聊天"),ie.push("# 当private_list_type为blacklist时,私聊名单中的任何用户无法聊天"),ie.push(`ban_user_id = [${K.chat.ban_user_id.join(", ")}] # 全局禁止名单(全局禁止名单中的用户无法进行任何聊天)`),ie.push(`ban_qq_bot = ${K.chat.ban_qq_bot} # 是否屏蔽QQ官方机器人`),ie.push(`enable_poke = ${K.chat.enable_poke} # 是否启用戳一戳功能`),ie.push(""),ie.push("[voice] # 发送语音设置"),ie.push(`use_tts = ${K.voice.use_tts} # 是否使用tts语音(请确保你配置了tts并有对应的adapter)`),ie.push(""),ie.push("[debug]"),ie.push(`level = "${re(K.debug.level,ji.debug.level)}" # 日志等级(DEBUG, INFO, WARNING, ERROR, CRITICAL)`),ie.join(` -`)},V=K=>{const ie=K.target.files?.[0];if(!ie)return;const re=new FileReader;re.onload=ae=>{try{const _e=ae.target?.result,Ue=W(_e);r(Ue),i(ie.name),M({title:"上传成功",description:`已加载配置文件:${ie.name}`})}catch(_e){console.error("解析配置文件失败:",_e),M({title:"解析失败",description:"配置文件格式错误,请检查文件内容",variant:"destructive"})}},re.readAsText(ie)},te=()=>{if(!n)return;const K=F(n),ie=new Blob([K],{type:"text/plain;charset=utf-8"}),re=URL.createObjectURL(ie),ae=document.createElement("a");ae.href=re,ae.download=s||"config.toml",document.body.appendChild(ae),ae.click(),document.body.removeChild(ae),URL.revokeObjectURL(re),M({title:"下载成功",description:"配置文件已下载,请手动覆盖并重启适配器"})},ne=()=>{r(JSON.parse(JSON.stringify(ji))),i("config.toml"),M({title:"已加载默认配置",description:"可以开始编辑配置"})};return l.jsx(hn,{className:"h-full",children:l.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[l.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:l.jsxs("div",{children:[l.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦适配器配置"}),l.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的 QQ 适配器的配置文件"})]})}),l.jsxs(Dt,{children:[l.jsxs(kn,{children:[l.jsx(jn,{children:"工作模式"}),l.jsx(Fr,{children:"选择配置文件的管理方式"})]}),l.jsxs(Dn,{className:"space-y-4",children:[l.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3 md:gap-4",children:[l.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${t==="preset"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>B("preset"),children:l.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[l.jsx(mh,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),l.jsxs("div",{className:"min-w-0",children:[l.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"预设模式"}),l.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"使用预设的部署配置"})]})]})}),l.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${t==="upload"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>B("upload"),children:l.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[l.jsx(IC,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),l.jsxs("div",{className:"min-w-0",children:[l.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"上传文件模式"}),l.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"上传配置文件,编辑后下载并手动覆盖"})]})]})}),l.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${t==="path"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>B("path"),children:l.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[l.jsx(QK,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),l.jsxs("div",{className:"min-w-0",children:[l.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"指定路径模式"}),l.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"指定配置文件路径,自动加载和保存"})]})]})})]}),t==="preset"&&l.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[l.jsx(ue,{className:"text-sm md:text-base",children:"选择部署方式"}),l.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:Object.entries(i4).map(([K,ie])=>{const re=ie.icon,ae=c===K;return l.jsx("div",{className:`border-2 rounded-lg p-3 cursor-pointer transition-all ${ae?"border-primary bg-primary/5":"border-muted hover:border-primary/50"}`,onClick:()=>{h(K),Q(K)},children:l.jsxs("div",{className:"flex items-start gap-3",children:[l.jsx(re,{className:"h-5 w-5 mt-0.5 flex-shrink-0"}),l.jsxs("div",{className:"min-w-0 flex-1",children:[l.jsx("h4",{className:"font-semibold text-sm",children:ie.name}),l.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:ie.description}),l.jsx("p",{className:"text-xs text-muted-foreground mt-1 font-mono break-all",children:ie.path})]})]})},K)})})]}),t==="path"&&l.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{htmlFor:"config-path",className:"text-sm md:text-base",children:"配置文件路径"}),l.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[l.jsxs("div",{className:"flex-1 space-y-1",children:[l.jsx(Pe,{id:"config-path",value:a,onChange:K=>I(K.target.value),placeholder:"例: C:\\Adapter\\config.toml",className:`text-sm ${f?"border-destructive":""}`}),f&&l.jsx("p",{className:"text-xs text-destructive",children:f})]}),l.jsx(de,{onClick:()=>U(a),disabled:y||!a||!!f,className:"w-full sm:w-auto",children:y?l.jsxs(l.Fragment,{children:[l.jsx(Ls,{className:"h-4 w-4 animate-spin mr-2"}),l.jsx("span",{className:"sm:hidden",children:"加载中..."})]}):l.jsxs(l.Fragment,{children:[l.jsx("span",{className:"sm:hidden",children:"加载配置"}),l.jsx("span",{className:"hidden sm:inline",children:"加载"})]})})]})]}),l.jsxs("details",{className:"rounded-lg bg-muted/50 p-3 group",children:[l.jsxs("summary",{className:"text-xs font-medium cursor-pointer select-none list-none flex items-center justify-between",children:[l.jsx("span",{children:"路径格式说明"}),l.jsx("svg",{className:"h-4 w-4 transition-transform group-open:rotate-180",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:l.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),l.jsxs("div",{className:"mt-2 space-y-2 text-xs text-muted-foreground",children:[l.jsxs("div",{className:"space-y-1",children:[l.jsx("div",{className:"flex items-center gap-2",children:l.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Windows"})}),l.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[l.jsx("div",{children:"C:\\Adapter\\config.toml"}),l.jsx("div",{className:"hidden sm:block",children:"D:\\MaiBot\\adapter\\config.toml"}),l.jsx("div",{className:"hidden sm:block",children:"\\\\server\\share\\config.toml"})]})]}),l.jsxs("div",{className:"space-y-1",children:[l.jsx("div",{className:"flex items-center gap-2",children:l.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Linux"})}),l.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[l.jsx("div",{children:"/opt/adapter/config.toml"}),l.jsx("div",{className:"hidden sm:block",children:"/home/user/adapter/config.toml"}),l.jsx("div",{className:"hidden sm:block",children:"~/adapter/config.toml"})]})]}),l.jsx("p",{className:"pt-1 border-t text-[10px] md:text-xs",children:"💡 配置会自动保存到指定文件,修改后 1 秒自动保存"})]})]})]})]})]}),l.jsxs(Na,{children:[l.jsx(ra,{className:"h-4 w-4"}),l.jsx(Ca,{children:t==="preset"?l.jsxs(l.Fragment,{children:[l.jsx("strong",{children:"预设模式:"}),"选择预设的部署方式,配置会自动加载,修改后 1 秒自动保存",g&&" (正在保存...)"]}):t==="upload"?l.jsxs(l.Fragment,{children:[l.jsx("strong",{children:"上传文件模式:"}),"上传配置文件 → 在线编辑 → 下载文件 → 手动覆盖并重启适配器"]}):l.jsxs(l.Fragment,{children:[l.jsx("strong",{children:"指定路径模式:"}),"指定配置文件路径后,配置会自动加载,修改后 1 秒自动保存",g&&" (正在保存...)"]})})]}),t==="upload"&&!n&&l.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 w-full",children:[l.jsx("input",{ref:E,type:"file",accept:".toml",className:"hidden",onChange:V}),l.jsxs(de,{onClick:()=>E.current?.click(),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[l.jsx(IC,{className:"mr-2 h-4 w-4"}),"上传配置"]}),l.jsxs(de,{onClick:ne,size:"sm",className:"w-full sm:w-auto",children:[l.jsx(lo,{className:"mr-2 h-4 w-4"}),"使用默认配置"]})]}),t==="upload"&&n&&l.jsx("div",{className:"flex gap-2",children:l.jsxs(de,{onClick:te,size:"sm",className:"w-full sm:w-auto",children:[l.jsx(Su,{className:"mr-2 h-4 w-4"}),"下载配置"]})}),(t==="preset"||t==="path")&&n&&l.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[l.jsxs(de,{onClick:z,size:"sm",disabled:g||!!f,className:"w-full sm:w-auto",children:[l.jsx(zv,{className:"mr-2 h-4 w-4"}),g?"保存中...":"立即保存"]}),l.jsxs(de,{onClick:H,size:"sm",variant:"outline",disabled:y,className:"w-full sm:w-auto",children:[l.jsx(Ls,{className:`mr-2 h-4 w-4 ${y?"animate-spin":""}`}),"刷新"]}),t==="path"&&l.jsxs(de,{onClick:G,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[l.jsx(fn,{className:"mr-2 h-4 w-4"}),"清空路径"]})]}),n?l.jsxs(sa,{defaultValue:"napcat",className:"w-full",children:[l.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:l.jsxs(Mi,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5",children:[l.jsxs(zt,{value:"napcat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[l.jsx("span",{className:"hidden sm:inline",children:"Napcat 连接"}),l.jsx("span",{className:"sm:hidden",children:"Napcat"})]}),l.jsxs(zt,{value:"maibot",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[l.jsx("span",{className:"hidden sm:inline",children:"麦麦连接"}),l.jsx("span",{className:"sm:hidden",children:"麦麦"})]}),l.jsxs(zt,{value:"chat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[l.jsx("span",{className:"hidden sm:inline",children:"聊天控制"}),l.jsx("span",{className:"sm:hidden",children:"聊天"})]}),l.jsxs(zt,{value:"voice",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[l.jsx("span",{className:"hidden sm:inline",children:"语音设置"}),l.jsx("span",{className:"sm:hidden",children:"语音"})]}),l.jsx(zt,{value:"debug",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:"调试"})]})}),l.jsx(tn,{value:"napcat",className:"space-y-4",children:l.jsx(n0e,{config:n,onChange:K=>{r(K),ee(K)}})}),l.jsx(tn,{value:"maibot",className:"space-y-4",children:l.jsx(r0e,{config:n,onChange:K=>{r(K),ee(K)}})}),l.jsx(tn,{value:"chat",className:"space-y-4",children:l.jsx(s0e,{config:n,onChange:K=>{r(K),ee(K)}})}),l.jsx(tn,{value:"voice",className:"space-y-4",children:l.jsx(i0e,{config:n,onChange:K=>{r(K),ee(K)}})}),l.jsx(tn,{value:"debug",className:"space-y-4",children:l.jsx(a0e,{config:n,onChange:K=>{r(K),ee(K)}})})]}):l.jsx("div",{className:"rounded-lg border bg-card p-6 md:p-12",children:l.jsxs("div",{className:"text-center space-y-3 md:space-y-4",children:[l.jsx(lo,{className:"h-12 w-12 md:h-16 md:w-16 mx-auto text-muted-foreground"}),l.jsxs("div",{children:[l.jsx("h3",{className:"text-base md:text-lg font-semibold",children:"尚未加载配置"}),l.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-2 px-4",children:t==="preset"?"请选择预设的部署方式":t==="upload"?"请上传现有配置文件,或使用默认配置开始编辑":"请指定配置文件路径并点击加载按钮"})]})]})}),l.jsx(Nn,{open:S,onOpenChange:k,children:l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认切换模式"}),l.jsxs(bn,{children:["切换模式将清空当前配置,确定要继续吗?",l.jsx("br",{}),l.jsx("span",{className:"text-destructive font-medium",children:"请确保已保存重要配置"})]})]}),l.jsxs(vn,{children:[l.jsx(Sn,{onClick:()=>{k(!1),_(null)},children:"取消"}),l.jsx(wn,{onClick:J,children:"确认切换"})]})]})}),l.jsx(Nn,{open:N,onOpenChange:C,children:l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认清空路径"}),l.jsxs(bn,{children:["清空路径将清除当前配置,确定要继续吗?",l.jsx("br",{}),l.jsx("span",{className:"text-muted-foreground text-sm",children:"此操作不会删除配置文件,只是清除界面中的配置"})]})]}),l.jsxs(vn,{children:[l.jsx(Sn,{onClick:()=>C(!1),children:"取消"}),l.jsx(wn,{onClick:se,className:"bg-destructive hover:bg-destructive/90",children:"确认清空"})]})]})})]})})}function n0e({config:t,onChange:e}){return l.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:l.jsxs("div",{children:[l.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"Napcat WebSocket 服务设置"}),l.jsxs("div",{className:"grid gap-3 md:gap-4",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"napcat-host",className:"text-sm md:text-base",children:"主机地址"}),l.jsx(Pe,{id:"napcat-host",value:t.napcat_server.host,onChange:n=>e({...t,napcat_server:{...t.napcat_server,host:n.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的主机地址"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"napcat-port",className:"text-sm md:text-base",children:"端口"}),l.jsx(Pe,{id:"napcat-port",type:"number",value:t.napcat_server.port||"",onChange:n=>e({...t,napcat_server:{...t.napcat_server,port:n.target.value?parseInt(n.target.value):0}}),placeholder:"8095",className:"text-sm md:text-base"}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的端口(留空使用默认值 8095)"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"napcat-token",className:"text-sm md:text-base",children:"访问令牌(Token)"}),l.jsx(Pe,{id:"napcat-token",type:"password",value:t.napcat_server.token,onChange:n=>e({...t,napcat_server:{...t.napcat_server,token:n.target.value}}),placeholder:"留空表示无需令牌",className:"text-sm md:text-base"}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的访问令牌,若无则留空"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"napcat-heartbeat",className:"text-sm md:text-base",children:"心跳间隔(秒)"}),l.jsx(Pe,{id:"napcat-heartbeat",type:"number",value:t.napcat_server.heartbeat_interval||"",onChange:n=>e({...t,napcat_server:{...t.napcat_server,heartbeat_interval:n.target.value?parseInt(n.target.value):0}}),placeholder:"30",className:"text-sm md:text-base"}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"与 Napcat 设置的心跳间隔保持一致(留空使用默认值 30)"})]})]})]})})}function r0e({config:t,onChange:e}){return l.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:l.jsxs("div",{children:[l.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"麦麦 WebSocket 服务设置"}),l.jsxs("div",{className:"grid gap-3 md:gap-4",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"maibot-host",className:"text-sm md:text-base",children:"主机地址"}),l.jsx(Pe,{id:"maibot-host",value:t.maibot_server.host,onChange:n=>e({...t,maibot_server:{...t.maibot_server,host:n.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 HOST 字段"})]}),l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{htmlFor:"maibot-port",className:"text-sm md:text-base",children:"端口"}),l.jsx(Pe,{id:"maibot-port",type:"number",value:t.maibot_server.port||"",onChange:n=>e({...t,maibot_server:{...t.maibot_server,port:n.target.value?parseInt(n.target.value):0}}),placeholder:"8000",className:"text-sm md:text-base"}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 PORT 字段(留空使用默认值 8000)"})]})]})]})})}function s0e({config:t,onChange:e}){const n=i=>{const a={...t};i==="group"?a.chat.group_list=[...a.chat.group_list,0]:i==="private"?a.chat.private_list=[...a.chat.private_list,0]:a.chat.ban_user_id=[...a.chat.ban_user_id,0],e(a)},r=(i,a)=>{const o={...t};i==="group"?o.chat.group_list=o.chat.group_list.filter((c,h)=>h!==a):i==="private"?o.chat.private_list=o.chat.private_list.filter((c,h)=>h!==a):o.chat.ban_user_id=o.chat.ban_user_id.filter((c,h)=>h!==a),e(o)},s=(i,a,o)=>{const c={...t};i==="group"?c.chat.group_list[a]=o:i==="private"?c.chat.private_list[a]=o:c.chat.ban_user_id[a]=o,e(c)};return l.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:l.jsxs("div",{children:[l.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"聊天黑白名单功能"}),l.jsxs("div",{className:"grid gap-4 md:gap-6",children:[l.jsxs("div",{className:"space-y-3 md:space-y-4",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{className:"text-sm md:text-base",children:"群组名单类型"}),l.jsxs(qt,{value:t.chat.group_list_type,onValueChange:i=>e({...t,chat:{...t.chat,group_list_type:i}}),children:[l.jsx(It,{children:l.jsx(Ft,{})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),l.jsx(De,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[l.jsx(ue,{className:"text-sm md:text-base",children:"群组列表"}),l.jsxs(de,{onClick:()=>n("group"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[l.jsx(lo,{className:"mr-1 h-4 w-4"}),"添加群号"]})]}),t.chat.group_list.map((i,a)=>l.jsxs("div",{className:"flex gap-2",children:[l.jsx(Pe,{type:"number",value:i,onChange:o=>s("group",a,parseInt(o.target.value)||0),placeholder:"输入群号",className:"text-sm md:text-base"}),l.jsxs(Nn,{children:[l.jsx(Qr,{asChild:!0,children:l.jsx(de,{size:"icon",variant:"outline",children:l.jsx(fn,{className:"h-4 w-4"})})}),l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认删除"}),l.jsxs(bn,{children:["确定要删除群号 ",i," 吗?此操作无法撤销。"]})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:()=>r("group",a),children:"删除"})]})]})]})]},a)),t.chat.group_list.length===0&&l.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无群组"})]})]}),l.jsxs("div",{className:"space-y-3 md:space-y-4",children:[l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{className:"text-sm md:text-base",children:"私聊名单类型"}),l.jsxs(qt,{value:t.chat.private_list_type,onValueChange:i=>e({...t,chat:{...t.chat,private_list_type:i}}),children:[l.jsx(It,{children:l.jsx(Ft,{})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),l.jsx(De,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[l.jsx(ue,{className:"text-sm md:text-base",children:"私聊列表"}),l.jsxs(de,{onClick:()=>n("private"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[l.jsx(lo,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),t.chat.private_list.map((i,a)=>l.jsxs("div",{className:"flex gap-2",children:[l.jsx(Pe,{type:"number",value:i,onChange:o=>s("private",a,parseInt(o.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),l.jsxs(Nn,{children:[l.jsx(Qr,{asChild:!0,children:l.jsx(de,{size:"icon",variant:"outline",children:l.jsx(fn,{className:"h-4 w-4"})})}),l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认删除"}),l.jsxs(bn,{children:["确定要删除用户 ",i," 吗?此操作无法撤销。"]})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:()=>r("private",a),children:"删除"})]})]})]})]},a)),t.chat.private_list.length===0&&l.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无用户"})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[l.jsxs("div",{children:[l.jsx(ue,{className:"text-sm md:text-base",children:"全局禁止名单"}),l.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"名单中的用户无法进行任何聊天"})]}),l.jsxs(de,{onClick:()=>n("ban"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[l.jsx(lo,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),t.chat.ban_user_id.map((i,a)=>l.jsxs("div",{className:"flex gap-2",children:[l.jsx(Pe,{type:"number",value:i,onChange:o=>s("ban",a,parseInt(o.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),l.jsxs(Nn,{children:[l.jsx(Qr,{asChild:!0,children:l.jsx(de,{size:"icon",variant:"outline",children:l.jsx(fn,{className:"h-4 w-4"})})}),l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认删除"}),l.jsxs(bn,{children:["确定要从全局禁止名单中删除用户 ",i," 吗?此操作无法撤销。"]})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:()=>r("ban",a),children:"删除"})]})]})]})]},a)),t.chat.ban_user_id.length===0&&l.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无禁止用户"})]}),l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{children:[l.jsx(ue,{className:"text-sm md:text-base",children:"屏蔽QQ官方机器人"}),l.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否屏蔽来自QQ官方机器人的消息"})]}),l.jsx(Pt,{checked:t.chat.ban_qq_bot,onCheckedChange:i=>e({...t,chat:{...t.chat,ban_qq_bot:i}})})]}),l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{children:[l.jsx(ue,{className:"text-sm md:text-base",children:"启用戳一戳功能"}),l.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否响应戳一戳消息"})]}),l.jsx(Pt,{checked:t.chat.enable_poke,onCheckedChange:i=>e({...t,chat:{...t.chat,enable_poke:i}})})]})]})]})})}function i0e({config:t,onChange:e}){return l.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:l.jsxs("div",{children:[l.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"发送语音设置"}),l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{children:[l.jsx(ue,{className:"text-sm md:text-base",children:"使用 TTS 语音"}),l.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"请确保已配置 TTS 并有对应的适配器"})]}),l.jsx(Pt,{checked:t.voice.use_tts,onCheckedChange:n=>e({...t,voice:{use_tts:n}})})]})]})})}function a0e({config:t,onChange:e}){return l.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:l.jsxs("div",{children:[l.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"调试设置"}),l.jsx("div",{className:"grid gap-3 md:gap-4",children:l.jsxs("div",{className:"grid gap-2",children:[l.jsx(ue,{className:"text-sm md:text-base",children:"日志等级"}),l.jsxs(qt,{value:t.debug.level,onValueChange:n=>e({...t,debug:{level:n}}),children:[l.jsx(It,{children:l.jsx(Ft,{})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"DEBUG",children:"DEBUG(调试)"}),l.jsx(De,{value:"INFO",children:"INFO(信息)"}),l.jsx(De,{value:"WARNING",children:"WARNING(警告)"}),l.jsx(De,{value:"ERROR",children:"ERROR(错误)"}),l.jsx(De,{value:"CRITICAL",children:"CRITICAL(严重)"})]})]}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"设置适配器的日志输出等级"})]})})]})})}function s_(t){const e=[],n=String(t||"");let r=n.indexOf(","),s=0,i=!1;for(;!i;){r===-1&&(r=n.length,i=!0);const a=n.slice(s,r).trim();(a||!i)&&e.push(a),s=r+1,r=n.indexOf(",",s)}return e}function l0e(t,e){const n={};return(t[t.length-1]===""?[...t,""]:t).join((n.padRight?" ":"")+","+(n.padLeft===!1?"":" ")).trim()}const o0e=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,c0e=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,u0e={};function i_(t,e){return(u0e.jsx?c0e:o0e).test(t)}const d0e=/[ \t\n\f\r]/g;function h0e(t){return typeof t=="object"?t.type==="text"?a_(t.value):!1:a_(t)}function a_(t){return t.replace(d0e,"")===""}class cp{constructor(e,n,r){this.normal=n,this.property=e,r&&(this.space=r)}}cp.prototype.normal={};cp.prototype.property={};cp.prototype.space=void 0;function $F(t,e){const n={},r={};for(const s of t)Object.assign(n,s.property),Object.assign(r,s.normal);return new cp(n,r,e)}function y0(t){return t.toLowerCase()}class hi{constructor(e,n){this.attribute=n,this.property=e}}hi.prototype.attribute="";hi.prototype.booleanish=!1;hi.prototype.boolean=!1;hi.prototype.commaOrSpaceSeparated=!1;hi.prototype.commaSeparated=!1;hi.prototype.defined=!1;hi.prototype.mustUseProperty=!1;hi.prototype.number=!1;hi.prototype.overloadedBoolean=!1;hi.prototype.property="";hi.prototype.spaceSeparated=!1;hi.prototype.space=void 0;let f0e=0;const Ut=Hu(),Br=Hu(),ek=Hu(),Qe=Hu(),Zn=Hu(),ch=Hu(),Oi=Hu();function Hu(){return 2**++f0e}const tk=Object.freeze(Object.defineProperty({__proto__:null,boolean:Ut,booleanish:Br,commaOrSpaceSeparated:Oi,commaSeparated:ch,number:Qe,overloadedBoolean:ek,spaceSeparated:Zn},Symbol.toStringTag,{value:"Module"})),a4=Object.keys(tk);class Nj extends hi{constructor(e,n,r,s){let i=-1;if(super(e,n),l_(this,"space",s),typeof r=="number")for(;++i4&&n.slice(0,4)==="data"&&v0e.test(e)){if(e.charAt(4)==="-"){const i=e.slice(5).replace(o_,b0e);r="data"+i.charAt(0).toUpperCase()+i.slice(1)}else{const i=e.slice(4);if(!o_.test(i)){let a=i.replace(x0e,y0e);a.charAt(0)!=="-"&&(a="-"+a),e="data"+a}}s=Nj}return new s(r,e)}function y0e(t){return"-"+t.toLowerCase()}function b0e(t){return t.charAt(1).toUpperCase()}const YF=$F([QF,m0e,UF,WF,GF],"html"),by=$F([QF,p0e,UF,WF,GF],"svg");function c_(t){const e=String(t||"").trim();return e?e.split(/[ \t\n\r\f]+/g):[]}function w0e(t){return t.join(" ").trim()}var Ed={},l4,u_;function S0e(){if(u_)return l4;u_=1;var t=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,e=/\n/g,n=/^\s*/,r=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,s=/^:\s*/,i=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,a=/^[;\s]*/,o=/^\s+|\s+$/g,c=` -`,h="/",f="*",m="",g="comment",x="declaration";function y(S,k){if(typeof S!="string")throw new TypeError("First argument must be a string");if(!S)return[];k=k||{};var N=1,C=1;function T(z){var H=z.match(e);H&&(N+=H.length);var B=z.lastIndexOf(c);C=~B?z.length-B:C+z.length}function _(){var z={line:N,column:C};return function(H){return H.position=new E(z),P(),H}}function E(z){this.start=z,this.end={line:N,column:C},this.source=k.source}E.prototype.content=S;function M(z){var H=new Error(k.source+":"+N+":"+C+": "+z);if(H.reason=z,H.filename=k.source,H.line=N,H.column=C,H.source=S,!k.silent)throw H}function L(z){var H=z.exec(S);if(H){var B=H[0];return T(B),S=S.slice(B.length),H}}function P(){L(n)}function I(z){var H;for(z=z||[];H=Q();)H!==!1&&z.push(H);return z}function Q(){var z=_();if(!(h!=S.charAt(0)||f!=S.charAt(1))){for(var H=2;m!=S.charAt(H)&&(f!=S.charAt(H)||h!=S.charAt(H+1));)++H;if(H+=2,m===S.charAt(H-1))return M("End of comment missing");var B=S.slice(2,H-2);return C+=2,T(B),S=S.slice(H),C+=2,z({type:g,comment:B})}}function U(){var z=_(),H=L(r);if(H){if(Q(),!L(s))return M("property missing ':'");var B=L(i),X=z({type:x,property:w(H[0].replace(t,m)),value:B?w(B[0].replace(t,m)):m});return L(a),X}}function ee(){var z=[];I(z);for(var H;H=U();)H!==!1&&(z.push(H),I(z));return z}return P(),ee()}function w(S){return S?S.replace(o,m):m}return l4=y,l4}var d_;function k0e(){if(d_)return Ed;d_=1;var t=Ed&&Ed.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Ed,"__esModule",{value:!0}),Ed.default=n;const e=t(S0e());function n(r,s){let i=null;if(!r||typeof r!="string")return i;const a=(0,e.default)(r),o=typeof s=="function";return a.forEach(c=>{if(c.type!=="declaration")return;const{property:h,value:f}=c;o?s(h,f,c):f&&(i=i||{},i[h]=f)}),i}return Ed}var sm={},h_;function j0e(){if(h_)return sm;h_=1,Object.defineProperty(sm,"__esModule",{value:!0}),sm.camelCase=void 0;var t=/^--[a-zA-Z0-9_-]+$/,e=/-([a-z])/g,n=/^[^-]+$/,r=/^-(webkit|moz|ms|o|khtml)-/,s=/^-(ms)-/,i=function(h){return!h||n.test(h)||t.test(h)},a=function(h,f){return f.toUpperCase()},o=function(h,f){return"".concat(f,"-")},c=function(h,f){return f===void 0&&(f={}),i(h)?h:(h=h.toLowerCase(),f.reactCompat?h=h.replace(s,o):h=h.replace(r,o),h.replace(e,a))};return sm.camelCase=c,sm}var im,f_;function O0e(){if(f_)return im;f_=1;var t=im&&im.__importDefault||function(s){return s&&s.__esModule?s:{default:s}},e=t(k0e()),n=j0e();function r(s,i){var a={};return!s||typeof s!="string"||(0,e.default)(s,function(o,c){o&&c&&(a[(0,n.camelCase)(o,i)]=c)}),a}return r.default=r,im=r,im}var N0e=O0e();const C0e=Fk(N0e),KF=ZF("end"),Cj=ZF("start");function ZF(t){return e;function e(n){const r=n&&n.position&&n.position[t]||{};if(typeof r.line=="number"&&r.line>0&&typeof r.column=="number"&&r.column>0)return{line:r.line,column:r.column,offset:typeof r.offset=="number"&&r.offset>-1?r.offset:void 0}}}function T0e(t){const e=Cj(t),n=KF(t);if(e&&n)return{start:e,end:n}}function Lm(t){return!t||typeof t!="object"?"":"position"in t||"type"in t?m_(t.position):"start"in t||"end"in t?m_(t):"line"in t||"column"in t?nk(t):""}function nk(t){return p_(t&&t.line)+":"+p_(t&&t.column)}function m_(t){return nk(t&&t.start)+"-"+nk(t&&t.end)}function p_(t){return t&&typeof t=="number"?t:1}class _s extends Error{constructor(e,n,r){super(),typeof n=="string"&&(r=n,n=void 0);let s="",i={},a=!1;if(n&&("line"in n&&"column"in n?i={place:n}:"start"in n&&"end"in n?i={place:n}:"type"in n?i={ancestors:[n],place:n.position}:i={...n}),typeof e=="string"?s=e:!i.cause&&e&&(a=!0,s=e.message,i.cause=e),!i.ruleId&&!i.source&&typeof r=="string"){const c=r.indexOf(":");c===-1?i.ruleId=r:(i.source=r.slice(0,c),i.ruleId=r.slice(c+1))}if(!i.place&&i.ancestors&&i.ancestors){const c=i.ancestors[i.ancestors.length-1];c&&(i.place=c.position)}const o=i.place&&"start"in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=o?o.column:void 0,this.fatal=void 0,this.file="",this.message=s,this.line=o?o.line:void 0,this.name=Lm(i.place)||"1:1",this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=a&&i.cause&&typeof i.cause.stack=="string"?i.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}_s.prototype.file="";_s.prototype.name="";_s.prototype.reason="";_s.prototype.message="";_s.prototype.stack="";_s.prototype.column=void 0;_s.prototype.line=void 0;_s.prototype.ancestors=void 0;_s.prototype.cause=void 0;_s.prototype.fatal=void 0;_s.prototype.place=void 0;_s.prototype.ruleId=void 0;_s.prototype.source=void 0;const Tj={}.hasOwnProperty,E0e=new Map,_0e=/[A-Z]/g,M0e=new Set(["table","tbody","thead","tfoot","tr"]),A0e=new Set(["td","th"]),JF="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function R0e(t,e){if(!e||e.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const n=e.filePath||void 0;let r;if(e.development){if(typeof e.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");r=F0e(n,e.jsxDEV)}else{if(typeof e.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof e.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");r=q0e(n,e.jsx,e.jsxs)}const s={Fragment:e.Fragment,ancestors:[],components:e.components||{},create:r,elementAttributeNameCase:e.elementAttributeNameCase||"react",evaluater:e.createEvaluater?e.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:e.ignoreInvalidStyle||!1,passKeys:e.passKeys!==!1,passNode:e.passNode||!1,schema:e.space==="svg"?by:YF,stylePropertyNameCase:e.stylePropertyNameCase||"dom",tableCellAlignToStyle:e.tableCellAlignToStyle!==!1},i=e$(s,t,void 0);return i&&typeof i!="string"?i:s.create(t,s.Fragment,{children:i||void 0},void 0)}function e$(t,e,n){if(e.type==="element")return D0e(t,e,n);if(e.type==="mdxFlowExpression"||e.type==="mdxTextExpression")return z0e(t,e);if(e.type==="mdxJsxFlowElement"||e.type==="mdxJsxTextElement")return L0e(t,e,n);if(e.type==="mdxjsEsm")return P0e(t,e);if(e.type==="root")return I0e(t,e,n);if(e.type==="text")return B0e(t,e)}function D0e(t,e,n){const r=t.schema;let s=r;e.tagName.toLowerCase()==="svg"&&r.space==="html"&&(s=by,t.schema=s),t.ancestors.push(e);const i=n$(t,e.tagName,!1),a=$0e(t,e);let o=_j(t,e);return M0e.has(e.tagName)&&(o=o.filter(function(c){return typeof c=="string"?!h0e(c):!0})),t$(t,a,i,e),Ej(a,o),t.ancestors.pop(),t.schema=r,t.create(e,i,a,n)}function z0e(t,e){if(e.data&&e.data.estree&&t.evaluater){const r=e.data.estree.body[0];return r.type,t.evaluater.evaluateExpression(r.expression)}b0(t,e.position)}function P0e(t,e){if(e.data&&e.data.estree&&t.evaluater)return t.evaluater.evaluateProgram(e.data.estree);b0(t,e.position)}function L0e(t,e,n){const r=t.schema;let s=r;e.name==="svg"&&r.space==="html"&&(s=by,t.schema=s),t.ancestors.push(e);const i=e.name===null?t.Fragment:n$(t,e.name,!0),a=Q0e(t,e),o=_j(t,e);return t$(t,a,i,e),Ej(a,o),t.ancestors.pop(),t.schema=r,t.create(e,i,a,n)}function I0e(t,e,n){const r={};return Ej(r,_j(t,e)),t.create(e,t.Fragment,r,n)}function B0e(t,e){return e.value}function t$(t,e,n,r){typeof n!="string"&&n!==t.Fragment&&t.passNode&&(e.node=r)}function Ej(t,e){if(e.length>0){const n=e.length>1?e:e[0];n&&(t.children=n)}}function q0e(t,e,n){return r;function r(s,i,a,o){const h=Array.isArray(a.children)?n:e;return o?h(i,a,o):h(i,a)}}function F0e(t,e){return n;function n(r,s,i,a){const o=Array.isArray(i.children),c=Cj(r);return e(s,i,a,o,{columnNumber:c?c.column-1:void 0,fileName:t,lineNumber:c?c.line:void 0},void 0)}}function $0e(t,e){const n={};let r,s;for(s in e.properties)if(s!=="children"&&Tj.call(e.properties,s)){const i=H0e(t,s,e.properties[s]);if(i){const[a,o]=i;t.tableCellAlignToStyle&&a==="align"&&typeof o=="string"&&A0e.has(e.tagName)?r=o:n[a]=o}}if(r){const i=n.style||(n.style={});i[t.stylePropertyNameCase==="css"?"text-align":"textAlign"]=r}return n}function Q0e(t,e){const n={};for(const r of e.attributes)if(r.type==="mdxJsxExpressionAttribute")if(r.data&&r.data.estree&&t.evaluater){const i=r.data.estree.body[0];i.type;const a=i.expression;a.type;const o=a.properties[0];o.type,Object.assign(n,t.evaluater.evaluateExpression(o.argument))}else b0(t,e.position);else{const s=r.name;let i;if(r.value&&typeof r.value=="object")if(r.value.data&&r.value.data.estree&&t.evaluater){const o=r.value.data.estree.body[0];o.type,i=t.evaluater.evaluateExpression(o.expression)}else b0(t,e.position);else i=r.value===null?!0:r.value;n[s]=i}return n}function _j(t,e){const n=[];let r=-1;const s=t.passKeys?new Map:E0e;for(;++rs?0:s+e:e=e>s?s:e,n=n>0?n:0,r.length<1e4)a=Array.from(r),a.unshift(e,n),t.splice(...a);else for(n&&t.splice(e,n);i0?(Ai(t,t.length,0,e),t):e}const v_={}.hasOwnProperty;function s$(t){const e={};let n=-1;for(;++n13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)===65535||(n&65535)===65534||n>1114111?"�":String.fromCodePoint(n)}function Ta(t){return t.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const zs=zc(/[A-Za-z]/),Ts=zc(/[\dA-Za-z]/),J0e=zc(/[#-'*+\--9=?A-Z^-~]/);function av(t){return t!==null&&(t<32||t===127)}const rk=zc(/\d/),epe=zc(/[\dA-Fa-f]/),tpe=zc(/[!-/:-@[-`{-~]/);function ht(t){return t!==null&&t<-2}function Yn(t){return t!==null&&(t<0||t===32)}function nn(t){return t===-2||t===-1||t===32}const wy=zc(new RegExp("\\p{P}|\\p{S}","u")),Iu=zc(/\s/);function zc(t){return e;function e(n){return n!==null&&n>-1&&t.test(String.fromCharCode(n))}}function Zh(t){const e=[];let n=-1,r=0,s=0;for(;++n55295&&i<57344){const o=t.charCodeAt(n+1);i<56320&&o>56319&&o<57344?(a=String.fromCharCode(i,o),s=1):a="�"}else a=String.fromCharCode(i);a&&(e.push(t.slice(r,n),encodeURIComponent(a)),r=n+s+1,a=""),s&&(n+=s,s=0)}return e.join("")+t.slice(r)}function Zt(t,e,n,r){const s=r?r-1:Number.POSITIVE_INFINITY;let i=0;return a;function a(c){return nn(c)?(t.enter(n),o(c)):e(c)}function o(c){return nn(c)&&i++a))return;const M=e.events.length;let L=M,P,I;for(;L--;)if(e.events[L][0]==="exit"&&e.events[L][1].type==="chunkFlow"){if(P){I=e.events[L][1].end;break}P=!0}for(k(r),E=M;EC;){const _=n[T];e.containerState=_[1],_[0].exit.call(e,t)}n.length=C}function N(){s.write([null]),i=void 0,s=void 0,e.containerState._closeFlow=void 0}}function ape(t,e,n){return Zt(t,t.attempt(this.parser.constructs.document,e,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function Ch(t){if(t===null||Yn(t)||Iu(t))return 1;if(wy(t))return 2}function Sy(t,e,n){const r=[];let s=-1;for(;++s1&&t[n][1].end.offset-t[n][1].start.offset>1?2:1;const m={...t[r][1].end},g={...t[n][1].start};b_(m,-c),b_(g,c),a={type:c>1?"strongSequence":"emphasisSequence",start:m,end:{...t[r][1].end}},o={type:c>1?"strongSequence":"emphasisSequence",start:{...t[n][1].start},end:g},i={type:c>1?"strongText":"emphasisText",start:{...t[r][1].end},end:{...t[n][1].start}},s={type:c>1?"strong":"emphasis",start:{...a.start},end:{...o.end}},t[r][1].end={...a.start},t[n][1].start={...o.end},h=[],t[r][1].end.offset-t[r][1].start.offset&&(h=Yi(h,[["enter",t[r][1],e],["exit",t[r][1],e]])),h=Yi(h,[["enter",s,e],["enter",a,e],["exit",a,e],["enter",i,e]]),h=Yi(h,Sy(e.parser.constructs.insideSpan.null,t.slice(r+1,n),e)),h=Yi(h,[["exit",i,e],["enter",o,e],["exit",o,e],["exit",s,e]]),t[n][1].end.offset-t[n][1].start.offset?(f=2,h=Yi(h,[["enter",t[n][1],e],["exit",t[n][1],e]])):f=0,Ai(t,r-1,n-r+3,h),n=r+h.length-f-2;break}}for(n=-1;++n0&&nn(E)?Zt(t,N,"linePrefix",i+1)(E):N(E)}function N(E){return E===null||ht(E)?t.check(w_,w,T)(E):(t.enter("codeFlowValue"),C(E))}function C(E){return E===null||ht(E)?(t.exit("codeFlowValue"),N(E)):(t.consume(E),C)}function T(E){return t.exit("codeFenced"),e(E)}function _(E,M,L){let P=0;return I;function I(H){return E.enter("lineEnding"),E.consume(H),E.exit("lineEnding"),Q}function Q(H){return E.enter("codeFencedFence"),nn(H)?Zt(E,U,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(H):U(H)}function U(H){return H===o?(E.enter("codeFencedFenceSequence"),ee(H)):L(H)}function ee(H){return H===o?(P++,E.consume(H),ee):P>=a?(E.exit("codeFencedFenceSequence"),nn(H)?Zt(E,z,"whitespace")(H):z(H)):L(H)}function z(H){return H===null||ht(H)?(E.exit("codeFencedFence"),M(H)):L(H)}}}function vpe(t,e,n){const r=this;return s;function s(a){return a===null?n(a):(t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),i)}function i(a){return r.parser.lazy[r.now().line]?n(a):e(a)}}const c4={name:"codeIndented",tokenize:bpe},ype={partial:!0,tokenize:wpe};function bpe(t,e,n){const r=this;return s;function s(h){return t.enter("codeIndented"),Zt(t,i,"linePrefix",5)(h)}function i(h){const f=r.events[r.events.length-1];return f&&f[1].type==="linePrefix"&&f[2].sliceSerialize(f[1],!0).length>=4?a(h):n(h)}function a(h){return h===null?c(h):ht(h)?t.attempt(ype,a,c)(h):(t.enter("codeFlowValue"),o(h))}function o(h){return h===null||ht(h)?(t.exit("codeFlowValue"),a(h)):(t.consume(h),o)}function c(h){return t.exit("codeIndented"),e(h)}}function wpe(t,e,n){const r=this;return s;function s(a){return r.parser.lazy[r.now().line]?n(a):ht(a)?(t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),s):Zt(t,i,"linePrefix",5)(a)}function i(a){const o=r.events[r.events.length-1];return o&&o[1].type==="linePrefix"&&o[2].sliceSerialize(o[1],!0).length>=4?e(a):ht(a)?s(a):n(a)}}const Spe={name:"codeText",previous:jpe,resolve:kpe,tokenize:Ope};function kpe(t){let e=t.length-4,n=3,r,s;if((t[n][1].type==="lineEnding"||t[n][1].type==="space")&&(t[e][1].type==="lineEnding"||t[e][1].type==="space")){for(r=n;++r=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return ethis.left.length?this.right.slice(this.right.length-r+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-r+this.left.length).reverse())}splice(e,n,r){const s=n||0;this.setCursor(Math.trunc(e));const i=this.right.splice(this.right.length-s,Number.POSITIVE_INFINITY);return r&&am(this.left,r),i.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(e){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(e)}pushMany(e){this.setCursor(Number.POSITIVE_INFINITY),am(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),am(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0))if(e=4?e(a):t.interrupt(r.parser.constructs.flow,n,e)(a)}}function u$(t,e,n,r,s,i,a,o,c){const h=c||Number.POSITIVE_INFINITY;let f=0;return m;function m(k){return k===60?(t.enter(r),t.enter(s),t.enter(i),t.consume(k),t.exit(i),g):k===null||k===32||k===41||av(k)?n(k):(t.enter(r),t.enter(a),t.enter(o),t.enter("chunkString",{contentType:"string"}),w(k))}function g(k){return k===62?(t.enter(i),t.consume(k),t.exit(i),t.exit(s),t.exit(r),e):(t.enter(o),t.enter("chunkString",{contentType:"string"}),x(k))}function x(k){return k===62?(t.exit("chunkString"),t.exit(o),g(k)):k===null||k===60||ht(k)?n(k):(t.consume(k),k===92?y:x)}function y(k){return k===60||k===62||k===92?(t.consume(k),x):x(k)}function w(k){return!f&&(k===null||k===41||Yn(k))?(t.exit("chunkString"),t.exit(o),t.exit(a),t.exit(r),e(k)):f999||x===null||x===91||x===93&&!c||x===94&&!o&&"_hiddenFootnoteSupport"in a.parser.constructs?n(x):x===93?(t.exit(i),t.enter(s),t.consume(x),t.exit(s),t.exit(r),e):ht(x)?(t.enter("lineEnding"),t.consume(x),t.exit("lineEnding"),f):(t.enter("chunkString",{contentType:"string"}),m(x))}function m(x){return x===null||x===91||x===93||ht(x)||o++>999?(t.exit("chunkString"),f(x)):(t.consume(x),c||(c=!nn(x)),x===92?g:m)}function g(x){return x===91||x===92||x===93?(t.consume(x),o++,m):m(x)}}function h$(t,e,n,r,s,i){let a;return o;function o(g){return g===34||g===39||g===40?(t.enter(r),t.enter(s),t.consume(g),t.exit(s),a=g===40?41:g,c):n(g)}function c(g){return g===a?(t.enter(s),t.consume(g),t.exit(s),t.exit(r),e):(t.enter(i),h(g))}function h(g){return g===a?(t.exit(i),c(a)):g===null?n(g):ht(g)?(t.enter("lineEnding"),t.consume(g),t.exit("lineEnding"),Zt(t,h,"linePrefix")):(t.enter("chunkString",{contentType:"string"}),f(g))}function f(g){return g===a||g===null||ht(g)?(t.exit("chunkString"),h(g)):(t.consume(g),g===92?m:f)}function m(g){return g===a||g===92?(t.consume(g),f):f(g)}}function Im(t,e){let n;return r;function r(s){return ht(s)?(t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),n=!0,r):nn(s)?Zt(t,r,n?"linePrefix":"lineSuffix")(s):e(s)}}const Rpe={name:"definition",tokenize:zpe},Dpe={partial:!0,tokenize:Ppe};function zpe(t,e,n){const r=this;let s;return i;function i(x){return t.enter("definition"),a(x)}function a(x){return d$.call(r,t,o,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(x)}function o(x){return s=Ta(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),x===58?(t.enter("definitionMarker"),t.consume(x),t.exit("definitionMarker"),c):n(x)}function c(x){return Yn(x)?Im(t,h)(x):h(x)}function h(x){return u$(t,f,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(x)}function f(x){return t.attempt(Dpe,m,m)(x)}function m(x){return nn(x)?Zt(t,g,"whitespace")(x):g(x)}function g(x){return x===null||ht(x)?(t.exit("definition"),r.parser.defined.push(s),e(x)):n(x)}}function Ppe(t,e,n){return r;function r(o){return Yn(o)?Im(t,s)(o):n(o)}function s(o){return h$(t,i,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(o)}function i(o){return nn(o)?Zt(t,a,"whitespace")(o):a(o)}function a(o){return o===null||ht(o)?e(o):n(o)}}const Lpe={name:"hardBreakEscape",tokenize:Ipe};function Ipe(t,e,n){return r;function r(i){return t.enter("hardBreakEscape"),t.consume(i),s}function s(i){return ht(i)?(t.exit("hardBreakEscape"),e(i)):n(i)}}const Bpe={name:"headingAtx",resolve:qpe,tokenize:Fpe};function qpe(t,e){let n=t.length-2,r=3,s,i;return t[r][1].type==="whitespace"&&(r+=2),n-2>r&&t[n][1].type==="whitespace"&&(n-=2),t[n][1].type==="atxHeadingSequence"&&(r===n-1||n-4>r&&t[n-2][1].type==="whitespace")&&(n-=r+1===n?2:4),n>r&&(s={type:"atxHeadingText",start:t[r][1].start,end:t[n][1].end},i={type:"chunkText",start:t[r][1].start,end:t[n][1].end,contentType:"text"},Ai(t,r,n-r+1,[["enter",s,e],["enter",i,e],["exit",i,e],["exit",s,e]])),t}function Fpe(t,e,n){let r=0;return s;function s(f){return t.enter("atxHeading"),i(f)}function i(f){return t.enter("atxHeadingSequence"),a(f)}function a(f){return f===35&&r++<6?(t.consume(f),a):f===null||Yn(f)?(t.exit("atxHeadingSequence"),o(f)):n(f)}function o(f){return f===35?(t.enter("atxHeadingSequence"),c(f)):f===null||ht(f)?(t.exit("atxHeading"),e(f)):nn(f)?Zt(t,o,"whitespace")(f):(t.enter("atxHeadingText"),h(f))}function c(f){return f===35?(t.consume(f),c):(t.exit("atxHeadingSequence"),o(f))}function h(f){return f===null||f===35||Yn(f)?(t.exit("atxHeadingText"),o(f)):(t.consume(f),h)}}const $pe=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],k_=["pre","script","style","textarea"],Qpe={concrete:!0,name:"htmlFlow",resolveTo:Upe,tokenize:Wpe},Hpe={partial:!0,tokenize:Xpe},Vpe={partial:!0,tokenize:Gpe};function Upe(t){let e=t.length;for(;e--&&!(t[e][0]==="enter"&&t[e][1].type==="htmlFlow"););return e>1&&t[e-2][1].type==="linePrefix"&&(t[e][1].start=t[e-2][1].start,t[e+1][1].start=t[e-2][1].start,t.splice(e-2,2)),t}function Wpe(t,e,n){const r=this;let s,i,a,o,c;return h;function h(F){return f(F)}function f(F){return t.enter("htmlFlow"),t.enter("htmlFlowData"),t.consume(F),m}function m(F){return F===33?(t.consume(F),g):F===47?(t.consume(F),i=!0,w):F===63?(t.consume(F),s=3,r.interrupt?e:R):zs(F)?(t.consume(F),a=String.fromCharCode(F),S):n(F)}function g(F){return F===45?(t.consume(F),s=2,x):F===91?(t.consume(F),s=5,o=0,y):zs(F)?(t.consume(F),s=4,r.interrupt?e:R):n(F)}function x(F){return F===45?(t.consume(F),r.interrupt?e:R):n(F)}function y(F){const V="CDATA[";return F===V.charCodeAt(o++)?(t.consume(F),o===V.length?r.interrupt?e:U:y):n(F)}function w(F){return zs(F)?(t.consume(F),a=String.fromCharCode(F),S):n(F)}function S(F){if(F===null||F===47||F===62||Yn(F)){const V=F===47,te=a.toLowerCase();return!V&&!i&&k_.includes(te)?(s=1,r.interrupt?e(F):U(F)):$pe.includes(a.toLowerCase())?(s=6,V?(t.consume(F),k):r.interrupt?e(F):U(F)):(s=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(F):i?N(F):C(F))}return F===45||Ts(F)?(t.consume(F),a+=String.fromCharCode(F),S):n(F)}function k(F){return F===62?(t.consume(F),r.interrupt?e:U):n(F)}function N(F){return nn(F)?(t.consume(F),N):I(F)}function C(F){return F===47?(t.consume(F),I):F===58||F===95||zs(F)?(t.consume(F),T):nn(F)?(t.consume(F),C):I(F)}function T(F){return F===45||F===46||F===58||F===95||Ts(F)?(t.consume(F),T):_(F)}function _(F){return F===61?(t.consume(F),E):nn(F)?(t.consume(F),_):C(F)}function E(F){return F===null||F===60||F===61||F===62||F===96?n(F):F===34||F===39?(t.consume(F),c=F,M):nn(F)?(t.consume(F),E):L(F)}function M(F){return F===c?(t.consume(F),c=null,P):F===null||ht(F)?n(F):(t.consume(F),M)}function L(F){return F===null||F===34||F===39||F===47||F===60||F===61||F===62||F===96||Yn(F)?_(F):(t.consume(F),L)}function P(F){return F===47||F===62||nn(F)?C(F):n(F)}function I(F){return F===62?(t.consume(F),Q):n(F)}function Q(F){return F===null||ht(F)?U(F):nn(F)?(t.consume(F),Q):n(F)}function U(F){return F===45&&s===2?(t.consume(F),B):F===60&&s===1?(t.consume(F),X):F===62&&s===4?(t.consume(F),se):F===63&&s===3?(t.consume(F),R):F===93&&s===5?(t.consume(F),G):ht(F)&&(s===6||s===7)?(t.exit("htmlFlowData"),t.check(Hpe,W,ee)(F)):F===null||ht(F)?(t.exit("htmlFlowData"),ee(F)):(t.consume(F),U)}function ee(F){return t.check(Vpe,z,W)(F)}function z(F){return t.enter("lineEnding"),t.consume(F),t.exit("lineEnding"),H}function H(F){return F===null||ht(F)?ee(F):(t.enter("htmlFlowData"),U(F))}function B(F){return F===45?(t.consume(F),R):U(F)}function X(F){return F===47?(t.consume(F),a="",J):U(F)}function J(F){if(F===62){const V=a.toLowerCase();return k_.includes(V)?(t.consume(F),se):U(F)}return zs(F)&&a.length<8?(t.consume(F),a+=String.fromCharCode(F),J):U(F)}function G(F){return F===93?(t.consume(F),R):U(F)}function R(F){return F===62?(t.consume(F),se):F===45&&s===2?(t.consume(F),R):U(F)}function se(F){return F===null||ht(F)?(t.exit("htmlFlowData"),W(F)):(t.consume(F),se)}function W(F){return t.exit("htmlFlow"),e(F)}}function Gpe(t,e,n){const r=this;return s;function s(a){return ht(a)?(t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),i):n(a)}function i(a){return r.parser.lazy[r.now().line]?n(a):e(a)}}function Xpe(t,e,n){return r;function r(s){return t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),t.attempt(up,e,n)}}const Ype={name:"htmlText",tokenize:Kpe};function Kpe(t,e,n){const r=this;let s,i,a;return o;function o(R){return t.enter("htmlText"),t.enter("htmlTextData"),t.consume(R),c}function c(R){return R===33?(t.consume(R),h):R===47?(t.consume(R),_):R===63?(t.consume(R),C):zs(R)?(t.consume(R),L):n(R)}function h(R){return R===45?(t.consume(R),f):R===91?(t.consume(R),i=0,y):zs(R)?(t.consume(R),N):n(R)}function f(R){return R===45?(t.consume(R),x):n(R)}function m(R){return R===null?n(R):R===45?(t.consume(R),g):ht(R)?(a=m,X(R)):(t.consume(R),m)}function g(R){return R===45?(t.consume(R),x):m(R)}function x(R){return R===62?B(R):R===45?g(R):m(R)}function y(R){const se="CDATA[";return R===se.charCodeAt(i++)?(t.consume(R),i===se.length?w:y):n(R)}function w(R){return R===null?n(R):R===93?(t.consume(R),S):ht(R)?(a=w,X(R)):(t.consume(R),w)}function S(R){return R===93?(t.consume(R),k):w(R)}function k(R){return R===62?B(R):R===93?(t.consume(R),k):w(R)}function N(R){return R===null||R===62?B(R):ht(R)?(a=N,X(R)):(t.consume(R),N)}function C(R){return R===null?n(R):R===63?(t.consume(R),T):ht(R)?(a=C,X(R)):(t.consume(R),C)}function T(R){return R===62?B(R):C(R)}function _(R){return zs(R)?(t.consume(R),E):n(R)}function E(R){return R===45||Ts(R)?(t.consume(R),E):M(R)}function M(R){return ht(R)?(a=M,X(R)):nn(R)?(t.consume(R),M):B(R)}function L(R){return R===45||Ts(R)?(t.consume(R),L):R===47||R===62||Yn(R)?P(R):n(R)}function P(R){return R===47?(t.consume(R),B):R===58||R===95||zs(R)?(t.consume(R),I):ht(R)?(a=P,X(R)):nn(R)?(t.consume(R),P):B(R)}function I(R){return R===45||R===46||R===58||R===95||Ts(R)?(t.consume(R),I):Q(R)}function Q(R){return R===61?(t.consume(R),U):ht(R)?(a=Q,X(R)):nn(R)?(t.consume(R),Q):P(R)}function U(R){return R===null||R===60||R===61||R===62||R===96?n(R):R===34||R===39?(t.consume(R),s=R,ee):ht(R)?(a=U,X(R)):nn(R)?(t.consume(R),U):(t.consume(R),z)}function ee(R){return R===s?(t.consume(R),s=void 0,H):R===null?n(R):ht(R)?(a=ee,X(R)):(t.consume(R),ee)}function z(R){return R===null||R===34||R===39||R===60||R===61||R===96?n(R):R===47||R===62||Yn(R)?P(R):(t.consume(R),z)}function H(R){return R===47||R===62||Yn(R)?P(R):n(R)}function B(R){return R===62?(t.consume(R),t.exit("htmlTextData"),t.exit("htmlText"),e):n(R)}function X(R){return t.exit("htmlTextData"),t.enter("lineEnding"),t.consume(R),t.exit("lineEnding"),J}function J(R){return nn(R)?Zt(t,G,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(R):G(R)}function G(R){return t.enter("htmlTextData"),a(R)}}const Rj={name:"labelEnd",resolveAll:tge,resolveTo:nge,tokenize:rge},Zpe={tokenize:sge},Jpe={tokenize:ige},ege={tokenize:age};function tge(t){let e=-1;const n=[];for(;++e=3&&(h===null||ht(h))?(t.exit("thematicBreak"),e(h)):n(h)}function c(h){return h===s?(t.consume(h),r++,c):(t.exit("thematicBreakSequence"),nn(h)?Zt(t,o,"whitespace")(h):o(h))}}const Ks={continuation:{tokenize:gge},exit:vge,name:"list",tokenize:pge},fge={partial:!0,tokenize:yge},mge={partial:!0,tokenize:xge};function pge(t,e,n){const r=this,s=r.events[r.events.length-1];let i=s&&s[1].type==="linePrefix"?s[2].sliceSerialize(s[1],!0).length:0,a=0;return o;function o(x){const y=r.containerState.type||(x===42||x===43||x===45?"listUnordered":"listOrdered");if(y==="listUnordered"?!r.containerState.marker||x===r.containerState.marker:rk(x)){if(r.containerState.type||(r.containerState.type=y,t.enter(y,{_container:!0})),y==="listUnordered")return t.enter("listItemPrefix"),x===42||x===45?t.check(x1,n,h)(x):h(x);if(!r.interrupt||x===49)return t.enter("listItemPrefix"),t.enter("listItemValue"),c(x)}return n(x)}function c(x){return rk(x)&&++a<10?(t.consume(x),c):(!r.interrupt||a<2)&&(r.containerState.marker?x===r.containerState.marker:x===41||x===46)?(t.exit("listItemValue"),h(x)):n(x)}function h(x){return t.enter("listItemMarker"),t.consume(x),t.exit("listItemMarker"),r.containerState.marker=r.containerState.marker||x,t.check(up,r.interrupt?n:f,t.attempt(fge,g,m))}function f(x){return r.containerState.initialBlankLine=!0,i++,g(x)}function m(x){return nn(x)?(t.enter("listItemPrefixWhitespace"),t.consume(x),t.exit("listItemPrefixWhitespace"),g):n(x)}function g(x){return r.containerState.size=i+r.sliceSerialize(t.exit("listItemPrefix"),!0).length,e(x)}}function gge(t,e,n){const r=this;return r.containerState._closeFlow=void 0,t.check(up,s,i);function s(o){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,Zt(t,e,"listItemIndent",r.containerState.size+1)(o)}function i(o){return r.containerState.furtherBlankLines||!nn(o)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,a(o)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,t.attempt(mge,e,a)(o))}function a(o){return r.containerState._closeFlow=!0,r.interrupt=void 0,Zt(t,t.attempt(Ks,e,n),"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(o)}}function xge(t,e,n){const r=this;return Zt(t,s,"listItemIndent",r.containerState.size+1);function s(i){const a=r.events[r.events.length-1];return a&&a[1].type==="listItemIndent"&&a[2].sliceSerialize(a[1],!0).length===r.containerState.size?e(i):n(i)}}function vge(t){t.exit(this.containerState.type)}function yge(t,e,n){const r=this;return Zt(t,s,"listItemPrefixWhitespace",r.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function s(i){const a=r.events[r.events.length-1];return!nn(i)&&a&&a[1].type==="listItemPrefixWhitespace"?e(i):n(i)}}const j_={name:"setextUnderline",resolveTo:bge,tokenize:wge};function bge(t,e){let n=t.length,r,s,i;for(;n--;)if(t[n][0]==="enter"){if(t[n][1].type==="content"){r=n;break}t[n][1].type==="paragraph"&&(s=n)}else t[n][1].type==="content"&&t.splice(n,1),!i&&t[n][1].type==="definition"&&(i=n);const a={type:"setextHeading",start:{...t[r][1].start},end:{...t[t.length-1][1].end}};return t[s][1].type="setextHeadingText",i?(t.splice(s,0,["enter",a,e]),t.splice(i+1,0,["exit",t[r][1],e]),t[r][1].end={...t[i][1].end}):t[r][1]=a,t.push(["exit",a,e]),t}function wge(t,e,n){const r=this;let s;return i;function i(h){let f=r.events.length,m;for(;f--;)if(r.events[f][1].type!=="lineEnding"&&r.events[f][1].type!=="linePrefix"&&r.events[f][1].type!=="content"){m=r.events[f][1].type==="paragraph";break}return!r.parser.lazy[r.now().line]&&(r.interrupt||m)?(t.enter("setextHeadingLine"),s=h,a(h)):n(h)}function a(h){return t.enter("setextHeadingLineSequence"),o(h)}function o(h){return h===s?(t.consume(h),o):(t.exit("setextHeadingLineSequence"),nn(h)?Zt(t,c,"lineSuffix")(h):c(h))}function c(h){return h===null||ht(h)?(t.exit("setextHeadingLine"),e(h)):n(h)}}const Sge={tokenize:kge};function kge(t){const e=this,n=t.attempt(up,r,t.attempt(this.parser.constructs.flowInitial,s,Zt(t,t.attempt(this.parser.constructs.flow,s,t.attempt(Tpe,s)),"linePrefix")));return n;function r(i){if(i===null){t.consume(i);return}return t.enter("lineEndingBlank"),t.consume(i),t.exit("lineEndingBlank"),e.currentConstruct=void 0,n}function s(i){if(i===null){t.consume(i);return}return t.enter("lineEnding"),t.consume(i),t.exit("lineEnding"),e.currentConstruct=void 0,n}}const jge={resolveAll:m$()},Oge=f$("string"),Nge=f$("text");function f$(t){return{resolveAll:m$(t==="text"?Cge:void 0),tokenize:e};function e(n){const r=this,s=this.parser.constructs[t],i=n.attempt(s,a,o);return a;function a(f){return h(f)?i(f):o(f)}function o(f){if(f===null){n.consume(f);return}return n.enter("data"),n.consume(f),c}function c(f){return h(f)?(n.exit("data"),i(f)):(n.consume(f),c)}function h(f){if(f===null)return!0;const m=s[f];let g=-1;if(m)for(;++g-1){const o=a[0];typeof o=="string"?a[0]=o.slice(r):a.shift()}i>0&&a.push(t[s].slice(0,i))}return a}function qge(t,e){let n=-1;const r=[];let s;for(;++n0){const Tt=Ge.tokenStack[Ge.tokenStack.length-1];(Tt[1]||N_).call(Ge,void 0,Tt[0])}for(Le.position={start:Jo(Ce.length>0?Ce[0][1].start:{line:1,column:1,offset:0}),end:Jo(Ce.length>0?Ce[Ce.length-2][1].end:{line:1,column:1,offset:0})},jt=-1;++jt1?"-"+o:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(a)}]};t.patch(e,c);const h={type:"element",tagName:"sup",properties:{},children:[c]};return t.patch(e,h),t.applyData(e,h)}function rxe(t,e){const n={type:"element",tagName:"h"+e.depth,properties:{},children:t.all(e)};return t.patch(e,n),t.applyData(e,n)}function sxe(t,e){if(t.options.allowDangerousHtml){const n={type:"raw",value:e.value};return t.patch(e,n),t.applyData(e,n)}}function x$(t,e){const n=e.referenceType;let r="]";if(n==="collapsed"?r+="[]":n==="full"&&(r+="["+(e.label||e.identifier)+"]"),e.type==="imageReference")return[{type:"text",value:"!["+e.alt+r}];const s=t.all(e),i=s[0];i&&i.type==="text"?i.value="["+i.value:s.unshift({type:"text",value:"["});const a=s[s.length-1];return a&&a.type==="text"?a.value+=r:s.push({type:"text",value:r}),s}function ixe(t,e){const n=String(e.identifier).toUpperCase(),r=t.definitionById.get(n);if(!r)return x$(t,e);const s={src:Zh(r.url||""),alt:e.alt};r.title!==null&&r.title!==void 0&&(s.title=r.title);const i={type:"element",tagName:"img",properties:s,children:[]};return t.patch(e,i),t.applyData(e,i)}function axe(t,e){const n={src:Zh(e.url)};e.alt!==null&&e.alt!==void 0&&(n.alt=e.alt),e.title!==null&&e.title!==void 0&&(n.title=e.title);const r={type:"element",tagName:"img",properties:n,children:[]};return t.patch(e,r),t.applyData(e,r)}function lxe(t,e){const n={type:"text",value:e.value.replace(/\r?\n|\r/g," ")};t.patch(e,n);const r={type:"element",tagName:"code",properties:{},children:[n]};return t.patch(e,r),t.applyData(e,r)}function oxe(t,e){const n=String(e.identifier).toUpperCase(),r=t.definitionById.get(n);if(!r)return x$(t,e);const s={href:Zh(r.url||"")};r.title!==null&&r.title!==void 0&&(s.title=r.title);const i={type:"element",tagName:"a",properties:s,children:t.all(e)};return t.patch(e,i),t.applyData(e,i)}function cxe(t,e){const n={href:Zh(e.url)};e.title!==null&&e.title!==void 0&&(n.title=e.title);const r={type:"element",tagName:"a",properties:n,children:t.all(e)};return t.patch(e,r),t.applyData(e,r)}function uxe(t,e,n){const r=t.all(e),s=n?dxe(n):v$(e),i={},a=[];if(typeof e.checked=="boolean"){const f=r[0];let m;f&&f.type==="element"&&f.tagName==="p"?m=f:(m={type:"element",tagName:"p",properties:{},children:[]},r.unshift(m)),m.children.length>0&&m.children.unshift({type:"text",value:" "}),m.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:e.checked,disabled:!0},children:[]}),i.className=["task-list-item"]}let o=-1;for(;++o1}function hxe(t,e){const n={},r=t.all(e);let s=-1;for(typeof e.start=="number"&&e.start!==1&&(n.start=e.start);++s0){const a={type:"element",tagName:"tbody",properties:{},children:t.wrap(n,!0)},o=Cj(e.children[1]),c=KF(e.children[e.children.length-1]);o&&c&&(a.position={start:o,end:c}),s.push(a)}const i={type:"element",tagName:"table",properties:{},children:t.wrap(s,!0)};return t.patch(e,i),t.applyData(e,i)}function xxe(t,e,n){const r=n?n.children:void 0,i=(r?r.indexOf(e):1)===0?"th":"td",a=n&&n.type==="table"?n.align:void 0,o=a?a.length:e.children.length;let c=-1;const h=[];for(;++c0,!0),r[0]),s=r.index+r[0].length,r=n.exec(e);return i.push(E_(e.slice(s),s>0,!1)),i.join("")}function E_(t,e,n){let r=0,s=t.length;if(e){let i=t.codePointAt(r);for(;i===C_||i===T_;)r++,i=t.codePointAt(r)}if(n){let i=t.codePointAt(s-1);for(;i===C_||i===T_;)s--,i=t.codePointAt(s-1)}return s>r?t.slice(r,s):""}function bxe(t,e){const n={type:"text",value:yxe(String(e.value))};return t.patch(e,n),t.applyData(e,n)}function wxe(t,e){const n={type:"element",tagName:"hr",properties:{},children:[]};return t.patch(e,n),t.applyData(e,n)}const Sxe={blockquote:Kge,break:Zge,code:Jge,delete:exe,emphasis:txe,footnoteReference:nxe,heading:rxe,html:sxe,imageReference:ixe,image:axe,inlineCode:lxe,linkReference:oxe,link:cxe,listItem:uxe,list:hxe,paragraph:fxe,root:mxe,strong:pxe,table:gxe,tableCell:vxe,tableRow:xxe,text:bxe,thematicBreak:wxe,toml:Ox,yaml:Ox,definition:Ox,footnoteDefinition:Ox};function Ox(){}const y$=-1,ky=0,Bm=1,lv=2,Dj=3,zj=4,Pj=5,Lj=6,b$=7,w$=8,__=typeof self=="object"?self:globalThis,kxe=(t,e)=>{const n=(s,i)=>(t.set(i,s),s),r=s=>{if(t.has(s))return t.get(s);const[i,a]=e[s];switch(i){case ky:case y$:return n(a,s);case Bm:{const o=n([],s);for(const c of a)o.push(r(c));return o}case lv:{const o=n({},s);for(const[c,h]of a)o[r(c)]=r(h);return o}case Dj:return n(new Date(a),s);case zj:{const{source:o,flags:c}=a;return n(new RegExp(o,c),s)}case Pj:{const o=n(new Map,s);for(const[c,h]of a)o.set(r(c),r(h));return o}case Lj:{const o=n(new Set,s);for(const c of a)o.add(r(c));return o}case b$:{const{name:o,message:c}=a;return n(new __[o](c),s)}case w$:return n(BigInt(a),s);case"BigInt":return n(Object(BigInt(a)),s);case"ArrayBuffer":return n(new Uint8Array(a).buffer,a);case"DataView":{const{buffer:o}=new Uint8Array(a);return n(new DataView(o),a)}}return n(new __[i](a),s)};return r},M_=t=>kxe(new Map,t)(0),_d="",{toString:jxe}={},{keys:Oxe}=Object,lm=t=>{const e=typeof t;if(e!=="object"||!t)return[ky,e];const n=jxe.call(t).slice(8,-1);switch(n){case"Array":return[Bm,_d];case"Object":return[lv,_d];case"Date":return[Dj,_d];case"RegExp":return[zj,_d];case"Map":return[Pj,_d];case"Set":return[Lj,_d];case"DataView":return[Bm,n]}return n.includes("Array")?[Bm,n]:n.includes("Error")?[b$,n]:[lv,n]},Nx=([t,e])=>t===ky&&(e==="function"||e==="symbol"),Nxe=(t,e,n,r)=>{const s=(a,o)=>{const c=r.push(a)-1;return n.set(o,c),c},i=a=>{if(n.has(a))return n.get(a);let[o,c]=lm(a);switch(o){case ky:{let f=a;switch(c){case"bigint":o=w$,f=a.toString();break;case"function":case"symbol":if(t)throw new TypeError("unable to serialize "+c);f=null;break;case"undefined":return s([y$],a)}return s([o,f],a)}case Bm:{if(c){let g=a;return c==="DataView"?g=new Uint8Array(a.buffer):c==="ArrayBuffer"&&(g=new Uint8Array(a)),s([c,[...g]],a)}const f=[],m=s([o,f],a);for(const g of a)f.push(i(g));return m}case lv:{if(c)switch(c){case"BigInt":return s([c,a.toString()],a);case"Boolean":case"Number":case"String":return s([c,a.valueOf()],a)}if(e&&"toJSON"in a)return i(a.toJSON());const f=[],m=s([o,f],a);for(const g of Oxe(a))(t||!Nx(lm(a[g])))&&f.push([i(g),i(a[g])]);return m}case Dj:return s([o,a.toISOString()],a);case zj:{const{source:f,flags:m}=a;return s([o,{source:f,flags:m}],a)}case Pj:{const f=[],m=s([o,f],a);for(const[g,x]of a)(t||!(Nx(lm(g))||Nx(lm(x))))&&f.push([i(g),i(x)]);return m}case Lj:{const f=[],m=s([o,f],a);for(const g of a)(t||!Nx(lm(g)))&&f.push(i(g));return m}}const{message:h}=a;return s([o,{name:c,message:h}],a)};return i},A_=(t,{json:e,lossy:n}={})=>{const r=[];return Nxe(!(e||n),!!e,new Map,r)(t),r},ov=typeof structuredClone=="function"?(t,e)=>e&&("json"in e||"lossy"in e)?M_(A_(t,e)):structuredClone(t):(t,e)=>M_(A_(t,e));function Cxe(t,e){const n=[{type:"text",value:"↩"}];return e>1&&n.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(e)}]}),n}function Txe(t,e){return"Back to reference "+(t+1)+(e>1?"-"+e:"")}function Exe(t){const e=typeof t.options.clobberPrefix=="string"?t.options.clobberPrefix:"user-content-",n=t.options.footnoteBackContent||Cxe,r=t.options.footnoteBackLabel||Txe,s=t.options.footnoteLabel||"Footnotes",i=t.options.footnoteLabelTagName||"h2",a=t.options.footnoteLabelProperties||{className:["sr-only"]},o=[];let c=-1;for(;++c0&&y.push({type:"text",value:" "});let N=typeof n=="string"?n:n(c,x);typeof N=="string"&&(N={type:"text",value:N}),y.push({type:"element",tagName:"a",properties:{href:"#"+e+"fnref-"+g+(x>1?"-"+x:""),dataFootnoteBackref:"",ariaLabel:typeof r=="string"?r:r(c,x),className:["data-footnote-backref"]},children:Array.isArray(N)?N:[N]})}const S=f[f.length-1];if(S&&S.type==="element"&&S.tagName==="p"){const N=S.children[S.children.length-1];N&&N.type==="text"?N.value+=" ":S.children.push({type:"text",value:" "}),S.children.push(...y)}else f.push(...y);const k={type:"element",tagName:"li",properties:{id:e+"fn-"+g},children:t.wrap(f,!0)};t.patch(h,k),o.push(k)}if(o.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:i,properties:{...ov(a),id:"footnote-label"},children:[{type:"text",value:s}]},{type:"text",value:` -`},{type:"element",tagName:"ol",properties:{},children:t.wrap(o,!0)},{type:"text",value:` -`}]}}const dp=(function(t){if(t==null)return Rxe;if(typeof t=="function")return jy(t);if(typeof t=="object")return Array.isArray(t)?_xe(t):Mxe(t);if(typeof t=="string")return Axe(t);throw new Error("Expected function, string, or object as test")});function _xe(t){const e=[];let n=-1;for(;++n":""))+")"})}return g;function g(){let x=S$,y,w,S;if((!e||i(c,h,f[f.length-1]||void 0))&&(x=Pxe(n(c,f)),x[0]===ik))return x;if("children"in c&&c.children){const k=c;if(k.children&&x[0]!==k$)for(w=(r?k.children.length:-1)+a,S=f.concat(k);w>-1&&w0&&n.push({type:"text",value:` -`}),n}function R_(t){let e=0,n=t.charCodeAt(e);for(;n===9||n===32;)e++,n=t.charCodeAt(e);return t.slice(e)}function D_(t,e){const n=Ixe(t,e),r=n.one(t,void 0),s=Exe(n),i=Array.isArray(r)?{type:"root",children:r}:r||{type:"root",children:[]};return s&&i.children.push({type:"text",value:` -`},s),i}function Qxe(t,e){return t&&"run"in t?async function(n,r){const s=D_(n,{file:r,...e});await t.run(s,r)}:function(n,r){return D_(n,{file:r,...t||e})}}function z_(t){if(t)throw t}var d4,P_;function Hxe(){if(P_)return d4;P_=1;var t=Object.prototype.hasOwnProperty,e=Object.prototype.toString,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,s=function(h){return typeof Array.isArray=="function"?Array.isArray(h):e.call(h)==="[object Array]"},i=function(h){if(!h||e.call(h)!=="[object Object]")return!1;var f=t.call(h,"constructor"),m=h.constructor&&h.constructor.prototype&&t.call(h.constructor.prototype,"isPrototypeOf");if(h.constructor&&!f&&!m)return!1;var g;for(g in h);return typeof g>"u"||t.call(h,g)},a=function(h,f){n&&f.name==="__proto__"?n(h,f.name,{enumerable:!0,configurable:!0,value:f.newValue,writable:!0}):h[f.name]=f.newValue},o=function(h,f){if(f==="__proto__")if(t.call(h,f)){if(r)return r(h,f).value}else return;return h[f]};return d4=function c(){var h,f,m,g,x,y,w=arguments[0],S=1,k=arguments.length,N=!1;for(typeof w=="boolean"&&(N=w,w=arguments[1]||{},S=2),(w==null||typeof w!="object"&&typeof w!="function")&&(w={});Sa.length;let c;o&&a.push(s);try{c=t.apply(this,a)}catch(h){const f=h;if(o&&n)throw f;return s(f)}o||(c&&c.then&&typeof c.then=="function"?c.then(i,s):c instanceof Error?s(c):i(c))}function s(a,...o){n||(n=!0,e(a,...o))}function i(a){s(null,a)}}const Xa={basename:Gxe,dirname:Xxe,extname:Yxe,join:Kxe,sep:"/"};function Gxe(t,e){if(e!==void 0&&typeof e!="string")throw new TypeError('"ext" argument must be a string');hp(t);let n=0,r=-1,s=t.length,i;if(e===void 0||e.length===0||e.length>t.length){for(;s--;)if(t.codePointAt(s)===47){if(i){n=s+1;break}}else r<0&&(i=!0,r=s+1);return r<0?"":t.slice(n,r)}if(e===t)return"";let a=-1,o=e.length-1;for(;s--;)if(t.codePointAt(s)===47){if(i){n=s+1;break}}else a<0&&(i=!0,a=s+1),o>-1&&(t.codePointAt(s)===e.codePointAt(o--)?o<0&&(r=s):(o=-1,r=a));return n===r?r=a:r<0&&(r=t.length),t.slice(n,r)}function Xxe(t){if(hp(t),t.length===0)return".";let e=-1,n=t.length,r;for(;--n;)if(t.codePointAt(n)===47){if(r){e=n;break}}else r||(r=!0);return e<0?t.codePointAt(0)===47?"/":".":e===1&&t.codePointAt(0)===47?"//":t.slice(0,e)}function Yxe(t){hp(t);let e=t.length,n=-1,r=0,s=-1,i=0,a;for(;e--;){const o=t.codePointAt(e);if(o===47){if(a){r=e+1;break}continue}n<0&&(a=!0,n=e+1),o===46?s<0?s=e:i!==1&&(i=1):s>-1&&(i=-1)}return s<0||n<0||i===0||i===1&&s===n-1&&s===r+1?"":t.slice(s,n)}function Kxe(...t){let e=-1,n;for(;++e0&&t.codePointAt(t.length-1)===47&&(n+="/"),e?"/"+n:n}function Jxe(t,e){let n="",r=0,s=-1,i=0,a=-1,o,c;for(;++a<=t.length;){if(a2){if(c=n.lastIndexOf("/"),c!==n.length-1){c<0?(n="",r=0):(n=n.slice(0,c),r=n.length-1-n.lastIndexOf("/")),s=a,i=0;continue}}else if(n.length>0){n="",r=0,s=a,i=0;continue}}e&&(n=n.length>0?n+"/..":"..",r=2)}else n.length>0?n+="/"+t.slice(s+1,a):n=t.slice(s+1,a),r=a-s-1;s=a,i=0}else o===46&&i>-1?i++:i=-1}return n}function hp(t){if(typeof t!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(t))}const e1e={cwd:t1e};function t1e(){return"/"}function ok(t){return!!(t!==null&&typeof t=="object"&&"href"in t&&t.href&&"protocol"in t&&t.protocol&&t.auth===void 0)}function n1e(t){if(typeof t=="string")t=new URL(t);else if(!ok(t)){const e=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+t+"`");throw e.code="ERR_INVALID_ARG_TYPE",e}if(t.protocol!=="file:"){const e=new TypeError("The URL must be of scheme file");throw e.code="ERR_INVALID_URL_SCHEME",e}return r1e(t)}function r1e(t){if(t.hostname!==""){const r=new TypeError('File URL host must be "localhost" or empty on darwin');throw r.code="ERR_INVALID_FILE_URL_HOST",r}const e=t.pathname;let n=-1;for(;++n0){let[x,...y]=f;const w=r[g][1];lk(w)&&lk(x)&&(x=h4(!0,w,x)),r[g]=[h,x,...y]}}}}const l1e=new qj().freeze();function g4(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `parser`")}function x4(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `compiler`")}function v4(t,e){if(e)throw new Error("Cannot call `"+t+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function I_(t){if(!lk(t)||typeof t.type!="string")throw new TypeError("Expected node, got `"+t+"`")}function B_(t,e,n){if(!n)throw new Error("`"+t+"` finished async. Use `"+e+"` instead")}function Cx(t){return o1e(t)?t:new j$(t)}function o1e(t){return!!(t&&typeof t=="object"&&"message"in t&&"messages"in t)}function c1e(t){return typeof t=="string"||u1e(t)}function u1e(t){return!!(t&&typeof t=="object"&&"byteLength"in t&&"byteOffset"in t)}const d1e="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",q_=[],F_={allowDangerousHtml:!0},h1e=/^(https?|ircs?|mailto|xmpp)$/i,f1e=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function m1e(t){const e=p1e(t),n=g1e(t);return x1e(e.runSync(e.parse(n),n),t)}function p1e(t){const e=t.rehypePlugins||q_,n=t.remarkPlugins||q_,r=t.remarkRehypeOptions?{...t.remarkRehypeOptions,...F_}:F_;return l1e().use(Yge).use(n).use(Qxe,r).use(e)}function g1e(t){const e=t.children||"",n=new j$;return typeof e=="string"&&(n.value=e),n}function x1e(t,e){const n=e.allowedElements,r=e.allowElement,s=e.components,i=e.disallowedElements,a=e.skipHtml,o=e.unwrapDisallowed,c=e.urlTransform||v1e;for(const f of f1e)Object.hasOwn(e,f.from)&&(""+f.from+(f.to?"use `"+f.to+"` instead":"remove it")+d1e+f.id,void 0);return Bj(t,h),R0e(t,{Fragment:l.Fragment,components:s,ignoreInvalidStyle:!0,jsx:l.jsx,jsxs:l.jsxs,passKeys:!0,passNode:!0});function h(f,m,g){if(f.type==="raw"&&g&&typeof m=="number")return a?g.children.splice(m,1):g.children[m]={type:"text",value:f.value},m;if(f.type==="element"){let x;for(x in o4)if(Object.hasOwn(o4,x)&&Object.hasOwn(f.properties,x)){const y=f.properties[x],w=o4[x];(w===null||w.includes(f.tagName))&&(f.properties[x]=c(String(y||""),x,f))}}if(f.type==="element"){let x=n?!n.includes(f.tagName):i?i.includes(f.tagName):!1;if(!x&&r&&typeof m=="number"&&(x=!r(f,m,g)),x&&g&&typeof m=="number")return o&&f.children?g.children.splice(m,1,...f.children):g.children.splice(m,1),m}}}function v1e(t){const e=t.indexOf(":"),n=t.indexOf("?"),r=t.indexOf("#"),s=t.indexOf("/");return e===-1||s!==-1&&e>s||n!==-1&&e>n||r!==-1&&e>r||h1e.test(t.slice(0,e))?t:""}function $_(t,e){const n=String(t);if(typeof e!="string")throw new TypeError("Expected character");let r=0,s=n.indexOf(e);for(;s!==-1;)r++,s=n.indexOf(e,s+e.length);return r}function y1e(t){if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function b1e(t,e,n){const s=dp((n||{}).ignore||[]),i=w1e(e);let a=-1;for(;++a0?{type:"text",value:E}:void 0),E===!1?g.lastIndex=T+1:(y!==T&&N.push({type:"text",value:h.value.slice(y,T)}),Array.isArray(E)?N.push(...E):E&&N.push(E),y=T+C[0].length,k=!0),!g.global)break;C=g.exec(h.value)}return k?(y?\]}]+$/.exec(t);if(!e)return[t,void 0];t=t.slice(0,e.index);let n=e[0],r=n.indexOf(")");const s=$_(t,"(");let i=$_(t,")");for(;r!==-1&&s>i;)t+=n.slice(0,r+1),n=n.slice(r+1),r=n.indexOf(")"),i++;return[t,n]}function O$(t,e){const n=t.input.charCodeAt(t.index-1);return(t.index===0||Iu(n)||wy(n))&&(!e||n!==47)}N$.peek=H1e;function P1e(){this.buffer()}function L1e(t){this.enter({type:"footnoteReference",identifier:"",label:""},t)}function I1e(){this.buffer()}function B1e(t){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},t)}function q1e(t){const e=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=Ta(this.sliceSerialize(t)).toLowerCase(),n.label=e}function F1e(t){this.exit(t)}function $1e(t){const e=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=Ta(this.sliceSerialize(t)).toLowerCase(),n.label=e}function Q1e(t){this.exit(t)}function H1e(){return"["}function N$(t,e,n,r){const s=n.createTracker(r);let i=s.move("[^");const a=n.enter("footnoteReference"),o=n.enter("reference");return i+=s.move(n.safe(n.associationId(t),{after:"]",before:i})),o(),a(),i+=s.move("]"),i}function V1e(){return{enter:{gfmFootnoteCallString:P1e,gfmFootnoteCall:L1e,gfmFootnoteDefinitionLabelString:I1e,gfmFootnoteDefinition:B1e},exit:{gfmFootnoteCallString:q1e,gfmFootnoteCall:F1e,gfmFootnoteDefinitionLabelString:$1e,gfmFootnoteDefinition:Q1e}}}function U1e(t){let e=!1;return t&&t.firstLineBlank&&(e=!0),{handlers:{footnoteDefinition:n,footnoteReference:N$},unsafe:[{character:"[",inConstruct:["label","phrasing","reference"]}]};function n(r,s,i,a){const o=i.createTracker(a);let c=o.move("[^");const h=i.enter("footnoteDefinition"),f=i.enter("label");return c+=o.move(i.safe(i.associationId(r),{before:c,after:"]"})),f(),c+=o.move("]:"),r.children&&r.children.length>0&&(o.shift(4),c+=o.move((e?` -`:" ")+i.indentLines(i.containerFlow(r,o.current()),e?C$:W1e))),h(),c}}function W1e(t,e,n){return e===0?t:C$(t,e,n)}function C$(t,e,n){return(n?"":" ")+t}const G1e=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"];T$.peek=J1e;function X1e(){return{canContainEols:["delete"],enter:{strikethrough:K1e},exit:{strikethrough:Z1e}}}function Y1e(){return{unsafe:[{character:"~",inConstruct:"phrasing",notInConstruct:G1e}],handlers:{delete:T$}}}function K1e(t){this.enter({type:"delete",children:[]},t)}function Z1e(t){this.exit(t)}function T$(t,e,n,r){const s=n.createTracker(r),i=n.enter("strikethrough");let a=s.move("~~");return a+=n.containerPhrasing(t,{...s.current(),before:a,after:"~"}),a+=s.move("~~"),i(),a}function J1e(){return"~"}function eve(t){return t.length}function tve(t,e){const n=e||{},r=(n.align||[]).concat(),s=n.stringLength||eve,i=[],a=[],o=[],c=[];let h=0,f=-1;for(;++fh&&(h=t[f].length);++kc[k])&&(c[k]=C)}w.push(N)}a[f]=w,o[f]=S}let m=-1;if(typeof r=="object"&&"length"in r)for(;++mc[m]&&(c[m]=N),x[m]=N),g[m]=C}a.splice(1,0,g),o.splice(1,0,x),f=-1;const y=[];for(;++f "),i.shift(2);const a=n.indentLines(n.containerFlow(t,i.current()),sve);return s(),a}function sve(t,e,n){return">"+(n?"":" ")+t}function ive(t,e){return H_(t,e.inConstruct,!0)&&!H_(t,e.notInConstruct,!1)}function H_(t,e,n){if(typeof e=="string"&&(e=[e]),!e||e.length===0)return n;let r=-1;for(;++ra&&(a=i):i=1,s=r+e.length,r=n.indexOf(e,s);return a}function ave(t,e){return!!(e.options.fences===!1&&t.value&&!t.lang&&/[^ \r\n]/.test(t.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(t.value))}function lve(t){const e=t.options.fence||"`";if(e!=="`"&&e!=="~")throw new Error("Cannot serialize code with `"+e+"` for `options.fence`, expected `` ` `` or `~`");return e}function ove(t,e,n,r){const s=lve(n),i=t.value||"",a=s==="`"?"GraveAccent":"Tilde";if(ave(t,n)){const m=n.enter("codeIndented"),g=n.indentLines(i,cve);return m(),g}const o=n.createTracker(r),c=s.repeat(Math.max(E$(i,s)+1,3)),h=n.enter("codeFenced");let f=o.move(c);if(t.lang){const m=n.enter(`codeFencedLang${a}`);f+=o.move(n.safe(t.lang,{before:f,after:" ",encode:["`"],...o.current()})),m()}if(t.lang&&t.meta){const m=n.enter(`codeFencedMeta${a}`);f+=o.move(" "),f+=o.move(n.safe(t.meta,{before:f,after:` -`,encode:["`"],...o.current()})),m()}return f+=o.move(` -`),i&&(f+=o.move(i+` -`)),f+=o.move(c),h(),f}function cve(t,e,n){return(n?"":" ")+t}function Fj(t){const e=t.options.quote||'"';if(e!=='"'&&e!=="'")throw new Error("Cannot serialize title with `"+e+"` for `options.quote`, expected `\"`, or `'`");return e}function uve(t,e,n,r){const s=Fj(n),i=s==='"'?"Quote":"Apostrophe",a=n.enter("definition");let o=n.enter("label");const c=n.createTracker(r);let h=c.move("[");return h+=c.move(n.safe(n.associationId(t),{before:h,after:"]",...c.current()})),h+=c.move("]: "),o(),!t.url||/[\0- \u007F]/.test(t.url)?(o=n.enter("destinationLiteral"),h+=c.move("<"),h+=c.move(n.safe(t.url,{before:h,after:">",...c.current()})),h+=c.move(">")):(o=n.enter("destinationRaw"),h+=c.move(n.safe(t.url,{before:h,after:t.title?" ":` -`,...c.current()}))),o(),t.title&&(o=n.enter(`title${i}`),h+=c.move(" "+s),h+=c.move(n.safe(t.title,{before:h,after:s,...c.current()})),h+=c.move(s),o()),a(),h}function dve(t){const e=t.options.emphasis||"*";if(e!=="*"&&e!=="_")throw new Error("Cannot serialize emphasis with `"+e+"` for `options.emphasis`, expected `*`, or `_`");return e}function w0(t){return"&#x"+t.toString(16).toUpperCase()+";"}function cv(t,e,n){const r=Ch(t),s=Ch(e);return r===void 0?s===void 0?n==="_"?{inside:!0,outside:!0}:{inside:!1,outside:!1}:s===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:r===1?s===void 0?{inside:!1,outside:!1}:s===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:s===void 0?{inside:!1,outside:!1}:s===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}_$.peek=hve;function _$(t,e,n,r){const s=dve(n),i=n.enter("emphasis"),a=n.createTracker(r),o=a.move(s);let c=a.move(n.containerPhrasing(t,{after:s,before:o,...a.current()}));const h=c.charCodeAt(0),f=cv(r.before.charCodeAt(r.before.length-1),h,s);f.inside&&(c=w0(h)+c.slice(1));const m=c.charCodeAt(c.length-1),g=cv(r.after.charCodeAt(0),m,s);g.inside&&(c=c.slice(0,-1)+w0(m));const x=a.move(s);return i(),n.attentionEncodeSurroundingInfo={after:g.outside,before:f.outside},o+c+x}function hve(t,e,n){return n.options.emphasis||"*"}function fve(t,e){let n=!1;return Bj(t,function(r){if("value"in r&&/\r?\n|\r/.test(r.value)||r.type==="break")return n=!0,ik}),!!((!t.depth||t.depth<3)&&Mj(t)&&(e.options.setext||n))}function mve(t,e,n,r){const s=Math.max(Math.min(6,t.depth||1),1),i=n.createTracker(r);if(fve(t,n)){const f=n.enter("headingSetext"),m=n.enter("phrasing"),g=n.containerPhrasing(t,{...i.current(),before:` -`,after:` -`});return m(),f(),g+` -`+(s===1?"=":"-").repeat(g.length-(Math.max(g.lastIndexOf("\r"),g.lastIndexOf(` -`))+1))}const a="#".repeat(s),o=n.enter("headingAtx"),c=n.enter("phrasing");i.move(a+" ");let h=n.containerPhrasing(t,{before:"# ",after:` -`,...i.current()});return/^[\t ]/.test(h)&&(h=w0(h.charCodeAt(0))+h.slice(1)),h=h?a+" "+h:a,n.options.closeAtx&&(h+=" "+a),c(),o(),h}M$.peek=pve;function M$(t){return t.value||""}function pve(){return"<"}A$.peek=gve;function A$(t,e,n,r){const s=Fj(n),i=s==='"'?"Quote":"Apostrophe",a=n.enter("image");let o=n.enter("label");const c=n.createTracker(r);let h=c.move("![");return h+=c.move(n.safe(t.alt,{before:h,after:"]",...c.current()})),h+=c.move("]("),o(),!t.url&&t.title||/[\0- \u007F]/.test(t.url)?(o=n.enter("destinationLiteral"),h+=c.move("<"),h+=c.move(n.safe(t.url,{before:h,after:">",...c.current()})),h+=c.move(">")):(o=n.enter("destinationRaw"),h+=c.move(n.safe(t.url,{before:h,after:t.title?" ":")",...c.current()}))),o(),t.title&&(o=n.enter(`title${i}`),h+=c.move(" "+s),h+=c.move(n.safe(t.title,{before:h,after:s,...c.current()})),h+=c.move(s),o()),h+=c.move(")"),a(),h}function gve(){return"!"}R$.peek=xve;function R$(t,e,n,r){const s=t.referenceType,i=n.enter("imageReference");let a=n.enter("label");const o=n.createTracker(r);let c=o.move("![");const h=n.safe(t.alt,{before:c,after:"]",...o.current()});c+=o.move(h+"]["),a();const f=n.stack;n.stack=[],a=n.enter("reference");const m=n.safe(n.associationId(t),{before:c,after:"]",...o.current()});return a(),n.stack=f,i(),s==="full"||!h||h!==m?c+=o.move(m+"]"):s==="shortcut"?c=c.slice(0,-1):c+=o.move("]"),c}function xve(){return"!"}D$.peek=vve;function D$(t,e,n){let r=t.value||"",s="`",i=-1;for(;new RegExp("(^|[^`])"+s+"([^`]|$)").test(r);)s+="`";for(/[^ \r\n]/.test(r)&&(/^[ \r\n]/.test(r)&&/[ \r\n]$/.test(r)||/^`|`$/.test(r))&&(r=" "+r+" ");++i\u007F]/.test(t.url))}P$.peek=yve;function P$(t,e,n,r){const s=Fj(n),i=s==='"'?"Quote":"Apostrophe",a=n.createTracker(r);let o,c;if(z$(t,n)){const f=n.stack;n.stack=[],o=n.enter("autolink");let m=a.move("<");return m+=a.move(n.containerPhrasing(t,{before:m,after:">",...a.current()})),m+=a.move(">"),o(),n.stack=f,m}o=n.enter("link"),c=n.enter("label");let h=a.move("[");return h+=a.move(n.containerPhrasing(t,{before:h,after:"](",...a.current()})),h+=a.move("]("),c(),!t.url&&t.title||/[\0- \u007F]/.test(t.url)?(c=n.enter("destinationLiteral"),h+=a.move("<"),h+=a.move(n.safe(t.url,{before:h,after:">",...a.current()})),h+=a.move(">")):(c=n.enter("destinationRaw"),h+=a.move(n.safe(t.url,{before:h,after:t.title?" ":")",...a.current()}))),c(),t.title&&(c=n.enter(`title${i}`),h+=a.move(" "+s),h+=a.move(n.safe(t.title,{before:h,after:s,...a.current()})),h+=a.move(s),c()),h+=a.move(")"),o(),h}function yve(t,e,n){return z$(t,n)?"<":"["}L$.peek=bve;function L$(t,e,n,r){const s=t.referenceType,i=n.enter("linkReference");let a=n.enter("label");const o=n.createTracker(r);let c=o.move("[");const h=n.containerPhrasing(t,{before:c,after:"]",...o.current()});c+=o.move(h+"]["),a();const f=n.stack;n.stack=[],a=n.enter("reference");const m=n.safe(n.associationId(t),{before:c,after:"]",...o.current()});return a(),n.stack=f,i(),s==="full"||!h||h!==m?c+=o.move(m+"]"):s==="shortcut"?c=c.slice(0,-1):c+=o.move("]"),c}function bve(){return"["}function $j(t){const e=t.options.bullet||"*";if(e!=="*"&&e!=="+"&&e!=="-")throw new Error("Cannot serialize items with `"+e+"` for `options.bullet`, expected `*`, `+`, or `-`");return e}function wve(t){const e=$j(t),n=t.options.bulletOther;if(!n)return e==="*"?"-":"*";if(n!=="*"&&n!=="+"&&n!=="-")throw new Error("Cannot serialize items with `"+n+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(n===e)throw new Error("Expected `bullet` (`"+e+"`) and `bulletOther` (`"+n+"`) to be different");return n}function Sve(t){const e=t.options.bulletOrdered||".";if(e!=="."&&e!==")")throw new Error("Cannot serialize items with `"+e+"` for `options.bulletOrdered`, expected `.` or `)`");return e}function I$(t){const e=t.options.rule||"*";if(e!=="*"&&e!=="-"&&e!=="_")throw new Error("Cannot serialize rules with `"+e+"` for `options.rule`, expected `*`, `-`, or `_`");return e}function kve(t,e,n,r){const s=n.enter("list"),i=n.bulletCurrent;let a=t.ordered?Sve(n):$j(n);const o=t.ordered?a==="."?")":".":wve(n);let c=e&&n.bulletLastUsed?a===n.bulletLastUsed:!1;if(!t.ordered){const f=t.children?t.children[0]:void 0;if((a==="*"||a==="-")&&f&&(!f.children||!f.children[0])&&n.stack[n.stack.length-1]==="list"&&n.stack[n.stack.length-2]==="listItem"&&n.stack[n.stack.length-3]==="list"&&n.stack[n.stack.length-4]==="listItem"&&n.indexStack[n.indexStack.length-1]===0&&n.indexStack[n.indexStack.length-2]===0&&n.indexStack[n.indexStack.length-3]===0&&(c=!0),I$(n)===a&&f){let m=-1;for(;++m-1?e.start:1)+(n.options.incrementListMarker===!1?0:e.children.indexOf(t))+i);let a=i.length+1;(s==="tab"||s==="mixed"&&(e&&e.type==="list"&&e.spread||t.spread))&&(a=Math.ceil(a/4)*4);const o=n.createTracker(r);o.move(i+" ".repeat(a-i.length)),o.shift(a);const c=n.enter("listItem"),h=n.indentLines(n.containerFlow(t,o.current()),f);return c(),h;function f(m,g,x){return g?(x?"":" ".repeat(a))+m:(x?i:i+" ".repeat(a-i.length))+m}}function Nve(t,e,n,r){const s=n.enter("paragraph"),i=n.enter("phrasing"),a=n.containerPhrasing(t,r);return i(),s(),a}const Cve=dp(["break","delete","emphasis","footnote","footnoteReference","image","imageReference","inlineCode","inlineMath","link","linkReference","mdxJsxTextElement","mdxTextExpression","strong","text","textDirective"]);function Tve(t,e,n,r){return(t.children.some(function(a){return Cve(a)})?n.containerPhrasing:n.containerFlow).call(n,t,r)}function Eve(t){const e=t.options.strong||"*";if(e!=="*"&&e!=="_")throw new Error("Cannot serialize strong with `"+e+"` for `options.strong`, expected `*`, or `_`");return e}B$.peek=_ve;function B$(t,e,n,r){const s=Eve(n),i=n.enter("strong"),a=n.createTracker(r),o=a.move(s+s);let c=a.move(n.containerPhrasing(t,{after:s,before:o,...a.current()}));const h=c.charCodeAt(0),f=cv(r.before.charCodeAt(r.before.length-1),h,s);f.inside&&(c=w0(h)+c.slice(1));const m=c.charCodeAt(c.length-1),g=cv(r.after.charCodeAt(0),m,s);g.inside&&(c=c.slice(0,-1)+w0(m));const x=a.move(s+s);return i(),n.attentionEncodeSurroundingInfo={after:g.outside,before:f.outside},o+c+x}function _ve(t,e,n){return n.options.strong||"*"}function Mve(t,e,n,r){return n.safe(t.value,r)}function Ave(t){const e=t.options.ruleRepetition||3;if(e<3)throw new Error("Cannot serialize rules with repetition `"+e+"` for `options.ruleRepetition`, expected `3` or more");return e}function Rve(t,e,n){const r=(I$(n)+(n.options.ruleSpaces?" ":"")).repeat(Ave(n));return n.options.ruleSpaces?r.slice(0,-1):r}const q$={blockquote:rve,break:V_,code:ove,definition:uve,emphasis:_$,hardBreak:V_,heading:mve,html:M$,image:A$,imageReference:R$,inlineCode:D$,link:P$,linkReference:L$,list:kve,listItem:Ove,paragraph:Nve,root:Tve,strong:B$,text:Mve,thematicBreak:Rve};function Dve(){return{enter:{table:zve,tableData:U_,tableHeader:U_,tableRow:Lve},exit:{codeText:Ive,table:Pve,tableData:S4,tableHeader:S4,tableRow:S4}}}function zve(t){const e=t._align;this.enter({type:"table",align:e.map(function(n){return n==="none"?null:n}),children:[]},t),this.data.inTable=!0}function Pve(t){this.exit(t),this.data.inTable=void 0}function Lve(t){this.enter({type:"tableRow",children:[]},t)}function S4(t){this.exit(t)}function U_(t){this.enter({type:"tableCell",children:[]},t)}function Ive(t){let e=this.resume();this.data.inTable&&(e=e.replace(/\\([\\|])/g,Bve));const n=this.stack[this.stack.length-1];n.type,n.value=e,this.exit(t)}function Bve(t,e){return e==="|"?e:t}function qve(t){const e=t||{},n=e.tableCellPadding,r=e.tablePipeAlign,s=e.stringLength,i=n?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:` -`,inConstruct:"tableCell"},{atBreak:!0,character:"|",after:"[ :-]"},{character:"|",inConstruct:"tableCell"},{atBreak:!0,character:":",after:"-"},{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{inlineCode:g,table:a,tableCell:c,tableRow:o}};function a(x,y,w,S){return h(f(x,w,S),x.align)}function o(x,y,w,S){const k=m(x,w,S),N=h([k]);return N.slice(0,N.indexOf(` -`))}function c(x,y,w,S){const k=w.enter("tableCell"),N=w.enter("phrasing"),C=w.containerPhrasing(x,{...S,before:i,after:i});return N(),k(),C}function h(x,y){return tve(x,{align:y,alignDelimiters:r,padding:n,stringLength:s})}function f(x,y,w){const S=x.children;let k=-1;const N=[],C=y.enter("table");for(;++k0&&!n&&(t[t.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}const sye={tokenize:hye,partial:!0};function iye(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:cye,continuation:{tokenize:uye},exit:dye}},text:{91:{name:"gfmFootnoteCall",tokenize:oye},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:aye,resolveTo:lye}}}}function aye(t,e,n){const r=this;let s=r.events.length;const i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let a;for(;s--;){const c=r.events[s][1];if(c.type==="labelImage"){a=c;break}if(c.type==="gfmFootnoteCall"||c.type==="labelLink"||c.type==="label"||c.type==="image"||c.type==="link")break}return o;function o(c){if(!a||!a._balanced)return n(c);const h=Ta(r.sliceSerialize({start:a.end,end:r.now()}));return h.codePointAt(0)!==94||!i.includes(h.slice(1))?n(c):(t.enter("gfmFootnoteCallLabelMarker"),t.consume(c),t.exit("gfmFootnoteCallLabelMarker"),e(c))}}function lye(t,e){let n=t.length;for(;n--;)if(t[n][1].type==="labelImage"&&t[n][0]==="enter"){t[n][1];break}t[n+1][1].type="data",t[n+3][1].type="gfmFootnoteCallLabelMarker";const r={type:"gfmFootnoteCall",start:Object.assign({},t[n+3][1].start),end:Object.assign({},t[t.length-1][1].end)},s={type:"gfmFootnoteCallMarker",start:Object.assign({},t[n+3][1].end),end:Object.assign({},t[n+3][1].end)};s.end.column++,s.end.offset++,s.end._bufferIndex++;const i={type:"gfmFootnoteCallString",start:Object.assign({},s.end),end:Object.assign({},t[t.length-1][1].start)},a={type:"chunkString",contentType:"string",start:Object.assign({},i.start),end:Object.assign({},i.end)},o=[t[n+1],t[n+2],["enter",r,e],t[n+3],t[n+4],["enter",s,e],["exit",s,e],["enter",i,e],["enter",a,e],["exit",a,e],["exit",i,e],t[t.length-2],t[t.length-1],["exit",r,e]];return t.splice(n,t.length-n+1,...o),t}function oye(t,e,n){const r=this,s=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let i=0,a;return o;function o(m){return t.enter("gfmFootnoteCall"),t.enter("gfmFootnoteCallLabelMarker"),t.consume(m),t.exit("gfmFootnoteCallLabelMarker"),c}function c(m){return m!==94?n(m):(t.enter("gfmFootnoteCallMarker"),t.consume(m),t.exit("gfmFootnoteCallMarker"),t.enter("gfmFootnoteCallString"),t.enter("chunkString").contentType="string",h)}function h(m){if(i>999||m===93&&!a||m===null||m===91||Yn(m))return n(m);if(m===93){t.exit("chunkString");const g=t.exit("gfmFootnoteCallString");return s.includes(Ta(r.sliceSerialize(g)))?(t.enter("gfmFootnoteCallLabelMarker"),t.consume(m),t.exit("gfmFootnoteCallLabelMarker"),t.exit("gfmFootnoteCall"),e):n(m)}return Yn(m)||(a=!0),i++,t.consume(m),m===92?f:h}function f(m){return m===91||m===92||m===93?(t.consume(m),i++,h):h(m)}}function cye(t,e,n){const r=this,s=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let i,a=0,o;return c;function c(y){return t.enter("gfmFootnoteDefinition")._container=!0,t.enter("gfmFootnoteDefinitionLabel"),t.enter("gfmFootnoteDefinitionLabelMarker"),t.consume(y),t.exit("gfmFootnoteDefinitionLabelMarker"),h}function h(y){return y===94?(t.enter("gfmFootnoteDefinitionMarker"),t.consume(y),t.exit("gfmFootnoteDefinitionMarker"),t.enter("gfmFootnoteDefinitionLabelString"),t.enter("chunkString").contentType="string",f):n(y)}function f(y){if(a>999||y===93&&!o||y===null||y===91||Yn(y))return n(y);if(y===93){t.exit("chunkString");const w=t.exit("gfmFootnoteDefinitionLabelString");return i=Ta(r.sliceSerialize(w)),t.enter("gfmFootnoteDefinitionLabelMarker"),t.consume(y),t.exit("gfmFootnoteDefinitionLabelMarker"),t.exit("gfmFootnoteDefinitionLabel"),g}return Yn(y)||(o=!0),a++,t.consume(y),y===92?m:f}function m(y){return y===91||y===92||y===93?(t.consume(y),a++,f):f(y)}function g(y){return y===58?(t.enter("definitionMarker"),t.consume(y),t.exit("definitionMarker"),s.includes(i)||s.push(i),Zt(t,x,"gfmFootnoteDefinitionWhitespace")):n(y)}function x(y){return e(y)}}function uye(t,e,n){return t.check(up,e,t.attempt(sye,e,n))}function dye(t){t.exit("gfmFootnoteDefinition")}function hye(t,e,n){const r=this;return Zt(t,s,"gfmFootnoteDefinitionIndent",5);function s(i){const a=r.events[r.events.length-1];return a&&a[1].type==="gfmFootnoteDefinitionIndent"&&a[2].sliceSerialize(a[1],!0).length===4?e(i):n(i)}}function fye(t){let n=(t||{}).singleTilde;const r={name:"strikethrough",tokenize:i,resolveAll:s};return n==null&&(n=!0),{text:{126:r},insideSpan:{null:[r]},attentionMarkers:{null:[126]}};function s(a,o){let c=-1;for(;++c1?c(y):(a.consume(y),m++,x);if(m<2&&!n)return c(y);const S=a.exit("strikethroughSequenceTemporary"),k=Ch(y);return S._open=!k||k===2&&!!w,S._close=!w||w===2&&!!k,o(y)}}}class mye{constructor(){this.map=[]}add(e,n,r){pye(this,e,n,r)}consume(e){if(this.map.sort(function(i,a){return i[0]-a[0]}),this.map.length===0)return;let n=this.map.length;const r=[];for(;n>0;)n-=1,r.push(e.slice(this.map[n][0]+this.map[n][1]),this.map[n][2]),e.length=this.map[n][0];r.push(e.slice()),e.length=0;let s=r.pop();for(;s;){for(const i of s)e.push(i);s=r.pop()}this.map.length=0}}function pye(t,e,n,r){let s=0;if(!(n===0&&r.length===0)){for(;s-1;){const z=r.events[Q][1].type;if(z==="lineEnding"||z==="linePrefix")Q--;else break}const U=Q>-1?r.events[Q][1].type:null,ee=U==="tableHead"||U==="tableRow"?E:c;return ee===E&&r.parser.lazy[r.now().line]?n(I):ee(I)}function c(I){return t.enter("tableHead"),t.enter("tableRow"),h(I)}function h(I){return I===124||(a=!0,i+=1),f(I)}function f(I){return I===null?n(I):ht(I)?i>1?(i=0,r.interrupt=!0,t.exit("tableRow"),t.enter("lineEnding"),t.consume(I),t.exit("lineEnding"),x):n(I):nn(I)?Zt(t,f,"whitespace")(I):(i+=1,a&&(a=!1,s+=1),I===124?(t.enter("tableCellDivider"),t.consume(I),t.exit("tableCellDivider"),a=!0,f):(t.enter("data"),m(I)))}function m(I){return I===null||I===124||Yn(I)?(t.exit("data"),f(I)):(t.consume(I),I===92?g:m)}function g(I){return I===92||I===124?(t.consume(I),m):m(I)}function x(I){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(I):(t.enter("tableDelimiterRow"),a=!1,nn(I)?Zt(t,y,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(I):y(I))}function y(I){return I===45||I===58?S(I):I===124?(a=!0,t.enter("tableCellDivider"),t.consume(I),t.exit("tableCellDivider"),w):_(I)}function w(I){return nn(I)?Zt(t,S,"whitespace")(I):S(I)}function S(I){return I===58?(i+=1,a=!0,t.enter("tableDelimiterMarker"),t.consume(I),t.exit("tableDelimiterMarker"),k):I===45?(i+=1,k(I)):I===null||ht(I)?T(I):_(I)}function k(I){return I===45?(t.enter("tableDelimiterFiller"),N(I)):_(I)}function N(I){return I===45?(t.consume(I),N):I===58?(a=!0,t.exit("tableDelimiterFiller"),t.enter("tableDelimiterMarker"),t.consume(I),t.exit("tableDelimiterMarker"),C):(t.exit("tableDelimiterFiller"),C(I))}function C(I){return nn(I)?Zt(t,T,"whitespace")(I):T(I)}function T(I){return I===124?y(I):I===null||ht(I)?!a||s!==i?_(I):(t.exit("tableDelimiterRow"),t.exit("tableHead"),e(I)):_(I)}function _(I){return n(I)}function E(I){return t.enter("tableRow"),M(I)}function M(I){return I===124?(t.enter("tableCellDivider"),t.consume(I),t.exit("tableCellDivider"),M):I===null||ht(I)?(t.exit("tableRow"),e(I)):nn(I)?Zt(t,M,"whitespace")(I):(t.enter("data"),L(I))}function L(I){return I===null||I===124||Yn(I)?(t.exit("data"),M(I)):(t.consume(I),I===92?P:L)}function P(I){return I===92||I===124?(t.consume(I),L):L(I)}}function yye(t,e){let n=-1,r=!0,s=0,i=[0,0,0,0],a=[0,0,0,0],o=!1,c=0,h,f,m;const g=new mye;for(;++nn[2]+1){const y=n[2]+1,w=n[3]-n[2]-1;t.add(y,w,[])}}t.add(n[3]+1,0,[["exit",m,e]])}return s!==void 0&&(i.end=Object.assign({},Vd(e.events,s)),t.add(s,0,[["exit",i,e]]),i=void 0),i}function G_(t,e,n,r,s){const i=[],a=Vd(e.events,n);s&&(s.end=Object.assign({},a),i.push(["exit",s,e])),r.end=Object.assign({},a),i.push(["exit",r,e]),t.add(n+1,0,i)}function Vd(t,e){const n=t[e],r=n[0]==="enter"?"start":"end";return n[1][r]}const bye={name:"tasklistCheck",tokenize:Sye};function wye(){return{text:{91:bye}}}function Sye(t,e,n){const r=this;return s;function s(c){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(c):(t.enter("taskListCheck"),t.enter("taskListCheckMarker"),t.consume(c),t.exit("taskListCheckMarker"),i)}function i(c){return Yn(c)?(t.enter("taskListCheckValueUnchecked"),t.consume(c),t.exit("taskListCheckValueUnchecked"),a):c===88||c===120?(t.enter("taskListCheckValueChecked"),t.consume(c),t.exit("taskListCheckValueChecked"),a):n(c)}function a(c){return c===93?(t.enter("taskListCheckMarker"),t.consume(c),t.exit("taskListCheckMarker"),t.exit("taskListCheck"),o):n(c)}function o(c){return ht(c)?e(c):nn(c)?t.check({tokenize:kye},e,n)(c):n(c)}}function kye(t,e,n){return Zt(t,r,"whitespace");function r(s){return s===null?n(s):e(s)}}function jye(t){return s$([Xve(),iye(),fye(t),xye(),wye()])}const Oye={};function Nye(t){const e=this,n=t||Oye,r=e.data(),s=r.micromarkExtensions||(r.micromarkExtensions=[]),i=r.fromMarkdownExtensions||(r.fromMarkdownExtensions=[]),a=r.toMarkdownExtensions||(r.toMarkdownExtensions=[]);s.push(jye(n)),i.push(Vve()),a.push(Uve(n))}function Cye(){return{enter:{mathFlow:t,mathFlowFenceMeta:e,mathText:i},exit:{mathFlow:s,mathFlowFence:r,mathFlowFenceMeta:n,mathFlowValue:o,mathText:a,mathTextData:o}};function t(c){const h={type:"element",tagName:"code",properties:{className:["language-math","math-display"]},children:[]};this.enter({type:"math",meta:null,value:"",data:{hName:"pre",hChildren:[h]}},c)}function e(){this.buffer()}function n(){const c=this.resume(),h=this.stack[this.stack.length-1];h.type,h.meta=c}function r(){this.data.mathFlowInside||(this.buffer(),this.data.mathFlowInside=!0)}function s(c){const h=this.resume().replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),f=this.stack[this.stack.length-1];f.type,this.exit(c),f.value=h;const m=f.data.hChildren[0];m.type,m.tagName,m.children.push({type:"text",value:h}),this.data.mathFlowInside=void 0}function i(c){this.enter({type:"inlineMath",value:"",data:{hName:"code",hProperties:{className:["language-math","math-inline"]},hChildren:[]}},c),this.buffer()}function a(c){const h=this.resume(),f=this.stack[this.stack.length-1];f.type,this.exit(c),f.value=h,f.data.hChildren.push({type:"text",value:h})}function o(c){this.config.enter.data.call(this,c),this.config.exit.data.call(this,c)}}function Tye(t){let e=(t||{}).singleDollarTextMath;return e==null&&(e=!0),r.peek=s,{unsafe:[{character:"\r",inConstruct:"mathFlowMeta"},{character:` -`,inConstruct:"mathFlowMeta"},{character:"$",after:e?void 0:"\\$",inConstruct:"phrasing"},{character:"$",inConstruct:"mathFlowMeta"},{atBreak:!0,character:"$",after:"\\$"}],handlers:{math:n,inlineMath:r}};function n(i,a,o,c){const h=i.value||"",f=o.createTracker(c),m="$".repeat(Math.max(E$(h,"$")+1,2)),g=o.enter("mathFlow");let x=f.move(m);if(i.meta){const y=o.enter("mathFlowMeta");x+=f.move(o.safe(i.meta,{after:` -`,before:x,encode:["$"],...f.current()})),y()}return x+=f.move(` -`),h&&(x+=f.move(h+` -`)),x+=f.move(m),g(),x}function r(i,a,o){let c=i.value||"",h=1;for(e||h++;new RegExp("(^|[^$])"+"\\$".repeat(h)+"([^$]|$)").test(c);)h++;const f="$".repeat(h);/[^ \r\n]/.test(c)&&(/^[ \r\n]/.test(c)&&/[ \r\n]$/.test(c)||/^\$|\$$/.test(c))&&(c=" "+c+" ");let m=-1;for(;++m15?h="…"+o.slice(s-15,s):h=o.slice(0,s);var f;i+15":">","<":"<",'"':""","'":"'"},qye=/[&><"']/g;function Fye(t){return String(t).replace(qye,e=>Bye[e])}var X$=function t(e){return e.type==="ordgroup"||e.type==="color"?e.body.length===1?t(e.body[0]):e:e.type==="font"?t(e.body):e},$ye=function(e){var n=X$(e);return n.type==="mathord"||n.type==="textord"||n.type==="atom"},Qye=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e},Hye=function(e){var n=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return n?n[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(n[1])?null:n[1].toLowerCase():"_relative"},Mn={deflt:Pye,escape:Fye,hyphenate:Iye,getBaseElem:X$,isCharacterBox:$ye,protocolFromUrl:Hye},v1={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:t=>"#"+t},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(t,e)=>(e.push(t),e)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:t=>Math.max(0,t),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:t=>Math.max(0,t),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:t=>Math.max(0,t),cli:"-e, --max-expand ",cliProcessor:t=>t==="Infinity"?1/0:parseInt(t)},globalGroup:{type:"boolean",cli:!1}};function Vye(t){if(t.default)return t.default;var e=t.type,n=Array.isArray(e)?e[0]:e;if(typeof n!="string")return n.enum[0];switch(n){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}class Hj{constructor(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{};for(var n in v1)if(v1.hasOwnProperty(n)){var r=v1[n];this[n]=e[n]!==void 0?r.processor?r.processor(e[n]):e[n]:Vye(r)}}reportNonstrict(e,n,r){var s=this.strict;if(typeof s=="function"&&(s=s(e,n,r)),!(!s||s==="ignore")){if(s===!0||s==="error")throw new $e("LaTeX-incompatible input and strict mode is set to 'error': "+(n+" ["+e+"]"),r);s==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(n+" ["+e+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+s+"': "+n+" ["+e+"]"))}}useStrictBehavior(e,n,r){var s=this.strict;if(typeof s=="function")try{s=s(e,n,r)}catch{s="error"}return!s||s==="ignore"?!1:s===!0||s==="error"?!0:s==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(n+" ["+e+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+s+"': "+n+" ["+e+"]")),!1)}isTrusted(e){if(e.url&&!e.protocol){var n=Mn.protocolFromUrl(e.url);if(n==null)return!1;e.protocol=n}var r=typeof this.trust=="function"?this.trust(e):this.trust;return!!r}}class ec{constructor(e,n,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=n,this.cramped=r}sup(){return Ka[Uye[this.id]]}sub(){return Ka[Wye[this.id]]}fracNum(){return Ka[Gye[this.id]]}fracDen(){return Ka[Xye[this.id]]}cramp(){return Ka[Yye[this.id]]}text(){return Ka[Kye[this.id]]}isTight(){return this.size>=2}}var Vj=0,uv=1,uh=2,co=3,S0=4,ta=5,Th=6,Ps=7,Ka=[new ec(Vj,0,!1),new ec(uv,0,!0),new ec(uh,1,!1),new ec(co,1,!0),new ec(S0,2,!1),new ec(ta,2,!0),new ec(Th,3,!1),new ec(Ps,3,!0)],Uye=[S0,ta,S0,ta,Th,Ps,Th,Ps],Wye=[ta,ta,ta,ta,Ps,Ps,Ps,Ps],Gye=[uh,co,S0,ta,Th,Ps,Th,Ps],Xye=[co,co,ta,ta,Ps,Ps,Ps,Ps],Yye=[uv,uv,co,co,ta,ta,Ps,Ps],Kye=[Vj,uv,uh,co,uh,co,uh,co],St={DISPLAY:Ka[Vj],TEXT:Ka[uh],SCRIPT:Ka[S0],SCRIPTSCRIPT:Ka[Th]},uk=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];function Zye(t){for(var e=0;e=s[0]&&t<=s[1])return n.name}return null}var y1=[];uk.forEach(t=>t.blocks.forEach(e=>y1.push(...e)));function Y$(t){for(var e=0;e=y1[e]&&t<=y1[e+1])return!0;return!1}var Md=80,Jye=function(e,n){return"M95,"+(622+e+n)+` -c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 -c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 -c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 -s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 -c69,-144,104.5,-217.7,106.5,-221 -l`+e/2.075+" -"+e+` -c5.3,-9.3,12,-14,20,-14 -H400000v`+(40+e)+`H845.2724 -s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 -c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z -M`+(834+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},ebe=function(e,n){return"M263,"+(601+e+n)+`c0.7,0,18,39.7,52,119 -c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 -c340,-704.7,510.7,-1060.3,512,-1067 -l`+e/2.084+" -"+e+` -c4.7,-7.3,11,-11,19,-11 -H40000v`+(40+e)+`H1012.3 -s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 -c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 -s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 -c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z -M`+(1001+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},tbe=function(e,n){return"M983 "+(10+e+n)+` -l`+e/3.13+" -"+e+` -c4,-6.7,10,-10,18,-10 H400000v`+(40+e)+` -H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 -s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 -c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 -c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 -c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 -c53.7,-170.3,84.5,-266.8,92.5,-289.5z -M`+(1001+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},nbe=function(e,n){return"M424,"+(2398+e+n)+` -c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 -c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 -s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 -s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 -l`+e/4.223+" -"+e+`c4,-6.7,10,-10,18,-10 H400000 -v`+(40+e)+`H1014.6 -s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 -c-2,6,-10,9,-24,9 -c-8,0,-12,-0.7,-12,-2z M`+(1001+e)+" "+n+` -h400000v`+(40+e)+"h-400000z"},rbe=function(e,n){return"M473,"+(2713+e+n)+` -c339.3,-1799.3,509.3,-2700,510,-2702 l`+e/5.298+" -"+e+` -c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+e)+`H1017.7 -s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 -c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 -c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 -s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, -606zM`+(1001+e)+" "+n+"h400000v"+(40+e)+"H1017.7z"},sbe=function(e){var n=e/2;return"M400000 "+e+" H0 L"+n+" 0 l65 45 L145 "+(e-80)+" H400000z"},ibe=function(e,n,r){var s=r-54-n-e;return"M702 "+(e+n)+"H400000"+(40+e)+` -H742v`+s+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 -h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 -c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 -219 661 l218 661zM702 `+n+"H400000v"+(40+e)+"H742z"},abe=function(e,n,r){n=1e3*n;var s="";switch(e){case"sqrtMain":s=Jye(n,Md);break;case"sqrtSize1":s=ebe(n,Md);break;case"sqrtSize2":s=tbe(n,Md);break;case"sqrtSize3":s=nbe(n,Md);break;case"sqrtSize4":s=rbe(n,Md);break;case"sqrtTall":s=ibe(n,Md,r)}return s},lbe=function(e,n){switch(e){case"⎜":return"M291 0 H417 V"+n+" H291z M291 0 H417 V"+n+" H291z";case"∣":return"M145 0 H188 V"+n+" H145z M145 0 H188 V"+n+" H145z";case"∥":return"M145 0 H188 V"+n+" H145z M145 0 H188 V"+n+" H145z"+("M367 0 H410 V"+n+" H367z M367 0 H410 V"+n+" H367z");case"⎟":return"M457 0 H583 V"+n+" H457z M457 0 H583 V"+n+" H457z";case"⎢":return"M319 0 H403 V"+n+" H319z M319 0 H403 V"+n+" H319z";case"⎥":return"M263 0 H347 V"+n+" H263z M263 0 H347 V"+n+" H263z";case"⎪":return"M384 0 H504 V"+n+" H384z M384 0 H504 V"+n+" H384z";case"⏐":return"M312 0 H355 V"+n+" H312z M312 0 H355 V"+n+" H312z";case"‖":return"M257 0 H300 V"+n+" H257z M257 0 H300 V"+n+" H257z"+("M478 0 H521 V"+n+" H478z M478 0 H521 V"+n+" H478z");default:return""}},Y_={doubleleftarrow:`M262 157 -l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 - 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 - 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 -c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5 - 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87 --86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 --2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z -m8 0v40h399730v-40zm0 194v40h399730v-40z`,doublerightarrow:`M399738 392l --10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5 - 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88 --33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68 --17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18 --13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 -c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3 --107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`,leftarrow:`M400000 241H110l3-3c68.7-52.7 113.7-120 - 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8 --5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247 -c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208 - 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3 - 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202 - l-3-3h399890zM100 241v40h399900v-40z`,leftbrace:`M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 --45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 - 5-6 9-10 13-.7 1-7.3 1-20 1H6z`,leftbraceunder:`M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13 - 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688 - 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 --331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`,leftgroup:`M400000 80 -H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0 - 435 0h399565z`,leftgroupunder:`M400000 262 -H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 - 435 219h399565z`,leftharpoon:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 --3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5 --18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7 --196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`,leftharpoonplus:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5 - 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3 --4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7 --10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z -m0 0v40h400000v-40z`,leftharpoondown:`M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 - 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 - 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667 --152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`,leftharpoondownplus:`M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12 - 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7 --2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 -v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,lefthook:`M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 --83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3 --68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21 - 71.5 23h399859zM103 281v-40h399897v40z`,leftlinesegment:`M40 281 V428 H0 V94 H40 V241 H400000 v40z -M40 281 V428 H0 V94 H40 V241 H400000 v40z`,leftmapsto:`M40 281 V448H0V74H40V241H400000v40z -M40 281 V448H0V74H40V241H400000v40z`,leftToFrom:`M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 --.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8 -c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3 - 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,longequal:`M0 50 h400000 v40H0z m0 194h40000v40H0z -M0 50 h400000 v40H0z m0 194h40000v40H0z`,midbrace:`M200428 334 -c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14 --53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 - 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11 - 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`,midbraceunder:`M199572 214 -c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14 - 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 - 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0 --5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`,oiintSize1:`M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6 --320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z -m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8 -60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`,oiintSize2:`M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8 --451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z -m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 -c0 110 84 276 504 276s502.4-166 502.4-276z`,oiiintSize1:`M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6 --480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z -m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 -85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`,oiiintSize2:`M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8 --707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z -m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 -c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`,rightarrow:`M0 241v40h399891c-47.3 35.3-84 78-110 128 --16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 - 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 - 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85 --40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 --12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 - 151.7 139 205zm0 0v40h399900v-40z`,rightbrace:`M400000 542l --6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5 -s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 -c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`,rightbraceunder:`M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3 - 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 --174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`,rightgroup:`M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0 - 3-1 3-3v-38c-76-158-257-219-435-219H0z`,rightgroupunder:`M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18 - 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`,rightharpoon:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3 --3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2 --10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 - 69.2 92 94.5zm0 0v40h399900v-40z`,rightharpoonplus:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11 --18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7 - 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z -m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`,rightharpoondown:`M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 - 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5 --7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95 --27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`,rightharpoondownplus:`M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8 - 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 - 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3 --64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z -m0-194v40h400000v-40zm0 0v40h400000v-40z`,righthook:`M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3 - 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0 --13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21 - 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,rightlinesegment:`M399960 241 V94 h40 V428 h-40 V281 H0 v-40z -M399960 241 V94 h40 V428 h-40 V281 H0 v-40z`,rightToFrom:`M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23 - 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 --52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142 --167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,twoheadleftarrow:`M0 167c68 40 - 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69 --70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 --40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 --37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 - 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`,twoheadrightarrow:`M400000 167 -c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 - 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42 - 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 --19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 - 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`,tilde1:`M200 55.538c-77 0-168 73.953-177 73.953-3 0-7 --2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0 - 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0 - 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 --68.267.847-113-73.952-191-73.952z`,tilde2:`M344 55.266c-142 0-300.638 81.316-311.5 86.418 --8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9 - 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 -c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751 - 181.476 676 181.476c-149 0-189-126.21-332-126.21z`,tilde3:`M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457 --11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 - 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 - 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 - -338 0-409-156.573-744-156.573z`,tilde4:`M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 --11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 - 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 - 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 - -175.236-744-175.236z`,vec:`M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5 -3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 -10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 --1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1 --7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 -H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 -c-16-25.333-24-45-24-59z`,widehat1:`M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 -c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`,widehat2:`M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat3:`M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat4:`M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widecheck1:`M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1, --5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`,widecheck2:`M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck3:`M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck4:`M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,baraboveleftarrow:`M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202 -c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 -c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130 -s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47 -121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6 -s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11 -c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z -M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,rightarrowabovebar:`M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32 --27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 -13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39 --84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5 --119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 --12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 -151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`,baraboveshortleftharpoon:`M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 -c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 -c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21 -c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 -c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z -M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`,rightharpoonaboveshortbar:`M0,241 l0,40c399126,0,399993,0,399993,0 -c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, --231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 -c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z -M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`,shortbaraboveleftharpoon:`M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 -c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9, -1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7, --152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z -M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`,shortrightharpoonabovebar:`M53,241l0,40c398570,0,399437,0,399437,0 -c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, --231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 -c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z -M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},obe=function(e,n){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+n+` v1759 h347 v-84 -H403z M403 1759 V0 H319 V1759 v`+n+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+n+` v1759 H0 v84 H347z -M347 1759 V0 H263 V1759 v`+n+" v1759 h84z";case"vert":return"M145 15 v585 v"+n+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-n+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+n+" v585 h43z";case"doublevert":return"M145 15 v585 v"+n+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-n+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+n+` v585 h43z -M367 15 v585 v`+n+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-n+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v`+n+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+n+` v1715 h263 v84 H319z -MM319 602 V0 H403 V602 v`+n+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+n+` v1799 H0 v-84 H319z -MM319 602 V0 H403 V602 v`+n+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+n+` v602 h84z -M403 1759 V0 H319 V1759 v`+n+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+n+` v602 h84z -M347 1759 V0 h-84 V1759 v`+n+" v602 h84z";case"lparen":return`M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1 -c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349, --36,557 l0,`+(n+84)+`c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, -949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9 -c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, --544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 -l0,-`+(n+92)+`c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, --210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z`;case"rparen":return`M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3, -63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 -c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,`+(n+9)+` -c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664 -c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11 -c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 -c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 -l0,-`+(n+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, --470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}};class fp{constructor(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return this.classes.includes(e)}toNode(){for(var e=document.createDocumentFragment(),n=0;nn.toText();return this.children.map(e).join("")}}var il={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},Ex={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},K_={Å:"A",Ð:"D",Þ:"o",å:"a",ð:"d",þ:"o",А:"A",Б:"B",В:"B",Г:"F",Д:"A",Е:"E",Ж:"K",З:"3",И:"N",Й:"N",К:"K",Л:"N",М:"M",Н:"H",О:"O",П:"N",Р:"P",С:"C",Т:"T",У:"y",Ф:"O",Х:"X",Ц:"U",Ч:"h",Ш:"W",Щ:"W",Ъ:"B",Ы:"X",Ь:"B",Э:"3",Ю:"X",Я:"R",а:"a",б:"b",в:"a",г:"r",д:"y",е:"e",ж:"m",з:"e",и:"n",й:"n",к:"n",л:"n",м:"m",н:"n",о:"o",п:"n",р:"p",с:"c",т:"o",у:"y",ф:"b",х:"x",ц:"n",ч:"n",ш:"w",щ:"w",ъ:"a",ы:"m",ь:"a",э:"e",ю:"m",я:"r"};function cbe(t,e){il[t]=e}function Uj(t,e,n){if(!il[e])throw new Error("Font metrics not found for font: "+e+".");var r=t.charCodeAt(0),s=il[e][r];if(!s&&t[0]in K_&&(r=K_[t[0]].charCodeAt(0),s=il[e][r]),!s&&n==="text"&&Y$(r)&&(s=il[e][77]),s)return{depth:s[0],height:s[1],italic:s[2],skew:s[3],width:s[4]}}var k4={};function ube(t){var e;if(t>=5?e=0:t>=3?e=1:e=2,!k4[e]){var n=k4[e]={cssEmPerMu:Ex.quad[e]/18};for(var r in Ex)Ex.hasOwnProperty(r)&&(n[r]=Ex[r][e])}return k4[e]}var dbe=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],Z_=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],J_=function(e,n){return n.size<2?e:dbe[e-1][n.size-1]};class to{constructor(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||to.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=Z_[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var n={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);return new to(n)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:J_(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:Z_[e-1]})}havingBaseStyle(e){e=e||this.style.text();var n=J_(to.BASESIZE,e);return this.size===n&&this.textSize===to.BASESIZE&&this.style===e?this:this.extend({style:e,size:n})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==to.BASESIZE?["sizing","reset-size"+this.size,"size"+to.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=ube(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}to.BASESIZE=6;var dk={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},hbe={ex:!0,em:!0,mu:!0},K$=function(e){return typeof e!="string"&&(e=e.unit),e in dk||e in hbe||e==="ex"},gr=function(e,n){var r;if(e.unit in dk)r=dk[e.unit]/n.fontMetrics().ptPerEm/n.sizeMultiplier;else if(e.unit==="mu")r=n.fontMetrics().cssEmPerMu;else{var s;if(n.style.isTight()?s=n.havingStyle(n.style.text()):s=n,e.unit==="ex")r=s.fontMetrics().xHeight;else if(e.unit==="em")r=s.fontMetrics().quad;else throw new $e("Invalid unit: '"+e.unit+"'");s!==n&&(r*=s.sizeMultiplier/n.sizeMultiplier)}return Math.min(e.number*r,n.maxSize)},We=function(e){return+e.toFixed(4)+"em"},Oc=function(e){return e.filter(n=>n).join(" ")},Z$=function(e,n,r){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},n){n.style.isTight()&&this.classes.push("mtight");var s=n.getColor();s&&(this.style.color=s)}},J$=function(e){var n=document.createElement(e);n.className=Oc(this.classes);for(var r in this.style)this.style.hasOwnProperty(r)&&(n.style[r]=this.style[r]);for(var s in this.attributes)this.attributes.hasOwnProperty(s)&&n.setAttribute(s,this.attributes[s]);for(var i=0;i/=\x00-\x1f]/,eQ=function(e){var n="<"+e;this.classes.length&&(n+=' class="'+Mn.escape(Oc(this.classes))+'"');var r="";for(var s in this.style)this.style.hasOwnProperty(s)&&(r+=Mn.hyphenate(s)+":"+this.style[s]+";");r&&(n+=' style="'+Mn.escape(r)+'"');for(var i in this.attributes)if(this.attributes.hasOwnProperty(i)){if(fbe.test(i))throw new $e("Invalid attribute name '"+i+"'");n+=" "+i+'="'+Mn.escape(this.attributes[i])+'"'}n+=">";for(var a=0;a",n};class mp{constructor(e,n,r,s){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,Z$.call(this,e,r,s),this.children=n||[]}setAttribute(e,n){this.attributes[e]=n}hasClass(e){return this.classes.includes(e)}toNode(){return J$.call(this,"span")}toMarkup(){return eQ.call(this,"span")}}class Wj{constructor(e,n,r,s){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,Z$.call(this,n,s),this.children=r||[],this.setAttribute("href",e)}setAttribute(e,n){this.attributes[e]=n}hasClass(e){return this.classes.includes(e)}toNode(){return J$.call(this,"a")}toMarkup(){return eQ.call(this,"a")}}class mbe{constructor(e,n,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=n,this.src=e,this.classes=["mord"],this.style=r}hasClass(e){return this.classes.includes(e)}toNode(){var e=document.createElement("img");e.src=this.src,e.alt=this.alt,e.className="mord";for(var n in this.style)this.style.hasOwnProperty(n)&&(e.style[n]=this.style[n]);return e}toMarkup(){var e=''+Mn.escape(this.alt)+'0&&(n=document.createElement("span"),n.style.marginRight=We(this.italic)),this.classes.length>0&&(n=n||document.createElement("span"),n.className=Oc(this.classes));for(var r in this.style)this.style.hasOwnProperty(r)&&(n=n||document.createElement("span"),n.style[r]=this.style[r]);return n?(n.appendChild(e),n):e}toMarkup(){var e=!1,n="0&&(r+="margin-right:"+this.italic+"em;");for(var s in this.style)this.style.hasOwnProperty(s)&&(r+=Mn.hyphenate(s)+":"+this.style[s]+";");r&&(e=!0,n+=' style="'+Mn.escape(r)+'"');var i=Mn.escape(this.text);return e?(n+=">",n+=i,n+="",n):i}}class go{constructor(e,n){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=n||{}}toNode(){var e="http://www.w3.org/2000/svg",n=document.createElementNS(e,"svg");for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&n.setAttribute(r,this.attributes[r]);for(var s=0;s':''}}class hk{constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e="http://www.w3.org/2000/svg",n=document.createElementNS(e,"line");for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&n.setAttribute(r,this.attributes[r]);return n}toMarkup(){var e=" but got "+String(t)+".")}var xbe={bin:1,close:1,inner:1,open:1,punct:1,rel:1},vbe={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},Jn={math:{},text:{}};function A(t,e,n,r,s,i){Jn[t][s]={font:e,group:n,replace:r},i&&r&&(Jn[t][r]=Jn[t][s])}var D="math",Ie="text",$="main",le="ams",ur="accent-token",st="bin",$s="close",Jh="inner",wt="mathord",Ur="op-token",Pi="open",Oy="punct",oe="rel",jo="spacing",me="textord";A(D,$,oe,"≡","\\equiv",!0);A(D,$,oe,"≺","\\prec",!0);A(D,$,oe,"≻","\\succ",!0);A(D,$,oe,"∼","\\sim",!0);A(D,$,oe,"⊥","\\perp");A(D,$,oe,"⪯","\\preceq",!0);A(D,$,oe,"⪰","\\succeq",!0);A(D,$,oe,"≃","\\simeq",!0);A(D,$,oe,"∣","\\mid",!0);A(D,$,oe,"≪","\\ll",!0);A(D,$,oe,"≫","\\gg",!0);A(D,$,oe,"≍","\\asymp",!0);A(D,$,oe,"∥","\\parallel");A(D,$,oe,"⋈","\\bowtie",!0);A(D,$,oe,"⌣","\\smile",!0);A(D,$,oe,"⊑","\\sqsubseteq",!0);A(D,$,oe,"⊒","\\sqsupseteq",!0);A(D,$,oe,"≐","\\doteq",!0);A(D,$,oe,"⌢","\\frown",!0);A(D,$,oe,"∋","\\ni",!0);A(D,$,oe,"∝","\\propto",!0);A(D,$,oe,"⊢","\\vdash",!0);A(D,$,oe,"⊣","\\dashv",!0);A(D,$,oe,"∋","\\owns");A(D,$,Oy,".","\\ldotp");A(D,$,Oy,"⋅","\\cdotp");A(D,$,me,"#","\\#");A(Ie,$,me,"#","\\#");A(D,$,me,"&","\\&");A(Ie,$,me,"&","\\&");A(D,$,me,"ℵ","\\aleph",!0);A(D,$,me,"∀","\\forall",!0);A(D,$,me,"ℏ","\\hbar",!0);A(D,$,me,"∃","\\exists",!0);A(D,$,me,"∇","\\nabla",!0);A(D,$,me,"♭","\\flat",!0);A(D,$,me,"ℓ","\\ell",!0);A(D,$,me,"♮","\\natural",!0);A(D,$,me,"♣","\\clubsuit",!0);A(D,$,me,"℘","\\wp",!0);A(D,$,me,"♯","\\sharp",!0);A(D,$,me,"♢","\\diamondsuit",!0);A(D,$,me,"ℜ","\\Re",!0);A(D,$,me,"♡","\\heartsuit",!0);A(D,$,me,"ℑ","\\Im",!0);A(D,$,me,"♠","\\spadesuit",!0);A(D,$,me,"§","\\S",!0);A(Ie,$,me,"§","\\S");A(D,$,me,"¶","\\P",!0);A(Ie,$,me,"¶","\\P");A(D,$,me,"†","\\dag");A(Ie,$,me,"†","\\dag");A(Ie,$,me,"†","\\textdagger");A(D,$,me,"‡","\\ddag");A(Ie,$,me,"‡","\\ddag");A(Ie,$,me,"‡","\\textdaggerdbl");A(D,$,$s,"⎱","\\rmoustache",!0);A(D,$,Pi,"⎰","\\lmoustache",!0);A(D,$,$s,"⟯","\\rgroup",!0);A(D,$,Pi,"⟮","\\lgroup",!0);A(D,$,st,"∓","\\mp",!0);A(D,$,st,"⊖","\\ominus",!0);A(D,$,st,"⊎","\\uplus",!0);A(D,$,st,"⊓","\\sqcap",!0);A(D,$,st,"∗","\\ast");A(D,$,st,"⊔","\\sqcup",!0);A(D,$,st,"◯","\\bigcirc",!0);A(D,$,st,"∙","\\bullet",!0);A(D,$,st,"‡","\\ddagger");A(D,$,st,"≀","\\wr",!0);A(D,$,st,"⨿","\\amalg");A(D,$,st,"&","\\And");A(D,$,oe,"⟵","\\longleftarrow",!0);A(D,$,oe,"⇐","\\Leftarrow",!0);A(D,$,oe,"⟸","\\Longleftarrow",!0);A(D,$,oe,"⟶","\\longrightarrow",!0);A(D,$,oe,"⇒","\\Rightarrow",!0);A(D,$,oe,"⟹","\\Longrightarrow",!0);A(D,$,oe,"↔","\\leftrightarrow",!0);A(D,$,oe,"⟷","\\longleftrightarrow",!0);A(D,$,oe,"⇔","\\Leftrightarrow",!0);A(D,$,oe,"⟺","\\Longleftrightarrow",!0);A(D,$,oe,"↦","\\mapsto",!0);A(D,$,oe,"⟼","\\longmapsto",!0);A(D,$,oe,"↗","\\nearrow",!0);A(D,$,oe,"↩","\\hookleftarrow",!0);A(D,$,oe,"↪","\\hookrightarrow",!0);A(D,$,oe,"↘","\\searrow",!0);A(D,$,oe,"↼","\\leftharpoonup",!0);A(D,$,oe,"⇀","\\rightharpoonup",!0);A(D,$,oe,"↙","\\swarrow",!0);A(D,$,oe,"↽","\\leftharpoondown",!0);A(D,$,oe,"⇁","\\rightharpoondown",!0);A(D,$,oe,"↖","\\nwarrow",!0);A(D,$,oe,"⇌","\\rightleftharpoons",!0);A(D,le,oe,"≮","\\nless",!0);A(D,le,oe,"","\\@nleqslant");A(D,le,oe,"","\\@nleqq");A(D,le,oe,"⪇","\\lneq",!0);A(D,le,oe,"≨","\\lneqq",!0);A(D,le,oe,"","\\@lvertneqq");A(D,le,oe,"⋦","\\lnsim",!0);A(D,le,oe,"⪉","\\lnapprox",!0);A(D,le,oe,"⊀","\\nprec",!0);A(D,le,oe,"⋠","\\npreceq",!0);A(D,le,oe,"⋨","\\precnsim",!0);A(D,le,oe,"⪹","\\precnapprox",!0);A(D,le,oe,"≁","\\nsim",!0);A(D,le,oe,"","\\@nshortmid");A(D,le,oe,"∤","\\nmid",!0);A(D,le,oe,"⊬","\\nvdash",!0);A(D,le,oe,"⊭","\\nvDash",!0);A(D,le,oe,"⋪","\\ntriangleleft");A(D,le,oe,"⋬","\\ntrianglelefteq",!0);A(D,le,oe,"⊊","\\subsetneq",!0);A(D,le,oe,"","\\@varsubsetneq");A(D,le,oe,"⫋","\\subsetneqq",!0);A(D,le,oe,"","\\@varsubsetneqq");A(D,le,oe,"≯","\\ngtr",!0);A(D,le,oe,"","\\@ngeqslant");A(D,le,oe,"","\\@ngeqq");A(D,le,oe,"⪈","\\gneq",!0);A(D,le,oe,"≩","\\gneqq",!0);A(D,le,oe,"","\\@gvertneqq");A(D,le,oe,"⋧","\\gnsim",!0);A(D,le,oe,"⪊","\\gnapprox",!0);A(D,le,oe,"⊁","\\nsucc",!0);A(D,le,oe,"⋡","\\nsucceq",!0);A(D,le,oe,"⋩","\\succnsim",!0);A(D,le,oe,"⪺","\\succnapprox",!0);A(D,le,oe,"≆","\\ncong",!0);A(D,le,oe,"","\\@nshortparallel");A(D,le,oe,"∦","\\nparallel",!0);A(D,le,oe,"⊯","\\nVDash",!0);A(D,le,oe,"⋫","\\ntriangleright");A(D,le,oe,"⋭","\\ntrianglerighteq",!0);A(D,le,oe,"","\\@nsupseteqq");A(D,le,oe,"⊋","\\supsetneq",!0);A(D,le,oe,"","\\@varsupsetneq");A(D,le,oe,"⫌","\\supsetneqq",!0);A(D,le,oe,"","\\@varsupsetneqq");A(D,le,oe,"⊮","\\nVdash",!0);A(D,le,oe,"⪵","\\precneqq",!0);A(D,le,oe,"⪶","\\succneqq",!0);A(D,le,oe,"","\\@nsubseteqq");A(D,le,st,"⊴","\\unlhd");A(D,le,st,"⊵","\\unrhd");A(D,le,oe,"↚","\\nleftarrow",!0);A(D,le,oe,"↛","\\nrightarrow",!0);A(D,le,oe,"⇍","\\nLeftarrow",!0);A(D,le,oe,"⇏","\\nRightarrow",!0);A(D,le,oe,"↮","\\nleftrightarrow",!0);A(D,le,oe,"⇎","\\nLeftrightarrow",!0);A(D,le,oe,"△","\\vartriangle");A(D,le,me,"ℏ","\\hslash");A(D,le,me,"▽","\\triangledown");A(D,le,me,"◊","\\lozenge");A(D,le,me,"Ⓢ","\\circledS");A(D,le,me,"®","\\circledR");A(Ie,le,me,"®","\\circledR");A(D,le,me,"∡","\\measuredangle",!0);A(D,le,me,"∄","\\nexists");A(D,le,me,"℧","\\mho");A(D,le,me,"Ⅎ","\\Finv",!0);A(D,le,me,"⅁","\\Game",!0);A(D,le,me,"‵","\\backprime");A(D,le,me,"▲","\\blacktriangle");A(D,le,me,"▼","\\blacktriangledown");A(D,le,me,"■","\\blacksquare");A(D,le,me,"⧫","\\blacklozenge");A(D,le,me,"★","\\bigstar");A(D,le,me,"∢","\\sphericalangle",!0);A(D,le,me,"∁","\\complement",!0);A(D,le,me,"ð","\\eth",!0);A(Ie,$,me,"ð","ð");A(D,le,me,"╱","\\diagup");A(D,le,me,"╲","\\diagdown");A(D,le,me,"□","\\square");A(D,le,me,"□","\\Box");A(D,le,me,"◊","\\Diamond");A(D,le,me,"¥","\\yen",!0);A(Ie,le,me,"¥","\\yen",!0);A(D,le,me,"✓","\\checkmark",!0);A(Ie,le,me,"✓","\\checkmark");A(D,le,me,"ℶ","\\beth",!0);A(D,le,me,"ℸ","\\daleth",!0);A(D,le,me,"ℷ","\\gimel",!0);A(D,le,me,"ϝ","\\digamma",!0);A(D,le,me,"ϰ","\\varkappa");A(D,le,Pi,"┌","\\@ulcorner",!0);A(D,le,$s,"┐","\\@urcorner",!0);A(D,le,Pi,"└","\\@llcorner",!0);A(D,le,$s,"┘","\\@lrcorner",!0);A(D,le,oe,"≦","\\leqq",!0);A(D,le,oe,"⩽","\\leqslant",!0);A(D,le,oe,"⪕","\\eqslantless",!0);A(D,le,oe,"≲","\\lesssim",!0);A(D,le,oe,"⪅","\\lessapprox",!0);A(D,le,oe,"≊","\\approxeq",!0);A(D,le,st,"⋖","\\lessdot");A(D,le,oe,"⋘","\\lll",!0);A(D,le,oe,"≶","\\lessgtr",!0);A(D,le,oe,"⋚","\\lesseqgtr",!0);A(D,le,oe,"⪋","\\lesseqqgtr",!0);A(D,le,oe,"≑","\\doteqdot");A(D,le,oe,"≓","\\risingdotseq",!0);A(D,le,oe,"≒","\\fallingdotseq",!0);A(D,le,oe,"∽","\\backsim",!0);A(D,le,oe,"⋍","\\backsimeq",!0);A(D,le,oe,"⫅","\\subseteqq",!0);A(D,le,oe,"⋐","\\Subset",!0);A(D,le,oe,"⊏","\\sqsubset",!0);A(D,le,oe,"≼","\\preccurlyeq",!0);A(D,le,oe,"⋞","\\curlyeqprec",!0);A(D,le,oe,"≾","\\precsim",!0);A(D,le,oe,"⪷","\\precapprox",!0);A(D,le,oe,"⊲","\\vartriangleleft");A(D,le,oe,"⊴","\\trianglelefteq");A(D,le,oe,"⊨","\\vDash",!0);A(D,le,oe,"⊪","\\Vvdash",!0);A(D,le,oe,"⌣","\\smallsmile");A(D,le,oe,"⌢","\\smallfrown");A(D,le,oe,"≏","\\bumpeq",!0);A(D,le,oe,"≎","\\Bumpeq",!0);A(D,le,oe,"≧","\\geqq",!0);A(D,le,oe,"⩾","\\geqslant",!0);A(D,le,oe,"⪖","\\eqslantgtr",!0);A(D,le,oe,"≳","\\gtrsim",!0);A(D,le,oe,"⪆","\\gtrapprox",!0);A(D,le,st,"⋗","\\gtrdot");A(D,le,oe,"⋙","\\ggg",!0);A(D,le,oe,"≷","\\gtrless",!0);A(D,le,oe,"⋛","\\gtreqless",!0);A(D,le,oe,"⪌","\\gtreqqless",!0);A(D,le,oe,"≖","\\eqcirc",!0);A(D,le,oe,"≗","\\circeq",!0);A(D,le,oe,"≜","\\triangleq",!0);A(D,le,oe,"∼","\\thicksim");A(D,le,oe,"≈","\\thickapprox");A(D,le,oe,"⫆","\\supseteqq",!0);A(D,le,oe,"⋑","\\Supset",!0);A(D,le,oe,"⊐","\\sqsupset",!0);A(D,le,oe,"≽","\\succcurlyeq",!0);A(D,le,oe,"⋟","\\curlyeqsucc",!0);A(D,le,oe,"≿","\\succsim",!0);A(D,le,oe,"⪸","\\succapprox",!0);A(D,le,oe,"⊳","\\vartriangleright");A(D,le,oe,"⊵","\\trianglerighteq");A(D,le,oe,"⊩","\\Vdash",!0);A(D,le,oe,"∣","\\shortmid");A(D,le,oe,"∥","\\shortparallel");A(D,le,oe,"≬","\\between",!0);A(D,le,oe,"⋔","\\pitchfork",!0);A(D,le,oe,"∝","\\varpropto");A(D,le,oe,"◀","\\blacktriangleleft");A(D,le,oe,"∴","\\therefore",!0);A(D,le,oe,"∍","\\backepsilon");A(D,le,oe,"▶","\\blacktriangleright");A(D,le,oe,"∵","\\because",!0);A(D,le,oe,"⋘","\\llless");A(D,le,oe,"⋙","\\gggtr");A(D,le,st,"⊲","\\lhd");A(D,le,st,"⊳","\\rhd");A(D,le,oe,"≂","\\eqsim",!0);A(D,$,oe,"⋈","\\Join");A(D,le,oe,"≑","\\Doteq",!0);A(D,le,st,"∔","\\dotplus",!0);A(D,le,st,"∖","\\smallsetminus");A(D,le,st,"⋒","\\Cap",!0);A(D,le,st,"⋓","\\Cup",!0);A(D,le,st,"⩞","\\doublebarwedge",!0);A(D,le,st,"⊟","\\boxminus",!0);A(D,le,st,"⊞","\\boxplus",!0);A(D,le,st,"⋇","\\divideontimes",!0);A(D,le,st,"⋉","\\ltimes",!0);A(D,le,st,"⋊","\\rtimes",!0);A(D,le,st,"⋋","\\leftthreetimes",!0);A(D,le,st,"⋌","\\rightthreetimes",!0);A(D,le,st,"⋏","\\curlywedge",!0);A(D,le,st,"⋎","\\curlyvee",!0);A(D,le,st,"⊝","\\circleddash",!0);A(D,le,st,"⊛","\\circledast",!0);A(D,le,st,"⋅","\\centerdot");A(D,le,st,"⊺","\\intercal",!0);A(D,le,st,"⋒","\\doublecap");A(D,le,st,"⋓","\\doublecup");A(D,le,st,"⊠","\\boxtimes",!0);A(D,le,oe,"⇢","\\dashrightarrow",!0);A(D,le,oe,"⇠","\\dashleftarrow",!0);A(D,le,oe,"⇇","\\leftleftarrows",!0);A(D,le,oe,"⇆","\\leftrightarrows",!0);A(D,le,oe,"⇚","\\Lleftarrow",!0);A(D,le,oe,"↞","\\twoheadleftarrow",!0);A(D,le,oe,"↢","\\leftarrowtail",!0);A(D,le,oe,"↫","\\looparrowleft",!0);A(D,le,oe,"⇋","\\leftrightharpoons",!0);A(D,le,oe,"↶","\\curvearrowleft",!0);A(D,le,oe,"↺","\\circlearrowleft",!0);A(D,le,oe,"↰","\\Lsh",!0);A(D,le,oe,"⇈","\\upuparrows",!0);A(D,le,oe,"↿","\\upharpoonleft",!0);A(D,le,oe,"⇃","\\downharpoonleft",!0);A(D,$,oe,"⊶","\\origof",!0);A(D,$,oe,"⊷","\\imageof",!0);A(D,le,oe,"⊸","\\multimap",!0);A(D,le,oe,"↭","\\leftrightsquigarrow",!0);A(D,le,oe,"⇉","\\rightrightarrows",!0);A(D,le,oe,"⇄","\\rightleftarrows",!0);A(D,le,oe,"↠","\\twoheadrightarrow",!0);A(D,le,oe,"↣","\\rightarrowtail",!0);A(D,le,oe,"↬","\\looparrowright",!0);A(D,le,oe,"↷","\\curvearrowright",!0);A(D,le,oe,"↻","\\circlearrowright",!0);A(D,le,oe,"↱","\\Rsh",!0);A(D,le,oe,"⇊","\\downdownarrows",!0);A(D,le,oe,"↾","\\upharpoonright",!0);A(D,le,oe,"⇂","\\downharpoonright",!0);A(D,le,oe,"⇝","\\rightsquigarrow",!0);A(D,le,oe,"⇝","\\leadsto");A(D,le,oe,"⇛","\\Rrightarrow",!0);A(D,le,oe,"↾","\\restriction");A(D,$,me,"‘","`");A(D,$,me,"$","\\$");A(Ie,$,me,"$","\\$");A(Ie,$,me,"$","\\textdollar");A(D,$,me,"%","\\%");A(Ie,$,me,"%","\\%");A(D,$,me,"_","\\_");A(Ie,$,me,"_","\\_");A(Ie,$,me,"_","\\textunderscore");A(D,$,me,"∠","\\angle",!0);A(D,$,me,"∞","\\infty",!0);A(D,$,me,"′","\\prime");A(D,$,me,"△","\\triangle");A(D,$,me,"Γ","\\Gamma",!0);A(D,$,me,"Δ","\\Delta",!0);A(D,$,me,"Θ","\\Theta",!0);A(D,$,me,"Λ","\\Lambda",!0);A(D,$,me,"Ξ","\\Xi",!0);A(D,$,me,"Π","\\Pi",!0);A(D,$,me,"Σ","\\Sigma",!0);A(D,$,me,"Υ","\\Upsilon",!0);A(D,$,me,"Φ","\\Phi",!0);A(D,$,me,"Ψ","\\Psi",!0);A(D,$,me,"Ω","\\Omega",!0);A(D,$,me,"A","Α");A(D,$,me,"B","Β");A(D,$,me,"E","Ε");A(D,$,me,"Z","Ζ");A(D,$,me,"H","Η");A(D,$,me,"I","Ι");A(D,$,me,"K","Κ");A(D,$,me,"M","Μ");A(D,$,me,"N","Ν");A(D,$,me,"O","Ο");A(D,$,me,"P","Ρ");A(D,$,me,"T","Τ");A(D,$,me,"X","Χ");A(D,$,me,"¬","\\neg",!0);A(D,$,me,"¬","\\lnot");A(D,$,me,"⊤","\\top");A(D,$,me,"⊥","\\bot");A(D,$,me,"∅","\\emptyset");A(D,le,me,"∅","\\varnothing");A(D,$,wt,"α","\\alpha",!0);A(D,$,wt,"β","\\beta",!0);A(D,$,wt,"γ","\\gamma",!0);A(D,$,wt,"δ","\\delta",!0);A(D,$,wt,"ϵ","\\epsilon",!0);A(D,$,wt,"ζ","\\zeta",!0);A(D,$,wt,"η","\\eta",!0);A(D,$,wt,"θ","\\theta",!0);A(D,$,wt,"ι","\\iota",!0);A(D,$,wt,"κ","\\kappa",!0);A(D,$,wt,"λ","\\lambda",!0);A(D,$,wt,"μ","\\mu",!0);A(D,$,wt,"ν","\\nu",!0);A(D,$,wt,"ξ","\\xi",!0);A(D,$,wt,"ο","\\omicron",!0);A(D,$,wt,"π","\\pi",!0);A(D,$,wt,"ρ","\\rho",!0);A(D,$,wt,"σ","\\sigma",!0);A(D,$,wt,"τ","\\tau",!0);A(D,$,wt,"υ","\\upsilon",!0);A(D,$,wt,"ϕ","\\phi",!0);A(D,$,wt,"χ","\\chi",!0);A(D,$,wt,"ψ","\\psi",!0);A(D,$,wt,"ω","\\omega",!0);A(D,$,wt,"ε","\\varepsilon",!0);A(D,$,wt,"ϑ","\\vartheta",!0);A(D,$,wt,"ϖ","\\varpi",!0);A(D,$,wt,"ϱ","\\varrho",!0);A(D,$,wt,"ς","\\varsigma",!0);A(D,$,wt,"φ","\\varphi",!0);A(D,$,st,"∗","*",!0);A(D,$,st,"+","+");A(D,$,st,"−","-",!0);A(D,$,st,"⋅","\\cdot",!0);A(D,$,st,"∘","\\circ",!0);A(D,$,st,"÷","\\div",!0);A(D,$,st,"±","\\pm",!0);A(D,$,st,"×","\\times",!0);A(D,$,st,"∩","\\cap",!0);A(D,$,st,"∪","\\cup",!0);A(D,$,st,"∖","\\setminus",!0);A(D,$,st,"∧","\\land");A(D,$,st,"∨","\\lor");A(D,$,st,"∧","\\wedge",!0);A(D,$,st,"∨","\\vee",!0);A(D,$,me,"√","\\surd");A(D,$,Pi,"⟨","\\langle",!0);A(D,$,Pi,"∣","\\lvert");A(D,$,Pi,"∥","\\lVert");A(D,$,$s,"?","?");A(D,$,$s,"!","!");A(D,$,$s,"⟩","\\rangle",!0);A(D,$,$s,"∣","\\rvert");A(D,$,$s,"∥","\\rVert");A(D,$,oe,"=","=");A(D,$,oe,":",":");A(D,$,oe,"≈","\\approx",!0);A(D,$,oe,"≅","\\cong",!0);A(D,$,oe,"≥","\\ge");A(D,$,oe,"≥","\\geq",!0);A(D,$,oe,"←","\\gets");A(D,$,oe,">","\\gt",!0);A(D,$,oe,"∈","\\in",!0);A(D,$,oe,"","\\@not");A(D,$,oe,"⊂","\\subset",!0);A(D,$,oe,"⊃","\\supset",!0);A(D,$,oe,"⊆","\\subseteq",!0);A(D,$,oe,"⊇","\\supseteq",!0);A(D,le,oe,"⊈","\\nsubseteq",!0);A(D,le,oe,"⊉","\\nsupseteq",!0);A(D,$,oe,"⊨","\\models");A(D,$,oe,"←","\\leftarrow",!0);A(D,$,oe,"≤","\\le");A(D,$,oe,"≤","\\leq",!0);A(D,$,oe,"<","\\lt",!0);A(D,$,oe,"→","\\rightarrow",!0);A(D,$,oe,"→","\\to");A(D,le,oe,"≱","\\ngeq",!0);A(D,le,oe,"≰","\\nleq",!0);A(D,$,jo," ","\\ ");A(D,$,jo," ","\\space");A(D,$,jo," ","\\nobreakspace");A(Ie,$,jo," ","\\ ");A(Ie,$,jo," "," ");A(Ie,$,jo," ","\\space");A(Ie,$,jo," ","\\nobreakspace");A(D,$,jo,null,"\\nobreak");A(D,$,jo,null,"\\allowbreak");A(D,$,Oy,",",",");A(D,$,Oy,";",";");A(D,le,st,"⊼","\\barwedge",!0);A(D,le,st,"⊻","\\veebar",!0);A(D,$,st,"⊙","\\odot",!0);A(D,$,st,"⊕","\\oplus",!0);A(D,$,st,"⊗","\\otimes",!0);A(D,$,me,"∂","\\partial",!0);A(D,$,st,"⊘","\\oslash",!0);A(D,le,st,"⊚","\\circledcirc",!0);A(D,le,st,"⊡","\\boxdot",!0);A(D,$,st,"△","\\bigtriangleup");A(D,$,st,"▽","\\bigtriangledown");A(D,$,st,"†","\\dagger");A(D,$,st,"⋄","\\diamond");A(D,$,st,"⋆","\\star");A(D,$,st,"◃","\\triangleleft");A(D,$,st,"▹","\\triangleright");A(D,$,Pi,"{","\\{");A(Ie,$,me,"{","\\{");A(Ie,$,me,"{","\\textbraceleft");A(D,$,$s,"}","\\}");A(Ie,$,me,"}","\\}");A(Ie,$,me,"}","\\textbraceright");A(D,$,Pi,"{","\\lbrace");A(D,$,$s,"}","\\rbrace");A(D,$,Pi,"[","\\lbrack",!0);A(Ie,$,me,"[","\\lbrack",!0);A(D,$,$s,"]","\\rbrack",!0);A(Ie,$,me,"]","\\rbrack",!0);A(D,$,Pi,"(","\\lparen",!0);A(D,$,$s,")","\\rparen",!0);A(Ie,$,me,"<","\\textless",!0);A(Ie,$,me,">","\\textgreater",!0);A(D,$,Pi,"⌊","\\lfloor",!0);A(D,$,$s,"⌋","\\rfloor",!0);A(D,$,Pi,"⌈","\\lceil",!0);A(D,$,$s,"⌉","\\rceil",!0);A(D,$,me,"\\","\\backslash");A(D,$,me,"∣","|");A(D,$,me,"∣","\\vert");A(Ie,$,me,"|","\\textbar",!0);A(D,$,me,"∥","\\|");A(D,$,me,"∥","\\Vert");A(Ie,$,me,"∥","\\textbardbl");A(Ie,$,me,"~","\\textasciitilde");A(Ie,$,me,"\\","\\textbackslash");A(Ie,$,me,"^","\\textasciicircum");A(D,$,oe,"↑","\\uparrow",!0);A(D,$,oe,"⇑","\\Uparrow",!0);A(D,$,oe,"↓","\\downarrow",!0);A(D,$,oe,"⇓","\\Downarrow",!0);A(D,$,oe,"↕","\\updownarrow",!0);A(D,$,oe,"⇕","\\Updownarrow",!0);A(D,$,Ur,"∐","\\coprod");A(D,$,Ur,"⋁","\\bigvee");A(D,$,Ur,"⋀","\\bigwedge");A(D,$,Ur,"⨄","\\biguplus");A(D,$,Ur,"⋂","\\bigcap");A(D,$,Ur,"⋃","\\bigcup");A(D,$,Ur,"∫","\\int");A(D,$,Ur,"∫","\\intop");A(D,$,Ur,"∬","\\iint");A(D,$,Ur,"∭","\\iiint");A(D,$,Ur,"∏","\\prod");A(D,$,Ur,"∑","\\sum");A(D,$,Ur,"⨂","\\bigotimes");A(D,$,Ur,"⨁","\\bigoplus");A(D,$,Ur,"⨀","\\bigodot");A(D,$,Ur,"∮","\\oint");A(D,$,Ur,"∯","\\oiint");A(D,$,Ur,"∰","\\oiiint");A(D,$,Ur,"⨆","\\bigsqcup");A(D,$,Ur,"∫","\\smallint");A(Ie,$,Jh,"…","\\textellipsis");A(D,$,Jh,"…","\\mathellipsis");A(Ie,$,Jh,"…","\\ldots",!0);A(D,$,Jh,"…","\\ldots",!0);A(D,$,Jh,"⋯","\\@cdots",!0);A(D,$,Jh,"⋱","\\ddots",!0);A(D,$,me,"⋮","\\varvdots");A(Ie,$,me,"⋮","\\varvdots");A(D,$,ur,"ˊ","\\acute");A(D,$,ur,"ˋ","\\grave");A(D,$,ur,"¨","\\ddot");A(D,$,ur,"~","\\tilde");A(D,$,ur,"ˉ","\\bar");A(D,$,ur,"˘","\\breve");A(D,$,ur,"ˇ","\\check");A(D,$,ur,"^","\\hat");A(D,$,ur,"⃗","\\vec");A(D,$,ur,"˙","\\dot");A(D,$,ur,"˚","\\mathring");A(D,$,wt,"","\\@imath");A(D,$,wt,"","\\@jmath");A(D,$,me,"ı","ı");A(D,$,me,"ȷ","ȷ");A(Ie,$,me,"ı","\\i",!0);A(Ie,$,me,"ȷ","\\j",!0);A(Ie,$,me,"ß","\\ss",!0);A(Ie,$,me,"æ","\\ae",!0);A(Ie,$,me,"œ","\\oe",!0);A(Ie,$,me,"ø","\\o",!0);A(Ie,$,me,"Æ","\\AE",!0);A(Ie,$,me,"Œ","\\OE",!0);A(Ie,$,me,"Ø","\\O",!0);A(Ie,$,ur,"ˊ","\\'");A(Ie,$,ur,"ˋ","\\`");A(Ie,$,ur,"ˆ","\\^");A(Ie,$,ur,"˜","\\~");A(Ie,$,ur,"ˉ","\\=");A(Ie,$,ur,"˘","\\u");A(Ie,$,ur,"˙","\\.");A(Ie,$,ur,"¸","\\c");A(Ie,$,ur,"˚","\\r");A(Ie,$,ur,"ˇ","\\v");A(Ie,$,ur,"¨",'\\"');A(Ie,$,ur,"˝","\\H");A(Ie,$,ur,"◯","\\textcircled");var tQ={"--":!0,"---":!0,"``":!0,"''":!0};A(Ie,$,me,"–","--",!0);A(Ie,$,me,"–","\\textendash");A(Ie,$,me,"—","---",!0);A(Ie,$,me,"—","\\textemdash");A(Ie,$,me,"‘","`",!0);A(Ie,$,me,"‘","\\textquoteleft");A(Ie,$,me,"’","'",!0);A(Ie,$,me,"’","\\textquoteright");A(Ie,$,me,"“","``",!0);A(Ie,$,me,"“","\\textquotedblleft");A(Ie,$,me,"”","''",!0);A(Ie,$,me,"”","\\textquotedblright");A(D,$,me,"°","\\degree",!0);A(Ie,$,me,"°","\\degree");A(Ie,$,me,"°","\\textdegree",!0);A(D,$,me,"£","\\pounds");A(D,$,me,"£","\\mathsterling",!0);A(Ie,$,me,"£","\\pounds");A(Ie,$,me,"£","\\textsterling",!0);A(D,le,me,"✠","\\maltese");A(Ie,le,me,"✠","\\maltese");var tM='0123456789/@."';for(var j4=0;j40)return Sa(i,h,s,n,a.concat(f));if(c){var m,g;if(c==="boldsymbol"){var x=wbe(i,s,n,a,r);m=x.fontName,g=[x.fontClass]}else o?(m=sQ[c].fontName,g=[c]):(m=Rx(c,n.fontWeight,n.fontShape),g=[c,n.fontWeight,n.fontShape]);if(Ny(i,m,s).metrics)return Sa(i,m,s,n,a.concat(g));if(tQ.hasOwnProperty(i)&&m.slice(0,10)==="Typewriter"){for(var y=[],w=0;w{if(Oc(t.classes)!==Oc(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;if(t.classes.length===1){var n=t.classes[0];if(n==="mbin"||n==="mord")return!1}for(var r in t.style)if(t.style.hasOwnProperty(r)&&t.style[r]!==e.style[r])return!1;for(var s in e.style)if(e.style.hasOwnProperty(s)&&t.style[s]!==e.style[s])return!1;return!0},jbe=t=>{for(var e=0;en&&(n=a.height),a.depth>r&&(r=a.depth),a.maxFontSize>s&&(s=a.maxFontSize)}e.height=n,e.depth=r,e.maxFontSize=s},Zs=function(e,n,r,s){var i=new mp(e,n,r,s);return Gj(i),i},nQ=(t,e,n,r)=>new mp(t,e,n,r),Obe=function(e,n,r){var s=Zs([e],[],n);return s.height=Math.max(r||n.fontMetrics().defaultRuleThickness,n.minRuleThickness),s.style.borderBottomWidth=We(s.height),s.maxFontSize=1,s},Nbe=function(e,n,r,s){var i=new Wj(e,n,r,s);return Gj(i),i},rQ=function(e){var n=new fp(e);return Gj(n),n},Cbe=function(e,n){return e instanceof fp?Zs([],[e],n):e},Tbe=function(e){if(e.positionType==="individualShift"){for(var n=e.children,r=[n[0]],s=-n[0].shift-n[0].elem.depth,i=s,a=1;a{var n=Zs(["mspace"],[],e),r=gr(t,e);return n.style.marginRight=We(r),n},Rx=function(e,n,r){var s="";switch(e){case"amsrm":s="AMS";break;case"textrm":s="Main";break;case"textsf":s="SansSerif";break;case"texttt":s="Typewriter";break;default:s=e}var i;return n==="textbf"&&r==="textit"?i="BoldItalic":n==="textbf"?i="Bold":n==="textit"?i="Italic":i="Regular",s+"-"+i},sQ={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},iQ={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Mbe=function(e,n){var[r,s,i]=iQ[e],a=new Nc(r),o=new go([a],{width:We(s),height:We(i),style:"width:"+We(s),viewBox:"0 0 "+1e3*s+" "+1e3*i,preserveAspectRatio:"xMinYMin"}),c=nQ(["overlay"],[o],n);return c.height=i,c.style.height=We(i),c.style.width=We(s),c},be={fontMap:sQ,makeSymbol:Sa,mathsym:bbe,makeSpan:Zs,makeSvgSpan:nQ,makeLineSpan:Obe,makeAnchor:Nbe,makeFragment:rQ,wrapFragment:Cbe,makeVList:Ebe,makeOrd:Sbe,makeGlue:_be,staticSvg:Mbe,svgData:iQ,tryCombineChars:jbe},fr={number:3,unit:"mu"},lu={number:4,unit:"mu"},Wl={number:5,unit:"mu"},Abe={mord:{mop:fr,mbin:lu,mrel:Wl,minner:fr},mop:{mord:fr,mop:fr,mrel:Wl,minner:fr},mbin:{mord:lu,mop:lu,mopen:lu,minner:lu},mrel:{mord:Wl,mop:Wl,mopen:Wl,minner:Wl},mopen:{},mclose:{mop:fr,mbin:lu,mrel:Wl,minner:fr},mpunct:{mord:fr,mop:fr,mrel:Wl,mopen:fr,mclose:fr,mpunct:fr,minner:fr},minner:{mord:fr,mop:fr,mbin:lu,mrel:Wl,mopen:fr,mpunct:fr,minner:fr}},Rbe={mord:{mop:fr},mop:{mord:fr,mop:fr},mbin:{},mrel:{},mopen:{},mclose:{mop:fr},mpunct:{},minner:{mop:fr}},aQ={},hv={},fv={};function et(t){for(var{type:e,names:n,props:r,handler:s,htmlBuilder:i,mathmlBuilder:a}=t,o={type:e,numArgs:r.numArgs,argTypes:r.argTypes,allowedInArgument:!!r.allowedInArgument,allowedInText:!!r.allowedInText,allowedInMath:r.allowedInMath===void 0?!0:r.allowedInMath,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,primitive:!!r.primitive,handler:s},c=0;c{var S=w.classes[0],k=y.classes[0];S==="mbin"&&zbe.includes(k)?w.classes[0]="mord":k==="mbin"&&Dbe.includes(S)&&(y.classes[0]="mord")},{node:m},g,x),aM(i,(y,w)=>{var S=mk(w),k=mk(y),N=S&&k?y.hasClass("mtight")?Rbe[S][k]:Abe[S][k]:null;if(N)return be.makeGlue(N,h)},{node:m},g,x),i},aM=function t(e,n,r,s,i){s&&e.push(s);for(var a=0;ag=>{e.splice(m+1,0,g),a++})(a)}s&&e.pop()},lQ=function(e){return e instanceof fp||e instanceof Wj||e instanceof mp&&e.hasClass("enclosing")?e:null},Ibe=function t(e,n){var r=lQ(e);if(r){var s=r.children;if(s.length){if(n==="right")return t(s[s.length-1],"right");if(n==="left")return t(s[0],"left")}}return e},mk=function(e,n){return e?(n&&(e=Ibe(e,n)),Lbe[e.classes[0]]||null):null},k0=function(e,n){var r=["nulldelimiter"].concat(e.baseSizingClasses());return xo(n.concat(r))},Cn=function(e,n,r){if(!e)return xo();if(hv[e.type]){var s=hv[e.type](e,n);if(r&&n.size!==r.size){s=xo(n.sizingClasses(r),[s],n);var i=n.sizeMultiplier/r.sizeMultiplier;s.height*=i,s.depth*=i}return s}else throw new $e("Got group of unknown type: '"+e.type+"'")};function Dx(t,e){var n=xo(["base"],t,e),r=xo(["strut"]);return r.style.height=We(n.height+n.depth),n.depth&&(r.style.verticalAlign=We(-n.depth)),n.children.unshift(r),n}function pk(t,e){var n=null;t.length===1&&t[0].type==="tag"&&(n=t[0].tag,t=t[0].body);var r=es(t,e,"root"),s;r.length===2&&r[1].hasClass("tag")&&(s=r.pop());for(var i=[],a=[],o=0;o0&&(i.push(Dx(a,e)),a=[]),i.push(r[o]));a.length>0&&i.push(Dx(a,e));var h;n?(h=Dx(es(n,e,!0)),h.classes=["tag"],i.push(h)):s&&i.push(s);var f=xo(["katex-html"],i);if(f.setAttribute("aria-hidden","true"),h){var m=h.children[0];m.style.height=We(f.height+f.depth),f.depth&&(m.style.verticalAlign=We(-f.depth))}return f}function oQ(t){return new fp(t)}class Ti{constructor(e,n,r){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=n||[],this.classes=r||[]}setAttribute(e,n){this.attributes[e]=n}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&e.setAttribute(n,this.attributes[n]);this.classes.length>0&&(e.className=Oc(this.classes));for(var r=0;r0&&(e+=' class ="'+Mn.escape(Oc(this.classes))+'"'),e+=">";for(var r=0;r",e}toText(){return this.children.map(e=>e.toText()).join("")}}class al{constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return Mn.escape(this.toText())}toText(){return this.text}}class Bbe{constructor(e){this.width=void 0,this.character=void 0,this.width=e,e>=.05555&&e<=.05556?this.character=" ":e>=.1666&&e<=.1667?this.character=" ":e>=.2222&&e<=.2223?this.character=" ":e>=.2777&&e<=.2778?this.character="  ":e>=-.05556&&e<=-.05555?this.character=" ⁣":e>=-.1667&&e<=-.1666?this.character=" ⁣":e>=-.2223&&e<=-.2222?this.character=" ⁣":e>=-.2778&&e<=-.2777?this.character=" ⁣":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",We(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}}var Fe={MathNode:Ti,TextNode:al,SpaceNode:Bbe,newDocumentFragment:oQ},da=function(e,n,r){return Jn[n][e]&&Jn[n][e].replace&&e.charCodeAt(0)!==55349&&!(tQ.hasOwnProperty(e)&&r&&(r.fontFamily&&r.fontFamily.slice(4,6)==="tt"||r.font&&r.font.slice(4,6)==="tt"))&&(e=Jn[n][e].replace),new Fe.TextNode(e)},Xj=function(e){return e.length===1?e[0]:new Fe.MathNode("mrow",e)},Yj=function(e,n){if(n.fontFamily==="texttt")return"monospace";if(n.fontFamily==="textsf")return n.fontShape==="textit"&&n.fontWeight==="textbf"?"sans-serif-bold-italic":n.fontShape==="textit"?"sans-serif-italic":n.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(n.fontShape==="textit"&&n.fontWeight==="textbf")return"bold-italic";if(n.fontShape==="textit")return"italic";if(n.fontWeight==="textbf")return"bold";var r=n.font;if(!r||r==="mathnormal")return null;var s=e.mode;if(r==="mathit")return"italic";if(r==="boldsymbol")return e.type==="textord"?"bold":"bold-italic";if(r==="mathbf")return"bold";if(r==="mathbb")return"double-struck";if(r==="mathsfit")return"sans-serif-italic";if(r==="mathfrak")return"fraktur";if(r==="mathscr"||r==="mathcal")return"script";if(r==="mathsf")return"sans-serif";if(r==="mathtt")return"monospace";var i=e.text;if(["\\imath","\\jmath"].includes(i))return null;Jn[s][i]&&Jn[s][i].replace&&(i=Jn[s][i].replace);var a=be.fontMap[r].fontName;return Uj(i,a,s)?be.fontMap[r].variant:null};function T4(t){if(!t)return!1;if(t.type==="mi"&&t.children.length===1){var e=t.children[0];return e instanceof al&&e.text==="."}else if(t.type==="mo"&&t.children.length===1&&t.getAttribute("separator")==="true"&&t.getAttribute("lspace")==="0em"&&t.getAttribute("rspace")==="0em"){var n=t.children[0];return n instanceof al&&n.text===","}else return!1}var fi=function(e,n,r){if(e.length===1){var s=Kn(e[0],n);return r&&s instanceof Ti&&s.type==="mo"&&(s.setAttribute("lspace","0em"),s.setAttribute("rspace","0em")),[s]}for(var i=[],a,o=0;o=1&&(a.type==="mn"||T4(a))){var h=c.children[0];h instanceof Ti&&h.type==="mn"&&(h.children=[...a.children,...h.children],i.pop())}else if(a.type==="mi"&&a.children.length===1){var f=a.children[0];if(f instanceof al&&f.text==="̸"&&(c.type==="mo"||c.type==="mi"||c.type==="mn")){var m=c.children[0];m instanceof al&&m.text.length>0&&(m.text=m.text.slice(0,1)+"̸"+m.text.slice(1),i.pop())}}}i.push(c),a=c}return i},Cc=function(e,n,r){return Xj(fi(e,n,r))},Kn=function(e,n){if(!e)return new Fe.MathNode("mrow");if(fv[e.type]){var r=fv[e.type](e,n);return r}else throw new $e("Got group of unknown type: '"+e.type+"'")};function lM(t,e,n,r,s){var i=fi(t,n),a;i.length===1&&i[0]instanceof Ti&&["mrow","mtable"].includes(i[0].type)?a=i[0]:a=new Fe.MathNode("mrow",i);var o=new Fe.MathNode("annotation",[new Fe.TextNode(e)]);o.setAttribute("encoding","application/x-tex");var c=new Fe.MathNode("semantics",[a,o]),h=new Fe.MathNode("math",[c]);h.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),r&&h.setAttribute("display","block");var f=s?"katex":"katex-mathml";return be.makeSpan([f],[h])}var cQ=function(e){return new to({style:e.displayMode?St.DISPLAY:St.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},uQ=function(e,n){if(n.displayMode){var r=["katex-display"];n.leqno&&r.push("leqno"),n.fleqn&&r.push("fleqn"),e=be.makeSpan(r,[e])}return e},qbe=function(e,n,r){var s=cQ(r),i;if(r.output==="mathml")return lM(e,n,s,r.displayMode,!0);if(r.output==="html"){var a=pk(e,s);i=be.makeSpan(["katex"],[a])}else{var o=lM(e,n,s,r.displayMode,!1),c=pk(e,s);i=be.makeSpan(["katex"],[o,c])}return uQ(i,r)},Fbe=function(e,n,r){var s=cQ(r),i=pk(e,s),a=be.makeSpan(["katex"],[i]);return uQ(a,r)},$be={widehat:"^",widecheck:"ˇ",widetilde:"~",utilde:"~",overleftarrow:"←",underleftarrow:"←",xleftarrow:"←",overrightarrow:"→",underrightarrow:"→",xrightarrow:"→",underbrace:"⏟",overbrace:"⏞",overgroup:"⏠",undergroup:"⏡",overleftrightarrow:"↔",underleftrightarrow:"↔",xleftrightarrow:"↔",Overrightarrow:"⇒",xRightarrow:"⇒",overleftharpoon:"↼",xleftharpoonup:"↼",overrightharpoon:"⇀",xrightharpoonup:"⇀",xLeftarrow:"⇐",xLeftrightarrow:"⇔",xhookleftarrow:"↩",xhookrightarrow:"↪",xmapsto:"↦",xrightharpoondown:"⇁",xleftharpoondown:"↽",xrightleftharpoons:"⇌",xleftrightharpoons:"⇋",xtwoheadleftarrow:"↞",xtwoheadrightarrow:"↠",xlongequal:"=",xtofrom:"⇄",xrightleftarrows:"⇄",xrightequilibrium:"⇌",xleftequilibrium:"⇋","\\cdrightarrow":"→","\\cdleftarrow":"←","\\cdlongequal":"="},Qbe=function(e){var n=new Fe.MathNode("mo",[new Fe.TextNode($be[e.replace(/^\\/,"")])]);return n.setAttribute("stretchy","true"),n},Hbe={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Vbe=function(e){return e.type==="ordgroup"?e.body.length:1},Ube=function(e,n){function r(){var o=4e5,c=e.label.slice(1);if(["widehat","widecheck","widetilde","utilde"].includes(c)){var h=e,f=Vbe(h.base),m,g,x;if(f>5)c==="widehat"||c==="widecheck"?(m=420,o=2364,x=.42,g=c+"4"):(m=312,o=2340,x=.34,g="tilde4");else{var y=[1,1,2,2,3,3][f];c==="widehat"||c==="widecheck"?(o=[0,1062,2364,2364,2364][y],m=[0,239,300,360,420][y],x=[0,.24,.3,.3,.36,.42][y],g=c+y):(o=[0,600,1033,2339,2340][y],m=[0,260,286,306,312][y],x=[0,.26,.286,.3,.306,.34][y],g="tilde"+y)}var w=new Nc(g),S=new go([w],{width:"100%",height:We(x),viewBox:"0 0 "+o+" "+m,preserveAspectRatio:"none"});return{span:be.makeSvgSpan([],[S],n),minWidth:0,height:x}}else{var k=[],N=Hbe[c],[C,T,_]=N,E=_/1e3,M=C.length,L,P;if(M===1){var I=N[3];L=["hide-tail"],P=[I]}else if(M===2)L=["halfarrow-left","halfarrow-right"],P=["xMinYMin","xMaxYMin"];else if(M===3)L=["brace-left","brace-center","brace-right"],P=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support - `+M+" children.");for(var Q=0;Q0&&(s.style.minWidth=We(i)),s},Wbe=function(e,n,r,s,i){var a,o=e.height+e.depth+r+s;if(/fbox|color|angl/.test(n)){if(a=be.makeSpan(["stretchy",n],[],i),n==="fbox"){var c=i.color&&i.getColor();c&&(a.style.borderColor=c)}}else{var h=[];/^[bx]cancel$/.test(n)&&h.push(new hk({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(n)&&h.push(new hk({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var f=new go(h,{width:"100%",height:We(o)});a=be.makeSvgSpan([],[f],i)}return a.height=o,a.style.height=We(o),a},vo={encloseSpan:Wbe,mathMLnode:Qbe,svgSpan:Ube};function Wt(t,e){if(!t||t.type!==e)throw new Error("Expected node of type "+e+", but got "+(t?"node of type "+t.type:String(t)));return t}function Kj(t){var e=Cy(t);if(!e)throw new Error("Expected node of symbol group type, but got "+(t?"node of type "+t.type:String(t)));return e}function Cy(t){return t&&(t.type==="atom"||vbe.hasOwnProperty(t.type))?t:null}var Zj=(t,e)=>{var n,r,s;t&&t.type==="supsub"?(r=Wt(t.base,"accent"),n=r.base,t.base=n,s=gbe(Cn(t,e)),t.base=r):(r=Wt(t,"accent"),n=r.base);var i=Cn(n,e.havingCrampedStyle()),a=r.isShifty&&Mn.isCharacterBox(n),o=0;if(a){var c=Mn.getBaseElem(n),h=Cn(c,e.havingCrampedStyle());o=eM(h).skew}var f=r.label==="\\c",m=f?i.height+i.depth:Math.min(i.height,e.fontMetrics().xHeight),g;if(r.isStretchy)g=vo.svgSpan(r,e),g=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:g,wrapperClasses:["svg-align"],wrapperStyle:o>0?{width:"calc(100% - "+We(2*o)+")",marginLeft:We(2*o)}:void 0}]},e);else{var x,y;r.label==="\\vec"?(x=be.staticSvg("vec",e),y=be.svgData.vec[1]):(x=be.makeOrd({mode:r.mode,text:r.label},e,"textord"),x=eM(x),x.italic=0,y=x.width,f&&(m+=x.depth)),g=be.makeSpan(["accent-body"],[x]);var w=r.label==="\\textcircled";w&&(g.classes.push("accent-full"),m=i.height);var S=o;w||(S-=y/2),g.style.left=We(S),r.label==="\\textcircled"&&(g.style.top=".2em"),g=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-m},{type:"elem",elem:g}]},e)}var k=be.makeSpan(["mord","accent"],[g],e);return s?(s.children[0]=k,s.height=Math.max(k.height,s.height),s.classes[0]="mord",s):k},dQ=(t,e)=>{var n=t.isStretchy?vo.mathMLnode(t.label):new Fe.MathNode("mo",[da(t.label,t.mode)]),r=new Fe.MathNode("mover",[Kn(t.base,e),n]);return r.setAttribute("accent","true"),r},Gbe=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(t=>"\\"+t).join("|"));et({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(t,e)=>{var n=mv(e[0]),r=!Gbe.test(t.funcName),s=!r||t.funcName==="\\widehat"||t.funcName==="\\widetilde"||t.funcName==="\\widecheck";return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:r,isShifty:s,base:n}},htmlBuilder:Zj,mathmlBuilder:dQ});et({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(t,e)=>{var n=e[0],r=t.parser.mode;return r==="math"&&(t.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+t.funcName+" works only in text mode"),r="text"),{type:"accent",mode:r,label:t.funcName,isStretchy:!1,isShifty:!0,base:n}},htmlBuilder:Zj,mathmlBuilder:dQ});et({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0];return{type:"accentUnder",mode:n.mode,label:r,base:s}},htmlBuilder:(t,e)=>{var n=Cn(t.base,e),r=vo.svgSpan(t,e),s=t.label==="\\utilde"?.12:0,i=be.makeVList({positionType:"top",positionData:n.height,children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:s},{type:"elem",elem:n}]},e);return be.makeSpan(["mord","accentunder"],[i],e)},mathmlBuilder:(t,e)=>{var n=vo.mathMLnode(t.label),r=new Fe.MathNode("munder",[Kn(t.base,e),n]);return r.setAttribute("accentunder","true"),r}});var zx=t=>{var e=new Fe.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e};et({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,n){var{parser:r,funcName:s}=t;return{type:"xArrow",mode:r.mode,label:s,body:e[0],below:n[0]}},htmlBuilder(t,e){var n=e.style,r=e.havingStyle(n.sup()),s=be.wrapFragment(Cn(t.body,r,e),e),i=t.label.slice(0,2)==="\\x"?"x":"cd";s.classes.push(i+"-arrow-pad");var a;t.below&&(r=e.havingStyle(n.sub()),a=be.wrapFragment(Cn(t.below,r,e),e),a.classes.push(i+"-arrow-pad"));var o=vo.svgSpan(t,e),c=-e.fontMetrics().axisHeight+.5*o.height,h=-e.fontMetrics().axisHeight-.5*o.height-.111;(s.depth>.25||t.label==="\\xleftequilibrium")&&(h-=s.depth);var f;if(a){var m=-e.fontMetrics().axisHeight+a.height+.5*o.height+.111;f=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:h},{type:"elem",elem:o,shift:c},{type:"elem",elem:a,shift:m}]},e)}else f=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:h},{type:"elem",elem:o,shift:c}]},e);return f.children[0].children[0].children[1].classes.push("svg-align"),be.makeSpan(["mrel","x-arrow"],[f],e)},mathmlBuilder(t,e){var n=vo.mathMLnode(t.label);n.setAttribute("minsize",t.label.charAt(0)==="x"?"1.75em":"3.0em");var r;if(t.body){var s=zx(Kn(t.body,e));if(t.below){var i=zx(Kn(t.below,e));r=new Fe.MathNode("munderover",[n,i,s])}else r=new Fe.MathNode("mover",[n,s])}else if(t.below){var a=zx(Kn(t.below,e));r=new Fe.MathNode("munder",[n,a])}else r=zx(),r=new Fe.MathNode("mover",[n,r]);return r}});var Xbe=be.makeSpan;function hQ(t,e){var n=es(t.body,e,!0);return Xbe([t.mclass],n,e)}function fQ(t,e){var n,r=fi(t.body,e);return t.mclass==="minner"?n=new Fe.MathNode("mpadded",r):t.mclass==="mord"?t.isCharacterBox?(n=r[0],n.type="mi"):n=new Fe.MathNode("mi",r):(t.isCharacterBox?(n=r[0],n.type="mo"):n=new Fe.MathNode("mo",r),t.mclass==="mbin"?(n.attributes.lspace="0.22em",n.attributes.rspace="0.22em"):t.mclass==="mpunct"?(n.attributes.lspace="0em",n.attributes.rspace="0.17em"):t.mclass==="mopen"||t.mclass==="mclose"?(n.attributes.lspace="0em",n.attributes.rspace="0em"):t.mclass==="minner"&&(n.attributes.lspace="0.0556em",n.attributes.width="+0.1111em")),n}et({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];return{type:"mclass",mode:n.mode,mclass:"m"+r.slice(5),body:Er(s),isCharacterBox:Mn.isCharacterBox(s)}},htmlBuilder:hQ,mathmlBuilder:fQ});var Ty=t=>{var e=t.type==="ordgroup"&&t.body.length?t.body[0]:t;return e.type==="atom"&&(e.family==="bin"||e.family==="rel")?"m"+e.family:"mord"};et({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(t,e){var{parser:n}=t;return{type:"mclass",mode:n.mode,mclass:Ty(e[0]),body:Er(e[1]),isCharacterBox:Mn.isCharacterBox(e[1])}}});et({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(t,e){var{parser:n,funcName:r}=t,s=e[1],i=e[0],a;r!=="\\stackrel"?a=Ty(s):a="mrel";var o={type:"op",mode:s.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:r!=="\\stackrel",body:Er(s)},c={type:"supsub",mode:i.mode,base:o,sup:r==="\\underset"?null:i,sub:r==="\\underset"?i:null};return{type:"mclass",mode:n.mode,mclass:a,body:[c],isCharacterBox:Mn.isCharacterBox(c)}},htmlBuilder:hQ,mathmlBuilder:fQ});et({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"pmb",mode:n.mode,mclass:Ty(e[0]),body:Er(e[0])}},htmlBuilder(t,e){var n=es(t.body,e,!0),r=be.makeSpan([t.mclass],n,e);return r.style.textShadow="0.02em 0.01em 0.04px",r},mathmlBuilder(t,e){var n=fi(t.body,e),r=new Fe.MathNode("mstyle",n);return r.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),r}});var Ybe={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},oM=()=>({type:"styling",body:[],mode:"math",style:"display"}),cM=t=>t.type==="textord"&&t.text==="@",Kbe=(t,e)=>(t.type==="mathord"||t.type==="atom")&&t.text===e;function Zbe(t,e,n){var r=Ybe[t];switch(r){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return n.callFunction(r,[e[0]],[e[1]]);case"\\uparrow":case"\\downarrow":{var s=n.callFunction("\\\\cdleft",[e[0]],[]),i={type:"atom",text:r,mode:"math",family:"rel"},a=n.callFunction("\\Big",[i],[]),o=n.callFunction("\\\\cdright",[e[1]],[]),c={type:"ordgroup",mode:"math",body:[s,a,o]};return n.callFunction("\\\\cdparent",[c],[])}case"\\\\cdlongequal":return n.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var h={type:"textord",text:"\\Vert",mode:"math"};return n.callFunction("\\Big",[h],[])}default:return{type:"textord",text:" ",mode:"math"}}}function Jbe(t){var e=[];for(t.gullet.beginGroup(),t.gullet.macros.set("\\cr","\\\\\\relax"),t.gullet.beginGroup();;){e.push(t.parseExpression(!1,"\\\\")),t.gullet.endGroup(),t.gullet.beginGroup();var n=t.fetch().text;if(n==="&"||n==="\\\\")t.consume();else if(n==="\\end"){e[e.length-1].length===0&&e.pop();break}else throw new $e("Expected \\\\ or \\cr or \\end",t.nextToken)}for(var r=[],s=[r],i=0;i-1))if("<>AV".indexOf(h)>-1)for(var m=0;m<2;m++){for(var g=!0,x=c+1;xAV=|." after @',a[c]);var y=Zbe(h,f,t),w={type:"styling",body:[y],mode:"math",style:"display"};r.push(w),o=oM()}i%2===0?r.push(o):r.shift(),r=[],s.push(r)}t.gullet.endGroup(),t.gullet.endGroup();var S=new Array(s[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:s,arraystretch:1,addJot:!0,rowGaps:[null],cols:S,colSeparationType:"CD",hLinesBeforeRow:new Array(s.length+1).fill([])}}et({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:r}=t;return{type:"cdlabel",mode:n.mode,side:r.slice(4),label:e[0]}},htmlBuilder(t,e){var n=e.havingStyle(e.style.sup()),r=be.wrapFragment(Cn(t.label,n,e),e);return r.classes.push("cd-label-"+t.side),r.style.bottom=We(.8-r.depth),r.height=0,r.depth=0,r},mathmlBuilder(t,e){var n=new Fe.MathNode("mrow",[Kn(t.label,e)]);return n=new Fe.MathNode("mpadded",[n]),n.setAttribute("width","0"),t.side==="left"&&n.setAttribute("lspace","-1width"),n.setAttribute("voffset","0.7em"),n=new Fe.MathNode("mstyle",[n]),n.setAttribute("displaystyle","false"),n.setAttribute("scriptlevel","1"),n}});et({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(t,e){var{parser:n}=t;return{type:"cdlabelparent",mode:n.mode,fragment:e[0]}},htmlBuilder(t,e){var n=be.wrapFragment(Cn(t.fragment,e),e);return n.classes.push("cd-vert-arrow"),n},mathmlBuilder(t,e){return new Fe.MathNode("mrow",[Kn(t.fragment,e)])}});et({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(t,e){for(var{parser:n}=t,r=Wt(e[0],"ordgroup"),s=r.body,i="",a=0;a=1114111)throw new $e("\\@char with invalid code point "+i);return c<=65535?h=String.fromCharCode(c):(c-=65536,h=String.fromCharCode((c>>10)+55296,(c&1023)+56320)),{type:"textord",mode:n.mode,text:h}}});var mQ=(t,e)=>{var n=es(t.body,e.withColor(t.color),!1);return be.makeFragment(n)},pQ=(t,e)=>{var n=fi(t.body,e.withColor(t.color)),r=new Fe.MathNode("mstyle",n);return r.setAttribute("mathcolor",t.color),r};et({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(t,e){var{parser:n}=t,r=Wt(e[0],"color-token").color,s=e[1];return{type:"color",mode:n.mode,color:r,body:Er(s)}},htmlBuilder:mQ,mathmlBuilder:pQ});et({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(t,e){var{parser:n,breakOnTokenText:r}=t,s=Wt(e[0],"color-token").color;n.gullet.macros.set("\\current@color",s);var i=n.parseExpression(!0,r);return{type:"color",mode:n.mode,color:s,body:i}},htmlBuilder:mQ,mathmlBuilder:pQ});et({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(t,e,n){var{parser:r}=t,s=r.gullet.future().text==="["?r.parseSizeGroup(!0):null,i=!r.settings.displayMode||!r.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:r.mode,newLine:i,size:s&&Wt(s,"size").value}},htmlBuilder(t,e){var n=be.makeSpan(["mspace"],[],e);return t.newLine&&(n.classes.push("newline"),t.size&&(n.style.marginTop=We(gr(t.size,e)))),n},mathmlBuilder(t,e){var n=new Fe.MathNode("mspace");return t.newLine&&(n.setAttribute("linebreak","newline"),t.size&&n.setAttribute("height",We(gr(t.size,e)))),n}});var gk={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},gQ=t=>{var e=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new $e("Expected a control sequence",t);return e},e2e=t=>{var e=t.gullet.popToken();return e.text==="="&&(e=t.gullet.popToken(),e.text===" "&&(e=t.gullet.popToken())),e},xQ=(t,e,n,r)=>{var s=t.gullet.macros.get(n.text);s==null&&(n.noexpand=!0,s={tokens:[n],numArgs:0,unexpandable:!t.gullet.isExpandable(n.text)}),t.gullet.macros.set(e,s,r)};et({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(t){var{parser:e,funcName:n}=t;e.consumeSpaces();var r=e.fetch();if(gk[r.text])return(n==="\\global"||n==="\\\\globallong")&&(r.text=gk[r.text]),Wt(e.parseFunction(),"internal");throw new $e("Invalid token after macro prefix",r)}});et({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,r=e.gullet.popToken(),s=r.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(s))throw new $e("Expected a control sequence",r);for(var i=0,a,o=[[]];e.gullet.future().text!=="{";)if(r=e.gullet.popToken(),r.text==="#"){if(e.gullet.future().text==="{"){a=e.gullet.future(),o[i].push("{");break}if(r=e.gullet.popToken(),!/^[1-9]$/.test(r.text))throw new $e('Invalid argument number "'+r.text+'"');if(parseInt(r.text)!==i+1)throw new $e('Argument number "'+r.text+'" out of order');i++,o.push([])}else{if(r.text==="EOF")throw new $e("Expected a macro definition");o[i].push(r.text)}var{tokens:c}=e.gullet.consumeArg();return a&&c.unshift(a),(n==="\\edef"||n==="\\xdef")&&(c=e.gullet.expandTokens(c),c.reverse()),e.gullet.macros.set(s,{tokens:c,numArgs:i,delimiters:o},n===gk[n]),{type:"internal",mode:e.mode}}});et({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,r=gQ(e.gullet.popToken());e.gullet.consumeSpaces();var s=e2e(e);return xQ(e,r,s,n==="\\\\globallet"),{type:"internal",mode:e.mode}}});et({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,r=gQ(e.gullet.popToken()),s=e.gullet.popToken(),i=e.gullet.popToken();return xQ(e,r,i,n==="\\\\globalfuture"),e.gullet.pushToken(i),e.gullet.pushToken(s),{type:"internal",mode:e.mode}}});var ym=function(e,n,r){var s=Jn.math[e]&&Jn.math[e].replace,i=Uj(s||e,n,r);if(!i)throw new Error("Unsupported symbol "+e+" and font size "+n+".");return i},Jj=function(e,n,r,s){var i=r.havingBaseStyle(n),a=be.makeSpan(s.concat(i.sizingClasses(r)),[e],r),o=i.sizeMultiplier/r.sizeMultiplier;return a.height*=o,a.depth*=o,a.maxFontSize=i.sizeMultiplier,a},vQ=function(e,n,r){var s=n.havingBaseStyle(r),i=(1-n.sizeMultiplier/s.sizeMultiplier)*n.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=We(i),e.height-=i,e.depth+=i},t2e=function(e,n,r,s,i,a){var o=be.makeSymbol(e,"Main-Regular",i,s),c=Jj(o,n,s,a);return r&&vQ(c,s,n),c},n2e=function(e,n,r,s){return be.makeSymbol(e,"Size"+n+"-Regular",r,s)},yQ=function(e,n,r,s,i,a){var o=n2e(e,n,i,s),c=Jj(be.makeSpan(["delimsizing","size"+n],[o],s),St.TEXT,s,a);return r&&vQ(c,s,St.TEXT),c},E4=function(e,n,r){var s;n==="Size1-Regular"?s="delim-size1":s="delim-size4";var i=be.makeSpan(["delimsizinginner",s],[be.makeSpan([],[be.makeSymbol(e,n,r)])]);return{type:"elem",elem:i}},_4=function(e,n,r){var s=il["Size4-Regular"][e.charCodeAt(0)]?il["Size4-Regular"][e.charCodeAt(0)][4]:il["Size1-Regular"][e.charCodeAt(0)][4],i=new Nc("inner",lbe(e,Math.round(1e3*n))),a=new go([i],{width:We(s),height:We(n),style:"width:"+We(s),viewBox:"0 0 "+1e3*s+" "+Math.round(1e3*n),preserveAspectRatio:"xMinYMin"}),o=be.makeSvgSpan([],[a],r);return o.height=n,o.style.height=We(n),o.style.width=We(s),{type:"elem",elem:o}},xk=.008,Px={type:"kern",size:-1*xk},r2e=["|","\\lvert","\\rvert","\\vert"],s2e=["\\|","\\lVert","\\rVert","\\Vert"],bQ=function(e,n,r,s,i,a){var o,c,h,f,m="",g=0;o=h=f=e,c=null;var x="Size1-Regular";e==="\\uparrow"?h=f="⏐":e==="\\Uparrow"?h=f="‖":e==="\\downarrow"?o=h="⏐":e==="\\Downarrow"?o=h="‖":e==="\\updownarrow"?(o="\\uparrow",h="⏐",f="\\downarrow"):e==="\\Updownarrow"?(o="\\Uparrow",h="‖",f="\\Downarrow"):r2e.includes(e)?(h="∣",m="vert",g=333):s2e.includes(e)?(h="∥",m="doublevert",g=556):e==="["||e==="\\lbrack"?(o="⎡",h="⎢",f="⎣",x="Size4-Regular",m="lbrack",g=667):e==="]"||e==="\\rbrack"?(o="⎤",h="⎥",f="⎦",x="Size4-Regular",m="rbrack",g=667):e==="\\lfloor"||e==="⌊"?(h=o="⎢",f="⎣",x="Size4-Regular",m="lfloor",g=667):e==="\\lceil"||e==="⌈"?(o="⎡",h=f="⎢",x="Size4-Regular",m="lceil",g=667):e==="\\rfloor"||e==="⌋"?(h=o="⎥",f="⎦",x="Size4-Regular",m="rfloor",g=667):e==="\\rceil"||e==="⌉"?(o="⎤",h=f="⎥",x="Size4-Regular",m="rceil",g=667):e==="("||e==="\\lparen"?(o="⎛",h="⎜",f="⎝",x="Size4-Regular",m="lparen",g=875):e===")"||e==="\\rparen"?(o="⎞",h="⎟",f="⎠",x="Size4-Regular",m="rparen",g=875):e==="\\{"||e==="\\lbrace"?(o="⎧",c="⎨",f="⎩",h="⎪",x="Size4-Regular"):e==="\\}"||e==="\\rbrace"?(o="⎫",c="⎬",f="⎭",h="⎪",x="Size4-Regular"):e==="\\lgroup"||e==="⟮"?(o="⎧",f="⎩",h="⎪",x="Size4-Regular"):e==="\\rgroup"||e==="⟯"?(o="⎫",f="⎭",h="⎪",x="Size4-Regular"):e==="\\lmoustache"||e==="⎰"?(o="⎧",f="⎭",h="⎪",x="Size4-Regular"):(e==="\\rmoustache"||e==="⎱")&&(o="⎫",f="⎩",h="⎪",x="Size4-Regular");var y=ym(o,x,i),w=y.height+y.depth,S=ym(h,x,i),k=S.height+S.depth,N=ym(f,x,i),C=N.height+N.depth,T=0,_=1;if(c!==null){var E=ym(c,x,i);T=E.height+E.depth,_=2}var M=w+C+T,L=Math.max(0,Math.ceil((n-M)/(_*k))),P=M+L*_*k,I=s.fontMetrics().axisHeight;r&&(I*=s.sizeMultiplier);var Q=P/2-I,U=[];if(m.length>0){var ee=P-w-C,z=Math.round(P*1e3),H=obe(m,Math.round(ee*1e3)),B=new Nc(m,H),X=(g/1e3).toFixed(3)+"em",J=(z/1e3).toFixed(3)+"em",G=new go([B],{width:X,height:J,viewBox:"0 0 "+g+" "+z}),R=be.makeSvgSpan([],[G],s);R.height=z/1e3,R.style.width=X,R.style.height=J,U.push({type:"elem",elem:R})}else{if(U.push(E4(f,x,i)),U.push(Px),c===null){var se=P-w-C+2*xk;U.push(_4(h,se,s))}else{var W=(P-w-C-T)/2+2*xk;U.push(_4(h,W,s)),U.push(Px),U.push(E4(c,x,i)),U.push(Px),U.push(_4(h,W,s))}U.push(Px),U.push(E4(o,x,i))}var F=s.havingBaseStyle(St.TEXT),V=be.makeVList({positionType:"bottom",positionData:Q,children:U},F);return Jj(be.makeSpan(["delimsizing","mult"],[V],F),St.TEXT,s,a)},M4=80,A4=.08,R4=function(e,n,r,s,i){var a=abe(e,s,r),o=new Nc(e,a),c=new go([o],{width:"400em",height:We(n),viewBox:"0 0 400000 "+r,preserveAspectRatio:"xMinYMin slice"});return be.makeSvgSpan(["hide-tail"],[c],i)},i2e=function(e,n){var r=n.havingBaseSizing(),s=jQ("\\surd",e*r.sizeMultiplier,kQ,r),i=r.sizeMultiplier,a=Math.max(0,n.minRuleThickness-n.fontMetrics().sqrtRuleThickness),o,c=0,h=0,f=0,m;return s.type==="small"?(f=1e3+1e3*a+M4,e<1?i=1:e<1.4&&(i=.7),c=(1+a+A4)/i,h=(1+a)/i,o=R4("sqrtMain",c,f,a,n),o.style.minWidth="0.853em",m=.833/i):s.type==="large"?(f=(1e3+M4)*qm[s.size],h=(qm[s.size]+a)/i,c=(qm[s.size]+a+A4)/i,o=R4("sqrtSize"+s.size,c,f,a,n),o.style.minWidth="1.02em",m=1/i):(c=e+a+A4,h=e+a,f=Math.floor(1e3*e+a)+M4,o=R4("sqrtTall",c,f,a,n),o.style.minWidth="0.742em",m=1.056),o.height=h,o.style.height=We(c),{span:o,advanceWidth:m,ruleWidth:(n.fontMetrics().sqrtRuleThickness+a)*i}},wQ=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"],a2e=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"],SQ=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],qm=[0,1.2,1.8,2.4,3],l2e=function(e,n,r,s,i){if(e==="<"||e==="\\lt"||e==="⟨"?e="\\langle":(e===">"||e==="\\gt"||e==="⟩")&&(e="\\rangle"),wQ.includes(e)||SQ.includes(e))return yQ(e,n,!1,r,s,i);if(a2e.includes(e))return bQ(e,qm[n],!1,r,s,i);throw new $e("Illegal delimiter: '"+e+"'")},o2e=[{type:"small",style:St.SCRIPTSCRIPT},{type:"small",style:St.SCRIPT},{type:"small",style:St.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],c2e=[{type:"small",style:St.SCRIPTSCRIPT},{type:"small",style:St.SCRIPT},{type:"small",style:St.TEXT},{type:"stack"}],kQ=[{type:"small",style:St.SCRIPTSCRIPT},{type:"small",style:St.SCRIPT},{type:"small",style:St.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],u2e=function(e){if(e.type==="small")return"Main-Regular";if(e.type==="large")return"Size"+e.size+"-Regular";if(e.type==="stack")return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},jQ=function(e,n,r,s){for(var i=Math.min(2,3-s.style.size),a=i;an)return r[a]}return r[r.length-1]},OQ=function(e,n,r,s,i,a){e==="<"||e==="\\lt"||e==="⟨"?e="\\langle":(e===">"||e==="\\gt"||e==="⟩")&&(e="\\rangle");var o;SQ.includes(e)?o=o2e:wQ.includes(e)?o=kQ:o=c2e;var c=jQ(e,n,o,s);return c.type==="small"?t2e(e,c.style,r,s,i,a):c.type==="large"?yQ(e,c.size,r,s,i,a):bQ(e,n,r,s,i,a)},d2e=function(e,n,r,s,i,a){var o=s.fontMetrics().axisHeight*s.sizeMultiplier,c=901,h=5/s.fontMetrics().ptPerEm,f=Math.max(n-o,r+o),m=Math.max(f/500*c,2*f-h);return OQ(e,m,!0,s,i,a)},uo={sqrtImage:i2e,sizedDelim:l2e,sizeToMaxHeight:qm,customSizedDelim:OQ,leftRightDelim:d2e},uM={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},h2e=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function Ey(t,e){var n=Cy(t);if(n&&h2e.includes(n.text))return n;throw n?new $e("Invalid delimiter '"+n.text+"' after '"+e.funcName+"'",t):new $e("Invalid delimiter type '"+t.type+"'",t)}et({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(t,e)=>{var n=Ey(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:uM[t.funcName].size,mclass:uM[t.funcName].mclass,delim:n.text}},htmlBuilder:(t,e)=>t.delim==="."?be.makeSpan([t.mclass]):uo.sizedDelim(t.delim,t.size,e,t.mode,[t.mclass]),mathmlBuilder:t=>{var e=[];t.delim!=="."&&e.push(da(t.delim,t.mode));var n=new Fe.MathNode("mo",e);t.mclass==="mopen"||t.mclass==="mclose"?n.setAttribute("fence","true"):n.setAttribute("fence","false"),n.setAttribute("stretchy","true");var r=We(uo.sizeToMaxHeight[t.size]);return n.setAttribute("minsize",r),n.setAttribute("maxsize",r),n}});function dM(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}et({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=t.parser.gullet.macros.get("\\current@color");if(n&&typeof n!="string")throw new $e("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:Ey(e[0],t).text,color:n}}});et({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=Ey(e[0],t),r=t.parser;++r.leftrightDepth;var s=r.parseExpression(!1);--r.leftrightDepth,r.expect("\\right",!1);var i=Wt(r.parseFunction(),"leftright-right");return{type:"leftright",mode:r.mode,body:s,left:n.text,right:i.delim,rightColor:i.color}},htmlBuilder:(t,e)=>{dM(t);for(var n=es(t.body,e,!0,["mopen","mclose"]),r=0,s=0,i=!1,a=0;a{dM(t);var n=fi(t.body,e);if(t.left!=="."){var r=new Fe.MathNode("mo",[da(t.left,t.mode)]);r.setAttribute("fence","true"),n.unshift(r)}if(t.right!=="."){var s=new Fe.MathNode("mo",[da(t.right,t.mode)]);s.setAttribute("fence","true"),t.rightColor&&s.setAttribute("mathcolor",t.rightColor),n.push(s)}return Xj(n)}});et({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=Ey(e[0],t);if(!t.parser.leftrightDepth)throw new $e("\\middle without preceding \\left",n);return{type:"middle",mode:t.parser.mode,delim:n.text}},htmlBuilder:(t,e)=>{var n;if(t.delim===".")n=k0(e,[]);else{n=uo.sizedDelim(t.delim,1,e,t.mode,[]);var r={delim:t.delim,options:e};n.isMiddle=r}return n},mathmlBuilder:(t,e)=>{var n=t.delim==="\\vert"||t.delim==="|"?da("|","text"):da(t.delim,t.mode),r=new Fe.MathNode("mo",[n]);return r.setAttribute("fence","true"),r.setAttribute("lspace","0.05em"),r.setAttribute("rspace","0.05em"),r}});var eO=(t,e)=>{var n=be.wrapFragment(Cn(t.body,e),e),r=t.label.slice(1),s=e.sizeMultiplier,i,a=0,o=Mn.isCharacterBox(t.body);if(r==="sout")i=be.makeSpan(["stretchy","sout"]),i.height=e.fontMetrics().defaultRuleThickness/s,a=-.5*e.fontMetrics().xHeight;else if(r==="phase"){var c=gr({number:.6,unit:"pt"},e),h=gr({number:.35,unit:"ex"},e),f=e.havingBaseSizing();s=s/f.sizeMultiplier;var m=n.height+n.depth+c+h;n.style.paddingLeft=We(m/2+c);var g=Math.floor(1e3*m*s),x=sbe(g),y=new go([new Nc("phase",x)],{width:"400em",height:We(g/1e3),viewBox:"0 0 400000 "+g,preserveAspectRatio:"xMinYMin slice"});i=be.makeSvgSpan(["hide-tail"],[y],e),i.style.height=We(m),a=n.depth+c+h}else{/cancel/.test(r)?o||n.classes.push("cancel-pad"):r==="angl"?n.classes.push("anglpad"):n.classes.push("boxpad");var w=0,S=0,k=0;/box/.test(r)?(k=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),w=e.fontMetrics().fboxsep+(r==="colorbox"?0:k),S=w):r==="angl"?(k=Math.max(e.fontMetrics().defaultRuleThickness,e.minRuleThickness),w=4*k,S=Math.max(0,.25-n.depth)):(w=o?.2:0,S=w),i=vo.encloseSpan(n,r,w,S,e),/fbox|boxed|fcolorbox/.test(r)?(i.style.borderStyle="solid",i.style.borderWidth=We(k)):r==="angl"&&k!==.049&&(i.style.borderTopWidth=We(k),i.style.borderRightWidth=We(k)),a=n.depth+S,t.backgroundColor&&(i.style.backgroundColor=t.backgroundColor,t.borderColor&&(i.style.borderColor=t.borderColor))}var N;if(t.backgroundColor)N=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:a},{type:"elem",elem:n,shift:0}]},e);else{var C=/cancel|phase/.test(r)?["svg-align"]:[];N=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:0},{type:"elem",elem:i,shift:a,wrapperClasses:C}]},e)}return/cancel/.test(r)&&(N.height=n.height,N.depth=n.depth),/cancel/.test(r)&&!o?be.makeSpan(["mord","cancel-lap"],[N],e):be.makeSpan(["mord"],[N],e)},tO=(t,e)=>{var n=0,r=new Fe.MathNode(t.label.indexOf("colorbox")>-1?"mpadded":"menclose",[Kn(t.body,e)]);switch(t.label){case"\\cancel":r.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":r.setAttribute("notation","downdiagonalstrike");break;case"\\phase":r.setAttribute("notation","phasorangle");break;case"\\sout":r.setAttribute("notation","horizontalstrike");break;case"\\fbox":r.setAttribute("notation","box");break;case"\\angl":r.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(n=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,r.setAttribute("width","+"+2*n+"pt"),r.setAttribute("height","+"+2*n+"pt"),r.setAttribute("lspace",n+"pt"),r.setAttribute("voffset",n+"pt"),t.label==="\\fcolorbox"){var s=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);r.setAttribute("style","border: "+s+"em solid "+String(t.borderColor))}break;case"\\xcancel":r.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return t.backgroundColor&&r.setAttribute("mathbackground",t.backgroundColor),r};et({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(t,e,n){var{parser:r,funcName:s}=t,i=Wt(e[0],"color-token").color,a=e[1];return{type:"enclose",mode:r.mode,label:s,backgroundColor:i,body:a}},htmlBuilder:eO,mathmlBuilder:tO});et({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(t,e,n){var{parser:r,funcName:s}=t,i=Wt(e[0],"color-token").color,a=Wt(e[1],"color-token").color,o=e[2];return{type:"enclose",mode:r.mode,label:s,backgroundColor:a,borderColor:i,body:o}},htmlBuilder:eO,mathmlBuilder:tO});et({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"enclose",mode:n.mode,label:"\\fbox",body:e[0]}}});et({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];return{type:"enclose",mode:n.mode,label:r,body:s}},htmlBuilder:eO,mathmlBuilder:tO});et({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(t,e){var{parser:n}=t;return{type:"enclose",mode:n.mode,label:"\\angl",body:e[0]}}});var NQ={};function yl(t){for(var{type:e,names:n,props:r,handler:s,htmlBuilder:i,mathmlBuilder:a}=t,o={type:e,numArgs:r.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:s},c=0;c{var e=t.parser.settings;if(!e.displayMode)throw new $e("{"+t.envName+"} can be used only in display mode.")};function nO(t){if(t.indexOf("ed")===-1)return t.indexOf("*")===-1}function Pc(t,e,n){var{hskipBeforeAndAfter:r,addJot:s,cols:i,arraystretch:a,colSeparationType:o,autoTag:c,singleRow:h,emptySingleRow:f,maxNumCols:m,leqno:g}=e;if(t.gullet.beginGroup(),h||t.gullet.macros.set("\\cr","\\\\\\relax"),!a){var x=t.gullet.expandMacroAsText("\\arraystretch");if(x==null)a=1;else if(a=parseFloat(x),!a||a<0)throw new $e("Invalid \\arraystretch: "+x)}t.gullet.beginGroup();var y=[],w=[y],S=[],k=[],N=c!=null?[]:void 0;function C(){c&&t.gullet.macros.set("\\@eqnsw","1",!0)}function T(){N&&(t.gullet.macros.get("\\df@tag")?(N.push(t.subparse([new Ri("\\df@tag")])),t.gullet.macros.set("\\df@tag",void 0,!0)):N.push(!!c&&t.gullet.macros.get("\\@eqnsw")==="1"))}for(C(),k.push(hM(t));;){var _=t.parseExpression(!1,h?"\\end":"\\\\");t.gullet.endGroup(),t.gullet.beginGroup(),_={type:"ordgroup",mode:t.mode,body:_},n&&(_={type:"styling",mode:t.mode,style:n,body:[_]}),y.push(_);var E=t.fetch().text;if(E==="&"){if(m&&y.length===m){if(h||o)throw new $e("Too many tab characters: &",t.nextToken);t.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}t.consume()}else if(E==="\\end"){T(),y.length===1&&_.type==="styling"&&_.body[0].body.length===0&&(w.length>1||!f)&&w.pop(),k.length0&&(C+=.25),h.push({pos:C,isDashed:Be[ut]})}for(T(a[0]),r=0;r0&&(Q+=N,MBe))for(r=0;r=o)){var K=void 0;(s>0||e.hskipBeforeAndAfter)&&(K=Mn.deflt(W.pregap,g),K!==0&&(H=be.makeSpan(["arraycolsep"],[]),H.style.width=We(K),z.push(H)));var ie=[];for(r=0;r0){for(var Ue=be.makeLineSpan("hline",n,f),Xe=be.makeLineSpan("hdashline",n,f),Ze=[{type:"elem",elem:c,shift:0}];h.length>0;){var Oe=h.pop(),He=Oe.pos-U;Oe.isDashed?Ze.push({type:"elem",elem:Xe,shift:He}):Ze.push({type:"elem",elem:Ue,shift:He})}c=be.makeVList({positionType:"individualShift",children:Ze},n)}if(X.length===0)return be.makeSpan(["mord"],[c],n);var Ve=be.makeVList({positionType:"individualShift",children:X},n);return Ve=be.makeSpan(["tag"],[Ve],n),be.makeFragment([c,Ve])},f2e={c:"center ",l:"left ",r:"right "},wl=function(e,n){for(var r=[],s=new Fe.MathNode("mtd",[],["mtr-glue"]),i=new Fe.MathNode("mtd",[],["mml-eqn-num"]),a=0;a0){var y=e.cols,w="",S=!1,k=0,N=y.length;y[0].type==="separator"&&(g+="top ",k=1),y[y.length-1].type==="separator"&&(g+="bottom ",N-=1);for(var C=k;C0?"left ":"",g+=L[L.length-1].length>0?"right ":"";for(var P=1;P-1?"alignat":"align",i=e.envName==="split",a=Pc(e.parser,{cols:r,addJot:!0,autoTag:i?void 0:nO(e.envName),emptySingleRow:!0,colSeparationType:s,maxNumCols:i?2:void 0,leqno:e.parser.settings.leqno},"display"),o,c=0,h={type:"ordgroup",mode:e.mode,body:[]};if(n[0]&&n[0].type==="ordgroup"){for(var f="",m=0;m0&&x&&(S=1),r[y]={type:"align",align:w,pregap:S,postgap:0}}return a.colSeparationType=x?"align":"alignat",a};yl({type:"array",names:["array","darray"],props:{numArgs:1},handler(t,e){var n=Cy(e[0]),r=n?[e[0]]:Wt(e[0],"ordgroup").body,s=r.map(function(a){var o=Kj(a),c=o.text;if("lcr".indexOf(c)!==-1)return{type:"align",align:c};if(c==="|")return{type:"separator",separator:"|"};if(c===":")return{type:"separator",separator:":"};throw new $e("Unknown column alignment: "+c,a)}),i={cols:s,hskipBeforeAndAfter:!0,maxNumCols:s.length};return Pc(t.parser,i,rO(t.envName))},htmlBuilder:bl,mathmlBuilder:wl});yl({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName.replace("*","")],n="c",r={hskipBeforeAndAfter:!1,cols:[{type:"align",align:n}]};if(t.envName.charAt(t.envName.length-1)==="*"){var s=t.parser;if(s.consumeSpaces(),s.fetch().text==="["){if(s.consume(),s.consumeSpaces(),n=s.fetch().text,"lcr".indexOf(n)===-1)throw new $e("Expected l or c or r",s.nextToken);s.consume(),s.consumeSpaces(),s.expect("]"),s.consume(),r.cols=[{type:"align",align:n}]}}var i=Pc(t.parser,r,rO(t.envName)),a=Math.max(0,...i.body.map(o=>o.length));return i.cols=new Array(a).fill({type:"align",align:n}),e?{type:"leftright",mode:t.mode,body:[i],left:e[0],right:e[1],rightColor:void 0}:i},htmlBuilder:bl,mathmlBuilder:wl});yl({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(t){var e={arraystretch:.5},n=Pc(t.parser,e,"script");return n.colSeparationType="small",n},htmlBuilder:bl,mathmlBuilder:wl});yl({type:"array",names:["subarray"],props:{numArgs:1},handler(t,e){var n=Cy(e[0]),r=n?[e[0]]:Wt(e[0],"ordgroup").body,s=r.map(function(a){var o=Kj(a),c=o.text;if("lc".indexOf(c)!==-1)return{type:"align",align:c};throw new $e("Unknown column alignment: "+c,a)});if(s.length>1)throw new $e("{subarray} can contain only one column");var i={cols:s,hskipBeforeAndAfter:!1,arraystretch:.5};if(i=Pc(t.parser,i,"script"),i.body.length>0&&i.body[0].length>1)throw new $e("{subarray} can contain only one column");return i},htmlBuilder:bl,mathmlBuilder:wl});yl({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(t){var e={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},n=Pc(t.parser,e,rO(t.envName));return{type:"leftright",mode:t.mode,body:[n],left:t.envName.indexOf("r")>-1?".":"\\{",right:t.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:bl,mathmlBuilder:wl});yl({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:TQ,htmlBuilder:bl,mathmlBuilder:wl});yl({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(t){["gather","gather*"].includes(t.envName)&&_y(t);var e={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:nO(t.envName),emptySingleRow:!0,leqno:t.parser.settings.leqno};return Pc(t.parser,e,"display")},htmlBuilder:bl,mathmlBuilder:wl});yl({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:TQ,htmlBuilder:bl,mathmlBuilder:wl});yl({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(t){_y(t);var e={autoTag:nO(t.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:t.parser.settings.leqno};return Pc(t.parser,e,"display")},htmlBuilder:bl,mathmlBuilder:wl});yl({type:"array",names:["CD"],props:{numArgs:0},handler(t){return _y(t),Jbe(t.parser)},htmlBuilder:bl,mathmlBuilder:wl});Z("\\nonumber","\\gdef\\@eqnsw{0}");Z("\\notag","\\nonumber");et({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(t,e){throw new $e(t.funcName+" valid only within array environment")}});var fM=NQ;et({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];if(s.type!=="ordgroup")throw new $e("Invalid environment name",s);for(var i="",a=0;a{var n=t.font,r=e.withFont(n);return Cn(t.body,r)},_Q=(t,e)=>{var n=t.font,r=e.withFont(n);return Kn(t.body,r)},mM={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};et({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=mv(e[0]),i=r;return i in mM&&(i=mM[i]),{type:"font",mode:n.mode,font:i.slice(1),body:s}},htmlBuilder:EQ,mathmlBuilder:_Q});et({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(t,e)=>{var{parser:n}=t,r=e[0],s=Mn.isCharacterBox(r);return{type:"mclass",mode:n.mode,mclass:Ty(r),body:[{type:"font",mode:n.mode,font:"boldsymbol",body:r}],isCharacterBox:s}}});et({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(t,e)=>{var{parser:n,funcName:r,breakOnTokenText:s}=t,{mode:i}=n,a=n.parseExpression(!0,s),o="math"+r.slice(1);return{type:"font",mode:i,font:o,body:{type:"ordgroup",mode:n.mode,body:a}}},htmlBuilder:EQ,mathmlBuilder:_Q});var MQ=(t,e)=>{var n=e;return t==="display"?n=n.id>=St.SCRIPT.id?n.text():St.DISPLAY:t==="text"&&n.size===St.DISPLAY.size?n=St.TEXT:t==="script"?n=St.SCRIPT:t==="scriptscript"&&(n=St.SCRIPTSCRIPT),n},sO=(t,e)=>{var n=MQ(t.size,e.style),r=n.fracNum(),s=n.fracDen(),i;i=e.havingStyle(r);var a=Cn(t.numer,i,e);if(t.continued){var o=8.5/e.fontMetrics().ptPerEm,c=3.5/e.fontMetrics().ptPerEm;a.height=a.height0?y=3*g:y=7*g,w=e.fontMetrics().denom1):(m>0?(x=e.fontMetrics().num2,y=g):(x=e.fontMetrics().num3,y=3*g),w=e.fontMetrics().denom2);var S;if(f){var N=e.fontMetrics().axisHeight;x-a.depth-(N+.5*m){var n=new Fe.MathNode("mfrac",[Kn(t.numer,e),Kn(t.denom,e)]);if(!t.hasBarLine)n.setAttribute("linethickness","0px");else if(t.barSize){var r=gr(t.barSize,e);n.setAttribute("linethickness",We(r))}var s=MQ(t.size,e.style);if(s.size!==e.style.size){n=new Fe.MathNode("mstyle",[n]);var i=s.size===St.DISPLAY.size?"true":"false";n.setAttribute("displaystyle",i),n.setAttribute("scriptlevel","0")}if(t.leftDelim!=null||t.rightDelim!=null){var a=[];if(t.leftDelim!=null){var o=new Fe.MathNode("mo",[new Fe.TextNode(t.leftDelim.replace("\\",""))]);o.setAttribute("fence","true"),a.push(o)}if(a.push(n),t.rightDelim!=null){var c=new Fe.MathNode("mo",[new Fe.TextNode(t.rightDelim.replace("\\",""))]);c.setAttribute("fence","true"),a.push(c)}return Xj(a)}return n};et({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0],i=e[1],a,o=null,c=null,h="auto";switch(r){case"\\dfrac":case"\\frac":case"\\tfrac":a=!0;break;case"\\\\atopfrac":a=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":a=!1,o="(",c=")";break;case"\\\\bracefrac":a=!1,o="\\{",c="\\}";break;case"\\\\brackfrac":a=!1,o="[",c="]";break;default:throw new Error("Unrecognized genfrac command")}switch(r){case"\\dfrac":case"\\dbinom":h="display";break;case"\\tfrac":case"\\tbinom":h="text";break}return{type:"genfrac",mode:n.mode,continued:!1,numer:s,denom:i,hasBarLine:a,leftDelim:o,rightDelim:c,size:h,barSize:null}},htmlBuilder:sO,mathmlBuilder:iO});et({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0],i=e[1];return{type:"genfrac",mode:n.mode,continued:!0,numer:s,denom:i,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}}});et({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(t){var{parser:e,funcName:n,token:r}=t,s;switch(n){case"\\over":s="\\frac";break;case"\\choose":s="\\binom";break;case"\\atop":s="\\\\atopfrac";break;case"\\brace":s="\\\\bracefrac";break;case"\\brack":s="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:s,token:r}}});var pM=["display","text","script","scriptscript"],gM=function(e){var n=null;return e.length>0&&(n=e,n=n==="."?null:n),n};et({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(t,e){var{parser:n}=t,r=e[4],s=e[5],i=mv(e[0]),a=i.type==="atom"&&i.family==="open"?gM(i.text):null,o=mv(e[1]),c=o.type==="atom"&&o.family==="close"?gM(o.text):null,h=Wt(e[2],"size"),f,m=null;h.isBlank?f=!0:(m=h.value,f=m.number>0);var g="auto",x=e[3];if(x.type==="ordgroup"){if(x.body.length>0){var y=Wt(x.body[0],"textord");g=pM[Number(y.text)]}}else x=Wt(x,"textord"),g=pM[Number(x.text)];return{type:"genfrac",mode:n.mode,numer:r,denom:s,continued:!1,hasBarLine:f,barSize:m,leftDelim:a,rightDelim:c,size:g}},htmlBuilder:sO,mathmlBuilder:iO});et({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(t,e){var{parser:n,funcName:r,token:s}=t;return{type:"infix",mode:n.mode,replaceWith:"\\\\abovefrac",size:Wt(e[0],"size").value,token:s}}});et({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0],i=Qye(Wt(e[1],"infix").size),a=e[2],o=i.number>0;return{type:"genfrac",mode:n.mode,numer:s,denom:a,continued:!1,hasBarLine:o,barSize:i,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:sO,mathmlBuilder:iO});var AQ=(t,e)=>{var n=e.style,r,s;t.type==="supsub"?(r=t.sup?Cn(t.sup,e.havingStyle(n.sup()),e):Cn(t.sub,e.havingStyle(n.sub()),e),s=Wt(t.base,"horizBrace")):s=Wt(t,"horizBrace");var i=Cn(s.base,e.havingBaseStyle(St.DISPLAY)),a=vo.svgSpan(s,e),o;if(s.isOver?(o=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:.1},{type:"elem",elem:a}]},e),o.children[0].children[0].children[1].classes.push("svg-align")):(o=be.makeVList({positionType:"bottom",positionData:i.depth+.1+a.height,children:[{type:"elem",elem:a},{type:"kern",size:.1},{type:"elem",elem:i}]},e),o.children[0].children[0].children[0].classes.push("svg-align")),r){var c=be.makeSpan(["mord",s.isOver?"mover":"munder"],[o],e);s.isOver?o=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:c},{type:"kern",size:.2},{type:"elem",elem:r}]},e):o=be.makeVList({positionType:"bottom",positionData:c.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:c}]},e)}return be.makeSpan(["mord",s.isOver?"mover":"munder"],[o],e)},m2e=(t,e)=>{var n=vo.mathMLnode(t.label);return new Fe.MathNode(t.isOver?"mover":"munder",[Kn(t.base,e),n])};et({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:r}=t;return{type:"horizBrace",mode:n.mode,label:r,isOver:/^\\over/.test(r),base:e[0]}},htmlBuilder:AQ,mathmlBuilder:m2e});et({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[1],s=Wt(e[0],"url").url;return n.settings.isTrusted({command:"\\href",url:s})?{type:"href",mode:n.mode,href:s,body:Er(r)}:n.formatUnsupportedCmd("\\href")},htmlBuilder:(t,e)=>{var n=es(t.body,e,!1);return be.makeAnchor(t.href,[],n,e)},mathmlBuilder:(t,e)=>{var n=Cc(t.body,e);return n instanceof Ti||(n=new Ti("mrow",[n])),n.setAttribute("href",t.href),n}});et({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=Wt(e[0],"url").url;if(!n.settings.isTrusted({command:"\\url",url:r}))return n.formatUnsupportedCmd("\\url");for(var s=[],i=0;i{var{parser:n,funcName:r,token:s}=t,i=Wt(e[0],"raw").string,a=e[1];n.settings.strict&&n.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var o,c={};switch(r){case"\\htmlClass":c.class=i,o={command:"\\htmlClass",class:i};break;case"\\htmlId":c.id=i,o={command:"\\htmlId",id:i};break;case"\\htmlStyle":c.style=i,o={command:"\\htmlStyle",style:i};break;case"\\htmlData":{for(var h=i.split(","),f=0;f{var n=es(t.body,e,!1),r=["enclosing"];t.attributes.class&&r.push(...t.attributes.class.trim().split(/\s+/));var s=be.makeSpan(r,n,e);for(var i in t.attributes)i!=="class"&&t.attributes.hasOwnProperty(i)&&s.setAttribute(i,t.attributes[i]);return s},mathmlBuilder:(t,e)=>Cc(t.body,e)});et({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t;return{type:"htmlmathml",mode:n.mode,html:Er(e[0]),mathml:Er(e[1])}},htmlBuilder:(t,e)=>{var n=es(t.html,e,!1);return be.makeFragment(n)},mathmlBuilder:(t,e)=>Cc(t.mathml,e)});var D4=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var n=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!n)throw new $e("Invalid size: '"+e+"' in \\includegraphics");var r={number:+(n[1]+n[2]),unit:n[3]};if(!K$(r))throw new $e("Invalid unit: '"+r.unit+"' in \\includegraphics.");return r};et({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(t,e,n)=>{var{parser:r}=t,s={number:0,unit:"em"},i={number:.9,unit:"em"},a={number:0,unit:"em"},o="";if(n[0])for(var c=Wt(n[0],"raw").string,h=c.split(","),f=0;f{var n=gr(t.height,e),r=0;t.totalheight.number>0&&(r=gr(t.totalheight,e)-n);var s=0;t.width.number>0&&(s=gr(t.width,e));var i={height:We(n+r)};s>0&&(i.width=We(s)),r>0&&(i.verticalAlign=We(-r));var a=new mbe(t.src,t.alt,i);return a.height=n,a.depth=r,a},mathmlBuilder:(t,e)=>{var n=new Fe.MathNode("mglyph",[]);n.setAttribute("alt",t.alt);var r=gr(t.height,e),s=0;if(t.totalheight.number>0&&(s=gr(t.totalheight,e)-r,n.setAttribute("valign",We(-s))),n.setAttribute("height",We(r+s)),t.width.number>0){var i=gr(t.width,e);n.setAttribute("width",We(i))}return n.setAttribute("src",t.src),n}});et({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(t,e){var{parser:n,funcName:r}=t,s=Wt(e[0],"size");if(n.settings.strict){var i=r[1]==="m",a=s.value.unit==="mu";i?(a||n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" supports only mu units, "+("not "+s.value.unit+" units")),n.mode!=="math"&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" works only in math mode")):a&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" doesn't support mu units")}return{type:"kern",mode:n.mode,dimension:s.value}},htmlBuilder(t,e){return be.makeGlue(t.dimension,e)},mathmlBuilder(t,e){var n=gr(t.dimension,e);return new Fe.SpaceNode(n)}});et({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0];return{type:"lap",mode:n.mode,alignment:r.slice(5),body:s}},htmlBuilder:(t,e)=>{var n;t.alignment==="clap"?(n=be.makeSpan([],[Cn(t.body,e)]),n=be.makeSpan(["inner"],[n],e)):n=be.makeSpan(["inner"],[Cn(t.body,e)]);var r=be.makeSpan(["fix"],[]),s=be.makeSpan([t.alignment],[n,r],e),i=be.makeSpan(["strut"]);return i.style.height=We(s.height+s.depth),s.depth&&(i.style.verticalAlign=We(-s.depth)),s.children.unshift(i),s=be.makeSpan(["thinbox"],[s],e),be.makeSpan(["mord","vbox"],[s],e)},mathmlBuilder:(t,e)=>{var n=new Fe.MathNode("mpadded",[Kn(t.body,e)]);if(t.alignment!=="rlap"){var r=t.alignment==="llap"?"-1":"-0.5";n.setAttribute("lspace",r+"width")}return n.setAttribute("width","0px"),n}});et({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){var{funcName:n,parser:r}=t,s=r.mode;r.switchMode("math");var i=n==="\\("?"\\)":"$",a=r.parseExpression(!1,i);return r.expect(i),r.switchMode(s),{type:"styling",mode:r.mode,style:"text",body:a}}});et({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){throw new $e("Mismatched "+t.funcName)}});var xM=(t,e)=>{switch(e.style.size){case St.DISPLAY.size:return t.display;case St.TEXT.size:return t.text;case St.SCRIPT.size:return t.script;case St.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}};et({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(t,e)=>{var{parser:n}=t;return{type:"mathchoice",mode:n.mode,display:Er(e[0]),text:Er(e[1]),script:Er(e[2]),scriptscript:Er(e[3])}},htmlBuilder:(t,e)=>{var n=xM(t,e),r=es(n,e,!1);return be.makeFragment(r)},mathmlBuilder:(t,e)=>{var n=xM(t,e);return Cc(n,e)}});var RQ=(t,e,n,r,s,i,a)=>{t=be.makeSpan([],[t]);var o=n&&Mn.isCharacterBox(n),c,h;if(e){var f=Cn(e,r.havingStyle(s.sup()),r);h={elem:f,kern:Math.max(r.fontMetrics().bigOpSpacing1,r.fontMetrics().bigOpSpacing3-f.depth)}}if(n){var m=Cn(n,r.havingStyle(s.sub()),r);c={elem:m,kern:Math.max(r.fontMetrics().bigOpSpacing2,r.fontMetrics().bigOpSpacing4-m.height)}}var g;if(h&&c){var x=r.fontMetrics().bigOpSpacing5+c.elem.height+c.elem.depth+c.kern+t.depth+a;g=be.makeVList({positionType:"bottom",positionData:x,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:c.elem,marginLeft:We(-i)},{type:"kern",size:c.kern},{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:We(i)},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else if(c){var y=t.height-a;g=be.makeVList({positionType:"top",positionData:y,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:c.elem,marginLeft:We(-i)},{type:"kern",size:c.kern},{type:"elem",elem:t}]},r)}else if(h){var w=t.depth+a;g=be.makeVList({positionType:"bottom",positionData:w,children:[{type:"elem",elem:t},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:We(i)},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else return t;var S=[g];if(c&&i!==0&&!o){var k=be.makeSpan(["mspace"],[],r);k.style.marginRight=We(i),S.unshift(k)}return be.makeSpan(["mop","op-limits"],S,r)},DQ=["\\smallint"],ef=(t,e)=>{var n,r,s=!1,i;t.type==="supsub"?(n=t.sup,r=t.sub,i=Wt(t.base,"op"),s=!0):i=Wt(t,"op");var a=e.style,o=!1;a.size===St.DISPLAY.size&&i.symbol&&!DQ.includes(i.name)&&(o=!0);var c;if(i.symbol){var h=o?"Size2-Regular":"Size1-Regular",f="";if((i.name==="\\oiint"||i.name==="\\oiiint")&&(f=i.name.slice(1),i.name=f==="oiint"?"\\iint":"\\iiint"),c=be.makeSymbol(i.name,h,"math",e,["mop","op-symbol",o?"large-op":"small-op"]),f.length>0){var m=c.italic,g=be.staticSvg(f+"Size"+(o?"2":"1"),e);c=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:c,shift:0},{type:"elem",elem:g,shift:o?.08:0}]},e),i.name="\\"+f,c.classes.unshift("mop"),c.italic=m}}else if(i.body){var x=es(i.body,e,!0);x.length===1&&x[0]instanceof ua?(c=x[0],c.classes[0]="mop"):c=be.makeSpan(["mop"],x,e)}else{for(var y=[],w=1;w{var n;if(t.symbol)n=new Ti("mo",[da(t.name,t.mode)]),DQ.includes(t.name)&&n.setAttribute("largeop","false");else if(t.body)n=new Ti("mo",fi(t.body,e));else{n=new Ti("mi",[new al(t.name.slice(1))]);var r=new Ti("mo",[da("⁡","text")]);t.parentIsSupSub?n=new Ti("mrow",[n,r]):n=oQ([n,r])}return n},p2e={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"};et({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=r;return s.length===1&&(s=p2e[s]),{type:"op",mode:n.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:s}},htmlBuilder:ef,mathmlBuilder:pp});et({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"op",mode:n.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:Er(r)}},htmlBuilder:ef,mathmlBuilder:pp});var g2e={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"};et({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(t){var{parser:e,funcName:n}=t;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:ef,mathmlBuilder:pp});et({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(t){var{parser:e,funcName:n}=t;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:ef,mathmlBuilder:pp});et({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],props:{numArgs:0},handler(t){var{parser:e,funcName:n}=t,r=n;return r.length===1&&(r=g2e[r]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:r}},htmlBuilder:ef,mathmlBuilder:pp});var zQ=(t,e)=>{var n,r,s=!1,i;t.type==="supsub"?(n=t.sup,r=t.sub,i=Wt(t.base,"operatorname"),s=!0):i=Wt(t,"operatorname");var a;if(i.body.length>0){for(var o=i.body.map(m=>{var g=m.text;return typeof g=="string"?{type:"textord",mode:m.mode,text:g}:m}),c=es(o,e.withFont("mathrm"),!0),h=0;h{for(var n=fi(t.body,e.withFont("mathrm")),r=!0,s=0;sf.toText()).join("");n=[new Fe.TextNode(o)]}var c=new Fe.MathNode("mi",n);c.setAttribute("mathvariant","normal");var h=new Fe.MathNode("mo",[da("⁡","text")]);return t.parentIsSupSub?new Fe.MathNode("mrow",[c,h]):Fe.newDocumentFragment([c,h])};et({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0];return{type:"operatorname",mode:n.mode,body:Er(s),alwaysHandleSupSub:r==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},htmlBuilder:zQ,mathmlBuilder:x2e});Z("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");Vu({type:"ordgroup",htmlBuilder(t,e){return t.semisimple?be.makeFragment(es(t.body,e,!1)):be.makeSpan(["mord"],es(t.body,e,!0),e)},mathmlBuilder(t,e){return Cc(t.body,e,!0)}});et({type:"overline",names:["\\overline"],props:{numArgs:1},handler(t,e){var{parser:n}=t,r=e[0];return{type:"overline",mode:n.mode,body:r}},htmlBuilder(t,e){var n=Cn(t.body,e.havingCrampedStyle()),r=be.makeLineSpan("overline-line",e),s=e.fontMetrics().defaultRuleThickness,i=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n},{type:"kern",size:3*s},{type:"elem",elem:r},{type:"kern",size:s}]},e);return be.makeSpan(["mord","overline"],[i],e)},mathmlBuilder(t,e){var n=new Fe.MathNode("mo",[new Fe.TextNode("‾")]);n.setAttribute("stretchy","true");var r=new Fe.MathNode("mover",[Kn(t.body,e),n]);return r.setAttribute("accent","true"),r}});et({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"phantom",mode:n.mode,body:Er(r)}},htmlBuilder:(t,e)=>{var n=es(t.body,e.withPhantom(),!1);return be.makeFragment(n)},mathmlBuilder:(t,e)=>{var n=fi(t.body,e);return new Fe.MathNode("mphantom",n)}});et({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"hphantom",mode:n.mode,body:r}},htmlBuilder:(t,e)=>{var n=be.makeSpan([],[Cn(t.body,e.withPhantom())]);if(n.height=0,n.depth=0,n.children)for(var r=0;r{var n=fi(Er(t.body),e),r=new Fe.MathNode("mphantom",n),s=new Fe.MathNode("mpadded",[r]);return s.setAttribute("height","0px"),s.setAttribute("depth","0px"),s}});et({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"vphantom",mode:n.mode,body:r}},htmlBuilder:(t,e)=>{var n=be.makeSpan(["inner"],[Cn(t.body,e.withPhantom())]),r=be.makeSpan(["fix"],[]);return be.makeSpan(["mord","rlap"],[n,r],e)},mathmlBuilder:(t,e)=>{var n=fi(Er(t.body),e),r=new Fe.MathNode("mphantom",n),s=new Fe.MathNode("mpadded",[r]);return s.setAttribute("width","0px"),s}});et({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(t,e){var{parser:n}=t,r=Wt(e[0],"size").value,s=e[1];return{type:"raisebox",mode:n.mode,dy:r,body:s}},htmlBuilder(t,e){var n=Cn(t.body,e),r=gr(t.dy,e);return be.makeVList({positionType:"shift",positionData:-r,children:[{type:"elem",elem:n}]},e)},mathmlBuilder(t,e){var n=new Fe.MathNode("mpadded",[Kn(t.body,e)]),r=t.dy.number+t.dy.unit;return n.setAttribute("voffset",r),n}});et({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(t){var{parser:e}=t;return{type:"internal",mode:e.mode}}});et({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(t,e,n){var{parser:r}=t,s=n[0],i=Wt(e[0],"size"),a=Wt(e[1],"size");return{type:"rule",mode:r.mode,shift:s&&Wt(s,"size").value,width:i.value,height:a.value}},htmlBuilder(t,e){var n=be.makeSpan(["mord","rule"],[],e),r=gr(t.width,e),s=gr(t.height,e),i=t.shift?gr(t.shift,e):0;return n.style.borderRightWidth=We(r),n.style.borderTopWidth=We(s),n.style.bottom=We(i),n.width=r,n.height=s+i,n.depth=-i,n.maxFontSize=s*1.125*e.sizeMultiplier,n},mathmlBuilder(t,e){var n=gr(t.width,e),r=gr(t.height,e),s=t.shift?gr(t.shift,e):0,i=e.color&&e.getColor()||"black",a=new Fe.MathNode("mspace");a.setAttribute("mathbackground",i),a.setAttribute("width",We(n)),a.setAttribute("height",We(r));var o=new Fe.MathNode("mpadded",[a]);return s>=0?o.setAttribute("height",We(s)):(o.setAttribute("height",We(s)),o.setAttribute("depth",We(-s))),o.setAttribute("voffset",We(s)),o}});function PQ(t,e,n){for(var r=es(t,e,!1),s=e.sizeMultiplier/n.sizeMultiplier,i=0;i{var n=e.havingSize(t.size);return PQ(t.body,n,e)};et({type:"sizing",names:vM,props:{numArgs:0,allowedInText:!0},handler:(t,e)=>{var{breakOnTokenText:n,funcName:r,parser:s}=t,i=s.parseExpression(!1,n);return{type:"sizing",mode:s.mode,size:vM.indexOf(r)+1,body:i}},htmlBuilder:v2e,mathmlBuilder:(t,e)=>{var n=e.havingSize(t.size),r=fi(t.body,n),s=new Fe.MathNode("mstyle",r);return s.setAttribute("mathsize",We(n.sizeMultiplier)),s}});et({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(t,e,n)=>{var{parser:r}=t,s=!1,i=!1,a=n[0]&&Wt(n[0],"ordgroup");if(a)for(var o="",c=0;c{var n=be.makeSpan([],[Cn(t.body,e)]);if(!t.smashHeight&&!t.smashDepth)return n;if(t.smashHeight&&(n.height=0,n.children))for(var r=0;r{var n=new Fe.MathNode("mpadded",[Kn(t.body,e)]);return t.smashHeight&&n.setAttribute("height","0px"),t.smashDepth&&n.setAttribute("depth","0px"),n}});et({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,n){var{parser:r}=t,s=n[0],i=e[0];return{type:"sqrt",mode:r.mode,body:i,index:s}},htmlBuilder(t,e){var n=Cn(t.body,e.havingCrampedStyle());n.height===0&&(n.height=e.fontMetrics().xHeight),n=be.wrapFragment(n,e);var r=e.fontMetrics(),s=r.defaultRuleThickness,i=s;e.style.idn.height+n.depth+a&&(a=(a+m-n.height-n.depth)/2);var g=c.height-n.height-a-h;n.style.paddingLeft=We(f);var x=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:-(n.height+g)},{type:"elem",elem:c},{type:"kern",size:h}]},e);if(t.index){var y=e.havingStyle(St.SCRIPTSCRIPT),w=Cn(t.index,y,e),S=.6*(x.height-x.depth),k=be.makeVList({positionType:"shift",positionData:-S,children:[{type:"elem",elem:w}]},e),N=be.makeSpan(["root"],[k]);return be.makeSpan(["mord","sqrt"],[N,x],e)}else return be.makeSpan(["mord","sqrt"],[x],e)},mathmlBuilder(t,e){var{body:n,index:r}=t;return r?new Fe.MathNode("mroot",[Kn(n,e),Kn(r,e)]):new Fe.MathNode("msqrt",[Kn(n,e)])}});var yM={display:St.DISPLAY,text:St.TEXT,script:St.SCRIPT,scriptscript:St.SCRIPTSCRIPT};et({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t,e){var{breakOnTokenText:n,funcName:r,parser:s}=t,i=s.parseExpression(!0,n),a=r.slice(1,r.length-5);return{type:"styling",mode:s.mode,style:a,body:i}},htmlBuilder(t,e){var n=yM[t.style],r=e.havingStyle(n).withFont("");return PQ(t.body,r,e)},mathmlBuilder(t,e){var n=yM[t.style],r=e.havingStyle(n),s=fi(t.body,r),i=new Fe.MathNode("mstyle",s),a={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},o=a[t.style];return i.setAttribute("scriptlevel",o[0]),i.setAttribute("displaystyle",o[1]),i}});var y2e=function(e,n){var r=e.base;if(r)if(r.type==="op"){var s=r.limits&&(n.style.size===St.DISPLAY.size||r.alwaysHandleSupSub);return s?ef:null}else if(r.type==="operatorname"){var i=r.alwaysHandleSupSub&&(n.style.size===St.DISPLAY.size||r.limits);return i?zQ:null}else{if(r.type==="accent")return Mn.isCharacterBox(r.base)?Zj:null;if(r.type==="horizBrace"){var a=!e.sub;return a===r.isOver?AQ:null}else return null}else return null};Vu({type:"supsub",htmlBuilder(t,e){var n=y2e(t,e);if(n)return n(t,e);var{base:r,sup:s,sub:i}=t,a=Cn(r,e),o,c,h=e.fontMetrics(),f=0,m=0,g=r&&Mn.isCharacterBox(r);if(s){var x=e.havingStyle(e.style.sup());o=Cn(s,x,e),g||(f=a.height-x.fontMetrics().supDrop*x.sizeMultiplier/e.sizeMultiplier)}if(i){var y=e.havingStyle(e.style.sub());c=Cn(i,y,e),g||(m=a.depth+y.fontMetrics().subDrop*y.sizeMultiplier/e.sizeMultiplier)}var w;e.style===St.DISPLAY?w=h.sup1:e.style.cramped?w=h.sup3:w=h.sup2;var S=e.sizeMultiplier,k=We(.5/h.ptPerEm/S),N=null;if(c){var C=t.base&&t.base.type==="op"&&t.base.name&&(t.base.name==="\\oiint"||t.base.name==="\\oiiint");(a instanceof ua||C)&&(N=We(-a.italic))}var T;if(o&&c){f=Math.max(f,w,o.depth+.25*h.xHeight),m=Math.max(m,h.sub2);var _=h.defaultRuleThickness,E=4*_;if(f-o.depth-(c.height-m)0&&(f+=M,m-=M)}var L=[{type:"elem",elem:c,shift:m,marginRight:k,marginLeft:N},{type:"elem",elem:o,shift:-f,marginRight:k}];T=be.makeVList({positionType:"individualShift",children:L},e)}else if(c){m=Math.max(m,h.sub1,c.height-.8*h.xHeight);var P=[{type:"elem",elem:c,marginLeft:N,marginRight:k}];T=be.makeVList({positionType:"shift",positionData:m,children:P},e)}else if(o)f=Math.max(f,w,o.depth+.25*h.xHeight),T=be.makeVList({positionType:"shift",positionData:-f,children:[{type:"elem",elem:o,marginRight:k}]},e);else throw new Error("supsub must have either sup or sub.");var I=mk(a,"right")||"mord";return be.makeSpan([I],[a,be.makeSpan(["msupsub"],[T])],e)},mathmlBuilder(t,e){var n=!1,r,s;t.base&&t.base.type==="horizBrace"&&(s=!!t.sup,s===t.base.isOver&&(n=!0,r=t.base.isOver)),t.base&&(t.base.type==="op"||t.base.type==="operatorname")&&(t.base.parentIsSupSub=!0);var i=[Kn(t.base,e)];t.sub&&i.push(Kn(t.sub,e)),t.sup&&i.push(Kn(t.sup,e));var a;if(n)a=r?"mover":"munder";else if(t.sub)if(t.sup){var h=t.base;h&&h.type==="op"&&h.limits&&e.style===St.DISPLAY||h&&h.type==="operatorname"&&h.alwaysHandleSupSub&&(e.style===St.DISPLAY||h.limits)?a="munderover":a="msubsup"}else{var c=t.base;c&&c.type==="op"&&c.limits&&(e.style===St.DISPLAY||c.alwaysHandleSupSub)||c&&c.type==="operatorname"&&c.alwaysHandleSupSub&&(c.limits||e.style===St.DISPLAY)?a="munder":a="msub"}else{var o=t.base;o&&o.type==="op"&&o.limits&&(e.style===St.DISPLAY||o.alwaysHandleSupSub)||o&&o.type==="operatorname"&&o.alwaysHandleSupSub&&(o.limits||e.style===St.DISPLAY)?a="mover":a="msup"}return new Fe.MathNode(a,i)}});Vu({type:"atom",htmlBuilder(t,e){return be.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder(t,e){var n=new Fe.MathNode("mo",[da(t.text,t.mode)]);if(t.family==="bin"){var r=Yj(t,e);r==="bold-italic"&&n.setAttribute("mathvariant",r)}else t.family==="punct"?n.setAttribute("separator","true"):(t.family==="open"||t.family==="close")&&n.setAttribute("stretchy","false");return n}});var LQ={mi:"italic",mn:"normal",mtext:"normal"};Vu({type:"mathord",htmlBuilder(t,e){return be.makeOrd(t,e,"mathord")},mathmlBuilder(t,e){var n=new Fe.MathNode("mi",[da(t.text,t.mode,e)]),r=Yj(t,e)||"italic";return r!==LQ[n.type]&&n.setAttribute("mathvariant",r),n}});Vu({type:"textord",htmlBuilder(t,e){return be.makeOrd(t,e,"textord")},mathmlBuilder(t,e){var n=da(t.text,t.mode,e),r=Yj(t,e)||"normal",s;return t.mode==="text"?s=new Fe.MathNode("mtext",[n]):/[0-9]/.test(t.text)?s=new Fe.MathNode("mn",[n]):t.text==="\\prime"?s=new Fe.MathNode("mo",[n]):s=new Fe.MathNode("mi",[n]),r!==LQ[s.type]&&s.setAttribute("mathvariant",r),s}});var z4={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},P4={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};Vu({type:"spacing",htmlBuilder(t,e){if(P4.hasOwnProperty(t.text)){var n=P4[t.text].className||"";if(t.mode==="text"){var r=be.makeOrd(t,e,"textord");return r.classes.push(n),r}else return be.makeSpan(["mspace",n],[be.mathsym(t.text,t.mode,e)],e)}else{if(z4.hasOwnProperty(t.text))return be.makeSpan(["mspace",z4[t.text]],[],e);throw new $e('Unknown type of space "'+t.text+'"')}},mathmlBuilder(t,e){var n;if(P4.hasOwnProperty(t.text))n=new Fe.MathNode("mtext",[new Fe.TextNode(" ")]);else{if(z4.hasOwnProperty(t.text))return new Fe.MathNode("mspace");throw new $e('Unknown type of space "'+t.text+'"')}return n}});var bM=()=>{var t=new Fe.MathNode("mtd",[]);return t.setAttribute("width","50%"),t};Vu({type:"tag",mathmlBuilder(t,e){var n=new Fe.MathNode("mtable",[new Fe.MathNode("mtr",[bM(),new Fe.MathNode("mtd",[Cc(t.body,e)]),bM(),new Fe.MathNode("mtd",[Cc(t.tag,e)])])]);return n.setAttribute("width","100%"),n}});var wM={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},SM={"\\textbf":"textbf","\\textmd":"textmd"},b2e={"\\textit":"textit","\\textup":"textup"},kM=(t,e)=>{var n=t.font;if(n){if(wM[n])return e.withTextFontFamily(wM[n]);if(SM[n])return e.withTextFontWeight(SM[n]);if(n==="\\emph")return e.fontShape==="textit"?e.withTextFontShape("textup"):e.withTextFontShape("textit")}else return e;return e.withTextFontShape(b2e[n])};et({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];return{type:"text",mode:n.mode,body:Er(s),font:r}},htmlBuilder(t,e){var n=kM(t,e),r=es(t.body,n,!0);return be.makeSpan(["mord","text"],r,n)},mathmlBuilder(t,e){var n=kM(t,e);return Cc(t.body,n)}});et({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"underline",mode:n.mode,body:e[0]}},htmlBuilder(t,e){var n=Cn(t.body,e),r=be.makeLineSpan("underline-line",e),s=e.fontMetrics().defaultRuleThickness,i=be.makeVList({positionType:"top",positionData:n.height,children:[{type:"kern",size:s},{type:"elem",elem:r},{type:"kern",size:3*s},{type:"elem",elem:n}]},e);return be.makeSpan(["mord","underline"],[i],e)},mathmlBuilder(t,e){var n=new Fe.MathNode("mo",[new Fe.TextNode("‾")]);n.setAttribute("stretchy","true");var r=new Fe.MathNode("munder",[Kn(t.body,e),n]);return r.setAttribute("accentunder","true"),r}});et({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(t,e){var{parser:n}=t;return{type:"vcenter",mode:n.mode,body:e[0]}},htmlBuilder(t,e){var n=Cn(t.body,e),r=e.fontMetrics().axisHeight,s=.5*(n.height-r-(n.depth+r));return be.makeVList({positionType:"shift",positionData:s,children:[{type:"elem",elem:n}]},e)},mathmlBuilder(t,e){return new Fe.MathNode("mpadded",[Kn(t.body,e)],["vcenter"])}});et({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,e,n){throw new $e("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(t,e){for(var n=jM(t),r=[],s=e.havingStyle(e.style.text()),i=0;it.body.replace(/ /g,t.star?"␣":" "),fc=aQ,IQ=`[ \r - ]`,w2e="\\\\[a-zA-Z@]+",S2e="\\\\[^\uD800-\uDFFF]",k2e="("+w2e+")"+IQ+"*",j2e=`\\\\( -|[ \r ]+ -?)[ \r ]*`,vk="[̀-ͯ]",O2e=new RegExp(vk+"+$"),N2e="("+IQ+"+)|"+(j2e+"|")+"([!-\\[\\]-‧‪-퟿豈-￿]"+(vk+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(vk+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+k2e)+("|"+S2e+")");class OM{constructor(e,n){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=n,this.tokenRegex=new RegExp(N2e,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,n){this.catcodes[e]=n}lex(){var e=this.input,n=this.tokenRegex.lastIndex;if(n===e.length)return new Ri("EOF",new Js(this,n,n));var r=this.tokenRegex.exec(e);if(r===null||r.index!==n)throw new $e("Unexpected character: '"+e[n]+"'",new Ri(e[n],new Js(this,n,n+1)));var s=r[6]||r[3]||(r[2]?"\\ ":" ");if(this.catcodes[s]===14){var i=e.indexOf(` -`,this.tokenRegex.lastIndex);return i===-1?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=i+1,this.lex()}return new Ri(s,new Js(this,n,this.tokenRegex.lastIndex))}}class C2e{constructor(e,n){e===void 0&&(e={}),n===void 0&&(n={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=n,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new $e("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var n in e)e.hasOwnProperty(n)&&(e[n]==null?delete this.current[n]:this.current[n]=e[n])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,n,r){if(r===void 0&&(r=!1),r){for(var s=0;s0&&(this.undefStack[this.undefStack.length-1][e]=n)}else{var i=this.undefStack[this.undefStack.length-1];i&&!i.hasOwnProperty(e)&&(i[e]=this.current[e])}n==null?delete this.current[e]:this.current[e]=n}}var T2e=CQ;Z("\\noexpand",function(t){var e=t.popToken();return t.isExpandable(e.text)&&(e.noexpand=!0,e.treatAsRelax=!0),{tokens:[e],numArgs:0}});Z("\\expandafter",function(t){var e=t.popToken();return t.expandOnce(!0),{tokens:[e],numArgs:0}});Z("\\@firstoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[0],numArgs:0}});Z("\\@secondoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[1],numArgs:0}});Z("\\@ifnextchar",function(t){var e=t.consumeArgs(3);t.consumeSpaces();var n=t.future();return e[0].length===1&&e[0][0].text===n.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}});Z("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");Z("\\TextOrMath",function(t){var e=t.consumeArgs(2);return t.mode==="text"?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});var NM={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};Z("\\char",function(t){var e=t.popToken(),n,r="";if(e.text==="'")n=8,e=t.popToken();else if(e.text==='"')n=16,e=t.popToken();else if(e.text==="`")if(e=t.popToken(),e.text[0]==="\\")r=e.text.charCodeAt(1);else{if(e.text==="EOF")throw new $e("\\char` missing argument");r=e.text.charCodeAt(0)}else n=10;if(n){if(r=NM[e.text],r==null||r>=n)throw new $e("Invalid base-"+n+" digit "+e.text);for(var s;(s=NM[t.future().text])!=null&&s{var s=t.consumeArg().tokens;if(s.length!==1)throw new $e("\\newcommand's first argument must be a macro name");var i=s[0].text,a=t.isDefined(i);if(a&&!e)throw new $e("\\newcommand{"+i+"} attempting to redefine "+(i+"; use \\renewcommand"));if(!a&&!n)throw new $e("\\renewcommand{"+i+"} when command "+i+" does not yet exist; use \\newcommand");var o=0;if(s=t.consumeArg().tokens,s.length===1&&s[0].text==="["){for(var c="",h=t.expandNextToken();h.text!=="]"&&h.text!=="EOF";)c+=h.text,h=t.expandNextToken();if(!c.match(/^\s*[0-9]+\s*$/))throw new $e("Invalid number of arguments: "+c);o=parseInt(c),s=t.consumeArg().tokens}return a&&r||t.macros.set(i,{tokens:s,numArgs:o}),""};Z("\\newcommand",t=>aO(t,!1,!0,!1));Z("\\renewcommand",t=>aO(t,!0,!1,!1));Z("\\providecommand",t=>aO(t,!0,!0,!0));Z("\\message",t=>{var e=t.consumeArgs(1)[0];return console.log(e.reverse().map(n=>n.text).join("")),""});Z("\\errmessage",t=>{var e=t.consumeArgs(1)[0];return console.error(e.reverse().map(n=>n.text).join("")),""});Z("\\show",t=>{var e=t.popToken(),n=e.text;return console.log(e,t.macros.get(n),fc[n],Jn.math[n],Jn.text[n]),""});Z("\\bgroup","{");Z("\\egroup","}");Z("~","\\nobreakspace");Z("\\lq","`");Z("\\rq","'");Z("\\aa","\\r a");Z("\\AA","\\r A");Z("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}");Z("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");Z("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}");Z("ℬ","\\mathscr{B}");Z("ℰ","\\mathscr{E}");Z("ℱ","\\mathscr{F}");Z("ℋ","\\mathscr{H}");Z("ℐ","\\mathscr{I}");Z("ℒ","\\mathscr{L}");Z("ℳ","\\mathscr{M}");Z("ℛ","\\mathscr{R}");Z("ℭ","\\mathfrak{C}");Z("ℌ","\\mathfrak{H}");Z("ℨ","\\mathfrak{Z}");Z("\\Bbbk","\\Bbb{k}");Z("·","\\cdotp");Z("\\llap","\\mathllap{\\textrm{#1}}");Z("\\rlap","\\mathrlap{\\textrm{#1}}");Z("\\clap","\\mathclap{\\textrm{#1}}");Z("\\mathstrut","\\vphantom{(}");Z("\\underbar","\\underline{\\text{#1}}");Z("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');Z("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}");Z("\\ne","\\neq");Z("≠","\\neq");Z("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}");Z("∉","\\notin");Z("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}");Z("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}");Z("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}");Z("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}");Z("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}");Z("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}");Z("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}");Z("⟂","\\perp");Z("‼","\\mathclose{!\\mkern-0.8mu!}");Z("∌","\\notni");Z("⌜","\\ulcorner");Z("⌝","\\urcorner");Z("⌞","\\llcorner");Z("⌟","\\lrcorner");Z("©","\\copyright");Z("®","\\textregistered");Z("️","\\textregistered");Z("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');Z("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');Z("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');Z("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');Z("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");Z("⋮","\\vdots");Z("\\varGamma","\\mathit{\\Gamma}");Z("\\varDelta","\\mathit{\\Delta}");Z("\\varTheta","\\mathit{\\Theta}");Z("\\varLambda","\\mathit{\\Lambda}");Z("\\varXi","\\mathit{\\Xi}");Z("\\varPi","\\mathit{\\Pi}");Z("\\varSigma","\\mathit{\\Sigma}");Z("\\varUpsilon","\\mathit{\\Upsilon}");Z("\\varPhi","\\mathit{\\Phi}");Z("\\varPsi","\\mathit{\\Psi}");Z("\\varOmega","\\mathit{\\Omega}");Z("\\substack","\\begin{subarray}{c}#1\\end{subarray}");Z("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");Z("\\boxed","\\fbox{$\\displaystyle{#1}$}");Z("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");Z("\\implies","\\DOTSB\\;\\Longrightarrow\\;");Z("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");Z("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");Z("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var CM={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};Z("\\dots",function(t){var e="\\dotso",n=t.expandAfterFuture().text;return n in CM?e=CM[n]:(n.slice(0,4)==="\\not"||n in Jn.math&&["bin","rel"].includes(Jn.math[n].group))&&(e="\\dotsb"),e});var lO={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};Z("\\dotso",function(t){var e=t.future().text;return e in lO?"\\ldots\\,":"\\ldots"});Z("\\dotsc",function(t){var e=t.future().text;return e in lO&&e!==","?"\\ldots\\,":"\\ldots"});Z("\\cdots",function(t){var e=t.future().text;return e in lO?"\\@cdots\\,":"\\@cdots"});Z("\\dotsb","\\cdots");Z("\\dotsm","\\cdots");Z("\\dotsi","\\!\\cdots");Z("\\dotsx","\\ldots\\,");Z("\\DOTSI","\\relax");Z("\\DOTSB","\\relax");Z("\\DOTSX","\\relax");Z("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");Z("\\,","\\tmspace+{3mu}{.1667em}");Z("\\thinspace","\\,");Z("\\>","\\mskip{4mu}");Z("\\:","\\tmspace+{4mu}{.2222em}");Z("\\medspace","\\:");Z("\\;","\\tmspace+{5mu}{.2777em}");Z("\\thickspace","\\;");Z("\\!","\\tmspace-{3mu}{.1667em}");Z("\\negthinspace","\\!");Z("\\negmedspace","\\tmspace-{4mu}{.2222em}");Z("\\negthickspace","\\tmspace-{5mu}{.277em}");Z("\\enspace","\\kern.5em ");Z("\\enskip","\\hskip.5em\\relax");Z("\\quad","\\hskip1em\\relax");Z("\\qquad","\\hskip2em\\relax");Z("\\tag","\\@ifstar\\tag@literal\\tag@paren");Z("\\tag@paren","\\tag@literal{({#1})}");Z("\\tag@literal",t=>{if(t.macros.get("\\df@tag"))throw new $e("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});Z("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");Z("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");Z("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");Z("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");Z("\\newline","\\\\\\relax");Z("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var BQ=We(il["Main-Regular"][84][1]-.7*il["Main-Regular"][65][1]);Z("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+BQ+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");Z("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+BQ+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");Z("\\hspace","\\@ifstar\\@hspacer\\@hspace");Z("\\@hspace","\\hskip #1\\relax");Z("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");Z("\\ordinarycolon",":");Z("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");Z("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');Z("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');Z("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');Z("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');Z("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');Z("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');Z("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');Z("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');Z("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');Z("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');Z("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');Z("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');Z("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');Z("∷","\\dblcolon");Z("∹","\\eqcolon");Z("≔","\\coloneqq");Z("≕","\\eqqcolon");Z("⩴","\\Coloneqq");Z("\\ratio","\\vcentcolon");Z("\\coloncolon","\\dblcolon");Z("\\colonequals","\\coloneqq");Z("\\coloncolonequals","\\Coloneqq");Z("\\equalscolon","\\eqqcolon");Z("\\equalscoloncolon","\\Eqqcolon");Z("\\colonminus","\\coloneq");Z("\\coloncolonminus","\\Coloneq");Z("\\minuscolon","\\eqcolon");Z("\\minuscoloncolon","\\Eqcolon");Z("\\coloncolonapprox","\\Colonapprox");Z("\\coloncolonsim","\\Colonsim");Z("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");Z("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");Z("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");Z("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");Z("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}");Z("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");Z("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");Z("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");Z("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");Z("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");Z("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");Z("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");Z("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");Z("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}");Z("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}");Z("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}");Z("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}");Z("\\nleqq","\\html@mathml{\\@nleqq}{≰}");Z("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}");Z("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}");Z("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}");Z("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}");Z("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}");Z("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}");Z("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}");Z("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}");Z("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}");Z("\\imath","\\html@mathml{\\@imath}{ı}");Z("\\jmath","\\html@mathml{\\@jmath}{ȷ}");Z("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}");Z("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}");Z("⟦","\\llbracket");Z("⟧","\\rrbracket");Z("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}");Z("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}");Z("⦃","\\lBrace");Z("⦄","\\rBrace");Z("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}");Z("⦵","\\minuso");Z("\\darr","\\downarrow");Z("\\dArr","\\Downarrow");Z("\\Darr","\\Downarrow");Z("\\lang","\\langle");Z("\\rang","\\rangle");Z("\\uarr","\\uparrow");Z("\\uArr","\\Uparrow");Z("\\Uarr","\\Uparrow");Z("\\N","\\mathbb{N}");Z("\\R","\\mathbb{R}");Z("\\Z","\\mathbb{Z}");Z("\\alef","\\aleph");Z("\\alefsym","\\aleph");Z("\\Alpha","\\mathrm{A}");Z("\\Beta","\\mathrm{B}");Z("\\bull","\\bullet");Z("\\Chi","\\mathrm{X}");Z("\\clubs","\\clubsuit");Z("\\cnums","\\mathbb{C}");Z("\\Complex","\\mathbb{C}");Z("\\Dagger","\\ddagger");Z("\\diamonds","\\diamondsuit");Z("\\empty","\\emptyset");Z("\\Epsilon","\\mathrm{E}");Z("\\Eta","\\mathrm{H}");Z("\\exist","\\exists");Z("\\harr","\\leftrightarrow");Z("\\hArr","\\Leftrightarrow");Z("\\Harr","\\Leftrightarrow");Z("\\hearts","\\heartsuit");Z("\\image","\\Im");Z("\\infin","\\infty");Z("\\Iota","\\mathrm{I}");Z("\\isin","\\in");Z("\\Kappa","\\mathrm{K}");Z("\\larr","\\leftarrow");Z("\\lArr","\\Leftarrow");Z("\\Larr","\\Leftarrow");Z("\\lrarr","\\leftrightarrow");Z("\\lrArr","\\Leftrightarrow");Z("\\Lrarr","\\Leftrightarrow");Z("\\Mu","\\mathrm{M}");Z("\\natnums","\\mathbb{N}");Z("\\Nu","\\mathrm{N}");Z("\\Omicron","\\mathrm{O}");Z("\\plusmn","\\pm");Z("\\rarr","\\rightarrow");Z("\\rArr","\\Rightarrow");Z("\\Rarr","\\Rightarrow");Z("\\real","\\Re");Z("\\reals","\\mathbb{R}");Z("\\Reals","\\mathbb{R}");Z("\\Rho","\\mathrm{P}");Z("\\sdot","\\cdot");Z("\\sect","\\S");Z("\\spades","\\spadesuit");Z("\\sub","\\subset");Z("\\sube","\\subseteq");Z("\\supe","\\supseteq");Z("\\Tau","\\mathrm{T}");Z("\\thetasym","\\vartheta");Z("\\weierp","\\wp");Z("\\Zeta","\\mathrm{Z}");Z("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");Z("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");Z("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");Z("\\bra","\\mathinner{\\langle{#1}|}");Z("\\ket","\\mathinner{|{#1}\\rangle}");Z("\\braket","\\mathinner{\\langle{#1}\\rangle}");Z("\\Bra","\\left\\langle#1\\right|");Z("\\Ket","\\left|#1\\right\\rangle");var qQ=t=>e=>{var n=e.consumeArg().tokens,r=e.consumeArg().tokens,s=e.consumeArg().tokens,i=e.consumeArg().tokens,a=e.macros.get("|"),o=e.macros.get("\\|");e.macros.beginGroup();var c=m=>g=>{t&&(g.macros.set("|",a),s.length&&g.macros.set("\\|",o));var x=m;if(!m&&s.length){var y=g.future();y.text==="|"&&(g.popToken(),x=!0)}return{tokens:x?s:r,numArgs:0}};e.macros.set("|",c(!1)),s.length&&e.macros.set("\\|",c(!0));var h=e.consumeArg().tokens,f=e.expandTokens([...i,...h,...n]);return e.macros.endGroup(),{tokens:f.reverse(),numArgs:0}};Z("\\bra@ket",qQ(!1));Z("\\bra@set",qQ(!0));Z("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");Z("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");Z("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");Z("\\angln","{\\angl n}");Z("\\blue","\\textcolor{##6495ed}{#1}");Z("\\orange","\\textcolor{##ffa500}{#1}");Z("\\pink","\\textcolor{##ff00af}{#1}");Z("\\red","\\textcolor{##df0030}{#1}");Z("\\green","\\textcolor{##28ae7b}{#1}");Z("\\gray","\\textcolor{gray}{#1}");Z("\\purple","\\textcolor{##9d38bd}{#1}");Z("\\blueA","\\textcolor{##ccfaff}{#1}");Z("\\blueB","\\textcolor{##80f6ff}{#1}");Z("\\blueC","\\textcolor{##63d9ea}{#1}");Z("\\blueD","\\textcolor{##11accd}{#1}");Z("\\blueE","\\textcolor{##0c7f99}{#1}");Z("\\tealA","\\textcolor{##94fff5}{#1}");Z("\\tealB","\\textcolor{##26edd5}{#1}");Z("\\tealC","\\textcolor{##01d1c1}{#1}");Z("\\tealD","\\textcolor{##01a995}{#1}");Z("\\tealE","\\textcolor{##208170}{#1}");Z("\\greenA","\\textcolor{##b6ffb0}{#1}");Z("\\greenB","\\textcolor{##8af281}{#1}");Z("\\greenC","\\textcolor{##74cf70}{#1}");Z("\\greenD","\\textcolor{##1fab54}{#1}");Z("\\greenE","\\textcolor{##0d923f}{#1}");Z("\\goldA","\\textcolor{##ffd0a9}{#1}");Z("\\goldB","\\textcolor{##ffbb71}{#1}");Z("\\goldC","\\textcolor{##ff9c39}{#1}");Z("\\goldD","\\textcolor{##e07d10}{#1}");Z("\\goldE","\\textcolor{##a75a05}{#1}");Z("\\redA","\\textcolor{##fca9a9}{#1}");Z("\\redB","\\textcolor{##ff8482}{#1}");Z("\\redC","\\textcolor{##f9685d}{#1}");Z("\\redD","\\textcolor{##e84d39}{#1}");Z("\\redE","\\textcolor{##bc2612}{#1}");Z("\\maroonA","\\textcolor{##ffbde0}{#1}");Z("\\maroonB","\\textcolor{##ff92c6}{#1}");Z("\\maroonC","\\textcolor{##ed5fa6}{#1}");Z("\\maroonD","\\textcolor{##ca337c}{#1}");Z("\\maroonE","\\textcolor{##9e034e}{#1}");Z("\\purpleA","\\textcolor{##ddd7ff}{#1}");Z("\\purpleB","\\textcolor{##c6b9fc}{#1}");Z("\\purpleC","\\textcolor{##aa87ff}{#1}");Z("\\purpleD","\\textcolor{##7854ab}{#1}");Z("\\purpleE","\\textcolor{##543b78}{#1}");Z("\\mintA","\\textcolor{##f5f9e8}{#1}");Z("\\mintB","\\textcolor{##edf2df}{#1}");Z("\\mintC","\\textcolor{##e0e5cc}{#1}");Z("\\grayA","\\textcolor{##f6f7f7}{#1}");Z("\\grayB","\\textcolor{##f0f1f2}{#1}");Z("\\grayC","\\textcolor{##e3e5e6}{#1}");Z("\\grayD","\\textcolor{##d6d8da}{#1}");Z("\\grayE","\\textcolor{##babec2}{#1}");Z("\\grayF","\\textcolor{##888d93}{#1}");Z("\\grayG","\\textcolor{##626569}{#1}");Z("\\grayH","\\textcolor{##3b3e40}{#1}");Z("\\grayI","\\textcolor{##21242c}{#1}");Z("\\kaBlue","\\textcolor{##314453}{#1}");Z("\\kaGreen","\\textcolor{##71B307}{#1}");var FQ={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class E2e{constructor(e,n,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=n,this.expansionCount=0,this.feed(e),this.macros=new C2e(T2e,n.macros),this.mode=r,this.stack=[]}feed(e){this.lexer=new OM(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var n,r,s;if(e){if(this.consumeSpaces(),this.future().text!=="[")return null;n=this.popToken(),{tokens:s,end:r}=this.consumeArg(["]"])}else({tokens:s,start:n,end:r}=this.consumeArg());return this.pushToken(new Ri("EOF",r.loc)),this.pushTokens(s),new Ri("",Js.range(n,r))}consumeSpaces(){for(;;){var e=this.future();if(e.text===" ")this.stack.pop();else break}}consumeArg(e){var n=[],r=e&&e.length>0;r||this.consumeSpaces();var s=this.future(),i,a=0,o=0;do{if(i=this.popToken(),n.push(i),i.text==="{")++a;else if(i.text==="}"){if(--a,a===-1)throw new $e("Extra }",i)}else if(i.text==="EOF")throw new $e("Unexpected end of input in a macro argument, expected '"+(e&&r?e[o]:"}")+"'",i);if(e&&r)if((a===0||a===1&&e[o]==="{")&&i.text===e[o]){if(++o,o===e.length){n.splice(-o,o);break}}else o=0}while(a!==0||r);return s.text==="{"&&n[n.length-1].text==="}"&&(n.pop(),n.shift()),n.reverse(),{tokens:n,start:s,end:i}}consumeArgs(e,n){if(n){if(n.length!==e+1)throw new $e("The length of delimiters doesn't match the number of args!");for(var r=n[0],s=0;sthis.settings.maxExpand)throw new $e("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var n=this.popToken(),r=n.text,s=n.noexpand?null:this._getExpansion(r);if(s==null||e&&s.unexpandable){if(e&&s==null&&r[0]==="\\"&&!this.isDefined(r))throw new $e("Undefined control sequence: "+r);return this.pushToken(n),!1}this.countExpansion(1);var i=s.tokens,a=this.consumeArgs(s.numArgs,s.delimiters);if(s.numArgs){i=i.slice();for(var o=i.length-1;o>=0;--o){var c=i[o];if(c.text==="#"){if(o===0)throw new $e("Incomplete placeholder at end of macro body",c);if(c=i[--o],c.text==="#")i.splice(o+1,1);else if(/^[1-9]$/.test(c.text))i.splice(o,2,...a[+c.text-1]);else throw new $e("Not a valid argument number",c)}}}return this.pushTokens(i),i.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new Ri(e)]):void 0}expandTokens(e){var n=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;)if(this.expandOnce(!0)===!1){var s=this.stack.pop();s.treatAsRelax&&(s.noexpand=!1,s.treatAsRelax=!1),n.push(s)}return this.countExpansion(n.length),n}expandMacroAsText(e){var n=this.expandMacro(e);return n&&n.map(r=>r.text).join("")}_getExpansion(e){var n=this.macros.get(e);if(n==null)return n;if(e.length===1){var r=this.lexer.catcodes[e];if(r!=null&&r!==13)return}var s=typeof n=="function"?n(this):n;if(typeof s=="string"){var i=0;if(s.indexOf("#")!==-1)for(var a=s.replace(/##/g,"");a.indexOf("#"+(i+1))!==-1;)++i;for(var o=new OM(s,this.settings),c=[],h=o.lex();h.text!=="EOF";)c.push(h),h=o.lex();c.reverse();var f={tokens:c,numArgs:i};return f}return s}isDefined(e){return this.macros.has(e)||fc.hasOwnProperty(e)||Jn.math.hasOwnProperty(e)||Jn.text.hasOwnProperty(e)||FQ.hasOwnProperty(e)}isExpandable(e){var n=this.macros.get(e);return n!=null?typeof n=="string"||typeof n=="function"||!n.unexpandable:fc.hasOwnProperty(e)&&!fc[e].primitive}}var TM=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,Lx=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g",ʰ:"h","ⁱ":"i",ʲ:"j","ᵏ":"k",ˡ:"l","ᵐ":"m",ⁿ:"n","ᵒ":"o","ᵖ":"p",ʳ:"r",ˢ:"s","ᵗ":"t","ᵘ":"u","ᵛ":"v",ʷ:"w",ˣ:"x",ʸ:"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),L4={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},EM={á:"á",à:"à",ä:"ä",ǟ:"ǟ",ã:"ã",ā:"ā",ă:"ă",ắ:"ắ",ằ:"ằ",ẵ:"ẵ",ǎ:"ǎ",â:"â",ấ:"ấ",ầ:"ầ",ẫ:"ẫ",ȧ:"ȧ",ǡ:"ǡ",å:"å",ǻ:"ǻ",ḃ:"ḃ",ć:"ć",ḉ:"ḉ",č:"č",ĉ:"ĉ",ċ:"ċ",ç:"ç",ď:"ď",ḋ:"ḋ",ḑ:"ḑ",é:"é",è:"è",ë:"ë",ẽ:"ẽ",ē:"ē",ḗ:"ḗ",ḕ:"ḕ",ĕ:"ĕ",ḝ:"ḝ",ě:"ě",ê:"ê",ế:"ế",ề:"ề",ễ:"ễ",ė:"ė",ȩ:"ȩ",ḟ:"ḟ",ǵ:"ǵ",ḡ:"ḡ",ğ:"ğ",ǧ:"ǧ",ĝ:"ĝ",ġ:"ġ",ģ:"ģ",ḧ:"ḧ",ȟ:"ȟ",ĥ:"ĥ",ḣ:"ḣ",ḩ:"ḩ",í:"í",ì:"ì",ï:"ï",ḯ:"ḯ",ĩ:"ĩ",ī:"ī",ĭ:"ĭ",ǐ:"ǐ",î:"î",ǰ:"ǰ",ĵ:"ĵ",ḱ:"ḱ",ǩ:"ǩ",ķ:"ķ",ĺ:"ĺ",ľ:"ľ",ļ:"ļ",ḿ:"ḿ",ṁ:"ṁ",ń:"ń",ǹ:"ǹ",ñ:"ñ",ň:"ň",ṅ:"ṅ",ņ:"ņ",ó:"ó",ò:"ò",ö:"ö",ȫ:"ȫ",õ:"õ",ṍ:"ṍ",ṏ:"ṏ",ȭ:"ȭ",ō:"ō",ṓ:"ṓ",ṑ:"ṑ",ŏ:"ŏ",ǒ:"ǒ",ô:"ô",ố:"ố",ồ:"ồ",ỗ:"ỗ",ȯ:"ȯ",ȱ:"ȱ",ő:"ő",ṕ:"ṕ",ṗ:"ṗ",ŕ:"ŕ",ř:"ř",ṙ:"ṙ",ŗ:"ŗ",ś:"ś",ṥ:"ṥ",š:"š",ṧ:"ṧ",ŝ:"ŝ",ṡ:"ṡ",ş:"ş",ẗ:"ẗ",ť:"ť",ṫ:"ṫ",ţ:"ţ",ú:"ú",ù:"ù",ü:"ü",ǘ:"ǘ",ǜ:"ǜ",ǖ:"ǖ",ǚ:"ǚ",ũ:"ũ",ṹ:"ṹ",ū:"ū",ṻ:"ṻ",ŭ:"ŭ",ǔ:"ǔ",û:"û",ů:"ů",ű:"ű",ṽ:"ṽ",ẃ:"ẃ",ẁ:"ẁ",ẅ:"ẅ",ŵ:"ŵ",ẇ:"ẇ",ẘ:"ẘ",ẍ:"ẍ",ẋ:"ẋ",ý:"ý",ỳ:"ỳ",ÿ:"ÿ",ỹ:"ỹ",ȳ:"ȳ",ŷ:"ŷ",ẏ:"ẏ",ẙ:"ẙ",ź:"ź",ž:"ž",ẑ:"ẑ",ż:"ż",Á:"Á",À:"À",Ä:"Ä",Ǟ:"Ǟ",Ã:"Ã",Ā:"Ā",Ă:"Ă",Ắ:"Ắ",Ằ:"Ằ",Ẵ:"Ẵ",Ǎ:"Ǎ",Â:"Â",Ấ:"Ấ",Ầ:"Ầ",Ẫ:"Ẫ",Ȧ:"Ȧ",Ǡ:"Ǡ",Å:"Å",Ǻ:"Ǻ",Ḃ:"Ḃ",Ć:"Ć",Ḉ:"Ḉ",Č:"Č",Ĉ:"Ĉ",Ċ:"Ċ",Ç:"Ç",Ď:"Ď",Ḋ:"Ḋ",Ḑ:"Ḑ",É:"É",È:"È",Ë:"Ë",Ẽ:"Ẽ",Ē:"Ē",Ḗ:"Ḗ",Ḕ:"Ḕ",Ĕ:"Ĕ",Ḝ:"Ḝ",Ě:"Ě",Ê:"Ê",Ế:"Ế",Ề:"Ề",Ễ:"Ễ",Ė:"Ė",Ȩ:"Ȩ",Ḟ:"Ḟ",Ǵ:"Ǵ",Ḡ:"Ḡ",Ğ:"Ğ",Ǧ:"Ǧ",Ĝ:"Ĝ",Ġ:"Ġ",Ģ:"Ģ",Ḧ:"Ḧ",Ȟ:"Ȟ",Ĥ:"Ĥ",Ḣ:"Ḣ",Ḩ:"Ḩ",Í:"Í",Ì:"Ì",Ï:"Ï",Ḯ:"Ḯ",Ĩ:"Ĩ",Ī:"Ī",Ĭ:"Ĭ",Ǐ:"Ǐ",Î:"Î",İ:"İ",Ĵ:"Ĵ",Ḱ:"Ḱ",Ǩ:"Ǩ",Ķ:"Ķ",Ĺ:"Ĺ",Ľ:"Ľ",Ļ:"Ļ",Ḿ:"Ḿ",Ṁ:"Ṁ",Ń:"Ń",Ǹ:"Ǹ",Ñ:"Ñ",Ň:"Ň",Ṅ:"Ṅ",Ņ:"Ņ",Ó:"Ó",Ò:"Ò",Ö:"Ö",Ȫ:"Ȫ",Õ:"Õ",Ṍ:"Ṍ",Ṏ:"Ṏ",Ȭ:"Ȭ",Ō:"Ō",Ṓ:"Ṓ",Ṑ:"Ṑ",Ŏ:"Ŏ",Ǒ:"Ǒ",Ô:"Ô",Ố:"Ố",Ồ:"Ồ",Ỗ:"Ỗ",Ȯ:"Ȯ",Ȱ:"Ȱ",Ő:"Ő",Ṕ:"Ṕ",Ṗ:"Ṗ",Ŕ:"Ŕ",Ř:"Ř",Ṙ:"Ṙ",Ŗ:"Ŗ",Ś:"Ś",Ṥ:"Ṥ",Š:"Š",Ṧ:"Ṧ",Ŝ:"Ŝ",Ṡ:"Ṡ",Ş:"Ş",Ť:"Ť",Ṫ:"Ṫ",Ţ:"Ţ",Ú:"Ú",Ù:"Ù",Ü:"Ü",Ǘ:"Ǘ",Ǜ:"Ǜ",Ǖ:"Ǖ",Ǚ:"Ǚ",Ũ:"Ũ",Ṹ:"Ṹ",Ū:"Ū",Ṻ:"Ṻ",Ŭ:"Ŭ",Ǔ:"Ǔ",Û:"Û",Ů:"Ů",Ű:"Ű",Ṽ:"Ṽ",Ẃ:"Ẃ",Ẁ:"Ẁ",Ẅ:"Ẅ",Ŵ:"Ŵ",Ẇ:"Ẇ",Ẍ:"Ẍ",Ẋ:"Ẋ",Ý:"Ý",Ỳ:"Ỳ",Ÿ:"Ÿ",Ỹ:"Ỹ",Ȳ:"Ȳ",Ŷ:"Ŷ",Ẏ:"Ẏ",Ź:"Ź",Ž:"Ž",Ẑ:"Ẑ",Ż:"Ż",ά:"ά",ὰ:"ὰ",ᾱ:"ᾱ",ᾰ:"ᾰ",έ:"έ",ὲ:"ὲ",ή:"ή",ὴ:"ὴ",ί:"ί",ὶ:"ὶ",ϊ:"ϊ",ΐ:"ΐ",ῒ:"ῒ",ῑ:"ῑ",ῐ:"ῐ",ό:"ό",ὸ:"ὸ",ύ:"ύ",ὺ:"ὺ",ϋ:"ϋ",ΰ:"ΰ",ῢ:"ῢ",ῡ:"ῡ",ῠ:"ῠ",ώ:"ώ",ὼ:"ὼ",Ύ:"Ύ",Ὺ:"Ὺ",Ϋ:"Ϋ",Ῡ:"Ῡ",Ῠ:"Ῠ",Ώ:"Ώ",Ὼ:"Ὼ"};class My{constructor(e,n){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new E2e(e,n,this.mode),this.settings=n,this.leftrightDepth=0}expect(e,n){if(n===void 0&&(n=!0),this.fetch().text!==e)throw new $e("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());n&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var n=this.nextToken;this.consume(),this.gullet.pushToken(new Ri("}")),this.gullet.pushTokens(e);var r=this.parseExpression(!1);return this.expect("}"),this.nextToken=n,r}parseExpression(e,n){for(var r=[];;){this.mode==="math"&&this.consumeSpaces();var s=this.fetch();if(My.endOfExpression.indexOf(s.text)!==-1||n&&s.text===n||e&&fc[s.text]&&fc[s.text].infix)break;var i=this.parseAtom(n);if(i){if(i.type==="internal")continue}else break;r.push(i)}return this.mode==="text"&&this.formLigatures(r),this.handleInfixNodes(r)}handleInfixNodes(e){for(var n=-1,r,s=0;s=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+n[0]+'" used in math mode',e);var o=Jn[this.mode][n].group,c=Js.range(e),h;if(xbe.hasOwnProperty(o)){var f=o;h={type:"atom",mode:this.mode,family:f,loc:c,text:n}}else h={type:o,mode:this.mode,loc:c,text:n};a=h}else if(n.charCodeAt(0)>=128)this.settings.strict&&(Y$(n.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+n[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+n[0]+'"'+(" ("+n.charCodeAt(0)+")"),e)),a={type:"textord",mode:"text",loc:Js.range(e),text:n};else return null;if(this.consume(),i)for(var m=0;mh&&(h=f):f&&(h!==void 0&&h>-1&&c.push(` -`.repeat(h)||" "),h=-1,c.push(f))}return c.join("")}function GQ(t,e,n){return t.type==="element"?awe(t,e,n):t.type==="text"?n.whitespace==="normal"?XQ(t,n):lwe(t):[]}function awe(t,e,n){const r=YQ(t,n),s=t.children||[];let i=-1,a=[];if(swe(t))return a;let o,c;for(bk(t)||IM(t)&&DM(e,t,IM)?c=` -`:rwe(t)?(o=2,c=2):WQ(t)&&(o=1,c=1);++i{try{i(!0);const Oe=await xwe({page:a,page_size:f,is_registered:g==="all"?void 0:g==="registered",is_banned:y==="all"?void 0:y==="banned",format:S==="all"?void 0:S,sort_by:N,sort_order:T});e(Oe.data),h(Oe.total)}catch(Oe){const He=Oe instanceof Error?Oe.message:"加载表情包列表失败";W({title:"错误",description:He,variant:"destructive"})}finally{i(!1)}},[a,f,g,y,S,N,T,W]),V=async()=>{try{const Oe=await wwe();r(Oe.data)}catch(Oe){console.error("加载统计数据失败:",Oe)}};b.useEffect(()=>{F()},[F]),b.useEffect(()=>{V()},[]);const te=async Oe=>{try{const He=await vwe(Oe.id);M(He.data),P(!0)}catch(He){const Ve=He instanceof Error?He.message:"加载详情失败";W({title:"错误",description:Ve,variant:"destructive"})}},ne=Oe=>{M(Oe),Q(!0)},K=Oe=>{M(Oe),ee(!0)},ie=async()=>{if(E)try{await bwe(E.id),W({title:"成功",description:"表情包已删除"}),ee(!1),M(null),F(),V()}catch(Oe){const He=Oe instanceof Error?Oe.message:"删除失败";W({title:"错误",description:He,variant:"destructive"})}},re=async Oe=>{try{await Swe(Oe.id),W({title:"成功",description:"表情包已注册"}),F(),V()}catch(He){const Ve=He instanceof Error?He.message:"注册失败";W({title:"错误",description:Ve,variant:"destructive"})}},ae=async Oe=>{try{await kwe(Oe.id),W({title:"成功",description:"表情包已封禁"}),F(),V()}catch(He){const Ve=He instanceof Error?He.message:"封禁失败";W({title:"错误",description:Ve,variant:"destructive"})}},_e=Oe=>{const He=new Set(z);He.has(Oe)?He.delete(Oe):He.add(Oe),H(He)},Ue=async()=>{try{const Oe=await jwe(Array.from(z));W({title:"批量删除完成",description:Oe.message}),H(new Set),X(!1),F(),V()}catch(Oe){W({title:"批量删除失败",description:Oe instanceof Error?Oe.message:"批量删除失败",variant:"destructive"})}},Xe=()=>{const Oe=parseInt(J),He=Math.ceil(c/f);Oe>=1&&Oe<=He?(o(Oe),G("")):W({title:"无效的页码",description:`请输入1-${He}之间的页码`,variant:"destructive"})},Ze=n?.formats?Object.keys(n.formats):[];return l.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[l.jsxs("div",{className:"mb-4 sm:mb-6",children:[l.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"表情包管理"}),l.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理麦麦的表情包资源"})]}),l.jsx(hn,{className:"flex-1",children:l.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[n&&l.jsxs("div",{className:"grid gap-4 grid-cols-2 lg:grid-cols-4",children:[l.jsx(Dt,{children:l.jsxs(kn,{className:"pb-2",children:[l.jsx(Fr,{children:"总数"}),l.jsx(jn,{className:"text-2xl",children:n.total})]})}),l.jsx(Dt,{children:l.jsxs(kn,{className:"pb-2",children:[l.jsx(Fr,{children:"已注册"}),l.jsx(jn,{className:"text-2xl text-green-600",children:n.registered})]})}),l.jsx(Dt,{children:l.jsxs(kn,{className:"pb-2",children:[l.jsx(Fr,{children:"已封禁"}),l.jsx(jn,{className:"text-2xl text-red-600",children:n.banned})]})}),l.jsx(Dt,{children:l.jsxs(kn,{className:"pb-2",children:[l.jsx(Fr,{children:"未注册"}),l.jsx(jn,{className:"text-2xl text-gray-600",children:n.unregistered})]})})]}),l.jsxs(Dt,{children:[l.jsx(kn,{children:l.jsxs(jn,{className:"flex items-center gap-2",children:[l.jsx(P3,{className:"h-5 w-5"}),"筛选和排序"]})}),l.jsxs(Dn,{className:"space-y-4",children:[l.jsxs("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{children:"排序方式"}),l.jsxs(qt,{value:`${N}-${T}`,onValueChange:Oe=>{const[He,Ve]=Oe.split("-");C(He),_(Ve),o(1)},children:[l.jsx(It,{children:l.jsx(Ft,{})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"usage_count-desc",children:"使用次数 (多→少)"}),l.jsx(De,{value:"usage_count-asc",children:"使用次数 (少→多)"}),l.jsx(De,{value:"register_time-desc",children:"注册时间 (新→旧)"}),l.jsx(De,{value:"register_time-asc",children:"注册时间 (旧→新)"}),l.jsx(De,{value:"record_time-desc",children:"记录时间 (新→旧)"}),l.jsx(De,{value:"record_time-asc",children:"记录时间 (旧→新)"}),l.jsx(De,{value:"last_used_time-desc",children:"最后使用 (新→旧)"}),l.jsx(De,{value:"last_used_time-asc",children:"最后使用 (旧→新)"})]})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{children:"注册状态"}),l.jsxs(qt,{value:g,onValueChange:Oe=>{x(Oe),o(1)},children:[l.jsx(It,{children:l.jsx(Ft,{})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"all",children:"全部"}),l.jsx(De,{value:"registered",children:"已注册"}),l.jsx(De,{value:"unregistered",children:"未注册"})]})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{children:"封禁状态"}),l.jsxs(qt,{value:y,onValueChange:Oe=>{w(Oe),o(1)},children:[l.jsx(It,{children:l.jsx(Ft,{})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"all",children:"全部"}),l.jsx(De,{value:"banned",children:"已封禁"}),l.jsx(De,{value:"unbanned",children:"未封禁"})]})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{children:"格式"}),l.jsxs(qt,{value:S,onValueChange:Oe=>{k(Oe),o(1)},children:[l.jsx(It,{children:l.jsx(Ft,{})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"all",children:"全部"}),Ze.map(Oe=>l.jsxs(De,{value:Oe,children:[Oe.toUpperCase()," (",n?.formats[Oe],")"]},Oe))]})]})]})]}),l.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 pt-4 border-t",children:[l.jsxs("div",{className:"flex items-center gap-4",children:[z.size>0&&l.jsxs("span",{className:"text-sm text-muted-foreground",children:["已选择 ",z.size," 个表情包"]}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx(ue,{className:"text-sm whitespace-nowrap",children:"卡片大小"}),l.jsxs(qt,{value:R,onValueChange:Oe=>se(Oe),children:[l.jsx(It,{className:"w-24",children:l.jsx(Ft,{})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"small",children:"小"}),l.jsx(De,{value:"medium",children:"中"}),l.jsx(De,{value:"large",children:"大"})]})]})]})]}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx(ue,{htmlFor:"emoji-page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),l.jsxs(qt,{value:f.toString(),onValueChange:Oe=>{m(parseInt(Oe)),o(1),H(new Set)},children:[l.jsx(It,{id:"emoji-page-size",className:"w-20",children:l.jsx(Ft,{})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"20",children:"20"}),l.jsx(De,{value:"40",children:"40"}),l.jsx(De,{value:"60",children:"60"}),l.jsx(De,{value:"100",children:"100"})]})]}),z.size>0&&l.jsxs(l.Fragment,{children:[l.jsx(de,{variant:"outline",size:"sm",onClick:()=>H(new Set),children:"取消选择"}),l.jsxs(de,{variant:"destructive",size:"sm",onClick:()=>X(!0),children:[l.jsx(fn,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]}),l.jsx("div",{className:"flex justify-end pt-4 border-t",children:l.jsxs(de,{variant:"outline",size:"sm",onClick:F,disabled:s,children:[l.jsx(Ls,{className:`h-4 w-4 mr-2 ${s?"animate-spin":""}`}),"刷新"]})})]})]}),l.jsxs(Dt,{children:[l.jsxs(kn,{children:[l.jsx(jn,{children:"表情包列表"}),l.jsxs(Fr,{children:["共 ",c," 个表情包,当前第 ",a," 页"]})]}),l.jsxs(Dn,{children:[t.length===0?l.jsx("div",{className:"text-center py-12 text-muted-foreground",children:"暂无数据"}):l.jsx("div",{className:`grid gap-3 ${R==="small"?"grid-cols-3 sm:grid-cols-4 md:grid-cols-6 lg:grid-cols-8 xl:grid-cols-10":R==="medium"?"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 xl:grid-cols-8":"grid-cols-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5"}`,children:t.map(Oe=>l.jsxs("div",{className:`group relative rounded-lg border bg-card overflow-hidden hover:ring-2 hover:ring-primary transition-all cursor-pointer ${z.has(Oe.id)?"ring-2 ring-primary bg-primary/5":""}`,onClick:()=>_e(Oe.id),children:[l.jsx("div",{className:`absolute top-1 left-1 z-10 transition-opacity ${z.has(Oe.id)?"opacity-100":"opacity-0 group-hover:opacity-100"}`,children:l.jsx("div",{className:`w-5 h-5 rounded-full border-2 flex items-center justify-center ${z.has(Oe.id)?"bg-primary border-primary text-primary-foreground":"bg-background/80 border-muted-foreground/50"}`,children:z.has(Oe.id)&&l.jsx(xc,{className:"h-3 w-3"})})}),l.jsxs("div",{className:"absolute top-1 right-1 z-10 flex flex-col gap-0.5",children:[Oe.is_registered&&l.jsx(In,{variant:"default",className:"bg-green-600 text-[10px] px-1 py-0",children:"已注册"}),Oe.is_banned&&l.jsx(In,{variant:"destructive",className:"text-[10px] px-1 py-0",children:"已封禁"})]}),l.jsx("div",{className:`aspect-square bg-muted flex items-center justify-center overflow-hidden ${R==="small"?"p-1":R==="medium"?"p-2":"p-3"}`,children:l.jsx("img",{src:KQ(Oe.id),alt:"表情包",className:"w-full h-full object-contain",loading:"lazy",onError:He=>{const Ve=He.target;Ve.style.display="none";const Be=Ve.parentElement;Be&&(Be.innerHTML='')}})}),l.jsxs("div",{className:`border-t bg-card ${R==="small"?"p-1":"p-2"}`,children:[l.jsxs("div",{className:"flex items-center justify-between gap-1 text-xs text-muted-foreground mb-1",children:[l.jsx(In,{variant:"outline",className:"text-[10px] px-1 py-0",children:Oe.format.toUpperCase()}),l.jsxs("span",{className:"font-mono",children:[Oe.usage_count,"次"]})]}),l.jsxs("div",{className:`flex gap-1 justify-center opacity-0 group-hover:opacity-100 transition-opacity ${R==="small"?"flex-wrap":""}`,children:[l.jsx(de,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:He=>{He.stopPropagation(),ne(Oe)},title:"编辑",children:l.jsx(Qm,{className:"h-3 w-3"})}),l.jsx(de,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:He=>{He.stopPropagation(),te(Oe)},title:"详情",children:l.jsx(ra,{className:"h-3 w-3"})}),!Oe.is_registered&&l.jsx(de,{variant:"ghost",size:"icon",className:"h-6 w-6 text-green-600 hover:text-green-700",onClick:He=>{He.stopPropagation(),re(Oe)},title:"注册",children:l.jsx(xc,{className:"h-3 w-3"})}),!Oe.is_banned&&l.jsx(de,{variant:"ghost",size:"icon",className:"h-6 w-6 text-orange-600 hover:text-orange-700",onClick:He=>{He.stopPropagation(),ae(Oe)},title:"封禁",children:l.jsx(HK,{className:"h-3 w-3"})}),l.jsx(de,{variant:"ghost",size:"icon",className:"h-6 w-6 text-red-600 hover:text-red-700",onClick:He=>{He.stopPropagation(),K(Oe)},title:"删除",children:l.jsx(fn,{className:"h-3 w-3"})})]})]})]},Oe.id))}),c>0&&l.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[l.jsxs("div",{className:"text-sm text-muted-foreground",children:["显示 ",(a-1)*f+1," 到"," ",Math.min(a*f,c)," 条,共 ",c," 条"]}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx(de,{variant:"outline",size:"sm",onClick:()=>o(1),disabled:a===1,className:"hidden sm:flex",children:l.jsx(L0,{className:"h-4 w-4"})}),l.jsxs(de,{variant:"outline",size:"sm",onClick:()=>o(Oe=>Math.max(1,Oe-1)),disabled:a===1,children:[l.jsx($u,{className:"h-4 w-4 sm:mr-1"}),l.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx(Pe,{type:"number",value:J,onChange:Oe=>G(Oe.target.value),onKeyDown:Oe=>Oe.key==="Enter"&&Xe(),placeholder:a.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(c/f)}),l.jsx(de,{variant:"outline",size:"sm",onClick:Xe,disabled:!J,className:"h-8",children:"跳转"})]}),l.jsxs(de,{variant:"outline",size:"sm",onClick:()=>o(Oe=>Oe+1),disabled:a>=Math.ceil(c/f),children:[l.jsx("span",{className:"hidden sm:inline",children:"下一页"}),l.jsx(Qu,{className:"h-4 w-4 sm:ml-1"})]}),l.jsx(de,{variant:"outline",size:"sm",onClick:()=>o(Math.ceil(c/f)),disabled:a>=Math.ceil(c/f),className:"hidden sm:flex",children:l.jsx(I0,{className:"h-4 w-4"})})]})]})]})]}),l.jsx(Nwe,{emoji:E,open:L,onOpenChange:P}),l.jsx(Cwe,{emoji:E,open:I,onOpenChange:Q,onSuccess:()=>{F(),V()}})]})}),l.jsx(Nn,{open:B,onOpenChange:X,children:l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认批量删除"}),l.jsxs(bn,{children:["你确定要删除选中的 ",z.size," 个表情包吗?此操作不可撤销。"]})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:Ue,children:"确认删除"})]})]})}),l.jsx(xr,{open:U,onOpenChange:ee,children:l.jsxs(lr,{children:[l.jsxs(or,{children:[l.jsx(cr,{children:"确认删除"}),l.jsx(Hr,{children:"确定要删除这个表情包吗?此操作无法撤销。"})]}),l.jsxs(as,{children:[l.jsx(de,{variant:"outline",onClick:()=>ee(!1),children:"取消"}),l.jsx(de,{variant:"destructive",onClick:ie,children:"删除"})]})]})})]})}function Nwe({emoji:t,open:e,onOpenChange:n}){if(!t)return null;const r=s=>s?new Date(s*1e3).toLocaleString("zh-CN"):"-";return l.jsx(xr,{open:e,onOpenChange:n,children:l.jsxs(lr,{className:"max-w-2xl max-h-[90vh]",children:[l.jsx(or,{children:l.jsx(cr,{children:"表情包详情"})}),l.jsx(hn,{className:"max-h-[calc(90vh-8rem)] pr-4",children:l.jsxs("div",{className:"space-y-4",children:[l.jsx("div",{className:"flex justify-center",children:l.jsx("div",{className:"w-32 h-32 bg-muted rounded-lg flex items-center justify-center overflow-hidden",children:l.jsx("img",{src:KQ(t.id),alt:t.description||"表情包",className:"w-full h-full object-cover",onError:s=>{const i=s.target;i.style.display="none";const a=i.parentElement;a&&(a.innerHTML='')}})})}),l.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[l.jsxs("div",{children:[l.jsx(ue,{className:"text-muted-foreground",children:"ID"}),l.jsx("div",{className:"mt-1 font-mono",children:t.id})]}),l.jsxs("div",{children:[l.jsx(ue,{className:"text-muted-foreground",children:"格式"}),l.jsx("div",{className:"mt-1",children:l.jsx(In,{variant:"outline",children:t.format.toUpperCase()})})]})]}),l.jsxs("div",{children:[l.jsx(ue,{className:"text-muted-foreground",children:"文件路径"}),l.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:t.full_path})]}),l.jsxs("div",{children:[l.jsx(ue,{className:"text-muted-foreground",children:"哈希值"}),l.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:t.emoji_hash})]}),l.jsxs("div",{children:[l.jsx(ue,{className:"text-muted-foreground",children:"描述"}),t.description?l.jsx("div",{className:"mt-1 rounded-lg border bg-muted/50 p-3",children:l.jsx(gwe,{className:"prose-sm",children:t.description})}):l.jsx("div",{className:"mt-1 text-sm text-muted-foreground",children:"-"})]}),l.jsxs("div",{children:[l.jsx(ue,{className:"text-muted-foreground",children:"情绪"}),l.jsx("div",{className:"mt-1",children:t.emotion?l.jsx("span",{className:"text-sm",children:t.emotion}):l.jsx("span",{className:"text-sm text-muted-foreground",children:"-"})})]}),l.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[l.jsxs("div",{children:[l.jsx(ue,{className:"text-muted-foreground",children:"状态"}),l.jsxs("div",{className:"mt-2 flex gap-2",children:[t.is_registered&&l.jsx(In,{variant:"default",className:"bg-green-600",children:"已注册"}),t.is_banned&&l.jsx(In,{variant:"destructive",children:"已封禁"}),!t.is_registered&&!t.is_banned&&l.jsx(In,{variant:"outline",children:"未注册"})]})]}),l.jsxs("div",{children:[l.jsx(ue,{className:"text-muted-foreground",children:"使用次数"}),l.jsx("div",{className:"mt-1 font-mono text-lg",children:t.usage_count})]})]}),l.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[l.jsxs("div",{children:[l.jsx(ue,{className:"text-muted-foreground",children:"记录时间"}),l.jsx("div",{className:"mt-1 text-sm",children:r(t.record_time)})]}),l.jsxs("div",{children:[l.jsx(ue,{className:"text-muted-foreground",children:"注册时间"}),l.jsx("div",{className:"mt-1 text-sm",children:r(t.register_time)})]})]}),l.jsxs("div",{children:[l.jsx(ue,{className:"text-muted-foreground",children:"最后使用"}),l.jsx("div",{className:"mt-1 text-sm",children:r(t.last_used_time)})]})]})})]})})}function Cwe({emoji:t,open:e,onOpenChange:n,onSuccess:r}){const[s,i]=b.useState(""),[a,o]=b.useState(!1),[c,h]=b.useState(!1),[f,m]=b.useState(!1),{toast:g}=ts();b.useEffect(()=>{t&&(i(t.emotion||""),o(t.is_registered),h(t.is_banned))},[t]);const x=async()=>{if(t)try{m(!0);const y=s.split(/[,,]/).map(w=>w.trim()).filter(Boolean).join(",");await ywe(t.id,{emotion:y||void 0,is_registered:a,is_banned:c}),g({title:"成功",description:"表情包信息已更新"}),n(!1),r()}catch(y){const w=y instanceof Error?y.message:"保存失败";g({title:"错误",description:w,variant:"destructive"})}finally{m(!1)}};return t?l.jsx(xr,{open:e,onOpenChange:n,children:l.jsxs(lr,{className:"max-w-2xl",children:[l.jsxs(or,{children:[l.jsx(cr,{children:"编辑表情包"}),l.jsx(Hr,{children:"修改表情包的情绪和状态信息"})]}),l.jsxs("div",{className:"space-y-4",children:[l.jsxs("div",{children:[l.jsx(ue,{children:"情绪"}),l.jsx(pr,{value:s,onChange:y=>i(y.target.value),placeholder:"输入情绪描述...",rows:2,className:"mt-1"}),l.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"输入情绪相关的文本描述"})]}),l.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx(li,{id:"is_registered",checked:a,onCheckedChange:y=>{y===!0?(o(!0),h(!1)):o(!1)}}),l.jsx(ue,{htmlFor:"is_registered",className:"cursor-pointer",children:"已注册"})]}),l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx(li,{id:"is_banned",checked:c,onCheckedChange:y=>{y===!0?(h(!0),o(!1)):h(!1)}}),l.jsx(ue,{htmlFor:"is_banned",className:"cursor-pointer",children:"已封禁"})]})]})]}),l.jsxs(as,{children:[l.jsx(de,{variant:"outline",onClick:()=>n(!1),children:"取消"}),l.jsx(de,{onClick:x,disabled:f,children:f?"保存中...":"保存"})]})]})}):null}const Lc="/api/webui/expression";async function Twe(){const t=await pt(`${Lc}/chats`,{headers:Ct()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取聊天列表失败")}return t.json()}async function Ewe(t){const e=new URLSearchParams;t.page&&e.append("page",t.page.toString()),t.page_size&&e.append("page_size",t.page_size.toString()),t.search&&e.append("search",t.search),t.chat_id&&e.append("chat_id",t.chat_id);const n=await pt(`${Lc}/list?${e}`,{headers:Ct()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取表达方式列表失败")}return n.json()}async function _we(t){const e=await pt(`${Lc}/${t}`,{headers:Ct()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"获取表达方式详情失败")}return e.json()}async function Mwe(t){const e=await pt(`${Lc}/`,{method:"POST",headers:Ct(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"创建表达方式失败")}return e.json()}async function Awe(t,e){const n=await pt(`${Lc}/${t}`,{method:"PATCH",headers:Ct(),body:JSON.stringify(e)});if(!n.ok){const r=await n.json();throw new Error(r.detail||"更新表达方式失败")}return n.json()}async function Rwe(t){const e=await pt(`${Lc}/${t}`,{method:"DELETE",headers:Ct()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"删除表达方式失败")}return e.json()}async function Dwe(t){const e=await pt(`${Lc}/batch/delete`,{method:"POST",headers:Ct(),body:JSON.stringify({ids:t})});if(!e.ok){const n=await e.json();throw new Error(n.detail||"批量删除表达方式失败")}return e.json()}async function zwe(){const t=await pt(`${Lc}/stats/summary`,{headers:Ct()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取统计数据失败")}return t.json()}function Pwe(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[s,i]=b.useState(0),[a,o]=b.useState(1),[c,h]=b.useState(20),[f,m]=b.useState(""),[g,x]=b.useState(null),[y,w]=b.useState(!1),[S,k]=b.useState(!1),[N,C]=b.useState(!1),[T,_]=b.useState(null),[E,M]=b.useState(new Set),[L,P]=b.useState(!1),[I,Q]=b.useState(""),[U,ee]=b.useState({total:0,recent_7days:0,chat_count:0,top_chats:{}}),[z,H]=b.useState([]),[B,X]=b.useState(new Map),{toast:J}=ts(),G=async()=>{try{r(!0);const ae=await Ewe({page:a,page_size:c,search:f||void 0});e(ae.data),i(ae.total)}catch(ae){J({title:"加载失败",description:ae instanceof Error?ae.message:"无法加载表达方式",variant:"destructive"})}finally{r(!1)}},R=async()=>{try{const ae=await zwe();ae?.data&&ee(ae.data)}catch(ae){console.error("加载统计数据失败:",ae)}},se=async()=>{try{const ae=await Twe();if(ae?.data){H(ae.data);const _e=new Map;ae.data.forEach(Ue=>{_e.set(Ue.chat_id,Ue.chat_name)}),X(_e)}}catch(ae){console.error("加载聊天列表失败:",ae)}},W=ae=>B.get(ae)||ae;b.useEffect(()=>{G(),R(),se()},[a,c,f]);const F=async ae=>{try{const _e=await _we(ae.id);x(_e.data),w(!0)}catch(_e){J({title:"加载详情失败",description:_e instanceof Error?_e.message:"无法加载表达方式详情",variant:"destructive"})}},V=ae=>{x(ae),k(!0)},te=async ae=>{try{await Rwe(ae.id),J({title:"删除成功",description:`已删除表达方式: ${ae.situation}`}),_(null),G(),R()}catch(_e){J({title:"删除失败",description:_e instanceof Error?_e.message:"无法删除表达方式",variant:"destructive"})}},ne=ae=>{const _e=new Set(E);_e.has(ae)?_e.delete(ae):_e.add(ae),M(_e)},K=()=>{E.size===t.length&&t.length>0?M(new Set):M(new Set(t.map(ae=>ae.id)))},ie=async()=>{try{await Dwe(Array.from(E)),J({title:"批量删除成功",description:`已删除 ${E.size} 个表达方式`}),M(new Set),P(!1),G(),R()}catch(ae){J({title:"批量删除失败",description:ae instanceof Error?ae.message:"无法批量删除表达方式",variant:"destructive"})}},re=()=>{const ae=parseInt(I),_e=Math.ceil(s/c);ae>=1&&ae<=_e?(o(ae),Q("")):J({title:"无效的页码",description:`请输入1-${_e}之间的页码`,variant:"destructive"})};return l.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[l.jsx("div",{className:"mb-4 sm:mb-6",children:l.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[l.jsxs("div",{children:[l.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[l.jsx(z0,{className:"h-8 w-8",strokeWidth:2}),"表达方式管理"]}),l.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦的表达方式和话术模板"})]}),l.jsxs(de,{onClick:()=>C(!0),className:"gap-2",children:[l.jsx(ws,{className:"h-4 w-4"}),"新增表达方式"]})]})}),l.jsx(hn,{className:"flex-1",children:l.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[l.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[l.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[l.jsx("div",{className:"text-sm text-muted-foreground",children:"总数量"}),l.jsx("div",{className:"text-2xl font-bold mt-1",children:U.total})]}),l.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[l.jsx("div",{className:"text-sm text-muted-foreground",children:"近7天新增"}),l.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:U.recent_7days})]}),l.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[l.jsx("div",{className:"text-sm text-muted-foreground",children:"关联聊天数"}),l.jsx("div",{className:"text-2xl font-bold mt-1 text-blue-600",children:U.chat_count})]})]}),l.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[l.jsx(ue,{htmlFor:"search",children:"搜索"}),l.jsx("div",{className:"flex flex-col sm:flex-row gap-2 mt-1.5",children:l.jsxs("div",{className:"flex-1 relative",children:[l.jsx(ci,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),l.jsx(Pe,{id:"search",placeholder:"搜索情境、风格或上下文...",value:f,onChange:ae=>m(ae.target.value),className:"pl-9"})]})}),l.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[l.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:E.size>0&&l.jsxs("span",{children:["已选择 ",E.size," 个表达方式"]})}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx(ue,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),l.jsxs(qt,{value:c.toString(),onValueChange:ae=>{h(parseInt(ae)),o(1),M(new Set)},children:[l.jsx(It,{id:"page-size",className:"w-20",children:l.jsx(Ft,{})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"10",children:"10"}),l.jsx(De,{value:"20",children:"20"}),l.jsx(De,{value:"50",children:"50"}),l.jsx(De,{value:"100",children:"100"})]})]}),E.size>0&&l.jsxs(l.Fragment,{children:[l.jsx(de,{variant:"outline",size:"sm",onClick:()=>M(new Set),children:"取消选择"}),l.jsxs(de,{variant:"destructive",size:"sm",onClick:()=>P(!0),children:[l.jsx(fn,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),l.jsxs("div",{className:"rounded-lg border bg-card",children:[l.jsx("div",{className:"hidden md:block",children:l.jsxs(Vh,{children:[l.jsx(Uh,{children:l.jsxs(bs,{children:[l.jsx(ln,{className:"w-12",children:l.jsx(li,{checked:E.size===t.length&&t.length>0,onCheckedChange:K})}),l.jsx(ln,{children:"情境"}),l.jsx(ln,{children:"风格"}),l.jsx(ln,{children:"聊天"}),l.jsx(ln,{className:"text-right",children:"操作"})]})}),l.jsx(Wh,{children:n?l.jsx(bs,{children:l.jsx(Qt,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):t.length===0?l.jsx(bs,{children:l.jsx(Qt,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):t.map(ae=>l.jsxs(bs,{children:[l.jsx(Qt,{children:l.jsx(li,{checked:E.has(ae.id),onCheckedChange:()=>ne(ae.id)})}),l.jsx(Qt,{className:"font-medium max-w-xs truncate",children:ae.situation}),l.jsx(Qt,{className:"max-w-xs truncate",children:ae.style}),l.jsx(Qt,{className:"max-w-[200px] truncate",title:W(ae.chat_id),style:{wordBreak:"keep-all"},children:l.jsx("span",{className:"whitespace-nowrap overflow-hidden text-ellipsis block",children:W(ae.chat_id)})}),l.jsx(Qt,{className:"text-right",children:l.jsxs("div",{className:"flex justify-end gap-2",children:[l.jsxs(de,{variant:"default",size:"sm",onClick:()=>V(ae),children:[l.jsx(Qm,{className:"h-4 w-4 mr-1"}),"编辑"]}),l.jsx(de,{variant:"outline",size:"icon",className:"h-8 w-8",onClick:()=>F(ae),title:"查看详情",children:l.jsx(oa,{className:"h-4 w-4"})}),l.jsxs(de,{size:"sm",onClick:()=>_(ae),className:"bg-red-600 hover:bg-red-700 text-white",children:[l.jsx(fn,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},ae.id))})]})}),l.jsx("div",{className:"md:hidden space-y-3 p-4",children:n?l.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):t.length===0?l.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):t.map(ae=>l.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[l.jsxs("div",{className:"flex items-start gap-3",children:[l.jsx(li,{checked:E.has(ae.id),onCheckedChange:()=>ne(ae.id),className:"mt-1"}),l.jsxs("div",{className:"min-w-0 flex-1 overflow-hidden space-y-2",children:[l.jsxs("div",{children:[l.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"情境"}),l.jsx("h3",{className:"font-semibold text-sm line-clamp-2 w-full break-all",title:ae.situation,children:ae.situation})]}),l.jsxs("div",{children:[l.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"风格"}),l.jsx("p",{className:"text-sm line-clamp-2 w-full break-all",title:ae.style,children:ae.style})]})]})]}),l.jsxs("div",{className:"text-sm",children:[l.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"聊天"}),l.jsx("p",{className:"text-sm truncate",title:W(ae.chat_id),style:{wordBreak:"keep-all"},children:W(ae.chat_id)})]}),l.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[l.jsxs(de,{variant:"outline",size:"sm",onClick:()=>V(ae),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[l.jsx(Qm,{className:"h-3 w-3 mr-1"}),"编辑"]}),l.jsx(de,{variant:"outline",size:"sm",onClick:()=>F(ae),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:l.jsx(oa,{className:"h-3 w-3"})}),l.jsxs(de,{variant:"outline",size:"sm",onClick:()=>_(ae),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[l.jsx(fn,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},ae.id))}),s>0&&l.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[l.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",s," 条记录,第 ",a," / ",Math.ceil(s/c)," 页"]}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx(de,{variant:"outline",size:"sm",onClick:()=>o(1),disabled:a===1,className:"hidden sm:flex",children:l.jsx(L0,{className:"h-4 w-4"})}),l.jsxs(de,{variant:"outline",size:"sm",onClick:()=>o(a-1),disabled:a===1,children:[l.jsx($u,{className:"h-4 w-4 sm:mr-1"}),l.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx(Pe,{type:"number",value:I,onChange:ae=>Q(ae.target.value),onKeyDown:ae=>ae.key==="Enter"&&re(),placeholder:a.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(s/c)}),l.jsx(de,{variant:"outline",size:"sm",onClick:re,disabled:!I,className:"h-8",children:"跳转"})]}),l.jsxs(de,{variant:"outline",size:"sm",onClick:()=>o(a+1),disabled:a>=Math.ceil(s/c),children:[l.jsx("span",{className:"hidden sm:inline",children:"下一页"}),l.jsx(Qu,{className:"h-4 w-4 sm:ml-1"})]}),l.jsx(de,{variant:"outline",size:"sm",onClick:()=>o(Math.ceil(s/c)),disabled:a>=Math.ceil(s/c),className:"hidden sm:flex",children:l.jsx(I0,{className:"h-4 w-4"})})]})]})]})]})}),l.jsx(Lwe,{expression:g,open:y,onOpenChange:w,chatNameMap:B}),l.jsx(Iwe,{open:N,onOpenChange:C,chatList:z,onSuccess:()=>{G(),R(),C(!1)}}),l.jsx(Bwe,{expression:g,open:S,onOpenChange:k,chatList:z,onSuccess:()=>{G(),R(),k(!1)}}),l.jsx(Nn,{open:!!T,onOpenChange:()=>_(null),children:l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认删除"}),l.jsxs(bn,{children:['确定要删除表达方式 "',T?.situation,'" 吗? 此操作不可撤销。']})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:()=>T&&te(T),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),l.jsx(qwe,{open:L,onOpenChange:P,onConfirm:ie,count:E.size})]})}function Lwe({expression:t,open:e,onOpenChange:n,chatNameMap:r}){if(!t)return null;const s=a=>a?new Date(a*1e3).toLocaleString("zh-CN"):"-",i=a=>r.get(a)||a;return l.jsx(xr,{open:e,onOpenChange:n,children:l.jsxs(lr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[l.jsxs(or,{children:[l.jsx(cr,{children:"表达方式详情"}),l.jsx(Hr,{children:"查看表达方式的完整信息"})]}),l.jsxs("div",{className:"space-y-4",children:[l.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[l.jsx(om,{label:"情境",value:t.situation}),l.jsx(om,{label:"风格",value:t.style}),l.jsx(om,{label:"聊天",value:i(t.chat_id)}),l.jsx(om,{icon:L3,label:"记录ID",value:t.id.toString(),mono:!0})]}),l.jsx("div",{className:"grid grid-cols-2 gap-4",children:l.jsx(om,{icon:Zd,label:"创建时间",value:s(t.create_date)})})]}),l.jsx(as,{children:l.jsx(de,{onClick:()=>n(!1),children:"关闭"})})]})})}function om({icon:t,label:e,value:n,mono:r=!1}){return l.jsxs("div",{className:"space-y-1",children:[l.jsxs(ue,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[t&&l.jsx(t,{className:"h-3 w-3"}),e]}),l.jsx("div",{className:ve("text-sm",r&&"font-mono",!n&&"text-muted-foreground"),children:n||"-"})]})}function Iwe({open:t,onOpenChange:e,chatList:n,onSuccess:r}){const[s,i]=b.useState({situation:"",style:"",chat_id:""}),[a,o]=b.useState(!1),{toast:c}=ts(),h=async()=>{if(!s.situation||!s.style||!s.chat_id){c({title:"验证失败",description:"请填写必填字段:情境、风格和聊天",variant:"destructive"});return}try{o(!0),await Mwe(s),c({title:"创建成功",description:"表达方式已创建"}),i({situation:"",style:"",chat_id:""}),r()}catch(f){c({title:"创建失败",description:f instanceof Error?f.message:"无法创建表达方式",variant:"destructive"})}finally{o(!1)}};return l.jsx(xr,{open:t,onOpenChange:e,children:l.jsxs(lr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[l.jsxs(or,{children:[l.jsx(cr,{children:"新增表达方式"}),l.jsx(Hr,{children:"创建新的表达方式记录"})]}),l.jsxs("div",{className:"space-y-4",children:[l.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[l.jsxs("div",{className:"space-y-2",children:[l.jsxs(ue,{htmlFor:"situation",children:["情境 ",l.jsx("span",{className:"text-destructive",children:"*"})]}),l.jsx(Pe,{id:"situation",value:s.situation,onChange:f=>i({...s,situation:f.target.value}),placeholder:"描述使用场景"})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsxs(ue,{htmlFor:"style",children:["风格 ",l.jsx("span",{className:"text-destructive",children:"*"})]}),l.jsx(Pe,{id:"style",value:s.style,onChange:f=>i({...s,style:f.target.value}),placeholder:"描述表达风格"})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsxs(ue,{htmlFor:"chat_id",children:["聊天 ",l.jsx("span",{className:"text-destructive",children:"*"})]}),l.jsxs(qt,{value:s.chat_id,onValueChange:f=>i({...s,chat_id:f}),children:[l.jsx(It,{children:l.jsx(Ft,{placeholder:"选择关联的聊天"})}),l.jsx(Bt,{children:n.map(f=>l.jsx(De,{value:f.chat_id,children:l.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[f.chat_name,f.is_group&&l.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},f.chat_id))})]})]})]}),l.jsxs(as,{children:[l.jsx(de,{variant:"outline",onClick:()=>e(!1),children:"取消"}),l.jsx(de,{onClick:h,disabled:a,children:a?"创建中...":"创建"})]})]})})}function Bwe({expression:t,open:e,onOpenChange:n,chatList:r,onSuccess:s}){const[i,a]=b.useState({}),[o,c]=b.useState(!1),{toast:h}=ts();b.useEffect(()=>{t&&a({situation:t.situation,style:t.style,chat_id:t.chat_id})},[t]);const f=async()=>{if(t)try{c(!0),await Awe(t.id,i),h({title:"保存成功",description:"表达方式已更新"}),s()}catch(m){h({title:"保存失败",description:m instanceof Error?m.message:"无法更新表达方式",variant:"destructive"})}finally{c(!1)}};return t?l.jsx(xr,{open:e,onOpenChange:n,children:l.jsxs(lr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[l.jsxs(or,{children:[l.jsx(cr,{children:"编辑表达方式"}),l.jsx(Hr,{children:"修改表达方式的信息"})]}),l.jsxs("div",{className:"space-y-4",children:[l.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{htmlFor:"edit_situation",children:"情境"}),l.jsx(Pe,{id:"edit_situation",value:i.situation||"",onChange:m=>a({...i,situation:m.target.value}),placeholder:"描述使用场景"})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{htmlFor:"edit_style",children:"风格"}),l.jsx(Pe,{id:"edit_style",value:i.style||"",onChange:m=>a({...i,style:m.target.value}),placeholder:"描述表达风格"})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{htmlFor:"edit_chat_id",children:"聊天"}),l.jsxs(qt,{value:i.chat_id||"",onValueChange:m=>a({...i,chat_id:m}),children:[l.jsx(It,{children:l.jsx(Ft,{placeholder:"选择关联的聊天"})}),l.jsx(Bt,{children:r.map(m=>l.jsx(De,{value:m.chat_id,children:l.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[m.chat_name,m.is_group&&l.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},m.chat_id))})]})]})]}),l.jsxs(as,{children:[l.jsx(de,{variant:"outline",onClick:()=>n(!1),children:"取消"}),l.jsx(de,{onClick:f,disabled:o,children:o?"保存中...":"保存"})]})]})}):null}function qwe({open:t,onOpenChange:e,onConfirm:n,count:r}){return l.jsx(Nn,{open:t,onOpenChange:e,children:l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认批量删除"}),l.jsxs(bn,{children:["您即将删除 ",r," 个表达方式,此操作无法撤销。确定要继续吗?"]})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:n,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认删除"})]})]})})}const tf="/api/webui/person";async function Fwe(t){const e=new URLSearchParams;t.page&&e.append("page",t.page.toString()),t.page_size&&e.append("page_size",t.page_size.toString()),t.search&&e.append("search",t.search),t.is_known!==void 0&&e.append("is_known",t.is_known.toString()),t.platform&&e.append("platform",t.platform);const n=await pt(`${tf}/list?${e}`,{headers:Ct()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取人物列表失败")}return n.json()}async function $we(t){const e=await pt(`${tf}/${t}`,{headers:Ct()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"获取人物详情失败")}return e.json()}async function Qwe(t,e){const n=await pt(`${tf}/${t}`,{method:"PATCH",headers:Ct(),body:JSON.stringify(e)});if(!n.ok){const r=await n.json();throw new Error(r.detail||"更新人物信息失败")}return n.json()}async function Hwe(t){const e=await pt(`${tf}/${t}`,{method:"DELETE",headers:Ct()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"删除人物信息失败")}return e.json()}async function Vwe(){const t=await pt(`${tf}/stats/summary`,{headers:Ct()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取统计数据失败")}return t.json()}async function Uwe(t){const e=await pt(`${tf}/batch/delete`,{method:"POST",headers:Ct(),body:JSON.stringify({person_ids:t})});if(!e.ok){const n=await e.json();throw new Error(n.detail||"批量删除失败")}return e.json()}function Wwe(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[s,i]=b.useState(0),[a,o]=b.useState(1),[c,h]=b.useState(20),[f,m]=b.useState(""),[g,x]=b.useState(void 0),[y,w]=b.useState(void 0),[S,k]=b.useState(null),[N,C]=b.useState(!1),[T,_]=b.useState(!1),[E,M]=b.useState(null),[L,P]=b.useState({total:0,known:0,unknown:0,platforms:{}}),[I,Q]=b.useState(new Set),[U,ee]=b.useState(!1),[z,H]=b.useState(""),{toast:B}=ts(),X=async()=>{try{r(!0);const re=await Fwe({page:a,page_size:c,search:f||void 0,is_known:g,platform:y});e(re.data),i(re.total)}catch(re){B({title:"加载失败",description:re instanceof Error?re.message:"无法加载人物信息",variant:"destructive"})}finally{r(!1)}},J=async()=>{try{const re=await Vwe();re?.data&&P(re.data)}catch(re){console.error("加载统计数据失败:",re)}};b.useEffect(()=>{X(),J()},[a,c,f,g,y]);const G=async re=>{try{const ae=await $we(re.person_id);k(ae.data),C(!0)}catch(ae){B({title:"加载详情失败",description:ae instanceof Error?ae.message:"无法加载人物详情",variant:"destructive"})}},R=re=>{k(re),_(!0)},se=async re=>{try{await Hwe(re.person_id),B({title:"删除成功",description:`已删除人物信息: ${re.person_name||re.nickname||re.user_id}`}),M(null),X(),J()}catch(ae){B({title:"删除失败",description:ae instanceof Error?ae.message:"无法删除人物信息",variant:"destructive"})}},W=b.useMemo(()=>Object.keys(L.platforms),[L.platforms]),F=re=>{const ae=new Set(I);ae.has(re)?ae.delete(re):ae.add(re),Q(ae)},V=()=>{I.size===t.length&&t.length>0?Q(new Set):Q(new Set(t.map(re=>re.person_id)))},te=()=>{if(I.size===0){B({title:"未选择任何人物",description:"请先选择要删除的人物",variant:"destructive"});return}ee(!0)},ne=async()=>{try{const re=await Uwe(Array.from(I));B({title:"批量删除完成",description:re.message}),Q(new Set),ee(!1),X(),J()}catch(re){B({title:"批量删除失败",description:re instanceof Error?re.message:"批量删除失败",variant:"destructive"})}},K=()=>{const re=parseInt(z),ae=Math.ceil(s/c);re>=1&&re<=ae?(o(re),H("")):B({title:"无效的页码",description:`请输入1-${ae}之间的页码`,variant:"destructive"})},ie=re=>re?new Date(re*1e3).toLocaleString("zh-CN"):"-";return l.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[l.jsx("div",{className:"mb-4 sm:mb-6",children:l.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:l.jsxs("div",{children:[l.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[l.jsx(VK,{className:"h-8 w-8",strokeWidth:2}),"人物信息管理"]}),l.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦认识的所有人物信息"})]})})}),l.jsx(hn,{className:"flex-1",children:l.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[l.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[l.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[l.jsx("div",{className:"text-sm text-muted-foreground",children:"总人数"}),l.jsx("div",{className:"text-2xl font-bold mt-1",children:L.total})]}),l.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[l.jsx("div",{className:"text-sm text-muted-foreground",children:"已认识"}),l.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:L.known})]}),l.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[l.jsx("div",{className:"text-sm text-muted-foreground",children:"未认识"}),l.jsx("div",{className:"text-2xl font-bold mt-1 text-muted-foreground",children:L.unknown})]})]}),l.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[l.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-4 gap-4",children:[l.jsxs("div",{className:"sm:col-span-2",children:[l.jsx(ue,{htmlFor:"search",children:"搜索"}),l.jsxs("div",{className:"relative mt-1.5",children:[l.jsx(ci,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),l.jsx(Pe,{id:"search",placeholder:"搜索名称、昵称或用户ID...",value:f,onChange:re=>m(re.target.value),className:"pl-9"})]})]}),l.jsxs("div",{children:[l.jsx(ue,{htmlFor:"filter-known",children:"认识状态"}),l.jsxs(qt,{value:g===void 0?"all":g.toString(),onValueChange:re=>{x(re==="all"?void 0:re==="true"),o(1)},children:[l.jsx(It,{id:"filter-known",className:"mt-1.5",children:l.jsx(Ft,{})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"all",children:"全部"}),l.jsx(De,{value:"true",children:"已认识"}),l.jsx(De,{value:"false",children:"未认识"})]})]})]}),l.jsxs("div",{children:[l.jsx(ue,{htmlFor:"filter-platform",children:"平台"}),l.jsxs(qt,{value:y||"all",onValueChange:re=>{w(re==="all"?void 0:re),o(1)},children:[l.jsx(It,{id:"filter-platform",className:"mt-1.5",children:l.jsx(Ft,{})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"all",children:"全部平台"}),W.map(re=>l.jsxs(De,{value:re,children:[re," (",L.platforms[re],")"]},re))]})]})]})]}),l.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[l.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:I.size>0&&l.jsxs("span",{children:["已选择 ",I.size," 个人物"]})}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx(ue,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),l.jsxs(qt,{value:c.toString(),onValueChange:re=>{h(parseInt(re)),o(1),Q(new Set)},children:[l.jsx(It,{id:"page-size",className:"w-20",children:l.jsx(Ft,{})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"10",children:"10"}),l.jsx(De,{value:"20",children:"20"}),l.jsx(De,{value:"50",children:"50"}),l.jsx(De,{value:"100",children:"100"})]})]}),I.size>0&&l.jsxs(l.Fragment,{children:[l.jsx(de,{variant:"outline",size:"sm",onClick:()=>Q(new Set),children:"取消选择"}),l.jsxs(de,{variant:"destructive",size:"sm",onClick:te,children:[l.jsx(fn,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),l.jsxs("div",{className:"rounded-lg border bg-card",children:[l.jsx("div",{className:"hidden md:block",children:l.jsxs(Vh,{children:[l.jsx(Uh,{children:l.jsxs(bs,{children:[l.jsx(ln,{className:"w-12",children:l.jsx(li,{checked:t.length>0&&I.size===t.length,onCheckedChange:V,"aria-label":"全选"})}),l.jsx(ln,{children:"状态"}),l.jsx(ln,{children:"名称"}),l.jsx(ln,{children:"昵称"}),l.jsx(ln,{children:"平台"}),l.jsx(ln,{children:"用户ID"}),l.jsx(ln,{children:"最后更新"}),l.jsx(ln,{className:"text-right",children:"操作"})]})}),l.jsx(Wh,{children:n?l.jsx(bs,{children:l.jsx(Qt,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):t.length===0?l.jsx(bs,{children:l.jsx(Qt,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):t.map(re=>l.jsxs(bs,{children:[l.jsx(Qt,{children:l.jsx(li,{checked:I.has(re.person_id),onCheckedChange:()=>F(re.person_id),"aria-label":`选择 ${re.person_name||re.nickname||re.user_id}`})}),l.jsx(Qt,{children:l.jsx("div",{className:ve("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium",re.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:re.is_known?"已认识":"未认识"})}),l.jsx(Qt,{className:"font-medium",children:re.person_name||l.jsx("span",{className:"text-muted-foreground",children:"-"})}),l.jsx(Qt,{children:re.nickname||"-"}),l.jsx(Qt,{children:re.platform}),l.jsx(Qt,{className:"font-mono text-sm",children:re.user_id}),l.jsx(Qt,{className:"text-sm text-muted-foreground",children:ie(re.last_know)}),l.jsx(Qt,{className:"text-right",children:l.jsxs("div",{className:"flex justify-end gap-2",children:[l.jsxs(de,{variant:"default",size:"sm",onClick:()=>G(re),children:[l.jsx(oa,{className:"h-4 w-4 mr-1"}),"详情"]}),l.jsxs(de,{variant:"default",size:"sm",onClick:()=>R(re),children:[l.jsx(Qm,{className:"h-4 w-4 mr-1"}),"编辑"]}),l.jsxs(de,{size:"sm",onClick:()=>M(re),className:"bg-red-600 hover:bg-red-700 text-white",children:[l.jsx(fn,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},re.id))})]})}),l.jsx("div",{className:"md:hidden space-y-3 p-4",children:n?l.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):t.length===0?l.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):t.map(re=>l.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[l.jsxs("div",{className:"flex items-start gap-3",children:[l.jsx(li,{checked:I.has(re.person_id),onCheckedChange:()=>F(re.person_id),className:"mt-1"}),l.jsxs("div",{className:"flex-1 min-w-0",children:[l.jsx("div",{className:ve("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium mb-2",re.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:re.is_known?"已认识":"未认识"}),l.jsx("h3",{className:"font-semibold text-sm line-clamp-1 w-full break-all",children:re.person_name||l.jsx("span",{className:"text-muted-foreground",children:"未命名"})}),re.nickname&&l.jsxs("p",{className:"text-xs text-muted-foreground mt-1 line-clamp-1 w-full break-all",children:["昵称: ",re.nickname]})]})]}),l.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[l.jsxs("div",{children:[l.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"平台"}),l.jsx("p",{className:"font-medium text-xs",children:re.platform})]}),l.jsxs("div",{children:[l.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"用户ID"}),l.jsx("p",{className:"font-mono text-xs truncate",title:re.user_id,children:re.user_id})]}),l.jsxs("div",{className:"col-span-2",children:[l.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"最后更新"}),l.jsx("p",{className:"text-xs",children:ie(re.last_know)})]})]}),l.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[l.jsxs(de,{variant:"outline",size:"sm",onClick:()=>G(re),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[l.jsx(oa,{className:"h-3 w-3 mr-1"}),"查看"]}),l.jsxs(de,{variant:"outline",size:"sm",onClick:()=>R(re),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[l.jsx(Qm,{className:"h-3 w-3 mr-1"}),"编辑"]}),l.jsxs(de,{variant:"outline",size:"sm",onClick:()=>M(re),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[l.jsx(fn,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},re.id))}),s>0&&l.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[l.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",s," 条记录,第 ",a," / ",Math.ceil(s/c)," 页"]}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx(de,{variant:"outline",size:"sm",onClick:()=>o(1),disabled:a===1,className:"hidden sm:flex",children:l.jsx(L0,{className:"h-4 w-4"})}),l.jsxs(de,{variant:"outline",size:"sm",onClick:()=>o(a-1),disabled:a===1,children:[l.jsx($u,{className:"h-4 w-4 sm:mr-1"}),l.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx(Pe,{type:"number",value:z,onChange:re=>H(re.target.value),onKeyDown:re=>re.key==="Enter"&&K(),placeholder:a.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(s/c)}),l.jsx(de,{variant:"outline",size:"sm",onClick:K,disabled:!z,className:"h-8",children:"跳转"})]}),l.jsxs(de,{variant:"outline",size:"sm",onClick:()=>o(a+1),disabled:a>=Math.ceil(s/c),children:[l.jsx("span",{className:"hidden sm:inline",children:"下一页"}),l.jsx(Qu,{className:"h-4 w-4 sm:ml-1"})]}),l.jsx(de,{variant:"outline",size:"sm",onClick:()=>o(Math.ceil(s/c)),disabled:a>=Math.ceil(s/c),className:"hidden sm:flex",children:l.jsx(I0,{className:"h-4 w-4"})})]})]})]})]})}),l.jsx(Gwe,{person:S,open:N,onOpenChange:C}),l.jsx(Xwe,{person:S,open:T,onOpenChange:_,onSuccess:()=>{X(),J(),_(!1)}}),l.jsx(Nn,{open:!!E,onOpenChange:()=>M(null),children:l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认删除"}),l.jsxs(bn,{children:['确定要删除人物信息 "',E?.person_name||E?.nickname||E?.user_id,'" 吗? 此操作不可撤销。']})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:()=>E&&se(E),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),l.jsx(Nn,{open:U,onOpenChange:ee,children:l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"确认批量删除"}),l.jsxs(bn,{children:["确定要删除选中的 ",I.size," 个人物信息吗? 此操作不可撤销。"]})]}),l.jsxs(vn,{children:[l.jsx(Sn,{children:"取消"}),l.jsx(wn,{onClick:ne,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})})]})}function Gwe({person:t,open:e,onOpenChange:n}){if(!t)return null;const r=s=>s?new Date(s*1e3).toLocaleString("zh-CN"):"-";return l.jsx(xr,{open:e,onOpenChange:n,children:l.jsxs(lr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[l.jsxs(or,{children:[l.jsx(cr,{children:"人物详情"}),l.jsxs(Hr,{children:["查看 ",t.person_name||t.nickname||t.user_id," 的完整信息"]})]}),l.jsxs("div",{className:"space-y-4",children:[l.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[l.jsx(Gl,{icon:az,label:"人物名称",value:t.person_name}),l.jsx(Gl,{icon:z0,label:"昵称",value:t.nickname}),l.jsx(Gl,{icon:L3,label:"用户ID",value:t.user_id,mono:!0}),l.jsx(Gl,{icon:L3,label:"人物ID",value:t.person_id,mono:!0}),l.jsx(Gl,{label:"平台",value:t.platform}),l.jsx(Gl,{label:"状态",value:t.is_known?"已认识":"未认识"})]}),t.name_reason&&l.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[l.jsx(ue,{className:"text-xs text-muted-foreground",children:"名称设定原因"}),l.jsx("p",{className:"mt-1 text-sm",children:t.name_reason})]}),t.memory_points&&l.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[l.jsx(ue,{className:"text-xs text-muted-foreground",children:"个人印象"}),l.jsx("p",{className:"mt-1 text-sm whitespace-pre-wrap",children:t.memory_points})]}),t.group_nick_name&&t.group_nick_name.length>0&&l.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[l.jsx(ue,{className:"text-xs text-muted-foreground",children:"群昵称"}),l.jsx("div",{className:"mt-2 space-y-1",children:t.group_nick_name.map((s,i)=>l.jsxs("div",{className:"text-sm flex items-center gap-2",children:[l.jsx("span",{className:"font-mono text-xs text-muted-foreground",children:s.group_id}),l.jsx("span",{children:"→"}),l.jsx("span",{children:s.group_nick_name})]},i))})]}),l.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[l.jsx(Gl,{icon:Zd,label:"认识时间",value:r(t.know_times)}),l.jsx(Gl,{icon:Zd,label:"首次记录",value:r(t.know_since)}),l.jsx(Gl,{icon:Zd,label:"最后更新",value:r(t.last_know)})]})]}),l.jsx(as,{children:l.jsx(de,{onClick:()=>n(!1),children:"关闭"})})]})})}function Gl({icon:t,label:e,value:n,mono:r=!1}){return l.jsxs("div",{className:"space-y-1",children:[l.jsxs(ue,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[t&&l.jsx(t,{className:"h-3 w-3"}),e]}),l.jsx("div",{className:ve("text-sm",r&&"font-mono",!n&&"text-muted-foreground"),children:n||"-"})]})}function Xwe({person:t,open:e,onOpenChange:n,onSuccess:r}){const[s,i]=b.useState({}),[a,o]=b.useState(!1),{toast:c}=ts();b.useEffect(()=>{t&&i({person_name:t.person_name||"",name_reason:t.name_reason||"",nickname:t.nickname||"",memory_points:t.memory_points||"",is_known:t.is_known})},[t]);const h=async()=>{if(t)try{o(!0),await Qwe(t.person_id,s),c({title:"保存成功",description:"人物信息已更新"}),r()}catch(f){c({title:"保存失败",description:f instanceof Error?f.message:"无法更新人物信息",variant:"destructive"})}finally{o(!1)}};return t?l.jsx(xr,{open:e,onOpenChange:n,children:l.jsxs(lr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[l.jsxs(or,{children:[l.jsx(cr,{children:"编辑人物信息"}),l.jsxs(Hr,{children:["修改 ",t.person_name||t.nickname||t.user_id," 的信息"]})]}),l.jsxs("div",{className:"space-y-4",children:[l.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{htmlFor:"person_name",children:"人物名称"}),l.jsx(Pe,{id:"person_name",value:s.person_name||"",onChange:f=>i({...s,person_name:f.target.value}),placeholder:"为这个人设置一个名称"})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{htmlFor:"nickname",children:"昵称"}),l.jsx(Pe,{id:"nickname",value:s.nickname||"",onChange:f=>i({...s,nickname:f.target.value}),placeholder:"昵称"})]})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{htmlFor:"name_reason",children:"名称设定原因"}),l.jsx(pr,{id:"name_reason",value:s.name_reason||"",onChange:f=>i({...s,name_reason:f.target.value}),placeholder:"为什么这样称呼这个人?",rows:2})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{htmlFor:"memory_points",children:"个人印象"}),l.jsx(pr,{id:"memory_points",value:s.memory_points||"",onChange:f=>i({...s,memory_points:f.target.value}),placeholder:"对这个人的印象和记忆点...",rows:4})]}),l.jsxs("div",{className:"flex items-center justify-between rounded-lg border p-3",children:[l.jsxs("div",{children:[l.jsx(ue,{htmlFor:"is_known",className:"text-base font-medium",children:"已认识"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"标记是否已经认识这个人"})]}),l.jsx(Pt,{id:"is_known",checked:s.is_known,onCheckedChange:f=>i({...s,is_known:f})})]})]}),l.jsxs(as,{children:[l.jsx(de,{variant:"outline",onClick:()=>n(!1),children:"取消"}),l.jsx(de,{onClick:h,disabled:a,children:a?"保存中...":"保存"})]})]})}):null}function Ss(t){if(typeof t=="string"||typeof t=="number")return""+t;let e="";if(Array.isArray(t))for(let n=0,r;n{let e;const n=new Set,r=(f,m)=>{const g=typeof f=="function"?f(e):f;if(!Object.is(g,e)){const x=e;e=m??(typeof g!="object"||g===null)?g:Object.assign({},e,g),n.forEach(y=>y(e,x))}},s=()=>e,c={setState:r,getState:s,getInitialState:()=>h,subscribe:f=>(n.add(f),()=>n.delete(f)),destroy:()=>{(Ywe?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},h=e=t(r,s,c);return c},Kwe=t=>t?BM(t):BM,{useDebugValue:Zwe}=he,{useSyncExternalStoreWithSelector:Jwe}=lY,e4e=t=>t;function ZQ(t,e=e4e,n){const r=Jwe(t.subscribe,t.getState,t.getServerState||t.getInitialState,e,n);return Zwe(r),r}const qM=(t,e)=>{const n=Kwe(t),r=(s,i=e)=>ZQ(n,s,i);return Object.assign(r,n),r},t4e=(t,e)=>t?qM(t,e):qM;function os(t,e){if(Object.is(t,e))return!0;if(typeof t!="object"||t===null||typeof e!="object"||e===null)return!1;if(t instanceof Map&&e instanceof Map){if(t.size!==e.size)return!1;for(const[r,s]of t)if(!Object.is(s,e.get(r)))return!1;return!0}if(t instanceof Set&&e instanceof Set){if(t.size!==e.size)return!1;for(const r of t)if(!e.has(r))return!1;return!0}const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!1;for(const r of n)if(!Object.prototype.hasOwnProperty.call(e,r)||!Object.is(t[r],e[r]))return!1;return!0}var n4e={value:()=>{}};function Ay(){for(var t=0,e=arguments.length,n={},r;t=0&&(r=n.slice(s+1),n=n.slice(0,s)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}b1.prototype=Ay.prototype={constructor:b1,on:function(t,e){var n=this._,r=r4e(t+"",n),s,i=-1,a=r.length;if(arguments.length<2){for(;++i0)for(var n=new Array(s),r=0,s,i;r=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),$M.hasOwnProperty(e)?{space:$M[e],local:t}:t}function i4e(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===wk&&e.documentElement.namespaceURI===wk?e.createElement(t):e.createElementNS(n,t)}}function a4e(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function JQ(t){var e=Ry(t);return(e.local?a4e:i4e)(e)}function l4e(){}function dO(t){return t==null?l4e:function(){return this.querySelector(t)}}function o4e(t){typeof t!="function"&&(t=dO(t));for(var e=this._groups,n=e.length,r=new Array(n),s=0;s=C&&(C=N+1);!(_=S[C])&&++C=0;)(a=r[s])&&(i&&a.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(a,i),i=a);return this}function R4e(t){t||(t=D4e);function e(m,g){return m&&g?t(m.__data__,g.__data__):!m-!g}for(var n=this._groups,r=n.length,s=new Array(r),i=0;ie?1:t>=e?0:NaN}function z4e(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function P4e(){return Array.from(this)}function L4e(){for(var t=this._groups,e=0,n=t.length;e1?this.each((e==null?G4e:typeof e=="function"?Y4e:X4e)(t,e,n??"")):Eh(this.node(),t)}function Eh(t,e){return t.style.getPropertyValue(e)||sH(t).getComputedStyle(t,null).getPropertyValue(e)}function Z4e(t){return function(){delete this[t]}}function J4e(t,e){return function(){this[t]=e}}function e5e(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}function t5e(t,e){return arguments.length>1?this.each((e==null?Z4e:typeof e=="function"?e5e:J4e)(t,e)):this.node()[t]}function iH(t){return t.trim().split(/^|\s+/)}function hO(t){return t.classList||new aH(t)}function aH(t){this._node=t,this._names=iH(t.getAttribute("class")||"")}aH.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function lH(t,e){for(var n=hO(t),r=-1,s=e.length;++r=0&&(n=e.slice(r+1),e=e.slice(0,r)),{type:e,name:n}})}function E5e(t){return function(){var e=this.__on;if(e){for(var n=0,r=-1,s=e.length,i;n()=>t;function Sk(t,{sourceEvent:e,subject:n,target:r,identifier:s,active:i,x:a,y:o,dx:c,dy:h,dispatch:f}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:s,enumerable:!0,configurable:!0},active:{value:i,enumerable:!0,configurable:!0},x:{value:a,enumerable:!0,configurable:!0},y:{value:o,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:h,enumerable:!0,configurable:!0},_:{value:f}})}Sk.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};function B5e(t){return!t.ctrlKey&&!t.button}function q5e(){return this.parentNode}function F5e(t,e){return e??{x:t.x,y:t.y}}function $5e(){return navigator.maxTouchPoints||"ontouchstart"in this}function Q5e(){var t=B5e,e=q5e,n=F5e,r=$5e,s={},i=Ay("start","drag","end"),a=0,o,c,h,f,m=0;function g(T){T.on("mousedown.drag",x).filter(r).on("touchstart.drag",S).on("touchmove.drag",k,I5e).on("touchend.drag touchcancel.drag",N).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function x(T,_){if(!(f||!t.call(this,T,_))){var E=C(this,e.call(this,T,_),T,_,"mouse");E&&(Ki(T.view).on("mousemove.drag",y,j0).on("mouseup.drag",w,j0),dH(T.view),B4(T),h=!1,o=T.clientX,c=T.clientY,E("start",T))}}function y(T){if(dh(T),!h){var _=T.clientX-o,E=T.clientY-c;h=_*_+E*E>m}s.mouse("drag",T)}function w(T){Ki(T.view).on("mousemove.drag mouseup.drag",null),hH(T.view,h),dh(T),s.mouse("end",T)}function S(T,_){if(t.call(this,T,_)){var E=T.changedTouches,M=e.call(this,T,_),L=E.length,P,I;for(P=0;P=0&&t._call.call(void 0,e),t=t._next;--_h}function QM(){Bu=(xv=O0.now())+Dy,_h=bm=0;try{V5e()}finally{_h=0,W5e(),Bu=0}}function U5e(){var t=O0.now(),e=t-xv;e>fH&&(Dy-=e,xv=t)}function W5e(){for(var t,e=gv,n,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:gv=n);wm=t,kk(r)}function kk(t){if(!_h){bm&&(bm=clearTimeout(bm));var e=t-Bu;e>24?(t<1/0&&(bm=setTimeout(QM,t-O0.now()-Dy)),cm&&(cm=clearInterval(cm))):(cm||(xv=O0.now(),cm=setInterval(U5e,fH)),_h=1,mH(QM))}}function HM(t,e,n){var r=new vv;return e=e==null?0:+e,r.restart(s=>{r.stop(),t(s+e)},e,n),r}var G5e=Ay("start","end","cancel","interrupt"),X5e=[],gH=0,VM=1,jk=2,w1=3,UM=4,Ok=5,S1=6;function zy(t,e,n,r,s,i){var a=t.__transition;if(!a)t.__transition={};else if(n in a)return;Y5e(t,n,{name:e,index:r,group:s,on:G5e,tween:X5e,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:gH})}function mO(t,e){var n=Ia(t,e);if(n.state>gH)throw new Error("too late; already scheduled");return n}function Sl(t,e){var n=Ia(t,e);if(n.state>w1)throw new Error("too late; already running");return n}function Ia(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function Y5e(t,e,n){var r=t.__transition,s;r[e]=n,n.timer=pH(i,0,n.time);function i(h){n.state=VM,n.timer.restart(a,n.delay,n.time),n.delay<=h&&a(h-n.delay)}function a(h){var f,m,g,x;if(n.state!==VM)return c();for(f in r)if(x=r[f],x.name===n.name){if(x.state===w1)return HM(a);x.state===UM?(x.state=S1,x.timer.stop(),x.on.call("interrupt",t,t.__data__,x.index,x.group),delete r[f]):+fjk&&r.state=0&&(e=e.slice(0,n)),!e||e==="start"})}function N3e(t,e,n){var r,s,i=O3e(e)?mO:Sl;return function(){var a=i(this,t),o=a.on;o!==r&&(s=(r=o).copy()).on(e,n),a.on=s}}function C3e(t,e){var n=this._id;return arguments.length<2?Ia(this.node(),n).on.on(t):this.each(N3e(n,t,e))}function T3e(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}function E3e(){return this.on("end.remove",T3e(this._id))}function _3e(t){var e=this._name,n=this._id;typeof t!="function"&&(t=dO(t));for(var r=this._groups,s=r.length,i=new Array(s),a=0;a()=>t;function tSe(t,{sourceEvent:e,target:n,transform:r,dispatch:s}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:s}})}function so(t,e,n){this.k=t,this.x=e,this.y=n}so.prototype={constructor:so,scale:function(t){return t===1?this:new so(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new so(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var ho=new so(1,0,0);so.prototype;function q4(t){t.stopImmediatePropagation()}function um(t){t.preventDefault(),t.stopImmediatePropagation()}function nSe(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function rSe(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]):[[0,0],[t.clientWidth,t.clientHeight]]}function WM(){return this.__zoom||ho}function sSe(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function iSe(){return navigator.maxTouchPoints||"ontouchstart"in this}function aSe(t,e,n){var r=t.invertX(e[0][0])-n[0][0],s=t.invertX(e[1][0])-n[1][0],i=t.invertY(e[0][1])-n[0][1],a=t.invertY(e[1][1])-n[1][1];return t.translate(s>r?(r+s)/2:Math.min(0,r)||Math.max(0,s),a>i?(i+a)/2:Math.min(0,i)||Math.max(0,a))}function bH(){var t=nSe,e=rSe,n=aSe,r=sSe,s=iSe,i=[0,1/0],a=[[-1/0,-1/0],[1/0,1/0]],o=250,c=_Y,h=Ay("start","zoom","end"),f,m,g,x=500,y=150,w=0,S=10;function k(z){z.property("__zoom",WM).on("wheel.zoom",L,{passive:!1}).on("mousedown.zoom",P).on("dblclick.zoom",I).filter(s).on("touchstart.zoom",Q).on("touchmove.zoom",U).on("touchend.zoom touchcancel.zoom",ee).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}k.transform=function(z,H,B,X){var J=z.selection?z.selection():z;J.property("__zoom",WM),z!==J?_(z,H,B,X):J.interrupt().each(function(){E(this,arguments).event(X).start().zoom(null,typeof H=="function"?H.apply(this,arguments):H).end()})},k.scaleBy=function(z,H,B,X){k.scaleTo(z,function(){var J=this.__zoom.k,G=typeof H=="function"?H.apply(this,arguments):H;return J*G},B,X)},k.scaleTo=function(z,H,B,X){k.transform(z,function(){var J=e.apply(this,arguments),G=this.__zoom,R=B==null?T(J):typeof B=="function"?B.apply(this,arguments):B,se=G.invert(R),W=typeof H=="function"?H.apply(this,arguments):H;return n(C(N(G,W),R,se),J,a)},B,X)},k.translateBy=function(z,H,B,X){k.transform(z,function(){return n(this.__zoom.translate(typeof H=="function"?H.apply(this,arguments):H,typeof B=="function"?B.apply(this,arguments):B),e.apply(this,arguments),a)},null,X)},k.translateTo=function(z,H,B,X,J){k.transform(z,function(){var G=e.apply(this,arguments),R=this.__zoom,se=X==null?T(G):typeof X=="function"?X.apply(this,arguments):X;return n(ho.translate(se[0],se[1]).scale(R.k).translate(typeof H=="function"?-H.apply(this,arguments):-H,typeof B=="function"?-B.apply(this,arguments):-B),G,a)},X,J)};function N(z,H){return H=Math.max(i[0],Math.min(i[1],H)),H===z.k?z:new so(H,z.x,z.y)}function C(z,H,B){var X=H[0]-B[0]*z.k,J=H[1]-B[1]*z.k;return X===z.x&&J===z.y?z:new so(z.k,X,J)}function T(z){return[(+z[0][0]+ +z[1][0])/2,(+z[0][1]+ +z[1][1])/2]}function _(z,H,B,X){z.on("start.zoom",function(){E(this,arguments).event(X).start()}).on("interrupt.zoom end.zoom",function(){E(this,arguments).event(X).end()}).tween("zoom",function(){var J=this,G=arguments,R=E(J,G).event(X),se=e.apply(J,G),W=B==null?T(se):typeof B=="function"?B.apply(J,G):B,F=Math.max(se[1][0]-se[0][0],se[1][1]-se[0][1]),V=J.__zoom,te=typeof H=="function"?H.apply(J,G):H,ne=c(V.invert(W).concat(F/V.k),te.invert(W).concat(F/te.k));return function(K){if(K===1)K=te;else{var ie=ne(K),re=F/ie[2];K=new so(re,W[0]-ie[0]*re,W[1]-ie[1]*re)}R.zoom(null,K)}})}function E(z,H,B){return!B&&z.__zooming||new M(z,H)}function M(z,H){this.that=z,this.args=H,this.active=0,this.sourceEvent=null,this.extent=e.apply(z,H),this.taps=0}M.prototype={event:function(z){return z&&(this.sourceEvent=z),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(z,H){return this.mouse&&z!=="mouse"&&(this.mouse[1]=H.invert(this.mouse[0])),this.touch0&&z!=="touch"&&(this.touch0[1]=H.invert(this.touch0[0])),this.touch1&&z!=="touch"&&(this.touch1[1]=H.invert(this.touch1[0])),this.that.__zoom=H,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(z){var H=Ki(this.that).datum();h.call(z,this.that,new tSe(z,{sourceEvent:this.sourceEvent,target:k,transform:this.that.__zoom,dispatch:h}),H)}};function L(z,...H){if(!t.apply(this,arguments))return;var B=E(this,H).event(z),X=this.__zoom,J=Math.max(i[0],Math.min(i[1],X.k*Math.pow(2,r.apply(this,arguments)))),G=ka(z);if(B.wheel)(B.mouse[0][0]!==G[0]||B.mouse[0][1]!==G[1])&&(B.mouse[1]=X.invert(B.mouse[0]=G)),clearTimeout(B.wheel);else{if(X.k===J)return;B.mouse=[G,X.invert(G)],k1(this),B.start()}um(z),B.wheel=setTimeout(R,y),B.zoom("mouse",n(C(N(X,J),B.mouse[0],B.mouse[1]),B.extent,a));function R(){B.wheel=null,B.end()}}function P(z,...H){if(g||!t.apply(this,arguments))return;var B=z.currentTarget,X=E(this,H,!0).event(z),J=Ki(z.view).on("mousemove.zoom",W,!0).on("mouseup.zoom",F,!0),G=ka(z,B),R=z.clientX,se=z.clientY;dH(z.view),q4(z),X.mouse=[G,this.__zoom.invert(G)],k1(this),X.start();function W(V){if(um(V),!X.moved){var te=V.clientX-R,ne=V.clientY-se;X.moved=te*te+ne*ne>w}X.event(V).zoom("mouse",n(C(X.that.__zoom,X.mouse[0]=ka(V,B),X.mouse[1]),X.extent,a))}function F(V){J.on("mousemove.zoom mouseup.zoom",null),hH(V.view,X.moved),um(V),X.event(V).end()}}function I(z,...H){if(t.apply(this,arguments)){var B=this.__zoom,X=ka(z.changedTouches?z.changedTouches[0]:z,this),J=B.invert(X),G=B.k*(z.shiftKey?.5:2),R=n(C(N(B,G),X,J),e.apply(this,H),a);um(z),o>0?Ki(this).transition().duration(o).call(_,R,X,z):Ki(this).call(k.transform,R,X,z)}}function Q(z,...H){if(t.apply(this,arguments)){var B=z.touches,X=B.length,J=E(this,H,z.changedTouches.length===X).event(z),G,R,se,W;for(q4(z),R=0;R"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:t=>`Node type "${t}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:t=>`The old edge with id=${t} does not exist.`,error009:t=>`Marker type "${t}" doesn't exist.`,error008:(t,e)=>`Couldn't create edge for ${t?"target":"source"} handle id: "${t?e.targetHandle:e.sourceHandle}", edge id: ${e.id}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:t=>`Edge type "${t}" not found. Using fallback type "default".`,error012:t=>`Node with id "${t}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`},wH=bo.error001();function er(t,e){const n=b.useContext(Py);if(n===null)throw new Error(wH);return ZQ(n,t,e)}const ns=()=>{const t=b.useContext(Py);if(t===null)throw new Error(wH);return b.useMemo(()=>({getState:t.getState,setState:t.setState,subscribe:t.subscribe,destroy:t.destroy}),[t])},oSe=t=>t.userSelectionActive?"none":"all";function Ly({position:t,children:e,className:n,style:r,...s}){const i=er(oSe),a=`${t}`.split("-");return he.createElement("div",{className:Ss(["react-flow__panel",n,...a]),style:{...r,pointerEvents:i},...s},e)}function cSe({proOptions:t,position:e="bottom-right"}){return t?.hideAttribution?null:he.createElement(Ly,{position:e,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://reactflow.dev/pro"},he.createElement("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution"},"React Flow"))}const uSe=({x:t,y:e,label:n,labelStyle:r={},labelShowBg:s=!0,labelBgStyle:i={},labelBgPadding:a=[2,4],labelBgBorderRadius:o=2,children:c,className:h,...f})=>{const m=b.useRef(null),[g,x]=b.useState({x:0,y:0,width:0,height:0}),y=Ss(["react-flow__edge-textwrapper",h]);return b.useEffect(()=>{if(m.current){const w=m.current.getBBox();x({x:w.x,y:w.y,width:w.width,height:w.height})}},[n]),typeof n>"u"||!n?null:he.createElement("g",{transform:`translate(${t-g.width/2} ${e-g.height/2})`,className:y,visibility:g.width?"visible":"hidden",...f},s&&he.createElement("rect",{width:g.width+2*a[0],x:-a[0],y:-a[1],height:g.height+2*a[1],className:"react-flow__edge-textbg",style:i,rx:o,ry:o}),he.createElement("text",{className:"react-flow__edge-text",y:g.height/2,dy:"0.3em",ref:m,style:r},n),c)};var dSe=b.memo(uSe);const gO=t=>({width:t.offsetWidth,height:t.offsetHeight}),Mh=(t,e=0,n=1)=>Math.min(Math.max(t,e),n),xO=(t={x:0,y:0},e)=>({x:Mh(t.x,e[0][0],e[1][0]),y:Mh(t.y,e[0][1],e[1][1])}),GM=(t,e,n)=>tn?-Mh(Math.abs(t-n),1,50)/50:0,SH=(t,e)=>{const n=GM(t.x,35,e.width-35)*20,r=GM(t.y,35,e.height-35)*20;return[n,r]},kH=t=>t.getRootNode?.()||window?.document,jH=(t,e)=>({x:Math.min(t.x,e.x),y:Math.min(t.y,e.y),x2:Math.max(t.x2,e.x2),y2:Math.max(t.y2,e.y2)}),N0=({x:t,y:e,width:n,height:r})=>({x:t,y:e,x2:t+n,y2:e+r}),OH=({x:t,y:e,x2:n,y2:r})=>({x:t,y:e,width:n-t,height:r-e}),XM=t=>({...t.positionAbsolute||{x:0,y:0},width:t.width||0,height:t.height||0}),hSe=(t,e)=>OH(jH(N0(t),N0(e))),Nk=(t,e)=>{const n=Math.max(0,Math.min(t.x+t.width,e.x+e.width)-Math.max(t.x,e.x)),r=Math.max(0,Math.min(t.y+t.height,e.y+e.height)-Math.max(t.y,e.y));return Math.ceil(n*r)},fSe=t=>na(t.width)&&na(t.height)&&na(t.x)&&na(t.y),na=t=>!isNaN(t)&&isFinite(t),Sr=Symbol.for("internals"),NH=["Enter"," ","Escape"],mSe=(t,e)=>{},pSe=t=>"nativeEvent"in t;function Ck(t){const n=(pSe(t)?t.nativeEvent:t).composedPath?.()?.[0]||t.target;return["INPUT","SELECT","TEXTAREA"].includes(n?.nodeName)||n?.hasAttribute("contenteditable")||!!n?.closest(".nokey")}const CH=t=>"clientX"in t,pc=(t,e)=>{const n=CH(t),r=n?t.clientX:t.touches?.[0].clientX,s=n?t.clientY:t.touches?.[0].clientY;return{x:r-(e?.left??0),y:s-(e?.top??0)}},yv=()=>typeof navigator<"u"&&navigator?.userAgent?.indexOf("Mac")>=0,xp=({id:t,path:e,labelX:n,labelY:r,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:o,labelBgPadding:c,labelBgBorderRadius:h,style:f,markerEnd:m,markerStart:g,interactionWidth:x=20})=>he.createElement(he.Fragment,null,he.createElement("path",{id:t,style:f,d:e,fill:"none",className:"react-flow__edge-path",markerEnd:m,markerStart:g}),x&&he.createElement("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:x,className:"react-flow__edge-interaction"}),s&&na(n)&&na(r)?he.createElement(dSe,{x:n,y:r,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:o,labelBgPadding:c,labelBgBorderRadius:h}):null);xp.displayName="BaseEdge";function dm(t,e,n){return n===void 0?n:r=>{const s=e().edges.find(i=>i.id===t);s&&n(r,{...s})}}function TH({sourceX:t,sourceY:e,targetX:n,targetY:r}){const s=Math.abs(n-t)/2,i=n{const[S,k,N]=_H({sourceX:t,sourceY:e,sourcePosition:s,targetX:n,targetY:r,targetPosition:i});return he.createElement(xp,{path:S,labelX:k,labelY:N,label:a,labelStyle:o,labelShowBg:c,labelBgStyle:h,labelBgPadding:f,labelBgBorderRadius:m,style:g,markerEnd:x,markerStart:y,interactionWidth:w})});vO.displayName="SimpleBezierEdge";const KM={[mt.Left]:{x:-1,y:0},[mt.Right]:{x:1,y:0},[mt.Top]:{x:0,y:-1},[mt.Bottom]:{x:0,y:1}},gSe=({source:t,sourcePosition:e=mt.Bottom,target:n})=>e===mt.Left||e===mt.Right?t.xMath.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2));function xSe({source:t,sourcePosition:e=mt.Bottom,target:n,targetPosition:r=mt.Top,center:s,offset:i}){const a=KM[e],o=KM[r],c={x:t.x+a.x*i,y:t.y+a.y*i},h={x:n.x+o.x*i,y:n.y+o.y*i},f=gSe({source:c,sourcePosition:e,target:h}),m=f.x!==0?"x":"y",g=f[m];let x=[],y,w;const S={x:0,y:0},k={x:0,y:0},[N,C,T,_]=TH({sourceX:t.x,sourceY:t.y,targetX:n.x,targetY:n.y});if(a[m]*o[m]===-1){y=s.x??N,w=s.y??C;const M=[{x:y,y:c.y},{x:y,y:h.y}],L=[{x:c.x,y:w},{x:h.x,y:w}];a[m]===g?x=m==="x"?M:L:x=m==="x"?L:M}else{const M=[{x:c.x,y:h.y}],L=[{x:h.x,y:c.y}];if(m==="x"?x=a.x===g?L:M:x=a.y===g?M:L,e===r){const ee=Math.abs(t[m]-n[m]);if(ee<=i){const z=Math.min(i-1,i-ee);a[m]===g?S[m]=(c[m]>t[m]?-1:1)*z:k[m]=(h[m]>n[m]?-1:1)*z}}if(e!==r){const ee=m==="x"?"y":"x",z=a[m]===o[ee],H=c[ee]>h[ee],B=c[ee]=U?(y=(P.x+I.x)/2,w=x[0].y):(y=x[0].x,w=(P.y+I.y)/2)}return[[t,{x:c.x+S.x,y:c.y+S.y},...x,{x:h.x+k.x,y:h.y+k.y},n],y,w,T,_]}function vSe(t,e,n,r){const s=Math.min(ZM(t,e)/2,ZM(e,n)/2,r),{x:i,y:a}=e;if(t.x===i&&i===n.x||t.y===a&&a===n.y)return`L${i} ${a}`;if(t.y===a){const h=t.x{let C="";return N>0&&N{const[k,N,C]=Tk({sourceX:t,sourceY:e,sourcePosition:m,targetX:n,targetY:r,targetPosition:g,borderRadius:w?.borderRadius,offset:w?.offset});return he.createElement(xp,{path:k,labelX:N,labelY:C,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:o,labelBgPadding:c,labelBgBorderRadius:h,style:f,markerEnd:x,markerStart:y,interactionWidth:S})});Iy.displayName="SmoothStepEdge";const yO=b.memo(t=>he.createElement(Iy,{...t,pathOptions:b.useMemo(()=>({borderRadius:0,offset:t.pathOptions?.offset}),[t.pathOptions?.offset])}));yO.displayName="StepEdge";function ySe({sourceX:t,sourceY:e,targetX:n,targetY:r}){const[s,i,a,o]=TH({sourceX:t,sourceY:e,targetX:n,targetY:r});return[`M ${t},${e}L ${n},${r}`,s,i,a,o]}const bO=b.memo(({sourceX:t,sourceY:e,targetX:n,targetY:r,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:o,labelBgPadding:c,labelBgBorderRadius:h,style:f,markerEnd:m,markerStart:g,interactionWidth:x})=>{const[y,w,S]=ySe({sourceX:t,sourceY:e,targetX:n,targetY:r});return he.createElement(xp,{path:y,labelX:w,labelY:S,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:o,labelBgPadding:c,labelBgBorderRadius:h,style:f,markerEnd:m,markerStart:g,interactionWidth:x})});bO.displayName="StraightEdge";function qx(t,e){return t>=0?.5*t:e*25*Math.sqrt(-t)}function JM({pos:t,x1:e,y1:n,x2:r,y2:s,c:i}){switch(t){case mt.Left:return[e-qx(e-r,i),n];case mt.Right:return[e+qx(r-e,i),n];case mt.Top:return[e,n-qx(n-s,i)];case mt.Bottom:return[e,n+qx(s-n,i)]}}function MH({sourceX:t,sourceY:e,sourcePosition:n=mt.Bottom,targetX:r,targetY:s,targetPosition:i=mt.Top,curvature:a=.25}){const[o,c]=JM({pos:n,x1:t,y1:e,x2:r,y2:s,c:a}),[h,f]=JM({pos:i,x1:r,y1:s,x2:t,y2:e,c:a}),[m,g,x,y]=EH({sourceX:t,sourceY:e,targetX:r,targetY:s,sourceControlX:o,sourceControlY:c,targetControlX:h,targetControlY:f});return[`M${t},${e} C${o},${c} ${h},${f} ${r},${s}`,m,g,x,y]}const wv=b.memo(({sourceX:t,sourceY:e,targetX:n,targetY:r,sourcePosition:s=mt.Bottom,targetPosition:i=mt.Top,label:a,labelStyle:o,labelShowBg:c,labelBgStyle:h,labelBgPadding:f,labelBgBorderRadius:m,style:g,markerEnd:x,markerStart:y,pathOptions:w,interactionWidth:S})=>{const[k,N,C]=MH({sourceX:t,sourceY:e,sourcePosition:s,targetX:n,targetY:r,targetPosition:i,curvature:w?.curvature});return he.createElement(xp,{path:k,labelX:N,labelY:C,label:a,labelStyle:o,labelShowBg:c,labelBgStyle:h,labelBgPadding:f,labelBgBorderRadius:m,style:g,markerEnd:x,markerStart:y,interactionWidth:S})});wv.displayName="BezierEdge";const wO=b.createContext(null),bSe=wO.Provider;wO.Consumer;const wSe=()=>b.useContext(wO),SSe=t=>"id"in t&&"source"in t&&"target"in t,kSe=({source:t,sourceHandle:e,target:n,targetHandle:r})=>`reactflow__edge-${t}${e||""}-${n}${r||""}`,Ek=(t,e)=>typeof t>"u"?"":typeof t=="string"?t:`${e?`${e}__`:""}${Object.keys(t).sort().map(r=>`${r}=${t[r]}`).join("&")}`,jSe=(t,e)=>e.some(n=>n.source===t.source&&n.target===t.target&&(n.sourceHandle===t.sourceHandle||!n.sourceHandle&&!t.sourceHandle)&&(n.targetHandle===t.targetHandle||!n.targetHandle&&!t.targetHandle)),OSe=(t,e)=>{if(!t.source||!t.target)return e;let n;return SSe(t)?n={...t}:n={...t,id:kSe(t)},jSe(n,e)?e:e.concat(n)},_k=({x:t,y:e},[n,r,s],i,[a,o])=>{const c={x:(t-n)/s,y:(e-r)/s};return i?{x:a*Math.round(c.x/a),y:o*Math.round(c.y/o)}:c},AH=({x:t,y:e},[n,r,s])=>({x:t*s+n,y:e*s+r}),Nu=(t,e=[0,0])=>{if(!t)return{x:0,y:0,positionAbsolute:{x:0,y:0}};const n=(t.width??0)*e[0],r=(t.height??0)*e[1],s={x:t.position.x-n,y:t.position.y-r};return{...s,positionAbsolute:t.positionAbsolute?{x:t.positionAbsolute.x-n,y:t.positionAbsolute.y-r}:s}},By=(t,e=[0,0])=>{if(t.length===0)return{x:0,y:0,width:0,height:0};const n=t.reduce((r,s)=>{const{x:i,y:a}=Nu(s,e).positionAbsolute;return jH(r,N0({x:i,y:a,width:s.width||0,height:s.height||0}))},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return OH(n)},RH=(t,e,[n,r,s]=[0,0,1],i=!1,a=!1,o=[0,0])=>{const c={x:(e.x-n)/s,y:(e.y-r)/s,width:e.width/s,height:e.height/s},h=[];return t.forEach(f=>{const{width:m,height:g,selectable:x=!0,hidden:y=!1}=f;if(a&&!x||y)return!1;const{positionAbsolute:w}=Nu(f,o),S={x:w.x,y:w.y,width:m||0,height:g||0},k=Nk(c,S),N=typeof m>"u"||typeof g>"u"||m===null||g===null,C=i&&k>0,T=(m||0)*(g||0);(N||C||k>=T||f.dragging)&&h.push(f)}),h},DH=(t,e)=>{const n=t.map(r=>r.id);return e.filter(r=>n.includes(r.source)||n.includes(r.target))},zH=(t,e,n,r,s,i=.1)=>{const a=e/(t.width*(1+i)),o=n/(t.height*(1+i)),c=Math.min(a,o),h=Mh(c,r,s),f=t.x+t.width/2,m=t.y+t.height/2,g=e/2-f*h,x=n/2-m*h;return{x:g,y:x,zoom:h}},cu=(t,e=0)=>t.transition().duration(e);function eA(t,e,n,r){return(e[n]||[]).reduce((s,i)=>(`${t.id}-${i.id}-${n}`!==r&&s.push({id:i.id||null,type:n,nodeId:t.id,x:(t.positionAbsolute?.x??0)+i.x+i.width/2,y:(t.positionAbsolute?.y??0)+i.y+i.height/2}),s),[])}function NSe(t,e,n,r,s,i){const{x:a,y:o}=pc(t),h=e.elementsFromPoint(a,o).find(y=>y.classList.contains("react-flow__handle"));if(h){const y=h.getAttribute("data-nodeid");if(y){const w=SO(void 0,h),S=h.getAttribute("data-handleid"),k=i({nodeId:y,id:S,type:w});if(k){const N=s.find(C=>C.nodeId===y&&C.type===w&&C.id===S);return{handle:{id:S,type:w,nodeId:y,x:N?.x||n.x,y:N?.y||n.y},validHandleResult:k}}}}let f=[],m=1/0;if(s.forEach(y=>{const w=Math.sqrt((y.x-n.x)**2+(y.y-n.y)**2);if(w<=r){const S=i(y);w<=m&&(wy.isValid),x=f.some(({handle:y})=>y.type==="target");return f.find(({handle:y,validHandleResult:w})=>x?y.type==="target":g?w.isValid:!0)||f[0]}const CSe={source:null,target:null,sourceHandle:null,targetHandle:null},PH=()=>({handleDomNode:null,isValid:!1,connection:CSe,endHandle:null});function LH(t,e,n,r,s,i,a){const o=s==="target",c=a.querySelector(`.react-flow__handle[data-id="${t?.nodeId}-${t?.id}-${t?.type}"]`),h={...PH(),handleDomNode:c};if(c){const f=SO(void 0,c),m=c.getAttribute("data-nodeid"),g=c.getAttribute("data-handleid"),x=c.classList.contains("connectable"),y=c.classList.contains("connectableend"),w={source:o?m:n,sourceHandle:o?g:r,target:o?n:m,targetHandle:o?r:g};h.connection=w,x&&y&&(e===qu.Strict?o&&f==="source"||!o&&f==="target":m!==n||g!==r)&&(h.endHandle={nodeId:m,handleId:g,type:f},h.isValid=i(w))}return h}function TSe({nodes:t,nodeId:e,handleId:n,handleType:r}){return t.reduce((s,i)=>{if(i[Sr]){const{handleBounds:a}=i[Sr];let o=[],c=[];a&&(o=eA(i,a,"source",`${e}-${n}-${r}`),c=eA(i,a,"target",`${e}-${n}-${r}`)),s.push(...o,...c)}return s},[])}function SO(t,e){return t||(e?.classList.contains("target")?"target":e?.classList.contains("source")?"source":null)}function F4(t){t?.classList.remove("valid","connecting","react-flow__handle-valid","react-flow__handle-connecting")}function ESe(t,e){let n=null;return e?n="valid":t&&!e&&(n="invalid"),n}function IH({event:t,handleId:e,nodeId:n,onConnect:r,isTarget:s,getState:i,setState:a,isValidConnection:o,edgeUpdaterType:c,onReconnectEnd:h}){const f=kH(t.target),{connectionMode:m,domNode:g,autoPanOnConnect:x,connectionRadius:y,onConnectStart:w,panBy:S,getNodes:k,cancelConnection:N}=i();let C=0,T;const{x:_,y:E}=pc(t),M=f?.elementFromPoint(_,E),L=SO(c,M),P=g?.getBoundingClientRect();if(!P||!L)return;let I,Q=pc(t,P),U=!1,ee=null,z=!1,H=null;const B=TSe({nodes:k(),nodeId:n,handleId:e,handleType:L}),X=()=>{if(!x)return;const[R,se]=SH(Q,P);S({x:R,y:se}),C=requestAnimationFrame(X)};a({connectionPosition:Q,connectionStatus:null,connectionNodeId:n,connectionHandleId:e,connectionHandleType:L,connectionStartHandle:{nodeId:n,handleId:e,type:L},connectionEndHandle:null}),w?.(t,{nodeId:n,handleId:e,handleType:L});function J(R){const{transform:se}=i();Q=pc(R,P);const{handle:W,validHandleResult:F}=NSe(R,f,_k(Q,se,!1,[1,1]),y,B,V=>LH(V,m,n,e,s?"target":"source",o,f));if(T=W,U||(X(),U=!0),H=F.handleDomNode,ee=F.connection,z=F.isValid,a({connectionPosition:T&&z?AH({x:T.x,y:T.y},se):Q,connectionStatus:ESe(!!T,z),connectionEndHandle:F.endHandle}),!T&&!z&&!H)return F4(I);ee.source!==ee.target&&H&&(F4(I),I=H,H.classList.add("connecting","react-flow__handle-connecting"),H.classList.toggle("valid",z),H.classList.toggle("react-flow__handle-valid",z))}function G(R){(T||H)&&ee&&z&&r?.(ee),i().onConnectEnd?.(R),c&&h?.(R),F4(I),N(),cancelAnimationFrame(C),U=!1,z=!1,ee=null,H=null,f.removeEventListener("mousemove",J),f.removeEventListener("mouseup",G),f.removeEventListener("touchmove",J),f.removeEventListener("touchend",G)}f.addEventListener("mousemove",J),f.addEventListener("mouseup",G),f.addEventListener("touchmove",J),f.addEventListener("touchend",G)}const tA=()=>!0,_Se=t=>({connectionStartHandle:t.connectionStartHandle,connectOnClick:t.connectOnClick,noPanClassName:t.noPanClassName}),MSe=(t,e,n)=>r=>{const{connectionStartHandle:s,connectionEndHandle:i,connectionClickStartHandle:a}=r;return{connecting:s?.nodeId===t&&s?.handleId===e&&s?.type===n||i?.nodeId===t&&i?.handleId===e&&i?.type===n,clickConnecting:a?.nodeId===t&&a?.handleId===e&&a?.type===n}},BH=b.forwardRef(({type:t="source",position:e=mt.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:s=!0,isConnectableEnd:i=!0,id:a,onConnect:o,children:c,className:h,onMouseDown:f,onTouchStart:m,...g},x)=>{const y=a||null,w=t==="target",S=ns(),k=wSe(),{connectOnClick:N,noPanClassName:C}=er(_Se,os),{connecting:T,clickConnecting:_}=er(MSe(k,y,t),os);k||S.getState().onError?.("010",bo.error010());const E=P=>{const{defaultEdgeOptions:I,onConnect:Q,hasDefaultEdges:U}=S.getState(),ee={...I,...P};if(U){const{edges:z,setEdges:H}=S.getState();H(OSe(ee,z))}Q?.(ee),o?.(ee)},M=P=>{if(!k)return;const I=CH(P);s&&(I&&P.button===0||!I)&&IH({event:P,handleId:y,nodeId:k,onConnect:E,isTarget:w,getState:S.getState,setState:S.setState,isValidConnection:n||S.getState().isValidConnection||tA}),I?f?.(P):m?.(P)},L=P=>{const{onClickConnectStart:I,onClickConnectEnd:Q,connectionClickStartHandle:U,connectionMode:ee,isValidConnection:z}=S.getState();if(!k||!U&&!s)return;if(!U){I?.(P,{nodeId:k,handleId:y,handleType:t}),S.setState({connectionClickStartHandle:{nodeId:k,type:t,handleId:y}});return}const H=kH(P.target),B=n||z||tA,{connection:X,isValid:J}=LH({nodeId:k,id:y,type:t},ee,U.nodeId,U.handleId||null,U.type,B,H);J&&E(X),Q?.(P),S.setState({connectionClickStartHandle:null})};return he.createElement("div",{"data-handleid":y,"data-nodeid":k,"data-handlepos":e,"data-id":`${k}-${y}-${t}`,className:Ss(["react-flow__handle",`react-flow__handle-${e}`,"nodrag",C,h,{source:!w,target:w,connectable:r,connectablestart:s,connectableend:i,connecting:_,connectionindicator:r&&(s&&!T||i&&T)}]),onMouseDown:M,onTouchStart:M,onClick:N?L:void 0,ref:x,...g},c)});BH.displayName="Handle";var Tc=b.memo(BH);const qH=({data:t,isConnectable:e,targetPosition:n=mt.Top,sourcePosition:r=mt.Bottom})=>he.createElement(he.Fragment,null,he.createElement(Tc,{type:"target",position:n,isConnectable:e}),t?.label,he.createElement(Tc,{type:"source",position:r,isConnectable:e}));qH.displayName="DefaultNode";var Mk=b.memo(qH);const FH=({data:t,isConnectable:e,sourcePosition:n=mt.Bottom})=>he.createElement(he.Fragment,null,t?.label,he.createElement(Tc,{type:"source",position:n,isConnectable:e}));FH.displayName="InputNode";var $H=b.memo(FH);const QH=({data:t,isConnectable:e,targetPosition:n=mt.Top})=>he.createElement(he.Fragment,null,he.createElement(Tc,{type:"target",position:n,isConnectable:e}),t?.label);QH.displayName="OutputNode";var HH=b.memo(QH);const kO=()=>null;kO.displayName="GroupNode";const ASe=t=>({selectedNodes:t.getNodes().filter(e=>e.selected),selectedEdges:t.edges.filter(e=>e.selected).map(e=>({...e}))}),Fx=t=>t.id;function RSe(t,e){return os(t.selectedNodes.map(Fx),e.selectedNodes.map(Fx))&&os(t.selectedEdges.map(Fx),e.selectedEdges.map(Fx))}const VH=b.memo(({onSelectionChange:t})=>{const e=ns(),{selectedNodes:n,selectedEdges:r}=er(ASe,RSe);return b.useEffect(()=>{const s={nodes:n,edges:r};t?.(s),e.getState().onSelectionChange.forEach(i=>i(s))},[n,r,t]),null});VH.displayName="SelectionListener";const DSe=t=>!!t.onSelectionChange;function zSe({onSelectionChange:t}){const e=er(DSe);return t||e?he.createElement(VH,{onSelectionChange:t}):null}const PSe=t=>({setNodes:t.setNodes,setEdges:t.setEdges,setDefaultNodesAndEdges:t.setDefaultNodesAndEdges,setMinZoom:t.setMinZoom,setMaxZoom:t.setMaxZoom,setTranslateExtent:t.setTranslateExtent,setNodeExtent:t.setNodeExtent,reset:t.reset});function Ad(t,e){b.useEffect(()=>{typeof t<"u"&&e(t)},[t])}function Kt(t,e,n){b.useEffect(()=>{typeof e<"u"&&n({[t]:e})},[e])}const LSe=({nodes:t,edges:e,defaultNodes:n,defaultEdges:r,onConnect:s,onConnectStart:i,onConnectEnd:a,onClickConnectStart:o,onClickConnectEnd:c,nodesDraggable:h,nodesConnectable:f,nodesFocusable:m,edgesFocusable:g,edgesUpdatable:x,elevateNodesOnSelect:y,minZoom:w,maxZoom:S,nodeExtent:k,onNodesChange:N,onEdgesChange:C,elementsSelectable:T,connectionMode:_,snapGrid:E,snapToGrid:M,translateExtent:L,connectOnClick:P,defaultEdgeOptions:I,fitView:Q,fitViewOptions:U,onNodesDelete:ee,onEdgesDelete:z,onNodeDrag:H,onNodeDragStart:B,onNodeDragStop:X,onSelectionDrag:J,onSelectionDragStart:G,onSelectionDragStop:R,noPanClassName:se,nodeOrigin:W,rfId:F,autoPanOnConnect:V,autoPanOnNodeDrag:te,onError:ne,connectionRadius:K,isValidConnection:ie,nodeDragThreshold:re})=>{const{setNodes:ae,setEdges:_e,setDefaultNodesAndEdges:Ue,setMinZoom:Xe,setMaxZoom:Ze,setTranslateExtent:Oe,setNodeExtent:He,reset:Ve}=er(PSe,os),Be=ns();return b.useEffect(()=>{const ut=r?.map(rt=>({...rt,...I}));return Ue(n,ut),()=>{Ve()}},[]),Kt("defaultEdgeOptions",I,Be.setState),Kt("connectionMode",_,Be.setState),Kt("onConnect",s,Be.setState),Kt("onConnectStart",i,Be.setState),Kt("onConnectEnd",a,Be.setState),Kt("onClickConnectStart",o,Be.setState),Kt("onClickConnectEnd",c,Be.setState),Kt("nodesDraggable",h,Be.setState),Kt("nodesConnectable",f,Be.setState),Kt("nodesFocusable",m,Be.setState),Kt("edgesFocusable",g,Be.setState),Kt("edgesUpdatable",x,Be.setState),Kt("elementsSelectable",T,Be.setState),Kt("elevateNodesOnSelect",y,Be.setState),Kt("snapToGrid",M,Be.setState),Kt("snapGrid",E,Be.setState),Kt("onNodesChange",N,Be.setState),Kt("onEdgesChange",C,Be.setState),Kt("connectOnClick",P,Be.setState),Kt("fitViewOnInit",Q,Be.setState),Kt("fitViewOnInitOptions",U,Be.setState),Kt("onNodesDelete",ee,Be.setState),Kt("onEdgesDelete",z,Be.setState),Kt("onNodeDrag",H,Be.setState),Kt("onNodeDragStart",B,Be.setState),Kt("onNodeDragStop",X,Be.setState),Kt("onSelectionDrag",J,Be.setState),Kt("onSelectionDragStart",G,Be.setState),Kt("onSelectionDragStop",R,Be.setState),Kt("noPanClassName",se,Be.setState),Kt("nodeOrigin",W,Be.setState),Kt("rfId",F,Be.setState),Kt("autoPanOnConnect",V,Be.setState),Kt("autoPanOnNodeDrag",te,Be.setState),Kt("onError",ne,Be.setState),Kt("connectionRadius",K,Be.setState),Kt("isValidConnection",ie,Be.setState),Kt("nodeDragThreshold",re,Be.setState),Ad(t,ae),Ad(e,_e),Ad(w,Xe),Ad(S,Ze),Ad(L,Oe),Ad(k,He),null},nA={display:"none"},ISe={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},UH="react-flow__node-desc",WH="react-flow__edge-desc",BSe="react-flow__aria-live",qSe=t=>t.ariaLiveMessage;function FSe({rfId:t}){const e=er(qSe);return he.createElement("div",{id:`${BSe}-${t}`,"aria-live":"assertive","aria-atomic":"true",style:ISe},e)}function $Se({rfId:t,disableKeyboardA11y:e}){return he.createElement(he.Fragment,null,he.createElement("div",{id:`${UH}-${t}`,style:nA},"Press enter or space to select a node.",!e&&"You can then use the arrow keys to move the node around."," Press delete to remove it and escape to cancel."," "),he.createElement("div",{id:`${WH}-${t}`,style:nA},"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."),!e&&he.createElement(FSe,{rfId:t}))}var T0=(t=null,e={actInsideInputWithModifier:!0})=>{const[n,r]=b.useState(!1),s=b.useRef(!1),i=b.useRef(new Set([])),[a,o]=b.useMemo(()=>{if(t!==null){const h=(Array.isArray(t)?t:[t]).filter(m=>typeof m=="string").map(m=>m.split("+")),f=h.reduce((m,g)=>m.concat(...g),[]);return[h,f]}return[[],[]]},[t]);return b.useEffect(()=>{const c=typeof document<"u"?document:null,h=e?.target||c;if(t!==null){const f=x=>{if(s.current=x.ctrlKey||x.metaKey||x.shiftKey,(!s.current||s.current&&!e.actInsideInputWithModifier)&&Ck(x))return!1;const w=sA(x.code,o);i.current.add(x[w]),rA(a,i.current,!1)&&(x.preventDefault(),r(!0))},m=x=>{if((!s.current||s.current&&!e.actInsideInputWithModifier)&&Ck(x))return!1;const w=sA(x.code,o);rA(a,i.current,!0)?(r(!1),i.current.clear()):i.current.delete(x[w]),x.key==="Meta"&&i.current.clear(),s.current=!1},g=()=>{i.current.clear(),r(!1)};return h?.addEventListener("keydown",f),h?.addEventListener("keyup",m),window.addEventListener("blur",g),()=>{h?.removeEventListener("keydown",f),h?.removeEventListener("keyup",m),window.removeEventListener("blur",g)}}},[t,r]),n};function rA(t,e,n){return t.filter(r=>n||r.length===e.size).some(r=>r.every(s=>e.has(s)))}function sA(t,e){return e.includes(t)?"code":"key"}function GH(t,e,n,r){const s=t.parentNode||t.parentId;if(!s)return n;const i=e.get(s),a=Nu(i,r);return GH(i,e,{x:(n.x??0)+a.x,y:(n.y??0)+a.y,z:(i[Sr]?.z??0)>(n.z??0)?i[Sr]?.z??0:n.z??0},r)}function XH(t,e,n){t.forEach(r=>{const s=r.parentNode||r.parentId;if(s&&!t.has(s))throw new Error(`Parent node ${s} not found`);if(s||n?.[r.id]){const{x:i,y:a,z:o}=GH(r,t,{...r.position,z:r[Sr]?.z??0},e);r.positionAbsolute={x:i,y:a},r[Sr].z=o,n?.[r.id]&&(r[Sr].isParent=!0)}})}function $4(t,e,n,r){const s=new Map,i={},a=r?1e3:0;return t.forEach(o=>{const c=(na(o.zIndex)?o.zIndex:0)+(o.selected?a:0),h=e.get(o.id),f={...o,positionAbsolute:{x:o.position.x,y:o.position.y}},m=o.parentNode||o.parentId;m&&(i[m]=!0);const g=h?.type&&h?.type!==o.type;Object.defineProperty(f,Sr,{enumerable:!1,value:{handleBounds:g?void 0:h?.[Sr]?.handleBounds,z:c}}),s.set(o.id,f)}),XH(s,n,i),s}function YH(t,e={}){const{getNodes:n,width:r,height:s,minZoom:i,maxZoom:a,d3Zoom:o,d3Selection:c,fitViewOnInitDone:h,fitViewOnInit:f,nodeOrigin:m}=t(),g=e.initial&&!h&&f;if(o&&c&&(g||!e.initial)){const y=n().filter(S=>{const k=e.includeHiddenNodes?S.width&&S.height:!S.hidden;return e.nodes?.length?k&&e.nodes.some(N=>N.id===S.id):k}),w=y.every(S=>S.width&&S.height);if(y.length>0&&w){const S=By(y,m),{x:k,y:N,zoom:C}=zH(S,r,s,e.minZoom??i,e.maxZoom??a,e.padding??.1),T=ho.translate(k,N).scale(C);return typeof e.duration=="number"&&e.duration>0?o.transform(cu(c,e.duration),T):o.transform(c,T),!0}}return!1}function QSe(t,e){return t.forEach(n=>{const r=e.get(n.id);r&&e.set(r.id,{...r,[Sr]:r[Sr],selected:n.selected})}),new Map(e)}function HSe(t,e){return e.map(n=>{const r=t.find(s=>s.id===n.id);return r&&(n.selected=r.selected),n})}function $x({changedNodes:t,changedEdges:e,get:n,set:r}){const{nodeInternals:s,edges:i,onNodesChange:a,onEdgesChange:o,hasDefaultNodes:c,hasDefaultEdges:h}=n();t?.length&&(c&&r({nodeInternals:QSe(t,s)}),a?.(t)),e?.length&&(h&&r({edges:HSe(e,i)}),o?.(e))}const Rd=()=>{},VSe={zoomIn:Rd,zoomOut:Rd,zoomTo:Rd,getZoom:()=>1,setViewport:Rd,getViewport:()=>({x:0,y:0,zoom:1}),fitView:()=>!1,setCenter:Rd,fitBounds:Rd,project:t=>t,screenToFlowPosition:t=>t,flowToScreenPosition:t=>t,viewportInitialized:!1},USe=t=>({d3Zoom:t.d3Zoom,d3Selection:t.d3Selection}),WSe=()=>{const t=ns(),{d3Zoom:e,d3Selection:n}=er(USe,os);return b.useMemo(()=>n&&e?{zoomIn:s=>e.scaleBy(cu(n,s?.duration),1.2),zoomOut:s=>e.scaleBy(cu(n,s?.duration),1/1.2),zoomTo:(s,i)=>e.scaleTo(cu(n,i?.duration),s),getZoom:()=>t.getState().transform[2],setViewport:(s,i)=>{const[a,o,c]=t.getState().transform,h=ho.translate(s.x??a,s.y??o).scale(s.zoom??c);e.transform(cu(n,i?.duration),h)},getViewport:()=>{const[s,i,a]=t.getState().transform;return{x:s,y:i,zoom:a}},fitView:s=>YH(t.getState,s),setCenter:(s,i,a)=>{const{width:o,height:c,maxZoom:h}=t.getState(),f=typeof a?.zoom<"u"?a.zoom:h,m=o/2-s*f,g=c/2-i*f,x=ho.translate(m,g).scale(f);e.transform(cu(n,a?.duration),x)},fitBounds:(s,i)=>{const{width:a,height:o,minZoom:c,maxZoom:h}=t.getState(),{x:f,y:m,zoom:g}=zH(s,a,o,c,h,i?.padding??.1),x=ho.translate(f,m).scale(g);e.transform(cu(n,i?.duration),x)},project:s=>{const{transform:i,snapToGrid:a,snapGrid:o}=t.getState();return console.warn("[DEPRECATED] `project` is deprecated. Instead use `screenToFlowPosition`. There is no need to subtract the react flow bounds anymore! https://reactflow.dev/api-reference/types/react-flow-instance#screen-to-flow-position"),_k(s,i,a,o)},screenToFlowPosition:s=>{const{transform:i,snapToGrid:a,snapGrid:o,domNode:c}=t.getState();if(!c)return s;const{x:h,y:f}=c.getBoundingClientRect(),m={x:s.x-h,y:s.y-f};return _k(m,i,a,o)},flowToScreenPosition:s=>{const{transform:i,domNode:a}=t.getState();if(!a)return s;const{x:o,y:c}=a.getBoundingClientRect(),h=AH(s,i);return{x:h.x+o,y:h.y+c}},viewportInitialized:!0}:VSe,[e,n])};function jO(){const t=WSe(),e=ns(),n=b.useCallback(()=>e.getState().getNodes().map(w=>({...w})),[]),r=b.useCallback(w=>e.getState().nodeInternals.get(w),[]),s=b.useCallback(()=>{const{edges:w=[]}=e.getState();return w.map(S=>({...S}))},[]),i=b.useCallback(w=>{const{edges:S=[]}=e.getState();return S.find(k=>k.id===w)},[]),a=b.useCallback(w=>{const{getNodes:S,setNodes:k,hasDefaultNodes:N,onNodesChange:C}=e.getState(),T=S(),_=typeof w=="function"?w(T):w;if(N)k(_);else if(C){const E=_.length===0?T.map(M=>({type:"remove",id:M.id})):_.map(M=>({item:M,type:"reset"}));C(E)}},[]),o=b.useCallback(w=>{const{edges:S=[],setEdges:k,hasDefaultEdges:N,onEdgesChange:C}=e.getState(),T=typeof w=="function"?w(S):w;if(N)k(T);else if(C){const _=T.length===0?S.map(E=>({type:"remove",id:E.id})):T.map(E=>({item:E,type:"reset"}));C(_)}},[]),c=b.useCallback(w=>{const S=Array.isArray(w)?w:[w],{getNodes:k,setNodes:N,hasDefaultNodes:C,onNodesChange:T}=e.getState();if(C){const E=[...k(),...S];N(E)}else if(T){const _=S.map(E=>({item:E,type:"add"}));T(_)}},[]),h=b.useCallback(w=>{const S=Array.isArray(w)?w:[w],{edges:k=[],setEdges:N,hasDefaultEdges:C,onEdgesChange:T}=e.getState();if(C)N([...k,...S]);else if(T){const _=S.map(E=>({item:E,type:"add"}));T(_)}},[]),f=b.useCallback(()=>{const{getNodes:w,edges:S=[],transform:k}=e.getState(),[N,C,T]=k;return{nodes:w().map(_=>({..._})),edges:S.map(_=>({..._})),viewport:{x:N,y:C,zoom:T}}},[]),m=b.useCallback(({nodes:w,edges:S})=>{const{nodeInternals:k,getNodes:N,edges:C,hasDefaultNodes:T,hasDefaultEdges:_,onNodesDelete:E,onEdgesDelete:M,onNodesChange:L,onEdgesChange:P}=e.getState(),I=(w||[]).map(H=>H.id),Q=(S||[]).map(H=>H.id),U=N().reduce((H,B)=>{const X=B.parentNode||B.parentId,J=!I.includes(B.id)&&X&&H.find(R=>R.id===X);return(typeof B.deletable=="boolean"?B.deletable:!0)&&(I.includes(B.id)||J)&&H.push(B),H},[]),ee=C.filter(H=>typeof H.deletable=="boolean"?H.deletable:!0),z=ee.filter(H=>Q.includes(H.id));if(U||z){const H=DH(U,ee),B=[...z,...H],X=B.reduce((J,G)=>(J.includes(G.id)||J.push(G.id),J),[]);if((_||T)&&(_&&e.setState({edges:C.filter(J=>!X.includes(J.id))}),T&&(U.forEach(J=>{k.delete(J.id)}),e.setState({nodeInternals:new Map(k)}))),X.length>0&&(M?.(B),P&&P(X.map(J=>({id:J,type:"remove"})))),U.length>0&&(E?.(U),L)){const J=U.map(G=>({id:G.id,type:"remove"}));L(J)}}},[]),g=b.useCallback(w=>{const S=fSe(w),k=S?null:e.getState().nodeInternals.get(w.id);return!S&&!k?[null,null,S]:[S?w:XM(k),k,S]},[]),x=b.useCallback((w,S=!0,k)=>{const[N,C,T]=g(w);return N?(k||e.getState().getNodes()).filter(_=>{if(!T&&(_.id===C.id||!_.positionAbsolute))return!1;const E=XM(_),M=Nk(E,N);return S&&M>0||M>=N.width*N.height}):[]},[]),y=b.useCallback((w,S,k=!0)=>{const[N]=g(w);if(!N)return!1;const C=Nk(N,S);return k&&C>0||C>=N.width*N.height},[]);return b.useMemo(()=>({...t,getNodes:n,getNode:r,getEdges:s,getEdge:i,setNodes:a,setEdges:o,addNodes:c,addEdges:h,toObject:f,deleteElements:m,getIntersectingNodes:x,isNodeIntersecting:y}),[t,n,r,s,i,a,o,c,h,f,m,x,y])}const GSe={actInsideInputWithModifier:!1};var XSe=({deleteKeyCode:t,multiSelectionKeyCode:e})=>{const n=ns(),{deleteElements:r}=jO(),s=T0(t,GSe),i=T0(e);b.useEffect(()=>{if(s){const{edges:a,getNodes:o}=n.getState(),c=o().filter(f=>f.selected),h=a.filter(f=>f.selected);r({nodes:c,edges:h}),n.setState({nodesSelectionActive:!1})}},[s]),b.useEffect(()=>{n.setState({multiSelectionActive:i})},[i])};function YSe(t){const e=ns();b.useEffect(()=>{let n;const r=()=>{if(!t.current)return;const s=gO(t.current);(s.height===0||s.width===0)&&e.getState().onError?.("004",bo.error004()),e.setState({width:s.width||500,height:s.height||500})};return r(),window.addEventListener("resize",r),t.current&&(n=new ResizeObserver(()=>r()),n.observe(t.current)),()=>{window.removeEventListener("resize",r),n&&t.current&&n.unobserve(t.current)}},[])}const OO={position:"absolute",width:"100%",height:"100%",top:0,left:0},KSe=(t,e)=>t.x!==e.x||t.y!==e.y||t.zoom!==e.k,Qx=t=>({x:t.x,y:t.y,zoom:t.k}),Dd=(t,e)=>t.target.closest(`.${e}`),iA=(t,e)=>e===2&&Array.isArray(t)&&t.includes(2),aA=t=>{const e=t.ctrlKey&&yv()?10:1;return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*e},ZSe=t=>({d3Zoom:t.d3Zoom,d3Selection:t.d3Selection,d3ZoomHandler:t.d3ZoomHandler,userSelectionActive:t.userSelectionActive}),JSe=({onMove:t,onMoveStart:e,onMoveEnd:n,onPaneContextMenu:r,zoomOnScroll:s=!0,zoomOnPinch:i=!0,panOnScroll:a=!1,panOnScrollSpeed:o=.5,panOnScrollMode:c=vu.Free,zoomOnDoubleClick:h=!0,elementsSelectable:f,panOnDrag:m=!0,defaultViewport:g,translateExtent:x,minZoom:y,maxZoom:w,zoomActivationKeyCode:S,preventScrolling:k=!0,children:N,noWheelClassName:C,noPanClassName:T})=>{const _=b.useRef(),E=ns(),M=b.useRef(!1),L=b.useRef(!1),P=b.useRef(null),I=b.useRef({x:0,y:0,zoom:0}),{d3Zoom:Q,d3Selection:U,d3ZoomHandler:ee,userSelectionActive:z}=er(ZSe,os),H=T0(S),B=b.useRef(0),X=b.useRef(!1),J=b.useRef();return YSe(P),b.useEffect(()=>{if(P.current){const G=P.current.getBoundingClientRect(),R=bH().scaleExtent([y,w]).translateExtent(x),se=Ki(P.current).call(R),W=ho.translate(g.x,g.y).scale(Mh(g.zoom,y,w)),F=[[0,0],[G.width,G.height]],V=R.constrain()(W,F,x);R.transform(se,V),R.wheelDelta(aA),E.setState({d3Zoom:R,d3Selection:se,d3ZoomHandler:se.on("wheel.zoom"),transform:[V.x,V.y,V.k],domNode:P.current.closest(".react-flow")})}},[]),b.useEffect(()=>{U&&Q&&(a&&!H&&!z?U.on("wheel.zoom",G=>{if(Dd(G,C))return!1;G.preventDefault(),G.stopImmediatePropagation();const R=U.property("__zoom").k||1;if(G.ctrlKey&&i){const ie=ka(G),re=aA(G),ae=R*Math.pow(2,re);Q.scaleTo(U,ae,ie,G);return}const se=G.deltaMode===1?20:1;let W=c===vu.Vertical?0:G.deltaX*se,F=c===vu.Horizontal?0:G.deltaY*se;!yv()&&G.shiftKey&&c!==vu.Vertical&&(W=G.deltaY*se,F=0),Q.translateBy(U,-(W/R)*o,-(F/R)*o,{internal:!0});const V=Qx(U.property("__zoom")),{onViewportChangeStart:te,onViewportChange:ne,onViewportChangeEnd:K}=E.getState();clearTimeout(J.current),X.current||(X.current=!0,e?.(G,V),te?.(V)),X.current&&(t?.(G,V),ne?.(V),J.current=setTimeout(()=>{n?.(G,V),K?.(V),X.current=!1},150))},{passive:!1}):typeof ee<"u"&&U.on("wheel.zoom",function(G,R){if(!k&&G.type==="wheel"&&!G.ctrlKey||Dd(G,C))return null;G.preventDefault(),ee.call(this,G,R)},{passive:!1}))},[z,a,c,U,Q,ee,H,i,k,C,e,t,n]),b.useEffect(()=>{Q&&Q.on("start",G=>{if(!G.sourceEvent||G.sourceEvent.internal)return null;B.current=G.sourceEvent?.button;const{onViewportChangeStart:R}=E.getState(),se=Qx(G.transform);M.current=!0,I.current=se,G.sourceEvent?.type==="mousedown"&&E.setState({paneDragging:!0}),R?.(se),e?.(G.sourceEvent,se)})},[Q,e]),b.useEffect(()=>{Q&&(z&&!M.current?Q.on("zoom",null):z||Q.on("zoom",G=>{const{onViewportChange:R}=E.getState();if(E.setState({transform:[G.transform.x,G.transform.y,G.transform.k]}),L.current=!!(r&&iA(m,B.current??0)),(t||R)&&!G.sourceEvent?.internal){const se=Qx(G.transform);R?.(se),t?.(G.sourceEvent,se)}}))},[z,Q,t,m,r]),b.useEffect(()=>{Q&&Q.on("end",G=>{if(!G.sourceEvent||G.sourceEvent.internal)return null;const{onViewportChangeEnd:R}=E.getState();if(M.current=!1,E.setState({paneDragging:!1}),r&&iA(m,B.current??0)&&!L.current&&r(G.sourceEvent),L.current=!1,(n||R)&&KSe(I.current,G.transform)){const se=Qx(G.transform);I.current=se,clearTimeout(_.current),_.current=setTimeout(()=>{R?.(se),n?.(G.sourceEvent,se)},a?150:0)}})},[Q,a,m,n,r]),b.useEffect(()=>{Q&&Q.filter(G=>{const R=H||s,se=i&&G.ctrlKey;if((m===!0||Array.isArray(m)&&m.includes(1))&&G.button===1&&G.type==="mousedown"&&(Dd(G,"react-flow__node")||Dd(G,"react-flow__edge")))return!0;if(!m&&!R&&!a&&!h&&!i||z||!h&&G.type==="dblclick"||Dd(G,C)&&G.type==="wheel"||Dd(G,T)&&(G.type!=="wheel"||a&&G.type==="wheel"&&!H)||!i&&G.ctrlKey&&G.type==="wheel"||!R&&!a&&!se&&G.type==="wheel"||!m&&(G.type==="mousedown"||G.type==="touchstart")||Array.isArray(m)&&!m.includes(G.button)&&G.type==="mousedown")return!1;const W=Array.isArray(m)&&m.includes(G.button)||!G.button||G.button<=1;return(!G.ctrlKey||G.type==="wheel")&&W})},[z,Q,s,i,a,h,m,f,H]),he.createElement("div",{className:"react-flow__renderer",ref:P,style:OO},N)},eke=t=>({userSelectionActive:t.userSelectionActive,userSelectionRect:t.userSelectionRect});function tke(){const{userSelectionActive:t,userSelectionRect:e}=er(eke,os);return t&&e?he.createElement("div",{className:"react-flow__selection react-flow__container",style:{width:e.width,height:e.height,transform:`translate(${e.x}px, ${e.y}px)`}}):null}function lA(t,e){const n=e.parentNode||e.parentId,r=t.find(s=>s.id===n);if(r){const s=e.position.x+e.width-r.width,i=e.position.y+e.height-r.height;if(s>0||i>0||e.position.x<0||e.position.y<0){if(r.style={...r.style},r.style.width=r.style.width??r.width,r.style.height=r.style.height??r.height,s>0&&(r.style.width+=s),i>0&&(r.style.height+=i),e.position.x<0){const a=Math.abs(e.position.x);r.position.x=r.position.x-a,r.style.width+=a,e.position.x=0}if(e.position.y<0){const a=Math.abs(e.position.y);r.position.y=r.position.y-a,r.style.height+=a,e.position.y=0}r.width=r.style.width,r.height=r.style.height}}}function KH(t,e){if(t.some(r=>r.type==="reset"))return t.filter(r=>r.type==="reset").map(r=>r.item);const n=t.filter(r=>r.type==="add").map(r=>r.item);return e.reduce((r,s)=>{const i=t.filter(o=>o.id===s.id);if(i.length===0)return r.push(s),r;const a={...s};for(const o of i)if(o)switch(o.type){case"select":{a.selected=o.selected;break}case"position":{typeof o.position<"u"&&(a.position=o.position),typeof o.positionAbsolute<"u"&&(a.positionAbsolute=o.positionAbsolute),typeof o.dragging<"u"&&(a.dragging=o.dragging),a.expandParent&&lA(r,a);break}case"dimensions":{typeof o.dimensions<"u"&&(a.width=o.dimensions.width,a.height=o.dimensions.height),typeof o.updateStyle<"u"&&(a.style={...a.style||{},...o.dimensions}),typeof o.resizing=="boolean"&&(a.resizing=o.resizing),a.expandParent&&lA(r,a);break}case"remove":return r}return r.push(a),r},n)}function ZH(t,e){return KH(t,e)}function nke(t,e){return KH(t,e)}const oc=(t,e)=>({id:t,type:"select",selected:e});function Kd(t,e){return t.reduce((n,r)=>{const s=e.includes(r.id);return!r.selected&&s?(r.selected=!0,n.push(oc(r.id,!0))):r.selected&&!s&&(r.selected=!1,n.push(oc(r.id,!1))),n},[])}const Q4=(t,e)=>n=>{n.target===e.current&&t?.(n)},rke=t=>({userSelectionActive:t.userSelectionActive,elementsSelectable:t.elementsSelectable,dragging:t.paneDragging}),JH=b.memo(({isSelecting:t,selectionMode:e=C0.Full,panOnDrag:n,onSelectionStart:r,onSelectionEnd:s,onPaneClick:i,onPaneContextMenu:a,onPaneScroll:o,onPaneMouseEnter:c,onPaneMouseMove:h,onPaneMouseLeave:f,children:m})=>{const g=b.useRef(null),x=ns(),y=b.useRef(0),w=b.useRef(0),S=b.useRef(),{userSelectionActive:k,elementsSelectable:N,dragging:C}=er(rke,os),T=()=>{x.setState({userSelectionActive:!1,userSelectionRect:null}),y.current=0,w.current=0},_=ee=>{i?.(ee),x.getState().resetSelectedElements(),x.setState({nodesSelectionActive:!1})},E=ee=>{if(Array.isArray(n)&&n?.includes(2)){ee.preventDefault();return}a?.(ee)},M=o?ee=>o(ee):void 0,L=ee=>{const{resetSelectedElements:z,domNode:H}=x.getState();if(S.current=H?.getBoundingClientRect(),!N||!t||ee.button!==0||ee.target!==g.current||!S.current)return;const{x:B,y:X}=pc(ee,S.current);z(),x.setState({userSelectionRect:{width:0,height:0,startX:B,startY:X,x:B,y:X}}),r?.(ee)},P=ee=>{const{userSelectionRect:z,nodeInternals:H,edges:B,transform:X,onNodesChange:J,onEdgesChange:G,nodeOrigin:R,getNodes:se}=x.getState();if(!t||!S.current||!z)return;x.setState({userSelectionActive:!0,nodesSelectionActive:!1});const W=pc(ee,S.current),F=z.startX??0,V=z.startY??0,te={...z,x:W.xae.id),re=K.map(ae=>ae.id);if(y.current!==re.length){y.current=re.length;const ae=Kd(ne,re);ae.length&&J?.(ae)}if(w.current!==ie.length){w.current=ie.length;const ae=Kd(B,ie);ae.length&&G?.(ae)}x.setState({userSelectionRect:te})},I=ee=>{if(ee.button!==0)return;const{userSelectionRect:z}=x.getState();!k&&z&&ee.target===g.current&&_?.(ee),x.setState({nodesSelectionActive:y.current>0}),T(),s?.(ee)},Q=ee=>{k&&(x.setState({nodesSelectionActive:y.current>0}),s?.(ee)),T()},U=N&&(t||k);return he.createElement("div",{className:Ss(["react-flow__pane",{dragging:C,selection:t}]),onClick:U?void 0:Q4(_,g),onContextMenu:Q4(E,g),onWheel:Q4(M,g),onMouseEnter:U?void 0:c,onMouseDown:U?L:void 0,onMouseMove:U?P:h,onMouseUp:U?I:void 0,onMouseLeave:U?Q:f,ref:g,style:OO},m,he.createElement(tke,null))});JH.displayName="Pane";function eV(t,e){const n=t.parentNode||t.parentId;if(!n)return!1;const r=e.get(n);return r?r.selected?!0:eV(r,e):!1}function oA(t,e,n){let r=t;do{if(r?.matches(e))return!0;if(r===n.current)return!1;r=r.parentElement}while(r);return!1}function ske(t,e,n,r){return Array.from(t.values()).filter(s=>(s.selected||s.id===r)&&(!s.parentNode||s.parentId||!eV(s,t))&&(s.draggable||e&&typeof s.draggable>"u")).map(s=>({id:s.id,position:s.position||{x:0,y:0},positionAbsolute:s.positionAbsolute||{x:0,y:0},distance:{x:n.x-(s.positionAbsolute?.x??0),y:n.y-(s.positionAbsolute?.y??0)},delta:{x:0,y:0},extent:s.extent,parentNode:s.parentNode||s.parentId,parentId:s.parentNode||s.parentId,width:s.width,height:s.height,expandParent:s.expandParent}))}function ike(t,e){return!e||e==="parent"?e:[e[0],[e[1][0]-(t.width||0),e[1][1]-(t.height||0)]]}function tV(t,e,n,r,s=[0,0],i){const a=ike(t,t.extent||r);let o=a;const c=t.parentNode||t.parentId;if(t.extent==="parent"&&!t.expandParent)if(c&&t.width&&t.height){const m=n.get(c),{x:g,y:x}=Nu(m,s).positionAbsolute;o=m&&na(g)&&na(x)&&na(m.width)&&na(m.height)?[[g+t.width*s[0],x+t.height*s[1]],[g+m.width-t.width+t.width*s[0],x+m.height-t.height+t.height*s[1]]]:o}else i?.("005",bo.error005()),o=a;else if(t.extent&&c&&t.extent!=="parent"){const m=n.get(c),{x:g,y:x}=Nu(m,s).positionAbsolute;o=[[t.extent[0][0]+g,t.extent[0][1]+x],[t.extent[1][0]+g,t.extent[1][1]+x]]}let h={x:0,y:0};if(c){const m=n.get(c);h=Nu(m,s).positionAbsolute}const f=o&&o!=="parent"?xO(e,o):e;return{position:{x:f.x-h.x,y:f.y-h.y},positionAbsolute:f}}function H4({nodeId:t,dragItems:e,nodeInternals:n}){const r=e.map(s=>({...n.get(s.id),position:s.position,positionAbsolute:s.positionAbsolute}));return[t?r.find(s=>s.id===t):r[0],r]}const cA=(t,e,n,r)=>{const s=e.querySelectorAll(t);if(!s||!s.length)return null;const i=Array.from(s),a=e.getBoundingClientRect(),o={x:a.width*r[0],y:a.height*r[1]};return i.map(c=>{const h=c.getBoundingClientRect();return{id:c.getAttribute("data-handleid"),position:c.getAttribute("data-handlepos"),x:(h.left-a.left-o.x)/n,y:(h.top-a.top-o.y)/n,...gO(c)}})};function hm(t,e,n){return n===void 0?n:r=>{const s=e().nodeInternals.get(t);s&&n(r,{...s})}}function Ak({id:t,store:e,unselect:n=!1,nodeRef:r}){const{addSelectedNodes:s,unselectNodesAndEdges:i,multiSelectionActive:a,nodeInternals:o,onError:c}=e.getState(),h=o.get(t);if(!h){c?.("012",bo.error012(t));return}e.setState({nodesSelectionActive:!1}),h.selected?(n||h.selected&&a)&&(i({nodes:[h],edges:[]}),requestAnimationFrame(()=>r?.current?.blur())):s([t])}function ake(){const t=ns();return b.useCallback(({sourceEvent:n})=>{const{transform:r,snapGrid:s,snapToGrid:i}=t.getState(),a=n.touches?n.touches[0].clientX:n.clientX,o=n.touches?n.touches[0].clientY:n.clientY,c={x:(a-r[0])/r[2],y:(o-r[1])/r[2]};return{xSnapped:i?s[0]*Math.round(c.x/s[0]):c.x,ySnapped:i?s[1]*Math.round(c.y/s[1]):c.y,...c}},[])}function V4(t){return(e,n,r)=>t?.(e,r)}function nV({nodeRef:t,disabled:e=!1,noDragClassName:n,handleSelector:r,nodeId:s,isSelectable:i,selectNodesOnDrag:a}){const o=ns(),[c,h]=b.useState(!1),f=b.useRef([]),m=b.useRef({x:null,y:null}),g=b.useRef(0),x=b.useRef(null),y=b.useRef({x:0,y:0}),w=b.useRef(null),S=b.useRef(!1),k=b.useRef(!1),N=b.useRef(!1),C=ake();return b.useEffect(()=>{if(t?.current){const T=Ki(t.current),_=({x:L,y:P})=>{const{nodeInternals:I,onNodeDrag:Q,onSelectionDrag:U,updateNodePositions:ee,nodeExtent:z,snapGrid:H,snapToGrid:B,nodeOrigin:X,onError:J}=o.getState();m.current={x:L,y:P};let G=!1,R={x:0,y:0,x2:0,y2:0};if(f.current.length>1&&z){const W=By(f.current,X);R=N0(W)}if(f.current=f.current.map(W=>{const F={x:L-W.distance.x,y:P-W.distance.y};B&&(F.x=H[0]*Math.round(F.x/H[0]),F.y=H[1]*Math.round(F.y/H[1]));const V=[[z[0][0],z[0][1]],[z[1][0],z[1][1]]];f.current.length>1&&z&&!W.extent&&(V[0][0]=W.positionAbsolute.x-R.x+z[0][0],V[1][0]=W.positionAbsolute.x+(W.width??0)-R.x2+z[1][0],V[0][1]=W.positionAbsolute.y-R.y+z[0][1],V[1][1]=W.positionAbsolute.y+(W.height??0)-R.y2+z[1][1]);const te=tV(W,F,I,V,X,J);return G=G||W.position.x!==te.position.x||W.position.y!==te.position.y,W.position=te.position,W.positionAbsolute=te.positionAbsolute,W}),!G)return;ee(f.current,!0,!0),h(!0);const se=s?Q:V4(U);if(se&&w.current){const[W,F]=H4({nodeId:s,dragItems:f.current,nodeInternals:I});se(w.current,W,F)}},E=()=>{if(!x.current)return;const[L,P]=SH(y.current,x.current);if(L!==0||P!==0){const{transform:I,panBy:Q}=o.getState();m.current.x=(m.current.x??0)-L/I[2],m.current.y=(m.current.y??0)-P/I[2],Q({x:L,y:P})&&_(m.current)}g.current=requestAnimationFrame(E)},M=L=>{const{nodeInternals:P,multiSelectionActive:I,nodesDraggable:Q,unselectNodesAndEdges:U,onNodeDragStart:ee,onSelectionDragStart:z}=o.getState();k.current=!0;const H=s?ee:V4(z);(!a||!i)&&!I&&s&&(P.get(s)?.selected||U()),s&&i&&a&&Ak({id:s,store:o,nodeRef:t});const B=C(L);if(m.current=B,f.current=ske(P,Q,B,s),H&&f.current){const[X,J]=H4({nodeId:s,dragItems:f.current,nodeInternals:P});H(L.sourceEvent,X,J)}};if(e)T.on(".drag",null);else{const L=Q5e().on("start",P=>{const{domNode:I,nodeDragThreshold:Q}=o.getState();Q===0&&M(P),N.current=!1;const U=C(P);m.current=U,x.current=I?.getBoundingClientRect()||null,y.current=pc(P.sourceEvent,x.current)}).on("drag",P=>{const I=C(P),{autoPanOnNodeDrag:Q,nodeDragThreshold:U}=o.getState();if(P.sourceEvent.type==="touchmove"&&P.sourceEvent.touches.length>1&&(N.current=!0),!N.current){if(!S.current&&k.current&&Q&&(S.current=!0,E()),!k.current){const ee=I.xSnapped-(m?.current?.x??0),z=I.ySnapped-(m?.current?.y??0);Math.sqrt(ee*ee+z*z)>U&&M(P)}(m.current.x!==I.xSnapped||m.current.y!==I.ySnapped)&&f.current&&k.current&&(w.current=P.sourceEvent,y.current=pc(P.sourceEvent,x.current),_(I))}}).on("end",P=>{if(!(!k.current||N.current)&&(h(!1),S.current=!1,k.current=!1,cancelAnimationFrame(g.current),f.current)){const{updateNodePositions:I,nodeInternals:Q,onNodeDragStop:U,onSelectionDragStop:ee}=o.getState(),z=s?U:V4(ee);if(I(f.current,!1,!1),z){const[H,B]=H4({nodeId:s,dragItems:f.current,nodeInternals:Q});z(P.sourceEvent,H,B)}}}).filter(P=>{const I=P.target;return!P.button&&(!n||!oA(I,`.${n}`,t))&&(!r||oA(I,r,t))});return T.call(L),()=>{T.on(".drag",null)}}}},[t,e,n,r,i,o,s,a,C]),c}function rV(){const t=ns();return b.useCallback(n=>{const{nodeInternals:r,nodeExtent:s,updateNodePositions:i,getNodes:a,snapToGrid:o,snapGrid:c,onError:h,nodesDraggable:f}=t.getState(),m=a().filter(N=>N.selected&&(N.draggable||f&&typeof N.draggable>"u")),g=o?c[0]:5,x=o?c[1]:5,y=n.isShiftPressed?4:1,w=n.x*g*y,S=n.y*x*y,k=m.map(N=>{if(N.positionAbsolute){const C={x:N.positionAbsolute.x+w,y:N.positionAbsolute.y+S};o&&(C.x=c[0]*Math.round(C.x/c[0]),C.y=c[1]*Math.round(C.y/c[1]));const{positionAbsolute:T,position:_}=tV(N,C,r,s,void 0,h);N.position=_,N.positionAbsolute=T}return N});i(k,!0,!1)},[])}const hh={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}};var fm=t=>{const e=({id:n,type:r,data:s,xPos:i,yPos:a,xPosOrigin:o,yPosOrigin:c,selected:h,onClick:f,onMouseEnter:m,onMouseMove:g,onMouseLeave:x,onContextMenu:y,onDoubleClick:w,style:S,className:k,isDraggable:N,isSelectable:C,isConnectable:T,isFocusable:_,selectNodesOnDrag:E,sourcePosition:M,targetPosition:L,hidden:P,resizeObserver:I,dragHandle:Q,zIndex:U,isParent:ee,noDragClassName:z,noPanClassName:H,initialized:B,disableKeyboardA11y:X,ariaLabel:J,rfId:G,hasHandleBounds:R})=>{const se=ns(),W=b.useRef(null),F=b.useRef(null),V=b.useRef(M),te=b.useRef(L),ne=b.useRef(r),K=C||N||f||m||g||x,ie=rV(),re=hm(n,se.getState,m),ae=hm(n,se.getState,g),_e=hm(n,se.getState,x),Ue=hm(n,se.getState,y),Xe=hm(n,se.getState,w),Ze=Ve=>{const{nodeDragThreshold:Be}=se.getState();if(C&&(!E||!N||Be>0)&&Ak({id:n,store:se,nodeRef:W}),f){const ut=se.getState().nodeInternals.get(n);ut&&f(Ve,{...ut})}},Oe=Ve=>{if(!Ck(Ve)&&!X)if(NH.includes(Ve.key)&&C){const Be=Ve.key==="Escape";Ak({id:n,store:se,unselect:Be,nodeRef:W})}else N&&h&&Object.prototype.hasOwnProperty.call(hh,Ve.key)&&(se.setState({ariaLiveMessage:`Moved selected node ${Ve.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~i}, y: ${~~a}`}),ie({x:hh[Ve.key].x,y:hh[Ve.key].y,isShiftPressed:Ve.shiftKey}))};b.useEffect(()=>()=>{F.current&&(I?.unobserve(F.current),F.current=null)},[]),b.useEffect(()=>{if(W.current&&!P){const Ve=W.current;(!B||!R||F.current!==Ve)&&(F.current&&I?.unobserve(F.current),I?.observe(Ve),F.current=Ve)}},[P,B,R]),b.useEffect(()=>{const Ve=ne.current!==r,Be=V.current!==M,ut=te.current!==L;W.current&&(Ve||Be||ut)&&(Ve&&(ne.current=r),Be&&(V.current=M),ut&&(te.current=L),se.getState().updateNodeDimensions([{id:n,nodeElement:W.current,forceUpdate:!0}]))},[n,r,M,L]);const He=nV({nodeRef:W,disabled:P||!N,noDragClassName:z,handleSelector:Q,nodeId:n,isSelectable:C,selectNodesOnDrag:E});return P?null:he.createElement("div",{className:Ss(["react-flow__node",`react-flow__node-${r}`,{[H]:N},k,{selected:h,selectable:C,parent:ee,dragging:He}]),ref:W,style:{zIndex:U,transform:`translate(${o}px,${c}px)`,pointerEvents:K?"all":"none",visibility:B?"visible":"hidden",...S},"data-id":n,"data-testid":`rf__node-${n}`,onMouseEnter:re,onMouseMove:ae,onMouseLeave:_e,onContextMenu:Ue,onClick:Ze,onDoubleClick:Xe,onKeyDown:_?Oe:void 0,tabIndex:_?0:void 0,role:_?"button":void 0,"aria-describedby":X?void 0:`${UH}-${G}`,"aria-label":J},he.createElement(bSe,{value:n},he.createElement(t,{id:n,data:s,type:r,xPos:i,yPos:a,selected:h,isConnectable:T,sourcePosition:M,targetPosition:L,dragging:He,dragHandle:Q,zIndex:U})))};return e.displayName="NodeWrapper",b.memo(e)};const lke=t=>{const e=t.getNodes().filter(n=>n.selected);return{...By(e,t.nodeOrigin),transformString:`translate(${t.transform[0]}px,${t.transform[1]}px) scale(${t.transform[2]})`,userSelectionActive:t.userSelectionActive}};function oke({onSelectionContextMenu:t,noPanClassName:e,disableKeyboardA11y:n}){const r=ns(),{width:s,height:i,x:a,y:o,transformString:c,userSelectionActive:h}=er(lke,os),f=rV(),m=b.useRef(null);if(b.useEffect(()=>{n||m.current?.focus({preventScroll:!0})},[n]),nV({nodeRef:m}),h||!s||!i)return null;const g=t?y=>{const w=r.getState().getNodes().filter(S=>S.selected);t(y,w)}:void 0,x=y=>{Object.prototype.hasOwnProperty.call(hh,y.key)&&f({x:hh[y.key].x,y:hh[y.key].y,isShiftPressed:y.shiftKey})};return he.createElement("div",{className:Ss(["react-flow__nodesselection","react-flow__container",e]),style:{transform:c}},he.createElement("div",{ref:m,className:"react-flow__nodesselection-rect",onContextMenu:g,tabIndex:n?void 0:-1,onKeyDown:n?void 0:x,style:{width:s,height:i,top:o,left:a}}))}var cke=b.memo(oke);const uke=t=>t.nodesSelectionActive,sV=({children:t,onPaneClick:e,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:s,onPaneContextMenu:i,onPaneScroll:a,deleteKeyCode:o,onMove:c,onMoveStart:h,onMoveEnd:f,selectionKeyCode:m,selectionOnDrag:g,selectionMode:x,onSelectionStart:y,onSelectionEnd:w,multiSelectionKeyCode:S,panActivationKeyCode:k,zoomActivationKeyCode:N,elementsSelectable:C,zoomOnScroll:T,zoomOnPinch:_,panOnScroll:E,panOnScrollSpeed:M,panOnScrollMode:L,zoomOnDoubleClick:P,panOnDrag:I,defaultViewport:Q,translateExtent:U,minZoom:ee,maxZoom:z,preventScrolling:H,onSelectionContextMenu:B,noWheelClassName:X,noPanClassName:J,disableKeyboardA11y:G})=>{const R=er(uke),se=T0(m),W=T0(k),F=W||I,V=W||E,te=se||g&&F!==!0;return XSe({deleteKeyCode:o,multiSelectionKeyCode:S}),he.createElement(JSe,{onMove:c,onMoveStart:h,onMoveEnd:f,onPaneContextMenu:i,elementsSelectable:C,zoomOnScroll:T,zoomOnPinch:_,panOnScroll:V,panOnScrollSpeed:M,panOnScrollMode:L,zoomOnDoubleClick:P,panOnDrag:!se&&F,defaultViewport:Q,translateExtent:U,minZoom:ee,maxZoom:z,zoomActivationKeyCode:N,preventScrolling:H,noWheelClassName:X,noPanClassName:J},he.createElement(JH,{onSelectionStart:y,onSelectionEnd:w,onPaneClick:e,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:s,onPaneContextMenu:i,onPaneScroll:a,panOnDrag:F,isSelecting:!!te,selectionMode:x},t,R&&he.createElement(cke,{onSelectionContextMenu:B,noPanClassName:J,disableKeyboardA11y:G})))};sV.displayName="FlowRenderer";var dke=b.memo(sV);function hke(t){return er(b.useCallback(n=>t?RH(n.nodeInternals,{x:0,y:0,width:n.width,height:n.height},n.transform,!0):n.getNodes(),[t]))}function fke(t){const e={input:fm(t.input||$H),default:fm(t.default||Mk),output:fm(t.output||HH),group:fm(t.group||kO)},n={},r=Object.keys(t).filter(s=>!["input","default","output","group"].includes(s)).reduce((s,i)=>(s[i]=fm(t[i]||Mk),s),n);return{...e,...r}}const mke=({x:t,y:e,width:n,height:r,origin:s})=>!n||!r?{x:t,y:e}:s[0]<0||s[1]<0||s[0]>1||s[1]>1?{x:t,y:e}:{x:t-n*s[0],y:e-r*s[1]},pke=t=>({nodesDraggable:t.nodesDraggable,nodesConnectable:t.nodesConnectable,nodesFocusable:t.nodesFocusable,elementsSelectable:t.elementsSelectable,updateNodeDimensions:t.updateNodeDimensions,onError:t.onError}),iV=t=>{const{nodesDraggable:e,nodesConnectable:n,nodesFocusable:r,elementsSelectable:s,updateNodeDimensions:i,onError:a}=er(pke,os),o=hke(t.onlyRenderVisibleElements),c=b.useRef(),h=b.useMemo(()=>{if(typeof ResizeObserver>"u")return null;const f=new ResizeObserver(m=>{const g=m.map(x=>({id:x.target.getAttribute("data-id"),nodeElement:x.target,forceUpdate:!0}));i(g)});return c.current=f,f},[]);return b.useEffect(()=>()=>{c?.current?.disconnect()},[]),he.createElement("div",{className:"react-flow__nodes",style:OO},o.map(f=>{let m=f.type||"default";t.nodeTypes[m]||(a?.("003",bo.error003(m)),m="default");const g=t.nodeTypes[m]||t.nodeTypes.default,x=!!(f.draggable||e&&typeof f.draggable>"u"),y=!!(f.selectable||s&&typeof f.selectable>"u"),w=!!(f.connectable||n&&typeof f.connectable>"u"),S=!!(f.focusable||r&&typeof f.focusable>"u"),k=t.nodeExtent?xO(f.positionAbsolute,t.nodeExtent):f.positionAbsolute,N=k?.x??0,C=k?.y??0,T=mke({x:N,y:C,width:f.width??0,height:f.height??0,origin:t.nodeOrigin});return he.createElement(g,{key:f.id,id:f.id,className:f.className,style:f.style,type:m,data:f.data,sourcePosition:f.sourcePosition||mt.Bottom,targetPosition:f.targetPosition||mt.Top,hidden:f.hidden,xPos:N,yPos:C,xPosOrigin:T.x,yPosOrigin:T.y,selectNodesOnDrag:t.selectNodesOnDrag,onClick:t.onNodeClick,onMouseEnter:t.onNodeMouseEnter,onMouseMove:t.onNodeMouseMove,onMouseLeave:t.onNodeMouseLeave,onContextMenu:t.onNodeContextMenu,onDoubleClick:t.onNodeDoubleClick,selected:!!f.selected,isDraggable:x,isSelectable:y,isConnectable:w,isFocusable:S,resizeObserver:h,dragHandle:f.dragHandle,zIndex:f[Sr]?.z??0,isParent:!!f[Sr]?.isParent,noDragClassName:t.noDragClassName,noPanClassName:t.noPanClassName,initialized:!!f.width&&!!f.height,rfId:t.rfId,disableKeyboardA11y:t.disableKeyboardA11y,ariaLabel:f.ariaLabel,hasHandleBounds:!!f[Sr]?.handleBounds})}))};iV.displayName="NodeRenderer";var gke=b.memo(iV);const xke=(t,e,n)=>n===mt.Left?t-e:n===mt.Right?t+e:t,vke=(t,e,n)=>n===mt.Top?t-e:n===mt.Bottom?t+e:t,uA="react-flow__edgeupdater",dA=({position:t,centerX:e,centerY:n,radius:r=10,onMouseDown:s,onMouseEnter:i,onMouseOut:a,type:o})=>he.createElement("circle",{onMouseDown:s,onMouseEnter:i,onMouseOut:a,className:Ss([uA,`${uA}-${o}`]),cx:xke(e,r,t),cy:vke(n,r,t),r,stroke:"transparent",fill:"transparent"}),yke=()=>!0;var zd=t=>{const e=({id:n,className:r,type:s,data:i,onClick:a,onEdgeDoubleClick:o,selected:c,animated:h,label:f,labelStyle:m,labelShowBg:g,labelBgStyle:x,labelBgPadding:y,labelBgBorderRadius:w,style:S,source:k,target:N,sourceX:C,sourceY:T,targetX:_,targetY:E,sourcePosition:M,targetPosition:L,elementsSelectable:P,hidden:I,sourceHandleId:Q,targetHandleId:U,onContextMenu:ee,onMouseEnter:z,onMouseMove:H,onMouseLeave:B,reconnectRadius:X,onReconnect:J,onReconnectStart:G,onReconnectEnd:R,markerEnd:se,markerStart:W,rfId:F,ariaLabel:V,isFocusable:te,isReconnectable:ne,pathOptions:K,interactionWidth:ie,disableKeyboardA11y:re})=>{const ae=b.useRef(null),[_e,Ue]=b.useState(!1),[Xe,Ze]=b.useState(!1),Oe=ns(),He=b.useMemo(()=>`url('#${Ek(W,F)}')`,[W,F]),Ve=b.useMemo(()=>`url('#${Ek(se,F)}')`,[se,F]);if(I)return null;const Be=Tt=>{const{edges:ke,addSelectedEdges:Te,unselectNodesAndEdges:qe,multiSelectionActive:Rt}=Oe.getState(),At=ke.find(vr=>vr.id===n);At&&(P&&(Oe.setState({nodesSelectionActive:!1}),At.selected&&Rt?(qe({nodes:[],edges:[At]}),ae.current?.blur()):Te([n])),a&&a(Tt,At))},ut=dm(n,Oe.getState,o),rt=dm(n,Oe.getState,ee),rn=dm(n,Oe.getState,z),Rn=dm(n,Oe.getState,H),Tn=dm(n,Oe.getState,B),Mt=(Tt,ke)=>{if(Tt.button!==0)return;const{edges:Te,isValidConnection:qe}=Oe.getState(),Rt=ke?N:k,At=(ke?U:Q)||null,vr=ke?"target":"source",ft=qe||yke,mn=ke,gt=Te.find(it=>it.id===n);Ze(!0),G?.(Tt,gt,vr);const Nt=it=>{Ze(!1),R?.(it,gt,vr)};IH({event:Tt,handleId:At,nodeId:Rt,onConnect:it=>J?.(gt,it),isTarget:mn,getState:Oe.getState,setState:Oe.setState,isValidConnection:ft,edgeUpdaterType:vr,onReconnectEnd:Nt})},vt=Tt=>Mt(Tt,!0),Ce=Tt=>Mt(Tt,!1),Le=()=>Ue(!0),Ge=()=>Ue(!1),lt=!P&&!a,jt=Tt=>{if(!re&&NH.includes(Tt.key)&&P){const{unselectNodesAndEdges:ke,addSelectedEdges:Te,edges:qe}=Oe.getState();Tt.key==="Escape"?(ae.current?.blur(),ke({edges:[qe.find(At=>At.id===n)]})):Te([n])}};return he.createElement("g",{className:Ss(["react-flow__edge",`react-flow__edge-${s}`,r,{selected:c,animated:h,inactive:lt,updating:_e}]),onClick:Be,onDoubleClick:ut,onContextMenu:rt,onMouseEnter:rn,onMouseMove:Rn,onMouseLeave:Tn,onKeyDown:te?jt:void 0,tabIndex:te?0:void 0,role:te?"button":"img","data-testid":`rf__edge-${n}`,"aria-label":V===null?void 0:V||`Edge from ${k} to ${N}`,"aria-describedby":te?`${WH}-${F}`:void 0,ref:ae},!Xe&&he.createElement(t,{id:n,source:k,target:N,selected:c,animated:h,label:f,labelStyle:m,labelShowBg:g,labelBgStyle:x,labelBgPadding:y,labelBgBorderRadius:w,data:i,style:S,sourceX:C,sourceY:T,targetX:_,targetY:E,sourcePosition:M,targetPosition:L,sourceHandleId:Q,targetHandleId:U,markerStart:He,markerEnd:Ve,pathOptions:K,interactionWidth:ie}),ne&&he.createElement(he.Fragment,null,(ne==="source"||ne===!0)&&he.createElement(dA,{position:M,centerX:C,centerY:T,radius:X,onMouseDown:vt,onMouseEnter:Le,onMouseOut:Ge,type:"source"}),(ne==="target"||ne===!0)&&he.createElement(dA,{position:L,centerX:_,centerY:E,radius:X,onMouseDown:Ce,onMouseEnter:Le,onMouseOut:Ge,type:"target"})))};return e.displayName="EdgeWrapper",b.memo(e)};function bke(t){const e={default:zd(t.default||wv),straight:zd(t.bezier||bO),step:zd(t.step||yO),smoothstep:zd(t.step||Iy),simplebezier:zd(t.simplebezier||vO)},n={},r=Object.keys(t).filter(s=>!["default","bezier"].includes(s)).reduce((s,i)=>(s[i]=zd(t[i]||wv),s),n);return{...e,...r}}function hA(t,e,n=null){const r=(n?.x||0)+e.x,s=(n?.y||0)+e.y,i=n?.width||e.width,a=n?.height||e.height;switch(t){case mt.Top:return{x:r+i/2,y:s};case mt.Right:return{x:r+i,y:s+a/2};case mt.Bottom:return{x:r+i/2,y:s+a};case mt.Left:return{x:r,y:s+a/2}}}function fA(t,e){return t?t.length===1||!e?t[0]:e&&t.find(n=>n.id===e)||null:null}const wke=(t,e,n,r,s,i)=>{const a=hA(n,t,e),o=hA(i,r,s);return{sourceX:a.x,sourceY:a.y,targetX:o.x,targetY:o.y}};function Ske({sourcePos:t,targetPos:e,sourceWidth:n,sourceHeight:r,targetWidth:s,targetHeight:i,width:a,height:o,transform:c}){const h={x:Math.min(t.x,e.x),y:Math.min(t.y,e.y),x2:Math.max(t.x+n,e.x+s),y2:Math.max(t.y+r,e.y+i)};h.x===h.x2&&(h.x2+=1),h.y===h.y2&&(h.y2+=1);const f=N0({x:(0-c[0])/c[2],y:(0-c[1])/c[2],width:a/c[2],height:o/c[2]}),m=Math.max(0,Math.min(f.x2,h.x2)-Math.max(f.x,h.x)),g=Math.max(0,Math.min(f.y2,h.y2)-Math.max(f.y,h.y));return Math.ceil(m*g)>0}function mA(t){const e=t?.[Sr]?.handleBounds||null,n=e&&t?.width&&t?.height&&typeof t?.positionAbsolute?.x<"u"&&typeof t?.positionAbsolute?.y<"u";return[{x:t?.positionAbsolute?.x||0,y:t?.positionAbsolute?.y||0,width:t?.width||0,height:t?.height||0},e,!!n]}const kke=[{level:0,isMaxLevel:!0,edges:[]}];function jke(t,e,n=!1){let r=-1;const s=t.reduce((a,o)=>{const c=na(o.zIndex);let h=c?o.zIndex:0;if(n){const f=e.get(o.target),m=e.get(o.source),g=o.selected||f?.selected||m?.selected,x=Math.max(m?.[Sr]?.z||0,f?.[Sr]?.z||0,1e3);h=(c?o.zIndex:0)+(g?x:0)}return a[h]?a[h].push(o):a[h]=[o],r=h>r?h:r,a},{}),i=Object.entries(s).map(([a,o])=>{const c=+a;return{edges:o,level:c,isMaxLevel:c===r}});return i.length===0?kke:i}function Oke(t,e,n){const r=er(b.useCallback(s=>t?s.edges.filter(i=>{const a=e.get(i.source),o=e.get(i.target);return a?.width&&a?.height&&o?.width&&o?.height&&Ske({sourcePos:a.positionAbsolute||{x:0,y:0},targetPos:o.positionAbsolute||{x:0,y:0},sourceWidth:a.width,sourceHeight:a.height,targetWidth:o.width,targetHeight:o.height,width:s.width,height:s.height,transform:s.transform})}):s.edges,[t,e]));return jke(r,e,n)}const Nke=({color:t="none",strokeWidth:e=1})=>he.createElement("polyline",{style:{stroke:t,strokeWidth:e},strokeLinecap:"round",strokeLinejoin:"round",fill:"none",points:"-5,-4 0,0 -5,4"}),Cke=({color:t="none",strokeWidth:e=1})=>he.createElement("polyline",{style:{stroke:t,fill:t,strokeWidth:e},strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"}),pA={[bv.Arrow]:Nke,[bv.ArrowClosed]:Cke};function Tke(t){const e=ns();return b.useMemo(()=>Object.prototype.hasOwnProperty.call(pA,t)?pA[t]:(e.getState().onError?.("009",bo.error009(t)),null),[t])}const Eke=({id:t,type:e,color:n,width:r=12.5,height:s=12.5,markerUnits:i="strokeWidth",strokeWidth:a,orient:o="auto-start-reverse"})=>{const c=Tke(e);return c?he.createElement("marker",{className:"react-flow__arrowhead",id:t,markerWidth:`${r}`,markerHeight:`${s}`,viewBox:"-10 -10 20 20",markerUnits:i,orient:o,refX:"0",refY:"0"},he.createElement(c,{color:n,strokeWidth:a})):null},_ke=({defaultColor:t,rfId:e})=>n=>{const r=[];return n.edges.reduce((s,i)=>([i.markerStart,i.markerEnd].forEach(a=>{if(a&&typeof a=="object"){const o=Ek(a,e);r.includes(o)||(s.push({id:o,color:a.color||t,...a}),r.push(o))}}),s),[]).sort((s,i)=>s.id.localeCompare(i.id))},aV=({defaultColor:t,rfId:e})=>{const n=er(b.useCallback(_ke({defaultColor:t,rfId:e}),[t,e]),(r,s)=>!(r.length!==s.length||r.some((i,a)=>i.id!==s[a].id)));return he.createElement("defs",null,n.map(r=>he.createElement(Eke,{id:r.id,key:r.id,type:r.type,color:r.color,width:r.width,height:r.height,markerUnits:r.markerUnits,strokeWidth:r.strokeWidth,orient:r.orient})))};aV.displayName="MarkerDefinitions";var Mke=b.memo(aV);const Ake=t=>({nodesConnectable:t.nodesConnectable,edgesFocusable:t.edgesFocusable,edgesUpdatable:t.edgesUpdatable,elementsSelectable:t.elementsSelectable,width:t.width,height:t.height,connectionMode:t.connectionMode,nodeInternals:t.nodeInternals,onError:t.onError}),lV=({defaultMarkerColor:t,onlyRenderVisibleElements:e,elevateEdgesOnSelect:n,rfId:r,edgeTypes:s,noPanClassName:i,onEdgeContextMenu:a,onEdgeMouseEnter:o,onEdgeMouseMove:c,onEdgeMouseLeave:h,onEdgeClick:f,onEdgeDoubleClick:m,onReconnect:g,onReconnectStart:x,onReconnectEnd:y,reconnectRadius:w,children:S,disableKeyboardA11y:k})=>{const{edgesFocusable:N,edgesUpdatable:C,elementsSelectable:T,width:_,height:E,connectionMode:M,nodeInternals:L,onError:P}=er(Ake,os),I=Oke(e,L,n);return _?he.createElement(he.Fragment,null,I.map(({level:Q,edges:U,isMaxLevel:ee})=>he.createElement("svg",{key:Q,style:{zIndex:Q},width:_,height:E,className:"react-flow__edges react-flow__container"},ee&&he.createElement(Mke,{defaultColor:t,rfId:r}),he.createElement("g",null,U.map(z=>{const[H,B,X]=mA(L.get(z.source)),[J,G,R]=mA(L.get(z.target));if(!X||!R)return null;let se=z.type||"default";s[se]||(P?.("011",bo.error011(se)),se="default");const W=s[se]||s.default,F=M===qu.Strict?G.target:(G.target??[]).concat(G.source??[]),V=fA(B.source,z.sourceHandle),te=fA(F,z.targetHandle),ne=V?.position||mt.Bottom,K=te?.position||mt.Top,ie=!!(z.focusable||N&&typeof z.focusable>"u"),re=z.reconnectable||z.updatable,ae=typeof g<"u"&&(re||C&&typeof re>"u");if(!V||!te)return P?.("008",bo.error008(V,z)),null;const{sourceX:_e,sourceY:Ue,targetX:Xe,targetY:Ze}=wke(H,V,ne,J,te,K);return he.createElement(W,{key:z.id,id:z.id,className:Ss([z.className,i]),type:se,data:z.data,selected:!!z.selected,animated:!!z.animated,hidden:!!z.hidden,label:z.label,labelStyle:z.labelStyle,labelShowBg:z.labelShowBg,labelBgStyle:z.labelBgStyle,labelBgPadding:z.labelBgPadding,labelBgBorderRadius:z.labelBgBorderRadius,style:z.style,source:z.source,target:z.target,sourceHandleId:z.sourceHandle,targetHandleId:z.targetHandle,markerEnd:z.markerEnd,markerStart:z.markerStart,sourceX:_e,sourceY:Ue,targetX:Xe,targetY:Ze,sourcePosition:ne,targetPosition:K,elementsSelectable:T,onContextMenu:a,onMouseEnter:o,onMouseMove:c,onMouseLeave:h,onClick:f,onEdgeDoubleClick:m,onReconnect:g,onReconnectStart:x,onReconnectEnd:y,reconnectRadius:w,rfId:r,ariaLabel:z.ariaLabel,isFocusable:ie,isReconnectable:ae,pathOptions:"pathOptions"in z?z.pathOptions:void 0,interactionWidth:z.interactionWidth,disableKeyboardA11y:k})})))),S):null};lV.displayName="EdgeRenderer";var Rke=b.memo(lV);const Dke=t=>`translate(${t.transform[0]}px,${t.transform[1]}px) scale(${t.transform[2]})`;function zke({children:t}){const e=er(Dke);return he.createElement("div",{className:"react-flow__viewport react-flow__container",style:{transform:e}},t)}function Pke(t){const e=jO(),n=b.useRef(!1);b.useEffect(()=>{!n.current&&e.viewportInitialized&&t&&(setTimeout(()=>t(e),1),n.current=!0)},[t,e.viewportInitialized])}const Lke={[mt.Left]:mt.Right,[mt.Right]:mt.Left,[mt.Top]:mt.Bottom,[mt.Bottom]:mt.Top},oV=({nodeId:t,handleType:e,style:n,type:r=uc.Bezier,CustomComponent:s,connectionStatus:i})=>{const{fromNode:a,handleId:o,toX:c,toY:h,connectionMode:f}=er(b.useCallback(E=>({fromNode:E.nodeInternals.get(t),handleId:E.connectionHandleId,toX:(E.connectionPosition.x-E.transform[0])/E.transform[2],toY:(E.connectionPosition.y-E.transform[1])/E.transform[2],connectionMode:E.connectionMode}),[t]),os),m=a?.[Sr]?.handleBounds;let g=m?.[e];if(f===qu.Loose&&(g=g||m?.[e==="source"?"target":"source"]),!a||!g)return null;const x=o?g.find(E=>E.id===o):g[0],y=x?x.x+x.width/2:(a.width??0)/2,w=x?x.y+x.height/2:a.height??0,S=(a.positionAbsolute?.x??0)+y,k=(a.positionAbsolute?.y??0)+w,N=x?.position,C=N?Lke[N]:null;if(!N||!C)return null;if(s)return he.createElement(s,{connectionLineType:r,connectionLineStyle:n,fromNode:a,fromHandle:x,fromX:S,fromY:k,toX:c,toY:h,fromPosition:N,toPosition:C,connectionStatus:i});let T="";const _={sourceX:S,sourceY:k,sourcePosition:N,targetX:c,targetY:h,targetPosition:C};return r===uc.Bezier?[T]=MH(_):r===uc.Step?[T]=Tk({..._,borderRadius:0}):r===uc.SmoothStep?[T]=Tk(_):r===uc.SimpleBezier?[T]=_H(_):T=`M${S},${k} ${c},${h}`,he.createElement("path",{d:T,fill:"none",className:"react-flow__connection-path",style:n})};oV.displayName="ConnectionLine";const Ike=t=>({nodeId:t.connectionNodeId,handleType:t.connectionHandleType,nodesConnectable:t.nodesConnectable,connectionStatus:t.connectionStatus,width:t.width,height:t.height});function Bke({containerStyle:t,style:e,type:n,component:r}){const{nodeId:s,handleType:i,nodesConnectable:a,width:o,height:c,connectionStatus:h}=er(Ike,os);return!(s&&i&&o&&a)?null:he.createElement("svg",{style:t,width:o,height:c,className:"react-flow__edges react-flow__connectionline react-flow__container"},he.createElement("g",{className:Ss(["react-flow__connection",h])},he.createElement(oV,{nodeId:s,handleType:i,style:e,type:n,CustomComponent:r,connectionStatus:h})))}function gA(t,e){return b.useRef(null),ns(),b.useMemo(()=>e(t),[t])}const cV=({nodeTypes:t,edgeTypes:e,onMove:n,onMoveStart:r,onMoveEnd:s,onInit:i,onNodeClick:a,onEdgeClick:o,onNodeDoubleClick:c,onEdgeDoubleClick:h,onNodeMouseEnter:f,onNodeMouseMove:m,onNodeMouseLeave:g,onNodeContextMenu:x,onSelectionContextMenu:y,onSelectionStart:w,onSelectionEnd:S,connectionLineType:k,connectionLineStyle:N,connectionLineComponent:C,connectionLineContainerStyle:T,selectionKeyCode:_,selectionOnDrag:E,selectionMode:M,multiSelectionKeyCode:L,panActivationKeyCode:P,zoomActivationKeyCode:I,deleteKeyCode:Q,onlyRenderVisibleElements:U,elementsSelectable:ee,selectNodesOnDrag:z,defaultViewport:H,translateExtent:B,minZoom:X,maxZoom:J,preventScrolling:G,defaultMarkerColor:R,zoomOnScroll:se,zoomOnPinch:W,panOnScroll:F,panOnScrollSpeed:V,panOnScrollMode:te,zoomOnDoubleClick:ne,panOnDrag:K,onPaneClick:ie,onPaneMouseEnter:re,onPaneMouseMove:ae,onPaneMouseLeave:_e,onPaneScroll:Ue,onPaneContextMenu:Xe,onEdgeContextMenu:Ze,onEdgeMouseEnter:Oe,onEdgeMouseMove:He,onEdgeMouseLeave:Ve,onReconnect:Be,onReconnectStart:ut,onReconnectEnd:rt,reconnectRadius:rn,noDragClassName:Rn,noWheelClassName:Tn,noPanClassName:Mt,elevateEdgesOnSelect:vt,disableKeyboardA11y:Ce,nodeOrigin:Le,nodeExtent:Ge,rfId:lt})=>{const jt=gA(t,fke),Tt=gA(e,bke);return Pke(i),he.createElement(dke,{onPaneClick:ie,onPaneMouseEnter:re,onPaneMouseMove:ae,onPaneMouseLeave:_e,onPaneContextMenu:Xe,onPaneScroll:Ue,deleteKeyCode:Q,selectionKeyCode:_,selectionOnDrag:E,selectionMode:M,onSelectionStart:w,onSelectionEnd:S,multiSelectionKeyCode:L,panActivationKeyCode:P,zoomActivationKeyCode:I,elementsSelectable:ee,onMove:n,onMoveStart:r,onMoveEnd:s,zoomOnScroll:se,zoomOnPinch:W,zoomOnDoubleClick:ne,panOnScroll:F,panOnScrollSpeed:V,panOnScrollMode:te,panOnDrag:K,defaultViewport:H,translateExtent:B,minZoom:X,maxZoom:J,onSelectionContextMenu:y,preventScrolling:G,noDragClassName:Rn,noWheelClassName:Tn,noPanClassName:Mt,disableKeyboardA11y:Ce},he.createElement(zke,null,he.createElement(Rke,{edgeTypes:Tt,onEdgeClick:o,onEdgeDoubleClick:h,onlyRenderVisibleElements:U,onEdgeContextMenu:Ze,onEdgeMouseEnter:Oe,onEdgeMouseMove:He,onEdgeMouseLeave:Ve,onReconnect:Be,onReconnectStart:ut,onReconnectEnd:rt,reconnectRadius:rn,defaultMarkerColor:R,noPanClassName:Mt,elevateEdgesOnSelect:!!vt,disableKeyboardA11y:Ce,rfId:lt},he.createElement(Bke,{style:N,type:k,component:C,containerStyle:T})),he.createElement("div",{className:"react-flow__edgelabel-renderer"}),he.createElement(gke,{nodeTypes:jt,onNodeClick:a,onNodeDoubleClick:c,onNodeMouseEnter:f,onNodeMouseMove:m,onNodeMouseLeave:g,onNodeContextMenu:x,selectNodesOnDrag:z,onlyRenderVisibleElements:U,noPanClassName:Mt,noDragClassName:Rn,disableKeyboardA11y:Ce,nodeOrigin:Le,nodeExtent:Ge,rfId:lt})))};cV.displayName="GraphView";var qke=b.memo(cV);const Rk=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],nc={rfId:"1",width:0,height:0,transform:[0,0,1],nodeInternals:new Map,edges:[],onNodesChange:null,onEdgesChange:null,hasDefaultNodes:!1,hasDefaultEdges:!1,d3Zoom:null,d3Selection:null,d3ZoomHandler:void 0,minZoom:.5,maxZoom:2,translateExtent:Rk,nodeExtent:Rk,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionNodeId:null,connectionHandleId:null,connectionHandleType:"source",connectionPosition:{x:0,y:0},connectionStatus:null,connectionMode:qu.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:[0,0],nodeDragThreshold:0,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesUpdatable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,fitViewOnInit:!1,fitViewOnInitDone:!1,fitViewOnInitOptions:void 0,onSelectionChange:[],multiSelectionActive:!1,connectionStartHandle:null,connectionEndHandle:null,connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,connectionRadius:20,onError:mSe,isValidConnection:void 0},Fke=()=>t4e((t,e)=>({...nc,setNodes:n=>{const{nodeInternals:r,nodeOrigin:s,elevateNodesOnSelect:i}=e();t({nodeInternals:$4(n,r,s,i)})},getNodes:()=>Array.from(e().nodeInternals.values()),setEdges:n=>{const{defaultEdgeOptions:r={}}=e();t({edges:n.map(s=>({...r,...s}))})},setDefaultNodesAndEdges:(n,r)=>{const s=typeof n<"u",i=typeof r<"u",a=s?$4(n,new Map,e().nodeOrigin,e().elevateNodesOnSelect):new Map;t({nodeInternals:a,edges:i?r:[],hasDefaultNodes:s,hasDefaultEdges:i})},updateNodeDimensions:n=>{const{onNodesChange:r,nodeInternals:s,fitViewOnInit:i,fitViewOnInitDone:a,fitViewOnInitOptions:o,domNode:c,nodeOrigin:h}=e(),f=c?.querySelector(".react-flow__viewport");if(!f)return;const m=window.getComputedStyle(f),{m22:g}=new window.DOMMatrixReadOnly(m.transform),x=n.reduce((w,S)=>{const k=s.get(S.id);if(k?.hidden)s.set(k.id,{...k,[Sr]:{...k[Sr],handleBounds:void 0}});else if(k){const N=gO(S.nodeElement);!!(N.width&&N.height&&(k.width!==N.width||k.height!==N.height||S.forceUpdate))&&(s.set(k.id,{...k,[Sr]:{...k[Sr],handleBounds:{source:cA(".source",S.nodeElement,g,h),target:cA(".target",S.nodeElement,g,h)}},...N}),w.push({id:k.id,type:"dimensions",dimensions:N}))}return w},[]);XH(s,h);const y=a||i&&!a&&YH(e,{initial:!0,...o});t({nodeInternals:new Map(s),fitViewOnInitDone:y}),x?.length>0&&r?.(x)},updateNodePositions:(n,r=!0,s=!1)=>{const{triggerNodeChanges:i}=e(),a=n.map(o=>{const c={id:o.id,type:"position",dragging:s};return r&&(c.positionAbsolute=o.positionAbsolute,c.position=o.position),c});i(a)},triggerNodeChanges:n=>{const{onNodesChange:r,nodeInternals:s,hasDefaultNodes:i,nodeOrigin:a,getNodes:o,elevateNodesOnSelect:c}=e();if(n?.length){if(i){const h=ZH(n,o()),f=$4(h,s,a,c);t({nodeInternals:f})}r?.(n)}},addSelectedNodes:n=>{const{multiSelectionActive:r,edges:s,getNodes:i}=e();let a,o=null;r?a=n.map(c=>oc(c,!0)):(a=Kd(i(),n),o=Kd(s,[])),$x({changedNodes:a,changedEdges:o,get:e,set:t})},addSelectedEdges:n=>{const{multiSelectionActive:r,edges:s,getNodes:i}=e();let a,o=null;r?a=n.map(c=>oc(c,!0)):(a=Kd(s,n),o=Kd(i(),[])),$x({changedNodes:o,changedEdges:a,get:e,set:t})},unselectNodesAndEdges:({nodes:n,edges:r}={})=>{const{edges:s,getNodes:i}=e(),a=n||i(),o=r||s,c=a.map(f=>(f.selected=!1,oc(f.id,!1))),h=o.map(f=>oc(f.id,!1));$x({changedNodes:c,changedEdges:h,get:e,set:t})},setMinZoom:n=>{const{d3Zoom:r,maxZoom:s}=e();r?.scaleExtent([n,s]),t({minZoom:n})},setMaxZoom:n=>{const{d3Zoom:r,minZoom:s}=e();r?.scaleExtent([s,n]),t({maxZoom:n})},setTranslateExtent:n=>{e().d3Zoom?.translateExtent(n),t({translateExtent:n})},resetSelectedElements:()=>{const{edges:n,getNodes:r}=e(),i=r().filter(o=>o.selected).map(o=>oc(o.id,!1)),a=n.filter(o=>o.selected).map(o=>oc(o.id,!1));$x({changedNodes:i,changedEdges:a,get:e,set:t})},setNodeExtent:n=>{const{nodeInternals:r}=e();r.forEach(s=>{s.positionAbsolute=xO(s.position,n)}),t({nodeExtent:n,nodeInternals:new Map(r)})},panBy:n=>{const{transform:r,width:s,height:i,d3Zoom:a,d3Selection:o,translateExtent:c}=e();if(!a||!o||!n.x&&!n.y)return!1;const h=ho.translate(r[0]+n.x,r[1]+n.y).scale(r[2]),f=[[0,0],[s,i]],m=a?.constrain()(h,f,c);return a.transform(o,m),r[0]!==m.x||r[1]!==m.y||r[2]!==m.k},cancelConnection:()=>t({connectionNodeId:nc.connectionNodeId,connectionHandleId:nc.connectionHandleId,connectionHandleType:nc.connectionHandleType,connectionStatus:nc.connectionStatus,connectionStartHandle:nc.connectionStartHandle,connectionEndHandle:nc.connectionEndHandle}),reset:()=>t({...nc})}),Object.is),uV=({children:t})=>{const e=b.useRef(null);return e.current||(e.current=Fke()),he.createElement(lSe,{value:e.current},t)};uV.displayName="ReactFlowProvider";const dV=({children:t})=>b.useContext(Py)?he.createElement(he.Fragment,null,t):he.createElement(uV,null,t);dV.displayName="ReactFlowWrapper";const $ke={input:$H,default:Mk,output:HH,group:kO},Qke={default:wv,straight:bO,step:yO,smoothstep:Iy,simplebezier:vO},Hke=[0,0],Vke=[15,15],Uke={x:0,y:0,zoom:1},Wke={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0},hV=b.forwardRef(({nodes:t,edges:e,defaultNodes:n,defaultEdges:r,className:s,nodeTypes:i=$ke,edgeTypes:a=Qke,onNodeClick:o,onEdgeClick:c,onInit:h,onMove:f,onMoveStart:m,onMoveEnd:g,onConnect:x,onConnectStart:y,onConnectEnd:w,onClickConnectStart:S,onClickConnectEnd:k,onNodeMouseEnter:N,onNodeMouseMove:C,onNodeMouseLeave:T,onNodeContextMenu:_,onNodeDoubleClick:E,onNodeDragStart:M,onNodeDrag:L,onNodeDragStop:P,onNodesDelete:I,onEdgesDelete:Q,onSelectionChange:U,onSelectionDragStart:ee,onSelectionDrag:z,onSelectionDragStop:H,onSelectionContextMenu:B,onSelectionStart:X,onSelectionEnd:J,connectionMode:G=qu.Strict,connectionLineType:R=uc.Bezier,connectionLineStyle:se,connectionLineComponent:W,connectionLineContainerStyle:F,deleteKeyCode:V="Backspace",selectionKeyCode:te="Shift",selectionOnDrag:ne=!1,selectionMode:K=C0.Full,panActivationKeyCode:ie="Space",multiSelectionKeyCode:re=yv()?"Meta":"Control",zoomActivationKeyCode:ae=yv()?"Meta":"Control",snapToGrid:_e=!1,snapGrid:Ue=Vke,onlyRenderVisibleElements:Xe=!1,selectNodesOnDrag:Ze=!0,nodesDraggable:Oe,nodesConnectable:He,nodesFocusable:Ve,nodeOrigin:Be=Hke,edgesFocusable:ut,edgesUpdatable:rt,elementsSelectable:rn,defaultViewport:Rn=Uke,minZoom:Tn=.5,maxZoom:Mt=2,translateExtent:vt=Rk,preventScrolling:Ce=!0,nodeExtent:Le,defaultMarkerColor:Ge="#b1b1b7",zoomOnScroll:lt=!0,zoomOnPinch:jt=!0,panOnScroll:Tt=!1,panOnScrollSpeed:ke=.5,panOnScrollMode:Te=vu.Free,zoomOnDoubleClick:qe=!0,panOnDrag:Rt=!0,onPaneClick:At,onPaneMouseEnter:vr,onPaneMouseMove:ft,onPaneMouseLeave:mn,onPaneScroll:gt,onPaneContextMenu:Nt,children:Ot,onEdgeContextMenu:it,onEdgeDoubleClick:Vn,onEdgeMouseEnter:jr,onEdgeMouseMove:Or,onEdgeMouseLeave:ge,onEdgeUpdate:ze,onEdgeUpdateStart:Et,onEdgeUpdateEnd:Gt,onReconnect:Mr,onReconnectStart:Wr,onReconnectEnd:Ar,reconnectRadius:Rr=10,edgeUpdaterRadius:ga=10,onNodesChange:mi,onEdgesChange:Ba,noDragClassName:Hs="nodrag",noWheelClassName:Gr="nowheel",noPanClassName:ds="nopan",fitView:No=!1,fitViewOptions:nf,connectOnClick:Uy=!0,attributionPosition:Wy,proOptions:Tp,defaultEdgeOptions:Bc,elevateNodesOnSelect:rf=!0,elevateEdgesOnSelect:Co=!1,disableKeyboardA11y:jl=!1,autoPanOnConnect:qc=!0,autoPanOnNodeDrag:To=!0,connectionRadius:Dr=20,isValidConnection:Ep,onError:_p,style:Ol,id:Nl,nodeDragThreshold:Gy,...Mp},Ap)=>{const sf=Nl||"1";return he.createElement("div",{...Mp,style:{...Ol,...Wke},ref:Ap,className:Ss(["react-flow",s]),"data-testid":"rf__wrapper",id:Nl},he.createElement(dV,null,he.createElement(qke,{onInit:h,onMove:f,onMoveStart:m,onMoveEnd:g,onNodeClick:o,onEdgeClick:c,onNodeMouseEnter:N,onNodeMouseMove:C,onNodeMouseLeave:T,onNodeContextMenu:_,onNodeDoubleClick:E,nodeTypes:i,edgeTypes:a,connectionLineType:R,connectionLineStyle:se,connectionLineComponent:W,connectionLineContainerStyle:F,selectionKeyCode:te,selectionOnDrag:ne,selectionMode:K,deleteKeyCode:V,multiSelectionKeyCode:re,panActivationKeyCode:ie,zoomActivationKeyCode:ae,onlyRenderVisibleElements:Xe,selectNodesOnDrag:Ze,defaultViewport:Rn,translateExtent:vt,minZoom:Tn,maxZoom:Mt,preventScrolling:Ce,zoomOnScroll:lt,zoomOnPinch:jt,zoomOnDoubleClick:qe,panOnScroll:Tt,panOnScrollSpeed:ke,panOnScrollMode:Te,panOnDrag:Rt,onPaneClick:At,onPaneMouseEnter:vr,onPaneMouseMove:ft,onPaneMouseLeave:mn,onPaneScroll:gt,onPaneContextMenu:Nt,onSelectionContextMenu:B,onSelectionStart:X,onSelectionEnd:J,onEdgeContextMenu:it,onEdgeDoubleClick:Vn,onEdgeMouseEnter:jr,onEdgeMouseMove:Or,onEdgeMouseLeave:ge,onReconnect:Mr??ze,onReconnectStart:Wr??Et,onReconnectEnd:Ar??Gt,reconnectRadius:Rr??ga,defaultMarkerColor:Ge,noDragClassName:Hs,noWheelClassName:Gr,noPanClassName:ds,elevateEdgesOnSelect:Co,rfId:sf,disableKeyboardA11y:jl,nodeOrigin:Be,nodeExtent:Le}),he.createElement(LSe,{nodes:t,edges:e,defaultNodes:n,defaultEdges:r,onConnect:x,onConnectStart:y,onConnectEnd:w,onClickConnectStart:S,onClickConnectEnd:k,nodesDraggable:Oe,nodesConnectable:He,nodesFocusable:Ve,edgesFocusable:ut,edgesUpdatable:rt,elementsSelectable:rn,elevateNodesOnSelect:rf,minZoom:Tn,maxZoom:Mt,nodeExtent:Le,onNodesChange:mi,onEdgesChange:Ba,snapToGrid:_e,snapGrid:Ue,connectionMode:G,translateExtent:vt,connectOnClick:Uy,defaultEdgeOptions:Bc,fitView:No,fitViewOptions:nf,onNodesDelete:I,onEdgesDelete:Q,onNodeDragStart:M,onNodeDrag:L,onNodeDragStop:P,onSelectionDrag:z,onSelectionDragStart:ee,onSelectionDragStop:H,noPanClassName:ds,nodeOrigin:Be,rfId:sf,autoPanOnConnect:qc,autoPanOnNodeDrag:To,onError:_p,connectionRadius:Dr,isValidConnection:Ep,nodeDragThreshold:Gy}),he.createElement(zSe,{onSelectionChange:U}),Ot,he.createElement(cSe,{proOptions:Tp,position:Wy}),he.createElement($Se,{rfId:sf,disableKeyboardA11y:jl})))});hV.displayName="ReactFlow";function fV(t){return e=>{const[n,r]=b.useState(e),s=b.useCallback(i=>r(a=>t(i,a)),[]);return[n,r,s]}}const Gke=fV(ZH),Xke=fV(nke),mV=({id:t,x:e,y:n,width:r,height:s,style:i,color:a,strokeColor:o,strokeWidth:c,className:h,borderRadius:f,shapeRendering:m,onClick:g,selected:x})=>{const{background:y,backgroundColor:w}=i||{},S=a||y||w;return he.createElement("rect",{className:Ss(["react-flow__minimap-node",{selected:x},h]),x:e,y:n,rx:f,ry:f,width:r,height:s,fill:S,stroke:o,strokeWidth:c,shapeRendering:m,onClick:g?k=>g(k,t):void 0})};mV.displayName="MiniMapNode";var Yke=b.memo(mV);const Kke=t=>t.nodeOrigin,Zke=t=>t.getNodes().filter(e=>!e.hidden&&e.width&&e.height),U4=t=>t instanceof Function?t:()=>t;function Jke({nodeStrokeColor:t="transparent",nodeColor:e="#e2e2e2",nodeClassName:n="",nodeBorderRadius:r=5,nodeStrokeWidth:s=2,nodeComponent:i=Yke,onClick:a}){const o=er(Zke,os),c=er(Kke),h=U4(e),f=U4(t),m=U4(n),g=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return he.createElement(he.Fragment,null,o.map(x=>{const{x:y,y:w}=Nu(x,c).positionAbsolute;return he.createElement(i,{key:x.id,x:y,y:w,width:x.width,height:x.height,style:x.style,selected:x.selected,className:m(x),color:h(x),borderRadius:r,strokeColor:f(x),strokeWidth:s,shapeRendering:g,onClick:a,id:x.id})}))}var e6e=b.memo(Jke);const t6e=200,n6e=150,r6e=t=>{const e=t.getNodes(),n={x:-t.transform[0]/t.transform[2],y:-t.transform[1]/t.transform[2],width:t.width/t.transform[2],height:t.height/t.transform[2]};return{viewBB:n,boundingRect:e.length>0?hSe(By(e,t.nodeOrigin),n):n,rfId:t.rfId}},s6e="react-flow__minimap-desc";function pV({style:t,className:e,nodeStrokeColor:n="transparent",nodeColor:r="#e2e2e2",nodeClassName:s="",nodeBorderRadius:i=5,nodeStrokeWidth:a=2,nodeComponent:o,maskColor:c="rgb(240, 240, 240, 0.6)",maskStrokeColor:h="none",maskStrokeWidth:f=1,position:m="bottom-right",onClick:g,onNodeClick:x,pannable:y=!1,zoomable:w=!1,ariaLabel:S="React Flow mini map",inversePan:k=!1,zoomStep:N=10,offsetScale:C=5}){const T=ns(),_=b.useRef(null),{boundingRect:E,viewBB:M,rfId:L}=er(r6e,os),P=t?.width??t6e,I=t?.height??n6e,Q=E.width/P,U=E.height/I,ee=Math.max(Q,U),z=ee*P,H=ee*I,B=C*ee,X=E.x-(z-E.width)/2-B,J=E.y-(H-E.height)/2-B,G=z+B*2,R=H+B*2,se=`${s6e}-${L}`,W=b.useRef(0);W.current=ee,b.useEffect(()=>{if(_.current){const te=Ki(_.current),ne=re=>{const{transform:ae,d3Selection:_e,d3Zoom:Ue}=T.getState();if(re.sourceEvent.type!=="wheel"||!_e||!Ue)return;const Xe=-re.sourceEvent.deltaY*(re.sourceEvent.deltaMode===1?.05:re.sourceEvent.deltaMode?1:.002)*N,Ze=ae[2]*Math.pow(2,Xe);Ue.scaleTo(_e,Ze)},K=re=>{const{transform:ae,d3Selection:_e,d3Zoom:Ue,translateExtent:Xe,width:Ze,height:Oe}=T.getState();if(re.sourceEvent.type!=="mousemove"||!_e||!Ue)return;const He=W.current*Math.max(1,ae[2])*(k?-1:1),Ve={x:ae[0]-re.sourceEvent.movementX*He,y:ae[1]-re.sourceEvent.movementY*He},Be=[[0,0],[Ze,Oe]],ut=ho.translate(Ve.x,Ve.y).scale(ae[2]),rt=Ue.constrain()(ut,Be,Xe);Ue.transform(_e,rt)},ie=bH().on("zoom",y?K:null).on("zoom.wheel",w?ne:null);return te.call(ie),()=>{te.on("zoom",null)}}},[y,w,k,N]);const F=g?te=>{const ne=ka(te);g(te,{x:ne[0],y:ne[1]})}:void 0,V=x?(te,ne)=>{const K=T.getState().nodeInternals.get(ne);x(te,K)}:void 0;return he.createElement(Ly,{position:m,style:t,className:Ss(["react-flow__minimap",e]),"data-testid":"rf__minimap"},he.createElement("svg",{width:P,height:I,viewBox:`${X} ${J} ${G} ${R}`,role:"img","aria-labelledby":se,ref:_,onClick:F},S&&he.createElement("title",{id:se},S),he.createElement(e6e,{onClick:V,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:i,nodeClassName:s,nodeStrokeWidth:a,nodeComponent:o}),he.createElement("path",{className:"react-flow__minimap-mask",d:`M${X-B},${J-B}h${G+B*2}v${R+B*2}h${-G-B*2}z - M${M.x},${M.y}h${M.width}v${M.height}h${-M.width}z`,fill:c,fillRule:"evenodd",stroke:h,strokeWidth:f,pointerEvents:"none"})))}pV.displayName="MiniMap";var i6e=b.memo(pV);function a6e(){return he.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32"},he.createElement("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"}))}function l6e(){return he.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5"},he.createElement("path",{d:"M0 0h32v4.2H0z"}))}function o6e(){return he.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30"},he.createElement("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"}))}function c6e(){return he.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},he.createElement("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"}))}function u6e(){return he.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},he.createElement("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"}))}const Sm=({children:t,className:e,...n})=>he.createElement("button",{type:"button",className:Ss(["react-flow__controls-button",e]),...n},t);Sm.displayName="ControlButton";const d6e=t=>({isInteractive:t.nodesDraggable||t.nodesConnectable||t.elementsSelectable,minZoomReached:t.transform[2]<=t.minZoom,maxZoomReached:t.transform[2]>=t.maxZoom}),gV=({style:t,showZoom:e=!0,showFitView:n=!0,showInteractive:r=!0,fitViewOptions:s,onZoomIn:i,onZoomOut:a,onFitView:o,onInteractiveChange:c,className:h,children:f,position:m="bottom-left"})=>{const g=ns(),[x,y]=b.useState(!1),{isInteractive:w,minZoomReached:S,maxZoomReached:k}=er(d6e,os),{zoomIn:N,zoomOut:C,fitView:T}=jO();if(b.useEffect(()=>{y(!0)},[]),!x)return null;const _=()=>{N(),i?.()},E=()=>{C(),a?.()},M=()=>{T(s),o?.()},L=()=>{g.setState({nodesDraggable:!w,nodesConnectable:!w,elementsSelectable:!w}),c?.(!w)};return he.createElement(Ly,{className:Ss(["react-flow__controls",h]),position:m,style:t,"data-testid":"rf__controls"},e&&he.createElement(he.Fragment,null,he.createElement(Sm,{onClick:_,className:"react-flow__controls-zoomin",title:"zoom in","aria-label":"zoom in",disabled:k},he.createElement(a6e,null)),he.createElement(Sm,{onClick:E,className:"react-flow__controls-zoomout",title:"zoom out","aria-label":"zoom out",disabled:S},he.createElement(l6e,null))),n&&he.createElement(Sm,{className:"react-flow__controls-fitview",onClick:M,title:"fit view","aria-label":"fit view"},he.createElement(o6e,null)),r&&he.createElement(Sm,{className:"react-flow__controls-interactive",onClick:L,title:"toggle interactivity","aria-label":"toggle interactivity"},w?he.createElement(u6e,null):he.createElement(c6e,null)),f)};gV.displayName="Controls";var h6e=b.memo(gV),aa;(function(t){t.Lines="lines",t.Dots="dots",t.Cross="cross"})(aa||(aa={}));function f6e({color:t,dimensions:e,lineWidth:n}){return he.createElement("path",{stroke:t,strokeWidth:n,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`})}function m6e({color:t,radius:e}){return he.createElement("circle",{cx:e,cy:e,r:e,fill:t})}const p6e={[aa.Dots]:"#91919a",[aa.Lines]:"#eee",[aa.Cross]:"#e2e2e2"},g6e={[aa.Dots]:1,[aa.Lines]:1,[aa.Cross]:6},x6e=t=>({transform:t.transform,patternId:`pattern-${t.rfId}`});function xV({id:t,variant:e=aa.Dots,gap:n=20,size:r,lineWidth:s=1,offset:i=2,color:a,style:o,className:c}){const h=b.useRef(null),{transform:f,patternId:m}=er(x6e,os),g=a||p6e[e],x=r||g6e[e],y=e===aa.Dots,w=e===aa.Cross,S=Array.isArray(n)?n:[n,n],k=[S[0]*f[2]||1,S[1]*f[2]||1],N=x*f[2],C=w?[N,N]:k,T=y?[N/i,N/i]:[C[0]/i,C[1]/i];return he.createElement("svg",{className:Ss(["react-flow__background",c]),style:{...o,position:"absolute",width:"100%",height:"100%",top:0,left:0},ref:h,"data-testid":"rf__background"},he.createElement("pattern",{id:m+t,x:f[0]%k[0],y:f[1]%k[1],width:k[0],height:k[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${T[0]},-${T[1]})`},y?he.createElement(m6e,{color:g,radius:N/i}):he.createElement(f6e,{dimensions:C,color:g,lineWidth:s})),he.createElement("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${m+t})`}))}xV.displayName="Background";var v6e=b.memo(xV);function NO(t){throw new Error('Could not dynamically require "'+t+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var W4,xA;function y6e(){if(xA)return W4;xA=1;var t=ND(),e=4;function n(r){return t(r,e)}return W4=n,W4}var G4,vA;function vV(){if(vA)return G4;vA=1;var t=MY();function e(n){return typeof n=="function"?n:t}return G4=e,G4}var X4,yA;function yV(){if(yA)return X4;yA=1;var t=CD(),e=$k(),n=vV(),r=Fu();function s(i,a){var o=r(i)?t:e;return o(i,n(a))}return X4=s,X4}var Y4,bA;function bV(){return bA||(bA=1,Y4=yV()),Y4}var K4,wA;function b6e(){if(wA)return K4;wA=1;var t=$k();function e(n,r){var s=[];return t(n,function(i,a,o){r(i,a,o)&&s.push(i)}),s}return K4=e,K4}var Z4,SA;function wV(){if(SA)return Z4;SA=1;var t=AY(),e=b6e(),n=Qk(),r=Fu();function s(i,a){var o=r(i)?t:e;return o(i,n(a,3))}return Z4=s,Z4}var J4,kA;function w6e(){if(kA)return J4;kA=1;var t=Object.prototype,e=t.hasOwnProperty;function n(r,s){return r!=null&&e.call(r,s)}return J4=n,J4}var e5,jA;function SV(){if(jA)return e5;jA=1;var t=w6e(),e=RY();function n(r,s){return r!=null&&e(r,s,t)}return e5=n,e5}var t5,OA;function S6e(){if(OA)return t5;OA=1;var t=TD(),e=ED(),n=_D(),r=Fu(),s=Hk(),i=Vk(),a=DY(),o=Uk(),c="[object Map]",h="[object Set]",f=Object.prototype,m=f.hasOwnProperty;function g(x){if(x==null)return!0;if(s(x)&&(r(x)||typeof x=="string"||typeof x.splice=="function"||i(x)||o(x)||n(x)))return!x.length;var y=e(x);if(y==c||y==h)return!x.size;if(a(x))return!t(x).length;for(var w in x)if(m.call(x,w))return!1;return!0}return t5=g,t5}var n5,NA;function kV(){if(NA)return n5;NA=1;function t(e){return e===void 0}return n5=t,n5}var r5,CA;function k6e(){if(CA)return r5;CA=1;function t(e,n,r,s){var i=-1,a=e==null?0:e.length;for(s&&a&&(r=e[++i]);++i1?x.setNode(y,m):x.setNode(y)}),this},s.prototype.setNode=function(f,m){return t.has(this._nodes,f)?(arguments.length>1&&(this._nodes[f]=m),this):(this._nodes[f]=arguments.length>1?m:this._defaultNodeLabelFn(f),this._isCompound&&(this._parent[f]=n,this._children[f]={},this._children[n][f]=!0),this._in[f]={},this._preds[f]={},this._out[f]={},this._sucs[f]={},++this._nodeCount,this)},s.prototype.node=function(f){return this._nodes[f]},s.prototype.hasNode=function(f){return t.has(this._nodes,f)},s.prototype.removeNode=function(f){var m=this;if(t.has(this._nodes,f)){var g=function(x){m.removeEdge(m._edgeObjs[x])};delete this._nodes[f],this._isCompound&&(this._removeFromParentsChildList(f),delete this._parent[f],t.each(this.children(f),function(x){m.setParent(x)}),delete this._children[f]),t.each(t.keys(this._in[f]),g),delete this._in[f],delete this._preds[f],t.each(t.keys(this._out[f]),g),delete this._out[f],delete this._sucs[f],--this._nodeCount}return this},s.prototype.setParent=function(f,m){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(t.isUndefined(m))m=n;else{m+="";for(var g=m;!t.isUndefined(g);g=this.parent(g))if(g===f)throw new Error("Setting "+m+" as parent of "+f+" would create a cycle");this.setNode(m)}return this.setNode(f),this._removeFromParentsChildList(f),this._parent[f]=m,this._children[m][f]=!0,this},s.prototype._removeFromParentsChildList=function(f){delete this._children[this._parent[f]][f]},s.prototype.parent=function(f){if(this._isCompound){var m=this._parent[f];if(m!==n)return m}},s.prototype.children=function(f){if(t.isUndefined(f)&&(f=n),this._isCompound){var m=this._children[f];if(m)return t.keys(m)}else{if(f===n)return this.nodes();if(this.hasNode(f))return[]}},s.prototype.predecessors=function(f){var m=this._preds[f];if(m)return t.keys(m)},s.prototype.successors=function(f){var m=this._sucs[f];if(m)return t.keys(m)},s.prototype.neighbors=function(f){var m=this.predecessors(f);if(m)return t.union(m,this.successors(f))},s.prototype.isLeaf=function(f){var m;return this.isDirected()?m=this.successors(f):m=this.neighbors(f),m.length===0},s.prototype.filterNodes=function(f){var m=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});m.setGraph(this.graph());var g=this;t.each(this._nodes,function(w,S){f(S)&&m.setNode(S,w)}),t.each(this._edgeObjs,function(w){m.hasNode(w.v)&&m.hasNode(w.w)&&m.setEdge(w,g.edge(w))});var x={};function y(w){var S=g.parent(w);return S===void 0||m.hasNode(S)?(x[w]=S,S):S in x?x[S]:y(S)}return this._isCompound&&t.each(m.nodes(),function(w){m.setParent(w,y(w))}),m},s.prototype.setDefaultEdgeLabel=function(f){return t.isFunction(f)||(f=t.constant(f)),this._defaultEdgeLabelFn=f,this},s.prototype.edgeCount=function(){return this._edgeCount},s.prototype.edges=function(){return t.values(this._edgeObjs)},s.prototype.setPath=function(f,m){var g=this,x=arguments;return t.reduce(f,function(y,w){return x.length>1?g.setEdge(y,w,m):g.setEdge(y,w),w}),this},s.prototype.setEdge=function(){var f,m,g,x,y=!1,w=arguments[0];typeof w=="object"&&w!==null&&"v"in w?(f=w.v,m=w.w,g=w.name,arguments.length===2&&(x=arguments[1],y=!0)):(f=w,m=arguments[1],g=arguments[3],arguments.length>2&&(x=arguments[2],y=!0)),f=""+f,m=""+m,t.isUndefined(g)||(g=""+g);var S=o(this._isDirected,f,m,g);if(t.has(this._edgeLabels,S))return y&&(this._edgeLabels[S]=x),this;if(!t.isUndefined(g)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(f),this.setNode(m),this._edgeLabels[S]=y?x:this._defaultEdgeLabelFn(f,m,g);var k=c(this._isDirected,f,m,g);return f=k.v,m=k.w,Object.freeze(k),this._edgeObjs[S]=k,i(this._preds[m],f),i(this._sucs[f],m),this._in[m][S]=k,this._out[f][S]=k,this._edgeCount++,this},s.prototype.edge=function(f,m,g){var x=arguments.length===1?h(this._isDirected,arguments[0]):o(this._isDirected,f,m,g);return this._edgeLabels[x]},s.prototype.hasEdge=function(f,m,g){var x=arguments.length===1?h(this._isDirected,arguments[0]):o(this._isDirected,f,m,g);return t.has(this._edgeLabels,x)},s.prototype.removeEdge=function(f,m,g){var x=arguments.length===1?h(this._isDirected,arguments[0]):o(this._isDirected,f,m,g),y=this._edgeObjs[x];return y&&(f=y.v,m=y.w,delete this._edgeLabels[x],delete this._edgeObjs[x],a(this._preds[m],f),a(this._sucs[f],m),delete this._in[m][x],delete this._out[f][x],this._edgeCount--),this},s.prototype.inEdges=function(f,m){var g=this._in[f];if(g){var x=t.values(g);return m?t.filter(x,function(y){return y.v===m}):x}},s.prototype.outEdges=function(f,m){var g=this._out[f];if(g){var x=t.values(g);return m?t.filter(x,function(y){return y.w===m}):x}},s.prototype.nodeEdges=function(f,m){var g=this.inEdges(f,m);if(g)return g.concat(this.outEdges(f,m))};function i(f,m){f[m]?f[m]++:f[m]=1}function a(f,m){--f[m]||delete f[m]}function o(f,m,g,x){var y=""+m,w=""+g;if(!f&&y>w){var S=y;y=w,w=S}return y+r+w+r+(t.isUndefined(x)?e:x)}function c(f,m,g,x){var y=""+m,w=""+g;if(!f&&y>w){var S=y;y=w,w=S}var k={v:y,w};return x&&(k.name=x),k}function h(f,m){return o(f,m.v,m.w,m.name)}return g5}var x5,FA;function A6e(){return FA||(FA=1,x5="2.1.8"),x5}var v5,$A;function R6e(){return $A||($A=1,v5={Graph:CO(),version:A6e()}),v5}var y5,QA;function D6e(){if(QA)return y5;QA=1;var t=pa(),e=CO();y5={write:n,read:i};function n(a){var o={options:{directed:a.isDirected(),multigraph:a.isMultigraph(),compound:a.isCompound()},nodes:r(a),edges:s(a)};return t.isUndefined(a.graph())||(o.value=t.clone(a.graph())),o}function r(a){return t.map(a.nodes(),function(o){var c=a.node(o),h=a.parent(o),f={v:o};return t.isUndefined(c)||(f.value=c),t.isUndefined(h)||(f.parent=h),f})}function s(a){return t.map(a.edges(),function(o){var c=a.edge(o),h={v:o.v,w:o.w};return t.isUndefined(o.name)||(h.name=o.name),t.isUndefined(c)||(h.value=c),h})}function i(a){var o=new e(a.options).setGraph(a.value);return t.each(a.nodes,function(c){o.setNode(c.v,c.value),c.parent&&o.setParent(c.v,c.parent)}),t.each(a.edges,function(c){o.setEdge({v:c.v,w:c.w,name:c.name},c.value)}),o}return y5}var b5,HA;function z6e(){if(HA)return b5;HA=1;var t=pa();b5=e;function e(n){var r={},s=[],i;function a(o){t.has(r,o)||(r[o]=!0,i.push(o),t.each(n.successors(o),a),t.each(n.predecessors(o),a))}return t.each(n.nodes(),function(o){i=[],a(o),i.length&&s.push(i)}),s}return b5}var w5,VA;function CV(){if(VA)return w5;VA=1;var t=pa();w5=e;function e(){this._arr=[],this._keyIndices={}}return e.prototype.size=function(){return this._arr.length},e.prototype.keys=function(){return this._arr.map(function(n){return n.key})},e.prototype.has=function(n){return t.has(this._keyIndices,n)},e.prototype.priority=function(n){var r=this._keyIndices[n];if(r!==void 0)return this._arr[r].priority},e.prototype.min=function(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key},e.prototype.add=function(n,r){var s=this._keyIndices;if(n=String(n),!t.has(s,n)){var i=this._arr,a=i.length;return s[n]=a,i.push({key:n,priority:r}),this._decrease(a),!0}return!1},e.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var n=this._arr.pop();return delete this._keyIndices[n.key],this._heapify(0),n.key},e.prototype.decrease=function(n,r){var s=this._keyIndices[n];if(r>this._arr[s].priority)throw new Error("New priority is greater than current priority. Key: "+n+" Old: "+this._arr[s].priority+" New: "+r);this._arr[s].priority=r,this._decrease(s)},e.prototype._heapify=function(n){var r=this._arr,s=2*n,i=s+1,a=n;s>1,!(r[i].priority0&&(m=f.removeMin(),g=h[m],g.distance!==Number.POSITIVE_INFINITY);)c(m).forEach(x);return h}return S5}var k5,WA;function P6e(){if(WA)return k5;WA=1;var t=TV(),e=pa();k5=n;function n(r,s,i){return e.transform(r.nodes(),function(a,o){a[o]=t(r,o,s,i)},{})}return k5}var j5,GA;function EV(){if(GA)return j5;GA=1;var t=pa();j5=e;function e(n){var r=0,s=[],i={},a=[];function o(c){var h=i[c]={onStack:!0,lowlink:r,index:r++};if(s.push(c),n.successors(c).forEach(function(g){t.has(i,g)?i[g].onStack&&(h.lowlink=Math.min(h.lowlink,i[g].index)):(o(g),h.lowlink=Math.min(h.lowlink,i[g].lowlink))}),h.lowlink===h.index){var f=[],m;do m=s.pop(),i[m].onStack=!1,f.push(m);while(c!==m);a.push(f)}}return n.nodes().forEach(function(c){t.has(i,c)||o(c)}),a}return j5}var O5,XA;function L6e(){if(XA)return O5;XA=1;var t=pa(),e=EV();O5=n;function n(r){return t.filter(e(r),function(s){return s.length>1||s.length===1&&r.hasEdge(s[0],s[0])})}return O5}var N5,YA;function I6e(){if(YA)return N5;YA=1;var t=pa();N5=n;var e=t.constant(1);function n(s,i,a){return r(s,i||e,a||function(o){return s.outEdges(o)})}function r(s,i,a){var o={},c=s.nodes();return c.forEach(function(h){o[h]={},o[h][h]={distance:0},c.forEach(function(f){h!==f&&(o[h][f]={distance:Number.POSITIVE_INFINITY})}),a(h).forEach(function(f){var m=f.v===h?f.w:f.v,g=i(f);o[h][m]={distance:g,predecessor:h}})}),c.forEach(function(h){var f=o[h];c.forEach(function(m){var g=o[m];c.forEach(function(x){var y=g[h],w=f[x],S=g[x],k=y.distance+w.distance;k0;){if(h=c.removeMin(),t.has(o,h))a.setEdge(h,o[h]);else{if(m)throw new Error("Input graph is not connected: "+s);m=!0}s.nodeEdges(h).forEach(f)}return a}return A5}var R5,rR;function Q6e(){return rR||(rR=1,R5={components:z6e(),dijkstra:TV(),dijkstraAll:P6e(),findCycles:L6e(),floydWarshall:I6e(),isAcyclic:B6e(),postorder:q6e(),preorder:F6e(),prim:$6e(),tarjan:EV(),topsort:_V()}),R5}var D5,sR;function H6e(){if(sR)return D5;sR=1;var t=R6e();return D5={Graph:t.Graph,json:D6e(),alg:Q6e(),version:t.version},D5}var z5,iR;function Ra(){if(iR)return z5;iR=1;var t;if(typeof NO=="function")try{t=H6e()}catch{}return t||(t=window.graphlib),z5=t,z5}var P5,aR;function V6e(){if(aR)return P5;aR=1;var t=ND(),e=1,n=4;function r(s){return t(s,e|n)}return P5=r,P5}var L5,lR;function U6e(){if(lR)return L5;lR=1;var t=Gk(),e=zD(),n=DD(),r=Nv(),s=Object.prototype,i=s.hasOwnProperty,a=t(function(o,c){o=Object(o);var h=-1,f=c.length,m=f>2?c[2]:void 0;for(m&&n(c[0],c[1],m)&&(f=1);++h1?i[o-1]:void 0,h=o>2?i[2]:void 0;for(c=r.length>3&&typeof c=="function"?(o--,c):void 0,h&&e(i[0],i[1],h)&&(c=o<3?void 0:c,o=1),s=Object(s);++a0;--S)if(w=f[S].dequeue(),w){g=g.concat(a(h,f,m,w,!0));break}}}return g}function a(h,f,m,g,x){var y=x?[]:void 0;return t.forEach(h.inEdges(g.v),function(w){var S=h.edge(w),k=h.node(w.v);x&&y.push({v:w.v,w:w.w}),k.out-=S,c(f,m,k)}),t.forEach(h.outEdges(g.v),function(w){var S=h.edge(w),k=w.w,N=h.node(k);N.in-=S,c(f,m,N)}),h.removeNode(g.v),y}function o(h,f){var m=new e,g=0,x=0;t.forEach(h.nodes(),function(S){m.setNode(S,{v:S,in:0,out:0})}),t.forEach(h.edges(),function(S){var k=m.edge(S.v,S.w)||0,N=f(S),C=k+N;m.setEdge(S.v,S.w,C),x=Math.max(x,m.node(S.v).out+=N),g=Math.max(g,m.node(S.w).in+=N)});var y=t.range(x+g+3).map(function(){return new n}),w=g+1;return t.forEach(m.nodes(),function(S){c(y,w,m.node(S))}),{graph:m,buckets:y,zeroIdx:w}}function c(h,f,m){m.out?m.in?h[m.out-m.in+f].enqueue(m):h[h.length-1].enqueue(m):h[0].enqueue(m)}return t3}var n3,NR;function oje(){if(NR)return n3;NR=1;var t=dr(),e=lje();n3={run:n,undo:s};function n(i){var a=i.graph().acyclicer==="greedy"?e(i,o(i)):r(i);t.forEach(a,function(c){var h=i.edge(c);i.removeEdge(c),h.forwardName=c.name,h.reversed=!0,i.setEdge(c.w,c.v,h,t.uniqueId("rev"))});function o(c){return function(h){return c.edge(h).weight}}}function r(i){var a=[],o={},c={};function h(f){t.has(c,f)||(c[f]=!0,o[f]=!0,t.forEach(i.outEdges(f),function(m){t.has(o,m.w)?a.push(m):h(m.w)}),delete o[f])}return t.forEach(i.nodes(),h),a}function s(i){t.forEach(i.edges(),function(a){var o=i.edge(a);if(o.reversed){i.removeEdge(a);var c=o.forwardName;delete o.reversed,delete o.forwardName,i.setEdge(a.w,a.v,o,c)}})}return n3}var r3,CR;function oi(){if(CR)return r3;CR=1;var t=dr(),e=Ra().Graph;r3={addDummyNode:n,simplify:r,asNonCompoundGraph:s,successorWeights:i,predecessorWeights:a,intersectRect:o,buildLayerMatrix:c,normalizeRanks:h,removeEmptyRanks:f,addBorderNode:m,maxRank:g,partition:x,time:y,notime:w};function n(S,k,N,C){var T;do T=t.uniqueId(C);while(S.hasNode(T));return N.dummy=k,S.setNode(T,N),T}function r(S){var k=new e().setGraph(S.graph());return t.forEach(S.nodes(),function(N){k.setNode(N,S.node(N))}),t.forEach(S.edges(),function(N){var C=k.edge(N.v,N.w)||{weight:0,minlen:1},T=S.edge(N);k.setEdge(N.v,N.w,{weight:C.weight+T.weight,minlen:Math.max(C.minlen,T.minlen)})}),k}function s(S){var k=new e({multigraph:S.isMultigraph()}).setGraph(S.graph());return t.forEach(S.nodes(),function(N){S.children(N).length||k.setNode(N,S.node(N))}),t.forEach(S.edges(),function(N){k.setEdge(N,S.edge(N))}),k}function i(S){var k=t.map(S.nodes(),function(N){var C={};return t.forEach(S.outEdges(N),function(T){C[T.w]=(C[T.w]||0)+S.edge(T).weight}),C});return t.zipObject(S.nodes(),k)}function a(S){var k=t.map(S.nodes(),function(N){var C={};return t.forEach(S.inEdges(N),function(T){C[T.v]=(C[T.v]||0)+S.edge(T).weight}),C});return t.zipObject(S.nodes(),k)}function o(S,k){var N=S.x,C=S.y,T=k.x-N,_=k.y-C,E=S.width/2,M=S.height/2;if(!T&&!_)throw new Error("Not possible to find intersection inside of the rectangle");var L,P;return Math.abs(_)*E>Math.abs(T)*M?(_<0&&(M=-M),L=M*T/_,P=M):(T<0&&(E=-E),L=E,P=E*_/T),{x:N+L,y:C+P}}function c(S){var k=t.map(t.range(g(S)+1),function(){return[]});return t.forEach(S.nodes(),function(N){var C=S.node(N),T=C.rank;t.isUndefined(T)||(k[T][C.order]=N)}),k}function h(S){var k=t.min(t.map(S.nodes(),function(N){return S.node(N).rank}));t.forEach(S.nodes(),function(N){var C=S.node(N);t.has(C,"rank")&&(C.rank-=k)})}function f(S){var k=t.min(t.map(S.nodes(),function(_){return S.node(_).rank})),N=[];t.forEach(S.nodes(),function(_){var E=S.node(_).rank-k;N[E]||(N[E]=[]),N[E].push(_)});var C=0,T=S.graph().nodeRankFactor;t.forEach(N,function(_,E){t.isUndefined(_)&&E%T!==0?--C:C&&t.forEach(_,function(M){S.node(M).rank+=C})})}function m(S,k,N,C){var T={width:0,height:0};return arguments.length>=4&&(T.rank=N,T.order=C),n(S,"border",T,k)}function g(S){return t.max(t.map(S.nodes(),function(k){var N=S.node(k).rank;if(!t.isUndefined(N))return N}))}function x(S,k){var N={lhs:[],rhs:[]};return t.forEach(S,function(C){k(C)?N.lhs.push(C):N.rhs.push(C)}),N}function y(S,k){var N=t.now();try{return k()}finally{console.log(S+" time: "+(t.now()-N)+"ms")}}function w(S,k){return k()}return r3}var s3,TR;function cje(){if(TR)return s3;TR=1;var t=dr(),e=oi();s3={run:n,undo:s};function n(i){i.graph().dummyChains=[],t.forEach(i.edges(),function(a){r(i,a)})}function r(i,a){var o=a.v,c=i.node(o).rank,h=a.w,f=i.node(h).rank,m=a.name,g=i.edge(a),x=g.labelRank;if(f!==c+1){i.removeEdge(a);var y,w,S;for(S=0,++c;cP.lim&&(I=P,Q=!0);var U=t.filter(T.edges(),function(ee){return Q===N(C,C.node(ee.v),I)&&Q!==N(C,C.node(ee.w),I)});return t.minBy(U,function(ee){return n(T,ee)})}function w(C,T,_,E){var M=_.v,L=_.w;C.removeEdge(M,L),C.setEdge(E.v,E.w,{}),m(C),c(C,T),S(C,T)}function S(C,T){var _=t.find(C.nodes(),function(M){return!T.node(M).parent}),E=s(C,_);E=E.slice(1),t.forEach(E,function(M){var L=C.node(M).parent,P=T.edge(M,L),I=!1;P||(P=T.edge(L,M),I=!0),T.node(M).rank=T.node(L).rank+(I?P.minlen:-P.minlen)})}function k(C,T,_){return C.hasEdge(T,_)}function N(C,T,_){return _.low<=T.lim&&T.lim<=_.lim}return l3}var o3,AR;function dje(){if(AR)return o3;AR=1;var t=Sv(),e=t.longestPath,n=DV(),r=uje();o3=s;function s(c){switch(c.graph().ranker){case"network-simplex":o(c);break;case"tight-tree":a(c);break;case"longest-path":i(c);break;default:o(c)}}var i=e;function a(c){e(c),n(c)}function o(c){r(c)}return o3}var c3,RR;function hje(){if(RR)return c3;RR=1;var t=dr();c3=e;function e(s){var i=r(s);t.forEach(s.graph().dummyChains,function(a){for(var o=s.node(a),c=o.edgeObj,h=n(s,i,c.v,c.w),f=h.path,m=h.lca,g=0,x=f[g],y=!0;a!==c.w;){if(o=s.node(a),y){for(;(x=f[g])!==m&&s.node(x).maxRankf||m>i[g].lim));for(x=g,g=o;(g=s.parent(g))!==x;)h.push(g);return{path:c.concat(h.reverse()),lca:x}}function r(s){var i={},a=0;function o(c){var h=a;t.forEach(s.children(c),o),i[c]={low:h,lim:a++}}return t.forEach(s.children(),o),i}return c3}var u3,DR;function fje(){if(DR)return u3;DR=1;var t=dr(),e=oi();u3={run:n,cleanup:a};function n(o){var c=e.addDummyNode(o,"root",{},"_root"),h=s(o),f=t.max(t.values(h))-1,m=2*f+1;o.graph().nestingRoot=c,t.forEach(o.edges(),function(x){o.edge(x).minlen*=m});var g=i(o)+1;t.forEach(o.children(),function(x){r(o,c,m,g,f,h,x)}),o.graph().nodeRankFactor=m}function r(o,c,h,f,m,g,x){var y=o.children(x);if(!y.length){x!==c&&o.setEdge(c,x,{weight:0,minlen:h});return}var w=e.addBorderNode(o,"_bt"),S=e.addBorderNode(o,"_bb"),k=o.node(x);o.setParent(w,x),k.borderTop=w,o.setParent(S,x),k.borderBottom=S,t.forEach(y,function(N){r(o,c,h,f,m,g,N);var C=o.node(N),T=C.borderTop?C.borderTop:N,_=C.borderBottom?C.borderBottom:N,E=C.borderTop?f:2*f,M=T!==_?1:m-g[x]+1;o.setEdge(w,T,{weight:E,minlen:M,nestingEdge:!0}),o.setEdge(_,S,{weight:E,minlen:M,nestingEdge:!0})}),o.parent(x)||o.setEdge(c,w,{weight:0,minlen:m+g[x]})}function s(o){var c={};function h(f,m){var g=o.children(f);g&&g.length&&t.forEach(g,function(x){h(x,m+1)}),c[f]=m}return t.forEach(o.children(),function(f){h(f,1)}),c}function i(o){return t.reduce(o.edges(),function(c,h){return c+o.edge(h).weight},0)}function a(o){var c=o.graph();o.removeNode(c.nestingRoot),delete c.nestingRoot,t.forEach(o.edges(),function(h){var f=o.edge(h);f.nestingEdge&&o.removeEdge(h)})}return u3}var d3,zR;function mje(){if(zR)return d3;zR=1;var t=dr(),e=oi();d3=n;function n(s){function i(a){var o=s.children(a),c=s.node(a);if(o.length&&t.forEach(o,i),t.has(c,"minRank")){c.borderLeft=[],c.borderRight=[];for(var h=c.minRank,f=c.maxRank+1;h0;)x%2&&(y+=f[x+1]),x=x-1>>1,f[x]+=g.weight;m+=g.weight*y})),m}return m3}var p3,BR;function vje(){if(BR)return p3;BR=1;var t=dr();p3=e;function e(n,r){return t.map(r,function(s){var i=n.inEdges(s);if(i.length){var a=t.reduce(i,function(o,c){var h=n.edge(c),f=n.node(c.v);return{sum:o.sum+h.weight*f.order,weight:o.weight+h.weight}},{sum:0,weight:0});return{v:s,barycenter:a.sum/a.weight,weight:a.weight}}else return{v:s}})}return p3}var g3,qR;function yje(){if(qR)return g3;qR=1;var t=dr();g3=e;function e(s,i){var a={};t.forEach(s,function(c,h){var f=a[c.v]={indegree:0,in:[],out:[],vs:[c.v],i:h};t.isUndefined(c.barycenter)||(f.barycenter=c.barycenter,f.weight=c.weight)}),t.forEach(i.edges(),function(c){var h=a[c.v],f=a[c.w];!t.isUndefined(h)&&!t.isUndefined(f)&&(f.indegree++,h.out.push(a[c.w]))});var o=t.filter(a,function(c){return!c.indegree});return n(o)}function n(s){var i=[];function a(h){return function(f){f.merged||(t.isUndefined(f.barycenter)||t.isUndefined(h.barycenter)||f.barycenter>=h.barycenter)&&r(h,f)}}function o(h){return function(f){f.in.push(h),--f.indegree===0&&s.push(f)}}for(;s.length;){var c=s.pop();i.push(c),t.forEach(c.in.reverse(),a(c)),t.forEach(c.out,o(c))}return t.map(t.filter(i,function(h){return!h.merged}),function(h){return t.pick(h,["vs","i","barycenter","weight"])})}function r(s,i){var a=0,o=0;s.weight&&(a+=s.barycenter*s.weight,o+=s.weight),i.weight&&(a+=i.barycenter*i.weight,o+=i.weight),s.vs=i.vs.concat(s.vs),s.barycenter=a/o,s.weight=o,s.i=Math.min(i.i,s.i),i.merged=!0}return g3}var x3,FR;function bje(){if(FR)return x3;FR=1;var t=dr(),e=oi();x3=n;function n(i,a){var o=e.partition(i,function(w){return t.has(w,"barycenter")}),c=o.lhs,h=t.sortBy(o.rhs,function(w){return-w.i}),f=[],m=0,g=0,x=0;c.sort(s(!!a)),x=r(f,h,x),t.forEach(c,function(w){x+=w.vs.length,f.push(w.vs),m+=w.barycenter*w.weight,g+=w.weight,x=r(f,h,x)});var y={vs:t.flatten(f,!0)};return g&&(y.barycenter=m/g,y.weight=g),y}function r(i,a,o){for(var c;a.length&&(c=t.last(a)).i<=o;)a.pop(),i.push(c.vs),o++;return o}function s(i){return function(a,o){return a.barycentero.barycenter?1:i?o.i-a.i:a.i-o.i}}return x3}var v3,$R;function wje(){if($R)return v3;$R=1;var t=dr(),e=vje(),n=yje(),r=bje();v3=s;function s(o,c,h,f){var m=o.children(c),g=o.node(c),x=g?g.borderLeft:void 0,y=g?g.borderRight:void 0,w={};x&&(m=t.filter(m,function(_){return _!==x&&_!==y}));var S=e(o,m);t.forEach(S,function(_){if(o.children(_.v).length){var E=s(o,_.v,h,f);w[_.v]=E,t.has(E,"barycenter")&&a(_,E)}});var k=n(S,h);i(k,w);var N=r(k,f);if(x&&(N.vs=t.flatten([x,N.vs,y],!0),o.predecessors(x).length)){var C=o.node(o.predecessors(x)[0]),T=o.node(o.predecessors(y)[0]);t.has(N,"barycenter")||(N.barycenter=0,N.weight=0),N.barycenter=(N.barycenter*N.weight+C.order+T.order)/(N.weight+2),N.weight+=2}return N}function i(o,c){t.forEach(o,function(h){h.vs=t.flatten(h.vs.map(function(f){return c[f]?c[f].vs:f}),!0)})}function a(o,c){t.isUndefined(o.barycenter)?(o.barycenter=c.barycenter,o.weight=c.weight):(o.barycenter=(o.barycenter*o.weight+c.barycenter*c.weight)/(o.weight+c.weight),o.weight+=c.weight)}return v3}var y3,QR;function Sje(){if(QR)return y3;QR=1;var t=dr(),e=Ra().Graph;y3=n;function n(s,i,a){var o=r(s),c=new e({compound:!0}).setGraph({root:o}).setDefaultNodeLabel(function(h){return s.node(h)});return t.forEach(s.nodes(),function(h){var f=s.node(h),m=s.parent(h);(f.rank===i||f.minRank<=i&&i<=f.maxRank)&&(c.setNode(h),c.setParent(h,m||o),t.forEach(s[a](h),function(g){var x=g.v===h?g.w:g.v,y=c.edge(x,h),w=t.isUndefined(y)?0:y.weight;c.setEdge(x,h,{weight:s.edge(g).weight+w})}),t.has(f,"minRank")&&c.setNode(h,{borderLeft:f.borderLeft[i],borderRight:f.borderRight[i]}))}),c}function r(s){for(var i;s.hasNode(i=t.uniqueId("_root")););return i}return y3}var b3,HR;function kje(){if(HR)return b3;HR=1;var t=dr();b3=e;function e(n,r,s){var i={},a;t.forEach(s,function(o){for(var c=n.parent(o),h,f;c;){if(h=n.parent(c),h?(f=i[h],i[h]=c):(f=a,a=c),f&&f!==c){r.setEdge(f,c);return}c=h}})}return b3}var w3,VR;function jje(){if(VR)return w3;VR=1;var t=dr(),e=gje(),n=xje(),r=wje(),s=Sje(),i=kje(),a=Ra().Graph,o=oi();w3=c;function c(g){var x=o.maxRank(g),y=h(g,t.range(1,x+1),"inEdges"),w=h(g,t.range(x-1,-1,-1),"outEdges"),S=e(g);m(g,S);for(var k=Number.POSITIVE_INFINITY,N,C=0,T=0;T<4;++C,++T){f(C%2?y:w,C%4>=2),S=o.buildLayerMatrix(g);var _=n(g,S);_I)&&a(C,ee,Q)})})}function _(E,M){var L=-1,P,I=0;return t.forEach(M,function(Q,U){if(k.node(Q).dummy==="border"){var ee=k.predecessors(Q);ee.length&&(P=k.node(ee[0]).order,T(M,I,U,L,P),I=U,L=P)}T(M,I,M.length,P,E.length)}),M}return t.reduce(N,_),C}function i(k,N){if(k.node(N).dummy)return t.find(k.predecessors(N),function(C){return k.node(C).dummy})}function a(k,N,C){if(N>C){var T=N;N=C,C=T}var _=k[N];_||(k[N]=_={}),_[C]=!0}function o(k,N,C){if(N>C){var T=N;N=C,C=T}return t.has(k[N],C)}function c(k,N,C,T){var _={},E={},M={};return t.forEach(N,function(L){t.forEach(L,function(P,I){_[P]=P,E[P]=P,M[P]=I})}),t.forEach(N,function(L){var P=-1;t.forEach(L,function(I){var Q=T(I);if(Q.length){Q=t.sortBy(Q,function(B){return M[B]});for(var U=(Q.length-1)/2,ee=Math.floor(U),z=Math.ceil(U);ee<=z;++ee){var H=Q[ee];E[I]===I&&Pl.jsxs("div",{className:"px-4 py-2 shadow-md rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700 min-w-[120px]",children:[l.jsx(Tc,{type:"target",position:mt.Top}),l.jsx("div",{className:"font-semibold text-white text-sm truncate max-w-[200px]",title:t.content,children:t.label}),l.jsx(Tc,{type:"source",position:mt.Bottom})]}));zV.displayName="EntityNode";const PV=b.memo(({data:t})=>l.jsxs("div",{className:"px-3 py-2 shadow-md rounded-md bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700 min-w-[100px]",children:[l.jsx(Tc,{type:"target",position:mt.Top}),l.jsx("div",{className:"font-medium text-white text-xs truncate max-w-[150px]",title:t.content,children:t.label}),l.jsx(Tc,{type:"source",position:mt.Bottom})]}));PV.displayName="ParagraphNode";const zje={entity:zV,paragraph:PV};function Pje(t,e){const n=new ZR.graphlib.Graph;n.setDefaultEdgeLabel(()=>({})),n.setGraph({rankdir:"TB",ranksep:100,nodesep:80});const r=[],s=[];return t.forEach(i=>{n.setNode(i.id,{width:150,height:50})}),e.forEach(i=>{n.setEdge(i.source,i.target)}),ZR.layout(n),t.forEach(i=>{const a=n.node(i.id);r.push({id:i.id,type:i.type,position:{x:a.x-75,y:a.y-25},data:{label:i.content.slice(0,20)+(i.content.length>20?"...":""),content:i.content}})}),e.forEach((i,a)=>{const o={id:`edge-${a}`,source:i.source,target:i.target,animated:t.length<=200&&i.weight>5,style:{strokeWidth:Math.min(i.weight/2,5),opacity:.6}};i.weight>10&&t.length<100&&(o.label=`${i.weight.toFixed(0)}`),s.push(o)}),{nodes:r,edges:s}}function Lje(){const t=Da(),[e,n]=b.useState(!1),[r,s]=b.useState(null),[i,a]=b.useState(""),[o,c]=b.useState("all"),[h,f]=b.useState(50),[m,g]=b.useState("50"),[x,y]=b.useState(!1),[w,S]=b.useState(!0),[k,N]=b.useState(!1),[C,T]=b.useState(!1),[_,E,M]=Gke([]),[L,P,I]=Xke([]),[Q,U]=b.useState(0),[ee,z]=b.useState(null),[H,B]=b.useState(null),{toast:X}=ts(),J=b.useCallback(ne=>ne.type==="entity"?"#6366f1":ne.type==="paragraph"?"#10b981":"#6b7280",[]),G=b.useCallback(async(ne=!1)=>{try{if(!ne&&h>200){T(!0);return}n(!0);const[K,ie]=await Promise.all([Aje(h,o),Rje()]);if(s(ie),K.nodes.length===0){X({title:"提示",description:"知识库为空,请先导入知识数据"}),E([]),P([]);return}const{nodes:re,edges:ae}=Pje(K.nodes,K.edges);E(re),P(ae),U(re.length),ie&&ie.total_nodes>h&&X({title:"提示",description:`知识图谱包含 ${ie.total_nodes} 个节点,当前显示 ${re.length} 个`}),X({title:"加载成功",description:`已加载 ${re.length} 个节点,${ae.length} 条边`})}catch(K){console.error("加载知识图谱失败:",K),X({title:"加载失败",description:K instanceof Error?K.message:"未知错误",variant:"destructive"})}finally{n(!1)}},[h,o,X]),R=b.useCallback(async()=>{if(!i.trim()){X({title:"提示",description:"请输入搜索关键词"});return}try{const ne=await Dje(i);if(ne.length===0){X({title:"未找到",description:"没有找到匹配的节点"});return}const K=new Set(ne.map(ie=>ie.id));E(ie=>ie.map(re=>({...re,style:{...re.style,opacity:K.has(re.id)?1:.3,filter:K.has(re.id)?"brightness(1.2)":"brightness(0.8)"}}))),X({title:"搜索完成",description:`找到 ${ne.length} 个匹配节点`})}catch(ne){console.error("搜索失败:",ne),X({title:"搜索失败",description:ne instanceof Error?ne.message:"未知错误",variant:"destructive"})}},[i,X]),se=b.useCallback(()=>{E(ne=>ne.map(K=>({...K,style:{...K.style,opacity:1,filter:"brightness(1)"}})))},[]),W=b.useCallback(()=>{S(!1),N(!0),G()},[G]),F=b.useCallback(()=>{T(!1),setTimeout(()=>{G(!0)},0)},[G]),V=b.useCallback((ne,K)=>{_.find(re=>re.id===K.id)&&z({id:K.id,type:K.type,content:K.data.content})},[_]);b.useEffect(()=>{w||k&&G()},[h,o,w,k]);const te=b.useCallback((ne,K)=>{const ie=_.find(_e=>_e.id===K.source),re=_.find(_e=>_e.id===K.target),ae=L.find(_e=>_e.id===K.id);ie&&re&&ae&&B({source:{id:ie.id,type:ie.type,content:ie.data.content},target:{id:re.id,type:re.type,content:re.data.content},edge:{source:K.source,target:K.target,weight:parseFloat(K.label||"0")}})},[_,L]);return l.jsxs("div",{className:"h-full flex flex-col",children:[l.jsxs("div",{className:"flex-shrink-0 p-4 border-b bg-background",children:[l.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4",children:[l.jsxs("div",{children:[l.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦知识库图谱"}),l.jsx("p",{className:"text-muted-foreground mt-1",children:"可视化知识实体与关系网络"})]}),r&&l.jsxs("div",{className:"flex gap-2 flex-wrap",children:[l.jsxs(In,{variant:"outline",className:"gap-1",children:[l.jsx(A3,{className:"h-3 w-3"}),"节点: ",r.total_nodes]}),l.jsxs(In,{variant:"outline",className:"gap-1",children:[l.jsx(oz,{className:"h-3 w-3"}),"边: ",r.total_edges]}),l.jsxs(In,{variant:"outline",className:"gap-1",children:[l.jsx(ra,{className:"h-3 w-3"}),"实体: ",r.entity_nodes]}),l.jsxs(In,{variant:"outline",className:"gap-1",children:[l.jsx(lo,{className:"h-3 w-3"}),"段落: ",r.paragraph_nodes]})]})]}),l.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 mt-4",children:[l.jsxs("div",{className:"flex-1 flex gap-2",children:[l.jsx(Pe,{placeholder:"搜索节点内容...",value:i,onChange:ne=>a(ne.target.value),onKeyDown:ne=>ne.key==="Enter"&&R(),className:"flex-1"}),l.jsx(de,{onClick:R,size:"sm",children:l.jsx(ci,{className:"h-4 w-4"})}),l.jsx(de,{onClick:se,variant:"outline",size:"sm",children:"重置"})]}),l.jsxs("div",{className:"flex gap-2",children:[l.jsxs(qt,{value:o,onValueChange:ne=>c(ne),children:[l.jsx(It,{className:"w-[120px]",children:l.jsx(Ft,{})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"all",children:"全部节点"}),l.jsx(De,{value:"entity",children:"仅实体"}),l.jsx(De,{value:"paragraph",children:"仅段落"})]})]}),l.jsxs(qt,{value:h===1e4?"all":x?"custom":h.toString(),onValueChange:ne=>{ne==="custom"?(y(!0),g(h.toString())):ne==="all"?(y(!1),f(1e4)):(y(!1),f(Number(ne)))},children:[l.jsx(It,{className:"w-[120px]",children:l.jsx(Ft,{})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"50",children:"50 节点"}),l.jsx(De,{value:"100",children:"100 节点"}),l.jsx(De,{value:"200",children:"200 节点"}),l.jsx(De,{value:"500",children:"500 节点"}),l.jsx(De,{value:"1000",children:"1000 节点"}),l.jsx(De,{value:"all",children:"全部 (最多10000)"}),l.jsx(De,{value:"custom",children:"自定义..."})]})]}),x&&l.jsx(Pe,{type:"number",min:"50",value:m,onChange:ne=>g(ne.target.value),onBlur:()=>{const ne=parseInt(m);!isNaN(ne)&&ne>=50?f(ne):(g("50"),f(50))},onKeyDown:ne=>{if(ne.key==="Enter"){const K=parseInt(m);!isNaN(K)&&K>=50?f(K):(g("50"),f(50))}},placeholder:"最少50个",className:"w-[120px]"}),l.jsx(de,{onClick:()=>G(),variant:"outline",size:"sm",disabled:e,children:l.jsx(Ls,{className:ve("h-4 w-4",e&&"animate-spin")})})]})]})]}),l.jsx("div",{className:"flex-1 relative",children:e?l.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:l.jsxs("div",{className:"text-center",children:[l.jsx(Ls,{className:"h-8 w-8 animate-spin mx-auto mb-2 text-muted-foreground"}),l.jsx("p",{className:"text-muted-foreground",children:"加载知识图谱中..."})]})}):_.length===0?l.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:l.jsxs("div",{className:"text-center",children:[l.jsx(A3,{className:"h-12 w-12 mx-auto mb-4 text-muted-foreground"}),l.jsx("h3",{className:"text-lg font-semibold mb-2",children:"知识库为空"}),l.jsx("p",{className:"text-muted-foreground",children:"请先导入知识数据"})]})}):l.jsxs(hV,{nodes:_,edges:L,onNodesChange:M,onEdgesChange:I,onNodeClick:V,onEdgeClick:te,nodeTypes:zje,fitView:!0,minZoom:.05,maxZoom:1.5,defaultViewport:{x:0,y:0,zoom:.5},elevateNodesOnSelect:Q<=500,nodesDraggable:Q<=1e3,attributionPosition:"bottom-left",children:[l.jsx(v6e,{variant:aa.Dots,gap:12,size:1}),l.jsx(h6e,{}),Q<=500&&l.jsx(i6e,{nodeColor:J,nodeBorderRadius:8,pannable:!0,zoomable:!0}),l.jsxs(Ly,{position:"top-right",className:"bg-background/95 backdrop-blur-sm rounded-lg border p-3 shadow-lg",children:[l.jsx("div",{className:"text-sm font-semibold mb-2",children:"图例"}),l.jsxs("div",{className:"space-y-2 text-xs",children:[l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700"}),l.jsx("span",{children:"实体节点"})]}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700"}),l.jsx("span",{children:"段落节点"})]}),Q>200&&l.jsxs("div",{className:"mt-2 pt-2 border-t text-yellow-600 dark:text-yellow-500",children:[l.jsx("div",{className:"font-semibold",children:"性能模式"}),l.jsx("div",{children:"已禁用动画"}),Q>500&&l.jsx("div",{children:"已禁用缩略图"})]})]})]})]})}),l.jsx(xr,{open:!!ee,onOpenChange:ne=>!ne&&z(null),children:l.jsxs(lr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[l.jsx(or,{children:l.jsx(cr,{children:"节点详情"})}),ee&&l.jsxs("div",{className:"space-y-4",children:[l.jsx("div",{className:"grid grid-cols-2 gap-4",children:l.jsxs("div",{children:[l.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"类型"}),l.jsx("div",{className:"mt-1",children:l.jsx(In,{variant:ee.type==="entity"?"default":"secondary",children:ee.type==="entity"?"🏷️ 实体":"📄 段落"})})]})}),l.jsxs("div",{children:[l.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"ID"}),l.jsx("code",{className:"mt-1 block p-2 bg-muted rounded text-xs break-all",children:ee.id})]}),l.jsxs("div",{children:[l.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"内容"}),l.jsx(hn,{className:"mt-1 h-40 p-3 bg-muted rounded",children:l.jsx("p",{className:"text-sm whitespace-pre-wrap",children:ee.content})})]})]})]})}),l.jsx(xr,{open:!!H,onOpenChange:ne=>!ne&&B(null),children:l.jsxs(lr,{className:"max-w-2xl max-h-[80vh] overflow-hidden flex flex-col",children:[l.jsx(or,{children:l.jsx(cr,{children:"边详情"})}),H&&l.jsx(hn,{className:"flex-1 pr-4",children:l.jsxs("div",{className:"space-y-4",children:[l.jsxs("div",{className:"flex items-center gap-4",children:[l.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-blue-50 dark:bg-blue-950 rounded border-2 border-blue-200 dark:border-blue-800",children:[l.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"源节点"}),l.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:H.source.content}),l.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[H.source.id.slice(0,40),"..."]})]}),l.jsx("div",{className:"text-2xl text-muted-foreground flex-shrink-0",children:"→"}),l.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-green-50 dark:bg-green-950 rounded border-2 border-green-200 dark:border-green-800",children:[l.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"目标节点"}),l.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:H.target.content}),l.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[H.target.id.slice(0,40),"..."]})]})]}),l.jsxs("div",{children:[l.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"权重"}),l.jsx("div",{className:"mt-1",children:l.jsx(In,{variant:"outline",className:"text-base font-mono",children:H.edge.weight.toFixed(4)})})]})]})})]})}),l.jsx(Nn,{open:w,onOpenChange:S,children:l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"加载知识图谱"}),l.jsxs(bn,{children:["知识图谱的动态展示会消耗较多系统资源。",l.jsx("br",{}),"确定要加载知识图谱吗?"]})]}),l.jsxs(vn,{children:[l.jsx(Sn,{onClick:()=>t({to:"/"}),children:"取消 (返回首页)"}),l.jsx(wn,{onClick:W,children:"确认加载"})]})]})}),l.jsx(Nn,{open:C,onOpenChange:T,children:l.jsxs(gn,{children:[l.jsxs(xn,{children:[l.jsx(yn,{children:"⚠️ 节点数量较多"}),l.jsx(bn,{asChild:!0,children:l.jsxs("div",{children:[l.jsxs("p",{children:["您正在尝试加载 ",l.jsx("strong",{className:"text-orange-600",children:h>=1e4?"全部 (最多10000个)":h})," 个节点。"]}),l.jsx("p",{className:"mt-4",children:"节点数量过多可能导致:"}),l.jsxs("ul",{className:"list-disc list-inside mt-2 space-y-1",children:[l.jsx("li",{children:"页面加载时间较长"}),l.jsx("li",{children:"浏览器卡顿或崩溃"}),l.jsx("li",{children:"系统资源占用过高"})]}),l.jsx("p",{className:"mt-4",children:"建议先选择较少的节点数量 (50-200 个)。"})]})})]}),l.jsxs(vn,{children:[l.jsx(Sn,{onClick:()=>{T(!1),h>200&&(f(50),y(!1))},children:"取消"}),l.jsx(wn,{onClick:F,className:"bg-orange-600 hover:bg-orange-700",children:"我了解风险,继续加载"})]})]})})]})}function Pd(t,e,n){let r=n.initialDeps??[],s;function i(){var a,o,c,h;let f;n.key&&((a=n.debug)!=null&&a.call(n))&&(f=Date.now());const m=t();if(!(m.length!==r.length||m.some((y,w)=>r[w]!==y)))return s;r=m;let x;if(n.key&&((o=n.debug)!=null&&o.call(n))&&(x=Date.now()),s=e(...m),n.key&&((c=n.debug)!=null&&c.call(n))){const y=Math.round((Date.now()-f)*100)/100,w=Math.round((Date.now()-x)*100)/100,S=w/16,k=(N,C)=>{for(N=String(N);N.length{r=a},i}function JR(t,e){if(t===void 0)throw new Error("Unexpected undefined");return t}const Ije=(t,e)=>Math.abs(t-e)<1.01,Bje=(t,e,n)=>{let r;return function(...s){t.clearTimeout(r),r=t.setTimeout(()=>e.apply(this,s),n)}},eD=t=>{const{offsetWidth:e,offsetHeight:n}=t;return{width:e,height:n}},qje=t=>t,Fje=t=>{const e=Math.max(t.startIndex-t.overscan,0),n=Math.min(t.endIndex+t.overscan,t.count-1),r=[];for(let s=e;s<=n;s++)r.push(s);return r},$je=(t,e)=>{const n=t.scrollElement;if(!n)return;const r=t.targetWindow;if(!r)return;const s=a=>{const{width:o,height:c}=a;e({width:Math.round(o),height:Math.round(c)})};if(s(eD(n)),!r.ResizeObserver)return()=>{};const i=new r.ResizeObserver(a=>{const o=()=>{const c=a[0];if(c?.borderBoxSize){const h=c.borderBoxSize[0];if(h){s({width:h.inlineSize,height:h.blockSize});return}}s(eD(n))};t.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(o):o()});return i.observe(n,{box:"border-box"}),()=>{i.unobserve(n)}},tD={passive:!0},nD=typeof window>"u"?!0:"onscrollend"in window,Qje=(t,e)=>{const n=t.scrollElement;if(!n)return;const r=t.targetWindow;if(!r)return;let s=0;const i=t.options.useScrollendEvent&&nD?()=>{}:Bje(r,()=>{e(s,!1)},t.options.isScrollingResetDelay),a=f=>()=>{const{horizontal:m,isRtl:g}=t.options;s=m?n.scrollLeft*(g&&-1||1):n.scrollTop,i(),e(s,f)},o=a(!0),c=a(!1);c(),n.addEventListener("scroll",o,tD);const h=t.options.useScrollendEvent&&nD;return h&&n.addEventListener("scrollend",c,tD),()=>{n.removeEventListener("scroll",o),h&&n.removeEventListener("scrollend",c)}},Hje=(t,e,n)=>{if(e?.borderBoxSize){const r=e.borderBoxSize[0];if(r)return Math.round(r[n.options.horizontal?"inlineSize":"blockSize"])}return t[n.options.horizontal?"offsetWidth":"offsetHeight"]},Vje=(t,{adjustments:e=0,behavior:n},r)=>{var s,i;const a=t+e;(i=(s=r.scrollElement)==null?void 0:s.scrollTo)==null||i.call(s,{[r.options.horizontal?"left":"top"]:a,behavior:n})};class Uje{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.measurementsCache=[],this.itemSizeCache=new Map,this.pendingMeasuredCacheIndexes=[],this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.observer=(()=>{let n=null;const r=()=>n||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:n=new this.targetWindow.ResizeObserver(s=>{s.forEach(i=>{const a=()=>{this._measureElement(i.target,i)};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(a):a()})}));return{disconnect:()=>{var s;(s=r())==null||s.disconnect(),n=null},observe:s=>{var i;return(i=r())==null?void 0:i.observe(s,{box:"border-box"})},unobserve:s=>{var i;return(i=r())==null?void 0:i.unobserve(s)}}})(),this.range=null,this.setOptions=n=>{Object.entries(n).forEach(([r,s])=>{typeof s>"u"&&delete n[r]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:qje,rangeExtractor:Fje,onChange:()=>{},measureElement:Hje,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,...n}},this.notify=n=>{var r,s;(s=(r=this.options).onChange)==null||s.call(r,this,n)},this.maybeNotify=Pd(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),n=>{this.notify(n)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(n=>n()),this.unsubs=[],this.observer.disconnect(),this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var n;const r=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==r){if(this.cleanup(),!r){this.maybeNotify();return}this.scrollElement=r,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((n=this.scrollElement)==null?void 0:n.window)??null,this.elementsCache.forEach(s=>{this.observer.observe(s)}),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0}),this.unsubs.push(this.options.observeElementRect(this,s=>{this.scrollRect=s,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(s,i)=>{this.scrollAdjustments=0,this.scrollDirection=i?this.getScrollOffset()this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(n,r)=>{const s=new Map,i=new Map;for(let a=r-1;a>=0;a--){const o=n[a];if(s.has(o.lane))continue;const c=i.get(o.lane);if(c==null||o.end>c.end?i.set(o.lane,o):o.enda.end===o.end?a.index-o.index:a.end-o.end)[0]:void 0},this.getMeasurementOptions=Pd(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled],(n,r,s,i,a)=>(this.pendingMeasuredCacheIndexes=[],{count:n,paddingStart:r,scrollMargin:s,getItemKey:i,enabled:a}),{key:!1}),this.getMeasurements=Pd(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:n,paddingStart:r,scrollMargin:s,getItemKey:i,enabled:a},o)=>{if(!a)return this.measurementsCache=[],this.itemSizeCache.clear(),[];this.measurementsCache.length===0&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(f=>{this.itemSizeCache.set(f.key,f.size)}));const c=this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[];const h=this.measurementsCache.slice(0,c);for(let f=c;fthis.options.debug}),this.calculateRange=Pd(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(n,r,s,i)=>this.range=n.length>0&&r>0?Wje({measurements:n,outerSize:r,scrollOffset:s,lanes:i}):null,{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=Pd(()=>{let n=null,r=null;const s=this.calculateRange();return s&&(n=s.startIndex,r=s.endIndex),this.maybeNotify.updateDeps([this.isScrolling,n,r]),[this.options.rangeExtractor,this.options.overscan,this.options.count,n,r]},(n,r,s,i,a)=>i===null||a===null?[]:n({startIndex:i,endIndex:a,overscan:r,count:s}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=n=>{const r=this.options.indexAttribute,s=n.getAttribute(r);return s?parseInt(s,10):(console.warn(`Missing attribute name '${r}={index}' on measured element.`),-1)},this._measureElement=(n,r)=>{const s=this.indexFromElement(n),i=this.measurementsCache[s];if(!i)return;const a=i.key,o=this.elementsCache.get(a);o!==n&&(o&&this.observer.unobserve(o),this.observer.observe(n),this.elementsCache.set(a,n)),n.isConnected&&this.resizeItem(s,this.options.measureElement(n,r,this))},this.resizeItem=(n,r)=>{const s=this.measurementsCache[n];if(!s)return;const i=this.itemSizeCache.get(s.key)??s.size,a=r-i;a!==0&&((this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(s,a,this):s.start{if(!n){this.elementsCache.forEach((r,s)=>{r.isConnected||(this.observer.unobserve(r),this.elementsCache.delete(s))});return}this._measureElement(n,void 0)},this.getVirtualItems=Pd(()=>[this.getVirtualIndexes(),this.getMeasurements()],(n,r)=>{const s=[];for(let i=0,a=n.length;ithis.options.debug}),this.getVirtualItemForOffset=n=>{const r=this.getMeasurements();if(r.length!==0)return JR(r[LV(0,r.length-1,s=>JR(r[s]).start,n)])},this.getOffsetForAlignment=(n,r,s=0)=>{const i=this.getSize(),a=this.getScrollOffset();r==="auto"&&(r=n>=a+i?"end":"start"),r==="center"?n+=(s-i)/2:r==="end"&&(n-=i);const o=this.getTotalSize()+this.options.scrollMargin-i;return Math.max(Math.min(o,n),0)},this.getOffsetForIndex=(n,r="auto")=>{n=Math.max(0,Math.min(n,this.options.count-1));const s=this.measurementsCache[n];if(!s)return;const i=this.getSize(),a=this.getScrollOffset();if(r==="auto")if(s.end>=a+i-this.options.scrollPaddingEnd)r="end";else if(s.start<=a+this.options.scrollPaddingStart)r="start";else return[a,r];const o=r==="end"?s.end+this.options.scrollPaddingEnd:s.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(o,r,s.size),r]},this.isDynamicMode=()=>this.elementsCache.size>0,this.scrollToOffset=(n,{align:r="start",behavior:s}={})=>{s==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getOffsetForAlignment(n,r),{adjustments:void 0,behavior:s})},this.scrollToIndex=(n,{align:r="auto",behavior:s}={})=>{s==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),n=Math.max(0,Math.min(n,this.options.count-1));let i=0;const a=10,o=h=>{if(!this.targetWindow)return;const f=this.getOffsetForIndex(n,h);if(!f){console.warn("Failed to get offset for index:",n);return}const[m,g]=f;this._scrollToOffset(m,{adjustments:void 0,behavior:s}),this.targetWindow.requestAnimationFrame(()=>{const x=this.getScrollOffset(),y=this.getOffsetForIndex(n,g);if(!y){console.warn("Failed to get offset for index:",n);return}Ije(y[0],x)||c(g)})},c=h=>{this.targetWindow&&(i++,io(h)):console.warn(`Failed to scroll to index ${n} after ${a} attempts.`))};o(r)},this.scrollBy=(n,{behavior:r}={})=>{r==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getScrollOffset()+n,{adjustments:void 0,behavior:r})},this.getTotalSize=()=>{var n;const r=this.getMeasurements();let s;if(r.length===0)s=this.options.paddingStart;else if(this.options.lanes===1)s=((n=r[r.length-1])==null?void 0:n.end)??0;else{const i=Array(this.options.lanes).fill(null);let a=r.length-1;for(;a>=0&&i.some(o=>o===null);){const o=r[a];i[o.lane]===null&&(i[o.lane]=o.end),a--}s=Math.max(...i.filter(o=>o!==null))}return Math.max(s-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(n,{adjustments:r,behavior:s})=>{this.options.scrollToFn(n,{behavior:s,adjustments:r},this)},this.measure=()=>{this.itemSizeCache=new Map,this.notify(!1)},this.setOptions(e)}}const LV=(t,e,n,r)=>{for(;t<=e;){const s=(t+e)/2|0,i=n(s);if(ir)e=s-1;else return s}return t>0?t-1:0};function Wje({measurements:t,outerSize:e,scrollOffset:n,lanes:r}){const s=t.length-1,i=c=>t[c].start;if(t.length<=r)return{startIndex:0,endIndex:s};let a=LV(0,s,i,n),o=a;if(r===1)for(;o1){const c=Array(r).fill(0);for(;of=0&&h.some(f=>f>=n);){const f=t[a];h[f.lane]=f.start,a--}a=Math.max(0,a-a%r),o=Math.min(s,o+(r-1-o%r))}return{startIndex:a,endIndex:o}}const rD=typeof document<"u"?b.useLayoutEffect:b.useEffect;function Gje(t){const e=b.useReducer(()=>({}),{})[1],n={...t,onChange:(s,i)=>{var a;i?fu.flushSync(e):e(),(a=t.onChange)==null||a.call(t,s,i)}},[r]=b.useState(()=>new Uje(n));return r.setOptions(n),rD(()=>r._didMount(),[]),rD(()=>r._willUpdate()),r}function Xje(t){return Gje({observeElementRect:$je,observeElementOffset:Qje,scrollToFn:Vje,...t})}function Yje(t,e,n="long"){return new Intl.DateTimeFormat("en-US",{hour:"numeric",timeZone:t,timeZoneName:n}).format(e).split(/\s/g).slice(2).join(" ")}const Kje={},km={};function yu(t,e){try{const r=(Kje[t]||=new Intl.DateTimeFormat("en-US",{timeZone:t,timeZoneName:"longOffset"}).format)(e).split("GMT")[1];return r in km?km[r]:sD(r,r.split(":"))}catch{if(t in km)return km[t];const n=t?.match(Zje);return n?sD(t,n.slice(1)):NaN}}const Zje=/([+-]\d\d):?(\d\d)?/;function sD(t,e){const n=+(e[0]||0),r=+(e[1]||0),s=+(e[2]||0)/60;return km[t]=n*60+r>0?n*60+r+s:n*60-r-s}class ll extends Date{constructor(...e){super(),e.length>1&&typeof e[e.length-1]=="string"&&(this.timeZone=e.pop()),this.internal=new Date,isNaN(yu(this.timeZone,this))?this.setTime(NaN):e.length?typeof e[0]=="number"&&(e.length===1||e.length===2&&typeof e[1]!="number")?this.setTime(e[0]):typeof e[0]=="string"?this.setTime(+new Date(e[0])):e[0]instanceof Date?this.setTime(+e[0]):(this.setTime(+new Date(...e)),IV(this),Dk(this)):this.setTime(Date.now())}static tz(e,...n){return n.length?new ll(...n,e):new ll(Date.now(),e)}withTimeZone(e){return new ll(+this,e)}getTimezoneOffset(){const e=-yu(this.timeZone,this);return e>0?Math.floor(e):Math.ceil(e)}setTime(e){return Date.prototype.setTime.apply(this,arguments),Dk(this),+this}[Symbol.for("constructDateFrom")](e){return new ll(+new Date(e),this.timeZone)}}const iD=/^(get|set)(?!UTC)/;Object.getOwnPropertyNames(Date.prototype).forEach(t=>{if(!iD.test(t))return;const e=t.replace(iD,"$1UTC");ll.prototype[e]&&(t.startsWith("get")?ll.prototype[t]=function(){return this.internal[e]()}:(ll.prototype[t]=function(){return Date.prototype[e].apply(this.internal,arguments),Jje(this),+this},ll.prototype[e]=function(){return Date.prototype[e].apply(this,arguments),Dk(this),+this}))});function Dk(t){t.internal.setTime(+t),t.internal.setUTCSeconds(t.internal.getUTCSeconds()-Math.round(-yu(t.timeZone,t)*60))}function Jje(t){Date.prototype.setFullYear.call(t,t.internal.getUTCFullYear(),t.internal.getUTCMonth(),t.internal.getUTCDate()),Date.prototype.setHours.call(t,t.internal.getUTCHours(),t.internal.getUTCMinutes(),t.internal.getUTCSeconds(),t.internal.getUTCMilliseconds()),IV(t)}function IV(t){const e=yu(t.timeZone,t),n=e>0?Math.floor(e):Math.ceil(e),r=new Date(+t);r.setUTCHours(r.getUTCHours()-1);const s=-new Date(+t).getTimezoneOffset(),i=-new Date(+r).getTimezoneOffset(),a=s-i,o=Date.prototype.getHours.apply(t)!==t.internal.getUTCHours();a&&o&&t.internal.setUTCMinutes(t.internal.getUTCMinutes()+a);const c=s-n;c&&Date.prototype.setUTCMinutes.call(t,Date.prototype.getUTCMinutes.call(t)+c);const h=new Date(+t);h.setUTCSeconds(0);const f=s>0?h.getSeconds():(h.getSeconds()-60)%60,m=Math.round(-(yu(t.timeZone,t)*60))%60;(m||f)&&(t.internal.setUTCSeconds(t.internal.getUTCSeconds()+m),Date.prototype.setUTCSeconds.call(t,Date.prototype.getUTCSeconds.call(t)+m+f));const g=yu(t.timeZone,t),x=g>0?Math.floor(g):Math.ceil(g),w=-new Date(+t).getTimezoneOffset()-x,S=x!==n,k=w-c;if(S&&k){Date.prototype.setUTCMinutes.call(t,Date.prototype.getUTCMinutes.call(t)+k);const N=yu(t.timeZone,t),C=N>0?Math.floor(N):Math.ceil(N),T=x-C;T&&(t.internal.setUTCMinutes(t.internal.getUTCMinutes()+T),Date.prototype.setUTCMinutes.call(t,Date.prototype.getUTCMinutes.call(t)+T))}}class ks extends ll{static tz(e,...n){return n.length?new ks(...n,e):new ks(Date.now(),e)}toISOString(){const[e,n,r]=this.tzComponents(),s=`${e}${n}:${r}`;return this.internal.toISOString().slice(0,-1)+s}toString(){return`${this.toDateString()} ${this.toTimeString()}`}toDateString(){const[e,n,r,s]=this.internal.toUTCString().split(" ");return`${e?.slice(0,-1)} ${r} ${n} ${s}`}toTimeString(){const e=this.internal.toUTCString().split(" ")[4],[n,r,s]=this.tzComponents();return`${e} GMT${n}${r}${s} (${Yje(this.timeZone,this)})`}toLocaleString(e,n){return Date.prototype.toLocaleString.call(this,e,{...n,timeZone:n?.timeZone||this.timeZone})}toLocaleDateString(e,n){return Date.prototype.toLocaleDateString.call(this,e,{...n,timeZone:n?.timeZone||this.timeZone})}toLocaleTimeString(e,n){return Date.prototype.toLocaleTimeString.call(this,e,{...n,timeZone:n?.timeZone||this.timeZone})}tzComponents(){const e=this.getTimezoneOffset(),n=e>0?"-":"+",r=String(Math.floor(Math.abs(e)/60)).padStart(2,"0"),s=String(Math.abs(e)%60).padStart(2,"0");return[n,r,s]}withTimeZone(e){return new ks(+this,e)}[Symbol.for("constructDateFrom")](e){return new ks(+new Date(e),this.timeZone)}}const BV=6048e5,eOe=864e5,aD=Symbol.for("constructDateFrom");function Vr(t,e){return typeof t=="function"?t(e):t&&typeof t=="object"&&aD in t?t[aD](e):t instanceof Date?new t.constructor(e):new Date(e)}function Hn(t,e){return Vr(e||t,t)}function qV(t,e,n){const r=Hn(t,n?.in);return isNaN(e)?Vr(t,NaN):(e&&r.setDate(r.getDate()+e),r)}function FV(t,e,n){const r=Hn(t,n?.in);if(isNaN(e))return Vr(t,NaN);if(!e)return r;const s=r.getDate(),i=Vr(t,r.getTime());i.setMonth(r.getMonth()+e+1,0);const a=i.getDate();return s>=a?i:(r.setFullYear(i.getFullYear(),i.getMonth(),s),r)}let tOe={};function vp(){return tOe}function Ec(t,e){const n=vp(),r=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,s=Hn(t,e?.in),i=s.getDay(),a=(i=i.getTime()?r+1:n.getTime()>=o.getTime()?r:r-1}function lD(t){const e=Hn(t),n=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return n.setUTCFullYear(e.getFullYear()),+t-+n}function Wu(t,...e){const n=Vr.bind(null,t||e.find(r=>typeof r=="object"));return e.map(n)}function _0(t,e){const n=Hn(t,e?.in);return n.setHours(0,0,0,0),n}function QV(t,e,n){const[r,s]=Wu(n?.in,t,e),i=_0(r),a=_0(s),o=+i-lD(i),c=+a-lD(a);return Math.round((o-c)/eOe)}function nOe(t,e){const n=$V(t,e),r=Vr(t,0);return r.setFullYear(n,0,4),r.setHours(0,0,0,0),E0(r)}function rOe(t,e,n){return qV(t,e*7,n)}function sOe(t,e,n){return FV(t,e*12,n)}function iOe(t,e){let n,r=e?.in;return t.forEach(s=>{!r&&typeof s=="object"&&(r=Vr.bind(null,s));const i=Hn(s,r);(!n||n{!r&&typeof s=="object"&&(r=Vr.bind(null,s));const i=Hn(s,r);(!n||n>i||isNaN(+i))&&(n=i)}),Vr(r,n||NaN)}function lOe(t,e,n){const[r,s]=Wu(n?.in,t,e);return+_0(r)==+_0(s)}function HV(t){return t instanceof Date||typeof t=="object"&&Object.prototype.toString.call(t)==="[object Date]"}function oOe(t){return!(!HV(t)&&typeof t!="number"||isNaN(+Hn(t)))}function cOe(t,e,n){const[r,s]=Wu(n?.in,t,e),i=r.getFullYear()-s.getFullYear(),a=r.getMonth()-s.getMonth();return i*12+a}function uOe(t,e){const n=Hn(t,e?.in),r=n.getMonth();return n.setFullYear(n.getFullYear(),r+1,0),n.setHours(23,59,59,999),n}function VV(t,e){const[n,r]=Wu(t,e.start,e.end);return{start:n,end:r}}function dOe(t,e){const{start:n,end:r}=VV(e?.in,t);let s=+n>+r;const i=s?+n:+r,a=s?r:n;a.setHours(0,0,0,0),a.setDate(1);let o=1;const c=[];for(;+a<=i;)c.push(Vr(n,a)),a.setMonth(a.getMonth()+o);return s?c.reverse():c}function hOe(t,e){const n=Hn(t,e?.in);return n.setDate(1),n.setHours(0,0,0,0),n}function fOe(t,e){const n=Hn(t,e?.in),r=n.getFullYear();return n.setFullYear(r+1,0,0),n.setHours(23,59,59,999),n}function UV(t,e){const n=Hn(t,e?.in);return n.setFullYear(n.getFullYear(),0,1),n.setHours(0,0,0,0),n}function mOe(t,e){const{start:n,end:r}=VV(e?.in,t);let s=+n>+r;const i=s?+n:+r,a=s?r:n;a.setHours(0,0,0,0),a.setMonth(0,1);let o=1;const c=[];for(;+a<=i;)c.push(Vr(n,a)),a.setFullYear(a.getFullYear()+o);return s?c.reverse():c}function WV(t,e){const n=vp(),r=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,s=Hn(t,e?.in),i=s.getDay(),a=(i{let r;const s=gOe[t];return typeof s=="string"?r=s:e===1?r=s.one:r=s.other.replace("{{count}}",e.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"in "+r:r+" ago":r};function fh(t){return(e={})=>{const n=e.width?String(e.width):t.defaultWidth;return t.formats[n]||t.formats[t.defaultWidth]}}const vOe={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},yOe={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},bOe={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},wOe={date:fh({formats:vOe,defaultWidth:"full"}),time:fh({formats:yOe,defaultWidth:"full"}),dateTime:fh({formats:bOe,defaultWidth:"full"})},SOe={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},kOe=(t,e,n,r)=>SOe[t];function el(t){return(e,n)=>{const r=n?.context?String(n.context):"standalone";let s;if(r==="formatting"&&t.formattingValues){const a=t.defaultFormattingWidth||t.defaultWidth,o=n?.width?String(n.width):a;s=t.formattingValues[o]||t.formattingValues[a]}else{const a=t.defaultWidth,o=n?.width?String(n.width):t.defaultWidth;s=t.values[o]||t.values[a]}const i=t.argumentCallback?t.argumentCallback(e):e;return s[i]}}const jOe={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},OOe={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},NOe={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},COe={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},TOe={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},EOe={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},_Oe=(t,e)=>{const n=Number(t),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},MOe={ordinalNumber:_Oe,era:el({values:jOe,defaultWidth:"wide"}),quarter:el({values:OOe,defaultWidth:"wide",argumentCallback:t=>t-1}),month:el({values:NOe,defaultWidth:"wide"}),day:el({values:COe,defaultWidth:"wide"}),dayPeriod:el({values:TOe,defaultWidth:"wide",formattingValues:EOe,defaultFormattingWidth:"wide"})};function tl(t){return(e,n={})=>{const r=n.width,s=r&&t.matchPatterns[r]||t.matchPatterns[t.defaultMatchWidth],i=e.match(s);if(!i)return null;const a=i[0],o=r&&t.parsePatterns[r]||t.parsePatterns[t.defaultParseWidth],c=Array.isArray(o)?ROe(o,m=>m.test(a)):AOe(o,m=>m.test(a));let h;h=t.valueCallback?t.valueCallback(c):c,h=n.valueCallback?n.valueCallback(h):h;const f=e.slice(a.length);return{value:h,rest:f}}}function AOe(t,e){for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&e(t[n]))return n}function ROe(t,e){for(let n=0;n{const r=e.match(t.matchPattern);if(!r)return null;const s=r[0],i=e.match(t.parsePattern);if(!i)return null;let a=t.valueCallback?t.valueCallback(i[0]):i[0];a=n.valueCallback?n.valueCallback(a):a;const o=e.slice(s.length);return{value:a,rest:o}}}const DOe=/^(\d+)(th|st|nd|rd)?/i,zOe=/\d+/i,POe={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},LOe={any:[/^b/i,/^(a|c)/i]},IOe={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},BOe={any:[/1/i,/2/i,/3/i,/4/i]},qOe={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},FOe={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},$Oe={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},QOe={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},HOe={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},VOe={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},UOe={ordinalNumber:GV({matchPattern:DOe,parsePattern:zOe,valueCallback:t=>parseInt(t,10)}),era:tl({matchPatterns:POe,defaultMatchWidth:"wide",parsePatterns:LOe,defaultParseWidth:"any"}),quarter:tl({matchPatterns:IOe,defaultMatchWidth:"wide",parsePatterns:BOe,defaultParseWidth:"any",valueCallback:t=>t+1}),month:tl({matchPatterns:qOe,defaultMatchWidth:"wide",parsePatterns:FOe,defaultParseWidth:"any"}),day:tl({matchPatterns:$Oe,defaultMatchWidth:"wide",parsePatterns:QOe,defaultParseWidth:"any"}),dayPeriod:tl({matchPatterns:HOe,defaultMatchWidth:"any",parsePatterns:VOe,defaultParseWidth:"any"})},EO={code:"en-US",formatDistance:xOe,formatLong:wOe,formatRelative:kOe,localize:MOe,match:UOe,options:{weekStartsOn:0,firstWeekContainsDate:1}};function WOe(t,e){const n=Hn(t,e?.in);return QV(n,UV(n))+1}function XV(t,e){const n=Hn(t,e?.in),r=+E0(n)-+nOe(n);return Math.round(r/BV)+1}function YV(t,e){const n=Hn(t,e?.in),r=n.getFullYear(),s=vp(),i=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??s.firstWeekContainsDate??s.locale?.options?.firstWeekContainsDate??1,a=Vr(e?.in||t,0);a.setFullYear(r+1,0,i),a.setHours(0,0,0,0);const o=Ec(a,e),c=Vr(e?.in||t,0);c.setFullYear(r,0,i),c.setHours(0,0,0,0);const h=Ec(c,e);return+n>=+o?r+1:+n>=+h?r:r-1}function GOe(t,e){const n=vp(),r=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,s=YV(t,e),i=Vr(e?.in||t,0);return i.setFullYear(s,0,r),i.setHours(0,0,0,0),Ec(i,e)}function KV(t,e){const n=Hn(t,e?.in),r=+Ec(n,e)-+GOe(n,e);return Math.round(r/BV)+1}function Ln(t,e){const n=t<0?"-":"",r=Math.abs(t).toString().padStart(e,"0");return n+r}const rc={y(t,e){const n=t.getFullYear(),r=n>0?n:1-n;return Ln(e==="yy"?r%100:r,e.length)},M(t,e){const n=t.getMonth();return e==="M"?String(n+1):Ln(n+1,2)},d(t,e){return Ln(t.getDate(),e.length)},a(t,e){const n=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];case"aaaa":default:return n==="am"?"a.m.":"p.m."}},h(t,e){return Ln(t.getHours()%12||12,e.length)},H(t,e){return Ln(t.getHours(),e.length)},m(t,e){return Ln(t.getMinutes(),e.length)},s(t,e){return Ln(t.getSeconds(),e.length)},S(t,e){const n=e.length,r=t.getMilliseconds(),s=Math.trunc(r*Math.pow(10,n-3));return Ln(s,e.length)}},Ld={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},oD={G:function(t,e,n){const r=t.getFullYear()>0?1:0;switch(e){case"G":case"GG":case"GGG":return n.era(r,{width:"abbreviated"});case"GGGGG":return n.era(r,{width:"narrow"});case"GGGG":default:return n.era(r,{width:"wide"})}},y:function(t,e,n){if(e==="yo"){const r=t.getFullYear(),s=r>0?r:1-r;return n.ordinalNumber(s,{unit:"year"})}return rc.y(t,e)},Y:function(t,e,n,r){const s=YV(t,r),i=s>0?s:1-s;if(e==="YY"){const a=i%100;return Ln(a,2)}return e==="Yo"?n.ordinalNumber(i,{unit:"year"}):Ln(i,e.length)},R:function(t,e){const n=$V(t);return Ln(n,e.length)},u:function(t,e){const n=t.getFullYear();return Ln(n,e.length)},Q:function(t,e,n){const r=Math.ceil((t.getMonth()+1)/3);switch(e){case"Q":return String(r);case"QQ":return Ln(r,2);case"Qo":return n.ordinalNumber(r,{unit:"quarter"});case"QQQ":return n.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(r,{width:"narrow",context:"formatting"});case"QQQQ":default:return n.quarter(r,{width:"wide",context:"formatting"})}},q:function(t,e,n){const r=Math.ceil((t.getMonth()+1)/3);switch(e){case"q":return String(r);case"qq":return Ln(r,2);case"qo":return n.ordinalNumber(r,{unit:"quarter"});case"qqq":return n.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(r,{width:"narrow",context:"standalone"});case"qqqq":default:return n.quarter(r,{width:"wide",context:"standalone"})}},M:function(t,e,n){const r=t.getMonth();switch(e){case"M":case"MM":return rc.M(t,e);case"Mo":return n.ordinalNumber(r+1,{unit:"month"});case"MMM":return n.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(r,{width:"narrow",context:"formatting"});case"MMMM":default:return n.month(r,{width:"wide",context:"formatting"})}},L:function(t,e,n){const r=t.getMonth();switch(e){case"L":return String(r+1);case"LL":return Ln(r+1,2);case"Lo":return n.ordinalNumber(r+1,{unit:"month"});case"LLL":return n.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(r,{width:"narrow",context:"standalone"});case"LLLL":default:return n.month(r,{width:"wide",context:"standalone"})}},w:function(t,e,n,r){const s=KV(t,r);return e==="wo"?n.ordinalNumber(s,{unit:"week"}):Ln(s,e.length)},I:function(t,e,n){const r=XV(t);return e==="Io"?n.ordinalNumber(r,{unit:"week"}):Ln(r,e.length)},d:function(t,e,n){return e==="do"?n.ordinalNumber(t.getDate(),{unit:"date"}):rc.d(t,e)},D:function(t,e,n){const r=WOe(t);return e==="Do"?n.ordinalNumber(r,{unit:"dayOfYear"}):Ln(r,e.length)},E:function(t,e,n){const r=t.getDay();switch(e){case"E":case"EE":case"EEE":return n.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(r,{width:"short",context:"formatting"});case"EEEE":default:return n.day(r,{width:"wide",context:"formatting"})}},e:function(t,e,n,r){const s=t.getDay(),i=(s-r.weekStartsOn+8)%7||7;switch(e){case"e":return String(i);case"ee":return Ln(i,2);case"eo":return n.ordinalNumber(i,{unit:"day"});case"eee":return n.day(s,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(s,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(s,{width:"short",context:"formatting"});case"eeee":default:return n.day(s,{width:"wide",context:"formatting"})}},c:function(t,e,n,r){const s=t.getDay(),i=(s-r.weekStartsOn+8)%7||7;switch(e){case"c":return String(i);case"cc":return Ln(i,e.length);case"co":return n.ordinalNumber(i,{unit:"day"});case"ccc":return n.day(s,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(s,{width:"narrow",context:"standalone"});case"cccccc":return n.day(s,{width:"short",context:"standalone"});case"cccc":default:return n.day(s,{width:"wide",context:"standalone"})}},i:function(t,e,n){const r=t.getDay(),s=r===0?7:r;switch(e){case"i":return String(s);case"ii":return Ln(s,e.length);case"io":return n.ordinalNumber(s,{unit:"day"});case"iii":return n.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(r,{width:"short",context:"formatting"});case"iiii":default:return n.day(r,{width:"wide",context:"formatting"})}},a:function(t,e,n){const s=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"aaaa":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},b:function(t,e,n){const r=t.getHours();let s;switch(r===12?s=Ld.noon:r===0?s=Ld.midnight:s=r/12>=1?"pm":"am",e){case"b":case"bb":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"bbbb":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},B:function(t,e,n){const r=t.getHours();let s;switch(r>=17?s=Ld.evening:r>=12?s=Ld.afternoon:r>=4?s=Ld.morning:s=Ld.night,e){case"B":case"BB":case"BBB":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"BBBB":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},h:function(t,e,n){if(e==="ho"){let r=t.getHours()%12;return r===0&&(r=12),n.ordinalNumber(r,{unit:"hour"})}return rc.h(t,e)},H:function(t,e,n){return e==="Ho"?n.ordinalNumber(t.getHours(),{unit:"hour"}):rc.H(t,e)},K:function(t,e,n){const r=t.getHours()%12;return e==="Ko"?n.ordinalNumber(r,{unit:"hour"}):Ln(r,e.length)},k:function(t,e,n){let r=t.getHours();return r===0&&(r=24),e==="ko"?n.ordinalNumber(r,{unit:"hour"}):Ln(r,e.length)},m:function(t,e,n){return e==="mo"?n.ordinalNumber(t.getMinutes(),{unit:"minute"}):rc.m(t,e)},s:function(t,e,n){return e==="so"?n.ordinalNumber(t.getSeconds(),{unit:"second"}):rc.s(t,e)},S:function(t,e){return rc.S(t,e)},X:function(t,e,n){const r=t.getTimezoneOffset();if(r===0)return"Z";switch(e){case"X":return uD(r);case"XXXX":case"XX":return uu(r);case"XXXXX":case"XXX":default:return uu(r,":")}},x:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"x":return uD(r);case"xxxx":case"xx":return uu(r);case"xxxxx":case"xxx":default:return uu(r,":")}},O:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"O":case"OO":case"OOO":return"GMT"+cD(r,":");case"OOOO":default:return"GMT"+uu(r,":")}},z:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"z":case"zz":case"zzz":return"GMT"+cD(r,":");case"zzzz":default:return"GMT"+uu(r,":")}},t:function(t,e,n){const r=Math.trunc(+t/1e3);return Ln(r,e.length)},T:function(t,e,n){return Ln(+t,e.length)}};function cD(t,e=""){const n=t>0?"-":"+",r=Math.abs(t),s=Math.trunc(r/60),i=r%60;return i===0?n+String(s):n+String(s)+e+Ln(i,2)}function uD(t,e){return t%60===0?(t>0?"-":"+")+Ln(Math.abs(t)/60,2):uu(t,e)}function uu(t,e=""){const n=t>0?"-":"+",r=Math.abs(t),s=Ln(Math.trunc(r/60),2),i=Ln(r%60,2);return n+s+e+i}const dD=(t,e)=>{switch(t){case"P":return e.date({width:"short"});case"PP":return e.date({width:"medium"});case"PPP":return e.date({width:"long"});case"PPPP":default:return e.date({width:"full"})}},ZV=(t,e)=>{switch(t){case"p":return e.time({width:"short"});case"pp":return e.time({width:"medium"});case"ppp":return e.time({width:"long"});case"pppp":default:return e.time({width:"full"})}},XOe=(t,e)=>{const n=t.match(/(P+)(p+)?/)||[],r=n[1],s=n[2];if(!s)return dD(t,e);let i;switch(r){case"P":i=e.dateTime({width:"short"});break;case"PP":i=e.dateTime({width:"medium"});break;case"PPP":i=e.dateTime({width:"long"});break;case"PPPP":default:i=e.dateTime({width:"full"});break}return i.replace("{{date}}",dD(r,e)).replace("{{time}}",ZV(s,e))},YOe={p:ZV,P:XOe},KOe=/^D+$/,ZOe=/^Y+$/,JOe=["D","DD","YY","YYYY"];function eNe(t){return KOe.test(t)}function tNe(t){return ZOe.test(t)}function nNe(t,e,n){const r=rNe(t,e,n);if(console.warn(r),JOe.includes(t))throw new RangeError(r)}function rNe(t,e,n){const r=t[0]==="Y"?"years":"days of the month";return`Use \`${t.toLowerCase()}\` instead of \`${t}\` (in \`${e}\`) for formatting ${r} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}const sNe=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,iNe=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,aNe=/^'([^]*?)'?$/,lNe=/''/g,oNe=/[a-zA-Z]/;function j1(t,e,n){const r=vp(),s=n?.locale??r.locale??EO,i=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,a=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,o=Hn(t,n?.in);if(!oOe(o))throw new RangeError("Invalid time value");let c=e.match(iNe).map(f=>{const m=f[0];if(m==="p"||m==="P"){const g=YOe[m];return g(f,s.formatLong)}return f}).join("").match(sNe).map(f=>{if(f==="''")return{isToken:!1,value:"'"};const m=f[0];if(m==="'")return{isToken:!1,value:cNe(f)};if(oD[m])return{isToken:!0,value:f};if(m.match(oNe))throw new RangeError("Format string contains an unescaped latin alphabet character `"+m+"`");return{isToken:!1,value:f}});s.localize.preprocessor&&(c=s.localize.preprocessor(o,c));const h={firstWeekContainsDate:i,weekStartsOn:a,locale:s};return c.map(f=>{if(!f.isToken)return f.value;const m=f.value;(!n?.useAdditionalWeekYearTokens&&tNe(m)||!n?.useAdditionalDayOfYearTokens&&eNe(m))&&nNe(m,e,String(t));const g=oD[m[0]];return g(o,m,s.localize,h)}).join("")}function cNe(t){const e=t.match(aNe);return e?e[1].replace(lNe,"'"):t}function uNe(t,e){const n=Hn(t,e?.in),r=n.getFullYear(),s=n.getMonth(),i=Vr(n,0);return i.setFullYear(r,s+1,0),i.setHours(0,0,0,0),i.getDate()}function dNe(t,e){return Hn(t,e?.in).getMonth()}function hNe(t,e){return Hn(t,e?.in).getFullYear()}function fNe(t,e){return+Hn(t)>+Hn(e)}function mNe(t,e){return+Hn(t)<+Hn(e)}function pNe(t,e,n){const[r,s]=Wu(n?.in,t,e);return+Ec(r,n)==+Ec(s,n)}function gNe(t,e,n){const[r,s]=Wu(n?.in,t,e);return r.getFullYear()===s.getFullYear()&&r.getMonth()===s.getMonth()}function xNe(t,e,n){const[r,s]=Wu(n?.in,t,e);return r.getFullYear()===s.getFullYear()}function vNe(t,e,n){const r=Hn(t,n?.in),s=r.getFullYear(),i=r.getDate(),a=Vr(t,0);a.setFullYear(s,e,15),a.setHours(0,0,0,0);const o=uNe(a);return r.setMonth(e,Math.min(i,o)),r}function yNe(t,e,n){const r=Hn(t,n?.in);return isNaN(+r)?Vr(t,NaN):(r.setFullYear(e),r)}const hD=5,bNe=4;function wNe(t,e){const n=e.startOfMonth(t),r=n.getDay()>0?n.getDay():7,s=e.addDays(t,-r+1),i=e.addDays(s,hD*7-1);return e.getMonth(t)===e.getMonth(i)?hD:bNe}function JV(t,e){const n=e.startOfMonth(t),r=n.getDay();return r===1?n:r===0?e.addDays(n,-6):e.addDays(n,-1*(r-1))}function SNe(t,e){const n=JV(t,e),r=wNe(t,e);return e.addDays(n,r*7-1)}class zi{constructor(e,n){this.Date=Date,this.today=()=>this.overrides?.today?this.overrides.today():this.options.timeZone?ks.tz(this.options.timeZone):new this.Date,this.newDate=(r,s,i)=>this.overrides?.newDate?this.overrides.newDate(r,s,i):this.options.timeZone?new ks(r,s,i,this.options.timeZone):new Date(r,s,i),this.addDays=(r,s)=>this.overrides?.addDays?this.overrides.addDays(r,s):qV(r,s),this.addMonths=(r,s)=>this.overrides?.addMonths?this.overrides.addMonths(r,s):FV(r,s),this.addWeeks=(r,s)=>this.overrides?.addWeeks?this.overrides.addWeeks(r,s):rOe(r,s),this.addYears=(r,s)=>this.overrides?.addYears?this.overrides.addYears(r,s):sOe(r,s),this.differenceInCalendarDays=(r,s)=>this.overrides?.differenceInCalendarDays?this.overrides.differenceInCalendarDays(r,s):QV(r,s),this.differenceInCalendarMonths=(r,s)=>this.overrides?.differenceInCalendarMonths?this.overrides.differenceInCalendarMonths(r,s):cOe(r,s),this.eachMonthOfInterval=r=>this.overrides?.eachMonthOfInterval?this.overrides.eachMonthOfInterval(r):dOe(r),this.eachYearOfInterval=r=>{const s=this.overrides?.eachYearOfInterval?this.overrides.eachYearOfInterval(r):mOe(r),i=new Set(s.map(o=>this.getYear(o)));if(i.size===s.length)return s;const a=[];return i.forEach(o=>{a.push(new Date(o,0,1))}),a},this.endOfBroadcastWeek=r=>this.overrides?.endOfBroadcastWeek?this.overrides.endOfBroadcastWeek(r):SNe(r,this),this.endOfISOWeek=r=>this.overrides?.endOfISOWeek?this.overrides.endOfISOWeek(r):pOe(r),this.endOfMonth=r=>this.overrides?.endOfMonth?this.overrides.endOfMonth(r):uOe(r),this.endOfWeek=(r,s)=>this.overrides?.endOfWeek?this.overrides.endOfWeek(r,s):WV(r,this.options),this.endOfYear=r=>this.overrides?.endOfYear?this.overrides.endOfYear(r):fOe(r),this.format=(r,s,i)=>{const a=this.overrides?.format?this.overrides.format(r,s,this.options):j1(r,s,this.options);return this.options.numerals&&this.options.numerals!=="latn"?this.replaceDigits(a):a},this.getISOWeek=r=>this.overrides?.getISOWeek?this.overrides.getISOWeek(r):XV(r),this.getMonth=(r,s)=>this.overrides?.getMonth?this.overrides.getMonth(r,this.options):dNe(r,this.options),this.getYear=(r,s)=>this.overrides?.getYear?this.overrides.getYear(r,this.options):hNe(r,this.options),this.getWeek=(r,s)=>this.overrides?.getWeek?this.overrides.getWeek(r,this.options):KV(r,this.options),this.isAfter=(r,s)=>this.overrides?.isAfter?this.overrides.isAfter(r,s):fNe(r,s),this.isBefore=(r,s)=>this.overrides?.isBefore?this.overrides.isBefore(r,s):mNe(r,s),this.isDate=r=>this.overrides?.isDate?this.overrides.isDate(r):HV(r),this.isSameDay=(r,s)=>this.overrides?.isSameDay?this.overrides.isSameDay(r,s):lOe(r,s),this.isSameMonth=(r,s)=>this.overrides?.isSameMonth?this.overrides.isSameMonth(r,s):gNe(r,s),this.isSameYear=(r,s)=>this.overrides?.isSameYear?this.overrides.isSameYear(r,s):xNe(r,s),this.max=r=>this.overrides?.max?this.overrides.max(r):iOe(r),this.min=r=>this.overrides?.min?this.overrides.min(r):aOe(r),this.setMonth=(r,s)=>this.overrides?.setMonth?this.overrides.setMonth(r,s):vNe(r,s),this.setYear=(r,s)=>this.overrides?.setYear?this.overrides.setYear(r,s):yNe(r,s),this.startOfBroadcastWeek=(r,s)=>this.overrides?.startOfBroadcastWeek?this.overrides.startOfBroadcastWeek(r,this):JV(r,this),this.startOfDay=r=>this.overrides?.startOfDay?this.overrides.startOfDay(r):_0(r),this.startOfISOWeek=r=>this.overrides?.startOfISOWeek?this.overrides.startOfISOWeek(r):E0(r),this.startOfMonth=r=>this.overrides?.startOfMonth?this.overrides.startOfMonth(r):hOe(r),this.startOfWeek=(r,s)=>this.overrides?.startOfWeek?this.overrides.startOfWeek(r,this.options):Ec(r,this.options),this.startOfYear=r=>this.overrides?.startOfYear?this.overrides.startOfYear(r):UV(r),this.options={locale:EO,...e},this.overrides=n}getDigitMap(){const{numerals:e="latn"}=this.options,n=new Intl.NumberFormat("en-US",{numberingSystem:e}),r={};for(let s=0;s<10;s++)r[s.toString()]=n.format(s);return r}replaceDigits(e){const n=this.getDigitMap();return e.replace(/\d/g,r=>n[r]||r)}formatNumber(e){return this.replaceDigits(e.toString())}getMonthYearOrder(){const e=this.options.locale?.code;return e&&zi.yearFirstLocales.has(e)?"year-first":"month-first"}formatMonthYear(e){const{locale:n,timeZone:r,numerals:s}=this.options,i=n?.code;if(i&&zi.yearFirstLocales.has(i))try{return new Intl.DateTimeFormat(i,{month:"long",year:"numeric",timeZone:r,numberingSystem:s}).format(e)}catch{}const a=this.getMonthYearOrder()==="year-first"?"y LLLL":"LLLL y";return this.format(e,a)}}zi.yearFirstLocales=new Set(["eu","hu","ja","ja-Hira","ja-JP","ko","ko-KR","lt","lt-LT","lv","lv-LV","mn","mn-MN","zh","zh-CN","zh-HK","zh-TW"]);const kl=new zi;class eU{constructor(e,n,r=kl){this.date=e,this.displayMonth=n,this.outside=!!(n&&!r.isSameMonth(e,n)),this.dateLib=r}isEqualTo(e){return this.dateLib.isSameDay(e.date,this.date)&&this.dateLib.isSameMonth(e.displayMonth,this.displayMonth)}}class kNe{constructor(e,n){this.date=e,this.weeks=n}}class jNe{constructor(e,n){this.days=n,this.weekNumber=e}}function ONe(t){return he.createElement("button",{...t})}function NNe(t){return he.createElement("span",{...t})}function CNe(t){const{size:e=24,orientation:n="left",className:r}=t;return he.createElement("svg",{className:r,width:e,height:e,viewBox:"0 0 24 24"},n==="up"&&he.createElement("polygon",{points:"6.77 17 12.5 11.43 18.24 17 20 15.28 12.5 8 5 15.28"}),n==="down"&&he.createElement("polygon",{points:"6.77 8 12.5 13.57 18.24 8 20 9.72 12.5 17 5 9.72"}),n==="left"&&he.createElement("polygon",{points:"16 18.112 9.81111111 12 16 5.87733333 14.0888889 4 6 12 14.0888889 20"}),n==="right"&&he.createElement("polygon",{points:"8 18.112 14.18888889 12 8 5.87733333 9.91111111 4 18 12 9.91111111 20"}))}function TNe(t){const{day:e,modifiers:n,...r}=t;return he.createElement("td",{...r})}function ENe(t){const{day:e,modifiers:n,...r}=t,s=he.useRef(null);return he.useEffect(()=>{n.focused&&s.current?.focus()},[n.focused]),he.createElement("button",{ref:s,...r})}var yt;(function(t){t.Root="root",t.Chevron="chevron",t.Day="day",t.DayButton="day_button",t.CaptionLabel="caption_label",t.Dropdowns="dropdowns",t.Dropdown="dropdown",t.DropdownRoot="dropdown_root",t.Footer="footer",t.MonthGrid="month_grid",t.MonthCaption="month_caption",t.MonthsDropdown="months_dropdown",t.Month="month",t.Months="months",t.Nav="nav",t.NextMonthButton="button_next",t.PreviousMonthButton="button_previous",t.Week="week",t.Weeks="weeks",t.Weekday="weekday",t.Weekdays="weekdays",t.WeekNumber="week_number",t.WeekNumberHeader="week_number_header",t.YearsDropdown="years_dropdown"})(yt||(yt={}));var mr;(function(t){t.disabled="disabled",t.hidden="hidden",t.outside="outside",t.focused="focused",t.today="today"})(mr||(mr={}));var ja;(function(t){t.range_end="range_end",t.range_middle="range_middle",t.range_start="range_start",t.selected="selected"})(ja||(ja={}));var Ci;(function(t){t.weeks_before_enter="weeks_before_enter",t.weeks_before_exit="weeks_before_exit",t.weeks_after_enter="weeks_after_enter",t.weeks_after_exit="weeks_after_exit",t.caption_after_enter="caption_after_enter",t.caption_after_exit="caption_after_exit",t.caption_before_enter="caption_before_enter",t.caption_before_exit="caption_before_exit"})(Ci||(Ci={}));function _Ne(t){const{options:e,className:n,components:r,classNames:s,...i}=t,a=[s[yt.Dropdown],n].join(" "),o=e?.find(({value:c})=>c===i.value);return he.createElement("span",{"data-disabled":i.disabled,className:s[yt.DropdownRoot]},he.createElement(r.Select,{className:a,...i},e?.map(({value:c,label:h,disabled:f})=>he.createElement(r.Option,{key:c,value:c,disabled:f},h))),he.createElement("span",{className:s[yt.CaptionLabel],"aria-hidden":!0},o?.label,he.createElement(r.Chevron,{orientation:"down",size:18,className:s[yt.Chevron]})))}function MNe(t){return he.createElement("div",{...t})}function ANe(t){return he.createElement("div",{...t})}function RNe(t){const{calendarMonth:e,displayIndex:n,...r}=t;return he.createElement("div",{...r},t.children)}function DNe(t){const{calendarMonth:e,displayIndex:n,...r}=t;return he.createElement("div",{...r})}function zNe(t){return he.createElement("table",{...t})}function PNe(t){return he.createElement("div",{...t})}const tU=b.createContext(void 0);function yp(){const t=b.useContext(tU);if(t===void 0)throw new Error("useDayPicker() must be used within a custom component.");return t}function LNe(t){const{components:e}=yp();return he.createElement(e.Dropdown,{...t})}function INe(t){const{onPreviousClick:e,onNextClick:n,previousMonth:r,nextMonth:s,...i}=t,{components:a,classNames:o,labels:{labelPrevious:c,labelNext:h}}=yp(),f=b.useCallback(g=>{s&&n?.(g)},[s,n]),m=b.useCallback(g=>{r&&e?.(g)},[r,e]);return he.createElement("nav",{...i},he.createElement(a.PreviousMonthButton,{type:"button",className:o[yt.PreviousMonthButton],tabIndex:r?void 0:-1,"aria-disabled":r?void 0:!0,"aria-label":c(r),onClick:m},he.createElement(a.Chevron,{disabled:r?void 0:!0,className:o[yt.Chevron],orientation:"left"})),he.createElement(a.NextMonthButton,{type:"button",className:o[yt.NextMonthButton],tabIndex:s?void 0:-1,"aria-disabled":s?void 0:!0,"aria-label":h(s),onClick:f},he.createElement(a.Chevron,{disabled:s?void 0:!0,orientation:"right",className:o[yt.Chevron]})))}function BNe(t){const{components:e}=yp();return he.createElement(e.Button,{...t})}function qNe(t){return he.createElement("option",{...t})}function FNe(t){const{components:e}=yp();return he.createElement(e.Button,{...t})}function $Ne(t){const{rootRef:e,...n}=t;return he.createElement("div",{...n,ref:e})}function QNe(t){return he.createElement("select",{...t})}function HNe(t){const{week:e,...n}=t;return he.createElement("tr",{...n})}function VNe(t){return he.createElement("th",{...t})}function UNe(t){return he.createElement("thead",{"aria-hidden":!0},he.createElement("tr",{...t}))}function WNe(t){const{week:e,...n}=t;return he.createElement("th",{...n})}function GNe(t){return he.createElement("th",{...t})}function XNe(t){return he.createElement("tbody",{...t})}function YNe(t){const{components:e}=yp();return he.createElement(e.Dropdown,{...t})}const KNe=Object.freeze(Object.defineProperty({__proto__:null,Button:ONe,CaptionLabel:NNe,Chevron:CNe,Day:TNe,DayButton:ENe,Dropdown:_Ne,DropdownNav:MNe,Footer:ANe,Month:RNe,MonthCaption:DNe,MonthGrid:zNe,Months:PNe,MonthsDropdown:LNe,Nav:INe,NextMonthButton:BNe,Option:qNe,PreviousMonthButton:FNe,Root:$Ne,Select:QNe,Week:HNe,WeekNumber:WNe,WeekNumberHeader:GNe,Weekday:VNe,Weekdays:UNe,Weeks:XNe,YearsDropdown:YNe},Symbol.toStringTag,{value:"Module"}));function io(t,e,n=!1,r=kl){let{from:s,to:i}=t;const{differenceInCalendarDays:a,isSameDay:o}=r;return s&&i?(a(i,s)<0&&([s,i]=[i,s]),a(e,s)>=(n?1:0)&&a(i,e)>=(n?1:0)):!n&&i?o(i,e):!n&&s?o(s,e):!1}function nU(t){return!!(t&&typeof t=="object"&&"before"in t&&"after"in t)}function _O(t){return!!(t&&typeof t=="object"&&"from"in t)}function rU(t){return!!(t&&typeof t=="object"&&"after"in t)}function sU(t){return!!(t&&typeof t=="object"&&"before"in t)}function iU(t){return!!(t&&typeof t=="object"&&"dayOfWeek"in t)}function aU(t,e){return Array.isArray(t)&&t.every(e.isDate)}function ao(t,e,n=kl){const r=Array.isArray(e)?e:[e],{isSameDay:s,differenceInCalendarDays:i,isAfter:a}=n;return r.some(o=>{if(typeof o=="boolean")return o;if(n.isDate(o))return s(t,o);if(aU(o,n))return o.includes(t);if(_O(o))return io(o,t,!1,n);if(iU(o))return Array.isArray(o.dayOfWeek)?o.dayOfWeek.includes(t.getDay()):o.dayOfWeek===t.getDay();if(nU(o)){const c=i(o.before,t),h=i(o.after,t),f=c>0,m=h<0;return a(o.before,o.after)?m&&f:f||m}return rU(o)?i(t,o.after)>0:sU(o)?i(o.before,t)>0:typeof o=="function"?o(t):!1})}function ZNe(t,e,n,r,s){const{disabled:i,hidden:a,modifiers:o,showOutsideDays:c,broadcastCalendar:h,today:f}=e,{isSameDay:m,isSameMonth:g,startOfMonth:x,isBefore:y,endOfMonth:w,isAfter:S}=s,k=n&&x(n),N=r&&w(r),C={[mr.focused]:[],[mr.outside]:[],[mr.disabled]:[],[mr.hidden]:[],[mr.today]:[]},T={};for(const _ of t){const{date:E,displayMonth:M}=_,L=!!(M&&!g(E,M)),P=!!(k&&y(E,k)),I=!!(N&&S(E,N)),Q=!!(i&&ao(E,i,s)),U=!!(a&&ao(E,a,s))||P||I||!h&&!c&&L||h&&c===!1&&L,ee=m(E,f??s.today());L&&C.outside.push(_),Q&&C.disabled.push(_),U&&C.hidden.push(_),ee&&C.today.push(_),o&&Object.keys(o).forEach(z=>{const H=o?.[z];H&&ao(E,H,s)&&(T[z]?T[z].push(_):T[z]=[_])})}return _=>{const E={[mr.focused]:!1,[mr.disabled]:!1,[mr.hidden]:!1,[mr.outside]:!1,[mr.today]:!1},M={};for(const L in C){const P=C[L];E[L]=P.some(I=>I===_)}for(const L in T)M[L]=T[L].some(P=>P===_);return{...E,...M}}}function JNe(t,e,n={}){return Object.entries(t).filter(([,s])=>s===!0).reduce((s,[i])=>(n[i]?s.push(n[i]):e[mr[i]]?s.push(e[mr[i]]):e[ja[i]]&&s.push(e[ja[i]]),s),[e[yt.Day]])}function e7e(t){return{...KNe,...t}}function t7e(t){const e={"data-mode":t.mode??void 0,"data-required":"required"in t?t.required:void 0,"data-multiple-months":t.numberOfMonths&&t.numberOfMonths>1||void 0,"data-week-numbers":t.showWeekNumber||void 0,"data-broadcast-calendar":t.broadcastCalendar||void 0,"data-nav-layout":t.navLayout||void 0};return Object.entries(t).forEach(([n,r])=>{n.startsWith("data-")&&(e[n]=r)}),e}function MO(){const t={};for(const e in yt)t[yt[e]]=`rdp-${yt[e]}`;for(const e in mr)t[mr[e]]=`rdp-${mr[e]}`;for(const e in ja)t[ja[e]]=`rdp-${ja[e]}`;for(const e in Ci)t[Ci[e]]=`rdp-${Ci[e]}`;return t}function lU(t,e,n){return(n??new zi(e)).formatMonthYear(t)}const n7e=lU;function r7e(t,e,n){return(n??new zi(e)).format(t,"d")}function s7e(t,e=kl){return e.format(t,"LLLL")}function i7e(t,e,n){return(n??new zi(e)).format(t,"cccccc")}function a7e(t,e=kl){return t<10?e.formatNumber(`0${t.toLocaleString()}`):e.formatNumber(`${t.toLocaleString()}`)}function l7e(){return""}function oU(t,e=kl){return e.format(t,"yyyy")}const o7e=oU,c7e=Object.freeze(Object.defineProperty({__proto__:null,formatCaption:lU,formatDay:r7e,formatMonthCaption:n7e,formatMonthDropdown:s7e,formatWeekNumber:a7e,formatWeekNumberHeader:l7e,formatWeekdayName:i7e,formatYearCaption:o7e,formatYearDropdown:oU},Symbol.toStringTag,{value:"Module"}));function u7e(t){return t?.formatMonthCaption&&!t.formatCaption&&(t.formatCaption=t.formatMonthCaption),t?.formatYearCaption&&!t.formatYearDropdown&&(t.formatYearDropdown=t.formatYearCaption),{...c7e,...t}}function d7e(t,e,n,r,s){const{startOfMonth:i,startOfYear:a,endOfYear:o,eachMonthOfInterval:c,getMonth:h}=s;return c({start:a(t),end:o(t)}).map(g=>{const x=r.formatMonthDropdown(g,s),y=h(g),w=e&&gi(n)||!1;return{value:y,label:x,disabled:w}})}function h7e(t,e={},n={}){let r={...e?.[yt.Day]};return Object.entries(t).filter(([,s])=>s===!0).forEach(([s])=>{r={...r,...n?.[s]}}),r}function f7e(t,e,n){const r=t.today(),s=e?t.startOfISOWeek(r):t.startOfWeek(r),i=[];for(let a=0;a<7;a++){const o=t.addDays(s,a);i.push(o)}return i}function m7e(t,e,n,r,s=!1){if(!t||!e)return;const{startOfYear:i,endOfYear:a,eachYearOfInterval:o,getYear:c}=r,h=i(t),f=a(e),m=o({start:h,end:f});return s&&m.reverse(),m.map(g=>{const x=n.formatYearDropdown(g,r);return{value:c(g),label:x,disabled:!1}})}function cU(t,e,n,r){let s=(r??new zi(n)).format(t,"PPPP");return e.today&&(s=`Today, ${s}`),e.selected&&(s=`${s}, selected`),s}const p7e=cU;function uU(t,e,n){return(n??new zi(e)).formatMonthYear(t)}const g7e=uU;function x7e(t,e,n,r){let s=(r??new zi(n)).format(t,"PPPP");return e?.today&&(s=`Today, ${s}`),s}function v7e(t){return"Choose the Month"}function y7e(){return""}function b7e(t){return"Go to the Next Month"}function w7e(t){return"Go to the Previous Month"}function S7e(t,e,n){return(n??new zi(e)).format(t,"cccc")}function k7e(t,e){return`Week ${t}`}function j7e(t){return"Week Number"}function O7e(t){return"Choose the Year"}const N7e=Object.freeze(Object.defineProperty({__proto__:null,labelCaption:g7e,labelDay:p7e,labelDayButton:cU,labelGrid:uU,labelGridcell:x7e,labelMonthDropdown:v7e,labelNav:y7e,labelNext:b7e,labelPrevious:w7e,labelWeekNumber:k7e,labelWeekNumberHeader:j7e,labelWeekday:S7e,labelYearDropdown:O7e},Symbol.toStringTag,{value:"Module"})),bp=t=>t instanceof HTMLElement?t:null,T3=t=>[...t.querySelectorAll("[data-animated-month]")??[]],C7e=t=>bp(t.querySelector("[data-animated-month]")),E3=t=>bp(t.querySelector("[data-animated-caption]")),_3=t=>bp(t.querySelector("[data-animated-weeks]")),T7e=t=>bp(t.querySelector("[data-animated-nav]")),E7e=t=>bp(t.querySelector("[data-animated-weekdays]"));function _7e(t,e,{classNames:n,months:r,focused:s,dateLib:i}){const a=b.useRef(null),o=b.useRef(r),c=b.useRef(!1);b.useLayoutEffect(()=>{const h=o.current;if(o.current=r,!e||!t.current||!(t.current instanceof HTMLElement)||r.length===0||h.length===0||r.length!==h.length)return;const f=i.isSameMonth(r[0].date,h[0].date),m=i.isAfter(r[0].date,h[0].date),g=m?n[Ci.caption_after_enter]:n[Ci.caption_before_enter],x=m?n[Ci.weeks_after_enter]:n[Ci.weeks_before_enter],y=a.current,w=t.current.cloneNode(!0);if(w instanceof HTMLElement?(T3(w).forEach(C=>{if(!(C instanceof HTMLElement))return;const T=C7e(C);T&&C.contains(T)&&C.removeChild(T);const _=E3(C);_&&_.classList.remove(g);const E=_3(C);E&&E.classList.remove(x)}),a.current=w):a.current=null,c.current||f||s)return;const S=y instanceof HTMLElement?T3(y):[],k=T3(t.current);if(k?.every(N=>N instanceof HTMLElement)&&S&&S.every(N=>N instanceof HTMLElement)){c.current=!0,t.current.style.isolation="isolate";const N=T7e(t.current);N&&(N.style.zIndex="1"),k.forEach((C,T)=>{const _=S[T];if(!_)return;C.style.position="relative",C.style.overflow="hidden";const E=E3(C);E&&E.classList.add(g);const M=_3(C);M&&M.classList.add(x);const L=()=>{c.current=!1,t.current&&(t.current.style.isolation=""),N&&(N.style.zIndex=""),E&&E.classList.remove(g),M&&M.classList.remove(x),C.style.position="",C.style.overflow="",C.contains(_)&&C.removeChild(_)};_.style.pointerEvents="none",_.style.position="absolute",_.style.overflow="hidden",_.setAttribute("aria-hidden","true");const P=E7e(_);P&&(P.style.opacity="0");const I=E3(_);I&&(I.classList.add(m?n[Ci.caption_before_exit]:n[Ci.caption_after_exit]),I.addEventListener("animationend",L));const Q=_3(_);Q&&Q.classList.add(m?n[Ci.weeks_before_exit]:n[Ci.weeks_after_exit]),C.insertBefore(_,C.firstChild)})}})}function M7e(t,e,n,r){const s=t[0],i=t[t.length-1],{ISOWeek:a,fixedWeeks:o,broadcastCalendar:c}=n??{},{addDays:h,differenceInCalendarDays:f,differenceInCalendarMonths:m,endOfBroadcastWeek:g,endOfISOWeek:x,endOfMonth:y,endOfWeek:w,isAfter:S,startOfBroadcastWeek:k,startOfISOWeek:N,startOfWeek:C}=r,T=c?k(s,r):a?N(s):C(s),_=c?g(i):a?x(y(i)):w(y(i)),E=f(_,T),M=m(i,s)+1,L=[];for(let Q=0;Q<=E;Q++){const U=h(T,Q);if(e&&S(U,e))break;L.push(U)}const I=(c?35:42)*M;if(o&&L.length{const s=r.weeks.reduce((i,a)=>i.concat(a.days.slice()),e.slice());return n.concat(s.slice())},e.slice())}function R7e(t,e,n,r){const{numberOfMonths:s=1}=n,i=[];for(let a=0;ae)break;i.push(o)}return i}function fD(t,e,n,r){const{month:s,defaultMonth:i,today:a=r.today(),numberOfMonths:o=1}=t;let c=s||i||a;const{differenceInCalendarMonths:h,addMonths:f,startOfMonth:m}=r;if(n&&h(n,c){const k=n.broadcastCalendar?m(S,r):n.ISOWeek?g(S):x(S),N=n.broadcastCalendar?i(S):n.ISOWeek?a(o(S)):c(o(S)),C=e.filter(M=>M>=k&&M<=N),T=n.broadcastCalendar?35:42;if(n.fixedWeeks&&C.length{const P=T-C.length;return L>N&&L<=s(N,P)});C.push(...M)}const _=C.reduce((M,L)=>{const P=n.ISOWeek?h(L):f(L),I=M.find(U=>U.weekNumber===P),Q=new eU(L,S,r);return I?I.days.push(Q):M.push(new jNe(P,[Q])),M},[]),E=new kNe(S,_);return w.push(E),w},[]);return n.reverseMonths?y.reverse():y}function z7e(t,e){let{startMonth:n,endMonth:r}=t;const{startOfYear:s,startOfDay:i,startOfMonth:a,endOfMonth:o,addYears:c,endOfYear:h,newDate:f,today:m}=e,{fromYear:g,toYear:x,fromMonth:y,toMonth:w}=t;!n&&y&&(n=y),!n&&g&&(n=e.newDate(g,0,1)),!r&&w&&(r=w),!r&&x&&(r=f(x,11,31));const S=t.captionLayout==="dropdown"||t.captionLayout==="dropdown-years";return n?n=a(n):g?n=f(g,0,1):!n&&S&&(n=s(c(t.today??m(),-100))),r?r=o(r):x?r=f(x,11,31):!r&&S&&(r=h(t.today??m())),[n&&i(n),r&&i(r)]}function P7e(t,e,n,r){if(n.disableNavigation)return;const{pagedNavigation:s,numberOfMonths:i=1}=n,{startOfMonth:a,addMonths:o,differenceInCalendarMonths:c}=r,h=s?i:1,f=a(t);if(!e)return o(f,h);if(!(c(e,t)n.concat(r.weeks.slice()),e.slice())}function qy(t,e){const[n,r]=b.useState(t);return[e===void 0?n:e,r]}function B7e(t,e){const[n,r]=z7e(t,e),{startOfMonth:s,endOfMonth:i}=e,a=fD(t,n,r,e),[o,c]=qy(a,t.month?a:void 0);b.useEffect(()=>{const E=fD(t,n,r,e);c(E)},[t.timeZone]);const h=R7e(o,r,t,e),f=M7e(h,t.endMonth?i(t.endMonth):void 0,t,e),m=D7e(h,f,t,e),g=I7e(m),x=A7e(m),y=L7e(o,n,t,e),w=P7e(o,r,t,e),{disableNavigation:S,onMonthChange:k}=t,N=E=>g.some(M=>M.days.some(L=>L.isEqualTo(E))),C=E=>{if(S)return;let M=s(E);n&&Ms(r)&&(M=s(r)),c(M),k?.(M)};return{months:m,weeks:g,days:x,navStart:n,navEnd:r,previousMonth:y,nextMonth:w,goToMonth:C,goToDay:E=>{N(E)||C(E.date)}}}var Ya;(function(t){t[t.Today=0]="Today",t[t.Selected=1]="Selected",t[t.LastFocused=2]="LastFocused",t[t.FocusedModifier=3]="FocusedModifier"})(Ya||(Ya={}));function mD(t){return!t[mr.disabled]&&!t[mr.hidden]&&!t[mr.outside]}function q7e(t,e,n,r){let s,i=-1;for(const a of t){const o=e(a);mD(o)&&(o[mr.focused]&&imD(e(a)))),s}function F7e(t,e,n,r,s,i,a){const{ISOWeek:o,broadcastCalendar:c}=i,{addDays:h,addMonths:f,addWeeks:m,addYears:g,endOfBroadcastWeek:x,endOfISOWeek:y,endOfWeek:w,max:S,min:k,startOfBroadcastWeek:N,startOfISOWeek:C,startOfWeek:T}=a;let E={day:h,week:m,month:f,year:g,startOfWeek:M=>c?N(M,a):o?C(M):T(M),endOfWeek:M=>c?x(M):o?y(M):w(M)}[t](n,e==="after"?1:-1);return e==="before"&&r?E=S([r,E]):e==="after"&&s&&(E=k([s,E])),E}function dU(t,e,n,r,s,i,a,o=0){if(o>365)return;const c=F7e(t,e,n.date,r,s,i,a),h=!!(i.disabled&&ao(c,i.disabled,a)),f=!!(i.hidden&&ao(c,i.hidden,a)),m=c,g=new eU(c,m,a);return!h&&!f?g:dU(t,e,g,r,s,i,a,o+1)}function $7e(t,e,n,r,s){const{autoFocus:i}=t,[a,o]=b.useState(),c=q7e(e.days,n,r||(()=>!1),a),[h,f]=b.useState(i?c:void 0);return{isFocusTarget:w=>!!c?.isEqualTo(w),setFocused:f,focused:h,blur:()=>{o(h),f(void 0)},moveFocus:(w,S)=>{if(!h)return;const k=dU(w,S,h,e.navStart,e.navEnd,t,s);k&&(t.disableNavigation&&!e.days.some(C=>C.isEqualTo(k))||(e.goToDay(k),f(k)))}}}function Q7e(t,e){const{selected:n,required:r,onSelect:s}=t,[i,a]=qy(n,s?n:void 0),o=s?n:i,{isSameDay:c}=e,h=x=>o?.some(y=>c(y,x))??!1,{min:f,max:m}=t;return{selected:o,select:(x,y,w)=>{let S=[...o??[]];if(h(x)){if(o?.length===f||r&&o?.length===1)return;S=o?.filter(k=>!c(k,x))}else o?.length===m?S=[x]:S=[...S,x];return s||a(S),s?.(S,x,y,w),S},isSelected:h}}function H7e(t,e,n=0,r=0,s=!1,i=kl){const{from:a,to:o}=e||{},{isSameDay:c,isAfter:h,isBefore:f}=i;let m;if(!a&&!o)m={from:t,to:n>0?void 0:t};else if(a&&!o)c(a,t)?n===0?m={from:a,to:t}:s?m={from:a,to:void 0}:m=void 0:f(t,a)?m={from:t,to:a}:m={from:a,to:t};else if(a&&o)if(c(a,t)&&c(o,t))s?m={from:a,to:o}:m=void 0;else if(c(a,t))m={from:a,to:n>0?void 0:t};else if(c(o,t))m={from:t,to:n>0?void 0:t};else if(f(t,a))m={from:t,to:o};else if(h(t,a))m={from:a,to:t};else if(h(t,o))m={from:a,to:t};else throw new Error("Invalid range");if(m?.from&&m?.to){const g=i.differenceInCalendarDays(m.to,m.from);r>0&&g>r?m={from:t,to:void 0}:n>1&&gtypeof o!="function").some(o=>typeof o=="boolean"?o:n.isDate(o)?io(t,o,!1,n):aU(o,n)?o.some(c=>io(t,c,!1,n)):_O(o)?o.from&&o.to?pD(t,{from:o.from,to:o.to},n):!1:iU(o)?V7e(t,o.dayOfWeek,n):nU(o)?n.isAfter(o.before,o.after)?pD(t,{from:n.addDays(o.after,1),to:n.addDays(o.before,-1)},n):ao(t.from,o,n)||ao(t.to,o,n):rU(o)||sU(o)?ao(t.from,o,n)||ao(t.to,o,n):!1))return!0;const a=r.filter(o=>typeof o=="function");if(a.length){let o=t.from;const c=n.differenceInCalendarDays(t.to,t.from);for(let h=0;h<=c;h++){if(a.some(f=>f(o)))return!0;o=n.addDays(o,1)}}return!1}function W7e(t,e){const{disabled:n,excludeDisabled:r,selected:s,required:i,onSelect:a}=t,[o,c]=qy(s,a?s:void 0),h=a?s:o;return{selected:h,select:(g,x,y)=>{const{min:w,max:S}=t,k=g?H7e(g,h,w,S,i,e):void 0;return r&&n&&k?.from&&k.to&&U7e({from:k.from,to:k.to},n,e)&&(k.from=g,k.to=void 0),a||c(k),a?.(k,g,x,y),k},isSelected:g=>h&&io(h,g,!1,e)}}function G7e(t,e){const{selected:n,required:r,onSelect:s}=t,[i,a]=qy(n,s?n:void 0),o=s?n:i,{isSameDay:c}=e;return{selected:o,select:(m,g,x)=>{let y=m;return!r&&o&&o&&c(m,o)&&(y=void 0),s||a(y),s?.(y,m,g,x),y},isSelected:m=>o?c(o,m):!1}}function X7e(t,e){const n=G7e(t,e),r=Q7e(t,e),s=W7e(t,e);switch(t.mode){case"single":return n;case"multiple":return r;case"range":return s;default:return}}function Y7e(t){let e=t;e.timeZone&&(e={...t},e.today&&(e.today=new ks(e.today,e.timeZone)),e.month&&(e.month=new ks(e.month,e.timeZone)),e.defaultMonth&&(e.defaultMonth=new ks(e.defaultMonth,e.timeZone)),e.startMonth&&(e.startMonth=new ks(e.startMonth,e.timeZone)),e.endMonth&&(e.endMonth=new ks(e.endMonth,e.timeZone)),e.mode==="single"&&e.selected?e.selected=new ks(e.selected,e.timeZone):e.mode==="multiple"&&e.selected?e.selected=e.selected?.map(ft=>new ks(ft,e.timeZone)):e.mode==="range"&&e.selected&&(e.selected={from:e.selected.from?new ks(e.selected.from,e.timeZone):void 0,to:e.selected.to?new ks(e.selected.to,e.timeZone):void 0}));const{components:n,formatters:r,labels:s,dateLib:i,locale:a,classNames:o}=b.useMemo(()=>{const ft={...EO,...e.locale};return{dateLib:new zi({locale:ft,weekStartsOn:e.broadcastCalendar?1:e.weekStartsOn,firstWeekContainsDate:e.firstWeekContainsDate,useAdditionalWeekYearTokens:e.useAdditionalWeekYearTokens,useAdditionalDayOfYearTokens:e.useAdditionalDayOfYearTokens,timeZone:e.timeZone,numerals:e.numerals},e.dateLib),components:e7e(e.components),formatters:u7e(e.formatters),labels:{...N7e,...e.labels},locale:ft,classNames:{...MO(),...e.classNames}}},[e.locale,e.broadcastCalendar,e.weekStartsOn,e.firstWeekContainsDate,e.useAdditionalWeekYearTokens,e.useAdditionalDayOfYearTokens,e.timeZone,e.numerals,e.dateLib,e.components,e.formatters,e.labels,e.classNames]),{captionLayout:c,mode:h,navLayout:f,numberOfMonths:m=1,onDayBlur:g,onDayClick:x,onDayFocus:y,onDayKeyDown:w,onDayMouseEnter:S,onDayMouseLeave:k,onNextClick:N,onPrevClick:C,showWeekNumber:T,styles:_}=e,{formatCaption:E,formatDay:M,formatMonthDropdown:L,formatWeekNumber:P,formatWeekNumberHeader:I,formatWeekdayName:Q,formatYearDropdown:U}=r,ee=B7e(e,i),{days:z,months:H,navStart:B,navEnd:X,previousMonth:J,nextMonth:G,goToMonth:R}=ee,se=ZNe(z,e,B,X,i),{isSelected:W,select:F,selected:V}=X7e(e,i)??{},{blur:te,focused:ne,isFocusTarget:K,moveFocus:ie,setFocused:re}=$7e(e,ee,se,W??(()=>!1),i),{labelDayButton:ae,labelGridcell:_e,labelGrid:Ue,labelMonthDropdown:Xe,labelNav:Ze,labelPrevious:Oe,labelNext:He,labelWeekday:Ve,labelWeekNumber:Be,labelWeekNumberHeader:ut,labelYearDropdown:rt}=s,rn=b.useMemo(()=>f7e(i,e.ISOWeek),[i,e.ISOWeek]),Rn=h!==void 0||x!==void 0,Tn=b.useCallback(()=>{J&&(R(J),C?.(J))},[J,R,C]),Mt=b.useCallback(()=>{G&&(R(G),N?.(G))},[R,G,N]),vt=b.useCallback((ft,mn)=>gt=>{gt.preventDefault(),gt.stopPropagation(),re(ft),F?.(ft.date,mn,gt),x?.(ft.date,mn,gt)},[F,x,re]),Ce=b.useCallback((ft,mn)=>gt=>{re(ft),y?.(ft.date,mn,gt)},[y,re]),Le=b.useCallback((ft,mn)=>gt=>{te(),g?.(ft.date,mn,gt)},[te,g]),Ge=b.useCallback((ft,mn)=>gt=>{const Nt={ArrowLeft:[gt.shiftKey?"month":"day",e.dir==="rtl"?"after":"before"],ArrowRight:[gt.shiftKey?"month":"day",e.dir==="rtl"?"before":"after"],ArrowDown:[gt.shiftKey?"year":"week","after"],ArrowUp:[gt.shiftKey?"year":"week","before"],PageUp:[gt.shiftKey?"year":"month","before"],PageDown:[gt.shiftKey?"year":"month","after"],Home:["startOfWeek","before"],End:["endOfWeek","after"]};if(Nt[gt.key]){gt.preventDefault(),gt.stopPropagation();const[Ot,it]=Nt[gt.key];ie(Ot,it)}w?.(ft.date,mn,gt)},[ie,w,e.dir]),lt=b.useCallback((ft,mn)=>gt=>{S?.(ft.date,mn,gt)},[S]),jt=b.useCallback((ft,mn)=>gt=>{k?.(ft.date,mn,gt)},[k]),Tt=b.useCallback(ft=>mn=>{const gt=Number(mn.target.value),Nt=i.setMonth(i.startOfMonth(ft),gt);R(Nt)},[i,R]),ke=b.useCallback(ft=>mn=>{const gt=Number(mn.target.value),Nt=i.setYear(i.startOfMonth(ft),gt);R(Nt)},[i,R]),{className:Te,style:qe}=b.useMemo(()=>({className:[o[yt.Root],e.className].filter(Boolean).join(" "),style:{..._?.[yt.Root],...e.style}}),[o,e.className,e.style,_]),Rt=t7e(e),At=b.useRef(null);_7e(At,!!e.animate,{classNames:o,months:H,focused:ne,dateLib:i});const vr={dayPickerProps:e,selected:V,select:F,isSelected:W,months:H,nextMonth:G,previousMonth:J,goToMonth:R,getModifiers:se,components:n,classNames:o,styles:_,labels:s,formatters:r};return he.createElement(tU.Provider,{value:vr},he.createElement(n.Root,{rootRef:e.animate?At:void 0,className:Te,style:qe,dir:e.dir,id:e.id,lang:e.lang,nonce:e.nonce,title:e.title,role:e.role,"aria-label":e["aria-label"],"aria-labelledby":e["aria-labelledby"],...Rt},he.createElement(n.Months,{className:o[yt.Months],style:_?.[yt.Months]},!e.hideNavigation&&!f&&he.createElement(n.Nav,{"data-animated-nav":e.animate?"true":void 0,className:o[yt.Nav],style:_?.[yt.Nav],"aria-label":Ze(),onPreviousClick:Tn,onNextClick:Mt,previousMonth:J,nextMonth:G}),H.map((ft,mn)=>he.createElement(n.Month,{"data-animated-month":e.animate?"true":void 0,className:o[yt.Month],style:_?.[yt.Month],key:mn,displayIndex:mn,calendarMonth:ft},f==="around"&&!e.hideNavigation&&mn===0&&he.createElement(n.PreviousMonthButton,{type:"button",className:o[yt.PreviousMonthButton],tabIndex:J?void 0:-1,"aria-disabled":J?void 0:!0,"aria-label":Oe(J),onClick:Tn,"data-animated-button":e.animate?"true":void 0},he.createElement(n.Chevron,{disabled:J?void 0:!0,className:o[yt.Chevron],orientation:e.dir==="rtl"?"right":"left"})),he.createElement(n.MonthCaption,{"data-animated-caption":e.animate?"true":void 0,className:o[yt.MonthCaption],style:_?.[yt.MonthCaption],calendarMonth:ft,displayIndex:mn},c?.startsWith("dropdown")?he.createElement(n.DropdownNav,{className:o[yt.Dropdowns],style:_?.[yt.Dropdowns]},(()=>{const gt=c==="dropdown"||c==="dropdown-months"?he.createElement(n.MonthsDropdown,{key:"month",className:o[yt.MonthsDropdown],"aria-label":Xe(),classNames:o,components:n,disabled:!!e.disableNavigation,onChange:Tt(ft.date),options:d7e(ft.date,B,X,r,i),style:_?.[yt.Dropdown],value:i.getMonth(ft.date)}):he.createElement("span",{key:"month"},L(ft.date,i)),Nt=c==="dropdown"||c==="dropdown-years"?he.createElement(n.YearsDropdown,{key:"year",className:o[yt.YearsDropdown],"aria-label":rt(i.options),classNames:o,components:n,disabled:!!e.disableNavigation,onChange:ke(ft.date),options:m7e(B,X,r,i,!!e.reverseYears),style:_?.[yt.Dropdown],value:i.getYear(ft.date)}):he.createElement("span",{key:"year"},U(ft.date,i));return i.getMonthYearOrder()==="year-first"?[Nt,gt]:[gt,Nt]})(),he.createElement("span",{role:"status","aria-live":"polite",style:{border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",width:"1px",whiteSpace:"nowrap",wordWrap:"normal"}},E(ft.date,i.options,i))):he.createElement(n.CaptionLabel,{className:o[yt.CaptionLabel],role:"status","aria-live":"polite"},E(ft.date,i.options,i))),f==="around"&&!e.hideNavigation&&mn===m-1&&he.createElement(n.NextMonthButton,{type:"button",className:o[yt.NextMonthButton],tabIndex:G?void 0:-1,"aria-disabled":G?void 0:!0,"aria-label":He(G),onClick:Mt,"data-animated-button":e.animate?"true":void 0},he.createElement(n.Chevron,{disabled:G?void 0:!0,className:o[yt.Chevron],orientation:e.dir==="rtl"?"left":"right"})),mn===m-1&&f==="after"&&!e.hideNavigation&&he.createElement(n.Nav,{"data-animated-nav":e.animate?"true":void 0,className:o[yt.Nav],style:_?.[yt.Nav],"aria-label":Ze(),onPreviousClick:Tn,onNextClick:Mt,previousMonth:J,nextMonth:G}),he.createElement(n.MonthGrid,{role:"grid","aria-multiselectable":h==="multiple"||h==="range","aria-label":Ue(ft.date,i.options,i)||void 0,className:o[yt.MonthGrid],style:_?.[yt.MonthGrid]},!e.hideWeekdays&&he.createElement(n.Weekdays,{"data-animated-weekdays":e.animate?"true":void 0,className:o[yt.Weekdays],style:_?.[yt.Weekdays]},T&&he.createElement(n.WeekNumberHeader,{"aria-label":ut(i.options),className:o[yt.WeekNumberHeader],style:_?.[yt.WeekNumberHeader],scope:"col"},I()),rn.map(gt=>he.createElement(n.Weekday,{"aria-label":Ve(gt,i.options,i),className:o[yt.Weekday],key:String(gt),style:_?.[yt.Weekday],scope:"col"},Q(gt,i.options,i)))),he.createElement(n.Weeks,{"data-animated-weeks":e.animate?"true":void 0,className:o[yt.Weeks],style:_?.[yt.Weeks]},ft.weeks.map(gt=>he.createElement(n.Week,{className:o[yt.Week],key:gt.weekNumber,style:_?.[yt.Week],week:gt},T&&he.createElement(n.WeekNumber,{week:gt,style:_?.[yt.WeekNumber],"aria-label":Be(gt.weekNumber,{locale:a}),className:o[yt.WeekNumber],scope:"row",role:"rowheader"},P(gt.weekNumber,i)),gt.days.map(Nt=>{const{date:Ot}=Nt,it=se(Nt);if(it[mr.focused]=!it.hidden&&!!ne?.isEqualTo(Nt),it[ja.selected]=W?.(Ot)||it.selected,_O(V)){const{from:ge,to:ze}=V;it[ja.range_start]=!!(ge&&ze&&i.isSameDay(Ot,ge)),it[ja.range_end]=!!(ge&&ze&&i.isSameDay(Ot,ze)),it[ja.range_middle]=io(V,Ot,!0,i)}const Vn=h7e(it,_,e.modifiersStyles),jr=JNe(it,o,e.modifiersClassNames),Or=!Rn&&!it.hidden?_e(Ot,it,i.options,i):void 0;return he.createElement(n.Day,{key:`${i.format(Ot,"yyyy-MM-dd")}_${i.format(Nt.displayMonth,"yyyy-MM")}`,day:Nt,modifiers:it,className:jr.join(" "),style:Vn,role:"gridcell","aria-selected":it.selected||void 0,"aria-label":Or,"data-day":i.format(Ot,"yyyy-MM-dd"),"data-month":Nt.outside?i.format(Ot,"yyyy-MM"):void 0,"data-selected":it.selected||void 0,"data-disabled":it.disabled||void 0,"data-hidden":it.hidden||void 0,"data-outside":Nt.outside||void 0,"data-focused":it.focused||void 0,"data-today":it.today||void 0},!it.hidden&&Rn?he.createElement(n.DayButton,{className:o[yt.DayButton],style:_?.[yt.DayButton],type:"button",day:Nt,modifiers:it,disabled:it.disabled||void 0,tabIndex:K(Nt)?0:-1,"aria-label":ae(Ot,it,i.options,i),onClick:vt(Nt,it),onBlur:Le(Nt,it),onFocus:Ce(Nt,it),onKeyDown:Ge(Nt,it),onMouseEnter:lt(Nt,it),onMouseLeave:jt(Nt,it)},M(Ot,i.options,i)):!it.hidden&&M(Nt.date,i.options,i))})))))))),e.footer&&he.createElement(n.Footer,{className:o[yt.Footer],style:_?.[yt.Footer],role:"status","aria-live":"polite"},e.footer)))}function gD({className:t,classNames:e,showOutsideDays:n=!0,captionLayout:r="label",buttonVariant:s="ghost",formatters:i,components:a,...o}){const c=MO();return l.jsx(Y7e,{showOutsideDays:n,className:ve("bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,t),captionLayout:r,formatters:{formatMonthDropdown:h=>h.toLocaleString("default",{month:"short"}),...i},classNames:{root:ve("w-fit",c.root),months:ve("relative flex flex-col gap-4 md:flex-row",c.months),month:ve("flex w-full flex-col gap-4",c.month),nav:ve("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",c.nav),button_previous:ve(Hm({variant:s}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",c.button_previous),button_next:ve(Hm({variant:s}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",c.button_next),month_caption:ve("flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]",c.month_caption),dropdowns:ve("flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium",c.dropdowns),dropdown_root:ve("has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border",c.dropdown_root),dropdown:ve("bg-popover absolute inset-0 opacity-0",c.dropdown),caption_label:ve("select-none font-medium",r==="label"?"text-sm":"[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5",c.caption_label),table:"w-full border-collapse",weekdays:ve("flex",c.weekdays),weekday:ve("text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal",c.weekday),week:ve("mt-2 flex w-full",c.week),week_number_header:ve("w-[--cell-size] select-none",c.week_number_header),week_number:ve("text-muted-foreground select-none text-[0.8rem]",c.week_number),day:ve("group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md",c.day),range_start:ve("bg-accent rounded-l-md",c.range_start),range_middle:ve("rounded-none",c.range_middle),range_end:ve("bg-accent rounded-r-md",c.range_end),today:ve("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",c.today),outside:ve("text-muted-foreground aria-selected:text-muted-foreground",c.outside),disabled:ve("text-muted-foreground opacity-50",c.disabled),hidden:ve("invisible",c.hidden),...e},components:{Root:({className:h,rootRef:f,...m})=>l.jsx("div",{"data-slot":"calendar",ref:f,className:ve(h),...m}),Chevron:({className:h,orientation:f,...m})=>f==="left"?l.jsx($u,{className:ve("size-4",h),...m}):f==="right"?l.jsx(Qu,{className:ve("size-4",h),...m}):l.jsx(Tu,{className:ve("size-4",h),...m}),DayButton:K7e,WeekNumber:({children:h,...f})=>l.jsx("td",{...f,children:l.jsx("div",{className:"flex size-[--cell-size] items-center justify-center text-center",children:h})}),...a},...o})}function K7e({className:t,day:e,modifiers:n,...r}){const s=MO(),i=b.useRef(null);return b.useEffect(()=>{n.focused&&i.current?.focus()},[n.focused]),l.jsx(de,{ref:i,variant:"ghost",size:"icon","data-day":e.date.toLocaleDateString(),"data-selected-single":n.selected&&!n.range_start&&!n.range_end&&!n.range_middle,"data-range-start":n.range_start,"data-range-end":n.range_end,"data-range-middle":n.range_middle,className:ve("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70",s.day,t),...r})}class Z7e{ws=null;reconnectTimeout=null;reconnectAttempts=0;maxReconnectAttempts=10;heartbeatInterval=null;logCallbacks=new Set;connectionCallbacks=new Set;isConnected=!1;logCache=[];maxCacheSize=1e3;getWebSocketUrl(){{const e=window.location.protocol==="https:"?"wss:":"ws:",n=window.location.host;return`${e}//${n}/ws/logs`}}connect(){if(this.ws?.readyState===WebSocket.OPEN||this.ws?.readyState===WebSocket.CONNECTING)return;const e=this.getWebSocketUrl();try{this.ws=new WebSocket(e),this.ws.onopen=()=>{this.isConnected=!0,this.reconnectAttempts=0,this.notifyConnection(!0),this.startHeartbeat()},this.ws.onmessage=n=>{try{if(n.data==="pong")return;const r=JSON.parse(n.data);this.notifyLog(r)}catch(r){console.error("解析日志消息失败:",r)}},this.ws.onerror=n=>{console.error("❌ WebSocket 错误:",n),this.isConnected=!1,this.notifyConnection(!1)},this.ws.onclose=()=>{this.isConnected=!1,this.notifyConnection(!1),this.stopHeartbeat(),this.attemptReconnect()}}catch(n){console.error("创建 WebSocket 连接失败:",n),this.attemptReconnect()}}attemptReconnect(){if(this.reconnectAttempts>=this.maxReconnectAttempts)return;this.reconnectAttempts+=1;const e=Math.min(1e3*this.reconnectAttempts,1e4);this.reconnectTimeout=window.setTimeout(()=>{this.connect()},e)}startHeartbeat(){this.heartbeatInterval=window.setInterval(()=>{this.ws?.readyState===WebSocket.OPEN&&this.ws.send("ping")},3e4)}stopHeartbeat(){this.heartbeatInterval!==null&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}disconnect(){this.reconnectTimeout!==null&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.stopHeartbeat(),this.ws&&(this.ws.close(),this.ws=null),this.isConnected=!1,this.reconnectAttempts=0}onLog(e){return this.logCallbacks.add(e),()=>this.logCallbacks.delete(e)}onConnectionChange(e){return this.connectionCallbacks.add(e),e(this.isConnected),()=>this.connectionCallbacks.delete(e)}notifyLog(e){this.logCache.some(r=>r.id===e.id)||(this.logCache.push(e),this.logCache.length>this.maxCacheSize&&(this.logCache=this.logCache.slice(-this.maxCacheSize)),this.logCallbacks.forEach(r=>{try{r(e)}catch(s){console.error("日志回调执行失败:",s)}}))}notifyConnection(e){this.connectionCallbacks.forEach(n=>{try{n(e)}catch(r){console.error("连接状态回调执行失败:",r)}})}getAllLogs(){return[...this.logCache]}clearLogs(){this.logCache=[]}getConnectionStatus(){return this.isConnected}}const Ud=new Z7e;typeof window<"u"&&Ud.connect();const J7e={lessThanXSeconds:{one:"不到 1 秒",other:"不到 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分钟",lessThanXMinutes:{one:"不到 1 分钟",other:"不到 {{count}} 分钟"},xMinutes:{one:"1 分钟",other:"{{count}} 分钟"},xHours:{one:"1 小时",other:"{{count}} 小时"},aboutXHours:{one:"大约 1 小时",other:"大约 {{count}} 小时"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大约 1 个星期",other:"大约 {{count}} 个星期"},xWeeks:{one:"1 个星期",other:"{{count}} 个星期"},aboutXMonths:{one:"大约 1 个月",other:"大约 {{count}} 个月"},xMonths:{one:"1 个月",other:"{{count}} 个月"},aboutXYears:{one:"大约 1 年",other:"大约 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超过 1 年",other:"超过 {{count}} 年"},almostXYears:{one:"将近 1 年",other:"将近 {{count}} 年"}},e8e=(t,e,n)=>{let r;const s=J7e[t];return typeof s=="string"?r=s:e===1?r=s.one:r=s.other.replace("{{count}}",String(e)),n?.addSuffix?n.comparison&&n.comparison>0?r+"内":r+"前":r},t8e={full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},n8e={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},r8e={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},s8e={date:fh({formats:t8e,defaultWidth:"full"}),time:fh({formats:n8e,defaultWidth:"full"}),dateTime:fh({formats:r8e,defaultWidth:"full"})};function xD(t,e,n){const r="eeee p";return pNe(t,e,n)?r:t.getTime()>e.getTime()?"'下个'"+r:"'上个'"+r}const i8e={lastWeek:xD,yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:xD,other:"PP p"},a8e=(t,e,n,r)=>{const s=i8e[t];return typeof s=="function"?s(e,n,r):s},l8e={narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},o8e={narrow:["1","2","3","4"],abbreviated:["第一季","第二季","第三季","第四季"],wide:["第一季度","第二季度","第三季度","第四季度"]},c8e={narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},u8e={narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["周日","周一","周二","周三","周四","周五","周六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},d8e={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},h8e={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},f8e=(t,e)=>{const n=Number(t);switch(e?.unit){case"date":return n.toString()+"日";case"hour":return n.toString()+"时";case"minute":return n.toString()+"分";case"second":return n.toString()+"秒";default:return"第 "+n.toString()}},m8e={ordinalNumber:f8e,era:el({values:l8e,defaultWidth:"wide"}),quarter:el({values:o8e,defaultWidth:"wide",argumentCallback:t=>t-1}),month:el({values:c8e,defaultWidth:"wide"}),day:el({values:u8e,defaultWidth:"wide"}),dayPeriod:el({values:d8e,defaultWidth:"wide",formattingValues:h8e,defaultFormattingWidth:"wide"})},p8e=/^(第\s*)?\d+(日|时|分|秒)?/i,g8e=/\d+/i,x8e={narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},v8e={any:[/^(前)/i,/^(公元)/i]},y8e={narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻钟/i},b8e={any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},w8e={narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},S8e={narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},k8e={narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^周[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},j8e={any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},O8e={any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i},N8e={any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},C8e={ordinalNumber:GV({matchPattern:p8e,parsePattern:g8e,valueCallback:t=>parseInt(t,10)}),era:tl({matchPatterns:x8e,defaultMatchWidth:"wide",parsePatterns:v8e,defaultParseWidth:"any"}),quarter:tl({matchPatterns:y8e,defaultMatchWidth:"wide",parsePatterns:b8e,defaultParseWidth:"any",valueCallback:t=>t+1}),month:tl({matchPatterns:w8e,defaultMatchWidth:"wide",parsePatterns:S8e,defaultParseWidth:"any"}),day:tl({matchPatterns:k8e,defaultMatchWidth:"wide",parsePatterns:j8e,defaultParseWidth:"any"}),dayPeriod:tl({matchPatterns:O8e,defaultMatchWidth:"any",parsePatterns:N8e,defaultParseWidth:"any"})},Hx={code:"zh-CN",formatDistance:e8e,formatLong:s8e,formatRelative:a8e,localize:m8e,match:C8e,options:{weekStartsOn:1,firstWeekContainsDate:4}},Vx={xs:{label:"小",rowHeight:28,class:"text-[10px] sm:text-xs"},sm:{label:"中",rowHeight:36,class:"text-xs sm:text-sm"},base:{label:"大",rowHeight:44,class:"text-sm sm:text-base"}};function T8e(){const[t,e]=b.useState([]),[n,r]=b.useState(""),[s,i]=b.useState("all"),[a,o]=b.useState("all"),[c,h]=b.useState(void 0),[f,m]=b.useState(void 0),[g,x]=b.useState(!0),[y,w]=b.useState(!1),[S,k]=b.useState("xs"),[N,C]=b.useState(4),T=b.useRef(null);b.useEffect(()=>{const B=Ud.getAllLogs();e(B);const X=Ud.onLog(()=>{e(Ud.getAllLogs())}),J=Ud.onConnectionChange(G=>{w(G)});return()=>{X(),J()}},[]);const _=b.useMemo(()=>{const B=new Set(t.map(X=>X.module));return Array.from(B).sort()},[t]),E=B=>{switch(B){case"DEBUG":return"text-muted-foreground";case"INFO":return"text-blue-500 dark:text-blue-400";case"WARNING":return"text-yellow-600 dark:text-yellow-500";case"ERROR":return"text-red-600 dark:text-red-500";case"CRITICAL":return"text-red-700 dark:text-red-400 font-bold";default:return"text-foreground"}},M=B=>{switch(B){case"DEBUG":return"bg-gray-800/30 dark:bg-gray-800/50";case"INFO":return"bg-blue-900/20 dark:bg-blue-500/20";case"WARNING":return"bg-yellow-900/20 dark:bg-yellow-500/20";case"ERROR":return"bg-red-900/20 dark:bg-red-500/20";case"CRITICAL":return"bg-red-900/30 dark:bg-red-600/30";default:return"bg-gray-800/20 dark:bg-gray-800/30"}},L=()=>{window.location.reload()},P=()=>{Ud.clearLogs(),e([])},I=()=>{const B=ee.map(R=>`${R.timestamp} [${R.level.padEnd(8)}] [${R.module}] ${R.message}`).join(` -`),X=new Blob([B],{type:"text/plain;charset=utf-8"}),J=URL.createObjectURL(X),G=document.createElement("a");G.href=J,G.download=`logs-${j1(new Date,"yyyy-MM-dd-HHmmss")}.txt`,G.click(),URL.revokeObjectURL(J)},Q=()=>{x(!g)},U=()=>{h(void 0),m(void 0)},ee=b.useMemo(()=>t.filter(B=>{const X=n===""||B.message.toLowerCase().includes(n.toLowerCase())||B.module.toLowerCase().includes(n.toLowerCase()),J=s==="all"||B.level===s,G=a==="all"||B.module===a;let R=!0;if(c||f){const se=new Date(B.timestamp);if(c){const W=new Date(c);W.setHours(0,0,0,0),R=R&&se>=W}if(f){const W=new Date(f);W.setHours(23,59,59,999),R=R&&se<=W}}return X&&J&&G&&R}),[t,n,s,a,c,f]),z=Vx[S].rowHeight+N,H=Xje({count:ee.length,getScrollElement:()=>T.current,estimateSize:()=>z,overscan:15});return b.useEffect(()=>{g&&ee.length>0&&H.scrollToIndex(ee.length-1,{align:"end",behavior:"auto"})},[ee.length,g,H]),l.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[l.jsxs("div",{className:"flex-shrink-0 space-y-4 p-3 sm:p-4 lg:p-6",children:[l.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-3",children:[l.jsxs("div",{children:[l.jsx("h1",{className:"text-xl sm:text-2xl lg:text-3xl font-bold",children:"日志查看器"}),l.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:"实时查看和分析麦麦运行日志"})]}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx("div",{className:ve("h-2.5 w-2.5 sm:h-3 sm:w-3 rounded-full",y?"bg-green-500 animate-pulse":"bg-red-500")}),l.jsx("span",{className:"text-xs sm:text-sm text-muted-foreground",children:y?"已连接":"未连接"})]})]}),l.jsx(Dt,{className:"p-3 sm:p-4",children:l.jsxs("div",{className:"flex flex-col gap-3 sm:gap-4",children:[l.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:gap-4",children:[l.jsxs("div",{className:"flex-1 relative",children:[l.jsx(ci,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),l.jsx(Pe,{placeholder:"搜索日志...",value:n,onChange:B=>r(B.target.value),className:"pl-9 h-9 text-sm"})]}),l.jsxs(qt,{value:s,onValueChange:i,children:[l.jsxs(It,{className:"w-full sm:w-[140px] lg:w-[180px] h-9 text-sm",children:[l.jsx(P3,{className:"h-4 w-4 mr-2"}),l.jsx(Ft,{placeholder:"级别"})]}),l.jsxs(Bt,{children:[l.jsx(De,{value:"all",children:"全部级别"}),l.jsx(De,{value:"DEBUG",children:"DEBUG"}),l.jsx(De,{value:"INFO",children:"INFO"}),l.jsx(De,{value:"WARNING",children:"WARNING"}),l.jsx(De,{value:"ERROR",children:"ERROR"}),l.jsx(De,{value:"CRITICAL",children:"CRITICAL"})]})]}),l.jsxs(qt,{value:a,onValueChange:o,children:[l.jsxs(It,{className:"w-full sm:w-[160px] lg:w-[200px] h-9 text-sm",children:[l.jsx(P3,{className:"h-4 w-4 mr-2"}),l.jsx(Ft,{placeholder:"模块"})]}),l.jsxs(Bt,{children:[l.jsx(De,{value:"all",children:"全部模块"}),_.map(B=>l.jsx(De,{value:B,children:B},B))]})]})]}),l.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:gap-4",children:[l.jsxs(ul,{children:[l.jsx(dl,{asChild:!0,children:l.jsxs(de,{variant:"outline",size:"sm",className:ve("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!c&&"text-muted-foreground"),children:[l.jsx(BC,{className:"mr-2 h-4 w-4"}),l.jsx("span",{className:"text-xs sm:text-sm",children:c?j1(c,"PPP",{locale:Hx}):"开始日期"})]})}),l.jsx(Ea,{className:"w-auto p-0",align:"start",children:l.jsx(gD,{mode:"single",selected:c,onSelect:h,initialFocus:!0,locale:Hx})})]}),l.jsxs(ul,{children:[l.jsx(dl,{asChild:!0,children:l.jsxs(de,{variant:"outline",size:"sm",className:ve("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!f&&"text-muted-foreground"),children:[l.jsx(BC,{className:"mr-2 h-4 w-4"}),l.jsx("span",{className:"text-xs sm:text-sm",children:f?j1(f,"PPP",{locale:Hx}):"结束日期"})]})}),l.jsx(Ea,{className:"w-auto p-0",align:"start",children:l.jsx(gD,{mode:"single",selected:f,onSelect:m,initialFocus:!0,locale:Hx})})]}),(c||f)&&l.jsxs(de,{variant:"outline",size:"sm",onClick:U,className:"w-full sm:w-auto h-9",children:[l.jsx(P0,{className:"h-4 w-4 sm:mr-2"}),l.jsx("span",{className:"hidden sm:inline text-sm",children:"清除时间筛选"}),l.jsx("span",{className:"sm:hidden text-sm",children:"清除"})]})]}),l.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center",children:[l.jsxs("div",{className:"flex gap-2 flex-wrap",children:[l.jsxs(de,{variant:g?"default":"outline",size:"sm",onClick:Q,className:"flex-1 sm:flex-none h-9",children:[g?l.jsx(UK,{className:"h-4 w-4"}):l.jsx(WK,{className:"h-4 w-4"}),l.jsx("span",{className:"ml-2 text-sm",children:g?"自动滚动":"已暂停"})]}),l.jsxs(de,{variant:"outline",size:"sm",onClick:L,className:"flex-1 sm:flex-none h-9",children:[l.jsx(Ls,{className:"h-4 w-4"}),l.jsx("span",{className:"ml-2 text-sm",children:"刷新"})]}),l.jsxs(de,{variant:"outline",size:"sm",onClick:P,className:"flex-1 sm:flex-none h-9",children:[l.jsx(fn,{className:"h-4 w-4"}),l.jsx("span",{className:"ml-2 text-sm",children:"清空"})]}),l.jsxs(de,{variant:"outline",size:"sm",onClick:I,className:"flex-1 sm:flex-none h-9",children:[l.jsx(Su,{className:"h-4 w-4"}),l.jsx("span",{className:"ml-2 text-sm",children:"导出"})]})]}),l.jsx("div",{className:"flex-1 hidden sm:block"}),l.jsxs("div",{className:"text-xs sm:text-sm text-muted-foreground flex items-center justify-center sm:justify-end",children:[l.jsxs("span",{className:"font-mono",children:[ee.length," / ",t.length]}),l.jsx("span",{className:"ml-1",children:"条日志"})]})]}),l.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-6 pt-2 border-t border-border/50",children:[l.jsxs("div",{className:"flex items-center gap-3",children:[l.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[l.jsx(GK,{className:"h-4 w-4"}),l.jsx("span",{children:"字号"})]}),l.jsx("div",{className:"flex gap-1",children:Object.keys(Vx).map(B=>l.jsx(de,{variant:S===B?"default":"outline",size:"sm",onClick:()=>k(B),className:"h-7 px-3 text-xs",children:Vx[B].label},B))})]}),l.jsxs("div",{className:"flex items-center gap-3 flex-1 max-w-xs",children:[l.jsx("span",{className:"text-sm text-muted-foreground whitespace-nowrap",children:"行距"}),l.jsx(V0,{value:[N],onValueChange:([B])=>C(B),min:0,max:12,step:2,className:"flex-1"}),l.jsxs("span",{className:"text-xs text-muted-foreground w-8",children:[N,"px"]})]})]})]})})]}),l.jsx("div",{className:"flex-1 min-h-0 px-3 sm:px-4 lg:px-6 pb-3 sm:pb-4 lg:pb-6",children:l.jsx(Dt,{className:"bg-black dark:bg-gray-950 border-gray-800 dark:border-gray-900 h-full",children:l.jsx(hn,{viewportRef:T,className:"h-full",children:l.jsx("div",{className:ve("p-2 sm:p-3 font-mono relative",Vx[S].class),style:{height:`${H.getTotalSize()}px`},children:ee.length===0?l.jsx("div",{className:"text-gray-500 dark:text-gray-600 text-center py-8 text-sm",children:"暂无日志数据"}):H.getVirtualItems().map(B=>{const X=ee[B.index];return l.jsxs("div",{"data-index":B.index,ref:H.measureElement,className:ve("absolute top-0 left-0 w-full px-2 sm:px-3 rounded hover:bg-white/5 transition-colors group",M(X.level)),style:{transform:`translateY(${B.start}px)`,paddingTop:`${N/2}px`,paddingBottom:`${N/2}px`},children:[l.jsxs("div",{className:"flex flex-col gap-0.5 sm:hidden",children:[l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx("span",{className:"text-gray-500 dark:text-gray-600",children:X.timestamp}),l.jsxs("span",{className:ve("font-semibold",E(X.level)),children:["[",X.level,"]"]})]}),l.jsx("div",{className:"text-cyan-400 dark:text-cyan-500 truncate",children:X.module}),l.jsx("div",{className:"text-gray-300 dark:text-gray-400 whitespace-pre-wrap break-words",children:X.message})]}),l.jsxs("div",{className:"hidden sm:flex gap-2 items-start",children:[l.jsx("span",{className:"text-gray-500 dark:text-gray-600 flex-shrink-0 w-[130px] lg:w-[160px]",children:X.timestamp}),l.jsxs("span",{className:ve("flex-shrink-0 w-[65px] lg:w-[75px] font-semibold",E(X.level)),children:["[",X.level,"]"]}),l.jsx("span",{className:"text-cyan-400 dark:text-cyan-500 flex-shrink-0 w-[100px] lg:w-[130px] truncate",children:X.module}),l.jsx("span",{className:"text-gray-300 dark:text-gray-400 flex-1 whitespace-pre-wrap break-words",children:X.message})]})]},B.key)})})})})})]})}const E8e="Mai-with-u",_8e="plugin-repo",M8e="main",A8e="plugin_details.json";async function R8e(){try{const t=await pt("/api/webui/plugins/fetch-raw",{method:"POST",headers:Ct(),body:JSON.stringify({owner:E8e,repo:_8e,branch:M8e,file_path:A8e})});if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);const e=await t.json();if(!e.success||!e.data)throw new Error(e.error||"获取插件列表失败");return JSON.parse(e.data).filter(s=>!s?.id||!s?.manifest?(console.warn("跳过无效插件数据:",s),!1):!s.manifest.name||!s.manifest.version?(console.warn("跳过缺少必需字段的插件:",s.id),!1):!0).map(s=>({id:s.id,manifest:{manifest_version:s.manifest.manifest_version||1,name:s.manifest.name,version:s.manifest.version,description:s.manifest.description||"",author:s.manifest.author||{name:"Unknown"},license:s.manifest.license||"Unknown",host_application:s.manifest.host_application||{min_version:"0.0.0"},homepage_url:s.manifest.homepage_url,repository_url:s.manifest.repository_url,keywords:s.manifest.keywords||[],categories:s.manifest.categories||[],default_locale:s.manifest.default_locale||"zh-CN",locales_path:s.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!1,published_at:new Date().toISOString(),updated_at:new Date().toISOString()}))}catch(t){throw console.error("Failed to fetch plugin list:",t),t}}async function D8e(){try{const t=await pt("/api/webui/plugins/git-status");if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);return await t.json()}catch(t){return console.error("Failed to check Git status:",t),{installed:!1,error:"无法检测 Git 安装状态"}}}async function z8e(){try{const t=await pt("/api/webui/plugins/version");if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);return await t.json()}catch(t){return console.error("Failed to get Maimai version:",t),{version:"0.0.0",version_major:0,version_minor:0,version_patch:0}}}function P8e(t,e,n){const r=t.split(".").map(o=>parseInt(o)||0),s=r[0]||0,i=r[1]||0,a=r[2]||0;if(n.version_majorparseInt(m)||0),c=o[0]||0,h=o[1]||0,f=o[2]||0;if(n.version_major>c||n.version_major===c&&n.version_minor>h||n.version_major===c&&n.version_minor===h&&n.version_patch>f)return!1}return!0}function L8e(t,e){const n=window.location.protocol==="https:"?"wss:":"ws:",r=window.location.host,s=new WebSocket(`${n}//${r}/api/webui/ws/plugin-progress`);return s.onopen=()=>{console.log("Plugin progress WebSocket connected");const i=setInterval(()=>{s.readyState===WebSocket.OPEN?s.send("ping"):clearInterval(i)},3e4)},s.onmessage=i=>{try{if(i.data==="pong")return;const a=JSON.parse(i.data);t(a)}catch(a){console.error("Failed to parse progress data:",a)}},s.onerror=i=>{console.error("Plugin progress WebSocket error:",i),e?.(i)},s.onclose=()=>{console.log("Plugin progress WebSocket disconnected")},s}async function Ux(){try{const t=await pt("/api/webui/plugins/installed",{headers:Ct()});if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);const e=await t.json();if(!e.success)throw new Error(e.message||"获取已安装插件列表失败");return e.plugins||[]}catch(t){return console.error("Failed to get installed plugins:",t),[]}}function Wx(t,e){return e.some(n=>n.id===t)}function Gx(t,e){const n=e.find(r=>r.id===t);if(n)return n.manifest?.version||n.version}async function I8e(t,e,n="main"){const r=await pt("/api/webui/plugins/install",{method:"POST",headers:Ct(),body:JSON.stringify({plugin_id:t,repository_url:e,branch:n})});if(!r.ok){const s=await r.json();throw new Error(s.detail||"安装失败")}return await r.json()}async function B8e(t){const e=await pt("/api/webui/plugins/uninstall",{method:"POST",headers:Ct(),body:JSON.stringify({plugin_id:t})});if(!e.ok){const n=await e.json();throw new Error(n.detail||"卸载失败")}return await e.json()}async function q8e(t,e,n="main"){const r=await pt("/api/webui/plugins/update",{method:"POST",headers:Ct(),body:JSON.stringify({plugin_id:t,repository_url:e,branch:n})});if(!r.ok){const s=await r.json();throw new Error(s.detail||"更新失败")}return await r.json()}const wp="https://maibot-plugin-stats.maibot-webui.workers.dev";async function hU(t){try{const e=await fetch(`${wp}/stats/${t}`);return e.ok?await e.json():(console.error("Failed to fetch plugin stats:",e.statusText),null)}catch(e){return console.error("Error fetching plugin stats:",e),null}}async function F8e(t,e){try{const n=e||AO(),r=await fetch(`${wp}/stats/like`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t,user_id:n})}),s=await r.json();return r.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:r.ok?{success:!0,...s}:{success:!1,error:s.error||"点赞失败"}}catch(n){return console.error("Error liking plugin:",n),{success:!1,error:"网络错误"}}}async function $8e(t,e){try{const n=e||AO(),r=await fetch(`${wp}/stats/dislike`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t,user_id:n})}),s=await r.json();return r.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:r.ok?{success:!0,...s}:{success:!1,error:s.error||"点踩失败"}}catch(n){return console.error("Error disliking plugin:",n),{success:!1,error:"网络错误"}}}async function Q8e(t,e,n,r){if(e<1||e>5)return{success:!1,error:"评分必须在 1-5 之间"};try{const s=r||AO(),i=await fetch(`${wp}/stats/rate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t,rating:e,comment:n,user_id:s})}),a=await i.json();return i.status===429?{success:!1,error:"每天最多评分 3 次"}:i.ok?{success:!0,...a}:{success:!1,error:a.error||"评分失败"}}catch(s){return console.error("Error rating plugin:",s),{success:!1,error:"网络错误"}}}async function H8e(t){try{const e=await fetch(`${wp}/stats/download`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t})}),n=await e.json();return e.status===429?(console.warn("Download recording rate limited"),{success:!0}):e.ok?{success:!0,...n}:(console.error("Failed to record download:",n.error),{success:!1,error:n.error})}catch(e){return console.error("Error recording download:",e),{success:!1,error:"网络错误"}}}function V8e(){const t=navigator,e=[navigator.userAgent,navigator.language,navigator.languages?.join(",")||"",navigator.platform,navigator.hardwareConcurrency||0,screen.width,screen.height,screen.colorDepth,screen.pixelDepth,new Date().getTimezoneOffset(),Intl.DateTimeFormat().resolvedOptions().timeZone,navigator.maxTouchPoints||0,t.deviceMemory||0].join("|");let n=0;for(let r=0;r{i(!0);const k=await hU(t);k&&r(k),i(!1)};b.useEffect(()=>{x()},[t]);const y=async()=>{const k=await F8e(t);k.success?(g({title:"已点赞",description:"感谢你的支持!"}),x()):g({title:"点赞失败",description:k.error||"未知错误",variant:"destructive"})},w=async()=>{const k=await $8e(t);k.success?(g({title:"已反馈",description:"感谢你的反馈!"}),x()):g({title:"操作失败",description:k.error||"未知错误",variant:"destructive"})},S=async()=>{if(a===0){g({title:"请选择评分",description:"至少选择 1 颗星",variant:"destructive"});return}const k=await Q8e(t,a,c||void 0);k.success?(g({title:"评分成功",description:"感谢你的评价!"}),m(!1),o(0),h(""),x()):g({title:"评分失败",description:k.error||"未知错误",variant:"destructive"})};return s?l.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[l.jsxs("div",{className:"flex items-center gap-1",children:[l.jsx(Su,{className:"h-4 w-4"}),l.jsx("span",{children:"-"})]}),l.jsxs("div",{className:"flex items-center gap-1",children:[l.jsx(sc,{className:"h-4 w-4"}),l.jsx("span",{children:"-"})]})]}):n?e?l.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[l.jsxs("div",{className:"flex items-center gap-1",title:`下载量: ${n.downloads.toLocaleString()}`,children:[l.jsx(Su,{className:"h-4 w-4"}),l.jsx("span",{children:n.downloads.toLocaleString()})]}),l.jsxs("div",{className:"flex items-center gap-1",title:`评分: ${n.rating.toFixed(1)} (${n.rating_count} 条评价)`,children:[l.jsx(sc,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),l.jsx("span",{children:n.rating.toFixed(1)})]}),l.jsxs("div",{className:"flex items-center gap-1",title:`点赞数: ${n.likes}`,children:[l.jsx(rw,{className:"h-4 w-4"}),l.jsx("span",{children:n.likes})]})]}):l.jsxs("div",{className:"space-y-4",children:[l.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-4",children:[l.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[l.jsx(Su,{className:"h-5 w-5 text-muted-foreground mb-1"}),l.jsx("span",{className:"text-2xl font-bold",children:n.downloads.toLocaleString()}),l.jsx("span",{className:"text-xs text-muted-foreground",children:"下载量"})]}),l.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[l.jsx(sc,{className:"h-5 w-5 text-yellow-400 mb-1 fill-yellow-400"}),l.jsx("span",{className:"text-2xl font-bold",children:n.rating.toFixed(1)}),l.jsxs("span",{className:"text-xs text-muted-foreground",children:[n.rating_count," 条评价"]})]}),l.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[l.jsx(rw,{className:"h-5 w-5 text-green-500 mb-1"}),l.jsx("span",{className:"text-2xl font-bold",children:n.likes}),l.jsx("span",{className:"text-xs text-muted-foreground",children:"点赞"})]}),l.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[l.jsx(qC,{className:"h-5 w-5 text-red-500 mb-1"}),l.jsx("span",{className:"text-2xl font-bold",children:n.dislikes}),l.jsx("span",{className:"text-xs text-muted-foreground",children:"点踩"})]})]}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsxs(de,{variant:"outline",size:"sm",onClick:y,children:[l.jsx(rw,{className:"h-4 w-4 mr-1"}),"点赞"]}),l.jsxs(de,{variant:"outline",size:"sm",onClick:w,children:[l.jsx(qC,{className:"h-4 w-4 mr-1"}),"点踩"]}),l.jsxs(xr,{open:f,onOpenChange:m,children:[l.jsx(Bh,{asChild:!0,children:l.jsxs(de,{variant:"default",size:"sm",children:[l.jsx(sc,{className:"h-4 w-4 mr-1"}),"评分"]})}),l.jsxs(lr,{children:[l.jsxs(or,{children:[l.jsx(cr,{children:"为插件评分"}),l.jsx(Hr,{children:"分享你的使用体验,帮助其他用户"})]}),l.jsxs("div",{className:"space-y-4 py-4",children:[l.jsxs("div",{className:"flex flex-col items-center gap-2",children:[l.jsx("div",{className:"flex gap-2",children:[1,2,3,4,5].map(k=>l.jsx("button",{onClick:()=>o(k),className:"focus:outline-none",children:l.jsx(sc,{className:`h-8 w-8 transition-colors ${k<=a?"fill-yellow-400 text-yellow-400":"text-muted-foreground hover:text-yellow-300"}`})},k))}),l.jsxs("span",{className:"text-sm text-muted-foreground",children:[a===0&&"点击星星进行评分",a===1&&"很差",a===2&&"一般",a===3&&"还行",a===4&&"不错",a===5&&"非常好"]})]}),l.jsxs("div",{children:[l.jsx("label",{className:"text-sm font-medium mb-2 block",children:"评论(可选)"}),l.jsx(pr,{value:c,onChange:k=>h(k.target.value),placeholder:"分享你的使用体验...",rows:4,maxLength:500}),l.jsxs("div",{className:"text-xs text-muted-foreground mt-1 text-right",children:[c.length," / 500"]})]})]}),l.jsxs(as,{children:[l.jsx(de,{variant:"outline",onClick:()=>m(!1),children:"取消"}),l.jsx(de,{onClick:S,disabled:a===0,children:"提交评分"})]})]})]})]}),n.recent_ratings&&n.recent_ratings.length>0&&l.jsxs("div",{className:"space-y-2",children:[l.jsx("h4",{className:"text-sm font-semibold",children:"最近评价"}),l.jsx("div",{className:"space-y-3",children:n.recent_ratings.map((k,N)=>l.jsxs("div",{className:"p-3 rounded-lg border bg-muted/50",children:[l.jsxs("div",{className:"flex items-center justify-between mb-2",children:[l.jsx("div",{className:"flex gap-1",children:[1,2,3,4,5].map(C=>l.jsx(sc,{className:`h-3 w-3 ${C<=k.rating?"fill-yellow-400 text-yellow-400":"text-muted-foreground"}`},C))}),l.jsx("span",{className:"text-xs text-muted-foreground",children:new Date(k.created_at).toLocaleDateString()})]}),k.comment&&l.jsx("p",{className:"text-sm text-muted-foreground",children:k.comment})]},N))})]})]}):null}const vD={"Group Management":"群组管理","Entertainment & Interaction":"娱乐互动","Utility Tools":"实用工具","Content Generation":"内容生成",Multimedia:"多媒体","External Integration":"外部集成","Data Analysis & Insights":"数据分析与洞察",Other:"其他"};function W8e(){const t=Da(),[e,n]=b.useState(null),[r,s]=b.useState(""),[i,a]=b.useState("all"),[o,c]=b.useState("all"),[h,f]=b.useState(!0),[m,g]=b.useState([]),[x,y]=b.useState(!0),[w,S]=b.useState(null),[k,N]=b.useState(null),[C,T]=b.useState(null),[_,E]=b.useState(null),[,M]=b.useState([]),[L,P]=b.useState({}),{toast:I}=ts(),Q=async R=>{const se=R.map(async V=>{try{const te=await hU(V.id);return{id:V.id,stats:te}}catch(te){return console.warn(`Failed to load stats for ${V.id}:`,te),{id:V.id,stats:null}}}),W=await Promise.all(se),F={};W.forEach(({id:V,stats:te})=>{te&&(F[V]=te)}),P(F)};b.useEffect(()=>{let R=null,se=!1;return(async()=>{if(R=L8e(F=>{se||(T(F),F.stage==="success"?setTimeout(()=>{se||T(null)},2e3):F.stage==="error"&&(y(!1),S(F.error||"加载失败")))},F=>{console.error("WebSocket error:",F),se||I({title:"WebSocket 连接失败",description:"无法实时显示加载进度",variant:"destructive"})}),await new Promise(F=>{if(!R){F();return}const V=()=>{R&&R.readyState===WebSocket.OPEN?(console.log("WebSocket connected, starting to load plugins"),F()):R&&R.readyState===WebSocket.CLOSED?(console.warn("WebSocket closed before loading plugins"),F()):setTimeout(V,100)};V()}),!se){const F=await D8e();N(F),F.installed||I({title:"Git 未安装",description:F.error||"请先安装 Git 才能使用插件安装功能",variant:"destructive"})}if(!se){const F=await z8e();E(F)}if(!se)try{y(!0),S(null);const F=await R8e();if(!se){const V=await Ux();M(V);const te=F.map(ne=>{const K=Wx(ne.id,V),ie=Gx(ne.id,V);return{...ne,installed:K,installed_version:ie}});for(const ne of V)!te.some(ie=>ie.id===ne.id)&&ne.manifest&&te.push({id:ne.id,manifest:{manifest_version:ne.manifest.manifest_version||1,name:ne.manifest.name,version:ne.manifest.version,description:ne.manifest.description||"",author:ne.manifest.author,license:ne.manifest.license||"Unknown",host_application:ne.manifest.host_application,homepage_url:ne.manifest.homepage_url,repository_url:ne.manifest.repository_url,keywords:ne.manifest.keywords||[],categories:ne.manifest.categories||[],default_locale:ne.manifest.default_locale||"zh-CN",locales_path:ne.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!0,installed_version:ne.manifest.version,published_at:new Date().toISOString(),updated_at:new Date().toISOString()});g(te),Q(te)}}catch(F){if(!se){const V=F instanceof Error?F.message:"加载插件列表失败";S(V),I({title:"加载失败",description:V,variant:"destructive"})}}finally{se||y(!1)}})(),()=>{se=!0,R&&R.close()}},[I]);const U=R=>{if(!R.installed&&_&&!ee(R))return l.jsxs(In,{variant:"destructive",className:"gap-1",children:[l.jsx(Cu,{className:"h-3 w-3"}),"不兼容"]});if(R.installed){const se=R.installed_version?.trim(),W=R.manifest.version?.trim();if(se!==W){const F=se?.split(".").map(Number)||[0,0,0],V=W?.split(".").map(Number)||[0,0,0];for(let te=0;te<3;te++){if((V[te]||0)>(F[te]||0))return l.jsxs(In,{variant:"outline",className:"gap-1 text-orange-600 border-orange-600",children:[l.jsx(Cu,{className:"h-3 w-3"}),"可更新"]});if((V[te]||0)<(F[te]||0))break}}return l.jsxs(In,{variant:"default",className:"gap-1",children:[l.jsx(xc,{className:"h-3 w-3"}),"已安装"]})}return null},ee=R=>!_||!R.manifest?.host_application?!0:P8e(R.manifest.host_application.min_version,R.manifest.host_application.max_version,_),z=R=>{if(!R.installed||!R.installed_version||!R.manifest?.version)return!1;const se=R.installed_version.trim(),W=R.manifest.version.trim();if(se===W)return!1;const F=se.split(".").map(Number),V=W.split(".").map(Number);for(let te=0;te<3;te++){if((V[te]||0)>(F[te]||0))return!0;if((V[te]||0)<(F[te]||0))return!1}return!1},H=m.filter(R=>{if(!R.manifest)return console.warn("[过滤] 跳过无 manifest 的插件:",R.id),!1;const se=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(te=>te.toLowerCase().includes(r.toLowerCase())),W=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i);let F=!0;o==="installed"?F=R.installed===!0:o==="updates"&&(F=R.installed===!0&&z(R));const V=!h||!_||ee(R);return se&&W&&F&&V}),B=()=>{n(null)},X=async R=>{if(!k?.installed){I({title:"无法安装",description:"Git 未安装",variant:"destructive"});return}if(_&&!ee(R)){I({title:"无法安装",description:"插件与当前麦麦版本不兼容",variant:"destructive"});return}try{await I8e(R.id,R.manifest.repository_url||"","main"),H8e(R.id).catch(W=>{console.warn("Failed to record download:",W)}),I({title:"安装成功",description:`${R.manifest.name} 已成功安装`});const se=await Ux();M(se),g(W=>W.map(F=>{if(F.id===R.id){const V=Wx(F.id,se),te=Gx(F.id,se);return{...F,installed:V,installed_version:te}}return F}))}catch(se){I({title:"安装失败",description:se instanceof Error?se.message:"未知错误",variant:"destructive"})}},J=async R=>{try{await B8e(R.id),I({title:"卸载成功",description:`${R.manifest.name} 已成功卸载`});const se=await Ux();M(se),g(W=>W.map(F=>{if(F.id===R.id){const V=Wx(F.id,se),te=Gx(F.id,se);return{...F,installed:V,installed_version:te}}return F}))}catch(se){I({title:"卸载失败",description:se instanceof Error?se.message:"未知错误",variant:"destructive"})}},G=async R=>{if(!k?.installed){I({title:"无法更新",description:"Git 未安装",variant:"destructive"});return}try{const se=await q8e(R.id,R.manifest.repository_url||"","main");I({title:"更新成功",description:`${R.manifest.name} 已从 ${se.old_version} 更新到 ${se.new_version}`});const W=await Ux();M(W),g(F=>F.map(V=>{if(V.id===R.id){const te=Wx(V.id,W),ne=Gx(V.id,W);return{...V,installed:te,installed_version:ne}}return V}))}catch(se){I({title:"更新失败",description:se instanceof Error?se.message:"未知错误",variant:"destructive"})}};return l.jsx(hn,{className:"h-full",children:l.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[l.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[l.jsxs("div",{children:[l.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件市场"}),l.jsx("p",{className:"text-muted-foreground mt-2",children:"浏览和管理麦麦的插件"})]}),l.jsxs(de,{onClick:()=>t({to:"/plugin-mirrors"}),children:[l.jsx(XK,{className:"h-4 w-4 mr-2"}),"配置镜像源"]})]}),k&&!k.installed&&l.jsxs(Dt,{className:"border-orange-600 bg-orange-50 dark:bg-orange-950/20",children:[l.jsx(kn,{children:l.jsxs("div",{className:"flex items-center gap-3",children:[l.jsx(Oa,{className:"h-5 w-5 text-orange-600"}),l.jsxs("div",{children:[l.jsx(jn,{className:"text-lg text-orange-900 dark:text-orange-100",children:"Git 未安装"}),l.jsx(Fr,{className:"text-orange-800 dark:text-orange-200",children:k.error||"请先安装 Git 才能使用插件安装功能"})]})]})}),l.jsx(Dn,{children:l.jsxs("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:["您可以从 ",l.jsx("a",{href:"https://git-scm.com/downloads",target:"_blank",rel:"noopener noreferrer",className:"underline font-medium",children:"git-scm.com"})," 下载并安装 Git。 安装完成后,请重启麦麦应用。"]})})]}),l.jsx(Dt,{className:"p-4",children:l.jsxs("div",{className:"flex flex-col gap-4",children:[l.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[l.jsxs("div",{className:"flex-1 relative",children:[l.jsx(ci,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),l.jsx(Pe,{placeholder:"搜索插件...",value:r,onChange:R=>s(R.target.value),className:"pl-9"})]}),l.jsxs(qt,{value:i,onValueChange:a,children:[l.jsx(It,{className:"w-full sm:w-[200px]",children:l.jsx(Ft,{placeholder:"选择分类"})}),l.jsxs(Bt,{children:[l.jsx(De,{value:"all",children:"全部分类"}),l.jsx(De,{value:"Group Management",children:"群组管理"}),l.jsx(De,{value:"Entertainment & Interaction",children:"娱乐互动"}),l.jsx(De,{value:"Utility Tools",children:"实用工具"}),l.jsx(De,{value:"Content Generation",children:"内容生成"}),l.jsx(De,{value:"Multimedia",children:"多媒体"}),l.jsx(De,{value:"External Integration",children:"外部集成"}),l.jsx(De,{value:"Data Analysis & Insights",children:"数据分析与洞察"}),l.jsx(De,{value:"Other",children:"其他"})]})]})]}),l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx(li,{id:"compatible-only",checked:h,onCheckedChange:R=>f(R===!0)}),l.jsx("label",{htmlFor:"compatible-only",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer",children:"只显示兼容当前版本的插件"})]})]})}),l.jsx(sa,{value:o,onValueChange:c,className:"w-full",children:l.jsxs(Mi,{className:"grid w-full grid-cols-3",children:[l.jsxs(zt,{value:"all",children:["全部插件 (",m.filter(R=>{if(!R.manifest)return!1;const se=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(V=>V.toLowerCase().includes(r.toLowerCase())),W=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i),F=!h||!_||ee(R);return se&&W&&F}).length,")"]}),l.jsxs(zt,{value:"installed",children:["已安装 (",m.filter(R=>{if(!R.manifest)return!1;const se=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(V=>V.toLowerCase().includes(r.toLowerCase())),W=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i),F=!h||!_||ee(R);return R.installed&&se&&W&&F}).length,")"]}),l.jsxs(zt,{value:"updates",children:["可更新 (",m.filter(R=>{if(!R.manifest)return!1;const se=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(V=>V.toLowerCase().includes(r.toLowerCase())),W=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i),F=!h||!_||ee(R);return R.installed&&z(R)&&se&&W&&F}).length,")"]})]})}),C&&C.stage==="loading"&&l.jsx(Dt,{className:"p-4",children:l.jsxs("div",{className:"space-y-3",children:[l.jsxs("div",{className:"flex items-center justify-between",children:[l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx(vc,{className:"h-4 w-4 animate-spin"}),l.jsxs("span",{className:"text-sm font-medium",children:[C.operation==="fetch"&&"加载插件列表",C.operation==="install"&&`安装插件${C.plugin_id?`: ${C.plugin_id}`:""}`,C.operation==="uninstall"&&`卸载插件${C.plugin_id?`: ${C.plugin_id}`:""}`,C.operation==="update"&&`更新插件${C.plugin_id?`: ${C.plugin_id}`:""}`]})]}),l.jsxs("span",{className:"text-sm font-medium",children:[C.progress,"%"]})]}),l.jsx(H0,{value:C.progress,className:"h-2"}),l.jsx("div",{className:"text-xs text-muted-foreground",children:C.message}),C.operation==="fetch"&&C.total_plugins>0&&l.jsxs("div",{className:"text-xs text-muted-foreground text-center",children:["已加载 ",C.loaded_plugins," / ",C.total_plugins," 个插件"]})]})}),C&&C.stage==="error"&&C.error&&l.jsx(Dt,{className:"border-destructive bg-destructive/10",children:l.jsx(kn,{children:l.jsxs("div",{className:"flex items-center gap-3",children:[l.jsx(Oa,{className:"h-5 w-5 text-destructive"}),l.jsxs("div",{children:[l.jsx(jn,{className:"text-lg text-destructive",children:"加载失败"}),l.jsx(Fr,{className:"text-destructive/80",children:C.error})]})]})})}),x?l.jsxs("div",{className:"flex items-center justify-center py-12",children:[l.jsx(vc,{className:"h-8 w-8 animate-spin text-muted-foreground"}),l.jsx("span",{className:"ml-3 text-muted-foreground",children:"加载插件列表中..."})]}):w?l.jsx(Dt,{className:"p-6",children:l.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[l.jsx(Oa,{className:"h-12 w-12 text-destructive mb-4"}),l.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),l.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:w}),l.jsx(de,{onClick:()=>window.location.reload(),children:"重新加载"})]})}):H.length===0?l.jsx(Dt,{className:"p-6",children:l.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[l.jsx(ci,{className:"h-12 w-12 text-muted-foreground mb-4"}),l.jsx("h3",{className:"text-lg font-semibold mb-2",children:"未找到插件"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:r||i!=="all"?"尝试调整搜索条件或筛选器":"暂无可用插件"})]})}):l.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:H.map(R=>l.jsxs(Dt,{className:"flex flex-col hover:shadow-lg transition-shadow h-full",children:[l.jsxs(kn,{children:[l.jsxs("div",{className:"flex items-start justify-between gap-2",children:[l.jsx(jn,{className:"text-xl",children:R.manifest?.name||R.id}),l.jsxs("div",{className:"flex flex-col gap-1",children:[R.manifest?.categories&&R.manifest.categories[0]&&l.jsx(In,{variant:"secondary",className:"text-xs whitespace-nowrap",children:vD[R.manifest.categories[0]]||R.manifest.categories[0]}),U(R)]})]}),l.jsx(Fr,{className:"line-clamp-2",children:R.manifest?.description||"无描述"})]}),l.jsx(Dn,{className:"flex-1",children:l.jsxs("div",{className:"space-y-3",children:[l.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[l.jsxs("div",{className:"flex items-center gap-1",children:[l.jsx(Su,{className:"h-4 w-4"}),l.jsx("span",{children:(L[R.id]?.downloads??R.downloads??0).toLocaleString()})]}),l.jsxs("div",{className:"flex items-center gap-1",children:[l.jsx(sc,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),l.jsx("span",{children:(L[R.id]?.rating??R.rating??0).toFixed(1)})]})]}),l.jsxs("div",{className:"flex flex-wrap gap-2",children:[R.manifest?.keywords&&R.manifest.keywords.slice(0,3).map(se=>l.jsx(In,{variant:"outline",className:"text-xs",children:se},se)),R.manifest?.keywords&&R.manifest.keywords.length>3&&l.jsxs(In,{variant:"outline",className:"text-xs",children:["+",R.manifest.keywords.length-3]})]}),l.jsxs("div",{className:"text-xs text-muted-foreground pt-2 border-t space-y-1",children:[l.jsxs("div",{children:["v",R.manifest?.version||"unknown"," · ",R.manifest?.author?.name||"Unknown"]}),R.manifest?.host_application&&l.jsxs("div",{className:"flex items-center gap-1",children:[l.jsx("span",{children:"支持:"}),l.jsxs("span",{className:"font-medium",children:[R.manifest.host_application.min_version,R.manifest.host_application.max_version?` - ${R.manifest.host_application.max_version}`:" - 最新版本"]})]})]})]})}),l.jsx(Gz,{className:"pt-4",children:l.jsxs("div",{className:"flex items-center justify-end gap-2 w-full",children:[l.jsx(de,{variant:"outline",size:"sm",onClick:()=>n(R),children:"查看详情"}),R.installed?z(R)?l.jsxs(de,{size:"sm",disabled:!k?.installed,title:k?.installed?void 0:"Git 未安装",onClick:()=>G(R),children:[l.jsx(Ls,{className:"h-4 w-4 mr-1"}),"更新"]}):l.jsxs(de,{variant:"destructive",size:"sm",disabled:!k?.installed,title:k?.installed?void 0:"Git 未安装",onClick:()=>J(R),children:[l.jsx(fn,{className:"h-4 w-4 mr-1"}),"卸载"]}):l.jsxs(de,{size:"sm",disabled:!k?.installed||C?.operation==="install"||_!==null&&!ee(R),title:k?.installed?_!==null&&!ee(R)?`不兼容当前版本 (需要 ${R.manifest?.host_application?.min_version||"未知"}${R.manifest?.host_application?.max_version?` - ${R.manifest.host_application.max_version}`:"+"},当前 ${_?.version})`:void 0:"Git 未安装",onClick:()=>X(R),children:[l.jsx(Su,{className:"h-4 w-4 mr-1"}),C?.operation==="install"&&C?.plugin_id===R.id?"安装中...":"安装"]})]})})]},R.id))}),l.jsx(xr,{open:e!==null,onOpenChange:B,children:e&&e.manifest&&l.jsxs(lr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[l.jsx(or,{children:l.jsxs("div",{className:"flex items-start justify-between gap-4",children:[l.jsxs("div",{className:"space-y-2 flex-1",children:[l.jsx(cr,{className:"text-2xl",children:e.manifest.name}),l.jsxs(Hr,{children:["作者: ",e.manifest.author?.name||"Unknown",e.manifest.author?.url&&l.jsx("a",{href:e.manifest.author.url,target:"_blank",rel:"noopener noreferrer",className:"ml-2 text-primary hover:underline",children:l.jsx(Jd,{className:"h-3 w-3 inline"})})]})]}),l.jsxs("div",{className:"flex flex-col gap-2",children:[e.manifest.categories&&e.manifest.categories[0]&&l.jsx(In,{variant:"secondary",children:vD[e.manifest.categories[0]]||e.manifest.categories[0]}),U(e)]})]})}),l.jsxs("div",{className:"space-y-6",children:[l.jsx(U8e,{pluginId:e.id}),l.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-4",children:[l.jsxs("div",{children:[l.jsx("p",{className:"text-sm font-medium",children:"版本"}),l.jsxs("p",{className:"text-sm text-muted-foreground",children:["v",e.manifest?.version||"unknown"]}),e.installed&&e.installed_version&&l.jsxs("p",{className:"text-xs text-muted-foreground",children:["已安装: v",e.installed_version]})]}),l.jsxs("div",{children:[l.jsx("p",{className:"text-sm font-medium",children:"下载量"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:(L[e.id]?.downloads??e.downloads??0).toLocaleString()})]}),l.jsxs("div",{children:[l.jsx("p",{className:"text-sm font-medium",children:"评分"}),l.jsxs("div",{className:"flex items-center gap-1",children:[l.jsx(sc,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),l.jsxs("span",{className:"text-sm text-muted-foreground",children:[(L[e.id]?.rating??e.rating??0).toFixed(1)," (",L[e.id]?.rating_count??e.review_count??0,")"]})]})]}),l.jsxs("div",{children:[l.jsx("p",{className:"text-sm font-medium",children:"许可证"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:e.manifest.license||"Unknown"})]}),l.jsxs("div",{className:"col-span-2",children:[l.jsx("p",{className:"text-sm font-medium",children:"支持版本"}),l.jsxs("p",{className:"text-sm text-muted-foreground",children:[e.manifest.host_application?.min_version||"未知",e.manifest.host_application?.max_version?` - ${e.manifest.host_application.max_version}`:" - 最新版本"]})]})]}),l.jsxs("div",{children:[l.jsx("p",{className:"text-sm font-medium mb-2",children:"关键词"}),l.jsx("div",{className:"flex flex-wrap gap-2",children:e.manifest.keywords&&e.manifest.keywords.map(R=>l.jsx(In,{variant:"outline",children:R},R))})]}),e.detailed_description&&l.jsxs("div",{children:[l.jsx("p",{className:"text-sm font-medium mb-2",children:"详细说明"}),l.jsx("p",{className:"text-sm text-muted-foreground whitespace-pre-line",children:e.detailed_description})]}),!e.detailed_description&&l.jsxs("div",{children:[l.jsx("p",{className:"text-sm font-medium mb-2",children:"说明"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:e.manifest.description||"无描述"})]}),l.jsxs("div",{className:"space-y-2",children:[e.manifest.homepage_url&&l.jsxs("div",{className:"text-sm",children:[l.jsx("span",{className:"font-medium",children:"主页: "}),l.jsx("a",{href:e.manifest.homepage_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:e.manifest.homepage_url})]}),e.manifest.repository_url&&l.jsxs("div",{className:"text-sm",children:[l.jsx("span",{className:"font-medium",children:"仓库: "}),l.jsx("a",{href:e.manifest.repository_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:e.manifest.repository_url})]})]})]}),l.jsxs(as,{children:[e.manifest.homepage_url&&l.jsxs(de,{onClick:()=>window.open(e.manifest.homepage_url,"_blank"),children:[l.jsx(Jd,{className:"h-4 w-4 mr-2"}),"访问主页"]}),e.manifest.repository_url&&l.jsxs(de,{variant:"outline",onClick:()=>window.open(e.manifest.repository_url,"_blank"),children:[l.jsx(Jd,{className:"h-4 w-4 mr-2"}),"查看仓库"]})]})]})})]})})}function G8e(){return l.jsx(hn,{className:"h-full",children:l.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[l.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[l.jsxs("div",{children:[l.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件配置"}),l.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理和配置已安装的插件"})]}),l.jsxs("div",{className:"flex gap-2",children:[l.jsxs(de,{variant:"outline",size:"sm",children:[l.jsx(Ls,{className:"h-4 w-4 mr-2"}),"刷新"]}),l.jsxs(de,{size:"sm",children:[l.jsx(bu,{className:"h-4 w-4 mr-2"}),"全局设置"]})]})]}),l.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-4",children:[l.jsxs(Dt,{children:[l.jsxs(kn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[l.jsx(jn,{className:"text-sm font-medium",children:"已安装插件"}),l.jsx(mh,{className:"h-4 w-4 text-muted-foreground"})]}),l.jsxs(Dn,{children:[l.jsx("div",{className:"text-2xl font-bold",children:"0"}),l.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"正在加载..."})]})]}),l.jsxs(Dt,{children:[l.jsxs(kn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[l.jsx(jn,{className:"text-sm font-medium",children:"已启用"}),l.jsx(xc,{className:"h-4 w-4 text-green-600"})]}),l.jsxs(Dn,{children:[l.jsx("div",{className:"text-2xl font-bold",children:"0"}),l.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"运行中的插件"})]})]}),l.jsxs(Dt,{children:[l.jsxs(kn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[l.jsx(jn,{className:"text-sm font-medium",children:"已禁用"}),l.jsx(Cu,{className:"h-4 w-4 text-orange-600"})]}),l.jsxs(Dn,{children:[l.jsx("div",{className:"text-2xl font-bold",children:"0"}),l.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"未激活的插件"})]})]}),l.jsxs(Dt,{children:[l.jsxs(kn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[l.jsx(jn,{className:"text-sm font-medium",children:"可更新"}),l.jsx(Ls,{className:"h-4 w-4 text-blue-600"})]}),l.jsxs(Dn,{children:[l.jsx("div",{className:"text-2xl font-bold",children:"0"}),l.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"有新版本可用"})]})]})]}),l.jsxs(Dt,{children:[l.jsxs(kn,{children:[l.jsx(jn,{children:"已安装的插件"}),l.jsx(Fr,{children:"查看和管理已安装插件的配置"})]}),l.jsx(Dn,{children:l.jsxs("div",{className:"flex flex-col items-center justify-center py-12 space-y-4",children:[l.jsx(mh,{className:"h-16 w-16 text-muted-foreground/50"}),l.jsxs("div",{className:"text-center space-y-2",children:[l.jsx("p",{className:"text-lg font-medium text-muted-foreground",children:"插件配置功能开发中"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:"即将支持插件的启用/禁用、参数配置等功能"})]}),l.jsx("div",{className:"flex gap-2",children:l.jsx(de,{variant:"outline",asChild:!0,children:l.jsxs("a",{href:"/plugins",children:[l.jsx(Jd,{className:"h-4 w-4 mr-2"}),"前往插件市场"]})})})]})})]}),l.jsx(Dt,{className:"border-blue-200 bg-blue-50 dark:bg-blue-950/20 dark:border-blue-900",children:l.jsx(Dn,{className:"pt-6",children:l.jsxs("div",{className:"flex items-start gap-3",children:[l.jsx(Cu,{className:"h-5 w-5 text-blue-600 mt-0.5 flex-shrink-0"}),l.jsxs("div",{className:"space-y-1",children:[l.jsx("p",{className:"text-sm font-medium text-blue-900 dark:text-blue-100",children:"开发进行中"}),l.jsxs("p",{className:"text-sm text-blue-800 dark:text-blue-200",children:["插件配置功能正在积极开发中。目前您可以通过",l.jsx("strong",{children:"插件市场"}),"安装和卸载插件,完整的配置管理功能即将推出。"]})]})]})})})]})})}function X8e(){const t=Da(),{toast:e}=ts(),[n,r]=b.useState([]),[s,i]=b.useState(!0),[a,o]=b.useState(null),[c,h]=b.useState(null),[f,m]=b.useState(!1),[g,x]=b.useState(!1),[y,w]=b.useState({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),S=b.useCallback(async()=>{try{i(!0),o(null);const M=localStorage.getItem("access-token"),L=await fetch("/api/webui/plugins/mirrors",{headers:{Authorization:`Bearer ${M}`}});if(!L.ok)throw new Error("获取镜像源列表失败");const P=await L.json();r(P.mirrors||[])}catch(M){const L=M instanceof Error?M.message:"加载镜像源失败";o(L),e({title:"加载失败",description:L,variant:"destructive"})}finally{i(!1)}},[e]);b.useEffect(()=>{S()},[S]);const k=async()=>{try{const M=localStorage.getItem("access-token"),L=await fetch("/api/webui/plugins/mirrors",{method:"POST",headers:{Authorization:`Bearer ${M}`,"Content-Type":"application/json"},body:JSON.stringify(y)});if(!L.ok){const P=await L.json();throw new Error(P.detail||"添加镜像源失败")}e({title:"添加成功",description:"镜像源已添加"}),m(!1),w({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),S()}catch(M){e({title:"添加失败",description:M instanceof Error?M.message:"未知错误",variant:"destructive"})}},N=async()=>{if(c)try{const M=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${c.id}`,{method:"PUT",headers:{Authorization:`Bearer ${M}`,"Content-Type":"application/json"},body:JSON.stringify({name:y.name,raw_prefix:y.raw_prefix,clone_prefix:y.clone_prefix,enabled:y.enabled,priority:y.priority})})).ok)throw new Error("更新镜像源失败");e({title:"更新成功",description:"镜像源已更新"}),x(!1),h(null),S()}catch(M){e({title:"更新失败",description:M instanceof Error?M.message:"未知错误",variant:"destructive"})}},C=async M=>{if(confirm("确定要删除这个镜像源吗?"))try{const L=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${M}`,{method:"DELETE",headers:{Authorization:`Bearer ${L}`}})).ok)throw new Error("删除镜像源失败");e({title:"删除成功",description:"镜像源已删除"}),S()}catch(L){e({title:"删除失败",description:L instanceof Error?L.message:"未知错误",variant:"destructive"})}},T=async M=>{try{const L=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${M.id}`,{method:"PUT",headers:{Authorization:`Bearer ${L}`,"Content-Type":"application/json"},body:JSON.stringify({enabled:!M.enabled})})).ok)throw new Error("更新状态失败");S()}catch(L){e({title:"更新失败",description:L instanceof Error?L.message:"未知错误",variant:"destructive"})}},_=M=>{h(M),w({id:M.id,name:M.name,raw_prefix:M.raw_prefix,clone_prefix:M.clone_prefix,enabled:M.enabled,priority:M.priority}),x(!0)},E=async(M,L)=>{const P=L==="up"?M.priority-1:M.priority+1;if(!(P<1))try{const I=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${M.id}`,{method:"PUT",headers:{Authorization:`Bearer ${I}`,"Content-Type":"application/json"},body:JSON.stringify({priority:P})})).ok)throw new Error("更新优先级失败");S()}catch(I){e({title:"更新失败",description:I instanceof Error?I.message:"未知错误",variant:"destructive"})}};return l.jsx(hn,{className:"h-full",children:l.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[l.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[l.jsxs("div",{className:"flex items-center gap-4",children:[l.jsx(de,{variant:"ghost",size:"icon",onClick:()=>t({to:"/plugins"}),children:l.jsx(lz,{className:"h-5 w-5"})}),l.jsxs("div",{children:[l.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"镜像源配置"}),l.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理 Git 克隆和文件下载的镜像源"})]})]}),l.jsxs(de,{onClick:()=>m(!0),children:[l.jsx(ws,{className:"h-4 w-4 mr-2"}),"添加镜像源"]})]}),s?l.jsx(Dt,{className:"p-6",children:l.jsx("div",{className:"flex items-center justify-center py-8",children:l.jsx(vc,{className:"h-8 w-8 animate-spin text-primary"})})}):a?l.jsx(Dt,{className:"p-6",children:l.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[l.jsx(Oa,{className:"h-12 w-12 text-destructive mb-4"}),l.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),l.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:a}),l.jsx(de,{onClick:S,children:"重新加载"})]})}):l.jsxs(Dt,{children:[l.jsx("div",{className:"hidden md:block",children:l.jsxs(Vh,{children:[l.jsx(Uh,{children:l.jsxs(bs,{children:[l.jsx(ln,{children:"状态"}),l.jsx(ln,{children:"名称"}),l.jsx(ln,{children:"ID"}),l.jsx(ln,{children:"优先级"}),l.jsx(ln,{className:"text-right",children:"操作"})]})}),l.jsx(Wh,{children:n.map(M=>l.jsxs(bs,{children:[l.jsx(Qt,{children:l.jsx(Pt,{checked:M.enabled,onCheckedChange:()=>T(M)})}),l.jsx(Qt,{children:l.jsxs("div",{children:[l.jsx("div",{className:"font-medium",children:M.name}),l.jsxs("div",{className:"text-xs text-muted-foreground mt-1",children:["Raw: ",M.raw_prefix]})]})}),l.jsx(Qt,{children:l.jsx(In,{variant:"outline",children:M.id})}),l.jsx(Qt,{children:l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx("span",{className:"font-mono",children:M.priority}),l.jsxs("div",{className:"flex flex-col gap-1",children:[l.jsx(de,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>E(M,"up"),disabled:M.priority===1,children:l.jsx($m,{className:"h-3 w-3"})}),l.jsx(de,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>E(M,"down"),children:l.jsx(Tu,{className:"h-3 w-3"})})]})]})}),l.jsx(Qt,{className:"text-right",children:l.jsxs("div",{className:"flex items-center justify-end gap-2",children:[l.jsx(de,{variant:"ghost",size:"icon",onClick:()=>_(M),children:l.jsx(wu,{className:"h-4 w-4"})}),l.jsx(de,{variant:"ghost",size:"icon",onClick:()=>C(M.id),children:l.jsx(fn,{className:"h-4 w-4 text-destructive"})})]})})]},M.id))})]})}),l.jsx("div",{className:"md:hidden p-4 space-y-4",children:n.map(M=>l.jsx(Dt,{className:"p-4",children:l.jsxs("div",{className:"space-y-3",children:[l.jsxs("div",{className:"flex items-start justify-between",children:[l.jsxs("div",{className:"flex-1",children:[l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsx("h3",{className:"font-semibold",children:M.name}),M.enabled&&l.jsx(In,{variant:"default",className:"text-xs",children:"启用"})]}),l.jsx(In,{variant:"outline",className:"mt-1 text-xs",children:M.id})]}),l.jsx(Pt,{checked:M.enabled,onCheckedChange:()=>T(M)})]}),l.jsxs("div",{className:"text-sm space-y-1",children:[l.jsxs("div",{className:"text-muted-foreground",children:[l.jsx("span",{className:"font-medium",children:"Raw: "}),l.jsx("span",{className:"break-all",children:M.raw_prefix})]}),l.jsxs("div",{className:"text-muted-foreground",children:[l.jsx("span",{className:"font-medium",children:"优先级: "}),l.jsx("span",{className:"font-mono",children:M.priority})]})]}),l.jsxs("div",{className:"flex items-center gap-2 pt-2 border-t",children:[l.jsxs(de,{variant:"outline",size:"sm",className:"flex-1",onClick:()=>_(M),children:[l.jsx(wu,{className:"h-4 w-4 mr-1"}),"编辑"]}),l.jsx(de,{variant:"outline",size:"sm",onClick:()=>E(M,"up"),disabled:M.priority===1,children:l.jsx($m,{className:"h-4 w-4"})}),l.jsx(de,{variant:"outline",size:"sm",onClick:()=>E(M,"down"),children:l.jsx(Tu,{className:"h-4 w-4"})}),l.jsx(de,{variant:"destructive",size:"sm",onClick:()=>C(M.id),children:l.jsx(fn,{className:"h-4 w-4"})})]})]})},M.id))})]}),l.jsx(xr,{open:f,onOpenChange:m,children:l.jsxs(lr,{className:"max-w-lg",children:[l.jsxs(or,{children:[l.jsx(cr,{children:"添加镜像源"}),l.jsx(Hr,{children:"添加新的 Git 镜像源配置"})]}),l.jsxs("div",{className:"space-y-4 py-4",children:[l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{htmlFor:"add-id",children:"镜像源 ID *"}),l.jsx(Pe,{id:"add-id",placeholder:"例如: my-mirror",value:y.id,onChange:M=>w({...y,id:M.target.value})})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{htmlFor:"add-name",children:"名称 *"}),l.jsx(Pe,{id:"add-name",placeholder:"例如: 我的镜像源",value:y.name,onChange:M=>w({...y,name:M.target.value})})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{htmlFor:"add-raw",children:"Raw 文件前缀 *"}),l.jsx(Pe,{id:"add-raw",placeholder:"https://example.com/raw",value:y.raw_prefix,onChange:M=>w({...y,raw_prefix:M.target.value})})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{htmlFor:"add-clone",children:"克隆前缀 *"}),l.jsx(Pe,{id:"add-clone",placeholder:"https://example.com/clone",value:y.clone_prefix,onChange:M=>w({...y,clone_prefix:M.target.value})})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{htmlFor:"add-priority",children:"优先级"}),l.jsx(Pe,{id:"add-priority",type:"number",min:"1",value:y.priority,onChange:M=>w({...y,priority:parseInt(M.target.value)||1})}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx(Pt,{id:"add-enabled",checked:y.enabled,onCheckedChange:M=>w({...y,enabled:M})}),l.jsx(ue,{htmlFor:"add-enabled",children:"启用此镜像源"})]})]}),l.jsxs(as,{children:[l.jsx(de,{variant:"outline",onClick:()=>m(!1),children:"取消"}),l.jsx(de,{onClick:k,children:"添加"})]})]})}),l.jsx(xr,{open:g,onOpenChange:x,children:l.jsxs(lr,{className:"max-w-lg",children:[l.jsxs(or,{children:[l.jsx(cr,{children:"编辑镜像源"}),l.jsx(Hr,{children:"修改镜像源配置"})]}),l.jsxs("div",{className:"space-y-4 py-4",children:[l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{children:"镜像源 ID"}),l.jsx(Pe,{value:y.id,disabled:!0})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{htmlFor:"edit-name",children:"名称 *"}),l.jsx(Pe,{id:"edit-name",value:y.name,onChange:M=>w({...y,name:M.target.value})})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{htmlFor:"edit-raw",children:"Raw 文件前缀 *"}),l.jsx(Pe,{id:"edit-raw",value:y.raw_prefix,onChange:M=>w({...y,raw_prefix:M.target.value})})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{htmlFor:"edit-clone",children:"克隆前缀 *"}),l.jsx(Pe,{id:"edit-clone",value:y.clone_prefix,onChange:M=>w({...y,clone_prefix:M.target.value})})]}),l.jsxs("div",{className:"space-y-2",children:[l.jsx(ue,{htmlFor:"edit-priority",children:"优先级"}),l.jsx(Pe,{id:"edit-priority",type:"number",min:"1",value:y.priority,onChange:M=>w({...y,priority:parseInt(M.target.value)||1})}),l.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),l.jsxs("div",{className:"flex items-center space-x-2",children:[l.jsx(Pt,{id:"edit-enabled",checked:y.enabled,onCheckedChange:M=>w({...y,enabled:M})}),l.jsx(ue,{htmlFor:"edit-enabled",children:"启用此镜像源"})]})]}),l.jsxs(as,{children:[l.jsx(de,{variant:"outline",onClick:()=>x(!1),children:"取消"}),l.jsx(de,{onClick:N,children:"保存"})]})]})})]})})}const Y8e=Ih("pointer-events-none inline-flex select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono font-medium opacity-100",{variants:{size:{sm:"h-5 text-[10px]",default:"h-6 text-xs",lg:"h-7 text-sm"}},defaultVariants:{size:"default"}}),fU=b.forwardRef(({className:t,size:e,abbrTitle:n,children:r,...s},i)=>l.jsx("kbd",{className:ve(Y8e({size:e,className:t})),ref:i,...s,children:n?l.jsx("abbr",{title:n,children:r}):r}));fU.displayName="Kbd";const K8e=[{icon:Fm,title:"首页",description:"查看仪表板概览",path:"/",category:"概览"},{icon:lo,title:"麦麦主程序配置",description:"配置麦麦的核心设置",path:"/config/bot",category:"配置"},{icon:cz,title:"麦麦模型提供商配置",description:"配置模型提供商",path:"/config/modelProvider",category:"配置"},{icon:uz,title:"麦麦模型配置",description:"配置模型参数",path:"/config/model",category:"配置"},{icon:i6,title:"表情包管理",description:"管理麦麦的表情包",path:"/resource/emoji",category:"资源"},{icon:z0,title:"表达方式管理",description:"管理麦麦的表达方式",path:"/resource/expression",category:"资源"},{icon:dz,title:"人物信息管理",description:"管理人物信息",path:"/resource/person",category:"资源"},{icon:YK,title:"统计信息",description:"查看使用统计",path:"/statistics",category:"监控"},{icon:mh,title:"插件市场",description:"浏览和安装插件",path:"/plugins",category:"扩展"},{icon:C1,title:"日志查看器",description:"查看系统日志",path:"/logs",category:"监控"},{icon:bu,title:"系统设置",description:"配置系统参数",path:"/settings",category:"系统"}];function Z8e({open:t,onOpenChange:e}){const[n,r]=b.useState(""),[s,i]=b.useState(0),a=Da(),o=K8e.filter(f=>f.title.toLowerCase().includes(n.toLowerCase())||f.description.toLowerCase().includes(n.toLowerCase())||f.category.toLowerCase().includes(n.toLowerCase()));b.useEffect(()=>{t&&(r(""),i(0))},[t]);const c=b.useCallback(f=>{a({to:f}),e(!1)},[a,e]),h=b.useCallback(f=>{f.key==="ArrowDown"?(f.preventDefault(),i(m=>(m+1)%o.length)):f.key==="ArrowUp"?(f.preventDefault(),i(m=>(m-1+o.length)%o.length)):f.key==="Enter"&&o[s]&&(f.preventDefault(),c(o[s].path))},[o,s,c]);return l.jsx(xr,{open:t,onOpenChange:e,children:l.jsxs(lr,{className:"max-w-2xl p-0 gap-0",children:[l.jsxs(or,{className:"px-4 pt-4 pb-0",children:[l.jsx(cr,{className:"sr-only",children:"搜索"}),l.jsxs("div",{className:"relative",children:[l.jsx(ci,{className:"absolute left-3 top-1/2 h-5 w-5 -translate-y-1/2 text-muted-foreground"}),l.jsx(Pe,{value:n,onChange:f=>{r(f.target.value),i(0)},onKeyDown:h,placeholder:"搜索页面...",className:"h-12 pl-11 text-base border-0 focus-visible:ring-0 shadow-none",autoFocus:!0})]})]}),l.jsx("div",{className:"border-t",children:l.jsx(hn,{className:"h-[400px]",children:o.length>0?l.jsx("div",{className:"p-2",children:o.map((f,m)=>{const g=f.icon;return l.jsxs("button",{onClick:()=>c(f.path),onMouseEnter:()=>i(m),className:ve("w-full flex items-center gap-3 px-3 py-2.5 rounded-md text-left transition-colors",m===s?"bg-accent text-accent-foreground":"hover:bg-accent/50"),children:[l.jsx(g,{className:"h-5 w-5 flex-shrink-0"}),l.jsxs("div",{className:"flex-1 min-w-0",children:[l.jsx("div",{className:"font-medium text-sm",children:f.title}),l.jsx("div",{className:"text-xs text-muted-foreground truncate",children:f.description})]}),l.jsx("div",{className:"text-xs text-muted-foreground px-2 py-1 bg-muted rounded",children:f.category})]},f.path)})}):l.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[l.jsx(ci,{className:"h-12 w-12 text-muted-foreground/50 mb-4"}),l.jsx("p",{className:"text-sm text-muted-foreground",children:n?"未找到匹配的页面":"输入关键词开始搜索"})]})})}),l.jsx("div",{className:"border-t px-4 py-3 flex items-center justify-between text-xs text-muted-foreground",children:l.jsxs("div",{className:"flex items-center gap-4",children:[l.jsxs("span",{className:"flex items-center gap-1",children:[l.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↑"}),l.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↓"}),"导航"]}),l.jsxs("span",{className:"flex items-center gap-1",children:[l.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Enter"}),"选择"]}),l.jsxs("span",{className:"flex items-center gap-1",children:[l.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Esc"}),"关闭"]})]})})]})})}function J8e(t){const e=eCe(t),n=b.forwardRef((r,s)=>{const{children:i,...a}=r,o=b.Children.toArray(i),c=o.find(nCe);if(c){const h=c.props.children,f=o.map(m=>m===c?b.Children.count(h)>1?b.Children.only(null):b.isValidElement(h)?h.props.children:null:m);return l.jsx(e,{...a,ref:s,children:b.isValidElement(h)?b.cloneElement(h,void 0,f):null})}return l.jsx(e,{...a,ref:s,children:i})});return n.displayName=`${t}.Slot`,n}function eCe(t){const e=b.forwardRef((n,r)=>{const{children:s,...i}=n;if(b.isValidElement(s)){const a=sCe(s),o=rCe(i,s.props);return s.type!==b.Fragment&&(o.ref=r?gc(r,a):a),b.cloneElement(s,o)}return b.Children.count(s)>1?b.Children.only(null):null});return e.displayName=`${t}.SlotClone`,e}var tCe=Symbol("radix.slottable");function nCe(t){return b.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===tCe}function rCe(t,e){const n={...e};for(const r in e){const s=t[r],i=e[r];/^on[A-Z]/.test(r)?s&&i?n[r]=(...o)=>{const c=i(...o);return s(...o),c}:s&&(n[r]=s):r==="style"?n[r]={...s,...i}:r==="className"&&(n[r]=[s,i].filter(Boolean).join(" "))}return{...t,...n}}function sCe(t){let e=Object.getOwnPropertyDescriptor(t.props,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning;return n?t.ref:(e=Object.getOwnPropertyDescriptor(t,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning,n?t.props.ref:t.props.ref||t.ref)}var zk=["Enter"," "],iCe=["ArrowDown","PageUp","Home"],mU=["ArrowUp","PageDown","End"],aCe=[...iCe,...mU],lCe={ltr:[...zk,"ArrowRight"],rtl:[...zk,"ArrowLeft"]},oCe={ltr:["ArrowLeft"],rtl:["ArrowRight"]},Sp="Menu",[M0,cCe,uCe]=Cv(Sp),[Gu,pU]=ha(Sp,[uCe,Rh,Fv]),kp=Rh(),gU=Fv(),[xU,Ic]=Gu(Sp),[dCe,jp]=Gu(Sp),vU=t=>{const{__scopeMenu:e,open:n=!1,children:r,dir:s,onOpenChange:i,modal:a=!0}=t,o=kp(e),[c,h]=b.useState(null),f=b.useRef(!1),m=Os(i),g=D0(s);return b.useEffect(()=>{const x=()=>{f.current=!0,document.addEventListener("pointerdown",y,{capture:!0,once:!0}),document.addEventListener("pointermove",y,{capture:!0,once:!0})},y=()=>f.current=!1;return document.addEventListener("keydown",x,{capture:!0}),()=>{document.removeEventListener("keydown",x,{capture:!0}),document.removeEventListener("pointerdown",y,{capture:!0}),document.removeEventListener("pointermove",y,{capture:!0})}},[]),l.jsx(Av,{...o,children:l.jsx(xU,{scope:e,open:n,onOpenChange:m,content:c,onContentChange:h,children:l.jsx(dCe,{scope:e,onClose:b.useCallback(()=>m(!1),[m]),isUsingKeyboardRef:f,dir:g,modal:a,children:r})})})};vU.displayName=Sp;var hCe="MenuAnchor",RO=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t,s=kp(n);return l.jsx(Rv,{...s,...r,ref:e})});RO.displayName=hCe;var DO="MenuPortal",[fCe,yU]=Gu(DO,{forceMount:void 0}),bU=t=>{const{__scopeMenu:e,forceMount:n,children:r,container:s}=t,i=Ic(DO,e);return l.jsx(fCe,{scope:e,forceMount:n,children:l.jsx(Fs,{present:n||i.open,children:l.jsx(Mv,{asChild:!0,container:s,children:r})})})};bU.displayName=DO;var la="MenuContent",[mCe,zO]=Gu(la),wU=b.forwardRef((t,e)=>{const n=yU(la,t.__scopeMenu),{forceMount:r=n.forceMount,...s}=t,i=Ic(la,t.__scopeMenu),a=jp(la,t.__scopeMenu);return l.jsx(M0.Provider,{scope:t.__scopeMenu,children:l.jsx(Fs,{present:r||i.open,children:l.jsx(M0.Slot,{scope:t.__scopeMenu,children:a.modal?l.jsx(pCe,{...s,ref:e}):l.jsx(gCe,{...s,ref:e})})})})}),pCe=b.forwardRef((t,e)=>{const n=Ic(la,t.__scopeMenu),r=b.useRef(null),s=Bn(e,r);return b.useEffect(()=>{const i=r.current;if(i)return KD(i)},[]),l.jsx(PO,{...t,ref:s,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:tt(t.onFocusOutside,i=>i.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),gCe=b.forwardRef((t,e)=>{const n=Ic(la,t.__scopeMenu);return l.jsx(PO,{...t,ref:e,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),xCe=J8e("MenuContent.ScrollLock"),PO=b.forwardRef((t,e)=>{const{__scopeMenu:n,loop:r=!1,trapFocus:s,onOpenAutoFocus:i,onCloseAutoFocus:a,disableOutsidePointerEvents:o,onEntryFocus:c,onEscapeKeyDown:h,onPointerDownOutside:f,onFocusOutside:m,onInteractOutside:g,onDismiss:x,disableOutsideScroll:y,...w}=t,S=Ic(la,n),k=jp(la,n),N=kp(n),C=gU(n),T=cCe(n),[_,E]=b.useState(null),M=b.useRef(null),L=Bn(e,M,S.onContentChange),P=b.useRef(0),I=b.useRef(""),Q=b.useRef(0),U=b.useRef(null),ee=b.useRef("right"),z=b.useRef(0),H=y?ZD:b.Fragment,B=y?{as:xCe,allowPinchZoom:!0}:void 0,X=G=>{const R=I.current+G,se=T().filter(K=>!K.disabled),W=document.activeElement,F=se.find(K=>K.ref.current===W)?.textValue,V=se.map(K=>K.textValue),te=ECe(V,R,F),ne=se.find(K=>K.textValue===te)?.ref.current;(function K(ie){I.current=ie,window.clearTimeout(P.current),ie!==""&&(P.current=window.setTimeout(()=>K(""),1e3))})(R),ne&&setTimeout(()=>ne.focus())};b.useEffect(()=>()=>window.clearTimeout(P.current),[]),JD();const J=b.useCallback(G=>ee.current===U.current?.side&&MCe(G,U.current?.area),[]);return l.jsx(mCe,{scope:n,searchRef:I,onItemEnter:b.useCallback(G=>{J(G)&&G.preventDefault()},[J]),onItemLeave:b.useCallback(G=>{J(G)||(M.current?.focus(),E(null))},[J]),onTriggerLeave:b.useCallback(G=>{J(G)&&G.preventDefault()},[J]),pointerGraceTimerRef:Q,onPointerGraceIntentChange:b.useCallback(G=>{U.current=G},[]),children:l.jsx(H,{...B,children:l.jsx(ez,{asChild:!0,trapped:s,onMountAutoFocus:tt(i,G=>{G.preventDefault(),M.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:a,children:l.jsx(n6,{asChild:!0,disableOutsidePointerEvents:o,onEscapeKeyDown:h,onPointerDownOutside:f,onFocusOutside:m,onInteractOutside:g,onDismiss:x,children:l.jsx(eP,{asChild:!0,...C,dir:k.dir,orientation:"vertical",loop:r,currentTabStopId:_,onCurrentTabStopIdChange:E,onEntryFocus:tt(c,G=>{k.isUsingKeyboardRef.current||G.preventDefault()}),preventScrollOnEntryFocus:!0,children:l.jsx(r6,{role:"menu","aria-orientation":"vertical","data-state":IU(S.open),"data-radix-menu-content":"",dir:k.dir,...N,...w,ref:L,style:{outline:"none",...w.style},onKeyDown:tt(w.onKeyDown,G=>{const se=G.target.closest("[data-radix-menu-content]")===G.currentTarget,W=G.ctrlKey||G.altKey||G.metaKey,F=G.key.length===1;se&&(G.key==="Tab"&&G.preventDefault(),!W&&F&&X(G.key));const V=M.current;if(G.target!==V||!aCe.includes(G.key))return;G.preventDefault();const ne=T().filter(K=>!K.disabled).map(K=>K.ref.current);mU.includes(G.key)&&ne.reverse(),CCe(ne)}),onBlur:tt(t.onBlur,G=>{G.currentTarget.contains(G.target)||(window.clearTimeout(P.current),I.current="")}),onPointerMove:tt(t.onPointerMove,A0(G=>{const R=G.target,se=z.current!==G.clientX;if(G.currentTarget.contains(R)&&se){const W=G.clientX>z.current?"right":"left";ee.current=W,z.current=G.clientX}}))})})})})})})});wU.displayName=la;var vCe="MenuGroup",LO=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t;return l.jsx(on.div,{role:"group",...r,ref:e})});LO.displayName=vCe;var yCe="MenuLabel",SU=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t;return l.jsx(on.div,{...r,ref:e})});SU.displayName=yCe;var kv="MenuItem",yD="menu.itemSelect",Fy=b.forwardRef((t,e)=>{const{disabled:n=!1,onSelect:r,...s}=t,i=b.useRef(null),a=jp(kv,t.__scopeMenu),o=zO(kv,t.__scopeMenu),c=Bn(e,i),h=b.useRef(!1),f=()=>{const m=i.current;if(!n&&m){const g=new CustomEvent(yD,{bubbles:!0,cancelable:!0});m.addEventListener(yD,x=>r?.(x),{once:!0}),nz(m,g),g.defaultPrevented?h.current=!1:a.onClose()}};return l.jsx(kU,{...s,ref:c,disabled:n,onClick:tt(t.onClick,f),onPointerDown:m=>{t.onPointerDown?.(m),h.current=!0},onPointerUp:tt(t.onPointerUp,m=>{h.current||m.currentTarget?.click()}),onKeyDown:tt(t.onKeyDown,m=>{const g=o.searchRef.current!=="";n||g&&m.key===" "||zk.includes(m.key)&&(m.currentTarget.click(),m.preventDefault())})})});Fy.displayName=kv;var kU=b.forwardRef((t,e)=>{const{__scopeMenu:n,disabled:r=!1,textValue:s,...i}=t,a=zO(kv,n),o=gU(n),c=b.useRef(null),h=Bn(e,c),[f,m]=b.useState(!1),[g,x]=b.useState("");return b.useEffect(()=>{const y=c.current;y&&x((y.textContent??"").trim())},[i.children]),l.jsx(M0.ItemSlot,{scope:n,disabled:r,textValue:s??g,children:l.jsx(tP,{asChild:!0,...o,focusable:!r,children:l.jsx(on.div,{role:"menuitem","data-highlighted":f?"":void 0,"aria-disabled":r||void 0,"data-disabled":r?"":void 0,...i,ref:h,onPointerMove:tt(t.onPointerMove,A0(y=>{r?a.onItemLeave(y):(a.onItemEnter(y),y.defaultPrevented||y.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:tt(t.onPointerLeave,A0(y=>a.onItemLeave(y))),onFocus:tt(t.onFocus,()=>m(!0)),onBlur:tt(t.onBlur,()=>m(!1))})})})}),bCe="MenuCheckboxItem",jU=b.forwardRef((t,e)=>{const{checked:n=!1,onCheckedChange:r,...s}=t;return l.jsx(EU,{scope:t.__scopeMenu,checked:n,children:l.jsx(Fy,{role:"menuitemcheckbox","aria-checked":jv(n)?"mixed":n,...s,ref:e,"data-state":qO(n),onSelect:tt(s.onSelect,()=>r?.(jv(n)?!0:!n),{checkForDefaultPrevented:!1})})})});jU.displayName=bCe;var OU="MenuRadioGroup",[wCe,SCe]=Gu(OU,{value:void 0,onValueChange:()=>{}}),NU=b.forwardRef((t,e)=>{const{value:n,onValueChange:r,...s}=t,i=Os(r);return l.jsx(wCe,{scope:t.__scopeMenu,value:n,onValueChange:i,children:l.jsx(LO,{...s,ref:e})})});NU.displayName=OU;var CU="MenuRadioItem",TU=b.forwardRef((t,e)=>{const{value:n,...r}=t,s=SCe(CU,t.__scopeMenu),i=n===s.value;return l.jsx(EU,{scope:t.__scopeMenu,checked:i,children:l.jsx(Fy,{role:"menuitemradio","aria-checked":i,...r,ref:e,"data-state":qO(i),onSelect:tt(r.onSelect,()=>s.onValueChange?.(n),{checkForDefaultPrevented:!1})})})});TU.displayName=CU;var IO="MenuItemIndicator",[EU,kCe]=Gu(IO,{checked:!1}),_U=b.forwardRef((t,e)=>{const{__scopeMenu:n,forceMount:r,...s}=t,i=kCe(IO,n);return l.jsx(Fs,{present:r||jv(i.checked)||i.checked===!0,children:l.jsx(on.span,{...s,ref:e,"data-state":qO(i.checked)})})});_U.displayName=IO;var jCe="MenuSeparator",MU=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t;return l.jsx(on.div,{role:"separator","aria-orientation":"horizontal",...r,ref:e})});MU.displayName=jCe;var OCe="MenuArrow",AU=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t,s=kp(n);return l.jsx(s6,{...s,...r,ref:e})});AU.displayName=OCe;var BO="MenuSub",[NCe,RU]=Gu(BO),DU=t=>{const{__scopeMenu:e,children:n,open:r=!1,onOpenChange:s}=t,i=Ic(BO,e),a=kp(e),[o,c]=b.useState(null),[h,f]=b.useState(null),m=Os(s);return b.useEffect(()=>(i.open===!1&&m(!1),()=>m(!1)),[i.open,m]),l.jsx(Av,{...a,children:l.jsx(xU,{scope:e,open:r,onOpenChange:m,content:h,onContentChange:f,children:l.jsx(NCe,{scope:e,contentId:_i(),triggerId:_i(),trigger:o,onTriggerChange:c,children:n})})})};DU.displayName=BO;var jm="MenuSubTrigger",zU=b.forwardRef((t,e)=>{const n=Ic(jm,t.__scopeMenu),r=jp(jm,t.__scopeMenu),s=RU(jm,t.__scopeMenu),i=zO(jm,t.__scopeMenu),a=b.useRef(null),{pointerGraceTimerRef:o,onPointerGraceIntentChange:c}=i,h={__scopeMenu:t.__scopeMenu},f=b.useCallback(()=>{a.current&&window.clearTimeout(a.current),a.current=null},[]);return b.useEffect(()=>f,[f]),b.useEffect(()=>{const m=o.current;return()=>{window.clearTimeout(m),c(null)}},[o,c]),l.jsx(RO,{asChild:!0,...h,children:l.jsx(kU,{id:s.triggerId,"aria-haspopup":"menu","aria-expanded":n.open,"aria-controls":s.contentId,"data-state":IU(n.open),...t,ref:gc(e,s.onTriggerChange),onClick:m=>{t.onClick?.(m),!(t.disabled||m.defaultPrevented)&&(m.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:tt(t.onPointerMove,A0(m=>{i.onItemEnter(m),!m.defaultPrevented&&!t.disabled&&!n.open&&!a.current&&(i.onPointerGraceIntentChange(null),a.current=window.setTimeout(()=>{n.onOpenChange(!0),f()},100))})),onPointerLeave:tt(t.onPointerLeave,A0(m=>{f();const g=n.content?.getBoundingClientRect();if(g){const x=n.content?.dataset.side,y=x==="right",w=y?-5:5,S=g[y?"left":"right"],k=g[y?"right":"left"];i.onPointerGraceIntentChange({area:[{x:m.clientX+w,y:m.clientY},{x:S,y:g.top},{x:k,y:g.top},{x:k,y:g.bottom},{x:S,y:g.bottom}],side:x}),window.clearTimeout(o.current),o.current=window.setTimeout(()=>i.onPointerGraceIntentChange(null),300)}else{if(i.onTriggerLeave(m),m.defaultPrevented)return;i.onPointerGraceIntentChange(null)}})),onKeyDown:tt(t.onKeyDown,m=>{const g=i.searchRef.current!=="";t.disabled||g&&m.key===" "||lCe[r.dir].includes(m.key)&&(n.onOpenChange(!0),n.content?.focus(),m.preventDefault())})})})});zU.displayName=jm;var PU="MenuSubContent",LU=b.forwardRef((t,e)=>{const n=yU(la,t.__scopeMenu),{forceMount:r=n.forceMount,...s}=t,i=Ic(la,t.__scopeMenu),a=jp(la,t.__scopeMenu),o=RU(PU,t.__scopeMenu),c=b.useRef(null),h=Bn(e,c);return l.jsx(M0.Provider,{scope:t.__scopeMenu,children:l.jsx(Fs,{present:r||i.open,children:l.jsx(M0.Slot,{scope:t.__scopeMenu,children:l.jsx(PO,{id:o.contentId,"aria-labelledby":o.triggerId,...s,ref:h,align:"start",side:a.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:f=>{a.isUsingKeyboardRef.current&&c.current?.focus(),f.preventDefault()},onCloseAutoFocus:f=>f.preventDefault(),onFocusOutside:tt(t.onFocusOutside,f=>{f.target!==o.trigger&&i.onOpenChange(!1)}),onEscapeKeyDown:tt(t.onEscapeKeyDown,f=>{a.onClose(),f.preventDefault()}),onKeyDown:tt(t.onKeyDown,f=>{const m=f.currentTarget.contains(f.target),g=oCe[a.dir].includes(f.key);m&&g&&(i.onOpenChange(!1),o.trigger?.focus(),f.preventDefault())})})})})})});LU.displayName=PU;function IU(t){return t?"open":"closed"}function jv(t){return t==="indeterminate"}function qO(t){return jv(t)?"indeterminate":t?"checked":"unchecked"}function CCe(t){const e=document.activeElement;for(const n of t)if(n===e||(n.focus(),document.activeElement!==e))return}function TCe(t,e){return t.map((n,r)=>t[(e+r)%t.length])}function ECe(t,e,n){const s=e.length>1&&Array.from(e).every(h=>h===e[0])?e[0]:e,i=n?t.indexOf(n):-1;let a=TCe(t,Math.max(i,0));s.length===1&&(a=a.filter(h=>h!==n));const c=a.find(h=>h.toLowerCase().startsWith(s.toLowerCase()));return c!==n?c:void 0}function _Ce(t,e){const{x:n,y:r}=t;let s=!1;for(let i=0,a=e.length-1;ir!=g>r&&n<(m-h)*(r-f)/(g-f)+h&&(s=!s)}return s}function MCe(t,e){if(!e)return!1;const n={x:t.clientX,y:t.clientY};return _Ce(n,e)}function A0(t){return e=>e.pointerType==="mouse"?t(e):void 0}var ACe=vU,RCe=RO,DCe=bU,zCe=wU,PCe=LO,LCe=SU,ICe=Fy,BCe=jU,qCe=NU,FCe=TU,$Ce=_U,QCe=MU,HCe=AU,VCe=DU,UCe=zU,WCe=LU,FO="ContextMenu",[GCe]=ha(FO,[pU]),Ms=pU(),[XCe,BU]=GCe(FO),qU=t=>{const{__scopeContextMenu:e,children:n,onOpenChange:r,dir:s,modal:i=!0}=t,[a,o]=b.useState(!1),c=Ms(e),h=Os(r),f=b.useCallback(m=>{o(m),h(m)},[h]);return l.jsx(XCe,{scope:e,open:a,onOpenChange:f,modal:i,children:l.jsx(ACe,{...c,dir:s,open:a,onOpenChange:f,modal:i,children:n})})};qU.displayName=FO;var FU="ContextMenuTrigger",$U=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,disabled:r=!1,...s}=t,i=BU(FU,n),a=Ms(n),o=b.useRef({x:0,y:0}),c=b.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...o.current})}),h=b.useRef(0),f=b.useCallback(()=>window.clearTimeout(h.current),[]),m=g=>{o.current={x:g.clientX,y:g.clientY},i.onOpenChange(!0)};return b.useEffect(()=>f,[f]),b.useEffect(()=>void(r&&f()),[r,f]),l.jsxs(l.Fragment,{children:[l.jsx(RCe,{...a,virtualRef:c}),l.jsx(on.span,{"data-state":i.open?"open":"closed","data-disabled":r?"":void 0,...s,ref:e,style:{WebkitTouchCallout:"none",...t.style},onContextMenu:r?t.onContextMenu:tt(t.onContextMenu,g=>{f(),m(g),g.preventDefault()}),onPointerDown:r?t.onPointerDown:tt(t.onPointerDown,Xx(g=>{f(),h.current=window.setTimeout(()=>m(g),700)})),onPointerMove:r?t.onPointerMove:tt(t.onPointerMove,Xx(f)),onPointerCancel:r?t.onPointerCancel:tt(t.onPointerCancel,Xx(f)),onPointerUp:r?t.onPointerUp:tt(t.onPointerUp,Xx(f))})]})});$U.displayName=FU;var YCe="ContextMenuPortal",QU=t=>{const{__scopeContextMenu:e,...n}=t,r=Ms(e);return l.jsx(DCe,{...r,...n})};QU.displayName=YCe;var HU="ContextMenuContent",VU=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=BU(HU,n),i=Ms(n),a=b.useRef(!1);return l.jsx(zCe,{...i,...r,ref:e,side:"right",sideOffset:2,align:"start",onCloseAutoFocus:o=>{t.onCloseAutoFocus?.(o),!o.defaultPrevented&&a.current&&o.preventDefault(),a.current=!1},onInteractOutside:o=>{t.onInteractOutside?.(o),!o.defaultPrevented&&!s.modal&&(a.current=!0)},style:{...t.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});VU.displayName=HU;var KCe="ContextMenuGroup",ZCe=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Ms(n);return l.jsx(PCe,{...s,...r,ref:e})});ZCe.displayName=KCe;var JCe="ContextMenuLabel",UU=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Ms(n);return l.jsx(LCe,{...s,...r,ref:e})});UU.displayName=JCe;var e9e="ContextMenuItem",WU=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Ms(n);return l.jsx(ICe,{...s,...r,ref:e})});WU.displayName=e9e;var t9e="ContextMenuCheckboxItem",GU=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Ms(n);return l.jsx(BCe,{...s,...r,ref:e})});GU.displayName=t9e;var n9e="ContextMenuRadioGroup",r9e=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Ms(n);return l.jsx(qCe,{...s,...r,ref:e})});r9e.displayName=n9e;var s9e="ContextMenuRadioItem",XU=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Ms(n);return l.jsx(FCe,{...s,...r,ref:e})});XU.displayName=s9e;var i9e="ContextMenuItemIndicator",YU=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Ms(n);return l.jsx($Ce,{...s,...r,ref:e})});YU.displayName=i9e;var a9e="ContextMenuSeparator",KU=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Ms(n);return l.jsx(QCe,{...s,...r,ref:e})});KU.displayName=a9e;var l9e="ContextMenuArrow",o9e=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Ms(n);return l.jsx(HCe,{...s,...r,ref:e})});o9e.displayName=l9e;var ZU="ContextMenuSub",JU=t=>{const{__scopeContextMenu:e,children:n,onOpenChange:r,open:s,defaultOpen:i}=t,a=Ms(e),[o,c]=wo({prop:s,defaultProp:i??!1,onChange:r,caller:ZU});return l.jsx(VCe,{...a,open:o,onOpenChange:c,children:n})};JU.displayName=ZU;var c9e="ContextMenuSubTrigger",eW=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Ms(n);return l.jsx(UCe,{...s,...r,ref:e})});eW.displayName=c9e;var u9e="ContextMenuSubContent",tW=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Ms(n);return l.jsx(WCe,{...s,...r,ref:e,style:{...t.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});tW.displayName=u9e;function Xx(t){return e=>e.pointerType!=="mouse"?t(e):void 0}var d9e=qU,h9e=$U,f9e=QU,nW=VU,rW=UU,sW=WU,iW=GU,aW=XU,lW=YU,oW=KU,m9e=JU,cW=eW,uW=tW;const p9e=d9e,g9e=h9e,x9e=m9e,dW=b.forwardRef(({className:t,inset:e,children:n,...r},s)=>l.jsxs(cW,{ref:s,className:ve("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",e&&"pl-8",t),...r,children:[n,l.jsx(Qu,{className:"ml-auto h-4 w-4"})]}));dW.displayName=cW.displayName;const hW=b.forwardRef(({className:t,...e},n)=>l.jsx(uW,{ref:n,className:ve("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]",t),...e}));hW.displayName=uW.displayName;const fW=b.forwardRef(({className:t,...e},n)=>l.jsx(f9e,{children:l.jsx(nW,{ref:n,className:ve("z-50 max-h-[--radix-context-menu-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]",t),...e})}));fW.displayName=nW.displayName;const wa=b.forwardRef(({className:t,inset:e,...n},r)=>l.jsx(sW,{ref:r,className:ve("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e&&"pl-8",t),...n}));wa.displayName=sW.displayName;const v9e=b.forwardRef(({className:t,children:e,checked:n,...r},s)=>l.jsxs(iW,{ref:s,className:ve("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),checked:n,...r,children:[l.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:l.jsx(lW,{children:l.jsx(ol,{className:"h-4 w-4"})})}),e]}));v9e.displayName=iW.displayName;const y9e=b.forwardRef(({className:t,children:e,...n},r)=>l.jsxs(aW,{ref:r,className:ve("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),...n,children:[l.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:l.jsx(lW,{children:l.jsx(KK,{className:"h-2 w-2 fill-current"})})}),e]}));y9e.displayName=aW.displayName;const b9e=b.forwardRef(({className:t,inset:e,...n},r)=>l.jsx(rW,{ref:r,className:ve("px-2 py-1.5 text-sm font-semibold text-foreground",e&&"pl-8",t),...n}));b9e.displayName=rW.displayName;const Om=b.forwardRef(({className:t,...e},n)=>l.jsx(oW,{ref:n,className:ve("-mx-1 my-1 h-px bg-border",t),...e}));Om.displayName=oW.displayName;const Wd=({className:t,...e})=>l.jsx("span",{className:ve("ml-auto text-xs tracking-widest text-muted-foreground",t),...e});Wd.displayName="ContextMenuShortcut";var w9e=Symbol("radix.slottable");function S9e(t){const e=({children:n})=>l.jsx(l.Fragment,{children:n});return e.displayName=`${t}.Slottable`,e.__radixId=w9e,e}var[$y]=ha("Tooltip",[Rh]),Qy=Rh(),mW="TooltipProvider",k9e=700,Pk="tooltip.open",[j9e,$O]=$y(mW),pW=t=>{const{__scopeTooltip:e,delayDuration:n=k9e,skipDelayDuration:r=300,disableHoverableContent:s=!1,children:i}=t,a=b.useRef(!0),o=b.useRef(!1),c=b.useRef(0);return b.useEffect(()=>{const h=c.current;return()=>window.clearTimeout(h)},[]),l.jsx(j9e,{scope:e,isOpenDelayedRef:a,delayDuration:n,onOpen:b.useCallback(()=>{window.clearTimeout(c.current),a.current=!1},[]),onClose:b.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>a.current=!0,r)},[r]),isPointerInTransitRef:o,onPointerInTransitChange:b.useCallback(h=>{o.current=h},[]),disableHoverableContent:s,children:i})};pW.displayName=mW;var R0="Tooltip",[O9e,Op]=$y(R0),gW=t=>{const{__scopeTooltip:e,children:n,open:r,defaultOpen:s,onOpenChange:i,disableHoverableContent:a,delayDuration:o}=t,c=$O(R0,t.__scopeTooltip),h=Qy(e),[f,m]=b.useState(null),g=_i(),x=b.useRef(0),y=a??c.disableHoverableContent,w=o??c.delayDuration,S=b.useRef(!1),[k,N]=wo({prop:r,defaultProp:s??!1,onChange:M=>{M?(c.onOpen(),document.dispatchEvent(new CustomEvent(Pk))):c.onClose(),i?.(M)},caller:R0}),C=b.useMemo(()=>k?S.current?"delayed-open":"instant-open":"closed",[k]),T=b.useCallback(()=>{window.clearTimeout(x.current),x.current=0,S.current=!1,N(!0)},[N]),_=b.useCallback(()=>{window.clearTimeout(x.current),x.current=0,N(!1)},[N]),E=b.useCallback(()=>{window.clearTimeout(x.current),x.current=window.setTimeout(()=>{S.current=!0,N(!0),x.current=0},w)},[w,N]);return b.useEffect(()=>()=>{x.current&&(window.clearTimeout(x.current),x.current=0)},[]),l.jsx(Av,{...h,children:l.jsx(O9e,{scope:e,contentId:g,open:k,stateAttribute:C,trigger:f,onTriggerChange:m,onTriggerEnter:b.useCallback(()=>{c.isOpenDelayedRef.current?E():T()},[c.isOpenDelayedRef,E,T]),onTriggerLeave:b.useCallback(()=>{y?_():(window.clearTimeout(x.current),x.current=0)},[_,y]),onOpen:T,onClose:_,disableHoverableContent:y,children:n})})};gW.displayName=R0;var Lk="TooltipTrigger",xW=b.forwardRef((t,e)=>{const{__scopeTooltip:n,...r}=t,s=Op(Lk,n),i=$O(Lk,n),a=Qy(n),o=b.useRef(null),c=Bn(e,o,s.onTriggerChange),h=b.useRef(!1),f=b.useRef(!1),m=b.useCallback(()=>h.current=!1,[]);return b.useEffect(()=>()=>document.removeEventListener("pointerup",m),[m]),l.jsx(Rv,{asChild:!0,...a,children:l.jsx(on.button,{"aria-describedby":s.open?s.contentId:void 0,"data-state":s.stateAttribute,...r,ref:c,onPointerMove:tt(t.onPointerMove,g=>{g.pointerType!=="touch"&&!f.current&&!i.isPointerInTransitRef.current&&(s.onTriggerEnter(),f.current=!0)}),onPointerLeave:tt(t.onPointerLeave,()=>{s.onTriggerLeave(),f.current=!1}),onPointerDown:tt(t.onPointerDown,()=>{s.open&&s.onClose(),h.current=!0,document.addEventListener("pointerup",m,{once:!0})}),onFocus:tt(t.onFocus,()=>{h.current||s.onOpen()}),onBlur:tt(t.onBlur,s.onClose),onClick:tt(t.onClick,s.onClose)})})});xW.displayName=Lk;var QO="TooltipPortal",[N9e,C9e]=$y(QO,{forceMount:void 0}),vW=t=>{const{__scopeTooltip:e,forceMount:n,children:r,container:s}=t,i=Op(QO,e);return l.jsx(N9e,{scope:e,forceMount:n,children:l.jsx(Fs,{present:n||i.open,children:l.jsx(Mv,{asChild:!0,container:s,children:r})})})};vW.displayName=QO;var Ah="TooltipContent",yW=b.forwardRef((t,e)=>{const n=C9e(Ah,t.__scopeTooltip),{forceMount:r=n.forceMount,side:s="top",...i}=t,a=Op(Ah,t.__scopeTooltip);return l.jsx(Fs,{present:r||a.open,children:a.disableHoverableContent?l.jsx(bW,{side:s,...i,ref:e}):l.jsx(T9e,{side:s,...i,ref:e})})}),T9e=b.forwardRef((t,e)=>{const n=Op(Ah,t.__scopeTooltip),r=$O(Ah,t.__scopeTooltip),s=b.useRef(null),i=Bn(e,s),[a,o]=b.useState(null),{trigger:c,onClose:h}=n,f=s.current,{onPointerInTransitChange:m}=r,g=b.useCallback(()=>{o(null),m(!1)},[m]),x=b.useCallback((y,w)=>{const S=y.currentTarget,k={x:y.clientX,y:y.clientY},N=R9e(k,S.getBoundingClientRect()),C=D9e(k,N),T=z9e(w.getBoundingClientRect()),_=L9e([...C,...T]);o(_),m(!0)},[m]);return b.useEffect(()=>()=>g(),[g]),b.useEffect(()=>{if(c&&f){const y=S=>x(S,f),w=S=>x(S,c);return c.addEventListener("pointerleave",y),f.addEventListener("pointerleave",w),()=>{c.removeEventListener("pointerleave",y),f.removeEventListener("pointerleave",w)}}},[c,f,x,g]),b.useEffect(()=>{if(a){const y=w=>{const S=w.target,k={x:w.clientX,y:w.clientY},N=c?.contains(S)||f?.contains(S),C=!P9e(k,a);N?g():C&&(g(),h())};return document.addEventListener("pointermove",y),()=>document.removeEventListener("pointermove",y)}},[c,f,a,h,g]),l.jsx(bW,{...t,ref:i})}),[E9e,_9e]=$y(R0,{isInside:!1}),M9e=S9e("TooltipContent"),bW=b.forwardRef((t,e)=>{const{__scopeTooltip:n,children:r,"aria-label":s,onEscapeKeyDown:i,onPointerDownOutside:a,...o}=t,c=Op(Ah,n),h=Qy(n),{onClose:f}=c;return b.useEffect(()=>(document.addEventListener(Pk,f),()=>document.removeEventListener(Pk,f)),[f]),b.useEffect(()=>{if(c.trigger){const m=g=>{g.target?.contains(c.trigger)&&f()};return window.addEventListener("scroll",m,{capture:!0}),()=>window.removeEventListener("scroll",m,{capture:!0})}},[c.trigger,f]),l.jsx(n6,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:i,onPointerDownOutside:a,onFocusOutside:m=>m.preventDefault(),onDismiss:f,children:l.jsxs(r6,{"data-state":c.stateAttribute,...h,...o,ref:e,style:{...o.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[l.jsx(M9e,{children:r}),l.jsx(E9e,{scope:n,isInside:!0,children:l.jsx(OK,{id:c.contentId,role:"tooltip",children:s||r})})]})})});yW.displayName=Ah;var wW="TooltipArrow",A9e=b.forwardRef((t,e)=>{const{__scopeTooltip:n,...r}=t,s=Qy(n);return _9e(wW,n).isInside?null:l.jsx(s6,{...s,...r,ref:e})});A9e.displayName=wW;function R9e(t,e){const n=Math.abs(e.top-t.y),r=Math.abs(e.bottom-t.y),s=Math.abs(e.right-t.x),i=Math.abs(e.left-t.x);switch(Math.min(n,r,s,i)){case i:return"left";case s:return"right";case n:return"top";case r:return"bottom";default:throw new Error("unreachable")}}function D9e(t,e,n=5){const r=[];switch(e){case"top":r.push({x:t.x-n,y:t.y+n},{x:t.x+n,y:t.y+n});break;case"bottom":r.push({x:t.x-n,y:t.y-n},{x:t.x+n,y:t.y-n});break;case"left":r.push({x:t.x+n,y:t.y-n},{x:t.x+n,y:t.y+n});break;case"right":r.push({x:t.x-n,y:t.y-n},{x:t.x-n,y:t.y+n});break}return r}function z9e(t){const{top:e,right:n,bottom:r,left:s}=t;return[{x:s,y:e},{x:n,y:e},{x:n,y:r},{x:s,y:r}]}function P9e(t,e){const{x:n,y:r}=t;let s=!1;for(let i=0,a=e.length-1;ir!=g>r&&n<(m-h)*(r-f)/(g-f)+h&&(s=!s)}return s}function L9e(t){const e=t.slice();return e.sort((n,r)=>n.xr.x?1:n.yr.y?1:0),I9e(e)}function I9e(t){if(t.length<=1)return t.slice();const e=[];for(let r=0;r=2;){const i=e[e.length-1],a=e[e.length-2];if((i.x-a.x)*(s.y-a.y)>=(i.y-a.y)*(s.x-a.x))e.pop();else break}e.push(s)}e.pop();const n=[];for(let r=t.length-1;r>=0;r--){const s=t[r];for(;n.length>=2;){const i=n[n.length-1],a=n[n.length-2];if((i.x-a.x)*(s.y-a.y)>=(i.y-a.y)*(s.x-a.x))n.pop();else break}n.push(s)}return n.pop(),e.length===1&&n.length===1&&e[0].x===n[0].x&&e[0].y===n[0].y?e:e.concat(n)}var B9e=pW,q9e=gW,F9e=xW,$9e=vW,SW=yW;const Q9e=B9e,H9e=q9e,V9e=F9e,kW=b.forwardRef(({className:t,sideOffset:e=4,...n},r)=>l.jsx($9e,{children:l.jsx(SW,{ref:r,sideOffset:e,className:ve("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",t),...n})}));kW.displayName=SW.displayName;function U9e({children:t}){Yte();const[e,n]=b.useState(!0),[r,s]=b.useState(!1),[i,a]=b.useState(!1),{theme:o,setTheme:c}=b6(),h=oY(),f=Da();b.useEffect(()=>{const w=S=>{(S.metaKey||S.ctrlKey)&&S.key==="k"&&(S.preventDefault(),a(!0))};return window.addEventListener("keydown",w),()=>window.removeEventListener("keydown",w)},[]);const m=[{title:"概览",items:[{icon:Fm,label:"首页",path:"/"}]},{title:"麦麦配置编辑",items:[{icon:lo,label:"麦麦主程序配置",path:"/config/bot"},{icon:cz,label:"AI模型厂商配置",path:"/config/modelProvider"},{icon:uz,label:"模型管理与分配",path:"/config/model"},{icon:FC,label:"麦麦适配器配置",path:"/config/adapter"}]},{title:"麦麦资源管理",items:[{icon:i6,label:"表情包管理",path:"/resource/emoji"},{icon:z0,label:"表达方式管理",path:"/resource/expression"},{icon:dz,label:"人物信息管理",path:"/resource/person"},{icon:oz,label:"知识库图谱可视化",path:"/resource/knowledge-graph"}]},{title:"扩展与监控",items:[{icon:mh,label:"插件市场",path:"/plugins"},{icon:FC,label:"插件配置",path:"/plugin-config"},{icon:C1,label:"日志查看器",path:"/logs"}]},{title:"系统",items:[{icon:bu,label:"系统设置",path:"/settings"}]}],x=o==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":o,y=()=>{localStorage.removeItem("access-token"),f({to:"/auth"})};return l.jsx(Q9e,{delayDuration:300,children:l.jsxs("div",{className:"flex h-screen overflow-hidden",children:[l.jsxs("aside",{className:ve("fixed inset-y-0 left-0 z-50 flex flex-col border-r bg-card transition-all duration-300 lg:relative lg:z-0","w-64 lg:w-auto",e?"lg:w-64":"lg:w-16",r?"translate-x-0":"-translate-x-full lg:translate-x-0"),children:[l.jsx("div",{className:"flex h-16 items-center border-b px-4",children:l.jsxs("div",{className:ve("relative flex items-center justify-center flex-1 transition-all overflow-hidden","lg:flex-1",!e&&"lg:flex-none lg:w-8"),children:[l.jsxs("div",{className:ve("flex items-baseline gap-2",!e&&"lg:hidden"),children:[l.jsx("span",{className:"font-bold text-xl text-primary-gradient whitespace-nowrap",children:"MaiBot WebUI"}),l.jsx("span",{className:"text-xs text-primary/60 whitespace-nowrap",children:Nte()})]}),!e&&l.jsx("span",{className:"hidden lg:block font-bold text-primary-gradient text-2xl",children:"M"})]})}),l.jsx(hn,{className:ve("flex-1 overflow-x-hidden",!e&&"lg:w-16"),children:l.jsx("nav",{className:ve("p-4",!e&&"lg:p-2 lg:w-16"),children:l.jsx("ul",{className:ve("space-y-6",!e&&"lg:space-y-3 lg:w-full"),children:m.map((w,S)=>l.jsxs("li",{children:[l.jsx("div",{className:ve("px-3 h-[1.25rem]","mb-2",!e&&"lg:mb-1 lg:invisible"),children:l.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground/60 whitespace-nowrap",children:w.title})}),!e&&S>0&&l.jsx("div",{className:"hidden lg:block mb-2 border-t border-border"}),l.jsx("ul",{className:"space-y-1",children:w.items.map(k=>{const N=h({to:k.path}),C=k.icon,T=l.jsxs(l.Fragment,{children:[N&&l.jsx("div",{className:"absolute left-0 top-1/2 h-8 w-1 -translate-y-1/2 rounded-r-full bg-primary transition-opacity duration-300"}),l.jsxs("div",{className:ve("flex items-center transition-all duration-300",e?"gap-3":"gap-3 lg:gap-0"),children:[l.jsx(C,{className:ve("h-5 w-5 flex-shrink-0",N&&"text-primary"),strokeWidth:2,fill:"none"}),l.jsx("span",{className:ve("text-sm font-medium whitespace-nowrap transition-all duration-300",N&&"font-semibold",e?"opacity-100 max-w-[200px]":"opacity-100 max-w-[200px] lg:opacity-0 lg:max-w-0 lg:overflow-hidden"),children:k.label})]})]});return l.jsx("li",{className:"relative",children:l.jsxs(H9e,{children:[l.jsx(V9e,{asChild:!0,children:l.jsx(cY,{to:k.path,className:ve("relative flex items-center rounded-lg py-2 transition-all duration-300","hover:bg-accent hover:text-accent-foreground",N?"bg-accent text-foreground":"text-muted-foreground hover:text-foreground",e?"px-3":"px-3 lg:px-0 lg:justify-center lg:w-12 lg:mx-auto"),onClick:()=>s(!1),children:T})}),!e&&l.jsx(kW,{side:"right",className:"hidden lg:block",children:l.jsx("p",{children:k.label})})]})},k.path)})})]},w.title))})})})]}),r&&l.jsx("div",{className:"fixed inset-0 z-40 bg-black/50 lg:hidden",onClick:()=>s(!1)}),l.jsxs("div",{className:"flex flex-1 flex-col overflow-hidden",children:[l.jsxs("header",{className:"flex h-16 items-center justify-between border-b bg-card/80 backdrop-blur-md px-4 sticky top-0 z-10",children:[l.jsxs("div",{className:"flex items-center gap-4",children:[l.jsx("button",{onClick:()=>s(!r),className:"rounded-lg p-2 hover:bg-accent lg:hidden",children:l.jsx(ZK,{className:"h-5 w-5"})}),l.jsx("button",{onClick:()=>n(!e),className:"hidden rounded-lg p-2 hover:bg-accent lg:block",title:e?"收起侧边栏":"展开侧边栏",children:l.jsx($u,{className:ve("h-5 w-5 transition-transform",!e&&"rotate-180")})})]}),l.jsxs("div",{className:"flex items-center gap-2",children:[l.jsxs("button",{onClick:()=>a(!0),className:"relative hidden md:flex items-center w-64 h-9 pl-9 pr-16 bg-background/50 border rounded-md hover:bg-accent/50 transition-colors text-left",children:[l.jsx(ci,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),l.jsx("span",{className:"text-sm text-muted-foreground",children:"搜索..."}),l.jsxs(fU,{size:"sm",className:"absolute right-2 top-1/2 -translate-y-1/2",children:[l.jsx("span",{className:"text-xs",children:"⌘"}),"K"]})]}),l.jsx(Z8e,{open:i,onOpenChange:a}),l.jsxs(de,{variant:"ghost",size:"sm",onClick:()=>window.open("https://docs.mai-mai.org","_blank"),className:"gap-2",title:"查看麦麦文档",children:[l.jsx(JK,{className:"h-4 w-4"}),l.jsx("span",{className:"hidden sm:inline",children:"麦麦文档"})]}),l.jsx("button",{onClick:w=>{dte(x==="dark"?"light":"dark",c,w)},className:"rounded-lg p-2 hover:bg-accent",title:x==="dark"?"切换到浅色模式":"切换到深色模式",children:x==="dark"?l.jsx(D3,{className:"h-5 w-5"}):l.jsx(z3,{className:"h-5 w-5"})}),l.jsx("div",{className:"h-6 w-px bg-border"}),l.jsxs(de,{variant:"ghost",size:"sm",onClick:y,className:"gap-2",title:"登出系统",children:[l.jsx($C,{className:"h-4 w-4"}),l.jsx("span",{className:"hidden sm:inline",children:"登出"})]})]})]}),l.jsxs(p9e,{children:[l.jsx(g9e,{asChild:!0,children:l.jsx("main",{className:"flex-1 overflow-hidden bg-background",children:t})}),l.jsxs(fW,{className:"w-64",children:[l.jsxs(wa,{onClick:()=>f({to:"/"}),children:[l.jsx(Fm,{className:"mr-2 h-4 w-4"}),"首页"]}),l.jsxs(wa,{onClick:()=>f({to:"/settings"}),children:[l.jsx(bu,{className:"mr-2 h-4 w-4"}),"系统设置"]}),l.jsxs(wa,{onClick:()=>f({to:"/logs"}),children:[l.jsx(C1,{className:"mr-2 h-4 w-4"}),"日志查看器"]}),l.jsx(Om,{}),l.jsxs(x9e,{children:[l.jsxs(dW,{children:[l.jsx(sz,{className:"mr-2 h-4 w-4"}),"切换主题"]}),l.jsxs(hW,{className:"w-48",children:[l.jsxs(wa,{onClick:()=>c("light"),disabled:o==="light",children:[l.jsx(D3,{className:"mr-2 h-4 w-4"}),"浅色",o==="light"&&l.jsx(Wd,{children:"✓"})]}),l.jsxs(wa,{onClick:()=>c("dark"),disabled:o==="dark",children:[l.jsx(z3,{className:"mr-2 h-4 w-4"}),"深色",o==="dark"&&l.jsx(Wd,{children:"✓"})]}),l.jsxs(wa,{onClick:()=>c("system"),disabled:o==="system",children:[l.jsx(bu,{className:"mr-2 h-4 w-4"}),"跟随系统",o==="system"&&l.jsx(Wd,{children:"✓"})]})]})]}),l.jsx(Om,{}),l.jsxs(wa,{onClick:()=>window.location.reload(),children:[l.jsx(eZ,{className:"mr-2 h-4 w-4"}),"刷新页面",l.jsx(Wd,{children:"⌘R"})]}),l.jsxs(wa,{onClick:()=>a(!0),children:[l.jsx(ci,{className:"mr-2 h-4 w-4"}),"搜索",l.jsx(Wd,{children:"⌘K"})]}),l.jsx(Om,{}),l.jsxs(wa,{onClick:()=>window.open("https://docs.mai-mai.org","_blank"),children:[l.jsx(Jd,{className:"mr-2 h-4 w-4"}),"麦麦文档"]}),l.jsx(Om,{}),l.jsxs(wa,{onClick:y,className:"text-destructive focus:text-destructive",children:[l.jsx($C,{className:"mr-2 h-4 w-4"}),"登出系统"]})]})]})]})]})})}var Hy="Collapsible",[W9e]=ha(Hy),[G9e,HO]=W9e(Hy),jW=b.forwardRef((t,e)=>{const{__scopeCollapsible:n,open:r,defaultOpen:s,disabled:i,onOpenChange:a,...o}=t,[c,h]=wo({prop:r,defaultProp:s??!1,onChange:a,caller:Hy});return l.jsx(G9e,{scope:n,disabled:i,contentId:_i(),open:c,onOpenToggle:b.useCallback(()=>h(f=>!f),[h]),children:l.jsx(on.div,{"data-state":UO(c),"data-disabled":i?"":void 0,...o,ref:e})})});jW.displayName=Hy;var OW="CollapsibleTrigger",NW=b.forwardRef((t,e)=>{const{__scopeCollapsible:n,...r}=t,s=HO(OW,n);return l.jsx(on.button,{type:"button","aria-controls":s.contentId,"aria-expanded":s.open||!1,"data-state":UO(s.open),"data-disabled":s.disabled?"":void 0,disabled:s.disabled,...r,ref:e,onClick:tt(t.onClick,s.onOpenToggle)})});NW.displayName=OW;var VO="CollapsibleContent",CW=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=HO(VO,t.__scopeCollapsible);return l.jsx(Fs,{present:n||s.open,children:({present:i})=>l.jsx(X9e,{...r,ref:e,present:i})})});CW.displayName=VO;var X9e=b.forwardRef((t,e)=>{const{__scopeCollapsible:n,present:r,children:s,...i}=t,a=HO(VO,n),[o,c]=b.useState(r),h=b.useRef(null),f=Bn(e,h),m=b.useRef(0),g=m.current,x=b.useRef(0),y=x.current,w=a.open||o,S=b.useRef(w),k=b.useRef(void 0);return b.useEffect(()=>{const N=requestAnimationFrame(()=>S.current=!1);return()=>cancelAnimationFrame(N)},[]),Xk(()=>{const N=h.current;if(N){k.current=k.current||{transitionDuration:N.style.transitionDuration,animationName:N.style.animationName},N.style.transitionDuration="0s",N.style.animationName="none";const C=N.getBoundingClientRect();m.current=C.height,x.current=C.width,S.current||(N.style.transitionDuration=k.current.transitionDuration,N.style.animationName=k.current.animationName),c(r)}},[a.open,r]),l.jsx(on.div,{"data-state":UO(a.open),"data-disabled":a.disabled?"":void 0,id:a.contentId,hidden:!w,...i,ref:f,style:{"--radix-collapsible-content-height":g?`${g}px`:void 0,"--radix-collapsible-content-width":y?`${y}px`:void 0,...t.style},children:w&&s})});function UO(t){return t?"open":"closed"}var Y9e=jW;const bD=Y9e,wD=NW,SD=CW;function K9e(t){const e=t.split(` -`).slice(1),n=[];for(const r of e){const s=r.trim();if(!s.startsWith("at "))continue;const i=s.match(/at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?$/);i?n.push({functionName:i[1]||"",fileName:i[2],lineNumber:i[3],columnNumber:i[4],raw:s}):n.push({functionName:"",fileName:"",lineNumber:"",columnNumber:"",raw:s})}return n}function Z9e({error:t,errorInfo:e}){const[n,r]=b.useState(!0),[s,i]=b.useState(!1),[a,o]=b.useState(!1),c=t.stack?K9e(t.stack):[],h=async()=>{const f=` -Error: ${t.name} -Message: ${t.message} - -Stack Trace: -${t.stack||"No stack trace available"} - -Component Stack: -${e?.componentStack||"No component stack available"} - -URL: ${window.location.href} -User Agent: ${navigator.userAgent} -Time: ${new Date().toISOString()} - `.trim();try{await navigator.clipboard.writeText(f),o(!0),setTimeout(()=>o(!1),2e3)}catch(m){console.error("Failed to copy:",m)}};return l.jsxs("div",{className:"space-y-4",children:[l.jsxs(Na,{variant:"destructive",className:"border-red-500/50 bg-red-500/10",children:[l.jsx(Oa,{className:"h-4 w-4"}),l.jsxs(Ca,{className:"font-mono text-sm",children:[l.jsxs("span",{className:"font-semibold",children:[t.name,":"]})," ",t.message]})]}),c.length>0&&l.jsxs(bD,{open:n,onOpenChange:r,children:[l.jsx(wD,{asChild:!0,children:l.jsxs(de,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[l.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[l.jsx(tZ,{className:"h-4 w-4"}),"Stack Trace (",c.length," frames)"]}),n?l.jsx($m,{className:"h-4 w-4"}):l.jsx(Tu,{className:"h-4 w-4"})]})}),l.jsx(SD,{children:l.jsx(hn,{className:"h-[280px] rounded-md border bg-muted/30",children:l.jsx("div",{className:"p-3 space-y-1",children:c.map((f,m)=>l.jsx("div",{className:"font-mono text-xs p-2 rounded hover:bg-muted/50 transition-colors",children:l.jsxs("div",{className:"flex items-start gap-2",children:[l.jsxs("span",{className:"text-muted-foreground w-6 text-right flex-shrink-0",children:[m+1,"."]}),l.jsxs("div",{className:"flex-1 min-w-0",children:[l.jsx("span",{className:"text-primary font-medium",children:f.functionName}),f.fileName&&l.jsxs("div",{className:"text-muted-foreground mt-0.5 break-all",children:[f.fileName,f.lineNumber&&l.jsxs("span",{className:"text-yellow-600 dark:text-yellow-400",children:[":",f.lineNumber,":",f.columnNumber]})]})]})]})},m))})})})]}),e?.componentStack&&l.jsxs(bD,{open:s,onOpenChange:i,children:[l.jsx(wD,{asChild:!0,children:l.jsxs(de,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[l.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[l.jsx(Oa,{className:"h-4 w-4"}),"Component Stack"]}),s?l.jsx($m,{className:"h-4 w-4"}):l.jsx(Tu,{className:"h-4 w-4"})]})}),l.jsx(SD,{children:l.jsx(hn,{className:"h-[200px] rounded-md border bg-muted/30",children:l.jsx("pre",{className:"p-3 font-mono text-xs whitespace-pre-wrap text-muted-foreground",children:e.componentStack})})})]}),l.jsx(de,{variant:"outline",size:"sm",onClick:h,className:"w-full",children:a?l.jsxs(l.Fragment,{children:[l.jsx(ol,{className:"mr-2 h-4 w-4 text-green-500"}),"已复制到剪贴板"]}):l.jsxs(l.Fragment,{children:[l.jsx(O1,{className:"mr-2 h-4 w-4"}),"复制错误信息"]})})]})}function TW({error:t,errorInfo:e}){const n=()=>{window.location.href="/"},r=()=>{window.location.reload()};return l.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background p-4",children:l.jsxs(Dt,{className:"w-full max-w-2xl shadow-lg",children:[l.jsxs(kn,{className:"text-center pb-2",children:[l.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30 mb-4",children:l.jsx(Oa,{className:"h-8 w-8 text-red-600 dark:text-red-400"})}),l.jsx(jn,{className:"text-2xl font-bold",children:"页面出现了问题"}),l.jsx(Fr,{className:"text-base mt-2",children:"应用程序遇到了意外错误。您可以尝试刷新页面或返回首页。"})]}),l.jsxs(Dn,{className:"space-y-4",children:[l.jsx(Z9e,{error:t,errorInfo:e}),l.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 pt-2",children:[l.jsxs(de,{onClick:r,className:"flex-1",children:[l.jsx(Ls,{className:"mr-2 h-4 w-4"}),"刷新页面"]}),l.jsxs(de,{onClick:n,variant:"outline",className:"flex-1",children:[l.jsx(Fm,{className:"mr-2 h-4 w-4"}),"返回首页"]})]}),l.jsx("p",{className:"text-xs text-center text-muted-foreground pt-2",children:"如果问题持续存在,请将错误信息复制并反馈给开发者"})]})]})})}class J9e extends b.Component{constructor(e){super(e),this.state={hasError:!1,error:null,errorInfo:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,n){console.error("ErrorBoundary caught an error:",e,n),this.setState({errorInfo:n})}handleReset=()=>{this.setState({hasError:!1,error:null,errorInfo:null})};render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback:l.jsx(TW,{error:this.state.error,errorInfo:this.state.errorInfo}):this.props.children}}function EW({error:t}){return l.jsx(TW,{error:t,errorInfo:null})}const Np=uY({component:()=>l.jsxs(l.Fragment,{children:[l.jsx(jD,{}),!1]}),beforeLoad:()=>{if(window.location.pathname==="/"&&!fL())throw hY({to:"/auth"})}}),eTe=cs({getParentRoute:()=>Np,path:"/auth",component:Kte}),tTe=cs({getParentRoute:()=>Np,path:"/setup",component:bne}),Qs=cs({getParentRoute:()=>Np,id:"protected",component:()=>l.jsx(U9e,{children:l.jsx(jD,{})}),errorComponent:({error:t})=>l.jsx(EW,{error:t})}),nTe=cs({getParentRoute:()=>Qs,path:"/",component:cte}),rTe=cs({getParentRoute:()=>Qs,path:"/config/bot",component:vhe}),sTe=cs({getParentRoute:()=>Qs,path:"/config/modelProvider",component:ofe}),iTe=cs({getParentRoute:()=>Qs,path:"/config/model",component:Jme}),aTe=cs({getParentRoute:()=>Qs,path:"/config/adapter",component:t0e}),lTe=cs({getParentRoute:()=>Qs,path:"/resource/emoji",component:Owe}),oTe=cs({getParentRoute:()=>Qs,path:"/resource/expression",component:Pwe}),cTe=cs({getParentRoute:()=>Qs,path:"/resource/person",component:Wwe}),uTe=cs({getParentRoute:()=>Qs,path:"/resource/knowledge-graph",component:Lje}),dTe=cs({getParentRoute:()=>Qs,path:"/logs",component:T8e}),hTe=cs({getParentRoute:()=>Qs,path:"/plugins",component:W8e}),fTe=cs({getParentRoute:()=>Qs,path:"/plugin-config",component:G8e}),mTe=cs({getParentRoute:()=>Qs,path:"/plugin-mirrors",component:X8e}),pTe=cs({getParentRoute:()=>Qs,path:"/settings",component:Qte}),gTe=cs({getParentRoute:()=>Np,path:"*",component:gL}),xTe=Np.addChildren([eTe,tTe,Qs.addChildren([nTe,rTe,sTe,iTe,aTe,lTe,oTe,cTe,uTe,hTe,fTe,mTe,dTe,pTe]),gTe]),vTe=dY({routeTree:xTe,defaultNotFoundComponent:gL,defaultErrorComponent:({error:t})=>l.jsx(EW,{error:t})});function yTe({children:t,defaultTheme:e="system",storageKey:n="ui-theme",...r}){const[s,i]=b.useState(()=>localStorage.getItem(n)||e);b.useEffect(()=>{const o=window.document.documentElement;if(o.classList.remove("light","dark"),s==="system"){const c=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";o.classList.add(c);return}o.classList.add(s)},[s]),b.useEffect(()=>{const o=localStorage.getItem("accent-color");if(o){const c=document.documentElement,f={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[o];f&&(c.style.setProperty("--primary",f.hsl),f.gradient?(c.style.setProperty("--primary-gradient",f.gradient),c.classList.add("has-gradient")):(c.style.removeProperty("--primary-gradient"),c.classList.remove("has-gradient")))}},[]);const a={theme:s,setTheme:o=>{localStorage.setItem(n,o),i(o)}};return l.jsx(LP.Provider,{...r,value:a,children:t})}function bTe({children:t,defaultEnabled:e=!0,defaultWavesEnabled:n=!0,storageKey:r="enable-animations",wavesStorageKey:s="enable-waves-background"}){const[i,a]=b.useState(()=>{const f=localStorage.getItem(r);return f!==null?f==="true":e}),[o,c]=b.useState(()=>{const f=localStorage.getItem(s);return f!==null?f==="true":n});b.useEffect(()=>{const f=document.documentElement;i?f.classList.remove("no-animations"):f.classList.add("no-animations"),localStorage.setItem(r,String(i))},[i,r]),b.useEffect(()=>{localStorage.setItem(s,String(o))},[o,s]);const h={enableAnimations:i,setEnableAnimations:a,enableWavesBackground:o,setEnableWavesBackground:c};return l.jsx(IP.Provider,{value:h,children:t})}var WO="ToastProvider",[GO,wTe,STe]=Cv("Toast"),[_W]=ha("Toast",[STe]),[kTe,Vy]=_W(WO),MW=t=>{const{__scopeToast:e,label:n="Notification",duration:r=5e3,swipeDirection:s="right",swipeThreshold:i=50,children:a}=t,[o,c]=b.useState(null),[h,f]=b.useState(0),m=b.useRef(!1),g=b.useRef(!1);return n.trim()||console.error(`Invalid prop \`label\` supplied to \`${WO}\`. Expected non-empty \`string\`.`),l.jsx(GO.Provider,{scope:e,children:l.jsx(kTe,{scope:e,label:n,duration:r,swipeDirection:s,swipeThreshold:i,toastCount:h,viewport:o,onViewportChange:c,onToastAdd:b.useCallback(()=>f(x=>x+1),[]),onToastRemove:b.useCallback(()=>f(x=>x-1),[]),isFocusedToastEscapeKeyDownRef:m,isClosePausedRef:g,children:a})})};MW.displayName=WO;var AW="ToastViewport",jTe=["F8"],Ik="toast.viewportPause",Bk="toast.viewportResume",RW=b.forwardRef((t,e)=>{const{__scopeToast:n,hotkey:r=jTe,label:s="Notifications ({hotkey})",...i}=t,a=Vy(AW,n),o=wTe(n),c=b.useRef(null),h=b.useRef(null),f=b.useRef(null),m=b.useRef(null),g=Bn(e,m,a.onViewportChange),x=r.join("+").replace(/Key/g,"").replace(/Digit/g,""),y=a.toastCount>0;b.useEffect(()=>{const S=k=>{r.length!==0&&r.every(C=>k[C]||k.code===C)&&m.current?.focus()};return document.addEventListener("keydown",S),()=>document.removeEventListener("keydown",S)},[r]),b.useEffect(()=>{const S=c.current,k=m.current;if(y&&S&&k){const N=()=>{if(!a.isClosePausedRef.current){const E=new CustomEvent(Ik);k.dispatchEvent(E),a.isClosePausedRef.current=!0}},C=()=>{if(a.isClosePausedRef.current){const E=new CustomEvent(Bk);k.dispatchEvent(E),a.isClosePausedRef.current=!1}},T=E=>{!S.contains(E.relatedTarget)&&C()},_=()=>{S.contains(document.activeElement)||C()};return S.addEventListener("focusin",N),S.addEventListener("focusout",T),S.addEventListener("pointermove",N),S.addEventListener("pointerleave",_),window.addEventListener("blur",N),window.addEventListener("focus",C),()=>{S.removeEventListener("focusin",N),S.removeEventListener("focusout",T),S.removeEventListener("pointermove",N),S.removeEventListener("pointerleave",_),window.removeEventListener("blur",N),window.removeEventListener("focus",C)}}},[y,a.isClosePausedRef]);const w=b.useCallback(({tabbingDirection:S})=>{const N=o().map(C=>{const T=C.ref.current,_=[T,...LTe(T)];return S==="forwards"?_:_.reverse()});return(S==="forwards"?N.reverse():N).flat()},[o]);return b.useEffect(()=>{const S=m.current;if(S){const k=N=>{const C=N.altKey||N.ctrlKey||N.metaKey;if(N.key==="Tab"&&!C){const _=document.activeElement,E=N.shiftKey;if(N.target===S&&E){h.current?.focus();return}const P=w({tabbingDirection:E?"backwards":"forwards"}),I=P.findIndex(Q=>Q===_);M3(P.slice(I+1))?N.preventDefault():E?h.current?.focus():f.current?.focus()}};return S.addEventListener("keydown",k),()=>S.removeEventListener("keydown",k)}},[o,w]),l.jsxs(NK,{ref:c,role:"region","aria-label":s.replace("{hotkey}",x),tabIndex:-1,style:{pointerEvents:y?void 0:"none"},children:[y&&l.jsx(qk,{ref:h,onFocusFromOutsideViewport:()=>{const S=w({tabbingDirection:"forwards"});M3(S)}}),l.jsx(GO.Slot,{scope:n,children:l.jsx(on.ol,{tabIndex:-1,...i,ref:g})}),y&&l.jsx(qk,{ref:f,onFocusFromOutsideViewport:()=>{const S=w({tabbingDirection:"backwards"});M3(S)}})]})});RW.displayName=AW;var DW="ToastFocusProxy",qk=b.forwardRef((t,e)=>{const{__scopeToast:n,onFocusFromOutsideViewport:r,...s}=t,i=Vy(DW,n);return l.jsx(rz,{tabIndex:0,...s,ref:e,style:{position:"fixed"},onFocus:a=>{const o=a.relatedTarget;!i.viewport?.contains(o)&&r()}})});qk.displayName=DW;var Cp="Toast",OTe="toast.swipeStart",NTe="toast.swipeMove",CTe="toast.swipeCancel",TTe="toast.swipeEnd",zW=b.forwardRef((t,e)=>{const{forceMount:n,open:r,defaultOpen:s,onOpenChange:i,...a}=t,[o,c]=wo({prop:r,defaultProp:s??!0,onChange:i,caller:Cp});return l.jsx(Fs,{present:n||o,children:l.jsx(MTe,{open:o,...a,ref:e,onClose:()=>c(!1),onPause:Os(t.onPause),onResume:Os(t.onResume),onSwipeStart:tt(t.onSwipeStart,h=>{h.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:tt(t.onSwipeMove,h=>{const{x:f,y:m}=h.detail.delta;h.currentTarget.setAttribute("data-swipe","move"),h.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${f}px`),h.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${m}px`)}),onSwipeCancel:tt(t.onSwipeCancel,h=>{h.currentTarget.setAttribute("data-swipe","cancel"),h.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),h.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),h.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),h.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:tt(t.onSwipeEnd,h=>{const{x:f,y:m}=h.detail.delta;h.currentTarget.setAttribute("data-swipe","end"),h.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),h.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),h.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${f}px`),h.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${m}px`),c(!1)})})})});zW.displayName=Cp;var[ETe,_Te]=_W(Cp,{onClose(){}}),MTe=b.forwardRef((t,e)=>{const{__scopeToast:n,type:r="foreground",duration:s,open:i,onClose:a,onEscapeKeyDown:o,onPause:c,onResume:h,onSwipeStart:f,onSwipeMove:m,onSwipeCancel:g,onSwipeEnd:x,...y}=t,w=Vy(Cp,n),[S,k]=b.useState(null),N=Bn(e,z=>k(z)),C=b.useRef(null),T=b.useRef(null),_=s||w.duration,E=b.useRef(0),M=b.useRef(_),L=b.useRef(0),{onToastAdd:P,onToastRemove:I}=w,Q=Os(()=>{S?.contains(document.activeElement)&&w.viewport?.focus(),a()}),U=b.useCallback(z=>{!z||z===1/0||(window.clearTimeout(L.current),E.current=new Date().getTime(),L.current=window.setTimeout(Q,z))},[Q]);b.useEffect(()=>{const z=w.viewport;if(z){const H=()=>{U(M.current),h?.()},B=()=>{const X=new Date().getTime()-E.current;M.current=M.current-X,window.clearTimeout(L.current),c?.()};return z.addEventListener(Ik,B),z.addEventListener(Bk,H),()=>{z.removeEventListener(Ik,B),z.removeEventListener(Bk,H)}}},[w.viewport,_,c,h,U]),b.useEffect(()=>{i&&!w.isClosePausedRef.current&&U(_)},[i,_,w.isClosePausedRef,U]),b.useEffect(()=>(P(),()=>I()),[P,I]);const ee=b.useMemo(()=>S?$W(S):null,[S]);return w.viewport?l.jsxs(l.Fragment,{children:[ee&&l.jsx(ATe,{__scopeToast:n,role:"status","aria-live":r==="foreground"?"assertive":"polite",children:ee}),l.jsx(ETe,{scope:n,onClose:Q,children:fu.createPortal(l.jsx(GO.ItemSlot,{scope:n,children:l.jsx(CK,{asChild:!0,onEscapeKeyDown:tt(o,()=>{w.isFocusedToastEscapeKeyDownRef.current||Q(),w.isFocusedToastEscapeKeyDownRef.current=!1}),children:l.jsx(on.li,{tabIndex:0,"data-state":i?"open":"closed","data-swipe-direction":w.swipeDirection,...y,ref:N,style:{userSelect:"none",touchAction:"none",...t.style},onKeyDown:tt(t.onKeyDown,z=>{z.key==="Escape"&&(o?.(z.nativeEvent),z.nativeEvent.defaultPrevented||(w.isFocusedToastEscapeKeyDownRef.current=!0,Q()))}),onPointerDown:tt(t.onPointerDown,z=>{z.button===0&&(C.current={x:z.clientX,y:z.clientY})}),onPointerMove:tt(t.onPointerMove,z=>{if(!C.current)return;const H=z.clientX-C.current.x,B=z.clientY-C.current.y,X=!!T.current,J=["left","right"].includes(w.swipeDirection),G=["left","up"].includes(w.swipeDirection)?Math.min:Math.max,R=J?G(0,H):0,se=J?0:G(0,B),W=z.pointerType==="touch"?10:2,F={x:R,y:se},V={originalEvent:z,delta:F};X?(T.current=F,Yx(NTe,m,V,{discrete:!1})):kD(F,w.swipeDirection,W)?(T.current=F,Yx(OTe,f,V,{discrete:!1}),z.target.setPointerCapture(z.pointerId)):(Math.abs(H)>W||Math.abs(B)>W)&&(C.current=null)}),onPointerUp:tt(t.onPointerUp,z=>{const H=T.current,B=z.target;if(B.hasPointerCapture(z.pointerId)&&B.releasePointerCapture(z.pointerId),T.current=null,C.current=null,H){const X=z.currentTarget,J={originalEvent:z,delta:H};kD(H,w.swipeDirection,w.swipeThreshold)?Yx(TTe,x,J,{discrete:!0}):Yx(CTe,g,J,{discrete:!0}),X.addEventListener("click",G=>G.preventDefault(),{once:!0})}})})})}),w.viewport)})]}):null}),ATe=t=>{const{__scopeToast:e,children:n,...r}=t,s=Vy(Cp,e),[i,a]=b.useState(!1),[o,c]=b.useState(!1);return zTe(()=>a(!0)),b.useEffect(()=>{const h=window.setTimeout(()=>c(!0),1e3);return()=>window.clearTimeout(h)},[]),o?null:l.jsx(Mv,{asChild:!0,children:l.jsx(rz,{...r,children:i&&l.jsxs(l.Fragment,{children:[s.label," ",n]})})})},RTe="ToastTitle",PW=b.forwardRef((t,e)=>{const{__scopeToast:n,...r}=t;return l.jsx(on.div,{...r,ref:e})});PW.displayName=RTe;var DTe="ToastDescription",LW=b.forwardRef((t,e)=>{const{__scopeToast:n,...r}=t;return l.jsx(on.div,{...r,ref:e})});LW.displayName=DTe;var IW="ToastAction",BW=b.forwardRef((t,e)=>{const{altText:n,...r}=t;return n.trim()?l.jsx(FW,{altText:n,asChild:!0,children:l.jsx(XO,{...r,ref:e})}):(console.error(`Invalid prop \`altText\` supplied to \`${IW}\`. Expected non-empty \`string\`.`),null)});BW.displayName=IW;var qW="ToastClose",XO=b.forwardRef((t,e)=>{const{__scopeToast:n,...r}=t,s=_Te(qW,n);return l.jsx(FW,{asChild:!0,children:l.jsx(on.button,{type:"button",...r,ref:e,onClick:tt(t.onClick,s.onClose)})})});XO.displayName=qW;var FW=b.forwardRef((t,e)=>{const{__scopeToast:n,altText:r,...s}=t;return l.jsx(on.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":r||void 0,...s,ref:e})});function $W(t){const e=[];return Array.from(t.childNodes).forEach(r=>{if(r.nodeType===r.TEXT_NODE&&r.textContent&&e.push(r.textContent),PTe(r)){const s=r.ariaHidden||r.hidden||r.style.display==="none",i=r.dataset.radixToastAnnounceExclude==="";if(!s)if(i){const a=r.dataset.radixToastAnnounceAlt;a&&e.push(a)}else e.push(...$W(r))}}),e}function Yx(t,e,n,{discrete:r}){const s=n.originalEvent.currentTarget,i=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:n});e&&s.addEventListener(t,e,{once:!0}),r?nz(s,i):s.dispatchEvent(i)}var kD=(t,e,n=0)=>{const r=Math.abs(t.x),s=Math.abs(t.y),i=r>s;return e==="left"||e==="right"?i&&r>n:!i&&s>n};function zTe(t=()=>{}){const e=Os(t);Xk(()=>{let n=0,r=0;return n=window.requestAnimationFrame(()=>r=window.requestAnimationFrame(e)),()=>{window.cancelAnimationFrame(n),window.cancelAnimationFrame(r)}},[e])}function PTe(t){return t.nodeType===t.ELEMENT_NODE}function LTe(t){const e=[],n=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const s=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||s?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)e.push(n.currentNode);return e}function M3(t){const e=document.activeElement;return t.some(n=>n===e?!0:(n.focus(),document.activeElement!==e))}var ITe=MW,QW=RW,HW=zW,VW=PW,UW=LW,WW=BW,GW=XO;const BTe=ITe,XW=b.forwardRef(({className:t,...e},n)=>l.jsx(QW,{ref:n,className:ve("fixed bottom-0 right-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:max-w-[420px] gap-2",t),...e}));XW.displayName=QW.displayName;const qTe=Ih("group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-slide-in-from-right data-[state=open]:animate-fade-in data-[state=closed]:animate-slide-out-to-right data-[state=closed]:animate-fade-out data-[swipe=end]:animate-slide-out-to-right",{variants:{variant:{default:"border bg-primary/5 text-foreground backdrop-blur-sm",destructive:"destructive group border-destructive bg-destructive/10 text-destructive-foreground backdrop-blur-sm"}},defaultVariants:{variant:"default"}}),YW=b.forwardRef(({className:t,variant:e,...n},r)=>l.jsx(HW,{ref:r,className:ve(qTe({variant:e}),t),...n}));YW.displayName=HW.displayName;const FTe=b.forwardRef(({className:t,...e},n)=>l.jsx(WW,{ref:n,className:ve("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",t),...e}));FTe.displayName=WW.displayName;const KW=b.forwardRef(({className:t,...e},n)=>l.jsx(GW,{ref:n,className:ve("absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",t),"toast-close":"",...e,children:l.jsx(P0,{className:"h-4 w-4"})}));KW.displayName=GW.displayName;const ZW=b.forwardRef(({className:t,...e},n)=>l.jsx(VW,{ref:n,className:ve("text-sm font-semibold [&+div]:text-xs",t),...e}));ZW.displayName=VW.displayName;const JW=b.forwardRef(({className:t,...e},n)=>l.jsx(UW,{ref:n,className:ve("text-sm opacity-90",t),...e}));JW.displayName=UW.displayName;function $Te(){const{toasts:t}=ts();return l.jsxs(BTe,{children:[t.map(function({id:e,title:n,description:r,action:s,...i}){return l.jsxs(YW,{...i,children:[l.jsxs("div",{className:"grid gap-1",children:[n&&l.jsx(ZW,{children:n}),r&&l.jsx(JW,{children:r})]}),s,l.jsx(KW,{})]},e)}),l.jsx(XW,{})]})}aZ.createRoot(document.getElementById("root")).render(l.jsx(b.StrictMode,{children:l.jsx(J9e,{children:l.jsx(yTe,{defaultTheme:"system",children:l.jsxs(bTe,{children:[l.jsx(fY,{router:vTe}),l.jsx($Te,{})]})})})})); diff --git a/webui/dist/index.html b/webui/dist/index.html index 12fade0d..e0ee1d7f 100644 --- a/webui/dist/index.html +++ b/webui/dist/index.html @@ -7,13 +7,13 @@ MaiBot Dashboard - + - + - - + +
From 804be2fa96a52a4e0200c66c14a8b7415b999800 Mon Sep 17 00:00:00 2001 From: SengokuCola <1026294844@qq.com> Date: Fri, 28 Nov 2025 13:33:56 +0800 Subject: [PATCH 05/61] =?UTF-8?q?feat=EF=BC=9A=E8=AE=B0=E5=BF=86=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E8=83=BD=E5=8A=9B=E6=8F=90=E5=8D=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + src/memory_system/memory_retrieval.py | 2 + .../retrieval_tools/query_chat_history.py | 383 ++++++++++++------ 3 files changed, 258 insertions(+), 128 deletions(-) diff --git a/.gitignore b/.gitignore index b8b38ee2..b2cbb3ba 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,7 @@ run_na.bat run_all_in_wt.bat run.bat log_debug/ +NapCat.Shell.Windows.OneKey run_amds.bat run_none.bat docs-mai/ diff --git a/src/memory_system/memory_retrieval.py b/src/memory_system/memory_retrieval.py index 3d5a302a..5820c206 100644 --- a/src/memory_system/memory_retrieval.py +++ b/src/memory_system/memory_retrieval.py @@ -76,6 +76,8 @@ def init_memory_retrieval_prompt(): - "xxxx和xxx的关系是什么" - "xxx在某个时间点发生了什么" +问题要说明前因后果和上下文,使其全面且精准 + 输出格式示例(需要检索时): ```json {{ diff --git a/src/memory_system/retrieval_tools/query_chat_history.py b/src/memory_system/retrieval_tools/query_chat_history.py index 407bba05..f5216de9 100644 --- a/src/memory_system/retrieval_tools/query_chat_history.py +++ b/src/memory_system/retrieval_tools/query_chat_history.py @@ -1,5 +1,5 @@ """ -根据时间或关键词在chat_history中查询 - 工具实现 +根据关键词或参与人在chat_history中查询记忆 - 工具实现 从ChatHistory表的聊天记录概述库中查询 """ @@ -9,177 +9,175 @@ from src.common.logger import get_logger from src.common.database.database_model import ChatHistory from src.chat.utils.utils import parse_keywords_string from .tool_registry import register_memory_retrieval_tool -from ..memory_utils import parse_datetime_to_timestamp, parse_time_range +from datetime import datetime logger = get_logger("memory_retrieval_tools") -async def query_chat_history( - chat_id: str, keyword: Optional[str] = None, time_range: Optional[str] = None, fuzzy: bool = True +async def search_chat_history( + chat_id: str, keyword: Optional[str] = None, participant: Optional[str] = None, fuzzy: bool = True ) -> str: - """根据时间或关键词在chat_history表中查询聊天记录概述 + """根据关键词或参与人查询记忆,返回匹配的记忆id、记忆标题theme和关键词keywords Args: chat_id: 聊天ID keyword: 关键词(可选,支持多个关键词,可用空格、逗号等分隔) - time_range: 时间范围或时间点,格式: - - 时间范围:"YYYY-MM-DD HH:MM:SS - YYYY-MM-DD HH:MM:SS" - - 时间点:"YYYY-MM-DD HH:MM:SS"(查询包含该时间点的记录) + participant: 参与人昵称(可选) fuzzy: 是否使用模糊匹配模式(默认True) - True: 模糊匹配,只要包含任意一个关键词即匹配(OR关系) - False: 全匹配,必须包含所有关键词才匹配(AND关系) Returns: - str: 查询结果 + str: 查询结果,包含记忆id、theme和keywords """ try: # 检查参数 - if not keyword and not time_range: - return "未指定查询参数(需要提供keyword或time_range之一)" + if not keyword and not participant: + return "未指定查询参数(需要提供keyword或participant之一)" # 构建查询条件 query = ChatHistory.select().where(ChatHistory.chat_id == chat_id) - # 时间过滤条件 - if time_range: - # 判断是时间点还是时间范围 - if " - " in time_range: - # 时间范围:查询与时间范围有交集的记录 - start_timestamp, end_timestamp = parse_time_range(time_range) - # 交集条件:start_time < end_timestamp AND end_time > start_timestamp - time_filter = (ChatHistory.start_time < end_timestamp) & (ChatHistory.end_time > start_timestamp) - else: - # 时间点:查询包含该时间点的记录(start_time <= time_point <= end_time) - target_timestamp = parse_datetime_to_timestamp(time_range) - time_filter = (ChatHistory.start_time <= target_timestamp) & (ChatHistory.end_time >= target_timestamp) - query = query.where(time_filter) - # 执行查询 records = list(query.order_by(ChatHistory.start_time.desc()).limit(50)) - # 如果有关键词,进一步过滤 - if keyword: - # 解析多个关键词(支持空格、逗号等分隔符) - keywords_list = parse_keywords_string(keyword) - if not keywords_list: - keywords_list = [keyword.strip()] if keyword.strip() else [] + filtered_records = [] - # 转换为小写以便匹配 - keywords_lower = [kw.lower() for kw in keywords_list if kw.strip()] + for record in records: + participant_matched = True # 如果没有participant条件,默认为True + keyword_matched = True # 如果没有keyword条件,默认为True - if not keywords_lower: - return "关键词为空" - - filtered_records = [] - - for record in records: - # 在theme、keywords、summary、original_text中搜索 - theme = (record.theme or "").lower() - summary = (record.summary or "").lower() - original_text = (record.original_text or "").lower() - - # 解析record中的keywords JSON - record_keywords_list = [] - if record.keywords: + # 检查参与人匹配 + if participant: + participant_matched = False + participants_list = [] + if record.participants: try: - keywords_data = ( - json.loads(record.keywords) if isinstance(record.keywords, str) else record.keywords + participants_data = ( + json.loads(record.participants) if isinstance(record.participants, str) else record.participants ) - if isinstance(keywords_data, list): - record_keywords_list = [str(k).lower() for k in keywords_data] + if isinstance(participants_data, list): + participants_list = [str(p).lower() for p in participants_data] except (json.JSONDecodeError, TypeError, ValueError): pass - # 根据匹配模式检查关键词 - matched = False - if fuzzy: - # 模糊匹配:只要包含任意一个关键词即匹配(OR关系) - for kw in keywords_lower: - if ( - kw in theme - or kw in summary - or kw in original_text - or any(kw in k for k in record_keywords_list) - ): - matched = True - break - else: - # 全匹配:必须包含所有关键词才匹配(AND关系) - matched = True - for kw in keywords_lower: - kw_matched = ( - kw in theme - or kw in summary - or kw in original_text - or any(kw in k for k in record_keywords_list) - ) - if not kw_matched: - matched = False - break + participant_lower = participant.lower().strip() + if participant_lower and any(participant_lower in p for p in participants_list): + participant_matched = True - if matched: - filtered_records.append(record) + # 检查关键词匹配 + if keyword: + keyword_matched = False + # 解析多个关键词(支持空格、逗号等分隔符) + keywords_list = parse_keywords_string(keyword) + if not keywords_list: + keywords_list = [keyword.strip()] if keyword.strip() else [] - if not filtered_records: - keywords_str = "、".join(keywords_list) + # 转换为小写以便匹配 + keywords_lower = [kw.lower() for kw in keywords_list if kw.strip()] + + if keywords_lower: + # 在theme、keywords、summary、original_text中搜索 + theme = (record.theme or "").lower() + summary = (record.summary or "").lower() + original_text = (record.original_text or "").lower() + + # 解析record中的keywords JSON + record_keywords_list = [] + if record.keywords: + try: + keywords_data = ( + json.loads(record.keywords) if isinstance(record.keywords, str) else record.keywords + ) + if isinstance(keywords_data, list): + record_keywords_list = [str(k).lower() for k in keywords_data] + except (json.JSONDecodeError, TypeError, ValueError): + pass + + # 根据匹配模式检查关键词 + if fuzzy: + # 模糊匹配:只要包含任意一个关键词即匹配(OR关系) + for kw in keywords_lower: + if ( + kw in theme + or kw in summary + or kw in original_text + or any(kw in k for k in record_keywords_list) + ): + keyword_matched = True + break + else: + # 全匹配:必须包含所有关键词才匹配(AND关系) + keyword_matched = True + for kw in keywords_lower: + kw_matched = ( + kw in theme + or kw in summary + or kw in original_text + or any(kw in k for k in record_keywords_list) + ) + if not kw_matched: + keyword_matched = False + break + + # 两者都匹配(如果同时有participant和keyword,需要两者都匹配;如果只有一个条件,只需要该条件匹配) + matched = participant_matched and keyword_matched + + if matched: + filtered_records.append(record) + + if not filtered_records: + if keyword and participant: + keywords_str = "、".join(parse_keywords_string(keyword) if keyword else []) + return f"未找到包含关键词'{keywords_str}'且参与人包含'{participant}'的聊天记录" + elif keyword: + keywords_str = "、".join(parse_keywords_string(keyword)) match_mode = "包含任意一个关键词" if fuzzy else "包含所有关键词" - if time_range: - return f"未找到{match_mode}'{keywords_str}'且在指定时间范围内的聊天记录概述" - else: - return f"未找到{match_mode}'{keywords_str}'的聊天记录概述" - - records = filtered_records - - # 如果没有记录(可能是时间范围查询但没有匹配的记录) - if not records: - if time_range: - return "未找到指定时间范围内的聊天记录概述" + return f"未找到{match_mode}'{keywords_str}'的聊天记录" + elif participant: + return f"未找到参与人包含'{participant}'的聊天记录" else: - return "未找到相关聊天记录概述" + return "未找到相关聊天记录" - # 对即将返回的记录增加使用计数 - records_to_use = records[:3] - for record in records_to_use: - try: - ChatHistory.update(count=ChatHistory.count + 1).where(ChatHistory.id == record.id).execute() - record.count = (record.count or 0) + 1 - except Exception as update_error: - logger.error(f"更新聊天记录概述计数失败: {update_error}") - - # 构建结果文本 + # 构建结果文本,返回id、theme和keywords results = [] - for record in records_to_use: # 最多返回3条记录 + for record in filtered_records[:20]: # 最多返回20条记录 result_parts = [] + # 添加记忆ID + result_parts.append(f"记忆ID:{record.id}") + # 添加主题 if record.theme: result_parts.append(f"主题:{record.theme}") + else: + result_parts.append("主题:(无)") - # 添加时间范围 - from datetime import datetime - - start_str = datetime.fromtimestamp(record.start_time).strftime("%Y-%m-%d %H:%M:%S") - end_str = datetime.fromtimestamp(record.end_time).strftime("%Y-%m-%d %H:%M:%S") - result_parts.append(f"时间:{start_str} - {end_str}") - - # 添加概括(优先使用summary,如果没有则使用original_text的前200字符) - if record.summary: - result_parts.append(f"概括:{record.summary}") - elif record.original_text: - text_preview = record.original_text[:200] - if len(record.original_text) > 200: - text_preview += "..." - result_parts.append(f"内容:{text_preview}") + # 添加关键词 + if record.keywords: + try: + keywords_data = ( + json.loads(record.keywords) if isinstance(record.keywords, str) else record.keywords + ) + if isinstance(keywords_data, list) and keywords_data: + keywords_str = "、".join([str(k) for k in keywords_data]) + result_parts.append(f"关键词:{keywords_str}") + else: + result_parts.append("关键词:(无)") + except (json.JSONDecodeError, TypeError, ValueError): + result_parts.append("关键词:(无)") + else: + result_parts.append("关键词:(无)") results.append("\n".join(result_parts)) if not results: - return "未找到相关聊天记录概述" + return "未找到相关聊天记录" response_text = "\n\n---\n\n".join(results) - if len(records) > len(records_to_use): - omitted_count = len(records) - len(records_to_use) - response_text += f"\n\n(还有{omitted_count}条历史记录已省略)" + if len(filtered_records) > 20: + omitted_count = len(filtered_records) - 20 + response_text += f"\n\n(还有{omitted_count}条记录已省略,可使用记忆ID查询详细信息)" return response_text except Exception as e: @@ -187,11 +185,125 @@ async def query_chat_history( return f"查询失败: {str(e)}" +async def get_chat_history_detail(chat_id: str, memory_ids: str) -> str: + """根据记忆ID,展示某条或某几条记忆的具体内容 + + Args: + chat_id: 聊天ID + memory_ids: 记忆ID,可以是单个ID(如"123")或多个ID(用逗号分隔,如"1,2,3") + + Returns: + str: 记忆的详细内容 + """ + try: + # 解析memory_ids + id_list = [] + # 尝试解析为逗号分隔的ID列表 + try: + id_list = [int(id_str.strip()) for id_str in memory_ids.split(",") if id_str.strip()] + except ValueError: + return f"无效的记忆ID格式: {memory_ids},请使用数字ID,多个ID用逗号分隔(如:'123' 或 '123,456')" + + if not id_list: + return "未提供有效的记忆ID" + + # 查询记录 + query = ChatHistory.select().where( + (ChatHistory.chat_id == chat_id) & (ChatHistory.id.in_(id_list)) + ) + records = list(query.order_by(ChatHistory.start_time.desc())) + + if not records: + return f"未找到ID为{id_list}的记忆记录(可能ID不存在或不属于当前聊天)" + + # 对即将返回的记录增加使用计数 + for record in records: + try: + ChatHistory.update(count=ChatHistory.count + 1).where(ChatHistory.id == record.id).execute() + record.count = (record.count or 0) + 1 + except Exception as update_error: + logger.error(f"更新聊天记录概述计数失败: {update_error}") + + # 构建详细结果 + results = [] + for record in records: + result_parts = [] + + # 添加记忆ID + result_parts.append(f"记忆ID:{record.id}") + + # 添加主题 + if record.theme: + result_parts.append(f"主题:{record.theme}") + + # 添加时间范围 + start_str = datetime.fromtimestamp(record.start_time).strftime("%Y-%m-%d %H:%M:%S") + end_str = datetime.fromtimestamp(record.end_time).strftime("%Y-%m-%d %H:%M:%S") + result_parts.append(f"时间:{start_str} - {end_str}") + + # 添加参与人 + if record.participants: + try: + participants_data = ( + json.loads(record.participants) if isinstance(record.participants, str) else record.participants + ) + if isinstance(participants_data, list) and participants_data: + participants_str = "、".join([str(p) for p in participants_data]) + result_parts.append(f"参与人:{participants_str}") + except (json.JSONDecodeError, TypeError, ValueError): + pass + + # 添加关键词 + if record.keywords: + try: + keywords_data = ( + json.loads(record.keywords) if isinstance(record.keywords, str) else record.keywords + ) + if isinstance(keywords_data, list) and keywords_data: + keywords_str = "、".join([str(k) for k in keywords_data]) + result_parts.append(f"关键词:{keywords_str}") + except (json.JSONDecodeError, TypeError, ValueError): + pass + + # 添加概括 + if record.summary: + result_parts.append(f"概括:{record.summary}") + + # 添加关键信息点 + if record.key_point: + try: + key_point_data = ( + json.loads(record.key_point) if isinstance(record.key_point, str) else record.key_point + ) + if isinstance(key_point_data, list) and key_point_data: + key_point_str = "\n".join([f" - {str(kp)}" for kp in key_point_data]) + result_parts.append(f"关键信息点:\n{key_point_str}") + except (json.JSONDecodeError, TypeError, ValueError): + pass + + # 添加原文内容 + if record.original_text: + result_parts.append(f"原文内容:\n{record.original_text}") + + results.append("\n".join(result_parts)) + + if not results: + return "未找到相关记忆记录" + + response_text = "\n\n" + "=" * 50 + "\n\n".join(results) + return response_text + + except Exception as e: + logger.error(f"获取记忆详情失败: {e}") + return f"查询失败: {str(e)}" + + def register_tool(): """注册工具""" + # 注册工具1:搜索记忆 register_memory_retrieval_tool( - name="query_chat_history", - description="根据时间或关键词在聊天记录中查询。可以查询某个时间点发生了什么、某个时间范围内的事件,或根据关键词搜索消息概述。支持两种匹配模式:模糊匹配(默认,只要包含任意一个关键词即匹配)和全匹配(必须包含所有关键词才匹配)", + name="search_chat_history", + description="根据关键词或参与人查询记忆,返回匹配的记忆id、记忆标题theme和关键词keywords。用于快速搜索和定位相关记忆。", parameters=[ { "name": "keyword", @@ -200,9 +312,9 @@ def register_tool(): "required": False, }, { - "name": "time_range", + "name": "participant", "type": "string", - "description": "时间范围或时间点(可选)。格式:'YYYY-MM-DD HH:MM:SS - YYYY-MM-DD HH:MM:SS'(时间范围,查询与时间范围有交集的记录)或 'YYYY-MM-DD HH:MM:SS'(时间点,查询包含该时间点的记录)", + "description": "参与人昵称(可选),用于查询包含该参与人的记忆", "required": False, }, { @@ -212,5 +324,20 @@ def register_tool(): "required": False, }, ], - execute_func=query_chat_history, + execute_func=search_chat_history, + ) + + # 注册工具2:获取记忆详情 + register_memory_retrieval_tool( + name="get_chat_history_detail", + description="根据记忆ID,展示某条或某几条记忆的具体内容。包括主题、时间、参与人、关键词、概括、关键信息点和原文内容等详细信息。需要先使用search_chat_history工具获取记忆ID。", + parameters=[ + { + "name": "memory_ids", + "type": "string", + "description": "记忆ID,可以是单个ID(如'123')或多个ID(用逗号分隔,如'123,456,789')", + "required": True, + }, + ], + execute_func=get_chat_history_detail, ) From c78e17406cfc9fe578e8d858f84033057587ba40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Fri, 28 Nov 2025 14:18:15 +0800 Subject: [PATCH 06/61] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20WebUI=20?= =?UTF-8?q?=E8=81=8A=E5=A4=A9=E5=AE=A4=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=8C=85?= =?UTF-8?q?=E6=8B=AC=E6=B6=88=E6=81=AF=E5=B9=BF=E6=92=AD=E5=92=8C=E5=8E=86?= =?UTF-8?q?=E5=8F=B2=E8=AE=B0=E5=BD=95=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../message_receive/uni_message_sender.py | 42 ++ src/webui/chat_routes.py | 363 ++++++++++++++++++ src/webui/webui_server.py | 7 + 3 files changed, 412 insertions(+) create mode 100644 src/webui/chat_routes.py diff --git a/src/chat/message_receive/uni_message_sender.py b/src/chat/message_receive/uni_message_sender.py index 5a8ae022..343084eb 100644 --- a/src/chat/message_receive/uni_message_sender.py +++ b/src/chat/message_receive/uni_message_sender.py @@ -15,12 +15,54 @@ install(extra_lines=3) logger = get_logger("sender") +# WebUI 聊天室的消息广播器(延迟导入避免循环依赖) +_webui_chat_broadcaster = None + + +def get_webui_chat_broadcaster(): + """获取 WebUI 聊天室广播器""" + global _webui_chat_broadcaster + if _webui_chat_broadcaster is None: + try: + from src.webui.chat_routes import chat_manager, WEBUI_CHAT_PLATFORM + _webui_chat_broadcaster = (chat_manager, WEBUI_CHAT_PLATFORM) + except ImportError: + _webui_chat_broadcaster = (None, None) + return _webui_chat_broadcaster + async def _send_message(message: MessageSending, show_log=True) -> bool: """合并后的消息发送函数,包含WS发送和日志记录""" message_preview = truncate_message(message.processed_plain_text, max_length=200) + platform = message.message_info.platform try: + # 检查是否是 WebUI 平台的消息 + chat_manager, webui_platform = get_webui_chat_broadcaster() + if platform == webui_platform and chat_manager is not None: + # WebUI 聊天室消息,通过 WebSocket 广播 + import time + from src.config.config import global_config + + await chat_manager.broadcast({ + "type": "bot_message", + "content": message.processed_plain_text, + "message_type": "text", + "timestamp": time.time(), + "sender": { + "name": global_config.bot.nickname, + "avatar": None, + "is_bot": True, + } + }) + + # 注意:机器人消息会由 MessageStorage.store_message 自动保存到数据库 + # 无需手动保存 + + if show_log: + logger.info(f"已将消息 '{message_preview}' 发往 WebUI 聊天室") + return True + # 直接调用API发送消息 await get_global_api().send_message(message) if show_log: diff --git a/src/webui/chat_routes.py b/src/webui/chat_routes.py new file mode 100644 index 00000000..0bab8cae --- /dev/null +++ b/src/webui/chat_routes.py @@ -0,0 +1,363 @@ +"""本地聊天室路由 - WebUI 与麦麦直接对话""" + +import time +import uuid +from typing import Dict, Any, Optional, List +from fastapi import APIRouter, WebSocket, WebSocketDisconnect, Query +from pydantic import BaseModel + +from src.common.logger import get_logger +from src.common.database.database_model import Messages +from src.config.config import global_config +from src.chat.message_receive.bot import chat_bot + +logger = get_logger("webui.chat") + +router = APIRouter(prefix="/api/chat", tags=["LocalChat"]) + +# WebUI 聊天的虚拟群组 ID +WEBUI_CHAT_GROUP_ID = "webui_local_chat" +WEBUI_CHAT_PLATFORM = "webui" + +# 固定的 WebUI 用户 ID 前缀 +WEBUI_USER_ID_PREFIX = "webui_user_" + + +class ChatHistoryMessage(BaseModel): + """聊天历史消息""" + id: str + type: str # 'user' | 'bot' | 'system' + content: str + timestamp: float + sender_name: str + sender_id: Optional[str] = None + is_bot: bool = False + + +class ChatHistoryManager: + """聊天历史管理器 - 使用 SQLite 数据库存储""" + + def __init__(self, max_messages: int = 200): + self.max_messages = max_messages + + def _message_to_dict(self, msg: Messages) -> Dict[str, Any]: + """将数据库消息转换为前端格式""" + # 判断是否是机器人消息 + # WebUI 用户的 user_id 以 "webui_" 开头,其他都是机器人消息 + user_id = msg.user_id or "" + is_bot = not user_id.startswith("webui_") and not user_id.startswith(WEBUI_USER_ID_PREFIX) + + return { + "id": msg.message_id, + "type": "bot" if is_bot else "user", + "content": msg.processed_plain_text or msg.display_message or "", + "timestamp": msg.time, + "sender_name": msg.user_nickname or (global_config.bot.nickname if is_bot else "未知用户"), + "sender_id": "bot" if is_bot else user_id, + "is_bot": is_bot, + } + + def get_history(self, limit: int = 50) -> List[Dict[str, Any]]: + """从数据库获取最近的历史记录""" + try: + # 查询 WebUI 平台的消息,按时间排序 + messages = ( + Messages.select() + .where(Messages.chat_info_group_id == WEBUI_CHAT_GROUP_ID) + .order_by(Messages.time.desc()) + .limit(limit) + ) + + # 转换为列表并反转(使最旧的消息在前) + result = [self._message_to_dict(msg) for msg in messages] + result.reverse() + + logger.debug(f"从数据库加载了 {len(result)} 条聊天记录") + return result + except Exception as e: + logger.error(f"从数据库加载聊天记录失败: {e}") + return [] + + def clear_history(self) -> int: + """清空 WebUI 聊天历史记录""" + try: + deleted = ( + Messages.delete() + .where(Messages.chat_info_group_id == WEBUI_CHAT_GROUP_ID) + .execute() + ) + logger.info(f"已清空 {deleted} 条 WebUI 聊天记录") + return deleted + except Exception as e: + logger.error(f"清空聊天记录失败: {e}") + return 0 + + +# 全局聊天历史管理器 +chat_history = ChatHistoryManager() + + +# 存储 WebSocket 连接 +class ChatConnectionManager: + """聊天连接管理器""" + + def __init__(self): + self.active_connections: Dict[str, WebSocket] = {} + self.user_sessions: Dict[str, str] = {} # user_id -> session_id 映射 + + async def connect(self, websocket: WebSocket, session_id: str, user_id: str): + await websocket.accept() + self.active_connections[session_id] = websocket + self.user_sessions[user_id] = session_id + logger.info(f"WebUI 聊天会话已连接: session={session_id}, user={user_id}") + + def disconnect(self, session_id: str, user_id: str): + if session_id in self.active_connections: + del self.active_connections[session_id] + if user_id in self.user_sessions and self.user_sessions[user_id] == session_id: + del self.user_sessions[user_id] + logger.info(f"WebUI 聊天会话已断开: session={session_id}") + + async def send_message(self, session_id: str, message: dict): + if session_id in self.active_connections: + try: + await self.active_connections[session_id].send_json(message) + except Exception as e: + logger.error(f"发送消息失败: {e}") + + async def broadcast(self, message: dict): + """广播消息给所有连接""" + for session_id in list(self.active_connections.keys()): + await self.send_message(session_id, message) + + +chat_manager = ChatConnectionManager() + + +def create_message_data( + content: str, + user_id: str, + user_name: str, + message_id: Optional[str] = None, + is_at_bot: bool = True +) -> Dict[str, Any]: + """创建符合麦麦消息格式的消息数据""" + if message_id is None: + message_id = str(uuid.uuid4()) + + return { + "message_info": { + "platform": WEBUI_CHAT_PLATFORM, + "message_id": message_id, + "time": time.time(), + "group_info": { + "group_id": WEBUI_CHAT_GROUP_ID, + "group_name": "WebUI本地聊天室", + "platform": WEBUI_CHAT_PLATFORM, + }, + "user_info": { + "user_id": user_id, + "user_nickname": user_name, + "user_cardname": user_name, + "platform": WEBUI_CHAT_PLATFORM, + }, + "additional_config": { + "at_bot": is_at_bot, + } + }, + "message_segment": { + "type": "seglist", + "data": [ + { + "type": "text", + "data": content, + }, + { + "type": "mention_bot", + "data": "1.0", + } + ] + }, + "raw_message": content, + "processed_plain_text": content, + } + + +@router.get("/history") +async def get_chat_history( + limit: int = Query(default=50, ge=1, le=200), + user_id: Optional[str] = Query(default=None) # 保留参数兼容性,但不用于过滤 +): + """获取聊天历史记录 + + 所有 WebUI 用户共享同一个聊天室,因此返回所有历史记录 + """ + history = chat_history.get_history(limit) + return { + "success": True, + "messages": history, + "total": len(history), + } + + +@router.delete("/history") +async def clear_chat_history(): + """清空聊天历史记录""" + deleted = chat_history.clear_history() + return { + "success": True, + "message": f"已清空 {deleted} 条聊天记录", + } + + +@router.websocket("/ws") +async def websocket_chat( + websocket: WebSocket, + user_id: Optional[str] = Query(default=None), + user_name: Optional[str] = Query(default="WebUI用户"), +): + """WebSocket 聊天端点 + + Args: + user_id: 用户唯一标识(由前端生成并持久化) + user_name: 用户显示昵称(可修改) + """ + # 生成会话 ID(每次连接都是新的) + session_id = str(uuid.uuid4()) + + # 如果没有提供 user_id,生成一个新的 + if not user_id: + user_id = f"{WEBUI_USER_ID_PREFIX}{uuid.uuid4().hex[:16]}" + elif not user_id.startswith(WEBUI_USER_ID_PREFIX): + # 确保 user_id 有正确的前缀 + user_id = f"{WEBUI_USER_ID_PREFIX}{user_id}" + + await chat_manager.connect(websocket, session_id, user_id) + + try: + # 发送会话信息(包含用户 ID,前端需要保存) + await chat_manager.send_message(session_id, { + "type": "session_info", + "session_id": session_id, + "user_id": user_id, + "user_name": user_name, + "bot_name": global_config.bot.nickname, + }) + + # 发送历史记录 + history = chat_history.get_history(50) + if history: + await chat_manager.send_message(session_id, { + "type": "history", + "messages": history, + }) + + # 发送欢迎消息(不保存到历史) + await chat_manager.send_message(session_id, { + "type": "system", + "content": f"已连接到本地聊天室,可以开始与 {global_config.bot.nickname} 对话了!", + "timestamp": time.time(), + }) + + while True: + data = await websocket.receive_json() + + if data.get("type") == "message": + content = data.get("content", "").strip() + if not content: + continue + + # 用户可以更新昵称 + current_user_name = data.get("user_name", user_name) + + message_id = str(uuid.uuid4()) + timestamp = time.time() + + # 广播用户消息给所有连接(包括发送者) + # 注意:用户消息会在 chat_bot.message_process 中自动保存到数据库 + await chat_manager.broadcast({ + "type": "user_message", + "content": content, + "message_id": message_id, + "timestamp": timestamp, + "sender": { + "name": current_user_name, + "user_id": user_id, + "is_bot": False, + } + }) + + # 创建麦麦消息格式 + message_data = create_message_data( + content=content, + user_id=user_id, + user_name=current_user_name, + message_id=message_id, + is_at_bot=True, + ) + + try: + # 显示正在输入状态 + await chat_manager.broadcast({ + "type": "typing", + "is_typing": True, + }) + + # 调用麦麦的消息处理 + await chat_bot.message_process(message_data) + + except Exception as e: + logger.error(f"处理消息时出错: {e}") + await chat_manager.send_message(session_id, { + "type": "error", + "content": f"处理消息时出错: {str(e)}", + "timestamp": time.time(), + }) + finally: + await chat_manager.broadcast({ + "type": "typing", + "is_typing": False, + }) + + elif data.get("type") == "ping": + await chat_manager.send_message(session_id, { + "type": "pong", + "timestamp": time.time(), + }) + + elif data.get("type") == "update_nickname": + # 允许用户更新昵称 + if new_name := data.get("user_name", "").strip(): + current_user_name = new_name + await chat_manager.send_message(session_id, { + "type": "nickname_updated", + "user_name": current_user_name, + "timestamp": time.time(), + }) + + except WebSocketDisconnect: + logger.info(f"WebSocket 断开: session={session_id}, user={user_id}") + except Exception as e: + logger.error(f"WebSocket 错误: {e}") + finally: + chat_manager.disconnect(session_id, user_id) + + +@router.get("/info") +async def get_chat_info(): + """获取聊天室信息""" + return { + "bot_name": global_config.bot.nickname, + "platform": WEBUI_CHAT_PLATFORM, + "group_id": WEBUI_CHAT_GROUP_ID, + "active_sessions": len(chat_manager.active_connections), + } + + +def get_webui_chat_broadcaster() -> tuple: + """获取 WebUI 聊天广播器,供外部模块使用 + + Returns: + (chat_manager, WEBUI_CHAT_PLATFORM) 元组 + """ + return (chat_manager, WEBUI_CHAT_PLATFORM) diff --git a/src/webui/webui_server.py b/src/webui/webui_server.py index ac95e80c..2c0a4c48 100644 --- a/src/webui/webui_server.py +++ b/src/webui/webui_server.py @@ -92,11 +92,16 @@ class WebUIServer: logger.info("开始导入 knowledge_routes...") from src.webui.knowledge_routes import router as knowledge_router logger.info("knowledge_routes 导入成功") + + # 导入本地聊天室路由 + from src.webui.chat_routes import router as chat_router + logger.info("chat_routes 导入成功") # 注册路由 self.app.include_router(webui_router) self.app.include_router(logs_router) self.app.include_router(knowledge_router) + self.app.include_router(chat_router) logger.info(f"knowledge_router 路由前缀: {knowledge_router.prefix}") logger.info("✅ WebUI API 路由已注册") @@ -116,6 +121,8 @@ class WebUIServer: logger.info("🌐 WebUI 服务器启动中...") logger.info(f"🌐 访问地址: http://{self.host}:{self.port}") + if self.host == "0.0.0.0": + logger.info(f"本机访问请使用 http://localhost:{self.port}") try: await self._server.serve() From 3d1f26ae1b162551558f6652ce8f5aa49a8e2b88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Fri, 28 Nov 2025 14:18:51 +0800 Subject: [PATCH 07/61] WebUI cf0eb78ac449cbbcda285bc83b96c816bec627cf --- ...{charts-0z-hIQr-.js => charts-Cdq_Jxe7.js} | 2 +- webui/dist/assets/icons-DMlhlQyz.js | 1 - webui/dist/assets/icons-wa0wi-vG.js | 1 + webui/dist/assets/index-Bzl8QBn9.css | 1 - .../{index--0Z4-njD.js => index-JgAL2W8G.js} | 152 +++++++++--------- webui/dist/assets/index-Rqzi5c1P.css | 1 + ...{router-SinpzM5S.js => router-DQNkr8RI.js} | 2 +- ...ndor-BLBhIcJ8.js => ui-vendor-BgfqR_Xz.js} | 2 +- webui/dist/index.html | 12 +- 9 files changed, 87 insertions(+), 87 deletions(-) rename webui/dist/assets/{charts-0z-hIQr-.js => charts-Cdq_Jxe7.js} (99%) delete mode 100644 webui/dist/assets/icons-DMlhlQyz.js create mode 100644 webui/dist/assets/icons-wa0wi-vG.js delete mode 100644 webui/dist/assets/index-Bzl8QBn9.css rename webui/dist/assets/{index--0Z4-njD.js => index-JgAL2W8G.js} (62%) create mode 100644 webui/dist/assets/index-Rqzi5c1P.css rename webui/dist/assets/{router-SinpzM5S.js => router-DQNkr8RI.js} (99%) rename webui/dist/assets/{ui-vendor-BLBhIcJ8.js => ui-vendor-BgfqR_Xz.js} (99%) diff --git a/webui/dist/assets/charts-0z-hIQr-.js b/webui/dist/assets/charts-Cdq_Jxe7.js similarity index 99% rename from webui/dist/assets/charts-0z-hIQr-.js rename to webui/dist/assets/charts-Cdq_Jxe7.js index 1b0cb22d..2a290019 100644 --- a/webui/dist/assets/charts-0z-hIQr-.js +++ b/webui/dist/assets/charts-Cdq_Jxe7.js @@ -1,4 +1,4 @@ -import{r as N,R as S,i as or}from"./router-SinpzM5S.js";import{c as Ai,g as ce}from"./react-vendor-Dtc2IqVY.js";function wx(e){var t,r,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var i=e.length;for(t=0;t-1}return ru=t,ru}var nu,wd;function h1(){if(wd)return nu;wd=1;var e=La();function t(r,n){var i=this.__data__,a=e(i,r);return a<0?(++this.size,i.push([r,n])):i[a][1]=n,this}return nu=t,nu}var iu,Od;function Ba(){if(Od)return iu;Od=1;var e=c1(),t=s1(),r=l1(),n=f1(),i=h1();function a(o){var u=-1,c=o==null?0:o.length;for(this.clear();++u0?1:-1},er=function(t){return ur(t)&&t.indexOf("%")===t.length-1},q=function(t){return R1(t)&&!gi(t)},D1=function(t){return J(t)},Se=function(t){return q(t)||ur(t)},N1=0,un=function(t){var r=++N1;return"".concat(t||"").concat(r)},Le=function(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(!q(t)&&!ur(t))return n;var a;if(er(t)){var o=t.indexOf("%");a=r*parseFloat(t.slice(0,o))/100}else a=+t;return gi(a)&&(a=n),i&&a>r&&(a=r),a},qt=function(t){if(!t)return null;var r=Object.keys(t);return r&&r.length?t[r[0]]:null},q1=function(t){if(!Array.isArray(t))return!1;for(var r=t.length,n={},i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function K1(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function nf(e){"@babel/helpers - typeof";return nf=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},nf(e)}var Yd={click:"onClick",mousedown:"onMouseDown",mouseup:"onMouseUp",mouseover:"onMouseOver",mousemove:"onMouseMove",mouseout:"onMouseOut",mouseenter:"onMouseEnter",mouseleave:"onMouseLeave",touchcancel:"onTouchCancel",touchend:"onTouchEnd",touchmove:"onTouchMove",touchstart:"onTouchStart",contextmenu:"onContextMenu",dblclick:"onDoubleClick"},Et=function(t){return typeof t=="string"?t:t?t.displayName||t.name||"Component":""},Zd=null,Mu=null,Ih=function e(t){if(t===Zd&&Array.isArray(Mu))return Mu;var r=[];return N.Children.forEach(t,function(n){J(n)||($1.isFragment(n)?r=r.concat(e(n.props.children)):r.push(n))}),Mu=r,Zd=t,r};function Ye(e,t){var r=[],n=[];return Array.isArray(t)?n=t.map(function(i){return Et(i)}):n=[Et(t)],Ih(e).forEach(function(i){var a=Xe(i,"type.displayName")||Xe(i,"type.name");n.indexOf(a)!==-1&&r.push(i)}),r}function He(e,t){var r=Ye(e,t);return r&&r[0]}var Jd=function(t){if(!t||!t.props)return!1;var r=t.props,n=r.width,i=r.height;return!(!q(n)||n<=0||!q(i)||i<=0)},H1=["a","altGlyph","altGlyphDef","altGlyphItem","animate","animateColor","animateMotion","animateTransform","circle","clipPath","color-profile","cursor","defs","desc","ellipse","feBlend","feColormatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","font","font-face","font-face-format","font-face-name","font-face-url","foreignObject","g","glyph","glyphRef","hkern","image","line","lineGradient","marker","mask","metadata","missing-glyph","mpath","path","pattern","polygon","polyline","radialGradient","rect","script","set","stop","style","svg","switch","symbol","text","textPath","title","tref","tspan","use","view","vkern"],G1=function(t){return t&&t.type&&ur(t.type)&&H1.indexOf(t.type)>=0},V1=function(t){return t&&nf(t)==="object"&&"clipDot"in t},X1=function(t,r,n,i){var a,o=(a=ju?.[i])!==null&&a!==void 0?a:[];return r.startsWith("data-")||!X(t)&&(i&&o.includes(r)||F1.includes(r))||n&&$h.includes(r)},K=function(t,r,n){if(!t||typeof t=="function"||typeof t=="boolean")return null;var i=t;if(N.isValidElement(t)&&(i=t.props),!on(i))return null;var a={};return Object.keys(i).forEach(function(o){var u;X1((u=i)===null||u===void 0?void 0:u[o],o,r,n)&&(a[o]=i[o])}),a},af=function e(t,r){if(t===r)return!0;var n=N.Children.count(t);if(n!==N.Children.count(r))return!1;if(n===0)return!0;if(n===1)return Qd(Array.isArray(t)?t[0]:t,Array.isArray(r)?r[0]:r);for(var i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function eA(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function uf(e){var t=e.children,r=e.width,n=e.height,i=e.viewBox,a=e.className,o=e.style,u=e.title,c=e.desc,s=Q1(e,J1),f=i||{width:r,height:n,x:0,y:0},l=te("recharts-surface",a);return S.createElement("svg",of({},K(s,!0,"svg"),{className:l,width:r,height:n,style:o,viewBox:"".concat(f.x," ").concat(f.y," ").concat(f.width," ").concat(f.height)}),S.createElement("title",null,u),S.createElement("desc",null,c),t)}var tA=["children","className"];function cf(){return cf=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function nA(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}var ne=S.forwardRef(function(e,t){var r=e.children,n=e.className,i=rA(e,tA),a=te("recharts-layer",n);return S.createElement("g",cf({className:a},K(i,!0),{ref:t}),r)}),st=function(t,r){for(var n=arguments.length,i=new Array(n>2?n-2:0),a=2;aa?0:a+r),n=n>a?a:n,n<0&&(n+=a),a=r>n?0:n-r>>>0,r>>>=0;for(var o=Array(a);++i=a?r:e(r,n,i)}return Iu=t,Iu}var Cu,nv;function jx(){if(nv)return Cu;nv=1;var e="\\ud800-\\udfff",t="\\u0300-\\u036f",r="\\ufe20-\\ufe2f",n="\\u20d0-\\u20ff",i=t+r+n,a="\\ufe0e\\ufe0f",o="\\u200d",u=RegExp("["+o+e+i+a+"]");function c(s){return u.test(s)}return Cu=c,Cu}var ku,iv;function oA(){if(iv)return ku;iv=1;function e(t){return t.split("")}return ku=e,ku}var Ru,av;function uA(){if(av)return Ru;av=1;var e="\\ud800-\\udfff",t="\\u0300-\\u036f",r="\\ufe20-\\ufe2f",n="\\u20d0-\\u20ff",i=t+r+n,a="\\ufe0e\\ufe0f",o="["+e+"]",u="["+i+"]",c="\\ud83c[\\udffb-\\udfff]",s="(?:"+u+"|"+c+")",f="[^"+e+"]",l="(?:\\ud83c[\\udde6-\\uddff]){2}",h="[\\ud800-\\udbff][\\udc00-\\udfff]",p="\\u200d",y=s+"?",v="["+a+"]?",d="(?:"+p+"(?:"+[f,l,h].join("|")+")"+v+y+")*",m=v+y+d,x="(?:"+[f+u+"?",u,l,h,o].join("|")+")",w=RegExp(c+"(?="+c+")|"+x+m,"g");function O(g){return g.match(w)||[]}return Ru=O,Ru}var Du,ov;function cA(){if(ov)return Du;ov=1;var e=oA(),t=jx(),r=uA();function n(i){return t(i)?r(i):e(i)}return Du=n,Du}var Nu,uv;function sA(){if(uv)return Nu;uv=1;var e=aA(),t=jx(),r=cA(),n=Sx();function i(a){return function(o){o=n(o);var u=t(o)?r(o):void 0,c=u?u[0]:o.charAt(0),s=u?e(u,1).join(""):o.slice(1);return c[a]()+s}}return Nu=i,Nu}var qu,cv;function lA(){if(cv)return qu;cv=1;var e=sA(),t=e("toUpperCase");return qu=t,qu}var fA=lA();const Wa=ce(fA);function he(e){return function(){return e}}const Mx=Math.cos,Ui=Math.sin,pt=Math.sqrt,Wi=Math.PI,za=2*Wi,sf=Math.PI,lf=2*sf,Zt=1e-6,hA=lf-Zt;function $x(e){this._+=e[0];for(let t=1,r=e.length;t=0))throw new Error(`invalid digits: ${e}`);if(t>15)return $x;const r=10**t;return function(n){this._+=n[0];for(let i=1,a=n.length;iZt)if(!(Math.abs(l*c-s*f)>Zt)||!a)this._append`L${this._x1=t},${this._y1=r}`;else{let p=n-o,y=i-u,v=c*c+s*s,d=p*p+y*y,m=Math.sqrt(v),x=Math.sqrt(h),w=a*Math.tan((sf-Math.acos((v+h-d)/(2*m*x)))/2),O=w/x,g=w/m;Math.abs(O-1)>Zt&&this._append`L${t+O*f},${r+O*l}`,this._append`A${a},${a},0,0,${+(l*p>f*y)},${this._x1=t+g*c},${this._y1=r+g*s}`}}arc(t,r,n,i,a,o){if(t=+t,r=+r,n=+n,o=!!o,n<0)throw new Error(`negative radius: ${n}`);let u=n*Math.cos(i),c=n*Math.sin(i),s=t+u,f=r+c,l=1^o,h=o?i-a:a-i;this._x1===null?this._append`M${s},${f}`:(Math.abs(this._x1-s)>Zt||Math.abs(this._y1-f)>Zt)&&this._append`L${s},${f}`,n&&(h<0&&(h=h%lf+lf),h>hA?this._append`A${n},${n},0,1,${l},${t-u},${r-c}A${n},${n},0,1,${l},${this._x1=s},${this._y1=f}`:h>Zt&&this._append`A${n},${n},0,${+(h>=sf)},${l},${this._x1=t+n*Math.cos(a)},${this._y1=r+n*Math.sin(a)}`)}rect(t,r,n,i){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}}function Ch(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{const n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);t=n}return e},()=>new dA(t)}function kh(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function Ix(e){this._context=e}Ix.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function Ka(e){return new Ix(e)}function Cx(e){return e[0]}function kx(e){return e[1]}function Rx(e,t){var r=he(!0),n=null,i=Ka,a=null,o=Ch(u);e=typeof e=="function"?e:e===void 0?Cx:he(e),t=typeof t=="function"?t:t===void 0?kx:he(t);function u(c){var s,f=(c=kh(c)).length,l,h=!1,p;for(n==null&&(a=i(p=o())),s=0;s<=f;++s)!(s=p;--y)u.point(w[y],O[y]);u.lineEnd(),u.areaEnd()}m&&(w[h]=+e(d,h,l),O[h]=+t(d,h,l),u.point(n?+n(d,h,l):w[h],r?+r(d,h,l):O[h]))}if(x)return u=null,x+""||null}function f(){return Rx().defined(i).curve(o).context(a)}return s.x=function(l){return arguments.length?(e=typeof l=="function"?l:he(+l),n=null,s):e},s.x0=function(l){return arguments.length?(e=typeof l=="function"?l:he(+l),s):e},s.x1=function(l){return arguments.length?(n=l==null?null:typeof l=="function"?l:he(+l),s):n},s.y=function(l){return arguments.length?(t=typeof l=="function"?l:he(+l),r=null,s):t},s.y0=function(l){return arguments.length?(t=typeof l=="function"?l:he(+l),s):t},s.y1=function(l){return arguments.length?(r=l==null?null:typeof l=="function"?l:he(+l),s):r},s.lineX0=s.lineY0=function(){return f().x(e).y(t)},s.lineY1=function(){return f().x(e).y(r)},s.lineX1=function(){return f().x(n).y(t)},s.defined=function(l){return arguments.length?(i=typeof l=="function"?l:he(!!l),s):i},s.curve=function(l){return arguments.length?(o=l,a!=null&&(u=o(a)),s):o},s.context=function(l){return arguments.length?(l==null?a=u=null:u=o(a=l),s):a},s}class Dx{constructor(t,r){this._context=t,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(t,r){switch(t=+t,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(t,r):this._context.moveTo(t,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,r,t,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,t,this._y0,t,r);break}}this._x0=t,this._y0=r}}function vA(e){return new Dx(e,!0)}function yA(e){return new Dx(e,!1)}const Rh={draw(e,t){const r=pt(t/Wi);e.moveTo(r,0),e.arc(0,0,r,0,za)}},gA={draw(e,t){const r=pt(t/5)/2;e.moveTo(-3*r,-r),e.lineTo(-r,-r),e.lineTo(-r,-3*r),e.lineTo(r,-3*r),e.lineTo(r,-r),e.lineTo(3*r,-r),e.lineTo(3*r,r),e.lineTo(r,r),e.lineTo(r,3*r),e.lineTo(-r,3*r),e.lineTo(-r,r),e.lineTo(-3*r,r),e.closePath()}},Nx=pt(1/3),mA=Nx*2,bA={draw(e,t){const r=pt(t/mA),n=r*Nx;e.moveTo(0,-r),e.lineTo(n,0),e.lineTo(0,r),e.lineTo(-n,0),e.closePath()}},xA={draw(e,t){const r=pt(t),n=-r/2;e.rect(n,n,r,r)}},wA=.8908130915292852,qx=Ui(Wi/10)/Ui(7*Wi/10),OA=Ui(za/10)*qx,_A=-Mx(za/10)*qx,AA={draw(e,t){const r=pt(t*wA),n=OA*r,i=_A*r;e.moveTo(0,-r),e.lineTo(n,i);for(let a=1;a<5;++a){const o=za*a/5,u=Mx(o),c=Ui(o);e.lineTo(c*r,-u*r),e.lineTo(u*n-c*i,c*n+u*i)}e.closePath()}},Lu=pt(3),SA={draw(e,t){const r=-pt(t/(Lu*3));e.moveTo(0,r*2),e.lineTo(-Lu*r,-r),e.lineTo(Lu*r,-r),e.closePath()}},Je=-.5,Qe=pt(3)/2,ff=1/pt(12),PA=(ff/2+1)*3,TA={draw(e,t){const r=pt(t/PA),n=r/2,i=r*ff,a=n,o=r*ff+r,u=-a,c=o;e.moveTo(n,i),e.lineTo(a,o),e.lineTo(u,c),e.lineTo(Je*n-Qe*i,Qe*n+Je*i),e.lineTo(Je*a-Qe*o,Qe*a+Je*o),e.lineTo(Je*u-Qe*c,Qe*u+Je*c),e.lineTo(Je*n+Qe*i,Je*i-Qe*n),e.lineTo(Je*a+Qe*o,Je*o-Qe*a),e.lineTo(Je*u+Qe*c,Je*c-Qe*u),e.closePath()}};function EA(e,t){let r=null,n=Ch(i);e=typeof e=="function"?e:he(e||Rh),t=typeof t=="function"?t:he(t===void 0?64:+t);function i(){let a;if(r||(r=a=n()),e.apply(this,arguments).draw(r,+t.apply(this,arguments)),a)return r=null,a+""||null}return i.type=function(a){return arguments.length?(e=typeof a=="function"?a:he(a),i):e},i.size=function(a){return arguments.length?(t=typeof a=="function"?a:he(+a),i):t},i.context=function(a){return arguments.length?(r=a??null,i):r},i}function zi(){}function Ki(e,t,r){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+r)/6)}function Lx(e){this._context=e}Lx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Ki(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Ki(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function jA(e){return new Lx(e)}function Bx(e){this._context=e}Bx.prototype={areaStart:zi,areaEnd:zi,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:Ki(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function MA(e){return new Bx(e)}function Fx(e){this._context=e}Fx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+e)/6,n=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:Ki(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function $A(e){return new Fx(e)}function Ux(e){this._context=e}Ux.prototype={areaStart:zi,areaEnd:zi,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};function IA(e){return new Ux(e)}function sv(e){return e<0?-1:1}function lv(e,t,r){var n=e._x1-e._x0,i=t-e._x1,a=(e._y1-e._y0)/(n||i<0&&-0),o=(r-e._y1)/(i||n<0&&-0),u=(a*i+o*n)/(n+i);return(sv(a)+sv(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(u))||0}function fv(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function Bu(e,t,r){var n=e._x0,i=e._y0,a=e._x1,o=e._y1,u=(a-n)/3;e._context.bezierCurveTo(n+u,i+u*t,a-u,o-u*r,a,o)}function Hi(e){this._context=e}Hi.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Bu(this,this._t0,fv(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,Bu(this,fv(this,r=lv(this,e,t)),r);break;default:Bu(this,this._t0,r=lv(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};function Wx(e){this._context=new zx(e)}(Wx.prototype=Object.create(Hi.prototype)).point=function(e,t){Hi.prototype.point.call(this,t,e)};function zx(e){this._context=e}zx.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,r,n,i,a){this._context.bezierCurveTo(t,e,n,r,a,i)}};function CA(e){return new Hi(e)}function kA(e){return new Wx(e)}function Kx(e){this._context=e}Kx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,r=e.length;if(r)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),r===2)this._context.lineTo(e[1],t[1]);else for(var n=hv(e),i=hv(t),a=0,o=1;o=0;--t)i[t]=(o[t]-i[t+1])/a[t];for(a[r-1]=(e[r]+i[r-1])/2,t=0;t=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}break}}this._x=e,this._y=t}};function DA(e){return new Ha(e,.5)}function NA(e){return new Ha(e,0)}function qA(e){return new Ha(e,1)}function Ir(e,t){if((o=e.length)>1)for(var r=1,n,i,a=e[t[0]],o,u=a.length;r=0;)r[t]=t;return r}function LA(e,t){return e[t]}function BA(e){const t=[];return t.key=e,t}function FA(){var e=he([]),t=hf,r=Ir,n=LA;function i(a){var o=Array.from(e.apply(this,arguments),BA),u,c=o.length,s=-1,f;for(const l of a)for(u=0,++s;u0){for(var r,n,i=0,a=e[0].length,o;i0){for(var r=0,n=e[t[0]],i,a=n.length;r0)||!((a=(i=e[t[0]]).length)>0))){for(var r=0,n=1,i,a,o;n=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function YA(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}var Hx={symbolCircle:Rh,symbolCross:gA,symbolDiamond:bA,symbolSquare:xA,symbolStar:AA,symbolTriangle:SA,symbolWye:TA},ZA=Math.PI/180,JA=function(t){var r="symbol".concat(Wa(t));return Hx[r]||Rh},QA=function(t,r,n){if(r==="area")return t;switch(n){case"cross":return 5*t*t/9;case"diamond":return .5*t*t/Math.sqrt(3);case"square":return t*t;case"star":{var i=18*ZA;return 1.25*t*t*(Math.tan(i)-Math.tan(i*2)*Math.pow(Math.tan(i),2))}case"triangle":return Math.sqrt(3)*t*t/4;case"wye":return(21-10*Math.sqrt(3))*t*t/8;default:return Math.PI*t*t/4}},eS=function(t,r){Hx["symbol".concat(Wa(t))]=r},Dh=function(t){var r=t.type,n=r===void 0?"circle":r,i=t.size,a=i===void 0?64:i,o=t.sizeType,u=o===void 0?"area":o,c=XA(t,KA),s=dv(dv({},c),{},{type:n,size:a,sizeType:u}),f=function(){var d=JA(n),m=EA().type(d).size(QA(a,u,n));return m()},l=s.className,h=s.cx,p=s.cy,y=K(s,!0);return h===+h&&p===+p&&a===+a?S.createElement("path",pf({},y,{className:te("recharts-symbols",l),transform:"translate(".concat(h,", ").concat(p,")"),d:f()})):null};Dh.registerSymbol=eS;function Cr(e){"@babel/helpers - typeof";return Cr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Cr(e)}function df(){return df=Object.assign?Object.assign.bind():function(e){for(var t=1;t-1}return ru=t,ru}var nu,wd;function h1(){if(wd)return nu;wd=1;var e=La();function t(r,n){var i=this.__data__,a=e(i,r);return a<0?(++this.size,i.push([r,n])):i[a][1]=n,this}return nu=t,nu}var iu,Od;function Ba(){if(Od)return iu;Od=1;var e=c1(),t=s1(),r=l1(),n=f1(),i=h1();function a(o){var u=-1,c=o==null?0:o.length;for(this.clear();++u0?1:-1},er=function(t){return ur(t)&&t.indexOf("%")===t.length-1},q=function(t){return R1(t)&&!gi(t)},D1=function(t){return J(t)},Se=function(t){return q(t)||ur(t)},N1=0,un=function(t){var r=++N1;return"".concat(t||"").concat(r)},Le=function(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(!q(t)&&!ur(t))return n;var a;if(er(t)){var o=t.indexOf("%");a=r*parseFloat(t.slice(0,o))/100}else a=+t;return gi(a)&&(a=n),i&&a>r&&(a=r),a},qt=function(t){if(!t)return null;var r=Object.keys(t);return r&&r.length?t[r[0]]:null},q1=function(t){if(!Array.isArray(t))return!1;for(var r=t.length,n={},i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function K1(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function nf(e){"@babel/helpers - typeof";return nf=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},nf(e)}var Yd={click:"onClick",mousedown:"onMouseDown",mouseup:"onMouseUp",mouseover:"onMouseOver",mousemove:"onMouseMove",mouseout:"onMouseOut",mouseenter:"onMouseEnter",mouseleave:"onMouseLeave",touchcancel:"onTouchCancel",touchend:"onTouchEnd",touchmove:"onTouchMove",touchstart:"onTouchStart",contextmenu:"onContextMenu",dblclick:"onDoubleClick"},Et=function(t){return typeof t=="string"?t:t?t.displayName||t.name||"Component":""},Zd=null,Mu=null,Ih=function e(t){if(t===Zd&&Array.isArray(Mu))return Mu;var r=[];return N.Children.forEach(t,function(n){J(n)||($1.isFragment(n)?r=r.concat(e(n.props.children)):r.push(n))}),Mu=r,Zd=t,r};function Ye(e,t){var r=[],n=[];return Array.isArray(t)?n=t.map(function(i){return Et(i)}):n=[Et(t)],Ih(e).forEach(function(i){var a=Xe(i,"type.displayName")||Xe(i,"type.name");n.indexOf(a)!==-1&&r.push(i)}),r}function He(e,t){var r=Ye(e,t);return r&&r[0]}var Jd=function(t){if(!t||!t.props)return!1;var r=t.props,n=r.width,i=r.height;return!(!q(n)||n<=0||!q(i)||i<=0)},H1=["a","altGlyph","altGlyphDef","altGlyphItem","animate","animateColor","animateMotion","animateTransform","circle","clipPath","color-profile","cursor","defs","desc","ellipse","feBlend","feColormatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","font","font-face","font-face-format","font-face-name","font-face-url","foreignObject","g","glyph","glyphRef","hkern","image","line","lineGradient","marker","mask","metadata","missing-glyph","mpath","path","pattern","polygon","polyline","radialGradient","rect","script","set","stop","style","svg","switch","symbol","text","textPath","title","tref","tspan","use","view","vkern"],G1=function(t){return t&&t.type&&ur(t.type)&&H1.indexOf(t.type)>=0},V1=function(t){return t&&nf(t)==="object"&&"clipDot"in t},X1=function(t,r,n,i){var a,o=(a=ju?.[i])!==null&&a!==void 0?a:[];return r.startsWith("data-")||!X(t)&&(i&&o.includes(r)||F1.includes(r))||n&&$h.includes(r)},K=function(t,r,n){if(!t||typeof t=="function"||typeof t=="boolean")return null;var i=t;if(N.isValidElement(t)&&(i=t.props),!on(i))return null;var a={};return Object.keys(i).forEach(function(o){var u;X1((u=i)===null||u===void 0?void 0:u[o],o,r,n)&&(a[o]=i[o])}),a},af=function e(t,r){if(t===r)return!0;var n=N.Children.count(t);if(n!==N.Children.count(r))return!1;if(n===0)return!0;if(n===1)return Qd(Array.isArray(t)?t[0]:t,Array.isArray(r)?r[0]:r);for(var i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function eA(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function uf(e){var t=e.children,r=e.width,n=e.height,i=e.viewBox,a=e.className,o=e.style,u=e.title,c=e.desc,s=Q1(e,J1),f=i||{width:r,height:n,x:0,y:0},l=te("recharts-surface",a);return S.createElement("svg",of({},K(s,!0,"svg"),{className:l,width:r,height:n,style:o,viewBox:"".concat(f.x," ").concat(f.y," ").concat(f.width," ").concat(f.height)}),S.createElement("title",null,u),S.createElement("desc",null,c),t)}var tA=["children","className"];function cf(){return cf=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function nA(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}var ne=S.forwardRef(function(e,t){var r=e.children,n=e.className,i=rA(e,tA),a=te("recharts-layer",n);return S.createElement("g",cf({className:a},K(i,!0),{ref:t}),r)}),st=function(t,r){for(var n=arguments.length,i=new Array(n>2?n-2:0),a=2;aa?0:a+r),n=n>a?a:n,n<0&&(n+=a),a=r>n?0:n-r>>>0,r>>>=0;for(var o=Array(a);++i=a?r:e(r,n,i)}return Iu=t,Iu}var Cu,nv;function jx(){if(nv)return Cu;nv=1;var e="\\ud800-\\udfff",t="\\u0300-\\u036f",r="\\ufe20-\\ufe2f",n="\\u20d0-\\u20ff",i=t+r+n,a="\\ufe0e\\ufe0f",o="\\u200d",u=RegExp("["+o+e+i+a+"]");function c(s){return u.test(s)}return Cu=c,Cu}var ku,iv;function oA(){if(iv)return ku;iv=1;function e(t){return t.split("")}return ku=e,ku}var Ru,av;function uA(){if(av)return Ru;av=1;var e="\\ud800-\\udfff",t="\\u0300-\\u036f",r="\\ufe20-\\ufe2f",n="\\u20d0-\\u20ff",i=t+r+n,a="\\ufe0e\\ufe0f",o="["+e+"]",u="["+i+"]",c="\\ud83c[\\udffb-\\udfff]",s="(?:"+u+"|"+c+")",f="[^"+e+"]",l="(?:\\ud83c[\\udde6-\\uddff]){2}",h="[\\ud800-\\udbff][\\udc00-\\udfff]",p="\\u200d",y=s+"?",v="["+a+"]?",d="(?:"+p+"(?:"+[f,l,h].join("|")+")"+v+y+")*",m=v+y+d,x="(?:"+[f+u+"?",u,l,h,o].join("|")+")",w=RegExp(c+"(?="+c+")|"+x+m,"g");function O(g){return g.match(w)||[]}return Ru=O,Ru}var Du,ov;function cA(){if(ov)return Du;ov=1;var e=oA(),t=jx(),r=uA();function n(i){return t(i)?r(i):e(i)}return Du=n,Du}var Nu,uv;function sA(){if(uv)return Nu;uv=1;var e=aA(),t=jx(),r=cA(),n=Sx();function i(a){return function(o){o=n(o);var u=t(o)?r(o):void 0,c=u?u[0]:o.charAt(0),s=u?e(u,1).join(""):o.slice(1);return c[a]()+s}}return Nu=i,Nu}var qu,cv;function lA(){if(cv)return qu;cv=1;var e=sA(),t=e("toUpperCase");return qu=t,qu}var fA=lA();const Wa=ce(fA);function he(e){return function(){return e}}const Mx=Math.cos,Ui=Math.sin,pt=Math.sqrt,Wi=Math.PI,za=2*Wi,sf=Math.PI,lf=2*sf,Zt=1e-6,hA=lf-Zt;function $x(e){this._+=e[0];for(let t=1,r=e.length;t=0))throw new Error(`invalid digits: ${e}`);if(t>15)return $x;const r=10**t;return function(n){this._+=n[0];for(let i=1,a=n.length;iZt)if(!(Math.abs(l*c-s*f)>Zt)||!a)this._append`L${this._x1=t},${this._y1=r}`;else{let p=n-o,y=i-u,v=c*c+s*s,d=p*p+y*y,m=Math.sqrt(v),x=Math.sqrt(h),w=a*Math.tan((sf-Math.acos((v+h-d)/(2*m*x)))/2),O=w/x,g=w/m;Math.abs(O-1)>Zt&&this._append`L${t+O*f},${r+O*l}`,this._append`A${a},${a},0,0,${+(l*p>f*y)},${this._x1=t+g*c},${this._y1=r+g*s}`}}arc(t,r,n,i,a,o){if(t=+t,r=+r,n=+n,o=!!o,n<0)throw new Error(`negative radius: ${n}`);let u=n*Math.cos(i),c=n*Math.sin(i),s=t+u,f=r+c,l=1^o,h=o?i-a:a-i;this._x1===null?this._append`M${s},${f}`:(Math.abs(this._x1-s)>Zt||Math.abs(this._y1-f)>Zt)&&this._append`L${s},${f}`,n&&(h<0&&(h=h%lf+lf),h>hA?this._append`A${n},${n},0,1,${l},${t-u},${r-c}A${n},${n},0,1,${l},${this._x1=s},${this._y1=f}`:h>Zt&&this._append`A${n},${n},0,${+(h>=sf)},${l},${this._x1=t+n*Math.cos(a)},${this._y1=r+n*Math.sin(a)}`)}rect(t,r,n,i){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}}function Ch(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{const n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);t=n}return e},()=>new dA(t)}function kh(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function Ix(e){this._context=e}Ix.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function Ka(e){return new Ix(e)}function Cx(e){return e[0]}function kx(e){return e[1]}function Rx(e,t){var r=he(!0),n=null,i=Ka,a=null,o=Ch(u);e=typeof e=="function"?e:e===void 0?Cx:he(e),t=typeof t=="function"?t:t===void 0?kx:he(t);function u(c){var s,f=(c=kh(c)).length,l,h=!1,p;for(n==null&&(a=i(p=o())),s=0;s<=f;++s)!(s=p;--y)u.point(w[y],O[y]);u.lineEnd(),u.areaEnd()}m&&(w[h]=+e(d,h,l),O[h]=+t(d,h,l),u.point(n?+n(d,h,l):w[h],r?+r(d,h,l):O[h]))}if(x)return u=null,x+""||null}function f(){return Rx().defined(i).curve(o).context(a)}return s.x=function(l){return arguments.length?(e=typeof l=="function"?l:he(+l),n=null,s):e},s.x0=function(l){return arguments.length?(e=typeof l=="function"?l:he(+l),s):e},s.x1=function(l){return arguments.length?(n=l==null?null:typeof l=="function"?l:he(+l),s):n},s.y=function(l){return arguments.length?(t=typeof l=="function"?l:he(+l),r=null,s):t},s.y0=function(l){return arguments.length?(t=typeof l=="function"?l:he(+l),s):t},s.y1=function(l){return arguments.length?(r=l==null?null:typeof l=="function"?l:he(+l),s):r},s.lineX0=s.lineY0=function(){return f().x(e).y(t)},s.lineY1=function(){return f().x(e).y(r)},s.lineX1=function(){return f().x(n).y(t)},s.defined=function(l){return arguments.length?(i=typeof l=="function"?l:he(!!l),s):i},s.curve=function(l){return arguments.length?(o=l,a!=null&&(u=o(a)),s):o},s.context=function(l){return arguments.length?(l==null?a=u=null:u=o(a=l),s):a},s}class Dx{constructor(t,r){this._context=t,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(t,r){switch(t=+t,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(t,r):this._context.moveTo(t,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,r,t,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,t,this._y0,t,r);break}}this._x0=t,this._y0=r}}function vA(e){return new Dx(e,!0)}function yA(e){return new Dx(e,!1)}const Rh={draw(e,t){const r=pt(t/Wi);e.moveTo(r,0),e.arc(0,0,r,0,za)}},gA={draw(e,t){const r=pt(t/5)/2;e.moveTo(-3*r,-r),e.lineTo(-r,-r),e.lineTo(-r,-3*r),e.lineTo(r,-3*r),e.lineTo(r,-r),e.lineTo(3*r,-r),e.lineTo(3*r,r),e.lineTo(r,r),e.lineTo(r,3*r),e.lineTo(-r,3*r),e.lineTo(-r,r),e.lineTo(-3*r,r),e.closePath()}},Nx=pt(1/3),mA=Nx*2,bA={draw(e,t){const r=pt(t/mA),n=r*Nx;e.moveTo(0,-r),e.lineTo(n,0),e.lineTo(0,r),e.lineTo(-n,0),e.closePath()}},xA={draw(e,t){const r=pt(t),n=-r/2;e.rect(n,n,r,r)}},wA=.8908130915292852,qx=Ui(Wi/10)/Ui(7*Wi/10),OA=Ui(za/10)*qx,_A=-Mx(za/10)*qx,AA={draw(e,t){const r=pt(t*wA),n=OA*r,i=_A*r;e.moveTo(0,-r),e.lineTo(n,i);for(let a=1;a<5;++a){const o=za*a/5,u=Mx(o),c=Ui(o);e.lineTo(c*r,-u*r),e.lineTo(u*n-c*i,c*n+u*i)}e.closePath()}},Lu=pt(3),SA={draw(e,t){const r=-pt(t/(Lu*3));e.moveTo(0,r*2),e.lineTo(-Lu*r,-r),e.lineTo(Lu*r,-r),e.closePath()}},Je=-.5,Qe=pt(3)/2,ff=1/pt(12),PA=(ff/2+1)*3,TA={draw(e,t){const r=pt(t/PA),n=r/2,i=r*ff,a=n,o=r*ff+r,u=-a,c=o;e.moveTo(n,i),e.lineTo(a,o),e.lineTo(u,c),e.lineTo(Je*n-Qe*i,Qe*n+Je*i),e.lineTo(Je*a-Qe*o,Qe*a+Je*o),e.lineTo(Je*u-Qe*c,Qe*u+Je*c),e.lineTo(Je*n+Qe*i,Je*i-Qe*n),e.lineTo(Je*a+Qe*o,Je*o-Qe*a),e.lineTo(Je*u+Qe*c,Je*c-Qe*u),e.closePath()}};function EA(e,t){let r=null,n=Ch(i);e=typeof e=="function"?e:he(e||Rh),t=typeof t=="function"?t:he(t===void 0?64:+t);function i(){let a;if(r||(r=a=n()),e.apply(this,arguments).draw(r,+t.apply(this,arguments)),a)return r=null,a+""||null}return i.type=function(a){return arguments.length?(e=typeof a=="function"?a:he(a),i):e},i.size=function(a){return arguments.length?(t=typeof a=="function"?a:he(+a),i):t},i.context=function(a){return arguments.length?(r=a??null,i):r},i}function zi(){}function Ki(e,t,r){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+r)/6)}function Lx(e){this._context=e}Lx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Ki(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Ki(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function jA(e){return new Lx(e)}function Bx(e){this._context=e}Bx.prototype={areaStart:zi,areaEnd:zi,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:Ki(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function MA(e){return new Bx(e)}function Fx(e){this._context=e}Fx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+e)/6,n=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:Ki(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function $A(e){return new Fx(e)}function Ux(e){this._context=e}Ux.prototype={areaStart:zi,areaEnd:zi,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};function IA(e){return new Ux(e)}function sv(e){return e<0?-1:1}function lv(e,t,r){var n=e._x1-e._x0,i=t-e._x1,a=(e._y1-e._y0)/(n||i<0&&-0),o=(r-e._y1)/(i||n<0&&-0),u=(a*i+o*n)/(n+i);return(sv(a)+sv(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(u))||0}function fv(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function Bu(e,t,r){var n=e._x0,i=e._y0,a=e._x1,o=e._y1,u=(a-n)/3;e._context.bezierCurveTo(n+u,i+u*t,a-u,o-u*r,a,o)}function Hi(e){this._context=e}Hi.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Bu(this,this._t0,fv(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,Bu(this,fv(this,r=lv(this,e,t)),r);break;default:Bu(this,this._t0,r=lv(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};function Wx(e){this._context=new zx(e)}(Wx.prototype=Object.create(Hi.prototype)).point=function(e,t){Hi.prototype.point.call(this,t,e)};function zx(e){this._context=e}zx.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,r,n,i,a){this._context.bezierCurveTo(t,e,n,r,a,i)}};function CA(e){return new Hi(e)}function kA(e){return new Wx(e)}function Kx(e){this._context=e}Kx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,r=e.length;if(r)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),r===2)this._context.lineTo(e[1],t[1]);else for(var n=hv(e),i=hv(t),a=0,o=1;o=0;--t)i[t]=(o[t]-i[t+1])/a[t];for(a[r-1]=(e[r]+i[r-1])/2,t=0;t=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}break}}this._x=e,this._y=t}};function DA(e){return new Ha(e,.5)}function NA(e){return new Ha(e,0)}function qA(e){return new Ha(e,1)}function Ir(e,t){if((o=e.length)>1)for(var r=1,n,i,a=e[t[0]],o,u=a.length;r=0;)r[t]=t;return r}function LA(e,t){return e[t]}function BA(e){const t=[];return t.key=e,t}function FA(){var e=he([]),t=hf,r=Ir,n=LA;function i(a){var o=Array.from(e.apply(this,arguments),BA),u,c=o.length,s=-1,f;for(const l of a)for(u=0,++s;u0){for(var r,n,i=0,a=e[0].length,o;i0){for(var r=0,n=e[t[0]],i,a=n.length;r0)||!((a=(i=e[t[0]]).length)>0))){for(var r=0,n=1,i,a,o;n=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function YA(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}var Hx={symbolCircle:Rh,symbolCross:gA,symbolDiamond:bA,symbolSquare:xA,symbolStar:AA,symbolTriangle:SA,symbolWye:TA},ZA=Math.PI/180,JA=function(t){var r="symbol".concat(Wa(t));return Hx[r]||Rh},QA=function(t,r,n){if(r==="area")return t;switch(n){case"cross":return 5*t*t/9;case"diamond":return .5*t*t/Math.sqrt(3);case"square":return t*t;case"star":{var i=18*ZA;return 1.25*t*t*(Math.tan(i)-Math.tan(i*2)*Math.pow(Math.tan(i),2))}case"triangle":return Math.sqrt(3)*t*t/4;case"wye":return(21-10*Math.sqrt(3))*t*t/8;default:return Math.PI*t*t/4}},eS=function(t,r){Hx["symbol".concat(Wa(t))]=r},Dh=function(t){var r=t.type,n=r===void 0?"circle":r,i=t.size,a=i===void 0?64:i,o=t.sizeType,u=o===void 0?"area":o,c=XA(t,KA),s=dv(dv({},c),{},{type:n,size:a,sizeType:u}),f=function(){var d=JA(n),m=EA().type(d).size(QA(a,u,n));return m()},l=s.className,h=s.cx,p=s.cy,y=K(s,!0);return h===+h&&p===+p&&a===+a?S.createElement("path",pf({},y,{className:te("recharts-symbols",l),transform:"translate(".concat(h,", ").concat(p,")"),d:f()})):null};Dh.registerSymbol=eS;function Cr(e){"@babel/helpers - typeof";return Cr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Cr(e)}function df(){return df=Object.assign?Object.assign.bind():function(e){for(var t=1;t`);var x=p.inactive?s:p.color;return S.createElement("li",df({className:d,style:l,key:"legend-item-".concat(y)},cr(n.props,p,y)),S.createElement(uf,{width:o,height:o,viewBox:f,style:h},n.renderIcon(p)),S.createElement("span",{className:"recharts-legend-item-text",style:{color:x}},v?v(m,p,y):m))})}},{key:"render",value:function(){var n=this.props,i=n.payload,a=n.layout,o=n.align;if(!i||!i.length)return null;var u={padding:0,margin:0,textAlign:a==="horizontal"?o:"left"};return S.createElement("ul",{className:"recharts-default-legend",style:u},this.renderItems())}}])})(N.PureComponent);Nn(Nh,"displayName","Legend");Nn(Nh,"defaultProps",{iconSize:14,layout:"horizontal",align:"center",verticalAlign:"middle",inactiveColor:"#ccc"});var Fu,yv;function lS(){if(yv)return Fu;yv=1;var e=Ba();function t(){this.__data__=new e,this.size=0}return Fu=t,Fu}var Uu,gv;function fS(){if(gv)return Uu;gv=1;function e(t){var r=this.__data__,n=r.delete(t);return this.size=r.size,n}return Uu=e,Uu}var Wu,mv;function hS(){if(mv)return Wu;mv=1;function e(t){return this.__data__.get(t)}return Wu=e,Wu}var zu,bv;function pS(){if(bv)return zu;bv=1;function e(t){return this.__data__.has(t)}return zu=e,zu}var Ku,xv;function dS(){if(xv)return Ku;xv=1;var e=Ba(),t=Th(),r=Eh(),n=200;function i(a,o){var u=this.__data__;if(u instanceof e){var c=u.__data__;if(!t||c.lengthp))return!1;var v=l.get(o),d=l.get(u);if(v&&d)return v==u&&d==o;var m=-1,x=!0,w=c&i?new e:void 0;for(l.set(o,u),l.set(u,o);++m-1&&n%1==0&&n-1&&r%1==0&&r<=e}return pc=t,pc}var dc,zv;function _S(){if(zv)return dc;zv=1;var e=kt(),t=Kh(),r=ft(),n="[object Arguments]",i="[object Array]",a="[object Boolean]",o="[object Date]",u="[object Error]",c="[object Function]",s="[object Map]",f="[object Number]",l="[object Object]",h="[object RegExp]",p="[object Set]",y="[object String]",v="[object WeakMap]",d="[object ArrayBuffer]",m="[object DataView]",x="[object Float32Array]",w="[object Float64Array]",O="[object Int8Array]",g="[object Int16Array]",b="[object Int32Array]",_="[object Uint8Array]",A="[object Uint8ClampedArray]",P="[object Uint16Array]",j="[object Uint32Array]",T={};T[x]=T[w]=T[O]=T[g]=T[b]=T[_]=T[A]=T[P]=T[j]=!0,T[n]=T[i]=T[d]=T[a]=T[m]=T[o]=T[u]=T[c]=T[s]=T[f]=T[l]=T[h]=T[p]=T[y]=T[v]=!1;function E(M){return r(M)&&t(M.length)&&!!T[e(M)]}return dc=E,dc}var vc,Kv;function Ga(){if(Kv)return vc;Kv=1;function e(t){return function(r){return t(r)}}return vc=e,vc}var Pn={exports:{}};Pn.exports;var Hv;function Hh(){return Hv||(Hv=1,(function(e,t){var r=Ox(),n=t&&!t.nodeType&&t,i=n&&!0&&e&&!e.nodeType&&e,a=i&&i.exports===n,o=a&&r.process,u=(function(){try{var c=i&&i.require&&i.require("util").types;return c||o&&o.binding&&o.binding("util")}catch{}})();e.exports=u})(Pn,Pn.exports)),Pn.exports}var yc,Gv;function rw(){if(Gv)return yc;Gv=1;var e=_S(),t=Ga(),r=Hh(),n=r&&r.isTypedArray,i=n?t(n):e;return yc=i,yc}var gc,Vv;function nw(){if(Vv)return gc;Vv=1;var e=xS(),t=Uh(),r=Fe(),n=Wh(),i=zh(),a=rw(),o=Object.prototype,u=o.hasOwnProperty;function c(s,f){var l=r(s),h=!l&&t(s),p=!l&&!h&&n(s),y=!l&&!h&&!p&&a(s),v=l||h||p||y,d=v?e(s.length,String):[],m=d.length;for(var x in s)(f||u.call(s,x))&&!(v&&(x=="length"||p&&(x=="offset"||x=="parent")||y&&(x=="buffer"||x=="byteLength"||x=="byteOffset")||i(x,m)))&&d.push(x);return d}return gc=c,gc}var mc,Xv;function Gh(){if(Xv)return mc;Xv=1;var e=Object.prototype;function t(r){var n=r&&r.constructor,i=typeof n=="function"&&n.prototype||e;return r===i}return mc=t,mc}var bc,Yv;function iw(){if(Yv)return bc;Yv=1;function e(t,r){return function(n){return t(r(n))}}return bc=e,bc}var xc,Zv;function AS(){if(Zv)return xc;Zv=1;var e=iw(),t=e(Object.keys,Object);return xc=t,xc}var wc,Jv;function SS(){if(Jv)return wc;Jv=1;var e=Gh(),t=AS(),r=Object.prototype,n=r.hasOwnProperty;function i(a){if(!e(a))return t(a);var o=[];for(var u in Object(a))n.call(a,u)&&u!="constructor"&&o.push(u);return o}return wc=i,wc}var Oc,Qv;function cn(){if(Qv)return Oc;Qv=1;var e=Ph(),t=Kh();function r(n){return n!=null&&t(n.length)&&!e(n)}return Oc=r,Oc}var _c,ey;function sn(){if(ey)return _c;ey=1;var e=nw(),t=SS(),r=cn();function n(i){return r(i)?e(i):t(i)}return _c=n,_c}var Ac,ty;function aw(){if(ty)return Ac;ty=1;var e=ew(),t=Fh(),r=sn();function n(i){return e(i,r,t)}return Ac=n,Ac}var Sc,ry;function PS(){if(ry)return Sc;ry=1;var e=aw(),t=1,r=Object.prototype,n=r.hasOwnProperty;function i(a,o,u,c,s,f){var l=u&t,h=e(a),p=h.length,y=e(o),v=y.length;if(p!=v&&!l)return!1;for(var d=p;d--;){var m=h[d];if(!(l?m in o:n.call(o,m)))return!1}var x=f.get(a),w=f.get(o);if(x&&w)return x==o&&w==a;var O=!0;f.set(a,o),f.set(o,a);for(var g=l;++d-1}return Zc=t,Zc}var Jc,jy;function KS(){if(jy)return Jc;jy=1;function e(t,r,n){for(var i=-1,a=t==null?0:t.length;++i=o){var m=s?null:i(c);if(m)return a(m);y=!1,h=n,d=new e}else d=s?[]:v;e:for(;++l=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function oP(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function uP(e){return e.value}function cP(e,t){if(S.isValidElement(e))return S.cloneElement(e,t);if(typeof e=="function")return S.createElement(e,t);t.ref;var r=aP(t,ZS);return S.createElement(Nh,r)}var Ny=1,jr=(function(e){function t(){var r;JS(this,t);for(var n=arguments.length,i=new Array(n),a=0;aNy||Math.abs(i.height-this.lastBoundingBox.height)>Ny)&&(this.lastBoundingBox.width=i.width,this.lastBoundingBox.height=i.height,n&&n(i)):(this.lastBoundingBox.width!==-1||this.lastBoundingBox.height!==-1)&&(this.lastBoundingBox.width=-1,this.lastBoundingBox.height=-1,n&&n(null))}},{key:"getBBoxSnapshot",value:function(){return this.lastBoundingBox.width>=0&&this.lastBoundingBox.height>=0?Ot({},this.lastBoundingBox):{width:0,height:0}}},{key:"getDefaultPosition",value:function(n){var i=this.props,a=i.layout,o=i.align,u=i.verticalAlign,c=i.margin,s=i.chartWidth,f=i.chartHeight,l,h;if(!n||(n.left===void 0||n.left===null)&&(n.right===void 0||n.right===null))if(o==="center"&&a==="vertical"){var p=this.getBBoxSnapshot();l={left:((s||0)-p.width)/2}}else l=o==="right"?{right:c&&c.right||0}:{left:c&&c.left||0};if(!n||(n.top===void 0||n.top===null)&&(n.bottom===void 0||n.bottom===null))if(u==="middle"){var y=this.getBBoxSnapshot();h={top:((f||0)-y.height)/2}}else h=u==="bottom"?{bottom:c&&c.bottom||0}:{top:c&&c.top||0};return Ot(Ot({},l),h)}},{key:"render",value:function(){var n=this,i=this.props,a=i.content,o=i.width,u=i.height,c=i.wrapperStyle,s=i.payloadUniqBy,f=i.payload,l=Ot(Ot({position:"absolute",width:o||"auto",height:u||"auto"},this.getDefaultPosition(c)),c);return S.createElement("div",{className:"recharts-legend-wrapper",style:l,ref:function(p){n.wrapperNode=p}},cP(a,Ot(Ot({},this.props),{},{payload:lw(f,s,uP)})))}}],[{key:"getWithHeight",value:function(n,i){var a=Ot(Ot({},this.defaultProps),n.props),o=a.layout;return o==="vertical"&&q(n.props.height)?{height:n.props.height}:o==="horizontal"?{width:n.props.width||i}:null}}])})(N.PureComponent);Xa(jr,"displayName","Legend");Xa(jr,"defaultProps",{iconSize:14,layout:"horizontal",align:"center",verticalAlign:"bottom"});var ns,qy;function sP(){if(qy)return ns;qy=1;var e=nn(),t=Uh(),r=Fe(),n=e?e.isConcatSpreadable:void 0;function i(a){return r(a)||t(a)||!!(n&&a&&a[n])}return ns=i,ns}var is,Ly;function Xh(){if(Ly)return is;Ly=1;var e=Bh(),t=sP();function r(n,i,a,o,u){var c=-1,s=n.length;for(a||(a=t),u||(u=[]);++c0&&a(f)?i>1?r(f,i-1,a,o,u):e(u,f):o||(u[u.length]=f)}return u}return is=r,is}var as,By;function lP(){if(By)return as;By=1;function e(t){return function(r,n,i){for(var a=-1,o=Object(r),u=i(r),c=u.length;c--;){var s=u[t?c:++a];if(n(o[s],s,o)===!1)break}return r}}return as=e,as}var os,Fy;function fP(){if(Fy)return os;Fy=1;var e=lP(),t=e();return os=t,os}var us,Uy;function pw(){if(Uy)return us;Uy=1;var e=fP(),t=sn();function r(n,i){return n&&e(n,i,t)}return us=r,us}var cs,Wy;function hP(){if(Wy)return cs;Wy=1;var e=cn();function t(r,n){return function(i,a){if(i==null)return i;if(!e(i))return r(i,a);for(var o=i.length,u=n?o:-1,c=Object(i);(n?u--:++un||u&&c&&f&&!s&&!l||a&&c&&f||!i&&f||!o)return 1;if(!a&&!u&&!l&&r=s)return f;var l=i[a];return f*(l=="desc"?-1:1)}}return r.index-n.index}return ps=t,ps}var ds,Xy;function yP(){if(Xy)return ds;Xy=1;var e=jh(),t=Mh(),r=xt(),n=dw(),i=pP(),a=Ga(),o=vP(),u=ln(),c=Fe();function s(f,l,h){l.length?l=e(l,function(v){return c(v)?function(d){return t(d,v.length===1?v[0]:v)}:v}):l=[u];var p=-1;l=e(l,a(r));var y=n(f,function(v,d,m){var x=e(l,function(w){return w(v)});return{criteria:x,index:++p,value:v}});return i(y,function(v,d){return o(v,d,h)})}return ds=s,ds}var vs,Yy;function gP(){if(Yy)return vs;Yy=1;function e(t,r,n){switch(n.length){case 0:return t.call(r);case 1:return t.call(r,n[0]);case 2:return t.call(r,n[0],n[1]);case 3:return t.call(r,n[0],n[1],n[2])}return t.apply(r,n)}return vs=e,vs}var ys,Zy;function vw(){if(Zy)return ys;Zy=1;var e=gP(),t=Math.max;function r(n,i,a){return i=t(i===void 0?n.length-1:i,0),function(){for(var o=arguments,u=-1,c=t(o.length-i,0),s=Array(c);++u0){if(++a>=e)return arguments[0]}else a=0;return i.apply(void 0,arguments)}}return xs=n,xs}var ws,rg;function gw(){if(rg)return ws;rg=1;var e=bP(),t=xP(),r=t(e);return ws=r,ws}var Os,ng;function wP(){if(ng)return Os;ng=1;var e=ln(),t=vw(),r=gw();function n(i,a){return r(t(i,a,e),i+"")}return Os=n,Os}var _s,ig;function Ya(){if(ig)return _s;ig=1;var e=qa(),t=cn(),r=zh(),n=ht();function i(a,o,u){if(!n(u))return!1;var c=typeof o;return(c=="number"?t(u)&&r(o,u.length):c=="string"&&o in u)?e(u[o],a):!1}return _s=i,_s}var As,ag;function OP(){if(ag)return As;ag=1;var e=Xh(),t=yP(),r=wP(),n=Ya(),i=r(function(a,o){if(a==null)return[];var u=o.length;return u>1&&n(a,o[0],o[1])?o=[]:u>2&&n(o[0],o[1],o[2])&&(o=[o[0]]),t(a,e(o,1),[])});return As=i,As}var _P=OP();const Zh=ce(_P);function qn(e){"@babel/helpers - typeof";return qn=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},qn(e)}function gf(){return gf=Object.assign?Object.assign.bind():function(e){for(var t=1;tt.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),M=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,c,o)=>o?o.toUpperCase():c.toLowerCase()),d=t=>{const a=M(t);return a.charAt(0).toUpperCase()+a.slice(1)},r=(...t)=>t.filter((a,c,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===c).join(" ").trim(),v=t=>{for(const a in t)if(a.startsWith("aria-")||a==="role"||a==="title")return!0};var m={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const x=s.forwardRef(({color:t="currentColor",size:a=24,strokeWidth:c=2,absoluteStrokeWidth:o,className:y="",children:n,iconNode:k,...h},p)=>s.createElement("svg",{ref:p,...m,width:a,height:a,stroke:t,strokeWidth:o?Number(c)*24/Number(a):c,className:r("lucide",y),...!n&&!v(h)&&{"aria-hidden":"true"},...h},[...k.map(([i,l])=>s.createElement(i,l)),...Array.isArray(n)?n:[n]]));const e=(t,a)=>{const c=s.forwardRef(({className:o,...y},n)=>s.createElement(x,{ref:n,iconNode:a,className:r(`lucide-${_(d(t))}`,`lucide-${t}`,o),...y}));return c.displayName=d(t),c};const u=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],e2=e("activity",u);const g=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],a2=e("arrow-left",g);const f=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],t2=e("arrow-right",f);const $=[["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],c2=e("ban",$);const N=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],o2=e("book-open",N);const w=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],n2=e("bot",w);const z=[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]],s2=e("boxes",z);const b=[["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z",key:"uouzyp"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M21 21a4 4 0 0 0-3.81-4",key:"1b0z45"}],["path",{d:"M21 5a4 4 0 0 1-3.55 3.97",key:"5cxbf6"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M3 21a4 4 0 0 1 3.81-4",key:"1fjd4g"}],["path",{d:"M3 5a4 4 0 0 0 3.55 3.97",key:"1d7oge"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M9 7.13V6a3 3 0 1 1 6 0v1.13",key:"1vgav8"}]],y2=e("bug",b);const q=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],h2=e("calendar",q);const C=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],d2=e("chart-column",C);const j=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],r2=e("check",j);const V=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],k2=e("chevron-down",V);const A=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],p2=e("chevron-left",A);const H=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],i2=e("chevron-right",H);const L=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],l2=e("chevron-up",L);const S=[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]],_2=e("chevrons-left",S);const P=[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]],M2=e("chevrons-right",P);const U=[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]],v2=e("chevrons-up-down",U);const T=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],m2=e("circle-alert",T);const Z=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],x2=e("circle-check",Z);const R=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],u2=e("circle-question-mark",R);const B=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662",key:"154egf"}]],g2=e("circle-user",B);const E=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],f2=e("circle-x",E);const D=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],$2=e("circle",D);const F=[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],N2=e("clock",F);const O=[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]],w2=e("code-xml",O);const I=[["path",{d:"M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z",key:"1t2lqe"}],["path",{d:"M10 21.9V14L2.1 9.1",key:"o7czzq"}],["path",{d:"m10 14 11.9-6.9",key:"zm5e20"}],["path",{d:"M14 19.8v-8.1",key:"159ecu"}],["path",{d:"M18 17.5V9.4",key:"11uown"}]],z2=e("container",I);const G=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],b2=e("copy",G);const K=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],q2=e("database",K);const W=[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]],C2=e("dollar-sign",W);const X=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],j2=e("download",X);const Q=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],V2=e("external-link",Q);const J=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],A2=e("eye-off",J);const Y=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],H2=e("eye",Y);const e1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["circle",{cx:"11.5",cy:"14.5",r:"2.5",key:"1bq0ko"}],["path",{d:"M13.3 16.3 15 18",key:"2quom7"}]],L2=e("file-search",e1);const a1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],S2=e("file-text",a1);const t1=[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]],P2=e("folder-open",t1);const c1=[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]],U2=e("funnel",c1);const o1=[["path",{d:"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",key:"j76jl0"}],["path",{d:"M22 10v6",key:"1lu8f3"}],["path",{d:"M6 12.5V16a6 3 0 0 0 12 0v-3.5",key:"1r8lef"}]],T2=e("graduation-cap",o1);const n1=[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]],Z2=e("grip-vertical",n1);const s1=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],R2=e("hash",s1);const y1=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]],B2=e("house",y1);const h1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],E2=e("info",h1);const d1=[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]],D2=e("key",d1);const r1=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],F2=e("loader-circle",r1);const k1=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],O2=e("lock",k1);const p1=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],I2=e("log-out",p1);const i1=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],G2=e("menu",i1);const l1=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]],K2=e("message-square",l1);const _1=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]],W2=e("moon",_1);const M1=[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]],X2=e("network",M1);const v1=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],Q2=e("package",v1);const m1=[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]],J2=e("palette",m1);const x1=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]],Y2=e("panels-top-left",x1);const u1=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]],e0=e("pause",u1);const g1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],a0=e("pencil",g1);const f1=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],t0=e("play",f1);const $1=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],c0=e("plus",$1);const N1=[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]],o0=e("power",N1);const w1=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],n0=e("refresh-cw",w1);const z1=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],s0=e("rotate-ccw",z1);const b1=[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]],y0=e("rotate-cw",b1);const q1=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],h0=e("save",q1);const C1=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],d0=e("search",C1);const j1=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],r0=e("server",j1);const V1=[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]],k0=e("settings-2",V1);const A1=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],p0=e("settings",A1);const H1=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]],i0=e("shield",H1);const L1=[["path",{d:"M21 4v16",key:"7j8fe9"}],["path",{d:"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z",key:"zs4d6"}]],l0=e("skip-forward",L1);const S1=[["path",{d:"M10 8h4",key:"1sr2af"}],["path",{d:"M12 21v-9",key:"17s77i"}],["path",{d:"M12 8V3",key:"13r4qs"}],["path",{d:"M17 16h4",key:"h1uq16"}],["path",{d:"M19 12V3",key:"o1uvq1"}],["path",{d:"M19 21v-5",key:"qua636"}],["path",{d:"M3 14h4",key:"bcjad9"}],["path",{d:"M5 10V3",key:"cb8scm"}],["path",{d:"M5 21v-7",key:"1w1uti"}]],_0=e("sliders-vertical",S1);const P1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]],M0=e("smile",P1);const U1=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],v0=e("sparkles",U1);const T1=[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]],m0=e("square-pen",T1);const Z1=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],x0=e("star",Z1);const R1=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],u0=e("sun",R1);const B1=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],g0=e("terminal",B1);const E1=[["path",{d:"M7 10v12",key:"1qc93n"}],["path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z",key:"emmmcr"}]],f0=e("thumbs-up",E1);const D1=[["path",{d:"M17 14V2",key:"8ymqnk"}],["path",{d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z",key:"m61m77"}]],$0=e("thumbs-down",D1);const F1=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],N0=e("trash-2",F1);const O1=[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]],w0=e("trending-up",O1);const I1=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],z0=e("triangle-alert",I1);const G1=[["path",{d:"M12 4v16",key:"1654pz"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2",key:"e0r10z"}],["path",{d:"M9 20h6",key:"s66wpe"}]],b0=e("type",G1);const K1=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],q0=e("upload",K1);const W1=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],C0=e("user",W1);const X1=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],j0=e("users",X1);const Q1=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],V0=e("x",Q1);const J1=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],A0=e("zap",J1);export{M2 as $,e2 as A,n2 as B,N2 as C,C2 as D,A2 as E,S2 as F,h0 as G,B2 as H,E2 as I,o0 as J,D2 as K,O2 as L,K2 as M,c0 as N,N0 as O,J2 as P,L2 as Q,n0 as R,i0 as S,w0 as T,C0 as U,a0 as V,_2 as W,V0 as X,p2 as Y,A0 as Z,i2 as _,q2 as a,v2 as a0,Z2 as a1,T2 as a2,z2 as a3,Q2 as a4,q0 as a5,P2 as a6,j2 as a7,U2 as a8,m0 as a9,c2 as aa,R2 as ab,j0 as ac,X2 as ad,h2 as ae,e0 as af,t0 as ag,b0 as ah,x0 as ai,f0 as aj,$0 as ak,k0 as al,r0 as am,s2 as an,g2 as ao,d2 as ap,$2 as aq,_0 as ar,G2 as as,o2 as at,I2 as au,y0 as av,y2 as aw,p0 as b,z0 as c,r2 as d,b2 as e,H2 as f,x2 as g,f2 as h,s0 as i,u0 as j,W2 as k,m2 as l,u2 as m,g0 as n,V2 as o,F2 as p,v0 as q,M0 as r,l0 as s,t2 as t,d0 as u,a2 as v,k2 as w,l2 as x,Y2 as y,w2 as z}; diff --git a/webui/dist/assets/icons-wa0wi-vG.js b/webui/dist/assets/icons-wa0wi-vG.js new file mode 100644 index 00000000..9add2cce --- /dev/null +++ b/webui/dist/assets/icons-wa0wi-vG.js @@ -0,0 +1 @@ +import{r as s}from"./router-DQNkr8RI.js";const _=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),M=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,c,o)=>o?o.toUpperCase():c.toLowerCase()),d=t=>{const a=M(t);return a.charAt(0).toUpperCase()+a.slice(1)},k=(...t)=>t.filter((a,c,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===c).join(" ").trim(),m=t=>{for(const a in t)if(a.startsWith("aria-")||a==="role"||a==="title")return!0};var v={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const x=s.forwardRef(({color:t="currentColor",size:a=24,strokeWidth:c=2,absoluteStrokeWidth:o,className:y="",children:n,iconNode:r,...h},p)=>s.createElement("svg",{ref:p,...v,width:a,height:a,stroke:t,strokeWidth:o?Number(c)*24/Number(a):c,className:k("lucide",y),...!n&&!m(h)&&{"aria-hidden":"true"},...h},[...r.map(([i,l])=>s.createElement(i,l)),...Array.isArray(n)?n:[n]]));const e=(t,a)=>{const c=s.forwardRef(({className:o,...y},n)=>s.createElement(x,{ref:n,iconNode:a,className:k(`lucide-${_(d(t))}`,`lucide-${t}`,o),...y}));return c.displayName=d(t),c};const f=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],o2=e("activity",f);const u=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],n2=e("arrow-left",u);const g=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],s2=e("arrow-right",g);const $=[["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],y2=e("ban",$);const N=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],h2=e("book-open",N);const w=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],d2=e("bot",w);const z=[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]],k2=e("boxes",z);const b=[["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z",key:"uouzyp"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M21 21a4 4 0 0 0-3.81-4",key:"1b0z45"}],["path",{d:"M21 5a4 4 0 0 1-3.55 3.97",key:"5cxbf6"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M3 21a4 4 0 0 1 3.81-4",key:"1fjd4g"}],["path",{d:"M3 5a4 4 0 0 0 3.55 3.97",key:"1d7oge"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M9 7.13V6a3 3 0 1 1 6 0v1.13",key:"1vgav8"}]],r2=e("bug",b);const q=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],p2=e("calendar",q);const j=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],i2=e("chart-column",j);const C=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],l2=e("check",C);const V=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],_2=e("chevron-down",V);const A=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],M2=e("chevron-left",A);const H=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],m2=e("chevron-right",H);const L=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],v2=e("chevron-up",L);const S=[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]],x2=e("chevrons-left",S);const P=[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]],f2=e("chevrons-right",P);const U=[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]],u2=e("chevrons-up-down",U);const T=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],g2=e("circle-alert",T);const Z=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],$2=e("circle-check",Z);const R=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],N2=e("circle-question-mark",R);const B=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662",key:"154egf"}]],w2=e("circle-user",B);const E=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],z2=e("circle-x",E);const D=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],b2=e("circle",D);const O=[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],q2=e("clock",O);const F=[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]],j2=e("code-xml",F);const W=[["path",{d:"M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z",key:"1t2lqe"}],["path",{d:"M10 21.9V14L2.1 9.1",key:"o7czzq"}],["path",{d:"m10 14 11.9-6.9",key:"zm5e20"}],["path",{d:"M14 19.8v-8.1",key:"159ecu"}],["path",{d:"M18 17.5V9.4",key:"11uown"}]],C2=e("container",W);const I=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],V2=e("copy",I);const G=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],A2=e("database",G);const K=[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]],H2=e("dollar-sign",K);const X=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],L2=e("download",X);const Q=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],S2=e("external-link",Q);const J=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],P2=e("eye-off",J);const Y=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],U2=e("eye",Y);const e1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["circle",{cx:"11.5",cy:"14.5",r:"2.5",key:"1bq0ko"}],["path",{d:"M13.3 16.3 15 18",key:"2quom7"}]],T2=e("file-search",e1);const a1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],Z2=e("file-text",a1);const t1=[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]],R2=e("folder-open",t1);const c1=[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]],B2=e("funnel",c1);const o1=[["path",{d:"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",key:"j76jl0"}],["path",{d:"M22 10v6",key:"1lu8f3"}],["path",{d:"M6 12.5V16a6 3 0 0 0 12 0v-3.5",key:"1r8lef"}]],E2=e("graduation-cap",o1);const n1=[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]],D2=e("grip-vertical",n1);const s1=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],O2=e("hash",s1);const y1=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]],F2=e("house",y1);const h1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],W2=e("info",h1);const d1=[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]],I2=e("key",d1);const k1=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],G2=e("loader-circle",k1);const r1=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],K2=e("lock",r1);const p1=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],X2=e("log-out",p1);const i1=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],Q2=e("menu",i1);const l1=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]],J2=e("message-square",l1);const _1=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]],Y2=e("moon",_1);const M1=[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]],e0=e("network",M1);const m1=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],a0=e("package",m1);const v1=[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]],t0=e("palette",v1);const x1=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]],c0=e("panels-top-left",x1);const f1=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]],o0=e("pause",f1);const u1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]],n0=e("pen",u1);const g1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],s0=e("pencil",g1);const $1=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],y0=e("play",$1);const N1=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],h0=e("plus",N1);const w1=[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]],d0=e("power",w1);const z1=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],k0=e("refresh-cw",z1);const b1=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],r0=e("rotate-ccw",b1);const q1=[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]],p0=e("rotate-cw",q1);const j1=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],i0=e("save",j1);const C1=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],l0=e("search",C1);const V1=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],_0=e("send",V1);const A1=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],M0=e("server",A1);const H1=[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]],m0=e("settings-2",H1);const L1=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],v0=e("settings",L1);const S1=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]],x0=e("shield",S1);const P1=[["path",{d:"M21 4v16",key:"7j8fe9"}],["path",{d:"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z",key:"zs4d6"}]],f0=e("skip-forward",P1);const U1=[["path",{d:"M10 8h4",key:"1sr2af"}],["path",{d:"M12 21v-9",key:"17s77i"}],["path",{d:"M12 8V3",key:"13r4qs"}],["path",{d:"M17 16h4",key:"h1uq16"}],["path",{d:"M19 12V3",key:"o1uvq1"}],["path",{d:"M19 21v-5",key:"qua636"}],["path",{d:"M3 14h4",key:"bcjad9"}],["path",{d:"M5 10V3",key:"cb8scm"}],["path",{d:"M5 21v-7",key:"1w1uti"}]],u0=e("sliders-vertical",U1);const T1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]],g0=e("smile",T1);const Z1=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],$0=e("sparkles",Z1);const R1=[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]],N0=e("square-pen",R1);const B1=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],w0=e("star",B1);const E1=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],z0=e("sun",E1);const D1=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],b0=e("terminal",D1);const O1=[["path",{d:"M7 10v12",key:"1qc93n"}],["path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z",key:"emmmcr"}]],q0=e("thumbs-up",O1);const F1=[["path",{d:"M17 14V2",key:"8ymqnk"}],["path",{d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z",key:"m61m77"}]],j0=e("thumbs-down",F1);const W1=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],C0=e("trash-2",W1);const I1=[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]],V0=e("trending-up",I1);const G1=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],A0=e("triangle-alert",G1);const K1=[["path",{d:"M12 4v16",key:"1654pz"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2",key:"e0r10z"}],["path",{d:"M9 20h6",key:"s66wpe"}]],H0=e("type",K1);const X1=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],L0=e("upload",X1);const Q1=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],S0=e("user",Q1);const J1=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],P0=e("users",J1);const Y1=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],U0=e("wifi-off",Y1);const e2=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]],T0=e("wifi",e2);const a2=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Z0=e("x",a2);const t2=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],R0=e("zap",t2);export{f2 as $,o2 as A,d2 as B,q2 as C,H2 as D,P2 as E,Z2 as F,i0 as G,F2 as H,W2 as I,d0 as J,I2 as K,K2 as L,J2 as M,h0 as N,C0 as O,t0 as P,T2 as Q,k0 as R,x0 as S,V0 as T,S0 as U,s0 as V,x2 as W,Z0 as X,M2 as Y,R0 as Z,m2 as _,A2 as a,u2 as a0,D2 as a1,E2 as a2,C2 as a3,a0 as a4,L0 as a5,R2 as a6,L2 as a7,B2 as a8,N0 as a9,r2 as aA,y2 as aa,O2 as ab,P0 as ac,e0 as ad,p2 as ae,o0 as af,y0 as ag,H0 as ah,w0 as ai,q0 as aj,j0 as ak,m0 as al,T0 as am,U0 as an,n0 as ao,_0 as ap,M0 as aq,k2 as ar,w2 as as,i2 as at,b2 as au,u0 as av,Q2 as aw,h2 as ax,X2 as ay,p0 as az,v0 as b,A0 as c,l2 as d,V2 as e,U2 as f,$2 as g,z2 as h,r0 as i,z0 as j,Y2 as k,g2 as l,N2 as m,b0 as n,S2 as o,G2 as p,$0 as q,g0 as r,f0 as s,s2 as t,l0 as u,n2 as v,_2 as w,v2 as x,c0 as y,j2 as z}; diff --git a/webui/dist/assets/index-Bzl8QBn9.css b/webui/dist/assets/index-Bzl8QBn9.css deleted file mode 100644 index f43286e9..00000000 --- a/webui/dist/assets/index-Bzl8QBn9.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 0 0% 100%;--foreground: 222.2 84% 4.9%;--card: 0 0% 100%;--card-foreground: 222.2 84% 4.9%;--popover: 0 0% 100%;--popover-foreground: 222.2 84% 4.9%;--primary: 221.2 83.2% 53.3%;--primary-foreground: 210 40% 98%;--primary-gradient: none;--secondary: 210 40% 96.1%;--secondary-foreground: 222.2 47.4% 11.2%;--muted: 210 40% 96.1%;--muted-foreground: 215.4 16.3% 46.9%;--accent: 210 40% 96.1%;--accent-foreground: 222.2 47.4% 11.2%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 210 40% 98%;--border: 214.3 31.8% 91.4%;--input: 214.3 31.8% 91.4%;--ring: 221.2 83.2% 53.3%;--radius: .5rem;--chart-1: 221.2 83.2% 53.3%;--chart-2: 160 60% 45%;--chart-3: 30 80% 55%;--chart-4: 280 65% 60%;--chart-5: 340 75% 55%}.dark{--background: 222.2 84% 4.9%;--foreground: 210 40% 98%;--card: 222.2 84% 4.9%;--card-foreground: 210 40% 98%;--popover: 222.2 84% 4.9%;--popover-foreground: 210 40% 98%;--primary: 217.2 91.2% 59.8%;--primary-foreground: 222.2 47.4% 11.2%;--primary-gradient: none;--secondary: 217.2 32.6% 17.5%;--secondary-foreground: 210 40% 98%;--muted: 217.2 32.6% 17.5%;--muted-foreground: 215 20.2% 65.1%;--accent: 217.2 32.6% 17.5%;--accent-foreground: 210 40% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 210 40% 98%;--border: 217.2 32.6% 17.5%;--input: 217.2 32.6% 17.5%;--ring: 224.3 76.3% 48%;--chart-1: 217.2 91.2% 59.8%;--chart-2: 160 60% 50%;--chart-3: 30 80% 60%;--chart-4: 280 65% 65%;--chart-5: 340 75% 60%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-1\/4{bottom:25%}.bottom-4{bottom:1rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.left-1\/4{left:25%}.left-2{left:.5rem}.left-2\.5{left:.625rem}.left-3{left:.75rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-1\.5{right:.375rem}.right-1\/4{right:25%}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-1\/4{top:25%}.top-2{top:.5rem}.top-2\.5{top:.625rem}.top-3{top:.75rem}.top-4{top:1rem}.top-\[50\%\]{top:50%}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.order-1{order:1}.order-2{order:2}.col-span-2{grid-column:span 2 / span 2}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-mt-2{margin-top:-.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-auto{aspect-ratio:auto}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:16 / 9}.size-4{width:1rem;height:1rem}.size-\[--cell-size\]{width:var(--cell-size);height:var(--cell-size)}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[--cell-size\]{height:var(--cell-size)}.h-\[1\.25rem\]{height:1.25rem}.h-\[1px\]{height:1px}.h-\[200px\]{height:200px}.h-\[250px\]{height:250px}.h-\[280px\]{height:280px}.h-\[300px\]{height:300px}.h-\[400px\]{height:400px}.h-\[calc\(100vh-200px\)\]{height:calc(100vh - 200px)}.h-\[calc\(100vh-240px\)\]{height:calc(100vh - 240px)}.h-\[calc\(100vh-260px\)\]{height:calc(100vh - 260px)}.h-\[calc\(100vh-4rem\)\]{height:calc(100vh - 4rem)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\[--radix-context-menu-content-available-height\]{max-height:var(--radix-context-menu-content-available-height)}.max-h-\[--radix-select-content-available-height\]{max-height:var(--radix-select-content-available-height)}.max-h-\[300px\]{max-height:300px}.max-h-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[calc\(90vh-120px\)\]{max-height:calc(90vh - 120px)}.max-h-\[calc\(90vh-8rem\)\]{max-height:calc(90vh - 8rem)}.max-h-none{max-height:none}.max-h-screen{max-height:100vh}.min-h-0{min-height:0px}.min-h-10{min-height:2.5rem}.min-h-\[100px\]{min-height:100px}.min-h-\[300px\]{min-height:300px}.min-h-\[60px\]{min-height:60px}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[--cell-size\]{width:var(--cell-size)}.w-\[100px\]{width:100px}.w-\[120px\]{width:120px}.w-\[130px\]{width:130px}.w-\[1px\]{width:1px}.w-\[65px\]{width:65px}.w-\[95vw\]{width:95vw}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[--cell-size\]{min-width:var(--cell-size)}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[80px\]{min-width:80px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-\[150px\]{max-width:150px}.max-w-\[200px\]{max-width:200px}.max-w-\[60px\]{max-width:60px}.max-w-\[95vw\]{max-width:95vw}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\[--radix-context-menu-content-transform-origin\]{transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\[--radix-popover-content-transform-origin\]{transform-origin:var(--radix-popover-content-transform-origin)}.origin-\[--radix-select-content-transform-origin\]{transform-origin:var(--radix-select-content-transform-origin)}.origin-\[--radix-tooltip-content-transform-origin\]{transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-\[1\.5px\]{border-width:1.5px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[--color-border\]{border-color:var(--color-border)}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-500\/50{border-color:#f59e0b80}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-700{--tw-border-opacity: 1;border-color:rgb(29 78 216 / var(--tw-border-opacity, 1))}.border-border{border-color:hsl(var(--border))}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-current{border-color:currentColor}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-green-700{--tw-border-opacity: 1;border-color:rgb(21 128 61 / var(--tw-border-opacity, 1))}.border-input{border-color:hsl(var(--input))}.border-muted{border-color:hsl(var(--muted))}.border-muted-foreground\/30{border-color:hsl(var(--muted-foreground) / .3)}.border-muted-foreground\/50{border-color:hsl(var(--muted-foreground) / .5)}.border-orange-600{--tw-border-opacity: 1;border-color:rgb(234 88 12 / var(--tw-border-opacity, 1))}.border-primary{border-color:hsl(var(--primary))}.border-primary\/20{border-color:hsl(var(--primary) / .2)}.border-primary\/30{border-color:hsl(var(--primary) / .3)}.border-primary\/50{border-color:hsl(var(--primary) / .5)}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-red-500\/50{border-color:#ef444480}.border-transparent{border-color:transparent}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-yellow-500\/50{border-color:#eab30880}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\[--color-bg\]{background-color:var(--color-bg)}.bg-accent{background-color:hsl(var(--accent))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-background{background-color:hsl(var(--background))}.bg-background\/50{background-color:hsl(var(--background) / .5)}.bg-background\/80{background-color:hsl(var(--background) / .8)}.bg-background\/95{background-color:hsl(var(--background) / .95)}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-black\/50{background-color:#00000080}.bg-black\/80{background-color:#000c}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-900\/20{background-color:#1e3a8a33}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-card\/80{background-color:hsl(var(--card) / .8)}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-800\/20{background-color:#1f293733}.bg-gray-800\/30{background-color:#1f29374d}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted\/20{background-color:hsl(var(--muted) / .2)}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-orange-600{--tw-bg-opacity: 1;background-color:rgb(234 88 12 / var(--tw-bg-opacity, 1))}.bg-pink-500{--tw-bg-opacity: 1;background-color:rgb(236 72 153 / var(--tw-bg-opacity, 1))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/20{background-color:hsl(var(--primary) / .2)}.bg-primary\/5{background-color:hsl(var(--primary) / .05)}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(168 85 247 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-red-900\/20{background-color:#7f1d1d33}.bg-red-900\/30{background-color:#7f1d1d4d}.bg-secondary{background-color:hsl(var(--secondary))}.bg-secondary\/5{background-color:hsl(var(--secondary) / .05)}.bg-slate-200{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity, 1))}.bg-slate-300{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity, 1))}.bg-slate-400{--tw-bg-opacity: 1;background-color:rgb(148 163 184 / var(--tw-bg-opacity, 1))}.bg-slate-700{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-200{--tw-bg-opacity: 1;background-color:rgb(254 240 138 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-yellow-500\/10{background-color:#eab3081a}.bg-yellow-500\/5{background-color:#eab3080d}.bg-yellow-900\/20{background-color:#713f1233}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-blue-500{--tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-500{--tw-gradient-from: #22c55e var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 197 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-500{--tw-gradient-from: #f97316 var(--tw-gradient-from-position);--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-primary\/5{--tw-gradient-from: hsl(var(--primary) / .05) var(--tw-gradient-from-position);--tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-500{--tw-gradient-from: #a855f7 var(--tw-gradient-from-position);--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-500{--tw-gradient-from: #ef4444 var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 68 68 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-200{--tw-gradient-from: #e2e8f0 var(--tw-gradient-from-position);--tw-gradient-to: rgb(226 232 240 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-300{--tw-gradient-from: #cbd5e1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(203 213 225 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-400{--tw-gradient-from: #94a3b8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(148 163 184 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-background{--tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), hsl(var(--background)) var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-blue-600{--tw-gradient-to: #2563eb var(--tw-gradient-to-position)}.to-cyan-500{--tw-gradient-to: #06b6d4 var(--tw-gradient-to-position)}.to-emerald-500{--tw-gradient-to: #10b981 var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to: #16a34a var(--tw-gradient-to-position)}.to-orange-500{--tw-gradient-to: #f97316 var(--tw-gradient-to-position)}.to-pink-500{--tw-gradient-to: #ec4899 var(--tw-gradient-to-position)}.to-primary\/10{--tw-gradient-to: hsl(var(--primary) / .1) var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to: #a855f7 var(--tw-gradient-to-position)}.to-secondary\/5{--tw-gradient-to: hsl(var(--secondary) / .05) var(--tw-gradient-to-position)}.to-slate-700{--tw-gradient-to: #334155 var(--tw-gradient-to-position)}.to-slate-800{--tw-gradient-to: #1e293b var(--tw-gradient-to-position)}.to-slate-900{--tw-gradient-to: #0f172a var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.fill-yellow-400{fill:#facc15}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[1px\]{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[--cell-size\]{padding-left:var(--cell-size);padding-right:var(--cell-size)}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pl-10{padding-left:2.5rem}.pl-11{padding-left:2.75rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-1{padding-right:.25rem}.pr-10{padding-right:2.5rem}.pr-16{padding-right:4rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.text-\[150px\]{font-size:150px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/50{color:hsl(var(--foreground) / .5)}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/50{color:hsl(var(--muted-foreground) / .5)}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-800{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.text-orange-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary\/10{color:hsl(var(--primary) / .1)}.text-primary\/30{color:hsl(var(--primary) / .3)}.text-primary\/60{color:hsl(var(--primary) / .6)}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.text-yellow-900{--tw-text-opacity: 1;color:rgb(113 63 18 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-primary{--tw-ring-color: hsl(var(--primary))}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur-3xl{--tw-blur: blur(64px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.text-primary-gradient{color:hsl(var(--primary))}.has-gradient .text-primary-gradient{background:var(--primary-gradient);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.\[--cell-size\:2rem\]{--cell-size: 2rem}.no-animations *,.no-animations *:before,.no-animations *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.no-animations *:hover{transition-duration:.01ms!important}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:999}.__floater{z-index:99999!important;pointer-events:auto!important}.react-joyride__overlay,.react-joyride__spotlight{z-index:99998!important}.react-joyride__tooltip{pointer-events:auto!important}#tour-portal-container *{pointer-events:auto}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:border-primary\/50:hover{border-color:hsl(var(--primary) / .5)}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent) / .5)}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-orange-700:hover{--tw-bg-opacity: 1;background-color:rgb(194 65 12 / var(--tw-bg-opacity, 1))}.hover\:bg-primary\/10:hover{background-color:hsl(var(--primary) / .1)}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-secondary:hover{background-color:hsl(var(--secondary))}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-secondary\/90:hover{background-color:hsl(var(--secondary) / .9)}.hover\:bg-transparent:hover{background-color:transparent}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-green-700:hover{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.hover\:text-orange-700:hover{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.hover\:text-primary\/80:hover{color:hsl(var(--primary) / .8)}.hover\:text-red-700:hover{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.hover\:text-yellow-300:hover{--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.hover\:text-yellow-800:hover{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:ring-2:hover{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.hover\:ring-primary:hover{--tw-ring-color: hsl(var(--primary))}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-gray-100:focus{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-red-500:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.active\:cursor-grabbing:active{cursor:grabbing}.active\:border-primary\/70:active{border-color:hsl(var(--primary) / .7)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group[open] .group-open\:rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:opacity-100{opacity:1}.group.destructive .group-\[\.destructive\]\:border-muted\/40{border-color:hsl(var(--muted) / .4)}.group.destructive .group-\[\.destructive\]\:text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:hover\:text-red-50:hover{--tw-text-opacity: 1;color:rgb(254 242 242 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-red-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(248 113 113 / var(--tw-ring-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-offset-red-600:focus{--tw-ring-offset-color: #dc2626}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-selected\:text-muted-foreground[aria-selected=true]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true],.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked],.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x: var(--radix-toast-swipe-end-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x: var(--radix-toast-swipe-move-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes fade-out{0%{opacity:1}to{opacity:0}}.data-\[state\=closed\]\:animate-fade-out[data-state=closed]{animation:fade-out .15s ease-in}.data-\[state\=closed\]\:animate-slide-out-to-right[data-state=closed]{animation:slide-out-to-right .2s ease-in}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.data-\[state\=open\]\:animate-fade-in[data-state=open]{animation:fade-in .2s ease-out}@keyframes slide-in-from-right{0%{transform:translate(100%)}to{transform:translate(0)}}.data-\[state\=open\]\:animate-slide-in-from-right[data-state=open]{animation:slide-in-from-right .3s ease-out}@keyframes slide-out-to-right{0%{transform:translate(0)}to{transform:translate(100%)}}.data-\[swipe\=end\]\:animate-slide-out-to-right[data-swipe=end]{animation:slide-out-to-right .2s ease-in}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) - 2px)}.data-\[selected\=true\]\:rounded-none[data-selected=true]{border-radius:0}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:hsl(var(--primary))}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:hsl(var(--accent))}.data-\[range-start\=true\]\:bg-primary[data-range-start=true],.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:hsl(var(--primary))}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:hsl(var(--primary-foreground))}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:hsl(var(--accent-foreground))}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true],.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:hsl(var(--primary-foreground))}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:opacity-50[data-disabled=true],.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.data-\[state\=active\]\:duration-300[data-state=active]{transition-duration:.3s}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:relative{position:relative}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:z-10{z-index:10}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:border-ring{border-color:hsl(var(--ring))}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-\[3px\]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}.dark\:border-amber-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(146 64 14 / var(--tw-border-opacity, 1))}.dark\:border-blue-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity, 1))}.dark\:border-blue-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 58 138 / var(--tw-border-opacity, 1))}.dark\:border-gray-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(17 24 39 / var(--tw-border-opacity, 1))}.dark\:border-green-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(22 101 52 / var(--tw-border-opacity, 1))}.dark\:border-yellow-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(113 63 18 / var(--tw-border-opacity, 1))}.dark\:bg-amber-950\/30:is(.dark *){background-color:#451a034d}.dark\:bg-blue-500\/20:is(.dark *){background-color:#3b82f633}.dark\:bg-blue-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 37 84 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950\/20:is(.dark *){background-color:#17255433}.dark\:bg-blue-950\/30:is(.dark *){background-color:#1725544d}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800\/30:is(.dark *){background-color:#1f29374d}.dark\:bg-gray-800\/50:is(.dark *){background-color:#1f293780}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(3 7 18 / var(--tw-bg-opacity, 1))}.dark\:bg-green-900\/30:is(.dark *){background-color:#14532d4d}.dark\:bg-green-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(5 46 22 / var(--tw-bg-opacity, 1))}.dark\:bg-orange-950\/20:is(.dark *){background-color:#43140733}.dark\:bg-red-500\/20:is(.dark *){background-color:#ef444433}.dark\:bg-red-600\/30:is(.dark *){background-color:#dc26264d}.dark\:bg-red-900\/30:is(.dark *){background-color:#7f1d1d4d}.dark\:bg-red-950\/50:is(.dark *){background-color:#450a0a80}.dark\:bg-yellow-500\/20:is(.dark *){background-color:#eab30833}.dark\:bg-yellow-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1))}.dark\:bg-yellow-950\/30:is(.dark *){background-color:#4220064d}.dark\:text-amber-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 243 199 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-blue-100:is(.dark *){--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-200:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-cyan-500:is(.dark *){--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-orange-100:is(.dark *){--tw-text-opacity: 1;color:rgb(255 237 213 / var(--tw-text-opacity, 1))}.dark\:text-orange-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 215 170 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-red-500:is(.dark *){--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.dark\:text-yellow-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 249 195 / var(--tw-text-opacity, 1))}.dark\:text-yellow-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.dark\:text-yellow-400:is(.dark *){--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.dark\:text-yellow-500:is(.dark *){--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:hover\:text-yellow-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:focus\:bg-gray-800:focus:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}@media(min-width:640px){.sm\:right-2{right:.5rem}.sm\:right-3{right:.75rem}.sm\:top-2{top:.5rem}.sm\:top-3{top:.75rem}.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:mb-3{margin-bottom:.75rem}.sm\:mb-4{margin-bottom:1rem}.sm\:mb-6{margin-bottom:1.5rem}.sm\:ml-1{margin-left:.25rem}.sm\:mr-1{margin-right:.25rem}.sm\:mr-2{margin-right:.5rem}.sm\:mt-0{margin-top:0}.sm\:mt-2{margin-top:.5rem}.sm\:mt-3{margin-top:.75rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-12{height:3rem}.sm\:h-2{height:.5rem}.sm\:h-24{height:6rem}.sm\:h-3{height:.75rem}.sm\:h-4{height:1rem}.sm\:h-8{height:2rem}.sm\:h-\[300px\]{height:300px}.sm\:h-\[400px\]{height:400px}.sm\:h-\[500px\]{height:500px}.sm\:h-\[calc\(100vh-280px\)\]{height:calc(100vh - 280px)}.sm\:w-10{width:2.5rem}.sm\:w-2{width:.5rem}.sm\:w-24{width:6rem}.sm\:w-3{width:.75rem}.sm\:w-4{width:1rem}.sm\:w-8{width:2rem}.sm\:w-\[140px\]{width:140px}.sm\:w-\[160px\]{width:160px}.sm\:w-\[200px\]{width:200px}.sm\:w-\[500px\]{width:500px}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:min-w-\[120px\]{min-width:120px}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-\[420px\]{max-width:420px}.sm\:max-w-\[900px\]{max-width:900px}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:flex-1{flex:1 1 0%}.sm\:flex-none{flex:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-0{gap:0px}.sm\:gap-1{gap:.25rem}.sm\:gap-2{gap:.5rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:gap-6{gap:1.5rem}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.sm\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.sm\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.sm\:space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-\[200px\]{font-size:200px}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:768px){.md\:top-4{top:1rem}.md\:mb-4{margin-bottom:1rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-8{margin-bottom:2rem}.md\:mt-8{margin-top:2rem}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-16{height:4rem}.md\:h-4{height:1rem}.md\:h-5{height:1.25rem}.md\:h-8{height:2rem}.md\:h-96{height:24rem}.md\:h-\[500px\]{height:500px}.md\:min-h-\[400px\]{min-height:400px}.md\:w-16{width:4rem}.md\:w-4{width:1rem}.md\:w-5{width:1.25rem}.md\:w-8{width:2rem}.md\:w-96{width:24rem}.md\:max-w-none{max-width:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:gap-2{gap:.5rem}.md\:gap-3{gap:.75rem}.md\:gap-4{gap:1rem}.md\:gap-6{gap:1.5rem}.md\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.md\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.md\:whitespace-normal{white-space:normal}.md\:p-12{padding:3rem}.md\:p-4{padding:1rem}.md\:p-6{padding:1.5rem}.md\:p-8{padding:2rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:1024px){.lg\:invisible{visibility:hidden}.lg\:relative{position:relative}.lg\:z-0{z-index:0}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:mb-1{margin-bottom:.25rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-12{width:3rem}.lg\:w-16{width:4rem}.lg\:w-64{width:16rem}.lg\:w-8{width:2rem}.lg\:w-\[130px\]{width:130px}.lg\:w-\[160px\]{width:160px}.lg\:w-\[180px\]{width:180px}.lg\:w-\[200px\]{width:200px}.lg\:w-\[240px\]{width:240px}.lg\:w-\[75px\]{width:75px}.lg\:w-auto{width:auto}.lg\:w-full{width:100%}.lg\:max-w-0{max-width:0px}.lg\:flex-1{flex:1 1 0%}.lg\:flex-none{flex:none}.lg\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:justify-center{justify-content:center}.lg\:gap-0{gap:0px}.lg\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.lg\:overflow-hidden{overflow:hidden}.lg\:p-2{padding:.5rem}.lg\:p-6{padding:1.5rem}.lg\:px-0{padding-left:0;padding-right:0}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:pb-6{padding-bottom:1.5rem}.lg\:text-3xl{font-size:1.875rem;line-height:2.25rem}.lg\:opacity-0{opacity:0}}@media(min-width:1280px){.xl\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}}.\[\&\+div\]\:text-xs+div{font-size:.75rem;line-height:1rem}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>span\]\:text-xs>span{font-size:.75rem;line-height:1rem}.\[\&\>span\]\:opacity-70>span{opacity:.7}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y: -3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-4>svg{top:1rem}.\[\&\>svg\]\:size-3\.5>svg{width:.875rem;height:.875rem}.\[\&\>svg\]\:h-2\.5>svg{height:.625rem}.\[\&\>svg\]\:h-3>svg{height:.75rem}.\[\&\>svg\]\:w-2\.5>svg{width:.625rem}.\[\&\>svg\]\:w-3>svg{width:.75rem}.\[\&\>svg\]\:text-foreground>svg{color:hsl(var(--foreground))}.\[\&\>svg\]\:text-muted-foreground>svg{color:hsl(var(--muted-foreground))}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:1.75rem}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:hsl(var(--muted-foreground))}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:hsl(var(--border) / .5)}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:hsl(var(--border))}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-layer\]\:outline-none .recharts-layer{outline:2px solid transparent;outline-offset:2px}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector,.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:hsl(var(--muted))}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-sector\]\:outline-none .recharts-sector,.\[\&_\.recharts-surface\]\:outline-none .recharts-surface{outline:2px solid transparent;outline-offset:2px}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:1.25rem}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:invisible svg{visibility:hidden}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent,[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:transparent}@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(/assets/KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(/assets/KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(/assets/KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(/assets/KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(/assets/KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(/assets/KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.25"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:grab}.react-flow__node.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%} diff --git a/webui/dist/assets/index--0Z4-njD.js b/webui/dist/assets/index-JgAL2W8G.js similarity index 62% rename from webui/dist/assets/index--0Z4-njD.js rename to webui/dist/assets/index-JgAL2W8G.js index f5e48ce0..dadd1eea 100644 --- a/webui/dist/assets/index--0Z4-njD.js +++ b/webui/dist/assets/index-JgAL2W8G.js @@ -1,65 +1,65 @@ -import{r as b,j as o,u as Zi,R as ae,c as K1,b as pa,d as eJ,e as tJ,L as nJ,f as rJ,g as ks,h as sJ,k as iJ,O as Az,l as aJ}from"./router-SinpzM5S.js";import{a as oJ,b as lJ,g as gd}from"./react-vendor-Dtc2IqVY.js";import{c as Rz,R as cJ,T as uJ,L as dJ,a as hJ,C as Qx,X as Vx,Y as Am,b as fJ,B as h4,d as Ux,P as mJ,e as pJ,f as gJ,_ as xJ,g as vJ,h as Ge,i as yJ,j as d9,k as bJ,l as h9,m as wJ,n as SJ,o as kJ,r as Dz,p as OJ,q as cj,s as Pz,t as xd,u as uj,v as jJ,w as NJ,x as zz,y as Iz,z as Lz,A as dj,D as hj,E as fj,F as CJ,G as TJ,H as EJ,I as _J,J as MJ,K as AJ,M as RJ,N as mj,O as Ay,Q as DJ,S as PJ,U as pj,V as zJ,W as IJ,Z as Bz,$ as Fz,a0 as qz,a1 as $z,a2 as Ry,a3 as Hz,a4 as Qz,a5 as LJ,a6 as BJ,a7 as FJ,a8 as qJ,a9 as $J,aa as HJ,ab as QJ,ac as VJ,ad as Vz,ae as Uz,af as UJ,ag as WJ,ah as GJ,ai as XJ,aj as YJ,ak as KJ,al as ZJ,am as JJ,an as eee,ao as tee,ap as nee,aq as ree,ar as see,as as iee,at as aee,au as oee}from"./charts-0z-hIQr-.js";import{c as Ra,a as Dy,u as Ui,P as gn,b as nt,d as Yn,e as Np,f as Gl,g as qs,h as si,i as gj,j as xj,k as vj,S as lee,l as Wz,m as Gz,R as Xz,O as Py,n as yj,C as zy,o as Iy,T as bj,D as wj,p as Sj,q as Yz,r as Kz,W as cee,s as Zz,I as uee,t as Jz,v as eI,w as dee,x as tI,V as hee,L as nI,y as rI,z as fee,A as mee,B as sI,E as pee,F as gee,G as Hc,H as Ly,J as gf,K as iI,M as aI,N as oI,Q as lI,U as kj,X as Oj,Y as By,Z as Fy,_ as jj,$ as cI,a0 as xee,a1 as uI,a2 as vee,a3 as yee,a4 as dI,a5 as bee}from"./ui-vendor-BLBhIcJ8.js";import{R as Qs,A as wee,D as See,a as G3,Z as X3,C as _h,M as Cp,T as kee,X as Tp,P as hI,S as Oee,b as Xu,I as Oa,c as Wa,d as Ro,e as Tv,E as Ev,f as Ea,g as Qc,h as jee,i as Nee,j as Y3,k as K3,L as f9,K as fI,l as Vc,m as qy,n as Cee,F as Pl,o as Mh,p as Uc,q as Tee,B as Eee,U as mI,r as Nj,s as _ee,t as Mee,u as Ni,H as M0,v as pI,w as nd,x as A0,y as Aee,z as Ree,G as $y,J as Cj,N as zs,O as Sn,Q as _v,V as Yu,W as Ep,Y as vd,_ as yd,$ as _p,a0 as Tj,a1 as Dee,a2 as Pee,a3 as zee,a4 as Uh,a5 as m9,a6 as Iee,a7 as Ku,a8 as Z3,a9 as R0,aa as Lee,ab as J3,ac as Bee,ad as gI,ae as p9,af as Fee,ag as qee,ah as $ee,ai as _c,aj as f4,ak as g9,al as Hee,am as xI,an as vI,ao as yI,ap as Qee,aq as Vee,ar as x9,as as Uee,at as Wee,au as v9,av as Gee,aw as Xee}from"./icons-DMlhlQyz.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const i of s)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(s){const i={};return s.integrity&&(i.integrity=s.integrity),s.referrerPolicy&&(i.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?i.credentials="include":s.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(s){if(s.ep)return;s.ep=!0;const i=n(s);fetch(s.href,i)}})();var m4={exports:{}},Rm={},p4={exports:{}},g4={};var y9;function Yee(){return y9||(y9=1,(function(t){function e(B,X){var J=B.length;B.push(X);e:for(;0>>1,R=B[G];if(0>>1;Gs(q,J))Vs(te,q)?(B[G]=te,B[V]=J,G=V):(B[G]=q,B[W]=J,G=W);else if(Vs(te,J))B[G]=te,B[V]=J,G=V;else break e}}return X}function s(B,X){var J=B.sortIndex-X.sortIndex;return J!==0?J:B.id-X.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var i=performance;t.unstable_now=function(){return i.now()}}else{var a=Date,l=a.now();t.unstable_now=function(){return a.now()-l}}var c=[],d=[],h=1,m=null,g=3,x=!1,y=!1,w=!1,S=!1,k=typeof setTimeout=="function"?setTimeout:null,j=typeof clearTimeout=="function"?clearTimeout:null,N=typeof setImmediate<"u"?setImmediate:null;function T(B){for(var X=n(d);X!==null;){if(X.callback===null)r(d);else if(X.startTime<=B)r(d),X.sortIndex=X.expirationTime,e(c,X);else break;X=n(d)}}function E(B){if(w=!1,T(B),!y)if(n(c)!==null)y=!0,_||(_=!0,U());else{var X=n(d);X!==null&&Q(E,X.startTime-B)}}var _=!1,M=-1,I=5,P=-1;function L(){return S?!0:!(t.unstable_now()-PB&&L());){var G=m.callback;if(typeof G=="function"){m.callback=null,g=m.priorityLevel;var R=G(m.expirationTime<=B);if(B=t.unstable_now(),typeof R=="function"){m.callback=R,T(B),X=!0;break t}m===n(c)&&r(c),T(B)}else r(c);m=n(c)}if(m!==null)X=!0;else{var ie=n(d);ie!==null&&Q(E,ie.startTime-B),X=!1}}break e}finally{m=null,g=J,x=!1}X=void 0}}finally{X?U():_=!1}}}var U;if(typeof N=="function")U=function(){N(H)};else if(typeof MessageChannel<"u"){var ee=new MessageChannel,z=ee.port2;ee.port1.onmessage=H,U=function(){z.postMessage(null)}}else U=function(){k(H,0)};function Q(B,X){M=k(function(){B(t.unstable_now())},X)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(B){B.callback=null},t.unstable_forceFrameRate=function(B){0>B||125G?(B.sortIndex=J,e(d,B),n(c)===null&&B===n(d)&&(w?(j(M),M=-1):w=!0,Q(E,J-G))):(B.sortIndex=R,e(c,B),y||x||(y=!0,_||(_=!0,U()))),B},t.unstable_shouldYield=L,t.unstable_wrapCallback=function(B){var X=g;return function(){var J=g;g=X;try{return B.apply(this,arguments)}finally{g=J}}}})(g4)),g4}var b9;function Kee(){return b9||(b9=1,p4.exports=Yee()),p4.exports}var w9;function Zee(){if(w9)return Rm;w9=1;var t=Kee(),e=oJ(),n=lJ();function r(u){var f="https://react.dev/errors/"+u;if(1R||(u.current=G[R],G[R]=null,R--)}function q(u,f){R++,G[R]=u.current,u.current=f}var V=ie(null),te=ie(null),ne=ie(null),K=ie(null);function se(u,f){switch(q(ne,f),q(te,u),q(V,null),f.nodeType){case 9:case 11:u=(u=f.documentElement)&&(u=u.namespaceURI)?DT(u):0;break;default:if(u=f.tagName,f=f.namespaceURI)f=DT(f),u=PT(f,u);else switch(u){case"svg":u=1;break;case"math":u=2;break;default:u=0}}W(V),q(V,u)}function re(){W(V),W(te),W(ne)}function oe(u){u.memoizedState!==null&&q(K,u);var f=V.current,p=PT(f,u.type);f!==p&&(q(te,u),q(V,p))}function Te(u){te.current===u&&(W(V),W(te)),K.current===u&&(W(K),Tm._currentValue=J)}var We,Ye;function Je(u){if(We===void 0)try{throw Error()}catch(p){var f=p.stack.trim().match(/\n( *(at )?)/);We=f&&f[1]||"",Ye=-1{for(const i of s)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(s){const i={};return s.integrity&&(i.integrity=s.integrity),s.referrerPolicy&&(i.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?i.credentials="include":s.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(s){if(s.ep)return;s.ep=!0;const i=n(s);fetch(s.href,i)}})();var b4={exports:{}},Pm={},w4={exports:{}},S4={};var j9;function pte(){return j9||(j9=1,(function(t){function e(F,Y){var J=F.length;F.push(Y);e:for(;0>>1,R=F[X];if(0>>1;Xs(I,J))Vs(ee,I)?(F[X]=ee,F[V]=J,X=V):(F[X]=I,F[G]=J,X=G);else if(Vs(ee,J))F[X]=ee,F[V]=J,X=V;else break e}}return Y}function s(F,Y){var J=F.sortIndex-Y.sortIndex;return J!==0?J:F.id-Y.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var i=performance;t.unstable_now=function(){return i.now()}}else{var a=Date,l=a.now();t.unstable_now=function(){return a.now()-l}}var c=[],d=[],h=1,m=null,g=3,x=!1,y=!1,w=!1,S=!1,k=typeof setTimeout=="function"?setTimeout:null,j=typeof clearTimeout=="function"?clearTimeout:null,N=typeof setImmediate<"u"?setImmediate:null;function T(F){for(var Y=n(d);Y!==null;){if(Y.callback===null)r(d);else if(Y.startTime<=F)r(d),Y.sortIndex=Y.expirationTime,e(c,Y);else break;Y=n(d)}}function E(F){if(w=!1,T(F),!y)if(n(c)!==null)y=!0,_||(_=!0,U());else{var Y=n(d);Y!==null&&Q(E,Y.startTime-F)}}var _=!1,A=-1,L=5,P=-1;function B(){return S?!0:!(t.unstable_now()-PF&&B());){var X=m.callback;if(typeof X=="function"){m.callback=null,g=m.priorityLevel;var R=X(m.expirationTime<=F);if(F=t.unstable_now(),typeof R=="function"){m.callback=R,T(F),Y=!0;break t}m===n(c)&&r(c),T(F)}else r(c);m=n(c)}if(m!==null)Y=!0;else{var ie=n(d);ie!==null&&Q(E,ie.startTime-F),Y=!1}}break e}finally{m=null,g=J,x=!1}Y=void 0}}finally{Y?U():_=!1}}}var U;if(typeof N=="function")U=function(){N($)};else if(typeof MessageChannel<"u"){var te=new MessageChannel,z=te.port2;te.port1.onmessage=$,U=function(){z.postMessage(null)}}else U=function(){k($,0)};function Q(F,Y){A=k(function(){F(t.unstable_now())},Y)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(F){F.callback=null},t.unstable_forceFrameRate=function(F){0>F||125X?(F.sortIndex=J,e(d,F),n(c)===null&&F===n(d)&&(w?(j(A),A=-1):w=!0,Q(E,J-X))):(F.sortIndex=R,e(c,F),y||x||(y=!0,_||(_=!0,U()))),F},t.unstable_shouldYield=B,t.unstable_wrapCallback=function(F){var Y=g;return function(){var J=g;g=Y;try{return F.apply(this,arguments)}finally{g=J}}}})(S4)),S4}var N9;function gte(){return N9||(N9=1,w4.exports=pte()),w4.exports}var C9;function xte(){if(C9)return Pm;C9=1;var t=gte(),e=kJ(),n=OJ();function r(u){var f="https://react.dev/errors/"+u;if(1R||(u.current=X[R],X[R]=null,R--)}function I(u,f){R++,X[R]=u.current,u.current=f}var V=ie(null),ee=ie(null),ne=ie(null),W=ie(null);function se(u,f){switch(I(ne,f),I(ee,u),I(V,null),f.nodeType){case 9:case 11:u=(u=f.documentElement)&&(u=u.namespaceURI)?FT(u):0;break;default:if(u=f.tagName,f=f.namespaceURI)f=FT(f),u=qT(f,u);else switch(u){case"svg":u=1;break;case"math":u=2;break;default:u=0}}G(V),I(V,u)}function re(){G(V),G(ee),G(ne)}function oe(u){u.memoizedState!==null&&I(W,u);var f=V.current,p=qT(f,u.type);f!==p&&(I(ee,u),I(V,p))}function Te(u){ee.current===u&&(G(V),G(ee)),W.current===u&&(G(W),_m._currentValue=J)}var We,Ye;function Je(u){if(We===void 0)try{throw Error()}catch(p){var f=p.stack.trim().match(/\n( *(at )?)/);We=f&&f[1]||"",Ye=-1)":-1O||ue[v]!==we[O]){var Ee=` `+ue[v].replace(" at new "," at ");return u.displayName&&Ee.includes("")&&(Ee=Ee.replace("",u.displayName)),Ee}while(1<=v&&0<=O);break}}}finally{Oe=!1,Error.prepareStackTrace=p}return(p=u?u.displayName||u.name:"")?Je(p):""}function Ue(u,f){switch(u.tag){case 26:case 27:case 5:return Je(u.type);case 16:return Je("Lazy");case 13:return u.child!==f&&f!==null?Je("Suspense Fallback"):Je("Suspense");case 19:return Je("SuspenseList");case 0:case 15:return Ve(u.type,!1);case 11:return Ve(u.type.render,!1);case 1:return Ve(u.type,!0);case 31:return Je("Activity");default:return""}}function He(u){try{var f="",p=null;do f+=Ue(u,p),p=u,u=u.return;while(u);return f}catch(v){return` Error generating stack: `+v.message+` -`+v.stack}}var Ot=Object.prototype.hasOwnProperty,xt=t.unstable_scheduleCallback,kn=t.unstable_cancelCallback,It=t.unstable_shouldYield,Yt=t.unstable_requestPaint,_t=t.unstable_now,mt=t.unstable_getCurrentPriorityLevel,Ne=t.unstable_ImmediatePriority,Ie=t.unstable_UserBlockingPriority,st=t.unstable_NormalPriority,yt=t.unstable_LowPriority,Pt=t.unstable_IdlePriority,At=t.log,zn=t.unstable_setDisableYieldValue,Fe=null,rt=null;function tn(u){if(typeof At=="function"&&zn(u),rt&&typeof rt.setStrictMode=="function")try{rt.setStrictMode(Fe,u)}catch{}}var Rt=Math.clz32?Math.clz32:it,ke=Math.log,Pe=Math.LN2;function it(u){return u>>>=0,u===0?32:31-(ke(u)/Pe|0)|0}var ot=256,nn=262144,Kt=4194304;function pt(u){var f=u&42;if(f!==0)return f;switch(u&-u){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:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return u&261888;case 262144:case 524288:case 1048576:case 2097152:return u&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return u&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return u}}function xr(u,f,p){var v=u.pendingLanes;if(v===0)return 0;var O=0,C=u.suspendedLanes,F=u.pingedLanes;u=u.warmLanes;var Y=v&134217727;return Y!==0?(v=Y&~C,v!==0?O=pt(v):(F&=Y,F!==0?O=pt(F):p||(p=Y&~u,p!==0&&(O=pt(p))))):(Y=v&~C,Y!==0?O=pt(Y):F!==0?O=pt(F):p||(p=v&~u,p!==0&&(O=pt(p)))),O===0?0:f!==0&&f!==O&&(f&C)===0&&(C=O&-O,p=f&-f,C>=p||C===32&&(p&4194048)!==0)?f:O}function Ur(u,f){return(u.pendingLanes&~(u.suspendedLanes&~u.pingedLanes)&f)===0}function Wr(u,f){switch(u){case 1:case 2:case 4:case 8:case 64:return f+250;case 16:case 32: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 f+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 vr(){var u=Kt;return Kt<<=1,(Kt&62914560)===0&&(Kt=4194304),u}function In(u){for(var f=[],p=0;31>p;p++)f.push(u);return f}function cr(u,f){u.pendingLanes|=f,f!==268435456&&(u.suspendedLanes=0,u.pingedLanes=0,u.warmLanes=0)}function nr(u,f,p,v,O,C){var F=u.pendingLanes;u.pendingLanes=p,u.suspendedLanes=0,u.pingedLanes=0,u.warmLanes=0,u.expiredLanes&=p,u.entangledLanes&=p,u.errorRecoveryDisabledLanes&=p,u.shellSuspendCounter=0;var Y=u.entanglements,ue=u.expirationTimes,we=u.hiddenUpdates;for(p=F&~p;0"u")return null;try{return u.activeElement||u.body}catch{return u.body}}var GY=/[\n"\\]/g;function ta(u){return u.replace(GY,function(f){return"\\"+f.charCodeAt(0).toString(16)+" "})}function aw(u,f,p,v,O,C,F,Y){u.name="",F!=null&&typeof F!="function"&&typeof F!="symbol"&&typeof F!="boolean"?u.type=F:u.removeAttribute("type"),f!=null?F==="number"?(f===0&&u.value===""||u.value!=f)&&(u.value=""+ea(f)):u.value!==""+ea(f)&&(u.value=""+ea(f)):F!=="submit"&&F!=="reset"||u.removeAttribute("value"),f!=null?ow(u,F,ea(f)):p!=null?ow(u,F,ea(p)):v!=null&&u.removeAttribute("value"),O==null&&C!=null&&(u.defaultChecked=!!C),O!=null&&(u.checked=O&&typeof O!="function"&&typeof O!="symbol"),Y!=null&&typeof Y!="function"&&typeof Y!="symbol"&&typeof Y!="boolean"?u.name=""+ea(Y):u.removeAttribute("name")}function T7(u,f,p,v,O,C,F,Y){if(C!=null&&typeof C!="function"&&typeof C!="symbol"&&typeof C!="boolean"&&(u.type=C),f!=null||p!=null){if(!(C!=="submit"&&C!=="reset"||f!=null)){iw(u);return}p=p!=null?""+ea(p):"",f=f!=null?""+ea(f):p,Y||f===u.value||(u.value=f),u.defaultValue=f}v=v??O,v=typeof v!="function"&&typeof v!="symbol"&&!!v,u.checked=Y?u.checked:!!v,u.defaultChecked=!!v,F!=null&&typeof F!="function"&&typeof F!="symbol"&&typeof F!="boolean"&&(u.name=F),iw(u)}function ow(u,f,p){f==="number"&&Dg(u.ownerDocument)===u||u.defaultValue===""+p||(u.defaultValue=""+p)}function Nd(u,f,p,v){if(u=u.options,f){f={};for(var O=0;O"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),hw=!1;if(el)try{var Uf={};Object.defineProperty(Uf,"passive",{get:function(){hw=!0}}),window.addEventListener("test",Uf,Uf),window.removeEventListener("test",Uf,Uf)}catch{hw=!1}var tc=null,fw=null,zg=null;function P7(){if(zg)return zg;var u,f=fw,p=f.length,v,O="value"in tc?tc.value:tc.textContent,C=O.length;for(u=0;u=Xf),q7=" ",$7=!1;function H7(u,f){switch(u){case"keyup":return SK.indexOf(f.keyCode)!==-1;case"keydown":return f.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Q7(u){return u=u.detail,typeof u=="object"&&"data"in u?u.data:null}var _d=!1;function OK(u,f){switch(u){case"compositionend":return Q7(f);case"keypress":return f.which!==32?null:($7=!0,q7);case"textInput":return u=f.data,u===q7&&$7?null:u;default:return null}}function jK(u,f){if(_d)return u==="compositionend"||!vw&&H7(u,f)?(u=P7(),zg=fw=tc=null,_d=!1,u):null;switch(u){case"paste":return null;case"keypress":if(!(f.ctrlKey||f.altKey||f.metaKey)||f.ctrlKey&&f.altKey){if(f.char&&1=f)return{node:p,offset:f-u};u=v}e:{for(;p;){if(p.nextSibling){p=p.nextSibling;break e}p=p.parentNode}p=void 0}p=Z7(p)}}function eC(u,f){return u&&f?u===f?!0:u&&u.nodeType===3?!1:f&&f.nodeType===3?eC(u,f.parentNode):"contains"in u?u.contains(f):u.compareDocumentPosition?!!(u.compareDocumentPosition(f)&16):!1:!1}function tC(u){u=u!=null&&u.ownerDocument!=null&&u.ownerDocument.defaultView!=null?u.ownerDocument.defaultView:window;for(var f=Dg(u.document);f instanceof u.HTMLIFrameElement;){try{var p=typeof f.contentWindow.location.href=="string"}catch{p=!1}if(p)u=f.contentWindow;else break;f=Dg(u.document)}return f}function ww(u){var f=u&&u.nodeName&&u.nodeName.toLowerCase();return f&&(f==="input"&&(u.type==="text"||u.type==="search"||u.type==="tel"||u.type==="url"||u.type==="password")||f==="textarea"||u.contentEditable==="true")}var RK=el&&"documentMode"in document&&11>=document.documentMode,Md=null,Sw=null,Jf=null,kw=!1;function nC(u,f,p){var v=p.window===p?p.document:p.nodeType===9?p:p.ownerDocument;kw||Md==null||Md!==Dg(v)||(v=Md,"selectionStart"in v&&ww(v)?v={start:v.selectionStart,end:v.selectionEnd}:(v=(v.ownerDocument&&v.ownerDocument.defaultView||window).getSelection(),v={anchorNode:v.anchorNode,anchorOffset:v.anchorOffset,focusNode:v.focusNode,focusOffset:v.focusOffset}),Jf&&Zf(Jf,v)||(Jf=v,v=Ex(Sw,"onSelect"),0>=F,O-=F,ao=1<<32-Rt(f)+O|p<Zt?(fn=vt,vt=null):fn=vt.sibling;var Bn=Se(pe,vt,ye[Zt],Me);if(Bn===null){vt===null&&(vt=fn);break}u&&vt&&Bn.alternate===null&&f(pe,vt),fe=C(Bn,fe,Zt),Ln===null?Nt=Bn:Ln.sibling=Bn,Ln=Bn,vt=fn}if(Zt===ye.length)return p(pe,vt),vn&&nl(pe,Zt),Nt;if(vt===null){for(;ZtZt?(fn=vt,vt=null):fn=vt.sibling;var kc=Se(pe,vt,Bn.value,Me);if(kc===null){vt===null&&(vt=fn);break}u&&vt&&kc.alternate===null&&f(pe,vt),fe=C(kc,fe,Zt),Ln===null?Nt=kc:Ln.sibling=kc,Ln=kc,vt=fn}if(Bn.done)return p(pe,vt),vn&&nl(pe,Zt),Nt;if(vt===null){for(;!Bn.done;Zt++,Bn=ye.next())Bn=Re(pe,Bn.value,Me),Bn!==null&&(fe=C(Bn,fe,Zt),Ln===null?Nt=Bn:Ln.sibling=Bn,Ln=Bn);return vn&&nl(pe,Zt),Nt}for(vt=v(vt);!Bn.done;Zt++,Bn=ye.next())Bn=Ce(vt,pe,Zt,Bn.value,Me),Bn!==null&&(u&&Bn.alternate!==null&&vt.delete(Bn.key===null?Zt:Bn.key),fe=C(Bn,fe,Zt),Ln===null?Nt=Bn:Ln.sibling=Bn,Ln=Bn);return u&&vt.forEach(function(JZ){return f(pe,JZ)}),vn&&nl(pe,Zt),Nt}function Jn(pe,fe,ye,Me){if(typeof ye=="object"&&ye!==null&&ye.type===w&&ye.key===null&&(ye=ye.props.children),typeof ye=="object"&&ye!==null){switch(ye.$$typeof){case x:e:{for(var Nt=ye.key;fe!==null;){if(fe.key===Nt){if(Nt=ye.type,Nt===w){if(fe.tag===7){p(pe,fe.sibling),Me=O(fe,ye.props.children),Me.return=pe,pe=Me;break e}}else if(fe.elementType===Nt||typeof Nt=="object"&&Nt!==null&&Nt.$$typeof===I&&ju(Nt)===fe.type){p(pe,fe.sibling),Me=O(fe,ye.props),im(Me,ye),Me.return=pe,pe=Me;break e}p(pe,fe);break}else f(pe,fe);fe=fe.sibling}ye.type===w?(Me=bu(ye.props.children,pe.mode,Me,ye.key),Me.return=pe,pe=Me):(Me=Ug(ye.type,ye.key,ye.props,null,pe.mode,Me),im(Me,ye),Me.return=pe,pe=Me)}return F(pe);case y:e:{for(Nt=ye.key;fe!==null;){if(fe.key===Nt)if(fe.tag===4&&fe.stateNode.containerInfo===ye.containerInfo&&fe.stateNode.implementation===ye.implementation){p(pe,fe.sibling),Me=O(fe,ye.children||[]),Me.return=pe,pe=Me;break e}else{p(pe,fe);break}else f(pe,fe);fe=fe.sibling}Me=_w(ye,pe.mode,Me),Me.return=pe,pe=Me}return F(pe);case I:return ye=ju(ye),Jn(pe,fe,ye,Me)}if(Q(ye))return ut(pe,fe,ye,Me);if(U(ye)){if(Nt=U(ye),typeof Nt!="function")throw Error(r(150));return ye=Nt.call(ye),Mt(pe,fe,ye,Me)}if(typeof ye.then=="function")return Jn(pe,fe,Jg(ye),Me);if(ye.$$typeof===N)return Jn(pe,fe,Xg(pe,ye),Me);ex(pe,ye)}return typeof ye=="string"&&ye!==""||typeof ye=="number"||typeof ye=="bigint"?(ye=""+ye,fe!==null&&fe.tag===6?(p(pe,fe.sibling),Me=O(fe,ye),Me.return=pe,pe=Me):(p(pe,fe),Me=Ew(ye,pe.mode,Me),Me.return=pe,pe=Me),F(pe)):p(pe,fe)}return function(pe,fe,ye,Me){try{sm=0;var Nt=Jn(pe,fe,ye,Me);return $d=null,Nt}catch(vt){if(vt===qd||vt===Kg)throw vt;var Ln=Ai(29,vt,null,pe.mode);return Ln.lanes=Me,Ln.return=pe,Ln}finally{}}}var Cu=jC(!0),NC=jC(!1),ac=!1;function $w(u){u.updateQueue={baseState:u.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Hw(u,f){u=u.updateQueue,f.updateQueue===u&&(f.updateQueue={baseState:u.baseState,firstBaseUpdate:u.firstBaseUpdate,lastBaseUpdate:u.lastBaseUpdate,shared:u.shared,callbacks:null})}function oc(u){return{lane:u,tag:0,payload:null,callback:null,next:null}}function lc(u,f,p){var v=u.updateQueue;if(v===null)return null;if(v=v.shared,(Hn&2)!==0){var O=v.pending;return O===null?f.next=f:(f.next=O.next,O.next=f),v.pending=f,f=Vg(u),cC(u,null,p),f}return Qg(u,v,f,p),Vg(u)}function am(u,f,p){if(f=f.updateQueue,f!==null&&(f=f.shared,(p&4194048)!==0)){var v=f.lanes;v&=u.pendingLanes,p|=v,f.lanes=p,gs(u,p)}}function Qw(u,f){var p=u.updateQueue,v=u.alternate;if(v!==null&&(v=v.updateQueue,p===v)){var O=null,C=null;if(p=p.firstBaseUpdate,p!==null){do{var F={lane:p.lane,tag:p.tag,payload:p.payload,callback:null,next:null};C===null?O=C=F:C=C.next=F,p=p.next}while(p!==null);C===null?O=C=f:C=C.next=f}else O=C=f;p={baseState:v.baseState,firstBaseUpdate:O,lastBaseUpdate:C,shared:v.shared,callbacks:v.callbacks},u.updateQueue=p;return}u=p.lastBaseUpdate,u===null?p.firstBaseUpdate=f:u.next=f,p.lastBaseUpdate=f}var Vw=!1;function om(){if(Vw){var u=Fd;if(u!==null)throw u}}function lm(u,f,p,v){Vw=!1;var O=u.updateQueue;ac=!1;var C=O.firstBaseUpdate,F=O.lastBaseUpdate,Y=O.shared.pending;if(Y!==null){O.shared.pending=null;var ue=Y,we=ue.next;ue.next=null,F===null?C=we:F.next=we,F=ue;var Ee=u.alternate;Ee!==null&&(Ee=Ee.updateQueue,Y=Ee.lastBaseUpdate,Y!==F&&(Y===null?Ee.firstBaseUpdate=we:Y.next=we,Ee.lastBaseUpdate=ue))}if(C!==null){var Re=O.baseState;F=0,Ee=we=ue=null,Y=C;do{var Se=Y.lane&-536870913,Ce=Se!==Y.lane;if(Ce?(hn&Se)===Se:(v&Se)===Se){Se!==0&&Se===Bd&&(Vw=!0),Ee!==null&&(Ee=Ee.next={lane:0,tag:Y.tag,payload:Y.payload,callback:null,next:null});e:{var ut=u,Mt=Y;Se=f;var Jn=p;switch(Mt.tag){case 1:if(ut=Mt.payload,typeof ut=="function"){Re=ut.call(Jn,Re,Se);break e}Re=ut;break e;case 3:ut.flags=ut.flags&-65537|128;case 0:if(ut=Mt.payload,Se=typeof ut=="function"?ut.call(Jn,Re,Se):ut,Se==null)break e;Re=m({},Re,Se);break e;case 2:ac=!0}}Se=Y.callback,Se!==null&&(u.flags|=64,Ce&&(u.flags|=8192),Ce=O.callbacks,Ce===null?O.callbacks=[Se]:Ce.push(Se))}else Ce={lane:Se,tag:Y.tag,payload:Y.payload,callback:Y.callback,next:null},Ee===null?(we=Ee=Ce,ue=Re):Ee=Ee.next=Ce,F|=Se;if(Y=Y.next,Y===null){if(Y=O.shared.pending,Y===null)break;Ce=Y,Y=Ce.next,Ce.next=null,O.lastBaseUpdate=Ce,O.shared.pending=null}}while(!0);Ee===null&&(ue=Re),O.baseState=ue,O.firstBaseUpdate=we,O.lastBaseUpdate=Ee,C===null&&(O.shared.lanes=0),fc|=F,u.lanes=F,u.memoizedState=Re}}function CC(u,f){if(typeof u!="function")throw Error(r(191,u));u.call(f)}function TC(u,f){var p=u.callbacks;if(p!==null)for(u.callbacks=null,u=0;uC?C:8;var F=B.T,Y={};B.T=Y,u2(u,!1,f,p);try{var ue=O(),we=B.S;if(we!==null&&we(Y,ue),ue!==null&&typeof ue=="object"&&typeof ue.then=="function"){var Ee=$K(ue,v);dm(u,f,Ee,Ii(u))}else dm(u,f,v,Ii(u))}catch(Re){dm(u,f,{then:function(){},status:"rejected",reason:Re},Ii())}finally{X.p=C,F!==null&&Y.types!==null&&(F.types=Y.types),B.T=F}}function GK(){}function l2(u,f,p,v){if(u.tag!==5)throw Error(r(476));var O=a8(u).queue;i8(u,O,f,J,p===null?GK:function(){return o8(u),p(v)})}function a8(u){var f=u.memoizedState;if(f!==null)return f;f={memoizedState:J,baseState:J,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:al,lastRenderedState:J},next:null};var p={};return f.next={memoizedState:p,baseState:p,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:al,lastRenderedState:p},next:null},u.memoizedState=f,u=u.alternate,u!==null&&(u.memoizedState=f),f}function o8(u){var f=a8(u);f.next===null&&(f=u.alternate.memoizedState),dm(u,f.next.queue,{},Ii())}function c2(){return Ts(Tm)}function l8(){return $r().memoizedState}function c8(){return $r().memoizedState}function XK(u){for(var f=u.return;f!==null;){switch(f.tag){case 24:case 3:var p=Ii();u=oc(p);var v=lc(f,u,p);v!==null&&(hi(v,f,p),am(v,f,p)),f={cache:Lw()},u.payload=f;return}f=f.return}}function YK(u,f,p){var v=Ii();p={lane:v,revertLane:0,gesture:null,action:p,hasEagerState:!1,eagerState:null,next:null},ux(u)?d8(f,p):(p=Cw(u,f,p,v),p!==null&&(hi(p,u,v),h8(p,f,v)))}function u8(u,f,p){var v=Ii();dm(u,f,p,v)}function dm(u,f,p,v){var O={lane:v,revertLane:0,gesture:null,action:p,hasEagerState:!1,eagerState:null,next:null};if(ux(u))d8(f,O);else{var C=u.alternate;if(u.lanes===0&&(C===null||C.lanes===0)&&(C=f.lastRenderedReducer,C!==null))try{var F=f.lastRenderedState,Y=C(F,p);if(O.hasEagerState=!0,O.eagerState=Y,Mi(Y,F))return Qg(u,f,O,0),rr===null&&Hg(),!1}catch{}finally{}if(p=Cw(u,f,O,v),p!==null)return hi(p,u,v),h8(p,f,v),!0}return!1}function u2(u,f,p,v){if(v={lane:2,revertLane:$2(),gesture:null,action:v,hasEagerState:!1,eagerState:null,next:null},ux(u)){if(f)throw Error(r(479))}else f=Cw(u,p,v,2),f!==null&&hi(f,u,2)}function ux(u){var f=u.alternate;return u===Wt||f!==null&&f===Wt}function d8(u,f){Qd=rx=!0;var p=u.pending;p===null?f.next=f:(f.next=p.next,p.next=f),u.pending=f}function h8(u,f,p){if((p&4194048)!==0){var v=f.lanes;v&=u.pendingLanes,p|=v,f.lanes=p,gs(u,p)}}var hm={readContext:Ts,use:ax,useCallback:Pr,useContext:Pr,useEffect:Pr,useImperativeHandle:Pr,useLayoutEffect:Pr,useInsertionEffect:Pr,useMemo:Pr,useReducer:Pr,useRef:Pr,useState:Pr,useDebugValue:Pr,useDeferredValue:Pr,useTransition:Pr,useSyncExternalStore:Pr,useId:Pr,useHostTransitionStatus:Pr,useFormState:Pr,useActionState:Pr,useOptimistic:Pr,useMemoCache:Pr,useCacheRefresh:Pr};hm.useEffectEvent=Pr;var f8={readContext:Ts,use:ax,useCallback:function(u,f){return Xs().memoizedState=[u,f===void 0?null:f],u},useContext:Ts,useEffect:YC,useImperativeHandle:function(u,f,p){p=p!=null?p.concat([u]):null,lx(4194308,4,e8.bind(null,f,u),p)},useLayoutEffect:function(u,f){return lx(4194308,4,u,f)},useInsertionEffect:function(u,f){lx(4,2,u,f)},useMemo:function(u,f){var p=Xs();f=f===void 0?null:f;var v=u();if(Tu){tn(!0);try{u()}finally{tn(!1)}}return p.memoizedState=[v,f],v},useReducer:function(u,f,p){var v=Xs();if(p!==void 0){var O=p(f);if(Tu){tn(!0);try{p(f)}finally{tn(!1)}}}else O=f;return v.memoizedState=v.baseState=O,u={pending:null,lanes:0,dispatch:null,lastRenderedReducer:u,lastRenderedState:O},v.queue=u,u=u.dispatch=YK.bind(null,Wt,u),[v.memoizedState,u]},useRef:function(u){var f=Xs();return u={current:u},f.memoizedState=u},useState:function(u){u=r2(u);var f=u.queue,p=u8.bind(null,Wt,f);return f.dispatch=p,[u.memoizedState,p]},useDebugValue:a2,useDeferredValue:function(u,f){var p=Xs();return o2(p,u,f)},useTransition:function(){var u=r2(!1);return u=i8.bind(null,Wt,u.queue,!0,!1),Xs().memoizedState=u,[!1,u]},useSyncExternalStore:function(u,f,p){var v=Wt,O=Xs();if(vn){if(p===void 0)throw Error(r(407));p=p()}else{if(p=f(),rr===null)throw Error(r(349));(hn&127)!==0||DC(v,f,p)}O.memoizedState=p;var C={value:p,getSnapshot:f};return O.queue=C,YC(zC.bind(null,v,C,u),[u]),v.flags|=2048,Ud(9,{destroy:void 0},PC.bind(null,v,C,p,f),null),p},useId:function(){var u=Xs(),f=rr.identifierPrefix;if(vn){var p=oo,v=ao;p=(v&~(1<<32-Rt(v)-1)).toString(32)+p,f="_"+f+"R_"+p,p=sx++,0<\/script>",C=C.removeChild(C.firstChild);break;case"select":C=typeof v.is=="string"?F.createElement("select",{is:v.is}):F.createElement("select"),v.multiple?C.multiple=!0:v.size&&(C.size=v.size);break;default:C=typeof v.is=="string"?F.createElement(O,{is:v.is}):F.createElement(O)}}C[Cr]=f,C[Tr]=v;e:for(F=f.child;F!==null;){if(F.tag===5||F.tag===6)C.appendChild(F.stateNode);else if(F.tag!==4&&F.tag!==27&&F.child!==null){F.child.return=F,F=F.child;continue}if(F===f)break e;for(;F.sibling===null;){if(F.return===null||F.return===f)break e;F=F.return}F.sibling.return=F.return,F=F.sibling}f.stateNode=C;e:switch(_s(C,O,v),O){case"button":case"input":case"select":case"textarea":v=!!v.autoFocus;break e;case"img":v=!0;break e;default:v=!1}v&&ll(f)}}return mr(f),O2(f,f.type,u===null?null:u.memoizedProps,f.pendingProps,p),null;case 6:if(u&&f.stateNode!=null)u.memoizedProps!==v&&ll(f);else{if(typeof v!="string"&&f.stateNode===null)throw Error(r(166));if(u=ne.current,Id(f)){if(u=f.stateNode,p=f.memoizedProps,v=null,O=Cs,O!==null)switch(O.tag){case 27:case 5:v=O.memoizedProps}u[Cr]=f,u=!!(u.nodeValue===p||v!==null&&v.suppressHydrationWarning===!0||AT(u.nodeValue,p)),u||sc(f,!0)}else u=_x(u).createTextNode(v),u[Cr]=f,f.stateNode=u}return mr(f),null;case 31:if(p=f.memoizedState,u===null||u.memoizedState!==null){if(v=Id(f),p!==null){if(u===null){if(!v)throw Error(r(318));if(u=f.memoizedState,u=u!==null?u.dehydrated:null,!u)throw Error(r(557));u[Cr]=f}else wu(),(f.flags&128)===0&&(f.memoizedState=null),f.flags|=4;mr(f),u=!1}else p=Dw(),u!==null&&u.memoizedState!==null&&(u.memoizedState.hydrationErrors=p),u=!0;if(!u)return f.flags&256?(Di(f),f):(Di(f),null);if((f.flags&128)!==0)throw Error(r(558))}return mr(f),null;case 13:if(v=f.memoizedState,u===null||u.memoizedState!==null&&u.memoizedState.dehydrated!==null){if(O=Id(f),v!==null&&v.dehydrated!==null){if(u===null){if(!O)throw Error(r(318));if(O=f.memoizedState,O=O!==null?O.dehydrated:null,!O)throw Error(r(317));O[Cr]=f}else wu(),(f.flags&128)===0&&(f.memoizedState=null),f.flags|=4;mr(f),O=!1}else O=Dw(),u!==null&&u.memoizedState!==null&&(u.memoizedState.hydrationErrors=O),O=!0;if(!O)return f.flags&256?(Di(f),f):(Di(f),null)}return Di(f),(f.flags&128)!==0?(f.lanes=p,f):(p=v!==null,u=u!==null&&u.memoizedState!==null,p&&(v=f.child,O=null,v.alternate!==null&&v.alternate.memoizedState!==null&&v.alternate.memoizedState.cachePool!==null&&(O=v.alternate.memoizedState.cachePool.pool),C=null,v.memoizedState!==null&&v.memoizedState.cachePool!==null&&(C=v.memoizedState.cachePool.pool),C!==O&&(v.flags|=2048)),p!==u&&p&&(f.child.flags|=8192),px(f,f.updateQueue),mr(f),null);case 4:return re(),u===null&&U2(f.stateNode.containerInfo),mr(f),null;case 10:return sl(f.type),mr(f),null;case 19:if(W(qr),v=f.memoizedState,v===null)return mr(f),null;if(O=(f.flags&128)!==0,C=v.rendering,C===null)if(O)mm(v,!1);else{if(zr!==0||u!==null&&(u.flags&128)!==0)for(u=f.child;u!==null;){if(C=nx(u),C!==null){for(f.flags|=128,mm(v,!1),u=C.updateQueue,f.updateQueue=u,px(f,u),f.subtreeFlags=0,u=p,p=f.child;p!==null;)uC(p,u),p=p.sibling;return q(qr,qr.current&1|2),vn&&nl(f,v.treeForkCount),f.child}u=u.sibling}v.tail!==null&&_t()>bx&&(f.flags|=128,O=!0,mm(v,!1),f.lanes=4194304)}else{if(!O)if(u=nx(C),u!==null){if(f.flags|=128,O=!0,u=u.updateQueue,f.updateQueue=u,px(f,u),mm(v,!0),v.tail===null&&v.tailMode==="hidden"&&!C.alternate&&!vn)return mr(f),null}else 2*_t()-v.renderingStartTime>bx&&p!==536870912&&(f.flags|=128,O=!0,mm(v,!1),f.lanes=4194304);v.isBackwards?(C.sibling=f.child,f.child=C):(u=v.last,u!==null?u.sibling=C:f.child=C,v.last=C)}return v.tail!==null?(u=v.tail,v.rendering=u,v.tail=u.sibling,v.renderingStartTime=_t(),u.sibling=null,p=qr.current,q(qr,O?p&1|2:p&1),vn&&nl(f,v.treeForkCount),u):(mr(f),null);case 22:case 23:return Di(f),Ww(),v=f.memoizedState!==null,u!==null?u.memoizedState!==null!==v&&(f.flags|=8192):v&&(f.flags|=8192),v?(p&536870912)!==0&&(f.flags&128)===0&&(mr(f),f.subtreeFlags&6&&(f.flags|=8192)):mr(f),p=f.updateQueue,p!==null&&px(f,p.retryQueue),p=null,u!==null&&u.memoizedState!==null&&u.memoizedState.cachePool!==null&&(p=u.memoizedState.cachePool.pool),v=null,f.memoizedState!==null&&f.memoizedState.cachePool!==null&&(v=f.memoizedState.cachePool.pool),v!==p&&(f.flags|=2048),u!==null&&W(Ou),null;case 24:return p=null,u!==null&&(p=u.memoizedState.cache),f.memoizedState.cache!==p&&(f.flags|=2048),sl(Xr),mr(f),null;case 25:return null;case 30:return null}throw Error(r(156,f.tag))}function tZ(u,f){switch(Aw(f),f.tag){case 1:return u=f.flags,u&65536?(f.flags=u&-65537|128,f):null;case 3:return sl(Xr),re(),u=f.flags,(u&65536)!==0&&(u&128)===0?(f.flags=u&-65537|128,f):null;case 26:case 27:case 5:return Te(f),null;case 31:if(f.memoizedState!==null){if(Di(f),f.alternate===null)throw Error(r(340));wu()}return u=f.flags,u&65536?(f.flags=u&-65537|128,f):null;case 13:if(Di(f),u=f.memoizedState,u!==null&&u.dehydrated!==null){if(f.alternate===null)throw Error(r(340));wu()}return u=f.flags,u&65536?(f.flags=u&-65537|128,f):null;case 19:return W(qr),null;case 4:return re(),null;case 10:return sl(f.type),null;case 22:case 23:return Di(f),Ww(),u!==null&&W(Ou),u=f.flags,u&65536?(f.flags=u&-65537|128,f):null;case 24:return sl(Xr),null;case 25:return null;default:return null}}function I8(u,f){switch(Aw(f),f.tag){case 3:sl(Xr),re();break;case 26:case 27:case 5:Te(f);break;case 4:re();break;case 31:f.memoizedState!==null&&Di(f);break;case 13:Di(f);break;case 19:W(qr);break;case 10:sl(f.type);break;case 22:case 23:Di(f),Ww(),u!==null&&W(Ou);break;case 24:sl(Xr)}}function pm(u,f){try{var p=f.updateQueue,v=p!==null?p.lastEffect:null;if(v!==null){var O=v.next;p=O;do{if((p.tag&u)===u){v=void 0;var C=p.create,F=p.inst;v=C(),F.destroy=v}p=p.next}while(p!==O)}}catch(Y){Un(f,f.return,Y)}}function dc(u,f,p){try{var v=f.updateQueue,O=v!==null?v.lastEffect:null;if(O!==null){var C=O.next;v=C;do{if((v.tag&u)===u){var F=v.inst,Y=F.destroy;if(Y!==void 0){F.destroy=void 0,O=f;var ue=p,we=Y;try{we()}catch(Ee){Un(O,ue,Ee)}}}v=v.next}while(v!==C)}}catch(Ee){Un(f,f.return,Ee)}}function L8(u){var f=u.updateQueue;if(f!==null){var p=u.stateNode;try{TC(f,p)}catch(v){Un(u,u.return,v)}}}function B8(u,f,p){p.props=Eu(u.type,u.memoizedProps),p.state=u.memoizedState;try{p.componentWillUnmount()}catch(v){Un(u,f,v)}}function gm(u,f){try{var p=u.ref;if(p!==null){switch(u.tag){case 26:case 27:case 5:var v=u.stateNode;break;case 30:v=u.stateNode;break;default:v=u.stateNode}typeof p=="function"?u.refCleanup=p(v):p.current=v}}catch(O){Un(u,f,O)}}function lo(u,f){var p=u.ref,v=u.refCleanup;if(p!==null)if(typeof v=="function")try{v()}catch(O){Un(u,f,O)}finally{u.refCleanup=null,u=u.alternate,u!=null&&(u.refCleanup=null)}else if(typeof p=="function")try{p(null)}catch(O){Un(u,f,O)}else p.current=null}function F8(u){var f=u.type,p=u.memoizedProps,v=u.stateNode;try{e:switch(f){case"button":case"input":case"select":case"textarea":p.autoFocus&&v.focus();break e;case"img":p.src?v.src=p.src:p.srcSet&&(v.srcset=p.srcSet)}}catch(O){Un(u,u.return,O)}}function j2(u,f,p){try{var v=u.stateNode;kZ(v,u.type,p,f),v[Tr]=f}catch(O){Un(u,u.return,O)}}function q8(u){return u.tag===5||u.tag===3||u.tag===26||u.tag===27&&vc(u.type)||u.tag===4}function N2(u){e:for(;;){for(;u.sibling===null;){if(u.return===null||q8(u.return))return null;u=u.return}for(u.sibling.return=u.return,u=u.sibling;u.tag!==5&&u.tag!==6&&u.tag!==18;){if(u.tag===27&&vc(u.type)||u.flags&2||u.child===null||u.tag===4)continue e;u.child.return=u,u=u.child}if(!(u.flags&2))return u.stateNode}}function C2(u,f,p){var v=u.tag;if(v===5||v===6)u=u.stateNode,f?(p.nodeType===9?p.body:p.nodeName==="HTML"?p.ownerDocument.body:p).insertBefore(u,f):(f=p.nodeType===9?p.body:p.nodeName==="HTML"?p.ownerDocument.body:p,f.appendChild(u),p=p._reactRootContainer,p!=null||f.onclick!==null||(f.onclick=Jo));else if(v!==4&&(v===27&&vc(u.type)&&(p=u.stateNode,f=null),u=u.child,u!==null))for(C2(u,f,p),u=u.sibling;u!==null;)C2(u,f,p),u=u.sibling}function gx(u,f,p){var v=u.tag;if(v===5||v===6)u=u.stateNode,f?p.insertBefore(u,f):p.appendChild(u);else if(v!==4&&(v===27&&vc(u.type)&&(p=u.stateNode),u=u.child,u!==null))for(gx(u,f,p),u=u.sibling;u!==null;)gx(u,f,p),u=u.sibling}function $8(u){var f=u.stateNode,p=u.memoizedProps;try{for(var v=u.type,O=f.attributes;O.length;)f.removeAttributeNode(O[0]);_s(f,v,p),f[Cr]=u,f[Tr]=p}catch(C){Un(u,u.return,C)}}var cl=!1,Zr=!1,T2=!1,H8=typeof WeakSet=="function"?WeakSet:Set,xs=null;function nZ(u,f){if(u=u.containerInfo,X2=Ix,u=tC(u),ww(u)){if("selectionStart"in u)var p={start:u.selectionStart,end:u.selectionEnd};else e:{p=(p=u.ownerDocument)&&p.defaultView||window;var v=p.getSelection&&p.getSelection();if(v&&v.rangeCount!==0){p=v.anchorNode;var O=v.anchorOffset,C=v.focusNode;v=v.focusOffset;try{p.nodeType,C.nodeType}catch{p=null;break e}var F=0,Y=-1,ue=-1,we=0,Ee=0,Re=u,Se=null;t:for(;;){for(var Ce;Re!==p||O!==0&&Re.nodeType!==3||(Y=F+O),Re!==C||v!==0&&Re.nodeType!==3||(ue=F+v),Re.nodeType===3&&(F+=Re.nodeValue.length),(Ce=Re.firstChild)!==null;)Se=Re,Re=Ce;for(;;){if(Re===u)break t;if(Se===p&&++we===O&&(Y=F),Se===C&&++Ee===v&&(ue=F),(Ce=Re.nextSibling)!==null)break;Re=Se,Se=Re.parentNode}Re=Ce}p=Y===-1||ue===-1?null:{start:Y,end:ue}}else p=null}p=p||{start:0,end:0}}else p=null;for(Y2={focusedElem:u,selectionRange:p},Ix=!1,xs=f;xs!==null;)if(f=xs,u=f.child,(f.subtreeFlags&1028)!==0&&u!==null)u.return=f,xs=u;else for(;xs!==null;){switch(f=xs,C=f.alternate,u=f.flags,f.tag){case 0:if((u&4)!==0&&(u=f.updateQueue,u=u!==null?u.events:null,u!==null))for(p=0;p title"))),_s(C,v,p),C[Cr]=u,Gr(C),v=C;break e;case"link":var F=XT("link","href",O).get(v+(p.href||""));if(F){for(var Y=0;YJn&&(F=Jn,Jn=Mt,Mt=F);var pe=J7(Y,Mt),fe=J7(Y,Jn);if(pe&&fe&&(Ce.rangeCount!==1||Ce.anchorNode!==pe.node||Ce.anchorOffset!==pe.offset||Ce.focusNode!==fe.node||Ce.focusOffset!==fe.offset)){var ye=Re.createRange();ye.setStart(pe.node,pe.offset),Ce.removeAllRanges(),Mt>Jn?(Ce.addRange(ye),Ce.extend(fe.node,fe.offset)):(ye.setEnd(fe.node,fe.offset),Ce.addRange(ye))}}}}for(Re=[],Ce=Y;Ce=Ce.parentNode;)Ce.nodeType===1&&Re.push({element:Ce,left:Ce.scrollLeft,top:Ce.scrollTop});for(typeof Y.focus=="function"&&Y.focus(),Y=0;Yp?32:p,B.T=null,p=P2,P2=null;var C=pc,F=ml;if(os=0,Kd=pc=null,ml=0,(Hn&6)!==0)throw Error(r(331));var Y=Hn;if(Hn|=4,eT(C.current),K8(C,C.current,F,p),Hn=Y,Sm(0,!1),rt&&typeof rt.onPostCommitFiberRoot=="function")try{rt.onPostCommitFiberRoot(Fe,C)}catch{}return!0}finally{X.p=O,B.T=v,vT(u,f)}}function bT(u,f,p){f=ra(p,f),f=m2(u.stateNode,f,2),u=lc(u,f,2),u!==null&&(cr(u,2),co(u))}function Un(u,f,p){if(u.tag===3)bT(u,u,p);else for(;f!==null;){if(f.tag===3){bT(f,u,p);break}else if(f.tag===1){var v=f.stateNode;if(typeof f.type.getDerivedStateFromError=="function"||typeof v.componentDidCatch=="function"&&(mc===null||!mc.has(v))){u=ra(p,u),p=w8(2),v=lc(f,p,2),v!==null&&(S8(p,v,f,u),cr(v,2),co(v));break}}f=f.return}}function B2(u,f,p){var v=u.pingCache;if(v===null){v=u.pingCache=new iZ;var O=new Set;v.set(f,O)}else O=v.get(f),O===void 0&&(O=new Set,v.set(f,O));O.has(p)||(M2=!0,O.add(p),u=uZ.bind(null,u,f,p),f.then(u,u))}function uZ(u,f,p){var v=u.pingCache;v!==null&&v.delete(f),u.pingedLanes|=u.suspendedLanes&p,u.warmLanes&=~p,rr===u&&(hn&p)===p&&(zr===4||zr===3&&(hn&62914560)===hn&&300>_t()-yx?(Hn&2)===0&&Zd(u,0):A2|=p,Yd===hn&&(Yd=0)),co(u)}function wT(u,f){f===0&&(f=vr()),u=yu(u,f),u!==null&&(cr(u,f),co(u))}function dZ(u){var f=u.memoizedState,p=0;f!==null&&(p=f.retryLane),wT(u,p)}function hZ(u,f){var p=0;switch(u.tag){case 31:case 13:var v=u.stateNode,O=u.memoizedState;O!==null&&(p=O.retryLane);break;case 19:v=u.stateNode;break;case 22:v=u.stateNode._retryCache;break;default:throw Error(r(314))}v!==null&&v.delete(f),wT(u,p)}function fZ(u,f){return xt(u,f)}var Nx=null,eh=null,F2=!1,Cx=!1,q2=!1,xc=0;function co(u){u!==eh&&u.next===null&&(eh===null?Nx=eh=u:eh=eh.next=u),Cx=!0,F2||(F2=!0,pZ())}function Sm(u,f){if(!q2&&Cx){q2=!0;do for(var p=!1,v=Nx;v!==null;){if(u!==0){var O=v.pendingLanes;if(O===0)var C=0;else{var F=v.suspendedLanes,Y=v.pingedLanes;C=(1<<31-Rt(42|u)+1)-1,C&=O&~(F&~Y),C=C&201326741?C&201326741|1:C?C|2:0}C!==0&&(p=!0,jT(v,C))}else C=hn,C=xr(v,v===rr?C:0,v.cancelPendingCommit!==null||v.timeoutHandle!==-1),(C&3)===0||Ur(v,C)||(p=!0,jT(v,C));v=v.next}while(p);q2=!1}}function mZ(){ST()}function ST(){Cx=F2=!1;var u=0;xc!==0&&jZ()&&(u=xc);for(var f=_t(),p=null,v=Nx;v!==null;){var O=v.next,C=kT(v,f);C===0?(v.next=null,p===null?Nx=O:p.next=O,O===null&&(eh=p)):(p=v,(u!==0||(C&3)!==0)&&(Cx=!0)),v=O}os!==0&&os!==5||Sm(u),xc!==0&&(xc=0)}function kT(u,f){for(var p=u.suspendedLanes,v=u.pingedLanes,O=u.expirationTimes,C=u.pendingLanes&-62914561;0Y)break;var Ee=ue.transferSize,Re=ue.initiatorType;Ee&&RT(Re)&&(ue=ue.responseEnd,F+=Ee*(ue"u"?null:document;function VT(u,f,p){var v=th;if(v&&typeof f=="string"&&f){var O=ta(f);O='link[rel="'+u+'"][href="'+O+'"]',typeof p=="string"&&(O+='[crossorigin="'+p+'"]'),QT.has(O)||(QT.add(O),u={rel:u,crossOrigin:p,href:f},v.querySelector(O)===null&&(f=v.createElement("link"),_s(f,"link",u),Gr(f),v.head.appendChild(f)))}}function DZ(u){pl.D(u),VT("dns-prefetch",u,null)}function PZ(u,f){pl.C(u,f),VT("preconnect",u,f)}function zZ(u,f,p){pl.L(u,f,p);var v=th;if(v&&u&&f){var O='link[rel="preload"][as="'+ta(f)+'"]';f==="image"&&p&&p.imageSrcSet?(O+='[imagesrcset="'+ta(p.imageSrcSet)+'"]',typeof p.imageSizes=="string"&&(O+='[imagesizes="'+ta(p.imageSizes)+'"]')):O+='[href="'+ta(u)+'"]';var C=O;switch(f){case"style":C=nh(u);break;case"script":C=rh(u)}ca.has(C)||(u=m({rel:"preload",href:f==="image"&&p&&p.imageSrcSet?void 0:u,as:f},p),ca.set(C,u),v.querySelector(O)!==null||f==="style"&&v.querySelector(Nm(C))||f==="script"&&v.querySelector(Cm(C))||(f=v.createElement("link"),_s(f,"link",u),Gr(f),v.head.appendChild(f)))}}function IZ(u,f){pl.m(u,f);var p=th;if(p&&u){var v=f&&typeof f.as=="string"?f.as:"script",O='link[rel="modulepreload"][as="'+ta(v)+'"][href="'+ta(u)+'"]',C=O;switch(v){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":C=rh(u)}if(!ca.has(C)&&(u=m({rel:"modulepreload",href:u},f),ca.set(C,u),p.querySelector(O)===null)){switch(v){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(p.querySelector(Cm(C)))return}v=p.createElement("link"),_s(v,"link",u),Gr(v),p.head.appendChild(v)}}}function LZ(u,f,p){pl.S(u,f,p);var v=th;if(v&&u){var O=ec(v).hoistableStyles,C=nh(u);f=f||"default";var F=O.get(C);if(!F){var Y={loading:0,preload:null};if(F=v.querySelector(Nm(C)))Y.loading=5;else{u=m({rel:"stylesheet",href:u,"data-precedence":f},p),(p=ca.get(C))&&r4(u,p);var ue=F=v.createElement("link");Gr(ue),_s(ue,"link",u),ue._p=new Promise(function(we,Ee){ue.onload=we,ue.onerror=Ee}),ue.addEventListener("load",function(){Y.loading|=1}),ue.addEventListener("error",function(){Y.loading|=2}),Y.loading|=4,Ax(F,f,v)}F={type:"stylesheet",instance:F,count:1,state:Y},O.set(C,F)}}}function BZ(u,f){pl.X(u,f);var p=th;if(p&&u){var v=ec(p).hoistableScripts,O=rh(u),C=v.get(O);C||(C=p.querySelector(Cm(O)),C||(u=m({src:u,async:!0},f),(f=ca.get(O))&&s4(u,f),C=p.createElement("script"),Gr(C),_s(C,"link",u),p.head.appendChild(C)),C={type:"script",instance:C,count:1,state:null},v.set(O,C))}}function FZ(u,f){pl.M(u,f);var p=th;if(p&&u){var v=ec(p).hoistableScripts,O=rh(u),C=v.get(O);C||(C=p.querySelector(Cm(O)),C||(u=m({src:u,async:!0,type:"module"},f),(f=ca.get(O))&&s4(u,f),C=p.createElement("script"),Gr(C),_s(C,"link",u),p.head.appendChild(C)),C={type:"script",instance:C,count:1,state:null},v.set(O,C))}}function UT(u,f,p,v){var O=(O=ne.current)?Mx(O):null;if(!O)throw Error(r(446));switch(u){case"meta":case"title":return null;case"style":return typeof p.precedence=="string"&&typeof p.href=="string"?(f=nh(p.href),p=ec(O).hoistableStyles,v=p.get(f),v||(v={type:"style",instance:null,count:0,state:null},p.set(f,v)),v):{type:"void",instance:null,count:0,state:null};case"link":if(p.rel==="stylesheet"&&typeof p.href=="string"&&typeof p.precedence=="string"){u=nh(p.href);var C=ec(O).hoistableStyles,F=C.get(u);if(F||(O=O.ownerDocument||O,F={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},C.set(u,F),(C=O.querySelector(Nm(u)))&&!C._p&&(F.instance=C,F.state.loading=5),ca.has(u)||(p={rel:"preload",as:"style",href:p.href,crossOrigin:p.crossOrigin,integrity:p.integrity,media:p.media,hrefLang:p.hrefLang,referrerPolicy:p.referrerPolicy},ca.set(u,p),C||qZ(O,u,p,F.state))),f&&v===null)throw Error(r(528,""));return F}if(f&&v!==null)throw Error(r(529,""));return null;case"script":return f=p.async,p=p.src,typeof p=="string"&&f&&typeof f!="function"&&typeof f!="symbol"?(f=rh(p),p=ec(O).hoistableScripts,v=p.get(f),v||(v={type:"script",instance:null,count:0,state:null},p.set(f,v)),v):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,u))}}function nh(u){return'href="'+ta(u)+'"'}function Nm(u){return'link[rel="stylesheet"]['+u+"]"}function WT(u){return m({},u,{"data-precedence":u.precedence,precedence:null})}function qZ(u,f,p,v){u.querySelector('link[rel="preload"][as="style"]['+f+"]")?v.loading=1:(f=u.createElement("link"),v.preload=f,f.addEventListener("load",function(){return v.loading|=1}),f.addEventListener("error",function(){return v.loading|=2}),_s(f,"link",p),Gr(f),u.head.appendChild(f))}function rh(u){return'[src="'+ta(u)+'"]'}function Cm(u){return"script[async]"+u}function GT(u,f,p){if(f.count++,f.instance===null)switch(f.type){case"style":var v=u.querySelector('style[data-href~="'+ta(p.href)+'"]');if(v)return f.instance=v,Gr(v),v;var O=m({},p,{"data-href":p.href,"data-precedence":p.precedence,href:null,precedence:null});return v=(u.ownerDocument||u).createElement("style"),Gr(v),_s(v,"style",O),Ax(v,p.precedence,u),f.instance=v;case"stylesheet":O=nh(p.href);var C=u.querySelector(Nm(O));if(C)return f.state.loading|=4,f.instance=C,Gr(C),C;v=WT(p),(O=ca.get(O))&&r4(v,O),C=(u.ownerDocument||u).createElement("link"),Gr(C);var F=C;return F._p=new Promise(function(Y,ue){F.onload=Y,F.onerror=ue}),_s(C,"link",v),f.state.loading|=4,Ax(C,p.precedence,u),f.instance=C;case"script":return C=rh(p.src),(O=u.querySelector(Cm(C)))?(f.instance=O,Gr(O),O):(v=p,(O=ca.get(C))&&(v=m({},p),s4(v,O)),u=u.ownerDocument||u,O=u.createElement("script"),Gr(O),_s(O,"link",v),u.head.appendChild(O),f.instance=O);case"void":return null;default:throw Error(r(443,f.type))}else f.type==="stylesheet"&&(f.state.loading&4)===0&&(v=f.instance,f.state.loading|=4,Ax(v,p.precedence,u));return f.instance}function Ax(u,f,p){for(var v=p.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),O=v.length?v[v.length-1]:null,C=O,F=0;F title"):null)}function $Z(u,f,p){if(p===1||f.itemProp!=null)return!1;switch(u){case"meta":case"title":return!0;case"style":if(typeof f.precedence!="string"||typeof f.href!="string"||f.href==="")break;return!0;case"link":if(typeof f.rel!="string"||typeof f.href!="string"||f.href===""||f.onLoad||f.onError)break;switch(f.rel){case"stylesheet":return u=f.disabled,typeof f.precedence=="string"&&u==null;default:return!0}case"script":if(f.async&&typeof f.async!="function"&&typeof f.async!="symbol"&&!f.onLoad&&!f.onError&&f.src&&typeof f.src=="string")return!0}return!1}function KT(u){return!(u.type==="stylesheet"&&(u.state.loading&3)===0)}function HZ(u,f,p,v){if(p.type==="stylesheet"&&(typeof v.media!="string"||matchMedia(v.media).matches!==!1)&&(p.state.loading&4)===0){if(p.instance===null){var O=nh(v.href),C=f.querySelector(Nm(O));if(C){f=C._p,f!==null&&typeof f=="object"&&typeof f.then=="function"&&(u.count++,u=Dx.bind(u),f.then(u,u)),p.state.loading|=4,p.instance=C,Gr(C);return}C=f.ownerDocument||f,v=WT(v),(O=ca.get(O))&&r4(v,O),C=C.createElement("link"),Gr(C);var F=C;F._p=new Promise(function(Y,ue){F.onload=Y,F.onerror=ue}),_s(C,"link",v),p.instance=C}u.stylesheets===null&&(u.stylesheets=new Map),u.stylesheets.set(p,f),(f=p.state.preload)&&(p.state.loading&3)===0&&(u.count++,p=Dx.bind(u),f.addEventListener("load",p),f.addEventListener("error",p))}}var i4=0;function QZ(u,f){return u.stylesheets&&u.count===0&&zx(u,u.stylesheets),0i4?50:800)+f);return u.unsuspend=p,function(){u.unsuspend=null,clearTimeout(v),clearTimeout(O)}}:null}function Dx(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)zx(this,this.stylesheets);else if(this.unsuspend){var u=this.unsuspend;this.unsuspend=null,u()}}}var Px=null;function zx(u,f){u.stylesheets=null,u.unsuspend!==null&&(u.count++,Px=new Map,f.forEach(VZ,u),Px=null,Dx.call(u))}function VZ(u,f){if(!(f.state.loading&4)){var p=Px.get(u);if(p)var v=p.get(null);else{p=new Map,Px.set(u,p);for(var O=u.querySelectorAll("link[data-precedence],style[data-precedence]"),C=0;C"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),m4.exports=Zee(),m4.exports}var ete=Jee();function bI(t,e){return function(){return t.apply(e,arguments)}}const{toString:tte}=Object.prototype,{getPrototypeOf:Ej}=Object,{iterator:Hy,toStringTag:wI}=Symbol,Qy=(t=>e=>{const n=tte.call(e);return t[n]||(t[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),eo=t=>(t=t.toLowerCase(),e=>Qy(e)===t),Vy=t=>e=>typeof e===t,{isArray:xf}=Array,Wh=Vy("undefined");function Mp(t){return t!==null&&!Wh(t)&&t.constructor!==null&&!Wh(t.constructor)&&wi(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const SI=eo("ArrayBuffer");function nte(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&SI(t.buffer),e}const rte=Vy("string"),wi=Vy("function"),kI=Vy("number"),Ap=t=>t!==null&&typeof t=="object",ste=t=>t===!0||t===!1,Z1=t=>{if(Qy(t)!=="object")return!1;const e=Ej(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(wI in t)&&!(Hy in t)},ite=t=>{if(!Ap(t)||Mp(t))return!1;try{return Object.keys(t).length===0&&Object.getPrototypeOf(t)===Object.prototype}catch{return!1}},ate=eo("Date"),ote=eo("File"),lte=eo("Blob"),cte=eo("FileList"),ute=t=>Ap(t)&&wi(t.pipe),dte=t=>{let e;return t&&(typeof FormData=="function"&&t instanceof FormData||wi(t.append)&&((e=Qy(t))==="formdata"||e==="object"&&wi(t.toString)&&t.toString()==="[object FormData]"))},hte=eo("URLSearchParams"),[fte,mte,pte,gte]=["ReadableStream","Request","Response","Headers"].map(eo),xte=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Rp(t,e,{allOwnKeys:n=!1}={}){if(t===null||typeof t>"u")return;let r,s;if(typeof t!="object"&&(t=[t]),xf(t))for(r=0,s=t.length;r0;)if(s=n[r],e===s.toLowerCase())return s;return null}const $u=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,jI=t=>!Wh(t)&&t!==$u;function ek(){const{caseless:t,skipUndefined:e}=jI(this)&&this||{},n={},r=(s,i)=>{const a=t&&OI(n,i)||i;Z1(n[a])&&Z1(s)?n[a]=ek(n[a],s):Z1(s)?n[a]=ek({},s):xf(s)?n[a]=s.slice():(!e||!Wh(s))&&(n[a]=s)};for(let s=0,i=arguments.length;s(Rp(e,(s,i)=>{n&&wi(s)?t[i]=bI(s,n):t[i]=s},{allOwnKeys:r}),t),yte=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),bte=(t,e,n,r)=>{t.prototype=Object.create(e.prototype,r),t.prototype.constructor=t,Object.defineProperty(t,"super",{value:e.prototype}),n&&Object.assign(t.prototype,n)},wte=(t,e,n,r)=>{let s,i,a;const l={};if(e=e||{},t==null)return e;do{for(s=Object.getOwnPropertyNames(t),i=s.length;i-- >0;)a=s[i],(!r||r(a,t,e))&&!l[a]&&(e[a]=t[a],l[a]=!0);t=n!==!1&&Ej(t)}while(t&&(!n||n(t,e))&&t!==Object.prototype);return e},Ste=(t,e,n)=>{t=String(t),(n===void 0||n>t.length)&&(n=t.length),n-=e.length;const r=t.indexOf(e,n);return r!==-1&&r===n},kte=t=>{if(!t)return null;if(xf(t))return t;let e=t.length;if(!kI(e))return null;const n=new Array(e);for(;e-- >0;)n[e]=t[e];return n},Ote=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&Ej(Uint8Array)),jte=(t,e)=>{const r=(t&&t[Hy]).call(t);let s;for(;(s=r.next())&&!s.done;){const i=s.value;e.call(t,i[0],i[1])}},Nte=(t,e)=>{let n;const r=[];for(;(n=t.exec(e))!==null;)r.push(n);return r},Cte=eo("HTMLFormElement"),Tte=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),k9=(({hasOwnProperty:t})=>(e,n)=>t.call(e,n))(Object.prototype),Ete=eo("RegExp"),NI=(t,e)=>{const n=Object.getOwnPropertyDescriptors(t),r={};Rp(n,(s,i)=>{let a;(a=e(s,i,t))!==!1&&(r[i]=a||s)}),Object.defineProperties(t,r)},_te=t=>{NI(t,(e,n)=>{if(wi(t)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=t[n];if(wi(r)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},Mte=(t,e)=>{const n={},r=s=>{s.forEach(i=>{n[i]=!0})};return xf(t)?r(t):r(String(t).split(e)),n},Ate=()=>{},Rte=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e;function Dte(t){return!!(t&&wi(t.append)&&t[wI]==="FormData"&&t[Hy])}const Pte=t=>{const e=new Array(10),n=(r,s)=>{if(Ap(r)){if(e.indexOf(r)>=0)return;if(Mp(r))return r;if(!("toJSON"in r)){e[s]=r;const i=xf(r)?[]:{};return Rp(r,(a,l)=>{const c=n(a,s+1);!Wh(c)&&(i[l]=c)}),e[s]=void 0,i}}return r};return n(t,0)},zte=eo("AsyncFunction"),Ite=t=>t&&(Ap(t)||wi(t))&&wi(t.then)&&wi(t.catch),CI=((t,e)=>t?setImmediate:e?((n,r)=>($u.addEventListener("message",({source:s,data:i})=>{s===$u&&i===n&&r.length&&r.shift()()},!1),s=>{r.push(s),$u.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",wi($u.postMessage)),Lte=typeof queueMicrotask<"u"?queueMicrotask.bind($u):typeof process<"u"&&process.nextTick||CI,Bte=t=>t!=null&&wi(t[Hy]),je={isArray:xf,isArrayBuffer:SI,isBuffer:Mp,isFormData:dte,isArrayBufferView:nte,isString:rte,isNumber:kI,isBoolean:ste,isObject:Ap,isPlainObject:Z1,isEmptyObject:ite,isReadableStream:fte,isRequest:mte,isResponse:pte,isHeaders:gte,isUndefined:Wh,isDate:ate,isFile:ote,isBlob:lte,isRegExp:Ete,isFunction:wi,isStream:ute,isURLSearchParams:hte,isTypedArray:Ote,isFileList:cte,forEach:Rp,merge:ek,extend:vte,trim:xte,stripBOM:yte,inherits:bte,toFlatObject:wte,kindOf:Qy,kindOfTest:eo,endsWith:Ste,toArray:kte,forEachEntry:jte,matchAll:Nte,isHTMLForm:Cte,hasOwnProperty:k9,hasOwnProp:k9,reduceDescriptors:NI,freezeMethods:_te,toObjectSet:Mte,toCamelCase:Tte,noop:Ate,toFiniteNumber:Rte,findKey:OI,global:$u,isContextDefined:jI,isSpecCompliantForm:Dte,toJSONObject:Pte,isAsyncFn:zte,isThenable:Ite,setImmediate:CI,asap:Lte,isIterable:Bte};function Xt(t,e,n,r,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=t,this.name="AxiosError",e&&(this.code=e),n&&(this.config=n),r&&(this.request=r),s&&(this.response=s,this.status=s.status?s.status:null)}je.inherits(Xt,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:je.toJSONObject(this.config),code:this.code,status:this.status}}});const TI=Xt.prototype,EI={};["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(t=>{EI[t]={value:t}});Object.defineProperties(Xt,EI);Object.defineProperty(TI,"isAxiosError",{value:!0});Xt.from=(t,e,n,r,s,i)=>{const a=Object.create(TI);je.toFlatObject(t,a,function(h){return h!==Error.prototype},d=>d!=="isAxiosError");const l=t&&t.message?t.message:"Error",c=e==null&&t?t.code:e;return Xt.call(a,l,c,n,r,s),t&&a.cause==null&&Object.defineProperty(a,"cause",{value:t,configurable:!0}),a.name=t&&t.name||"Error",i&&Object.assign(a,i),a};const Fte=null;function tk(t){return je.isPlainObject(t)||je.isArray(t)}function _I(t){return je.endsWith(t,"[]")?t.slice(0,-2):t}function O9(t,e,n){return t?t.concat(e).map(function(s,i){return s=_I(s),!n&&i?"["+s+"]":s}).join(n?".":""):e}function qte(t){return je.isArray(t)&&!t.some(tk)}const $te=je.toFlatObject(je,{},null,function(e){return/^is[A-Z]/.test(e)});function Uy(t,e,n){if(!je.isObject(t))throw new TypeError("target must be an object");e=e||new FormData,n=je.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(w,S){return!je.isUndefined(S[w])});const r=n.metaTokens,s=n.visitor||h,i=n.dots,a=n.indexes,c=(n.Blob||typeof Blob<"u"&&Blob)&&je.isSpecCompliantForm(e);if(!je.isFunction(s))throw new TypeError("visitor must be a function");function d(y){if(y===null)return"";if(je.isDate(y))return y.toISOString();if(je.isBoolean(y))return y.toString();if(!c&&je.isBlob(y))throw new Xt("Blob is not supported. Use a Buffer instead.");return je.isArrayBuffer(y)||je.isTypedArray(y)?c&&typeof Blob=="function"?new Blob([y]):Buffer.from(y):y}function h(y,w,S){let k=y;if(y&&!S&&typeof y=="object"){if(je.endsWith(w,"{}"))w=r?w:w.slice(0,-2),y=JSON.stringify(y);else if(je.isArray(y)&&qte(y)||(je.isFileList(y)||je.endsWith(w,"[]"))&&(k=je.toArray(y)))return w=_I(w),k.forEach(function(N,T){!(je.isUndefined(N)||N===null)&&e.append(a===!0?O9([w],T,i):a===null?w:w+"[]",d(N))}),!1}return tk(y)?!0:(e.append(O9(S,w,i),d(y)),!1)}const m=[],g=Object.assign($te,{defaultVisitor:h,convertValue:d,isVisitable:tk});function x(y,w){if(!je.isUndefined(y)){if(m.indexOf(y)!==-1)throw Error("Circular reference detected in "+w.join("."));m.push(y),je.forEach(y,function(k,j){(!(je.isUndefined(k)||k===null)&&s.call(e,k,je.isString(j)?j.trim():j,w,g))===!0&&x(k,w?w.concat(j):[j])}),m.pop()}}if(!je.isObject(t))throw new TypeError("data must be an object");return x(t),e}function j9(t){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,function(r){return e[r]})}function _j(t,e){this._pairs=[],t&&Uy(t,this,e)}const MI=_j.prototype;MI.append=function(e,n){this._pairs.push([e,n])};MI.toString=function(e){const n=e?function(r){return e.call(this,r,j9)}:j9;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function Hte(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function AI(t,e,n){if(!e)return t;const r=n&&n.encode||Hte;je.isFunction(n)&&(n={serialize:n});const s=n&&n.serialize;let i;if(s?i=s(e,n):i=je.isURLSearchParams(e)?e.toString():new _j(e,n).toString(r),i){const a=t.indexOf("#");a!==-1&&(t=t.slice(0,a)),t+=(t.indexOf("?")===-1?"?":"&")+i}return t}class N9{constructor(){this.handlers=[]}use(e,n,r){return this.handlers.push({fulfilled:e,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){je.forEach(this.handlers,function(r){r!==null&&e(r)})}}const RI={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},Qte=typeof URLSearchParams<"u"?URLSearchParams:_j,Vte=typeof FormData<"u"?FormData:null,Ute=typeof Blob<"u"?Blob:null,Wte={isBrowser:!0,classes:{URLSearchParams:Qte,FormData:Vte,Blob:Ute},protocols:["http","https","file","blob","url","data"]},Mj=typeof window<"u"&&typeof document<"u",nk=typeof navigator=="object"&&navigator||void 0,Gte=Mj&&(!nk||["ReactNative","NativeScript","NS"].indexOf(nk.product)<0),Xte=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",Yte=Mj&&window.location.href||"http://localhost",Kte=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Mj,hasStandardBrowserEnv:Gte,hasStandardBrowserWebWorkerEnv:Xte,navigator:nk,origin:Yte},Symbol.toStringTag,{value:"Module"})),$s={...Kte,...Wte};function Zte(t,e){return Uy(t,new $s.classes.URLSearchParams,{visitor:function(n,r,s,i){return $s.isNode&&je.isBuffer(n)?(this.append(r,n.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)},...e})}function Jte(t){return je.matchAll(/\w+|\[(\w*)]/g,t).map(e=>e[0]==="[]"?"":e[1]||e[0])}function ene(t){const e={},n=Object.keys(t);let r;const s=n.length;let i;for(r=0;r=n.length;return a=!a&&je.isArray(s)?s.length:a,c?(je.hasOwnProp(s,a)?s[a]=[s[a],r]:s[a]=r,!l):((!s[a]||!je.isObject(s[a]))&&(s[a]=[]),e(n,r,s[a],i)&&je.isArray(s[a])&&(s[a]=ene(s[a])),!l)}if(je.isFormData(t)&&je.isFunction(t.entries)){const n={};return je.forEachEntry(t,(r,s)=>{e(Jte(r),s,n,0)}),n}return null}function tne(t,e,n){if(je.isString(t))try{return(e||JSON.parse)(t),je.trim(t)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(t)}const Dp={transitional:RI,adapter:["xhr","http","fetch"],transformRequest:[function(e,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,i=je.isObject(e);if(i&&je.isHTMLForm(e)&&(e=new FormData(e)),je.isFormData(e))return s?JSON.stringify(DI(e)):e;if(je.isArrayBuffer(e)||je.isBuffer(e)||je.isStream(e)||je.isFile(e)||je.isBlob(e)||je.isReadableStream(e))return e;if(je.isArrayBufferView(e))return e.buffer;if(je.isURLSearchParams(e))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let l;if(i){if(r.indexOf("application/x-www-form-urlencoded")>-1)return Zte(e,this.formSerializer).toString();if((l=je.isFileList(e))||r.indexOf("multipart/form-data")>-1){const c=this.env&&this.env.FormData;return Uy(l?{"files[]":e}:e,c&&new c,this.formSerializer)}}return i||s?(n.setContentType("application/json",!1),tne(e)):e}],transformResponse:[function(e){const n=this.transitional||Dp.transitional,r=n&&n.forcedJSONParsing,s=this.responseType==="json";if(je.isResponse(e)||je.isReadableStream(e))return e;if(e&&je.isString(e)&&(r&&!this.responseType||s)){const a=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(e,this.parseReviver)}catch(l){if(a)throw l.name==="SyntaxError"?Xt.from(l,Xt.ERR_BAD_RESPONSE,this,null,this.response):l}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:$s.classes.FormData,Blob:$s.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};je.forEach(["delete","get","head","post","put","patch"],t=>{Dp.headers[t]={}});const nne=je.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"]),rne=t=>{const e={};let n,r,s;return t&&t.split(` -`).forEach(function(a){s=a.indexOf(":"),n=a.substring(0,s).trim().toLowerCase(),r=a.substring(s+1).trim(),!(!n||e[n]&&nne[n])&&(n==="set-cookie"?e[n]?e[n].push(r):e[n]=[r]:e[n]=e[n]?e[n]+", "+r:r)}),e},C9=Symbol("internals");function Dm(t){return t&&String(t).trim().toLowerCase()}function J1(t){return t===!1||t==null?t:je.isArray(t)?t.map(J1):String(t)}function sne(t){const e=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(t);)e[r[1]]=r[2];return e}const ine=t=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function x4(t,e,n,r,s){if(je.isFunction(r))return r.call(this,e,n);if(s&&(e=n),!!je.isString(e)){if(je.isString(r))return e.indexOf(r)!==-1;if(je.isRegExp(r))return r.test(e)}}function ane(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,n,r)=>n.toUpperCase()+r)}function one(t,e){const n=je.toCamelCase(" "+e);["get","set","has"].forEach(r=>{Object.defineProperty(t,r+n,{value:function(s,i,a){return this[r].call(this,e,s,i,a)},configurable:!0})})}let Si=class{constructor(e){e&&this.set(e)}set(e,n,r){const s=this;function i(l,c,d){const h=Dm(c);if(!h)throw new Error("header name must be a non-empty string");const m=je.findKey(s,h);(!m||s[m]===void 0||d===!0||d===void 0&&s[m]!==!1)&&(s[m||c]=J1(l))}const a=(l,c)=>je.forEach(l,(d,h)=>i(d,h,c));if(je.isPlainObject(e)||e instanceof this.constructor)a(e,n);else if(je.isString(e)&&(e=e.trim())&&!ine(e))a(rne(e),n);else if(je.isObject(e)&&je.isIterable(e)){let l={},c,d;for(const h of e){if(!je.isArray(h))throw TypeError("Object iterator must return a key-value pair");l[d=h[0]]=(c=l[d])?je.isArray(c)?[...c,h[1]]:[c,h[1]]:h[1]}a(l,n)}else e!=null&&i(n,e,r);return this}get(e,n){if(e=Dm(e),e){const r=je.findKey(this,e);if(r){const s=this[r];if(!n)return s;if(n===!0)return sne(s);if(je.isFunction(n))return n.call(this,s,r);if(je.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,n){if(e=Dm(e),e){const r=je.findKey(this,e);return!!(r&&this[r]!==void 0&&(!n||x4(this,this[r],r,n)))}return!1}delete(e,n){const r=this;let s=!1;function i(a){if(a=Dm(a),a){const l=je.findKey(r,a);l&&(!n||x4(r,r[l],l,n))&&(delete r[l],s=!0)}}return je.isArray(e)?e.forEach(i):i(e),s}clear(e){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const i=n[r];(!e||x4(this,this[i],i,e,!0))&&(delete this[i],s=!0)}return s}normalize(e){const n=this,r={};return je.forEach(this,(s,i)=>{const a=je.findKey(r,i);if(a){n[a]=J1(s),delete n[i];return}const l=e?ane(i):String(i).trim();l!==i&&delete n[i],n[l]=J1(s),r[l]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const n=Object.create(null);return je.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=e&&je.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,n])=>e+": "+n).join(` -`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...n){const r=new this(e);return n.forEach(s=>r.set(s)),r}static accessor(e){const r=(this[C9]=this[C9]={accessors:{}}).accessors,s=this.prototype;function i(a){const l=Dm(a);r[l]||(one(s,a),r[l]=!0)}return je.isArray(e)?e.forEach(i):i(e),this}};Si.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);je.reduceDescriptors(Si.prototype,({value:t},e)=>{let n=e[0].toUpperCase()+e.slice(1);return{get:()=>t,set(r){this[n]=r}}});je.freezeMethods(Si);function v4(t,e){const n=this||Dp,r=e||n,s=Si.from(r.headers);let i=r.data;return je.forEach(t,function(l){i=l.call(n,i,s.normalize(),e?e.status:void 0)}),s.normalize(),i}function PI(t){return!!(t&&t.__CANCEL__)}function vf(t,e,n){Xt.call(this,t??"canceled",Xt.ERR_CANCELED,e,n),this.name="CanceledError"}je.inherits(vf,Xt,{__CANCEL__:!0});function zI(t,e,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?t(n):e(new Xt("Request failed with status code "+n.status,[Xt.ERR_BAD_REQUEST,Xt.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function lne(t){const e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return e&&e[1]||""}function cne(t,e){t=t||10;const n=new Array(t),r=new Array(t);let s=0,i=0,a;return e=e!==void 0?e:1e3,function(c){const d=Date.now(),h=r[i];a||(a=d),n[s]=c,r[s]=d;let m=i,g=0;for(;m!==s;)g+=n[m++],m=m%t;if(s=(s+1)%t,s===i&&(i=(i+1)%t),d-a{n=h,s=null,i&&(clearTimeout(i),i=null),t(...d)};return[(...d)=>{const h=Date.now(),m=h-n;m>=r?a(d,h):(s=d,i||(i=setTimeout(()=>{i=null,a(s)},r-m)))},()=>s&&a(s)]}const Mv=(t,e,n=3)=>{let r=0;const s=cne(50,250);return une(i=>{const a=i.loaded,l=i.lengthComputable?i.total:void 0,c=a-r,d=s(c),h=a<=l;r=a;const m={loaded:a,total:l,progress:l?a/l:void 0,bytes:c,rate:d||void 0,estimated:d&&l&&h?(l-a)/d:void 0,event:i,lengthComputable:l!=null,[e?"download":"upload"]:!0};t(m)},n)},T9=(t,e)=>{const n=t!=null;return[r=>e[0]({lengthComputable:n,total:t,loaded:r}),e[1]]},E9=t=>(...e)=>je.asap(()=>t(...e)),dne=$s.hasStandardBrowserEnv?((t,e)=>n=>(n=new URL(n,$s.origin),t.protocol===n.protocol&&t.host===n.host&&(e||t.port===n.port)))(new URL($s.origin),$s.navigator&&/(msie|trident)/i.test($s.navigator.userAgent)):()=>!0,hne=$s.hasStandardBrowserEnv?{write(t,e,n,r,s,i,a){if(typeof document>"u")return;const l=[`${t}=${encodeURIComponent(e)}`];je.isNumber(n)&&l.push(`expires=${new Date(n).toUTCString()}`),je.isString(r)&&l.push(`path=${r}`),je.isString(s)&&l.push(`domain=${s}`),i===!0&&l.push("secure"),je.isString(a)&&l.push(`SameSite=${a}`),document.cookie=l.join("; ")},read(t){if(typeof document>"u")return null;const e=document.cookie.match(new RegExp("(?:^|; )"+t+"=([^;]*)"));return e?decodeURIComponent(e[1]):null},remove(t){this.write(t,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function fne(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}function mne(t,e){return e?t.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):t}function II(t,e,n){let r=!fne(e);return t&&(r||n==!1)?mne(t,e):e}const _9=t=>t instanceof Si?{...t}:t;function rd(t,e){e=e||{};const n={};function r(d,h,m,g){return je.isPlainObject(d)&&je.isPlainObject(h)?je.merge.call({caseless:g},d,h):je.isPlainObject(h)?je.merge({},h):je.isArray(h)?h.slice():h}function s(d,h,m,g){if(je.isUndefined(h)){if(!je.isUndefined(d))return r(void 0,d,m,g)}else return r(d,h,m,g)}function i(d,h){if(!je.isUndefined(h))return r(void 0,h)}function a(d,h){if(je.isUndefined(h)){if(!je.isUndefined(d))return r(void 0,d)}else return r(void 0,h)}function l(d,h,m){if(m in e)return r(d,h);if(m in t)return r(void 0,d)}const c={url:i,method:i,data:i,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:l,headers:(d,h,m)=>s(_9(d),_9(h),m,!0)};return je.forEach(Object.keys({...t,...e}),function(h){const m=c[h]||s,g=m(t[h],e[h],h);je.isUndefined(g)&&m!==l||(n[h]=g)}),n}const LI=t=>{const e=rd({},t);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:i,headers:a,auth:l}=e;if(e.headers=a=Si.from(a),e.url=AI(II(e.baseURL,e.url,e.allowAbsoluteUrls),t.params,t.paramsSerializer),l&&a.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):""))),je.isFormData(n)){if($s.hasStandardBrowserEnv||$s.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if(je.isFunction(n.getHeaders)){const c=n.getHeaders(),d=["content-type","content-length"];Object.entries(c).forEach(([h,m])=>{d.includes(h.toLowerCase())&&a.set(h,m)})}}if($s.hasStandardBrowserEnv&&(r&&je.isFunction(r)&&(r=r(e)),r||r!==!1&&dne(e.url))){const c=s&&i&&hne.read(i);c&&a.set(s,c)}return e},pne=typeof XMLHttpRequest<"u",gne=pne&&function(t){return new Promise(function(n,r){const s=LI(t);let i=s.data;const a=Si.from(s.headers).normalize();let{responseType:l,onUploadProgress:c,onDownloadProgress:d}=s,h,m,g,x,y;function w(){x&&x(),y&&y(),s.cancelToken&&s.cancelToken.unsubscribe(h),s.signal&&s.signal.removeEventListener("abort",h)}let S=new XMLHttpRequest;S.open(s.method.toUpperCase(),s.url,!0),S.timeout=s.timeout;function k(){if(!S)return;const N=Si.from("getAllResponseHeaders"in S&&S.getAllResponseHeaders()),E={data:!l||l==="text"||l==="json"?S.responseText:S.response,status:S.status,statusText:S.statusText,headers:N,config:t,request:S};zI(function(M){n(M),w()},function(M){r(M),w()},E),S=null}"onloadend"in S?S.onloadend=k:S.onreadystatechange=function(){!S||S.readyState!==4||S.status===0&&!(S.responseURL&&S.responseURL.indexOf("file:")===0)||setTimeout(k)},S.onabort=function(){S&&(r(new Xt("Request aborted",Xt.ECONNABORTED,t,S)),S=null)},S.onerror=function(T){const E=T&&T.message?T.message:"Network Error",_=new Xt(E,Xt.ERR_NETWORK,t,S);_.event=T||null,r(_),S=null},S.ontimeout=function(){let T=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const E=s.transitional||RI;s.timeoutErrorMessage&&(T=s.timeoutErrorMessage),r(new Xt(T,E.clarifyTimeoutError?Xt.ETIMEDOUT:Xt.ECONNABORTED,t,S)),S=null},i===void 0&&a.setContentType(null),"setRequestHeader"in S&&je.forEach(a.toJSON(),function(T,E){S.setRequestHeader(E,T)}),je.isUndefined(s.withCredentials)||(S.withCredentials=!!s.withCredentials),l&&l!=="json"&&(S.responseType=s.responseType),d&&([g,y]=Mv(d,!0),S.addEventListener("progress",g)),c&&S.upload&&([m,x]=Mv(c),S.upload.addEventListener("progress",m),S.upload.addEventListener("loadend",x)),(s.cancelToken||s.signal)&&(h=N=>{S&&(r(!N||N.type?new vf(null,t,S):N),S.abort(),S=null)},s.cancelToken&&s.cancelToken.subscribe(h),s.signal&&(s.signal.aborted?h():s.signal.addEventListener("abort",h)));const j=lne(s.url);if(j&&$s.protocols.indexOf(j)===-1){r(new Xt("Unsupported protocol "+j+":",Xt.ERR_BAD_REQUEST,t));return}S.send(i||null)})},xne=(t,e)=>{const{length:n}=t=t?t.filter(Boolean):[];if(e||n){let r=new AbortController,s;const i=function(d){if(!s){s=!0,l();const h=d instanceof Error?d:this.reason;r.abort(h instanceof Xt?h:new vf(h instanceof Error?h.message:h))}};let a=e&&setTimeout(()=>{a=null,i(new Xt(`timeout ${e} of ms exceeded`,Xt.ETIMEDOUT))},e);const l=()=>{t&&(a&&clearTimeout(a),a=null,t.forEach(d=>{d.unsubscribe?d.unsubscribe(i):d.removeEventListener("abort",i)}),t=null)};t.forEach(d=>d.addEventListener("abort",i));const{signal:c}=r;return c.unsubscribe=()=>je.asap(l),c}},vne=function*(t,e){let n=t.byteLength;if(n{const s=yne(t,e);let i=0,a,l=c=>{a||(a=!0,r&&r(c))};return new ReadableStream({async pull(c){try{const{done:d,value:h}=await s.next();if(d){l(),c.close();return}let m=h.byteLength;if(n){let g=i+=m;n(g)}c.enqueue(new Uint8Array(h))}catch(d){throw l(d),d}},cancel(c){return l(c),s.return()}},{highWaterMark:2})},A9=64*1024,{isFunction:Wx}=je,wne=(({Request:t,Response:e})=>({Request:t,Response:e}))(je.global),{ReadableStream:R9,TextEncoder:D9}=je.global,P9=(t,...e)=>{try{return!!t(...e)}catch{return!1}},Sne=t=>{t=je.merge.call({skipUndefined:!0},wne,t);const{fetch:e,Request:n,Response:r}=t,s=e?Wx(e):typeof fetch=="function",i=Wx(n),a=Wx(r);if(!s)return!1;const l=s&&Wx(R9),c=s&&(typeof D9=="function"?(y=>w=>y.encode(w))(new D9):async y=>new Uint8Array(await new n(y).arrayBuffer())),d=i&&l&&P9(()=>{let y=!1;const w=new n($s.origin,{body:new R9,method:"POST",get duplex(){return y=!0,"half"}}).headers.has("Content-Type");return y&&!w}),h=a&&l&&P9(()=>je.isReadableStream(new r("").body)),m={stream:h&&(y=>y.body)};s&&["text","arrayBuffer","blob","formData","stream"].forEach(y=>{!m[y]&&(m[y]=(w,S)=>{let k=w&&w[y];if(k)return k.call(w);throw new Xt(`Response type '${y}' is not supported`,Xt.ERR_NOT_SUPPORT,S)})});const g=async y=>{if(y==null)return 0;if(je.isBlob(y))return y.size;if(je.isSpecCompliantForm(y))return(await new n($s.origin,{method:"POST",body:y}).arrayBuffer()).byteLength;if(je.isArrayBufferView(y)||je.isArrayBuffer(y))return y.byteLength;if(je.isURLSearchParams(y)&&(y=y+""),je.isString(y))return(await c(y)).byteLength},x=async(y,w)=>{const S=je.toFiniteNumber(y.getContentLength());return S??g(w)};return async y=>{let{url:w,method:S,data:k,signal:j,cancelToken:N,timeout:T,onDownloadProgress:E,onUploadProgress:_,responseType:M,headers:I,withCredentials:P="same-origin",fetchOptions:L}=LI(y),H=e||fetch;M=M?(M+"").toLowerCase():"text";let U=xne([j,N&&N.toAbortSignal()],T),ee=null;const z=U&&U.unsubscribe&&(()=>{U.unsubscribe()});let Q;try{if(_&&d&&S!=="get"&&S!=="head"&&(Q=await x(I,k))!==0){let ie=new n(w,{method:"POST",body:k,duplex:"half"}),W;if(je.isFormData(k)&&(W=ie.headers.get("content-type"))&&I.setContentType(W),ie.body){const[q,V]=T9(Q,Mv(E9(_)));k=M9(ie.body,A9,q,V)}}je.isString(P)||(P=P?"include":"omit");const B=i&&"credentials"in n.prototype,X={...L,signal:U,method:S.toUpperCase(),headers:I.normalize().toJSON(),body:k,duplex:"half",credentials:B?P:void 0};ee=i&&new n(w,X);let J=await(i?H(ee,L):H(w,X));const G=h&&(M==="stream"||M==="response");if(h&&(E||G&&z)){const ie={};["status","statusText","headers"].forEach(te=>{ie[te]=J[te]});const W=je.toFiniteNumber(J.headers.get("content-length")),[q,V]=E&&T9(W,Mv(E9(E),!0))||[];J=new r(M9(J.body,A9,q,()=>{V&&V(),z&&z()}),ie)}M=M||"text";let R=await m[je.findKey(m,M)||"text"](J,y);return!G&&z&&z(),await new Promise((ie,W)=>{zI(ie,W,{data:R,headers:Si.from(J.headers),status:J.status,statusText:J.statusText,config:y,request:ee})})}catch(B){throw z&&z(),B&&B.name==="TypeError"&&/Load failed|fetch/i.test(B.message)?Object.assign(new Xt("Network Error",Xt.ERR_NETWORK,y,ee),{cause:B.cause||B}):Xt.from(B,B&&B.code,y,ee)}}},kne=new Map,BI=t=>{let e=t&&t.env||{};const{fetch:n,Request:r,Response:s}=e,i=[r,s,n];let a=i.length,l=a,c,d,h=kne;for(;l--;)c=i[l],d=h.get(c),d===void 0&&h.set(c,d=l?new Map:Sne(e)),h=d;return d};BI();const Aj={http:Fte,xhr:gne,fetch:{get:BI}};je.forEach(Aj,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{value:e})}catch{}Object.defineProperty(t,"adapterName",{value:e})}});const z9=t=>`- ${t}`,One=t=>je.isFunction(t)||t===null||t===!1;function jne(t,e){t=je.isArray(t)?t:[t];const{length:n}=t;let r,s;const i={};for(let a=0;a`adapter ${c} `+(d===!1?"is not supported by the environment":"is not available in the build"));let l=n?a.length>1?`since : -`+a.map(z9).join(` -`):" "+z9(a[0]):"as no adapter specified";throw new Xt("There is no suitable adapter to dispatch the request "+l,"ERR_NOT_SUPPORT")}return s}const FI={getAdapter:jne,adapters:Aj};function y4(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new vf(null,t)}function I9(t){return y4(t),t.headers=Si.from(t.headers),t.data=v4.call(t,t.transformRequest),["post","put","patch"].indexOf(t.method)!==-1&&t.headers.setContentType("application/x-www-form-urlencoded",!1),FI.getAdapter(t.adapter||Dp.adapter,t)(t).then(function(r){return y4(t),r.data=v4.call(t,t.transformResponse,r),r.headers=Si.from(r.headers),r},function(r){return PI(r)||(y4(t),r&&r.response&&(r.response.data=v4.call(t,t.transformResponse,r.response),r.response.headers=Si.from(r.response.headers))),Promise.reject(r)})}const qI="1.13.2",Wy={};["object","boolean","number","function","string","symbol"].forEach((t,e)=>{Wy[t]=function(r){return typeof r===t||"a"+(e<1?"n ":" ")+t}});const L9={};Wy.transitional=function(e,n,r){function s(i,a){return"[Axios v"+qI+"] Transitional option '"+i+"'"+a+(r?". "+r:"")}return(i,a,l)=>{if(e===!1)throw new Xt(s(a," has been removed"+(n?" in "+n:"")),Xt.ERR_DEPRECATED);return n&&!L9[a]&&(L9[a]=!0,console.warn(s(a," has been deprecated since v"+n+" and will be removed in the near future"))),e?e(i,a,l):!0}};Wy.spelling=function(e){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${e}`),!0)};function Nne(t,e,n){if(typeof t!="object")throw new Xt("options must be an object",Xt.ERR_BAD_OPTION_VALUE);const r=Object.keys(t);let s=r.length;for(;s-- >0;){const i=r[s],a=e[i];if(a){const l=t[i],c=l===void 0||a(l,i,t);if(c!==!0)throw new Xt("option "+i+" must be "+c,Xt.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new Xt("Unknown option "+i,Xt.ERR_BAD_OPTION)}}const ev={assertOptions:Nne,validators:Wy},uo=ev.validators;let Zu=class{constructor(e){this.defaults=e||{},this.interceptors={request:new N9,response:new N9}}async request(e,n){try{return await this._request(e,n)}catch(r){if(r instanceof Error){let s={};Error.captureStackTrace?Error.captureStackTrace(s):s=new Error;const i=s.stack?s.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(e,n){typeof e=="string"?(n=n||{},n.url=e):n=e||{},n=rd(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:i}=n;r!==void 0&&ev.assertOptions(r,{silentJSONParsing:uo.transitional(uo.boolean),forcedJSONParsing:uo.transitional(uo.boolean),clarifyTimeoutError:uo.transitional(uo.boolean)},!1),s!=null&&(je.isFunction(s)?n.paramsSerializer={serialize:s}:ev.assertOptions(s,{encode:uo.function,serialize:uo.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),ev.assertOptions(n,{baseUrl:uo.spelling("baseURL"),withXsrfToken:uo.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let a=i&&je.merge(i.common,i[n.method]);i&&je.forEach(["delete","get","head","post","put","patch","common"],y=>{delete i[y]}),n.headers=Si.concat(a,i);const l=[];let c=!0;this.interceptors.request.forEach(function(w){typeof w.runWhen=="function"&&w.runWhen(n)===!1||(c=c&&w.synchronous,l.unshift(w.fulfilled,w.rejected))});const d=[];this.interceptors.response.forEach(function(w){d.push(w.fulfilled,w.rejected)});let h,m=0,g;if(!c){const y=[I9.bind(this),void 0];for(y.unshift(...l),y.push(...d),g=y.length,h=Promise.resolve(n);m{if(!r._listeners)return;let i=r._listeners.length;for(;i-- >0;)r._listeners[i](s);r._listeners=null}),this.promise.then=s=>{let i;const a=new Promise(l=>{r.subscribe(l),i=l}).then(s);return a.cancel=function(){r.unsubscribe(i)},a},e(function(i,a,l){r.reason||(r.reason=new vf(i,a,l),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const n=this._listeners.indexOf(e);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const e=new AbortController,n=r=>{e.abort(r)};return this.subscribe(n),e.signal.unsubscribe=()=>this.unsubscribe(n),e.signal}static source(){let e;return{token:new $I(function(s){e=s}),cancel:e}}};function Tne(t){return function(n){return t.apply(null,n)}}function Ene(t){return je.isObject(t)&&t.isAxiosError===!0}const rk={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,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(rk).forEach(([t,e])=>{rk[e]=t});function HI(t){const e=new Zu(t),n=bI(Zu.prototype.request,e);return je.extend(n,Zu.prototype,e,{allOwnKeys:!0}),je.extend(n,e,null,{allOwnKeys:!0}),n.create=function(s){return HI(rd(t,s))},n}const Br=HI(Dp);Br.Axios=Zu;Br.CanceledError=vf;Br.CancelToken=Cne;Br.isCancel=PI;Br.VERSION=qI;Br.toFormData=Uy;Br.AxiosError=Xt;Br.Cancel=Br.CanceledError;Br.all=function(e){return Promise.all(e)};Br.spread=Tne;Br.isAxiosError=Ene;Br.mergeConfig=rd;Br.AxiosHeaders=Si;Br.formToJSON=t=>DI(je.isHTMLForm(t)?new FormData(t):t);Br.getAdapter=FI.getAdapter;Br.HttpStatusCode=rk;Br.default=Br;const{Axios:wDe,AxiosError:SDe,CanceledError:kDe,isCancel:ODe,CancelToken:jDe,VERSION:NDe,all:CDe,Cancel:TDe,isAxiosError:EDe,spread:_De,toFormData:MDe,AxiosHeaders:ADe,HttpStatusCode:RDe,formToJSON:DDe,getAdapter:PDe,mergeConfig:zDe}=Br,_ne=(t,e)=>{const n=new Array(t.length+e.length);for(let r=0;r({classGroupId:t,validator:e}),QI=(t=new Map,e=null,n)=>({nextPart:t,validators:e,classGroupId:n}),Av="-",B9=[],Ane="arbitrary..",Rne=t=>{const e=Pne(t),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=t;return{getClassGroupId:a=>{if(a.startsWith("[")&&a.endsWith("]"))return Dne(a);const l=a.split(Av),c=l[0]===""&&l.length>1?1:0;return VI(l,c,e)},getConflictingClassGroupIds:(a,l)=>{if(l){const c=r[a],d=n[a];return c?d?_ne(d,c):c:d||B9}return n[a]||B9}}},VI=(t,e,n)=>{if(t.length-e===0)return n.classGroupId;const s=t[e],i=n.nextPart.get(s);if(i){const d=VI(t,e+1,i);if(d)return d}const a=n.validators;if(a===null)return;const l=e===0?t.join(Av):t.slice(e).join(Av),c=a.length;for(let d=0;dt.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const e=t.slice(1,-1),n=e.indexOf(":"),r=e.slice(0,n);return r?Ane+r:void 0})(),Pne=t=>{const{theme:e,classGroups:n}=t;return zne(n,e)},zne=(t,e)=>{const n=QI();for(const r in t){const s=t[r];Rj(s,n,r,e)}return n},Rj=(t,e,n,r)=>{const s=t.length;for(let i=0;i{if(typeof t=="string"){Lne(t,e,n);return}if(typeof t=="function"){Bne(t,e,n,r);return}Fne(t,e,n,r)},Lne=(t,e,n)=>{const r=t===""?e:UI(e,t);r.classGroupId=n},Bne=(t,e,n,r)=>{if(qne(t)){Rj(t(r),e,n,r);return}e.validators===null&&(e.validators=[]),e.validators.push(Mne(n,t))},Fne=(t,e,n,r)=>{const s=Object.entries(t),i=s.length;for(let a=0;a{let n=t;const r=e.split(Av),s=r.length;for(let i=0;i"isThemeGetter"in t&&t.isThemeGetter===!0,$ne=t=>{if(t<1)return{get:()=>{},set:()=>{}};let e=0,n=Object.create(null),r=Object.create(null);const s=(i,a)=>{n[i]=a,e++,e>t&&(e=0,r=n,n=Object.create(null))};return{get(i){let a=n[i];if(a!==void 0)return a;if((a=r[i])!==void 0)return s(i,a),a},set(i,a){i in n?n[i]=a:s(i,a)}}},sk="!",F9=":",Hne=[],q9=(t,e,n,r,s)=>({modifiers:t,hasImportantModifier:e,baseClassName:n,maybePostfixModifierPosition:r,isExternal:s}),Qne=t=>{const{prefix:e,experimentalParseClassName:n}=t;let r=s=>{const i=[];let a=0,l=0,c=0,d;const h=s.length;for(let w=0;wc?d-c:void 0;return q9(i,x,g,y)};if(e){const s=e+F9,i=r;r=a=>a.startsWith(s)?i(a.slice(s.length)):q9(Hne,!1,a,void 0,!0)}if(n){const s=r;r=i=>n({className:i,parseClassName:s})}return r},Vne=t=>{const e=new Map;return t.orderSensitiveModifiers.forEach((n,r)=>{e.set(n,1e6+r)}),n=>{const r=[];let s=[];for(let i=0;i0&&(s.sort(),r.push(...s),s=[]),r.push(a)):s.push(a)}return s.length>0&&(s.sort(),r.push(...s)),r}},Une=t=>({cache:$ne(t.cacheSize),parseClassName:Qne(t),sortModifiers:Vne(t),...Rne(t)}),Wne=/\s+/,Gne=(t,e)=>{const{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:s,sortModifiers:i}=e,a=[],l=t.trim().split(Wne);let c="";for(let d=l.length-1;d>=0;d-=1){const h=l[d],{isExternal:m,modifiers:g,hasImportantModifier:x,baseClassName:y,maybePostfixModifierPosition:w}=n(h);if(m){c=h+(c.length>0?" "+c:c);continue}let S=!!w,k=r(S?y.substring(0,w):y);if(!k){if(!S){c=h+(c.length>0?" "+c:c);continue}if(k=r(y),!k){c=h+(c.length>0?" "+c:c);continue}S=!1}const j=g.length===0?"":g.length===1?g[0]:i(g).join(":"),N=x?j+sk:j,T=N+k;if(a.indexOf(T)>-1)continue;a.push(T);const E=s(k,S);for(let _=0;_0?" "+c:c)}return c},Xne=(...t)=>{let e=0,n,r,s="";for(;e{if(typeof t=="string")return t;let e,n="";for(let r=0;r{let n,r,s,i;const a=c=>{const d=e.reduce((h,m)=>m(h),t());return n=Une(d),r=n.cache.get,s=n.cache.set,i=l,l(c)},l=c=>{const d=r(c);if(d)return d;const h=Gne(c,n);return s(c,h),h};return i=a,(...c)=>i(Xne(...c))},Kne=[],ls=t=>{const e=n=>n[t]||Kne;return e.isThemeGetter=!0,e},GI=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,XI=/^\((?:(\w[\w-]*):)?(.+)\)$/i,Zne=/^\d+\/\d+$/,Jne=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,ere=/\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$/,tre=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,nre=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,rre=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ih=t=>Zne.test(t),rn=t=>!!t&&!Number.isNaN(Number(t)),Oc=t=>!!t&&Number.isInteger(Number(t)),b4=t=>t.endsWith("%")&&rn(t.slice(0,-1)),gl=t=>Jne.test(t),sre=()=>!0,ire=t=>ere.test(t)&&!tre.test(t),YI=()=>!1,are=t=>nre.test(t),ore=t=>rre.test(t),lre=t=>!dt(t)&&!ht(t),cre=t=>yf(t,JI,YI),dt=t=>GI.test(t),Au=t=>yf(t,eL,ire),w4=t=>yf(t,mre,rn),$9=t=>yf(t,KI,YI),ure=t=>yf(t,ZI,ore),Gx=t=>yf(t,tL,are),ht=t=>XI.test(t),Pm=t=>bf(t,eL),dre=t=>bf(t,pre),H9=t=>bf(t,KI),hre=t=>bf(t,JI),fre=t=>bf(t,ZI),Xx=t=>bf(t,tL,!0),yf=(t,e,n)=>{const r=GI.exec(t);return r?r[1]?e(r[1]):n(r[2]):!1},bf=(t,e,n=!1)=>{const r=XI.exec(t);return r?r[1]?e(r[1]):n:!1},KI=t=>t==="position"||t==="percentage",ZI=t=>t==="image"||t==="url",JI=t=>t==="length"||t==="size"||t==="bg-size",eL=t=>t==="length",mre=t=>t==="number",pre=t=>t==="family-name",tL=t=>t==="shadow",gre=()=>{const t=ls("color"),e=ls("font"),n=ls("text"),r=ls("font-weight"),s=ls("tracking"),i=ls("leading"),a=ls("breakpoint"),l=ls("container"),c=ls("spacing"),d=ls("radius"),h=ls("shadow"),m=ls("inset-shadow"),g=ls("text-shadow"),x=ls("drop-shadow"),y=ls("blur"),w=ls("perspective"),S=ls("aspect"),k=ls("ease"),j=ls("animate"),N=()=>["auto","avoid","all","avoid-page","page","left","right","column"],T=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],E=()=>[...T(),ht,dt],_=()=>["auto","hidden","clip","visible","scroll"],M=()=>["auto","contain","none"],I=()=>[ht,dt,c],P=()=>[ih,"full","auto",...I()],L=()=>[Oc,"none","subgrid",ht,dt],H=()=>["auto",{span:["full",Oc,ht,dt]},Oc,ht,dt],U=()=>[Oc,"auto",ht,dt],ee=()=>["auto","min","max","fr",ht,dt],z=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],Q=()=>["start","end","center","stretch","center-safe","end-safe"],B=()=>["auto",...I()],X=()=>[ih,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...I()],J=()=>[t,ht,dt],G=()=>[...T(),H9,$9,{position:[ht,dt]}],R=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ie=()=>["auto","cover","contain",hre,cre,{size:[ht,dt]}],W=()=>[b4,Pm,Au],q=()=>["","none","full",d,ht,dt],V=()=>["",rn,Pm,Au],te=()=>["solid","dashed","dotted","double"],ne=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],K=()=>[rn,b4,H9,$9],se=()=>["","none",y,ht,dt],re=()=>["none",rn,ht,dt],oe=()=>["none",rn,ht,dt],Te=()=>[rn,ht,dt],We=()=>[ih,"full",...I()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[gl],breakpoint:[gl],color:[sre],container:[gl],"drop-shadow":[gl],ease:["in","out","in-out"],font:[lre],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[gl],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[gl],shadow:[gl],spacing:["px",rn],text:[gl],"text-shadow":[gl],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",ih,dt,ht,S]}],container:["container"],columns:[{columns:[rn,dt,ht,l]}],"break-after":[{"break-after":N()}],"break-before":[{"break-before":N()}],"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:E()}],overflow:[{overflow:_()}],"overflow-x":[{"overflow-x":_()}],"overflow-y":[{"overflow-y":_()}],overscroll:[{overscroll:M()}],"overscroll-x":[{"overscroll-x":M()}],"overscroll-y":[{"overscroll-y":M()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:P()}],"inset-x":[{"inset-x":P()}],"inset-y":[{"inset-y":P()}],start:[{start:P()}],end:[{end:P()}],top:[{top:P()}],right:[{right:P()}],bottom:[{bottom:P()}],left:[{left:P()}],visibility:["visible","invisible","collapse"],z:[{z:[Oc,"auto",ht,dt]}],basis:[{basis:[ih,"full","auto",l,...I()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[rn,ih,"auto","initial","none",dt]}],grow:[{grow:["",rn,ht,dt]}],shrink:[{shrink:["",rn,ht,dt]}],order:[{order:[Oc,"first","last","none",ht,dt]}],"grid-cols":[{"grid-cols":L()}],"col-start-end":[{col:H()}],"col-start":[{"col-start":U()}],"col-end":[{"col-end":U()}],"grid-rows":[{"grid-rows":L()}],"row-start-end":[{row:H()}],"row-start":[{"row-start":U()}],"row-end":[{"row-end":U()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":ee()}],"auto-rows":[{"auto-rows":ee()}],gap:[{gap:I()}],"gap-x":[{"gap-x":I()}],"gap-y":[{"gap-y":I()}],"justify-content":[{justify:[...z(),"normal"]}],"justify-items":[{"justify-items":[...Q(),"normal"]}],"justify-self":[{"justify-self":["auto",...Q()]}],"align-content":[{content:["normal",...z()]}],"align-items":[{items:[...Q(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...Q(),{baseline:["","last"]}]}],"place-content":[{"place-content":z()}],"place-items":[{"place-items":[...Q(),"baseline"]}],"place-self":[{"place-self":["auto",...Q()]}],p:[{p:I()}],px:[{px:I()}],py:[{py:I()}],ps:[{ps:I()}],pe:[{pe:I()}],pt:[{pt:I()}],pr:[{pr:I()}],pb:[{pb:I()}],pl:[{pl:I()}],m:[{m:B()}],mx:[{mx:B()}],my:[{my:B()}],ms:[{ms:B()}],me:[{me:B()}],mt:[{mt:B()}],mr:[{mr:B()}],mb:[{mb:B()}],ml:[{ml:B()}],"space-x":[{"space-x":I()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":I()}],"space-y-reverse":["space-y-reverse"],size:[{size:X()}],w:[{w:[l,"screen",...X()]}],"min-w":[{"min-w":[l,"screen","none",...X()]}],"max-w":[{"max-w":[l,"screen","none","prose",{screen:[a]},...X()]}],h:[{h:["screen","lh",...X()]}],"min-h":[{"min-h":["screen","lh","none",...X()]}],"max-h":[{"max-h":["screen","lh",...X()]}],"font-size":[{text:["base",n,Pm,Au]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,ht,w4]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",b4,dt]}],"font-family":[{font:[dre,dt,e]}],"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:[s,ht,dt]}],"line-clamp":[{"line-clamp":[rn,"none",ht,w4]}],leading:[{leading:[i,...I()]}],"list-image":[{"list-image":["none",ht,dt]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",ht,dt]}],"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:[...te(),"wavy"]}],"text-decoration-thickness":[{decoration:[rn,"from-font","auto",ht,Au]}],"text-decoration-color":[{decoration:J()}],"underline-offset":[{"underline-offset":[rn,"auto",ht,dt]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:I()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",ht,dt]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",ht,dt]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:G()}],"bg-repeat":[{bg:R()}],"bg-size":[{bg:ie()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Oc,ht,dt],radial:["",ht,dt],conic:[Oc,ht,dt]},fre,ure]}],"bg-color":[{bg:J()}],"gradient-from-pos":[{from:W()}],"gradient-via-pos":[{via:W()}],"gradient-to-pos":[{to:W()}],"gradient-from":[{from:J()}],"gradient-via":[{via:J()}],"gradient-to":[{to:J()}],rounded:[{rounded:q()}],"rounded-s":[{"rounded-s":q()}],"rounded-e":[{"rounded-e":q()}],"rounded-t":[{"rounded-t":q()}],"rounded-r":[{"rounded-r":q()}],"rounded-b":[{"rounded-b":q()}],"rounded-l":[{"rounded-l":q()}],"rounded-ss":[{"rounded-ss":q()}],"rounded-se":[{"rounded-se":q()}],"rounded-ee":[{"rounded-ee":q()}],"rounded-es":[{"rounded-es":q()}],"rounded-tl":[{"rounded-tl":q()}],"rounded-tr":[{"rounded-tr":q()}],"rounded-br":[{"rounded-br":q()}],"rounded-bl":[{"rounded-bl":q()}],"border-w":[{border:V()}],"border-w-x":[{"border-x":V()}],"border-w-y":[{"border-y":V()}],"border-w-s":[{"border-s":V()}],"border-w-e":[{"border-e":V()}],"border-w-t":[{"border-t":V()}],"border-w-r":[{"border-r":V()}],"border-w-b":[{"border-b":V()}],"border-w-l":[{"border-l":V()}],"divide-x":[{"divide-x":V()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":V()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...te(),"hidden","none"]}],"divide-style":[{divide:[...te(),"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:[...te(),"none","hidden"]}],"outline-offset":[{"outline-offset":[rn,ht,dt]}],"outline-w":[{outline:["",rn,Pm,Au]}],"outline-color":[{outline:J()}],shadow:[{shadow:["","none",h,Xx,Gx]}],"shadow-color":[{shadow:J()}],"inset-shadow":[{"inset-shadow":["none",m,Xx,Gx]}],"inset-shadow-color":[{"inset-shadow":J()}],"ring-w":[{ring:V()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:J()}],"ring-offset-w":[{"ring-offset":[rn,Au]}],"ring-offset-color":[{"ring-offset":J()}],"inset-ring-w":[{"inset-ring":V()}],"inset-ring-color":[{"inset-ring":J()}],"text-shadow":[{"text-shadow":["none",g,Xx,Gx]}],"text-shadow-color":[{"text-shadow":J()}],opacity:[{opacity:[rn,ht,dt]}],"mix-blend":[{"mix-blend":[...ne(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ne()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[rn]}],"mask-image-linear-from-pos":[{"mask-linear-from":K()}],"mask-image-linear-to-pos":[{"mask-linear-to":K()}],"mask-image-linear-from-color":[{"mask-linear-from":J()}],"mask-image-linear-to-color":[{"mask-linear-to":J()}],"mask-image-t-from-pos":[{"mask-t-from":K()}],"mask-image-t-to-pos":[{"mask-t-to":K()}],"mask-image-t-from-color":[{"mask-t-from":J()}],"mask-image-t-to-color":[{"mask-t-to":J()}],"mask-image-r-from-pos":[{"mask-r-from":K()}],"mask-image-r-to-pos":[{"mask-r-to":K()}],"mask-image-r-from-color":[{"mask-r-from":J()}],"mask-image-r-to-color":[{"mask-r-to":J()}],"mask-image-b-from-pos":[{"mask-b-from":K()}],"mask-image-b-to-pos":[{"mask-b-to":K()}],"mask-image-b-from-color":[{"mask-b-from":J()}],"mask-image-b-to-color":[{"mask-b-to":J()}],"mask-image-l-from-pos":[{"mask-l-from":K()}],"mask-image-l-to-pos":[{"mask-l-to":K()}],"mask-image-l-from-color":[{"mask-l-from":J()}],"mask-image-l-to-color":[{"mask-l-to":J()}],"mask-image-x-from-pos":[{"mask-x-from":K()}],"mask-image-x-to-pos":[{"mask-x-to":K()}],"mask-image-x-from-color":[{"mask-x-from":J()}],"mask-image-x-to-color":[{"mask-x-to":J()}],"mask-image-y-from-pos":[{"mask-y-from":K()}],"mask-image-y-to-pos":[{"mask-y-to":K()}],"mask-image-y-from-color":[{"mask-y-from":J()}],"mask-image-y-to-color":[{"mask-y-to":J()}],"mask-image-radial":[{"mask-radial":[ht,dt]}],"mask-image-radial-from-pos":[{"mask-radial-from":K()}],"mask-image-radial-to-pos":[{"mask-radial-to":K()}],"mask-image-radial-from-color":[{"mask-radial-from":J()}],"mask-image-radial-to-color":[{"mask-radial-to":J()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":T()}],"mask-image-conic-pos":[{"mask-conic":[rn]}],"mask-image-conic-from-pos":[{"mask-conic-from":K()}],"mask-image-conic-to-pos":[{"mask-conic-to":K()}],"mask-image-conic-from-color":[{"mask-conic-from":J()}],"mask-image-conic-to-color":[{"mask-conic-to":J()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:G()}],"mask-repeat":[{mask:R()}],"mask-size":[{mask:ie()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",ht,dt]}],filter:[{filter:["","none",ht,dt]}],blur:[{blur:se()}],brightness:[{brightness:[rn,ht,dt]}],contrast:[{contrast:[rn,ht,dt]}],"drop-shadow":[{"drop-shadow":["","none",x,Xx,Gx]}],"drop-shadow-color":[{"drop-shadow":J()}],grayscale:[{grayscale:["",rn,ht,dt]}],"hue-rotate":[{"hue-rotate":[rn,ht,dt]}],invert:[{invert:["",rn,ht,dt]}],saturate:[{saturate:[rn,ht,dt]}],sepia:[{sepia:["",rn,ht,dt]}],"backdrop-filter":[{"backdrop-filter":["","none",ht,dt]}],"backdrop-blur":[{"backdrop-blur":se()}],"backdrop-brightness":[{"backdrop-brightness":[rn,ht,dt]}],"backdrop-contrast":[{"backdrop-contrast":[rn,ht,dt]}],"backdrop-grayscale":[{"backdrop-grayscale":["",rn,ht,dt]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[rn,ht,dt]}],"backdrop-invert":[{"backdrop-invert":["",rn,ht,dt]}],"backdrop-opacity":[{"backdrop-opacity":[rn,ht,dt]}],"backdrop-saturate":[{"backdrop-saturate":[rn,ht,dt]}],"backdrop-sepia":[{"backdrop-sepia":["",rn,ht,dt]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":I()}],"border-spacing-x":[{"border-spacing-x":I()}],"border-spacing-y":[{"border-spacing-y":I()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",ht,dt]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[rn,"initial",ht,dt]}],ease:[{ease:["linear","initial",k,ht,dt]}],delay:[{delay:[rn,ht,dt]}],animate:[{animate:["none",j,ht,dt]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,ht,dt]}],"perspective-origin":[{"perspective-origin":E()}],rotate:[{rotate:re()}],"rotate-x":[{"rotate-x":re()}],"rotate-y":[{"rotate-y":re()}],"rotate-z":[{"rotate-z":re()}],scale:[{scale:oe()}],"scale-x":[{"scale-x":oe()}],"scale-y":[{"scale-y":oe()}],"scale-z":[{"scale-z":oe()}],"scale-3d":["scale-3d"],skew:[{skew:Te()}],"skew-x":[{"skew-x":Te()}],"skew-y":[{"skew-y":Te()}],transform:[{transform:[ht,dt,"","none","gpu","cpu"]}],"transform-origin":[{origin:E()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:We()}],"translate-x":[{"translate-x":We()}],"translate-y":[{"translate-y":We()}],"translate-z":[{"translate-z":We()}],"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",ht,dt]}],"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":I()}],"scroll-mx":[{"scroll-mx":I()}],"scroll-my":[{"scroll-my":I()}],"scroll-ms":[{"scroll-ms":I()}],"scroll-me":[{"scroll-me":I()}],"scroll-mt":[{"scroll-mt":I()}],"scroll-mr":[{"scroll-mr":I()}],"scroll-mb":[{"scroll-mb":I()}],"scroll-ml":[{"scroll-ml":I()}],"scroll-p":[{"scroll-p":I()}],"scroll-px":[{"scroll-px":I()}],"scroll-py":[{"scroll-py":I()}],"scroll-ps":[{"scroll-ps":I()}],"scroll-pe":[{"scroll-pe":I()}],"scroll-pt":[{"scroll-pt":I()}],"scroll-pr":[{"scroll-pr":I()}],"scroll-pb":[{"scroll-pb":I()}],"scroll-pl":[{"scroll-pl":I()}],"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",ht,dt]}],fill:[{fill:["none",...J()]}],"stroke-w":[{stroke:[rn,Pm,Au,w4]}],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-x","border-w-y","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-x","border-color-y","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:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},xre=Yne(gre);function ve(...t){return xre(Rz(t))}const qt=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:ve("rounded-xl border bg-card text-card-foreground shadow",t),...e}));qt.displayName="Card";const Fn=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:ve("flex flex-col space-y-1.5 p-6",t),...e}));Fn.displayName="CardHeader";const qn=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:ve("font-semibold leading-none tracking-tight",t),...e}));qn.displayName="CardTitle";const ts=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:ve("text-sm text-muted-foreground",t),...e}));ts.displayName="CardDescription";const Gn=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:ve("p-6 pt-0",t),...e}));Gn.displayName="CardContent";const nL=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:ve("flex items-center p-6 pt-0",t),...e}));nL.displayName="CardFooter";var S4="rovingFocusGroup.onEntryFocus",vre={bubbles:!1,cancelable:!0},Pp="RovingFocusGroup",[ik,rL,yre]=Dy(Pp),[bre,Gy]=Ra(Pp,[yre]),[wre,Sre]=bre(Pp),sL=b.forwardRef((t,e)=>o.jsx(ik.Provider,{scope:t.__scopeRovingFocusGroup,children:o.jsx(ik.Slot,{scope:t.__scopeRovingFocusGroup,children:o.jsx(kre,{...t,ref:e})})}));sL.displayName=Pp;var kre=b.forwardRef((t,e)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:s=!1,dir:i,currentTabStopId:a,defaultCurrentTabStopId:l,onCurrentTabStopIdChange:c,onEntryFocus:d,preventScrollOnEntryFocus:h=!1,...m}=t,g=b.useRef(null),x=Yn(e,g),y=Np(i),[w,S]=Gl({prop:a,defaultProp:l??null,onChange:c,caller:Pp}),[k,j]=b.useState(!1),N=qs(d),T=rL(n),E=b.useRef(!1),[_,M]=b.useState(0);return b.useEffect(()=>{const I=g.current;if(I)return I.addEventListener(S4,N),()=>I.removeEventListener(S4,N)},[N]),o.jsx(wre,{scope:n,orientation:r,dir:y,loop:s,currentTabStopId:w,onItemFocus:b.useCallback(I=>S(I),[S]),onItemShiftTab:b.useCallback(()=>j(!0),[]),onFocusableItemAdd:b.useCallback(()=>M(I=>I+1),[]),onFocusableItemRemove:b.useCallback(()=>M(I=>I-1),[]),children:o.jsx(gn.div,{tabIndex:k||_===0?-1:0,"data-orientation":r,...m,ref:x,style:{outline:"none",...t.style},onMouseDown:nt(t.onMouseDown,()=>{E.current=!0}),onFocus:nt(t.onFocus,I=>{const P=!E.current;if(I.target===I.currentTarget&&P&&!k){const L=new CustomEvent(S4,vre);if(I.currentTarget.dispatchEvent(L),!L.defaultPrevented){const H=T().filter(B=>B.focusable),U=H.find(B=>B.active),ee=H.find(B=>B.id===w),Q=[U,ee,...H].filter(Boolean).map(B=>B.ref.current);oL(Q,h)}}E.current=!1}),onBlur:nt(t.onBlur,()=>j(!1))})})}),iL="RovingFocusGroupItem",aL=b.forwardRef((t,e)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:s=!1,tabStopId:i,children:a,...l}=t,c=Ui(),d=i||c,h=Sre(iL,n),m=h.currentTabStopId===d,g=rL(n),{onFocusableItemAdd:x,onFocusableItemRemove:y,currentTabStopId:w}=h;return b.useEffect(()=>{if(r)return x(),()=>y()},[r,x,y]),o.jsx(ik.ItemSlot,{scope:n,id:d,focusable:r,active:s,children:o.jsx(gn.span,{tabIndex:m?0:-1,"data-orientation":h.orientation,...l,ref:e,onMouseDown:nt(t.onMouseDown,S=>{r?h.onItemFocus(d):S.preventDefault()}),onFocus:nt(t.onFocus,()=>h.onItemFocus(d)),onKeyDown:nt(t.onKeyDown,S=>{if(S.key==="Tab"&&S.shiftKey){h.onItemShiftTab();return}if(S.target!==S.currentTarget)return;const k=Nre(S,h.orientation,h.dir);if(k!==void 0){if(S.metaKey||S.ctrlKey||S.altKey||S.shiftKey)return;S.preventDefault();let N=g().filter(T=>T.focusable).map(T=>T.ref.current);if(k==="last")N.reverse();else if(k==="prev"||k==="next"){k==="prev"&&N.reverse();const T=N.indexOf(S.currentTarget);N=h.loop?Cre(N,T+1):N.slice(T+1)}setTimeout(()=>oL(N))}}),children:typeof a=="function"?a({isCurrentTabStop:m,hasTabStop:w!=null}):a})})});aL.displayName=iL;var Ore={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function jre(t,e){return e!=="rtl"?t:t==="ArrowLeft"?"ArrowRight":t==="ArrowRight"?"ArrowLeft":t}function Nre(t,e,n){const r=jre(t.key,n);if(!(e==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(e==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return Ore[r]}function oL(t,e=!1){const n=document.activeElement;for(const r of t)if(r===n||(r.focus({preventScroll:e}),document.activeElement!==n))return}function Cre(t,e){return t.map((n,r)=>t[(e+r)%t.length])}var lL=sL,cL=aL,Xy="Tabs",[Tre]=Ra(Xy,[Gy]),uL=Gy(),[Ere,Dj]=Tre(Xy),dL=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,onValueChange:s,defaultValue:i,orientation:a="horizontal",dir:l,activationMode:c="automatic",...d}=t,h=Np(l),[m,g]=Gl({prop:r,onChange:s,defaultProp:i??"",caller:Xy});return o.jsx(Ere,{scope:n,baseId:Ui(),value:m,onValueChange:g,orientation:a,dir:h,activationMode:c,children:o.jsx(gn.div,{dir:h,"data-orientation":a,...d,ref:e})})});dL.displayName=Xy;var hL="TabsList",fL=b.forwardRef((t,e)=>{const{__scopeTabs:n,loop:r=!0,...s}=t,i=Dj(hL,n),a=uL(n);return o.jsx(lL,{asChild:!0,...a,orientation:i.orientation,dir:i.dir,loop:r,children:o.jsx(gn.div,{role:"tablist","aria-orientation":i.orientation,...s,ref:e})})});fL.displayName=hL;var mL="TabsTrigger",pL=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,disabled:s=!1,...i}=t,a=Dj(mL,n),l=uL(n),c=vL(a.baseId,r),d=yL(a.baseId,r),h=r===a.value;return o.jsx(cL,{asChild:!0,...l,focusable:!s,active:h,children:o.jsx(gn.button,{type:"button",role:"tab","aria-selected":h,"aria-controls":d,"data-state":h?"active":"inactive","data-disabled":s?"":void 0,disabled:s,id:c,...i,ref:e,onMouseDown:nt(t.onMouseDown,m=>{!s&&m.button===0&&m.ctrlKey===!1?a.onValueChange(r):m.preventDefault()}),onKeyDown:nt(t.onKeyDown,m=>{[" ","Enter"].includes(m.key)&&a.onValueChange(r)}),onFocus:nt(t.onFocus,()=>{const m=a.activationMode!=="manual";!h&&!s&&m&&a.onValueChange(r)})})})});pL.displayName=mL;var gL="TabsContent",xL=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,forceMount:s,children:i,...a}=t,l=Dj(gL,n),c=vL(l.baseId,r),d=yL(l.baseId,r),h=r===l.value,m=b.useRef(h);return b.useEffect(()=>{const g=requestAnimationFrame(()=>m.current=!1);return()=>cancelAnimationFrame(g)},[]),o.jsx(si,{present:s||h,children:({present:g})=>o.jsx(gn.div,{"data-state":h?"active":"inactive","data-orientation":l.orientation,role:"tabpanel","aria-labelledby":c,hidden:!g,id:d,tabIndex:0,...a,ref:e,style:{...t.style,animationDuration:m.current?"0s":void 0},children:g&&i})})});xL.displayName=gL;function vL(t,e){return`${t}-trigger-${e}`}function yL(t,e){return`${t}-content-${e}`}var _re=dL,bL=fL,wL=pL,SL=xL;const ja=_re,Wi=b.forwardRef(({className:t,...e},n)=>o.jsx(bL,{ref:n,className:ve("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",t),...e}));Wi.displayName=bL.displayName;const Lt=b.forwardRef(({className:t,...e},n)=>o.jsx(wL,{ref:n,className:ve("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all duration-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",t),...e}));Lt.displayName=wL.displayName;const un=b.forwardRef(({className:t,...e},n)=>o.jsx(SL,{ref:n,className:ve("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[state=active]:animate-in data-[state=active]:fade-in data-[state=active]:duration-300",t),...e}));un.displayName=SL.displayName;function Mre(t,e){return b.useReducer((n,r)=>e[n][r]??n,t)}var Pj="ScrollArea",[kL]=Ra(Pj),[Are,Da]=kL(Pj),OL=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,type:r="hover",dir:s,scrollHideDelay:i=600,...a}=t,[l,c]=b.useState(null),[d,h]=b.useState(null),[m,g]=b.useState(null),[x,y]=b.useState(null),[w,S]=b.useState(null),[k,j]=b.useState(0),[N,T]=b.useState(0),[E,_]=b.useState(!1),[M,I]=b.useState(!1),P=Yn(e,H=>c(H)),L=Np(s);return o.jsx(Are,{scope:n,type:r,dir:L,scrollHideDelay:i,scrollArea:l,viewport:d,onViewportChange:h,content:m,onContentChange:g,scrollbarX:x,onScrollbarXChange:y,scrollbarXEnabled:E,onScrollbarXEnabledChange:_,scrollbarY:w,onScrollbarYChange:S,scrollbarYEnabled:M,onScrollbarYEnabledChange:I,onCornerWidthChange:j,onCornerHeightChange:T,children:o.jsx(gn.div,{dir:L,...a,ref:P,style:{position:"relative","--radix-scroll-area-corner-width":k+"px","--radix-scroll-area-corner-height":N+"px",...t.style}})})});OL.displayName=Pj;var jL="ScrollAreaViewport",NL=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,children:r,nonce:s,...i}=t,a=Da(jL,n),l=b.useRef(null),c=Yn(e,l,a.onViewportChange);return o.jsxs(o.Fragment,{children:[o.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:s}),o.jsx(gn.div,{"data-radix-scroll-area-viewport":"",...i,ref:c,style:{overflowX:a.scrollbarXEnabled?"scroll":"hidden",overflowY:a.scrollbarYEnabled?"scroll":"hidden",...t.style},children:o.jsx("div",{ref:a.onContentChange,style:{minWidth:"100%",display:"table"},children:r})})]})});NL.displayName=jL;var Bo="ScrollAreaScrollbar",zj=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=Da(Bo,t.__scopeScrollArea),{onScrollbarXEnabledChange:i,onScrollbarYEnabledChange:a}=s,l=t.orientation==="horizontal";return b.useEffect(()=>(l?i(!0):a(!0),()=>{l?i(!1):a(!1)}),[l,i,a]),s.type==="hover"?o.jsx(Rre,{...r,ref:e,forceMount:n}):s.type==="scroll"?o.jsx(Dre,{...r,ref:e,forceMount:n}):s.type==="auto"?o.jsx(CL,{...r,ref:e,forceMount:n}):s.type==="always"?o.jsx(Ij,{...r,ref:e}):null});zj.displayName=Bo;var Rre=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=Da(Bo,t.__scopeScrollArea),[i,a]=b.useState(!1);return b.useEffect(()=>{const l=s.scrollArea;let c=0;if(l){const d=()=>{window.clearTimeout(c),a(!0)},h=()=>{c=window.setTimeout(()=>a(!1),s.scrollHideDelay)};return l.addEventListener("pointerenter",d),l.addEventListener("pointerleave",h),()=>{window.clearTimeout(c),l.removeEventListener("pointerenter",d),l.removeEventListener("pointerleave",h)}}},[s.scrollArea,s.scrollHideDelay]),o.jsx(si,{present:n||i,children:o.jsx(CL,{"data-state":i?"visible":"hidden",...r,ref:e})})}),Dre=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=Da(Bo,t.__scopeScrollArea),i=t.orientation==="horizontal",a=Ky(()=>c("SCROLL_END"),100),[l,c]=Mre("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return b.useEffect(()=>{if(l==="idle"){const d=window.setTimeout(()=>c("HIDE"),s.scrollHideDelay);return()=>window.clearTimeout(d)}},[l,s.scrollHideDelay,c]),b.useEffect(()=>{const d=s.viewport,h=i?"scrollLeft":"scrollTop";if(d){let m=d[h];const g=()=>{const x=d[h];m!==x&&(c("SCROLL"),a()),m=x};return d.addEventListener("scroll",g),()=>d.removeEventListener("scroll",g)}},[s.viewport,i,c,a]),o.jsx(si,{present:n||l!=="hidden",children:o.jsx(Ij,{"data-state":l==="hidden"?"hidden":"visible",...r,ref:e,onPointerEnter:nt(t.onPointerEnter,()=>c("POINTER_ENTER")),onPointerLeave:nt(t.onPointerLeave,()=>c("POINTER_LEAVE"))})})}),CL=b.forwardRef((t,e)=>{const n=Da(Bo,t.__scopeScrollArea),{forceMount:r,...s}=t,[i,a]=b.useState(!1),l=t.orientation==="horizontal",c=Ky(()=>{if(n.viewport){const d=n.viewport.offsetWidth{const{orientation:n="vertical",...r}=t,s=Da(Bo,t.__scopeScrollArea),i=b.useRef(null),a=b.useRef(0),[l,c]=b.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),d=AL(l.viewport,l.content),h={...r,sizes:l,onSizesChange:c,hasThumb:d>0&&d<1,onThumbChange:g=>i.current=g,onThumbPointerUp:()=>a.current=0,onThumbPointerDown:g=>a.current=g};function m(g,x){return Fre(g,a.current,l,x)}return n==="horizontal"?o.jsx(Pre,{...h,ref:e,onThumbPositionChange:()=>{if(s.viewport&&i.current){const g=s.viewport.scrollLeft,x=Q9(g,l,s.dir);i.current.style.transform=`translate3d(${x}px, 0, 0)`}},onWheelScroll:g=>{s.viewport&&(s.viewport.scrollLeft=g)},onDragScroll:g=>{s.viewport&&(s.viewport.scrollLeft=m(g,s.dir))}}):n==="vertical"?o.jsx(zre,{...h,ref:e,onThumbPositionChange:()=>{if(s.viewport&&i.current){const g=s.viewport.scrollTop,x=Q9(g,l);i.current.style.transform=`translate3d(0, ${x}px, 0)`}},onWheelScroll:g=>{s.viewport&&(s.viewport.scrollTop=g)},onDragScroll:g=>{s.viewport&&(s.viewport.scrollTop=m(g))}}):null}),Pre=b.forwardRef((t,e)=>{const{sizes:n,onSizesChange:r,...s}=t,i=Da(Bo,t.__scopeScrollArea),[a,l]=b.useState(),c=b.useRef(null),d=Yn(e,c,i.onScrollbarXChange);return b.useEffect(()=>{c.current&&l(getComputedStyle(c.current))},[c]),o.jsx(EL,{"data-orientation":"horizontal",...s,ref:d,sizes:n,style:{bottom:0,left:i.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:i.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":Yy(n)+"px",...t.style},onThumbPointerDown:h=>t.onThumbPointerDown(h.x),onDragScroll:h=>t.onDragScroll(h.x),onWheelScroll:(h,m)=>{if(i.viewport){const g=i.viewport.scrollLeft+h.deltaX;t.onWheelScroll(g),DL(g,m)&&h.preventDefault()}},onResize:()=>{c.current&&i.viewport&&a&&r({content:i.viewport.scrollWidth,viewport:i.viewport.offsetWidth,scrollbar:{size:c.current.clientWidth,paddingStart:Dv(a.paddingLeft),paddingEnd:Dv(a.paddingRight)}})}})}),zre=b.forwardRef((t,e)=>{const{sizes:n,onSizesChange:r,...s}=t,i=Da(Bo,t.__scopeScrollArea),[a,l]=b.useState(),c=b.useRef(null),d=Yn(e,c,i.onScrollbarYChange);return b.useEffect(()=>{c.current&&l(getComputedStyle(c.current))},[c]),o.jsx(EL,{"data-orientation":"vertical",...s,ref:d,sizes:n,style:{top:0,right:i.dir==="ltr"?0:void 0,left:i.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":Yy(n)+"px",...t.style},onThumbPointerDown:h=>t.onThumbPointerDown(h.y),onDragScroll:h=>t.onDragScroll(h.y),onWheelScroll:(h,m)=>{if(i.viewport){const g=i.viewport.scrollTop+h.deltaY;t.onWheelScroll(g),DL(g,m)&&h.preventDefault()}},onResize:()=>{c.current&&i.viewport&&a&&r({content:i.viewport.scrollHeight,viewport:i.viewport.offsetHeight,scrollbar:{size:c.current.clientHeight,paddingStart:Dv(a.paddingTop),paddingEnd:Dv(a.paddingBottom)}})}})}),[Ire,TL]=kL(Bo),EL=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,sizes:r,hasThumb:s,onThumbChange:i,onThumbPointerUp:a,onThumbPointerDown:l,onThumbPositionChange:c,onDragScroll:d,onWheelScroll:h,onResize:m,...g}=t,x=Da(Bo,n),[y,w]=b.useState(null),S=Yn(e,P=>w(P)),k=b.useRef(null),j=b.useRef(""),N=x.viewport,T=r.content-r.viewport,E=qs(h),_=qs(c),M=Ky(m,10);function I(P){if(k.current){const L=P.clientX-k.current.left,H=P.clientY-k.current.top;d({x:L,y:H})}}return b.useEffect(()=>{const P=L=>{const H=L.target;y?.contains(H)&&E(L,T)};return document.addEventListener("wheel",P,{passive:!1}),()=>document.removeEventListener("wheel",P,{passive:!1})},[N,y,T,E]),b.useEffect(_,[r,_]),Gh(y,M),Gh(x.content,M),o.jsx(Ire,{scope:n,scrollbar:y,hasThumb:s,onThumbChange:qs(i),onThumbPointerUp:qs(a),onThumbPositionChange:_,onThumbPointerDown:qs(l),children:o.jsx(gn.div,{...g,ref:S,style:{position:"absolute",...g.style},onPointerDown:nt(t.onPointerDown,P=>{P.button===0&&(P.target.setPointerCapture(P.pointerId),k.current=y.getBoundingClientRect(),j.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",x.viewport&&(x.viewport.style.scrollBehavior="auto"),I(P))}),onPointerMove:nt(t.onPointerMove,I),onPointerUp:nt(t.onPointerUp,P=>{const L=P.target;L.hasPointerCapture(P.pointerId)&&L.releasePointerCapture(P.pointerId),document.body.style.webkitUserSelect=j.current,x.viewport&&(x.viewport.style.scrollBehavior=""),k.current=null})})})}),Rv="ScrollAreaThumb",_L=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=TL(Rv,t.__scopeScrollArea);return o.jsx(si,{present:n||s.hasThumb,children:o.jsx(Lre,{ref:e,...r})})}),Lre=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,style:r,...s}=t,i=Da(Rv,n),a=TL(Rv,n),{onThumbPositionChange:l}=a,c=Yn(e,m=>a.onThumbChange(m)),d=b.useRef(void 0),h=Ky(()=>{d.current&&(d.current(),d.current=void 0)},100);return b.useEffect(()=>{const m=i.viewport;if(m){const g=()=>{if(h(),!d.current){const x=qre(m,l);d.current=x,l()}};return l(),m.addEventListener("scroll",g),()=>m.removeEventListener("scroll",g)}},[i.viewport,h,l]),o.jsx(gn.div,{"data-state":a.hasThumb?"visible":"hidden",...s,ref:c,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...r},onPointerDownCapture:nt(t.onPointerDownCapture,m=>{const x=m.target.getBoundingClientRect(),y=m.clientX-x.left,w=m.clientY-x.top;a.onThumbPointerDown({x:y,y:w})}),onPointerUp:nt(t.onPointerUp,a.onThumbPointerUp)})});_L.displayName=Rv;var Lj="ScrollAreaCorner",ML=b.forwardRef((t,e)=>{const n=Da(Lj,t.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!=="scroll"&&r?o.jsx(Bre,{...t,ref:e}):null});ML.displayName=Lj;var Bre=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,...r}=t,s=Da(Lj,n),[i,a]=b.useState(0),[l,c]=b.useState(0),d=!!(i&&l);return Gh(s.scrollbarX,()=>{const h=s.scrollbarX?.offsetHeight||0;s.onCornerHeightChange(h),c(h)}),Gh(s.scrollbarY,()=>{const h=s.scrollbarY?.offsetWidth||0;s.onCornerWidthChange(h),a(h)}),d?o.jsx(gn.div,{...r,ref:e,style:{width:i,height:l,position:"absolute",right:s.dir==="ltr"?0:void 0,left:s.dir==="rtl"?0:void 0,bottom:0,...t.style}}):null});function Dv(t){return t?parseInt(t,10):0}function AL(t,e){const n=t/e;return isNaN(n)?0:n}function Yy(t){const e=AL(t.viewport,t.content),n=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,r=(t.scrollbar.size-n)*e;return Math.max(r,18)}function Fre(t,e,n,r="ltr"){const s=Yy(n),i=s/2,a=e||i,l=s-a,c=n.scrollbar.paddingStart+a,d=n.scrollbar.size-n.scrollbar.paddingEnd-l,h=n.content-n.viewport,m=r==="ltr"?[0,h]:[h*-1,0];return RL([c,d],m)(t)}function Q9(t,e,n="ltr"){const r=Yy(e),s=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,i=e.scrollbar.size-s,a=e.content-e.viewport,l=i-r,c=n==="ltr"?[0,a]:[a*-1,0],d=xj(t,c);return RL([0,a],[0,l])(d)}function RL(t,e){return n=>{if(t[0]===t[1]||e[0]===e[1])return e[0];const r=(e[1]-e[0])/(t[1]-t[0]);return e[0]+r*(n-t[0])}}function DL(t,e){return t>0&&t{})=>{let n={left:t.scrollLeft,top:t.scrollTop},r=0;return(function s(){const i={left:t.scrollLeft,top:t.scrollTop},a=n.left!==i.left,l=n.top!==i.top;(a||l)&&e(),n=i,r=window.requestAnimationFrame(s)})(),()=>window.cancelAnimationFrame(r)};function Ky(t,e){const n=qs(t),r=b.useRef(0);return b.useEffect(()=>()=>window.clearTimeout(r.current),[]),b.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,e)},[n,e])}function Gh(t,e){const n=qs(e);gj(()=>{let r=0;if(t){const s=new ResizeObserver(()=>{cancelAnimationFrame(r),r=window.requestAnimationFrame(n)});return s.observe(t),()=>{window.cancelAnimationFrame(r),s.unobserve(t)}}},[t,n])}var PL=OL,$re=NL,Hre=ML;const wn=b.forwardRef(({className:t,children:e,viewportRef:n,...r},s)=>o.jsxs(PL,{ref:s,className:ve("relative overflow-hidden",t),...r,children:[o.jsx($re,{ref:n,className:"h-full w-full rounded-[inherit]",children:e}),o.jsx(ak,{}),o.jsx(ak,{orientation:"horizontal"}),o.jsx(Hre,{})]}));wn.displayName=PL.displayName;const ak=b.forwardRef(({className:t,orientation:e="vertical",...n},r)=>o.jsx(zj,{ref:r,orientation:e,className:ve("flex touch-none select-none transition-colors",e==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",e==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",t),...n,children:o.jsx(_L,{className:"relative flex-1 rounded-full bg-border"})}));ak.displayName=zj.displayName;function Qre({className:t,...e}){return o.jsx("div",{className:ve("animate-pulse rounded-md bg-primary/10",t),...e})}function Vre(t,e=[]){let n=[];function r(i,a){const l=b.createContext(a);l.displayName=i+"Context";const c=n.length;n=[...n,a];const d=m=>{const{scope:g,children:x,...y}=m,w=g?.[t]?.[c]||l,S=b.useMemo(()=>y,Object.values(y));return o.jsx(w.Provider,{value:S,children:x})};d.displayName=i+"Provider";function h(m,g){const x=g?.[t]?.[c]||l,y=b.useContext(x);if(y)return y;if(a!==void 0)return a;throw new Error(`\`${m}\` must be used within \`${i}\``)}return[d,h]}const s=()=>{const i=n.map(a=>b.createContext(a));return function(l){const c=l?.[t]||i;return b.useMemo(()=>({[`__scope${t}`]:{...l,[t]:c}}),[l,c])}};return s.scopeName=t,[r,Ure(s,...e)]}function Ure(...t){const e=t[0];if(t.length===1)return e;const n=()=>{const r=t.map(s=>({useScope:s(),scopeName:s.scopeName}));return function(i){const a=r.reduce((l,{useScope:c,scopeName:d})=>{const m=c(i)[`__scope${d}`];return{...l,...m}},{});return b.useMemo(()=>({[`__scope${e.scopeName}`]:a}),[a])}};return n.scopeName=e.scopeName,n}var Wre=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],zL=Wre.reduce((t,e)=>{const n=vj(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...l}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(c,{...l,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),Bj="Progress",Fj=100,[Gre]=Vre(Bj),[Xre,Yre]=Gre(Bj),IL=b.forwardRef((t,e)=>{const{__scopeProgress:n,value:r=null,max:s,getValueLabel:i=Kre,...a}=t;(s||s===0)&&!V9(s)&&console.error(Zre(`${s}`,"Progress"));const l=V9(s)?s:Fj;r!==null&&!U9(r,l)&&console.error(Jre(`${r}`,"Progress"));const c=U9(r,l)?r:null,d=Pv(c)?i(c,l):void 0;return o.jsx(Xre,{scope:n,value:c,max:l,children:o.jsx(zL.div,{"aria-valuemax":l,"aria-valuemin":0,"aria-valuenow":Pv(c)?c:void 0,"aria-valuetext":d,role:"progressbar","data-state":FL(c,l),"data-value":c??void 0,"data-max":l,...a,ref:e})})});IL.displayName=Bj;var LL="ProgressIndicator",BL=b.forwardRef((t,e)=>{const{__scopeProgress:n,...r}=t,s=Yre(LL,n);return o.jsx(zL.div,{"data-state":FL(s.value,s.max),"data-value":s.value??void 0,"data-max":s.max,...r,ref:e})});BL.displayName=LL;function Kre(t,e){return`${Math.round(t/e*100)}%`}function FL(t,e){return t==null?"indeterminate":t===e?"complete":"loading"}function Pv(t){return typeof t=="number"}function V9(t){return Pv(t)&&!isNaN(t)&&t>0}function U9(t,e){return Pv(t)&&!isNaN(t)&&t<=e&&t>=0}function Zre(t,e){return`Invalid prop \`max\` of value \`${t}\` supplied to \`${e}\`. Only numbers greater than 0 are valid max values. Defaulting to \`${Fj}\`.`}function Jre(t,e){return`Invalid prop \`value\` of value \`${t}\` supplied to \`${e}\`. The \`value\` prop must be: +`+v.stack}}var Ot=Object.prototype.hasOwnProperty,xt=t.unstable_scheduleCallback,kn=t.unstable_cancelCallback,It=t.unstable_shouldYield,Yt=t.unstable_requestPaint,_t=t.unstable_now,mt=t.unstable_getCurrentPriorityLevel,Ne=t.unstable_ImmediatePriority,Ie=t.unstable_UserBlockingPriority,st=t.unstable_NormalPriority,yt=t.unstable_LowPriority,Pt=t.unstable_IdlePriority,Mt=t.log,zn=t.unstable_setDisableYieldValue,Fe=null,rt=null;function tn(u){if(typeof Mt=="function"&&zn(u),rt&&typeof rt.setStrictMode=="function")try{rt.setStrictMode(Fe,u)}catch{}}var Rt=Math.clz32?Math.clz32:it,ke=Math.log,Pe=Math.LN2;function it(u){return u>>>=0,u===0?32:31-(ke(u)/Pe|0)|0}var ot=256,nn=262144,Kt=4194304;function pt(u){var f=u&42;if(f!==0)return f;switch(u&-u){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:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return u&261888;case 262144:case 524288:case 1048576:case 2097152:return u&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return u&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return u}}function xr(u,f,p){var v=u.pendingLanes;if(v===0)return 0;var O=0,C=u.suspendedLanes,q=u.pingedLanes;u=u.warmLanes;var K=v&134217727;return K!==0?(v=K&~C,v!==0?O=pt(v):(q&=K,q!==0?O=pt(q):p||(p=K&~u,p!==0&&(O=pt(p))))):(K=v&~C,K!==0?O=pt(K):q!==0?O=pt(q):p||(p=v&~u,p!==0&&(O=pt(p)))),O===0?0:f!==0&&f!==O&&(f&C)===0&&(C=O&-O,p=f&-f,C>=p||C===32&&(p&4194048)!==0)?f:O}function Ur(u,f){return(u.pendingLanes&~(u.suspendedLanes&~u.pingedLanes)&f)===0}function Wr(u,f){switch(u){case 1:case 2:case 4:case 8:case 64:return f+250;case 16:case 32: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 f+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 vr(){var u=Kt;return Kt<<=1,(Kt&62914560)===0&&(Kt=4194304),u}function In(u){for(var f=[],p=0;31>p;p++)f.push(u);return f}function cr(u,f){u.pendingLanes|=f,f!==268435456&&(u.suspendedLanes=0,u.pingedLanes=0,u.warmLanes=0)}function nr(u,f,p,v,O,C){var q=u.pendingLanes;u.pendingLanes=p,u.suspendedLanes=0,u.pingedLanes=0,u.warmLanes=0,u.expiredLanes&=p,u.entangledLanes&=p,u.errorRecoveryDisabledLanes&=p,u.shellSuspendCounter=0;var K=u.entanglements,ue=u.expirationTimes,we=u.hiddenUpdates;for(p=q&~p;0"u")return null;try{return u.activeElement||u.body}catch{return u.body}}var cK=/[\n"\\]/g;function ta(u){return u.replace(cK,function(f){return"\\"+f.charCodeAt(0).toString(16)+" "})}function hw(u,f,p,v,O,C,q,K){u.name="",q!=null&&typeof q!="function"&&typeof q!="symbol"&&typeof q!="boolean"?u.type=q:u.removeAttribute("type"),f!=null?q==="number"?(f===0&&u.value===""||u.value!=f)&&(u.value=""+ea(f)):u.value!==""+ea(f)&&(u.value=""+ea(f)):q!=="submit"&&q!=="reset"||u.removeAttribute("value"),f!=null?fw(u,q,ea(f)):p!=null?fw(u,q,ea(p)):v!=null&&u.removeAttribute("value"),O==null&&C!=null&&(u.defaultChecked=!!C),O!=null&&(u.checked=O&&typeof O!="function"&&typeof O!="symbol"),K!=null&&typeof K!="function"&&typeof K!="symbol"&&typeof K!="boolean"?u.name=""+ea(K):u.removeAttribute("name")}function D7(u,f,p,v,O,C,q,K){if(C!=null&&typeof C!="function"&&typeof C!="symbol"&&typeof C!="boolean"&&(u.type=C),f!=null||p!=null){if(!(C!=="submit"&&C!=="reset"||f!=null)){dw(u);return}p=p!=null?""+ea(p):"",f=f!=null?""+ea(f):p,K||f===u.value||(u.value=f),u.defaultValue=f}v=v??O,v=typeof v!="function"&&typeof v!="symbol"&&!!v,u.checked=K?u.checked:!!v,u.defaultChecked=!!v,q!=null&&typeof q!="function"&&typeof q!="symbol"&&typeof q!="boolean"&&(u.name=q),dw(u)}function fw(u,f,p){f==="number"&&zg(u.ownerDocument)===u||u.defaultValue===""+p||(u.defaultValue=""+p)}function Nd(u,f,p,v){if(u=u.options,f){f={};for(var O=0;O"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),vw=!1;if(tl)try{var Gf={};Object.defineProperty(Gf,"passive",{get:function(){vw=!0}}),window.addEventListener("test",Gf,Gf),window.removeEventListener("test",Gf,Gf)}catch{vw=!1}var nc=null,yw=null,Lg=null;function q7(){if(Lg)return Lg;var u,f=yw,p=f.length,v,O="value"in nc?nc.value:nc.textContent,C=O.length;for(u=0;u=Kf),W7=" ",G7=!1;function X7(u,f){switch(u){case"keyup":return IK.indexOf(f.keyCode)!==-1;case"keydown":return f.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Y7(u){return u=u.detail,typeof u=="object"&&"data"in u?u.data:null}var _d=!1;function BK(u,f){switch(u){case"compositionend":return Y7(f);case"keypress":return f.which!==32?null:(G7=!0,W7);case"textInput":return u=f.data,u===W7&&G7?null:u;default:return null}}function FK(u,f){if(_d)return u==="compositionend"||!Ow&&X7(u,f)?(u=q7(),Lg=yw=nc=null,_d=!1,u):null;switch(u){case"paste":return null;case"keypress":if(!(f.ctrlKey||f.altKey||f.metaKey)||f.ctrlKey&&f.altKey){if(f.char&&1=f)return{node:p,offset:f-u};u=v}e:{for(;p;){if(p.nextSibling){p=p.nextSibling;break e}p=p.parentNode}p=void 0}p=sC(p)}}function aC(u,f){return u&&f?u===f?!0:u&&u.nodeType===3?!1:f&&f.nodeType===3?aC(u,f.parentNode):"contains"in u?u.contains(f):u.compareDocumentPosition?!!(u.compareDocumentPosition(f)&16):!1:!1}function oC(u){u=u!=null&&u.ownerDocument!=null&&u.ownerDocument.defaultView!=null?u.ownerDocument.defaultView:window;for(var f=zg(u.document);f instanceof u.HTMLIFrameElement;){try{var p=typeof f.contentWindow.location.href=="string"}catch{p=!1}if(p)u=f.contentWindow;else break;f=zg(u.document)}return f}function Cw(u){var f=u&&u.nodeName&&u.nodeName.toLowerCase();return f&&(f==="input"&&(u.type==="text"||u.type==="search"||u.type==="tel"||u.type==="url"||u.type==="password")||f==="textarea"||u.contentEditable==="true")}var GK=tl&&"documentMode"in document&&11>=document.documentMode,Ad=null,Tw=null,tm=null,Ew=!1;function lC(u,f,p){var v=p.window===p?p.document:p.nodeType===9?p:p.ownerDocument;Ew||Ad==null||Ad!==zg(v)||(v=Ad,"selectionStart"in v&&Cw(v)?v={start:v.selectionStart,end:v.selectionEnd}:(v=(v.ownerDocument&&v.ownerDocument.defaultView||window).getSelection(),v={anchorNode:v.anchorNode,anchorOffset:v.anchorOffset,focusNode:v.focusNode,focusOffset:v.focusOffset}),tm&&em(tm,v)||(tm=v,v=Ax(Tw,"onSelect"),0>=q,O-=q,ao=1<<32-Rt(f)+O|p<Zt?(fn=vt,vt=null):fn=vt.sibling;var Bn=Se(pe,vt,ye[Zt],Ae);if(Bn===null){vt===null&&(vt=fn);break}u&&vt&&Bn.alternate===null&&f(pe,vt),fe=C(Bn,fe,Zt),Ln===null?Nt=Bn:Ln.sibling=Bn,Ln=Bn,vt=fn}if(Zt===ye.length)return p(pe,vt),yn&&rl(pe,Zt),Nt;if(vt===null){for(;ZtZt?(fn=vt,vt=null):fn=vt.sibling;var Oc=Se(pe,vt,Bn.value,Ae);if(Oc===null){vt===null&&(vt=fn);break}u&&vt&&Oc.alternate===null&&f(pe,vt),fe=C(Oc,fe,Zt),Ln===null?Nt=Oc:Ln.sibling=Oc,Ln=Oc,vt=fn}if(Bn.done)return p(pe,vt),yn&&rl(pe,Zt),Nt;if(vt===null){for(;!Bn.done;Zt++,Bn=ye.next())Bn=Re(pe,Bn.value,Ae),Bn!==null&&(fe=C(Bn,fe,Zt),Ln===null?Nt=Bn:Ln.sibling=Bn,Ln=Bn);return yn&&rl(pe,Zt),Nt}for(vt=v(vt);!Bn.done;Zt++,Bn=ye.next())Bn=Ce(vt,pe,Zt,Bn.value,Ae),Bn!==null&&(u&&Bn.alternate!==null&&vt.delete(Bn.key===null?Zt:Bn.key),fe=C(Bn,fe,Zt),Ln===null?Nt=Bn:Ln.sibling=Bn,Ln=Bn);return u&&vt.forEach(function(mJ){return f(pe,mJ)}),yn&&rl(pe,Zt),Nt}function Jn(pe,fe,ye,Ae){if(typeof ye=="object"&&ye!==null&&ye.type===w&&ye.key===null&&(ye=ye.props.children),typeof ye=="object"&&ye!==null){switch(ye.$$typeof){case x:e:{for(var Nt=ye.key;fe!==null;){if(fe.key===Nt){if(Nt=ye.type,Nt===w){if(fe.tag===7){p(pe,fe.sibling),Ae=O(fe,ye.props.children),Ae.return=pe,pe=Ae;break e}}else if(fe.elementType===Nt||typeof Nt=="object"&&Nt!==null&&Nt.$$typeof===L&&ju(Nt)===fe.type){p(pe,fe.sibling),Ae=O(fe,ye.props),om(Ae,ye),Ae.return=pe,pe=Ae;break e}p(pe,fe);break}else f(pe,fe);fe=fe.sibling}ye.type===w?(Ae=bu(ye.props.children,pe.mode,Ae,ye.key),Ae.return=pe,pe=Ae):(Ae=Gg(ye.type,ye.key,ye.props,null,pe.mode,Ae),om(Ae,ye),Ae.return=pe,pe=Ae)}return q(pe);case y:e:{for(Nt=ye.key;fe!==null;){if(fe.key===Nt)if(fe.tag===4&&fe.stateNode.containerInfo===ye.containerInfo&&fe.stateNode.implementation===ye.implementation){p(pe,fe.sibling),Ae=O(fe,ye.children||[]),Ae.return=pe,pe=Ae;break e}else{p(pe,fe);break}else f(pe,fe);fe=fe.sibling}Ae=zw(ye,pe.mode,Ae),Ae.return=pe,pe=Ae}return q(pe);case L:return ye=ju(ye),Jn(pe,fe,ye,Ae)}if(Q(ye))return ut(pe,fe,ye,Ae);if(U(ye)){if(Nt=U(ye),typeof Nt!="function")throw Error(r(150));return ye=Nt.call(ye),At(pe,fe,ye,Ae)}if(typeof ye.then=="function")return Jn(pe,fe,tx(ye),Ae);if(ye.$$typeof===N)return Jn(pe,fe,Kg(pe,ye),Ae);nx(pe,ye)}return typeof ye=="string"&&ye!==""||typeof ye=="number"||typeof ye=="bigint"?(ye=""+ye,fe!==null&&fe.tag===6?(p(pe,fe.sibling),Ae=O(fe,ye),Ae.return=pe,pe=Ae):(p(pe,fe),Ae=Pw(ye,pe.mode,Ae),Ae.return=pe,pe=Ae),q(pe)):p(pe,fe)}return function(pe,fe,ye,Ae){try{am=0;var Nt=Jn(pe,fe,ye,Ae);return $d=null,Nt}catch(vt){if(vt===qd||vt===Jg)throw vt;var Ln=Mi(29,vt,null,pe.mode);return Ln.lanes=Ae,Ln.return=pe,Ln}finally{}}}var Cu=AC(!0),MC=AC(!1),oc=!1;function Gw(u){u.updateQueue={baseState:u.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Xw(u,f){u=u.updateQueue,f.updateQueue===u&&(f.updateQueue={baseState:u.baseState,firstBaseUpdate:u.firstBaseUpdate,lastBaseUpdate:u.lastBaseUpdate,shared:u.shared,callbacks:null})}function lc(u){return{lane:u,tag:0,payload:null,callback:null,next:null}}function cc(u,f,p){var v=u.updateQueue;if(v===null)return null;if(v=v.shared,(Hn&2)!==0){var O=v.pending;return O===null?f.next=f:(f.next=O.next,O.next=f),v.pending=f,f=Wg(u),pC(u,null,p),f}return Ug(u,v,f,p),Wg(u)}function lm(u,f,p){if(f=f.updateQueue,f!==null&&(f=f.shared,(p&4194048)!==0)){var v=f.lanes;v&=u.pendingLanes,p|=v,f.lanes=p,xs(u,p)}}function Yw(u,f){var p=u.updateQueue,v=u.alternate;if(v!==null&&(v=v.updateQueue,p===v)){var O=null,C=null;if(p=p.firstBaseUpdate,p!==null){do{var q={lane:p.lane,tag:p.tag,payload:p.payload,callback:null,next:null};C===null?O=C=q:C=C.next=q,p=p.next}while(p!==null);C===null?O=C=f:C=C.next=f}else O=C=f;p={baseState:v.baseState,firstBaseUpdate:O,lastBaseUpdate:C,shared:v.shared,callbacks:v.callbacks},u.updateQueue=p;return}u=p.lastBaseUpdate,u===null?p.firstBaseUpdate=f:u.next=f,p.lastBaseUpdate=f}var Kw=!1;function cm(){if(Kw){var u=Fd;if(u!==null)throw u}}function um(u,f,p,v){Kw=!1;var O=u.updateQueue;oc=!1;var C=O.firstBaseUpdate,q=O.lastBaseUpdate,K=O.shared.pending;if(K!==null){O.shared.pending=null;var ue=K,we=ue.next;ue.next=null,q===null?C=we:q.next=we,q=ue;var Ee=u.alternate;Ee!==null&&(Ee=Ee.updateQueue,K=Ee.lastBaseUpdate,K!==q&&(K===null?Ee.firstBaseUpdate=we:K.next=we,Ee.lastBaseUpdate=ue))}if(C!==null){var Re=O.baseState;q=0,Ee=we=ue=null,K=C;do{var Se=K.lane&-536870913,Ce=Se!==K.lane;if(Ce?(hn&Se)===Se:(v&Se)===Se){Se!==0&&Se===Bd&&(Kw=!0),Ee!==null&&(Ee=Ee.next={lane:0,tag:K.tag,payload:K.payload,callback:null,next:null});e:{var ut=u,At=K;Se=f;var Jn=p;switch(At.tag){case 1:if(ut=At.payload,typeof ut=="function"){Re=ut.call(Jn,Re,Se);break e}Re=ut;break e;case 3:ut.flags=ut.flags&-65537|128;case 0:if(ut=At.payload,Se=typeof ut=="function"?ut.call(Jn,Re,Se):ut,Se==null)break e;Re=m({},Re,Se);break e;case 2:oc=!0}}Se=K.callback,Se!==null&&(u.flags|=64,Ce&&(u.flags|=8192),Ce=O.callbacks,Ce===null?O.callbacks=[Se]:Ce.push(Se))}else Ce={lane:Se,tag:K.tag,payload:K.payload,callback:K.callback,next:null},Ee===null?(we=Ee=Ce,ue=Re):Ee=Ee.next=Ce,q|=Se;if(K=K.next,K===null){if(K=O.shared.pending,K===null)break;Ce=K,K=Ce.next,Ce.next=null,O.lastBaseUpdate=Ce,O.shared.pending=null}}while(!0);Ee===null&&(ue=Re),O.baseState=ue,O.firstBaseUpdate=we,O.lastBaseUpdate=Ee,C===null&&(O.shared.lanes=0),mc|=q,u.lanes=q,u.memoizedState=Re}}function RC(u,f){if(typeof u!="function")throw Error(r(191,u));u.call(f)}function DC(u,f){var p=u.callbacks;if(p!==null)for(u.callbacks=null,u=0;uC?C:8;var q=F.T,K={};F.T=K,g2(u,!1,f,p);try{var ue=O(),we=F.S;if(we!==null&&we(K,ue),ue!==null&&typeof ue=="object"&&typeof ue.then=="function"){var Ee=rZ(ue,v);fm(u,f,Ee,Ii(u))}else fm(u,f,v,Ii(u))}catch(Re){fm(u,f,{then:function(){},status:"rejected",reason:Re},Ii())}finally{Y.p=C,q!==null&&K.types!==null&&(q.types=K.types),F.T=q}}function cZ(){}function m2(u,f,p,v){if(u.tag!==5)throw Error(r(476));var O=h8(u).queue;d8(u,O,f,J,p===null?cZ:function(){return f8(u),p(v)})}function h8(u){var f=u.memoizedState;if(f!==null)return f;f={memoizedState:J,baseState:J,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ol,lastRenderedState:J},next:null};var p={};return f.next={memoizedState:p,baseState:p,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ol,lastRenderedState:p},next:null},u.memoizedState=f,u=u.alternate,u!==null&&(u.memoizedState=f),f}function f8(u){var f=h8(u);f.next===null&&(f=u.alternate.memoizedState),fm(u,f.next.queue,{},Ii())}function p2(){return Ts(_m)}function m8(){return $r().memoizedState}function p8(){return $r().memoizedState}function uZ(u){for(var f=u.return;f!==null;){switch(f.tag){case 24:case 3:var p=Ii();u=lc(p);var v=cc(f,u,p);v!==null&&(hi(v,f,p),lm(v,f,p)),f={cache:Qw()},u.payload=f;return}f=f.return}}function dZ(u,f,p){var v=Ii();p={lane:v,revertLane:0,gesture:null,action:p,hasEagerState:!1,eagerState:null,next:null},hx(u)?x8(f,p):(p=Rw(u,f,p,v),p!==null&&(hi(p,u,v),v8(p,f,v)))}function g8(u,f,p){var v=Ii();fm(u,f,p,v)}function fm(u,f,p,v){var O={lane:v,revertLane:0,gesture:null,action:p,hasEagerState:!1,eagerState:null,next:null};if(hx(u))x8(f,O);else{var C=u.alternate;if(u.lanes===0&&(C===null||C.lanes===0)&&(C=f.lastRenderedReducer,C!==null))try{var q=f.lastRenderedState,K=C(q,p);if(O.hasEagerState=!0,O.eagerState=K,Ai(K,q))return Ug(u,f,O,0),rr===null&&Vg(),!1}catch{}finally{}if(p=Rw(u,f,O,v),p!==null)return hi(p,u,v),v8(p,f,v),!0}return!1}function g2(u,f,p,v){if(v={lane:2,revertLane:G2(),gesture:null,action:v,hasEagerState:!1,eagerState:null,next:null},hx(u)){if(f)throw Error(r(479))}else f=Rw(u,p,v,2),f!==null&&hi(f,u,2)}function hx(u){var f=u.alternate;return u===Wt||f!==null&&f===Wt}function x8(u,f){Qd=ix=!0;var p=u.pending;p===null?f.next=f:(f.next=p.next,p.next=f),u.pending=f}function v8(u,f,p){if((p&4194048)!==0){var v=f.lanes;v&=u.pendingLanes,p|=v,f.lanes=p,xs(u,p)}}var mm={readContext:Ts,use:lx,useCallback:Pr,useContext:Pr,useEffect:Pr,useImperativeHandle:Pr,useLayoutEffect:Pr,useInsertionEffect:Pr,useMemo:Pr,useReducer:Pr,useRef:Pr,useState:Pr,useDebugValue:Pr,useDeferredValue:Pr,useTransition:Pr,useSyncExternalStore:Pr,useId:Pr,useHostTransitionStatus:Pr,useFormState:Pr,useActionState:Pr,useOptimistic:Pr,useMemoCache:Pr,useCacheRefresh:Pr};mm.useEffectEvent=Pr;var y8={readContext:Ts,use:lx,useCallback:function(u,f){return Ys().memoizedState=[u,f===void 0?null:f],u},useContext:Ts,useEffect:n8,useImperativeHandle:function(u,f,p){p=p!=null?p.concat([u]):null,ux(4194308,4,a8.bind(null,f,u),p)},useLayoutEffect:function(u,f){return ux(4194308,4,u,f)},useInsertionEffect:function(u,f){ux(4,2,u,f)},useMemo:function(u,f){var p=Ys();f=f===void 0?null:f;var v=u();if(Tu){tn(!0);try{u()}finally{tn(!1)}}return p.memoizedState=[v,f],v},useReducer:function(u,f,p){var v=Ys();if(p!==void 0){var O=p(f);if(Tu){tn(!0);try{p(f)}finally{tn(!1)}}}else O=f;return v.memoizedState=v.baseState=O,u={pending:null,lanes:0,dispatch:null,lastRenderedReducer:u,lastRenderedState:O},v.queue=u,u=u.dispatch=dZ.bind(null,Wt,u),[v.memoizedState,u]},useRef:function(u){var f=Ys();return u={current:u},f.memoizedState=u},useState:function(u){u=c2(u);var f=u.queue,p=g8.bind(null,Wt,f);return f.dispatch=p,[u.memoizedState,p]},useDebugValue:h2,useDeferredValue:function(u,f){var p=Ys();return f2(p,u,f)},useTransition:function(){var u=c2(!1);return u=d8.bind(null,Wt,u.queue,!0,!1),Ys().memoizedState=u,[!1,u]},useSyncExternalStore:function(u,f,p){var v=Wt,O=Ys();if(yn){if(p===void 0)throw Error(r(407));p=p()}else{if(p=f(),rr===null)throw Error(r(349));(hn&127)!==0||FC(v,f,p)}O.memoizedState=p;var C={value:p,getSnapshot:f};return O.queue=C,n8($C.bind(null,v,C,u),[u]),v.flags|=2048,Ud(9,{destroy:void 0},qC.bind(null,v,C,p,f),null),p},useId:function(){var u=Ys(),f=rr.identifierPrefix;if(yn){var p=oo,v=ao;p=(v&~(1<<32-Rt(v)-1)).toString(32)+p,f="_"+f+"R_"+p,p=ax++,0<\/script>",C=C.removeChild(C.firstChild);break;case"select":C=typeof v.is=="string"?q.createElement("select",{is:v.is}):q.createElement("select"),v.multiple?C.multiple=!0:v.size&&(C.size=v.size);break;default:C=typeof v.is=="string"?q.createElement(O,{is:v.is}):q.createElement(O)}}C[Cr]=f,C[Tr]=v;e:for(q=f.child;q!==null;){if(q.tag===5||q.tag===6)C.appendChild(q.stateNode);else if(q.tag!==4&&q.tag!==27&&q.child!==null){q.child.return=q,q=q.child;continue}if(q===f)break e;for(;q.sibling===null;){if(q.return===null||q.return===f)break e;q=q.return}q.sibling.return=q.return,q=q.sibling}f.stateNode=C;e:switch(_s(C,O,v),O){case"button":case"input":case"select":case"textarea":v=!!v.autoFocus;break e;case"img":v=!0;break e;default:v=!1}v&&cl(f)}}return mr(f),_2(f,f.type,u===null?null:u.memoizedProps,f.pendingProps,p),null;case 6:if(u&&f.stateNode!=null)u.memoizedProps!==v&&cl(f);else{if(typeof v!="string"&&f.stateNode===null)throw Error(r(166));if(u=ne.current,Id(f)){if(u=f.stateNode,p=f.memoizedProps,v=null,O=Cs,O!==null)switch(O.tag){case 27:case 5:v=O.memoizedProps}u[Cr]=f,u=!!(u.nodeValue===p||v!==null&&v.suppressHydrationWarning===!0||LT(u.nodeValue,p)),u||ic(f,!0)}else u=Mx(u).createTextNode(v),u[Cr]=f,f.stateNode=u}return mr(f),null;case 31:if(p=f.memoizedState,u===null||u.memoizedState!==null){if(v=Id(f),p!==null){if(u===null){if(!v)throw Error(r(318));if(u=f.memoizedState,u=u!==null?u.dehydrated:null,!u)throw Error(r(557));u[Cr]=f}else wu(),(f.flags&128)===0&&(f.memoizedState=null),f.flags|=4;mr(f),u=!1}else p=Fw(),u!==null&&u.memoizedState!==null&&(u.memoizedState.hydrationErrors=p),u=!0;if(!u)return f.flags&256?(Di(f),f):(Di(f),null);if((f.flags&128)!==0)throw Error(r(558))}return mr(f),null;case 13:if(v=f.memoizedState,u===null||u.memoizedState!==null&&u.memoizedState.dehydrated!==null){if(O=Id(f),v!==null&&v.dehydrated!==null){if(u===null){if(!O)throw Error(r(318));if(O=f.memoizedState,O=O!==null?O.dehydrated:null,!O)throw Error(r(317));O[Cr]=f}else wu(),(f.flags&128)===0&&(f.memoizedState=null),f.flags|=4;mr(f),O=!1}else O=Fw(),u!==null&&u.memoizedState!==null&&(u.memoizedState.hydrationErrors=O),O=!0;if(!O)return f.flags&256?(Di(f),f):(Di(f),null)}return Di(f),(f.flags&128)!==0?(f.lanes=p,f):(p=v!==null,u=u!==null&&u.memoizedState!==null,p&&(v=f.child,O=null,v.alternate!==null&&v.alternate.memoizedState!==null&&v.alternate.memoizedState.cachePool!==null&&(O=v.alternate.memoizedState.cachePool.pool),C=null,v.memoizedState!==null&&v.memoizedState.cachePool!==null&&(C=v.memoizedState.cachePool.pool),C!==O&&(v.flags|=2048)),p!==u&&p&&(f.child.flags|=8192),xx(f,f.updateQueue),mr(f),null);case 4:return re(),u===null&&Z2(f.stateNode.containerInfo),mr(f),null;case 10:return il(f.type),mr(f),null;case 19:if(G(qr),v=f.memoizedState,v===null)return mr(f),null;if(O=(f.flags&128)!==0,C=v.rendering,C===null)if(O)gm(v,!1);else{if(zr!==0||u!==null&&(u.flags&128)!==0)for(u=f.child;u!==null;){if(C=sx(u),C!==null){for(f.flags|=128,gm(v,!1),u=C.updateQueue,f.updateQueue=u,xx(f,u),f.subtreeFlags=0,u=p,p=f.child;p!==null;)gC(p,u),p=p.sibling;return I(qr,qr.current&1|2),yn&&rl(f,v.treeForkCount),f.child}u=u.sibling}v.tail!==null&&_t()>Sx&&(f.flags|=128,O=!0,gm(v,!1),f.lanes=4194304)}else{if(!O)if(u=sx(C),u!==null){if(f.flags|=128,O=!0,u=u.updateQueue,f.updateQueue=u,xx(f,u),gm(v,!0),v.tail===null&&v.tailMode==="hidden"&&!C.alternate&&!yn)return mr(f),null}else 2*_t()-v.renderingStartTime>Sx&&p!==536870912&&(f.flags|=128,O=!0,gm(v,!1),f.lanes=4194304);v.isBackwards?(C.sibling=f.child,f.child=C):(u=v.last,u!==null?u.sibling=C:f.child=C,v.last=C)}return v.tail!==null?(u=v.tail,v.rendering=u,v.tail=u.sibling,v.renderingStartTime=_t(),u.sibling=null,p=qr.current,I(qr,O?p&1|2:p&1),yn&&rl(f,v.treeForkCount),u):(mr(f),null);case 22:case 23:return Di(f),Jw(),v=f.memoizedState!==null,u!==null?u.memoizedState!==null!==v&&(f.flags|=8192):v&&(f.flags|=8192),v?(p&536870912)!==0&&(f.flags&128)===0&&(mr(f),f.subtreeFlags&6&&(f.flags|=8192)):mr(f),p=f.updateQueue,p!==null&&xx(f,p.retryQueue),p=null,u!==null&&u.memoizedState!==null&&u.memoizedState.cachePool!==null&&(p=u.memoizedState.cachePool.pool),v=null,f.memoizedState!==null&&f.memoizedState.cachePool!==null&&(v=f.memoizedState.cachePool.pool),v!==p&&(f.flags|=2048),u!==null&&G(Ou),null;case 24:return p=null,u!==null&&(p=u.memoizedState.cache),f.memoizedState.cache!==p&&(f.flags|=2048),il(Xr),mr(f),null;case 25:return null;case 30:return null}throw Error(r(156,f.tag))}function gZ(u,f){switch(Lw(f),f.tag){case 1:return u=f.flags,u&65536?(f.flags=u&-65537|128,f):null;case 3:return il(Xr),re(),u=f.flags,(u&65536)!==0&&(u&128)===0?(f.flags=u&-65537|128,f):null;case 26:case 27:case 5:return Te(f),null;case 31:if(f.memoizedState!==null){if(Di(f),f.alternate===null)throw Error(r(340));wu()}return u=f.flags,u&65536?(f.flags=u&-65537|128,f):null;case 13:if(Di(f),u=f.memoizedState,u!==null&&u.dehydrated!==null){if(f.alternate===null)throw Error(r(340));wu()}return u=f.flags,u&65536?(f.flags=u&-65537|128,f):null;case 19:return G(qr),null;case 4:return re(),null;case 10:return il(f.type),null;case 22:case 23:return Di(f),Jw(),u!==null&&G(Ou),u=f.flags,u&65536?(f.flags=u&-65537|128,f):null;case 24:return il(Xr),null;case 25:return null;default:return null}}function H8(u,f){switch(Lw(f),f.tag){case 3:il(Xr),re();break;case 26:case 27:case 5:Te(f);break;case 4:re();break;case 31:f.memoizedState!==null&&Di(f);break;case 13:Di(f);break;case 19:G(qr);break;case 10:il(f.type);break;case 22:case 23:Di(f),Jw(),u!==null&&G(Ou);break;case 24:il(Xr)}}function xm(u,f){try{var p=f.updateQueue,v=p!==null?p.lastEffect:null;if(v!==null){var O=v.next;p=O;do{if((p.tag&u)===u){v=void 0;var C=p.create,q=p.inst;v=C(),q.destroy=v}p=p.next}while(p!==O)}}catch(K){Un(f,f.return,K)}}function hc(u,f,p){try{var v=f.updateQueue,O=v!==null?v.lastEffect:null;if(O!==null){var C=O.next;v=C;do{if((v.tag&u)===u){var q=v.inst,K=q.destroy;if(K!==void 0){q.destroy=void 0,O=f;var ue=p,we=K;try{we()}catch(Ee){Un(O,ue,Ee)}}}v=v.next}while(v!==C)}}catch(Ee){Un(f,f.return,Ee)}}function Q8(u){var f=u.updateQueue;if(f!==null){var p=u.stateNode;try{DC(f,p)}catch(v){Un(u,u.return,v)}}}function V8(u,f,p){p.props=Eu(u.type,u.memoizedProps),p.state=u.memoizedState;try{p.componentWillUnmount()}catch(v){Un(u,f,v)}}function vm(u,f){try{var p=u.ref;if(p!==null){switch(u.tag){case 26:case 27:case 5:var v=u.stateNode;break;case 30:v=u.stateNode;break;default:v=u.stateNode}typeof p=="function"?u.refCleanup=p(v):p.current=v}}catch(O){Un(u,f,O)}}function lo(u,f){var p=u.ref,v=u.refCleanup;if(p!==null)if(typeof v=="function")try{v()}catch(O){Un(u,f,O)}finally{u.refCleanup=null,u=u.alternate,u!=null&&(u.refCleanup=null)}else if(typeof p=="function")try{p(null)}catch(O){Un(u,f,O)}else p.current=null}function U8(u){var f=u.type,p=u.memoizedProps,v=u.stateNode;try{e:switch(f){case"button":case"input":case"select":case"textarea":p.autoFocus&&v.focus();break e;case"img":p.src?v.src=p.src:p.srcSet&&(v.srcset=p.srcSet)}}catch(O){Un(u,u.return,O)}}function A2(u,f,p){try{var v=u.stateNode;LZ(v,u.type,p,f),v[Tr]=f}catch(O){Un(u,u.return,O)}}function W8(u){return u.tag===5||u.tag===3||u.tag===26||u.tag===27&&yc(u.type)||u.tag===4}function M2(u){e:for(;;){for(;u.sibling===null;){if(u.return===null||W8(u.return))return null;u=u.return}for(u.sibling.return=u.return,u=u.sibling;u.tag!==5&&u.tag!==6&&u.tag!==18;){if(u.tag===27&&yc(u.type)||u.flags&2||u.child===null||u.tag===4)continue e;u.child.return=u,u=u.child}if(!(u.flags&2))return u.stateNode}}function R2(u,f,p){var v=u.tag;if(v===5||v===6)u=u.stateNode,f?(p.nodeType===9?p.body:p.nodeName==="HTML"?p.ownerDocument.body:p).insertBefore(u,f):(f=p.nodeType===9?p.body:p.nodeName==="HTML"?p.ownerDocument.body:p,f.appendChild(u),p=p._reactRootContainer,p!=null||f.onclick!==null||(f.onclick=el));else if(v!==4&&(v===27&&yc(u.type)&&(p=u.stateNode,f=null),u=u.child,u!==null))for(R2(u,f,p),u=u.sibling;u!==null;)R2(u,f,p),u=u.sibling}function vx(u,f,p){var v=u.tag;if(v===5||v===6)u=u.stateNode,f?p.insertBefore(u,f):p.appendChild(u);else if(v!==4&&(v===27&&yc(u.type)&&(p=u.stateNode),u=u.child,u!==null))for(vx(u,f,p),u=u.sibling;u!==null;)vx(u,f,p),u=u.sibling}function G8(u){var f=u.stateNode,p=u.memoizedProps;try{for(var v=u.type,O=f.attributes;O.length;)f.removeAttributeNode(O[0]);_s(f,v,p),f[Cr]=u,f[Tr]=p}catch(C){Un(u,u.return,C)}}var ul=!1,Zr=!1,D2=!1,X8=typeof WeakSet=="function"?WeakSet:Set,vs=null;function xZ(u,f){if(u=u.containerInfo,t4=Bx,u=oC(u),Cw(u)){if("selectionStart"in u)var p={start:u.selectionStart,end:u.selectionEnd};else e:{p=(p=u.ownerDocument)&&p.defaultView||window;var v=p.getSelection&&p.getSelection();if(v&&v.rangeCount!==0){p=v.anchorNode;var O=v.anchorOffset,C=v.focusNode;v=v.focusOffset;try{p.nodeType,C.nodeType}catch{p=null;break e}var q=0,K=-1,ue=-1,we=0,Ee=0,Re=u,Se=null;t:for(;;){for(var Ce;Re!==p||O!==0&&Re.nodeType!==3||(K=q+O),Re!==C||v!==0&&Re.nodeType!==3||(ue=q+v),Re.nodeType===3&&(q+=Re.nodeValue.length),(Ce=Re.firstChild)!==null;)Se=Re,Re=Ce;for(;;){if(Re===u)break t;if(Se===p&&++we===O&&(K=q),Se===C&&++Ee===v&&(ue=q),(Ce=Re.nextSibling)!==null)break;Re=Se,Se=Re.parentNode}Re=Ce}p=K===-1||ue===-1?null:{start:K,end:ue}}else p=null}p=p||{start:0,end:0}}else p=null;for(n4={focusedElem:u,selectionRange:p},Bx=!1,vs=f;vs!==null;)if(f=vs,u=f.child,(f.subtreeFlags&1028)!==0&&u!==null)u.return=f,vs=u;else for(;vs!==null;){switch(f=vs,C=f.alternate,u=f.flags,f.tag){case 0:if((u&4)!==0&&(u=f.updateQueue,u=u!==null?u.events:null,u!==null))for(p=0;p title"))),_s(C,v,p),C[Cr]=u,Gr(C),v=C;break e;case"link":var q=t9("link","href",O).get(v+(p.href||""));if(q){for(var K=0;KJn&&(q=Jn,Jn=At,At=q);var pe=iC(K,At),fe=iC(K,Jn);if(pe&&fe&&(Ce.rangeCount!==1||Ce.anchorNode!==pe.node||Ce.anchorOffset!==pe.offset||Ce.focusNode!==fe.node||Ce.focusOffset!==fe.offset)){var ye=Re.createRange();ye.setStart(pe.node,pe.offset),Ce.removeAllRanges(),At>Jn?(Ce.addRange(ye),Ce.extend(fe.node,fe.offset)):(ye.setEnd(fe.node,fe.offset),Ce.addRange(ye))}}}}for(Re=[],Ce=K;Ce=Ce.parentNode;)Ce.nodeType===1&&Re.push({element:Ce,left:Ce.scrollLeft,top:Ce.scrollTop});for(typeof K.focus=="function"&&K.focus(),K=0;Kp?32:p,F.T=null,p=q2,q2=null;var C=gc,q=pl;if(ls=0,Kd=gc=null,pl=0,(Hn&6)!==0)throw Error(r(331));var K=Hn;if(Hn|=4,aT(C.current),rT(C,C.current,q,p),Hn=K,Om(0,!1),rt&&typeof rt.onPostCommitFiberRoot=="function")try{rt.onPostCommitFiberRoot(Fe,C)}catch{}return!0}finally{Y.p=O,F.T=v,OT(u,f)}}function NT(u,f,p){f=ra(p,f),f=b2(u.stateNode,f,2),u=cc(u,f,2),u!==null&&(cr(u,2),co(u))}function Un(u,f,p){if(u.tag===3)NT(u,u,p);else for(;f!==null;){if(f.tag===3){NT(f,u,p);break}else if(f.tag===1){var v=f.stateNode;if(typeof f.type.getDerivedStateFromError=="function"||typeof v.componentDidCatch=="function"&&(pc===null||!pc.has(v))){u=ra(p,u),p=C8(2),v=cc(f,p,2),v!==null&&(T8(p,v,f,u),cr(v,2),co(v));break}}f=f.return}}function V2(u,f,p){var v=u.pingCache;if(v===null){v=u.pingCache=new bZ;var O=new Set;v.set(f,O)}else O=v.get(f),O===void 0&&(O=new Set,v.set(f,O));O.has(p)||(I2=!0,O.add(p),u=jZ.bind(null,u,f,p),f.then(u,u))}function jZ(u,f,p){var v=u.pingCache;v!==null&&v.delete(f),u.pingedLanes|=u.suspendedLanes&p,u.warmLanes&=~p,rr===u&&(hn&p)===p&&(zr===4||zr===3&&(hn&62914560)===hn&&300>_t()-wx?(Hn&2)===0&&Zd(u,0):L2|=p,Yd===hn&&(Yd=0)),co(u)}function CT(u,f){f===0&&(f=vr()),u=yu(u,f),u!==null&&(cr(u,f),co(u))}function NZ(u){var f=u.memoizedState,p=0;f!==null&&(p=f.retryLane),CT(u,p)}function CZ(u,f){var p=0;switch(u.tag){case 31:case 13:var v=u.stateNode,O=u.memoizedState;O!==null&&(p=O.retryLane);break;case 19:v=u.stateNode;break;case 22:v=u.stateNode._retryCache;break;default:throw Error(r(314))}v!==null&&v.delete(f),CT(u,p)}function TZ(u,f){return xt(u,f)}var Tx=null,eh=null,U2=!1,Ex=!1,W2=!1,vc=0;function co(u){u!==eh&&u.next===null&&(eh===null?Tx=eh=u:eh=eh.next=u),Ex=!0,U2||(U2=!0,_Z())}function Om(u,f){if(!W2&&Ex){W2=!0;do for(var p=!1,v=Tx;v!==null;){if(u!==0){var O=v.pendingLanes;if(O===0)var C=0;else{var q=v.suspendedLanes,K=v.pingedLanes;C=(1<<31-Rt(42|u)+1)-1,C&=O&~(q&~K),C=C&201326741?C&201326741|1:C?C|2:0}C!==0&&(p=!0,AT(v,C))}else C=hn,C=xr(v,v===rr?C:0,v.cancelPendingCommit!==null||v.timeoutHandle!==-1),(C&3)===0||Ur(v,C)||(p=!0,AT(v,C));v=v.next}while(p);W2=!1}}function EZ(){TT()}function TT(){Ex=U2=!1;var u=0;vc!==0&&FZ()&&(u=vc);for(var f=_t(),p=null,v=Tx;v!==null;){var O=v.next,C=ET(v,f);C===0?(v.next=null,p===null?Tx=O:p.next=O,O===null&&(eh=p)):(p=v,(u!==0||(C&3)!==0)&&(Ex=!0)),v=O}ls!==0&&ls!==5||Om(u),vc!==0&&(vc=0)}function ET(u,f){for(var p=u.suspendedLanes,v=u.pingedLanes,O=u.expirationTimes,C=u.pendingLanes&-62914561;0K)break;var Ee=ue.transferSize,Re=ue.initiatorType;Ee&&BT(Re)&&(ue=ue.responseEnd,q+=Ee*(ue"u"?null:document;function KT(u,f,p){var v=th;if(v&&typeof f=="string"&&f){var O=ta(f);O='link[rel="'+u+'"][href="'+O+'"]',typeof p=="string"&&(O+='[crossorigin="'+p+'"]'),YT.has(O)||(YT.add(O),u={rel:u,crossOrigin:p,href:f},v.querySelector(O)===null&&(f=v.createElement("link"),_s(f,"link",u),Gr(f),v.head.appendChild(f)))}}function XZ(u){gl.D(u),KT("dns-prefetch",u,null)}function YZ(u,f){gl.C(u,f),KT("preconnect",u,f)}function KZ(u,f,p){gl.L(u,f,p);var v=th;if(v&&u&&f){var O='link[rel="preload"][as="'+ta(f)+'"]';f==="image"&&p&&p.imageSrcSet?(O+='[imagesrcset="'+ta(p.imageSrcSet)+'"]',typeof p.imageSizes=="string"&&(O+='[imagesizes="'+ta(p.imageSizes)+'"]')):O+='[href="'+ta(u)+'"]';var C=O;switch(f){case"style":C=nh(u);break;case"script":C=rh(u)}ca.has(C)||(u=m({rel:"preload",href:f==="image"&&p&&p.imageSrcSet?void 0:u,as:f},p),ca.set(C,u),v.querySelector(O)!==null||f==="style"&&v.querySelector(Tm(C))||f==="script"&&v.querySelector(Em(C))||(f=v.createElement("link"),_s(f,"link",u),Gr(f),v.head.appendChild(f)))}}function ZZ(u,f){gl.m(u,f);var p=th;if(p&&u){var v=f&&typeof f.as=="string"?f.as:"script",O='link[rel="modulepreload"][as="'+ta(v)+'"][href="'+ta(u)+'"]',C=O;switch(v){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":C=rh(u)}if(!ca.has(C)&&(u=m({rel:"modulepreload",href:u},f),ca.set(C,u),p.querySelector(O)===null)){switch(v){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(p.querySelector(Em(C)))return}v=p.createElement("link"),_s(v,"link",u),Gr(v),p.head.appendChild(v)}}}function JZ(u,f,p){gl.S(u,f,p);var v=th;if(v&&u){var O=tc(v).hoistableStyles,C=nh(u);f=f||"default";var q=O.get(C);if(!q){var K={loading:0,preload:null};if(q=v.querySelector(Tm(C)))K.loading=5;else{u=m({rel:"stylesheet",href:u,"data-precedence":f},p),(p=ca.get(C))&&c4(u,p);var ue=q=v.createElement("link");Gr(ue),_s(ue,"link",u),ue._p=new Promise(function(we,Ee){ue.onload=we,ue.onerror=Ee}),ue.addEventListener("load",function(){K.loading|=1}),ue.addEventListener("error",function(){K.loading|=2}),K.loading|=4,Dx(q,f,v)}q={type:"stylesheet",instance:q,count:1,state:K},O.set(C,q)}}}function eJ(u,f){gl.X(u,f);var p=th;if(p&&u){var v=tc(p).hoistableScripts,O=rh(u),C=v.get(O);C||(C=p.querySelector(Em(O)),C||(u=m({src:u,async:!0},f),(f=ca.get(O))&&u4(u,f),C=p.createElement("script"),Gr(C),_s(C,"link",u),p.head.appendChild(C)),C={type:"script",instance:C,count:1,state:null},v.set(O,C))}}function tJ(u,f){gl.M(u,f);var p=th;if(p&&u){var v=tc(p).hoistableScripts,O=rh(u),C=v.get(O);C||(C=p.querySelector(Em(O)),C||(u=m({src:u,async:!0,type:"module"},f),(f=ca.get(O))&&u4(u,f),C=p.createElement("script"),Gr(C),_s(C,"link",u),p.head.appendChild(C)),C={type:"script",instance:C,count:1,state:null},v.set(O,C))}}function ZT(u,f,p,v){var O=(O=ne.current)?Rx(O):null;if(!O)throw Error(r(446));switch(u){case"meta":case"title":return null;case"style":return typeof p.precedence=="string"&&typeof p.href=="string"?(f=nh(p.href),p=tc(O).hoistableStyles,v=p.get(f),v||(v={type:"style",instance:null,count:0,state:null},p.set(f,v)),v):{type:"void",instance:null,count:0,state:null};case"link":if(p.rel==="stylesheet"&&typeof p.href=="string"&&typeof p.precedence=="string"){u=nh(p.href);var C=tc(O).hoistableStyles,q=C.get(u);if(q||(O=O.ownerDocument||O,q={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},C.set(u,q),(C=O.querySelector(Tm(u)))&&!C._p&&(q.instance=C,q.state.loading=5),ca.has(u)||(p={rel:"preload",as:"style",href:p.href,crossOrigin:p.crossOrigin,integrity:p.integrity,media:p.media,hrefLang:p.hrefLang,referrerPolicy:p.referrerPolicy},ca.set(u,p),C||nJ(O,u,p,q.state))),f&&v===null)throw Error(r(528,""));return q}if(f&&v!==null)throw Error(r(529,""));return null;case"script":return f=p.async,p=p.src,typeof p=="string"&&f&&typeof f!="function"&&typeof f!="symbol"?(f=rh(p),p=tc(O).hoistableScripts,v=p.get(f),v||(v={type:"script",instance:null,count:0,state:null},p.set(f,v)),v):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,u))}}function nh(u){return'href="'+ta(u)+'"'}function Tm(u){return'link[rel="stylesheet"]['+u+"]"}function JT(u){return m({},u,{"data-precedence":u.precedence,precedence:null})}function nJ(u,f,p,v){u.querySelector('link[rel="preload"][as="style"]['+f+"]")?v.loading=1:(f=u.createElement("link"),v.preload=f,f.addEventListener("load",function(){return v.loading|=1}),f.addEventListener("error",function(){return v.loading|=2}),_s(f,"link",p),Gr(f),u.head.appendChild(f))}function rh(u){return'[src="'+ta(u)+'"]'}function Em(u){return"script[async]"+u}function e9(u,f,p){if(f.count++,f.instance===null)switch(f.type){case"style":var v=u.querySelector('style[data-href~="'+ta(p.href)+'"]');if(v)return f.instance=v,Gr(v),v;var O=m({},p,{"data-href":p.href,"data-precedence":p.precedence,href:null,precedence:null});return v=(u.ownerDocument||u).createElement("style"),Gr(v),_s(v,"style",O),Dx(v,p.precedence,u),f.instance=v;case"stylesheet":O=nh(p.href);var C=u.querySelector(Tm(O));if(C)return f.state.loading|=4,f.instance=C,Gr(C),C;v=JT(p),(O=ca.get(O))&&c4(v,O),C=(u.ownerDocument||u).createElement("link"),Gr(C);var q=C;return q._p=new Promise(function(K,ue){q.onload=K,q.onerror=ue}),_s(C,"link",v),f.state.loading|=4,Dx(C,p.precedence,u),f.instance=C;case"script":return C=rh(p.src),(O=u.querySelector(Em(C)))?(f.instance=O,Gr(O),O):(v=p,(O=ca.get(C))&&(v=m({},p),u4(v,O)),u=u.ownerDocument||u,O=u.createElement("script"),Gr(O),_s(O,"link",v),u.head.appendChild(O),f.instance=O);case"void":return null;default:throw Error(r(443,f.type))}else f.type==="stylesheet"&&(f.state.loading&4)===0&&(v=f.instance,f.state.loading|=4,Dx(v,p.precedence,u));return f.instance}function Dx(u,f,p){for(var v=p.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),O=v.length?v[v.length-1]:null,C=O,q=0;q title"):null)}function rJ(u,f,p){if(p===1||f.itemProp!=null)return!1;switch(u){case"meta":case"title":return!0;case"style":if(typeof f.precedence!="string"||typeof f.href!="string"||f.href==="")break;return!0;case"link":if(typeof f.rel!="string"||typeof f.href!="string"||f.href===""||f.onLoad||f.onError)break;switch(f.rel){case"stylesheet":return u=f.disabled,typeof f.precedence=="string"&&u==null;default:return!0}case"script":if(f.async&&typeof f.async!="function"&&typeof f.async!="symbol"&&!f.onLoad&&!f.onError&&f.src&&typeof f.src=="string")return!0}return!1}function r9(u){return!(u.type==="stylesheet"&&(u.state.loading&3)===0)}function sJ(u,f,p,v){if(p.type==="stylesheet"&&(typeof v.media!="string"||matchMedia(v.media).matches!==!1)&&(p.state.loading&4)===0){if(p.instance===null){var O=nh(v.href),C=f.querySelector(Tm(O));if(C){f=C._p,f!==null&&typeof f=="object"&&typeof f.then=="function"&&(u.count++,u=zx.bind(u),f.then(u,u)),p.state.loading|=4,p.instance=C,Gr(C);return}C=f.ownerDocument||f,v=JT(v),(O=ca.get(O))&&c4(v,O),C=C.createElement("link"),Gr(C);var q=C;q._p=new Promise(function(K,ue){q.onload=K,q.onerror=ue}),_s(C,"link",v),p.instance=C}u.stylesheets===null&&(u.stylesheets=new Map),u.stylesheets.set(p,f),(f=p.state.preload)&&(p.state.loading&3)===0&&(u.count++,p=zx.bind(u),f.addEventListener("load",p),f.addEventListener("error",p))}}var d4=0;function iJ(u,f){return u.stylesheets&&u.count===0&&Lx(u,u.stylesheets),0d4?50:800)+f);return u.unsuspend=p,function(){u.unsuspend=null,clearTimeout(v),clearTimeout(O)}}:null}function zx(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Lx(this,this.stylesheets);else if(this.unsuspend){var u=this.unsuspend;this.unsuspend=null,u()}}}var Ix=null;function Lx(u,f){u.stylesheets=null,u.unsuspend!==null&&(u.count++,Ix=new Map,f.forEach(aJ,u),Ix=null,zx.call(u))}function aJ(u,f){if(!(f.state.loading&4)){var p=Ix.get(u);if(p)var v=p.get(null);else{p=new Map,Ix.set(u,p);for(var O=u.querySelectorAll("link[data-precedence],style[data-precedence]"),C=0;C"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),b4.exports=xte(),b4.exports}var yte=vte();function NI(t,e){return function(){return t.apply(e,arguments)}}const{toString:bte}=Object.prototype,{getPrototypeOf:Rj}=Object,{iterator:Xy,toStringTag:CI}=Symbol,Yy=(t=>e=>{const n=bte.call(e);return t[n]||(t[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),eo=t=>(t=t.toLowerCase(),e=>Yy(e)===t),Ky=t=>e=>typeof e===t,{isArray:yf}=Array,Xh=Ky("undefined");function Rp(t){return t!==null&&!Xh(t)&&t.constructor!==null&&!Xh(t.constructor)&&wi(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const TI=eo("ArrayBuffer");function wte(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&TI(t.buffer),e}const Ste=Ky("string"),wi=Ky("function"),EI=Ky("number"),Dp=t=>t!==null&&typeof t=="object",kte=t=>t===!0||t===!1,ev=t=>{if(Yy(t)!=="object")return!1;const e=Rj(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(CI in t)&&!(Xy in t)},Ote=t=>{if(!Dp(t)||Rp(t))return!1;try{return Object.keys(t).length===0&&Object.getPrototypeOf(t)===Object.prototype}catch{return!1}},jte=eo("Date"),Nte=eo("File"),Cte=eo("Blob"),Tte=eo("FileList"),Ete=t=>Dp(t)&&wi(t.pipe),_te=t=>{let e;return t&&(typeof FormData=="function"&&t instanceof FormData||wi(t.append)&&((e=Yy(t))==="formdata"||e==="object"&&wi(t.toString)&&t.toString()==="[object FormData]"))},Ate=eo("URLSearchParams"),[Mte,Rte,Dte,Pte]=["ReadableStream","Request","Response","Headers"].map(eo),zte=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Pp(t,e,{allOwnKeys:n=!1}={}){if(t===null||typeof t>"u")return;let r,s;if(typeof t!="object"&&(t=[t]),yf(t))for(r=0,s=t.length;r0;)if(s=n[r],e===s.toLowerCase())return s;return null}const $u=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,AI=t=>!Xh(t)&&t!==$u;function ak(){const{caseless:t,skipUndefined:e}=AI(this)&&this||{},n={},r=(s,i)=>{const a=t&&_I(n,i)||i;ev(n[a])&&ev(s)?n[a]=ak(n[a],s):ev(s)?n[a]=ak({},s):yf(s)?n[a]=s.slice():(!e||!Xh(s))&&(n[a]=s)};for(let s=0,i=arguments.length;s(Pp(e,(s,i)=>{n&&wi(s)?t[i]=NI(s,n):t[i]=s},{allOwnKeys:r}),t),Lte=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),Bte=(t,e,n,r)=>{t.prototype=Object.create(e.prototype,r),t.prototype.constructor=t,Object.defineProperty(t,"super",{value:e.prototype}),n&&Object.assign(t.prototype,n)},Fte=(t,e,n,r)=>{let s,i,a;const l={};if(e=e||{},t==null)return e;do{for(s=Object.getOwnPropertyNames(t),i=s.length;i-- >0;)a=s[i],(!r||r(a,t,e))&&!l[a]&&(e[a]=t[a],l[a]=!0);t=n!==!1&&Rj(t)}while(t&&(!n||n(t,e))&&t!==Object.prototype);return e},qte=(t,e,n)=>{t=String(t),(n===void 0||n>t.length)&&(n=t.length),n-=e.length;const r=t.indexOf(e,n);return r!==-1&&r===n},$te=t=>{if(!t)return null;if(yf(t))return t;let e=t.length;if(!EI(e))return null;const n=new Array(e);for(;e-- >0;)n[e]=t[e];return n},Hte=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&Rj(Uint8Array)),Qte=(t,e)=>{const r=(t&&t[Xy]).call(t);let s;for(;(s=r.next())&&!s.done;){const i=s.value;e.call(t,i[0],i[1])}},Vte=(t,e)=>{let n;const r=[];for(;(n=t.exec(e))!==null;)r.push(n);return r},Ute=eo("HTMLFormElement"),Wte=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),E9=(({hasOwnProperty:t})=>(e,n)=>t.call(e,n))(Object.prototype),Gte=eo("RegExp"),MI=(t,e)=>{const n=Object.getOwnPropertyDescriptors(t),r={};Pp(n,(s,i)=>{let a;(a=e(s,i,t))!==!1&&(r[i]=a||s)}),Object.defineProperties(t,r)},Xte=t=>{MI(t,(e,n)=>{if(wi(t)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=t[n];if(wi(r)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},Yte=(t,e)=>{const n={},r=s=>{s.forEach(i=>{n[i]=!0})};return yf(t)?r(t):r(String(t).split(e)),n},Kte=()=>{},Zte=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e;function Jte(t){return!!(t&&wi(t.append)&&t[CI]==="FormData"&&t[Xy])}const ene=t=>{const e=new Array(10),n=(r,s)=>{if(Dp(r)){if(e.indexOf(r)>=0)return;if(Rp(r))return r;if(!("toJSON"in r)){e[s]=r;const i=yf(r)?[]:{};return Pp(r,(a,l)=>{const c=n(a,s+1);!Xh(c)&&(i[l]=c)}),e[s]=void 0,i}}return r};return n(t,0)},tne=eo("AsyncFunction"),nne=t=>t&&(Dp(t)||wi(t))&&wi(t.then)&&wi(t.catch),RI=((t,e)=>t?setImmediate:e?((n,r)=>($u.addEventListener("message",({source:s,data:i})=>{s===$u&&i===n&&r.length&&r.shift()()},!1),s=>{r.push(s),$u.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",wi($u.postMessage)),rne=typeof queueMicrotask<"u"?queueMicrotask.bind($u):typeof process<"u"&&process.nextTick||RI,sne=t=>t!=null&&wi(t[Xy]),je={isArray:yf,isArrayBuffer:TI,isBuffer:Rp,isFormData:_te,isArrayBufferView:wte,isString:Ste,isNumber:EI,isBoolean:kte,isObject:Dp,isPlainObject:ev,isEmptyObject:Ote,isReadableStream:Mte,isRequest:Rte,isResponse:Dte,isHeaders:Pte,isUndefined:Xh,isDate:jte,isFile:Nte,isBlob:Cte,isRegExp:Gte,isFunction:wi,isStream:Ete,isURLSearchParams:Ate,isTypedArray:Hte,isFileList:Tte,forEach:Pp,merge:ak,extend:Ite,trim:zte,stripBOM:Lte,inherits:Bte,toFlatObject:Fte,kindOf:Yy,kindOfTest:eo,endsWith:qte,toArray:$te,forEachEntry:Qte,matchAll:Vte,isHTMLForm:Ute,hasOwnProperty:E9,hasOwnProp:E9,reduceDescriptors:MI,freezeMethods:Xte,toObjectSet:Yte,toCamelCase:Wte,noop:Kte,toFiniteNumber:Zte,findKey:_I,global:$u,isContextDefined:AI,isSpecCompliantForm:Jte,toJSONObject:ene,isAsyncFn:tne,isThenable:nne,setImmediate:RI,asap:rne,isIterable:sne};function Xt(t,e,n,r,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=t,this.name="AxiosError",e&&(this.code=e),n&&(this.config=n),r&&(this.request=r),s&&(this.response=s,this.status=s.status?s.status:null)}je.inherits(Xt,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:je.toJSONObject(this.config),code:this.code,status:this.status}}});const DI=Xt.prototype,PI={};["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(t=>{PI[t]={value:t}});Object.defineProperties(Xt,PI);Object.defineProperty(DI,"isAxiosError",{value:!0});Xt.from=(t,e,n,r,s,i)=>{const a=Object.create(DI);je.toFlatObject(t,a,function(h){return h!==Error.prototype},d=>d!=="isAxiosError");const l=t&&t.message?t.message:"Error",c=e==null&&t?t.code:e;return Xt.call(a,l,c,n,r,s),t&&a.cause==null&&Object.defineProperty(a,"cause",{value:t,configurable:!0}),a.name=t&&t.name||"Error",i&&Object.assign(a,i),a};const ine=null;function ok(t){return je.isPlainObject(t)||je.isArray(t)}function zI(t){return je.endsWith(t,"[]")?t.slice(0,-2):t}function _9(t,e,n){return t?t.concat(e).map(function(s,i){return s=zI(s),!n&&i?"["+s+"]":s}).join(n?".":""):e}function ane(t){return je.isArray(t)&&!t.some(ok)}const one=je.toFlatObject(je,{},null,function(e){return/^is[A-Z]/.test(e)});function Zy(t,e,n){if(!je.isObject(t))throw new TypeError("target must be an object");e=e||new FormData,n=je.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(w,S){return!je.isUndefined(S[w])});const r=n.metaTokens,s=n.visitor||h,i=n.dots,a=n.indexes,c=(n.Blob||typeof Blob<"u"&&Blob)&&je.isSpecCompliantForm(e);if(!je.isFunction(s))throw new TypeError("visitor must be a function");function d(y){if(y===null)return"";if(je.isDate(y))return y.toISOString();if(je.isBoolean(y))return y.toString();if(!c&&je.isBlob(y))throw new Xt("Blob is not supported. Use a Buffer instead.");return je.isArrayBuffer(y)||je.isTypedArray(y)?c&&typeof Blob=="function"?new Blob([y]):Buffer.from(y):y}function h(y,w,S){let k=y;if(y&&!S&&typeof y=="object"){if(je.endsWith(w,"{}"))w=r?w:w.slice(0,-2),y=JSON.stringify(y);else if(je.isArray(y)&&ane(y)||(je.isFileList(y)||je.endsWith(w,"[]"))&&(k=je.toArray(y)))return w=zI(w),k.forEach(function(N,T){!(je.isUndefined(N)||N===null)&&e.append(a===!0?_9([w],T,i):a===null?w:w+"[]",d(N))}),!1}return ok(y)?!0:(e.append(_9(S,w,i),d(y)),!1)}const m=[],g=Object.assign(one,{defaultVisitor:h,convertValue:d,isVisitable:ok});function x(y,w){if(!je.isUndefined(y)){if(m.indexOf(y)!==-1)throw Error("Circular reference detected in "+w.join("."));m.push(y),je.forEach(y,function(k,j){(!(je.isUndefined(k)||k===null)&&s.call(e,k,je.isString(j)?j.trim():j,w,g))===!0&&x(k,w?w.concat(j):[j])}),m.pop()}}if(!je.isObject(t))throw new TypeError("data must be an object");return x(t),e}function A9(t){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,function(r){return e[r]})}function Dj(t,e){this._pairs=[],t&&Zy(t,this,e)}const II=Dj.prototype;II.append=function(e,n){this._pairs.push([e,n])};II.toString=function(e){const n=e?function(r){return e.call(this,r,A9)}:A9;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function lne(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function LI(t,e,n){if(!e)return t;const r=n&&n.encode||lne;je.isFunction(n)&&(n={serialize:n});const s=n&&n.serialize;let i;if(s?i=s(e,n):i=je.isURLSearchParams(e)?e.toString():new Dj(e,n).toString(r),i){const a=t.indexOf("#");a!==-1&&(t=t.slice(0,a)),t+=(t.indexOf("?")===-1?"?":"&")+i}return t}class M9{constructor(){this.handlers=[]}use(e,n,r){return this.handlers.push({fulfilled:e,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){je.forEach(this.handlers,function(r){r!==null&&e(r)})}}const BI={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},cne=typeof URLSearchParams<"u"?URLSearchParams:Dj,une=typeof FormData<"u"?FormData:null,dne=typeof Blob<"u"?Blob:null,hne={isBrowser:!0,classes:{URLSearchParams:cne,FormData:une,Blob:dne},protocols:["http","https","file","blob","url","data"]},Pj=typeof window<"u"&&typeof document<"u",lk=typeof navigator=="object"&&navigator||void 0,fne=Pj&&(!lk||["ReactNative","NativeScript","NS"].indexOf(lk.product)<0),mne=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",pne=Pj&&window.location.href||"http://localhost",gne=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Pj,hasStandardBrowserEnv:fne,hasStandardBrowserWebWorkerEnv:mne,navigator:lk,origin:pne},Symbol.toStringTag,{value:"Module"})),Hs={...gne,...hne};function xne(t,e){return Zy(t,new Hs.classes.URLSearchParams,{visitor:function(n,r,s,i){return Hs.isNode&&je.isBuffer(n)?(this.append(r,n.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)},...e})}function vne(t){return je.matchAll(/\w+|\[(\w*)]/g,t).map(e=>e[0]==="[]"?"":e[1]||e[0])}function yne(t){const e={},n=Object.keys(t);let r;const s=n.length;let i;for(r=0;r=n.length;return a=!a&&je.isArray(s)?s.length:a,c?(je.hasOwnProp(s,a)?s[a]=[s[a],r]:s[a]=r,!l):((!s[a]||!je.isObject(s[a]))&&(s[a]=[]),e(n,r,s[a],i)&&je.isArray(s[a])&&(s[a]=yne(s[a])),!l)}if(je.isFormData(t)&&je.isFunction(t.entries)){const n={};return je.forEachEntry(t,(r,s)=>{e(vne(r),s,n,0)}),n}return null}function bne(t,e,n){if(je.isString(t))try{return(e||JSON.parse)(t),je.trim(t)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(t)}const zp={transitional:BI,adapter:["xhr","http","fetch"],transformRequest:[function(e,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,i=je.isObject(e);if(i&&je.isHTMLForm(e)&&(e=new FormData(e)),je.isFormData(e))return s?JSON.stringify(FI(e)):e;if(je.isArrayBuffer(e)||je.isBuffer(e)||je.isStream(e)||je.isFile(e)||je.isBlob(e)||je.isReadableStream(e))return e;if(je.isArrayBufferView(e))return e.buffer;if(je.isURLSearchParams(e))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let l;if(i){if(r.indexOf("application/x-www-form-urlencoded")>-1)return xne(e,this.formSerializer).toString();if((l=je.isFileList(e))||r.indexOf("multipart/form-data")>-1){const c=this.env&&this.env.FormData;return Zy(l?{"files[]":e}:e,c&&new c,this.formSerializer)}}return i||s?(n.setContentType("application/json",!1),bne(e)):e}],transformResponse:[function(e){const n=this.transitional||zp.transitional,r=n&&n.forcedJSONParsing,s=this.responseType==="json";if(je.isResponse(e)||je.isReadableStream(e))return e;if(e&&je.isString(e)&&(r&&!this.responseType||s)){const a=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(e,this.parseReviver)}catch(l){if(a)throw l.name==="SyntaxError"?Xt.from(l,Xt.ERR_BAD_RESPONSE,this,null,this.response):l}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Hs.classes.FormData,Blob:Hs.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};je.forEach(["delete","get","head","post","put","patch"],t=>{zp.headers[t]={}});const wne=je.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"]),Sne=t=>{const e={};let n,r,s;return t&&t.split(` +`).forEach(function(a){s=a.indexOf(":"),n=a.substring(0,s).trim().toLowerCase(),r=a.substring(s+1).trim(),!(!n||e[n]&&wne[n])&&(n==="set-cookie"?e[n]?e[n].push(r):e[n]=[r]:e[n]=e[n]?e[n]+", "+r:r)}),e},R9=Symbol("internals");function zm(t){return t&&String(t).trim().toLowerCase()}function tv(t){return t===!1||t==null?t:je.isArray(t)?t.map(tv):String(t)}function kne(t){const e=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(t);)e[r[1]]=r[2];return e}const One=t=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function k4(t,e,n,r,s){if(je.isFunction(r))return r.call(this,e,n);if(s&&(e=n),!!je.isString(e)){if(je.isString(r))return e.indexOf(r)!==-1;if(je.isRegExp(r))return r.test(e)}}function jne(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,n,r)=>n.toUpperCase()+r)}function Nne(t,e){const n=je.toCamelCase(" "+e);["get","set","has"].forEach(r=>{Object.defineProperty(t,r+n,{value:function(s,i,a){return this[r].call(this,e,s,i,a)},configurable:!0})})}let Si=class{constructor(e){e&&this.set(e)}set(e,n,r){const s=this;function i(l,c,d){const h=zm(c);if(!h)throw new Error("header name must be a non-empty string");const m=je.findKey(s,h);(!m||s[m]===void 0||d===!0||d===void 0&&s[m]!==!1)&&(s[m||c]=tv(l))}const a=(l,c)=>je.forEach(l,(d,h)=>i(d,h,c));if(je.isPlainObject(e)||e instanceof this.constructor)a(e,n);else if(je.isString(e)&&(e=e.trim())&&!One(e))a(Sne(e),n);else if(je.isObject(e)&&je.isIterable(e)){let l={},c,d;for(const h of e){if(!je.isArray(h))throw TypeError("Object iterator must return a key-value pair");l[d=h[0]]=(c=l[d])?je.isArray(c)?[...c,h[1]]:[c,h[1]]:h[1]}a(l,n)}else e!=null&&i(n,e,r);return this}get(e,n){if(e=zm(e),e){const r=je.findKey(this,e);if(r){const s=this[r];if(!n)return s;if(n===!0)return kne(s);if(je.isFunction(n))return n.call(this,s,r);if(je.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,n){if(e=zm(e),e){const r=je.findKey(this,e);return!!(r&&this[r]!==void 0&&(!n||k4(this,this[r],r,n)))}return!1}delete(e,n){const r=this;let s=!1;function i(a){if(a=zm(a),a){const l=je.findKey(r,a);l&&(!n||k4(r,r[l],l,n))&&(delete r[l],s=!0)}}return je.isArray(e)?e.forEach(i):i(e),s}clear(e){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const i=n[r];(!e||k4(this,this[i],i,e,!0))&&(delete this[i],s=!0)}return s}normalize(e){const n=this,r={};return je.forEach(this,(s,i)=>{const a=je.findKey(r,i);if(a){n[a]=tv(s),delete n[i];return}const l=e?jne(i):String(i).trim();l!==i&&delete n[i],n[l]=tv(s),r[l]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const n=Object.create(null);return je.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=e&&je.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,n])=>e+": "+n).join(` +`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...n){const r=new this(e);return n.forEach(s=>r.set(s)),r}static accessor(e){const r=(this[R9]=this[R9]={accessors:{}}).accessors,s=this.prototype;function i(a){const l=zm(a);r[l]||(Nne(s,a),r[l]=!0)}return je.isArray(e)?e.forEach(i):i(e),this}};Si.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);je.reduceDescriptors(Si.prototype,({value:t},e)=>{let n=e[0].toUpperCase()+e.slice(1);return{get:()=>t,set(r){this[n]=r}}});je.freezeMethods(Si);function O4(t,e){const n=this||zp,r=e||n,s=Si.from(r.headers);let i=r.data;return je.forEach(t,function(l){i=l.call(n,i,s.normalize(),e?e.status:void 0)}),s.normalize(),i}function qI(t){return!!(t&&t.__CANCEL__)}function bf(t,e,n){Xt.call(this,t??"canceled",Xt.ERR_CANCELED,e,n),this.name="CanceledError"}je.inherits(bf,Xt,{__CANCEL__:!0});function $I(t,e,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?t(n):e(new Xt("Request failed with status code "+n.status,[Xt.ERR_BAD_REQUEST,Xt.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function Cne(t){const e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return e&&e[1]||""}function Tne(t,e){t=t||10;const n=new Array(t),r=new Array(t);let s=0,i=0,a;return e=e!==void 0?e:1e3,function(c){const d=Date.now(),h=r[i];a||(a=d),n[s]=c,r[s]=d;let m=i,g=0;for(;m!==s;)g+=n[m++],m=m%t;if(s=(s+1)%t,s===i&&(i=(i+1)%t),d-a{n=h,s=null,i&&(clearTimeout(i),i=null),t(...d)};return[(...d)=>{const h=Date.now(),m=h-n;m>=r?a(d,h):(s=d,i||(i=setTimeout(()=>{i=null,a(s)},r-m)))},()=>s&&a(s)]}const zv=(t,e,n=3)=>{let r=0;const s=Tne(50,250);return Ene(i=>{const a=i.loaded,l=i.lengthComputable?i.total:void 0,c=a-r,d=s(c),h=a<=l;r=a;const m={loaded:a,total:l,progress:l?a/l:void 0,bytes:c,rate:d||void 0,estimated:d&&l&&h?(l-a)/d:void 0,event:i,lengthComputable:l!=null,[e?"download":"upload"]:!0};t(m)},n)},D9=(t,e)=>{const n=t!=null;return[r=>e[0]({lengthComputable:n,total:t,loaded:r}),e[1]]},P9=t=>(...e)=>je.asap(()=>t(...e)),_ne=Hs.hasStandardBrowserEnv?((t,e)=>n=>(n=new URL(n,Hs.origin),t.protocol===n.protocol&&t.host===n.host&&(e||t.port===n.port)))(new URL(Hs.origin),Hs.navigator&&/(msie|trident)/i.test(Hs.navigator.userAgent)):()=>!0,Ane=Hs.hasStandardBrowserEnv?{write(t,e,n,r,s,i,a){if(typeof document>"u")return;const l=[`${t}=${encodeURIComponent(e)}`];je.isNumber(n)&&l.push(`expires=${new Date(n).toUTCString()}`),je.isString(r)&&l.push(`path=${r}`),je.isString(s)&&l.push(`domain=${s}`),i===!0&&l.push("secure"),je.isString(a)&&l.push(`SameSite=${a}`),document.cookie=l.join("; ")},read(t){if(typeof document>"u")return null;const e=document.cookie.match(new RegExp("(?:^|; )"+t+"=([^;]*)"));return e?decodeURIComponent(e[1]):null},remove(t){this.write(t,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function Mne(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}function Rne(t,e){return e?t.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):t}function HI(t,e,n){let r=!Mne(e);return t&&(r||n==!1)?Rne(t,e):e}const z9=t=>t instanceof Si?{...t}:t;function rd(t,e){e=e||{};const n={};function r(d,h,m,g){return je.isPlainObject(d)&&je.isPlainObject(h)?je.merge.call({caseless:g},d,h):je.isPlainObject(h)?je.merge({},h):je.isArray(h)?h.slice():h}function s(d,h,m,g){if(je.isUndefined(h)){if(!je.isUndefined(d))return r(void 0,d,m,g)}else return r(d,h,m,g)}function i(d,h){if(!je.isUndefined(h))return r(void 0,h)}function a(d,h){if(je.isUndefined(h)){if(!je.isUndefined(d))return r(void 0,d)}else return r(void 0,h)}function l(d,h,m){if(m in e)return r(d,h);if(m in t)return r(void 0,d)}const c={url:i,method:i,data:i,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:l,headers:(d,h,m)=>s(z9(d),z9(h),m,!0)};return je.forEach(Object.keys({...t,...e}),function(h){const m=c[h]||s,g=m(t[h],e[h],h);je.isUndefined(g)&&m!==l||(n[h]=g)}),n}const QI=t=>{const e=rd({},t);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:i,headers:a,auth:l}=e;if(e.headers=a=Si.from(a),e.url=LI(HI(e.baseURL,e.url,e.allowAbsoluteUrls),t.params,t.paramsSerializer),l&&a.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):""))),je.isFormData(n)){if(Hs.hasStandardBrowserEnv||Hs.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if(je.isFunction(n.getHeaders)){const c=n.getHeaders(),d=["content-type","content-length"];Object.entries(c).forEach(([h,m])=>{d.includes(h.toLowerCase())&&a.set(h,m)})}}if(Hs.hasStandardBrowserEnv&&(r&&je.isFunction(r)&&(r=r(e)),r||r!==!1&&_ne(e.url))){const c=s&&i&&Ane.read(i);c&&a.set(s,c)}return e},Dne=typeof XMLHttpRequest<"u",Pne=Dne&&function(t){return new Promise(function(n,r){const s=QI(t);let i=s.data;const a=Si.from(s.headers).normalize();let{responseType:l,onUploadProgress:c,onDownloadProgress:d}=s,h,m,g,x,y;function w(){x&&x(),y&&y(),s.cancelToken&&s.cancelToken.unsubscribe(h),s.signal&&s.signal.removeEventListener("abort",h)}let S=new XMLHttpRequest;S.open(s.method.toUpperCase(),s.url,!0),S.timeout=s.timeout;function k(){if(!S)return;const N=Si.from("getAllResponseHeaders"in S&&S.getAllResponseHeaders()),E={data:!l||l==="text"||l==="json"?S.responseText:S.response,status:S.status,statusText:S.statusText,headers:N,config:t,request:S};$I(function(A){n(A),w()},function(A){r(A),w()},E),S=null}"onloadend"in S?S.onloadend=k:S.onreadystatechange=function(){!S||S.readyState!==4||S.status===0&&!(S.responseURL&&S.responseURL.indexOf("file:")===0)||setTimeout(k)},S.onabort=function(){S&&(r(new Xt("Request aborted",Xt.ECONNABORTED,t,S)),S=null)},S.onerror=function(T){const E=T&&T.message?T.message:"Network Error",_=new Xt(E,Xt.ERR_NETWORK,t,S);_.event=T||null,r(_),S=null},S.ontimeout=function(){let T=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const E=s.transitional||BI;s.timeoutErrorMessage&&(T=s.timeoutErrorMessage),r(new Xt(T,E.clarifyTimeoutError?Xt.ETIMEDOUT:Xt.ECONNABORTED,t,S)),S=null},i===void 0&&a.setContentType(null),"setRequestHeader"in S&&je.forEach(a.toJSON(),function(T,E){S.setRequestHeader(E,T)}),je.isUndefined(s.withCredentials)||(S.withCredentials=!!s.withCredentials),l&&l!=="json"&&(S.responseType=s.responseType),d&&([g,y]=zv(d,!0),S.addEventListener("progress",g)),c&&S.upload&&([m,x]=zv(c),S.upload.addEventListener("progress",m),S.upload.addEventListener("loadend",x)),(s.cancelToken||s.signal)&&(h=N=>{S&&(r(!N||N.type?new bf(null,t,S):N),S.abort(),S=null)},s.cancelToken&&s.cancelToken.subscribe(h),s.signal&&(s.signal.aborted?h():s.signal.addEventListener("abort",h)));const j=Cne(s.url);if(j&&Hs.protocols.indexOf(j)===-1){r(new Xt("Unsupported protocol "+j+":",Xt.ERR_BAD_REQUEST,t));return}S.send(i||null)})},zne=(t,e)=>{const{length:n}=t=t?t.filter(Boolean):[];if(e||n){let r=new AbortController,s;const i=function(d){if(!s){s=!0,l();const h=d instanceof Error?d:this.reason;r.abort(h instanceof Xt?h:new bf(h instanceof Error?h.message:h))}};let a=e&&setTimeout(()=>{a=null,i(new Xt(`timeout ${e} of ms exceeded`,Xt.ETIMEDOUT))},e);const l=()=>{t&&(a&&clearTimeout(a),a=null,t.forEach(d=>{d.unsubscribe?d.unsubscribe(i):d.removeEventListener("abort",i)}),t=null)};t.forEach(d=>d.addEventListener("abort",i));const{signal:c}=r;return c.unsubscribe=()=>je.asap(l),c}},Ine=function*(t,e){let n=t.byteLength;if(n{const s=Lne(t,e);let i=0,a,l=c=>{a||(a=!0,r&&r(c))};return new ReadableStream({async pull(c){try{const{done:d,value:h}=await s.next();if(d){l(),c.close();return}let m=h.byteLength;if(n){let g=i+=m;n(g)}c.enqueue(new Uint8Array(h))}catch(d){throw l(d),d}},cancel(c){return l(c),s.return()}},{highWaterMark:2})},L9=64*1024,{isFunction:Xx}=je,Fne=(({Request:t,Response:e})=>({Request:t,Response:e}))(je.global),{ReadableStream:B9,TextEncoder:F9}=je.global,q9=(t,...e)=>{try{return!!t(...e)}catch{return!1}},qne=t=>{t=je.merge.call({skipUndefined:!0},Fne,t);const{fetch:e,Request:n,Response:r}=t,s=e?Xx(e):typeof fetch=="function",i=Xx(n),a=Xx(r);if(!s)return!1;const l=s&&Xx(B9),c=s&&(typeof F9=="function"?(y=>w=>y.encode(w))(new F9):async y=>new Uint8Array(await new n(y).arrayBuffer())),d=i&&l&&q9(()=>{let y=!1;const w=new n(Hs.origin,{body:new B9,method:"POST",get duplex(){return y=!0,"half"}}).headers.has("Content-Type");return y&&!w}),h=a&&l&&q9(()=>je.isReadableStream(new r("").body)),m={stream:h&&(y=>y.body)};s&&["text","arrayBuffer","blob","formData","stream"].forEach(y=>{!m[y]&&(m[y]=(w,S)=>{let k=w&&w[y];if(k)return k.call(w);throw new Xt(`Response type '${y}' is not supported`,Xt.ERR_NOT_SUPPORT,S)})});const g=async y=>{if(y==null)return 0;if(je.isBlob(y))return y.size;if(je.isSpecCompliantForm(y))return(await new n(Hs.origin,{method:"POST",body:y}).arrayBuffer()).byteLength;if(je.isArrayBufferView(y)||je.isArrayBuffer(y))return y.byteLength;if(je.isURLSearchParams(y)&&(y=y+""),je.isString(y))return(await c(y)).byteLength},x=async(y,w)=>{const S=je.toFiniteNumber(y.getContentLength());return S??g(w)};return async y=>{let{url:w,method:S,data:k,signal:j,cancelToken:N,timeout:T,onDownloadProgress:E,onUploadProgress:_,responseType:A,headers:L,withCredentials:P="same-origin",fetchOptions:B}=QI(y),$=e||fetch;A=A?(A+"").toLowerCase():"text";let U=zne([j,N&&N.toAbortSignal()],T),te=null;const z=U&&U.unsubscribe&&(()=>{U.unsubscribe()});let Q;try{if(_&&d&&S!=="get"&&S!=="head"&&(Q=await x(L,k))!==0){let ie=new n(w,{method:"POST",body:k,duplex:"half"}),G;if(je.isFormData(k)&&(G=ie.headers.get("content-type"))&&L.setContentType(G),ie.body){const[I,V]=D9(Q,zv(P9(_)));k=I9(ie.body,L9,I,V)}}je.isString(P)||(P=P?"include":"omit");const F=i&&"credentials"in n.prototype,Y={...B,signal:U,method:S.toUpperCase(),headers:L.normalize().toJSON(),body:k,duplex:"half",credentials:F?P:void 0};te=i&&new n(w,Y);let J=await(i?$(te,B):$(w,Y));const X=h&&(A==="stream"||A==="response");if(h&&(E||X&&z)){const ie={};["status","statusText","headers"].forEach(ee=>{ie[ee]=J[ee]});const G=je.toFiniteNumber(J.headers.get("content-length")),[I,V]=E&&D9(G,zv(P9(E),!0))||[];J=new r(I9(J.body,L9,I,()=>{V&&V(),z&&z()}),ie)}A=A||"text";let R=await m[je.findKey(m,A)||"text"](J,y);return!X&&z&&z(),await new Promise((ie,G)=>{$I(ie,G,{data:R,headers:Si.from(J.headers),status:J.status,statusText:J.statusText,config:y,request:te})})}catch(F){throw z&&z(),F&&F.name==="TypeError"&&/Load failed|fetch/i.test(F.message)?Object.assign(new Xt("Network Error",Xt.ERR_NETWORK,y,te),{cause:F.cause||F}):Xt.from(F,F&&F.code,y,te)}}},$ne=new Map,VI=t=>{let e=t&&t.env||{};const{fetch:n,Request:r,Response:s}=e,i=[r,s,n];let a=i.length,l=a,c,d,h=$ne;for(;l--;)c=i[l],d=h.get(c),d===void 0&&h.set(c,d=l?new Map:qne(e)),h=d;return d};VI();const zj={http:ine,xhr:Pne,fetch:{get:VI}};je.forEach(zj,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{value:e})}catch{}Object.defineProperty(t,"adapterName",{value:e})}});const $9=t=>`- ${t}`,Hne=t=>je.isFunction(t)||t===null||t===!1;function Qne(t,e){t=je.isArray(t)?t:[t];const{length:n}=t;let r,s;const i={};for(let a=0;a`adapter ${c} `+(d===!1?"is not supported by the environment":"is not available in the build"));let l=n?a.length>1?`since : +`+a.map($9).join(` +`):" "+$9(a[0]):"as no adapter specified";throw new Xt("There is no suitable adapter to dispatch the request "+l,"ERR_NOT_SUPPORT")}return s}const UI={getAdapter:Qne,adapters:zj};function j4(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new bf(null,t)}function H9(t){return j4(t),t.headers=Si.from(t.headers),t.data=O4.call(t,t.transformRequest),["post","put","patch"].indexOf(t.method)!==-1&&t.headers.setContentType("application/x-www-form-urlencoded",!1),UI.getAdapter(t.adapter||zp.adapter,t)(t).then(function(r){return j4(t),r.data=O4.call(t,t.transformResponse,r),r.headers=Si.from(r.headers),r},function(r){return qI(r)||(j4(t),r&&r.response&&(r.response.data=O4.call(t,t.transformResponse,r.response),r.response.headers=Si.from(r.response.headers))),Promise.reject(r)})}const WI="1.13.2",Jy={};["object","boolean","number","function","string","symbol"].forEach((t,e)=>{Jy[t]=function(r){return typeof r===t||"a"+(e<1?"n ":" ")+t}});const Q9={};Jy.transitional=function(e,n,r){function s(i,a){return"[Axios v"+WI+"] Transitional option '"+i+"'"+a+(r?". "+r:"")}return(i,a,l)=>{if(e===!1)throw new Xt(s(a," has been removed"+(n?" in "+n:"")),Xt.ERR_DEPRECATED);return n&&!Q9[a]&&(Q9[a]=!0,console.warn(s(a," has been deprecated since v"+n+" and will be removed in the near future"))),e?e(i,a,l):!0}};Jy.spelling=function(e){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${e}`),!0)};function Vne(t,e,n){if(typeof t!="object")throw new Xt("options must be an object",Xt.ERR_BAD_OPTION_VALUE);const r=Object.keys(t);let s=r.length;for(;s-- >0;){const i=r[s],a=e[i];if(a){const l=t[i],c=l===void 0||a(l,i,t);if(c!==!0)throw new Xt("option "+i+" must be "+c,Xt.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new Xt("Unknown option "+i,Xt.ERR_BAD_OPTION)}}const nv={assertOptions:Vne,validators:Jy},uo=nv.validators;let Zu=class{constructor(e){this.defaults=e||{},this.interceptors={request:new M9,response:new M9}}async request(e,n){try{return await this._request(e,n)}catch(r){if(r instanceof Error){let s={};Error.captureStackTrace?Error.captureStackTrace(s):s=new Error;const i=s.stack?s.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(e,n){typeof e=="string"?(n=n||{},n.url=e):n=e||{},n=rd(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:i}=n;r!==void 0&&nv.assertOptions(r,{silentJSONParsing:uo.transitional(uo.boolean),forcedJSONParsing:uo.transitional(uo.boolean),clarifyTimeoutError:uo.transitional(uo.boolean)},!1),s!=null&&(je.isFunction(s)?n.paramsSerializer={serialize:s}:nv.assertOptions(s,{encode:uo.function,serialize:uo.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),nv.assertOptions(n,{baseUrl:uo.spelling("baseURL"),withXsrfToken:uo.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let a=i&&je.merge(i.common,i[n.method]);i&&je.forEach(["delete","get","head","post","put","patch","common"],y=>{delete i[y]}),n.headers=Si.concat(a,i);const l=[];let c=!0;this.interceptors.request.forEach(function(w){typeof w.runWhen=="function"&&w.runWhen(n)===!1||(c=c&&w.synchronous,l.unshift(w.fulfilled,w.rejected))});const d=[];this.interceptors.response.forEach(function(w){d.push(w.fulfilled,w.rejected)});let h,m=0,g;if(!c){const y=[H9.bind(this),void 0];for(y.unshift(...l),y.push(...d),g=y.length,h=Promise.resolve(n);m{if(!r._listeners)return;let i=r._listeners.length;for(;i-- >0;)r._listeners[i](s);r._listeners=null}),this.promise.then=s=>{let i;const a=new Promise(l=>{r.subscribe(l),i=l}).then(s);return a.cancel=function(){r.unsubscribe(i)},a},e(function(i,a,l){r.reason||(r.reason=new bf(i,a,l),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const n=this._listeners.indexOf(e);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const e=new AbortController,n=r=>{e.abort(r)};return this.subscribe(n),e.signal.unsubscribe=()=>this.unsubscribe(n),e.signal}static source(){let e;return{token:new GI(function(s){e=s}),cancel:e}}};function Wne(t){return function(n){return t.apply(null,n)}}function Gne(t){return je.isObject(t)&&t.isAxiosError===!0}const ck={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,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(ck).forEach(([t,e])=>{ck[e]=t});function XI(t){const e=new Zu(t),n=NI(Zu.prototype.request,e);return je.extend(n,Zu.prototype,e,{allOwnKeys:!0}),je.extend(n,e,null,{allOwnKeys:!0}),n.create=function(s){return XI(rd(t,s))},n}const Br=XI(zp);Br.Axios=Zu;Br.CanceledError=bf;Br.CancelToken=Une;Br.isCancel=qI;Br.VERSION=WI;Br.toFormData=Zy;Br.AxiosError=Xt;Br.Cancel=Br.CanceledError;Br.all=function(e){return Promise.all(e)};Br.spread=Wne;Br.isAxiosError=Gne;Br.mergeConfig=rd;Br.AxiosHeaders=Si;Br.formToJSON=t=>FI(je.isHTMLForm(t)?new FormData(t):t);Br.getAdapter=UI.getAdapter;Br.HttpStatusCode=ck;Br.default=Br;const{Axios:nPe,AxiosError:rPe,CanceledError:sPe,isCancel:iPe,CancelToken:aPe,VERSION:oPe,all:lPe,Cancel:cPe,isAxiosError:uPe,spread:dPe,toFormData:hPe,AxiosHeaders:fPe,HttpStatusCode:mPe,formToJSON:pPe,getAdapter:gPe,mergeConfig:xPe}=Br,Xne=(t,e)=>{const n=new Array(t.length+e.length);for(let r=0;r({classGroupId:t,validator:e}),YI=(t=new Map,e=null,n)=>({nextPart:t,validators:e,classGroupId:n}),Iv="-",V9=[],Kne="arbitrary..",Zne=t=>{const e=ere(t),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=t;return{getClassGroupId:a=>{if(a.startsWith("[")&&a.endsWith("]"))return Jne(a);const l=a.split(Iv),c=l[0]===""&&l.length>1?1:0;return KI(l,c,e)},getConflictingClassGroupIds:(a,l)=>{if(l){const c=r[a],d=n[a];return c?d?Xne(d,c):c:d||V9}return n[a]||V9}}},KI=(t,e,n)=>{if(t.length-e===0)return n.classGroupId;const s=t[e],i=n.nextPart.get(s);if(i){const d=KI(t,e+1,i);if(d)return d}const a=n.validators;if(a===null)return;const l=e===0?t.join(Iv):t.slice(e).join(Iv),c=a.length;for(let d=0;dt.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const e=t.slice(1,-1),n=e.indexOf(":"),r=e.slice(0,n);return r?Kne+r:void 0})(),ere=t=>{const{theme:e,classGroups:n}=t;return tre(n,e)},tre=(t,e)=>{const n=YI();for(const r in t){const s=t[r];Ij(s,n,r,e)}return n},Ij=(t,e,n,r)=>{const s=t.length;for(let i=0;i{if(typeof t=="string"){rre(t,e,n);return}if(typeof t=="function"){sre(t,e,n,r);return}ire(t,e,n,r)},rre=(t,e,n)=>{const r=t===""?e:ZI(e,t);r.classGroupId=n},sre=(t,e,n,r)=>{if(are(t)){Ij(t(r),e,n,r);return}e.validators===null&&(e.validators=[]),e.validators.push(Yne(n,t))},ire=(t,e,n,r)=>{const s=Object.entries(t),i=s.length;for(let a=0;a{let n=t;const r=e.split(Iv),s=r.length;for(let i=0;i"isThemeGetter"in t&&t.isThemeGetter===!0,ore=t=>{if(t<1)return{get:()=>{},set:()=>{}};let e=0,n=Object.create(null),r=Object.create(null);const s=(i,a)=>{n[i]=a,e++,e>t&&(e=0,r=n,n=Object.create(null))};return{get(i){let a=n[i];if(a!==void 0)return a;if((a=r[i])!==void 0)return s(i,a),a},set(i,a){i in n?n[i]=a:s(i,a)}}},uk="!",U9=":",lre=[],W9=(t,e,n,r,s)=>({modifiers:t,hasImportantModifier:e,baseClassName:n,maybePostfixModifierPosition:r,isExternal:s}),cre=t=>{const{prefix:e,experimentalParseClassName:n}=t;let r=s=>{const i=[];let a=0,l=0,c=0,d;const h=s.length;for(let w=0;wc?d-c:void 0;return W9(i,x,g,y)};if(e){const s=e+U9,i=r;r=a=>a.startsWith(s)?i(a.slice(s.length)):W9(lre,!1,a,void 0,!0)}if(n){const s=r;r=i=>n({className:i,parseClassName:s})}return r},ure=t=>{const e=new Map;return t.orderSensitiveModifiers.forEach((n,r)=>{e.set(n,1e6+r)}),n=>{const r=[];let s=[];for(let i=0;i0&&(s.sort(),r.push(...s),s=[]),r.push(a)):s.push(a)}return s.length>0&&(s.sort(),r.push(...s)),r}},dre=t=>({cache:ore(t.cacheSize),parseClassName:cre(t),sortModifiers:ure(t),...Zne(t)}),hre=/\s+/,fre=(t,e)=>{const{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:s,sortModifiers:i}=e,a=[],l=t.trim().split(hre);let c="";for(let d=l.length-1;d>=0;d-=1){const h=l[d],{isExternal:m,modifiers:g,hasImportantModifier:x,baseClassName:y,maybePostfixModifierPosition:w}=n(h);if(m){c=h+(c.length>0?" "+c:c);continue}let S=!!w,k=r(S?y.substring(0,w):y);if(!k){if(!S){c=h+(c.length>0?" "+c:c);continue}if(k=r(y),!k){c=h+(c.length>0?" "+c:c);continue}S=!1}const j=g.length===0?"":g.length===1?g[0]:i(g).join(":"),N=x?j+uk:j,T=N+k;if(a.indexOf(T)>-1)continue;a.push(T);const E=s(k,S);for(let _=0;_0?" "+c:c)}return c},mre=(...t)=>{let e=0,n,r,s="";for(;e{if(typeof t=="string")return t;let e,n="";for(let r=0;r{let n,r,s,i;const a=c=>{const d=e.reduce((h,m)=>m(h),t());return n=dre(d),r=n.cache.get,s=n.cache.set,i=l,l(c)},l=c=>{const d=r(c);if(d)return d;const h=fre(c,n);return s(c,h),h};return i=a,(...c)=>i(mre(...c))},gre=[],cs=t=>{const e=n=>n[t]||gre;return e.isThemeGetter=!0,e},eL=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,tL=/^\((?:(\w[\w-]*):)?(.+)\)$/i,xre=/^\d+\/\d+$/,vre=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,yre=/\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$/,bre=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,wre=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Sre=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ih=t=>xre.test(t),rn=t=>!!t&&!Number.isNaN(Number(t)),jc=t=>!!t&&Number.isInteger(Number(t)),N4=t=>t.endsWith("%")&&rn(t.slice(0,-1)),xl=t=>vre.test(t),kre=()=>!0,Ore=t=>yre.test(t)&&!bre.test(t),nL=()=>!1,jre=t=>wre.test(t),Nre=t=>Sre.test(t),Cre=t=>!dt(t)&&!ht(t),Tre=t=>wf(t,iL,nL),dt=t=>eL.test(t),Mu=t=>wf(t,aL,Ore),C4=t=>wf(t,Rre,rn),G9=t=>wf(t,rL,nL),Ere=t=>wf(t,sL,Nre),Yx=t=>wf(t,oL,jre),ht=t=>tL.test(t),Im=t=>Sf(t,aL),_re=t=>Sf(t,Dre),X9=t=>Sf(t,rL),Are=t=>Sf(t,iL),Mre=t=>Sf(t,sL),Kx=t=>Sf(t,oL,!0),wf=(t,e,n)=>{const r=eL.exec(t);return r?r[1]?e(r[1]):n(r[2]):!1},Sf=(t,e,n=!1)=>{const r=tL.exec(t);return r?r[1]?e(r[1]):n:!1},rL=t=>t==="position"||t==="percentage",sL=t=>t==="image"||t==="url",iL=t=>t==="length"||t==="size"||t==="bg-size",aL=t=>t==="length",Rre=t=>t==="number",Dre=t=>t==="family-name",oL=t=>t==="shadow",Pre=()=>{const t=cs("color"),e=cs("font"),n=cs("text"),r=cs("font-weight"),s=cs("tracking"),i=cs("leading"),a=cs("breakpoint"),l=cs("container"),c=cs("spacing"),d=cs("radius"),h=cs("shadow"),m=cs("inset-shadow"),g=cs("text-shadow"),x=cs("drop-shadow"),y=cs("blur"),w=cs("perspective"),S=cs("aspect"),k=cs("ease"),j=cs("animate"),N=()=>["auto","avoid","all","avoid-page","page","left","right","column"],T=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],E=()=>[...T(),ht,dt],_=()=>["auto","hidden","clip","visible","scroll"],A=()=>["auto","contain","none"],L=()=>[ht,dt,c],P=()=>[ih,"full","auto",...L()],B=()=>[jc,"none","subgrid",ht,dt],$=()=>["auto",{span:["full",jc,ht,dt]},jc,ht,dt],U=()=>[jc,"auto",ht,dt],te=()=>["auto","min","max","fr",ht,dt],z=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],Q=()=>["start","end","center","stretch","center-safe","end-safe"],F=()=>["auto",...L()],Y=()=>[ih,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...L()],J=()=>[t,ht,dt],X=()=>[...T(),X9,G9,{position:[ht,dt]}],R=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ie=()=>["auto","cover","contain",Are,Tre,{size:[ht,dt]}],G=()=>[N4,Im,Mu],I=()=>["","none","full",d,ht,dt],V=()=>["",rn,Im,Mu],ee=()=>["solid","dashed","dotted","double"],ne=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],W=()=>[rn,N4,X9,G9],se=()=>["","none",y,ht,dt],re=()=>["none",rn,ht,dt],oe=()=>["none",rn,ht,dt],Te=()=>[rn,ht,dt],We=()=>[ih,"full",...L()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[xl],breakpoint:[xl],color:[kre],container:[xl],"drop-shadow":[xl],ease:["in","out","in-out"],font:[Cre],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[xl],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[xl],shadow:[xl],spacing:["px",rn],text:[xl],"text-shadow":[xl],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",ih,dt,ht,S]}],container:["container"],columns:[{columns:[rn,dt,ht,l]}],"break-after":[{"break-after":N()}],"break-before":[{"break-before":N()}],"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:E()}],overflow:[{overflow:_()}],"overflow-x":[{"overflow-x":_()}],"overflow-y":[{"overflow-y":_()}],overscroll:[{overscroll:A()}],"overscroll-x":[{"overscroll-x":A()}],"overscroll-y":[{"overscroll-y":A()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:P()}],"inset-x":[{"inset-x":P()}],"inset-y":[{"inset-y":P()}],start:[{start:P()}],end:[{end:P()}],top:[{top:P()}],right:[{right:P()}],bottom:[{bottom:P()}],left:[{left:P()}],visibility:["visible","invisible","collapse"],z:[{z:[jc,"auto",ht,dt]}],basis:[{basis:[ih,"full","auto",l,...L()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[rn,ih,"auto","initial","none",dt]}],grow:[{grow:["",rn,ht,dt]}],shrink:[{shrink:["",rn,ht,dt]}],order:[{order:[jc,"first","last","none",ht,dt]}],"grid-cols":[{"grid-cols":B()}],"col-start-end":[{col:$()}],"col-start":[{"col-start":U()}],"col-end":[{"col-end":U()}],"grid-rows":[{"grid-rows":B()}],"row-start-end":[{row:$()}],"row-start":[{"row-start":U()}],"row-end":[{"row-end":U()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":te()}],"auto-rows":[{"auto-rows":te()}],gap:[{gap:L()}],"gap-x":[{"gap-x":L()}],"gap-y":[{"gap-y":L()}],"justify-content":[{justify:[...z(),"normal"]}],"justify-items":[{"justify-items":[...Q(),"normal"]}],"justify-self":[{"justify-self":["auto",...Q()]}],"align-content":[{content:["normal",...z()]}],"align-items":[{items:[...Q(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...Q(),{baseline:["","last"]}]}],"place-content":[{"place-content":z()}],"place-items":[{"place-items":[...Q(),"baseline"]}],"place-self":[{"place-self":["auto",...Q()]}],p:[{p:L()}],px:[{px:L()}],py:[{py:L()}],ps:[{ps:L()}],pe:[{pe:L()}],pt:[{pt:L()}],pr:[{pr:L()}],pb:[{pb:L()}],pl:[{pl:L()}],m:[{m:F()}],mx:[{mx:F()}],my:[{my:F()}],ms:[{ms:F()}],me:[{me:F()}],mt:[{mt:F()}],mr:[{mr:F()}],mb:[{mb:F()}],ml:[{ml:F()}],"space-x":[{"space-x":L()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":L()}],"space-y-reverse":["space-y-reverse"],size:[{size:Y()}],w:[{w:[l,"screen",...Y()]}],"min-w":[{"min-w":[l,"screen","none",...Y()]}],"max-w":[{"max-w":[l,"screen","none","prose",{screen:[a]},...Y()]}],h:[{h:["screen","lh",...Y()]}],"min-h":[{"min-h":["screen","lh","none",...Y()]}],"max-h":[{"max-h":["screen","lh",...Y()]}],"font-size":[{text:["base",n,Im,Mu]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,ht,C4]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",N4,dt]}],"font-family":[{font:[_re,dt,e]}],"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:[s,ht,dt]}],"line-clamp":[{"line-clamp":[rn,"none",ht,C4]}],leading:[{leading:[i,...L()]}],"list-image":[{"list-image":["none",ht,dt]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",ht,dt]}],"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:[...ee(),"wavy"]}],"text-decoration-thickness":[{decoration:[rn,"from-font","auto",ht,Mu]}],"text-decoration-color":[{decoration:J()}],"underline-offset":[{"underline-offset":[rn,"auto",ht,dt]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:L()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",ht,dt]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",ht,dt]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:X()}],"bg-repeat":[{bg:R()}],"bg-size":[{bg:ie()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},jc,ht,dt],radial:["",ht,dt],conic:[jc,ht,dt]},Mre,Ere]}],"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:I()}],"rounded-s":[{"rounded-s":I()}],"rounded-e":[{"rounded-e":I()}],"rounded-t":[{"rounded-t":I()}],"rounded-r":[{"rounded-r":I()}],"rounded-b":[{"rounded-b":I()}],"rounded-l":[{"rounded-l":I()}],"rounded-ss":[{"rounded-ss":I()}],"rounded-se":[{"rounded-se":I()}],"rounded-ee":[{"rounded-ee":I()}],"rounded-es":[{"rounded-es":I()}],"rounded-tl":[{"rounded-tl":I()}],"rounded-tr":[{"rounded-tr":I()}],"rounded-br":[{"rounded-br":I()}],"rounded-bl":[{"rounded-bl":I()}],"border-w":[{border:V()}],"border-w-x":[{"border-x":V()}],"border-w-y":[{"border-y":V()}],"border-w-s":[{"border-s":V()}],"border-w-e":[{"border-e":V()}],"border-w-t":[{"border-t":V()}],"border-w-r":[{"border-r":V()}],"border-w-b":[{"border-b":V()}],"border-w-l":[{"border-l":V()}],"divide-x":[{"divide-x":V()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":V()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ee(),"hidden","none"]}],"divide-style":[{divide:[...ee(),"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:[...ee(),"none","hidden"]}],"outline-offset":[{"outline-offset":[rn,ht,dt]}],"outline-w":[{outline:["",rn,Im,Mu]}],"outline-color":[{outline:J()}],shadow:[{shadow:["","none",h,Kx,Yx]}],"shadow-color":[{shadow:J()}],"inset-shadow":[{"inset-shadow":["none",m,Kx,Yx]}],"inset-shadow-color":[{"inset-shadow":J()}],"ring-w":[{ring:V()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:J()}],"ring-offset-w":[{"ring-offset":[rn,Mu]}],"ring-offset-color":[{"ring-offset":J()}],"inset-ring-w":[{"inset-ring":V()}],"inset-ring-color":[{"inset-ring":J()}],"text-shadow":[{"text-shadow":["none",g,Kx,Yx]}],"text-shadow-color":[{"text-shadow":J()}],opacity:[{opacity:[rn,ht,dt]}],"mix-blend":[{"mix-blend":[...ne(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ne()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[rn]}],"mask-image-linear-from-pos":[{"mask-linear-from":W()}],"mask-image-linear-to-pos":[{"mask-linear-to":W()}],"mask-image-linear-from-color":[{"mask-linear-from":J()}],"mask-image-linear-to-color":[{"mask-linear-to":J()}],"mask-image-t-from-pos":[{"mask-t-from":W()}],"mask-image-t-to-pos":[{"mask-t-to":W()}],"mask-image-t-from-color":[{"mask-t-from":J()}],"mask-image-t-to-color":[{"mask-t-to":J()}],"mask-image-r-from-pos":[{"mask-r-from":W()}],"mask-image-r-to-pos":[{"mask-r-to":W()}],"mask-image-r-from-color":[{"mask-r-from":J()}],"mask-image-r-to-color":[{"mask-r-to":J()}],"mask-image-b-from-pos":[{"mask-b-from":W()}],"mask-image-b-to-pos":[{"mask-b-to":W()}],"mask-image-b-from-color":[{"mask-b-from":J()}],"mask-image-b-to-color":[{"mask-b-to":J()}],"mask-image-l-from-pos":[{"mask-l-from":W()}],"mask-image-l-to-pos":[{"mask-l-to":W()}],"mask-image-l-from-color":[{"mask-l-from":J()}],"mask-image-l-to-color":[{"mask-l-to":J()}],"mask-image-x-from-pos":[{"mask-x-from":W()}],"mask-image-x-to-pos":[{"mask-x-to":W()}],"mask-image-x-from-color":[{"mask-x-from":J()}],"mask-image-x-to-color":[{"mask-x-to":J()}],"mask-image-y-from-pos":[{"mask-y-from":W()}],"mask-image-y-to-pos":[{"mask-y-to":W()}],"mask-image-y-from-color":[{"mask-y-from":J()}],"mask-image-y-to-color":[{"mask-y-to":J()}],"mask-image-radial":[{"mask-radial":[ht,dt]}],"mask-image-radial-from-pos":[{"mask-radial-from":W()}],"mask-image-radial-to-pos":[{"mask-radial-to":W()}],"mask-image-radial-from-color":[{"mask-radial-from":J()}],"mask-image-radial-to-color":[{"mask-radial-to":J()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":T()}],"mask-image-conic-pos":[{"mask-conic":[rn]}],"mask-image-conic-from-pos":[{"mask-conic-from":W()}],"mask-image-conic-to-pos":[{"mask-conic-to":W()}],"mask-image-conic-from-color":[{"mask-conic-from":J()}],"mask-image-conic-to-color":[{"mask-conic-to":J()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:X()}],"mask-repeat":[{mask:R()}],"mask-size":[{mask:ie()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",ht,dt]}],filter:[{filter:["","none",ht,dt]}],blur:[{blur:se()}],brightness:[{brightness:[rn,ht,dt]}],contrast:[{contrast:[rn,ht,dt]}],"drop-shadow":[{"drop-shadow":["","none",x,Kx,Yx]}],"drop-shadow-color":[{"drop-shadow":J()}],grayscale:[{grayscale:["",rn,ht,dt]}],"hue-rotate":[{"hue-rotate":[rn,ht,dt]}],invert:[{invert:["",rn,ht,dt]}],saturate:[{saturate:[rn,ht,dt]}],sepia:[{sepia:["",rn,ht,dt]}],"backdrop-filter":[{"backdrop-filter":["","none",ht,dt]}],"backdrop-blur":[{"backdrop-blur":se()}],"backdrop-brightness":[{"backdrop-brightness":[rn,ht,dt]}],"backdrop-contrast":[{"backdrop-contrast":[rn,ht,dt]}],"backdrop-grayscale":[{"backdrop-grayscale":["",rn,ht,dt]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[rn,ht,dt]}],"backdrop-invert":[{"backdrop-invert":["",rn,ht,dt]}],"backdrop-opacity":[{"backdrop-opacity":[rn,ht,dt]}],"backdrop-saturate":[{"backdrop-saturate":[rn,ht,dt]}],"backdrop-sepia":[{"backdrop-sepia":["",rn,ht,dt]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":L()}],"border-spacing-x":[{"border-spacing-x":L()}],"border-spacing-y":[{"border-spacing-y":L()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",ht,dt]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[rn,"initial",ht,dt]}],ease:[{ease:["linear","initial",k,ht,dt]}],delay:[{delay:[rn,ht,dt]}],animate:[{animate:["none",j,ht,dt]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,ht,dt]}],"perspective-origin":[{"perspective-origin":E()}],rotate:[{rotate:re()}],"rotate-x":[{"rotate-x":re()}],"rotate-y":[{"rotate-y":re()}],"rotate-z":[{"rotate-z":re()}],scale:[{scale:oe()}],"scale-x":[{"scale-x":oe()}],"scale-y":[{"scale-y":oe()}],"scale-z":[{"scale-z":oe()}],"scale-3d":["scale-3d"],skew:[{skew:Te()}],"skew-x":[{"skew-x":Te()}],"skew-y":[{"skew-y":Te()}],transform:[{transform:[ht,dt,"","none","gpu","cpu"]}],"transform-origin":[{origin:E()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:We()}],"translate-x":[{"translate-x":We()}],"translate-y":[{"translate-y":We()}],"translate-z":[{"translate-z":We()}],"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",ht,dt]}],"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":L()}],"scroll-mx":[{"scroll-mx":L()}],"scroll-my":[{"scroll-my":L()}],"scroll-ms":[{"scroll-ms":L()}],"scroll-me":[{"scroll-me":L()}],"scroll-mt":[{"scroll-mt":L()}],"scroll-mr":[{"scroll-mr":L()}],"scroll-mb":[{"scroll-mb":L()}],"scroll-ml":[{"scroll-ml":L()}],"scroll-p":[{"scroll-p":L()}],"scroll-px":[{"scroll-px":L()}],"scroll-py":[{"scroll-py":L()}],"scroll-ps":[{"scroll-ps":L()}],"scroll-pe":[{"scroll-pe":L()}],"scroll-pt":[{"scroll-pt":L()}],"scroll-pr":[{"scroll-pr":L()}],"scroll-pb":[{"scroll-pb":L()}],"scroll-pl":[{"scroll-pl":L()}],"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",ht,dt]}],fill:[{fill:["none",...J()]}],"stroke-w":[{stroke:[rn,Im,Mu,C4]}],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-x","border-w-y","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-x","border-color-y","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:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},zre=pre(Pre);function xe(...t){return zre(Fz(t))}const qt=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("rounded-xl border bg-card text-card-foreground shadow",t),...e}));qt.displayName="Card";const Fn=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("flex flex-col space-y-1.5 p-6",t),...e}));Fn.displayName="CardHeader";const qn=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("font-semibold leading-none tracking-tight",t),...e}));qn.displayName="CardTitle";const ts=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("text-sm text-muted-foreground",t),...e}));ts.displayName="CardDescription";const Gn=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("p-6 pt-0",t),...e}));Gn.displayName="CardContent";const lL=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("flex items-center p-6 pt-0",t),...e}));lL.displayName="CardFooter";var T4="rovingFocusGroup.onEntryFocus",Ire={bubbles:!1,cancelable:!0},Ip="RovingFocusGroup",[dk,cL,Lre]=By(Ip),[Bre,eb]=Ra(Ip,[Lre]),[Fre,qre]=Bre(Ip),uL=b.forwardRef((t,e)=>o.jsx(dk.Provider,{scope:t.__scopeRovingFocusGroup,children:o.jsx(dk.Slot,{scope:t.__scopeRovingFocusGroup,children:o.jsx($re,{...t,ref:e})})}));uL.displayName=Ip;var $re=b.forwardRef((t,e)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:s=!1,dir:i,currentTabStopId:a,defaultCurrentTabStopId:l,onCurrentTabStopIdChange:c,onEntryFocus:d,preventScrollOnEntryFocus:h=!1,...m}=t,g=b.useRef(null),x=Yn(e,g),y=Ep(i),[w,S]=Xl({prop:a,defaultProp:l??null,onChange:c,caller:Ip}),[k,j]=b.useState(!1),N=Rs(d),T=cL(n),E=b.useRef(!1),[_,A]=b.useState(0);return b.useEffect(()=>{const L=g.current;if(L)return L.addEventListener(T4,N),()=>L.removeEventListener(T4,N)},[N]),o.jsx(Fre,{scope:n,orientation:r,dir:y,loop:s,currentTabStopId:w,onItemFocus:b.useCallback(L=>S(L),[S]),onItemShiftTab:b.useCallback(()=>j(!0),[]),onFocusableItemAdd:b.useCallback(()=>A(L=>L+1),[]),onFocusableItemRemove:b.useCallback(()=>A(L=>L-1),[]),children:o.jsx(xn.div,{tabIndex:k||_===0?-1:0,"data-orientation":r,...m,ref:x,style:{outline:"none",...t.style},onMouseDown:nt(t.onMouseDown,()=>{E.current=!0}),onFocus:nt(t.onFocus,L=>{const P=!E.current;if(L.target===L.currentTarget&&P&&!k){const B=new CustomEvent(T4,Ire);if(L.currentTarget.dispatchEvent(B),!B.defaultPrevented){const $=T().filter(F=>F.focusable),U=$.find(F=>F.active),te=$.find(F=>F.id===w),Q=[U,te,...$].filter(Boolean).map(F=>F.ref.current);fL(Q,h)}}E.current=!1}),onBlur:nt(t.onBlur,()=>j(!1))})})}),dL="RovingFocusGroupItem",hL=b.forwardRef((t,e)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:s=!1,tabStopId:i,children:a,...l}=t,c=Ui(),d=i||c,h=qre(dL,n),m=h.currentTabStopId===d,g=cL(n),{onFocusableItemAdd:x,onFocusableItemRemove:y,currentTabStopId:w}=h;return b.useEffect(()=>{if(r)return x(),()=>y()},[r,x,y]),o.jsx(dk.ItemSlot,{scope:n,id:d,focusable:r,active:s,children:o.jsx(xn.span,{tabIndex:m?0:-1,"data-orientation":h.orientation,...l,ref:e,onMouseDown:nt(t.onMouseDown,S=>{r?h.onItemFocus(d):S.preventDefault()}),onFocus:nt(t.onFocus,()=>h.onItemFocus(d)),onKeyDown:nt(t.onKeyDown,S=>{if(S.key==="Tab"&&S.shiftKey){h.onItemShiftTab();return}if(S.target!==S.currentTarget)return;const k=Vre(S,h.orientation,h.dir);if(k!==void 0){if(S.metaKey||S.ctrlKey||S.altKey||S.shiftKey)return;S.preventDefault();let N=g().filter(T=>T.focusable).map(T=>T.ref.current);if(k==="last")N.reverse();else if(k==="prev"||k==="next"){k==="prev"&&N.reverse();const T=N.indexOf(S.currentTarget);N=h.loop?Ure(N,T+1):N.slice(T+1)}setTimeout(()=>fL(N))}}),children:typeof a=="function"?a({isCurrentTabStop:m,hasTabStop:w!=null}):a})})});hL.displayName=dL;var Hre={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function Qre(t,e){return e!=="rtl"?t:t==="ArrowLeft"?"ArrowRight":t==="ArrowRight"?"ArrowLeft":t}function Vre(t,e,n){const r=Qre(t.key,n);if(!(e==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(e==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return Hre[r]}function fL(t,e=!1){const n=document.activeElement;for(const r of t)if(r===n||(r.focus({preventScroll:e}),document.activeElement!==n))return}function Ure(t,e){return t.map((n,r)=>t[(e+r)%t.length])}var mL=uL,pL=hL,tb="Tabs",[Wre]=Ra(tb,[eb]),gL=eb(),[Gre,Lj]=Wre(tb),xL=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,onValueChange:s,defaultValue:i,orientation:a="horizontal",dir:l,activationMode:c="automatic",...d}=t,h=Ep(l),[m,g]=Xl({prop:r,onChange:s,defaultProp:i??"",caller:tb});return o.jsx(Gre,{scope:n,baseId:Ui(),value:m,onValueChange:g,orientation:a,dir:h,activationMode:c,children:o.jsx(xn.div,{dir:h,"data-orientation":a,...d,ref:e})})});xL.displayName=tb;var vL="TabsList",yL=b.forwardRef((t,e)=>{const{__scopeTabs:n,loop:r=!0,...s}=t,i=Lj(vL,n),a=gL(n);return o.jsx(mL,{asChild:!0,...a,orientation:i.orientation,dir:i.dir,loop:r,children:o.jsx(xn.div,{role:"tablist","aria-orientation":i.orientation,...s,ref:e})})});yL.displayName=vL;var bL="TabsTrigger",wL=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,disabled:s=!1,...i}=t,a=Lj(bL,n),l=gL(n),c=OL(a.baseId,r),d=jL(a.baseId,r),h=r===a.value;return o.jsx(pL,{asChild:!0,...l,focusable:!s,active:h,children:o.jsx(xn.button,{type:"button",role:"tab","aria-selected":h,"aria-controls":d,"data-state":h?"active":"inactive","data-disabled":s?"":void 0,disabled:s,id:c,...i,ref:e,onMouseDown:nt(t.onMouseDown,m=>{!s&&m.button===0&&m.ctrlKey===!1?a.onValueChange(r):m.preventDefault()}),onKeyDown:nt(t.onKeyDown,m=>{[" ","Enter"].includes(m.key)&&a.onValueChange(r)}),onFocus:nt(t.onFocus,()=>{const m=a.activationMode!=="manual";!h&&!s&&m&&a.onValueChange(r)})})})});wL.displayName=bL;var SL="TabsContent",kL=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,forceMount:s,children:i,...a}=t,l=Lj(SL,n),c=OL(l.baseId,r),d=jL(l.baseId,r),h=r===l.value,m=b.useRef(h);return b.useEffect(()=>{const g=requestAnimationFrame(()=>m.current=!1);return()=>cancelAnimationFrame(g)},[]),o.jsx(ii,{present:s||h,children:({present:g})=>o.jsx(xn.div,{"data-state":h?"active":"inactive","data-orientation":l.orientation,role:"tabpanel","aria-labelledby":c,hidden:!g,id:d,tabIndex:0,...a,ref:e,style:{...t.style,animationDuration:m.current?"0s":void 0},children:g&&i})})});kL.displayName=SL;function OL(t,e){return`${t}-trigger-${e}`}function jL(t,e){return`${t}-content-${e}`}var Xre=xL,NL=yL,CL=wL,TL=kL;const ja=Xre,Wi=b.forwardRef(({className:t,...e},n)=>o.jsx(NL,{ref:n,className:xe("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",t),...e}));Wi.displayName=NL.displayName;const Lt=b.forwardRef(({className:t,...e},n)=>o.jsx(CL,{ref:n,className:xe("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all duration-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",t),...e}));Lt.displayName=CL.displayName;const un=b.forwardRef(({className:t,...e},n)=>o.jsx(TL,{ref:n,className:xe("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[state=active]:animate-in data-[state=active]:fade-in data-[state=active]:duration-300",t),...e}));un.displayName=TL.displayName;function Yre(t,e){return b.useReducer((n,r)=>e[n][r]??n,t)}var Bj="ScrollArea",[EL]=Ra(Bj),[Kre,Da]=EL(Bj),_L=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,type:r="hover",dir:s,scrollHideDelay:i=600,...a}=t,[l,c]=b.useState(null),[d,h]=b.useState(null),[m,g]=b.useState(null),[x,y]=b.useState(null),[w,S]=b.useState(null),[k,j]=b.useState(0),[N,T]=b.useState(0),[E,_]=b.useState(!1),[A,L]=b.useState(!1),P=Yn(e,$=>c($)),B=Ep(s);return o.jsx(Kre,{scope:n,type:r,dir:B,scrollHideDelay:i,scrollArea:l,viewport:d,onViewportChange:h,content:m,onContentChange:g,scrollbarX:x,onScrollbarXChange:y,scrollbarXEnabled:E,onScrollbarXEnabledChange:_,scrollbarY:w,onScrollbarYChange:S,scrollbarYEnabled:A,onScrollbarYEnabledChange:L,onCornerWidthChange:j,onCornerHeightChange:T,children:o.jsx(xn.div,{dir:B,...a,ref:P,style:{position:"relative","--radix-scroll-area-corner-width":k+"px","--radix-scroll-area-corner-height":N+"px",...t.style}})})});_L.displayName=Bj;var AL="ScrollAreaViewport",ML=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,children:r,nonce:s,...i}=t,a=Da(AL,n),l=b.useRef(null),c=Yn(e,l,a.onViewportChange);return o.jsxs(o.Fragment,{children:[o.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:s}),o.jsx(xn.div,{"data-radix-scroll-area-viewport":"",...i,ref:c,style:{overflowX:a.scrollbarXEnabled?"scroll":"hidden",overflowY:a.scrollbarYEnabled?"scroll":"hidden",...t.style},children:o.jsx("div",{ref:a.onContentChange,style:{minWidth:"100%",display:"table"},children:r})})]})});ML.displayName=AL;var Fo="ScrollAreaScrollbar",Fj=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=Da(Fo,t.__scopeScrollArea),{onScrollbarXEnabledChange:i,onScrollbarYEnabledChange:a}=s,l=t.orientation==="horizontal";return b.useEffect(()=>(l?i(!0):a(!0),()=>{l?i(!1):a(!1)}),[l,i,a]),s.type==="hover"?o.jsx(Zre,{...r,ref:e,forceMount:n}):s.type==="scroll"?o.jsx(Jre,{...r,ref:e,forceMount:n}):s.type==="auto"?o.jsx(RL,{...r,ref:e,forceMount:n}):s.type==="always"?o.jsx(qj,{...r,ref:e}):null});Fj.displayName=Fo;var Zre=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=Da(Fo,t.__scopeScrollArea),[i,a]=b.useState(!1);return b.useEffect(()=>{const l=s.scrollArea;let c=0;if(l){const d=()=>{window.clearTimeout(c),a(!0)},h=()=>{c=window.setTimeout(()=>a(!1),s.scrollHideDelay)};return l.addEventListener("pointerenter",d),l.addEventListener("pointerleave",h),()=>{window.clearTimeout(c),l.removeEventListener("pointerenter",d),l.removeEventListener("pointerleave",h)}}},[s.scrollArea,s.scrollHideDelay]),o.jsx(ii,{present:n||i,children:o.jsx(RL,{"data-state":i?"visible":"hidden",...r,ref:e})})}),Jre=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=Da(Fo,t.__scopeScrollArea),i=t.orientation==="horizontal",a=rb(()=>c("SCROLL_END"),100),[l,c]=Yre("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return b.useEffect(()=>{if(l==="idle"){const d=window.setTimeout(()=>c("HIDE"),s.scrollHideDelay);return()=>window.clearTimeout(d)}},[l,s.scrollHideDelay,c]),b.useEffect(()=>{const d=s.viewport,h=i?"scrollLeft":"scrollTop";if(d){let m=d[h];const g=()=>{const x=d[h];m!==x&&(c("SCROLL"),a()),m=x};return d.addEventListener("scroll",g),()=>d.removeEventListener("scroll",g)}},[s.viewport,i,c,a]),o.jsx(ii,{present:n||l!=="hidden",children:o.jsx(qj,{"data-state":l==="hidden"?"hidden":"visible",...r,ref:e,onPointerEnter:nt(t.onPointerEnter,()=>c("POINTER_ENTER")),onPointerLeave:nt(t.onPointerLeave,()=>c("POINTER_LEAVE"))})})}),RL=b.forwardRef((t,e)=>{const n=Da(Fo,t.__scopeScrollArea),{forceMount:r,...s}=t,[i,a]=b.useState(!1),l=t.orientation==="horizontal",c=rb(()=>{if(n.viewport){const d=n.viewport.offsetWidth{const{orientation:n="vertical",...r}=t,s=Da(Fo,t.__scopeScrollArea),i=b.useRef(null),a=b.useRef(0),[l,c]=b.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),d=LL(l.viewport,l.content),h={...r,sizes:l,onSizesChange:c,hasThumb:d>0&&d<1,onThumbChange:g=>i.current=g,onThumbPointerUp:()=>a.current=0,onThumbPointerDown:g=>a.current=g};function m(g,x){return ise(g,a.current,l,x)}return n==="horizontal"?o.jsx(ese,{...h,ref:e,onThumbPositionChange:()=>{if(s.viewport&&i.current){const g=s.viewport.scrollLeft,x=Y9(g,l,s.dir);i.current.style.transform=`translate3d(${x}px, 0, 0)`}},onWheelScroll:g=>{s.viewport&&(s.viewport.scrollLeft=g)},onDragScroll:g=>{s.viewport&&(s.viewport.scrollLeft=m(g,s.dir))}}):n==="vertical"?o.jsx(tse,{...h,ref:e,onThumbPositionChange:()=>{if(s.viewport&&i.current){const g=s.viewport.scrollTop,x=Y9(g,l);i.current.style.transform=`translate3d(0, ${x}px, 0)`}},onWheelScroll:g=>{s.viewport&&(s.viewport.scrollTop=g)},onDragScroll:g=>{s.viewport&&(s.viewport.scrollTop=m(g))}}):null}),ese=b.forwardRef((t,e)=>{const{sizes:n,onSizesChange:r,...s}=t,i=Da(Fo,t.__scopeScrollArea),[a,l]=b.useState(),c=b.useRef(null),d=Yn(e,c,i.onScrollbarXChange);return b.useEffect(()=>{c.current&&l(getComputedStyle(c.current))},[c]),o.jsx(PL,{"data-orientation":"horizontal",...s,ref:d,sizes:n,style:{bottom:0,left:i.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:i.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":nb(n)+"px",...t.style},onThumbPointerDown:h=>t.onThumbPointerDown(h.x),onDragScroll:h=>t.onDragScroll(h.x),onWheelScroll:(h,m)=>{if(i.viewport){const g=i.viewport.scrollLeft+h.deltaX;t.onWheelScroll(g),FL(g,m)&&h.preventDefault()}},onResize:()=>{c.current&&i.viewport&&a&&r({content:i.viewport.scrollWidth,viewport:i.viewport.offsetWidth,scrollbar:{size:c.current.clientWidth,paddingStart:Bv(a.paddingLeft),paddingEnd:Bv(a.paddingRight)}})}})}),tse=b.forwardRef((t,e)=>{const{sizes:n,onSizesChange:r,...s}=t,i=Da(Fo,t.__scopeScrollArea),[a,l]=b.useState(),c=b.useRef(null),d=Yn(e,c,i.onScrollbarYChange);return b.useEffect(()=>{c.current&&l(getComputedStyle(c.current))},[c]),o.jsx(PL,{"data-orientation":"vertical",...s,ref:d,sizes:n,style:{top:0,right:i.dir==="ltr"?0:void 0,left:i.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":nb(n)+"px",...t.style},onThumbPointerDown:h=>t.onThumbPointerDown(h.y),onDragScroll:h=>t.onDragScroll(h.y),onWheelScroll:(h,m)=>{if(i.viewport){const g=i.viewport.scrollTop+h.deltaY;t.onWheelScroll(g),FL(g,m)&&h.preventDefault()}},onResize:()=>{c.current&&i.viewport&&a&&r({content:i.viewport.scrollHeight,viewport:i.viewport.offsetHeight,scrollbar:{size:c.current.clientHeight,paddingStart:Bv(a.paddingTop),paddingEnd:Bv(a.paddingBottom)}})}})}),[nse,DL]=EL(Fo),PL=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,sizes:r,hasThumb:s,onThumbChange:i,onThumbPointerUp:a,onThumbPointerDown:l,onThumbPositionChange:c,onDragScroll:d,onWheelScroll:h,onResize:m,...g}=t,x=Da(Fo,n),[y,w]=b.useState(null),S=Yn(e,P=>w(P)),k=b.useRef(null),j=b.useRef(""),N=x.viewport,T=r.content-r.viewport,E=Rs(h),_=Rs(c),A=rb(m,10);function L(P){if(k.current){const B=P.clientX-k.current.left,$=P.clientY-k.current.top;d({x:B,y:$})}}return b.useEffect(()=>{const P=B=>{const $=B.target;y?.contains($)&&E(B,T)};return document.addEventListener("wheel",P,{passive:!1}),()=>document.removeEventListener("wheel",P,{passive:!1})},[N,y,T,E]),b.useEffect(_,[r,_]),Yh(y,A),Yh(x.content,A),o.jsx(nse,{scope:n,scrollbar:y,hasThumb:s,onThumbChange:Rs(i),onThumbPointerUp:Rs(a),onThumbPositionChange:_,onThumbPointerDown:Rs(l),children:o.jsx(xn.div,{...g,ref:S,style:{position:"absolute",...g.style},onPointerDown:nt(t.onPointerDown,P=>{P.button===0&&(P.target.setPointerCapture(P.pointerId),k.current=y.getBoundingClientRect(),j.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",x.viewport&&(x.viewport.style.scrollBehavior="auto"),L(P))}),onPointerMove:nt(t.onPointerMove,L),onPointerUp:nt(t.onPointerUp,P=>{const B=P.target;B.hasPointerCapture(P.pointerId)&&B.releasePointerCapture(P.pointerId),document.body.style.webkitUserSelect=j.current,x.viewport&&(x.viewport.style.scrollBehavior=""),k.current=null})})})}),Lv="ScrollAreaThumb",zL=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=DL(Lv,t.__scopeScrollArea);return o.jsx(ii,{present:n||s.hasThumb,children:o.jsx(rse,{ref:e,...r})})}),rse=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,style:r,...s}=t,i=Da(Lv,n),a=DL(Lv,n),{onThumbPositionChange:l}=a,c=Yn(e,m=>a.onThumbChange(m)),d=b.useRef(void 0),h=rb(()=>{d.current&&(d.current(),d.current=void 0)},100);return b.useEffect(()=>{const m=i.viewport;if(m){const g=()=>{if(h(),!d.current){const x=ase(m,l);d.current=x,l()}};return l(),m.addEventListener("scroll",g),()=>m.removeEventListener("scroll",g)}},[i.viewport,h,l]),o.jsx(xn.div,{"data-state":a.hasThumb?"visible":"hidden",...s,ref:c,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...r},onPointerDownCapture:nt(t.onPointerDownCapture,m=>{const x=m.target.getBoundingClientRect(),y=m.clientX-x.left,w=m.clientY-x.top;a.onThumbPointerDown({x:y,y:w})}),onPointerUp:nt(t.onPointerUp,a.onThumbPointerUp)})});zL.displayName=Lv;var $j="ScrollAreaCorner",IL=b.forwardRef((t,e)=>{const n=Da($j,t.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!=="scroll"&&r?o.jsx(sse,{...t,ref:e}):null});IL.displayName=$j;var sse=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,...r}=t,s=Da($j,n),[i,a]=b.useState(0),[l,c]=b.useState(0),d=!!(i&&l);return Yh(s.scrollbarX,()=>{const h=s.scrollbarX?.offsetHeight||0;s.onCornerHeightChange(h),c(h)}),Yh(s.scrollbarY,()=>{const h=s.scrollbarY?.offsetWidth||0;s.onCornerWidthChange(h),a(h)}),d?o.jsx(xn.div,{...r,ref:e,style:{width:i,height:l,position:"absolute",right:s.dir==="ltr"?0:void 0,left:s.dir==="rtl"?0:void 0,bottom:0,...t.style}}):null});function Bv(t){return t?parseInt(t,10):0}function LL(t,e){const n=t/e;return isNaN(n)?0:n}function nb(t){const e=LL(t.viewport,t.content),n=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,r=(t.scrollbar.size-n)*e;return Math.max(r,18)}function ise(t,e,n,r="ltr"){const s=nb(n),i=s/2,a=e||i,l=s-a,c=n.scrollbar.paddingStart+a,d=n.scrollbar.size-n.scrollbar.paddingEnd-l,h=n.content-n.viewport,m=r==="ltr"?[0,h]:[h*-1,0];return BL([c,d],m)(t)}function Y9(t,e,n="ltr"){const r=nb(e),s=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,i=e.scrollbar.size-s,a=e.content-e.viewport,l=i-r,c=n==="ltr"?[0,a]:[a*-1,0],d=Sj(t,c);return BL([0,a],[0,l])(d)}function BL(t,e){return n=>{if(t[0]===t[1]||e[0]===e[1])return e[0];const r=(e[1]-e[0])/(t[1]-t[0]);return e[0]+r*(n-t[0])}}function FL(t,e){return t>0&&t{})=>{let n={left:t.scrollLeft,top:t.scrollTop},r=0;return(function s(){const i={left:t.scrollLeft,top:t.scrollTop},a=n.left!==i.left,l=n.top!==i.top;(a||l)&&e(),n=i,r=window.requestAnimationFrame(s)})(),()=>window.cancelAnimationFrame(r)};function rb(t,e){const n=Rs(t),r=b.useRef(0);return b.useEffect(()=>()=>window.clearTimeout(r.current),[]),b.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,e)},[n,e])}function Yh(t,e){const n=Rs(e);Uh(()=>{let r=0;if(t){const s=new ResizeObserver(()=>{cancelAnimationFrame(r),r=window.requestAnimationFrame(n)});return s.observe(t),()=>{window.cancelAnimationFrame(r),s.unobserve(t)}}},[t,n])}var qL=_L,ose=ML,lse=IL;const gn=b.forwardRef(({className:t,children:e,viewportRef:n,...r},s)=>o.jsxs(qL,{ref:s,className:xe("relative overflow-hidden",t),...r,children:[o.jsx(ose,{ref:n,className:"h-full w-full rounded-[inherit]",children:e}),o.jsx(hk,{}),o.jsx(hk,{orientation:"horizontal"}),o.jsx(lse,{})]}));gn.displayName=qL.displayName;const hk=b.forwardRef(({className:t,orientation:e="vertical",...n},r)=>o.jsx(Fj,{ref:r,orientation:e,className:xe("flex touch-none select-none transition-colors",e==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",e==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",t),...n,children:o.jsx(zL,{className:"relative flex-1 rounded-full bg-border"})}));hk.displayName=Fj.displayName;function cse({className:t,...e}){return o.jsx("div",{className:xe("animate-pulse rounded-md bg-primary/10",t),...e})}function use(t,e=[]){let n=[];function r(i,a){const l=b.createContext(a);l.displayName=i+"Context";const c=n.length;n=[...n,a];const d=m=>{const{scope:g,children:x,...y}=m,w=g?.[t]?.[c]||l,S=b.useMemo(()=>y,Object.values(y));return o.jsx(w.Provider,{value:S,children:x})};d.displayName=i+"Provider";function h(m,g){const x=g?.[t]?.[c]||l,y=b.useContext(x);if(y)return y;if(a!==void 0)return a;throw new Error(`\`${m}\` must be used within \`${i}\``)}return[d,h]}const s=()=>{const i=n.map(a=>b.createContext(a));return function(l){const c=l?.[t]||i;return b.useMemo(()=>({[`__scope${t}`]:{...l,[t]:c}}),[l,c])}};return s.scopeName=t,[r,dse(s,...e)]}function dse(...t){const e=t[0];if(t.length===1)return e;const n=()=>{const r=t.map(s=>({useScope:s(),scopeName:s.scopeName}));return function(i){const a=r.reduce((l,{useScope:c,scopeName:d})=>{const m=c(i)[`__scope${d}`];return{...l,...m}},{});return b.useMemo(()=>({[`__scope${e.scopeName}`]:a}),[a])}};return n.scopeName=e.scopeName,n}var hse=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],$L=hse.reduce((t,e)=>{const n=Fy(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...l}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(c,{...l,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),Hj="Progress",Qj=100,[fse]=use(Hj),[mse,pse]=fse(Hj),HL=b.forwardRef((t,e)=>{const{__scopeProgress:n,value:r=null,max:s,getValueLabel:i=gse,...a}=t;(s||s===0)&&!K9(s)&&console.error(xse(`${s}`,"Progress"));const l=K9(s)?s:Qj;r!==null&&!Z9(r,l)&&console.error(vse(`${r}`,"Progress"));const c=Z9(r,l)?r:null,d=Fv(c)?i(c,l):void 0;return o.jsx(mse,{scope:n,value:c,max:l,children:o.jsx($L.div,{"aria-valuemax":l,"aria-valuemin":0,"aria-valuenow":Fv(c)?c:void 0,"aria-valuetext":d,role:"progressbar","data-state":UL(c,l),"data-value":c??void 0,"data-max":l,...a,ref:e})})});HL.displayName=Hj;var QL="ProgressIndicator",VL=b.forwardRef((t,e)=>{const{__scopeProgress:n,...r}=t,s=pse(QL,n);return o.jsx($L.div,{"data-state":UL(s.value,s.max),"data-value":s.value??void 0,"data-max":s.max,...r,ref:e})});VL.displayName=QL;function gse(t,e){return`${Math.round(t/e*100)}%`}function UL(t,e){return t==null?"indeterminate":t===e?"complete":"loading"}function Fv(t){return typeof t=="number"}function K9(t){return Fv(t)&&!isNaN(t)&&t>0}function Z9(t,e){return Fv(t)&&!isNaN(t)&&t<=e&&t>=0}function xse(t,e){return`Invalid prop \`max\` of value \`${t}\` supplied to \`${e}\`. Only numbers greater than 0 are valid max values. Defaulting to \`${Qj}\`.`}function vse(t,e){return`Invalid prop \`value\` of value \`${t}\` supplied to \`${e}\`. The \`value\` prop must be: - a positive number - - less than the value passed to \`max\` (or ${Fj} if no \`max\` prop is set) + - less than the value passed to \`max\` (or ${Qj} if no \`max\` prop is set) - \`null\` or \`undefined\` if the progress is indeterminate. -Defaulting to \`null\`.`}var qL=IL,ese=BL;const zp=b.forwardRef(({className:t,value:e,...n},r)=>o.jsx(qL,{ref:r,className:ve("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",t),...n,children:o.jsx(ese,{className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(e||0)}%)`}})}));zp.displayName=qL.displayName;const tse={light:"",dark:".dark"},$L=b.createContext(null);function HL(){const t=b.useContext($L);if(!t)throw new Error("useChart must be used within a ");return t}const gh=b.forwardRef(({id:t,className:e,children:n,config:r,...s},i)=>{const a=b.useId(),l=`chart-${t||a.replace(/:/g,"")}`;return o.jsx($L.Provider,{value:{config:r},children:o.jsxs("div",{"data-chart":l,ref:i,className:ve("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",e),...s,children:[o.jsx(nse,{id:l,config:r}),o.jsx(cJ,{children:n})]})})});gh.displayName="Chart";const nse=({id:t,config:e})=>{const n=Object.entries(e).filter(([,r])=>r.theme||r.color);return n.length?o.jsx("style",{dangerouslySetInnerHTML:{__html:Object.entries(tse).map(([r,s])=>` +Defaulting to \`null\`.`}var WL=HL,yse=VL;const Lp=b.forwardRef(({className:t,value:e,...n},r)=>o.jsx(WL,{ref:r,className:xe("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",t),...n,children:o.jsx(yse,{className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(e||0)}%)`}})}));Lp.displayName=WL.displayName;const bse={light:"",dark:".dark"},GL=b.createContext(null);function XL(){const t=b.useContext(GL);if(!t)throw new Error("useChart must be used within a ");return t}const gh=b.forwardRef(({id:t,className:e,children:n,config:r,...s},i)=>{const a=b.useId(),l=`chart-${t||a.replace(/:/g,"")}`;return o.jsx(GL.Provider,{value:{config:r},children:o.jsxs("div",{"data-chart":l,ref:i,className:xe("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",e),...s,children:[o.jsx(wse,{id:l,config:r}),o.jsx(jJ,{children:n})]})})});gh.displayName="Chart";const wse=({id:t,config:e})=>{const n=Object.entries(e).filter(([,r])=>r.theme||r.color);return n.length?o.jsx("style",{dangerouslySetInnerHTML:{__html:Object.entries(bse).map(([r,s])=>` ${s} [data-chart=${t}] { ${n.map(([i,a])=>{const l=a.theme?.[r]||a.color;return l?` --color-${i}: ${l};`:null}).join(` `)} } `).join(` -`)}}):null},zm=uJ,xh=b.forwardRef(({active:t,payload:e,className:n,indicator:r="dot",hideLabel:s=!1,hideIndicator:i=!1,label:a,labelFormatter:l,labelClassName:c,formatter:d,color:h,nameKey:m,labelKey:g},x)=>{const{config:y}=HL(),w=b.useMemo(()=>{if(s||!e?.length)return null;const[k]=e,j=`${g||k?.dataKey||k?.name||"value"}`,N=ok(y,k,j),T=!g&&typeof a=="string"?y[a]?.label||a:N?.label;return l?o.jsx("div",{className:ve("font-medium",c),children:l(T,e)}):T?o.jsx("div",{className:ve("font-medium",c),children:T}):null},[a,l,e,s,c,y,g]);if(!t||!e?.length)return null;const S=e.length===1&&r!=="dot";return o.jsxs("div",{ref:x,className:ve("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",n),children:[S?null:w,o.jsx("div",{className:"grid gap-1.5",children:e.filter(k=>k.type!=="none").map((k,j)=>{const N=`${m||k.name||k.dataKey||"value"}`,T=ok(y,k,N),E=h||k.payload.fill||k.color;return o.jsx("div",{className:ve("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",r==="dot"&&"items-center"),children:d&&k?.value!==void 0&&k.name?d(k.value,k.name,k,j,k.payload):o.jsxs(o.Fragment,{children:[T?.icon?o.jsx(T.icon,{}):!i&&o.jsx("div",{className:ve("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]",{"h-2.5 w-2.5":r==="dot","w-1":r==="line","w-0 border-[1.5px] border-dashed bg-transparent":r==="dashed","my-0.5":S&&r==="dashed"}),style:{"--color-bg":E,"--color-border":E}}),o.jsxs("div",{className:ve("flex flex-1 justify-between leading-none",S?"items-end":"items-center"),children:[o.jsxs("div",{className:"grid gap-1.5",children:[S?w:null,o.jsx("span",{className:"text-muted-foreground",children:T?.label||k.name})]}),k.value&&o.jsx("span",{className:"font-mono font-medium tabular-nums text-foreground",children:k.value.toLocaleString()})]})]})},k.dataKey)})})]})});xh.displayName="ChartTooltip";const rse=dJ,QL=b.forwardRef(({className:t,hideIcon:e=!1,payload:n,verticalAlign:r="bottom",nameKey:s},i)=>{const{config:a}=HL();return n?.length?o.jsx("div",{ref:i,className:ve("flex items-center justify-center gap-4",r==="top"?"pb-3":"pt-3",t),children:n.filter(l=>l.type!=="none").map(l=>{const c=`${s||l.dataKey||"value"}`,d=ok(a,l,c);return o.jsxs("div",{className:ve("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"),children:[d?.icon&&!e?o.jsx(d.icon,{}):o.jsx("div",{className:"h-2 w-2 shrink-0 rounded-[2px]",style:{backgroundColor:l.color}}),d?.label]},l.value)})}):null});QL.displayName="ChartLegend";function ok(t,e,n){if(typeof e!="object"||e===null)return;const r="payload"in e&&typeof e.payload=="object"&&e.payload!==null?e.payload:void 0;let s=n;return n in e&&typeof e[n]=="string"?s=e[n]:r&&n in r&&typeof r[n]=="string"&&(s=r[n]),s in t?t[s]:t[n]}const W9=t=>typeof t=="boolean"?`${t}`:t===0?"0":t,G9=Rz,wf=(t,e)=>n=>{var r;if(e?.variants==null)return G9(t,n?.class,n?.className);const{variants:s,defaultVariants:i}=e,a=Object.keys(s).map(d=>{const h=n?.[d],m=i?.[d];if(h===null)return null;const g=W9(h)||W9(m);return s[d][g]}),l=n&&Object.entries(n).reduce((d,h)=>{let[m,g]=h;return g===void 0||(d[m]=g),d},{}),c=e==null||(r=e.compoundVariants)===null||r===void 0?void 0:r.reduce((d,h)=>{let{class:m,className:g,...x}=h;return Object.entries(x).every(y=>{let[w,S]=y;return Array.isArray(S)?S.includes({...i,...l}[w]):{...i,...l}[w]===S})?[...d,m,g]:d},[]);return G9(t,a,c,n?.class,n?.className)},D0=wf("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),he=b.forwardRef(({className:t,variant:e,size:n,asChild:r=!1,...s},i)=>{const a=r?lee:"button";return o.jsx(a,{className:ve(D0({variant:e,size:n,className:t})),ref:i,...s})});he.displayName="Button";function sse(){const[t,e]=b.useState(null),[n,r]=b.useState(!0),[s,i]=b.useState(0),[a,l]=b.useState(24),[c,d]=b.useState(!0),[h,m]=b.useState(null),[g,x]=b.useState(!0),y=b.useCallback(async()=>{try{x(!0);const P=await Br.get("https://v1.hitokoto.cn/?c=a&c=b&c=c&c=d&c=h&c=i&c=k");m({hitokoto:P.data.hitokoto,from:P.data.from||P.data.from_who||"未知"})}catch(P){console.error("获取一言失败:",P),m({hitokoto:"人生就像一盒巧克力,你永远不知道下一颗是什么味道。",from:"阿甘正传"})}finally{x(!1)}},[]),w=b.useCallback(async()=>{try{const P=localStorage.getItem("access-token"),L=await Br.get(`/api/webui/statistics/dashboard?hours=${a}`,{headers:{Authorization:`Bearer ${P}`}});e(L.data),r(!1),i(100)}catch(P){console.error("Failed to fetch dashboard data:",P),r(!1),i(100)}},[a]);if(b.useEffect(()=>{if(!n)return;i(0);const P=setTimeout(()=>i(15),200),L=setTimeout(()=>i(30),800),H=setTimeout(()=>i(45),2e3),U=setTimeout(()=>i(60),4e3),ee=setTimeout(()=>i(75),6500),z=setTimeout(()=>i(85),9e3),Q=setTimeout(()=>i(92),11e3);return()=>{clearTimeout(P),clearTimeout(L),clearTimeout(H),clearTimeout(U),clearTimeout(ee),clearTimeout(z),clearTimeout(Q)}},[n]),b.useEffect(()=>{w(),y()},[w,y]),b.useEffect(()=>{if(!c)return;const P=setInterval(()=>{w()},3e4);return()=>clearInterval(P)},[c,w]),n||!t)return o.jsx("div",{className:"flex items-center justify-center h-[calc(100vh-200px)]",children:o.jsxs("div",{className:"text-center space-y-6 w-full max-w-md px-4",children:[o.jsx(Qs,{className:"h-12 w-12 animate-spin mx-auto text-primary"}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-lg font-medium",children:"加载统计数据中..."}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"正在获取麦麦运行数据"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(zp,{value:s,className:"h-2"}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:[s,"%"]})]})]})});const{summary:S,model_stats:k,hourly_data:j,daily_data:N,recent_activity:T}=t,E=P=>{const L=Math.floor(P/3600),H=Math.floor(P%3600/60);return`${L}小时${H}分钟`},_=P=>new Date(P).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),M=k.slice(0,6).map(P=>({name:P.model_name,value:P.request_count,fill:`hsl(var(--chart-${k.indexOf(P)%5+1}))`})),I={requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"},tokens:{label:"Tokens",color:"hsl(var(--chart-3))"}};return o.jsx(wn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"实时监控面板"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"麦麦运行状态和统计数据一览"})]}),o.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[o.jsx(ja,{value:a.toString(),onValueChange:P=>l(Number(P)),children:o.jsxs(Wi,{className:"grid grid-cols-3 w-full sm:w-auto",children:[o.jsx(Lt,{value:"24",children:"24小时"}),o.jsx(Lt,{value:"168",children:"7天"}),o.jsx(Lt,{value:"720",children:"30天"})]})}),o.jsxs(he,{variant:c?"default":"outline",size:"sm",onClick:()=>d(!c),className:"gap-2",children:[o.jsx(Qs,{className:`h-4 w-4 ${c?"animate-spin":""}`}),o.jsx("span",{className:"hidden sm:inline",children:"自动刷新"})]}),o.jsx(he,{variant:"outline",size:"sm",onClick:w,children:o.jsx(Qs,{className:"h-4 w-4"})})]})]}),o.jsxs("div",{className:"flex items-center gap-3 px-4 py-2 rounded-lg border border-dashed border-muted-foreground/30 bg-muted/20",children:[g?o.jsx(Qre,{className:"h-5 flex-1"}):h?o.jsxs("p",{className:"flex-1 text-sm text-muted-foreground italic truncate",children:['"',h.hitokoto,'" —— ',h.from]}):null,o.jsx(he,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0",onClick:y,disabled:g,children:o.jsx(Qs,{className:`h-3.5 w-3.5 ${g?"animate-spin":""}`})})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-4",children:[o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"总请求数"}),o.jsx(wee,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:S.total_requests.toLocaleString()}),o.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["最近",a<48?a+"小时":Math.floor(a/24)+"天"]})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"总花费"}),o.jsx(See,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsxs("div",{className:"text-2xl font-bold",children:["¥",S.total_cost.toFixed(2)]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:S.cost_per_hour>0?`¥${S.cost_per_hour.toFixed(2)}/小时`:"暂无数据"})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"Token消耗"}),o.jsx(G3,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsxs("div",{className:"text-2xl font-bold",children:[(S.total_tokens/1e3).toFixed(1),"K"]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:S.tokens_per_hour>0?`${(S.tokens_per_hour/1e3).toFixed(1)}K/小时`:"暂无数据"})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"平均响应"}),o.jsx(X3,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsxs("div",{className:"text-2xl font-bold",children:[S.avg_response_time.toFixed(2),"s"]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"API平均耗时"})]})]})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 sm:grid-cols-3",children:[o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"在线时长"}),o.jsx(_h,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsx(Gn,{children:o.jsx("div",{className:"text-xl font-bold",children:E(S.online_time)})})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"消息处理"}),o.jsx(Cp,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-xl font-bold",children:S.total_messages.toLocaleString()}),o.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["回复 ",S.total_replies.toLocaleString()," 条"]})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"成本效率"}),o.jsx(kee,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-xl font-bold",children:S.total_messages>0?`¥${(S.total_cost/S.total_messages*100).toFixed(2)}`:"¥0.00"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"每100条消息"})]})]})]}),o.jsxs(ja,{defaultValue:"trends",className:"space-y-4",children:[o.jsxs(Wi,{className:"grid w-full grid-cols-2 sm:grid-cols-4",children:[o.jsx(Lt,{value:"trends",children:"趋势"}),o.jsx(Lt,{value:"models",children:"模型"}),o.jsx(Lt,{value:"activity",children:"活动"}),o.jsx(Lt,{value:"daily",children:"日统计"})]}),o.jsxs(un,{value:"trends",className:"space-y-4",children:[o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"请求趋势"}),o.jsxs(ts,{children:["最近",a,"小时的请求量变化"]})]}),o.jsx(Gn,{children:o.jsx(gh,{config:I,className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:o.jsxs(hJ,{data:j,children:[o.jsx(Qx,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),o.jsx(Vx,{dataKey:"timestamp",tickFormatter:P=>_(P),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Am,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(zm,{content:o.jsx(xh,{labelFormatter:P=>_(P)})}),o.jsx(fJ,{type:"monotone",dataKey:"requests",stroke:"var(--color-requests)",strokeWidth:2})]})})})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"花费趋势"}),o.jsx(ts,{children:"API调用成本变化"})]}),o.jsx(Gn,{children:o.jsx(gh,{config:I,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:o.jsxs(h4,{data:j,children:[o.jsx(Qx,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),o.jsx(Vx,{dataKey:"timestamp",tickFormatter:P=>_(P),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Am,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(zm,{content:o.jsx(xh,{labelFormatter:P=>_(P)})}),o.jsx(Ux,{dataKey:"cost",fill:"var(--color-cost)"})]})})})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"Token消耗"}),o.jsx(ts,{children:"Token使用量变化"})]}),o.jsx(Gn,{children:o.jsx(gh,{config:I,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:o.jsxs(h4,{data:j,children:[o.jsx(Qx,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),o.jsx(Vx,{dataKey:"timestamp",tickFormatter:P=>_(P),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Am,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(zm,{content:o.jsx(xh,{labelFormatter:P=>_(P)})}),o.jsx(Ux,{dataKey:"tokens",fill:"var(--color-tokens)"})]})})})]})]})]}),o.jsx(un,{value:"models",className:"space-y-4",children:o.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"模型请求分布"}),o.jsx(ts,{children:"各模型使用占比"})]}),o.jsx(Gn,{children:o.jsx(gh,{config:Object.fromEntries(k.slice(0,6).map((P,L)=>[P.model_name,{label:P.model_name,color:`hsl(var(--chart-${L%5+1}))`}])),className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:o.jsxs(mJ,{children:[o.jsx(zm,{content:o.jsx(xh,{})}),o.jsx(pJ,{data:M,cx:"50%",cy:"50%",labelLine:!1,label:({name:P,percent:L})=>`${P} ${L?(L*100).toFixed(0):0}%`,outerRadius:100,dataKey:"value",children:M.map((P,L)=>o.jsx(gJ,{fill:P.fill},`cell-${L}`))})]})})})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"模型详细统计"}),o.jsx(ts,{children:"请求数、花费和性能"})]}),o.jsx(Gn,{children:o.jsx(wn,{className:"h-[300px] sm:h-[400px]",children:o.jsx("div",{className:"space-y-3",children:k.map((P,L)=>o.jsxs("div",{className:"p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[o.jsxs("div",{className:"flex items-center justify-between mb-2",children:[o.jsx("h4",{className:"font-semibold text-sm truncate flex-1 min-w-0",children:P.model_name}),o.jsx("div",{className:"w-3 h-3 rounded-full ml-2 flex-shrink-0",style:{backgroundColor:`hsl(var(--chart-${L%5+1}))`}})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"请求数:"}),o.jsx("span",{className:"ml-1 font-medium",children:P.request_count.toLocaleString()})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"花费:"}),o.jsxs("span",{className:"ml-1 font-medium",children:["¥",P.total_cost.toFixed(2)]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),o.jsxs("span",{className:"ml-1 font-medium",children:[(P.total_tokens/1e3).toFixed(1),"K"]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"平均耗时:"}),o.jsxs("span",{className:"ml-1 font-medium",children:[P.avg_response_time.toFixed(2),"s"]})]})]})]},L))})})})]})]})}),o.jsx(un,{value:"activity",children:o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"最近活动"}),o.jsx(ts,{children:"最新的API调用记录"})]}),o.jsx(Gn,{children:o.jsx(wn,{className:"h-[400px] sm:h-[500px]",children:o.jsx("div",{className:"space-y-2",children:T.map((P,L)=>o.jsxs("div",{className:"p-3 sm:p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-2 mb-2",children:[o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("div",{className:"font-medium text-sm truncate",children:P.model}),o.jsx("div",{className:"text-xs text-muted-foreground",children:P.request_type})]}),o.jsx("div",{className:"text-xs text-muted-foreground flex-shrink-0",children:_(P.timestamp)})]}),o.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-2 text-xs",children:[o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),o.jsx("span",{className:"ml-1",children:P.tokens})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"花费:"}),o.jsxs("span",{className:"ml-1",children:["¥",P.cost.toFixed(4)]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"耗时:"}),o.jsxs("span",{className:"ml-1",children:[P.time_cost.toFixed(2),"s"]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"状态:"}),o.jsx("span",{className:`ml-1 ${P.status==="success"?"text-green-600":"text-red-600"}`,children:P.status})]})]})]},L))})})})]})}),o.jsx(un,{value:"daily",children:o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"每日统计"}),o.jsx(ts,{children:"最近7天的数据汇总"})]}),o.jsx(Gn,{children:o.jsx(gh,{config:{requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"}},className:"h-[400px] sm:h-[500px] w-full aspect-auto",children:o.jsxs(h4,{data:N,children:[o.jsx(Qx,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),o.jsx(Vx,{dataKey:"timestamp",tickFormatter:P=>{const L=new Date(P);return`${L.getMonth()+1}/${L.getDate()}`},stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Am,{yAxisId:"left",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Am,{yAxisId:"right",orientation:"right",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(zm,{content:o.jsx(xh,{labelFormatter:P=>new Date(P).toLocaleDateString("zh-CN")})}),o.jsx(rse,{content:o.jsx(QL,{})}),o.jsx(Ux,{yAxisId:"left",dataKey:"requests",fill:"var(--color-requests)"}),o.jsx(Ux,{yAxisId:"right",dataKey:"cost",fill:"var(--color-cost)"})]})})})]})})]})]})})}const ise={theme:"system",setTheme:()=>null},VL=b.createContext(ise),qj=()=>{const t=b.useContext(VL);if(t===void 0)throw new Error("useTheme must be used within a ThemeProvider");return t},ase=(t,e,n)=>{const r=document.documentElement.classList.contains("no-animations");if(!document.startViewTransition||r){e(t);return}const s=n.clientX,i=n.clientY,a=Math.hypot(Math.max(s,innerWidth-s),Math.max(i,innerHeight-i));document.startViewTransition(()=>{e(t)}).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${s}px ${i}px)`,`circle(${a}px at ${s}px ${i}px)`]},{duration:500,easing:"ease-in-out",pseudoElement:"::view-transition-new(root)"})})},UL=b.createContext(void 0),WL=()=>{const t=b.useContext(UL);if(t===void 0)throw new Error("useAnimation must be used within an AnimationProvider");return t};var Zy="Switch",[ose]=Ra(Zy),[lse,cse]=ose(Zy),GL=b.forwardRef((t,e)=>{const{__scopeSwitch:n,name:r,checked:s,defaultChecked:i,required:a,disabled:l,value:c="on",onCheckedChange:d,form:h,...m}=t,[g,x]=b.useState(null),y=Yn(e,N=>x(N)),w=b.useRef(!1),S=g?h||!!g.closest("form"):!0,[k,j]=Gl({prop:s,defaultProp:i??!1,onChange:d,caller:Zy});return o.jsxs(lse,{scope:n,checked:k,disabled:l,children:[o.jsx(gn.button,{type:"button",role:"switch","aria-checked":k,"aria-required":a,"data-state":ZL(k),"data-disabled":l?"":void 0,disabled:l,value:c,...m,ref:y,onClick:nt(t.onClick,N=>{j(T=>!T),S&&(w.current=N.isPropagationStopped(),w.current||N.stopPropagation())})}),S&&o.jsx(KL,{control:g,bubbles:!w.current,name:r,value:c,checked:k,required:a,disabled:l,form:h,style:{transform:"translateX(-100%)"}})]})});GL.displayName=Zy;var XL="SwitchThumb",YL=b.forwardRef((t,e)=>{const{__scopeSwitch:n,...r}=t,s=cse(XL,n);return o.jsx(gn.span,{"data-state":ZL(s.checked),"data-disabled":s.disabled?"":void 0,...r,ref:e})});YL.displayName=XL;var use="SwitchBubbleInput",KL=b.forwardRef(({__scopeSwitch:t,control:e,checked:n,bubbles:r=!0,...s},i)=>{const a=b.useRef(null),l=Yn(a,i),c=Wz(n),d=Gz(e);return b.useEffect(()=>{const h=a.current;if(!h)return;const m=window.HTMLInputElement.prototype,x=Object.getOwnPropertyDescriptor(m,"checked").set;if(c!==n&&x){const y=new Event("click",{bubbles:r});x.call(h,n),h.dispatchEvent(y)}},[c,n,r]),o.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:n,...s,tabIndex:-1,ref:l,style:{...s.style,...d,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});KL.displayName=use;function ZL(t){return t?"checked":"unchecked"}var JL=GL,dse=YL;const Bt=b.forwardRef(({className:t,...e},n)=>o.jsx(JL,{className:ve("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",t),...e,ref:n,children:o.jsx(dse,{className:ve("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));Bt.displayName=JL.displayName;const hse=wf("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),de=b.forwardRef(({className:t,...e},n)=>o.jsx(Xz,{ref:n,className:ve(hse(),t),...e}));de.displayName=Xz.displayName;const ze=b.forwardRef(({className:t,type:e,...n},r)=>o.jsx("input",{type:e,className:ve("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",t),ref:r,...n}));ze.displayName="Input";const fse=5,mse=5e3;let k4=0;function pse(){return k4=(k4+1)%Number.MAX_SAFE_INTEGER,k4.toString()}const O4=new Map,X9=t=>{if(O4.has(t))return;const e=setTimeout(()=>{O4.delete(t),g0({type:"REMOVE_TOAST",toastId:t})},mse);O4.set(t,e)},gse=(t,e)=>{switch(e.type){case"ADD_TOAST":return{...t,toasts:[e.toast,...t.toasts].slice(0,fse)};case"UPDATE_TOAST":return{...t,toasts:t.toasts.map(n=>n.id===e.toast.id?{...n,...e.toast}:n)};case"DISMISS_TOAST":{const{toastId:n}=e;return n?X9(n):t.toasts.forEach(r=>{X9(r.id)}),{...t,toasts:t.toasts.map(r=>r.id===n||n===void 0?{...r,open:!1}:r)}}case"REMOVE_TOAST":return e.toastId===void 0?{...t,toasts:[]}:{...t,toasts:t.toasts.filter(n=>n.id!==e.toastId)}}},tv=[];let nv={toasts:[]};function g0(t){nv=gse(nv,t),tv.forEach(e=>{e(nv)})}function xse({...t}){const e=pse(),n=s=>g0({type:"UPDATE_TOAST",toast:{...s,id:e}}),r=()=>g0({type:"DISMISS_TOAST",toastId:e});return g0({type:"ADD_TOAST",toast:{...t,id:e,open:!0,onOpenChange:s=>{s||r()}}}),{id:e,dismiss:r,update:n}}function fs(){const[t,e]=b.useState(nv);return b.useEffect(()=>(tv.push(e),()=>{const n=tv.indexOf(e);n>-1&&tv.splice(n,1)}),[t]),{...t,toast:xse,dismiss:n=>g0({type:"DISMISS_TOAST",toastId:n})}}const vse=[{id:"minLength",label:"长度至少 10 位",description:"Token 长度必须大于等于 10 个字符",validate:t=>t.length>=10},{id:"hasUppercase",label:"包含大写字母",description:"至少包含一个大写字母 (A-Z)",validate:t=>/[A-Z]/.test(t)},{id:"hasLowercase",label:"包含小写字母",description:"至少包含一个小写字母 (a-z)",validate:t=>/[a-z]/.test(t)},{id:"hasSpecialChar",label:"包含特殊符号",description:"至少包含一个特殊符号 (!@#$%^&*()_+-=[]{}|;:,.<>?/)",validate:t=>/[!@#$%^&*()_+\-=[\]{}|;:,.<>?/]/.test(t)}];function yse(t){const e=vse.map(r=>({id:r.id,label:r.label,description:r.description,passed:r.validate(t)}));return{isValid:e.every(r=>r.passed),rules:e}}const $j="0.11.6 Beta",Hj="MaiBot Dashboard",bse=`${Hj} v${$j}`,wse=(t="v")=>`${t}${$j}`,Dr=Sj,Sf=Yz,Sse=yj,Qj=Iy,eB=b.forwardRef(({className:t,...e},n)=>o.jsx(Py,{ref:n,className:ve("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),...e}));eB.displayName=Py.displayName;const Sr=b.forwardRef(({className:t,children:e,preventOutsideClose:n=!1,...r},s)=>o.jsxs(Sse,{children:[o.jsx(eB,{}),o.jsxs(zy,{ref:s,className:ve("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",t),onPointerDownOutside:n?i=>i.preventDefault():void 0,onInteractOutside:n?i=>i.preventDefault():void 0,...r,children:[e,o.jsxs(Iy,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[o.jsx(Tp,{className:"h-4 w-4"}),o.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Sr.displayName=zy.displayName;const kr=({className:t,...e})=>o.jsx("div",{className:ve("flex flex-col space-y-1.5 text-center sm:text-left",t),...e});kr.displayName="DialogHeader";const bs=({className:t,...e})=>o.jsx("div",{className:ve("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...e});bs.displayName="DialogFooter";const Or=b.forwardRef(({className:t,...e},n)=>o.jsx(bj,{ref:n,className:ve("text-lg font-semibold leading-none tracking-tight",t),...e}));Or.displayName=bj.displayName;const ss=b.forwardRef(({className:t,...e},n)=>o.jsx(wj,{ref:n,className:ve("text-sm text-muted-foreground",t),...e}));ss.displayName=wj.displayName;var kse=Symbol("radix.slottable");function Ose(t){const e=({children:n})=>o.jsx(o.Fragment,{children:n});return e.displayName=`${t}.Slottable`,e.__radixId=kse,e}var tB="AlertDialog",[jse]=Ra(tB,[Kz]),Xl=Kz(),nB=t=>{const{__scopeAlertDialog:e,...n}=t,r=Xl(e);return o.jsx(Sj,{...r,...n,modal:!0})};nB.displayName=tB;var Nse="AlertDialogTrigger",rB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Xl(n);return o.jsx(Yz,{...s,...r,ref:e})});rB.displayName=Nse;var Cse="AlertDialogPortal",sB=t=>{const{__scopeAlertDialog:e,...n}=t,r=Xl(e);return o.jsx(yj,{...r,...n})};sB.displayName=Cse;var Tse="AlertDialogOverlay",iB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Xl(n);return o.jsx(Py,{...s,...r,ref:e})});iB.displayName=Tse;var Ah="AlertDialogContent",[Ese,_se]=jse(Ah),Mse=Ose("AlertDialogContent"),aB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,children:r,...s}=t,i=Xl(n),a=b.useRef(null),l=Yn(e,a),c=b.useRef(null);return o.jsx(cee,{contentName:Ah,titleName:oB,docsSlug:"alert-dialog",children:o.jsx(Ese,{scope:n,cancelRef:c,children:o.jsxs(zy,{role:"alertdialog",...i,...s,ref:l,onOpenAutoFocus:nt(s.onOpenAutoFocus,d=>{d.preventDefault(),c.current?.focus({preventScroll:!0})}),onPointerDownOutside:d=>d.preventDefault(),onInteractOutside:d=>d.preventDefault(),children:[o.jsx(Mse,{children:r}),o.jsx(Rse,{contentRef:a})]})})})});aB.displayName=Ah;var oB="AlertDialogTitle",lB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Xl(n);return o.jsx(bj,{...s,...r,ref:e})});lB.displayName=oB;var cB="AlertDialogDescription",uB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Xl(n);return o.jsx(wj,{...s,...r,ref:e})});uB.displayName=cB;var Ase="AlertDialogAction",dB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Xl(n);return o.jsx(Iy,{...s,...r,ref:e})});dB.displayName=Ase;var hB="AlertDialogCancel",fB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,{cancelRef:s}=_se(hB,n),i=Xl(n),a=Yn(e,s);return o.jsx(Iy,{...i,...r,ref:a})});fB.displayName=hB;var Rse=({contentRef:t})=>{const e=`\`${Ah}\` requires a description for the component to be accessible for screen reader users. +`)}}):null},Lm=NJ,xh=b.forwardRef(({active:t,payload:e,className:n,indicator:r="dot",hideLabel:s=!1,hideIndicator:i=!1,label:a,labelFormatter:l,labelClassName:c,formatter:d,color:h,nameKey:m,labelKey:g},x)=>{const{config:y}=XL(),w=b.useMemo(()=>{if(s||!e?.length)return null;const[k]=e,j=`${g||k?.dataKey||k?.name||"value"}`,N=fk(y,k,j),T=!g&&typeof a=="string"?y[a]?.label||a:N?.label;return l?o.jsx("div",{className:xe("font-medium",c),children:l(T,e)}):T?o.jsx("div",{className:xe("font-medium",c),children:T}):null},[a,l,e,s,c,y,g]);if(!t||!e?.length)return null;const S=e.length===1&&r!=="dot";return o.jsxs("div",{ref:x,className:xe("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",n),children:[S?null:w,o.jsx("div",{className:"grid gap-1.5",children:e.filter(k=>k.type!=="none").map((k,j)=>{const N=`${m||k.name||k.dataKey||"value"}`,T=fk(y,k,N),E=h||k.payload.fill||k.color;return o.jsx("div",{className:xe("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",r==="dot"&&"items-center"),children:d&&k?.value!==void 0&&k.name?d(k.value,k.name,k,j,k.payload):o.jsxs(o.Fragment,{children:[T?.icon?o.jsx(T.icon,{}):!i&&o.jsx("div",{className:xe("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]",{"h-2.5 w-2.5":r==="dot","w-1":r==="line","w-0 border-[1.5px] border-dashed bg-transparent":r==="dashed","my-0.5":S&&r==="dashed"}),style:{"--color-bg":E,"--color-border":E}}),o.jsxs("div",{className:xe("flex flex-1 justify-between leading-none",S?"items-end":"items-center"),children:[o.jsxs("div",{className:"grid gap-1.5",children:[S?w:null,o.jsx("span",{className:"text-muted-foreground",children:T?.label||k.name})]}),k.value&&o.jsx("span",{className:"font-mono font-medium tabular-nums text-foreground",children:k.value.toLocaleString()})]})]})},k.dataKey)})})]})});xh.displayName="ChartTooltip";const Sse=CJ,YL=b.forwardRef(({className:t,hideIcon:e=!1,payload:n,verticalAlign:r="bottom",nameKey:s},i)=>{const{config:a}=XL();return n?.length?o.jsx("div",{ref:i,className:xe("flex items-center justify-center gap-4",r==="top"?"pb-3":"pt-3",t),children:n.filter(l=>l.type!=="none").map(l=>{const c=`${s||l.dataKey||"value"}`,d=fk(a,l,c);return o.jsxs("div",{className:xe("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"),children:[d?.icon&&!e?o.jsx(d.icon,{}):o.jsx("div",{className:"h-2 w-2 shrink-0 rounded-[2px]",style:{backgroundColor:l.color}}),d?.label]},l.value)})}):null});YL.displayName="ChartLegend";function fk(t,e,n){if(typeof e!="object"||e===null)return;const r="payload"in e&&typeof e.payload=="object"&&e.payload!==null?e.payload:void 0;let s=n;return n in e&&typeof e[n]=="string"?s=e[n]:r&&n in r&&typeof r[n]=="string"&&(s=r[n]),s in t?t[s]:t[n]}const J9=t=>typeof t=="boolean"?`${t}`:t===0?"0":t,eE=Fz,kf=(t,e)=>n=>{var r;if(e?.variants==null)return eE(t,n?.class,n?.className);const{variants:s,defaultVariants:i}=e,a=Object.keys(s).map(d=>{const h=n?.[d],m=i?.[d];if(h===null)return null;const g=J9(h)||J9(m);return s[d][g]}),l=n&&Object.entries(n).reduce((d,h)=>{let[m,g]=h;return g===void 0||(d[m]=g),d},{}),c=e==null||(r=e.compoundVariants)===null||r===void 0?void 0:r.reduce((d,h)=>{let{class:m,className:g,...x}=h;return Object.entries(x).every(y=>{let[w,S]=y;return Array.isArray(S)?S.includes({...i,...l}[w]):{...i,...l}[w]===S})?[...d,m,g]:d},[]);return eE(t,a,c,n?.class,n?.className)},I0=kf("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),de=b.forwardRef(({className:t,variant:e,size:n,asChild:r=!1,...s},i)=>{const a=r?Oee:"button";return o.jsx(a,{className:xe(I0({variant:e,size:n,className:t})),ref:i,...s})});de.displayName="Button";function kse(){const[t,e]=b.useState(null),[n,r]=b.useState(!0),[s,i]=b.useState(0),[a,l]=b.useState(24),[c,d]=b.useState(!0),[h,m]=b.useState(null),[g,x]=b.useState(!0),y=b.useCallback(async()=>{try{x(!0);const P=await Br.get("https://v1.hitokoto.cn/?c=a&c=b&c=c&c=d&c=h&c=i&c=k");m({hitokoto:P.data.hitokoto,from:P.data.from||P.data.from_who||"未知"})}catch(P){console.error("获取一言失败:",P),m({hitokoto:"人生就像一盒巧克力,你永远不知道下一颗是什么味道。",from:"阿甘正传"})}finally{x(!1)}},[]),w=b.useCallback(async()=>{try{const P=localStorage.getItem("access-token"),B=await Br.get(`/api/webui/statistics/dashboard?hours=${a}`,{headers:{Authorization:`Bearer ${P}`}});e(B.data),r(!1),i(100)}catch(P){console.error("Failed to fetch dashboard data:",P),r(!1),i(100)}},[a]);if(b.useEffect(()=>{if(!n)return;i(0);const P=setTimeout(()=>i(15),200),B=setTimeout(()=>i(30),800),$=setTimeout(()=>i(45),2e3),U=setTimeout(()=>i(60),4e3),te=setTimeout(()=>i(75),6500),z=setTimeout(()=>i(85),9e3),Q=setTimeout(()=>i(92),11e3);return()=>{clearTimeout(P),clearTimeout(B),clearTimeout($),clearTimeout(U),clearTimeout(te),clearTimeout(z),clearTimeout(Q)}},[n]),b.useEffect(()=>{w(),y()},[w,y]),b.useEffect(()=>{if(!c)return;const P=setInterval(()=>{w()},3e4);return()=>clearInterval(P)},[c,w]),n||!t)return o.jsx("div",{className:"flex items-center justify-center h-[calc(100vh-200px)]",children:o.jsxs("div",{className:"text-center space-y-6 w-full max-w-md px-4",children:[o.jsx(Ps,{className:"h-12 w-12 animate-spin mx-auto text-primary"}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-lg font-medium",children:"加载统计数据中..."}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"正在获取麦麦运行数据"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(Lp,{value:s,className:"h-2"}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:[s,"%"]})]})]})});const{summary:S,model_stats:k,hourly_data:j,daily_data:N,recent_activity:T}=t,E=P=>{const B=Math.floor(P/3600),$=Math.floor(P%3600/60);return`${B}小时${$}分钟`},_=P=>new Date(P).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),A=k.slice(0,6).map(P=>({name:P.model_name,value:P.request_count,fill:`hsl(var(--chart-${k.indexOf(P)%5+1}))`})),L={requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"},tokens:{label:"Tokens",color:"hsl(var(--chart-3))"}};return o.jsx(gn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"实时监控面板"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"麦麦运行状态和统计数据一览"})]}),o.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[o.jsx(ja,{value:a.toString(),onValueChange:P=>l(Number(P)),children:o.jsxs(Wi,{className:"grid grid-cols-3 w-full sm:w-auto",children:[o.jsx(Lt,{value:"24",children:"24小时"}),o.jsx(Lt,{value:"168",children:"7天"}),o.jsx(Lt,{value:"720",children:"30天"})]})}),o.jsxs(de,{variant:c?"default":"outline",size:"sm",onClick:()=>d(!c),className:"gap-2",children:[o.jsx(Ps,{className:`h-4 w-4 ${c?"animate-spin":""}`}),o.jsx("span",{className:"hidden sm:inline",children:"自动刷新"})]}),o.jsx(de,{variant:"outline",size:"sm",onClick:w,children:o.jsx(Ps,{className:"h-4 w-4"})})]})]}),o.jsxs("div",{className:"flex items-center gap-3 px-4 py-2 rounded-lg border border-dashed border-muted-foreground/30 bg-muted/20",children:[g?o.jsx(cse,{className:"h-5 flex-1"}):h?o.jsxs("p",{className:"flex-1 text-sm text-muted-foreground italic truncate",children:['"',h.hitokoto,'" —— ',h.from]}):null,o.jsx(de,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0",onClick:y,disabled:g,children:o.jsx(Ps,{className:`h-3.5 w-3.5 ${g?"animate-spin":""}`})})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-4",children:[o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"总请求数"}),o.jsx(Iee,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:S.total_requests.toLocaleString()}),o.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["最近",a<48?a+"小时":Math.floor(a/24)+"天"]})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"总花费"}),o.jsx(Lee,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsxs("div",{className:"text-2xl font-bold",children:["¥",S.total_cost.toFixed(2)]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:S.cost_per_hour>0?`¥${S.cost_per_hour.toFixed(2)}/小时`:"暂无数据"})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"Token消耗"}),o.jsx(ek,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsxs("div",{className:"text-2xl font-bold",children:[(S.total_tokens/1e3).toFixed(1),"K"]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:S.tokens_per_hour>0?`${(S.tokens_per_hour/1e3).toFixed(1)}K/小时`:"暂无数据"})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"平均响应"}),o.jsx(tk,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsxs("div",{className:"text-2xl font-bold",children:[S.avg_response_time.toFixed(2),"s"]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"API平均耗时"})]})]})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 sm:grid-cols-3",children:[o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"在线时长"}),o.jsx(_h,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsx(Gn,{children:o.jsx("div",{className:"text-xl font-bold",children:E(S.online_time)})})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"消息处理"}),o.jsx(Wh,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-xl font-bold",children:S.total_messages.toLocaleString()}),o.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["回复 ",S.total_replies.toLocaleString()," 条"]})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"成本效率"}),o.jsx(Bee,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-xl font-bold",children:S.total_messages>0?`¥${(S.total_cost/S.total_messages*100).toFixed(2)}`:"¥0.00"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"每100条消息"})]})]})]}),o.jsxs(ja,{defaultValue:"trends",className:"space-y-4",children:[o.jsxs(Wi,{className:"grid w-full grid-cols-2 sm:grid-cols-4",children:[o.jsx(Lt,{value:"trends",children:"趋势"}),o.jsx(Lt,{value:"models",children:"模型"}),o.jsx(Lt,{value:"activity",children:"活动"}),o.jsx(Lt,{value:"daily",children:"日统计"})]}),o.jsxs(un,{value:"trends",className:"space-y-4",children:[o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"请求趋势"}),o.jsxs(ts,{children:["最近",a,"小时的请求量变化"]})]}),o.jsx(Gn,{children:o.jsx(gh,{config:L,className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:o.jsxs(TJ,{data:j,children:[o.jsx(Ux,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),o.jsx(Wx,{dataKey:"timestamp",tickFormatter:P=>_(P),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Dm,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Lm,{content:o.jsx(xh,{labelFormatter:P=>_(P)})}),o.jsx(EJ,{type:"monotone",dataKey:"requests",stroke:"var(--color-requests)",strokeWidth:2})]})})})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"花费趋势"}),o.jsx(ts,{children:"API调用成本变化"})]}),o.jsx(Gn,{children:o.jsx(gh,{config:L,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:o.jsxs(v4,{data:j,children:[o.jsx(Ux,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),o.jsx(Wx,{dataKey:"timestamp",tickFormatter:P=>_(P),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Dm,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Lm,{content:o.jsx(xh,{labelFormatter:P=>_(P)})}),o.jsx(Gx,{dataKey:"cost",fill:"var(--color-cost)"})]})})})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"Token消耗"}),o.jsx(ts,{children:"Token使用量变化"})]}),o.jsx(Gn,{children:o.jsx(gh,{config:L,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:o.jsxs(v4,{data:j,children:[o.jsx(Ux,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),o.jsx(Wx,{dataKey:"timestamp",tickFormatter:P=>_(P),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Dm,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Lm,{content:o.jsx(xh,{labelFormatter:P=>_(P)})}),o.jsx(Gx,{dataKey:"tokens",fill:"var(--color-tokens)"})]})})})]})]})]}),o.jsx(un,{value:"models",className:"space-y-4",children:o.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"模型请求分布"}),o.jsx(ts,{children:"各模型使用占比"})]}),o.jsx(Gn,{children:o.jsx(gh,{config:Object.fromEntries(k.slice(0,6).map((P,B)=>[P.model_name,{label:P.model_name,color:`hsl(var(--chart-${B%5+1}))`}])),className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:o.jsxs(_J,{children:[o.jsx(Lm,{content:o.jsx(xh,{})}),o.jsx(AJ,{data:A,cx:"50%",cy:"50%",labelLine:!1,label:({name:P,percent:B})=>`${P} ${B?(B*100).toFixed(0):0}%`,outerRadius:100,dataKey:"value",children:A.map((P,B)=>o.jsx(MJ,{fill:P.fill},`cell-${B}`))})]})})})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"模型详细统计"}),o.jsx(ts,{children:"请求数、花费和性能"})]}),o.jsx(Gn,{children:o.jsx(gn,{className:"h-[300px] sm:h-[400px]",children:o.jsx("div",{className:"space-y-3",children:k.map((P,B)=>o.jsxs("div",{className:"p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[o.jsxs("div",{className:"flex items-center justify-between mb-2",children:[o.jsx("h4",{className:"font-semibold text-sm truncate flex-1 min-w-0",children:P.model_name}),o.jsx("div",{className:"w-3 h-3 rounded-full ml-2 flex-shrink-0",style:{backgroundColor:`hsl(var(--chart-${B%5+1}))`}})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"请求数:"}),o.jsx("span",{className:"ml-1 font-medium",children:P.request_count.toLocaleString()})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"花费:"}),o.jsxs("span",{className:"ml-1 font-medium",children:["¥",P.total_cost.toFixed(2)]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),o.jsxs("span",{className:"ml-1 font-medium",children:[(P.total_tokens/1e3).toFixed(1),"K"]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"平均耗时:"}),o.jsxs("span",{className:"ml-1 font-medium",children:[P.avg_response_time.toFixed(2),"s"]})]})]})]},B))})})})]})]})}),o.jsx(un,{value:"activity",children:o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"最近活动"}),o.jsx(ts,{children:"最新的API调用记录"})]}),o.jsx(Gn,{children:o.jsx(gn,{className:"h-[400px] sm:h-[500px]",children:o.jsx("div",{className:"space-y-2",children:T.map((P,B)=>o.jsxs("div",{className:"p-3 sm:p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-2 mb-2",children:[o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("div",{className:"font-medium text-sm truncate",children:P.model}),o.jsx("div",{className:"text-xs text-muted-foreground",children:P.request_type})]}),o.jsx("div",{className:"text-xs text-muted-foreground flex-shrink-0",children:_(P.timestamp)})]}),o.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-2 text-xs",children:[o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),o.jsx("span",{className:"ml-1",children:P.tokens})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"花费:"}),o.jsxs("span",{className:"ml-1",children:["¥",P.cost.toFixed(4)]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"耗时:"}),o.jsxs("span",{className:"ml-1",children:[P.time_cost.toFixed(2),"s"]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"状态:"}),o.jsx("span",{className:`ml-1 ${P.status==="success"?"text-green-600":"text-red-600"}`,children:P.status})]})]})]},B))})})})]})}),o.jsx(un,{value:"daily",children:o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"每日统计"}),o.jsx(ts,{children:"最近7天的数据汇总"})]}),o.jsx(Gn,{children:o.jsx(gh,{config:{requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"}},className:"h-[400px] sm:h-[500px] w-full aspect-auto",children:o.jsxs(v4,{data:N,children:[o.jsx(Ux,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),o.jsx(Wx,{dataKey:"timestamp",tickFormatter:P=>{const B=new Date(P);return`${B.getMonth()+1}/${B.getDate()}`},stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Dm,{yAxisId:"left",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Dm,{yAxisId:"right",orientation:"right",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Lm,{content:o.jsx(xh,{labelFormatter:P=>new Date(P).toLocaleDateString("zh-CN")})}),o.jsx(Sse,{content:o.jsx(YL,{})}),o.jsx(Gx,{yAxisId:"left",dataKey:"requests",fill:"var(--color-requests)"}),o.jsx(Gx,{yAxisId:"right",dataKey:"cost",fill:"var(--color-cost)"})]})})})]})})]})]})})}const Ose={theme:"system",setTheme:()=>null},KL=b.createContext(Ose),Vj=()=>{const t=b.useContext(KL);if(t===void 0)throw new Error("useTheme must be used within a ThemeProvider");return t},jse=(t,e,n)=>{const r=document.documentElement.classList.contains("no-animations");if(!document.startViewTransition||r){e(t);return}const s=n.clientX,i=n.clientY,a=Math.hypot(Math.max(s,innerWidth-s),Math.max(i,innerHeight-i));document.startViewTransition(()=>{e(t)}).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${s}px ${i}px)`,`circle(${a}px at ${s}px ${i}px)`]},{duration:500,easing:"ease-in-out",pseudoElement:"::view-transition-new(root)"})})},ZL=b.createContext(void 0),JL=()=>{const t=b.useContext(ZL);if(t===void 0)throw new Error("useAnimation must be used within an AnimationProvider");return t};var sb="Switch",[Nse]=Ra(sb),[Cse,Tse]=Nse(sb),eB=b.forwardRef((t,e)=>{const{__scopeSwitch:n,name:r,checked:s,defaultChecked:i,required:a,disabled:l,value:c="on",onCheckedChange:d,form:h,...m}=t,[g,x]=b.useState(null),y=Yn(e,N=>x(N)),w=b.useRef(!1),S=g?h||!!g.closest("form"):!0,[k,j]=Xl({prop:s,defaultProp:i??!1,onChange:d,caller:sb});return o.jsxs(Cse,{scope:n,checked:k,disabled:l,children:[o.jsx(xn.button,{type:"button",role:"switch","aria-checked":k,"aria-required":a,"data-state":sB(k),"data-disabled":l?"":void 0,disabled:l,value:c,...m,ref:y,onClick:nt(t.onClick,N=>{j(T=>!T),S&&(w.current=N.isPropagationStopped(),w.current||N.stopPropagation())})}),S&&o.jsx(rB,{control:g,bubbles:!w.current,name:r,value:c,checked:k,required:a,disabled:l,form:h,style:{transform:"translateX(-100%)"}})]})});eB.displayName=sb;var tB="SwitchThumb",nB=b.forwardRef((t,e)=>{const{__scopeSwitch:n,...r}=t,s=Tse(tB,n);return o.jsx(xn.span,{"data-state":sB(s.checked),"data-disabled":s.disabled?"":void 0,...r,ref:e})});nB.displayName=tB;var Ese="SwitchBubbleInput",rB=b.forwardRef(({__scopeSwitch:t,control:e,checked:n,bubbles:r=!0,...s},i)=>{const a=b.useRef(null),l=Yn(a,i),c=eI(n),d=tI(e);return b.useEffect(()=>{const h=a.current;if(!h)return;const m=window.HTMLInputElement.prototype,x=Object.getOwnPropertyDescriptor(m,"checked").set;if(c!==n&&x){const y=new Event("click",{bubbles:r});x.call(h,n),h.dispatchEvent(y)}},[c,n,r]),o.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:n,...s,tabIndex:-1,ref:l,style:{...s.style,...d,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});rB.displayName=Ese;function sB(t){return t?"checked":"unchecked"}var iB=eB,_se=nB;const Bt=b.forwardRef(({className:t,...e},n)=>o.jsx(iB,{className:xe("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",t),...e,ref:n,children:o.jsx(_se,{className:xe("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));Bt.displayName=iB.displayName;const Ase=kf("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),he=b.forwardRef(({className:t,...e},n)=>o.jsx(nI,{ref:n,className:xe(Ase(),t),...e}));he.displayName=nI.displayName;const ze=b.forwardRef(({className:t,type:e,...n},r)=>o.jsx("input",{type:e,className:xe("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",t),ref:r,...n}));ze.displayName="Input";const Mse=5,Rse=5e3;let E4=0;function Dse(){return E4=(E4+1)%Number.MAX_SAFE_INTEGER,E4.toString()}const _4=new Map,tE=t=>{if(_4.has(t))return;const e=setTimeout(()=>{_4.delete(t),y0({type:"REMOVE_TOAST",toastId:t})},Rse);_4.set(t,e)},Pse=(t,e)=>{switch(e.type){case"ADD_TOAST":return{...t,toasts:[e.toast,...t.toasts].slice(0,Mse)};case"UPDATE_TOAST":return{...t,toasts:t.toasts.map(n=>n.id===e.toast.id?{...n,...e.toast}:n)};case"DISMISS_TOAST":{const{toastId:n}=e;return n?tE(n):t.toasts.forEach(r=>{tE(r.id)}),{...t,toasts:t.toasts.map(r=>r.id===n||n===void 0?{...r,open:!1}:r)}}case"REMOVE_TOAST":return e.toastId===void 0?{...t,toasts:[]}:{...t,toasts:t.toasts.filter(n=>n.id!==e.toastId)}}},rv=[];let sv={toasts:[]};function y0(t){sv=Pse(sv,t),rv.forEach(e=>{e(sv)})}function zse({...t}){const e=Dse(),n=s=>y0({type:"UPDATE_TOAST",toast:{...s,id:e}}),r=()=>y0({type:"DISMISS_TOAST",toastId:e});return y0({type:"ADD_TOAST",toast:{...t,id:e,open:!0,onOpenChange:s=>{s||r()}}}),{id:e,dismiss:r,update:n}}function as(){const[t,e]=b.useState(sv);return b.useEffect(()=>(rv.push(e),()=>{const n=rv.indexOf(e);n>-1&&rv.splice(n,1)}),[t]),{...t,toast:zse,dismiss:n=>y0({type:"DISMISS_TOAST",toastId:n})}}const Ise=[{id:"minLength",label:"长度至少 10 位",description:"Token 长度必须大于等于 10 个字符",validate:t=>t.length>=10},{id:"hasUppercase",label:"包含大写字母",description:"至少包含一个大写字母 (A-Z)",validate:t=>/[A-Z]/.test(t)},{id:"hasLowercase",label:"包含小写字母",description:"至少包含一个小写字母 (a-z)",validate:t=>/[a-z]/.test(t)},{id:"hasSpecialChar",label:"包含特殊符号",description:"至少包含一个特殊符号 (!@#$%^&*()_+-=[]{}|;:,.<>?/)",validate:t=>/[!@#$%^&*()_+\-=[\]{}|;:,.<>?/]/.test(t)}];function Lse(t){const e=Ise.map(r=>({id:r.id,label:r.label,description:r.description,passed:r.validate(t)}));return{isValid:e.every(r=>r.passed),rules:e}}const Uj="0.11.6 Beta",Wj="MaiBot Dashboard",Bse=`${Wj} v${Uj}`,Fse=(t="v")=>`${t}${Uj}`,Dr=Nj,Of=rI,qse=kj,Gj=Hy,aB=b.forwardRef(({className:t,...e},n)=>o.jsx(qy,{ref:n,className:xe("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),...e}));aB.displayName=qy.displayName;const Sr=b.forwardRef(({className:t,children:e,preventOutsideClose:n=!1,...r},s)=>o.jsxs(qse,{children:[o.jsx(aB,{}),o.jsxs($y,{ref:s,className:xe("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",t),onPointerDownOutside:n?i=>i.preventDefault():void 0,onInteractOutside:n?i=>i.preventDefault():void 0,...r,children:[e,o.jsxs(Hy,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[o.jsx(_p,{className:"h-4 w-4"}),o.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Sr.displayName=$y.displayName;const kr=({className:t,...e})=>o.jsx("div",{className:xe("flex flex-col space-y-1.5 text-center sm:text-left",t),...e});kr.displayName="DialogHeader";const ws=({className:t,...e})=>o.jsx("div",{className:xe("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...e});ws.displayName="DialogFooter";const Or=b.forwardRef(({className:t,...e},n)=>o.jsx(Oj,{ref:n,className:xe("text-lg font-semibold leading-none tracking-tight",t),...e}));Or.displayName=Oj.displayName;const ss=b.forwardRef(({className:t,...e},n)=>o.jsx(jj,{ref:n,className:xe("text-sm text-muted-foreground",t),...e}));ss.displayName=jj.displayName;var $se=Symbol("radix.slottable");function Hse(t){const e=({children:n})=>o.jsx(o.Fragment,{children:n});return e.displayName=`${t}.Slottable`,e.__radixId=$se,e}var oB="AlertDialog",[Qse]=Ra(oB,[sI]),Yl=sI(),lB=t=>{const{__scopeAlertDialog:e,...n}=t,r=Yl(e);return o.jsx(Nj,{...r,...n,modal:!0})};lB.displayName=oB;var Vse="AlertDialogTrigger",cB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Yl(n);return o.jsx(rI,{...s,...r,ref:e})});cB.displayName=Vse;var Use="AlertDialogPortal",uB=t=>{const{__scopeAlertDialog:e,...n}=t,r=Yl(e);return o.jsx(kj,{...r,...n})};uB.displayName=Use;var Wse="AlertDialogOverlay",dB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Yl(n);return o.jsx(qy,{...s,...r,ref:e})});dB.displayName=Wse;var Mh="AlertDialogContent",[Gse,Xse]=Qse(Mh),Yse=Hse("AlertDialogContent"),hB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,children:r,...s}=t,i=Yl(n),a=b.useRef(null),l=Yn(e,a),c=b.useRef(null);return o.jsx(jee,{contentName:Mh,titleName:fB,docsSlug:"alert-dialog",children:o.jsx(Gse,{scope:n,cancelRef:c,children:o.jsxs($y,{role:"alertdialog",...i,...s,ref:l,onOpenAutoFocus:nt(s.onOpenAutoFocus,d=>{d.preventDefault(),c.current?.focus({preventScroll:!0})}),onPointerDownOutside:d=>d.preventDefault(),onInteractOutside:d=>d.preventDefault(),children:[o.jsx(Yse,{children:r}),o.jsx(Zse,{contentRef:a})]})})})});hB.displayName=Mh;var fB="AlertDialogTitle",mB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Yl(n);return o.jsx(Oj,{...s,...r,ref:e})});mB.displayName=fB;var pB="AlertDialogDescription",gB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Yl(n);return o.jsx(jj,{...s,...r,ref:e})});gB.displayName=pB;var Kse="AlertDialogAction",xB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Yl(n);return o.jsx(Hy,{...s,...r,ref:e})});xB.displayName=Kse;var vB="AlertDialogCancel",yB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,{cancelRef:s}=Xse(vB,n),i=Yl(n),a=Yn(e,s);return o.jsx(Hy,{...i,...r,ref:a})});yB.displayName=vB;var Zse=({contentRef:t})=>{const e=`\`${Mh}\` requires a description for the component to be accessible for screen reader users. -You can add a description to the \`${Ah}\` by passing a \`${cB}\` component as a child, which also benefits sighted users by adding visible context to the dialog. +You can add a description to the \`${Mh}\` by passing a \`${pB}\` component as a child, which also benefits sighted users by adding visible context to the dialog. -Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${Ah}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component. +Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${Mh}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component. -For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;return b.useEffect(()=>{document.getElementById(t.current?.getAttribute("aria-describedby"))||console.warn(e)},[e,t]),null},Dse=nB,Pse=rB,zse=sB,mB=iB,pB=aB,gB=dB,xB=fB,vB=lB,yB=uB;const Dn=Dse,rs=Pse,Ise=zse,bB=b.forwardRef(({className:t,...e},n)=>o.jsx(mB,{className:ve("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),...e,ref:n}));bB.displayName=mB.displayName;const Nn=b.forwardRef(({className:t,...e},n)=>o.jsxs(Ise,{children:[o.jsx(bB,{}),o.jsx(pB,{ref:n,className:ve("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",t),...e})]}));Nn.displayName=pB.displayName;const Cn=({className:t,...e})=>o.jsx("div",{className:ve("flex flex-col space-y-2 text-center sm:text-left",t),...e});Cn.displayName="AlertDialogHeader";const Tn=({className:t,...e})=>o.jsx("div",{className:ve("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...e});Tn.displayName="AlertDialogFooter";const En=b.forwardRef(({className:t,...e},n)=>o.jsx(vB,{ref:n,className:ve("text-lg font-semibold",t),...e}));En.displayName=vB.displayName;const _n=b.forwardRef(({className:t,...e},n)=>o.jsx(yB,{ref:n,className:ve("text-sm text-muted-foreground",t),...e}));_n.displayName=yB.displayName;const Mn=b.forwardRef(({className:t,...e},n)=>o.jsx(gB,{ref:n,className:ve(D0(),t),...e}));Mn.displayName=gB.displayName;const An=b.forwardRef(({className:t,...e},n)=>o.jsx(xB,{ref:n,className:ve(D0({variant:"outline"}),"mt-2 sm:mt-0",t),...e}));An.displayName=xB.displayName;function Lse(){return o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"系统设置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理您的应用偏好设置"})]})}),o.jsxs(ja,{defaultValue:"appearance",className:"w-full",children:[o.jsxs(Wi,{className:"grid w-full grid-cols-2 sm:grid-cols-4 gap-0.5 sm:gap-1 h-auto p-1",children:[o.jsxs(Lt,{value:"appearance",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[o.jsx(hI,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),o.jsx("span",{children:"外观"})]}),o.jsxs(Lt,{value:"security",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[o.jsx(Oee,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),o.jsx("span",{children:"安全"})]}),o.jsxs(Lt,{value:"other",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[o.jsx(Xu,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),o.jsx("span",{children:"其他"})]}),o.jsxs(Lt,{value:"about",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[o.jsx(Oa,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),o.jsx("span",{children:"关于"})]})]}),o.jsxs(wn,{className:"h-[calc(100vh-240px)] sm:h-[calc(100vh-280px)] mt-4 sm:mt-6",children:[o.jsx(un,{value:"appearance",className:"mt-0",children:o.jsx(Bse,{})}),o.jsx(un,{value:"security",className:"mt-0",children:o.jsx(Fse,{})}),o.jsx(un,{value:"other",className:"mt-0",children:o.jsx(qse,{})}),o.jsx(un,{value:"about",className:"mt-0",children:o.jsx($se,{})})]})]})]})}function Y9(t){const e=document.documentElement,r={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[t];if(r)e.style.setProperty("--primary",r.hsl),r.gradient?(e.style.setProperty("--primary-gradient",r.gradient),e.classList.add("has-gradient")):(e.style.removeProperty("--primary-gradient"),e.classList.remove("has-gradient"));else if(t.startsWith("#")){const s=i=>{i=i.replace("#","");const a=parseInt(i.substring(0,2),16)/255,l=parseInt(i.substring(2,4),16)/255,c=parseInt(i.substring(4,6),16)/255,d=Math.max(a,l,c),h=Math.min(a,l,c);let m=0,g=0;const x=(d+h)/2;if(d!==h){const y=d-h;switch(g=x>.5?y/(2-d-h):y/(d+h),d){case a:m=((l-c)/y+(llocalStorage.getItem("accent-color")||"blue");b.useEffect(()=>{const d=localStorage.getItem("accent-color")||"blue";Y9(d)},[]);const c=d=>{l(d),localStorage.setItem("accent-color",d),Y9(d)};return o.jsxs("div",{className:"space-y-6 sm:space-y-8",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题模式"}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 sm:gap-4",children:[o.jsx(j4,{value:"light",current:t,onChange:e,label:"浅色",description:"始终使用浅色主题"}),o.jsx(j4,{value:"dark",current:t,onChange:e,label:"深色",description:"始终使用深色主题"}),o.jsx(j4,{value:"system",current:t,onChange:e,label:"跟随系统",description:"根据系统设置自动切换"})]})]}),o.jsxs("div",{children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题色"}),o.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"单色"}),o.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[o.jsx(ua,{value:"blue",current:a,onChange:c,label:"蓝色",colorClass:"bg-blue-500"}),o.jsx(ua,{value:"purple",current:a,onChange:c,label:"紫色",colorClass:"bg-purple-500"}),o.jsx(ua,{value:"green",current:a,onChange:c,label:"绿色",colorClass:"bg-green-500"}),o.jsx(ua,{value:"orange",current:a,onChange:c,label:"橙色",colorClass:"bg-orange-500"}),o.jsx(ua,{value:"pink",current:a,onChange:c,label:"粉色",colorClass:"bg-pink-500"}),o.jsx(ua,{value:"red",current:a,onChange:c,label:"红色",colorClass:"bg-red-500"})]})]}),o.jsxs("div",{children:[o.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"渐变色"}),o.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[o.jsx(ua,{value:"gradient-sunset",current:a,onChange:c,label:"日落",colorClass:"bg-gradient-to-r from-orange-500 to-pink-500"}),o.jsx(ua,{value:"gradient-ocean",current:a,onChange:c,label:"海洋",colorClass:"bg-gradient-to-r from-blue-500 to-cyan-500"}),o.jsx(ua,{value:"gradient-forest",current:a,onChange:c,label:"森林",colorClass:"bg-gradient-to-r from-green-500 to-emerald-500"}),o.jsx(ua,{value:"gradient-aurora",current:a,onChange:c,label:"极光",colorClass:"bg-gradient-to-r from-purple-500 to-pink-500"}),o.jsx(ua,{value:"gradient-fire",current:a,onChange:c,label:"烈焰",colorClass:"bg-gradient-to-r from-red-500 to-orange-500"}),o.jsx(ua,{value:"gradient-twilight",current:a,onChange:c,label:"暮光",colorClass:"bg-gradient-to-r from-indigo-500 to-purple-500"})]})]}),o.jsxs("div",{children:[o.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"自定义颜色"}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 sm:gap-4",children:[o.jsx("div",{className:"flex-1",children:o.jsx("input",{type:"color",value:a.startsWith("#")?a:"#3b82f6",onChange:d=>c(d.target.value),className:"h-10 sm:h-12 w-full rounded-lg border-2 border-border cursor-pointer",title:"选择自定义颜色"})}),o.jsx("div",{className:"flex-1",children:o.jsx(ze,{type:"text",value:a,onChange:d=>c(d.target.value),placeholder:"#3b82f6",className:"font-mono text-sm"})})]}),o.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground mt-2",children:"点击色块选择颜色,或手动输入 HEX 颜色代码"})]})]})]}),o.jsxs("div",{children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"动画效果"}),o.jsxs("div",{className:"space-y-2 sm:space-y-3",children:[o.jsx("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5 flex-1",children:[o.jsx(de,{htmlFor:"animations",className:"text-base font-medium cursor-pointer",children:"启用动画效果"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后将禁用所有过渡动画和特效,提升性能"})]}),o.jsx(Bt,{id:"animations",checked:n,onCheckedChange:r})]})}),o.jsx("div",{className:"rounded-lg border bg-card p-4",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5 flex-1",children:[o.jsx(de,{htmlFor:"waves-background",className:"text-base font-medium cursor-pointer",children:"登录页波浪背景"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后登录页将使用纯色背景,适合低性能设备"})]}),o.jsx(Bt,{id:"waves-background",checked:s,onCheckedChange:i})]})})]})]})]})}function Fse(){const t=Zi(),[e,n]=b.useState(""),[r,s]=b.useState(""),[i,a]=b.useState(!1),[l,c]=b.useState(!1),[d,h]=b.useState(!1),[m,g]=b.useState(!1),[x,y]=b.useState(!1),[w,S]=b.useState(!1),[k,j]=b.useState(""),[N,T]=b.useState(!1),{toast:E}=fs(),_=b.useMemo(()=>yse(r),[r]),M=()=>localStorage.getItem("access-token")||"",I=async z=>{try{await navigator.clipboard.writeText(z),y(!0),E({title:"复制成功",description:"Token 已复制到剪贴板"}),setTimeout(()=>y(!1),2e3)}catch{E({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},P=async()=>{if(!r.trim()){E({title:"输入错误",description:"请输入新的 Token",variant:"destructive"});return}if(!_.isValid){const z=_.rules.filter(Q=>!Q.passed).map(Q=>Q.label).join(", ");E({title:"格式错误",description:`Token 不符合要求: ${z}`,variant:"destructive"});return}h(!0);try{const z=M(),Q=await fetch("/api/webui/auth/update",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${z}`},body:JSON.stringify({new_token:r.trim()})}),B=await Q.json();Q.ok&&B.success?(localStorage.setItem("access-token",r.trim()),s(""),e&&n(r.trim()),E({title:"更新成功",description:"Access Token 已更新,即将跳转到登录页"}),setTimeout(()=>{localStorage.removeItem("access-token"),t({to:"/auth"})},1500)):E({title:"更新失败",description:B.message||"无法更新 Token",variant:"destructive"})}catch(z){console.error("更新 Token 错误:",z),E({title:"更新失败",description:"连接服务器失败",variant:"destructive"})}finally{h(!1)}},L=async()=>{g(!0);try{const z=M(),Q=await fetch("/api/webui/auth/regenerate",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${z}`}}),B=await Q.json();Q.ok&&B.success?(localStorage.setItem("access-token",B.token),n(B.token),j(B.token),S(!0),T(!1),E({title:"生成成功",description:"新的 Access Token 已生成,请及时保存"})):E({title:"生成失败",description:B.message||"无法生成新 Token",variant:"destructive"})}catch(z){console.error("生成 Token 错误:",z),E({title:"生成失败",description:"连接服务器失败",variant:"destructive"})}finally{g(!1)}},H=async()=>{try{await navigator.clipboard.writeText(k),T(!0),E({title:"复制成功",description:"Token 已复制到剪贴板"})}catch{E({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},U=()=>{S(!1),setTimeout(()=>{j(""),T(!1)},300),setTimeout(()=>{localStorage.removeItem("access-token"),t({to:"/auth"})},500)},ee=z=>{z||U()};return o.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[o.jsx(Dr,{open:w,onOpenChange:ee,children:o.jsxs(Sr,{className:"sm:max-w-md",children:[o.jsxs(kr,{children:[o.jsxs(Or,{className:"flex items-center gap-2",children:[o.jsx(Wa,{className:"h-5 w-5 text-yellow-500"}),"新的 Access Token"]}),o.jsx(ss,{children:"这是您的新 Token,请立即保存。关闭此窗口后将跳转到登录页面。"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"rounded-lg border-2 border-primary/20 bg-primary/5 p-4",children:[o.jsx(de,{className:"text-xs text-muted-foreground mb-2 block",children:"您的新 Token (64位安全令牌)"}),o.jsx("div",{className:"font-mono text-sm break-all select-all bg-background p-3 rounded border",children:k})]}),o.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Wa,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5"}),o.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[o.jsx("p",{className:"font-semibold",children:"重要提示"}),o.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[o.jsx("li",{children:"此 Token 仅显示一次,关闭后无法再查看"}),o.jsx("li",{children:"请立即复制并保存到安全的位置"}),o.jsx("li",{children:"关闭窗口后将自动跳转到登录页面"}),o.jsx("li",{children:"请使用新 Token 重新登录系统"})]})]})]})})]}),o.jsxs(bs,{className:"gap-2 sm:gap-0",children:[o.jsx(he,{variant:"outline",onClick:H,className:"gap-2",children:N?o.jsxs(o.Fragment,{children:[o.jsx(Ro,{className:"h-4 w-4 text-green-500"}),"已复制"]}):o.jsxs(o.Fragment,{children:[o.jsx(Tv,{className:"h-4 w-4"}),"复制 Token"]})}),o.jsx(he,{onClick:U,children:"我已保存,关闭"})]})]})}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"当前 Access Token"}),o.jsx("div",{className:"space-y-3 sm:space-y-4",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"current-token",className:"text-sm",children:"您的访问令牌"}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[o.jsxs("div",{className:"relative flex-1",children:[o.jsx(ze,{id:"current-token",type:i?"text":"password",value:e||M(),readOnly:!0,className:"pr-10 font-mono text-sm",placeholder:"点击查看按钮显示 Token"}),o.jsx("button",{onClick:()=>{e||n(M()),a(!i)},className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:i?"隐藏":"显示",children:i?o.jsx(Ev,{className:"h-4 w-4 text-muted-foreground"}):o.jsx(Ea,{className:"h-4 w-4 text-muted-foreground"})})]}),o.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[o.jsx(he,{variant:"outline",size:"icon",onClick:()=>I(M()),title:"复制到剪贴板",className:"flex-shrink-0",children:x?o.jsx(Ro,{className:"h-4 w-4 text-green-500"}):o.jsx(Tv,{className:"h-4 w-4"})}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs(he,{variant:"outline",disabled:m,className:"gap-2 flex-1 sm:flex-none",children:[o.jsx(Qs,{className:ve("h-4 w-4",m&&"animate-spin")}),o.jsx("span",{className:"hidden sm:inline",children:"重新生成"}),o.jsx("span",{className:"sm:hidden",children:"生成"})]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认重新生成 Token"}),o.jsx(_n,{children:"这将生成一个新的 64 位安全令牌,并使当前 Token 立即失效。 您需要使用新 Token 重新登录系统。此操作不可撤销,确定要继续吗?"})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:L,children:"确认生成"})]})]})]})]})]}),o.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground",children:"请妥善保管您的 Access Token,不要泄露给他人"})]})})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"自定义 Access Token"}),o.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"new-token",className:"text-sm",children:"新的访问令牌"}),o.jsxs("div",{className:"relative",children:[o.jsx(ze,{id:"new-token",type:l?"text":"password",value:r,onChange:z=>s(z.target.value),className:"pr-10 font-mono text-sm",placeholder:"输入自定义 Token"}),o.jsx("button",{onClick:()=>c(!l),className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:l?"隐藏":"显示",children:l?o.jsx(Ev,{className:"h-4 w-4 text-muted-foreground"}):o.jsx(Ea,{className:"h-4 w-4 text-muted-foreground"})})]}),r&&o.jsxs("div",{className:"mt-3 space-y-2 p-3 rounded-lg bg-muted/50",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"Token 安全要求:"}),o.jsx("div",{className:"space-y-1.5",children:_.rules.map(z=>o.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[z.passed?o.jsx(Qc,{className:"h-4 w-4 text-green-500 flex-shrink-0"}):o.jsx(jee,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),o.jsx("span",{className:ve(z.passed?"text-green-600 dark:text-green-400":"text-muted-foreground"),children:z.label})]},z.id))}),_.isValid&&o.jsx("div",{className:"mt-2 pt-2 border-t border-border",children:o.jsxs("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[o.jsx(Ro,{className:"h-4 w-4"}),o.jsx("span",{className:"font-medium",children:"Token 格式正确,可以使用"})]})})]})]}),o.jsx(he,{onClick:P,disabled:d||!_.isValid||!r,className:"w-full sm:w-auto",children:d?"更新中...":"更新自定义 Token"})]})]}),o.jsxs("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3 sm:p-4",children:[o.jsx("h4",{className:"text-sm sm:text-base font-semibold text-yellow-900 dark:text-yellow-200 mb-2",children:"安全提示"}),o.jsxs("ul",{className:"text-xs sm:text-sm text-yellow-800 dark:text-yellow-300 space-y-1 list-disc list-inside",children:[o.jsx("li",{children:"重新生成 Token 会创建系统随机生成的 64 位安全令牌"}),o.jsx("li",{children:"自定义 Token 必须满足所有安全要求才能使用"}),o.jsx("li",{children:"更新 Token 后,旧的 Token 将立即失效"}),o.jsx("li",{children:"请在安全的环境下查看和复制 Token"}),o.jsx("li",{children:"如果怀疑 Token 泄露,请立即重新生成或更新"}),o.jsx("li",{children:"建议使用系统生成的 Token 以获得最高安全性"})]})]})]})}function qse(){const t=Zi(),{toast:e}=fs(),[n,r]=b.useState(!1),[s,i]=b.useState(!1);if(s)throw new Error("这是一个手动触发的测试错误,用于验证错误边界组件是否正常工作。");const a=async()=>{r(!0);try{const l=localStorage.getItem("access-token"),c=await fetch("/api/webui/setup/reset",{method:"POST",headers:{Authorization:`Bearer ${l}`}}),d=await c.json();c.ok&&d.success?(e({title:"重置成功",description:"即将进入初次配置向导"}),setTimeout(()=>{t({to:"/setup"})},1e3)):e({title:"重置失败",description:d.message||"无法重置配置状态",variant:"destructive"})}catch(l){console.error("重置配置状态错误:",l),e({title:"重置失败",description:"连接服务器失败",variant:"destructive"})}finally{r(!1)}};return o.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"配置向导"}),o.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[o.jsx("div",{className:"space-y-2",children:o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"重新进行初次配置向导,可以帮助您重新设置系统的基础配置。"})}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs(he,{variant:"outline",disabled:n,className:"gap-2",children:[o.jsx(Nee,{className:ve("h-4 w-4",n&&"animate-spin")}),"重新进行初次配置"]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认重新配置"}),o.jsx(_n,{children:"这将带您重新进入初次配置向导。您可以重新设置系统的基础配置项。确定要继续吗?"})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:a,children:"确认重置"})]})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border border-dashed border-yellow-500/50 bg-yellow-500/5 p-4 sm:p-6",children:[o.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[o.jsx(Wa,{className:"h-5 w-5 text-yellow-500"}),"开发者工具"]}),o.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[o.jsx("div",{className:"space-y-2",children:o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"以下功能仅供开发调试使用,可能会导致页面崩溃或异常。"})}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs(he,{variant:"destructive",className:"gap-2",children:[o.jsx(Wa,{className:"h-4 w-4"}),"触发测试错误"]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认触发错误"}),o.jsx(_n,{children:"这将手动触发一个 React 错误,用于测试错误边界组件的显示效果。 页面将显示错误界面,您可以通过刷新页面或点击返回首页来恢复。"})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>i(!0),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认触发"})]})]})]})]})]})]})}function $se(){return o.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[o.jsx("div",{className:"rounded-lg border-2 border-primary/30 bg-gradient-to-r from-primary/5 to-primary/10 p-4 sm:p-6",children:o.jsxs("div",{className:"flex items-start gap-3 sm:gap-4",children:[o.jsx("div",{className:"flex-shrink-0 rounded-lg bg-primary/10 p-2 sm:p-3",children:o.jsx("svg",{className:"h-6 w-6 sm:h-8 sm:w-8 text-primary",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:o.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})})}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("h3",{className:"text-lg sm:text-xl font-bold text-foreground mb-2",children:"开源项目"}),o.jsx("p",{className:"text-sm sm:text-base text-muted-foreground mb-3",children:"本项目在 GitHub 开源,欢迎 Star ⭐ 支持!"}),o.jsxs("a",{href:"https://github.com/Mai-with-u/MaiBot-Dashboard",target:"_blank",rel:"noopener noreferrer",className:ve("inline-flex items-center gap-2 px-4 py-2 rounded-lg","bg-primary text-primary-foreground font-medium text-sm","hover:bg-primary/90 transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"),children:[o.jsx("svg",{className:"h-4 w-4",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:o.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})}),"前往 GitHub",o.jsx("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:o.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})})]})]})]})}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:["关于 ",Hj]}),o.jsxs("div",{className:"space-y-2 text-xs sm:text-sm text-muted-foreground",children:[o.jsxs("p",{children:["版本: ",$j]}),o.jsx("p",{children:"麦麦(MaiBot)的现代化 Web 管理界面"})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"作者"}),o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx("p",{className:"text-sm font-medium",children:"MaiBot 核心"}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"Mai-with-u"})]}),o.jsxs("div",{className:"space-y-1",children:[o.jsx("p",{className:"text-sm font-medium",children:"WebUI"}),o.jsxs("p",{className:"text-xs sm:text-sm text-muted-foreground",children:["Mai-with-u ",o.jsx("a",{href:"https://github.com/DrSmoothl",target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"@MotricSeven"})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"技术栈"}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-xs sm:text-sm text-muted-foreground",children:[o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("p",{className:"font-medium text-foreground",children:"前端框架"}),o.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[o.jsx("li",{children:"React 19.2.0"}),o.jsx("li",{children:"TypeScript 5.7.2"}),o.jsx("li",{children:"Vite 6.0.7"}),o.jsx("li",{children:"TanStack Router 1.94.2"})]})]}),o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("p",{className:"font-medium text-foreground",children:"UI 组件"}),o.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[o.jsx("li",{children:"shadcn/ui"}),o.jsx("li",{children:"Radix UI"}),o.jsx("li",{children:"Tailwind CSS 3.4.17"}),o.jsx("li",{children:"Lucide Icons"})]})]}),o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("p",{className:"font-medium text-foreground",children:"后端"}),o.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[o.jsx("li",{children:"Python 3.12+"}),o.jsx("li",{children:"FastAPI"}),o.jsx("li",{children:"Uvicorn"}),o.jsx("li",{children:"WebSocket"})]})]}),o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("p",{className:"font-medium text-foreground",children:"构建工具"}),o.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[o.jsx("li",{children:"Bun / npm"}),o.jsx("li",{children:"ESLint 9.17.0"}),o.jsx("li",{children:"PostCSS"})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源库感谢"}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mb-3",children:"本项目使用了以下优秀的开源库,感谢他们的贡献:"}),o.jsx(wn,{className:"h-[300px] sm:h-[400px]",children:o.jsxs("div",{className:"space-y-4 pr-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"UI 框架与组件"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"React",description:"用户界面构建库",license:"MIT"}),o.jsx(Er,{name:"shadcn/ui",description:"优雅的 React 组件库",license:"MIT"}),o.jsx(Er,{name:"Radix UI",description:"无样式的可访问组件库",license:"MIT"}),o.jsx(Er,{name:"Tailwind CSS",description:"实用优先的 CSS 框架",license:"MIT"}),o.jsx(Er,{name:"Lucide React",description:"精美的图标库",license:"ISC"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"路由与状态管理"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"TanStack Router",description:"类型安全的路由库",license:"MIT"}),o.jsx(Er,{name:"Zustand",description:"轻量级状态管理",license:"MIT"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"表单处理"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"React Hook Form",description:"高性能表单库",license:"MIT"}),o.jsx(Er,{name:"Zod",description:"TypeScript 优先的 schema 验证",license:"MIT"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"工具库"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"clsx",description:"条件 className 构建工具",license:"MIT"}),o.jsx(Er,{name:"tailwind-merge",description:"Tailwind 类名合并工具",license:"MIT"}),o.jsx(Er,{name:"class-variance-authority",description:"组件变体管理",license:"Apache-2.0"}),o.jsx(Er,{name:"date-fns",description:"现代化日期处理库",license:"MIT"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"动画效果"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"Framer Motion",description:"React 动画库",license:"MIT"}),o.jsx(Er,{name:"vaul",description:"抽屉组件动画",license:"MIT"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"后端框架"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"FastAPI",description:"现代化 Python Web 框架",license:"MIT"}),o.jsx(Er,{name:"Uvicorn",description:"ASGI 服务器",license:"BSD-3-Clause"}),o.jsx(Er,{name:"Pydantic",description:"数据验证库",license:"MIT"}),o.jsx(Er,{name:"python-multipart",description:"文件上传支持",license:"Apache-2.0"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"开发工具"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"TypeScript",description:"JavaScript 的超集",license:"Apache-2.0"}),o.jsx(Er,{name:"Vite",description:"下一代前端构建工具",license:"MIT"}),o.jsx(Er,{name:"ESLint",description:"JavaScript 代码检查工具",license:"MIT"}),o.jsx(Er,{name:"PostCSS",description:"CSS 转换工具",license:"MIT"})]})]})]})})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源许可"}),o.jsxs("div",{className:"space-y-3",children:[o.jsx("div",{className:"rounded-lg bg-primary/5 border border-primary/20 p-3 sm:p-4",children:o.jsxs("div",{className:"flex items-start gap-2 sm:gap-3",children:[o.jsx("div",{className:"flex-shrink-0 mt-0.5",children:o.jsx("div",{className:"rounded-md bg-primary/10 px-2 py-1",children:o.jsx("span",{className:"text-xs sm:text-sm font-bold text-primary",children:"GPLv3"})})}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("p",{className:"text-sm sm:text-base font-semibold text-foreground mb-1",children:"MaiBot WebUI"}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目采用 GNU General Public License v3.0 开源许可证。 您可以自由地使用、修改和分发本软件,但必须保持相同的开源许可。"})]})]})}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目依赖的所有开源库均遵循各自的开源许可证(MIT、Apache-2.0、BSD 等)。 感谢所有开源贡献者的无私奉献。"})]})]})]})}function Er({name:t,description:e,license:n}){return o.jsxs("div",{className:"flex items-start justify-between gap-2 rounded-lg border bg-muted/30 p-2.5 sm:p-3",children:[o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("p",{className:"font-medium text-foreground truncate",children:t}),o.jsx("p",{className:"text-muted-foreground text-xs mt-0.5",children:e})]}),o.jsx("span",{className:"inline-flex items-center rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-medium text-primary flex-shrink-0",children:n})]})}function j4({value:t,current:e,onChange:n,label:r,description:s}){const i=e===t;return o.jsxs("button",{onClick:()=>n(t),className:ve("relative rounded-lg border-2 p-3 sm:p-4 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",i?"border-primary bg-accent":"border-border"),children:[i&&o.jsx("div",{className:"absolute top-2 right-2 sm:top-3 sm:right-3 h-2 w-2 rounded-full bg-primary"}),o.jsxs("div",{className:"space-y-1",children:[o.jsx("div",{className:"text-sm sm:text-base font-medium",children:r}),o.jsx("div",{className:"text-[10px] sm:text-xs text-muted-foreground",children:s})]}),o.jsxs("div",{className:"mt-2 sm:mt-3 flex gap-1",children:[t==="light"&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-200"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-300"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-400"})]}),t==="dark"&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-700"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-800"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-900"})]}),t==="system"&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-200 to-slate-700"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-300 to-slate-800"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-400 to-slate-900"})]})]})]})}function ua({value:t,current:e,onChange:n,label:r,colorClass:s}){const i=e===t;return o.jsxs("button",{onClick:()=>n(t),className:ve("relative rounded-lg border-2 p-2 sm:p-3 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",i?"border-primary bg-accent":"border-border"),children:[i&&o.jsx("div",{className:"absolute top-1.5 right-1.5 sm:top-2 sm:right-2 h-1.5 w-1.5 sm:h-2 sm:w-2 rounded-full bg-primary"}),o.jsxs("div",{className:"flex flex-col items-center gap-1.5 sm:gap-2",children:[o.jsx("div",{className:ve("h-8 w-8 sm:h-10 sm:w-10 rounded-full",s)}),o.jsx("div",{className:"text-[10px] sm:text-xs font-medium text-center",children:r})]})]})}class Hse{grad3;p;perm;constructor(e=0){this.grad3=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],this.p=[];for(let n=0;n<256;n++)this.p[n]=Math.floor(Math.random()*256);this.perm=[];for(let n=0;n<512;n++)this.perm[n]=this.p[n&255]}dot(e,n,r){return e[0]*n+e[1]*r}mix(e,n,r){return(1-r)*e+r*n}fade(e){return e*e*e*(e*(e*6-15)+10)}perlin2(e,n){const r=Math.floor(e)&255,s=Math.floor(n)&255;e-=Math.floor(e),n-=Math.floor(n);const i=this.fade(e),a=this.fade(n),l=this.perm[r]+s,c=this.perm[l],d=this.perm[l+1],h=this.perm[r+1]+s,m=this.perm[h],g=this.perm[h+1];return this.mix(this.mix(this.dot(this.grad3[c%12],e,n),this.dot(this.grad3[m%12],e-1,n),i),this.mix(this.dot(this.grad3[d%12],e,n-1),this.dot(this.grad3[g%12],e-1,n-1),i),a)}}function Qse(){const t=b.useRef(null),e=b.useRef(null),n=b.useRef(void 0),r=b.useRef({mouse:{x:-10,y:0,lx:0,ly:0,sx:0,sy:0,v:0,vs:0,a:0,set:!1},lines:[],paths:[],noise:new Hse(Math.random()),bounding:null});return b.useEffect(()=>{const s=e.current,i=t.current;if(!s||!i)return;const a=r.current,l=()=>{const w=s.getBoundingClientRect();a.bounding=w,i.style.width=`${w.width}px`,i.style.height=`${w.height}px`},c=()=>{if(!a.bounding)return;const{width:w,height:S}=a.bounding;a.lines=[],a.paths.forEach(P=>P.remove()),a.paths=[];const k=10,j=32,N=w+200,T=S+30,E=Math.ceil(N/k),_=Math.ceil(T/j),M=(w-k*E)/2,I=(S-j*_)/2;for(let P=0;P<=E;P++){const L=[];for(let U=0;U<=_;U++){const ee={x:M+k*P,y:I+j*U,wave:{x:0,y:0},cursor:{x:0,y:0,vx:0,vy:0}};L.push(ee)}const H=document.createElementNS("http://www.w3.org/2000/svg","path");i.appendChild(H),a.paths.push(H),a.lines.push(L)}},d=w=>{const{lines:S,mouse:k,noise:j}=a;S.forEach(N=>{N.forEach(T=>{const E=j.perlin2((T.x+w*.0125)*.002,(T.y+w*.005)*.0015)*12;T.wave.x=Math.cos(E)*32,T.wave.y=Math.sin(E)*16;const _=T.x-k.sx,M=T.y-k.sy,I=Math.hypot(_,M),P=Math.max(175,k.vs);if(I{const k={x:w.x+w.wave.x+(S?w.cursor.x:0),y:w.y+w.wave.y+(S?w.cursor.y:0)};return k.x=Math.round(k.x*10)/10,k.y=Math.round(k.y*10)/10,k},m=()=>{const{lines:w,paths:S}=a;w.forEach((k,j)=>{let N=h(k[0],!1),T=`M ${N.x} ${N.y}`;k.forEach((E,_)=>{const M=_===k.length-1;N=h(E,!M),T+=`L ${N.x} ${N.y}`}),S[j].setAttribute("d",T)})},g=w=>{const{mouse:S}=a;S.sx+=(S.x-S.sx)*.1,S.sy+=(S.y-S.sy)*.1;const k=S.x-S.lx,j=S.y-S.ly,N=Math.hypot(k,j);S.v=N,S.vs+=(N-S.vs)*.1,S.vs=Math.min(100,S.vs),S.lx=S.x,S.ly=S.y,S.a=Math.atan2(j,k),s&&(s.style.setProperty("--x",`${S.sx}px`),s.style.setProperty("--y",`${S.sy}px`)),d(w),m(),n.current=requestAnimationFrame(g)},x=w=>{if(!a.bounding)return;const{mouse:S}=a;S.x=w.pageX-a.bounding.left,S.y=w.pageY-a.bounding.top+window.scrollY,S.set||(S.sx=S.x,S.sy=S.y,S.lx=S.x,S.ly=S.y,S.set=!0)},y=()=>{l(),c()};return l(),c(),window.addEventListener("resize",y),window.addEventListener("mousemove",x),n.current=requestAnimationFrame(g),()=>{window.removeEventListener("resize",y),window.removeEventListener("mousemove",x),n.current&&cancelAnimationFrame(n.current)}},[]),o.jsxs("div",{ref:e,className:"waves-background",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflow:"hidden",pointerEvents:"none"},children:[o.jsx("div",{className:"waves-cursor",style:{position:"absolute",top:0,left:0,width:"0.5rem",height:"0.5rem",background:"hsl(var(--primary) / 0.3)",borderRadius:"50%",transform:"translate3d(calc(var(--x, -0.5rem) - 50%), calc(var(--y, 50%) - 50%), 0)",willChange:"transform",pointerEvents:"none"}}),o.jsx("svg",{ref:t,style:{display:"block",width:"100%",height:"100%"},children:o.jsx("style",{children:` +For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;return b.useEffect(()=>{document.getElementById(t.current?.getAttribute("aria-describedby"))||console.warn(e)},[e,t]),null},Jse=lB,eie=cB,tie=uB,bB=dB,wB=hB,SB=xB,kB=yB,OB=mB,jB=gB;const Dn=Jse,rs=eie,nie=tie,NB=b.forwardRef(({className:t,...e},n)=>o.jsx(bB,{className:xe("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),...e,ref:n}));NB.displayName=bB.displayName;const Nn=b.forwardRef(({className:t,...e},n)=>o.jsxs(nie,{children:[o.jsx(NB,{}),o.jsx(wB,{ref:n,className:xe("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",t),...e})]}));Nn.displayName=wB.displayName;const Cn=({className:t,...e})=>o.jsx("div",{className:xe("flex flex-col space-y-2 text-center sm:text-left",t),...e});Cn.displayName="AlertDialogHeader";const Tn=({className:t,...e})=>o.jsx("div",{className:xe("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...e});Tn.displayName="AlertDialogFooter";const En=b.forwardRef(({className:t,...e},n)=>o.jsx(OB,{ref:n,className:xe("text-lg font-semibold",t),...e}));En.displayName=OB.displayName;const _n=b.forwardRef(({className:t,...e},n)=>o.jsx(jB,{ref:n,className:xe("text-sm text-muted-foreground",t),...e}));_n.displayName=jB.displayName;const An=b.forwardRef(({className:t,...e},n)=>o.jsx(SB,{ref:n,className:xe(I0(),t),...e}));An.displayName=SB.displayName;const Mn=b.forwardRef(({className:t,...e},n)=>o.jsx(kB,{ref:n,className:xe(I0({variant:"outline"}),"mt-2 sm:mt-0",t),...e}));Mn.displayName=kB.displayName;function rie(){return o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"系统设置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理您的应用偏好设置"})]})}),o.jsxs(ja,{defaultValue:"appearance",className:"w-full",children:[o.jsxs(Wi,{className:"grid w-full grid-cols-2 sm:grid-cols-4 gap-0.5 sm:gap-1 h-auto p-1",children:[o.jsxs(Lt,{value:"appearance",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[o.jsx(yI,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),o.jsx("span",{children:"外观"})]}),o.jsxs(Lt,{value:"security",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[o.jsx(Fee,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),o.jsx("span",{children:"安全"})]}),o.jsxs(Lt,{value:"other",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[o.jsx(Xu,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),o.jsx("span",{children:"其他"})]}),o.jsxs(Lt,{value:"about",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[o.jsx(Oa,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),o.jsx("span",{children:"关于"})]})]}),o.jsxs(gn,{className:"h-[calc(100vh-240px)] sm:h-[calc(100vh-280px)] mt-4 sm:mt-6",children:[o.jsx(un,{value:"appearance",className:"mt-0",children:o.jsx(sie,{})}),o.jsx(un,{value:"security",className:"mt-0",children:o.jsx(iie,{})}),o.jsx(un,{value:"other",className:"mt-0",children:o.jsx(aie,{})}),o.jsx(un,{value:"about",className:"mt-0",children:o.jsx(oie,{})})]})]})]})}function nE(t){const e=document.documentElement,r={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[t];if(r)e.style.setProperty("--primary",r.hsl),r.gradient?(e.style.setProperty("--primary-gradient",r.gradient),e.classList.add("has-gradient")):(e.style.removeProperty("--primary-gradient"),e.classList.remove("has-gradient"));else if(t.startsWith("#")){const s=i=>{i=i.replace("#","");const a=parseInt(i.substring(0,2),16)/255,l=parseInt(i.substring(2,4),16)/255,c=parseInt(i.substring(4,6),16)/255,d=Math.max(a,l,c),h=Math.min(a,l,c);let m=0,g=0;const x=(d+h)/2;if(d!==h){const y=d-h;switch(g=x>.5?y/(2-d-h):y/(d+h),d){case a:m=((l-c)/y+(llocalStorage.getItem("accent-color")||"blue");b.useEffect(()=>{const d=localStorage.getItem("accent-color")||"blue";nE(d)},[]);const c=d=>{l(d),localStorage.setItem("accent-color",d),nE(d)};return o.jsxs("div",{className:"space-y-6 sm:space-y-8",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题模式"}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 sm:gap-4",children:[o.jsx(A4,{value:"light",current:t,onChange:e,label:"浅色",description:"始终使用浅色主题"}),o.jsx(A4,{value:"dark",current:t,onChange:e,label:"深色",description:"始终使用深色主题"}),o.jsx(A4,{value:"system",current:t,onChange:e,label:"跟随系统",description:"根据系统设置自动切换"})]})]}),o.jsxs("div",{children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题色"}),o.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"单色"}),o.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[o.jsx(ua,{value:"blue",current:a,onChange:c,label:"蓝色",colorClass:"bg-blue-500"}),o.jsx(ua,{value:"purple",current:a,onChange:c,label:"紫色",colorClass:"bg-purple-500"}),o.jsx(ua,{value:"green",current:a,onChange:c,label:"绿色",colorClass:"bg-green-500"}),o.jsx(ua,{value:"orange",current:a,onChange:c,label:"橙色",colorClass:"bg-orange-500"}),o.jsx(ua,{value:"pink",current:a,onChange:c,label:"粉色",colorClass:"bg-pink-500"}),o.jsx(ua,{value:"red",current:a,onChange:c,label:"红色",colorClass:"bg-red-500"})]})]}),o.jsxs("div",{children:[o.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"渐变色"}),o.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[o.jsx(ua,{value:"gradient-sunset",current:a,onChange:c,label:"日落",colorClass:"bg-gradient-to-r from-orange-500 to-pink-500"}),o.jsx(ua,{value:"gradient-ocean",current:a,onChange:c,label:"海洋",colorClass:"bg-gradient-to-r from-blue-500 to-cyan-500"}),o.jsx(ua,{value:"gradient-forest",current:a,onChange:c,label:"森林",colorClass:"bg-gradient-to-r from-green-500 to-emerald-500"}),o.jsx(ua,{value:"gradient-aurora",current:a,onChange:c,label:"极光",colorClass:"bg-gradient-to-r from-purple-500 to-pink-500"}),o.jsx(ua,{value:"gradient-fire",current:a,onChange:c,label:"烈焰",colorClass:"bg-gradient-to-r from-red-500 to-orange-500"}),o.jsx(ua,{value:"gradient-twilight",current:a,onChange:c,label:"暮光",colorClass:"bg-gradient-to-r from-indigo-500 to-purple-500"})]})]}),o.jsxs("div",{children:[o.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"自定义颜色"}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 sm:gap-4",children:[o.jsx("div",{className:"flex-1",children:o.jsx("input",{type:"color",value:a.startsWith("#")?a:"#3b82f6",onChange:d=>c(d.target.value),className:"h-10 sm:h-12 w-full rounded-lg border-2 border-border cursor-pointer",title:"选择自定义颜色"})}),o.jsx("div",{className:"flex-1",children:o.jsx(ze,{type:"text",value:a,onChange:d=>c(d.target.value),placeholder:"#3b82f6",className:"font-mono text-sm"})})]}),o.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground mt-2",children:"点击色块选择颜色,或手动输入 HEX 颜色代码"})]})]})]}),o.jsxs("div",{children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"动画效果"}),o.jsxs("div",{className:"space-y-2 sm:space-y-3",children:[o.jsx("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5 flex-1",children:[o.jsx(he,{htmlFor:"animations",className:"text-base font-medium cursor-pointer",children:"启用动画效果"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后将禁用所有过渡动画和特效,提升性能"})]}),o.jsx(Bt,{id:"animations",checked:n,onCheckedChange:r})]})}),o.jsx("div",{className:"rounded-lg border bg-card p-4",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5 flex-1",children:[o.jsx(he,{htmlFor:"waves-background",className:"text-base font-medium cursor-pointer",children:"登录页波浪背景"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后登录页将使用纯色背景,适合低性能设备"})]}),o.jsx(Bt,{id:"waves-background",checked:s,onCheckedChange:i})]})})]})]})]})}function iie(){const t=Zi(),[e,n]=b.useState(""),[r,s]=b.useState(""),[i,a]=b.useState(!1),[l,c]=b.useState(!1),[d,h]=b.useState(!1),[m,g]=b.useState(!1),[x,y]=b.useState(!1),[w,S]=b.useState(!1),[k,j]=b.useState(""),[N,T]=b.useState(!1),{toast:E}=as(),_=b.useMemo(()=>Lse(r),[r]),A=()=>localStorage.getItem("access-token")||"",L=async z=>{try{await navigator.clipboard.writeText(z),y(!0),E({title:"复制成功",description:"Token 已复制到剪贴板"}),setTimeout(()=>y(!1),2e3)}catch{E({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},P=async()=>{if(!r.trim()){E({title:"输入错误",description:"请输入新的 Token",variant:"destructive"});return}if(!_.isValid){const z=_.rules.filter(Q=>!Q.passed).map(Q=>Q.label).join(", ");E({title:"格式错误",description:`Token 不符合要求: ${z}`,variant:"destructive"});return}h(!0);try{const z=A(),Q=await fetch("/api/webui/auth/update",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${z}`},body:JSON.stringify({new_token:r.trim()})}),F=await Q.json();Q.ok&&F.success?(localStorage.setItem("access-token",r.trim()),s(""),e&&n(r.trim()),E({title:"更新成功",description:"Access Token 已更新,即将跳转到登录页"}),setTimeout(()=>{localStorage.removeItem("access-token"),t({to:"/auth"})},1500)):E({title:"更新失败",description:F.message||"无法更新 Token",variant:"destructive"})}catch(z){console.error("更新 Token 错误:",z),E({title:"更新失败",description:"连接服务器失败",variant:"destructive"})}finally{h(!1)}},B=async()=>{g(!0);try{const z=A(),Q=await fetch("/api/webui/auth/regenerate",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${z}`}}),F=await Q.json();Q.ok&&F.success?(localStorage.setItem("access-token",F.token),n(F.token),j(F.token),S(!0),T(!1),E({title:"生成成功",description:"新的 Access Token 已生成,请及时保存"})):E({title:"生成失败",description:F.message||"无法生成新 Token",variant:"destructive"})}catch(z){console.error("生成 Token 错误:",z),E({title:"生成失败",description:"连接服务器失败",variant:"destructive"})}finally{g(!1)}},$=async()=>{try{await navigator.clipboard.writeText(k),T(!0),E({title:"复制成功",description:"Token 已复制到剪贴板"})}catch{E({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},U=()=>{S(!1),setTimeout(()=>{j(""),T(!1)},300),setTimeout(()=>{localStorage.removeItem("access-token"),t({to:"/auth"})},500)},te=z=>{z||U()};return o.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[o.jsx(Dr,{open:w,onOpenChange:te,children:o.jsxs(Sr,{className:"sm:max-w-md",children:[o.jsxs(kr,{children:[o.jsxs(Or,{className:"flex items-center gap-2",children:[o.jsx(Wa,{className:"h-5 w-5 text-yellow-500"}),"新的 Access Token"]}),o.jsx(ss,{children:"这是您的新 Token,请立即保存。关闭此窗口后将跳转到登录页面。"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"rounded-lg border-2 border-primary/20 bg-primary/5 p-4",children:[o.jsx(he,{className:"text-xs text-muted-foreground mb-2 block",children:"您的新 Token (64位安全令牌)"}),o.jsx("div",{className:"font-mono text-sm break-all select-all bg-background p-3 rounded border",children:k})]}),o.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Wa,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5"}),o.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[o.jsx("p",{className:"font-semibold",children:"重要提示"}),o.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[o.jsx("li",{children:"此 Token 仅显示一次,关闭后无法再查看"}),o.jsx("li",{children:"请立即复制并保存到安全的位置"}),o.jsx("li",{children:"关闭窗口后将自动跳转到登录页面"}),o.jsx("li",{children:"请使用新 Token 重新登录系统"})]})]})]})})]}),o.jsxs(ws,{className:"gap-2 sm:gap-0",children:[o.jsx(de,{variant:"outline",onClick:$,className:"gap-2",children:N?o.jsxs(o.Fragment,{children:[o.jsx(Ro,{className:"h-4 w-4 text-green-500"}),"已复制"]}):o.jsxs(o.Fragment,{children:[o.jsx(Mv,{className:"h-4 w-4"}),"复制 Token"]})}),o.jsx(de,{onClick:U,children:"我已保存,关闭"})]})]})}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"当前 Access Token"}),o.jsx("div",{className:"space-y-3 sm:space-y-4",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"current-token",className:"text-sm",children:"您的访问令牌"}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[o.jsxs("div",{className:"relative flex-1",children:[o.jsx(ze,{id:"current-token",type:i?"text":"password",value:e||A(),readOnly:!0,className:"pr-10 font-mono text-sm",placeholder:"点击查看按钮显示 Token"}),o.jsx("button",{onClick:()=>{e||n(A()),a(!i)},className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:i?"隐藏":"显示",children:i?o.jsx(Rv,{className:"h-4 w-4 text-muted-foreground"}):o.jsx(Ea,{className:"h-4 w-4 text-muted-foreground"})})]}),o.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[o.jsx(de,{variant:"outline",size:"icon",onClick:()=>L(A()),title:"复制到剪贴板",className:"flex-shrink-0",children:x?o.jsx(Ro,{className:"h-4 w-4 text-green-500"}):o.jsx(Mv,{className:"h-4 w-4"})}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs(de,{variant:"outline",disabled:m,className:"gap-2 flex-1 sm:flex-none",children:[o.jsx(Ps,{className:xe("h-4 w-4",m&&"animate-spin")}),o.jsx("span",{className:"hidden sm:inline",children:"重新生成"}),o.jsx("span",{className:"sm:hidden",children:"生成"})]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认重新生成 Token"}),o.jsx(_n,{children:"这将生成一个新的 64 位安全令牌,并使当前 Token 立即失效。 您需要使用新 Token 重新登录系统。此操作不可撤销,确定要继续吗?"})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:B,children:"确认生成"})]})]})]})]})]}),o.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground",children:"请妥善保管您的 Access Token,不要泄露给他人"})]})})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"自定义 Access Token"}),o.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"new-token",className:"text-sm",children:"新的访问令牌"}),o.jsxs("div",{className:"relative",children:[o.jsx(ze,{id:"new-token",type:l?"text":"password",value:r,onChange:z=>s(z.target.value),className:"pr-10 font-mono text-sm",placeholder:"输入自定义 Token"}),o.jsx("button",{onClick:()=>c(!l),className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:l?"隐藏":"显示",children:l?o.jsx(Rv,{className:"h-4 w-4 text-muted-foreground"}):o.jsx(Ea,{className:"h-4 w-4 text-muted-foreground"})})]}),r&&o.jsxs("div",{className:"mt-3 space-y-2 p-3 rounded-lg bg-muted/50",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"Token 安全要求:"}),o.jsx("div",{className:"space-y-1.5",children:_.rules.map(z=>o.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[z.passed?o.jsx(Vc,{className:"h-4 w-4 text-green-500 flex-shrink-0"}):o.jsx(qee,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),o.jsx("span",{className:xe(z.passed?"text-green-600 dark:text-green-400":"text-muted-foreground"),children:z.label})]},z.id))}),_.isValid&&o.jsx("div",{className:"mt-2 pt-2 border-t border-border",children:o.jsxs("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[o.jsx(Ro,{className:"h-4 w-4"}),o.jsx("span",{className:"font-medium",children:"Token 格式正确,可以使用"})]})})]})]}),o.jsx(de,{onClick:P,disabled:d||!_.isValid||!r,className:"w-full sm:w-auto",children:d?"更新中...":"更新自定义 Token"})]})]}),o.jsxs("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3 sm:p-4",children:[o.jsx("h4",{className:"text-sm sm:text-base font-semibold text-yellow-900 dark:text-yellow-200 mb-2",children:"安全提示"}),o.jsxs("ul",{className:"text-xs sm:text-sm text-yellow-800 dark:text-yellow-300 space-y-1 list-disc list-inside",children:[o.jsx("li",{children:"重新生成 Token 会创建系统随机生成的 64 位安全令牌"}),o.jsx("li",{children:"自定义 Token 必须满足所有安全要求才能使用"}),o.jsx("li",{children:"更新 Token 后,旧的 Token 将立即失效"}),o.jsx("li",{children:"请在安全的环境下查看和复制 Token"}),o.jsx("li",{children:"如果怀疑 Token 泄露,请立即重新生成或更新"}),o.jsx("li",{children:"建议使用系统生成的 Token 以获得最高安全性"})]})]})]})}function aie(){const t=Zi(),{toast:e}=as(),[n,r]=b.useState(!1),[s,i]=b.useState(!1);if(s)throw new Error("这是一个手动触发的测试错误,用于验证错误边界组件是否正常工作。");const a=async()=>{r(!0);try{const l=localStorage.getItem("access-token"),c=await fetch("/api/webui/setup/reset",{method:"POST",headers:{Authorization:`Bearer ${l}`}}),d=await c.json();c.ok&&d.success?(e({title:"重置成功",description:"即将进入初次配置向导"}),setTimeout(()=>{t({to:"/setup"})},1e3)):e({title:"重置失败",description:d.message||"无法重置配置状态",variant:"destructive"})}catch(l){console.error("重置配置状态错误:",l),e({title:"重置失败",description:"连接服务器失败",variant:"destructive"})}finally{r(!1)}};return o.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"配置向导"}),o.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[o.jsx("div",{className:"space-y-2",children:o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"重新进行初次配置向导,可以帮助您重新设置系统的基础配置。"})}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs(de,{variant:"outline",disabled:n,className:"gap-2",children:[o.jsx($ee,{className:xe("h-4 w-4",n&&"animate-spin")}),"重新进行初次配置"]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认重新配置"}),o.jsx(_n,{children:"这将带您重新进入初次配置向导。您可以重新设置系统的基础配置项。确定要继续吗?"})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:a,children:"确认重置"})]})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border border-dashed border-yellow-500/50 bg-yellow-500/5 p-4 sm:p-6",children:[o.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[o.jsx(Wa,{className:"h-5 w-5 text-yellow-500"}),"开发者工具"]}),o.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[o.jsx("div",{className:"space-y-2",children:o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"以下功能仅供开发调试使用,可能会导致页面崩溃或异常。"})}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs(de,{variant:"destructive",className:"gap-2",children:[o.jsx(Wa,{className:"h-4 w-4"}),"触发测试错误"]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认触发错误"}),o.jsx(_n,{children:"这将手动触发一个 React 错误,用于测试错误边界组件的显示效果。 页面将显示错误界面,您可以通过刷新页面或点击返回首页来恢复。"})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>i(!0),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认触发"})]})]})]})]})]})]})}function oie(){return o.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[o.jsx("div",{className:"rounded-lg border-2 border-primary/30 bg-gradient-to-r from-primary/5 to-primary/10 p-4 sm:p-6",children:o.jsxs("div",{className:"flex items-start gap-3 sm:gap-4",children:[o.jsx("div",{className:"flex-shrink-0 rounded-lg bg-primary/10 p-2 sm:p-3",children:o.jsx("svg",{className:"h-6 w-6 sm:h-8 sm:w-8 text-primary",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:o.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})})}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("h3",{className:"text-lg sm:text-xl font-bold text-foreground mb-2",children:"开源项目"}),o.jsx("p",{className:"text-sm sm:text-base text-muted-foreground mb-3",children:"本项目在 GitHub 开源,欢迎 Star ⭐ 支持!"}),o.jsxs("a",{href:"https://github.com/Mai-with-u/MaiBot-Dashboard",target:"_blank",rel:"noopener noreferrer",className:xe("inline-flex items-center gap-2 px-4 py-2 rounded-lg","bg-primary text-primary-foreground font-medium text-sm","hover:bg-primary/90 transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"),children:[o.jsx("svg",{className:"h-4 w-4",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:o.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})}),"前往 GitHub",o.jsx("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:o.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})})]})]})]})}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:["关于 ",Wj]}),o.jsxs("div",{className:"space-y-2 text-xs sm:text-sm text-muted-foreground",children:[o.jsxs("p",{children:["版本: ",Uj]}),o.jsx("p",{children:"麦麦(MaiBot)的现代化 Web 管理界面"})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"作者"}),o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx("p",{className:"text-sm font-medium",children:"MaiBot 核心"}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"Mai-with-u"})]}),o.jsxs("div",{className:"space-y-1",children:[o.jsx("p",{className:"text-sm font-medium",children:"WebUI"}),o.jsxs("p",{className:"text-xs sm:text-sm text-muted-foreground",children:["Mai-with-u ",o.jsx("a",{href:"https://github.com/DrSmoothl",target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"@MotricSeven"})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"技术栈"}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-xs sm:text-sm text-muted-foreground",children:[o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("p",{className:"font-medium text-foreground",children:"前端框架"}),o.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[o.jsx("li",{children:"React 19.2.0"}),o.jsx("li",{children:"TypeScript 5.7.2"}),o.jsx("li",{children:"Vite 6.0.7"}),o.jsx("li",{children:"TanStack Router 1.94.2"})]})]}),o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("p",{className:"font-medium text-foreground",children:"UI 组件"}),o.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[o.jsx("li",{children:"shadcn/ui"}),o.jsx("li",{children:"Radix UI"}),o.jsx("li",{children:"Tailwind CSS 3.4.17"}),o.jsx("li",{children:"Lucide Icons"})]})]}),o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("p",{className:"font-medium text-foreground",children:"后端"}),o.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[o.jsx("li",{children:"Python 3.12+"}),o.jsx("li",{children:"FastAPI"}),o.jsx("li",{children:"Uvicorn"}),o.jsx("li",{children:"WebSocket"})]})]}),o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("p",{className:"font-medium text-foreground",children:"构建工具"}),o.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[o.jsx("li",{children:"Bun / npm"}),o.jsx("li",{children:"ESLint 9.17.0"}),o.jsx("li",{children:"PostCSS"})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源库感谢"}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mb-3",children:"本项目使用了以下优秀的开源库,感谢他们的贡献:"}),o.jsx(gn,{className:"h-[300px] sm:h-[400px]",children:o.jsxs("div",{className:"space-y-4 pr-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"UI 框架与组件"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"React",description:"用户界面构建库",license:"MIT"}),o.jsx(Er,{name:"shadcn/ui",description:"优雅的 React 组件库",license:"MIT"}),o.jsx(Er,{name:"Radix UI",description:"无样式的可访问组件库",license:"MIT"}),o.jsx(Er,{name:"Tailwind CSS",description:"实用优先的 CSS 框架",license:"MIT"}),o.jsx(Er,{name:"Lucide React",description:"精美的图标库",license:"ISC"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"路由与状态管理"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"TanStack Router",description:"类型安全的路由库",license:"MIT"}),o.jsx(Er,{name:"Zustand",description:"轻量级状态管理",license:"MIT"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"表单处理"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"React Hook Form",description:"高性能表单库",license:"MIT"}),o.jsx(Er,{name:"Zod",description:"TypeScript 优先的 schema 验证",license:"MIT"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"工具库"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"clsx",description:"条件 className 构建工具",license:"MIT"}),o.jsx(Er,{name:"tailwind-merge",description:"Tailwind 类名合并工具",license:"MIT"}),o.jsx(Er,{name:"class-variance-authority",description:"组件变体管理",license:"Apache-2.0"}),o.jsx(Er,{name:"date-fns",description:"现代化日期处理库",license:"MIT"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"动画效果"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"Framer Motion",description:"React 动画库",license:"MIT"}),o.jsx(Er,{name:"vaul",description:"抽屉组件动画",license:"MIT"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"后端框架"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"FastAPI",description:"现代化 Python Web 框架",license:"MIT"}),o.jsx(Er,{name:"Uvicorn",description:"ASGI 服务器",license:"BSD-3-Clause"}),o.jsx(Er,{name:"Pydantic",description:"数据验证库",license:"MIT"}),o.jsx(Er,{name:"python-multipart",description:"文件上传支持",license:"Apache-2.0"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"开发工具"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"TypeScript",description:"JavaScript 的超集",license:"Apache-2.0"}),o.jsx(Er,{name:"Vite",description:"下一代前端构建工具",license:"MIT"}),o.jsx(Er,{name:"ESLint",description:"JavaScript 代码检查工具",license:"MIT"}),o.jsx(Er,{name:"PostCSS",description:"CSS 转换工具",license:"MIT"})]})]})]})})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源许可"}),o.jsxs("div",{className:"space-y-3",children:[o.jsx("div",{className:"rounded-lg bg-primary/5 border border-primary/20 p-3 sm:p-4",children:o.jsxs("div",{className:"flex items-start gap-2 sm:gap-3",children:[o.jsx("div",{className:"flex-shrink-0 mt-0.5",children:o.jsx("div",{className:"rounded-md bg-primary/10 px-2 py-1",children:o.jsx("span",{className:"text-xs sm:text-sm font-bold text-primary",children:"GPLv3"})})}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("p",{className:"text-sm sm:text-base font-semibold text-foreground mb-1",children:"MaiBot WebUI"}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目采用 GNU General Public License v3.0 开源许可证。 您可以自由地使用、修改和分发本软件,但必须保持相同的开源许可。"})]})]})}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目依赖的所有开源库均遵循各自的开源许可证(MIT、Apache-2.0、BSD 等)。 感谢所有开源贡献者的无私奉献。"})]})]})]})}function Er({name:t,description:e,license:n}){return o.jsxs("div",{className:"flex items-start justify-between gap-2 rounded-lg border bg-muted/30 p-2.5 sm:p-3",children:[o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("p",{className:"font-medium text-foreground truncate",children:t}),o.jsx("p",{className:"text-muted-foreground text-xs mt-0.5",children:e})]}),o.jsx("span",{className:"inline-flex items-center rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-medium text-primary flex-shrink-0",children:n})]})}function A4({value:t,current:e,onChange:n,label:r,description:s}){const i=e===t;return o.jsxs("button",{onClick:()=>n(t),className:xe("relative rounded-lg border-2 p-3 sm:p-4 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",i?"border-primary bg-accent":"border-border"),children:[i&&o.jsx("div",{className:"absolute top-2 right-2 sm:top-3 sm:right-3 h-2 w-2 rounded-full bg-primary"}),o.jsxs("div",{className:"space-y-1",children:[o.jsx("div",{className:"text-sm sm:text-base font-medium",children:r}),o.jsx("div",{className:"text-[10px] sm:text-xs text-muted-foreground",children:s})]}),o.jsxs("div",{className:"mt-2 sm:mt-3 flex gap-1",children:[t==="light"&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-200"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-300"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-400"})]}),t==="dark"&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-700"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-800"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-900"})]}),t==="system"&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-200 to-slate-700"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-300 to-slate-800"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-400 to-slate-900"})]})]})]})}function ua({value:t,current:e,onChange:n,label:r,colorClass:s}){const i=e===t;return o.jsxs("button",{onClick:()=>n(t),className:xe("relative rounded-lg border-2 p-2 sm:p-3 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",i?"border-primary bg-accent":"border-border"),children:[i&&o.jsx("div",{className:"absolute top-1.5 right-1.5 sm:top-2 sm:right-2 h-1.5 w-1.5 sm:h-2 sm:w-2 rounded-full bg-primary"}),o.jsxs("div",{className:"flex flex-col items-center gap-1.5 sm:gap-2",children:[o.jsx("div",{className:xe("h-8 w-8 sm:h-10 sm:w-10 rounded-full",s)}),o.jsx("div",{className:"text-[10px] sm:text-xs font-medium text-center",children:r})]})]})}class lie{grad3;p;perm;constructor(e=0){this.grad3=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],this.p=[];for(let n=0;n<256;n++)this.p[n]=Math.floor(Math.random()*256);this.perm=[];for(let n=0;n<512;n++)this.perm[n]=this.p[n&255]}dot(e,n,r){return e[0]*n+e[1]*r}mix(e,n,r){return(1-r)*e+r*n}fade(e){return e*e*e*(e*(e*6-15)+10)}perlin2(e,n){const r=Math.floor(e)&255,s=Math.floor(n)&255;e-=Math.floor(e),n-=Math.floor(n);const i=this.fade(e),a=this.fade(n),l=this.perm[r]+s,c=this.perm[l],d=this.perm[l+1],h=this.perm[r+1]+s,m=this.perm[h],g=this.perm[h+1];return this.mix(this.mix(this.dot(this.grad3[c%12],e,n),this.dot(this.grad3[m%12],e-1,n),i),this.mix(this.dot(this.grad3[d%12],e,n-1),this.dot(this.grad3[g%12],e-1,n-1),i),a)}}function cie(){const t=b.useRef(null),e=b.useRef(null),n=b.useRef(void 0),r=b.useRef({mouse:{x:-10,y:0,lx:0,ly:0,sx:0,sy:0,v:0,vs:0,a:0,set:!1},lines:[],paths:[],noise:new lie(Math.random()),bounding:null});return b.useEffect(()=>{const s=e.current,i=t.current;if(!s||!i)return;const a=r.current,l=()=>{const w=s.getBoundingClientRect();a.bounding=w,i.style.width=`${w.width}px`,i.style.height=`${w.height}px`},c=()=>{if(!a.bounding)return;const{width:w,height:S}=a.bounding;a.lines=[],a.paths.forEach(P=>P.remove()),a.paths=[];const k=10,j=32,N=w+200,T=S+30,E=Math.ceil(N/k),_=Math.ceil(T/j),A=(w-k*E)/2,L=(S-j*_)/2;for(let P=0;P<=E;P++){const B=[];for(let U=0;U<=_;U++){const te={x:A+k*P,y:L+j*U,wave:{x:0,y:0},cursor:{x:0,y:0,vx:0,vy:0}};B.push(te)}const $=document.createElementNS("http://www.w3.org/2000/svg","path");i.appendChild($),a.paths.push($),a.lines.push(B)}},d=w=>{const{lines:S,mouse:k,noise:j}=a;S.forEach(N=>{N.forEach(T=>{const E=j.perlin2((T.x+w*.0125)*.002,(T.y+w*.005)*.0015)*12;T.wave.x=Math.cos(E)*32,T.wave.y=Math.sin(E)*16;const _=T.x-k.sx,A=T.y-k.sy,L=Math.hypot(_,A),P=Math.max(175,k.vs);if(L{const k={x:w.x+w.wave.x+(S?w.cursor.x:0),y:w.y+w.wave.y+(S?w.cursor.y:0)};return k.x=Math.round(k.x*10)/10,k.y=Math.round(k.y*10)/10,k},m=()=>{const{lines:w,paths:S}=a;w.forEach((k,j)=>{let N=h(k[0],!1),T=`M ${N.x} ${N.y}`;k.forEach((E,_)=>{const A=_===k.length-1;N=h(E,!A),T+=`L ${N.x} ${N.y}`}),S[j].setAttribute("d",T)})},g=w=>{const{mouse:S}=a;S.sx+=(S.x-S.sx)*.1,S.sy+=(S.y-S.sy)*.1;const k=S.x-S.lx,j=S.y-S.ly,N=Math.hypot(k,j);S.v=N,S.vs+=(N-S.vs)*.1,S.vs=Math.min(100,S.vs),S.lx=S.x,S.ly=S.y,S.a=Math.atan2(j,k),s&&(s.style.setProperty("--x",`${S.sx}px`),s.style.setProperty("--y",`${S.sy}px`)),d(w),m(),n.current=requestAnimationFrame(g)},x=w=>{if(!a.bounding)return;const{mouse:S}=a;S.x=w.pageX-a.bounding.left,S.y=w.pageY-a.bounding.top+window.scrollY,S.set||(S.sx=S.x,S.sy=S.y,S.lx=S.x,S.ly=S.y,S.set=!0)},y=()=>{l(),c()};return l(),c(),window.addEventListener("resize",y),window.addEventListener("mousemove",x),n.current=requestAnimationFrame(g),()=>{window.removeEventListener("resize",y),window.removeEventListener("mousemove",x),n.current&&cancelAnimationFrame(n.current)}},[]),o.jsxs("div",{ref:e,className:"waves-background",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflow:"hidden",pointerEvents:"none"},children:[o.jsx("div",{className:"waves-cursor",style:{position:"absolute",top:0,left:0,width:"0.5rem",height:"0.5rem",background:"hsl(var(--primary) / 0.3)",borderRadius:"50%",transform:"translate3d(calc(var(--x, -0.5rem) - 50%), calc(var(--y, 50%) - 50%), 0)",willChange:"transform",pointerEvents:"none"}}),o.jsx("svg",{ref:t,style:{display:"block",width:"100%",height:"100%"},children:o.jsx("style",{children:` path { fill: none; stroke: hsl(var(--primary) / 0.20); stroke-width: 1px; } - `})})]})}function Vse(){const t=Zi();b.useEffect(()=>{localStorage.getItem("access-token")||t({to:"/auth"})},[t])}function wB(){return!!localStorage.getItem("access-token")}function Use(){const[t,e]=b.useState(""),[n,r]=b.useState(!1),[s,i]=b.useState(""),a=Zi(),{enableWavesBackground:l,setEnableWavesBackground:c}=WL(),{theme:d,setTheme:h}=qj();b.useEffect(()=>{wB()&&a({to:"/"})},[a]);const g=d==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":d,x=()=>{h(g==="dark"?"light":"dark")},y=async w=>{if(w.preventDefault(),i(""),!t.trim()){i("请输入 Access Token");return}r(!0);try{const S=await fetch("/api/webui/auth/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t.trim()})}),k=await S.json();if(S.ok&&k.valid){localStorage.setItem("access-token",t.trim());const j=await fetch("/api/webui/setup/status",{method:"GET",headers:{Authorization:`Bearer ${t.trim()}`}}),N=await j.json();j.ok&&N.is_first_setup?a({to:"/setup"}):a({to:"/"})}else i(k.message||"Token 验证失败,请检查后重试")}catch(S){console.error("Token 验证错误:",S),i("连接服务器失败,请检查网络连接")}finally{r(!1)}};return o.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[l&&o.jsx(Qse,{}),o.jsxs(qt,{className:"relative z-10 w-full max-w-md shadow-2xl backdrop-blur-xl bg-card/80 border-border/50",children:[o.jsx("button",{onClick:x,className:"absolute right-4 top-4 rounded-lg p-2 hover:bg-accent transition-colors z-10 text-foreground",title:g==="dark"?"切换到浅色模式":"切换到深色模式",children:g==="dark"?o.jsx(Y3,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"}):o.jsx(K3,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"})}),o.jsxs(Fn,{className:"space-y-4 text-center",children:[o.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-2xl bg-primary/10",children:o.jsx(f9,{className:"h-8 w-8 text-primary",strokeWidth:2,fill:"none"})}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(qn,{className:"text-2xl font-bold",children:"欢迎使用 MaiBot"}),o.jsx(ts,{className:"text-base",children:"请输入您的 Access Token 以继续访问系统"})]})]}),o.jsx(Gn,{children:o.jsxs("form",{onSubmit:y,className:"space-y-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"token",className:"text-sm font-medium",children:"Access Token"}),o.jsxs("div",{className:"relative",children:[o.jsx(fI,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground",strokeWidth:2,fill:"none"}),o.jsx(ze,{id:"token",type:"password",placeholder:"请输入您的 Access Token",value:t,onChange:w=>e(w.target.value),className:ve("pl-10",s&&"border-red-500 focus-visible:ring-red-500"),disabled:n,autoFocus:!0,autoComplete:"off"})]})]}),s&&o.jsxs("div",{className:"flex items-center gap-2 rounded-md bg-red-50 p-3 text-sm text-red-600 dark:bg-red-950/50 dark:text-red-400",children:[o.jsx(Vc,{className:"h-4 w-4 flex-shrink-0",strokeWidth:2,fill:"none"}),o.jsx("span",{children:s})]}),o.jsx(he,{type:"submit",className:"w-full",disabled:n,children:n?o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent"}),"验证中..."]}):"验证并进入"}),o.jsxs(Dr,{children:[o.jsx(Sf,{asChild:!0,children:o.jsxs("button",{className:"w-full text-center text-sm text-primary hover:text-primary/80 transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[o.jsx(qy,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我没有 Token,我该去哪里获得 Token?"]})}),o.jsxs(Sr,{className:"sm:max-w-md",children:[o.jsxs(kr,{children:[o.jsxs(Or,{className:"flex items-center gap-2",children:[o.jsx(f9,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"如何获取 Access Token"]}),o.jsx(ss,{children:"Access Token 是访问 MaiBot WebUI 的唯一凭证,请按以下方式获取"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Cee,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),o.jsxs("div",{className:"flex-1 space-y-2",children:[o.jsx("h4",{className:"font-semibold text-sm",children:"方式一:查看启动日志"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"在 MaiBot 启动时,控制台会显示 WebUI Access Token。"}),o.jsxs("div",{className:"rounded bg-background p-2 font-mono text-xs",children:[o.jsx("p",{className:"text-muted-foreground",children:"🔑 WebUI Access Token: abc123..."}),o.jsx("p",{className:"text-muted-foreground",children:"💡 请使用此 Token 登录 WebUI"})]})]})]})}),o.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Pl,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),o.jsxs("div",{className:"flex-1 space-y-2",children:[o.jsx("h4",{className:"font-semibold text-sm",children:"方式二:查看配置文件"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"Token 保存在项目根目录的配置文件中:"}),o.jsx("div",{className:"rounded bg-background p-2 font-mono text-xs break-all",children:o.jsx("code",{className:"text-primary",children:"data/webui.json"})}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:["打开此文件,复制 ",o.jsx("code",{className:"px-1 py-0.5 bg-background rounded",children:"access_token"})," 字段的值"]})]})]})}),o.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Vc,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),o.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[o.jsx("p",{className:"font-semibold",children:"安全提示"}),o.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[o.jsx("li",{children:"请妥善保管您的 Token,不要泄露给他人"}),o.jsx("li",{children:"如需重置 Token,请在登录后前往系统设置"})]})]})]})})]})]})]}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs("button",{className:"w-full text-center text-sm text-muted-foreground hover:text-foreground transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[o.jsx(X3,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我觉得这个界面很卡怎么办?"]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsxs(En,{className:"flex items-center gap-2",children:[o.jsx(X3,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"关闭背景动画"]}),o.jsx(_n,{children:"背景动画可能会在低性能设备上造成卡顿。关闭动画可以显著提升界面流畅度。"})]}),o.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:o.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭动画后,背景将变为纯色,但不影响任何功能的使用。您可以随时在系统设置中重新开启动画。"})}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>c(!1),children:"关闭动画"})]})]})]})]})})]}),o.jsx("div",{className:"absolute bottom-4 left-0 right-0 text-center text-xs text-muted-foreground",children:o.jsx("p",{children:bse})})]})}const Ar=b.forwardRef(({className:t,...e},n)=>o.jsx("textarea",{className:ve("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",t),ref:n,...e}));Ar.displayName="Textarea";var Wse=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Gse=Wse.reduce((t,e)=>{const n=vj(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...l}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(c,{...l,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),Xse="Separator",K9="horizontal",Yse=["horizontal","vertical"],SB=b.forwardRef((t,e)=>{const{decorative:n,orientation:r=K9,...s}=t,i=Kse(r)?r:K9,l=n?{role:"none"}:{"aria-orientation":i==="vertical"?i:void 0,role:"separator"};return o.jsx(Gse.div,{"data-orientation":i,...l,...s,ref:e})});SB.displayName=Xse;function Kse(t){return Yse.includes(t)}var kB=SB;const P0=b.forwardRef(({className:t,orientation:e="horizontal",decorative:n=!0,...r},s)=>o.jsx(kB,{ref:s,decorative:n,orientation:e,className:ve("shrink-0 bg-border",e==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",t),...r}));P0.displayName=kB.displayName;const Zse=wf("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function Xn({className:t,variant:e,...n}){return o.jsx("div",{className:ve(Zse({variant:e}),t),...n})}function Jse({config:t,onChange:e}){const n=s=>{s.trim()&&!t.alias_names.includes(s.trim())&&e({...t,alias_names:[...t.alias_names,s.trim()]})},r=s=>{e({...t,alias_names:t.alias_names.filter((i,a)=>a!==s)})};return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"qq_account",children:"QQ账号 *"}),o.jsx(ze,{id:"qq_account",type:"number",placeholder:"请输入机器人的QQ账号",value:t.qq_account||"",onChange:s=>e({...t,qq_account:Number(s.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人登录使用的QQ账号"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"nickname",children:"昵称 *"}),o.jsx(ze,{id:"nickname",placeholder:"请输入机器人的昵称",value:t.nickname,onChange:s=>e({...t,nickname:s.target.value})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的主要称呼名称"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{children:"别名"}),o.jsx("div",{className:"flex flex-wrap gap-2 mb-2",children:t.alias_names.map((s,i)=>o.jsxs(Xn,{variant:"secondary",className:"gap-1",children:[s,o.jsx("button",{type:"button",onClick:()=>r(i),className:"ml-1 hover:text-destructive",children:o.jsx(Tp,{className:"h-3 w-3"})})]},i))}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{id:"alias_input",placeholder:"输入别名后按回车添加",onKeyPress:s=>{s.key==="Enter"&&(n(s.target.value),s.target.value="")}}),o.jsx(he,{type:"button",variant:"outline",onClick:()=>{const s=document.getElementById("alias_input");s&&(n(s.value),s.value="")},children:"添加"})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的其他称呼,可以添加多个"})]})]})}function eie({config:t,onChange:e}){return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"personality",children:"人格特征 *"}),o.jsx(Ar,{id:"personality",placeholder:"描述机器人的人格特质和身份特征(建议120字以内)",value:t.personality,onChange:n=>e({...t,personality:n.target.value}),rows:3}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:是一个女大学生,现在在读大二,会刷贴吧"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"reply_style",children:"表达风格 *"}),o.jsx(Ar,{id:"reply_style",placeholder:"描述机器人说话的表达风格、表达习惯",value:t.reply_style,onChange:n=>e({...t,reply_style:n.target.value}),rows:3}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:回复平淡一些,简短一些,说中文,参考贴吧、知乎和微博的回复风格"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"interest",children:"兴趣 *"}),o.jsx(Ar,{id:"interest",placeholder:"描述机器人感兴趣的话题",value:t.interest,onChange:n=>e({...t,interest:n.target.value}),rows:2}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"会影响机器人对什么话题进行回复"})]}),o.jsx(P0,{}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"plan_style",children:"群聊说话规则 *"}),o.jsx(Ar,{id:"plan_style",placeholder:"机器人在群聊中的行为风格和规则",value:t.plan_style,onChange:n=>e({...t,plan_style:n.target.value}),rows:4}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在群聊中如何行动,例如回复频率、条件等"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"private_plan_style",children:"私聊说话规则 *"}),o.jsx(Ar,{id:"private_plan_style",placeholder:"机器人在私聊中的行为风格和规则",value:t.private_plan_style,onChange:n=>e({...t,private_plan_style:n.target.value}),rows:3}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在私聊中的行为方式"})]})]})}function tie({config:t,onChange:e}){return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(de,{htmlFor:"emoji_chance",children:"表情包激活概率"}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:[(t.emoji_chance*100).toFixed(0),"%"]})]}),o.jsx(ze,{id:"emoji_chance",type:"range",min:"0",max:"1",step:"0.1",value:t.emoji_chance,onChange:n=>e({...t,emoji_chance:Number(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人发送表情包的概率"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"max_reg_num",children:"最大表情包数量"}),o.jsx(ze,{id:"max_reg_num",type:"number",min:"1",max:"200",value:t.max_reg_num,onChange:n=>e({...t,max_reg_num:Number(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人最多保存的表情包数量"})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(de,{htmlFor:"do_replace",children:"达到最大数量时替换"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"开启后会删除旧表情包,关闭则不再收集新表情包"})]}),o.jsx(Bt,{id:"do_replace",checked:t.do_replace,onCheckedChange:n=>e({...t,do_replace:n})})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),o.jsx(ze,{id:"check_interval",type:"number",min:"1",max:"120",value:t.check_interval,onChange:n=>e({...t,check_interval:Number(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包注册、破损、删除的时间间隔"})]}),o.jsx(P0,{}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(de,{htmlFor:"steal_emoji",children:"偷取表情包"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人将一些表情包据为己有"})]}),o.jsx(Bt,{id:"steal_emoji",checked:t.steal_emoji,onCheckedChange:n=>e({...t,steal_emoji:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(de,{htmlFor:"content_filtration",children:"启用表情包过滤"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"只保存符合要求的表情包"})]}),o.jsx(Bt,{id:"content_filtration",checked:t.content_filtration,onCheckedChange:n=>e({...t,content_filtration:n})})]}),t.content_filtration&&o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"filtration_prompt",children:"过滤要求"}),o.jsx(ze,{id:"filtration_prompt",placeholder:"例如:符合公序良俗",value:t.filtration_prompt,onChange:n=>e({...t,filtration_prompt:n.target.value})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"描述表情包应该符合的要求"})]})]})}function nie({config:t,onChange:e}){return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(de,{htmlFor:"enable_tool",children:"启用工具系统"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人使用各种工具增强功能"})]}),o.jsx(Bt,{id:"enable_tool",checked:t.enable_tool,onCheckedChange:n=>e({...t,enable_tool:n})})]}),o.jsx(P0,{}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(de,{htmlFor:"enable_mood",children:"启用情绪系统"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"让机器人具有情绪变化能力"})]}),o.jsx(Bt,{id:"enable_mood",checked:t.enable_mood,onCheckedChange:n=>e({...t,enable_mood:n})})]}),t.enable_mood&&o.jsxs("div",{className:"ml-6 space-y-6 border-l-2 border-primary/20 pl-6",children:[o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"mood_update_threshold",children:"情绪更新阈值"}),o.jsx(ze,{id:"mood_update_threshold",type:"number",min:"0.1",max:"10",step:"0.1",value:t.mood_update_threshold||1,onChange:n=>e({...t,mood_update_threshold:Number(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"值越高,情绪更新越慢"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"emotion_style",children:"情感特征"}),o.jsx(Ar,{id:"emotion_style",placeholder:"描述情绪的变化情况,例如:情绪较为稳定,但遭遇特定事件时起伏较大",value:t.emotion_style||"",onChange:n=>e({...t,emotion_style:n.target.value}),rows:2}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"影响机器人的情绪变化方式"})]})]}),o.jsx(P0,{}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(de,{htmlFor:"all_global",children:"启用全局黑话模式"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人学习和使用群组黑话"})]}),o.jsx(Bt,{id:"all_global",checked:t.all_global,onCheckedChange:n=>e({...t,all_global:n})})]})]})}function rie({config:t,onChange:e}){const[n,r]=b.useState(!1);return o.jsxs("div",{className:"space-y-6",children:[o.jsx("div",{className:"rounded-lg bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-4",children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx("div",{className:"mt-0.5",children:o.jsx("svg",{className:"h-5 w-5 text-blue-600 dark:text-blue-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:o.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),o.jsxs("div",{className:"flex-1 text-sm",children:[o.jsx("p",{className:"font-medium text-blue-900 dark:text-blue-100 mb-1",children:"关于硅基流动 (SiliconFlow)"}),o.jsx("p",{className:"text-blue-700 dark:text-blue-300 mb-2",children:"硅基流动提供了完整的模型覆盖,包括 DeepSeek V3、Qwen、视觉模型、语音识别和嵌入模型。 只需一个 API Key 即可使用麦麦的所有功能!"}),o.jsxs("a",{href:"https://cloud.siliconflow.cn",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-blue-600 dark:text-blue-400 hover:underline font-medium",children:["前往硅基流动获取 API Key",o.jsx(Mh,{className:"h-3 w-3"})]})]})]})}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(de,{htmlFor:"siliconflow_api_key",children:"SiliconFlow API Key *"}),o.jsxs("div",{className:"relative",children:[o.jsx(ze,{id:"siliconflow_api_key",type:n?"text":"password",placeholder:"sk-...",value:t.api_key,onChange:s=>e({api_key:s.target.value}),className:"font-mono pr-10"}),o.jsx(he,{type:"button",variant:"ghost",size:"sm",className:"absolute right-0 top-0 h-full px-3 hover:bg-transparent",onClick:()=>r(!n),children:n?o.jsx(Ev,{className:"h-4 w-4 text-muted-foreground"}):o.jsx(Ea,{className:"h-4 w-4 text-muted-foreground"})})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"请输入您的硅基流动 API 密钥。获取后,麦麦将自动配置所有必需的模型。"})]}),o.jsxs("div",{className:"rounded-lg bg-muted/50 p-4 text-sm space-y-2",children:[o.jsx("p",{className:"font-medium",children:"将自动配置以下模型:"}),o.jsxs("ul",{className:"list-disc list-inside space-y-1 text-muted-foreground ml-2",children:[o.jsx("li",{children:"DeepSeek V3 - 主要对话和工具模型"}),o.jsx("li",{children:"Qwen3 30B - 高频小任务和工具调用"}),o.jsx("li",{children:"Qwen3 VL 30B - 图像识别"}),o.jsx("li",{children:"SenseVoice - 语音识别"}),o.jsx("li",{children:"BGE-M3 - 文本嵌入"}),o.jsx("li",{children:"知识库相关模型 (LPMM)"})]})]}),o.jsx("div",{className:"rounded-lg border border-amber-200 dark:border-amber-800 bg-amber-50 dark:bg-amber-950/30 p-4",children:o.jsxs("p",{className:"text-sm text-amber-900 dark:text-amber-100",children:[o.jsx("span",{className:"font-medium",children:"💡 提示:"}),'完成向导后,您可以在"系统设置 → 模型配置"中添加更多 API 提供商和模型。']})})]})}async function St(t,e){const n=await fetch(t,e);if(n.status===401)throw localStorage.removeItem("access-token"),window.location.href="/auth",new Error("认证失败,请重新登录");return n}function Dt(){return{"Content-Type":"application/json",Authorization:`Bearer ${localStorage.getItem("access-token")}`}}async function sie(){const t=await St("/api/webui/config/bot",{method:"GET",headers:Dt()});if(!t.ok)throw new Error("读取Bot配置失败");const n=(await t.json()).config.bot||{};return{qq_account:n.qq_account||0,nickname:n.nickname||"",alias_names:n.alias_names||[]}}async function iie(){const t=await St("/api/webui/config/bot",{method:"GET",headers:Dt()});if(!t.ok)throw new Error("读取人格配置失败");const n=(await t.json()).config.personality||{};return{personality:n.personality||"",reply_style:n.reply_style||"",interest:n.interest||"",plan_style:n.plan_style||"",private_plan_style:n.private_plan_style||""}}async function aie(){const t=await St("/api/webui/config/bot",{method:"GET",headers:Dt()});if(!t.ok)throw new Error("读取表情包配置失败");const n=(await t.json()).config.emoji||{};return{emoji_chance:n.emoji_chance??.4,max_reg_num:n.max_reg_num??40,do_replace:n.do_replace??!0,check_interval:n.check_interval??10,steal_emoji:n.steal_emoji??!0,content_filtration:n.content_filtration??!1,filtration_prompt:n.filtration_prompt||""}}async function oie(){const t=await St("/api/webui/config/bot",{method:"GET",headers:Dt()});if(!t.ok)throw new Error("读取其他配置失败");const n=(await t.json()).config,r=n.tool||{},s=n.mood||{},i=n.jargon||{};return{enable_tool:r.enable_tool??!0,enable_mood:s.enable_mood??!1,mood_update_threshold:s.mood_update_threshold,emotion_style:s.emotion_style,all_global:i.all_global??!0}}async function lie(){const t=await St("/api/webui/config/model",{method:"GET",headers:Dt()});if(!t.ok)throw new Error("读取模型配置失败");return{api_key:((await t.json()).config.api_providers||[]).find(i=>i.name==="SiliconFlow")?.api_key||""}}async function cie(t){const e=await St("/api/webui/config/bot/section/bot",{method:"POST",headers:Dt(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"保存Bot基础配置失败")}return await e.json()}async function uie(t){const e=await St("/api/webui/config/bot/section/personality",{method:"POST",headers:Dt(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"保存人格配置失败")}return await e.json()}async function die(t){const e=await St("/api/webui/config/bot/section/emoji",{method:"POST",headers:Dt(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"保存表情包配置失败")}return await e.json()}async function hie(t){const e=[];e.push(St("/api/webui/config/bot/section/tool",{method:"POST",headers:Dt(),body:JSON.stringify({enable_tool:t.enable_tool})})),e.push(St("/api/webui/config/bot/section/jargon",{method:"POST",headers:Dt(),body:JSON.stringify({all_global:t.all_global})}));const n={enable_mood:t.enable_mood};t.enable_mood&&(n.mood_update_threshold=t.mood_update_threshold||1,n.emotion_style=t.emotion_style||""),e.push(St("/api/webui/config/bot/section/mood",{method:"POST",headers:Dt(),body:JSON.stringify(n)}));const r=await Promise.all(e);for(const s of r)if(!s.ok){const i=await s.json();throw new Error(i.detail||"保存其他配置失败")}return{success:!0}}async function fie(t){const e=await St("/api/webui/config/model",{method:"GET",headers:Dt()});if(!e.ok)throw new Error("读取模型配置失败");const r=(await e.json()).config,s=r.api_providers||[],i=s.findIndex(c=>c.name==="SiliconFlow");i>=0?s[i]={...s[i],api_key:t.api_key}:s.push({name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",api_key:t.api_key,client_type:"openai",max_retry:3,timeout:120,retry_interval:5});const a={...r,api_providers:s},l=await St("/api/webui/config/model",{method:"POST",headers:Dt(),body:JSON.stringify(a)});if(!l.ok){const c=await l.json();throw new Error(c.detail||"保存模型配置失败")}return await l.json()}async function Z9(){const t=localStorage.getItem("access-token"),e=await St("/api/webui/setup/complete",{method:"POST",headers:{Authorization:`Bearer ${t}`}});if(!e.ok){const n=await e.json();throw new Error(n.message||"标记配置完成失败")}return await e.json()}async function Jy(){const t=await St("/api/webui/system/restart",{method:"POST",headers:Dt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"重启失败")}return await t.json()}async function mie(){const t=await St("/api/webui/system/status",{method:"GET",headers:Dt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取状态失败")}return await t.json()}function pie(){const t=Zi(),{toast:e}=fs(),[n,r]=b.useState(0),[s,i]=b.useState(!1),[a,l]=b.useState(!1),[c,d]=b.useState(!0),[h,m]=b.useState({qq_account:0,nickname:"",alias_names:[]}),[g,x]=b.useState({personality:"是一个女大学生,现在在读大二,会刷贴吧。",reply_style:"请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景。可以参考贴吧,知乎和微博的回复风格。",interest:"对技术相关话题,游戏和动漫相关话题感兴趣,也对日常话题感兴趣,不喜欢太过沉重严肃的话题",plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 + `})})]})}function uie(){const t=Zi();b.useEffect(()=>{localStorage.getItem("access-token")||t({to:"/auth"})},[t])}function CB(){return!!localStorage.getItem("access-token")}function die(){const[t,e]=b.useState(""),[n,r]=b.useState(!1),[s,i]=b.useState(""),a=Zi(),{enableWavesBackground:l,setEnableWavesBackground:c}=JL(),{theme:d,setTheme:h}=Vj();b.useEffect(()=>{CB()&&a({to:"/"})},[a]);const g=d==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":d,x=()=>{h(g==="dark"?"light":"dark")},y=async w=>{if(w.preventDefault(),i(""),!t.trim()){i("请输入 Access Token");return}r(!0);try{const S=await fetch("/api/webui/auth/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t.trim()})}),k=await S.json();if(S.ok&&k.valid){localStorage.setItem("access-token",t.trim());const j=await fetch("/api/webui/setup/status",{method:"GET",headers:{Authorization:`Bearer ${t.trim()}`}}),N=await j.json();j.ok&&N.is_first_setup?a({to:"/setup"}):a({to:"/"})}else i(k.message||"Token 验证失败,请检查后重试")}catch(S){console.error("Token 验证错误:",S),i("连接服务器失败,请检查网络连接")}finally{r(!1)}};return o.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[l&&o.jsx(cie,{}),o.jsxs(qt,{className:"relative z-10 w-full max-w-md shadow-2xl backdrop-blur-xl bg-card/80 border-border/50",children:[o.jsx("button",{onClick:x,className:"absolute right-4 top-4 rounded-lg p-2 hover:bg-accent transition-colors z-10 text-foreground",title:g==="dark"?"切换到浅色模式":"切换到深色模式",children:g==="dark"?o.jsx(nk,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"}):o.jsx(rk,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"})}),o.jsxs(Fn,{className:"space-y-4 text-center",children:[o.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-2xl bg-primary/10",children:o.jsx(y9,{className:"h-8 w-8 text-primary",strokeWidth:2,fill:"none"})}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(qn,{className:"text-2xl font-bold",children:"欢迎使用 MaiBot"}),o.jsx(ts,{className:"text-base",children:"请输入您的 Access Token 以继续访问系统"})]})]}),o.jsx(Gn,{children:o.jsxs("form",{onSubmit:y,className:"space-y-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"token",className:"text-sm font-medium",children:"Access Token"}),o.jsxs("div",{className:"relative",children:[o.jsx(bI,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground",strokeWidth:2,fill:"none"}),o.jsx(ze,{id:"token",type:"password",placeholder:"请输入您的 Access Token",value:t,onChange:w=>e(w.target.value),className:xe("pl-10",s&&"border-red-500 focus-visible:ring-red-500"),disabled:n,autoFocus:!0,autoComplete:"off"})]})]}),s&&o.jsxs("div",{className:"flex items-center gap-2 rounded-md bg-red-50 p-3 text-sm text-red-600 dark:bg-red-950/50 dark:text-red-400",children:[o.jsx(Uc,{className:"h-4 w-4 flex-shrink-0",strokeWidth:2,fill:"none"}),o.jsx("span",{children:s})]}),o.jsx(de,{type:"submit",className:"w-full",disabled:n,children:n?o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent"}),"验证中..."]}):"验证并进入"}),o.jsxs(Dr,{children:[o.jsx(Of,{asChild:!0,children:o.jsxs("button",{className:"w-full text-center text-sm text-primary hover:text-primary/80 transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[o.jsx(Wy,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我没有 Token,我该去哪里获得 Token?"]})}),o.jsxs(Sr,{className:"sm:max-w-md",children:[o.jsxs(kr,{children:[o.jsxs(Or,{className:"flex items-center gap-2",children:[o.jsx(y9,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"如何获取 Access Token"]}),o.jsx(ss,{children:"Access Token 是访问 MaiBot WebUI 的唯一凭证,请按以下方式获取"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Hee,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),o.jsxs("div",{className:"flex-1 space-y-2",children:[o.jsx("h4",{className:"font-semibold text-sm",children:"方式一:查看启动日志"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"在 MaiBot 启动时,控制台会显示 WebUI Access Token。"}),o.jsxs("div",{className:"rounded bg-background p-2 font-mono text-xs",children:[o.jsx("p",{className:"text-muted-foreground",children:"🔑 WebUI Access Token: abc123..."}),o.jsx("p",{className:"text-muted-foreground",children:"💡 请使用此 Token 登录 WebUI"})]})]})]})}),o.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(zl,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),o.jsxs("div",{className:"flex-1 space-y-2",children:[o.jsx("h4",{className:"font-semibold text-sm",children:"方式二:查看配置文件"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"Token 保存在项目根目录的配置文件中:"}),o.jsx("div",{className:"rounded bg-background p-2 font-mono text-xs break-all",children:o.jsx("code",{className:"text-primary",children:"data/webui.json"})}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:["打开此文件,复制 ",o.jsx("code",{className:"px-1 py-0.5 bg-background rounded",children:"access_token"})," 字段的值"]})]})]})}),o.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Uc,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),o.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[o.jsx("p",{className:"font-semibold",children:"安全提示"}),o.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[o.jsx("li",{children:"请妥善保管您的 Token,不要泄露给他人"}),o.jsx("li",{children:"如需重置 Token,请在登录后前往系统设置"})]})]})]})})]})]})]}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs("button",{className:"w-full text-center text-sm text-muted-foreground hover:text-foreground transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[o.jsx(tk,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我觉得这个界面很卡怎么办?"]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsxs(En,{className:"flex items-center gap-2",children:[o.jsx(tk,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"关闭背景动画"]}),o.jsx(_n,{children:"背景动画可能会在低性能设备上造成卡顿。关闭动画可以显著提升界面流畅度。"})]}),o.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:o.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭动画后,背景将变为纯色,但不影响任何功能的使用。您可以随时在系统设置中重新开启动画。"})}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>c(!1),children:"关闭动画"})]})]})]})]})})]}),o.jsx("div",{className:"absolute bottom-4 left-0 right-0 text-center text-xs text-muted-foreground",children:o.jsx("p",{children:Bse})})]})}const Mr=b.forwardRef(({className:t,...e},n)=>o.jsx("textarea",{className:xe("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",t),ref:n,...e}));Mr.displayName="Textarea";var hie=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],fie=hie.reduce((t,e)=>{const n=Fy(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...l}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(c,{...l,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),mie="Separator",rE="horizontal",pie=["horizontal","vertical"],TB=b.forwardRef((t,e)=>{const{decorative:n,orientation:r=rE,...s}=t,i=gie(r)?r:rE,l=n?{role:"none"}:{"aria-orientation":i==="vertical"?i:void 0,role:"separator"};return o.jsx(fie.div,{"data-orientation":i,...l,...s,ref:e})});TB.displayName=mie;function gie(t){return pie.includes(t)}var EB=TB;const L0=b.forwardRef(({className:t,orientation:e="horizontal",decorative:n=!0,...r},s)=>o.jsx(EB,{ref:s,decorative:n,orientation:e,className:xe("shrink-0 bg-border",e==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",t),...r}));L0.displayName=EB.displayName;const xie=kf("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function Xn({className:t,variant:e,...n}){return o.jsx("div",{className:xe(xie({variant:e}),t),...n})}function vie({config:t,onChange:e}){const n=s=>{s.trim()&&!t.alias_names.includes(s.trim())&&e({...t,alias_names:[...t.alias_names,s.trim()]})},r=s=>{e({...t,alias_names:t.alias_names.filter((i,a)=>a!==s)})};return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"qq_account",children:"QQ账号 *"}),o.jsx(ze,{id:"qq_account",type:"number",placeholder:"请输入机器人的QQ账号",value:t.qq_account||"",onChange:s=>e({...t,qq_account:Number(s.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人登录使用的QQ账号"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"nickname",children:"昵称 *"}),o.jsx(ze,{id:"nickname",placeholder:"请输入机器人的昵称",value:t.nickname,onChange:s=>e({...t,nickname:s.target.value})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的主要称呼名称"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{children:"别名"}),o.jsx("div",{className:"flex flex-wrap gap-2 mb-2",children:t.alias_names.map((s,i)=>o.jsxs(Xn,{variant:"secondary",className:"gap-1",children:[s,o.jsx("button",{type:"button",onClick:()=>r(i),className:"ml-1 hover:text-destructive",children:o.jsx(_p,{className:"h-3 w-3"})})]},i))}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{id:"alias_input",placeholder:"输入别名后按回车添加",onKeyPress:s=>{s.key==="Enter"&&(n(s.target.value),s.target.value="")}}),o.jsx(de,{type:"button",variant:"outline",onClick:()=>{const s=document.getElementById("alias_input");s&&(n(s.value),s.value="")},children:"添加"})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的其他称呼,可以添加多个"})]})]})}function yie({config:t,onChange:e}){return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"personality",children:"人格特征 *"}),o.jsx(Mr,{id:"personality",placeholder:"描述机器人的人格特质和身份特征(建议120字以内)",value:t.personality,onChange:n=>e({...t,personality:n.target.value}),rows:3}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:是一个女大学生,现在在读大二,会刷贴吧"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"reply_style",children:"表达风格 *"}),o.jsx(Mr,{id:"reply_style",placeholder:"描述机器人说话的表达风格、表达习惯",value:t.reply_style,onChange:n=>e({...t,reply_style:n.target.value}),rows:3}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:回复平淡一些,简短一些,说中文,参考贴吧、知乎和微博的回复风格"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"interest",children:"兴趣 *"}),o.jsx(Mr,{id:"interest",placeholder:"描述机器人感兴趣的话题",value:t.interest,onChange:n=>e({...t,interest:n.target.value}),rows:2}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"会影响机器人对什么话题进行回复"})]}),o.jsx(L0,{}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"plan_style",children:"群聊说话规则 *"}),o.jsx(Mr,{id:"plan_style",placeholder:"机器人在群聊中的行为风格和规则",value:t.plan_style,onChange:n=>e({...t,plan_style:n.target.value}),rows:4}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在群聊中如何行动,例如回复频率、条件等"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"private_plan_style",children:"私聊说话规则 *"}),o.jsx(Mr,{id:"private_plan_style",placeholder:"机器人在私聊中的行为风格和规则",value:t.private_plan_style,onChange:n=>e({...t,private_plan_style:n.target.value}),rows:3}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在私聊中的行为方式"})]})]})}function bie({config:t,onChange:e}){return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{htmlFor:"emoji_chance",children:"表情包激活概率"}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:[(t.emoji_chance*100).toFixed(0),"%"]})]}),o.jsx(ze,{id:"emoji_chance",type:"range",min:"0",max:"1",step:"0.1",value:t.emoji_chance,onChange:n=>e({...t,emoji_chance:Number(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人发送表情包的概率"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"max_reg_num",children:"最大表情包数量"}),o.jsx(ze,{id:"max_reg_num",type:"number",min:"1",max:"200",value:t.max_reg_num,onChange:n=>e({...t,max_reg_num:Number(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人最多保存的表情包数量"})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(he,{htmlFor:"do_replace",children:"达到最大数量时替换"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"开启后会删除旧表情包,关闭则不再收集新表情包"})]}),o.jsx(Bt,{id:"do_replace",checked:t.do_replace,onCheckedChange:n=>e({...t,do_replace:n})})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),o.jsx(ze,{id:"check_interval",type:"number",min:"1",max:"120",value:t.check_interval,onChange:n=>e({...t,check_interval:Number(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包注册、破损、删除的时间间隔"})]}),o.jsx(L0,{}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(he,{htmlFor:"steal_emoji",children:"偷取表情包"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人将一些表情包据为己有"})]}),o.jsx(Bt,{id:"steal_emoji",checked:t.steal_emoji,onCheckedChange:n=>e({...t,steal_emoji:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(he,{htmlFor:"content_filtration",children:"启用表情包过滤"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"只保存符合要求的表情包"})]}),o.jsx(Bt,{id:"content_filtration",checked:t.content_filtration,onCheckedChange:n=>e({...t,content_filtration:n})})]}),t.content_filtration&&o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"filtration_prompt",children:"过滤要求"}),o.jsx(ze,{id:"filtration_prompt",placeholder:"例如:符合公序良俗",value:t.filtration_prompt,onChange:n=>e({...t,filtration_prompt:n.target.value})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"描述表情包应该符合的要求"})]})]})}function wie({config:t,onChange:e}){return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(he,{htmlFor:"enable_tool",children:"启用工具系统"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人使用各种工具增强功能"})]}),o.jsx(Bt,{id:"enable_tool",checked:t.enable_tool,onCheckedChange:n=>e({...t,enable_tool:n})})]}),o.jsx(L0,{}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(he,{htmlFor:"enable_mood",children:"启用情绪系统"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"让机器人具有情绪变化能力"})]}),o.jsx(Bt,{id:"enable_mood",checked:t.enable_mood,onCheckedChange:n=>e({...t,enable_mood:n})})]}),t.enable_mood&&o.jsxs("div",{className:"ml-6 space-y-6 border-l-2 border-primary/20 pl-6",children:[o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"mood_update_threshold",children:"情绪更新阈值"}),o.jsx(ze,{id:"mood_update_threshold",type:"number",min:"0.1",max:"10",step:"0.1",value:t.mood_update_threshold||1,onChange:n=>e({...t,mood_update_threshold:Number(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"值越高,情绪更新越慢"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"emotion_style",children:"情感特征"}),o.jsx(Mr,{id:"emotion_style",placeholder:"描述情绪的变化情况,例如:情绪较为稳定,但遭遇特定事件时起伏较大",value:t.emotion_style||"",onChange:n=>e({...t,emotion_style:n.target.value}),rows:2}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"影响机器人的情绪变化方式"})]})]}),o.jsx(L0,{}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(he,{htmlFor:"all_global",children:"启用全局黑话模式"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人学习和使用群组黑话"})]}),o.jsx(Bt,{id:"all_global",checked:t.all_global,onCheckedChange:n=>e({...t,all_global:n})})]})]})}function Sie({config:t,onChange:e}){const[n,r]=b.useState(!1);return o.jsxs("div",{className:"space-y-6",children:[o.jsx("div",{className:"rounded-lg bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-4",children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx("div",{className:"mt-0.5",children:o.jsx("svg",{className:"h-5 w-5 text-blue-600 dark:text-blue-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:o.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),o.jsxs("div",{className:"flex-1 text-sm",children:[o.jsx("p",{className:"font-medium text-blue-900 dark:text-blue-100 mb-1",children:"关于硅基流动 (SiliconFlow)"}),o.jsx("p",{className:"text-blue-700 dark:text-blue-300 mb-2",children:"硅基流动提供了完整的模型覆盖,包括 DeepSeek V3、Qwen、视觉模型、语音识别和嵌入模型。 只需一个 API Key 即可使用麦麦的所有功能!"}),o.jsxs("a",{href:"https://cloud.siliconflow.cn",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-blue-600 dark:text-blue-400 hover:underline font-medium",children:["前往硅基流动获取 API Key",o.jsx(Ah,{className:"h-3 w-3"})]})]})]})}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"siliconflow_api_key",children:"SiliconFlow API Key *"}),o.jsxs("div",{className:"relative",children:[o.jsx(ze,{id:"siliconflow_api_key",type:n?"text":"password",placeholder:"sk-...",value:t.api_key,onChange:s=>e({api_key:s.target.value}),className:"font-mono pr-10"}),o.jsx(de,{type:"button",variant:"ghost",size:"sm",className:"absolute right-0 top-0 h-full px-3 hover:bg-transparent",onClick:()=>r(!n),children:n?o.jsx(Rv,{className:"h-4 w-4 text-muted-foreground"}):o.jsx(Ea,{className:"h-4 w-4 text-muted-foreground"})})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"请输入您的硅基流动 API 密钥。获取后,麦麦将自动配置所有必需的模型。"})]}),o.jsxs("div",{className:"rounded-lg bg-muted/50 p-4 text-sm space-y-2",children:[o.jsx("p",{className:"font-medium",children:"将自动配置以下模型:"}),o.jsxs("ul",{className:"list-disc list-inside space-y-1 text-muted-foreground ml-2",children:[o.jsx("li",{children:"DeepSeek V3 - 主要对话和工具模型"}),o.jsx("li",{children:"Qwen3 30B - 高频小任务和工具调用"}),o.jsx("li",{children:"Qwen3 VL 30B - 图像识别"}),o.jsx("li",{children:"SenseVoice - 语音识别"}),o.jsx("li",{children:"BGE-M3 - 文本嵌入"}),o.jsx("li",{children:"知识库相关模型 (LPMM)"})]})]}),o.jsx("div",{className:"rounded-lg border border-amber-200 dark:border-amber-800 bg-amber-50 dark:bg-amber-950/30 p-4",children:o.jsxs("p",{className:"text-sm text-amber-900 dark:text-amber-100",children:[o.jsx("span",{className:"font-medium",children:"💡 提示:"}),'完成向导后,您可以在"系统设置 → 模型配置"中添加更多 API 提供商和模型。']})})]})}async function St(t,e){const n=await fetch(t,e);if(n.status===401)throw localStorage.removeItem("access-token"),window.location.href="/auth",new Error("认证失败,请重新登录");return n}function Dt(){return{"Content-Type":"application/json",Authorization:`Bearer ${localStorage.getItem("access-token")}`}}async function kie(){const t=await St("/api/webui/config/bot",{method:"GET",headers:Dt()});if(!t.ok)throw new Error("读取Bot配置失败");const n=(await t.json()).config.bot||{};return{qq_account:n.qq_account||0,nickname:n.nickname||"",alias_names:n.alias_names||[]}}async function Oie(){const t=await St("/api/webui/config/bot",{method:"GET",headers:Dt()});if(!t.ok)throw new Error("读取人格配置失败");const n=(await t.json()).config.personality||{};return{personality:n.personality||"",reply_style:n.reply_style||"",interest:n.interest||"",plan_style:n.plan_style||"",private_plan_style:n.private_plan_style||""}}async function jie(){const t=await St("/api/webui/config/bot",{method:"GET",headers:Dt()});if(!t.ok)throw new Error("读取表情包配置失败");const n=(await t.json()).config.emoji||{};return{emoji_chance:n.emoji_chance??.4,max_reg_num:n.max_reg_num??40,do_replace:n.do_replace??!0,check_interval:n.check_interval??10,steal_emoji:n.steal_emoji??!0,content_filtration:n.content_filtration??!1,filtration_prompt:n.filtration_prompt||""}}async function Nie(){const t=await St("/api/webui/config/bot",{method:"GET",headers:Dt()});if(!t.ok)throw new Error("读取其他配置失败");const n=(await t.json()).config,r=n.tool||{},s=n.mood||{},i=n.jargon||{};return{enable_tool:r.enable_tool??!0,enable_mood:s.enable_mood??!1,mood_update_threshold:s.mood_update_threshold,emotion_style:s.emotion_style,all_global:i.all_global??!0}}async function Cie(){const t=await St("/api/webui/config/model",{method:"GET",headers:Dt()});if(!t.ok)throw new Error("读取模型配置失败");return{api_key:((await t.json()).config.api_providers||[]).find(i=>i.name==="SiliconFlow")?.api_key||""}}async function Tie(t){const e=await St("/api/webui/config/bot/section/bot",{method:"POST",headers:Dt(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"保存Bot基础配置失败")}return await e.json()}async function Eie(t){const e=await St("/api/webui/config/bot/section/personality",{method:"POST",headers:Dt(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"保存人格配置失败")}return await e.json()}async function _ie(t){const e=await St("/api/webui/config/bot/section/emoji",{method:"POST",headers:Dt(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"保存表情包配置失败")}return await e.json()}async function Aie(t){const e=[];e.push(St("/api/webui/config/bot/section/tool",{method:"POST",headers:Dt(),body:JSON.stringify({enable_tool:t.enable_tool})})),e.push(St("/api/webui/config/bot/section/jargon",{method:"POST",headers:Dt(),body:JSON.stringify({all_global:t.all_global})}));const n={enable_mood:t.enable_mood};t.enable_mood&&(n.mood_update_threshold=t.mood_update_threshold||1,n.emotion_style=t.emotion_style||""),e.push(St("/api/webui/config/bot/section/mood",{method:"POST",headers:Dt(),body:JSON.stringify(n)}));const r=await Promise.all(e);for(const s of r)if(!s.ok){const i=await s.json();throw new Error(i.detail||"保存其他配置失败")}return{success:!0}}async function Mie(t){const e=await St("/api/webui/config/model",{method:"GET",headers:Dt()});if(!e.ok)throw new Error("读取模型配置失败");const r=(await e.json()).config,s=r.api_providers||[],i=s.findIndex(c=>c.name==="SiliconFlow");i>=0?s[i]={...s[i],api_key:t.api_key}:s.push({name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",api_key:t.api_key,client_type:"openai",max_retry:3,timeout:120,retry_interval:5});const a={...r,api_providers:s},l=await St("/api/webui/config/model",{method:"POST",headers:Dt(),body:JSON.stringify(a)});if(!l.ok){const c=await l.json();throw new Error(c.detail||"保存模型配置失败")}return await l.json()}async function sE(){const t=localStorage.getItem("access-token"),e=await St("/api/webui/setup/complete",{method:"POST",headers:{Authorization:`Bearer ${t}`}});if(!e.ok){const n=await e.json();throw new Error(n.message||"标记配置完成失败")}return await e.json()}async function ib(){const t=await St("/api/webui/system/restart",{method:"POST",headers:Dt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"重启失败")}return await t.json()}async function Rie(){const t=await St("/api/webui/system/status",{method:"GET",headers:Dt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取状态失败")}return await t.json()}function Die(){const t=Zi(),{toast:e}=as(),[n,r]=b.useState(0),[s,i]=b.useState(!1),[a,l]=b.useState(!1),[c,d]=b.useState(!0),[h,m]=b.useState({qq_account:0,nickname:"",alias_names:[]}),[g,x]=b.useState({personality:"是一个女大学生,现在在读大二,会刷贴吧。",reply_style:"请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景。可以参考贴吧,知乎和微博的回复风格。",interest:"对技术相关话题,游戏和动漫相关话题感兴趣,也对日常话题感兴趣,不喜欢太过沉重严肃的话题",plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 2.如果相同的内容已经被执行,请不要重复执行 3.请控制你的发言频率,不要太过频繁的发言 4.如果有人对你感到厌烦,请减少回复 5.如果有人对你进行攻击,或者情绪激动,请你以合适的方法应对`,private_plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 2.如果相同的内容已经被执行,请不要重复执行 -3.某句话如果已经被回复过,不要重复回复`}),[y,w]=b.useState({emoji_chance:.4,max_reg_num:40,do_replace:!0,check_interval:10,steal_emoji:!0,content_filtration:!1,filtration_prompt:"符合公序良俗"}),[S,k]=b.useState({enable_tool:!0,enable_mood:!1,mood_update_threshold:1,emotion_style:"情绪较为稳定,但遇遇特定事件的时候起伏较大",all_global:!0}),[j,N]=b.useState({api_key:""}),[T,E]=b.useState(!1),[_,M]=b.useState(""),I=[{id:"bot-basic",title:"Bot基础",description:"配置机器人的基本信息",icon:Eee},{id:"personality",title:"人格配置",description:"定义机器人的性格和说话风格",icon:mI},{id:"emoji",title:"表情包",description:"配置表情包相关设置",icon:Nj},{id:"other",title:"其他设置",description:"工具、情绪系统等配置",icon:Xu},{id:"siliconflow",title:"API配置",description:"配置硅基流动API密钥",icon:fI}],P=(n+1)/I.length*100;b.useEffect(()=>{(async()=>{try{d(!0);const[X,J,G,R,ie]=await Promise.all([sie(),iie(),aie(),oie(),lie()]);m(X),x(J),w(G),k(R),N(ie)}catch(X){e({title:"加载配置失败",description:X instanceof Error?X.message:"无法加载现有配置,将使用默认值",variant:"destructive"})}finally{d(!1)}})()},[e]);const L=async()=>{l(!0);try{switch(n){case 0:await cie(h);break;case 1:await uie(g);break;case 2:await die(y);break;case 3:await hie(S);break;case 4:await fie(j);break}return e({title:"保存成功",description:`${I[n].title}配置已保存`}),!0}catch(B){return e({title:"保存失败",description:B instanceof Error?B.message:"未知错误",variant:"destructive"}),!1}finally{l(!1)}},H=async()=>{await L()&&n{n>0&&r(n-1)},ee=async()=>{i(!0),E(!0);try{if(M("正在保存API配置..."),!await L()){i(!1),E(!1);return}M("正在完成初始化..."),await Z9(),M("正在重启麦麦..."),await Jy(),e({title:"配置完成",description:"麦麦正在重启以应用新配置..."}),M("等待麦麦重启完成...");const X=60;let J=0,G=!1;for(;JsetTimeout(R,1e3));try{(await mie()).running&&(G=!0,M("重启成功!正在跳转..."))}catch{J++}}if(!G)throw new Error("重启超时,请手动检查麦麦状态");setTimeout(()=>{t({to:"/"})},1e3)}catch(B){E(!1),e({title:"配置失败",description:B instanceof Error?B.message:"未知错误",variant:"destructive"})}finally{i(!1)}},z=async()=>{try{await Z9(),t({to:"/"})}catch(B){e({title:"跳过失败",description:B instanceof Error?B.message:"未知错误",variant:"destructive"})}},Q=()=>{switch(n){case 0:return o.jsx(Jse,{config:h,onChange:m});case 1:return o.jsx(eie,{config:g,onChange:x});case 2:return o.jsx(tie,{config:y,onChange:w});case 3:return o.jsx(nie,{config:S,onChange:k});case 4:return o.jsx(rie,{config:j,onChange:N});default:return null}};return o.jsxs("div",{className:"relative flex min-h-screen flex-col items-center justify-center overflow-hidden bg-gradient-to-br from-primary/5 via-background to-secondary/5 p-4 md:p-6",children:[T&&o.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm",children:o.jsxs("div",{className:"mx-auto flex max-w-md flex-col items-center space-y-6 rounded-lg border bg-card p-8 text-center shadow-lg",children:[o.jsx("div",{className:"flex h-20 w-20 items-center justify-center rounded-full bg-primary/10",children:o.jsx(Uc,{className:"h-10 w-10 animate-spin text-primary"})}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),o.jsx("p",{className:"text-muted-foreground",children:_})]}),o.jsx("div",{className:"w-full",children:o.jsx("div",{className:"h-2 w-full overflow-hidden rounded-full bg-secondary",children:o.jsx("div",{className:"h-full w-full animate-pulse bg-primary",style:{animation:"pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite"}})})}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"请稍候,这可能需要一分钟..."})]})}),o.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[o.jsx("div",{className:"absolute left-1/4 top-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-primary/5 blur-3xl"}),o.jsx("div",{className:"absolute right-1/4 bottom-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-secondary/5 blur-3xl"})]}),c?o.jsxs("div",{className:"relative z-10 text-center",children:[o.jsx("div",{className:"mx-auto mb-4 flex h-16 w-16 items-center justify-center",children:o.jsx("div",{className:"h-12 w-12 animate-spin rounded-full border-4 border-primary border-t-transparent"})}),o.jsx("p",{className:"text-lg font-medium",children:"加载配置中..."}),o.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"正在读取现有配置"})]}):o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"relative z-10 w-full max-w-4xl",children:[o.jsxs("div",{className:"mb-6 md:mb-8 text-center",children:[o.jsx("div",{className:"mx-auto mb-4 flex h-12 w-12 md:h-16 md:w-16 items-center justify-center rounded-2xl bg-primary/10",children:o.jsx(Tee,{className:"h-6 w-6 md:h-8 md:w-8 text-primary",strokeWidth:2,fill:"none"})}),o.jsx("h1",{className:"mb-2 text-2xl md:text-3xl font-bold",children:"首次配置向导"}),o.jsxs("p",{className:"text-sm md:text-base text-muted-foreground",children:["让我们一起完成 ",Hj," 的初始配置"]})]}),o.jsxs("div",{className:"mb-6 md:mb-8",children:[o.jsxs("div",{className:"mb-2 flex items-center justify-between text-xs md:text-sm",children:[o.jsxs("span",{className:"text-muted-foreground",children:["步骤 ",n+1," / ",I.length]}),o.jsxs("span",{className:"font-medium text-primary",children:[Math.round(P),"%"]})]}),o.jsx(zp,{value:P,className:"h-2"})]}),o.jsx("div",{className:"mb-6 md:mb-8 flex justify-between",children:I.map((B,X)=>{const J=B.icon;return o.jsxs("div",{className:ve("flex flex-1 flex-col items-center gap-1 md:gap-2",Xt({to:"/"}),className:"gap-2 w-full sm:w-auto",children:[o.jsx(M0,{className:"h-4 w-4"}),"返回首页"]}),o.jsxs(he,{size:"lg",variant:"outline",onClick:()=>window.history.back(),className:"gap-2 w-full sm:w-auto",children:[o.jsx(pI,{className:"h-4 w-4"}),"返回上一页"]})]}),o.jsx("div",{className:"mt-12 pt-8 border-t border-border",children:o.jsx("p",{className:"text-sm text-muted-foreground",children:"如果您认为这是一个错误,请联系系统管理员"})})]})})}var jB=["PageUp","PageDown"],NB=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],CB={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},kf="Slider",[lk,gie,xie]=Dy(kf),[TB]=Ra(kf,[xie]),[vie,eb]=TB(kf),EB=b.forwardRef((t,e)=>{const{name:n,min:r=0,max:s=100,step:i=1,orientation:a="horizontal",disabled:l=!1,minStepsBetweenThumbs:c=0,defaultValue:d=[r],value:h,onValueChange:m=()=>{},onValueCommit:g=()=>{},inverted:x=!1,form:y,...w}=t,S=b.useRef(new Set),k=b.useRef(0),N=a==="horizontal"?yie:bie,[T=[],E]=Gl({prop:h,defaultProp:d,onChange:H=>{[...S.current][k.current]?.focus(),m(H)}}),_=b.useRef(T);function M(H){const U=jie(T,H);L(H,U)}function I(H){L(H,k.current)}function P(){const H=_.current[k.current];T[k.current]!==H&&g(T)}function L(H,U,{commit:ee}={commit:!1}){const z=Eie(i),Q=_ie(Math.round((H-r)/i)*i+r,z),B=xj(Q,[r,s]);E((X=[])=>{const J=kie(X,B,U);if(Tie(J,c*i)){k.current=J.indexOf(B);const G=String(J)!==String(X);return G&&ee&&g(J),G?J:X}else return X})}return o.jsx(vie,{scope:t.__scopeSlider,name:n,disabled:l,min:r,max:s,valueIndexToChangeRef:k,thumbs:S.current,values:T,orientation:a,form:y,children:o.jsx(lk.Provider,{scope:t.__scopeSlider,children:o.jsx(lk.Slot,{scope:t.__scopeSlider,children:o.jsx(N,{"aria-disabled":l,"data-disabled":l?"":void 0,...w,ref:e,onPointerDown:nt(w.onPointerDown,()=>{l||(_.current=T)}),min:r,max:s,inverted:x,onSlideStart:l?void 0:M,onSlideMove:l?void 0:I,onSlideEnd:l?void 0:P,onHomeKeyDown:()=>!l&&L(r,0,{commit:!0}),onEndKeyDown:()=>!l&&L(s,T.length-1,{commit:!0}),onStepKeyDown:({event:H,direction:U})=>{if(!l){const Q=jB.includes(H.key)||H.shiftKey&&NB.includes(H.key)?10:1,B=k.current,X=T[B],J=i*Q*U;L(X+J,B,{commit:!0})}}})})})})});EB.displayName=kf;var[_B,MB]=TB(kf,{startEdge:"left",endEdge:"right",size:"width",direction:1}),yie=b.forwardRef((t,e)=>{const{min:n,max:r,dir:s,inverted:i,onSlideStart:a,onSlideMove:l,onSlideEnd:c,onStepKeyDown:d,...h}=t,[m,g]=b.useState(null),x=Yn(e,N=>g(N)),y=b.useRef(void 0),w=Np(s),S=w==="ltr",k=S&&!i||!S&&i;function j(N){const T=y.current||m.getBoundingClientRect(),E=[0,T.width],M=Vj(E,k?[n,r]:[r,n]);return y.current=T,M(N-T.left)}return o.jsx(_B,{scope:t.__scopeSlider,startEdge:k?"left":"right",endEdge:k?"right":"left",direction:k?1:-1,size:"width",children:o.jsx(AB,{dir:w,"data-orientation":"horizontal",...h,ref:x,style:{...h.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:N=>{const T=j(N.clientX);a?.(T)},onSlideMove:N=>{const T=j(N.clientX);l?.(T)},onSlideEnd:()=>{y.current=void 0,c?.()},onStepKeyDown:N=>{const E=CB[k?"from-left":"from-right"].includes(N.key);d?.({event:N,direction:E?-1:1})}})})}),bie=b.forwardRef((t,e)=>{const{min:n,max:r,inverted:s,onSlideStart:i,onSlideMove:a,onSlideEnd:l,onStepKeyDown:c,...d}=t,h=b.useRef(null),m=Yn(e,h),g=b.useRef(void 0),x=!s;function y(w){const S=g.current||h.current.getBoundingClientRect(),k=[0,S.height],N=Vj(k,x?[r,n]:[n,r]);return g.current=S,N(w-S.top)}return o.jsx(_B,{scope:t.__scopeSlider,startEdge:x?"bottom":"top",endEdge:x?"top":"bottom",size:"height",direction:x?1:-1,children:o.jsx(AB,{"data-orientation":"vertical",...d,ref:m,style:{...d.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:w=>{const S=y(w.clientY);i?.(S)},onSlideMove:w=>{const S=y(w.clientY);a?.(S)},onSlideEnd:()=>{g.current=void 0,l?.()},onStepKeyDown:w=>{const k=CB[x?"from-bottom":"from-top"].includes(w.key);c?.({event:w,direction:k?-1:1})}})})}),AB=b.forwardRef((t,e)=>{const{__scopeSlider:n,onSlideStart:r,onSlideMove:s,onSlideEnd:i,onHomeKeyDown:a,onEndKeyDown:l,onStepKeyDown:c,...d}=t,h=eb(kf,n);return o.jsx(gn.span,{...d,ref:e,onKeyDown:nt(t.onKeyDown,m=>{m.key==="Home"?(a(m),m.preventDefault()):m.key==="End"?(l(m),m.preventDefault()):jB.concat(NB).includes(m.key)&&(c(m),m.preventDefault())}),onPointerDown:nt(t.onPointerDown,m=>{const g=m.target;g.setPointerCapture(m.pointerId),m.preventDefault(),h.thumbs.has(g)?g.focus():r(m)}),onPointerMove:nt(t.onPointerMove,m=>{m.target.hasPointerCapture(m.pointerId)&&s(m)}),onPointerUp:nt(t.onPointerUp,m=>{const g=m.target;g.hasPointerCapture(m.pointerId)&&(g.releasePointerCapture(m.pointerId),i(m))})})}),RB="SliderTrack",DB=b.forwardRef((t,e)=>{const{__scopeSlider:n,...r}=t,s=eb(RB,n);return o.jsx(gn.span,{"data-disabled":s.disabled?"":void 0,"data-orientation":s.orientation,...r,ref:e})});DB.displayName=RB;var ck="SliderRange",PB=b.forwardRef((t,e)=>{const{__scopeSlider:n,...r}=t,s=eb(ck,n),i=MB(ck,n),a=b.useRef(null),l=Yn(e,a),c=s.values.length,d=s.values.map(g=>LB(g,s.min,s.max)),h=c>1?Math.min(...d):0,m=100-Math.max(...d);return o.jsx(gn.span,{"data-orientation":s.orientation,"data-disabled":s.disabled?"":void 0,...r,ref:l,style:{...t.style,[i.startEdge]:h+"%",[i.endEdge]:m+"%"}})});PB.displayName=ck;var uk="SliderThumb",zB=b.forwardRef((t,e)=>{const n=gie(t.__scopeSlider),[r,s]=b.useState(null),i=Yn(e,l=>s(l)),a=b.useMemo(()=>r?n().findIndex(l=>l.ref.current===r):-1,[n,r]);return o.jsx(wie,{...t,ref:i,index:a})}),wie=b.forwardRef((t,e)=>{const{__scopeSlider:n,index:r,name:s,...i}=t,a=eb(uk,n),l=MB(uk,n),[c,d]=b.useState(null),h=Yn(e,j=>d(j)),m=c?a.form||!!c.closest("form"):!0,g=Gz(c),x=a.values[r],y=x===void 0?0:LB(x,a.min,a.max),w=Oie(r,a.values.length),S=g?.[l.size],k=S?Nie(S,y,l.direction):0;return b.useEffect(()=>{if(c)return a.thumbs.add(c),()=>{a.thumbs.delete(c)}},[c,a.thumbs]),o.jsxs("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[l.startEdge]:`calc(${y}% + ${k}px)`},children:[o.jsx(lk.ItemSlot,{scope:t.__scopeSlider,children:o.jsx(gn.span,{role:"slider","aria-label":t["aria-label"]||w,"aria-valuemin":a.min,"aria-valuenow":x,"aria-valuemax":a.max,"aria-orientation":a.orientation,"data-orientation":a.orientation,"data-disabled":a.disabled?"":void 0,tabIndex:a.disabled?void 0:0,...i,ref:h,style:x===void 0?{display:"none"}:t.style,onFocus:nt(t.onFocus,()=>{a.valueIndexToChangeRef.current=r})})}),m&&o.jsx(IB,{name:s??(a.name?a.name+(a.values.length>1?"[]":""):void 0),form:a.form,value:x},r)]})});zB.displayName=uk;var Sie="RadioBubbleInput",IB=b.forwardRef(({__scopeSlider:t,value:e,...n},r)=>{const s=b.useRef(null),i=Yn(s,r),a=Wz(e);return b.useEffect(()=>{const l=s.current;if(!l)return;const c=window.HTMLInputElement.prototype,h=Object.getOwnPropertyDescriptor(c,"value").set;if(a!==e&&h){const m=new Event("input",{bubbles:!0});h.call(l,e),l.dispatchEvent(m)}},[a,e]),o.jsx(gn.input,{style:{display:"none"},...n,ref:i,defaultValue:e})});IB.displayName=Sie;function kie(t=[],e,n){const r=[...t];return r[n]=e,r.sort((s,i)=>s-i)}function LB(t,e,n){const i=100/(n-e)*(t-e);return xj(i,[0,100])}function Oie(t,e){return e>2?`Value ${t+1} of ${e}`:e===2?["Minimum","Maximum"][t]:void 0}function jie(t,e){if(t.length===1)return 0;const n=t.map(s=>Math.abs(s-e)),r=Math.min(...n);return n.indexOf(r)}function Nie(t,e,n){const r=t/2,i=Vj([0,50],[0,r]);return(r-i(e)*n)*n}function Cie(t){return t.slice(0,-1).map((e,n)=>t[n+1]-e)}function Tie(t,e){if(e>0){const n=Cie(t);return Math.min(...n)>=e}return!0}function Vj(t,e){return n=>{if(t[0]===t[1]||e[0]===e[1])return e[0];const r=(e[1]-e[0])/(t[1]-t[0]);return e[0]+r*(n-t[0])}}function Eie(t){return(String(t).split(".")[1]||"").length}function _ie(t,e){const n=Math.pow(10,e);return Math.round(t*n)/n}var BB=EB,Mie=DB,Aie=PB,Rie=zB;const Ip=b.forwardRef(({className:t,...e},n)=>o.jsxs(BB,{ref:n,className:ve("relative flex w-full touch-none select-none items-center",t),...e,children:[o.jsx(Mie,{className:"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20",children:o.jsx(Aie,{className:"absolute h-full bg-primary"})}),o.jsx(Rie,{className:"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"})]}));Ip.displayName=BB.displayName;const Vt=pee,Ut=gee,$t=b.forwardRef(({className:t,children:e,...n},r)=>o.jsxs(Zz,{ref:r,className:ve("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",t),...n,children:[e,o.jsx(uee,{asChild:!0,children:o.jsx(nd,{className:"h-4 w-4 opacity-50"})})]}));$t.displayName=Zz.displayName;const FB=b.forwardRef(({className:t,...e},n)=>o.jsx(Jz,{ref:n,className:ve("flex cursor-default items-center justify-center py-1",t),...e,children:o.jsx(A0,{className:"h-4 w-4"})}));FB.displayName=Jz.displayName;const qB=b.forwardRef(({className:t,...e},n)=>o.jsx(eI,{ref:n,className:ve("flex cursor-default items-center justify-center py-1",t),...e,children:o.jsx(nd,{className:"h-4 w-4"})}));qB.displayName=eI.displayName;const Ht=b.forwardRef(({className:t,children:e,position:n="popper",...r},s)=>o.jsx(dee,{children:o.jsxs(tI,{ref:s,className:ve("relative z-[100] max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-hidden rounded-md border border-border bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",n==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:n,...r,children:[o.jsx(FB,{}),o.jsx(hee,{className:ve("p-1",n==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:e}),o.jsx(qB,{})]})}));Ht.displayName=tI.displayName;const Die=b.forwardRef(({className:t,...e},n)=>o.jsx(nI,{ref:n,className:ve("px-2 py-1.5 text-sm font-semibold",t),...e}));Die.displayName=nI.displayName;const De=b.forwardRef(({className:t,children:e,...n},r)=>o.jsxs(rI,{ref:r,className:ve("relative flex w-full cursor-default select-none items-center rounded-sm py-2 pl-2 pr-8 text-sm outline-none bg-white dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800 focus:bg-gray-100 dark:focus:bg-gray-800 data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),...n,children:[o.jsx("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:o.jsx(fee,{children:o.jsx(Ro,{className:"h-4 w-4"})})}),o.jsx(mee,{children:e})]}));De.displayName=rI.displayName;const Pie=b.forwardRef(({className:t,...e},n)=>o.jsx(sI,{ref:n,className:ve("-mx-1 my-1 h-px bg-muted",t),...e}));Pie.displayName=sI.displayName;function zie(t){const e=Iie(t),n=b.forwardRef((r,s)=>{const{children:i,...a}=r,l=b.Children.toArray(i),c=l.find(Bie);if(c){const d=c.props.children,h=l.map(m=>m===c?b.Children.count(d)>1?b.Children.only(null):b.isValidElement(d)?d.props.children:null:m);return o.jsx(e,{...a,ref:s,children:b.isValidElement(d)?b.cloneElement(d,void 0,h):null})}return o.jsx(e,{...a,ref:s,children:i})});return n.displayName=`${t}.Slot`,n}function Iie(t){const e=b.forwardRef((n,r)=>{const{children:s,...i}=n;if(b.isValidElement(s)){const a=qie(s),l=Fie(i,s.props);return s.type!==b.Fragment&&(l.ref=r?Hc(r,a):a),b.cloneElement(s,l)}return b.Children.count(s)>1?b.Children.only(null):null});return e.displayName=`${t}.SlotClone`,e}var Lie=Symbol("radix.slottable");function Bie(t){return b.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===Lie}function Fie(t,e){const n={...e};for(const r in e){const s=t[r],i=e[r];/^on[A-Z]/.test(r)?s&&i?n[r]=(...l)=>{const c=i(...l);return s(...l),c}:s&&(n[r]=s):r==="style"?n[r]={...s,...i}:r==="className"&&(n[r]=[s,i].filter(Boolean).join(" "))}return{...t,...n}}function qie(t){let e=Object.getOwnPropertyDescriptor(t.props,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning;return n?t.ref:(e=Object.getOwnPropertyDescriptor(t,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning,n?t.props.ref:t.props.ref||t.ref)}var tb="Popover",[$B]=Ra(tb,[gf]),Lp=gf(),[$ie,iu]=$B(tb),HB=t=>{const{__scopePopover:e,children:n,open:r,defaultOpen:s,onOpenChange:i,modal:a=!1}=t,l=Lp(e),c=b.useRef(null),[d,h]=b.useState(!1),[m,g]=Gl({prop:r,defaultProp:s??!1,onChange:i,caller:tb});return o.jsx(By,{...l,children:o.jsx($ie,{scope:e,contentId:Ui(),triggerRef:c,open:m,onOpenChange:g,onOpenToggle:b.useCallback(()=>g(x=>!x),[g]),hasCustomAnchor:d,onCustomAnchorAdd:b.useCallback(()=>h(!0),[]),onCustomAnchorRemove:b.useCallback(()=>h(!1),[]),modal:a,children:n})})};HB.displayName=tb;var QB="PopoverAnchor",Hie=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=iu(QB,n),i=Lp(n),{onCustomAnchorAdd:a,onCustomAnchorRemove:l}=s;return b.useEffect(()=>(a(),()=>l()),[a,l]),o.jsx(Fy,{...i,...r,ref:e})});Hie.displayName=QB;var VB="PopoverTrigger",UB=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=iu(VB,n),i=Lp(n),a=Yn(e,s.triggerRef),l=o.jsx(gn.button,{type:"button","aria-haspopup":"dialog","aria-expanded":s.open,"aria-controls":s.contentId,"data-state":KB(s.open),...r,ref:a,onClick:nt(t.onClick,s.onOpenToggle)});return s.hasCustomAnchor?l:o.jsx(Fy,{asChild:!0,...i,children:l})});UB.displayName=VB;var Uj="PopoverPortal",[Qie,Vie]=$B(Uj,{forceMount:void 0}),WB=t=>{const{__scopePopover:e,forceMount:n,children:r,container:s}=t,i=iu(Uj,e);return o.jsx(Qie,{scope:e,forceMount:n,children:o.jsx(si,{present:n||i.open,children:o.jsx(Ly,{asChild:!0,container:s,children:r})})})};WB.displayName=Uj;var Xh="PopoverContent",GB=b.forwardRef((t,e)=>{const n=Vie(Xh,t.__scopePopover),{forceMount:r=n.forceMount,...s}=t,i=iu(Xh,t.__scopePopover);return o.jsx(si,{present:r||i.open,children:i.modal?o.jsx(Wie,{...s,ref:e}):o.jsx(Gie,{...s,ref:e})})});GB.displayName=Xh;var Uie=zie("PopoverContent.RemoveScroll"),Wie=b.forwardRef((t,e)=>{const n=iu(Xh,t.__scopePopover),r=b.useRef(null),s=Yn(e,r),i=b.useRef(!1);return b.useEffect(()=>{const a=r.current;if(a)return iI(a)},[]),o.jsx(aI,{as:Uie,allowPinchZoom:!0,children:o.jsx(XB,{...t,ref:s,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:nt(t.onCloseAutoFocus,a=>{a.preventDefault(),i.current||n.triggerRef.current?.focus()}),onPointerDownOutside:nt(t.onPointerDownOutside,a=>{const l=a.detail.originalEvent,c=l.button===0&&l.ctrlKey===!0,d=l.button===2||c;i.current=d},{checkForDefaultPrevented:!1}),onFocusOutside:nt(t.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1})})})}),Gie=b.forwardRef((t,e)=>{const n=iu(Xh,t.__scopePopover),r=b.useRef(!1),s=b.useRef(!1);return o.jsx(XB,{...t,ref:e,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{t.onCloseAutoFocus?.(i),i.defaultPrevented||(r.current||n.triggerRef.current?.focus(),i.preventDefault()),r.current=!1,s.current=!1},onInteractOutside:i=>{t.onInteractOutside?.(i),i.defaultPrevented||(r.current=!0,i.detail.originalEvent.type==="pointerdown"&&(s.current=!0));const a=i.target;n.triggerRef.current?.contains(a)&&i.preventDefault(),i.detail.originalEvent.type==="focusin"&&s.current&&i.preventDefault()}})}),XB=b.forwardRef((t,e)=>{const{__scopePopover:n,trapFocus:r,onOpenAutoFocus:s,onCloseAutoFocus:i,disableOutsidePointerEvents:a,onEscapeKeyDown:l,onPointerDownOutside:c,onFocusOutside:d,onInteractOutside:h,...m}=t,g=iu(Xh,n),x=Lp(n);return oI(),o.jsx(lI,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:s,onUnmountAutoFocus:i,children:o.jsx(kj,{asChild:!0,disableOutsidePointerEvents:a,onInteractOutside:h,onEscapeKeyDown:l,onPointerDownOutside:c,onFocusOutside:d,onDismiss:()=>g.onOpenChange(!1),children:o.jsx(Oj,{"data-state":KB(g.open),role:"dialog",id:g.contentId,...x,...m,ref:e,style:{...m.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),YB="PopoverClose",Xie=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=iu(YB,n);return o.jsx(gn.button,{type:"button",...r,ref:e,onClick:nt(t.onClick,()=>s.onOpenChange(!1))})});Xie.displayName=YB;var Yie="PopoverArrow",Kie=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=Lp(n);return o.jsx(jj,{...s,...r,ref:e})});Kie.displayName=Yie;function KB(t){return t?"open":"closed"}var Zie=HB,Jie=UB,eae=WB,ZB=GB;const Po=Zie,zo=Jie,Xa=b.forwardRef(({className:t,align:e="center",sideOffset:n=4,...r},s)=>o.jsx(eae,{children:o.jsx(ZB,{ref:s,align:e,sideOffset:n,className:ve("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]",t),...r})}));Xa.displayName=ZB.displayName;const au="/api/webui/config";async function J9(){const e=await(await St(`${au}/bot`)).json();if(!e.success)throw new Error("获取配置数据失败");return e.config}async function Rh(){const e=await(await St(`${au}/model`)).json();if(!e.success)throw new Error("获取模型配置数据失败");return e.config}async function eE(t){const n=await(await St(`${au}/bot`,{method:"POST",headers:Dt(),body:JSON.stringify(t)})).json();if(!n.success)throw new Error(n.message||"保存配置失败")}async function tae(){const e=await(await St(`${au}/bot/raw`)).json();if(!e.success)throw new Error("获取配置源代码失败");return e.content}async function nae(t){const n=await(await St(`${au}/bot/raw`,{method:"POST",headers:Dt(),body:JSON.stringify({raw_content:t})})).json();if(!n.success)throw new Error(n.message||"保存配置失败")}async function zv(t){const n=await(await St(`${au}/model`,{method:"POST",headers:Dt(),body:JSON.stringify(t)})).json();if(!n.success)throw new Error(n.message||"保存配置失败")}async function rae(t,e){const r=await(await St(`${au}/bot/section/${t}`,{method:"POST",headers:Dt(),body:JSON.stringify(e)})).json();if(!r.success)throw new Error(r.message||`保存配置节 ${t} 失败`)}async function dk(t,e){const r=await(await St(`${au}/model/section/${t}`,{method:"POST",headers:Dt(),body:JSON.stringify(e)})).json();if(!r.success)throw new Error(r.message||`保存配置节 ${t} 失败`)}async function sae(t,e="openai",n="/models"){const r=new URLSearchParams({provider_name:t,parser:e,endpoint:n}),s=await St(`/api/webui/models/list?${r}`);if(!s.ok){const a=await s.json().catch(()=>({}));throw new Error(a.detail||`获取模型列表失败 (${s.status})`)}const i=await s.json();if(!i.success)throw new Error("获取模型列表失败");return i.models}const iae=wf("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"}}),ga=b.forwardRef(({className:t,variant:e,...n},r)=>o.jsx("div",{ref:r,role:"alert",className:ve(iae({variant:e}),t),...n}));ga.displayName="Alert";const aae=b.forwardRef(({className:t,...e},n)=>o.jsx("h5",{ref:n,className:ve("mb-1 font-medium leading-none tracking-tight",t),...e}));aae.displayName="AlertTitle";const xa=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:ve("text-sm [&_p]:leading-relaxed",t),...e}));xa.displayName="AlertDescription";function Wj({onRestartComplete:t,onRestartFailed:e}){const[n,r]=b.useState(0),[s,i]=b.useState("restarting"),[a,l]=b.useState(0),[c,d]=b.useState(0);b.useEffect(()=>{const g=setInterval(()=>{r(w=>w>=90?w:w+1)},200),x=setInterval(()=>{l(w=>w+1)},1e3),y=setTimeout(()=>{i("checking"),h()},3e3);return()=>{clearInterval(g),clearInterval(x),clearTimeout(y)}},[]);const h=()=>{const x=async()=>{try{if(d(w=>w+1),(await fetch("/api/webui/system/status",{method:"GET",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(3e3)})).ok)r(100),i("success"),setTimeout(()=>{t?.()},1500);else throw new Error("Status check failed")}catch{c<60?setTimeout(x,2e3):(i("failed"),e?.())}};x()},m=g=>{const x=Math.floor(g/60),y=g%60;return`${x}:${y.toString().padStart(2,"0")}`};return o.jsx("div",{className:"fixed inset-0 bg-background/95 backdrop-blur-sm z-50 flex items-center justify-center",children:o.jsxs("div",{className:"max-w-md w-full mx-4 space-y-8",children:[o.jsxs("div",{className:"flex flex-col items-center space-y-4",children:[s==="restarting"&&o.jsxs(o.Fragment,{children:[o.jsx(Uc,{className:"h-16 w-16 text-primary animate-spin"}),o.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),o.jsx("p",{className:"text-muted-foreground text-center",children:"请稍候,麦麦正在重启中..."})]}),s==="checking"&&o.jsxs(o.Fragment,{children:[o.jsx(Uc,{className:"h-16 w-16 text-primary animate-spin"}),o.jsx("h2",{className:"text-2xl font-bold",children:"检查服务状态"}),o.jsxs("p",{className:"text-muted-foreground text-center",children:["等待服务恢复... (尝试 ",c,"/60)"]})]}),s==="success"&&o.jsxs(o.Fragment,{children:[o.jsx(Qc,{className:"h-16 w-16 text-green-500"}),o.jsx("h2",{className:"text-2xl font-bold",children:"重启成功"}),o.jsx("p",{className:"text-muted-foreground text-center",children:"正在跳转到登录页面..."})]}),s==="failed"&&o.jsxs(o.Fragment,{children:[o.jsx(Vc,{className:"h-16 w-16 text-destructive"}),o.jsx("h2",{className:"text-2xl font-bold",children:"重启超时"}),o.jsx("p",{className:"text-muted-foreground text-center",children:"服务未能在预期时间内恢复,请手动检查或刷新页面"})]})]}),s!=="failed"&&o.jsxs("div",{className:"space-y-2",children:[o.jsx(zp,{value:n,className:"h-2"}),o.jsxs("div",{className:"flex justify-between text-sm text-muted-foreground",children:[o.jsxs("span",{children:[n,"%"]}),o.jsxs("span",{children:["已用时: ",m(a)]})]})]}),o.jsx("div",{className:"bg-muted/50 rounded-lg p-4 space-y-2",children:o.jsxs("p",{className:"text-sm text-muted-foreground",children:[s==="restarting"&&"🔄 配置已保存,正在重启主程序...",s==="checking"&&"⏳ 正在等待服务恢复,请勿关闭页面...",s==="success"&&"✅ 配置已生效,服务运行正常",s==="failed"&&"⚠️ 如果长时间无响应,请尝试手动重启"]})}),o.jsx("div",{className:"bg-yellow-500/10 border border-yellow-500/50 rounded-lg p-4",children:o.jsxs("p",{className:"text-sm text-yellow-900 dark:text-yellow-100",children:[o.jsx("strong",{children:"⚠️ 重要提示:"})," 由于技术原因,使用重启功能后,将无法再使用 ",o.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。如需结束程序,请使用脚本目录下的进程管理脚本。"]})}),s==="failed"&&o.jsxs("div",{className:"flex gap-2",children:[o.jsx("button",{onClick:()=>window.location.reload(),className:"flex-1 px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary/90",children:"刷新页面"}),o.jsx("button",{onClick:()=>{i("checking"),d(0),h()},className:"flex-1 px-4 py-2 bg-secondary text-secondary-foreground rounded-md hover:bg-secondary/90",children:"重试检测"})]})]})})}let hk=[],JB=[];(()=>{let t="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,n=0;e>1;if(t=JB[r])e=r+1;else return!0;if(e==n)return!1}}function tE(t){return t>=127462&&t<=127487}const nE=8205;function lae(t,e,n=!0,r=!0){return(n?eF:cae)(t,e,r)}function eF(t,e,n){if(e==t.length)return e;e&&tF(t.charCodeAt(e))&&nF(t.charCodeAt(e-1))&&e--;let r=N4(t,e);for(e+=rE(r);e=0&&tE(N4(t,a));)i++,a-=2;if(i%2==0)break;e+=2}else break}return e}function cae(t,e,n){for(;e>0;){let r=eF(t,e-2,n);if(r=56320&&t<57344}function nF(t){return t>=55296&&t<56320}function rE(t){return t<65536?1:2}class jn{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,n,r){[e,n]=Yh(this,e,n);let s=[];return this.decompose(0,e,s,2),r.length&&r.decompose(0,r.length,s,3),this.decompose(n,this.length,s,1),rv.from(s,this.length-(n-e)+r.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,n=this.length){[e,n]=Yh(this,e,n);let r=[];return this.decompose(e,n,r,0),rv.from(r,n-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let n=this.scanIdentical(e,1),r=this.length-this.scanIdentical(e,-1),s=new x0(this),i=new x0(e);for(let a=n,l=n;;){if(s.next(a),i.next(a),a=0,s.lineBreak!=i.lineBreak||s.done!=i.done||s.value!=i.value)return!1;if(l+=s.value.length,s.done||l>=r)return!0}}iter(e=1){return new x0(this,e)}iterRange(e,n=this.length){return new rF(this,e,n)}iterLines(e,n){let r;if(e==null)r=this.iter();else{n==null&&(n=this.lines+1);let s=this.line(e).from;r=this.iterRange(s,Math.max(s,n==this.lines+1?this.length:n<=1?0:this.line(n-1).to))}return new sF(r)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?jn.empty:e.length<=32?new Hr(e):rv.from(Hr.split(e,[]))}}class Hr extends jn{constructor(e,n=uae(e)){super(),this.text=e,this.length=n}get lines(){return this.text.length}get children(){return null}lineInner(e,n,r,s){for(let i=0;;i++){let a=this.text[i],l=s+a.length;if((n?r:l)>=e)return new dae(s,l,r,a);s=l+1,r++}}decompose(e,n,r,s){let i=e<=0&&n>=this.length?this:new Hr(sE(this.text,e,n),Math.min(n,this.length)-Math.max(0,e));if(s&1){let a=r.pop(),l=sv(i.text,a.text.slice(),0,i.length);if(l.length<=32)r.push(new Hr(l,a.length+i.length));else{let c=l.length>>1;r.push(new Hr(l.slice(0,c)),new Hr(l.slice(c)))}}else r.push(i)}replace(e,n,r){if(!(r instanceof Hr))return super.replace(e,n,r);[e,n]=Yh(this,e,n);let s=sv(this.text,sv(r.text,sE(this.text,0,e)),n),i=this.length+r.length-(n-e);return s.length<=32?new Hr(s,i):rv.from(Hr.split(s,[]),i)}sliceString(e,n=this.length,r=` -`){[e,n]=Yh(this,e,n);let s="";for(let i=0,a=0;i<=n&&ae&&a&&(s+=r),ei&&(s+=l.slice(Math.max(0,e-i),n-i)),i=c+1}return s}flatten(e){for(let n of this.text)e.push(n)}scanIdentical(){return 0}static split(e,n){let r=[],s=-1;for(let i of e)r.push(i),s+=i.length+1,r.length==32&&(n.push(new Hr(r,s)),r=[],s=-1);return s>-1&&n.push(new Hr(r,s)),n}}let rv=class vh extends jn{constructor(e,n){super(),this.children=e,this.length=n,this.lines=0;for(let r of e)this.lines+=r.lines}lineInner(e,n,r,s){for(let i=0;;i++){let a=this.children[i],l=s+a.length,c=r+a.lines-1;if((n?c:l)>=e)return a.lineInner(e,n,r,s);s=l+1,r=c+1}}decompose(e,n,r,s){for(let i=0,a=0;a<=n&&i=a){let d=s&((a<=e?1:0)|(c>=n?2:0));a>=e&&c<=n&&!d?r.push(l):l.decompose(e-a,n-a,r,d)}a=c+1}}replace(e,n,r){if([e,n]=Yh(this,e,n),r.lines=i&&n<=l){let c=a.replace(e-i,n-i,r),d=this.lines-a.lines+c.lines;if(c.lines>4&&c.lines>d>>6){let h=this.children.slice();return h[s]=c,new vh(h,this.length-(n-e)+r.length)}return super.replace(i,l,c)}i=l+1}return super.replace(e,n,r)}sliceString(e,n=this.length,r=` -`){[e,n]=Yh(this,e,n);let s="";for(let i=0,a=0;ie&&i&&(s+=r),ea&&(s+=l.sliceString(e-a,n-a,r)),a=c+1}return s}flatten(e){for(let n of this.children)n.flatten(e)}scanIdentical(e,n){if(!(e instanceof vh))return 0;let r=0,[s,i,a,l]=n>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;s+=n,i+=n){if(s==a||i==l)return r;let c=this.children[s],d=e.children[i];if(c!=d)return r+c.scanIdentical(d,n);r+=c.length+1}}static from(e,n=e.reduce((r,s)=>r+s.length+1,-1)){let r=0;for(let x of e)r+=x.lines;if(r<32){let x=[];for(let y of e)y.flatten(x);return new Hr(x,n)}let s=Math.max(32,r>>5),i=s<<1,a=s>>1,l=[],c=0,d=-1,h=[];function m(x){let y;if(x.lines>i&&x instanceof vh)for(let w of x.children)m(w);else x.lines>a&&(c>a||!c)?(g(),l.push(x)):x instanceof Hr&&c&&(y=h[h.length-1])instanceof Hr&&x.lines+y.lines<=32?(c+=x.lines,d+=x.length+1,h[h.length-1]=new Hr(y.text.concat(x.text),y.length+1+x.length)):(c+x.lines>s&&g(),c+=x.lines,d+=x.length+1,h.push(x))}function g(){c!=0&&(l.push(h.length==1?h[0]:vh.from(h,d)),d=-1,c=h.length=0)}for(let x of e)m(x);return g(),l.length==1?l[0]:new vh(l,n)}};jn.empty=new Hr([""],0);function uae(t){let e=-1;for(let n of t)e+=n.length+1;return e}function sv(t,e,n=0,r=1e9){for(let s=0,i=0,a=!0;i=n&&(c>r&&(l=l.slice(0,r-s)),s0?1:(e instanceof Hr?e.text.length:e.children.length)<<1]}nextInner(e,n){for(this.done=this.lineBreak=!1;;){let r=this.nodes.length-1,s=this.nodes[r],i=this.offsets[r],a=i>>1,l=s instanceof Hr?s.text.length:s.children.length;if(a==(n>0?l:0)){if(r==0)return this.done=!0,this.value="",this;n>0&&this.offsets[r-1]++,this.nodes.pop(),this.offsets.pop()}else if((i&1)==(n>0?0:1)){if(this.offsets[r]+=n,e==0)return this.lineBreak=!0,this.value=` -`,this;e--}else if(s instanceof Hr){let c=s.text[a+(n<0?-1:0)];if(this.offsets[r]+=n,c.length>Math.max(0,e))return this.value=e==0?c:n>0?c.slice(e):c.slice(0,c.length-e),this;e-=c.length}else{let c=s.children[a+(n<0?-1:0)];e>c.length?(e-=c.length,this.offsets[r]+=n):(n<0&&this.offsets[r]--,this.nodes.push(c),this.offsets.push(n>0?1:(c instanceof Hr?c.text.length:c.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class rF{constructor(e,n,r){this.value="",this.done=!1,this.cursor=new x0(e,n>r?-1:1),this.pos=n>r?e.length:0,this.from=Math.min(n,r),this.to=Math.max(n,r)}nextInner(e,n){if(n<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,n<0?this.pos-this.to:this.from-this.pos);let r=n<0?this.pos-this.from:this.to-this.pos;e>r&&(e=r),r-=e;let{value:s}=this.cursor.next(e);return this.pos+=(s.length+e)*n,this.value=s.length<=r?s:n<0?s.slice(s.length-r):s.slice(0,r),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class sF{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:n,lineBreak:r,value:s}=this.inner.next(e);return n&&this.afterBreak?(this.value="",this.afterBreak=!1):n?(this.done=!0,this.value=""):r?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol<"u"&&(jn.prototype[Symbol.iterator]=function(){return this.iter()},x0.prototype[Symbol.iterator]=rF.prototype[Symbol.iterator]=sF.prototype[Symbol.iterator]=function(){return this});class dae{constructor(e,n,r,s){this.from=e,this.to=n,this.number=r,this.text=s}get length(){return this.to-this.from}}function Yh(t,e,n){return e=Math.max(0,Math.min(t.length,e)),[e,Math.max(e,Math.min(t.length,n))]}function Ds(t,e,n=!0,r=!0){return lae(t,e,n,r)}function hae(t){return t>=56320&&t<57344}function fae(t){return t>=55296&&t<56320}function gi(t,e){let n=t.charCodeAt(e);if(!fae(n)||e+1==t.length)return n;let r=t.charCodeAt(e+1);return hae(r)?(n-55296<<10)+(r-56320)+65536:n}function Gj(t){return t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode((t>>10)+55296,(t&1023)+56320))}function wo(t){return t<65536?1:2}const fk=/\r\n?|\n/;var Rs=(function(t){return t[t.Simple=0]="Simple",t[t.TrackDel=1]="TrackDel",t[t.TrackBefore=2]="TrackBefore",t[t.TrackAfter=3]="TrackAfter",t})(Rs||(Rs={}));class Do{constructor(e){this.sections=e}get length(){let e=0;for(let n=0;ne)return i+(e-s);i+=l}else{if(r!=Rs.Simple&&d>=e&&(r==Rs.TrackDel&&se||r==Rs.TrackBefore&&se))return null;if(d>e||d==e&&n<0&&!l)return e==s||n<0?i:i+c;i+=c}s=d}if(e>s)throw new RangeError(`Position ${e} is out of range for changeset of length ${s}`);return i}touchesRange(e,n=e){for(let r=0,s=0;r=0&&s<=n&&l>=e)return sn?"cover":!0;s=l}return!1}toString(){let e="";for(let n=0;n=0?":"+s:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(n=>typeof n!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new Do(e)}static create(e){return new Do(e)}}class cs extends Do{constructor(e,n){super(e),this.inserted=n}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return mk(this,(n,r,s,i,a)=>e=e.replace(s,s+(r-n),a),!1),e}mapDesc(e,n=!1){return pk(this,e,n,!0)}invert(e){let n=this.sections.slice(),r=[];for(let s=0,i=0;s=0){n[s]=l,n[s+1]=a;let c=s>>1;for(;r.length0&&Lc(r,n,i.text),i.forward(h),l+=h}let d=e[a++];for(;l>1].toJSON()))}return e}static of(e,n,r){let s=[],i=[],a=0,l=null;function c(h=!1){if(!h&&!s.length)return;ag||m<0||g>n)throw new RangeError(`Invalid change range ${m} to ${g} (in doc of length ${n})`);let y=x?typeof x=="string"?jn.of(x.split(r||fk)):x:jn.empty,w=y.length;if(m==g&&w==0)return;ma&&Fs(s,m-a,-1),Fs(s,g-m,w),Lc(i,s,y),a=g}}return d(e),c(!l),l}static empty(e){return new cs(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let n=[],r=[];for(let s=0;sl&&typeof a!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(i.length==1)n.push(i[0],0);else{for(;r.length=0&&n<=0&&n==t[s+1]?t[s]+=e:s>=0&&e==0&&t[s]==0?t[s+1]+=n:r?(t[s]+=e,t[s+1]+=n):t.push(e,n)}function Lc(t,e,n){if(n.length==0)return;let r=e.length-2>>1;if(r>1])),!(n||a==t.sections.length||t.sections[a+1]<0);)l=t.sections[a++],c=t.sections[a++];e(s,d,i,h,m),s=d,i=h}}}function pk(t,e,n,r=!1){let s=[],i=r?[]:null,a=new z0(t),l=new z0(e);for(let c=-1;;){if(a.done&&l.len||l.done&&a.len)throw new Error("Mismatched change set lengths");if(a.ins==-1&&l.ins==-1){let d=Math.min(a.len,l.len);Fs(s,d,-1),a.forward(d),l.forward(d)}else if(l.ins>=0&&(a.ins<0||c==a.i||a.off==0&&(l.len=0&&c=0){let d=0,h=a.len;for(;h;)if(l.ins==-1){let m=Math.min(h,l.len);d+=m,h-=m,l.forward(m)}else if(l.ins==0&&l.lenc||a.ins>=0&&a.len>c)&&(l||r.length>d),i.forward2(c),a.forward(c)}}}}class z0{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return n>=e.length?jn.empty:e[n]}textBit(e){let{inserted:n}=this.set,r=this.i-2>>1;return r>=n.length&&!e?jn.empty:n[r].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class Hu{constructor(e,n,r){this.from=e,this.to=n,this.flags=r}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(e,n=-1){let r,s;return this.empty?r=s=e.mapPos(this.from,n):(r=e.mapPos(this.from,1),s=e.mapPos(this.to,-1)),r==this.from&&s==this.to?this:new Hu(r,s,this.flags)}extend(e,n=e){if(e<=this.anchor&&n>=this.anchor)return Ae.range(e,n);let r=Math.abs(e-this.anchor)>Math.abs(n-this.anchor)?e:n;return Ae.range(this.anchor,r)}eq(e,n=!1){return this.anchor==e.anchor&&this.head==e.head&&(!n||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return Ae.range(e.anchor,e.head)}static create(e,n,r){return new Hu(e,n,r)}}class Ae{constructor(e,n){this.ranges=e,this.mainIndex=n}map(e,n=-1){return e.empty?this:Ae.create(this.ranges.map(r=>r.map(e,n)),this.mainIndex)}eq(e,n=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let r=0;re.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new Ae(e.ranges.map(n=>Hu.fromJSON(n)),e.main)}static single(e,n=e){return new Ae([Ae.range(e,n)],0)}static create(e,n=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let r=0,s=0;se?8:0)|i)}static normalized(e,n=0){let r=e[n];e.sort((s,i)=>s.from-i.from),n=e.indexOf(r);for(let s=1;si.head?Ae.range(c,l):Ae.range(l,c))}}return new Ae(e,n)}}function aF(t,e){for(let n of t.ranges)if(n.to>e)throw new RangeError("Selection points outside of document")}let Xj=0;class at{constructor(e,n,r,s,i){this.combine=e,this.compareInput=n,this.compare=r,this.isStatic=s,this.id=Xj++,this.default=e([]),this.extensions=typeof i=="function"?i(this):i}get reader(){return this}static define(e={}){return new at(e.combine||(n=>n),e.compareInput||((n,r)=>n===r),e.compare||(e.combine?(n,r)=>n===r:Yj),!!e.static,e.enables)}of(e){return new iv([],this,0,e)}compute(e,n){if(this.isStatic)throw new Error("Can't compute a static facet");return new iv(e,this,1,n)}computeN(e,n){if(this.isStatic)throw new Error("Can't compute a static facet");return new iv(e,this,2,n)}from(e,n){return n||(n=r=>r),this.compute([e],r=>n(r.field(e)))}}function Yj(t,e){return t==e||t.length==e.length&&t.every((n,r)=>n===e[r])}class iv{constructor(e,n,r,s){this.dependencies=e,this.facet=n,this.type=r,this.value=s,this.id=Xj++}dynamicSlot(e){var n;let r=this.value,s=this.facet.compareInput,i=this.id,a=e[i]>>1,l=this.type==2,c=!1,d=!1,h=[];for(let m of this.dependencies)m=="doc"?c=!0:m=="selection"?d=!0:(((n=e[m.id])!==null&&n!==void 0?n:1)&1)==0&&h.push(e[m.id]);return{create(m){return m.values[a]=r(m),1},update(m,g){if(c&&g.docChanged||d&&(g.docChanged||g.selection)||gk(m,h)){let x=r(m);if(l?!iE(x,m.values[a],s):!s(x,m.values[a]))return m.values[a]=x,1}return 0},reconfigure:(m,g)=>{let x,y=g.config.address[i];if(y!=null){let w=Lv(g,y);if(this.dependencies.every(S=>S instanceof at?g.facet(S)===m.facet(S):S instanceof Os?g.field(S,!1)==m.field(S,!1):!0)||(l?iE(x=r(m),w,s):s(x=r(m),w)))return m.values[a]=w,0}else x=r(m);return m.values[a]=x,1}}}}function iE(t,e,n){if(t.length!=e.length)return!1;for(let r=0;rt[c.id]),s=n.map(c=>c.type),i=r.filter(c=>!(c&1)),a=t[e.id]>>1;function l(c){let d=[];for(let h=0;hr===s),e);return e.provide&&(n.provides=e.provide(n)),n}create(e){let n=e.facet(Yx).find(r=>r.field==this);return(n?.create||this.createF)(e)}slot(e){let n=e[this.id]>>1;return{create:r=>(r.values[n]=this.create(r),1),update:(r,s)=>{let i=r.values[n],a=this.updateF(i,s);return this.compareF(i,a)?0:(r.values[n]=a,1)},reconfigure:(r,s)=>{let i=r.facet(Yx),a=s.facet(Yx),l;return(l=i.find(c=>c.field==this))&&l!=a.find(c=>c.field==this)?(r.values[n]=l.create(r),1):s.config.address[this.id]!=null?(r.values[n]=s.field(this),0):(r.values[n]=this.create(r),1)}}}init(e){return[this,Yx.of({field:this,create:e})]}get extension(){return this}}const Fu={lowest:4,low:3,default:2,high:1,highest:0};function Im(t){return e=>new oF(e,t)}const ou={highest:Im(Fu.highest),high:Im(Fu.high),default:Im(Fu.default),low:Im(Fu.low),lowest:Im(Fu.lowest)};class oF{constructor(e,n){this.inner=e,this.prec=n}}class nb{of(e){return new xk(this,e)}reconfigure(e){return nb.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class xk{constructor(e,n){this.compartment=e,this.inner=n}}class Iv{constructor(e,n,r,s,i,a){for(this.base=e,this.compartments=n,this.dynamicSlots=r,this.address=s,this.staticValues=i,this.facets=a,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,n,r){let s=[],i=Object.create(null),a=new Map;for(let g of pae(e,n,a))g instanceof Os?s.push(g):(i[g.facet.id]||(i[g.facet.id]=[])).push(g);let l=Object.create(null),c=[],d=[];for(let g of s)l[g.id]=d.length<<1,d.push(x=>g.slot(x));let h=r?.config.facets;for(let g in i){let x=i[g],y=x[0].facet,w=h&&h[g]||[];if(x.every(S=>S.type==0))if(l[y.id]=c.length<<1|1,Yj(w,x))c.push(r.facet(y));else{let S=y.combine(x.map(k=>k.value));c.push(r&&y.compare(S,r.facet(y))?r.facet(y):S)}else{for(let S of x)S.type==0?(l[S.id]=c.length<<1|1,c.push(S.value)):(l[S.id]=d.length<<1,d.push(k=>S.dynamicSlot(k)));l[y.id]=d.length<<1,d.push(S=>mae(S,y,x))}}let m=d.map(g=>g(l));return new Iv(e,a,m,l,c,i)}}function pae(t,e,n){let r=[[],[],[],[],[]],s=new Map;function i(a,l){let c=s.get(a);if(c!=null){if(c<=l)return;let d=r[c].indexOf(a);d>-1&&r[c].splice(d,1),a instanceof xk&&n.delete(a.compartment)}if(s.set(a,l),Array.isArray(a))for(let d of a)i(d,l);else if(a instanceof xk){if(n.has(a.compartment))throw new RangeError("Duplicate use of compartment in extensions");let d=e.get(a.compartment)||a.inner;n.set(a.compartment,d),i(d,l)}else if(a instanceof oF)i(a.inner,a.prec);else if(a instanceof Os)r[l].push(a),a.provides&&i(a.provides,l);else if(a instanceof iv)r[l].push(a),a.facet.extensions&&i(a.facet.extensions,Fu.default);else{let d=a.extension;if(!d)throw new Error(`Unrecognized extension value in extension set (${a}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);i(d,l)}}return i(t,Fu.default),r.reduce((a,l)=>a.concat(l))}function v0(t,e){if(e&1)return 2;let n=e>>1,r=t.status[n];if(r==4)throw new Error("Cyclic dependency between fields and/or facets");if(r&2)return r;t.status[n]=4;let s=t.computeSlot(t,t.config.dynamicSlots[n]);return t.status[n]=2|s}function Lv(t,e){return e&1?t.config.staticValues[e>>1]:t.values[e>>1]}const lF=at.define(),vk=at.define({combine:t=>t.some(e=>e),static:!0}),cF=at.define({combine:t=>t.length?t[0]:void 0,static:!0}),uF=at.define(),dF=at.define(),hF=at.define(),fF=at.define({combine:t=>t.length?t[0]:!1});class Fo{constructor(e,n){this.type=e,this.value=n}static define(){return new gae}}class gae{of(e){return new Fo(this,e)}}class xae{constructor(e){this.map=e}of(e){return new Ft(this,e)}}class Ft{constructor(e,n){this.type=e,this.value=n}map(e){let n=this.type.map(this.value,e);return n===void 0?void 0:n==this.value?this:new Ft(this.type,n)}is(e){return this.type==e}static define(e={}){return new xae(e.map||(n=>n))}static mapEffects(e,n){if(!e.length)return e;let r=[];for(let s of e){let i=s.map(n);i&&r.push(i)}return r}}Ft.reconfigure=Ft.define();Ft.appendConfig=Ft.define();class ns{constructor(e,n,r,s,i,a){this.startState=e,this.changes=n,this.selection=r,this.effects=s,this.annotations=i,this.scrollIntoView=a,this._doc=null,this._state=null,r&&aF(r,n.newLength),i.some(l=>l.type==ns.time)||(this.annotations=i.concat(ns.time.of(Date.now())))}static create(e,n,r,s,i,a){return new ns(e,n,r,s,i,a)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let n of this.annotations)if(n.type==e)return n.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let n=this.annotation(ns.userEvent);return!!(n&&(n==e||n.length>e.length&&n.slice(0,e.length)==e&&n[e.length]=="."))}}ns.time=Fo.define();ns.userEvent=Fo.define();ns.addToHistory=Fo.define();ns.remote=Fo.define();function vae(t,e){let n=[];for(let r=0,s=0;;){let i,a;if(r=t[r]))i=t[r++],a=t[r++];else if(s=0;s--){let i=r[s](t);i instanceof ns?t=i:Array.isArray(i)&&i.length==1&&i[0]instanceof ns?t=i[0]:t=pF(e,Dh(i),!1)}return t}function bae(t){let e=t.startState,n=e.facet(hF),r=t;for(let s=n.length-1;s>=0;s--){let i=n[s](t);i&&Object.keys(i).length&&(r=mF(r,yk(e,i,t.changes.newLength),!0))}return r==t?t:ns.create(e,t.changes,t.selection,r.effects,r.annotations,r.scrollIntoView)}const wae=[];function Dh(t){return t==null?wae:Array.isArray(t)?t:[t]}var wr=(function(t){return t[t.Word=0]="Word",t[t.Space=1]="Space",t[t.Other=2]="Other",t})(wr||(wr={}));const Sae=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let bk;try{bk=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function kae(t){if(bk)return bk.test(t);for(let e=0;e"€"&&(n.toUpperCase()!=n.toLowerCase()||Sae.test(n)))return!0}return!1}function Oae(t){return e=>{if(!/\S/.test(e))return wr.Space;if(kae(e))return wr.Word;for(let n=0;n-1)return wr.Word;return wr.Other}}class bn{constructor(e,n,r,s,i,a){this.config=e,this.doc=n,this.selection=r,this.values=s,this.status=e.statusTemplate.slice(),this.computeSlot=i,a&&(a._state=this);for(let l=0;ls.set(d,c)),n=null),s.set(l.value.compartment,l.value.extension)):l.is(Ft.reconfigure)?(n=null,r=l.value):l.is(Ft.appendConfig)&&(n=null,r=Dh(r).concat(l.value));let i;n?i=e.startState.values.slice():(n=Iv.resolve(r,s,this),i=new bn(n,this.doc,this.selection,n.dynamicSlots.map(()=>null),(c,d)=>d.reconfigure(c,this),null).values);let a=e.startState.facet(vk)?e.newSelection:e.newSelection.asSingle();new bn(n,e.newDoc,a,i,(l,c)=>c.update(l,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(n=>({changes:{from:n.from,to:n.to,insert:e},range:Ae.cursor(n.from+e.length)}))}changeByRange(e){let n=this.selection,r=e(n.ranges[0]),s=this.changes(r.changes),i=[r.range],a=Dh(r.effects);for(let l=1;la.spec.fromJSON(l,c)))}}return bn.create({doc:e.doc,selection:Ae.fromJSON(e.selection),extensions:n.extensions?s.concat([n.extensions]):s})}static create(e={}){let n=Iv.resolve(e.extensions||[],new Map),r=e.doc instanceof jn?e.doc:jn.of((e.doc||"").split(n.staticFacet(bn.lineSeparator)||fk)),s=e.selection?e.selection instanceof Ae?e.selection:Ae.single(e.selection.anchor,e.selection.head):Ae.single(0);return aF(s,r.length),n.staticFacet(vk)||(s=s.asSingle()),new bn(n,r,s,n.dynamicSlots.map(()=>null),(i,a)=>a.create(i),null)}get tabSize(){return this.facet(bn.tabSize)}get lineBreak(){return this.facet(bn.lineSeparator)||` -`}get readOnly(){return this.facet(fF)}phrase(e,...n){for(let r of this.facet(bn.phrases))if(Object.prototype.hasOwnProperty.call(r,e)){e=r[e];break}return n.length&&(e=e.replace(/\$(\$|\d*)/g,(r,s)=>{if(s=="$")return"$";let i=+(s||1);return!i||i>n.length?r:n[i-1]})),e}languageDataAt(e,n,r=-1){let s=[];for(let i of this.facet(lF))for(let a of i(this,n,r))Object.prototype.hasOwnProperty.call(a,e)&&s.push(a[e]);return s}charCategorizer(e){return Oae(this.languageDataAt("wordChars",e).join(""))}wordAt(e){let{text:n,from:r,length:s}=this.doc.lineAt(e),i=this.charCategorizer(e),a=e-r,l=e-r;for(;a>0;){let c=Ds(n,a,!1);if(i(n.slice(c,a))!=wr.Word)break;a=c}for(;lt.length?t[0]:4});bn.lineSeparator=cF;bn.readOnly=fF;bn.phrases=at.define({compare(t,e){let n=Object.keys(t),r=Object.keys(e);return n.length==r.length&&n.every(s=>t[s]==e[s])}});bn.languageData=lF;bn.changeFilter=uF;bn.transactionFilter=dF;bn.transactionExtender=hF;nb.reconfigure=Ft.define();function qo(t,e,n={}){let r={};for(let s of t)for(let i of Object.keys(s)){let a=s[i],l=r[i];if(l===void 0)r[i]=a;else if(!(l===a||a===void 0))if(Object.hasOwnProperty.call(n,i))r[i]=n[i](l,a);else throw new Error("Config merge conflict for field "+i)}for(let s in e)r[s]===void 0&&(r[s]=e[s]);return r}class sd{eq(e){return this==e}range(e,n=e){return wk.create(e,n,this)}}sd.prototype.startSide=sd.prototype.endSide=0;sd.prototype.point=!1;sd.prototype.mapMode=Rs.TrackDel;let wk=class gF{constructor(e,n,r){this.from=e,this.to=n,this.value=r}static create(e,n,r){return new gF(e,n,r)}};function Sk(t,e){return t.from-e.from||t.value.startSide-e.value.startSide}class Kj{constructor(e,n,r,s){this.from=e,this.to=n,this.value=r,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(e,n,r,s=0){let i=r?this.to:this.from;for(let a=s,l=i.length;;){if(a==l)return a;let c=a+l>>1,d=i[c]-e||(r?this.value[c].endSide:this.value[c].startSide)-n;if(c==a)return d>=0?a:l;d>=0?l=c:a=c+1}}between(e,n,r,s){for(let i=this.findIndex(n,-1e9,!0),a=this.findIndex(r,1e9,!1,i);ix||g==x&&d.startSide>0&&d.endSide<=0)continue;(x-g||d.endSide-d.startSide)<0||(a<0&&(a=g),d.point&&(l=Math.max(l,x-g)),r.push(d),s.push(g-a),i.push(x-a))}return{mapped:r.length?new Kj(s,i,r,l):null,pos:a}}}class Rn{constructor(e,n,r,s){this.chunkPos=e,this.chunk=n,this.nextLayer=r,this.maxPoint=s}static create(e,n,r,s){return new Rn(e,n,r,s)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let n of this.chunk)e+=n.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:n=[],sort:r=!1,filterFrom:s=0,filterTo:i=this.length}=e,a=e.filter;if(n.length==0&&!a)return this;if(r&&(n=n.slice().sort(Sk)),this.isEmpty)return n.length?Rn.of(n):this;let l=new xF(this,null,-1).goto(0),c=0,d=[],h=new Fl;for(;l.value||c=0){let m=n[c++];h.addInner(m.from,m.to,m.value)||d.push(m)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||il.to||i=i&&e<=i+a.length&&a.between(i,e-i,n-i,r)===!1)return}this.nextLayer.between(e,n,r)}}iter(e=0){return I0.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,n=0){return I0.from(e).goto(n)}static compare(e,n,r,s,i=-1){let a=e.filter(m=>m.maxPoint>0||!m.isEmpty&&m.maxPoint>=i),l=n.filter(m=>m.maxPoint>0||!m.isEmpty&&m.maxPoint>=i),c=aE(a,l,r),d=new Lm(a,c,i),h=new Lm(l,c,i);r.iterGaps((m,g,x)=>oE(d,m,h,g,x,s)),r.empty&&r.length==0&&oE(d,0,h,0,0,s)}static eq(e,n,r=0,s){s==null&&(s=999999999);let i=e.filter(h=>!h.isEmpty&&n.indexOf(h)<0),a=n.filter(h=>!h.isEmpty&&e.indexOf(h)<0);if(i.length!=a.length)return!1;if(!i.length)return!0;let l=aE(i,a),c=new Lm(i,l,0).goto(r),d=new Lm(a,l,0).goto(r);for(;;){if(c.to!=d.to||!kk(c.active,d.active)||c.point&&(!d.point||!c.point.eq(d.point)))return!1;if(c.to>s)return!0;c.next(),d.next()}}static spans(e,n,r,s,i=-1){let a=new Lm(e,null,i).goto(n),l=n,c=a.openStart;for(;;){let d=Math.min(a.to,r);if(a.point){let h=a.activeForPoint(a.to),m=a.pointFroml&&(s.span(l,d,a.active,c),c=a.openEnd(d));if(a.to>r)return c+(a.point&&a.to>r?1:0);l=a.to,a.next()}}static of(e,n=!1){let r=new Fl;for(let s of e instanceof wk?[e]:n?jae(e):e)r.add(s.from,s.to,s.value);return r.finish()}static join(e){if(!e.length)return Rn.empty;let n=e[e.length-1];for(let r=e.length-2;r>=0;r--)for(let s=e[r];s!=Rn.empty;s=s.nextLayer)n=new Rn(s.chunkPos,s.chunk,n,Math.max(s.maxPoint,n.maxPoint));return n}}Rn.empty=new Rn([],[],null,-1);function jae(t){if(t.length>1)for(let e=t[0],n=1;n0)return t.slice().sort(Sk);e=r}return t}Rn.empty.nextLayer=Rn.empty;class Fl{finishChunk(e){this.chunks.push(new Kj(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,n,r){this.addInner(e,n,r)||(this.nextLayer||(this.nextLayer=new Fl)).add(e,n,r)}addInner(e,n,r){let s=e-this.lastTo||r.startSide-this.last.endSide;if(s<=0&&(e-this.lastFrom||r.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(n-this.chunkStart),this.last=r,this.lastFrom=e,this.lastTo=n,this.value.push(r),r.point&&(this.maxPoint=Math.max(this.maxPoint,n-e)),!0)}addChunk(e,n){if((e-this.lastTo||n.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,n.maxPoint),this.chunks.push(n),this.chunkPos.push(e);let r=n.value.length-1;return this.last=n.value[r],this.lastFrom=n.from[r]+e,this.lastTo=n.to[r]+e,!0}finish(){return this.finishInner(Rn.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let n=Rn.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,n}}function aE(t,e,n){let r=new Map;for(let i of t)for(let a=0;a=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=r&&s.push(new xF(a,n,r,i));return s.length==1?s[0]:new I0(s)}get startSide(){return this.value?this.value.startSide:0}goto(e,n=-1e9){for(let r of this.heap)r.goto(e,n);for(let r=this.heap.length>>1;r>=0;r--)C4(this.heap,r);return this.next(),this}forward(e,n){for(let r of this.heap)r.forward(e,n);for(let r=this.heap.length>>1;r>=0;r--)C4(this.heap,r);(this.to-e||this.value.endSide-n)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),C4(this.heap,0)}}}function C4(t,e){for(let n=t[e];;){let r=(e<<1)+1;if(r>=t.length)break;let s=t[r];if(r+1=0&&(s=t[r+1],r++),n.compare(s)<0)break;t[r]=n,t[e]=s,e=r}}class Lm{constructor(e,n,r){this.minPoint=r,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=I0.from(e,n,r)}goto(e,n=-1e9){return this.cursor.goto(e,n),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=n,this.openStart=-1,this.next(),this}forward(e,n){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-n)<0;)this.removeActive(this.minActive);this.cursor.forward(e,n)}removeActive(e){Kx(this.active,e),Kx(this.activeTo,e),Kx(this.activeRank,e),this.minActive=lE(this.active,this.activeTo)}addActive(e){let n=0,{value:r,to:s,rank:i}=this.cursor;for(;n0;)n++;Zx(this.active,n,r),Zx(this.activeTo,n,s),Zx(this.activeRank,n,i),e&&Zx(e,n,this.cursor.from),this.minActive=lE(this.active,this.activeTo)}next(){let e=this.to,n=this.point;this.point=null;let r=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>e){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),r&&Kx(r,s)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let i=this.cursor.value;if(!i.point)this.addActive(r),this.cursor.next();else if(n&&this.cursor.to==this.to&&this.cursor.from=0&&r[s]=0&&!(this.activeRank[r]e||this.activeTo[r]==e&&this.active[r].endSide>=this.point.endSide)&&n.push(this.active[r]);return n.reverse()}openEnd(e){let n=0;for(let r=this.activeTo.length-1;r>=0&&this.activeTo[r]>e;r--)n++;return n}}function oE(t,e,n,r,s,i){t.goto(e),n.goto(r);let a=r+s,l=r,c=r-e;for(;;){let d=t.to+c-n.to,h=d||t.endSide-n.endSide,m=h<0?t.to+c:n.to,g=Math.min(m,a);if(t.point||n.point?t.point&&n.point&&(t.point==n.point||t.point.eq(n.point))&&kk(t.activeForPoint(t.to),n.activeForPoint(n.to))||i.comparePoint(l,g,t.point,n.point):g>l&&!kk(t.active,n.active)&&i.compareRange(l,g,t.active,n.active),m>a)break;(d||t.openEnd!=n.openEnd)&&i.boundChange&&i.boundChange(m),l=m,h<=0&&t.next(),h>=0&&n.next()}}function kk(t,e){if(t.length!=e.length)return!1;for(let n=0;n=e;r--)t[r+1]=t[r];t[e]=n}function lE(t,e){let n=-1,r=1e9;for(let s=0;s=e)return s;if(s==t.length)break;i+=t.charCodeAt(s)==9?n-i%n:1,s=Ds(t,s)}return r===!0?-1:t.length}const jk="ͼ",cE=typeof Symbol>"u"?"__"+jk:Symbol.for(jk),Nk=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),uE=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{};class Wc{constructor(e,n){this.rules=[];let{finish:r}=n||{};function s(a){return/^@/.test(a)?[a]:a.split(/,\s*/)}function i(a,l,c,d){let h=[],m=/^@(\w+)\b/.exec(a[0]),g=m&&m[1]=="keyframes";if(m&&l==null)return c.push(a[0]+";");for(let x in l){let y=l[x];if(/&/.test(x))i(x.split(/,\s*/).map(w=>a.map(S=>w.replace(/&/,S))).reduce((w,S)=>w.concat(S)),y,c);else if(y&&typeof y=="object"){if(!m)throw new RangeError("The value of a property ("+x+") should be a primitive value.");i(s(x),y,h,g)}else y!=null&&h.push(x.replace(/_.*/,"").replace(/[A-Z]/g,w=>"-"+w.toLowerCase())+": "+y+";")}(h.length||g)&&c.push((r&&!m&&!d?a.map(r):a).join(", ")+" {"+h.join(" ")+"}")}for(let a in e)i(s(a),e[a],this.rules)}getRules(){return this.rules.join(` -`)}static newName(){let e=uE[cE]||1;return uE[cE]=e+1,jk+e.toString(36)}static mount(e,n,r){let s=e[Nk],i=r&&r.nonce;s?i&&s.setNonce(i):s=new Nae(e,i),s.mount(Array.isArray(n)?n:[n],e)}}let dE=new Map;class Nae{constructor(e,n){let r=e.ownerDocument||e,s=r.defaultView;if(!e.head&&e.adoptedStyleSheets&&s.CSSStyleSheet){let i=dE.get(r);if(i)return e[Nk]=i;this.sheet=new s.CSSStyleSheet,dE.set(r,this)}else this.styleTag=r.createElement("style"),n&&this.styleTag.setAttribute("nonce",n);this.modules=[],e[Nk]=this}mount(e,n){let r=this.sheet,s=0,i=0;for(let a=0;a-1&&(this.modules.splice(c,1),i--,c=-1),c==-1){if(this.modules.splice(i++,0,l),r)for(let d=0;d",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},Cae=typeof navigator<"u"&&/Mac/.test(navigator.platform),Tae=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(var As=0;As<10;As++)Gc[48+As]=Gc[96+As]=String(As);for(var As=1;As<=24;As++)Gc[As+111]="F"+As;for(var As=65;As<=90;As++)Gc[As]=String.fromCharCode(As+32),L0[As]=String.fromCharCode(As);for(var T4 in Gc)L0.hasOwnProperty(T4)||(L0[T4]=Gc[T4]);function Eae(t){var e=Cae&&t.metaKey&&t.shiftKey&&!t.ctrlKey&&!t.altKey||Tae&&t.shiftKey&&t.key&&t.key.length==1||t.key=="Unidentified",n=!e&&t.key||(t.shiftKey?L0:Gc)[t.keyCode]||t.key||"Unidentified";return n=="Esc"&&(n="Escape"),n=="Del"&&(n="Delete"),n=="Left"&&(n="ArrowLeft"),n=="Up"&&(n="ArrowUp"),n=="Right"&&(n="ArrowRight"),n=="Down"&&(n="ArrowDown"),n}function sr(){var t=arguments[0];typeof t=="string"&&(t=document.createElement(t));var e=1,n=arguments[1];if(n&&typeof n=="object"&&n.nodeType==null&&!Array.isArray(n)){for(var r in n)if(Object.prototype.hasOwnProperty.call(n,r)){var s=n[r];typeof s=="string"?t.setAttribute(r,s):s!=null&&(t[r]=s)}e++}for(;e2);var et={mac:fE||/Mac/.test(Ks.platform),windows:/Win/.test(Ks.platform),linux:/Linux|X11/.test(Ks.platform),ie:rb,ie_version:yF?Ck.documentMode||6:Ek?+Ek[1]:Tk?+Tk[1]:0,gecko:hE,gecko_version:hE?+(/Firefox\/(\d+)/.exec(Ks.userAgent)||[0,0])[1]:0,chrome:!!E4,chrome_version:E4?+E4[1]:0,ios:fE,android:/Android\b/.test(Ks.userAgent),webkit_version:_ae?+(/\bAppleWebKit\/(\d+)/.exec(Ks.userAgent)||[0,0])[1]:0,safari:_k,safari_version:_k?+(/\bVersion\/(\d+(\.\d+)?)/.exec(Ks.userAgent)||[0,0])[1]:0,tabSize:Ck.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function B0(t){let e;return t.nodeType==11?e=t.getSelection?t:t.ownerDocument:e=t,e.getSelection()}function Mk(t,e){return e?t==e||t.contains(e.nodeType!=1?e.parentNode:e):!1}function av(t,e){if(!e.anchorNode)return!1;try{return Mk(t,e.anchorNode)}catch{return!1}}function Kh(t){return t.nodeType==3?ad(t,0,t.nodeValue.length).getClientRects():t.nodeType==1?t.getClientRects():[]}function y0(t,e,n,r){return n?mE(t,e,n,r,-1)||mE(t,e,n,r,1):!1}function id(t){for(var e=0;;e++)if(t=t.previousSibling,!t)return e}function Bv(t){return t.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(t.nodeName)}function mE(t,e,n,r,s){for(;;){if(t==n&&e==r)return!0;if(e==(s<0?0:Io(t))){if(t.nodeName=="DIV")return!1;let i=t.parentNode;if(!i||i.nodeType!=1)return!1;e=id(t)+(s<0?0:1),t=i}else if(t.nodeType==1){if(t=t.childNodes[e+(s<0?-1:0)],t.nodeType==1&&t.contentEditable=="false")return!1;e=s<0?Io(t):0}else return!1}}function Io(t){return t.nodeType==3?t.nodeValue.length:t.childNodes.length}function Bp(t,e){let n=e?t.left:t.right;return{left:n,right:n,top:t.top,bottom:t.bottom}}function Mae(t){let e=t.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:t.innerWidth,top:0,bottom:t.innerHeight}}function bF(t,e){let n=e.width/t.offsetWidth,r=e.height/t.offsetHeight;return(n>.995&&n<1.005||!isFinite(n)||Math.abs(e.width-t.offsetWidth)<1)&&(n=1),(r>.995&&r<1.005||!isFinite(r)||Math.abs(e.height-t.offsetHeight)<1)&&(r=1),{scaleX:n,scaleY:r}}function Aae(t,e,n,r,s,i,a,l){let c=t.ownerDocument,d=c.defaultView||window;for(let h=t,m=!1;h&&!m;)if(h.nodeType==1){let g,x=h==c.body,y=1,w=1;if(x)g=Mae(d);else{if(/^(fixed|sticky)$/.test(getComputedStyle(h).position)&&(m=!0),h.scrollHeight<=h.clientHeight&&h.scrollWidth<=h.clientWidth){h=h.assignedSlot||h.parentNode;continue}let j=h.getBoundingClientRect();({scaleX:y,scaleY:w}=bF(h,j)),g={left:j.left,right:j.left+h.clientWidth*y,top:j.top,bottom:j.top+h.clientHeight*w}}let S=0,k=0;if(s=="nearest")e.top0&&e.bottom>g.bottom+k&&(k=e.bottom-g.bottom+a)):e.bottom>g.bottom&&(k=e.bottom-g.bottom+a,n<0&&e.top-k0&&e.right>g.right+S&&(S=e.right-g.right+i)):e.right>g.right&&(S=e.right-g.right+i,n<0&&e.leftg.bottom||e.leftg.right)&&(e={left:Math.max(e.left,g.left),right:Math.min(e.right,g.right),top:Math.max(e.top,g.top),bottom:Math.min(e.bottom,g.bottom)}),h=h.assignedSlot||h.parentNode}else if(h.nodeType==11)h=h.host;else break}function Rae(t){let e=t.ownerDocument,n,r;for(let s=t.parentNode;s&&!(s==e.body||n&&r);)if(s.nodeType==1)!r&&s.scrollHeight>s.clientHeight&&(r=s),!n&&s.scrollWidth>s.clientWidth&&(n=s),s=s.assignedSlot||s.parentNode;else if(s.nodeType==11)s=s.host;else break;return{x:n,y:r}}class Dae{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:n,focusNode:r}=e;this.set(n,Math.min(e.anchorOffset,n?Io(n):0),r,Math.min(e.focusOffset,r?Io(r):0))}set(e,n,r,s){this.anchorNode=e,this.anchorOffset=n,this.focusNode=r,this.focusOffset=s}}let Iu=null;et.safari&&et.safari_version>=26&&(Iu=!1);function wF(t){if(t.setActive)return t.setActive();if(Iu)return t.focus(Iu);let e=[];for(let n=t;n&&(e.push(n,n.scrollTop,n.scrollLeft),n!=n.ownerDocument);n=n.parentNode);if(t.focus(Iu==null?{get preventScroll(){return Iu={preventScroll:!0},!0}}:void 0),!Iu){Iu=!1;for(let n=0;nMath.max(1,t.scrollHeight-t.clientHeight-4)}function OF(t,e){for(let n=t,r=e;;){if(n.nodeType==3&&r>0)return{node:n,offset:r};if(n.nodeType==1&&r>0){if(n.contentEditable=="false")return null;n=n.childNodes[r-1],r=Io(n)}else if(n.parentNode&&!Bv(n))r=id(n),n=n.parentNode;else return null}}function jF(t,e){for(let n=t,r=e;;){if(n.nodeType==3&&rn)return m.domBoundsAround(e,n,d);if(g>=e&&s==-1&&(s=c,i=d),d>n&&m.dom.parentNode==this.dom){a=c,l=h;break}h=g,d=g+m.breakAfter}return{from:i,to:l<0?r+this.length:l,startDOM:(s?this.children[s-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:a=0?this.children[a].dom:null}}markDirty(e=!1){this.flags|=2,this.markParentsDirty(e)}markParentsDirty(e){for(let n=this.parent;n;n=n.parent){if(e&&(n.flags|=2),n.flags&1)return;n.flags|=1,e=!1}}setParent(e){this.parent!=e&&(this.parent=e,this.flags&7&&this.markParentsDirty(!0))}setDOM(e){this.dom!=e&&(this.dom&&(this.dom.cmView=null),this.dom=e,e.cmView=this)}get rootView(){for(let e=this;;){let n=e.parent;if(!n)return e;e=n}}replaceChildren(e,n,r=Zj){this.markDirty();for(let s=e;sthis.pos||e==this.pos&&(n>0||this.i==0||this.children[this.i-1].breakAfter))return this.off=e-this.pos,this;let r=this.children[--this.i];this.pos-=r.length+r.breakAfter}}}function CF(t,e,n,r,s,i,a,l,c){let{children:d}=t,h=d.length?d[e]:null,m=i.length?i[i.length-1]:null,g=m?m.breakAfter:a;if(!(e==r&&h&&!a&&!g&&i.length<2&&h.merge(n,s,i.length?m:null,n==0,l,c))){if(r0&&(!a&&i.length&&h.merge(n,h.length,i[0],!1,l,0)?h.breakAfter=i.shift().breakAfter:(nIae||r.flags&8)?!1:(this.text=this.text.slice(0,e)+(r?r.text:"")+this.text.slice(n),this.markDirty(),!0)}split(e){let n=new Ya(this.text.slice(e));return this.text=this.text.slice(0,e),this.markDirty(),n.flags|=this.flags&8,n}localPosFromDOM(e,n){return e==this.dom?n:n?this.text.length:0}domAtPos(e){return new Hs(this.dom,e)}domBoundsAround(e,n,r){return{from:r,to:r+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(e,n){return Lae(this.dom,e,n)}}class ql extends er{constructor(e,n=[],r=0){super(),this.mark=e,this.children=n,this.length=r;for(let s of n)s.setParent(this)}setAttrs(e){if(SF(e),this.mark.class&&(e.className=this.mark.class),this.mark.attrs)for(let n in this.mark.attrs)e.setAttribute(n,this.mark.attrs[n]);return e}canReuseDOM(e){return super.canReuseDOM(e)&&!((this.flags|e.flags)&8)}reuseDOM(e){e.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(e),this.flags|=6)}sync(e,n){this.dom?this.flags&4&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(e,n)}merge(e,n,r,s,i,a){return r&&(!(r instanceof ql&&r.mark.eq(this.mark))||e&&i<=0||ne&&n.push(r=e&&(s=i),r=c,i++}let a=this.length-e;return this.length=e,s>-1&&(this.children.length=s,this.markDirty()),new ql(this.mark,n,a)}domAtPos(e){return EF(this,e)}coordsAt(e,n){return MF(this,e,n)}}function Lae(t,e,n){let r=t.nodeValue.length;e>r&&(e=r);let s=e,i=e,a=0;e==0&&n<0||e==r&&n>=0?et.chrome||et.gecko||(e?(s--,a=1):i=0)?0:l.length-1];return et.safari&&!a&&c.width==0&&(c=Array.prototype.find.call(l,d=>d.width)||c),a?Bp(c,a<0):c||null}class _l extends er{static create(e,n,r){return new _l(e,n,r)}constructor(e,n,r){super(),this.widget=e,this.length=n,this.side=r,this.prevWidget=null}split(e){let n=_l.create(this.widget,this.length-e,this.side);return this.length-=e,n}sync(e){(!this.dom||!this.widget.updateDOM(this.dom,e))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(e)),this.widget.editable||(this.dom.contentEditable="false"))}getSide(){return this.side}merge(e,n,r,s,i,a){return r&&(!(r instanceof _l)||!this.widget.compare(r.widget)||e>0&&i<=0||n0)?Hs.before(this.dom):Hs.after(this.dom,e==this.length)}domBoundsAround(){return null}coordsAt(e,n){let r=this.widget.coordsAt(this.dom,e,n);if(r)return r;let s=this.dom.getClientRects(),i=null;if(!s.length)return null;let a=this.side?this.side<0:e>0;for(let l=a?s.length-1:0;i=s[l],!(e>0?l==0:l==s.length-1||i.top0?Hs.before(this.dom):Hs.after(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(e){return this.dom.getBoundingClientRect()}get overrideDOMText(){return jn.empty}get isHidden(){return!0}}Ya.prototype.children=_l.prototype.children=Zh.prototype.children=Zj;function EF(t,e){let n=t.dom,{children:r}=t,s=0;for(let i=0;si&&e0;i--){let a=r[i-1];if(a.dom.parentNode==n)return a.domAtPos(a.length)}for(let i=s;i0&&e instanceof ql&&s.length&&(r=s[s.length-1])instanceof ql&&r.mark.eq(e.mark)?_F(r,e.children[0],n-1):(s.push(e),e.setParent(t)),t.length+=e.length}function MF(t,e,n){let r=null,s=-1,i=null,a=-1;function l(d,h){for(let m=0,g=0;m=h&&(x.children.length?l(x,h-g):(!i||i.isHidden&&(n>0||Fae(i,x)))&&(y>h||g==y&&x.getSide()>0)?(i=x,a=h-g):(g-1?1:0)!=s.length-(n&&s.indexOf(n)>-1?1:0))return!1;for(let i of r)if(i!=n&&(s.indexOf(i)==-1||t[i]!==e[i]))return!1;return!0}function Rk(t,e,n){let r=!1;if(e)for(let s in e)n&&s in n||(r=!0,s=="style"?t.style.cssText="":t.removeAttribute(s));if(n)for(let s in n)e&&e[s]==n[s]||(r=!0,s=="style"?t.style.cssText=n[s]:t.setAttribute(s,n[s]));return r}function qae(t){let e=Object.create(null);for(let n=0;n0?3e8:-4e8:n>0?1e8:-1e8,new Xc(e,n,n,r,e.widget||null,!1)}static replace(e){let n=!!e.block,r,s;if(e.isBlockGap)r=-5e8,s=4e8;else{let{start:i,end:a}=AF(e,n);r=(i?n?-3e8:-1:5e8)-1,s=(a?n?2e8:1:-6e8)+1}return new Xc(e,r,s,n,e.widget||null,!0)}static line(e){return new qp(e)}static set(e,n=!1){return Rn.of(e,n)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}}kt.none=Rn.empty;class Fp extends kt{constructor(e){let{start:n,end:r}=AF(e);super(n?-1:5e8,r?1:-6e8,null,e),this.tagName=e.tagName||"span",this.class=e.class||"",this.attrs=e.attributes||null}eq(e){var n,r;return this==e||e instanceof Fp&&this.tagName==e.tagName&&(this.class||((n=this.attrs)===null||n===void 0?void 0:n.class))==(e.class||((r=e.attrs)===null||r===void 0?void 0:r.class))&&Fv(this.attrs,e.attrs,"class")}range(e,n=e){if(e>=n)throw new RangeError("Mark decorations may not be empty");return super.range(e,n)}}Fp.prototype.point=!1;class qp extends kt{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof qp&&this.spec.class==e.spec.class&&Fv(this.spec.attributes,e.spec.attributes)}range(e,n=e){if(n!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,n)}}qp.prototype.mapMode=Rs.TrackBefore;qp.prototype.point=!0;class Xc extends kt{constructor(e,n,r,s,i,a){super(n,r,i,e),this.block=s,this.isReplace=a,this.mapMode=s?n<=0?Rs.TrackBefore:Rs.TrackAfter:Rs.TrackDel}get type(){return this.startSide!=this.endSide?ti.WidgetRange:this.startSide<=0?ti.WidgetBefore:ti.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof Xc&&$ae(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,n=e){if(this.isReplace&&(e>n||e==n&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&n!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,n)}}Xc.prototype.point=!0;function AF(t,e=!1){let{inclusiveStart:n,inclusiveEnd:r}=t;return n==null&&(n=t.inclusive),r==null&&(r=t.inclusive),{start:n??e,end:r??e}}function $ae(t,e){return t==e||!!(t&&e&&t.compare(e))}function ov(t,e,n,r=0){let s=n.length-1;s>=0&&n[s]+r>=t?n[s]=Math.max(n[s],e):n.push(t,e)}class es extends er{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(e,n,r,s,i,a){if(r){if(!(r instanceof es))return!1;this.dom||r.transferDOM(this)}return s&&this.setDeco(r?r.attrs:null),TF(this,e,n,r?r.children.slice():[],i,a),!0}split(e){let n=new es;if(n.breakAfter=this.breakAfter,this.length==0)return n;let{i:r,off:s}=this.childPos(e);s&&(n.append(this.children[r].split(s),0),this.children[r].merge(s,this.children[r].length,null,!1,0,0),r++);for(let i=r;i0&&this.children[r-1].length==0;)this.children[--r].destroy();return this.children.length=r,this.markDirty(),this.length=e,n}transferDOM(e){this.dom&&(this.markDirty(),e.setDOM(this.dom),e.prevAttrs=this.prevAttrs===void 0?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(e){Fv(this.attrs,e)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=e)}append(e,n){_F(this,e,n)}addLineDeco(e){let n=e.spec.attributes,r=e.spec.class;n&&(this.attrs=Ak(n,this.attrs||{})),r&&(this.attrs=Ak({class:r},this.attrs||{}))}domAtPos(e){return EF(this,e)}reuseDOM(e){e.nodeName=="DIV"&&(this.setDOM(e),this.flags|=6)}sync(e,n){var r;this.dom?this.flags&4&&(SF(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),this.prevAttrs!==void 0&&(Rk(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(e,n);let s=this.dom.lastChild;for(;s&&er.get(s)instanceof ql;)s=s.lastChild;if(!s||!this.length||s.nodeName!="BR"&&((r=er.get(s))===null||r===void 0?void 0:r.isEditable)==!1&&(!et.ios||!this.children.some(i=>i instanceof Ya))){let i=document.createElement("BR");i.cmIgnore=!0,this.dom.appendChild(i)}}measureTextSize(){if(this.children.length==0||this.length>20)return null;let e=0,n;for(let r of this.children){if(!(r instanceof Ya)||/[^ -~]/.test(r.text))return null;let s=Kh(r.dom);if(s.length!=1)return null;e+=s[0].width,n=s[0].height}return e?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length,textHeight:n}:null}coordsAt(e,n){let r=MF(this,e,n);if(!this.children.length&&r&&this.parent){let{heightOracle:s}=this.parent.view.viewState,i=r.bottom-r.top;if(Math.abs(i-s.lineHeight)<2&&s.textHeight=n){if(i instanceof es)return i;if(a>n)break}s=a+i.breakAfter}return null}}class zl extends er{constructor(e,n,r){super(),this.widget=e,this.length=n,this.deco=r,this.breakAfter=0,this.prevWidget=null}merge(e,n,r,s,i,a){return r&&(!(r instanceof zl)||!this.widget.compare(r.widget)||e>0&&i<=0||n0}}class Dk extends $o{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}}class b0{constructor(e,n,r,s){this.doc=e,this.pos=n,this.end=r,this.disallowBlockEffectsFor=s,this.content=[],this.curLine=null,this.breakAtStart=0,this.pendingBuffer=0,this.bufferMarks=[],this.atCursorPos=!0,this.openStart=-1,this.openEnd=-1,this.text="",this.textOff=0,this.cursor=e.iter(),this.skip=n}posCovered(){if(this.content.length==0)return!this.breakAtStart&&this.doc.lineAt(this.pos).from!=this.pos;let e=this.content[this.content.length-1];return!(e.breakAfter||e instanceof zl&&e.deco.endSide<0)}getLine(){return this.curLine||(this.content.push(this.curLine=new es),this.atCursorPos=!0),this.curLine}flushBuffer(e=this.bufferMarks){this.pendingBuffer&&(this.curLine.append(Jx(new Zh(-1),e),e.length),this.pendingBuffer=0)}addBlockWidget(e){this.flushBuffer(),this.curLine=null,this.content.push(e)}finish(e){this.pendingBuffer&&e<=this.bufferMarks.length?this.flushBuffer():this.pendingBuffer=0,!this.posCovered()&&!(e&&this.content.length&&this.content[this.content.length-1]instanceof zl)&&this.getLine()}buildText(e,n,r){for(;e>0;){if(this.textOff==this.text.length){let{value:a,lineBreak:l,done:c}=this.cursor.next(this.skip);if(this.skip=0,c)throw new Error("Ran out of text content when drawing inline views");if(l){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer(),this.curLine=null,this.atCursorPos=!0,e--;continue}else this.text=a,this.textOff=0}let s=Math.min(this.text.length-this.textOff,e),i=Math.min(s,512);this.flushBuffer(n.slice(n.length-r)),this.getLine().append(Jx(new Ya(this.text.slice(this.textOff,this.textOff+i)),n),r),this.atCursorPos=!0,this.textOff+=i,e-=i,r=s<=i?0:n.length}}span(e,n,r,s){this.buildText(n-e,r,s),this.pos=n,this.openStart<0&&(this.openStart=s)}point(e,n,r,s,i,a){if(this.disallowBlockEffectsFor[a]&&r instanceof Xc){if(r.block)throw new RangeError("Block decorations may not be specified via plugins");if(n>this.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}let l=n-e;if(r instanceof Xc)if(r.block)r.startSide>0&&!this.posCovered()&&this.getLine(),this.addBlockWidget(new zl(r.widget||Jh.block,l,r));else{let c=_l.create(r.widget||Jh.inline,l,l?0:r.startSide),d=this.atCursorPos&&!c.isEditable&&i<=s.length&&(e0),h=!c.isEditable&&(es.length||r.startSide<=0),m=this.getLine();this.pendingBuffer==2&&!d&&!c.isEditable&&(this.pendingBuffer=0),this.flushBuffer(s),d&&(m.append(Jx(new Zh(1),s),i),i=s.length+Math.max(0,i-s.length)),m.append(Jx(c,s),i),this.atCursorPos=h,this.pendingBuffer=h?es.length?1:2:0,this.pendingBuffer&&(this.bufferMarks=s.slice())}else this.doc.lineAt(this.pos).from==this.pos&&this.getLine().addLineDeco(r);l&&(this.textOff+l<=this.text.length?this.textOff+=l:(this.skip+=l-(this.text.length-this.textOff),this.text="",this.textOff=0),this.pos=n),this.openStart<0&&(this.openStart=i)}static build(e,n,r,s,i){let a=new b0(e,n,r,i);return a.openEnd=Rn.spans(s,n,r,a),a.openStart<0&&(a.openStart=a.openEnd),a.finish(a.openEnd),a}}function Jx(t,e){for(let n of e)t=new ql(n,[t],t.length);return t}class Jh extends $o{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}}Jh.inline=new Jh("span");Jh.block=new Jh("div");var gr=(function(t){return t[t.LTR=0]="LTR",t[t.RTL=1]="RTL",t})(gr||(gr={}));const od=gr.LTR,Jj=gr.RTL;function RF(t){let e=[];for(let n=0;n=n){if(l.level==r)return a;(i<0||(s!=0?s<0?l.fromn:e[i].level>l.level))&&(i=a)}}if(i<0)throw new RangeError("Index out of range");return i}}function PF(t,e){if(t.length!=e.length)return!1;for(let n=0;n=0;w-=3)if(ho[w+1]==-x){let S=ho[w+2],k=S&2?s:S&4?S&1?i:s:0;k&&(ir[m]=ir[ho[w]]=k),l=w;break}}else{if(ho.length==189)break;ho[l++]=m,ho[l++]=g,ho[l++]=c}else if((y=ir[m])==2||y==1){let w=y==s;c=w?0:1;for(let S=l-3;S>=0;S-=3){let k=ho[S+2];if(k&2)break;if(w)ho[S+2]|=2;else{if(k&4)break;ho[S+2]|=4}}}}}function Gae(t,e,n,r){for(let s=0,i=r;s<=n.length;s++){let a=s?n[s-1].to:t,l=sc;)y==S&&(y=n[--w].from,S=w?n[w-1].to:t),ir[--y]=x;c=h}else i=d,c++}}}function zk(t,e,n,r,s,i,a){let l=r%2?2:1;if(r%2==s%2)for(let c=e,d=0;cc&&a.push(new Bc(c,w.from,x));let S=w.direction==od!=!(x%2);Ik(t,S?r+1:r,s,w.inner,w.from,w.to,a),c=w.to}y=w.to}else{if(y==n||(h?ir[y]!=l:ir[y]==l))break;y++}g?zk(t,c,y,r+1,s,g,a):ce;){let h=!0,m=!1;if(!d||c>i[d-1].to){let w=ir[c-1];w!=l&&(h=!1,m=w==16)}let g=!h&&l==1?[]:null,x=h?r:r+1,y=c;e:for(;;)if(d&&y==i[d-1].to){if(m)break e;let w=i[--d];if(!h)for(let S=w.from,k=d;;){if(S==e)break e;if(k&&i[k-1].to==S)S=i[--k].from;else{if(ir[S-1]==l)break e;break}}if(g)g.push(w);else{w.toir.length;)ir[ir.length]=256;let r=[],s=e==od?0:1;return Ik(t,s,s,n,0,t.length,r),r}function zF(t){return[new Bc(0,t,0)]}let IF="";function Yae(t,e,n,r,s){var i;let a=r.head-t.from,l=Bc.find(e,a,(i=r.bidiLevel)!==null&&i!==void 0?i:-1,r.assoc),c=e[l],d=c.side(s,n);if(a==d){let g=l+=s?1:-1;if(g<0||g>=e.length)return null;c=e[l=g],a=c.side(!s,n),d=c.side(s,n)}let h=Ds(t.text,a,c.forward(s,n));(hc.to)&&(h=d),IF=t.text.slice(Math.min(a,h),Math.max(a,h));let m=l==(s?e.length-1:0)?null:e[l+(s?1:-1)];return m&&h==d&&m.level+(s?0:1)t.some(e=>e)}),VF=at.define({combine:t=>t.some(e=>e)}),UF=at.define();class zh{constructor(e,n="nearest",r="nearest",s=5,i=5,a=!1){this.range=e,this.y=n,this.x=r,this.yMargin=s,this.xMargin=i,this.isSnapshot=a}map(e){return e.empty?this:new zh(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new zh(Ae.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}}const e1=Ft.define({map:(t,e)=>t.map(e)}),WF=Ft.define();function vi(t,e,n){let r=t.facet(qF);r.length?r[0](e):window.onerror&&window.onerror(String(e),n,void 0,void 0,e)||(n?console.error(n+":",e):console.error(e))}const Tl=at.define({combine:t=>t.length?t[0]:!0});let Zae=0;const Nh=at.define({combine(t){return t.filter((e,n)=>{for(let r=0;r{let c=[];return a&&c.push(F0.of(d=>{let h=d.plugin(l);return h?a(h):kt.none})),i&&c.push(i(l)),c})}static fromClass(e,n){return Vr.define((r,s)=>new e(r,s),n)}}class _4{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(e){if(this.value){if(this.mustUpdate){let n=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(n)}catch(r){if(vi(n.state,r,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg)}catch(n){vi(e.state,n,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var n;if(!((n=this.value)===null||n===void 0)&&n.destroy)try{this.value.destroy()}catch(r){vi(e.state,r,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const GF=at.define(),n6=at.define(),F0=at.define(),XF=at.define(),$p=at.define(),YF=at.define();function vE(t,e){let n=t.state.facet(YF);if(!n.length)return n;let r=n.map(i=>i instanceof Function?i(t):i),s=[];return Rn.spans(r,e.from,e.to,{point(){},span(i,a,l,c){let d=i-e.from,h=a-e.from,m=s;for(let g=l.length-1;g>=0;g--,c--){let x=l[g].spec.bidiIsolate,y;if(x==null&&(x=Kae(e.text,d,h)),c>0&&m.length&&(y=m[m.length-1]).to==d&&y.direction==x)y.to=h,m=y.inner;else{let w={from:d,to:h,direction:x,inner:[]};m.push(w),m=w.inner}}}}),s}const KF=at.define();function r6(t){let e=0,n=0,r=0,s=0;for(let i of t.state.facet(KF)){let a=i(t);a&&(a.left!=null&&(e=Math.max(e,a.left)),a.right!=null&&(n=Math.max(n,a.right)),a.top!=null&&(r=Math.max(r,a.top)),a.bottom!=null&&(s=Math.max(s,a.bottom)))}return{left:e,right:n,top:r,bottom:s}}const s0=at.define();class Na{constructor(e,n,r,s){this.fromA=e,this.toA=n,this.fromB=r,this.toB=s}join(e){return new Na(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let n=e.length,r=this;for(;n>0;n--){let s=e[n-1];if(!(s.fromA>r.toA)){if(s.toAh)break;i+=2}if(!c)return r;new Na(c.fromA,c.toA,c.fromB,c.toB).addToSet(r),a=c.toA,l=c.toB}}}class qv{constructor(e,n,r){this.view=e,this.state=n,this.transactions=r,this.flags=0,this.startState=e.state,this.changes=cs.empty(this.startState.doc.length);for(let i of r)this.changes=this.changes.compose(i.changes);let s=[];this.changes.iterChangedRanges((i,a,l,c)=>s.push(new Na(i,a,l,c))),this.changedRanges=s}static create(e,n,r){return new qv(e,n,r)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}}class yE extends er{get length(){return this.view.state.doc.length}constructor(e){super(),this.view=e,this.decorations=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.markedForComposition=new Set,this.editContextFormatting=kt.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(e.contentDOM),this.children=[new es],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new Na(0,0,0,e.state.doc.length)],0,null)}update(e){var n;let r=e.changedRanges;this.minWidth>0&&r.length&&(r.every(({fromA:d,toA:h})=>hthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((n=this.domChanged)===null||n===void 0)&&n.newSel?s=this.domChanged.newSel.head:!ioe(e.changes,this.hasComposition)&&!e.selectionSet&&(s=e.state.selection.main.head));let i=s>-1?eoe(this.view,e.changes,s):null;if(this.domChanged=null,this.hasComposition){this.markedForComposition.clear();let{from:d,to:h}=this.hasComposition;r=new Na(d,h,e.changes.mapPos(d,-1),e.changes.mapPos(h,1)).addToSet(r.slice())}this.hasComposition=i?{from:i.range.fromB,to:i.range.toB}:null,(et.ie||et.chrome)&&!i&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let a=this.decorations,l=this.updateDeco(),c=roe(a,l,e.changes);return r=Na.extendWithRanges(r,c),!(this.flags&7)&&r.length==0?!1:(this.updateInner(r,e.startState.doc.length,i),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,n,r){this.view.viewState.mustMeasureContent=!0,this.updateChildren(e,n,r);let{observer:s}=this.view;s.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let a=et.chrome||et.ios?{node:s.selectionRange.focusNode,written:!1}:void 0;this.sync(this.view,a),this.flags&=-8,a&&(a.written||s.selectionRange.focusNode!=a.node)&&(this.forceSelection=!0),this.dom.style.height=""}),this.markedForComposition.forEach(a=>a.flags&=-9);let i=[];if(this.view.viewport.from||this.view.viewport.to=0?s[a]:null;if(!l)break;let{fromA:c,toA:d,fromB:h,toB:m}=l,g,x,y,w;if(r&&r.range.fromBh){let T=b0.build(this.view.state.doc,h,r.range.fromB,this.decorations,this.dynamicDecorationMap),E=b0.build(this.view.state.doc,r.range.toB,m,this.decorations,this.dynamicDecorationMap);x=T.breakAtStart,y=T.openStart,w=E.openEnd;let _=this.compositionView(r);E.breakAtStart?_.breakAfter=1:E.content.length&&_.merge(_.length,_.length,E.content[0],!1,E.openStart,0)&&(_.breakAfter=E.content[0].breakAfter,E.content.shift()),T.content.length&&_.merge(0,0,T.content[T.content.length-1],!0,0,T.openEnd)&&T.content.pop(),g=T.content.concat(_).concat(E.content)}else({content:g,breakAtStart:x,openStart:y,openEnd:w}=b0.build(this.view.state.doc,h,m,this.decorations,this.dynamicDecorationMap));let{i:S,off:k}=i.findPos(d,1),{i:j,off:N}=i.findPos(c,-1);CF(this,j,N,S,k,g,x,y,w)}r&&this.fixCompositionDOM(r)}updateEditContextFormatting(e){this.editContextFormatting=this.editContextFormatting.map(e.changes);for(let n of e.transactions)for(let r of n.effects)r.is(WF)&&(this.editContextFormatting=r.value)}compositionView(e){let n=new Ya(e.text.nodeValue);n.flags|=8;for(let{deco:s}of e.marks)n=new ql(s,[n],n.length);let r=new es;return r.append(n,0),r}fixCompositionDOM(e){let n=(i,a)=>{a.flags|=8|(a.children.some(c=>c.flags&7)?1:0),this.markedForComposition.add(a);let l=er.get(i);l&&l!=a&&(l.dom=null),a.setDOM(i)},r=this.childPos(e.range.fromB,1),s=this.children[r.i];n(e.line,s);for(let i=e.marks.length-1;i>=-1;i--)r=s.childPos(r.off,1),s=s.children[r.i],n(i>=0?e.marks[i].node:e.text,s)}updateSelection(e=!1,n=!1){(e||!this.view.observer.selectionRange.focusNode)&&this.view.observer.readSelectionRange();let r=this.view.root.activeElement,s=r==this.dom,i=!s&&!(this.view.state.facet(Tl)||this.dom.tabIndex>-1)&&av(this.dom,this.view.observer.selectionRange)&&!(r&&this.dom.contains(r));if(!(s||n||i))return;let a=this.forceSelection;this.forceSelection=!1;let l=this.view.state.selection.main,c=this.moveToLine(this.domAtPos(l.anchor)),d=l.empty?c:this.moveToLine(this.domAtPos(l.head));if(et.gecko&&l.empty&&!this.hasComposition&&Jae(c)){let m=document.createTextNode("");this.view.observer.ignore(()=>c.node.insertBefore(m,c.node.childNodes[c.offset]||null)),c=d=new Hs(m,0),a=!0}let h=this.view.observer.selectionRange;(a||!h.focusNode||(!y0(c.node,c.offset,h.anchorNode,h.anchorOffset)||!y0(d.node,d.offset,h.focusNode,h.focusOffset))&&!this.suppressWidgetCursorChange(h,l))&&(this.view.observer.ignore(()=>{et.android&&et.chrome&&this.dom.contains(h.focusNode)&&soe(h.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let m=B0(this.view.root);if(m)if(l.empty){if(et.gecko){let g=toe(c.node,c.offset);if(g&&g!=3){let x=(g==1?OF:jF)(c.node,c.offset);x&&(c=new Hs(x.node,x.offset))}}m.collapse(c.node,c.offset),l.bidiLevel!=null&&m.caretBidiLevel!==void 0&&(m.caretBidiLevel=l.bidiLevel)}else if(m.extend){m.collapse(c.node,c.offset);try{m.extend(d.node,d.offset)}catch{}}else{let g=document.createRange();l.anchor>l.head&&([c,d]=[d,c]),g.setEnd(d.node,d.offset),g.setStart(c.node,c.offset),m.removeAllRanges(),m.addRange(g)}i&&this.view.root.activeElement==this.dom&&(this.dom.blur(),r&&r.focus())}),this.view.observer.setSelectionRange(c,d)),this.impreciseAnchor=c.precise?null:new Hs(h.anchorNode,h.anchorOffset),this.impreciseHead=d.precise?null:new Hs(h.focusNode,h.focusOffset)}suppressWidgetCursorChange(e,n){return this.hasComposition&&n.empty&&y0(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==n.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,n=e.state.selection.main,r=B0(e.root),{anchorNode:s,anchorOffset:i}=e.observer.selectionRange;if(!r||!n.empty||!n.assoc||!r.modify)return;let a=es.find(this,n.head);if(!a)return;let l=a.posAtStart;if(n.head==l||n.head==l+a.length)return;let c=this.coordsAt(n.head,-1),d=this.coordsAt(n.head,1);if(!c||!d||c.bottom>d.top)return;let h=this.domAtPos(n.head+n.assoc);r.collapse(h.node,h.offset),r.modify("move",n.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let m=e.observer.selectionRange;e.docView.posFromDOM(m.anchorNode,m.anchorOffset)!=n.from&&r.collapse(s,i)}moveToLine(e){let n=this.dom,r;if(e.node!=n)return e;for(let s=e.offset;!r&&s=0;s--){let i=er.get(n.childNodes[s]);i instanceof es&&(r=i.domAtPos(i.length))}return r?new Hs(r.node,r.offset,!0):e}nearest(e){for(let n=e;n;){let r=er.get(n);if(r&&r.rootView==this)return r;n=n.parentNode}return null}posFromDOM(e,n){let r=this.nearest(e);if(!r)throw new RangeError("Trying to find position for a DOM position outside of the document");return r.localPosFromDOM(e,n)+r.posAtStart}domAtPos(e){let{i:n,off:r}=this.childCursor().findPos(e,-1);for(;n=0;a--){let l=this.children[a],c=i-l.breakAfter,d=c-l.length;if(ce||l.covers(1))&&(!r||l instanceof es&&!(r instanceof es&&n>=0)))r=l,s=d;else if(r&&d==e&&c==e&&l instanceof zl&&Math.abs(n)<2){if(l.deco.startSide<0)break;a&&(r=null)}i=d}return r?r.coordsAt(e-s,n):null}coordsForChar(e){let{i:n,off:r}=this.childPos(e,1),s=this.children[n];if(!(s instanceof es))return null;for(;s.children.length;){let{i:l,off:c}=s.childPos(r,1);for(;;l++){if(l==s.children.length)return null;if((s=s.children[l]).length)break}r=c}if(!(s instanceof Ya))return null;let i=Ds(s.text,r);if(i==r)return null;let a=ad(s.dom,r,i).getClientRects();for(let l=0;lMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,c=this.view.textDirection==gr.LTR;for(let d=0,h=0;hs)break;if(d>=r){let x=m.dom.getBoundingClientRect();if(n.push(x.height),a){let y=m.dom.lastChild,w=y?Kh(y):[];if(w.length){let S=w[w.length-1],k=c?S.right-x.left:x.right-S.left;k>l&&(l=k,this.minWidth=i,this.minWidthFrom=d,this.minWidthTo=g)}}}d=g+m.breakAfter}return n}textDirectionAt(e){let{i:n}=this.childPos(e,1);return getComputedStyle(this.children[n].dom).direction=="rtl"?gr.RTL:gr.LTR}measureTextSize(){for(let i of this.children)if(i instanceof es){let a=i.measureTextSize();if(a)return a}let e=document.createElement("div"),n,r,s;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.dom.appendChild(e);let i=Kh(e.firstChild)[0];n=e.getBoundingClientRect().height,r=i?i.width/27:7,s=i?i.height:n,e.remove()}),{lineHeight:n,charWidth:r,textHeight:s}}childCursor(e=this.length){let n=this.children.length;return n&&(e-=this.children[--n].length),new NF(this.children,e,n)}computeBlockGapDeco(){let e=[],n=this.view.viewState;for(let r=0,s=0;;s++){let i=s==n.viewports.length?null:n.viewports[s],a=i?i.from-1:this.length;if(a>r){let l=(n.lineBlockAt(a).bottom-n.lineBlockAt(r).top)/this.view.scaleY;e.push(kt.replace({widget:new Dk(l),block:!0,inclusive:!0,isBlockGap:!0}).range(r,a))}if(!i)break;r=i.to+1}return kt.set(e)}updateDeco(){let e=1,n=this.view.state.facet(F0).map(i=>(this.dynamicDecorationMap[e++]=typeof i=="function")?i(this.view):i),r=!1,s=this.view.state.facet(XF).map((i,a)=>{let l=typeof i=="function";return l&&(r=!0),l?i(this.view):i});for(s.length&&(this.dynamicDecorationMap[e++]=r,n.push(Rn.join(s))),this.decorations=[this.editContextFormatting,...n,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];en.anchor?-1:1),s;if(!r)return;!n.empty&&(s=this.coordsAt(n.anchor,n.anchor>n.head?-1:1))&&(r={left:Math.min(r.left,s.left),top:Math.min(r.top,s.top),right:Math.max(r.right,s.right),bottom:Math.max(r.bottom,s.bottom)});let i=r6(this.view),a={left:r.left-i.left,top:r.top-i.top,right:r.right+i.right,bottom:r.bottom+i.bottom},{offsetWidth:l,offsetHeight:c}=this.view.scrollDOM;Aae(this.view.scrollDOM,a,n.heads instanceof _l||s.children.some(r);return r(this.children[n])}}function Jae(t){return t.node.nodeType==1&&t.node.firstChild&&(t.offset==0||t.node.childNodes[t.offset-1].contentEditable=="false")&&(t.offset==t.node.childNodes.length||t.node.childNodes[t.offset].contentEditable=="false")}function ZF(t,e){let n=t.observer.selectionRange;if(!n.focusNode)return null;let r=OF(n.focusNode,n.focusOffset),s=jF(n.focusNode,n.focusOffset),i=r||s;if(s&&r&&s.node!=r.node){let l=er.get(s.node);if(!l||l instanceof Ya&&l.text!=s.node.nodeValue)i=s;else if(t.docView.lastCompositionAfterCursor){let c=er.get(r.node);!c||c instanceof Ya&&c.text!=r.node.nodeValue||(i=s)}}if(t.docView.lastCompositionAfterCursor=i!=r,!i)return null;let a=e-i.offset;return{from:a,to:a+i.node.nodeValue.length,node:i.node}}function eoe(t,e,n){let r=ZF(t,n);if(!r)return null;let{node:s,from:i,to:a}=r,l=s.nodeValue;if(/[\n\r]/.test(l)||t.state.doc.sliceString(r.from,r.to)!=l)return null;let c=e.invertedDesc,d=new Na(c.mapPos(i),c.mapPos(a),i,a),h=[];for(let m=s.parentNode;;m=m.parentNode){let g=er.get(m);if(g instanceof ql)h.push({node:m,deco:g.mark});else{if(g instanceof es||m.nodeName=="DIV"&&m.parentNode==t.contentDOM)return{range:d,text:s,marks:h,line:m};if(m!=t.contentDOM)h.push({node:m,deco:new Fp({inclusive:!0,attributes:qae(m),tagName:m.tagName.toLowerCase()})});else return null}}}function toe(t,e){return t.nodeType!=1?0:(e&&t.childNodes[e-1].contentEditable=="false"?1:0)|(e{re.from&&(n=!0)}),n}function aoe(t,e,n=1){let r=t.charCategorizer(e),s=t.doc.lineAt(e),i=e-s.from;if(s.length==0)return Ae.cursor(e);i==0?n=1:i==s.length&&(n=-1);let a=i,l=i;n<0?a=Ds(s.text,i,!1):l=Ds(s.text,i);let c=r(s.text.slice(a,l));for(;a>0;){let d=Ds(s.text,a,!1);if(r(s.text.slice(d,a))!=c)break;a=d}for(;lt?e.left-t:Math.max(0,t-e.right)}function loe(t,e){return e.top>t?e.top-t:Math.max(0,t-e.bottom)}function M4(t,e){return t.tope.top+1}function bE(t,e){return et.bottom?{top:t.top,left:t.left,right:t.right,bottom:e}:t}function Bk(t,e,n){let r,s,i,a,l=!1,c,d,h,m;for(let y=t.firstChild;y;y=y.nextSibling){let w=Kh(y);for(let S=0;SN||a==N&&i>j)&&(r=y,s=k,i=j,a=N,l=j?e0:Sk.bottom&&(!h||h.bottomk.top)&&(d=y,m=k):h&&M4(h,k)?h=wE(h,k.bottom):m&&M4(m,k)&&(m=bE(m,k.top))}}if(h&&h.bottom>=n?(r=c,s=h):m&&m.top<=n&&(r=d,s=m),!r)return{node:t,offset:0};let g=Math.max(s.left,Math.min(s.right,e));if(r.nodeType==3)return SE(r,g,n);if(l&&r.contentEditable!="false")return Bk(r,g,n);let x=Array.prototype.indexOf.call(t.childNodes,r)+(e>=(s.left+s.right)/2?1:0);return{node:t,offset:x}}function SE(t,e,n){let r=t.nodeValue.length,s=-1,i=1e9,a=0;for(let l=0;ln?h.top-n:n-h.bottom)-1;if(h.left-1<=e&&h.right+1>=e&&m=(h.left+h.right)/2,x=g;if(et.chrome||et.gecko){let y=ad(t,l).getBoundingClientRect();Math.abs(y.left-h.right)<.1&&(x=!g)}if(m<=0)return{node:t,offset:l+(x?1:0)};s=l+(x?1:0),i=m}}}return{node:t,offset:s>-1?s:a>0?t.nodeValue.length:0}}function JF(t,e,n,r=-1){var s,i;let a=t.contentDOM.getBoundingClientRect(),l=a.top+t.viewState.paddingTop,c,{docHeight:d}=t.viewState,{x:h,y:m}=e,g=m-l;if(g<0)return 0;if(g>d)return t.state.doc.length;for(let T=t.viewState.heightOracle.textHeight/2,E=!1;c=t.elementAtHeight(g),c.type!=ti.Text;)for(;g=r>0?c.bottom+T:c.top-T,!(g>=0&&g<=d);){if(E)return n?null:0;E=!0,r=-r}m=l+g;let x=c.from;if(xt.viewport.to)return t.viewport.to==t.state.doc.length?t.state.doc.length:n?null:kE(t,a,c,h,m);let y=t.dom.ownerDocument,w=t.root.elementFromPoint?t.root:y,S=w.elementFromPoint(h,m);S&&!t.contentDOM.contains(S)&&(S=null),S||(h=Math.max(a.left+1,Math.min(a.right-1,h)),S=w.elementFromPoint(h,m),S&&!t.contentDOM.contains(S)&&(S=null));let k,j=-1;if(S&&((s=t.docView.nearest(S))===null||s===void 0?void 0:s.isEditable)!=!1){if(y.caretPositionFromPoint){let T=y.caretPositionFromPoint(h,m);T&&({offsetNode:k,offset:j}=T)}else if(y.caretRangeFromPoint){let T=y.caretRangeFromPoint(h,m);T&&({startContainer:k,startOffset:j}=T)}k&&(!t.contentDOM.contains(k)||et.safari&&coe(k,j,h)||et.chrome&&uoe(k,j,h))&&(k=void 0),k&&(j=Math.min(Io(k),j))}if(!k||!t.docView.dom.contains(k)){let T=es.find(t.docView,x);if(!T)return g>c.top+c.height/2?c.to:c.from;({node:k,offset:j}=Bk(T.dom,h,m))}let N=t.docView.nearest(k);if(!N)return null;if(N.isWidget&&((i=N.dom)===null||i===void 0?void 0:i.nodeType)==1){let T=N.dom.getBoundingClientRect();return e.yt.defaultLineHeight*1.5){let l=t.viewState.heightOracle.textHeight,c=Math.floor((s-n.top-(t.defaultLineHeight-l)*.5)/l);i+=c*t.viewState.heightOracle.lineLength}let a=t.state.sliceDoc(n.from,n.to);return n.from+Ok(a,i,t.state.tabSize)}function eq(t,e,n){let r,s=t;if(t.nodeType!=3||e!=(r=t.nodeValue.length))return!1;for(;;){let i=s.nextSibling;if(i){if(i.nodeName=="BR")break;return!1}else{let a=s.parentNode;if(!a||a.nodeName=="DIV")break;s=a}}return ad(t,r-1,r).getBoundingClientRect().right>n}function coe(t,e,n){return eq(t,e,n)}function uoe(t,e,n){if(e!=0)return eq(t,e,n);for(let s=t;;){let i=s.parentNode;if(!i||i.nodeType!=1||i.firstChild!=s)return!1;if(i.classList.contains("cm-line"))break;s=i}let r=t.nodeType==1?t.getBoundingClientRect():ad(t,0,Math.max(t.nodeValue.length,1)).getBoundingClientRect();return n-r.left>5}function Fk(t,e,n){let r=t.lineBlockAt(e);if(Array.isArray(r.type)){let s;for(let i of r.type){if(i.from>e)break;if(!(i.toe)return i;(!s||i.type==ti.Text&&(s.type!=i.type||(n<0?i.frome)))&&(s=i)}}return s||r}return r}function doe(t,e,n,r){let s=Fk(t,e.head,e.assoc||-1),i=!r||s.type!=ti.Text||!(t.lineWrapping||s.widgetLineBreaks)?null:t.coordsAtPos(e.assoc<0&&e.head>s.from?e.head-1:e.head);if(i){let a=t.dom.getBoundingClientRect(),l=t.textDirectionAt(s.from),c=t.posAtCoords({x:n==(l==gr.LTR)?a.right-1:a.left+1,y:(i.top+i.bottom)/2});if(c!=null)return Ae.cursor(c,n?-1:1)}return Ae.cursor(n?s.to:s.from,n?-1:1)}function OE(t,e,n,r){let s=t.state.doc.lineAt(e.head),i=t.bidiSpans(s),a=t.textDirectionAt(s.from);for(let l=e,c=null;;){let d=Yae(s,i,a,l,n),h=IF;if(!d){if(s.number==(n?t.state.doc.lines:1))return l;h=` -`,s=t.state.doc.line(s.number+(n?1:-1)),i=t.bidiSpans(s),d=t.visualLineSide(s,!n)}if(c){if(!c(h))return l}else{if(!r)return d;c=r(h)}l=d}}function hoe(t,e,n){let r=t.state.charCategorizer(e),s=r(n);return i=>{let a=r(i);return s==wr.Space&&(s=a),s==a}}function foe(t,e,n,r){let s=e.head,i=n?1:-1;if(s==(n?t.state.doc.length:0))return Ae.cursor(s,e.assoc);let a=e.goalColumn,l,c=t.contentDOM.getBoundingClientRect(),d=t.coordsAtPos(s,e.assoc||-1),h=t.documentTop;if(d)a==null&&(a=d.left-c.left),l=i<0?d.top:d.bottom;else{let x=t.viewState.lineBlockAt(s);a==null&&(a=Math.min(c.right-c.left,t.defaultCharacterWidth*(s-x.from))),l=(i<0?x.top:x.bottom)+h}let m=c.left+a,g=r??t.viewState.heightOracle.textHeight>>1;for(let x=0;;x+=10){let y=l+(g+x)*i,w=JF(t,{x:m,y},!1,i);if(yc.bottom||(i<0?ws)){let S=t.docView.coordsForChar(w),k=!S||y{if(e>i&&es(t)),n.from,e.head>n.from?-1:1);return r==n.from?n:Ae.cursor(r,ri)&&!goe(a,n)&&this.lineBreak(),s=a}return this.findPointBefore(r,n),this}readTextNode(e){let n=e.nodeValue;for(let r of this.points)r.node==e&&(r.pos=this.text.length+Math.min(r.offset,n.length));for(let r=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let i=-1,a=1,l;if(this.lineSeparator?(i=n.indexOf(this.lineSeparator,r),a=this.lineSeparator.length):(l=s.exec(n))&&(i=l.index,a=l[0].length),this.append(n.slice(r,i<0?n.length:i)),i<0)break;if(this.lineBreak(),a>1)for(let c of this.points)c.node==e&&c.pos>this.text.length&&(c.pos-=a-1);r=i+a}}readNode(e){if(e.cmIgnore)return;let n=er.get(e),r=n&&n.overrideDOMText;if(r!=null){this.findPointInside(e,r.length);for(let s=r.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,n){for(let r of this.points)r.node==e&&e.childNodes[r.offset]==n&&(r.pos=this.text.length)}findPointInside(e,n){for(let r of this.points)(e.nodeType==3?r.node==e:e.contains(r.node))&&(r.pos=this.text.length+(poe(e,r.node,r.offset)?n:0))}}function poe(t,e,n){for(;;){if(!e||n-1;let{impreciseHead:i,impreciseAnchor:a}=e.docView;if(e.state.readOnly&&n>-1)this.newSel=null;else if(n>-1&&(this.bounds=e.docView.domBoundsAround(n,r,0))){let l=i||a?[]:yoe(e),c=new moe(l,e.state);c.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=c.text,this.newSel=boe(l,this.bounds.from)}else{let l=e.observer.selectionRange,c=i&&i.node==l.focusNode&&i.offset==l.focusOffset||!Mk(e.contentDOM,l.focusNode)?e.state.selection.main.head:e.docView.posFromDOM(l.focusNode,l.focusOffset),d=a&&a.node==l.anchorNode&&a.offset==l.anchorOffset||!Mk(e.contentDOM,l.anchorNode)?e.state.selection.main.anchor:e.docView.posFromDOM(l.anchorNode,l.anchorOffset),h=e.viewport;if((et.ios||et.chrome)&&e.state.selection.main.empty&&c!=d&&(h.from>0||h.to-1&&e.state.selection.ranges.length>1?this.newSel=e.state.selection.replaceRange(Ae.range(d,c)):this.newSel=Ae.single(d,c)}}}function nq(t,e){let n,{newSel:r}=e,s=t.state.selection.main,i=t.inputState.lastKeyTime>Date.now()-100?t.inputState.lastKeyCode:-1;if(e.bounds){let{from:a,to:l}=e.bounds,c=s.from,d=null;(i===8||et.android&&e.text.length=s.from&&n.to<=s.to&&(n.from!=s.from||n.to!=s.to)&&s.to-s.from-(n.to-n.from)<=4?n={from:s.from,to:s.to,insert:t.state.doc.slice(s.from,n.from).append(n.insert).append(t.state.doc.slice(n.to,s.to))}:t.state.doc.lineAt(s.from).toDate.now()-50?n={from:s.from,to:s.to,insert:t.state.toText(t.inputState.insertingText)}:et.chrome&&n&&n.from==n.to&&n.from==s.head&&n.insert.toString()==` - `&&t.lineWrapping&&(r&&(r=Ae.single(r.main.anchor-1,r.main.head-1)),n={from:s.from,to:s.to,insert:jn.of([" "])}),n)return s6(t,n,r,i);if(r&&!r.main.eq(s)){let a=!1,l="select";return t.inputState.lastSelectionTime>Date.now()-50&&(t.inputState.lastSelectionOrigin=="select"&&(a=!0),l=t.inputState.lastSelectionOrigin,l=="select.pointer"&&(r=tq(t.state.facet($p).map(c=>c(t)),r))),t.dispatch({selection:r,scrollIntoView:a,userEvent:l}),!0}else return!1}function s6(t,e,n,r=-1){if(et.ios&&t.inputState.flushIOSKey(e))return!0;let s=t.state.selection.main;if(et.android&&(e.to==s.to&&(e.from==s.from||e.from==s.from-1&&t.state.sliceDoc(e.from,s.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&Ph(t.contentDOM,"Enter",13)||(e.from==s.from-1&&e.to==s.to&&e.insert.length==0||r==8&&e.insert.lengths.head)&&Ph(t.contentDOM,"Backspace",8)||e.from==s.from&&e.to==s.to+1&&e.insert.length==0&&Ph(t.contentDOM,"Delete",46)))return!0;let i=e.insert.toString();t.inputState.composing>=0&&t.inputState.composing++;let a,l=()=>a||(a=voe(t,e,n));return t.state.facet($F).some(c=>c(t,e.from,e.to,i,l))||t.dispatch(l()),!0}function voe(t,e,n){let r,s=t.state,i=s.selection.main,a=-1;if(e.from==e.to&&e.fromi.to){let c=e.fromm(t)),d,c);e.from==h&&(a=h)}if(a>-1)r={changes:e,selection:Ae.cursor(e.from+e.insert.length,-1)};else if(e.from>=i.from&&e.to<=i.to&&e.to-e.from>=(i.to-i.from)/3&&(!n||n.main.empty&&n.main.from==e.from+e.insert.length)&&t.inputState.composing<0){let c=i.frome.to?s.sliceDoc(e.to,i.to):"";r=s.replaceSelection(t.state.toText(c+e.insert.sliceString(0,void 0,t.state.lineBreak)+d))}else{let c=s.changes(e),d=n&&n.main.to<=c.newLength?n.main:void 0;if(s.selection.ranges.length>1&&(t.inputState.composing>=0||t.inputState.compositionPendingChange)&&e.to<=i.to+10&&e.to>=i.to-10){let h=t.state.sliceDoc(e.from,e.to),m,g=n&&ZF(t,n.main.head);if(g){let y=e.insert.length-(e.to-e.from);m={from:g.from,to:g.to-y}}else m=t.state.doc.lineAt(i.head);let x=i.to-e.to;r=s.changeByRange(y=>{if(y.from==i.from&&y.to==i.to)return{changes:c,range:d||y.map(c)};let w=y.to-x,S=w-h.length;if(t.state.sliceDoc(S,w)!=h||w>=m.from&&S<=m.to)return{range:y};let k=s.changes({from:S,to:w,insert:e.insert}),j=y.to-i.to;return{changes:k,range:d?Ae.range(Math.max(0,d.anchor+j),Math.max(0,d.head+j)):y.map(k)}})}else r={changes:c,selection:d&&s.selection.replaceRange(d)}}let l="input.type";return(t.composing||t.inputState.compositionPendingChange&&t.inputState.compositionEndedAt>Date.now()-50)&&(t.inputState.compositionPendingChange=!1,l+=".compose",t.inputState.compositionFirstChange&&(l+=".start",t.inputState.compositionFirstChange=!1)),s.update(r,{userEvent:l,scrollIntoView:!0})}function rq(t,e,n,r){let s=Math.min(t.length,e.length),i=0;for(;i0&&l>0&&t.charCodeAt(a-1)==e.charCodeAt(l-1);)a--,l--;if(r=="end"){let c=Math.max(0,i-Math.min(a,l));n-=a+c-i}if(a=a?i-n:0;i-=c,l=i+(l-a),a=i}else if(l=l?i-n:0;i-=c,a=i+(a-l),l=i}return{from:i,toA:a,toB:l}}function yoe(t){let e=[];if(t.root.activeElement!=t.contentDOM)return e;let{anchorNode:n,anchorOffset:r,focusNode:s,focusOffset:i}=t.observer.selectionRange;return n&&(e.push(new jE(n,r)),(s!=n||i!=r)&&e.push(new jE(s,i))),e}function boe(t,e){if(t.length==0)return null;let n=t[0].pos,r=t.length==2?t[1].pos:n;return n>-1&&r>-1?Ae.single(n+e,r+e):null}class woe{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,et.safari&&e.contentDOM.addEventListener("input",()=>null),et.gecko&&Ioe(e.contentDOM.ownerDocument)}handleEvent(e){!Eoe(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,n){let r=this.handlers[e];if(r){for(let s of r.observers)s(this.view,n);for(let s of r.handlers){if(n.defaultPrevented)break;if(s(this.view,n)){n.preventDefault();break}}}}ensureHandlers(e){let n=Soe(e),r=this.handlers,s=this.view.contentDOM;for(let i in n)if(i!="scroll"){let a=!n[i].handlers.length,l=r[i];l&&a!=!l.handlers.length&&(s.removeEventListener(i,this.handleEvent),l=null),l||s.addEventListener(i,this.handleEvent,{passive:a})}for(let i in r)i!="scroll"&&!n[i]&&s.removeEventListener(i,this.handleEvent);this.handlers=n}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&iq.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),et.android&&et.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;let n;return et.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&((n=sq.find(r=>r.keyCode==e.keyCode))&&!e.ctrlKey||koe.indexOf(e.key)>-1&&e.ctrlKey&&!e.shiftKey)?(this.pendingIOSKey=n||e,setTimeout(()=>this.flushIOSKey(),250),!0):(e.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(e){let n=this.pendingIOSKey;return!n||n.key=="Enter"&&e&&e.from0?!0:et.safari&&!et.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}function NE(t,e){return(n,r)=>{try{return e.call(t,r,n)}catch(s){vi(n.state,s)}}}function Soe(t){let e=Object.create(null);function n(r){return e[r]||(e[r]={observers:[],handlers:[]})}for(let r of t){let s=r.spec,i=s&&s.plugin.domEventHandlers,a=s&&s.plugin.domEventObservers;if(i)for(let l in i){let c=i[l];c&&n(l).handlers.push(NE(r.value,c))}if(a)for(let l in a){let c=a[l];c&&n(l).observers.push(NE(r.value,c))}}for(let r in Ka)n(r).handlers.push(Ka[r]);for(let r in _a)n(r).observers.push(_a[r]);return e}const sq=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],koe="dthko",iq=[16,17,18,20,91,92,224,225],t1=6;function n1(t){return Math.max(0,t)*.7+8}function Ooe(t,e){return Math.max(Math.abs(t.clientX-e.clientX),Math.abs(t.clientY-e.clientY))}class joe{constructor(e,n,r,s){this.view=e,this.startEvent=n,this.style=r,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=n,this.scrollParents=Rae(e.contentDOM),this.atoms=e.state.facet($p).map(a=>a(e));let i=e.contentDOM.ownerDocument;i.addEventListener("mousemove",this.move=this.move.bind(this)),i.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=n.shiftKey,this.multiple=e.state.facet(bn.allowMultipleSelections)&&Noe(e,n),this.dragging=Toe(e,n)&&lq(n)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Ooe(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let n=0,r=0,s=0,i=0,a=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:a}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:i,bottom:l}=this.scrollParents.y.getBoundingClientRect());let c=r6(this.view);e.clientX-c.left<=s+t1?n=-n1(s-e.clientX):e.clientX+c.right>=a-t1&&(n=n1(e.clientX-a)),e.clientY-c.top<=i+t1?r=-n1(i-e.clientY):e.clientY+c.bottom>=l-t1&&(r=n1(e.clientY-l)),this.setScrollSpeed(n,r)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,n){this.scrollSpeed={x:e,y:n},e||n?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:n}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),n&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=n,n=0),(e||n)&&this.view.win.scrollBy(e,n),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:n}=this,r=tq(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!r.eq(n.state.selection,this.dragging===!1))&&this.view.dispatch({selection:r,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){e.transactions.some(n=>n.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}}function Noe(t,e){let n=t.state.facet(LF);return n.length?n[0](e):et.mac?e.metaKey:e.ctrlKey}function Coe(t,e){let n=t.state.facet(BF);return n.length?n[0](e):et.mac?!e.altKey:!e.ctrlKey}function Toe(t,e){let{main:n}=t.state.selection;if(n.empty)return!1;let r=B0(t.root);if(!r||r.rangeCount==0)return!0;let s=r.getRangeAt(0).getClientRects();for(let i=0;i=e.clientX&&a.top<=e.clientY&&a.bottom>=e.clientY)return!0}return!1}function Eoe(t,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let n=e.target,r;n!=t.contentDOM;n=n.parentNode)if(!n||n.nodeType==11||(r=er.get(n))&&r.ignoreEvent(e))return!1;return!0}const Ka=Object.create(null),_a=Object.create(null),aq=et.ie&&et.ie_version<15||et.ios&&et.webkit_version<604;function _oe(t){let e=t.dom.parentNode;if(!e)return;let n=e.appendChild(document.createElement("textarea"));n.style.cssText="position: fixed; left: -10000px; top: 10px",n.focus(),setTimeout(()=>{t.focus(),n.remove(),oq(t,n.value)},50)}function sb(t,e,n){for(let r of t.facet(e))n=r(n,t);return n}function oq(t,e){e=sb(t.state,e6,e);let{state:n}=t,r,s=1,i=n.toText(e),a=i.lines==n.selection.ranges.length;if(qk!=null&&n.selection.ranges.every(c=>c.empty)&&qk==i.toString()){let c=-1;r=n.changeByRange(d=>{let h=n.doc.lineAt(d.from);if(h.from==c)return{range:d};c=h.from;let m=n.toText((a?i.line(s++).text:e)+n.lineBreak);return{changes:{from:h.from,insert:m},range:Ae.cursor(d.from+m.length)}})}else a?r=n.changeByRange(c=>{let d=i.line(s++);return{changes:{from:c.from,to:c.to,insert:d.text},range:Ae.cursor(c.from+d.length)}}):r=n.replaceSelection(i);t.dispatch(r,{userEvent:"input.paste",scrollIntoView:!0})}_a.scroll=t=>{t.inputState.lastScrollTop=t.scrollDOM.scrollTop,t.inputState.lastScrollLeft=t.scrollDOM.scrollLeft};Ka.keydown=(t,e)=>(t.inputState.setSelectionOrigin("select"),e.keyCode==27&&t.inputState.tabFocusMode!=0&&(t.inputState.tabFocusMode=Date.now()+2e3),!1);_a.touchstart=(t,e)=>{t.inputState.lastTouchTime=Date.now(),t.inputState.setSelectionOrigin("select.pointer")};_a.touchmove=t=>{t.inputState.setSelectionOrigin("select.pointer")};Ka.mousedown=(t,e)=>{if(t.observer.flush(),t.inputState.lastTouchTime>Date.now()-2e3)return!1;let n=null;for(let r of t.state.facet(FF))if(n=r(t,e),n)break;if(!n&&e.button==0&&(n=Roe(t,e)),n){let r=!t.hasFocus;t.inputState.startMouseSelection(new joe(t,e,n,r)),r&&t.observer.ignore(()=>{wF(t.contentDOM);let i=t.root.activeElement;i&&!i.contains(t.contentDOM)&&i.blur()});let s=t.inputState.mouseSelection;if(s)return s.start(e),s.dragging===!1}else t.inputState.setSelectionOrigin("select.pointer");return!1};function CE(t,e,n,r){if(r==1)return Ae.cursor(e,n);if(r==2)return aoe(t.state,e,n);{let s=es.find(t.docView,e),i=t.state.doc.lineAt(s?s.posAtEnd:e),a=s?s.posAtStart:i.from,l=s?s.posAtEnd:i.to;return le>=n.top&&e<=n.bottom&&t>=n.left&&t<=n.right;function Moe(t,e,n,r){let s=es.find(t.docView,e);if(!s)return 1;let i=e-s.posAtStart;if(i==0)return 1;if(i==s.length)return-1;let a=s.coordsAt(i,-1);if(a&&TE(n,r,a))return-1;let l=s.coordsAt(i,1);return l&&TE(n,r,l)?1:a&&a.bottom>=r?-1:1}function EE(t,e){let n=t.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:n,bias:Moe(t,n,e.clientX,e.clientY)}}const Aoe=et.ie&&et.ie_version<=11;let _E=null,ME=0,AE=0;function lq(t){if(!Aoe)return t.detail;let e=_E,n=AE;return _E=t,AE=Date.now(),ME=!e||n>Date.now()-400&&Math.abs(e.clientX-t.clientX)<2&&Math.abs(e.clientY-t.clientY)<2?(ME+1)%3:1}function Roe(t,e){let n=EE(t,e),r=lq(e),s=t.state.selection;return{update(i){i.docChanged&&(n.pos=i.changes.mapPos(n.pos),s=s.map(i.changes))},get(i,a,l){let c=EE(t,i),d,h=CE(t,c.pos,c.bias,r);if(n.pos!=c.pos&&!a){let m=CE(t,n.pos,n.bias,r),g=Math.min(m.from,h.from),x=Math.max(m.to,h.to);h=g1&&(d=Doe(s,c.pos))?d:l?s.addRange(h):Ae.create([h])}}}function Doe(t,e){for(let n=0;n=e)return Ae.create(t.ranges.slice(0,n).concat(t.ranges.slice(n+1)),t.mainIndex==n?0:t.mainIndex-(t.mainIndex>n?1:0))}return null}Ka.dragstart=(t,e)=>{let{selection:{main:n}}=t.state;if(e.target.draggable){let s=t.docView.nearest(e.target);if(s&&s.isWidget){let i=s.posAtStart,a=i+s.length;(i>=n.to||a<=n.from)&&(n=Ae.range(i,a))}}let{inputState:r}=t;return r.mouseSelection&&(r.mouseSelection.dragging=!0),r.draggedContent=n,e.dataTransfer&&(e.dataTransfer.setData("Text",sb(t.state,t6,t.state.sliceDoc(n.from,n.to))),e.dataTransfer.effectAllowed="copyMove"),!1};Ka.dragend=t=>(t.inputState.draggedContent=null,!1);function RE(t,e,n,r){if(n=sb(t.state,e6,n),!n)return;let s=t.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:i}=t.inputState,a=r&&i&&Coe(t,e)?{from:i.from,to:i.to}:null,l={from:s,insert:n},c=t.state.changes(a?[a,l]:l);t.focus(),t.dispatch({changes:c,selection:{anchor:c.mapPos(s,-1),head:c.mapPos(s,1)},userEvent:a?"move.drop":"input.drop"}),t.inputState.draggedContent=null}Ka.drop=(t,e)=>{if(!e.dataTransfer)return!1;if(t.state.readOnly)return!0;let n=e.dataTransfer.files;if(n&&n.length){let r=Array(n.length),s=0,i=()=>{++s==n.length&&RE(t,e,r.filter(a=>a!=null).join(t.state.lineBreak),!1)};for(let a=0;a{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(r[a]=l.result),i()},l.readAsText(n[a])}return!0}else{let r=e.dataTransfer.getData("Text");if(r)return RE(t,e,r,!0),!0}return!1};Ka.paste=(t,e)=>{if(t.state.readOnly)return!0;t.observer.flush();let n=aq?null:e.clipboardData;return n?(oq(t,n.getData("text/plain")||n.getData("text/uri-list")),!0):(_oe(t),!1)};function Poe(t,e){let n=t.dom.parentNode;if(!n)return;let r=n.appendChild(document.createElement("textarea"));r.style.cssText="position: fixed; left: -10000px; top: 10px",r.value=e,r.focus(),r.selectionEnd=e.length,r.selectionStart=0,setTimeout(()=>{r.remove(),t.focus()},50)}function zoe(t){let e=[],n=[],r=!1;for(let s of t.selection.ranges)s.empty||(e.push(t.sliceDoc(s.from,s.to)),n.push(s));if(!e.length){let s=-1;for(let{from:i}of t.selection.ranges){let a=t.doc.lineAt(i);a.number>s&&(e.push(a.text),n.push({from:a.from,to:Math.min(t.doc.length,a.to+1)})),s=a.number}r=!0}return{text:sb(t,t6,e.join(t.lineBreak)),ranges:n,linewise:r}}let qk=null;Ka.copy=Ka.cut=(t,e)=>{let{text:n,ranges:r,linewise:s}=zoe(t.state);if(!n&&!s)return!1;qk=s?n:null,e.type=="cut"&&!t.state.readOnly&&t.dispatch({changes:r,scrollIntoView:!0,userEvent:"delete.cut"});let i=aq?null:e.clipboardData;return i?(i.clearData(),i.setData("text/plain",n),!0):(Poe(t,n),!1)};const cq=Fo.define();function uq(t,e){let n=[];for(let r of t.facet(HF)){let s=r(t,e);s&&n.push(s)}return n.length?t.update({effects:n,annotations:cq.of(!0)}):null}function dq(t){setTimeout(()=>{let e=t.hasFocus;if(e!=t.inputState.notifiedFocused){let n=uq(t.state,e);n?t.dispatch(n):t.update([])}},10)}_a.focus=t=>{t.inputState.lastFocusTime=Date.now(),!t.scrollDOM.scrollTop&&(t.inputState.lastScrollTop||t.inputState.lastScrollLeft)&&(t.scrollDOM.scrollTop=t.inputState.lastScrollTop,t.scrollDOM.scrollLeft=t.inputState.lastScrollLeft),dq(t)};_a.blur=t=>{t.observer.clearSelectionRange(),dq(t)};_a.compositionstart=_a.compositionupdate=t=>{t.observer.editContext||(t.inputState.compositionFirstChange==null&&(t.inputState.compositionFirstChange=!0),t.inputState.composing<0&&(t.inputState.composing=0))};_a.compositionend=t=>{t.observer.editContext||(t.inputState.composing=-1,t.inputState.compositionEndedAt=Date.now(),t.inputState.compositionPendingKey=!0,t.inputState.compositionPendingChange=t.observer.pendingRecords().length>0,t.inputState.compositionFirstChange=null,et.chrome&&et.android?t.observer.flushSoon():t.inputState.compositionPendingChange?Promise.resolve().then(()=>t.observer.flush()):setTimeout(()=>{t.inputState.composing<0&&t.docView.hasComposition&&t.update([])},50))};_a.contextmenu=t=>{t.inputState.lastContextMenu=Date.now()};Ka.beforeinput=(t,e)=>{var n,r;if((e.inputType=="insertText"||e.inputType=="insertCompositionText")&&(t.inputState.insertingText=e.data,t.inputState.insertingTextAt=Date.now()),e.inputType=="insertReplacementText"&&t.observer.editContext){let i=(n=e.dataTransfer)===null||n===void 0?void 0:n.getData("text/plain"),a=e.getTargetRanges();if(i&&a.length){let l=a[0],c=t.posAtDOM(l.startContainer,l.startOffset),d=t.posAtDOM(l.endContainer,l.endOffset);return s6(t,{from:c,to:d,insert:t.state.toText(i)},null),!0}}let s;if(et.chrome&&et.android&&(s=sq.find(i=>i.inputType==e.inputType))&&(t.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let i=((r=window.visualViewport)===null||r===void 0?void 0:r.height)||0;setTimeout(()=>{var a;(((a=window.visualViewport)===null||a===void 0?void 0:a.height)||0)>i+10&&t.hasFocus&&(t.contentDOM.blur(),t.focus())},100)}return et.ios&&e.inputType=="deleteContentForward"&&t.observer.flushSoon(),et.safari&&e.inputType=="insertText"&&t.inputState.composing>=0&&setTimeout(()=>_a.compositionend(t,e),20),!1};const DE=new Set;function Ioe(t){DE.has(t)||(DE.add(t),t.addEventListener("copy",()=>{}),t.addEventListener("cut",()=>{}))}const PE=["pre-wrap","normal","pre-line","break-spaces"];let ef=!1;function zE(){ef=!1}class Loe{constructor(e){this.lineWrapping=e,this.doc=jn.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,n){let r=this.doc.lineAt(n).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(r+=Math.max(0,Math.ceil((n-e-r*this.lineLength*.5)/this.lineLength))),this.lineHeight*r}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return PE.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let n=!1;for(let r=0;r-1,c=Math.round(n)!=Math.round(this.lineHeight)||this.lineWrapping!=l;if(this.lineWrapping=l,this.lineHeight=n,this.charWidth=r,this.textHeight=s,this.lineLength=i,c){this.heightSamples={};for(let d=0;d0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>lv&&(ef=!0),this.height=e)}replace(e,n,r){return ni.of(r)}decomposeLeft(e,n){n.push(this)}decomposeRight(e,n){n.push(this)}applyChanges(e,n,r,s){let i=this,a=r.doc;for(let l=s.length-1;l>=0;l--){let{fromA:c,toA:d,fromB:h,toB:m}=s[l],g=i.lineAt(c,pr.ByPosNoHeight,r.setDoc(n),0,0),x=g.to>=d?g:i.lineAt(d,pr.ByPosNoHeight,r,0,0);for(m+=x.to-d,d=x.to;l>0&&g.from<=s[l-1].toA;)c=s[l-1].fromA,h=s[l-1].fromB,l--,ci*2){let l=e[n-1];l.break?e.splice(--n,1,l.left,null,l.right):e.splice(--n,1,l.left,l.right),r+=1+l.break,s-=l.size}else if(i>s*2){let l=e[r];l.break?e.splice(r,1,l.left,null,l.right):e.splice(r,1,l.left,l.right),r+=2+l.break,i-=l.size}else break;else if(s=i&&a(this.blockAt(0,r,s,i))}updateHeight(e,n=0,r=!1,s){return s&&s.from<=n&&s.more&&this.setHeight(s.heights[s.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}}class $i extends hq{constructor(e,n){super(e,n,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0}blockAt(e,n,r,s){return new So(s,this.length,r,this.height,this.breaks)}replace(e,n,r){let s=r[0];return r.length==1&&(s instanceof $i||s instanceof Ms&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof Ms?s=new $i(s.length,this.height):s.height=this.height,this.outdated||(s.outdated=!1),s):ni.of(r)}updateHeight(e,n=0,r=!1,s){return s&&s.from<=n&&s.more?this.setHeight(s.heights[s.index++]):(r||this.outdated)&&this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class Ms extends ni{constructor(e){super(e,0)}heightMetrics(e,n){let r=e.doc.lineAt(n).number,s=e.doc.lineAt(n+this.length).number,i=s-r+1,a,l=0;if(e.lineWrapping){let c=Math.min(this.height,e.lineHeight*i);a=c/i,this.length>i+1&&(l=(this.height-c)/(this.length-i-1))}else a=this.height/i;return{firstLine:r,lastLine:s,perLine:a,perChar:l}}blockAt(e,n,r,s){let{firstLine:i,lastLine:a,perLine:l,perChar:c}=this.heightMetrics(n,s);if(n.lineWrapping){let d=s+(e0){let i=r[r.length-1];i instanceof Ms?r[r.length-1]=new Ms(i.length+s):r.push(null,new Ms(s-1))}if(e>0){let i=r[0];i instanceof Ms?r[0]=new Ms(e+i.length):r.unshift(new Ms(e-1),null)}return ni.of(r)}decomposeLeft(e,n){n.push(new Ms(e-1),null)}decomposeRight(e,n){n.push(null,new Ms(this.length-e-1))}updateHeight(e,n=0,r=!1,s){let i=n+this.length;if(s&&s.from<=n+this.length&&s.more){let a=[],l=Math.max(n,s.from),c=-1;for(s.from>n&&a.push(new Ms(s.from-n-1).updateHeight(e,n));l<=i&&s.more;){let h=e.doc.lineAt(l).length;a.length&&a.push(null);let m=s.heights[s.index++];c==-1?c=m:Math.abs(m-c)>=lv&&(c=-2);let g=new $i(h,m);g.outdated=!1,a.push(g),l+=h+1}l<=i&&a.push(null,new Ms(i-l).updateHeight(e,l));let d=ni.of(a);return(c<0||Math.abs(d.height-this.height)>=lv||Math.abs(c-this.heightMetrics(e,n).perLine)>=lv)&&(ef=!0),$v(this,d)}else(r||this.outdated)&&(this.setHeight(e.heightForGap(n,n+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}}class Foe extends ni{constructor(e,n,r){super(e.length+n+r.length,e.height+r.height,n|(e.outdated||r.outdated?2:0)),this.left=e,this.right=r,this.size=e.size+r.size}get break(){return this.flags&1}blockAt(e,n,r,s){let i=r+this.left.height;return el))return d;let h=n==pr.ByPosNoHeight?pr.ByPosNoHeight:pr.ByPos;return c?d.join(this.right.lineAt(l,h,r,a,l)):this.left.lineAt(l,h,r,s,i).join(d)}forEachLine(e,n,r,s,i,a){let l=s+this.left.height,c=i+this.left.length+this.break;if(this.break)e=c&&this.right.forEachLine(e,n,r,l,c,a);else{let d=this.lineAt(c,pr.ByPos,r,s,i);e=e&&d.from<=n&&a(d),n>d.to&&this.right.forEachLine(d.to+1,n,r,l,c,a)}}replace(e,n,r){let s=this.left.length+this.break;if(nthis.left.length)return this.balanced(this.left,this.right.replace(e-s,n-s,r));let i=[];e>0&&this.decomposeLeft(e,i);let a=i.length;for(let l of r)i.push(l);if(e>0&&IE(i,a-1),n=r&&n.push(null)),e>r&&this.right.decomposeLeft(e-r,n)}decomposeRight(e,n){let r=this.left.length,s=r+this.break;if(e>=s)return this.right.decomposeRight(e-s,n);e2*n.size||n.size>2*e.size?ni.of(this.break?[e,null,n]:[e,n]):(this.left=$v(this.left,e),this.right=$v(this.right,n),this.setHeight(e.height+n.height),this.outdated=e.outdated||n.outdated,this.size=e.size+n.size,this.length=e.length+this.break+n.length,this)}updateHeight(e,n=0,r=!1,s){let{left:i,right:a}=this,l=n+i.length+this.break,c=null;return s&&s.from<=n+i.length&&s.more?c=i=i.updateHeight(e,n,r,s):i.updateHeight(e,n,r),s&&s.from<=l+a.length&&s.more?c=a=a.updateHeight(e,l,r,s):a.updateHeight(e,l,r),c?this.balanced(i,a):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function IE(t,e){let n,r;t[e]==null&&(n=t[e-1])instanceof Ms&&(r=t[e+1])instanceof Ms&&t.splice(e-1,3,new Ms(n.length+1+r.length))}const qoe=5;class i6{constructor(e,n){this.pos=e,this.oracle=n,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,n){if(this.lineStart>-1){let r=Math.min(n,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof $i?s.length+=r-this.pos:(r>this.pos||!this.isCovered)&&this.nodes.push(new $i(r-this.pos,-1)),this.writtenTo=r,n>r&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=n}point(e,n,r){if(e=qoe)&&this.addLineDeco(s,i,a)}else n>e&&this.span(e,n);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:n}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=n,this.writtenToe&&this.nodes.push(new $i(this.pos-e,-1)),this.writtenTo=this.pos}blankContent(e,n){let r=new Ms(n-e);return this.oracle.doc.lineAt(e).to==n&&(r.flags|=4),r}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof $i)return e;let n=new $i(0,-1);return this.nodes.push(n),n}addBlock(e){this.enterLine();let n=e.deco;n&&n.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,n&&n.endSide>0&&(this.covering=e)}addLineDeco(e,n,r){let s=this.ensureLine();s.length+=r,s.collapsed+=r,s.widgetHeight=Math.max(s.widgetHeight,e),s.breaks+=n,this.writtenTo=this.pos=this.pos+r}finish(e){let n=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(n instanceof $i)&&!this.isCovered?this.nodes.push(new $i(0,-1)):(this.writtenToh.clientHeight||h.scrollWidth>h.clientWidth)&&m.overflow!="visible"){let g=h.getBoundingClientRect();i=Math.max(i,g.left),a=Math.min(a,g.right),l=Math.max(l,g.top),c=Math.min(d==t.parentNode?s.innerHeight:c,g.bottom)}d=m.position=="absolute"||m.position=="fixed"?h.offsetParent:h.parentNode}else if(d.nodeType==11)d=d.host;else break;return{left:i-n.left,right:Math.max(i,a)-n.left,top:l-(n.top+e),bottom:Math.max(l,c)-(n.top+e)}}function Voe(t){let e=t.getBoundingClientRect(),n=t.ownerDocument.defaultView||window;return e.left0&&e.top0}function Uoe(t,e){let n=t.getBoundingClientRect();return{left:0,right:n.right-n.left,top:e,bottom:n.bottom-(n.top+e)}}class R4{constructor(e,n,r,s){this.from=e,this.to=n,this.size=r,this.displaySize=s}static same(e,n){if(e.length!=n.length)return!1;for(let r=0;rtypeof r!="function"&&r.class=="cm-lineWrapping");this.heightOracle=new Loe(n),this.stateDeco=e.facet(F0).filter(r=>typeof r!="function"),this.heightMap=ni.empty().applyChanges(this.stateDeco,jn.empty,this.heightOracle.setDoc(e.doc),[new Na(0,0,0,e.doc.length)]);for(let r=0;r<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());r++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=kt.set(this.lineGaps.map(r=>r.draw(this,!1))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:n}=this.state.selection;for(let r=0;r<=1;r++){let s=r?n.head:n.anchor;if(!e.some(({from:i,to:a})=>s>=i&&s<=a)){let{from:i,to:a}=this.lineBlockAt(s);e.push(new r1(i,a))}}return this.viewports=e.sort((r,s)=>r.from-s.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?BE:new a6(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(a0(e,this.scaler))})}update(e,n=null){this.state=e.state;let r=this.stateDeco;this.stateDeco=this.state.facet(F0).filter(h=>typeof h!="function");let s=e.changedRanges,i=Na.extendWithRanges(s,$oe(r,this.stateDeco,e?e.changes:cs.empty(this.state.doc.length))),a=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);zE(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),i),(this.heightMap.height!=a||ef)&&(e.flags|=2),l?(this.scrollAnchorPos=e.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=a);let c=i.length?this.mapViewport(this.viewport,e.changes):this.viewport;(n&&(n.range.headc.to)||!this.viewportIsAppropriate(c))&&(c=this.getViewport(0,n));let d=c.from!=this.viewport.from||c.to!=this.viewport.to;this.viewport=c,e.flags|=this.updateForViewport(),(d||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),n&&(this.scrollTarget=n),!this.mustEnforceCursorAssoc&&e.selectionSet&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(VF)&&(this.mustEnforceCursorAssoc=!0)}measure(e){let n=e.contentDOM,r=window.getComputedStyle(n),s=this.heightOracle,i=r.whiteSpace;this.defaultTextDirection=r.direction=="rtl"?gr.RTL:gr.LTR;let a=this.heightOracle.mustRefreshForWrapping(i),l=n.getBoundingClientRect(),c=a||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let d=0,h=0;if(l.width&&l.height){let{scaleX:T,scaleY:E}=bF(n,l);(T>.005&&Math.abs(this.scaleX-T)>.005||E>.005&&Math.abs(this.scaleY-E)>.005)&&(this.scaleX=T,this.scaleY=E,d|=16,a=c=!0)}let m=(parseInt(r.paddingTop)||0)*this.scaleY,g=(parseInt(r.paddingBottom)||0)*this.scaleY;(this.paddingTop!=m||this.paddingBottom!=g)&&(this.paddingTop=m,this.paddingBottom=g,d|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(s.lineWrapping&&(c=!0),this.editorWidth=e.scrollDOM.clientWidth,d|=16);let x=e.scrollDOM.scrollTop*this.scaleY;this.scrollTop!=x&&(this.scrollAnchorHeight=-1,this.scrollTop=x),this.scrolledToBottom=kF(e.scrollDOM);let y=(this.printing?Uoe:Qoe)(n,this.paddingTop),w=y.top-this.pixelViewport.top,S=y.bottom-this.pixelViewport.bottom;this.pixelViewport=y;let k=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(k!=this.inView&&(this.inView=k,k&&(c=!0)),!this.inView&&!this.scrollTarget&&!Voe(e.dom))return 0;let j=l.width;if((this.contentDOMWidth!=j||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=e.scrollDOM.clientHeight,d|=16),c){let T=e.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(T)&&(a=!0),a||s.lineWrapping&&Math.abs(j-this.contentDOMWidth)>s.charWidth){let{lineHeight:E,charWidth:_,textHeight:M}=e.docView.measureTextSize();a=E>0&&s.refresh(i,E,_,M,Math.max(5,j/_),T),a&&(e.docView.minWidth=0,d|=16)}w>0&&S>0?h=Math.max(w,S):w<0&&S<0&&(h=Math.min(w,S)),zE();for(let E of this.viewports){let _=E.from==this.viewport.from?T:e.docView.measureVisibleLineHeights(E);this.heightMap=(a?ni.empty().applyChanges(this.stateDeco,jn.empty,this.heightOracle,[new Na(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(s,0,a,new Boe(E.from,_))}ef&&(d|=2)}let N=!this.viewportIsAppropriate(this.viewport,h)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return N&&(d&2&&(d|=this.updateScaler()),this.viewport=this.getViewport(h,this.scrollTarget),d|=this.updateForViewport()),(d&2||N)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(a?[]:this.lineGaps,e)),d|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),d}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,n){let r=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),s=this.heightMap,i=this.heightOracle,{visibleTop:a,visibleBottom:l}=this,c=new r1(s.lineAt(a-r*1e3,pr.ByHeight,i,0,0).from,s.lineAt(l+(1-r)*1e3,pr.ByHeight,i,0,0).to);if(n){let{head:d}=n.range;if(dc.to){let h=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),m=s.lineAt(d,pr.ByPos,i,0,0),g;n.y=="center"?g=(m.top+m.bottom)/2-h/2:n.y=="start"||n.y=="nearest"&&d=l+Math.max(10,Math.min(r,250)))&&s>a-2*1e3&&i>1,a=s<<1;if(this.defaultTextDirection!=gr.LTR&&!r)return[];let l=[],c=(h,m,g,x)=>{if(m-hh&&kk.from>=g.from&&k.to<=g.to&&Math.abs(k.from-h)k.fromj));if(!S){if(mN.from<=m&&N.to>=m)){let N=n.moveToLineBoundary(Ae.cursor(m),!1,!0).head;N>h&&(m=N)}let k=this.gapSize(g,h,m,x),j=r||k<2e6?k:2e6;S=new R4(h,m,k,j)}l.push(S)},d=h=>{if(h.length2e6)for(let _ of e)_.from>=h.from&&_.fromh.from&&c(h.from,x,h,m),yn.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let n=this.stateDeco;this.lineGaps.length&&(n=n.concat(this.lineGapDeco));let r=[];Rn.spans(n,this.viewport.from,this.viewport.to,{span(i,a){r.push({from:i,to:a})},point(){}},20);let s=0;if(r.length!=this.visibleRanges.length)s=12;else for(let i=0;i=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(n=>n.from<=e&&n.to>=e)||a0(this.heightMap.lineAt(e,pr.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(n=>n.top<=e&&n.bottom>=e)||a0(this.heightMap.lineAt(this.scaler.fromDOM(e),pr.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(e){let n=this.lineBlockAtHeight(e+8);return n.from>=this.viewport.from||this.viewportLines[0].top-e>200?n:this.viewportLines[0]}elementAtHeight(e){return a0(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}let r1=class{constructor(e,n){this.from=e,this.to=n}};function Goe(t,e,n){let r=[],s=t,i=0;return Rn.spans(n,t,e,{span(){},point(a,l){a>s&&(r.push({from:s,to:a}),i+=a-s),s=l}},20),s=1)return e[e.length-1].to;let r=Math.floor(t*n);for(let s=0;;s++){let{from:i,to:a}=e[s],l=a-i;if(r<=l)return i+r;r-=l}}function i1(t,e){let n=0;for(let{from:r,to:s}of t.ranges){if(e<=s){n+=e-r;break}n+=s-r}return n/t.total}function Xoe(t,e){for(let n of t)if(e(n))return n}const BE={toDOM(t){return t},fromDOM(t){return t},scale:1,eq(t){return t==this}};class a6{constructor(e,n,r){let s=0,i=0,a=0;this.viewports=r.map(({from:l,to:c})=>{let d=n.lineAt(l,pr.ByPos,e,0,0).top,h=n.lineAt(c,pr.ByPos,e,0,0).bottom;return s+=h-d,{from:l,to:c,top:d,bottom:h,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(n.height-s);for(let l of this.viewports)l.domTop=a+(l.top-i)*this.scale,a=l.domBottom=l.domTop+(l.bottom-l.top),i=l.bottom}toDOM(e){for(let n=0,r=0,s=0;;n++){let i=nn.from==e.viewports[r].from&&n.to==e.viewports[r].to):!1}}function a0(t,e){if(e.scale==1)return t;let n=e.toDOM(t.top),r=e.toDOM(t.bottom);return new So(t.from,t.length,n,r-n,Array.isArray(t._content)?t._content.map(s=>a0(s,e)):t._content)}const a1=at.define({combine:t=>t.join(" ")}),$k=at.define({combine:t=>t.indexOf(!0)>-1}),Hk=Wc.newName(),fq=Wc.newName(),mq=Wc.newName(),pq={"&light":"."+fq,"&dark":"."+mq};function Qk(t,e,n){return new Wc(e,{finish(r){return/&/.test(r)?r.replace(/&\w*/,s=>{if(s=="&")return t;if(!n||!n[s])throw new RangeError(`Unsupported selector: ${s}`);return n[s]}):t+" "+r}})}const Yoe=Qk("."+Hk,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},pq),Koe={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},D4=et.ie&&et.ie_version<=11;class Zoe{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new Dae,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(n=>{for(let r of n)this.queue.push(r);(et.ie&&et.ie_version<=11||et.ios&&e.composing)&&n.some(r=>r.type=="childList"&&r.removedNodes.length||r.type=="characterData"&&r.oldValue.length>r.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&et.android&&e.constructor.EDIT_CONTEXT!==!1&&!(et.chrome&&et.chrome_version<126)&&(this.editContext=new ele(e),e.state.facet(Tl)&&(e.contentDOM.editContext=this.editContext.editContext)),D4&&(this.onCharData=n=>{this.queue.push({target:n.target,type:"characterData",oldValue:n.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var n;((n=this.view.docView)===null||n===void 0?void 0:n.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),n.length>0&&n[n.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(n=>{n.length>0&&n[n.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type=="change"||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((n,r)=>n!=e[r]))){this.gapIntersection.disconnect();for(let n of e)this.gapIntersection.observe(n);this.gaps=e}}onSelectionChange(e){let n=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:r}=this,s=this.selectionRange;if(r.state.facet(Tl)?r.root.activeElement!=this.dom:!av(this.dom,s))return;let i=s.anchorNode&&r.docView.nearest(s.anchorNode);if(i&&i.ignoreEvent(e)){n||(this.selectionChanged=!1);return}(et.ie&&et.ie_version<=11||et.android&&et.chrome)&&!r.state.selection.main.empty&&s.focusNode&&y0(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,n=B0(e.root);if(!n)return!1;let r=et.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&Joe(this.view,n)||n;if(!r||this.selectionRange.eq(r))return!1;let s=av(this.dom,r);return s&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime{let i=this.delayedAndroidKey;i&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=i.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&i.force&&Ph(this.dom,i.key,i.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:n,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let n=-1,r=-1,s=!1;for(let i of e){let a=this.readMutation(i);a&&(a.typeOver&&(s=!0),n==-1?{from:n,to:r}=a:(n=Math.min(a.from,n),r=Math.max(a.to,r)))}return{from:n,to:r,typeOver:s}}readChange(){let{from:e,to:n,typeOver:r}=this.processRecords(),s=this.selectionChanged&&av(this.dom,this.selectionRange);if(e<0&&!s)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let i=new xoe(this.view,e,n,r);return this.view.docView.domChanged={newSel:i.newSel?i.newSel.main:null},i}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let n=this.readChange();if(!n)return this.view.requestMeasure(),!1;let r=this.view.state,s=nq(this.view,n);return this.view.state==r&&(n.domChanged||n.newSel&&!n.newSel.main.eq(this.view.state.selection.main))&&this.view.update([]),s}readMutation(e){let n=this.view.docView.nearest(e.target);if(!n||n.ignoreMutation(e))return null;if(n.markDirty(e.type=="attributes"),e.type=="attributes"&&(n.flags|=4),e.type=="childList"){let r=FE(n,e.previousSibling||e.target.previousSibling,-1),s=FE(n,e.nextSibling||e.target.nextSibling,1);return{from:r?n.posAfter(r):n.posAtStart,to:s?n.posBefore(s):n.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:n.posAtStart,to:n.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(Tl)!=e.state.facet(Tl)&&(e.view.contentDOM.editContext=e.state.facet(Tl)?this.editContext.editContext:null))}destroy(){var e,n,r;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(n=this.gapIntersection)===null||n===void 0||n.disconnect(),(r=this.resizeScroll)===null||r===void 0||r.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}}function FE(t,e,n){for(;e;){let r=er.get(e);if(r&&r.parent==t)return r;let s=e.parentNode;e=s!=t.dom?s:n>0?e.nextSibling:e.previousSibling}return null}function qE(t,e){let n=e.startContainer,r=e.startOffset,s=e.endContainer,i=e.endOffset,a=t.docView.domAtPos(t.state.selection.main.anchor);return y0(a.node,a.offset,s,i)&&([n,r,s,i]=[s,i,n,r]),{anchorNode:n,anchorOffset:r,focusNode:s,focusOffset:i}}function Joe(t,e){if(e.getComposedRanges){let s=e.getComposedRanges(t.root)[0];if(s)return qE(t,s)}let n=null;function r(s){s.preventDefault(),s.stopImmediatePropagation(),n=s.getTargetRanges()[0]}return t.contentDOM.addEventListener("beforeinput",r,!0),t.dom.ownerDocument.execCommand("indent"),t.contentDOM.removeEventListener("beforeinput",r,!0),n?qE(t,n):null}class ele{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let n=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=r=>{let s=e.state.selection.main,{anchor:i,head:a}=s,l=this.toEditorPos(r.updateRangeStart),c=this.toEditorPos(r.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:r.updateRangeStart,editorBase:l,drifted:!1});let d=c-l>r.text.length;l==this.from&&ithis.to&&(c=i);let h=rq(e.state.sliceDoc(l,c),r.text,(d?s.from:s.to)-l,d?"end":null);if(!h){let g=Ae.single(this.toEditorPos(r.selectionStart),this.toEditorPos(r.selectionEnd));g.main.eq(s)||e.dispatch({selection:g,userEvent:"select"});return}let m={from:h.from+l,to:h.toA+l,insert:jn.of(r.text.slice(h.from,h.toB).split(` -`))};if((et.mac||et.android)&&m.from==a-1&&/^\. ?$/.test(r.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(m={from:l,to:c,insert:jn.of([r.text.replace("."," ")])}),this.pendingContextChange=m,!e.state.readOnly){let g=this.to-this.from+(m.to-m.from+m.insert.length);s6(e,m,Ae.single(this.toEditorPos(r.selectionStart,g),this.toEditorPos(r.selectionEnd,g)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),m.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(n.text.slice(Math.max(0,r.updateRangeStart-1),Math.min(n.text.length,r.updateRangeStart+1)))&&this.handlers.compositionend(r)},this.handlers.characterboundsupdate=r=>{let s=[],i=null;for(let a=this.toEditorPos(r.rangeStart),l=this.toEditorPos(r.rangeEnd);a{let s=[];for(let i of r.getTextFormats()){let a=i.underlineStyle,l=i.underlineThickness;if(!/none/i.test(a)&&!/none/i.test(l)){let c=this.toEditorPos(i.rangeStart),d=this.toEditorPos(i.rangeEnd);if(c{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:r}=this.composing;this.composing=null,r&&this.reset(e.state)}};for(let r in this.handlers)n.addEventListener(r,this.handlers[r]);this.measureReq={read:r=>{this.editContext.updateControlBounds(r.contentDOM.getBoundingClientRect());let s=B0(r.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let n=0,r=!1,s=this.pendingContextChange;return e.changes.iterChanges((i,a,l,c,d)=>{if(r)return;let h=d.length-(a-i);if(s&&a>=s.to)if(s.from==i&&s.to==a&&s.insert.eq(d)){s=this.pendingContextChange=null,n+=h,this.to+=h;return}else s=null,this.revertPending(e.state);if(i+=n,a+=n,a<=this.from)this.from+=h,this.to+=h;else if(ithis.to||this.to-this.from+d.length>3e4){r=!0;return}this.editContext.updateText(this.toContextPos(i),this.toContextPos(a),d.toString()),this.to+=h}n+=h}),s&&!r&&this.revertPending(e.state),!r}update(e){let n=this.pendingContextChange,r=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(r.from,r.to)&&e.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||n)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:n}=e.selection.main;this.from=Math.max(0,n-1e4),this.to=Math.min(e.doc.length,n+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let n=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(n.from),this.toContextPos(n.from+n.insert.length),e.doc.sliceString(n.from,n.to))}setSelection(e){let{main:n}=e.selection,r=this.toContextPos(Math.max(this.from,Math.min(this.to,n.anchor))),s=this.toContextPos(n.head);(this.editContext.selectionStart!=r||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(r,s)}rangeIsValid(e){let{head:n}=e.selection.main;return!(this.from>0&&n-this.from<500||this.to1e4*3)}toEditorPos(e,n=this.to-this.from){e=Math.min(e,n);let r=this.composing;return r&&r.drifted?r.editorBase+(e-r.contextBase):e+this.from}toContextPos(e){let n=this.composing;return n&&n.drifted?n.contextBase+(e-n.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}}class Ze{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var n;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:r}=e;this.dispatchTransactions=e.dispatchTransactions||r&&(s=>s.forEach(i=>r(i,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=e.root||Pae(e.parent)||document,this.viewState=new LE(e.state||bn.create(e)),e.scrollTo&&e.scrollTo.is(e1)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Nh).map(s=>new _4(s));for(let s of this.plugins)s.update(this);this.observer=new Zoe(this),this.inputState=new woe(this),this.inputState.ensureHandlers(this.plugins),this.docView=new yE(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((n=document.fonts)===null||n===void 0)&&n.ready&&document.fonts.ready.then(()=>this.requestMeasure())}dispatch(...e){let n=e.length==1&&e[0]instanceof ns?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(n,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let n=!1,r=!1,s,i=this.state;for(let g of e){if(g.startState!=i)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");i=g.state}if(this.destroyed){this.viewState.state=i;return}let a=this.hasFocus,l=0,c=null;e.some(g=>g.annotation(cq))?(this.inputState.notifiedFocused=a,l=1):a!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=a,c=uq(i,a),c||(l=1));let d=this.observer.delayedAndroidKey,h=null;if(d?(this.observer.clearDelayedAndroidKey(),h=this.observer.readChange(),(h&&!this.state.doc.eq(i.doc)||!this.state.selection.eq(i.selection))&&(h=null)):this.observer.clear(),i.facet(bn.phrases)!=this.state.facet(bn.phrases))return this.setState(i);s=qv.create(this,i,e),s.flags|=l;let m=this.viewState.scrollTarget;try{this.updateState=2;for(let g of e){if(m&&(m=m.map(g.changes)),g.scrollIntoView){let{main:x}=g.state.selection;m=new zh(x.empty?x:Ae.cursor(x.head,x.head>x.anchor?-1:1))}for(let x of g.effects)x.is(e1)&&(m=x.value.clip(this.state))}this.viewState.update(s,m),this.bidiCache=Hv.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),n=this.docView.update(s),this.state.facet(s0)!=this.styleModules&&this.mountStyles(),r=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(n,e.some(g=>g.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(a1)!=s.state.facet(a1)&&(this.viewState.mustMeasureContent=!0),(n||r||m||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),n&&this.docViewUpdate(),!s.empty)for(let g of this.state.facet(Lk))try{g(s)}catch(x){vi(this.state,x,"update listener")}(c||h)&&Promise.resolve().then(()=>{c&&this.state==c.startState&&this.dispatch(c),h&&!nq(this,h)&&d.force&&Ph(this.contentDOM,d.key,d.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let n=this.hasFocus;try{for(let r of this.plugins)r.destroy(this);this.viewState=new LE(e),this.plugins=e.facet(Nh).map(r=>new _4(r)),this.pluginMap.clear();for(let r of this.plugins)r.update(this);this.docView.destroy(),this.docView=new yE(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}n&&this.focus(),this.requestMeasure()}updatePlugins(e){let n=e.startState.facet(Nh),r=e.state.facet(Nh);if(n!=r){let s=[];for(let i of r){let a=n.indexOf(i);if(a<0)s.push(new _4(i));else{let l=this.plugins[a];l.mustUpdate=e,s.push(l)}}for(let i of this.plugins)i.mustUpdate!=e&&i.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=e;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let n=null,r=this.scrollDOM,s=r.scrollTop*this.scaleY,{scrollAnchorPos:i,scrollAnchorHeight:a}=this.viewState;Math.abs(s-this.viewState.scrollTop)>1&&(a=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(a<0)if(kF(r))i=-1,a=this.viewState.heightMap.height;else{let x=this.viewState.scrollAnchorAt(s);i=x.from,a=x.top}this.updateState=1;let c=this.viewState.measure(this);if(!c&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let d=[];c&4||([this.measureRequests,d]=[d,this.measureRequests]);let h=d.map(x=>{try{return x.read(this)}catch(y){return vi(this.state,y),$E}}),m=qv.create(this,this.state,[]),g=!1;m.flags|=c,n?n.flags|=c:n=m,this.updateState=2,m.empty||(this.updatePlugins(m),this.inputState.update(m),this.updateAttrs(),g=this.docView.update(m),g&&this.docViewUpdate());for(let x=0;x1||y<-1){s=s+y,r.scrollTop=s/this.scaleY,a=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(n&&!n.empty)for(let l of this.state.facet(Lk))l(n)}get themeClasses(){return Hk+" "+(this.state.facet($k)?mq:fq)+" "+this.state.facet(a1)}updateAttrs(){let e=HE(this,GF,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),n={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Tl)?"true":"false",class:"cm-content",style:`${et.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(n["aria-readonly"]="true"),HE(this,n6,n);let r=this.observer.ignore(()=>{let s=Rk(this.contentDOM,this.contentAttrs,n),i=Rk(this.dom,this.editorAttrs,e);return s||i});return this.editorAttrs=e,this.contentAttrs=n,r}showAnnouncements(e){let n=!0;for(let r of e)for(let s of r.effects)if(s.is(Ze.announce)){n&&(this.announceDOM.textContent=""),n=!1;let i=this.announceDOM.appendChild(document.createElement("div"));i.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(s0);let e=this.state.facet(Ze.cspNonce);Wc.mount(this.root,this.styleModules.concat(Yoe).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let n=0;nr.plugin==e)||null),n&&n.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,n,r){return A4(this,e,OE(this,e,n,r))}moveByGroup(e,n){return A4(this,e,OE(this,e,n,r=>hoe(this,e.head,r)))}visualLineSide(e,n){let r=this.bidiSpans(e),s=this.textDirectionAt(e.from),i=r[n?r.length-1:0];return Ae.cursor(i.side(n,s)+e.from,i.forward(!n,s)?1:-1)}moveToLineBoundary(e,n,r=!0){return doe(this,e,n,r)}moveVertically(e,n,r){return A4(this,e,foe(this,e,n,r))}domAtPos(e){return this.docView.domAtPos(e)}posAtDOM(e,n=0){return this.docView.posFromDOM(e,n)}posAtCoords(e,n=!0){return this.readMeasured(),JF(this,e,n)}coordsAtPos(e,n=1){this.readMeasured();let r=this.docView.coordsAt(e,n);if(!r||r.left==r.right)return r;let s=this.state.doc.lineAt(e),i=this.bidiSpans(s),a=i[Bc.find(i,e-s.from,-1,n)];return Bp(r,a.dir==gr.LTR==n>0)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(QF)||ethis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>tle)return zF(e.length);let n=this.textDirectionAt(e.from),r;for(let i of this.bidiCache)if(i.from==e.from&&i.dir==n&&(i.fresh||PF(i.isolates,r=vE(this,e))))return i.order;r||(r=vE(this,e));let s=Xae(e.text,n,r);return this.bidiCache.push(new Hv(e.from,e.to,n,r,!0,s)),s}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||et.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{wF(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,n={}){return e1.of(new zh(typeof e=="number"?Ae.cursor(e):e,n.y,n.x,n.yMargin,n.xMargin))}scrollSnapshot(){let{scrollTop:e,scrollLeft:n}=this.scrollDOM,r=this.viewState.scrollAnchorAt(e);return e1.of(new zh(Ae.cursor(r.from),"start","start",r.top-e,n,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return Vr.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return Vr.define(()=>({}),{eventObservers:e})}static theme(e,n){let r=Wc.newName(),s=[a1.of(r),s0.of(Qk(`.${r}`,e))];return n&&n.dark&&s.push($k.of(!0)),s}static baseTheme(e){return ou.lowest(s0.of(Qk("."+Hk,e,pq)))}static findFromDOM(e){var n;let r=e.querySelector(".cm-content"),s=r&&er.get(r)||er.get(e);return((n=s?.rootView)===null||n===void 0?void 0:n.view)||null}}Ze.styleModule=s0;Ze.inputHandler=$F;Ze.clipboardInputFilter=e6;Ze.clipboardOutputFilter=t6;Ze.scrollHandler=UF;Ze.focusChangeEffect=HF;Ze.perLineTextDirection=QF;Ze.exceptionSink=qF;Ze.updateListener=Lk;Ze.editable=Tl;Ze.mouseSelectionStyle=FF;Ze.dragMovesSelection=BF;Ze.clickAddsSelectionRange=LF;Ze.decorations=F0;Ze.outerDecorations=XF;Ze.atomicRanges=$p;Ze.bidiIsolatedRanges=YF;Ze.scrollMargins=KF;Ze.darkTheme=$k;Ze.cspNonce=at.define({combine:t=>t.length?t[0]:""});Ze.contentAttributes=n6;Ze.editorAttributes=GF;Ze.lineWrapping=Ze.contentAttributes.of({class:"cm-lineWrapping"});Ze.announce=Ft.define();const tle=4096,$E={};class Hv{constructor(e,n,r,s,i,a){this.from=e,this.to=n,this.dir=r,this.isolates=s,this.fresh=i,this.order=a}static update(e,n){if(n.empty&&!e.some(i=>i.fresh))return e;let r=[],s=e.length?e[e.length-1].dir:gr.LTR;for(let i=Math.max(0,e.length-10);i=0;s--){let i=r[s],a=typeof i=="function"?i(t):i;a&&Ak(a,n)}return n}const nle=et.mac?"mac":et.windows?"win":et.linux?"linux":"key";function rle(t,e){const n=t.split(/-(?!$)/);let r=n[n.length-1];r=="Space"&&(r=" ");let s,i,a,l;for(let c=0;cr.concat(s),[]))),n}function ile(t,e,n){return xq(gq(t.state),e,t,n)}let Pc=null;const ale=4e3;function ole(t,e=nle){let n=Object.create(null),r=Object.create(null),s=(a,l)=>{let c=r[a];if(c==null)r[a]=l;else if(c!=l)throw new Error("Key binding "+a+" is used both as a regular binding and as a multi-stroke prefix")},i=(a,l,c,d,h)=>{var m,g;let x=n[a]||(n[a]=Object.create(null)),y=l.split(/ (?!$)/).map(k=>rle(k,e));for(let k=1;k{let T=Pc={view:N,prefix:j,scope:a};return setTimeout(()=>{Pc==T&&(Pc=null)},ale),!0}]})}let w=y.join(" ");s(w,!1);let S=x[w]||(x[w]={preventDefault:!1,stopPropagation:!1,run:((g=(m=x._any)===null||m===void 0?void 0:m.run)===null||g===void 0?void 0:g.slice())||[]});c&&S.run.push(c),d&&(S.preventDefault=!0),h&&(S.stopPropagation=!0)};for(let a of t){let l=a.scope?a.scope.split(" "):["editor"];if(a.any)for(let d of l){let h=n[d]||(n[d]=Object.create(null));h._any||(h._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:m}=a;for(let g in h)h[g].run.push(x=>m(x,Vk))}let c=a[e]||a.key;if(c)for(let d of l)i(d,c,a.run,a.preventDefault,a.stopPropagation),a.shift&&i(d,"Shift-"+c,a.shift,a.preventDefault,a.stopPropagation)}return n}let Vk=null;function xq(t,e,n,r){Vk=e;let s=Eae(e),i=gi(s,0),a=wo(i)==s.length&&s!=" ",l="",c=!1,d=!1,h=!1;Pc&&Pc.view==n&&Pc.scope==r&&(l=Pc.prefix+" ",iq.indexOf(e.keyCode)<0&&(d=!0,Pc=null));let m=new Set,g=S=>{if(S){for(let k of S.run)if(!m.has(k)&&(m.add(k),k(n)))return S.stopPropagation&&(h=!0),!0;S.preventDefault&&(S.stopPropagation&&(h=!0),d=!0)}return!1},x=t[r],y,w;return x&&(g(x[l+o1(s,e,!a)])?c=!0:a&&(e.altKey||e.metaKey||e.ctrlKey)&&!(et.windows&&e.ctrlKey&&e.altKey)&&!(et.mac&&e.altKey&&!(e.ctrlKey||e.metaKey))&&(y=Gc[e.keyCode])&&y!=s?(g(x[l+o1(y,e,!0)])||e.shiftKey&&(w=L0[e.keyCode])!=s&&w!=y&&g(x[l+o1(w,e,!1)]))&&(c=!0):a&&e.shiftKey&&g(x[l+o1(s,e,!0)])&&(c=!0),!c&&g(x._any)&&(c=!0)),d&&(c=!0),c&&h&&e.stopPropagation(),Vk=null,c}class Qp{constructor(e,n,r,s,i){this.className=e,this.left=n,this.top=r,this.width=s,this.height=i}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,n){return n.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,n,r){if(r.empty){let s=e.coordsAtPos(r.head,r.assoc||1);if(!s)return[];let i=vq(e);return[new Qp(n,s.left-i.left,s.top-i.top,null,s.bottom-s.top)]}else return lle(e,n,r)}}function vq(t){let e=t.scrollDOM.getBoundingClientRect();return{left:(t.textDirection==gr.LTR?e.left:e.right-t.scrollDOM.clientWidth*t.scaleX)-t.scrollDOM.scrollLeft*t.scaleX,top:e.top-t.scrollDOM.scrollTop*t.scaleY}}function VE(t,e,n,r){let s=t.coordsAtPos(e,n*2);if(!s)return r;let i=t.dom.getBoundingClientRect(),a=(s.top+s.bottom)/2,l=t.posAtCoords({x:i.left+1,y:a}),c=t.posAtCoords({x:i.right-1,y:a});return l==null||c==null?r:{from:Math.max(r.from,Math.min(l,c)),to:Math.min(r.to,Math.max(l,c))}}function lle(t,e,n){if(n.to<=t.viewport.from||n.from>=t.viewport.to)return[];let r=Math.max(n.from,t.viewport.from),s=Math.min(n.to,t.viewport.to),i=t.textDirection==gr.LTR,a=t.contentDOM,l=a.getBoundingClientRect(),c=vq(t),d=a.querySelector(".cm-line"),h=d&&window.getComputedStyle(d),m=l.left+(h?parseInt(h.paddingLeft)+Math.min(0,parseInt(h.textIndent)):0),g=l.right-(h?parseInt(h.paddingRight):0),x=Fk(t,r,1),y=Fk(t,s,-1),w=x.type==ti.Text?x:null,S=y.type==ti.Text?y:null;if(w&&(t.lineWrapping||x.widgetLineBreaks)&&(w=VE(t,r,1,w)),S&&(t.lineWrapping||y.widgetLineBreaks)&&(S=VE(t,s,-1,S)),w&&S&&w.from==S.from&&w.to==S.to)return j(N(n.from,n.to,w));{let E=w?N(n.from,null,w):T(x,!1),_=S?N(null,n.to,S):T(y,!0),M=[];return(w||x).to<(S||y).from-(w&&S?1:0)||x.widgetLineBreaks>1&&E.bottom+t.defaultLineHeight/2<_.top?M.push(k(m,E.bottom,g,_.top)):E.bottom<_.top&&t.elementAtHeight((E.bottom+_.top)/2).type==ti.Text&&(E.bottom=_.top=(E.bottom+_.top)/2),j(E).concat(M).concat(j(_))}function k(E,_,M,I){return new Qp(e,E-c.left,_-c.top,M-E,I-_)}function j({top:E,bottom:_,horizontal:M}){let I=[];for(let P=0;PU&&z.from=B)break;R>Q&&H(Math.max(G,Q),E==null&&G<=U,Math.min(R,B),_==null&&R>=ee,J.dir)}if(Q=X.to+1,Q>=B)break}return L.length==0&&H(U,E==null,ee,_==null,t.textDirection),{top:I,bottom:P,horizontal:L}}function T(E,_){let M=l.top+(_?E.top:E.bottom);return{top:M,bottom:M,horizontal:[]}}}function cle(t,e){return t.constructor==e.constructor&&t.eq(e)}class ule{constructor(e,n){this.view=e,this.layer=n,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),n.above&&this.dom.classList.add("cm-layer-above"),n.class&&this.dom.classList.add(n.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),n.mount&&n.mount(this.dom,e)}update(e){e.startState.facet(cv)!=e.state.facet(cv)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let n=0,r=e.facet(cv);for(;n!cle(n,this.drawn[r]))){let n=this.dom.firstChild,r=0;for(let s of e)s.update&&n&&s.constructor&&this.drawn[r].constructor&&s.update(n,this.drawn[r])?(n=n.nextSibling,r++):this.dom.insertBefore(s.draw(),n);for(;n;){let s=n.nextSibling;n.remove(),n=s}this.drawn=e,et.safari&&et.safari_version>=26&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}}const cv=at.define();function yq(t){return[Vr.define(e=>new ule(e,t)),cv.of(t)]}const q0=at.define({combine(t){return qo(t,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,n)=>Math.min(e,n),drawRangeCursor:(e,n)=>e||n})}});function dle(t={}){return[q0.of(t),hle,fle,mle,VF.of(!0)]}function bq(t){return t.startState.facet(q0)!=t.state.facet(q0)}const hle=yq({above:!0,markers(t){let{state:e}=t,n=e.facet(q0),r=[];for(let s of e.selection.ranges){let i=s==e.selection.main;if(s.empty||n.drawRangeCursor){let a=i?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:Ae.cursor(s.head,s.head>s.anchor?-1:1);for(let c of Qp.forRange(t,a,l))r.push(c)}}return r},update(t,e){t.transactions.some(r=>r.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let n=bq(t);return n&&UE(t.state,e),t.docChanged||t.selectionSet||n},mount(t,e){UE(e.state,t)},class:"cm-cursorLayer"});function UE(t,e){e.style.animationDuration=t.facet(q0).cursorBlinkRate+"ms"}const fle=yq({above:!1,markers(t){return t.state.selection.ranges.map(e=>e.empty?[]:Qp.forRange(t,"cm-selectionBackground",e)).reduce((e,n)=>e.concat(n))},update(t,e){return t.docChanged||t.selectionSet||t.viewportChanged||bq(t)},class:"cm-selectionLayer"}),mle=ou.highest(Ze.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}})),wq=Ft.define({map(t,e){return t==null?null:e.mapPos(t)}}),o0=Os.define({create(){return null},update(t,e){return t!=null&&(t=e.changes.mapPos(t)),e.effects.reduce((n,r)=>r.is(wq)?r.value:n,t)}}),ple=Vr.fromClass(class{constructor(t){this.view=t,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(t){var e;let n=t.state.field(o0);n==null?this.cursor!=null&&((e=this.cursor)===null||e===void 0||e.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(t.startState.field(o0)!=n||t.docChanged||t.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:t}=this,e=t.state.field(o0),n=e!=null&&t.coordsAtPos(e);if(!n)return null;let r=t.scrollDOM.getBoundingClientRect();return{left:n.left-r.left+t.scrollDOM.scrollLeft*t.scaleX,top:n.top-r.top+t.scrollDOM.scrollTop*t.scaleY,height:n.bottom-n.top}}drawCursor(t){if(this.cursor){let{scaleX:e,scaleY:n}=this.view;t?(this.cursor.style.left=t.left/e+"px",this.cursor.style.top=t.top/n+"px",this.cursor.style.height=t.height/n+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(t){this.view.state.field(o0)!=t&&this.view.dispatch({effects:wq.of(t)})}},{eventObservers:{dragover(t){this.setDropPos(this.view.posAtCoords({x:t.clientX,y:t.clientY}))},dragleave(t){(t.target==this.view.contentDOM||!this.view.contentDOM.contains(t.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function gle(){return[o0,ple]}function WE(t,e,n,r,s){e.lastIndex=0;for(let i=t.iterRange(n,r),a=n,l;!i.next().done;a+=i.value.length)if(!i.lineBreak)for(;l=e.exec(i.value);)s(a+l.index,l)}function xle(t,e){let n=t.visibleRanges;if(n.length==1&&n[0].from==t.viewport.from&&n[0].to==t.viewport.to)return n;let r=[];for(let{from:s,to:i}of n)s=Math.max(t.state.doc.lineAt(s).from,s-e),i=Math.min(t.state.doc.lineAt(i).to,i+e),r.length&&r[r.length-1].to>=s?r[r.length-1].to=i:r.push({from:s,to:i});return r}class vle{constructor(e){const{regexp:n,decoration:r,decorate:s,boundary:i,maxLength:a=1e3}=e;if(!n.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=n,s)this.addMatch=(l,c,d,h)=>s(h,d,d+l[0].length,l,c);else if(typeof r=="function")this.addMatch=(l,c,d,h)=>{let m=r(l,c,d);m&&h(d,d+l[0].length,m)};else if(r)this.addMatch=(l,c,d,h)=>h(d,d+l[0].length,r);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=i,this.maxLength=a}createDeco(e){let n=new Fl,r=n.add.bind(n);for(let{from:s,to:i}of xle(e,this.maxLength))WE(e.state.doc,this.regexp,s,i,(a,l)=>this.addMatch(l,e,a,r));return n.finish()}updateDeco(e,n){let r=1e9,s=-1;return e.docChanged&&e.changes.iterChanges((i,a,l,c)=>{c>=e.view.viewport.from&&l<=e.view.viewport.to&&(r=Math.min(l,r),s=Math.max(c,s))}),e.viewportMoved||s-r>1e3?this.createDeco(e.view):s>-1?this.updateRange(e.view,n.map(e.changes),r,s):n}updateRange(e,n,r,s){for(let i of e.visibleRanges){let a=Math.max(i.from,r),l=Math.min(i.to,s);if(l>=a){let c=e.state.doc.lineAt(a),d=c.toc.from;a--)if(this.boundary.test(c.text[a-1-c.from])){h=a;break}for(;lg.push(k.range(w,S));if(c==d)for(this.regexp.lastIndex=h-c.from;(x=this.regexp.exec(c.text))&&x.indexthis.addMatch(S,e,w,y));n=n.update({filterFrom:h,filterTo:m,filter:(w,S)=>wm,add:g})}}return n}}const Uk=/x/.unicode!=null?"gu":"g",yle=new RegExp(`[\0-\b ---Ÿ­؜​‎‏\u2028\u2029‭‮⁦⁧⁩\uFEFF-]`,Uk),ble={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let P4=null;function wle(){var t;if(P4==null&&typeof document<"u"&&document.body){let e=document.body.style;P4=((t=e.tabSize)!==null&&t!==void 0?t:e.MozTabSize)!=null}return P4||!1}const uv=at.define({combine(t){let e=qo(t,{render:null,specialChars:yle,addSpecialChars:null});return(e.replaceTabs=!wle())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,Uk)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,Uk)),e}});function Sle(t={}){return[uv.of(t),kle()]}let GE=null;function kle(){return GE||(GE=Vr.fromClass(class{constructor(t){this.view=t,this.decorations=kt.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(t.state.facet(uv)),this.decorations=this.decorator.createDeco(t)}makeDecorator(t){return new vle({regexp:t.specialChars,decoration:(e,n,r)=>{let{doc:s}=n.state,i=gi(e[0],0);if(i==9){let a=s.lineAt(r),l=n.state.tabSize,c=Of(a.text,l,r-a.from);return kt.replace({widget:new Cle((l-c%l)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[i]||(this.decorationCache[i]=kt.replace({widget:new Nle(t,i)}))},boundary:t.replaceTabs?void 0:/[^]/})}update(t){let e=t.state.facet(uv);t.startState.facet(uv)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(t.view)):this.decorations=this.decorator.updateDeco(t,this.decorations)}},{decorations:t=>t.decorations}))}const Ole="•";function jle(t){return t>=32?Ole:t==10?"␤":String.fromCharCode(9216+t)}class Nle extends $o{constructor(e,n){super(),this.options=e,this.code=n}eq(e){return e.code==this.code}toDOM(e){let n=jle(this.code),r=e.state.phrase("Control character")+" "+(ble[this.code]||"0x"+this.code.toString(16)),s=this.options.render&&this.options.render(this.code,r,n);if(s)return s;let i=document.createElement("span");return i.textContent=n,i.title=r,i.setAttribute("aria-label",r),i.className="cm-specialChar",i}ignoreEvent(){return!1}}class Cle extends $o{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}}function Tle(){return _le}const Ele=kt.line({class:"cm-activeLine"}),_le=Vr.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.docChanged||t.selectionSet)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=-1,n=[];for(let r of t.state.selection.ranges){let s=t.lineBlockAt(r.head);s.from>e&&(n.push(Ele.range(s.from)),e=s.from)}return kt.set(n)}},{decorations:t=>t.decorations});class Mle extends $o{constructor(e){super(),this.content=e}toDOM(e){let n=document.createElement("span");return n.className="cm-placeholder",n.style.pointerEvents="none",n.appendChild(typeof this.content=="string"?document.createTextNode(this.content):typeof this.content=="function"?this.content(e):this.content.cloneNode(!0)),n.setAttribute("aria-hidden","true"),n}coordsAt(e){let n=e.firstChild?Kh(e.firstChild):[];if(!n.length)return null;let r=window.getComputedStyle(e.parentNode),s=Bp(n[0],r.direction!="rtl"),i=parseInt(r.lineHeight);return s.bottom-s.top>i*1.5?{left:s.left,right:s.right,top:s.top,bottom:s.top+i}:s}ignoreEvent(){return!1}}function Ale(t){let e=Vr.fromClass(class{constructor(n){this.view=n,this.placeholder=t?kt.set([kt.widget({widget:new Mle(t),side:1}).range(0)]):kt.none}get decorations(){return this.view.state.doc.length?kt.none:this.placeholder}},{decorations:n=>n.decorations});return typeof t=="string"?[e,Ze.contentAttributes.of({"aria-placeholder":t})]:e}const Wk=2e3;function Rle(t,e,n){let r=Math.min(e.line,n.line),s=Math.max(e.line,n.line),i=[];if(e.off>Wk||n.off>Wk||e.col<0||n.col<0){let a=Math.min(e.off,n.off),l=Math.max(e.off,n.off);for(let c=r;c<=s;c++){let d=t.doc.line(c);d.length<=l&&i.push(Ae.range(d.from+a,d.to+l))}}else{let a=Math.min(e.col,n.col),l=Math.max(e.col,n.col);for(let c=r;c<=s;c++){let d=t.doc.line(c),h=Ok(d.text,a,t.tabSize,!0);if(h<0)i.push(Ae.cursor(d.to));else{let m=Ok(d.text,l,t.tabSize);i.push(Ae.range(d.from+h,d.from+m))}}}return i}function Dle(t,e){let n=t.coordsAtPos(t.viewport.from);return n?Math.round(Math.abs((n.left-e)/t.defaultCharacterWidth)):-1}function XE(t,e){let n=t.posAtCoords({x:e.clientX,y:e.clientY},!1),r=t.state.doc.lineAt(n),s=n-r.from,i=s>Wk?-1:s==r.length?Dle(t,e.clientX):Of(r.text,t.state.tabSize,n-r.from);return{line:r.number,col:i,off:s}}function Ple(t,e){let n=XE(t,e),r=t.state.selection;return n?{update(s){if(s.docChanged){let i=s.changes.mapPos(s.startState.doc.line(n.line).from),a=s.state.doc.lineAt(i);n={line:a.number,col:n.col,off:Math.min(n.off,a.length)},r=r.map(s.changes)}},get(s,i,a){let l=XE(t,s);if(!l)return r;let c=Rle(t.state,n,l);return c.length?a?Ae.create(c.concat(r.ranges)):Ae.create(c):r}}:null}function zle(t){let e=(n=>n.altKey&&n.button==0);return Ze.mouseSelectionStyle.of((n,r)=>e(r)?Ple(n,r):null)}const Ile={Alt:[18,t=>!!t.altKey],Control:[17,t=>!!t.ctrlKey],Shift:[16,t=>!!t.shiftKey],Meta:[91,t=>!!t.metaKey]},Lle={style:"cursor: crosshair"};function Ble(t={}){let[e,n]=Ile[t.key||"Alt"],r=Vr.fromClass(class{constructor(s){this.view=s,this.isDown=!1}set(s){this.isDown!=s&&(this.isDown=s,this.view.update([]))}},{eventObservers:{keydown(s){this.set(s.keyCode==e||n(s))},keyup(s){(s.keyCode==e||!n(s))&&this.set(!1)},mousemove(s){this.set(n(s))}}});return[r,Ze.contentAttributes.of(s=>{var i;return!((i=s.plugin(r))===null||i===void 0)&&i.isDown?Lle:null})]}const l1="-10000px";class Sq{constructor(e,n,r,s){this.facet=n,this.createTooltipView=r,this.removeTooltipView=s,this.input=e.state.facet(n),this.tooltips=this.input.filter(a=>a);let i=null;this.tooltipViews=this.tooltips.map(a=>i=r(a,i))}update(e,n){var r;let s=e.state.facet(this.facet),i=s.filter(c=>c);if(s===this.input){for(let c of this.tooltipViews)c.update&&c.update(e);return!1}let a=[],l=n?[]:null;for(let c=0;cn[d]=c),n.length=l.length),this.input=s,this.tooltips=i,this.tooltipViews=a,!0}}function Fle(t){let e=t.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:e.clientHeight,right:e.clientWidth}}const z4=at.define({combine:t=>{var e,n,r;return{position:et.ios?"absolute":((e=t.find(s=>s.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((n=t.find(s=>s.parent))===null||n===void 0?void 0:n.parent)||null,tooltipSpace:((r=t.find(s=>s.tooltipSpace))===null||r===void 0?void 0:r.tooltipSpace)||Fle}}}),YE=new WeakMap,o6=Vr.fromClass(class{constructor(t){this.view=t,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let e=t.state.facet(z4);this.position=e.position,this.parent=e.parent,this.classes=t.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.resizeObserver=typeof ResizeObserver=="function"?new ResizeObserver(()=>this.measureSoon()):null,this.manager=new Sq(t,l6,(n,r)=>this.createTooltip(n,r),n=>{this.resizeObserver&&this.resizeObserver.unobserve(n.dom),n.dom.remove()}),this.above=this.manager.tooltips.map(n=>!!n.above),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(n=>{Date.now()>this.lastTransaction-50&&n.length>0&&n[n.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),t.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let t of this.manager.tooltipViews)this.intersectionObserver.observe(t.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(t){t.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(t,this.above);e&&this.observeIntersection();let n=e||t.geometryChanged,r=t.state.facet(z4);if(r.position!=this.position&&!this.madeAbsolute){this.position=r.position;for(let s of this.manager.tooltipViews)s.dom.style.position=this.position;n=!0}if(r.parent!=this.parent){this.parent&&this.container.remove(),this.parent=r.parent,this.createContainer();for(let s of this.manager.tooltipViews)this.container.appendChild(s.dom);n=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);n&&this.maybeMeasure()}createTooltip(t,e){let n=t.create(this.view),r=e?e.dom:null;if(n.dom.classList.add("cm-tooltip"),t.arrow&&!n.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let s=document.createElement("div");s.className="cm-tooltip-arrow",n.dom.appendChild(s)}return n.dom.style.position=this.position,n.dom.style.top=l1,n.dom.style.left="0px",this.container.insertBefore(n.dom,r),n.mount&&n.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(n.dom),n}destroy(){var t,e,n;this.view.win.removeEventListener("resize",this.measureSoon);for(let r of this.manager.tooltipViews)r.dom.remove(),(t=r.destroy)===null||t===void 0||t.call(r);this.parent&&this.container.remove(),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),(n=this.intersectionObserver)===null||n===void 0||n.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let t=1,e=1,n=!1;if(this.position=="fixed"&&this.manager.tooltipViews.length){let{dom:i}=this.manager.tooltipViews[0];if(et.safari){let a=i.getBoundingClientRect();n=Math.abs(a.top+1e4)>1||Math.abs(a.left)>1}else n=!!i.offsetParent&&i.offsetParent!=this.container.ownerDocument.body}if(n||this.position=="absolute")if(this.parent){let i=this.parent.getBoundingClientRect();i.width&&i.height&&(t=i.width/this.parent.offsetWidth,e=i.height/this.parent.offsetHeight)}else({scaleX:t,scaleY:e}=this.view.viewState);let r=this.view.scrollDOM.getBoundingClientRect(),s=r6(this.view);return{visible:{left:r.left+s.left,top:r.top+s.top,right:r.right-s.right,bottom:r.bottom-s.bottom},parent:this.parent?this.container.getBoundingClientRect():this.view.dom.getBoundingClientRect(),pos:this.manager.tooltips.map((i,a)=>{let l=this.manager.tooltipViews[a];return l.getCoords?l.getCoords(i.pos):this.view.coordsAtPos(i.pos)}),size:this.manager.tooltipViews.map(({dom:i})=>i.getBoundingClientRect()),space:this.view.state.facet(z4).tooltipSpace(this.view),scaleX:t,scaleY:e,makeAbsolute:n}}writeMeasure(t){var e;if(t.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let l of this.manager.tooltipViews)l.dom.style.position="absolute"}let{visible:n,space:r,scaleX:s,scaleY:i}=t,a=[];for(let l=0;l=Math.min(n.bottom,r.bottom)||m.rightMath.min(n.right,r.right)+.1)){h.style.top=l1;continue}let x=c.arrow?d.dom.querySelector(".cm-tooltip-arrow"):null,y=x?7:0,w=g.right-g.left,S=(e=YE.get(d))!==null&&e!==void 0?e:g.bottom-g.top,k=d.offset||$le,j=this.view.textDirection==gr.LTR,N=g.width>r.right-r.left?j?r.left:r.right-g.width:j?Math.max(r.left,Math.min(m.left-(x?14:0)+k.x,r.right-w)):Math.min(Math.max(r.left,m.left-w+(x?14:0)-k.x),r.right-w),T=this.above[l];!c.strictSide&&(T?m.top-S-y-k.yr.bottom)&&T==r.bottom-m.bottom>m.top-r.top&&(T=this.above[l]=!T);let E=(T?m.top-r.top:r.bottom-m.bottom)-y;if(EN&&I.top<_+S&&I.bottom>_&&(_=T?I.top-S-2-y:I.bottom+y+2);if(this.position=="absolute"?(h.style.top=(_-t.parent.top)/i+"px",KE(h,(N-t.parent.left)/s)):(h.style.top=_/i+"px",KE(h,N/s)),x){let I=m.left+(j?k.x:-k.x)-(N+14-7);x.style.left=I/s+"px"}d.overlap!==!0&&a.push({left:N,top:_,right:M,bottom:_+S}),h.classList.toggle("cm-tooltip-above",T),h.classList.toggle("cm-tooltip-below",!T),d.positioned&&d.positioned(t.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let t of this.manager.tooltipViews)t.dom.style.top=l1}},{eventObservers:{scroll(){this.maybeMeasure()}}});function KE(t,e){let n=parseInt(t.style.left,10);(isNaN(n)||Math.abs(e-n)>1)&&(t.style.left=e+"px")}const qle=Ze.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:"14px",position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),$le={x:0,y:0},l6=at.define({enables:[o6,qle]}),Qv=at.define({combine:t=>t.reduce((e,n)=>e.concat(n),[])});class ib{static create(e){return new ib(e)}constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new Sq(e,Qv,(n,r)=>this.createHostedView(n,r),n=>n.dom.remove())}createHostedView(e,n){let r=e.create(this.view);return r.dom.classList.add("cm-tooltip-section"),this.dom.insertBefore(r.dom,n?n.dom.nextSibling:this.dom.firstChild),this.mounted&&r.mount&&r.mount(this.view),r}mount(e){for(let n of this.manager.tooltipViews)n.mount&&n.mount(e);this.mounted=!0}positioned(e){for(let n of this.manager.tooltipViews)n.positioned&&n.positioned(e)}update(e){this.manager.update(e)}destroy(){var e;for(let n of this.manager.tooltipViews)(e=n.destroy)===null||e===void 0||e.call(n)}passProp(e){let n;for(let r of this.manager.tooltipViews){let s=r[e];if(s!==void 0){if(n===void 0)n=s;else if(n!==s)return}}return n}get offset(){return this.passProp("offset")}get getCoords(){return this.passProp("getCoords")}get overlap(){return this.passProp("overlap")}get resize(){return this.passProp("resize")}}const Hle=l6.compute([Qv],t=>{let e=t.facet(Qv);return e.length===0?null:{pos:Math.min(...e.map(n=>n.pos)),end:Math.max(...e.map(n=>{var r;return(r=n.end)!==null&&r!==void 0?r:n.pos})),create:ib.create,above:e[0].above,arrow:e.some(n=>n.arrow)}});class Qle{constructor(e,n,r,s,i){this.view=e,this.source=n,this.field=r,this.setHover=s,this.hoverTime=i,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active.length)return;let e=Date.now()-this.lastMove.time;el.bottom||n.xl.right+e.defaultCharacterWidth)return;let c=e.bidiSpans(e.state.doc.lineAt(s)).find(h=>h.from<=s&&h.to>=s),d=c&&c.dir==gr.RTL?-1:1;i=n.x{this.pending==l&&(this.pending=null,c&&!(Array.isArray(c)&&!c.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(c)?c:[c])}))},c=>vi(e.state,c,"hover tooltip"))}else a&&!(Array.isArray(a)&&!a.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(a)?a:[a])})}get tooltip(){let e=this.view.plugin(o6),n=e?e.manager.tooltips.findIndex(r=>r.create==ib.create):-1;return n>-1?e.manager.tooltipViews[n]:null}mousemove(e){var n,r;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let{active:s,tooltip:i}=this;if(s.length&&i&&!Vle(i.dom,e)||this.pending){let{pos:a}=s[0]||this.pending,l=(r=(n=s[0])===null||n===void 0?void 0:n.end)!==null&&r!==void 0?r:a;(a==l?this.view.posAtCoords(this.lastMove)!=a:!Ule(this.view,a,l,e.clientX,e.clientY))&&(this.view.dispatch({effects:this.setHover.of([])}),this.pending=null)}}mouseleave(e){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;let{active:n}=this;if(n.length){let{tooltip:r}=this;r&&r.dom.contains(e.relatedTarget)?this.watchTooltipLeave(r.dom):this.view.dispatch({effects:this.setHover.of([])})}}watchTooltipLeave(e){let n=r=>{e.removeEventListener("mouseleave",n),this.active.length&&!this.view.dom.contains(r.relatedTarget)&&this.view.dispatch({effects:this.setHover.of([])})};e.addEventListener("mouseleave",n)}destroy(){clearTimeout(this.hoverTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}}const c1=4;function Vle(t,e){let{left:n,right:r,top:s,bottom:i}=t.getBoundingClientRect(),a;if(a=t.querySelector(".cm-tooltip-arrow")){let l=a.getBoundingClientRect();s=Math.min(l.top,s),i=Math.max(l.bottom,i)}return e.clientX>=n-c1&&e.clientX<=r+c1&&e.clientY>=s-c1&&e.clientY<=i+c1}function Ule(t,e,n,r,s,i){let a=t.scrollDOM.getBoundingClientRect(),l=t.documentTop+t.documentPadding.top+t.contentHeight;if(a.left>r||a.rights||Math.min(a.bottom,l)=e&&c<=n}function Wle(t,e={}){let n=Ft.define(),r=Os.define({create(){return[]},update(s,i){if(s.length&&(e.hideOnChange&&(i.docChanged||i.selection)?s=[]:e.hideOn&&(s=s.filter(a=>!e.hideOn(i,a))),i.docChanged)){let a=[];for(let l of s){let c=i.changes.mapPos(l.pos,-1,Rs.TrackDel);if(c!=null){let d=Object.assign(Object.create(null),l);d.pos=c,d.end!=null&&(d.end=i.changes.mapPos(d.end)),a.push(d)}}s=a}for(let a of i.effects)a.is(n)&&(s=a.value),a.is(Gle)&&(s=[]);return s},provide:s=>Qv.from(s)});return{active:r,extension:[r,Vr.define(s=>new Qle(s,t,r,n,e.hoverTime||300)),Hle]}}function kq(t,e){let n=t.plugin(o6);if(!n)return null;let r=n.manager.tooltips.indexOf(e);return r<0?null:n.manager.tooltipViews[r]}const Gle=Ft.define(),ZE=at.define({combine(t){let e,n;for(let r of t)e=e||r.topContainer,n=n||r.bottomContainer;return{topContainer:e,bottomContainer:n}}});function $0(t,e){let n=t.plugin(Oq),r=n?n.specs.indexOf(e):-1;return r>-1?n.panels[r]:null}const Oq=Vr.fromClass(class{constructor(t){this.input=t.state.facet(H0),this.specs=this.input.filter(n=>n),this.panels=this.specs.map(n=>n(t));let e=t.state.facet(ZE);this.top=new u1(t,!0,e.topContainer),this.bottom=new u1(t,!1,e.bottomContainer),this.top.sync(this.panels.filter(n=>n.top)),this.bottom.sync(this.panels.filter(n=>!n.top));for(let n of this.panels)n.dom.classList.add("cm-panel"),n.mount&&n.mount()}update(t){let e=t.state.facet(ZE);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new u1(t.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new u1(t.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let n=t.state.facet(H0);if(n!=this.input){let r=n.filter(c=>c),s=[],i=[],a=[],l=[];for(let c of r){let d=this.specs.indexOf(c),h;d<0?(h=c(t.view),l.push(h)):(h=this.panels[d],h.update&&h.update(t)),s.push(h),(h.top?i:a).push(h)}this.specs=r,this.panels=s,this.top.sync(i),this.bottom.sync(a);for(let c of l)c.dom.classList.add("cm-panel"),c.mount&&c.mount()}else for(let r of this.panels)r.update&&r.update(t)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:t=>Ze.scrollMargins.of(e=>{let n=e.plugin(t);return n&&{top:n.top.scrollMargin(),bottom:n.bottom.scrollMargin()}})});class u1{constructor(e,n,r){this.view=e,this.top=n,this.container=r,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let n of this.panels)n.destroy&&e.indexOf(n)<0&&n.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let n=this.container||this.view.dom;n.insertBefore(this.dom,this.top?n.firstChild:null)}let e=this.dom.firstChild;for(let n of this.panels)if(n.dom.parentNode==this.dom){for(;e!=n.dom;)e=JE(e);e=e.nextSibling}else this.dom.insertBefore(n.dom,e);for(;e;)e=JE(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}}function JE(t){let e=t.nextSibling;return t.remove(),e}const H0=at.define({enables:Oq});class $l extends sd{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}}$l.prototype.elementClass="";$l.prototype.toDOM=void 0;$l.prototype.mapMode=Rs.TrackBefore;$l.prototype.startSide=$l.prototype.endSide=-1;$l.prototype.point=!0;const dv=at.define(),Xle=at.define(),Yle={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>Rn.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{},side:"before"},S0=at.define();function Kle(t){return[jq(),S0.of({...Yle,...t})]}const e_=at.define({combine:t=>t.some(e=>e)});function jq(t){return[Zle]}const Zle=Vr.fromClass(class{constructor(t){this.view=t,this.domAfter=null,this.prevViewport=t.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=t.state.facet(S0).map(e=>new n_(t,e)),this.fixed=!t.state.facet(e_);for(let e of this.gutters)e.config.side=="after"?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),t.scrollDOM.insertBefore(this.dom,t.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(t){if(this.updateGutters(t)){let e=this.prevViewport,n=t.view.viewport,r=Math.min(e.to,n.to)-Math.max(e.from,n.from);this.syncGutters(r<(n.to-n.from)*.8)}if(t.geometryChanged){let e=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=e,this.domAfter&&(this.domAfter.style.minHeight=e)}this.view.state.facet(e_)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=t.view.viewport}syncGutters(t){let e=this.dom.nextSibling;t&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let n=Rn.iter(this.view.state.facet(dv),this.view.viewport.from),r=[],s=this.gutters.map(i=>new Jle(i,this.view.viewport,-this.view.documentPadding.top));for(let i of this.view.viewportLineBlocks)if(r.length&&(r=[]),Array.isArray(i.type)){let a=!0;for(let l of i.type)if(l.type==ti.Text&&a){Gk(n,r,l.from);for(let c of s)c.line(this.view,l,r);a=!1}else if(l.widget)for(let c of s)c.widget(this.view,l)}else if(i.type==ti.Text){Gk(n,r,i.from);for(let a of s)a.line(this.view,i,r)}else if(i.widget)for(let a of s)a.widget(this.view,i);for(let i of s)i.finish();t&&(this.view.scrollDOM.insertBefore(this.dom,e),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(t){let e=t.startState.facet(S0),n=t.state.facet(S0),r=t.docChanged||t.heightChanged||t.viewportChanged||!Rn.eq(t.startState.facet(dv),t.state.facet(dv),t.view.viewport.from,t.view.viewport.to);if(e==n)for(let s of this.gutters)s.update(t)&&(r=!0);else{r=!0;let s=[];for(let i of n){let a=e.indexOf(i);a<0?s.push(new n_(this.view,i)):(this.gutters[a].update(t),s.push(this.gutters[a]))}for(let i of this.gutters)i.dom.remove(),s.indexOf(i)<0&&i.destroy();for(let i of s)i.config.side=="after"?this.getDOMAfter().appendChild(i.dom):this.dom.appendChild(i.dom);this.gutters=s}return r}destroy(){for(let t of this.gutters)t.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:t=>Ze.scrollMargins.of(e=>{let n=e.plugin(t);if(!n||n.gutters.length==0||!n.fixed)return null;let r=n.dom.offsetWidth*e.scaleX,s=n.domAfter?n.domAfter.offsetWidth*e.scaleX:0;return e.textDirection==gr.LTR?{left:r,right:s}:{right:r,left:s}})});function t_(t){return Array.isArray(t)?t:[t]}function Gk(t,e,n){for(;t.value&&t.from<=n;)t.from==n&&e.push(t.value),t.next()}class Jle{constructor(e,n,r){this.gutter=e,this.height=r,this.i=0,this.cursor=Rn.iter(e.markers,n.from)}addElement(e,n,r){let{gutter:s}=this,i=(n.top-this.height)/e.scaleY,a=n.height/e.scaleY;if(this.i==s.elements.length){let l=new Nq(e,a,i,r);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(e,a,i,r);this.height=n.bottom,this.i++}line(e,n,r){let s=[];Gk(this.cursor,s,n.from),r.length&&(s=s.concat(r));let i=this.gutter.config.lineMarker(e,n,s);i&&s.unshift(i);let a=this.gutter;s.length==0&&!a.config.renderEmptyElements||this.addElement(e,n,s)}widget(e,n){let r=this.gutter.config.widgetMarker(e,n.widget,n),s=r?[r]:null;for(let i of e.state.facet(Xle)){let a=i(e,n.widget,n);a&&(s||(s=[])).push(a)}s&&this.addElement(e,n,s)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let n=e.elements.pop();e.dom.removeChild(n.dom),n.destroy()}}}class n_{constructor(e,n){this.view=e,this.config=n,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let r in n.domEventHandlers)this.dom.addEventListener(r,s=>{let i=s.target,a;if(i!=this.dom&&this.dom.contains(i)){for(;i.parentNode!=this.dom;)i=i.parentNode;let c=i.getBoundingClientRect();a=(c.top+c.bottom)/2}else a=s.clientY;let l=e.lineBlockAtHeight(a-e.documentTop);n.domEventHandlers[r](e,l,s)&&s.preventDefault()});this.markers=t_(n.markers(e)),n.initialSpacer&&(this.spacer=new Nq(e,0,0,[n.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let n=this.markers;if(this.markers=t_(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],e);s!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[s])}let r=e.view.viewport;return!Rn.eq(this.markers,n,r.from,r.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}}class Nq{constructor(e,n,r,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,n,r,s)}update(e,n,r,s){this.height!=n&&(this.height=n,this.dom.style.height=n+"px"),this.above!=r&&(this.dom.style.marginTop=(this.above=r)?r+"px":""),ece(this.markers,s)||this.setMarkers(e,s)}setMarkers(e,n){let r="cm-gutterElement",s=this.dom.firstChild;for(let i=0,a=0;;){let l=a,c=ii(l,c,d)||a(l,c,d):a}return r}})}});class I4 extends $l{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}}function L4(t,e){return t.state.facet(Ch).formatNumber(e,t.state)}const rce=S0.compute([Ch],t=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(tce)},lineMarker(e,n,r){return r.some(s=>s.toDOM)?null:new I4(L4(e,e.state.doc.lineAt(n.from).number))},widgetMarker:(e,n,r)=>{for(let s of e.state.facet(nce)){let i=s(e,n,r);if(i)return i}return null},lineMarkerChange:e=>e.startState.facet(Ch)!=e.state.facet(Ch),initialSpacer(e){return new I4(L4(e,r_(e.state.doc.lines)))},updateSpacer(e,n){let r=L4(n.view,r_(n.view.state.doc.lines));return r==e.number?e:new I4(r)},domEventHandlers:t.facet(Ch).domEventHandlers,side:"before"}));function sce(t={}){return[Ch.of(t),jq(),rce]}function r_(t){let e=9;for(;e{let e=[],n=-1;for(let r of t.selection.ranges){let s=t.doc.lineAt(r.head).from;s>n&&(n=s,e.push(ice.range(s)))}return Rn.of(e)});function oce(){return ace}const Cq=1024;let lce=0;class B4{constructor(e,n){this.from=e,this.to=n}}class sn{constructor(e={}){this.id=lce++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=e.combine||null}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=ri.match(e)),n=>{let r=e(n);return r===void 0?null:[this,r]}}}sn.closedBy=new sn({deserialize:t=>t.split(" ")});sn.openedBy=new sn({deserialize:t=>t.split(" ")});sn.group=new sn({deserialize:t=>t.split(" ")});sn.isolate=new sn({deserialize:t=>{if(t&&t!="rtl"&&t!="ltr"&&t!="auto")throw new RangeError("Invalid value for isolate: "+t);return t||"auto"}});sn.contextHash=new sn({perNode:!0});sn.lookAhead=new sn({perNode:!0});sn.mounted=new sn({perNode:!0});class Vv{constructor(e,n,r){this.tree=e,this.overlay=n,this.parser=r}static get(e){return e&&e.props&&e.props[sn.mounted.id]}}const cce=Object.create(null);class ri{constructor(e,n,r,s=0){this.name=e,this.props=n,this.id=r,this.flags=s}static define(e){let n=e.props&&e.props.length?Object.create(null):cce,r=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),s=new ri(e.name||"",n,e.id,r);if(e.props){for(let i of e.props)if(Array.isArray(i)||(i=i(s)),i){if(i[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");n[i[0].id]=i[1]}}return s}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let n=this.prop(sn.group);return n?n.indexOf(e)>-1:!1}return this.id==e}static match(e){let n=Object.create(null);for(let r in e)for(let s of r.split(" "))n[s]=e[r];return r=>{for(let s=r.prop(sn.group),i=-1;i<(s?s.length:0);i++){let a=n[i<0?r.name:s[i]];if(a)return a}}}}ri.none=new ri("",Object.create(null),0,8);class ab{constructor(e){this.types=e;for(let n=0;n0;for(let c=this.cursor(a|ds.IncludeAnonymous);;){let d=!1;if(c.from<=i&&c.to>=s&&(!l&&c.type.isAnonymous||n(c)!==!1)){if(c.firstChild())continue;d=!0}for(;d&&r&&(l||!c.type.isAnonymous)&&r(c),!c.nextSibling();){if(!c.parent())return;d=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let n in this.props)e.push([+n,this.props[n]]);return e}balance(e={}){return this.children.length<=8?this:d6(ri.none,this.children,this.positions,0,this.children.length,0,this.length,(n,r,s)=>new ar(this.type,n,r,s,this.propValues),e.makeTree||((n,r,s)=>new ar(ri.none,n,r,s)))}static build(e){return fce(e)}}ar.empty=new ar(ri.none,[],[],0);class c6{constructor(e,n){this.buffer=e,this.index=n}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new c6(this.buffer,this.index)}}class Yc{constructor(e,n,r){this.buffer=e,this.length=n,this.set=r}get type(){return ri.none}toString(){let e=[];for(let n=0;n0));c=a[c+3]);return l}slice(e,n,r){let s=this.buffer,i=new Uint16Array(n-e),a=0;for(let l=e,c=0;l=e&&ne;case 1:return n<=e&&r>e;case 2:return r>e;case 4:return!0}}function Q0(t,e,n,r){for(var s;t.from==t.to||(n<1?t.from>=e:t.from>e)||(n>-1?t.to<=e:t.to0?l.length:-1;e!=d;e+=n){let h=l[e],m=c[e]+a.from;if(Tq(s,r,m,m+h.length)){if(h instanceof Yc){if(i&ds.ExcludeBuffers)continue;let g=h.findChild(0,h.buffer.length,n,r-m,s);if(g>-1)return new jo(new uce(a,h,e,m),null,g)}else if(i&ds.IncludeAnonymous||!h.type.isAnonymous||u6(h)){let g;if(!(i&ds.IgnoreMounts)&&(g=Vv.get(h))&&!g.overlay)return new ki(g.tree,m,e,a);let x=new ki(h,m,e,a);return i&ds.IncludeAnonymous||!x.type.isAnonymous?x:x.nextChild(n<0?h.children.length-1:0,n,r,s)}}}if(i&ds.IncludeAnonymous||!a.type.isAnonymous||(a.index>=0?e=a.index+n:e=n<0?-1:a._parent._tree.children.length,a=a._parent,!a))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}enter(e,n,r=0){let s;if(!(r&ds.IgnoreOverlays)&&(s=Vv.get(this._tree))&&s.overlay){let i=e-this.from;for(let{from:a,to:l}of s.overlay)if((n>0?a<=i:a=i:l>i))return new ki(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,n,r)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function i_(t,e,n,r){let s=t.cursor(),i=[];if(!s.firstChild())return i;if(n!=null){for(let a=!1;!a;)if(a=s.type.is(n),!s.nextSibling())return i}for(;;){if(r!=null&&s.type.is(r))return i;if(s.type.is(e)&&i.push(s.node),!s.nextSibling())return r==null?i:[]}}function Xk(t,e,n=e.length-1){for(let r=t;n>=0;r=r.parent){if(!r)return!1;if(!r.type.isAnonymous){if(e[n]&&e[n]!=r.name)return!1;n--}}return!0}class uce{constructor(e,n,r,s){this.parent=e,this.buffer=n,this.index=r,this.start=s}}class jo extends Eq{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,n,r){super(),this.context=e,this._parent=n,this.index=r,this.type=e.buffer.set.types[e.buffer.buffer[r]]}child(e,n,r){let{buffer:s}=this.context,i=s.findChild(this.index+4,s.buffer[this.index+3],e,n-this.context.start,r);return i<0?null:new jo(this.context,this,i)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,n,r=0){if(r&ds.ExcludeBuffers)return null;let{buffer:s}=this.context,i=s.findChild(this.index+4,s.buffer[this.index+3],n>0?1:-1,e-this.context.start,n);return i<0?null:new jo(this.context,this,i)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,n=e.buffer[this.index+3];return n<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new jo(this.context,this._parent,n):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,n=this._parent?this._parent.index+4:0;return this.index==n?this.externalSibling(-1):new jo(this.context,this._parent,e.findChild(n,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],n=[],{buffer:r}=this.context,s=this.index+4,i=r.buffer[this.index+3];if(i>s){let a=r.buffer[this.index+1];e.push(r.slice(s,i,a)),n.push(0)}return new ar(this.type,e,n,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function _q(t){if(!t.length)return null;let e=0,n=t[0];for(let i=1;in.from||a.to=e){let l=new ki(a.tree,a.overlay[0].from+i.from,-1,i);(s||(s=[r])).push(Q0(l,e,n,!1))}}return s?_q(s):r}class Yk{get name(){return this.type.name}constructor(e,n=0){if(this.mode=n,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,e instanceof ki)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let r=e._parent;r;r=r._parent)this.stack.unshift(r.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,n){this.index=e;let{start:r,buffer:s}=this.buffer;return this.type=n||s.set.types[s.buffer[e]],this.from=r+s.buffer[e+1],this.to=r+s.buffer[e+2],!0}yield(e){return e?e instanceof ki?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,n,r){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,n,r,this.mode));let{buffer:s}=this.buffer,i=s.findChild(this.index+4,s.buffer[this.index+3],e,n-this.buffer.start,r);return i<0?!1:(this.stack.push(this.index),this.yieldBuf(i))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,n,r=this.mode){return this.buffer?r&ds.ExcludeBuffers?!1:this.enterChild(1,e,n):this.yield(this._tree.enter(e,n,r))}parent(){if(!this.buffer)return this.yieldNode(this.mode&ds.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&ds.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:n}=this.buffer,r=this.stack.length-1;if(e<0){let s=r<0?0:this.stack[r]+4;if(this.index!=s)return this.yieldBuf(n.findChild(s,this.index,-1,0,4))}else{let s=n.buffer[this.index+3];if(s<(r<0?n.buffer.length:n.buffer[this.stack[r]+3]))return this.yieldBuf(s)}return r<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let n,r,{buffer:s}=this;if(s){if(e>0){if(this.index-1)for(let i=n+e,a=e<0?-1:r._tree.children.length;i!=a;i+=e){let l=r._tree.children[i];if(this.mode&ds.IncludeAnonymous||l instanceof Yc||!l.type.isAnonymous||u6(l))return!1}return!0}move(e,n){if(n&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,n=0){for(;(this.from==this.to||(n<1?this.from>=e:this.from>e)||(n>-1?this.to<=e:this.to=0;){for(let a=e;a;a=a._parent)if(a.index==s){if(s==this.index)return a;n=a,r=i+1;break e}s=this.stack[--i]}for(let s=r;s=0;i--){if(i<0)return Xk(this._tree,e,s);let a=r[n.buffer[this.stack[i]]];if(!a.isAnonymous){if(e[s]&&e[s]!=a.name)return!1;s--}}return!0}}function u6(t){return t.children.some(e=>e instanceof Yc||!e.type.isAnonymous||u6(e))}function fce(t){var e;let{buffer:n,nodeSet:r,maxBufferLength:s=Cq,reused:i=[],minRepeatType:a=r.types.length}=t,l=Array.isArray(n)?new c6(n,n.length):n,c=r.types,d=0,h=0;function m(E,_,M,I,P,L){let{id:H,start:U,end:ee,size:z}=l,Q=h,B=d;if(z<0)if(l.next(),z==-1){let ie=i[H];M.push(ie),I.push(U-E);return}else if(z==-3){d=H;return}else if(z==-4){h=H;return}else throw new RangeError(`Unrecognized record size: ${z}`);let X=c[H],J,G,R=U-E;if(ee-U<=s&&(G=S(l.pos-_,P))){let ie=new Uint16Array(G.size-G.skip),W=l.pos-G.size,q=ie.length;for(;l.pos>W;)q=k(G.start,ie,q);J=new Yc(ie,ee-G.start,r),R=G.start-E}else{let ie=l.pos-z;l.next();let W=[],q=[],V=H>=a?H:-1,te=0,ne=ee;for(;l.pos>ie;)V>=0&&l.id==V&&l.size>=0?(l.end<=ne-s&&(y(W,q,U,te,l.end,ne,V,Q,B),te=W.length,ne=l.end),l.next()):L>2500?g(U,ie,W,q):m(U,ie,W,q,V,L+1);if(V>=0&&te>0&&te-1&&te>0){let K=x(X,B);J=d6(X,W,q,0,W.length,0,ee-U,K,K)}else J=w(X,W,q,ee-U,Q-ee,B)}M.push(J),I.push(R)}function g(E,_,M,I){let P=[],L=0,H=-1;for(;l.pos>_;){let{id:U,start:ee,end:z,size:Q}=l;if(Q>4)l.next();else{if(H>-1&&ee=0;z-=3)U[Q++]=P[z],U[Q++]=P[z+1]-ee,U[Q++]=P[z+2]-ee,U[Q++]=Q;M.push(new Yc(U,P[2]-ee,r)),I.push(ee-E)}}function x(E,_){return(M,I,P)=>{let L=0,H=M.length-1,U,ee;if(H>=0&&(U=M[H])instanceof ar){if(!H&&U.type==E&&U.length==P)return U;(ee=U.prop(sn.lookAhead))&&(L=I[H]+U.length+ee)}return w(E,M,I,P,L,_)}}function y(E,_,M,I,P,L,H,U,ee){let z=[],Q=[];for(;E.length>I;)z.push(E.pop()),Q.push(_.pop()+M-P);E.push(w(r.types[H],z,Q,L-P,U-L,ee)),_.push(P-M)}function w(E,_,M,I,P,L,H){if(L){let U=[sn.contextHash,L];H=H?[U].concat(H):[U]}if(P>25){let U=[sn.lookAhead,P];H=H?[U].concat(H):[U]}return new ar(E,_,M,I,H)}function S(E,_){let M=l.fork(),I=0,P=0,L=0,H=M.end-s,U={size:0,start:0,skip:0};e:for(let ee=M.pos-E;M.pos>ee;){let z=M.size;if(M.id==_&&z>=0){U.size=I,U.start=P,U.skip=L,L+=4,I+=4,M.next();continue}let Q=M.pos-z;if(z<0||Q=a?4:0,X=M.start;for(M.next();M.pos>Q;){if(M.size<0)if(M.size==-3)B+=4;else break e;else M.id>=a&&(B+=4);M.next()}P=X,I+=z,L+=B}return(_<0||I==E)&&(U.size=I,U.start=P,U.skip=L),U.size>4?U:void 0}function k(E,_,M){let{id:I,start:P,end:L,size:H}=l;if(l.next(),H>=0&&I4){let ee=l.pos-(H-4);for(;l.pos>ee;)M=k(E,_,M)}_[--M]=U,_[--M]=L-E,_[--M]=P-E,_[--M]=I}else H==-3?d=I:H==-4&&(h=I);return M}let j=[],N=[];for(;l.pos>0;)m(t.start||0,t.bufferStart||0,j,N,-1,0);let T=(e=t.length)!==null&&e!==void 0?e:j.length?N[0]+j[0].length:0;return new ar(c[t.topID],j.reverse(),N.reverse(),T)}const a_=new WeakMap;function hv(t,e){if(!t.isAnonymous||e instanceof Yc||e.type!=t)return 1;let n=a_.get(e);if(n==null){n=1;for(let r of e.children){if(r.type!=t||!(r instanceof ar)){n=1;break}n+=hv(t,r)}a_.set(e,n)}return n}function d6(t,e,n,r,s,i,a,l,c){let d=0;for(let y=r;y=h)break;_+=M}if(N==T+1){if(_>h){let M=y[T];x(M.children,M.positions,0,M.children.length,w[T]+j);continue}m.push(y[T])}else{let M=w[N-1]+y[N-1].length-E;m.push(d6(t,y,w,T,N,E,M,null,c))}g.push(E+j-i)}}return x(e,n,r,s,0),(l||c)(m,g,a)}class mce{constructor(){this.map=new WeakMap}setBuffer(e,n,r){let s=this.map.get(e);s||this.map.set(e,s=new Map),s.set(n,r)}getBuffer(e,n){let r=this.map.get(e);return r&&r.get(n)}set(e,n){e instanceof jo?this.setBuffer(e.context.buffer,e.index,n):e instanceof ki&&this.map.set(e.tree,n)}get(e){return e instanceof jo?this.getBuffer(e.context.buffer,e.index):e instanceof ki?this.map.get(e.tree):void 0}cursorSet(e,n){e.buffer?this.setBuffer(e.buffer.buffer,e.index,n):this.map.set(e.tree,n)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}}class Ju{constructor(e,n,r,s,i=!1,a=!1){this.from=e,this.to=n,this.tree=r,this.offset=s,this.open=(i?1:0)|(a?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,n=[],r=!1){let s=[new Ju(0,e.length,e,0,!1,r)];for(let i of n)i.to>e.length&&s.push(i);return s}static applyChanges(e,n,r=128){if(!n.length)return e;let s=[],i=1,a=e.length?e[0]:null;for(let l=0,c=0,d=0;;l++){let h=l=r)for(;a&&a.from=g.from||m<=g.to||d){let x=Math.max(g.from,c)-d,y=Math.min(g.to,m)-d;g=x>=y?null:new Ju(x,y,g.tree,g.offset+d,l>0,!!h)}if(g&&s.push(g),a.to>m)break;a=inew B4(s.from,s.to)):[new B4(0,0)]:[new B4(0,e.length)],this.createParse(e,n||[],r)}parse(e,n,r){let s=this.startParse(e,n,r);for(;;){let i=s.advance();if(i)return i}}};class pce{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,n){return this.string.slice(e,n)}}new sn({perNode:!0});let gce=0;class ha{constructor(e,n,r,s){this.name=e,this.set=n,this.base=r,this.modified=s,this.id=gce++}toString(){let{name:e}=this;for(let n of this.modified)n.name&&(e=`${n.name}(${e})`);return e}static define(e,n){let r=typeof e=="string"?e:"?";if(e instanceof ha&&(n=e),n?.base)throw new Error("Can not derive from a modified tag");let s=new ha(r,[],null,[]);if(s.set.push(s),n)for(let i of n.set)s.set.push(i);return s}static defineModifier(e){let n=new Uv(e);return r=>r.modified.indexOf(n)>-1?r:Uv.get(r.base||r,r.modified.concat(n).sort((s,i)=>s.id-i.id))}}let xce=0;class Uv{constructor(e){this.name=e,this.instances=[],this.id=xce++}static get(e,n){if(!n.length)return e;let r=n[0].instances.find(l=>l.base==e&&vce(n,l.modified));if(r)return r;let s=[],i=new ha(e.name,s,e,n);for(let l of n)l.instances.push(i);let a=yce(n);for(let l of e.set)if(!l.modified.length)for(let c of a)s.push(Uv.get(l,c));return i}}function vce(t,e){return t.length==e.length&&t.every((n,r)=>n==e[r])}function yce(t){let e=[[]];for(let n=0;nr.length-n.length)}function f6(t){let e=Object.create(null);for(let n in t){let r=t[n];Array.isArray(r)||(r=[r]);for(let s of n.split(" "))if(s){let i=[],a=2,l=s;for(let m=0;;){if(l=="..."&&m>0&&m+3==s.length){a=1;break}let g=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!g)throw new RangeError("Invalid path: "+s);if(i.push(g[0]=="*"?"":g[0][0]=='"'?JSON.parse(g[0]):g[0]),m+=g[0].length,m==s.length)break;let x=s[m++];if(m==s.length&&x=="!"){a=0;break}if(x!="/")throw new RangeError("Invalid path: "+s);l=s.slice(m)}let c=i.length-1,d=i[c];if(!d)throw new RangeError("Invalid path: "+s);let h=new V0(r,a,c>0?i.slice(0,c):null);e[d]=h.sort(e[d])}}return Mq.add(e)}const Mq=new sn({combine(t,e){let n,r,s;for(;t||e;){if(!t||e&&t.depth>=e.depth?(s=e,e=e.next):(s=t,t=t.next),n&&n.mode==s.mode&&!s.context&&!n.context)continue;let i=new V0(s.tags,s.mode,s.context);n?n.next=i:r=i,n=i}return r}});class V0{constructor(e,n,r,s){this.tags=e,this.mode=n,this.context=r,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth{let a=s;for(let l of i)for(let c of l.set){let d=n[c.id];if(d){a=a?a+" "+d:d;break}}return a},scope:r}}function bce(t,e){let n=null;for(let r of t){let s=r.style(e);s&&(n=n?n+" "+s:s)}return n}function wce(t,e,n,r=0,s=t.length){let i=new Sce(r,Array.isArray(e)?e:[e],n);i.highlightRange(t.cursor(),r,s,"",i.highlighters),i.flush(s)}class Sce{constructor(e,n,r){this.at=e,this.highlighters=n,this.span=r,this.class=""}startSpan(e,n){n!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=n)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,n,r,s,i){let{type:a,from:l,to:c}=e;if(l>=r||c<=n)return;a.isTop&&(i=this.highlighters.filter(x=>!x.scope||x.scope(a)));let d=s,h=kce(e)||V0.empty,m=bce(i,h.tags);if(m&&(d&&(d+=" "),d+=m,h.mode==1&&(s+=(s?" ":"")+m)),this.startSpan(Math.max(n,l),d),h.opaque)return;let g=e.tree&&e.tree.prop(sn.mounted);if(g&&g.overlay){let x=e.node.enter(g.overlay[0].from+l,1),y=this.highlighters.filter(S=>!S.scope||S.scope(g.tree.type)),w=e.firstChild();for(let S=0,k=l;;S++){let j=S=N||!e.nextSibling())););if(!j||N>r)break;k=j.to+l,k>n&&(this.highlightRange(x.cursor(),Math.max(n,j.from+l),Math.min(r,k),"",y),this.startSpan(Math.min(r,k),d))}w&&e.parent()}else if(e.firstChild()){g&&(s="");do if(!(e.to<=n)){if(e.from>=r)break;this.highlightRange(e,n,r,s,i),this.startSpan(Math.min(r,e.to),d)}while(e.nextSibling());e.parent()}}}function kce(t){let e=t.type.prop(Mq);for(;e&&e.context&&!t.matchContext(e.context);)e=e.next;return e||null}const Ke=ha.define,h1=Ke(),Mc=Ke(),o_=Ke(Mc),l_=Ke(Mc),Ac=Ke(),f1=Ke(Ac),F4=Ke(Ac),po=Ke(),Ru=Ke(po),fo=Ke(),mo=Ke(),Kk=Ke(),Bm=Ke(Kk),m1=Ke(),xe={comment:h1,lineComment:Ke(h1),blockComment:Ke(h1),docComment:Ke(h1),name:Mc,variableName:Ke(Mc),typeName:o_,tagName:Ke(o_),propertyName:l_,attributeName:Ke(l_),className:Ke(Mc),labelName:Ke(Mc),namespace:Ke(Mc),macroName:Ke(Mc),literal:Ac,string:f1,docString:Ke(f1),character:Ke(f1),attributeValue:Ke(f1),number:F4,integer:Ke(F4),float:Ke(F4),bool:Ke(Ac),regexp:Ke(Ac),escape:Ke(Ac),color:Ke(Ac),url:Ke(Ac),keyword:fo,self:Ke(fo),null:Ke(fo),atom:Ke(fo),unit:Ke(fo),modifier:Ke(fo),operatorKeyword:Ke(fo),controlKeyword:Ke(fo),definitionKeyword:Ke(fo),moduleKeyword:Ke(fo),operator:mo,derefOperator:Ke(mo),arithmeticOperator:Ke(mo),logicOperator:Ke(mo),bitwiseOperator:Ke(mo),compareOperator:Ke(mo),updateOperator:Ke(mo),definitionOperator:Ke(mo),typeOperator:Ke(mo),controlOperator:Ke(mo),punctuation:Kk,separator:Ke(Kk),bracket:Bm,angleBracket:Ke(Bm),squareBracket:Ke(Bm),paren:Ke(Bm),brace:Ke(Bm),content:po,heading:Ru,heading1:Ke(Ru),heading2:Ke(Ru),heading3:Ke(Ru),heading4:Ke(Ru),heading5:Ke(Ru),heading6:Ke(Ru),contentSeparator:Ke(po),list:Ke(po),quote:Ke(po),emphasis:Ke(po),strong:Ke(po),link:Ke(po),monospace:Ke(po),strikethrough:Ke(po),inserted:Ke(),deleted:Ke(),changed:Ke(),invalid:Ke(),meta:m1,documentMeta:Ke(m1),annotation:Ke(m1),processingInstruction:Ke(m1),definition:ha.defineModifier("definition"),constant:ha.defineModifier("constant"),function:ha.defineModifier("function"),standard:ha.defineModifier("standard"),local:ha.defineModifier("local"),special:ha.defineModifier("special")};for(let t in xe){let e=xe[t];e instanceof ha&&(e.name=t)}Aq([{tag:xe.link,class:"tok-link"},{tag:xe.heading,class:"tok-heading"},{tag:xe.emphasis,class:"tok-emphasis"},{tag:xe.strong,class:"tok-strong"},{tag:xe.keyword,class:"tok-keyword"},{tag:xe.atom,class:"tok-atom"},{tag:xe.bool,class:"tok-bool"},{tag:xe.url,class:"tok-url"},{tag:xe.labelName,class:"tok-labelName"},{tag:xe.inserted,class:"tok-inserted"},{tag:xe.deleted,class:"tok-deleted"},{tag:xe.literal,class:"tok-literal"},{tag:xe.string,class:"tok-string"},{tag:xe.number,class:"tok-number"},{tag:[xe.regexp,xe.escape,xe.special(xe.string)],class:"tok-string2"},{tag:xe.variableName,class:"tok-variableName"},{tag:xe.local(xe.variableName),class:"tok-variableName tok-local"},{tag:xe.definition(xe.variableName),class:"tok-variableName tok-definition"},{tag:xe.special(xe.variableName),class:"tok-variableName2"},{tag:xe.definition(xe.propertyName),class:"tok-propertyName tok-definition"},{tag:xe.typeName,class:"tok-typeName"},{tag:xe.namespace,class:"tok-namespace"},{tag:xe.className,class:"tok-className"},{tag:xe.macroName,class:"tok-macroName"},{tag:xe.propertyName,class:"tok-propertyName"},{tag:xe.operator,class:"tok-operator"},{tag:xe.comment,class:"tok-comment"},{tag:xe.meta,class:"tok-meta"},{tag:xe.invalid,class:"tok-invalid"},{tag:xe.punctuation,class:"tok-punctuation"}]);var q4;const Qu=new sn;function Rq(t){return at.define({combine:t?e=>e.concat(t):void 0})}const Oce=new sn;class va{constructor(e,n,r=[],s=""){this.data=e,this.name=s,bn.prototype.hasOwnProperty("tree")||Object.defineProperty(bn.prototype,"tree",{get(){return ws(this)}}),this.parser=n,this.extension=[Kc.of(this),bn.languageData.of((i,a,l)=>{let c=c_(i,a,l),d=c.type.prop(Qu);if(!d)return[];let h=i.facet(d),m=c.type.prop(Oce);if(m){let g=c.resolve(a-c.from,l);for(let x of m)if(x.test(g,i)){let y=i.facet(x.facet);return x.type=="replace"?y:y.concat(h)}}return h})].concat(r)}isActiveAt(e,n,r=-1){return c_(e,n,r).type.prop(Qu)==this.data}findRegions(e){let n=e.facet(Kc);if(n?.data==this.data)return[{from:0,to:e.doc.length}];if(!n||!n.allowsNesting)return[];let r=[],s=(i,a)=>{if(i.prop(Qu)==this.data){r.push({from:a,to:a+i.length});return}let l=i.prop(sn.mounted);if(l){if(l.tree.prop(Qu)==this.data){if(l.overlay)for(let c of l.overlay)r.push({from:c.from+a,to:c.to+a});else r.push({from:a,to:a+i.length});return}else if(l.overlay){let c=r.length;if(s(l.tree,l.overlay[0].from+a),r.length>c)return}}for(let c=0;cr.isTop?n:void 0)]}),e.name)}configure(e,n){return new U0(this.data,this.parser.configure(e),n||this.name)}get allowsNesting(){return this.parser.hasWrappers()}}function ws(t){let e=t.field(va.state,!1);return e?e.tree:ar.empty}class jce{constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,n){let r=this.cursorPos-this.string.length;return e=this.cursorPos?this.doc.sliceString(e,n):this.string.slice(e-r,n-r)}}let Fm=null;class tf{constructor(e,n,r=[],s,i,a,l,c){this.parser=e,this.state=n,this.fragments=r,this.tree=s,this.treeLen=i,this.viewport=a,this.skipped=l,this.scheduleOn=c,this.parse=null,this.tempSkipped=[]}static create(e,n,r){return new tf(e,n,[],ar.empty,0,r,[],null)}startParse(){return this.parser.startParse(new jce(this.state.doc),this.fragments)}work(e,n){return n!=null&&n>=this.state.doc.length&&(n=void 0),this.tree!=ar.empty&&this.isDone(n??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var r;if(typeof e=="number"){let s=Date.now()+e;e=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),n!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>n)&&n=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(n=this.parse.advance()););}),this.treeLen=e,this.tree=n,this.fragments=this.withoutTempSkipped(Ju.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let n=Fm;Fm=this;try{return e()}finally{Fm=n}}withoutTempSkipped(e){for(let n;n=this.tempSkipped.pop();)e=u_(e,n.from,n.to);return e}changes(e,n){let{fragments:r,tree:s,treeLen:i,viewport:a,skipped:l}=this;if(this.takeTree(),!e.empty){let c=[];if(e.iterChangedRanges((d,h,m,g)=>c.push({fromA:d,toA:h,fromB:m,toB:g})),r=Ju.applyChanges(r,c),s=ar.empty,i=0,a={from:e.mapPos(a.from,-1),to:e.mapPos(a.to,1)},this.skipped.length){l=[];for(let d of this.skipped){let h=e.mapPos(d.from,1),m=e.mapPos(d.to,-1);he.from&&(this.fragments=u_(this.fragments,s,i),this.skipped.splice(r--,1))}return this.skipped.length>=n?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,n){this.skipped.push({from:e,to:n})}static getSkippingParser(e){return new class extends h6{createParse(n,r,s){let i=s[0].from,a=s[s.length-1].to;return{parsedPos:i,advance(){let c=Fm;if(c){for(let d of s)c.tempSkipped.push(d);e&&(c.scheduleOn=c.scheduleOn?Promise.all([c.scheduleOn,e]):e)}return this.parsedPos=a,new ar(ri.none,[],[],a-i)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let n=this.fragments;return this.treeLen>=e&&n.length&&n[0].from==0&&n[0].to>=e}static get(){return Fm}}function u_(t,e,n){return Ju.applyChanges(t,[{fromA:e,toA:n,fromB:e,toB:n}])}class nf{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let n=this.context.changes(e.changes,e.state),r=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),n.viewport.to);return n.work(20,r)||n.takeTree(),new nf(n)}static init(e){let n=Math.min(3e3,e.doc.length),r=tf.create(e.facet(Kc).parser,e,{from:0,to:n});return r.work(20,n)||r.takeTree(),new nf(r)}}va.state=Os.define({create:nf.init,update(t,e){for(let n of e.effects)if(n.is(va.setState))return n.value;return e.startState.facet(Kc)!=e.state.facet(Kc)?nf.init(e.state):t.apply(e)}});let Dq=t=>{let e=setTimeout(()=>t(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(Dq=t=>{let e=-1,n=setTimeout(()=>{e=requestIdleCallback(t,{timeout:400})},100);return()=>e<0?clearTimeout(n):cancelIdleCallback(e)});const $4=typeof navigator<"u"&&(!((q4=navigator.scheduling)===null||q4===void 0)&&q4.isInputPending)?()=>navigator.scheduling.isInputPending():null,Nce=Vr.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let n=this.view.state.field(va.state).context;(n.updateViewport(e.view.viewport)||this.view.viewport.to>n.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(n)}scheduleWork(){if(this.working)return;let{state:e}=this.view,n=e.field(va.state);(n.tree!=n.context.tree||!n.context.isDone(e.doc.length))&&(this.working=Dq(this.work))}work(e){this.working=null;let n=Date.now();if(this.chunkEnds+1e3,c=i.context.work(()=>$4&&$4()||Date.now()>a,s+(l?0:1e5));this.chunkBudget-=Date.now()-n,(c||this.chunkBudget<=0)&&(i.context.takeTree(),this.view.dispatch({effects:va.setState.of(new nf(i.context))})),this.chunkBudget>0&&!(c&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(i.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(n=>vi(this.view.state,n)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Kc=at.define({combine(t){return t.length?t[0]:null},enables:t=>[va.state,Nce,Ze.contentAttributes.compute([t],e=>{let n=e.facet(t);return n&&n.name?{"data-language":n.name}:{}})]});class Pq{constructor(e,n=[]){this.language=e,this.support=n,this.extension=[e,n]}}const Cce=at.define(),Vp=at.define({combine:t=>{if(!t.length)return" ";let e=t[0];if(!e||/\S/.test(e)||Array.from(e).some(n=>n!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(t[0]));return e}});function ld(t){let e=t.facet(Vp);return e.charCodeAt(0)==9?t.tabSize*e.length:e.length}function W0(t,e){let n="",r=t.tabSize,s=t.facet(Vp)[0];if(s==" "){for(;e>=r;)n+=" ",e-=r;s=" "}for(let i=0;i=e?Tce(t,n,e):null}class ob{constructor(e,n={}){this.state=e,this.options=n,this.unit=ld(e)}lineAt(e,n=1){let r=this.state.doc.lineAt(e),{simulateBreak:s,simulateDoubleBreak:i}=this.options;return s!=null&&s>=r.from&&s<=r.to?i&&s==e?{text:"",from:e}:(n<0?s-1&&(i+=a-this.countColumn(r,r.search(/\S|$/))),i}countColumn(e,n=e.length){return Of(e,this.state.tabSize,n)}lineIndent(e,n=1){let{text:r,from:s}=this.lineAt(e,n),i=this.options.overrideIndentation;if(i){let a=i(s);if(a>-1)return a}return this.countColumn(r,r.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const lb=new sn;function Tce(t,e,n){let r=e.resolveStack(n),s=e.resolveInner(n,-1).resolve(n,0).enterUnfinishedNodesBefore(n);if(s!=r.node){let i=[];for(let a=s;a&&!(a.fromr.node.to||a.from==r.node.from&&a.type==r.node.type);a=a.parent)i.push(a);for(let a=i.length-1;a>=0;a--)r={node:i[a],next:r}}return zq(r,t,n)}function zq(t,e,n){for(let r=t;r;r=r.next){let s=_ce(r.node);if(s)return s(p6.create(e,n,r))}return 0}function Ece(t){return t.pos==t.options.simulateBreak&&t.options.simulateDoubleBreak}function _ce(t){let e=t.type.prop(lb);if(e)return e;let n=t.firstChild,r;if(n&&(r=n.type.prop(sn.closedBy))){let s=t.lastChild,i=s&&r.indexOf(s.name)>-1;return a=>Iq(a,!0,1,void 0,i&&!Ece(a)?s.from:void 0)}return t.parent==null?Mce:null}function Mce(){return 0}class p6 extends ob{constructor(e,n,r){super(e.state,e.options),this.base=e,this.pos=n,this.context=r}get node(){return this.context.node}static create(e,n,r){return new p6(e,n,r)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let n=this.state.doc.lineAt(e.from);for(;;){let r=e.resolve(n.from);for(;r.parent&&r.parent.from==r.from;)r=r.parent;if(Ace(r,e))break;n=this.state.doc.lineAt(r.from)}return this.lineIndent(n.from)}continue(){return zq(this.context.next,this.base,this.pos)}}function Ace(t,e){for(let n=e;n;n=n.parent)if(t==n)return!0;return!1}function Rce(t){let e=t.node,n=e.childAfter(e.from),r=e.lastChild;if(!n)return null;let s=t.options.simulateBreak,i=t.state.doc.lineAt(n.from),a=s==null||s<=i.from?i.to:Math.min(i.to,s);for(let l=n.to;;){let c=e.childAfter(l);if(!c||c==r)return null;if(!c.type.isSkipped){if(c.from>=a)return null;let d=/^ */.exec(i.text.slice(n.to-i.from))[0].length;return{from:n.from,to:n.to+d}}l=c.to}}function H4({closing:t,align:e=!0,units:n=1}){return r=>Iq(r,e,n,t)}function Iq(t,e,n,r,s){let i=t.textAfter,a=i.match(/^\s*/)[0].length,l=r&&i.slice(a,a+r.length)==r||s==t.pos+a,c=e?Rce(t):null;return c?l?t.column(c.from):t.column(c.to):t.baseIndent+(l?0:t.unit*n)}function d_({except:t,units:e=1}={}){return n=>{let r=t&&t.test(n.textAfter);return n.baseIndent+(r?0:e*n.unit)}}const Dce=200;function Pce(){return bn.transactionFilter.of(t=>{if(!t.docChanged||!t.isUserEvent("input.type")&&!t.isUserEvent("input.complete"))return t;let e=t.startState.languageDataAt("indentOnInput",t.startState.selection.main.head);if(!e.length)return t;let n=t.newDoc,{head:r}=t.newSelection.main,s=n.lineAt(r);if(r>s.from+Dce)return t;let i=n.sliceString(s.from,r);if(!e.some(d=>d.test(i)))return t;let{state:a}=t,l=-1,c=[];for(let{head:d}of a.selection.ranges){let h=a.doc.lineAt(d);if(h.from==l)continue;l=h.from;let m=m6(a,h.from);if(m==null)continue;let g=/^\s*/.exec(h.text)[0],x=W0(a,m);g!=x&&c.push({from:h.from,to:h.from+g.length,insert:x})}return c.length?[t,{changes:c,sequential:!0}]:t})}const zce=at.define(),g6=new sn;function Lq(t){let e=t.firstChild,n=t.lastChild;return e&&e.ton)continue;if(i&&l.from=e&&d.to>n&&(i=d)}}return i}function Lce(t){let e=t.lastChild;return e&&e.to==t.to&&e.type.isError}function Wv(t,e,n){for(let r of t.facet(zce)){let s=r(t,e,n);if(s)return s}return Ice(t,e,n)}function Bq(t,e){let n=e.mapPos(t.from,1),r=e.mapPos(t.to,-1);return n>=r?void 0:{from:n,to:r}}const cb=Ft.define({map:Bq}),Up=Ft.define({map:Bq});function Fq(t){let e=[];for(let{head:n}of t.state.selection.ranges)e.some(r=>r.from<=n&&r.to>=n)||e.push(t.lineBlockAt(n));return e}const cd=Os.define({create(){return kt.none},update(t,e){e.isUserEvent("delete")&&e.changes.iterChangedRanges((n,r)=>t=h_(t,n,r)),t=t.map(e.changes);for(let n of e.effects)if(n.is(cb)&&!Bce(t,n.value.from,n.value.to)){let{preparePlaceholder:r}=e.state.facet(Hq),s=r?kt.replace({widget:new Uce(r(e.state,n.value))}):f_;t=t.update({add:[s.range(n.value.from,n.value.to)]})}else n.is(Up)&&(t=t.update({filter:(r,s)=>n.value.from!=r||n.value.to!=s,filterFrom:n.value.from,filterTo:n.value.to}));return e.selection&&(t=h_(t,e.selection.main.head)),t},provide:t=>Ze.decorations.from(t),toJSON(t,e){let n=[];return t.between(0,e.doc.length,(r,s)=>{n.push(r,s)}),n},fromJSON(t){if(!Array.isArray(t)||t.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let n=0;n{se&&(r=!0)}),r?t.update({filterFrom:e,filterTo:n,filter:(s,i)=>s>=n||i<=e}):t}function Gv(t,e,n){var r;let s=null;return(r=t.field(cd,!1))===null||r===void 0||r.between(e,n,(i,a)=>{(!s||s.from>i)&&(s={from:i,to:a})}),s}function Bce(t,e,n){let r=!1;return t.between(e,e,(s,i)=>{s==e&&i==n&&(r=!0)}),r}function qq(t,e){return t.field(cd,!1)?e:e.concat(Ft.appendConfig.of(Qq()))}const Fce=t=>{for(let e of Fq(t)){let n=Wv(t.state,e.from,e.to);if(n)return t.dispatch({effects:qq(t.state,[cb.of(n),$q(t,n)])}),!0}return!1},qce=t=>{if(!t.state.field(cd,!1))return!1;let e=[];for(let n of Fq(t)){let r=Gv(t.state,n.from,n.to);r&&e.push(Up.of(r),$q(t,r,!1))}return e.length&&t.dispatch({effects:e}),e.length>0};function $q(t,e,n=!0){let r=t.state.doc.lineAt(e.from).number,s=t.state.doc.lineAt(e.to).number;return Ze.announce.of(`${t.state.phrase(n?"Folded lines":"Unfolded lines")} ${r} ${t.state.phrase("to")} ${s}.`)}const $ce=t=>{let{state:e}=t,n=[];for(let r=0;r{let e=t.state.field(cd,!1);if(!e||!e.size)return!1;let n=[];return e.between(0,t.state.doc.length,(r,s)=>{n.push(Up.of({from:r,to:s}))}),t.dispatch({effects:n}),!0},Qce=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:Fce},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:qce},{key:"Ctrl-Alt-[",run:$ce},{key:"Ctrl-Alt-]",run:Hce}],Vce={placeholderDOM:null,preparePlaceholder:null,placeholderText:"…"},Hq=at.define({combine(t){return qo(t,Vce)}});function Qq(t){return[cd,Xce]}function Vq(t,e){let{state:n}=t,r=n.facet(Hq),s=a=>{let l=t.lineBlockAt(t.posAtDOM(a.target)),c=Gv(t.state,l.from,l.to);c&&t.dispatch({effects:Up.of(c)}),a.preventDefault()};if(r.placeholderDOM)return r.placeholderDOM(t,s,e);let i=document.createElement("span");return i.textContent=r.placeholderText,i.setAttribute("aria-label",n.phrase("folded code")),i.title=n.phrase("unfold"),i.className="cm-foldPlaceholder",i.onclick=s,i}const f_=kt.replace({widget:new class extends $o{toDOM(t){return Vq(t,null)}}});class Uce extends $o{constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return Vq(e,this.value)}}const Wce={openText:"⌄",closedText:"›",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1};class Q4 extends $l{constructor(e,n){super(),this.config=e,this.open=n}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let n=document.createElement("span");return n.textContent=this.open?this.config.openText:this.config.closedText,n.title=e.state.phrase(this.open?"Fold line":"Unfold line"),n}}function Gce(t={}){let e={...Wce,...t},n=new Q4(e,!0),r=new Q4(e,!1),s=Vr.fromClass(class{constructor(a){this.from=a.viewport.from,this.markers=this.buildMarkers(a)}update(a){(a.docChanged||a.viewportChanged||a.startState.facet(Kc)!=a.state.facet(Kc)||a.startState.field(cd,!1)!=a.state.field(cd,!1)||ws(a.startState)!=ws(a.state)||e.foldingChanged(a))&&(this.markers=this.buildMarkers(a.view))}buildMarkers(a){let l=new Fl;for(let c of a.viewportLineBlocks){let d=Gv(a.state,c.from,c.to)?r:Wv(a.state,c.from,c.to)?n:null;d&&l.add(c.from,c.from,d)}return l.finish()}}),{domEventHandlers:i}=e;return[s,Kle({class:"cm-foldGutter",markers(a){var l;return((l=a.plugin(s))===null||l===void 0?void 0:l.markers)||Rn.empty},initialSpacer(){return new Q4(e,!1)},domEventHandlers:{...i,click:(a,l,c)=>{if(i.click&&i.click(a,l,c))return!0;let d=Gv(a.state,l.from,l.to);if(d)return a.dispatch({effects:Up.of(d)}),!0;let h=Wv(a.state,l.from,l.to);return h?(a.dispatch({effects:cb.of(h)}),!0):!1}}}),Qq()]}const Xce=Ze.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}});class Wp{constructor(e,n){this.specs=e;let r;function s(l){let c=Wc.newName();return(r||(r=Object.create(null)))["."+c]=l,c}const i=typeof n.all=="string"?n.all:n.all?s(n.all):void 0,a=n.scope;this.scope=a instanceof va?l=>l.prop(Qu)==a.data:a?l=>l==a:void 0,this.style=Aq(e.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:i}).style,this.module=r?new Wc(r):null,this.themeType=n.themeType}static define(e,n){return new Wp(e,n||{})}}const Zk=at.define(),Uq=at.define({combine(t){return t.length?[t[0]]:null}});function V4(t){let e=t.facet(Zk);return e.length?e:t.facet(Uq)}function Wq(t,e){let n=[Kce],r;return t instanceof Wp&&(t.module&&n.push(Ze.styleModule.of(t.module)),r=t.themeType),e?.fallback?n.push(Uq.of(t)):r?n.push(Zk.computeN([Ze.darkTheme],s=>s.facet(Ze.darkTheme)==(r=="dark")?[t]:[])):n.push(Zk.of(t)),n}class Yce{constructor(e){this.markCache=Object.create(null),this.tree=ws(e.state),this.decorations=this.buildDeco(e,V4(e.state)),this.decoratedTo=e.viewport.to}update(e){let n=ws(e.state),r=V4(e.state),s=r!=V4(e.startState),{viewport:i}=e.view,a=e.changes.mapPos(this.decoratedTo,1);n.length=i.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=a):(n!=this.tree||e.viewportChanged||s)&&(this.tree=n,this.decorations=this.buildDeco(e.view,r),this.decoratedTo=i.to)}buildDeco(e,n){if(!n||!this.tree.length)return kt.none;let r=new Fl;for(let{from:s,to:i}of e.visibleRanges)wce(this.tree,n,(a,l,c)=>{r.add(a,l,this.markCache[c]||(this.markCache[c]=kt.mark({class:c})))},s,i);return r.finish()}}const Kce=ou.high(Vr.fromClass(Yce,{decorations:t=>t.decorations})),Zce=Wp.define([{tag:xe.meta,color:"#404740"},{tag:xe.link,textDecoration:"underline"},{tag:xe.heading,textDecoration:"underline",fontWeight:"bold"},{tag:xe.emphasis,fontStyle:"italic"},{tag:xe.strong,fontWeight:"bold"},{tag:xe.strikethrough,textDecoration:"line-through"},{tag:xe.keyword,color:"#708"},{tag:[xe.atom,xe.bool,xe.url,xe.contentSeparator,xe.labelName],color:"#219"},{tag:[xe.literal,xe.inserted],color:"#164"},{tag:[xe.string,xe.deleted],color:"#a11"},{tag:[xe.regexp,xe.escape,xe.special(xe.string)],color:"#e40"},{tag:xe.definition(xe.variableName),color:"#00f"},{tag:xe.local(xe.variableName),color:"#30a"},{tag:[xe.typeName,xe.namespace],color:"#085"},{tag:xe.className,color:"#167"},{tag:[xe.special(xe.variableName),xe.macroName],color:"#256"},{tag:xe.definition(xe.propertyName),color:"#00c"},{tag:xe.comment,color:"#940"},{tag:xe.invalid,color:"#f00"}]),Jce=Ze.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),Gq=1e4,Xq="()[]{}",Yq=at.define({combine(t){return qo(t,{afterCursor:!0,brackets:Xq,maxScanDistance:Gq,renderMatch:nue})}}),eue=kt.mark({class:"cm-matchingBracket"}),tue=kt.mark({class:"cm-nonmatchingBracket"});function nue(t){let e=[],n=t.matched?eue:tue;return e.push(n.range(t.start.from,t.start.to)),t.end&&e.push(n.range(t.end.from,t.end.to)),e}const rue=Os.define({create(){return kt.none},update(t,e){if(!e.docChanged&&!e.selection)return t;let n=[],r=e.state.facet(Yq);for(let s of e.state.selection.ranges){if(!s.empty)continue;let i=No(e.state,s.head,-1,r)||s.head>0&&No(e.state,s.head-1,1,r)||r.afterCursor&&(No(e.state,s.head,1,r)||s.headZe.decorations.from(t)}),sue=[rue,Jce];function iue(t={}){return[Yq.of(t),sue]}const aue=new sn;function Jk(t,e,n){let r=t.prop(e<0?sn.openedBy:sn.closedBy);if(r)return r;if(t.name.length==1){let s=n.indexOf(t.name);if(s>-1&&s%2==(e<0?1:0))return[n[s+e]]}return null}function eO(t){let e=t.type.prop(aue);return e?e(t.node):t}function No(t,e,n,r={}){let s=r.maxScanDistance||Gq,i=r.brackets||Xq,a=ws(t),l=a.resolveInner(e,n);for(let c=l;c;c=c.parent){let d=Jk(c.type,n,i);if(d&&c.from0?e>=h.from&&eh.from&&e<=h.to))return oue(t,e,n,c,h,d,i)}}return lue(t,e,n,a,l.type,s,i)}function oue(t,e,n,r,s,i,a){let l=r.parent,c={from:s.from,to:s.to},d=0,h=l?.cursor();if(h&&(n<0?h.childBefore(r.from):h.childAfter(r.to)))do if(n<0?h.to<=r.from:h.from>=r.to){if(d==0&&i.indexOf(h.type.name)>-1&&h.from0)return null;let d={from:n<0?e-1:e,to:n>0?e+1:e},h=t.doc.iterRange(e,n>0?t.doc.length:0),m=0;for(let g=0;!h.next().done&&g<=i;){let x=h.value;n<0&&(g+=x.length);let y=e+g*n;for(let w=n>0?0:x.length-1,S=n>0?x.length:-1;w!=S;w+=n){let k=a.indexOf(x[w]);if(!(k<0||r.resolveInner(y+w,1).type!=s))if(k%2==0==n>0)m++;else{if(m==1)return{start:d,end:{from:y+w,to:y+w+1},matched:k>>1==c>>1};m--}}n>0&&(g+=x.length)}return h.done?{start:d,matched:!1}:null}function m_(t,e,n,r=0,s=0){e==null&&(e=t.search(/[^\s\u00a0]/),e==-1&&(e=t.length));let i=s;for(let a=r;a=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.posn}eatSpace(){let e=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e}skipToEnd(){this.pos=this.string.length}skipTo(e){let n=this.string.indexOf(e,this.pos);if(n>-1)return this.pos=n,!0}backUp(e){this.pos-=e}column(){return this.lastColumnPosr?a.toLowerCase():a,i=this.string.substr(this.pos,e.length);return s(i)==s(e)?(n!==!1&&(this.pos+=e.length),!0):null}else{let s=this.string.slice(this.pos).match(e);return s&&s.index>0?null:(s&&n!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}}function cue(t){return{name:t.name||"",token:t.token,blankLine:t.blankLine||(()=>{}),startState:t.startState||(()=>!0),copyState:t.copyState||uue,indent:t.indent||(()=>null),languageData:t.languageData||{},tokenTable:t.tokenTable||y6,mergeTokens:t.mergeTokens!==!1}}function uue(t){if(typeof t!="object")return t;let e={};for(let n in t){let r=t[n];e[n]=r instanceof Array?r.slice():r}return e}const p_=new WeakMap;class x6 extends va{constructor(e){let n=Rq(e.languageData),r=cue(e),s,i=new class extends h6{createParse(a,l,c){return new hue(s,a,l,c)}};super(n,i,[],e.name),this.topNode=pue(n,this),s=this,this.streamParser=r,this.stateAfter=new sn({perNode:!0}),this.tokenTable=e.tokenTable?new t$(r.tokenTable):mue}static define(e){return new x6(e)}getIndent(e){let n,{overrideIndentation:r}=e.options;r&&(n=p_.get(e.state),n!=null&&n1e4)return null;for(;i=r&&n+e.length<=s&&e.prop(t.stateAfter);if(i)return{state:t.streamParser.copyState(i),pos:n+e.length};for(let a=e.children.length-1;a>=0;a--){let l=e.children[a],c=n+e.positions[a],d=l instanceof ar&&c=e.length)return e;!s&&n==0&&e.type==t.topNode&&(s=!0);for(let i=e.children.length-1;i>=0;i--){let a=e.positions[i],l=e.children[i],c;if(an&&v6(t,i.tree,0-i.offset,n,l),d;if(c&&c.pos<=r&&(d=Zq(t,i.tree,n+i.offset,c.pos+i.offset,!1)))return{state:c.state,tree:d}}return{state:t.streamParser.startState(s?ld(s):4),tree:ar.empty}}let hue=class{constructor(e,n,r,s){this.lang=e,this.input=n,this.fragments=r,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let i=tf.get(),a=s[0].from,{state:l,tree:c}=due(e,r,a,this.to,i?.state);this.state=l,this.parsedPos=this.chunkStart=a+c.length;for(let d=0;dd.from<=i.viewport.from&&d.to>=i.viewport.from)&&(this.state=this.lang.streamParser.startState(ld(i.state)),i.skipUntilInView(this.parsedPos,i.viewport.from),this.parsedPos=i.viewport.from),this.moveRangeIndex()}advance(){let e=tf.get(),n=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),r=Math.min(n,this.chunkStart+512);for(e&&(r=Math.min(r,e.viewport.to));this.parsedPos=n?this.finish():e&&this.parsedPos>=e.viewport.to?(e.skipUntilInView(this.parsedPos,n),this.finish()):null}stopAt(e){this.stoppedAt=e}lineAfter(e){let n=this.input.chunk(e);if(this.input.lineChunks)n==` +3.某句话如果已经被回复过,不要重复回复`}),[y,w]=b.useState({emoji_chance:.4,max_reg_num:40,do_replace:!0,check_interval:10,steal_emoji:!0,content_filtration:!1,filtration_prompt:"符合公序良俗"}),[S,k]=b.useState({enable_tool:!0,enable_mood:!1,mood_update_threshold:1,emotion_style:"情绪较为稳定,但遇遇特定事件的时候起伏较大",all_global:!0}),[j,N]=b.useState({api_key:""}),[T,E]=b.useState(!1),[_,A]=b.useState(""),L=[{id:"bot-basic",title:"Bot基础",description:"配置机器人的基本信息",icon:a0},{id:"personality",title:"人格配置",description:"定义机器人的性格和说话风格",icon:Dv},{id:"emoji",title:"表情包",description:"配置表情包相关设置",icon:_j},{id:"other",title:"其他设置",description:"工具、情绪系统等配置",icon:Xu},{id:"siliconflow",title:"API配置",description:"配置硅基流动API密钥",icon:bI}],P=(n+1)/L.length*100;b.useEffect(()=>{(async()=>{try{d(!0);const[Y,J,X,R,ie]=await Promise.all([kie(),Oie(),jie(),Nie(),Cie()]);m(Y),x(J),w(X),k(R),N(ie)}catch(Y){e({title:"加载配置失败",description:Y instanceof Error?Y.message:"无法加载现有配置,将使用默认值",variant:"destructive"})}finally{d(!1)}})()},[e]);const B=async()=>{l(!0);try{switch(n){case 0:await Tie(h);break;case 1:await Eie(g);break;case 2:await _ie(y);break;case 3:await Aie(S);break;case 4:await Mie(j);break}return e({title:"保存成功",description:`${L[n].title}配置已保存`}),!0}catch(F){return e({title:"保存失败",description:F instanceof Error?F.message:"未知错误",variant:"destructive"}),!1}finally{l(!1)}},$=async()=>{await B()&&n{n>0&&r(n-1)},te=async()=>{i(!0),E(!0);try{if(A("正在保存API配置..."),!await B()){i(!1),E(!1);return}A("正在完成初始化..."),await sE(),A("正在重启麦麦..."),await ib(),e({title:"配置完成",description:"麦麦正在重启以应用新配置..."}),A("等待麦麦重启完成...");const Y=60;let J=0,X=!1;for(;JsetTimeout(R,1e3));try{(await Rie()).running&&(X=!0,A("重启成功!正在跳转..."))}catch{J++}}if(!X)throw new Error("重启超时,请手动检查麦麦状态");setTimeout(()=>{t({to:"/"})},1e3)}catch(F){E(!1),e({title:"配置失败",description:F instanceof Error?F.message:"未知错误",variant:"destructive"})}finally{i(!1)}},z=async()=>{try{await sE(),t({to:"/"})}catch(F){e({title:"跳过失败",description:F instanceof Error?F.message:"未知错误",variant:"destructive"})}},Q=()=>{switch(n){case 0:return o.jsx(vie,{config:h,onChange:m});case 1:return o.jsx(yie,{config:g,onChange:x});case 2:return o.jsx(bie,{config:y,onChange:w});case 3:return o.jsx(wie,{config:S,onChange:k});case 4:return o.jsx(Sie,{config:j,onChange:N});default:return null}};return o.jsxs("div",{className:"relative flex min-h-screen flex-col items-center justify-center overflow-hidden bg-gradient-to-br from-primary/5 via-background to-secondary/5 p-4 md:p-6",children:[T&&o.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm",children:o.jsxs("div",{className:"mx-auto flex max-w-md flex-col items-center space-y-6 rounded-lg border bg-card p-8 text-center shadow-lg",children:[o.jsx("div",{className:"flex h-20 w-20 items-center justify-center rounded-full bg-primary/10",children:o.jsx(Po,{className:"h-10 w-10 animate-spin text-primary"})}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),o.jsx("p",{className:"text-muted-foreground",children:_})]}),o.jsx("div",{className:"w-full",children:o.jsx("div",{className:"h-2 w-full overflow-hidden rounded-full bg-secondary",children:o.jsx("div",{className:"h-full w-full animate-pulse bg-primary",style:{animation:"pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite"}})})}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"请稍候,这可能需要一分钟..."})]})}),o.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[o.jsx("div",{className:"absolute left-1/4 top-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-primary/5 blur-3xl"}),o.jsx("div",{className:"absolute right-1/4 bottom-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-secondary/5 blur-3xl"})]}),c?o.jsxs("div",{className:"relative z-10 text-center",children:[o.jsx("div",{className:"mx-auto mb-4 flex h-16 w-16 items-center justify-center",children:o.jsx("div",{className:"h-12 w-12 animate-spin rounded-full border-4 border-primary border-t-transparent"})}),o.jsx("p",{className:"text-lg font-medium",children:"加载配置中..."}),o.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"正在读取现有配置"})]}):o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"relative z-10 w-full max-w-4xl",children:[o.jsxs("div",{className:"mb-6 md:mb-8 text-center",children:[o.jsx("div",{className:"mx-auto mb-4 flex h-12 w-12 md:h-16 md:w-16 items-center justify-center rounded-2xl bg-primary/10",children:o.jsx(Qee,{className:"h-6 w-6 md:h-8 md:w-8 text-primary",strokeWidth:2,fill:"none"})}),o.jsx("h1",{className:"mb-2 text-2xl md:text-3xl font-bold",children:"首次配置向导"}),o.jsxs("p",{className:"text-sm md:text-base text-muted-foreground",children:["让我们一起完成 ",Wj," 的初始配置"]})]}),o.jsxs("div",{className:"mb-6 md:mb-8",children:[o.jsxs("div",{className:"mb-2 flex items-center justify-between text-xs md:text-sm",children:[o.jsxs("span",{className:"text-muted-foreground",children:["步骤 ",n+1," / ",L.length]}),o.jsxs("span",{className:"font-medium text-primary",children:[Math.round(P),"%"]})]}),o.jsx(Lp,{value:P,className:"h-2"})]}),o.jsx("div",{className:"mb-6 md:mb-8 flex justify-between",children:L.map((F,Y)=>{const J=F.icon;return o.jsxs("div",{className:xe("flex flex-1 flex-col items-center gap-1 md:gap-2",Yt({to:"/"}),className:"gap-2 w-full sm:w-auto",children:[o.jsx(D0,{className:"h-4 w-4"}),"返回首页"]}),o.jsxs(de,{size:"lg",variant:"outline",onClick:()=>window.history.back(),className:"gap-2 w-full sm:w-auto",children:[o.jsx(wI,{className:"h-4 w-4"}),"返回上一页"]})]}),o.jsx("div",{className:"mt-12 pt-8 border-t border-border",children:o.jsx("p",{className:"text-sm text-muted-foreground",children:"如果您认为这是一个错误,请联系系统管理员"})})]})})}var AB=["PageUp","PageDown"],MB=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],RB={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},jf="Slider",[mk,Pie,zie]=By(jf),[DB]=Ra(jf,[zie]),[Iie,ab]=DB(jf),PB=b.forwardRef((t,e)=>{const{name:n,min:r=0,max:s=100,step:i=1,orientation:a="horizontal",disabled:l=!1,minStepsBetweenThumbs:c=0,defaultValue:d=[r],value:h,onValueChange:m=()=>{},onValueCommit:g=()=>{},inverted:x=!1,form:y,...w}=t,S=b.useRef(new Set),k=b.useRef(0),N=a==="horizontal"?Lie:Bie,[T=[],E]=Xl({prop:h,defaultProp:d,onChange:$=>{[...S.current][k.current]?.focus(),m($)}}),_=b.useRef(T);function A($){const U=Qie(T,$);B($,U)}function L($){B($,k.current)}function P(){const $=_.current[k.current];T[k.current]!==$&&g(T)}function B($,U,{commit:te}={commit:!1}){const z=Gie(i),Q=Xie(Math.round(($-r)/i)*i+r,z),F=Sj(Q,[r,s]);E((Y=[])=>{const J=$ie(Y,F,U);if(Wie(J,c*i)){k.current=J.indexOf(F);const X=String(J)!==String(Y);return X&&te&&g(J),X?J:Y}else return Y})}return o.jsx(Iie,{scope:t.__scopeSlider,name:n,disabled:l,min:r,max:s,valueIndexToChangeRef:k,thumbs:S.current,values:T,orientation:a,form:y,children:o.jsx(mk.Provider,{scope:t.__scopeSlider,children:o.jsx(mk.Slot,{scope:t.__scopeSlider,children:o.jsx(N,{"aria-disabled":l,"data-disabled":l?"":void 0,...w,ref:e,onPointerDown:nt(w.onPointerDown,()=>{l||(_.current=T)}),min:r,max:s,inverted:x,onSlideStart:l?void 0:A,onSlideMove:l?void 0:L,onSlideEnd:l?void 0:P,onHomeKeyDown:()=>!l&&B(r,0,{commit:!0}),onEndKeyDown:()=>!l&&B(s,T.length-1,{commit:!0}),onStepKeyDown:({event:$,direction:U})=>{if(!l){const Q=AB.includes($.key)||$.shiftKey&&MB.includes($.key)?10:1,F=k.current,Y=T[F],J=i*Q*U;B(Y+J,F,{commit:!0})}}})})})})});PB.displayName=jf;var[zB,IB]=DB(jf,{startEdge:"left",endEdge:"right",size:"width",direction:1}),Lie=b.forwardRef((t,e)=>{const{min:n,max:r,dir:s,inverted:i,onSlideStart:a,onSlideMove:l,onSlideEnd:c,onStepKeyDown:d,...h}=t,[m,g]=b.useState(null),x=Yn(e,N=>g(N)),y=b.useRef(void 0),w=Ep(s),S=w==="ltr",k=S&&!i||!S&&i;function j(N){const T=y.current||m.getBoundingClientRect(),E=[0,T.width],A=Xj(E,k?[n,r]:[r,n]);return y.current=T,A(N-T.left)}return o.jsx(zB,{scope:t.__scopeSlider,startEdge:k?"left":"right",endEdge:k?"right":"left",direction:k?1:-1,size:"width",children:o.jsx(LB,{dir:w,"data-orientation":"horizontal",...h,ref:x,style:{...h.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:N=>{const T=j(N.clientX);a?.(T)},onSlideMove:N=>{const T=j(N.clientX);l?.(T)},onSlideEnd:()=>{y.current=void 0,c?.()},onStepKeyDown:N=>{const E=RB[k?"from-left":"from-right"].includes(N.key);d?.({event:N,direction:E?-1:1})}})})}),Bie=b.forwardRef((t,e)=>{const{min:n,max:r,inverted:s,onSlideStart:i,onSlideMove:a,onSlideEnd:l,onStepKeyDown:c,...d}=t,h=b.useRef(null),m=Yn(e,h),g=b.useRef(void 0),x=!s;function y(w){const S=g.current||h.current.getBoundingClientRect(),k=[0,S.height],N=Xj(k,x?[r,n]:[n,r]);return g.current=S,N(w-S.top)}return o.jsx(zB,{scope:t.__scopeSlider,startEdge:x?"bottom":"top",endEdge:x?"top":"bottom",size:"height",direction:x?1:-1,children:o.jsx(LB,{"data-orientation":"vertical",...d,ref:m,style:{...d.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:w=>{const S=y(w.clientY);i?.(S)},onSlideMove:w=>{const S=y(w.clientY);a?.(S)},onSlideEnd:()=>{g.current=void 0,l?.()},onStepKeyDown:w=>{const k=RB[x?"from-bottom":"from-top"].includes(w.key);c?.({event:w,direction:k?-1:1})}})})}),LB=b.forwardRef((t,e)=>{const{__scopeSlider:n,onSlideStart:r,onSlideMove:s,onSlideEnd:i,onHomeKeyDown:a,onEndKeyDown:l,onStepKeyDown:c,...d}=t,h=ab(jf,n);return o.jsx(xn.span,{...d,ref:e,onKeyDown:nt(t.onKeyDown,m=>{m.key==="Home"?(a(m),m.preventDefault()):m.key==="End"?(l(m),m.preventDefault()):AB.concat(MB).includes(m.key)&&(c(m),m.preventDefault())}),onPointerDown:nt(t.onPointerDown,m=>{const g=m.target;g.setPointerCapture(m.pointerId),m.preventDefault(),h.thumbs.has(g)?g.focus():r(m)}),onPointerMove:nt(t.onPointerMove,m=>{m.target.hasPointerCapture(m.pointerId)&&s(m)}),onPointerUp:nt(t.onPointerUp,m=>{const g=m.target;g.hasPointerCapture(m.pointerId)&&(g.releasePointerCapture(m.pointerId),i(m))})})}),BB="SliderTrack",FB=b.forwardRef((t,e)=>{const{__scopeSlider:n,...r}=t,s=ab(BB,n);return o.jsx(xn.span,{"data-disabled":s.disabled?"":void 0,"data-orientation":s.orientation,...r,ref:e})});FB.displayName=BB;var pk="SliderRange",qB=b.forwardRef((t,e)=>{const{__scopeSlider:n,...r}=t,s=ab(pk,n),i=IB(pk,n),a=b.useRef(null),l=Yn(e,a),c=s.values.length,d=s.values.map(g=>QB(g,s.min,s.max)),h=c>1?Math.min(...d):0,m=100-Math.max(...d);return o.jsx(xn.span,{"data-orientation":s.orientation,"data-disabled":s.disabled?"":void 0,...r,ref:l,style:{...t.style,[i.startEdge]:h+"%",[i.endEdge]:m+"%"}})});qB.displayName=pk;var gk="SliderThumb",$B=b.forwardRef((t,e)=>{const n=Pie(t.__scopeSlider),[r,s]=b.useState(null),i=Yn(e,l=>s(l)),a=b.useMemo(()=>r?n().findIndex(l=>l.ref.current===r):-1,[n,r]);return o.jsx(Fie,{...t,ref:i,index:a})}),Fie=b.forwardRef((t,e)=>{const{__scopeSlider:n,index:r,name:s,...i}=t,a=ab(gk,n),l=IB(gk,n),[c,d]=b.useState(null),h=Yn(e,j=>d(j)),m=c?a.form||!!c.closest("form"):!0,g=tI(c),x=a.values[r],y=x===void 0?0:QB(x,a.min,a.max),w=Hie(r,a.values.length),S=g?.[l.size],k=S?Vie(S,y,l.direction):0;return b.useEffect(()=>{if(c)return a.thumbs.add(c),()=>{a.thumbs.delete(c)}},[c,a.thumbs]),o.jsxs("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[l.startEdge]:`calc(${y}% + ${k}px)`},children:[o.jsx(mk.ItemSlot,{scope:t.__scopeSlider,children:o.jsx(xn.span,{role:"slider","aria-label":t["aria-label"]||w,"aria-valuemin":a.min,"aria-valuenow":x,"aria-valuemax":a.max,"aria-orientation":a.orientation,"data-orientation":a.orientation,"data-disabled":a.disabled?"":void 0,tabIndex:a.disabled?void 0:0,...i,ref:h,style:x===void 0?{display:"none"}:t.style,onFocus:nt(t.onFocus,()=>{a.valueIndexToChangeRef.current=r})})}),m&&o.jsx(HB,{name:s??(a.name?a.name+(a.values.length>1?"[]":""):void 0),form:a.form,value:x},r)]})});$B.displayName=gk;var qie="RadioBubbleInput",HB=b.forwardRef(({__scopeSlider:t,value:e,...n},r)=>{const s=b.useRef(null),i=Yn(s,r),a=eI(e);return b.useEffect(()=>{const l=s.current;if(!l)return;const c=window.HTMLInputElement.prototype,h=Object.getOwnPropertyDescriptor(c,"value").set;if(a!==e&&h){const m=new Event("input",{bubbles:!0});h.call(l,e),l.dispatchEvent(m)}},[a,e]),o.jsx(xn.input,{style:{display:"none"},...n,ref:i,defaultValue:e})});HB.displayName=qie;function $ie(t=[],e,n){const r=[...t];return r[n]=e,r.sort((s,i)=>s-i)}function QB(t,e,n){const i=100/(n-e)*(t-e);return Sj(i,[0,100])}function Hie(t,e){return e>2?`Value ${t+1} of ${e}`:e===2?["Minimum","Maximum"][t]:void 0}function Qie(t,e){if(t.length===1)return 0;const n=t.map(s=>Math.abs(s-e)),r=Math.min(...n);return n.indexOf(r)}function Vie(t,e,n){const r=t/2,i=Xj([0,50],[0,r]);return(r-i(e)*n)*n}function Uie(t){return t.slice(0,-1).map((e,n)=>t[n+1]-e)}function Wie(t,e){if(e>0){const n=Uie(t);return Math.min(...n)>=e}return!0}function Xj(t,e){return n=>{if(t[0]===t[1]||e[0]===e[1])return e[0];const r=(e[1]-e[0])/(t[1]-t[0]);return e[0]+r*(n-t[0])}}function Gie(t){return(String(t).split(".")[1]||"").length}function Xie(t,e){const n=Math.pow(10,e);return Math.round(t*n)/n}var VB=PB,Yie=FB,Kie=qB,Zie=$B;const Bp=b.forwardRef(({className:t,...e},n)=>o.jsxs(VB,{ref:n,className:xe("relative flex w-full touch-none select-none items-center",t),...e,children:[o.jsx(Yie,{className:"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20",children:o.jsx(Kie,{className:"absolute h-full bg-primary"})}),o.jsx(Zie,{className:"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"})]}));Bp.displayName=VB.displayName;const Vt=Aee,Ut=Mee,$t=b.forwardRef(({className:t,children:e,...n},r)=>o.jsxs(iI,{ref:r,className:xe("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",t),...n,children:[e,o.jsx(Nee,{asChild:!0,children:o.jsx(nd,{className:"h-4 w-4 opacity-50"})})]}));$t.displayName=iI.displayName;const UB=b.forwardRef(({className:t,...e},n)=>o.jsx(aI,{ref:n,className:xe("flex cursor-default items-center justify-center py-1",t),...e,children:o.jsx(P0,{className:"h-4 w-4"})}));UB.displayName=aI.displayName;const WB=b.forwardRef(({className:t,...e},n)=>o.jsx(oI,{ref:n,className:xe("flex cursor-default items-center justify-center py-1",t),...e,children:o.jsx(nd,{className:"h-4 w-4"})}));WB.displayName=oI.displayName;const Ht=b.forwardRef(({className:t,children:e,position:n="popper",...r},s)=>o.jsx(Cee,{children:o.jsxs(lI,{ref:s,className:xe("relative z-[100] max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-hidden rounded-md border border-border bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",n==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:n,...r,children:[o.jsx(UB,{}),o.jsx(Tee,{className:xe("p-1",n==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:e}),o.jsx(WB,{})]})}));Ht.displayName=lI.displayName;const Jie=b.forwardRef(({className:t,...e},n)=>o.jsx(cI,{ref:n,className:xe("px-2 py-1.5 text-sm font-semibold",t),...e}));Jie.displayName=cI.displayName;const De=b.forwardRef(({className:t,children:e,...n},r)=>o.jsxs(uI,{ref:r,className:xe("relative flex w-full cursor-default select-none items-center rounded-sm py-2 pl-2 pr-8 text-sm outline-none bg-white dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800 focus:bg-gray-100 dark:focus:bg-gray-800 data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),...n,children:[o.jsx("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:o.jsx(Eee,{children:o.jsx(Ro,{className:"h-4 w-4"})})}),o.jsx(_ee,{children:e})]}));De.displayName=uI.displayName;const eae=b.forwardRef(({className:t,...e},n)=>o.jsx(dI,{ref:n,className:xe("-mx-1 my-1 h-px bg-muted",t),...e}));eae.displayName=dI.displayName;function tae(t){const e=nae(t),n=b.forwardRef((r,s)=>{const{children:i,...a}=r,l=b.Children.toArray(i),c=l.find(sae);if(c){const d=c.props.children,h=l.map(m=>m===c?b.Children.count(d)>1?b.Children.only(null):b.isValidElement(d)?d.props.children:null:m);return o.jsx(e,{...a,ref:s,children:b.isValidElement(d)?b.cloneElement(d,void 0,h):null})}return o.jsx(e,{...a,ref:s,children:i})});return n.displayName=`${t}.Slot`,n}function nae(t){const e=b.forwardRef((n,r)=>{const{children:s,...i}=n;if(b.isValidElement(s)){const a=aae(s),l=iae(i,s.props);return s.type!==b.Fragment&&(l.ref=r?Qc(r,a):a),b.cloneElement(s,l)}return b.Children.count(s)>1?b.Children.only(null):null});return e.displayName=`${t}.SlotClone`,e}var rae=Symbol("radix.slottable");function sae(t){return b.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===rae}function iae(t,e){const n={...e};for(const r in e){const s=t[r],i=e[r];/^on[A-Z]/.test(r)?s&&i?n[r]=(...l)=>{const c=i(...l);return s(...l),c}:s&&(n[r]=s):r==="style"?n[r]={...s,...i}:r==="className"&&(n[r]=[s,i].filter(Boolean).join(" "))}return{...t,...n}}function aae(t){let e=Object.getOwnPropertyDescriptor(t.props,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning;return n?t.ref:(e=Object.getOwnPropertyDescriptor(t,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning,n?t.props.ref:t.props.ref||t.ref)}var ob="Popover",[GB]=Ra(ob,[vf]),Fp=vf(),[oae,iu]=GB(ob),XB=t=>{const{__scopePopover:e,children:n,open:r,defaultOpen:s,onOpenChange:i,modal:a=!1}=t,l=Fp(e),c=b.useRef(null),[d,h]=b.useState(!1),[m,g]=Xl({prop:r,defaultProp:s??!1,onChange:i,caller:ob});return o.jsx(Vy,{...l,children:o.jsx(oae,{scope:e,contentId:Ui(),triggerRef:c,open:m,onOpenChange:g,onOpenToggle:b.useCallback(()=>g(x=>!x),[g]),hasCustomAnchor:d,onCustomAnchorAdd:b.useCallback(()=>h(!0),[]),onCustomAnchorRemove:b.useCallback(()=>h(!1),[]),modal:a,children:n})})};XB.displayName=ob;var YB="PopoverAnchor",lae=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=iu(YB,n),i=Fp(n),{onCustomAnchorAdd:a,onCustomAnchorRemove:l}=s;return b.useEffect(()=>(a(),()=>l()),[a,l]),o.jsx(Uy,{...i,...r,ref:e})});lae.displayName=YB;var KB="PopoverTrigger",ZB=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=iu(KB,n),i=Fp(n),a=Yn(e,s.triggerRef),l=o.jsx(xn.button,{type:"button","aria-haspopup":"dialog","aria-expanded":s.open,"aria-controls":s.contentId,"data-state":rF(s.open),...r,ref:a,onClick:nt(t.onClick,s.onOpenToggle)});return s.hasCustomAnchor?l:o.jsx(Uy,{asChild:!0,...i,children:l})});ZB.displayName=KB;var Yj="PopoverPortal",[cae,uae]=GB(Yj,{forceMount:void 0}),JB=t=>{const{__scopePopover:e,forceMount:n,children:r,container:s}=t,i=iu(Yj,e);return o.jsx(cae,{scope:e,forceMount:n,children:o.jsx(ii,{present:n||i.open,children:o.jsx(Qy,{asChild:!0,container:s,children:r})})})};JB.displayName=Yj;var Kh="PopoverContent",eF=b.forwardRef((t,e)=>{const n=uae(Kh,t.__scopePopover),{forceMount:r=n.forceMount,...s}=t,i=iu(Kh,t.__scopePopover);return o.jsx(ii,{present:r||i.open,children:i.modal?o.jsx(hae,{...s,ref:e}):o.jsx(fae,{...s,ref:e})})});eF.displayName=Kh;var dae=tae("PopoverContent.RemoveScroll"),hae=b.forwardRef((t,e)=>{const n=iu(Kh,t.__scopePopover),r=b.useRef(null),s=Yn(e,r),i=b.useRef(!1);return b.useEffect(()=>{const a=r.current;if(a)return hI(a)},[]),o.jsx(fI,{as:dae,allowPinchZoom:!0,children:o.jsx(tF,{...t,ref:s,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:nt(t.onCloseAutoFocus,a=>{a.preventDefault(),i.current||n.triggerRef.current?.focus()}),onPointerDownOutside:nt(t.onPointerDownOutside,a=>{const l=a.detail.originalEvent,c=l.button===0&&l.ctrlKey===!0,d=l.button===2||c;i.current=d},{checkForDefaultPrevented:!1}),onFocusOutside:nt(t.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1})})})}),fae=b.forwardRef((t,e)=>{const n=iu(Kh,t.__scopePopover),r=b.useRef(!1),s=b.useRef(!1);return o.jsx(tF,{...t,ref:e,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{t.onCloseAutoFocus?.(i),i.defaultPrevented||(r.current||n.triggerRef.current?.focus(),i.preventDefault()),r.current=!1,s.current=!1},onInteractOutside:i=>{t.onInteractOutside?.(i),i.defaultPrevented||(r.current=!0,i.detail.originalEvent.type==="pointerdown"&&(s.current=!0));const a=i.target;n.triggerRef.current?.contains(a)&&i.preventDefault(),i.detail.originalEvent.type==="focusin"&&s.current&&i.preventDefault()}})}),tF=b.forwardRef((t,e)=>{const{__scopePopover:n,trapFocus:r,onOpenAutoFocus:s,onCloseAutoFocus:i,disableOutsidePointerEvents:a,onEscapeKeyDown:l,onPointerDownOutside:c,onFocusOutside:d,onInteractOutside:h,...m}=t,g=iu(Kh,n),x=Fp(n);return mI(),o.jsx(pI,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:s,onUnmountAutoFocus:i,children:o.jsx(Cj,{asChild:!0,disableOutsidePointerEvents:a,onInteractOutside:h,onEscapeKeyDown:l,onPointerDownOutside:c,onFocusOutside:d,onDismiss:()=>g.onOpenChange(!1),children:o.jsx(Tj,{"data-state":rF(g.open),role:"dialog",id:g.contentId,...x,...m,ref:e,style:{...m.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),nF="PopoverClose",mae=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=iu(nF,n);return o.jsx(xn.button,{type:"button",...r,ref:e,onClick:nt(t.onClick,()=>s.onOpenChange(!1))})});mae.displayName=nF;var pae="PopoverArrow",gae=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=Fp(n);return o.jsx(Ej,{...s,...r,ref:e})});gae.displayName=pae;function rF(t){return t?"open":"closed"}var xae=XB,vae=ZB,yae=JB,sF=eF;const zo=xae,Io=vae,Xa=b.forwardRef(({className:t,align:e="center",sideOffset:n=4,...r},s)=>o.jsx(yae,{children:o.jsx(sF,{ref:s,align:e,sideOffset:n,className:xe("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]",t),...r})}));Xa.displayName=sF.displayName;const au="/api/webui/config";async function iE(){const e=await(await St(`${au}/bot`)).json();if(!e.success)throw new Error("获取配置数据失败");return e.config}async function Rh(){const e=await(await St(`${au}/model`)).json();if(!e.success)throw new Error("获取模型配置数据失败");return e.config}async function aE(t){const n=await(await St(`${au}/bot`,{method:"POST",headers:Dt(),body:JSON.stringify(t)})).json();if(!n.success)throw new Error(n.message||"保存配置失败")}async function bae(){const e=await(await St(`${au}/bot/raw`)).json();if(!e.success)throw new Error("获取配置源代码失败");return e.content}async function wae(t){const n=await(await St(`${au}/bot/raw`,{method:"POST",headers:Dt(),body:JSON.stringify({raw_content:t})})).json();if(!n.success)throw new Error(n.message||"保存配置失败")}async function qv(t){const n=await(await St(`${au}/model`,{method:"POST",headers:Dt(),body:JSON.stringify(t)})).json();if(!n.success)throw new Error(n.message||"保存配置失败")}async function Sae(t,e){const r=await(await St(`${au}/bot/section/${t}`,{method:"POST",headers:Dt(),body:JSON.stringify(e)})).json();if(!r.success)throw new Error(r.message||`保存配置节 ${t} 失败`)}async function xk(t,e){const r=await(await St(`${au}/model/section/${t}`,{method:"POST",headers:Dt(),body:JSON.stringify(e)})).json();if(!r.success)throw new Error(r.message||`保存配置节 ${t} 失败`)}async function kae(t,e="openai",n="/models"){const r=new URLSearchParams({provider_name:t,parser:e,endpoint:n}),s=await St(`/api/webui/models/list?${r}`);if(!s.ok){const a=await s.json().catch(()=>({}));throw new Error(a.detail||`获取模型列表失败 (${s.status})`)}const i=await s.json();if(!i.success)throw new Error("获取模型列表失败");return i.models}const Oae=kf("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"}}),ga=b.forwardRef(({className:t,variant:e,...n},r)=>o.jsx("div",{ref:r,role:"alert",className:xe(Oae({variant:e}),t),...n}));ga.displayName="Alert";const jae=b.forwardRef(({className:t,...e},n)=>o.jsx("h5",{ref:n,className:xe("mb-1 font-medium leading-none tracking-tight",t),...e}));jae.displayName="AlertTitle";const xa=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("text-sm [&_p]:leading-relaxed",t),...e}));xa.displayName="AlertDescription";function Kj({onRestartComplete:t,onRestartFailed:e}){const[n,r]=b.useState(0),[s,i]=b.useState("restarting"),[a,l]=b.useState(0),[c,d]=b.useState(0);b.useEffect(()=>{const g=setInterval(()=>{r(w=>w>=90?w:w+1)},200),x=setInterval(()=>{l(w=>w+1)},1e3),y=setTimeout(()=>{i("checking"),h()},3e3);return()=>{clearInterval(g),clearInterval(x),clearTimeout(y)}},[]);const h=()=>{const x=async()=>{try{if(d(w=>w+1),(await fetch("/api/webui/system/status",{method:"GET",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(3e3)})).ok)r(100),i("success"),setTimeout(()=>{t?.()},1500);else throw new Error("Status check failed")}catch{c<60?setTimeout(x,2e3):(i("failed"),e?.())}};x()},m=g=>{const x=Math.floor(g/60),y=g%60;return`${x}:${y.toString().padStart(2,"0")}`};return o.jsx("div",{className:"fixed inset-0 bg-background/95 backdrop-blur-sm z-50 flex items-center justify-center",children:o.jsxs("div",{className:"max-w-md w-full mx-4 space-y-8",children:[o.jsxs("div",{className:"flex flex-col items-center space-y-4",children:[s==="restarting"&&o.jsxs(o.Fragment,{children:[o.jsx(Po,{className:"h-16 w-16 text-primary animate-spin"}),o.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),o.jsx("p",{className:"text-muted-foreground text-center",children:"请稍候,麦麦正在重启中..."})]}),s==="checking"&&o.jsxs(o.Fragment,{children:[o.jsx(Po,{className:"h-16 w-16 text-primary animate-spin"}),o.jsx("h2",{className:"text-2xl font-bold",children:"检查服务状态"}),o.jsxs("p",{className:"text-muted-foreground text-center",children:["等待服务恢复... (尝试 ",c,"/60)"]})]}),s==="success"&&o.jsxs(o.Fragment,{children:[o.jsx(Vc,{className:"h-16 w-16 text-green-500"}),o.jsx("h2",{className:"text-2xl font-bold",children:"重启成功"}),o.jsx("p",{className:"text-muted-foreground text-center",children:"正在跳转到登录页面..."})]}),s==="failed"&&o.jsxs(o.Fragment,{children:[o.jsx(Uc,{className:"h-16 w-16 text-destructive"}),o.jsx("h2",{className:"text-2xl font-bold",children:"重启超时"}),o.jsx("p",{className:"text-muted-foreground text-center",children:"服务未能在预期时间内恢复,请手动检查或刷新页面"})]})]}),s!=="failed"&&o.jsxs("div",{className:"space-y-2",children:[o.jsx(Lp,{value:n,className:"h-2"}),o.jsxs("div",{className:"flex justify-between text-sm text-muted-foreground",children:[o.jsxs("span",{children:[n,"%"]}),o.jsxs("span",{children:["已用时: ",m(a)]})]})]}),o.jsx("div",{className:"bg-muted/50 rounded-lg p-4 space-y-2",children:o.jsxs("p",{className:"text-sm text-muted-foreground",children:[s==="restarting"&&"🔄 配置已保存,正在重启主程序...",s==="checking"&&"⏳ 正在等待服务恢复,请勿关闭页面...",s==="success"&&"✅ 配置已生效,服务运行正常",s==="failed"&&"⚠️ 如果长时间无响应,请尝试手动重启"]})}),o.jsx("div",{className:"bg-yellow-500/10 border border-yellow-500/50 rounded-lg p-4",children:o.jsxs("p",{className:"text-sm text-yellow-900 dark:text-yellow-100",children:[o.jsx("strong",{children:"⚠️ 重要提示:"})," 由于技术原因,使用重启功能后,将无法再使用 ",o.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。如需结束程序,请使用脚本目录下的进程管理脚本。"]})}),s==="failed"&&o.jsxs("div",{className:"flex gap-2",children:[o.jsx("button",{onClick:()=>window.location.reload(),className:"flex-1 px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary/90",children:"刷新页面"}),o.jsx("button",{onClick:()=>{i("checking"),d(0),h()},className:"flex-1 px-4 py-2 bg-secondary text-secondary-foreground rounded-md hover:bg-secondary/90",children:"重试检测"})]})]})})}let vk=[],iF=[];(()=>{let t="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,n=0;e>1;if(t=iF[r])e=r+1;else return!0;if(e==n)return!1}}function oE(t){return t>=127462&&t<=127487}const lE=8205;function Cae(t,e,n=!0,r=!0){return(n?aF:Tae)(t,e,r)}function aF(t,e,n){if(e==t.length)return e;e&&oF(t.charCodeAt(e))&&lF(t.charCodeAt(e-1))&&e--;let r=M4(t,e);for(e+=cE(r);e=0&&oE(M4(t,a));)i++,a-=2;if(i%2==0)break;e+=2}else break}return e}function Tae(t,e,n){for(;e>0;){let r=aF(t,e-2,n);if(r=56320&&t<57344}function lF(t){return t>=55296&&t<56320}function cE(t){return t<65536?1:2}class jn{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,n,r){[e,n]=Zh(this,e,n);let s=[];return this.decompose(0,e,s,2),r.length&&r.decompose(0,r.length,s,3),this.decompose(n,this.length,s,1),iv.from(s,this.length-(n-e)+r.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,n=this.length){[e,n]=Zh(this,e,n);let r=[];return this.decompose(e,n,r,0),iv.from(r,n-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let n=this.scanIdentical(e,1),r=this.length-this.scanIdentical(e,-1),s=new b0(this),i=new b0(e);for(let a=n,l=n;;){if(s.next(a),i.next(a),a=0,s.lineBreak!=i.lineBreak||s.done!=i.done||s.value!=i.value)return!1;if(l+=s.value.length,s.done||l>=r)return!0}}iter(e=1){return new b0(this,e)}iterRange(e,n=this.length){return new cF(this,e,n)}iterLines(e,n){let r;if(e==null)r=this.iter();else{n==null&&(n=this.lines+1);let s=this.line(e).from;r=this.iterRange(s,Math.max(s,n==this.lines+1?this.length:n<=1?0:this.line(n-1).to))}return new uF(r)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?jn.empty:e.length<=32?new Hr(e):iv.from(Hr.split(e,[]))}}class Hr extends jn{constructor(e,n=Eae(e)){super(),this.text=e,this.length=n}get lines(){return this.text.length}get children(){return null}lineInner(e,n,r,s){for(let i=0;;i++){let a=this.text[i],l=s+a.length;if((n?r:l)>=e)return new _ae(s,l,r,a);s=l+1,r++}}decompose(e,n,r,s){let i=e<=0&&n>=this.length?this:new Hr(uE(this.text,e,n),Math.min(n,this.length)-Math.max(0,e));if(s&1){let a=r.pop(),l=av(i.text,a.text.slice(),0,i.length);if(l.length<=32)r.push(new Hr(l,a.length+i.length));else{let c=l.length>>1;r.push(new Hr(l.slice(0,c)),new Hr(l.slice(c)))}}else r.push(i)}replace(e,n,r){if(!(r instanceof Hr))return super.replace(e,n,r);[e,n]=Zh(this,e,n);let s=av(this.text,av(r.text,uE(this.text,0,e)),n),i=this.length+r.length-(n-e);return s.length<=32?new Hr(s,i):iv.from(Hr.split(s,[]),i)}sliceString(e,n=this.length,r=` +`){[e,n]=Zh(this,e,n);let s="";for(let i=0,a=0;i<=n&&ae&&a&&(s+=r),ei&&(s+=l.slice(Math.max(0,e-i),n-i)),i=c+1}return s}flatten(e){for(let n of this.text)e.push(n)}scanIdentical(){return 0}static split(e,n){let r=[],s=-1;for(let i of e)r.push(i),s+=i.length+1,r.length==32&&(n.push(new Hr(r,s)),r=[],s=-1);return s>-1&&n.push(new Hr(r,s)),n}}let iv=class vh extends jn{constructor(e,n){super(),this.children=e,this.length=n,this.lines=0;for(let r of e)this.lines+=r.lines}lineInner(e,n,r,s){for(let i=0;;i++){let a=this.children[i],l=s+a.length,c=r+a.lines-1;if((n?c:l)>=e)return a.lineInner(e,n,r,s);s=l+1,r=c+1}}decompose(e,n,r,s){for(let i=0,a=0;a<=n&&i=a){let d=s&((a<=e?1:0)|(c>=n?2:0));a>=e&&c<=n&&!d?r.push(l):l.decompose(e-a,n-a,r,d)}a=c+1}}replace(e,n,r){if([e,n]=Zh(this,e,n),r.lines=i&&n<=l){let c=a.replace(e-i,n-i,r),d=this.lines-a.lines+c.lines;if(c.lines>4&&c.lines>d>>6){let h=this.children.slice();return h[s]=c,new vh(h,this.length-(n-e)+r.length)}return super.replace(i,l,c)}i=l+1}return super.replace(e,n,r)}sliceString(e,n=this.length,r=` +`){[e,n]=Zh(this,e,n);let s="";for(let i=0,a=0;ie&&i&&(s+=r),ea&&(s+=l.sliceString(e-a,n-a,r)),a=c+1}return s}flatten(e){for(let n of this.children)n.flatten(e)}scanIdentical(e,n){if(!(e instanceof vh))return 0;let r=0,[s,i,a,l]=n>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;s+=n,i+=n){if(s==a||i==l)return r;let c=this.children[s],d=e.children[i];if(c!=d)return r+c.scanIdentical(d,n);r+=c.length+1}}static from(e,n=e.reduce((r,s)=>r+s.length+1,-1)){let r=0;for(let x of e)r+=x.lines;if(r<32){let x=[];for(let y of e)y.flatten(x);return new Hr(x,n)}let s=Math.max(32,r>>5),i=s<<1,a=s>>1,l=[],c=0,d=-1,h=[];function m(x){let y;if(x.lines>i&&x instanceof vh)for(let w of x.children)m(w);else x.lines>a&&(c>a||!c)?(g(),l.push(x)):x instanceof Hr&&c&&(y=h[h.length-1])instanceof Hr&&x.lines+y.lines<=32?(c+=x.lines,d+=x.length+1,h[h.length-1]=new Hr(y.text.concat(x.text),y.length+1+x.length)):(c+x.lines>s&&g(),c+=x.lines,d+=x.length+1,h.push(x))}function g(){c!=0&&(l.push(h.length==1?h[0]:vh.from(h,d)),d=-1,c=h.length=0)}for(let x of e)m(x);return g(),l.length==1?l[0]:new vh(l,n)}};jn.empty=new Hr([""],0);function Eae(t){let e=-1;for(let n of t)e+=n.length+1;return e}function av(t,e,n=0,r=1e9){for(let s=0,i=0,a=!0;i=n&&(c>r&&(l=l.slice(0,r-s)),s0?1:(e instanceof Hr?e.text.length:e.children.length)<<1]}nextInner(e,n){for(this.done=this.lineBreak=!1;;){let r=this.nodes.length-1,s=this.nodes[r],i=this.offsets[r],a=i>>1,l=s instanceof Hr?s.text.length:s.children.length;if(a==(n>0?l:0)){if(r==0)return this.done=!0,this.value="",this;n>0&&this.offsets[r-1]++,this.nodes.pop(),this.offsets.pop()}else if((i&1)==(n>0?0:1)){if(this.offsets[r]+=n,e==0)return this.lineBreak=!0,this.value=` +`,this;e--}else if(s instanceof Hr){let c=s.text[a+(n<0?-1:0)];if(this.offsets[r]+=n,c.length>Math.max(0,e))return this.value=e==0?c:n>0?c.slice(e):c.slice(0,c.length-e),this;e-=c.length}else{let c=s.children[a+(n<0?-1:0)];e>c.length?(e-=c.length,this.offsets[r]+=n):(n<0&&this.offsets[r]--,this.nodes.push(c),this.offsets.push(n>0?1:(c instanceof Hr?c.text.length:c.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class cF{constructor(e,n,r){this.value="",this.done=!1,this.cursor=new b0(e,n>r?-1:1),this.pos=n>r?e.length:0,this.from=Math.min(n,r),this.to=Math.max(n,r)}nextInner(e,n){if(n<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,n<0?this.pos-this.to:this.from-this.pos);let r=n<0?this.pos-this.from:this.to-this.pos;e>r&&(e=r),r-=e;let{value:s}=this.cursor.next(e);return this.pos+=(s.length+e)*n,this.value=s.length<=r?s:n<0?s.slice(s.length-r):s.slice(0,r),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class uF{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:n,lineBreak:r,value:s}=this.inner.next(e);return n&&this.afterBreak?(this.value="",this.afterBreak=!1):n?(this.done=!0,this.value=""):r?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol<"u"&&(jn.prototype[Symbol.iterator]=function(){return this.iter()},b0.prototype[Symbol.iterator]=cF.prototype[Symbol.iterator]=uF.prototype[Symbol.iterator]=function(){return this});class _ae{constructor(e,n,r,s){this.from=e,this.to=n,this.number=r,this.text=s}get length(){return this.to-this.from}}function Zh(t,e,n){return e=Math.max(0,Math.min(t.length,e)),[e,Math.max(e,Math.min(t.length,n))]}function zs(t,e,n=!0,r=!0){return Cae(t,e,n,r)}function Aae(t){return t>=56320&&t<57344}function Mae(t){return t>=55296&&t<56320}function gi(t,e){let n=t.charCodeAt(e);if(!Mae(n)||e+1==t.length)return n;let r=t.charCodeAt(e+1);return Aae(r)?(n-55296<<10)+(r-56320)+65536:n}function Zj(t){return t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode((t>>10)+55296,(t&1023)+56320))}function wo(t){return t<65536?1:2}const yk=/\r\n?|\n/;var Ds=(function(t){return t[t.Simple=0]="Simple",t[t.TrackDel=1]="TrackDel",t[t.TrackBefore=2]="TrackBefore",t[t.TrackAfter=3]="TrackAfter",t})(Ds||(Ds={}));class Do{constructor(e){this.sections=e}get length(){let e=0;for(let n=0;ne)return i+(e-s);i+=l}else{if(r!=Ds.Simple&&d>=e&&(r==Ds.TrackDel&&se||r==Ds.TrackBefore&&se))return null;if(d>e||d==e&&n<0&&!l)return e==s||n<0?i:i+c;i+=c}s=d}if(e>s)throw new RangeError(`Position ${e} is out of range for changeset of length ${s}`);return i}touchesRange(e,n=e){for(let r=0,s=0;r=0&&s<=n&&l>=e)return sn?"cover":!0;s=l}return!1}toString(){let e="";for(let n=0;n=0?":"+s:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(n=>typeof n!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new Do(e)}static create(e){return new Do(e)}}class us extends Do{constructor(e,n){super(e),this.inserted=n}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return bk(this,(n,r,s,i,a)=>e=e.replace(s,s+(r-n),a),!1),e}mapDesc(e,n=!1){return wk(this,e,n,!0)}invert(e){let n=this.sections.slice(),r=[];for(let s=0,i=0;s=0){n[s]=l,n[s+1]=a;let c=s>>1;for(;r.length0&&Bc(r,n,i.text),i.forward(h),l+=h}let d=e[a++];for(;l>1].toJSON()))}return e}static of(e,n,r){let s=[],i=[],a=0,l=null;function c(h=!1){if(!h&&!s.length)return;ag||m<0||g>n)throw new RangeError(`Invalid change range ${m} to ${g} (in doc of length ${n})`);let y=x?typeof x=="string"?jn.of(x.split(r||yk)):x:jn.empty,w=y.length;if(m==g&&w==0)return;ma&&$s(s,m-a,-1),$s(s,g-m,w),Bc(i,s,y),a=g}}return d(e),c(!l),l}static empty(e){return new us(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let n=[],r=[];for(let s=0;sl&&typeof a!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(i.length==1)n.push(i[0],0);else{for(;r.length=0&&n<=0&&n==t[s+1]?t[s]+=e:s>=0&&e==0&&t[s]==0?t[s+1]+=n:r?(t[s]+=e,t[s+1]+=n):t.push(e,n)}function Bc(t,e,n){if(n.length==0)return;let r=e.length-2>>1;if(r>1])),!(n||a==t.sections.length||t.sections[a+1]<0);)l=t.sections[a++],c=t.sections[a++];e(s,d,i,h,m),s=d,i=h}}}function wk(t,e,n,r=!1){let s=[],i=r?[]:null,a=new B0(t),l=new B0(e);for(let c=-1;;){if(a.done&&l.len||l.done&&a.len)throw new Error("Mismatched change set lengths");if(a.ins==-1&&l.ins==-1){let d=Math.min(a.len,l.len);$s(s,d,-1),a.forward(d),l.forward(d)}else if(l.ins>=0&&(a.ins<0||c==a.i||a.off==0&&(l.len=0&&c=0){let d=0,h=a.len;for(;h;)if(l.ins==-1){let m=Math.min(h,l.len);d+=m,h-=m,l.forward(m)}else if(l.ins==0&&l.lenc||a.ins>=0&&a.len>c)&&(l||r.length>d),i.forward2(c),a.forward(c)}}}}class B0{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return n>=e.length?jn.empty:e[n]}textBit(e){let{inserted:n}=this.set,r=this.i-2>>1;return r>=n.length&&!e?jn.empty:n[r].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class Hu{constructor(e,n,r){this.from=e,this.to=n,this.flags=r}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(e,n=-1){let r,s;return this.empty?r=s=e.mapPos(this.from,n):(r=e.mapPos(this.from,1),s=e.mapPos(this.to,-1)),r==this.from&&s==this.to?this:new Hu(r,s,this.flags)}extend(e,n=e){if(e<=this.anchor&&n>=this.anchor)return Me.range(e,n);let r=Math.abs(e-this.anchor)>Math.abs(n-this.anchor)?e:n;return Me.range(this.anchor,r)}eq(e,n=!1){return this.anchor==e.anchor&&this.head==e.head&&(!n||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return Me.range(e.anchor,e.head)}static create(e,n,r){return new Hu(e,n,r)}}class Me{constructor(e,n){this.ranges=e,this.mainIndex=n}map(e,n=-1){return e.empty?this:Me.create(this.ranges.map(r=>r.map(e,n)),this.mainIndex)}eq(e,n=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let r=0;re.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new Me(e.ranges.map(n=>Hu.fromJSON(n)),e.main)}static single(e,n=e){return new Me([Me.range(e,n)],0)}static create(e,n=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let r=0,s=0;se?8:0)|i)}static normalized(e,n=0){let r=e[n];e.sort((s,i)=>s.from-i.from),n=e.indexOf(r);for(let s=1;si.head?Me.range(c,l):Me.range(l,c))}}return new Me(e,n)}}function hF(t,e){for(let n of t.ranges)if(n.to>e)throw new RangeError("Selection points outside of document")}let Jj=0;class at{constructor(e,n,r,s,i){this.combine=e,this.compareInput=n,this.compare=r,this.isStatic=s,this.id=Jj++,this.default=e([]),this.extensions=typeof i=="function"?i(this):i}get reader(){return this}static define(e={}){return new at(e.combine||(n=>n),e.compareInput||((n,r)=>n===r),e.compare||(e.combine?(n,r)=>n===r:e6),!!e.static,e.enables)}of(e){return new ov([],this,0,e)}compute(e,n){if(this.isStatic)throw new Error("Can't compute a static facet");return new ov(e,this,1,n)}computeN(e,n){if(this.isStatic)throw new Error("Can't compute a static facet");return new ov(e,this,2,n)}from(e,n){return n||(n=r=>r),this.compute([e],r=>n(r.field(e)))}}function e6(t,e){return t==e||t.length==e.length&&t.every((n,r)=>n===e[r])}class ov{constructor(e,n,r,s){this.dependencies=e,this.facet=n,this.type=r,this.value=s,this.id=Jj++}dynamicSlot(e){var n;let r=this.value,s=this.facet.compareInput,i=this.id,a=e[i]>>1,l=this.type==2,c=!1,d=!1,h=[];for(let m of this.dependencies)m=="doc"?c=!0:m=="selection"?d=!0:(((n=e[m.id])!==null&&n!==void 0?n:1)&1)==0&&h.push(e[m.id]);return{create(m){return m.values[a]=r(m),1},update(m,g){if(c&&g.docChanged||d&&(g.docChanged||g.selection)||Sk(m,h)){let x=r(m);if(l?!dE(x,m.values[a],s):!s(x,m.values[a]))return m.values[a]=x,1}return 0},reconfigure:(m,g)=>{let x,y=g.config.address[i];if(y!=null){let w=Hv(g,y);if(this.dependencies.every(S=>S instanceof at?g.facet(S)===m.facet(S):S instanceof Os?g.field(S,!1)==m.field(S,!1):!0)||(l?dE(x=r(m),w,s):s(x=r(m),w)))return m.values[a]=w,0}else x=r(m);return m.values[a]=x,1}}}}function dE(t,e,n){if(t.length!=e.length)return!1;for(let r=0;rt[c.id]),s=n.map(c=>c.type),i=r.filter(c=>!(c&1)),a=t[e.id]>>1;function l(c){let d=[];for(let h=0;hr===s),e);return e.provide&&(n.provides=e.provide(n)),n}create(e){let n=e.facet(Zx).find(r=>r.field==this);return(n?.create||this.createF)(e)}slot(e){let n=e[this.id]>>1;return{create:r=>(r.values[n]=this.create(r),1),update:(r,s)=>{let i=r.values[n],a=this.updateF(i,s);return this.compareF(i,a)?0:(r.values[n]=a,1)},reconfigure:(r,s)=>{let i=r.facet(Zx),a=s.facet(Zx),l;return(l=i.find(c=>c.field==this))&&l!=a.find(c=>c.field==this)?(r.values[n]=l.create(r),1):s.config.address[this.id]!=null?(r.values[n]=s.field(this),0):(r.values[n]=this.create(r),1)}}}init(e){return[this,Zx.of({field:this,create:e})]}get extension(){return this}}const Fu={lowest:4,low:3,default:2,high:1,highest:0};function Bm(t){return e=>new fF(e,t)}const ou={highest:Bm(Fu.highest),high:Bm(Fu.high),default:Bm(Fu.default),low:Bm(Fu.low),lowest:Bm(Fu.lowest)};class fF{constructor(e,n){this.inner=e,this.prec=n}}class lb{of(e){return new kk(this,e)}reconfigure(e){return lb.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class kk{constructor(e,n){this.compartment=e,this.inner=n}}class $v{constructor(e,n,r,s,i,a){for(this.base=e,this.compartments=n,this.dynamicSlots=r,this.address=s,this.staticValues=i,this.facets=a,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,n,r){let s=[],i=Object.create(null),a=new Map;for(let g of Dae(e,n,a))g instanceof Os?s.push(g):(i[g.facet.id]||(i[g.facet.id]=[])).push(g);let l=Object.create(null),c=[],d=[];for(let g of s)l[g.id]=d.length<<1,d.push(x=>g.slot(x));let h=r?.config.facets;for(let g in i){let x=i[g],y=x[0].facet,w=h&&h[g]||[];if(x.every(S=>S.type==0))if(l[y.id]=c.length<<1|1,e6(w,x))c.push(r.facet(y));else{let S=y.combine(x.map(k=>k.value));c.push(r&&y.compare(S,r.facet(y))?r.facet(y):S)}else{for(let S of x)S.type==0?(l[S.id]=c.length<<1|1,c.push(S.value)):(l[S.id]=d.length<<1,d.push(k=>S.dynamicSlot(k)));l[y.id]=d.length<<1,d.push(S=>Rae(S,y,x))}}let m=d.map(g=>g(l));return new $v(e,a,m,l,c,i)}}function Dae(t,e,n){let r=[[],[],[],[],[]],s=new Map;function i(a,l){let c=s.get(a);if(c!=null){if(c<=l)return;let d=r[c].indexOf(a);d>-1&&r[c].splice(d,1),a instanceof kk&&n.delete(a.compartment)}if(s.set(a,l),Array.isArray(a))for(let d of a)i(d,l);else if(a instanceof kk){if(n.has(a.compartment))throw new RangeError("Duplicate use of compartment in extensions");let d=e.get(a.compartment)||a.inner;n.set(a.compartment,d),i(d,l)}else if(a instanceof fF)i(a.inner,a.prec);else if(a instanceof Os)r[l].push(a),a.provides&&i(a.provides,l);else if(a instanceof ov)r[l].push(a),a.facet.extensions&&i(a.facet.extensions,Fu.default);else{let d=a.extension;if(!d)throw new Error(`Unrecognized extension value in extension set (${a}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);i(d,l)}}return i(t,Fu.default),r.reduce((a,l)=>a.concat(l))}function w0(t,e){if(e&1)return 2;let n=e>>1,r=t.status[n];if(r==4)throw new Error("Cyclic dependency between fields and/or facets");if(r&2)return r;t.status[n]=4;let s=t.computeSlot(t,t.config.dynamicSlots[n]);return t.status[n]=2|s}function Hv(t,e){return e&1?t.config.staticValues[e>>1]:t.values[e>>1]}const mF=at.define(),Ok=at.define({combine:t=>t.some(e=>e),static:!0}),pF=at.define({combine:t=>t.length?t[0]:void 0,static:!0}),gF=at.define(),xF=at.define(),vF=at.define(),yF=at.define({combine:t=>t.length?t[0]:!1});class qo{constructor(e,n){this.type=e,this.value=n}static define(){return new Pae}}class Pae{of(e){return new qo(this,e)}}class zae{constructor(e){this.map=e}of(e){return new Ft(this,e)}}class Ft{constructor(e,n){this.type=e,this.value=n}map(e){let n=this.type.map(this.value,e);return n===void 0?void 0:n==this.value?this:new Ft(this.type,n)}is(e){return this.type==e}static define(e={}){return new zae(e.map||(n=>n))}static mapEffects(e,n){if(!e.length)return e;let r=[];for(let s of e){let i=s.map(n);i&&r.push(i)}return r}}Ft.reconfigure=Ft.define();Ft.appendConfig=Ft.define();class ns{constructor(e,n,r,s,i,a){this.startState=e,this.changes=n,this.selection=r,this.effects=s,this.annotations=i,this.scrollIntoView=a,this._doc=null,this._state=null,r&&hF(r,n.newLength),i.some(l=>l.type==ns.time)||(this.annotations=i.concat(ns.time.of(Date.now())))}static create(e,n,r,s,i,a){return new ns(e,n,r,s,i,a)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let n of this.annotations)if(n.type==e)return n.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let n=this.annotation(ns.userEvent);return!!(n&&(n==e||n.length>e.length&&n.slice(0,e.length)==e&&n[e.length]=="."))}}ns.time=qo.define();ns.userEvent=qo.define();ns.addToHistory=qo.define();ns.remote=qo.define();function Iae(t,e){let n=[];for(let r=0,s=0;;){let i,a;if(r=t[r]))i=t[r++],a=t[r++];else if(s=0;s--){let i=r[s](t);i instanceof ns?t=i:Array.isArray(i)&&i.length==1&&i[0]instanceof ns?t=i[0]:t=wF(e,Dh(i),!1)}return t}function Bae(t){let e=t.startState,n=e.facet(vF),r=t;for(let s=n.length-1;s>=0;s--){let i=n[s](t);i&&Object.keys(i).length&&(r=bF(r,jk(e,i,t.changes.newLength),!0))}return r==t?t:ns.create(e,t.changes,t.selection,r.effects,r.annotations,r.scrollIntoView)}const Fae=[];function Dh(t){return t==null?Fae:Array.isArray(t)?t:[t]}var wr=(function(t){return t[t.Word=0]="Word",t[t.Space=1]="Space",t[t.Other=2]="Other",t})(wr||(wr={}));const qae=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let Nk;try{Nk=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function $ae(t){if(Nk)return Nk.test(t);for(let e=0;e"€"&&(n.toUpperCase()!=n.toLowerCase()||qae.test(n)))return!0}return!1}function Hae(t){return e=>{if(!/\S/.test(e))return wr.Space;if($ae(e))return wr.Word;for(let n=0;n-1)return wr.Word;return wr.Other}}class wn{constructor(e,n,r,s,i,a){this.config=e,this.doc=n,this.selection=r,this.values=s,this.status=e.statusTemplate.slice(),this.computeSlot=i,a&&(a._state=this);for(let l=0;ls.set(d,c)),n=null),s.set(l.value.compartment,l.value.extension)):l.is(Ft.reconfigure)?(n=null,r=l.value):l.is(Ft.appendConfig)&&(n=null,r=Dh(r).concat(l.value));let i;n?i=e.startState.values.slice():(n=$v.resolve(r,s,this),i=new wn(n,this.doc,this.selection,n.dynamicSlots.map(()=>null),(c,d)=>d.reconfigure(c,this),null).values);let a=e.startState.facet(Ok)?e.newSelection:e.newSelection.asSingle();new wn(n,e.newDoc,a,i,(l,c)=>c.update(l,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(n=>({changes:{from:n.from,to:n.to,insert:e},range:Me.cursor(n.from+e.length)}))}changeByRange(e){let n=this.selection,r=e(n.ranges[0]),s=this.changes(r.changes),i=[r.range],a=Dh(r.effects);for(let l=1;la.spec.fromJSON(l,c)))}}return wn.create({doc:e.doc,selection:Me.fromJSON(e.selection),extensions:n.extensions?s.concat([n.extensions]):s})}static create(e={}){let n=$v.resolve(e.extensions||[],new Map),r=e.doc instanceof jn?e.doc:jn.of((e.doc||"").split(n.staticFacet(wn.lineSeparator)||yk)),s=e.selection?e.selection instanceof Me?e.selection:Me.single(e.selection.anchor,e.selection.head):Me.single(0);return hF(s,r.length),n.staticFacet(Ok)||(s=s.asSingle()),new wn(n,r,s,n.dynamicSlots.map(()=>null),(i,a)=>a.create(i),null)}get tabSize(){return this.facet(wn.tabSize)}get lineBreak(){return this.facet(wn.lineSeparator)||` +`}get readOnly(){return this.facet(yF)}phrase(e,...n){for(let r of this.facet(wn.phrases))if(Object.prototype.hasOwnProperty.call(r,e)){e=r[e];break}return n.length&&(e=e.replace(/\$(\$|\d*)/g,(r,s)=>{if(s=="$")return"$";let i=+(s||1);return!i||i>n.length?r:n[i-1]})),e}languageDataAt(e,n,r=-1){let s=[];for(let i of this.facet(mF))for(let a of i(this,n,r))Object.prototype.hasOwnProperty.call(a,e)&&s.push(a[e]);return s}charCategorizer(e){return Hae(this.languageDataAt("wordChars",e).join(""))}wordAt(e){let{text:n,from:r,length:s}=this.doc.lineAt(e),i=this.charCategorizer(e),a=e-r,l=e-r;for(;a>0;){let c=zs(n,a,!1);if(i(n.slice(c,a))!=wr.Word)break;a=c}for(;lt.length?t[0]:4});wn.lineSeparator=pF;wn.readOnly=yF;wn.phrases=at.define({compare(t,e){let n=Object.keys(t),r=Object.keys(e);return n.length==r.length&&n.every(s=>t[s]==e[s])}});wn.languageData=mF;wn.changeFilter=gF;wn.transactionFilter=xF;wn.transactionExtender=vF;lb.reconfigure=Ft.define();function $o(t,e,n={}){let r={};for(let s of t)for(let i of Object.keys(s)){let a=s[i],l=r[i];if(l===void 0)r[i]=a;else if(!(l===a||a===void 0))if(Object.hasOwnProperty.call(n,i))r[i]=n[i](l,a);else throw new Error("Config merge conflict for field "+i)}for(let s in e)r[s]===void 0&&(r[s]=e[s]);return r}class sd{eq(e){return this==e}range(e,n=e){return Ck.create(e,n,this)}}sd.prototype.startSide=sd.prototype.endSide=0;sd.prototype.point=!1;sd.prototype.mapMode=Ds.TrackDel;let Ck=class SF{constructor(e,n,r){this.from=e,this.to=n,this.value=r}static create(e,n,r){return new SF(e,n,r)}};function Tk(t,e){return t.from-e.from||t.value.startSide-e.value.startSide}class t6{constructor(e,n,r,s){this.from=e,this.to=n,this.value=r,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(e,n,r,s=0){let i=r?this.to:this.from;for(let a=s,l=i.length;;){if(a==l)return a;let c=a+l>>1,d=i[c]-e||(r?this.value[c].endSide:this.value[c].startSide)-n;if(c==a)return d>=0?a:l;d>=0?l=c:a=c+1}}between(e,n,r,s){for(let i=this.findIndex(n,-1e9,!0),a=this.findIndex(r,1e9,!1,i);ix||g==x&&d.startSide>0&&d.endSide<=0)continue;(x-g||d.endSide-d.startSide)<0||(a<0&&(a=g),d.point&&(l=Math.max(l,x-g)),r.push(d),s.push(g-a),i.push(x-a))}return{mapped:r.length?new t6(s,i,r,l):null,pos:a}}}class Rn{constructor(e,n,r,s){this.chunkPos=e,this.chunk=n,this.nextLayer=r,this.maxPoint=s}static create(e,n,r,s){return new Rn(e,n,r,s)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let n of this.chunk)e+=n.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:n=[],sort:r=!1,filterFrom:s=0,filterTo:i=this.length}=e,a=e.filter;if(n.length==0&&!a)return this;if(r&&(n=n.slice().sort(Tk)),this.isEmpty)return n.length?Rn.of(n):this;let l=new kF(this,null,-1).goto(0),c=0,d=[],h=new ql;for(;l.value||c=0){let m=n[c++];h.addInner(m.from,m.to,m.value)||d.push(m)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||il.to||i=i&&e<=i+a.length&&a.between(i,e-i,n-i,r)===!1)return}this.nextLayer.between(e,n,r)}}iter(e=0){return F0.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,n=0){return F0.from(e).goto(n)}static compare(e,n,r,s,i=-1){let a=e.filter(m=>m.maxPoint>0||!m.isEmpty&&m.maxPoint>=i),l=n.filter(m=>m.maxPoint>0||!m.isEmpty&&m.maxPoint>=i),c=hE(a,l,r),d=new Fm(a,c,i),h=new Fm(l,c,i);r.iterGaps((m,g,x)=>fE(d,m,h,g,x,s)),r.empty&&r.length==0&&fE(d,0,h,0,0,s)}static eq(e,n,r=0,s){s==null&&(s=999999999);let i=e.filter(h=>!h.isEmpty&&n.indexOf(h)<0),a=n.filter(h=>!h.isEmpty&&e.indexOf(h)<0);if(i.length!=a.length)return!1;if(!i.length)return!0;let l=hE(i,a),c=new Fm(i,l,0).goto(r),d=new Fm(a,l,0).goto(r);for(;;){if(c.to!=d.to||!Ek(c.active,d.active)||c.point&&(!d.point||!c.point.eq(d.point)))return!1;if(c.to>s)return!0;c.next(),d.next()}}static spans(e,n,r,s,i=-1){let a=new Fm(e,null,i).goto(n),l=n,c=a.openStart;for(;;){let d=Math.min(a.to,r);if(a.point){let h=a.activeForPoint(a.to),m=a.pointFroml&&(s.span(l,d,a.active,c),c=a.openEnd(d));if(a.to>r)return c+(a.point&&a.to>r?1:0);l=a.to,a.next()}}static of(e,n=!1){let r=new ql;for(let s of e instanceof Ck?[e]:n?Qae(e):e)r.add(s.from,s.to,s.value);return r.finish()}static join(e){if(!e.length)return Rn.empty;let n=e[e.length-1];for(let r=e.length-2;r>=0;r--)for(let s=e[r];s!=Rn.empty;s=s.nextLayer)n=new Rn(s.chunkPos,s.chunk,n,Math.max(s.maxPoint,n.maxPoint));return n}}Rn.empty=new Rn([],[],null,-1);function Qae(t){if(t.length>1)for(let e=t[0],n=1;n0)return t.slice().sort(Tk);e=r}return t}Rn.empty.nextLayer=Rn.empty;class ql{finishChunk(e){this.chunks.push(new t6(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,n,r){this.addInner(e,n,r)||(this.nextLayer||(this.nextLayer=new ql)).add(e,n,r)}addInner(e,n,r){let s=e-this.lastTo||r.startSide-this.last.endSide;if(s<=0&&(e-this.lastFrom||r.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(n-this.chunkStart),this.last=r,this.lastFrom=e,this.lastTo=n,this.value.push(r),r.point&&(this.maxPoint=Math.max(this.maxPoint,n-e)),!0)}addChunk(e,n){if((e-this.lastTo||n.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,n.maxPoint),this.chunks.push(n),this.chunkPos.push(e);let r=n.value.length-1;return this.last=n.value[r],this.lastFrom=n.from[r]+e,this.lastTo=n.to[r]+e,!0}finish(){return this.finishInner(Rn.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let n=Rn.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,n}}function hE(t,e,n){let r=new Map;for(let i of t)for(let a=0;a=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=r&&s.push(new kF(a,n,r,i));return s.length==1?s[0]:new F0(s)}get startSide(){return this.value?this.value.startSide:0}goto(e,n=-1e9){for(let r of this.heap)r.goto(e,n);for(let r=this.heap.length>>1;r>=0;r--)R4(this.heap,r);return this.next(),this}forward(e,n){for(let r of this.heap)r.forward(e,n);for(let r=this.heap.length>>1;r>=0;r--)R4(this.heap,r);(this.to-e||this.value.endSide-n)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),R4(this.heap,0)}}}function R4(t,e){for(let n=t[e];;){let r=(e<<1)+1;if(r>=t.length)break;let s=t[r];if(r+1=0&&(s=t[r+1],r++),n.compare(s)<0)break;t[r]=n,t[e]=s,e=r}}class Fm{constructor(e,n,r){this.minPoint=r,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=F0.from(e,n,r)}goto(e,n=-1e9){return this.cursor.goto(e,n),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=n,this.openStart=-1,this.next(),this}forward(e,n){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-n)<0;)this.removeActive(this.minActive);this.cursor.forward(e,n)}removeActive(e){Jx(this.active,e),Jx(this.activeTo,e),Jx(this.activeRank,e),this.minActive=mE(this.active,this.activeTo)}addActive(e){let n=0,{value:r,to:s,rank:i}=this.cursor;for(;n0;)n++;e1(this.active,n,r),e1(this.activeTo,n,s),e1(this.activeRank,n,i),e&&e1(e,n,this.cursor.from),this.minActive=mE(this.active,this.activeTo)}next(){let e=this.to,n=this.point;this.point=null;let r=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>e){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),r&&Jx(r,s)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let i=this.cursor.value;if(!i.point)this.addActive(r),this.cursor.next();else if(n&&this.cursor.to==this.to&&this.cursor.from=0&&r[s]=0&&!(this.activeRank[r]e||this.activeTo[r]==e&&this.active[r].endSide>=this.point.endSide)&&n.push(this.active[r]);return n.reverse()}openEnd(e){let n=0;for(let r=this.activeTo.length-1;r>=0&&this.activeTo[r]>e;r--)n++;return n}}function fE(t,e,n,r,s,i){t.goto(e),n.goto(r);let a=r+s,l=r,c=r-e;for(;;){let d=t.to+c-n.to,h=d||t.endSide-n.endSide,m=h<0?t.to+c:n.to,g=Math.min(m,a);if(t.point||n.point?t.point&&n.point&&(t.point==n.point||t.point.eq(n.point))&&Ek(t.activeForPoint(t.to),n.activeForPoint(n.to))||i.comparePoint(l,g,t.point,n.point):g>l&&!Ek(t.active,n.active)&&i.compareRange(l,g,t.active,n.active),m>a)break;(d||t.openEnd!=n.openEnd)&&i.boundChange&&i.boundChange(m),l=m,h<=0&&t.next(),h>=0&&n.next()}}function Ek(t,e){if(t.length!=e.length)return!1;for(let n=0;n=e;r--)t[r+1]=t[r];t[e]=n}function mE(t,e){let n=-1,r=1e9;for(let s=0;s=e)return s;if(s==t.length)break;i+=t.charCodeAt(s)==9?n-i%n:1,s=zs(t,s)}return r===!0?-1:t.length}const Ak="ͼ",pE=typeof Symbol>"u"?"__"+Ak:Symbol.for(Ak),Mk=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),gE=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{};class Wc{constructor(e,n){this.rules=[];let{finish:r}=n||{};function s(a){return/^@/.test(a)?[a]:a.split(/,\s*/)}function i(a,l,c,d){let h=[],m=/^@(\w+)\b/.exec(a[0]),g=m&&m[1]=="keyframes";if(m&&l==null)return c.push(a[0]+";");for(let x in l){let y=l[x];if(/&/.test(x))i(x.split(/,\s*/).map(w=>a.map(S=>w.replace(/&/,S))).reduce((w,S)=>w.concat(S)),y,c);else if(y&&typeof y=="object"){if(!m)throw new RangeError("The value of a property ("+x+") should be a primitive value.");i(s(x),y,h,g)}else y!=null&&h.push(x.replace(/_.*/,"").replace(/[A-Z]/g,w=>"-"+w.toLowerCase())+": "+y+";")}(h.length||g)&&c.push((r&&!m&&!d?a.map(r):a).join(", ")+" {"+h.join(" ")+"}")}for(let a in e)i(s(a),e[a],this.rules)}getRules(){return this.rules.join(` +`)}static newName(){let e=gE[pE]||1;return gE[pE]=e+1,Ak+e.toString(36)}static mount(e,n,r){let s=e[Mk],i=r&&r.nonce;s?i&&s.setNonce(i):s=new Vae(e,i),s.mount(Array.isArray(n)?n:[n],e)}}let xE=new Map;class Vae{constructor(e,n){let r=e.ownerDocument||e,s=r.defaultView;if(!e.head&&e.adoptedStyleSheets&&s.CSSStyleSheet){let i=xE.get(r);if(i)return e[Mk]=i;this.sheet=new s.CSSStyleSheet,xE.set(r,this)}else this.styleTag=r.createElement("style"),n&&this.styleTag.setAttribute("nonce",n);this.modules=[],e[Mk]=this}mount(e,n){let r=this.sheet,s=0,i=0;for(let a=0;a-1&&(this.modules.splice(c,1),i--,c=-1),c==-1){if(this.modules.splice(i++,0,l),r)for(let d=0;d",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},Uae=typeof navigator<"u"&&/Mac/.test(navigator.platform),Wae=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(var Ms=0;Ms<10;Ms++)Gc[48+Ms]=Gc[96+Ms]=String(Ms);for(var Ms=1;Ms<=24;Ms++)Gc[Ms+111]="F"+Ms;for(var Ms=65;Ms<=90;Ms++)Gc[Ms]=String.fromCharCode(Ms+32),q0[Ms]=String.fromCharCode(Ms);for(var D4 in Gc)q0.hasOwnProperty(D4)||(q0[D4]=Gc[D4]);function Gae(t){var e=Uae&&t.metaKey&&t.shiftKey&&!t.ctrlKey&&!t.altKey||Wae&&t.shiftKey&&t.key&&t.key.length==1||t.key=="Unidentified",n=!e&&t.key||(t.shiftKey?q0:Gc)[t.keyCode]||t.key||"Unidentified";return n=="Esc"&&(n="Escape"),n=="Del"&&(n="Delete"),n=="Left"&&(n="ArrowLeft"),n=="Up"&&(n="ArrowUp"),n=="Right"&&(n="ArrowRight"),n=="Down"&&(n="ArrowDown"),n}function sr(){var t=arguments[0];typeof t=="string"&&(t=document.createElement(t));var e=1,n=arguments[1];if(n&&typeof n=="object"&&n.nodeType==null&&!Array.isArray(n)){for(var r in n)if(Object.prototype.hasOwnProperty.call(n,r)){var s=n[r];typeof s=="string"?t.setAttribute(r,s):s!=null&&(t[r]=s)}e++}for(;e2);var et={mac:yE||/Mac/.test(Zs.platform),windows:/Win/.test(Zs.platform),linux:/Linux|X11/.test(Zs.platform),ie:cb,ie_version:jF?Rk.documentMode||6:Pk?+Pk[1]:Dk?+Dk[1]:0,gecko:vE,gecko_version:vE?+(/Firefox\/(\d+)/.exec(Zs.userAgent)||[0,0])[1]:0,chrome:!!P4,chrome_version:P4?+P4[1]:0,ios:yE,android:/Android\b/.test(Zs.userAgent),webkit_version:Xae?+(/\bAppleWebKit\/(\d+)/.exec(Zs.userAgent)||[0,0])[1]:0,safari:zk,safari_version:zk?+(/\bVersion\/(\d+(\.\d+)?)/.exec(Zs.userAgent)||[0,0])[1]:0,tabSize:Rk.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function $0(t){let e;return t.nodeType==11?e=t.getSelection?t:t.ownerDocument:e=t,e.getSelection()}function Ik(t,e){return e?t==e||t.contains(e.nodeType!=1?e.parentNode:e):!1}function lv(t,e){if(!e.anchorNode)return!1;try{return Ik(t,e.anchorNode)}catch{return!1}}function Jh(t){return t.nodeType==3?ad(t,0,t.nodeValue.length).getClientRects():t.nodeType==1?t.getClientRects():[]}function S0(t,e,n,r){return n?bE(t,e,n,r,-1)||bE(t,e,n,r,1):!1}function id(t){for(var e=0;;e++)if(t=t.previousSibling,!t)return e}function Qv(t){return t.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(t.nodeName)}function bE(t,e,n,r,s){for(;;){if(t==n&&e==r)return!0;if(e==(s<0?0:Lo(t))){if(t.nodeName=="DIV")return!1;let i=t.parentNode;if(!i||i.nodeType!=1)return!1;e=id(t)+(s<0?0:1),t=i}else if(t.nodeType==1){if(t=t.childNodes[e+(s<0?-1:0)],t.nodeType==1&&t.contentEditable=="false")return!1;e=s<0?Lo(t):0}else return!1}}function Lo(t){return t.nodeType==3?t.nodeValue.length:t.childNodes.length}function qp(t,e){let n=e?t.left:t.right;return{left:n,right:n,top:t.top,bottom:t.bottom}}function Yae(t){let e=t.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:t.innerWidth,top:0,bottom:t.innerHeight}}function NF(t,e){let n=e.width/t.offsetWidth,r=e.height/t.offsetHeight;return(n>.995&&n<1.005||!isFinite(n)||Math.abs(e.width-t.offsetWidth)<1)&&(n=1),(r>.995&&r<1.005||!isFinite(r)||Math.abs(e.height-t.offsetHeight)<1)&&(r=1),{scaleX:n,scaleY:r}}function Kae(t,e,n,r,s,i,a,l){let c=t.ownerDocument,d=c.defaultView||window;for(let h=t,m=!1;h&&!m;)if(h.nodeType==1){let g,x=h==c.body,y=1,w=1;if(x)g=Yae(d);else{if(/^(fixed|sticky)$/.test(getComputedStyle(h).position)&&(m=!0),h.scrollHeight<=h.clientHeight&&h.scrollWidth<=h.clientWidth){h=h.assignedSlot||h.parentNode;continue}let j=h.getBoundingClientRect();({scaleX:y,scaleY:w}=NF(h,j)),g={left:j.left,right:j.left+h.clientWidth*y,top:j.top,bottom:j.top+h.clientHeight*w}}let S=0,k=0;if(s=="nearest")e.top0&&e.bottom>g.bottom+k&&(k=e.bottom-g.bottom+a)):e.bottom>g.bottom&&(k=e.bottom-g.bottom+a,n<0&&e.top-k0&&e.right>g.right+S&&(S=e.right-g.right+i)):e.right>g.right&&(S=e.right-g.right+i,n<0&&e.leftg.bottom||e.leftg.right)&&(e={left:Math.max(e.left,g.left),right:Math.min(e.right,g.right),top:Math.max(e.top,g.top),bottom:Math.min(e.bottom,g.bottom)}),h=h.assignedSlot||h.parentNode}else if(h.nodeType==11)h=h.host;else break}function Zae(t){let e=t.ownerDocument,n,r;for(let s=t.parentNode;s&&!(s==e.body||n&&r);)if(s.nodeType==1)!r&&s.scrollHeight>s.clientHeight&&(r=s),!n&&s.scrollWidth>s.clientWidth&&(n=s),s=s.assignedSlot||s.parentNode;else if(s.nodeType==11)s=s.host;else break;return{x:n,y:r}}class Jae{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:n,focusNode:r}=e;this.set(n,Math.min(e.anchorOffset,n?Lo(n):0),r,Math.min(e.focusOffset,r?Lo(r):0))}set(e,n,r,s){this.anchorNode=e,this.anchorOffset=n,this.focusNode=r,this.focusOffset=s}}let Iu=null;et.safari&&et.safari_version>=26&&(Iu=!1);function CF(t){if(t.setActive)return t.setActive();if(Iu)return t.focus(Iu);let e=[];for(let n=t;n&&(e.push(n,n.scrollTop,n.scrollLeft),n!=n.ownerDocument);n=n.parentNode);if(t.focus(Iu==null?{get preventScroll(){return Iu={preventScroll:!0},!0}}:void 0),!Iu){Iu=!1;for(let n=0;nMath.max(1,t.scrollHeight-t.clientHeight-4)}function _F(t,e){for(let n=t,r=e;;){if(n.nodeType==3&&r>0)return{node:n,offset:r};if(n.nodeType==1&&r>0){if(n.contentEditable=="false")return null;n=n.childNodes[r-1],r=Lo(n)}else if(n.parentNode&&!Qv(n))r=id(n),n=n.parentNode;else return null}}function AF(t,e){for(let n=t,r=e;;){if(n.nodeType==3&&rn)return m.domBoundsAround(e,n,d);if(g>=e&&s==-1&&(s=c,i=d),d>n&&m.dom.parentNode==this.dom){a=c,l=h;break}h=g,d=g+m.breakAfter}return{from:i,to:l<0?r+this.length:l,startDOM:(s?this.children[s-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:a=0?this.children[a].dom:null}}markDirty(e=!1){this.flags|=2,this.markParentsDirty(e)}markParentsDirty(e){for(let n=this.parent;n;n=n.parent){if(e&&(n.flags|=2),n.flags&1)return;n.flags|=1,e=!1}}setParent(e){this.parent!=e&&(this.parent=e,this.flags&7&&this.markParentsDirty(!0))}setDOM(e){this.dom!=e&&(this.dom&&(this.dom.cmView=null),this.dom=e,e.cmView=this)}get rootView(){for(let e=this;;){let n=e.parent;if(!n)return e;e=n}}replaceChildren(e,n,r=n6){this.markDirty();for(let s=e;sthis.pos||e==this.pos&&(n>0||this.i==0||this.children[this.i-1].breakAfter))return this.off=e-this.pos,this;let r=this.children[--this.i];this.pos-=r.length+r.breakAfter}}}function RF(t,e,n,r,s,i,a,l,c){let{children:d}=t,h=d.length?d[e]:null,m=i.length?i[i.length-1]:null,g=m?m.breakAfter:a;if(!(e==r&&h&&!a&&!g&&i.length<2&&h.merge(n,s,i.length?m:null,n==0,l,c))){if(r0&&(!a&&i.length&&h.merge(n,h.length,i[0],!1,l,0)?h.breakAfter=i.shift().breakAfter:(nnoe||r.flags&8)?!1:(this.text=this.text.slice(0,e)+(r?r.text:"")+this.text.slice(n),this.markDirty(),!0)}split(e){let n=new Ya(this.text.slice(e));return this.text=this.text.slice(0,e),this.markDirty(),n.flags|=this.flags&8,n}localPosFromDOM(e,n){return e==this.dom?n:n?this.text.length:0}domAtPos(e){return new Qs(this.dom,e)}domBoundsAround(e,n,r){return{from:r,to:r+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(e,n){return roe(this.dom,e,n)}}class $l extends er{constructor(e,n=[],r=0){super(),this.mark=e,this.children=n,this.length=r;for(let s of n)s.setParent(this)}setAttrs(e){if(TF(e),this.mark.class&&(e.className=this.mark.class),this.mark.attrs)for(let n in this.mark.attrs)e.setAttribute(n,this.mark.attrs[n]);return e}canReuseDOM(e){return super.canReuseDOM(e)&&!((this.flags|e.flags)&8)}reuseDOM(e){e.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(e),this.flags|=6)}sync(e,n){this.dom?this.flags&4&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(e,n)}merge(e,n,r,s,i,a){return r&&(!(r instanceof $l&&r.mark.eq(this.mark))||e&&i<=0||ne&&n.push(r=e&&(s=i),r=c,i++}let a=this.length-e;return this.length=e,s>-1&&(this.children.length=s,this.markDirty()),new $l(this.mark,n,a)}domAtPos(e){return PF(this,e)}coordsAt(e,n){return IF(this,e,n)}}function roe(t,e,n){let r=t.nodeValue.length;e>r&&(e=r);let s=e,i=e,a=0;e==0&&n<0||e==r&&n>=0?et.chrome||et.gecko||(e?(s--,a=1):i=0)?0:l.length-1];return et.safari&&!a&&c.width==0&&(c=Array.prototype.find.call(l,d=>d.width)||c),a?qp(c,a<0):c||null}class Al extends er{static create(e,n,r){return new Al(e,n,r)}constructor(e,n,r){super(),this.widget=e,this.length=n,this.side=r,this.prevWidget=null}split(e){let n=Al.create(this.widget,this.length-e,this.side);return this.length-=e,n}sync(e){(!this.dom||!this.widget.updateDOM(this.dom,e))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(e)),this.widget.editable||(this.dom.contentEditable="false"))}getSide(){return this.side}merge(e,n,r,s,i,a){return r&&(!(r instanceof Al)||!this.widget.compare(r.widget)||e>0&&i<=0||n0)?Qs.before(this.dom):Qs.after(this.dom,e==this.length)}domBoundsAround(){return null}coordsAt(e,n){let r=this.widget.coordsAt(this.dom,e,n);if(r)return r;let s=this.dom.getClientRects(),i=null;if(!s.length)return null;let a=this.side?this.side<0:e>0;for(let l=a?s.length-1:0;i=s[l],!(e>0?l==0:l==s.length-1||i.top0?Qs.before(this.dom):Qs.after(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(e){return this.dom.getBoundingClientRect()}get overrideDOMText(){return jn.empty}get isHidden(){return!0}}Ya.prototype.children=Al.prototype.children=ef.prototype.children=n6;function PF(t,e){let n=t.dom,{children:r}=t,s=0;for(let i=0;si&&e0;i--){let a=r[i-1];if(a.dom.parentNode==n)return a.domAtPos(a.length)}for(let i=s;i0&&e instanceof $l&&s.length&&(r=s[s.length-1])instanceof $l&&r.mark.eq(e.mark)?zF(r,e.children[0],n-1):(s.push(e),e.setParent(t)),t.length+=e.length}function IF(t,e,n){let r=null,s=-1,i=null,a=-1;function l(d,h){for(let m=0,g=0;m=h&&(x.children.length?l(x,h-g):(!i||i.isHidden&&(n>0||ioe(i,x)))&&(y>h||g==y&&x.getSide()>0)?(i=x,a=h-g):(g-1?1:0)!=s.length-(n&&s.indexOf(n)>-1?1:0))return!1;for(let i of r)if(i!=n&&(s.indexOf(i)==-1||t[i]!==e[i]))return!1;return!0}function Bk(t,e,n){let r=!1;if(e)for(let s in e)n&&s in n||(r=!0,s=="style"?t.style.cssText="":t.removeAttribute(s));if(n)for(let s in n)e&&e[s]==n[s]||(r=!0,s=="style"?t.style.cssText=n[s]:t.setAttribute(s,n[s]));return r}function aoe(t){let e=Object.create(null);for(let n=0;n0?3e8:-4e8:n>0?1e8:-1e8,new Xc(e,n,n,r,e.widget||null,!1)}static replace(e){let n=!!e.block,r,s;if(e.isBlockGap)r=-5e8,s=4e8;else{let{start:i,end:a}=LF(e,n);r=(i?n?-3e8:-1:5e8)-1,s=(a?n?2e8:1:-6e8)+1}return new Xc(e,r,s,n,e.widget||null,!0)}static line(e){return new Hp(e)}static set(e,n=!1){return Rn.of(e,n)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}}kt.none=Rn.empty;class $p extends kt{constructor(e){let{start:n,end:r}=LF(e);super(n?-1:5e8,r?1:-6e8,null,e),this.tagName=e.tagName||"span",this.class=e.class||"",this.attrs=e.attributes||null}eq(e){var n,r;return this==e||e instanceof $p&&this.tagName==e.tagName&&(this.class||((n=this.attrs)===null||n===void 0?void 0:n.class))==(e.class||((r=e.attrs)===null||r===void 0?void 0:r.class))&&Vv(this.attrs,e.attrs,"class")}range(e,n=e){if(e>=n)throw new RangeError("Mark decorations may not be empty");return super.range(e,n)}}$p.prototype.point=!1;class Hp extends kt{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof Hp&&this.spec.class==e.spec.class&&Vv(this.spec.attributes,e.spec.attributes)}range(e,n=e){if(n!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,n)}}Hp.prototype.mapMode=Ds.TrackBefore;Hp.prototype.point=!0;class Xc extends kt{constructor(e,n,r,s,i,a){super(n,r,i,e),this.block=s,this.isReplace=a,this.mapMode=s?n<=0?Ds.TrackBefore:Ds.TrackAfter:Ds.TrackDel}get type(){return this.startSide!=this.endSide?ni.WidgetRange:this.startSide<=0?ni.WidgetBefore:ni.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof Xc&&ooe(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,n=e){if(this.isReplace&&(e>n||e==n&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&n!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,n)}}Xc.prototype.point=!0;function LF(t,e=!1){let{inclusiveStart:n,inclusiveEnd:r}=t;return n==null&&(n=t.inclusive),r==null&&(r=t.inclusive),{start:n??e,end:r??e}}function ooe(t,e){return t==e||!!(t&&e&&t.compare(e))}function cv(t,e,n,r=0){let s=n.length-1;s>=0&&n[s]+r>=t?n[s]=Math.max(n[s],e):n.push(t,e)}class es extends er{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(e,n,r,s,i,a){if(r){if(!(r instanceof es))return!1;this.dom||r.transferDOM(this)}return s&&this.setDeco(r?r.attrs:null),DF(this,e,n,r?r.children.slice():[],i,a),!0}split(e){let n=new es;if(n.breakAfter=this.breakAfter,this.length==0)return n;let{i:r,off:s}=this.childPos(e);s&&(n.append(this.children[r].split(s),0),this.children[r].merge(s,this.children[r].length,null,!1,0,0),r++);for(let i=r;i0&&this.children[r-1].length==0;)this.children[--r].destroy();return this.children.length=r,this.markDirty(),this.length=e,n}transferDOM(e){this.dom&&(this.markDirty(),e.setDOM(this.dom),e.prevAttrs=this.prevAttrs===void 0?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(e){Vv(this.attrs,e)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=e)}append(e,n){zF(this,e,n)}addLineDeco(e){let n=e.spec.attributes,r=e.spec.class;n&&(this.attrs=Lk(n,this.attrs||{})),r&&(this.attrs=Lk({class:r},this.attrs||{}))}domAtPos(e){return PF(this,e)}reuseDOM(e){e.nodeName=="DIV"&&(this.setDOM(e),this.flags|=6)}sync(e,n){var r;this.dom?this.flags&4&&(TF(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),this.prevAttrs!==void 0&&(Bk(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(e,n);let s=this.dom.lastChild;for(;s&&er.get(s)instanceof $l;)s=s.lastChild;if(!s||!this.length||s.nodeName!="BR"&&((r=er.get(s))===null||r===void 0?void 0:r.isEditable)==!1&&(!et.ios||!this.children.some(i=>i instanceof Ya))){let i=document.createElement("BR");i.cmIgnore=!0,this.dom.appendChild(i)}}measureTextSize(){if(this.children.length==0||this.length>20)return null;let e=0,n;for(let r of this.children){if(!(r instanceof Ya)||/[^ -~]/.test(r.text))return null;let s=Jh(r.dom);if(s.length!=1)return null;e+=s[0].width,n=s[0].height}return e?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length,textHeight:n}:null}coordsAt(e,n){let r=IF(this,e,n);if(!this.children.length&&r&&this.parent){let{heightOracle:s}=this.parent.view.viewState,i=r.bottom-r.top;if(Math.abs(i-s.lineHeight)<2&&s.textHeight=n){if(i instanceof es)return i;if(a>n)break}s=a+i.breakAfter}return null}}class Il extends er{constructor(e,n,r){super(),this.widget=e,this.length=n,this.deco=r,this.breakAfter=0,this.prevWidget=null}merge(e,n,r,s,i,a){return r&&(!(r instanceof Il)||!this.widget.compare(r.widget)||e>0&&i<=0||n0}}class Fk extends Ho{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}}class k0{constructor(e,n,r,s){this.doc=e,this.pos=n,this.end=r,this.disallowBlockEffectsFor=s,this.content=[],this.curLine=null,this.breakAtStart=0,this.pendingBuffer=0,this.bufferMarks=[],this.atCursorPos=!0,this.openStart=-1,this.openEnd=-1,this.text="",this.textOff=0,this.cursor=e.iter(),this.skip=n}posCovered(){if(this.content.length==0)return!this.breakAtStart&&this.doc.lineAt(this.pos).from!=this.pos;let e=this.content[this.content.length-1];return!(e.breakAfter||e instanceof Il&&e.deco.endSide<0)}getLine(){return this.curLine||(this.content.push(this.curLine=new es),this.atCursorPos=!0),this.curLine}flushBuffer(e=this.bufferMarks){this.pendingBuffer&&(this.curLine.append(t1(new ef(-1),e),e.length),this.pendingBuffer=0)}addBlockWidget(e){this.flushBuffer(),this.curLine=null,this.content.push(e)}finish(e){this.pendingBuffer&&e<=this.bufferMarks.length?this.flushBuffer():this.pendingBuffer=0,!this.posCovered()&&!(e&&this.content.length&&this.content[this.content.length-1]instanceof Il)&&this.getLine()}buildText(e,n,r){for(;e>0;){if(this.textOff==this.text.length){let{value:a,lineBreak:l,done:c}=this.cursor.next(this.skip);if(this.skip=0,c)throw new Error("Ran out of text content when drawing inline views");if(l){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer(),this.curLine=null,this.atCursorPos=!0,e--;continue}else this.text=a,this.textOff=0}let s=Math.min(this.text.length-this.textOff,e),i=Math.min(s,512);this.flushBuffer(n.slice(n.length-r)),this.getLine().append(t1(new Ya(this.text.slice(this.textOff,this.textOff+i)),n),r),this.atCursorPos=!0,this.textOff+=i,e-=i,r=s<=i?0:n.length}}span(e,n,r,s){this.buildText(n-e,r,s),this.pos=n,this.openStart<0&&(this.openStart=s)}point(e,n,r,s,i,a){if(this.disallowBlockEffectsFor[a]&&r instanceof Xc){if(r.block)throw new RangeError("Block decorations may not be specified via plugins");if(n>this.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}let l=n-e;if(r instanceof Xc)if(r.block)r.startSide>0&&!this.posCovered()&&this.getLine(),this.addBlockWidget(new Il(r.widget||tf.block,l,r));else{let c=Al.create(r.widget||tf.inline,l,l?0:r.startSide),d=this.atCursorPos&&!c.isEditable&&i<=s.length&&(e0),h=!c.isEditable&&(es.length||r.startSide<=0),m=this.getLine();this.pendingBuffer==2&&!d&&!c.isEditable&&(this.pendingBuffer=0),this.flushBuffer(s),d&&(m.append(t1(new ef(1),s),i),i=s.length+Math.max(0,i-s.length)),m.append(t1(c,s),i),this.atCursorPos=h,this.pendingBuffer=h?es.length?1:2:0,this.pendingBuffer&&(this.bufferMarks=s.slice())}else this.doc.lineAt(this.pos).from==this.pos&&this.getLine().addLineDeco(r);l&&(this.textOff+l<=this.text.length?this.textOff+=l:(this.skip+=l-(this.text.length-this.textOff),this.text="",this.textOff=0),this.pos=n),this.openStart<0&&(this.openStart=i)}static build(e,n,r,s,i){let a=new k0(e,n,r,i);return a.openEnd=Rn.spans(s,n,r,a),a.openStart<0&&(a.openStart=a.openEnd),a.finish(a.openEnd),a}}function t1(t,e){for(let n of e)t=new $l(n,[t],t.length);return t}class tf extends Ho{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}}tf.inline=new tf("span");tf.block=new tf("div");var gr=(function(t){return t[t.LTR=0]="LTR",t[t.RTL=1]="RTL",t})(gr||(gr={}));const od=gr.LTR,r6=gr.RTL;function BF(t){let e=[];for(let n=0;n=n){if(l.level==r)return a;(i<0||(s!=0?s<0?l.fromn:e[i].level>l.level))&&(i=a)}}if(i<0)throw new RangeError("Index out of range");return i}}function qF(t,e){if(t.length!=e.length)return!1;for(let n=0;n=0;w-=3)if(ho[w+1]==-x){let S=ho[w+2],k=S&2?s:S&4?S&1?i:s:0;k&&(ir[m]=ir[ho[w]]=k),l=w;break}}else{if(ho.length==189)break;ho[l++]=m,ho[l++]=g,ho[l++]=c}else if((y=ir[m])==2||y==1){let w=y==s;c=w?0:1;for(let S=l-3;S>=0;S-=3){let k=ho[S+2];if(k&2)break;if(w)ho[S+2]|=2;else{if(k&4)break;ho[S+2]|=4}}}}}function foe(t,e,n,r){for(let s=0,i=r;s<=n.length;s++){let a=s?n[s-1].to:t,l=sc;)y==S&&(y=n[--w].from,S=w?n[w-1].to:t),ir[--y]=x;c=h}else i=d,c++}}}function $k(t,e,n,r,s,i,a){let l=r%2?2:1;if(r%2==s%2)for(let c=e,d=0;cc&&a.push(new Fc(c,w.from,x));let S=w.direction==od!=!(x%2);Hk(t,S?r+1:r,s,w.inner,w.from,w.to,a),c=w.to}y=w.to}else{if(y==n||(h?ir[y]!=l:ir[y]==l))break;y++}g?$k(t,c,y,r+1,s,g,a):ce;){let h=!0,m=!1;if(!d||c>i[d-1].to){let w=ir[c-1];w!=l&&(h=!1,m=w==16)}let g=!h&&l==1?[]:null,x=h?r:r+1,y=c;e:for(;;)if(d&&y==i[d-1].to){if(m)break e;let w=i[--d];if(!h)for(let S=w.from,k=d;;){if(S==e)break e;if(k&&i[k-1].to==S)S=i[--k].from;else{if(ir[S-1]==l)break e;break}}if(g)g.push(w);else{w.toir.length;)ir[ir.length]=256;let r=[],s=e==od?0:1;return Hk(t,s,s,n,0,t.length,r),r}function $F(t){return[new Fc(0,t,0)]}let HF="";function poe(t,e,n,r,s){var i;let a=r.head-t.from,l=Fc.find(e,a,(i=r.bidiLevel)!==null&&i!==void 0?i:-1,r.assoc),c=e[l],d=c.side(s,n);if(a==d){let g=l+=s?1:-1;if(g<0||g>=e.length)return null;c=e[l=g],a=c.side(!s,n),d=c.side(s,n)}let h=zs(t.text,a,c.forward(s,n));(hc.to)&&(h=d),HF=t.text.slice(Math.min(a,h),Math.max(a,h));let m=l==(s?e.length-1:0)?null:e[l+(s?1:-1)];return m&&h==d&&m.level+(s?0:1)t.some(e=>e)}),KF=at.define({combine:t=>t.some(e=>e)}),ZF=at.define();class zh{constructor(e,n="nearest",r="nearest",s=5,i=5,a=!1){this.range=e,this.y=n,this.x=r,this.yMargin=s,this.xMargin=i,this.isSnapshot=a}map(e){return e.empty?this:new zh(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new zh(Me.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}}const n1=Ft.define({map:(t,e)=>t.map(e)}),JF=Ft.define();function vi(t,e,n){let r=t.facet(WF);r.length?r[0](e):window.onerror&&window.onerror(String(e),n,void 0,void 0,e)||(n?console.error(n+":",e):console.error(e))}const El=at.define({combine:t=>t.length?t[0]:!0});let xoe=0;const Nh=at.define({combine(t){return t.filter((e,n)=>{for(let r=0;r{let c=[];return a&&c.push(H0.of(d=>{let h=d.plugin(l);return h?a(h):kt.none})),i&&c.push(i(l)),c})}static fromClass(e,n){return Vr.define((r,s)=>new e(r,s),n)}}class z4{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(e){if(this.value){if(this.mustUpdate){let n=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(n)}catch(r){if(vi(n.state,r,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg)}catch(n){vi(e.state,n,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var n;if(!((n=this.value)===null||n===void 0)&&n.destroy)try{this.value.destroy()}catch(r){vi(e.state,r,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const eq=at.define(),a6=at.define(),H0=at.define(),tq=at.define(),Qp=at.define(),nq=at.define();function OE(t,e){let n=t.state.facet(nq);if(!n.length)return n;let r=n.map(i=>i instanceof Function?i(t):i),s=[];return Rn.spans(r,e.from,e.to,{point(){},span(i,a,l,c){let d=i-e.from,h=a-e.from,m=s;for(let g=l.length-1;g>=0;g--,c--){let x=l[g].spec.bidiIsolate,y;if(x==null&&(x=goe(e.text,d,h)),c>0&&m.length&&(y=m[m.length-1]).to==d&&y.direction==x)y.to=h,m=y.inner;else{let w={from:d,to:h,direction:x,inner:[]};m.push(w),m=w.inner}}}}),s}const rq=at.define();function o6(t){let e=0,n=0,r=0,s=0;for(let i of t.state.facet(rq)){let a=i(t);a&&(a.left!=null&&(e=Math.max(e,a.left)),a.right!=null&&(n=Math.max(n,a.right)),a.top!=null&&(r=Math.max(r,a.top)),a.bottom!=null&&(s=Math.max(s,a.bottom)))}return{left:e,right:n,top:r,bottom:s}}const o0=at.define();class Na{constructor(e,n,r,s){this.fromA=e,this.toA=n,this.fromB=r,this.toB=s}join(e){return new Na(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let n=e.length,r=this;for(;n>0;n--){let s=e[n-1];if(!(s.fromA>r.toA)){if(s.toAh)break;i+=2}if(!c)return r;new Na(c.fromA,c.toA,c.fromB,c.toB).addToSet(r),a=c.toA,l=c.toB}}}class Uv{constructor(e,n,r){this.view=e,this.state=n,this.transactions=r,this.flags=0,this.startState=e.state,this.changes=us.empty(this.startState.doc.length);for(let i of r)this.changes=this.changes.compose(i.changes);let s=[];this.changes.iterChangedRanges((i,a,l,c)=>s.push(new Na(i,a,l,c))),this.changedRanges=s}static create(e,n,r){return new Uv(e,n,r)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}}class jE extends er{get length(){return this.view.state.doc.length}constructor(e){super(),this.view=e,this.decorations=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.markedForComposition=new Set,this.editContextFormatting=kt.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(e.contentDOM),this.children=[new es],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new Na(0,0,0,e.state.doc.length)],0,null)}update(e){var n;let r=e.changedRanges;this.minWidth>0&&r.length&&(r.every(({fromA:d,toA:h})=>hthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((n=this.domChanged)===null||n===void 0)&&n.newSel?s=this.domChanged.newSel.head:!Ooe(e.changes,this.hasComposition)&&!e.selectionSet&&(s=e.state.selection.main.head));let i=s>-1?yoe(this.view,e.changes,s):null;if(this.domChanged=null,this.hasComposition){this.markedForComposition.clear();let{from:d,to:h}=this.hasComposition;r=new Na(d,h,e.changes.mapPos(d,-1),e.changes.mapPos(h,1)).addToSet(r.slice())}this.hasComposition=i?{from:i.range.fromB,to:i.range.toB}:null,(et.ie||et.chrome)&&!i&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let a=this.decorations,l=this.updateDeco(),c=Soe(a,l,e.changes);return r=Na.extendWithRanges(r,c),!(this.flags&7)&&r.length==0?!1:(this.updateInner(r,e.startState.doc.length,i),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,n,r){this.view.viewState.mustMeasureContent=!0,this.updateChildren(e,n,r);let{observer:s}=this.view;s.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let a=et.chrome||et.ios?{node:s.selectionRange.focusNode,written:!1}:void 0;this.sync(this.view,a),this.flags&=-8,a&&(a.written||s.selectionRange.focusNode!=a.node)&&(this.forceSelection=!0),this.dom.style.height=""}),this.markedForComposition.forEach(a=>a.flags&=-9);let i=[];if(this.view.viewport.from||this.view.viewport.to=0?s[a]:null;if(!l)break;let{fromA:c,toA:d,fromB:h,toB:m}=l,g,x,y,w;if(r&&r.range.fromBh){let T=k0.build(this.view.state.doc,h,r.range.fromB,this.decorations,this.dynamicDecorationMap),E=k0.build(this.view.state.doc,r.range.toB,m,this.decorations,this.dynamicDecorationMap);x=T.breakAtStart,y=T.openStart,w=E.openEnd;let _=this.compositionView(r);E.breakAtStart?_.breakAfter=1:E.content.length&&_.merge(_.length,_.length,E.content[0],!1,E.openStart,0)&&(_.breakAfter=E.content[0].breakAfter,E.content.shift()),T.content.length&&_.merge(0,0,T.content[T.content.length-1],!0,0,T.openEnd)&&T.content.pop(),g=T.content.concat(_).concat(E.content)}else({content:g,breakAtStart:x,openStart:y,openEnd:w}=k0.build(this.view.state.doc,h,m,this.decorations,this.dynamicDecorationMap));let{i:S,off:k}=i.findPos(d,1),{i:j,off:N}=i.findPos(c,-1);RF(this,j,N,S,k,g,x,y,w)}r&&this.fixCompositionDOM(r)}updateEditContextFormatting(e){this.editContextFormatting=this.editContextFormatting.map(e.changes);for(let n of e.transactions)for(let r of n.effects)r.is(JF)&&(this.editContextFormatting=r.value)}compositionView(e){let n=new Ya(e.text.nodeValue);n.flags|=8;for(let{deco:s}of e.marks)n=new $l(s,[n],n.length);let r=new es;return r.append(n,0),r}fixCompositionDOM(e){let n=(i,a)=>{a.flags|=8|(a.children.some(c=>c.flags&7)?1:0),this.markedForComposition.add(a);let l=er.get(i);l&&l!=a&&(l.dom=null),a.setDOM(i)},r=this.childPos(e.range.fromB,1),s=this.children[r.i];n(e.line,s);for(let i=e.marks.length-1;i>=-1;i--)r=s.childPos(r.off,1),s=s.children[r.i],n(i>=0?e.marks[i].node:e.text,s)}updateSelection(e=!1,n=!1){(e||!this.view.observer.selectionRange.focusNode)&&this.view.observer.readSelectionRange();let r=this.view.root.activeElement,s=r==this.dom,i=!s&&!(this.view.state.facet(El)||this.dom.tabIndex>-1)&&lv(this.dom,this.view.observer.selectionRange)&&!(r&&this.dom.contains(r));if(!(s||n||i))return;let a=this.forceSelection;this.forceSelection=!1;let l=this.view.state.selection.main,c=this.moveToLine(this.domAtPos(l.anchor)),d=l.empty?c:this.moveToLine(this.domAtPos(l.head));if(et.gecko&&l.empty&&!this.hasComposition&&voe(c)){let m=document.createTextNode("");this.view.observer.ignore(()=>c.node.insertBefore(m,c.node.childNodes[c.offset]||null)),c=d=new Qs(m,0),a=!0}let h=this.view.observer.selectionRange;(a||!h.focusNode||(!S0(c.node,c.offset,h.anchorNode,h.anchorOffset)||!S0(d.node,d.offset,h.focusNode,h.focusOffset))&&!this.suppressWidgetCursorChange(h,l))&&(this.view.observer.ignore(()=>{et.android&&et.chrome&&this.dom.contains(h.focusNode)&&koe(h.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let m=$0(this.view.root);if(m)if(l.empty){if(et.gecko){let g=boe(c.node,c.offset);if(g&&g!=3){let x=(g==1?_F:AF)(c.node,c.offset);x&&(c=new Qs(x.node,x.offset))}}m.collapse(c.node,c.offset),l.bidiLevel!=null&&m.caretBidiLevel!==void 0&&(m.caretBidiLevel=l.bidiLevel)}else if(m.extend){m.collapse(c.node,c.offset);try{m.extend(d.node,d.offset)}catch{}}else{let g=document.createRange();l.anchor>l.head&&([c,d]=[d,c]),g.setEnd(d.node,d.offset),g.setStart(c.node,c.offset),m.removeAllRanges(),m.addRange(g)}i&&this.view.root.activeElement==this.dom&&(this.dom.blur(),r&&r.focus())}),this.view.observer.setSelectionRange(c,d)),this.impreciseAnchor=c.precise?null:new Qs(h.anchorNode,h.anchorOffset),this.impreciseHead=d.precise?null:new Qs(h.focusNode,h.focusOffset)}suppressWidgetCursorChange(e,n){return this.hasComposition&&n.empty&&S0(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==n.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,n=e.state.selection.main,r=$0(e.root),{anchorNode:s,anchorOffset:i}=e.observer.selectionRange;if(!r||!n.empty||!n.assoc||!r.modify)return;let a=es.find(this,n.head);if(!a)return;let l=a.posAtStart;if(n.head==l||n.head==l+a.length)return;let c=this.coordsAt(n.head,-1),d=this.coordsAt(n.head,1);if(!c||!d||c.bottom>d.top)return;let h=this.domAtPos(n.head+n.assoc);r.collapse(h.node,h.offset),r.modify("move",n.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let m=e.observer.selectionRange;e.docView.posFromDOM(m.anchorNode,m.anchorOffset)!=n.from&&r.collapse(s,i)}moveToLine(e){let n=this.dom,r;if(e.node!=n)return e;for(let s=e.offset;!r&&s=0;s--){let i=er.get(n.childNodes[s]);i instanceof es&&(r=i.domAtPos(i.length))}return r?new Qs(r.node,r.offset,!0):e}nearest(e){for(let n=e;n;){let r=er.get(n);if(r&&r.rootView==this)return r;n=n.parentNode}return null}posFromDOM(e,n){let r=this.nearest(e);if(!r)throw new RangeError("Trying to find position for a DOM position outside of the document");return r.localPosFromDOM(e,n)+r.posAtStart}domAtPos(e){let{i:n,off:r}=this.childCursor().findPos(e,-1);for(;n=0;a--){let l=this.children[a],c=i-l.breakAfter,d=c-l.length;if(ce||l.covers(1))&&(!r||l instanceof es&&!(r instanceof es&&n>=0)))r=l,s=d;else if(r&&d==e&&c==e&&l instanceof Il&&Math.abs(n)<2){if(l.deco.startSide<0)break;a&&(r=null)}i=d}return r?r.coordsAt(e-s,n):null}coordsForChar(e){let{i:n,off:r}=this.childPos(e,1),s=this.children[n];if(!(s instanceof es))return null;for(;s.children.length;){let{i:l,off:c}=s.childPos(r,1);for(;;l++){if(l==s.children.length)return null;if((s=s.children[l]).length)break}r=c}if(!(s instanceof Ya))return null;let i=zs(s.text,r);if(i==r)return null;let a=ad(s.dom,r,i).getClientRects();for(let l=0;lMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,c=this.view.textDirection==gr.LTR;for(let d=0,h=0;hs)break;if(d>=r){let x=m.dom.getBoundingClientRect();if(n.push(x.height),a){let y=m.dom.lastChild,w=y?Jh(y):[];if(w.length){let S=w[w.length-1],k=c?S.right-x.left:x.right-S.left;k>l&&(l=k,this.minWidth=i,this.minWidthFrom=d,this.minWidthTo=g)}}}d=g+m.breakAfter}return n}textDirectionAt(e){let{i:n}=this.childPos(e,1);return getComputedStyle(this.children[n].dom).direction=="rtl"?gr.RTL:gr.LTR}measureTextSize(){for(let i of this.children)if(i instanceof es){let a=i.measureTextSize();if(a)return a}let e=document.createElement("div"),n,r,s;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.dom.appendChild(e);let i=Jh(e.firstChild)[0];n=e.getBoundingClientRect().height,r=i?i.width/27:7,s=i?i.height:n,e.remove()}),{lineHeight:n,charWidth:r,textHeight:s}}childCursor(e=this.length){let n=this.children.length;return n&&(e-=this.children[--n].length),new MF(this.children,e,n)}computeBlockGapDeco(){let e=[],n=this.view.viewState;for(let r=0,s=0;;s++){let i=s==n.viewports.length?null:n.viewports[s],a=i?i.from-1:this.length;if(a>r){let l=(n.lineBlockAt(a).bottom-n.lineBlockAt(r).top)/this.view.scaleY;e.push(kt.replace({widget:new Fk(l),block:!0,inclusive:!0,isBlockGap:!0}).range(r,a))}if(!i)break;r=i.to+1}return kt.set(e)}updateDeco(){let e=1,n=this.view.state.facet(H0).map(i=>(this.dynamicDecorationMap[e++]=typeof i=="function")?i(this.view):i),r=!1,s=this.view.state.facet(tq).map((i,a)=>{let l=typeof i=="function";return l&&(r=!0),l?i(this.view):i});for(s.length&&(this.dynamicDecorationMap[e++]=r,n.push(Rn.join(s))),this.decorations=[this.editContextFormatting,...n,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];en.anchor?-1:1),s;if(!r)return;!n.empty&&(s=this.coordsAt(n.anchor,n.anchor>n.head?-1:1))&&(r={left:Math.min(r.left,s.left),top:Math.min(r.top,s.top),right:Math.max(r.right,s.right),bottom:Math.max(r.bottom,s.bottom)});let i=o6(this.view),a={left:r.left-i.left,top:r.top-i.top,right:r.right+i.right,bottom:r.bottom+i.bottom},{offsetWidth:l,offsetHeight:c}=this.view.scrollDOM;Kae(this.view.scrollDOM,a,n.heads instanceof Al||s.children.some(r);return r(this.children[n])}}function voe(t){return t.node.nodeType==1&&t.node.firstChild&&(t.offset==0||t.node.childNodes[t.offset-1].contentEditable=="false")&&(t.offset==t.node.childNodes.length||t.node.childNodes[t.offset].contentEditable=="false")}function sq(t,e){let n=t.observer.selectionRange;if(!n.focusNode)return null;let r=_F(n.focusNode,n.focusOffset),s=AF(n.focusNode,n.focusOffset),i=r||s;if(s&&r&&s.node!=r.node){let l=er.get(s.node);if(!l||l instanceof Ya&&l.text!=s.node.nodeValue)i=s;else if(t.docView.lastCompositionAfterCursor){let c=er.get(r.node);!c||c instanceof Ya&&c.text!=r.node.nodeValue||(i=s)}}if(t.docView.lastCompositionAfterCursor=i!=r,!i)return null;let a=e-i.offset;return{from:a,to:a+i.node.nodeValue.length,node:i.node}}function yoe(t,e,n){let r=sq(t,n);if(!r)return null;let{node:s,from:i,to:a}=r,l=s.nodeValue;if(/[\n\r]/.test(l)||t.state.doc.sliceString(r.from,r.to)!=l)return null;let c=e.invertedDesc,d=new Na(c.mapPos(i),c.mapPos(a),i,a),h=[];for(let m=s.parentNode;;m=m.parentNode){let g=er.get(m);if(g instanceof $l)h.push({node:m,deco:g.mark});else{if(g instanceof es||m.nodeName=="DIV"&&m.parentNode==t.contentDOM)return{range:d,text:s,marks:h,line:m};if(m!=t.contentDOM)h.push({node:m,deco:new $p({inclusive:!0,attributes:aoe(m),tagName:m.tagName.toLowerCase()})});else return null}}}function boe(t,e){return t.nodeType!=1?0:(e&&t.childNodes[e-1].contentEditable=="false"?1:0)|(e{re.from&&(n=!0)}),n}function joe(t,e,n=1){let r=t.charCategorizer(e),s=t.doc.lineAt(e),i=e-s.from;if(s.length==0)return Me.cursor(e);i==0?n=1:i==s.length&&(n=-1);let a=i,l=i;n<0?a=zs(s.text,i,!1):l=zs(s.text,i);let c=r(s.text.slice(a,l));for(;a>0;){let d=zs(s.text,a,!1);if(r(s.text.slice(d,a))!=c)break;a=d}for(;lt?e.left-t:Math.max(0,t-e.right)}function Coe(t,e){return e.top>t?e.top-t:Math.max(0,t-e.bottom)}function I4(t,e){return t.tope.top+1}function NE(t,e){return et.bottom?{top:t.top,left:t.left,right:t.right,bottom:e}:t}function Vk(t,e,n){let r,s,i,a,l=!1,c,d,h,m;for(let y=t.firstChild;y;y=y.nextSibling){let w=Jh(y);for(let S=0;SN||a==N&&i>j)&&(r=y,s=k,i=j,a=N,l=j?e0:Sk.bottom&&(!h||h.bottomk.top)&&(d=y,m=k):h&&I4(h,k)?h=CE(h,k.bottom):m&&I4(m,k)&&(m=NE(m,k.top))}}if(h&&h.bottom>=n?(r=c,s=h):m&&m.top<=n&&(r=d,s=m),!r)return{node:t,offset:0};let g=Math.max(s.left,Math.min(s.right,e));if(r.nodeType==3)return TE(r,g,n);if(l&&r.contentEditable!="false")return Vk(r,g,n);let x=Array.prototype.indexOf.call(t.childNodes,r)+(e>=(s.left+s.right)/2?1:0);return{node:t,offset:x}}function TE(t,e,n){let r=t.nodeValue.length,s=-1,i=1e9,a=0;for(let l=0;ln?h.top-n:n-h.bottom)-1;if(h.left-1<=e&&h.right+1>=e&&m=(h.left+h.right)/2,x=g;if(et.chrome||et.gecko){let y=ad(t,l).getBoundingClientRect();Math.abs(y.left-h.right)<.1&&(x=!g)}if(m<=0)return{node:t,offset:l+(x?1:0)};s=l+(x?1:0),i=m}}}return{node:t,offset:s>-1?s:a>0?t.nodeValue.length:0}}function iq(t,e,n,r=-1){var s,i;let a=t.contentDOM.getBoundingClientRect(),l=a.top+t.viewState.paddingTop,c,{docHeight:d}=t.viewState,{x:h,y:m}=e,g=m-l;if(g<0)return 0;if(g>d)return t.state.doc.length;for(let T=t.viewState.heightOracle.textHeight/2,E=!1;c=t.elementAtHeight(g),c.type!=ni.Text;)for(;g=r>0?c.bottom+T:c.top-T,!(g>=0&&g<=d);){if(E)return n?null:0;E=!0,r=-r}m=l+g;let x=c.from;if(xt.viewport.to)return t.viewport.to==t.state.doc.length?t.state.doc.length:n?null:EE(t,a,c,h,m);let y=t.dom.ownerDocument,w=t.root.elementFromPoint?t.root:y,S=w.elementFromPoint(h,m);S&&!t.contentDOM.contains(S)&&(S=null),S||(h=Math.max(a.left+1,Math.min(a.right-1,h)),S=w.elementFromPoint(h,m),S&&!t.contentDOM.contains(S)&&(S=null));let k,j=-1;if(S&&((s=t.docView.nearest(S))===null||s===void 0?void 0:s.isEditable)!=!1){if(y.caretPositionFromPoint){let T=y.caretPositionFromPoint(h,m);T&&({offsetNode:k,offset:j}=T)}else if(y.caretRangeFromPoint){let T=y.caretRangeFromPoint(h,m);T&&({startContainer:k,startOffset:j}=T)}k&&(!t.contentDOM.contains(k)||et.safari&&Toe(k,j,h)||et.chrome&&Eoe(k,j,h))&&(k=void 0),k&&(j=Math.min(Lo(k),j))}if(!k||!t.docView.dom.contains(k)){let T=es.find(t.docView,x);if(!T)return g>c.top+c.height/2?c.to:c.from;({node:k,offset:j}=Vk(T.dom,h,m))}let N=t.docView.nearest(k);if(!N)return null;if(N.isWidget&&((i=N.dom)===null||i===void 0?void 0:i.nodeType)==1){let T=N.dom.getBoundingClientRect();return e.yt.defaultLineHeight*1.5){let l=t.viewState.heightOracle.textHeight,c=Math.floor((s-n.top-(t.defaultLineHeight-l)*.5)/l);i+=c*t.viewState.heightOracle.lineLength}let a=t.state.sliceDoc(n.from,n.to);return n.from+_k(a,i,t.state.tabSize)}function aq(t,e,n){let r,s=t;if(t.nodeType!=3||e!=(r=t.nodeValue.length))return!1;for(;;){let i=s.nextSibling;if(i){if(i.nodeName=="BR")break;return!1}else{let a=s.parentNode;if(!a||a.nodeName=="DIV")break;s=a}}return ad(t,r-1,r).getBoundingClientRect().right>n}function Toe(t,e,n){return aq(t,e,n)}function Eoe(t,e,n){if(e!=0)return aq(t,e,n);for(let s=t;;){let i=s.parentNode;if(!i||i.nodeType!=1||i.firstChild!=s)return!1;if(i.classList.contains("cm-line"))break;s=i}let r=t.nodeType==1?t.getBoundingClientRect():ad(t,0,Math.max(t.nodeValue.length,1)).getBoundingClientRect();return n-r.left>5}function Uk(t,e,n){let r=t.lineBlockAt(e);if(Array.isArray(r.type)){let s;for(let i of r.type){if(i.from>e)break;if(!(i.toe)return i;(!s||i.type==ni.Text&&(s.type!=i.type||(n<0?i.frome)))&&(s=i)}}return s||r}return r}function _oe(t,e,n,r){let s=Uk(t,e.head,e.assoc||-1),i=!r||s.type!=ni.Text||!(t.lineWrapping||s.widgetLineBreaks)?null:t.coordsAtPos(e.assoc<0&&e.head>s.from?e.head-1:e.head);if(i){let a=t.dom.getBoundingClientRect(),l=t.textDirectionAt(s.from),c=t.posAtCoords({x:n==(l==gr.LTR)?a.right-1:a.left+1,y:(i.top+i.bottom)/2});if(c!=null)return Me.cursor(c,n?-1:1)}return Me.cursor(n?s.to:s.from,n?-1:1)}function _E(t,e,n,r){let s=t.state.doc.lineAt(e.head),i=t.bidiSpans(s),a=t.textDirectionAt(s.from);for(let l=e,c=null;;){let d=poe(s,i,a,l,n),h=HF;if(!d){if(s.number==(n?t.state.doc.lines:1))return l;h=` +`,s=t.state.doc.line(s.number+(n?1:-1)),i=t.bidiSpans(s),d=t.visualLineSide(s,!n)}if(c){if(!c(h))return l}else{if(!r)return d;c=r(h)}l=d}}function Aoe(t,e,n){let r=t.state.charCategorizer(e),s=r(n);return i=>{let a=r(i);return s==wr.Space&&(s=a),s==a}}function Moe(t,e,n,r){let s=e.head,i=n?1:-1;if(s==(n?t.state.doc.length:0))return Me.cursor(s,e.assoc);let a=e.goalColumn,l,c=t.contentDOM.getBoundingClientRect(),d=t.coordsAtPos(s,e.assoc||-1),h=t.documentTop;if(d)a==null&&(a=d.left-c.left),l=i<0?d.top:d.bottom;else{let x=t.viewState.lineBlockAt(s);a==null&&(a=Math.min(c.right-c.left,t.defaultCharacterWidth*(s-x.from))),l=(i<0?x.top:x.bottom)+h}let m=c.left+a,g=r??t.viewState.heightOracle.textHeight>>1;for(let x=0;;x+=10){let y=l+(g+x)*i,w=iq(t,{x:m,y},!1,i);if(yc.bottom||(i<0?ws)){let S=t.docView.coordsForChar(w),k=!S||y{if(e>i&&es(t)),n.from,e.head>n.from?-1:1);return r==n.from?n:Me.cursor(r,ri)&&!Poe(a,n)&&this.lineBreak(),s=a}return this.findPointBefore(r,n),this}readTextNode(e){let n=e.nodeValue;for(let r of this.points)r.node==e&&(r.pos=this.text.length+Math.min(r.offset,n.length));for(let r=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let i=-1,a=1,l;if(this.lineSeparator?(i=n.indexOf(this.lineSeparator,r),a=this.lineSeparator.length):(l=s.exec(n))&&(i=l.index,a=l[0].length),this.append(n.slice(r,i<0?n.length:i)),i<0)break;if(this.lineBreak(),a>1)for(let c of this.points)c.node==e&&c.pos>this.text.length&&(c.pos-=a-1);r=i+a}}readNode(e){if(e.cmIgnore)return;let n=er.get(e),r=n&&n.overrideDOMText;if(r!=null){this.findPointInside(e,r.length);for(let s=r.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,n){for(let r of this.points)r.node==e&&e.childNodes[r.offset]==n&&(r.pos=this.text.length)}findPointInside(e,n){for(let r of this.points)(e.nodeType==3?r.node==e:e.contains(r.node))&&(r.pos=this.text.length+(Doe(e,r.node,r.offset)?n:0))}}function Doe(t,e,n){for(;;){if(!e||n-1;let{impreciseHead:i,impreciseAnchor:a}=e.docView;if(e.state.readOnly&&n>-1)this.newSel=null;else if(n>-1&&(this.bounds=e.docView.domBoundsAround(n,r,0))){let l=i||a?[]:Loe(e),c=new Roe(l,e.state);c.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=c.text,this.newSel=Boe(l,this.bounds.from)}else{let l=e.observer.selectionRange,c=i&&i.node==l.focusNode&&i.offset==l.focusOffset||!Ik(e.contentDOM,l.focusNode)?e.state.selection.main.head:e.docView.posFromDOM(l.focusNode,l.focusOffset),d=a&&a.node==l.anchorNode&&a.offset==l.anchorOffset||!Ik(e.contentDOM,l.anchorNode)?e.state.selection.main.anchor:e.docView.posFromDOM(l.anchorNode,l.anchorOffset),h=e.viewport;if((et.ios||et.chrome)&&e.state.selection.main.empty&&c!=d&&(h.from>0||h.to-1&&e.state.selection.ranges.length>1?this.newSel=e.state.selection.replaceRange(Me.range(d,c)):this.newSel=Me.single(d,c)}}}function lq(t,e){let n,{newSel:r}=e,s=t.state.selection.main,i=t.inputState.lastKeyTime>Date.now()-100?t.inputState.lastKeyCode:-1;if(e.bounds){let{from:a,to:l}=e.bounds,c=s.from,d=null;(i===8||et.android&&e.text.length=s.from&&n.to<=s.to&&(n.from!=s.from||n.to!=s.to)&&s.to-s.from-(n.to-n.from)<=4?n={from:s.from,to:s.to,insert:t.state.doc.slice(s.from,n.from).append(n.insert).append(t.state.doc.slice(n.to,s.to))}:t.state.doc.lineAt(s.from).toDate.now()-50?n={from:s.from,to:s.to,insert:t.state.toText(t.inputState.insertingText)}:et.chrome&&n&&n.from==n.to&&n.from==s.head&&n.insert.toString()==` + `&&t.lineWrapping&&(r&&(r=Me.single(r.main.anchor-1,r.main.head-1)),n={from:s.from,to:s.to,insert:jn.of([" "])}),n)return l6(t,n,r,i);if(r&&!r.main.eq(s)){let a=!1,l="select";return t.inputState.lastSelectionTime>Date.now()-50&&(t.inputState.lastSelectionOrigin=="select"&&(a=!0),l=t.inputState.lastSelectionOrigin,l=="select.pointer"&&(r=oq(t.state.facet(Qp).map(c=>c(t)),r))),t.dispatch({selection:r,scrollIntoView:a,userEvent:l}),!0}else return!1}function l6(t,e,n,r=-1){if(et.ios&&t.inputState.flushIOSKey(e))return!0;let s=t.state.selection.main;if(et.android&&(e.to==s.to&&(e.from==s.from||e.from==s.from-1&&t.state.sliceDoc(e.from,s.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&Ph(t.contentDOM,"Enter",13)||(e.from==s.from-1&&e.to==s.to&&e.insert.length==0||r==8&&e.insert.lengths.head)&&Ph(t.contentDOM,"Backspace",8)||e.from==s.from&&e.to==s.to+1&&e.insert.length==0&&Ph(t.contentDOM,"Delete",46)))return!0;let i=e.insert.toString();t.inputState.composing>=0&&t.inputState.composing++;let a,l=()=>a||(a=Ioe(t,e,n));return t.state.facet(GF).some(c=>c(t,e.from,e.to,i,l))||t.dispatch(l()),!0}function Ioe(t,e,n){let r,s=t.state,i=s.selection.main,a=-1;if(e.from==e.to&&e.fromi.to){let c=e.fromm(t)),d,c);e.from==h&&(a=h)}if(a>-1)r={changes:e,selection:Me.cursor(e.from+e.insert.length,-1)};else if(e.from>=i.from&&e.to<=i.to&&e.to-e.from>=(i.to-i.from)/3&&(!n||n.main.empty&&n.main.from==e.from+e.insert.length)&&t.inputState.composing<0){let c=i.frome.to?s.sliceDoc(e.to,i.to):"";r=s.replaceSelection(t.state.toText(c+e.insert.sliceString(0,void 0,t.state.lineBreak)+d))}else{let c=s.changes(e),d=n&&n.main.to<=c.newLength?n.main:void 0;if(s.selection.ranges.length>1&&(t.inputState.composing>=0||t.inputState.compositionPendingChange)&&e.to<=i.to+10&&e.to>=i.to-10){let h=t.state.sliceDoc(e.from,e.to),m,g=n&&sq(t,n.main.head);if(g){let y=e.insert.length-(e.to-e.from);m={from:g.from,to:g.to-y}}else m=t.state.doc.lineAt(i.head);let x=i.to-e.to;r=s.changeByRange(y=>{if(y.from==i.from&&y.to==i.to)return{changes:c,range:d||y.map(c)};let w=y.to-x,S=w-h.length;if(t.state.sliceDoc(S,w)!=h||w>=m.from&&S<=m.to)return{range:y};let k=s.changes({from:S,to:w,insert:e.insert}),j=y.to-i.to;return{changes:k,range:d?Me.range(Math.max(0,d.anchor+j),Math.max(0,d.head+j)):y.map(k)}})}else r={changes:c,selection:d&&s.selection.replaceRange(d)}}let l="input.type";return(t.composing||t.inputState.compositionPendingChange&&t.inputState.compositionEndedAt>Date.now()-50)&&(t.inputState.compositionPendingChange=!1,l+=".compose",t.inputState.compositionFirstChange&&(l+=".start",t.inputState.compositionFirstChange=!1)),s.update(r,{userEvent:l,scrollIntoView:!0})}function cq(t,e,n,r){let s=Math.min(t.length,e.length),i=0;for(;i0&&l>0&&t.charCodeAt(a-1)==e.charCodeAt(l-1);)a--,l--;if(r=="end"){let c=Math.max(0,i-Math.min(a,l));n-=a+c-i}if(a=a?i-n:0;i-=c,l=i+(l-a),a=i}else if(l=l?i-n:0;i-=c,a=i+(a-l),l=i}return{from:i,toA:a,toB:l}}function Loe(t){let e=[];if(t.root.activeElement!=t.contentDOM)return e;let{anchorNode:n,anchorOffset:r,focusNode:s,focusOffset:i}=t.observer.selectionRange;return n&&(e.push(new AE(n,r)),(s!=n||i!=r)&&e.push(new AE(s,i))),e}function Boe(t,e){if(t.length==0)return null;let n=t[0].pos,r=t.length==2?t[1].pos:n;return n>-1&&r>-1?Me.single(n+e,r+e):null}class Foe{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,et.safari&&e.contentDOM.addEventListener("input",()=>null),et.gecko&&nle(e.contentDOM.ownerDocument)}handleEvent(e){!Goe(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,n){let r=this.handlers[e];if(r){for(let s of r.observers)s(this.view,n);for(let s of r.handlers){if(n.defaultPrevented)break;if(s(this.view,n)){n.preventDefault();break}}}}ensureHandlers(e){let n=qoe(e),r=this.handlers,s=this.view.contentDOM;for(let i in n)if(i!="scroll"){let a=!n[i].handlers.length,l=r[i];l&&a!=!l.handlers.length&&(s.removeEventListener(i,this.handleEvent),l=null),l||s.addEventListener(i,this.handleEvent,{passive:a})}for(let i in r)i!="scroll"&&!n[i]&&s.removeEventListener(i,this.handleEvent);this.handlers=n}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&dq.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),et.android&&et.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;let n;return et.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&((n=uq.find(r=>r.keyCode==e.keyCode))&&!e.ctrlKey||$oe.indexOf(e.key)>-1&&e.ctrlKey&&!e.shiftKey)?(this.pendingIOSKey=n||e,setTimeout(()=>this.flushIOSKey(),250),!0):(e.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(e){let n=this.pendingIOSKey;return!n||n.key=="Enter"&&e&&e.from0?!0:et.safari&&!et.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}function ME(t,e){return(n,r)=>{try{return e.call(t,r,n)}catch(s){vi(n.state,s)}}}function qoe(t){let e=Object.create(null);function n(r){return e[r]||(e[r]={observers:[],handlers:[]})}for(let r of t){let s=r.spec,i=s&&s.plugin.domEventHandlers,a=s&&s.plugin.domEventObservers;if(i)for(let l in i){let c=i[l];c&&n(l).handlers.push(ME(r.value,c))}if(a)for(let l in a){let c=a[l];c&&n(l).observers.push(ME(r.value,c))}}for(let r in Ka)n(r).handlers.push(Ka[r]);for(let r in _a)n(r).observers.push(_a[r]);return e}const uq=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],$oe="dthko",dq=[16,17,18,20,91,92,224,225],r1=6;function s1(t){return Math.max(0,t)*.7+8}function Hoe(t,e){return Math.max(Math.abs(t.clientX-e.clientX),Math.abs(t.clientY-e.clientY))}class Qoe{constructor(e,n,r,s){this.view=e,this.startEvent=n,this.style=r,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=n,this.scrollParents=Zae(e.contentDOM),this.atoms=e.state.facet(Qp).map(a=>a(e));let i=e.contentDOM.ownerDocument;i.addEventListener("mousemove",this.move=this.move.bind(this)),i.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=n.shiftKey,this.multiple=e.state.facet(wn.allowMultipleSelections)&&Voe(e,n),this.dragging=Woe(e,n)&&mq(n)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Hoe(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let n=0,r=0,s=0,i=0,a=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:a}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:i,bottom:l}=this.scrollParents.y.getBoundingClientRect());let c=o6(this.view);e.clientX-c.left<=s+r1?n=-s1(s-e.clientX):e.clientX+c.right>=a-r1&&(n=s1(e.clientX-a)),e.clientY-c.top<=i+r1?r=-s1(i-e.clientY):e.clientY+c.bottom>=l-r1&&(r=s1(e.clientY-l)),this.setScrollSpeed(n,r)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,n){this.scrollSpeed={x:e,y:n},e||n?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:n}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),n&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=n,n=0),(e||n)&&this.view.win.scrollBy(e,n),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:n}=this,r=oq(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!r.eq(n.state.selection,this.dragging===!1))&&this.view.dispatch({selection:r,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){e.transactions.some(n=>n.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}}function Voe(t,e){let n=t.state.facet(QF);return n.length?n[0](e):et.mac?e.metaKey:e.ctrlKey}function Uoe(t,e){let n=t.state.facet(VF);return n.length?n[0](e):et.mac?!e.altKey:!e.ctrlKey}function Woe(t,e){let{main:n}=t.state.selection;if(n.empty)return!1;let r=$0(t.root);if(!r||r.rangeCount==0)return!0;let s=r.getRangeAt(0).getClientRects();for(let i=0;i=e.clientX&&a.top<=e.clientY&&a.bottom>=e.clientY)return!0}return!1}function Goe(t,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let n=e.target,r;n!=t.contentDOM;n=n.parentNode)if(!n||n.nodeType==11||(r=er.get(n))&&r.ignoreEvent(e))return!1;return!0}const Ka=Object.create(null),_a=Object.create(null),hq=et.ie&&et.ie_version<15||et.ios&&et.webkit_version<604;function Xoe(t){let e=t.dom.parentNode;if(!e)return;let n=e.appendChild(document.createElement("textarea"));n.style.cssText="position: fixed; left: -10000px; top: 10px",n.focus(),setTimeout(()=>{t.focus(),n.remove(),fq(t,n.value)},50)}function ub(t,e,n){for(let r of t.facet(e))n=r(n,t);return n}function fq(t,e){e=ub(t.state,s6,e);let{state:n}=t,r,s=1,i=n.toText(e),a=i.lines==n.selection.ranges.length;if(Wk!=null&&n.selection.ranges.every(c=>c.empty)&&Wk==i.toString()){let c=-1;r=n.changeByRange(d=>{let h=n.doc.lineAt(d.from);if(h.from==c)return{range:d};c=h.from;let m=n.toText((a?i.line(s++).text:e)+n.lineBreak);return{changes:{from:h.from,insert:m},range:Me.cursor(d.from+m.length)}})}else a?r=n.changeByRange(c=>{let d=i.line(s++);return{changes:{from:c.from,to:c.to,insert:d.text},range:Me.cursor(c.from+d.length)}}):r=n.replaceSelection(i);t.dispatch(r,{userEvent:"input.paste",scrollIntoView:!0})}_a.scroll=t=>{t.inputState.lastScrollTop=t.scrollDOM.scrollTop,t.inputState.lastScrollLeft=t.scrollDOM.scrollLeft};Ka.keydown=(t,e)=>(t.inputState.setSelectionOrigin("select"),e.keyCode==27&&t.inputState.tabFocusMode!=0&&(t.inputState.tabFocusMode=Date.now()+2e3),!1);_a.touchstart=(t,e)=>{t.inputState.lastTouchTime=Date.now(),t.inputState.setSelectionOrigin("select.pointer")};_a.touchmove=t=>{t.inputState.setSelectionOrigin("select.pointer")};Ka.mousedown=(t,e)=>{if(t.observer.flush(),t.inputState.lastTouchTime>Date.now()-2e3)return!1;let n=null;for(let r of t.state.facet(UF))if(n=r(t,e),n)break;if(!n&&e.button==0&&(n=Zoe(t,e)),n){let r=!t.hasFocus;t.inputState.startMouseSelection(new Qoe(t,e,n,r)),r&&t.observer.ignore(()=>{CF(t.contentDOM);let i=t.root.activeElement;i&&!i.contains(t.contentDOM)&&i.blur()});let s=t.inputState.mouseSelection;if(s)return s.start(e),s.dragging===!1}else t.inputState.setSelectionOrigin("select.pointer");return!1};function RE(t,e,n,r){if(r==1)return Me.cursor(e,n);if(r==2)return joe(t.state,e,n);{let s=es.find(t.docView,e),i=t.state.doc.lineAt(s?s.posAtEnd:e),a=s?s.posAtStart:i.from,l=s?s.posAtEnd:i.to;return le>=n.top&&e<=n.bottom&&t>=n.left&&t<=n.right;function Yoe(t,e,n,r){let s=es.find(t.docView,e);if(!s)return 1;let i=e-s.posAtStart;if(i==0)return 1;if(i==s.length)return-1;let a=s.coordsAt(i,-1);if(a&&DE(n,r,a))return-1;let l=s.coordsAt(i,1);return l&&DE(n,r,l)?1:a&&a.bottom>=r?-1:1}function PE(t,e){let n=t.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:n,bias:Yoe(t,n,e.clientX,e.clientY)}}const Koe=et.ie&&et.ie_version<=11;let zE=null,IE=0,LE=0;function mq(t){if(!Koe)return t.detail;let e=zE,n=LE;return zE=t,LE=Date.now(),IE=!e||n>Date.now()-400&&Math.abs(e.clientX-t.clientX)<2&&Math.abs(e.clientY-t.clientY)<2?(IE+1)%3:1}function Zoe(t,e){let n=PE(t,e),r=mq(e),s=t.state.selection;return{update(i){i.docChanged&&(n.pos=i.changes.mapPos(n.pos),s=s.map(i.changes))},get(i,a,l){let c=PE(t,i),d,h=RE(t,c.pos,c.bias,r);if(n.pos!=c.pos&&!a){let m=RE(t,n.pos,n.bias,r),g=Math.min(m.from,h.from),x=Math.max(m.to,h.to);h=g1&&(d=Joe(s,c.pos))?d:l?s.addRange(h):Me.create([h])}}}function Joe(t,e){for(let n=0;n=e)return Me.create(t.ranges.slice(0,n).concat(t.ranges.slice(n+1)),t.mainIndex==n?0:t.mainIndex-(t.mainIndex>n?1:0))}return null}Ka.dragstart=(t,e)=>{let{selection:{main:n}}=t.state;if(e.target.draggable){let s=t.docView.nearest(e.target);if(s&&s.isWidget){let i=s.posAtStart,a=i+s.length;(i>=n.to||a<=n.from)&&(n=Me.range(i,a))}}let{inputState:r}=t;return r.mouseSelection&&(r.mouseSelection.dragging=!0),r.draggedContent=n,e.dataTransfer&&(e.dataTransfer.setData("Text",ub(t.state,i6,t.state.sliceDoc(n.from,n.to))),e.dataTransfer.effectAllowed="copyMove"),!1};Ka.dragend=t=>(t.inputState.draggedContent=null,!1);function BE(t,e,n,r){if(n=ub(t.state,s6,n),!n)return;let s=t.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:i}=t.inputState,a=r&&i&&Uoe(t,e)?{from:i.from,to:i.to}:null,l={from:s,insert:n},c=t.state.changes(a?[a,l]:l);t.focus(),t.dispatch({changes:c,selection:{anchor:c.mapPos(s,-1),head:c.mapPos(s,1)},userEvent:a?"move.drop":"input.drop"}),t.inputState.draggedContent=null}Ka.drop=(t,e)=>{if(!e.dataTransfer)return!1;if(t.state.readOnly)return!0;let n=e.dataTransfer.files;if(n&&n.length){let r=Array(n.length),s=0,i=()=>{++s==n.length&&BE(t,e,r.filter(a=>a!=null).join(t.state.lineBreak),!1)};for(let a=0;a{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(r[a]=l.result),i()},l.readAsText(n[a])}return!0}else{let r=e.dataTransfer.getData("Text");if(r)return BE(t,e,r,!0),!0}return!1};Ka.paste=(t,e)=>{if(t.state.readOnly)return!0;t.observer.flush();let n=hq?null:e.clipboardData;return n?(fq(t,n.getData("text/plain")||n.getData("text/uri-list")),!0):(Xoe(t),!1)};function ele(t,e){let n=t.dom.parentNode;if(!n)return;let r=n.appendChild(document.createElement("textarea"));r.style.cssText="position: fixed; left: -10000px; top: 10px",r.value=e,r.focus(),r.selectionEnd=e.length,r.selectionStart=0,setTimeout(()=>{r.remove(),t.focus()},50)}function tle(t){let e=[],n=[],r=!1;for(let s of t.selection.ranges)s.empty||(e.push(t.sliceDoc(s.from,s.to)),n.push(s));if(!e.length){let s=-1;for(let{from:i}of t.selection.ranges){let a=t.doc.lineAt(i);a.number>s&&(e.push(a.text),n.push({from:a.from,to:Math.min(t.doc.length,a.to+1)})),s=a.number}r=!0}return{text:ub(t,i6,e.join(t.lineBreak)),ranges:n,linewise:r}}let Wk=null;Ka.copy=Ka.cut=(t,e)=>{let{text:n,ranges:r,linewise:s}=tle(t.state);if(!n&&!s)return!1;Wk=s?n:null,e.type=="cut"&&!t.state.readOnly&&t.dispatch({changes:r,scrollIntoView:!0,userEvent:"delete.cut"});let i=hq?null:e.clipboardData;return i?(i.clearData(),i.setData("text/plain",n),!0):(ele(t,n),!1)};const pq=qo.define();function gq(t,e){let n=[];for(let r of t.facet(XF)){let s=r(t,e);s&&n.push(s)}return n.length?t.update({effects:n,annotations:pq.of(!0)}):null}function xq(t){setTimeout(()=>{let e=t.hasFocus;if(e!=t.inputState.notifiedFocused){let n=gq(t.state,e);n?t.dispatch(n):t.update([])}},10)}_a.focus=t=>{t.inputState.lastFocusTime=Date.now(),!t.scrollDOM.scrollTop&&(t.inputState.lastScrollTop||t.inputState.lastScrollLeft)&&(t.scrollDOM.scrollTop=t.inputState.lastScrollTop,t.scrollDOM.scrollLeft=t.inputState.lastScrollLeft),xq(t)};_a.blur=t=>{t.observer.clearSelectionRange(),xq(t)};_a.compositionstart=_a.compositionupdate=t=>{t.observer.editContext||(t.inputState.compositionFirstChange==null&&(t.inputState.compositionFirstChange=!0),t.inputState.composing<0&&(t.inputState.composing=0))};_a.compositionend=t=>{t.observer.editContext||(t.inputState.composing=-1,t.inputState.compositionEndedAt=Date.now(),t.inputState.compositionPendingKey=!0,t.inputState.compositionPendingChange=t.observer.pendingRecords().length>0,t.inputState.compositionFirstChange=null,et.chrome&&et.android?t.observer.flushSoon():t.inputState.compositionPendingChange?Promise.resolve().then(()=>t.observer.flush()):setTimeout(()=>{t.inputState.composing<0&&t.docView.hasComposition&&t.update([])},50))};_a.contextmenu=t=>{t.inputState.lastContextMenu=Date.now()};Ka.beforeinput=(t,e)=>{var n,r;if((e.inputType=="insertText"||e.inputType=="insertCompositionText")&&(t.inputState.insertingText=e.data,t.inputState.insertingTextAt=Date.now()),e.inputType=="insertReplacementText"&&t.observer.editContext){let i=(n=e.dataTransfer)===null||n===void 0?void 0:n.getData("text/plain"),a=e.getTargetRanges();if(i&&a.length){let l=a[0],c=t.posAtDOM(l.startContainer,l.startOffset),d=t.posAtDOM(l.endContainer,l.endOffset);return l6(t,{from:c,to:d,insert:t.state.toText(i)},null),!0}}let s;if(et.chrome&&et.android&&(s=uq.find(i=>i.inputType==e.inputType))&&(t.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let i=((r=window.visualViewport)===null||r===void 0?void 0:r.height)||0;setTimeout(()=>{var a;(((a=window.visualViewport)===null||a===void 0?void 0:a.height)||0)>i+10&&t.hasFocus&&(t.contentDOM.blur(),t.focus())},100)}return et.ios&&e.inputType=="deleteContentForward"&&t.observer.flushSoon(),et.safari&&e.inputType=="insertText"&&t.inputState.composing>=0&&setTimeout(()=>_a.compositionend(t,e),20),!1};const FE=new Set;function nle(t){FE.has(t)||(FE.add(t),t.addEventListener("copy",()=>{}),t.addEventListener("cut",()=>{}))}const qE=["pre-wrap","normal","pre-line","break-spaces"];let nf=!1;function $E(){nf=!1}class rle{constructor(e){this.lineWrapping=e,this.doc=jn.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,n){let r=this.doc.lineAt(n).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(r+=Math.max(0,Math.ceil((n-e-r*this.lineLength*.5)/this.lineLength))),this.lineHeight*r}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return qE.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let n=!1;for(let r=0;r-1,c=Math.round(n)!=Math.round(this.lineHeight)||this.lineWrapping!=l;if(this.lineWrapping=l,this.lineHeight=n,this.charWidth=r,this.textHeight=s,this.lineLength=i,c){this.heightSamples={};for(let d=0;d0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>uv&&(nf=!0),this.height=e)}replace(e,n,r){return ri.of(r)}decomposeLeft(e,n){n.push(this)}decomposeRight(e,n){n.push(this)}applyChanges(e,n,r,s){let i=this,a=r.doc;for(let l=s.length-1;l>=0;l--){let{fromA:c,toA:d,fromB:h,toB:m}=s[l],g=i.lineAt(c,pr.ByPosNoHeight,r.setDoc(n),0,0),x=g.to>=d?g:i.lineAt(d,pr.ByPosNoHeight,r,0,0);for(m+=x.to-d,d=x.to;l>0&&g.from<=s[l-1].toA;)c=s[l-1].fromA,h=s[l-1].fromB,l--,ci*2){let l=e[n-1];l.break?e.splice(--n,1,l.left,null,l.right):e.splice(--n,1,l.left,l.right),r+=1+l.break,s-=l.size}else if(i>s*2){let l=e[r];l.break?e.splice(r,1,l.left,null,l.right):e.splice(r,1,l.left,l.right),r+=2+l.break,i-=l.size}else break;else if(s=i&&a(this.blockAt(0,r,s,i))}updateHeight(e,n=0,r=!1,s){return s&&s.from<=n&&s.more&&this.setHeight(s.heights[s.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}}class $i extends vq{constructor(e,n){super(e,n,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0}blockAt(e,n,r,s){return new So(s,this.length,r,this.height,this.breaks)}replace(e,n,r){let s=r[0];return r.length==1&&(s instanceof $i||s instanceof As&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof As?s=new $i(s.length,this.height):s.height=this.height,this.outdated||(s.outdated=!1),s):ri.of(r)}updateHeight(e,n=0,r=!1,s){return s&&s.from<=n&&s.more?this.setHeight(s.heights[s.index++]):(r||this.outdated)&&this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class As extends ri{constructor(e){super(e,0)}heightMetrics(e,n){let r=e.doc.lineAt(n).number,s=e.doc.lineAt(n+this.length).number,i=s-r+1,a,l=0;if(e.lineWrapping){let c=Math.min(this.height,e.lineHeight*i);a=c/i,this.length>i+1&&(l=(this.height-c)/(this.length-i-1))}else a=this.height/i;return{firstLine:r,lastLine:s,perLine:a,perChar:l}}blockAt(e,n,r,s){let{firstLine:i,lastLine:a,perLine:l,perChar:c}=this.heightMetrics(n,s);if(n.lineWrapping){let d=s+(e0){let i=r[r.length-1];i instanceof As?r[r.length-1]=new As(i.length+s):r.push(null,new As(s-1))}if(e>0){let i=r[0];i instanceof As?r[0]=new As(e+i.length):r.unshift(new As(e-1),null)}return ri.of(r)}decomposeLeft(e,n){n.push(new As(e-1),null)}decomposeRight(e,n){n.push(null,new As(this.length-e-1))}updateHeight(e,n=0,r=!1,s){let i=n+this.length;if(s&&s.from<=n+this.length&&s.more){let a=[],l=Math.max(n,s.from),c=-1;for(s.from>n&&a.push(new As(s.from-n-1).updateHeight(e,n));l<=i&&s.more;){let h=e.doc.lineAt(l).length;a.length&&a.push(null);let m=s.heights[s.index++];c==-1?c=m:Math.abs(m-c)>=uv&&(c=-2);let g=new $i(h,m);g.outdated=!1,a.push(g),l+=h+1}l<=i&&a.push(null,new As(i-l).updateHeight(e,l));let d=ri.of(a);return(c<0||Math.abs(d.height-this.height)>=uv||Math.abs(c-this.heightMetrics(e,n).perLine)>=uv)&&(nf=!0),Wv(this,d)}else(r||this.outdated)&&(this.setHeight(e.heightForGap(n,n+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}}class ile extends ri{constructor(e,n,r){super(e.length+n+r.length,e.height+r.height,n|(e.outdated||r.outdated?2:0)),this.left=e,this.right=r,this.size=e.size+r.size}get break(){return this.flags&1}blockAt(e,n,r,s){let i=r+this.left.height;return el))return d;let h=n==pr.ByPosNoHeight?pr.ByPosNoHeight:pr.ByPos;return c?d.join(this.right.lineAt(l,h,r,a,l)):this.left.lineAt(l,h,r,s,i).join(d)}forEachLine(e,n,r,s,i,a){let l=s+this.left.height,c=i+this.left.length+this.break;if(this.break)e=c&&this.right.forEachLine(e,n,r,l,c,a);else{let d=this.lineAt(c,pr.ByPos,r,s,i);e=e&&d.from<=n&&a(d),n>d.to&&this.right.forEachLine(d.to+1,n,r,l,c,a)}}replace(e,n,r){let s=this.left.length+this.break;if(nthis.left.length)return this.balanced(this.left,this.right.replace(e-s,n-s,r));let i=[];e>0&&this.decomposeLeft(e,i);let a=i.length;for(let l of r)i.push(l);if(e>0&&HE(i,a-1),n=r&&n.push(null)),e>r&&this.right.decomposeLeft(e-r,n)}decomposeRight(e,n){let r=this.left.length,s=r+this.break;if(e>=s)return this.right.decomposeRight(e-s,n);e2*n.size||n.size>2*e.size?ri.of(this.break?[e,null,n]:[e,n]):(this.left=Wv(this.left,e),this.right=Wv(this.right,n),this.setHeight(e.height+n.height),this.outdated=e.outdated||n.outdated,this.size=e.size+n.size,this.length=e.length+this.break+n.length,this)}updateHeight(e,n=0,r=!1,s){let{left:i,right:a}=this,l=n+i.length+this.break,c=null;return s&&s.from<=n+i.length&&s.more?c=i=i.updateHeight(e,n,r,s):i.updateHeight(e,n,r),s&&s.from<=l+a.length&&s.more?c=a=a.updateHeight(e,l,r,s):a.updateHeight(e,l,r),c?this.balanced(i,a):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function HE(t,e){let n,r;t[e]==null&&(n=t[e-1])instanceof As&&(r=t[e+1])instanceof As&&t.splice(e-1,3,new As(n.length+1+r.length))}const ale=5;class c6{constructor(e,n){this.pos=e,this.oracle=n,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,n){if(this.lineStart>-1){let r=Math.min(n,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof $i?s.length+=r-this.pos:(r>this.pos||!this.isCovered)&&this.nodes.push(new $i(r-this.pos,-1)),this.writtenTo=r,n>r&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=n}point(e,n,r){if(e=ale)&&this.addLineDeco(s,i,a)}else n>e&&this.span(e,n);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:n}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=n,this.writtenToe&&this.nodes.push(new $i(this.pos-e,-1)),this.writtenTo=this.pos}blankContent(e,n){let r=new As(n-e);return this.oracle.doc.lineAt(e).to==n&&(r.flags|=4),r}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof $i)return e;let n=new $i(0,-1);return this.nodes.push(n),n}addBlock(e){this.enterLine();let n=e.deco;n&&n.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,n&&n.endSide>0&&(this.covering=e)}addLineDeco(e,n,r){let s=this.ensureLine();s.length+=r,s.collapsed+=r,s.widgetHeight=Math.max(s.widgetHeight,e),s.breaks+=n,this.writtenTo=this.pos=this.pos+r}finish(e){let n=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(n instanceof $i)&&!this.isCovered?this.nodes.push(new $i(0,-1)):(this.writtenToh.clientHeight||h.scrollWidth>h.clientWidth)&&m.overflow!="visible"){let g=h.getBoundingClientRect();i=Math.max(i,g.left),a=Math.min(a,g.right),l=Math.max(l,g.top),c=Math.min(d==t.parentNode?s.innerHeight:c,g.bottom)}d=m.position=="absolute"||m.position=="fixed"?h.offsetParent:h.parentNode}else if(d.nodeType==11)d=d.host;else break;return{left:i-n.left,right:Math.max(i,a)-n.left,top:l-(n.top+e),bottom:Math.max(l,c)-(n.top+e)}}function ule(t){let e=t.getBoundingClientRect(),n=t.ownerDocument.defaultView||window;return e.left0&&e.top0}function dle(t,e){let n=t.getBoundingClientRect();return{left:0,right:n.right-n.left,top:e,bottom:n.bottom-(n.top+e)}}class B4{constructor(e,n,r,s){this.from=e,this.to=n,this.size=r,this.displaySize=s}static same(e,n){if(e.length!=n.length)return!1;for(let r=0;rtypeof r!="function"&&r.class=="cm-lineWrapping");this.heightOracle=new rle(n),this.stateDeco=e.facet(H0).filter(r=>typeof r!="function"),this.heightMap=ri.empty().applyChanges(this.stateDeco,jn.empty,this.heightOracle.setDoc(e.doc),[new Na(0,0,0,e.doc.length)]);for(let r=0;r<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());r++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=kt.set(this.lineGaps.map(r=>r.draw(this,!1))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:n}=this.state.selection;for(let r=0;r<=1;r++){let s=r?n.head:n.anchor;if(!e.some(({from:i,to:a})=>s>=i&&s<=a)){let{from:i,to:a}=this.lineBlockAt(s);e.push(new i1(i,a))}}return this.viewports=e.sort((r,s)=>r.from-s.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?VE:new u6(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(c0(e,this.scaler))})}update(e,n=null){this.state=e.state;let r=this.stateDeco;this.stateDeco=this.state.facet(H0).filter(h=>typeof h!="function");let s=e.changedRanges,i=Na.extendWithRanges(s,ole(r,this.stateDeco,e?e.changes:us.empty(this.state.doc.length))),a=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);$E(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),i),(this.heightMap.height!=a||nf)&&(e.flags|=2),l?(this.scrollAnchorPos=e.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=a);let c=i.length?this.mapViewport(this.viewport,e.changes):this.viewport;(n&&(n.range.headc.to)||!this.viewportIsAppropriate(c))&&(c=this.getViewport(0,n));let d=c.from!=this.viewport.from||c.to!=this.viewport.to;this.viewport=c,e.flags|=this.updateForViewport(),(d||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),n&&(this.scrollTarget=n),!this.mustEnforceCursorAssoc&&e.selectionSet&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(KF)&&(this.mustEnforceCursorAssoc=!0)}measure(e){let n=e.contentDOM,r=window.getComputedStyle(n),s=this.heightOracle,i=r.whiteSpace;this.defaultTextDirection=r.direction=="rtl"?gr.RTL:gr.LTR;let a=this.heightOracle.mustRefreshForWrapping(i),l=n.getBoundingClientRect(),c=a||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let d=0,h=0;if(l.width&&l.height){let{scaleX:T,scaleY:E}=NF(n,l);(T>.005&&Math.abs(this.scaleX-T)>.005||E>.005&&Math.abs(this.scaleY-E)>.005)&&(this.scaleX=T,this.scaleY=E,d|=16,a=c=!0)}let m=(parseInt(r.paddingTop)||0)*this.scaleY,g=(parseInt(r.paddingBottom)||0)*this.scaleY;(this.paddingTop!=m||this.paddingBottom!=g)&&(this.paddingTop=m,this.paddingBottom=g,d|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(s.lineWrapping&&(c=!0),this.editorWidth=e.scrollDOM.clientWidth,d|=16);let x=e.scrollDOM.scrollTop*this.scaleY;this.scrollTop!=x&&(this.scrollAnchorHeight=-1,this.scrollTop=x),this.scrolledToBottom=EF(e.scrollDOM);let y=(this.printing?dle:cle)(n,this.paddingTop),w=y.top-this.pixelViewport.top,S=y.bottom-this.pixelViewport.bottom;this.pixelViewport=y;let k=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(k!=this.inView&&(this.inView=k,k&&(c=!0)),!this.inView&&!this.scrollTarget&&!ule(e.dom))return 0;let j=l.width;if((this.contentDOMWidth!=j||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=e.scrollDOM.clientHeight,d|=16),c){let T=e.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(T)&&(a=!0),a||s.lineWrapping&&Math.abs(j-this.contentDOMWidth)>s.charWidth){let{lineHeight:E,charWidth:_,textHeight:A}=e.docView.measureTextSize();a=E>0&&s.refresh(i,E,_,A,Math.max(5,j/_),T),a&&(e.docView.minWidth=0,d|=16)}w>0&&S>0?h=Math.max(w,S):w<0&&S<0&&(h=Math.min(w,S)),$E();for(let E of this.viewports){let _=E.from==this.viewport.from?T:e.docView.measureVisibleLineHeights(E);this.heightMap=(a?ri.empty().applyChanges(this.stateDeco,jn.empty,this.heightOracle,[new Na(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(s,0,a,new sle(E.from,_))}nf&&(d|=2)}let N=!this.viewportIsAppropriate(this.viewport,h)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return N&&(d&2&&(d|=this.updateScaler()),this.viewport=this.getViewport(h,this.scrollTarget),d|=this.updateForViewport()),(d&2||N)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(a?[]:this.lineGaps,e)),d|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),d}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,n){let r=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),s=this.heightMap,i=this.heightOracle,{visibleTop:a,visibleBottom:l}=this,c=new i1(s.lineAt(a-r*1e3,pr.ByHeight,i,0,0).from,s.lineAt(l+(1-r)*1e3,pr.ByHeight,i,0,0).to);if(n){let{head:d}=n.range;if(dc.to){let h=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),m=s.lineAt(d,pr.ByPos,i,0,0),g;n.y=="center"?g=(m.top+m.bottom)/2-h/2:n.y=="start"||n.y=="nearest"&&d=l+Math.max(10,Math.min(r,250)))&&s>a-2*1e3&&i>1,a=s<<1;if(this.defaultTextDirection!=gr.LTR&&!r)return[];let l=[],c=(h,m,g,x)=>{if(m-hh&&kk.from>=g.from&&k.to<=g.to&&Math.abs(k.from-h)k.fromj));if(!S){if(mN.from<=m&&N.to>=m)){let N=n.moveToLineBoundary(Me.cursor(m),!1,!0).head;N>h&&(m=N)}let k=this.gapSize(g,h,m,x),j=r||k<2e6?k:2e6;S=new B4(h,m,k,j)}l.push(S)},d=h=>{if(h.length2e6)for(let _ of e)_.from>=h.from&&_.fromh.from&&c(h.from,x,h,m),yn.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let n=this.stateDeco;this.lineGaps.length&&(n=n.concat(this.lineGapDeco));let r=[];Rn.spans(n,this.viewport.from,this.viewport.to,{span(i,a){r.push({from:i,to:a})},point(){}},20);let s=0;if(r.length!=this.visibleRanges.length)s=12;else for(let i=0;i=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(n=>n.from<=e&&n.to>=e)||c0(this.heightMap.lineAt(e,pr.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(n=>n.top<=e&&n.bottom>=e)||c0(this.heightMap.lineAt(this.scaler.fromDOM(e),pr.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(e){let n=this.lineBlockAtHeight(e+8);return n.from>=this.viewport.from||this.viewportLines[0].top-e>200?n:this.viewportLines[0]}elementAtHeight(e){return c0(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}let i1=class{constructor(e,n){this.from=e,this.to=n}};function fle(t,e,n){let r=[],s=t,i=0;return Rn.spans(n,t,e,{span(){},point(a,l){a>s&&(r.push({from:s,to:a}),i+=a-s),s=l}},20),s=1)return e[e.length-1].to;let r=Math.floor(t*n);for(let s=0;;s++){let{from:i,to:a}=e[s],l=a-i;if(r<=l)return i+r;r-=l}}function o1(t,e){let n=0;for(let{from:r,to:s}of t.ranges){if(e<=s){n+=e-r;break}n+=s-r}return n/t.total}function mle(t,e){for(let n of t)if(e(n))return n}const VE={toDOM(t){return t},fromDOM(t){return t},scale:1,eq(t){return t==this}};class u6{constructor(e,n,r){let s=0,i=0,a=0;this.viewports=r.map(({from:l,to:c})=>{let d=n.lineAt(l,pr.ByPos,e,0,0).top,h=n.lineAt(c,pr.ByPos,e,0,0).bottom;return s+=h-d,{from:l,to:c,top:d,bottom:h,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(n.height-s);for(let l of this.viewports)l.domTop=a+(l.top-i)*this.scale,a=l.domBottom=l.domTop+(l.bottom-l.top),i=l.bottom}toDOM(e){for(let n=0,r=0,s=0;;n++){let i=nn.from==e.viewports[r].from&&n.to==e.viewports[r].to):!1}}function c0(t,e){if(e.scale==1)return t;let n=e.toDOM(t.top),r=e.toDOM(t.bottom);return new So(t.from,t.length,n,r-n,Array.isArray(t._content)?t._content.map(s=>c0(s,e)):t._content)}const l1=at.define({combine:t=>t.join(" ")}),Gk=at.define({combine:t=>t.indexOf(!0)>-1}),Xk=Wc.newName(),yq=Wc.newName(),bq=Wc.newName(),wq={"&light":"."+yq,"&dark":"."+bq};function Yk(t,e,n){return new Wc(e,{finish(r){return/&/.test(r)?r.replace(/&\w*/,s=>{if(s=="&")return t;if(!n||!n[s])throw new RangeError(`Unsupported selector: ${s}`);return n[s]}):t+" "+r}})}const ple=Yk("."+Xk,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},wq),gle={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},F4=et.ie&&et.ie_version<=11;class xle{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new Jae,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(n=>{for(let r of n)this.queue.push(r);(et.ie&&et.ie_version<=11||et.ios&&e.composing)&&n.some(r=>r.type=="childList"&&r.removedNodes.length||r.type=="characterData"&&r.oldValue.length>r.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&et.android&&e.constructor.EDIT_CONTEXT!==!1&&!(et.chrome&&et.chrome_version<126)&&(this.editContext=new yle(e),e.state.facet(El)&&(e.contentDOM.editContext=this.editContext.editContext)),F4&&(this.onCharData=n=>{this.queue.push({target:n.target,type:"characterData",oldValue:n.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var n;((n=this.view.docView)===null||n===void 0?void 0:n.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),n.length>0&&n[n.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(n=>{n.length>0&&n[n.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type=="change"||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((n,r)=>n!=e[r]))){this.gapIntersection.disconnect();for(let n of e)this.gapIntersection.observe(n);this.gaps=e}}onSelectionChange(e){let n=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:r}=this,s=this.selectionRange;if(r.state.facet(El)?r.root.activeElement!=this.dom:!lv(this.dom,s))return;let i=s.anchorNode&&r.docView.nearest(s.anchorNode);if(i&&i.ignoreEvent(e)){n||(this.selectionChanged=!1);return}(et.ie&&et.ie_version<=11||et.android&&et.chrome)&&!r.state.selection.main.empty&&s.focusNode&&S0(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,n=$0(e.root);if(!n)return!1;let r=et.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&vle(this.view,n)||n;if(!r||this.selectionRange.eq(r))return!1;let s=lv(this.dom,r);return s&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime{let i=this.delayedAndroidKey;i&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=i.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&i.force&&Ph(this.dom,i.key,i.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:n,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let n=-1,r=-1,s=!1;for(let i of e){let a=this.readMutation(i);a&&(a.typeOver&&(s=!0),n==-1?{from:n,to:r}=a:(n=Math.min(a.from,n),r=Math.max(a.to,r)))}return{from:n,to:r,typeOver:s}}readChange(){let{from:e,to:n,typeOver:r}=this.processRecords(),s=this.selectionChanged&&lv(this.dom,this.selectionRange);if(e<0&&!s)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let i=new zoe(this.view,e,n,r);return this.view.docView.domChanged={newSel:i.newSel?i.newSel.main:null},i}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let n=this.readChange();if(!n)return this.view.requestMeasure(),!1;let r=this.view.state,s=lq(this.view,n);return this.view.state==r&&(n.domChanged||n.newSel&&!n.newSel.main.eq(this.view.state.selection.main))&&this.view.update([]),s}readMutation(e){let n=this.view.docView.nearest(e.target);if(!n||n.ignoreMutation(e))return null;if(n.markDirty(e.type=="attributes"),e.type=="attributes"&&(n.flags|=4),e.type=="childList"){let r=UE(n,e.previousSibling||e.target.previousSibling,-1),s=UE(n,e.nextSibling||e.target.nextSibling,1);return{from:r?n.posAfter(r):n.posAtStart,to:s?n.posBefore(s):n.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:n.posAtStart,to:n.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(El)!=e.state.facet(El)&&(e.view.contentDOM.editContext=e.state.facet(El)?this.editContext.editContext:null))}destroy(){var e,n,r;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(n=this.gapIntersection)===null||n===void 0||n.disconnect(),(r=this.resizeScroll)===null||r===void 0||r.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}}function UE(t,e,n){for(;e;){let r=er.get(e);if(r&&r.parent==t)return r;let s=e.parentNode;e=s!=t.dom?s:n>0?e.nextSibling:e.previousSibling}return null}function WE(t,e){let n=e.startContainer,r=e.startOffset,s=e.endContainer,i=e.endOffset,a=t.docView.domAtPos(t.state.selection.main.anchor);return S0(a.node,a.offset,s,i)&&([n,r,s,i]=[s,i,n,r]),{anchorNode:n,anchorOffset:r,focusNode:s,focusOffset:i}}function vle(t,e){if(e.getComposedRanges){let s=e.getComposedRanges(t.root)[0];if(s)return WE(t,s)}let n=null;function r(s){s.preventDefault(),s.stopImmediatePropagation(),n=s.getTargetRanges()[0]}return t.contentDOM.addEventListener("beforeinput",r,!0),t.dom.ownerDocument.execCommand("indent"),t.contentDOM.removeEventListener("beforeinput",r,!0),n?WE(t,n):null}class yle{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let n=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=r=>{let s=e.state.selection.main,{anchor:i,head:a}=s,l=this.toEditorPos(r.updateRangeStart),c=this.toEditorPos(r.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:r.updateRangeStart,editorBase:l,drifted:!1});let d=c-l>r.text.length;l==this.from&&ithis.to&&(c=i);let h=cq(e.state.sliceDoc(l,c),r.text,(d?s.from:s.to)-l,d?"end":null);if(!h){let g=Me.single(this.toEditorPos(r.selectionStart),this.toEditorPos(r.selectionEnd));g.main.eq(s)||e.dispatch({selection:g,userEvent:"select"});return}let m={from:h.from+l,to:h.toA+l,insert:jn.of(r.text.slice(h.from,h.toB).split(` +`))};if((et.mac||et.android)&&m.from==a-1&&/^\. ?$/.test(r.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(m={from:l,to:c,insert:jn.of([r.text.replace("."," ")])}),this.pendingContextChange=m,!e.state.readOnly){let g=this.to-this.from+(m.to-m.from+m.insert.length);l6(e,m,Me.single(this.toEditorPos(r.selectionStart,g),this.toEditorPos(r.selectionEnd,g)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),m.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(n.text.slice(Math.max(0,r.updateRangeStart-1),Math.min(n.text.length,r.updateRangeStart+1)))&&this.handlers.compositionend(r)},this.handlers.characterboundsupdate=r=>{let s=[],i=null;for(let a=this.toEditorPos(r.rangeStart),l=this.toEditorPos(r.rangeEnd);a{let s=[];for(let i of r.getTextFormats()){let a=i.underlineStyle,l=i.underlineThickness;if(!/none/i.test(a)&&!/none/i.test(l)){let c=this.toEditorPos(i.rangeStart),d=this.toEditorPos(i.rangeEnd);if(c{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:r}=this.composing;this.composing=null,r&&this.reset(e.state)}};for(let r in this.handlers)n.addEventListener(r,this.handlers[r]);this.measureReq={read:r=>{this.editContext.updateControlBounds(r.contentDOM.getBoundingClientRect());let s=$0(r.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let n=0,r=!1,s=this.pendingContextChange;return e.changes.iterChanges((i,a,l,c,d)=>{if(r)return;let h=d.length-(a-i);if(s&&a>=s.to)if(s.from==i&&s.to==a&&s.insert.eq(d)){s=this.pendingContextChange=null,n+=h,this.to+=h;return}else s=null,this.revertPending(e.state);if(i+=n,a+=n,a<=this.from)this.from+=h,this.to+=h;else if(ithis.to||this.to-this.from+d.length>3e4){r=!0;return}this.editContext.updateText(this.toContextPos(i),this.toContextPos(a),d.toString()),this.to+=h}n+=h}),s&&!r&&this.revertPending(e.state),!r}update(e){let n=this.pendingContextChange,r=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(r.from,r.to)&&e.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||n)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:n}=e.selection.main;this.from=Math.max(0,n-1e4),this.to=Math.min(e.doc.length,n+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let n=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(n.from),this.toContextPos(n.from+n.insert.length),e.doc.sliceString(n.from,n.to))}setSelection(e){let{main:n}=e.selection,r=this.toContextPos(Math.max(this.from,Math.min(this.to,n.anchor))),s=this.toContextPos(n.head);(this.editContext.selectionStart!=r||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(r,s)}rangeIsValid(e){let{head:n}=e.selection.main;return!(this.from>0&&n-this.from<500||this.to1e4*3)}toEditorPos(e,n=this.to-this.from){e=Math.min(e,n);let r=this.composing;return r&&r.drifted?r.editorBase+(e-r.contextBase):e+this.from}toContextPos(e){let n=this.composing;return n&&n.drifted?n.contextBase+(e-n.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}}class Ze{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var n;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:r}=e;this.dispatchTransactions=e.dispatchTransactions||r&&(s=>s.forEach(i=>r(i,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=e.root||eoe(e.parent)||document,this.viewState=new QE(e.state||wn.create(e)),e.scrollTo&&e.scrollTo.is(n1)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Nh).map(s=>new z4(s));for(let s of this.plugins)s.update(this);this.observer=new xle(this),this.inputState=new Foe(this),this.inputState.ensureHandlers(this.plugins),this.docView=new jE(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((n=document.fonts)===null||n===void 0)&&n.ready&&document.fonts.ready.then(()=>this.requestMeasure())}dispatch(...e){let n=e.length==1&&e[0]instanceof ns?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(n,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let n=!1,r=!1,s,i=this.state;for(let g of e){if(g.startState!=i)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");i=g.state}if(this.destroyed){this.viewState.state=i;return}let a=this.hasFocus,l=0,c=null;e.some(g=>g.annotation(pq))?(this.inputState.notifiedFocused=a,l=1):a!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=a,c=gq(i,a),c||(l=1));let d=this.observer.delayedAndroidKey,h=null;if(d?(this.observer.clearDelayedAndroidKey(),h=this.observer.readChange(),(h&&!this.state.doc.eq(i.doc)||!this.state.selection.eq(i.selection))&&(h=null)):this.observer.clear(),i.facet(wn.phrases)!=this.state.facet(wn.phrases))return this.setState(i);s=Uv.create(this,i,e),s.flags|=l;let m=this.viewState.scrollTarget;try{this.updateState=2;for(let g of e){if(m&&(m=m.map(g.changes)),g.scrollIntoView){let{main:x}=g.state.selection;m=new zh(x.empty?x:Me.cursor(x.head,x.head>x.anchor?-1:1))}for(let x of g.effects)x.is(n1)&&(m=x.value.clip(this.state))}this.viewState.update(s,m),this.bidiCache=Gv.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),n=this.docView.update(s),this.state.facet(o0)!=this.styleModules&&this.mountStyles(),r=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(n,e.some(g=>g.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(l1)!=s.state.facet(l1)&&(this.viewState.mustMeasureContent=!0),(n||r||m||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),n&&this.docViewUpdate(),!s.empty)for(let g of this.state.facet(Qk))try{g(s)}catch(x){vi(this.state,x,"update listener")}(c||h)&&Promise.resolve().then(()=>{c&&this.state==c.startState&&this.dispatch(c),h&&!lq(this,h)&&d.force&&Ph(this.contentDOM,d.key,d.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let n=this.hasFocus;try{for(let r of this.plugins)r.destroy(this);this.viewState=new QE(e),this.plugins=e.facet(Nh).map(r=>new z4(r)),this.pluginMap.clear();for(let r of this.plugins)r.update(this);this.docView.destroy(),this.docView=new jE(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}n&&this.focus(),this.requestMeasure()}updatePlugins(e){let n=e.startState.facet(Nh),r=e.state.facet(Nh);if(n!=r){let s=[];for(let i of r){let a=n.indexOf(i);if(a<0)s.push(new z4(i));else{let l=this.plugins[a];l.mustUpdate=e,s.push(l)}}for(let i of this.plugins)i.mustUpdate!=e&&i.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=e;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let n=null,r=this.scrollDOM,s=r.scrollTop*this.scaleY,{scrollAnchorPos:i,scrollAnchorHeight:a}=this.viewState;Math.abs(s-this.viewState.scrollTop)>1&&(a=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(a<0)if(EF(r))i=-1,a=this.viewState.heightMap.height;else{let x=this.viewState.scrollAnchorAt(s);i=x.from,a=x.top}this.updateState=1;let c=this.viewState.measure(this);if(!c&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let d=[];c&4||([this.measureRequests,d]=[d,this.measureRequests]);let h=d.map(x=>{try{return x.read(this)}catch(y){return vi(this.state,y),GE}}),m=Uv.create(this,this.state,[]),g=!1;m.flags|=c,n?n.flags|=c:n=m,this.updateState=2,m.empty||(this.updatePlugins(m),this.inputState.update(m),this.updateAttrs(),g=this.docView.update(m),g&&this.docViewUpdate());for(let x=0;x1||y<-1){s=s+y,r.scrollTop=s/this.scaleY,a=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(n&&!n.empty)for(let l of this.state.facet(Qk))l(n)}get themeClasses(){return Xk+" "+(this.state.facet(Gk)?bq:yq)+" "+this.state.facet(l1)}updateAttrs(){let e=XE(this,eq,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),n={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(El)?"true":"false",class:"cm-content",style:`${et.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(n["aria-readonly"]="true"),XE(this,a6,n);let r=this.observer.ignore(()=>{let s=Bk(this.contentDOM,this.contentAttrs,n),i=Bk(this.dom,this.editorAttrs,e);return s||i});return this.editorAttrs=e,this.contentAttrs=n,r}showAnnouncements(e){let n=!0;for(let r of e)for(let s of r.effects)if(s.is(Ze.announce)){n&&(this.announceDOM.textContent=""),n=!1;let i=this.announceDOM.appendChild(document.createElement("div"));i.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(o0);let e=this.state.facet(Ze.cspNonce);Wc.mount(this.root,this.styleModules.concat(ple).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let n=0;nr.plugin==e)||null),n&&n.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,n,r){return L4(this,e,_E(this,e,n,r))}moveByGroup(e,n){return L4(this,e,_E(this,e,n,r=>Aoe(this,e.head,r)))}visualLineSide(e,n){let r=this.bidiSpans(e),s=this.textDirectionAt(e.from),i=r[n?r.length-1:0];return Me.cursor(i.side(n,s)+e.from,i.forward(!n,s)?1:-1)}moveToLineBoundary(e,n,r=!0){return _oe(this,e,n,r)}moveVertically(e,n,r){return L4(this,e,Moe(this,e,n,r))}domAtPos(e){return this.docView.domAtPos(e)}posAtDOM(e,n=0){return this.docView.posFromDOM(e,n)}posAtCoords(e,n=!0){return this.readMeasured(),iq(this,e,n)}coordsAtPos(e,n=1){this.readMeasured();let r=this.docView.coordsAt(e,n);if(!r||r.left==r.right)return r;let s=this.state.doc.lineAt(e),i=this.bidiSpans(s),a=i[Fc.find(i,e-s.from,-1,n)];return qp(r,a.dir==gr.LTR==n>0)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(YF)||ethis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>ble)return $F(e.length);let n=this.textDirectionAt(e.from),r;for(let i of this.bidiCache)if(i.from==e.from&&i.dir==n&&(i.fresh||qF(i.isolates,r=OE(this,e))))return i.order;r||(r=OE(this,e));let s=moe(e.text,n,r);return this.bidiCache.push(new Gv(e.from,e.to,n,r,!0,s)),s}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||et.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{CF(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,n={}){return n1.of(new zh(typeof e=="number"?Me.cursor(e):e,n.y,n.x,n.yMargin,n.xMargin))}scrollSnapshot(){let{scrollTop:e,scrollLeft:n}=this.scrollDOM,r=this.viewState.scrollAnchorAt(e);return n1.of(new zh(Me.cursor(r.from),"start","start",r.top-e,n,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return Vr.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return Vr.define(()=>({}),{eventObservers:e})}static theme(e,n){let r=Wc.newName(),s=[l1.of(r),o0.of(Yk(`.${r}`,e))];return n&&n.dark&&s.push(Gk.of(!0)),s}static baseTheme(e){return ou.lowest(o0.of(Yk("."+Xk,e,wq)))}static findFromDOM(e){var n;let r=e.querySelector(".cm-content"),s=r&&er.get(r)||er.get(e);return((n=s?.rootView)===null||n===void 0?void 0:n.view)||null}}Ze.styleModule=o0;Ze.inputHandler=GF;Ze.clipboardInputFilter=s6;Ze.clipboardOutputFilter=i6;Ze.scrollHandler=ZF;Ze.focusChangeEffect=XF;Ze.perLineTextDirection=YF;Ze.exceptionSink=WF;Ze.updateListener=Qk;Ze.editable=El;Ze.mouseSelectionStyle=UF;Ze.dragMovesSelection=VF;Ze.clickAddsSelectionRange=QF;Ze.decorations=H0;Ze.outerDecorations=tq;Ze.atomicRanges=Qp;Ze.bidiIsolatedRanges=nq;Ze.scrollMargins=rq;Ze.darkTheme=Gk;Ze.cspNonce=at.define({combine:t=>t.length?t[0]:""});Ze.contentAttributes=a6;Ze.editorAttributes=eq;Ze.lineWrapping=Ze.contentAttributes.of({class:"cm-lineWrapping"});Ze.announce=Ft.define();const ble=4096,GE={};class Gv{constructor(e,n,r,s,i,a){this.from=e,this.to=n,this.dir=r,this.isolates=s,this.fresh=i,this.order=a}static update(e,n){if(n.empty&&!e.some(i=>i.fresh))return e;let r=[],s=e.length?e[e.length-1].dir:gr.LTR;for(let i=Math.max(0,e.length-10);i=0;s--){let i=r[s],a=typeof i=="function"?i(t):i;a&&Lk(a,n)}return n}const wle=et.mac?"mac":et.windows?"win":et.linux?"linux":"key";function Sle(t,e){const n=t.split(/-(?!$)/);let r=n[n.length-1];r=="Space"&&(r=" ");let s,i,a,l;for(let c=0;cr.concat(s),[]))),n}function Ole(t,e,n){return kq(Sq(t.state),e,t,n)}let zc=null;const jle=4e3;function Nle(t,e=wle){let n=Object.create(null),r=Object.create(null),s=(a,l)=>{let c=r[a];if(c==null)r[a]=l;else if(c!=l)throw new Error("Key binding "+a+" is used both as a regular binding and as a multi-stroke prefix")},i=(a,l,c,d,h)=>{var m,g;let x=n[a]||(n[a]=Object.create(null)),y=l.split(/ (?!$)/).map(k=>Sle(k,e));for(let k=1;k{let T=zc={view:N,prefix:j,scope:a};return setTimeout(()=>{zc==T&&(zc=null)},jle),!0}]})}let w=y.join(" ");s(w,!1);let S=x[w]||(x[w]={preventDefault:!1,stopPropagation:!1,run:((g=(m=x._any)===null||m===void 0?void 0:m.run)===null||g===void 0?void 0:g.slice())||[]});c&&S.run.push(c),d&&(S.preventDefault=!0),h&&(S.stopPropagation=!0)};for(let a of t){let l=a.scope?a.scope.split(" "):["editor"];if(a.any)for(let d of l){let h=n[d]||(n[d]=Object.create(null));h._any||(h._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:m}=a;for(let g in h)h[g].run.push(x=>m(x,Kk))}let c=a[e]||a.key;if(c)for(let d of l)i(d,c,a.run,a.preventDefault,a.stopPropagation),a.shift&&i(d,"Shift-"+c,a.shift,a.preventDefault,a.stopPropagation)}return n}let Kk=null;function kq(t,e,n,r){Kk=e;let s=Gae(e),i=gi(s,0),a=wo(i)==s.length&&s!=" ",l="",c=!1,d=!1,h=!1;zc&&zc.view==n&&zc.scope==r&&(l=zc.prefix+" ",dq.indexOf(e.keyCode)<0&&(d=!0,zc=null));let m=new Set,g=S=>{if(S){for(let k of S.run)if(!m.has(k)&&(m.add(k),k(n)))return S.stopPropagation&&(h=!0),!0;S.preventDefault&&(S.stopPropagation&&(h=!0),d=!0)}return!1},x=t[r],y,w;return x&&(g(x[l+c1(s,e,!a)])?c=!0:a&&(e.altKey||e.metaKey||e.ctrlKey)&&!(et.windows&&e.ctrlKey&&e.altKey)&&!(et.mac&&e.altKey&&!(e.ctrlKey||e.metaKey))&&(y=Gc[e.keyCode])&&y!=s?(g(x[l+c1(y,e,!0)])||e.shiftKey&&(w=q0[e.keyCode])!=s&&w!=y&&g(x[l+c1(w,e,!1)]))&&(c=!0):a&&e.shiftKey&&g(x[l+c1(s,e,!0)])&&(c=!0),!c&&g(x._any)&&(c=!0)),d&&(c=!0),c&&h&&e.stopPropagation(),Kk=null,c}class Up{constructor(e,n,r,s,i){this.className=e,this.left=n,this.top=r,this.width=s,this.height=i}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,n){return n.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,n,r){if(r.empty){let s=e.coordsAtPos(r.head,r.assoc||1);if(!s)return[];let i=Oq(e);return[new Up(n,s.left-i.left,s.top-i.top,null,s.bottom-s.top)]}else return Cle(e,n,r)}}function Oq(t){let e=t.scrollDOM.getBoundingClientRect();return{left:(t.textDirection==gr.LTR?e.left:e.right-t.scrollDOM.clientWidth*t.scaleX)-t.scrollDOM.scrollLeft*t.scaleX,top:e.top-t.scrollDOM.scrollTop*t.scaleY}}function KE(t,e,n,r){let s=t.coordsAtPos(e,n*2);if(!s)return r;let i=t.dom.getBoundingClientRect(),a=(s.top+s.bottom)/2,l=t.posAtCoords({x:i.left+1,y:a}),c=t.posAtCoords({x:i.right-1,y:a});return l==null||c==null?r:{from:Math.max(r.from,Math.min(l,c)),to:Math.min(r.to,Math.max(l,c))}}function Cle(t,e,n){if(n.to<=t.viewport.from||n.from>=t.viewport.to)return[];let r=Math.max(n.from,t.viewport.from),s=Math.min(n.to,t.viewport.to),i=t.textDirection==gr.LTR,a=t.contentDOM,l=a.getBoundingClientRect(),c=Oq(t),d=a.querySelector(".cm-line"),h=d&&window.getComputedStyle(d),m=l.left+(h?parseInt(h.paddingLeft)+Math.min(0,parseInt(h.textIndent)):0),g=l.right-(h?parseInt(h.paddingRight):0),x=Uk(t,r,1),y=Uk(t,s,-1),w=x.type==ni.Text?x:null,S=y.type==ni.Text?y:null;if(w&&(t.lineWrapping||x.widgetLineBreaks)&&(w=KE(t,r,1,w)),S&&(t.lineWrapping||y.widgetLineBreaks)&&(S=KE(t,s,-1,S)),w&&S&&w.from==S.from&&w.to==S.to)return j(N(n.from,n.to,w));{let E=w?N(n.from,null,w):T(x,!1),_=S?N(null,n.to,S):T(y,!0),A=[];return(w||x).to<(S||y).from-(w&&S?1:0)||x.widgetLineBreaks>1&&E.bottom+t.defaultLineHeight/2<_.top?A.push(k(m,E.bottom,g,_.top)):E.bottom<_.top&&t.elementAtHeight((E.bottom+_.top)/2).type==ni.Text&&(E.bottom=_.top=(E.bottom+_.top)/2),j(E).concat(A).concat(j(_))}function k(E,_,A,L){return new Up(e,E-c.left,_-c.top,A-E,L-_)}function j({top:E,bottom:_,horizontal:A}){let L=[];for(let P=0;PU&&z.from=F)break;R>Q&&$(Math.max(X,Q),E==null&&X<=U,Math.min(R,F),_==null&&R>=te,J.dir)}if(Q=Y.to+1,Q>=F)break}return B.length==0&&$(U,E==null,te,_==null,t.textDirection),{top:L,bottom:P,horizontal:B}}function T(E,_){let A=l.top+(_?E.top:E.bottom);return{top:A,bottom:A,horizontal:[]}}}function Tle(t,e){return t.constructor==e.constructor&&t.eq(e)}class Ele{constructor(e,n){this.view=e,this.layer=n,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),n.above&&this.dom.classList.add("cm-layer-above"),n.class&&this.dom.classList.add(n.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),n.mount&&n.mount(this.dom,e)}update(e){e.startState.facet(dv)!=e.state.facet(dv)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let n=0,r=e.facet(dv);for(;n!Tle(n,this.drawn[r]))){let n=this.dom.firstChild,r=0;for(let s of e)s.update&&n&&s.constructor&&this.drawn[r].constructor&&s.update(n,this.drawn[r])?(n=n.nextSibling,r++):this.dom.insertBefore(s.draw(),n);for(;n;){let s=n.nextSibling;n.remove(),n=s}this.drawn=e,et.safari&&et.safari_version>=26&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}}const dv=at.define();function jq(t){return[Vr.define(e=>new Ele(e,t)),dv.of(t)]}const Q0=at.define({combine(t){return $o(t,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,n)=>Math.min(e,n),drawRangeCursor:(e,n)=>e||n})}});function _le(t={}){return[Q0.of(t),Ale,Mle,Rle,KF.of(!0)]}function Nq(t){return t.startState.facet(Q0)!=t.state.facet(Q0)}const Ale=jq({above:!0,markers(t){let{state:e}=t,n=e.facet(Q0),r=[];for(let s of e.selection.ranges){let i=s==e.selection.main;if(s.empty||n.drawRangeCursor){let a=i?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:Me.cursor(s.head,s.head>s.anchor?-1:1);for(let c of Up.forRange(t,a,l))r.push(c)}}return r},update(t,e){t.transactions.some(r=>r.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let n=Nq(t);return n&&ZE(t.state,e),t.docChanged||t.selectionSet||n},mount(t,e){ZE(e.state,t)},class:"cm-cursorLayer"});function ZE(t,e){e.style.animationDuration=t.facet(Q0).cursorBlinkRate+"ms"}const Mle=jq({above:!1,markers(t){return t.state.selection.ranges.map(e=>e.empty?[]:Up.forRange(t,"cm-selectionBackground",e)).reduce((e,n)=>e.concat(n))},update(t,e){return t.docChanged||t.selectionSet||t.viewportChanged||Nq(t)},class:"cm-selectionLayer"}),Rle=ou.highest(Ze.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}})),Cq=Ft.define({map(t,e){return t==null?null:e.mapPos(t)}}),u0=Os.define({create(){return null},update(t,e){return t!=null&&(t=e.changes.mapPos(t)),e.effects.reduce((n,r)=>r.is(Cq)?r.value:n,t)}}),Dle=Vr.fromClass(class{constructor(t){this.view=t,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(t){var e;let n=t.state.field(u0);n==null?this.cursor!=null&&((e=this.cursor)===null||e===void 0||e.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(t.startState.field(u0)!=n||t.docChanged||t.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:t}=this,e=t.state.field(u0),n=e!=null&&t.coordsAtPos(e);if(!n)return null;let r=t.scrollDOM.getBoundingClientRect();return{left:n.left-r.left+t.scrollDOM.scrollLeft*t.scaleX,top:n.top-r.top+t.scrollDOM.scrollTop*t.scaleY,height:n.bottom-n.top}}drawCursor(t){if(this.cursor){let{scaleX:e,scaleY:n}=this.view;t?(this.cursor.style.left=t.left/e+"px",this.cursor.style.top=t.top/n+"px",this.cursor.style.height=t.height/n+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(t){this.view.state.field(u0)!=t&&this.view.dispatch({effects:Cq.of(t)})}},{eventObservers:{dragover(t){this.setDropPos(this.view.posAtCoords({x:t.clientX,y:t.clientY}))},dragleave(t){(t.target==this.view.contentDOM||!this.view.contentDOM.contains(t.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function Ple(){return[u0,Dle]}function JE(t,e,n,r,s){e.lastIndex=0;for(let i=t.iterRange(n,r),a=n,l;!i.next().done;a+=i.value.length)if(!i.lineBreak)for(;l=e.exec(i.value);)s(a+l.index,l)}function zle(t,e){let n=t.visibleRanges;if(n.length==1&&n[0].from==t.viewport.from&&n[0].to==t.viewport.to)return n;let r=[];for(let{from:s,to:i}of n)s=Math.max(t.state.doc.lineAt(s).from,s-e),i=Math.min(t.state.doc.lineAt(i).to,i+e),r.length&&r[r.length-1].to>=s?r[r.length-1].to=i:r.push({from:s,to:i});return r}class Ile{constructor(e){const{regexp:n,decoration:r,decorate:s,boundary:i,maxLength:a=1e3}=e;if(!n.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=n,s)this.addMatch=(l,c,d,h)=>s(h,d,d+l[0].length,l,c);else if(typeof r=="function")this.addMatch=(l,c,d,h)=>{let m=r(l,c,d);m&&h(d,d+l[0].length,m)};else if(r)this.addMatch=(l,c,d,h)=>h(d,d+l[0].length,r);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=i,this.maxLength=a}createDeco(e){let n=new ql,r=n.add.bind(n);for(let{from:s,to:i}of zle(e,this.maxLength))JE(e.state.doc,this.regexp,s,i,(a,l)=>this.addMatch(l,e,a,r));return n.finish()}updateDeco(e,n){let r=1e9,s=-1;return e.docChanged&&e.changes.iterChanges((i,a,l,c)=>{c>=e.view.viewport.from&&l<=e.view.viewport.to&&(r=Math.min(l,r),s=Math.max(c,s))}),e.viewportMoved||s-r>1e3?this.createDeco(e.view):s>-1?this.updateRange(e.view,n.map(e.changes),r,s):n}updateRange(e,n,r,s){for(let i of e.visibleRanges){let a=Math.max(i.from,r),l=Math.min(i.to,s);if(l>=a){let c=e.state.doc.lineAt(a),d=c.toc.from;a--)if(this.boundary.test(c.text[a-1-c.from])){h=a;break}for(;lg.push(k.range(w,S));if(c==d)for(this.regexp.lastIndex=h-c.from;(x=this.regexp.exec(c.text))&&x.indexthis.addMatch(S,e,w,y));n=n.update({filterFrom:h,filterTo:m,filter:(w,S)=>wm,add:g})}}return n}}const Zk=/x/.unicode!=null?"gu":"g",Lle=new RegExp(`[\0-\b +--Ÿ­؜​‎‏\u2028\u2029‭‮⁦⁧⁩\uFEFF-]`,Zk),Ble={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let q4=null;function Fle(){var t;if(q4==null&&typeof document<"u"&&document.body){let e=document.body.style;q4=((t=e.tabSize)!==null&&t!==void 0?t:e.MozTabSize)!=null}return q4||!1}const hv=at.define({combine(t){let e=$o(t,{render:null,specialChars:Lle,addSpecialChars:null});return(e.replaceTabs=!Fle())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,Zk)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,Zk)),e}});function qle(t={}){return[hv.of(t),$le()]}let e_=null;function $le(){return e_||(e_=Vr.fromClass(class{constructor(t){this.view=t,this.decorations=kt.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(t.state.facet(hv)),this.decorations=this.decorator.createDeco(t)}makeDecorator(t){return new Ile({regexp:t.specialChars,decoration:(e,n,r)=>{let{doc:s}=n.state,i=gi(e[0],0);if(i==9){let a=s.lineAt(r),l=n.state.tabSize,c=Nf(a.text,l,r-a.from);return kt.replace({widget:new Ule((l-c%l)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[i]||(this.decorationCache[i]=kt.replace({widget:new Vle(t,i)}))},boundary:t.replaceTabs?void 0:/[^]/})}update(t){let e=t.state.facet(hv);t.startState.facet(hv)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(t.view)):this.decorations=this.decorator.updateDeco(t,this.decorations)}},{decorations:t=>t.decorations}))}const Hle="•";function Qle(t){return t>=32?Hle:t==10?"␤":String.fromCharCode(9216+t)}class Vle extends Ho{constructor(e,n){super(),this.options=e,this.code=n}eq(e){return e.code==this.code}toDOM(e){let n=Qle(this.code),r=e.state.phrase("Control character")+" "+(Ble[this.code]||"0x"+this.code.toString(16)),s=this.options.render&&this.options.render(this.code,r,n);if(s)return s;let i=document.createElement("span");return i.textContent=n,i.title=r,i.setAttribute("aria-label",r),i.className="cm-specialChar",i}ignoreEvent(){return!1}}class Ule extends Ho{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}}function Wle(){return Xle}const Gle=kt.line({class:"cm-activeLine"}),Xle=Vr.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.docChanged||t.selectionSet)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=-1,n=[];for(let r of t.state.selection.ranges){let s=t.lineBlockAt(r.head);s.from>e&&(n.push(Gle.range(s.from)),e=s.from)}return kt.set(n)}},{decorations:t=>t.decorations});class Yle extends Ho{constructor(e){super(),this.content=e}toDOM(e){let n=document.createElement("span");return n.className="cm-placeholder",n.style.pointerEvents="none",n.appendChild(typeof this.content=="string"?document.createTextNode(this.content):typeof this.content=="function"?this.content(e):this.content.cloneNode(!0)),n.setAttribute("aria-hidden","true"),n}coordsAt(e){let n=e.firstChild?Jh(e.firstChild):[];if(!n.length)return null;let r=window.getComputedStyle(e.parentNode),s=qp(n[0],r.direction!="rtl"),i=parseInt(r.lineHeight);return s.bottom-s.top>i*1.5?{left:s.left,right:s.right,top:s.top,bottom:s.top+i}:s}ignoreEvent(){return!1}}function Kle(t){let e=Vr.fromClass(class{constructor(n){this.view=n,this.placeholder=t?kt.set([kt.widget({widget:new Yle(t),side:1}).range(0)]):kt.none}get decorations(){return this.view.state.doc.length?kt.none:this.placeholder}},{decorations:n=>n.decorations});return typeof t=="string"?[e,Ze.contentAttributes.of({"aria-placeholder":t})]:e}const Jk=2e3;function Zle(t,e,n){let r=Math.min(e.line,n.line),s=Math.max(e.line,n.line),i=[];if(e.off>Jk||n.off>Jk||e.col<0||n.col<0){let a=Math.min(e.off,n.off),l=Math.max(e.off,n.off);for(let c=r;c<=s;c++){let d=t.doc.line(c);d.length<=l&&i.push(Me.range(d.from+a,d.to+l))}}else{let a=Math.min(e.col,n.col),l=Math.max(e.col,n.col);for(let c=r;c<=s;c++){let d=t.doc.line(c),h=_k(d.text,a,t.tabSize,!0);if(h<0)i.push(Me.cursor(d.to));else{let m=_k(d.text,l,t.tabSize);i.push(Me.range(d.from+h,d.from+m))}}}return i}function Jle(t,e){let n=t.coordsAtPos(t.viewport.from);return n?Math.round(Math.abs((n.left-e)/t.defaultCharacterWidth)):-1}function t_(t,e){let n=t.posAtCoords({x:e.clientX,y:e.clientY},!1),r=t.state.doc.lineAt(n),s=n-r.from,i=s>Jk?-1:s==r.length?Jle(t,e.clientX):Nf(r.text,t.state.tabSize,n-r.from);return{line:r.number,col:i,off:s}}function ece(t,e){let n=t_(t,e),r=t.state.selection;return n?{update(s){if(s.docChanged){let i=s.changes.mapPos(s.startState.doc.line(n.line).from),a=s.state.doc.lineAt(i);n={line:a.number,col:n.col,off:Math.min(n.off,a.length)},r=r.map(s.changes)}},get(s,i,a){let l=t_(t,s);if(!l)return r;let c=Zle(t.state,n,l);return c.length?a?Me.create(c.concat(r.ranges)):Me.create(c):r}}:null}function tce(t){let e=(n=>n.altKey&&n.button==0);return Ze.mouseSelectionStyle.of((n,r)=>e(r)?ece(n,r):null)}const nce={Alt:[18,t=>!!t.altKey],Control:[17,t=>!!t.ctrlKey],Shift:[16,t=>!!t.shiftKey],Meta:[91,t=>!!t.metaKey]},rce={style:"cursor: crosshair"};function sce(t={}){let[e,n]=nce[t.key||"Alt"],r=Vr.fromClass(class{constructor(s){this.view=s,this.isDown=!1}set(s){this.isDown!=s&&(this.isDown=s,this.view.update([]))}},{eventObservers:{keydown(s){this.set(s.keyCode==e||n(s))},keyup(s){(s.keyCode==e||!n(s))&&this.set(!1)},mousemove(s){this.set(n(s))}}});return[r,Ze.contentAttributes.of(s=>{var i;return!((i=s.plugin(r))===null||i===void 0)&&i.isDown?rce:null})]}const u1="-10000px";class Tq{constructor(e,n,r,s){this.facet=n,this.createTooltipView=r,this.removeTooltipView=s,this.input=e.state.facet(n),this.tooltips=this.input.filter(a=>a);let i=null;this.tooltipViews=this.tooltips.map(a=>i=r(a,i))}update(e,n){var r;let s=e.state.facet(this.facet),i=s.filter(c=>c);if(s===this.input){for(let c of this.tooltipViews)c.update&&c.update(e);return!1}let a=[],l=n?[]:null;for(let c=0;cn[d]=c),n.length=l.length),this.input=s,this.tooltips=i,this.tooltipViews=a,!0}}function ice(t){let e=t.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:e.clientHeight,right:e.clientWidth}}const $4=at.define({combine:t=>{var e,n,r;return{position:et.ios?"absolute":((e=t.find(s=>s.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((n=t.find(s=>s.parent))===null||n===void 0?void 0:n.parent)||null,tooltipSpace:((r=t.find(s=>s.tooltipSpace))===null||r===void 0?void 0:r.tooltipSpace)||ice}}}),n_=new WeakMap,d6=Vr.fromClass(class{constructor(t){this.view=t,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let e=t.state.facet($4);this.position=e.position,this.parent=e.parent,this.classes=t.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.resizeObserver=typeof ResizeObserver=="function"?new ResizeObserver(()=>this.measureSoon()):null,this.manager=new Tq(t,h6,(n,r)=>this.createTooltip(n,r),n=>{this.resizeObserver&&this.resizeObserver.unobserve(n.dom),n.dom.remove()}),this.above=this.manager.tooltips.map(n=>!!n.above),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(n=>{Date.now()>this.lastTransaction-50&&n.length>0&&n[n.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),t.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let t of this.manager.tooltipViews)this.intersectionObserver.observe(t.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(t){t.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(t,this.above);e&&this.observeIntersection();let n=e||t.geometryChanged,r=t.state.facet($4);if(r.position!=this.position&&!this.madeAbsolute){this.position=r.position;for(let s of this.manager.tooltipViews)s.dom.style.position=this.position;n=!0}if(r.parent!=this.parent){this.parent&&this.container.remove(),this.parent=r.parent,this.createContainer();for(let s of this.manager.tooltipViews)this.container.appendChild(s.dom);n=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);n&&this.maybeMeasure()}createTooltip(t,e){let n=t.create(this.view),r=e?e.dom:null;if(n.dom.classList.add("cm-tooltip"),t.arrow&&!n.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let s=document.createElement("div");s.className="cm-tooltip-arrow",n.dom.appendChild(s)}return n.dom.style.position=this.position,n.dom.style.top=u1,n.dom.style.left="0px",this.container.insertBefore(n.dom,r),n.mount&&n.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(n.dom),n}destroy(){var t,e,n;this.view.win.removeEventListener("resize",this.measureSoon);for(let r of this.manager.tooltipViews)r.dom.remove(),(t=r.destroy)===null||t===void 0||t.call(r);this.parent&&this.container.remove(),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),(n=this.intersectionObserver)===null||n===void 0||n.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let t=1,e=1,n=!1;if(this.position=="fixed"&&this.manager.tooltipViews.length){let{dom:i}=this.manager.tooltipViews[0];if(et.safari){let a=i.getBoundingClientRect();n=Math.abs(a.top+1e4)>1||Math.abs(a.left)>1}else n=!!i.offsetParent&&i.offsetParent!=this.container.ownerDocument.body}if(n||this.position=="absolute")if(this.parent){let i=this.parent.getBoundingClientRect();i.width&&i.height&&(t=i.width/this.parent.offsetWidth,e=i.height/this.parent.offsetHeight)}else({scaleX:t,scaleY:e}=this.view.viewState);let r=this.view.scrollDOM.getBoundingClientRect(),s=o6(this.view);return{visible:{left:r.left+s.left,top:r.top+s.top,right:r.right-s.right,bottom:r.bottom-s.bottom},parent:this.parent?this.container.getBoundingClientRect():this.view.dom.getBoundingClientRect(),pos:this.manager.tooltips.map((i,a)=>{let l=this.manager.tooltipViews[a];return l.getCoords?l.getCoords(i.pos):this.view.coordsAtPos(i.pos)}),size:this.manager.tooltipViews.map(({dom:i})=>i.getBoundingClientRect()),space:this.view.state.facet($4).tooltipSpace(this.view),scaleX:t,scaleY:e,makeAbsolute:n}}writeMeasure(t){var e;if(t.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let l of this.manager.tooltipViews)l.dom.style.position="absolute"}let{visible:n,space:r,scaleX:s,scaleY:i}=t,a=[];for(let l=0;l=Math.min(n.bottom,r.bottom)||m.rightMath.min(n.right,r.right)+.1)){h.style.top=u1;continue}let x=c.arrow?d.dom.querySelector(".cm-tooltip-arrow"):null,y=x?7:0,w=g.right-g.left,S=(e=n_.get(d))!==null&&e!==void 0?e:g.bottom-g.top,k=d.offset||oce,j=this.view.textDirection==gr.LTR,N=g.width>r.right-r.left?j?r.left:r.right-g.width:j?Math.max(r.left,Math.min(m.left-(x?14:0)+k.x,r.right-w)):Math.min(Math.max(r.left,m.left-w+(x?14:0)-k.x),r.right-w),T=this.above[l];!c.strictSide&&(T?m.top-S-y-k.yr.bottom)&&T==r.bottom-m.bottom>m.top-r.top&&(T=this.above[l]=!T);let E=(T?m.top-r.top:r.bottom-m.bottom)-y;if(EN&&L.top<_+S&&L.bottom>_&&(_=T?L.top-S-2-y:L.bottom+y+2);if(this.position=="absolute"?(h.style.top=(_-t.parent.top)/i+"px",r_(h,(N-t.parent.left)/s)):(h.style.top=_/i+"px",r_(h,N/s)),x){let L=m.left+(j?k.x:-k.x)-(N+14-7);x.style.left=L/s+"px"}d.overlap!==!0&&a.push({left:N,top:_,right:A,bottom:_+S}),h.classList.toggle("cm-tooltip-above",T),h.classList.toggle("cm-tooltip-below",!T),d.positioned&&d.positioned(t.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let t of this.manager.tooltipViews)t.dom.style.top=u1}},{eventObservers:{scroll(){this.maybeMeasure()}}});function r_(t,e){let n=parseInt(t.style.left,10);(isNaN(n)||Math.abs(e-n)>1)&&(t.style.left=e+"px")}const ace=Ze.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:"14px",position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),oce={x:0,y:0},h6=at.define({enables:[d6,ace]}),Xv=at.define({combine:t=>t.reduce((e,n)=>e.concat(n),[])});class db{static create(e){return new db(e)}constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new Tq(e,Xv,(n,r)=>this.createHostedView(n,r),n=>n.dom.remove())}createHostedView(e,n){let r=e.create(this.view);return r.dom.classList.add("cm-tooltip-section"),this.dom.insertBefore(r.dom,n?n.dom.nextSibling:this.dom.firstChild),this.mounted&&r.mount&&r.mount(this.view),r}mount(e){for(let n of this.manager.tooltipViews)n.mount&&n.mount(e);this.mounted=!0}positioned(e){for(let n of this.manager.tooltipViews)n.positioned&&n.positioned(e)}update(e){this.manager.update(e)}destroy(){var e;for(let n of this.manager.tooltipViews)(e=n.destroy)===null||e===void 0||e.call(n)}passProp(e){let n;for(let r of this.manager.tooltipViews){let s=r[e];if(s!==void 0){if(n===void 0)n=s;else if(n!==s)return}}return n}get offset(){return this.passProp("offset")}get getCoords(){return this.passProp("getCoords")}get overlap(){return this.passProp("overlap")}get resize(){return this.passProp("resize")}}const lce=h6.compute([Xv],t=>{let e=t.facet(Xv);return e.length===0?null:{pos:Math.min(...e.map(n=>n.pos)),end:Math.max(...e.map(n=>{var r;return(r=n.end)!==null&&r!==void 0?r:n.pos})),create:db.create,above:e[0].above,arrow:e.some(n=>n.arrow)}});class cce{constructor(e,n,r,s,i){this.view=e,this.source=n,this.field=r,this.setHover=s,this.hoverTime=i,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active.length)return;let e=Date.now()-this.lastMove.time;el.bottom||n.xl.right+e.defaultCharacterWidth)return;let c=e.bidiSpans(e.state.doc.lineAt(s)).find(h=>h.from<=s&&h.to>=s),d=c&&c.dir==gr.RTL?-1:1;i=n.x{this.pending==l&&(this.pending=null,c&&!(Array.isArray(c)&&!c.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(c)?c:[c])}))},c=>vi(e.state,c,"hover tooltip"))}else a&&!(Array.isArray(a)&&!a.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(a)?a:[a])})}get tooltip(){let e=this.view.plugin(d6),n=e?e.manager.tooltips.findIndex(r=>r.create==db.create):-1;return n>-1?e.manager.tooltipViews[n]:null}mousemove(e){var n,r;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let{active:s,tooltip:i}=this;if(s.length&&i&&!uce(i.dom,e)||this.pending){let{pos:a}=s[0]||this.pending,l=(r=(n=s[0])===null||n===void 0?void 0:n.end)!==null&&r!==void 0?r:a;(a==l?this.view.posAtCoords(this.lastMove)!=a:!dce(this.view,a,l,e.clientX,e.clientY))&&(this.view.dispatch({effects:this.setHover.of([])}),this.pending=null)}}mouseleave(e){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;let{active:n}=this;if(n.length){let{tooltip:r}=this;r&&r.dom.contains(e.relatedTarget)?this.watchTooltipLeave(r.dom):this.view.dispatch({effects:this.setHover.of([])})}}watchTooltipLeave(e){let n=r=>{e.removeEventListener("mouseleave",n),this.active.length&&!this.view.dom.contains(r.relatedTarget)&&this.view.dispatch({effects:this.setHover.of([])})};e.addEventListener("mouseleave",n)}destroy(){clearTimeout(this.hoverTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}}const d1=4;function uce(t,e){let{left:n,right:r,top:s,bottom:i}=t.getBoundingClientRect(),a;if(a=t.querySelector(".cm-tooltip-arrow")){let l=a.getBoundingClientRect();s=Math.min(l.top,s),i=Math.max(l.bottom,i)}return e.clientX>=n-d1&&e.clientX<=r+d1&&e.clientY>=s-d1&&e.clientY<=i+d1}function dce(t,e,n,r,s,i){let a=t.scrollDOM.getBoundingClientRect(),l=t.documentTop+t.documentPadding.top+t.contentHeight;if(a.left>r||a.rights||Math.min(a.bottom,l)=e&&c<=n}function hce(t,e={}){let n=Ft.define(),r=Os.define({create(){return[]},update(s,i){if(s.length&&(e.hideOnChange&&(i.docChanged||i.selection)?s=[]:e.hideOn&&(s=s.filter(a=>!e.hideOn(i,a))),i.docChanged)){let a=[];for(let l of s){let c=i.changes.mapPos(l.pos,-1,Ds.TrackDel);if(c!=null){let d=Object.assign(Object.create(null),l);d.pos=c,d.end!=null&&(d.end=i.changes.mapPos(d.end)),a.push(d)}}s=a}for(let a of i.effects)a.is(n)&&(s=a.value),a.is(fce)&&(s=[]);return s},provide:s=>Xv.from(s)});return{active:r,extension:[r,Vr.define(s=>new cce(s,t,r,n,e.hoverTime||300)),lce]}}function Eq(t,e){let n=t.plugin(d6);if(!n)return null;let r=n.manager.tooltips.indexOf(e);return r<0?null:n.manager.tooltipViews[r]}const fce=Ft.define(),s_=at.define({combine(t){let e,n;for(let r of t)e=e||r.topContainer,n=n||r.bottomContainer;return{topContainer:e,bottomContainer:n}}});function V0(t,e){let n=t.plugin(_q),r=n?n.specs.indexOf(e):-1;return r>-1?n.panels[r]:null}const _q=Vr.fromClass(class{constructor(t){this.input=t.state.facet(U0),this.specs=this.input.filter(n=>n),this.panels=this.specs.map(n=>n(t));let e=t.state.facet(s_);this.top=new h1(t,!0,e.topContainer),this.bottom=new h1(t,!1,e.bottomContainer),this.top.sync(this.panels.filter(n=>n.top)),this.bottom.sync(this.panels.filter(n=>!n.top));for(let n of this.panels)n.dom.classList.add("cm-panel"),n.mount&&n.mount()}update(t){let e=t.state.facet(s_);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new h1(t.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new h1(t.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let n=t.state.facet(U0);if(n!=this.input){let r=n.filter(c=>c),s=[],i=[],a=[],l=[];for(let c of r){let d=this.specs.indexOf(c),h;d<0?(h=c(t.view),l.push(h)):(h=this.panels[d],h.update&&h.update(t)),s.push(h),(h.top?i:a).push(h)}this.specs=r,this.panels=s,this.top.sync(i),this.bottom.sync(a);for(let c of l)c.dom.classList.add("cm-panel"),c.mount&&c.mount()}else for(let r of this.panels)r.update&&r.update(t)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:t=>Ze.scrollMargins.of(e=>{let n=e.plugin(t);return n&&{top:n.top.scrollMargin(),bottom:n.bottom.scrollMargin()}})});class h1{constructor(e,n,r){this.view=e,this.top=n,this.container=r,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let n of this.panels)n.destroy&&e.indexOf(n)<0&&n.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let n=this.container||this.view.dom;n.insertBefore(this.dom,this.top?n.firstChild:null)}let e=this.dom.firstChild;for(let n of this.panels)if(n.dom.parentNode==this.dom){for(;e!=n.dom;)e=i_(e);e=e.nextSibling}else this.dom.insertBefore(n.dom,e);for(;e;)e=i_(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}}function i_(t){let e=t.nextSibling;return t.remove(),e}const U0=at.define({enables:_q});class Hl extends sd{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}}Hl.prototype.elementClass="";Hl.prototype.toDOM=void 0;Hl.prototype.mapMode=Ds.TrackBefore;Hl.prototype.startSide=Hl.prototype.endSide=-1;Hl.prototype.point=!0;const fv=at.define(),mce=at.define(),pce={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>Rn.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{},side:"before"},j0=at.define();function gce(t){return[Aq(),j0.of({...pce,...t})]}const a_=at.define({combine:t=>t.some(e=>e)});function Aq(t){return[xce]}const xce=Vr.fromClass(class{constructor(t){this.view=t,this.domAfter=null,this.prevViewport=t.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=t.state.facet(j0).map(e=>new l_(t,e)),this.fixed=!t.state.facet(a_);for(let e of this.gutters)e.config.side=="after"?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),t.scrollDOM.insertBefore(this.dom,t.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(t){if(this.updateGutters(t)){let e=this.prevViewport,n=t.view.viewport,r=Math.min(e.to,n.to)-Math.max(e.from,n.from);this.syncGutters(r<(n.to-n.from)*.8)}if(t.geometryChanged){let e=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=e,this.domAfter&&(this.domAfter.style.minHeight=e)}this.view.state.facet(a_)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=t.view.viewport}syncGutters(t){let e=this.dom.nextSibling;t&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let n=Rn.iter(this.view.state.facet(fv),this.view.viewport.from),r=[],s=this.gutters.map(i=>new vce(i,this.view.viewport,-this.view.documentPadding.top));for(let i of this.view.viewportLineBlocks)if(r.length&&(r=[]),Array.isArray(i.type)){let a=!0;for(let l of i.type)if(l.type==ni.Text&&a){eO(n,r,l.from);for(let c of s)c.line(this.view,l,r);a=!1}else if(l.widget)for(let c of s)c.widget(this.view,l)}else if(i.type==ni.Text){eO(n,r,i.from);for(let a of s)a.line(this.view,i,r)}else if(i.widget)for(let a of s)a.widget(this.view,i);for(let i of s)i.finish();t&&(this.view.scrollDOM.insertBefore(this.dom,e),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(t){let e=t.startState.facet(j0),n=t.state.facet(j0),r=t.docChanged||t.heightChanged||t.viewportChanged||!Rn.eq(t.startState.facet(fv),t.state.facet(fv),t.view.viewport.from,t.view.viewport.to);if(e==n)for(let s of this.gutters)s.update(t)&&(r=!0);else{r=!0;let s=[];for(let i of n){let a=e.indexOf(i);a<0?s.push(new l_(this.view,i)):(this.gutters[a].update(t),s.push(this.gutters[a]))}for(let i of this.gutters)i.dom.remove(),s.indexOf(i)<0&&i.destroy();for(let i of s)i.config.side=="after"?this.getDOMAfter().appendChild(i.dom):this.dom.appendChild(i.dom);this.gutters=s}return r}destroy(){for(let t of this.gutters)t.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:t=>Ze.scrollMargins.of(e=>{let n=e.plugin(t);if(!n||n.gutters.length==0||!n.fixed)return null;let r=n.dom.offsetWidth*e.scaleX,s=n.domAfter?n.domAfter.offsetWidth*e.scaleX:0;return e.textDirection==gr.LTR?{left:r,right:s}:{right:r,left:s}})});function o_(t){return Array.isArray(t)?t:[t]}function eO(t,e,n){for(;t.value&&t.from<=n;)t.from==n&&e.push(t.value),t.next()}class vce{constructor(e,n,r){this.gutter=e,this.height=r,this.i=0,this.cursor=Rn.iter(e.markers,n.from)}addElement(e,n,r){let{gutter:s}=this,i=(n.top-this.height)/e.scaleY,a=n.height/e.scaleY;if(this.i==s.elements.length){let l=new Mq(e,a,i,r);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(e,a,i,r);this.height=n.bottom,this.i++}line(e,n,r){let s=[];eO(this.cursor,s,n.from),r.length&&(s=s.concat(r));let i=this.gutter.config.lineMarker(e,n,s);i&&s.unshift(i);let a=this.gutter;s.length==0&&!a.config.renderEmptyElements||this.addElement(e,n,s)}widget(e,n){let r=this.gutter.config.widgetMarker(e,n.widget,n),s=r?[r]:null;for(let i of e.state.facet(mce)){let a=i(e,n.widget,n);a&&(s||(s=[])).push(a)}s&&this.addElement(e,n,s)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let n=e.elements.pop();e.dom.removeChild(n.dom),n.destroy()}}}class l_{constructor(e,n){this.view=e,this.config=n,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let r in n.domEventHandlers)this.dom.addEventListener(r,s=>{let i=s.target,a;if(i!=this.dom&&this.dom.contains(i)){for(;i.parentNode!=this.dom;)i=i.parentNode;let c=i.getBoundingClientRect();a=(c.top+c.bottom)/2}else a=s.clientY;let l=e.lineBlockAtHeight(a-e.documentTop);n.domEventHandlers[r](e,l,s)&&s.preventDefault()});this.markers=o_(n.markers(e)),n.initialSpacer&&(this.spacer=new Mq(e,0,0,[n.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let n=this.markers;if(this.markers=o_(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],e);s!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[s])}let r=e.view.viewport;return!Rn.eq(this.markers,n,r.from,r.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}}class Mq{constructor(e,n,r,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,n,r,s)}update(e,n,r,s){this.height!=n&&(this.height=n,this.dom.style.height=n+"px"),this.above!=r&&(this.dom.style.marginTop=(this.above=r)?r+"px":""),yce(this.markers,s)||this.setMarkers(e,s)}setMarkers(e,n){let r="cm-gutterElement",s=this.dom.firstChild;for(let i=0,a=0;;){let l=a,c=ii(l,c,d)||a(l,c,d):a}return r}})}});class H4 extends Hl{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}}function Q4(t,e){return t.state.facet(Ch).formatNumber(e,t.state)}const Sce=j0.compute([Ch],t=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(bce)},lineMarker(e,n,r){return r.some(s=>s.toDOM)?null:new H4(Q4(e,e.state.doc.lineAt(n.from).number))},widgetMarker:(e,n,r)=>{for(let s of e.state.facet(wce)){let i=s(e,n,r);if(i)return i}return null},lineMarkerChange:e=>e.startState.facet(Ch)!=e.state.facet(Ch),initialSpacer(e){return new H4(Q4(e,c_(e.state.doc.lines)))},updateSpacer(e,n){let r=Q4(n.view,c_(n.view.state.doc.lines));return r==e.number?e:new H4(r)},domEventHandlers:t.facet(Ch).domEventHandlers,side:"before"}));function kce(t={}){return[Ch.of(t),Aq(),Sce]}function c_(t){let e=9;for(;e{let e=[],n=-1;for(let r of t.selection.ranges){let s=t.doc.lineAt(r.head).from;s>n&&(n=s,e.push(Oce.range(s)))}return Rn.of(e)});function Nce(){return jce}const Rq=1024;let Cce=0;class V4{constructor(e,n){this.from=e,this.to=n}}class sn{constructor(e={}){this.id=Cce++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=e.combine||null}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=si.match(e)),n=>{let r=e(n);return r===void 0?null:[this,r]}}}sn.closedBy=new sn({deserialize:t=>t.split(" ")});sn.openedBy=new sn({deserialize:t=>t.split(" ")});sn.group=new sn({deserialize:t=>t.split(" ")});sn.isolate=new sn({deserialize:t=>{if(t&&t!="rtl"&&t!="ltr"&&t!="auto")throw new RangeError("Invalid value for isolate: "+t);return t||"auto"}});sn.contextHash=new sn({perNode:!0});sn.lookAhead=new sn({perNode:!0});sn.mounted=new sn({perNode:!0});class Yv{constructor(e,n,r){this.tree=e,this.overlay=n,this.parser=r}static get(e){return e&&e.props&&e.props[sn.mounted.id]}}const Tce=Object.create(null);class si{constructor(e,n,r,s=0){this.name=e,this.props=n,this.id=r,this.flags=s}static define(e){let n=e.props&&e.props.length?Object.create(null):Tce,r=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),s=new si(e.name||"",n,e.id,r);if(e.props){for(let i of e.props)if(Array.isArray(i)||(i=i(s)),i){if(i[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");n[i[0].id]=i[1]}}return s}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let n=this.prop(sn.group);return n?n.indexOf(e)>-1:!1}return this.id==e}static match(e){let n=Object.create(null);for(let r in e)for(let s of r.split(" "))n[s]=e[r];return r=>{for(let s=r.prop(sn.group),i=-1;i<(s?s.length:0);i++){let a=n[i<0?r.name:s[i]];if(a)return a}}}}si.none=new si("",Object.create(null),0,8);class hb{constructor(e){this.types=e;for(let n=0;n0;for(let c=this.cursor(a|hs.IncludeAnonymous);;){let d=!1;if(c.from<=i&&c.to>=s&&(!l&&c.type.isAnonymous||n(c)!==!1)){if(c.firstChild())continue;d=!0}for(;d&&r&&(l||!c.type.isAnonymous)&&r(c),!c.nextSibling();){if(!c.parent())return;d=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let n in this.props)e.push([+n,this.props[n]]);return e}balance(e={}){return this.children.length<=8?this:p6(si.none,this.children,this.positions,0,this.children.length,0,this.length,(n,r,s)=>new ar(this.type,n,r,s,this.propValues),e.makeTree||((n,r,s)=>new ar(si.none,n,r,s)))}static build(e){return Mce(e)}}ar.empty=new ar(si.none,[],[],0);class f6{constructor(e,n){this.buffer=e,this.index=n}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new f6(this.buffer,this.index)}}class Yc{constructor(e,n,r){this.buffer=e,this.length=n,this.set=r}get type(){return si.none}toString(){let e=[];for(let n=0;n0));c=a[c+3]);return l}slice(e,n,r){let s=this.buffer,i=new Uint16Array(n-e),a=0;for(let l=e,c=0;l=e&&ne;case 1:return n<=e&&r>e;case 2:return r>e;case 4:return!0}}function W0(t,e,n,r){for(var s;t.from==t.to||(n<1?t.from>=e:t.from>e)||(n>-1?t.to<=e:t.to0?l.length:-1;e!=d;e+=n){let h=l[e],m=c[e]+a.from;if(Dq(s,r,m,m+h.length)){if(h instanceof Yc){if(i&hs.ExcludeBuffers)continue;let g=h.findChild(0,h.buffer.length,n,r-m,s);if(g>-1)return new jo(new Ece(a,h,e,m),null,g)}else if(i&hs.IncludeAnonymous||!h.type.isAnonymous||m6(h)){let g;if(!(i&hs.IgnoreMounts)&&(g=Yv.get(h))&&!g.overlay)return new ki(g.tree,m,e,a);let x=new ki(h,m,e,a);return i&hs.IncludeAnonymous||!x.type.isAnonymous?x:x.nextChild(n<0?h.children.length-1:0,n,r,s)}}}if(i&hs.IncludeAnonymous||!a.type.isAnonymous||(a.index>=0?e=a.index+n:e=n<0?-1:a._parent._tree.children.length,a=a._parent,!a))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}enter(e,n,r=0){let s;if(!(r&hs.IgnoreOverlays)&&(s=Yv.get(this._tree))&&s.overlay){let i=e-this.from;for(let{from:a,to:l}of s.overlay)if((n>0?a<=i:a=i:l>i))return new ki(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,n,r)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function d_(t,e,n,r){let s=t.cursor(),i=[];if(!s.firstChild())return i;if(n!=null){for(let a=!1;!a;)if(a=s.type.is(n),!s.nextSibling())return i}for(;;){if(r!=null&&s.type.is(r))return i;if(s.type.is(e)&&i.push(s.node),!s.nextSibling())return r==null?i:[]}}function tO(t,e,n=e.length-1){for(let r=t;n>=0;r=r.parent){if(!r)return!1;if(!r.type.isAnonymous){if(e[n]&&e[n]!=r.name)return!1;n--}}return!0}class Ece{constructor(e,n,r,s){this.parent=e,this.buffer=n,this.index=r,this.start=s}}class jo extends Pq{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,n,r){super(),this.context=e,this._parent=n,this.index=r,this.type=e.buffer.set.types[e.buffer.buffer[r]]}child(e,n,r){let{buffer:s}=this.context,i=s.findChild(this.index+4,s.buffer[this.index+3],e,n-this.context.start,r);return i<0?null:new jo(this.context,this,i)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,n,r=0){if(r&hs.ExcludeBuffers)return null;let{buffer:s}=this.context,i=s.findChild(this.index+4,s.buffer[this.index+3],n>0?1:-1,e-this.context.start,n);return i<0?null:new jo(this.context,this,i)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,n=e.buffer[this.index+3];return n<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new jo(this.context,this._parent,n):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,n=this._parent?this._parent.index+4:0;return this.index==n?this.externalSibling(-1):new jo(this.context,this._parent,e.findChild(n,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],n=[],{buffer:r}=this.context,s=this.index+4,i=r.buffer[this.index+3];if(i>s){let a=r.buffer[this.index+1];e.push(r.slice(s,i,a)),n.push(0)}return new ar(this.type,e,n,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function zq(t){if(!t.length)return null;let e=0,n=t[0];for(let i=1;in.from||a.to=e){let l=new ki(a.tree,a.overlay[0].from+i.from,-1,i);(s||(s=[r])).push(W0(l,e,n,!1))}}return s?zq(s):r}class nO{get name(){return this.type.name}constructor(e,n=0){if(this.mode=n,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,e instanceof ki)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let r=e._parent;r;r=r._parent)this.stack.unshift(r.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,n){this.index=e;let{start:r,buffer:s}=this.buffer;return this.type=n||s.set.types[s.buffer[e]],this.from=r+s.buffer[e+1],this.to=r+s.buffer[e+2],!0}yield(e){return e?e instanceof ki?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,n,r){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,n,r,this.mode));let{buffer:s}=this.buffer,i=s.findChild(this.index+4,s.buffer[this.index+3],e,n-this.buffer.start,r);return i<0?!1:(this.stack.push(this.index),this.yieldBuf(i))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,n,r=this.mode){return this.buffer?r&hs.ExcludeBuffers?!1:this.enterChild(1,e,n):this.yield(this._tree.enter(e,n,r))}parent(){if(!this.buffer)return this.yieldNode(this.mode&hs.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&hs.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:n}=this.buffer,r=this.stack.length-1;if(e<0){let s=r<0?0:this.stack[r]+4;if(this.index!=s)return this.yieldBuf(n.findChild(s,this.index,-1,0,4))}else{let s=n.buffer[this.index+3];if(s<(r<0?n.buffer.length:n.buffer[this.stack[r]+3]))return this.yieldBuf(s)}return r<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let n,r,{buffer:s}=this;if(s){if(e>0){if(this.index-1)for(let i=n+e,a=e<0?-1:r._tree.children.length;i!=a;i+=e){let l=r._tree.children[i];if(this.mode&hs.IncludeAnonymous||l instanceof Yc||!l.type.isAnonymous||m6(l))return!1}return!0}move(e,n){if(n&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,n=0){for(;(this.from==this.to||(n<1?this.from>=e:this.from>e)||(n>-1?this.to<=e:this.to=0;){for(let a=e;a;a=a._parent)if(a.index==s){if(s==this.index)return a;n=a,r=i+1;break e}s=this.stack[--i]}for(let s=r;s=0;i--){if(i<0)return tO(this._tree,e,s);let a=r[n.buffer[this.stack[i]]];if(!a.isAnonymous){if(e[s]&&e[s]!=a.name)return!1;s--}}return!0}}function m6(t){return t.children.some(e=>e instanceof Yc||!e.type.isAnonymous||m6(e))}function Mce(t){var e;let{buffer:n,nodeSet:r,maxBufferLength:s=Rq,reused:i=[],minRepeatType:a=r.types.length}=t,l=Array.isArray(n)?new f6(n,n.length):n,c=r.types,d=0,h=0;function m(E,_,A,L,P,B){let{id:$,start:U,end:te,size:z}=l,Q=h,F=d;if(z<0)if(l.next(),z==-1){let ie=i[$];A.push(ie),L.push(U-E);return}else if(z==-3){d=$;return}else if(z==-4){h=$;return}else throw new RangeError(`Unrecognized record size: ${z}`);let Y=c[$],J,X,R=U-E;if(te-U<=s&&(X=S(l.pos-_,P))){let ie=new Uint16Array(X.size-X.skip),G=l.pos-X.size,I=ie.length;for(;l.pos>G;)I=k(X.start,ie,I);J=new Yc(ie,te-X.start,r),R=X.start-E}else{let ie=l.pos-z;l.next();let G=[],I=[],V=$>=a?$:-1,ee=0,ne=te;for(;l.pos>ie;)V>=0&&l.id==V&&l.size>=0?(l.end<=ne-s&&(y(G,I,U,ee,l.end,ne,V,Q,F),ee=G.length,ne=l.end),l.next()):B>2500?g(U,ie,G,I):m(U,ie,G,I,V,B+1);if(V>=0&&ee>0&&ee-1&&ee>0){let W=x(Y,F);J=p6(Y,G,I,0,G.length,0,te-U,W,W)}else J=w(Y,G,I,te-U,Q-te,F)}A.push(J),L.push(R)}function g(E,_,A,L){let P=[],B=0,$=-1;for(;l.pos>_;){let{id:U,start:te,end:z,size:Q}=l;if(Q>4)l.next();else{if($>-1&&te<$)break;$<0&&($=z-s),P.push(U,te,z),B++,l.next()}}if(B){let U=new Uint16Array(B*4),te=P[P.length-2];for(let z=P.length-3,Q=0;z>=0;z-=3)U[Q++]=P[z],U[Q++]=P[z+1]-te,U[Q++]=P[z+2]-te,U[Q++]=Q;A.push(new Yc(U,P[2]-te,r)),L.push(te-E)}}function x(E,_){return(A,L,P)=>{let B=0,$=A.length-1,U,te;if($>=0&&(U=A[$])instanceof ar){if(!$&&U.type==E&&U.length==P)return U;(te=U.prop(sn.lookAhead))&&(B=L[$]+U.length+te)}return w(E,A,L,P,B,_)}}function y(E,_,A,L,P,B,$,U,te){let z=[],Q=[];for(;E.length>L;)z.push(E.pop()),Q.push(_.pop()+A-P);E.push(w(r.types[$],z,Q,B-P,U-B,te)),_.push(P-A)}function w(E,_,A,L,P,B,$){if(B){let U=[sn.contextHash,B];$=$?[U].concat($):[U]}if(P>25){let U=[sn.lookAhead,P];$=$?[U].concat($):[U]}return new ar(E,_,A,L,$)}function S(E,_){let A=l.fork(),L=0,P=0,B=0,$=A.end-s,U={size:0,start:0,skip:0};e:for(let te=A.pos-E;A.pos>te;){let z=A.size;if(A.id==_&&z>=0){U.size=L,U.start=P,U.skip=B,B+=4,L+=4,A.next();continue}let Q=A.pos-z;if(z<0||Q=a?4:0,Y=A.start;for(A.next();A.pos>Q;){if(A.size<0)if(A.size==-3)F+=4;else break e;else A.id>=a&&(F+=4);A.next()}P=Y,L+=z,B+=F}return(_<0||L==E)&&(U.size=L,U.start=P,U.skip=B),U.size>4?U:void 0}function k(E,_,A){let{id:L,start:P,end:B,size:$}=l;if(l.next(),$>=0&&L4){let te=l.pos-($-4);for(;l.pos>te;)A=k(E,_,A)}_[--A]=U,_[--A]=B-E,_[--A]=P-E,_[--A]=L}else $==-3?d=L:$==-4&&(h=L);return A}let j=[],N=[];for(;l.pos>0;)m(t.start||0,t.bufferStart||0,j,N,-1,0);let T=(e=t.length)!==null&&e!==void 0?e:j.length?N[0]+j[0].length:0;return new ar(c[t.topID],j.reverse(),N.reverse(),T)}const h_=new WeakMap;function mv(t,e){if(!t.isAnonymous||e instanceof Yc||e.type!=t)return 1;let n=h_.get(e);if(n==null){n=1;for(let r of e.children){if(r.type!=t||!(r instanceof ar)){n=1;break}n+=mv(t,r)}h_.set(e,n)}return n}function p6(t,e,n,r,s,i,a,l,c){let d=0;for(let y=r;y=h)break;_+=A}if(N==T+1){if(_>h){let A=y[T];x(A.children,A.positions,0,A.children.length,w[T]+j);continue}m.push(y[T])}else{let A=w[N-1]+y[N-1].length-E;m.push(p6(t,y,w,T,N,E,A,null,c))}g.push(E+j-i)}}return x(e,n,r,s,0),(l||c)(m,g,a)}class Rce{constructor(){this.map=new WeakMap}setBuffer(e,n,r){let s=this.map.get(e);s||this.map.set(e,s=new Map),s.set(n,r)}getBuffer(e,n){let r=this.map.get(e);return r&&r.get(n)}set(e,n){e instanceof jo?this.setBuffer(e.context.buffer,e.index,n):e instanceof ki&&this.map.set(e.tree,n)}get(e){return e instanceof jo?this.getBuffer(e.context.buffer,e.index):e instanceof ki?this.map.get(e.tree):void 0}cursorSet(e,n){e.buffer?this.setBuffer(e.buffer.buffer,e.index,n):this.map.set(e.tree,n)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}}class Ju{constructor(e,n,r,s,i=!1,a=!1){this.from=e,this.to=n,this.tree=r,this.offset=s,this.open=(i?1:0)|(a?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,n=[],r=!1){let s=[new Ju(0,e.length,e,0,!1,r)];for(let i of n)i.to>e.length&&s.push(i);return s}static applyChanges(e,n,r=128){if(!n.length)return e;let s=[],i=1,a=e.length?e[0]:null;for(let l=0,c=0,d=0;;l++){let h=l=r)for(;a&&a.from=g.from||m<=g.to||d){let x=Math.max(g.from,c)-d,y=Math.min(g.to,m)-d;g=x>=y?null:new Ju(x,y,g.tree,g.offset+d,l>0,!!h)}if(g&&s.push(g),a.to>m)break;a=inew V4(s.from,s.to)):[new V4(0,0)]:[new V4(0,e.length)],this.createParse(e,n||[],r)}parse(e,n,r){let s=this.startParse(e,n,r);for(;;){let i=s.advance();if(i)return i}}};class Dce{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,n){return this.string.slice(e,n)}}new sn({perNode:!0});let Pce=0;class ha{constructor(e,n,r,s){this.name=e,this.set=n,this.base=r,this.modified=s,this.id=Pce++}toString(){let{name:e}=this;for(let n of this.modified)n.name&&(e=`${n.name}(${e})`);return e}static define(e,n){let r=typeof e=="string"?e:"?";if(e instanceof ha&&(n=e),n?.base)throw new Error("Can not derive from a modified tag");let s=new ha(r,[],null,[]);if(s.set.push(s),n)for(let i of n.set)s.set.push(i);return s}static defineModifier(e){let n=new Kv(e);return r=>r.modified.indexOf(n)>-1?r:Kv.get(r.base||r,r.modified.concat(n).sort((s,i)=>s.id-i.id))}}let zce=0;class Kv{constructor(e){this.name=e,this.instances=[],this.id=zce++}static get(e,n){if(!n.length)return e;let r=n[0].instances.find(l=>l.base==e&&Ice(n,l.modified));if(r)return r;let s=[],i=new ha(e.name,s,e,n);for(let l of n)l.instances.push(i);let a=Lce(n);for(let l of e.set)if(!l.modified.length)for(let c of a)s.push(Kv.get(l,c));return i}}function Ice(t,e){return t.length==e.length&&t.every((n,r)=>n==e[r])}function Lce(t){let e=[[]];for(let n=0;nr.length-n.length)}function x6(t){let e=Object.create(null);for(let n in t){let r=t[n];Array.isArray(r)||(r=[r]);for(let s of n.split(" "))if(s){let i=[],a=2,l=s;for(let m=0;;){if(l=="..."&&m>0&&m+3==s.length){a=1;break}let g=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!g)throw new RangeError("Invalid path: "+s);if(i.push(g[0]=="*"?"":g[0][0]=='"'?JSON.parse(g[0]):g[0]),m+=g[0].length,m==s.length)break;let x=s[m++];if(m==s.length&&x=="!"){a=0;break}if(x!="/")throw new RangeError("Invalid path: "+s);l=s.slice(m)}let c=i.length-1,d=i[c];if(!d)throw new RangeError("Invalid path: "+s);let h=new G0(r,a,c>0?i.slice(0,c):null);e[d]=h.sort(e[d])}}return Iq.add(e)}const Iq=new sn({combine(t,e){let n,r,s;for(;t||e;){if(!t||e&&t.depth>=e.depth?(s=e,e=e.next):(s=t,t=t.next),n&&n.mode==s.mode&&!s.context&&!n.context)continue;let i=new G0(s.tags,s.mode,s.context);n?n.next=i:r=i,n=i}return r}});class G0{constructor(e,n,r,s){this.tags=e,this.mode=n,this.context=r,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth{let a=s;for(let l of i)for(let c of l.set){let d=n[c.id];if(d){a=a?a+" "+d:d;break}}return a},scope:r}}function Bce(t,e){let n=null;for(let r of t){let s=r.style(e);s&&(n=n?n+" "+s:s)}return n}function Fce(t,e,n,r=0,s=t.length){let i=new qce(r,Array.isArray(e)?e:[e],n);i.highlightRange(t.cursor(),r,s,"",i.highlighters),i.flush(s)}class qce{constructor(e,n,r){this.at=e,this.highlighters=n,this.span=r,this.class=""}startSpan(e,n){n!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=n)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,n,r,s,i){let{type:a,from:l,to:c}=e;if(l>=r||c<=n)return;a.isTop&&(i=this.highlighters.filter(x=>!x.scope||x.scope(a)));let d=s,h=$ce(e)||G0.empty,m=Bce(i,h.tags);if(m&&(d&&(d+=" "),d+=m,h.mode==1&&(s+=(s?" ":"")+m)),this.startSpan(Math.max(n,l),d),h.opaque)return;let g=e.tree&&e.tree.prop(sn.mounted);if(g&&g.overlay){let x=e.node.enter(g.overlay[0].from+l,1),y=this.highlighters.filter(S=>!S.scope||S.scope(g.tree.type)),w=e.firstChild();for(let S=0,k=l;;S++){let j=S=N||!e.nextSibling())););if(!j||N>r)break;k=j.to+l,k>n&&(this.highlightRange(x.cursor(),Math.max(n,j.from+l),Math.min(r,k),"",y),this.startSpan(Math.min(r,k),d))}w&&e.parent()}else if(e.firstChild()){g&&(s="");do if(!(e.to<=n)){if(e.from>=r)break;this.highlightRange(e,n,r,s,i),this.startSpan(Math.min(r,e.to),d)}while(e.nextSibling());e.parent()}}}function $ce(t){let e=t.type.prop(Iq);for(;e&&e.context&&!t.matchContext(e.context);)e=e.next;return e||null}const Ke=ha.define,m1=Ke(),Mc=Ke(),f_=Ke(Mc),m_=Ke(Mc),Rc=Ke(),p1=Ke(Rc),U4=Ke(Rc),po=Ke(),Ru=Ke(po),fo=Ke(),mo=Ke(),rO=Ke(),qm=Ke(rO),g1=Ke(),ve={comment:m1,lineComment:Ke(m1),blockComment:Ke(m1),docComment:Ke(m1),name:Mc,variableName:Ke(Mc),typeName:f_,tagName:Ke(f_),propertyName:m_,attributeName:Ke(m_),className:Ke(Mc),labelName:Ke(Mc),namespace:Ke(Mc),macroName:Ke(Mc),literal:Rc,string:p1,docString:Ke(p1),character:Ke(p1),attributeValue:Ke(p1),number:U4,integer:Ke(U4),float:Ke(U4),bool:Ke(Rc),regexp:Ke(Rc),escape:Ke(Rc),color:Ke(Rc),url:Ke(Rc),keyword:fo,self:Ke(fo),null:Ke(fo),atom:Ke(fo),unit:Ke(fo),modifier:Ke(fo),operatorKeyword:Ke(fo),controlKeyword:Ke(fo),definitionKeyword:Ke(fo),moduleKeyword:Ke(fo),operator:mo,derefOperator:Ke(mo),arithmeticOperator:Ke(mo),logicOperator:Ke(mo),bitwiseOperator:Ke(mo),compareOperator:Ke(mo),updateOperator:Ke(mo),definitionOperator:Ke(mo),typeOperator:Ke(mo),controlOperator:Ke(mo),punctuation:rO,separator:Ke(rO),bracket:qm,angleBracket:Ke(qm),squareBracket:Ke(qm),paren:Ke(qm),brace:Ke(qm),content:po,heading:Ru,heading1:Ke(Ru),heading2:Ke(Ru),heading3:Ke(Ru),heading4:Ke(Ru),heading5:Ke(Ru),heading6:Ke(Ru),contentSeparator:Ke(po),list:Ke(po),quote:Ke(po),emphasis:Ke(po),strong:Ke(po),link:Ke(po),monospace:Ke(po),strikethrough:Ke(po),inserted:Ke(),deleted:Ke(),changed:Ke(),invalid:Ke(),meta:g1,documentMeta:Ke(g1),annotation:Ke(g1),processingInstruction:Ke(g1),definition:ha.defineModifier("definition"),constant:ha.defineModifier("constant"),function:ha.defineModifier("function"),standard:ha.defineModifier("standard"),local:ha.defineModifier("local"),special:ha.defineModifier("special")};for(let t in ve){let e=ve[t];e instanceof ha&&(e.name=t)}Lq([{tag:ve.link,class:"tok-link"},{tag:ve.heading,class:"tok-heading"},{tag:ve.emphasis,class:"tok-emphasis"},{tag:ve.strong,class:"tok-strong"},{tag:ve.keyword,class:"tok-keyword"},{tag:ve.atom,class:"tok-atom"},{tag:ve.bool,class:"tok-bool"},{tag:ve.url,class:"tok-url"},{tag:ve.labelName,class:"tok-labelName"},{tag:ve.inserted,class:"tok-inserted"},{tag:ve.deleted,class:"tok-deleted"},{tag:ve.literal,class:"tok-literal"},{tag:ve.string,class:"tok-string"},{tag:ve.number,class:"tok-number"},{tag:[ve.regexp,ve.escape,ve.special(ve.string)],class:"tok-string2"},{tag:ve.variableName,class:"tok-variableName"},{tag:ve.local(ve.variableName),class:"tok-variableName tok-local"},{tag:ve.definition(ve.variableName),class:"tok-variableName tok-definition"},{tag:ve.special(ve.variableName),class:"tok-variableName2"},{tag:ve.definition(ve.propertyName),class:"tok-propertyName tok-definition"},{tag:ve.typeName,class:"tok-typeName"},{tag:ve.namespace,class:"tok-namespace"},{tag:ve.className,class:"tok-className"},{tag:ve.macroName,class:"tok-macroName"},{tag:ve.propertyName,class:"tok-propertyName"},{tag:ve.operator,class:"tok-operator"},{tag:ve.comment,class:"tok-comment"},{tag:ve.meta,class:"tok-meta"},{tag:ve.invalid,class:"tok-invalid"},{tag:ve.punctuation,class:"tok-punctuation"}]);var W4;const Qu=new sn;function Bq(t){return at.define({combine:t?e=>e.concat(t):void 0})}const Hce=new sn;class va{constructor(e,n,r=[],s=""){this.data=e,this.name=s,wn.prototype.hasOwnProperty("tree")||Object.defineProperty(wn.prototype,"tree",{get(){return Ss(this)}}),this.parser=n,this.extension=[Kc.of(this),wn.languageData.of((i,a,l)=>{let c=p_(i,a,l),d=c.type.prop(Qu);if(!d)return[];let h=i.facet(d),m=c.type.prop(Hce);if(m){let g=c.resolve(a-c.from,l);for(let x of m)if(x.test(g,i)){let y=i.facet(x.facet);return x.type=="replace"?y:y.concat(h)}}return h})].concat(r)}isActiveAt(e,n,r=-1){return p_(e,n,r).type.prop(Qu)==this.data}findRegions(e){let n=e.facet(Kc);if(n?.data==this.data)return[{from:0,to:e.doc.length}];if(!n||!n.allowsNesting)return[];let r=[],s=(i,a)=>{if(i.prop(Qu)==this.data){r.push({from:a,to:a+i.length});return}let l=i.prop(sn.mounted);if(l){if(l.tree.prop(Qu)==this.data){if(l.overlay)for(let c of l.overlay)r.push({from:c.from+a,to:c.to+a});else r.push({from:a,to:a+i.length});return}else if(l.overlay){let c=r.length;if(s(l.tree,l.overlay[0].from+a),r.length>c)return}}for(let c=0;cr.isTop?n:void 0)]}),e.name)}configure(e,n){return new X0(this.data,this.parser.configure(e),n||this.name)}get allowsNesting(){return this.parser.hasWrappers()}}function Ss(t){let e=t.field(va.state,!1);return e?e.tree:ar.empty}class Qce{constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,n){let r=this.cursorPos-this.string.length;return e=this.cursorPos?this.doc.sliceString(e,n):this.string.slice(e-r,n-r)}}let $m=null;class rf{constructor(e,n,r=[],s,i,a,l,c){this.parser=e,this.state=n,this.fragments=r,this.tree=s,this.treeLen=i,this.viewport=a,this.skipped=l,this.scheduleOn=c,this.parse=null,this.tempSkipped=[]}static create(e,n,r){return new rf(e,n,[],ar.empty,0,r,[],null)}startParse(){return this.parser.startParse(new Qce(this.state.doc),this.fragments)}work(e,n){return n!=null&&n>=this.state.doc.length&&(n=void 0),this.tree!=ar.empty&&this.isDone(n??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var r;if(typeof e=="number"){let s=Date.now()+e;e=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),n!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>n)&&n=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(n=this.parse.advance()););}),this.treeLen=e,this.tree=n,this.fragments=this.withoutTempSkipped(Ju.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let n=$m;$m=this;try{return e()}finally{$m=n}}withoutTempSkipped(e){for(let n;n=this.tempSkipped.pop();)e=g_(e,n.from,n.to);return e}changes(e,n){let{fragments:r,tree:s,treeLen:i,viewport:a,skipped:l}=this;if(this.takeTree(),!e.empty){let c=[];if(e.iterChangedRanges((d,h,m,g)=>c.push({fromA:d,toA:h,fromB:m,toB:g})),r=Ju.applyChanges(r,c),s=ar.empty,i=0,a={from:e.mapPos(a.from,-1),to:e.mapPos(a.to,1)},this.skipped.length){l=[];for(let d of this.skipped){let h=e.mapPos(d.from,1),m=e.mapPos(d.to,-1);he.from&&(this.fragments=g_(this.fragments,s,i),this.skipped.splice(r--,1))}return this.skipped.length>=n?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,n){this.skipped.push({from:e,to:n})}static getSkippingParser(e){return new class extends g6{createParse(n,r,s){let i=s[0].from,a=s[s.length-1].to;return{parsedPos:i,advance(){let c=$m;if(c){for(let d of s)c.tempSkipped.push(d);e&&(c.scheduleOn=c.scheduleOn?Promise.all([c.scheduleOn,e]):e)}return this.parsedPos=a,new ar(si.none,[],[],a-i)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let n=this.fragments;return this.treeLen>=e&&n.length&&n[0].from==0&&n[0].to>=e}static get(){return $m}}function g_(t,e,n){return Ju.applyChanges(t,[{fromA:e,toA:n,fromB:e,toB:n}])}class sf{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let n=this.context.changes(e.changes,e.state),r=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),n.viewport.to);return n.work(20,r)||n.takeTree(),new sf(n)}static init(e){let n=Math.min(3e3,e.doc.length),r=rf.create(e.facet(Kc).parser,e,{from:0,to:n});return r.work(20,n)||r.takeTree(),new sf(r)}}va.state=Os.define({create:sf.init,update(t,e){for(let n of e.effects)if(n.is(va.setState))return n.value;return e.startState.facet(Kc)!=e.state.facet(Kc)?sf.init(e.state):t.apply(e)}});let Fq=t=>{let e=setTimeout(()=>t(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(Fq=t=>{let e=-1,n=setTimeout(()=>{e=requestIdleCallback(t,{timeout:400})},100);return()=>e<0?clearTimeout(n):cancelIdleCallback(e)});const G4=typeof navigator<"u"&&(!((W4=navigator.scheduling)===null||W4===void 0)&&W4.isInputPending)?()=>navigator.scheduling.isInputPending():null,Vce=Vr.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let n=this.view.state.field(va.state).context;(n.updateViewport(e.view.viewport)||this.view.viewport.to>n.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(n)}scheduleWork(){if(this.working)return;let{state:e}=this.view,n=e.field(va.state);(n.tree!=n.context.tree||!n.context.isDone(e.doc.length))&&(this.working=Fq(this.work))}work(e){this.working=null;let n=Date.now();if(this.chunkEnds+1e3,c=i.context.work(()=>G4&&G4()||Date.now()>a,s+(l?0:1e5));this.chunkBudget-=Date.now()-n,(c||this.chunkBudget<=0)&&(i.context.takeTree(),this.view.dispatch({effects:va.setState.of(new sf(i.context))})),this.chunkBudget>0&&!(c&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(i.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(n=>vi(this.view.state,n)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Kc=at.define({combine(t){return t.length?t[0]:null},enables:t=>[va.state,Vce,Ze.contentAttributes.compute([t],e=>{let n=e.facet(t);return n&&n.name?{"data-language":n.name}:{}})]});class qq{constructor(e,n=[]){this.language=e,this.support=n,this.extension=[e,n]}}const Uce=at.define(),Wp=at.define({combine:t=>{if(!t.length)return" ";let e=t[0];if(!e||/\S/.test(e)||Array.from(e).some(n=>n!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(t[0]));return e}});function ld(t){let e=t.facet(Wp);return e.charCodeAt(0)==9?t.tabSize*e.length:e.length}function Y0(t,e){let n="",r=t.tabSize,s=t.facet(Wp)[0];if(s==" "){for(;e>=r;)n+=" ",e-=r;s=" "}for(let i=0;i=e?Wce(t,n,e):null}class fb{constructor(e,n={}){this.state=e,this.options=n,this.unit=ld(e)}lineAt(e,n=1){let r=this.state.doc.lineAt(e),{simulateBreak:s,simulateDoubleBreak:i}=this.options;return s!=null&&s>=r.from&&s<=r.to?i&&s==e?{text:"",from:e}:(n<0?s-1&&(i+=a-this.countColumn(r,r.search(/\S|$/))),i}countColumn(e,n=e.length){return Nf(e,this.state.tabSize,n)}lineIndent(e,n=1){let{text:r,from:s}=this.lineAt(e,n),i=this.options.overrideIndentation;if(i){let a=i(s);if(a>-1)return a}return this.countColumn(r,r.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const mb=new sn;function Wce(t,e,n){let r=e.resolveStack(n),s=e.resolveInner(n,-1).resolve(n,0).enterUnfinishedNodesBefore(n);if(s!=r.node){let i=[];for(let a=s;a&&!(a.fromr.node.to||a.from==r.node.from&&a.type==r.node.type);a=a.parent)i.push(a);for(let a=i.length-1;a>=0;a--)r={node:i[a],next:r}}return $q(r,t,n)}function $q(t,e,n){for(let r=t;r;r=r.next){let s=Xce(r.node);if(s)return s(y6.create(e,n,r))}return 0}function Gce(t){return t.pos==t.options.simulateBreak&&t.options.simulateDoubleBreak}function Xce(t){let e=t.type.prop(mb);if(e)return e;let n=t.firstChild,r;if(n&&(r=n.type.prop(sn.closedBy))){let s=t.lastChild,i=s&&r.indexOf(s.name)>-1;return a=>Hq(a,!0,1,void 0,i&&!Gce(a)?s.from:void 0)}return t.parent==null?Yce:null}function Yce(){return 0}class y6 extends fb{constructor(e,n,r){super(e.state,e.options),this.base=e,this.pos=n,this.context=r}get node(){return this.context.node}static create(e,n,r){return new y6(e,n,r)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let n=this.state.doc.lineAt(e.from);for(;;){let r=e.resolve(n.from);for(;r.parent&&r.parent.from==r.from;)r=r.parent;if(Kce(r,e))break;n=this.state.doc.lineAt(r.from)}return this.lineIndent(n.from)}continue(){return $q(this.context.next,this.base,this.pos)}}function Kce(t,e){for(let n=e;n;n=n.parent)if(t==n)return!0;return!1}function Zce(t){let e=t.node,n=e.childAfter(e.from),r=e.lastChild;if(!n)return null;let s=t.options.simulateBreak,i=t.state.doc.lineAt(n.from),a=s==null||s<=i.from?i.to:Math.min(i.to,s);for(let l=n.to;;){let c=e.childAfter(l);if(!c||c==r)return null;if(!c.type.isSkipped){if(c.from>=a)return null;let d=/^ */.exec(i.text.slice(n.to-i.from))[0].length;return{from:n.from,to:n.to+d}}l=c.to}}function X4({closing:t,align:e=!0,units:n=1}){return r=>Hq(r,e,n,t)}function Hq(t,e,n,r,s){let i=t.textAfter,a=i.match(/^\s*/)[0].length,l=r&&i.slice(a,a+r.length)==r||s==t.pos+a,c=e?Zce(t):null;return c?l?t.column(c.from):t.column(c.to):t.baseIndent+(l?0:t.unit*n)}function x_({except:t,units:e=1}={}){return n=>{let r=t&&t.test(n.textAfter);return n.baseIndent+(r?0:e*n.unit)}}const Jce=200;function eue(){return wn.transactionFilter.of(t=>{if(!t.docChanged||!t.isUserEvent("input.type")&&!t.isUserEvent("input.complete"))return t;let e=t.startState.languageDataAt("indentOnInput",t.startState.selection.main.head);if(!e.length)return t;let n=t.newDoc,{head:r}=t.newSelection.main,s=n.lineAt(r);if(r>s.from+Jce)return t;let i=n.sliceString(s.from,r);if(!e.some(d=>d.test(i)))return t;let{state:a}=t,l=-1,c=[];for(let{head:d}of a.selection.ranges){let h=a.doc.lineAt(d);if(h.from==l)continue;l=h.from;let m=v6(a,h.from);if(m==null)continue;let g=/^\s*/.exec(h.text)[0],x=Y0(a,m);g!=x&&c.push({from:h.from,to:h.from+g.length,insert:x})}return c.length?[t,{changes:c,sequential:!0}]:t})}const tue=at.define(),b6=new sn;function Qq(t){let e=t.firstChild,n=t.lastChild;return e&&e.ton)continue;if(i&&l.from=e&&d.to>n&&(i=d)}}return i}function rue(t){let e=t.lastChild;return e&&e.to==t.to&&e.type.isError}function Zv(t,e,n){for(let r of t.facet(tue)){let s=r(t,e,n);if(s)return s}return nue(t,e,n)}function Vq(t,e){let n=e.mapPos(t.from,1),r=e.mapPos(t.to,-1);return n>=r?void 0:{from:n,to:r}}const pb=Ft.define({map:Vq}),Gp=Ft.define({map:Vq});function Uq(t){let e=[];for(let{head:n}of t.state.selection.ranges)e.some(r=>r.from<=n&&r.to>=n)||e.push(t.lineBlockAt(n));return e}const cd=Os.define({create(){return kt.none},update(t,e){e.isUserEvent("delete")&&e.changes.iterChangedRanges((n,r)=>t=v_(t,n,r)),t=t.map(e.changes);for(let n of e.effects)if(n.is(pb)&&!sue(t,n.value.from,n.value.to)){let{preparePlaceholder:r}=e.state.facet(Xq),s=r?kt.replace({widget:new due(r(e.state,n.value))}):y_;t=t.update({add:[s.range(n.value.from,n.value.to)]})}else n.is(Gp)&&(t=t.update({filter:(r,s)=>n.value.from!=r||n.value.to!=s,filterFrom:n.value.from,filterTo:n.value.to}));return e.selection&&(t=v_(t,e.selection.main.head)),t},provide:t=>Ze.decorations.from(t),toJSON(t,e){let n=[];return t.between(0,e.doc.length,(r,s)=>{n.push(r,s)}),n},fromJSON(t){if(!Array.isArray(t)||t.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let n=0;n{se&&(r=!0)}),r?t.update({filterFrom:e,filterTo:n,filter:(s,i)=>s>=n||i<=e}):t}function Jv(t,e,n){var r;let s=null;return(r=t.field(cd,!1))===null||r===void 0||r.between(e,n,(i,a)=>{(!s||s.from>i)&&(s={from:i,to:a})}),s}function sue(t,e,n){let r=!1;return t.between(e,e,(s,i)=>{s==e&&i==n&&(r=!0)}),r}function Wq(t,e){return t.field(cd,!1)?e:e.concat(Ft.appendConfig.of(Yq()))}const iue=t=>{for(let e of Uq(t)){let n=Zv(t.state,e.from,e.to);if(n)return t.dispatch({effects:Wq(t.state,[pb.of(n),Gq(t,n)])}),!0}return!1},aue=t=>{if(!t.state.field(cd,!1))return!1;let e=[];for(let n of Uq(t)){let r=Jv(t.state,n.from,n.to);r&&e.push(Gp.of(r),Gq(t,r,!1))}return e.length&&t.dispatch({effects:e}),e.length>0};function Gq(t,e,n=!0){let r=t.state.doc.lineAt(e.from).number,s=t.state.doc.lineAt(e.to).number;return Ze.announce.of(`${t.state.phrase(n?"Folded lines":"Unfolded lines")} ${r} ${t.state.phrase("to")} ${s}.`)}const oue=t=>{let{state:e}=t,n=[];for(let r=0;r{let e=t.state.field(cd,!1);if(!e||!e.size)return!1;let n=[];return e.between(0,t.state.doc.length,(r,s)=>{n.push(Gp.of({from:r,to:s}))}),t.dispatch({effects:n}),!0},cue=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:iue},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:aue},{key:"Ctrl-Alt-[",run:oue},{key:"Ctrl-Alt-]",run:lue}],uue={placeholderDOM:null,preparePlaceholder:null,placeholderText:"…"},Xq=at.define({combine(t){return $o(t,uue)}});function Yq(t){return[cd,mue]}function Kq(t,e){let{state:n}=t,r=n.facet(Xq),s=a=>{let l=t.lineBlockAt(t.posAtDOM(a.target)),c=Jv(t.state,l.from,l.to);c&&t.dispatch({effects:Gp.of(c)}),a.preventDefault()};if(r.placeholderDOM)return r.placeholderDOM(t,s,e);let i=document.createElement("span");return i.textContent=r.placeholderText,i.setAttribute("aria-label",n.phrase("folded code")),i.title=n.phrase("unfold"),i.className="cm-foldPlaceholder",i.onclick=s,i}const y_=kt.replace({widget:new class extends Ho{toDOM(t){return Kq(t,null)}}});class due extends Ho{constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return Kq(e,this.value)}}const hue={openText:"⌄",closedText:"›",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1};class Y4 extends Hl{constructor(e,n){super(),this.config=e,this.open=n}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let n=document.createElement("span");return n.textContent=this.open?this.config.openText:this.config.closedText,n.title=e.state.phrase(this.open?"Fold line":"Unfold line"),n}}function fue(t={}){let e={...hue,...t},n=new Y4(e,!0),r=new Y4(e,!1),s=Vr.fromClass(class{constructor(a){this.from=a.viewport.from,this.markers=this.buildMarkers(a)}update(a){(a.docChanged||a.viewportChanged||a.startState.facet(Kc)!=a.state.facet(Kc)||a.startState.field(cd,!1)!=a.state.field(cd,!1)||Ss(a.startState)!=Ss(a.state)||e.foldingChanged(a))&&(this.markers=this.buildMarkers(a.view))}buildMarkers(a){let l=new ql;for(let c of a.viewportLineBlocks){let d=Jv(a.state,c.from,c.to)?r:Zv(a.state,c.from,c.to)?n:null;d&&l.add(c.from,c.from,d)}return l.finish()}}),{domEventHandlers:i}=e;return[s,gce({class:"cm-foldGutter",markers(a){var l;return((l=a.plugin(s))===null||l===void 0?void 0:l.markers)||Rn.empty},initialSpacer(){return new Y4(e,!1)},domEventHandlers:{...i,click:(a,l,c)=>{if(i.click&&i.click(a,l,c))return!0;let d=Jv(a.state,l.from,l.to);if(d)return a.dispatch({effects:Gp.of(d)}),!0;let h=Zv(a.state,l.from,l.to);return h?(a.dispatch({effects:pb.of(h)}),!0):!1}}}),Yq()]}const mue=Ze.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}});class Xp{constructor(e,n){this.specs=e;let r;function s(l){let c=Wc.newName();return(r||(r=Object.create(null)))["."+c]=l,c}const i=typeof n.all=="string"?n.all:n.all?s(n.all):void 0,a=n.scope;this.scope=a instanceof va?l=>l.prop(Qu)==a.data:a?l=>l==a:void 0,this.style=Lq(e.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:i}).style,this.module=r?new Wc(r):null,this.themeType=n.themeType}static define(e,n){return new Xp(e,n||{})}}const sO=at.define(),Zq=at.define({combine(t){return t.length?[t[0]]:null}});function K4(t){let e=t.facet(sO);return e.length?e:t.facet(Zq)}function Jq(t,e){let n=[gue],r;return t instanceof Xp&&(t.module&&n.push(Ze.styleModule.of(t.module)),r=t.themeType),e?.fallback?n.push(Zq.of(t)):r?n.push(sO.computeN([Ze.darkTheme],s=>s.facet(Ze.darkTheme)==(r=="dark")?[t]:[])):n.push(sO.of(t)),n}class pue{constructor(e){this.markCache=Object.create(null),this.tree=Ss(e.state),this.decorations=this.buildDeco(e,K4(e.state)),this.decoratedTo=e.viewport.to}update(e){let n=Ss(e.state),r=K4(e.state),s=r!=K4(e.startState),{viewport:i}=e.view,a=e.changes.mapPos(this.decoratedTo,1);n.length=i.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=a):(n!=this.tree||e.viewportChanged||s)&&(this.tree=n,this.decorations=this.buildDeco(e.view,r),this.decoratedTo=i.to)}buildDeco(e,n){if(!n||!this.tree.length)return kt.none;let r=new ql;for(let{from:s,to:i}of e.visibleRanges)Fce(this.tree,n,(a,l,c)=>{r.add(a,l,this.markCache[c]||(this.markCache[c]=kt.mark({class:c})))},s,i);return r.finish()}}const gue=ou.high(Vr.fromClass(pue,{decorations:t=>t.decorations})),xue=Xp.define([{tag:ve.meta,color:"#404740"},{tag:ve.link,textDecoration:"underline"},{tag:ve.heading,textDecoration:"underline",fontWeight:"bold"},{tag:ve.emphasis,fontStyle:"italic"},{tag:ve.strong,fontWeight:"bold"},{tag:ve.strikethrough,textDecoration:"line-through"},{tag:ve.keyword,color:"#708"},{tag:[ve.atom,ve.bool,ve.url,ve.contentSeparator,ve.labelName],color:"#219"},{tag:[ve.literal,ve.inserted],color:"#164"},{tag:[ve.string,ve.deleted],color:"#a11"},{tag:[ve.regexp,ve.escape,ve.special(ve.string)],color:"#e40"},{tag:ve.definition(ve.variableName),color:"#00f"},{tag:ve.local(ve.variableName),color:"#30a"},{tag:[ve.typeName,ve.namespace],color:"#085"},{tag:ve.className,color:"#167"},{tag:[ve.special(ve.variableName),ve.macroName],color:"#256"},{tag:ve.definition(ve.propertyName),color:"#00c"},{tag:ve.comment,color:"#940"},{tag:ve.invalid,color:"#f00"}]),vue=Ze.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),e$=1e4,t$="()[]{}",n$=at.define({combine(t){return $o(t,{afterCursor:!0,brackets:t$,maxScanDistance:e$,renderMatch:wue})}}),yue=kt.mark({class:"cm-matchingBracket"}),bue=kt.mark({class:"cm-nonmatchingBracket"});function wue(t){let e=[],n=t.matched?yue:bue;return e.push(n.range(t.start.from,t.start.to)),t.end&&e.push(n.range(t.end.from,t.end.to)),e}const Sue=Os.define({create(){return kt.none},update(t,e){if(!e.docChanged&&!e.selection)return t;let n=[],r=e.state.facet(n$);for(let s of e.state.selection.ranges){if(!s.empty)continue;let i=No(e.state,s.head,-1,r)||s.head>0&&No(e.state,s.head-1,1,r)||r.afterCursor&&(No(e.state,s.head,1,r)||s.headZe.decorations.from(t)}),kue=[Sue,vue];function Oue(t={}){return[n$.of(t),kue]}const jue=new sn;function iO(t,e,n){let r=t.prop(e<0?sn.openedBy:sn.closedBy);if(r)return r;if(t.name.length==1){let s=n.indexOf(t.name);if(s>-1&&s%2==(e<0?1:0))return[n[s+e]]}return null}function aO(t){let e=t.type.prop(jue);return e?e(t.node):t}function No(t,e,n,r={}){let s=r.maxScanDistance||e$,i=r.brackets||t$,a=Ss(t),l=a.resolveInner(e,n);for(let c=l;c;c=c.parent){let d=iO(c.type,n,i);if(d&&c.from0?e>=h.from&&eh.from&&e<=h.to))return Nue(t,e,n,c,h,d,i)}}return Cue(t,e,n,a,l.type,s,i)}function Nue(t,e,n,r,s,i,a){let l=r.parent,c={from:s.from,to:s.to},d=0,h=l?.cursor();if(h&&(n<0?h.childBefore(r.from):h.childAfter(r.to)))do if(n<0?h.to<=r.from:h.from>=r.to){if(d==0&&i.indexOf(h.type.name)>-1&&h.from0)return null;let d={from:n<0?e-1:e,to:n>0?e+1:e},h=t.doc.iterRange(e,n>0?t.doc.length:0),m=0;for(let g=0;!h.next().done&&g<=i;){let x=h.value;n<0&&(g+=x.length);let y=e+g*n;for(let w=n>0?0:x.length-1,S=n>0?x.length:-1;w!=S;w+=n){let k=a.indexOf(x[w]);if(!(k<0||r.resolveInner(y+w,1).type!=s))if(k%2==0==n>0)m++;else{if(m==1)return{start:d,end:{from:y+w,to:y+w+1},matched:k>>1==c>>1};m--}}n>0&&(g+=x.length)}return h.done?{start:d,matched:!1}:null}function b_(t,e,n,r=0,s=0){e==null&&(e=t.search(/[^\s\u00a0]/),e==-1&&(e=t.length));let i=s;for(let a=r;a=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.posn}eatSpace(){let e=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e}skipToEnd(){this.pos=this.string.length}skipTo(e){let n=this.string.indexOf(e,this.pos);if(n>-1)return this.pos=n,!0}backUp(e){this.pos-=e}column(){return this.lastColumnPosr?a.toLowerCase():a,i=this.string.substr(this.pos,e.length);return s(i)==s(e)?(n!==!1&&(this.pos+=e.length),!0):null}else{let s=this.string.slice(this.pos).match(e);return s&&s.index>0?null:(s&&n!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}}function Tue(t){return{name:t.name||"",token:t.token,blankLine:t.blankLine||(()=>{}),startState:t.startState||(()=>!0),copyState:t.copyState||Eue,indent:t.indent||(()=>null),languageData:t.languageData||{},tokenTable:t.tokenTable||k6,mergeTokens:t.mergeTokens!==!1}}function Eue(t){if(typeof t!="object")return t;let e={};for(let n in t){let r=t[n];e[n]=r instanceof Array?r.slice():r}return e}const w_=new WeakMap;class w6 extends va{constructor(e){let n=Bq(e.languageData),r=Tue(e),s,i=new class extends g6{createParse(a,l,c){return new Aue(s,a,l,c)}};super(n,i,[],e.name),this.topNode=Due(n,this),s=this,this.streamParser=r,this.stateAfter=new sn({perNode:!0}),this.tokenTable=e.tokenTable?new o$(r.tokenTable):Rue}static define(e){return new w6(e)}getIndent(e){let n,{overrideIndentation:r}=e.options;r&&(n=w_.get(e.state),n!=null&&n1e4)return null;for(;i=r&&n+e.length<=s&&e.prop(t.stateAfter);if(i)return{state:t.streamParser.copyState(i),pos:n+e.length};for(let a=e.children.length-1;a>=0;a--){let l=e.children[a],c=n+e.positions[a],d=l instanceof ar&&c=e.length)return e;!s&&n==0&&e.type==t.topNode&&(s=!0);for(let i=e.children.length-1;i>=0;i--){let a=e.positions[i],l=e.children[i],c;if(an&&S6(t,i.tree,0-i.offset,n,l),d;if(c&&c.pos<=r&&(d=s$(t,i.tree,n+i.offset,c.pos+i.offset,!1)))return{state:c.state,tree:d}}return{state:t.streamParser.startState(s?ld(s):4),tree:ar.empty}}let Aue=class{constructor(e,n,r,s){this.lang=e,this.input=n,this.fragments=r,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let i=rf.get(),a=s[0].from,{state:l,tree:c}=_ue(e,r,a,this.to,i?.state);this.state=l,this.parsedPos=this.chunkStart=a+c.length;for(let d=0;dd.from<=i.viewport.from&&d.to>=i.viewport.from)&&(this.state=this.lang.streamParser.startState(ld(i.state)),i.skipUntilInView(this.parsedPos,i.viewport.from),this.parsedPos=i.viewport.from),this.moveRangeIndex()}advance(){let e=rf.get(),n=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),r=Math.min(n,this.chunkStart+512);for(e&&(r=Math.min(r,e.viewport.to));this.parsedPos=n?this.finish():e&&this.parsedPos>=e.viewport.to?(e.skipUntilInView(this.parsedPos,n),this.finish()):null}stopAt(e){this.stoppedAt=e}lineAfter(e){let n=this.input.chunk(e);if(this.input.lineChunks)n==` `&&(n="");else{let r=n.indexOf(` -`);r>-1&&(n=n.slice(0,r))}return e+n.length<=this.to?n:n.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,n=this.lineAfter(e),r=e+n.length;for(let s=this.rangeIndex;;){let i=this.ranges[s].to;if(i>=r||(n=n.slice(0,i-(r-n.length)),s++,s==this.ranges.length))break;let a=this.ranges[s].from,l=this.lineAfter(a);n+=l,r=a+l.length}return{line:n,end:r}}skipGapsTo(e,n,r){for(;;){let s=this.ranges[this.rangeIndex].to,i=e+n;if(r>0?s>i:s>=i)break;let a=this.ranges[++this.rangeIndex].from;n+=a-s}return n}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(n,s,1),n+=s;let l=this.chunk.length;s=this.skipGapsTo(r,s,-1),r+=s,i+=this.chunk.length-l}let a=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&i==4&&a>=0&&this.chunk[a]==e&&this.chunk[a+2]==n?this.chunk[a+2]=r:this.chunk.push(e,n,r,i),s}parseLine(e){let{line:n,end:r}=this.nextLine(),s=0,{streamParser:i}=this.lang,a=new Kq(n,e?e.state.tabSize:4,e?ld(e.state):2);if(a.eol())i.blankLine(this.state,a.indentUnit);else for(;!a.eol();){let l=Jq(i.token,a,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+a.start,this.parsedPos+a.pos,s)),a.start>1e4)break}this.parsedPos=r,this.moveRangeIndex(),this.parsedPose.start)return s}throw new Error("Stream parser failed to advance stream.")}const y6=Object.create(null),G0=[ri.none],fue=new ab(G0),g_=[],x_=Object.create(null),e$=Object.create(null);for(let[t,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])e$[t]=n$(y6,e);class t${constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),e$)}resolve(e){return e?this.table[e]||(this.table[e]=n$(this.extra,e)):0}}const mue=new t$(y6);function U4(t,e){g_.indexOf(t)>-1||(g_.push(t),console.warn(e))}function n$(t,e){let n=[];for(let l of e.split(" ")){let c=[];for(let d of l.split(".")){let h=t[d]||xe[d];h?typeof h=="function"?c.length?c=c.map(h):U4(d,`Modifier ${d} used at start of tag`):c.length?U4(d,`Tag ${d} used as modifier`):c=Array.isArray(h)?h:[h]:U4(d,`Unknown highlighting tag ${d}`)}for(let d of c)n.push(d)}if(!n.length)return 0;let r=e.replace(/ /g,"_"),s=r+" "+n.map(l=>l.id),i=x_[s];if(i)return i.id;let a=x_[s]=ri.define({id:G0.length,name:r,props:[f6({[r]:n})]});return G0.push(a),a.id}function pue(t,e){let n=ri.define({id:G0.length,name:"Document",props:[Qu.add(()=>t),lb.add(()=>r=>e.getIndent(r))],top:!0});return G0.push(n),n}gr.RTL,gr.LTR;const gue=t=>{let{state:e}=t,n=e.doc.lineAt(e.selection.main.from),r=w6(t.state,n.from);return r.line?xue(t):r.block?yue(t):!1};function b6(t,e){return({state:n,dispatch:r})=>{if(n.readOnly)return!1;let s=t(e,n);return s?(r(n.update(s)),!0):!1}}const xue=b6(Sue,0),vue=b6(r$,0),yue=b6((t,e)=>r$(t,e,wue(e)),0);function w6(t,e){let n=t.languageDataAt("commentTokens",e,1);return n.length?n[0]:{}}const qm=50;function bue(t,{open:e,close:n},r,s){let i=t.sliceDoc(r-qm,r),a=t.sliceDoc(s,s+qm),l=/\s*$/.exec(i)[0].length,c=/^\s*/.exec(a)[0].length,d=i.length-l;if(i.slice(d-e.length,d)==e&&a.slice(c,c+n.length)==n)return{open:{pos:r-l,margin:l&&1},close:{pos:s+c,margin:c&&1}};let h,m;s-r<=2*qm?h=m=t.sliceDoc(r,s):(h=t.sliceDoc(r,r+qm),m=t.sliceDoc(s-qm,s));let g=/^\s*/.exec(h)[0].length,x=/\s*$/.exec(m)[0].length,y=m.length-x-n.length;return h.slice(g,g+e.length)==e&&m.slice(y,y+n.length)==n?{open:{pos:r+g+e.length,margin:/\s/.test(h.charAt(g+e.length))?1:0},close:{pos:s-x-n.length,margin:/\s/.test(m.charAt(y-1))?1:0}}:null}function wue(t){let e=[];for(let n of t.selection.ranges){let r=t.doc.lineAt(n.from),s=n.to<=r.to?r:t.doc.lineAt(n.to);s.from>r.from&&s.from==n.to&&(s=n.to==r.to+1?r:t.doc.lineAt(n.to-1));let i=e.length-1;i>=0&&e[i].to>r.from?e[i].to=s.to:e.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:s.to})}return e}function r$(t,e,n=e.selection.ranges){let r=n.map(i=>w6(e,i.from).block);if(!r.every(i=>i))return null;let s=n.map((i,a)=>bue(e,r[a],i.from,i.to));if(t!=2&&!s.every(i=>i))return{changes:e.changes(n.map((i,a)=>s[a]?[]:[{from:i.from,insert:r[a].open+" "},{from:i.to,insert:" "+r[a].close}]))};if(t!=1&&s.some(i=>i)){let i=[];for(let a=0,l;as&&(i==a||a>m.from)){s=m.from;let g=/^\s*/.exec(m.text)[0].length,x=g==m.length,y=m.text.slice(g,g+d.length)==d?g:-1;gi.comment<0&&(!i.empty||i.single))){let i=[];for(let{line:l,token:c,indent:d,empty:h,single:m}of r)(m||!h)&&i.push({from:l.from+d,insert:c+" "});let a=e.changes(i);return{changes:a,selection:e.selection.map(a,1)}}else if(t!=1&&r.some(i=>i.comment>=0)){let i=[];for(let{line:a,comment:l,token:c}of r)if(l>=0){let d=a.from+l,h=d+c.length;a.text[h-a.from]==" "&&h++,i.push({from:d,to:h})}return{changes:i}}return null}const tO=Fo.define(),kue=Fo.define(),Oue=at.define(),s$=at.define({combine(t){return qo(t,{minDepth:100,newGroupDelay:500,joinToEvent:(e,n)=>n},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,n)=>(r,s)=>e(r,s)||n(r,s)})}}),i$=Os.define({create(){return Co.empty},update(t,e){let n=e.state.facet(s$),r=e.annotation(tO);if(r){let c=yi.fromTransaction(e,r.selection),d=r.side,h=d==0?t.undone:t.done;return c?h=Xv(h,h.length,n.minDepth,c):h=l$(h,e.startState.selection),new Co(d==0?r.rest:h,d==0?h:r.rest)}let s=e.annotation(kue);if((s=="full"||s=="before")&&(t=t.isolate()),e.annotation(ns.addToHistory)===!1)return e.changes.empty?t:t.addMapping(e.changes.desc);let i=yi.fromTransaction(e),a=e.annotation(ns.time),l=e.annotation(ns.userEvent);return i?t=t.addChanges(i,a,l,n,e):e.selection&&(t=t.addSelection(e.startState.selection,a,l,n.newGroupDelay)),(s=="full"||s=="after")&&(t=t.isolate()),t},toJSON(t){return{done:t.done.map(e=>e.toJSON()),undone:t.undone.map(e=>e.toJSON())}},fromJSON(t){return new Co(t.done.map(yi.fromJSON),t.undone.map(yi.fromJSON))}});function jue(t={}){return[i$,s$.of(t),Ze.domEventHandlers({beforeinput(e,n){let r=e.inputType=="historyUndo"?a$:e.inputType=="historyRedo"?nO:null;return r?(e.preventDefault(),r(n)):!1}})]}function ub(t,e){return function({state:n,dispatch:r}){if(!e&&n.readOnly)return!1;let s=n.field(i$,!1);if(!s)return!1;let i=s.pop(t,n,e);return i?(r(i),!0):!1}}const a$=ub(0,!1),nO=ub(1,!1),Nue=ub(0,!0),Cue=ub(1,!0);class yi{constructor(e,n,r,s,i){this.changes=e,this.effects=n,this.mapped=r,this.startSelection=s,this.selectionsAfter=i}setSelAfter(e){return new yi(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,n,r;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(n=this.mapped)===null||n===void 0?void 0:n.toJSON(),startSelection:(r=this.startSelection)===null||r===void 0?void 0:r.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(e){return new yi(e.changes&&cs.fromJSON(e.changes),[],e.mapped&&Do.fromJSON(e.mapped),e.startSelection&&Ae.fromJSON(e.startSelection),e.selectionsAfter.map(Ae.fromJSON))}static fromTransaction(e,n){let r=ya;for(let s of e.startState.facet(Oue)){let i=s(e);i.length&&(r=r.concat(i))}return!r.length&&e.changes.empty?null:new yi(e.changes.invert(e.startState.doc),r,void 0,n||e.startState.selection,ya)}static selection(e){return new yi(void 0,ya,void 0,void 0,e)}}function Xv(t,e,n,r){let s=e+1>n+20?e-n-1:0,i=t.slice(s,e);return i.push(r),i}function Tue(t,e){let n=[],r=!1;return t.iterChangedRanges((s,i)=>n.push(s,i)),e.iterChangedRanges((s,i,a,l)=>{for(let c=0;c=d&&a<=h&&(r=!0)}}),r}function Eue(t,e){return t.ranges.length==e.ranges.length&&t.ranges.filter((n,r)=>n.empty!=e.ranges[r].empty).length===0}function o$(t,e){return t.length?e.length?t.concat(e):t:e}const ya=[],_ue=200;function l$(t,e){if(t.length){let n=t[t.length-1],r=n.selectionsAfter.slice(Math.max(0,n.selectionsAfter.length-_ue));return r.length&&r[r.length-1].eq(e)?t:(r.push(e),Xv(t,t.length-1,1e9,n.setSelAfter(r)))}else return[yi.selection([e])]}function Mue(t){let e=t[t.length-1],n=t.slice();return n[t.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),n}function W4(t,e){if(!t.length)return t;let n=t.length,r=ya;for(;n;){let s=Aue(t[n-1],e,r);if(s.changes&&!s.changes.empty||s.effects.length){let i=t.slice(0,n);return i[n-1]=s,i}else e=s.mapped,n--,r=s.selectionsAfter}return r.length?[yi.selection(r)]:ya}function Aue(t,e,n){let r=o$(t.selectionsAfter.length?t.selectionsAfter.map(l=>l.map(e)):ya,n);if(!t.changes)return yi.selection(r);let s=t.changes.map(e),i=e.mapDesc(t.changes,!0),a=t.mapped?t.mapped.composeDesc(i):i;return new yi(s,Ft.mapEffects(t.effects,e),a,t.startSelection.map(i),r)}const Rue=/^(input\.type|delete)($|\.)/;class Co{constructor(e,n,r=0,s=void 0){this.done=e,this.undone=n,this.prevTime=r,this.prevUserEvent=s}isolate(){return this.prevTime?new Co(this.done,this.undone):this}addChanges(e,n,r,s,i){let a=this.done,l=a[a.length-1];return l&&l.changes&&!l.changes.empty&&e.changes&&(!r||Rue.test(r))&&(!l.selectionsAfter.length&&n-this.prevTime0&&n-this.prevTimen.empty?t.moveByChar(n,e):db(n,e))}function Us(t){return t.textDirectionAt(t.state.selection.main.head)==gr.LTR}const u$=t=>c$(t,!Us(t)),d$=t=>c$(t,Us(t));function h$(t,e){return no(t,n=>n.empty?t.moveByGroup(n,e):db(n,e))}const Pue=t=>h$(t,!Us(t)),zue=t=>h$(t,Us(t));function Iue(t,e,n){if(e.type.prop(n))return!0;let r=e.to-e.from;return r&&(r>2||/[^\s,.;:]/.test(t.sliceDoc(e.from,e.to)))||e.firstChild}function hb(t,e,n){let r=ws(t).resolveInner(e.head),s=n?sn.closedBy:sn.openedBy;for(let c=e.head;;){let d=n?r.childAfter(c):r.childBefore(c);if(!d)break;Iue(t,d,s)?r=d:c=n?d.to:d.from}let i=r.type.prop(s),a,l;return i&&(a=n?No(t,r.from,1):No(t,r.to,-1))&&a.matched?l=n?a.end.to:a.end.from:l=n?r.to:r.from,Ae.cursor(l,n?-1:1)}const Lue=t=>no(t,e=>hb(t.state,e,!Us(t))),Bue=t=>no(t,e=>hb(t.state,e,Us(t)));function f$(t,e){return no(t,n=>{if(!n.empty)return db(n,e);let r=t.moveVertically(n,e);return r.head!=n.head?r:t.moveToLineBoundary(n,e)})}const m$=t=>f$(t,!1),p$=t=>f$(t,!0);function g$(t){let e=t.scrollDOM.clientHeighta.empty?t.moveVertically(a,e,n.height):db(a,e));if(s.eq(r.selection))return!1;let i;if(n.selfScroll){let a=t.coordsAtPos(r.selection.main.head),l=t.scrollDOM.getBoundingClientRect(),c=l.top+n.marginTop,d=l.bottom-n.marginBottom;a&&a.top>c&&a.bottomx$(t,!1),rO=t=>x$(t,!0);function lu(t,e,n){let r=t.lineBlockAt(e.head),s=t.moveToLineBoundary(e,n);if(s.head==e.head&&s.head!=(n?r.to:r.from)&&(s=t.moveToLineBoundary(e,n,!1)),!n&&s.head==r.from&&r.length){let i=/^\s*/.exec(t.state.sliceDoc(r.from,Math.min(r.from+100,r.to)))[0].length;i&&e.head!=r.from+i&&(s=Ae.cursor(r.from+i))}return s}const Fue=t=>no(t,e=>lu(t,e,!0)),que=t=>no(t,e=>lu(t,e,!1)),$ue=t=>no(t,e=>lu(t,e,!Us(t))),Hue=t=>no(t,e=>lu(t,e,Us(t))),Que=t=>no(t,e=>Ae.cursor(t.lineBlockAt(e.head).from,1)),Vue=t=>no(t,e=>Ae.cursor(t.lineBlockAt(e.head).to,-1));function Uue(t,e,n){let r=!1,s=jf(t.selection,i=>{let a=No(t,i.head,-1)||No(t,i.head,1)||i.head>0&&No(t,i.head-1,1)||i.headUue(t,e);function Pa(t,e){let n=jf(t.state.selection,r=>{let s=e(r);return Ae.range(r.anchor,s.head,s.goalColumn,s.bidiLevel||void 0)});return n.eq(t.state.selection)?!1:(t.dispatch(to(t.state,n)),!0)}function v$(t,e){return Pa(t,n=>t.moveByChar(n,e))}const y$=t=>v$(t,!Us(t)),b$=t=>v$(t,Us(t));function w$(t,e){return Pa(t,n=>t.moveByGroup(n,e))}const Gue=t=>w$(t,!Us(t)),Xue=t=>w$(t,Us(t)),Yue=t=>Pa(t,e=>hb(t.state,e,!Us(t))),Kue=t=>Pa(t,e=>hb(t.state,e,Us(t)));function S$(t,e){return Pa(t,n=>t.moveVertically(n,e))}const k$=t=>S$(t,!1),O$=t=>S$(t,!0);function j$(t,e){return Pa(t,n=>t.moveVertically(n,e,g$(t).height))}const y_=t=>j$(t,!1),b_=t=>j$(t,!0),Zue=t=>Pa(t,e=>lu(t,e,!0)),Jue=t=>Pa(t,e=>lu(t,e,!1)),ede=t=>Pa(t,e=>lu(t,e,!Us(t))),tde=t=>Pa(t,e=>lu(t,e,Us(t))),nde=t=>Pa(t,e=>Ae.cursor(t.lineBlockAt(e.head).from)),rde=t=>Pa(t,e=>Ae.cursor(t.lineBlockAt(e.head).to)),w_=({state:t,dispatch:e})=>(e(to(t,{anchor:0})),!0),S_=({state:t,dispatch:e})=>(e(to(t,{anchor:t.doc.length})),!0),k_=({state:t,dispatch:e})=>(e(to(t,{anchor:t.selection.main.anchor,head:0})),!0),O_=({state:t,dispatch:e})=>(e(to(t,{anchor:t.selection.main.anchor,head:t.doc.length})),!0),sde=({state:t,dispatch:e})=>(e(t.update({selection:{anchor:0,head:t.doc.length},userEvent:"select"})),!0),ide=({state:t,dispatch:e})=>{let n=fb(t).map(({from:r,to:s})=>Ae.range(r,Math.min(s+1,t.doc.length)));return e(t.update({selection:Ae.create(n),userEvent:"select"})),!0},ade=({state:t,dispatch:e})=>{let n=jf(t.selection,r=>{let s=ws(t),i=s.resolveStack(r.from,1);if(r.empty){let a=s.resolveStack(r.from,-1);a.node.from>=i.node.from&&a.node.to<=i.node.to&&(i=a)}for(let a=i;a;a=a.next){let{node:l}=a;if((l.from=r.to||l.to>r.to&&l.from<=r.from)&&a.next)return Ae.range(l.to,l.from)}return r});return n.eq(t.selection)?!1:(e(to(t,n)),!0)};function N$(t,e){let{state:n}=t,r=n.selection,s=n.selection.ranges.slice();for(let i of n.selection.ranges){let a=n.doc.lineAt(i.head);if(e?a.to0)for(let l=i;;){let c=t.moveVertically(l,e);if(c.heada.to){s.some(d=>d.head==c.head)||s.push(c);break}else{if(c.head==l.head)break;l=c}}}return s.length==r.ranges.length?!1:(t.dispatch(to(n,Ae.create(s,s.length-1))),!0)}const ode=t=>N$(t,!1),lde=t=>N$(t,!0),cde=({state:t,dispatch:e})=>{let n=t.selection,r=null;return n.ranges.length>1?r=Ae.create([n.main]):n.main.empty||(r=Ae.create([Ae.cursor(n.main.head)])),r?(e(to(t,r)),!0):!1};function Gp(t,e){if(t.state.readOnly)return!1;let n="delete.selection",{state:r}=t,s=r.changeByRange(i=>{let{from:a,to:l}=i;if(a==l){let c=e(i);ca&&(n="delete.forward",c=p1(t,c,!0)),a=Math.min(a,c),l=Math.max(l,c)}else a=p1(t,a,!1),l=p1(t,l,!0);return a==l?{range:i}:{changes:{from:a,to:l},range:Ae.cursor(a,as(t)))r.between(e,e,(s,i)=>{se&&(e=n?i:s)});return e}const C$=(t,e,n)=>Gp(t,r=>{let s=r.from,{state:i}=t,a=i.doc.lineAt(s),l,c;if(n&&!e&&s>a.from&&sC$(t,!1,!0),T$=t=>C$(t,!0,!1),E$=(t,e)=>Gp(t,n=>{let r=n.head,{state:s}=t,i=s.doc.lineAt(r),a=s.charCategorizer(r);for(let l=null;;){if(r==(e?i.to:i.from)){r==n.head&&i.number!=(e?s.doc.lines:1)&&(r+=e?1:-1);break}let c=Ds(i.text,r-i.from,e)+i.from,d=i.text.slice(Math.min(r,c)-i.from,Math.max(r,c)-i.from),h=a(d);if(l!=null&&h!=l)break;(d!=" "||r!=n.head)&&(l=h),r=c}return r}),_$=t=>E$(t,!1),ude=t=>E$(t,!0),dde=t=>Gp(t,e=>{let n=t.lineBlockAt(e.head).to;return e.headGp(t,e=>{let n=t.moveToLineBoundary(e,!1).head;return e.head>n?n:Math.max(0,e.head-1)}),fde=t=>Gp(t,e=>{let n=t.moveToLineBoundary(e,!0).head;return e.head{if(t.readOnly)return!1;let n=t.changeByRange(r=>({changes:{from:r.from,to:r.to,insert:jn.of(["",""])},range:Ae.cursor(r.from)}));return e(t.update(n,{scrollIntoView:!0,userEvent:"input"})),!0},pde=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let n=t.changeByRange(r=>{if(!r.empty||r.from==0||r.from==t.doc.length)return{range:r};let s=r.from,i=t.doc.lineAt(s),a=s==i.from?s-1:Ds(i.text,s-i.from,!1)+i.from,l=s==i.to?s+1:Ds(i.text,s-i.from,!0)+i.from;return{changes:{from:a,to:l,insert:t.doc.slice(s,l).append(t.doc.slice(a,s))},range:Ae.cursor(l)}});return n.changes.empty?!1:(e(t.update(n,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function fb(t){let e=[],n=-1;for(let r of t.selection.ranges){let s=t.doc.lineAt(r.from),i=t.doc.lineAt(r.to);if(!r.empty&&r.to==i.from&&(i=t.doc.lineAt(r.to-1)),n>=s.number){let a=e[e.length-1];a.to=i.to,a.ranges.push(r)}else e.push({from:s.from,to:i.to,ranges:[r]});n=i.number+1}return e}function M$(t,e,n){if(t.readOnly)return!1;let r=[],s=[];for(let i of fb(t)){if(n?i.to==t.doc.length:i.from==0)continue;let a=t.doc.lineAt(n?i.to+1:i.from-1),l=a.length+1;if(n){r.push({from:i.to,to:a.to},{from:i.from,insert:a.text+t.lineBreak});for(let c of i.ranges)s.push(Ae.range(Math.min(t.doc.length,c.anchor+l),Math.min(t.doc.length,c.head+l)))}else{r.push({from:a.from,to:i.from},{from:i.to,insert:t.lineBreak+a.text});for(let c of i.ranges)s.push(Ae.range(c.anchor-l,c.head-l))}}return r.length?(e(t.update({changes:r,scrollIntoView:!0,selection:Ae.create(s,t.selection.mainIndex),userEvent:"move.line"})),!0):!1}const gde=({state:t,dispatch:e})=>M$(t,e,!1),xde=({state:t,dispatch:e})=>M$(t,e,!0);function A$(t,e,n){if(t.readOnly)return!1;let r=[];for(let s of fb(t))n?r.push({from:s.from,insert:t.doc.slice(s.from,s.to)+t.lineBreak}):r.push({from:s.to,insert:t.lineBreak+t.doc.slice(s.from,s.to)});return e(t.update({changes:r,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const vde=({state:t,dispatch:e})=>A$(t,e,!1),yde=({state:t,dispatch:e})=>A$(t,e,!0),bde=t=>{if(t.state.readOnly)return!1;let{state:e}=t,n=e.changes(fb(e).map(({from:s,to:i})=>(s>0?s--:i{let i;if(t.lineWrapping){let a=t.lineBlockAt(s.head),l=t.coordsAtPos(s.head,s.assoc||1);l&&(i=a.bottom+t.documentTop-l.bottom+t.defaultLineHeight/2)}return t.moveVertically(s,!0,i)}).map(n);return t.dispatch({changes:n,selection:r,scrollIntoView:!0,userEvent:"delete.line"}),!0};function wde(t,e){if(/\(\)|\[\]|\{\}/.test(t.sliceDoc(e-1,e+1)))return{from:e,to:e};let n=ws(t).resolveInner(e),r=n.childBefore(e),s=n.childAfter(e),i;return r&&s&&r.to<=e&&s.from>=e&&(i=r.type.prop(sn.closedBy))&&i.indexOf(s.name)>-1&&t.doc.lineAt(r.to).from==t.doc.lineAt(s.from).from&&!/\S/.test(t.sliceDoc(r.to,s.from))?{from:r.to,to:s.from}:null}const j_=R$(!1),Sde=R$(!0);function R$(t){return({state:e,dispatch:n})=>{if(e.readOnly)return!1;let r=e.changeByRange(s=>{let{from:i,to:a}=s,l=e.doc.lineAt(i),c=!t&&i==a&&wde(e,i);t&&(i=a=(a<=l.to?l:e.doc.lineAt(a)).to);let d=new ob(e,{simulateBreak:i,simulateDoubleBreak:!!c}),h=m6(d,i);for(h==null&&(h=Of(/^\s*/.exec(e.doc.lineAt(i).text)[0],e.tabSize));al.from&&i{let s=[];for(let a=r.from;a<=r.to;){let l=t.doc.lineAt(a);l.number>n&&(r.empty||r.to>l.from)&&(e(l,s,r),n=l.number),a=l.to+1}let i=t.changes(s);return{changes:s,range:Ae.range(i.mapPos(r.anchor,1),i.mapPos(r.head,1))}})}const kde=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let n=Object.create(null),r=new ob(t,{overrideIndentation:i=>{let a=n[i];return a??-1}}),s=S6(t,(i,a,l)=>{let c=m6(r,i.from);if(c==null)return;/\S/.test(i.text)||(c=0);let d=/^\s*/.exec(i.text)[0],h=W0(t,c);(d!=h||l.fromt.readOnly?!1:(e(t.update(S6(t,(n,r)=>{r.push({from:n.from,insert:t.facet(Vp)})}),{userEvent:"input.indent"})),!0),P$=({state:t,dispatch:e})=>t.readOnly?!1:(e(t.update(S6(t,(n,r)=>{let s=/^\s*/.exec(n.text)[0];if(!s)return;let i=Of(s,t.tabSize),a=0,l=W0(t,Math.max(0,i-ld(t)));for(;a(t.setTabFocusMode(),!0),jde=[{key:"Ctrl-b",run:u$,shift:y$,preventDefault:!0},{key:"Ctrl-f",run:d$,shift:b$},{key:"Ctrl-p",run:m$,shift:k$},{key:"Ctrl-n",run:p$,shift:O$},{key:"Ctrl-a",run:Que,shift:nde},{key:"Ctrl-e",run:Vue,shift:rde},{key:"Ctrl-d",run:T$},{key:"Ctrl-h",run:sO},{key:"Ctrl-k",run:dde},{key:"Ctrl-Alt-h",run:_$},{key:"Ctrl-o",run:mde},{key:"Ctrl-t",run:pde},{key:"Ctrl-v",run:rO}],Nde=[{key:"ArrowLeft",run:u$,shift:y$,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:Pue,shift:Gue,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:$ue,shift:ede,preventDefault:!0},{key:"ArrowRight",run:d$,shift:b$,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:zue,shift:Xue,preventDefault:!0},{mac:"Cmd-ArrowRight",run:Hue,shift:tde,preventDefault:!0},{key:"ArrowUp",run:m$,shift:k$,preventDefault:!0},{mac:"Cmd-ArrowUp",run:w_,shift:k_},{mac:"Ctrl-ArrowUp",run:v_,shift:y_},{key:"ArrowDown",run:p$,shift:O$,preventDefault:!0},{mac:"Cmd-ArrowDown",run:S_,shift:O_},{mac:"Ctrl-ArrowDown",run:rO,shift:b_},{key:"PageUp",run:v_,shift:y_},{key:"PageDown",run:rO,shift:b_},{key:"Home",run:que,shift:Jue,preventDefault:!0},{key:"Mod-Home",run:w_,shift:k_},{key:"End",run:Fue,shift:Zue,preventDefault:!0},{key:"Mod-End",run:S_,shift:O_},{key:"Enter",run:j_,shift:j_},{key:"Mod-a",run:sde},{key:"Backspace",run:sO,shift:sO,preventDefault:!0},{key:"Delete",run:T$,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:_$,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:ude,preventDefault:!0},{mac:"Mod-Backspace",run:hde,preventDefault:!0},{mac:"Mod-Delete",run:fde,preventDefault:!0}].concat(jde.map(t=>({mac:t.key,run:t.run,shift:t.shift}))),Cde=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:Lue,shift:Yue},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:Bue,shift:Kue},{key:"Alt-ArrowUp",run:gde},{key:"Shift-Alt-ArrowUp",run:vde},{key:"Alt-ArrowDown",run:xde},{key:"Shift-Alt-ArrowDown",run:yde},{key:"Mod-Alt-ArrowUp",run:ode},{key:"Mod-Alt-ArrowDown",run:lde},{key:"Escape",run:cde},{key:"Mod-Enter",run:Sde},{key:"Alt-l",mac:"Ctrl-l",run:ide},{key:"Mod-i",run:ade,preventDefault:!0},{key:"Mod-[",run:P$},{key:"Mod-]",run:D$},{key:"Mod-Alt-\\",run:kde},{key:"Shift-Mod-k",run:bde},{key:"Shift-Mod-\\",run:Wue},{key:"Mod-/",run:gue},{key:"Alt-A",run:vue},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Ode}].concat(Nde),Tde={key:"Tab",run:D$,shift:P$},N_=typeof String.prototype.normalize=="function"?t=>t.normalize("NFKD"):t=>t;class rf{constructor(e,n,r=0,s=e.length,i,a){this.test=a,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(r,s),this.bufferStart=r,this.normalize=i?l=>i(N_(l)):N_,this.query=this.normalize(n)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return gi(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let n=Gj(e),r=this.bufferStart+this.bufferPos;this.bufferPos+=wo(e);let s=this.normalize(n);if(s.length)for(let i=0,a=r;;i++){let l=s.charCodeAt(i),c=this.match(l,a,this.bufferPos+this.bufferStart);if(i==s.length-1){if(c)return this.value=c,this;break}a==r&&ithis.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let n=this.matchPos<=this.to&&this.re.exec(this.curLine);if(n){let r=this.curLineStart+n.index,s=r+n[0].length;if(this.matchPos=Yv(this.text,s+(r==s?1:0)),r==this.curLineStart+this.curLine.length&&this.nextLine(),(rthis.value.to)&&(!this.test||this.test(r,s,n)))return this.value={from:r,to:s,match:n},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length=r||s.to<=n){let l=new Ih(n,e.sliceString(n,r));return G4.set(e,l),l}if(s.from==n&&s.to==r)return s;let{text:i,from:a}=s;return a>n&&(i=e.sliceString(n,a)+i,a=n),s.to=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,n=this.re.exec(this.flat.text);if(n&&!n[0]&&n.index==e&&(this.re.lastIndex=e+1,n=this.re.exec(this.flat.text)),n){let r=this.flat.from+n.index,s=r+n[0].length;if((this.flat.to>=this.to||n.index+n[0].length<=this.flat.text.length-10)&&(!this.test||this.test(r,s,n)))return this.value={from:r,to:s,match:n},this.matchPos=Yv(this.text,s+(r==s?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=Ih.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}typeof Symbol<"u"&&(I$.prototype[Symbol.iterator]=L$.prototype[Symbol.iterator]=function(){return this});function Ede(t){try{return new RegExp(t,k6),!0}catch{return!1}}function Yv(t,e){if(e>=t.length)return e;let n=t.lineAt(e),r;for(;e=56320&&r<57344;)e++;return e}function iO(t){let e=String(t.state.doc.lineAt(t.state.selection.main.head).number),n=sr("input",{class:"cm-textfield",name:"line",value:e}),r=sr("form",{class:"cm-gotoLine",onkeydown:i=>{i.keyCode==27?(i.preventDefault(),t.dispatch({effects:k0.of(!1)}),t.focus()):i.keyCode==13&&(i.preventDefault(),s())},onsubmit:i=>{i.preventDefault(),s()}},sr("label",t.state.phrase("Go to line"),": ",n)," ",sr("button",{class:"cm-button",type:"submit"},t.state.phrase("go")),sr("button",{name:"close",onclick:()=>{t.dispatch({effects:k0.of(!1)}),t.focus()},"aria-label":t.state.phrase("close"),type:"button"},["×"]));function s(){let i=/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(n.value);if(!i)return;let{state:a}=t,l=a.doc.lineAt(a.selection.main.head),[,c,d,h,m]=i,g=h?+h.slice(1):0,x=d?+d:l.number;if(d&&m){let S=x/100;c&&(S=S*(c=="-"?-1:1)+l.number/a.doc.lines),x=Math.round(a.doc.lines*S)}else d&&c&&(x=x*(c=="-"?-1:1)+l.number);let y=a.doc.line(Math.max(1,Math.min(a.doc.lines,x))),w=Ae.cursor(y.from+Math.max(0,Math.min(g,y.length)));t.dispatch({effects:[k0.of(!1),Ze.scrollIntoView(w.from,{y:"center"})],selection:w}),t.focus()}return{dom:r}}const k0=Ft.define(),C_=Os.define({create(){return!0},update(t,e){for(let n of e.effects)n.is(k0)&&(t=n.value);return t},provide:t=>H0.from(t,e=>e?iO:null)}),_de=t=>{let e=$0(t,iO);if(!e){let n=[k0.of(!0)];t.state.field(C_,!1)==null&&n.push(Ft.appendConfig.of([C_,Mde])),t.dispatch({effects:n}),e=$0(t,iO)}return e&&e.dom.querySelector("input").select(),!0},Mde=Ze.baseTheme({".cm-panel.cm-gotoLine":{padding:"2px 6px 4px",position:"relative","& label":{fontSize:"80%"},"& [name=close]":{position:"absolute",top:"0",bottom:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:"0"}}}),Ade={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},Rde=at.define({combine(t){return qo(t,Ade,{highlightWordAroundCursor:(e,n)=>e||n,minSelectionLength:Math.min,maxMatches:Math.min})}});function Dde(t){return[Bde,Lde]}const Pde=kt.mark({class:"cm-selectionMatch"}),zde=kt.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function T_(t,e,n,r){return(n==0||t(e.sliceDoc(n-1,n))!=wr.Word)&&(r==e.doc.length||t(e.sliceDoc(r,r+1))!=wr.Word)}function Ide(t,e,n,r){return t(e.sliceDoc(n,n+1))==wr.Word&&t(e.sliceDoc(r-1,r))==wr.Word}const Lde=Vr.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.selectionSet||t.docChanged||t.viewportChanged)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=t.state.facet(Rde),{state:n}=t,r=n.selection;if(r.ranges.length>1)return kt.none;let s=r.main,i,a=null;if(s.empty){if(!e.highlightWordAroundCursor)return kt.none;let c=n.wordAt(s.head);if(!c)return kt.none;a=n.charCategorizer(s.head),i=n.sliceDoc(c.from,c.to)}else{let c=s.to-s.from;if(c200)return kt.none;if(e.wholeWords){if(i=n.sliceDoc(s.from,s.to),a=n.charCategorizer(s.head),!(T_(a,n,s.from,s.to)&&Ide(a,n,s.from,s.to)))return kt.none}else if(i=n.sliceDoc(s.from,s.to),!i)return kt.none}let l=[];for(let c of t.visibleRanges){let d=new rf(n.doc,i,c.from,c.to);for(;!d.next().done;){let{from:h,to:m}=d.value;if((!a||T_(a,n,h,m))&&(s.empty&&h<=s.from&&m>=s.to?l.push(zde.range(h,m)):(h>=s.to||m<=s.from)&&l.push(Pde.range(h,m)),l.length>e.maxMatches))return kt.none}}return kt.set(l)}},{decorations:t=>t.decorations}),Bde=Ze.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),Fde=({state:t,dispatch:e})=>{let{selection:n}=t,r=Ae.create(n.ranges.map(s=>t.wordAt(s.head)||Ae.cursor(s.head)),n.mainIndex);return r.eq(n)?!1:(e(t.update({selection:r})),!0)};function qde(t,e){let{main:n,ranges:r}=t.selection,s=t.wordAt(n.head),i=s&&s.from==n.from&&s.to==n.to;for(let a=!1,l=new rf(t.doc,e,r[r.length-1].to);;)if(l.next(),l.done){if(a)return null;l=new rf(t.doc,e,0,Math.max(0,r[r.length-1].from-1)),a=!0}else{if(a&&r.some(c=>c.from==l.value.from))continue;if(i){let c=t.wordAt(l.value.from);if(!c||c.from!=l.value.from||c.to!=l.value.to)continue}return l.value}}const $de=({state:t,dispatch:e})=>{let{ranges:n}=t.selection;if(n.some(i=>i.from===i.to))return Fde({state:t,dispatch:e});let r=t.sliceDoc(n[0].from,n[0].to);if(t.selection.ranges.some(i=>t.sliceDoc(i.from,i.to)!=r))return!1;let s=qde(t,r);return s?(e(t.update({selection:t.selection.addRange(Ae.range(s.from,s.to),!1),effects:Ze.scrollIntoView(s.to)})),!0):!1},Nf=at.define({combine(t){return qo(t,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new ehe(e),scrollToMatch:e=>Ze.scrollIntoView(e)})}});class B${constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||Ede(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(n,r)=>r=="n"?` -`:r=="r"?"\r":r=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord}create(){return this.regexp?new Ude(this):new Qde(this)}getCursor(e,n=0,r){let s=e.doc?e:bn.create({doc:e});return r==null&&(r=s.doc.length),this.regexp?bh(this,s,n,r):yh(this,s,n,r)}}class F${constructor(e){this.spec=e}}function yh(t,e,n,r){return new rf(e.doc,t.unquoted,n,r,t.caseSensitive?void 0:s=>s.toLowerCase(),t.wholeWord?Hde(e.doc,e.charCategorizer(e.selection.main.head)):void 0)}function Hde(t,e){return(n,r,s,i)=>((i>n||i+s.length=n)return null;s.push(r.value)}return s}highlight(e,n,r,s){let i=yh(this.spec,e,Math.max(0,n-this.spec.unquoted.length),Math.min(r+this.spec.unquoted.length,e.doc.length));for(;!i.next().done;)s(i.value.from,i.value.to)}}function bh(t,e,n,r){return new I$(e.doc,t.search,{ignoreCase:!t.caseSensitive,test:t.wholeWord?Vde(e.charCategorizer(e.selection.main.head)):void 0},n,r)}function Kv(t,e){return t.slice(Ds(t,e,!1),e)}function Zv(t,e){return t.slice(e,Ds(t,e))}function Vde(t){return(e,n,r)=>!r[0].length||(t(Kv(r.input,r.index))!=wr.Word||t(Zv(r.input,r.index))!=wr.Word)&&(t(Zv(r.input,r.index+r[0].length))!=wr.Word||t(Kv(r.input,r.index+r[0].length))!=wr.Word)}class Ude extends F${nextMatch(e,n,r){let s=bh(this.spec,e,r,e.doc.length).next();return s.done&&(s=bh(this.spec,e,0,n).next()),s.done?null:s.value}prevMatchInRange(e,n,r){for(let s=1;;s++){let i=Math.max(n,r-s*1e4),a=bh(this.spec,e,i,r),l=null;for(;!a.next().done;)l=a.value;if(l&&(i==n||l.from>i+10))return l;if(i==n)return null}}prevMatch(e,n,r){return this.prevMatchInRange(e,0,n)||this.prevMatchInRange(e,r,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(n,r)=>{if(r=="&")return e.match[0];if(r=="$")return"$";for(let s=r.length;s>0;s--){let i=+r.slice(0,s);if(i>0&&i=n)return null;s.push(r.value)}return s}highlight(e,n,r,s){let i=bh(this.spec,e,Math.max(0,n-250),Math.min(r+250,e.doc.length));for(;!i.next().done;)s(i.value.from,i.value.to)}}const X0=Ft.define(),O6=Ft.define(),qc=Os.define({create(t){return new X4(aO(t).create(),null)},update(t,e){for(let n of e.effects)n.is(X0)?t=new X4(n.value.create(),t.panel):n.is(O6)&&(t=new X4(t.query,n.value?j6:null));return t},provide:t=>H0.from(t,e=>e.panel)});class X4{constructor(e,n){this.query=e,this.panel=n}}const Wde=kt.mark({class:"cm-searchMatch"}),Gde=kt.mark({class:"cm-searchMatch cm-searchMatch-selected"}),Xde=Vr.fromClass(class{constructor(t){this.view=t,this.decorations=this.highlight(t.state.field(qc))}update(t){let e=t.state.field(qc);(e!=t.startState.field(qc)||t.docChanged||t.selectionSet||t.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:t,panel:e}){if(!e||!t.spec.valid)return kt.none;let{view:n}=this,r=new Fl;for(let s=0,i=n.visibleRanges,a=i.length;si[s+1].from-500;)c=i[++s].to;t.highlight(n.state,l,c,(d,h)=>{let m=n.state.selection.ranges.some(g=>g.from==d&&g.to==h);r.add(d,h,m?Gde:Wde)})}return r.finish()}},{decorations:t=>t.decorations});function Xp(t){return e=>{let n=e.state.field(qc,!1);return n&&n.query.spec.valid?t(e,n):H$(e)}}const Jv=Xp((t,{query:e})=>{let{to:n}=t.state.selection.main,r=e.nextMatch(t.state,n,n);if(!r)return!1;let s=Ae.single(r.from,r.to),i=t.state.facet(Nf);return t.dispatch({selection:s,effects:[N6(t,r),i.scrollToMatch(s.main,t)],userEvent:"select.search"}),$$(t),!0}),ey=Xp((t,{query:e})=>{let{state:n}=t,{from:r}=n.selection.main,s=e.prevMatch(n,r,r);if(!s)return!1;let i=Ae.single(s.from,s.to),a=t.state.facet(Nf);return t.dispatch({selection:i,effects:[N6(t,s),a.scrollToMatch(i.main,t)],userEvent:"select.search"}),$$(t),!0}),Yde=Xp((t,{query:e})=>{let n=e.matchAll(t.state,1e3);return!n||!n.length?!1:(t.dispatch({selection:Ae.create(n.map(r=>Ae.range(r.from,r.to))),userEvent:"select.search.matches"}),!0)}),Kde=({state:t,dispatch:e})=>{let n=t.selection;if(n.ranges.length>1||n.main.empty)return!1;let{from:r,to:s}=n.main,i=[],a=0;for(let l=new rf(t.doc,t.sliceDoc(r,s));!l.next().done;){if(i.length>1e3)return!1;l.value.from==r&&(a=i.length),i.push(Ae.range(l.value.from,l.value.to))}return e(t.update({selection:Ae.create(i,a),userEvent:"select.search.matches"})),!0},E_=Xp((t,{query:e})=>{let{state:n}=t,{from:r,to:s}=n.selection.main;if(n.readOnly)return!1;let i=e.nextMatch(n,r,r);if(!i)return!1;let a=i,l=[],c,d,h=[];a.from==r&&a.to==s&&(d=n.toText(e.getReplacement(a)),l.push({from:a.from,to:a.to,insert:d}),a=e.nextMatch(n,a.from,a.to),h.push(Ze.announce.of(n.phrase("replaced match on line $",n.doc.lineAt(r).number)+".")));let m=t.state.changes(l);return a&&(c=Ae.single(a.from,a.to).map(m),h.push(N6(t,a)),h.push(n.facet(Nf).scrollToMatch(c.main,t))),t.dispatch({changes:m,selection:c,effects:h,userEvent:"input.replace"}),!0}),Zde=Xp((t,{query:e})=>{if(t.state.readOnly)return!1;let n=e.matchAll(t.state,1e9).map(s=>{let{from:i,to:a}=s;return{from:i,to:a,insert:e.getReplacement(s)}});if(!n.length)return!1;let r=t.state.phrase("replaced $ matches",n.length)+".";return t.dispatch({changes:n,effects:Ze.announce.of(r),userEvent:"input.replace.all"}),!0});function j6(t){return t.state.facet(Nf).createPanel(t)}function aO(t,e){var n,r,s,i,a;let l=t.selection.main,c=l.empty||l.to>l.from+100?"":t.sliceDoc(l.from,l.to);if(e&&!c)return e;let d=t.facet(Nf);return new B$({search:((n=e?.literal)!==null&&n!==void 0?n:d.literal)?c:c.replace(/\n/g,"\\n"),caseSensitive:(r=e?.caseSensitive)!==null&&r!==void 0?r:d.caseSensitive,literal:(s=e?.literal)!==null&&s!==void 0?s:d.literal,regexp:(i=e?.regexp)!==null&&i!==void 0?i:d.regexp,wholeWord:(a=e?.wholeWord)!==null&&a!==void 0?a:d.wholeWord})}function q$(t){let e=$0(t,j6);return e&&e.dom.querySelector("[main-field]")}function $$(t){let e=q$(t);e&&e==t.root.activeElement&&e.select()}const H$=t=>{let e=t.state.field(qc,!1);if(e&&e.panel){let n=q$(t);if(n&&n!=t.root.activeElement){let r=aO(t.state,e.query.spec);r.valid&&t.dispatch({effects:X0.of(r)}),n.focus(),n.select()}}else t.dispatch({effects:[O6.of(!0),e?X0.of(aO(t.state,e.query.spec)):Ft.appendConfig.of(nhe)]});return!0},Q$=t=>{let e=t.state.field(qc,!1);if(!e||!e.panel)return!1;let n=$0(t,j6);return n&&n.dom.contains(t.root.activeElement)&&t.focus(),t.dispatch({effects:O6.of(!1)}),!0},Jde=[{key:"Mod-f",run:H$,scope:"editor search-panel"},{key:"F3",run:Jv,shift:ey,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:Jv,shift:ey,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:Q$,scope:"editor search-panel"},{key:"Mod-Shift-l",run:Kde},{key:"Mod-Alt-g",run:_de},{key:"Mod-d",run:$de,preventDefault:!0}];class ehe{constructor(e){this.view=e;let n=this.query=e.state.field(qc).query.spec;this.commit=this.commit.bind(this),this.searchField=sr("input",{value:n.search,placeholder:Li(e,"Find"),"aria-label":Li(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=sr("input",{value:n.replace,placeholder:Li(e,"Replace"),"aria-label":Li(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=sr("input",{type:"checkbox",name:"case",form:"",checked:n.caseSensitive,onchange:this.commit}),this.reField=sr("input",{type:"checkbox",name:"re",form:"",checked:n.regexp,onchange:this.commit}),this.wordField=sr("input",{type:"checkbox",name:"word",form:"",checked:n.wholeWord,onchange:this.commit});function r(s,i,a){return sr("button",{class:"cm-button",name:s,onclick:i,type:"button"},a)}this.dom=sr("div",{onkeydown:s=>this.keydown(s),class:"cm-search"},[this.searchField,r("next",()=>Jv(e),[Li(e,"next")]),r("prev",()=>ey(e),[Li(e,"previous")]),r("select",()=>Yde(e),[Li(e,"all")]),sr("label",null,[this.caseField,Li(e,"match case")]),sr("label",null,[this.reField,Li(e,"regexp")]),sr("label",null,[this.wordField,Li(e,"by word")]),...e.state.readOnly?[]:[sr("br"),this.replaceField,r("replace",()=>E_(e),[Li(e,"replace")]),r("replaceAll",()=>Zde(e),[Li(e,"replace all")])],sr("button",{name:"close",onclick:()=>Q$(e),"aria-label":Li(e,"close"),type:"button"},["×"])])}commit(){let e=new B$({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:X0.of(e)}))}keydown(e){ile(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?ey:Jv)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),E_(this.view))}update(e){for(let n of e.transactions)for(let r of n.effects)r.is(X0)&&!r.value.eq(this.query)&&this.setQuery(r.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(Nf).top}}function Li(t,e){return t.state.phrase(e)}const g1=30,x1=/[\s\.,:;?!]/;function N6(t,{from:e,to:n}){let r=t.state.doc.lineAt(e),s=t.state.doc.lineAt(n).to,i=Math.max(r.from,e-g1),a=Math.min(s,n+g1),l=t.state.sliceDoc(i,a);if(i!=r.from){for(let c=0;cl.length-g1;c--)if(!x1.test(l[c-1])&&x1.test(l[c])){l=l.slice(0,c);break}}return Ze.announce.of(`${t.state.phrase("current match")}. ${l} ${t.state.phrase("on line")} ${r.number}.`)}const the=Ze.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),nhe=[qc,ou.low(Xde),the];class V${constructor(e,n,r,s){this.state=e,this.pos=n,this.explicit=r,this.view=s,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let n=ws(this.state).resolveInner(this.pos,-1);for(;n&&e.indexOf(n.name)<0;)n=n.parent;return n?{from:n.from,to:this.pos,text:this.state.sliceDoc(n.from,this.pos),type:n.type}:null}matchBefore(e){let n=this.state.doc.lineAt(this.pos),r=Math.max(n.from,this.pos-250),s=n.text.slice(r-n.from,this.pos-n.from),i=s.search(W$(e,!1));return i<0?null:{from:r+i,to:this.pos,text:s.slice(i)}}get aborted(){return this.abortListeners==null}addEventListener(e,n,r){e=="abort"&&this.abortListeners&&(this.abortListeners.push(n),r&&r.onDocChange&&(this.abortOnDocChange=!0))}}function __(t){let e=Object.keys(t).join(""),n=/\w/.test(e);return n&&(e=e.replace(/\w/g,"")),`[${n?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function rhe(t){let e=Object.create(null),n=Object.create(null);for(let{label:s}of t){e[s[0]]=!0;for(let i=1;itypeof s=="string"?{label:s}:s),[n,r]=e.every(s=>/^\w+$/.test(s.label))?[/\w*$/,/\w+$/]:rhe(e);return s=>{let i=s.matchBefore(r);return i||s.explicit?{from:i?i.from:s.pos,options:e,validFor:n}:null}}function she(t,e){return n=>{for(let r=ws(n.state).resolveInner(n.pos,-1);r;r=r.parent){if(t.indexOf(r.name)>-1)return null;if(r.type.isTop)break}return e(n)}}let M_=class{constructor(e,n,r,s){this.completion=e,this.source=n,this.match=r,this.score=s}};function ed(t){return t.selection.main.from}function W$(t,e){var n;let{source:r}=t,s=e&&r[0]!="^",i=r[r.length-1]!="$";return!s&&!i?t:new RegExp(`${s?"^":""}(?:${r})${i?"$":""}`,(n=t.flags)!==null&&n!==void 0?n:t.ignoreCase?"i":"")}const C6=Fo.define();function ihe(t,e,n,r){let{main:s}=t.selection,i=n-s.from,a=r-s.from;return{...t.changeByRange(l=>{if(l!=s&&n!=r&&t.sliceDoc(l.from+i,l.from+a)!=t.sliceDoc(n,r))return{range:l};let c=t.toText(e);return{changes:{from:l.from+i,to:r==s.from?l.to:l.from+a,insert:c},range:Ae.cursor(l.from+i+c.length)}}),scrollIntoView:!0,userEvent:"input.complete"}}const A_=new WeakMap;function ahe(t){if(!Array.isArray(t))return t;let e=A_.get(t);return e||A_.set(t,e=U$(t)),e}const ty=Ft.define(),Y0=Ft.define();class ohe{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let n=0;n=48&&E<=57||E>=97&&E<=122?2:E>=65&&E<=90?1:0:(_=Gj(E))!=_.toLowerCase()?1:_!=_.toUpperCase()?2:0;(!j||M==1&&S||T==0&&M!=0)&&(n[m]==E||r[m]==E&&(g=!0)?a[m++]=j:a.length&&(k=!1)),T=M,j+=wo(E)}return m==c&&a[0]==0&&k?this.result(-100+(g?-200:0),a,e):x==c&&y==0?this.ret(-200-e.length+(w==e.length?0:-100),[0,w]):l>-1?this.ret(-700-e.length,[l,l+this.pattern.length]):x==c?this.ret(-900-e.length,[y,w]):m==c?this.result(-100+(g?-200:0)+-700+(k?0:-1100),a,e):n.length==2?null:this.result((s[0]?-700:0)+-200+-1100,s,e)}result(e,n,r){let s=[],i=0;for(let a of n){let l=a+(this.astral?wo(gi(r,a)):1);i&&s[i-1]==a?s[i-1]=l:(s[i++]=a,s[i++]=l)}return this.ret(e-r.length,s)}}class lhe{constructor(e){this.pattern=e,this.matched=[],this.score=0,this.folded=e.toLowerCase()}match(e){if(e.length!1,activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:()=>"",optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:che,filterStrict:!1,compareCompletions:(e,n)=>e.label.localeCompare(n.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(e,n)=>e&&n,closeOnBlur:(e,n)=>e&&n,icons:(e,n)=>e&&n,tooltipClass:(e,n)=>r=>R_(e(r),n(r)),optionClass:(e,n)=>r=>R_(e(r),n(r)),addToOptions:(e,n)=>e.concat(n),filterStrict:(e,n)=>e||n})}});function R_(t,e){return t?e?t+" "+e:t:e}function che(t,e,n,r,s,i){let a=t.textDirection==gr.RTL,l=a,c=!1,d="top",h,m,g=e.left-s.left,x=s.right-e.right,y=r.right-r.left,w=r.bottom-r.top;if(l&&g=w||j>e.top?h=n.bottom-e.top:(d="bottom",h=e.bottom-n.top)}let S=(e.bottom-e.top)/i.offsetHeight,k=(e.right-e.left)/i.offsetWidth;return{style:`${d}: ${h/S}px; max-width: ${m/k}px`,class:"cm-completionInfo-"+(c?a?"left-narrow":"right-narrow":l?"left":"right")}}function uhe(t){let e=t.addToOptions.slice();return t.icons&&e.push({render(n){let r=document.createElement("div");return r.classList.add("cm-completionIcon"),n.type&&r.classList.add(...n.type.split(/\s+/g).map(s=>"cm-completionIcon-"+s)),r.setAttribute("aria-hidden","true"),r},position:20}),e.push({render(n,r,s,i){let a=document.createElement("span");a.className="cm-completionLabel";let l=n.displayLabel||n.label,c=0;for(let d=0;dc&&a.appendChild(document.createTextNode(l.slice(c,h)));let g=a.appendChild(document.createElement("span"));g.appendChild(document.createTextNode(l.slice(h,m))),g.className="cm-completionMatchedText",c=m}return cn.position-r.position).map(n=>n.render)}function Y4(t,e,n){if(t<=n)return{from:0,to:t};if(e<0&&(e=0),e<=t>>1){let s=Math.floor(e/n);return{from:s*n,to:(s+1)*n}}let r=Math.floor((t-e)/n);return{from:t-(r+1)*n,to:t-r*n}}class dhe{constructor(e,n,r){this.view=e,this.stateField=n,this.applyCompletion=r,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:()=>this.measureInfo(),write:c=>this.placeInfo(c),key:this},this.space=null,this.currentClass="";let s=e.state.field(n),{options:i,selected:a}=s.open,l=e.state.facet(ys);this.optionContent=uhe(l),this.optionClass=l.optionClass,this.tooltipClass=l.tooltipClass,this.range=Y4(i.length,a,l.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.updateTooltipClass(e.state),this.dom.addEventListener("mousedown",c=>{let{options:d}=e.state.field(n).open;for(let h=c.target,m;h&&h!=this.dom;h=h.parentNode)if(h.nodeName=="LI"&&(m=/-(\d+)$/.exec(h.id))&&+m[1]{let d=e.state.field(this.stateField,!1);d&&d.tooltip&&e.state.facet(ys).closeOnBlur&&c.relatedTarget!=e.contentDOM&&e.dispatch({effects:Y0.of(null)})}),this.showOptions(i,s.id)}mount(){this.updateSel()}showOptions(e,n){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(e,n,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(e){var n;let r=e.state.field(this.stateField),s=e.startState.field(this.stateField);if(this.updateTooltipClass(e.state),r!=s){let{options:i,selected:a,disabled:l}=r.open;(!s.open||s.open.options!=i)&&(this.range=Y4(i.length,a,e.state.facet(ys).maxRenderedOptions),this.showOptions(i,r.id)),this.updateSel(),l!=((n=s.open)===null||n===void 0?void 0:n.disabled)&&this.dom.classList.toggle("cm-tooltip-autocomplete-disabled",!!l)}}updateTooltipClass(e){let n=this.tooltipClass(e);if(n!=this.currentClass){for(let r of this.currentClass.split(" "))r&&this.dom.classList.remove(r);for(let r of n.split(" "))r&&this.dom.classList.add(r);this.currentClass=n}}positioned(e){this.space=e,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let e=this.view.state.field(this.stateField),n=e.open;(n.selected>-1&&n.selected=this.range.to)&&(this.range=Y4(n.options.length,n.selected,this.view.state.facet(ys).maxRenderedOptions),this.showOptions(n.options,e.id));let r=this.updateSelectedOption(n.selected);if(r){this.destroyInfo();let{completion:s}=n.options[n.selected],{info:i}=s;if(!i)return;let a=typeof i=="string"?document.createTextNode(i):i(s);if(!a)return;"then"in a?a.then(l=>{l&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(l,s)}).catch(l=>vi(this.view.state,l,"completion info")):(this.addInfoPane(a,s),r.setAttribute("aria-describedby",this.info.id))}}addInfoPane(e,n){this.destroyInfo();let r=this.info=document.createElement("div");if(r.className="cm-tooltip cm-completionInfo",r.id="cm-completionInfo-"+Math.floor(Math.random()*65535).toString(16),e.nodeType!=null)r.appendChild(e),this.infoDestroy=null;else{let{dom:s,destroy:i}=e;r.appendChild(s),this.infoDestroy=i||null}this.dom.appendChild(r),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(e){let n=null;for(let r=this.list.firstChild,s=this.range.from;r;r=r.nextSibling,s++)r.nodeName!="LI"||!r.id?s--:s==e?r.hasAttribute("aria-selected")||(r.setAttribute("aria-selected","true"),n=r):r.hasAttribute("aria-selected")&&(r.removeAttribute("aria-selected"),r.removeAttribute("aria-describedby"));return n&&fhe(this.list,n),n}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let n=this.dom.getBoundingClientRect(),r=this.info.getBoundingClientRect(),s=e.getBoundingClientRect(),i=this.space;if(!i){let a=this.dom.ownerDocument.documentElement;i={left:0,top:0,right:a.clientWidth,bottom:a.clientHeight}}return s.top>Math.min(i.bottom,n.bottom)-10||s.bottom{a.target==s&&a.preventDefault()});let i=null;for(let a=r.from;ar.from||r.from==0))if(i=g,typeof d!="string"&&d.header)s.appendChild(d.header(d));else{let x=s.appendChild(document.createElement("completion-section"));x.textContent=g}}const h=s.appendChild(document.createElement("li"));h.id=n+"-"+a,h.setAttribute("role","option");let m=this.optionClass(l);m&&(h.className=m);for(let g of this.optionContent){let x=g(l,this.view.state,this.view,c);x&&h.appendChild(x)}}return r.from&&s.classList.add("cm-completionListIncompleteTop"),r.tonew dhe(n,t,e)}function fhe(t,e){let n=t.getBoundingClientRect(),r=e.getBoundingClientRect(),s=n.height/t.offsetHeight;r.topn.bottom&&(t.scrollTop+=(r.bottom-n.bottom)/s)}function D_(t){return(t.boost||0)*100+(t.apply?10:0)+(t.info?5:0)+(t.type?1:0)}function mhe(t,e){let n=[],r=null,s=null,i=h=>{n.push(h);let{section:m}=h.completion;if(m){r||(r=[]);let g=typeof m=="string"?m:m.name;r.some(x=>x.name==g)||r.push(typeof m=="string"?{name:g}:m)}},a=e.facet(ys);for(let h of t)if(h.hasResult()){let m=h.result.getMatch;if(h.result.filter===!1)for(let g of h.result.options)i(new M_(g,h.source,m?m(g):[],1e9-n.length));else{let g=e.sliceDoc(h.from,h.to),x,y=a.filterStrict?new lhe(g):new ohe(g);for(let w of h.result.options)if(x=y.match(w.label)){let S=w.displayLabel?m?m(w,x.matched):[]:x.matched,k=x.score+(w.boost||0);if(i(new M_(w,h.source,S,k)),typeof w.section=="object"&&w.section.rank==="dynamic"){let{name:j}=w.section;s||(s=Object.create(null)),s[j]=Math.max(k,s[j]||-1e9)}}}}if(r){let h=Object.create(null),m=0,g=(x,y)=>(x.rank==="dynamic"&&y.rank==="dynamic"?s[y.name]-s[x.name]:0)||(typeof x.rank=="number"?x.rank:1e9)-(typeof y.rank=="number"?y.rank:1e9)||(x.nameg.score-m.score||d(m.completion,g.completion))){let m=h.completion;!c||c.label!=m.label||c.detail!=m.detail||c.type!=null&&m.type!=null&&c.type!=m.type||c.apply!=m.apply||c.boost!=m.boost?l.push(h):D_(h.completion)>D_(c)&&(l[l.length-1]=h),c=h.completion}return l}class Th{constructor(e,n,r,s,i,a){this.options=e,this.attrs=n,this.tooltip=r,this.timestamp=s,this.selected=i,this.disabled=a}setSelected(e,n){return e==this.selected||e>=this.options.length?this:new Th(this.options,P_(n,e),this.tooltip,this.timestamp,e,this.disabled)}static build(e,n,r,s,i,a){if(s&&!a&&e.some(d=>d.isPending))return s.setDisabled();let l=mhe(e,n);if(!l.length)return s&&e.some(d=>d.isPending)?s.setDisabled():null;let c=n.facet(ys).selectOnOpen?0:-1;if(s&&s.selected!=c&&s.selected!=-1){let d=s.options[s.selected].completion;for(let h=0;hh.hasResult()?Math.min(d,h.from):d,1e8),create:bhe,above:i.aboveCursor},s?s.timestamp:Date.now(),c,!1)}map(e){return new Th(this.options,this.attrs,{...this.tooltip,pos:e.mapPos(this.tooltip.pos)},this.timestamp,this.selected,this.disabled)}setDisabled(){return new Th(this.options,this.attrs,this.tooltip,this.timestamp,this.selected,!0)}}class ny{constructor(e,n,r){this.active=e,this.id=n,this.open=r}static start(){return new ny(vhe,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:n}=e,r=n.facet(ys),i=(r.override||n.languageDataAt("autocomplete",ed(n)).map(ahe)).map(c=>(this.active.find(h=>h.source==c)||new ba(c,this.active.some(h=>h.state!=0)?1:0)).update(e,r));i.length==this.active.length&&i.every((c,d)=>c==this.active[d])&&(i=this.active);let a=this.open,l=e.effects.some(c=>c.is(T6));a&&e.docChanged&&(a=a.map(e.changes)),e.selection||i.some(c=>c.hasResult()&&e.changes.touchesRange(c.from,c.to))||!phe(i,this.active)||l?a=Th.build(i,n,this.id,a,r,l):a&&a.disabled&&!i.some(c=>c.isPending)&&(a=null),!a&&i.every(c=>!c.isPending)&&i.some(c=>c.hasResult())&&(i=i.map(c=>c.hasResult()?new ba(c.source,0):c));for(let c of e.effects)c.is(X$)&&(a=a&&a.setSelected(c.value,this.id));return i==this.active&&a==this.open?this:new ny(i,this.id,a)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?ghe:xhe}}function phe(t,e){if(t==e)return!0;for(let n=0,r=0;;){for(;n-1&&(n["aria-activedescendant"]=t+"-"+e),n}const vhe=[];function G$(t,e){if(t.isUserEvent("input.complete")){let r=t.annotation(C6);if(r&&e.activateOnCompletion(r))return 12}let n=t.isUserEvent("input.type");return n&&e.activateOnTyping?5:n?1:t.isUserEvent("delete.backward")?2:t.selection?8:t.docChanged?16:0}class ba{constructor(e,n,r=!1){this.source=e,this.state=n,this.explicit=r}hasResult(){return!1}get isPending(){return this.state==1}update(e,n){let r=G$(e,n),s=this;(r&8||r&16&&this.touches(e))&&(s=new ba(s.source,0)),r&4&&s.state==0&&(s=new ba(this.source,1)),s=s.updateFor(e,r);for(let i of e.effects)if(i.is(ty))s=new ba(s.source,1,i.value);else if(i.is(Y0))s=new ba(s.source,0);else if(i.is(T6))for(let a of i.value)a.source==s.source&&(s=a);return s}updateFor(e,n){return this.map(e.changes)}map(e){return this}touches(e){return e.changes.touchesRange(ed(e.state))}}class Lh extends ba{constructor(e,n,r,s,i,a){super(e,3,n),this.limit=r,this.result=s,this.from=i,this.to=a}hasResult(){return!0}updateFor(e,n){var r;if(!(n&3))return this.map(e.changes);let s=this.result;s.map&&!e.changes.empty&&(s=s.map(s,e.changes));let i=e.changes.mapPos(this.from),a=e.changes.mapPos(this.to,1),l=ed(e.state);if(l>a||!s||n&2&&(ed(e.startState)==this.from||ln.map(e))}}),X$=Ft.define(),xi=Os.define({create(){return ny.start()},update(t,e){return t.update(e)},provide:t=>[l6.from(t,e=>e.tooltip),Ze.contentAttributes.from(t,e=>e.attrs)]});function E6(t,e){const n=e.completion.apply||e.completion.label;let r=t.state.field(xi).active.find(s=>s.source==e.source);return r instanceof Lh?(typeof n=="string"?t.dispatch({...ihe(t.state,n,r.from,r.to),annotations:C6.of(e.completion)}):n(t,e.completion,r.from,r.to),!0):!1}const bhe=hhe(xi,E6);function v1(t,e="option"){return n=>{let r=n.state.field(xi,!1);if(!r||!r.open||r.open.disabled||Date.now()-r.open.timestamp-1?r.open.selected+s*(t?1:-1):t?0:a-1;return l<0?l=e=="page"?0:a-1:l>=a&&(l=e=="page"?a-1:0),n.dispatch({effects:X$.of(l)}),!0}}const whe=t=>{let e=t.state.field(xi,!1);return t.state.readOnly||!e||!e.open||e.open.selected<0||e.open.disabled||Date.now()-e.open.timestampt.state.field(xi,!1)?(t.dispatch({effects:ty.of(!0)}),!0):!1,She=t=>{let e=t.state.field(xi,!1);return!e||!e.active.some(n=>n.state!=0)?!1:(t.dispatch({effects:Y0.of(null)}),!0)};class khe{constructor(e,n){this.active=e,this.context=n,this.time=Date.now(),this.updates=[],this.done=void 0}}const Ohe=50,jhe=1e3,Nhe=Vr.fromClass(class{constructor(t){this.view=t,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(let e of t.state.field(xi).active)e.isPending&&this.startQuery(e)}update(t){let e=t.state.field(xi),n=t.state.facet(ys);if(!t.selectionSet&&!t.docChanged&&t.startState.field(xi)==e)return;let r=t.transactions.some(i=>{let a=G$(i,n);return a&8||(i.selection||i.docChanged)&&!(a&3)});for(let i=0;iOhe&&Date.now()-a.time>jhe){for(let l of a.context.abortListeners)try{l()}catch(c){vi(this.view.state,c)}a.context.abortListeners=null,this.running.splice(i--,1)}else a.updates.push(...t.transactions)}this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),t.transactions.some(i=>i.effects.some(a=>a.is(ty)))&&(this.pendingStart=!0);let s=this.pendingStart?50:n.activateOnTypingDelay;if(this.debounceUpdate=e.active.some(i=>i.isPending&&!this.running.some(a=>a.active.source==i.source))?setTimeout(()=>this.startUpdate(),s):-1,this.composing!=0)for(let i of t.transactions)i.isUserEvent("input.type")?this.composing=2:this.composing==2&&i.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;let{state:t}=this.view,e=t.field(xi);for(let n of e.active)n.isPending&&!this.running.some(r=>r.active.source==n.source)&&this.startQuery(n);this.running.length&&e.open&&e.open.disabled&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(ys).updateSyncTime))}startQuery(t){let{state:e}=this.view,n=ed(e),r=new V$(e,n,t.explicit,this.view),s=new khe(t,r);this.running.push(s),Promise.resolve(t.source(r)).then(i=>{s.context.aborted||(s.done=i||null,this.scheduleAccept())},i=>{this.view.dispatch({effects:Y0.of(null)}),vi(this.view.state,i)})}scheduleAccept(){this.running.every(t=>t.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(ys).updateSyncTime))}accept(){var t;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],n=this.view.state.facet(ys),r=this.view.state.field(xi);for(let s=0;sl.source==i.active.source);if(a&&a.isPending)if(i.done==null){let l=new ba(i.active.source,0);for(let c of i.updates)l=l.update(c,n);l.isPending||e.push(l)}else this.startQuery(a)}(e.length||r.open&&r.open.disabled)&&this.view.dispatch({effects:T6.of(e)})}},{eventHandlers:{blur(t){let e=this.view.state.field(xi,!1);if(e&&e.tooltip&&this.view.state.facet(ys).closeOnBlur){let n=e.open&&kq(this.view,e.open.tooltip);(!n||!n.dom.contains(t.relatedTarget))&&setTimeout(()=>this.view.dispatch({effects:Y0.of(null)}),10)}},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:ty.of(!1)}),20),this.composing=0}}}),Che=typeof navigator=="object"&&/Win/.test(navigator.platform),The=ou.highest(Ze.domEventHandlers({keydown(t,e){let n=e.state.field(xi,!1);if(!n||!n.open||n.open.disabled||n.open.selected<0||t.key.length>1||t.ctrlKey&&!(Che&&t.altKey)||t.metaKey)return!1;let r=n.open.options[n.open.selected],s=n.active.find(a=>a.source==r.source),i=r.completion.commitCharacters||s.result.commitCharacters;return i&&i.indexOf(t.key)>-1&&E6(e,r),!1}})),Y$=Ze.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li, & > completion-section":{padding:"1px 3px",lineHeight:1.2},"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer"},"& > completion-section":{display:"list-item",borderBottom:"1px solid silver",paddingLeft:"0.5em",opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"···"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"400px",boxSizing:"border-box",whiteSpace:"pre-line"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:"30px"},".cm-completionInfo.cm-completionInfo-right-narrow":{left:"30px"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'ƒ'"}},".cm-completionIcon-class":{"&:after":{content:"'○'"}},".cm-completionIcon-interface":{"&:after":{content:"'◌'"}},".cm-completionIcon-variable":{"&:after":{content:"'𝑥'"}},".cm-completionIcon-constant":{"&:after":{content:"'𝐶'"}},".cm-completionIcon-type":{"&:after":{content:"'𝑡'"}},".cm-completionIcon-enum":{"&:after":{content:"'∪'"}},".cm-completionIcon-property":{"&:after":{content:"'□'"}},".cm-completionIcon-keyword":{"&:after":{content:"'🔑︎'"}},".cm-completionIcon-namespace":{"&:after":{content:"'▢'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class Ehe{constructor(e,n,r,s){this.field=e,this.line=n,this.from=r,this.to=s}}class _6{constructor(e,n,r){this.field=e,this.from=n,this.to=r}map(e){let n=e.mapPos(this.from,-1,Rs.TrackDel),r=e.mapPos(this.to,1,Rs.TrackDel);return n==null||r==null?null:new _6(this.field,n,r)}}class M6{constructor(e,n){this.lines=e,this.fieldPositions=n}instantiate(e,n){let r=[],s=[n],i=e.doc.lineAt(n),a=/^\s*/.exec(i.text)[0];for(let c of this.lines){if(r.length){let d=a,h=/^\t*/.exec(c)[0].length;for(let m=0;mnew _6(c.field,s[c.line]+c.from,s[c.line]+c.to));return{text:r,ranges:l}}static parse(e){let n=[],r=[],s=[],i;for(let a of e.split(/\r\n?|\n/)){for(;i=/[#$]\{(?:(\d+)(?::([^{}]*))?|((?:\\[{}]|[^{}])*))\}/.exec(a);){let l=i[1]?+i[1]:null,c=i[2]||i[3]||"",d=-1,h=c.replace(/\\[{}]/g,m=>m[1]);for(let m=0;m=d&&g.field++}for(let m of s)if(m.line==r.length&&m.from>i.index){let g=i[2]?3+(i[1]||"").length:2;m.from-=g,m.to-=g}s.push(new Ehe(d,r.length,i.index,i.index+h.length)),a=a.slice(0,i.index)+c+a.slice(i.index+i[0].length)}a=a.replace(/\\([{}])/g,(l,c,d)=>{for(let h of s)h.line==r.length&&h.from>d&&(h.from--,h.to--);return c}),r.push(a)}return new M6(r,s)}}let _he=kt.widget({widget:new class extends $o{toDOM(){let t=document.createElement("span");return t.className="cm-snippetFieldPosition",t}ignoreEvent(){return!1}}}),Mhe=kt.mark({class:"cm-snippetField"});class Cf{constructor(e,n){this.ranges=e,this.active=n,this.deco=kt.set(e.map(r=>(r.from==r.to?_he:Mhe).range(r.from,r.to)),!0)}map(e){let n=[];for(let r of this.ranges){let s=r.map(e);if(!s)return null;n.push(s)}return new Cf(n,this.active)}selectionInsideField(e){return e.ranges.every(n=>this.ranges.some(r=>r.field==this.active&&r.from<=n.from&&r.to>=n.to))}}const Yp=Ft.define({map(t,e){return t&&t.map(e)}}),Ahe=Ft.define(),K0=Os.define({create(){return null},update(t,e){for(let n of e.effects){if(n.is(Yp))return n.value;if(n.is(Ahe)&&t)return new Cf(t.ranges,n.value)}return t&&e.docChanged&&(t=t.map(e.changes)),t&&e.selection&&!t.selectionInsideField(e.selection)&&(t=null),t},provide:t=>Ze.decorations.from(t,e=>e?e.deco:kt.none)});function A6(t,e){return Ae.create(t.filter(n=>n.field==e).map(n=>Ae.range(n.from,n.to)))}function Rhe(t){let e=M6.parse(t);return(n,r,s,i)=>{let{text:a,ranges:l}=e.instantiate(n.state,s),{main:c}=n.state.selection,d={changes:{from:s,to:i==c.from?c.to:i,insert:jn.of(a)},scrollIntoView:!0,annotations:r?[C6.of(r),ns.userEvent.of("input.complete")]:void 0};if(l.length&&(d.selection=A6(l,0)),l.some(h=>h.field>0)){let h=new Cf(l,0),m=d.effects=[Yp.of(h)];n.state.field(K0,!1)===void 0&&m.push(Ft.appendConfig.of([K0,Lhe,Bhe,Y$]))}n.dispatch(n.state.update(d))}}function K$(t){return({state:e,dispatch:n})=>{let r=e.field(K0,!1);if(!r||t<0&&r.active==0)return!1;let s=r.active+t,i=t>0&&!r.ranges.some(a=>a.field==s+t);return n(e.update({selection:A6(r.ranges,s),effects:Yp.of(i?null:new Cf(r.ranges,s)),scrollIntoView:!0})),!0}}const Dhe=({state:t,dispatch:e})=>t.field(K0,!1)?(e(t.update({effects:Yp.of(null)})),!0):!1,Phe=K$(1),zhe=K$(-1),Ihe=[{key:"Tab",run:Phe,shift:zhe},{key:"Escape",run:Dhe}],z_=at.define({combine(t){return t.length?t[0]:Ihe}}),Lhe=ou.highest(Hp.compute([z_],t=>t.facet(z_)));function xl(t,e){return{...e,apply:Rhe(t)}}const Bhe=Ze.domEventHandlers({mousedown(t,e){let n=e.state.field(K0,!1),r;if(!n||(r=e.posAtCoords({x:t.clientX,y:t.clientY}))==null)return!1;let s=n.ranges.find(i=>i.from<=r&&i.to>=r);return!s||s.field==n.active?!1:(e.dispatch({selection:A6(n.ranges,s.field),effects:Yp.of(n.ranges.some(i=>i.field>s.field)?new Cf(n.ranges,s.field):null),scrollIntoView:!0}),!0)}}),Z0={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},Vu=Ft.define({map(t,e){let n=e.mapPos(t,-1,Rs.TrackAfter);return n??void 0}}),R6=new class extends sd{};R6.startSide=1;R6.endSide=-1;const Z$=Os.define({create(){return Rn.empty},update(t,e){if(t=t.map(e.changes),e.selection){let n=e.state.doc.lineAt(e.selection.main.head);t=t.update({filter:r=>r>=n.from&&r<=n.to})}for(let n of e.effects)n.is(Vu)&&(t=t.update({add:[R6.range(n.value,n.value+1)]}));return t}});function Fhe(){return[$he,Z$]}const Z4="()[]{}<>«»»«[]{}";function J$(t){for(let e=0;e{if((qhe?t.composing:t.compositionStarted)||t.state.readOnly)return!1;let s=t.state.selection.main;if(r.length>2||r.length==2&&wo(gi(r,0))==1||e!=s.from||n!=s.to)return!1;let i=Vhe(t.state,r);return i?(t.dispatch(i),!0):!1}),Hhe=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let r=eH(t,t.selection.main.head).brackets||Z0.brackets,s=null,i=t.changeByRange(a=>{if(a.empty){let l=Uhe(t.doc,a.head);for(let c of r)if(c==l&&mb(t.doc,a.head)==J$(gi(c,0)))return{changes:{from:a.head-c.length,to:a.head+c.length},range:Ae.cursor(a.head-c.length)}}return{range:s=a}});return s||e(t.update(i,{scrollIntoView:!0,userEvent:"delete.backward"})),!s},Qhe=[{key:"Backspace",run:Hhe}];function Vhe(t,e){let n=eH(t,t.selection.main.head),r=n.brackets||Z0.brackets;for(let s of r){let i=J$(gi(s,0));if(e==s)return i==s?Xhe(t,s,r.indexOf(s+s+s)>-1,n):Whe(t,s,i,n.before||Z0.before);if(e==i&&tH(t,t.selection.main.from))return Ghe(t,s,i)}return null}function tH(t,e){let n=!1;return t.field(Z$).between(0,t.doc.length,r=>{r==e&&(n=!0)}),n}function mb(t,e){let n=t.sliceString(e,e+2);return n.slice(0,wo(gi(n,0)))}function Uhe(t,e){let n=t.sliceString(e-2,e);return wo(gi(n,0))==n.length?n:n.slice(1)}function Whe(t,e,n,r){let s=null,i=t.changeByRange(a=>{if(!a.empty)return{changes:[{insert:e,from:a.from},{insert:n,from:a.to}],effects:Vu.of(a.to+e.length),range:Ae.range(a.anchor+e.length,a.head+e.length)};let l=mb(t.doc,a.head);return!l||/\s/.test(l)||r.indexOf(l)>-1?{changes:{insert:e+n,from:a.head},effects:Vu.of(a.head+e.length),range:Ae.cursor(a.head+e.length)}:{range:s=a}});return s?null:t.update(i,{scrollIntoView:!0,userEvent:"input.type"})}function Ghe(t,e,n){let r=null,s=t.changeByRange(i=>i.empty&&mb(t.doc,i.head)==n?{changes:{from:i.head,to:i.head+n.length,insert:n},range:Ae.cursor(i.head+n.length)}:r={range:i});return r?null:t.update(s,{scrollIntoView:!0,userEvent:"input.type"})}function Xhe(t,e,n,r){let s=r.stringPrefixes||Z0.stringPrefixes,i=null,a=t.changeByRange(l=>{if(!l.empty)return{changes:[{insert:e,from:l.from},{insert:e,from:l.to}],effects:Vu.of(l.to+e.length),range:Ae.range(l.anchor+e.length,l.head+e.length)};let c=l.head,d=mb(t.doc,c),h;if(d==e){if(I_(t,c))return{changes:{insert:e+e,from:c},effects:Vu.of(c+e.length),range:Ae.cursor(c+e.length)};if(tH(t,c)){let g=n&&t.sliceDoc(c,c+e.length*3)==e+e+e?e+e+e:e;return{changes:{from:c,to:c+g.length,insert:g},range:Ae.cursor(c+g.length)}}}else{if(n&&t.sliceDoc(c-2*e.length,c)==e+e&&(h=L_(t,c-2*e.length,s))>-1&&I_(t,h))return{changes:{insert:e+e+e+e,from:c},effects:Vu.of(c+e.length),range:Ae.cursor(c+e.length)};if(t.charCategorizer(c)(d)!=wr.Word&&L_(t,c,s)>-1&&!Yhe(t,c,e,s))return{changes:{insert:e+e,from:c},effects:Vu.of(c+e.length),range:Ae.cursor(c+e.length)}}return{range:i=l}});return i?null:t.update(a,{scrollIntoView:!0,userEvent:"input.type"})}function I_(t,e){let n=ws(t).resolveInner(e+1);return n.parent&&n.from==e}function Yhe(t,e,n,r){let s=ws(t).resolveInner(e,-1),i=r.reduce((a,l)=>Math.max(a,l.length),0);for(let a=0;a<5;a++){let l=t.sliceDoc(s.from,Math.min(s.to,s.from+n.length+i)),c=l.indexOf(n);if(!c||c>-1&&r.indexOf(l.slice(0,c))>-1){let h=s.firstChild;for(;h&&h.from==s.from&&h.to-h.from>n.length+c;){if(t.sliceDoc(h.to-n.length,h.to)==n)return!1;h=h.firstChild}return!0}let d=s.to==e&&s.parent;if(!d)break;s=d}return!1}function L_(t,e,n){let r=t.charCategorizer(e);if(r(t.sliceDoc(e-1,e))!=wr.Word)return e;for(let s of n){let i=e-s.length;if(t.sliceDoc(i,e)==s&&r(t.sliceDoc(i-1,i))!=wr.Word)return i}return-1}function Khe(t={}){return[The,xi,ys.of(t),Nhe,Zhe,Y$]}const nH=[{key:"Ctrl-Space",run:K4},{mac:"Alt-`",run:K4},{mac:"Alt-i",run:K4},{key:"Escape",run:She},{key:"ArrowDown",run:v1(!0)},{key:"ArrowUp",run:v1(!1)},{key:"PageDown",run:v1(!0,"page")},{key:"PageUp",run:v1(!1,"page")},{key:"Enter",run:whe}],Zhe=ou.highest(Hp.computeN([ys],t=>t.facet(ys).defaultKeymap?[nH]:[]));class B_{constructor(e,n,r){this.from=e,this.to=n,this.diagnostic=r}}class qu{constructor(e,n,r){this.diagnostics=e,this.panel=n,this.selected=r}static init(e,n,r){let s=r.facet(J0).markerFilter;s&&(e=s(e,r));let i=e.slice().sort((x,y)=>x.from-y.from||x.to-y.to),a=new Fl,l=[],c=0,d=r.doc.iter(),h=0,m=r.doc.length;for(let x=0;;){let y=x==i.length?null:i[x];if(!y&&!l.length)break;let w,S;if(l.length)w=c,S=l.reduce((N,T)=>Math.min(N,T.to),y&&y.from>w?y.from:1e8);else{if(w=y.from,w>m)break;S=y.to,l.push(y),x++}for(;xN.from||N.to==w))l.push(N),x++,S=Math.min(N.to,S);else{S=Math.min(N.from,S);break}}S=Math.min(S,m);let k=!1;if(l.some(N=>N.from==w&&(N.to==S||S==m))&&(k=w==S,!k&&S-w<10)){let N=w-(h+d.value.length);N>0&&(d.next(N),h=w);for(let T=w;;){if(T>=S){k=!0;break}if(!d.lineBreak&&h+d.value.length>T)break;T=h+d.value.length,h+=d.value.length,d.next()}}let j=dfe(l);if(k)a.add(w,w,kt.widget({widget:new ofe(j),diagnostics:l.slice()}));else{let N=l.reduce((T,E)=>E.markClass?T+" "+E.markClass:T,"");a.add(w,S,kt.mark({class:"cm-lintRange cm-lintRange-"+j+N,diagnostics:l.slice(),inclusiveEnd:l.some(T=>T.to>S)}))}if(c=S,c==m)break;for(let N=0;N{if(!(e&&a.diagnostics.indexOf(e)<0))if(!r)r=new B_(s,i,e||a.diagnostics[0]);else{if(a.diagnostics.indexOf(r.diagnostic)<0)return!1;r=new B_(r.from,i,r.diagnostic)}}),r}function Jhe(t,e){let n=e.pos,r=e.end||n,s=t.state.facet(J0).hideOn(t,n,r);if(s!=null)return s;let i=t.startState.doc.lineAt(e.pos);return!!(t.effects.some(a=>a.is(rH))||t.changes.touchesRange(i.from,Math.max(i.to,r)))}function efe(t,e){return t.field(Vi,!1)?e:e.concat(Ft.appendConfig.of(hfe))}const rH=Ft.define(),D6=Ft.define(),sH=Ft.define(),Vi=Os.define({create(){return new qu(kt.none,null,null)},update(t,e){if(e.docChanged&&t.diagnostics.size){let n=t.diagnostics.map(e.changes),r=null,s=t.panel;if(t.selected){let i=e.changes.mapPos(t.selected.from,1);r=sf(n,t.selected.diagnostic,i)||sf(n,null,i)}!n.size&&s&&e.state.facet(J0).autoPanel&&(s=null),t=new qu(n,s,r)}for(let n of e.effects)if(n.is(rH)){let r=e.state.facet(J0).autoPanel?n.value.length?ep.open:null:t.panel;t=qu.init(n.value,r,e.state)}else n.is(D6)?t=new qu(t.diagnostics,n.value?ep.open:null,t.selected):n.is(sH)&&(t=new qu(t.diagnostics,t.panel,n.value));return t},provide:t=>[H0.from(t,e=>e.panel),Ze.decorations.from(t,e=>e.diagnostics)]}),tfe=kt.mark({class:"cm-lintRange cm-lintRange-active"});function nfe(t,e,n){let{diagnostics:r}=t.state.field(Vi),s,i=-1,a=-1;r.between(e-(n<0?1:0),e+(n>0?1:0),(c,d,{spec:h})=>{if(e>=c&&e<=d&&(c==d||(e>c||n>0)&&(eaH(t,n,!1)))}const sfe=t=>{let e=t.state.field(Vi,!1);(!e||!e.panel)&&t.dispatch({effects:efe(t.state,[D6.of(!0)])});let n=$0(t,ep.open);return n&&n.dom.querySelector(".cm-panel-lint ul").focus(),!0},F_=t=>{let e=t.state.field(Vi,!1);return!e||!e.panel?!1:(t.dispatch({effects:D6.of(!1)}),!0)},ife=t=>{let e=t.state.field(Vi,!1);if(!e)return!1;let n=t.state.selection.main,r=e.diagnostics.iter(n.to+1);return!r.value&&(r=e.diagnostics.iter(0),!r.value||r.from==n.from&&r.to==n.to)?!1:(t.dispatch({selection:{anchor:r.from,head:r.to},scrollIntoView:!0}),!0)},afe=[{key:"Mod-Shift-m",run:sfe,preventDefault:!0},{key:"F8",run:ife}],J0=at.define({combine(t){return{sources:t.map(e=>e.source).filter(e=>e!=null),...qo(t.map(e=>e.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null,hideOn:()=>null},{delay:Math.max,markerFilter:q_,tooltipFilter:q_,needsRefresh:(e,n)=>e?n?r=>e(r)||n(r):e:n,hideOn:(e,n)=>e?n?(r,s,i)=>e(r,s,i)||n(r,s,i):e:n,autoPanel:(e,n)=>e||n})}}});function q_(t,e){return t?e?(n,r)=>e(t(n,r),r):t:e}function iH(t){let e=[];if(t)e:for(let{name:n}of t){for(let r=0;ri.toLowerCase()==s.toLowerCase())){e.push(s);continue e}}e.push("")}return e}function aH(t,e,n){var r;let s=n?iH(e.actions):[];return sr("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},sr("span",{class:"cm-diagnosticText"},e.renderMessage?e.renderMessage(t):e.message),(r=e.actions)===null||r===void 0?void 0:r.map((i,a)=>{let l=!1,c=x=>{if(x.preventDefault(),l)return;l=!0;let y=sf(t.state.field(Vi).diagnostics,e);y&&i.apply(t,y.from,y.to)},{name:d}=i,h=s[a]?d.indexOf(s[a]):-1,m=h<0?d:[d.slice(0,h),sr("u",d.slice(h,h+1)),d.slice(h+1)],g=i.markClass?" "+i.markClass:"";return sr("button",{type:"button",class:"cm-diagnosticAction"+g,onclick:c,onmousedown:c,"aria-label":` Action: ${d}${h<0?"":` (access key "${s[a]})"`}.`},m)}),e.source&&sr("div",{class:"cm-diagnosticSource"},e.source))}class ofe extends $o{constructor(e){super(),this.sev=e}eq(e){return e.sev==this.sev}toDOM(){return sr("span",{class:"cm-lintPoint cm-lintPoint-"+this.sev})}}class $_{constructor(e,n){this.diagnostic=n,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=aH(e,n,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class ep{constructor(e){this.view=e,this.items=[];let n=s=>{if(s.keyCode==27)F_(this.view),this.view.focus();else if(s.keyCode==38||s.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(s.keyCode==40||s.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(s.keyCode==36)this.moveSelection(0);else if(s.keyCode==35)this.moveSelection(this.items.length-1);else if(s.keyCode==13)this.view.focus();else if(s.keyCode>=65&&s.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:i}=this.items[this.selectedIndex],a=iH(i.actions);for(let l=0;l{for(let i=0;iF_(this.view)},"×")),this.update()}get selectedIndex(){let e=this.view.state.field(Vi).selected;if(!e)return-1;for(let n=0;n{for(let h of d.diagnostics){if(a.has(h))continue;a.add(h);let m=-1,g;for(let x=r;xr&&(this.items.splice(r,m-r),s=!0)),n&&g.diagnostic==n.diagnostic?g.dom.hasAttribute("aria-selected")||(g.dom.setAttribute("aria-selected","true"),i=g):g.dom.hasAttribute("aria-selected")&&g.dom.removeAttribute("aria-selected"),r++}});r({sel:i.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:l,panel:c})=>{let d=c.height/this.list.offsetHeight;l.topc.bottom&&(this.list.scrollTop+=(l.bottom-c.bottom)/d)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),s&&this.sync()}sync(){let e=this.list.firstChild;function n(){let r=e;e=r.nextSibling,r.remove()}for(let r of this.items)if(r.dom.parentNode==this.list){for(;e!=r.dom;)n();e=r.dom.nextSibling}else this.list.insertBefore(r.dom,e);for(;e;)n()}moveSelection(e){if(this.selectedIndex<0)return;let n=this.view.state.field(Vi),r=sf(n.diagnostics,this.items[e].diagnostic);r&&this.view.dispatch({selection:{anchor:r.from,head:r.to},scrollIntoView:!0,effects:sH.of(r)})}static open(e){return new ep(e)}}function lfe(t,e='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,${encodeURIComponent(t)}')`}function y1(t){return lfe(``,'width="6" height="3"')}const cfe=Ze.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnostic-hint":{borderLeft:"5px solid #66d"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px",cursor:"pointer"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:y1("#d11")},".cm-lintRange-warning":{backgroundImage:y1("orange")},".cm-lintRange-info":{backgroundImage:y1("#999")},".cm-lintRange-hint":{backgroundImage:y1("#66d")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-lintPoint-hint":{"&:after":{borderBottomColor:"#66d"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}}});function ufe(t){return t=="error"?4:t=="warning"?3:t=="info"?2:1}function dfe(t){let e="hint",n=1;for(let r of t){let s=ufe(r.severity);s>n&&(n=s,e=r.severity)}return e}const hfe=[Vi,Ze.decorations.compute([Vi],t=>{let{selected:e,panel:n}=t.field(Vi);return!e||!n||e.from==e.to?kt.none:kt.set([tfe.range(e.from,e.to)])}),Wle(nfe,{hideOn:Jhe}),cfe];var H_=function(e){e===void 0&&(e={});var{crosshairCursor:n=!1}=e,r=[];e.closeBracketsKeymap!==!1&&(r=r.concat(Qhe)),e.defaultKeymap!==!1&&(r=r.concat(Cde)),e.searchKeymap!==!1&&(r=r.concat(Jde)),e.historyKeymap!==!1&&(r=r.concat(Due)),e.foldKeymap!==!1&&(r=r.concat(Qce)),e.completionKeymap!==!1&&(r=r.concat(nH)),e.lintKeymap!==!1&&(r=r.concat(afe));var s=[];return e.lineNumbers!==!1&&s.push(sce()),e.highlightActiveLineGutter!==!1&&s.push(oce()),e.highlightSpecialChars!==!1&&s.push(Sle()),e.history!==!1&&s.push(jue()),e.foldGutter!==!1&&s.push(Gce()),e.drawSelection!==!1&&s.push(dle()),e.dropCursor!==!1&&s.push(gle()),e.allowMultipleSelections!==!1&&s.push(bn.allowMultipleSelections.of(!0)),e.indentOnInput!==!1&&s.push(Pce()),e.syntaxHighlighting!==!1&&s.push(Wq(Zce,{fallback:!0})),e.bracketMatching!==!1&&s.push(iue()),e.closeBrackets!==!1&&s.push(Fhe()),e.autocompletion!==!1&&s.push(Khe()),e.rectangularSelection!==!1&&s.push(zle()),n!==!1&&s.push(Ble()),e.highlightActiveLine!==!1&&s.push(Tle()),e.highlightSelectionMatches!==!1&&s.push(Dde()),e.tabSize&&typeof e.tabSize=="number"&&s.push(Vp.of(" ".repeat(e.tabSize))),s.concat([Hp.of(r.flat())]).filter(Boolean)};const ffe="#e5c07b",Q_="#e06c75",mfe="#56b6c2",pfe="#ffffff",fv="#abb2bf",oO="#7d8799",gfe="#61afef",xfe="#98c379",V_="#d19a66",vfe="#c678dd",yfe="#21252b",U_="#2c313a",W_="#282c34",J4="#353a42",bfe="#3E4451",G_="#528bff",wfe=Ze.theme({"&":{color:fv,backgroundColor:W_},".cm-content":{caretColor:G_},".cm-cursor, .cm-dropCursor":{borderLeftColor:G_},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:bfe},".cm-panels":{backgroundColor:yfe,color:fv},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:W_,color:oO,border:"none"},".cm-activeLineGutter":{backgroundColor:U_},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:J4},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:J4,borderBottomColor:J4},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:U_,color:fv}}},{dark:!0}),Sfe=Wp.define([{tag:xe.keyword,color:vfe},{tag:[xe.name,xe.deleted,xe.character,xe.propertyName,xe.macroName],color:Q_},{tag:[xe.function(xe.variableName),xe.labelName],color:gfe},{tag:[xe.color,xe.constant(xe.name),xe.standard(xe.name)],color:V_},{tag:[xe.definition(xe.name),xe.separator],color:fv},{tag:[xe.typeName,xe.className,xe.number,xe.changed,xe.annotation,xe.modifier,xe.self,xe.namespace],color:ffe},{tag:[xe.operator,xe.operatorKeyword,xe.url,xe.escape,xe.regexp,xe.link,xe.special(xe.string)],color:mfe},{tag:[xe.meta,xe.comment],color:oO},{tag:xe.strong,fontWeight:"bold"},{tag:xe.emphasis,fontStyle:"italic"},{tag:xe.strikethrough,textDecoration:"line-through"},{tag:xe.link,color:oO,textDecoration:"underline"},{tag:xe.heading,fontWeight:"bold",color:Q_},{tag:[xe.atom,xe.bool,xe.special(xe.variableName)],color:V_},{tag:[xe.processingInstruction,xe.string,xe.inserted],color:xfe},{tag:xe.invalid,color:pfe}]),oH=[wfe,Wq(Sfe)];var kfe=Ze.theme({"&":{backgroundColor:"#fff"}},{dark:!1}),Ofe=function(e){e===void 0&&(e={});var{indentWithTab:n=!0,editable:r=!0,readOnly:s=!1,theme:i="light",placeholder:a="",basicSetup:l=!0}=e,c=[];switch(n&&c.unshift(Hp.of([Tde])),l&&(typeof l=="boolean"?c.unshift(H_()):c.unshift(H_(l))),a&&c.unshift(Ale(a)),i){case"light":c.push(kfe);break;case"dark":c.push(oH);break;case"none":break;default:c.push(i);break}return r===!1&&c.push(Ze.editable.of(!1)),s&&c.push(bn.readOnly.of(!0)),[...c]},jfe=t=>({line:t.state.doc.lineAt(t.state.selection.main.from),lineCount:t.state.doc.lines,lineBreak:t.state.lineBreak,length:t.state.doc.length,readOnly:t.state.readOnly,tabSize:t.state.tabSize,selection:t.state.selection,selectionAsSingle:t.state.selection.asSingle().main,ranges:t.state.selection.ranges,selectionCode:t.state.sliceDoc(t.state.selection.main.from,t.state.selection.main.to),selections:t.state.selection.ranges.map(e=>t.state.sliceDoc(e.from,e.to)),selectedText:t.state.selection.ranges.some(e=>!e.empty)});class Nfe{constructor(e,n){this.timeLeftMS=void 0,this.timeoutMS=void 0,this.isCancelled=!1,this.isTimeExhausted=!1,this.callbacks=[],this.timeLeftMS=n,this.timeoutMS=n,this.callbacks.push(e)}tick(){if(!this.isCancelled&&!this.isTimeExhausted&&(this.timeLeftMS--,this.timeLeftMS<=0)){this.isTimeExhausted=!0;var e=this.callbacks.slice();this.callbacks.length=0,e.forEach(n=>{try{n()}catch(r){console.error("TimeoutLatch callback error:",r)}})}}cancel(){this.isCancelled=!0,this.callbacks.length=0}reset(){this.timeLeftMS=this.timeoutMS,this.isCancelled=!1,this.isTimeExhausted=!1}get isDone(){return this.isCancelled||this.isTimeExhausted}}class X_{constructor(){this.interval=null,this.latches=new Set}add(e){this.latches.add(e),this.start()}remove(e){this.latches.delete(e),this.latches.size===0&&this.stop()}start(){this.interval===null&&(this.interval=setInterval(()=>{this.latches.forEach(e=>{e.tick(),e.isDone&&this.remove(e)})},1))}stop(){this.interval!==null&&(clearInterval(this.interval),this.interval=null)}}var eS=null,Cfe=()=>typeof window>"u"?new X_:(eS||(eS=new X_),eS),Y_=Fo.define(),Tfe=200,Efe=[];function _fe(t){var{value:e,selection:n,onChange:r,onStatistics:s,onCreateEditor:i,onUpdate:a,extensions:l=Efe,autoFocus:c,theme:d="light",height:h=null,minHeight:m=null,maxHeight:g=null,width:x=null,minWidth:y=null,maxWidth:w=null,placeholder:S="",editable:k=!0,readOnly:j=!1,indentWithTab:N=!0,basicSetup:T=!0,root:E,initialState:_}=t,[M,I]=b.useState(),[P,L]=b.useState(),[H,U]=b.useState(),ee=b.useState(()=>({current:null}))[0],z=b.useState(()=>({current:null}))[0],Q=Ze.theme({"&":{height:h,minHeight:m,maxHeight:g,width:x,minWidth:y,maxWidth:w},"& .cm-scroller":{height:"100% !important"}}),B=Ze.updateListener.of(G=>{if(G.docChanged&&typeof r=="function"&&!G.transactions.some(W=>W.annotation(Y_))){ee.current?ee.current.reset():(ee.current=new Nfe(()=>{if(z.current){var W=z.current;z.current=null,W()}ee.current=null},Tfe),Cfe().add(ee.current));var R=G.state.doc,ie=R.toString();r(ie,G)}s&&s(jfe(G))}),X=Ofe({theme:d,editable:k,readOnly:j,placeholder:S,indentWithTab:N,basicSetup:T}),J=[B,Q,...X];return a&&typeof a=="function"&&J.push(Ze.updateListener.of(a)),J=J.concat(l),b.useLayoutEffect(()=>{if(M&&!H){var G={doc:e,selection:n,extensions:J},R=_?bn.fromJSON(_.json,G,_.fields):bn.create(G);if(U(R),!P){var ie=new Ze({state:R,parent:M,root:E});L(ie),i&&i(ie,R)}}return()=>{P&&(U(void 0),L(void 0))}},[M,H]),b.useEffect(()=>{t.container&&I(t.container)},[t.container]),b.useEffect(()=>()=>{P&&(P.destroy(),L(void 0)),ee.current&&(ee.current.cancel(),ee.current=null)},[P]),b.useEffect(()=>{c&&P&&P.focus()},[c,P]),b.useEffect(()=>{P&&P.dispatch({effects:Ft.reconfigure.of(J)})},[d,l,h,m,g,x,y,w,S,k,j,N,T,r,a]),b.useEffect(()=>{if(e!==void 0){var G=P?P.state.doc.toString():"";if(P&&e!==G){var R=ee.current&&!ee.current.isDone,ie=()=>{P&&e!==P.state.doc.toString()&&P.dispatch({changes:{from:0,to:P.state.doc.toString().length,insert:e||""},annotations:[Y_.of(!0)]})};R?z.current=ie:ie()}}},[e,P]),{state:H,setState:U,view:P,setView:L,container:M,setContainer:I}}var Mfe=["className","value","selection","extensions","onChange","onStatistics","onCreateEditor","onUpdate","autoFocus","theme","height","minHeight","maxHeight","width","minWidth","maxWidth","basicSetup","placeholder","indentWithTab","editable","readOnly","root","initialState"],lH=b.forwardRef((t,e)=>{var{className:n,value:r="",selection:s,extensions:i=[],onChange:a,onStatistics:l,onCreateEditor:c,onUpdate:d,autoFocus:h,theme:m="light",height:g,minHeight:x,maxHeight:y,width:w,minWidth:S,maxWidth:k,basicSetup:j,placeholder:N,indentWithTab:T,editable:E,readOnly:_,root:M,initialState:I}=t,P=xJ(t,Mfe),L=b.useRef(null),{state:H,view:U,container:ee,setContainer:z}=_fe({root:M,value:r,autoFocus:h,theme:m,height:g,minHeight:x,maxHeight:y,width:w,minWidth:S,maxWidth:k,basicSetup:j,placeholder:N,indentWithTab:T,editable:E,readOnly:_,selection:s,onChange:a,onStatistics:l,onCreateEditor:c,onUpdate:d,extensions:i,initialState:I});b.useImperativeHandle(e,()=>({editor:L.current,state:H,view:U}),[L,ee,H,U]);var Q=b.useCallback(X=>{L.current=X,z(X)},[z]);if(typeof r!="string")throw new Error("value must be typeof string but got "+typeof r);var B=typeof m=="string"?"cm-theme-"+m:"cm-theme";return o.jsx("div",vJ({ref:Q,className:""+B+(n?" "+n:"")},P))});lH.displayName="CodeMirror";var K_={};class ry{constructor(e,n,r,s,i,a,l,c,d,h=0,m){this.p=e,this.stack=n,this.state=r,this.reducePos=s,this.pos=i,this.score=a,this.buffer=l,this.bufferBase=c,this.curContext=d,this.lookAhead=h,this.parent=m}toString(){return`[${this.stack.filter((e,n)=>n%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,n,r=0){let s=e.parser.context;return new ry(e,[],n,r,r,0,[],0,s?new Z_(s,s.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,n){this.stack.push(this.state,n,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var n;let r=e>>19,s=e&65535,{parser:i}=this.p,a=this.reducePos=2e3&&!(!((n=this.p.parser.nodeSet.types[s])===null||n===void 0)&&n.isAnonymous)&&(d==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=h):this.p.lastBigReductionSizec;)this.stack.pop();this.reduceContext(s,d)}storeNode(e,n,r,s=4,i=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]0&&a.buffer[l-4]==0&&a.buffer[l-1]>-1){if(n==r)return;if(a.buffer[l-2]>=n){a.buffer[l-2]=r;return}}}if(!i||this.pos==r)this.buffer.push(e,n,r,s);else{let a=this.buffer.length;if(a>0&&(this.buffer[a-4]!=0||this.buffer[a-1]<0)){let l=!1;for(let c=a;c>0&&this.buffer[c-2]>r;c-=4)if(this.buffer[c-1]>=0){l=!0;break}if(l)for(;a>0&&this.buffer[a-2]>r;)this.buffer[a]=this.buffer[a-4],this.buffer[a+1]=this.buffer[a-3],this.buffer[a+2]=this.buffer[a-2],this.buffer[a+3]=this.buffer[a-1],a-=4,s>4&&(s-=4)}this.buffer[a]=e,this.buffer[a+1]=n,this.buffer[a+2]=r,this.buffer[a+3]=s}}shift(e,n,r,s){if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let i=e,{parser:a}=this.p;(s>this.pos||n<=a.maxNode)&&(this.pos=s,a.stateFlag(i,1)||(this.reducePos=s)),this.pushState(i,r),this.shiftContext(n,r),n<=a.maxNode&&this.buffer.push(n,r,s,4)}else this.pos=s,this.shiftContext(n,r),n<=this.p.parser.maxNode&&this.buffer.push(n,r,s,4)}apply(e,n,r,s){e&65536?this.reduce(e):this.shift(e,n,r,s)}useNode(e,n){let r=this.p.reused.length-1;(r<0||this.p.reused[r]!=e)&&(this.p.reused.push(e),r++);let s=this.pos;this.reducePos=this.pos=s+e.length,this.pushState(n,s),this.buffer.push(r,s,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,n=e.buffer.length;for(;n>0&&e.buffer[n-2]>e.reducePos;)n-=4;let r=e.buffer.slice(n),s=e.bufferBase+n;for(;e&&s==e.bufferBase;)e=e.parent;return new ry(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,r,s,this.curContext,this.lookAhead,e)}recoverByDelete(e,n){let r=e<=this.p.parser.maxNode;r&&this.storeNode(e,this.pos,n,4),this.storeNode(0,this.pos,n,r?8:4),this.pos=this.reducePos=n,this.score-=190}canShift(e){for(let n=new Afe(this);;){let r=this.p.parser.stateSlot(n.state,4)||this.p.parser.hasAction(n.state,e);if(r==0)return!1;if((r&65536)==0)return!0;n.reduce(r)}}recoverByInsert(e){if(this.stack.length>=300)return[];let n=this.p.parser.nextStates(this.state);if(n.length>8||this.stack.length>=120){let s=[];for(let i=0,a;ic&1&&l==a)||s.push(n[i],a)}n=s}let r=[];for(let s=0;s>19,s=n&65535,i=this.stack.length-r*3;if(i<0||e.getGoto(this.stack[i],s,!1)<0){let a=this.findForcedReduction();if(a==null)return!1;n=a}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(n),!0}findForcedReduction(){let{parser:e}=this.p,n=[],r=(s,i)=>{if(!n.includes(s))return n.push(s),e.allActions(s,a=>{if(!(a&393216))if(a&65536){let l=(a>>19)-i;if(l>1){let c=a&65535,d=this.stack.length-l*3;if(d>=0&&e.getGoto(this.stack[d],c,!1)>=0)return l<<19|65536|c}}else{let l=r(a,i+1);if(l!=null)return l}})};return r(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let n=0;nthis.lookAhead&&(this.emitLookAhead(),this.lookAhead=e)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}}class Z_{constructor(e,n){this.tracker=e,this.context=n,this.hash=e.strict?e.hash(n):0}}class Afe{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let n=e&65535,r=e>>19;r==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(r-1)*3;let s=this.start.p.parser.getGoto(this.stack[this.base-3],n,!0);this.state=s}}class sy{constructor(e,n,r){this.stack=e,this.pos=n,this.index=r,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,n=e.bufferBase+e.buffer.length){return new sy(e,n,n-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new sy(this.stack,this.pos,this.index)}}function b1(t,e=Uint16Array){if(typeof t!="string")return t;let n=null;for(let r=0,s=0;r=92&&a--,a>=34&&a--;let c=a-32;if(c>=46&&(c-=46,l=!0),i+=c,l)break;i*=46}n?n[s++]=i:n=new e(i)}return n}class mv{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const J_=new mv;class Rfe{constructor(e,n){this.input=e,this.ranges=n,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=J_,this.rangeIndex=0,this.pos=this.chunkPos=n[0].from,this.range=n[0],this.end=n[n.length-1].to,this.readNext()}resolveOffset(e,n){let r=this.range,s=this.rangeIndex,i=this.pos+e;for(;ir.to:i>=r.to;){if(s==this.ranges.length-1)return null;let a=this.ranges[++s];i+=a.from-r.to,r=a}return i}clipPos(e){if(e>=this.range.from&&ee)return Math.max(e,n.from);return this.end}peek(e){let n=this.chunkOff+e,r,s;if(n>=0&&n=this.chunk2Pos&&rl.to&&(this.chunk2=this.chunk2.slice(0,l.to-r)),s=this.chunk2.charCodeAt(0)}}return r>=this.token.lookAhead&&(this.token.lookAhead=r+1),s}acceptToken(e,n=0){let r=n?this.resolveOffset(n,-1):this.pos;if(r==null||r=this.chunk2Pos&&this.posthis.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,n){if(n?(this.token=n,n.start=e,n.lookAhead=e+1,n.value=n.extended=-1):this.token=J_,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e=this.chunkPos&&n<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,n-this.chunkPos);if(e>=this.chunk2Pos&&n<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,n-this.chunk2Pos);if(e>=this.range.from&&n<=this.range.to)return this.input.read(e,n);let r="";for(let s of this.ranges){if(s.from>=n)break;s.to>e&&(r+=this.input.read(Math.max(s.from,e),Math.min(s.to,n)))}return r}}class Bh{constructor(e,n){this.data=e,this.id=n}token(e,n){let{parser:r}=n.p;Dfe(this.data,e,n,this.id,r.data,r.tokenPrecTable)}}Bh.prototype.contextual=Bh.prototype.fallback=Bh.prototype.extend=!1;Bh.prototype.fallback=Bh.prototype.extend=!1;class pb{constructor(e,n={}){this.token=e,this.contextual=!!n.contextual,this.fallback=!!n.fallback,this.extend=!!n.extend}}function Dfe(t,e,n,r,s,i){let a=0,l=1<0){let y=t[x];if(c.allows(y)&&(e.token.value==-1||e.token.value==y||Pfe(y,e.token.value,s,i))){e.acceptToken(y);break}}let h=e.next,m=0,g=t[a+2];if(e.next<0&&g>m&&t[d+g*3-3]==65535){a=t[d+g*3-1];continue e}for(;m>1,y=d+x+(x<<1),w=t[y],S=t[y+1]||65536;if(h=S)m=x+1;else{a=t[y+2],e.advance();continue e}}break}}function eM(t,e,n){for(let r=e,s;(s=t[r])!=65535;r++)if(s==n)return r-e;return-1}function Pfe(t,e,n,r){let s=eM(n,r,e);return s<0||eM(n,r,t)e)&&!r.type.isError)return n<0?Math.max(0,Math.min(r.to-1,e-25)):Math.min(t.length,Math.max(r.from+1,e+25));if(n<0?r.prevSibling():r.nextSibling())break;if(!r.parent())return n<0?0:t.length}}class zfe{constructor(e,n){this.fragments=e,this.nodeSet=n,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?tM(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?tM(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(ee)return this.nextStart=a,null;if(i instanceof ar){if(a==e){if(a=Math.max(this.safeFrom,e)&&(this.trees.push(i),this.start.push(a),this.index.push(0))}else this.index[n]++,this.nextStart=a+i.length}}}class Ife{constructor(e,n){this.stream=n,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(r=>new mv)}getActions(e){let n=0,r=null,{parser:s}=e.p,{tokenizers:i}=s,a=s.stateSlot(e.state,3),l=e.curContext?e.curContext.hash:0,c=0;for(let d=0;dm.end+25&&(c=Math.max(m.lookAhead,c)),m.value!=0)){let g=n;if(m.extended>-1&&(n=this.addActions(e,m.extended,m.end,n)),n=this.addActions(e,m.value,m.end,n),!h.extend&&(r=m,n>g))break}}for(;this.actions.length>n;)this.actions.pop();return c&&e.setLookAhead(c),!r&&e.pos==this.stream.end&&(r=new mv,r.value=e.p.parser.eofTerm,r.start=r.end=e.pos,n=this.addActions(e,r.value,r.end,n)),this.mainToken=r,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let n=new mv,{pos:r,p:s}=e;return n.start=r,n.end=Math.min(r+1,s.stream.end),n.value=r==s.stream.end?s.parser.eofTerm:0,n}updateCachedToken(e,n,r){let s=this.stream.clipPos(r.pos);if(n.token(this.stream.reset(s,e),r),e.value>-1){let{parser:i}=r.p;for(let a=0;a=0&&r.p.parser.dialect.allows(l>>1)){(l&1)==0?e.value=l>>1:e.extended=l>>1;break}}}else e.value=0,e.end=this.stream.clipPos(s+1)}putAction(e,n,r,s){for(let i=0;ie.bufferLength*4?new zfe(r,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,n=this.minStackPos,r=this.stacks=[],s,i;if(this.bigReductionCount>300&&e.length==1){let[a]=e;for(;a.forceReduce()&&a.stack.length&&a.stack[a.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let a=0;an)r.push(l);else{if(this.advanceStack(l,r,e))continue;{s||(s=[],i=[]),s.push(l);let c=this.tokens.getMainToken(l);i.push(c.value,c.end)}}break}}if(!r.length){let a=s&&qfe(s);if(a)return Bi&&console.log("Finish with "+this.stackID(a)),this.stackToTree(a);if(this.parser.strict)throw Bi&&s&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+n);this.recovering||(this.recovering=5)}if(this.recovering&&s){let a=this.stoppedAt!=null&&s[0].pos>this.stoppedAt?s[0]:this.runRecovery(s,i,r);if(a)return Bi&&console.log("Force-finish "+this.stackID(a)),this.stackToTree(a.forceAll())}if(this.recovering){let a=this.recovering==1?1:this.recovering*3;if(r.length>a)for(r.sort((l,c)=>c.score-l.score);r.length>a;)r.pop();r.some(l=>l.reducePos>n)&&this.recovering--}else if(r.length>1){e:for(let a=0;a500&&d.buffer.length>500)if((l.score-d.score||l.buffer.length-d.buffer.length)>0)r.splice(c--,1);else{r.splice(a--,1);continue e}}}r.length>12&&r.splice(12,r.length-12)}this.minStackPos=r[0].pos;for(let a=1;a ":"";if(this.stoppedAt!=null&&s>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let d=e.curContext&&e.curContext.tracker.strict,h=d?e.curContext.hash:0;for(let m=this.fragments.nodeAt(s);m;){let g=this.parser.nodeSet.types[m.type.id]==m.type?i.getGoto(e.state,m.type.id):-1;if(g>-1&&m.length&&(!d||(m.prop(sn.contextHash)||0)==h))return e.useNode(m,g),Bi&&console.log(a+this.stackID(e)+` (via reuse of ${i.getName(m.type.id)})`),!0;if(!(m instanceof ar)||m.children.length==0||m.positions[0]>0)break;let x=m.children[0];if(x instanceof ar&&m.positions[0]==0)m=x;else break}}let l=i.stateSlot(e.state,4);if(l>0)return e.reduce(l),Bi&&console.log(a+this.stackID(e)+` (via always-reduce ${i.getName(l&65535)})`),!0;if(e.stack.length>=8400)for(;e.stack.length>6e3&&e.forceReduce(););let c=this.tokens.getActions(e);for(let d=0;ds?n.push(y):r.push(y)}return!1}advanceFully(e,n){let r=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>r)return nM(e,n),!0}}runRecovery(e,n,r){let s=null,i=!1;for(let a=0;a ":"";if(l.deadEnd&&(i||(i=!0,l.restart(),Bi&&console.log(h+this.stackID(l)+" (restarted)"),this.advanceFully(l,r))))continue;let m=l.split(),g=h;for(let x=0;x<10&&m.forceReduce()&&(Bi&&console.log(g+this.stackID(m)+" (via force-reduce)"),!this.advanceFully(m,r));x++)Bi&&(g=this.stackID(m)+" -> ");for(let x of l.recoverByInsert(c))Bi&&console.log(h+this.stackID(x)+" (via recover-insert)"),this.advanceFully(x,r);this.stream.end>l.pos?(d==l.pos&&(d++,c=0),l.recoverByDelete(c,d),Bi&&console.log(h+this.stackID(l)+` (via recover-delete ${this.parser.getName(c)})`),nM(l,r)):(!s||s.scoret;class Ffe{constructor(e){this.start=e.start,this.shift=e.shift||nS,this.reduce=e.reduce||nS,this.reuse=e.reuse||nS,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}}class tp extends h6{constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (14)`);let n=e.nodeNames.split(" ");this.minRepeatTerm=n.length;for(let l=0;le.topRules[l][1]),s=[];for(let l=0;l=0)i(h,c,l[d++]);else{let m=l[d+-h];for(let g=-h;g>0;g--)i(l[d++],c,m);d++}}}this.nodeSet=new ab(n.map((l,c)=>ri.define({name:c>=this.minRepeatTerm?void 0:l,id:c,props:s[c],top:r.indexOf(c)>-1,error:c==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(c)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=Cq;let a=b1(e.tokenData);this.context=e.context,this.specializerSpecs=e.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let l=0;ltypeof l=="number"?new Bh(a,l):l),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,n,r){let s=new Lfe(this,e,n,r);for(let i of this.wrappers)s=i(s,e,n,r);return s}getGoto(e,n,r=!1){let s=this.goto;if(n>=s[0])return-1;for(let i=s[n+1];;){let a=s[i++],l=a&1,c=s[i++];if(l&&r)return c;for(let d=i+(a>>1);i0}validAction(e,n){return!!this.allActions(e,r=>r==n?!0:null)}allActions(e,n){let r=this.stateSlot(e,4),s=r?n(r):void 0;for(let i=this.stateSlot(e,1);s==null;i+=3){if(this.data[i]==65535)if(this.data[i+1]==1)i=Nl(this.data,i+2);else break;s=n(Nl(this.data,i+1))}return s}nextStates(e){let n=[];for(let r=this.stateSlot(e,1);;r+=3){if(this.data[r]==65535)if(this.data[r+1]==1)r=Nl(this.data,r+2);else break;if((this.data[r+2]&1)==0){let s=this.data[r+1];n.some((i,a)=>a&1&&i==s)||n.push(this.data[r],s)}}return n}configure(e){let n=Object.assign(Object.create(tp.prototype),this);if(e.props&&(n.nodeSet=this.nodeSet.extend(...e.props)),e.top){let r=this.topRules[e.top];if(!r)throw new RangeError(`Invalid top rule name ${e.top}`);n.top=r}return e.tokenizers&&(n.tokenizers=this.tokenizers.map(r=>{let s=e.tokenizers.find(i=>i.from==r);return s?s.to:r})),e.specializers&&(n.specializers=this.specializers.slice(),n.specializerSpecs=this.specializerSpecs.map((r,s)=>{let i=e.specializers.find(l=>l.from==r.external);if(!i)return r;let a=Object.assign(Object.assign({},r),{external:i.to});return n.specializers[s]=rM(a),a})),e.contextTracker&&(n.context=e.contextTracker),e.dialect&&(n.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(n.strict=e.strict),e.wrap&&(n.wrappers=n.wrappers.concat(e.wrap)),e.bufferLength!=null&&(n.bufferLength=e.bufferLength),n}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let n=this.dynamicPrecedences;return n==null?0:n[e]||0}parseDialect(e){let n=Object.keys(this.dialects),r=n.map(()=>!1);if(e)for(let i of e.split(" ")){let a=n.indexOf(i);a>=0&&(r[a]=!0)}let s=null;for(let i=0;ir)&&n.p.parser.stateFlag(n.state,2)&&(!e||e.scoret.external(n,r)<<1|e}return t.get}const $fe=1,cH=194,uH=195,Hfe=196,sM=197,Qfe=198,Vfe=199,Ufe=200,Wfe=2,dH=3,iM=201,Gfe=24,Xfe=25,Yfe=49,Kfe=50,Zfe=55,Jfe=56,eme=57,tme=59,nme=60,rme=61,sme=62,ime=63,ame=65,ome=238,lme=71,cme=241,ume=242,dme=243,hme=244,fme=245,mme=246,pme=247,gme=248,hH=72,xme=249,vme=250,yme=251,bme=252,wme=253,Sme=254,kme=255,Ome=256,jme=73,Nme=77,Cme=263,Tme=112,Eme=130,_me=151,Mme=152,Ame=155,ud=10,np=13,P6=32,gb=9,z6=35,Rme=40,Dme=46,lO=123,aM=125,fH=39,mH=34,oM=92,Pme=111,zme=120,Ime=78,Lme=117,Bme=85,Fme=new Set([Xfe,Yfe,Kfe,Cme,ame,Eme,Jfe,eme,ome,sme,ime,hH,jme,Nme,nme,rme,_me,Mme,Ame,Tme]);function rS(t){return t==ud||t==np}function sS(t){return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102}const qme=new pb((t,e)=>{let n;if(t.next<0)t.acceptToken(Vfe);else if(e.context.flags&pv)rS(t.next)&&t.acceptToken(Qfe,1);else if(((n=t.peek(-1))<0||rS(n))&&e.canShift(sM)){let r=0;for(;t.next==P6||t.next==gb;)t.advance(),r++;(t.next==ud||t.next==np||t.next==z6)&&t.acceptToken(sM,-r)}else rS(t.next)&&t.acceptToken(Hfe,1)},{contextual:!0}),$me=new pb((t,e)=>{let n=e.context;if(n.flags)return;let r=t.peek(-1);if(r==ud||r==np){let s=0,i=0;for(;;){if(t.next==P6)s++;else if(t.next==gb)s+=8-s%8;else break;t.advance(),i++}s!=n.indent&&t.next!=ud&&t.next!=np&&t.next!=z6&&(s[t,e|pH])),Vme=new Ffe({start:Hme,reduce(t,e,n,r){return t.flags&pv&&Fme.has(e)||(e==lme||e==hH)&&t.flags&pH?t.parent:t},shift(t,e,n,r){return e==cH?new gv(t,Qme(r.read(r.pos,n.pos)),0):e==uH?t.parent:e==Gfe||e==Zfe||e==tme||e==dH?new gv(t,0,pv):lM.has(e)?new gv(t,0,lM.get(e)|t.flags&pv):t},hash(t){return t.hash}}),Ume=new pb(t=>{for(let e=0;e<5;e++){if(t.next!="print".charCodeAt(e))return;t.advance()}if(!/\w/.test(String.fromCharCode(t.next)))for(let e=0;;e++){let n=t.peek(e);if(!(n==P6||n==gb)){n!=Rme&&n!=Dme&&n!=ud&&n!=np&&n!=z6&&t.acceptToken($fe);return}}}),Wme=new pb((t,e)=>{let{flags:n}=e.context,r=n&wl?mH:fH,s=(n&Sl)>0,i=!(n&kl),a=(n&Ol)>0,l=t.pos;for(;!(t.next<0);)if(a&&t.next==lO)if(t.peek(1)==lO)t.advance(2);else{if(t.pos==l){t.acceptToken(dH,1);return}break}else if(i&&t.next==oM){if(t.pos==l){t.advance();let c=t.next;c>=0&&(t.advance(),Gme(t,c)),t.acceptToken(Wfe);return}break}else if(t.next==oM&&!i&&t.peek(1)>-1)t.advance(2);else if(t.next==r&&(!s||t.peek(1)==r&&t.peek(2)==r)){if(t.pos==l){t.acceptToken(iM,s?3:1);return}break}else if(t.next==ud){if(s)t.advance();else if(t.pos==l){t.acceptToken(iM);return}break}else t.advance();t.pos>l&&t.acceptToken(Ufe)});function Gme(t,e){if(e==Pme)for(let n=0;n<2&&t.next>=48&&t.next<=55;n++)t.advance();else if(e==zme)for(let n=0;n<2&&sS(t.next);n++)t.advance();else if(e==Lme)for(let n=0;n<4&&sS(t.next);n++)t.advance();else if(e==Bme)for(let n=0;n<8&&sS(t.next);n++)t.advance();else if(e==Ime&&t.next==lO){for(t.advance();t.next>=0&&t.next!=aM&&t.next!=fH&&t.next!=mH&&t.next!=ud;)t.advance();t.next==aM&&t.advance()}}const Xme=f6({'async "*" "**" FormatConversion FormatSpec':xe.modifier,"for while if elif else try except finally return raise break continue with pass assert await yield match case":xe.controlKeyword,"in not and or is del":xe.operatorKeyword,"from def class global nonlocal lambda":xe.definitionKeyword,import:xe.moduleKeyword,"with as print":xe.keyword,Boolean:xe.bool,None:xe.null,VariableName:xe.variableName,"CallExpression/VariableName":xe.function(xe.variableName),"FunctionDefinition/VariableName":xe.function(xe.definition(xe.variableName)),"ClassDefinition/VariableName":xe.definition(xe.className),PropertyName:xe.propertyName,"CallExpression/MemberExpression/PropertyName":xe.function(xe.propertyName),Comment:xe.lineComment,Number:xe.number,String:xe.string,FormatString:xe.special(xe.string),Escape:xe.escape,UpdateOp:xe.updateOperator,"ArithOp!":xe.arithmeticOperator,BitOp:xe.bitwiseOperator,CompareOp:xe.compareOperator,AssignOp:xe.definitionOperator,Ellipsis:xe.punctuation,At:xe.meta,"( )":xe.paren,"[ ]":xe.squareBracket,"{ }":xe.brace,".":xe.derefOperator,", ;":xe.separator}),Yme={__proto__:null,await:44,or:54,and:56,in:60,not:62,is:64,if:70,else:72,lambda:76,yield:94,from:96,async:102,for:104,None:162,True:164,False:164,del:178,pass:182,break:186,continue:190,return:194,raise:202,import:206,as:208,global:212,nonlocal:214,assert:218,type:223,elif:236,while:240,try:246,except:248,finally:250,with:254,def:258,class:268,match:279,case:285},Kme=tp.deserialize({version:14,states:"##jO`QeOOP$}OSOOO&WQtO'#HUOOQS'#Co'#CoOOQS'#Cp'#CpO'vQdO'#CnO*UQtO'#HTOOQS'#HU'#HUOOQS'#DU'#DUOOQS'#HT'#HTO*rQdO'#D_O+VQdO'#DfO+gQdO'#DjO+zOWO'#DuO,VOWO'#DvO.[QtO'#GuOOQS'#Gu'#GuO'vQdO'#GtO0ZQtO'#GtOOQS'#Eb'#EbO0rQdO'#EcOOQS'#Gs'#GsO0|QdO'#GrOOQV'#Gr'#GrO1XQdO'#FYOOQS'#G^'#G^O1^QdO'#FXOOQV'#IS'#ISOOQV'#Gq'#GqOOQV'#Fq'#FqQ`QeOOO'vQdO'#CqO1lQdO'#C}O1sQdO'#DRO2RQdO'#HYO2cQtO'#EVO'vQdO'#EWOOQS'#EY'#EYOOQS'#E['#E[OOQS'#E^'#E^O2wQdO'#E`O3_QdO'#EdO3rQdO'#EfO3zQtO'#EfO1XQdO'#EiO0rQdO'#ElO1XQdO'#EnO0rQdO'#EtO0rQdO'#EwO4VQdO'#EyO4^QdO'#FOO4iQdO'#EzO0rQdO'#FOO1XQdO'#FQO1XQdO'#FVO4nQdO'#F[P4uOdO'#GpPOOO)CBd)CBdOOQS'#Ce'#CeOOQS'#Cf'#CfOOQS'#Cg'#CgOOQS'#Ch'#ChOOQS'#Ci'#CiOOQS'#Cj'#CjOOQS'#Cl'#ClO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO5TQdO'#DoOOQS,5:Y,5:YO5hQdO'#HdOOQS,5:],5:]O5uQ!fO,5:]O5zQtO,59YO1lQdO,59bO1lQdO,59bO1lQdO,59bO8jQdO,59bO8oQdO,59bO8vQdO,59jO8}QdO'#HTO:TQdO'#HSOOQS'#HS'#HSOOQS'#D['#D[O:lQdO,59aO'vQdO,59aO:zQdO,59aOOQS,59y,59yO;PQdO,5:RO'vQdO,5:ROOQS,5:Q,5:QO;_QdO,5:QO;dQdO,5:XO'vQdO,5:XO'vQdO,5:VOOQS,5:U,5:UO;uQdO,5:UO;zQdO,5:WOOOW'#Fy'#FyOOOOQS'#Ds'#DsOOQS1G/w1G/wOOQS1G.|1G.|O!/[QtO1G.|O!/cQtO1G.|O1lQdO1G.|O!0OQdO1G/UOOQS'#DZ'#DZO0rQdO,59tOOQS1G.{1G.{O!0VQdO1G/eO!0gQdO1G/eO!0oQdO1G/fO'vQdO'#H[O!0tQdO'#H[O!0yQtO1G.{O!1ZQdO,59iO!2aQdO,5=zO!2qQdO,5=zO!2yQdO1G/mO!3OQtO1G/mOOQS1G/l1G/lO!3`QdO,5=uO!4VQdO,5=uO0rQdO1G/qO!4tQdO1G/sO!4yQtO1G/sO!5ZQtO1G/qOOQS1G/p1G/pOOQS1G/r1G/rOOOW-E9w-E9wOOQS1G/{1G/{O!5kQdO'#HxO0rQdO'#HxO!5|QdO,5>cOOOW-E9x-E9xOOQS1G/|1G/|OOQS-E9{-E9{O!6[Q#xO1G2zO!6{QtO1G2zO'vQdO,5kOOQS1G1`1G1`O!8RQdO1G1`OOQS'#DV'#DVO0rQdO,5=qOOQS,5=q,5=qO!8WQdO'#FrO!8cQdO,59oO!8kQdO1G/XO!8uQtO,5=uOOQS1G3`1G3`OOQS,5:m,5:mO!9fQdO'#GtOOQS,5jO!;ZQdO,5>jO1XQdO,5>jO!;lQdO,5>iOOQS-E:R-E:RO!;qQdO1G0lO!;|QdO1G0lO!lO!lO!hO!=VQdO,5>hO!=hQdO'#EpO0rQdO1G0tO!=sQdO1G0tO!=xQgO1G0zO!AvQgO1G0}O!EqQdO,5>oO!E{QdO,5>oO!FTQtO,5>oO0rQdO1G1PO!F_QdO1G1PO4iQdO1G1UO!!vQdO1G1WOOQV,5;a,5;aO!FdQfO,5;aO!FiQgO1G1QO!JjQdO'#GZO4iQdO1G1QO4iQdO1G1QO!JzQdO,5>pO!KXQdO,5>pO1XQdO,5>pOOQV1G1U1G1UO!KaQdO'#FSO!KrQ!fO1G1WO!KzQdO1G1WOOQV1G1]1G1]O4iQdO1G1]O!LPQdO1G1]O!LXQdO'#F^OOQV1G1b1G1bO!#ZQtO1G1bPOOO1G2v1G2vP!L^OSO1G2vOOQS,5=},5=}OOQS'#Dp'#DpO0rQdO,5=}O!LfQdO,5=|O!LyQdO,5=|OOQS1G/u1G/uO!MRQdO,5>PO!McQdO,5>PO!MkQdO,5>PO!NOQdO,5>PO!N`QdO,5>POOQS1G3j1G3jOOQS7+$h7+$hO!8kQdO7+$pO#!RQdO1G.|O#!YQdO1G.|OOQS1G/`1G/`OOQS,5<`,5<`O'vQdO,5<`OOQS7+%P7+%PO#!aQdO7+%POOQS-E9r-E9rOOQS7+%Q7+%QO#!qQdO,5=vO'vQdO,5=vOOQS7+$g7+$gO#!vQdO7+%PO##OQdO7+%QO##TQdO1G3fOOQS7+%X7+%XO##eQdO1G3fO##mQdO7+%XOOQS,5<_,5<_O'vQdO,5<_O##rQdO1G3aOOQS-E9q-E9qO#$iQdO7+%]OOQS7+%_7+%_O#$wQdO1G3aO#%fQdO7+%_O#%kQdO1G3gO#%{QdO1G3gO#&TQdO7+%]O#&YQdO,5>dO#&sQdO,5>dO#&sQdO,5>dOOQS'#Dx'#DxO#'UO&jO'#DzO#'aO`O'#HyOOOW1G3}1G3}O#'fQdO1G3}O#'nQdO1G3}O#'yQ#xO7+(fO#(jQtO1G2UP#)TQdO'#GOOOQS,5nQdO,5sQdO1G4OOOQS-E9y-E9yO#?^QdO1G4OO<[QdO'#H{OOOO'#D{'#D{OOOO'#F|'#F|O#?oO&jO,5:fOOOW,5>e,5>eOOOW7+)i7+)iO#?zQdO7+)iO#@SQdO1G2zO#@mQdO1G2zP'vQdO'#FuO0rQdO<mO#BQQdO,5>mOOQS1G0v1G0vOOQS<rO#KgQdO,5>rO#KrQdO,5>rO#K}QdO,5>qO#L`QdO,5>qOOQS1G1Y1G1YOOQS,5;p,5;pOOQV<VAN>VO$ oQdO<cAN>cO0rQdO1G1|O$!PQtO1G1|P$!ZQdO'#FvOOQS1G2R1G2RP$!hQdO'#F{O$!uQdO7+)jO$#`QdO,5>gOOOO-E9z-E9zOOOW<tO$4{QdO,5>tO1XQdO,5vO$)nQdO,5>vOOQS1G1p1G1pOOQS,5<[,5<[OOQU7+'P7+'PO$+zQdO1G/iO$)nQdO,5wO$8zQdO,5>wOOQS1G1s1G1sOOQS7+'S7+'SP$)nQdO'#GdO$9SQdO1G4bO$9^QdO1G4bO$9fQdO1G4bOOQS7+%T7+%TO$9tQdO1G1tO$:SQtO'#FaO$:ZQdO,5<}OOQS,5<},5<}O$:iQdO1G4cOOQS-E:a-E:aO$)nQdO,5<|O$:pQdO,5<|O$:uQdO7+)|OOQS-E:`-E:`O$;PQdO7+)|O$)nQdO,5S~O%cOS%^OSSOS%]PQ~OPdOVaOfoOhYOopOs!POvqO!PrO!Q{O!T!SO!U!RO!XZO!][O!h`O!r`O!s`O!t`O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#l!QO#o!TO#s!UO#u!VO#z!WO#}hO$P!XO%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~O%]!YO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%j![O%k!]O%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aO~Ok%xXl%xXm%xXn%xXo%xXp%xXs%xXz%xX{%xX!x%xX#g%xX%[%xX%_%xX%z%xXg%xX!T%xX!U%xX%{%xX!W%xX![%xX!Q%xX#[%xXt%xX!m%xX~P%SOfoOhYO!XZO!][O!h`O!r`O!s`O!t`O%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~Oz%wX{%wX#g%wX%[%wX%_%wX%z%wX~Ok!pOl!qOm!oOn!oOo!rOp!sOs!tO!x%wX~P)pOV!zOg!|Oo0cOv0qO!PrO~P'vOV#OOo0cOv0qO!W#PO~P'vOV#SOa#TOo0cOv0qO![#UO~P'vOQ#XO%`#XO%a#ZO~OQ#^OR#[O%`#^O%a#`O~OV%iX_%iXa%iXh%iXk%iXl%iXm%iXn%iXo%iXp%iXs%iXz%iX!X%iX!f%iX%j%iX%k%iX%l%iX%m%iX%n%iX%o%iX%p%iX%q%iX%r%iX%s%iXg%iX!T%iX!U%iX~O&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O{%iX!x%iX#g%iX%[%iX%_%iX%z%iX%{%iX!W%iX![%iX!Q%iX#[%iXt%iX!m%iX~P,eOz#dO{%hX!x%hX#g%hX%[%hX%_%hX%z%hX~Oo0cOv0qO~P'vO#g#gO%[#iO%_#iO~O%uWO~O!T#nO#u!VO#z!WO#}hO~OopO~P'vOV#sOa#tO%uWO{wP~OV#xOo0cOv0qO!Q#yO~P'vO{#{O!x$QO%z#|O#g!yX%[!yX%_!yX~OV#xOo0cOv0qO#g#SX%[#SX%_#SX~P'vOo0cOv0qO#g#WX%[#WX%_#WX~P'vOh$WO%uWO~O!f$YO!r$YO%uWO~OV$eO~P'vO!U$gO#s$hO#u$iO~O{$jO~OV$qO~P'vOS$sO%[$rO%_$rO%c$tO~OV$}Oa$}Og%POo0cOv0qO~P'vOo0cOv0qO{%SO~P'vO&Y%UO~Oa!bOh!iO!X!kO!f!mOVba_bakbalbambanbaobapbasbazba{ba!xba#gba%[ba%_ba%jba%kba%lba%mba%nba%oba%pba%qba%rba%sba%zbagba!Tba!Uba%{ba!Wba![ba!Qba#[batba!mba~On%ZO~Oo%ZO~P'vOo0cO~P'vOk0eOl0fOm0dOn0dOo0mOp0nOs0rOg%wX!T%wX!U%wX%{%wX!W%wX![%wX!Q%wX#[%wX!m%wX~P)pO%{%]Og%vXz%vX!T%vX!U%vX!W%vX{%vX~Og%_Oz%`O!T%dO!U%cO~Og%_O~Oz%gO!T%dO!U%cO!W&SX~O!W%kO~Oz%lO{%nO!T%dO!U%cO![%}X~O![%rO~O![%sO~OQ#XO%`#XO%a%uO~OV%wOo0cOv0qO!PrO~P'vOQ#^OR#[O%`#^O%a%zO~OV!qa_!qaa!qah!qak!qal!qam!qan!qao!qap!qas!qaz!qa{!qa!X!qa!f!qa!x!qa#g!qa%[!qa%_!qa%j!qa%k!qa%l!qa%m!qa%n!qa%o!qa%p!qa%q!qa%r!qa%s!qa%z!qag!qa!T!qa!U!qa%{!qa!W!qa![!qa!Q!qa#[!qat!qa!m!qa~P#yOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P%SOV&OOopOvqO{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P'vOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#g$zX%[$zX%_$zX~P'vO#g#gO%[&TO%_&TO~O!f&UOh&sX%[&sXz&sX#[&sX#g&sX%_&sX#Z&sXg&sX~Oh!iO%[&WO~Okealeameaneaoeapeaseazea{ea!xea#gea%[ea%_ea%zeagea!Tea!Uea%{ea!Wea![ea!Qea#[eatea!mea~P%SOsqazqa{qa#gqa%[qa%_qa%zqa~Ok!pOl!qOm!oOn!oOo!rOp!sO!xqa~PEcO%z&YOz%yX{%yX~O%uWOz%yX{%yX~Oz&]O{wX~O{&_O~Oz%lO#g%}X%[%}X%_%}Xg%}X{%}X![%}X!m%}X%z%}X~OV0lOo0cOv0qO!PrO~P'vO%z#|O#gUa%[Ua%_Ua~Oz&hO#g&PX%[&PX%_&PXn&PX~P%SOz&kO!Q&jO#g#Wa%[#Wa%_#Wa~Oz&lO#[&nO#g&rX%[&rX%_&rXg&rX~O!f$YO!r$YO#Z&qO%uWO~O#Z&qO~Oz&sO#g&tX%[&tX%_&tX~Oz&uO#g&pX%[&pX%_&pX{&pX~O!X&wO%z&xO~Oz&|On&wX~P%SOn'PO~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO%['UO~P'vOt'YO#p'WO#q'XOP#naV#naf#nah#nao#nas#nav#na!P#na!Q#na!T#na!U#na!X#na!]#na!h#na!r#na!s#na!t#na!{#na!}#na#P#na#R#na#T#na#X#na#Z#na#^#na#_#na#a#na#c#na#l#na#o#na#s#na#u#na#z#na#}#na$P#na%X#na%o#na%p#na%t#na%u#na&Z#na&[#na&]#na&^#na&_#na&`#na&a#na&b#na&c#na&d#na&e#na&f#na&g#na&h#na&i#na&j#na%Z#na%_#na~Oz'ZO#[']O{&xX~Oh'_O!X&wO~Oh!iO{$jO!X&wO~O{'eO~P%SO%['hO%_'hO~OS'iO%['hO%_'hO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%k!]O~P!#uO%kWi~P!#uOV!aO_!aOa!bOh!iO!X!kO!f!mO%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%m!_O%n!_O~P!&pO%mWi%nWi~P!&pOa!bOh!iO!X!kO!f!mOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%mWi%nWi%oWi%pWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~OV!aO_!aO%q!aO%r!aO%s!aO~P!)nOVWi_Wi%qWi%rWi%sWi~P!)nO!T%dO!U%cOg&VXz&VX~O%z'kO%{'kO~P,eOz'mOg&UX~Og'oO~Oz'pO{'rO!W&XX~Oo0cOv0qOz'pO{'sO!W&XX~P'vO!W'uO~Om!oOn!oOo!rOp!sOkjisjizji{ji!xji#gji%[ji%_ji%zji~Ol!qO~P!.aOlji~P!.aOk0eOl0fOm0dOn0dOo0mOp0nO~Ot'wO~P!/jOV'|Og'}Oo0cOv0qO~P'vOg'}Oz(OO~Og(QO~O!U(SO~Og(TOz(OO!T%dO!U%cO~P%SOk0eOl0fOm0dOn0dOo0mOp0nOgqa!Tqa!Uqa%{qa!Wqa![qa!Qqa#[qatqa!mqa~PEcOV'|Oo0cOv0qO!W&Sa~P'vOz(WO!W&Sa~O!W(XO~Oz(WO!T%dO!U%cO!W&Sa~P%SOV(]Oo0cOv0qO![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~P'vOz(^O![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~O![(aO~Oz(^O!T%dO!U%cO![%}a~P%SOz(dO!T%dO!U%cO![&Ta~P%SOz(gO{&lX![&lX!m&lX%z&lX~O{(kO![(mO!m(nO%z(jO~OV&OOopOvqO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~P'vOz(pO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~O!f&UOh&sa%[&saz&sa#[&sa#g&sa%_&sa#Z&sag&sa~O%[(uO~OV#sOa#tO%uWO~Oz&]O{wa~OopOvqO~P'vOz(^O#g%}a%[%}a%_%}ag%}a{%}a![%}a!m%}a%z%}a~P%SOz(zO#g%hX%[%hX%_%hX%z%hX~O%z#|O#gUi%[Ui%_Ui~O#g&Pa%[&Pa%_&Pan&Pa~P'vOz(}O#g&Pa%[&Pa%_&Pan&Pa~O%uWO#g&ra%[&ra%_&rag&ra~Oz)SO#g&ra%[&ra%_&rag&ra~Og)VO~OV)WOh$WO%uWO~O#Z)XO~O%uWO#g&ta%[&ta%_&ta~Oz)ZO#g&ta%[&ta%_&ta~Oo0cOv0qO#g&pa%[&pa%_&pa{&pa~P'vOz)^O#g&pa%[&pa%_&pa{&pa~OV)`Oa)`O%uWO~O%z)eO~Ot)hO#j)gOP#hiV#hif#hih#hio#his#hiv#hi!P#hi!Q#hi!T#hi!U#hi!X#hi!]#hi!h#hi!r#hi!s#hi!t#hi!{#hi!}#hi#P#hi#R#hi#T#hi#X#hi#Z#hi#^#hi#_#hi#a#hi#c#hi#l#hi#o#hi#s#hi#u#hi#z#hi#}#hi$P#hi%X#hi%o#hi%p#hi%t#hi%u#hi&Z#hi&[#hi&]#hi&^#hi&_#hi&`#hi&a#hi&b#hi&c#hi&d#hi&e#hi&f#hi&g#hi&h#hi&i#hi&j#hi%Z#hi%_#hi~Ot)iOP#kiV#kif#kih#kio#kis#kiv#ki!P#ki!Q#ki!T#ki!U#ki!X#ki!]#ki!h#ki!r#ki!s#ki!t#ki!{#ki!}#ki#P#ki#R#ki#T#ki#X#ki#Z#ki#^#ki#_#ki#a#ki#c#ki#l#ki#o#ki#s#ki#u#ki#z#ki#}#ki$P#ki%X#ki%o#ki%p#ki%t#ki%u#ki&Z#ki&[#ki&]#ki&^#ki&_#ki&`#ki&a#ki&b#ki&c#ki&d#ki&e#ki&f#ki&g#ki&h#ki&i#ki&j#ki%Z#ki%_#ki~OV)kOn&wa~P'vOz)lOn&wa~Oz)lOn&wa~P%SOn)pO~O%Y)tO~Ot)wO#p'WO#q)vOP#niV#nif#nih#nio#nis#niv#ni!P#ni!Q#ni!T#ni!U#ni!X#ni!]#ni!h#ni!r#ni!s#ni!t#ni!{#ni!}#ni#P#ni#R#ni#T#ni#X#ni#Z#ni#^#ni#_#ni#a#ni#c#ni#l#ni#o#ni#s#ni#u#ni#z#ni#}#ni$P#ni%X#ni%o#ni%p#ni%t#ni%u#ni&Z#ni&[#ni&]#ni&^#ni&_#ni&`#ni&a#ni&b#ni&c#ni&d#ni&e#ni&f#ni&g#ni&h#ni&i#ni&j#ni%Z#ni%_#ni~OV)zOo0cOv0qO{$jO~P'vOo0cOv0qO{&xa~P'vOz*OO{&xa~OV*SOa*TOg*WO%q*UO%uWO~O{$jO&{*YO~Oh'_O~Oh!iO{$jO~O%[*_O~O%[*aO%_*aO~OV$}Oa$}Oo0cOv0qOg&Ua~P'vOz*dOg&Ua~Oo0cOv0qO{*gO!W&Xa~P'vOz*hO!W&Xa~Oo0cOv0qOz*hO{*kO!W&Xa~P'vOo0cOv0qOz*hO!W&Xa~P'vOz*hO{*kO!W&Xa~Om0dOn0dOo0mOp0nOgjikjisjizji!Tji!Uji%{ji!Wji{ji![ji#gji%[ji%_ji!Qji#[jitji!mji%zji~Ol0fO~P!NkOlji~P!NkOV'|Og*pOo0cOv0qO~P'vOn*rO~Og*pOz*tO~Og*uO~OV'|Oo0cOv0qO!W&Si~P'vOz*vO!W&Si~O!W*wO~OV(]Oo0cOv0qO![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~P'vOz*zO!T%dO!U%cO![&Ti~Oz*}O![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~O![+OO~Oa+QOo0cOv0qO![&Ti~P'vOz*zO![&Ti~O![+SO~OV+UOo0cOv0qO{&la![&la!m&la%z&la~P'vOz+VO{&la![&la!m&la%z&la~O!]+YO&n+[O![!nX~O![+^O~O{(kO![+_O~O{(kO![+_O!m+`O~OV&OOopOvqO{%hq!x%hq#g%hq%[%hq%_%hq%z%hq~P'vOz$ri{$ri!x$ri#g$ri%[$ri%_$ri%z$ri~P%SOV&OOopOvqO~P'vOV&OOo0cOv0qO#g%ha%[%ha%_%ha%z%ha~P'vOz+aO#g%ha%[%ha%_%ha%z%ha~Oz$ia#g$ia%[$ia%_$ian$ia~P%SO#g&Pi%[&Pi%_&Pin&Pi~P'vOz+dO#g#Wq%[#Wq%_#Wq~O#[+eOz$va#g$va%[$va%_$vag$va~O%uWO#g&ri%[&ri%_&rig&ri~Oz+gO#g&ri%[&ri%_&rig&ri~OV+iOh$WO%uWO~O%uWO#g&ti%[&ti%_&ti~Oo0cOv0qO#g&pi%[&pi%_&pi{&pi~P'vO{#{Oz#eX!W#eX~Oz+mO!W&uX~O!W+oO~Ot+rO#j)gOP#hqV#hqf#hqh#hqo#hqs#hqv#hq!P#hq!Q#hq!T#hq!U#hq!X#hq!]#hq!h#hq!r#hq!s#hq!t#hq!{#hq!}#hq#P#hq#R#hq#T#hq#X#hq#Z#hq#^#hq#_#hq#a#hq#c#hq#l#hq#o#hq#s#hq#u#hq#z#hq#}#hq$P#hq%X#hq%o#hq%p#hq%t#hq%u#hq&Z#hq&[#hq&]#hq&^#hq&_#hq&`#hq&a#hq&b#hq&c#hq&d#hq&e#hq&f#hq&g#hq&h#hq&i#hq&j#hq%Z#hq%_#hq~On$|az$|a~P%SOV)kOn&wi~P'vOz+yOn&wi~Oz,TO{$jO#[,TO~O#q,VOP#nqV#nqf#nqh#nqo#nqs#nqv#nq!P#nq!Q#nq!T#nq!U#nq!X#nq!]#nq!h#nq!r#nq!s#nq!t#nq!{#nq!}#nq#P#nq#R#nq#T#nq#X#nq#Z#nq#^#nq#_#nq#a#nq#c#nq#l#nq#o#nq#s#nq#u#nq#z#nq#}#nq$P#nq%X#nq%o#nq%p#nq%t#nq%u#nq&Z#nq&[#nq&]#nq&^#nq&_#nq&`#nq&a#nq&b#nq&c#nq&d#nq&e#nq&f#nq&g#nq&h#nq&i#nq&j#nq%Z#nq%_#nq~O#[,WOz%Oa{%Oa~Oo0cOv0qO{&xi~P'vOz,YO{&xi~O{#{O%z,[Og&zXz&zX~O%uWOg&zXz&zX~Oz,`Og&yX~Og,bO~O%Y,eO~O!T%dO!U%cOg&Viz&Vi~OV$}Oa$}Oo0cOv0qOg&Ui~P'vO{,hOz$la!W$la~Oo0cOv0qO{,iOz$la!W$la~P'vOo0cOv0qO{*gO!W&Xi~P'vOz,lO!W&Xi~Oo0cOv0qOz,lO!W&Xi~P'vOz,lO{,oO!W&Xi~Og$hiz$hi!W$hi~P%SOV'|Oo0cOv0qO~P'vOn,qO~OV'|Og,rOo0cOv0qO~P'vOV'|Oo0cOv0qO!W&Sq~P'vOz$gi![$gi#g$gi%[$gi%_$gig$gi{$gi!m$gi%z$gi~P%SOV(]Oo0cOv0qO~P'vOa+QOo0cOv0qO![&Tq~P'vOz,sO![&Tq~O![,tO~OV(]Oo0cOv0qO![%}q#g%}q%[%}q%_%}qg%}q{%}q!m%}q%z%}q~P'vO{,uO~OV+UOo0cOv0qO{&li![&li!m&li%z&li~P'vOz,zO{&li![&li!m&li%z&li~O!]+YO&n+[O![!na~O{(kO![,}O~OV&OOo0cOv0qO#g%hi%[%hi%_%hi%z%hi~P'vOz-OO#g%hi%[%hi%_%hi%z%hi~O%uWO#g&rq%[&rq%_&rqg&rq~Oz-RO#g&rq%[&rq%_&rqg&rq~OV)`Oa)`O%uWO!W&ua~Oz-TO!W&ua~On$|iz$|i~P%SOV)kO~P'vOV)kOn&wq~P'vOt-XOP#myV#myf#myh#myo#mys#myv#my!P#my!Q#my!T#my!U#my!X#my!]#my!h#my!r#my!s#my!t#my!{#my!}#my#P#my#R#my#T#my#X#my#Z#my#^#my#_#my#a#my#c#my#l#my#o#my#s#my#u#my#z#my#}#my$P#my%X#my%o#my%p#my%t#my%u#my&Z#my&[#my&]#my&^#my&_#my&`#my&a#my&b#my&c#my&d#my&e#my&f#my&g#my&h#my&i#my&j#my%Z#my%_#my~O%Z-]O%_-]O~P`O#q-^OP#nyV#nyf#nyh#nyo#nys#nyv#ny!P#ny!Q#ny!T#ny!U#ny!X#ny!]#ny!h#ny!r#ny!s#ny!t#ny!{#ny!}#ny#P#ny#R#ny#T#ny#X#ny#Z#ny#^#ny#_#ny#a#ny#c#ny#l#ny#o#ny#s#ny#u#ny#z#ny#}#ny$P#ny%X#ny%o#ny%p#ny%t#ny%u#ny&Z#ny&[#ny&]#ny&^#ny&_#ny&`#ny&a#ny&b#ny&c#ny&d#ny&e#ny&f#ny&g#ny&h#ny&i#ny&j#ny%Z#ny%_#ny~Oz-aO{$jO#[-aO~Oo0cOv0qO{&xq~P'vOz-dO{&xq~O%z,[Og&zaz&za~O{#{Og&zaz&za~OV*SOa*TO%q*UO%uWOg&ya~Oz-hOg&ya~O$S-lO~OV$}Oa$}Oo0cOv0qO~P'vOo0cOv0qO{-mOz$li!W$li~P'vOo0cOv0qOz$li!W$li~P'vO{-mOz$li!W$li~Oo0cOv0qO{*gO~P'vOo0cOv0qO{*gO!W&Xq~P'vOz-pO!W&Xq~Oo0cOv0qOz-pO!W&Xq~P'vOs-sO!T%dO!U%cOg&Oq!W&Oq![&Oqz&Oq~P!/jOa+QOo0cOv0qO![&Ty~P'vOz$ji![$ji~P%SOa+QOo0cOv0qO~P'vOV+UOo0cOv0qO~P'vOV+UOo0cOv0qO{&lq![&lq!m&lq%z&lq~P'vO{(kO![-xO!m-yO%z-wO~OV&OOo0cOv0qO#g%hq%[%hq%_%hq%z%hq~P'vO%uWO#g&ry%[&ry%_&ryg&ry~OV)`Oa)`O%uWO!W&ui~Ot-}OP#m!RV#m!Rf#m!Rh#m!Ro#m!Rs#m!Rv#m!R!P#m!R!Q#m!R!T#m!R!U#m!R!X#m!R!]#m!R!h#m!R!r#m!R!s#m!R!t#m!R!{#m!R!}#m!R#P#m!R#R#m!R#T#m!R#X#m!R#Z#m!R#^#m!R#_#m!R#a#m!R#c#m!R#l#m!R#o#m!R#s#m!R#u#m!R#z#m!R#}#m!R$P#m!R%X#m!R%o#m!R%p#m!R%t#m!R%u#m!R&Z#m!R&[#m!R&]#m!R&^#m!R&_#m!R&`#m!R&a#m!R&b#m!R&c#m!R&d#m!R&e#m!R&f#m!R&g#m!R&h#m!R&i#m!R&j#m!R%Z#m!R%_#m!R~Oo0cOv0qO{&xy~P'vOV*SOa*TO%q*UO%uWOg&yi~O$S-lO%Z.VO%_.VO~OV.aOh._O!X.^O!].`O!h.YO!s.[O!t.[O%p.XO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O~Oo0cOv0qOz$lq!W$lq~P'vO{.fOz$lq!W$lq~Oo0cOv0qO{*gO!W&Xy~P'vOz.gO!W&Xy~Oo0cOv.kO~P'vOs-sO!T%dO!U%cOg&Oy!W&Oy![&Oyz&Oy~P!/jO{(kO![.nO~O{(kO![.nO!m.oO~OV*SOa*TO%q*UO%uWO~Oh.tO!f.rOz$TX#[$TX%j$TXg$TX~Os$TX{$TX!W$TX![$TX~P$-bO%o.vO%p.vOs$UXz$UX{$UX#[$UX%j$UX!W$UXg$UX![$UX~O!h.xO~Oz.|O#[/OO%j.yOs&|X{&|X!W&|Xg&|X~Oa/RO~P$)zOh.tOs&}Xz&}X{&}X#[&}X%j&}X!W&}Xg&}X![&}X~Os/VO{$jO~Oo0cOv0qOz$ly!W$ly~P'vOo0cOv0qO{*gO!W&X!R~P'vOz/ZO!W&X!R~Og&RXs&RX!T&RX!U&RX!W&RX![&RXz&RX~P!/jOs-sO!T%dO!U%cOg&Qa!W&Qa![&Qaz&Qa~O{(kO![/^O~O!f.rOh$[as$[az$[a{$[a#[$[a%j$[a!W$[ag$[a![$[a~O!h/eO~O%o.vO%p.vOs$Uaz$Ua{$Ua#[$Ua%j$Ua!W$Uag$Ua![$Ua~O%j.yOs$Yaz$Ya{$Ya#[$Ya!W$Yag$Ya![$Ya~Os&|a{&|a!W&|ag&|a~P$)nOz/jOs&|a{&|a!W&|ag&|a~O!W/mO~Og/mO~O{/oO~O![/pO~Oo0cOv0qO{*gO!W&X!Z~P'vO{/sO~O%z/tO~P$-bOz/uO#[/OO%j.yOg'PX~Oz/uOg'PX~Og/wO~O!h/xO~O#[/OOs%Saz%Sa{%Sa%j%Sa!W%Sag%Sa![%Sa~O#[/OO%j.yOs%Waz%Wa{%Wa!W%Wag%Wa~Os&|i{&|i!W&|ig&|i~P$)nOz/zO#[/OO%j.yO!['Oa~Og'Pa~P$)nOz0SOg'Pa~Oa0UO!['Oi~P$)zOz0WO!['Oi~Oz0WO#[/OO%j.yO!['Oi~O#[/OO%j.yOg$biz$bi~O%z0ZO~P$-bO#[/OO%j.yOg%Vaz%Va~Og'Pi~P$)nO{0^O~Oa0UO!['Oq~P$)zOz0`O!['Oq~O#[/OO%j.yOz%Ui![%Ui~Oa0UO~P$)zOa0UO!['Oy~P$)zO#[/OO%j.yOg$ciz$ci~O#[/OO%j.yOz%Uq![%Uq~Oz+aO#g%ha%[%ha%_%ha%z%ha~P%SOV&OOo0cOv0qO~P'vOn0hO~Oo0hO~P'vO{0iO~Ot0jO~P!/jO&]&Z&j&h&i&g&f&d&e&c&b&`&a&_&^&[%u~",goto:"!=j'QPPPPPP'RP'Z*s+[+t,_,y-fP.SP'Z.r.r'ZPPP'Z2[PPPPPP2[5PPP5PP7b7k=sPP=v>h>kPP'Z'ZPP>zPP'Z'ZPP'Z'Z'Z'Z'Z?O?w'ZP?zP@QDXGuGyPG|HWH['ZPPPH_Hk'RP'R'RP'RP'RP'RP'RP'R'R'RP'RPP'RPP'RP'RPHqH}IVPI^IdPI^PI^I^PPPI^PKrPK{LVL]KrPI^LfPI^PLmLsPLwM]MzNeLwLwNkNxLwLwLwLw! ^! d! g! l! o! y!!P!!]!!o!!u!#P!#V!#s!#y!$P!$Z!$a!$g!$y!%T!%Z!%a!%k!%q!%w!%}!&T!&Z!&e!&k!&u!&{!'U!'[!'k!'s!'}!(UPPPPPPPPPPP!([!(_!(e!(n!(x!)TPPPPPPPPPPPP!-u!/Z!3^!6oPP!6w!7W!7a!8Y!8P!8c!8i!8l!8o!8r!8z!9jPPPPPPPPPPPPPPPPP!9m!9q!9wP!:]!:a!:m!:v!;S!;j!;m!;p!;v!;|!_![!]Do!]!^Es!^!_FZ!_!`Gk!`!aHX!a!b%T!b!cIf!c!dJU!d!eK^!e!hJU!h!i!#f!i!tJU!t!u!,|!u!wJU!w!x!.t!x!}JU!}#O!0S#O#P&o#P#Q!0j#Q#R!1Q#R#SJU#S#T%T#T#UJU#U#VK^#V#YJU#Y#Z!#f#Z#fJU#f#g!,|#g#iJU#i#j!.t#j#oJU#o#p!1n#p#q!1s#q#r!2a#r#s!2f#s$g%T$g;'SJU;'S;=`KW<%lOJU`%YT&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T`%lP;=`<%l%To%v]&n`%c_OX%TXY%oY[%T[]%o]p%Tpq%oq#O%T#O#P&o#P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To&tX&n`OY%TYZ%oZ]%T]^%o^#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc'f[&n`O!_%T!_!`([!`#T%T#T#U(r#U#f%T#f#g(r#g#h(r#h#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(cTmR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(yT!mR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk)aV&n`&[ZOr%Trs)vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk){V&n`Or%Trs*bs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk*iT&n`&^ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To+PZS_&n`OY*xYZ%TZ]*x]^%T^#o*x#o#p+r#p#q*x#q#r+r#r;'S*x;'S;=`,^<%lO*x_+wTS_OY+rZ]+r^;'S+r;'S;=`,W<%lO+r_,ZP;=`<%l+ro,aP;=`<%l*xj,kV%rQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-XT!xY&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-oV%lQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.]V&n`&ZZOw%Twx.rx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.wV&n`Ow%Twx/^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/eT&n`&]ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/{ThZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc0cTgR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk0yXVZ&n`Oz%Tz{1f{!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk1mVaR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk2ZV%oZ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc2wTzR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To3_W%pZ&n`O!_%T!_!`-Q!`!a3w!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Td4OT&{S&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk4fX!fQ&n`O!O%T!O!P5R!P!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5WV&n`O!O%T!O!P5m!P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5tT!rZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti6[a!hX&n`O!Q%T!Q![6T![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S6T#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti7fZ&n`O{%T{|8X|}%T}!O8X!O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8^V&n`O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8z]!hX&n`O!Q%T!Q![8s![!l%T!l!m9s!m#R%T#R#S8s#S#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti9zT!hX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk:bX%qR&n`O!P%T!P!Q:}!Q!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj;UV%sQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti;ro!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!d%T!d!e?q!e!g%T!g!h7a!h!l%T!l!m9s!m!q%T!q!rA]!r!z%T!z!{Bq!{#R%T#R#S>_#S#U%T#U#V?q#V#X%T#X#Y7a#Y#^%T#^#_9s#_#c%T#c#dA]#d#l%T#l#mBq#m#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti=xV&n`O!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti>fc!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S>_#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti?vY&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti@mY!hX&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiAbX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBUX!hX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBv]&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiCv]!hX&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToDvV{_&n`O!_%T!_!`E]!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TcEdT%{R&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkEzT#gZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkFbXmR&n`O!^%T!^!_F}!_!`([!`!a([!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjGUV%mQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkGrV%zZ&n`O!_%T!_!`([!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkH`WmR&n`O!_%T!_!`([!`!aHx!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjIPV%nQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkIoV_Q#}P&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToJ_]&n`&YS%uZO!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoKZP;=`<%lJUoKge&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!tJU!t!uLx!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#gLx#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoMRa&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUkN_V&n`&`ZOr%TrsNts#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkNyV&n`Or%Trs! `s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! gT&n`&bZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! }V&n`&_ZOw%Twx!!dx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!!iV&n`Ow%Twx!#Ox#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!#VT&n`&aZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!#oe&n`&YS%uZOr%Trs!%Qsw%Twx!&px!Q%T!Q![JU![!c%T!c!tJU!t!u!(`!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#g!(`#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!%XV&n`&dZOr%Trs!%ns#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!%sV&n`Or%Trs!&Ys#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&aT&n`&fZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&wV&n`&cZOw%Twx!'^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!'cV&n`Ow%Twx!'xx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!(PT&n`&eZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!(ia&n`&YS%uZOr%Trs!)nsw%Twx!+^x!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!)uV&n`&hZOr%Trs!*[s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*aV&n`Or%Trs!*vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*}T&n`&jZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!+eV&n`&gZOw%Twx!+zx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,PV&n`Ow%Twx!,fx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,mT&n`&iZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!-Vi&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!dJU!d!eLx!e!hJU!h!i!(`!i!}JU!}#R%T#R#SJU#S#T%T#T#UJU#U#VLx#V#YJU#Y#Z!(`#Z#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUo!.}a&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!0ZT!XZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc!0qT!WR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj!1XV%kQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!1sO!]~k!1zV%jR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!2fO![~i!2mT%tX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T",tokenizers:[Ume,$me,qme,Wme,0,1,2,3,4],topRules:{Script:[0,5]},specialized:[{term:221,get:t=>Yme[t]||-1}],tokenPrec:7668}),cM=new mce,gH=new Set(["Script","Body","FunctionDefinition","ClassDefinition","LambdaExpression","ForStatement","MatchClause"]);function w1(t){return(e,n,r)=>{if(r)return!1;let s=e.node.getChild("VariableName");return s&&n(s,t),!0}}const Zme={FunctionDefinition:w1("function"),ClassDefinition:w1("class"),ForStatement(t,e,n){if(n){for(let r=t.node.firstChild;r;r=r.nextSibling)if(r.name=="VariableName")e(r,"variable");else if(r.name=="in")break}},ImportStatement(t,e){var n,r;let{node:s}=t,i=((n=s.firstChild)===null||n===void 0?void 0:n.name)=="from";for(let a=s.getChild("import");a;a=a.nextSibling)a.name=="VariableName"&&((r=a.nextSibling)===null||r===void 0?void 0:r.name)!="as"&&e(a,i?"variable":"namespace")},AssignStatement(t,e){for(let n=t.node.firstChild;n;n=n.nextSibling)if(n.name=="VariableName")e(n,"variable");else if(n.name==":"||n.name=="AssignOp")break},ParamList(t,e){for(let n=null,r=t.node.firstChild;r;r=r.nextSibling)r.name=="VariableName"&&(!n||!/\*|AssignOp/.test(n.name))&&e(r,"variable"),n=r},CapturePattern:w1("variable"),AsPattern:w1("variable"),__proto__:null};function xH(t,e){let n=cM.get(e);if(n)return n;let r=[],s=!0;function i(a,l){let c=t.sliceString(a.from,a.to);r.push({label:c,type:l})}return e.cursor(ds.IncludeAnonymous).iterate(a=>{if(a.name){let l=Zme[a.name];if(l&&l(a,i,s)||!s&&gH.has(a.name))return!1;s=!1}else if(a.to-a.from>8192){for(let l of xH(t,a.node))r.push(l);return!1}}),cM.set(e,r),r}const uM=/^[\w\xa1-\uffff][\w\d\xa1-\uffff]*$/,vH=["String","FormatString","Comment","PropertyName"];function Jme(t){let e=ws(t.state).resolveInner(t.pos,-1);if(vH.indexOf(e.name)>-1)return null;let n=e.name=="VariableName"||e.to-e.from<20&&uM.test(t.state.sliceDoc(e.from,e.to));if(!n&&!t.explicit)return null;let r=[];for(let s=e;s;s=s.parent)gH.has(s.name)&&(r=r.concat(xH(t.state.doc,s)));return{options:r,from:n?e.from:t.pos,validFor:uM}}const e0e=["__annotations__","__builtins__","__debug__","__doc__","__import__","__name__","__loader__","__package__","__spec__","False","None","True"].map(t=>({label:t,type:"constant"})).concat(["ArithmeticError","AssertionError","AttributeError","BaseException","BlockingIOError","BrokenPipeError","BufferError","BytesWarning","ChildProcessError","ConnectionAbortedError","ConnectionError","ConnectionRefusedError","ConnectionResetError","DeprecationWarning","EOFError","Ellipsis","EncodingWarning","EnvironmentError","Exception","FileExistsError","FileNotFoundError","FloatingPointError","FutureWarning","GeneratorExit","IOError","ImportError","ImportWarning","IndentationError","IndexError","InterruptedError","IsADirectoryError","KeyError","KeyboardInterrupt","LookupError","MemoryError","ModuleNotFoundError","NameError","NotADirectoryError","NotImplemented","NotImplementedError","OSError","OverflowError","PendingDeprecationWarning","PermissionError","ProcessLookupError","RecursionError","ReferenceError","ResourceWarning","RuntimeError","RuntimeWarning","StopAsyncIteration","StopIteration","SyntaxError","SyntaxWarning","SystemError","SystemExit","TabError","TimeoutError","TypeError","UnboundLocalError","UnicodeDecodeError","UnicodeEncodeError","UnicodeError","UnicodeTranslateError","UnicodeWarning","UserWarning","ValueError","Warning","ZeroDivisionError"].map(t=>({label:t,type:"type"}))).concat(["bool","bytearray","bytes","classmethod","complex","float","frozenset","int","list","map","memoryview","object","range","set","staticmethod","str","super","tuple","type"].map(t=>({label:t,type:"class"}))).concat(["abs","aiter","all","anext","any","ascii","bin","breakpoint","callable","chr","compile","delattr","dict","dir","divmod","enumerate","eval","exec","exit","filter","format","getattr","globals","hasattr","hash","help","hex","id","input","isinstance","issubclass","iter","len","license","locals","max","min","next","oct","open","ord","pow","print","property","quit","repr","reversed","round","setattr","slice","sorted","sum","vars","zip"].map(t=>({label:t,type:"function"}))),t0e=[xl("def ${name}(${params}):\n ${}",{label:"def",detail:"function",type:"keyword"}),xl("for ${name} in ${collection}:\n ${}",{label:"for",detail:"loop",type:"keyword"}),xl("while ${}:\n ${}",{label:"while",detail:"loop",type:"keyword"}),xl("try:\n ${}\nexcept ${error}:\n ${}",{label:"try",detail:"/ except block",type:"keyword"}),xl(`if \${}: +`);r>-1&&(n=n.slice(0,r))}return e+n.length<=this.to?n:n.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,n=this.lineAfter(e),r=e+n.length;for(let s=this.rangeIndex;;){let i=this.ranges[s].to;if(i>=r||(n=n.slice(0,i-(r-n.length)),s++,s==this.ranges.length))break;let a=this.ranges[s].from,l=this.lineAfter(a);n+=l,r=a+l.length}return{line:n,end:r}}skipGapsTo(e,n,r){for(;;){let s=this.ranges[this.rangeIndex].to,i=e+n;if(r>0?s>i:s>=i)break;let a=this.ranges[++this.rangeIndex].from;n+=a-s}return n}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(n,s,1),n+=s;let l=this.chunk.length;s=this.skipGapsTo(r,s,-1),r+=s,i+=this.chunk.length-l}let a=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&i==4&&a>=0&&this.chunk[a]==e&&this.chunk[a+2]==n?this.chunk[a+2]=r:this.chunk.push(e,n,r,i),s}parseLine(e){let{line:n,end:r}=this.nextLine(),s=0,{streamParser:i}=this.lang,a=new r$(n,e?e.state.tabSize:4,e?ld(e.state):2);if(a.eol())i.blankLine(this.state,a.indentUnit);else for(;!a.eol();){let l=i$(i.token,a,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+a.start,this.parsedPos+a.pos,s)),a.start>1e4)break}this.parsedPos=r,this.moveRangeIndex(),this.parsedPose.start)return s}throw new Error("Stream parser failed to advance stream.")}const k6=Object.create(null),K0=[si.none],Mue=new hb(K0),S_=[],k_=Object.create(null),a$=Object.create(null);for(let[t,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])a$[t]=l$(k6,e);class o${constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),a$)}resolve(e){return e?this.table[e]||(this.table[e]=l$(this.extra,e)):0}}const Rue=new o$(k6);function Z4(t,e){S_.indexOf(t)>-1||(S_.push(t),console.warn(e))}function l$(t,e){let n=[];for(let l of e.split(" ")){let c=[];for(let d of l.split(".")){let h=t[d]||ve[d];h?typeof h=="function"?c.length?c=c.map(h):Z4(d,`Modifier ${d} used at start of tag`):c.length?Z4(d,`Tag ${d} used as modifier`):c=Array.isArray(h)?h:[h]:Z4(d,`Unknown highlighting tag ${d}`)}for(let d of c)n.push(d)}if(!n.length)return 0;let r=e.replace(/ /g,"_"),s=r+" "+n.map(l=>l.id),i=k_[s];if(i)return i.id;let a=k_[s]=si.define({id:K0.length,name:r,props:[x6({[r]:n})]});return K0.push(a),a.id}function Due(t,e){let n=si.define({id:K0.length,name:"Document",props:[Qu.add(()=>t),mb.add(()=>r=>e.getIndent(r))],top:!0});return K0.push(n),n}gr.RTL,gr.LTR;const Pue=t=>{let{state:e}=t,n=e.doc.lineAt(e.selection.main.from),r=j6(t.state,n.from);return r.line?zue(t):r.block?Lue(t):!1};function O6(t,e){return({state:n,dispatch:r})=>{if(n.readOnly)return!1;let s=t(e,n);return s?(r(n.update(s)),!0):!1}}const zue=O6(que,0),Iue=O6(c$,0),Lue=O6((t,e)=>c$(t,e,Fue(e)),0);function j6(t,e){let n=t.languageDataAt("commentTokens",e,1);return n.length?n[0]:{}}const Hm=50;function Bue(t,{open:e,close:n},r,s){let i=t.sliceDoc(r-Hm,r),a=t.sliceDoc(s,s+Hm),l=/\s*$/.exec(i)[0].length,c=/^\s*/.exec(a)[0].length,d=i.length-l;if(i.slice(d-e.length,d)==e&&a.slice(c,c+n.length)==n)return{open:{pos:r-l,margin:l&&1},close:{pos:s+c,margin:c&&1}};let h,m;s-r<=2*Hm?h=m=t.sliceDoc(r,s):(h=t.sliceDoc(r,r+Hm),m=t.sliceDoc(s-Hm,s));let g=/^\s*/.exec(h)[0].length,x=/\s*$/.exec(m)[0].length,y=m.length-x-n.length;return h.slice(g,g+e.length)==e&&m.slice(y,y+n.length)==n?{open:{pos:r+g+e.length,margin:/\s/.test(h.charAt(g+e.length))?1:0},close:{pos:s-x-n.length,margin:/\s/.test(m.charAt(y-1))?1:0}}:null}function Fue(t){let e=[];for(let n of t.selection.ranges){let r=t.doc.lineAt(n.from),s=n.to<=r.to?r:t.doc.lineAt(n.to);s.from>r.from&&s.from==n.to&&(s=n.to==r.to+1?r:t.doc.lineAt(n.to-1));let i=e.length-1;i>=0&&e[i].to>r.from?e[i].to=s.to:e.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:s.to})}return e}function c$(t,e,n=e.selection.ranges){let r=n.map(i=>j6(e,i.from).block);if(!r.every(i=>i))return null;let s=n.map((i,a)=>Bue(e,r[a],i.from,i.to));if(t!=2&&!s.every(i=>i))return{changes:e.changes(n.map((i,a)=>s[a]?[]:[{from:i.from,insert:r[a].open+" "},{from:i.to,insert:" "+r[a].close}]))};if(t!=1&&s.some(i=>i)){let i=[];for(let a=0,l;as&&(i==a||a>m.from)){s=m.from;let g=/^\s*/.exec(m.text)[0].length,x=g==m.length,y=m.text.slice(g,g+d.length)==d?g:-1;gi.comment<0&&(!i.empty||i.single))){let i=[];for(let{line:l,token:c,indent:d,empty:h,single:m}of r)(m||!h)&&i.push({from:l.from+d,insert:c+" "});let a=e.changes(i);return{changes:a,selection:e.selection.map(a,1)}}else if(t!=1&&r.some(i=>i.comment>=0)){let i=[];for(let{line:a,comment:l,token:c}of r)if(l>=0){let d=a.from+l,h=d+c.length;a.text[h-a.from]==" "&&h++,i.push({from:d,to:h})}return{changes:i}}return null}const oO=qo.define(),$ue=qo.define(),Hue=at.define(),u$=at.define({combine(t){return $o(t,{minDepth:100,newGroupDelay:500,joinToEvent:(e,n)=>n},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,n)=>(r,s)=>e(r,s)||n(r,s)})}}),d$=Os.define({create(){return Co.empty},update(t,e){let n=e.state.facet(u$),r=e.annotation(oO);if(r){let c=yi.fromTransaction(e,r.selection),d=r.side,h=d==0?t.undone:t.done;return c?h=ey(h,h.length,n.minDepth,c):h=m$(h,e.startState.selection),new Co(d==0?r.rest:h,d==0?h:r.rest)}let s=e.annotation($ue);if((s=="full"||s=="before")&&(t=t.isolate()),e.annotation(ns.addToHistory)===!1)return e.changes.empty?t:t.addMapping(e.changes.desc);let i=yi.fromTransaction(e),a=e.annotation(ns.time),l=e.annotation(ns.userEvent);return i?t=t.addChanges(i,a,l,n,e):e.selection&&(t=t.addSelection(e.startState.selection,a,l,n.newGroupDelay)),(s=="full"||s=="after")&&(t=t.isolate()),t},toJSON(t){return{done:t.done.map(e=>e.toJSON()),undone:t.undone.map(e=>e.toJSON())}},fromJSON(t){return new Co(t.done.map(yi.fromJSON),t.undone.map(yi.fromJSON))}});function Que(t={}){return[d$,u$.of(t),Ze.domEventHandlers({beforeinput(e,n){let r=e.inputType=="historyUndo"?h$:e.inputType=="historyRedo"?lO:null;return r?(e.preventDefault(),r(n)):!1}})]}function gb(t,e){return function({state:n,dispatch:r}){if(!e&&n.readOnly)return!1;let s=n.field(d$,!1);if(!s)return!1;let i=s.pop(t,n,e);return i?(r(i),!0):!1}}const h$=gb(0,!1),lO=gb(1,!1),Vue=gb(0,!0),Uue=gb(1,!0);class yi{constructor(e,n,r,s,i){this.changes=e,this.effects=n,this.mapped=r,this.startSelection=s,this.selectionsAfter=i}setSelAfter(e){return new yi(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,n,r;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(n=this.mapped)===null||n===void 0?void 0:n.toJSON(),startSelection:(r=this.startSelection)===null||r===void 0?void 0:r.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(e){return new yi(e.changes&&us.fromJSON(e.changes),[],e.mapped&&Do.fromJSON(e.mapped),e.startSelection&&Me.fromJSON(e.startSelection),e.selectionsAfter.map(Me.fromJSON))}static fromTransaction(e,n){let r=ya;for(let s of e.startState.facet(Hue)){let i=s(e);i.length&&(r=r.concat(i))}return!r.length&&e.changes.empty?null:new yi(e.changes.invert(e.startState.doc),r,void 0,n||e.startState.selection,ya)}static selection(e){return new yi(void 0,ya,void 0,void 0,e)}}function ey(t,e,n,r){let s=e+1>n+20?e-n-1:0,i=t.slice(s,e);return i.push(r),i}function Wue(t,e){let n=[],r=!1;return t.iterChangedRanges((s,i)=>n.push(s,i)),e.iterChangedRanges((s,i,a,l)=>{for(let c=0;c=d&&a<=h&&(r=!0)}}),r}function Gue(t,e){return t.ranges.length==e.ranges.length&&t.ranges.filter((n,r)=>n.empty!=e.ranges[r].empty).length===0}function f$(t,e){return t.length?e.length?t.concat(e):t:e}const ya=[],Xue=200;function m$(t,e){if(t.length){let n=t[t.length-1],r=n.selectionsAfter.slice(Math.max(0,n.selectionsAfter.length-Xue));return r.length&&r[r.length-1].eq(e)?t:(r.push(e),ey(t,t.length-1,1e9,n.setSelAfter(r)))}else return[yi.selection([e])]}function Yue(t){let e=t[t.length-1],n=t.slice();return n[t.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),n}function J4(t,e){if(!t.length)return t;let n=t.length,r=ya;for(;n;){let s=Kue(t[n-1],e,r);if(s.changes&&!s.changes.empty||s.effects.length){let i=t.slice(0,n);return i[n-1]=s,i}else e=s.mapped,n--,r=s.selectionsAfter}return r.length?[yi.selection(r)]:ya}function Kue(t,e,n){let r=f$(t.selectionsAfter.length?t.selectionsAfter.map(l=>l.map(e)):ya,n);if(!t.changes)return yi.selection(r);let s=t.changes.map(e),i=e.mapDesc(t.changes,!0),a=t.mapped?t.mapped.composeDesc(i):i;return new yi(s,Ft.mapEffects(t.effects,e),a,t.startSelection.map(i),r)}const Zue=/^(input\.type|delete)($|\.)/;class Co{constructor(e,n,r=0,s=void 0){this.done=e,this.undone=n,this.prevTime=r,this.prevUserEvent=s}isolate(){return this.prevTime?new Co(this.done,this.undone):this}addChanges(e,n,r,s,i){let a=this.done,l=a[a.length-1];return l&&l.changes&&!l.changes.empty&&e.changes&&(!r||Zue.test(r))&&(!l.selectionsAfter.length&&n-this.prevTime0&&n-this.prevTimen.empty?t.moveByChar(n,e):xb(n,e))}function Us(t){return t.textDirectionAt(t.state.selection.main.head)==gr.LTR}const g$=t=>p$(t,!Us(t)),x$=t=>p$(t,Us(t));function v$(t,e){return no(t,n=>n.empty?t.moveByGroup(n,e):xb(n,e))}const ede=t=>v$(t,!Us(t)),tde=t=>v$(t,Us(t));function nde(t,e,n){if(e.type.prop(n))return!0;let r=e.to-e.from;return r&&(r>2||/[^\s,.;:]/.test(t.sliceDoc(e.from,e.to)))||e.firstChild}function vb(t,e,n){let r=Ss(t).resolveInner(e.head),s=n?sn.closedBy:sn.openedBy;for(let c=e.head;;){let d=n?r.childAfter(c):r.childBefore(c);if(!d)break;nde(t,d,s)?r=d:c=n?d.to:d.from}let i=r.type.prop(s),a,l;return i&&(a=n?No(t,r.from,1):No(t,r.to,-1))&&a.matched?l=n?a.end.to:a.end.from:l=n?r.to:r.from,Me.cursor(l,n?-1:1)}const rde=t=>no(t,e=>vb(t.state,e,!Us(t))),sde=t=>no(t,e=>vb(t.state,e,Us(t)));function y$(t,e){return no(t,n=>{if(!n.empty)return xb(n,e);let r=t.moveVertically(n,e);return r.head!=n.head?r:t.moveToLineBoundary(n,e)})}const b$=t=>y$(t,!1),w$=t=>y$(t,!0);function S$(t){let e=t.scrollDOM.clientHeighta.empty?t.moveVertically(a,e,n.height):xb(a,e));if(s.eq(r.selection))return!1;let i;if(n.selfScroll){let a=t.coordsAtPos(r.selection.main.head),l=t.scrollDOM.getBoundingClientRect(),c=l.top+n.marginTop,d=l.bottom-n.marginBottom;a&&a.top>c&&a.bottomk$(t,!1),cO=t=>k$(t,!0);function lu(t,e,n){let r=t.lineBlockAt(e.head),s=t.moveToLineBoundary(e,n);if(s.head==e.head&&s.head!=(n?r.to:r.from)&&(s=t.moveToLineBoundary(e,n,!1)),!n&&s.head==r.from&&r.length){let i=/^\s*/.exec(t.state.sliceDoc(r.from,Math.min(r.from+100,r.to)))[0].length;i&&e.head!=r.from+i&&(s=Me.cursor(r.from+i))}return s}const ide=t=>no(t,e=>lu(t,e,!0)),ade=t=>no(t,e=>lu(t,e,!1)),ode=t=>no(t,e=>lu(t,e,!Us(t))),lde=t=>no(t,e=>lu(t,e,Us(t))),cde=t=>no(t,e=>Me.cursor(t.lineBlockAt(e.head).from,1)),ude=t=>no(t,e=>Me.cursor(t.lineBlockAt(e.head).to,-1));function dde(t,e,n){let r=!1,s=Cf(t.selection,i=>{let a=No(t,i.head,-1)||No(t,i.head,1)||i.head>0&&No(t,i.head-1,1)||i.headdde(t,e);function Pa(t,e){let n=Cf(t.state.selection,r=>{let s=e(r);return Me.range(r.anchor,s.head,s.goalColumn,s.bidiLevel||void 0)});return n.eq(t.state.selection)?!1:(t.dispatch(to(t.state,n)),!0)}function O$(t,e){return Pa(t,n=>t.moveByChar(n,e))}const j$=t=>O$(t,!Us(t)),N$=t=>O$(t,Us(t));function C$(t,e){return Pa(t,n=>t.moveByGroup(n,e))}const fde=t=>C$(t,!Us(t)),mde=t=>C$(t,Us(t)),pde=t=>Pa(t,e=>vb(t.state,e,!Us(t))),gde=t=>Pa(t,e=>vb(t.state,e,Us(t)));function T$(t,e){return Pa(t,n=>t.moveVertically(n,e))}const E$=t=>T$(t,!1),_$=t=>T$(t,!0);function A$(t,e){return Pa(t,n=>t.moveVertically(n,e,S$(t).height))}const j_=t=>A$(t,!1),N_=t=>A$(t,!0),xde=t=>Pa(t,e=>lu(t,e,!0)),vde=t=>Pa(t,e=>lu(t,e,!1)),yde=t=>Pa(t,e=>lu(t,e,!Us(t))),bde=t=>Pa(t,e=>lu(t,e,Us(t))),wde=t=>Pa(t,e=>Me.cursor(t.lineBlockAt(e.head).from)),Sde=t=>Pa(t,e=>Me.cursor(t.lineBlockAt(e.head).to)),C_=({state:t,dispatch:e})=>(e(to(t,{anchor:0})),!0),T_=({state:t,dispatch:e})=>(e(to(t,{anchor:t.doc.length})),!0),E_=({state:t,dispatch:e})=>(e(to(t,{anchor:t.selection.main.anchor,head:0})),!0),__=({state:t,dispatch:e})=>(e(to(t,{anchor:t.selection.main.anchor,head:t.doc.length})),!0),kde=({state:t,dispatch:e})=>(e(t.update({selection:{anchor:0,head:t.doc.length},userEvent:"select"})),!0),Ode=({state:t,dispatch:e})=>{let n=yb(t).map(({from:r,to:s})=>Me.range(r,Math.min(s+1,t.doc.length)));return e(t.update({selection:Me.create(n),userEvent:"select"})),!0},jde=({state:t,dispatch:e})=>{let n=Cf(t.selection,r=>{let s=Ss(t),i=s.resolveStack(r.from,1);if(r.empty){let a=s.resolveStack(r.from,-1);a.node.from>=i.node.from&&a.node.to<=i.node.to&&(i=a)}for(let a=i;a;a=a.next){let{node:l}=a;if((l.from=r.to||l.to>r.to&&l.from<=r.from)&&a.next)return Me.range(l.to,l.from)}return r});return n.eq(t.selection)?!1:(e(to(t,n)),!0)};function M$(t,e){let{state:n}=t,r=n.selection,s=n.selection.ranges.slice();for(let i of n.selection.ranges){let a=n.doc.lineAt(i.head);if(e?a.to0)for(let l=i;;){let c=t.moveVertically(l,e);if(c.heada.to){s.some(d=>d.head==c.head)||s.push(c);break}else{if(c.head==l.head)break;l=c}}}return s.length==r.ranges.length?!1:(t.dispatch(to(n,Me.create(s,s.length-1))),!0)}const Nde=t=>M$(t,!1),Cde=t=>M$(t,!0),Tde=({state:t,dispatch:e})=>{let n=t.selection,r=null;return n.ranges.length>1?r=Me.create([n.main]):n.main.empty||(r=Me.create([Me.cursor(n.main.head)])),r?(e(to(t,r)),!0):!1};function Yp(t,e){if(t.state.readOnly)return!1;let n="delete.selection",{state:r}=t,s=r.changeByRange(i=>{let{from:a,to:l}=i;if(a==l){let c=e(i);ca&&(n="delete.forward",c=x1(t,c,!0)),a=Math.min(a,c),l=Math.max(l,c)}else a=x1(t,a,!1),l=x1(t,l,!0);return a==l?{range:i}:{changes:{from:a,to:l},range:Me.cursor(a,as(t)))r.between(e,e,(s,i)=>{se&&(e=n?i:s)});return e}const R$=(t,e,n)=>Yp(t,r=>{let s=r.from,{state:i}=t,a=i.doc.lineAt(s),l,c;if(n&&!e&&s>a.from&&sR$(t,!1,!0),D$=t=>R$(t,!0,!1),P$=(t,e)=>Yp(t,n=>{let r=n.head,{state:s}=t,i=s.doc.lineAt(r),a=s.charCategorizer(r);for(let l=null;;){if(r==(e?i.to:i.from)){r==n.head&&i.number!=(e?s.doc.lines:1)&&(r+=e?1:-1);break}let c=zs(i.text,r-i.from,e)+i.from,d=i.text.slice(Math.min(r,c)-i.from,Math.max(r,c)-i.from),h=a(d);if(l!=null&&h!=l)break;(d!=" "||r!=n.head)&&(l=h),r=c}return r}),z$=t=>P$(t,!1),Ede=t=>P$(t,!0),_de=t=>Yp(t,e=>{let n=t.lineBlockAt(e.head).to;return e.headYp(t,e=>{let n=t.moveToLineBoundary(e,!1).head;return e.head>n?n:Math.max(0,e.head-1)}),Mde=t=>Yp(t,e=>{let n=t.moveToLineBoundary(e,!0).head;return e.head{if(t.readOnly)return!1;let n=t.changeByRange(r=>({changes:{from:r.from,to:r.to,insert:jn.of(["",""])},range:Me.cursor(r.from)}));return e(t.update(n,{scrollIntoView:!0,userEvent:"input"})),!0},Dde=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let n=t.changeByRange(r=>{if(!r.empty||r.from==0||r.from==t.doc.length)return{range:r};let s=r.from,i=t.doc.lineAt(s),a=s==i.from?s-1:zs(i.text,s-i.from,!1)+i.from,l=s==i.to?s+1:zs(i.text,s-i.from,!0)+i.from;return{changes:{from:a,to:l,insert:t.doc.slice(s,l).append(t.doc.slice(a,s))},range:Me.cursor(l)}});return n.changes.empty?!1:(e(t.update(n,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function yb(t){let e=[],n=-1;for(let r of t.selection.ranges){let s=t.doc.lineAt(r.from),i=t.doc.lineAt(r.to);if(!r.empty&&r.to==i.from&&(i=t.doc.lineAt(r.to-1)),n>=s.number){let a=e[e.length-1];a.to=i.to,a.ranges.push(r)}else e.push({from:s.from,to:i.to,ranges:[r]});n=i.number+1}return e}function I$(t,e,n){if(t.readOnly)return!1;let r=[],s=[];for(let i of yb(t)){if(n?i.to==t.doc.length:i.from==0)continue;let a=t.doc.lineAt(n?i.to+1:i.from-1),l=a.length+1;if(n){r.push({from:i.to,to:a.to},{from:i.from,insert:a.text+t.lineBreak});for(let c of i.ranges)s.push(Me.range(Math.min(t.doc.length,c.anchor+l),Math.min(t.doc.length,c.head+l)))}else{r.push({from:a.from,to:i.from},{from:i.to,insert:t.lineBreak+a.text});for(let c of i.ranges)s.push(Me.range(c.anchor-l,c.head-l))}}return r.length?(e(t.update({changes:r,scrollIntoView:!0,selection:Me.create(s,t.selection.mainIndex),userEvent:"move.line"})),!0):!1}const Pde=({state:t,dispatch:e})=>I$(t,e,!1),zde=({state:t,dispatch:e})=>I$(t,e,!0);function L$(t,e,n){if(t.readOnly)return!1;let r=[];for(let s of yb(t))n?r.push({from:s.from,insert:t.doc.slice(s.from,s.to)+t.lineBreak}):r.push({from:s.to,insert:t.lineBreak+t.doc.slice(s.from,s.to)});return e(t.update({changes:r,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const Ide=({state:t,dispatch:e})=>L$(t,e,!1),Lde=({state:t,dispatch:e})=>L$(t,e,!0),Bde=t=>{if(t.state.readOnly)return!1;let{state:e}=t,n=e.changes(yb(e).map(({from:s,to:i})=>(s>0?s--:i{let i;if(t.lineWrapping){let a=t.lineBlockAt(s.head),l=t.coordsAtPos(s.head,s.assoc||1);l&&(i=a.bottom+t.documentTop-l.bottom+t.defaultLineHeight/2)}return t.moveVertically(s,!0,i)}).map(n);return t.dispatch({changes:n,selection:r,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Fde(t,e){if(/\(\)|\[\]|\{\}/.test(t.sliceDoc(e-1,e+1)))return{from:e,to:e};let n=Ss(t).resolveInner(e),r=n.childBefore(e),s=n.childAfter(e),i;return r&&s&&r.to<=e&&s.from>=e&&(i=r.type.prop(sn.closedBy))&&i.indexOf(s.name)>-1&&t.doc.lineAt(r.to).from==t.doc.lineAt(s.from).from&&!/\S/.test(t.sliceDoc(r.to,s.from))?{from:r.to,to:s.from}:null}const A_=B$(!1),qde=B$(!0);function B$(t){return({state:e,dispatch:n})=>{if(e.readOnly)return!1;let r=e.changeByRange(s=>{let{from:i,to:a}=s,l=e.doc.lineAt(i),c=!t&&i==a&&Fde(e,i);t&&(i=a=(a<=l.to?l:e.doc.lineAt(a)).to);let d=new fb(e,{simulateBreak:i,simulateDoubleBreak:!!c}),h=v6(d,i);for(h==null&&(h=Nf(/^\s*/.exec(e.doc.lineAt(i).text)[0],e.tabSize));al.from&&i{let s=[];for(let a=r.from;a<=r.to;){let l=t.doc.lineAt(a);l.number>n&&(r.empty||r.to>l.from)&&(e(l,s,r),n=l.number),a=l.to+1}let i=t.changes(s);return{changes:s,range:Me.range(i.mapPos(r.anchor,1),i.mapPos(r.head,1))}})}const $de=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let n=Object.create(null),r=new fb(t,{overrideIndentation:i=>{let a=n[i];return a??-1}}),s=N6(t,(i,a,l)=>{let c=v6(r,i.from);if(c==null)return;/\S/.test(i.text)||(c=0);let d=/^\s*/.exec(i.text)[0],h=Y0(t,c);(d!=h||l.fromt.readOnly?!1:(e(t.update(N6(t,(n,r)=>{r.push({from:n.from,insert:t.facet(Wp)})}),{userEvent:"input.indent"})),!0),q$=({state:t,dispatch:e})=>t.readOnly?!1:(e(t.update(N6(t,(n,r)=>{let s=/^\s*/.exec(n.text)[0];if(!s)return;let i=Nf(s,t.tabSize),a=0,l=Y0(t,Math.max(0,i-ld(t)));for(;a(t.setTabFocusMode(),!0),Qde=[{key:"Ctrl-b",run:g$,shift:j$,preventDefault:!0},{key:"Ctrl-f",run:x$,shift:N$},{key:"Ctrl-p",run:b$,shift:E$},{key:"Ctrl-n",run:w$,shift:_$},{key:"Ctrl-a",run:cde,shift:wde},{key:"Ctrl-e",run:ude,shift:Sde},{key:"Ctrl-d",run:D$},{key:"Ctrl-h",run:uO},{key:"Ctrl-k",run:_de},{key:"Ctrl-Alt-h",run:z$},{key:"Ctrl-o",run:Rde},{key:"Ctrl-t",run:Dde},{key:"Ctrl-v",run:cO}],Vde=[{key:"ArrowLeft",run:g$,shift:j$,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:ede,shift:fde,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:ode,shift:yde,preventDefault:!0},{key:"ArrowRight",run:x$,shift:N$,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:tde,shift:mde,preventDefault:!0},{mac:"Cmd-ArrowRight",run:lde,shift:bde,preventDefault:!0},{key:"ArrowUp",run:b$,shift:E$,preventDefault:!0},{mac:"Cmd-ArrowUp",run:C_,shift:E_},{mac:"Ctrl-ArrowUp",run:O_,shift:j_},{key:"ArrowDown",run:w$,shift:_$,preventDefault:!0},{mac:"Cmd-ArrowDown",run:T_,shift:__},{mac:"Ctrl-ArrowDown",run:cO,shift:N_},{key:"PageUp",run:O_,shift:j_},{key:"PageDown",run:cO,shift:N_},{key:"Home",run:ade,shift:vde,preventDefault:!0},{key:"Mod-Home",run:C_,shift:E_},{key:"End",run:ide,shift:xde,preventDefault:!0},{key:"Mod-End",run:T_,shift:__},{key:"Enter",run:A_,shift:A_},{key:"Mod-a",run:kde},{key:"Backspace",run:uO,shift:uO,preventDefault:!0},{key:"Delete",run:D$,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:z$,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:Ede,preventDefault:!0},{mac:"Mod-Backspace",run:Ade,preventDefault:!0},{mac:"Mod-Delete",run:Mde,preventDefault:!0}].concat(Qde.map(t=>({mac:t.key,run:t.run,shift:t.shift}))),Ude=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:rde,shift:pde},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:sde,shift:gde},{key:"Alt-ArrowUp",run:Pde},{key:"Shift-Alt-ArrowUp",run:Ide},{key:"Alt-ArrowDown",run:zde},{key:"Shift-Alt-ArrowDown",run:Lde},{key:"Mod-Alt-ArrowUp",run:Nde},{key:"Mod-Alt-ArrowDown",run:Cde},{key:"Escape",run:Tde},{key:"Mod-Enter",run:qde},{key:"Alt-l",mac:"Ctrl-l",run:Ode},{key:"Mod-i",run:jde,preventDefault:!0},{key:"Mod-[",run:q$},{key:"Mod-]",run:F$},{key:"Mod-Alt-\\",run:$de},{key:"Shift-Mod-k",run:Bde},{key:"Shift-Mod-\\",run:hde},{key:"Mod-/",run:Pue},{key:"Alt-A",run:Iue},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Hde}].concat(Vde),Wde={key:"Tab",run:F$,shift:q$},M_=typeof String.prototype.normalize=="function"?t=>t.normalize("NFKD"):t=>t;class af{constructor(e,n,r=0,s=e.length,i,a){this.test=a,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(r,s),this.bufferStart=r,this.normalize=i?l=>i(M_(l)):M_,this.query=this.normalize(n)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return gi(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let n=Zj(e),r=this.bufferStart+this.bufferPos;this.bufferPos+=wo(e);let s=this.normalize(n);if(s.length)for(let i=0,a=r;;i++){let l=s.charCodeAt(i),c=this.match(l,a,this.bufferPos+this.bufferStart);if(i==s.length-1){if(c)return this.value=c,this;break}a==r&&ithis.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let n=this.matchPos<=this.to&&this.re.exec(this.curLine);if(n){let r=this.curLineStart+n.index,s=r+n[0].length;if(this.matchPos=ty(this.text,s+(r==s?1:0)),r==this.curLineStart+this.curLine.length&&this.nextLine(),(rthis.value.to)&&(!this.test||this.test(r,s,n)))return this.value={from:r,to:s,match:n},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length=r||s.to<=n){let l=new Ih(n,e.sliceString(n,r));return eS.set(e,l),l}if(s.from==n&&s.to==r)return s;let{text:i,from:a}=s;return a>n&&(i=e.sliceString(n,a)+i,a=n),s.to=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,n=this.re.exec(this.flat.text);if(n&&!n[0]&&n.index==e&&(this.re.lastIndex=e+1,n=this.re.exec(this.flat.text)),n){let r=this.flat.from+n.index,s=r+n[0].length;if((this.flat.to>=this.to||n.index+n[0].length<=this.flat.text.length-10)&&(!this.test||this.test(r,s,n)))return this.value={from:r,to:s,match:n},this.matchPos=ty(this.text,s+(r==s?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=Ih.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}typeof Symbol<"u"&&(H$.prototype[Symbol.iterator]=Q$.prototype[Symbol.iterator]=function(){return this});function Gde(t){try{return new RegExp(t,C6),!0}catch{return!1}}function ty(t,e){if(e>=t.length)return e;let n=t.lineAt(e),r;for(;e=56320&&r<57344;)e++;return e}function dO(t){let e=String(t.state.doc.lineAt(t.state.selection.main.head).number),n=sr("input",{class:"cm-textfield",name:"line",value:e}),r=sr("form",{class:"cm-gotoLine",onkeydown:i=>{i.keyCode==27?(i.preventDefault(),t.dispatch({effects:N0.of(!1)}),t.focus()):i.keyCode==13&&(i.preventDefault(),s())},onsubmit:i=>{i.preventDefault(),s()}},sr("label",t.state.phrase("Go to line"),": ",n)," ",sr("button",{class:"cm-button",type:"submit"},t.state.phrase("go")),sr("button",{name:"close",onclick:()=>{t.dispatch({effects:N0.of(!1)}),t.focus()},"aria-label":t.state.phrase("close"),type:"button"},["×"]));function s(){let i=/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(n.value);if(!i)return;let{state:a}=t,l=a.doc.lineAt(a.selection.main.head),[,c,d,h,m]=i,g=h?+h.slice(1):0,x=d?+d:l.number;if(d&&m){let S=x/100;c&&(S=S*(c=="-"?-1:1)+l.number/a.doc.lines),x=Math.round(a.doc.lines*S)}else d&&c&&(x=x*(c=="-"?-1:1)+l.number);let y=a.doc.line(Math.max(1,Math.min(a.doc.lines,x))),w=Me.cursor(y.from+Math.max(0,Math.min(g,y.length)));t.dispatch({effects:[N0.of(!1),Ze.scrollIntoView(w.from,{y:"center"})],selection:w}),t.focus()}return{dom:r}}const N0=Ft.define(),R_=Os.define({create(){return!0},update(t,e){for(let n of e.effects)n.is(N0)&&(t=n.value);return t},provide:t=>U0.from(t,e=>e?dO:null)}),Xde=t=>{let e=V0(t,dO);if(!e){let n=[N0.of(!0)];t.state.field(R_,!1)==null&&n.push(Ft.appendConfig.of([R_,Yde])),t.dispatch({effects:n}),e=V0(t,dO)}return e&&e.dom.querySelector("input").select(),!0},Yde=Ze.baseTheme({".cm-panel.cm-gotoLine":{padding:"2px 6px 4px",position:"relative","& label":{fontSize:"80%"},"& [name=close]":{position:"absolute",top:"0",bottom:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:"0"}}}),Kde={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},Zde=at.define({combine(t){return $o(t,Kde,{highlightWordAroundCursor:(e,n)=>e||n,minSelectionLength:Math.min,maxMatches:Math.min})}});function Jde(t){return[she,rhe]}const ehe=kt.mark({class:"cm-selectionMatch"}),the=kt.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function D_(t,e,n,r){return(n==0||t(e.sliceDoc(n-1,n))!=wr.Word)&&(r==e.doc.length||t(e.sliceDoc(r,r+1))!=wr.Word)}function nhe(t,e,n,r){return t(e.sliceDoc(n,n+1))==wr.Word&&t(e.sliceDoc(r-1,r))==wr.Word}const rhe=Vr.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.selectionSet||t.docChanged||t.viewportChanged)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=t.state.facet(Zde),{state:n}=t,r=n.selection;if(r.ranges.length>1)return kt.none;let s=r.main,i,a=null;if(s.empty){if(!e.highlightWordAroundCursor)return kt.none;let c=n.wordAt(s.head);if(!c)return kt.none;a=n.charCategorizer(s.head),i=n.sliceDoc(c.from,c.to)}else{let c=s.to-s.from;if(c200)return kt.none;if(e.wholeWords){if(i=n.sliceDoc(s.from,s.to),a=n.charCategorizer(s.head),!(D_(a,n,s.from,s.to)&&nhe(a,n,s.from,s.to)))return kt.none}else if(i=n.sliceDoc(s.from,s.to),!i)return kt.none}let l=[];for(let c of t.visibleRanges){let d=new af(n.doc,i,c.from,c.to);for(;!d.next().done;){let{from:h,to:m}=d.value;if((!a||D_(a,n,h,m))&&(s.empty&&h<=s.from&&m>=s.to?l.push(the.range(h,m)):(h>=s.to||m<=s.from)&&l.push(ehe.range(h,m)),l.length>e.maxMatches))return kt.none}}return kt.set(l)}},{decorations:t=>t.decorations}),she=Ze.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),ihe=({state:t,dispatch:e})=>{let{selection:n}=t,r=Me.create(n.ranges.map(s=>t.wordAt(s.head)||Me.cursor(s.head)),n.mainIndex);return r.eq(n)?!1:(e(t.update({selection:r})),!0)};function ahe(t,e){let{main:n,ranges:r}=t.selection,s=t.wordAt(n.head),i=s&&s.from==n.from&&s.to==n.to;for(let a=!1,l=new af(t.doc,e,r[r.length-1].to);;)if(l.next(),l.done){if(a)return null;l=new af(t.doc,e,0,Math.max(0,r[r.length-1].from-1)),a=!0}else{if(a&&r.some(c=>c.from==l.value.from))continue;if(i){let c=t.wordAt(l.value.from);if(!c||c.from!=l.value.from||c.to!=l.value.to)continue}return l.value}}const ohe=({state:t,dispatch:e})=>{let{ranges:n}=t.selection;if(n.some(i=>i.from===i.to))return ihe({state:t,dispatch:e});let r=t.sliceDoc(n[0].from,n[0].to);if(t.selection.ranges.some(i=>t.sliceDoc(i.from,i.to)!=r))return!1;let s=ahe(t,r);return s?(e(t.update({selection:t.selection.addRange(Me.range(s.from,s.to),!1),effects:Ze.scrollIntoView(s.to)})),!0):!1},Tf=at.define({combine(t){return $o(t,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new yhe(e),scrollToMatch:e=>Ze.scrollIntoView(e)})}});class V${constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||Gde(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(n,r)=>r=="n"?` +`:r=="r"?"\r":r=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord}create(){return this.regexp?new dhe(this):new che(this)}getCursor(e,n=0,r){let s=e.doc?e:wn.create({doc:e});return r==null&&(r=s.doc.length),this.regexp?bh(this,s,n,r):yh(this,s,n,r)}}class U${constructor(e){this.spec=e}}function yh(t,e,n,r){return new af(e.doc,t.unquoted,n,r,t.caseSensitive?void 0:s=>s.toLowerCase(),t.wholeWord?lhe(e.doc,e.charCategorizer(e.selection.main.head)):void 0)}function lhe(t,e){return(n,r,s,i)=>((i>n||i+s.length=n)return null;s.push(r.value)}return s}highlight(e,n,r,s){let i=yh(this.spec,e,Math.max(0,n-this.spec.unquoted.length),Math.min(r+this.spec.unquoted.length,e.doc.length));for(;!i.next().done;)s(i.value.from,i.value.to)}}function bh(t,e,n,r){return new H$(e.doc,t.search,{ignoreCase:!t.caseSensitive,test:t.wholeWord?uhe(e.charCategorizer(e.selection.main.head)):void 0},n,r)}function ny(t,e){return t.slice(zs(t,e,!1),e)}function ry(t,e){return t.slice(e,zs(t,e))}function uhe(t){return(e,n,r)=>!r[0].length||(t(ny(r.input,r.index))!=wr.Word||t(ry(r.input,r.index))!=wr.Word)&&(t(ry(r.input,r.index+r[0].length))!=wr.Word||t(ny(r.input,r.index+r[0].length))!=wr.Word)}class dhe extends U${nextMatch(e,n,r){let s=bh(this.spec,e,r,e.doc.length).next();return s.done&&(s=bh(this.spec,e,0,n).next()),s.done?null:s.value}prevMatchInRange(e,n,r){for(let s=1;;s++){let i=Math.max(n,r-s*1e4),a=bh(this.spec,e,i,r),l=null;for(;!a.next().done;)l=a.value;if(l&&(i==n||l.from>i+10))return l;if(i==n)return null}}prevMatch(e,n,r){return this.prevMatchInRange(e,0,n)||this.prevMatchInRange(e,r,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(n,r)=>{if(r=="&")return e.match[0];if(r=="$")return"$";for(let s=r.length;s>0;s--){let i=+r.slice(0,s);if(i>0&&i=n)return null;s.push(r.value)}return s}highlight(e,n,r,s){let i=bh(this.spec,e,Math.max(0,n-250),Math.min(r+250,e.doc.length));for(;!i.next().done;)s(i.value.from,i.value.to)}}const Z0=Ft.define(),T6=Ft.define(),$c=Os.define({create(t){return new tS(hO(t).create(),null)},update(t,e){for(let n of e.effects)n.is(Z0)?t=new tS(n.value.create(),t.panel):n.is(T6)&&(t=new tS(t.query,n.value?E6:null));return t},provide:t=>U0.from(t,e=>e.panel)});class tS{constructor(e,n){this.query=e,this.panel=n}}const hhe=kt.mark({class:"cm-searchMatch"}),fhe=kt.mark({class:"cm-searchMatch cm-searchMatch-selected"}),mhe=Vr.fromClass(class{constructor(t){this.view=t,this.decorations=this.highlight(t.state.field($c))}update(t){let e=t.state.field($c);(e!=t.startState.field($c)||t.docChanged||t.selectionSet||t.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:t,panel:e}){if(!e||!t.spec.valid)return kt.none;let{view:n}=this,r=new ql;for(let s=0,i=n.visibleRanges,a=i.length;si[s+1].from-500;)c=i[++s].to;t.highlight(n.state,l,c,(d,h)=>{let m=n.state.selection.ranges.some(g=>g.from==d&&g.to==h);r.add(d,h,m?fhe:hhe)})}return r.finish()}},{decorations:t=>t.decorations});function Kp(t){return e=>{let n=e.state.field($c,!1);return n&&n.query.spec.valid?t(e,n):X$(e)}}const sy=Kp((t,{query:e})=>{let{to:n}=t.state.selection.main,r=e.nextMatch(t.state,n,n);if(!r)return!1;let s=Me.single(r.from,r.to),i=t.state.facet(Tf);return t.dispatch({selection:s,effects:[_6(t,r),i.scrollToMatch(s.main,t)],userEvent:"select.search"}),G$(t),!0}),iy=Kp((t,{query:e})=>{let{state:n}=t,{from:r}=n.selection.main,s=e.prevMatch(n,r,r);if(!s)return!1;let i=Me.single(s.from,s.to),a=t.state.facet(Tf);return t.dispatch({selection:i,effects:[_6(t,s),a.scrollToMatch(i.main,t)],userEvent:"select.search"}),G$(t),!0}),phe=Kp((t,{query:e})=>{let n=e.matchAll(t.state,1e3);return!n||!n.length?!1:(t.dispatch({selection:Me.create(n.map(r=>Me.range(r.from,r.to))),userEvent:"select.search.matches"}),!0)}),ghe=({state:t,dispatch:e})=>{let n=t.selection;if(n.ranges.length>1||n.main.empty)return!1;let{from:r,to:s}=n.main,i=[],a=0;for(let l=new af(t.doc,t.sliceDoc(r,s));!l.next().done;){if(i.length>1e3)return!1;l.value.from==r&&(a=i.length),i.push(Me.range(l.value.from,l.value.to))}return e(t.update({selection:Me.create(i,a),userEvent:"select.search.matches"})),!0},P_=Kp((t,{query:e})=>{let{state:n}=t,{from:r,to:s}=n.selection.main;if(n.readOnly)return!1;let i=e.nextMatch(n,r,r);if(!i)return!1;let a=i,l=[],c,d,h=[];a.from==r&&a.to==s&&(d=n.toText(e.getReplacement(a)),l.push({from:a.from,to:a.to,insert:d}),a=e.nextMatch(n,a.from,a.to),h.push(Ze.announce.of(n.phrase("replaced match on line $",n.doc.lineAt(r).number)+".")));let m=t.state.changes(l);return a&&(c=Me.single(a.from,a.to).map(m),h.push(_6(t,a)),h.push(n.facet(Tf).scrollToMatch(c.main,t))),t.dispatch({changes:m,selection:c,effects:h,userEvent:"input.replace"}),!0}),xhe=Kp((t,{query:e})=>{if(t.state.readOnly)return!1;let n=e.matchAll(t.state,1e9).map(s=>{let{from:i,to:a}=s;return{from:i,to:a,insert:e.getReplacement(s)}});if(!n.length)return!1;let r=t.state.phrase("replaced $ matches",n.length)+".";return t.dispatch({changes:n,effects:Ze.announce.of(r),userEvent:"input.replace.all"}),!0});function E6(t){return t.state.facet(Tf).createPanel(t)}function hO(t,e){var n,r,s,i,a;let l=t.selection.main,c=l.empty||l.to>l.from+100?"":t.sliceDoc(l.from,l.to);if(e&&!c)return e;let d=t.facet(Tf);return new V$({search:((n=e?.literal)!==null&&n!==void 0?n:d.literal)?c:c.replace(/\n/g,"\\n"),caseSensitive:(r=e?.caseSensitive)!==null&&r!==void 0?r:d.caseSensitive,literal:(s=e?.literal)!==null&&s!==void 0?s:d.literal,regexp:(i=e?.regexp)!==null&&i!==void 0?i:d.regexp,wholeWord:(a=e?.wholeWord)!==null&&a!==void 0?a:d.wholeWord})}function W$(t){let e=V0(t,E6);return e&&e.dom.querySelector("[main-field]")}function G$(t){let e=W$(t);e&&e==t.root.activeElement&&e.select()}const X$=t=>{let e=t.state.field($c,!1);if(e&&e.panel){let n=W$(t);if(n&&n!=t.root.activeElement){let r=hO(t.state,e.query.spec);r.valid&&t.dispatch({effects:Z0.of(r)}),n.focus(),n.select()}}else t.dispatch({effects:[T6.of(!0),e?Z0.of(hO(t.state,e.query.spec)):Ft.appendConfig.of(whe)]});return!0},Y$=t=>{let e=t.state.field($c,!1);if(!e||!e.panel)return!1;let n=V0(t,E6);return n&&n.dom.contains(t.root.activeElement)&&t.focus(),t.dispatch({effects:T6.of(!1)}),!0},vhe=[{key:"Mod-f",run:X$,scope:"editor search-panel"},{key:"F3",run:sy,shift:iy,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:sy,shift:iy,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:Y$,scope:"editor search-panel"},{key:"Mod-Shift-l",run:ghe},{key:"Mod-Alt-g",run:Xde},{key:"Mod-d",run:ohe,preventDefault:!0}];class yhe{constructor(e){this.view=e;let n=this.query=e.state.field($c).query.spec;this.commit=this.commit.bind(this),this.searchField=sr("input",{value:n.search,placeholder:Li(e,"Find"),"aria-label":Li(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=sr("input",{value:n.replace,placeholder:Li(e,"Replace"),"aria-label":Li(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=sr("input",{type:"checkbox",name:"case",form:"",checked:n.caseSensitive,onchange:this.commit}),this.reField=sr("input",{type:"checkbox",name:"re",form:"",checked:n.regexp,onchange:this.commit}),this.wordField=sr("input",{type:"checkbox",name:"word",form:"",checked:n.wholeWord,onchange:this.commit});function r(s,i,a){return sr("button",{class:"cm-button",name:s,onclick:i,type:"button"},a)}this.dom=sr("div",{onkeydown:s=>this.keydown(s),class:"cm-search"},[this.searchField,r("next",()=>sy(e),[Li(e,"next")]),r("prev",()=>iy(e),[Li(e,"previous")]),r("select",()=>phe(e),[Li(e,"all")]),sr("label",null,[this.caseField,Li(e,"match case")]),sr("label",null,[this.reField,Li(e,"regexp")]),sr("label",null,[this.wordField,Li(e,"by word")]),...e.state.readOnly?[]:[sr("br"),this.replaceField,r("replace",()=>P_(e),[Li(e,"replace")]),r("replaceAll",()=>xhe(e),[Li(e,"replace all")])],sr("button",{name:"close",onclick:()=>Y$(e),"aria-label":Li(e,"close"),type:"button"},["×"])])}commit(){let e=new V$({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:Z0.of(e)}))}keydown(e){Ole(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?iy:sy)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),P_(this.view))}update(e){for(let n of e.transactions)for(let r of n.effects)r.is(Z0)&&!r.value.eq(this.query)&&this.setQuery(r.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(Tf).top}}function Li(t,e){return t.state.phrase(e)}const v1=30,y1=/[\s\.,:;?!]/;function _6(t,{from:e,to:n}){let r=t.state.doc.lineAt(e),s=t.state.doc.lineAt(n).to,i=Math.max(r.from,e-v1),a=Math.min(s,n+v1),l=t.state.sliceDoc(i,a);if(i!=r.from){for(let c=0;cl.length-v1;c--)if(!y1.test(l[c-1])&&y1.test(l[c])){l=l.slice(0,c);break}}return Ze.announce.of(`${t.state.phrase("current match")}. ${l} ${t.state.phrase("on line")} ${r.number}.`)}const bhe=Ze.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),whe=[$c,ou.low(mhe),bhe];class K${constructor(e,n,r,s){this.state=e,this.pos=n,this.explicit=r,this.view=s,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let n=Ss(this.state).resolveInner(this.pos,-1);for(;n&&e.indexOf(n.name)<0;)n=n.parent;return n?{from:n.from,to:this.pos,text:this.state.sliceDoc(n.from,this.pos),type:n.type}:null}matchBefore(e){let n=this.state.doc.lineAt(this.pos),r=Math.max(n.from,this.pos-250),s=n.text.slice(r-n.from,this.pos-n.from),i=s.search(J$(e,!1));return i<0?null:{from:r+i,to:this.pos,text:s.slice(i)}}get aborted(){return this.abortListeners==null}addEventListener(e,n,r){e=="abort"&&this.abortListeners&&(this.abortListeners.push(n),r&&r.onDocChange&&(this.abortOnDocChange=!0))}}function z_(t){let e=Object.keys(t).join(""),n=/\w/.test(e);return n&&(e=e.replace(/\w/g,"")),`[${n?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function She(t){let e=Object.create(null),n=Object.create(null);for(let{label:s}of t){e[s[0]]=!0;for(let i=1;itypeof s=="string"?{label:s}:s),[n,r]=e.every(s=>/^\w+$/.test(s.label))?[/\w*$/,/\w+$/]:She(e);return s=>{let i=s.matchBefore(r);return i||s.explicit?{from:i?i.from:s.pos,options:e,validFor:n}:null}}function khe(t,e){return n=>{for(let r=Ss(n.state).resolveInner(n.pos,-1);r;r=r.parent){if(t.indexOf(r.name)>-1)return null;if(r.type.isTop)break}return e(n)}}let I_=class{constructor(e,n,r,s){this.completion=e,this.source=n,this.match=r,this.score=s}};function ed(t){return t.selection.main.from}function J$(t,e){var n;let{source:r}=t,s=e&&r[0]!="^",i=r[r.length-1]!="$";return!s&&!i?t:new RegExp(`${s?"^":""}(?:${r})${i?"$":""}`,(n=t.flags)!==null&&n!==void 0?n:t.ignoreCase?"i":"")}const A6=qo.define();function Ohe(t,e,n,r){let{main:s}=t.selection,i=n-s.from,a=r-s.from;return{...t.changeByRange(l=>{if(l!=s&&n!=r&&t.sliceDoc(l.from+i,l.from+a)!=t.sliceDoc(n,r))return{range:l};let c=t.toText(e);return{changes:{from:l.from+i,to:r==s.from?l.to:l.from+a,insert:c},range:Me.cursor(l.from+i+c.length)}}),scrollIntoView:!0,userEvent:"input.complete"}}const L_=new WeakMap;function jhe(t){if(!Array.isArray(t))return t;let e=L_.get(t);return e||L_.set(t,e=Z$(t)),e}const ay=Ft.define(),J0=Ft.define();class Nhe{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let n=0;n=48&&E<=57||E>=97&&E<=122?2:E>=65&&E<=90?1:0:(_=Zj(E))!=_.toLowerCase()?1:_!=_.toUpperCase()?2:0;(!j||A==1&&S||T==0&&A!=0)&&(n[m]==E||r[m]==E&&(g=!0)?a[m++]=j:a.length&&(k=!1)),T=A,j+=wo(E)}return m==c&&a[0]==0&&k?this.result(-100+(g?-200:0),a,e):x==c&&y==0?this.ret(-200-e.length+(w==e.length?0:-100),[0,w]):l>-1?this.ret(-700-e.length,[l,l+this.pattern.length]):x==c?this.ret(-900-e.length,[y,w]):m==c?this.result(-100+(g?-200:0)+-700+(k?0:-1100),a,e):n.length==2?null:this.result((s[0]?-700:0)+-200+-1100,s,e)}result(e,n,r){let s=[],i=0;for(let a of n){let l=a+(this.astral?wo(gi(r,a)):1);i&&s[i-1]==a?s[i-1]=l:(s[i++]=a,s[i++]=l)}return this.ret(e-r.length,s)}}class Che{constructor(e){this.pattern=e,this.matched=[],this.score=0,this.folded=e.toLowerCase()}match(e){if(e.length!1,activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:()=>"",optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:The,filterStrict:!1,compareCompletions:(e,n)=>e.label.localeCompare(n.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(e,n)=>e&&n,closeOnBlur:(e,n)=>e&&n,icons:(e,n)=>e&&n,tooltipClass:(e,n)=>r=>B_(e(r),n(r)),optionClass:(e,n)=>r=>B_(e(r),n(r)),addToOptions:(e,n)=>e.concat(n),filterStrict:(e,n)=>e||n})}});function B_(t,e){return t?e?t+" "+e:t:e}function The(t,e,n,r,s,i){let a=t.textDirection==gr.RTL,l=a,c=!1,d="top",h,m,g=e.left-s.left,x=s.right-e.right,y=r.right-r.left,w=r.bottom-r.top;if(l&&g=w||j>e.top?h=n.bottom-e.top:(d="bottom",h=e.bottom-n.top)}let S=(e.bottom-e.top)/i.offsetHeight,k=(e.right-e.left)/i.offsetWidth;return{style:`${d}: ${h/S}px; max-width: ${m/k}px`,class:"cm-completionInfo-"+(c?a?"left-narrow":"right-narrow":l?"left":"right")}}function Ehe(t){let e=t.addToOptions.slice();return t.icons&&e.push({render(n){let r=document.createElement("div");return r.classList.add("cm-completionIcon"),n.type&&r.classList.add(...n.type.split(/\s+/g).map(s=>"cm-completionIcon-"+s)),r.setAttribute("aria-hidden","true"),r},position:20}),e.push({render(n,r,s,i){let a=document.createElement("span");a.className="cm-completionLabel";let l=n.displayLabel||n.label,c=0;for(let d=0;dc&&a.appendChild(document.createTextNode(l.slice(c,h)));let g=a.appendChild(document.createElement("span"));g.appendChild(document.createTextNode(l.slice(h,m))),g.className="cm-completionMatchedText",c=m}return cn.position-r.position).map(n=>n.render)}function nS(t,e,n){if(t<=n)return{from:0,to:t};if(e<0&&(e=0),e<=t>>1){let s=Math.floor(e/n);return{from:s*n,to:(s+1)*n}}let r=Math.floor((t-e)/n);return{from:t-(r+1)*n,to:t-r*n}}class _he{constructor(e,n,r){this.view=e,this.stateField=n,this.applyCompletion=r,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:()=>this.measureInfo(),write:c=>this.placeInfo(c),key:this},this.space=null,this.currentClass="";let s=e.state.field(n),{options:i,selected:a}=s.open,l=e.state.facet(bs);this.optionContent=Ehe(l),this.optionClass=l.optionClass,this.tooltipClass=l.tooltipClass,this.range=nS(i.length,a,l.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.updateTooltipClass(e.state),this.dom.addEventListener("mousedown",c=>{let{options:d}=e.state.field(n).open;for(let h=c.target,m;h&&h!=this.dom;h=h.parentNode)if(h.nodeName=="LI"&&(m=/-(\d+)$/.exec(h.id))&&+m[1]{let d=e.state.field(this.stateField,!1);d&&d.tooltip&&e.state.facet(bs).closeOnBlur&&c.relatedTarget!=e.contentDOM&&e.dispatch({effects:J0.of(null)})}),this.showOptions(i,s.id)}mount(){this.updateSel()}showOptions(e,n){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(e,n,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(e){var n;let r=e.state.field(this.stateField),s=e.startState.field(this.stateField);if(this.updateTooltipClass(e.state),r!=s){let{options:i,selected:a,disabled:l}=r.open;(!s.open||s.open.options!=i)&&(this.range=nS(i.length,a,e.state.facet(bs).maxRenderedOptions),this.showOptions(i,r.id)),this.updateSel(),l!=((n=s.open)===null||n===void 0?void 0:n.disabled)&&this.dom.classList.toggle("cm-tooltip-autocomplete-disabled",!!l)}}updateTooltipClass(e){let n=this.tooltipClass(e);if(n!=this.currentClass){for(let r of this.currentClass.split(" "))r&&this.dom.classList.remove(r);for(let r of n.split(" "))r&&this.dom.classList.add(r);this.currentClass=n}}positioned(e){this.space=e,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let e=this.view.state.field(this.stateField),n=e.open;(n.selected>-1&&n.selected=this.range.to)&&(this.range=nS(n.options.length,n.selected,this.view.state.facet(bs).maxRenderedOptions),this.showOptions(n.options,e.id));let r=this.updateSelectedOption(n.selected);if(r){this.destroyInfo();let{completion:s}=n.options[n.selected],{info:i}=s;if(!i)return;let a=typeof i=="string"?document.createTextNode(i):i(s);if(!a)return;"then"in a?a.then(l=>{l&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(l,s)}).catch(l=>vi(this.view.state,l,"completion info")):(this.addInfoPane(a,s),r.setAttribute("aria-describedby",this.info.id))}}addInfoPane(e,n){this.destroyInfo();let r=this.info=document.createElement("div");if(r.className="cm-tooltip cm-completionInfo",r.id="cm-completionInfo-"+Math.floor(Math.random()*65535).toString(16),e.nodeType!=null)r.appendChild(e),this.infoDestroy=null;else{let{dom:s,destroy:i}=e;r.appendChild(s),this.infoDestroy=i||null}this.dom.appendChild(r),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(e){let n=null;for(let r=this.list.firstChild,s=this.range.from;r;r=r.nextSibling,s++)r.nodeName!="LI"||!r.id?s--:s==e?r.hasAttribute("aria-selected")||(r.setAttribute("aria-selected","true"),n=r):r.hasAttribute("aria-selected")&&(r.removeAttribute("aria-selected"),r.removeAttribute("aria-describedby"));return n&&Mhe(this.list,n),n}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let n=this.dom.getBoundingClientRect(),r=this.info.getBoundingClientRect(),s=e.getBoundingClientRect(),i=this.space;if(!i){let a=this.dom.ownerDocument.documentElement;i={left:0,top:0,right:a.clientWidth,bottom:a.clientHeight}}return s.top>Math.min(i.bottom,n.bottom)-10||s.bottom{a.target==s&&a.preventDefault()});let i=null;for(let a=r.from;ar.from||r.from==0))if(i=g,typeof d!="string"&&d.header)s.appendChild(d.header(d));else{let x=s.appendChild(document.createElement("completion-section"));x.textContent=g}}const h=s.appendChild(document.createElement("li"));h.id=n+"-"+a,h.setAttribute("role","option");let m=this.optionClass(l);m&&(h.className=m);for(let g of this.optionContent){let x=g(l,this.view.state,this.view,c);x&&h.appendChild(x)}}return r.from&&s.classList.add("cm-completionListIncompleteTop"),r.tonew _he(n,t,e)}function Mhe(t,e){let n=t.getBoundingClientRect(),r=e.getBoundingClientRect(),s=n.height/t.offsetHeight;r.topn.bottom&&(t.scrollTop+=(r.bottom-n.bottom)/s)}function F_(t){return(t.boost||0)*100+(t.apply?10:0)+(t.info?5:0)+(t.type?1:0)}function Rhe(t,e){let n=[],r=null,s=null,i=h=>{n.push(h);let{section:m}=h.completion;if(m){r||(r=[]);let g=typeof m=="string"?m:m.name;r.some(x=>x.name==g)||r.push(typeof m=="string"?{name:g}:m)}},a=e.facet(bs);for(let h of t)if(h.hasResult()){let m=h.result.getMatch;if(h.result.filter===!1)for(let g of h.result.options)i(new I_(g,h.source,m?m(g):[],1e9-n.length));else{let g=e.sliceDoc(h.from,h.to),x,y=a.filterStrict?new Che(g):new Nhe(g);for(let w of h.result.options)if(x=y.match(w.label)){let S=w.displayLabel?m?m(w,x.matched):[]:x.matched,k=x.score+(w.boost||0);if(i(new I_(w,h.source,S,k)),typeof w.section=="object"&&w.section.rank==="dynamic"){let{name:j}=w.section;s||(s=Object.create(null)),s[j]=Math.max(k,s[j]||-1e9)}}}}if(r){let h=Object.create(null),m=0,g=(x,y)=>(x.rank==="dynamic"&&y.rank==="dynamic"?s[y.name]-s[x.name]:0)||(typeof x.rank=="number"?x.rank:1e9)-(typeof y.rank=="number"?y.rank:1e9)||(x.nameg.score-m.score||d(m.completion,g.completion))){let m=h.completion;!c||c.label!=m.label||c.detail!=m.detail||c.type!=null&&m.type!=null&&c.type!=m.type||c.apply!=m.apply||c.boost!=m.boost?l.push(h):F_(h.completion)>F_(c)&&(l[l.length-1]=h),c=h.completion}return l}class Th{constructor(e,n,r,s,i,a){this.options=e,this.attrs=n,this.tooltip=r,this.timestamp=s,this.selected=i,this.disabled=a}setSelected(e,n){return e==this.selected||e>=this.options.length?this:new Th(this.options,q_(n,e),this.tooltip,this.timestamp,e,this.disabled)}static build(e,n,r,s,i,a){if(s&&!a&&e.some(d=>d.isPending))return s.setDisabled();let l=Rhe(e,n);if(!l.length)return s&&e.some(d=>d.isPending)?s.setDisabled():null;let c=n.facet(bs).selectOnOpen?0:-1;if(s&&s.selected!=c&&s.selected!=-1){let d=s.options[s.selected].completion;for(let h=0;hh.hasResult()?Math.min(d,h.from):d,1e8),create:Bhe,above:i.aboveCursor},s?s.timestamp:Date.now(),c,!1)}map(e){return new Th(this.options,this.attrs,{...this.tooltip,pos:e.mapPos(this.tooltip.pos)},this.timestamp,this.selected,this.disabled)}setDisabled(){return new Th(this.options,this.attrs,this.tooltip,this.timestamp,this.selected,!0)}}class oy{constructor(e,n,r){this.active=e,this.id=n,this.open=r}static start(){return new oy(Ihe,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:n}=e,r=n.facet(bs),i=(r.override||n.languageDataAt("autocomplete",ed(n)).map(jhe)).map(c=>(this.active.find(h=>h.source==c)||new ba(c,this.active.some(h=>h.state!=0)?1:0)).update(e,r));i.length==this.active.length&&i.every((c,d)=>c==this.active[d])&&(i=this.active);let a=this.open,l=e.effects.some(c=>c.is(M6));a&&e.docChanged&&(a=a.map(e.changes)),e.selection||i.some(c=>c.hasResult()&&e.changes.touchesRange(c.from,c.to))||!Dhe(i,this.active)||l?a=Th.build(i,n,this.id,a,r,l):a&&a.disabled&&!i.some(c=>c.isPending)&&(a=null),!a&&i.every(c=>!c.isPending)&&i.some(c=>c.hasResult())&&(i=i.map(c=>c.hasResult()?new ba(c.source,0):c));for(let c of e.effects)c.is(tH)&&(a=a&&a.setSelected(c.value,this.id));return i==this.active&&a==this.open?this:new oy(i,this.id,a)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?Phe:zhe}}function Dhe(t,e){if(t==e)return!0;for(let n=0,r=0;;){for(;n-1&&(n["aria-activedescendant"]=t+"-"+e),n}const Ihe=[];function eH(t,e){if(t.isUserEvent("input.complete")){let r=t.annotation(A6);if(r&&e.activateOnCompletion(r))return 12}let n=t.isUserEvent("input.type");return n&&e.activateOnTyping?5:n?1:t.isUserEvent("delete.backward")?2:t.selection?8:t.docChanged?16:0}class ba{constructor(e,n,r=!1){this.source=e,this.state=n,this.explicit=r}hasResult(){return!1}get isPending(){return this.state==1}update(e,n){let r=eH(e,n),s=this;(r&8||r&16&&this.touches(e))&&(s=new ba(s.source,0)),r&4&&s.state==0&&(s=new ba(this.source,1)),s=s.updateFor(e,r);for(let i of e.effects)if(i.is(ay))s=new ba(s.source,1,i.value);else if(i.is(J0))s=new ba(s.source,0);else if(i.is(M6))for(let a of i.value)a.source==s.source&&(s=a);return s}updateFor(e,n){return this.map(e.changes)}map(e){return this}touches(e){return e.changes.touchesRange(ed(e.state))}}class Lh extends ba{constructor(e,n,r,s,i,a){super(e,3,n),this.limit=r,this.result=s,this.from=i,this.to=a}hasResult(){return!0}updateFor(e,n){var r;if(!(n&3))return this.map(e.changes);let s=this.result;s.map&&!e.changes.empty&&(s=s.map(s,e.changes));let i=e.changes.mapPos(this.from),a=e.changes.mapPos(this.to,1),l=ed(e.state);if(l>a||!s||n&2&&(ed(e.startState)==this.from||ln.map(e))}}),tH=Ft.define(),xi=Os.define({create(){return oy.start()},update(t,e){return t.update(e)},provide:t=>[h6.from(t,e=>e.tooltip),Ze.contentAttributes.from(t,e=>e.attrs)]});function R6(t,e){const n=e.completion.apply||e.completion.label;let r=t.state.field(xi).active.find(s=>s.source==e.source);return r instanceof Lh?(typeof n=="string"?t.dispatch({...Ohe(t.state,n,r.from,r.to),annotations:A6.of(e.completion)}):n(t,e.completion,r.from,r.to),!0):!1}const Bhe=Ahe(xi,R6);function b1(t,e="option"){return n=>{let r=n.state.field(xi,!1);if(!r||!r.open||r.open.disabled||Date.now()-r.open.timestamp-1?r.open.selected+s*(t?1:-1):t?0:a-1;return l<0?l=e=="page"?0:a-1:l>=a&&(l=e=="page"?a-1:0),n.dispatch({effects:tH.of(l)}),!0}}const Fhe=t=>{let e=t.state.field(xi,!1);return t.state.readOnly||!e||!e.open||e.open.selected<0||e.open.disabled||Date.now()-e.open.timestampt.state.field(xi,!1)?(t.dispatch({effects:ay.of(!0)}),!0):!1,qhe=t=>{let e=t.state.field(xi,!1);return!e||!e.active.some(n=>n.state!=0)?!1:(t.dispatch({effects:J0.of(null)}),!0)};class $he{constructor(e,n){this.active=e,this.context=n,this.time=Date.now(),this.updates=[],this.done=void 0}}const Hhe=50,Qhe=1e3,Vhe=Vr.fromClass(class{constructor(t){this.view=t,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(let e of t.state.field(xi).active)e.isPending&&this.startQuery(e)}update(t){let e=t.state.field(xi),n=t.state.facet(bs);if(!t.selectionSet&&!t.docChanged&&t.startState.field(xi)==e)return;let r=t.transactions.some(i=>{let a=eH(i,n);return a&8||(i.selection||i.docChanged)&&!(a&3)});for(let i=0;iHhe&&Date.now()-a.time>Qhe){for(let l of a.context.abortListeners)try{l()}catch(c){vi(this.view.state,c)}a.context.abortListeners=null,this.running.splice(i--,1)}else a.updates.push(...t.transactions)}this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),t.transactions.some(i=>i.effects.some(a=>a.is(ay)))&&(this.pendingStart=!0);let s=this.pendingStart?50:n.activateOnTypingDelay;if(this.debounceUpdate=e.active.some(i=>i.isPending&&!this.running.some(a=>a.active.source==i.source))?setTimeout(()=>this.startUpdate(),s):-1,this.composing!=0)for(let i of t.transactions)i.isUserEvent("input.type")?this.composing=2:this.composing==2&&i.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;let{state:t}=this.view,e=t.field(xi);for(let n of e.active)n.isPending&&!this.running.some(r=>r.active.source==n.source)&&this.startQuery(n);this.running.length&&e.open&&e.open.disabled&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(bs).updateSyncTime))}startQuery(t){let{state:e}=this.view,n=ed(e),r=new K$(e,n,t.explicit,this.view),s=new $he(t,r);this.running.push(s),Promise.resolve(t.source(r)).then(i=>{s.context.aborted||(s.done=i||null,this.scheduleAccept())},i=>{this.view.dispatch({effects:J0.of(null)}),vi(this.view.state,i)})}scheduleAccept(){this.running.every(t=>t.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(bs).updateSyncTime))}accept(){var t;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],n=this.view.state.facet(bs),r=this.view.state.field(xi);for(let s=0;sl.source==i.active.source);if(a&&a.isPending)if(i.done==null){let l=new ba(i.active.source,0);for(let c of i.updates)l=l.update(c,n);l.isPending||e.push(l)}else this.startQuery(a)}(e.length||r.open&&r.open.disabled)&&this.view.dispatch({effects:M6.of(e)})}},{eventHandlers:{blur(t){let e=this.view.state.field(xi,!1);if(e&&e.tooltip&&this.view.state.facet(bs).closeOnBlur){let n=e.open&&Eq(this.view,e.open.tooltip);(!n||!n.dom.contains(t.relatedTarget))&&setTimeout(()=>this.view.dispatch({effects:J0.of(null)}),10)}},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:ay.of(!1)}),20),this.composing=0}}}),Uhe=typeof navigator=="object"&&/Win/.test(navigator.platform),Whe=ou.highest(Ze.domEventHandlers({keydown(t,e){let n=e.state.field(xi,!1);if(!n||!n.open||n.open.disabled||n.open.selected<0||t.key.length>1||t.ctrlKey&&!(Uhe&&t.altKey)||t.metaKey)return!1;let r=n.open.options[n.open.selected],s=n.active.find(a=>a.source==r.source),i=r.completion.commitCharacters||s.result.commitCharacters;return i&&i.indexOf(t.key)>-1&&R6(e,r),!1}})),nH=Ze.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li, & > completion-section":{padding:"1px 3px",lineHeight:1.2},"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer"},"& > completion-section":{display:"list-item",borderBottom:"1px solid silver",paddingLeft:"0.5em",opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"···"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"400px",boxSizing:"border-box",whiteSpace:"pre-line"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:"30px"},".cm-completionInfo.cm-completionInfo-right-narrow":{left:"30px"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'ƒ'"}},".cm-completionIcon-class":{"&:after":{content:"'○'"}},".cm-completionIcon-interface":{"&:after":{content:"'◌'"}},".cm-completionIcon-variable":{"&:after":{content:"'𝑥'"}},".cm-completionIcon-constant":{"&:after":{content:"'𝐶'"}},".cm-completionIcon-type":{"&:after":{content:"'𝑡'"}},".cm-completionIcon-enum":{"&:after":{content:"'∪'"}},".cm-completionIcon-property":{"&:after":{content:"'□'"}},".cm-completionIcon-keyword":{"&:after":{content:"'🔑︎'"}},".cm-completionIcon-namespace":{"&:after":{content:"'▢'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class Ghe{constructor(e,n,r,s){this.field=e,this.line=n,this.from=r,this.to=s}}class D6{constructor(e,n,r){this.field=e,this.from=n,this.to=r}map(e){let n=e.mapPos(this.from,-1,Ds.TrackDel),r=e.mapPos(this.to,1,Ds.TrackDel);return n==null||r==null?null:new D6(this.field,n,r)}}class P6{constructor(e,n){this.lines=e,this.fieldPositions=n}instantiate(e,n){let r=[],s=[n],i=e.doc.lineAt(n),a=/^\s*/.exec(i.text)[0];for(let c of this.lines){if(r.length){let d=a,h=/^\t*/.exec(c)[0].length;for(let m=0;mnew D6(c.field,s[c.line]+c.from,s[c.line]+c.to));return{text:r,ranges:l}}static parse(e){let n=[],r=[],s=[],i;for(let a of e.split(/\r\n?|\n/)){for(;i=/[#$]\{(?:(\d+)(?::([^{}]*))?|((?:\\[{}]|[^{}])*))\}/.exec(a);){let l=i[1]?+i[1]:null,c=i[2]||i[3]||"",d=-1,h=c.replace(/\\[{}]/g,m=>m[1]);for(let m=0;m=d&&g.field++}for(let m of s)if(m.line==r.length&&m.from>i.index){let g=i[2]?3+(i[1]||"").length:2;m.from-=g,m.to-=g}s.push(new Ghe(d,r.length,i.index,i.index+h.length)),a=a.slice(0,i.index)+c+a.slice(i.index+i[0].length)}a=a.replace(/\\([{}])/g,(l,c,d)=>{for(let h of s)h.line==r.length&&h.from>d&&(h.from--,h.to--);return c}),r.push(a)}return new P6(r,s)}}let Xhe=kt.widget({widget:new class extends Ho{toDOM(){let t=document.createElement("span");return t.className="cm-snippetFieldPosition",t}ignoreEvent(){return!1}}}),Yhe=kt.mark({class:"cm-snippetField"});class Ef{constructor(e,n){this.ranges=e,this.active=n,this.deco=kt.set(e.map(r=>(r.from==r.to?Xhe:Yhe).range(r.from,r.to)),!0)}map(e){let n=[];for(let r of this.ranges){let s=r.map(e);if(!s)return null;n.push(s)}return new Ef(n,this.active)}selectionInsideField(e){return e.ranges.every(n=>this.ranges.some(r=>r.field==this.active&&r.from<=n.from&&r.to>=n.to))}}const Zp=Ft.define({map(t,e){return t&&t.map(e)}}),Khe=Ft.define(),ep=Os.define({create(){return null},update(t,e){for(let n of e.effects){if(n.is(Zp))return n.value;if(n.is(Khe)&&t)return new Ef(t.ranges,n.value)}return t&&e.docChanged&&(t=t.map(e.changes)),t&&e.selection&&!t.selectionInsideField(e.selection)&&(t=null),t},provide:t=>Ze.decorations.from(t,e=>e?e.deco:kt.none)});function z6(t,e){return Me.create(t.filter(n=>n.field==e).map(n=>Me.range(n.from,n.to)))}function Zhe(t){let e=P6.parse(t);return(n,r,s,i)=>{let{text:a,ranges:l}=e.instantiate(n.state,s),{main:c}=n.state.selection,d={changes:{from:s,to:i==c.from?c.to:i,insert:jn.of(a)},scrollIntoView:!0,annotations:r?[A6.of(r),ns.userEvent.of("input.complete")]:void 0};if(l.length&&(d.selection=z6(l,0)),l.some(h=>h.field>0)){let h=new Ef(l,0),m=d.effects=[Zp.of(h)];n.state.field(ep,!1)===void 0&&m.push(Ft.appendConfig.of([ep,rfe,sfe,nH]))}n.dispatch(n.state.update(d))}}function rH(t){return({state:e,dispatch:n})=>{let r=e.field(ep,!1);if(!r||t<0&&r.active==0)return!1;let s=r.active+t,i=t>0&&!r.ranges.some(a=>a.field==s+t);return n(e.update({selection:z6(r.ranges,s),effects:Zp.of(i?null:new Ef(r.ranges,s)),scrollIntoView:!0})),!0}}const Jhe=({state:t,dispatch:e})=>t.field(ep,!1)?(e(t.update({effects:Zp.of(null)})),!0):!1,efe=rH(1),tfe=rH(-1),nfe=[{key:"Tab",run:efe,shift:tfe},{key:"Escape",run:Jhe}],$_=at.define({combine(t){return t.length?t[0]:nfe}}),rfe=ou.highest(Vp.compute([$_],t=>t.facet($_)));function vl(t,e){return{...e,apply:Zhe(t)}}const sfe=Ze.domEventHandlers({mousedown(t,e){let n=e.state.field(ep,!1),r;if(!n||(r=e.posAtCoords({x:t.clientX,y:t.clientY}))==null)return!1;let s=n.ranges.find(i=>i.from<=r&&i.to>=r);return!s||s.field==n.active?!1:(e.dispatch({selection:z6(n.ranges,s.field),effects:Zp.of(n.ranges.some(i=>i.field>s.field)?new Ef(n.ranges,s.field):null),scrollIntoView:!0}),!0)}}),tp={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},Vu=Ft.define({map(t,e){let n=e.mapPos(t,-1,Ds.TrackAfter);return n??void 0}}),I6=new class extends sd{};I6.startSide=1;I6.endSide=-1;const sH=Os.define({create(){return Rn.empty},update(t,e){if(t=t.map(e.changes),e.selection){let n=e.state.doc.lineAt(e.selection.main.head);t=t.update({filter:r=>r>=n.from&&r<=n.to})}for(let n of e.effects)n.is(Vu)&&(t=t.update({add:[I6.range(n.value,n.value+1)]}));return t}});function ife(){return[ofe,sH]}const sS="()[]{}<>«»»«[]{}";function iH(t){for(let e=0;e{if((afe?t.composing:t.compositionStarted)||t.state.readOnly)return!1;let s=t.state.selection.main;if(r.length>2||r.length==2&&wo(gi(r,0))==1||e!=s.from||n!=s.to)return!1;let i=ufe(t.state,r);return i?(t.dispatch(i),!0):!1}),lfe=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let r=aH(t,t.selection.main.head).brackets||tp.brackets,s=null,i=t.changeByRange(a=>{if(a.empty){let l=dfe(t.doc,a.head);for(let c of r)if(c==l&&bb(t.doc,a.head)==iH(gi(c,0)))return{changes:{from:a.head-c.length,to:a.head+c.length},range:Me.cursor(a.head-c.length)}}return{range:s=a}});return s||e(t.update(i,{scrollIntoView:!0,userEvent:"delete.backward"})),!s},cfe=[{key:"Backspace",run:lfe}];function ufe(t,e){let n=aH(t,t.selection.main.head),r=n.brackets||tp.brackets;for(let s of r){let i=iH(gi(s,0));if(e==s)return i==s?mfe(t,s,r.indexOf(s+s+s)>-1,n):hfe(t,s,i,n.before||tp.before);if(e==i&&oH(t,t.selection.main.from))return ffe(t,s,i)}return null}function oH(t,e){let n=!1;return t.field(sH).between(0,t.doc.length,r=>{r==e&&(n=!0)}),n}function bb(t,e){let n=t.sliceString(e,e+2);return n.slice(0,wo(gi(n,0)))}function dfe(t,e){let n=t.sliceString(e-2,e);return wo(gi(n,0))==n.length?n:n.slice(1)}function hfe(t,e,n,r){let s=null,i=t.changeByRange(a=>{if(!a.empty)return{changes:[{insert:e,from:a.from},{insert:n,from:a.to}],effects:Vu.of(a.to+e.length),range:Me.range(a.anchor+e.length,a.head+e.length)};let l=bb(t.doc,a.head);return!l||/\s/.test(l)||r.indexOf(l)>-1?{changes:{insert:e+n,from:a.head},effects:Vu.of(a.head+e.length),range:Me.cursor(a.head+e.length)}:{range:s=a}});return s?null:t.update(i,{scrollIntoView:!0,userEvent:"input.type"})}function ffe(t,e,n){let r=null,s=t.changeByRange(i=>i.empty&&bb(t.doc,i.head)==n?{changes:{from:i.head,to:i.head+n.length,insert:n},range:Me.cursor(i.head+n.length)}:r={range:i});return r?null:t.update(s,{scrollIntoView:!0,userEvent:"input.type"})}function mfe(t,e,n,r){let s=r.stringPrefixes||tp.stringPrefixes,i=null,a=t.changeByRange(l=>{if(!l.empty)return{changes:[{insert:e,from:l.from},{insert:e,from:l.to}],effects:Vu.of(l.to+e.length),range:Me.range(l.anchor+e.length,l.head+e.length)};let c=l.head,d=bb(t.doc,c),h;if(d==e){if(H_(t,c))return{changes:{insert:e+e,from:c},effects:Vu.of(c+e.length),range:Me.cursor(c+e.length)};if(oH(t,c)){let g=n&&t.sliceDoc(c,c+e.length*3)==e+e+e?e+e+e:e;return{changes:{from:c,to:c+g.length,insert:g},range:Me.cursor(c+g.length)}}}else{if(n&&t.sliceDoc(c-2*e.length,c)==e+e&&(h=Q_(t,c-2*e.length,s))>-1&&H_(t,h))return{changes:{insert:e+e+e+e,from:c},effects:Vu.of(c+e.length),range:Me.cursor(c+e.length)};if(t.charCategorizer(c)(d)!=wr.Word&&Q_(t,c,s)>-1&&!pfe(t,c,e,s))return{changes:{insert:e+e,from:c},effects:Vu.of(c+e.length),range:Me.cursor(c+e.length)}}return{range:i=l}});return i?null:t.update(a,{scrollIntoView:!0,userEvent:"input.type"})}function H_(t,e){let n=Ss(t).resolveInner(e+1);return n.parent&&n.from==e}function pfe(t,e,n,r){let s=Ss(t).resolveInner(e,-1),i=r.reduce((a,l)=>Math.max(a,l.length),0);for(let a=0;a<5;a++){let l=t.sliceDoc(s.from,Math.min(s.to,s.from+n.length+i)),c=l.indexOf(n);if(!c||c>-1&&r.indexOf(l.slice(0,c))>-1){let h=s.firstChild;for(;h&&h.from==s.from&&h.to-h.from>n.length+c;){if(t.sliceDoc(h.to-n.length,h.to)==n)return!1;h=h.firstChild}return!0}let d=s.to==e&&s.parent;if(!d)break;s=d}return!1}function Q_(t,e,n){let r=t.charCategorizer(e);if(r(t.sliceDoc(e-1,e))!=wr.Word)return e;for(let s of n){let i=e-s.length;if(t.sliceDoc(i,e)==s&&r(t.sliceDoc(i-1,i))!=wr.Word)return i}return-1}function gfe(t={}){return[Whe,xi,bs.of(t),Vhe,xfe,nH]}const lH=[{key:"Ctrl-Space",run:rS},{mac:"Alt-`",run:rS},{mac:"Alt-i",run:rS},{key:"Escape",run:qhe},{key:"ArrowDown",run:b1(!0)},{key:"ArrowUp",run:b1(!1)},{key:"PageDown",run:b1(!0,"page")},{key:"PageUp",run:b1(!1,"page")},{key:"Enter",run:Fhe}],xfe=ou.highest(Vp.computeN([bs],t=>t.facet(bs).defaultKeymap?[lH]:[]));class V_{constructor(e,n,r){this.from=e,this.to=n,this.diagnostic=r}}class qu{constructor(e,n,r){this.diagnostics=e,this.panel=n,this.selected=r}static init(e,n,r){let s=r.facet(np).markerFilter;s&&(e=s(e,r));let i=e.slice().sort((x,y)=>x.from-y.from||x.to-y.to),a=new ql,l=[],c=0,d=r.doc.iter(),h=0,m=r.doc.length;for(let x=0;;){let y=x==i.length?null:i[x];if(!y&&!l.length)break;let w,S;if(l.length)w=c,S=l.reduce((N,T)=>Math.min(N,T.to),y&&y.from>w?y.from:1e8);else{if(w=y.from,w>m)break;S=y.to,l.push(y),x++}for(;xN.from||N.to==w))l.push(N),x++,S=Math.min(N.to,S);else{S=Math.min(N.from,S);break}}S=Math.min(S,m);let k=!1;if(l.some(N=>N.from==w&&(N.to==S||S==m))&&(k=w==S,!k&&S-w<10)){let N=w-(h+d.value.length);N>0&&(d.next(N),h=w);for(let T=w;;){if(T>=S){k=!0;break}if(!d.lineBreak&&h+d.value.length>T)break;T=h+d.value.length,h+=d.value.length,d.next()}}let j=_fe(l);if(k)a.add(w,w,kt.widget({widget:new Nfe(j),diagnostics:l.slice()}));else{let N=l.reduce((T,E)=>E.markClass?T+" "+E.markClass:T,"");a.add(w,S,kt.mark({class:"cm-lintRange cm-lintRange-"+j+N,diagnostics:l.slice(),inclusiveEnd:l.some(T=>T.to>S)}))}if(c=S,c==m)break;for(let N=0;N{if(!(e&&a.diagnostics.indexOf(e)<0))if(!r)r=new V_(s,i,e||a.diagnostics[0]);else{if(a.diagnostics.indexOf(r.diagnostic)<0)return!1;r=new V_(r.from,i,r.diagnostic)}}),r}function vfe(t,e){let n=e.pos,r=e.end||n,s=t.state.facet(np).hideOn(t,n,r);if(s!=null)return s;let i=t.startState.doc.lineAt(e.pos);return!!(t.effects.some(a=>a.is(cH))||t.changes.touchesRange(i.from,Math.max(i.to,r)))}function yfe(t,e){return t.field(Vi,!1)?e:e.concat(Ft.appendConfig.of(Afe))}const cH=Ft.define(),L6=Ft.define(),uH=Ft.define(),Vi=Os.define({create(){return new qu(kt.none,null,null)},update(t,e){if(e.docChanged&&t.diagnostics.size){let n=t.diagnostics.map(e.changes),r=null,s=t.panel;if(t.selected){let i=e.changes.mapPos(t.selected.from,1);r=of(n,t.selected.diagnostic,i)||of(n,null,i)}!n.size&&s&&e.state.facet(np).autoPanel&&(s=null),t=new qu(n,s,r)}for(let n of e.effects)if(n.is(cH)){let r=e.state.facet(np).autoPanel?n.value.length?rp.open:null:t.panel;t=qu.init(n.value,r,e.state)}else n.is(L6)?t=new qu(t.diagnostics,n.value?rp.open:null,t.selected):n.is(uH)&&(t=new qu(t.diagnostics,t.panel,n.value));return t},provide:t=>[U0.from(t,e=>e.panel),Ze.decorations.from(t,e=>e.diagnostics)]}),bfe=kt.mark({class:"cm-lintRange cm-lintRange-active"});function wfe(t,e,n){let{diagnostics:r}=t.state.field(Vi),s,i=-1,a=-1;r.between(e-(n<0?1:0),e+(n>0?1:0),(c,d,{spec:h})=>{if(e>=c&&e<=d&&(c==d||(e>c||n>0)&&(ehH(t,n,!1)))}const kfe=t=>{let e=t.state.field(Vi,!1);(!e||!e.panel)&&t.dispatch({effects:yfe(t.state,[L6.of(!0)])});let n=V0(t,rp.open);return n&&n.dom.querySelector(".cm-panel-lint ul").focus(),!0},U_=t=>{let e=t.state.field(Vi,!1);return!e||!e.panel?!1:(t.dispatch({effects:L6.of(!1)}),!0)},Ofe=t=>{let e=t.state.field(Vi,!1);if(!e)return!1;let n=t.state.selection.main,r=e.diagnostics.iter(n.to+1);return!r.value&&(r=e.diagnostics.iter(0),!r.value||r.from==n.from&&r.to==n.to)?!1:(t.dispatch({selection:{anchor:r.from,head:r.to},scrollIntoView:!0}),!0)},jfe=[{key:"Mod-Shift-m",run:kfe,preventDefault:!0},{key:"F8",run:Ofe}],np=at.define({combine(t){return{sources:t.map(e=>e.source).filter(e=>e!=null),...$o(t.map(e=>e.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null,hideOn:()=>null},{delay:Math.max,markerFilter:W_,tooltipFilter:W_,needsRefresh:(e,n)=>e?n?r=>e(r)||n(r):e:n,hideOn:(e,n)=>e?n?(r,s,i)=>e(r,s,i)||n(r,s,i):e:n,autoPanel:(e,n)=>e||n})}}});function W_(t,e){return t?e?(n,r)=>e(t(n,r),r):t:e}function dH(t){let e=[];if(t)e:for(let{name:n}of t){for(let r=0;ri.toLowerCase()==s.toLowerCase())){e.push(s);continue e}}e.push("")}return e}function hH(t,e,n){var r;let s=n?dH(e.actions):[];return sr("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},sr("span",{class:"cm-diagnosticText"},e.renderMessage?e.renderMessage(t):e.message),(r=e.actions)===null||r===void 0?void 0:r.map((i,a)=>{let l=!1,c=x=>{if(x.preventDefault(),l)return;l=!0;let y=of(t.state.field(Vi).diagnostics,e);y&&i.apply(t,y.from,y.to)},{name:d}=i,h=s[a]?d.indexOf(s[a]):-1,m=h<0?d:[d.slice(0,h),sr("u",d.slice(h,h+1)),d.slice(h+1)],g=i.markClass?" "+i.markClass:"";return sr("button",{type:"button",class:"cm-diagnosticAction"+g,onclick:c,onmousedown:c,"aria-label":` Action: ${d}${h<0?"":` (access key "${s[a]})"`}.`},m)}),e.source&&sr("div",{class:"cm-diagnosticSource"},e.source))}class Nfe extends Ho{constructor(e){super(),this.sev=e}eq(e){return e.sev==this.sev}toDOM(){return sr("span",{class:"cm-lintPoint cm-lintPoint-"+this.sev})}}class G_{constructor(e,n){this.diagnostic=n,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=hH(e,n,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class rp{constructor(e){this.view=e,this.items=[];let n=s=>{if(s.keyCode==27)U_(this.view),this.view.focus();else if(s.keyCode==38||s.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(s.keyCode==40||s.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(s.keyCode==36)this.moveSelection(0);else if(s.keyCode==35)this.moveSelection(this.items.length-1);else if(s.keyCode==13)this.view.focus();else if(s.keyCode>=65&&s.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:i}=this.items[this.selectedIndex],a=dH(i.actions);for(let l=0;l{for(let i=0;iU_(this.view)},"×")),this.update()}get selectedIndex(){let e=this.view.state.field(Vi).selected;if(!e)return-1;for(let n=0;n{for(let h of d.diagnostics){if(a.has(h))continue;a.add(h);let m=-1,g;for(let x=r;xr&&(this.items.splice(r,m-r),s=!0)),n&&g.diagnostic==n.diagnostic?g.dom.hasAttribute("aria-selected")||(g.dom.setAttribute("aria-selected","true"),i=g):g.dom.hasAttribute("aria-selected")&&g.dom.removeAttribute("aria-selected"),r++}});r({sel:i.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:l,panel:c})=>{let d=c.height/this.list.offsetHeight;l.topc.bottom&&(this.list.scrollTop+=(l.bottom-c.bottom)/d)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),s&&this.sync()}sync(){let e=this.list.firstChild;function n(){let r=e;e=r.nextSibling,r.remove()}for(let r of this.items)if(r.dom.parentNode==this.list){for(;e!=r.dom;)n();e=r.dom.nextSibling}else this.list.insertBefore(r.dom,e);for(;e;)n()}moveSelection(e){if(this.selectedIndex<0)return;let n=this.view.state.field(Vi),r=of(n.diagnostics,this.items[e].diagnostic);r&&this.view.dispatch({selection:{anchor:r.from,head:r.to},scrollIntoView:!0,effects:uH.of(r)})}static open(e){return new rp(e)}}function Cfe(t,e='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,${encodeURIComponent(t)}')`}function w1(t){return Cfe(``,'width="6" height="3"')}const Tfe=Ze.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnostic-hint":{borderLeft:"5px solid #66d"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px",cursor:"pointer"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:w1("#d11")},".cm-lintRange-warning":{backgroundImage:w1("orange")},".cm-lintRange-info":{backgroundImage:w1("#999")},".cm-lintRange-hint":{backgroundImage:w1("#66d")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-lintPoint-hint":{"&:after":{borderBottomColor:"#66d"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}}});function Efe(t){return t=="error"?4:t=="warning"?3:t=="info"?2:1}function _fe(t){let e="hint",n=1;for(let r of t){let s=Efe(r.severity);s>n&&(n=s,e=r.severity)}return e}const Afe=[Vi,Ze.decorations.compute([Vi],t=>{let{selected:e,panel:n}=t.field(Vi);return!e||!n||e.from==e.to?kt.none:kt.set([bfe.range(e.from,e.to)])}),hce(wfe,{hideOn:vfe}),Tfe];var X_=function(e){e===void 0&&(e={});var{crosshairCursor:n=!1}=e,r=[];e.closeBracketsKeymap!==!1&&(r=r.concat(cfe)),e.defaultKeymap!==!1&&(r=r.concat(Ude)),e.searchKeymap!==!1&&(r=r.concat(vhe)),e.historyKeymap!==!1&&(r=r.concat(Jue)),e.foldKeymap!==!1&&(r=r.concat(cue)),e.completionKeymap!==!1&&(r=r.concat(lH)),e.lintKeymap!==!1&&(r=r.concat(jfe));var s=[];return e.lineNumbers!==!1&&s.push(kce()),e.highlightActiveLineGutter!==!1&&s.push(Nce()),e.highlightSpecialChars!==!1&&s.push(qle()),e.history!==!1&&s.push(Que()),e.foldGutter!==!1&&s.push(fue()),e.drawSelection!==!1&&s.push(_le()),e.dropCursor!==!1&&s.push(Ple()),e.allowMultipleSelections!==!1&&s.push(wn.allowMultipleSelections.of(!0)),e.indentOnInput!==!1&&s.push(eue()),e.syntaxHighlighting!==!1&&s.push(Jq(xue,{fallback:!0})),e.bracketMatching!==!1&&s.push(Oue()),e.closeBrackets!==!1&&s.push(ife()),e.autocompletion!==!1&&s.push(gfe()),e.rectangularSelection!==!1&&s.push(tce()),n!==!1&&s.push(sce()),e.highlightActiveLine!==!1&&s.push(Wle()),e.highlightSelectionMatches!==!1&&s.push(Jde()),e.tabSize&&typeof e.tabSize=="number"&&s.push(Wp.of(" ".repeat(e.tabSize))),s.concat([Vp.of(r.flat())]).filter(Boolean)};const Mfe="#e5c07b",Y_="#e06c75",Rfe="#56b6c2",Dfe="#ffffff",pv="#abb2bf",fO="#7d8799",Pfe="#61afef",zfe="#98c379",K_="#d19a66",Ife="#c678dd",Lfe="#21252b",Z_="#2c313a",J_="#282c34",iS="#353a42",Bfe="#3E4451",eA="#528bff",Ffe=Ze.theme({"&":{color:pv,backgroundColor:J_},".cm-content":{caretColor:eA},".cm-cursor, .cm-dropCursor":{borderLeftColor:eA},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:Bfe},".cm-panels":{backgroundColor:Lfe,color:pv},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:J_,color:fO,border:"none"},".cm-activeLineGutter":{backgroundColor:Z_},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:iS},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:iS,borderBottomColor:iS},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Z_,color:pv}}},{dark:!0}),qfe=Xp.define([{tag:ve.keyword,color:Ife},{tag:[ve.name,ve.deleted,ve.character,ve.propertyName,ve.macroName],color:Y_},{tag:[ve.function(ve.variableName),ve.labelName],color:Pfe},{tag:[ve.color,ve.constant(ve.name),ve.standard(ve.name)],color:K_},{tag:[ve.definition(ve.name),ve.separator],color:pv},{tag:[ve.typeName,ve.className,ve.number,ve.changed,ve.annotation,ve.modifier,ve.self,ve.namespace],color:Mfe},{tag:[ve.operator,ve.operatorKeyword,ve.url,ve.escape,ve.regexp,ve.link,ve.special(ve.string)],color:Rfe},{tag:[ve.meta,ve.comment],color:fO},{tag:ve.strong,fontWeight:"bold"},{tag:ve.emphasis,fontStyle:"italic"},{tag:ve.strikethrough,textDecoration:"line-through"},{tag:ve.link,color:fO,textDecoration:"underline"},{tag:ve.heading,fontWeight:"bold",color:Y_},{tag:[ve.atom,ve.bool,ve.special(ve.variableName)],color:K_},{tag:[ve.processingInstruction,ve.string,ve.inserted],color:zfe},{tag:ve.invalid,color:Dfe}]),fH=[Ffe,Jq(qfe)];var $fe=Ze.theme({"&":{backgroundColor:"#fff"}},{dark:!1}),Hfe=function(e){e===void 0&&(e={});var{indentWithTab:n=!0,editable:r=!0,readOnly:s=!1,theme:i="light",placeholder:a="",basicSetup:l=!0}=e,c=[];switch(n&&c.unshift(Vp.of([Wde])),l&&(typeof l=="boolean"?c.unshift(X_()):c.unshift(X_(l))),a&&c.unshift(Kle(a)),i){case"light":c.push($fe);break;case"dark":c.push(fH);break;case"none":break;default:c.push(i);break}return r===!1&&c.push(Ze.editable.of(!1)),s&&c.push(wn.readOnly.of(!0)),[...c]},Qfe=t=>({line:t.state.doc.lineAt(t.state.selection.main.from),lineCount:t.state.doc.lines,lineBreak:t.state.lineBreak,length:t.state.doc.length,readOnly:t.state.readOnly,tabSize:t.state.tabSize,selection:t.state.selection,selectionAsSingle:t.state.selection.asSingle().main,ranges:t.state.selection.ranges,selectionCode:t.state.sliceDoc(t.state.selection.main.from,t.state.selection.main.to),selections:t.state.selection.ranges.map(e=>t.state.sliceDoc(e.from,e.to)),selectedText:t.state.selection.ranges.some(e=>!e.empty)});class Vfe{constructor(e,n){this.timeLeftMS=void 0,this.timeoutMS=void 0,this.isCancelled=!1,this.isTimeExhausted=!1,this.callbacks=[],this.timeLeftMS=n,this.timeoutMS=n,this.callbacks.push(e)}tick(){if(!this.isCancelled&&!this.isTimeExhausted&&(this.timeLeftMS--,this.timeLeftMS<=0)){this.isTimeExhausted=!0;var e=this.callbacks.slice();this.callbacks.length=0,e.forEach(n=>{try{n()}catch(r){console.error("TimeoutLatch callback error:",r)}})}}cancel(){this.isCancelled=!0,this.callbacks.length=0}reset(){this.timeLeftMS=this.timeoutMS,this.isCancelled=!1,this.isTimeExhausted=!1}get isDone(){return this.isCancelled||this.isTimeExhausted}}class tA{constructor(){this.interval=null,this.latches=new Set}add(e){this.latches.add(e),this.start()}remove(e){this.latches.delete(e),this.latches.size===0&&this.stop()}start(){this.interval===null&&(this.interval=setInterval(()=>{this.latches.forEach(e=>{e.tick(),e.isDone&&this.remove(e)})},1))}stop(){this.interval!==null&&(clearInterval(this.interval),this.interval=null)}}var aS=null,Ufe=()=>typeof window>"u"?new tA:(aS||(aS=new tA),aS),nA=qo.define(),Wfe=200,Gfe=[];function Xfe(t){var{value:e,selection:n,onChange:r,onStatistics:s,onCreateEditor:i,onUpdate:a,extensions:l=Gfe,autoFocus:c,theme:d="light",height:h=null,minHeight:m=null,maxHeight:g=null,width:x=null,minWidth:y=null,maxWidth:w=null,placeholder:S="",editable:k=!0,readOnly:j=!1,indentWithTab:N=!0,basicSetup:T=!0,root:E,initialState:_}=t,[A,L]=b.useState(),[P,B]=b.useState(),[$,U]=b.useState(),te=b.useState(()=>({current:null}))[0],z=b.useState(()=>({current:null}))[0],Q=Ze.theme({"&":{height:h,minHeight:m,maxHeight:g,width:x,minWidth:y,maxWidth:w},"& .cm-scroller":{height:"100% !important"}}),F=Ze.updateListener.of(X=>{if(X.docChanged&&typeof r=="function"&&!X.transactions.some(G=>G.annotation(nA))){te.current?te.current.reset():(te.current=new Vfe(()=>{if(z.current){var G=z.current;z.current=null,G()}te.current=null},Wfe),Ufe().add(te.current));var R=X.state.doc,ie=R.toString();r(ie,X)}s&&s(Qfe(X))}),Y=Hfe({theme:d,editable:k,readOnly:j,placeholder:S,indentWithTab:N,basicSetup:T}),J=[F,Q,...Y];return a&&typeof a=="function"&&J.push(Ze.updateListener.of(a)),J=J.concat(l),b.useLayoutEffect(()=>{if(A&&!$){var X={doc:e,selection:n,extensions:J},R=_?wn.fromJSON(_.json,X,_.fields):wn.create(X);if(U(R),!P){var ie=new Ze({state:R,parent:A,root:E});B(ie),i&&i(ie,R)}}return()=>{P&&(U(void 0),B(void 0))}},[A,$]),b.useEffect(()=>{t.container&&L(t.container)},[t.container]),b.useEffect(()=>()=>{P&&(P.destroy(),B(void 0)),te.current&&(te.current.cancel(),te.current=null)},[P]),b.useEffect(()=>{c&&P&&P.focus()},[c,P]),b.useEffect(()=>{P&&P.dispatch({effects:Ft.reconfigure.of(J)})},[d,l,h,m,g,x,y,w,S,k,j,N,T,r,a]),b.useEffect(()=>{if(e!==void 0){var X=P?P.state.doc.toString():"";if(P&&e!==X){var R=te.current&&!te.current.isDone,ie=()=>{P&&e!==P.state.doc.toString()&&P.dispatch({changes:{from:0,to:P.state.doc.toString().length,insert:e||""},annotations:[nA.of(!0)]})};R?z.current=ie:ie()}}},[e,P]),{state:$,setState:U,view:P,setView:B,container:A,setContainer:L}}var Yfe=["className","value","selection","extensions","onChange","onStatistics","onCreateEditor","onUpdate","autoFocus","theme","height","minHeight","maxHeight","width","minWidth","maxWidth","basicSetup","placeholder","indentWithTab","editable","readOnly","root","initialState"],mH=b.forwardRef((t,e)=>{var{className:n,value:r="",selection:s,extensions:i=[],onChange:a,onStatistics:l,onCreateEditor:c,onUpdate:d,autoFocus:h,theme:m="light",height:g,minHeight:x,maxHeight:y,width:w,minWidth:S,maxWidth:k,basicSetup:j,placeholder:N,indentWithTab:T,editable:E,readOnly:_,root:A,initialState:L}=t,P=RJ(t,Yfe),B=b.useRef(null),{state:$,view:U,container:te,setContainer:z}=Xfe({root:A,value:r,autoFocus:h,theme:m,height:g,minHeight:x,maxHeight:y,width:w,minWidth:S,maxWidth:k,basicSetup:j,placeholder:N,indentWithTab:T,editable:E,readOnly:_,selection:s,onChange:a,onStatistics:l,onCreateEditor:c,onUpdate:d,extensions:i,initialState:L});b.useImperativeHandle(e,()=>({editor:B.current,state:$,view:U}),[B,te,$,U]);var Q=b.useCallback(Y=>{B.current=Y,z(Y)},[z]);if(typeof r!="string")throw new Error("value must be typeof string but got "+typeof r);var F=typeof m=="string"?"cm-theme-"+m:"cm-theme";return o.jsx("div",DJ({ref:Q,className:""+F+(n?" "+n:"")},P))});mH.displayName="CodeMirror";var rA={};class ly{constructor(e,n,r,s,i,a,l,c,d,h=0,m){this.p=e,this.stack=n,this.state=r,this.reducePos=s,this.pos=i,this.score=a,this.buffer=l,this.bufferBase=c,this.curContext=d,this.lookAhead=h,this.parent=m}toString(){return`[${this.stack.filter((e,n)=>n%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,n,r=0){let s=e.parser.context;return new ly(e,[],n,r,r,0,[],0,s?new sA(s,s.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,n){this.stack.push(this.state,n,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var n;let r=e>>19,s=e&65535,{parser:i}=this.p,a=this.reducePos=2e3&&!(!((n=this.p.parser.nodeSet.types[s])===null||n===void 0)&&n.isAnonymous)&&(d==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=h):this.p.lastBigReductionSizec;)this.stack.pop();this.reduceContext(s,d)}storeNode(e,n,r,s=4,i=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]0&&a.buffer[l-4]==0&&a.buffer[l-1]>-1){if(n==r)return;if(a.buffer[l-2]>=n){a.buffer[l-2]=r;return}}}if(!i||this.pos==r)this.buffer.push(e,n,r,s);else{let a=this.buffer.length;if(a>0&&(this.buffer[a-4]!=0||this.buffer[a-1]<0)){let l=!1;for(let c=a;c>0&&this.buffer[c-2]>r;c-=4)if(this.buffer[c-1]>=0){l=!0;break}if(l)for(;a>0&&this.buffer[a-2]>r;)this.buffer[a]=this.buffer[a-4],this.buffer[a+1]=this.buffer[a-3],this.buffer[a+2]=this.buffer[a-2],this.buffer[a+3]=this.buffer[a-1],a-=4,s>4&&(s-=4)}this.buffer[a]=e,this.buffer[a+1]=n,this.buffer[a+2]=r,this.buffer[a+3]=s}}shift(e,n,r,s){if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let i=e,{parser:a}=this.p;(s>this.pos||n<=a.maxNode)&&(this.pos=s,a.stateFlag(i,1)||(this.reducePos=s)),this.pushState(i,r),this.shiftContext(n,r),n<=a.maxNode&&this.buffer.push(n,r,s,4)}else this.pos=s,this.shiftContext(n,r),n<=this.p.parser.maxNode&&this.buffer.push(n,r,s,4)}apply(e,n,r,s){e&65536?this.reduce(e):this.shift(e,n,r,s)}useNode(e,n){let r=this.p.reused.length-1;(r<0||this.p.reused[r]!=e)&&(this.p.reused.push(e),r++);let s=this.pos;this.reducePos=this.pos=s+e.length,this.pushState(n,s),this.buffer.push(r,s,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,n=e.buffer.length;for(;n>0&&e.buffer[n-2]>e.reducePos;)n-=4;let r=e.buffer.slice(n),s=e.bufferBase+n;for(;e&&s==e.bufferBase;)e=e.parent;return new ly(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,r,s,this.curContext,this.lookAhead,e)}recoverByDelete(e,n){let r=e<=this.p.parser.maxNode;r&&this.storeNode(e,this.pos,n,4),this.storeNode(0,this.pos,n,r?8:4),this.pos=this.reducePos=n,this.score-=190}canShift(e){for(let n=new Kfe(this);;){let r=this.p.parser.stateSlot(n.state,4)||this.p.parser.hasAction(n.state,e);if(r==0)return!1;if((r&65536)==0)return!0;n.reduce(r)}}recoverByInsert(e){if(this.stack.length>=300)return[];let n=this.p.parser.nextStates(this.state);if(n.length>8||this.stack.length>=120){let s=[];for(let i=0,a;ic&1&&l==a)||s.push(n[i],a)}n=s}let r=[];for(let s=0;s>19,s=n&65535,i=this.stack.length-r*3;if(i<0||e.getGoto(this.stack[i],s,!1)<0){let a=this.findForcedReduction();if(a==null)return!1;n=a}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(n),!0}findForcedReduction(){let{parser:e}=this.p,n=[],r=(s,i)=>{if(!n.includes(s))return n.push(s),e.allActions(s,a=>{if(!(a&393216))if(a&65536){let l=(a>>19)-i;if(l>1){let c=a&65535,d=this.stack.length-l*3;if(d>=0&&e.getGoto(this.stack[d],c,!1)>=0)return l<<19|65536|c}}else{let l=r(a,i+1);if(l!=null)return l}})};return r(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let n=0;nthis.lookAhead&&(this.emitLookAhead(),this.lookAhead=e)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}}class sA{constructor(e,n){this.tracker=e,this.context=n,this.hash=e.strict?e.hash(n):0}}class Kfe{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let n=e&65535,r=e>>19;r==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(r-1)*3;let s=this.start.p.parser.getGoto(this.stack[this.base-3],n,!0);this.state=s}}class cy{constructor(e,n,r){this.stack=e,this.pos=n,this.index=r,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,n=e.bufferBase+e.buffer.length){return new cy(e,n,n-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new cy(this.stack,this.pos,this.index)}}function S1(t,e=Uint16Array){if(typeof t!="string")return t;let n=null;for(let r=0,s=0;r=92&&a--,a>=34&&a--;let c=a-32;if(c>=46&&(c-=46,l=!0),i+=c,l)break;i*=46}n?n[s++]=i:n=new e(i)}return n}class gv{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const iA=new gv;class Zfe{constructor(e,n){this.input=e,this.ranges=n,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=iA,this.rangeIndex=0,this.pos=this.chunkPos=n[0].from,this.range=n[0],this.end=n[n.length-1].to,this.readNext()}resolveOffset(e,n){let r=this.range,s=this.rangeIndex,i=this.pos+e;for(;ir.to:i>=r.to;){if(s==this.ranges.length-1)return null;let a=this.ranges[++s];i+=a.from-r.to,r=a}return i}clipPos(e){if(e>=this.range.from&&ee)return Math.max(e,n.from);return this.end}peek(e){let n=this.chunkOff+e,r,s;if(n>=0&&n=this.chunk2Pos&&rl.to&&(this.chunk2=this.chunk2.slice(0,l.to-r)),s=this.chunk2.charCodeAt(0)}}return r>=this.token.lookAhead&&(this.token.lookAhead=r+1),s}acceptToken(e,n=0){let r=n?this.resolveOffset(n,-1):this.pos;if(r==null||r=this.chunk2Pos&&this.posthis.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,n){if(n?(this.token=n,n.start=e,n.lookAhead=e+1,n.value=n.extended=-1):this.token=iA,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e=this.chunkPos&&n<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,n-this.chunkPos);if(e>=this.chunk2Pos&&n<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,n-this.chunk2Pos);if(e>=this.range.from&&n<=this.range.to)return this.input.read(e,n);let r="";for(let s of this.ranges){if(s.from>=n)break;s.to>e&&(r+=this.input.read(Math.max(s.from,e),Math.min(s.to,n)))}return r}}class Bh{constructor(e,n){this.data=e,this.id=n}token(e,n){let{parser:r}=n.p;Jfe(this.data,e,n,this.id,r.data,r.tokenPrecTable)}}Bh.prototype.contextual=Bh.prototype.fallback=Bh.prototype.extend=!1;Bh.prototype.fallback=Bh.prototype.extend=!1;class wb{constructor(e,n={}){this.token=e,this.contextual=!!n.contextual,this.fallback=!!n.fallback,this.extend=!!n.extend}}function Jfe(t,e,n,r,s,i){let a=0,l=1<0){let y=t[x];if(c.allows(y)&&(e.token.value==-1||e.token.value==y||eme(y,e.token.value,s,i))){e.acceptToken(y);break}}let h=e.next,m=0,g=t[a+2];if(e.next<0&&g>m&&t[d+g*3-3]==65535){a=t[d+g*3-1];continue e}for(;m>1,y=d+x+(x<<1),w=t[y],S=t[y+1]||65536;if(h=S)m=x+1;else{a=t[y+2],e.advance();continue e}}break}}function aA(t,e,n){for(let r=e,s;(s=t[r])!=65535;r++)if(s==n)return r-e;return-1}function eme(t,e,n,r){let s=aA(n,r,e);return s<0||aA(n,r,t)e)&&!r.type.isError)return n<0?Math.max(0,Math.min(r.to-1,e-25)):Math.min(t.length,Math.max(r.from+1,e+25));if(n<0?r.prevSibling():r.nextSibling())break;if(!r.parent())return n<0?0:t.length}}class tme{constructor(e,n){this.fragments=e,this.nodeSet=n,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?oA(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?oA(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(ee)return this.nextStart=a,null;if(i instanceof ar){if(a==e){if(a=Math.max(this.safeFrom,e)&&(this.trees.push(i),this.start.push(a),this.index.push(0))}else this.index[n]++,this.nextStart=a+i.length}}}class nme{constructor(e,n){this.stream=n,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(r=>new gv)}getActions(e){let n=0,r=null,{parser:s}=e.p,{tokenizers:i}=s,a=s.stateSlot(e.state,3),l=e.curContext?e.curContext.hash:0,c=0;for(let d=0;dm.end+25&&(c=Math.max(m.lookAhead,c)),m.value!=0)){let g=n;if(m.extended>-1&&(n=this.addActions(e,m.extended,m.end,n)),n=this.addActions(e,m.value,m.end,n),!h.extend&&(r=m,n>g))break}}for(;this.actions.length>n;)this.actions.pop();return c&&e.setLookAhead(c),!r&&e.pos==this.stream.end&&(r=new gv,r.value=e.p.parser.eofTerm,r.start=r.end=e.pos,n=this.addActions(e,r.value,r.end,n)),this.mainToken=r,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let n=new gv,{pos:r,p:s}=e;return n.start=r,n.end=Math.min(r+1,s.stream.end),n.value=r==s.stream.end?s.parser.eofTerm:0,n}updateCachedToken(e,n,r){let s=this.stream.clipPos(r.pos);if(n.token(this.stream.reset(s,e),r),e.value>-1){let{parser:i}=r.p;for(let a=0;a=0&&r.p.parser.dialect.allows(l>>1)){(l&1)==0?e.value=l>>1:e.extended=l>>1;break}}}else e.value=0,e.end=this.stream.clipPos(s+1)}putAction(e,n,r,s){for(let i=0;ie.bufferLength*4?new tme(r,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,n=this.minStackPos,r=this.stacks=[],s,i;if(this.bigReductionCount>300&&e.length==1){let[a]=e;for(;a.forceReduce()&&a.stack.length&&a.stack[a.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let a=0;an)r.push(l);else{if(this.advanceStack(l,r,e))continue;{s||(s=[],i=[]),s.push(l);let c=this.tokens.getMainToken(l);i.push(c.value,c.end)}}break}}if(!r.length){let a=s&&ame(s);if(a)return Bi&&console.log("Finish with "+this.stackID(a)),this.stackToTree(a);if(this.parser.strict)throw Bi&&s&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+n);this.recovering||(this.recovering=5)}if(this.recovering&&s){let a=this.stoppedAt!=null&&s[0].pos>this.stoppedAt?s[0]:this.runRecovery(s,i,r);if(a)return Bi&&console.log("Force-finish "+this.stackID(a)),this.stackToTree(a.forceAll())}if(this.recovering){let a=this.recovering==1?1:this.recovering*3;if(r.length>a)for(r.sort((l,c)=>c.score-l.score);r.length>a;)r.pop();r.some(l=>l.reducePos>n)&&this.recovering--}else if(r.length>1){e:for(let a=0;a500&&d.buffer.length>500)if((l.score-d.score||l.buffer.length-d.buffer.length)>0)r.splice(c--,1);else{r.splice(a--,1);continue e}}}r.length>12&&r.splice(12,r.length-12)}this.minStackPos=r[0].pos;for(let a=1;a ":"";if(this.stoppedAt!=null&&s>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let d=e.curContext&&e.curContext.tracker.strict,h=d?e.curContext.hash:0;for(let m=this.fragments.nodeAt(s);m;){let g=this.parser.nodeSet.types[m.type.id]==m.type?i.getGoto(e.state,m.type.id):-1;if(g>-1&&m.length&&(!d||(m.prop(sn.contextHash)||0)==h))return e.useNode(m,g),Bi&&console.log(a+this.stackID(e)+` (via reuse of ${i.getName(m.type.id)})`),!0;if(!(m instanceof ar)||m.children.length==0||m.positions[0]>0)break;let x=m.children[0];if(x instanceof ar&&m.positions[0]==0)m=x;else break}}let l=i.stateSlot(e.state,4);if(l>0)return e.reduce(l),Bi&&console.log(a+this.stackID(e)+` (via always-reduce ${i.getName(l&65535)})`),!0;if(e.stack.length>=8400)for(;e.stack.length>6e3&&e.forceReduce(););let c=this.tokens.getActions(e);for(let d=0;ds?n.push(y):r.push(y)}return!1}advanceFully(e,n){let r=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>r)return lA(e,n),!0}}runRecovery(e,n,r){let s=null,i=!1;for(let a=0;a ":"";if(l.deadEnd&&(i||(i=!0,l.restart(),Bi&&console.log(h+this.stackID(l)+" (restarted)"),this.advanceFully(l,r))))continue;let m=l.split(),g=h;for(let x=0;x<10&&m.forceReduce()&&(Bi&&console.log(g+this.stackID(m)+" (via force-reduce)"),!this.advanceFully(m,r));x++)Bi&&(g=this.stackID(m)+" -> ");for(let x of l.recoverByInsert(c))Bi&&console.log(h+this.stackID(x)+" (via recover-insert)"),this.advanceFully(x,r);this.stream.end>l.pos?(d==l.pos&&(d++,c=0),l.recoverByDelete(c,d),Bi&&console.log(h+this.stackID(l)+` (via recover-delete ${this.parser.getName(c)})`),lA(l,r)):(!s||s.scoret;class ime{constructor(e){this.start=e.start,this.shift=e.shift||lS,this.reduce=e.reduce||lS,this.reuse=e.reuse||lS,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}}class sp extends g6{constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (14)`);let n=e.nodeNames.split(" ");this.minRepeatTerm=n.length;for(let l=0;le.topRules[l][1]),s=[];for(let l=0;l=0)i(h,c,l[d++]);else{let m=l[d+-h];for(let g=-h;g>0;g--)i(l[d++],c,m);d++}}}this.nodeSet=new hb(n.map((l,c)=>si.define({name:c>=this.minRepeatTerm?void 0:l,id:c,props:s[c],top:r.indexOf(c)>-1,error:c==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(c)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=Rq;let a=S1(e.tokenData);this.context=e.context,this.specializerSpecs=e.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let l=0;ltypeof l=="number"?new Bh(a,l):l),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,n,r){let s=new rme(this,e,n,r);for(let i of this.wrappers)s=i(s,e,n,r);return s}getGoto(e,n,r=!1){let s=this.goto;if(n>=s[0])return-1;for(let i=s[n+1];;){let a=s[i++],l=a&1,c=s[i++];if(l&&r)return c;for(let d=i+(a>>1);i0}validAction(e,n){return!!this.allActions(e,r=>r==n?!0:null)}allActions(e,n){let r=this.stateSlot(e,4),s=r?n(r):void 0;for(let i=this.stateSlot(e,1);s==null;i+=3){if(this.data[i]==65535)if(this.data[i+1]==1)i=Cl(this.data,i+2);else break;s=n(Cl(this.data,i+1))}return s}nextStates(e){let n=[];for(let r=this.stateSlot(e,1);;r+=3){if(this.data[r]==65535)if(this.data[r+1]==1)r=Cl(this.data,r+2);else break;if((this.data[r+2]&1)==0){let s=this.data[r+1];n.some((i,a)=>a&1&&i==s)||n.push(this.data[r],s)}}return n}configure(e){let n=Object.assign(Object.create(sp.prototype),this);if(e.props&&(n.nodeSet=this.nodeSet.extend(...e.props)),e.top){let r=this.topRules[e.top];if(!r)throw new RangeError(`Invalid top rule name ${e.top}`);n.top=r}return e.tokenizers&&(n.tokenizers=this.tokenizers.map(r=>{let s=e.tokenizers.find(i=>i.from==r);return s?s.to:r})),e.specializers&&(n.specializers=this.specializers.slice(),n.specializerSpecs=this.specializerSpecs.map((r,s)=>{let i=e.specializers.find(l=>l.from==r.external);if(!i)return r;let a=Object.assign(Object.assign({},r),{external:i.to});return n.specializers[s]=cA(a),a})),e.contextTracker&&(n.context=e.contextTracker),e.dialect&&(n.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(n.strict=e.strict),e.wrap&&(n.wrappers=n.wrappers.concat(e.wrap)),e.bufferLength!=null&&(n.bufferLength=e.bufferLength),n}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let n=this.dynamicPrecedences;return n==null?0:n[e]||0}parseDialect(e){let n=Object.keys(this.dialects),r=n.map(()=>!1);if(e)for(let i of e.split(" ")){let a=n.indexOf(i);a>=0&&(r[a]=!0)}let s=null;for(let i=0;ir)&&n.p.parser.stateFlag(n.state,2)&&(!e||e.scoret.external(n,r)<<1|e}return t.get}const ome=1,pH=194,gH=195,lme=196,uA=197,cme=198,ume=199,dme=200,hme=2,xH=3,dA=201,fme=24,mme=25,pme=49,gme=50,xme=55,vme=56,yme=57,bme=59,wme=60,Sme=61,kme=62,Ome=63,jme=65,Nme=238,Cme=71,Tme=241,Eme=242,_me=243,Ame=244,Mme=245,Rme=246,Dme=247,Pme=248,vH=72,zme=249,Ime=250,Lme=251,Bme=252,Fme=253,qme=254,$me=255,Hme=256,Qme=73,Vme=77,Ume=263,Wme=112,Gme=130,Xme=151,Yme=152,Kme=155,ud=10,ip=13,B6=32,Sb=9,F6=35,Zme=40,Jme=46,mO=123,hA=125,yH=39,bH=34,fA=92,e0e=111,t0e=120,n0e=78,r0e=117,s0e=85,i0e=new Set([mme,pme,gme,Ume,jme,Gme,vme,yme,Nme,kme,Ome,vH,Qme,Vme,wme,Sme,Xme,Yme,Kme,Wme]);function cS(t){return t==ud||t==ip}function uS(t){return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102}const a0e=new wb((t,e)=>{let n;if(t.next<0)t.acceptToken(ume);else if(e.context.flags&xv)cS(t.next)&&t.acceptToken(cme,1);else if(((n=t.peek(-1))<0||cS(n))&&e.canShift(uA)){let r=0;for(;t.next==B6||t.next==Sb;)t.advance(),r++;(t.next==ud||t.next==ip||t.next==F6)&&t.acceptToken(uA,-r)}else cS(t.next)&&t.acceptToken(lme,1)},{contextual:!0}),o0e=new wb((t,e)=>{let n=e.context;if(n.flags)return;let r=t.peek(-1);if(r==ud||r==ip){let s=0,i=0;for(;;){if(t.next==B6)s++;else if(t.next==Sb)s+=8-s%8;else break;t.advance(),i++}s!=n.indent&&t.next!=ud&&t.next!=ip&&t.next!=F6&&(s[t,e|wH])),u0e=new ime({start:l0e,reduce(t,e,n,r){return t.flags&xv&&i0e.has(e)||(e==Cme||e==vH)&&t.flags&wH?t.parent:t},shift(t,e,n,r){return e==pH?new vv(t,c0e(r.read(r.pos,n.pos)),0):e==gH?t.parent:e==fme||e==xme||e==bme||e==xH?new vv(t,0,xv):mA.has(e)?new vv(t,0,mA.get(e)|t.flags&xv):t},hash(t){return t.hash}}),d0e=new wb(t=>{for(let e=0;e<5;e++){if(t.next!="print".charCodeAt(e))return;t.advance()}if(!/\w/.test(String.fromCharCode(t.next)))for(let e=0;;e++){let n=t.peek(e);if(!(n==B6||n==Sb)){n!=Zme&&n!=Jme&&n!=ud&&n!=ip&&n!=F6&&t.acceptToken(ome);return}}}),h0e=new wb((t,e)=>{let{flags:n}=e.context,r=n&Sl?bH:yH,s=(n&kl)>0,i=!(n&Ol),a=(n&jl)>0,l=t.pos;for(;!(t.next<0);)if(a&&t.next==mO)if(t.peek(1)==mO)t.advance(2);else{if(t.pos==l){t.acceptToken(xH,1);return}break}else if(i&&t.next==fA){if(t.pos==l){t.advance();let c=t.next;c>=0&&(t.advance(),f0e(t,c)),t.acceptToken(hme);return}break}else if(t.next==fA&&!i&&t.peek(1)>-1)t.advance(2);else if(t.next==r&&(!s||t.peek(1)==r&&t.peek(2)==r)){if(t.pos==l){t.acceptToken(dA,s?3:1);return}break}else if(t.next==ud){if(s)t.advance();else if(t.pos==l){t.acceptToken(dA);return}break}else t.advance();t.pos>l&&t.acceptToken(dme)});function f0e(t,e){if(e==e0e)for(let n=0;n<2&&t.next>=48&&t.next<=55;n++)t.advance();else if(e==t0e)for(let n=0;n<2&&uS(t.next);n++)t.advance();else if(e==r0e)for(let n=0;n<4&&uS(t.next);n++)t.advance();else if(e==s0e)for(let n=0;n<8&&uS(t.next);n++)t.advance();else if(e==n0e&&t.next==mO){for(t.advance();t.next>=0&&t.next!=hA&&t.next!=yH&&t.next!=bH&&t.next!=ud;)t.advance();t.next==hA&&t.advance()}}const m0e=x6({'async "*" "**" FormatConversion FormatSpec':ve.modifier,"for while if elif else try except finally return raise break continue with pass assert await yield match case":ve.controlKeyword,"in not and or is del":ve.operatorKeyword,"from def class global nonlocal lambda":ve.definitionKeyword,import:ve.moduleKeyword,"with as print":ve.keyword,Boolean:ve.bool,None:ve.null,VariableName:ve.variableName,"CallExpression/VariableName":ve.function(ve.variableName),"FunctionDefinition/VariableName":ve.function(ve.definition(ve.variableName)),"ClassDefinition/VariableName":ve.definition(ve.className),PropertyName:ve.propertyName,"CallExpression/MemberExpression/PropertyName":ve.function(ve.propertyName),Comment:ve.lineComment,Number:ve.number,String:ve.string,FormatString:ve.special(ve.string),Escape:ve.escape,UpdateOp:ve.updateOperator,"ArithOp!":ve.arithmeticOperator,BitOp:ve.bitwiseOperator,CompareOp:ve.compareOperator,AssignOp:ve.definitionOperator,Ellipsis:ve.punctuation,At:ve.meta,"( )":ve.paren,"[ ]":ve.squareBracket,"{ }":ve.brace,".":ve.derefOperator,", ;":ve.separator}),p0e={__proto__:null,await:44,or:54,and:56,in:60,not:62,is:64,if:70,else:72,lambda:76,yield:94,from:96,async:102,for:104,None:162,True:164,False:164,del:178,pass:182,break:186,continue:190,return:194,raise:202,import:206,as:208,global:212,nonlocal:214,assert:218,type:223,elif:236,while:240,try:246,except:248,finally:250,with:254,def:258,class:268,match:279,case:285},g0e=sp.deserialize({version:14,states:"##jO`QeOOP$}OSOOO&WQtO'#HUOOQS'#Co'#CoOOQS'#Cp'#CpO'vQdO'#CnO*UQtO'#HTOOQS'#HU'#HUOOQS'#DU'#DUOOQS'#HT'#HTO*rQdO'#D_O+VQdO'#DfO+gQdO'#DjO+zOWO'#DuO,VOWO'#DvO.[QtO'#GuOOQS'#Gu'#GuO'vQdO'#GtO0ZQtO'#GtOOQS'#Eb'#EbO0rQdO'#EcOOQS'#Gs'#GsO0|QdO'#GrOOQV'#Gr'#GrO1XQdO'#FYOOQS'#G^'#G^O1^QdO'#FXOOQV'#IS'#ISOOQV'#Gq'#GqOOQV'#Fq'#FqQ`QeOOO'vQdO'#CqO1lQdO'#C}O1sQdO'#DRO2RQdO'#HYO2cQtO'#EVO'vQdO'#EWOOQS'#EY'#EYOOQS'#E['#E[OOQS'#E^'#E^O2wQdO'#E`O3_QdO'#EdO3rQdO'#EfO3zQtO'#EfO1XQdO'#EiO0rQdO'#ElO1XQdO'#EnO0rQdO'#EtO0rQdO'#EwO4VQdO'#EyO4^QdO'#FOO4iQdO'#EzO0rQdO'#FOO1XQdO'#FQO1XQdO'#FVO4nQdO'#F[P4uOdO'#GpPOOO)CBd)CBdOOQS'#Ce'#CeOOQS'#Cf'#CfOOQS'#Cg'#CgOOQS'#Ch'#ChOOQS'#Ci'#CiOOQS'#Cj'#CjOOQS'#Cl'#ClO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO5TQdO'#DoOOQS,5:Y,5:YO5hQdO'#HdOOQS,5:],5:]O5uQ!fO,5:]O5zQtO,59YO1lQdO,59bO1lQdO,59bO1lQdO,59bO8jQdO,59bO8oQdO,59bO8vQdO,59jO8}QdO'#HTO:TQdO'#HSOOQS'#HS'#HSOOQS'#D['#D[O:lQdO,59aO'vQdO,59aO:zQdO,59aOOQS,59y,59yO;PQdO,5:RO'vQdO,5:ROOQS,5:Q,5:QO;_QdO,5:QO;dQdO,5:XO'vQdO,5:XO'vQdO,5:VOOQS,5:U,5:UO;uQdO,5:UO;zQdO,5:WOOOW'#Fy'#FyOOOOQS'#Ds'#DsOOQS1G/w1G/wOOQS1G.|1G.|O!/[QtO1G.|O!/cQtO1G.|O1lQdO1G.|O!0OQdO1G/UOOQS'#DZ'#DZO0rQdO,59tOOQS1G.{1G.{O!0VQdO1G/eO!0gQdO1G/eO!0oQdO1G/fO'vQdO'#H[O!0tQdO'#H[O!0yQtO1G.{O!1ZQdO,59iO!2aQdO,5=zO!2qQdO,5=zO!2yQdO1G/mO!3OQtO1G/mOOQS1G/l1G/lO!3`QdO,5=uO!4VQdO,5=uO0rQdO1G/qO!4tQdO1G/sO!4yQtO1G/sO!5ZQtO1G/qOOQS1G/p1G/pOOQS1G/r1G/rOOOW-E9w-E9wOOQS1G/{1G/{O!5kQdO'#HxO0rQdO'#HxO!5|QdO,5>cOOOW-E9x-E9xOOQS1G/|1G/|OOQS-E9{-E9{O!6[Q#xO1G2zO!6{QtO1G2zO'vQdO,5kOOQS1G1`1G1`O!8RQdO1G1`OOQS'#DV'#DVO0rQdO,5=qOOQS,5=q,5=qO!8WQdO'#FrO!8cQdO,59oO!8kQdO1G/XO!8uQtO,5=uOOQS1G3`1G3`OOQS,5:m,5:mO!9fQdO'#GtOOQS,5jO!;ZQdO,5>jO1XQdO,5>jO!;lQdO,5>iOOQS-E:R-E:RO!;qQdO1G0lO!;|QdO1G0lO!lO!lO!hO!=VQdO,5>hO!=hQdO'#EpO0rQdO1G0tO!=sQdO1G0tO!=xQgO1G0zO!AvQgO1G0}O!EqQdO,5>oO!E{QdO,5>oO!FTQtO,5>oO0rQdO1G1PO!F_QdO1G1PO4iQdO1G1UO!!vQdO1G1WOOQV,5;a,5;aO!FdQfO,5;aO!FiQgO1G1QO!JjQdO'#GZO4iQdO1G1QO4iQdO1G1QO!JzQdO,5>pO!KXQdO,5>pO1XQdO,5>pOOQV1G1U1G1UO!KaQdO'#FSO!KrQ!fO1G1WO!KzQdO1G1WOOQV1G1]1G1]O4iQdO1G1]O!LPQdO1G1]O!LXQdO'#F^OOQV1G1b1G1bO!#ZQtO1G1bPOOO1G2v1G2vP!L^OSO1G2vOOQS,5=},5=}OOQS'#Dp'#DpO0rQdO,5=}O!LfQdO,5=|O!LyQdO,5=|OOQS1G/u1G/uO!MRQdO,5>PO!McQdO,5>PO!MkQdO,5>PO!NOQdO,5>PO!N`QdO,5>POOQS1G3j1G3jOOQS7+$h7+$hO!8kQdO7+$pO#!RQdO1G.|O#!YQdO1G.|OOQS1G/`1G/`OOQS,5<`,5<`O'vQdO,5<`OOQS7+%P7+%PO#!aQdO7+%POOQS-E9r-E9rOOQS7+%Q7+%QO#!qQdO,5=vO'vQdO,5=vOOQS7+$g7+$gO#!vQdO7+%PO##OQdO7+%QO##TQdO1G3fOOQS7+%X7+%XO##eQdO1G3fO##mQdO7+%XOOQS,5<_,5<_O'vQdO,5<_O##rQdO1G3aOOQS-E9q-E9qO#$iQdO7+%]OOQS7+%_7+%_O#$wQdO1G3aO#%fQdO7+%_O#%kQdO1G3gO#%{QdO1G3gO#&TQdO7+%]O#&YQdO,5>dO#&sQdO,5>dO#&sQdO,5>dOOQS'#Dx'#DxO#'UO&jO'#DzO#'aO`O'#HyOOOW1G3}1G3}O#'fQdO1G3}O#'nQdO1G3}O#'yQ#xO7+(fO#(jQtO1G2UP#)TQdO'#GOOOQS,5nQdO,5sQdO1G4OOOQS-E9y-E9yO#?^QdO1G4OO<[QdO'#H{OOOO'#D{'#D{OOOO'#F|'#F|O#?oO&jO,5:fOOOW,5>e,5>eOOOW7+)i7+)iO#?zQdO7+)iO#@SQdO1G2zO#@mQdO1G2zP'vQdO'#FuO0rQdO<mO#BQQdO,5>mOOQS1G0v1G0vOOQS<rO#KgQdO,5>rO#KrQdO,5>rO#K}QdO,5>qO#L`QdO,5>qOOQS1G1Y1G1YOOQS,5;p,5;pOOQV<VAN>VO$ oQdO<cAN>cO0rQdO1G1|O$!PQtO1G1|P$!ZQdO'#FvOOQS1G2R1G2RP$!hQdO'#F{O$!uQdO7+)jO$#`QdO,5>gOOOO-E9z-E9zOOOW<tO$4{QdO,5>tO1XQdO,5vO$)nQdO,5>vOOQS1G1p1G1pOOQS,5<[,5<[OOQU7+'P7+'PO$+zQdO1G/iO$)nQdO,5wO$8zQdO,5>wOOQS1G1s1G1sOOQS7+'S7+'SP$)nQdO'#GdO$9SQdO1G4bO$9^QdO1G4bO$9fQdO1G4bOOQS7+%T7+%TO$9tQdO1G1tO$:SQtO'#FaO$:ZQdO,5<}OOQS,5<},5<}O$:iQdO1G4cOOQS-E:a-E:aO$)nQdO,5<|O$:pQdO,5<|O$:uQdO7+)|OOQS-E:`-E:`O$;PQdO7+)|O$)nQdO,5S~O%cOS%^OSSOS%]PQ~OPdOVaOfoOhYOopOs!POvqO!PrO!Q{O!T!SO!U!RO!XZO!][O!h`O!r`O!s`O!t`O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#l!QO#o!TO#s!UO#u!VO#z!WO#}hO$P!XO%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~O%]!YO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%j![O%k!]O%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aO~Ok%xXl%xXm%xXn%xXo%xXp%xXs%xXz%xX{%xX!x%xX#g%xX%[%xX%_%xX%z%xXg%xX!T%xX!U%xX%{%xX!W%xX![%xX!Q%xX#[%xXt%xX!m%xX~P%SOfoOhYO!XZO!][O!h`O!r`O!s`O!t`O%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~Oz%wX{%wX#g%wX%[%wX%_%wX%z%wX~Ok!pOl!qOm!oOn!oOo!rOp!sOs!tO!x%wX~P)pOV!zOg!|Oo0cOv0qO!PrO~P'vOV#OOo0cOv0qO!W#PO~P'vOV#SOa#TOo0cOv0qO![#UO~P'vOQ#XO%`#XO%a#ZO~OQ#^OR#[O%`#^O%a#`O~OV%iX_%iXa%iXh%iXk%iXl%iXm%iXn%iXo%iXp%iXs%iXz%iX!X%iX!f%iX%j%iX%k%iX%l%iX%m%iX%n%iX%o%iX%p%iX%q%iX%r%iX%s%iXg%iX!T%iX!U%iX~O&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O{%iX!x%iX#g%iX%[%iX%_%iX%z%iX%{%iX!W%iX![%iX!Q%iX#[%iXt%iX!m%iX~P,eOz#dO{%hX!x%hX#g%hX%[%hX%_%hX%z%hX~Oo0cOv0qO~P'vO#g#gO%[#iO%_#iO~O%uWO~O!T#nO#u!VO#z!WO#}hO~OopO~P'vOV#sOa#tO%uWO{wP~OV#xOo0cOv0qO!Q#yO~P'vO{#{O!x$QO%z#|O#g!yX%[!yX%_!yX~OV#xOo0cOv0qO#g#SX%[#SX%_#SX~P'vOo0cOv0qO#g#WX%[#WX%_#WX~P'vOh$WO%uWO~O!f$YO!r$YO%uWO~OV$eO~P'vO!U$gO#s$hO#u$iO~O{$jO~OV$qO~P'vOS$sO%[$rO%_$rO%c$tO~OV$}Oa$}Og%POo0cOv0qO~P'vOo0cOv0qO{%SO~P'vO&Y%UO~Oa!bOh!iO!X!kO!f!mOVba_bakbalbambanbaobapbasbazba{ba!xba#gba%[ba%_ba%jba%kba%lba%mba%nba%oba%pba%qba%rba%sba%zbagba!Tba!Uba%{ba!Wba![ba!Qba#[batba!mba~On%ZO~Oo%ZO~P'vOo0cO~P'vOk0eOl0fOm0dOn0dOo0mOp0nOs0rOg%wX!T%wX!U%wX%{%wX!W%wX![%wX!Q%wX#[%wX!m%wX~P)pO%{%]Og%vXz%vX!T%vX!U%vX!W%vX{%vX~Og%_Oz%`O!T%dO!U%cO~Og%_O~Oz%gO!T%dO!U%cO!W&SX~O!W%kO~Oz%lO{%nO!T%dO!U%cO![%}X~O![%rO~O![%sO~OQ#XO%`#XO%a%uO~OV%wOo0cOv0qO!PrO~P'vOQ#^OR#[O%`#^O%a%zO~OV!qa_!qaa!qah!qak!qal!qam!qan!qao!qap!qas!qaz!qa{!qa!X!qa!f!qa!x!qa#g!qa%[!qa%_!qa%j!qa%k!qa%l!qa%m!qa%n!qa%o!qa%p!qa%q!qa%r!qa%s!qa%z!qag!qa!T!qa!U!qa%{!qa!W!qa![!qa!Q!qa#[!qat!qa!m!qa~P#yOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P%SOV&OOopOvqO{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P'vOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#g$zX%[$zX%_$zX~P'vO#g#gO%[&TO%_&TO~O!f&UOh&sX%[&sXz&sX#[&sX#g&sX%_&sX#Z&sXg&sX~Oh!iO%[&WO~Okealeameaneaoeapeaseazea{ea!xea#gea%[ea%_ea%zeagea!Tea!Uea%{ea!Wea![ea!Qea#[eatea!mea~P%SOsqazqa{qa#gqa%[qa%_qa%zqa~Ok!pOl!qOm!oOn!oOo!rOp!sO!xqa~PEcO%z&YOz%yX{%yX~O%uWOz%yX{%yX~Oz&]O{wX~O{&_O~Oz%lO#g%}X%[%}X%_%}Xg%}X{%}X![%}X!m%}X%z%}X~OV0lOo0cOv0qO!PrO~P'vO%z#|O#gUa%[Ua%_Ua~Oz&hO#g&PX%[&PX%_&PXn&PX~P%SOz&kO!Q&jO#g#Wa%[#Wa%_#Wa~Oz&lO#[&nO#g&rX%[&rX%_&rXg&rX~O!f$YO!r$YO#Z&qO%uWO~O#Z&qO~Oz&sO#g&tX%[&tX%_&tX~Oz&uO#g&pX%[&pX%_&pX{&pX~O!X&wO%z&xO~Oz&|On&wX~P%SOn'PO~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO%['UO~P'vOt'YO#p'WO#q'XOP#naV#naf#nah#nao#nas#nav#na!P#na!Q#na!T#na!U#na!X#na!]#na!h#na!r#na!s#na!t#na!{#na!}#na#P#na#R#na#T#na#X#na#Z#na#^#na#_#na#a#na#c#na#l#na#o#na#s#na#u#na#z#na#}#na$P#na%X#na%o#na%p#na%t#na%u#na&Z#na&[#na&]#na&^#na&_#na&`#na&a#na&b#na&c#na&d#na&e#na&f#na&g#na&h#na&i#na&j#na%Z#na%_#na~Oz'ZO#[']O{&xX~Oh'_O!X&wO~Oh!iO{$jO!X&wO~O{'eO~P%SO%['hO%_'hO~OS'iO%['hO%_'hO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%k!]O~P!#uO%kWi~P!#uOV!aO_!aOa!bOh!iO!X!kO!f!mO%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%m!_O%n!_O~P!&pO%mWi%nWi~P!&pOa!bOh!iO!X!kO!f!mOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%mWi%nWi%oWi%pWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~OV!aO_!aO%q!aO%r!aO%s!aO~P!)nOVWi_Wi%qWi%rWi%sWi~P!)nO!T%dO!U%cOg&VXz&VX~O%z'kO%{'kO~P,eOz'mOg&UX~Og'oO~Oz'pO{'rO!W&XX~Oo0cOv0qOz'pO{'sO!W&XX~P'vO!W'uO~Om!oOn!oOo!rOp!sOkjisjizji{ji!xji#gji%[ji%_ji%zji~Ol!qO~P!.aOlji~P!.aOk0eOl0fOm0dOn0dOo0mOp0nO~Ot'wO~P!/jOV'|Og'}Oo0cOv0qO~P'vOg'}Oz(OO~Og(QO~O!U(SO~Og(TOz(OO!T%dO!U%cO~P%SOk0eOl0fOm0dOn0dOo0mOp0nOgqa!Tqa!Uqa%{qa!Wqa![qa!Qqa#[qatqa!mqa~PEcOV'|Oo0cOv0qO!W&Sa~P'vOz(WO!W&Sa~O!W(XO~Oz(WO!T%dO!U%cO!W&Sa~P%SOV(]Oo0cOv0qO![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~P'vOz(^O![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~O![(aO~Oz(^O!T%dO!U%cO![%}a~P%SOz(dO!T%dO!U%cO![&Ta~P%SOz(gO{&lX![&lX!m&lX%z&lX~O{(kO![(mO!m(nO%z(jO~OV&OOopOvqO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~P'vOz(pO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~O!f&UOh&sa%[&saz&sa#[&sa#g&sa%_&sa#Z&sag&sa~O%[(uO~OV#sOa#tO%uWO~Oz&]O{wa~OopOvqO~P'vOz(^O#g%}a%[%}a%_%}ag%}a{%}a![%}a!m%}a%z%}a~P%SOz(zO#g%hX%[%hX%_%hX%z%hX~O%z#|O#gUi%[Ui%_Ui~O#g&Pa%[&Pa%_&Pan&Pa~P'vOz(}O#g&Pa%[&Pa%_&Pan&Pa~O%uWO#g&ra%[&ra%_&rag&ra~Oz)SO#g&ra%[&ra%_&rag&ra~Og)VO~OV)WOh$WO%uWO~O#Z)XO~O%uWO#g&ta%[&ta%_&ta~Oz)ZO#g&ta%[&ta%_&ta~Oo0cOv0qO#g&pa%[&pa%_&pa{&pa~P'vOz)^O#g&pa%[&pa%_&pa{&pa~OV)`Oa)`O%uWO~O%z)eO~Ot)hO#j)gOP#hiV#hif#hih#hio#his#hiv#hi!P#hi!Q#hi!T#hi!U#hi!X#hi!]#hi!h#hi!r#hi!s#hi!t#hi!{#hi!}#hi#P#hi#R#hi#T#hi#X#hi#Z#hi#^#hi#_#hi#a#hi#c#hi#l#hi#o#hi#s#hi#u#hi#z#hi#}#hi$P#hi%X#hi%o#hi%p#hi%t#hi%u#hi&Z#hi&[#hi&]#hi&^#hi&_#hi&`#hi&a#hi&b#hi&c#hi&d#hi&e#hi&f#hi&g#hi&h#hi&i#hi&j#hi%Z#hi%_#hi~Ot)iOP#kiV#kif#kih#kio#kis#kiv#ki!P#ki!Q#ki!T#ki!U#ki!X#ki!]#ki!h#ki!r#ki!s#ki!t#ki!{#ki!}#ki#P#ki#R#ki#T#ki#X#ki#Z#ki#^#ki#_#ki#a#ki#c#ki#l#ki#o#ki#s#ki#u#ki#z#ki#}#ki$P#ki%X#ki%o#ki%p#ki%t#ki%u#ki&Z#ki&[#ki&]#ki&^#ki&_#ki&`#ki&a#ki&b#ki&c#ki&d#ki&e#ki&f#ki&g#ki&h#ki&i#ki&j#ki%Z#ki%_#ki~OV)kOn&wa~P'vOz)lOn&wa~Oz)lOn&wa~P%SOn)pO~O%Y)tO~Ot)wO#p'WO#q)vOP#niV#nif#nih#nio#nis#niv#ni!P#ni!Q#ni!T#ni!U#ni!X#ni!]#ni!h#ni!r#ni!s#ni!t#ni!{#ni!}#ni#P#ni#R#ni#T#ni#X#ni#Z#ni#^#ni#_#ni#a#ni#c#ni#l#ni#o#ni#s#ni#u#ni#z#ni#}#ni$P#ni%X#ni%o#ni%p#ni%t#ni%u#ni&Z#ni&[#ni&]#ni&^#ni&_#ni&`#ni&a#ni&b#ni&c#ni&d#ni&e#ni&f#ni&g#ni&h#ni&i#ni&j#ni%Z#ni%_#ni~OV)zOo0cOv0qO{$jO~P'vOo0cOv0qO{&xa~P'vOz*OO{&xa~OV*SOa*TOg*WO%q*UO%uWO~O{$jO&{*YO~Oh'_O~Oh!iO{$jO~O%[*_O~O%[*aO%_*aO~OV$}Oa$}Oo0cOv0qOg&Ua~P'vOz*dOg&Ua~Oo0cOv0qO{*gO!W&Xa~P'vOz*hO!W&Xa~Oo0cOv0qOz*hO{*kO!W&Xa~P'vOo0cOv0qOz*hO!W&Xa~P'vOz*hO{*kO!W&Xa~Om0dOn0dOo0mOp0nOgjikjisjizji!Tji!Uji%{ji!Wji{ji![ji#gji%[ji%_ji!Qji#[jitji!mji%zji~Ol0fO~P!NkOlji~P!NkOV'|Og*pOo0cOv0qO~P'vOn*rO~Og*pOz*tO~Og*uO~OV'|Oo0cOv0qO!W&Si~P'vOz*vO!W&Si~O!W*wO~OV(]Oo0cOv0qO![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~P'vOz*zO!T%dO!U%cO![&Ti~Oz*}O![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~O![+OO~Oa+QOo0cOv0qO![&Ti~P'vOz*zO![&Ti~O![+SO~OV+UOo0cOv0qO{&la![&la!m&la%z&la~P'vOz+VO{&la![&la!m&la%z&la~O!]+YO&n+[O![!nX~O![+^O~O{(kO![+_O~O{(kO![+_O!m+`O~OV&OOopOvqO{%hq!x%hq#g%hq%[%hq%_%hq%z%hq~P'vOz$ri{$ri!x$ri#g$ri%[$ri%_$ri%z$ri~P%SOV&OOopOvqO~P'vOV&OOo0cOv0qO#g%ha%[%ha%_%ha%z%ha~P'vOz+aO#g%ha%[%ha%_%ha%z%ha~Oz$ia#g$ia%[$ia%_$ian$ia~P%SO#g&Pi%[&Pi%_&Pin&Pi~P'vOz+dO#g#Wq%[#Wq%_#Wq~O#[+eOz$va#g$va%[$va%_$vag$va~O%uWO#g&ri%[&ri%_&rig&ri~Oz+gO#g&ri%[&ri%_&rig&ri~OV+iOh$WO%uWO~O%uWO#g&ti%[&ti%_&ti~Oo0cOv0qO#g&pi%[&pi%_&pi{&pi~P'vO{#{Oz#eX!W#eX~Oz+mO!W&uX~O!W+oO~Ot+rO#j)gOP#hqV#hqf#hqh#hqo#hqs#hqv#hq!P#hq!Q#hq!T#hq!U#hq!X#hq!]#hq!h#hq!r#hq!s#hq!t#hq!{#hq!}#hq#P#hq#R#hq#T#hq#X#hq#Z#hq#^#hq#_#hq#a#hq#c#hq#l#hq#o#hq#s#hq#u#hq#z#hq#}#hq$P#hq%X#hq%o#hq%p#hq%t#hq%u#hq&Z#hq&[#hq&]#hq&^#hq&_#hq&`#hq&a#hq&b#hq&c#hq&d#hq&e#hq&f#hq&g#hq&h#hq&i#hq&j#hq%Z#hq%_#hq~On$|az$|a~P%SOV)kOn&wi~P'vOz+yOn&wi~Oz,TO{$jO#[,TO~O#q,VOP#nqV#nqf#nqh#nqo#nqs#nqv#nq!P#nq!Q#nq!T#nq!U#nq!X#nq!]#nq!h#nq!r#nq!s#nq!t#nq!{#nq!}#nq#P#nq#R#nq#T#nq#X#nq#Z#nq#^#nq#_#nq#a#nq#c#nq#l#nq#o#nq#s#nq#u#nq#z#nq#}#nq$P#nq%X#nq%o#nq%p#nq%t#nq%u#nq&Z#nq&[#nq&]#nq&^#nq&_#nq&`#nq&a#nq&b#nq&c#nq&d#nq&e#nq&f#nq&g#nq&h#nq&i#nq&j#nq%Z#nq%_#nq~O#[,WOz%Oa{%Oa~Oo0cOv0qO{&xi~P'vOz,YO{&xi~O{#{O%z,[Og&zXz&zX~O%uWOg&zXz&zX~Oz,`Og&yX~Og,bO~O%Y,eO~O!T%dO!U%cOg&Viz&Vi~OV$}Oa$}Oo0cOv0qOg&Ui~P'vO{,hOz$la!W$la~Oo0cOv0qO{,iOz$la!W$la~P'vOo0cOv0qO{*gO!W&Xi~P'vOz,lO!W&Xi~Oo0cOv0qOz,lO!W&Xi~P'vOz,lO{,oO!W&Xi~Og$hiz$hi!W$hi~P%SOV'|Oo0cOv0qO~P'vOn,qO~OV'|Og,rOo0cOv0qO~P'vOV'|Oo0cOv0qO!W&Sq~P'vOz$gi![$gi#g$gi%[$gi%_$gig$gi{$gi!m$gi%z$gi~P%SOV(]Oo0cOv0qO~P'vOa+QOo0cOv0qO![&Tq~P'vOz,sO![&Tq~O![,tO~OV(]Oo0cOv0qO![%}q#g%}q%[%}q%_%}qg%}q{%}q!m%}q%z%}q~P'vO{,uO~OV+UOo0cOv0qO{&li![&li!m&li%z&li~P'vOz,zO{&li![&li!m&li%z&li~O!]+YO&n+[O![!na~O{(kO![,}O~OV&OOo0cOv0qO#g%hi%[%hi%_%hi%z%hi~P'vOz-OO#g%hi%[%hi%_%hi%z%hi~O%uWO#g&rq%[&rq%_&rqg&rq~Oz-RO#g&rq%[&rq%_&rqg&rq~OV)`Oa)`O%uWO!W&ua~Oz-TO!W&ua~On$|iz$|i~P%SOV)kO~P'vOV)kOn&wq~P'vOt-XOP#myV#myf#myh#myo#mys#myv#my!P#my!Q#my!T#my!U#my!X#my!]#my!h#my!r#my!s#my!t#my!{#my!}#my#P#my#R#my#T#my#X#my#Z#my#^#my#_#my#a#my#c#my#l#my#o#my#s#my#u#my#z#my#}#my$P#my%X#my%o#my%p#my%t#my%u#my&Z#my&[#my&]#my&^#my&_#my&`#my&a#my&b#my&c#my&d#my&e#my&f#my&g#my&h#my&i#my&j#my%Z#my%_#my~O%Z-]O%_-]O~P`O#q-^OP#nyV#nyf#nyh#nyo#nys#nyv#ny!P#ny!Q#ny!T#ny!U#ny!X#ny!]#ny!h#ny!r#ny!s#ny!t#ny!{#ny!}#ny#P#ny#R#ny#T#ny#X#ny#Z#ny#^#ny#_#ny#a#ny#c#ny#l#ny#o#ny#s#ny#u#ny#z#ny#}#ny$P#ny%X#ny%o#ny%p#ny%t#ny%u#ny&Z#ny&[#ny&]#ny&^#ny&_#ny&`#ny&a#ny&b#ny&c#ny&d#ny&e#ny&f#ny&g#ny&h#ny&i#ny&j#ny%Z#ny%_#ny~Oz-aO{$jO#[-aO~Oo0cOv0qO{&xq~P'vOz-dO{&xq~O%z,[Og&zaz&za~O{#{Og&zaz&za~OV*SOa*TO%q*UO%uWOg&ya~Oz-hOg&ya~O$S-lO~OV$}Oa$}Oo0cOv0qO~P'vOo0cOv0qO{-mOz$li!W$li~P'vOo0cOv0qOz$li!W$li~P'vO{-mOz$li!W$li~Oo0cOv0qO{*gO~P'vOo0cOv0qO{*gO!W&Xq~P'vOz-pO!W&Xq~Oo0cOv0qOz-pO!W&Xq~P'vOs-sO!T%dO!U%cOg&Oq!W&Oq![&Oqz&Oq~P!/jOa+QOo0cOv0qO![&Ty~P'vOz$ji![$ji~P%SOa+QOo0cOv0qO~P'vOV+UOo0cOv0qO~P'vOV+UOo0cOv0qO{&lq![&lq!m&lq%z&lq~P'vO{(kO![-xO!m-yO%z-wO~OV&OOo0cOv0qO#g%hq%[%hq%_%hq%z%hq~P'vO%uWO#g&ry%[&ry%_&ryg&ry~OV)`Oa)`O%uWO!W&ui~Ot-}OP#m!RV#m!Rf#m!Rh#m!Ro#m!Rs#m!Rv#m!R!P#m!R!Q#m!R!T#m!R!U#m!R!X#m!R!]#m!R!h#m!R!r#m!R!s#m!R!t#m!R!{#m!R!}#m!R#P#m!R#R#m!R#T#m!R#X#m!R#Z#m!R#^#m!R#_#m!R#a#m!R#c#m!R#l#m!R#o#m!R#s#m!R#u#m!R#z#m!R#}#m!R$P#m!R%X#m!R%o#m!R%p#m!R%t#m!R%u#m!R&Z#m!R&[#m!R&]#m!R&^#m!R&_#m!R&`#m!R&a#m!R&b#m!R&c#m!R&d#m!R&e#m!R&f#m!R&g#m!R&h#m!R&i#m!R&j#m!R%Z#m!R%_#m!R~Oo0cOv0qO{&xy~P'vOV*SOa*TO%q*UO%uWOg&yi~O$S-lO%Z.VO%_.VO~OV.aOh._O!X.^O!].`O!h.YO!s.[O!t.[O%p.XO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O~Oo0cOv0qOz$lq!W$lq~P'vO{.fOz$lq!W$lq~Oo0cOv0qO{*gO!W&Xy~P'vOz.gO!W&Xy~Oo0cOv.kO~P'vOs-sO!T%dO!U%cOg&Oy!W&Oy![&Oyz&Oy~P!/jO{(kO![.nO~O{(kO![.nO!m.oO~OV*SOa*TO%q*UO%uWO~Oh.tO!f.rOz$TX#[$TX%j$TXg$TX~Os$TX{$TX!W$TX![$TX~P$-bO%o.vO%p.vOs$UXz$UX{$UX#[$UX%j$UX!W$UXg$UX![$UX~O!h.xO~Oz.|O#[/OO%j.yOs&|X{&|X!W&|Xg&|X~Oa/RO~P$)zOh.tOs&}Xz&}X{&}X#[&}X%j&}X!W&}Xg&}X![&}X~Os/VO{$jO~Oo0cOv0qOz$ly!W$ly~P'vOo0cOv0qO{*gO!W&X!R~P'vOz/ZO!W&X!R~Og&RXs&RX!T&RX!U&RX!W&RX![&RXz&RX~P!/jOs-sO!T%dO!U%cOg&Qa!W&Qa![&Qaz&Qa~O{(kO![/^O~O!f.rOh$[as$[az$[a{$[a#[$[a%j$[a!W$[ag$[a![$[a~O!h/eO~O%o.vO%p.vOs$Uaz$Ua{$Ua#[$Ua%j$Ua!W$Uag$Ua![$Ua~O%j.yOs$Yaz$Ya{$Ya#[$Ya!W$Yag$Ya![$Ya~Os&|a{&|a!W&|ag&|a~P$)nOz/jOs&|a{&|a!W&|ag&|a~O!W/mO~Og/mO~O{/oO~O![/pO~Oo0cOv0qO{*gO!W&X!Z~P'vO{/sO~O%z/tO~P$-bOz/uO#[/OO%j.yOg'PX~Oz/uOg'PX~Og/wO~O!h/xO~O#[/OOs%Saz%Sa{%Sa%j%Sa!W%Sag%Sa![%Sa~O#[/OO%j.yOs%Waz%Wa{%Wa!W%Wag%Wa~Os&|i{&|i!W&|ig&|i~P$)nOz/zO#[/OO%j.yO!['Oa~Og'Pa~P$)nOz0SOg'Pa~Oa0UO!['Oi~P$)zOz0WO!['Oi~Oz0WO#[/OO%j.yO!['Oi~O#[/OO%j.yOg$biz$bi~O%z0ZO~P$-bO#[/OO%j.yOg%Vaz%Va~Og'Pi~P$)nO{0^O~Oa0UO!['Oq~P$)zOz0`O!['Oq~O#[/OO%j.yOz%Ui![%Ui~Oa0UO~P$)zOa0UO!['Oy~P$)zO#[/OO%j.yOg$ciz$ci~O#[/OO%j.yOz%Uq![%Uq~Oz+aO#g%ha%[%ha%_%ha%z%ha~P%SOV&OOo0cOv0qO~P'vOn0hO~Oo0hO~P'vO{0iO~Ot0jO~P!/jO&]&Z&j&h&i&g&f&d&e&c&b&`&a&_&^&[%u~",goto:"!=j'QPPPPPP'RP'Z*s+[+t,_,y-fP.SP'Z.r.r'ZPPP'Z2[PPPPPP2[5PPP5PP7b7k=sPP=v>h>kPP'Z'ZPP>zPP'Z'ZPP'Z'Z'Z'Z'Z?O?w'ZP?zP@QDXGuGyPG|HWH['ZPPPH_Hk'RP'R'RP'RP'RP'RP'RP'R'R'RP'RPP'RPP'RP'RPHqH}IVPI^IdPI^PI^I^PPPI^PKrPK{LVL]KrPI^LfPI^PLmLsPLwM]MzNeLwLwNkNxLwLwLwLw! ^! d! g! l! o! y!!P!!]!!o!!u!#P!#V!#s!#y!$P!$Z!$a!$g!$y!%T!%Z!%a!%k!%q!%w!%}!&T!&Z!&e!&k!&u!&{!'U!'[!'k!'s!'}!(UPPPPPPPPPPP!([!(_!(e!(n!(x!)TPPPPPPPPPPPP!-u!/Z!3^!6oPP!6w!7W!7a!8Y!8P!8c!8i!8l!8o!8r!8z!9jPPPPPPPPPPPPPPPPP!9m!9q!9wP!:]!:a!:m!:v!;S!;j!;m!;p!;v!;|!_![!]Do!]!^Es!^!_FZ!_!`Gk!`!aHX!a!b%T!b!cIf!c!dJU!d!eK^!e!hJU!h!i!#f!i!tJU!t!u!,|!u!wJU!w!x!.t!x!}JU!}#O!0S#O#P&o#P#Q!0j#Q#R!1Q#R#SJU#S#T%T#T#UJU#U#VK^#V#YJU#Y#Z!#f#Z#fJU#f#g!,|#g#iJU#i#j!.t#j#oJU#o#p!1n#p#q!1s#q#r!2a#r#s!2f#s$g%T$g;'SJU;'S;=`KW<%lOJU`%YT&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T`%lP;=`<%l%To%v]&n`%c_OX%TXY%oY[%T[]%o]p%Tpq%oq#O%T#O#P&o#P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To&tX&n`OY%TYZ%oZ]%T]^%o^#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc'f[&n`O!_%T!_!`([!`#T%T#T#U(r#U#f%T#f#g(r#g#h(r#h#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(cTmR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(yT!mR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk)aV&n`&[ZOr%Trs)vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk){V&n`Or%Trs*bs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk*iT&n`&^ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To+PZS_&n`OY*xYZ%TZ]*x]^%T^#o*x#o#p+r#p#q*x#q#r+r#r;'S*x;'S;=`,^<%lO*x_+wTS_OY+rZ]+r^;'S+r;'S;=`,W<%lO+r_,ZP;=`<%l+ro,aP;=`<%l*xj,kV%rQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-XT!xY&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-oV%lQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.]V&n`&ZZOw%Twx.rx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.wV&n`Ow%Twx/^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/eT&n`&]ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/{ThZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc0cTgR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk0yXVZ&n`Oz%Tz{1f{!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk1mVaR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk2ZV%oZ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc2wTzR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To3_W%pZ&n`O!_%T!_!`-Q!`!a3w!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Td4OT&{S&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk4fX!fQ&n`O!O%T!O!P5R!P!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5WV&n`O!O%T!O!P5m!P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5tT!rZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti6[a!hX&n`O!Q%T!Q![6T![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S6T#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti7fZ&n`O{%T{|8X|}%T}!O8X!O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8^V&n`O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8z]!hX&n`O!Q%T!Q![8s![!l%T!l!m9s!m#R%T#R#S8s#S#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti9zT!hX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk:bX%qR&n`O!P%T!P!Q:}!Q!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj;UV%sQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti;ro!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!d%T!d!e?q!e!g%T!g!h7a!h!l%T!l!m9s!m!q%T!q!rA]!r!z%T!z!{Bq!{#R%T#R#S>_#S#U%T#U#V?q#V#X%T#X#Y7a#Y#^%T#^#_9s#_#c%T#c#dA]#d#l%T#l#mBq#m#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti=xV&n`O!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti>fc!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S>_#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti?vY&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti@mY!hX&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiAbX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBUX!hX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBv]&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiCv]!hX&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToDvV{_&n`O!_%T!_!`E]!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TcEdT%{R&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkEzT#gZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkFbXmR&n`O!^%T!^!_F}!_!`([!`!a([!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjGUV%mQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkGrV%zZ&n`O!_%T!_!`([!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkH`WmR&n`O!_%T!_!`([!`!aHx!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjIPV%nQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkIoV_Q#}P&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToJ_]&n`&YS%uZO!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoKZP;=`<%lJUoKge&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!tJU!t!uLx!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#gLx#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoMRa&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUkN_V&n`&`ZOr%TrsNts#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkNyV&n`Or%Trs! `s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! gT&n`&bZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! }V&n`&_ZOw%Twx!!dx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!!iV&n`Ow%Twx!#Ox#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!#VT&n`&aZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!#oe&n`&YS%uZOr%Trs!%Qsw%Twx!&px!Q%T!Q![JU![!c%T!c!tJU!t!u!(`!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#g!(`#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!%XV&n`&dZOr%Trs!%ns#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!%sV&n`Or%Trs!&Ys#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&aT&n`&fZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&wV&n`&cZOw%Twx!'^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!'cV&n`Ow%Twx!'xx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!(PT&n`&eZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!(ia&n`&YS%uZOr%Trs!)nsw%Twx!+^x!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!)uV&n`&hZOr%Trs!*[s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*aV&n`Or%Trs!*vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*}T&n`&jZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!+eV&n`&gZOw%Twx!+zx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,PV&n`Ow%Twx!,fx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,mT&n`&iZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!-Vi&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!dJU!d!eLx!e!hJU!h!i!(`!i!}JU!}#R%T#R#SJU#S#T%T#T#UJU#U#VLx#V#YJU#Y#Z!(`#Z#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUo!.}a&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!0ZT!XZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc!0qT!WR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj!1XV%kQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!1sO!]~k!1zV%jR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!2fO![~i!2mT%tX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T",tokenizers:[d0e,o0e,a0e,h0e,0,1,2,3,4],topRules:{Script:[0,5]},specialized:[{term:221,get:t=>p0e[t]||-1}],tokenPrec:7668}),pA=new Rce,SH=new Set(["Script","Body","FunctionDefinition","ClassDefinition","LambdaExpression","ForStatement","MatchClause"]);function k1(t){return(e,n,r)=>{if(r)return!1;let s=e.node.getChild("VariableName");return s&&n(s,t),!0}}const x0e={FunctionDefinition:k1("function"),ClassDefinition:k1("class"),ForStatement(t,e,n){if(n){for(let r=t.node.firstChild;r;r=r.nextSibling)if(r.name=="VariableName")e(r,"variable");else if(r.name=="in")break}},ImportStatement(t,e){var n,r;let{node:s}=t,i=((n=s.firstChild)===null||n===void 0?void 0:n.name)=="from";for(let a=s.getChild("import");a;a=a.nextSibling)a.name=="VariableName"&&((r=a.nextSibling)===null||r===void 0?void 0:r.name)!="as"&&e(a,i?"variable":"namespace")},AssignStatement(t,e){for(let n=t.node.firstChild;n;n=n.nextSibling)if(n.name=="VariableName")e(n,"variable");else if(n.name==":"||n.name=="AssignOp")break},ParamList(t,e){for(let n=null,r=t.node.firstChild;r;r=r.nextSibling)r.name=="VariableName"&&(!n||!/\*|AssignOp/.test(n.name))&&e(r,"variable"),n=r},CapturePattern:k1("variable"),AsPattern:k1("variable"),__proto__:null};function kH(t,e){let n=pA.get(e);if(n)return n;let r=[],s=!0;function i(a,l){let c=t.sliceString(a.from,a.to);r.push({label:c,type:l})}return e.cursor(hs.IncludeAnonymous).iterate(a=>{if(a.name){let l=x0e[a.name];if(l&&l(a,i,s)||!s&&SH.has(a.name))return!1;s=!1}else if(a.to-a.from>8192){for(let l of kH(t,a.node))r.push(l);return!1}}),pA.set(e,r),r}const gA=/^[\w\xa1-\uffff][\w\d\xa1-\uffff]*$/,OH=["String","FormatString","Comment","PropertyName"];function v0e(t){let e=Ss(t.state).resolveInner(t.pos,-1);if(OH.indexOf(e.name)>-1)return null;let n=e.name=="VariableName"||e.to-e.from<20&&gA.test(t.state.sliceDoc(e.from,e.to));if(!n&&!t.explicit)return null;let r=[];for(let s=e;s;s=s.parent)SH.has(s.name)&&(r=r.concat(kH(t.state.doc,s)));return{options:r,from:n?e.from:t.pos,validFor:gA}}const y0e=["__annotations__","__builtins__","__debug__","__doc__","__import__","__name__","__loader__","__package__","__spec__","False","None","True"].map(t=>({label:t,type:"constant"})).concat(["ArithmeticError","AssertionError","AttributeError","BaseException","BlockingIOError","BrokenPipeError","BufferError","BytesWarning","ChildProcessError","ConnectionAbortedError","ConnectionError","ConnectionRefusedError","ConnectionResetError","DeprecationWarning","EOFError","Ellipsis","EncodingWarning","EnvironmentError","Exception","FileExistsError","FileNotFoundError","FloatingPointError","FutureWarning","GeneratorExit","IOError","ImportError","ImportWarning","IndentationError","IndexError","InterruptedError","IsADirectoryError","KeyError","KeyboardInterrupt","LookupError","MemoryError","ModuleNotFoundError","NameError","NotADirectoryError","NotImplemented","NotImplementedError","OSError","OverflowError","PendingDeprecationWarning","PermissionError","ProcessLookupError","RecursionError","ReferenceError","ResourceWarning","RuntimeError","RuntimeWarning","StopAsyncIteration","StopIteration","SyntaxError","SyntaxWarning","SystemError","SystemExit","TabError","TimeoutError","TypeError","UnboundLocalError","UnicodeDecodeError","UnicodeEncodeError","UnicodeError","UnicodeTranslateError","UnicodeWarning","UserWarning","ValueError","Warning","ZeroDivisionError"].map(t=>({label:t,type:"type"}))).concat(["bool","bytearray","bytes","classmethod","complex","float","frozenset","int","list","map","memoryview","object","range","set","staticmethod","str","super","tuple","type"].map(t=>({label:t,type:"class"}))).concat(["abs","aiter","all","anext","any","ascii","bin","breakpoint","callable","chr","compile","delattr","dict","dir","divmod","enumerate","eval","exec","exit","filter","format","getattr","globals","hasattr","hash","help","hex","id","input","isinstance","issubclass","iter","len","license","locals","max","min","next","oct","open","ord","pow","print","property","quit","repr","reversed","round","setattr","slice","sorted","sum","vars","zip"].map(t=>({label:t,type:"function"}))),b0e=[vl("def ${name}(${params}):\n ${}",{label:"def",detail:"function",type:"keyword"}),vl("for ${name} in ${collection}:\n ${}",{label:"for",detail:"loop",type:"keyword"}),vl("while ${}:\n ${}",{label:"while",detail:"loop",type:"keyword"}),vl("try:\n ${}\nexcept ${error}:\n ${}",{label:"try",detail:"/ except block",type:"keyword"}),vl(`if \${}: -`,{label:"if",detail:"block",type:"keyword"}),xl("if ${}:\n ${}\nelse:\n ${}",{label:"if",detail:"/ else block",type:"keyword"}),xl("class ${name}:\n def __init__(self, ${params}):\n ${}",{label:"class",detail:"definition",type:"keyword"}),xl("import ${module}",{label:"import",detail:"statement",type:"keyword"}),xl("from ${module} import ${names}",{label:"from",detail:"import",type:"keyword"})],n0e=she(vH,U$(e0e.concat(t0e)));function iS(t){let{node:e,pos:n}=t,r=t.lineIndent(n,-1),s=null;for(;;){let i=e.childBefore(n);if(i)if(i.name=="Comment")n=i.from;else if(i.name=="Body"||i.name=="MatchBody")t.baseIndentFor(i)+t.unit<=r&&(s=i),e=i;else if(i.name=="MatchClause")e=i;else if(i.type.is("Statement"))e=i;else break;else break}return s}function aS(t,e){let n=t.baseIndentFor(e),r=t.lineAt(t.pos,-1),s=r.from+r.text.length;return/^\s*($|#)/.test(r.text)&&t.node.ton?null:n+t.unit}const oS=U0.define({name:"python",parser:Kme.configure({props:[lb.add({Body:t=>{var e;let n=/^\s*(#|$)/.test(t.textAfter)&&iS(t)||t.node;return(e=aS(t,n))!==null&&e!==void 0?e:t.continue()},MatchBody:t=>{var e;let n=iS(t);return(e=aS(t,n||t.node))!==null&&e!==void 0?e:t.continue()},IfStatement:t=>/^\s*(else:|elif )/.test(t.textAfter)?t.baseIndent:t.continue(),"ForStatement WhileStatement":t=>/^\s*else:/.test(t.textAfter)?t.baseIndent:t.continue(),TryStatement:t=>/^\s*(except[ :]|finally:|else:)/.test(t.textAfter)?t.baseIndent:t.continue(),MatchStatement:t=>/^\s*case /.test(t.textAfter)?t.baseIndent+t.unit:t.continue(),"TupleExpression ComprehensionExpression ParamList ArgList ParenthesizedExpression":H4({closing:")"}),"DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression":H4({closing:"}"}),"ArrayExpression ArrayComprehensionExpression":H4({closing:"]"}),MemberExpression:t=>t.baseIndent+t.unit,"String FormatString":()=>null,Script:t=>{var e;let n=iS(t);return(e=n&&aS(t,n))!==null&&e!==void 0?e:t.continue()}}),g6.add({"ArrayExpression DictionaryExpression SetExpression TupleExpression":Lq,Body:(t,e)=>({from:t.from+1,to:t.to-(t.to==e.doc.length?0:1)}),"String FormatString":(t,e)=>({from:e.doc.lineAt(t.from).to,to:t.to})})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"'''",'"""'],stringPrefixes:["f","fr","rf","r","u","b","br","rb","F","FR","RF","R","U","B","BR","RB"]},commentTokens:{line:"#"},indentOnInput:/^\s*([\}\]\)]|else:|elif |except |finally:|case\s+[^:]*:?)$/}});function r0e(){return new Pq(oS,[oS.data.of({autocomplete:Jme}),oS.data.of({autocomplete:n0e})])}const s0e=f6({String:xe.string,Number:xe.number,"True False":xe.bool,PropertyName:xe.propertyName,Null:xe.null,", :":xe.separator,"[ ]":xe.squareBracket,"{ }":xe.brace}),i0e=tp.deserialize({version:14,states:"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l",stateData:"#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O",goto:"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R",nodeNames:"⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array",maxTerm:25,nodeProps:[["isolate",-2,6,11,""],["openedBy",7,"{",14,"["],["closedBy",8,"}",15,"]"]],propSources:[s0e],skippedNodes:[0],repeatNodeCount:2,tokenData:"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~",tokenizers:[0],topRules:{JsonText:[0,1]},tokenPrec:0}),a0e=()=>t=>{try{JSON.parse(t.state.doc.toString())}catch(e){if(!(e instanceof SyntaxError))throw e;const n=o0e(e,t.state.doc);return[{from:n,message:e.message,severity:"error",to:n}]}return[]};function o0e(t,e){let n;return(n=t.message.match(/at position (\d+)/))?Math.min(+n[1],e.length):(n=t.message.match(/at line (\d+) column (\d+)/))?Math.min(e.line(+n[1]).from+ +n[2]-1,e.length):0}const l0e=U0.define({name:"json",parser:i0e.configure({props:[lb.add({Object:d_({except:/^\s*\}/}),Array:d_({except:/^\s*\]/})}),g6.add({"Object Array":Lq})]}),languageData:{closeBrackets:{brackets:["[","{",'"']},indentOnInput:/^\s*[\}\]]$/}});function c0e(){return new Pq(l0e)}const u0e={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(t,e){let n;if(!e.inString&&(n=t.match(/^('''|"""|'|")/))&&(e.stringType=n[0],e.inString=!0),t.sol()&&!e.inString&&e.inArray===0&&(e.lhs=!0),e.inString){for(;e.inString;)if(t.match(e.stringType))e.inString=!1;else if(t.peek()==="\\")t.next(),t.next();else{if(t.eol())break;t.match(/^.[^\\\"\']*/)}return e.lhs?"property":"string"}else{if(e.inArray&&t.peek()==="]")return t.next(),e.inArray--,"bracket";if(e.lhs&&t.peek()==="["&&t.skipTo("]"))return t.next(),t.peek()==="]"&&t.next(),"atom";if(t.peek()==="#")return t.skipToEnd(),"comment";if(t.eatSpace())return null;if(e.lhs&&t.eatWhile(function(r){return r!="="&&r!=" "}))return"property";if(e.lhs&&t.peek()==="=")return t.next(),e.lhs=!1,null;if(!e.lhs&&t.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!e.lhs&&(t.match("true")||t.match("false")))return"atom";if(!e.lhs&&t.peek()==="[")return e.inArray++,t.next(),"bracket";if(!e.lhs&&t.match(/^\-?\d+(?:\.\d+)?/))return"number";t.eatSpace()||t.next()}return null},languageData:{commentTokens:{line:"#"}}},d0e={python:[r0e()],json:[c0e(),a0e()],toml:[x6.define(u0e)],text:[]};function h0e({value:t,onChange:e,language:n="text",readOnly:r=!1,height:s="400px",minHeight:i,maxHeight:a,placeholder:l,theme:c="dark",className:d=""}){const[h,m]=b.useState(!1);if(b.useEffect(()=>{m(!0)},[]),!h)return o.jsx("div",{className:`rounded-md border bg-muted animate-pulse ${d}`,style:{height:s,minHeight:i,maxHeight:a}});const g=[...d0e[n]||[],Ze.lineWrapping];return r&&g.push(Ze.editable.of(!1)),o.jsx("div",{className:`rounded-md overflow-hidden border ${d}`,children:o.jsx(lH,{value:t,height:s,minHeight:i,maxHeight:a,theme:c==="dark"?oH:void 0,extensions:g,onChange:e,placeholder:l,basicSetup:{lineNumbers:!0,highlightActiveLineGutter:!0,highlightSpecialChars:!0,history:!0,foldGutter:!0,drawSelection:!0,dropCursor:!0,allowMultipleSelections:!0,indentOnInput:!0,syntaxHighlighting:!0,bracketMatching:!0,closeBrackets:!0,autocompletion:!0,rectangularSelection:!0,crosshairCursor:!0,highlightActiveLine:!0,highlightSelectionMatches:!0,closeBracketsKeymap:!0,defaultKeymap:!0,searchKeymap:!0,historyKeymap:!0,foldKeymap:!0,completionKeymap:!0,lintKeymap:!0}})})}function f0e(){const[t,e]=b.useState(!0),[n,r]=b.useState(!1),[s,i]=b.useState(!1),[a,l]=b.useState(!1),[c,d]=b.useState(!1),[h,m]=b.useState(!1),[g,x]=b.useState("visual"),[y,w]=b.useState(""),[S,k]=b.useState(!1),{toast:j}=fs(),[N,T]=b.useState(null),[E,_]=b.useState(null),[M,I]=b.useState(null),[P,L]=b.useState(null),[H,U]=b.useState(null),[ee,z]=b.useState(null),[Q,B]=b.useState(null),[X,J]=b.useState(null),[G,R]=b.useState(null),[ie,W]=b.useState(null),[q,V]=b.useState(null),[te,ne]=b.useState(null),[K,se]=b.useState(null),[re,oe]=b.useState(null),[Te,We]=b.useState(null),[Ye,Je]=b.useState(null),[Oe,Ve]=b.useState(null),[Ue,He]=b.useState(null),Ot=b.useRef(null),xt=b.useRef(!0),kn=b.useRef({}),It=b.useCallback(async()=>{try{const Fe=await tae();w(Fe),k(!1)}catch(Fe){j({variant:"destructive",title:"加载失败",description:Fe instanceof Error?Fe.message:"加载源代码失败"})}},[j]),Yt=b.useCallback(async()=>{try{e(!0);const Fe=await J9();kn.current=Fe,T(Fe.bot),_(Fe.personality);const rt=Fe.chat;rt.talk_value_rules||(rt.talk_value_rules=[]),I(rt),L(Fe.expression),U(Fe.emoji),z(Fe.memory),B(Fe.tool),J(Fe.mood),R(Fe.voice),W(Fe.lpmm_knowledge),V(Fe.keyword_reaction),ne(Fe.response_post_process),se(Fe.chinese_typo),oe(Fe.response_splitter),We(Fe.log),Je(Fe.debug),Ve(Fe.maim_message),He(Fe.telemetry),l(!1),xt.current=!1,await It()}catch(Fe){console.error("加载配置失败:",Fe),j({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}finally{e(!1)}},[j,It]);b.useEffect(()=>{Yt()},[Yt]);const _t=b.useCallback(async(Fe,rt)=>{if(!xt.current)try{i(!0),await rae(Fe,rt),l(!1)}catch(tn){console.error(`自动保存 ${Fe} 失败:`,tn),l(!0)}finally{i(!1)}},[]),mt=b.useCallback((Fe,rt)=>{xt.current||(l(!0),Ot.current&&clearTimeout(Ot.current),Ot.current=setTimeout(()=>{_t(Fe,rt)},2e3))},[_t]);b.useEffect(()=>{N&&!xt.current&&mt("bot",N)},[N,mt]),b.useEffect(()=>{E&&!xt.current&&mt("personality",E)},[E,mt]),b.useEffect(()=>{M&&!xt.current&&mt("chat",M)},[M,mt]),b.useEffect(()=>{P&&!xt.current&&mt("expression",P)},[P,mt]),b.useEffect(()=>{H&&!xt.current&&mt("emoji",H)},[H,mt]),b.useEffect(()=>{ee&&!xt.current&&mt("memory",ee)},[ee,mt]),b.useEffect(()=>{Q&&!xt.current&&mt("tool",Q)},[Q,mt]),b.useEffect(()=>{X&&!xt.current&&mt("mood",X)},[X,mt]),b.useEffect(()=>{G&&!xt.current&&mt("voice",G)},[G,mt]),b.useEffect(()=>{ie&&!xt.current&&mt("lpmm_knowledge",ie)},[ie,mt]),b.useEffect(()=>{q&&!xt.current&&mt("keyword_reaction",q)},[q,mt]),b.useEffect(()=>{te&&!xt.current&&mt("response_post_process",te)},[te,mt]),b.useEffect(()=>{K&&!xt.current&&mt("chinese_typo",K)},[K,mt]),b.useEffect(()=>{re&&!xt.current&&mt("response_splitter",re)},[re,mt]),b.useEffect(()=>{Te&&!xt.current&&mt("log",Te)},[Te,mt]),b.useEffect(()=>{Ye&&!xt.current&&mt("debug",Ye)},[Ye,mt]),b.useEffect(()=>{Oe&&!xt.current&&mt("maim_message",Oe)},[Oe,mt]),b.useEffect(()=>{Ue&&!xt.current&&mt("telemetry",Ue)},[Ue,mt]);const Ne=async()=>{try{r(!0),await nae(y),l(!1),k(!1),j({title:"保存成功",description:"配置已保存"}),await Yt()}catch(Fe){k(!0),j({variant:"destructive",title:"保存失败",description:Fe instanceof Error?Fe.message:"保存配置失败"})}finally{r(!1)}},Ie=async Fe=>{if(a){j({variant:"destructive",title:"切换失败",description:"请先保存当前更改"});return}if(x(Fe),Fe==="source")await It();else try{const rt=await J9();kn.current=rt,T(rt.bot),_(rt.personality);const tn=rt.chat;tn.talk_value_rules||(tn.talk_value_rules=[]),I(tn),L(rt.expression),U(rt.emoji),z(rt.memory),B(rt.tool),J(rt.mood),R(rt.voice),W(rt.lpmm_knowledge),V(rt.keyword_reaction),ne(rt.response_post_process),se(rt.chinese_typo),oe(rt.response_splitter),We(rt.log),Je(rt.debug),Ve(rt.maim_message),He(rt.telemetry),l(!1)}catch(rt){console.error("加载配置失败:",rt),j({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}},st=async()=>{try{r(!0),Ot.current&&clearTimeout(Ot.current);const Fe={...kn.current,bot:N,personality:E,chat:M,expression:P,emoji:H,memory:ee,tool:Q,mood:X,voice:G,lpmm_knowledge:ie,keyword_reaction:q,response_post_process:te,chinese_typo:K,response_splitter:re,log:Te,debug:Ye,maim_message:Oe,telemetry:Ue};await eE(Fe),l(!1),j({title:"保存成功",description:"麦麦主程序配置已保存"})}catch(Fe){console.error("保存配置失败:",Fe),j({title:"保存失败",description:Fe.message,variant:"destructive"})}finally{r(!1)}},yt=async()=>{try{d(!0),Jy().catch(()=>{}),m(!0)}catch(Fe){console.error("重启失败:",Fe),m(!1),j({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),d(!1)}},Pt=async()=>{try{r(!0),Ot.current&&clearTimeout(Ot.current);const Fe={...kn.current,bot:N,personality:E,chat:M,expression:P,emoji:H,memory:ee,tool:Q,mood:X,voice:G,lpmm_knowledge:ie,keyword_reaction:q,response_post_process:te,chinese_typo:K,response_splitter:re,log:Te,debug:Ye,maim_message:Oe,telemetry:Ue};await eE(Fe),l(!1),j({title:"保存成功",description:"配置已保存,即将重启麦麦..."}),await new Promise(rt=>setTimeout(rt,500)),await yt()}catch(Fe){console.error("保存失败:",Fe),j({title:"保存失败",description:Fe.message,variant:"destructive"})}finally{r(!1)}},At=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},zn=()=>{m(!1),d(!1),j({title:"重启失败",description:"服务器未能在预期时间内恢复,请手动检查",variant:"destructive"})};return t?o.jsx(wn,{className:"h-full",children:o.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:o.jsx("div",{className:"flex items-center justify-center h-64",children:o.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):o.jsx(wn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦主程序配置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的核心功能和行为设置"})]}),o.jsxs("div",{className:"flex gap-2 w-full sm:w-auto items-center",children:[o.jsx(ja,{value:g,onValueChange:Fe=>Ie(Fe),className:"w-auto",children:o.jsxs(Wi,{className:"h-9",children:[o.jsxs(Lt,{value:"visual",className:"text-xs sm:text-sm px-2 sm:px-3",children:[o.jsx(Aee,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"可视化"]}),o.jsxs(Lt,{value:"source",className:"text-xs sm:text-sm px-2 sm:px-3",children:[o.jsx(Ree,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"源代码"]})]})}),o.jsxs(he,{onClick:g==="visual"?st:Ne,disabled:n||s||!a||c,size:"sm",variant:"outline",className:"flex-1 sm:flex-none",children:[o.jsx($y,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),n?"保存中...":s?"自动保存中...":a?"保存配置":"已保存"]}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs(he,{disabled:n||s||c,size:"sm",className:"flex-1 sm:flex-none",children:[o.jsx(Cj,{className:"mr-2 h-4 w-4"}),c?"重启中...":a?"保存并重启":"重启麦麦"]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认重启麦麦?"}),o.jsx(_n,{className:"space-y-3",asChild:!0,children:o.jsxs("div",{children:[o.jsx("p",{children:a?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),o.jsxs(ga,{className:"border-yellow-500/50 bg-yellow-500/10",children:[o.jsx(Oa,{className:"h-4 w-4 text-yellow-600"}),o.jsxs(xa,{className:"text-yellow-900 dark:text-yellow-100",children:[o.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",o.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",o.jsxs(Dr,{children:[o.jsx(Sf,{asChild:!0,children:o.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[o.jsx(qy,{className:"h-3 w-3"}),"如何结束程序?"]})}),o.jsxs(Sr,{className:"max-w-2xl",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"如何结束使用重启功能后的麦麦程序"}),o.jsx(ss,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),o.jsxs(ja,{defaultValue:"windows",className:"w-full",children:[o.jsxs(Wi,{className:"grid w-full grid-cols-3",children:[o.jsx(Lt,{value:"windows",children:"Windows"}),o.jsx(Lt,{value:"macos",children:"macOS"}),o.jsx(Lt,{value:"linux",children:"Linux"})]}),o.jsxs(un,{value:"windows",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),o.jsxs("li",{children:['在"进程"或"详细信息"标签页中找到 ',o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),o.jsx("li",{children:'右键点击并选择"结束任务"'})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),o.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),o.jsxs(un,{value:"macos",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"}),' 打开 Spotlight,搜索"活动监视器"']}),o.jsxs("li",{children:["在进程列表中找到 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),o.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]})]}),o.jsxs(un,{value:"linux",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),o.jsx("p",{children:'pkill -9 -f "bot.py"'}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["在终端输入 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),o.jsx(bs,{children:o.jsx(Qj,{asChild:!0,children:o.jsx(he,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:a?Pt:yt,children:a?"保存并重启":"确认重启"})]})]})]})]})]}),o.jsxs(ga,{children:[o.jsx(Oa,{className:"h-4 w-4"}),o.jsxs(xa,{children:["配置更新后需要",o.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),g==="source"&&o.jsxs("div",{className:"space-y-4",children:[o.jsxs(ga,{children:[o.jsx(Oa,{className:"h-4 w-4"}),o.jsxs(xa,{children:[o.jsx("strong",{children:"源代码模式(高级功能):"}),"直接编辑 TOML 配置文件。此功能仅适用于熟悉 TOML 语法的高级用户。保存时会在后端验证格式,只有格式完全正确才能保存。",S&&o.jsx("span",{className:"text-destructive font-semibold ml-2",children:"⚠️ 上次保存失败,请检查 TOML 格式"})]})]}),o.jsx(h0e,{value:y,onChange:Fe=>{w(Fe),l(!0),S&&k(!1)},language:"toml",theme:"dark",height:"calc(100vh - 280px)",minHeight:"500px",placeholder:"TOML 配置内容"})]}),g==="visual"&&o.jsx(o.Fragment,{children:o.jsxs(ja,{defaultValue:"bot",className:"w-full",children:[o.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:o.jsxs(Wi,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5 lg:grid-cols-10",children:[o.jsx(Lt,{value:"bot",className:"flex-shrink-0",children:"基本信息"}),o.jsx(Lt,{value:"personality",className:"flex-shrink-0",children:"人格"}),o.jsx(Lt,{value:"chat",className:"flex-shrink-0",children:"聊天"}),o.jsx(Lt,{value:"expression",className:"flex-shrink-0",children:"表达"}),o.jsx(Lt,{value:"features",className:"flex-shrink-0",children:"功能"}),o.jsx(Lt,{value:"processing",className:"flex-shrink-0",children:"处理"}),o.jsx(Lt,{value:"mood",className:"flex-shrink-0",children:"情绪"}),o.jsx(Lt,{value:"voice",className:"flex-shrink-0",children:"语音"}),o.jsx(Lt,{value:"lpmm",className:"flex-shrink-0",children:"知识库"}),o.jsx(Lt,{value:"other",className:"flex-shrink-0",children:"其他"})]})}),o.jsx(un,{value:"bot",className:"space-y-4",children:N&&o.jsx(m0e,{config:N,onChange:T})}),o.jsx(un,{value:"personality",className:"space-y-4",children:E&&o.jsx(p0e,{config:E,onChange:_})}),o.jsx(un,{value:"chat",className:"space-y-4",children:M&&o.jsx(g0e,{config:M,onChange:I})}),o.jsx(un,{value:"expression",className:"space-y-4",children:P&&o.jsx(v0e,{config:P,onChange:L})}),o.jsx(un,{value:"features",className:"space-y-4",children:H&&ee&&Q&&o.jsx(y0e,{emojiConfig:H,memoryConfig:ee,toolConfig:Q,onEmojiChange:U,onMemoryChange:z,onToolChange:B})}),o.jsx(un,{value:"processing",className:"space-y-4",children:q&&te&&K&&re&&o.jsx(b0e,{keywordReactionConfig:q,responsePostProcessConfig:te,chineseTypoConfig:K,responseSplitterConfig:re,onKeywordReactionChange:V,onResponsePostProcessChange:ne,onChineseTypoChange:se,onResponseSplitterChange:oe})}),o.jsx(un,{value:"mood",className:"space-y-4",children:X&&o.jsx(w0e,{config:X,onChange:J})}),o.jsx(un,{value:"voice",className:"space-y-4",children:G&&o.jsx(S0e,{config:G,onChange:R})}),o.jsx(un,{value:"lpmm",className:"space-y-4",children:ie&&o.jsx(k0e,{config:ie,onChange:W})}),o.jsxs(un,{value:"other",className:"space-y-4",children:[Te&&o.jsx(O0e,{config:Te,onChange:We}),Ye&&o.jsx(j0e,{config:Ye,onChange:Je}),Oe&&o.jsx(N0e,{config:Oe,onChange:Ve}),Ue&&o.jsx(C0e,{config:Ue,onChange:He})]})]})}),h&&o.jsx(Wj,{onRestartComplete:At,onRestartFailed:zn})]})})}function m0e({config:t,onChange:e}){const n=()=>{e({...t,platforms:[...t.platforms,""]})},r=c=>{e({...t,platforms:t.platforms.filter((d,h)=>h!==c)})},s=(c,d)=>{const h=[...t.platforms];h[c]=d,e({...t,platforms:h})},i=()=>{e({...t,alias_names:[...t.alias_names,""]})},a=c=>{e({...t,alias_names:t.alias_names.filter((d,h)=>h!==c)})},l=(c,d)=>{const h=[...t.alias_names];h[c]=d,e({...t,alias_names:h})};return o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"基本信息"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"platform",children:"平台"}),o.jsx(ze,{id:"platform",value:t.platform,onChange:c=>e({...t,platform:c.target.value}),placeholder:"qq"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"qq_account",children:"QQ账号"}),o.jsx(ze,{id:"qq_account",value:t.qq_account,onChange:c=>e({...t,qq_account:c.target.value}),placeholder:"123456789"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"nickname",children:"昵称"}),o.jsx(ze,{id:"nickname",value:t.nickname,onChange:c=>e({...t,nickname:c.target.value}),placeholder:"麦麦"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(de,{children:"其他平台账号"}),o.jsxs(he,{onClick:n,size:"sm",variant:"outline",children:[o.jsx(zs,{className:"h-4 w-4 mr-1"}),"添加"]})]}),o.jsxs("div",{className:"space-y-2",children:[t.platforms.map((c,d)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{value:c,onChange:h=>s(d,h.target.value),placeholder:"wx:114514"}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(he,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除平台账号 "',c||"(空)",'" 吗?此操作无法撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>r(d),children:"删除"})]})]})]})]},d)),t.platforms.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无其他平台账号"})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(de,{children:"别名"}),o.jsxs(he,{onClick:i,size:"sm",variant:"outline",children:[o.jsx(zs,{className:"h-4 w-4 mr-1"}),"添加"]})]}),o.jsxs("div",{className:"space-y-2",children:[t.alias_names.map((c,d)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{value:c,onChange:h=>l(d,h.target.value),placeholder:"小麦"}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(he,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除别名 "',c||"(空)",'" 吗?此操作无法撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>a(d),children:"删除"})]})]})]})]},d)),t.alias_names.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无别名"})]})]})]})]})})}function p0e({config:t,onChange:e}){const n=()=>{e({...t,states:[...t.states,""]})},r=i=>{e({...t,states:t.states.filter((a,l)=>l!==i)})},s=(i,a)=>{const l=[...t.states];l[i]=a,e({...t,states:l})};return o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"人格设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"personality",children:"人格特质"}),o.jsx(Ar,{id:"personality",value:t.personality,onChange:i=>e({...t,personality:i.target.value}),placeholder:"描述人格特质和身份特征(建议120字以内)",rows:3}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"建议120字以内,描述人格特质和身份特征"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"reply_style",children:"表达风格"}),o.jsx(Ar,{id:"reply_style",value:t.reply_style,onChange:i=>e({...t,reply_style:i.target.value}),placeholder:"描述说话的表达风格和习惯",rows:3})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"interest",children:"兴趣"}),o.jsx(Ar,{id:"interest",value:t.interest,onChange:i=>e({...t,interest:i.target.value}),placeholder:"会影响麦麦对什么话题进行回复",rows:2})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"plan_style",children:"说话规则与行为风格"}),o.jsx(Ar,{id:"plan_style",value:t.plan_style,onChange:i=>e({...t,plan_style:i.target.value}),placeholder:"麦麦的说话规则和行为风格",rows:5})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"visual_style",children:"识图规则"}),o.jsx(Ar,{id:"visual_style",value:t.visual_style,onChange:i=>e({...t,visual_style:i.target.value}),placeholder:"识图时的处理规则",rows:3})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"private_plan_style",children:"私聊规则"}),o.jsx(Ar,{id:"private_plan_style",value:t.private_plan_style,onChange:i=>e({...t,private_plan_style:i.target.value}),placeholder:"私聊的说话规则和行为风格",rows:4})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(de,{children:"状态列表(人格多样性)"}),o.jsxs(he,{onClick:n,size:"sm",variant:"outline",children:[o.jsx(zs,{className:"h-4 w-4 mr-1"}),"添加状态"]})]}),o.jsx("div",{className:"space-y-2",children:t.states.map((i,a)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Ar,{value:i,onChange:l=>s(a,l.target.value),placeholder:"描述一个人格状态",rows:2}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(he,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsx(_n,{children:"确定要删除这个人格状态吗?此操作无法撤销。"})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>r(a),children:"删除"})]})]})]})]},a))})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"state_probability",children:"状态替换概率"}),o.jsx(ze,{id:"state_probability",type:"number",step:"0.1",min:"0",max:"1",value:t.state_probability,onChange:i=>e({...t,state_probability:parseFloat(i.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"每次构建人格时替换 personality 的概率(0.0-1.0)"})]})]})]})})}function g0e({config:t,onChange:e}){const n=()=>{e({...t,talk_value_rules:[...t.talk_value_rules,{target:"",time:"00:00-23:59",value:1}]})},r=l=>{e({...t,talk_value_rules:t.talk_value_rules.filter((c,d)=>d!==l)})},s=(l,c,d)=>{const h=[...t.talk_value_rules];h[l]={...h[l],[c]:d},e({...t,talk_value_rules:h})},i=({value:l,onChange:c})=>{const[d,h]=b.useState("00"),[m,g]=b.useState("00"),[x,y]=b.useState("23"),[w,S]=b.useState("59");b.useEffect(()=>{const j=l.split("-");if(j.length===2){const[N,T]=j,[E,_]=N.split(":"),[M,I]=T.split(":");E&&h(E.padStart(2,"0")),_&&g(_.padStart(2,"0")),M&&y(M.padStart(2,"0")),I&&S(I.padStart(2,"0"))}},[l]);const k=(j,N,T,E)=>{const _=`${j}:${N}-${T}:${E}`;c(_)};return o.jsxs(Po,{children:[o.jsx(zo,{asChild:!0,children:o.jsxs(he,{variant:"outline",className:"w-full justify-start font-mono text-sm",children:[o.jsx(_h,{className:"h-4 w-4 mr-2"}),l||"选择时间段"]})}),o.jsx(Xa,{className:"w-80",children:o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"font-medium text-sm mb-3",children:"开始时间"}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[o.jsxs("div",{children:[o.jsx(de,{className:"text-xs",children:"小时"}),o.jsxs(Vt,{value:d,onValueChange:j=>{h(j),k(j,m,x,w)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:Array.from({length:24},(j,N)=>N).map(j=>o.jsx(De,{value:j.toString().padStart(2,"0"),children:j.toString().padStart(2,"0")},j))})]})]}),o.jsxs("div",{children:[o.jsx(de,{className:"text-xs",children:"分钟"}),o.jsxs(Vt,{value:m,onValueChange:j=>{g(j),k(d,j,x,w)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:Array.from({length:60},(j,N)=>N).map(j=>o.jsx(De,{value:j.toString().padStart(2,"0"),children:j.toString().padStart(2,"0")},j))})]})]})]})]}),o.jsxs("div",{children:[o.jsx("h4",{className:"font-medium text-sm mb-3",children:"结束时间"}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[o.jsxs("div",{children:[o.jsx(de,{className:"text-xs",children:"小时"}),o.jsxs(Vt,{value:x,onValueChange:j=>{y(j),k(d,m,j,w)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:Array.from({length:24},(j,N)=>N).map(j=>o.jsx(De,{value:j.toString().padStart(2,"0"),children:j.toString().padStart(2,"0")},j))})]})]}),o.jsxs("div",{children:[o.jsx(de,{className:"text-xs",children:"分钟"}),o.jsxs(Vt,{value:w,onValueChange:j=>{S(j),k(d,m,x,j)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:Array.from({length:60},(j,N)=>N).map(j=>o.jsx(De,{value:j.toString().padStart(2,"0"),children:j.toString().padStart(2,"0")},j))})]})]})]})]})]})})]})},a=({rule:l})=>{const c=`{ target = "${l.target}", time = "${l.time}", value = ${l.value.toFixed(1)} }`;return o.jsxs(Po,{children:[o.jsx(zo,{asChild:!0,children:o.jsxs(he,{variant:"outline",size:"sm",children:[o.jsx(Ea,{className:"h-4 w-4 mr-1"}),"预览"]})}),o.jsx(Xa,{className:"w-96",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),o.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:c}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"聊天设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"talk_value",children:"聊天频率(基础值)"}),o.jsx(ze,{id:"talk_value",type:"number",step:"0.1",min:"0",max:"1",value:t.talk_value,onChange:l=>e({...t,talk_value:parseFloat(l.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"越小越沉默,范围 0-1"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"mentioned_bot_reply",checked:t.mentioned_bot_reply,onCheckedChange:l=>e({...t,mentioned_bot_reply:l})}),o.jsx(de,{htmlFor:"mentioned_bot_reply",className:"cursor-pointer",children:"启用提及必回复"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"max_context_size",children:"上下文长度"}),o.jsx(ze,{id:"max_context_size",type:"number",min:"1",value:t.max_context_size,onChange:l=>e({...t,max_context_size:parseInt(l.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"planner_smooth",children:"规划器平滑"}),o.jsx(ze,{id:"planner_smooth",type:"number",step:"1",min:"0",value:t.planner_smooth,onChange:l=>e({...t,planner_smooth:parseFloat(l.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"增大数值会减小 planner 负荷,推荐 1-5,0 为关闭"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"enable_talk_value_rules",checked:t.enable_talk_value_rules,onCheckedChange:l=>e({...t,enable_talk_value_rules:l})}),o.jsx(de,{htmlFor:"enable_talk_value_rules",className:"cursor-pointer",children:"启用动态发言频率规则"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"include_planner_reasoning",checked:t.include_planner_reasoning,onCheckedChange:l=>e({...t,include_planner_reasoning:l})}),o.jsx(de,{htmlFor:"include_planner_reasoning",className:"cursor-pointer",children:"将 planner 推理加入 replyer"})]})]})]}),t.enable_talk_value_rules&&o.jsxs("div",{className:"border-t pt-6",children:[o.jsxs("div",{className:"flex items-center justify-between mb-4",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"text-base font-semibold",children:"动态发言频率规则"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"按时段或聊天流ID调整发言频率,优先匹配具体聊天,再匹配全局规则"})]}),o.jsxs(he,{onClick:n,size:"sm",children:[o.jsx(zs,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),t.talk_value_rules&&t.talk_value_rules.length>0?o.jsx("div",{className:"space-y-4",children:t.talk_value_rules.map((l,c)=>o.jsxs("div",{className:"rounded-lg border p-4 bg-muted/50 space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium text-muted-foreground",children:["规则 #",c+1]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(a,{rule:l}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(he,{variant:"ghost",size:"sm",children:o.jsx(Sn,{className:"h-4 w-4 text-destructive"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除规则 #",c+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>r(c),children:"删除"})]})]})]})]})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-xs font-medium",children:"配置类型"}),o.jsxs(Vt,{value:l.target===""?"global":"specific",onValueChange:d=>{d==="global"?s(c,"target",""):s(c,"target","qq::group")},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"global",children:"全局配置"}),o.jsx(De,{value:"specific",children:"详细配置"})]})]})]}),l.target!==""&&(()=>{const d=l.target.split(":"),h=d[0]||"qq",m=d[1]||"",g=d[2]||"group";return o.jsxs("div",{className:"grid gap-4 p-4 rounded-lg bg-muted/50",children:[o.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-xs font-medium",children:"平台"}),o.jsxs(Vt,{value:h,onValueChange:x=>{s(c,"target",`${x}:${m}:${g}`)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"qq",children:"QQ"}),o.jsx(De,{value:"wx",children:"微信"})]})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-xs font-medium",children:"群 ID"}),o.jsx(ze,{value:m,onChange:x=>{s(c,"target",`${h}:${x.target.value}:${g}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-xs font-medium",children:"类型"}),o.jsxs(Vt,{value:g,onValueChange:x=>{s(c,"target",`${h}:${m}:${x}`)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"group",children:"群组(group)"}),o.jsx(De,{value:"private",children:"私聊(private)"})]})]})]})]}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",l.target||"(未设置)"]})]})})(),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-xs font-medium",children:"时间段 (Time)"}),o.jsx(i,{value:l.time,onChange:d=>s(c,"time",d)}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"支持跨夜区间,例如 23:00-02:00"})]}),o.jsxs("div",{className:"grid gap-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(de,{htmlFor:`rule-value-${c}`,className:"text-xs font-medium",children:"发言频率值 (Value)"}),o.jsx(ze,{id:`rule-value-${c}`,type:"number",step:"0.01",min:"0.01",max:"1",value:l.value,onChange:d=>{const h=parseFloat(d.target.value);isNaN(h)||s(c,"value",Math.max(.01,Math.min(1,h)))},className:"w-20 h-8 text-xs"})]}),o.jsx(Ip,{value:[l.value],onValueChange:d=>s(c,"value",d[0]),min:.01,max:1,step:.01,className:"w-full"}),o.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[o.jsx("span",{children:"0.01 (极少发言)"}),o.jsx("span",{children:"0.5"}),o.jsx("span",{children:"1.0 (正常)"})]})]})]})]},c))}):o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:o.jsx("p",{className:"text-sm",children:'暂无规则,点击"添加规则"按钮创建'})}),o.jsxs("div",{className:"mt-4 p-4 bg-blue-50 dark:bg-blue-950/20 border border-blue-200 dark:border-blue-800 rounded-lg",children:[o.jsx("h5",{className:"text-sm font-semibold text-blue-900 dark:text-blue-100 mb-2",children:"📝 规则说明"}),o.jsxs("ul",{className:"text-xs text-blue-800 dark:text-blue-200 space-y-1",children:[o.jsxs("li",{children:["• ",o.jsx("strong",{children:"Target 为空"}),":全局规则,对所有聊天生效"]}),o.jsxs("li",{children:["• ",o.jsx("strong",{children:"Target 指定"}),":仅对特定聊天流生效(格式:platform:id:type)"]}),o.jsxs("li",{children:["• ",o.jsx("strong",{children:"优先级"}),":先匹配具体聊天流规则,再匹配全局规则"]}),o.jsxs("li",{children:["• ",o.jsx("strong",{children:"时间支持跨夜"}),":例如 23:00-02:00 表示晚上11点到次日凌晨2点"]}),o.jsxs("li",{children:["• ",o.jsx("strong",{children:"数值范围"}),":建议 0-1,0 表示完全沉默,1 表示正常发言"]})]})]})]})]})}function x0e({member:t,groupIndex:e,memberIndex:n,availableChatIds:r,onUpdate:s,onRemove:i}){const a=r.includes(t)||t==="*",[l,c]=b.useState(!a);return o.jsxs("div",{className:"flex gap-2",children:[o.jsx("div",{className:"flex-1 flex gap-2",children:l?o.jsxs(o.Fragment,{children:[o.jsx(ze,{value:t,onChange:d=>s(e,n,d.target.value),placeholder:'输入 "*" 或 "qq:123456:group"',className:"flex-1"}),r.length>0&&o.jsx(he,{size:"sm",variant:"outline",onClick:()=>c(!1),title:"切换到下拉选择",children:"下拉"})]}):o.jsxs(o.Fragment,{children:[o.jsxs(Vt,{value:t,onValueChange:d=>s(e,n,d),children:[o.jsx($t,{className:"flex-1",children:o.jsx(Ut,{placeholder:"选择聊天流"})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"*",children:"* (全局共享)"}),r.map((d,h)=>o.jsx(De,{value:d,children:d},h))]})]}),o.jsx(he,{size:"sm",variant:"outline",onClick:()=>c(!0),title:"切换到手动输入",children:"输入"})]})}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(he,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除组成员 "',t||"(空)",'" 吗?此操作无法撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>i(e,n),children:"删除"})]})]})]})]})}function v0e({config:t,onChange:e}){const n=()=>{e({...t,learning_list:[...t.learning_list,["","enable","enable","1.0"]]})},r=m=>{e({...t,learning_list:t.learning_list.filter((g,x)=>x!==m)})},s=(m,g,x)=>{const y=[...t.learning_list];y[m][g]=x,e({...t,learning_list:y})},i=({rule:m})=>{const g=`["${m[0]}", "${m[1]}", "${m[2]}", "${m[3]}"]`;return o.jsxs(Po,{children:[o.jsx(zo,{asChild:!0,children:o.jsxs(he,{variant:"outline",size:"sm",children:[o.jsx(Ea,{className:"h-4 w-4 mr-1"}),"预览"]})}),o.jsx(Xa,{className:"w-96",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),o.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:g}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},a=()=>{e({...t,expression_groups:[...t.expression_groups,[]]})},l=m=>{e({...t,expression_groups:t.expression_groups.filter((g,x)=>x!==m)})},c=m=>{const g=[...t.expression_groups];g[m]=[...g[m],""],e({...t,expression_groups:g})},d=(m,g)=>{const x=[...t.expression_groups];x[m]=x[m].filter((y,w)=>w!==g),e({...t,expression_groups:x})},h=(m,g,x)=>{const y=[...t.expression_groups];y[m][g]=x,e({...t,expression_groups:y})};return o.jsxs("div",{className:"space-y-6",children:[o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center justify-between mb-4",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold",children:"表达学习配置"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置麦麦如何学习和使用表达方式"})]}),o.jsxs(he,{onClick:n,size:"sm",variant:"outline",children:[o.jsx(zs,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),o.jsxs("div",{className:"space-y-4",children:[t.learning_list.map((m,g)=>{const x=t.learning_list.some((N,T)=>T!==g&&N[0]===""),y=m[0]==="",w=m[0].split(":"),S=w[0]||"qq",k=w[1]||"",j=w[2]||"group";return o.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium",children:["规则 ",g+1," ",y&&"(全局配置)"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(i,{rule:m}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(he,{size:"sm",variant:"ghost",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除学习规则 ",g+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>r(g),children:"删除"})]})]})]})]})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-xs font-medium",children:"配置类型"}),o.jsxs(Vt,{value:y?"global":"specific",onValueChange:N=>{N==="global"?s(g,0,""):s(g,0,"qq::group")},disabled:x&&!y,children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"global",children:"全局配置"}),o.jsx(De,{value:"specific",disabled:x&&!y,children:"详细配置"})]})]}),x&&!y&&o.jsx("p",{className:"text-xs text-amber-600",children:"已存在全局配置,无法创建新的全局配置"})]}),!y&&o.jsxs("div",{className:"grid gap-4 p-4 rounded-lg bg-muted/50",children:[o.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-xs font-medium",children:"平台"}),o.jsxs(Vt,{value:S,onValueChange:N=>{s(g,0,`${N}:${k}:${j}`)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"qq",children:"QQ"}),o.jsx(De,{value:"wx",children:"微信"})]})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-xs font-medium",children:"群 ID"}),o.jsx(ze,{value:k,onChange:N=>{s(g,0,`${S}:${N.target.value}:${j}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-xs font-medium",children:"类型"}),o.jsxs(Vt,{value:j,onValueChange:N=>{s(g,0,`${S}:${k}:${N}`)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"group",children:"群组(group)"}),o.jsx(De,{value:"private",children:"私聊(private)"})]})]})]})]}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",m[0]||"(未设置)"]})]}),o.jsx("div",{className:"grid gap-2",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(de,{className:"text-xs font-medium",children:"使用学到的表达"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦使用从聊天中学到的表达方式"})]}),o.jsx(Bt,{checked:m[1]==="enable",onCheckedChange:N=>s(g,1,N?"enable":"disable")})]})}),o.jsx("div",{className:"grid gap-2",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(de,{className:"text-xs font-medium",children:"学习表达"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦从聊天中学习新的表达方式"})]}),o.jsx(Bt,{checked:m[2]==="enable",onCheckedChange:N=>s(g,2,N?"enable":"disable")})]})}),o.jsxs("div",{className:"grid gap-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(de,{className:"text-xs font-medium",children:"学习强度"}),o.jsx(ze,{type:"number",step:"0.1",min:"0",max:"5",value:m[3],onChange:N=>{const T=parseFloat(N.target.value);isNaN(T)||s(g,3,Math.max(0,Math.min(5,T)).toFixed(1))},className:"w-20 h-8 text-xs"})]}),o.jsx(Ip,{value:[parseFloat(m[3])||1],onValueChange:N=>s(g,3,N[0].toFixed(1)),min:0,max:5,step:.1,className:"w-full"}),o.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[o.jsx("span",{children:"0 (不学习)"}),o.jsx("span",{children:"2.5"}),o.jsx("span",{children:"5.0 (快速学习)"})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"影响学习频率,最短学习间隔 = 300/学习强度(秒)"})]})]})]},g)}),t.learning_list.length===0&&o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无学习规则,点击"添加规则"开始配置'})]})]})}),o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center justify-between mb-4",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold",children:"表达共享组配置"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置不同聊天流之间如何共享学到的表达方式"})]}),o.jsxs(he,{onClick:a,size:"sm",variant:"outline",children:[o.jsx(zs,{className:"h-4 w-4 mr-1"}),"添加共享组"]})]}),o.jsxs("div",{className:"space-y-4",children:[t.expression_groups.map((m,g)=>{const x=t.learning_list.map(y=>y[0]).filter(y=>y!=="");return o.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium",children:["共享组 ",g+1,m.length===1&&m[0]==="*"&&"(全局共享)"]}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx(he,{onClick:()=>c(g),size:"sm",variant:"outline",children:o.jsx(zs,{className:"h-4 w-4"})}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(he,{size:"sm",variant:"ghost",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除共享组 ",g+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>l(g),children:"删除"})]})]})]})]})]}),o.jsx("div",{className:"space-y-2",children:m.map((y,w)=>o.jsx(x0e,{member:y,groupIndex:g,memberIndex:w,availableChatIds:x,onUpdate:h,onRemove:d},`${g}-${w}`))}),o.jsx("p",{className:"text-xs text-muted-foreground",children:'提示:可以从下拉框选择已配置的聊天流,或手动输入。输入 "*" 启用全局共享'})]},g)}),t.expression_groups.length===0&&o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无共享组,点击"添加共享组"开始配置'})]})]})})]})}function y0e({emojiConfig:t,memoryConfig:e,toolConfig:n,onEmojiChange:r,onMemoryChange:s,onToolChange:i}){return o.jsxs("div",{className:"space-y-6",children:[o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"工具设置"}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"enable_tool",checked:n.enable_tool,onCheckedChange:a=>i({...n,enable_tool:a})}),o.jsx(de,{htmlFor:"enable_tool",className:"cursor-pointer",children:"启用工具系统"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"允许麦麦使用各种工具来增强功能"})]})}),o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"记忆设置"}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"max_agent_iterations",children:"记忆思考深度"}),o.jsx(ze,{id:"max_agent_iterations",type:"number",min:"1",value:e.max_agent_iterations,onChange:a=>s({...e,max_agent_iterations:parseInt(a.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"最低为 1(不深入思考)"})]})]})}),o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"表情包设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"emoji_chance",children:"表情包激活概率"}),o.jsx(ze,{id:"emoji_chance",type:"number",step:"0.1",min:"0",max:"1",value:t.emoji_chance,onChange:a=>r({...t,emoji_chance:parseFloat(a.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"范围 0-1,越大越容易发送表情包"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"max_reg_num",children:"最大注册数量"}),o.jsx(ze,{id:"max_reg_num",type:"number",min:"1",value:t.max_reg_num,onChange:a=>r({...t,max_reg_num:parseInt(a.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦最多可以注册的表情包数量"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),o.jsx(ze,{id:"check_interval",type:"number",min:"1",value:t.check_interval,onChange:a=>r({...t,check_interval:parseInt(a.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包(注册、破损、删除)的时间间隔"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"do_replace",checked:t.do_replace,onCheckedChange:a=>r({...t,do_replace:a})}),o.jsx(de,{htmlFor:"do_replace",className:"cursor-pointer",children:"达到最大数量时替换表情包"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"steal_emoji",checked:t.steal_emoji,onCheckedChange:a=>r({...t,steal_emoji:a})}),o.jsx(de,{htmlFor:"steal_emoji",className:"cursor-pointer",children:"偷取表情包"})]}),o.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"允许麦麦将看到的表情包据为己有"}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"content_filtration",checked:t.content_filtration,onCheckedChange:a=>r({...t,content_filtration:a})}),o.jsx(de,{htmlFor:"content_filtration",className:"cursor-pointer",children:"启用表情包过滤"})]}),t.content_filtration&&o.jsxs("div",{className:"grid gap-2 pl-6 border-l-2 border-primary/20",children:[o.jsx(de,{htmlFor:"filtration_prompt",children:"过滤要求"}),o.jsx(ze,{id:"filtration_prompt",value:t.filtration_prompt,onChange:a=>r({...t,filtration_prompt:a.target.value}),placeholder:"符合公序良俗"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"只有符合此要求的表情包才会被保存"})]})]})]})})]})}function b0e({keywordReactionConfig:t,responsePostProcessConfig:e,chineseTypoConfig:n,responseSplitterConfig:r,onKeywordReactionChange:s,onResponsePostProcessChange:i,onChineseTypoChange:a,onResponseSplitterChange:l}){const c=()=>{s({...t,regex_rules:[...t.regex_rules,{regex:[""],reaction:""}]})},d=T=>{s({...t,regex_rules:t.regex_rules.filter((E,_)=>_!==T)})},h=(T,E,_)=>{const M=[...t.regex_rules];E==="regex"&&typeof _=="string"?M[T]={...M[T],regex:[_]}:E==="reaction"&&typeof _=="string"&&(M[T]={...M[T],reaction:_}),s({...t,regex_rules:M})},m=({regex:T,reaction:E,onRegexChange:_,onReactionChange:M})=>{const[I,P]=b.useState(!1),[L,H]=b.useState(""),[U,ee]=b.useState(null),[z,Q]=b.useState(""),[B,X]=b.useState({}),[J,G]=b.useState(""),R=b.useRef(null),[ie,W]=b.useState("build"),q=K=>K.replace(/\(\?P<([^>]+)>/g,"(?<$1>"),V=(K,se=0)=>{const re=R.current;if(!re)return;const oe=re.selectionStart||0,Te=re.selectionEnd||0,We=T.substring(0,oe)+K+T.substring(Te);_(We),setTimeout(()=>{const Ye=oe+K.length+se;re.setSelectionRange(Ye,Ye),re.focus()},0)};b.useEffect(()=>{if(!T||!L){ee(null),X({}),G(E),Q("");return}try{const K=q(T),se=new RegExp(K,"g"),re=L.match(se);ee(re),Q("");const Te=new RegExp(K).exec(L);if(Te&&Te.groups){X(Te.groups);let We=E;Object.entries(Te.groups).forEach(([Ye,Je])=>{We=We.replace(new RegExp(`\\[${Ye}\\]`,"g"),Je||"")}),G(We)}else X({}),G(E)}catch(K){Q(K.message),ee(null),X({}),G(E)}},[T,L,E]);const te=()=>{if(!L||!U||U.length===0)return o.jsx("span",{className:"text-muted-foreground",children:L||"请输入测试文本"});try{const K=q(T),se=new RegExp(K,"g");let re=0;const oe=[];let Te;for(;(Te=se.exec(L))!==null;)Te.index>re&&oe.push(o.jsx("span",{children:L.substring(re,Te.index)},`text-${re}`)),oe.push(o.jsx("span",{className:"bg-yellow-200 dark:bg-yellow-900 font-semibold",children:Te[0]},`match-${Te.index}`)),re=Te.index+Te[0].length;return re)",desc:"Python风格命名捕获组",moveCursor:-1},{label:"非捕获组",pattern:"(?:)",desc:"分组但不保存匹配结果",moveCursor:-1}]},{category:"字符类",items:[{label:"字符集",pattern:"[]",desc:"匹配括号内的任意字符",moveCursor:-1},{label:"排除字符",pattern:"[^]",desc:"匹配不在括号内的字符",moveCursor:-1},{label:"范围",pattern:"[a-z]",desc:"匹配a到z的字符"},{label:"中文字符",pattern:"[\\u4e00-\\u9fa5]",desc:"匹配中文汉字"}]},{category:"常用模板",items:[{label:"捕获词语",pattern:"(?P\\S+)",desc:"捕获一个词语"},{label:"捕获句子",pattern:"(?P.+)",desc:"捕获整个句子"},{label:"捕获数字",pattern:"(?P\\d+)",desc:"捕获一个或多个数字"},{label:"可选词语",pattern:"(?:词语1|词语2)",desc:"匹配多个可选项之一"}]}];return o.jsxs(Dr,{open:I,onOpenChange:P,children:[o.jsx(Sf,{asChild:!0,children:o.jsxs(he,{variant:"outline",size:"sm",children:[o.jsx(_v,{className:"h-4 w-4 mr-1"}),"正则编辑器"]})}),o.jsxs(Sr,{className:"max-w-[95vw] sm:max-w-[900px] max-h-[90vh]",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"正则表达式编辑器"}),o.jsx(ss,{className:"text-sm",children:"使用可视化工具构建正则表达式,并实时测试效果"})]}),o.jsx(wn,{className:"max-h-[calc(90vh-120px)]",children:o.jsxs(ja,{value:ie,onValueChange:K=>W(K),className:"w-full",children:[o.jsxs(Wi,{className:"grid w-full grid-cols-2",children:[o.jsx(Lt,{value:"build",children:"🔧 构建器"}),o.jsx(Lt,{value:"test",children:"🧪 测试器"})]}),o.jsxs(un,{value:"build",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{className:"text-sm font-medium",children:"正则表达式"}),o.jsx(ze,{ref:R,value:T,onChange:K=>_(K.target.value),className:"font-mono text-sm",placeholder:"点击下方按钮构建正则表达式..."})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{className:"text-sm font-medium",children:"Reaction 内容"}),o.jsx(Ar,{value:E,onChange:K=>M(K.target.value),placeholder:"使用 [捕获组名] 引用捕获的内容...",rows:3,className:"text-sm"})]}),o.jsxs("div",{className:"space-y-4 border-t pt-4",children:[ne.map(K=>o.jsxs("div",{className:"space-y-2",children:[o.jsx("h5",{className:"text-xs font-semibold text-primary",children:K.category}),o.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:K.items.map(se=>o.jsx(he,{variant:"outline",size:"sm",className:"justify-start h-auto py-2 px-3",onClick:()=>V(se.pattern,se.moveCursor||0),children:o.jsxs("div",{className:"flex flex-col items-start w-full",children:[o.jsxs("div",{className:"flex items-center gap-2 w-full",children:[o.jsx("span",{className:"text-xs font-medium",children:se.label}),o.jsx("code",{className:"ml-auto text-xs bg-muted px-1.5 py-0.5 rounded font-mono",children:se.pattern})]}),o.jsx("span",{className:"text-xs text-muted-foreground mt-0.5",children:se.desc})]})},se.label))})]},K.category)),o.jsxs("div",{className:"space-y-2 border-t pt-4",children:[o.jsx("h5",{className:"text-xs font-semibold text-primary",children:"完整示例模板"}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>_("^(?P\\S{1,20})是这样的$"),children:o.jsxs("div",{className:"flex flex-col items-start w-full",children:[o.jsxs("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:["^(?P\\S","{1,20}",")是这样的$"]}),o.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「某事物是这样的」并捕获事物名称"})]})}),o.jsx(he,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>_("(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"),children:o.jsxs("div",{className:"flex flex-col items-start w-full",children:[o.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"}),o.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「我没要求你做某事」并捕获具体行为"})]})}),o.jsx(he,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>_("(?P.+?)(?:是|为什么|怎么)"),children:o.jsxs("div",{className:"flex flex-col items-start w-full",children:[o.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?P.+?)(?:是|为什么|怎么)"}),o.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"捕获问题主题词"})]})})]})]})]}),o.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[o.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 使用提示"}),o.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[o.jsx("li",{children:"点击输入框设置光标位置,然后点击按钮插入模式"}),o.jsxs("li",{children:["命名捕获组格式:",o.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"(?P<名称>模式)"})]}),o.jsxs("li",{children:["在 reaction 中使用 ",o.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"[名称]"})," 引用捕获的内容"]}),o.jsx("li",{children:"切换到测试器标签页验证正则表达式效果"})]})]})]}),o.jsxs(un,{value:"test",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{className:"text-sm font-medium",children:"当前正则表达式"}),o.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:T||"(未设置)"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"test-text",className:"text-sm font-medium",children:"测试文本"}),o.jsx(Ar,{id:"test-text",value:L,onChange:K=>H(K.target.value),placeholder:`在此输入要测试的文本... -例如:打游戏是这样的`,className:"min-h-[100px] text-sm"})]}),z&&o.jsxs("div",{className:"rounded-md bg-destructive/10 border border-destructive/20 p-3",children:[o.jsx("p",{className:"text-sm text-destructive font-medium",children:"正则表达式错误"}),o.jsx("p",{className:"text-xs text-destructive/80 mt-1",children:z})]}),!z&&L&&o.jsxs("div",{className:"space-y-3",children:[o.jsx("div",{className:"flex items-center gap-2",children:U&&U.length>0?o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-green-500"}),o.jsxs("span",{className:"text-sm font-medium text-green-600 dark:text-green-400",children:["匹配成功 (",U.length," 处)"]})]}):o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-gray-400"}),o.jsx("span",{className:"text-sm font-medium text-muted-foreground",children:"无匹配"})]})}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{className:"text-sm font-medium",children:"匹配高亮"}),o.jsx(wn,{className:"h-40 rounded-md bg-muted p-3",children:o.jsx("div",{className:"text-sm break-words",children:te()})})]}),Object.keys(B).length>0&&o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{className:"text-sm font-medium",children:"命名捕获组"}),o.jsx(wn,{className:"h-32 rounded-md border p-3",children:o.jsx("div",{className:"space-y-2",children:Object.entries(B).map(([K,se])=>o.jsxs("div",{className:"flex items-start gap-2 text-sm",children:[o.jsxs("span",{className:"font-mono font-semibold text-primary min-w-[80px]",children:["[",K,"]"]}),o.jsx("span",{className:"text-muted-foreground",children:"="}),o.jsx("span",{className:"font-mono bg-muted px-2 py-0.5 rounded",children:se})]},K))})})]}),Object.keys(B).length>0&&E&&o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{className:"text-sm font-medium",children:"Reaction 替换预览"}),o.jsx(wn,{className:"h-48 rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3",children:o.jsx("div",{className:"text-sm break-words",children:J})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"reaction 中的 [name] 已被替换为对应的捕获组值"})]})]}),o.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[o.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 测试说明"}),o.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[o.jsx("li",{children:"匹配的文本会以黄色背景高亮显示"}),o.jsx("li",{children:"命名捕获组的值会显示在下方列表中"}),o.jsx("li",{children:"Reaction 替换预览显示最终生成的反应内容"}),o.jsx("li",{children:"如需修改正则,切换回构建器标签页"})]})]})]})]})})]})]})},g=()=>{s({...t,keyword_rules:[...t.keyword_rules,{keywords:[],reaction:""}]})},x=T=>{s({...t,keyword_rules:t.keyword_rules.filter((E,_)=>_!==T)})},y=(T,E,_)=>{const M=[...t.keyword_rules];typeof _=="string"&&(M[T]={...M[T],reaction:_}),s({...t,keyword_rules:M})},w=T=>{const E=[...t.keyword_rules];E[T]={...E[T],keywords:[...E[T].keywords||[],""]},s({...t,keyword_rules:E})},S=(T,E)=>{const _=[...t.keyword_rules];_[T]={..._[T],keywords:(_[T].keywords||[]).filter((M,I)=>I!==E)},s({...t,keyword_rules:_})},k=(T,E,_)=>{const M=[...t.keyword_rules],I=[...M[T].keywords||[]];I[E]=_,M[T]={...M[T],keywords:I},s({...t,keyword_rules:M})},j=({rule:T})=>{const E=`{ regex = [${(T.regex||[]).map(_=>`"${_}"`).join(", ")}], reaction = "${T.reaction}" }`;return o.jsxs(Po,{children:[o.jsx(zo,{asChild:!0,children:o.jsxs(he,{variant:"outline",size:"sm",children:[o.jsx(Ea,{className:"h-4 w-4 mr-1"}),"预览"]})}),o.jsx(Xa,{className:"w-[95vw] sm:w-[500px]",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),o.jsx(wn,{className:"h-60 rounded-md bg-muted p-3",children:o.jsx("pre",{className:"font-mono text-xs break-all",children:E})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},N=({rule:T})=>{const E=`[[keyword_reaction.keyword_rules]] +`,{label:"if",detail:"block",type:"keyword"}),vl("if ${}:\n ${}\nelse:\n ${}",{label:"if",detail:"/ else block",type:"keyword"}),vl("class ${name}:\n def __init__(self, ${params}):\n ${}",{label:"class",detail:"definition",type:"keyword"}),vl("import ${module}",{label:"import",detail:"statement",type:"keyword"}),vl("from ${module} import ${names}",{label:"from",detail:"import",type:"keyword"})],w0e=khe(OH,Z$(y0e.concat(b0e)));function dS(t){let{node:e,pos:n}=t,r=t.lineIndent(n,-1),s=null;for(;;){let i=e.childBefore(n);if(i)if(i.name=="Comment")n=i.from;else if(i.name=="Body"||i.name=="MatchBody")t.baseIndentFor(i)+t.unit<=r&&(s=i),e=i;else if(i.name=="MatchClause")e=i;else if(i.type.is("Statement"))e=i;else break;else break}return s}function hS(t,e){let n=t.baseIndentFor(e),r=t.lineAt(t.pos,-1),s=r.from+r.text.length;return/^\s*($|#)/.test(r.text)&&t.node.ton?null:n+t.unit}const fS=X0.define({name:"python",parser:g0e.configure({props:[mb.add({Body:t=>{var e;let n=/^\s*(#|$)/.test(t.textAfter)&&dS(t)||t.node;return(e=hS(t,n))!==null&&e!==void 0?e:t.continue()},MatchBody:t=>{var e;let n=dS(t);return(e=hS(t,n||t.node))!==null&&e!==void 0?e:t.continue()},IfStatement:t=>/^\s*(else:|elif )/.test(t.textAfter)?t.baseIndent:t.continue(),"ForStatement WhileStatement":t=>/^\s*else:/.test(t.textAfter)?t.baseIndent:t.continue(),TryStatement:t=>/^\s*(except[ :]|finally:|else:)/.test(t.textAfter)?t.baseIndent:t.continue(),MatchStatement:t=>/^\s*case /.test(t.textAfter)?t.baseIndent+t.unit:t.continue(),"TupleExpression ComprehensionExpression ParamList ArgList ParenthesizedExpression":X4({closing:")"}),"DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression":X4({closing:"}"}),"ArrayExpression ArrayComprehensionExpression":X4({closing:"]"}),MemberExpression:t=>t.baseIndent+t.unit,"String FormatString":()=>null,Script:t=>{var e;let n=dS(t);return(e=n&&hS(t,n))!==null&&e!==void 0?e:t.continue()}}),b6.add({"ArrayExpression DictionaryExpression SetExpression TupleExpression":Qq,Body:(t,e)=>({from:t.from+1,to:t.to-(t.to==e.doc.length?0:1)}),"String FormatString":(t,e)=>({from:e.doc.lineAt(t.from).to,to:t.to})})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"'''",'"""'],stringPrefixes:["f","fr","rf","r","u","b","br","rb","F","FR","RF","R","U","B","BR","RB"]},commentTokens:{line:"#"},indentOnInput:/^\s*([\}\]\)]|else:|elif |except |finally:|case\s+[^:]*:?)$/}});function S0e(){return new qq(fS,[fS.data.of({autocomplete:v0e}),fS.data.of({autocomplete:w0e})])}const k0e=x6({String:ve.string,Number:ve.number,"True False":ve.bool,PropertyName:ve.propertyName,Null:ve.null,", :":ve.separator,"[ ]":ve.squareBracket,"{ }":ve.brace}),O0e=sp.deserialize({version:14,states:"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l",stateData:"#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O",goto:"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R",nodeNames:"⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array",maxTerm:25,nodeProps:[["isolate",-2,6,11,""],["openedBy",7,"{",14,"["],["closedBy",8,"}",15,"]"]],propSources:[k0e],skippedNodes:[0],repeatNodeCount:2,tokenData:"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~",tokenizers:[0],topRules:{JsonText:[0,1]},tokenPrec:0}),j0e=()=>t=>{try{JSON.parse(t.state.doc.toString())}catch(e){if(!(e instanceof SyntaxError))throw e;const n=N0e(e,t.state.doc);return[{from:n,message:e.message,severity:"error",to:n}]}return[]};function N0e(t,e){let n;return(n=t.message.match(/at position (\d+)/))?Math.min(+n[1],e.length):(n=t.message.match(/at line (\d+) column (\d+)/))?Math.min(e.line(+n[1]).from+ +n[2]-1,e.length):0}const C0e=X0.define({name:"json",parser:O0e.configure({props:[mb.add({Object:x_({except:/^\s*\}/}),Array:x_({except:/^\s*\]/})}),b6.add({"Object Array":Qq})]}),languageData:{closeBrackets:{brackets:["[","{",'"']},indentOnInput:/^\s*[\}\]]$/}});function T0e(){return new qq(C0e)}const E0e={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(t,e){let n;if(!e.inString&&(n=t.match(/^('''|"""|'|")/))&&(e.stringType=n[0],e.inString=!0),t.sol()&&!e.inString&&e.inArray===0&&(e.lhs=!0),e.inString){for(;e.inString;)if(t.match(e.stringType))e.inString=!1;else if(t.peek()==="\\")t.next(),t.next();else{if(t.eol())break;t.match(/^.[^\\\"\']*/)}return e.lhs?"property":"string"}else{if(e.inArray&&t.peek()==="]")return t.next(),e.inArray--,"bracket";if(e.lhs&&t.peek()==="["&&t.skipTo("]"))return t.next(),t.peek()==="]"&&t.next(),"atom";if(t.peek()==="#")return t.skipToEnd(),"comment";if(t.eatSpace())return null;if(e.lhs&&t.eatWhile(function(r){return r!="="&&r!=" "}))return"property";if(e.lhs&&t.peek()==="=")return t.next(),e.lhs=!1,null;if(!e.lhs&&t.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!e.lhs&&(t.match("true")||t.match("false")))return"atom";if(!e.lhs&&t.peek()==="[")return e.inArray++,t.next(),"bracket";if(!e.lhs&&t.match(/^\-?\d+(?:\.\d+)?/))return"number";t.eatSpace()||t.next()}return null},languageData:{commentTokens:{line:"#"}}},_0e={python:[S0e()],json:[T0e(),j0e()],toml:[w6.define(E0e)],text:[]};function A0e({value:t,onChange:e,language:n="text",readOnly:r=!1,height:s="400px",minHeight:i,maxHeight:a,placeholder:l,theme:c="dark",className:d=""}){const[h,m]=b.useState(!1);if(b.useEffect(()=>{m(!0)},[]),!h)return o.jsx("div",{className:`rounded-md border bg-muted animate-pulse ${d}`,style:{height:s,minHeight:i,maxHeight:a}});const g=[..._0e[n]||[],Ze.lineWrapping];return r&&g.push(Ze.editable.of(!1)),o.jsx("div",{className:`rounded-md overflow-hidden border ${d}`,children:o.jsx(mH,{value:t,height:s,minHeight:i,maxHeight:a,theme:c==="dark"?fH:void 0,extensions:g,onChange:e,placeholder:l,basicSetup:{lineNumbers:!0,highlightActiveLineGutter:!0,highlightSpecialChars:!0,history:!0,foldGutter:!0,drawSelection:!0,dropCursor:!0,allowMultipleSelections:!0,indentOnInput:!0,syntaxHighlighting:!0,bracketMatching:!0,closeBrackets:!0,autocompletion:!0,rectangularSelection:!0,crosshairCursor:!0,highlightActiveLine:!0,highlightSelectionMatches:!0,closeBracketsKeymap:!0,defaultKeymap:!0,searchKeymap:!0,historyKeymap:!0,foldKeymap:!0,completionKeymap:!0,lintKeymap:!0}})})}function M0e(){const[t,e]=b.useState(!0),[n,r]=b.useState(!1),[s,i]=b.useState(!1),[a,l]=b.useState(!1),[c,d]=b.useState(!1),[h,m]=b.useState(!1),[g,x]=b.useState("visual"),[y,w]=b.useState(""),[S,k]=b.useState(!1),{toast:j}=as(),[N,T]=b.useState(null),[E,_]=b.useState(null),[A,L]=b.useState(null),[P,B]=b.useState(null),[$,U]=b.useState(null),[te,z]=b.useState(null),[Q,F]=b.useState(null),[Y,J]=b.useState(null),[X,R]=b.useState(null),[ie,G]=b.useState(null),[I,V]=b.useState(null),[ee,ne]=b.useState(null),[W,se]=b.useState(null),[re,oe]=b.useState(null),[Te,We]=b.useState(null),[Ye,Je]=b.useState(null),[Oe,Ve]=b.useState(null),[Ue,He]=b.useState(null),Ot=b.useRef(null),xt=b.useRef(!0),kn=b.useRef({}),It=b.useCallback(async()=>{try{const Fe=await bae();w(Fe),k(!1)}catch(Fe){j({variant:"destructive",title:"加载失败",description:Fe instanceof Error?Fe.message:"加载源代码失败"})}},[j]),Yt=b.useCallback(async()=>{try{e(!0);const Fe=await iE();kn.current=Fe,T(Fe.bot),_(Fe.personality);const rt=Fe.chat;rt.talk_value_rules||(rt.talk_value_rules=[]),L(rt),B(Fe.expression),U(Fe.emoji),z(Fe.memory),F(Fe.tool),J(Fe.mood),R(Fe.voice),G(Fe.lpmm_knowledge),V(Fe.keyword_reaction),ne(Fe.response_post_process),se(Fe.chinese_typo),oe(Fe.response_splitter),We(Fe.log),Je(Fe.debug),Ve(Fe.maim_message),He(Fe.telemetry),l(!1),xt.current=!1,await It()}catch(Fe){console.error("加载配置失败:",Fe),j({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}finally{e(!1)}},[j,It]);b.useEffect(()=>{Yt()},[Yt]);const _t=b.useCallback(async(Fe,rt)=>{if(!xt.current)try{i(!0),await Sae(Fe,rt),l(!1)}catch(tn){console.error(`自动保存 ${Fe} 失败:`,tn),l(!0)}finally{i(!1)}},[]),mt=b.useCallback((Fe,rt)=>{xt.current||(l(!0),Ot.current&&clearTimeout(Ot.current),Ot.current=setTimeout(()=>{_t(Fe,rt)},2e3))},[_t]);b.useEffect(()=>{N&&!xt.current&&mt("bot",N)},[N,mt]),b.useEffect(()=>{E&&!xt.current&&mt("personality",E)},[E,mt]),b.useEffect(()=>{A&&!xt.current&&mt("chat",A)},[A,mt]),b.useEffect(()=>{P&&!xt.current&&mt("expression",P)},[P,mt]),b.useEffect(()=>{$&&!xt.current&&mt("emoji",$)},[$,mt]),b.useEffect(()=>{te&&!xt.current&&mt("memory",te)},[te,mt]),b.useEffect(()=>{Q&&!xt.current&&mt("tool",Q)},[Q,mt]),b.useEffect(()=>{Y&&!xt.current&&mt("mood",Y)},[Y,mt]),b.useEffect(()=>{X&&!xt.current&&mt("voice",X)},[X,mt]),b.useEffect(()=>{ie&&!xt.current&&mt("lpmm_knowledge",ie)},[ie,mt]),b.useEffect(()=>{I&&!xt.current&&mt("keyword_reaction",I)},[I,mt]),b.useEffect(()=>{ee&&!xt.current&&mt("response_post_process",ee)},[ee,mt]),b.useEffect(()=>{W&&!xt.current&&mt("chinese_typo",W)},[W,mt]),b.useEffect(()=>{re&&!xt.current&&mt("response_splitter",re)},[re,mt]),b.useEffect(()=>{Te&&!xt.current&&mt("log",Te)},[Te,mt]),b.useEffect(()=>{Ye&&!xt.current&&mt("debug",Ye)},[Ye,mt]),b.useEffect(()=>{Oe&&!xt.current&&mt("maim_message",Oe)},[Oe,mt]),b.useEffect(()=>{Ue&&!xt.current&&mt("telemetry",Ue)},[Ue,mt]);const Ne=async()=>{try{r(!0),await wae(y),l(!1),k(!1),j({title:"保存成功",description:"配置已保存"}),await Yt()}catch(Fe){k(!0),j({variant:"destructive",title:"保存失败",description:Fe instanceof Error?Fe.message:"保存配置失败"})}finally{r(!1)}},Ie=async Fe=>{if(a){j({variant:"destructive",title:"切换失败",description:"请先保存当前更改"});return}if(x(Fe),Fe==="source")await It();else try{const rt=await iE();kn.current=rt,T(rt.bot),_(rt.personality);const tn=rt.chat;tn.talk_value_rules||(tn.talk_value_rules=[]),L(tn),B(rt.expression),U(rt.emoji),z(rt.memory),F(rt.tool),J(rt.mood),R(rt.voice),G(rt.lpmm_knowledge),V(rt.keyword_reaction),ne(rt.response_post_process),se(rt.chinese_typo),oe(rt.response_splitter),We(rt.log),Je(rt.debug),Ve(rt.maim_message),He(rt.telemetry),l(!1)}catch(rt){console.error("加载配置失败:",rt),j({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}},st=async()=>{try{r(!0),Ot.current&&clearTimeout(Ot.current);const Fe={...kn.current,bot:N,personality:E,chat:A,expression:P,emoji:$,memory:te,tool:Q,mood:Y,voice:X,lpmm_knowledge:ie,keyword_reaction:I,response_post_process:ee,chinese_typo:W,response_splitter:re,log:Te,debug:Ye,maim_message:Oe,telemetry:Ue};await aE(Fe),l(!1),j({title:"保存成功",description:"麦麦主程序配置已保存"})}catch(Fe){console.error("保存配置失败:",Fe),j({title:"保存失败",description:Fe.message,variant:"destructive"})}finally{r(!1)}},yt=async()=>{try{d(!0),ib().catch(()=>{}),m(!0)}catch(Fe){console.error("重启失败:",Fe),m(!1),j({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),d(!1)}},Pt=async()=>{try{r(!0),Ot.current&&clearTimeout(Ot.current);const Fe={...kn.current,bot:N,personality:E,chat:A,expression:P,emoji:$,memory:te,tool:Q,mood:Y,voice:X,lpmm_knowledge:ie,keyword_reaction:I,response_post_process:ee,chinese_typo:W,response_splitter:re,log:Te,debug:Ye,maim_message:Oe,telemetry:Ue};await aE(Fe),l(!1),j({title:"保存成功",description:"配置已保存,即将重启麦麦..."}),await new Promise(rt=>setTimeout(rt,500)),await yt()}catch(Fe){console.error("保存失败:",Fe),j({title:"保存失败",description:Fe.message,variant:"destructive"})}finally{r(!1)}},Mt=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},zn=()=>{m(!1),d(!1),j({title:"重启失败",description:"服务器未能在预期时间内恢复,请手动检查",variant:"destructive"})};return t?o.jsx(gn,{className:"h-full",children:o.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:o.jsx("div",{className:"flex items-center justify-center h-64",children:o.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):o.jsx(gn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦主程序配置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的核心功能和行为设置"})]}),o.jsxs("div",{className:"flex gap-2 w-full sm:w-auto items-center",children:[o.jsx(ja,{value:g,onValueChange:Fe=>Ie(Fe),className:"w-auto",children:o.jsxs(Wi,{className:"h-9",children:[o.jsxs(Lt,{value:"visual",className:"text-xs sm:text-sm px-2 sm:px-3",children:[o.jsx(Wee,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"可视化"]}),o.jsxs(Lt,{value:"source",className:"text-xs sm:text-sm px-2 sm:px-3",children:[o.jsx(Gee,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"源代码"]})]})}),o.jsxs(de,{onClick:g==="visual"?st:Ne,disabled:n||s||!a||c,size:"sm",variant:"outline",className:"flex-1 sm:flex-none",children:[o.jsx(Gy,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),n?"保存中...":s?"自动保存中...":a?"保存配置":"已保存"]}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs(de,{disabled:n||s||c,size:"sm",className:"flex-1 sm:flex-none",children:[o.jsx(Aj,{className:"mr-2 h-4 w-4"}),c?"重启中...":a?"保存并重启":"重启麦麦"]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认重启麦麦?"}),o.jsx(_n,{className:"space-y-3",asChild:!0,children:o.jsxs("div",{children:[o.jsx("p",{children:a?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),o.jsxs(ga,{className:"border-yellow-500/50 bg-yellow-500/10",children:[o.jsx(Oa,{className:"h-4 w-4 text-yellow-600"}),o.jsxs(xa,{className:"text-yellow-900 dark:text-yellow-100",children:[o.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",o.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",o.jsxs(Dr,{children:[o.jsx(Of,{asChild:!0,children:o.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[o.jsx(Wy,{className:"h-3 w-3"}),"如何结束程序?"]})}),o.jsxs(Sr,{className:"max-w-2xl",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"如何结束使用重启功能后的麦麦程序"}),o.jsx(ss,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),o.jsxs(ja,{defaultValue:"windows",className:"w-full",children:[o.jsxs(Wi,{className:"grid w-full grid-cols-3",children:[o.jsx(Lt,{value:"windows",children:"Windows"}),o.jsx(Lt,{value:"macos",children:"macOS"}),o.jsx(Lt,{value:"linux",children:"Linux"})]}),o.jsxs(un,{value:"windows",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),o.jsxs("li",{children:['在"进程"或"详细信息"标签页中找到 ',o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),o.jsx("li",{children:'右键点击并选择"结束任务"'})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),o.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),o.jsxs(un,{value:"macos",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"}),' 打开 Spotlight,搜索"活动监视器"']}),o.jsxs("li",{children:["在进程列表中找到 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),o.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]})]}),o.jsxs(un,{value:"linux",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),o.jsx("p",{children:'pkill -9 -f "bot.py"'}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["在终端输入 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),o.jsx(ws,{children:o.jsx(Gj,{asChild:!0,children:o.jsx(de,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:a?Pt:yt,children:a?"保存并重启":"确认重启"})]})]})]})]})]}),o.jsxs(ga,{children:[o.jsx(Oa,{className:"h-4 w-4"}),o.jsxs(xa,{children:["配置更新后需要",o.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),g==="source"&&o.jsxs("div",{className:"space-y-4",children:[o.jsxs(ga,{children:[o.jsx(Oa,{className:"h-4 w-4"}),o.jsxs(xa,{children:[o.jsx("strong",{children:"源代码模式(高级功能):"}),"直接编辑 TOML 配置文件。此功能仅适用于熟悉 TOML 语法的高级用户。保存时会在后端验证格式,只有格式完全正确才能保存。",S&&o.jsx("span",{className:"text-destructive font-semibold ml-2",children:"⚠️ 上次保存失败,请检查 TOML 格式"})]})]}),o.jsx(A0e,{value:y,onChange:Fe=>{w(Fe),l(!0),S&&k(!1)},language:"toml",theme:"dark",height:"calc(100vh - 280px)",minHeight:"500px",placeholder:"TOML 配置内容"})]}),g==="visual"&&o.jsx(o.Fragment,{children:o.jsxs(ja,{defaultValue:"bot",className:"w-full",children:[o.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:o.jsxs(Wi,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5 lg:grid-cols-10",children:[o.jsx(Lt,{value:"bot",className:"flex-shrink-0",children:"基本信息"}),o.jsx(Lt,{value:"personality",className:"flex-shrink-0",children:"人格"}),o.jsx(Lt,{value:"chat",className:"flex-shrink-0",children:"聊天"}),o.jsx(Lt,{value:"expression",className:"flex-shrink-0",children:"表达"}),o.jsx(Lt,{value:"features",className:"flex-shrink-0",children:"功能"}),o.jsx(Lt,{value:"processing",className:"flex-shrink-0",children:"处理"}),o.jsx(Lt,{value:"mood",className:"flex-shrink-0",children:"情绪"}),o.jsx(Lt,{value:"voice",className:"flex-shrink-0",children:"语音"}),o.jsx(Lt,{value:"lpmm",className:"flex-shrink-0",children:"知识库"}),o.jsx(Lt,{value:"other",className:"flex-shrink-0",children:"其他"})]})}),o.jsx(un,{value:"bot",className:"space-y-4",children:N&&o.jsx(R0e,{config:N,onChange:T})}),o.jsx(un,{value:"personality",className:"space-y-4",children:E&&o.jsx(D0e,{config:E,onChange:_})}),o.jsx(un,{value:"chat",className:"space-y-4",children:A&&o.jsx(P0e,{config:A,onChange:L})}),o.jsx(un,{value:"expression",className:"space-y-4",children:P&&o.jsx(I0e,{config:P,onChange:B})}),o.jsx(un,{value:"features",className:"space-y-4",children:$&&te&&Q&&o.jsx(L0e,{emojiConfig:$,memoryConfig:te,toolConfig:Q,onEmojiChange:U,onMemoryChange:z,onToolChange:F})}),o.jsx(un,{value:"processing",className:"space-y-4",children:I&&ee&&W&&re&&o.jsx(B0e,{keywordReactionConfig:I,responsePostProcessConfig:ee,chineseTypoConfig:W,responseSplitterConfig:re,onKeywordReactionChange:V,onResponsePostProcessChange:ne,onChineseTypoChange:se,onResponseSplitterChange:oe})}),o.jsx(un,{value:"mood",className:"space-y-4",children:Y&&o.jsx(F0e,{config:Y,onChange:J})}),o.jsx(un,{value:"voice",className:"space-y-4",children:X&&o.jsx(q0e,{config:X,onChange:R})}),o.jsx(un,{value:"lpmm",className:"space-y-4",children:ie&&o.jsx($0e,{config:ie,onChange:G})}),o.jsxs(un,{value:"other",className:"space-y-4",children:[Te&&o.jsx(H0e,{config:Te,onChange:We}),Ye&&o.jsx(Q0e,{config:Ye,onChange:Je}),Oe&&o.jsx(V0e,{config:Oe,onChange:Ve}),Ue&&o.jsx(U0e,{config:Ue,onChange:He})]})]})}),h&&o.jsx(Kj,{onRestartComplete:Mt,onRestartFailed:zn})]})})}function R0e({config:t,onChange:e}){const n=()=>{e({...t,platforms:[...t.platforms,""]})},r=c=>{e({...t,platforms:t.platforms.filter((d,h)=>h!==c)})},s=(c,d)=>{const h=[...t.platforms];h[c]=d,e({...t,platforms:h})},i=()=>{e({...t,alias_names:[...t.alias_names,""]})},a=c=>{e({...t,alias_names:t.alias_names.filter((d,h)=>h!==c)})},l=(c,d)=>{const h=[...t.alias_names];h[c]=d,e({...t,alias_names:h})};return o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"基本信息"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"platform",children:"平台"}),o.jsx(ze,{id:"platform",value:t.platform,onChange:c=>e({...t,platform:c.target.value}),placeholder:"qq"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"qq_account",children:"QQ账号"}),o.jsx(ze,{id:"qq_account",value:t.qq_account,onChange:c=>e({...t,qq_account:c.target.value}),placeholder:"123456789"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"nickname",children:"昵称"}),o.jsx(ze,{id:"nickname",value:t.nickname,onChange:c=>e({...t,nickname:c.target.value}),placeholder:"麦麦"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{children:"其他平台账号"}),o.jsxs(de,{onClick:n,size:"sm",variant:"outline",children:[o.jsx(Ls,{className:"h-4 w-4 mr-1"}),"添加"]})]}),o.jsxs("div",{className:"space-y-2",children:[t.platforms.map((c,d)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{value:c,onChange:h=>s(d,h.target.value),placeholder:"wx:114514"}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(de,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除平台账号 "',c||"(空)",'" 吗?此操作无法撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>r(d),children:"删除"})]})]})]})]},d)),t.platforms.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无其他平台账号"})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{children:"别名"}),o.jsxs(de,{onClick:i,size:"sm",variant:"outline",children:[o.jsx(Ls,{className:"h-4 w-4 mr-1"}),"添加"]})]}),o.jsxs("div",{className:"space-y-2",children:[t.alias_names.map((c,d)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{value:c,onChange:h=>l(d,h.target.value),placeholder:"小麦"}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(de,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除别名 "',c||"(空)",'" 吗?此操作无法撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>a(d),children:"删除"})]})]})]})]},d)),t.alias_names.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无别名"})]})]})]})]})})}function D0e({config:t,onChange:e}){const n=()=>{e({...t,states:[...t.states,""]})},r=i=>{e({...t,states:t.states.filter((a,l)=>l!==i)})},s=(i,a)=>{const l=[...t.states];l[i]=a,e({...t,states:l})};return o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"人格设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"personality",children:"人格特质"}),o.jsx(Mr,{id:"personality",value:t.personality,onChange:i=>e({...t,personality:i.target.value}),placeholder:"描述人格特质和身份特征(建议120字以内)",rows:3}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"建议120字以内,描述人格特质和身份特征"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"reply_style",children:"表达风格"}),o.jsx(Mr,{id:"reply_style",value:t.reply_style,onChange:i=>e({...t,reply_style:i.target.value}),placeholder:"描述说话的表达风格和习惯",rows:3})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"interest",children:"兴趣"}),o.jsx(Mr,{id:"interest",value:t.interest,onChange:i=>e({...t,interest:i.target.value}),placeholder:"会影响麦麦对什么话题进行回复",rows:2})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"plan_style",children:"说话规则与行为风格"}),o.jsx(Mr,{id:"plan_style",value:t.plan_style,onChange:i=>e({...t,plan_style:i.target.value}),placeholder:"麦麦的说话规则和行为风格",rows:5})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"visual_style",children:"识图规则"}),o.jsx(Mr,{id:"visual_style",value:t.visual_style,onChange:i=>e({...t,visual_style:i.target.value}),placeholder:"识图时的处理规则",rows:3})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"private_plan_style",children:"私聊规则"}),o.jsx(Mr,{id:"private_plan_style",value:t.private_plan_style,onChange:i=>e({...t,private_plan_style:i.target.value}),placeholder:"私聊的说话规则和行为风格",rows:4})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{children:"状态列表(人格多样性)"}),o.jsxs(de,{onClick:n,size:"sm",variant:"outline",children:[o.jsx(Ls,{className:"h-4 w-4 mr-1"}),"添加状态"]})]}),o.jsx("div",{className:"space-y-2",children:t.states.map((i,a)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Mr,{value:i,onChange:l=>s(a,l.target.value),placeholder:"描述一个人格状态",rows:2}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(de,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsx(_n,{children:"确定要删除这个人格状态吗?此操作无法撤销。"})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>r(a),children:"删除"})]})]})]})]},a))})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"state_probability",children:"状态替换概率"}),o.jsx(ze,{id:"state_probability",type:"number",step:"0.1",min:"0",max:"1",value:t.state_probability,onChange:i=>e({...t,state_probability:parseFloat(i.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"每次构建人格时替换 personality 的概率(0.0-1.0)"})]})]})]})})}function P0e({config:t,onChange:e}){const n=()=>{e({...t,talk_value_rules:[...t.talk_value_rules,{target:"",time:"00:00-23:59",value:1}]})},r=l=>{e({...t,talk_value_rules:t.talk_value_rules.filter((c,d)=>d!==l)})},s=(l,c,d)=>{const h=[...t.talk_value_rules];h[l]={...h[l],[c]:d},e({...t,talk_value_rules:h})},i=({value:l,onChange:c})=>{const[d,h]=b.useState("00"),[m,g]=b.useState("00"),[x,y]=b.useState("23"),[w,S]=b.useState("59");b.useEffect(()=>{const j=l.split("-");if(j.length===2){const[N,T]=j,[E,_]=N.split(":"),[A,L]=T.split(":");E&&h(E.padStart(2,"0")),_&&g(_.padStart(2,"0")),A&&y(A.padStart(2,"0")),L&&S(L.padStart(2,"0"))}},[l]);const k=(j,N,T,E)=>{const _=`${j}:${N}-${T}:${E}`;c(_)};return o.jsxs(zo,{children:[o.jsx(Io,{asChild:!0,children:o.jsxs(de,{variant:"outline",className:"w-full justify-start font-mono text-sm",children:[o.jsx(_h,{className:"h-4 w-4 mr-2"}),l||"选择时间段"]})}),o.jsx(Xa,{className:"w-80",children:o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"font-medium text-sm mb-3",children:"开始时间"}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-xs",children:"小时"}),o.jsxs(Vt,{value:d,onValueChange:j=>{h(j),k(j,m,x,w)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:Array.from({length:24},(j,N)=>N).map(j=>o.jsx(De,{value:j.toString().padStart(2,"0"),children:j.toString().padStart(2,"0")},j))})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-xs",children:"分钟"}),o.jsxs(Vt,{value:m,onValueChange:j=>{g(j),k(d,j,x,w)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:Array.from({length:60},(j,N)=>N).map(j=>o.jsx(De,{value:j.toString().padStart(2,"0"),children:j.toString().padStart(2,"0")},j))})]})]})]})]}),o.jsxs("div",{children:[o.jsx("h4",{className:"font-medium text-sm mb-3",children:"结束时间"}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-xs",children:"小时"}),o.jsxs(Vt,{value:x,onValueChange:j=>{y(j),k(d,m,j,w)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:Array.from({length:24},(j,N)=>N).map(j=>o.jsx(De,{value:j.toString().padStart(2,"0"),children:j.toString().padStart(2,"0")},j))})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-xs",children:"分钟"}),o.jsxs(Vt,{value:w,onValueChange:j=>{S(j),k(d,m,x,j)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:Array.from({length:60},(j,N)=>N).map(j=>o.jsx(De,{value:j.toString().padStart(2,"0"),children:j.toString().padStart(2,"0")},j))})]})]})]})]})]})})]})},a=({rule:l})=>{const c=`{ target = "${l.target}", time = "${l.time}", value = ${l.value.toFixed(1)} }`;return o.jsxs(zo,{children:[o.jsx(Io,{asChild:!0,children:o.jsxs(de,{variant:"outline",size:"sm",children:[o.jsx(Ea,{className:"h-4 w-4 mr-1"}),"预览"]})}),o.jsx(Xa,{className:"w-96",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),o.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:c}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"聊天设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"talk_value",children:"聊天频率(基础值)"}),o.jsx(ze,{id:"talk_value",type:"number",step:"0.1",min:"0",max:"1",value:t.talk_value,onChange:l=>e({...t,talk_value:parseFloat(l.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"越小越沉默,范围 0-1"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"mentioned_bot_reply",checked:t.mentioned_bot_reply,onCheckedChange:l=>e({...t,mentioned_bot_reply:l})}),o.jsx(he,{htmlFor:"mentioned_bot_reply",className:"cursor-pointer",children:"启用提及必回复"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"max_context_size",children:"上下文长度"}),o.jsx(ze,{id:"max_context_size",type:"number",min:"1",value:t.max_context_size,onChange:l=>e({...t,max_context_size:parseInt(l.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"planner_smooth",children:"规划器平滑"}),o.jsx(ze,{id:"planner_smooth",type:"number",step:"1",min:"0",value:t.planner_smooth,onChange:l=>e({...t,planner_smooth:parseFloat(l.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"增大数值会减小 planner 负荷,推荐 1-5,0 为关闭"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"enable_talk_value_rules",checked:t.enable_talk_value_rules,onCheckedChange:l=>e({...t,enable_talk_value_rules:l})}),o.jsx(he,{htmlFor:"enable_talk_value_rules",className:"cursor-pointer",children:"启用动态发言频率规则"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"include_planner_reasoning",checked:t.include_planner_reasoning,onCheckedChange:l=>e({...t,include_planner_reasoning:l})}),o.jsx(he,{htmlFor:"include_planner_reasoning",className:"cursor-pointer",children:"将 planner 推理加入 replyer"})]})]})]}),t.enable_talk_value_rules&&o.jsxs("div",{className:"border-t pt-6",children:[o.jsxs("div",{className:"flex items-center justify-between mb-4",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"text-base font-semibold",children:"动态发言频率规则"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"按时段或聊天流ID调整发言频率,优先匹配具体聊天,再匹配全局规则"})]}),o.jsxs(de,{onClick:n,size:"sm",children:[o.jsx(Ls,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),t.talk_value_rules&&t.talk_value_rules.length>0?o.jsx("div",{className:"space-y-4",children:t.talk_value_rules.map((l,c)=>o.jsxs("div",{className:"rounded-lg border p-4 bg-muted/50 space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium text-muted-foreground",children:["规则 #",c+1]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(a,{rule:l}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(de,{variant:"ghost",size:"sm",children:o.jsx(Sn,{className:"h-4 w-4 text-destructive"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除规则 #",c+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>r(c),children:"删除"})]})]})]})]})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"配置类型"}),o.jsxs(Vt,{value:l.target===""?"global":"specific",onValueChange:d=>{d==="global"?s(c,"target",""):s(c,"target","qq::group")},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"global",children:"全局配置"}),o.jsx(De,{value:"specific",children:"详细配置"})]})]})]}),l.target!==""&&(()=>{const d=l.target.split(":"),h=d[0]||"qq",m=d[1]||"",g=d[2]||"group";return o.jsxs("div",{className:"grid gap-4 p-4 rounded-lg bg-muted/50",children:[o.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"平台"}),o.jsxs(Vt,{value:h,onValueChange:x=>{s(c,"target",`${x}:${m}:${g}`)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"qq",children:"QQ"}),o.jsx(De,{value:"wx",children:"微信"})]})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"群 ID"}),o.jsx(ze,{value:m,onChange:x=>{s(c,"target",`${h}:${x.target.value}:${g}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"类型"}),o.jsxs(Vt,{value:g,onValueChange:x=>{s(c,"target",`${h}:${m}:${x}`)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"group",children:"群组(group)"}),o.jsx(De,{value:"private",children:"私聊(private)"})]})]})]})]}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",l.target||"(未设置)"]})]})})(),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"时间段 (Time)"}),o.jsx(i,{value:l.time,onChange:d=>s(c,"time",d)}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"支持跨夜区间,例如 23:00-02:00"})]}),o.jsxs("div",{className:"grid gap-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{htmlFor:`rule-value-${c}`,className:"text-xs font-medium",children:"发言频率值 (Value)"}),o.jsx(ze,{id:`rule-value-${c}`,type:"number",step:"0.01",min:"0.01",max:"1",value:l.value,onChange:d=>{const h=parseFloat(d.target.value);isNaN(h)||s(c,"value",Math.max(.01,Math.min(1,h)))},className:"w-20 h-8 text-xs"})]}),o.jsx(Bp,{value:[l.value],onValueChange:d=>s(c,"value",d[0]),min:.01,max:1,step:.01,className:"w-full"}),o.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[o.jsx("span",{children:"0.01 (极少发言)"}),o.jsx("span",{children:"0.5"}),o.jsx("span",{children:"1.0 (正常)"})]})]})]})]},c))}):o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:o.jsx("p",{className:"text-sm",children:'暂无规则,点击"添加规则"按钮创建'})}),o.jsxs("div",{className:"mt-4 p-4 bg-blue-50 dark:bg-blue-950/20 border border-blue-200 dark:border-blue-800 rounded-lg",children:[o.jsx("h5",{className:"text-sm font-semibold text-blue-900 dark:text-blue-100 mb-2",children:"📝 规则说明"}),o.jsxs("ul",{className:"text-xs text-blue-800 dark:text-blue-200 space-y-1",children:[o.jsxs("li",{children:["• ",o.jsx("strong",{children:"Target 为空"}),":全局规则,对所有聊天生效"]}),o.jsxs("li",{children:["• ",o.jsx("strong",{children:"Target 指定"}),":仅对特定聊天流生效(格式:platform:id:type)"]}),o.jsxs("li",{children:["• ",o.jsx("strong",{children:"优先级"}),":先匹配具体聊天流规则,再匹配全局规则"]}),o.jsxs("li",{children:["• ",o.jsx("strong",{children:"时间支持跨夜"}),":例如 23:00-02:00 表示晚上11点到次日凌晨2点"]}),o.jsxs("li",{children:["• ",o.jsx("strong",{children:"数值范围"}),":建议 0-1,0 表示完全沉默,1 表示正常发言"]})]})]})]})]})}function z0e({member:t,groupIndex:e,memberIndex:n,availableChatIds:r,onUpdate:s,onRemove:i}){const a=r.includes(t)||t==="*",[l,c]=b.useState(!a);return o.jsxs("div",{className:"flex gap-2",children:[o.jsx("div",{className:"flex-1 flex gap-2",children:l?o.jsxs(o.Fragment,{children:[o.jsx(ze,{value:t,onChange:d=>s(e,n,d.target.value),placeholder:'输入 "*" 或 "qq:123456:group"',className:"flex-1"}),r.length>0&&o.jsx(de,{size:"sm",variant:"outline",onClick:()=>c(!1),title:"切换到下拉选择",children:"下拉"})]}):o.jsxs(o.Fragment,{children:[o.jsxs(Vt,{value:t,onValueChange:d=>s(e,n,d),children:[o.jsx($t,{className:"flex-1",children:o.jsx(Ut,{placeholder:"选择聊天流"})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"*",children:"* (全局共享)"}),r.map((d,h)=>o.jsx(De,{value:d,children:d},h))]})]}),o.jsx(de,{size:"sm",variant:"outline",onClick:()=>c(!0),title:"切换到手动输入",children:"输入"})]})}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(de,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除组成员 "',t||"(空)",'" 吗?此操作无法撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>i(e,n),children:"删除"})]})]})]})]})}function I0e({config:t,onChange:e}){const n=()=>{e({...t,learning_list:[...t.learning_list,["","enable","enable","1.0"]]})},r=m=>{e({...t,learning_list:t.learning_list.filter((g,x)=>x!==m)})},s=(m,g,x)=>{const y=[...t.learning_list];y[m][g]=x,e({...t,learning_list:y})},i=({rule:m})=>{const g=`["${m[0]}", "${m[1]}", "${m[2]}", "${m[3]}"]`;return o.jsxs(zo,{children:[o.jsx(Io,{asChild:!0,children:o.jsxs(de,{variant:"outline",size:"sm",children:[o.jsx(Ea,{className:"h-4 w-4 mr-1"}),"预览"]})}),o.jsx(Xa,{className:"w-96",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),o.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:g}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},a=()=>{e({...t,expression_groups:[...t.expression_groups,[]]})},l=m=>{e({...t,expression_groups:t.expression_groups.filter((g,x)=>x!==m)})},c=m=>{const g=[...t.expression_groups];g[m]=[...g[m],""],e({...t,expression_groups:g})},d=(m,g)=>{const x=[...t.expression_groups];x[m]=x[m].filter((y,w)=>w!==g),e({...t,expression_groups:x})},h=(m,g,x)=>{const y=[...t.expression_groups];y[m][g]=x,e({...t,expression_groups:y})};return o.jsxs("div",{className:"space-y-6",children:[o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center justify-between mb-4",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold",children:"表达学习配置"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置麦麦如何学习和使用表达方式"})]}),o.jsxs(de,{onClick:n,size:"sm",variant:"outline",children:[o.jsx(Ls,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),o.jsxs("div",{className:"space-y-4",children:[t.learning_list.map((m,g)=>{const x=t.learning_list.some((N,T)=>T!==g&&N[0]===""),y=m[0]==="",w=m[0].split(":"),S=w[0]||"qq",k=w[1]||"",j=w[2]||"group";return o.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium",children:["规则 ",g+1," ",y&&"(全局配置)"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(i,{rule:m}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(de,{size:"sm",variant:"ghost",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除学习规则 ",g+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>r(g),children:"删除"})]})]})]})]})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"配置类型"}),o.jsxs(Vt,{value:y?"global":"specific",onValueChange:N=>{N==="global"?s(g,0,""):s(g,0,"qq::group")},disabled:x&&!y,children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"global",children:"全局配置"}),o.jsx(De,{value:"specific",disabled:x&&!y,children:"详细配置"})]})]}),x&&!y&&o.jsx("p",{className:"text-xs text-amber-600",children:"已存在全局配置,无法创建新的全局配置"})]}),!y&&o.jsxs("div",{className:"grid gap-4 p-4 rounded-lg bg-muted/50",children:[o.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"平台"}),o.jsxs(Vt,{value:S,onValueChange:N=>{s(g,0,`${N}:${k}:${j}`)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"qq",children:"QQ"}),o.jsx(De,{value:"wx",children:"微信"})]})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"群 ID"}),o.jsx(ze,{value:k,onChange:N=>{s(g,0,`${S}:${N.target.value}:${j}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"类型"}),o.jsxs(Vt,{value:j,onValueChange:N=>{s(g,0,`${S}:${k}:${N}`)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"group",children:"群组(group)"}),o.jsx(De,{value:"private",children:"私聊(private)"})]})]})]})]}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",m[0]||"(未设置)"]})]}),o.jsx("div",{className:"grid gap-2",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-xs font-medium",children:"使用学到的表达"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦使用从聊天中学到的表达方式"})]}),o.jsx(Bt,{checked:m[1]==="enable",onCheckedChange:N=>s(g,1,N?"enable":"disable")})]})}),o.jsx("div",{className:"grid gap-2",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-xs font-medium",children:"学习表达"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦从聊天中学习新的表达方式"})]}),o.jsx(Bt,{checked:m[2]==="enable",onCheckedChange:N=>s(g,2,N?"enable":"disable")})]})}),o.jsxs("div",{className:"grid gap-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{className:"text-xs font-medium",children:"学习强度"}),o.jsx(ze,{type:"number",step:"0.1",min:"0",max:"5",value:m[3],onChange:N=>{const T=parseFloat(N.target.value);isNaN(T)||s(g,3,Math.max(0,Math.min(5,T)).toFixed(1))},className:"w-20 h-8 text-xs"})]}),o.jsx(Bp,{value:[parseFloat(m[3])||1],onValueChange:N=>s(g,3,N[0].toFixed(1)),min:0,max:5,step:.1,className:"w-full"}),o.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[o.jsx("span",{children:"0 (不学习)"}),o.jsx("span",{children:"2.5"}),o.jsx("span",{children:"5.0 (快速学习)"})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"影响学习频率,最短学习间隔 = 300/学习强度(秒)"})]})]})]},g)}),t.learning_list.length===0&&o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无学习规则,点击"添加规则"开始配置'})]})]})}),o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center justify-between mb-4",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold",children:"表达共享组配置"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置不同聊天流之间如何共享学到的表达方式"})]}),o.jsxs(de,{onClick:a,size:"sm",variant:"outline",children:[o.jsx(Ls,{className:"h-4 w-4 mr-1"}),"添加共享组"]})]}),o.jsxs("div",{className:"space-y-4",children:[t.expression_groups.map((m,g)=>{const x=t.learning_list.map(y=>y[0]).filter(y=>y!=="");return o.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium",children:["共享组 ",g+1,m.length===1&&m[0]==="*"&&"(全局共享)"]}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx(de,{onClick:()=>c(g),size:"sm",variant:"outline",children:o.jsx(Ls,{className:"h-4 w-4"})}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(de,{size:"sm",variant:"ghost",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除共享组 ",g+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>l(g),children:"删除"})]})]})]})]})]}),o.jsx("div",{className:"space-y-2",children:m.map((y,w)=>o.jsx(z0e,{member:y,groupIndex:g,memberIndex:w,availableChatIds:x,onUpdate:h,onRemove:d},`${g}-${w}`))}),o.jsx("p",{className:"text-xs text-muted-foreground",children:'提示:可以从下拉框选择已配置的聊天流,或手动输入。输入 "*" 启用全局共享'})]},g)}),t.expression_groups.length===0&&o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无共享组,点击"添加共享组"开始配置'})]})]})})]})}function L0e({emojiConfig:t,memoryConfig:e,toolConfig:n,onEmojiChange:r,onMemoryChange:s,onToolChange:i}){return o.jsxs("div",{className:"space-y-6",children:[o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"工具设置"}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"enable_tool",checked:n.enable_tool,onCheckedChange:a=>i({...n,enable_tool:a})}),o.jsx(he,{htmlFor:"enable_tool",className:"cursor-pointer",children:"启用工具系统"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"允许麦麦使用各种工具来增强功能"})]})}),o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"记忆设置"}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"max_agent_iterations",children:"记忆思考深度"}),o.jsx(ze,{id:"max_agent_iterations",type:"number",min:"1",value:e.max_agent_iterations,onChange:a=>s({...e,max_agent_iterations:parseInt(a.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"最低为 1(不深入思考)"})]})]})}),o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"表情包设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"emoji_chance",children:"表情包激活概率"}),o.jsx(ze,{id:"emoji_chance",type:"number",step:"0.1",min:"0",max:"1",value:t.emoji_chance,onChange:a=>r({...t,emoji_chance:parseFloat(a.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"范围 0-1,越大越容易发送表情包"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"max_reg_num",children:"最大注册数量"}),o.jsx(ze,{id:"max_reg_num",type:"number",min:"1",value:t.max_reg_num,onChange:a=>r({...t,max_reg_num:parseInt(a.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦最多可以注册的表情包数量"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),o.jsx(ze,{id:"check_interval",type:"number",min:"1",value:t.check_interval,onChange:a=>r({...t,check_interval:parseInt(a.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包(注册、破损、删除)的时间间隔"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"do_replace",checked:t.do_replace,onCheckedChange:a=>r({...t,do_replace:a})}),o.jsx(he,{htmlFor:"do_replace",className:"cursor-pointer",children:"达到最大数量时替换表情包"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"steal_emoji",checked:t.steal_emoji,onCheckedChange:a=>r({...t,steal_emoji:a})}),o.jsx(he,{htmlFor:"steal_emoji",className:"cursor-pointer",children:"偷取表情包"})]}),o.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"允许麦麦将看到的表情包据为己有"}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"content_filtration",checked:t.content_filtration,onCheckedChange:a=>r({...t,content_filtration:a})}),o.jsx(he,{htmlFor:"content_filtration",className:"cursor-pointer",children:"启用表情包过滤"})]}),t.content_filtration&&o.jsxs("div",{className:"grid gap-2 pl-6 border-l-2 border-primary/20",children:[o.jsx(he,{htmlFor:"filtration_prompt",children:"过滤要求"}),o.jsx(ze,{id:"filtration_prompt",value:t.filtration_prompt,onChange:a=>r({...t,filtration_prompt:a.target.value}),placeholder:"符合公序良俗"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"只有符合此要求的表情包才会被保存"})]})]})]})})]})}function B0e({keywordReactionConfig:t,responsePostProcessConfig:e,chineseTypoConfig:n,responseSplitterConfig:r,onKeywordReactionChange:s,onResponsePostProcessChange:i,onChineseTypoChange:a,onResponseSplitterChange:l}){const c=()=>{s({...t,regex_rules:[...t.regex_rules,{regex:[""],reaction:""}]})},d=T=>{s({...t,regex_rules:t.regex_rules.filter((E,_)=>_!==T)})},h=(T,E,_)=>{const A=[...t.regex_rules];E==="regex"&&typeof _=="string"?A[T]={...A[T],regex:[_]}:E==="reaction"&&typeof _=="string"&&(A[T]={...A[T],reaction:_}),s({...t,regex_rules:A})},m=({regex:T,reaction:E,onRegexChange:_,onReactionChange:A})=>{const[L,P]=b.useState(!1),[B,$]=b.useState(""),[U,te]=b.useState(null),[z,Q]=b.useState(""),[F,Y]=b.useState({}),[J,X]=b.useState(""),R=b.useRef(null),[ie,G]=b.useState("build"),I=W=>W.replace(/\(\?P<([^>]+)>/g,"(?<$1>"),V=(W,se=0)=>{const re=R.current;if(!re)return;const oe=re.selectionStart||0,Te=re.selectionEnd||0,We=T.substring(0,oe)+W+T.substring(Te);_(We),setTimeout(()=>{const Ye=oe+W.length+se;re.setSelectionRange(Ye,Ye),re.focus()},0)};b.useEffect(()=>{if(!T||!B){te(null),Y({}),X(E),Q("");return}try{const W=I(T),se=new RegExp(W,"g"),re=B.match(se);te(re),Q("");const Te=new RegExp(W).exec(B);if(Te&&Te.groups){Y(Te.groups);let We=E;Object.entries(Te.groups).forEach(([Ye,Je])=>{We=We.replace(new RegExp(`\\[${Ye}\\]`,"g"),Je||"")}),X(We)}else Y({}),X(E)}catch(W){Q(W.message),te(null),Y({}),X(E)}},[T,B,E]);const ee=()=>{if(!B||!U||U.length===0)return o.jsx("span",{className:"text-muted-foreground",children:B||"请输入测试文本"});try{const W=I(T),se=new RegExp(W,"g");let re=0;const oe=[];let Te;for(;(Te=se.exec(B))!==null;)Te.index>re&&oe.push(o.jsx("span",{children:B.substring(re,Te.index)},`text-${re}`)),oe.push(o.jsx("span",{className:"bg-yellow-200 dark:bg-yellow-900 font-semibold",children:Te[0]},`match-${Te.index}`)),re=Te.index+Te[0].length;return re)",desc:"Python风格命名捕获组",moveCursor:-1},{label:"非捕获组",pattern:"(?:)",desc:"分组但不保存匹配结果",moveCursor:-1}]},{category:"字符类",items:[{label:"字符集",pattern:"[]",desc:"匹配括号内的任意字符",moveCursor:-1},{label:"排除字符",pattern:"[^]",desc:"匹配不在括号内的字符",moveCursor:-1},{label:"范围",pattern:"[a-z]",desc:"匹配a到z的字符"},{label:"中文字符",pattern:"[\\u4e00-\\u9fa5]",desc:"匹配中文汉字"}]},{category:"常用模板",items:[{label:"捕获词语",pattern:"(?P\\S+)",desc:"捕获一个词语"},{label:"捕获句子",pattern:"(?P.+)",desc:"捕获整个句子"},{label:"捕获数字",pattern:"(?P\\d+)",desc:"捕获一个或多个数字"},{label:"可选词语",pattern:"(?:词语1|词语2)",desc:"匹配多个可选项之一"}]}];return o.jsxs(Dr,{open:L,onOpenChange:P,children:[o.jsx(Of,{asChild:!0,children:o.jsxs(de,{variant:"outline",size:"sm",children:[o.jsx(Pv,{className:"h-4 w-4 mr-1"}),"正则编辑器"]})}),o.jsxs(Sr,{className:"max-w-[95vw] sm:max-w-[900px] max-h-[90vh]",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"正则表达式编辑器"}),o.jsx(ss,{className:"text-sm",children:"使用可视化工具构建正则表达式,并实时测试效果"})]}),o.jsx(gn,{className:"max-h-[calc(90vh-120px)]",children:o.jsxs(ja,{value:ie,onValueChange:W=>G(W),className:"w-full",children:[o.jsxs(Wi,{className:"grid w-full grid-cols-2",children:[o.jsx(Lt,{value:"build",children:"🔧 构建器"}),o.jsx(Lt,{value:"test",children:"🧪 测试器"})]}),o.jsxs(un,{value:"build",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{className:"text-sm font-medium",children:"正则表达式"}),o.jsx(ze,{ref:R,value:T,onChange:W=>_(W.target.value),className:"font-mono text-sm",placeholder:"点击下方按钮构建正则表达式..."})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{className:"text-sm font-medium",children:"Reaction 内容"}),o.jsx(Mr,{value:E,onChange:W=>A(W.target.value),placeholder:"使用 [捕获组名] 引用捕获的内容...",rows:3,className:"text-sm"})]}),o.jsxs("div",{className:"space-y-4 border-t pt-4",children:[ne.map(W=>o.jsxs("div",{className:"space-y-2",children:[o.jsx("h5",{className:"text-xs font-semibold text-primary",children:W.category}),o.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:W.items.map(se=>o.jsx(de,{variant:"outline",size:"sm",className:"justify-start h-auto py-2 px-3",onClick:()=>V(se.pattern,se.moveCursor||0),children:o.jsxs("div",{className:"flex flex-col items-start w-full",children:[o.jsxs("div",{className:"flex items-center gap-2 w-full",children:[o.jsx("span",{className:"text-xs font-medium",children:se.label}),o.jsx("code",{className:"ml-auto text-xs bg-muted px-1.5 py-0.5 rounded font-mono",children:se.pattern})]}),o.jsx("span",{className:"text-xs text-muted-foreground mt-0.5",children:se.desc})]})},se.label))})]},W.category)),o.jsxs("div",{className:"space-y-2 border-t pt-4",children:[o.jsx("h5",{className:"text-xs font-semibold text-primary",children:"完整示例模板"}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>_("^(?P\\S{1,20})是这样的$"),children:o.jsxs("div",{className:"flex flex-col items-start w-full",children:[o.jsxs("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:["^(?P\\S","{1,20}",")是这样的$"]}),o.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「某事物是这样的」并捕获事物名称"})]})}),o.jsx(de,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>_("(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"),children:o.jsxs("div",{className:"flex flex-col items-start w-full",children:[o.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"}),o.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「我没要求你做某事」并捕获具体行为"})]})}),o.jsx(de,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>_("(?P.+?)(?:是|为什么|怎么)"),children:o.jsxs("div",{className:"flex flex-col items-start w-full",children:[o.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?P.+?)(?:是|为什么|怎么)"}),o.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"捕获问题主题词"})]})})]})]})]}),o.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[o.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 使用提示"}),o.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[o.jsx("li",{children:"点击输入框设置光标位置,然后点击按钮插入模式"}),o.jsxs("li",{children:["命名捕获组格式:",o.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"(?P<名称>模式)"})]}),o.jsxs("li",{children:["在 reaction 中使用 ",o.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"[名称]"})," 引用捕获的内容"]}),o.jsx("li",{children:"切换到测试器标签页验证正则表达式效果"})]})]})]}),o.jsxs(un,{value:"test",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{className:"text-sm font-medium",children:"当前正则表达式"}),o.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:T||"(未设置)"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"test-text",className:"text-sm font-medium",children:"测试文本"}),o.jsx(Mr,{id:"test-text",value:B,onChange:W=>$(W.target.value),placeholder:`在此输入要测试的文本... +例如:打游戏是这样的`,className:"min-h-[100px] text-sm"})]}),z&&o.jsxs("div",{className:"rounded-md bg-destructive/10 border border-destructive/20 p-3",children:[o.jsx("p",{className:"text-sm text-destructive font-medium",children:"正则表达式错误"}),o.jsx("p",{className:"text-xs text-destructive/80 mt-1",children:z})]}),!z&&B&&o.jsxs("div",{className:"space-y-3",children:[o.jsx("div",{className:"flex items-center gap-2",children:U&&U.length>0?o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-green-500"}),o.jsxs("span",{className:"text-sm font-medium text-green-600 dark:text-green-400",children:["匹配成功 (",U.length," 处)"]})]}):o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-gray-400"}),o.jsx("span",{className:"text-sm font-medium text-muted-foreground",children:"无匹配"})]})}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{className:"text-sm font-medium",children:"匹配高亮"}),o.jsx(gn,{className:"h-40 rounded-md bg-muted p-3",children:o.jsx("div",{className:"text-sm break-words",children:ee()})})]}),Object.keys(F).length>0&&o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{className:"text-sm font-medium",children:"命名捕获组"}),o.jsx(gn,{className:"h-32 rounded-md border p-3",children:o.jsx("div",{className:"space-y-2",children:Object.entries(F).map(([W,se])=>o.jsxs("div",{className:"flex items-start gap-2 text-sm",children:[o.jsxs("span",{className:"font-mono font-semibold text-primary min-w-[80px]",children:["[",W,"]"]}),o.jsx("span",{className:"text-muted-foreground",children:"="}),o.jsx("span",{className:"font-mono bg-muted px-2 py-0.5 rounded",children:se})]},W))})})]}),Object.keys(F).length>0&&E&&o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{className:"text-sm font-medium",children:"Reaction 替换预览"}),o.jsx(gn,{className:"h-48 rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3",children:o.jsx("div",{className:"text-sm break-words",children:J})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"reaction 中的 [name] 已被替换为对应的捕获组值"})]})]}),o.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[o.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 测试说明"}),o.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[o.jsx("li",{children:"匹配的文本会以黄色背景高亮显示"}),o.jsx("li",{children:"命名捕获组的值会显示在下方列表中"}),o.jsx("li",{children:"Reaction 替换预览显示最终生成的反应内容"}),o.jsx("li",{children:"如需修改正则,切换回构建器标签页"})]})]})]})]})})]})]})},g=()=>{s({...t,keyword_rules:[...t.keyword_rules,{keywords:[],reaction:""}]})},x=T=>{s({...t,keyword_rules:t.keyword_rules.filter((E,_)=>_!==T)})},y=(T,E,_)=>{const A=[...t.keyword_rules];typeof _=="string"&&(A[T]={...A[T],reaction:_}),s({...t,keyword_rules:A})},w=T=>{const E=[...t.keyword_rules];E[T]={...E[T],keywords:[...E[T].keywords||[],""]},s({...t,keyword_rules:E})},S=(T,E)=>{const _=[...t.keyword_rules];_[T]={..._[T],keywords:(_[T].keywords||[]).filter((A,L)=>L!==E)},s({...t,keyword_rules:_})},k=(T,E,_)=>{const A=[...t.keyword_rules],L=[...A[T].keywords||[]];L[E]=_,A[T]={...A[T],keywords:L},s({...t,keyword_rules:A})},j=({rule:T})=>{const E=`{ regex = [${(T.regex||[]).map(_=>`"${_}"`).join(", ")}], reaction = "${T.reaction}" }`;return o.jsxs(zo,{children:[o.jsx(Io,{asChild:!0,children:o.jsxs(de,{variant:"outline",size:"sm",children:[o.jsx(Ea,{className:"h-4 w-4 mr-1"}),"预览"]})}),o.jsx(Xa,{className:"w-[95vw] sm:w-[500px]",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),o.jsx(gn,{className:"h-60 rounded-md bg-muted p-3",children:o.jsx("pre",{className:"font-mono text-xs break-all",children:E})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},N=({rule:T})=>{const E=`[[keyword_reaction.keyword_rules]] keywords = [${(T.keywords||[]).map(_=>`"${_}"`).join(", ")}] -reaction = "${T.reaction}"`;return o.jsxs(Po,{children:[o.jsx(zo,{asChild:!0,children:o.jsxs(he,{variant:"outline",size:"sm",children:[o.jsx(Ea,{className:"h-4 w-4 mr-1"}),"预览"]})}),o.jsx(Xa,{className:"w-[95vw] sm:w-[500px]",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),o.jsx(wn,{className:"h-60 rounded-md bg-muted p-3",children:o.jsx("pre",{className:"font-mono text-xs whitespace-pre-wrap break-all",children:E})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"关键词反应配置"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"配置触发特定反应的关键词和正则表达式规则"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"text-base font-semibold",children:"正则表达式规则"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用正则表达式匹配消息内容"})]}),o.jsxs(he,{onClick:c,size:"sm",variant:"outline",children:[o.jsx(zs,{className:"h-4 w-4 mr-1"}),"添加正则规则"]})]}),o.jsxs("div",{className:"space-y-3",children:[t.regex_rules.map((T,E)=>o.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium",children:["正则规则 ",E+1]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(m,{regex:T.regex&&T.regex[0]||"",reaction:T.reaction,onRegexChange:_=>h(E,"regex",_),onReactionChange:_=>h(E,"reaction",_)}),o.jsx(j,{rule:T}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(he,{size:"sm",variant:"ghost",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除正则规则 ",E+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>d(E),children:"删除"})]})]})]})]})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-xs font-medium",children:"正则表达式(Python 语法)"}),o.jsx(ze,{value:T.regex&&T.regex[0]||"",onChange:_=>h(E,"regex",_.target.value),placeholder:"例如:^(?P\\\\S{1,20})是这样的$ (点击正则编辑器按钮可视化构建)",className:"font-mono text-sm"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:'支持命名捕获组 (?Ppattern),可在 reaction 中使用 [name] 引用。点击"正则编辑器"可视化构建和测试!'})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-xs font-medium",children:"反应内容"}),o.jsx(Ar,{value:T.reaction,onChange:_=>h(E,"reaction",_.target.value),placeholder:`触发后麦麦的反应... -可以使用 [捕获组名] 来引用正则表达式中的内容`,rows:3,className:"text-sm"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"使用 [捕获组名] 引用正则表达式中的命名捕获组,例如 [n] 会被替换为捕获的内容"})]})]})]},E)),t.regex_rules.length===0&&o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无正则规则,点击"添加正则规则"开始配置'})]})]}),o.jsxs("div",{className:"space-y-4 border-t pt-6",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"text-base font-semibold",children:"关键词规则"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用关键词列表匹配消息内容"})]}),o.jsxs(he,{onClick:g,size:"sm",variant:"outline",children:[o.jsx(zs,{className:"h-4 w-4 mr-1"}),"添加关键词规则"]})]}),o.jsxs("div",{className:"space-y-3",children:[t.keyword_rules.map((T,E)=>o.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium",children:["关键词规则 ",E+1]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(N,{rule:T}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(he,{size:"sm",variant:"ghost",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除关键词规则 ",E+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>x(E),children:"删除"})]})]})]})]})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(de,{className:"text-xs font-medium",children:"关键词列表"}),o.jsxs(he,{onClick:()=>w(E),size:"sm",variant:"ghost",children:[o.jsx(zs,{className:"h-3 w-3 mr-1"}),"添加关键词"]})]}),o.jsxs("div",{className:"space-y-2",children:[(T.keywords||[]).map((_,M)=>o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{value:_,onChange:I=>k(E,M,I.target.value),placeholder:"关键词",className:"flex-1"}),o.jsx(he,{onClick:()=>S(E,M),size:"sm",variant:"ghost",children:o.jsx(Sn,{className:"h-4 w-4"})})]},M)),(!T.keywords||T.keywords.length===0)&&o.jsx("p",{className:"text-xs text-muted-foreground text-center py-2",children:'暂无关键词,点击"添加关键词"开始配置'})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-xs font-medium",children:"反应内容"}),o.jsx(Ar,{value:T.reaction,onChange:_=>y(E,"reaction",_.target.value),placeholder:"触发后麦麦的反应...",rows:3,className:"text-sm"})]})]})]},E)),t.keyword_rules.length===0&&o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无关键词规则,点击"添加关键词规则"开始配置'})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"回复后处理配置"}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"enable_response_post_process",checked:e.enable_response_post_process,onCheckedChange:T=>i({...e,enable_response_post_process:T})}),o.jsx(de,{htmlFor:"enable_response_post_process",className:"cursor-pointer",children:"启用回复后处理"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"包括错别字生成器和回复分割器"})]}),e.enable_response_post_process&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"border-t pt-6 space-y-4",children:o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[o.jsx(Bt,{id:"enable_chinese_typo",checked:n.enable,onCheckedChange:T=>a({...n,enable:T})}),o.jsx(de,{htmlFor:"enable_chinese_typo",className:"cursor-pointer font-semibold",children:"中文错别字生成器"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"为回复添加随机错别字,让麦麦的回复更自然"}),n.enable&&o.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"error_rate",className:"text-xs font-medium",children:"单字替换概率"}),o.jsx(ze,{id:"error_rate",type:"number",step:"0.001",min:"0",max:"1",value:n.error_rate,onChange:T=>a({...n,error_rate:parseFloat(T.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"min_freq",className:"text-xs font-medium",children:"最小字频阈值"}),o.jsx(ze,{id:"min_freq",type:"number",min:"0",value:n.min_freq,onChange:T=>a({...n,min_freq:parseInt(T.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"tone_error_rate",className:"text-xs font-medium",children:"声调错误概率"}),o.jsx(ze,{id:"tone_error_rate",type:"number",step:"0.01",min:"0",max:"1",value:n.tone_error_rate,onChange:T=>a({...n,tone_error_rate:parseFloat(T.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"word_replace_rate",className:"text-xs font-medium",children:"整词替换概率"}),o.jsx(ze,{id:"word_replace_rate",type:"number",step:"0.001",min:"0",max:"1",value:n.word_replace_rate,onChange:T=>a({...n,word_replace_rate:parseFloat(T.target.value)})})]})]})]})}),o.jsx("div",{className:"border-t pt-6 space-y-4",children:o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[o.jsx(Bt,{id:"enable_response_splitter",checked:r.enable,onCheckedChange:T=>l({...r,enable:T})}),o.jsx(de,{htmlFor:"enable_response_splitter",className:"cursor-pointer font-semibold",children:"回复分割器"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"控制回复的长度和句子数量"}),r.enable&&o.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"max_length",className:"text-xs font-medium",children:"最大长度"}),o.jsx(ze,{id:"max_length",type:"number",min:"1",value:r.max_length,onChange:T=>l({...r,max_length:parseInt(T.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大字符数"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"max_sentence_num",className:"text-xs font-medium",children:"最大句子数"}),o.jsx(ze,{id:"max_sentence_num",type:"number",min:"1",value:r.max_sentence_num,onChange:T=>l({...r,max_sentence_num:parseInt(T.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大句子数量"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"enable_kaomoji_protection",checked:r.enable_kaomoji_protection,onCheckedChange:T=>l({...r,enable_kaomoji_protection:T})}),o.jsx(de,{htmlFor:"enable_kaomoji_protection",className:"cursor-pointer",children:"启用颜文字保护"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"enable_overflow_return_all",checked:r.enable_overflow_return_all,onCheckedChange:T=>l({...r,enable_overflow_return_all:T})}),o.jsx(de,{htmlFor:"enable_overflow_return_all",className:"cursor-pointer",children:"超出时一次性返回全部"})]}),o.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"当句子数量超出限制时,合并后一次性返回所有内容"})]})]})})]})]})]})}function w0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"情绪设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{checked:t.enable_mood,onCheckedChange:n=>e({...t,enable_mood:n})}),o.jsx(de,{className:"cursor-pointer",children:"启用情绪系统"})]}),t.enable_mood&&o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"情绪更新阈值"}),o.jsx(ze,{type:"number",min:"1",value:t.mood_update_threshold,onChange:n=>e({...t,mood_update_threshold:parseInt(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"越高,更新越慢"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"情感特征"}),o.jsx(Ar,{value:t.emotion_style,onChange:n=>e({...t,emotion_style:n.target.value}),placeholder:"影响情绪的变化情况",rows:2})]})]})]})]})}function S0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"语音设置"}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{checked:t.enable_asr,onCheckedChange:n=>e({...t,enable_asr:n})}),o.jsx(de,{className:"cursor-pointer",children:"启用语音识别"})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"启用后麦麦可以识别语音消息,需要配置语音识别模型"})]})}function k0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{checked:t.enable,onCheckedChange:n=>e({...t,enable:n})}),o.jsx(de,{className:"cursor-pointer",children:"启用 LPMM 知识库"})]}),t.enable&&o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"LPMM 模式"}),o.jsxs(Vt,{value:t.lpmm_mode,onValueChange:n=>e({...t,lpmm_mode:n}),children:[o.jsx($t,{children:o.jsx(Ut,{placeholder:"选择 LPMM 模式"})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"classic",children:"经典模式"}),o.jsx(De,{value:"agent",children:"Agent 模式"})]})]})]}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"同义词搜索 TopK"}),o.jsx(ze,{type:"number",min:"1",value:t.rag_synonym_search_top_k,onChange:n=>e({...t,rag_synonym_search_top_k:parseInt(n.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"同义词阈值"}),o.jsx(ze,{type:"number",step:"0.1",min:"0",max:"1",value:t.rag_synonym_threshold,onChange:n=>e({...t,rag_synonym_threshold:parseFloat(n.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"实体提取线程数"}),o.jsx(ze,{type:"number",min:"1",value:t.info_extraction_workers,onChange:n=>e({...t,info_extraction_workers:parseInt(n.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"嵌入向量维度"}),o.jsx(ze,{type:"number",min:"1",value:t.embedding_dimension,onChange:n=>e({...t,embedding_dimension:parseInt(n.target.value)})})]})]})]})]})]})}function O0e({config:t,onChange:e}){const[n,r]=b.useState(""),[s,i]=b.useState("WARNING"),a=()=>{n&&!t.suppress_libraries.includes(n)&&(e({...t,suppress_libraries:[...t.suppress_libraries,n]}),r(""))},l=x=>{e({...t,suppress_libraries:t.suppress_libraries.filter(y=>y!==x)})},c=()=>{n&&!t.library_log_levels[n]&&(e({...t,library_log_levels:{...t.library_log_levels,[n]:s}}),r(""),i("WARNING"))},d=x=>{const y={...t.library_log_levels};delete y[x],e({...t,library_log_levels:y})},h=["DEBUG","INFO","WARNING","ERROR","CRITICAL"],m=["FULL","compact","lite"],g=["none","title","full"];return o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"日志配置"}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"日期格式"}),o.jsx(ze,{value:t.date_style,onChange:x=>e({...t,date_style:x.target.value}),placeholder:"例如: m-d H:i:s"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"m=月, d=日, H=时, i=分, s=秒"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"日志级别样式"}),o.jsxs(Vt,{value:t.log_level_style,onValueChange:x=>e({...t,log_level_style:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:m.map(x=>o.jsx(De,{value:x,children:x},x))})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"日志文本颜色"}),o.jsxs(Vt,{value:t.color_text,onValueChange:x=>e({...t,color_text:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:g.map(x=>o.jsx(De,{value:x,children:x},x))})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"全局日志级别"}),o.jsxs(Vt,{value:t.log_level,onValueChange:x=>e({...t,log_level:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:h.map(x=>o.jsx(De,{value:x,children:x},x))})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"控制台日志级别"}),o.jsxs(Vt,{value:t.console_log_level,onValueChange:x=>e({...t,console_log_level:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:h.map(x=>o.jsx(De,{value:x,children:x},x))})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"文件日志级别"}),o.jsxs(Vt,{value:t.file_log_level,onValueChange:x=>e({...t,file_log_level:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:h.map(x=>o.jsx(De,{value:x,children:x},x))})]})]})]})]}),o.jsxs("div",{children:[o.jsx(de,{className:"mb-2 block",children:"完全屏蔽的库"}),o.jsxs("div",{className:"flex gap-2 mb-2",children:[o.jsx(ze,{value:n,onChange:x=>r(x.target.value),placeholder:"输入库名",className:"flex-1",onKeyDown:x=>{x.key==="Enter"&&(x.preventDefault(),a())}}),o.jsx(he,{onClick:a,size:"sm",className:"flex-shrink-0",children:o.jsx(zs,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),o.jsx("div",{className:"flex flex-wrap gap-2",children:t.suppress_libraries.map(x=>o.jsxs("div",{className:"flex items-center gap-1 bg-secondary px-3 py-1 rounded-md",children:[o.jsx("span",{className:"text-sm",children:x}),o.jsx(he,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0",onClick:()=>l(x),children:o.jsx(Sn,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},x))})]}),o.jsxs("div",{children:[o.jsx(de,{className:"mb-2 block",children:"特定库的日志级别"}),o.jsxs("div",{className:"flex gap-2 mb-2",children:[o.jsx(ze,{value:n,onChange:x=>r(x.target.value),placeholder:"输入库名",className:"flex-1"}),o.jsxs(Vt,{value:s,onValueChange:i,children:[o.jsx($t,{className:"w-32",children:o.jsx(Ut,{})}),o.jsx(Ht,{children:h.map(x=>o.jsx(De,{value:x,children:x},x))})]}),o.jsx(he,{onClick:c,size:"sm",children:o.jsx(zs,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),o.jsx("div",{className:"space-y-2",children:Object.entries(t.library_log_levels).map(([x,y])=>o.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[o.jsx("span",{className:"text-sm font-medium",children:x}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"text-sm text-muted-foreground",children:y}),o.jsx(he,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>d(x),children:o.jsx(Sn,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]})]},x))})]})]})}function j0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"调试配置"}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(de,{children:"显示 Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否在日志中显示提示词"})]}),o.jsx(Bt,{checked:t.show_prompt,onCheckedChange:n=>e({...t,show_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(de,{children:"显示回复器 Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的提示词"})]}),o.jsx(Bt,{checked:t.show_replyer_prompt,onCheckedChange:n=>e({...t,show_replyer_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(de,{children:"显示回复器推理"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的推理过程"})]}),o.jsx(Bt,{checked:t.show_replyer_reasoning,onCheckedChange:n=>e({...t,show_replyer_reasoning:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(de,{children:"显示 Jargon Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示术语相关的提示词"})]}),o.jsx(Bt,{checked:t.show_jargon_prompt,onCheckedChange:n=>e({...t,show_jargon_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(de,{children:"显示记忆检索 Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示记忆检索相关的提示词"})]}),o.jsx(Bt,{checked:t.show_memory_prompt,onCheckedChange:n=>e({...t,show_memory_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(de,{children:"显示 Planner Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 Planner 的提示词和原始返回结果"})]}),o.jsx(Bt,{checked:t.show_planner_prompt,onCheckedChange:n=>e({...t,show_planner_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(de,{children:"显示 LPMM 相关文段"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 LPMM 知识库找到的相关文段日志"})]}),o.jsx(Bt,{checked:t.show_lpmm_paragraph,onCheckedChange:n=>e({...t,show_lpmm_paragraph:n})})]})]})]})}function N0e({config:t,onChange:e}){const[n,r]=b.useState(""),s=()=>{n&&!t.auth_token.includes(n)&&(e({...t,auth_token:[...t.auth_token,n]}),r(""))},i=a=>{e({...t,auth_token:t.auth_token.filter((l,c)=>c!==a)})};return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"MaimMessage 服务配置"}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(de,{children:"启用自定义服务器"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否使用自定义的 MaimMessage 服务器"})]}),o.jsx(Bt,{checked:t.use_custom,onCheckedChange:a=>e({...t,use_custom:a})})]}),t.use_custom&&o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"主机地址"}),o.jsx(ze,{value:t.host,onChange:a=>e({...t,host:a.target.value}),placeholder:"127.0.0.1"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"端口号"}),o.jsx(ze,{type:"number",value:t.port,onChange:a=>e({...t,port:parseInt(a.target.value)}),placeholder:"8090"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"连接模式"}),o.jsxs(Vt,{value:t.mode,onValueChange:a=>e({...t,mode:a}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"ws",children:"WebSocket (ws)"}),o.jsx(De,{value:"tcp",children:"TCP"})]})]})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{checked:t.use_wss,onCheckedChange:a=>e({...t,use_wss:a}),disabled:t.mode!=="ws"}),o.jsx(de,{children:"使用 WSS 安全连接"})]})]}),t.use_wss&&t.mode==="ws"&&o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"SSL 证书文件路径"}),o.jsx(ze,{value:t.cert_file,onChange:a=>e({...t,cert_file:a.target.value}),placeholder:"cert.pem"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"SSL 密钥文件路径"}),o.jsx(ze,{value:t.key_file,onChange:a=>e({...t,key_file:a.target.value}),placeholder:"key.pem"})]})]})]})]})]}),o.jsxs("div",{children:[o.jsx(de,{className:"mb-2 block",children:"认证令牌"}),o.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:"用于 API 验证,为空则不启用验证"}),o.jsxs("div",{className:"flex gap-2 mb-2",children:[o.jsx(ze,{value:n,onChange:a=>r(a.target.value),placeholder:"输入认证令牌",onKeyDown:a=>{a.key==="Enter"&&(a.preventDefault(),s())}}),o.jsx(he,{onClick:s,size:"sm",children:o.jsx(zs,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),o.jsx("div",{className:"space-y-2",children:t.auth_token.map((a,l)=>o.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[o.jsx("span",{className:"text-sm font-mono",children:a}),o.jsx(he,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>i(l),children:o.jsx(Sn,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},l))})]})]})}function C0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"统计信息"}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(de,{children:"启用统计信息发送"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"发送匿名统计信息,帮助我们了解全球有多少只麦麦在运行"})]}),o.jsx(Bt,{checked:t.enable,onCheckedChange:n=>e({...t,enable:n})})]})]})}const Tf=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{className:"relative w-full overflow-auto",children:o.jsx("table",{ref:n,className:ve("w-full caption-bottom text-sm",t),...e})}));Tf.displayName="Table";const Ef=b.forwardRef(({className:t,...e},n)=>o.jsx("thead",{ref:n,className:ve("[&_tr]:border-b",t),...e}));Ef.displayName="TableHeader";const _f=b.forwardRef(({className:t,...e},n)=>o.jsx("tbody",{ref:n,className:ve("[&_tr:last-child]:border-0",t),...e}));_f.displayName="TableBody";const T0e=b.forwardRef(({className:t,...e},n)=>o.jsx("tfoot",{ref:n,className:ve("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",t),...e}));T0e.displayName="TableFooter";const Ps=b.forwardRef(({className:t,...e},n)=>o.jsx("tr",{ref:n,className:ve("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",t),...e}));Ps.displayName="TableRow";const pn=b.forwardRef(({className:t,...e},n)=>o.jsx("th",{ref:n,className:ve("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...e}));pn.displayName="TableHead";const Gt=b.forwardRef(({className:t,...e},n)=>o.jsx("td",{ref:n,className:ve("px-4 py-3 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...e}));Gt.displayName="TableCell";const E0e=b.forwardRef(({className:t,...e},n)=>o.jsx("caption",{ref:n,className:ve("mt-4 text-sm text-muted-foreground",t),...e}));E0e.displayName="TableCaption";var dM=1,_0e=.9,M0e=.8,A0e=.17,lS=.1,cS=.999,R0e=.9999,D0e=.99,P0e=/[\\\/_+.#"@\[\(\{&]/,z0e=/[\\\/_+.#"@\[\(\{&]/g,I0e=/[\s-]/,yH=/[\s-]/g;function cO(t,e,n,r,s,i,a){if(i===e.length)return s===t.length?dM:D0e;var l=`${s},${i}`;if(a[l]!==void 0)return a[l];for(var c=r.charAt(i),d=n.indexOf(c,s),h=0,m,g,x,y;d>=0;)m=cO(t,e,n,r,d+1,i+1,a),m>h&&(d===s?m*=dM:P0e.test(t.charAt(d-1))?(m*=M0e,x=t.slice(s,d-1).match(z0e),x&&s>0&&(m*=Math.pow(cS,x.length))):I0e.test(t.charAt(d-1))?(m*=_0e,y=t.slice(s,d-1).match(yH),y&&s>0&&(m*=Math.pow(cS,y.length))):(m*=A0e,s>0&&(m*=Math.pow(cS,d-s))),t.charAt(d)!==e.charAt(i)&&(m*=R0e)),(mm&&(m=g*lS)),m>h&&(h=m),d=n.indexOf(c,d+1);return a[l]=h,h}function hM(t){return t.toLowerCase().replace(yH," ")}function L0e(t,e,n){return t=n&&n.length>0?`${t+" "+n.join(" ")}`:t,cO(t,e,hM(t),hM(e),0,0,{})}var B0e=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],cu=B0e.reduce((t,e)=>{const n=vj(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...l}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(c,{...l,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),$m='[cmdk-group=""]',uS='[cmdk-group-items=""]',F0e='[cmdk-group-heading=""]',bH='[cmdk-item=""]',fM=`${bH}:not([aria-disabled="true"])`,uO="cmdk-item-select",wh="data-value",q0e=(t,e,n)=>L0e(t,e,n),wH=b.createContext(void 0),Kp=()=>b.useContext(wH),SH=b.createContext(void 0),I6=()=>b.useContext(SH),kH=b.createContext(void 0),OH=b.forwardRef((t,e)=>{let n=Sh(()=>{var W,q;return{search:"",value:(q=(W=t.value)!=null?W:t.defaultValue)!=null?q:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),r=Sh(()=>new Set),s=Sh(()=>new Map),i=Sh(()=>new Map),a=Sh(()=>new Set),l=jH(t),{label:c,children:d,value:h,onValueChange:m,filter:g,shouldFilter:x,loop:y,disablePointerSelection:w=!1,vimBindings:S=!0,...k}=t,j=Ui(),N=Ui(),T=Ui(),E=b.useRef(null),_=Z0e();dd(()=>{if(h!==void 0){let W=h.trim();n.current.value=W,M.emit()}},[h]),dd(()=>{_(6,ee)},[]);let M=b.useMemo(()=>({subscribe:W=>(a.current.add(W),()=>a.current.delete(W)),snapshot:()=>n.current,setState:(W,q,V)=>{var te,ne,K,se;if(!Object.is(n.current[W],q)){if(n.current[W]=q,W==="search")U(),L(),_(1,H);else if(W==="value"){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let re=document.getElementById(T);re?re.focus():(te=document.getElementById(j))==null||te.focus()}if(_(7,()=>{var re;n.current.selectedItemId=(re=z())==null?void 0:re.id,M.emit()}),V||_(5,ee),((ne=l.current)==null?void 0:ne.value)!==void 0){let re=q??"";(se=(K=l.current).onValueChange)==null||se.call(K,re);return}}M.emit()}},emit:()=>{a.current.forEach(W=>W())}}),[]),I=b.useMemo(()=>({value:(W,q,V)=>{var te;q!==((te=i.current.get(W))==null?void 0:te.value)&&(i.current.set(W,{value:q,keywords:V}),n.current.filtered.items.set(W,P(q,V)),_(2,()=>{L(),M.emit()}))},item:(W,q)=>(r.current.add(W),q&&(s.current.has(q)?s.current.get(q).add(W):s.current.set(q,new Set([W]))),_(3,()=>{U(),L(),n.current.value||H(),M.emit()}),()=>{i.current.delete(W),r.current.delete(W),n.current.filtered.items.delete(W);let V=z();_(4,()=>{U(),V?.getAttribute("id")===W&&H(),M.emit()})}),group:W=>(s.current.has(W)||s.current.set(W,new Set),()=>{i.current.delete(W),s.current.delete(W)}),filter:()=>l.current.shouldFilter,label:c||t["aria-label"],getDisablePointerSelection:()=>l.current.disablePointerSelection,listId:j,inputId:T,labelId:N,listInnerRef:E}),[]);function P(W,q){var V,te;let ne=(te=(V=l.current)==null?void 0:V.filter)!=null?te:q0e;return W?ne(W,n.current.search,q):0}function L(){if(!n.current.search||l.current.shouldFilter===!1)return;let W=n.current.filtered.items,q=[];n.current.filtered.groups.forEach(te=>{let ne=s.current.get(te),K=0;ne.forEach(se=>{let re=W.get(se);K=Math.max(re,K)}),q.push([te,K])});let V=E.current;Q().sort((te,ne)=>{var K,se;let re=te.getAttribute("id"),oe=ne.getAttribute("id");return((K=W.get(oe))!=null?K:0)-((se=W.get(re))!=null?se:0)}).forEach(te=>{let ne=te.closest(uS);ne?ne.appendChild(te.parentElement===ne?te:te.closest(`${uS} > *`)):V.appendChild(te.parentElement===V?te:te.closest(`${uS} > *`))}),q.sort((te,ne)=>ne[1]-te[1]).forEach(te=>{var ne;let K=(ne=E.current)==null?void 0:ne.querySelector(`${$m}[${wh}="${encodeURIComponent(te[0])}"]`);K?.parentElement.appendChild(K)})}function H(){let W=Q().find(V=>V.getAttribute("aria-disabled")!=="true"),q=W?.getAttribute(wh);M.setState("value",q||void 0)}function U(){var W,q,V,te;if(!n.current.search||l.current.shouldFilter===!1){n.current.filtered.count=r.current.size;return}n.current.filtered.groups=new Set;let ne=0;for(let K of r.current){let se=(q=(W=i.current.get(K))==null?void 0:W.value)!=null?q:"",re=(te=(V=i.current.get(K))==null?void 0:V.keywords)!=null?te:[],oe=P(se,re);n.current.filtered.items.set(K,oe),oe>0&&ne++}for(let[K,se]of s.current)for(let re of se)if(n.current.filtered.items.get(re)>0){n.current.filtered.groups.add(K);break}n.current.filtered.count=ne}function ee(){var W,q,V;let te=z();te&&(((W=te.parentElement)==null?void 0:W.firstChild)===te&&((V=(q=te.closest($m))==null?void 0:q.querySelector(F0e))==null||V.scrollIntoView({block:"nearest"})),te.scrollIntoView({block:"nearest"}))}function z(){var W;return(W=E.current)==null?void 0:W.querySelector(`${bH}[aria-selected="true"]`)}function Q(){var W;return Array.from(((W=E.current)==null?void 0:W.querySelectorAll(fM))||[])}function B(W){let q=Q()[W];q&&M.setState("value",q.getAttribute(wh))}function X(W){var q;let V=z(),te=Q(),ne=te.findIndex(se=>se===V),K=te[ne+W];(q=l.current)!=null&&q.loop&&(K=ne+W<0?te[te.length-1]:ne+W===te.length?te[0]:te[ne+W]),K&&M.setState("value",K.getAttribute(wh))}function J(W){let q=z(),V=q?.closest($m),te;for(;V&&!te;)V=W>0?Y0e(V,$m):K0e(V,$m),te=V?.querySelector(fM);te?M.setState("value",te.getAttribute(wh)):X(W)}let G=()=>B(Q().length-1),R=W=>{W.preventDefault(),W.metaKey?G():W.altKey?J(1):X(1)},ie=W=>{W.preventDefault(),W.metaKey?B(0):W.altKey?J(-1):X(-1)};return b.createElement(cu.div,{ref:e,tabIndex:-1,...k,"cmdk-root":"",onKeyDown:W=>{var q;(q=k.onKeyDown)==null||q.call(k,W);let V=W.nativeEvent.isComposing||W.keyCode===229;if(!(W.defaultPrevented||V))switch(W.key){case"n":case"j":{S&&W.ctrlKey&&R(W);break}case"ArrowDown":{R(W);break}case"p":case"k":{S&&W.ctrlKey&&ie(W);break}case"ArrowUp":{ie(W);break}case"Home":{W.preventDefault(),B(0);break}case"End":{W.preventDefault(),G();break}case"Enter":{W.preventDefault();let te=z();if(te){let ne=new Event(uO);te.dispatchEvent(ne)}}}}},b.createElement("label",{"cmdk-label":"",htmlFor:I.inputId,id:I.labelId,style:epe},c),xb(t,W=>b.createElement(SH.Provider,{value:M},b.createElement(wH.Provider,{value:I},W))))}),$0e=b.forwardRef((t,e)=>{var n,r;let s=Ui(),i=b.useRef(null),a=b.useContext(kH),l=Kp(),c=jH(t),d=(r=(n=c.current)==null?void 0:n.forceMount)!=null?r:a?.forceMount;dd(()=>{if(!d)return l.item(s,a?.id)},[d]);let h=NH(s,i,[t.value,t.children,i],t.keywords),m=I6(),g=Zc(_=>_.value&&_.value===h.current),x=Zc(_=>d||l.filter()===!1?!0:_.search?_.filtered.items.get(s)>0:!0);b.useEffect(()=>{let _=i.current;if(!(!_||t.disabled))return _.addEventListener(uO,y),()=>_.removeEventListener(uO,y)},[x,t.onSelect,t.disabled]);function y(){var _,M;w(),(M=(_=c.current).onSelect)==null||M.call(_,h.current)}function w(){m.setState("value",h.current,!0)}if(!x)return null;let{disabled:S,value:k,onSelect:j,forceMount:N,keywords:T,...E}=t;return b.createElement(cu.div,{ref:Hc(i,e),...E,id:s,"cmdk-item":"",role:"option","aria-disabled":!!S,"aria-selected":!!g,"data-disabled":!!S,"data-selected":!!g,onPointerMove:S||l.getDisablePointerSelection()?void 0:w,onClick:S?void 0:y},t.children)}),H0e=b.forwardRef((t,e)=>{let{heading:n,children:r,forceMount:s,...i}=t,a=Ui(),l=b.useRef(null),c=b.useRef(null),d=Ui(),h=Kp(),m=Zc(x=>s||h.filter()===!1?!0:x.search?x.filtered.groups.has(a):!0);dd(()=>h.group(a),[]),NH(a,l,[t.value,t.heading,c]);let g=b.useMemo(()=>({id:a,forceMount:s}),[s]);return b.createElement(cu.div,{ref:Hc(l,e),...i,"cmdk-group":"",role:"presentation",hidden:m?void 0:!0},n&&b.createElement("div",{ref:c,"cmdk-group-heading":"","aria-hidden":!0,id:d},n),xb(t,x=>b.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":n?d:void 0},b.createElement(kH.Provider,{value:g},x))))}),Q0e=b.forwardRef((t,e)=>{let{alwaysRender:n,...r}=t,s=b.useRef(null),i=Zc(a=>!a.search);return!n&&!i?null:b.createElement(cu.div,{ref:Hc(s,e),...r,"cmdk-separator":"",role:"separator"})}),V0e=b.forwardRef((t,e)=>{let{onValueChange:n,...r}=t,s=t.value!=null,i=I6(),a=Zc(d=>d.search),l=Zc(d=>d.selectedItemId),c=Kp();return b.useEffect(()=>{t.value!=null&&i.setState("search",t.value)},[t.value]),b.createElement(cu.input,{ref:e,...r,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":c.listId,"aria-labelledby":c.labelId,"aria-activedescendant":l,id:c.inputId,type:"text",value:s?t.value:a,onChange:d=>{s||i.setState("search",d.target.value),n?.(d.target.value)}})}),U0e=b.forwardRef((t,e)=>{let{children:n,label:r="Suggestions",...s}=t,i=b.useRef(null),a=b.useRef(null),l=Zc(d=>d.selectedItemId),c=Kp();return b.useEffect(()=>{if(a.current&&i.current){let d=a.current,h=i.current,m,g=new ResizeObserver(()=>{m=requestAnimationFrame(()=>{let x=d.offsetHeight;h.style.setProperty("--cmdk-list-height",x.toFixed(1)+"px")})});return g.observe(d),()=>{cancelAnimationFrame(m),g.unobserve(d)}}},[]),b.createElement(cu.div,{ref:Hc(i,e),...s,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":l,"aria-label":r,id:c.listId},xb(t,d=>b.createElement("div",{ref:Hc(a,c.listInnerRef),"cmdk-list-sizer":""},d)))}),W0e=b.forwardRef((t,e)=>{let{open:n,onOpenChange:r,overlayClassName:s,contentClassName:i,container:a,...l}=t;return b.createElement(Sj,{open:n,onOpenChange:r},b.createElement(yj,{container:a},b.createElement(Py,{"cmdk-overlay":"",className:s}),b.createElement(zy,{"aria-label":t.label,"cmdk-dialog":"",className:i},b.createElement(OH,{ref:e,...l}))))}),G0e=b.forwardRef((t,e)=>Zc(n=>n.filtered.count===0)?b.createElement(cu.div,{ref:e,...t,"cmdk-empty":"",role:"presentation"}):null),X0e=b.forwardRef((t,e)=>{let{progress:n,children:r,label:s="Loading...",...i}=t;return b.createElement(cu.div,{ref:e,...i,"cmdk-loading":"",role:"progressbar","aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":s},xb(t,a=>b.createElement("div",{"aria-hidden":!0},a)))}),Ci=Object.assign(OH,{List:U0e,Item:$0e,Input:V0e,Group:H0e,Separator:Q0e,Dialog:W0e,Empty:G0e,Loading:X0e});function Y0e(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return n;n=n.nextElementSibling}}function K0e(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return n;n=n.previousElementSibling}}function jH(t){let e=b.useRef(t);return dd(()=>{e.current=t}),e}var dd=typeof window>"u"?b.useEffect:b.useLayoutEffect;function Sh(t){let e=b.useRef();return e.current===void 0&&(e.current=t()),e}function Zc(t){let e=I6(),n=()=>t(e.snapshot());return b.useSyncExternalStore(e.subscribe,n,n)}function NH(t,e,n,r=[]){let s=b.useRef(),i=Kp();return dd(()=>{var a;let l=(()=>{var d;for(let h of n){if(typeof h=="string")return h.trim();if(typeof h=="object"&&"current"in h)return h.current?(d=h.current.textContent)==null?void 0:d.trim():s.current}})(),c=r.map(d=>d.trim());i.value(t,l,c),(a=e.current)==null||a.setAttribute(wh,l),s.current=l}),s}var Z0e=()=>{let[t,e]=b.useState(),n=Sh(()=>new Map);return dd(()=>{n.current.forEach(r=>r()),n.current=new Map},[t]),(r,s)=>{n.current.set(r,s),e({})}};function J0e(t){let e=t.type;return typeof e=="function"?e(t.props):"render"in e?e.render(t.props):t}function xb({asChild:t,children:e},n){return t&&b.isValidElement(e)?b.cloneElement(J0e(e),{ref:e.ref},n(e.props.children)):n(e)}var epe={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};const vb=b.forwardRef(({className:t,...e},n)=>o.jsx(Ci,{ref:n,className:ve("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",t),...e}));vb.displayName=Ci.displayName;const yb=b.forwardRef(({className:t,...e},n)=>o.jsxs("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[o.jsx(Ni,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),o.jsx(Ci.Input,{ref:n,className:ve("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",t),...e})]}));yb.displayName=Ci.Input.displayName;const bb=b.forwardRef(({className:t,...e},n)=>o.jsx(Ci.List,{ref:n,className:ve("max-h-[300px] overflow-y-auto overflow-x-hidden",t),...e}));bb.displayName=Ci.List.displayName;const wb=b.forwardRef((t,e)=>o.jsx(Ci.Empty,{ref:e,className:"py-6 text-center text-sm",...t}));wb.displayName=Ci.Empty.displayName;const rp=b.forwardRef(({className:t,...e},n)=>o.jsx(Ci.Group,{ref:n,className:ve("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",t),...e}));rp.displayName=Ci.Group.displayName;const tpe=b.forwardRef(({className:t,...e},n)=>o.jsx(Ci.Separator,{ref:n,className:ve("-mx-1 h-px bg-border",t),...e}));tpe.displayName=Ci.Separator.displayName;const sp=b.forwardRef(({className:t,...e},n)=>o.jsx(Ci.Item,{ref:n,className:ve("relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",t),...e}));sp.displayName=Ci.Item.displayName;const Oi=b.forwardRef(({className:t,...e},n)=>o.jsx(cI,{ref:n,className:ve("grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",t),...e,children:o.jsx(xee,{className:ve("grid place-content-center text-current"),children:o.jsx(Ro,{className:"h-4 w-4"})})}));Oi.displayName=cI.displayName;const CH=b.createContext(null),TH="maibot-completed-tours";function npe(){try{const t=localStorage.getItem(TH);return t?new Set(JSON.parse(t)):new Set}catch{return new Set}}function mM(t){localStorage.setItem(TH,JSON.stringify([...t]))}function rpe({children:t}){const[e,n]=b.useState({activeTourId:null,stepIndex:0,isRunning:!1}),r=b.useRef(new Map),[,s]=b.useState(0),[i,a]=b.useState(npe),l=b.useCallback((N,T)=>{r.current.set(N,T),s(E=>E+1)},[]),c=b.useCallback(N=>{r.current.delete(N),n(T=>T.activeTourId===N?{...T,activeTourId:null,isRunning:!1,stepIndex:0}:T)},[]),d=b.useCallback((N,T=0)=>{r.current.has(N)&&n({activeTourId:N,stepIndex:T,isRunning:!0})},[]),h=b.useCallback(()=>{n(N=>({...N,isRunning:!1}))},[]),m=b.useCallback(N=>{n(T=>({...T,stepIndex:N}))},[]),g=b.useCallback(()=>{n(N=>({...N,stepIndex:N.stepIndex+1}))},[]),x=b.useCallback(()=>{n(N=>({...N,stepIndex:Math.max(0,N.stepIndex-1)}))},[]),y=b.useCallback(()=>e.activeTourId?r.current.get(e.activeTourId)||[]:[],[e.activeTourId]),w=b.useCallback(N=>{a(T=>{const E=new Set(T);return E.add(N),mM(E),E})},[]),S=b.useCallback(N=>{const{action:T,index:E,status:_,type:M}=N,I=["finished","skipped"];if(T==="close"){n(P=>({...P,isRunning:!1,stepIndex:0}));return}I.includes(_)?n(P=>(_==="finished"&&P.activeTourId&&setTimeout(()=>w(P.activeTourId),0),{...P,isRunning:!1,stepIndex:0})):M==="step:after"&&(T==="next"?n(P=>({...P,stepIndex:E+1})):T==="prev"&&n(P=>({...P,stepIndex:E-1})))},[w]),k=b.useCallback(N=>i.has(N),[i]),j=b.useCallback(N=>{a(T=>{const E=new Set(T);return E.delete(N),mM(E),E})},[]);return o.jsx(CH.Provider,{value:{state:e,tours:r.current,registerTour:l,unregisterTour:c,startTour:d,stopTour:h,goToStep:m,nextStep:g,prevStep:x,getCurrentSteps:y,handleJoyrideCallback:S,isTourCompleted:k,markTourCompleted:w,resetTourCompleted:j},children:t})}function EH(t){return e=>typeof e===t}var spe=EH("function"),ipe=t=>t===null,pM=t=>Object.prototype.toString.call(t).slice(8,-1)==="RegExp",gM=t=>!ape(t)&&!ipe(t)&&(spe(t)||typeof t=="object"),ape=EH("undefined");function ope(t,e){const{length:n}=t;if(n!==e.length)return!1;for(let r=n;r--!==0;)if(!Js(t[r],e[r]))return!1;return!0}function lpe(t,e){if(t.byteLength!==e.byteLength)return!1;const n=new DataView(t.buffer),r=new DataView(e.buffer);let s=t.byteLength;for(;s--;)if(n.getUint8(s)!==r.getUint8(s))return!1;return!0}function cpe(t,e){if(t.size!==e.size)return!1;for(const n of t.entries())if(!e.has(n[0]))return!1;for(const n of t.entries())if(!Js(n[1],e.get(n[0])))return!1;return!0}function upe(t,e){if(t.size!==e.size)return!1;for(const n of t.entries())if(!e.has(n[0]))return!1;return!0}function Js(t,e){if(t===e)return!0;if(t&&gM(t)&&e&&gM(e)){if(t.constructor!==e.constructor)return!1;if(Array.isArray(t)&&Array.isArray(e))return ope(t,e);if(t instanceof Map&&e instanceof Map)return cpe(t,e);if(t instanceof Set&&e instanceof Set)return upe(t,e);if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(e))return lpe(t,e);if(pM(t)&&pM(e))return t.source===e.source&&t.flags===e.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===e.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===e.toString();const n=Object.keys(t),r=Object.keys(e);if(n.length!==r.length)return!1;for(let s=n.length;s--!==0;)if(!Object.prototype.hasOwnProperty.call(e,n[s]))return!1;for(let s=n.length;s--!==0;){const i=n[s];if(!(i==="_owner"&&t.$$typeof)&&!Js(t[i],e[i]))return!1}return!0}return Number.isNaN(t)&&Number.isNaN(e)?!0:t===e}var dpe=["Array","ArrayBuffer","AsyncFunction","AsyncGenerator","AsyncGeneratorFunction","Date","Error","Function","Generator","GeneratorFunction","HTMLElement","Map","Object","Promise","RegExp","Set","WeakMap","WeakSet"],hpe=["bigint","boolean","null","number","string","symbol","undefined"];function Sb(t){const e=Object.prototype.toString.call(t).slice(8,-1);if(/HTML\w+Element/.test(e))return"HTMLElement";if(fpe(e))return e}function ro(t){return e=>Sb(e)===t}function fpe(t){return dpe.includes(t)}function Mf(t){return e=>typeof e===t}function mpe(t){return hpe.includes(t)}var ppe=["innerHTML","ownerDocument","style","attributes","nodeValue"];function ct(t){if(t===null)return"null";switch(typeof t){case"bigint":return"bigint";case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"symbol":return"symbol";case"undefined":return"undefined"}if(ct.array(t))return"Array";if(ct.plainFunction(t))return"Function";const e=Sb(t);return e||"Object"}ct.array=Array.isArray;ct.arrayOf=(t,e)=>!ct.array(t)&&!ct.function(e)?!1:t.every(n=>e(n));ct.asyncGeneratorFunction=t=>Sb(t)==="AsyncGeneratorFunction";ct.asyncFunction=ro("AsyncFunction");ct.bigint=Mf("bigint");ct.boolean=t=>t===!0||t===!1;ct.date=ro("Date");ct.defined=t=>!ct.undefined(t);ct.domElement=t=>ct.object(t)&&!ct.plainObject(t)&&t.nodeType===1&&ct.string(t.nodeName)&&ppe.every(e=>e in t);ct.empty=t=>ct.string(t)&&t.length===0||ct.array(t)&&t.length===0||ct.object(t)&&!ct.map(t)&&!ct.set(t)&&Object.keys(t).length===0||ct.set(t)&&t.size===0||ct.map(t)&&t.size===0;ct.error=ro("Error");ct.function=Mf("function");ct.generator=t=>ct.iterable(t)&&ct.function(t.next)&&ct.function(t.throw);ct.generatorFunction=ro("GeneratorFunction");ct.instanceOf=(t,e)=>!t||!e?!1:Object.getPrototypeOf(t)===e.prototype;ct.iterable=t=>!ct.nullOrUndefined(t)&&ct.function(t[Symbol.iterator]);ct.map=ro("Map");ct.nan=t=>Number.isNaN(t);ct.null=t=>t===null;ct.nullOrUndefined=t=>ct.null(t)||ct.undefined(t);ct.number=t=>Mf("number")(t)&&!ct.nan(t);ct.numericString=t=>ct.string(t)&&t.length>0&&!Number.isNaN(Number(t));ct.object=t=>!ct.nullOrUndefined(t)&&(ct.function(t)||typeof t=="object");ct.oneOf=(t,e)=>ct.array(t)?t.indexOf(e)>-1:!1;ct.plainFunction=ro("Function");ct.plainObject=t=>{if(Sb(t)!=="Object")return!1;const e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};ct.primitive=t=>ct.null(t)||mpe(typeof t);ct.promise=ro("Promise");ct.propertyOf=(t,e,n)=>{if(!ct.object(t)||!e)return!1;const r=t[e];return ct.function(n)?n(r):ct.defined(r)};ct.regexp=ro("RegExp");ct.set=ro("Set");ct.string=Mf("string");ct.symbol=Mf("symbol");ct.undefined=Mf("undefined");ct.weakMap=ro("WeakMap");ct.weakSet=ro("WeakSet");var ft=ct;function gpe(...t){return t.every(e=>ft.string(e)||ft.array(e)||ft.plainObject(e))}function xpe(t,e,n){return _H(t,e)?[t,e].every(ft.array)?!t.some(wM(n))&&e.some(wM(n)):[t,e].every(ft.plainObject)?!Object.entries(t).some(bM(n))&&Object.entries(e).some(bM(n)):e===n:!1}function xM(t,e,n){const{actual:r,key:s,previous:i,type:a}=n,l=To(t,s),c=To(e,s);let d=[l,c].every(ft.number)&&(a==="increased"?lc);return ft.undefined(r)||(d=d&&c===r),ft.undefined(i)||(d=d&&l===i),d}function vM(t,e,n){const{key:r,type:s,value:i}=n,a=To(t,r),l=To(e,r),c=s==="added"?a:l,d=s==="added"?l:a;if(!ft.nullOrUndefined(i)){if(ft.defined(c)){if(ft.array(c)||ft.plainObject(c))return xpe(c,d,i)}else return Js(d,i);return!1}return[a,l].every(ft.array)?!d.every(L6(c)):[a,l].every(ft.plainObject)?vpe(Object.keys(c),Object.keys(d)):![a,l].every(h=>ft.primitive(h)&&ft.defined(h))&&(s==="added"?!ft.defined(a)&&ft.defined(l):ft.defined(a)&&!ft.defined(l))}function yM(t,e,{key:n}={}){let r=To(t,n),s=To(e,n);if(!_H(r,s))throw new TypeError("Inputs have different types");if(!gpe(r,s))throw new TypeError("Inputs don't have length");return[r,s].every(ft.plainObject)&&(r=Object.keys(r),s=Object.keys(s)),[r,s]}function bM(t){return([e,n])=>ft.array(t)?Js(t,n)||t.some(r=>Js(r,n)||ft.array(n)&&L6(n)(r)):ft.plainObject(t)&&t[e]?!!t[e]&&Js(t[e],n):Js(t,n)}function vpe(t,e){return e.some(n=>!t.includes(n))}function wM(t){return e=>ft.array(t)?t.some(n=>Js(n,e)||ft.array(e)&&L6(e)(n)):Js(t,e)}function Hm(t,e){return ft.array(t)?t.some(n=>Js(n,e)):Js(t,e)}function L6(t){return e=>t.some(n=>Js(n,e))}function _H(...t){return t.every(ft.array)||t.every(ft.number)||t.every(ft.plainObject)||t.every(ft.string)}function To(t,e){return ft.plainObject(t)||ft.array(t)?ft.string(e)?e.split(".").reduce((r,s)=>r&&r[s],t):ft.number(e)?t[e]:t:t}function iy(t,e){if([t,e].some(ft.nullOrUndefined))throw new Error("Missing required parameters");if(![t,e].every(h=>ft.plainObject(h)||ft.array(h)))throw new Error("Expected plain objects or array");return{added:(h,m)=>{try{return vM(t,e,{key:h,type:"added",value:m})}catch{return!1}},changed:(h,m,g)=>{try{const x=To(t,h),y=To(e,h),w=ft.defined(m),S=ft.defined(g);if(w||S){const k=S?Hm(g,x):!Hm(m,x),j=Hm(m,y);return k&&j}return[x,y].every(ft.array)||[x,y].every(ft.plainObject)?!Js(x,y):x!==y}catch{return!1}},changedFrom:(h,m,g)=>{if(!ft.defined(h))return!1;try{const x=To(t,h),y=To(e,h),w=ft.defined(g);return Hm(m,x)&&(w?Hm(g,y):!w)}catch{return!1}},decreased:(h,m,g)=>{if(!ft.defined(h))return!1;try{return xM(t,e,{key:h,actual:m,previous:g,type:"decreased"})}catch{return!1}},emptied:h=>{try{const[m,g]=yM(t,e,{key:h});return!!m.length&&!g.length}catch{return!1}},filled:h=>{try{const[m,g]=yM(t,e,{key:h});return!m.length&&!!g.length}catch{return!1}},increased:(h,m,g)=>{if(!ft.defined(h))return!1;try{return xM(t,e,{key:h,actual:m,previous:g,type:"increased"})}catch{return!1}},removed:(h,m)=>{try{return vM(t,e,{key:h,type:"removed",value:m})}catch{return!1}}}}var dS,SM;function ype(){if(SM)return dS;SM=1;var t=new Error("Element already at target scroll position"),e=new Error("Scroll cancelled"),n=Math.min,r=Date.now;dS={left:s("scrollLeft"),top:s("scrollTop")};function s(l){return function(d,h,m,g){m=m||{},typeof m=="function"&&(g=m,m={}),typeof g!="function"&&(g=a);var x=r(),y=d[l],w=m.ease||i,S=isNaN(m.duration)?350:+m.duration,k=!1;return y===h?g(t,d[l]):requestAnimationFrame(N),j;function j(){k=!0}function N(T){if(k)return g(e,d[l]);var E=r(),_=n(1,(E-x)/S),M=w(_);d[l]=M*(h-y)+y,_<1?requestAnimationFrame(N):requestAnimationFrame(function(){g(null,d[l])})}}}function i(l){return .5*(1-Math.cos(Math.PI*l))}function a(){}return dS}var bpe=ype();const wpe=gd(bpe);var xv={exports:{}},Spe=xv.exports,kM;function kpe(){return kM||(kM=1,(function(t){(function(e,n){t.exports?t.exports=n():e.Scrollparent=n()})(Spe,function(){function e(r){var s=getComputedStyle(r,null).getPropertyValue("overflow");return s.indexOf("scroll")>-1||s.indexOf("auto")>-1}function n(r){if(r instanceof HTMLElement||r instanceof SVGElement){for(var s=r.parentNode;s.parentNode;){if(e(s))return s;s=s.parentNode}return document.scrollingElement||document.documentElement}}return n})})(xv)),xv.exports}var Ope=kpe();const MH=gd(Ope);var hS,OM;function jpe(){if(OM)return hS;OM=1;var t=function(r){return Object.prototype.hasOwnProperty.call(r,"props")},e=function(r,s){return r+n(s)},n=function(r){return r===null||typeof r=="boolean"||typeof r>"u"?"":typeof r=="number"?r.toString():typeof r=="string"?r:Array.isArray(r)?r.reduce(e,""):t(r)&&Object.prototype.hasOwnProperty.call(r.props,"children")?n(r.props.children):""};return n.default=n,hS=n,hS}var Npe=jpe();const jM=gd(Npe);var fS,NM;function Cpe(){if(NM)return fS;NM=1;var t=function(j){return e(j)&&!n(j)};function e(k){return!!k&&typeof k=="object"}function n(k){var j=Object.prototype.toString.call(k);return j==="[object RegExp]"||j==="[object Date]"||i(k)}var r=typeof Symbol=="function"&&Symbol.for,s=r?Symbol.for("react.element"):60103;function i(k){return k.$$typeof===s}function a(k){return Array.isArray(k)?[]:{}}function l(k,j){return j.clone!==!1&&j.isMergeableObject(k)?w(a(k),k,j):k}function c(k,j,N){return k.concat(j).map(function(T){return l(T,N)})}function d(k,j){if(!j.customMerge)return w;var N=j.customMerge(k);return typeof N=="function"?N:w}function h(k){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(k).filter(function(j){return Object.propertyIsEnumerable.call(k,j)}):[]}function m(k){return Object.keys(k).concat(h(k))}function g(k,j){try{return j in k}catch{return!1}}function x(k,j){return g(k,j)&&!(Object.hasOwnProperty.call(k,j)&&Object.propertyIsEnumerable.call(k,j))}function y(k,j,N){var T={};return N.isMergeableObject(k)&&m(k).forEach(function(E){T[E]=l(k[E],N)}),m(j).forEach(function(E){x(k,E)||(g(k,E)&&N.isMergeableObject(j[E])?T[E]=d(E,N)(k[E],j[E],N):T[E]=l(j[E],N))}),T}function w(k,j,N){N=N||{},N.arrayMerge=N.arrayMerge||c,N.isMergeableObject=N.isMergeableObject||t,N.cloneUnlessOtherwiseSpecified=l;var T=Array.isArray(j),E=Array.isArray(k),_=T===E;return _?T?N.arrayMerge(k,j,N):y(k,j,N):l(j,N)}w.all=function(j,N){if(!Array.isArray(j))throw new Error("first argument should be an array");return j.reduce(function(T,E){return w(T,E,N)},{})};var S=w;return fS=S,fS}var Tpe=Cpe();const Va=gd(Tpe);var Zp=typeof window<"u"&&typeof document<"u"&&typeof navigator<"u",Epe=(function(){for(var t=["Edge","Trident","Firefox"],e=0;e=0)return 1;return 0})();function _pe(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then(function(){e=!1,t()}))}}function Mpe(t){var e=!1;return function(){e||(e=!0,setTimeout(function(){e=!1,t()},Epe))}}var Ape=Zp&&window.Promise,Rpe=Ape?_pe:Mpe;function AH(t){var e={};return t&&e.toString.call(t)==="[object Function]"}function bd(t,e){if(t.nodeType!==1)return[];var n=t.ownerDocument.defaultView,r=n.getComputedStyle(t,null);return e?r[e]:r}function B6(t){return t.nodeName==="HTML"?t:t.parentNode||t.host}function Jp(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=bd(t),n=e.overflow,r=e.overflowX,s=e.overflowY;return/(auto|scroll|overlay)/.test(n+s+r)?t:Jp(B6(t))}function RH(t){return t&&t.referenceNode?t.referenceNode:t}var CM=Zp&&!!(window.MSInputMethodContext&&document.documentMode),TM=Zp&&/MSIE 10/.test(navigator.userAgent);function Af(t){return t===11?CM:t===10?TM:CM||TM}function af(t){if(!t)return document.documentElement;for(var e=Af(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var r=n&&n.nodeName;return!r||r==="BODY"||r==="HTML"?t?t.ownerDocument.documentElement:document.documentElement:["TH","TD","TABLE"].indexOf(n.nodeName)!==-1&&bd(n,"position")==="static"?af(n):n}function Dpe(t){var e=t.nodeName;return e==="BODY"?!1:e==="HTML"||af(t.firstElementChild)===t}function dO(t){return t.parentNode!==null?dO(t.parentNode):t}function ay(t,e){if(!t||!t.nodeType||!e||!e.nodeType)return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,r=n?t:e,s=n?e:t,i=document.createRange();i.setStart(r,0),i.setEnd(s,0);var a=i.commonAncestorContainer;if(t!==a&&e!==a||r.contains(s))return Dpe(a)?a:af(a);var l=dO(t);return l.host?ay(l.host,e):ay(t,dO(e).host)}function of(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"top",n=e==="top"?"scrollTop":"scrollLeft",r=t.nodeName;if(r==="BODY"||r==="HTML"){var s=t.ownerDocument.documentElement,i=t.ownerDocument.scrollingElement||s;return i[n]}return t[n]}function Ppe(t,e){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,r=of(e,"top"),s=of(e,"left"),i=n?-1:1;return t.top+=r*i,t.bottom+=r*i,t.left+=s*i,t.right+=s*i,t}function EM(t,e){var n=e==="x"?"Left":"Top",r=n==="Left"?"Right":"Bottom";return parseFloat(t["border"+n+"Width"])+parseFloat(t["border"+r+"Width"])}function _M(t,e,n,r){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],Af(10)?parseInt(n["offset"+t])+parseInt(r["margin"+(t==="Height"?"Top":"Left")])+parseInt(r["margin"+(t==="Height"?"Bottom":"Right")]):0)}function DH(t){var e=t.body,n=t.documentElement,r=Af(10)&&getComputedStyle(n);return{height:_M("Height",e,n,r),width:_M("Width",e,n,r)}}var zpe=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},Ipe=(function(){function t(e,n){for(var r=0;r2&&arguments[2]!==void 0?arguments[2]:!1,r=Af(10),s=e.nodeName==="HTML",i=hO(t),a=hO(e),l=Jp(t),c=bd(e),d=parseFloat(c.borderTopWidth),h=parseFloat(c.borderLeftWidth);n&&s&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var m=Jc({top:i.top-a.top-d,left:i.left-a.left-h,width:i.width,height:i.height});if(m.marginTop=0,m.marginLeft=0,!r&&s){var g=parseFloat(c.marginTop),x=parseFloat(c.marginLeft);m.top-=d-g,m.bottom-=d-g,m.left-=h-x,m.right-=h-x,m.marginTop=g,m.marginLeft=x}return(r&&!n?e.contains(l):e===l&&l.nodeName!=="BODY")&&(m=Ppe(m,e)),m}function Lpe(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=t.ownerDocument.documentElement,r=F6(t,n),s=Math.max(n.clientWidth,window.innerWidth||0),i=Math.max(n.clientHeight,window.innerHeight||0),a=e?0:of(n),l=e?0:of(n,"left"),c={top:a-r.top+r.marginTop,left:l-r.left+r.marginLeft,width:s,height:i};return Jc(c)}function PH(t){var e=t.nodeName;if(e==="BODY"||e==="HTML")return!1;if(bd(t,"position")==="fixed")return!0;var n=B6(t);return n?PH(n):!1}function zH(t){if(!t||!t.parentElement||Af())return document.documentElement;for(var e=t.parentElement;e&&bd(e,"transform")==="none";)e=e.parentElement;return e||document.documentElement}function q6(t,e,n,r){var s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1,i={top:0,left:0},a=s?zH(t):ay(t,RH(e));if(r==="viewport")i=Lpe(a,s);else{var l=void 0;r==="scrollParent"?(l=Jp(B6(e)),l.nodeName==="BODY"&&(l=t.ownerDocument.documentElement)):r==="window"?l=t.ownerDocument.documentElement:l=r;var c=F6(l,a,s);if(l.nodeName==="HTML"&&!PH(a)){var d=DH(t.ownerDocument),h=d.height,m=d.width;i.top+=c.top-c.marginTop,i.bottom=h+c.top,i.left+=c.left-c.marginLeft,i.right=m+c.left}else i=c}n=n||0;var g=typeof n=="number";return i.left+=g?n:n.left||0,i.top+=g?n:n.top||0,i.right-=g?n:n.right||0,i.bottom-=g?n:n.bottom||0,i}function Bpe(t){var e=t.width,n=t.height;return e*n}function IH(t,e,n,r,s){var i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0;if(t.indexOf("auto")===-1)return t;var a=q6(n,r,i,s),l={top:{width:a.width,height:e.top-a.top},right:{width:a.right-e.right,height:a.height},bottom:{width:a.width,height:a.bottom-e.bottom},left:{width:e.left-a.left,height:a.height}},c=Object.keys(l).map(function(g){return wa({key:g},l[g],{area:Bpe(l[g])})}).sort(function(g,x){return x.area-g.area}),d=c.filter(function(g){var x=g.width,y=g.height;return x>=n.clientWidth&&y>=n.clientHeight}),h=d.length>0?d[0].key:c[0].key,m=t.split("-")[1];return h+(m?"-"+m:"")}function LH(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,s=r?zH(e):ay(e,RH(n));return F6(n,s,r)}function BH(t){var e=t.ownerDocument.defaultView,n=e.getComputedStyle(t),r=parseFloat(n.marginTop||0)+parseFloat(n.marginBottom||0),s=parseFloat(n.marginLeft||0)+parseFloat(n.marginRight||0),i={width:t.offsetWidth+s,height:t.offsetHeight+r};return i}function oy(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,function(n){return e[n]})}function FH(t,e,n){n=n.split("-")[0];var r=BH(t),s={width:r.width,height:r.height},i=["right","left"].indexOf(n)!==-1,a=i?"top":"left",l=i?"left":"top",c=i?"height":"width",d=i?"width":"height";return s[a]=e[a]+e[c]/2-r[c]/2,n===l?s[l]=e[l]-r[d]:s[l]=e[oy(l)],s}function eg(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function Fpe(t,e,n){if(Array.prototype.findIndex)return t.findIndex(function(s){return s[e]===n});var r=eg(t,function(s){return s[e]===n});return t.indexOf(r)}function qH(t,e,n){var r=n===void 0?t:t.slice(0,Fpe(t,"name",n));return r.forEach(function(s){s.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var i=s.function||s.fn;s.enabled&&AH(i)&&(e.offsets.popper=Jc(e.offsets.popper),e.offsets.reference=Jc(e.offsets.reference),e=i(e,s))}),e}function qpe(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=LH(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=IH(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=FH(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=qH(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}function $H(t,e){return t.some(function(n){var r=n.name,s=n.enabled;return s&&r===e})}function $6(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),r=0;ra[x]&&(t.offsets.popper[m]+=l[m]+y-a[x]),t.offsets.popper=Jc(t.offsets.popper);var w=l[m]+l[d]/2-y/2,S=bd(t.instance.popper),k=parseFloat(S["margin"+h]),j=parseFloat(S["border"+h+"Width"]),N=w-t.offsets.popper[m]-k-j;return N=Math.max(Math.min(a[d]-y,N),0),t.arrowElement=r,t.offsets.arrow=(n={},lf(n,m,Math.round(N)),lf(n,g,""),n),t}function ege(t){return t==="end"?"start":t==="start"?"end":t}var UH=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],mS=UH.slice(3);function MM(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=mS.indexOf(t),r=mS.slice(n+1).concat(mS.slice(0,n));return e?r.reverse():r}var pS={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function tge(t,e){if($H(t.instance.modifiers,"inner")||t.flipped&&t.placement===t.originalPlacement)return t;var n=q6(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),r=t.placement.split("-")[0],s=oy(r),i=t.placement.split("-")[1]||"",a=[];switch(e.behavior){case pS.FLIP:a=[r,s];break;case pS.CLOCKWISE:a=MM(r);break;case pS.COUNTERCLOCKWISE:a=MM(r,!0);break;default:a=e.behavior}return a.forEach(function(l,c){if(r!==l||a.length===c+1)return t;r=t.placement.split("-")[0],s=oy(r);var d=t.offsets.popper,h=t.offsets.reference,m=Math.floor,g=r==="left"&&m(d.right)>m(h.left)||r==="right"&&m(d.left)m(h.top)||r==="bottom"&&m(d.top)m(n.right),w=m(d.top)m(n.bottom),k=r==="left"&&x||r==="right"&&y||r==="top"&&w||r==="bottom"&&S,j=["top","bottom"].indexOf(r)!==-1,N=!!e.flipVariations&&(j&&i==="start"&&x||j&&i==="end"&&y||!j&&i==="start"&&w||!j&&i==="end"&&S),T=!!e.flipVariationsByContent&&(j&&i==="start"&&y||j&&i==="end"&&x||!j&&i==="start"&&S||!j&&i==="end"&&w),E=N||T;(g||k||E)&&(t.flipped=!0,(g||k)&&(r=a[c+1]),E&&(i=ege(i)),t.placement=r+(i?"-"+i:""),t.offsets.popper=wa({},t.offsets.popper,FH(t.instance.popper,t.offsets.reference,t.placement)),t=qH(t.instance.modifiers,t,"flip"))}),t}function nge(t){var e=t.offsets,n=e.popper,r=e.reference,s=t.placement.split("-")[0],i=Math.floor,a=["top","bottom"].indexOf(s)!==-1,l=a?"right":"bottom",c=a?"left":"top",d=a?"width":"height";return n[l]i(r[l])&&(t.offsets.popper[c]=i(r[l])),t}function rge(t,e,n,r){var s=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),i=+s[1],a=s[2];if(!i)return t;if(a.indexOf("%")===0){var l=void 0;switch(a){case"%p":l=n;break;case"%":case"%r":default:l=r}var c=Jc(l);return c[e]/100*i}else if(a==="vh"||a==="vw"){var d=void 0;return a==="vh"?d=Math.max(document.documentElement.clientHeight,window.innerHeight||0):d=Math.max(document.documentElement.clientWidth,window.innerWidth||0),d/100*i}else return i}function sge(t,e,n,r){var s=[0,0],i=["right","left"].indexOf(r)!==-1,a=t.split(/(\+|\-)/).map(function(h){return h.trim()}),l=a.indexOf(eg(a,function(h){return h.search(/,|\s/)!==-1}));a[l]&&a[l].indexOf(",")===-1&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var c=/\s*,\s*|\s+/,d=l!==-1?[a.slice(0,l).concat([a[l].split(c)[0]]),[a[l].split(c)[1]].concat(a.slice(l+1))]:[a];return d=d.map(function(h,m){var g=(m===1?!i:i)?"height":"width",x=!1;return h.reduce(function(y,w){return y[y.length-1]===""&&["+","-"].indexOf(w)!==-1?(y[y.length-1]=w,x=!0,y):x?(y[y.length-1]+=w,x=!1,y):y.concat(w)},[]).map(function(y){return rge(y,g,e,n)})}),d.forEach(function(h,m){h.forEach(function(g,x){H6(g)&&(s[m]+=g*(h[x-1]==="-"?-1:1))})}),s}function ige(t,e){var n=e.offset,r=t.placement,s=t.offsets,i=s.popper,a=s.reference,l=r.split("-")[0],c=void 0;return H6(+n)?c=[+n,0]:c=sge(n,i,a,l),l==="left"?(i.top+=c[0],i.left-=c[1]):l==="right"?(i.top+=c[0],i.left+=c[1]):l==="top"?(i.left+=c[0],i.top-=c[1]):l==="bottom"&&(i.left+=c[0],i.top+=c[1]),t.popper=i,t}function age(t,e){var n=e.boundariesElement||af(t.instance.popper);t.instance.reference===n&&(n=af(n));var r=$6("transform"),s=t.instance.popper.style,i=s.top,a=s.left,l=s[r];s.top="",s.left="",s[r]="";var c=q6(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);s.top=i,s.left=a,s[r]=l,e.boundaries=c;var d=e.priority,h=t.offsets.popper,m={primary:function(x){var y=h[x];return h[x]c[x]&&!e.escapeWithReference&&(w=Math.min(h[y],c[x]-(x==="right"?h.width:h.height))),lf({},y,w)}};return d.forEach(function(g){var x=["left","top"].indexOf(g)!==-1?"primary":"secondary";h=wa({},h,m[x](g))}),t.offsets.popper=h,t}function oge(t){var e=t.placement,n=e.split("-")[0],r=e.split("-")[1];if(r){var s=t.offsets,i=s.reference,a=s.popper,l=["bottom","top"].indexOf(n)!==-1,c=l?"left":"top",d=l?"width":"height",h={start:lf({},c,i[c]),end:lf({},c,i[c]+i[d]-a[d])};t.offsets.popper=wa({},a,h[r])}return t}function lge(t){if(!VH(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=eg(t.instance.modifiers,function(r){return r.name==="preventOverflow"}).boundaries;if(e.bottomn.right||e.top>n.bottom||e.right2&&arguments[2]!==void 0?arguments[2]:{};zpe(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(r.update)},this.update=Rpe(this.update.bind(this)),this.options=wa({},t.Defaults,s),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(wa({},t.Defaults.modifiers,s.modifiers)).forEach(function(a){r.options.modifiers[a]=wa({},t.Defaults.modifiers[a]||{},s.modifiers?s.modifiers[a]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(a){return wa({name:a},r.options.modifiers[a])}).sort(function(a,l){return a.order-l.order}),this.modifiers.forEach(function(a){a.enabled&&AH(a.onLoad)&&a.onLoad(r.reference,r.popper,r.options,a,r.state)}),this.update();var i=this.options.eventsEnabled;i&&this.enableEventListeners(),this.state.eventsEnabled=i}return Ipe(t,[{key:"update",value:function(){return qpe.call(this)}},{key:"destroy",value:function(){return $pe.call(this)}},{key:"enableEventListeners",value:function(){return Qpe.call(this)}},{key:"disableEventListeners",value:function(){return Upe.call(this)}}]),t})();ip.Utils=(typeof window<"u"?window:global).PopperUtils;ip.placements=UH;ip.Defaults=dge;var hge=["innerHTML","ownerDocument","style","attributes","nodeValue"],fge=["Array","ArrayBuffer","AsyncFunction","AsyncGenerator","AsyncGeneratorFunction","Date","Error","Function","Generator","GeneratorFunction","HTMLElement","Map","Object","Promise","RegExp","Set","WeakMap","WeakSet"],mge=["bigint","boolean","null","number","string","symbol","undefined"];function kb(t){var e=Object.prototype.toString.call(t).slice(8,-1);if(/HTML\w+Element/.test(e))return"HTMLElement";if(pge(e))return e}function so(t){return function(e){return kb(e)===t}}function pge(t){return fge.includes(t)}function Rf(t){return function(e){return typeof e===t}}function gge(t){return mge.includes(t)}function _e(t){if(t===null)return"null";switch(typeof t){case"bigint":return"bigint";case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"symbol":return"symbol";case"undefined":return"undefined"}if(_e.array(t))return"Array";if(_e.plainFunction(t))return"Function";var e=kb(t);return e||"Object"}_e.array=Array.isArray;_e.arrayOf=function(t,e){return!_e.array(t)&&!_e.function(e)?!1:t.every(function(n){return e(n)})};_e.asyncGeneratorFunction=function(t){return kb(t)==="AsyncGeneratorFunction"};_e.asyncFunction=so("AsyncFunction");_e.bigint=Rf("bigint");_e.boolean=function(t){return t===!0||t===!1};_e.date=so("Date");_e.defined=function(t){return!_e.undefined(t)};_e.domElement=function(t){return _e.object(t)&&!_e.plainObject(t)&&t.nodeType===1&&_e.string(t.nodeName)&&hge.every(function(e){return e in t})};_e.empty=function(t){return _e.string(t)&&t.length===0||_e.array(t)&&t.length===0||_e.object(t)&&!_e.map(t)&&!_e.set(t)&&Object.keys(t).length===0||_e.set(t)&&t.size===0||_e.map(t)&&t.size===0};_e.error=so("Error");_e.function=Rf("function");_e.generator=function(t){return _e.iterable(t)&&_e.function(t.next)&&_e.function(t.throw)};_e.generatorFunction=so("GeneratorFunction");_e.instanceOf=function(t,e){return!t||!e?!1:Object.getPrototypeOf(t)===e.prototype};_e.iterable=function(t){return!_e.nullOrUndefined(t)&&_e.function(t[Symbol.iterator])};_e.map=so("Map");_e.nan=function(t){return Number.isNaN(t)};_e.null=function(t){return t===null};_e.nullOrUndefined=function(t){return _e.null(t)||_e.undefined(t)};_e.number=function(t){return Rf("number")(t)&&!_e.nan(t)};_e.numericString=function(t){return _e.string(t)&&t.length>0&&!Number.isNaN(Number(t))};_e.object=function(t){return!_e.nullOrUndefined(t)&&(_e.function(t)||typeof t=="object")};_e.oneOf=function(t,e){return _e.array(t)?t.indexOf(e)>-1:!1};_e.plainFunction=so("Function");_e.plainObject=function(t){if(kb(t)!=="Object")return!1;var e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};_e.primitive=function(t){return _e.null(t)||gge(typeof t)};_e.promise=so("Promise");_e.propertyOf=function(t,e,n){if(!_e.object(t)||!e)return!1;var r=t[e];return _e.function(n)?n(r):_e.defined(r)};_e.regexp=so("RegExp");_e.set=so("Set");_e.string=Rf("string");_e.symbol=Rf("symbol");_e.undefined=Rf("undefined");_e.weakMap=so("WeakMap");_e.weakSet=so("WeakSet");function WH(t){return function(e){return typeof e===t}}var xge=WH("function"),vge=function(t){return t===null},AM=function(t){return Object.prototype.toString.call(t).slice(8,-1)==="RegExp"},RM=function(t){return!yge(t)&&!vge(t)&&(xge(t)||typeof t=="object")},yge=WH("undefined"),mO=function(t){var e=typeof Symbol=="function"&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")};function bge(t,e){var n=t.length;if(n!==e.length)return!1;for(var r=n;r--!==0;)if(!bi(t[r],e[r]))return!1;return!0}function wge(t,e){if(t.byteLength!==e.byteLength)return!1;for(var n=new DataView(t.buffer),r=new DataView(e.buffer),s=t.byteLength;s--;)if(n.getUint8(s)!==r.getUint8(s))return!1;return!0}function Sge(t,e){var n,r,s,i;if(t.size!==e.size)return!1;try{for(var a=mO(t.entries()),l=a.next();!l.done;l=a.next()){var c=l.value;if(!e.has(c[0]))return!1}}catch(m){n={error:m}}finally{try{l&&!l.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}try{for(var d=mO(t.entries()),h=d.next();!h.done;h=d.next()){var c=h.value;if(!bi(c[1],e.get(c[0])))return!1}}catch(m){s={error:m}}finally{try{h&&!h.done&&(i=d.return)&&i.call(d)}finally{if(s)throw s.error}}return!0}function kge(t,e){var n,r;if(t.size!==e.size)return!1;try{for(var s=mO(t.entries()),i=s.next();!i.done;i=s.next()){var a=i.value;if(!e.has(a[0]))return!1}}catch(l){n={error:l}}finally{try{i&&!i.done&&(r=s.return)&&r.call(s)}finally{if(n)throw n.error}}return!0}function bi(t,e){if(t===e)return!0;if(t&&RM(t)&&e&&RM(e)){if(t.constructor!==e.constructor)return!1;if(Array.isArray(t)&&Array.isArray(e))return bge(t,e);if(t instanceof Map&&e instanceof Map)return Sge(t,e);if(t instanceof Set&&e instanceof Set)return kge(t,e);if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(e))return wge(t,e);if(AM(t)&&AM(e))return t.source===e.source&&t.flags===e.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===e.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===e.toString();var n=Object.keys(t),r=Object.keys(e);if(n.length!==r.length)return!1;for(var s=n.length;s--!==0;)if(!Object.prototype.hasOwnProperty.call(e,n[s]))return!1;for(var s=n.length;s--!==0;){var i=n[s];if(!(i==="_owner"&&t.$$typeof)&&!bi(t[i],e[i]))return!1}return!0}return Number.isNaN(t)&&Number.isNaN(e)?!0:t===e}function Oge(){for(var t=[],e=0;ec);return _e.undefined(r)||(d=d&&c===r),_e.undefined(i)||(d=d&&l===i),d}function PM(t,e,n){var r=n.key,s=n.type,i=n.value,a=Eo(t,r),l=Eo(e,r),c=s==="added"?a:l,d=s==="added"?l:a;if(!_e.nullOrUndefined(i)){if(_e.defined(c)){if(_e.array(c)||_e.plainObject(c))return jge(c,d,i)}else return bi(d,i);return!1}return[a,l].every(_e.array)?!d.every(Q6(c)):[a,l].every(_e.plainObject)?Nge(Object.keys(c),Object.keys(d)):![a,l].every(function(h){return _e.primitive(h)&&_e.defined(h)})&&(s==="added"?!_e.defined(a)&&_e.defined(l):_e.defined(a)&&!_e.defined(l))}function zM(t,e,n){var r=n===void 0?{}:n,s=r.key,i=Eo(t,s),a=Eo(e,s);if(!GH(i,a))throw new TypeError("Inputs have different types");if(!Oge(i,a))throw new TypeError("Inputs don't have length");return[i,a].every(_e.plainObject)&&(i=Object.keys(i),a=Object.keys(a)),[i,a]}function IM(t){return function(e){var n=e[0],r=e[1];return _e.array(t)?bi(t,r)||t.some(function(s){return bi(s,r)||_e.array(r)&&Q6(r)(s)}):_e.plainObject(t)&&t[n]?!!t[n]&&bi(t[n],r):bi(t,r)}}function Nge(t,e){return e.some(function(n){return!t.includes(n)})}function LM(t){return function(e){return _e.array(t)?t.some(function(n){return bi(n,e)||_e.array(e)&&Q6(e)(n)}):bi(t,e)}}function Qm(t,e){return _e.array(t)?t.some(function(n){return bi(n,e)}):bi(t,e)}function Q6(t){return function(e){return t.some(function(n){return bi(n,e)})}}function GH(){for(var t=[],e=0;e"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function _ge(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i=0)&&(n[s]=t[s]);return n}function XH(t,e){if(t==null)return{};var n=_ge(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function jl(t){if(t===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function Mge(t,e){if(e&&(typeof e=="object"||typeof e=="function"))return e;if(e!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return jl(t)}function sg(t){var e=Ege();return function(){var r=ly(t),s;if(e){var i=ly(this).constructor;s=Reflect.construct(r,arguments,i)}else s=r.apply(this,arguments);return Mge(this,s)}}function Age(t,e){if(typeof t!="object"||t===null)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function YH(t){var e=Age(t,"string");return typeof e=="symbol"?e:String(e)}var Rge={flip:{padding:20},preventOverflow:{padding:10}},Dge="The typeValidator argument must be a function with the signature function(props, propName, componentName).",Pge="The error message is optional, but must be a string if provided.";function zge(t,e,n,r){return typeof t=="boolean"?t:typeof t=="function"?t(e,n,r):t?!!t:!1}function Ige(t,e){return Object.hasOwnProperty.call(t,e)}function Lge(t,e,n,r){return new Error("Required ".concat(t[e]," `").concat(e,"` was not specified in `").concat(n,"`."))}function Bge(t,e){if(typeof t!="function")throw new TypeError(Dge);if(e&&typeof e!="string")throw new TypeError(Pge)}function FM(t,e,n){return Bge(t,n),function(r,s,i){for(var a=arguments.length,l=new Array(a>3?a-3:0),c=3;c3&&arguments[3]!==void 0?arguments[3]:!1;t.addEventListener(e,n,r)}function qge(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;t.removeEventListener(e,n,r)}function $ge(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,s;s=function(a){n(a),qge(t,e,s)},Fge(t,e,s,r)}function qM(){}var KH=(function(t){rg(n,t);var e=sg(n);function n(){return tg(this,n),e.apply(this,arguments)}return ng(n,[{key:"componentDidMount",value:function(){vo()&&(this.node||this.appendNode(),Vm||this.renderPortal())}},{key:"componentDidUpdate",value:function(){vo()&&(Vm||this.renderPortal())}},{key:"componentWillUnmount",value:function(){!vo()||!this.node||(Vm||K1.unmountComponentAtNode(this.node),this.node&&this.node.parentNode===document.body&&(document.body.removeChild(this.node),this.node=void 0))}},{key:"appendNode",value:function(){var s=this.props,i=s.id,a=s.zIndex;this.node||(this.node=document.createElement("div"),i&&(this.node.id=i),a&&(this.node.style.zIndex=a),document.body.appendChild(this.node))}},{key:"renderPortal",value:function(){if(!vo())return null;var s=this.props,i=s.children,a=s.setRef;if(this.node||this.appendNode(),Vm)return K1.createPortal(i,this.node);var l=K1.unstable_renderSubtreeIntoContainer(this,i.length>1?ae.createElement("div",null,i):i[0],this.node);return a(l),null}},{key:"renderReact16",value:function(){var s=this.props,i=s.hasChildren,a=s.placement,l=s.target;return i?this.renderPortal():l||a==="center"?this.renderPortal():null}},{key:"render",value:function(){return Vm?this.renderReact16():null}}]),n})(ae.Component);Bs(KH,"propTypes",{children:Ge.oneOfType([Ge.element,Ge.array]),hasChildren:Ge.bool,id:Ge.oneOfType([Ge.string,Ge.number]),placement:Ge.string,setRef:Ge.func.isRequired,target:Ge.oneOfType([Ge.object,Ge.string]),zIndex:Ge.number});var ZH=(function(t){rg(n,t);var e=sg(n);function n(){return tg(this,n),e.apply(this,arguments)}return ng(n,[{key:"parentStyle",get:function(){var s=this.props,i=s.placement,a=s.styles,l=a.arrow.length,c={pointerEvents:"none",position:"absolute",width:"100%"};return i.startsWith("top")?(c.bottom=0,c.left=0,c.right=0,c.height=l):i.startsWith("bottom")?(c.left=0,c.right=0,c.top=0,c.height=l):i.startsWith("left")?(c.right=0,c.top=0,c.bottom=0):i.startsWith("right")&&(c.left=0,c.top=0),c}},{key:"render",value:function(){var s=this.props,i=s.placement,a=s.setArrowRef,l=s.styles,c=l.arrow,d=c.color,h=c.display,m=c.length,g=c.margin,x=c.position,y=c.spread,w={display:h,position:x},S,k=y,j=m;return i.startsWith("top")?(S="0,0 ".concat(k/2,",").concat(j," ").concat(k,",0"),w.bottom=0,w.marginLeft=g,w.marginRight=g):i.startsWith("bottom")?(S="".concat(k,",").concat(j," ").concat(k/2,",0 0,").concat(j),w.top=0,w.marginLeft=g,w.marginRight=g):i.startsWith("left")?(j=y,k=m,S="0,0 ".concat(k,",").concat(j/2," 0,").concat(j),w.right=0,w.marginTop=g,w.marginBottom=g):i.startsWith("right")&&(j=y,k=m,S="".concat(k,",").concat(j," ").concat(k,",0 0,").concat(j/2),w.left=0,w.marginTop=g,w.marginBottom=g),ae.createElement("div",{className:"__floater__arrow",style:this.parentStyle},ae.createElement("span",{ref:a,style:w},ae.createElement("svg",{width:k,height:j,version:"1.1",xmlns:"http://www.w3.org/2000/svg"},ae.createElement("polygon",{points:S,fill:d}))))}}]),n})(ae.Component);Bs(ZH,"propTypes",{placement:Ge.string.isRequired,setArrowRef:Ge.func.isRequired,styles:Ge.object.isRequired});var Hge=["color","height","width"];function JH(t){var e=t.handleClick,n=t.styles,r=n.color,s=n.height,i=n.width,a=XH(n,Hge);return ae.createElement("button",{"aria-label":"close",onClick:e,style:a,type:"button"},ae.createElement("svg",{width:"".concat(i,"px"),height:"".concat(s,"px"),viewBox:"0 0 18 18",version:"1.1",xmlns:"http://www.w3.org/2000/svg",preserveAspectRatio:"xMidYMid"},ae.createElement("g",null,ae.createElement("path",{d:"M8.13911129,9.00268191 L0.171521827,17.0258467 C-0.0498027049,17.248715 -0.0498027049,17.6098394 0.171521827,17.8327545 C0.28204354,17.9443526 0.427188206,17.9998706 0.572051765,17.9998706 C0.71714958,17.9998706 0.862013139,17.9443526 0.972581703,17.8327545 L9.0000937,9.74924618 L17.0276057,17.8327545 C17.1384085,17.9443526 17.2832721,17.9998706 17.4281356,17.9998706 C17.5729992,17.9998706 17.718097,17.9443526 17.8286656,17.8327545 C18.0499901,17.6098862 18.0499901,17.2487618 17.8286656,17.0258467 L9.86135722,9.00268191 L17.8340066,0.973848225 C18.0553311,0.750979934 18.0553311,0.389855532 17.8340066,0.16694039 C17.6126821,-0.0556467968 17.254037,-0.0556467968 17.0329467,0.16694039 L9.00042166,8.25611765 L0.967006424,0.167268345 C0.745681892,-0.0553188426 0.387317931,-0.0553188426 0.165993399,0.167268345 C-0.0553311331,0.390136635 -0.0553311331,0.751261038 0.165993399,0.974176179 L8.13920499,9.00268191 L8.13911129,9.00268191 Z",fill:r}))))}JH.propTypes={handleClick:Ge.func.isRequired,styles:Ge.object.isRequired};function eQ(t){var e=t.content,n=t.footer,r=t.handleClick,s=t.open,i=t.positionWrapper,a=t.showCloseButton,l=t.title,c=t.styles,d={content:ae.isValidElement(e)?e:ae.createElement("div",{className:"__floater__content",style:c.content},e)};return l&&(d.title=ae.isValidElement(l)?l:ae.createElement("div",{className:"__floater__title",style:c.title},l)),n&&(d.footer=ae.isValidElement(n)?n:ae.createElement("div",{className:"__floater__footer",style:c.footer},n)),(a||i)&&!_e.boolean(s)&&(d.close=ae.createElement(JH,{styles:c.close,handleClick:r})),ae.createElement("div",{className:"__floater__container",style:c.container},d.close,d.title,d.content,d.footer)}eQ.propTypes={content:Ge.node.isRequired,footer:Ge.node,handleClick:Ge.func.isRequired,open:Ge.bool,positionWrapper:Ge.bool.isRequired,showCloseButton:Ge.bool.isRequired,styles:Ge.object.isRequired,title:Ge.node};var tQ=(function(t){rg(n,t);var e=sg(n);function n(){return tg(this,n),e.apply(this,arguments)}return ng(n,[{key:"style",get:function(){var s=this.props,i=s.disableAnimation,a=s.component,l=s.placement,c=s.hideArrow,d=s.status,h=s.styles,m=h.arrow.length,g=h.floater,x=h.floaterCentered,y=h.floaterClosing,w=h.floaterOpening,S=h.floaterWithAnimation,k=h.floaterWithComponent,j={};return c||(l.startsWith("top")?j.padding="0 0 ".concat(m,"px"):l.startsWith("bottom")?j.padding="".concat(m,"px 0 0"):l.startsWith("left")?j.padding="0 ".concat(m,"px 0 0"):l.startsWith("right")&&(j.padding="0 0 0 ".concat(m,"px"))),[On.OPENING,On.OPEN].indexOf(d)!==-1&&(j=br(br({},j),w)),d===On.CLOSING&&(j=br(br({},j),y)),d===On.OPEN&&!i&&(j=br(br({},j),S)),l==="center"&&(j=br(br({},j),x)),a&&(j=br(br({},j),k)),br(br({},g),j)}},{key:"render",value:function(){var s=this.props,i=s.component,a=s.handleClick,l=s.hideArrow,c=s.setFloaterRef,d=s.status,h={},m=["__floater"];return i?ae.isValidElement(i)?h.content=ae.cloneElement(i,{closeFn:a}):h.content=i({closeFn:a}):h.content=ae.createElement(eQ,this.props),d===On.OPEN&&m.push("__floater__open"),l||(h.arrow=ae.createElement(ZH,this.props)),ae.createElement("div",{ref:c,className:m.join(" "),style:this.style},ae.createElement("div",{className:"__floater__body"},h.content,h.arrow))}}]),n})(ae.Component);Bs(tQ,"propTypes",{component:Ge.oneOfType([Ge.func,Ge.element]),content:Ge.node,disableAnimation:Ge.bool.isRequired,footer:Ge.node,handleClick:Ge.func.isRequired,hideArrow:Ge.bool.isRequired,open:Ge.bool,placement:Ge.string.isRequired,positionWrapper:Ge.bool.isRequired,setArrowRef:Ge.func.isRequired,setFloaterRef:Ge.func.isRequired,showCloseButton:Ge.bool,status:Ge.string.isRequired,styles:Ge.object.isRequired,title:Ge.node});var nQ=(function(t){rg(n,t);var e=sg(n);function n(){return tg(this,n),e.apply(this,arguments)}return ng(n,[{key:"render",value:function(){var s=this.props,i=s.children,a=s.handleClick,l=s.handleMouseEnter,c=s.handleMouseLeave,d=s.setChildRef,h=s.setWrapperRef,m=s.style,g=s.styles,x;if(i)if(ae.Children.count(i)===1)if(!ae.isValidElement(i))x=ae.createElement("span",null,i);else{var y=_e.function(i.type)?"innerRef":"ref";x=ae.cloneElement(ae.Children.only(i),Bs({},y,d))}else x=i;return x?ae.createElement("span",{ref:h,style:br(br({},g),m),onClick:a,onMouseEnter:l,onMouseLeave:c},x):null}}]),n})(ae.Component);Bs(nQ,"propTypes",{children:Ge.node,handleClick:Ge.func.isRequired,handleMouseEnter:Ge.func.isRequired,handleMouseLeave:Ge.func.isRequired,setChildRef:Ge.func.isRequired,setWrapperRef:Ge.func.isRequired,style:Ge.object,styles:Ge.object.isRequired});var Qge={zIndex:100};function Vge(t){var e=Va(Qge,t.options||{});return{wrapper:{cursor:"help",display:"inline-flex",flexDirection:"column",zIndex:e.zIndex},wrapperPosition:{left:-1e3,position:"absolute",top:-1e3,visibility:"hidden"},floater:{display:"inline-block",filter:"drop-shadow(0 0 3px rgba(0, 0, 0, 0.3))",maxWidth:300,opacity:0,position:"relative",transition:"opacity 0.3s",visibility:"hidden",zIndex:e.zIndex},floaterOpening:{opacity:1,visibility:"visible"},floaterWithAnimation:{opacity:1,transition:"opacity 0.3s, transform 0.2s",visibility:"visible"},floaterWithComponent:{maxWidth:"100%"},floaterClosing:{opacity:0,visibility:"visible"},floaterCentered:{left:"50%",position:"fixed",top:"50%",transform:"translate(-50%, -50%)"},container:{backgroundColor:"#fff",color:"#666",minHeight:60,minWidth:200,padding:20,position:"relative",zIndex:10},title:{borderBottom:"1px solid #555",color:"#555",fontSize:18,marginBottom:5,paddingBottom:6,paddingRight:18},content:{fontSize:15},close:{backgroundColor:"transparent",border:0,borderRadius:0,color:"#555",fontSize:0,height:15,outline:"none",padding:10,position:"absolute",right:0,top:0,width:15,WebkitAppearance:"none"},footer:{borderTop:"1px solid #ccc",fontSize:13,marginTop:10,paddingTop:5},arrow:{color:"#fff",display:"inline-flex",length:16,margin:8,position:"absolute",spread:32},options:e}}var Uge=["arrow","flip","offset"],Wge=["position","top","right","bottom","left"],V6=(function(t){rg(n,t);var e=sg(n);function n(r){var s;return tg(this,n),s=e.call(this,r),Bs(jl(s),"setArrowRef",function(i){s.arrowRef=i}),Bs(jl(s),"setChildRef",function(i){s.childRef=i}),Bs(jl(s),"setFloaterRef",function(i){s.floaterRef=i}),Bs(jl(s),"setWrapperRef",function(i){s.wrapperRef=i}),Bs(jl(s),"handleTransitionEnd",function(){var i=s.state.status,a=s.props.callback;s.wrapperPopper&&s.wrapperPopper.instance.update(),s.setState({status:i===On.OPENING?On.OPEN:On.IDLE},function(){var l=s.state.status;a(l===On.OPEN?"open":"close",s.props)})}),Bs(jl(s),"handleClick",function(){var i=s.props,a=i.event,l=i.open;if(!_e.boolean(l)){var c=s.state,d=c.positionWrapper,h=c.status;(s.event==="click"||s.event==="hover"&&d)&&(S1({title:"click",data:[{event:a,status:h===On.OPEN?"closing":"opening"}],debug:s.debug}),s.toggle())}}),Bs(jl(s),"handleMouseEnter",function(){var i=s.props,a=i.event,l=i.open;if(!(_e.boolean(l)||gS())){var c=s.state.status;s.event==="hover"&&c===On.IDLE&&(S1({title:"mouseEnter",data:[{key:"originalEvent",value:a}],debug:s.debug}),clearTimeout(s.eventDelayTimeout),s.toggle())}}),Bs(jl(s),"handleMouseLeave",function(){var i=s.props,a=i.event,l=i.eventDelay,c=i.open;if(!(_e.boolean(c)||gS())){var d=s.state,h=d.status,m=d.positionWrapper;s.event==="hover"&&(S1({title:"mouseLeave",data:[{key:"originalEvent",value:a}],debug:s.debug}),l?[On.OPENING,On.OPEN].indexOf(h)!==-1&&!m&&!s.eventDelayTimeout&&(s.eventDelayTimeout=setTimeout(function(){delete s.eventDelayTimeout,s.toggle()},l*1e3)):s.toggle(On.IDLE))}}),s.state={currentPlacement:r.placement,needsUpdate:!1,positionWrapper:r.wrapperOptions.position&&!!r.target,status:On.INIT,statusWrapper:On.INIT},s._isMounted=!1,s.hasMounted=!1,vo()&&window.addEventListener("load",function(){s.popper&&s.popper.instance.update(),s.wrapperPopper&&s.wrapperPopper.instance.update()}),s}return ng(n,[{key:"componentDidMount",value:function(){if(vo()){var s=this.state.positionWrapper,i=this.props,a=i.children,l=i.open,c=i.target;this._isMounted=!0,S1({title:"init",data:{hasChildren:!!a,hasTarget:!!c,isControlled:_e.boolean(l),positionWrapper:s,target:this.target,floater:this.floaterRef},debug:this.debug}),this.hasMounted||(this.initPopper(),this.hasMounted=!0),!a&&c&&_e.boolean(l)}}},{key:"componentDidUpdate",value:function(s,i){if(vo()){var a=this.props,l=a.autoOpen,c=a.open,d=a.target,h=a.wrapperOptions,m=Cge(i,this.state),g=m.changedFrom,x=m.changed;if(s.open!==c){var y;_e.boolean(c)&&(y=c?On.OPENING:On.CLOSING),this.toggle(y)}(s.wrapperOptions.position!==h.position||s.target!==d)&&this.changeWrapperPosition(this.props),x("status",On.IDLE)&&c?this.toggle(On.OPEN):g("status",On.INIT,On.IDLE)&&l&&this.toggle(On.OPEN),this.popper&&x("status",On.OPENING)&&this.popper.instance.update(),this.floaterRef&&(x("status",On.OPENING)||x("status",On.CLOSING))&&$ge(this.floaterRef,"transitionend",this.handleTransitionEnd),x("needsUpdate",!0)&&this.rebuildPopper()}}},{key:"componentWillUnmount",value:function(){vo()&&(this._isMounted=!1,this.popper&&this.popper.instance.destroy(),this.wrapperPopper&&this.wrapperPopper.instance.destroy())}},{key:"initPopper",value:function(){var s=this,i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.target,a=this.state.positionWrapper,l=this.props,c=l.disableFlip,d=l.getPopper,h=l.hideArrow,m=l.offset,g=l.placement,x=l.wrapperOptions,y=g==="top"||g==="bottom"?"flip":["right","bottom-end","top-end","left","top-start","bottom-start"];if(g==="center")this.setState({status:On.IDLE});else if(i&&this.floaterRef){var w=this.options,S=w.arrow,k=w.flip,j=w.offset,N=XH(w,Uge);new ip(i,this.floaterRef,{placement:g,modifiers:br({arrow:br({enabled:!h,element:this.arrowRef},S),flip:br({enabled:!c,behavior:y},k),offset:br({offset:"0, ".concat(m,"px")},j)},N),onCreate:function(_){var M;if(s.popper=_,!((M=s.floaterRef)!==null&&M!==void 0&&M.isConnected)){s.setState({needsUpdate:!0});return}d(_,"floater"),s._isMounted&&s.setState({currentPlacement:_.placement,status:On.IDLE}),g!==_.placement&&setTimeout(function(){_.instance.update()},1)},onUpdate:function(_){s.popper=_;var M=s.state.currentPlacement;s._isMounted&&_.placement!==M&&s.setState({currentPlacement:_.placement})}})}if(a){var T=_e.undefined(x.offset)?0:x.offset;new ip(this.target,this.wrapperRef,{placement:x.placement||g,modifiers:{arrow:{enabled:!1},offset:{offset:"0, ".concat(T,"px")},flip:{enabled:!1}},onCreate:function(_){s.wrapperPopper=_,s._isMounted&&s.setState({statusWrapper:On.IDLE}),d(_,"wrapper"),g!==_.placement&&setTimeout(function(){_.instance.update()},1)}})}}},{key:"rebuildPopper",value:function(){var s=this;this.floaterRefInterval=setInterval(function(){var i;(i=s.floaterRef)!==null&&i!==void 0&&i.isConnected&&(clearInterval(s.floaterRefInterval),s.setState({needsUpdate:!1}),s.initPopper())},50)}},{key:"changeWrapperPosition",value:function(s){var i=s.target,a=s.wrapperOptions;this.setState({positionWrapper:a.position&&!!i})}},{key:"toggle",value:function(s){var i=this.state.status,a=i===On.OPEN?On.CLOSING:On.OPENING;_e.undefined(s)||(a=s),this.setState({status:a})}},{key:"debug",get:function(){var s=this.props.debug;return s||vo()&&"ReactFloaterDebug"in window&&!!window.ReactFloaterDebug}},{key:"event",get:function(){var s=this.props,i=s.disableHoverToClick,a=s.event;return a==="hover"&&gS()&&!i?"click":a}},{key:"options",get:function(){var s=this.props.options;return Va(Rge,s||{})}},{key:"styles",get:function(){var s=this,i=this.state,a=i.status,l=i.positionWrapper,c=i.statusWrapper,d=this.props.styles,h=Va(Vge(d),d);if(l){var m;[On.IDLE].indexOf(a)===-1||[On.IDLE].indexOf(c)===-1?m=h.wrapperPosition:m=this.wrapperPopper.styles,h.wrapper=br(br({},h.wrapper),m)}if(this.target){var g=window.getComputedStyle(this.target);this.wrapperStyles?h.wrapper=br(br({},h.wrapper),this.wrapperStyles):["relative","static"].indexOf(g.position)===-1&&(this.wrapperStyles={},l||(Wge.forEach(function(x){s.wrapperStyles[x]=g[x]}),h.wrapper=br(br({},h.wrapper),this.wrapperStyles),this.target.style.position="relative",this.target.style.top="auto",this.target.style.right="auto",this.target.style.bottom="auto",this.target.style.left="auto"))}return h}},{key:"target",get:function(){if(!vo())return null;var s=this.props.target;return s?_e.domElement(s)?s:document.querySelector(s):this.childRef||this.wrapperRef}},{key:"render",value:function(){var s=this.state,i=s.currentPlacement,a=s.positionWrapper,l=s.status,c=this.props,d=c.children,h=c.component,m=c.content,g=c.disableAnimation,x=c.footer,y=c.hideArrow,w=c.id,S=c.open,k=c.showCloseButton,j=c.style,N=c.target,T=c.title,E=ae.createElement(nQ,{handleClick:this.handleClick,handleMouseEnter:this.handleMouseEnter,handleMouseLeave:this.handleMouseLeave,setChildRef:this.setChildRef,setWrapperRef:this.setWrapperRef,style:j,styles:this.styles.wrapper},d),_={};return a?_.wrapperInPortal=E:_.wrapperAsChildren=E,ae.createElement("span",null,ae.createElement(KH,{hasChildren:!!d,id:w,placement:i,setRef:this.setFloaterRef,target:N,zIndex:this.styles.options.zIndex},ae.createElement(tQ,{component:h,content:m,disableAnimation:g,footer:x,handleClick:this.handleClick,hideArrow:y||i==="center",open:S,placement:i,positionWrapper:a,setArrowRef:this.setArrowRef,setFloaterRef:this.setFloaterRef,showCloseButton:k,status:l,styles:this.styles,title:T}),_.wrapperInPortal),_.wrapperAsChildren)}}]),n})(ae.Component);Bs(V6,"propTypes",{autoOpen:Ge.bool,callback:Ge.func,children:Ge.node,component:FM(Ge.oneOfType([Ge.func,Ge.element]),function(t){return!t.content}),content:FM(Ge.node,function(t){return!t.component}),debug:Ge.bool,disableAnimation:Ge.bool,disableFlip:Ge.bool,disableHoverToClick:Ge.bool,event:Ge.oneOf(["hover","click"]),eventDelay:Ge.number,footer:Ge.node,getPopper:Ge.func,hideArrow:Ge.bool,id:Ge.oneOfType([Ge.string,Ge.number]),offset:Ge.number,open:Ge.bool,options:Ge.object,placement:Ge.oneOf(["top","top-start","top-end","bottom","bottom-start","bottom-end","left","left-start","left-end","right","right-start","right-end","auto","center"]),showCloseButton:Ge.bool,style:Ge.object,styles:Ge.object,target:Ge.oneOfType([Ge.object,Ge.string]),title:Ge.node,wrapperOptions:Ge.shape({offset:Ge.number,placement:Ge.oneOf(["top","top-start","top-end","bottom","bottom-start","bottom-end","left","left-start","left-end","right","right-start","right-end","auto"]),position:Ge.bool})});Bs(V6,"defaultProps",{autoOpen:!1,callback:qM,debug:!1,disableAnimation:!1,disableFlip:!1,disableHoverToClick:!1,event:"click",eventDelay:.4,getPopper:qM,hideArrow:!1,offset:15,placement:"bottom",showCloseButton:!1,styles:{},target:null,wrapperOptions:{position:!1}});var Gge=Object.defineProperty,Xge=(t,e,n)=>e in t?Gge(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,gt=(t,e,n)=>Xge(t,typeof e!="symbol"?e+"":e,n),Qn={INIT:"init",START:"start",STOP:"stop",RESET:"reset",PREV:"prev",NEXT:"next",GO:"go",CLOSE:"close",SKIP:"skip",UPDATE:"update"},Qa={TOUR_START:"tour:start",STEP_BEFORE:"step:before",BEACON:"beacon",TOOLTIP:"tooltip",STEP_AFTER:"step:after",TOUR_END:"tour:end",TOUR_STATUS:"tour:status",TARGET_NOT_FOUND:"error:target_not_found"},Qt={INIT:"init",READY:"ready",BEACON:"beacon",TOOLTIP:"tooltip",COMPLETE:"complete",ERROR:"error"},mn={IDLE:"idle",READY:"ready",WAITING:"waiting",RUNNING:"running",PAUSED:"paused",SKIPPED:"skipped",FINISHED:"finished"};function zc(){var t;return!!(typeof window<"u"&&((t=window.document)!=null&&t.createElement))}function rQ(t){return t?t.getBoundingClientRect():null}function Yge(t=!1){const{body:e,documentElement:n}=document;if(!e||!n)return 0;if(t){const r=[e.scrollHeight,e.offsetHeight,n.clientHeight,n.scrollHeight,n.offsetHeight].sort((i,a)=>i-a),s=Math.floor(r.length/2);return r.length%2===0?(r[s-1]+r[s])/2:r[s]}return Math.max(e.scrollHeight,e.offsetHeight,n.clientHeight,n.scrollHeight,n.offsetHeight)}function Ml(t){if(typeof t=="string")try{return document.querySelector(t)}catch{return null}return t}function Kge(t){return!t||t.nodeType!==1?null:getComputedStyle(t)}function ap(t,e,n){if(!t)return Uu();const r=MH(t);if(r){if(r.isSameNode(Uu()))return n?document:Uu();if(!(r.scrollHeight>r.offsetHeight)&&!e)return r.style.overflow="initial",Uu()}return r}function Ob(t,e){if(!t)return!1;const n=ap(t,e);return n?!n.isSameNode(Uu()):!1}function Zge(t){return t.offsetParent!==document.body}function cf(t,e="fixed"){if(!t||!(t instanceof HTMLElement))return!1;const{nodeName:n}=t,r=Kge(t);return n==="BODY"||n==="HTML"?!1:r&&r.position===e?!0:t.parentNode?cf(t.parentNode,e):!1}function Jge(t){var e;if(!t)return!1;let n=t;for(;n&&n!==document.body;){if(n instanceof HTMLElement){const{display:r,visibility:s}=getComputedStyle(n);if(r==="none"||s==="hidden")return!1}n=(e=n.parentElement)!=null?e:null}return!0}function exe(t,e,n){var r,s,i;const a=rQ(t),l=ap(t,n),c=Ob(t,n),d=cf(t);let h=0,m=(r=a?.top)!=null?r:0;if(c&&d){const g=(s=t?.offsetTop)!=null?s:0,x=(i=l?.scrollTop)!=null?i:0;m=g-x}else l instanceof HTMLElement&&(h=l.scrollTop,!c&&!cf(t)&&(m+=h),l.isSameNode(Uu())||(m+=Uu().scrollTop));return Math.floor(m-e)}function txe(t,e,n){var r;if(!t)return 0;const{offsetTop:s=0,scrollTop:i=0}=(r=MH(t))!=null?r:{};let a=t.getBoundingClientRect().top+i;s&&(Ob(t,n)||Zge(t))&&(a-=s);const l=Math.floor(a-e);return l<0?0:l}function Uu(){var t;return(t=document.scrollingElement)!=null?t:document.documentElement}function nxe(t,e){const{duration:n,element:r}=e;return new Promise((s,i)=>{const{scrollTop:a}=r,l=t>a?t-a:a-t;wpe.top(r,t,{duration:l<100?50:n},c=>c&&c.message!=="Element already at target scroll position"?i(c):s())})}var Um=pa.createPortal!==void 0;function sQ(t=navigator.userAgent){let e=t;return typeof window>"u"?e="node":document.documentMode?e="ie":/Edge/.test(t)?e="edge":window.opera||t.includes(" OPR/")?e="opera":typeof window.InstallTrigger<"u"?e="firefox":window.chrome?e="chrome":/(Version\/([\d._]+).*Safari|CriOS|FxiOS| Mobile\/)/.test(t)&&(e="safari"),e}function vv(t){return Object.prototype.toString.call(t).slice(8,-1).toLowerCase()}function yo(t,e={}){const{defaultValue:n,step:r,steps:s}=e;let i=jM(t);if(i)(i.includes("{step}")||i.includes("{steps}"))&&r&&s&&(i=i.replace("{step}",r.toString()).replace("{steps}",s.toString()));else if(b.isValidElement(t)&&!Object.values(t.props).length&&vv(t.type)==="function"){const a=t.type({});i=yo(a,e)}else i=jM(n);return i}function rxe(t,e){return!ft.plainObject(t)||!ft.array(e)?!1:Object.keys(t).every(n=>e.includes(n))}function sxe(t){const e=/^#?([\da-f])([\da-f])([\da-f])$/i,n=t.replace(e,(s,i,a,l)=>i+i+a+a+l+l),r=/^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i.exec(n);return r?[parseInt(r[1],16),parseInt(r[2],16),parseInt(r[3],16)]:[]}function $M(t){return t.disableBeacon||t.placement==="center"}function HM(){return!["chrome","safari","firefox","opera"].includes(sQ())}function hd({data:t,debug:e=!1,title:n,warn:r=!1}){const s=r?console.warn||console.error:console.log;e&&(n&&t?(console.groupCollapsed(`%creact-joyride: ${n}`,"color: #ff0044; font-weight: bold; font-size: 12px;"),Array.isArray(t)?t.forEach(i=>{ft.plainObject(i)&&i.key?s.apply(console,[i.key,i.value]):s.apply(console,[i])}):s.apply(console,[t]),console.groupEnd()):console.error("Missing title or data props"))}function ixe(t){return Object.keys(t)}function iQ(t,...e){if(!ft.plainObject(t))throw new TypeError("Expected an object");const n={};for(const r in t)({}).hasOwnProperty.call(t,r)&&(e.includes(r)||(n[r]=t[r]));return n}function axe(t,...e){if(!ft.plainObject(t))throw new TypeError("Expected an object");if(!e.length)return t;const n={};for(const r in t)({}).hasOwnProperty.call(t,r)&&e.includes(r)&&(n[r]=t[r]);return n}function gO(t,e,n){const r=i=>i.replace("{step}",String(e)).replace("{steps}",String(n));if(vv(t)==="string")return r(t);if(!b.isValidElement(t))return t;const{children:s}=t.props;if(vv(s)==="string"&&s.includes("{step}"))return b.cloneElement(t,{children:r(s)});if(Array.isArray(s))return b.cloneElement(t,{children:s.map(i=>typeof i=="string"?r(i):gO(i,e,n))});if(vv(t.type)==="function"&&!Object.values(t.props).length){const i=t.type({});return gO(i,e,n)}return t}function oxe(t){const{isFirstStep:e,lifecycle:n,previousLifecycle:r,scrollToFirstStep:s,step:i,target:a}=t;return!i.disableScrolling&&(!e||s||n===Qt.TOOLTIP)&&i.placement!=="center"&&(!i.isFixed||!cf(a))&&r!==n&&[Qt.BEACON,Qt.TOOLTIP].includes(n)}var lxe={options:{preventOverflow:{boundariesElement:"scrollParent"}},wrapperOptions:{offset:-18,position:!0}},aQ={back:"Back",close:"Close",last:"Last",next:"Next",nextLabelWithProgress:"Next (Step {step} of {steps})",open:"Open the dialog",skip:"Skip"},cxe={event:"click",placement:"bottom",offset:10,disableBeacon:!1,disableCloseOnEsc:!1,disableOverlay:!1,disableOverlayClose:!1,disableScrollParentFix:!1,disableScrolling:!1,hideBackButton:!1,hideCloseButton:!1,hideFooter:!1,isFixed:!1,locale:aQ,showProgress:!1,showSkipButton:!1,spotlightClicks:!1,spotlightPadding:10},uxe={continuous:!1,debug:!1,disableCloseOnEsc:!1,disableOverlay:!1,disableOverlayClose:!1,disableScrolling:!1,disableScrollParentFix:!1,getHelpers:void 0,hideBackButton:!1,run:!0,scrollOffset:20,scrollDuration:300,scrollToFirstStep:!1,showSkipButton:!1,showProgress:!1,spotlightClicks:!1,spotlightPadding:10,steps:[]},dxe={arrowColor:"#fff",backgroundColor:"#fff",beaconSize:36,overlayColor:"rgba(0, 0, 0, 0.5)",primaryColor:"#f04",spotlightShadow:"0 0 15px rgba(0, 0, 0, 0.5)",textColor:"#333",width:380,zIndex:100},Wm={backgroundColor:"transparent",border:0,borderRadius:0,color:"#555",cursor:"pointer",fontSize:16,lineHeight:1,padding:8,WebkitAppearance:"none"},QM={borderRadius:4,position:"absolute"};function hxe(t,e){var n,r,s,i,a;const{floaterProps:l,styles:c}=t,d=Va((n=e.floaterProps)!=null?n:{},l??{}),h=Va(c??{},(r=e.styles)!=null?r:{}),m=Va(dxe,h.options||{}),g=e.placement==="center"||e.disableBeacon;let{width:x}=m;window.innerWidth>480&&(x=380),"width"in m&&(x=typeof m.width=="number"&&window.innerWidthoQ(n,e)):(hd({title:"validateSteps",data:"steps must be an array",warn:!0,debug:e}),!1)}var lQ={action:"init",controlled:!1,index:0,lifecycle:Qt.INIT,origin:null,size:0,status:mn.IDLE},UM=ixe(iQ(lQ,"controlled","size")),mxe=class{constructor(t){gt(this,"beaconPopper"),gt(this,"tooltipPopper"),gt(this,"data",new Map),gt(this,"listener"),gt(this,"store",new Map),gt(this,"addListener",s=>{this.listener=s}),gt(this,"setSteps",s=>{const{size:i,status:a}=this.getState(),l={size:s.length,status:a};this.data.set("steps",s),a===mn.WAITING&&!i&&s.length&&(l.status=mn.RUNNING),this.setState(l)}),gt(this,"getPopper",s=>s==="beacon"?this.beaconPopper:this.tooltipPopper),gt(this,"setPopper",(s,i)=>{s==="beacon"?this.beaconPopper=i:this.tooltipPopper=i}),gt(this,"cleanupPoppers",()=>{this.beaconPopper=null,this.tooltipPopper=null}),gt(this,"close",(s=null)=>{const{index:i,status:a}=this.getState();a===mn.RUNNING&&this.setState({...this.getNextState({action:Qn.CLOSE,index:i+1,origin:s})})}),gt(this,"go",s=>{const{controlled:i,status:a}=this.getState();if(i||a!==mn.RUNNING)return;const l=this.getSteps()[s];this.setState({...this.getNextState({action:Qn.GO,index:s}),status:l?a:mn.FINISHED})}),gt(this,"info",()=>this.getState()),gt(this,"next",()=>{const{index:s,status:i}=this.getState();i===mn.RUNNING&&this.setState(this.getNextState({action:Qn.NEXT,index:s+1}))}),gt(this,"open",()=>{const{status:s}=this.getState();s===mn.RUNNING&&this.setState({...this.getNextState({action:Qn.UPDATE,lifecycle:Qt.TOOLTIP})})}),gt(this,"prev",()=>{const{index:s,status:i}=this.getState();i===mn.RUNNING&&this.setState({...this.getNextState({action:Qn.PREV,index:s-1})})}),gt(this,"reset",(s=!1)=>{const{controlled:i}=this.getState();i||this.setState({...this.getNextState({action:Qn.RESET,index:0}),status:s?mn.RUNNING:mn.READY})}),gt(this,"skip",()=>{const{status:s}=this.getState();s===mn.RUNNING&&this.setState({action:Qn.SKIP,lifecycle:Qt.INIT,status:mn.SKIPPED})}),gt(this,"start",s=>{const{index:i,size:a}=this.getState();this.setState({...this.getNextState({action:Qn.START,index:ft.number(s)?s:i},!0),status:a?mn.RUNNING:mn.WAITING})}),gt(this,"stop",(s=!1)=>{const{index:i,status:a}=this.getState();[mn.FINISHED,mn.SKIPPED].includes(a)||this.setState({...this.getNextState({action:Qn.STOP,index:i+(s?1:0)}),status:mn.PAUSED})}),gt(this,"update",s=>{var i,a;if(!rxe(s,UM))throw new Error(`State is not valid. Valid keys: ${UM.join(", ")}`);this.setState({...this.getNextState({...this.getState(),...s,action:(i=s.action)!=null?i:Qn.UPDATE,origin:(a=s.origin)!=null?a:null},!0)})});const{continuous:e=!1,stepIndex:n,steps:r=[]}=t??{};this.setState({action:Qn.INIT,controlled:ft.number(n),continuous:e,index:ft.number(n)?n:0,lifecycle:Qt.INIT,origin:null,status:r.length?mn.READY:mn.IDLE},!0),this.beaconPopper=null,this.tooltipPopper=null,this.listener=null,this.setSteps(r)}getState(){return this.store.size?{action:this.store.get("action")||"",controlled:this.store.get("controlled")||!1,index:parseInt(this.store.get("index"),10),lifecycle:this.store.get("lifecycle")||"",origin:this.store.get("origin")||null,size:this.store.get("size")||0,status:this.store.get("status")||""}:{...lQ}}getNextState(t,e=!1){var n,r,s,i,a;const{action:l,controlled:c,index:d,size:h,status:m}=this.getState(),g=ft.number(t.index)?t.index:d,x=c&&!e?d:Math.min(Math.max(g,0),h);return{action:(n=t.action)!=null?n:l,controlled:c,index:x,lifecycle:(r=t.lifecycle)!=null?r:Qt.INIT,origin:(s=t.origin)!=null?s:null,size:(i=t.size)!=null?i:h,status:x===h?mn.FINISHED:(a=t.status)!=null?a:m}}getSteps(){const t=this.data.get("steps");return Array.isArray(t)?t:[]}hasUpdatedState(t){const e=JSON.stringify(t),n=JSON.stringify(this.getState());return e!==n}setState(t,e=!1){const n=this.getState(),{action:r,index:s,lifecycle:i,origin:a=null,size:l,status:c}={...n,...t};this.store.set("action",r),this.store.set("index",s),this.store.set("lifecycle",i),this.store.set("origin",a),this.store.set("size",l),this.store.set("status",c),e&&(this.store.set("controlled",t.controlled),this.store.set("continuous",t.continuous)),this.listener&&this.hasUpdatedState(n)&&this.listener(this.getState())}getHelpers(){return{close:this.close,go:this.go,info:this.info,next:this.next,open:this.open,prev:this.prev,reset:this.reset,skip:this.skip}}};function pxe(t){return new mxe(t)}function gxe({styles:t}){return b.createElement("div",{key:"JoyrideSpotlight",className:"react-joyride__spotlight","data-test-id":"spotlight",style:t})}var xxe=gxe,vxe=class extends b.Component{constructor(){super(...arguments),gt(this,"isActive",!1),gt(this,"resizeTimeout"),gt(this,"scrollTimeout"),gt(this,"scrollParent"),gt(this,"state",{isScrolling:!1,mouseOverSpotlight:!1,showSpotlight:!0}),gt(this,"hideSpotlight",()=>{const{continuous:t,disableOverlay:e,lifecycle:n}=this.props,r=[Qt.INIT,Qt.BEACON,Qt.COMPLETE,Qt.ERROR];return e||(t?r.includes(n):n!==Qt.TOOLTIP)}),gt(this,"handleMouseMove",t=>{const{mouseOverSpotlight:e}=this.state,{height:n,left:r,position:s,top:i,width:a}=this.spotlightStyles,l=s==="fixed"?t.clientY:t.pageY,c=s==="fixed"?t.clientX:t.pageX,d=l>=i&&l<=i+n,m=c>=r&&c<=r+a&&d;m!==e&&this.updateState({mouseOverSpotlight:m})}),gt(this,"handleScroll",()=>{const{target:t}=this.props,e=Ml(t);if(this.scrollParent!==document){const{isScrolling:n}=this.state;n||this.updateState({isScrolling:!0,showSpotlight:!1}),clearTimeout(this.scrollTimeout),this.scrollTimeout=window.setTimeout(()=>{this.updateState({isScrolling:!1,showSpotlight:!0})},50)}else cf(e,"sticky")&&this.updateState({})}),gt(this,"handleResize",()=>{clearTimeout(this.resizeTimeout),this.resizeTimeout=window.setTimeout(()=>{this.isActive&&this.forceUpdate()},100)})}componentDidMount(){const{debug:t,disableScrolling:e,disableScrollParentFix:n=!1,target:r}=this.props,s=Ml(r);this.scrollParent=ap(s??document.body,n,!0),this.isActive=!0,window.addEventListener("resize",this.handleResize)}componentDidUpdate(t){var e;const{disableScrollParentFix:n,lifecycle:r,spotlightClicks:s,target:i}=this.props,{changed:a}=iy(t,this.props);if(a("target")||a("disableScrollParentFix")){const l=Ml(i);this.scrollParent=ap(l??document.body,n,!0)}a("lifecycle",Qt.TOOLTIP)&&((e=this.scrollParent)==null||e.addEventListener("scroll",this.handleScroll,{passive:!0}),setTimeout(()=>{const{isScrolling:l}=this.state;l||this.updateState({showSpotlight:!0})},100)),(a("spotlightClicks")||a("disableOverlay")||a("lifecycle"))&&(s&&r===Qt.TOOLTIP?window.addEventListener("mousemove",this.handleMouseMove,!1):r!==Qt.TOOLTIP&&window.removeEventListener("mousemove",this.handleMouseMove))}componentWillUnmount(){var t;this.isActive=!1,window.removeEventListener("mousemove",this.handleMouseMove),window.removeEventListener("resize",this.handleResize),clearTimeout(this.resizeTimeout),clearTimeout(this.scrollTimeout),(t=this.scrollParent)==null||t.removeEventListener("scroll",this.handleScroll)}get overlayStyles(){const{mouseOverSpotlight:t}=this.state,{disableOverlayClose:e,placement:n,styles:r}=this.props;let s=r.overlay;return HM()&&(s=n==="center"?r.overlayLegacyCenter:r.overlayLegacy),{cursor:e?"default":"pointer",height:Yge(),pointerEvents:t?"none":"auto",...s}}get spotlightStyles(){var t,e,n;const{showSpotlight:r}=this.state,{disableScrollParentFix:s=!1,spotlightClicks:i,spotlightPadding:a=0,styles:l,target:c}=this.props,d=Ml(c),h=rQ(d),m=cf(d),g=exe(d,a,s);return{...HM()?l.spotlightLegacy:l.spotlight,height:Math.round(((t=h?.height)!=null?t:0)+a*2),left:Math.round(((e=h?.left)!=null?e:0)-a),opacity:r?1:0,pointerEvents:i?"none":"auto",position:m?"fixed":"absolute",top:g,transition:"opacity 0.2s",width:Math.round(((n=h?.width)!=null?n:0)+a*2)}}updateState(t){this.isActive&&this.setState(e=>({...e,...t}))}render(){const{showSpotlight:t}=this.state,{onClickOverlay:e,placement:n}=this.props,{hideSpotlight:r,overlayStyles:s,spotlightStyles:i}=this;if(r())return null;let a=n!=="center"&&t&&b.createElement(xxe,{styles:i});if(sQ()==="safari"){const{mixBlendMode:l,zIndex:c,...d}=s;a=b.createElement("div",{style:{...d}},a),delete s.backgroundColor}return b.createElement("div",{className:"react-joyride__overlay","data-test-id":"overlay",onClick:e,role:"presentation",style:s},a)}},yxe=class extends b.Component{constructor(){super(...arguments),gt(this,"node",null)}componentDidMount(){const{id:t}=this.props;zc()&&(this.node=document.createElement("div"),this.node.id=t,document.body.appendChild(this.node),Um||this.renderReact15())}componentDidUpdate(){zc()&&(Um||this.renderReact15())}componentWillUnmount(){!zc()||!this.node||(Um||pa.unmountComponentAtNode(this.node),this.node.parentNode===document.body&&(document.body.removeChild(this.node),this.node=null))}renderReact15(){if(!zc())return;const{children:t}=this.props;this.node&&pa.unstable_renderSubtreeIntoContainer(this,t,this.node)}renderReact16(){if(!zc()||!Um)return null;const{children:t}=this.props;return this.node?pa.createPortal(t,this.node):null}render(){return Um?this.renderReact16():null}},bxe=class{constructor(t,e){if(gt(this,"element"),gt(this,"options"),gt(this,"canBeTabbed",n=>{const{tabIndex:r}=n;return r===null||r<0?!1:this.canHaveFocus(n)}),gt(this,"canHaveFocus",n=>{const r=/input|select|textarea|button|object/,s=n.nodeName.toLowerCase();return(r.test(s)&&!n.getAttribute("disabled")||s==="a"&&!!n.getAttribute("href"))&&this.isVisible(n)}),gt(this,"findValidTabElements",()=>[].slice.call(this.element.querySelectorAll("*"),0).filter(this.canBeTabbed)),gt(this,"handleKeyDown",n=>{const{code:r="Tab"}=this.options;n.code===r&&this.interceptTab(n)}),gt(this,"interceptTab",n=>{n.preventDefault();const r=this.findValidTabElements(),{shiftKey:s}=n;if(!r.length)return;let i=document.activeElement?r.indexOf(document.activeElement):0;i===-1||!s&&i+1===r.length?i=0:s&&i===0?i=r.length-1:i+=s?-1:1,r[i].focus()}),gt(this,"isHidden",n=>{const r=n.offsetWidth<=0&&n.offsetHeight<=0,s=window.getComputedStyle(n);return r&&!n.innerHTML?!0:r&&s.getPropertyValue("overflow")!=="visible"||s.getPropertyValue("display")==="none"}),gt(this,"isVisible",n=>{let r=n;for(;r;)if(r instanceof HTMLElement){if(r===document.body)break;if(this.isHidden(r))return!1;r=r.parentNode}return!0}),gt(this,"removeScope",()=>{window.removeEventListener("keydown",this.handleKeyDown)}),gt(this,"checkFocus",n=>{document.activeElement!==n&&(n.focus(),window.requestAnimationFrame(()=>this.checkFocus(n)))}),gt(this,"setFocus",()=>{const{selector:n}=this.options;if(!n)return;const r=this.element.querySelector(n);r&&window.requestAnimationFrame(()=>this.checkFocus(r))}),!(t instanceof HTMLElement))throw new TypeError("Invalid parameter: element must be an HTMLElement");this.element=t,this.options=e,window.addEventListener("keydown",this.handleKeyDown,!1),this.setFocus()}},wxe=class extends b.Component{constructor(t){if(super(t),gt(this,"beacon",null),gt(this,"setBeaconRef",s=>{this.beacon=s}),t.beaconComponent)return;const e=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.id="joyride-beacon-animation",t.nonce&&n.setAttribute("nonce",t.nonce),n.appendChild(document.createTextNode(` +reaction = "${T.reaction}"`;return o.jsxs(zo,{children:[o.jsx(Io,{asChild:!0,children:o.jsxs(de,{variant:"outline",size:"sm",children:[o.jsx(Ea,{className:"h-4 w-4 mr-1"}),"预览"]})}),o.jsx(Xa,{className:"w-[95vw] sm:w-[500px]",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),o.jsx(gn,{className:"h-60 rounded-md bg-muted p-3",children:o.jsx("pre",{className:"font-mono text-xs whitespace-pre-wrap break-all",children:E})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"关键词反应配置"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"配置触发特定反应的关键词和正则表达式规则"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"text-base font-semibold",children:"正则表达式规则"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用正则表达式匹配消息内容"})]}),o.jsxs(de,{onClick:c,size:"sm",variant:"outline",children:[o.jsx(Ls,{className:"h-4 w-4 mr-1"}),"添加正则规则"]})]}),o.jsxs("div",{className:"space-y-3",children:[t.regex_rules.map((T,E)=>o.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium",children:["正则规则 ",E+1]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(m,{regex:T.regex&&T.regex[0]||"",reaction:T.reaction,onRegexChange:_=>h(E,"regex",_),onReactionChange:_=>h(E,"reaction",_)}),o.jsx(j,{rule:T}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(de,{size:"sm",variant:"ghost",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除正则规则 ",E+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>d(E),children:"删除"})]})]})]})]})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"正则表达式(Python 语法)"}),o.jsx(ze,{value:T.regex&&T.regex[0]||"",onChange:_=>h(E,"regex",_.target.value),placeholder:"例如:^(?P\\\\S{1,20})是这样的$ (点击正则编辑器按钮可视化构建)",className:"font-mono text-sm"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:'支持命名捕获组 (?Ppattern),可在 reaction 中使用 [name] 引用。点击"正则编辑器"可视化构建和测试!'})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"反应内容"}),o.jsx(Mr,{value:T.reaction,onChange:_=>h(E,"reaction",_.target.value),placeholder:`触发后麦麦的反应... +可以使用 [捕获组名] 来引用正则表达式中的内容`,rows:3,className:"text-sm"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"使用 [捕获组名] 引用正则表达式中的命名捕获组,例如 [n] 会被替换为捕获的内容"})]})]})]},E)),t.regex_rules.length===0&&o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无正则规则,点击"添加正则规则"开始配置'})]})]}),o.jsxs("div",{className:"space-y-4 border-t pt-6",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"text-base font-semibold",children:"关键词规则"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用关键词列表匹配消息内容"})]}),o.jsxs(de,{onClick:g,size:"sm",variant:"outline",children:[o.jsx(Ls,{className:"h-4 w-4 mr-1"}),"添加关键词规则"]})]}),o.jsxs("div",{className:"space-y-3",children:[t.keyword_rules.map((T,E)=>o.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium",children:["关键词规则 ",E+1]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(N,{rule:T}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(de,{size:"sm",variant:"ghost",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除关键词规则 ",E+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>x(E),children:"删除"})]})]})]})]})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{className:"text-xs font-medium",children:"关键词列表"}),o.jsxs(de,{onClick:()=>w(E),size:"sm",variant:"ghost",children:[o.jsx(Ls,{className:"h-3 w-3 mr-1"}),"添加关键词"]})]}),o.jsxs("div",{className:"space-y-2",children:[(T.keywords||[]).map((_,A)=>o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{value:_,onChange:L=>k(E,A,L.target.value),placeholder:"关键词",className:"flex-1"}),o.jsx(de,{onClick:()=>S(E,A),size:"sm",variant:"ghost",children:o.jsx(Sn,{className:"h-4 w-4"})})]},A)),(!T.keywords||T.keywords.length===0)&&o.jsx("p",{className:"text-xs text-muted-foreground text-center py-2",children:'暂无关键词,点击"添加关键词"开始配置'})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"反应内容"}),o.jsx(Mr,{value:T.reaction,onChange:_=>y(E,"reaction",_.target.value),placeholder:"触发后麦麦的反应...",rows:3,className:"text-sm"})]})]})]},E)),t.keyword_rules.length===0&&o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无关键词规则,点击"添加关键词规则"开始配置'})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"回复后处理配置"}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"enable_response_post_process",checked:e.enable_response_post_process,onCheckedChange:T=>i({...e,enable_response_post_process:T})}),o.jsx(he,{htmlFor:"enable_response_post_process",className:"cursor-pointer",children:"启用回复后处理"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"包括错别字生成器和回复分割器"})]}),e.enable_response_post_process&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"border-t pt-6 space-y-4",children:o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[o.jsx(Bt,{id:"enable_chinese_typo",checked:n.enable,onCheckedChange:T=>a({...n,enable:T})}),o.jsx(he,{htmlFor:"enable_chinese_typo",className:"cursor-pointer font-semibold",children:"中文错别字生成器"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"为回复添加随机错别字,让麦麦的回复更自然"}),n.enable&&o.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"error_rate",className:"text-xs font-medium",children:"单字替换概率"}),o.jsx(ze,{id:"error_rate",type:"number",step:"0.001",min:"0",max:"1",value:n.error_rate,onChange:T=>a({...n,error_rate:parseFloat(T.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"min_freq",className:"text-xs font-medium",children:"最小字频阈值"}),o.jsx(ze,{id:"min_freq",type:"number",min:"0",value:n.min_freq,onChange:T=>a({...n,min_freq:parseInt(T.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"tone_error_rate",className:"text-xs font-medium",children:"声调错误概率"}),o.jsx(ze,{id:"tone_error_rate",type:"number",step:"0.01",min:"0",max:"1",value:n.tone_error_rate,onChange:T=>a({...n,tone_error_rate:parseFloat(T.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"word_replace_rate",className:"text-xs font-medium",children:"整词替换概率"}),o.jsx(ze,{id:"word_replace_rate",type:"number",step:"0.001",min:"0",max:"1",value:n.word_replace_rate,onChange:T=>a({...n,word_replace_rate:parseFloat(T.target.value)})})]})]})]})}),o.jsx("div",{className:"border-t pt-6 space-y-4",children:o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[o.jsx(Bt,{id:"enable_response_splitter",checked:r.enable,onCheckedChange:T=>l({...r,enable:T})}),o.jsx(he,{htmlFor:"enable_response_splitter",className:"cursor-pointer font-semibold",children:"回复分割器"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"控制回复的长度和句子数量"}),r.enable&&o.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"max_length",className:"text-xs font-medium",children:"最大长度"}),o.jsx(ze,{id:"max_length",type:"number",min:"1",value:r.max_length,onChange:T=>l({...r,max_length:parseInt(T.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大字符数"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"max_sentence_num",className:"text-xs font-medium",children:"最大句子数"}),o.jsx(ze,{id:"max_sentence_num",type:"number",min:"1",value:r.max_sentence_num,onChange:T=>l({...r,max_sentence_num:parseInt(T.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大句子数量"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"enable_kaomoji_protection",checked:r.enable_kaomoji_protection,onCheckedChange:T=>l({...r,enable_kaomoji_protection:T})}),o.jsx(he,{htmlFor:"enable_kaomoji_protection",className:"cursor-pointer",children:"启用颜文字保护"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"enable_overflow_return_all",checked:r.enable_overflow_return_all,onCheckedChange:T=>l({...r,enable_overflow_return_all:T})}),o.jsx(he,{htmlFor:"enable_overflow_return_all",className:"cursor-pointer",children:"超出时一次性返回全部"})]}),o.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"当句子数量超出限制时,合并后一次性返回所有内容"})]})]})})]})]})]})}function F0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"情绪设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{checked:t.enable_mood,onCheckedChange:n=>e({...t,enable_mood:n})}),o.jsx(he,{className:"cursor-pointer",children:"启用情绪系统"})]}),t.enable_mood&&o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"情绪更新阈值"}),o.jsx(ze,{type:"number",min:"1",value:t.mood_update_threshold,onChange:n=>e({...t,mood_update_threshold:parseInt(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"越高,更新越慢"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"情感特征"}),o.jsx(Mr,{value:t.emotion_style,onChange:n=>e({...t,emotion_style:n.target.value}),placeholder:"影响情绪的变化情况",rows:2})]})]})]})]})}function q0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"语音设置"}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{checked:t.enable_asr,onCheckedChange:n=>e({...t,enable_asr:n})}),o.jsx(he,{className:"cursor-pointer",children:"启用语音识别"})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"启用后麦麦可以识别语音消息,需要配置语音识别模型"})]})}function $0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{checked:t.enable,onCheckedChange:n=>e({...t,enable:n})}),o.jsx(he,{className:"cursor-pointer",children:"启用 LPMM 知识库"})]}),t.enable&&o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"LPMM 模式"}),o.jsxs(Vt,{value:t.lpmm_mode,onValueChange:n=>e({...t,lpmm_mode:n}),children:[o.jsx($t,{children:o.jsx(Ut,{placeholder:"选择 LPMM 模式"})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"classic",children:"经典模式"}),o.jsx(De,{value:"agent",children:"Agent 模式"})]})]})]}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"同义词搜索 TopK"}),o.jsx(ze,{type:"number",min:"1",value:t.rag_synonym_search_top_k,onChange:n=>e({...t,rag_synonym_search_top_k:parseInt(n.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"同义词阈值"}),o.jsx(ze,{type:"number",step:"0.1",min:"0",max:"1",value:t.rag_synonym_threshold,onChange:n=>e({...t,rag_synonym_threshold:parseFloat(n.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"实体提取线程数"}),o.jsx(ze,{type:"number",min:"1",value:t.info_extraction_workers,onChange:n=>e({...t,info_extraction_workers:parseInt(n.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"嵌入向量维度"}),o.jsx(ze,{type:"number",min:"1",value:t.embedding_dimension,onChange:n=>e({...t,embedding_dimension:parseInt(n.target.value)})})]})]})]})]})]})}function H0e({config:t,onChange:e}){const[n,r]=b.useState(""),[s,i]=b.useState("WARNING"),a=()=>{n&&!t.suppress_libraries.includes(n)&&(e({...t,suppress_libraries:[...t.suppress_libraries,n]}),r(""))},l=x=>{e({...t,suppress_libraries:t.suppress_libraries.filter(y=>y!==x)})},c=()=>{n&&!t.library_log_levels[n]&&(e({...t,library_log_levels:{...t.library_log_levels,[n]:s}}),r(""),i("WARNING"))},d=x=>{const y={...t.library_log_levels};delete y[x],e({...t,library_log_levels:y})},h=["DEBUG","INFO","WARNING","ERROR","CRITICAL"],m=["FULL","compact","lite"],g=["none","title","full"];return o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"日志配置"}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"日期格式"}),o.jsx(ze,{value:t.date_style,onChange:x=>e({...t,date_style:x.target.value}),placeholder:"例如: m-d H:i:s"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"m=月, d=日, H=时, i=分, s=秒"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"日志级别样式"}),o.jsxs(Vt,{value:t.log_level_style,onValueChange:x=>e({...t,log_level_style:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:m.map(x=>o.jsx(De,{value:x,children:x},x))})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"日志文本颜色"}),o.jsxs(Vt,{value:t.color_text,onValueChange:x=>e({...t,color_text:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:g.map(x=>o.jsx(De,{value:x,children:x},x))})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"全局日志级别"}),o.jsxs(Vt,{value:t.log_level,onValueChange:x=>e({...t,log_level:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:h.map(x=>o.jsx(De,{value:x,children:x},x))})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"控制台日志级别"}),o.jsxs(Vt,{value:t.console_log_level,onValueChange:x=>e({...t,console_log_level:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:h.map(x=>o.jsx(De,{value:x,children:x},x))})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"文件日志级别"}),o.jsxs(Vt,{value:t.file_log_level,onValueChange:x=>e({...t,file_log_level:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:h.map(x=>o.jsx(De,{value:x,children:x},x))})]})]})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"mb-2 block",children:"完全屏蔽的库"}),o.jsxs("div",{className:"flex gap-2 mb-2",children:[o.jsx(ze,{value:n,onChange:x=>r(x.target.value),placeholder:"输入库名",className:"flex-1",onKeyDown:x=>{x.key==="Enter"&&(x.preventDefault(),a())}}),o.jsx(de,{onClick:a,size:"sm",className:"flex-shrink-0",children:o.jsx(Ls,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),o.jsx("div",{className:"flex flex-wrap gap-2",children:t.suppress_libraries.map(x=>o.jsxs("div",{className:"flex items-center gap-1 bg-secondary px-3 py-1 rounded-md",children:[o.jsx("span",{className:"text-sm",children:x}),o.jsx(de,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0",onClick:()=>l(x),children:o.jsx(Sn,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},x))})]}),o.jsxs("div",{children:[o.jsx(he,{className:"mb-2 block",children:"特定库的日志级别"}),o.jsxs("div",{className:"flex gap-2 mb-2",children:[o.jsx(ze,{value:n,onChange:x=>r(x.target.value),placeholder:"输入库名",className:"flex-1"}),o.jsxs(Vt,{value:s,onValueChange:i,children:[o.jsx($t,{className:"w-32",children:o.jsx(Ut,{})}),o.jsx(Ht,{children:h.map(x=>o.jsx(De,{value:x,children:x},x))})]}),o.jsx(de,{onClick:c,size:"sm",children:o.jsx(Ls,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),o.jsx("div",{className:"space-y-2",children:Object.entries(t.library_log_levels).map(([x,y])=>o.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[o.jsx("span",{className:"text-sm font-medium",children:x}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"text-sm text-muted-foreground",children:y}),o.jsx(de,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>d(x),children:o.jsx(Sn,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]})]},x))})]})]})}function Q0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"调试配置"}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示 Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否在日志中显示提示词"})]}),o.jsx(Bt,{checked:t.show_prompt,onCheckedChange:n=>e({...t,show_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示回复器 Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的提示词"})]}),o.jsx(Bt,{checked:t.show_replyer_prompt,onCheckedChange:n=>e({...t,show_replyer_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示回复器推理"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的推理过程"})]}),o.jsx(Bt,{checked:t.show_replyer_reasoning,onCheckedChange:n=>e({...t,show_replyer_reasoning:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示 Jargon Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示术语相关的提示词"})]}),o.jsx(Bt,{checked:t.show_jargon_prompt,onCheckedChange:n=>e({...t,show_jargon_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示记忆检索 Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示记忆检索相关的提示词"})]}),o.jsx(Bt,{checked:t.show_memory_prompt,onCheckedChange:n=>e({...t,show_memory_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示 Planner Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 Planner 的提示词和原始返回结果"})]}),o.jsx(Bt,{checked:t.show_planner_prompt,onCheckedChange:n=>e({...t,show_planner_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示 LPMM 相关文段"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 LPMM 知识库找到的相关文段日志"})]}),o.jsx(Bt,{checked:t.show_lpmm_paragraph,onCheckedChange:n=>e({...t,show_lpmm_paragraph:n})})]})]})]})}function V0e({config:t,onChange:e}){const[n,r]=b.useState(""),s=()=>{n&&!t.auth_token.includes(n)&&(e({...t,auth_token:[...t.auth_token,n]}),r(""))},i=a=>{e({...t,auth_token:t.auth_token.filter((l,c)=>c!==a)})};return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"MaimMessage 服务配置"}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"启用自定义服务器"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否使用自定义的 MaimMessage 服务器"})]}),o.jsx(Bt,{checked:t.use_custom,onCheckedChange:a=>e({...t,use_custom:a})})]}),t.use_custom&&o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"主机地址"}),o.jsx(ze,{value:t.host,onChange:a=>e({...t,host:a.target.value}),placeholder:"127.0.0.1"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"端口号"}),o.jsx(ze,{type:"number",value:t.port,onChange:a=>e({...t,port:parseInt(a.target.value)}),placeholder:"8090"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"连接模式"}),o.jsxs(Vt,{value:t.mode,onValueChange:a=>e({...t,mode:a}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"ws",children:"WebSocket (ws)"}),o.jsx(De,{value:"tcp",children:"TCP"})]})]})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{checked:t.use_wss,onCheckedChange:a=>e({...t,use_wss:a}),disabled:t.mode!=="ws"}),o.jsx(he,{children:"使用 WSS 安全连接"})]})]}),t.use_wss&&t.mode==="ws"&&o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"SSL 证书文件路径"}),o.jsx(ze,{value:t.cert_file,onChange:a=>e({...t,cert_file:a.target.value}),placeholder:"cert.pem"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"SSL 密钥文件路径"}),o.jsx(ze,{value:t.key_file,onChange:a=>e({...t,key_file:a.target.value}),placeholder:"key.pem"})]})]})]})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"mb-2 block",children:"认证令牌"}),o.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:"用于 API 验证,为空则不启用验证"}),o.jsxs("div",{className:"flex gap-2 mb-2",children:[o.jsx(ze,{value:n,onChange:a=>r(a.target.value),placeholder:"输入认证令牌",onKeyDown:a=>{a.key==="Enter"&&(a.preventDefault(),s())}}),o.jsx(de,{onClick:s,size:"sm",children:o.jsx(Ls,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),o.jsx("div",{className:"space-y-2",children:t.auth_token.map((a,l)=>o.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[o.jsx("span",{className:"text-sm font-mono",children:a}),o.jsx(de,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>i(l),children:o.jsx(Sn,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},l))})]})]})}function U0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"统计信息"}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"启用统计信息发送"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"发送匿名统计信息,帮助我们了解全球有多少只麦麦在运行"})]}),o.jsx(Bt,{checked:t.enable,onCheckedChange:n=>e({...t,enable:n})})]})]})}const _f=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{className:"relative w-full overflow-auto",children:o.jsx("table",{ref:n,className:xe("w-full caption-bottom text-sm",t),...e})}));_f.displayName="Table";const Af=b.forwardRef(({className:t,...e},n)=>o.jsx("thead",{ref:n,className:xe("[&_tr]:border-b",t),...e}));Af.displayName="TableHeader";const Mf=b.forwardRef(({className:t,...e},n)=>o.jsx("tbody",{ref:n,className:xe("[&_tr:last-child]:border-0",t),...e}));Mf.displayName="TableBody";const W0e=b.forwardRef(({className:t,...e},n)=>o.jsx("tfoot",{ref:n,className:xe("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",t),...e}));W0e.displayName="TableFooter";const Is=b.forwardRef(({className:t,...e},n)=>o.jsx("tr",{ref:n,className:xe("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",t),...e}));Is.displayName="TableRow";const pn=b.forwardRef(({className:t,...e},n)=>o.jsx("th",{ref:n,className:xe("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...e}));pn.displayName="TableHead";const Gt=b.forwardRef(({className:t,...e},n)=>o.jsx("td",{ref:n,className:xe("px-4 py-3 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...e}));Gt.displayName="TableCell";const G0e=b.forwardRef(({className:t,...e},n)=>o.jsx("caption",{ref:n,className:xe("mt-4 text-sm text-muted-foreground",t),...e}));G0e.displayName="TableCaption";var xA=1,X0e=.9,Y0e=.8,K0e=.17,mS=.1,pS=.999,Z0e=.9999,J0e=.99,epe=/[\\\/_+.#"@\[\(\{&]/,tpe=/[\\\/_+.#"@\[\(\{&]/g,npe=/[\s-]/,jH=/[\s-]/g;function pO(t,e,n,r,s,i,a){if(i===e.length)return s===t.length?xA:J0e;var l=`${s},${i}`;if(a[l]!==void 0)return a[l];for(var c=r.charAt(i),d=n.indexOf(c,s),h=0,m,g,x,y;d>=0;)m=pO(t,e,n,r,d+1,i+1,a),m>h&&(d===s?m*=xA:epe.test(t.charAt(d-1))?(m*=Y0e,x=t.slice(s,d-1).match(tpe),x&&s>0&&(m*=Math.pow(pS,x.length))):npe.test(t.charAt(d-1))?(m*=X0e,y=t.slice(s,d-1).match(jH),y&&s>0&&(m*=Math.pow(pS,y.length))):(m*=K0e,s>0&&(m*=Math.pow(pS,d-s))),t.charAt(d)!==e.charAt(i)&&(m*=Z0e)),(mm&&(m=g*mS)),m>h&&(h=m),d=n.indexOf(c,d+1);return a[l]=h,h}function vA(t){return t.toLowerCase().replace(jH," ")}function rpe(t,e,n){return t=n&&n.length>0?`${t+" "+n.join(" ")}`:t,pO(t,e,vA(t),vA(e),0,0,{})}var spe=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],cu=spe.reduce((t,e)=>{const n=Fy(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...l}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(c,{...l,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),Qm='[cmdk-group=""]',gS='[cmdk-group-items=""]',ipe='[cmdk-group-heading=""]',NH='[cmdk-item=""]',yA=`${NH}:not([aria-disabled="true"])`,gO="cmdk-item-select",wh="data-value",ape=(t,e,n)=>rpe(t,e,n),CH=b.createContext(void 0),Jp=()=>b.useContext(CH),TH=b.createContext(void 0),q6=()=>b.useContext(TH),EH=b.createContext(void 0),_H=b.forwardRef((t,e)=>{let n=Sh(()=>{var G,I;return{search:"",value:(I=(G=t.value)!=null?G:t.defaultValue)!=null?I:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),r=Sh(()=>new Set),s=Sh(()=>new Map),i=Sh(()=>new Map),a=Sh(()=>new Set),l=AH(t),{label:c,children:d,value:h,onValueChange:m,filter:g,shouldFilter:x,loop:y,disablePointerSelection:w=!1,vimBindings:S=!0,...k}=t,j=Ui(),N=Ui(),T=Ui(),E=b.useRef(null),_=xpe();dd(()=>{if(h!==void 0){let G=h.trim();n.current.value=G,A.emit()}},[h]),dd(()=>{_(6,te)},[]);let A=b.useMemo(()=>({subscribe:G=>(a.current.add(G),()=>a.current.delete(G)),snapshot:()=>n.current,setState:(G,I,V)=>{var ee,ne,W,se;if(!Object.is(n.current[G],I)){if(n.current[G]=I,G==="search")U(),B(),_(1,$);else if(G==="value"){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let re=document.getElementById(T);re?re.focus():(ee=document.getElementById(j))==null||ee.focus()}if(_(7,()=>{var re;n.current.selectedItemId=(re=z())==null?void 0:re.id,A.emit()}),V||_(5,te),((ne=l.current)==null?void 0:ne.value)!==void 0){let re=I??"";(se=(W=l.current).onValueChange)==null||se.call(W,re);return}}A.emit()}},emit:()=>{a.current.forEach(G=>G())}}),[]),L=b.useMemo(()=>({value:(G,I,V)=>{var ee;I!==((ee=i.current.get(G))==null?void 0:ee.value)&&(i.current.set(G,{value:I,keywords:V}),n.current.filtered.items.set(G,P(I,V)),_(2,()=>{B(),A.emit()}))},item:(G,I)=>(r.current.add(G),I&&(s.current.has(I)?s.current.get(I).add(G):s.current.set(I,new Set([G]))),_(3,()=>{U(),B(),n.current.value||$(),A.emit()}),()=>{i.current.delete(G),r.current.delete(G),n.current.filtered.items.delete(G);let V=z();_(4,()=>{U(),V?.getAttribute("id")===G&&$(),A.emit()})}),group:G=>(s.current.has(G)||s.current.set(G,new Set),()=>{i.current.delete(G),s.current.delete(G)}),filter:()=>l.current.shouldFilter,label:c||t["aria-label"],getDisablePointerSelection:()=>l.current.disablePointerSelection,listId:j,inputId:T,labelId:N,listInnerRef:E}),[]);function P(G,I){var V,ee;let ne=(ee=(V=l.current)==null?void 0:V.filter)!=null?ee:ape;return G?ne(G,n.current.search,I):0}function B(){if(!n.current.search||l.current.shouldFilter===!1)return;let G=n.current.filtered.items,I=[];n.current.filtered.groups.forEach(ee=>{let ne=s.current.get(ee),W=0;ne.forEach(se=>{let re=G.get(se);W=Math.max(re,W)}),I.push([ee,W])});let V=E.current;Q().sort((ee,ne)=>{var W,se;let re=ee.getAttribute("id"),oe=ne.getAttribute("id");return((W=G.get(oe))!=null?W:0)-((se=G.get(re))!=null?se:0)}).forEach(ee=>{let ne=ee.closest(gS);ne?ne.appendChild(ee.parentElement===ne?ee:ee.closest(`${gS} > *`)):V.appendChild(ee.parentElement===V?ee:ee.closest(`${gS} > *`))}),I.sort((ee,ne)=>ne[1]-ee[1]).forEach(ee=>{var ne;let W=(ne=E.current)==null?void 0:ne.querySelector(`${Qm}[${wh}="${encodeURIComponent(ee[0])}"]`);W?.parentElement.appendChild(W)})}function $(){let G=Q().find(V=>V.getAttribute("aria-disabled")!=="true"),I=G?.getAttribute(wh);A.setState("value",I||void 0)}function U(){var G,I,V,ee;if(!n.current.search||l.current.shouldFilter===!1){n.current.filtered.count=r.current.size;return}n.current.filtered.groups=new Set;let ne=0;for(let W of r.current){let se=(I=(G=i.current.get(W))==null?void 0:G.value)!=null?I:"",re=(ee=(V=i.current.get(W))==null?void 0:V.keywords)!=null?ee:[],oe=P(se,re);n.current.filtered.items.set(W,oe),oe>0&&ne++}for(let[W,se]of s.current)for(let re of se)if(n.current.filtered.items.get(re)>0){n.current.filtered.groups.add(W);break}n.current.filtered.count=ne}function te(){var G,I,V;let ee=z();ee&&(((G=ee.parentElement)==null?void 0:G.firstChild)===ee&&((V=(I=ee.closest(Qm))==null?void 0:I.querySelector(ipe))==null||V.scrollIntoView({block:"nearest"})),ee.scrollIntoView({block:"nearest"}))}function z(){var G;return(G=E.current)==null?void 0:G.querySelector(`${NH}[aria-selected="true"]`)}function Q(){var G;return Array.from(((G=E.current)==null?void 0:G.querySelectorAll(yA))||[])}function F(G){let I=Q()[G];I&&A.setState("value",I.getAttribute(wh))}function Y(G){var I;let V=z(),ee=Q(),ne=ee.findIndex(se=>se===V),W=ee[ne+G];(I=l.current)!=null&&I.loop&&(W=ne+G<0?ee[ee.length-1]:ne+G===ee.length?ee[0]:ee[ne+G]),W&&A.setState("value",W.getAttribute(wh))}function J(G){let I=z(),V=I?.closest(Qm),ee;for(;V&&!ee;)V=G>0?ppe(V,Qm):gpe(V,Qm),ee=V?.querySelector(yA);ee?A.setState("value",ee.getAttribute(wh)):Y(G)}let X=()=>F(Q().length-1),R=G=>{G.preventDefault(),G.metaKey?X():G.altKey?J(1):Y(1)},ie=G=>{G.preventDefault(),G.metaKey?F(0):G.altKey?J(-1):Y(-1)};return b.createElement(cu.div,{ref:e,tabIndex:-1,...k,"cmdk-root":"",onKeyDown:G=>{var I;(I=k.onKeyDown)==null||I.call(k,G);let V=G.nativeEvent.isComposing||G.keyCode===229;if(!(G.defaultPrevented||V))switch(G.key){case"n":case"j":{S&&G.ctrlKey&&R(G);break}case"ArrowDown":{R(G);break}case"p":case"k":{S&&G.ctrlKey&&ie(G);break}case"ArrowUp":{ie(G);break}case"Home":{G.preventDefault(),F(0);break}case"End":{G.preventDefault(),X();break}case"Enter":{G.preventDefault();let ee=z();if(ee){let ne=new Event(gO);ee.dispatchEvent(ne)}}}}},b.createElement("label",{"cmdk-label":"",htmlFor:L.inputId,id:L.labelId,style:ype},c),kb(t,G=>b.createElement(TH.Provider,{value:A},b.createElement(CH.Provider,{value:L},G))))}),ope=b.forwardRef((t,e)=>{var n,r;let s=Ui(),i=b.useRef(null),a=b.useContext(EH),l=Jp(),c=AH(t),d=(r=(n=c.current)==null?void 0:n.forceMount)!=null?r:a?.forceMount;dd(()=>{if(!d)return l.item(s,a?.id)},[d]);let h=MH(s,i,[t.value,t.children,i],t.keywords),m=q6(),g=Zc(_=>_.value&&_.value===h.current),x=Zc(_=>d||l.filter()===!1?!0:_.search?_.filtered.items.get(s)>0:!0);b.useEffect(()=>{let _=i.current;if(!(!_||t.disabled))return _.addEventListener(gO,y),()=>_.removeEventListener(gO,y)},[x,t.onSelect,t.disabled]);function y(){var _,A;w(),(A=(_=c.current).onSelect)==null||A.call(_,h.current)}function w(){m.setState("value",h.current,!0)}if(!x)return null;let{disabled:S,value:k,onSelect:j,forceMount:N,keywords:T,...E}=t;return b.createElement(cu.div,{ref:Qc(i,e),...E,id:s,"cmdk-item":"",role:"option","aria-disabled":!!S,"aria-selected":!!g,"data-disabled":!!S,"data-selected":!!g,onPointerMove:S||l.getDisablePointerSelection()?void 0:w,onClick:S?void 0:y},t.children)}),lpe=b.forwardRef((t,e)=>{let{heading:n,children:r,forceMount:s,...i}=t,a=Ui(),l=b.useRef(null),c=b.useRef(null),d=Ui(),h=Jp(),m=Zc(x=>s||h.filter()===!1?!0:x.search?x.filtered.groups.has(a):!0);dd(()=>h.group(a),[]),MH(a,l,[t.value,t.heading,c]);let g=b.useMemo(()=>({id:a,forceMount:s}),[s]);return b.createElement(cu.div,{ref:Qc(l,e),...i,"cmdk-group":"",role:"presentation",hidden:m?void 0:!0},n&&b.createElement("div",{ref:c,"cmdk-group-heading":"","aria-hidden":!0,id:d},n),kb(t,x=>b.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":n?d:void 0},b.createElement(EH.Provider,{value:g},x))))}),cpe=b.forwardRef((t,e)=>{let{alwaysRender:n,...r}=t,s=b.useRef(null),i=Zc(a=>!a.search);return!n&&!i?null:b.createElement(cu.div,{ref:Qc(s,e),...r,"cmdk-separator":"",role:"separator"})}),upe=b.forwardRef((t,e)=>{let{onValueChange:n,...r}=t,s=t.value!=null,i=q6(),a=Zc(d=>d.search),l=Zc(d=>d.selectedItemId),c=Jp();return b.useEffect(()=>{t.value!=null&&i.setState("search",t.value)},[t.value]),b.createElement(cu.input,{ref:e,...r,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":c.listId,"aria-labelledby":c.labelId,"aria-activedescendant":l,id:c.inputId,type:"text",value:s?t.value:a,onChange:d=>{s||i.setState("search",d.target.value),n?.(d.target.value)}})}),dpe=b.forwardRef((t,e)=>{let{children:n,label:r="Suggestions",...s}=t,i=b.useRef(null),a=b.useRef(null),l=Zc(d=>d.selectedItemId),c=Jp();return b.useEffect(()=>{if(a.current&&i.current){let d=a.current,h=i.current,m,g=new ResizeObserver(()=>{m=requestAnimationFrame(()=>{let x=d.offsetHeight;h.style.setProperty("--cmdk-list-height",x.toFixed(1)+"px")})});return g.observe(d),()=>{cancelAnimationFrame(m),g.unobserve(d)}}},[]),b.createElement(cu.div,{ref:Qc(i,e),...s,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":l,"aria-label":r,id:c.listId},kb(t,d=>b.createElement("div",{ref:Qc(a,c.listInnerRef),"cmdk-list-sizer":""},d)))}),hpe=b.forwardRef((t,e)=>{let{open:n,onOpenChange:r,overlayClassName:s,contentClassName:i,container:a,...l}=t;return b.createElement(Nj,{open:n,onOpenChange:r},b.createElement(kj,{container:a},b.createElement(qy,{"cmdk-overlay":"",className:s}),b.createElement($y,{"aria-label":t.label,"cmdk-dialog":"",className:i},b.createElement(_H,{ref:e,...l}))))}),fpe=b.forwardRef((t,e)=>Zc(n=>n.filtered.count===0)?b.createElement(cu.div,{ref:e,...t,"cmdk-empty":"",role:"presentation"}):null),mpe=b.forwardRef((t,e)=>{let{progress:n,children:r,label:s="Loading...",...i}=t;return b.createElement(cu.div,{ref:e,...i,"cmdk-loading":"",role:"progressbar","aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":s},kb(t,a=>b.createElement("div",{"aria-hidden":!0},a)))}),Ci=Object.assign(_H,{List:dpe,Item:ope,Input:upe,Group:lpe,Separator:cpe,Dialog:hpe,Empty:fpe,Loading:mpe});function ppe(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return n;n=n.nextElementSibling}}function gpe(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return n;n=n.previousElementSibling}}function AH(t){let e=b.useRef(t);return dd(()=>{e.current=t}),e}var dd=typeof window>"u"?b.useEffect:b.useLayoutEffect;function Sh(t){let e=b.useRef();return e.current===void 0&&(e.current=t()),e}function Zc(t){let e=q6(),n=()=>t(e.snapshot());return b.useSyncExternalStore(e.subscribe,n,n)}function MH(t,e,n,r=[]){let s=b.useRef(),i=Jp();return dd(()=>{var a;let l=(()=>{var d;for(let h of n){if(typeof h=="string")return h.trim();if(typeof h=="object"&&"current"in h)return h.current?(d=h.current.textContent)==null?void 0:d.trim():s.current}})(),c=r.map(d=>d.trim());i.value(t,l,c),(a=e.current)==null||a.setAttribute(wh,l),s.current=l}),s}var xpe=()=>{let[t,e]=b.useState(),n=Sh(()=>new Map);return dd(()=>{n.current.forEach(r=>r()),n.current=new Map},[t]),(r,s)=>{n.current.set(r,s),e({})}};function vpe(t){let e=t.type;return typeof e=="function"?e(t.props):"render"in e?e.render(t.props):t}function kb({asChild:t,children:e},n){return t&&b.isValidElement(e)?b.cloneElement(vpe(e),{ref:e.ref},n(e.props.children)):n(e)}var ype={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};const Ob=b.forwardRef(({className:t,...e},n)=>o.jsx(Ci,{ref:n,className:xe("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",t),...e}));Ob.displayName=Ci.displayName;const jb=b.forwardRef(({className:t,...e},n)=>o.jsxs("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[o.jsx(Ni,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),o.jsx(Ci.Input,{ref:n,className:xe("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",t),...e})]}));jb.displayName=Ci.Input.displayName;const Nb=b.forwardRef(({className:t,...e},n)=>o.jsx(Ci.List,{ref:n,className:xe("max-h-[300px] overflow-y-auto overflow-x-hidden",t),...e}));Nb.displayName=Ci.List.displayName;const Cb=b.forwardRef((t,e)=>o.jsx(Ci.Empty,{ref:e,className:"py-6 text-center text-sm",...t}));Cb.displayName=Ci.Empty.displayName;const ap=b.forwardRef(({className:t,...e},n)=>o.jsx(Ci.Group,{ref:n,className:xe("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",t),...e}));ap.displayName=Ci.Group.displayName;const bpe=b.forwardRef(({className:t,...e},n)=>o.jsx(Ci.Separator,{ref:n,className:xe("-mx-1 h-px bg-border",t),...e}));bpe.displayName=Ci.Separator.displayName;const op=b.forwardRef(({className:t,...e},n)=>o.jsx(Ci.Item,{ref:n,className:xe("relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",t),...e}));op.displayName=Ci.Item.displayName;const Oi=b.forwardRef(({className:t,...e},n)=>o.jsx(gI,{ref:n,className:xe("grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",t),...e,children:o.jsx(Ree,{className:xe("grid place-content-center text-current"),children:o.jsx(Ro,{className:"h-4 w-4"})})}));Oi.displayName=gI.displayName;const RH=b.createContext(null),DH="maibot-completed-tours";function wpe(){try{const t=localStorage.getItem(DH);return t?new Set(JSON.parse(t)):new Set}catch{return new Set}}function bA(t){localStorage.setItem(DH,JSON.stringify([...t]))}function Spe({children:t}){const[e,n]=b.useState({activeTourId:null,stepIndex:0,isRunning:!1}),r=b.useRef(new Map),[,s]=b.useState(0),[i,a]=b.useState(wpe),l=b.useCallback((N,T)=>{r.current.set(N,T),s(E=>E+1)},[]),c=b.useCallback(N=>{r.current.delete(N),n(T=>T.activeTourId===N?{...T,activeTourId:null,isRunning:!1,stepIndex:0}:T)},[]),d=b.useCallback((N,T=0)=>{r.current.has(N)&&n({activeTourId:N,stepIndex:T,isRunning:!0})},[]),h=b.useCallback(()=>{n(N=>({...N,isRunning:!1}))},[]),m=b.useCallback(N=>{n(T=>({...T,stepIndex:N}))},[]),g=b.useCallback(()=>{n(N=>({...N,stepIndex:N.stepIndex+1}))},[]),x=b.useCallback(()=>{n(N=>({...N,stepIndex:Math.max(0,N.stepIndex-1)}))},[]),y=b.useCallback(()=>e.activeTourId?r.current.get(e.activeTourId)||[]:[],[e.activeTourId]),w=b.useCallback(N=>{a(T=>{const E=new Set(T);return E.add(N),bA(E),E})},[]),S=b.useCallback(N=>{const{action:T,index:E,status:_,type:A}=N,L=["finished","skipped"];if(T==="close"){n(P=>({...P,isRunning:!1,stepIndex:0}));return}L.includes(_)?n(P=>(_==="finished"&&P.activeTourId&&setTimeout(()=>w(P.activeTourId),0),{...P,isRunning:!1,stepIndex:0})):A==="step:after"&&(T==="next"?n(P=>({...P,stepIndex:E+1})):T==="prev"&&n(P=>({...P,stepIndex:E-1})))},[w]),k=b.useCallback(N=>i.has(N),[i]),j=b.useCallback(N=>{a(T=>{const E=new Set(T);return E.delete(N),bA(E),E})},[]);return o.jsx(RH.Provider,{value:{state:e,tours:r.current,registerTour:l,unregisterTour:c,startTour:d,stopTour:h,goToStep:m,nextStep:g,prevStep:x,getCurrentSteps:y,handleJoyrideCallback:S,isTourCompleted:k,markTourCompleted:w,resetTourCompleted:j},children:t})}function PH(t){return e=>typeof e===t}var kpe=PH("function"),Ope=t=>t===null,wA=t=>Object.prototype.toString.call(t).slice(8,-1)==="RegExp",SA=t=>!jpe(t)&&!Ope(t)&&(kpe(t)||typeof t=="object"),jpe=PH("undefined");function Npe(t,e){const{length:n}=t;if(n!==e.length)return!1;for(let r=n;r--!==0;)if(!ei(t[r],e[r]))return!1;return!0}function Cpe(t,e){if(t.byteLength!==e.byteLength)return!1;const n=new DataView(t.buffer),r=new DataView(e.buffer);let s=t.byteLength;for(;s--;)if(n.getUint8(s)!==r.getUint8(s))return!1;return!0}function Tpe(t,e){if(t.size!==e.size)return!1;for(const n of t.entries())if(!e.has(n[0]))return!1;for(const n of t.entries())if(!ei(n[1],e.get(n[0])))return!1;return!0}function Epe(t,e){if(t.size!==e.size)return!1;for(const n of t.entries())if(!e.has(n[0]))return!1;return!0}function ei(t,e){if(t===e)return!0;if(t&&SA(t)&&e&&SA(e)){if(t.constructor!==e.constructor)return!1;if(Array.isArray(t)&&Array.isArray(e))return Npe(t,e);if(t instanceof Map&&e instanceof Map)return Tpe(t,e);if(t instanceof Set&&e instanceof Set)return Epe(t,e);if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(e))return Cpe(t,e);if(wA(t)&&wA(e))return t.source===e.source&&t.flags===e.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===e.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===e.toString();const n=Object.keys(t),r=Object.keys(e);if(n.length!==r.length)return!1;for(let s=n.length;s--!==0;)if(!Object.prototype.hasOwnProperty.call(e,n[s]))return!1;for(let s=n.length;s--!==0;){const i=n[s];if(!(i==="_owner"&&t.$$typeof)&&!ei(t[i],e[i]))return!1}return!0}return Number.isNaN(t)&&Number.isNaN(e)?!0:t===e}var _pe=["Array","ArrayBuffer","AsyncFunction","AsyncGenerator","AsyncGeneratorFunction","Date","Error","Function","Generator","GeneratorFunction","HTMLElement","Map","Object","Promise","RegExp","Set","WeakMap","WeakSet"],Ape=["bigint","boolean","null","number","string","symbol","undefined"];function Tb(t){const e=Object.prototype.toString.call(t).slice(8,-1);if(/HTML\w+Element/.test(e))return"HTMLElement";if(Mpe(e))return e}function ro(t){return e=>Tb(e)===t}function Mpe(t){return _pe.includes(t)}function Rf(t){return e=>typeof e===t}function Rpe(t){return Ape.includes(t)}var Dpe=["innerHTML","ownerDocument","style","attributes","nodeValue"];function ct(t){if(t===null)return"null";switch(typeof t){case"bigint":return"bigint";case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"symbol":return"symbol";case"undefined":return"undefined"}if(ct.array(t))return"Array";if(ct.plainFunction(t))return"Function";const e=Tb(t);return e||"Object"}ct.array=Array.isArray;ct.arrayOf=(t,e)=>!ct.array(t)&&!ct.function(e)?!1:t.every(n=>e(n));ct.asyncGeneratorFunction=t=>Tb(t)==="AsyncGeneratorFunction";ct.asyncFunction=ro("AsyncFunction");ct.bigint=Rf("bigint");ct.boolean=t=>t===!0||t===!1;ct.date=ro("Date");ct.defined=t=>!ct.undefined(t);ct.domElement=t=>ct.object(t)&&!ct.plainObject(t)&&t.nodeType===1&&ct.string(t.nodeName)&&Dpe.every(e=>e in t);ct.empty=t=>ct.string(t)&&t.length===0||ct.array(t)&&t.length===0||ct.object(t)&&!ct.map(t)&&!ct.set(t)&&Object.keys(t).length===0||ct.set(t)&&t.size===0||ct.map(t)&&t.size===0;ct.error=ro("Error");ct.function=Rf("function");ct.generator=t=>ct.iterable(t)&&ct.function(t.next)&&ct.function(t.throw);ct.generatorFunction=ro("GeneratorFunction");ct.instanceOf=(t,e)=>!t||!e?!1:Object.getPrototypeOf(t)===e.prototype;ct.iterable=t=>!ct.nullOrUndefined(t)&&ct.function(t[Symbol.iterator]);ct.map=ro("Map");ct.nan=t=>Number.isNaN(t);ct.null=t=>t===null;ct.nullOrUndefined=t=>ct.null(t)||ct.undefined(t);ct.number=t=>Rf("number")(t)&&!ct.nan(t);ct.numericString=t=>ct.string(t)&&t.length>0&&!Number.isNaN(Number(t));ct.object=t=>!ct.nullOrUndefined(t)&&(ct.function(t)||typeof t=="object");ct.oneOf=(t,e)=>ct.array(t)?t.indexOf(e)>-1:!1;ct.plainFunction=ro("Function");ct.plainObject=t=>{if(Tb(t)!=="Object")return!1;const e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};ct.primitive=t=>ct.null(t)||Rpe(typeof t);ct.promise=ro("Promise");ct.propertyOf=(t,e,n)=>{if(!ct.object(t)||!e)return!1;const r=t[e];return ct.function(n)?n(r):ct.defined(r)};ct.regexp=ro("RegExp");ct.set=ro("Set");ct.string=Rf("string");ct.symbol=Rf("symbol");ct.undefined=Rf("undefined");ct.weakMap=ro("WeakMap");ct.weakSet=ro("WeakSet");var ft=ct;function Ppe(...t){return t.every(e=>ft.string(e)||ft.array(e)||ft.plainObject(e))}function zpe(t,e,n){return zH(t,e)?[t,e].every(ft.array)?!t.some(CA(n))&&e.some(CA(n)):[t,e].every(ft.plainObject)?!Object.entries(t).some(NA(n))&&Object.entries(e).some(NA(n)):e===n:!1}function kA(t,e,n){const{actual:r,key:s,previous:i,type:a}=n,l=To(t,s),c=To(e,s);let d=[l,c].every(ft.number)&&(a==="increased"?lc);return ft.undefined(r)||(d=d&&c===r),ft.undefined(i)||(d=d&&l===i),d}function OA(t,e,n){const{key:r,type:s,value:i}=n,a=To(t,r),l=To(e,r),c=s==="added"?a:l,d=s==="added"?l:a;if(!ft.nullOrUndefined(i)){if(ft.defined(c)){if(ft.array(c)||ft.plainObject(c))return zpe(c,d,i)}else return ei(d,i);return!1}return[a,l].every(ft.array)?!d.every($6(c)):[a,l].every(ft.plainObject)?Ipe(Object.keys(c),Object.keys(d)):![a,l].every(h=>ft.primitive(h)&&ft.defined(h))&&(s==="added"?!ft.defined(a)&&ft.defined(l):ft.defined(a)&&!ft.defined(l))}function jA(t,e,{key:n}={}){let r=To(t,n),s=To(e,n);if(!zH(r,s))throw new TypeError("Inputs have different types");if(!Ppe(r,s))throw new TypeError("Inputs don't have length");return[r,s].every(ft.plainObject)&&(r=Object.keys(r),s=Object.keys(s)),[r,s]}function NA(t){return([e,n])=>ft.array(t)?ei(t,n)||t.some(r=>ei(r,n)||ft.array(n)&&$6(n)(r)):ft.plainObject(t)&&t[e]?!!t[e]&&ei(t[e],n):ei(t,n)}function Ipe(t,e){return e.some(n=>!t.includes(n))}function CA(t){return e=>ft.array(t)?t.some(n=>ei(n,e)||ft.array(e)&&$6(e)(n)):ei(t,e)}function Vm(t,e){return ft.array(t)?t.some(n=>ei(n,e)):ei(t,e)}function $6(t){return e=>t.some(n=>ei(n,e))}function zH(...t){return t.every(ft.array)||t.every(ft.number)||t.every(ft.plainObject)||t.every(ft.string)}function To(t,e){return ft.plainObject(t)||ft.array(t)?ft.string(e)?e.split(".").reduce((r,s)=>r&&r[s],t):ft.number(e)?t[e]:t:t}function uy(t,e){if([t,e].some(ft.nullOrUndefined))throw new Error("Missing required parameters");if(![t,e].every(h=>ft.plainObject(h)||ft.array(h)))throw new Error("Expected plain objects or array");return{added:(h,m)=>{try{return OA(t,e,{key:h,type:"added",value:m})}catch{return!1}},changed:(h,m,g)=>{try{const x=To(t,h),y=To(e,h),w=ft.defined(m),S=ft.defined(g);if(w||S){const k=S?Vm(g,x):!Vm(m,x),j=Vm(m,y);return k&&j}return[x,y].every(ft.array)||[x,y].every(ft.plainObject)?!ei(x,y):x!==y}catch{return!1}},changedFrom:(h,m,g)=>{if(!ft.defined(h))return!1;try{const x=To(t,h),y=To(e,h),w=ft.defined(g);return Vm(m,x)&&(w?Vm(g,y):!w)}catch{return!1}},decreased:(h,m,g)=>{if(!ft.defined(h))return!1;try{return kA(t,e,{key:h,actual:m,previous:g,type:"decreased"})}catch{return!1}},emptied:h=>{try{const[m,g]=jA(t,e,{key:h});return!!m.length&&!g.length}catch{return!1}},filled:h=>{try{const[m,g]=jA(t,e,{key:h});return!m.length&&!!g.length}catch{return!1}},increased:(h,m,g)=>{if(!ft.defined(h))return!1;try{return kA(t,e,{key:h,actual:m,previous:g,type:"increased"})}catch{return!1}},removed:(h,m)=>{try{return OA(t,e,{key:h,type:"removed",value:m})}catch{return!1}}}}var xS,TA;function Lpe(){if(TA)return xS;TA=1;var t=new Error("Element already at target scroll position"),e=new Error("Scroll cancelled"),n=Math.min,r=Date.now;xS={left:s("scrollLeft"),top:s("scrollTop")};function s(l){return function(d,h,m,g){m=m||{},typeof m=="function"&&(g=m,m={}),typeof g!="function"&&(g=a);var x=r(),y=d[l],w=m.ease||i,S=isNaN(m.duration)?350:+m.duration,k=!1;return y===h?g(t,d[l]):requestAnimationFrame(N),j;function j(){k=!0}function N(T){if(k)return g(e,d[l]);var E=r(),_=n(1,(E-x)/S),A=w(_);d[l]=A*(h-y)+y,_<1?requestAnimationFrame(N):requestAnimationFrame(function(){g(null,d[l])})}}}function i(l){return .5*(1-Math.cos(Math.PI*l))}function a(){}return xS}var Bpe=Lpe();const Fpe=gd(Bpe);var yv={exports:{}},qpe=yv.exports,EA;function $pe(){return EA||(EA=1,(function(t){(function(e,n){t.exports?t.exports=n():e.Scrollparent=n()})(qpe,function(){function e(r){var s=getComputedStyle(r,null).getPropertyValue("overflow");return s.indexOf("scroll")>-1||s.indexOf("auto")>-1}function n(r){if(r instanceof HTMLElement||r instanceof SVGElement){for(var s=r.parentNode;s.parentNode;){if(e(s))return s;s=s.parentNode}return document.scrollingElement||document.documentElement}}return n})})(yv)),yv.exports}var Hpe=$pe();const IH=gd(Hpe);var vS,_A;function Qpe(){if(_A)return vS;_A=1;var t=function(r){return Object.prototype.hasOwnProperty.call(r,"props")},e=function(r,s){return r+n(s)},n=function(r){return r===null||typeof r=="boolean"||typeof r>"u"?"":typeof r=="number"?r.toString():typeof r=="string"?r:Array.isArray(r)?r.reduce(e,""):t(r)&&Object.prototype.hasOwnProperty.call(r.props,"children")?n(r.props.children):""};return n.default=n,vS=n,vS}var Vpe=Qpe();const AA=gd(Vpe);var yS,MA;function Upe(){if(MA)return yS;MA=1;var t=function(j){return e(j)&&!n(j)};function e(k){return!!k&&typeof k=="object"}function n(k){var j=Object.prototype.toString.call(k);return j==="[object RegExp]"||j==="[object Date]"||i(k)}var r=typeof Symbol=="function"&&Symbol.for,s=r?Symbol.for("react.element"):60103;function i(k){return k.$$typeof===s}function a(k){return Array.isArray(k)?[]:{}}function l(k,j){return j.clone!==!1&&j.isMergeableObject(k)?w(a(k),k,j):k}function c(k,j,N){return k.concat(j).map(function(T){return l(T,N)})}function d(k,j){if(!j.customMerge)return w;var N=j.customMerge(k);return typeof N=="function"?N:w}function h(k){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(k).filter(function(j){return Object.propertyIsEnumerable.call(k,j)}):[]}function m(k){return Object.keys(k).concat(h(k))}function g(k,j){try{return j in k}catch{return!1}}function x(k,j){return g(k,j)&&!(Object.hasOwnProperty.call(k,j)&&Object.propertyIsEnumerable.call(k,j))}function y(k,j,N){var T={};return N.isMergeableObject(k)&&m(k).forEach(function(E){T[E]=l(k[E],N)}),m(j).forEach(function(E){x(k,E)||(g(k,E)&&N.isMergeableObject(j[E])?T[E]=d(E,N)(k[E],j[E],N):T[E]=l(j[E],N))}),T}function w(k,j,N){N=N||{},N.arrayMerge=N.arrayMerge||c,N.isMergeableObject=N.isMergeableObject||t,N.cloneUnlessOtherwiseSpecified=l;var T=Array.isArray(j),E=Array.isArray(k),_=T===E;return _?T?N.arrayMerge(k,j,N):y(k,j,N):l(j,N)}w.all=function(j,N){if(!Array.isArray(j))throw new Error("first argument should be an array");return j.reduce(function(T,E){return w(T,E,N)},{})};var S=w;return yS=S,yS}var Wpe=Upe();const Va=gd(Wpe);var eg=typeof window<"u"&&typeof document<"u"&&typeof navigator<"u",Gpe=(function(){for(var t=["Edge","Trident","Firefox"],e=0;e=0)return 1;return 0})();function Xpe(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then(function(){e=!1,t()}))}}function Ype(t){var e=!1;return function(){e||(e=!0,setTimeout(function(){e=!1,t()},Gpe))}}var Kpe=eg&&window.Promise,Zpe=Kpe?Xpe:Ype;function LH(t){var e={};return t&&e.toString.call(t)==="[object Function]"}function bd(t,e){if(t.nodeType!==1)return[];var n=t.ownerDocument.defaultView,r=n.getComputedStyle(t,null);return e?r[e]:r}function H6(t){return t.nodeName==="HTML"?t:t.parentNode||t.host}function tg(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=bd(t),n=e.overflow,r=e.overflowX,s=e.overflowY;return/(auto|scroll|overlay)/.test(n+s+r)?t:tg(H6(t))}function BH(t){return t&&t.referenceNode?t.referenceNode:t}var RA=eg&&!!(window.MSInputMethodContext&&document.documentMode),DA=eg&&/MSIE 10/.test(navigator.userAgent);function Df(t){return t===11?RA:t===10?DA:RA||DA}function lf(t){if(!t)return document.documentElement;for(var e=Df(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var r=n&&n.nodeName;return!r||r==="BODY"||r==="HTML"?t?t.ownerDocument.documentElement:document.documentElement:["TH","TD","TABLE"].indexOf(n.nodeName)!==-1&&bd(n,"position")==="static"?lf(n):n}function Jpe(t){var e=t.nodeName;return e==="BODY"?!1:e==="HTML"||lf(t.firstElementChild)===t}function xO(t){return t.parentNode!==null?xO(t.parentNode):t}function dy(t,e){if(!t||!t.nodeType||!e||!e.nodeType)return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,r=n?t:e,s=n?e:t,i=document.createRange();i.setStart(r,0),i.setEnd(s,0);var a=i.commonAncestorContainer;if(t!==a&&e!==a||r.contains(s))return Jpe(a)?a:lf(a);var l=xO(t);return l.host?dy(l.host,e):dy(t,xO(e).host)}function cf(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"top",n=e==="top"?"scrollTop":"scrollLeft",r=t.nodeName;if(r==="BODY"||r==="HTML"){var s=t.ownerDocument.documentElement,i=t.ownerDocument.scrollingElement||s;return i[n]}return t[n]}function ege(t,e){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,r=cf(e,"top"),s=cf(e,"left"),i=n?-1:1;return t.top+=r*i,t.bottom+=r*i,t.left+=s*i,t.right+=s*i,t}function PA(t,e){var n=e==="x"?"Left":"Top",r=n==="Left"?"Right":"Bottom";return parseFloat(t["border"+n+"Width"])+parseFloat(t["border"+r+"Width"])}function zA(t,e,n,r){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],Df(10)?parseInt(n["offset"+t])+parseInt(r["margin"+(t==="Height"?"Top":"Left")])+parseInt(r["margin"+(t==="Height"?"Bottom":"Right")]):0)}function FH(t){var e=t.body,n=t.documentElement,r=Df(10)&&getComputedStyle(n);return{height:zA("Height",e,n,r),width:zA("Width",e,n,r)}}var tge=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},nge=(function(){function t(e,n){for(var r=0;r2&&arguments[2]!==void 0?arguments[2]:!1,r=Df(10),s=e.nodeName==="HTML",i=vO(t),a=vO(e),l=tg(t),c=bd(e),d=parseFloat(c.borderTopWidth),h=parseFloat(c.borderLeftWidth);n&&s&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var m=Jc({top:i.top-a.top-d,left:i.left-a.left-h,width:i.width,height:i.height});if(m.marginTop=0,m.marginLeft=0,!r&&s){var g=parseFloat(c.marginTop),x=parseFloat(c.marginLeft);m.top-=d-g,m.bottom-=d-g,m.left-=h-x,m.right-=h-x,m.marginTop=g,m.marginLeft=x}return(r&&!n?e.contains(l):e===l&&l.nodeName!=="BODY")&&(m=ege(m,e)),m}function rge(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=t.ownerDocument.documentElement,r=Q6(t,n),s=Math.max(n.clientWidth,window.innerWidth||0),i=Math.max(n.clientHeight,window.innerHeight||0),a=e?0:cf(n),l=e?0:cf(n,"left"),c={top:a-r.top+r.marginTop,left:l-r.left+r.marginLeft,width:s,height:i};return Jc(c)}function qH(t){var e=t.nodeName;if(e==="BODY"||e==="HTML")return!1;if(bd(t,"position")==="fixed")return!0;var n=H6(t);return n?qH(n):!1}function $H(t){if(!t||!t.parentElement||Df())return document.documentElement;for(var e=t.parentElement;e&&bd(e,"transform")==="none";)e=e.parentElement;return e||document.documentElement}function V6(t,e,n,r){var s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1,i={top:0,left:0},a=s?$H(t):dy(t,BH(e));if(r==="viewport")i=rge(a,s);else{var l=void 0;r==="scrollParent"?(l=tg(H6(e)),l.nodeName==="BODY"&&(l=t.ownerDocument.documentElement)):r==="window"?l=t.ownerDocument.documentElement:l=r;var c=Q6(l,a,s);if(l.nodeName==="HTML"&&!qH(a)){var d=FH(t.ownerDocument),h=d.height,m=d.width;i.top+=c.top-c.marginTop,i.bottom=h+c.top,i.left+=c.left-c.marginLeft,i.right=m+c.left}else i=c}n=n||0;var g=typeof n=="number";return i.left+=g?n:n.left||0,i.top+=g?n:n.top||0,i.right-=g?n:n.right||0,i.bottom-=g?n:n.bottom||0,i}function sge(t){var e=t.width,n=t.height;return e*n}function HH(t,e,n,r,s){var i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0;if(t.indexOf("auto")===-1)return t;var a=V6(n,r,i,s),l={top:{width:a.width,height:e.top-a.top},right:{width:a.right-e.right,height:a.height},bottom:{width:a.width,height:a.bottom-e.bottom},left:{width:e.left-a.left,height:a.height}},c=Object.keys(l).map(function(g){return wa({key:g},l[g],{area:sge(l[g])})}).sort(function(g,x){return x.area-g.area}),d=c.filter(function(g){var x=g.width,y=g.height;return x>=n.clientWidth&&y>=n.clientHeight}),h=d.length>0?d[0].key:c[0].key,m=t.split("-")[1];return h+(m?"-"+m:"")}function QH(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,s=r?$H(e):dy(e,BH(n));return Q6(n,s,r)}function VH(t){var e=t.ownerDocument.defaultView,n=e.getComputedStyle(t),r=parseFloat(n.marginTop||0)+parseFloat(n.marginBottom||0),s=parseFloat(n.marginLeft||0)+parseFloat(n.marginRight||0),i={width:t.offsetWidth+s,height:t.offsetHeight+r};return i}function hy(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,function(n){return e[n]})}function UH(t,e,n){n=n.split("-")[0];var r=VH(t),s={width:r.width,height:r.height},i=["right","left"].indexOf(n)!==-1,a=i?"top":"left",l=i?"left":"top",c=i?"height":"width",d=i?"width":"height";return s[a]=e[a]+e[c]/2-r[c]/2,n===l?s[l]=e[l]-r[d]:s[l]=e[hy(l)],s}function ng(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function ige(t,e,n){if(Array.prototype.findIndex)return t.findIndex(function(s){return s[e]===n});var r=ng(t,function(s){return s[e]===n});return t.indexOf(r)}function WH(t,e,n){var r=n===void 0?t:t.slice(0,ige(t,"name",n));return r.forEach(function(s){s.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var i=s.function||s.fn;s.enabled&&LH(i)&&(e.offsets.popper=Jc(e.offsets.popper),e.offsets.reference=Jc(e.offsets.reference),e=i(e,s))}),e}function age(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=QH(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=HH(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=UH(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=WH(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}function GH(t,e){return t.some(function(n){var r=n.name,s=n.enabled;return s&&r===e})}function U6(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),r=0;ra[x]&&(t.offsets.popper[m]+=l[m]+y-a[x]),t.offsets.popper=Jc(t.offsets.popper);var w=l[m]+l[d]/2-y/2,S=bd(t.instance.popper),k=parseFloat(S["margin"+h]),j=parseFloat(S["border"+h+"Width"]),N=w-t.offsets.popper[m]-k-j;return N=Math.max(Math.min(a[d]-y,N),0),t.arrowElement=r,t.offsets.arrow=(n={},uf(n,m,Math.round(N)),uf(n,g,""),n),t}function yge(t){return t==="end"?"start":t==="start"?"end":t}var ZH=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],bS=ZH.slice(3);function IA(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=bS.indexOf(t),r=bS.slice(n+1).concat(bS.slice(0,n));return e?r.reverse():r}var wS={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function bge(t,e){if(GH(t.instance.modifiers,"inner")||t.flipped&&t.placement===t.originalPlacement)return t;var n=V6(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),r=t.placement.split("-")[0],s=hy(r),i=t.placement.split("-")[1]||"",a=[];switch(e.behavior){case wS.FLIP:a=[r,s];break;case wS.CLOCKWISE:a=IA(r);break;case wS.COUNTERCLOCKWISE:a=IA(r,!0);break;default:a=e.behavior}return a.forEach(function(l,c){if(r!==l||a.length===c+1)return t;r=t.placement.split("-")[0],s=hy(r);var d=t.offsets.popper,h=t.offsets.reference,m=Math.floor,g=r==="left"&&m(d.right)>m(h.left)||r==="right"&&m(d.left)m(h.top)||r==="bottom"&&m(d.top)m(n.right),w=m(d.top)m(n.bottom),k=r==="left"&&x||r==="right"&&y||r==="top"&&w||r==="bottom"&&S,j=["top","bottom"].indexOf(r)!==-1,N=!!e.flipVariations&&(j&&i==="start"&&x||j&&i==="end"&&y||!j&&i==="start"&&w||!j&&i==="end"&&S),T=!!e.flipVariationsByContent&&(j&&i==="start"&&y||j&&i==="end"&&x||!j&&i==="start"&&S||!j&&i==="end"&&w),E=N||T;(g||k||E)&&(t.flipped=!0,(g||k)&&(r=a[c+1]),E&&(i=yge(i)),t.placement=r+(i?"-"+i:""),t.offsets.popper=wa({},t.offsets.popper,UH(t.instance.popper,t.offsets.reference,t.placement)),t=WH(t.instance.modifiers,t,"flip"))}),t}function wge(t){var e=t.offsets,n=e.popper,r=e.reference,s=t.placement.split("-")[0],i=Math.floor,a=["top","bottom"].indexOf(s)!==-1,l=a?"right":"bottom",c=a?"left":"top",d=a?"width":"height";return n[l]i(r[l])&&(t.offsets.popper[c]=i(r[l])),t}function Sge(t,e,n,r){var s=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),i=+s[1],a=s[2];if(!i)return t;if(a.indexOf("%")===0){var l=void 0;switch(a){case"%p":l=n;break;case"%":case"%r":default:l=r}var c=Jc(l);return c[e]/100*i}else if(a==="vh"||a==="vw"){var d=void 0;return a==="vh"?d=Math.max(document.documentElement.clientHeight,window.innerHeight||0):d=Math.max(document.documentElement.clientWidth,window.innerWidth||0),d/100*i}else return i}function kge(t,e,n,r){var s=[0,0],i=["right","left"].indexOf(r)!==-1,a=t.split(/(\+|\-)/).map(function(h){return h.trim()}),l=a.indexOf(ng(a,function(h){return h.search(/,|\s/)!==-1}));a[l]&&a[l].indexOf(",")===-1&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var c=/\s*,\s*|\s+/,d=l!==-1?[a.slice(0,l).concat([a[l].split(c)[0]]),[a[l].split(c)[1]].concat(a.slice(l+1))]:[a];return d=d.map(function(h,m){var g=(m===1?!i:i)?"height":"width",x=!1;return h.reduce(function(y,w){return y[y.length-1]===""&&["+","-"].indexOf(w)!==-1?(y[y.length-1]=w,x=!0,y):x?(y[y.length-1]+=w,x=!1,y):y.concat(w)},[]).map(function(y){return Sge(y,g,e,n)})}),d.forEach(function(h,m){h.forEach(function(g,x){W6(g)&&(s[m]+=g*(h[x-1]==="-"?-1:1))})}),s}function Oge(t,e){var n=e.offset,r=t.placement,s=t.offsets,i=s.popper,a=s.reference,l=r.split("-")[0],c=void 0;return W6(+n)?c=[+n,0]:c=kge(n,i,a,l),l==="left"?(i.top+=c[0],i.left-=c[1]):l==="right"?(i.top+=c[0],i.left+=c[1]):l==="top"?(i.left+=c[0],i.top-=c[1]):l==="bottom"&&(i.left+=c[0],i.top+=c[1]),t.popper=i,t}function jge(t,e){var n=e.boundariesElement||lf(t.instance.popper);t.instance.reference===n&&(n=lf(n));var r=U6("transform"),s=t.instance.popper.style,i=s.top,a=s.left,l=s[r];s.top="",s.left="",s[r]="";var c=V6(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);s.top=i,s.left=a,s[r]=l,e.boundaries=c;var d=e.priority,h=t.offsets.popper,m={primary:function(x){var y=h[x];return h[x]c[x]&&!e.escapeWithReference&&(w=Math.min(h[y],c[x]-(x==="right"?h.width:h.height))),uf({},y,w)}};return d.forEach(function(g){var x=["left","top"].indexOf(g)!==-1?"primary":"secondary";h=wa({},h,m[x](g))}),t.offsets.popper=h,t}function Nge(t){var e=t.placement,n=e.split("-")[0],r=e.split("-")[1];if(r){var s=t.offsets,i=s.reference,a=s.popper,l=["bottom","top"].indexOf(n)!==-1,c=l?"left":"top",d=l?"width":"height",h={start:uf({},c,i[c]),end:uf({},c,i[c]+i[d]-a[d])};t.offsets.popper=wa({},a,h[r])}return t}function Cge(t){if(!KH(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=ng(t.instance.modifiers,function(r){return r.name==="preventOverflow"}).boundaries;if(e.bottomn.right||e.top>n.bottom||e.right2&&arguments[2]!==void 0?arguments[2]:{};tge(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(r.update)},this.update=Zpe(this.update.bind(this)),this.options=wa({},t.Defaults,s),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(wa({},t.Defaults.modifiers,s.modifiers)).forEach(function(a){r.options.modifiers[a]=wa({},t.Defaults.modifiers[a]||{},s.modifiers?s.modifiers[a]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(a){return wa({name:a},r.options.modifiers[a])}).sort(function(a,l){return a.order-l.order}),this.modifiers.forEach(function(a){a.enabled&&LH(a.onLoad)&&a.onLoad(r.reference,r.popper,r.options,a,r.state)}),this.update();var i=this.options.eventsEnabled;i&&this.enableEventListeners(),this.state.eventsEnabled=i}return nge(t,[{key:"update",value:function(){return age.call(this)}},{key:"destroy",value:function(){return oge.call(this)}},{key:"enableEventListeners",value:function(){return cge.call(this)}},{key:"disableEventListeners",value:function(){return dge.call(this)}}]),t})();lp.Utils=(typeof window<"u"?window:global).PopperUtils;lp.placements=ZH;lp.Defaults=_ge;var Age=["innerHTML","ownerDocument","style","attributes","nodeValue"],Mge=["Array","ArrayBuffer","AsyncFunction","AsyncGenerator","AsyncGeneratorFunction","Date","Error","Function","Generator","GeneratorFunction","HTMLElement","Map","Object","Promise","RegExp","Set","WeakMap","WeakSet"],Rge=["bigint","boolean","null","number","string","symbol","undefined"];function Eb(t){var e=Object.prototype.toString.call(t).slice(8,-1);if(/HTML\w+Element/.test(e))return"HTMLElement";if(Dge(e))return e}function so(t){return function(e){return Eb(e)===t}}function Dge(t){return Mge.includes(t)}function Pf(t){return function(e){return typeof e===t}}function Pge(t){return Rge.includes(t)}function _e(t){if(t===null)return"null";switch(typeof t){case"bigint":return"bigint";case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"symbol":return"symbol";case"undefined":return"undefined"}if(_e.array(t))return"Array";if(_e.plainFunction(t))return"Function";var e=Eb(t);return e||"Object"}_e.array=Array.isArray;_e.arrayOf=function(t,e){return!_e.array(t)&&!_e.function(e)?!1:t.every(function(n){return e(n)})};_e.asyncGeneratorFunction=function(t){return Eb(t)==="AsyncGeneratorFunction"};_e.asyncFunction=so("AsyncFunction");_e.bigint=Pf("bigint");_e.boolean=function(t){return t===!0||t===!1};_e.date=so("Date");_e.defined=function(t){return!_e.undefined(t)};_e.domElement=function(t){return _e.object(t)&&!_e.plainObject(t)&&t.nodeType===1&&_e.string(t.nodeName)&&Age.every(function(e){return e in t})};_e.empty=function(t){return _e.string(t)&&t.length===0||_e.array(t)&&t.length===0||_e.object(t)&&!_e.map(t)&&!_e.set(t)&&Object.keys(t).length===0||_e.set(t)&&t.size===0||_e.map(t)&&t.size===0};_e.error=so("Error");_e.function=Pf("function");_e.generator=function(t){return _e.iterable(t)&&_e.function(t.next)&&_e.function(t.throw)};_e.generatorFunction=so("GeneratorFunction");_e.instanceOf=function(t,e){return!t||!e?!1:Object.getPrototypeOf(t)===e.prototype};_e.iterable=function(t){return!_e.nullOrUndefined(t)&&_e.function(t[Symbol.iterator])};_e.map=so("Map");_e.nan=function(t){return Number.isNaN(t)};_e.null=function(t){return t===null};_e.nullOrUndefined=function(t){return _e.null(t)||_e.undefined(t)};_e.number=function(t){return Pf("number")(t)&&!_e.nan(t)};_e.numericString=function(t){return _e.string(t)&&t.length>0&&!Number.isNaN(Number(t))};_e.object=function(t){return!_e.nullOrUndefined(t)&&(_e.function(t)||typeof t=="object")};_e.oneOf=function(t,e){return _e.array(t)?t.indexOf(e)>-1:!1};_e.plainFunction=so("Function");_e.plainObject=function(t){if(Eb(t)!=="Object")return!1;var e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};_e.primitive=function(t){return _e.null(t)||Pge(typeof t)};_e.promise=so("Promise");_e.propertyOf=function(t,e,n){if(!_e.object(t)||!e)return!1;var r=t[e];return _e.function(n)?n(r):_e.defined(r)};_e.regexp=so("RegExp");_e.set=so("Set");_e.string=Pf("string");_e.symbol=Pf("symbol");_e.undefined=Pf("undefined");_e.weakMap=so("WeakMap");_e.weakSet=so("WeakSet");function JH(t){return function(e){return typeof e===t}}var zge=JH("function"),Ige=function(t){return t===null},LA=function(t){return Object.prototype.toString.call(t).slice(8,-1)==="RegExp"},BA=function(t){return!Lge(t)&&!Ige(t)&&(zge(t)||typeof t=="object")},Lge=JH("undefined"),bO=function(t){var e=typeof Symbol=="function"&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")};function Bge(t,e){var n=t.length;if(n!==e.length)return!1;for(var r=n;r--!==0;)if(!bi(t[r],e[r]))return!1;return!0}function Fge(t,e){if(t.byteLength!==e.byteLength)return!1;for(var n=new DataView(t.buffer),r=new DataView(e.buffer),s=t.byteLength;s--;)if(n.getUint8(s)!==r.getUint8(s))return!1;return!0}function qge(t,e){var n,r,s,i;if(t.size!==e.size)return!1;try{for(var a=bO(t.entries()),l=a.next();!l.done;l=a.next()){var c=l.value;if(!e.has(c[0]))return!1}}catch(m){n={error:m}}finally{try{l&&!l.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}try{for(var d=bO(t.entries()),h=d.next();!h.done;h=d.next()){var c=h.value;if(!bi(c[1],e.get(c[0])))return!1}}catch(m){s={error:m}}finally{try{h&&!h.done&&(i=d.return)&&i.call(d)}finally{if(s)throw s.error}}return!0}function $ge(t,e){var n,r;if(t.size!==e.size)return!1;try{for(var s=bO(t.entries()),i=s.next();!i.done;i=s.next()){var a=i.value;if(!e.has(a[0]))return!1}}catch(l){n={error:l}}finally{try{i&&!i.done&&(r=s.return)&&r.call(s)}finally{if(n)throw n.error}}return!0}function bi(t,e){if(t===e)return!0;if(t&&BA(t)&&e&&BA(e)){if(t.constructor!==e.constructor)return!1;if(Array.isArray(t)&&Array.isArray(e))return Bge(t,e);if(t instanceof Map&&e instanceof Map)return qge(t,e);if(t instanceof Set&&e instanceof Set)return $ge(t,e);if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(e))return Fge(t,e);if(LA(t)&&LA(e))return t.source===e.source&&t.flags===e.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===e.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===e.toString();var n=Object.keys(t),r=Object.keys(e);if(n.length!==r.length)return!1;for(var s=n.length;s--!==0;)if(!Object.prototype.hasOwnProperty.call(e,n[s]))return!1;for(var s=n.length;s--!==0;){var i=n[s];if(!(i==="_owner"&&t.$$typeof)&&!bi(t[i],e[i]))return!1}return!0}return Number.isNaN(t)&&Number.isNaN(e)?!0:t===e}function Hge(){for(var t=[],e=0;ec);return _e.undefined(r)||(d=d&&c===r),_e.undefined(i)||(d=d&&l===i),d}function qA(t,e,n){var r=n.key,s=n.type,i=n.value,a=Eo(t,r),l=Eo(e,r),c=s==="added"?a:l,d=s==="added"?l:a;if(!_e.nullOrUndefined(i)){if(_e.defined(c)){if(_e.array(c)||_e.plainObject(c))return Qge(c,d,i)}else return bi(d,i);return!1}return[a,l].every(_e.array)?!d.every(G6(c)):[a,l].every(_e.plainObject)?Vge(Object.keys(c),Object.keys(d)):![a,l].every(function(h){return _e.primitive(h)&&_e.defined(h)})&&(s==="added"?!_e.defined(a)&&_e.defined(l):_e.defined(a)&&!_e.defined(l))}function $A(t,e,n){var r=n===void 0?{}:n,s=r.key,i=Eo(t,s),a=Eo(e,s);if(!eQ(i,a))throw new TypeError("Inputs have different types");if(!Hge(i,a))throw new TypeError("Inputs don't have length");return[i,a].every(_e.plainObject)&&(i=Object.keys(i),a=Object.keys(a)),[i,a]}function HA(t){return function(e){var n=e[0],r=e[1];return _e.array(t)?bi(t,r)||t.some(function(s){return bi(s,r)||_e.array(r)&&G6(r)(s)}):_e.plainObject(t)&&t[n]?!!t[n]&&bi(t[n],r):bi(t,r)}}function Vge(t,e){return e.some(function(n){return!t.includes(n)})}function QA(t){return function(e){return _e.array(t)?t.some(function(n){return bi(n,e)||_e.array(e)&&G6(e)(n)}):bi(t,e)}}function Um(t,e){return _e.array(t)?t.some(function(n){return bi(n,e)}):bi(t,e)}function G6(t){return function(e){return t.some(function(n){return bi(n,e)})}}function eQ(){for(var t=[],e=0;e"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Xge(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i=0)&&(n[s]=t[s]);return n}function tQ(t,e){if(t==null)return{};var n=Xge(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function Nl(t){if(t===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function Yge(t,e){if(e&&(typeof e=="object"||typeof e=="function"))return e;if(e!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Nl(t)}function ag(t){var e=Gge();return function(){var r=fy(t),s;if(e){var i=fy(this).constructor;s=Reflect.construct(r,arguments,i)}else s=r.apply(this,arguments);return Yge(this,s)}}function Kge(t,e){if(typeof t!="object"||t===null)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function nQ(t){var e=Kge(t,"string");return typeof e=="symbol"?e:String(e)}var Zge={flip:{padding:20},preventOverflow:{padding:10}},Jge="The typeValidator argument must be a function with the signature function(props, propName, componentName).",exe="The error message is optional, but must be a string if provided.";function txe(t,e,n,r){return typeof t=="boolean"?t:typeof t=="function"?t(e,n,r):t?!!t:!1}function nxe(t,e){return Object.hasOwnProperty.call(t,e)}function rxe(t,e,n,r){return new Error("Required ".concat(t[e]," `").concat(e,"` was not specified in `").concat(n,"`."))}function sxe(t,e){if(typeof t!="function")throw new TypeError(Jge);if(e&&typeof e!="string")throw new TypeError(exe)}function UA(t,e,n){return sxe(t,n),function(r,s,i){for(var a=arguments.length,l=new Array(a>3?a-3:0),c=3;c3&&arguments[3]!==void 0?arguments[3]:!1;t.addEventListener(e,n,r)}function axe(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;t.removeEventListener(e,n,r)}function oxe(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,s;s=function(a){n(a),axe(t,e,s)},ixe(t,e,s,r)}function WA(){}var rQ=(function(t){ig(n,t);var e=ag(n);function n(){return rg(this,n),e.apply(this,arguments)}return sg(n,[{key:"componentDidMount",value:function(){vo()&&(this.node||this.appendNode(),Wm||this.renderPortal())}},{key:"componentDidUpdate",value:function(){vo()&&(Wm||this.renderPortal())}},{key:"componentWillUnmount",value:function(){!vo()||!this.node||(Wm||J1.unmountComponentAtNode(this.node),this.node&&this.node.parentNode===document.body&&(document.body.removeChild(this.node),this.node=void 0))}},{key:"appendNode",value:function(){var s=this.props,i=s.id,a=s.zIndex;this.node||(this.node=document.createElement("div"),i&&(this.node.id=i),a&&(this.node.style.zIndex=a),document.body.appendChild(this.node))}},{key:"renderPortal",value:function(){if(!vo())return null;var s=this.props,i=s.children,a=s.setRef;if(this.node||this.appendNode(),Wm)return J1.createPortal(i,this.node);var l=J1.unstable_renderSubtreeIntoContainer(this,i.length>1?ae.createElement("div",null,i):i[0],this.node);return a(l),null}},{key:"renderReact16",value:function(){var s=this.props,i=s.hasChildren,a=s.placement,l=s.target;return i?this.renderPortal():l||a==="center"?this.renderPortal():null}},{key:"render",value:function(){return Wm?this.renderReact16():null}}]),n})(ae.Component);qs(rQ,"propTypes",{children:Ge.oneOfType([Ge.element,Ge.array]),hasChildren:Ge.bool,id:Ge.oneOfType([Ge.string,Ge.number]),placement:Ge.string,setRef:Ge.func.isRequired,target:Ge.oneOfType([Ge.object,Ge.string]),zIndex:Ge.number});var sQ=(function(t){ig(n,t);var e=ag(n);function n(){return rg(this,n),e.apply(this,arguments)}return sg(n,[{key:"parentStyle",get:function(){var s=this.props,i=s.placement,a=s.styles,l=a.arrow.length,c={pointerEvents:"none",position:"absolute",width:"100%"};return i.startsWith("top")?(c.bottom=0,c.left=0,c.right=0,c.height=l):i.startsWith("bottom")?(c.left=0,c.right=0,c.top=0,c.height=l):i.startsWith("left")?(c.right=0,c.top=0,c.bottom=0):i.startsWith("right")&&(c.left=0,c.top=0),c}},{key:"render",value:function(){var s=this.props,i=s.placement,a=s.setArrowRef,l=s.styles,c=l.arrow,d=c.color,h=c.display,m=c.length,g=c.margin,x=c.position,y=c.spread,w={display:h,position:x},S,k=y,j=m;return i.startsWith("top")?(S="0,0 ".concat(k/2,",").concat(j," ").concat(k,",0"),w.bottom=0,w.marginLeft=g,w.marginRight=g):i.startsWith("bottom")?(S="".concat(k,",").concat(j," ").concat(k/2,",0 0,").concat(j),w.top=0,w.marginLeft=g,w.marginRight=g):i.startsWith("left")?(j=y,k=m,S="0,0 ".concat(k,",").concat(j/2," 0,").concat(j),w.right=0,w.marginTop=g,w.marginBottom=g):i.startsWith("right")&&(j=y,k=m,S="".concat(k,",").concat(j," ").concat(k,",0 0,").concat(j/2),w.left=0,w.marginTop=g,w.marginBottom=g),ae.createElement("div",{className:"__floater__arrow",style:this.parentStyle},ae.createElement("span",{ref:a,style:w},ae.createElement("svg",{width:k,height:j,version:"1.1",xmlns:"http://www.w3.org/2000/svg"},ae.createElement("polygon",{points:S,fill:d}))))}}]),n})(ae.Component);qs(sQ,"propTypes",{placement:Ge.string.isRequired,setArrowRef:Ge.func.isRequired,styles:Ge.object.isRequired});var lxe=["color","height","width"];function iQ(t){var e=t.handleClick,n=t.styles,r=n.color,s=n.height,i=n.width,a=tQ(n,lxe);return ae.createElement("button",{"aria-label":"close",onClick:e,style:a,type:"button"},ae.createElement("svg",{width:"".concat(i,"px"),height:"".concat(s,"px"),viewBox:"0 0 18 18",version:"1.1",xmlns:"http://www.w3.org/2000/svg",preserveAspectRatio:"xMidYMid"},ae.createElement("g",null,ae.createElement("path",{d:"M8.13911129,9.00268191 L0.171521827,17.0258467 C-0.0498027049,17.248715 -0.0498027049,17.6098394 0.171521827,17.8327545 C0.28204354,17.9443526 0.427188206,17.9998706 0.572051765,17.9998706 C0.71714958,17.9998706 0.862013139,17.9443526 0.972581703,17.8327545 L9.0000937,9.74924618 L17.0276057,17.8327545 C17.1384085,17.9443526 17.2832721,17.9998706 17.4281356,17.9998706 C17.5729992,17.9998706 17.718097,17.9443526 17.8286656,17.8327545 C18.0499901,17.6098862 18.0499901,17.2487618 17.8286656,17.0258467 L9.86135722,9.00268191 L17.8340066,0.973848225 C18.0553311,0.750979934 18.0553311,0.389855532 17.8340066,0.16694039 C17.6126821,-0.0556467968 17.254037,-0.0556467968 17.0329467,0.16694039 L9.00042166,8.25611765 L0.967006424,0.167268345 C0.745681892,-0.0553188426 0.387317931,-0.0553188426 0.165993399,0.167268345 C-0.0553311331,0.390136635 -0.0553311331,0.751261038 0.165993399,0.974176179 L8.13920499,9.00268191 L8.13911129,9.00268191 Z",fill:r}))))}iQ.propTypes={handleClick:Ge.func.isRequired,styles:Ge.object.isRequired};function aQ(t){var e=t.content,n=t.footer,r=t.handleClick,s=t.open,i=t.positionWrapper,a=t.showCloseButton,l=t.title,c=t.styles,d={content:ae.isValidElement(e)?e:ae.createElement("div",{className:"__floater__content",style:c.content},e)};return l&&(d.title=ae.isValidElement(l)?l:ae.createElement("div",{className:"__floater__title",style:c.title},l)),n&&(d.footer=ae.isValidElement(n)?n:ae.createElement("div",{className:"__floater__footer",style:c.footer},n)),(a||i)&&!_e.boolean(s)&&(d.close=ae.createElement(iQ,{styles:c.close,handleClick:r})),ae.createElement("div",{className:"__floater__container",style:c.container},d.close,d.title,d.content,d.footer)}aQ.propTypes={content:Ge.node.isRequired,footer:Ge.node,handleClick:Ge.func.isRequired,open:Ge.bool,positionWrapper:Ge.bool.isRequired,showCloseButton:Ge.bool.isRequired,styles:Ge.object.isRequired,title:Ge.node};var oQ=(function(t){ig(n,t);var e=ag(n);function n(){return rg(this,n),e.apply(this,arguments)}return sg(n,[{key:"style",get:function(){var s=this.props,i=s.disableAnimation,a=s.component,l=s.placement,c=s.hideArrow,d=s.status,h=s.styles,m=h.arrow.length,g=h.floater,x=h.floaterCentered,y=h.floaterClosing,w=h.floaterOpening,S=h.floaterWithAnimation,k=h.floaterWithComponent,j={};return c||(l.startsWith("top")?j.padding="0 0 ".concat(m,"px"):l.startsWith("bottom")?j.padding="".concat(m,"px 0 0"):l.startsWith("left")?j.padding="0 ".concat(m,"px 0 0"):l.startsWith("right")&&(j.padding="0 0 0 ".concat(m,"px"))),[On.OPENING,On.OPEN].indexOf(d)!==-1&&(j=br(br({},j),w)),d===On.CLOSING&&(j=br(br({},j),y)),d===On.OPEN&&!i&&(j=br(br({},j),S)),l==="center"&&(j=br(br({},j),x)),a&&(j=br(br({},j),k)),br(br({},g),j)}},{key:"render",value:function(){var s=this.props,i=s.component,a=s.handleClick,l=s.hideArrow,c=s.setFloaterRef,d=s.status,h={},m=["__floater"];return i?ae.isValidElement(i)?h.content=ae.cloneElement(i,{closeFn:a}):h.content=i({closeFn:a}):h.content=ae.createElement(aQ,this.props),d===On.OPEN&&m.push("__floater__open"),l||(h.arrow=ae.createElement(sQ,this.props)),ae.createElement("div",{ref:c,className:m.join(" "),style:this.style},ae.createElement("div",{className:"__floater__body"},h.content,h.arrow))}}]),n})(ae.Component);qs(oQ,"propTypes",{component:Ge.oneOfType([Ge.func,Ge.element]),content:Ge.node,disableAnimation:Ge.bool.isRequired,footer:Ge.node,handleClick:Ge.func.isRequired,hideArrow:Ge.bool.isRequired,open:Ge.bool,placement:Ge.string.isRequired,positionWrapper:Ge.bool.isRequired,setArrowRef:Ge.func.isRequired,setFloaterRef:Ge.func.isRequired,showCloseButton:Ge.bool,status:Ge.string.isRequired,styles:Ge.object.isRequired,title:Ge.node});var lQ=(function(t){ig(n,t);var e=ag(n);function n(){return rg(this,n),e.apply(this,arguments)}return sg(n,[{key:"render",value:function(){var s=this.props,i=s.children,a=s.handleClick,l=s.handleMouseEnter,c=s.handleMouseLeave,d=s.setChildRef,h=s.setWrapperRef,m=s.style,g=s.styles,x;if(i)if(ae.Children.count(i)===1)if(!ae.isValidElement(i))x=ae.createElement("span",null,i);else{var y=_e.function(i.type)?"innerRef":"ref";x=ae.cloneElement(ae.Children.only(i),qs({},y,d))}else x=i;return x?ae.createElement("span",{ref:h,style:br(br({},g),m),onClick:a,onMouseEnter:l,onMouseLeave:c},x):null}}]),n})(ae.Component);qs(lQ,"propTypes",{children:Ge.node,handleClick:Ge.func.isRequired,handleMouseEnter:Ge.func.isRequired,handleMouseLeave:Ge.func.isRequired,setChildRef:Ge.func.isRequired,setWrapperRef:Ge.func.isRequired,style:Ge.object,styles:Ge.object.isRequired});var cxe={zIndex:100};function uxe(t){var e=Va(cxe,t.options||{});return{wrapper:{cursor:"help",display:"inline-flex",flexDirection:"column",zIndex:e.zIndex},wrapperPosition:{left:-1e3,position:"absolute",top:-1e3,visibility:"hidden"},floater:{display:"inline-block",filter:"drop-shadow(0 0 3px rgba(0, 0, 0, 0.3))",maxWidth:300,opacity:0,position:"relative",transition:"opacity 0.3s",visibility:"hidden",zIndex:e.zIndex},floaterOpening:{opacity:1,visibility:"visible"},floaterWithAnimation:{opacity:1,transition:"opacity 0.3s, transform 0.2s",visibility:"visible"},floaterWithComponent:{maxWidth:"100%"},floaterClosing:{opacity:0,visibility:"visible"},floaterCentered:{left:"50%",position:"fixed",top:"50%",transform:"translate(-50%, -50%)"},container:{backgroundColor:"#fff",color:"#666",minHeight:60,minWidth:200,padding:20,position:"relative",zIndex:10},title:{borderBottom:"1px solid #555",color:"#555",fontSize:18,marginBottom:5,paddingBottom:6,paddingRight:18},content:{fontSize:15},close:{backgroundColor:"transparent",border:0,borderRadius:0,color:"#555",fontSize:0,height:15,outline:"none",padding:10,position:"absolute",right:0,top:0,width:15,WebkitAppearance:"none"},footer:{borderTop:"1px solid #ccc",fontSize:13,marginTop:10,paddingTop:5},arrow:{color:"#fff",display:"inline-flex",length:16,margin:8,position:"absolute",spread:32},options:e}}var dxe=["arrow","flip","offset"],hxe=["position","top","right","bottom","left"],X6=(function(t){ig(n,t);var e=ag(n);function n(r){var s;return rg(this,n),s=e.call(this,r),qs(Nl(s),"setArrowRef",function(i){s.arrowRef=i}),qs(Nl(s),"setChildRef",function(i){s.childRef=i}),qs(Nl(s),"setFloaterRef",function(i){s.floaterRef=i}),qs(Nl(s),"setWrapperRef",function(i){s.wrapperRef=i}),qs(Nl(s),"handleTransitionEnd",function(){var i=s.state.status,a=s.props.callback;s.wrapperPopper&&s.wrapperPopper.instance.update(),s.setState({status:i===On.OPENING?On.OPEN:On.IDLE},function(){var l=s.state.status;a(l===On.OPEN?"open":"close",s.props)})}),qs(Nl(s),"handleClick",function(){var i=s.props,a=i.event,l=i.open;if(!_e.boolean(l)){var c=s.state,d=c.positionWrapper,h=c.status;(s.event==="click"||s.event==="hover"&&d)&&(O1({title:"click",data:[{event:a,status:h===On.OPEN?"closing":"opening"}],debug:s.debug}),s.toggle())}}),qs(Nl(s),"handleMouseEnter",function(){var i=s.props,a=i.event,l=i.open;if(!(_e.boolean(l)||SS())){var c=s.state.status;s.event==="hover"&&c===On.IDLE&&(O1({title:"mouseEnter",data:[{key:"originalEvent",value:a}],debug:s.debug}),clearTimeout(s.eventDelayTimeout),s.toggle())}}),qs(Nl(s),"handleMouseLeave",function(){var i=s.props,a=i.event,l=i.eventDelay,c=i.open;if(!(_e.boolean(c)||SS())){var d=s.state,h=d.status,m=d.positionWrapper;s.event==="hover"&&(O1({title:"mouseLeave",data:[{key:"originalEvent",value:a}],debug:s.debug}),l?[On.OPENING,On.OPEN].indexOf(h)!==-1&&!m&&!s.eventDelayTimeout&&(s.eventDelayTimeout=setTimeout(function(){delete s.eventDelayTimeout,s.toggle()},l*1e3)):s.toggle(On.IDLE))}}),s.state={currentPlacement:r.placement,needsUpdate:!1,positionWrapper:r.wrapperOptions.position&&!!r.target,status:On.INIT,statusWrapper:On.INIT},s._isMounted=!1,s.hasMounted=!1,vo()&&window.addEventListener("load",function(){s.popper&&s.popper.instance.update(),s.wrapperPopper&&s.wrapperPopper.instance.update()}),s}return sg(n,[{key:"componentDidMount",value:function(){if(vo()){var s=this.state.positionWrapper,i=this.props,a=i.children,l=i.open,c=i.target;this._isMounted=!0,O1({title:"init",data:{hasChildren:!!a,hasTarget:!!c,isControlled:_e.boolean(l),positionWrapper:s,target:this.target,floater:this.floaterRef},debug:this.debug}),this.hasMounted||(this.initPopper(),this.hasMounted=!0),!a&&c&&_e.boolean(l)}}},{key:"componentDidUpdate",value:function(s,i){if(vo()){var a=this.props,l=a.autoOpen,c=a.open,d=a.target,h=a.wrapperOptions,m=Uge(i,this.state),g=m.changedFrom,x=m.changed;if(s.open!==c){var y;_e.boolean(c)&&(y=c?On.OPENING:On.CLOSING),this.toggle(y)}(s.wrapperOptions.position!==h.position||s.target!==d)&&this.changeWrapperPosition(this.props),x("status",On.IDLE)&&c?this.toggle(On.OPEN):g("status",On.INIT,On.IDLE)&&l&&this.toggle(On.OPEN),this.popper&&x("status",On.OPENING)&&this.popper.instance.update(),this.floaterRef&&(x("status",On.OPENING)||x("status",On.CLOSING))&&oxe(this.floaterRef,"transitionend",this.handleTransitionEnd),x("needsUpdate",!0)&&this.rebuildPopper()}}},{key:"componentWillUnmount",value:function(){vo()&&(this._isMounted=!1,this.popper&&this.popper.instance.destroy(),this.wrapperPopper&&this.wrapperPopper.instance.destroy())}},{key:"initPopper",value:function(){var s=this,i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.target,a=this.state.positionWrapper,l=this.props,c=l.disableFlip,d=l.getPopper,h=l.hideArrow,m=l.offset,g=l.placement,x=l.wrapperOptions,y=g==="top"||g==="bottom"?"flip":["right","bottom-end","top-end","left","top-start","bottom-start"];if(g==="center")this.setState({status:On.IDLE});else if(i&&this.floaterRef){var w=this.options,S=w.arrow,k=w.flip,j=w.offset,N=tQ(w,dxe);new lp(i,this.floaterRef,{placement:g,modifiers:br({arrow:br({enabled:!h,element:this.arrowRef},S),flip:br({enabled:!c,behavior:y},k),offset:br({offset:"0, ".concat(m,"px")},j)},N),onCreate:function(_){var A;if(s.popper=_,!((A=s.floaterRef)!==null&&A!==void 0&&A.isConnected)){s.setState({needsUpdate:!0});return}d(_,"floater"),s._isMounted&&s.setState({currentPlacement:_.placement,status:On.IDLE}),g!==_.placement&&setTimeout(function(){_.instance.update()},1)},onUpdate:function(_){s.popper=_;var A=s.state.currentPlacement;s._isMounted&&_.placement!==A&&s.setState({currentPlacement:_.placement})}})}if(a){var T=_e.undefined(x.offset)?0:x.offset;new lp(this.target,this.wrapperRef,{placement:x.placement||g,modifiers:{arrow:{enabled:!1},offset:{offset:"0, ".concat(T,"px")},flip:{enabled:!1}},onCreate:function(_){s.wrapperPopper=_,s._isMounted&&s.setState({statusWrapper:On.IDLE}),d(_,"wrapper"),g!==_.placement&&setTimeout(function(){_.instance.update()},1)}})}}},{key:"rebuildPopper",value:function(){var s=this;this.floaterRefInterval=setInterval(function(){var i;(i=s.floaterRef)!==null&&i!==void 0&&i.isConnected&&(clearInterval(s.floaterRefInterval),s.setState({needsUpdate:!1}),s.initPopper())},50)}},{key:"changeWrapperPosition",value:function(s){var i=s.target,a=s.wrapperOptions;this.setState({positionWrapper:a.position&&!!i})}},{key:"toggle",value:function(s){var i=this.state.status,a=i===On.OPEN?On.CLOSING:On.OPENING;_e.undefined(s)||(a=s),this.setState({status:a})}},{key:"debug",get:function(){var s=this.props.debug;return s||vo()&&"ReactFloaterDebug"in window&&!!window.ReactFloaterDebug}},{key:"event",get:function(){var s=this.props,i=s.disableHoverToClick,a=s.event;return a==="hover"&&SS()&&!i?"click":a}},{key:"options",get:function(){var s=this.props.options;return Va(Zge,s||{})}},{key:"styles",get:function(){var s=this,i=this.state,a=i.status,l=i.positionWrapper,c=i.statusWrapper,d=this.props.styles,h=Va(uxe(d),d);if(l){var m;[On.IDLE].indexOf(a)===-1||[On.IDLE].indexOf(c)===-1?m=h.wrapperPosition:m=this.wrapperPopper.styles,h.wrapper=br(br({},h.wrapper),m)}if(this.target){var g=window.getComputedStyle(this.target);this.wrapperStyles?h.wrapper=br(br({},h.wrapper),this.wrapperStyles):["relative","static"].indexOf(g.position)===-1&&(this.wrapperStyles={},l||(hxe.forEach(function(x){s.wrapperStyles[x]=g[x]}),h.wrapper=br(br({},h.wrapper),this.wrapperStyles),this.target.style.position="relative",this.target.style.top="auto",this.target.style.right="auto",this.target.style.bottom="auto",this.target.style.left="auto"))}return h}},{key:"target",get:function(){if(!vo())return null;var s=this.props.target;return s?_e.domElement(s)?s:document.querySelector(s):this.childRef||this.wrapperRef}},{key:"render",value:function(){var s=this.state,i=s.currentPlacement,a=s.positionWrapper,l=s.status,c=this.props,d=c.children,h=c.component,m=c.content,g=c.disableAnimation,x=c.footer,y=c.hideArrow,w=c.id,S=c.open,k=c.showCloseButton,j=c.style,N=c.target,T=c.title,E=ae.createElement(lQ,{handleClick:this.handleClick,handleMouseEnter:this.handleMouseEnter,handleMouseLeave:this.handleMouseLeave,setChildRef:this.setChildRef,setWrapperRef:this.setWrapperRef,style:j,styles:this.styles.wrapper},d),_={};return a?_.wrapperInPortal=E:_.wrapperAsChildren=E,ae.createElement("span",null,ae.createElement(rQ,{hasChildren:!!d,id:w,placement:i,setRef:this.setFloaterRef,target:N,zIndex:this.styles.options.zIndex},ae.createElement(oQ,{component:h,content:m,disableAnimation:g,footer:x,handleClick:this.handleClick,hideArrow:y||i==="center",open:S,placement:i,positionWrapper:a,setArrowRef:this.setArrowRef,setFloaterRef:this.setFloaterRef,showCloseButton:k,status:l,styles:this.styles,title:T}),_.wrapperInPortal),_.wrapperAsChildren)}}]),n})(ae.Component);qs(X6,"propTypes",{autoOpen:Ge.bool,callback:Ge.func,children:Ge.node,component:UA(Ge.oneOfType([Ge.func,Ge.element]),function(t){return!t.content}),content:UA(Ge.node,function(t){return!t.component}),debug:Ge.bool,disableAnimation:Ge.bool,disableFlip:Ge.bool,disableHoverToClick:Ge.bool,event:Ge.oneOf(["hover","click"]),eventDelay:Ge.number,footer:Ge.node,getPopper:Ge.func,hideArrow:Ge.bool,id:Ge.oneOfType([Ge.string,Ge.number]),offset:Ge.number,open:Ge.bool,options:Ge.object,placement:Ge.oneOf(["top","top-start","top-end","bottom","bottom-start","bottom-end","left","left-start","left-end","right","right-start","right-end","auto","center"]),showCloseButton:Ge.bool,style:Ge.object,styles:Ge.object,target:Ge.oneOfType([Ge.object,Ge.string]),title:Ge.node,wrapperOptions:Ge.shape({offset:Ge.number,placement:Ge.oneOf(["top","top-start","top-end","bottom","bottom-start","bottom-end","left","left-start","left-end","right","right-start","right-end","auto"]),position:Ge.bool})});qs(X6,"defaultProps",{autoOpen:!1,callback:WA,debug:!1,disableAnimation:!1,disableFlip:!1,disableHoverToClick:!1,event:"click",eventDelay:.4,getPopper:WA,hideArrow:!1,offset:15,placement:"bottom",showCloseButton:!1,styles:{},target:null,wrapperOptions:{position:!1}});var fxe=Object.defineProperty,mxe=(t,e,n)=>e in t?fxe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,gt=(t,e,n)=>mxe(t,typeof e!="symbol"?e+"":e,n),Qn={INIT:"init",START:"start",STOP:"stop",RESET:"reset",PREV:"prev",NEXT:"next",GO:"go",CLOSE:"close",SKIP:"skip",UPDATE:"update"},Qa={TOUR_START:"tour:start",STEP_BEFORE:"step:before",BEACON:"beacon",TOOLTIP:"tooltip",STEP_AFTER:"step:after",TOUR_END:"tour:end",TOUR_STATUS:"tour:status",TARGET_NOT_FOUND:"error:target_not_found"},Qt={INIT:"init",READY:"ready",BEACON:"beacon",TOOLTIP:"tooltip",COMPLETE:"complete",ERROR:"error"},mn={IDLE:"idle",READY:"ready",WAITING:"waiting",RUNNING:"running",PAUSED:"paused",SKIPPED:"skipped",FINISHED:"finished"};function Ic(){var t;return!!(typeof window<"u"&&((t=window.document)!=null&&t.createElement))}function cQ(t){return t?t.getBoundingClientRect():null}function pxe(t=!1){const{body:e,documentElement:n}=document;if(!e||!n)return 0;if(t){const r=[e.scrollHeight,e.offsetHeight,n.clientHeight,n.scrollHeight,n.offsetHeight].sort((i,a)=>i-a),s=Math.floor(r.length/2);return r.length%2===0?(r[s-1]+r[s])/2:r[s]}return Math.max(e.scrollHeight,e.offsetHeight,n.clientHeight,n.scrollHeight,n.offsetHeight)}function Ml(t){if(typeof t=="string")try{return document.querySelector(t)}catch{return null}return t}function gxe(t){return!t||t.nodeType!==1?null:getComputedStyle(t)}function cp(t,e,n){if(!t)return Uu();const r=IH(t);if(r){if(r.isSameNode(Uu()))return n?document:Uu();if(!(r.scrollHeight>r.offsetHeight)&&!e)return r.style.overflow="initial",Uu()}return r}function _b(t,e){if(!t)return!1;const n=cp(t,e);return n?!n.isSameNode(Uu()):!1}function xxe(t){return t.offsetParent!==document.body}function df(t,e="fixed"){if(!t||!(t instanceof HTMLElement))return!1;const{nodeName:n}=t,r=gxe(t);return n==="BODY"||n==="HTML"?!1:r&&r.position===e?!0:t.parentNode?df(t.parentNode,e):!1}function vxe(t){var e;if(!t)return!1;let n=t;for(;n&&n!==document.body;){if(n instanceof HTMLElement){const{display:r,visibility:s}=getComputedStyle(n);if(r==="none"||s==="hidden")return!1}n=(e=n.parentElement)!=null?e:null}return!0}function yxe(t,e,n){var r,s,i;const a=cQ(t),l=cp(t,n),c=_b(t,n),d=df(t);let h=0,m=(r=a?.top)!=null?r:0;if(c&&d){const g=(s=t?.offsetTop)!=null?s:0,x=(i=l?.scrollTop)!=null?i:0;m=g-x}else l instanceof HTMLElement&&(h=l.scrollTop,!c&&!df(t)&&(m+=h),l.isSameNode(Uu())||(m+=Uu().scrollTop));return Math.floor(m-e)}function bxe(t,e,n){var r;if(!t)return 0;const{offsetTop:s=0,scrollTop:i=0}=(r=IH(t))!=null?r:{};let a=t.getBoundingClientRect().top+i;s&&(_b(t,n)||xxe(t))&&(a-=s);const l=Math.floor(a-e);return l<0?0:l}function Uu(){var t;return(t=document.scrollingElement)!=null?t:document.documentElement}function wxe(t,e){const{duration:n,element:r}=e;return new Promise((s,i)=>{const{scrollTop:a}=r,l=t>a?t-a:a-t;Fpe.top(r,t,{duration:l<100?50:n},c=>c&&c.message!=="Element already at target scroll position"?i(c):s())})}var Gm=pa.createPortal!==void 0;function uQ(t=navigator.userAgent){let e=t;return typeof window>"u"?e="node":document.documentMode?e="ie":/Edge/.test(t)?e="edge":window.opera||t.includes(" OPR/")?e="opera":typeof window.InstallTrigger<"u"?e="firefox":window.chrome?e="chrome":/(Version\/([\d._]+).*Safari|CriOS|FxiOS| Mobile\/)/.test(t)&&(e="safari"),e}function bv(t){return Object.prototype.toString.call(t).slice(8,-1).toLowerCase()}function yo(t,e={}){const{defaultValue:n,step:r,steps:s}=e;let i=AA(t);if(i)(i.includes("{step}")||i.includes("{steps}"))&&r&&s&&(i=i.replace("{step}",r.toString()).replace("{steps}",s.toString()));else if(b.isValidElement(t)&&!Object.values(t.props).length&&bv(t.type)==="function"){const a=t.type({});i=yo(a,e)}else i=AA(n);return i}function Sxe(t,e){return!ft.plainObject(t)||!ft.array(e)?!1:Object.keys(t).every(n=>e.includes(n))}function kxe(t){const e=/^#?([\da-f])([\da-f])([\da-f])$/i,n=t.replace(e,(s,i,a,l)=>i+i+a+a+l+l),r=/^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i.exec(n);return r?[parseInt(r[1],16),parseInt(r[2],16),parseInt(r[3],16)]:[]}function GA(t){return t.disableBeacon||t.placement==="center"}function XA(){return!["chrome","safari","firefox","opera"].includes(uQ())}function hd({data:t,debug:e=!1,title:n,warn:r=!1}){const s=r?console.warn||console.error:console.log;e&&(n&&t?(console.groupCollapsed(`%creact-joyride: ${n}`,"color: #ff0044; font-weight: bold; font-size: 12px;"),Array.isArray(t)?t.forEach(i=>{ft.plainObject(i)&&i.key?s.apply(console,[i.key,i.value]):s.apply(console,[i])}):s.apply(console,[t]),console.groupEnd()):console.error("Missing title or data props"))}function Oxe(t){return Object.keys(t)}function dQ(t,...e){if(!ft.plainObject(t))throw new TypeError("Expected an object");const n={};for(const r in t)({}).hasOwnProperty.call(t,r)&&(e.includes(r)||(n[r]=t[r]));return n}function jxe(t,...e){if(!ft.plainObject(t))throw new TypeError("Expected an object");if(!e.length)return t;const n={};for(const r in t)({}).hasOwnProperty.call(t,r)&&e.includes(r)&&(n[r]=t[r]);return n}function SO(t,e,n){const r=i=>i.replace("{step}",String(e)).replace("{steps}",String(n));if(bv(t)==="string")return r(t);if(!b.isValidElement(t))return t;const{children:s}=t.props;if(bv(s)==="string"&&s.includes("{step}"))return b.cloneElement(t,{children:r(s)});if(Array.isArray(s))return b.cloneElement(t,{children:s.map(i=>typeof i=="string"?r(i):SO(i,e,n))});if(bv(t.type)==="function"&&!Object.values(t.props).length){const i=t.type({});return SO(i,e,n)}return t}function Nxe(t){const{isFirstStep:e,lifecycle:n,previousLifecycle:r,scrollToFirstStep:s,step:i,target:a}=t;return!i.disableScrolling&&(!e||s||n===Qt.TOOLTIP)&&i.placement!=="center"&&(!i.isFixed||!df(a))&&r!==n&&[Qt.BEACON,Qt.TOOLTIP].includes(n)}var Cxe={options:{preventOverflow:{boundariesElement:"scrollParent"}},wrapperOptions:{offset:-18,position:!0}},hQ={back:"Back",close:"Close",last:"Last",next:"Next",nextLabelWithProgress:"Next (Step {step} of {steps})",open:"Open the dialog",skip:"Skip"},Txe={event:"click",placement:"bottom",offset:10,disableBeacon:!1,disableCloseOnEsc:!1,disableOverlay:!1,disableOverlayClose:!1,disableScrollParentFix:!1,disableScrolling:!1,hideBackButton:!1,hideCloseButton:!1,hideFooter:!1,isFixed:!1,locale:hQ,showProgress:!1,showSkipButton:!1,spotlightClicks:!1,spotlightPadding:10},Exe={continuous:!1,debug:!1,disableCloseOnEsc:!1,disableOverlay:!1,disableOverlayClose:!1,disableScrolling:!1,disableScrollParentFix:!1,getHelpers:void 0,hideBackButton:!1,run:!0,scrollOffset:20,scrollDuration:300,scrollToFirstStep:!1,showSkipButton:!1,showProgress:!1,spotlightClicks:!1,spotlightPadding:10,steps:[]},_xe={arrowColor:"#fff",backgroundColor:"#fff",beaconSize:36,overlayColor:"rgba(0, 0, 0, 0.5)",primaryColor:"#f04",spotlightShadow:"0 0 15px rgba(0, 0, 0, 0.5)",textColor:"#333",width:380,zIndex:100},Xm={backgroundColor:"transparent",border:0,borderRadius:0,color:"#555",cursor:"pointer",fontSize:16,lineHeight:1,padding:8,WebkitAppearance:"none"},YA={borderRadius:4,position:"absolute"};function Axe(t,e){var n,r,s,i,a;const{floaterProps:l,styles:c}=t,d=Va((n=e.floaterProps)!=null?n:{},l??{}),h=Va(c??{},(r=e.styles)!=null?r:{}),m=Va(_xe,h.options||{}),g=e.placement==="center"||e.disableBeacon;let{width:x}=m;window.innerWidth>480&&(x=380),"width"in m&&(x=typeof m.width=="number"&&window.innerWidthfQ(n,e)):(hd({title:"validateSteps",data:"steps must be an array",warn:!0,debug:e}),!1)}var mQ={action:"init",controlled:!1,index:0,lifecycle:Qt.INIT,origin:null,size:0,status:mn.IDLE},ZA=Oxe(dQ(mQ,"controlled","size")),Rxe=class{constructor(t){gt(this,"beaconPopper"),gt(this,"tooltipPopper"),gt(this,"data",new Map),gt(this,"listener"),gt(this,"store",new Map),gt(this,"addListener",s=>{this.listener=s}),gt(this,"setSteps",s=>{const{size:i,status:a}=this.getState(),l={size:s.length,status:a};this.data.set("steps",s),a===mn.WAITING&&!i&&s.length&&(l.status=mn.RUNNING),this.setState(l)}),gt(this,"getPopper",s=>s==="beacon"?this.beaconPopper:this.tooltipPopper),gt(this,"setPopper",(s,i)=>{s==="beacon"?this.beaconPopper=i:this.tooltipPopper=i}),gt(this,"cleanupPoppers",()=>{this.beaconPopper=null,this.tooltipPopper=null}),gt(this,"close",(s=null)=>{const{index:i,status:a}=this.getState();a===mn.RUNNING&&this.setState({...this.getNextState({action:Qn.CLOSE,index:i+1,origin:s})})}),gt(this,"go",s=>{const{controlled:i,status:a}=this.getState();if(i||a!==mn.RUNNING)return;const l=this.getSteps()[s];this.setState({...this.getNextState({action:Qn.GO,index:s}),status:l?a:mn.FINISHED})}),gt(this,"info",()=>this.getState()),gt(this,"next",()=>{const{index:s,status:i}=this.getState();i===mn.RUNNING&&this.setState(this.getNextState({action:Qn.NEXT,index:s+1}))}),gt(this,"open",()=>{const{status:s}=this.getState();s===mn.RUNNING&&this.setState({...this.getNextState({action:Qn.UPDATE,lifecycle:Qt.TOOLTIP})})}),gt(this,"prev",()=>{const{index:s,status:i}=this.getState();i===mn.RUNNING&&this.setState({...this.getNextState({action:Qn.PREV,index:s-1})})}),gt(this,"reset",(s=!1)=>{const{controlled:i}=this.getState();i||this.setState({...this.getNextState({action:Qn.RESET,index:0}),status:s?mn.RUNNING:mn.READY})}),gt(this,"skip",()=>{const{status:s}=this.getState();s===mn.RUNNING&&this.setState({action:Qn.SKIP,lifecycle:Qt.INIT,status:mn.SKIPPED})}),gt(this,"start",s=>{const{index:i,size:a}=this.getState();this.setState({...this.getNextState({action:Qn.START,index:ft.number(s)?s:i},!0),status:a?mn.RUNNING:mn.WAITING})}),gt(this,"stop",(s=!1)=>{const{index:i,status:a}=this.getState();[mn.FINISHED,mn.SKIPPED].includes(a)||this.setState({...this.getNextState({action:Qn.STOP,index:i+(s?1:0)}),status:mn.PAUSED})}),gt(this,"update",s=>{var i,a;if(!Sxe(s,ZA))throw new Error(`State is not valid. Valid keys: ${ZA.join(", ")}`);this.setState({...this.getNextState({...this.getState(),...s,action:(i=s.action)!=null?i:Qn.UPDATE,origin:(a=s.origin)!=null?a:null},!0)})});const{continuous:e=!1,stepIndex:n,steps:r=[]}=t??{};this.setState({action:Qn.INIT,controlled:ft.number(n),continuous:e,index:ft.number(n)?n:0,lifecycle:Qt.INIT,origin:null,status:r.length?mn.READY:mn.IDLE},!0),this.beaconPopper=null,this.tooltipPopper=null,this.listener=null,this.setSteps(r)}getState(){return this.store.size?{action:this.store.get("action")||"",controlled:this.store.get("controlled")||!1,index:parseInt(this.store.get("index"),10),lifecycle:this.store.get("lifecycle")||"",origin:this.store.get("origin")||null,size:this.store.get("size")||0,status:this.store.get("status")||""}:{...mQ}}getNextState(t,e=!1){var n,r,s,i,a;const{action:l,controlled:c,index:d,size:h,status:m}=this.getState(),g=ft.number(t.index)?t.index:d,x=c&&!e?d:Math.min(Math.max(g,0),h);return{action:(n=t.action)!=null?n:l,controlled:c,index:x,lifecycle:(r=t.lifecycle)!=null?r:Qt.INIT,origin:(s=t.origin)!=null?s:null,size:(i=t.size)!=null?i:h,status:x===h?mn.FINISHED:(a=t.status)!=null?a:m}}getSteps(){const t=this.data.get("steps");return Array.isArray(t)?t:[]}hasUpdatedState(t){const e=JSON.stringify(t),n=JSON.stringify(this.getState());return e!==n}setState(t,e=!1){const n=this.getState(),{action:r,index:s,lifecycle:i,origin:a=null,size:l,status:c}={...n,...t};this.store.set("action",r),this.store.set("index",s),this.store.set("lifecycle",i),this.store.set("origin",a),this.store.set("size",l),this.store.set("status",c),e&&(this.store.set("controlled",t.controlled),this.store.set("continuous",t.continuous)),this.listener&&this.hasUpdatedState(n)&&this.listener(this.getState())}getHelpers(){return{close:this.close,go:this.go,info:this.info,next:this.next,open:this.open,prev:this.prev,reset:this.reset,skip:this.skip}}};function Dxe(t){return new Rxe(t)}function Pxe({styles:t}){return b.createElement("div",{key:"JoyrideSpotlight",className:"react-joyride__spotlight","data-test-id":"spotlight",style:t})}var zxe=Pxe,Ixe=class extends b.Component{constructor(){super(...arguments),gt(this,"isActive",!1),gt(this,"resizeTimeout"),gt(this,"scrollTimeout"),gt(this,"scrollParent"),gt(this,"state",{isScrolling:!1,mouseOverSpotlight:!1,showSpotlight:!0}),gt(this,"hideSpotlight",()=>{const{continuous:t,disableOverlay:e,lifecycle:n}=this.props,r=[Qt.INIT,Qt.BEACON,Qt.COMPLETE,Qt.ERROR];return e||(t?r.includes(n):n!==Qt.TOOLTIP)}),gt(this,"handleMouseMove",t=>{const{mouseOverSpotlight:e}=this.state,{height:n,left:r,position:s,top:i,width:a}=this.spotlightStyles,l=s==="fixed"?t.clientY:t.pageY,c=s==="fixed"?t.clientX:t.pageX,d=l>=i&&l<=i+n,m=c>=r&&c<=r+a&&d;m!==e&&this.updateState({mouseOverSpotlight:m})}),gt(this,"handleScroll",()=>{const{target:t}=this.props,e=Ml(t);if(this.scrollParent!==document){const{isScrolling:n}=this.state;n||this.updateState({isScrolling:!0,showSpotlight:!1}),clearTimeout(this.scrollTimeout),this.scrollTimeout=window.setTimeout(()=>{this.updateState({isScrolling:!1,showSpotlight:!0})},50)}else df(e,"sticky")&&this.updateState({})}),gt(this,"handleResize",()=>{clearTimeout(this.resizeTimeout),this.resizeTimeout=window.setTimeout(()=>{this.isActive&&this.forceUpdate()},100)})}componentDidMount(){const{debug:t,disableScrolling:e,disableScrollParentFix:n=!1,target:r}=this.props,s=Ml(r);this.scrollParent=cp(s??document.body,n,!0),this.isActive=!0,window.addEventListener("resize",this.handleResize)}componentDidUpdate(t){var e;const{disableScrollParentFix:n,lifecycle:r,spotlightClicks:s,target:i}=this.props,{changed:a}=uy(t,this.props);if(a("target")||a("disableScrollParentFix")){const l=Ml(i);this.scrollParent=cp(l??document.body,n,!0)}a("lifecycle",Qt.TOOLTIP)&&((e=this.scrollParent)==null||e.addEventListener("scroll",this.handleScroll,{passive:!0}),setTimeout(()=>{const{isScrolling:l}=this.state;l||this.updateState({showSpotlight:!0})},100)),(a("spotlightClicks")||a("disableOverlay")||a("lifecycle"))&&(s&&r===Qt.TOOLTIP?window.addEventListener("mousemove",this.handleMouseMove,!1):r!==Qt.TOOLTIP&&window.removeEventListener("mousemove",this.handleMouseMove))}componentWillUnmount(){var t;this.isActive=!1,window.removeEventListener("mousemove",this.handleMouseMove),window.removeEventListener("resize",this.handleResize),clearTimeout(this.resizeTimeout),clearTimeout(this.scrollTimeout),(t=this.scrollParent)==null||t.removeEventListener("scroll",this.handleScroll)}get overlayStyles(){const{mouseOverSpotlight:t}=this.state,{disableOverlayClose:e,placement:n,styles:r}=this.props;let s=r.overlay;return XA()&&(s=n==="center"?r.overlayLegacyCenter:r.overlayLegacy),{cursor:e?"default":"pointer",height:pxe(),pointerEvents:t?"none":"auto",...s}}get spotlightStyles(){var t,e,n;const{showSpotlight:r}=this.state,{disableScrollParentFix:s=!1,spotlightClicks:i,spotlightPadding:a=0,styles:l,target:c}=this.props,d=Ml(c),h=cQ(d),m=df(d),g=yxe(d,a,s);return{...XA()?l.spotlightLegacy:l.spotlight,height:Math.round(((t=h?.height)!=null?t:0)+a*2),left:Math.round(((e=h?.left)!=null?e:0)-a),opacity:r?1:0,pointerEvents:i?"none":"auto",position:m?"fixed":"absolute",top:g,transition:"opacity 0.2s",width:Math.round(((n=h?.width)!=null?n:0)+a*2)}}updateState(t){this.isActive&&this.setState(e=>({...e,...t}))}render(){const{showSpotlight:t}=this.state,{onClickOverlay:e,placement:n}=this.props,{hideSpotlight:r,overlayStyles:s,spotlightStyles:i}=this;if(r())return null;let a=n!=="center"&&t&&b.createElement(zxe,{styles:i});if(uQ()==="safari"){const{mixBlendMode:l,zIndex:c,...d}=s;a=b.createElement("div",{style:{...d}},a),delete s.backgroundColor}return b.createElement("div",{className:"react-joyride__overlay","data-test-id":"overlay",onClick:e,role:"presentation",style:s},a)}},Lxe=class extends b.Component{constructor(){super(...arguments),gt(this,"node",null)}componentDidMount(){const{id:t}=this.props;Ic()&&(this.node=document.createElement("div"),this.node.id=t,document.body.appendChild(this.node),Gm||this.renderReact15())}componentDidUpdate(){Ic()&&(Gm||this.renderReact15())}componentWillUnmount(){!Ic()||!this.node||(Gm||pa.unmountComponentAtNode(this.node),this.node.parentNode===document.body&&(document.body.removeChild(this.node),this.node=null))}renderReact15(){if(!Ic())return;const{children:t}=this.props;this.node&&pa.unstable_renderSubtreeIntoContainer(this,t,this.node)}renderReact16(){if(!Ic()||!Gm)return null;const{children:t}=this.props;return this.node?pa.createPortal(t,this.node):null}render(){return Gm?this.renderReact16():null}},Bxe=class{constructor(t,e){if(gt(this,"element"),gt(this,"options"),gt(this,"canBeTabbed",n=>{const{tabIndex:r}=n;return r===null||r<0?!1:this.canHaveFocus(n)}),gt(this,"canHaveFocus",n=>{const r=/input|select|textarea|button|object/,s=n.nodeName.toLowerCase();return(r.test(s)&&!n.getAttribute("disabled")||s==="a"&&!!n.getAttribute("href"))&&this.isVisible(n)}),gt(this,"findValidTabElements",()=>[].slice.call(this.element.querySelectorAll("*"),0).filter(this.canBeTabbed)),gt(this,"handleKeyDown",n=>{const{code:r="Tab"}=this.options;n.code===r&&this.interceptTab(n)}),gt(this,"interceptTab",n=>{n.preventDefault();const r=this.findValidTabElements(),{shiftKey:s}=n;if(!r.length)return;let i=document.activeElement?r.indexOf(document.activeElement):0;i===-1||!s&&i+1===r.length?i=0:s&&i===0?i=r.length-1:i+=s?-1:1,r[i].focus()}),gt(this,"isHidden",n=>{const r=n.offsetWidth<=0&&n.offsetHeight<=0,s=window.getComputedStyle(n);return r&&!n.innerHTML?!0:r&&s.getPropertyValue("overflow")!=="visible"||s.getPropertyValue("display")==="none"}),gt(this,"isVisible",n=>{let r=n;for(;r;)if(r instanceof HTMLElement){if(r===document.body)break;if(this.isHidden(r))return!1;r=r.parentNode}return!0}),gt(this,"removeScope",()=>{window.removeEventListener("keydown",this.handleKeyDown)}),gt(this,"checkFocus",n=>{document.activeElement!==n&&(n.focus(),window.requestAnimationFrame(()=>this.checkFocus(n)))}),gt(this,"setFocus",()=>{const{selector:n}=this.options;if(!n)return;const r=this.element.querySelector(n);r&&window.requestAnimationFrame(()=>this.checkFocus(r))}),!(t instanceof HTMLElement))throw new TypeError("Invalid parameter: element must be an HTMLElement");this.element=t,this.options=e,window.addEventListener("keydown",this.handleKeyDown,!1),this.setFocus()}},Fxe=class extends b.Component{constructor(t){if(super(t),gt(this,"beacon",null),gt(this,"setBeaconRef",s=>{this.beacon=s}),t.beaconComponent)return;const e=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.id="joyride-beacon-animation",t.nonce&&n.setAttribute("nonce",t.nonce),n.appendChild(document.createTextNode(` @keyframes joyride-beacon-inner { 20% { opacity: 0.9; @@ -85,45 +85,45 @@ reaction = "${T.reaction}"`;return o.jsxs(Po,{children:[o.jsx(zo,{asChild:!0,chi transform: scale(1); } } - `)),e.appendChild(n)}componentDidMount(){const{shouldFocus:t}=this.props;setTimeout(()=>{ft.domElement(this.beacon)&&t&&this.beacon.focus()},0)}componentWillUnmount(){const t=document.getElementById("joyride-beacon-animation");t?.parentNode&&t.parentNode.removeChild(t)}render(){const{beaconComponent:t,continuous:e,index:n,isLastStep:r,locale:s,onClickOrHover:i,size:a,step:l,styles:c}=this.props,d=yo(s.open),h={"aria-label":d,onClick:i,onMouseEnter:i,ref:this.setBeaconRef,title:d};let m;if(t){const g=t;m=b.createElement(g,{continuous:e,index:n,isLastStep:r,size:a,step:l,...h})}else m=b.createElement("button",{key:"JoyrideBeacon",className:"react-joyride__beacon","data-test-id":"button-beacon",style:c.beacon,type:"button",...h},b.createElement("span",{style:c.beaconInner}),b.createElement("span",{style:c.beaconOuter}));return m}};function Sxe({styles:t,...e}){const{color:n,height:r,width:s,...i}=t;return ae.createElement("button",{style:i,type:"button",...e},ae.createElement("svg",{height:typeof r=="number"?`${r}px`:r,preserveAspectRatio:"xMidYMid",version:"1.1",viewBox:"0 0 18 18",width:typeof s=="number"?`${s}px`:s,xmlns:"http://www.w3.org/2000/svg"},ae.createElement("g",null,ae.createElement("path",{d:"M8.13911129,9.00268191 L0.171521827,17.0258467 C-0.0498027049,17.248715 -0.0498027049,17.6098394 0.171521827,17.8327545 C0.28204354,17.9443526 0.427188206,17.9998706 0.572051765,17.9998706 C0.71714958,17.9998706 0.862013139,17.9443526 0.972581703,17.8327545 L9.0000937,9.74924618 L17.0276057,17.8327545 C17.1384085,17.9443526 17.2832721,17.9998706 17.4281356,17.9998706 C17.5729992,17.9998706 17.718097,17.9443526 17.8286656,17.8327545 C18.0499901,17.6098862 18.0499901,17.2487618 17.8286656,17.0258467 L9.86135722,9.00268191 L17.8340066,0.973848225 C18.0553311,0.750979934 18.0553311,0.389855532 17.8340066,0.16694039 C17.6126821,-0.0556467968 17.254037,-0.0556467968 17.0329467,0.16694039 L9.00042166,8.25611765 L0.967006424,0.167268345 C0.745681892,-0.0553188426 0.387317931,-0.0553188426 0.165993399,0.167268345 C-0.0553311331,0.390136635 -0.0553311331,0.751261038 0.165993399,0.974176179 L8.13920499,9.00268191 L8.13911129,9.00268191 Z",fill:n}))))}var kxe=Sxe;function Oxe(t){const{backProps:e,closeProps:n,index:r,isLastStep:s,primaryProps:i,skipProps:a,step:l,tooltipProps:c}=t,{content:d,hideBackButton:h,hideCloseButton:m,hideFooter:g,showSkipButton:x,styles:y,title:w}=l,S={};return S.primary=b.createElement("button",{"data-test-id":"button-primary",style:y.buttonNext,type:"button",...i}),x&&!s&&(S.skip=b.createElement("button",{"aria-live":"off","data-test-id":"button-skip",style:y.buttonSkip,type:"button",...a})),!h&&r>0&&(S.back=b.createElement("button",{"data-test-id":"button-back",style:y.buttonBack,type:"button",...e})),S.close=!m&&b.createElement(kxe,{"data-test-id":"button-close",styles:y.buttonClose,...n}),b.createElement("div",{key:"JoyrideTooltip","aria-label":yo(w??d),className:"react-joyride__tooltip",style:y.tooltip,...c},b.createElement("div",{style:y.tooltipContainer},w&&b.createElement("h1",{"aria-label":yo(w),style:y.tooltipTitle},w),b.createElement("div",{style:y.tooltipContent},d)),!g&&b.createElement("div",{style:y.tooltipFooter},b.createElement("div",{style:y.tooltipFooterSpacer},S.skip),S.back,S.primary),S.close)}var jxe=Oxe,Nxe=class extends b.Component{constructor(){super(...arguments),gt(this,"handleClickBack",t=>{t.preventDefault();const{helpers:e}=this.props;e.prev()}),gt(this,"handleClickClose",t=>{t.preventDefault();const{helpers:e}=this.props;e.close("button_close")}),gt(this,"handleClickPrimary",t=>{t.preventDefault();const{continuous:e,helpers:n}=this.props;if(!e){n.close("button_primary");return}n.next()}),gt(this,"handleClickSkip",t=>{t.preventDefault();const{helpers:e}=this.props;e.skip()}),gt(this,"getElementsProps",()=>{const{continuous:t,index:e,isLastStep:n,setTooltipRef:r,size:s,step:i}=this.props,{back:a,close:l,last:c,next:d,nextLabelWithProgress:h,skip:m}=i.locale,g=yo(a),x=yo(l),y=yo(c),w=yo(d),S=yo(m);let k=l,j=x;if(t){if(k=d,j=w,i.showProgress&&!n){const N=yo(h,{step:e+1,steps:s});k=gO(h,e+1,s),j=N}n&&(k=c,j=y)}return{backProps:{"aria-label":g,children:a,"data-action":"back",onClick:this.handleClickBack,role:"button",title:g},closeProps:{"aria-label":x,children:l,"data-action":"close",onClick:this.handleClickClose,role:"button",title:x},primaryProps:{"aria-label":j,children:k,"data-action":"primary",onClick:this.handleClickPrimary,role:"button",title:j},skipProps:{"aria-label":S,children:m,"data-action":"skip",onClick:this.handleClickSkip,role:"button",title:S},tooltipProps:{"aria-modal":!0,ref:r,role:"alertdialog"}}})}render(){const{continuous:t,index:e,isLastStep:n,setTooltipRef:r,size:s,step:i}=this.props,{beaconComponent:a,tooltipComponent:l,...c}=i;let d;if(l){const h={...this.getElementsProps(),continuous:t,index:e,isLastStep:n,size:s,step:c,setTooltipRef:r},m=l;d=b.createElement(m,{...h})}else d=b.createElement(jxe,{...this.getElementsProps(),continuous:t,index:e,isLastStep:n,size:s,step:i});return d}},Cxe=class extends b.Component{constructor(){super(...arguments),gt(this,"scope",null),gt(this,"tooltip",null),gt(this,"handleClickHoverBeacon",t=>{const{step:e,store:n}=this.props;t.type==="mouseenter"&&e.event!=="hover"||n.update({lifecycle:Qt.TOOLTIP})}),gt(this,"setTooltipRef",t=>{this.tooltip=t}),gt(this,"setPopper",(t,e)=>{var n;const{action:r,lifecycle:s,step:i,store:a}=this.props;e==="wrapper"?a.setPopper("beacon",t):a.setPopper("tooltip",t),a.getPopper("beacon")&&(a.getPopper("tooltip")||i.placement==="center")&&s===Qt.INIT&&a.update({action:r,lifecycle:Qt.READY}),(n=i.floaterProps)!=null&&n.getPopper&&i.floaterProps.getPopper(t,e)}),gt(this,"renderTooltip",t=>{const{continuous:e,helpers:n,index:r,size:s,step:i}=this.props;return b.createElement(Nxe,{continuous:e,helpers:n,index:r,isLastStep:r+1===s,setTooltipRef:this.setTooltipRef,size:s,step:i,...t})})}componentDidMount(){const{debug:t,index:e}=this.props;hd({title:`step:${e}`,data:[{key:"props",value:this.props}],debug:t})}componentDidUpdate(t){var e;const{action:n,callback:r,continuous:s,controlled:i,debug:a,helpers:l,index:c,lifecycle:d,shouldScroll:h,status:m,step:g,store:x}=this.props,{changed:y,changedFrom:w}=iy(t,this.props),S=l.info(),k=s&&n!==Qn.CLOSE&&(c>0||n===Qn.PREV),j=y("action")||y("index")||y("lifecycle")||y("status"),N=w("lifecycle",[Qt.TOOLTIP,Qt.INIT],Qt.INIT),T=y("action",[Qn.NEXT,Qn.PREV,Qn.SKIP,Qn.CLOSE]),E=i&&c===t.index;if(T&&(N||E)&&r({...S,index:t.index,lifecycle:Qt.COMPLETE,step:t.step,type:Qa.STEP_AFTER}),g.placement==="center"&&m===mn.RUNNING&&y("index")&&n!==Qn.START&&d===Qt.INIT&&x.update({lifecycle:Qt.READY}),j){const _=Ml(g.target),M=!!_;M&&Jge(_)?(w("status",mn.READY,mn.RUNNING)||w("lifecycle",Qt.INIT,Qt.READY))&&r({...S,step:g,type:Qa.STEP_BEFORE}):(console.warn(M?"Target not visible":"Target not mounted",g),r({...S,type:Qa.TARGET_NOT_FOUND,step:g}),i||x.update({index:c+(n===Qn.PREV?-1:1)}))}w("lifecycle",Qt.INIT,Qt.READY)&&x.update({lifecycle:$M(g)||k?Qt.TOOLTIP:Qt.BEACON}),y("index")&&hd({title:`step:${d}`,data:[{key:"props",value:this.props}],debug:a}),y("lifecycle",Qt.BEACON)&&r({...S,step:g,type:Qa.BEACON}),y("lifecycle",Qt.TOOLTIP)&&(r({...S,step:g,type:Qa.TOOLTIP}),h&&this.tooltip&&(this.scope=new bxe(this.tooltip,{selector:"[data-action=primary]"}),this.scope.setFocus())),w("lifecycle",[Qt.TOOLTIP,Qt.INIT],Qt.INIT)&&((e=this.scope)==null||e.removeScope(),x.cleanupPoppers())}componentWillUnmount(){var t;(t=this.scope)==null||t.removeScope()}get open(){const{lifecycle:t,step:e}=this.props;return $M(e)||t===Qt.TOOLTIP}render(){const{continuous:t,debug:e,index:n,nonce:r,shouldScroll:s,size:i,step:a}=this.props,l=Ml(a.target);return!oQ(a)||!ft.domElement(l)?null:b.createElement("div",{key:`JoyrideStep-${n}`,className:"react-joyride__step"},b.createElement(V6,{...a.floaterProps,component:this.renderTooltip,debug:e,getPopper:this.setPopper,id:`react-joyride-step-${n}`,open:this.open,placement:a.placement,target:a.target},b.createElement(wxe,{beaconComponent:a.beaconComponent,continuous:t,index:n,isLastStep:n+1===i,locale:a.locale,nonce:r,onClickOrHover:this.handleClickHoverBeacon,shouldFocus:s,size:i,step:a,styles:a.styles})))}},cQ=class extends b.Component{constructor(t){super(t),gt(this,"helpers"),gt(this,"store"),gt(this,"callback",a=>{const{callback:l}=this.props;ft.function(l)&&l(a)}),gt(this,"handleKeyboard",a=>{const{index:l,lifecycle:c}=this.state,{steps:d}=this.props,h=d[l];c===Qt.TOOLTIP&&a.code==="Escape"&&h&&!h.disableCloseOnEsc&&this.store.close("keyboard")}),gt(this,"handleClickOverlay",()=>{const{index:a}=this.state,{steps:l}=this.props;ah(this.props,l[a]).disableOverlayClose||this.helpers.close("overlay")}),gt(this,"syncState",a=>{this.setState(a)});const{debug:e,getHelpers:n,run:r=!0,stepIndex:s}=t;this.store=pxe({...t,controlled:r&&ft.number(s)}),this.helpers=this.store.getHelpers();const{addListener:i}=this.store;hd({title:"init",data:[{key:"props",value:this.props},{key:"state",value:this.state}],debug:e}),i(this.syncState),n&&n(this.helpers),this.state=this.store.getState()}componentDidMount(){if(!zc())return;const{debug:t,disableCloseOnEsc:e,run:n,steps:r}=this.props,{start:s}=this.store;VM(r,t)&&n&&s(),e||document.body.addEventListener("keydown",this.handleKeyboard,{passive:!0})}componentDidUpdate(t,e){if(!zc())return;const{action:n,controlled:r,index:s,status:i}=this.state,{debug:a,run:l,stepIndex:c,steps:d}=this.props,{stepIndex:h,steps:m}=t,{reset:g,setSteps:x,start:y,stop:w,update:S}=this.store,{changed:k}=iy(t,this.props),{changed:j,changedFrom:N}=iy(e,this.state),T=ah(this.props,d[s]),E=!Js(m,d),_=ft.number(c)&&k("stepIndex"),M=Ml(T.target);if(E&&(VM(d,a)?x(d):console.warn("Steps are not valid",d)),k("run")&&(l?y(c):w()),_){let L=ft.number(h)&&h=0?w:0,r===mn.RUNNING&&nxe(w,{element:y,duration:a}).then(()=>{setTimeout(()=>{var j;(j=this.store.getPopper("tooltip"))==null||j.instance.update()},10)})}}render(){if(!zc())return null;const{index:t,lifecycle:e,status:n}=this.state,{continuous:r=!1,debug:s=!1,nonce:i,scrollToFirstStep:a=!1,steps:l}=this.props,c=n===mn.RUNNING,d={};if(c&&l[t]){const h=ah(this.props,l[t]);d.step=b.createElement(Cxe,{...this.state,callback:this.callback,continuous:r,debug:s,helpers:this.helpers,nonce:i,shouldScroll:!h.disableScrolling&&(t!==0||a),step:h,store:this.store}),d.overlay=b.createElement(yxe,{id:"react-joyride-portal"},b.createElement(vxe,{...h,continuous:r,debug:s,lifecycle:e,onClickOverlay:this.handleClickOverlay}))}return b.createElement("div",{className:"react-joyride"},d.step,d.overlay)}};gt(cQ,"defaultProps",uxe);var Txe=cQ;function U6(){const t=b.useContext(CH);if(!t)throw new Error("useTour must be used within a TourProvider");return t}const Exe={options:{zIndex:1e4,primaryColor:"hsl(var(--primary))",textColor:"hsl(var(--foreground))",backgroundColor:"hsl(var(--background))",arrowColor:"hsl(var(--background))",overlayColor:"rgba(0, 0, 0, 0.5)"},tooltip:{borderRadius:"var(--radius)",padding:"1rem"},tooltipContainer:{textAlign:"left"},tooltipTitle:{fontSize:"1rem",fontWeight:600,marginBottom:"0.5rem"},tooltipContent:{fontSize:"0.875rem",padding:"0.5rem 0"},buttonNext:{backgroundColor:"hsl(var(--primary))",color:"hsl(var(--primary-foreground))",borderRadius:"calc(var(--radius) - 2px)",fontSize:"0.875rem",padding:"0.5rem 1rem"},buttonBack:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem",marginRight:"0.5rem"},buttonSkip:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem"},buttonClose:{color:"hsl(var(--muted-foreground))"},spotlight:{borderRadius:"var(--radius)"}},_xe={back:"上一步",close:"关闭",last:"完成",next:"下一步",nextLabelWithProgress:"下一步 ({step}/{steps})",open:"打开对话框",skip:"跳过"};function Mxe(){const{state:t,getCurrentSteps:e,handleJoyrideCallback:n}=U6(),r=e(),[s,i]=b.useState(!1),a=b.useRef(t.stepIndex),l=b.useRef(null);b.useEffect(()=>{a.current!==t.stepIndex&&(i(!1),a.current=t.stepIndex)},[t.stepIndex]),b.useEffect(()=>{if(!t.isRunning||r.length===0){i(!1);return}const h=r[t.stepIndex];if(!h){i(!1);return}const m=h.target;if(m==="body"){i(!0);return}i(!1);const g=setTimeout(()=>{const x=()=>{const k=document.querySelector(m);if(k){const j=k.getBoundingClientRect();if(j.width>0&&j.height>0)return!0}return!1};if(x()){setTimeout(()=>i(!0),100);return}const y=setInterval(()=>{x()&&(clearInterval(y),setTimeout(()=>i(!0),100))},100),w=setTimeout(()=>{clearInterval(y),i(!0)},5e3),S=()=>{clearInterval(y),clearTimeout(w)};l.current=S},150);return()=>{clearTimeout(g),l.current&&(l.current(),l.current=null)}},[t.isRunning,t.stepIndex,r]);const c=b.useRef(null);if(b.useEffect(()=>{let h=document.getElementById("tour-portal-container");return h||(h=document.createElement("div"),h.id="tour-portal-container",h.style.cssText="position: fixed; top: 0; left: 0; z-index: 99999; pointer-events: none;",document.body.appendChild(h)),c.current=h,()=>{}},[]),!t.isRunning||r.length===0||!s)return null;const d=o.jsx(Txe,{steps:r,stepIndex:t.stepIndex,run:t.isRunning,continuous:!0,showSkipButton:!0,showProgress:!0,disableOverlayClose:!0,disableScrolling:!1,disableScrollParentFix:!1,callback:n,styles:Exe,locale:_xe,scrollOffset:80,scrollToFirstStep:!0,floaterProps:{styles:{floater:{zIndex:99999}},disableAnimation:!0}},`tour-step-${t.stepIndex}`);return c.current?pa.createPortal(d,c.current):d}const El="model-assignment-tour",uQ=[{target:"body",content:"本引导旨在帮助你配置模型提供商和对应的模型,并为麦麦的各个组件分配合适的模型。",placement:"center",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="sidebar-model-provider"]',content:'第一步,你需要配置模型提供商。模型提供商决定了你要使用谁家的模型,无论是单一厂商(如 DeepSeek),还是模型平台(如 Siliconflow),都可以在这里进行配置。点击"下一步"进入配置页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-provider-button"]',content:'点击"添加提供商"按钮,开始配置你的模型提供商。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="provider-dialog"]',content:"在这里,你可以选择你想要配置的模型提供商,填写相关信息后保存即可。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-name-input"]',content:"这里的名称是你为这个模型提供商起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-apikey-input"]',content:"这里需要填写你从模型提供商那里获取的 API 密钥,用于验证和调用模型服务。对于不同的提供商,获取 API 密钥的方式可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-url-input"]',content:"这里需要填写模型提供商的 API 访问地址,确保填写正确以便系统能够连接到模型服务。对于不同的提供商,API 地址可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-template-select"]',content:"当然,如果你不知道如何填写这些信息,很多模型提供商在这里都提供了预设的模板供你选择,选择对应的模板后,相关信息会自动填充。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-save-button"]',content:"填写完所有信息后,点击保存按钮,模型提供商就配置完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-cancel-button"]',content:"因为这次咱们什么都没有填写,所以点击取消按钮退出吧。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="sidebar-model-management"]',content:'配置好模型提供商后,接下来我们需要为麦麦添加模型并分配功能。点击"下一步"进入模型管理页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-model-button"]',content:'在为麦麦的组件分配模型之前,首先需要添加你想要分配的模型,点击"添加模型"按钮开始添加。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="model-dialog"]',content:"在这里,你可以选择你之前配置好的模型提供商,然后选择对应的模型来添加。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-name-input"]',content:"这里的模型名称是你为这个模型起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-provider-select"]',content:"在这里选择你之前配置好的模型提供商,这样系统才能知道你要添加哪个提供商的模型。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-identifier-input"]',content:"这里需要填写你想要添加的模型的标识符,不同的模型提供商可能有不同的标识符格式,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-save-button"]',content:"填写完所有信息后,点击保存按钮,模型就添加完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-cancel-button"]',content:"当然,因为这次咱们什么都没有填写,所以直接点击取消按钮退出吧,等你准备好了再来添加模型。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="tasks-tab-trigger"]',content:'最后一步,添加好模型后,切换到"为模型分配功能"标签页,为麦麦的各个组件分配合适的模型。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="task-model-select"]',content:"在这里,你可以为每个组件选择一个或多个合适的模型,选择完成后配置会自动保存。恭喜你完成了模型配置的学习!",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1}],dQ={0:"/config/model",1:"/config/model",2:"/config/modelProvider",3:"/config/modelProvider",4:"/config/modelProvider",5:"/config/modelProvider",6:"/config/modelProvider",7:"/config/modelProvider",8:"/config/modelProvider",9:"/config/modelProvider",10:"/config/modelProvider",11:"/config/model",12:"/config/model",13:"/config/model",14:"/config/model",15:"/config/model",16:"/config/model",17:"/config/model",18:"/config/model",19:"/config/model"},l0=[{id:"siliconflow",name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",client_type:"openai",display_name:"硅基流动 (SiliconFlow)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"deepseek",name:"DeepSeek",base_url:"https://api.deepseek.com",client_type:"openai",display_name:"DeepSeek",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"rinkoai",name:"RinkoAI",base_url:"https://rinkoai.com/v1",client_type:"openai",display_name:"RinkoAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"zhipu",name:"ZhipuAI",base_url:"https://open.bigmodel.cn/api/paas/v4",client_type:"openai",display_name:"智谱 AI (ZhipuAI / GLM)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"moonshot",name:"Moonshot",base_url:"https://api.moonshot.cn/v1",client_type:"openai",display_name:"月之暗面 (Moonshot / Kimi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"doubao",name:"Doubao",base_url:"https://ark.cn-beijing.volces.com/api/v3",client_type:"openai",display_name:"字节豆包 (Doubao)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"alibaba",name:"Alibaba",base_url:"https://dashscope.aliyuncs.com/compatible-mode/v1",client_type:"openai",display_name:"阿里云百炼 (Alibaba Qwen)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"baichuan",name:"Baichuan",base_url:"https://api.baichuan-ai.com/v1",client_type:"openai",display_name:"百川智能 (Baichuan)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"minimax",name:"MiniMax",base_url:"https://api.minimax.chat/v1",client_type:"openai",display_name:"MiniMax (海螺 AI)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"stepfun",name:"StepFun",base_url:"https://api.stepfun.com/v1",client_type:"openai",display_name:"阶跃星辰 (StepFun)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"lingyi",name:"Lingyi",base_url:"https://api.lingyiwanwu.com/v1",client_type:"openai",display_name:"零一万物 (Lingyi / Yi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"openai",name:"OpenAI",base_url:"https://api.openai.com/v1",client_type:"openai",display_name:"OpenAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"xai",name:"xAI",base_url:"https://api.x.ai/v1",client_type:"openai",display_name:"xAI (Grok)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"anthropic",name:"Anthropic",base_url:"https://api.anthropic.com/v1",client_type:"openai",display_name:"Anthropic (Claude)"},{id:"gemini",name:"Gemini",base_url:"https://generativelanguage.googleapis.com/v1beta",client_type:"gemini",display_name:"Google Gemini",modelFetcher:{endpoint:"/models",parser:"gemini"}},{id:"cohere",name:"Cohere",base_url:"https://api.cohere.ai/v1",client_type:"openai",display_name:"Cohere"},{id:"groq",name:"Groq",base_url:"https://api.groq.com/openai/v1",client_type:"openai",display_name:"Groq",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"together",name:"Together AI",base_url:"https://api.together.xyz/v1",client_type:"openai",display_name:"Together AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"fireworks",name:"Fireworks",base_url:"https://api.fireworks.ai/inference/v1",client_type:"openai",display_name:"Fireworks AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"mistral",name:"Mistral",base_url:"https://api.mistral.ai/v1",client_type:"openai",display_name:"Mistral AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"perplexity",name:"Perplexity",base_url:"https://api.perplexity.ai",client_type:"openai",display_name:"Perplexity AI"},{id:"custom",name:"",base_url:"",client_type:"openai",display_name:"自定义"}];function WM(t){return t?t.replace(/\/+$/,"").toLowerCase():""}function Axe(t){if(!t)return null;const e=WM(t);return l0.find(n=>n.id!=="custom"&&WM(n.base_url)===e)||null}function Rxe(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[s,i]=b.useState(!1),[a,l]=b.useState(!1),[c,d]=b.useState(!1),[h,m]=b.useState(!1),[g,x]=b.useState(!1),[y,w]=b.useState(!1),[S,k]=b.useState(null),[j,N]=b.useState(null),[T,E]=b.useState("custom"),[_,M]=b.useState(!1),[I,P]=b.useState(!1),[L,H]=b.useState(null),[U,ee]=b.useState(!1),[z,Q]=b.useState(""),[B,X]=b.useState(new Set),[J,G]=b.useState(!1),[R,ie]=b.useState(1),[W,q]=b.useState(20),[V,te]=b.useState(""),{toast:ne}=fs(),K=Zi(),{state:se,goToStep:re,registerTour:oe}=U6(),Te=b.useRef(null),We=b.useRef(!0);b.useEffect(()=>{oe(El,uQ)},[oe]),b.useEffect(()=>{if(se.activeTourId===El&&se.isRunning){const ke=dQ[se.stepIndex];ke&&!window.location.pathname.endsWith(ke.replace("/config/",""))&&K({to:ke})}},[se.stepIndex,se.activeTourId,se.isRunning,K]);const Ye=b.useRef(se.stepIndex);b.useEffect(()=>{if(se.activeTourId===El&&se.isRunning){const ke=Ye.current,Pe=se.stepIndex;ke>=3&&ke<=9&&Pe<3&&w(!1),Ye.current=Pe}},[se.stepIndex,se.activeTourId,se.isRunning]),b.useEffect(()=>{if(se.activeTourId!==El||!se.isRunning)return;const ke=Pe=>{const it=Pe.target,ot=se.stepIndex;ot===2&&it.closest('[data-tour="add-provider-button"]')?setTimeout(()=>re(3),300):ot===9&&it.closest('[data-tour="provider-cancel-button"]')&&setTimeout(()=>re(10),300)};return document.addEventListener("click",ke,!0),()=>document.removeEventListener("click",ke,!0)},[se,re]),b.useEffect(()=>{Je()},[]);const Je=async()=>{try{r(!0);const ke=await Rh();e(ke.api_providers||[]),d(!1),We.current=!1}catch(ke){console.error("加载配置失败:",ke)}finally{r(!1)}},Oe=async()=>{try{m(!0),Jy().catch(()=>{}),x(!0)}catch(ke){console.error("重启失败:",ke),x(!1),ne({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),m(!1)}},Ve=async()=>{try{i(!0),Te.current&&clearTimeout(Te.current);const ke=await Rh();ke.api_providers=t,await zv(ke),d(!1),ne({title:"保存成功",description:"正在重启麦麦..."}),await Oe()}catch(ke){console.error("保存配置失败:",ke),ne({title:"保存失败",description:ke.message,variant:"destructive"}),i(!1)}},Ue=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},He=()=>{x(!1),m(!1),ne({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},Ot=b.useCallback(async ke=>{if(!We.current)try{l(!0),await dk("api_providers",ke),d(!1)}catch(Pe){console.error("自动保存失败:",Pe),d(!0)}finally{l(!1)}},[]);b.useEffect(()=>{if(!We.current)return d(!0),Te.current&&clearTimeout(Te.current),Te.current=setTimeout(()=>{Ot(t)},2e3),()=>{Te.current&&clearTimeout(Te.current)}},[t,Ot]);const xt=async()=>{try{i(!0),Te.current&&clearTimeout(Te.current);const ke=await Rh();ke.api_providers=t,await zv(ke),d(!1),ne({title:"保存成功",description:"模型提供商配置已保存"})}catch(ke){console.error("保存配置失败:",ke),ne({title:"保存失败",description:ke.message,variant:"destructive"})}finally{i(!1)}},kn=(ke,Pe)=>{if(ke){const it=l0.find(ot=>ot.base_url===ke.base_url&&ot.client_type===ke.client_type);E(it?.id||"custom"),k(ke)}else E("custom"),k({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10});N(Pe),ee(!1),w(!0)},It=ke=>{E(ke),M(!1);const Pe=l0.find(it=>it.id===ke);Pe&&Pe.id!=="custom"?k(it=>({...it,name:Pe.name,base_url:Pe.base_url,client_type:Pe.client_type})):Pe?.id==="custom"&&k(it=>({...it,name:"",base_url:"",client_type:"openai"}))},Yt=b.useMemo(()=>T!=="custom",[T]),_t=async()=>{if(S?.api_key)try{await navigator.clipboard.writeText(S.api_key),ne({title:"复制成功",description:"API Key 已复制到剪贴板"})}catch{ne({title:"复制失败",description:"无法访问剪贴板",variant:"destructive"})}},mt=()=>{if(!S)return;const ke={...S,max_retry:S.max_retry??2,timeout:S.timeout??30,retry_interval:S.retry_interval??10};if(j!==null){const Pe=[...t];Pe[j]=ke,e(Pe)}else e([...t,ke]);w(!1),k(null),N(null)},Ne=ke=>{if(!ke&&S){const Pe={...S,max_retry:S.max_retry??2,timeout:S.timeout??30,retry_interval:S.retry_interval??10};k(Pe)}w(ke)},Ie=ke=>{H(ke),P(!0)},st=()=>{if(L!==null){const ke=t.filter((Pe,it)=>it!==L);e(ke),ne({title:"删除成功",description:"提供商已从列表中移除"})}P(!1),H(null)},yt=ke=>{const Pe=new Set(B);Pe.has(ke)?Pe.delete(ke):Pe.add(ke),X(Pe)},Pt=()=>{if(B.size===Fe.length)X(new Set);else{const ke=Fe.map((Pe,it)=>t.findIndex(ot=>ot===Fe[it]));X(new Set(ke))}},At=()=>{if(B.size===0){ne({title:"提示",description:"请先选择要删除的提供商",variant:"default"});return}G(!0)},zn=()=>{const ke=t.filter((Pe,it)=>!B.has(it));e(ke),X(new Set),G(!1),ne({title:"批量删除成功",description:`已删除 ${B.size} 个提供商`})},Fe=t.filter(ke=>{if(!z)return!0;const Pe=z.toLowerCase();return ke.name.toLowerCase().includes(Pe)||ke.base_url.toLowerCase().includes(Pe)||ke.client_type.toLowerCase().includes(Pe)}),rt=Math.ceil(Fe.length/W),tn=Fe.slice((R-1)*W,R*W),Rt=()=>{const ke=parseInt(V);ke>=1&&ke<=rt&&(ie(ke),te(""))};return n?o.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:o.jsx("div",{className:"flex items-center justify-center h-64",children:o.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})}):o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"AI模型厂商配置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理 AI 模型厂商的 API 配置"})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[B.size>0&&o.jsxs(he,{onClick:At,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[o.jsx(Sn,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",B.size,")"]}),o.jsxs(he,{onClick:()=>kn(null,null),size:"sm",className:"w-full sm:w-auto","data-tour":"add-provider-button",children:[o.jsx(zs,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加提供商"]}),o.jsxs(he,{onClick:xt,disabled:s||a||!c||h,size:"sm",variant:"outline",className:"w-full sm:w-auto sm:min-w-[120px]",children:[o.jsx($y,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),s?"保存中...":a?"自动保存中...":c?"保存配置":"已保存"]}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs(he,{disabled:s||a||h,size:"sm",className:"w-full sm:w-auto sm:min-w-[120px]",children:[o.jsx(Cj,{className:"mr-2 h-4 w-4"}),h?"重启中...":c?"保存并重启":"重启麦麦"]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认重启麦麦?"}),o.jsx(_n,{className:"space-y-3",asChild:!0,children:o.jsxs("div",{children:[o.jsx("p",{children:c?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),o.jsxs(ga,{className:"border-yellow-500/50 bg-yellow-500/10",children:[o.jsx(Oa,{className:"h-4 w-4 text-yellow-600"}),o.jsxs(xa,{className:"text-yellow-900 dark:text-yellow-100",children:[o.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",o.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",o.jsxs(Dr,{children:[o.jsx(Sf,{asChild:!0,children:o.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[o.jsx(qy,{className:"h-3 w-3"}),"如何结束程序?"]})}),o.jsxs(Sr,{className:"max-w-2xl",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"如何结束使用重启功能后的麦麦程序"}),o.jsx(ss,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),o.jsxs(ja,{defaultValue:"windows",className:"w-full",children:[o.jsxs(Wi,{className:"grid w-full grid-cols-3",children:[o.jsx(Lt,{value:"windows",children:"Windows"}),o.jsx(Lt,{value:"macos",children:"macOS"}),o.jsx(Lt,{value:"linux",children:"Linux"})]}),o.jsxs(un,{value:"windows",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),o.jsxs("li",{children:["在“进程”或“详细信息”标签页中找到 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),o.jsx("li",{children:"右键点击并选择“结束任务”"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),o.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),o.jsxs(un,{value:"macos",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"})," 打开 Spotlight,搜索“活动监视器”"]}),o.jsxs("li",{children:["在进程列表中找到 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),o.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]})]}),o.jsxs(un,{value:"linux",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),o.jsx("p",{children:'pkill -9 -f "bot.py"'}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["在终端输入 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),o.jsx(bs,{children:o.jsx(Qj,{asChild:!0,children:o.jsx(he,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:c?Ve:Oe,children:c?"保存并重启":"确认重启"})]})]})]})]})]}),o.jsxs(ga,{children:[o.jsx(Oa,{className:"h-4 w-4"}),o.jsxs(xa,{children:["配置更新后需要",o.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),o.jsxs(wn,{className:"h-[calc(100vh-260px)]",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2 mb-4",children:[o.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[o.jsx(Ni,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(ze,{placeholder:"搜索提供商名称、URL 或类型...",value:z,onChange:ke=>Q(ke.target.value),className:"pl-9"})]}),z&&o.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",Fe.length," 个结果"]})]}),o.jsx("div",{className:"md:hidden space-y-3",children:Fe.length===0?o.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:z?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'}):tn.map((ke,Pe)=>{const it=t.findIndex(ot=>ot===ke);return o.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-start justify-between gap-2",children:[o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("h3",{className:"font-semibold text-base truncate",children:ke.name}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1 break-all",children:ke.base_url})]}),o.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[o.jsxs(he,{variant:"default",size:"sm",onClick:()=>kn(ke,it),children:[o.jsx(Yu,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),o.jsxs(he,{size:"sm",onClick:()=>Ie(it),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Sn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"客户端类型"}),o.jsx("p",{className:"font-medium",children:ke.client_type})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"最大重试"}),o.jsx("p",{className:"font-medium",children:ke.max_retry})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"超时(秒)"}),o.jsx("p",{className:"font-medium",children:ke.timeout})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"重试间隔(秒)"}),o.jsx("p",{className:"font-medium",children:ke.retry_interval})]})]})]},Pe)})}),o.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:o.jsx("div",{className:"overflow-x-auto",children:o.jsxs(Tf,{children:[o.jsx(Ef,{children:o.jsxs(Ps,{children:[o.jsx(pn,{className:"w-12",children:o.jsx(Oi,{checked:B.size===Fe.length&&Fe.length>0,onCheckedChange:Pt})}),o.jsx(pn,{children:"名称"}),o.jsx(pn,{children:"基础URL"}),o.jsx(pn,{children:"客户端类型"}),o.jsx(pn,{className:"text-right",children:"最大重试"}),o.jsx(pn,{className:"text-right",children:"超时(秒)"}),o.jsx(pn,{className:"text-right",children:"重试间隔(秒)"}),o.jsx(pn,{className:"text-right",children:"操作"})]})}),o.jsx(_f,{children:tn.length===0?o.jsx(Ps,{children:o.jsx(Gt,{colSpan:8,className:"text-center text-muted-foreground py-8",children:z?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'})}):tn.map((ke,Pe)=>{const it=t.findIndex(ot=>ot===ke);return o.jsxs(Ps,{children:[o.jsx(Gt,{children:o.jsx(Oi,{checked:B.has(it),onCheckedChange:()=>yt(it)})}),o.jsx(Gt,{className:"font-medium",children:ke.name}),o.jsx(Gt,{className:"max-w-xs truncate",title:ke.base_url,children:ke.base_url}),o.jsx(Gt,{children:ke.client_type}),o.jsx(Gt,{className:"text-right",children:ke.max_retry}),o.jsx(Gt,{className:"text-right",children:ke.timeout}),o.jsx(Gt,{className:"text-right",children:ke.retry_interval}),o.jsx(Gt,{className:"text-right",children:o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsxs(he,{variant:"default",size:"sm",onClick:()=>kn(ke,it),children:[o.jsx(Yu,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),o.jsxs(he,{size:"sm",onClick:()=>Ie(it),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Sn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},Pe)})})]})})}),Fe.length>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(de,{htmlFor:"page-size-provider",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:W.toString(),onValueChange:ke=>{q(parseInt(ke)),ie(1),X(new Set)},children:[o.jsx($t,{id:"page-size-provider",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"10",children:"10"}),o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"50",children:"50"}),o.jsx(De,{value:"100",children:"100"})]})]}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(R-1)*W+1," 到"," ",Math.min(R*W,Fe.length)," 条,共 ",Fe.length," 条"]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{variant:"outline",size:"sm",onClick:()=>ie(1),disabled:R===1,className:"hidden sm:flex",children:o.jsx(Ep,{className:"h-4 w-4"})}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>ie(ke=>Math.max(1,ke-1)),disabled:R===1,children:[o.jsx(vd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{type:"number",value:V,onChange:ke=>te(ke.target.value),onKeyDown:ke=>ke.key==="Enter"&&Rt(),placeholder:R.toString(),className:"w-16 h-8 text-center",min:1,max:rt}),o.jsx(he,{variant:"outline",size:"sm",onClick:Rt,disabled:!V,className:"h-8",children:"跳转"})]}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>ie(ke=>ke+1),disabled:R>=rt,children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(yd,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(he,{variant:"outline",size:"sm",onClick:()=>ie(rt),disabled:R>=rt,className:"hidden sm:flex",children:o.jsx(_p,{className:"h-4 w-4"})})]})]})]}),o.jsx(Dr,{open:y,onOpenChange:Ne,children:o.jsxs(Sr,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"provider-dialog",preventOutsideClose:se.isRunning,children:[o.jsxs(kr,{children:[o.jsx(Or,{children:j!==null?"编辑提供商":"添加提供商"}),o.jsx(ss,{children:"配置 API 提供商的连接信息和参数"})]}),o.jsxs("form",{onSubmit:ke=>{ke.preventDefault(),mt()},autoComplete:"off",children:[o.jsxs("div",{className:"grid gap-4 py-4",children:[o.jsxs("div",{className:"grid gap-2","data-tour":"provider-template-select",children:[o.jsx(de,{htmlFor:"template",children:"提供商模板"}),o.jsxs(Po,{open:_,onOpenChange:M,children:[o.jsx(zo,{asChild:!0,children:o.jsxs(he,{variant:"outline",role:"combobox","aria-expanded":_,className:"w-full justify-between",children:[T?l0.find(ke=>ke.id===T)?.display_name:"选择提供商模板...",o.jsx(Tj,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),o.jsx(Xa,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:o.jsxs(vb,{children:[o.jsx(yb,{placeholder:"搜索提供商模板..."}),o.jsx(wn,{className:"h-[300px]",children:o.jsxs(bb,{className:"max-h-none overflow-visible",children:[o.jsx(wb,{children:"未找到匹配的模板"}),o.jsx(rp,{children:l0.map(ke=>o.jsxs(sp,{value:ke.display_name,onSelect:()=>It(ke.id),children:[o.jsx(Ro,{className:`mr-2 h-4 w-4 ${T===ke.id?"opacity-100":"opacity-0"}`}),ke.display_name]},ke.id))})]})})]})})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"选择预设模板可自动填充 URL 和客户端类型,支持搜索"})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"provider-name-input",children:[o.jsx(de,{htmlFor:"name",children:"名称 *"}),o.jsx(ze,{id:"name",value:S?.name||"",onChange:ke=>k(Pe=>Pe?{...Pe,name:ke.target.value}:null),placeholder:"例如: DeepSeek, SiliconFlow"})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"provider-url-input",children:[o.jsx(de,{htmlFor:"base_url",children:"基础 URL *"}),o.jsx(ze,{id:"base_url",value:S?.base_url||"",onChange:ke=>k(Pe=>Pe?{...Pe,base_url:ke.target.value}:null),placeholder:"https://api.example.com/v1",disabled:Yt,className:Yt?"bg-muted cursor-not-allowed":""}),Yt&&o.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时 URL 不可编辑,切换到"自定义"以手动配置'})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"provider-apikey-input",children:[o.jsx(de,{htmlFor:"api_key",children:"API Key *"}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{id:"api_key",type:U?"text":"password",value:S?.api_key||"",onChange:ke=>k(Pe=>Pe?{...Pe,api_key:ke.target.value}:null),placeholder:"sk-...",className:"flex-1"}),o.jsx(he,{type:"button",variant:"outline",size:"icon",onClick:()=>ee(!U),title:U?"隐藏密钥":"显示密钥",children:U?o.jsx(Ev,{className:"h-4 w-4"}):o.jsx(Ea,{className:"h-4 w-4"})}),o.jsx(he,{type:"button",variant:"outline",size:"icon",onClick:_t,title:"复制密钥",children:o.jsx(Tv,{className:"h-4 w-4"})})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"client_type",children:"客户端类型"}),o.jsxs(Vt,{value:S?.client_type||"openai",onValueChange:ke=>k(Pe=>Pe?{...Pe,client_type:ke}:null),disabled:Yt,children:[o.jsx($t,{id:"client_type",className:Yt?"bg-muted cursor-not-allowed":"",children:o.jsx(Ut,{placeholder:"选择客户端类型"})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"openai",children:"OpenAI"}),o.jsx(De,{value:"gemini",children:"Gemini"})]})]}),Yt&&o.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时客户端类型不可编辑,切换到"自定义"以手动配置'})]}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"max_retry",children:"最大重试"}),o.jsx(ze,{id:"max_retry",type:"number",min:"0",value:S?.max_retry??"",onChange:ke=>{const Pe=ke.target.value===""?null:parseInt(ke.target.value);k(it=>it?{...it,max_retry:Pe}:null)},placeholder:"默认: 2"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"timeout",children:"超时(秒)"}),o.jsx(ze,{id:"timeout",type:"number",min:"1",value:S?.timeout??"",onChange:ke=>{const Pe=ke.target.value===""?null:parseInt(ke.target.value);k(it=>it?{...it,timeout:Pe}:null)},placeholder:"默认: 30"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"retry_interval",children:"重试间隔(秒)"}),o.jsx(ze,{id:"retry_interval",type:"number",min:"1",value:S?.retry_interval??"",onChange:ke=>{const Pe=ke.target.value===""?null:parseInt(ke.target.value);k(it=>it?{...it,retry_interval:Pe}:null)},placeholder:"默认: 10"})]})]})]}),o.jsxs(bs,{children:[o.jsx(he,{type:"button",variant:"outline",onClick:()=>w(!1),"data-tour":"provider-cancel-button",children:"取消"}),o.jsx(he,{type:"submit","data-tour":"provider-save-button",children:"保存"})]})]})]})}),o.jsx(Dn,{open:I,onOpenChange:P,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除提供商 "',L!==null?t[L]?.name:"",'" 吗? 此操作无法撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:st,children:"删除"})]})]})}),o.jsx(Dn,{open:J,onOpenChange:G,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认批量删除"}),o.jsxs(_n,{children:["确定要删除选中的 ",B.size," 个提供商吗? 此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:zn,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),g&&o.jsx(Wj,{onRestartComplete:Ue,onRestartFailed:He})]})}function Dxe(){for(var t=arguments.length,e=new Array(t),n=0;nr=>{e.forEach(s=>s(r))},e)}const jb=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Df(t){const e=Object.prototype.toString.call(t);return e==="[object Window]"||e==="[object global]"}function W6(t){return"nodeType"in t}function Ti(t){var e,n;return t?Df(t)?t:W6(t)&&(e=(n=t.ownerDocument)==null?void 0:n.defaultView)!=null?e:window:window}function G6(t){const{Document:e}=Ti(t);return t instanceof e}function ig(t){return Df(t)?!1:t instanceof Ti(t).HTMLElement}function hQ(t){return t instanceof Ti(t).SVGElement}function Pf(t){return t?Df(t)?t.document:W6(t)?G6(t)?t:ig(t)||hQ(t)?t.ownerDocument:document:document:document}const Lo=jb?b.useLayoutEffect:b.useEffect;function X6(t){const e=b.useRef(t);return Lo(()=>{e.current=t}),b.useCallback(function(){for(var n=arguments.length,r=new Array(n),s=0;s{t.current=setInterval(r,s)},[]),n=b.useCallback(()=>{t.current!==null&&(clearInterval(t.current),t.current=null)},[]);return[e,n]}function op(t,e){e===void 0&&(e=[t]);const n=b.useRef(t);return Lo(()=>{n.current!==t&&(n.current=t)},e),n}function ag(t,e){const n=b.useRef();return b.useMemo(()=>{const r=t(n.current);return n.current=r,r},[...e])}function cy(t){const e=X6(t),n=b.useRef(null),r=b.useCallback(s=>{s!==n.current&&e?.(s,n.current),n.current=s},[]);return[n,r]}function xO(t){const e=b.useRef();return b.useEffect(()=>{e.current=t},[t]),e.current}let xS={};function og(t,e){return b.useMemo(()=>{if(e)return e;const n=xS[t]==null?0:xS[t]+1;return xS[t]=n,t+"-"+n},[t,e])}function fQ(t){return function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),s=1;s{const l=Object.entries(a);for(const[c,d]of l){const h=i[c];h!=null&&(i[c]=h+t*d)}return i},{...e})}}const Fh=fQ(1),lp=fQ(-1);function zxe(t){return"clientX"in t&&"clientY"in t}function Y6(t){if(!t)return!1;const{KeyboardEvent:e}=Ti(t.target);return e&&t instanceof e}function Ixe(t){if(!t)return!1;const{TouchEvent:e}=Ti(t.target);return e&&t instanceof e}function vO(t){if(Ixe(t)){if(t.touches&&t.touches.length){const{clientX:e,clientY:n}=t.touches[0];return{x:e,y:n}}else if(t.changedTouches&&t.changedTouches.length){const{clientX:e,clientY:n}=t.changedTouches[0];return{x:e,y:n}}}return zxe(t)?{x:t.clientX,y:t.clientY}:null}const cp=Object.freeze({Translate:{toString(t){if(!t)return;const{x:e,y:n}=t;return"translate3d("+(e?Math.round(e):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(t){if(!t)return;const{scaleX:e,scaleY:n}=t;return"scaleX("+e+") scaleY("+n+")"}},Transform:{toString(t){if(t)return[cp.Translate.toString(t),cp.Scale.toString(t)].join(" ")}},Transition:{toString(t){let{property:e,duration:n,easing:r}=t;return e+" "+n+"ms "+r}}}),GM="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function Lxe(t){return t.matches(GM)?t:t.querySelector(GM)}const Bxe={display:"none"};function Fxe(t){let{id:e,value:n}=t;return ae.createElement("div",{id:e,style:Bxe},n)}function qxe(t){let{id:e,announcement:n,ariaLiveType:r="assertive"}=t;const s={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return ae.createElement("div",{id:e,style:s,role:"status","aria-live":r,"aria-atomic":!0},n)}function $xe(){const[t,e]=b.useState("");return{announce:b.useCallback(r=>{r!=null&&e(r)},[]),announcement:t}}const mQ=b.createContext(null);function Hxe(t){const e=b.useContext(mQ);b.useEffect(()=>{if(!e)throw new Error("useDndMonitor must be used within a children of ");return e(t)},[t,e])}function Qxe(){const[t]=b.useState(()=>new Set),e=b.useCallback(r=>(t.add(r),()=>t.delete(r)),[t]);return[b.useCallback(r=>{let{type:s,event:i}=r;t.forEach(a=>{var l;return(l=a[s])==null?void 0:l.call(a,i)})},[t]),e]}const Vxe={draggable:` + `)),e.appendChild(n)}componentDidMount(){const{shouldFocus:t}=this.props;setTimeout(()=>{ft.domElement(this.beacon)&&t&&this.beacon.focus()},0)}componentWillUnmount(){const t=document.getElementById("joyride-beacon-animation");t?.parentNode&&t.parentNode.removeChild(t)}render(){const{beaconComponent:t,continuous:e,index:n,isLastStep:r,locale:s,onClickOrHover:i,size:a,step:l,styles:c}=this.props,d=yo(s.open),h={"aria-label":d,onClick:i,onMouseEnter:i,ref:this.setBeaconRef,title:d};let m;if(t){const g=t;m=b.createElement(g,{continuous:e,index:n,isLastStep:r,size:a,step:l,...h})}else m=b.createElement("button",{key:"JoyrideBeacon",className:"react-joyride__beacon","data-test-id":"button-beacon",style:c.beacon,type:"button",...h},b.createElement("span",{style:c.beaconInner}),b.createElement("span",{style:c.beaconOuter}));return m}};function qxe({styles:t,...e}){const{color:n,height:r,width:s,...i}=t;return ae.createElement("button",{style:i,type:"button",...e},ae.createElement("svg",{height:typeof r=="number"?`${r}px`:r,preserveAspectRatio:"xMidYMid",version:"1.1",viewBox:"0 0 18 18",width:typeof s=="number"?`${s}px`:s,xmlns:"http://www.w3.org/2000/svg"},ae.createElement("g",null,ae.createElement("path",{d:"M8.13911129,9.00268191 L0.171521827,17.0258467 C-0.0498027049,17.248715 -0.0498027049,17.6098394 0.171521827,17.8327545 C0.28204354,17.9443526 0.427188206,17.9998706 0.572051765,17.9998706 C0.71714958,17.9998706 0.862013139,17.9443526 0.972581703,17.8327545 L9.0000937,9.74924618 L17.0276057,17.8327545 C17.1384085,17.9443526 17.2832721,17.9998706 17.4281356,17.9998706 C17.5729992,17.9998706 17.718097,17.9443526 17.8286656,17.8327545 C18.0499901,17.6098862 18.0499901,17.2487618 17.8286656,17.0258467 L9.86135722,9.00268191 L17.8340066,0.973848225 C18.0553311,0.750979934 18.0553311,0.389855532 17.8340066,0.16694039 C17.6126821,-0.0556467968 17.254037,-0.0556467968 17.0329467,0.16694039 L9.00042166,8.25611765 L0.967006424,0.167268345 C0.745681892,-0.0553188426 0.387317931,-0.0553188426 0.165993399,0.167268345 C-0.0553311331,0.390136635 -0.0553311331,0.751261038 0.165993399,0.974176179 L8.13920499,9.00268191 L8.13911129,9.00268191 Z",fill:n}))))}var $xe=qxe;function Hxe(t){const{backProps:e,closeProps:n,index:r,isLastStep:s,primaryProps:i,skipProps:a,step:l,tooltipProps:c}=t,{content:d,hideBackButton:h,hideCloseButton:m,hideFooter:g,showSkipButton:x,styles:y,title:w}=l,S={};return S.primary=b.createElement("button",{"data-test-id":"button-primary",style:y.buttonNext,type:"button",...i}),x&&!s&&(S.skip=b.createElement("button",{"aria-live":"off","data-test-id":"button-skip",style:y.buttonSkip,type:"button",...a})),!h&&r>0&&(S.back=b.createElement("button",{"data-test-id":"button-back",style:y.buttonBack,type:"button",...e})),S.close=!m&&b.createElement($xe,{"data-test-id":"button-close",styles:y.buttonClose,...n}),b.createElement("div",{key:"JoyrideTooltip","aria-label":yo(w??d),className:"react-joyride__tooltip",style:y.tooltip,...c},b.createElement("div",{style:y.tooltipContainer},w&&b.createElement("h1",{"aria-label":yo(w),style:y.tooltipTitle},w),b.createElement("div",{style:y.tooltipContent},d)),!g&&b.createElement("div",{style:y.tooltipFooter},b.createElement("div",{style:y.tooltipFooterSpacer},S.skip),S.back,S.primary),S.close)}var Qxe=Hxe,Vxe=class extends b.Component{constructor(){super(...arguments),gt(this,"handleClickBack",t=>{t.preventDefault();const{helpers:e}=this.props;e.prev()}),gt(this,"handleClickClose",t=>{t.preventDefault();const{helpers:e}=this.props;e.close("button_close")}),gt(this,"handleClickPrimary",t=>{t.preventDefault();const{continuous:e,helpers:n}=this.props;if(!e){n.close("button_primary");return}n.next()}),gt(this,"handleClickSkip",t=>{t.preventDefault();const{helpers:e}=this.props;e.skip()}),gt(this,"getElementsProps",()=>{const{continuous:t,index:e,isLastStep:n,setTooltipRef:r,size:s,step:i}=this.props,{back:a,close:l,last:c,next:d,nextLabelWithProgress:h,skip:m}=i.locale,g=yo(a),x=yo(l),y=yo(c),w=yo(d),S=yo(m);let k=l,j=x;if(t){if(k=d,j=w,i.showProgress&&!n){const N=yo(h,{step:e+1,steps:s});k=SO(h,e+1,s),j=N}n&&(k=c,j=y)}return{backProps:{"aria-label":g,children:a,"data-action":"back",onClick:this.handleClickBack,role:"button",title:g},closeProps:{"aria-label":x,children:l,"data-action":"close",onClick:this.handleClickClose,role:"button",title:x},primaryProps:{"aria-label":j,children:k,"data-action":"primary",onClick:this.handleClickPrimary,role:"button",title:j},skipProps:{"aria-label":S,children:m,"data-action":"skip",onClick:this.handleClickSkip,role:"button",title:S},tooltipProps:{"aria-modal":!0,ref:r,role:"alertdialog"}}})}render(){const{continuous:t,index:e,isLastStep:n,setTooltipRef:r,size:s,step:i}=this.props,{beaconComponent:a,tooltipComponent:l,...c}=i;let d;if(l){const h={...this.getElementsProps(),continuous:t,index:e,isLastStep:n,size:s,step:c,setTooltipRef:r},m=l;d=b.createElement(m,{...h})}else d=b.createElement(Qxe,{...this.getElementsProps(),continuous:t,index:e,isLastStep:n,size:s,step:i});return d}},Uxe=class extends b.Component{constructor(){super(...arguments),gt(this,"scope",null),gt(this,"tooltip",null),gt(this,"handleClickHoverBeacon",t=>{const{step:e,store:n}=this.props;t.type==="mouseenter"&&e.event!=="hover"||n.update({lifecycle:Qt.TOOLTIP})}),gt(this,"setTooltipRef",t=>{this.tooltip=t}),gt(this,"setPopper",(t,e)=>{var n;const{action:r,lifecycle:s,step:i,store:a}=this.props;e==="wrapper"?a.setPopper("beacon",t):a.setPopper("tooltip",t),a.getPopper("beacon")&&(a.getPopper("tooltip")||i.placement==="center")&&s===Qt.INIT&&a.update({action:r,lifecycle:Qt.READY}),(n=i.floaterProps)!=null&&n.getPopper&&i.floaterProps.getPopper(t,e)}),gt(this,"renderTooltip",t=>{const{continuous:e,helpers:n,index:r,size:s,step:i}=this.props;return b.createElement(Vxe,{continuous:e,helpers:n,index:r,isLastStep:r+1===s,setTooltipRef:this.setTooltipRef,size:s,step:i,...t})})}componentDidMount(){const{debug:t,index:e}=this.props;hd({title:`step:${e}`,data:[{key:"props",value:this.props}],debug:t})}componentDidUpdate(t){var e;const{action:n,callback:r,continuous:s,controlled:i,debug:a,helpers:l,index:c,lifecycle:d,shouldScroll:h,status:m,step:g,store:x}=this.props,{changed:y,changedFrom:w}=uy(t,this.props),S=l.info(),k=s&&n!==Qn.CLOSE&&(c>0||n===Qn.PREV),j=y("action")||y("index")||y("lifecycle")||y("status"),N=w("lifecycle",[Qt.TOOLTIP,Qt.INIT],Qt.INIT),T=y("action",[Qn.NEXT,Qn.PREV,Qn.SKIP,Qn.CLOSE]),E=i&&c===t.index;if(T&&(N||E)&&r({...S,index:t.index,lifecycle:Qt.COMPLETE,step:t.step,type:Qa.STEP_AFTER}),g.placement==="center"&&m===mn.RUNNING&&y("index")&&n!==Qn.START&&d===Qt.INIT&&x.update({lifecycle:Qt.READY}),j){const _=Ml(g.target),A=!!_;A&&vxe(_)?(w("status",mn.READY,mn.RUNNING)||w("lifecycle",Qt.INIT,Qt.READY))&&r({...S,step:g,type:Qa.STEP_BEFORE}):(console.warn(A?"Target not visible":"Target not mounted",g),r({...S,type:Qa.TARGET_NOT_FOUND,step:g}),i||x.update({index:c+(n===Qn.PREV?-1:1)}))}w("lifecycle",Qt.INIT,Qt.READY)&&x.update({lifecycle:GA(g)||k?Qt.TOOLTIP:Qt.BEACON}),y("index")&&hd({title:`step:${d}`,data:[{key:"props",value:this.props}],debug:a}),y("lifecycle",Qt.BEACON)&&r({...S,step:g,type:Qa.BEACON}),y("lifecycle",Qt.TOOLTIP)&&(r({...S,step:g,type:Qa.TOOLTIP}),h&&this.tooltip&&(this.scope=new Bxe(this.tooltip,{selector:"[data-action=primary]"}),this.scope.setFocus())),w("lifecycle",[Qt.TOOLTIP,Qt.INIT],Qt.INIT)&&((e=this.scope)==null||e.removeScope(),x.cleanupPoppers())}componentWillUnmount(){var t;(t=this.scope)==null||t.removeScope()}get open(){const{lifecycle:t,step:e}=this.props;return GA(e)||t===Qt.TOOLTIP}render(){const{continuous:t,debug:e,index:n,nonce:r,shouldScroll:s,size:i,step:a}=this.props,l=Ml(a.target);return!fQ(a)||!ft.domElement(l)?null:b.createElement("div",{key:`JoyrideStep-${n}`,className:"react-joyride__step"},b.createElement(X6,{...a.floaterProps,component:this.renderTooltip,debug:e,getPopper:this.setPopper,id:`react-joyride-step-${n}`,open:this.open,placement:a.placement,target:a.target},b.createElement(Fxe,{beaconComponent:a.beaconComponent,continuous:t,index:n,isLastStep:n+1===i,locale:a.locale,nonce:r,onClickOrHover:this.handleClickHoverBeacon,shouldFocus:s,size:i,step:a,styles:a.styles})))}},pQ=class extends b.Component{constructor(t){super(t),gt(this,"helpers"),gt(this,"store"),gt(this,"callback",a=>{const{callback:l}=this.props;ft.function(l)&&l(a)}),gt(this,"handleKeyboard",a=>{const{index:l,lifecycle:c}=this.state,{steps:d}=this.props,h=d[l];c===Qt.TOOLTIP&&a.code==="Escape"&&h&&!h.disableCloseOnEsc&&this.store.close("keyboard")}),gt(this,"handleClickOverlay",()=>{const{index:a}=this.state,{steps:l}=this.props;ah(this.props,l[a]).disableOverlayClose||this.helpers.close("overlay")}),gt(this,"syncState",a=>{this.setState(a)});const{debug:e,getHelpers:n,run:r=!0,stepIndex:s}=t;this.store=Dxe({...t,controlled:r&&ft.number(s)}),this.helpers=this.store.getHelpers();const{addListener:i}=this.store;hd({title:"init",data:[{key:"props",value:this.props},{key:"state",value:this.state}],debug:e}),i(this.syncState),n&&n(this.helpers),this.state=this.store.getState()}componentDidMount(){if(!Ic())return;const{debug:t,disableCloseOnEsc:e,run:n,steps:r}=this.props,{start:s}=this.store;KA(r,t)&&n&&s(),e||document.body.addEventListener("keydown",this.handleKeyboard,{passive:!0})}componentDidUpdate(t,e){if(!Ic())return;const{action:n,controlled:r,index:s,status:i}=this.state,{debug:a,run:l,stepIndex:c,steps:d}=this.props,{stepIndex:h,steps:m}=t,{reset:g,setSteps:x,start:y,stop:w,update:S}=this.store,{changed:k}=uy(t,this.props),{changed:j,changedFrom:N}=uy(e,this.state),T=ah(this.props,d[s]),E=!ei(m,d),_=ft.number(c)&&k("stepIndex"),A=Ml(T.target);if(E&&(KA(d,a)?x(d):console.warn("Steps are not valid",d)),k("run")&&(l?y(c):w()),_){let B=ft.number(h)&&h=0?w:0,r===mn.RUNNING&&wxe(w,{element:y,duration:a}).then(()=>{setTimeout(()=>{var j;(j=this.store.getPopper("tooltip"))==null||j.instance.update()},10)})}}render(){if(!Ic())return null;const{index:t,lifecycle:e,status:n}=this.state,{continuous:r=!1,debug:s=!1,nonce:i,scrollToFirstStep:a=!1,steps:l}=this.props,c=n===mn.RUNNING,d={};if(c&&l[t]){const h=ah(this.props,l[t]);d.step=b.createElement(Uxe,{...this.state,callback:this.callback,continuous:r,debug:s,helpers:this.helpers,nonce:i,shouldScroll:!h.disableScrolling&&(t!==0||a),step:h,store:this.store}),d.overlay=b.createElement(Lxe,{id:"react-joyride-portal"},b.createElement(Ixe,{...h,continuous:r,debug:s,lifecycle:e,onClickOverlay:this.handleClickOverlay}))}return b.createElement("div",{className:"react-joyride"},d.step,d.overlay)}};gt(pQ,"defaultProps",Exe);var Wxe=pQ;function Y6(){const t=b.useContext(RH);if(!t)throw new Error("useTour must be used within a TourProvider");return t}const Gxe={options:{zIndex:1e4,primaryColor:"hsl(var(--primary))",textColor:"hsl(var(--foreground))",backgroundColor:"hsl(var(--background))",arrowColor:"hsl(var(--background))",overlayColor:"rgba(0, 0, 0, 0.5)"},tooltip:{borderRadius:"var(--radius)",padding:"1rem"},tooltipContainer:{textAlign:"left"},tooltipTitle:{fontSize:"1rem",fontWeight:600,marginBottom:"0.5rem"},tooltipContent:{fontSize:"0.875rem",padding:"0.5rem 0"},buttonNext:{backgroundColor:"hsl(var(--primary))",color:"hsl(var(--primary-foreground))",borderRadius:"calc(var(--radius) - 2px)",fontSize:"0.875rem",padding:"0.5rem 1rem"},buttonBack:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem",marginRight:"0.5rem"},buttonSkip:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem"},buttonClose:{color:"hsl(var(--muted-foreground))"},spotlight:{borderRadius:"var(--radius)"}},Xxe={back:"上一步",close:"关闭",last:"完成",next:"下一步",nextLabelWithProgress:"下一步 ({step}/{steps})",open:"打开对话框",skip:"跳过"};function Yxe(){const{state:t,getCurrentSteps:e,handleJoyrideCallback:n}=Y6(),r=e(),[s,i]=b.useState(!1),a=b.useRef(t.stepIndex),l=b.useRef(null);b.useEffect(()=>{a.current!==t.stepIndex&&(i(!1),a.current=t.stepIndex)},[t.stepIndex]),b.useEffect(()=>{if(!t.isRunning||r.length===0){i(!1);return}const h=r[t.stepIndex];if(!h){i(!1);return}const m=h.target;if(m==="body"){i(!0);return}i(!1);const g=setTimeout(()=>{const x=()=>{const k=document.querySelector(m);if(k){const j=k.getBoundingClientRect();if(j.width>0&&j.height>0)return!0}return!1};if(x()){setTimeout(()=>i(!0),100);return}const y=setInterval(()=>{x()&&(clearInterval(y),setTimeout(()=>i(!0),100))},100),w=setTimeout(()=>{clearInterval(y),i(!0)},5e3),S=()=>{clearInterval(y),clearTimeout(w)};l.current=S},150);return()=>{clearTimeout(g),l.current&&(l.current(),l.current=null)}},[t.isRunning,t.stepIndex,r]);const c=b.useRef(null);if(b.useEffect(()=>{let h=document.getElementById("tour-portal-container");return h||(h=document.createElement("div"),h.id="tour-portal-container",h.style.cssText="position: fixed; top: 0; left: 0; z-index: 99999; pointer-events: none;",document.body.appendChild(h)),c.current=h,()=>{}},[]),!t.isRunning||r.length===0||!s)return null;const d=o.jsx(Wxe,{steps:r,stepIndex:t.stepIndex,run:t.isRunning,continuous:!0,showSkipButton:!0,showProgress:!0,disableOverlayClose:!0,disableScrolling:!1,disableScrollParentFix:!1,callback:n,styles:Gxe,locale:Xxe,scrollOffset:80,scrollToFirstStep:!0,floaterProps:{styles:{floater:{zIndex:99999}},disableAnimation:!0}},`tour-step-${t.stepIndex}`);return c.current?pa.createPortal(d,c.current):d}const _l="model-assignment-tour",gQ=[{target:"body",content:"本引导旨在帮助你配置模型提供商和对应的模型,并为麦麦的各个组件分配合适的模型。",placement:"center",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="sidebar-model-provider"]',content:'第一步,你需要配置模型提供商。模型提供商决定了你要使用谁家的模型,无论是单一厂商(如 DeepSeek),还是模型平台(如 Siliconflow),都可以在这里进行配置。点击"下一步"进入配置页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-provider-button"]',content:'点击"添加提供商"按钮,开始配置你的模型提供商。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="provider-dialog"]',content:"在这里,你可以选择你想要配置的模型提供商,填写相关信息后保存即可。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-name-input"]',content:"这里的名称是你为这个模型提供商起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-apikey-input"]',content:"这里需要填写你从模型提供商那里获取的 API 密钥,用于验证和调用模型服务。对于不同的提供商,获取 API 密钥的方式可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-url-input"]',content:"这里需要填写模型提供商的 API 访问地址,确保填写正确以便系统能够连接到模型服务。对于不同的提供商,API 地址可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-template-select"]',content:"当然,如果你不知道如何填写这些信息,很多模型提供商在这里都提供了预设的模板供你选择,选择对应的模板后,相关信息会自动填充。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-save-button"]',content:"填写完所有信息后,点击保存按钮,模型提供商就配置完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-cancel-button"]',content:"因为这次咱们什么都没有填写,所以点击取消按钮退出吧。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="sidebar-model-management"]',content:'配置好模型提供商后,接下来我们需要为麦麦添加模型并分配功能。点击"下一步"进入模型管理页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-model-button"]',content:'在为麦麦的组件分配模型之前,首先需要添加你想要分配的模型,点击"添加模型"按钮开始添加。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="model-dialog"]',content:"在这里,你可以选择你之前配置好的模型提供商,然后选择对应的模型来添加。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-name-input"]',content:"这里的模型名称是你为这个模型起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-provider-select"]',content:"在这里选择你之前配置好的模型提供商,这样系统才能知道你要添加哪个提供商的模型。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-identifier-input"]',content:"这里需要填写你想要添加的模型的标识符,不同的模型提供商可能有不同的标识符格式,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-save-button"]',content:"填写完所有信息后,点击保存按钮,模型就添加完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-cancel-button"]',content:"当然,因为这次咱们什么都没有填写,所以直接点击取消按钮退出吧,等你准备好了再来添加模型。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="tasks-tab-trigger"]',content:'最后一步,添加好模型后,切换到"为模型分配功能"标签页,为麦麦的各个组件分配合适的模型。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="task-model-select"]',content:"在这里,你可以为每个组件选择一个或多个合适的模型,选择完成后配置会自动保存。恭喜你完成了模型配置的学习!",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1}],xQ={0:"/config/model",1:"/config/model",2:"/config/modelProvider",3:"/config/modelProvider",4:"/config/modelProvider",5:"/config/modelProvider",6:"/config/modelProvider",7:"/config/modelProvider",8:"/config/modelProvider",9:"/config/modelProvider",10:"/config/modelProvider",11:"/config/model",12:"/config/model",13:"/config/model",14:"/config/model",15:"/config/model",16:"/config/model",17:"/config/model",18:"/config/model",19:"/config/model"},d0=[{id:"siliconflow",name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",client_type:"openai",display_name:"硅基流动 (SiliconFlow)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"deepseek",name:"DeepSeek",base_url:"https://api.deepseek.com",client_type:"openai",display_name:"DeepSeek",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"rinkoai",name:"RinkoAI",base_url:"https://rinkoai.com/v1",client_type:"openai",display_name:"RinkoAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"zhipu",name:"ZhipuAI",base_url:"https://open.bigmodel.cn/api/paas/v4",client_type:"openai",display_name:"智谱 AI (ZhipuAI / GLM)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"moonshot",name:"Moonshot",base_url:"https://api.moonshot.cn/v1",client_type:"openai",display_name:"月之暗面 (Moonshot / Kimi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"doubao",name:"Doubao",base_url:"https://ark.cn-beijing.volces.com/api/v3",client_type:"openai",display_name:"字节豆包 (Doubao)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"alibaba",name:"Alibaba",base_url:"https://dashscope.aliyuncs.com/compatible-mode/v1",client_type:"openai",display_name:"阿里云百炼 (Alibaba Qwen)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"baichuan",name:"Baichuan",base_url:"https://api.baichuan-ai.com/v1",client_type:"openai",display_name:"百川智能 (Baichuan)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"minimax",name:"MiniMax",base_url:"https://api.minimax.chat/v1",client_type:"openai",display_name:"MiniMax (海螺 AI)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"stepfun",name:"StepFun",base_url:"https://api.stepfun.com/v1",client_type:"openai",display_name:"阶跃星辰 (StepFun)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"lingyi",name:"Lingyi",base_url:"https://api.lingyiwanwu.com/v1",client_type:"openai",display_name:"零一万物 (Lingyi / Yi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"openai",name:"OpenAI",base_url:"https://api.openai.com/v1",client_type:"openai",display_name:"OpenAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"xai",name:"xAI",base_url:"https://api.x.ai/v1",client_type:"openai",display_name:"xAI (Grok)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"anthropic",name:"Anthropic",base_url:"https://api.anthropic.com/v1",client_type:"openai",display_name:"Anthropic (Claude)"},{id:"gemini",name:"Gemini",base_url:"https://generativelanguage.googleapis.com/v1beta",client_type:"gemini",display_name:"Google Gemini",modelFetcher:{endpoint:"/models",parser:"gemini"}},{id:"cohere",name:"Cohere",base_url:"https://api.cohere.ai/v1",client_type:"openai",display_name:"Cohere"},{id:"groq",name:"Groq",base_url:"https://api.groq.com/openai/v1",client_type:"openai",display_name:"Groq",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"together",name:"Together AI",base_url:"https://api.together.xyz/v1",client_type:"openai",display_name:"Together AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"fireworks",name:"Fireworks",base_url:"https://api.fireworks.ai/inference/v1",client_type:"openai",display_name:"Fireworks AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"mistral",name:"Mistral",base_url:"https://api.mistral.ai/v1",client_type:"openai",display_name:"Mistral AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"perplexity",name:"Perplexity",base_url:"https://api.perplexity.ai",client_type:"openai",display_name:"Perplexity AI"},{id:"custom",name:"",base_url:"",client_type:"openai",display_name:"自定义"}];function JA(t){return t?t.replace(/\/+$/,"").toLowerCase():""}function Kxe(t){if(!t)return null;const e=JA(t);return d0.find(n=>n.id!=="custom"&&JA(n.base_url)===e)||null}function Zxe(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[s,i]=b.useState(!1),[a,l]=b.useState(!1),[c,d]=b.useState(!1),[h,m]=b.useState(!1),[g,x]=b.useState(!1),[y,w]=b.useState(!1),[S,k]=b.useState(null),[j,N]=b.useState(null),[T,E]=b.useState("custom"),[_,A]=b.useState(!1),[L,P]=b.useState(!1),[B,$]=b.useState(null),[U,te]=b.useState(!1),[z,Q]=b.useState(""),[F,Y]=b.useState(new Set),[J,X]=b.useState(!1),[R,ie]=b.useState(1),[G,I]=b.useState(20),[V,ee]=b.useState(""),{toast:ne}=as(),W=Zi(),{state:se,goToStep:re,registerTour:oe}=Y6(),Te=b.useRef(null),We=b.useRef(!0);b.useEffect(()=>{oe(_l,gQ)},[oe]),b.useEffect(()=>{if(se.activeTourId===_l&&se.isRunning){const ke=xQ[se.stepIndex];ke&&!window.location.pathname.endsWith(ke.replace("/config/",""))&&W({to:ke})}},[se.stepIndex,se.activeTourId,se.isRunning,W]);const Ye=b.useRef(se.stepIndex);b.useEffect(()=>{if(se.activeTourId===_l&&se.isRunning){const ke=Ye.current,Pe=se.stepIndex;ke>=3&&ke<=9&&Pe<3&&w(!1),Ye.current=Pe}},[se.stepIndex,se.activeTourId,se.isRunning]),b.useEffect(()=>{if(se.activeTourId!==_l||!se.isRunning)return;const ke=Pe=>{const it=Pe.target,ot=se.stepIndex;ot===2&&it.closest('[data-tour="add-provider-button"]')?setTimeout(()=>re(3),300):ot===9&&it.closest('[data-tour="provider-cancel-button"]')&&setTimeout(()=>re(10),300)};return document.addEventListener("click",ke,!0),()=>document.removeEventListener("click",ke,!0)},[se,re]),b.useEffect(()=>{Je()},[]);const Je=async()=>{try{r(!0);const ke=await Rh();e(ke.api_providers||[]),d(!1),We.current=!1}catch(ke){console.error("加载配置失败:",ke)}finally{r(!1)}},Oe=async()=>{try{m(!0),ib().catch(()=>{}),x(!0)}catch(ke){console.error("重启失败:",ke),x(!1),ne({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),m(!1)}},Ve=async()=>{try{i(!0),Te.current&&clearTimeout(Te.current);const ke=await Rh();ke.api_providers=t,await qv(ke),d(!1),ne({title:"保存成功",description:"正在重启麦麦..."}),await Oe()}catch(ke){console.error("保存配置失败:",ke),ne({title:"保存失败",description:ke.message,variant:"destructive"}),i(!1)}},Ue=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},He=()=>{x(!1),m(!1),ne({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},Ot=b.useCallback(async ke=>{if(!We.current)try{l(!0),await xk("api_providers",ke),d(!1)}catch(Pe){console.error("自动保存失败:",Pe),d(!0)}finally{l(!1)}},[]);b.useEffect(()=>{if(!We.current)return d(!0),Te.current&&clearTimeout(Te.current),Te.current=setTimeout(()=>{Ot(t)},2e3),()=>{Te.current&&clearTimeout(Te.current)}},[t,Ot]);const xt=async()=>{try{i(!0),Te.current&&clearTimeout(Te.current);const ke=await Rh();ke.api_providers=t,await qv(ke),d(!1),ne({title:"保存成功",description:"模型提供商配置已保存"})}catch(ke){console.error("保存配置失败:",ke),ne({title:"保存失败",description:ke.message,variant:"destructive"})}finally{i(!1)}},kn=(ke,Pe)=>{if(ke){const it=d0.find(ot=>ot.base_url===ke.base_url&&ot.client_type===ke.client_type);E(it?.id||"custom"),k(ke)}else E("custom"),k({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10});N(Pe),te(!1),w(!0)},It=ke=>{E(ke),A(!1);const Pe=d0.find(it=>it.id===ke);Pe&&Pe.id!=="custom"?k(it=>({...it,name:Pe.name,base_url:Pe.base_url,client_type:Pe.client_type})):Pe?.id==="custom"&&k(it=>({...it,name:"",base_url:"",client_type:"openai"}))},Yt=b.useMemo(()=>T!=="custom",[T]),_t=async()=>{if(S?.api_key)try{await navigator.clipboard.writeText(S.api_key),ne({title:"复制成功",description:"API Key 已复制到剪贴板"})}catch{ne({title:"复制失败",description:"无法访问剪贴板",variant:"destructive"})}},mt=()=>{if(!S)return;const ke={...S,max_retry:S.max_retry??2,timeout:S.timeout??30,retry_interval:S.retry_interval??10};if(j!==null){const Pe=[...t];Pe[j]=ke,e(Pe)}else e([...t,ke]);w(!1),k(null),N(null)},Ne=ke=>{if(!ke&&S){const Pe={...S,max_retry:S.max_retry??2,timeout:S.timeout??30,retry_interval:S.retry_interval??10};k(Pe)}w(ke)},Ie=ke=>{$(ke),P(!0)},st=()=>{if(B!==null){const ke=t.filter((Pe,it)=>it!==B);e(ke),ne({title:"删除成功",description:"提供商已从列表中移除"})}P(!1),$(null)},yt=ke=>{const Pe=new Set(F);Pe.has(ke)?Pe.delete(ke):Pe.add(ke),Y(Pe)},Pt=()=>{if(F.size===Fe.length)Y(new Set);else{const ke=Fe.map((Pe,it)=>t.findIndex(ot=>ot===Fe[it]));Y(new Set(ke))}},Mt=()=>{if(F.size===0){ne({title:"提示",description:"请先选择要删除的提供商",variant:"default"});return}X(!0)},zn=()=>{const ke=t.filter((Pe,it)=>!F.has(it));e(ke),Y(new Set),X(!1),ne({title:"批量删除成功",description:`已删除 ${F.size} 个提供商`})},Fe=t.filter(ke=>{if(!z)return!0;const Pe=z.toLowerCase();return ke.name.toLowerCase().includes(Pe)||ke.base_url.toLowerCase().includes(Pe)||ke.client_type.toLowerCase().includes(Pe)}),rt=Math.ceil(Fe.length/G),tn=Fe.slice((R-1)*G,R*G),Rt=()=>{const ke=parseInt(V);ke>=1&&ke<=rt&&(ie(ke),ee(""))};return n?o.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:o.jsx("div",{className:"flex items-center justify-center h-64",children:o.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})}):o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"AI模型厂商配置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理 AI 模型厂商的 API 配置"})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[F.size>0&&o.jsxs(de,{onClick:Mt,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[o.jsx(Sn,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",F.size,")"]}),o.jsxs(de,{onClick:()=>kn(null,null),size:"sm",className:"w-full sm:w-auto","data-tour":"add-provider-button",children:[o.jsx(Ls,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加提供商"]}),o.jsxs(de,{onClick:xt,disabled:s||a||!c||h,size:"sm",variant:"outline",className:"w-full sm:w-auto sm:min-w-[120px]",children:[o.jsx(Gy,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),s?"保存中...":a?"自动保存中...":c?"保存配置":"已保存"]}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs(de,{disabled:s||a||h,size:"sm",className:"w-full sm:w-auto sm:min-w-[120px]",children:[o.jsx(Aj,{className:"mr-2 h-4 w-4"}),h?"重启中...":c?"保存并重启":"重启麦麦"]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认重启麦麦?"}),o.jsx(_n,{className:"space-y-3",asChild:!0,children:o.jsxs("div",{children:[o.jsx("p",{children:c?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),o.jsxs(ga,{className:"border-yellow-500/50 bg-yellow-500/10",children:[o.jsx(Oa,{className:"h-4 w-4 text-yellow-600"}),o.jsxs(xa,{className:"text-yellow-900 dark:text-yellow-100",children:[o.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",o.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",o.jsxs(Dr,{children:[o.jsx(Of,{asChild:!0,children:o.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[o.jsx(Wy,{className:"h-3 w-3"}),"如何结束程序?"]})}),o.jsxs(Sr,{className:"max-w-2xl",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"如何结束使用重启功能后的麦麦程序"}),o.jsx(ss,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),o.jsxs(ja,{defaultValue:"windows",className:"w-full",children:[o.jsxs(Wi,{className:"grid w-full grid-cols-3",children:[o.jsx(Lt,{value:"windows",children:"Windows"}),o.jsx(Lt,{value:"macos",children:"macOS"}),o.jsx(Lt,{value:"linux",children:"Linux"})]}),o.jsxs(un,{value:"windows",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),o.jsxs("li",{children:["在“进程”或“详细信息”标签页中找到 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),o.jsx("li",{children:"右键点击并选择“结束任务”"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),o.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),o.jsxs(un,{value:"macos",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"})," 打开 Spotlight,搜索“活动监视器”"]}),o.jsxs("li",{children:["在进程列表中找到 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),o.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]})]}),o.jsxs(un,{value:"linux",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),o.jsx("p",{children:'pkill -9 -f "bot.py"'}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["在终端输入 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),o.jsx(ws,{children:o.jsx(Gj,{asChild:!0,children:o.jsx(de,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:c?Ve:Oe,children:c?"保存并重启":"确认重启"})]})]})]})]})]}),o.jsxs(ga,{children:[o.jsx(Oa,{className:"h-4 w-4"}),o.jsxs(xa,{children:["配置更新后需要",o.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),o.jsxs(gn,{className:"h-[calc(100vh-260px)]",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2 mb-4",children:[o.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[o.jsx(Ni,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(ze,{placeholder:"搜索提供商名称、URL 或类型...",value:z,onChange:ke=>Q(ke.target.value),className:"pl-9"})]}),z&&o.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",Fe.length," 个结果"]})]}),o.jsx("div",{className:"md:hidden space-y-3",children:Fe.length===0?o.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:z?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'}):tn.map((ke,Pe)=>{const it=t.findIndex(ot=>ot===ke);return o.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-start justify-between gap-2",children:[o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("h3",{className:"font-semibold text-base truncate",children:ke.name}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1 break-all",children:ke.base_url})]}),o.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[o.jsxs(de,{variant:"default",size:"sm",onClick:()=>kn(ke,it),children:[o.jsx(Yu,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),o.jsxs(de,{size:"sm",onClick:()=>Ie(it),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Sn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"客户端类型"}),o.jsx("p",{className:"font-medium",children:ke.client_type})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"最大重试"}),o.jsx("p",{className:"font-medium",children:ke.max_retry})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"超时(秒)"}),o.jsx("p",{className:"font-medium",children:ke.timeout})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"重试间隔(秒)"}),o.jsx("p",{className:"font-medium",children:ke.retry_interval})]})]})]},Pe)})}),o.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:o.jsx("div",{className:"overflow-x-auto",children:o.jsxs(_f,{children:[o.jsx(Af,{children:o.jsxs(Is,{children:[o.jsx(pn,{className:"w-12",children:o.jsx(Oi,{checked:F.size===Fe.length&&Fe.length>0,onCheckedChange:Pt})}),o.jsx(pn,{children:"名称"}),o.jsx(pn,{children:"基础URL"}),o.jsx(pn,{children:"客户端类型"}),o.jsx(pn,{className:"text-right",children:"最大重试"}),o.jsx(pn,{className:"text-right",children:"超时(秒)"}),o.jsx(pn,{className:"text-right",children:"重试间隔(秒)"}),o.jsx(pn,{className:"text-right",children:"操作"})]})}),o.jsx(Mf,{children:tn.length===0?o.jsx(Is,{children:o.jsx(Gt,{colSpan:8,className:"text-center text-muted-foreground py-8",children:z?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'})}):tn.map((ke,Pe)=>{const it=t.findIndex(ot=>ot===ke);return o.jsxs(Is,{children:[o.jsx(Gt,{children:o.jsx(Oi,{checked:F.has(it),onCheckedChange:()=>yt(it)})}),o.jsx(Gt,{className:"font-medium",children:ke.name}),o.jsx(Gt,{className:"max-w-xs truncate",title:ke.base_url,children:ke.base_url}),o.jsx(Gt,{children:ke.client_type}),o.jsx(Gt,{className:"text-right",children:ke.max_retry}),o.jsx(Gt,{className:"text-right",children:ke.timeout}),o.jsx(Gt,{className:"text-right",children:ke.retry_interval}),o.jsx(Gt,{className:"text-right",children:o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsxs(de,{variant:"default",size:"sm",onClick:()=>kn(ke,it),children:[o.jsx(Yu,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),o.jsxs(de,{size:"sm",onClick:()=>Ie(it),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Sn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},Pe)})})]})})}),Fe.length>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{htmlFor:"page-size-provider",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:G.toString(),onValueChange:ke=>{I(parseInt(ke)),ie(1),Y(new Set)},children:[o.jsx($t,{id:"page-size-provider",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"10",children:"10"}),o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"50",children:"50"}),o.jsx(De,{value:"100",children:"100"})]})]}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(R-1)*G+1," 到"," ",Math.min(R*G,Fe.length)," 条,共 ",Fe.length," 条"]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(de,{variant:"outline",size:"sm",onClick:()=>ie(1),disabled:R===1,className:"hidden sm:flex",children:o.jsx(Ap,{className:"h-4 w-4"})}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>ie(ke=>Math.max(1,ke-1)),disabled:R===1,children:[o.jsx(vd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{type:"number",value:V,onChange:ke=>ee(ke.target.value),onKeyDown:ke=>ke.key==="Enter"&&Rt(),placeholder:R.toString(),className:"w-16 h-8 text-center",min:1,max:rt}),o.jsx(de,{variant:"outline",size:"sm",onClick:Rt,disabled:!V,className:"h-8",children:"跳转"})]}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>ie(ke=>ke+1),disabled:R>=rt,children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(yd,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(de,{variant:"outline",size:"sm",onClick:()=>ie(rt),disabled:R>=rt,className:"hidden sm:flex",children:o.jsx(Mp,{className:"h-4 w-4"})})]})]})]}),o.jsx(Dr,{open:y,onOpenChange:Ne,children:o.jsxs(Sr,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"provider-dialog",preventOutsideClose:se.isRunning,children:[o.jsxs(kr,{children:[o.jsx(Or,{children:j!==null?"编辑提供商":"添加提供商"}),o.jsx(ss,{children:"配置 API 提供商的连接信息和参数"})]}),o.jsxs("form",{onSubmit:ke=>{ke.preventDefault(),mt()},autoComplete:"off",children:[o.jsxs("div",{className:"grid gap-4 py-4",children:[o.jsxs("div",{className:"grid gap-2","data-tour":"provider-template-select",children:[o.jsx(he,{htmlFor:"template",children:"提供商模板"}),o.jsxs(zo,{open:_,onOpenChange:A,children:[o.jsx(Io,{asChild:!0,children:o.jsxs(de,{variant:"outline",role:"combobox","aria-expanded":_,className:"w-full justify-between",children:[T?d0.find(ke=>ke.id===T)?.display_name:"选择提供商模板...",o.jsx(Mj,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),o.jsx(Xa,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:o.jsxs(Ob,{children:[o.jsx(jb,{placeholder:"搜索提供商模板..."}),o.jsx(gn,{className:"h-[300px]",children:o.jsxs(Nb,{className:"max-h-none overflow-visible",children:[o.jsx(Cb,{children:"未找到匹配的模板"}),o.jsx(ap,{children:d0.map(ke=>o.jsxs(op,{value:ke.display_name,onSelect:()=>It(ke.id),children:[o.jsx(Ro,{className:`mr-2 h-4 w-4 ${T===ke.id?"opacity-100":"opacity-0"}`}),ke.display_name]},ke.id))})]})})]})})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"选择预设模板可自动填充 URL 和客户端类型,支持搜索"})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"provider-name-input",children:[o.jsx(he,{htmlFor:"name",children:"名称 *"}),o.jsx(ze,{id:"name",value:S?.name||"",onChange:ke=>k(Pe=>Pe?{...Pe,name:ke.target.value}:null),placeholder:"例如: DeepSeek, SiliconFlow"})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"provider-url-input",children:[o.jsx(he,{htmlFor:"base_url",children:"基础 URL *"}),o.jsx(ze,{id:"base_url",value:S?.base_url||"",onChange:ke=>k(Pe=>Pe?{...Pe,base_url:ke.target.value}:null),placeholder:"https://api.example.com/v1",disabled:Yt,className:Yt?"bg-muted cursor-not-allowed":""}),Yt&&o.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时 URL 不可编辑,切换到"自定义"以手动配置'})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"provider-apikey-input",children:[o.jsx(he,{htmlFor:"api_key",children:"API Key *"}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{id:"api_key",type:U?"text":"password",value:S?.api_key||"",onChange:ke=>k(Pe=>Pe?{...Pe,api_key:ke.target.value}:null),placeholder:"sk-...",className:"flex-1"}),o.jsx(de,{type:"button",variant:"outline",size:"icon",onClick:()=>te(!U),title:U?"隐藏密钥":"显示密钥",children:U?o.jsx(Rv,{className:"h-4 w-4"}):o.jsx(Ea,{className:"h-4 w-4"})}),o.jsx(de,{type:"button",variant:"outline",size:"icon",onClick:_t,title:"复制密钥",children:o.jsx(Mv,{className:"h-4 w-4"})})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"client_type",children:"客户端类型"}),o.jsxs(Vt,{value:S?.client_type||"openai",onValueChange:ke=>k(Pe=>Pe?{...Pe,client_type:ke}:null),disabled:Yt,children:[o.jsx($t,{id:"client_type",className:Yt?"bg-muted cursor-not-allowed":"",children:o.jsx(Ut,{placeholder:"选择客户端类型"})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"openai",children:"OpenAI"}),o.jsx(De,{value:"gemini",children:"Gemini"})]})]}),Yt&&o.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时客户端类型不可编辑,切换到"自定义"以手动配置'})]}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"max_retry",children:"最大重试"}),o.jsx(ze,{id:"max_retry",type:"number",min:"0",value:S?.max_retry??"",onChange:ke=>{const Pe=ke.target.value===""?null:parseInt(ke.target.value);k(it=>it?{...it,max_retry:Pe}:null)},placeholder:"默认: 2"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"timeout",children:"超时(秒)"}),o.jsx(ze,{id:"timeout",type:"number",min:"1",value:S?.timeout??"",onChange:ke=>{const Pe=ke.target.value===""?null:parseInt(ke.target.value);k(it=>it?{...it,timeout:Pe}:null)},placeholder:"默认: 30"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"retry_interval",children:"重试间隔(秒)"}),o.jsx(ze,{id:"retry_interval",type:"number",min:"1",value:S?.retry_interval??"",onChange:ke=>{const Pe=ke.target.value===""?null:parseInt(ke.target.value);k(it=>it?{...it,retry_interval:Pe}:null)},placeholder:"默认: 10"})]})]})]}),o.jsxs(ws,{children:[o.jsx(de,{type:"button",variant:"outline",onClick:()=>w(!1),"data-tour":"provider-cancel-button",children:"取消"}),o.jsx(de,{type:"submit","data-tour":"provider-save-button",children:"保存"})]})]})]})}),o.jsx(Dn,{open:L,onOpenChange:P,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除提供商 "',B!==null?t[B]?.name:"",'" 吗? 此操作无法撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:st,children:"删除"})]})]})}),o.jsx(Dn,{open:J,onOpenChange:X,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认批量删除"}),o.jsxs(_n,{children:["确定要删除选中的 ",F.size," 个提供商吗? 此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:zn,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),g&&o.jsx(Kj,{onRestartComplete:Ue,onRestartFailed:He})]})}function Jxe(){for(var t=arguments.length,e=new Array(t),n=0;nr=>{e.forEach(s=>s(r))},e)}const Ab=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function zf(t){const e=Object.prototype.toString.call(t);return e==="[object Window]"||e==="[object global]"}function K6(t){return"nodeType"in t}function Ti(t){var e,n;return t?zf(t)?t:K6(t)&&(e=(n=t.ownerDocument)==null?void 0:n.defaultView)!=null?e:window:window}function Z6(t){const{Document:e}=Ti(t);return t instanceof e}function og(t){return zf(t)?!1:t instanceof Ti(t).HTMLElement}function vQ(t){return t instanceof Ti(t).SVGElement}function If(t){return t?zf(t)?t.document:K6(t)?Z6(t)?t:og(t)||vQ(t)?t.ownerDocument:document:document:document}const Bo=Ab?b.useLayoutEffect:b.useEffect;function J6(t){const e=b.useRef(t);return Bo(()=>{e.current=t}),b.useCallback(function(){for(var n=arguments.length,r=new Array(n),s=0;s{t.current=setInterval(r,s)},[]),n=b.useCallback(()=>{t.current!==null&&(clearInterval(t.current),t.current=null)},[]);return[e,n]}function up(t,e){e===void 0&&(e=[t]);const n=b.useRef(t);return Bo(()=>{n.current!==t&&(n.current=t)},e),n}function lg(t,e){const n=b.useRef();return b.useMemo(()=>{const r=t(n.current);return n.current=r,r},[...e])}function my(t){const e=J6(t),n=b.useRef(null),r=b.useCallback(s=>{s!==n.current&&e?.(s,n.current),n.current=s},[]);return[n,r]}function kO(t){const e=b.useRef();return b.useEffect(()=>{e.current=t},[t]),e.current}let kS={};function cg(t,e){return b.useMemo(()=>{if(e)return e;const n=kS[t]==null?0:kS[t]+1;return kS[t]=n,t+"-"+n},[t,e])}function yQ(t){return function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),s=1;s{const l=Object.entries(a);for(const[c,d]of l){const h=i[c];h!=null&&(i[c]=h+t*d)}return i},{...e})}}const Fh=yQ(1),dp=yQ(-1);function t1e(t){return"clientX"in t&&"clientY"in t}function eN(t){if(!t)return!1;const{KeyboardEvent:e}=Ti(t.target);return e&&t instanceof e}function n1e(t){if(!t)return!1;const{TouchEvent:e}=Ti(t.target);return e&&t instanceof e}function OO(t){if(n1e(t)){if(t.touches&&t.touches.length){const{clientX:e,clientY:n}=t.touches[0];return{x:e,y:n}}else if(t.changedTouches&&t.changedTouches.length){const{clientX:e,clientY:n}=t.changedTouches[0];return{x:e,y:n}}}return t1e(t)?{x:t.clientX,y:t.clientY}:null}const hp=Object.freeze({Translate:{toString(t){if(!t)return;const{x:e,y:n}=t;return"translate3d("+(e?Math.round(e):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(t){if(!t)return;const{scaleX:e,scaleY:n}=t;return"scaleX("+e+") scaleY("+n+")"}},Transform:{toString(t){if(t)return[hp.Translate.toString(t),hp.Scale.toString(t)].join(" ")}},Transition:{toString(t){let{property:e,duration:n,easing:r}=t;return e+" "+n+"ms "+r}}}),eM="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function r1e(t){return t.matches(eM)?t:t.querySelector(eM)}const s1e={display:"none"};function i1e(t){let{id:e,value:n}=t;return ae.createElement("div",{id:e,style:s1e},n)}function a1e(t){let{id:e,announcement:n,ariaLiveType:r="assertive"}=t;const s={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return ae.createElement("div",{id:e,style:s,role:"status","aria-live":r,"aria-atomic":!0},n)}function o1e(){const[t,e]=b.useState("");return{announce:b.useCallback(r=>{r!=null&&e(r)},[]),announcement:t}}const bQ=b.createContext(null);function l1e(t){const e=b.useContext(bQ);b.useEffect(()=>{if(!e)throw new Error("useDndMonitor must be used within a children of ");return e(t)},[t,e])}function c1e(){const[t]=b.useState(()=>new Set),e=b.useCallback(r=>(t.add(r),()=>t.delete(r)),[t]);return[b.useCallback(r=>{let{type:s,event:i}=r;t.forEach(a=>{var l;return(l=a[s])==null?void 0:l.call(a,i)})},[t]),e]}const u1e={draggable:` To pick up a draggable item, press the space bar. While dragging, use the arrow keys to move the item. Press space again to drop the item in its new position, or press escape to cancel. - `},Uxe={onDragStart(t){let{active:e}=t;return"Picked up draggable item "+e.id+"."},onDragOver(t){let{active:e,over:n}=t;return n?"Draggable item "+e.id+" was moved over droppable area "+n.id+".":"Draggable item "+e.id+" is no longer over a droppable area."},onDragEnd(t){let{active:e,over:n}=t;return n?"Draggable item "+e.id+" was dropped over droppable area "+n.id:"Draggable item "+e.id+" was dropped."},onDragCancel(t){let{active:e}=t;return"Dragging was cancelled. Draggable item "+e.id+" was dropped."}};function Wxe(t){let{announcements:e=Uxe,container:n,hiddenTextDescribedById:r,screenReaderInstructions:s=Vxe}=t;const{announce:i,announcement:a}=$xe(),l=og("DndLiveRegion"),[c,d]=b.useState(!1);if(b.useEffect(()=>{d(!0)},[]),Hxe(b.useMemo(()=>({onDragStart(m){let{active:g}=m;i(e.onDragStart({active:g}))},onDragMove(m){let{active:g,over:x}=m;e.onDragMove&&i(e.onDragMove({active:g,over:x}))},onDragOver(m){let{active:g,over:x}=m;i(e.onDragOver({active:g,over:x}))},onDragEnd(m){let{active:g,over:x}=m;i(e.onDragEnd({active:g,over:x}))},onDragCancel(m){let{active:g,over:x}=m;i(e.onDragCancel({active:g,over:x}))}}),[i,e])),!c)return null;const h=ae.createElement(ae.Fragment,null,ae.createElement(Fxe,{id:r,value:s.draggable}),ae.createElement(qxe,{id:l,announcement:a}));return n?pa.createPortal(h,n):h}var us;(function(t){t.DragStart="dragStart",t.DragMove="dragMove",t.DragEnd="dragEnd",t.DragCancel="dragCancel",t.DragOver="dragOver",t.RegisterDroppable="registerDroppable",t.SetDroppableDisabled="setDroppableDisabled",t.UnregisterDroppable="unregisterDroppable"})(us||(us={}));function uy(){}function XM(t,e){return b.useMemo(()=>({sensor:t,options:e??{}}),[t,e])}function Gxe(){for(var t=arguments.length,e=new Array(t),n=0;n[...e].filter(r=>r!=null),[...e])}const Za=Object.freeze({x:0,y:0});function pQ(t,e){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function gQ(t,e){let{data:{value:n}}=t,{data:{value:r}}=e;return n-r}function Xxe(t,e){let{data:{value:n}}=t,{data:{value:r}}=e;return r-n}function YM(t){let{left:e,top:n,height:r,width:s}=t;return[{x:e,y:n},{x:e+s,y:n},{x:e,y:n+r},{x:e+s,y:n+r}]}function xQ(t,e){if(!t||t.length===0)return null;const[n]=t;return n[e]}function KM(t,e,n){return e===void 0&&(e=t.left),n===void 0&&(n=t.top),{x:e+t.width*.5,y:n+t.height*.5}}const Yxe=t=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=KM(e,e.left,e.top),i=[];for(const a of r){const{id:l}=a,c=n.get(l);if(c){const d=pQ(KM(c),s);i.push({id:l,data:{droppableContainer:a,value:d}})}}return i.sort(gQ)},Kxe=t=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=YM(e),i=[];for(const a of r){const{id:l}=a,c=n.get(l);if(c){const d=YM(c),h=s.reduce((g,x,y)=>g+pQ(d[y],x),0),m=Number((h/4).toFixed(4));i.push({id:l,data:{droppableContainer:a,value:m}})}}return i.sort(gQ)};function Zxe(t,e){const n=Math.max(e.top,t.top),r=Math.max(e.left,t.left),s=Math.min(e.left+e.width,t.left+t.width),i=Math.min(e.top+e.height,t.top+t.height),a=s-r,l=i-n;if(r{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=[];for(const i of r){const{id:a}=i,l=n.get(a);if(l){const c=Zxe(l,e);c>0&&s.push({id:a,data:{droppableContainer:i,value:c}})}}return s.sort(Xxe)};function e1e(t,e,n){return{...t,scaleX:e&&n?e.width/n.width:1,scaleY:e&&n?e.height/n.height:1}}function vQ(t,e){return t&&e?{x:t.left-e.left,y:t.top-e.top}:Za}function t1e(t){return function(n){for(var r=arguments.length,s=new Array(r>1?r-1:0),i=1;i({...a,top:a.top+t*l.y,bottom:a.bottom+t*l.y,left:a.left+t*l.x,right:a.right+t*l.x}),{...n})}}const n1e=t1e(1);function r1e(t){if(t.startsWith("matrix3d(")){const e=t.slice(9,-1).split(/, /);return{x:+e[12],y:+e[13],scaleX:+e[0],scaleY:+e[5]}}else if(t.startsWith("matrix(")){const e=t.slice(7,-1).split(/, /);return{x:+e[4],y:+e[5],scaleX:+e[0],scaleY:+e[3]}}return null}function s1e(t,e,n){const r=r1e(e);if(!r)return t;const{scaleX:s,scaleY:i,x:a,y:l}=r,c=t.left-a-(1-s)*parseFloat(n),d=t.top-l-(1-i)*parseFloat(n.slice(n.indexOf(" ")+1)),h=s?t.width/s:t.width,m=i?t.height/i:t.height;return{width:h,height:m,top:d,right:c+h,bottom:d+m,left:c}}const i1e={ignoreTransform:!1};function zf(t,e){e===void 0&&(e=i1e);let n=t.getBoundingClientRect();if(e.ignoreTransform){const{transform:d,transformOrigin:h}=Ti(t).getComputedStyle(t);d&&(n=s1e(n,d,h))}const{top:r,left:s,width:i,height:a,bottom:l,right:c}=n;return{top:r,left:s,width:i,height:a,bottom:l,right:c}}function ZM(t){return zf(t,{ignoreTransform:!0})}function a1e(t){const e=t.innerWidth,n=t.innerHeight;return{top:0,left:0,right:e,bottom:n,width:e,height:n}}function o1e(t,e){return e===void 0&&(e=Ti(t).getComputedStyle(t)),e.position==="fixed"}function l1e(t,e){e===void 0&&(e=Ti(t).getComputedStyle(t));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(s=>{const i=e[s];return typeof i=="string"?n.test(i):!1})}function Nb(t,e){const n=[];function r(s){if(e!=null&&n.length>=e||!s)return n;if(G6(s)&&s.scrollingElement!=null&&!n.includes(s.scrollingElement))return n.push(s.scrollingElement),n;if(!ig(s)||hQ(s)||n.includes(s))return n;const i=Ti(t).getComputedStyle(s);return s!==t&&l1e(s,i)&&n.push(s),o1e(s,i)?n:r(s.parentNode)}return t?r(t):n}function yQ(t){const[e]=Nb(t,1);return e??null}function vS(t){return!jb||!t?null:Df(t)?t:W6(t)?G6(t)||t===Pf(t).scrollingElement?window:ig(t)?t:null:null}function bQ(t){return Df(t)?t.scrollX:t.scrollLeft}function wQ(t){return Df(t)?t.scrollY:t.scrollTop}function yO(t){return{x:bQ(t),y:wQ(t)}}var vs;(function(t){t[t.Forward=1]="Forward",t[t.Backward=-1]="Backward"})(vs||(vs={}));function SQ(t){return!jb||!t?!1:t===document.scrollingElement}function kQ(t){const e={x:0,y:0},n=SQ(t)?{height:window.innerHeight,width:window.innerWidth}:{height:t.clientHeight,width:t.clientWidth},r={x:t.scrollWidth-n.width,y:t.scrollHeight-n.height},s=t.scrollTop<=e.y,i=t.scrollLeft<=e.x,a=t.scrollTop>=r.y,l=t.scrollLeft>=r.x;return{isTop:s,isLeft:i,isBottom:a,isRight:l,maxScroll:r,minScroll:e}}const c1e={x:.2,y:.2};function u1e(t,e,n,r,s){let{top:i,left:a,right:l,bottom:c}=n;r===void 0&&(r=10),s===void 0&&(s=c1e);const{isTop:d,isBottom:h,isLeft:m,isRight:g}=kQ(t),x={x:0,y:0},y={x:0,y:0},w={height:e.height*s.y,width:e.width*s.x};return!d&&i<=e.top+w.height?(x.y=vs.Backward,y.y=r*Math.abs((e.top+w.height-i)/w.height)):!h&&c>=e.bottom-w.height&&(x.y=vs.Forward,y.y=r*Math.abs((e.bottom-w.height-c)/w.height)),!g&&l>=e.right-w.width?(x.x=vs.Forward,y.x=r*Math.abs((e.right-w.width-l)/w.width)):!m&&a<=e.left+w.width&&(x.x=vs.Backward,y.x=r*Math.abs((e.left+w.width-a)/w.width)),{direction:x,speed:y}}function d1e(t){if(t===document.scrollingElement){const{innerWidth:i,innerHeight:a}=window;return{top:0,left:0,right:i,bottom:a,width:i,height:a}}const{top:e,left:n,right:r,bottom:s}=t.getBoundingClientRect();return{top:e,left:n,right:r,bottom:s,width:t.clientWidth,height:t.clientHeight}}function OQ(t){return t.reduce((e,n)=>Fh(e,yO(n)),Za)}function h1e(t){return t.reduce((e,n)=>e+bQ(n),0)}function f1e(t){return t.reduce((e,n)=>e+wQ(n),0)}function m1e(t,e){if(e===void 0&&(e=zf),!t)return;const{top:n,left:r,bottom:s,right:i}=e(t);yQ(t)&&(s<=0||i<=0||n>=window.innerHeight||r>=window.innerWidth)&&t.scrollIntoView({block:"center",inline:"center"})}const p1e=[["x",["left","right"],h1e],["y",["top","bottom"],f1e]];class K6{constructor(e,n){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=Nb(n),s=OQ(r);this.rect={...e},this.width=e.width,this.height=e.height;for(const[i,a,l]of p1e)for(const c of a)Object.defineProperty(this,c,{get:()=>{const d=l(r),h=s[i]-d;return this.rect[c]+h},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class O0{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(n=>{var r;return(r=this.target)==null?void 0:r.removeEventListener(...n)})},this.target=e}add(e,n,r){var s;(s=this.target)==null||s.addEventListener(e,n,r),this.listeners.push([e,n,r])}}function g1e(t){const{EventTarget:e}=Ti(t);return t instanceof e?t:Pf(t)}function yS(t,e){const n=Math.abs(t.x),r=Math.abs(t.y);return typeof e=="number"?Math.sqrt(n**2+r**2)>e:"x"in e&&"y"in e?n>e.x&&r>e.y:"x"in e?n>e.x:"y"in e?r>e.y:!1}var da;(function(t){t.Click="click",t.DragStart="dragstart",t.Keydown="keydown",t.ContextMenu="contextmenu",t.Resize="resize",t.SelectionChange="selectionchange",t.VisibilityChange="visibilitychange"})(da||(da={}));function JM(t){t.preventDefault()}function x1e(t){t.stopPropagation()}var yn;(function(t){t.Space="Space",t.Down="ArrowDown",t.Right="ArrowRight",t.Left="ArrowLeft",t.Up="ArrowUp",t.Esc="Escape",t.Enter="Enter",t.Tab="Tab"})(yn||(yn={}));const jQ={start:[yn.Space,yn.Enter],cancel:[yn.Esc],end:[yn.Space,yn.Enter,yn.Tab]},v1e=(t,e)=>{let{currentCoordinates:n}=e;switch(t.code){case yn.Right:return{...n,x:n.x+25};case yn.Left:return{...n,x:n.x-25};case yn.Down:return{...n,y:n.y+25};case yn.Up:return{...n,y:n.y-25}}};class Z6{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;const{event:{target:n}}=e;this.props=e,this.listeners=new O0(Pf(n)),this.windowListeners=new O0(Ti(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(da.Resize,this.handleCancel),this.windowListeners.add(da.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(da.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:e,onStart:n}=this.props,r=e.node.current;r&&m1e(r),n(Za)}handleKeyDown(e){if(Y6(e)){const{active:n,context:r,options:s}=this.props,{keyboardCodes:i=jQ,coordinateGetter:a=v1e,scrollBehavior:l="smooth"}=s,{code:c}=e;if(i.end.includes(c)){this.handleEnd(e);return}if(i.cancel.includes(c)){this.handleCancel(e);return}const{collisionRect:d}=r.current,h=d?{x:d.left,y:d.top}:Za;this.referenceCoordinates||(this.referenceCoordinates=h);const m=a(e,{active:n,context:r.current,currentCoordinates:h});if(m){const g=lp(m,h),x={x:0,y:0},{scrollableAncestors:y}=r.current;for(const w of y){const S=e.code,{isTop:k,isRight:j,isLeft:N,isBottom:T,maxScroll:E,minScroll:_}=kQ(w),M=d1e(w),I={x:Math.min(S===yn.Right?M.right-M.width/2:M.right,Math.max(S===yn.Right?M.left:M.left+M.width/2,m.x)),y:Math.min(S===yn.Down?M.bottom-M.height/2:M.bottom,Math.max(S===yn.Down?M.top:M.top+M.height/2,m.y))},P=S===yn.Right&&!j||S===yn.Left&&!N,L=S===yn.Down&&!T||S===yn.Up&&!k;if(P&&I.x!==m.x){const H=w.scrollLeft+g.x,U=S===yn.Right&&H<=E.x||S===yn.Left&&H>=_.x;if(U&&!g.y){w.scrollTo({left:H,behavior:l});return}U?x.x=w.scrollLeft-H:x.x=S===yn.Right?w.scrollLeft-E.x:w.scrollLeft-_.x,x.x&&w.scrollBy({left:-x.x,behavior:l});break}else if(L&&I.y!==m.y){const H=w.scrollTop+g.y,U=S===yn.Down&&H<=E.y||S===yn.Up&&H>=_.y;if(U&&!g.x){w.scrollTo({top:H,behavior:l});return}U?x.y=w.scrollTop-H:x.y=S===yn.Down?w.scrollTop-E.y:w.scrollTop-_.y,x.y&&w.scrollBy({top:-x.y,behavior:l});break}}this.handleMove(e,Fh(lp(m,this.referenceCoordinates),x))}}}handleMove(e,n){const{onMove:r}=this.props;e.preventDefault(),r(n)}handleEnd(e){const{onEnd:n}=this.props;e.preventDefault(),this.detach(),n()}handleCancel(e){const{onCancel:n}=this.props;e.preventDefault(),this.detach(),n()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}Z6.activators=[{eventName:"onKeyDown",handler:(t,e,n)=>{let{keyboardCodes:r=jQ,onActivation:s}=e,{active:i}=n;const{code:a}=t.nativeEvent;if(r.start.includes(a)){const l=i.activatorNode.current;return l&&t.target!==l?!1:(t.preventDefault(),s?.({event:t.nativeEvent}),!0)}return!1}}];function eA(t){return!!(t&&"distance"in t)}function tA(t){return!!(t&&"delay"in t)}class J6{constructor(e,n,r){var s;r===void 0&&(r=g1e(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=n;const{event:i}=e,{target:a}=i;this.props=e,this.events=n,this.document=Pf(a),this.documentListeners=new O0(this.document),this.listeners=new O0(r),this.windowListeners=new O0(Ti(a)),this.initialCoordinates=(s=vO(i))!=null?s:Za,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:e,props:{options:{activationConstraint:n,bypassActivationConstraint:r}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(da.Resize,this.handleCancel),this.windowListeners.add(da.DragStart,JM),this.windowListeners.add(da.VisibilityChange,this.handleCancel),this.windowListeners.add(da.ContextMenu,JM),this.documentListeners.add(da.Keydown,this.handleKeydown),n){if(r!=null&&r({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(tA(n)){this.timeoutId=setTimeout(this.handleStart,n.delay),this.handlePending(n);return}if(eA(n)){this.handlePending(n);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,n){const{active:r,onPending:s}=this.props;s(r,e,this.initialCoordinates,n)}handleStart(){const{initialCoordinates:e}=this,{onStart:n}=this.props;e&&(this.activated=!0,this.documentListeners.add(da.Click,x1e,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(da.SelectionChange,this.removeTextSelection),n(e))}handleMove(e){var n;const{activated:r,initialCoordinates:s,props:i}=this,{onMove:a,options:{activationConstraint:l}}=i;if(!s)return;const c=(n=vO(e))!=null?n:Za,d=lp(s,c);if(!r&&l){if(eA(l)){if(l.tolerance!=null&&yS(d,l.tolerance))return this.handleCancel();if(yS(d,l.distance))return this.handleStart()}if(tA(l)&&yS(d,l.tolerance))return this.handleCancel();this.handlePending(l,d);return}e.cancelable&&e.preventDefault(),a(c)}handleEnd(){const{onAbort:e,onEnd:n}=this.props;this.detach(),this.activated||e(this.props.active),n()}handleCancel(){const{onAbort:e,onCancel:n}=this.props;this.detach(),this.activated||e(this.props.active),n()}handleKeydown(e){e.code===yn.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}}const y1e={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class eN extends J6{constructor(e){const{event:n}=e,r=Pf(n.target);super(e,y1e,r)}}eN.activators=[{eventName:"onPointerDown",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];const b1e={move:{name:"mousemove"},end:{name:"mouseup"}};var bO;(function(t){t[t.RightClick=2]="RightClick"})(bO||(bO={}));class w1e extends J6{constructor(e){super(e,b1e,Pf(e.event.target))}}w1e.activators=[{eventName:"onMouseDown",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;return n.button===bO.RightClick?!1:(r?.({event:n}),!0)}}];const bS={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class S1e extends J6{constructor(e){super(e,bS)}static setup(){return window.addEventListener(bS.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(bS.move.name,e)};function e(){}}}S1e.activators=[{eventName:"onTouchStart",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;const{touches:s}=n;return s.length>1?!1:(r?.({event:n}),!0)}}];var j0;(function(t){t[t.Pointer=0]="Pointer",t[t.DraggableRect=1]="DraggableRect"})(j0||(j0={}));var dy;(function(t){t[t.TreeOrder=0]="TreeOrder",t[t.ReversedTreeOrder=1]="ReversedTreeOrder"})(dy||(dy={}));function k1e(t){let{acceleration:e,activator:n=j0.Pointer,canScroll:r,draggingRect:s,enabled:i,interval:a=5,order:l=dy.TreeOrder,pointerCoordinates:c,scrollableAncestors:d,scrollableAncestorRects:h,delta:m,threshold:g}=t;const x=j1e({delta:m,disabled:!i}),[y,w]=Pxe(),S=b.useRef({x:0,y:0}),k=b.useRef({x:0,y:0}),j=b.useMemo(()=>{switch(n){case j0.Pointer:return c?{top:c.y,bottom:c.y,left:c.x,right:c.x}:null;case j0.DraggableRect:return s}},[n,s,c]),N=b.useRef(null),T=b.useCallback(()=>{const _=N.current;if(!_)return;const M=S.current.x*k.current.x,I=S.current.y*k.current.y;_.scrollBy(M,I)},[]),E=b.useMemo(()=>l===dy.TreeOrder?[...d].reverse():d,[l,d]);b.useEffect(()=>{if(!i||!d.length||!j){w();return}for(const _ of E){if(r?.(_)===!1)continue;const M=d.indexOf(_),I=h[M];if(!I)continue;const{direction:P,speed:L}=u1e(_,I,j,e,g);for(const H of["x","y"])x[H][P[H]]||(L[H]=0,P[H]=0);if(L.x>0||L.y>0){w(),N.current=_,y(T,a),S.current=L,k.current=P;return}}S.current={x:0,y:0},k.current={x:0,y:0},w()},[e,T,r,w,i,a,JSON.stringify(j),JSON.stringify(x),y,d,E,h,JSON.stringify(g)])}const O1e={x:{[vs.Backward]:!1,[vs.Forward]:!1},y:{[vs.Backward]:!1,[vs.Forward]:!1}};function j1e(t){let{delta:e,disabled:n}=t;const r=xO(e);return ag(s=>{if(n||!r||!s)return O1e;const i={x:Math.sign(e.x-r.x),y:Math.sign(e.y-r.y)};return{x:{[vs.Backward]:s.x[vs.Backward]||i.x===-1,[vs.Forward]:s.x[vs.Forward]||i.x===1},y:{[vs.Backward]:s.y[vs.Backward]||i.y===-1,[vs.Forward]:s.y[vs.Forward]||i.y===1}}},[n,e,r])}function N1e(t,e){const n=e!=null?t.get(e):void 0,r=n?n.node.current:null;return ag(s=>{var i;return e==null?null:(i=r??s)!=null?i:null},[r,e])}function C1e(t,e){return b.useMemo(()=>t.reduce((n,r)=>{const{sensor:s}=r,i=s.activators.map(a=>({eventName:a.eventName,handler:e(a.handler,r)}));return[...n,...i]},[]),[t,e])}var up;(function(t){t[t.Always=0]="Always",t[t.BeforeDragging=1]="BeforeDragging",t[t.WhileDragging=2]="WhileDragging"})(up||(up={}));var wO;(function(t){t.Optimized="optimized"})(wO||(wO={}));const nA=new Map;function T1e(t,e){let{dragging:n,dependencies:r,config:s}=e;const[i,a]=b.useState(null),{frequency:l,measure:c,strategy:d}=s,h=b.useRef(t),m=S(),g=op(m),x=b.useCallback(function(k){k===void 0&&(k=[]),!g.current&&a(j=>j===null?k:j.concat(k.filter(N=>!j.includes(N))))},[g]),y=b.useRef(null),w=ag(k=>{if(m&&!n)return nA;if(!k||k===nA||h.current!==t||i!=null){const j=new Map;for(let N of t){if(!N)continue;if(i&&i.length>0&&!i.includes(N.id)&&N.rect.current){j.set(N.id,N.rect.current);continue}const T=N.node.current,E=T?new K6(c(T),T):null;N.rect.current=E,E&&j.set(N.id,E)}return j}return k},[t,i,n,m,c]);return b.useEffect(()=>{h.current=t},[t]),b.useEffect(()=>{m||x()},[n,m]),b.useEffect(()=>{i&&i.length>0&&a(null)},[JSON.stringify(i)]),b.useEffect(()=>{m||typeof l!="number"||y.current!==null||(y.current=setTimeout(()=>{x(),y.current=null},l))},[l,m,x,...r]),{droppableRects:w,measureDroppableContainers:x,measuringScheduled:i!=null};function S(){switch(d){case up.Always:return!1;case up.BeforeDragging:return n;default:return!n}}}function NQ(t,e){return ag(n=>t?n||(typeof e=="function"?e(t):t):null,[e,t])}function E1e(t,e){return NQ(t,e)}function _1e(t){let{callback:e,disabled:n}=t;const r=X6(e),s=b.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:i}=window;return new i(r)},[r,n]);return b.useEffect(()=>()=>s?.disconnect(),[s]),s}function Cb(t){let{callback:e,disabled:n}=t;const r=X6(e),s=b.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:i}=window;return new i(r)},[n]);return b.useEffect(()=>()=>s?.disconnect(),[s]),s}function M1e(t){return new K6(zf(t),t)}function rA(t,e,n){e===void 0&&(e=M1e);const[r,s]=b.useState(null);function i(){s(c=>{if(!t)return null;if(t.isConnected===!1){var d;return(d=c??n)!=null?d:null}const h=e(t);return JSON.stringify(c)===JSON.stringify(h)?c:h})}const a=_1e({callback(c){if(t)for(const d of c){const{type:h,target:m}=d;if(h==="childList"&&m instanceof HTMLElement&&m.contains(t)){i();break}}}}),l=Cb({callback:i});return Lo(()=>{i(),t?(l?.observe(t),a?.observe(document.body,{childList:!0,subtree:!0})):(l?.disconnect(),a?.disconnect())},[t]),r}function A1e(t){const e=NQ(t);return vQ(t,e)}const sA=[];function R1e(t){const e=b.useRef(t),n=ag(r=>t?r&&r!==sA&&t&&e.current&&t.parentNode===e.current.parentNode?r:Nb(t):sA,[t]);return b.useEffect(()=>{e.current=t},[t]),n}function D1e(t){const[e,n]=b.useState(null),r=b.useRef(t),s=b.useCallback(i=>{const a=vS(i.target);a&&n(l=>l?(l.set(a,yO(a)),new Map(l)):null)},[]);return b.useEffect(()=>{const i=r.current;if(t!==i){a(i);const l=t.map(c=>{const d=vS(c);return d?(d.addEventListener("scroll",s,{passive:!0}),[d,yO(d)]):null}).filter(c=>c!=null);n(l.length?new Map(l):null),r.current=t}return()=>{a(t),a(i)};function a(l){l.forEach(c=>{const d=vS(c);d?.removeEventListener("scroll",s)})}},[s,t]),b.useMemo(()=>t.length?e?Array.from(e.values()).reduce((i,a)=>Fh(i,a),Za):OQ(t):Za,[t,e])}function iA(t,e){e===void 0&&(e=[]);const n=b.useRef(null);return b.useEffect(()=>{n.current=null},e),b.useEffect(()=>{const r=t!==Za;r&&!n.current&&(n.current=t),!r&&n.current&&(n.current=null)},[t]),n.current?lp(t,n.current):Za}function P1e(t){b.useEffect(()=>{if(!jb)return;const e=t.map(n=>{let{sensor:r}=n;return r.setup==null?void 0:r.setup()});return()=>{for(const n of e)n?.()}},t.map(e=>{let{sensor:n}=e;return n}))}function z1e(t,e){return b.useMemo(()=>t.reduce((n,r)=>{let{eventName:s,handler:i}=r;return n[s]=a=>{i(a,e)},n},{}),[t,e])}function CQ(t){return b.useMemo(()=>t?a1e(t):null,[t])}const aA=[];function I1e(t,e){e===void 0&&(e=zf);const[n]=t,r=CQ(n?Ti(n):null),[s,i]=b.useState(aA);function a(){i(()=>t.length?t.map(c=>SQ(c)?r:new K6(e(c),c)):aA)}const l=Cb({callback:a});return Lo(()=>{l?.disconnect(),a(),t.forEach(c=>l?.observe(c))},[t]),s}function L1e(t){if(!t)return null;if(t.children.length>1)return t;const e=t.children[0];return ig(e)?e:t}function B1e(t){let{measure:e}=t;const[n,r]=b.useState(null),s=b.useCallback(d=>{for(const{target:h}of d)if(ig(h)){r(m=>{const g=e(h);return m?{...m,width:g.width,height:g.height}:g});break}},[e]),i=Cb({callback:s}),a=b.useCallback(d=>{const h=L1e(d);i?.disconnect(),h&&i?.observe(h),r(h?e(h):null)},[e,i]),[l,c]=cy(a);return b.useMemo(()=>({nodeRef:l,rect:n,setRef:c}),[n,l,c])}const F1e=[{sensor:eN,options:{}},{sensor:Z6,options:{}}],q1e={current:{}},yv={draggable:{measure:ZM},droppable:{measure:ZM,strategy:up.WhileDragging,frequency:wO.Optimized},dragOverlay:{measure:zf}};class N0 extends Map{get(e){var n;return e!=null&&(n=super.get(e))!=null?n:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:n}=e;return!n})}getNodeFor(e){var n,r;return(n=(r=this.get(e))==null?void 0:r.node.current)!=null?n:void 0}}const $1e={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new N0,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:uy},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:yv,measureDroppableContainers:uy,windowRect:null,measuringScheduled:!1},H1e={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:uy,draggableNodes:new Map,over:null,measureDroppableContainers:uy},Tb=b.createContext(H1e),TQ=b.createContext($1e);function Q1e(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new N0}}}function V1e(t,e){switch(e.type){case us.DragStart:return{...t,draggable:{...t.draggable,initialCoordinates:e.initialCoordinates,active:e.active}};case us.DragMove:return t.draggable.active==null?t:{...t,draggable:{...t.draggable,translate:{x:e.coordinates.x-t.draggable.initialCoordinates.x,y:e.coordinates.y-t.draggable.initialCoordinates.y}}};case us.DragEnd:case us.DragCancel:return{...t,draggable:{...t.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case us.RegisterDroppable:{const{element:n}=e,{id:r}=n,s=new N0(t.droppable.containers);return s.set(r,n),{...t,droppable:{...t.droppable,containers:s}}}case us.SetDroppableDisabled:{const{id:n,key:r,disabled:s}=e,i=t.droppable.containers.get(n);if(!i||r!==i.key)return t;const a=new N0(t.droppable.containers);return a.set(n,{...i,disabled:s}),{...t,droppable:{...t.droppable,containers:a}}}case us.UnregisterDroppable:{const{id:n,key:r}=e,s=t.droppable.containers.get(n);if(!s||r!==s.key)return t;const i=new N0(t.droppable.containers);return i.delete(n),{...t,droppable:{...t.droppable,containers:i}}}default:return t}}function U1e(t){let{disabled:e}=t;const{active:n,activatorEvent:r,draggableNodes:s}=b.useContext(Tb),i=xO(r),a=xO(n?.id);return b.useEffect(()=>{if(!e&&!r&&i&&a!=null){if(!Y6(i)||document.activeElement===i.target)return;const l=s.get(a);if(!l)return;const{activatorNode:c,node:d}=l;if(!c.current&&!d.current)return;requestAnimationFrame(()=>{for(const h of[c.current,d.current]){if(!h)continue;const m=Lxe(h);if(m){m.focus();break}}})}},[r,e,s,a,i]),null}function W1e(t,e){let{transform:n,...r}=e;return t!=null&&t.length?t.reduce((s,i)=>i({transform:s,...r}),n):n}function G1e(t){return b.useMemo(()=>({draggable:{...yv.draggable,...t?.draggable},droppable:{...yv.droppable,...t?.droppable},dragOverlay:{...yv.dragOverlay,...t?.dragOverlay}}),[t?.draggable,t?.droppable,t?.dragOverlay])}function X1e(t){let{activeNode:e,measure:n,initialRect:r,config:s=!0}=t;const i=b.useRef(!1),{x:a,y:l}=typeof s=="boolean"?{x:s,y:s}:s;Lo(()=>{if(!a&&!l||!e){i.current=!1;return}if(i.current||!r)return;const d=e?.node.current;if(!d||d.isConnected===!1)return;const h=n(d),m=vQ(h,r);if(a||(m.x=0),l||(m.y=0),i.current=!0,Math.abs(m.x)>0||Math.abs(m.y)>0){const g=yQ(d);g&&g.scrollBy({top:m.y,left:m.x})}},[e,a,l,r,n])}const EQ=b.createContext({...Za,scaleX:1,scaleY:1});var Rc;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.Initializing=1]="Initializing",t[t.Initialized=2]="Initialized"})(Rc||(Rc={}));const Y1e=b.memo(function(e){var n,r,s,i;let{id:a,accessibility:l,autoScroll:c=!0,children:d,sensors:h=F1e,collisionDetection:m=Jxe,measuring:g,modifiers:x,...y}=e;const w=b.useReducer(V1e,void 0,Q1e),[S,k]=w,[j,N]=Qxe(),[T,E]=b.useState(Rc.Uninitialized),_=T===Rc.Initialized,{draggable:{active:M,nodes:I,translate:P},droppable:{containers:L}}=S,H=M!=null?I.get(M):null,U=b.useRef({initial:null,translated:null}),ee=b.useMemo(()=>{var Kt;return M!=null?{id:M,data:(Kt=H?.data)!=null?Kt:q1e,rect:U}:null},[M,H]),z=b.useRef(null),[Q,B]=b.useState(null),[X,J]=b.useState(null),G=op(y,Object.values(y)),R=og("DndDescribedBy",a),ie=b.useMemo(()=>L.getEnabled(),[L]),W=G1e(g),{droppableRects:q,measureDroppableContainers:V,measuringScheduled:te}=T1e(ie,{dragging:_,dependencies:[P.x,P.y],config:W.droppable}),ne=N1e(I,M),K=b.useMemo(()=>X?vO(X):null,[X]),se=nn(),re=E1e(ne,W.draggable.measure);X1e({activeNode:M!=null?I.get(M):null,config:se.layoutShiftCompensation,initialRect:re,measure:W.draggable.measure});const oe=rA(ne,W.draggable.measure,re),Te=rA(ne?ne.parentElement:null),We=b.useRef({activatorEvent:null,active:null,activeNode:ne,collisionRect:null,collisions:null,droppableRects:q,draggableNodes:I,draggingNode:null,draggingNodeRect:null,droppableContainers:L,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),Ye=L.getNodeFor((n=We.current.over)==null?void 0:n.id),Je=B1e({measure:W.dragOverlay.measure}),Oe=(r=Je.nodeRef.current)!=null?r:ne,Ve=_?(s=Je.rect)!=null?s:oe:null,Ue=!!(Je.nodeRef.current&&Je.rect),He=A1e(Ue?null:oe),Ot=CQ(Oe?Ti(Oe):null),xt=R1e(_?Ye??ne:null),kn=I1e(xt),It=W1e(x,{transform:{x:P.x-He.x,y:P.y-He.y,scaleX:1,scaleY:1},activatorEvent:X,active:ee,activeNodeRect:oe,containerNodeRect:Te,draggingNodeRect:Ve,over:We.current.over,overlayNodeRect:Je.rect,scrollableAncestors:xt,scrollableAncestorRects:kn,windowRect:Ot}),Yt=K?Fh(K,P):null,_t=D1e(xt),mt=iA(_t),Ne=iA(_t,[oe]),Ie=Fh(It,mt),st=Ve?n1e(Ve,It):null,yt=ee&&st?m({active:ee,collisionRect:st,droppableRects:q,droppableContainers:ie,pointerCoordinates:Yt}):null,Pt=xQ(yt,"id"),[At,zn]=b.useState(null),Fe=Ue?It:Fh(It,Ne),rt=e1e(Fe,(i=At?.rect)!=null?i:null,oe),tn=b.useRef(null),Rt=b.useCallback((Kt,pt)=>{let{sensor:xr,options:Ur}=pt;if(z.current==null)return;const Wr=I.get(z.current);if(!Wr)return;const vr=Kt.nativeEvent,In=new xr({active:z.current,activeNode:Wr,event:vr,options:Ur,context:We,onAbort(nr){if(!I.get(nr))return;const{onDragAbort:gs}=G.current,js={id:nr};gs?.(js),j({type:"onDragAbort",event:js})},onPending(nr,ps,gs,js){if(!I.get(nr))return;const{onDragPending:Le}=G.current,Ct={id:nr,constraint:ps,initialCoordinates:gs,offset:js};Le?.(Ct),j({type:"onDragPending",event:Ct})},onStart(nr){const ps=z.current;if(ps==null)return;const gs=I.get(ps);if(!gs)return;const{onDragStart:js}=G.current,ge={activatorEvent:vr,active:{id:ps,data:gs.data,rect:U}};pa.unstable_batchedUpdates(()=>{js?.(ge),E(Rc.Initializing),k({type:us.DragStart,initialCoordinates:nr,active:ps}),j({type:"onDragStart",event:ge}),B(tn.current),J(vr)})},onMove(nr){k({type:us.DragMove,coordinates:nr})},onEnd:cr(us.DragEnd),onCancel:cr(us.DragCancel)});tn.current=In;function cr(nr){return async function(){const{active:gs,collisions:js,over:ge,scrollAdjustedTranslate:Le}=We.current;let Ct=null;if(gs&&Le){const{cancelDrop:xn}=G.current;Ct={activatorEvent:vr,active:gs,collisions:js,delta:Le,over:ge},nr===us.DragEnd&&typeof xn=="function"&&await Promise.resolve(xn(Ct))&&(nr=us.DragCancel)}z.current=null,pa.unstable_batchedUpdates(()=>{k({type:nr}),E(Rc.Uninitialized),zn(null),B(null),J(null),tn.current=null;const xn=nr===us.DragEnd?"onDragEnd":"onDragCancel";if(Ct){const Fr=G.current[xn];Fr?.(Ct),j({type:xn,event:Ct})}})}}},[I]),ke=b.useCallback((Kt,pt)=>(xr,Ur)=>{const Wr=xr.nativeEvent,vr=I.get(Ur);if(z.current!==null||!vr||Wr.dndKit||Wr.defaultPrevented)return;const In={active:vr};Kt(xr,pt.options,In)===!0&&(Wr.dndKit={capturedBy:pt.sensor},z.current=Ur,Rt(xr,pt))},[I,Rt]),Pe=C1e(h,ke);P1e(h),Lo(()=>{oe&&T===Rc.Initializing&&E(Rc.Initialized)},[oe,T]),b.useEffect(()=>{const{onDragMove:Kt}=G.current,{active:pt,activatorEvent:xr,collisions:Ur,over:Wr}=We.current;if(!pt||!xr)return;const vr={active:pt,activatorEvent:xr,collisions:Ur,delta:{x:Ie.x,y:Ie.y},over:Wr};pa.unstable_batchedUpdates(()=>{Kt?.(vr),j({type:"onDragMove",event:vr})})},[Ie.x,Ie.y]),b.useEffect(()=>{const{active:Kt,activatorEvent:pt,collisions:xr,droppableContainers:Ur,scrollAdjustedTranslate:Wr}=We.current;if(!Kt||z.current==null||!pt||!Wr)return;const{onDragOver:vr}=G.current,In=Ur.get(Pt),cr=In&&In.rect.current?{id:In.id,rect:In.rect.current,data:In.data,disabled:In.disabled}:null,nr={active:Kt,activatorEvent:pt,collisions:xr,delta:{x:Wr.x,y:Wr.y},over:cr};pa.unstable_batchedUpdates(()=>{zn(cr),vr?.(nr),j({type:"onDragOver",event:nr})})},[Pt]),Lo(()=>{We.current={activatorEvent:X,active:ee,activeNode:ne,collisionRect:st,collisions:yt,droppableRects:q,draggableNodes:I,draggingNode:Oe,draggingNodeRect:Ve,droppableContainers:L,over:At,scrollableAncestors:xt,scrollAdjustedTranslate:Ie},U.current={initial:Ve,translated:st}},[ee,ne,yt,st,I,Oe,Ve,q,L,At,xt,Ie]),k1e({...se,delta:P,draggingRect:st,pointerCoordinates:Yt,scrollableAncestors:xt,scrollableAncestorRects:kn});const it=b.useMemo(()=>({active:ee,activeNode:ne,activeNodeRect:oe,activatorEvent:X,collisions:yt,containerNodeRect:Te,dragOverlay:Je,draggableNodes:I,droppableContainers:L,droppableRects:q,over:At,measureDroppableContainers:V,scrollableAncestors:xt,scrollableAncestorRects:kn,measuringConfiguration:W,measuringScheduled:te,windowRect:Ot}),[ee,ne,oe,X,yt,Te,Je,I,L,q,At,V,xt,kn,W,te,Ot]),ot=b.useMemo(()=>({activatorEvent:X,activators:Pe,active:ee,activeNodeRect:oe,ariaDescribedById:{draggable:R},dispatch:k,draggableNodes:I,over:At,measureDroppableContainers:V}),[X,Pe,ee,oe,k,R,I,At,V]);return ae.createElement(mQ.Provider,{value:N},ae.createElement(Tb.Provider,{value:ot},ae.createElement(TQ.Provider,{value:it},ae.createElement(EQ.Provider,{value:rt},d)),ae.createElement(U1e,{disabled:l?.restoreFocus===!1})),ae.createElement(Wxe,{...l,hiddenTextDescribedById:R}));function nn(){const Kt=Q?.autoScrollEnabled===!1,pt=typeof c=="object"?c.enabled===!1:c===!1,xr=_&&!Kt&&!pt;return typeof c=="object"?{...c,enabled:xr}:{enabled:xr}}}),K1e=b.createContext(null),oA="button",Z1e="Draggable";function J1e(t){let{id:e,data:n,disabled:r=!1,attributes:s}=t;const i=og(Z1e),{activators:a,activatorEvent:l,active:c,activeNodeRect:d,ariaDescribedById:h,draggableNodes:m,over:g}=b.useContext(Tb),{role:x=oA,roleDescription:y="draggable",tabIndex:w=0}=s??{},S=c?.id===e,k=b.useContext(S?EQ:K1e),[j,N]=cy(),[T,E]=cy(),_=z1e(a,e),M=op(n);Lo(()=>(m.set(e,{id:e,key:i,node:j,activatorNode:T,data:M}),()=>{const P=m.get(e);P&&P.key===i&&m.delete(e)}),[m,e]);const I=b.useMemo(()=>({role:x,tabIndex:w,"aria-disabled":r,"aria-pressed":S&&x===oA?!0:void 0,"aria-roledescription":y,"aria-describedby":h.draggable}),[r,x,w,S,y,h.draggable]);return{active:c,activatorEvent:l,activeNodeRect:d,attributes:I,isDragging:S,listeners:r?void 0:_,node:j,over:g,setNodeRef:N,setActivatorNodeRef:E,transform:k}}function eve(){return b.useContext(TQ)}const tve="Droppable",nve={timeout:25};function rve(t){let{data:e,disabled:n=!1,id:r,resizeObserverConfig:s}=t;const i=og(tve),{active:a,dispatch:l,over:c,measureDroppableContainers:d}=b.useContext(Tb),h=b.useRef({disabled:n}),m=b.useRef(!1),g=b.useRef(null),x=b.useRef(null),{disabled:y,updateMeasurementsFor:w,timeout:S}={...nve,...s},k=op(w??r),j=b.useCallback(()=>{if(!m.current){m.current=!0;return}x.current!=null&&clearTimeout(x.current),x.current=setTimeout(()=>{d(Array.isArray(k.current)?k.current:[k.current]),x.current=null},S)},[S]),N=Cb({callback:j,disabled:y||!a}),T=b.useCallback((I,P)=>{N&&(P&&(N.unobserve(P),m.current=!1),I&&N.observe(I))},[N]),[E,_]=cy(T),M=op(e);return b.useEffect(()=>{!N||!E.current||(N.disconnect(),m.current=!1,N.observe(E.current))},[E,N]),b.useEffect(()=>(l({type:us.RegisterDroppable,element:{id:r,key:i,disabled:n,node:E,rect:g,data:M}}),()=>l({type:us.UnregisterDroppable,key:i,id:r})),[r]),b.useEffect(()=>{n!==h.current.disabled&&(l({type:us.SetDroppableDisabled,id:r,key:i,disabled:n}),h.current.disabled=n)},[r,i,n,l]),{active:a,rect:g,isOver:c?.id===r,node:E,over:c,setNodeRef:_}}function tN(t,e,n){const r=t.slice();return r.splice(n<0?r.length+n:n,0,r.splice(e,1)[0]),r}function sve(t,e){return t.reduce((n,r,s)=>{const i=e.get(r);return i&&(n[s]=i),n},Array(t.length))}function k1(t){return t!==null&&t>=0}function ive(t,e){if(t===e)return!0;if(t.length!==e.length)return!1;for(let n=0;n{var e;let{rects:n,activeNodeRect:r,activeIndex:s,overIndex:i,index:a}=t;const l=(e=n[s])!=null?e:r;if(!l)return null;const c=lve(n,a,s);if(a===s){const d=n[i];return d?{x:ss&&a<=i?{x:-l.width-c,y:0,...O1}:a=i?{x:l.width+c,y:0,...O1}:{x:0,y:0,...O1}};function lve(t,e,n){const r=t[e],s=t[e-1],i=t[e+1];return!r||!s&&!i?0:n{let{rects:e,activeIndex:n,overIndex:r,index:s}=t;const i=tN(e,r,n),a=e[s],l=i[s];return!l||!a?null:{x:l.left-a.left,y:l.top-a.top,scaleX:l.width/a.width,scaleY:l.height/a.height}},MQ="Sortable",AQ=ae.createContext({activeIndex:-1,containerId:MQ,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:_Q,disabled:{draggable:!1,droppable:!1}});function cve(t){let{children:e,id:n,items:r,strategy:s=_Q,disabled:i=!1}=t;const{active:a,dragOverlay:l,droppableRects:c,over:d,measureDroppableContainers:h}=eve(),m=og(MQ,n),g=l.rect!==null,x=b.useMemo(()=>r.map(_=>typeof _=="object"&&"id"in _?_.id:_),[r]),y=a!=null,w=a?x.indexOf(a.id):-1,S=d?x.indexOf(d.id):-1,k=b.useRef(x),j=!ive(x,k.current),N=S!==-1&&w===-1||j,T=ave(i);Lo(()=>{j&&y&&h(x)},[j,x,y,h]),b.useEffect(()=>{k.current=x},[x]);const E=b.useMemo(()=>({activeIndex:w,containerId:m,disabled:T,disableTransforms:N,items:x,overIndex:S,useDragOverlay:g,sortedRects:sve(x,c),strategy:s}),[w,m,T.draggable,T.droppable,N,x,S,c,g,s]);return ae.createElement(AQ.Provider,{value:E},e)}const uve=t=>{let{id:e,items:n,activeIndex:r,overIndex:s}=t;return tN(n,r,s).indexOf(e)},dve=t=>{let{containerId:e,isSorting:n,wasDragging:r,index:s,items:i,newIndex:a,previousItems:l,previousContainerId:c,transition:d}=t;return!d||!r||l!==i&&s===a?!1:n?!0:a!==s&&e===c},hve={duration:200,easing:"ease"},RQ="transform",fve=cp.Transition.toString({property:RQ,duration:0,easing:"linear"}),mve={roleDescription:"sortable"};function pve(t){let{disabled:e,index:n,node:r,rect:s}=t;const[i,a]=b.useState(null),l=b.useRef(n);return Lo(()=>{if(!e&&n!==l.current&&r.current){const c=s.current;if(c){const d=zf(r.current,{ignoreTransform:!0}),h={x:c.left-d.left,y:c.top-d.top,scaleX:c.width/d.width,scaleY:c.height/d.height};(h.x||h.y)&&a(h)}}n!==l.current&&(l.current=n)},[e,n,r,s]),b.useEffect(()=>{i&&a(null)},[i]),i}function gve(t){let{animateLayoutChanges:e=dve,attributes:n,disabled:r,data:s,getNewIndex:i=uve,id:a,strategy:l,resizeObserverConfig:c,transition:d=hve}=t;const{items:h,containerId:m,activeIndex:g,disabled:x,disableTransforms:y,sortedRects:w,overIndex:S,useDragOverlay:k,strategy:j}=b.useContext(AQ),N=xve(r,x),T=h.indexOf(a),E=b.useMemo(()=>({sortable:{containerId:m,index:T,items:h},...s}),[m,s,T,h]),_=b.useMemo(()=>h.slice(h.indexOf(a)),[h,a]),{rect:M,node:I,isOver:P,setNodeRef:L}=rve({id:a,data:E,disabled:N.droppable,resizeObserverConfig:{updateMeasurementsFor:_,...c}}),{active:H,activatorEvent:U,activeNodeRect:ee,attributes:z,setNodeRef:Q,listeners:B,isDragging:X,over:J,setActivatorNodeRef:G,transform:R}=J1e({id:a,data:E,attributes:{...mve,...n},disabled:N.draggable}),ie=Dxe(L,Q),W=!!H,q=W&&!y&&k1(g)&&k1(S),V=!k&&X,te=V&&q?R:null,K=q?te??(l??j)({rects:w,activeNodeRect:ee,activeIndex:g,overIndex:S,index:T}):null,se=k1(g)&&k1(S)?i({id:a,items:h,activeIndex:g,overIndex:S}):T,re=H?.id,oe=b.useRef({activeId:re,items:h,newIndex:se,containerId:m}),Te=h!==oe.current.items,We=e({active:H,containerId:m,isDragging:X,isSorting:W,id:a,index:T,items:h,newIndex:oe.current.newIndex,previousItems:oe.current.items,previousContainerId:oe.current.containerId,transition:d,wasDragging:oe.current.activeId!=null}),Ye=pve({disabled:!We,index:T,node:I,rect:M});return b.useEffect(()=>{W&&oe.current.newIndex!==se&&(oe.current.newIndex=se),m!==oe.current.containerId&&(oe.current.containerId=m),h!==oe.current.items&&(oe.current.items=h)},[W,se,m,h]),b.useEffect(()=>{if(re===oe.current.activeId)return;if(re!=null&&oe.current.activeId==null){oe.current.activeId=re;return}const Oe=setTimeout(()=>{oe.current.activeId=re},50);return()=>clearTimeout(Oe)},[re]),{active:H,activeIndex:g,attributes:z,data:E,rect:M,index:T,newIndex:se,items:h,isOver:P,isSorting:W,isDragging:X,listeners:B,node:I,overIndex:S,over:J,setNodeRef:ie,setActivatorNodeRef:G,setDroppableNodeRef:L,setDraggableNodeRef:Q,transform:Ye??K,transition:Je()};function Je(){if(Ye||Te&&oe.current.newIndex===T)return fve;if(!(V&&!Y6(U)||!d)&&(W||We))return cp.Transition.toString({...d,property:RQ})}}function xve(t,e){var n,r;return typeof t=="boolean"?{draggable:t,droppable:!1}:{draggable:(n=t?.draggable)!=null?n:e.draggable,droppable:(r=t?.droppable)!=null?r:e.droppable}}function hy(t){if(!t)return!1;const e=t.data.current;return!!(e&&"sortable"in e&&typeof e.sortable=="object"&&"containerId"in e.sortable&&"items"in e.sortable&&"index"in e.sortable)}const vve=[yn.Down,yn.Right,yn.Up,yn.Left],yve=(t,e)=>{let{context:{active:n,collisionRect:r,droppableRects:s,droppableContainers:i,over:a,scrollableAncestors:l}}=e;if(vve.includes(t.code)){if(t.preventDefault(),!n||!r)return;const c=[];i.getEnabled().forEach(m=>{if(!m||m!=null&&m.disabled)return;const g=s.get(m.id);if(g)switch(t.code){case yn.Down:r.topg.top&&c.push(m);break;case yn.Left:r.left>g.left&&c.push(m);break;case yn.Right:r.left1&&(h=d[1].id),h!=null){const m=i.get(n.id),g=i.get(h),x=g?s.get(g.id):null,y=g?.node.current;if(y&&x&&m&&g){const S=Nb(y).some((_,M)=>l[M]!==_),k=DQ(m,g),j=bve(m,g),N=S||!k?{x:0,y:0}:{x:j?r.width-x.width:0,y:j?r.height-x.height:0},T={x:x.left,y:x.top};return N.x&&N.y?T:lp(T,N)}}}};function DQ(t,e){return!hy(t)||!hy(e)?!1:t.data.current.sortable.containerId===e.data.current.sortable.containerId}function bve(t,e){return!hy(t)||!hy(e)||!DQ(t,e)?!1:t.data.current.sortable.index{h.stopPropagation(),n(t)}})]})})}function Sve({options:t,selected:e,onChange:n,placeholder:r="选择选项...",emptyText:s="未找到选项",className:i}){const[a,l]=b.useState(!1),c=Gxe(XM(eN,{activationConstraint:{distance:8}}),XM(Z6,{coordinateGetter:yve})),d=g=>{e.includes(g)?n(e.filter(x=>x!==g)):n([...e,g])},h=g=>{n(e.filter(x=>x!==g))},m=g=>{const{active:x,over:y}=g;if(y&&x.id!==y.id){const w=e.indexOf(x.id),S=e.indexOf(y.id);n(tN(e,w,S))}};return o.jsxs(Po,{open:a,onOpenChange:l,children:[o.jsx(zo,{asChild:!0,children:o.jsxs(he,{variant:"outline",role:"combobox","aria-expanded":a,className:ve("w-full justify-between min-h-10 h-auto",i),children:[o.jsx(Y1e,{sensors:c,collisionDetection:Yxe,onDragEnd:m,children:o.jsx(cve,{items:e,strategy:ove,children:o.jsx("div",{className:"flex gap-1 flex-wrap flex-1",children:e.length===0?o.jsx("span",{className:"text-muted-foreground",children:r}):e.map(g=>{const x=t.find(y=>y.value===g);return o.jsx(wve,{value:g,label:x?.label||g,onRemove:h},g)})})})}),o.jsx(Tj,{className:"ml-2 h-4 w-4 shrink-0 opacity-50",strokeWidth:2,fill:"none"})]})}),o.jsx(Xa,{className:"w-full p-0",align:"start",children:o.jsxs(vb,{children:[o.jsx(yb,{placeholder:"搜索...",className:"h-9"}),o.jsxs(bb,{children:[o.jsx(wb,{children:s}),o.jsx(rp,{children:t.map(g=>{const x=e.includes(g.value);return o.jsxs(sp,{value:g.value,onSelect:()=>d(g.value),children:[o.jsx("div",{className:ve("mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary",x?"bg-primary text-primary-foreground":"opacity-50 [&_svg]:invisible"),children:o.jsx(Ro,{className:"h-3 w-3",strokeWidth:2,fill:"none"})}),o.jsx("span",{children:g.label})]},g.value)})})]})]})})]})}const lA=new Map,kve=300*1e3;function Ove(){const[t,e]=b.useState([]),[n,r]=b.useState([]),[s,i]=b.useState([]),[a,l]=b.useState([]),[c,d]=b.useState(null),[h,m]=b.useState(!0),[g,x]=b.useState(!1),[y,w]=b.useState(!1),[S,k]=b.useState(!1),[j,N]=b.useState(!1),[T,E]=b.useState(!1),[_,M]=b.useState(!1),[I,P]=b.useState(null),[L,H]=b.useState(null),[U,ee]=b.useState(!1),[z,Q]=b.useState(null),[B,X]=b.useState(""),[J,G]=b.useState(new Set),[R,ie]=b.useState(!1),[W,q]=b.useState(1),[V,te]=b.useState(20),[ne,K]=b.useState(""),[se,re]=b.useState([]),[oe,Te]=b.useState(!1),[We,Ye]=b.useState(null),[Je,Oe]=b.useState(!1),[Ve,Ue]=b.useState(null),{toast:He}=fs(),Ot=Zi(),{registerTour:xt,startTour:kn,state:It,goToStep:Yt}=U6(),_t=b.useRef(null),mt=b.useRef(null),Ne=b.useRef(!0);b.useEffect(()=>{xt(El,uQ)},[xt]),b.useEffect(()=>{if(It.activeTourId===El&&It.isRunning){const ge=dQ[It.stepIndex];ge&&!window.location.pathname.endsWith(ge.replace("/config/",""))&&Ot({to:ge})}},[It.stepIndex,It.activeTourId,It.isRunning,Ot]);const Ie=b.useRef(It.stepIndex);b.useEffect(()=>{if(It.activeTourId===El&&It.isRunning){const ge=Ie.current,Le=It.stepIndex;ge>=12&&ge<=17&&Le<12&&M(!1),Ie.current=Le}},[It.stepIndex,It.activeTourId,It.isRunning]),b.useEffect(()=>{if(It.activeTourId!==El||!It.isRunning)return;const ge=Le=>{const Ct=Le.target,xn=It.stepIndex;xn===2&&Ct.closest('[data-tour="add-provider-button"]')?setTimeout(()=>Yt(3),300):xn===9&&Ct.closest('[data-tour="provider-cancel-button"]')?setTimeout(()=>Yt(10),300):xn===11&&Ct.closest('[data-tour="add-model-button"]')?setTimeout(()=>Yt(12),300):xn===17&&Ct.closest('[data-tour="model-cancel-button"]')?setTimeout(()=>Yt(18),300):xn===18&&Ct.closest('[data-tour="tasks-tab-trigger"]')&&setTimeout(()=>Yt(19),300)};return document.addEventListener("click",ge,!0),()=>document.removeEventListener("click",ge,!0)},[It,Yt]);const st=()=>{kn(El)};b.useEffect(()=>{yt()},[]);const yt=async()=>{try{m(!0);const ge=await Rh(),Le=ge.models||[];e(Le),l(Le.map(xn=>xn.name));const Ct=ge.api_providers||[];r(Ct.map(xn=>xn.name)),i(Ct),d(ge.model_task_config||null),k(!1),Ne.current=!1}catch(ge){console.error("加载配置失败:",ge)}finally{m(!1)}},Pt=b.useCallback(ge=>s.find(Le=>Le.name===ge),[s]),At=b.useCallback(async(ge,Le=!1)=>{const Ct=Pt(ge);if(!Ct?.base_url){re([]),Ue(null),Ye('提供商配置不完整,请先在"模型提供商配置"中配置');return}if(!Ct.api_key){re([]),Ue(null),Ye('该提供商未配置 API Key,请先在"模型提供商配置"中填写');return}const xn=Axe(Ct.base_url);if(Ue(xn),!xn?.modelFetcher){re([]),Ye(null);return}const Fr=`${ge}:${Ct.base_url}`,Cr=lA.get(Fr);if(!Le&&Cr&&Date.now()-Cr.timestamp{_&&I?.api_provider&&At(I.api_provider)},[_,I?.api_provider,At]);const zn=async()=>{try{N(!0),Jy().catch(()=>{}),E(!0)}catch(ge){console.error("重启失败:",ge),E(!1),He({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),N(!1)}},Fe=async()=>{try{x(!0),_t.current&&clearTimeout(_t.current),mt.current&&clearTimeout(mt.current);const ge=await Rh();ge.models=t,ge.model_task_config=c,await zv(ge),k(!1),He({title:"保存成功",description:"正在重启麦麦..."}),await zn()}catch(ge){console.error("保存配置失败:",ge),He({title:"保存失败",description:ge.message,variant:"destructive"}),x(!1)}},rt=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},tn=()=>{E(!1),N(!1),He({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},Rt=b.useCallback(async ge=>{if(!Ne.current)try{w(!0),await dk("models",ge),k(!1)}catch(Le){console.error("自动保存模型列表失败:",Le),k(!0)}finally{w(!1)}},[]),ke=b.useCallback(async ge=>{if(!Ne.current)try{w(!0),await dk("model_task_config",ge),k(!1)}catch(Le){console.error("自动保存任务配置失败:",Le),k(!0)}finally{w(!1)}},[]);b.useEffect(()=>{if(!Ne.current)return k(!0),_t.current&&clearTimeout(_t.current),_t.current=setTimeout(()=>{Rt(t)},2e3),()=>{_t.current&&clearTimeout(_t.current)}},[t,Rt]),b.useEffect(()=>{if(!(Ne.current||!c))return k(!0),mt.current&&clearTimeout(mt.current),mt.current=setTimeout(()=>{ke(c)},2e3),()=>{mt.current&&clearTimeout(mt.current)}},[c,ke]);const Pe=async()=>{try{x(!0),_t.current&&clearTimeout(_t.current),mt.current&&clearTimeout(mt.current);const ge=await Rh();ge.models=t,ge.model_task_config=c,await zv(ge),k(!1),He({title:"保存成功",description:"模型配置已保存"}),await yt()}catch(ge){console.error("保存配置失败:",ge),He({title:"保存失败",description:ge.message,variant:"destructive"})}finally{x(!1)}},it=(ge,Le)=>{P(ge||{model_identifier:"",name:"",api_provider:n[0]||"",price_in:0,price_out:0,force_stream_mode:!1,extra_params:{}}),H(Le),M(!0)},ot=()=>{if(!I)return;const ge={...I,price_in:I.price_in??0,price_out:I.price_out??0};let Le;L!==null?(Le=[...t],Le[L]=ge):Le=[...t,ge],e(Le),l(Le.map(Ct=>Ct.name)),M(!1),P(null),H(null)},nn=ge=>{if(!ge&&I){const Le={...I,price_in:I.price_in??0,price_out:I.price_out??0};P(Le)}M(ge)},Kt=ge=>{Q(ge),ee(!0)},pt=()=>{if(z!==null){const ge=t.filter((Le,Ct)=>Ct!==z);e(ge),l(ge.map(Le=>Le.name)),He({title:"删除成功",description:"模型已从列表中移除"})}ee(!1),Q(null)},xr=ge=>{const Le=new Set(J);Le.has(ge)?Le.delete(ge):Le.add(ge),G(Le)},Ur=()=>{if(J.size===cr.length)G(new Set);else{const ge=cr.map((Le,Ct)=>t.findIndex(xn=>xn===cr[Ct]));G(new Set(ge))}},Wr=()=>{if(J.size===0){He({title:"提示",description:"请先选择要删除的模型",variant:"default"});return}ie(!0)},vr=()=>{const ge=t.filter((Le,Ct)=>!J.has(Ct));e(ge),l(ge.map(Le=>Le.name)),G(new Set),ie(!1),He({title:"批量删除成功",description:`已删除 ${J.size} 个模型`})},In=(ge,Le,Ct)=>{c&&d({...c,[ge]:{...c[ge],[Le]:Ct}})},cr=t.filter(ge=>{if(!B)return!0;const Le=B.toLowerCase();return ge.name.toLowerCase().includes(Le)||ge.model_identifier.toLowerCase().includes(Le)||ge.api_provider.toLowerCase().includes(Le)}),nr=Math.ceil(cr.length/V),ps=cr.slice((W-1)*V,W*V),gs=()=>{const ge=parseInt(ne);ge>=1&&ge<=nr&&(q(ge),K(""))},js=ge=>c?[c.utils?.model_list||[],c.utils_small?.model_list||[],c.tool_use?.model_list||[],c.replyer?.model_list||[],c.planner?.model_list||[],c.vlm?.model_list||[],c.voice?.model_list||[],c.embedding?.model_list||[],c.lpmm_entity_extract?.model_list||[],c.lpmm_rdf_build?.model_list||[],c.lpmm_qa?.model_list||[]].some(Ct=>Ct.includes(ge)):!1;return h?o.jsx(wn,{className:"h-full",children:o.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:o.jsx("div",{className:"flex items-center justify-center h-64",children:o.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):o.jsx(wn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"模型管理与分配"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"添加模型并为模型分配功能"})]}),o.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[o.jsxs(he,{onClick:Pe,disabled:g||y||!S||j,size:"sm",variant:"outline",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[o.jsx($y,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),g?"保存中...":y?"自动保存中...":S?"保存配置":"已保存"]}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs(he,{disabled:g||y||j,size:"sm",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[o.jsx(Cj,{className:"mr-2 h-4 w-4"}),j?"重启中...":S?"保存并重启":"重启麦麦"]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认重启麦麦?"}),o.jsx(_n,{className:"space-y-3",asChild:!0,children:o.jsxs("div",{children:[o.jsx("p",{children:S?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),o.jsxs(ga,{className:"border-yellow-500/50 bg-yellow-500/10",children:[o.jsx(Oa,{className:"h-4 w-4 text-yellow-600"}),o.jsxs(xa,{className:"text-yellow-900 dark:text-yellow-100",children:[o.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",o.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",o.jsxs(Dr,{children:[o.jsx(Sf,{asChild:!0,children:o.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[o.jsx(qy,{className:"h-3 w-3"}),"如何结束程序?"]})}),o.jsxs(Sr,{className:"max-w-2xl",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"如何结束使用重启功能后的麦麦程序"}),o.jsx(ss,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),o.jsxs(ja,{defaultValue:"windows",className:"w-full",children:[o.jsxs(Wi,{className:"grid w-full grid-cols-3",children:[o.jsx(Lt,{value:"windows",children:"Windows"}),o.jsx(Lt,{value:"macos",children:"macOS"}),o.jsx(Lt,{value:"linux",children:"Linux"})]}),o.jsxs(un,{value:"windows",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),o.jsxs("li",{children:['在"进程"或"详细信息"标签页中找到 ',o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),o.jsx("li",{children:'右键点击并选择"结束任务"'})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),o.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),o.jsxs(un,{value:"macos",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"}),' 打开 Spotlight,搜索"活动监视器"']}),o.jsxs("li",{children:["在进程列表中找到 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),o.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]})]}),o.jsxs(un,{value:"linux",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),o.jsx("p",{children:'pkill -9 -f "bot.py"'}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["在终端输入 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),o.jsx(bs,{children:o.jsx(Qj,{asChild:!0,children:o.jsx(he,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:S?Fe:zn,children:S?"保存并重启":"确认重启"})]})]})]})]})]}),o.jsxs(ga,{children:[o.jsx(Oa,{className:"h-4 w-4"}),o.jsxs(xa,{children:["配置更新后需要",o.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),o.jsxs(ga,{className:"hidden lg:flex border-primary/30 bg-primary/5 cursor-pointer hover:bg-primary/10 transition-colors",onClick:st,children:[o.jsx(Pee,{className:"h-4 w-4 text-primary"}),o.jsxs(xa,{className:"flex items-center justify-between",children:[o.jsxs("span",{children:[o.jsx("strong",{className:"text-primary",children:"新手引导:"}),"不知道如何配置模型?点击这里开始学习如何为麦麦的组件分配模型。"]}),o.jsx(he,{variant:"outline",size:"sm",className:"ml-4 shrink-0",children:"开始引导"})]})]}),o.jsxs(ja,{defaultValue:"models",className:"w-full",children:[o.jsxs(Wi,{className:"grid w-full max-w-full sm:max-w-md grid-cols-2",children:[o.jsx(Lt,{value:"models",children:"添加模型"}),o.jsx(Lt,{value:"tasks","data-tour":"tasks-tab-trigger",children:"为模型分配功能"})]}),o.jsxs(un,{value:"models",className:"space-y-4 mt-0",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-2",children:[o.jsx("p",{className:"text-sm text-muted-foreground",children:"配置可用的模型列表"}),o.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[J.size>0&&o.jsxs(he,{onClick:Wr,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[o.jsx(Sn,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",J.size,")"]}),o.jsxs(he,{onClick:()=>it(null,null),size:"sm",variant:"outline",className:"w-full sm:w-auto","data-tour":"add-model-button",children:[o.jsx(zs,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加模型"]})]})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2",children:[o.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[o.jsx(Ni,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(ze,{placeholder:"搜索模型名称、标识符或提供商...",value:B,onChange:ge=>X(ge.target.value),className:"pl-9"})]}),B&&o.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",cr.length," 个结果"]})]}),o.jsx("div",{className:"md:hidden space-y-3",children:ps.length===0?o.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:B?"未找到匹配的模型":"暂无模型配置"}):ps.map((ge,Le)=>{const Ct=t.findIndex(Fr=>Fr===ge),xn=js(ge.name);return o.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-start justify-between gap-2",children:[o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[o.jsx("h3",{className:"font-semibold text-base",children:ge.name}),o.jsx(Xn,{variant:xn?"default":"secondary",className:xn?"bg-green-600 hover:bg-green-700":"",children:xn?"已使用":"未使用"})]}),o.jsx("p",{className:"text-xs text-muted-foreground break-all",title:ge.model_identifier,children:ge.model_identifier})]}),o.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[o.jsxs(he,{variant:"default",size:"sm",onClick:()=>it(ge,Ct),children:[o.jsx(Yu,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),o.jsxs(he,{size:"sm",onClick:()=>Kt(Ct),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Sn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"提供商"}),o.jsx("p",{className:"font-medium",children:ge.api_provider})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"强制流式"}),o.jsx("p",{className:"font-medium",children:ge.force_stream_mode?"是":"否"})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"输入价格"}),o.jsxs("p",{className:"font-medium",children:["¥",ge.price_in,"/M"]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"输出价格"}),o.jsxs("p",{className:"font-medium",children:["¥",ge.price_out,"/M"]})]})]})]},Le)})}),o.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:o.jsx("div",{className:"overflow-x-auto",children:o.jsxs(Tf,{children:[o.jsx(Ef,{children:o.jsxs(Ps,{children:[o.jsx(pn,{className:"w-12",children:o.jsx(Oi,{checked:J.size===cr.length&&cr.length>0,onCheckedChange:Ur})}),o.jsx(pn,{className:"w-24",children:"使用状态"}),o.jsx(pn,{children:"模型名称"}),o.jsx(pn,{children:"模型标识符"}),o.jsx(pn,{children:"提供商"}),o.jsx(pn,{className:"text-right",children:"输入价格"}),o.jsx(pn,{className:"text-right",children:"输出价格"}),o.jsx(pn,{className:"text-center",children:"强制流式"}),o.jsx(pn,{className:"text-right",children:"操作"})]})}),o.jsx(_f,{children:ps.length===0?o.jsx(Ps,{children:o.jsx(Gt,{colSpan:9,className:"text-center text-muted-foreground py-8",children:B?"未找到匹配的模型":"暂无模型配置"})}):ps.map((ge,Le)=>{const Ct=t.findIndex(Fr=>Fr===ge),xn=js(ge.name);return o.jsxs(Ps,{children:[o.jsx(Gt,{children:o.jsx(Oi,{checked:J.has(Ct),onCheckedChange:()=>xr(Ct)})}),o.jsx(Gt,{children:o.jsx(Xn,{variant:xn?"default":"secondary",className:xn?"bg-green-600 hover:bg-green-700":"",children:xn?"已使用":"未使用"})}),o.jsx(Gt,{className:"font-medium",children:ge.name}),o.jsx(Gt,{className:"max-w-xs truncate",title:ge.model_identifier,children:ge.model_identifier}),o.jsx(Gt,{children:ge.api_provider}),o.jsxs(Gt,{className:"text-right",children:["¥",ge.price_in,"/M"]}),o.jsxs(Gt,{className:"text-right",children:["¥",ge.price_out,"/M"]}),o.jsx(Gt,{className:"text-center",children:ge.force_stream_mode?"是":"否"}),o.jsx(Gt,{className:"text-right",children:o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsxs(he,{variant:"default",size:"sm",onClick:()=>it(ge,Ct),children:[o.jsx(Yu,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),o.jsxs(he,{size:"sm",onClick:()=>Kt(Ct),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Sn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},Le)})})]})})}),cr.length>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(de,{htmlFor:"page-size-model",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:V.toString(),onValueChange:ge=>{te(parseInt(ge)),q(1),G(new Set)},children:[o.jsx($t,{id:"page-size-model",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"10",children:"10"}),o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"50",children:"50"}),o.jsx(De,{value:"100",children:"100"})]})]}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(W-1)*V+1," 到"," ",Math.min(W*V,cr.length)," 条,共 ",cr.length," 条"]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{variant:"outline",size:"sm",onClick:()=>q(1),disabled:W===1,className:"hidden sm:flex",children:o.jsx(Ep,{className:"h-4 w-4"})}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>q(ge=>Math.max(1,ge-1)),disabled:W===1,children:[o.jsx(vd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{type:"number",value:ne,onChange:ge=>K(ge.target.value),onKeyDown:ge=>ge.key==="Enter"&&gs(),placeholder:W.toString(),className:"w-16 h-8 text-center",min:1,max:nr}),o.jsx(he,{variant:"outline",size:"sm",onClick:gs,disabled:!ne,className:"h-8",children:"跳转"})]}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>q(ge=>ge+1),disabled:W>=nr,children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(yd,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(he,{variant:"outline",size:"sm",onClick:()=>q(nr),disabled:W>=nr,className:"hidden sm:flex",children:o.jsx(_p,{className:"h-4 w-4"})})]})]})]}),o.jsxs(un,{value:"tasks",className:"space-y-6 mt-0",children:[o.jsx("p",{className:"text-sm text-muted-foreground",children:"为不同的任务配置使用的模型和参数"}),c&&o.jsxs("div",{className:"grid gap-4 sm:gap-6",children:[o.jsx(Fa,{title:"组件模型 (utils)",description:"用于表情包、取名、关系、情绪变化等组件",taskConfig:c.utils,modelNames:a,onChange:(ge,Le)=>In("utils",ge,Le),dataTour:"task-model-select"}),o.jsx(Fa,{title:"组件小模型 (utils_small)",description:"消耗量较大的组件,建议使用速度较快的小模型",taskConfig:c.utils_small,modelNames:a,onChange:(ge,Le)=>In("utils_small",ge,Le)}),o.jsx(Fa,{title:"工具调用模型 (tool_use)",description:"需要使用支持工具调用的模型",taskConfig:c.tool_use,modelNames:a,onChange:(ge,Le)=>In("tool_use",ge,Le)}),o.jsx(Fa,{title:"首要回复模型 (replyer)",description:"用于表达器和表达方式学习",taskConfig:c.replyer,modelNames:a,onChange:(ge,Le)=>In("replyer",ge,Le)}),o.jsx(Fa,{title:"决策模型 (planner)",description:"负责决定麦麦该什么时候回复",taskConfig:c.planner,modelNames:a,onChange:(ge,Le)=>In("planner",ge,Le)}),o.jsx(Fa,{title:"图像识别模型 (vlm)",description:"视觉语言模型",taskConfig:c.vlm,modelNames:a,onChange:(ge,Le)=>In("vlm",ge,Le),hideTemperature:!0}),o.jsx(Fa,{title:"语音识别模型 (voice)",description:"语音转文字",taskConfig:c.voice,modelNames:a,onChange:(ge,Le)=>In("voice",ge,Le),hideTemperature:!0,hideMaxTokens:!0}),o.jsx(Fa,{title:"嵌入模型 (embedding)",description:"用于向量化",taskConfig:c.embedding,modelNames:a,onChange:(ge,Le)=>In("embedding",ge,Le),hideTemperature:!0,hideMaxTokens:!0}),o.jsxs("div",{className:"space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库模型"}),o.jsx(Fa,{title:"实体提取模型 (lpmm_entity_extract)",description:"从文本中提取实体",taskConfig:c.lpmm_entity_extract,modelNames:a,onChange:(ge,Le)=>In("lpmm_entity_extract",ge,Le)}),o.jsx(Fa,{title:"RDF 构建模型 (lpmm_rdf_build)",description:"构建知识图谱",taskConfig:c.lpmm_rdf_build,modelNames:a,onChange:(ge,Le)=>In("lpmm_rdf_build",ge,Le)}),o.jsx(Fa,{title:"问答模型 (lpmm_qa)",description:"知识库问答",taskConfig:c.lpmm_qa,modelNames:a,onChange:(ge,Le)=>In("lpmm_qa",ge,Le)})]})]})]})]}),o.jsx(Dr,{open:_,onOpenChange:nn,children:o.jsxs(Sr,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"model-dialog",preventOutsideClose:It.isRunning,children:[o.jsxs(kr,{children:[o.jsx(Or,{children:L!==null?"编辑模型":"添加模型"}),o.jsx(ss,{children:"配置模型的基本信息和参数"})]}),o.jsxs("div",{className:"grid gap-4 py-4",children:[o.jsxs("div",{className:"grid gap-2","data-tour":"model-name-input",children:[o.jsx(de,{htmlFor:"model_name",children:"模型名称 *"}),o.jsx(ze,{id:"model_name",value:I?.name||"",onChange:ge=>P(Le=>Le?{...Le,name:ge.target.value}:null),placeholder:"例如: qwen3-30b"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"用于在任务配置中引用此模型"})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"model-provider-select",children:[o.jsx(de,{htmlFor:"api_provider",children:"API 提供商 *"}),o.jsxs(Vt,{value:I?.api_provider||"",onValueChange:ge=>{P(Le=>Le?{...Le,api_provider:ge}:null),re([]),Ye(null)},children:[o.jsx($t,{id:"api_provider",children:o.jsx(Ut,{placeholder:"选择提供商"})}),o.jsx(Ht,{children:n.map(ge=>o.jsx(De,{value:ge,children:ge},ge))})]})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"model-identifier-input",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(de,{htmlFor:"model_identifier",children:"模型标识符 *"}),Ve?.modelFetcher&&o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Xn,{variant:"secondary",className:"text-xs",children:Ve.display_name}),o.jsx(he,{variant:"ghost",size:"sm",className:"h-6 px-2",onClick:()=>I?.api_provider&&At(I.api_provider,!0),disabled:oe,children:oe?o.jsx(Uc,{className:"h-3 w-3 animate-spin"}):o.jsx(Qs,{className:"h-3 w-3"})})]})]}),Ve?.modelFetcher?o.jsxs(Po,{open:Je,onOpenChange:Oe,children:[o.jsx(zo,{asChild:!0,children:o.jsxs(he,{variant:"outline",role:"combobox","aria-expanded":Je,className:"w-full justify-between font-normal",disabled:oe||!!We,children:[oe?o.jsxs("span",{className:"flex items-center gap-2 text-muted-foreground",children:[o.jsx(Uc,{className:"h-4 w-4 animate-spin"}),"正在获取模型列表..."]}):We?o.jsx("span",{className:"text-muted-foreground text-sm",children:"点击下方输入框手动填写"}):I?.model_identifier?o.jsx("span",{className:"truncate",children:I.model_identifier}):o.jsx("span",{className:"text-muted-foreground",children:"搜索或选择模型..."}),o.jsx(Tj,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),o.jsx(Xa,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:o.jsxs(vb,{children:[o.jsx(yb,{placeholder:"搜索模型..."}),o.jsx(wn,{className:"h-[300px]",children:o.jsxs(bb,{className:"max-h-none overflow-visible",children:[o.jsx(wb,{children:We?o.jsxs("div",{className:"py-4 px-2 text-center space-y-2",children:[o.jsx("p",{className:"text-sm text-destructive",children:We}),!We.includes("API Key")&&o.jsx(he,{variant:"link",size:"sm",onClick:()=>I?.api_provider&&At(I.api_provider,!0),children:"重试"})]}):"未找到匹配的模型"}),o.jsx(rp,{heading:"可用模型",children:se.map(ge=>o.jsxs(sp,{value:ge.id,onSelect:()=>{P(Le=>Le?{...Le,model_identifier:ge.id}:null),Oe(!1)},children:[o.jsx(Ro,{className:`mr-2 h-4 w-4 ${I?.model_identifier===ge.id?"opacity-100":"opacity-0"}`}),o.jsxs("div",{className:"flex flex-col",children:[o.jsx("span",{children:ge.id}),ge.name!==ge.id&&o.jsx("span",{className:"text-xs text-muted-foreground",children:ge.name})]})]},ge.id))}),o.jsx(rp,{heading:"手动输入",children:o.jsxs(sp,{value:"__manual_input__",onSelect:()=>{Oe(!1)},children:[o.jsx(Yu,{className:"mr-2 h-4 w-4"}),"手动输入模型标识符..."]})})]})})]})})]}):o.jsx(ze,{id:"model_identifier",value:I?.model_identifier||"",onChange:ge=>P(Le=>Le?{...Le,model_identifier:ge.target.value}:null),placeholder:"Qwen/Qwen3-30B-A3B-Instruct-2507"}),We&&Ve?.modelFetcher&&o.jsxs(ga,{variant:"destructive",className:"mt-2 py-2",children:[o.jsx(Oa,{className:"h-4 w-4"}),o.jsx(xa,{className:"text-xs",children:We})]}),Ve?.modelFetcher&&o.jsx(ze,{value:I?.model_identifier||"",onChange:ge=>P(Le=>Le?{...Le,model_identifier:ge.target.value}:null),placeholder:"或手动输入模型标识符",className:"mt-2"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:We?'请手动输入模型标识符,或前往"模型提供商配置"检查 API Key':Ve?.modelFetcher?`已识别为 ${Ve.display_name},支持自动获取模型列表`:"API 提供商提供的模型 ID"})]}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"price_in",children:"输入价格 (¥/M token)"}),o.jsx(ze,{id:"price_in",type:"number",step:"0.1",min:"0",value:I?.price_in??"",onChange:ge=>{const Le=ge.target.value===""?null:parseFloat(ge.target.value);P(Ct=>Ct?{...Ct,price_in:Le}:null)},placeholder:"默认: 0"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"price_out",children:"输出价格 (¥/M token)"}),o.jsx(ze,{id:"price_out",type:"number",step:"0.1",min:"0",value:I?.price_out??"",onChange:ge=>{const Le=ge.target.value===""?null:parseFloat(ge.target.value);P(Ct=>Ct?{...Ct,price_out:Le}:null)},placeholder:"默认: 0"})]})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"force_stream_mode",checked:I?.force_stream_mode||!1,onCheckedChange:ge=>P(Le=>Le?{...Le,force_stream_mode:ge}:null)}),o.jsx(de,{htmlFor:"force_stream_mode",className:"cursor-pointer",children:"强制流式输出模式"})]})]}),o.jsxs(bs,{children:[o.jsx(he,{variant:"outline",onClick:()=>M(!1),"data-tour":"model-cancel-button",children:"取消"}),o.jsx(he,{onClick:ot,"data-tour":"model-save-button",children:"保存"})]})]})}),o.jsx(Dn,{open:U,onOpenChange:ee,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除模型 "',z!==null?t[z]?.name:"",'" 吗? 此操作无法撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:pt,children:"删除"})]})]})}),o.jsx(Dn,{open:R,onOpenChange:ie,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认批量删除"}),o.jsxs(_n,{children:["确定要删除选中的 ",J.size," 个模型吗? 此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:vr,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),T&&o.jsx(Wj,{onRestartComplete:rt,onRestartFailed:tn})]})})}function Fa({title:t,description:e,taskConfig:n,modelNames:r,onChange:s,hideTemperature:i=!1,hideMaxTokens:a=!1,dataTour:l}){const c=d=>{s("model_list",d)};return o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"font-semibold text-base sm:text-lg",children:t}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:e})]}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2","data-tour":l,children:[o.jsx(de,{children:"模型列表"}),o.jsx(Sve,{options:r.map(d=>({label:d,value:d})),selected:n.model_list||[],onChange:c,placeholder:"选择模型...",emptyText:"暂无可用模型"})]}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[!i&&o.jsxs("div",{className:"grid gap-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(de,{children:"温度"}),o.jsx(ze,{type:"number",step:"0.1",min:"0",max:"1",value:n.temperature??.3,onChange:d=>{const h=parseFloat(d.target.value);!isNaN(h)&&h>=0&&h<=1&&s("temperature",h)},className:"w-20 h-8 text-sm"})]}),o.jsx(Ip,{value:[n.temperature??.3],onValueChange:d=>s("temperature",d[0]),min:0,max:1,step:.1,className:"w-full"})]}),!a&&o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{children:"最大 Token"}),o.jsx(ze,{type:"number",step:"1",min:"1",value:n.max_tokens??1024,onChange:d=>s("max_tokens",parseInt(d.target.value))})]})]})]})]})}const Eb="/api/webui/config";async function jve(){const e=await(await St(`${Eb}/adapter-config/path`)).json();return!e.success||!e.path?null:{path:e.path,lastModified:e.lastModified}}async function cA(t){const n=await(await St(`${Eb}/adapter-config/path`,{method:"POST",headers:Dt(),body:JSON.stringify({path:t})})).json();if(!n.success)throw new Error(n.message||"保存路径失败")}async function uA(t){const n=await(await St(`${Eb}/adapter-config?path=${encodeURIComponent(t)}`)).json();if(!n.success)throw new Error("读取配置文件失败");return n.content}async function dA(t,e){const r=await(await St(`${Eb}/adapter-config`,{method:"POST",headers:Dt(),body:JSON.stringify({path:t,content:e})})).json();if(!r.success)throw new Error(r.message||"保存配置失败")}const Fi={inner:{version:"0.1.2"},nickname:{nickname:""},napcat_server:{host:"localhost",port:8095,token:"",heartbeat_interval:30},maibot_server:{host:"localhost",port:8e3},chat:{group_list_type:"whitelist",group_list:[],private_list_type:"whitelist",private_list:[],ban_user_id:[],ban_qq_bot:!1,enable_poke:!0},voice:{use_tts:!1},debug:{level:"INFO"}},wS={oneclick:{name:"一键包",description:"使用一键包部署的适配器配置",path:"../MaiBot-Napcat-Adapter/config.toml",icon:Uh},docker:{name:"Docker",description:"Docker Compose 部署的适配器配置",path:"/MaiMBot/adapters-config/config.toml",icon:zee}};function Nve(){const[t,e]=b.useState("upload"),[n,r]=b.useState(null),[s,i]=b.useState(""),[a,l]=b.useState(""),[c,d]=b.useState("oneclick"),[h,m]=b.useState(""),[g,x]=b.useState(!1),[y,w]=b.useState(!1),[S,k]=b.useState(!1),[j,N]=b.useState(!1),[T,E]=b.useState(null),_=b.useRef(null),{toast:M}=fs(),I=b.useRef(null),P=K=>{if(!K.trim())return{valid:!1,error:"路径不能为空"};if(!K.toLowerCase().endsWith(".toml"))return{valid:!1,error:"文件必须是 .toml 格式"};const se=/^([a-zA-Z]:\\|\\\\[^\\]+\\[^\\]+\\).+\.toml$/i,re=/^(\/|~\/).+\.toml$/i,oe=/^(\.{1,2}[\\/]|[^:\\/]).+\.toml$/i,Te=se.test(K),We=re.test(K),Ye=oe.test(K);return!Te&&!We&&!Ye?{valid:!1,error:"路径格式错误"}:/[<>"|?*\x00-\x1F]/.test(K)?{valid:!1,error:"路径包含非法字符"}:{valid:!0,error:""}},L=K=>{if(l(K),K.trim()){const se=P(K);m(se.error)}else m("")},H=b.useCallback(async K=>{const se=wS[K];w(!0);try{const re=await uA(se.path),oe=W(re);r(oe),d(K),l(se.path),await cA(se.path),M({title:"加载成功",description:`已从${se.name}预设加载配置`})}catch(re){console.error("加载预设配置失败:",re),M({title:"加载失败",description:re instanceof Error?re.message:"无法读取预设配置文件",variant:"destructive"})}finally{w(!1)}},[M]),U=b.useCallback(async K=>{const se=P(K);if(!se.valid){m(se.error),M({title:"路径无效",description:se.error,variant:"destructive"});return}m(""),w(!0);try{const re=await uA(K),oe=W(re);r(oe),l(K),await cA(K),M({title:"加载成功",description:"已从配置文件加载"})}catch(re){console.error("加载配置失败:",re),M({title:"加载失败",description:re instanceof Error?re.message:"无法读取配置文件",variant:"destructive"})}finally{w(!1)}},[M]);b.useEffect(()=>{(async()=>{try{const se=await jve();if(se&&se.path){l(se.path);const re=Object.entries(wS).find(([,oe])=>oe.path===se.path);re?(e("preset"),d(re[0]),await H(re[0])):(e("path"),await U(se.path))}}catch(se){console.error("加载保存的路径失败:",se)}})()},[U,H]);const ee=b.useCallback(K=>{t!=="path"&&t!=="preset"||!a||(I.current&&clearTimeout(I.current),I.current=setTimeout(async()=>{x(!0);try{const se=q(K);await dA(a,se),M({title:"自动保存成功",description:"配置已保存到文件"})}catch(se){console.error("自动保存失败:",se),M({title:"自动保存失败",description:se instanceof Error?se.message:"保存配置失败",variant:"destructive"})}finally{x(!1)}},1e3))},[t,a,M]),z=async()=>{if(!n||!a)return;const K=P(a);if(!K.valid){M({title:"保存失败",description:K.error,variant:"destructive"});return}x(!0);try{const se=q(n);await dA(a,se),M({title:"保存成功",description:"配置已保存到文件"})}catch(se){console.error("保存失败:",se),M({title:"保存失败",description:se instanceof Error?se.message:"保存配置失败",variant:"destructive"})}finally{x(!1)}},Q=async()=>{a&&await U(a)},B=K=>{if(K!==t){if(n){E(K),k(!0);return}X(K)}},X=K=>{r(null),i(""),m(""),e(K),K==="preset"&&H("oneclick"),M({title:"已切换模式",description:{upload:"现在可以上传配置文件",path:"现在可以指定配置文件路径",preset:"现在可以使用预设配置"}[K]})},J=()=>{T&&(X(T),E(null)),k(!1)},G=()=>{if(n){N(!0);return}R()},R=()=>{l(""),r(null),m(""),M({title:"已清空",description:"路径和配置已清空"})},ie=()=>{R(),N(!1)},W=K=>{const se=JSON.parse(JSON.stringify(Fi)),re=K.split(` -`);let oe="";for(const Te of re){const We=Te.trim();if(!We||We.startsWith("#"))continue;const Ye=We.match(/^\[(\w+)\]/);if(Ye){oe=Ye[1];continue}const Je=We.match(/^(\w+)\s*=\s*(.+)$/);if(Je&&oe){const[,Oe,Ve]=Je;let Ue=Ve.trim();const He=Ue.match(/^("[^"]*")/);if(He)Ue=He[1];else{const xt=Ue.indexOf("#");xt!==-1&&(Ue=Ue.substring(0,xt).trim())}let Ot;if(Ue==="true")Ot=!0;else if(Ue==="false")Ot=!1;else if(Ue.startsWith("[")&&Ue.endsWith("]")){const xt=Ue.slice(1,-1).trim();if(xt){const kn=xt.split(",").map(Yt=>{const _t=Yt.trim();return isNaN(Number(_t))?_t.replace(/"/g,""):Number(_t)}),It=typeof kn[0];Ot=kn.every(Yt=>typeof Yt===It)?kn:kn.filter(Yt=>typeof Yt=="number")}else Ot=[]}else Ue.startsWith('"')&&Ue.endsWith('"')?Ot=Ue.slice(1,-1):isNaN(Number(Ue))?Ot=Ue.replace(/"/g,""):Ot=Number(Ue);if(oe in se){const xt=se[oe];xt[Oe]=Ot}}}return se},q=K=>{const se=[],re=(oe,Te)=>oe===""||oe===null||oe===void 0?Te:oe;return se.push("[inner]"),se.push(`version = "${re(K.inner.version,Fi.inner.version)}" # 版本号`),se.push("# 请勿修改版本号,除非你知道自己在做什么"),se.push(""),se.push("[nickname] # 现在没用"),se.push(`nickname = "${re(K.nickname.nickname,Fi.nickname.nickname)}"`),se.push(""),se.push("[napcat_server] # Napcat连接的ws服务设置"),se.push(`host = "${re(K.napcat_server.host,Fi.napcat_server.host)}" # Napcat设定的主机地址`),se.push(`port = ${re(K.napcat_server.port||0,Fi.napcat_server.port)} # Napcat设定的端口`),se.push(`token = "${re(K.napcat_server.token,Fi.napcat_server.token)}" # Napcat设定的访问令牌,若无则留空`),se.push(`heartbeat_interval = ${re(K.napcat_server.heartbeat_interval||0,Fi.napcat_server.heartbeat_interval)} # 与Napcat设置的心跳相同(按秒计)`),se.push(""),se.push("[maibot_server] # 连接麦麦的ws服务设置"),se.push(`host = "${re(K.maibot_server.host,Fi.maibot_server.host)}" # 麦麦在.env文件中设置的主机地址,即HOST字段`),se.push(`port = ${re(K.maibot_server.port||0,Fi.maibot_server.port)} # 麦麦在.env文件中设置的端口,即PORT字段`),se.push(""),se.push("[chat] # 黑白名单功能"),se.push(`group_list_type = "${re(K.chat.group_list_type,Fi.chat.group_list_type)}" # 群组名单类型,可选为:whitelist, blacklist`),se.push(`group_list = [${K.chat.group_list.join(", ")}] # 群组名单`),se.push("# 当group_list_type为whitelist时,只有群组名单中的群组可以聊天"),se.push("# 当group_list_type为blacklist时,群组名单中的任何群组无法聊天"),se.push(`private_list_type = "${re(K.chat.private_list_type,Fi.chat.private_list_type)}" # 私聊名单类型,可选为:whitelist, blacklist`),se.push(`private_list = [${K.chat.private_list.join(", ")}] # 私聊名单`),se.push("# 当private_list_type为whitelist时,只有私聊名单中的用户可以聊天"),se.push("# 当private_list_type为blacklist时,私聊名单中的任何用户无法聊天"),se.push(`ban_user_id = [${K.chat.ban_user_id.join(", ")}] # 全局禁止名单(全局禁止名单中的用户无法进行任何聊天)`),se.push(`ban_qq_bot = ${K.chat.ban_qq_bot} # 是否屏蔽QQ官方机器人`),se.push(`enable_poke = ${K.chat.enable_poke} # 是否启用戳一戳功能`),se.push(""),se.push("[voice] # 发送语音设置"),se.push(`use_tts = ${K.voice.use_tts} # 是否使用tts语音(请确保你配置了tts并有对应的adapter)`),se.push(""),se.push("[debug]"),se.push(`level = "${re(K.debug.level,Fi.debug.level)}" # 日志等级(DEBUG, INFO, WARNING, ERROR, CRITICAL)`),se.join(` -`)},V=K=>{const se=K.target.files?.[0];if(!se)return;const re=new FileReader;re.onload=oe=>{try{const Te=oe.target?.result,We=W(Te);r(We),i(se.name),M({title:"上传成功",description:`已加载配置文件:${se.name}`})}catch(Te){console.error("解析配置文件失败:",Te),M({title:"解析失败",description:"配置文件格式错误,请检查文件内容",variant:"destructive"})}},re.readAsText(se)},te=()=>{if(!n)return;const K=q(n),se=new Blob([K],{type:"text/plain;charset=utf-8"}),re=URL.createObjectURL(se),oe=document.createElement("a");oe.href=re,oe.download=s||"config.toml",document.body.appendChild(oe),oe.click(),document.body.removeChild(oe),URL.revokeObjectURL(re),M({title:"下载成功",description:"配置文件已下载,请手动覆盖并重启适配器"})},ne=()=>{r(JSON.parse(JSON.stringify(Fi))),i("config.toml"),M({title:"已加载默认配置",description:"可以开始编辑配置"})};return o.jsx(wn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦适配器配置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的 QQ 适配器的配置文件"})]})}),o.jsxs("div",{className:"flex items-start gap-2 p-3 rounded-lg border border-amber-500/50 bg-amber-500/10 text-amber-700 dark:text-amber-400",children:[o.jsx(Vc,{className:"h-4 w-4 mt-0.5 flex-shrink-0"}),o.jsx("p",{className:"text-sm",children:"适配器配置保存之后使用 WebUI 的重启功能适配器并不会重启,需要手动重启适配器。"})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"工作模式"}),o.jsx(ts,{children:"选择配置文件的管理方式"})]}),o.jsxs(Gn,{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3 md:gap-4",children:[o.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${t==="preset"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>B("preset"),children:o.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[o.jsx(Uh,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"min-w-0",children:[o.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"预设模式"}),o.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"使用预设的部署配置"})]})]})}),o.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${t==="upload"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>B("upload"),children:o.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[o.jsx(m9,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"min-w-0",children:[o.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"上传文件模式"}),o.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"上传配置文件,编辑后下载并手动覆盖"})]})]})}),o.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${t==="path"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>B("path"),children:o.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[o.jsx(Iee,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"min-w-0",children:[o.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"指定路径模式"}),o.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"指定配置文件路径,自动加载和保存"})]})]})})]}),t==="preset"&&o.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[o.jsx(de,{className:"text-sm md:text-base",children:"选择部署方式"}),o.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:Object.entries(wS).map(([K,se])=>{const re=se.icon,oe=c===K;return o.jsx("div",{className:`border-2 rounded-lg p-3 cursor-pointer transition-all ${oe?"border-primary bg-primary/5":"border-muted hover:border-primary/50"}`,onClick:()=>{d(K),H(K)},children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(re,{className:"h-5 w-5 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"min-w-0 flex-1",children:[o.jsx("h4",{className:"font-semibold text-sm",children:se.name}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:se.description}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1 font-mono break-all",children:se.path})]})]})},K)})})]}),t==="path"&&o.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"config-path",className:"text-sm md:text-base",children:"配置文件路径"}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[o.jsxs("div",{className:"flex-1 space-y-1",children:[o.jsx(ze,{id:"config-path",value:a,onChange:K=>L(K.target.value),placeholder:"例: C:\\Adapter\\config.toml",className:`text-sm ${h?"border-destructive":""}`}),h&&o.jsx("p",{className:"text-xs text-destructive",children:h})]}),o.jsx(he,{onClick:()=>U(a),disabled:y||!a||!!h,className:"w-full sm:w-auto",children:y?o.jsxs(o.Fragment,{children:[o.jsx(Qs,{className:"h-4 w-4 animate-spin mr-2"}),o.jsx("span",{className:"sm:hidden",children:"加载中..."})]}):o.jsxs(o.Fragment,{children:[o.jsx("span",{className:"sm:hidden",children:"加载配置"}),o.jsx("span",{className:"hidden sm:inline",children:"加载"})]})})]})]}),o.jsxs("details",{className:"rounded-lg bg-muted/50 p-3 group",children:[o.jsxs("summary",{className:"text-xs font-medium cursor-pointer select-none list-none flex items-center justify-between",children:[o.jsx("span",{children:"路径格式说明"}),o.jsx("svg",{className:"h-4 w-4 transition-transform group-open:rotate-180",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:o.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),o.jsxs("div",{className:"mt-2 space-y-2 text-xs text-muted-foreground",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx("div",{className:"flex items-center gap-2",children:o.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Windows"})}),o.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[o.jsx("div",{children:"C:\\Adapter\\config.toml"}),o.jsx("div",{className:"hidden sm:block",children:"D:\\MaiBot\\adapter\\config.toml"}),o.jsx("div",{className:"hidden sm:block",children:"\\\\server\\share\\config.toml"})]})]}),o.jsxs("div",{className:"space-y-1",children:[o.jsx("div",{className:"flex items-center gap-2",children:o.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Linux"})}),o.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[o.jsx("div",{children:"/opt/adapter/config.toml"}),o.jsx("div",{className:"hidden sm:block",children:"/home/user/adapter/config.toml"}),o.jsx("div",{className:"hidden sm:block",children:"~/adapter/config.toml"})]})]}),o.jsx("p",{className:"pt-1 border-t text-[10px] md:text-xs",children:"💡 配置会自动保存到指定文件,修改后 1 秒自动保存"})]})]})]})]})]}),o.jsxs(ga,{children:[o.jsx(Oa,{className:"h-4 w-4"}),o.jsx(xa,{children:t==="preset"?o.jsxs(o.Fragment,{children:[o.jsx("strong",{children:"预设模式:"}),"选择预设的部署方式,配置会自动加载,修改后 1 秒自动保存",g&&" (正在保存...)"]}):t==="upload"?o.jsxs(o.Fragment,{children:[o.jsx("strong",{children:"上传文件模式:"}),"上传配置文件 → 在线编辑 → 下载文件 → 手动覆盖并重启适配器"]}):o.jsxs(o.Fragment,{children:[o.jsx("strong",{children:"指定路径模式:"}),"指定配置文件路径后,配置会自动加载,修改后 1 秒自动保存",g&&" (正在保存...)"]})})]}),t==="upload"&&!n&&o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 w-full",children:[o.jsx("input",{ref:_,type:"file",accept:".toml",className:"hidden",onChange:V}),o.jsxs(he,{onClick:()=>_.current?.click(),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[o.jsx(m9,{className:"mr-2 h-4 w-4"}),"上传配置"]}),o.jsxs(he,{onClick:ne,size:"sm",className:"w-full sm:w-auto",children:[o.jsx(Pl,{className:"mr-2 h-4 w-4"}),"使用默认配置"]})]}),t==="upload"&&n&&o.jsx("div",{className:"flex gap-2",children:o.jsxs(he,{onClick:te,size:"sm",className:"w-full sm:w-auto",children:[o.jsx(Ku,{className:"mr-2 h-4 w-4"}),"下载配置"]})}),(t==="preset"||t==="path")&&n&&o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[o.jsxs(he,{onClick:z,size:"sm",disabled:g||!!h,className:"w-full sm:w-auto",children:[o.jsx($y,{className:"mr-2 h-4 w-4"}),g?"保存中...":"立即保存"]}),o.jsxs(he,{onClick:Q,size:"sm",variant:"outline",disabled:y,className:"w-full sm:w-auto",children:[o.jsx(Qs,{className:`mr-2 h-4 w-4 ${y?"animate-spin":""}`}),"刷新"]}),t==="path"&&o.jsxs(he,{onClick:G,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[o.jsx(Sn,{className:"mr-2 h-4 w-4"}),"清空路径"]})]}),n?o.jsxs(ja,{defaultValue:"napcat",className:"w-full",children:[o.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:o.jsxs(Wi,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5",children:[o.jsxs(Lt,{value:"napcat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[o.jsx("span",{className:"hidden sm:inline",children:"Napcat 连接"}),o.jsx("span",{className:"sm:hidden",children:"Napcat"})]}),o.jsxs(Lt,{value:"maibot",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[o.jsx("span",{className:"hidden sm:inline",children:"麦麦连接"}),o.jsx("span",{className:"sm:hidden",children:"麦麦"})]}),o.jsxs(Lt,{value:"chat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[o.jsx("span",{className:"hidden sm:inline",children:"聊天控制"}),o.jsx("span",{className:"sm:hidden",children:"聊天"})]}),o.jsxs(Lt,{value:"voice",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[o.jsx("span",{className:"hidden sm:inline",children:"语音设置"}),o.jsx("span",{className:"sm:hidden",children:"语音"})]}),o.jsx(Lt,{value:"debug",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:"调试"})]})}),o.jsx(un,{value:"napcat",className:"space-y-4",children:o.jsx(Cve,{config:n,onChange:K=>{r(K),ee(K)}})}),o.jsx(un,{value:"maibot",className:"space-y-4",children:o.jsx(Tve,{config:n,onChange:K=>{r(K),ee(K)}})}),o.jsx(un,{value:"chat",className:"space-y-4",children:o.jsx(Eve,{config:n,onChange:K=>{r(K),ee(K)}})}),o.jsx(un,{value:"voice",className:"space-y-4",children:o.jsx(_ve,{config:n,onChange:K=>{r(K),ee(K)}})}),o.jsx(un,{value:"debug",className:"space-y-4",children:o.jsx(Mve,{config:n,onChange:K=>{r(K),ee(K)}})})]}):o.jsx("div",{className:"rounded-lg border bg-card p-6 md:p-12",children:o.jsxs("div",{className:"text-center space-y-3 md:space-y-4",children:[o.jsx(Pl,{className:"h-12 w-12 md:h-16 md:w-16 mx-auto text-muted-foreground"}),o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold",children:"尚未加载配置"}),o.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-2 px-4",children:t==="preset"?"请选择预设的部署方式":t==="upload"?"请上传现有配置文件,或使用默认配置开始编辑":"请指定配置文件路径并点击加载按钮"})]})]})}),o.jsx(Dn,{open:S,onOpenChange:k,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认切换模式"}),o.jsxs(_n,{children:["切换模式将清空当前配置,确定要继续吗?",o.jsx("br",{}),o.jsx("span",{className:"text-destructive font-medium",children:"请确保已保存重要配置"})]})]}),o.jsxs(Tn,{children:[o.jsx(An,{onClick:()=>{k(!1),E(null)},children:"取消"}),o.jsx(Mn,{onClick:J,children:"确认切换"})]})]})}),o.jsx(Dn,{open:j,onOpenChange:N,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认清空路径"}),o.jsxs(_n,{children:["清空路径将清除当前配置,确定要继续吗?",o.jsx("br",{}),o.jsx("span",{className:"text-muted-foreground text-sm",children:"此操作不会删除配置文件,只是清除界面中的配置"})]})]}),o.jsxs(Tn,{children:[o.jsx(An,{onClick:()=>N(!1),children:"取消"}),o.jsx(Mn,{onClick:ie,className:"bg-destructive hover:bg-destructive/90",children:"确认清空"})]})]})})]})})}function Cve({config:t,onChange:e}){return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"Napcat WebSocket 服务设置"}),o.jsxs("div",{className:"grid gap-3 md:gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"napcat-host",className:"text-sm md:text-base",children:"主机地址"}),o.jsx(ze,{id:"napcat-host",value:t.napcat_server.host,onChange:n=>e({...t,napcat_server:{...t.napcat_server,host:n.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的主机地址"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"napcat-port",className:"text-sm md:text-base",children:"端口"}),o.jsx(ze,{id:"napcat-port",type:"number",value:t.napcat_server.port||"",onChange:n=>e({...t,napcat_server:{...t.napcat_server,port:n.target.value?parseInt(n.target.value):0}}),placeholder:"8095",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的端口(留空使用默认值 8095)"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"napcat-token",className:"text-sm md:text-base",children:"访问令牌(Token)"}),o.jsx(ze,{id:"napcat-token",type:"password",value:t.napcat_server.token,onChange:n=>e({...t,napcat_server:{...t.napcat_server,token:n.target.value}}),placeholder:"留空表示无需令牌",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的访问令牌,若无则留空"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"napcat-heartbeat",className:"text-sm md:text-base",children:"心跳间隔(秒)"}),o.jsx(ze,{id:"napcat-heartbeat",type:"number",value:t.napcat_server.heartbeat_interval||"",onChange:n=>e({...t,napcat_server:{...t.napcat_server,heartbeat_interval:n.target.value?parseInt(n.target.value):0}}),placeholder:"30",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"与 Napcat 设置的心跳间隔保持一致(留空使用默认值 30)"})]})]})]})})}function Tve({config:t,onChange:e}){return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"麦麦 WebSocket 服务设置"}),o.jsxs("div",{className:"grid gap-3 md:gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"maibot-host",className:"text-sm md:text-base",children:"主机地址"}),o.jsx(ze,{id:"maibot-host",value:t.maibot_server.host,onChange:n=>e({...t,maibot_server:{...t.maibot_server,host:n.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 HOST 字段"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{htmlFor:"maibot-port",className:"text-sm md:text-base",children:"端口"}),o.jsx(ze,{id:"maibot-port",type:"number",value:t.maibot_server.port||"",onChange:n=>e({...t,maibot_server:{...t.maibot_server,port:n.target.value?parseInt(n.target.value):0}}),placeholder:"8000",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 PORT 字段(留空使用默认值 8000)"})]})]})]})})}function Eve({config:t,onChange:e}){const n=i=>{const a={...t};i==="group"?a.chat.group_list=[...a.chat.group_list,0]:i==="private"?a.chat.private_list=[...a.chat.private_list,0]:a.chat.ban_user_id=[...a.chat.ban_user_id,0],e(a)},r=(i,a)=>{const l={...t};i==="group"?l.chat.group_list=l.chat.group_list.filter((c,d)=>d!==a):i==="private"?l.chat.private_list=l.chat.private_list.filter((c,d)=>d!==a):l.chat.ban_user_id=l.chat.ban_user_id.filter((c,d)=>d!==a),e(l)},s=(i,a,l)=>{const c={...t};i==="group"?c.chat.group_list[a]=l:i==="private"?c.chat.private_list[a]=l:c.chat.ban_user_id[a]=l,e(c)};return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"聊天黑白名单功能"}),o.jsxs("div",{className:"grid gap-4 md:gap-6",children:[o.jsxs("div",{className:"space-y-3 md:space-y-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-sm md:text-base",children:"群组名单类型"}),o.jsxs(Vt,{value:t.chat.group_list_type,onValueChange:i=>e({...t,chat:{...t.chat,group_list_type:i}}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),o.jsx(De,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[o.jsx(de,{className:"text-sm md:text-base",children:"群组列表"}),o.jsxs(he,{onClick:()=>n("group"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[o.jsx(Pl,{className:"mr-1 h-4 w-4"}),"添加群号"]})]}),t.chat.group_list.map((i,a)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{type:"number",value:i,onChange:l=>s("group",a,parseInt(l.target.value)||0),placeholder:"输入群号",className:"text-sm md:text-base"}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(he,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除群号 ",i," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>r("group",a),children:"删除"})]})]})]})]},a)),t.chat.group_list.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无群组"})]})]}),o.jsxs("div",{className:"space-y-3 md:space-y-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-sm md:text-base",children:"私聊名单类型"}),o.jsxs(Vt,{value:t.chat.private_list_type,onValueChange:i=>e({...t,chat:{...t.chat,private_list_type:i}}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),o.jsx(De,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[o.jsx(de,{className:"text-sm md:text-base",children:"私聊列表"}),o.jsxs(he,{onClick:()=>n("private"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[o.jsx(Pl,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),t.chat.private_list.map((i,a)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{type:"number",value:i,onChange:l=>s("private",a,parseInt(l.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(he,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除用户 ",i," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>r("private",a),children:"删除"})]})]})]})]},a)),t.chat.private_list.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无用户"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[o.jsxs("div",{children:[o.jsx(de,{className:"text-sm md:text-base",children:"全局禁止名单"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"名单中的用户无法进行任何聊天"})]}),o.jsxs(he,{onClick:()=>n("ban"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[o.jsx(Pl,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),t.chat.ban_user_id.map((i,a)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{type:"number",value:i,onChange:l=>s("ban",a,parseInt(l.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(he,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要从全局禁止名单中删除用户 ",i," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>r("ban",a),children:"删除"})]})]})]})]},a)),t.chat.ban_user_id.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无禁止用户"})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(de,{className:"text-sm md:text-base",children:"屏蔽QQ官方机器人"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否屏蔽来自QQ官方机器人的消息"})]}),o.jsx(Bt,{checked:t.chat.ban_qq_bot,onCheckedChange:i=>e({...t,chat:{...t.chat,ban_qq_bot:i}})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(de,{className:"text-sm md:text-base",children:"启用戳一戳功能"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否响应戳一戳消息"})]}),o.jsx(Bt,{checked:t.chat.enable_poke,onCheckedChange:i=>e({...t,chat:{...t.chat,enable_poke:i}})})]})]})]})})}function _ve({config:t,onChange:e}){return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"发送语音设置"}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(de,{className:"text-sm md:text-base",children:"使用 TTS 语音"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"请确保已配置 TTS 并有对应的适配器"})]}),o.jsx(Bt,{checked:t.voice.use_tts,onCheckedChange:n=>e({...t,voice:{use_tts:n}})})]})]})})}function Mve({config:t,onChange:e}){return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"调试设置"}),o.jsx("div",{className:"grid gap-3 md:gap-4",children:o.jsxs("div",{className:"grid gap-2",children:[o.jsx(de,{className:"text-sm md:text-base",children:"日志等级"}),o.jsxs(Vt,{value:t.debug.level,onValueChange:n=>e({...t,debug:{level:n}}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"DEBUG",children:"DEBUG(调试)"}),o.jsx(De,{value:"INFO",children:"INFO(信息)"}),o.jsx(De,{value:"WARNING",children:"WARNING(警告)"}),o.jsx(De,{value:"ERROR",children:"ERROR(错误)"}),o.jsx(De,{value:"CRITICAL",children:"CRITICAL(严重)"})]})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"设置适配器的日志输出等级"})]})})]})})}function hA(t){const e=[],n=String(t||"");let r=n.indexOf(","),s=0,i=!1;for(;!i;){r===-1&&(r=n.length,i=!0);const a=n.slice(s,r).trim();(a||!i)&&e.push(a),s=r+1,r=n.indexOf(",",s)}return e}function Ave(t,e){const n={};return(t[t.length-1]===""?[...t,""]:t).join((n.padRight?" ":"")+","+(n.padLeft===!1?"":" ")).trim()}const Rve=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,Dve=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,Pve={};function fA(t,e){return(Pve.jsx?Dve:Rve).test(t)}const zve=/[ \t\n\f\r]/g;function Ive(t){return typeof t=="object"?t.type==="text"?mA(t.value):!1:mA(t)}function mA(t){return t.replace(zve,"")===""}class lg{constructor(e,n,r){this.normal=n,this.property=e,r&&(this.space=r)}}lg.prototype.normal={};lg.prototype.property={};lg.prototype.space=void 0;function PQ(t,e){const n={},r={};for(const s of t)Object.assign(n,s.property),Object.assign(r,s.normal);return new lg(n,r,e)}function dp(t){return t.toLowerCase()}class Ei{constructor(e,n){this.attribute=n,this.property=e}}Ei.prototype.attribute="";Ei.prototype.booleanish=!1;Ei.prototype.boolean=!1;Ei.prototype.commaOrSpaceSeparated=!1;Ei.prototype.commaSeparated=!1;Ei.prototype.defined=!1;Ei.prototype.mustUseProperty=!1;Ei.prototype.number=!1;Ei.prototype.overloadedBoolean=!1;Ei.prototype.property="";Ei.prototype.spaceSeparated=!1;Ei.prototype.space=void 0;let Lve=0;const Jt=wd(),Jr=wd(),SO=wd(),Qe=wd(),ur=wd(),qh=wd(),qi=wd();function wd(){return 2**++Lve}const kO=Object.freeze(Object.defineProperty({__proto__:null,boolean:Jt,booleanish:Jr,commaOrSpaceSeparated:qi,commaSeparated:qh,number:Qe,overloadedBoolean:SO,spaceSeparated:ur},Symbol.toStringTag,{value:"Module"})),SS=Object.keys(kO);class nN extends Ei{constructor(e,n,r,s){let i=-1;if(super(e,n),pA(this,"space",s),typeof r=="number")for(;++i4&&n.slice(0,4)==="data"&&Hve.test(e)){if(e.charAt(4)==="-"){const i=e.slice(5).replace(gA,Vve);r="data"+i.charAt(0).toUpperCase()+i.slice(1)}else{const i=e.slice(4);if(!gA.test(i)){let a=i.replace($ve,Qve);a.charAt(0)!=="-"&&(a="-"+a),e="data"+a}}s=nN}return new s(r,e)}function Qve(t){return"-"+t.toLowerCase()}function Vve(t){return t.charAt(1).toUpperCase()}const HQ=PQ([zQ,Bve,BQ,FQ,qQ],"html"),_b=PQ([zQ,Fve,BQ,FQ,qQ],"svg");function xA(t){const e=String(t||"").trim();return e?e.split(/[ \t\n\r\f]+/g):[]}function Uve(t){return t.join(" ").trim()}var oh={},kS,vA;function Wve(){if(vA)return kS;vA=1;var t=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,e=/\n/g,n=/^\s*/,r=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,s=/^:\s*/,i=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,a=/^[;\s]*/,l=/^\s+|\s+$/g,c=` -`,d="/",h="*",m="",g="comment",x="declaration";function y(S,k){if(typeof S!="string")throw new TypeError("First argument must be a string");if(!S)return[];k=k||{};var j=1,N=1;function T(z){var Q=z.match(e);Q&&(j+=Q.length);var B=z.lastIndexOf(c);N=~B?z.length-B:N+z.length}function E(){var z={line:j,column:N};return function(Q){return Q.position=new _(z),P(),Q}}function _(z){this.start=z,this.end={line:j,column:N},this.source=k.source}_.prototype.content=S;function M(z){var Q=new Error(k.source+":"+j+":"+N+": "+z);if(Q.reason=z,Q.filename=k.source,Q.line=j,Q.column=N,Q.source=S,!k.silent)throw Q}function I(z){var Q=z.exec(S);if(Q){var B=Q[0];return T(B),S=S.slice(B.length),Q}}function P(){I(n)}function L(z){var Q;for(z=z||[];Q=H();)Q!==!1&&z.push(Q);return z}function H(){var z=E();if(!(d!=S.charAt(0)||h!=S.charAt(1))){for(var Q=2;m!=S.charAt(Q)&&(h!=S.charAt(Q)||d!=S.charAt(Q+1));)++Q;if(Q+=2,m===S.charAt(Q-1))return M("End of comment missing");var B=S.slice(2,Q-2);return N+=2,T(B),S=S.slice(Q),N+=2,z({type:g,comment:B})}}function U(){var z=E(),Q=I(r);if(Q){if(H(),!I(s))return M("property missing ':'");var B=I(i),X=z({type:x,property:w(Q[0].replace(t,m)),value:B?w(B[0].replace(t,m)):m});return I(a),X}}function ee(){var z=[];L(z);for(var Q;Q=U();)Q!==!1&&(z.push(Q),L(z));return z}return P(),ee()}function w(S){return S?S.replace(l,m):m}return kS=y,kS}var yA;function Gve(){if(yA)return oh;yA=1;var t=oh&&oh.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(oh,"__esModule",{value:!0}),oh.default=n;const e=t(Wve());function n(r,s){let i=null;if(!r||typeof r!="string")return i;const a=(0,e.default)(r),l=typeof s=="function";return a.forEach(c=>{if(c.type!=="declaration")return;const{property:d,value:h}=c;l?s(d,h,c):h&&(i=i||{},i[d]=h)}),i}return oh}var Gm={},bA;function Xve(){if(bA)return Gm;bA=1,Object.defineProperty(Gm,"__esModule",{value:!0}),Gm.camelCase=void 0;var t=/^--[a-zA-Z0-9_-]+$/,e=/-([a-z])/g,n=/^[^-]+$/,r=/^-(webkit|moz|ms|o|khtml)-/,s=/^-(ms)-/,i=function(d){return!d||n.test(d)||t.test(d)},a=function(d,h){return h.toUpperCase()},l=function(d,h){return"".concat(h,"-")},c=function(d,h){return h===void 0&&(h={}),i(d)?d:(d=d.toLowerCase(),h.reactCompat?d=d.replace(s,l):d=d.replace(r,l),d.replace(e,a))};return Gm.camelCase=c,Gm}var Xm,wA;function Yve(){if(wA)return Xm;wA=1;var t=Xm&&Xm.__importDefault||function(s){return s&&s.__esModule?s:{default:s}},e=t(Gve()),n=Xve();function r(s,i){var a={};return!s||typeof s!="string"||(0,e.default)(s,function(l,c){l&&c&&(a[(0,n.camelCase)(l,i)]=c)}),a}return r.default=r,Xm=r,Xm}var Kve=Yve();const Zve=gd(Kve),QQ=VQ("end"),rN=VQ("start");function VQ(t){return e;function e(n){const r=n&&n.position&&n.position[t]||{};if(typeof r.line=="number"&&r.line>0&&typeof r.column=="number"&&r.column>0)return{line:r.line,column:r.column,offset:typeof r.offset=="number"&&r.offset>-1?r.offset:void 0}}}function Jve(t){const e=rN(t),n=QQ(t);if(e&&n)return{start:e,end:n}}function C0(t){return!t||typeof t!="object"?"":"position"in t||"type"in t?SA(t.position):"start"in t||"end"in t?SA(t):"line"in t||"column"in t?OO(t):""}function OO(t){return kA(t&&t.line)+":"+kA(t&&t.column)}function SA(t){return OO(t&&t.start)+"-"+OO(t&&t.end)}function kA(t){return t&&typeof t=="number"?t:1}class Ws extends Error{constructor(e,n,r){super(),typeof n=="string"&&(r=n,n=void 0);let s="",i={},a=!1;if(n&&("line"in n&&"column"in n?i={place:n}:"start"in n&&"end"in n?i={place:n}:"type"in n?i={ancestors:[n],place:n.position}:i={...n}),typeof e=="string"?s=e:!i.cause&&e&&(a=!0,s=e.message,i.cause=e),!i.ruleId&&!i.source&&typeof r=="string"){const c=r.indexOf(":");c===-1?i.ruleId=r:(i.source=r.slice(0,c),i.ruleId=r.slice(c+1))}if(!i.place&&i.ancestors&&i.ancestors){const c=i.ancestors[i.ancestors.length-1];c&&(i.place=c.position)}const l=i.place&&"start"in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=l?l.column:void 0,this.fatal=void 0,this.file="",this.message=s,this.line=l?l.line:void 0,this.name=C0(i.place)||"1:1",this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=a&&i.cause&&typeof i.cause.stack=="string"?i.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}Ws.prototype.file="";Ws.prototype.name="";Ws.prototype.reason="";Ws.prototype.message="";Ws.prototype.stack="";Ws.prototype.column=void 0;Ws.prototype.line=void 0;Ws.prototype.ancestors=void 0;Ws.prototype.cause=void 0;Ws.prototype.fatal=void 0;Ws.prototype.place=void 0;Ws.prototype.ruleId=void 0;Ws.prototype.source=void 0;const sN={}.hasOwnProperty,eye=new Map,tye=/[A-Z]/g,nye=new Set(["table","tbody","thead","tfoot","tr"]),rye=new Set(["td","th"]),UQ="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function sye(t,e){if(!e||e.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const n=e.filePath||void 0;let r;if(e.development){if(typeof e.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");r=hye(n,e.jsxDEV)}else{if(typeof e.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof e.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");r=dye(n,e.jsx,e.jsxs)}const s={Fragment:e.Fragment,ancestors:[],components:e.components||{},create:r,elementAttributeNameCase:e.elementAttributeNameCase||"react",evaluater:e.createEvaluater?e.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:e.ignoreInvalidStyle||!1,passKeys:e.passKeys!==!1,passNode:e.passNode||!1,schema:e.space==="svg"?_b:HQ,stylePropertyNameCase:e.stylePropertyNameCase||"dom",tableCellAlignToStyle:e.tableCellAlignToStyle!==!1},i=WQ(s,t,void 0);return i&&typeof i!="string"?i:s.create(t,s.Fragment,{children:i||void 0},void 0)}function WQ(t,e,n){if(e.type==="element")return iye(t,e,n);if(e.type==="mdxFlowExpression"||e.type==="mdxTextExpression")return aye(t,e);if(e.type==="mdxJsxFlowElement"||e.type==="mdxJsxTextElement")return lye(t,e,n);if(e.type==="mdxjsEsm")return oye(t,e);if(e.type==="root")return cye(t,e,n);if(e.type==="text")return uye(t,e)}function iye(t,e,n){const r=t.schema;let s=r;e.tagName.toLowerCase()==="svg"&&r.space==="html"&&(s=_b,t.schema=s),t.ancestors.push(e);const i=XQ(t,e.tagName,!1),a=fye(t,e);let l=aN(t,e);return nye.has(e.tagName)&&(l=l.filter(function(c){return typeof c=="string"?!Ive(c):!0})),GQ(t,a,i,e),iN(a,l),t.ancestors.pop(),t.schema=r,t.create(e,i,a,n)}function aye(t,e){if(e.data&&e.data.estree&&t.evaluater){const r=e.data.estree.body[0];return r.type,t.evaluater.evaluateExpression(r.expression)}hp(t,e.position)}function oye(t,e){if(e.data&&e.data.estree&&t.evaluater)return t.evaluater.evaluateProgram(e.data.estree);hp(t,e.position)}function lye(t,e,n){const r=t.schema;let s=r;e.name==="svg"&&r.space==="html"&&(s=_b,t.schema=s),t.ancestors.push(e);const i=e.name===null?t.Fragment:XQ(t,e.name,!0),a=mye(t,e),l=aN(t,e);return GQ(t,a,i,e),iN(a,l),t.ancestors.pop(),t.schema=r,t.create(e,i,a,n)}function cye(t,e,n){const r={};return iN(r,aN(t,e)),t.create(e,t.Fragment,r,n)}function uye(t,e){return e.value}function GQ(t,e,n,r){typeof n!="string"&&n!==t.Fragment&&t.passNode&&(e.node=r)}function iN(t,e){if(e.length>0){const n=e.length>1?e:e[0];n&&(t.children=n)}}function dye(t,e,n){return r;function r(s,i,a,l){const d=Array.isArray(a.children)?n:e;return l?d(i,a,l):d(i,a)}}function hye(t,e){return n;function n(r,s,i,a){const l=Array.isArray(i.children),c=rN(r);return e(s,i,a,l,{columnNumber:c?c.column-1:void 0,fileName:t,lineNumber:c?c.line:void 0},void 0)}}function fye(t,e){const n={};let r,s;for(s in e.properties)if(s!=="children"&&sN.call(e.properties,s)){const i=pye(t,s,e.properties[s]);if(i){const[a,l]=i;t.tableCellAlignToStyle&&a==="align"&&typeof l=="string"&&rye.has(e.tagName)?r=l:n[a]=l}}if(r){const i=n.style||(n.style={});i[t.stylePropertyNameCase==="css"?"text-align":"textAlign"]=r}return n}function mye(t,e){const n={};for(const r of e.attributes)if(r.type==="mdxJsxExpressionAttribute")if(r.data&&r.data.estree&&t.evaluater){const i=r.data.estree.body[0];i.type;const a=i.expression;a.type;const l=a.properties[0];l.type,Object.assign(n,t.evaluater.evaluateExpression(l.argument))}else hp(t,e.position);else{const s=r.name;let i;if(r.value&&typeof r.value=="object")if(r.value.data&&r.value.data.estree&&t.evaluater){const l=r.value.data.estree.body[0];l.type,i=t.evaluater.evaluateExpression(l.expression)}else hp(t,e.position);else i=r.value===null?!0:r.value;n[s]=i}return n}function aN(t,e){const n=[];let r=-1;const s=t.passKeys?new Map:eye;for(;++rs?0:s+e:e=e>s?s:e,n=n>0?n:0,r.length<1e4)a=Array.from(r),a.unshift(e,n),t.splice(...a);else for(n&&t.splice(e,n);i0?(Gi(t,t.length,0,e),t):e}const NA={}.hasOwnProperty;function KQ(t){const e={};let n=-1;for(;++n13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)===65535||(n&65535)===65534||n>1114111?"�":String.fromCodePoint(n)}function Ga(t){return t.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const Zs=uu(/[A-Za-z]/),Vs=uu(/[\dA-Za-z]/),Oye=uu(/[#-'*+\--9=?A-Z^-~]/);function fy(t){return t!==null&&(t<32||t===127)}const jO=uu(/\d/),jye=uu(/[\dA-Fa-f]/),Nye=uu(/[!-/:-@[-`{-~]/);function bt(t){return t!==null&&t<-2}function or(t){return t!==null&&(t<0||t===32)}function dn(t){return t===-2||t===-1||t===32}const Mb=uu(new RegExp("\\p{P}|\\p{S}","u")),fd=uu(/\s/);function uu(t){return e;function e(n){return n!==null&&n>-1&&t.test(String.fromCharCode(n))}}function Lf(t){const e=[];let n=-1,r=0,s=0;for(;++n55295&&i<57344){const l=t.charCodeAt(n+1);i<56320&&l>56319&&l<57344?(a=String.fromCharCode(i,l),s=1):a="�"}else a=String.fromCharCode(i);a&&(e.push(t.slice(r,n),encodeURIComponent(a)),r=n+s+1,a=""),s&&(n+=s,s=0)}return e.join("")+t.slice(r)}function on(t,e,n,r){const s=r?r-1:Number.POSITIVE_INFINITY;let i=0;return a;function a(c){return dn(c)?(t.enter(n),l(c)):e(c)}function l(c){return dn(c)&&i++a))return;const M=e.events.length;let I=M,P,L;for(;I--;)if(e.events[I][0]==="exit"&&e.events[I][1].type==="chunkFlow"){if(P){L=e.events[I][1].end;break}P=!0}for(k(r),_=M;_N;){const E=n[T];e.containerState=E[1],E[0].exit.call(e,t)}n.length=N}function j(){s.write([null]),i=void 0,s=void 0,e.containerState._closeFlow=void 0}}function Mye(t,e,n){return on(t,t.attempt(this.parser.constructs.document,e,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function uf(t){if(t===null||or(t)||fd(t))return 1;if(Mb(t))return 2}function Ab(t,e,n){const r=[];let s=-1;for(;++s1&&t[n][1].end.offset-t[n][1].start.offset>1?2:1;const m={...t[r][1].end},g={...t[n][1].start};TA(m,-c),TA(g,c),a={type:c>1?"strongSequence":"emphasisSequence",start:m,end:{...t[r][1].end}},l={type:c>1?"strongSequence":"emphasisSequence",start:{...t[n][1].start},end:g},i={type:c>1?"strongText":"emphasisText",start:{...t[r][1].end},end:{...t[n][1].start}},s={type:c>1?"strong":"emphasis",start:{...a.start},end:{...l.end}},t[r][1].end={...a.start},t[n][1].start={...l.end},d=[],t[r][1].end.offset-t[r][1].start.offset&&(d=fa(d,[["enter",t[r][1],e],["exit",t[r][1],e]])),d=fa(d,[["enter",s,e],["enter",a,e],["exit",a,e],["enter",i,e]]),d=fa(d,Ab(e.parser.constructs.insideSpan.null,t.slice(r+1,n),e)),d=fa(d,[["exit",i,e],["enter",l,e],["exit",l,e],["exit",s,e]]),t[n][1].end.offset-t[n][1].start.offset?(h=2,d=fa(d,[["enter",t[n][1],e],["exit",t[n][1],e]])):h=0,Gi(t,r-1,n-r+3,d),n=r+d.length-h-2;break}}for(n=-1;++n0&&dn(_)?on(t,j,"linePrefix",i+1)(_):j(_)}function j(_){return _===null||bt(_)?t.check(EA,w,T)(_):(t.enter("codeFlowValue"),N(_))}function N(_){return _===null||bt(_)?(t.exit("codeFlowValue"),j(_)):(t.consume(_),N)}function T(_){return t.exit("codeFenced"),e(_)}function E(_,M,I){let P=0;return L;function L(Q){return _.enter("lineEnding"),_.consume(Q),_.exit("lineEnding"),H}function H(Q){return _.enter("codeFencedFence"),dn(Q)?on(_,U,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(Q):U(Q)}function U(Q){return Q===l?(_.enter("codeFencedFenceSequence"),ee(Q)):I(Q)}function ee(Q){return Q===l?(P++,_.consume(Q),ee):P>=a?(_.exit("codeFencedFenceSequence"),dn(Q)?on(_,z,"whitespace")(Q):z(Q)):I(Q)}function z(Q){return Q===null||bt(Q)?(_.exit("codeFencedFence"),M(Q)):I(Q)}}}function Hye(t,e,n){const r=this;return s;function s(a){return a===null?n(a):(t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),i)}function i(a){return r.parser.lazy[r.now().line]?n(a):e(a)}}const jS={name:"codeIndented",tokenize:Vye},Qye={partial:!0,tokenize:Uye};function Vye(t,e,n){const r=this;return s;function s(d){return t.enter("codeIndented"),on(t,i,"linePrefix",5)(d)}function i(d){const h=r.events[r.events.length-1];return h&&h[1].type==="linePrefix"&&h[2].sliceSerialize(h[1],!0).length>=4?a(d):n(d)}function a(d){return d===null?c(d):bt(d)?t.attempt(Qye,a,c)(d):(t.enter("codeFlowValue"),l(d))}function l(d){return d===null||bt(d)?(t.exit("codeFlowValue"),a(d)):(t.consume(d),l)}function c(d){return t.exit("codeIndented"),e(d)}}function Uye(t,e,n){const r=this;return s;function s(a){return r.parser.lazy[r.now().line]?n(a):bt(a)?(t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),s):on(t,i,"linePrefix",5)(a)}function i(a){const l=r.events[r.events.length-1];return l&&l[1].type==="linePrefix"&&l[2].sliceSerialize(l[1],!0).length>=4?e(a):bt(a)?s(a):n(a)}}const Wye={name:"codeText",previous:Xye,resolve:Gye,tokenize:Yye};function Gye(t){let e=t.length-4,n=3,r,s;if((t[n][1].type==="lineEnding"||t[n][1].type==="space")&&(t[e][1].type==="lineEnding"||t[e][1].type==="space")){for(r=n;++r=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return ethis.left.length?this.right.slice(this.right.length-r+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-r+this.left.length).reverse())}splice(e,n,r){const s=n||0;this.setCursor(Math.trunc(e));const i=this.right.splice(this.right.length-s,Number.POSITIVE_INFINITY);return r&&Ym(this.left,r),i.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(e){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(e)}pushMany(e){this.setCursor(Number.POSITIVE_INFINITY),Ym(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),Ym(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0))if(e=4?e(a):t.interrupt(r.parser.constructs.flow,n,e)(a)}}function rV(t,e,n,r,s,i,a,l,c){const d=c||Number.POSITIVE_INFINITY;let h=0;return m;function m(k){return k===60?(t.enter(r),t.enter(s),t.enter(i),t.consume(k),t.exit(i),g):k===null||k===32||k===41||fy(k)?n(k):(t.enter(r),t.enter(a),t.enter(l),t.enter("chunkString",{contentType:"string"}),w(k))}function g(k){return k===62?(t.enter(i),t.consume(k),t.exit(i),t.exit(s),t.exit(r),e):(t.enter(l),t.enter("chunkString",{contentType:"string"}),x(k))}function x(k){return k===62?(t.exit("chunkString"),t.exit(l),g(k)):k===null||k===60||bt(k)?n(k):(t.consume(k),k===92?y:x)}function y(k){return k===60||k===62||k===92?(t.consume(k),x):x(k)}function w(k){return!h&&(k===null||k===41||or(k))?(t.exit("chunkString"),t.exit(l),t.exit(a),t.exit(r),e(k)):h999||x===null||x===91||x===93&&!c||x===94&&!l&&"_hiddenFootnoteSupport"in a.parser.constructs?n(x):x===93?(t.exit(i),t.enter(s),t.consume(x),t.exit(s),t.exit(r),e):bt(x)?(t.enter("lineEnding"),t.consume(x),t.exit("lineEnding"),h):(t.enter("chunkString",{contentType:"string"}),m(x))}function m(x){return x===null||x===91||x===93||bt(x)||l++>999?(t.exit("chunkString"),h(x)):(t.consume(x),c||(c=!dn(x)),x===92?g:m)}function g(x){return x===91||x===92||x===93?(t.consume(x),l++,m):m(x)}}function iV(t,e,n,r,s,i){let a;return l;function l(g){return g===34||g===39||g===40?(t.enter(r),t.enter(s),t.consume(g),t.exit(s),a=g===40?41:g,c):n(g)}function c(g){return g===a?(t.enter(s),t.consume(g),t.exit(s),t.exit(r),e):(t.enter(i),d(g))}function d(g){return g===a?(t.exit(i),c(a)):g===null?n(g):bt(g)?(t.enter("lineEnding"),t.consume(g),t.exit("lineEnding"),on(t,d,"linePrefix")):(t.enter("chunkString",{contentType:"string"}),h(g))}function h(g){return g===a||g===null||bt(g)?(t.exit("chunkString"),d(g)):(t.consume(g),g===92?m:h)}function m(g){return g===a||g===92?(t.consume(g),h):h(g)}}function T0(t,e){let n;return r;function r(s){return bt(s)?(t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),n=!0,r):dn(s)?on(t,r,n?"linePrefix":"lineSuffix")(s):e(s)}}const sbe={name:"definition",tokenize:abe},ibe={partial:!0,tokenize:obe};function abe(t,e,n){const r=this;let s;return i;function i(x){return t.enter("definition"),a(x)}function a(x){return sV.call(r,t,l,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(x)}function l(x){return s=Ga(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),x===58?(t.enter("definitionMarker"),t.consume(x),t.exit("definitionMarker"),c):n(x)}function c(x){return or(x)?T0(t,d)(x):d(x)}function d(x){return rV(t,h,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(x)}function h(x){return t.attempt(ibe,m,m)(x)}function m(x){return dn(x)?on(t,g,"whitespace")(x):g(x)}function g(x){return x===null||bt(x)?(t.exit("definition"),r.parser.defined.push(s),e(x)):n(x)}}function obe(t,e,n){return r;function r(l){return or(l)?T0(t,s)(l):n(l)}function s(l){return iV(t,i,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(l)}function i(l){return dn(l)?on(t,a,"whitespace")(l):a(l)}function a(l){return l===null||bt(l)?e(l):n(l)}}const lbe={name:"hardBreakEscape",tokenize:cbe};function cbe(t,e,n){return r;function r(i){return t.enter("hardBreakEscape"),t.consume(i),s}function s(i){return bt(i)?(t.exit("hardBreakEscape"),e(i)):n(i)}}const ube={name:"headingAtx",resolve:dbe,tokenize:hbe};function dbe(t,e){let n=t.length-2,r=3,s,i;return t[r][1].type==="whitespace"&&(r+=2),n-2>r&&t[n][1].type==="whitespace"&&(n-=2),t[n][1].type==="atxHeadingSequence"&&(r===n-1||n-4>r&&t[n-2][1].type==="whitespace")&&(n-=r+1===n?2:4),n>r&&(s={type:"atxHeadingText",start:t[r][1].start,end:t[n][1].end},i={type:"chunkText",start:t[r][1].start,end:t[n][1].end,contentType:"text"},Gi(t,r,n-r+1,[["enter",s,e],["enter",i,e],["exit",i,e],["exit",s,e]])),t}function hbe(t,e,n){let r=0;return s;function s(h){return t.enter("atxHeading"),i(h)}function i(h){return t.enter("atxHeadingSequence"),a(h)}function a(h){return h===35&&r++<6?(t.consume(h),a):h===null||or(h)?(t.exit("atxHeadingSequence"),l(h)):n(h)}function l(h){return h===35?(t.enter("atxHeadingSequence"),c(h)):h===null||bt(h)?(t.exit("atxHeading"),e(h)):dn(h)?on(t,l,"whitespace")(h):(t.enter("atxHeadingText"),d(h))}function c(h){return h===35?(t.consume(h),c):(t.exit("atxHeadingSequence"),l(h))}function d(h){return h===null||h===35||or(h)?(t.exit("atxHeadingText"),l(h)):(t.consume(h),d)}}const fbe=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],MA=["pre","script","style","textarea"],mbe={concrete:!0,name:"htmlFlow",resolveTo:xbe,tokenize:vbe},pbe={partial:!0,tokenize:bbe},gbe={partial:!0,tokenize:ybe};function xbe(t){let e=t.length;for(;e--&&!(t[e][0]==="enter"&&t[e][1].type==="htmlFlow"););return e>1&&t[e-2][1].type==="linePrefix"&&(t[e][1].start=t[e-2][1].start,t[e+1][1].start=t[e-2][1].start,t.splice(e-2,2)),t}function vbe(t,e,n){const r=this;let s,i,a,l,c;return d;function d(q){return h(q)}function h(q){return t.enter("htmlFlow"),t.enter("htmlFlowData"),t.consume(q),m}function m(q){return q===33?(t.consume(q),g):q===47?(t.consume(q),i=!0,w):q===63?(t.consume(q),s=3,r.interrupt?e:R):Zs(q)?(t.consume(q),a=String.fromCharCode(q),S):n(q)}function g(q){return q===45?(t.consume(q),s=2,x):q===91?(t.consume(q),s=5,l=0,y):Zs(q)?(t.consume(q),s=4,r.interrupt?e:R):n(q)}function x(q){return q===45?(t.consume(q),r.interrupt?e:R):n(q)}function y(q){const V="CDATA[";return q===V.charCodeAt(l++)?(t.consume(q),l===V.length?r.interrupt?e:U:y):n(q)}function w(q){return Zs(q)?(t.consume(q),a=String.fromCharCode(q),S):n(q)}function S(q){if(q===null||q===47||q===62||or(q)){const V=q===47,te=a.toLowerCase();return!V&&!i&&MA.includes(te)?(s=1,r.interrupt?e(q):U(q)):fbe.includes(a.toLowerCase())?(s=6,V?(t.consume(q),k):r.interrupt?e(q):U(q)):(s=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(q):i?j(q):N(q))}return q===45||Vs(q)?(t.consume(q),a+=String.fromCharCode(q),S):n(q)}function k(q){return q===62?(t.consume(q),r.interrupt?e:U):n(q)}function j(q){return dn(q)?(t.consume(q),j):L(q)}function N(q){return q===47?(t.consume(q),L):q===58||q===95||Zs(q)?(t.consume(q),T):dn(q)?(t.consume(q),N):L(q)}function T(q){return q===45||q===46||q===58||q===95||Vs(q)?(t.consume(q),T):E(q)}function E(q){return q===61?(t.consume(q),_):dn(q)?(t.consume(q),E):N(q)}function _(q){return q===null||q===60||q===61||q===62||q===96?n(q):q===34||q===39?(t.consume(q),c=q,M):dn(q)?(t.consume(q),_):I(q)}function M(q){return q===c?(t.consume(q),c=null,P):q===null||bt(q)?n(q):(t.consume(q),M)}function I(q){return q===null||q===34||q===39||q===47||q===60||q===61||q===62||q===96||or(q)?E(q):(t.consume(q),I)}function P(q){return q===47||q===62||dn(q)?N(q):n(q)}function L(q){return q===62?(t.consume(q),H):n(q)}function H(q){return q===null||bt(q)?U(q):dn(q)?(t.consume(q),H):n(q)}function U(q){return q===45&&s===2?(t.consume(q),B):q===60&&s===1?(t.consume(q),X):q===62&&s===4?(t.consume(q),ie):q===63&&s===3?(t.consume(q),R):q===93&&s===5?(t.consume(q),G):bt(q)&&(s===6||s===7)?(t.exit("htmlFlowData"),t.check(pbe,W,ee)(q)):q===null||bt(q)?(t.exit("htmlFlowData"),ee(q)):(t.consume(q),U)}function ee(q){return t.check(gbe,z,W)(q)}function z(q){return t.enter("lineEnding"),t.consume(q),t.exit("lineEnding"),Q}function Q(q){return q===null||bt(q)?ee(q):(t.enter("htmlFlowData"),U(q))}function B(q){return q===45?(t.consume(q),R):U(q)}function X(q){return q===47?(t.consume(q),a="",J):U(q)}function J(q){if(q===62){const V=a.toLowerCase();return MA.includes(V)?(t.consume(q),ie):U(q)}return Zs(q)&&a.length<8?(t.consume(q),a+=String.fromCharCode(q),J):U(q)}function G(q){return q===93?(t.consume(q),R):U(q)}function R(q){return q===62?(t.consume(q),ie):q===45&&s===2?(t.consume(q),R):U(q)}function ie(q){return q===null||bt(q)?(t.exit("htmlFlowData"),W(q)):(t.consume(q),ie)}function W(q){return t.exit("htmlFlow"),e(q)}}function ybe(t,e,n){const r=this;return s;function s(a){return bt(a)?(t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),i):n(a)}function i(a){return r.parser.lazy[r.now().line]?n(a):e(a)}}function bbe(t,e,n){return r;function r(s){return t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),t.attempt(cg,e,n)}}const wbe={name:"htmlText",tokenize:Sbe};function Sbe(t,e,n){const r=this;let s,i,a;return l;function l(R){return t.enter("htmlText"),t.enter("htmlTextData"),t.consume(R),c}function c(R){return R===33?(t.consume(R),d):R===47?(t.consume(R),E):R===63?(t.consume(R),N):Zs(R)?(t.consume(R),I):n(R)}function d(R){return R===45?(t.consume(R),h):R===91?(t.consume(R),i=0,y):Zs(R)?(t.consume(R),j):n(R)}function h(R){return R===45?(t.consume(R),x):n(R)}function m(R){return R===null?n(R):R===45?(t.consume(R),g):bt(R)?(a=m,X(R)):(t.consume(R),m)}function g(R){return R===45?(t.consume(R),x):m(R)}function x(R){return R===62?B(R):R===45?g(R):m(R)}function y(R){const ie="CDATA[";return R===ie.charCodeAt(i++)?(t.consume(R),i===ie.length?w:y):n(R)}function w(R){return R===null?n(R):R===93?(t.consume(R),S):bt(R)?(a=w,X(R)):(t.consume(R),w)}function S(R){return R===93?(t.consume(R),k):w(R)}function k(R){return R===62?B(R):R===93?(t.consume(R),k):w(R)}function j(R){return R===null||R===62?B(R):bt(R)?(a=j,X(R)):(t.consume(R),j)}function N(R){return R===null?n(R):R===63?(t.consume(R),T):bt(R)?(a=N,X(R)):(t.consume(R),N)}function T(R){return R===62?B(R):N(R)}function E(R){return Zs(R)?(t.consume(R),_):n(R)}function _(R){return R===45||Vs(R)?(t.consume(R),_):M(R)}function M(R){return bt(R)?(a=M,X(R)):dn(R)?(t.consume(R),M):B(R)}function I(R){return R===45||Vs(R)?(t.consume(R),I):R===47||R===62||or(R)?P(R):n(R)}function P(R){return R===47?(t.consume(R),B):R===58||R===95||Zs(R)?(t.consume(R),L):bt(R)?(a=P,X(R)):dn(R)?(t.consume(R),P):B(R)}function L(R){return R===45||R===46||R===58||R===95||Vs(R)?(t.consume(R),L):H(R)}function H(R){return R===61?(t.consume(R),U):bt(R)?(a=H,X(R)):dn(R)?(t.consume(R),H):P(R)}function U(R){return R===null||R===60||R===61||R===62||R===96?n(R):R===34||R===39?(t.consume(R),s=R,ee):bt(R)?(a=U,X(R)):dn(R)?(t.consume(R),U):(t.consume(R),z)}function ee(R){return R===s?(t.consume(R),s=void 0,Q):R===null?n(R):bt(R)?(a=ee,X(R)):(t.consume(R),ee)}function z(R){return R===null||R===34||R===39||R===60||R===61||R===96?n(R):R===47||R===62||or(R)?P(R):(t.consume(R),z)}function Q(R){return R===47||R===62||or(R)?P(R):n(R)}function B(R){return R===62?(t.consume(R),t.exit("htmlTextData"),t.exit("htmlText"),e):n(R)}function X(R){return t.exit("htmlTextData"),t.enter("lineEnding"),t.consume(R),t.exit("lineEnding"),J}function J(R){return dn(R)?on(t,G,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(R):G(R)}function G(R){return t.enter("htmlTextData"),a(R)}}const cN={name:"labelEnd",resolveAll:Nbe,resolveTo:Cbe,tokenize:Tbe},kbe={tokenize:Ebe},Obe={tokenize:_be},jbe={tokenize:Mbe};function Nbe(t){let e=-1;const n=[];for(;++e=3&&(d===null||bt(d))?(t.exit("thematicBreak"),e(d)):n(d)}function c(d){return d===s?(t.consume(d),r++,c):(t.exit("thematicBreakSequence"),dn(d)?on(t,l,"whitespace")(d):l(d))}}const fi={continuation:{tokenize:qbe},exit:Hbe,name:"list",tokenize:Fbe},Lbe={partial:!0,tokenize:Qbe},Bbe={partial:!0,tokenize:$be};function Fbe(t,e,n){const r=this,s=r.events[r.events.length-1];let i=s&&s[1].type==="linePrefix"?s[2].sliceSerialize(s[1],!0).length:0,a=0;return l;function l(x){const y=r.containerState.type||(x===42||x===43||x===45?"listUnordered":"listOrdered");if(y==="listUnordered"?!r.containerState.marker||x===r.containerState.marker:jO(x)){if(r.containerState.type||(r.containerState.type=y,t.enter(y,{_container:!0})),y==="listUnordered")return t.enter("listItemPrefix"),x===42||x===45?t.check(bv,n,d)(x):d(x);if(!r.interrupt||x===49)return t.enter("listItemPrefix"),t.enter("listItemValue"),c(x)}return n(x)}function c(x){return jO(x)&&++a<10?(t.consume(x),c):(!r.interrupt||a<2)&&(r.containerState.marker?x===r.containerState.marker:x===41||x===46)?(t.exit("listItemValue"),d(x)):n(x)}function d(x){return t.enter("listItemMarker"),t.consume(x),t.exit("listItemMarker"),r.containerState.marker=r.containerState.marker||x,t.check(cg,r.interrupt?n:h,t.attempt(Lbe,g,m))}function h(x){return r.containerState.initialBlankLine=!0,i++,g(x)}function m(x){return dn(x)?(t.enter("listItemPrefixWhitespace"),t.consume(x),t.exit("listItemPrefixWhitespace"),g):n(x)}function g(x){return r.containerState.size=i+r.sliceSerialize(t.exit("listItemPrefix"),!0).length,e(x)}}function qbe(t,e,n){const r=this;return r.containerState._closeFlow=void 0,t.check(cg,s,i);function s(l){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,on(t,e,"listItemIndent",r.containerState.size+1)(l)}function i(l){return r.containerState.furtherBlankLines||!dn(l)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,a(l)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,t.attempt(Bbe,e,a)(l))}function a(l){return r.containerState._closeFlow=!0,r.interrupt=void 0,on(t,t.attempt(fi,e,n),"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(l)}}function $be(t,e,n){const r=this;return on(t,s,"listItemIndent",r.containerState.size+1);function s(i){const a=r.events[r.events.length-1];return a&&a[1].type==="listItemIndent"&&a[2].sliceSerialize(a[1],!0).length===r.containerState.size?e(i):n(i)}}function Hbe(t){t.exit(this.containerState.type)}function Qbe(t,e,n){const r=this;return on(t,s,"listItemPrefixWhitespace",r.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function s(i){const a=r.events[r.events.length-1];return!dn(i)&&a&&a[1].type==="listItemPrefixWhitespace"?e(i):n(i)}}const AA={name:"setextUnderline",resolveTo:Vbe,tokenize:Ube};function Vbe(t,e){let n=t.length,r,s,i;for(;n--;)if(t[n][0]==="enter"){if(t[n][1].type==="content"){r=n;break}t[n][1].type==="paragraph"&&(s=n)}else t[n][1].type==="content"&&t.splice(n,1),!i&&t[n][1].type==="definition"&&(i=n);const a={type:"setextHeading",start:{...t[r][1].start},end:{...t[t.length-1][1].end}};return t[s][1].type="setextHeadingText",i?(t.splice(s,0,["enter",a,e]),t.splice(i+1,0,["exit",t[r][1],e]),t[r][1].end={...t[i][1].end}):t[r][1]=a,t.push(["exit",a,e]),t}function Ube(t,e,n){const r=this;let s;return i;function i(d){let h=r.events.length,m;for(;h--;)if(r.events[h][1].type!=="lineEnding"&&r.events[h][1].type!=="linePrefix"&&r.events[h][1].type!=="content"){m=r.events[h][1].type==="paragraph";break}return!r.parser.lazy[r.now().line]&&(r.interrupt||m)?(t.enter("setextHeadingLine"),s=d,a(d)):n(d)}function a(d){return t.enter("setextHeadingLineSequence"),l(d)}function l(d){return d===s?(t.consume(d),l):(t.exit("setextHeadingLineSequence"),dn(d)?on(t,c,"lineSuffix")(d):c(d))}function c(d){return d===null||bt(d)?(t.exit("setextHeadingLine"),e(d)):n(d)}}const Wbe={tokenize:Gbe};function Gbe(t){const e=this,n=t.attempt(cg,r,t.attempt(this.parser.constructs.flowInitial,s,on(t,t.attempt(this.parser.constructs.flow,s,t.attempt(Jye,s)),"linePrefix")));return n;function r(i){if(i===null){t.consume(i);return}return t.enter("lineEndingBlank"),t.consume(i),t.exit("lineEndingBlank"),e.currentConstruct=void 0,n}function s(i){if(i===null){t.consume(i);return}return t.enter("lineEnding"),t.consume(i),t.exit("lineEnding"),e.currentConstruct=void 0,n}}const Xbe={resolveAll:oV()},Ybe=aV("string"),Kbe=aV("text");function aV(t){return{resolveAll:oV(t==="text"?Zbe:void 0),tokenize:e};function e(n){const r=this,s=this.parser.constructs[t],i=n.attempt(s,a,l);return a;function a(h){return d(h)?i(h):l(h)}function l(h){if(h===null){n.consume(h);return}return n.enter("data"),n.consume(h),c}function c(h){return d(h)?(n.exit("data"),i(h)):(n.consume(h),c)}function d(h){if(h===null)return!0;const m=s[h];let g=-1;if(m)for(;++g-1){const l=a[0];typeof l=="string"?a[0]=l.slice(r):a.shift()}i>0&&a.push(t[s].slice(0,i))}return a}function dwe(t,e){let n=-1;const r=[];let s;for(;++n{d(!0)},[]),l1e(b.useMemo(()=>({onDragStart(m){let{active:g}=m;i(e.onDragStart({active:g}))},onDragMove(m){let{active:g,over:x}=m;e.onDragMove&&i(e.onDragMove({active:g,over:x}))},onDragOver(m){let{active:g,over:x}=m;i(e.onDragOver({active:g,over:x}))},onDragEnd(m){let{active:g,over:x}=m;i(e.onDragEnd({active:g,over:x}))},onDragCancel(m){let{active:g,over:x}=m;i(e.onDragCancel({active:g,over:x}))}}),[i,e])),!c)return null;const h=ae.createElement(ae.Fragment,null,ae.createElement(i1e,{id:r,value:s.draggable}),ae.createElement(a1e,{id:l,announcement:a}));return n?pa.createPortal(h,n):h}var ds;(function(t){t.DragStart="dragStart",t.DragMove="dragMove",t.DragEnd="dragEnd",t.DragCancel="dragCancel",t.DragOver="dragOver",t.RegisterDroppable="registerDroppable",t.SetDroppableDisabled="setDroppableDisabled",t.UnregisterDroppable="unregisterDroppable"})(ds||(ds={}));function py(){}function tM(t,e){return b.useMemo(()=>({sensor:t,options:e??{}}),[t,e])}function f1e(){for(var t=arguments.length,e=new Array(t),n=0;n[...e].filter(r=>r!=null),[...e])}const Za=Object.freeze({x:0,y:0});function wQ(t,e){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function SQ(t,e){let{data:{value:n}}=t,{data:{value:r}}=e;return n-r}function m1e(t,e){let{data:{value:n}}=t,{data:{value:r}}=e;return r-n}function nM(t){let{left:e,top:n,height:r,width:s}=t;return[{x:e,y:n},{x:e+s,y:n},{x:e,y:n+r},{x:e+s,y:n+r}]}function kQ(t,e){if(!t||t.length===0)return null;const[n]=t;return n[e]}function rM(t,e,n){return e===void 0&&(e=t.left),n===void 0&&(n=t.top),{x:e+t.width*.5,y:n+t.height*.5}}const p1e=t=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=rM(e,e.left,e.top),i=[];for(const a of r){const{id:l}=a,c=n.get(l);if(c){const d=wQ(rM(c),s);i.push({id:l,data:{droppableContainer:a,value:d}})}}return i.sort(SQ)},g1e=t=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=nM(e),i=[];for(const a of r){const{id:l}=a,c=n.get(l);if(c){const d=nM(c),h=s.reduce((g,x,y)=>g+wQ(d[y],x),0),m=Number((h/4).toFixed(4));i.push({id:l,data:{droppableContainer:a,value:m}})}}return i.sort(SQ)};function x1e(t,e){const n=Math.max(e.top,t.top),r=Math.max(e.left,t.left),s=Math.min(e.left+e.width,t.left+t.width),i=Math.min(e.top+e.height,t.top+t.height),a=s-r,l=i-n;if(r{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=[];for(const i of r){const{id:a}=i,l=n.get(a);if(l){const c=x1e(l,e);c>0&&s.push({id:a,data:{droppableContainer:i,value:c}})}}return s.sort(m1e)};function y1e(t,e,n){return{...t,scaleX:e&&n?e.width/n.width:1,scaleY:e&&n?e.height/n.height:1}}function OQ(t,e){return t&&e?{x:t.left-e.left,y:t.top-e.top}:Za}function b1e(t){return function(n){for(var r=arguments.length,s=new Array(r>1?r-1:0),i=1;i({...a,top:a.top+t*l.y,bottom:a.bottom+t*l.y,left:a.left+t*l.x,right:a.right+t*l.x}),{...n})}}const w1e=b1e(1);function S1e(t){if(t.startsWith("matrix3d(")){const e=t.slice(9,-1).split(/, /);return{x:+e[12],y:+e[13],scaleX:+e[0],scaleY:+e[5]}}else if(t.startsWith("matrix(")){const e=t.slice(7,-1).split(/, /);return{x:+e[4],y:+e[5],scaleX:+e[0],scaleY:+e[3]}}return null}function k1e(t,e,n){const r=S1e(e);if(!r)return t;const{scaleX:s,scaleY:i,x:a,y:l}=r,c=t.left-a-(1-s)*parseFloat(n),d=t.top-l-(1-i)*parseFloat(n.slice(n.indexOf(" ")+1)),h=s?t.width/s:t.width,m=i?t.height/i:t.height;return{width:h,height:m,top:d,right:c+h,bottom:d+m,left:c}}const O1e={ignoreTransform:!1};function Lf(t,e){e===void 0&&(e=O1e);let n=t.getBoundingClientRect();if(e.ignoreTransform){const{transform:d,transformOrigin:h}=Ti(t).getComputedStyle(t);d&&(n=k1e(n,d,h))}const{top:r,left:s,width:i,height:a,bottom:l,right:c}=n;return{top:r,left:s,width:i,height:a,bottom:l,right:c}}function sM(t){return Lf(t,{ignoreTransform:!0})}function j1e(t){const e=t.innerWidth,n=t.innerHeight;return{top:0,left:0,right:e,bottom:n,width:e,height:n}}function N1e(t,e){return e===void 0&&(e=Ti(t).getComputedStyle(t)),e.position==="fixed"}function C1e(t,e){e===void 0&&(e=Ti(t).getComputedStyle(t));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(s=>{const i=e[s];return typeof i=="string"?n.test(i):!1})}function Mb(t,e){const n=[];function r(s){if(e!=null&&n.length>=e||!s)return n;if(Z6(s)&&s.scrollingElement!=null&&!n.includes(s.scrollingElement))return n.push(s.scrollingElement),n;if(!og(s)||vQ(s)||n.includes(s))return n;const i=Ti(t).getComputedStyle(s);return s!==t&&C1e(s,i)&&n.push(s),N1e(s,i)?n:r(s.parentNode)}return t?r(t):n}function jQ(t){const[e]=Mb(t,1);return e??null}function OS(t){return!Ab||!t?null:zf(t)?t:K6(t)?Z6(t)||t===If(t).scrollingElement?window:og(t)?t:null:null}function NQ(t){return zf(t)?t.scrollX:t.scrollLeft}function CQ(t){return zf(t)?t.scrollY:t.scrollTop}function jO(t){return{x:NQ(t),y:CQ(t)}}var ys;(function(t){t[t.Forward=1]="Forward",t[t.Backward=-1]="Backward"})(ys||(ys={}));function TQ(t){return!Ab||!t?!1:t===document.scrollingElement}function EQ(t){const e={x:0,y:0},n=TQ(t)?{height:window.innerHeight,width:window.innerWidth}:{height:t.clientHeight,width:t.clientWidth},r={x:t.scrollWidth-n.width,y:t.scrollHeight-n.height},s=t.scrollTop<=e.y,i=t.scrollLeft<=e.x,a=t.scrollTop>=r.y,l=t.scrollLeft>=r.x;return{isTop:s,isLeft:i,isBottom:a,isRight:l,maxScroll:r,minScroll:e}}const T1e={x:.2,y:.2};function E1e(t,e,n,r,s){let{top:i,left:a,right:l,bottom:c}=n;r===void 0&&(r=10),s===void 0&&(s=T1e);const{isTop:d,isBottom:h,isLeft:m,isRight:g}=EQ(t),x={x:0,y:0},y={x:0,y:0},w={height:e.height*s.y,width:e.width*s.x};return!d&&i<=e.top+w.height?(x.y=ys.Backward,y.y=r*Math.abs((e.top+w.height-i)/w.height)):!h&&c>=e.bottom-w.height&&(x.y=ys.Forward,y.y=r*Math.abs((e.bottom-w.height-c)/w.height)),!g&&l>=e.right-w.width?(x.x=ys.Forward,y.x=r*Math.abs((e.right-w.width-l)/w.width)):!m&&a<=e.left+w.width&&(x.x=ys.Backward,y.x=r*Math.abs((e.left+w.width-a)/w.width)),{direction:x,speed:y}}function _1e(t){if(t===document.scrollingElement){const{innerWidth:i,innerHeight:a}=window;return{top:0,left:0,right:i,bottom:a,width:i,height:a}}const{top:e,left:n,right:r,bottom:s}=t.getBoundingClientRect();return{top:e,left:n,right:r,bottom:s,width:t.clientWidth,height:t.clientHeight}}function _Q(t){return t.reduce((e,n)=>Fh(e,jO(n)),Za)}function A1e(t){return t.reduce((e,n)=>e+NQ(n),0)}function M1e(t){return t.reduce((e,n)=>e+CQ(n),0)}function R1e(t,e){if(e===void 0&&(e=Lf),!t)return;const{top:n,left:r,bottom:s,right:i}=e(t);jQ(t)&&(s<=0||i<=0||n>=window.innerHeight||r>=window.innerWidth)&&t.scrollIntoView({block:"center",inline:"center"})}const D1e=[["x",["left","right"],A1e],["y",["top","bottom"],M1e]];class tN{constructor(e,n){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=Mb(n),s=_Q(r);this.rect={...e},this.width=e.width,this.height=e.height;for(const[i,a,l]of D1e)for(const c of a)Object.defineProperty(this,c,{get:()=>{const d=l(r),h=s[i]-d;return this.rect[c]+h},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class C0{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(n=>{var r;return(r=this.target)==null?void 0:r.removeEventListener(...n)})},this.target=e}add(e,n,r){var s;(s=this.target)==null||s.addEventListener(e,n,r),this.listeners.push([e,n,r])}}function P1e(t){const{EventTarget:e}=Ti(t);return t instanceof e?t:If(t)}function jS(t,e){const n=Math.abs(t.x),r=Math.abs(t.y);return typeof e=="number"?Math.sqrt(n**2+r**2)>e:"x"in e&&"y"in e?n>e.x&&r>e.y:"x"in e?n>e.x:"y"in e?r>e.y:!1}var da;(function(t){t.Click="click",t.DragStart="dragstart",t.Keydown="keydown",t.ContextMenu="contextmenu",t.Resize="resize",t.SelectionChange="selectionchange",t.VisibilityChange="visibilitychange"})(da||(da={}));function iM(t){t.preventDefault()}function z1e(t){t.stopPropagation()}var bn;(function(t){t.Space="Space",t.Down="ArrowDown",t.Right="ArrowRight",t.Left="ArrowLeft",t.Up="ArrowUp",t.Esc="Escape",t.Enter="Enter",t.Tab="Tab"})(bn||(bn={}));const AQ={start:[bn.Space,bn.Enter],cancel:[bn.Esc],end:[bn.Space,bn.Enter,bn.Tab]},I1e=(t,e)=>{let{currentCoordinates:n}=e;switch(t.code){case bn.Right:return{...n,x:n.x+25};case bn.Left:return{...n,x:n.x-25};case bn.Down:return{...n,y:n.y+25};case bn.Up:return{...n,y:n.y-25}}};class nN{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;const{event:{target:n}}=e;this.props=e,this.listeners=new C0(If(n)),this.windowListeners=new C0(Ti(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(da.Resize,this.handleCancel),this.windowListeners.add(da.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(da.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:e,onStart:n}=this.props,r=e.node.current;r&&R1e(r),n(Za)}handleKeyDown(e){if(eN(e)){const{active:n,context:r,options:s}=this.props,{keyboardCodes:i=AQ,coordinateGetter:a=I1e,scrollBehavior:l="smooth"}=s,{code:c}=e;if(i.end.includes(c)){this.handleEnd(e);return}if(i.cancel.includes(c)){this.handleCancel(e);return}const{collisionRect:d}=r.current,h=d?{x:d.left,y:d.top}:Za;this.referenceCoordinates||(this.referenceCoordinates=h);const m=a(e,{active:n,context:r.current,currentCoordinates:h});if(m){const g=dp(m,h),x={x:0,y:0},{scrollableAncestors:y}=r.current;for(const w of y){const S=e.code,{isTop:k,isRight:j,isLeft:N,isBottom:T,maxScroll:E,minScroll:_}=EQ(w),A=_1e(w),L={x:Math.min(S===bn.Right?A.right-A.width/2:A.right,Math.max(S===bn.Right?A.left:A.left+A.width/2,m.x)),y:Math.min(S===bn.Down?A.bottom-A.height/2:A.bottom,Math.max(S===bn.Down?A.top:A.top+A.height/2,m.y))},P=S===bn.Right&&!j||S===bn.Left&&!N,B=S===bn.Down&&!T||S===bn.Up&&!k;if(P&&L.x!==m.x){const $=w.scrollLeft+g.x,U=S===bn.Right&&$<=E.x||S===bn.Left&&$>=_.x;if(U&&!g.y){w.scrollTo({left:$,behavior:l});return}U?x.x=w.scrollLeft-$:x.x=S===bn.Right?w.scrollLeft-E.x:w.scrollLeft-_.x,x.x&&w.scrollBy({left:-x.x,behavior:l});break}else if(B&&L.y!==m.y){const $=w.scrollTop+g.y,U=S===bn.Down&&$<=E.y||S===bn.Up&&$>=_.y;if(U&&!g.x){w.scrollTo({top:$,behavior:l});return}U?x.y=w.scrollTop-$:x.y=S===bn.Down?w.scrollTop-E.y:w.scrollTop-_.y,x.y&&w.scrollBy({top:-x.y,behavior:l});break}}this.handleMove(e,Fh(dp(m,this.referenceCoordinates),x))}}}handleMove(e,n){const{onMove:r}=this.props;e.preventDefault(),r(n)}handleEnd(e){const{onEnd:n}=this.props;e.preventDefault(),this.detach(),n()}handleCancel(e){const{onCancel:n}=this.props;e.preventDefault(),this.detach(),n()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}nN.activators=[{eventName:"onKeyDown",handler:(t,e,n)=>{let{keyboardCodes:r=AQ,onActivation:s}=e,{active:i}=n;const{code:a}=t.nativeEvent;if(r.start.includes(a)){const l=i.activatorNode.current;return l&&t.target!==l?!1:(t.preventDefault(),s?.({event:t.nativeEvent}),!0)}return!1}}];function aM(t){return!!(t&&"distance"in t)}function oM(t){return!!(t&&"delay"in t)}class rN{constructor(e,n,r){var s;r===void 0&&(r=P1e(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=n;const{event:i}=e,{target:a}=i;this.props=e,this.events=n,this.document=If(a),this.documentListeners=new C0(this.document),this.listeners=new C0(r),this.windowListeners=new C0(Ti(a)),this.initialCoordinates=(s=OO(i))!=null?s:Za,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:e,props:{options:{activationConstraint:n,bypassActivationConstraint:r}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(da.Resize,this.handleCancel),this.windowListeners.add(da.DragStart,iM),this.windowListeners.add(da.VisibilityChange,this.handleCancel),this.windowListeners.add(da.ContextMenu,iM),this.documentListeners.add(da.Keydown,this.handleKeydown),n){if(r!=null&&r({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(oM(n)){this.timeoutId=setTimeout(this.handleStart,n.delay),this.handlePending(n);return}if(aM(n)){this.handlePending(n);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,n){const{active:r,onPending:s}=this.props;s(r,e,this.initialCoordinates,n)}handleStart(){const{initialCoordinates:e}=this,{onStart:n}=this.props;e&&(this.activated=!0,this.documentListeners.add(da.Click,z1e,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(da.SelectionChange,this.removeTextSelection),n(e))}handleMove(e){var n;const{activated:r,initialCoordinates:s,props:i}=this,{onMove:a,options:{activationConstraint:l}}=i;if(!s)return;const c=(n=OO(e))!=null?n:Za,d=dp(s,c);if(!r&&l){if(aM(l)){if(l.tolerance!=null&&jS(d,l.tolerance))return this.handleCancel();if(jS(d,l.distance))return this.handleStart()}if(oM(l)&&jS(d,l.tolerance))return this.handleCancel();this.handlePending(l,d);return}e.cancelable&&e.preventDefault(),a(c)}handleEnd(){const{onAbort:e,onEnd:n}=this.props;this.detach(),this.activated||e(this.props.active),n()}handleCancel(){const{onAbort:e,onCancel:n}=this.props;this.detach(),this.activated||e(this.props.active),n()}handleKeydown(e){e.code===bn.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}}const L1e={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class sN extends rN{constructor(e){const{event:n}=e,r=If(n.target);super(e,L1e,r)}}sN.activators=[{eventName:"onPointerDown",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];const B1e={move:{name:"mousemove"},end:{name:"mouseup"}};var NO;(function(t){t[t.RightClick=2]="RightClick"})(NO||(NO={}));class F1e extends rN{constructor(e){super(e,B1e,If(e.event.target))}}F1e.activators=[{eventName:"onMouseDown",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;return n.button===NO.RightClick?!1:(r?.({event:n}),!0)}}];const NS={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class q1e extends rN{constructor(e){super(e,NS)}static setup(){return window.addEventListener(NS.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(NS.move.name,e)};function e(){}}}q1e.activators=[{eventName:"onTouchStart",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;const{touches:s}=n;return s.length>1?!1:(r?.({event:n}),!0)}}];var T0;(function(t){t[t.Pointer=0]="Pointer",t[t.DraggableRect=1]="DraggableRect"})(T0||(T0={}));var gy;(function(t){t[t.TreeOrder=0]="TreeOrder",t[t.ReversedTreeOrder=1]="ReversedTreeOrder"})(gy||(gy={}));function $1e(t){let{acceleration:e,activator:n=T0.Pointer,canScroll:r,draggingRect:s,enabled:i,interval:a=5,order:l=gy.TreeOrder,pointerCoordinates:c,scrollableAncestors:d,scrollableAncestorRects:h,delta:m,threshold:g}=t;const x=Q1e({delta:m,disabled:!i}),[y,w]=e1e(),S=b.useRef({x:0,y:0}),k=b.useRef({x:0,y:0}),j=b.useMemo(()=>{switch(n){case T0.Pointer:return c?{top:c.y,bottom:c.y,left:c.x,right:c.x}:null;case T0.DraggableRect:return s}},[n,s,c]),N=b.useRef(null),T=b.useCallback(()=>{const _=N.current;if(!_)return;const A=S.current.x*k.current.x,L=S.current.y*k.current.y;_.scrollBy(A,L)},[]),E=b.useMemo(()=>l===gy.TreeOrder?[...d].reverse():d,[l,d]);b.useEffect(()=>{if(!i||!d.length||!j){w();return}for(const _ of E){if(r?.(_)===!1)continue;const A=d.indexOf(_),L=h[A];if(!L)continue;const{direction:P,speed:B}=E1e(_,L,j,e,g);for(const $ of["x","y"])x[$][P[$]]||(B[$]=0,P[$]=0);if(B.x>0||B.y>0){w(),N.current=_,y(T,a),S.current=B,k.current=P;return}}S.current={x:0,y:0},k.current={x:0,y:0},w()},[e,T,r,w,i,a,JSON.stringify(j),JSON.stringify(x),y,d,E,h,JSON.stringify(g)])}const H1e={x:{[ys.Backward]:!1,[ys.Forward]:!1},y:{[ys.Backward]:!1,[ys.Forward]:!1}};function Q1e(t){let{delta:e,disabled:n}=t;const r=kO(e);return lg(s=>{if(n||!r||!s)return H1e;const i={x:Math.sign(e.x-r.x),y:Math.sign(e.y-r.y)};return{x:{[ys.Backward]:s.x[ys.Backward]||i.x===-1,[ys.Forward]:s.x[ys.Forward]||i.x===1},y:{[ys.Backward]:s.y[ys.Backward]||i.y===-1,[ys.Forward]:s.y[ys.Forward]||i.y===1}}},[n,e,r])}function V1e(t,e){const n=e!=null?t.get(e):void 0,r=n?n.node.current:null;return lg(s=>{var i;return e==null?null:(i=r??s)!=null?i:null},[r,e])}function U1e(t,e){return b.useMemo(()=>t.reduce((n,r)=>{const{sensor:s}=r,i=s.activators.map(a=>({eventName:a.eventName,handler:e(a.handler,r)}));return[...n,...i]},[]),[t,e])}var fp;(function(t){t[t.Always=0]="Always",t[t.BeforeDragging=1]="BeforeDragging",t[t.WhileDragging=2]="WhileDragging"})(fp||(fp={}));var CO;(function(t){t.Optimized="optimized"})(CO||(CO={}));const lM=new Map;function W1e(t,e){let{dragging:n,dependencies:r,config:s}=e;const[i,a]=b.useState(null),{frequency:l,measure:c,strategy:d}=s,h=b.useRef(t),m=S(),g=up(m),x=b.useCallback(function(k){k===void 0&&(k=[]),!g.current&&a(j=>j===null?k:j.concat(k.filter(N=>!j.includes(N))))},[g]),y=b.useRef(null),w=lg(k=>{if(m&&!n)return lM;if(!k||k===lM||h.current!==t||i!=null){const j=new Map;for(let N of t){if(!N)continue;if(i&&i.length>0&&!i.includes(N.id)&&N.rect.current){j.set(N.id,N.rect.current);continue}const T=N.node.current,E=T?new tN(c(T),T):null;N.rect.current=E,E&&j.set(N.id,E)}return j}return k},[t,i,n,m,c]);return b.useEffect(()=>{h.current=t},[t]),b.useEffect(()=>{m||x()},[n,m]),b.useEffect(()=>{i&&i.length>0&&a(null)},[JSON.stringify(i)]),b.useEffect(()=>{m||typeof l!="number"||y.current!==null||(y.current=setTimeout(()=>{x(),y.current=null},l))},[l,m,x,...r]),{droppableRects:w,measureDroppableContainers:x,measuringScheduled:i!=null};function S(){switch(d){case fp.Always:return!1;case fp.BeforeDragging:return n;default:return!n}}}function MQ(t,e){return lg(n=>t?n||(typeof e=="function"?e(t):t):null,[e,t])}function G1e(t,e){return MQ(t,e)}function X1e(t){let{callback:e,disabled:n}=t;const r=J6(e),s=b.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:i}=window;return new i(r)},[r,n]);return b.useEffect(()=>()=>s?.disconnect(),[s]),s}function Rb(t){let{callback:e,disabled:n}=t;const r=J6(e),s=b.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:i}=window;return new i(r)},[n]);return b.useEffect(()=>()=>s?.disconnect(),[s]),s}function Y1e(t){return new tN(Lf(t),t)}function cM(t,e,n){e===void 0&&(e=Y1e);const[r,s]=b.useState(null);function i(){s(c=>{if(!t)return null;if(t.isConnected===!1){var d;return(d=c??n)!=null?d:null}const h=e(t);return JSON.stringify(c)===JSON.stringify(h)?c:h})}const a=X1e({callback(c){if(t)for(const d of c){const{type:h,target:m}=d;if(h==="childList"&&m instanceof HTMLElement&&m.contains(t)){i();break}}}}),l=Rb({callback:i});return Bo(()=>{i(),t?(l?.observe(t),a?.observe(document.body,{childList:!0,subtree:!0})):(l?.disconnect(),a?.disconnect())},[t]),r}function K1e(t){const e=MQ(t);return OQ(t,e)}const uM=[];function Z1e(t){const e=b.useRef(t),n=lg(r=>t?r&&r!==uM&&t&&e.current&&t.parentNode===e.current.parentNode?r:Mb(t):uM,[t]);return b.useEffect(()=>{e.current=t},[t]),n}function J1e(t){const[e,n]=b.useState(null),r=b.useRef(t),s=b.useCallback(i=>{const a=OS(i.target);a&&n(l=>l?(l.set(a,jO(a)),new Map(l)):null)},[]);return b.useEffect(()=>{const i=r.current;if(t!==i){a(i);const l=t.map(c=>{const d=OS(c);return d?(d.addEventListener("scroll",s,{passive:!0}),[d,jO(d)]):null}).filter(c=>c!=null);n(l.length?new Map(l):null),r.current=t}return()=>{a(t),a(i)};function a(l){l.forEach(c=>{const d=OS(c);d?.removeEventListener("scroll",s)})}},[s,t]),b.useMemo(()=>t.length?e?Array.from(e.values()).reduce((i,a)=>Fh(i,a),Za):_Q(t):Za,[t,e])}function dM(t,e){e===void 0&&(e=[]);const n=b.useRef(null);return b.useEffect(()=>{n.current=null},e),b.useEffect(()=>{const r=t!==Za;r&&!n.current&&(n.current=t),!r&&n.current&&(n.current=null)},[t]),n.current?dp(t,n.current):Za}function eve(t){b.useEffect(()=>{if(!Ab)return;const e=t.map(n=>{let{sensor:r}=n;return r.setup==null?void 0:r.setup()});return()=>{for(const n of e)n?.()}},t.map(e=>{let{sensor:n}=e;return n}))}function tve(t,e){return b.useMemo(()=>t.reduce((n,r)=>{let{eventName:s,handler:i}=r;return n[s]=a=>{i(a,e)},n},{}),[t,e])}function RQ(t){return b.useMemo(()=>t?j1e(t):null,[t])}const hM=[];function nve(t,e){e===void 0&&(e=Lf);const[n]=t,r=RQ(n?Ti(n):null),[s,i]=b.useState(hM);function a(){i(()=>t.length?t.map(c=>TQ(c)?r:new tN(e(c),c)):hM)}const l=Rb({callback:a});return Bo(()=>{l?.disconnect(),a(),t.forEach(c=>l?.observe(c))},[t]),s}function rve(t){if(!t)return null;if(t.children.length>1)return t;const e=t.children[0];return og(e)?e:t}function sve(t){let{measure:e}=t;const[n,r]=b.useState(null),s=b.useCallback(d=>{for(const{target:h}of d)if(og(h)){r(m=>{const g=e(h);return m?{...m,width:g.width,height:g.height}:g});break}},[e]),i=Rb({callback:s}),a=b.useCallback(d=>{const h=rve(d);i?.disconnect(),h&&i?.observe(h),r(h?e(h):null)},[e,i]),[l,c]=my(a);return b.useMemo(()=>({nodeRef:l,rect:n,setRef:c}),[n,l,c])}const ive=[{sensor:sN,options:{}},{sensor:nN,options:{}}],ave={current:{}},wv={draggable:{measure:sM},droppable:{measure:sM,strategy:fp.WhileDragging,frequency:CO.Optimized},dragOverlay:{measure:Lf}};class E0 extends Map{get(e){var n;return e!=null&&(n=super.get(e))!=null?n:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:n}=e;return!n})}getNodeFor(e){var n,r;return(n=(r=this.get(e))==null?void 0:r.node.current)!=null?n:void 0}}const ove={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new E0,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:py},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:wv,measureDroppableContainers:py,windowRect:null,measuringScheduled:!1},lve={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:py,draggableNodes:new Map,over:null,measureDroppableContainers:py},Db=b.createContext(lve),DQ=b.createContext(ove);function cve(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new E0}}}function uve(t,e){switch(e.type){case ds.DragStart:return{...t,draggable:{...t.draggable,initialCoordinates:e.initialCoordinates,active:e.active}};case ds.DragMove:return t.draggable.active==null?t:{...t,draggable:{...t.draggable,translate:{x:e.coordinates.x-t.draggable.initialCoordinates.x,y:e.coordinates.y-t.draggable.initialCoordinates.y}}};case ds.DragEnd:case ds.DragCancel:return{...t,draggable:{...t.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case ds.RegisterDroppable:{const{element:n}=e,{id:r}=n,s=new E0(t.droppable.containers);return s.set(r,n),{...t,droppable:{...t.droppable,containers:s}}}case ds.SetDroppableDisabled:{const{id:n,key:r,disabled:s}=e,i=t.droppable.containers.get(n);if(!i||r!==i.key)return t;const a=new E0(t.droppable.containers);return a.set(n,{...i,disabled:s}),{...t,droppable:{...t.droppable,containers:a}}}case ds.UnregisterDroppable:{const{id:n,key:r}=e,s=t.droppable.containers.get(n);if(!s||r!==s.key)return t;const i=new E0(t.droppable.containers);return i.delete(n),{...t,droppable:{...t.droppable,containers:i}}}default:return t}}function dve(t){let{disabled:e}=t;const{active:n,activatorEvent:r,draggableNodes:s}=b.useContext(Db),i=kO(r),a=kO(n?.id);return b.useEffect(()=>{if(!e&&!r&&i&&a!=null){if(!eN(i)||document.activeElement===i.target)return;const l=s.get(a);if(!l)return;const{activatorNode:c,node:d}=l;if(!c.current&&!d.current)return;requestAnimationFrame(()=>{for(const h of[c.current,d.current]){if(!h)continue;const m=r1e(h);if(m){m.focus();break}}})}},[r,e,s,a,i]),null}function hve(t,e){let{transform:n,...r}=e;return t!=null&&t.length?t.reduce((s,i)=>i({transform:s,...r}),n):n}function fve(t){return b.useMemo(()=>({draggable:{...wv.draggable,...t?.draggable},droppable:{...wv.droppable,...t?.droppable},dragOverlay:{...wv.dragOverlay,...t?.dragOverlay}}),[t?.draggable,t?.droppable,t?.dragOverlay])}function mve(t){let{activeNode:e,measure:n,initialRect:r,config:s=!0}=t;const i=b.useRef(!1),{x:a,y:l}=typeof s=="boolean"?{x:s,y:s}:s;Bo(()=>{if(!a&&!l||!e){i.current=!1;return}if(i.current||!r)return;const d=e?.node.current;if(!d||d.isConnected===!1)return;const h=n(d),m=OQ(h,r);if(a||(m.x=0),l||(m.y=0),i.current=!0,Math.abs(m.x)>0||Math.abs(m.y)>0){const g=jQ(d);g&&g.scrollBy({top:m.y,left:m.x})}},[e,a,l,r,n])}const PQ=b.createContext({...Za,scaleX:1,scaleY:1});var Dc;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.Initializing=1]="Initializing",t[t.Initialized=2]="Initialized"})(Dc||(Dc={}));const pve=b.memo(function(e){var n,r,s,i;let{id:a,accessibility:l,autoScroll:c=!0,children:d,sensors:h=ive,collisionDetection:m=v1e,measuring:g,modifiers:x,...y}=e;const w=b.useReducer(uve,void 0,cve),[S,k]=w,[j,N]=c1e(),[T,E]=b.useState(Dc.Uninitialized),_=T===Dc.Initialized,{draggable:{active:A,nodes:L,translate:P},droppable:{containers:B}}=S,$=A!=null?L.get(A):null,U=b.useRef({initial:null,translated:null}),te=b.useMemo(()=>{var Kt;return A!=null?{id:A,data:(Kt=$?.data)!=null?Kt:ave,rect:U}:null},[A,$]),z=b.useRef(null),[Q,F]=b.useState(null),[Y,J]=b.useState(null),X=up(y,Object.values(y)),R=cg("DndDescribedBy",a),ie=b.useMemo(()=>B.getEnabled(),[B]),G=fve(g),{droppableRects:I,measureDroppableContainers:V,measuringScheduled:ee}=W1e(ie,{dragging:_,dependencies:[P.x,P.y],config:G.droppable}),ne=V1e(L,A),W=b.useMemo(()=>Y?OO(Y):null,[Y]),se=nn(),re=G1e(ne,G.draggable.measure);mve({activeNode:A!=null?L.get(A):null,config:se.layoutShiftCompensation,initialRect:re,measure:G.draggable.measure});const oe=cM(ne,G.draggable.measure,re),Te=cM(ne?ne.parentElement:null),We=b.useRef({activatorEvent:null,active:null,activeNode:ne,collisionRect:null,collisions:null,droppableRects:I,draggableNodes:L,draggingNode:null,draggingNodeRect:null,droppableContainers:B,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),Ye=B.getNodeFor((n=We.current.over)==null?void 0:n.id),Je=sve({measure:G.dragOverlay.measure}),Oe=(r=Je.nodeRef.current)!=null?r:ne,Ve=_?(s=Je.rect)!=null?s:oe:null,Ue=!!(Je.nodeRef.current&&Je.rect),He=K1e(Ue?null:oe),Ot=RQ(Oe?Ti(Oe):null),xt=Z1e(_?Ye??ne:null),kn=nve(xt),It=hve(x,{transform:{x:P.x-He.x,y:P.y-He.y,scaleX:1,scaleY:1},activatorEvent:Y,active:te,activeNodeRect:oe,containerNodeRect:Te,draggingNodeRect:Ve,over:We.current.over,overlayNodeRect:Je.rect,scrollableAncestors:xt,scrollableAncestorRects:kn,windowRect:Ot}),Yt=W?Fh(W,P):null,_t=J1e(xt),mt=dM(_t),Ne=dM(_t,[oe]),Ie=Fh(It,mt),st=Ve?w1e(Ve,It):null,yt=te&&st?m({active:te,collisionRect:st,droppableRects:I,droppableContainers:ie,pointerCoordinates:Yt}):null,Pt=kQ(yt,"id"),[Mt,zn]=b.useState(null),Fe=Ue?It:Fh(It,Ne),rt=y1e(Fe,(i=Mt?.rect)!=null?i:null,oe),tn=b.useRef(null),Rt=b.useCallback((Kt,pt)=>{let{sensor:xr,options:Ur}=pt;if(z.current==null)return;const Wr=L.get(z.current);if(!Wr)return;const vr=Kt.nativeEvent,In=new xr({active:z.current,activeNode:Wr,event:vr,options:Ur,context:We,onAbort(nr){if(!L.get(nr))return;const{onDragAbort:xs}=X.current,js={id:nr};xs?.(js),j({type:"onDragAbort",event:js})},onPending(nr,gs,xs,js){if(!L.get(nr))return;const{onDragPending:Le}=X.current,Ct={id:nr,constraint:gs,initialCoordinates:xs,offset:js};Le?.(Ct),j({type:"onDragPending",event:Ct})},onStart(nr){const gs=z.current;if(gs==null)return;const xs=L.get(gs);if(!xs)return;const{onDragStart:js}=X.current,ge={activatorEvent:vr,active:{id:gs,data:xs.data,rect:U}};pa.unstable_batchedUpdates(()=>{js?.(ge),E(Dc.Initializing),k({type:ds.DragStart,initialCoordinates:nr,active:gs}),j({type:"onDragStart",event:ge}),F(tn.current),J(vr)})},onMove(nr){k({type:ds.DragMove,coordinates:nr})},onEnd:cr(ds.DragEnd),onCancel:cr(ds.DragCancel)});tn.current=In;function cr(nr){return async function(){const{active:xs,collisions:js,over:ge,scrollAdjustedTranslate:Le}=We.current;let Ct=null;if(xs&&Le){const{cancelDrop:vn}=X.current;Ct={activatorEvent:vr,active:xs,collisions:js,delta:Le,over:ge},nr===ds.DragEnd&&typeof vn=="function"&&await Promise.resolve(vn(Ct))&&(nr=ds.DragCancel)}z.current=null,pa.unstable_batchedUpdates(()=>{k({type:nr}),E(Dc.Uninitialized),zn(null),F(null),J(null),tn.current=null;const vn=nr===ds.DragEnd?"onDragEnd":"onDragCancel";if(Ct){const Fr=X.current[vn];Fr?.(Ct),j({type:vn,event:Ct})}})}}},[L]),ke=b.useCallback((Kt,pt)=>(xr,Ur)=>{const Wr=xr.nativeEvent,vr=L.get(Ur);if(z.current!==null||!vr||Wr.dndKit||Wr.defaultPrevented)return;const In={active:vr};Kt(xr,pt.options,In)===!0&&(Wr.dndKit={capturedBy:pt.sensor},z.current=Ur,Rt(xr,pt))},[L,Rt]),Pe=U1e(h,ke);eve(h),Bo(()=>{oe&&T===Dc.Initializing&&E(Dc.Initialized)},[oe,T]),b.useEffect(()=>{const{onDragMove:Kt}=X.current,{active:pt,activatorEvent:xr,collisions:Ur,over:Wr}=We.current;if(!pt||!xr)return;const vr={active:pt,activatorEvent:xr,collisions:Ur,delta:{x:Ie.x,y:Ie.y},over:Wr};pa.unstable_batchedUpdates(()=>{Kt?.(vr),j({type:"onDragMove",event:vr})})},[Ie.x,Ie.y]),b.useEffect(()=>{const{active:Kt,activatorEvent:pt,collisions:xr,droppableContainers:Ur,scrollAdjustedTranslate:Wr}=We.current;if(!Kt||z.current==null||!pt||!Wr)return;const{onDragOver:vr}=X.current,In=Ur.get(Pt),cr=In&&In.rect.current?{id:In.id,rect:In.rect.current,data:In.data,disabled:In.disabled}:null,nr={active:Kt,activatorEvent:pt,collisions:xr,delta:{x:Wr.x,y:Wr.y},over:cr};pa.unstable_batchedUpdates(()=>{zn(cr),vr?.(nr),j({type:"onDragOver",event:nr})})},[Pt]),Bo(()=>{We.current={activatorEvent:Y,active:te,activeNode:ne,collisionRect:st,collisions:yt,droppableRects:I,draggableNodes:L,draggingNode:Oe,draggingNodeRect:Ve,droppableContainers:B,over:Mt,scrollableAncestors:xt,scrollAdjustedTranslate:Ie},U.current={initial:Ve,translated:st}},[te,ne,yt,st,L,Oe,Ve,I,B,Mt,xt,Ie]),$1e({...se,delta:P,draggingRect:st,pointerCoordinates:Yt,scrollableAncestors:xt,scrollableAncestorRects:kn});const it=b.useMemo(()=>({active:te,activeNode:ne,activeNodeRect:oe,activatorEvent:Y,collisions:yt,containerNodeRect:Te,dragOverlay:Je,draggableNodes:L,droppableContainers:B,droppableRects:I,over:Mt,measureDroppableContainers:V,scrollableAncestors:xt,scrollableAncestorRects:kn,measuringConfiguration:G,measuringScheduled:ee,windowRect:Ot}),[te,ne,oe,Y,yt,Te,Je,L,B,I,Mt,V,xt,kn,G,ee,Ot]),ot=b.useMemo(()=>({activatorEvent:Y,activators:Pe,active:te,activeNodeRect:oe,ariaDescribedById:{draggable:R},dispatch:k,draggableNodes:L,over:Mt,measureDroppableContainers:V}),[Y,Pe,te,oe,k,R,L,Mt,V]);return ae.createElement(bQ.Provider,{value:N},ae.createElement(Db.Provider,{value:ot},ae.createElement(DQ.Provider,{value:it},ae.createElement(PQ.Provider,{value:rt},d)),ae.createElement(dve,{disabled:l?.restoreFocus===!1})),ae.createElement(h1e,{...l,hiddenTextDescribedById:R}));function nn(){const Kt=Q?.autoScrollEnabled===!1,pt=typeof c=="object"?c.enabled===!1:c===!1,xr=_&&!Kt&&!pt;return typeof c=="object"?{...c,enabled:xr}:{enabled:xr}}}),gve=b.createContext(null),fM="button",xve="Draggable";function vve(t){let{id:e,data:n,disabled:r=!1,attributes:s}=t;const i=cg(xve),{activators:a,activatorEvent:l,active:c,activeNodeRect:d,ariaDescribedById:h,draggableNodes:m,over:g}=b.useContext(Db),{role:x=fM,roleDescription:y="draggable",tabIndex:w=0}=s??{},S=c?.id===e,k=b.useContext(S?PQ:gve),[j,N]=my(),[T,E]=my(),_=tve(a,e),A=up(n);Bo(()=>(m.set(e,{id:e,key:i,node:j,activatorNode:T,data:A}),()=>{const P=m.get(e);P&&P.key===i&&m.delete(e)}),[m,e]);const L=b.useMemo(()=>({role:x,tabIndex:w,"aria-disabled":r,"aria-pressed":S&&x===fM?!0:void 0,"aria-roledescription":y,"aria-describedby":h.draggable}),[r,x,w,S,y,h.draggable]);return{active:c,activatorEvent:l,activeNodeRect:d,attributes:L,isDragging:S,listeners:r?void 0:_,node:j,over:g,setNodeRef:N,setActivatorNodeRef:E,transform:k}}function yve(){return b.useContext(DQ)}const bve="Droppable",wve={timeout:25};function Sve(t){let{data:e,disabled:n=!1,id:r,resizeObserverConfig:s}=t;const i=cg(bve),{active:a,dispatch:l,over:c,measureDroppableContainers:d}=b.useContext(Db),h=b.useRef({disabled:n}),m=b.useRef(!1),g=b.useRef(null),x=b.useRef(null),{disabled:y,updateMeasurementsFor:w,timeout:S}={...wve,...s},k=up(w??r),j=b.useCallback(()=>{if(!m.current){m.current=!0;return}x.current!=null&&clearTimeout(x.current),x.current=setTimeout(()=>{d(Array.isArray(k.current)?k.current:[k.current]),x.current=null},S)},[S]),N=Rb({callback:j,disabled:y||!a}),T=b.useCallback((L,P)=>{N&&(P&&(N.unobserve(P),m.current=!1),L&&N.observe(L))},[N]),[E,_]=my(T),A=up(e);return b.useEffect(()=>{!N||!E.current||(N.disconnect(),m.current=!1,N.observe(E.current))},[E,N]),b.useEffect(()=>(l({type:ds.RegisterDroppable,element:{id:r,key:i,disabled:n,node:E,rect:g,data:A}}),()=>l({type:ds.UnregisterDroppable,key:i,id:r})),[r]),b.useEffect(()=>{n!==h.current.disabled&&(l({type:ds.SetDroppableDisabled,id:r,key:i,disabled:n}),h.current.disabled=n)},[r,i,n,l]),{active:a,rect:g,isOver:c?.id===r,node:E,over:c,setNodeRef:_}}function iN(t,e,n){const r=t.slice();return r.splice(n<0?r.length+n:n,0,r.splice(e,1)[0]),r}function kve(t,e){return t.reduce((n,r,s)=>{const i=e.get(r);return i&&(n[s]=i),n},Array(t.length))}function j1(t){return t!==null&&t>=0}function Ove(t,e){if(t===e)return!0;if(t.length!==e.length)return!1;for(let n=0;n{var e;let{rects:n,activeNodeRect:r,activeIndex:s,overIndex:i,index:a}=t;const l=(e=n[s])!=null?e:r;if(!l)return null;const c=Cve(n,a,s);if(a===s){const d=n[i];return d?{x:ss&&a<=i?{x:-l.width-c,y:0,...N1}:a=i?{x:l.width+c,y:0,...N1}:{x:0,y:0,...N1}};function Cve(t,e,n){const r=t[e],s=t[e-1],i=t[e+1];return!r||!s&&!i?0:n{let{rects:e,activeIndex:n,overIndex:r,index:s}=t;const i=iN(e,r,n),a=e[s],l=i[s];return!l||!a?null:{x:l.left-a.left,y:l.top-a.top,scaleX:l.width/a.width,scaleY:l.height/a.height}},IQ="Sortable",LQ=ae.createContext({activeIndex:-1,containerId:IQ,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:zQ,disabled:{draggable:!1,droppable:!1}});function Tve(t){let{children:e,id:n,items:r,strategy:s=zQ,disabled:i=!1}=t;const{active:a,dragOverlay:l,droppableRects:c,over:d,measureDroppableContainers:h}=yve(),m=cg(IQ,n),g=l.rect!==null,x=b.useMemo(()=>r.map(_=>typeof _=="object"&&"id"in _?_.id:_),[r]),y=a!=null,w=a?x.indexOf(a.id):-1,S=d?x.indexOf(d.id):-1,k=b.useRef(x),j=!Ove(x,k.current),N=S!==-1&&w===-1||j,T=jve(i);Bo(()=>{j&&y&&h(x)},[j,x,y,h]),b.useEffect(()=>{k.current=x},[x]);const E=b.useMemo(()=>({activeIndex:w,containerId:m,disabled:T,disableTransforms:N,items:x,overIndex:S,useDragOverlay:g,sortedRects:kve(x,c),strategy:s}),[w,m,T.draggable,T.droppable,N,x,S,c,g,s]);return ae.createElement(LQ.Provider,{value:E},e)}const Eve=t=>{let{id:e,items:n,activeIndex:r,overIndex:s}=t;return iN(n,r,s).indexOf(e)},_ve=t=>{let{containerId:e,isSorting:n,wasDragging:r,index:s,items:i,newIndex:a,previousItems:l,previousContainerId:c,transition:d}=t;return!d||!r||l!==i&&s===a?!1:n?!0:a!==s&&e===c},Ave={duration:200,easing:"ease"},BQ="transform",Mve=hp.Transition.toString({property:BQ,duration:0,easing:"linear"}),Rve={roleDescription:"sortable"};function Dve(t){let{disabled:e,index:n,node:r,rect:s}=t;const[i,a]=b.useState(null),l=b.useRef(n);return Bo(()=>{if(!e&&n!==l.current&&r.current){const c=s.current;if(c){const d=Lf(r.current,{ignoreTransform:!0}),h={x:c.left-d.left,y:c.top-d.top,scaleX:c.width/d.width,scaleY:c.height/d.height};(h.x||h.y)&&a(h)}}n!==l.current&&(l.current=n)},[e,n,r,s]),b.useEffect(()=>{i&&a(null)},[i]),i}function Pve(t){let{animateLayoutChanges:e=_ve,attributes:n,disabled:r,data:s,getNewIndex:i=Eve,id:a,strategy:l,resizeObserverConfig:c,transition:d=Ave}=t;const{items:h,containerId:m,activeIndex:g,disabled:x,disableTransforms:y,sortedRects:w,overIndex:S,useDragOverlay:k,strategy:j}=b.useContext(LQ),N=zve(r,x),T=h.indexOf(a),E=b.useMemo(()=>({sortable:{containerId:m,index:T,items:h},...s}),[m,s,T,h]),_=b.useMemo(()=>h.slice(h.indexOf(a)),[h,a]),{rect:A,node:L,isOver:P,setNodeRef:B}=Sve({id:a,data:E,disabled:N.droppable,resizeObserverConfig:{updateMeasurementsFor:_,...c}}),{active:$,activatorEvent:U,activeNodeRect:te,attributes:z,setNodeRef:Q,listeners:F,isDragging:Y,over:J,setActivatorNodeRef:X,transform:R}=vve({id:a,data:E,attributes:{...Rve,...n},disabled:N.draggable}),ie=Jxe(B,Q),G=!!$,I=G&&!y&&j1(g)&&j1(S),V=!k&&Y,ee=V&&I?R:null,W=I?ee??(l??j)({rects:w,activeNodeRect:te,activeIndex:g,overIndex:S,index:T}):null,se=j1(g)&&j1(S)?i({id:a,items:h,activeIndex:g,overIndex:S}):T,re=$?.id,oe=b.useRef({activeId:re,items:h,newIndex:se,containerId:m}),Te=h!==oe.current.items,We=e({active:$,containerId:m,isDragging:Y,isSorting:G,id:a,index:T,items:h,newIndex:oe.current.newIndex,previousItems:oe.current.items,previousContainerId:oe.current.containerId,transition:d,wasDragging:oe.current.activeId!=null}),Ye=Dve({disabled:!We,index:T,node:L,rect:A});return b.useEffect(()=>{G&&oe.current.newIndex!==se&&(oe.current.newIndex=se),m!==oe.current.containerId&&(oe.current.containerId=m),h!==oe.current.items&&(oe.current.items=h)},[G,se,m,h]),b.useEffect(()=>{if(re===oe.current.activeId)return;if(re!=null&&oe.current.activeId==null){oe.current.activeId=re;return}const Oe=setTimeout(()=>{oe.current.activeId=re},50);return()=>clearTimeout(Oe)},[re]),{active:$,activeIndex:g,attributes:z,data:E,rect:A,index:T,newIndex:se,items:h,isOver:P,isSorting:G,isDragging:Y,listeners:F,node:L,overIndex:S,over:J,setNodeRef:ie,setActivatorNodeRef:X,setDroppableNodeRef:B,setDraggableNodeRef:Q,transform:Ye??W,transition:Je()};function Je(){if(Ye||Te&&oe.current.newIndex===T)return Mve;if(!(V&&!eN(U)||!d)&&(G||We))return hp.Transition.toString({...d,property:BQ})}}function zve(t,e){var n,r;return typeof t=="boolean"?{draggable:t,droppable:!1}:{draggable:(n=t?.draggable)!=null?n:e.draggable,droppable:(r=t?.droppable)!=null?r:e.droppable}}function xy(t){if(!t)return!1;const e=t.data.current;return!!(e&&"sortable"in e&&typeof e.sortable=="object"&&"containerId"in e.sortable&&"items"in e.sortable&&"index"in e.sortable)}const Ive=[bn.Down,bn.Right,bn.Up,bn.Left],Lve=(t,e)=>{let{context:{active:n,collisionRect:r,droppableRects:s,droppableContainers:i,over:a,scrollableAncestors:l}}=e;if(Ive.includes(t.code)){if(t.preventDefault(),!n||!r)return;const c=[];i.getEnabled().forEach(m=>{if(!m||m!=null&&m.disabled)return;const g=s.get(m.id);if(g)switch(t.code){case bn.Down:r.topg.top&&c.push(m);break;case bn.Left:r.left>g.left&&c.push(m);break;case bn.Right:r.left1&&(h=d[1].id),h!=null){const m=i.get(n.id),g=i.get(h),x=g?s.get(g.id):null,y=g?.node.current;if(y&&x&&m&&g){const S=Mb(y).some((_,A)=>l[A]!==_),k=FQ(m,g),j=Bve(m,g),N=S||!k?{x:0,y:0}:{x:j?r.width-x.width:0,y:j?r.height-x.height:0},T={x:x.left,y:x.top};return N.x&&N.y?T:dp(T,N)}}}};function FQ(t,e){return!xy(t)||!xy(e)?!1:t.data.current.sortable.containerId===e.data.current.sortable.containerId}function Bve(t,e){return!xy(t)||!xy(e)||!FQ(t,e)?!1:t.data.current.sortable.index{h.stopPropagation(),n(t)}})]})})}function qve({options:t,selected:e,onChange:n,placeholder:r="选择选项...",emptyText:s="未找到选项",className:i}){const[a,l]=b.useState(!1),c=f1e(tM(sN,{activationConstraint:{distance:8}}),tM(nN,{coordinateGetter:Lve})),d=g=>{e.includes(g)?n(e.filter(x=>x!==g)):n([...e,g])},h=g=>{n(e.filter(x=>x!==g))},m=g=>{const{active:x,over:y}=g;if(y&&x.id!==y.id){const w=e.indexOf(x.id),S=e.indexOf(y.id);n(iN(e,w,S))}};return o.jsxs(zo,{open:a,onOpenChange:l,children:[o.jsx(Io,{asChild:!0,children:o.jsxs(de,{variant:"outline",role:"combobox","aria-expanded":a,className:xe("w-full justify-between min-h-10 h-auto",i),children:[o.jsx(pve,{sensors:c,collisionDetection:p1e,onDragEnd:m,children:o.jsx(Tve,{items:e,strategy:Nve,children:o.jsx("div",{className:"flex gap-1 flex-wrap flex-1",children:e.length===0?o.jsx("span",{className:"text-muted-foreground",children:r}):e.map(g=>{const x=t.find(y=>y.value===g);return o.jsx(Fve,{value:g,label:x?.label||g,onRemove:h},g)})})})}),o.jsx(Mj,{className:"ml-2 h-4 w-4 shrink-0 opacity-50",strokeWidth:2,fill:"none"})]})}),o.jsx(Xa,{className:"w-full p-0",align:"start",children:o.jsxs(Ob,{children:[o.jsx(jb,{placeholder:"搜索...",className:"h-9"}),o.jsxs(Nb,{children:[o.jsx(Cb,{children:s}),o.jsx(ap,{children:t.map(g=>{const x=e.includes(g.value);return o.jsxs(op,{value:g.value,onSelect:()=>d(g.value),children:[o.jsx("div",{className:xe("mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary",x?"bg-primary text-primary-foreground":"opacity-50 [&_svg]:invisible"),children:o.jsx(Ro,{className:"h-3 w-3",strokeWidth:2,fill:"none"})}),o.jsx("span",{children:g.label})]},g.value)})})]})]})})]})}const mM=new Map,$ve=300*1e3;function Hve(){const[t,e]=b.useState([]),[n,r]=b.useState([]),[s,i]=b.useState([]),[a,l]=b.useState([]),[c,d]=b.useState(null),[h,m]=b.useState(!0),[g,x]=b.useState(!1),[y,w]=b.useState(!1),[S,k]=b.useState(!1),[j,N]=b.useState(!1),[T,E]=b.useState(!1),[_,A]=b.useState(!1),[L,P]=b.useState(null),[B,$]=b.useState(null),[U,te]=b.useState(!1),[z,Q]=b.useState(null),[F,Y]=b.useState(""),[J,X]=b.useState(new Set),[R,ie]=b.useState(!1),[G,I]=b.useState(1),[V,ee]=b.useState(20),[ne,W]=b.useState(""),[se,re]=b.useState([]),[oe,Te]=b.useState(!1),[We,Ye]=b.useState(null),[Je,Oe]=b.useState(!1),[Ve,Ue]=b.useState(null),{toast:He}=as(),Ot=Zi(),{registerTour:xt,startTour:kn,state:It,goToStep:Yt}=Y6(),_t=b.useRef(null),mt=b.useRef(null),Ne=b.useRef(!0);b.useEffect(()=>{xt(_l,gQ)},[xt]),b.useEffect(()=>{if(It.activeTourId===_l&&It.isRunning){const ge=xQ[It.stepIndex];ge&&!window.location.pathname.endsWith(ge.replace("/config/",""))&&Ot({to:ge})}},[It.stepIndex,It.activeTourId,It.isRunning,Ot]);const Ie=b.useRef(It.stepIndex);b.useEffect(()=>{if(It.activeTourId===_l&&It.isRunning){const ge=Ie.current,Le=It.stepIndex;ge>=12&&ge<=17&&Le<12&&A(!1),Ie.current=Le}},[It.stepIndex,It.activeTourId,It.isRunning]),b.useEffect(()=>{if(It.activeTourId!==_l||!It.isRunning)return;const ge=Le=>{const Ct=Le.target,vn=It.stepIndex;vn===2&&Ct.closest('[data-tour="add-provider-button"]')?setTimeout(()=>Yt(3),300):vn===9&&Ct.closest('[data-tour="provider-cancel-button"]')?setTimeout(()=>Yt(10),300):vn===11&&Ct.closest('[data-tour="add-model-button"]')?setTimeout(()=>Yt(12),300):vn===17&&Ct.closest('[data-tour="model-cancel-button"]')?setTimeout(()=>Yt(18),300):vn===18&&Ct.closest('[data-tour="tasks-tab-trigger"]')&&setTimeout(()=>Yt(19),300)};return document.addEventListener("click",ge,!0),()=>document.removeEventListener("click",ge,!0)},[It,Yt]);const st=()=>{kn(_l)};b.useEffect(()=>{yt()},[]);const yt=async()=>{try{m(!0);const ge=await Rh(),Le=ge.models||[];e(Le),l(Le.map(vn=>vn.name));const Ct=ge.api_providers||[];r(Ct.map(vn=>vn.name)),i(Ct),d(ge.model_task_config||null),k(!1),Ne.current=!1}catch(ge){console.error("加载配置失败:",ge)}finally{m(!1)}},Pt=b.useCallback(ge=>s.find(Le=>Le.name===ge),[s]),Mt=b.useCallback(async(ge,Le=!1)=>{const Ct=Pt(ge);if(!Ct?.base_url){re([]),Ue(null),Ye('提供商配置不完整,请先在"模型提供商配置"中配置');return}if(!Ct.api_key){re([]),Ue(null),Ye('该提供商未配置 API Key,请先在"模型提供商配置"中填写');return}const vn=Kxe(Ct.base_url);if(Ue(vn),!vn?.modelFetcher){re([]),Ye(null);return}const Fr=`${ge}:${Ct.base_url}`,Cr=mM.get(Fr);if(!Le&&Cr&&Date.now()-Cr.timestamp<$ve){re(Cr.models),Ye(null);return}Te(!0),Ye(null);try{const Tr=await kae(ge,vn.modelFetcher.parser,vn.modelFetcher.endpoint);re(Tr),mM.set(Fr,{models:Tr,timestamp:Date.now()})}catch(Tr){console.error("获取模型列表失败:",Tr);const Ns=Tr.message||"获取模型列表失败";Ns.includes("无效")||Ns.includes("过期")||Ns.includes("API Key")?Ye('API Key 无效或已过期,请检查"模型提供商配置"中的密钥'):Ns.includes("权限")?Ye("没有权限获取模型列表,请检查 API Key 权限"):Ns.includes("timeout")||Ns.includes("超时")?Ye("请求超时,请检查网络连接后重试"):Ns.includes("不支持")?Ye("该提供商不支持自动获取模型列表,请手动输入"):Ye(Ns),re([])}finally{Te(!1)}},[Pt]);b.useEffect(()=>{_&&L?.api_provider&&Mt(L.api_provider)},[_,L?.api_provider,Mt]);const zn=async()=>{try{N(!0),ib().catch(()=>{}),E(!0)}catch(ge){console.error("重启失败:",ge),E(!1),He({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),N(!1)}},Fe=async()=>{try{x(!0),_t.current&&clearTimeout(_t.current),mt.current&&clearTimeout(mt.current);const ge=await Rh();ge.models=t,ge.model_task_config=c,await qv(ge),k(!1),He({title:"保存成功",description:"正在重启麦麦..."}),await zn()}catch(ge){console.error("保存配置失败:",ge),He({title:"保存失败",description:ge.message,variant:"destructive"}),x(!1)}},rt=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},tn=()=>{E(!1),N(!1),He({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},Rt=b.useCallback(async ge=>{if(!Ne.current)try{w(!0),await xk("models",ge),k(!1)}catch(Le){console.error("自动保存模型列表失败:",Le),k(!0)}finally{w(!1)}},[]),ke=b.useCallback(async ge=>{if(!Ne.current)try{w(!0),await xk("model_task_config",ge),k(!1)}catch(Le){console.error("自动保存任务配置失败:",Le),k(!0)}finally{w(!1)}},[]);b.useEffect(()=>{if(!Ne.current)return k(!0),_t.current&&clearTimeout(_t.current),_t.current=setTimeout(()=>{Rt(t)},2e3),()=>{_t.current&&clearTimeout(_t.current)}},[t,Rt]),b.useEffect(()=>{if(!(Ne.current||!c))return k(!0),mt.current&&clearTimeout(mt.current),mt.current=setTimeout(()=>{ke(c)},2e3),()=>{mt.current&&clearTimeout(mt.current)}},[c,ke]);const Pe=async()=>{try{x(!0),_t.current&&clearTimeout(_t.current),mt.current&&clearTimeout(mt.current);const ge=await Rh();ge.models=t,ge.model_task_config=c,await qv(ge),k(!1),He({title:"保存成功",description:"模型配置已保存"}),await yt()}catch(ge){console.error("保存配置失败:",ge),He({title:"保存失败",description:ge.message,variant:"destructive"})}finally{x(!1)}},it=(ge,Le)=>{P(ge||{model_identifier:"",name:"",api_provider:n[0]||"",price_in:0,price_out:0,force_stream_mode:!1,extra_params:{}}),$(Le),A(!0)},ot=()=>{if(!L)return;const ge={...L,price_in:L.price_in??0,price_out:L.price_out??0};let Le;B!==null?(Le=[...t],Le[B]=ge):Le=[...t,ge],e(Le),l(Le.map(Ct=>Ct.name)),A(!1),P(null),$(null)},nn=ge=>{if(!ge&&L){const Le={...L,price_in:L.price_in??0,price_out:L.price_out??0};P(Le)}A(ge)},Kt=ge=>{Q(ge),te(!0)},pt=()=>{if(z!==null){const ge=t.filter((Le,Ct)=>Ct!==z);e(ge),l(ge.map(Le=>Le.name)),He({title:"删除成功",description:"模型已从列表中移除"})}te(!1),Q(null)},xr=ge=>{const Le=new Set(J);Le.has(ge)?Le.delete(ge):Le.add(ge),X(Le)},Ur=()=>{if(J.size===cr.length)X(new Set);else{const ge=cr.map((Le,Ct)=>t.findIndex(vn=>vn===cr[Ct]));X(new Set(ge))}},Wr=()=>{if(J.size===0){He({title:"提示",description:"请先选择要删除的模型",variant:"default"});return}ie(!0)},vr=()=>{const ge=t.filter((Le,Ct)=>!J.has(Ct));e(ge),l(ge.map(Le=>Le.name)),X(new Set),ie(!1),He({title:"批量删除成功",description:`已删除 ${J.size} 个模型`})},In=(ge,Le,Ct)=>{c&&d({...c,[ge]:{...c[ge],[Le]:Ct}})},cr=t.filter(ge=>{if(!F)return!0;const Le=F.toLowerCase();return ge.name.toLowerCase().includes(Le)||ge.model_identifier.toLowerCase().includes(Le)||ge.api_provider.toLowerCase().includes(Le)}),nr=Math.ceil(cr.length/V),gs=cr.slice((G-1)*V,G*V),xs=()=>{const ge=parseInt(ne);ge>=1&&ge<=nr&&(I(ge),W(""))},js=ge=>c?[c.utils?.model_list||[],c.utils_small?.model_list||[],c.tool_use?.model_list||[],c.replyer?.model_list||[],c.planner?.model_list||[],c.vlm?.model_list||[],c.voice?.model_list||[],c.embedding?.model_list||[],c.lpmm_entity_extract?.model_list||[],c.lpmm_rdf_build?.model_list||[],c.lpmm_qa?.model_list||[]].some(Ct=>Ct.includes(ge)):!1;return h?o.jsx(gn,{className:"h-full",children:o.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:o.jsx("div",{className:"flex items-center justify-center h-64",children:o.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):o.jsx(gn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"模型管理与分配"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"添加模型并为模型分配功能"})]}),o.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[o.jsxs(de,{onClick:Pe,disabled:g||y||!S||j,size:"sm",variant:"outline",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[o.jsx(Gy,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),g?"保存中...":y?"自动保存中...":S?"保存配置":"已保存"]}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs(de,{disabled:g||y||j,size:"sm",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[o.jsx(Aj,{className:"mr-2 h-4 w-4"}),j?"重启中...":S?"保存并重启":"重启麦麦"]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认重启麦麦?"}),o.jsx(_n,{className:"space-y-3",asChild:!0,children:o.jsxs("div",{children:[o.jsx("p",{children:S?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),o.jsxs(ga,{className:"border-yellow-500/50 bg-yellow-500/10",children:[o.jsx(Oa,{className:"h-4 w-4 text-yellow-600"}),o.jsxs(xa,{className:"text-yellow-900 dark:text-yellow-100",children:[o.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",o.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",o.jsxs(Dr,{children:[o.jsx(Of,{asChild:!0,children:o.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[o.jsx(Wy,{className:"h-3 w-3"}),"如何结束程序?"]})}),o.jsxs(Sr,{className:"max-w-2xl",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"如何结束使用重启功能后的麦麦程序"}),o.jsx(ss,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),o.jsxs(ja,{defaultValue:"windows",className:"w-full",children:[o.jsxs(Wi,{className:"grid w-full grid-cols-3",children:[o.jsx(Lt,{value:"windows",children:"Windows"}),o.jsx(Lt,{value:"macos",children:"macOS"}),o.jsx(Lt,{value:"linux",children:"Linux"})]}),o.jsxs(un,{value:"windows",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),o.jsxs("li",{children:['在"进程"或"详细信息"标签页中找到 ',o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),o.jsx("li",{children:'右键点击并选择"结束任务"'})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),o.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),o.jsxs(un,{value:"macos",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"}),' 打开 Spotlight,搜索"活动监视器"']}),o.jsxs("li",{children:["在进程列表中找到 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),o.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]})]}),o.jsxs(un,{value:"linux",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),o.jsx("p",{children:'pkill -9 -f "bot.py"'}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["在终端输入 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),o.jsx(ws,{children:o.jsx(Gj,{asChild:!0,children:o.jsx(de,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:S?Fe:zn,children:S?"保存并重启":"确认重启"})]})]})]})]})]}),o.jsxs(ga,{children:[o.jsx(Oa,{className:"h-4 w-4"}),o.jsxs(xa,{children:["配置更新后需要",o.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),o.jsxs(ga,{className:"hidden lg:flex border-primary/30 bg-primary/5 cursor-pointer hover:bg-primary/10 transition-colors",onClick:st,children:[o.jsx(Yee,{className:"h-4 w-4 text-primary"}),o.jsxs(xa,{className:"flex items-center justify-between",children:[o.jsxs("span",{children:[o.jsx("strong",{className:"text-primary",children:"新手引导:"}),"不知道如何配置模型?点击这里开始学习如何为麦麦的组件分配模型。"]}),o.jsx(de,{variant:"outline",size:"sm",className:"ml-4 shrink-0",children:"开始引导"})]})]}),o.jsxs(ja,{defaultValue:"models",className:"w-full",children:[o.jsxs(Wi,{className:"grid w-full max-w-full sm:max-w-md grid-cols-2",children:[o.jsx(Lt,{value:"models",children:"添加模型"}),o.jsx(Lt,{value:"tasks","data-tour":"tasks-tab-trigger",children:"为模型分配功能"})]}),o.jsxs(un,{value:"models",className:"space-y-4 mt-0",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-2",children:[o.jsx("p",{className:"text-sm text-muted-foreground",children:"配置可用的模型列表"}),o.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[J.size>0&&o.jsxs(de,{onClick:Wr,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[o.jsx(Sn,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",J.size,")"]}),o.jsxs(de,{onClick:()=>it(null,null),size:"sm",variant:"outline",className:"w-full sm:w-auto","data-tour":"add-model-button",children:[o.jsx(Ls,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加模型"]})]})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2",children:[o.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[o.jsx(Ni,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(ze,{placeholder:"搜索模型名称、标识符或提供商...",value:F,onChange:ge=>Y(ge.target.value),className:"pl-9"})]}),F&&o.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",cr.length," 个结果"]})]}),o.jsx("div",{className:"md:hidden space-y-3",children:gs.length===0?o.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:F?"未找到匹配的模型":"暂无模型配置"}):gs.map((ge,Le)=>{const Ct=t.findIndex(Fr=>Fr===ge),vn=js(ge.name);return o.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-start justify-between gap-2",children:[o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[o.jsx("h3",{className:"font-semibold text-base",children:ge.name}),o.jsx(Xn,{variant:vn?"default":"secondary",className:vn?"bg-green-600 hover:bg-green-700":"",children:vn?"已使用":"未使用"})]}),o.jsx("p",{className:"text-xs text-muted-foreground break-all",title:ge.model_identifier,children:ge.model_identifier})]}),o.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[o.jsxs(de,{variant:"default",size:"sm",onClick:()=>it(ge,Ct),children:[o.jsx(Yu,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),o.jsxs(de,{size:"sm",onClick:()=>Kt(Ct),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Sn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"提供商"}),o.jsx("p",{className:"font-medium",children:ge.api_provider})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"强制流式"}),o.jsx("p",{className:"font-medium",children:ge.force_stream_mode?"是":"否"})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"输入价格"}),o.jsxs("p",{className:"font-medium",children:["¥",ge.price_in,"/M"]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"输出价格"}),o.jsxs("p",{className:"font-medium",children:["¥",ge.price_out,"/M"]})]})]})]},Le)})}),o.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:o.jsx("div",{className:"overflow-x-auto",children:o.jsxs(_f,{children:[o.jsx(Af,{children:o.jsxs(Is,{children:[o.jsx(pn,{className:"w-12",children:o.jsx(Oi,{checked:J.size===cr.length&&cr.length>0,onCheckedChange:Ur})}),o.jsx(pn,{className:"w-24",children:"使用状态"}),o.jsx(pn,{children:"模型名称"}),o.jsx(pn,{children:"模型标识符"}),o.jsx(pn,{children:"提供商"}),o.jsx(pn,{className:"text-right",children:"输入价格"}),o.jsx(pn,{className:"text-right",children:"输出价格"}),o.jsx(pn,{className:"text-center",children:"强制流式"}),o.jsx(pn,{className:"text-right",children:"操作"})]})}),o.jsx(Mf,{children:gs.length===0?o.jsx(Is,{children:o.jsx(Gt,{colSpan:9,className:"text-center text-muted-foreground py-8",children:F?"未找到匹配的模型":"暂无模型配置"})}):gs.map((ge,Le)=>{const Ct=t.findIndex(Fr=>Fr===ge),vn=js(ge.name);return o.jsxs(Is,{children:[o.jsx(Gt,{children:o.jsx(Oi,{checked:J.has(Ct),onCheckedChange:()=>xr(Ct)})}),o.jsx(Gt,{children:o.jsx(Xn,{variant:vn?"default":"secondary",className:vn?"bg-green-600 hover:bg-green-700":"",children:vn?"已使用":"未使用"})}),o.jsx(Gt,{className:"font-medium",children:ge.name}),o.jsx(Gt,{className:"max-w-xs truncate",title:ge.model_identifier,children:ge.model_identifier}),o.jsx(Gt,{children:ge.api_provider}),o.jsxs(Gt,{className:"text-right",children:["¥",ge.price_in,"/M"]}),o.jsxs(Gt,{className:"text-right",children:["¥",ge.price_out,"/M"]}),o.jsx(Gt,{className:"text-center",children:ge.force_stream_mode?"是":"否"}),o.jsx(Gt,{className:"text-right",children:o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsxs(de,{variant:"default",size:"sm",onClick:()=>it(ge,Ct),children:[o.jsx(Yu,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),o.jsxs(de,{size:"sm",onClick:()=>Kt(Ct),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Sn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},Le)})})]})})}),cr.length>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{htmlFor:"page-size-model",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:V.toString(),onValueChange:ge=>{ee(parseInt(ge)),I(1),X(new Set)},children:[o.jsx($t,{id:"page-size-model",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"10",children:"10"}),o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"50",children:"50"}),o.jsx(De,{value:"100",children:"100"})]})]}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(G-1)*V+1," 到"," ",Math.min(G*V,cr.length)," 条,共 ",cr.length," 条"]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(de,{variant:"outline",size:"sm",onClick:()=>I(1),disabled:G===1,className:"hidden sm:flex",children:o.jsx(Ap,{className:"h-4 w-4"})}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>I(ge=>Math.max(1,ge-1)),disabled:G===1,children:[o.jsx(vd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{type:"number",value:ne,onChange:ge=>W(ge.target.value),onKeyDown:ge=>ge.key==="Enter"&&xs(),placeholder:G.toString(),className:"w-16 h-8 text-center",min:1,max:nr}),o.jsx(de,{variant:"outline",size:"sm",onClick:xs,disabled:!ne,className:"h-8",children:"跳转"})]}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>I(ge=>ge+1),disabled:G>=nr,children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(yd,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(de,{variant:"outline",size:"sm",onClick:()=>I(nr),disabled:G>=nr,className:"hidden sm:flex",children:o.jsx(Mp,{className:"h-4 w-4"})})]})]})]}),o.jsxs(un,{value:"tasks",className:"space-y-6 mt-0",children:[o.jsx("p",{className:"text-sm text-muted-foreground",children:"为不同的任务配置使用的模型和参数"}),c&&o.jsxs("div",{className:"grid gap-4 sm:gap-6",children:[o.jsx(Fa,{title:"组件模型 (utils)",description:"用于表情包、取名、关系、情绪变化等组件",taskConfig:c.utils,modelNames:a,onChange:(ge,Le)=>In("utils",ge,Le),dataTour:"task-model-select"}),o.jsx(Fa,{title:"组件小模型 (utils_small)",description:"消耗量较大的组件,建议使用速度较快的小模型",taskConfig:c.utils_small,modelNames:a,onChange:(ge,Le)=>In("utils_small",ge,Le)}),o.jsx(Fa,{title:"工具调用模型 (tool_use)",description:"需要使用支持工具调用的模型",taskConfig:c.tool_use,modelNames:a,onChange:(ge,Le)=>In("tool_use",ge,Le)}),o.jsx(Fa,{title:"首要回复模型 (replyer)",description:"用于表达器和表达方式学习",taskConfig:c.replyer,modelNames:a,onChange:(ge,Le)=>In("replyer",ge,Le)}),o.jsx(Fa,{title:"决策模型 (planner)",description:"负责决定麦麦该什么时候回复",taskConfig:c.planner,modelNames:a,onChange:(ge,Le)=>In("planner",ge,Le)}),o.jsx(Fa,{title:"图像识别模型 (vlm)",description:"视觉语言模型",taskConfig:c.vlm,modelNames:a,onChange:(ge,Le)=>In("vlm",ge,Le),hideTemperature:!0}),o.jsx(Fa,{title:"语音识别模型 (voice)",description:"语音转文字",taskConfig:c.voice,modelNames:a,onChange:(ge,Le)=>In("voice",ge,Le),hideTemperature:!0,hideMaxTokens:!0}),o.jsx(Fa,{title:"嵌入模型 (embedding)",description:"用于向量化",taskConfig:c.embedding,modelNames:a,onChange:(ge,Le)=>In("embedding",ge,Le),hideTemperature:!0,hideMaxTokens:!0}),o.jsxs("div",{className:"space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库模型"}),o.jsx(Fa,{title:"实体提取模型 (lpmm_entity_extract)",description:"从文本中提取实体",taskConfig:c.lpmm_entity_extract,modelNames:a,onChange:(ge,Le)=>In("lpmm_entity_extract",ge,Le)}),o.jsx(Fa,{title:"RDF 构建模型 (lpmm_rdf_build)",description:"构建知识图谱",taskConfig:c.lpmm_rdf_build,modelNames:a,onChange:(ge,Le)=>In("lpmm_rdf_build",ge,Le)}),o.jsx(Fa,{title:"问答模型 (lpmm_qa)",description:"知识库问答",taskConfig:c.lpmm_qa,modelNames:a,onChange:(ge,Le)=>In("lpmm_qa",ge,Le)})]})]})]})]}),o.jsx(Dr,{open:_,onOpenChange:nn,children:o.jsxs(Sr,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"model-dialog",preventOutsideClose:It.isRunning,children:[o.jsxs(kr,{children:[o.jsx(Or,{children:B!==null?"编辑模型":"添加模型"}),o.jsx(ss,{children:"配置模型的基本信息和参数"})]}),o.jsxs("div",{className:"grid gap-4 py-4",children:[o.jsxs("div",{className:"grid gap-2","data-tour":"model-name-input",children:[o.jsx(he,{htmlFor:"model_name",children:"模型名称 *"}),o.jsx(ze,{id:"model_name",value:L?.name||"",onChange:ge=>P(Le=>Le?{...Le,name:ge.target.value}:null),placeholder:"例如: qwen3-30b"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"用于在任务配置中引用此模型"})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"model-provider-select",children:[o.jsx(he,{htmlFor:"api_provider",children:"API 提供商 *"}),o.jsxs(Vt,{value:L?.api_provider||"",onValueChange:ge=>{P(Le=>Le?{...Le,api_provider:ge}:null),re([]),Ye(null)},children:[o.jsx($t,{id:"api_provider",children:o.jsx(Ut,{placeholder:"选择提供商"})}),o.jsx(Ht,{children:n.map(ge=>o.jsx(De,{value:ge,children:ge},ge))})]})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"model-identifier-input",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{htmlFor:"model_identifier",children:"模型标识符 *"}),Ve?.modelFetcher&&o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Xn,{variant:"secondary",className:"text-xs",children:Ve.display_name}),o.jsx(de,{variant:"ghost",size:"sm",className:"h-6 px-2",onClick:()=>L?.api_provider&&Mt(L.api_provider,!0),disabled:oe,children:oe?o.jsx(Po,{className:"h-3 w-3 animate-spin"}):o.jsx(Ps,{className:"h-3 w-3"})})]})]}),Ve?.modelFetcher?o.jsxs(zo,{open:Je,onOpenChange:Oe,children:[o.jsx(Io,{asChild:!0,children:o.jsxs(de,{variant:"outline",role:"combobox","aria-expanded":Je,className:"w-full justify-between font-normal",disabled:oe||!!We,children:[oe?o.jsxs("span",{className:"flex items-center gap-2 text-muted-foreground",children:[o.jsx(Po,{className:"h-4 w-4 animate-spin"}),"正在获取模型列表..."]}):We?o.jsx("span",{className:"text-muted-foreground text-sm",children:"点击下方输入框手动填写"}):L?.model_identifier?o.jsx("span",{className:"truncate",children:L.model_identifier}):o.jsx("span",{className:"text-muted-foreground",children:"搜索或选择模型..."}),o.jsx(Mj,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),o.jsx(Xa,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:o.jsxs(Ob,{children:[o.jsx(jb,{placeholder:"搜索模型..."}),o.jsx(gn,{className:"h-[300px]",children:o.jsxs(Nb,{className:"max-h-none overflow-visible",children:[o.jsx(Cb,{children:We?o.jsxs("div",{className:"py-4 px-2 text-center space-y-2",children:[o.jsx("p",{className:"text-sm text-destructive",children:We}),!We.includes("API Key")&&o.jsx(de,{variant:"link",size:"sm",onClick:()=>L?.api_provider&&Mt(L.api_provider,!0),children:"重试"})]}):"未找到匹配的模型"}),o.jsx(ap,{heading:"可用模型",children:se.map(ge=>o.jsxs(op,{value:ge.id,onSelect:()=>{P(Le=>Le?{...Le,model_identifier:ge.id}:null),Oe(!1)},children:[o.jsx(Ro,{className:`mr-2 h-4 w-4 ${L?.model_identifier===ge.id?"opacity-100":"opacity-0"}`}),o.jsxs("div",{className:"flex flex-col",children:[o.jsx("span",{children:ge.id}),ge.name!==ge.id&&o.jsx("span",{className:"text-xs text-muted-foreground",children:ge.name})]})]},ge.id))}),o.jsx(ap,{heading:"手动输入",children:o.jsxs(op,{value:"__manual_input__",onSelect:()=>{Oe(!1)},children:[o.jsx(Yu,{className:"mr-2 h-4 w-4"}),"手动输入模型标识符..."]})})]})})]})})]}):o.jsx(ze,{id:"model_identifier",value:L?.model_identifier||"",onChange:ge=>P(Le=>Le?{...Le,model_identifier:ge.target.value}:null),placeholder:"Qwen/Qwen3-30B-A3B-Instruct-2507"}),We&&Ve?.modelFetcher&&o.jsxs(ga,{variant:"destructive",className:"mt-2 py-2",children:[o.jsx(Oa,{className:"h-4 w-4"}),o.jsx(xa,{className:"text-xs",children:We})]}),Ve?.modelFetcher&&o.jsx(ze,{value:L?.model_identifier||"",onChange:ge=>P(Le=>Le?{...Le,model_identifier:ge.target.value}:null),placeholder:"或手动输入模型标识符",className:"mt-2"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:We?'请手动输入模型标识符,或前往"模型提供商配置"检查 API Key':Ve?.modelFetcher?`已识别为 ${Ve.display_name},支持自动获取模型列表`:"API 提供商提供的模型 ID"})]}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"price_in",children:"输入价格 (¥/M token)"}),o.jsx(ze,{id:"price_in",type:"number",step:"0.1",min:"0",value:L?.price_in??"",onChange:ge=>{const Le=ge.target.value===""?null:parseFloat(ge.target.value);P(Ct=>Ct?{...Ct,price_in:Le}:null)},placeholder:"默认: 0"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"price_out",children:"输出价格 (¥/M token)"}),o.jsx(ze,{id:"price_out",type:"number",step:"0.1",min:"0",value:L?.price_out??"",onChange:ge=>{const Le=ge.target.value===""?null:parseFloat(ge.target.value);P(Ct=>Ct?{...Ct,price_out:Le}:null)},placeholder:"默认: 0"})]})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"force_stream_mode",checked:L?.force_stream_mode||!1,onCheckedChange:ge=>P(Le=>Le?{...Le,force_stream_mode:ge}:null)}),o.jsx(he,{htmlFor:"force_stream_mode",className:"cursor-pointer",children:"强制流式输出模式"})]})]}),o.jsxs(ws,{children:[o.jsx(de,{variant:"outline",onClick:()=>A(!1),"data-tour":"model-cancel-button",children:"取消"}),o.jsx(de,{onClick:ot,"data-tour":"model-save-button",children:"保存"})]})]})}),o.jsx(Dn,{open:U,onOpenChange:te,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除模型 "',z!==null?t[z]?.name:"",'" 吗? 此操作无法撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:pt,children:"删除"})]})]})}),o.jsx(Dn,{open:R,onOpenChange:ie,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认批量删除"}),o.jsxs(_n,{children:["确定要删除选中的 ",J.size," 个模型吗? 此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:vr,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),T&&o.jsx(Kj,{onRestartComplete:rt,onRestartFailed:tn})]})})}function Fa({title:t,description:e,taskConfig:n,modelNames:r,onChange:s,hideTemperature:i=!1,hideMaxTokens:a=!1,dataTour:l}){const c=d=>{s("model_list",d)};return o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"font-semibold text-base sm:text-lg",children:t}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:e})]}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2","data-tour":l,children:[o.jsx(he,{children:"模型列表"}),o.jsx(qve,{options:r.map(d=>({label:d,value:d})),selected:n.model_list||[],onChange:c,placeholder:"选择模型...",emptyText:"暂无可用模型"})]}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[!i&&o.jsxs("div",{className:"grid gap-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{children:"温度"}),o.jsx(ze,{type:"number",step:"0.1",min:"0",max:"1",value:n.temperature??.3,onChange:d=>{const h=parseFloat(d.target.value);!isNaN(h)&&h>=0&&h<=1&&s("temperature",h)},className:"w-20 h-8 text-sm"})]}),o.jsx(Bp,{value:[n.temperature??.3],onValueChange:d=>s("temperature",d[0]),min:0,max:1,step:.1,className:"w-full"})]}),!a&&o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"最大 Token"}),o.jsx(ze,{type:"number",step:"1",min:"1",value:n.max_tokens??1024,onChange:d=>s("max_tokens",parseInt(d.target.value))})]})]})]})]})}const Pb="/api/webui/config";async function Qve(){const e=await(await St(`${Pb}/adapter-config/path`)).json();return!e.success||!e.path?null:{path:e.path,lastModified:e.lastModified}}async function pM(t){const n=await(await St(`${Pb}/adapter-config/path`,{method:"POST",headers:Dt(),body:JSON.stringify({path:t})})).json();if(!n.success)throw new Error(n.message||"保存路径失败")}async function gM(t){const n=await(await St(`${Pb}/adapter-config?path=${encodeURIComponent(t)}`)).json();if(!n.success)throw new Error("读取配置文件失败");return n.content}async function xM(t,e){const r=await(await St(`${Pb}/adapter-config`,{method:"POST",headers:Dt(),body:JSON.stringify({path:t,content:e})})).json();if(!r.success)throw new Error(r.message||"保存配置失败")}const Fi={inner:{version:"0.1.2"},nickname:{nickname:""},napcat_server:{host:"localhost",port:8095,token:"",heartbeat_interval:30},maibot_server:{host:"localhost",port:8e3},chat:{group_list_type:"whitelist",group_list:[],private_list_type:"whitelist",private_list:[],ban_user_id:[],ban_qq_bot:!1,enable_poke:!0},voice:{use_tts:!1},debug:{level:"INFO"}},CS={oneclick:{name:"一键包",description:"使用一键包部署的适配器配置",path:"../MaiBot-Napcat-Adapter/config.toml",icon:Gh},docker:{name:"Docker",description:"Docker Compose 部署的适配器配置",path:"/MaiMBot/adapters-config/config.toml",icon:Kee}};function Vve(){const[t,e]=b.useState("upload"),[n,r]=b.useState(null),[s,i]=b.useState(""),[a,l]=b.useState(""),[c,d]=b.useState("oneclick"),[h,m]=b.useState(""),[g,x]=b.useState(!1),[y,w]=b.useState(!1),[S,k]=b.useState(!1),[j,N]=b.useState(!1),[T,E]=b.useState(null),_=b.useRef(null),{toast:A}=as(),L=b.useRef(null),P=W=>{if(!W.trim())return{valid:!1,error:"路径不能为空"};if(!W.toLowerCase().endsWith(".toml"))return{valid:!1,error:"文件必须是 .toml 格式"};const se=/^([a-zA-Z]:\\|\\\\[^\\]+\\[^\\]+\\).+\.toml$/i,re=/^(\/|~\/).+\.toml$/i,oe=/^(\.{1,2}[\\/]|[^:\\/]).+\.toml$/i,Te=se.test(W),We=re.test(W),Ye=oe.test(W);return!Te&&!We&&!Ye?{valid:!1,error:"路径格式错误"}:/[<>"|?*\x00-\x1F]/.test(W)?{valid:!1,error:"路径包含非法字符"}:{valid:!0,error:""}},B=W=>{if(l(W),W.trim()){const se=P(W);m(se.error)}else m("")},$=b.useCallback(async W=>{const se=CS[W];w(!0);try{const re=await gM(se.path),oe=G(re);r(oe),d(W),l(se.path),await pM(se.path),A({title:"加载成功",description:`已从${se.name}预设加载配置`})}catch(re){console.error("加载预设配置失败:",re),A({title:"加载失败",description:re instanceof Error?re.message:"无法读取预设配置文件",variant:"destructive"})}finally{w(!1)}},[A]),U=b.useCallback(async W=>{const se=P(W);if(!se.valid){m(se.error),A({title:"路径无效",description:se.error,variant:"destructive"});return}m(""),w(!0);try{const re=await gM(W),oe=G(re);r(oe),l(W),await pM(W),A({title:"加载成功",description:"已从配置文件加载"})}catch(re){console.error("加载配置失败:",re),A({title:"加载失败",description:re instanceof Error?re.message:"无法读取配置文件",variant:"destructive"})}finally{w(!1)}},[A]);b.useEffect(()=>{(async()=>{try{const se=await Qve();if(se&&se.path){l(se.path);const re=Object.entries(CS).find(([,oe])=>oe.path===se.path);re?(e("preset"),d(re[0]),await $(re[0])):(e("path"),await U(se.path))}}catch(se){console.error("加载保存的路径失败:",se)}})()},[U,$]);const te=b.useCallback(W=>{t!=="path"&&t!=="preset"||!a||(L.current&&clearTimeout(L.current),L.current=setTimeout(async()=>{x(!0);try{const se=I(W);await xM(a,se),A({title:"自动保存成功",description:"配置已保存到文件"})}catch(se){console.error("自动保存失败:",se),A({title:"自动保存失败",description:se instanceof Error?se.message:"保存配置失败",variant:"destructive"})}finally{x(!1)}},1e3))},[t,a,A]),z=async()=>{if(!n||!a)return;const W=P(a);if(!W.valid){A({title:"保存失败",description:W.error,variant:"destructive"});return}x(!0);try{const se=I(n);await xM(a,se),A({title:"保存成功",description:"配置已保存到文件"})}catch(se){console.error("保存失败:",se),A({title:"保存失败",description:se instanceof Error?se.message:"保存配置失败",variant:"destructive"})}finally{x(!1)}},Q=async()=>{a&&await U(a)},F=W=>{if(W!==t){if(n){E(W),k(!0);return}Y(W)}},Y=W=>{r(null),i(""),m(""),e(W),W==="preset"&&$("oneclick"),A({title:"已切换模式",description:{upload:"现在可以上传配置文件",path:"现在可以指定配置文件路径",preset:"现在可以使用预设配置"}[W]})},J=()=>{T&&(Y(T),E(null)),k(!1)},X=()=>{if(n){N(!0);return}R()},R=()=>{l(""),r(null),m(""),A({title:"已清空",description:"路径和配置已清空"})},ie=()=>{R(),N(!1)},G=W=>{const se=JSON.parse(JSON.stringify(Fi)),re=W.split(` +`);let oe="";for(const Te of re){const We=Te.trim();if(!We||We.startsWith("#"))continue;const Ye=We.match(/^\[(\w+)\]/);if(Ye){oe=Ye[1];continue}const Je=We.match(/^(\w+)\s*=\s*(.+)$/);if(Je&&oe){const[,Oe,Ve]=Je;let Ue=Ve.trim();const He=Ue.match(/^("[^"]*")/);if(He)Ue=He[1];else{const xt=Ue.indexOf("#");xt!==-1&&(Ue=Ue.substring(0,xt).trim())}let Ot;if(Ue==="true")Ot=!0;else if(Ue==="false")Ot=!1;else if(Ue.startsWith("[")&&Ue.endsWith("]")){const xt=Ue.slice(1,-1).trim();if(xt){const kn=xt.split(",").map(Yt=>{const _t=Yt.trim();return isNaN(Number(_t))?_t.replace(/"/g,""):Number(_t)}),It=typeof kn[0];Ot=kn.every(Yt=>typeof Yt===It)?kn:kn.filter(Yt=>typeof Yt=="number")}else Ot=[]}else Ue.startsWith('"')&&Ue.endsWith('"')?Ot=Ue.slice(1,-1):isNaN(Number(Ue))?Ot=Ue.replace(/"/g,""):Ot=Number(Ue);if(oe in se){const xt=se[oe];xt[Oe]=Ot}}}return se},I=W=>{const se=[],re=(oe,Te)=>oe===""||oe===null||oe===void 0?Te:oe;return se.push("[inner]"),se.push(`version = "${re(W.inner.version,Fi.inner.version)}" # 版本号`),se.push("# 请勿修改版本号,除非你知道自己在做什么"),se.push(""),se.push("[nickname] # 现在没用"),se.push(`nickname = "${re(W.nickname.nickname,Fi.nickname.nickname)}"`),se.push(""),se.push("[napcat_server] # Napcat连接的ws服务设置"),se.push(`host = "${re(W.napcat_server.host,Fi.napcat_server.host)}" # Napcat设定的主机地址`),se.push(`port = ${re(W.napcat_server.port||0,Fi.napcat_server.port)} # Napcat设定的端口`),se.push(`token = "${re(W.napcat_server.token,Fi.napcat_server.token)}" # Napcat设定的访问令牌,若无则留空`),se.push(`heartbeat_interval = ${re(W.napcat_server.heartbeat_interval||0,Fi.napcat_server.heartbeat_interval)} # 与Napcat设置的心跳相同(按秒计)`),se.push(""),se.push("[maibot_server] # 连接麦麦的ws服务设置"),se.push(`host = "${re(W.maibot_server.host,Fi.maibot_server.host)}" # 麦麦在.env文件中设置的主机地址,即HOST字段`),se.push(`port = ${re(W.maibot_server.port||0,Fi.maibot_server.port)} # 麦麦在.env文件中设置的端口,即PORT字段`),se.push(""),se.push("[chat] # 黑白名单功能"),se.push(`group_list_type = "${re(W.chat.group_list_type,Fi.chat.group_list_type)}" # 群组名单类型,可选为:whitelist, blacklist`),se.push(`group_list = [${W.chat.group_list.join(", ")}] # 群组名单`),se.push("# 当group_list_type为whitelist时,只有群组名单中的群组可以聊天"),se.push("# 当group_list_type为blacklist时,群组名单中的任何群组无法聊天"),se.push(`private_list_type = "${re(W.chat.private_list_type,Fi.chat.private_list_type)}" # 私聊名单类型,可选为:whitelist, blacklist`),se.push(`private_list = [${W.chat.private_list.join(", ")}] # 私聊名单`),se.push("# 当private_list_type为whitelist时,只有私聊名单中的用户可以聊天"),se.push("# 当private_list_type为blacklist时,私聊名单中的任何用户无法聊天"),se.push(`ban_user_id = [${W.chat.ban_user_id.join(", ")}] # 全局禁止名单(全局禁止名单中的用户无法进行任何聊天)`),se.push(`ban_qq_bot = ${W.chat.ban_qq_bot} # 是否屏蔽QQ官方机器人`),se.push(`enable_poke = ${W.chat.enable_poke} # 是否启用戳一戳功能`),se.push(""),se.push("[voice] # 发送语音设置"),se.push(`use_tts = ${W.voice.use_tts} # 是否使用tts语音(请确保你配置了tts并有对应的adapter)`),se.push(""),se.push("[debug]"),se.push(`level = "${re(W.debug.level,Fi.debug.level)}" # 日志等级(DEBUG, INFO, WARNING, ERROR, CRITICAL)`),se.join(` +`)},V=W=>{const se=W.target.files?.[0];if(!se)return;const re=new FileReader;re.onload=oe=>{try{const Te=oe.target?.result,We=G(Te);r(We),i(se.name),A({title:"上传成功",description:`已加载配置文件:${se.name}`})}catch(Te){console.error("解析配置文件失败:",Te),A({title:"解析失败",description:"配置文件格式错误,请检查文件内容",variant:"destructive"})}},re.readAsText(se)},ee=()=>{if(!n)return;const W=I(n),se=new Blob([W],{type:"text/plain;charset=utf-8"}),re=URL.createObjectURL(se),oe=document.createElement("a");oe.href=re,oe.download=s||"config.toml",document.body.appendChild(oe),oe.click(),document.body.removeChild(oe),URL.revokeObjectURL(re),A({title:"下载成功",description:"配置文件已下载,请手动覆盖并重启适配器"})},ne=()=>{r(JSON.parse(JSON.stringify(Fi))),i("config.toml"),A({title:"已加载默认配置",description:"可以开始编辑配置"})};return o.jsx(gn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦适配器配置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的 QQ 适配器的配置文件"})]})}),o.jsxs("div",{className:"flex items-start gap-2 p-3 rounded-lg border border-amber-500/50 bg-amber-500/10 text-amber-700 dark:text-amber-400",children:[o.jsx(Uc,{className:"h-4 w-4 mt-0.5 flex-shrink-0"}),o.jsx("p",{className:"text-sm",children:"适配器配置保存之后使用 WebUI 的重启功能适配器并不会重启,需要手动重启适配器。"})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"工作模式"}),o.jsx(ts,{children:"选择配置文件的管理方式"})]}),o.jsxs(Gn,{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3 md:gap-4",children:[o.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${t==="preset"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>F("preset"),children:o.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[o.jsx(Gh,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"min-w-0",children:[o.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"预设模式"}),o.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"使用预设的部署配置"})]})]})}),o.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${t==="upload"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>F("upload"),children:o.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[o.jsx(b9,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"min-w-0",children:[o.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"上传文件模式"}),o.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"上传配置文件,编辑后下载并手动覆盖"})]})]})}),o.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${t==="path"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>F("path"),children:o.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[o.jsx(Zee,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"min-w-0",children:[o.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"指定路径模式"}),o.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"指定配置文件路径,自动加载和保存"})]})]})})]}),t==="preset"&&o.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[o.jsx(he,{className:"text-sm md:text-base",children:"选择部署方式"}),o.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:Object.entries(CS).map(([W,se])=>{const re=se.icon,oe=c===W;return o.jsx("div",{className:`border-2 rounded-lg p-3 cursor-pointer transition-all ${oe?"border-primary bg-primary/5":"border-muted hover:border-primary/50"}`,onClick:()=>{d(W),$(W)},children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(re,{className:"h-5 w-5 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"min-w-0 flex-1",children:[o.jsx("h4",{className:"font-semibold text-sm",children:se.name}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:se.description}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1 font-mono break-all",children:se.path})]})]})},W)})})]}),t==="path"&&o.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"config-path",className:"text-sm md:text-base",children:"配置文件路径"}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[o.jsxs("div",{className:"flex-1 space-y-1",children:[o.jsx(ze,{id:"config-path",value:a,onChange:W=>B(W.target.value),placeholder:"例: C:\\Adapter\\config.toml",className:`text-sm ${h?"border-destructive":""}`}),h&&o.jsx("p",{className:"text-xs text-destructive",children:h})]}),o.jsx(de,{onClick:()=>U(a),disabled:y||!a||!!h,className:"w-full sm:w-auto",children:y?o.jsxs(o.Fragment,{children:[o.jsx(Ps,{className:"h-4 w-4 animate-spin mr-2"}),o.jsx("span",{className:"sm:hidden",children:"加载中..."})]}):o.jsxs(o.Fragment,{children:[o.jsx("span",{className:"sm:hidden",children:"加载配置"}),o.jsx("span",{className:"hidden sm:inline",children:"加载"})]})})]})]}),o.jsxs("details",{className:"rounded-lg bg-muted/50 p-3 group",children:[o.jsxs("summary",{className:"text-xs font-medium cursor-pointer select-none list-none flex items-center justify-between",children:[o.jsx("span",{children:"路径格式说明"}),o.jsx("svg",{className:"h-4 w-4 transition-transform group-open:rotate-180",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:o.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),o.jsxs("div",{className:"mt-2 space-y-2 text-xs text-muted-foreground",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx("div",{className:"flex items-center gap-2",children:o.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Windows"})}),o.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[o.jsx("div",{children:"C:\\Adapter\\config.toml"}),o.jsx("div",{className:"hidden sm:block",children:"D:\\MaiBot\\adapter\\config.toml"}),o.jsx("div",{className:"hidden sm:block",children:"\\\\server\\share\\config.toml"})]})]}),o.jsxs("div",{className:"space-y-1",children:[o.jsx("div",{className:"flex items-center gap-2",children:o.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Linux"})}),o.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[o.jsx("div",{children:"/opt/adapter/config.toml"}),o.jsx("div",{className:"hidden sm:block",children:"/home/user/adapter/config.toml"}),o.jsx("div",{className:"hidden sm:block",children:"~/adapter/config.toml"})]})]}),o.jsx("p",{className:"pt-1 border-t text-[10px] md:text-xs",children:"💡 配置会自动保存到指定文件,修改后 1 秒自动保存"})]})]})]})]})]}),o.jsxs(ga,{children:[o.jsx(Oa,{className:"h-4 w-4"}),o.jsx(xa,{children:t==="preset"?o.jsxs(o.Fragment,{children:[o.jsx("strong",{children:"预设模式:"}),"选择预设的部署方式,配置会自动加载,修改后 1 秒自动保存",g&&" (正在保存...)"]}):t==="upload"?o.jsxs(o.Fragment,{children:[o.jsx("strong",{children:"上传文件模式:"}),"上传配置文件 → 在线编辑 → 下载文件 → 手动覆盖并重启适配器"]}):o.jsxs(o.Fragment,{children:[o.jsx("strong",{children:"指定路径模式:"}),"指定配置文件路径后,配置会自动加载,修改后 1 秒自动保存",g&&" (正在保存...)"]})})]}),t==="upload"&&!n&&o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 w-full",children:[o.jsx("input",{ref:_,type:"file",accept:".toml",className:"hidden",onChange:V}),o.jsxs(de,{onClick:()=>_.current?.click(),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[o.jsx(b9,{className:"mr-2 h-4 w-4"}),"上传配置"]}),o.jsxs(de,{onClick:ne,size:"sm",className:"w-full sm:w-auto",children:[o.jsx(zl,{className:"mr-2 h-4 w-4"}),"使用默认配置"]})]}),t==="upload"&&n&&o.jsx("div",{className:"flex gap-2",children:o.jsxs(de,{onClick:ee,size:"sm",className:"w-full sm:w-auto",children:[o.jsx(Ku,{className:"mr-2 h-4 w-4"}),"下载配置"]})}),(t==="preset"||t==="path")&&n&&o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[o.jsxs(de,{onClick:z,size:"sm",disabled:g||!!h,className:"w-full sm:w-auto",children:[o.jsx(Gy,{className:"mr-2 h-4 w-4"}),g?"保存中...":"立即保存"]}),o.jsxs(de,{onClick:Q,size:"sm",variant:"outline",disabled:y,className:"w-full sm:w-auto",children:[o.jsx(Ps,{className:`mr-2 h-4 w-4 ${y?"animate-spin":""}`}),"刷新"]}),t==="path"&&o.jsxs(de,{onClick:X,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[o.jsx(Sn,{className:"mr-2 h-4 w-4"}),"清空路径"]})]}),n?o.jsxs(ja,{defaultValue:"napcat",className:"w-full",children:[o.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:o.jsxs(Wi,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5",children:[o.jsxs(Lt,{value:"napcat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[o.jsx("span",{className:"hidden sm:inline",children:"Napcat 连接"}),o.jsx("span",{className:"sm:hidden",children:"Napcat"})]}),o.jsxs(Lt,{value:"maibot",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[o.jsx("span",{className:"hidden sm:inline",children:"麦麦连接"}),o.jsx("span",{className:"sm:hidden",children:"麦麦"})]}),o.jsxs(Lt,{value:"chat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[o.jsx("span",{className:"hidden sm:inline",children:"聊天控制"}),o.jsx("span",{className:"sm:hidden",children:"聊天"})]}),o.jsxs(Lt,{value:"voice",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[o.jsx("span",{className:"hidden sm:inline",children:"语音设置"}),o.jsx("span",{className:"sm:hidden",children:"语音"})]}),o.jsx(Lt,{value:"debug",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:"调试"})]})}),o.jsx(un,{value:"napcat",className:"space-y-4",children:o.jsx(Uve,{config:n,onChange:W=>{r(W),te(W)}})}),o.jsx(un,{value:"maibot",className:"space-y-4",children:o.jsx(Wve,{config:n,onChange:W=>{r(W),te(W)}})}),o.jsx(un,{value:"chat",className:"space-y-4",children:o.jsx(Gve,{config:n,onChange:W=>{r(W),te(W)}})}),o.jsx(un,{value:"voice",className:"space-y-4",children:o.jsx(Xve,{config:n,onChange:W=>{r(W),te(W)}})}),o.jsx(un,{value:"debug",className:"space-y-4",children:o.jsx(Yve,{config:n,onChange:W=>{r(W),te(W)}})})]}):o.jsx("div",{className:"rounded-lg border bg-card p-6 md:p-12",children:o.jsxs("div",{className:"text-center space-y-3 md:space-y-4",children:[o.jsx(zl,{className:"h-12 w-12 md:h-16 md:w-16 mx-auto text-muted-foreground"}),o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold",children:"尚未加载配置"}),o.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-2 px-4",children:t==="preset"?"请选择预设的部署方式":t==="upload"?"请上传现有配置文件,或使用默认配置开始编辑":"请指定配置文件路径并点击加载按钮"})]})]})}),o.jsx(Dn,{open:S,onOpenChange:k,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认切换模式"}),o.jsxs(_n,{children:["切换模式将清空当前配置,确定要继续吗?",o.jsx("br",{}),o.jsx("span",{className:"text-destructive font-medium",children:"请确保已保存重要配置"})]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{onClick:()=>{k(!1),E(null)},children:"取消"}),o.jsx(An,{onClick:J,children:"确认切换"})]})]})}),o.jsx(Dn,{open:j,onOpenChange:N,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认清空路径"}),o.jsxs(_n,{children:["清空路径将清除当前配置,确定要继续吗?",o.jsx("br",{}),o.jsx("span",{className:"text-muted-foreground text-sm",children:"此操作不会删除配置文件,只是清除界面中的配置"})]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{onClick:()=>N(!1),children:"取消"}),o.jsx(An,{onClick:ie,className:"bg-destructive hover:bg-destructive/90",children:"确认清空"})]})]})})]})})}function Uve({config:t,onChange:e}){return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"Napcat WebSocket 服务设置"}),o.jsxs("div",{className:"grid gap-3 md:gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"napcat-host",className:"text-sm md:text-base",children:"主机地址"}),o.jsx(ze,{id:"napcat-host",value:t.napcat_server.host,onChange:n=>e({...t,napcat_server:{...t.napcat_server,host:n.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的主机地址"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"napcat-port",className:"text-sm md:text-base",children:"端口"}),o.jsx(ze,{id:"napcat-port",type:"number",value:t.napcat_server.port||"",onChange:n=>e({...t,napcat_server:{...t.napcat_server,port:n.target.value?parseInt(n.target.value):0}}),placeholder:"8095",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的端口(留空使用默认值 8095)"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"napcat-token",className:"text-sm md:text-base",children:"访问令牌(Token)"}),o.jsx(ze,{id:"napcat-token",type:"password",value:t.napcat_server.token,onChange:n=>e({...t,napcat_server:{...t.napcat_server,token:n.target.value}}),placeholder:"留空表示无需令牌",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的访问令牌,若无则留空"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"napcat-heartbeat",className:"text-sm md:text-base",children:"心跳间隔(秒)"}),o.jsx(ze,{id:"napcat-heartbeat",type:"number",value:t.napcat_server.heartbeat_interval||"",onChange:n=>e({...t,napcat_server:{...t.napcat_server,heartbeat_interval:n.target.value?parseInt(n.target.value):0}}),placeholder:"30",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"与 Napcat 设置的心跳间隔保持一致(留空使用默认值 30)"})]})]})]})})}function Wve({config:t,onChange:e}){return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"麦麦 WebSocket 服务设置"}),o.jsxs("div",{className:"grid gap-3 md:gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"maibot-host",className:"text-sm md:text-base",children:"主机地址"}),o.jsx(ze,{id:"maibot-host",value:t.maibot_server.host,onChange:n=>e({...t,maibot_server:{...t.maibot_server,host:n.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 HOST 字段"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"maibot-port",className:"text-sm md:text-base",children:"端口"}),o.jsx(ze,{id:"maibot-port",type:"number",value:t.maibot_server.port||"",onChange:n=>e({...t,maibot_server:{...t.maibot_server,port:n.target.value?parseInt(n.target.value):0}}),placeholder:"8000",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 PORT 字段(留空使用默认值 8000)"})]})]})]})})}function Gve({config:t,onChange:e}){const n=i=>{const a={...t};i==="group"?a.chat.group_list=[...a.chat.group_list,0]:i==="private"?a.chat.private_list=[...a.chat.private_list,0]:a.chat.ban_user_id=[...a.chat.ban_user_id,0],e(a)},r=(i,a)=>{const l={...t};i==="group"?l.chat.group_list=l.chat.group_list.filter((c,d)=>d!==a):i==="private"?l.chat.private_list=l.chat.private_list.filter((c,d)=>d!==a):l.chat.ban_user_id=l.chat.ban_user_id.filter((c,d)=>d!==a),e(l)},s=(i,a,l)=>{const c={...t};i==="group"?c.chat.group_list[a]=l:i==="private"?c.chat.private_list[a]=l:c.chat.ban_user_id[a]=l,e(c)};return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"聊天黑白名单功能"}),o.jsxs("div",{className:"grid gap-4 md:gap-6",children:[o.jsxs("div",{className:"space-y-3 md:space-y-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-sm md:text-base",children:"群组名单类型"}),o.jsxs(Vt,{value:t.chat.group_list_type,onValueChange:i=>e({...t,chat:{...t.chat,group_list_type:i}}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),o.jsx(De,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[o.jsx(he,{className:"text-sm md:text-base",children:"群组列表"}),o.jsxs(de,{onClick:()=>n("group"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[o.jsx(zl,{className:"mr-1 h-4 w-4"}),"添加群号"]})]}),t.chat.group_list.map((i,a)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{type:"number",value:i,onChange:l=>s("group",a,parseInt(l.target.value)||0),placeholder:"输入群号",className:"text-sm md:text-base"}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(de,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除群号 ",i," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>r("group",a),children:"删除"})]})]})]})]},a)),t.chat.group_list.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无群组"})]})]}),o.jsxs("div",{className:"space-y-3 md:space-y-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-sm md:text-base",children:"私聊名单类型"}),o.jsxs(Vt,{value:t.chat.private_list_type,onValueChange:i=>e({...t,chat:{...t.chat,private_list_type:i}}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),o.jsx(De,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[o.jsx(he,{className:"text-sm md:text-base",children:"私聊列表"}),o.jsxs(de,{onClick:()=>n("private"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[o.jsx(zl,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),t.chat.private_list.map((i,a)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{type:"number",value:i,onChange:l=>s("private",a,parseInt(l.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(de,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除用户 ",i," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>r("private",a),children:"删除"})]})]})]})]},a)),t.chat.private_list.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无用户"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-sm md:text-base",children:"全局禁止名单"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"名单中的用户无法进行任何聊天"})]}),o.jsxs(de,{onClick:()=>n("ban"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[o.jsx(zl,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),t.chat.ban_user_id.map((i,a)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{type:"number",value:i,onChange:l=>s("ban",a,parseInt(l.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(de,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要从全局禁止名单中删除用户 ",i," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>r("ban",a),children:"删除"})]})]})]})]},a)),t.chat.ban_user_id.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无禁止用户"})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-sm md:text-base",children:"屏蔽QQ官方机器人"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否屏蔽来自QQ官方机器人的消息"})]}),o.jsx(Bt,{checked:t.chat.ban_qq_bot,onCheckedChange:i=>e({...t,chat:{...t.chat,ban_qq_bot:i}})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-sm md:text-base",children:"启用戳一戳功能"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否响应戳一戳消息"})]}),o.jsx(Bt,{checked:t.chat.enable_poke,onCheckedChange:i=>e({...t,chat:{...t.chat,enable_poke:i}})})]})]})]})})}function Xve({config:t,onChange:e}){return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"发送语音设置"}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-sm md:text-base",children:"使用 TTS 语音"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"请确保已配置 TTS 并有对应的适配器"})]}),o.jsx(Bt,{checked:t.voice.use_tts,onCheckedChange:n=>e({...t,voice:{use_tts:n}})})]})]})})}function Yve({config:t,onChange:e}){return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"调试设置"}),o.jsx("div",{className:"grid gap-3 md:gap-4",children:o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-sm md:text-base",children:"日志等级"}),o.jsxs(Vt,{value:t.debug.level,onValueChange:n=>e({...t,debug:{level:n}}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"DEBUG",children:"DEBUG(调试)"}),o.jsx(De,{value:"INFO",children:"INFO(信息)"}),o.jsx(De,{value:"WARNING",children:"WARNING(警告)"}),o.jsx(De,{value:"ERROR",children:"ERROR(错误)"}),o.jsx(De,{value:"CRITICAL",children:"CRITICAL(严重)"})]})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"设置适配器的日志输出等级"})]})})]})})}function vM(t){const e=[],n=String(t||"");let r=n.indexOf(","),s=0,i=!1;for(;!i;){r===-1&&(r=n.length,i=!0);const a=n.slice(s,r).trim();(a||!i)&&e.push(a),s=r+1,r=n.indexOf(",",s)}return e}function Kve(t,e){const n={};return(t[t.length-1]===""?[...t,""]:t).join((n.padRight?" ":"")+","+(n.padLeft===!1?"":" ")).trim()}const Zve=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,Jve=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,eye={};function yM(t,e){return(eye.jsx?Jve:Zve).test(t)}const tye=/[ \t\n\f\r]/g;function nye(t){return typeof t=="object"?t.type==="text"?bM(t.value):!1:bM(t)}function bM(t){return t.replace(tye,"")===""}class ug{constructor(e,n,r){this.normal=n,this.property=e,r&&(this.space=r)}}ug.prototype.normal={};ug.prototype.property={};ug.prototype.space=void 0;function qQ(t,e){const n={},r={};for(const s of t)Object.assign(n,s.property),Object.assign(r,s.normal);return new ug(n,r,e)}function mp(t){return t.toLowerCase()}class Ei{constructor(e,n){this.attribute=n,this.property=e}}Ei.prototype.attribute="";Ei.prototype.booleanish=!1;Ei.prototype.boolean=!1;Ei.prototype.commaOrSpaceSeparated=!1;Ei.prototype.commaSeparated=!1;Ei.prototype.defined=!1;Ei.prototype.mustUseProperty=!1;Ei.prototype.number=!1;Ei.prototype.overloadedBoolean=!1;Ei.prototype.property="";Ei.prototype.spaceSeparated=!1;Ei.prototype.space=void 0;let rye=0;const Jt=wd(),Jr=wd(),TO=wd(),Qe=wd(),ur=wd(),qh=wd(),qi=wd();function wd(){return 2**++rye}const EO=Object.freeze(Object.defineProperty({__proto__:null,boolean:Jt,booleanish:Jr,commaOrSpaceSeparated:qi,commaSeparated:qh,number:Qe,overloadedBoolean:TO,spaceSeparated:ur},Symbol.toStringTag,{value:"Module"})),TS=Object.keys(EO);class aN extends Ei{constructor(e,n,r,s){let i=-1;if(super(e,n),wM(this,"space",s),typeof r=="number")for(;++i4&&n.slice(0,4)==="data"&&lye.test(e)){if(e.charAt(4)==="-"){const i=e.slice(5).replace(SM,uye);r="data"+i.charAt(0).toUpperCase()+i.slice(1)}else{const i=e.slice(4);if(!SM.test(i)){let a=i.replace(oye,cye);a.charAt(0)!=="-"&&(a="-"+a),e="data"+a}}s=aN}return new s(r,e)}function cye(t){return"-"+t.toLowerCase()}function uye(t){return t.charAt(1).toUpperCase()}const XQ=qQ([$Q,sye,VQ,UQ,WQ],"html"),zb=qQ([$Q,iye,VQ,UQ,WQ],"svg");function kM(t){const e=String(t||"").trim();return e?e.split(/[ \t\n\r\f]+/g):[]}function dye(t){return t.join(" ").trim()}var oh={},ES,OM;function hye(){if(OM)return ES;OM=1;var t=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,e=/\n/g,n=/^\s*/,r=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,s=/^:\s*/,i=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,a=/^[;\s]*/,l=/^\s+|\s+$/g,c=` +`,d="/",h="*",m="",g="comment",x="declaration";function y(S,k){if(typeof S!="string")throw new TypeError("First argument must be a string");if(!S)return[];k=k||{};var j=1,N=1;function T(z){var Q=z.match(e);Q&&(j+=Q.length);var F=z.lastIndexOf(c);N=~F?z.length-F:N+z.length}function E(){var z={line:j,column:N};return function(Q){return Q.position=new _(z),P(),Q}}function _(z){this.start=z,this.end={line:j,column:N},this.source=k.source}_.prototype.content=S;function A(z){var Q=new Error(k.source+":"+j+":"+N+": "+z);if(Q.reason=z,Q.filename=k.source,Q.line=j,Q.column=N,Q.source=S,!k.silent)throw Q}function L(z){var Q=z.exec(S);if(Q){var F=Q[0];return T(F),S=S.slice(F.length),Q}}function P(){L(n)}function B(z){var Q;for(z=z||[];Q=$();)Q!==!1&&z.push(Q);return z}function $(){var z=E();if(!(d!=S.charAt(0)||h!=S.charAt(1))){for(var Q=2;m!=S.charAt(Q)&&(h!=S.charAt(Q)||d!=S.charAt(Q+1));)++Q;if(Q+=2,m===S.charAt(Q-1))return A("End of comment missing");var F=S.slice(2,Q-2);return N+=2,T(F),S=S.slice(Q),N+=2,z({type:g,comment:F})}}function U(){var z=E(),Q=L(r);if(Q){if($(),!L(s))return A("property missing ':'");var F=L(i),Y=z({type:x,property:w(Q[0].replace(t,m)),value:F?w(F[0].replace(t,m)):m});return L(a),Y}}function te(){var z=[];B(z);for(var Q;Q=U();)Q!==!1&&(z.push(Q),B(z));return z}return P(),te()}function w(S){return S?S.replace(l,m):m}return ES=y,ES}var jM;function fye(){if(jM)return oh;jM=1;var t=oh&&oh.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(oh,"__esModule",{value:!0}),oh.default=n;const e=t(hye());function n(r,s){let i=null;if(!r||typeof r!="string")return i;const a=(0,e.default)(r),l=typeof s=="function";return a.forEach(c=>{if(c.type!=="declaration")return;const{property:d,value:h}=c;l?s(d,h,c):h&&(i=i||{},i[d]=h)}),i}return oh}var Ym={},NM;function mye(){if(NM)return Ym;NM=1,Object.defineProperty(Ym,"__esModule",{value:!0}),Ym.camelCase=void 0;var t=/^--[a-zA-Z0-9_-]+$/,e=/-([a-z])/g,n=/^[^-]+$/,r=/^-(webkit|moz|ms|o|khtml)-/,s=/^-(ms)-/,i=function(d){return!d||n.test(d)||t.test(d)},a=function(d,h){return h.toUpperCase()},l=function(d,h){return"".concat(h,"-")},c=function(d,h){return h===void 0&&(h={}),i(d)?d:(d=d.toLowerCase(),h.reactCompat?d=d.replace(s,l):d=d.replace(r,l),d.replace(e,a))};return Ym.camelCase=c,Ym}var Km,CM;function pye(){if(CM)return Km;CM=1;var t=Km&&Km.__importDefault||function(s){return s&&s.__esModule?s:{default:s}},e=t(fye()),n=mye();function r(s,i){var a={};return!s||typeof s!="string"||(0,e.default)(s,function(l,c){l&&c&&(a[(0,n.camelCase)(l,i)]=c)}),a}return r.default=r,Km=r,Km}var gye=pye();const xye=gd(gye),YQ=KQ("end"),oN=KQ("start");function KQ(t){return e;function e(n){const r=n&&n.position&&n.position[t]||{};if(typeof r.line=="number"&&r.line>0&&typeof r.column=="number"&&r.column>0)return{line:r.line,column:r.column,offset:typeof r.offset=="number"&&r.offset>-1?r.offset:void 0}}}function vye(t){const e=oN(t),n=YQ(t);if(e&&n)return{start:e,end:n}}function _0(t){return!t||typeof t!="object"?"":"position"in t||"type"in t?TM(t.position):"start"in t||"end"in t?TM(t):"line"in t||"column"in t?_O(t):""}function _O(t){return EM(t&&t.line)+":"+EM(t&&t.column)}function TM(t){return _O(t&&t.start)+"-"+_O(t&&t.end)}function EM(t){return t&&typeof t=="number"?t:1}class Ws extends Error{constructor(e,n,r){super(),typeof n=="string"&&(r=n,n=void 0);let s="",i={},a=!1;if(n&&("line"in n&&"column"in n?i={place:n}:"start"in n&&"end"in n?i={place:n}:"type"in n?i={ancestors:[n],place:n.position}:i={...n}),typeof e=="string"?s=e:!i.cause&&e&&(a=!0,s=e.message,i.cause=e),!i.ruleId&&!i.source&&typeof r=="string"){const c=r.indexOf(":");c===-1?i.ruleId=r:(i.source=r.slice(0,c),i.ruleId=r.slice(c+1))}if(!i.place&&i.ancestors&&i.ancestors){const c=i.ancestors[i.ancestors.length-1];c&&(i.place=c.position)}const l=i.place&&"start"in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=l?l.column:void 0,this.fatal=void 0,this.file="",this.message=s,this.line=l?l.line:void 0,this.name=_0(i.place)||"1:1",this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=a&&i.cause&&typeof i.cause.stack=="string"?i.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}Ws.prototype.file="";Ws.prototype.name="";Ws.prototype.reason="";Ws.prototype.message="";Ws.prototype.stack="";Ws.prototype.column=void 0;Ws.prototype.line=void 0;Ws.prototype.ancestors=void 0;Ws.prototype.cause=void 0;Ws.prototype.fatal=void 0;Ws.prototype.place=void 0;Ws.prototype.ruleId=void 0;Ws.prototype.source=void 0;const lN={}.hasOwnProperty,yye=new Map,bye=/[A-Z]/g,wye=new Set(["table","tbody","thead","tfoot","tr"]),Sye=new Set(["td","th"]),ZQ="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function kye(t,e){if(!e||e.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const n=e.filePath||void 0;let r;if(e.development){if(typeof e.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");r=Aye(n,e.jsxDEV)}else{if(typeof e.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof e.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");r=_ye(n,e.jsx,e.jsxs)}const s={Fragment:e.Fragment,ancestors:[],components:e.components||{},create:r,elementAttributeNameCase:e.elementAttributeNameCase||"react",evaluater:e.createEvaluater?e.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:e.ignoreInvalidStyle||!1,passKeys:e.passKeys!==!1,passNode:e.passNode||!1,schema:e.space==="svg"?zb:XQ,stylePropertyNameCase:e.stylePropertyNameCase||"dom",tableCellAlignToStyle:e.tableCellAlignToStyle!==!1},i=JQ(s,t,void 0);return i&&typeof i!="string"?i:s.create(t,s.Fragment,{children:i||void 0},void 0)}function JQ(t,e,n){if(e.type==="element")return Oye(t,e,n);if(e.type==="mdxFlowExpression"||e.type==="mdxTextExpression")return jye(t,e);if(e.type==="mdxJsxFlowElement"||e.type==="mdxJsxTextElement")return Cye(t,e,n);if(e.type==="mdxjsEsm")return Nye(t,e);if(e.type==="root")return Tye(t,e,n);if(e.type==="text")return Eye(t,e)}function Oye(t,e,n){const r=t.schema;let s=r;e.tagName.toLowerCase()==="svg"&&r.space==="html"&&(s=zb,t.schema=s),t.ancestors.push(e);const i=tV(t,e.tagName,!1),a=Mye(t,e);let l=uN(t,e);return wye.has(e.tagName)&&(l=l.filter(function(c){return typeof c=="string"?!nye(c):!0})),eV(t,a,i,e),cN(a,l),t.ancestors.pop(),t.schema=r,t.create(e,i,a,n)}function jye(t,e){if(e.data&&e.data.estree&&t.evaluater){const r=e.data.estree.body[0];return r.type,t.evaluater.evaluateExpression(r.expression)}pp(t,e.position)}function Nye(t,e){if(e.data&&e.data.estree&&t.evaluater)return t.evaluater.evaluateProgram(e.data.estree);pp(t,e.position)}function Cye(t,e,n){const r=t.schema;let s=r;e.name==="svg"&&r.space==="html"&&(s=zb,t.schema=s),t.ancestors.push(e);const i=e.name===null?t.Fragment:tV(t,e.name,!0),a=Rye(t,e),l=uN(t,e);return eV(t,a,i,e),cN(a,l),t.ancestors.pop(),t.schema=r,t.create(e,i,a,n)}function Tye(t,e,n){const r={};return cN(r,uN(t,e)),t.create(e,t.Fragment,r,n)}function Eye(t,e){return e.value}function eV(t,e,n,r){typeof n!="string"&&n!==t.Fragment&&t.passNode&&(e.node=r)}function cN(t,e){if(e.length>0){const n=e.length>1?e:e[0];n&&(t.children=n)}}function _ye(t,e,n){return r;function r(s,i,a,l){const d=Array.isArray(a.children)?n:e;return l?d(i,a,l):d(i,a)}}function Aye(t,e){return n;function n(r,s,i,a){const l=Array.isArray(i.children),c=oN(r);return e(s,i,a,l,{columnNumber:c?c.column-1:void 0,fileName:t,lineNumber:c?c.line:void 0},void 0)}}function Mye(t,e){const n={};let r,s;for(s in e.properties)if(s!=="children"&&lN.call(e.properties,s)){const i=Dye(t,s,e.properties[s]);if(i){const[a,l]=i;t.tableCellAlignToStyle&&a==="align"&&typeof l=="string"&&Sye.has(e.tagName)?r=l:n[a]=l}}if(r){const i=n.style||(n.style={});i[t.stylePropertyNameCase==="css"?"text-align":"textAlign"]=r}return n}function Rye(t,e){const n={};for(const r of e.attributes)if(r.type==="mdxJsxExpressionAttribute")if(r.data&&r.data.estree&&t.evaluater){const i=r.data.estree.body[0];i.type;const a=i.expression;a.type;const l=a.properties[0];l.type,Object.assign(n,t.evaluater.evaluateExpression(l.argument))}else pp(t,e.position);else{const s=r.name;let i;if(r.value&&typeof r.value=="object")if(r.value.data&&r.value.data.estree&&t.evaluater){const l=r.value.data.estree.body[0];l.type,i=t.evaluater.evaluateExpression(l.expression)}else pp(t,e.position);else i=r.value===null?!0:r.value;n[s]=i}return n}function uN(t,e){const n=[];let r=-1;const s=t.passKeys?new Map:yye;for(;++rs?0:s+e:e=e>s?s:e,n=n>0?n:0,r.length<1e4)a=Array.from(r),a.unshift(e,n),t.splice(...a);else for(n&&t.splice(e,n);i0?(Gi(t,t.length,0,e),t):e}const MM={}.hasOwnProperty;function rV(t){const e={};let n=-1;for(;++n13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)===65535||(n&65535)===65534||n>1114111?"�":String.fromCodePoint(n)}function Ga(t){return t.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const Js=uu(/[A-Za-z]/),Vs=uu(/[\dA-Za-z]/),Hye=uu(/[#-'*+\--9=?A-Z^-~]/);function vy(t){return t!==null&&(t<32||t===127)}const AO=uu(/\d/),Qye=uu(/[\dA-Fa-f]/),Vye=uu(/[!-/:-@[-`{-~]/);function bt(t){return t!==null&&t<-2}function or(t){return t!==null&&(t<0||t===32)}function dn(t){return t===-2||t===-1||t===32}const Ib=uu(new RegExp("\\p{P}|\\p{S}","u")),fd=uu(/\s/);function uu(t){return e;function e(n){return n!==null&&n>-1&&t.test(String.fromCharCode(n))}}function Ff(t){const e=[];let n=-1,r=0,s=0;for(;++n55295&&i<57344){const l=t.charCodeAt(n+1);i<56320&&l>56319&&l<57344?(a=String.fromCharCode(i,l),s=1):a="�"}else a=String.fromCharCode(i);a&&(e.push(t.slice(r,n),encodeURIComponent(a)),r=n+s+1,a=""),s&&(n+=s,s=0)}return e.join("")+t.slice(r)}function on(t,e,n,r){const s=r?r-1:Number.POSITIVE_INFINITY;let i=0;return a;function a(c){return dn(c)?(t.enter(n),l(c)):e(c)}function l(c){return dn(c)&&i++a))return;const A=e.events.length;let L=A,P,B;for(;L--;)if(e.events[L][0]==="exit"&&e.events[L][1].type==="chunkFlow"){if(P){B=e.events[L][1].end;break}P=!0}for(k(r),_=A;_N;){const E=n[T];e.containerState=E[1],E[0].exit.call(e,t)}n.length=N}function j(){s.write([null]),i=void 0,s=void 0,e.containerState._closeFlow=void 0}}function Yye(t,e,n){return on(t,t.attempt(this.parser.constructs.document,e,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function hf(t){if(t===null||or(t)||fd(t))return 1;if(Ib(t))return 2}function Lb(t,e,n){const r=[];let s=-1;for(;++s1&&t[n][1].end.offset-t[n][1].start.offset>1?2:1;const m={...t[r][1].end},g={...t[n][1].start};DM(m,-c),DM(g,c),a={type:c>1?"strongSequence":"emphasisSequence",start:m,end:{...t[r][1].end}},l={type:c>1?"strongSequence":"emphasisSequence",start:{...t[n][1].start},end:g},i={type:c>1?"strongText":"emphasisText",start:{...t[r][1].end},end:{...t[n][1].start}},s={type:c>1?"strong":"emphasis",start:{...a.start},end:{...l.end}},t[r][1].end={...a.start},t[n][1].start={...l.end},d=[],t[r][1].end.offset-t[r][1].start.offset&&(d=fa(d,[["enter",t[r][1],e],["exit",t[r][1],e]])),d=fa(d,[["enter",s,e],["enter",a,e],["exit",a,e],["enter",i,e]]),d=fa(d,Lb(e.parser.constructs.insideSpan.null,t.slice(r+1,n),e)),d=fa(d,[["exit",i,e],["enter",l,e],["exit",l,e],["exit",s,e]]),t[n][1].end.offset-t[n][1].start.offset?(h=2,d=fa(d,[["enter",t[n][1],e],["exit",t[n][1],e]])):h=0,Gi(t,r-1,n-r+3,d),n=r+d.length-h-2;break}}for(n=-1;++n0&&dn(_)?on(t,j,"linePrefix",i+1)(_):j(_)}function j(_){return _===null||bt(_)?t.check(PM,w,T)(_):(t.enter("codeFlowValue"),N(_))}function N(_){return _===null||bt(_)?(t.exit("codeFlowValue"),j(_)):(t.consume(_),N)}function T(_){return t.exit("codeFenced"),e(_)}function E(_,A,L){let P=0;return B;function B(Q){return _.enter("lineEnding"),_.consume(Q),_.exit("lineEnding"),$}function $(Q){return _.enter("codeFencedFence"),dn(Q)?on(_,U,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(Q):U(Q)}function U(Q){return Q===l?(_.enter("codeFencedFenceSequence"),te(Q)):L(Q)}function te(Q){return Q===l?(P++,_.consume(Q),te):P>=a?(_.exit("codeFencedFenceSequence"),dn(Q)?on(_,z,"whitespace")(Q):z(Q)):L(Q)}function z(Q){return Q===null||bt(Q)?(_.exit("codeFencedFence"),A(Q)):L(Q)}}}function lbe(t,e,n){const r=this;return s;function s(a){return a===null?n(a):(t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),i)}function i(a){return r.parser.lazy[r.now().line]?n(a):e(a)}}const AS={name:"codeIndented",tokenize:ube},cbe={partial:!0,tokenize:dbe};function ube(t,e,n){const r=this;return s;function s(d){return t.enter("codeIndented"),on(t,i,"linePrefix",5)(d)}function i(d){const h=r.events[r.events.length-1];return h&&h[1].type==="linePrefix"&&h[2].sliceSerialize(h[1],!0).length>=4?a(d):n(d)}function a(d){return d===null?c(d):bt(d)?t.attempt(cbe,a,c)(d):(t.enter("codeFlowValue"),l(d))}function l(d){return d===null||bt(d)?(t.exit("codeFlowValue"),a(d)):(t.consume(d),l)}function c(d){return t.exit("codeIndented"),e(d)}}function dbe(t,e,n){const r=this;return s;function s(a){return r.parser.lazy[r.now().line]?n(a):bt(a)?(t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),s):on(t,i,"linePrefix",5)(a)}function i(a){const l=r.events[r.events.length-1];return l&&l[1].type==="linePrefix"&&l[2].sliceSerialize(l[1],!0).length>=4?e(a):bt(a)?s(a):n(a)}}const hbe={name:"codeText",previous:mbe,resolve:fbe,tokenize:pbe};function fbe(t){let e=t.length-4,n=3,r,s;if((t[n][1].type==="lineEnding"||t[n][1].type==="space")&&(t[e][1].type==="lineEnding"||t[e][1].type==="space")){for(r=n;++r=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return ethis.left.length?this.right.slice(this.right.length-r+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-r+this.left.length).reverse())}splice(e,n,r){const s=n||0;this.setCursor(Math.trunc(e));const i=this.right.splice(this.right.length-s,Number.POSITIVE_INFINITY);return r&&Zm(this.left,r),i.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(e){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(e)}pushMany(e){this.setCursor(Number.POSITIVE_INFINITY),Zm(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),Zm(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0))if(e=4?e(a):t.interrupt(r.parser.constructs.flow,n,e)(a)}}function cV(t,e,n,r,s,i,a,l,c){const d=c||Number.POSITIVE_INFINITY;let h=0;return m;function m(k){return k===60?(t.enter(r),t.enter(s),t.enter(i),t.consume(k),t.exit(i),g):k===null||k===32||k===41||vy(k)?n(k):(t.enter(r),t.enter(a),t.enter(l),t.enter("chunkString",{contentType:"string"}),w(k))}function g(k){return k===62?(t.enter(i),t.consume(k),t.exit(i),t.exit(s),t.exit(r),e):(t.enter(l),t.enter("chunkString",{contentType:"string"}),x(k))}function x(k){return k===62?(t.exit("chunkString"),t.exit(l),g(k)):k===null||k===60||bt(k)?n(k):(t.consume(k),k===92?y:x)}function y(k){return k===60||k===62||k===92?(t.consume(k),x):x(k)}function w(k){return!h&&(k===null||k===41||or(k))?(t.exit("chunkString"),t.exit(l),t.exit(a),t.exit(r),e(k)):h999||x===null||x===91||x===93&&!c||x===94&&!l&&"_hiddenFootnoteSupport"in a.parser.constructs?n(x):x===93?(t.exit(i),t.enter(s),t.consume(x),t.exit(s),t.exit(r),e):bt(x)?(t.enter("lineEnding"),t.consume(x),t.exit("lineEnding"),h):(t.enter("chunkString",{contentType:"string"}),m(x))}function m(x){return x===null||x===91||x===93||bt(x)||l++>999?(t.exit("chunkString"),h(x)):(t.consume(x),c||(c=!dn(x)),x===92?g:m)}function g(x){return x===91||x===92||x===93?(t.consume(x),l++,m):m(x)}}function dV(t,e,n,r,s,i){let a;return l;function l(g){return g===34||g===39||g===40?(t.enter(r),t.enter(s),t.consume(g),t.exit(s),a=g===40?41:g,c):n(g)}function c(g){return g===a?(t.enter(s),t.consume(g),t.exit(s),t.exit(r),e):(t.enter(i),d(g))}function d(g){return g===a?(t.exit(i),c(a)):g===null?n(g):bt(g)?(t.enter("lineEnding"),t.consume(g),t.exit("lineEnding"),on(t,d,"linePrefix")):(t.enter("chunkString",{contentType:"string"}),h(g))}function h(g){return g===a||g===null||bt(g)?(t.exit("chunkString"),d(g)):(t.consume(g),g===92?m:h)}function m(g){return g===a||g===92?(t.consume(g),h):h(g)}}function A0(t,e){let n;return r;function r(s){return bt(s)?(t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),n=!0,r):dn(s)?on(t,r,n?"linePrefix":"lineSuffix")(s):e(s)}}const kbe={name:"definition",tokenize:jbe},Obe={partial:!0,tokenize:Nbe};function jbe(t,e,n){const r=this;let s;return i;function i(x){return t.enter("definition"),a(x)}function a(x){return uV.call(r,t,l,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(x)}function l(x){return s=Ga(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),x===58?(t.enter("definitionMarker"),t.consume(x),t.exit("definitionMarker"),c):n(x)}function c(x){return or(x)?A0(t,d)(x):d(x)}function d(x){return cV(t,h,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(x)}function h(x){return t.attempt(Obe,m,m)(x)}function m(x){return dn(x)?on(t,g,"whitespace")(x):g(x)}function g(x){return x===null||bt(x)?(t.exit("definition"),r.parser.defined.push(s),e(x)):n(x)}}function Nbe(t,e,n){return r;function r(l){return or(l)?A0(t,s)(l):n(l)}function s(l){return dV(t,i,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(l)}function i(l){return dn(l)?on(t,a,"whitespace")(l):a(l)}function a(l){return l===null||bt(l)?e(l):n(l)}}const Cbe={name:"hardBreakEscape",tokenize:Tbe};function Tbe(t,e,n){return r;function r(i){return t.enter("hardBreakEscape"),t.consume(i),s}function s(i){return bt(i)?(t.exit("hardBreakEscape"),e(i)):n(i)}}const Ebe={name:"headingAtx",resolve:_be,tokenize:Abe};function _be(t,e){let n=t.length-2,r=3,s,i;return t[r][1].type==="whitespace"&&(r+=2),n-2>r&&t[n][1].type==="whitespace"&&(n-=2),t[n][1].type==="atxHeadingSequence"&&(r===n-1||n-4>r&&t[n-2][1].type==="whitespace")&&(n-=r+1===n?2:4),n>r&&(s={type:"atxHeadingText",start:t[r][1].start,end:t[n][1].end},i={type:"chunkText",start:t[r][1].start,end:t[n][1].end,contentType:"text"},Gi(t,r,n-r+1,[["enter",s,e],["enter",i,e],["exit",i,e],["exit",s,e]])),t}function Abe(t,e,n){let r=0;return s;function s(h){return t.enter("atxHeading"),i(h)}function i(h){return t.enter("atxHeadingSequence"),a(h)}function a(h){return h===35&&r++<6?(t.consume(h),a):h===null||or(h)?(t.exit("atxHeadingSequence"),l(h)):n(h)}function l(h){return h===35?(t.enter("atxHeadingSequence"),c(h)):h===null||bt(h)?(t.exit("atxHeading"),e(h)):dn(h)?on(t,l,"whitespace")(h):(t.enter("atxHeadingText"),d(h))}function c(h){return h===35?(t.consume(h),c):(t.exit("atxHeadingSequence"),l(h))}function d(h){return h===null||h===35||or(h)?(t.exit("atxHeadingText"),l(h)):(t.consume(h),d)}}const Mbe=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],IM=["pre","script","style","textarea"],Rbe={concrete:!0,name:"htmlFlow",resolveTo:zbe,tokenize:Ibe},Dbe={partial:!0,tokenize:Bbe},Pbe={partial:!0,tokenize:Lbe};function zbe(t){let e=t.length;for(;e--&&!(t[e][0]==="enter"&&t[e][1].type==="htmlFlow"););return e>1&&t[e-2][1].type==="linePrefix"&&(t[e][1].start=t[e-2][1].start,t[e+1][1].start=t[e-2][1].start,t.splice(e-2,2)),t}function Ibe(t,e,n){const r=this;let s,i,a,l,c;return d;function d(I){return h(I)}function h(I){return t.enter("htmlFlow"),t.enter("htmlFlowData"),t.consume(I),m}function m(I){return I===33?(t.consume(I),g):I===47?(t.consume(I),i=!0,w):I===63?(t.consume(I),s=3,r.interrupt?e:R):Js(I)?(t.consume(I),a=String.fromCharCode(I),S):n(I)}function g(I){return I===45?(t.consume(I),s=2,x):I===91?(t.consume(I),s=5,l=0,y):Js(I)?(t.consume(I),s=4,r.interrupt?e:R):n(I)}function x(I){return I===45?(t.consume(I),r.interrupt?e:R):n(I)}function y(I){const V="CDATA[";return I===V.charCodeAt(l++)?(t.consume(I),l===V.length?r.interrupt?e:U:y):n(I)}function w(I){return Js(I)?(t.consume(I),a=String.fromCharCode(I),S):n(I)}function S(I){if(I===null||I===47||I===62||or(I)){const V=I===47,ee=a.toLowerCase();return!V&&!i&&IM.includes(ee)?(s=1,r.interrupt?e(I):U(I)):Mbe.includes(a.toLowerCase())?(s=6,V?(t.consume(I),k):r.interrupt?e(I):U(I)):(s=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(I):i?j(I):N(I))}return I===45||Vs(I)?(t.consume(I),a+=String.fromCharCode(I),S):n(I)}function k(I){return I===62?(t.consume(I),r.interrupt?e:U):n(I)}function j(I){return dn(I)?(t.consume(I),j):B(I)}function N(I){return I===47?(t.consume(I),B):I===58||I===95||Js(I)?(t.consume(I),T):dn(I)?(t.consume(I),N):B(I)}function T(I){return I===45||I===46||I===58||I===95||Vs(I)?(t.consume(I),T):E(I)}function E(I){return I===61?(t.consume(I),_):dn(I)?(t.consume(I),E):N(I)}function _(I){return I===null||I===60||I===61||I===62||I===96?n(I):I===34||I===39?(t.consume(I),c=I,A):dn(I)?(t.consume(I),_):L(I)}function A(I){return I===c?(t.consume(I),c=null,P):I===null||bt(I)?n(I):(t.consume(I),A)}function L(I){return I===null||I===34||I===39||I===47||I===60||I===61||I===62||I===96||or(I)?E(I):(t.consume(I),L)}function P(I){return I===47||I===62||dn(I)?N(I):n(I)}function B(I){return I===62?(t.consume(I),$):n(I)}function $(I){return I===null||bt(I)?U(I):dn(I)?(t.consume(I),$):n(I)}function U(I){return I===45&&s===2?(t.consume(I),F):I===60&&s===1?(t.consume(I),Y):I===62&&s===4?(t.consume(I),ie):I===63&&s===3?(t.consume(I),R):I===93&&s===5?(t.consume(I),X):bt(I)&&(s===6||s===7)?(t.exit("htmlFlowData"),t.check(Dbe,G,te)(I)):I===null||bt(I)?(t.exit("htmlFlowData"),te(I)):(t.consume(I),U)}function te(I){return t.check(Pbe,z,G)(I)}function z(I){return t.enter("lineEnding"),t.consume(I),t.exit("lineEnding"),Q}function Q(I){return I===null||bt(I)?te(I):(t.enter("htmlFlowData"),U(I))}function F(I){return I===45?(t.consume(I),R):U(I)}function Y(I){return I===47?(t.consume(I),a="",J):U(I)}function J(I){if(I===62){const V=a.toLowerCase();return IM.includes(V)?(t.consume(I),ie):U(I)}return Js(I)&&a.length<8?(t.consume(I),a+=String.fromCharCode(I),J):U(I)}function X(I){return I===93?(t.consume(I),R):U(I)}function R(I){return I===62?(t.consume(I),ie):I===45&&s===2?(t.consume(I),R):U(I)}function ie(I){return I===null||bt(I)?(t.exit("htmlFlowData"),G(I)):(t.consume(I),ie)}function G(I){return t.exit("htmlFlow"),e(I)}}function Lbe(t,e,n){const r=this;return s;function s(a){return bt(a)?(t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),i):n(a)}function i(a){return r.parser.lazy[r.now().line]?n(a):e(a)}}function Bbe(t,e,n){return r;function r(s){return t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),t.attempt(dg,e,n)}}const Fbe={name:"htmlText",tokenize:qbe};function qbe(t,e,n){const r=this;let s,i,a;return l;function l(R){return t.enter("htmlText"),t.enter("htmlTextData"),t.consume(R),c}function c(R){return R===33?(t.consume(R),d):R===47?(t.consume(R),E):R===63?(t.consume(R),N):Js(R)?(t.consume(R),L):n(R)}function d(R){return R===45?(t.consume(R),h):R===91?(t.consume(R),i=0,y):Js(R)?(t.consume(R),j):n(R)}function h(R){return R===45?(t.consume(R),x):n(R)}function m(R){return R===null?n(R):R===45?(t.consume(R),g):bt(R)?(a=m,Y(R)):(t.consume(R),m)}function g(R){return R===45?(t.consume(R),x):m(R)}function x(R){return R===62?F(R):R===45?g(R):m(R)}function y(R){const ie="CDATA[";return R===ie.charCodeAt(i++)?(t.consume(R),i===ie.length?w:y):n(R)}function w(R){return R===null?n(R):R===93?(t.consume(R),S):bt(R)?(a=w,Y(R)):(t.consume(R),w)}function S(R){return R===93?(t.consume(R),k):w(R)}function k(R){return R===62?F(R):R===93?(t.consume(R),k):w(R)}function j(R){return R===null||R===62?F(R):bt(R)?(a=j,Y(R)):(t.consume(R),j)}function N(R){return R===null?n(R):R===63?(t.consume(R),T):bt(R)?(a=N,Y(R)):(t.consume(R),N)}function T(R){return R===62?F(R):N(R)}function E(R){return Js(R)?(t.consume(R),_):n(R)}function _(R){return R===45||Vs(R)?(t.consume(R),_):A(R)}function A(R){return bt(R)?(a=A,Y(R)):dn(R)?(t.consume(R),A):F(R)}function L(R){return R===45||Vs(R)?(t.consume(R),L):R===47||R===62||or(R)?P(R):n(R)}function P(R){return R===47?(t.consume(R),F):R===58||R===95||Js(R)?(t.consume(R),B):bt(R)?(a=P,Y(R)):dn(R)?(t.consume(R),P):F(R)}function B(R){return R===45||R===46||R===58||R===95||Vs(R)?(t.consume(R),B):$(R)}function $(R){return R===61?(t.consume(R),U):bt(R)?(a=$,Y(R)):dn(R)?(t.consume(R),$):P(R)}function U(R){return R===null||R===60||R===61||R===62||R===96?n(R):R===34||R===39?(t.consume(R),s=R,te):bt(R)?(a=U,Y(R)):dn(R)?(t.consume(R),U):(t.consume(R),z)}function te(R){return R===s?(t.consume(R),s=void 0,Q):R===null?n(R):bt(R)?(a=te,Y(R)):(t.consume(R),te)}function z(R){return R===null||R===34||R===39||R===60||R===61||R===96?n(R):R===47||R===62||or(R)?P(R):(t.consume(R),z)}function Q(R){return R===47||R===62||or(R)?P(R):n(R)}function F(R){return R===62?(t.consume(R),t.exit("htmlTextData"),t.exit("htmlText"),e):n(R)}function Y(R){return t.exit("htmlTextData"),t.enter("lineEnding"),t.consume(R),t.exit("lineEnding"),J}function J(R){return dn(R)?on(t,X,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(R):X(R)}function X(R){return t.enter("htmlTextData"),a(R)}}const fN={name:"labelEnd",resolveAll:Vbe,resolveTo:Ube,tokenize:Wbe},$be={tokenize:Gbe},Hbe={tokenize:Xbe},Qbe={tokenize:Ybe};function Vbe(t){let e=-1;const n=[];for(;++e=3&&(d===null||bt(d))?(t.exit("thematicBreak"),e(d)):n(d)}function c(d){return d===s?(t.consume(d),r++,c):(t.exit("thematicBreakSequence"),dn(d)?on(t,l,"whitespace")(d):l(d))}}const fi={continuation:{tokenize:awe},exit:lwe,name:"list",tokenize:iwe},rwe={partial:!0,tokenize:cwe},swe={partial:!0,tokenize:owe};function iwe(t,e,n){const r=this,s=r.events[r.events.length-1];let i=s&&s[1].type==="linePrefix"?s[2].sliceSerialize(s[1],!0).length:0,a=0;return l;function l(x){const y=r.containerState.type||(x===42||x===43||x===45?"listUnordered":"listOrdered");if(y==="listUnordered"?!r.containerState.marker||x===r.containerState.marker:AO(x)){if(r.containerState.type||(r.containerState.type=y,t.enter(y,{_container:!0})),y==="listUnordered")return t.enter("listItemPrefix"),x===42||x===45?t.check(Sv,n,d)(x):d(x);if(!r.interrupt||x===49)return t.enter("listItemPrefix"),t.enter("listItemValue"),c(x)}return n(x)}function c(x){return AO(x)&&++a<10?(t.consume(x),c):(!r.interrupt||a<2)&&(r.containerState.marker?x===r.containerState.marker:x===41||x===46)?(t.exit("listItemValue"),d(x)):n(x)}function d(x){return t.enter("listItemMarker"),t.consume(x),t.exit("listItemMarker"),r.containerState.marker=r.containerState.marker||x,t.check(dg,r.interrupt?n:h,t.attempt(rwe,g,m))}function h(x){return r.containerState.initialBlankLine=!0,i++,g(x)}function m(x){return dn(x)?(t.enter("listItemPrefixWhitespace"),t.consume(x),t.exit("listItemPrefixWhitespace"),g):n(x)}function g(x){return r.containerState.size=i+r.sliceSerialize(t.exit("listItemPrefix"),!0).length,e(x)}}function awe(t,e,n){const r=this;return r.containerState._closeFlow=void 0,t.check(dg,s,i);function s(l){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,on(t,e,"listItemIndent",r.containerState.size+1)(l)}function i(l){return r.containerState.furtherBlankLines||!dn(l)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,a(l)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,t.attempt(swe,e,a)(l))}function a(l){return r.containerState._closeFlow=!0,r.interrupt=void 0,on(t,t.attempt(fi,e,n),"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(l)}}function owe(t,e,n){const r=this;return on(t,s,"listItemIndent",r.containerState.size+1);function s(i){const a=r.events[r.events.length-1];return a&&a[1].type==="listItemIndent"&&a[2].sliceSerialize(a[1],!0).length===r.containerState.size?e(i):n(i)}}function lwe(t){t.exit(this.containerState.type)}function cwe(t,e,n){const r=this;return on(t,s,"listItemPrefixWhitespace",r.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function s(i){const a=r.events[r.events.length-1];return!dn(i)&&a&&a[1].type==="listItemPrefixWhitespace"?e(i):n(i)}}const LM={name:"setextUnderline",resolveTo:uwe,tokenize:dwe};function uwe(t,e){let n=t.length,r,s,i;for(;n--;)if(t[n][0]==="enter"){if(t[n][1].type==="content"){r=n;break}t[n][1].type==="paragraph"&&(s=n)}else t[n][1].type==="content"&&t.splice(n,1),!i&&t[n][1].type==="definition"&&(i=n);const a={type:"setextHeading",start:{...t[r][1].start},end:{...t[t.length-1][1].end}};return t[s][1].type="setextHeadingText",i?(t.splice(s,0,["enter",a,e]),t.splice(i+1,0,["exit",t[r][1],e]),t[r][1].end={...t[i][1].end}):t[r][1]=a,t.push(["exit",a,e]),t}function dwe(t,e,n){const r=this;let s;return i;function i(d){let h=r.events.length,m;for(;h--;)if(r.events[h][1].type!=="lineEnding"&&r.events[h][1].type!=="linePrefix"&&r.events[h][1].type!=="content"){m=r.events[h][1].type==="paragraph";break}return!r.parser.lazy[r.now().line]&&(r.interrupt||m)?(t.enter("setextHeadingLine"),s=d,a(d)):n(d)}function a(d){return t.enter("setextHeadingLineSequence"),l(d)}function l(d){return d===s?(t.consume(d),l):(t.exit("setextHeadingLineSequence"),dn(d)?on(t,c,"lineSuffix")(d):c(d))}function c(d){return d===null||bt(d)?(t.exit("setextHeadingLine"),e(d)):n(d)}}const hwe={tokenize:fwe};function fwe(t){const e=this,n=t.attempt(dg,r,t.attempt(this.parser.constructs.flowInitial,s,on(t,t.attempt(this.parser.constructs.flow,s,t.attempt(vbe,s)),"linePrefix")));return n;function r(i){if(i===null){t.consume(i);return}return t.enter("lineEndingBlank"),t.consume(i),t.exit("lineEndingBlank"),e.currentConstruct=void 0,n}function s(i){if(i===null){t.consume(i);return}return t.enter("lineEnding"),t.consume(i),t.exit("lineEnding"),e.currentConstruct=void 0,n}}const mwe={resolveAll:fV()},pwe=hV("string"),gwe=hV("text");function hV(t){return{resolveAll:fV(t==="text"?xwe:void 0),tokenize:e};function e(n){const r=this,s=this.parser.constructs[t],i=n.attempt(s,a,l);return a;function a(h){return d(h)?i(h):l(h)}function l(h){if(h===null){n.consume(h);return}return n.enter("data"),n.consume(h),c}function c(h){return d(h)?(n.exit("data"),i(h)):(n.consume(h),c)}function d(h){if(h===null)return!0;const m=s[h];let g=-1;if(m)for(;++g-1){const l=a[0];typeof l=="string"?a[0]=l.slice(r):a.shift()}i>0&&a.push(t[s].slice(0,i))}return a}function _we(t,e){let n=-1;const r=[];let s;for(;++n0){const At=st.tokenStack[st.tokenStack.length-1];(At[1]||DA).call(st,void 0,At[0])}for(Ie.position={start:jc(Ne.length>0?Ne[0][1].start:{line:1,column:1,offset:0}),end:jc(Ne.length>0?Ne[Ne.length-2][1].end:{line:1,column:1,offset:0})},Pt=-1;++Pt1?"-"+l:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(a)}]};t.patch(e,c);const d={type:"element",tagName:"sup",properties:{},children:[c]};return t.patch(e,d),t.applyData(e,d)}function Twe(t,e){const n={type:"element",tagName:"h"+e.depth,properties:{},children:t.all(e)};return t.patch(e,n),t.applyData(e,n)}function Ewe(t,e){if(t.options.allowDangerousHtml){const n={type:"raw",value:e.value};return t.patch(e,n),t.applyData(e,n)}}function uV(t,e){const n=e.referenceType;let r="]";if(n==="collapsed"?r+="[]":n==="full"&&(r+="["+(e.label||e.identifier)+"]"),e.type==="imageReference")return[{type:"text",value:"!["+e.alt+r}];const s=t.all(e),i=s[0];i&&i.type==="text"?i.value="["+i.value:s.unshift({type:"text",value:"["});const a=s[s.length-1];return a&&a.type==="text"?a.value+=r:s.push({type:"text",value:r}),s}function _we(t,e){const n=String(e.identifier).toUpperCase(),r=t.definitionById.get(n);if(!r)return uV(t,e);const s={src:Lf(r.url||""),alt:e.alt};r.title!==null&&r.title!==void 0&&(s.title=r.title);const i={type:"element",tagName:"img",properties:s,children:[]};return t.patch(e,i),t.applyData(e,i)}function Mwe(t,e){const n={src:Lf(e.url)};e.alt!==null&&e.alt!==void 0&&(n.alt=e.alt),e.title!==null&&e.title!==void 0&&(n.title=e.title);const r={type:"element",tagName:"img",properties:n,children:[]};return t.patch(e,r),t.applyData(e,r)}function Awe(t,e){const n={type:"text",value:e.value.replace(/\r?\n|\r/g," ")};t.patch(e,n);const r={type:"element",tagName:"code",properties:{},children:[n]};return t.patch(e,r),t.applyData(e,r)}function Rwe(t,e){const n=String(e.identifier).toUpperCase(),r=t.definitionById.get(n);if(!r)return uV(t,e);const s={href:Lf(r.url||"")};r.title!==null&&r.title!==void 0&&(s.title=r.title);const i={type:"element",tagName:"a",properties:s,children:t.all(e)};return t.patch(e,i),t.applyData(e,i)}function Dwe(t,e){const n={href:Lf(e.url)};e.title!==null&&e.title!==void 0&&(n.title=e.title);const r={type:"element",tagName:"a",properties:n,children:t.all(e)};return t.patch(e,r),t.applyData(e,r)}function Pwe(t,e,n){const r=t.all(e),s=n?zwe(n):dV(e),i={},a=[];if(typeof e.checked=="boolean"){const h=r[0];let m;h&&h.type==="element"&&h.tagName==="p"?m=h:(m={type:"element",tagName:"p",properties:{},children:[]},r.unshift(m)),m.children.length>0&&m.children.unshift({type:"text",value:" "}),m.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:e.checked,disabled:!0},children:[]}),i.className=["task-list-item"]}let l=-1;for(;++l0){const Mt=st.tokenStack[st.tokenStack.length-1];(Mt[1]||FM).call(st,void 0,Mt[0])}for(Ie.position={start:Nc(Ne.length>0?Ne[0][1].start:{line:1,column:1,offset:0}),end:Nc(Ne.length>0?Ne[Ne.length-2][1].end:{line:1,column:1,offset:0})},Pt=-1;++Pt1?"-"+l:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(a)}]};t.patch(e,c);const d={type:"element",tagName:"sup",properties:{},children:[c]};return t.patch(e,d),t.applyData(e,d)}function Wwe(t,e){const n={type:"element",tagName:"h"+e.depth,properties:{},children:t.all(e)};return t.patch(e,n),t.applyData(e,n)}function Gwe(t,e){if(t.options.allowDangerousHtml){const n={type:"raw",value:e.value};return t.patch(e,n),t.applyData(e,n)}}function gV(t,e){const n=e.referenceType;let r="]";if(n==="collapsed"?r+="[]":n==="full"&&(r+="["+(e.label||e.identifier)+"]"),e.type==="imageReference")return[{type:"text",value:"!["+e.alt+r}];const s=t.all(e),i=s[0];i&&i.type==="text"?i.value="["+i.value:s.unshift({type:"text",value:"["});const a=s[s.length-1];return a&&a.type==="text"?a.value+=r:s.push({type:"text",value:r}),s}function Xwe(t,e){const n=String(e.identifier).toUpperCase(),r=t.definitionById.get(n);if(!r)return gV(t,e);const s={src:Ff(r.url||""),alt:e.alt};r.title!==null&&r.title!==void 0&&(s.title=r.title);const i={type:"element",tagName:"img",properties:s,children:[]};return t.patch(e,i),t.applyData(e,i)}function Ywe(t,e){const n={src:Ff(e.url)};e.alt!==null&&e.alt!==void 0&&(n.alt=e.alt),e.title!==null&&e.title!==void 0&&(n.title=e.title);const r={type:"element",tagName:"img",properties:n,children:[]};return t.patch(e,r),t.applyData(e,r)}function Kwe(t,e){const n={type:"text",value:e.value.replace(/\r?\n|\r/g," ")};t.patch(e,n);const r={type:"element",tagName:"code",properties:{},children:[n]};return t.patch(e,r),t.applyData(e,r)}function Zwe(t,e){const n=String(e.identifier).toUpperCase(),r=t.definitionById.get(n);if(!r)return gV(t,e);const s={href:Ff(r.url||"")};r.title!==null&&r.title!==void 0&&(s.title=r.title);const i={type:"element",tagName:"a",properties:s,children:t.all(e)};return t.patch(e,i),t.applyData(e,i)}function Jwe(t,e){const n={href:Ff(e.url)};e.title!==null&&e.title!==void 0&&(n.title=e.title);const r={type:"element",tagName:"a",properties:n,children:t.all(e)};return t.patch(e,r),t.applyData(e,r)}function e2e(t,e,n){const r=t.all(e),s=n?t2e(n):xV(e),i={},a=[];if(typeof e.checked=="boolean"){const h=r[0];let m;h&&h.type==="element"&&h.tagName==="p"?m=h:(m={type:"element",tagName:"p",properties:{},children:[]},r.unshift(m)),m.children.length>0&&m.children.unshift({type:"text",value:" "}),m.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:e.checked,disabled:!0},children:[]}),i.className=["task-list-item"]}let l=-1;for(;++l1}function Iwe(t,e){const n={},r=t.all(e);let s=-1;for(typeof e.start=="number"&&e.start!==1&&(n.start=e.start);++s0){const a={type:"element",tagName:"tbody",properties:{},children:t.wrap(n,!0)},l=rN(e.children[1]),c=QQ(e.children[e.children.length-1]);l&&c&&(a.position={start:l,end:c}),s.push(a)}const i={type:"element",tagName:"table",properties:{},children:t.wrap(s,!0)};return t.patch(e,i),t.applyData(e,i)}function $we(t,e,n){const r=n?n.children:void 0,i=(r?r.indexOf(e):1)===0?"th":"td",a=n&&n.type==="table"?n.align:void 0,l=a?a.length:e.children.length;let c=-1;const d=[];for(;++c0,!0),r[0]),s=r.index+r[0].length,r=n.exec(e);return i.push(IA(e.slice(s),s>0,!1)),i.join("")}function IA(t,e,n){let r=0,s=t.length;if(e){let i=t.codePointAt(r);for(;i===PA||i===zA;)r++,i=t.codePointAt(r)}if(n){let i=t.codePointAt(s-1);for(;i===PA||i===zA;)s--,i=t.codePointAt(s-1)}return s>r?t.slice(r,s):""}function Vwe(t,e){const n={type:"text",value:Qwe(String(e.value))};return t.patch(e,n),t.applyData(e,n)}function Uwe(t,e){const n={type:"element",tagName:"hr",properties:{},children:[]};return t.patch(e,n),t.applyData(e,n)}const Wwe={blockquote:Swe,break:kwe,code:Owe,delete:jwe,emphasis:Nwe,footnoteReference:Cwe,heading:Twe,html:Ewe,imageReference:_we,image:Mwe,inlineCode:Awe,linkReference:Rwe,link:Dwe,listItem:Pwe,list:Iwe,paragraph:Lwe,root:Bwe,strong:Fwe,table:qwe,tableCell:Hwe,tableRow:$we,text:Vwe,thematicBreak:Uwe,toml:j1,yaml:j1,definition:j1,footnoteDefinition:j1};function j1(){}const hV=-1,Rb=0,E0=1,my=2,uN=3,dN=4,hN=5,fN=6,fV=7,mV=8,LA=typeof self=="object"?self:globalThis,Gwe=(t,e)=>{const n=(s,i)=>(t.set(i,s),s),r=s=>{if(t.has(s))return t.get(s);const[i,a]=e[s];switch(i){case Rb:case hV:return n(a,s);case E0:{const l=n([],s);for(const c of a)l.push(r(c));return l}case my:{const l=n({},s);for(const[c,d]of a)l[r(c)]=r(d);return l}case uN:return n(new Date(a),s);case dN:{const{source:l,flags:c}=a;return n(new RegExp(l,c),s)}case hN:{const l=n(new Map,s);for(const[c,d]of a)l.set(r(c),r(d));return l}case fN:{const l=n(new Set,s);for(const c of a)l.add(r(c));return l}case fV:{const{name:l,message:c}=a;return n(new LA[l](c),s)}case mV:return n(BigInt(a),s);case"BigInt":return n(Object(BigInt(a)),s);case"ArrayBuffer":return n(new Uint8Array(a).buffer,a);case"DataView":{const{buffer:l}=new Uint8Array(a);return n(new DataView(l),a)}}return n(new LA[i](a),s)};return r},BA=t=>Gwe(new Map,t)(0),lh="",{toString:Xwe}={},{keys:Ywe}=Object,Km=t=>{const e=typeof t;if(e!=="object"||!t)return[Rb,e];const n=Xwe.call(t).slice(8,-1);switch(n){case"Array":return[E0,lh];case"Object":return[my,lh];case"Date":return[uN,lh];case"RegExp":return[dN,lh];case"Map":return[hN,lh];case"Set":return[fN,lh];case"DataView":return[E0,n]}return n.includes("Array")?[E0,n]:n.includes("Error")?[fV,n]:[my,n]},N1=([t,e])=>t===Rb&&(e==="function"||e==="symbol"),Kwe=(t,e,n,r)=>{const s=(a,l)=>{const c=r.push(a)-1;return n.set(l,c),c},i=a=>{if(n.has(a))return n.get(a);let[l,c]=Km(a);switch(l){case Rb:{let h=a;switch(c){case"bigint":l=mV,h=a.toString();break;case"function":case"symbol":if(t)throw new TypeError("unable to serialize "+c);h=null;break;case"undefined":return s([hV],a)}return s([l,h],a)}case E0:{if(c){let g=a;return c==="DataView"?g=new Uint8Array(a.buffer):c==="ArrayBuffer"&&(g=new Uint8Array(a)),s([c,[...g]],a)}const h=[],m=s([l,h],a);for(const g of a)h.push(i(g));return m}case my:{if(c)switch(c){case"BigInt":return s([c,a.toString()],a);case"Boolean":case"Number":case"String":return s([c,a.valueOf()],a)}if(e&&"toJSON"in a)return i(a.toJSON());const h=[],m=s([l,h],a);for(const g of Ywe(a))(t||!N1(Km(a[g])))&&h.push([i(g),i(a[g])]);return m}case uN:return s([l,a.toISOString()],a);case dN:{const{source:h,flags:m}=a;return s([l,{source:h,flags:m}],a)}case hN:{const h=[],m=s([l,h],a);for(const[g,x]of a)(t||!(N1(Km(g))||N1(Km(x))))&&h.push([i(g),i(x)]);return m}case fN:{const h=[],m=s([l,h],a);for(const g of a)(t||!N1(Km(g)))&&h.push(i(g));return m}}const{message:d}=a;return s([l,{name:c,message:d}],a)};return i},FA=(t,{json:e,lossy:n}={})=>{const r=[];return Kwe(!(e||n),!!e,new Map,r)(t),r},py=typeof structuredClone=="function"?(t,e)=>e&&("json"in e||"lossy"in e)?BA(FA(t,e)):structuredClone(t):(t,e)=>BA(FA(t,e));function Zwe(t,e){const n=[{type:"text",value:"↩"}];return e>1&&n.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(e)}]}),n}function Jwe(t,e){return"Back to reference "+(t+1)+(e>1?"-"+e:"")}function e2e(t){const e=typeof t.options.clobberPrefix=="string"?t.options.clobberPrefix:"user-content-",n=t.options.footnoteBackContent||Zwe,r=t.options.footnoteBackLabel||Jwe,s=t.options.footnoteLabel||"Footnotes",i=t.options.footnoteLabelTagName||"h2",a=t.options.footnoteLabelProperties||{className:["sr-only"]},l=[];let c=-1;for(;++c0&&y.push({type:"text",value:" "});let j=typeof n=="string"?n:n(c,x);typeof j=="string"&&(j={type:"text",value:j}),y.push({type:"element",tagName:"a",properties:{href:"#"+e+"fnref-"+g+(x>1?"-"+x:""),dataFootnoteBackref:"",ariaLabel:typeof r=="string"?r:r(c,x),className:["data-footnote-backref"]},children:Array.isArray(j)?j:[j]})}const S=h[h.length-1];if(S&&S.type==="element"&&S.tagName==="p"){const j=S.children[S.children.length-1];j&&j.type==="text"?j.value+=" ":S.children.push({type:"text",value:" "}),S.children.push(...y)}else h.push(...y);const k={type:"element",tagName:"li",properties:{id:e+"fn-"+g},children:t.wrap(h,!0)};t.patch(d,k),l.push(k)}if(l.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:i,properties:{...py(a),id:"footnote-label"},children:[{type:"text",value:s}]},{type:"text",value:` +`});const d={type:"element",tagName:"li",properties:i,children:a};return t.patch(e,d),t.applyData(e,d)}function t2e(t){let e=!1;if(t.type==="list"){e=t.spread||!1;const n=t.children;let r=-1;for(;!e&&++r1}function n2e(t,e){const n={},r=t.all(e);let s=-1;for(typeof e.start=="number"&&e.start!==1&&(n.start=e.start);++s0){const a={type:"element",tagName:"tbody",properties:{},children:t.wrap(n,!0)},l=oN(e.children[1]),c=YQ(e.children[e.children.length-1]);l&&c&&(a.position={start:l,end:c}),s.push(a)}const i={type:"element",tagName:"table",properties:{},children:t.wrap(s,!0)};return t.patch(e,i),t.applyData(e,i)}function o2e(t,e,n){const r=n?n.children:void 0,i=(r?r.indexOf(e):1)===0?"th":"td",a=n&&n.type==="table"?n.align:void 0,l=a?a.length:e.children.length;let c=-1;const d=[];for(;++c0,!0),r[0]),s=r.index+r[0].length,r=n.exec(e);return i.push(HM(e.slice(s),s>0,!1)),i.join("")}function HM(t,e,n){let r=0,s=t.length;if(e){let i=t.codePointAt(r);for(;i===qM||i===$M;)r++,i=t.codePointAt(r)}if(n){let i=t.codePointAt(s-1);for(;i===qM||i===$M;)s--,i=t.codePointAt(s-1)}return s>r?t.slice(r,s):""}function u2e(t,e){const n={type:"text",value:c2e(String(e.value))};return t.patch(e,n),t.applyData(e,n)}function d2e(t,e){const n={type:"element",tagName:"hr",properties:{},children:[]};return t.patch(e,n),t.applyData(e,n)}const h2e={blockquote:qwe,break:$we,code:Hwe,delete:Qwe,emphasis:Vwe,footnoteReference:Uwe,heading:Wwe,html:Gwe,imageReference:Xwe,image:Ywe,inlineCode:Kwe,linkReference:Zwe,link:Jwe,listItem:e2e,list:n2e,paragraph:r2e,root:s2e,strong:i2e,table:a2e,tableCell:l2e,tableRow:o2e,text:u2e,thematicBreak:d2e,toml:C1,yaml:C1,definition:C1,footnoteDefinition:C1};function C1(){}const vV=-1,Bb=0,M0=1,yy=2,mN=3,pN=4,gN=5,xN=6,yV=7,bV=8,QM=typeof self=="object"?self:globalThis,f2e=(t,e)=>{const n=(s,i)=>(t.set(i,s),s),r=s=>{if(t.has(s))return t.get(s);const[i,a]=e[s];switch(i){case Bb:case vV:return n(a,s);case M0:{const l=n([],s);for(const c of a)l.push(r(c));return l}case yy:{const l=n({},s);for(const[c,d]of a)l[r(c)]=r(d);return l}case mN:return n(new Date(a),s);case pN:{const{source:l,flags:c}=a;return n(new RegExp(l,c),s)}case gN:{const l=n(new Map,s);for(const[c,d]of a)l.set(r(c),r(d));return l}case xN:{const l=n(new Set,s);for(const c of a)l.add(r(c));return l}case yV:{const{name:l,message:c}=a;return n(new QM[l](c),s)}case bV:return n(BigInt(a),s);case"BigInt":return n(Object(BigInt(a)),s);case"ArrayBuffer":return n(new Uint8Array(a).buffer,a);case"DataView":{const{buffer:l}=new Uint8Array(a);return n(new DataView(l),a)}}return n(new QM[i](a),s)};return r},VM=t=>f2e(new Map,t)(0),lh="",{toString:m2e}={},{keys:p2e}=Object,Jm=t=>{const e=typeof t;if(e!=="object"||!t)return[Bb,e];const n=m2e.call(t).slice(8,-1);switch(n){case"Array":return[M0,lh];case"Object":return[yy,lh];case"Date":return[mN,lh];case"RegExp":return[pN,lh];case"Map":return[gN,lh];case"Set":return[xN,lh];case"DataView":return[M0,n]}return n.includes("Array")?[M0,n]:n.includes("Error")?[yV,n]:[yy,n]},T1=([t,e])=>t===Bb&&(e==="function"||e==="symbol"),g2e=(t,e,n,r)=>{const s=(a,l)=>{const c=r.push(a)-1;return n.set(l,c),c},i=a=>{if(n.has(a))return n.get(a);let[l,c]=Jm(a);switch(l){case Bb:{let h=a;switch(c){case"bigint":l=bV,h=a.toString();break;case"function":case"symbol":if(t)throw new TypeError("unable to serialize "+c);h=null;break;case"undefined":return s([vV],a)}return s([l,h],a)}case M0:{if(c){let g=a;return c==="DataView"?g=new Uint8Array(a.buffer):c==="ArrayBuffer"&&(g=new Uint8Array(a)),s([c,[...g]],a)}const h=[],m=s([l,h],a);for(const g of a)h.push(i(g));return m}case yy:{if(c)switch(c){case"BigInt":return s([c,a.toString()],a);case"Boolean":case"Number":case"String":return s([c,a.valueOf()],a)}if(e&&"toJSON"in a)return i(a.toJSON());const h=[],m=s([l,h],a);for(const g of p2e(a))(t||!T1(Jm(a[g])))&&h.push([i(g),i(a[g])]);return m}case mN:return s([l,a.toISOString()],a);case pN:{const{source:h,flags:m}=a;return s([l,{source:h,flags:m}],a)}case gN:{const h=[],m=s([l,h],a);for(const[g,x]of a)(t||!(T1(Jm(g))||T1(Jm(x))))&&h.push([i(g),i(x)]);return m}case xN:{const h=[],m=s([l,h],a);for(const g of a)(t||!T1(Jm(g)))&&h.push(i(g));return m}}const{message:d}=a;return s([l,{name:c,message:d}],a)};return i},UM=(t,{json:e,lossy:n}={})=>{const r=[];return g2e(!(e||n),!!e,new Map,r)(t),r},by=typeof structuredClone=="function"?(t,e)=>e&&("json"in e||"lossy"in e)?VM(UM(t,e)):structuredClone(t):(t,e)=>VM(UM(t,e));function x2e(t,e){const n=[{type:"text",value:"↩"}];return e>1&&n.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(e)}]}),n}function v2e(t,e){return"Back to reference "+(t+1)+(e>1?"-"+e:"")}function y2e(t){const e=typeof t.options.clobberPrefix=="string"?t.options.clobberPrefix:"user-content-",n=t.options.footnoteBackContent||x2e,r=t.options.footnoteBackLabel||v2e,s=t.options.footnoteLabel||"Footnotes",i=t.options.footnoteLabelTagName||"h2",a=t.options.footnoteLabelProperties||{className:["sr-only"]},l=[];let c=-1;for(;++c0&&y.push({type:"text",value:" "});let j=typeof n=="string"?n:n(c,x);typeof j=="string"&&(j={type:"text",value:j}),y.push({type:"element",tagName:"a",properties:{href:"#"+e+"fnref-"+g+(x>1?"-"+x:""),dataFootnoteBackref:"",ariaLabel:typeof r=="string"?r:r(c,x),className:["data-footnote-backref"]},children:Array.isArray(j)?j:[j]})}const S=h[h.length-1];if(S&&S.type==="element"&&S.tagName==="p"){const j=S.children[S.children.length-1];j&&j.type==="text"?j.value+=" ":S.children.push({type:"text",value:" "}),S.children.push(...y)}else h.push(...y);const k={type:"element",tagName:"li",properties:{id:e+"fn-"+g},children:t.wrap(h,!0)};t.patch(d,k),l.push(k)}if(l.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:i,properties:{...by(a),id:"footnote-label"},children:[{type:"text",value:s}]},{type:"text",value:` `},{type:"element",tagName:"ol",properties:{},children:t.wrap(l,!0)},{type:"text",value:` -`}]}}const ug=(function(t){if(t==null)return s2e;if(typeof t=="function")return Db(t);if(typeof t=="object")return Array.isArray(t)?t2e(t):n2e(t);if(typeof t=="string")return r2e(t);throw new Error("Expected function, string, or object as test")});function t2e(t){const e=[];let n=-1;for(;++n":""))+")"})}return g;function g(){let x=pV,y,w,S;if((!e||i(c,d,h[h.length-1]||void 0))&&(x=o2e(n(c,h)),x[0]===CO))return x;if("children"in c&&c.children){const k=c;if(k.children&&x[0]!==gV)for(w=(r?k.children.length:-1)+a,S=h.concat(k);w>-1&&w":""))+")"})}return g;function g(){let x=wV,y,w,S;if((!e||i(c,d,h[h.length-1]||void 0))&&(x=N2e(n(c,h)),x[0]===RO))return x;if("children"in c&&c.children){const k=c;if(k.children&&x[0]!==SV)for(w=(r?k.children.length:-1)+a,S=h.concat(k);w>-1&&w0&&n.push({type:"text",value:` -`}),n}function qA(t){let e=0,n=t.charCodeAt(e);for(;n===9||n===32;)e++,n=t.charCodeAt(e);return t.slice(e)}function $A(t,e){const n=c2e(t,e),r=n.one(t,void 0),s=e2e(n),i=Array.isArray(r)?{type:"root",children:r}:r||{type:"root",children:[]};return s&&i.children.push({type:"text",value:` -`},s),i}function m2e(t,e){return t&&"run"in t?async function(n,r){const s=$A(n,{file:r,...e});await t.run(s,r)}:function(n,r){return $A(n,{file:r,...t||e})}}function HA(t){if(t)throw t}var CS,QA;function p2e(){if(QA)return CS;QA=1;var t=Object.prototype.hasOwnProperty,e=Object.prototype.toString,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,s=function(d){return typeof Array.isArray=="function"?Array.isArray(d):e.call(d)==="[object Array]"},i=function(d){if(!d||e.call(d)!=="[object Object]")return!1;var h=t.call(d,"constructor"),m=d.constructor&&d.constructor.prototype&&t.call(d.constructor.prototype,"isPrototypeOf");if(d.constructor&&!h&&!m)return!1;var g;for(g in d);return typeof g>"u"||t.call(d,g)},a=function(d,h){n&&h.name==="__proto__"?n(d,h.name,{enumerable:!0,configurable:!0,value:h.newValue,writable:!0}):d[h.name]=h.newValue},l=function(d,h){if(h==="__proto__")if(t.call(d,h)){if(r)return r(d,h).value}else return;return d[h]};return CS=function c(){var d,h,m,g,x,y,w=arguments[0],S=1,k=arguments.length,j=!1;for(typeof w=="boolean"&&(j=w,w=arguments[1]||{},S=2),(w==null||typeof w!="object"&&typeof w!="function")&&(w={});Sa.length;let c;l&&a.push(s);try{c=t.apply(this,a)}catch(d){const h=d;if(l&&n)throw h;return s(h)}l||(c&&c.then&&typeof c.then=="function"?c.then(i,s):c instanceof Error?s(c):i(c))}function s(a,...l){n||(n=!0,e(a,...l))}function i(a){s(null,a)}}const go={basename:y2e,dirname:b2e,extname:w2e,join:S2e,sep:"/"};function y2e(t,e){if(e!==void 0&&typeof e!="string")throw new TypeError('"ext" argument must be a string');dg(t);let n=0,r=-1,s=t.length,i;if(e===void 0||e.length===0||e.length>t.length){for(;s--;)if(t.codePointAt(s)===47){if(i){n=s+1;break}}else r<0&&(i=!0,r=s+1);return r<0?"":t.slice(n,r)}if(e===t)return"";let a=-1,l=e.length-1;for(;s--;)if(t.codePointAt(s)===47){if(i){n=s+1;break}}else a<0&&(i=!0,a=s+1),l>-1&&(t.codePointAt(s)===e.codePointAt(l--)?l<0&&(r=s):(l=-1,r=a));return n===r?r=a:r<0&&(r=t.length),t.slice(n,r)}function b2e(t){if(dg(t),t.length===0)return".";let e=-1,n=t.length,r;for(;--n;)if(t.codePointAt(n)===47){if(r){e=n;break}}else r||(r=!0);return e<0?t.codePointAt(0)===47?"/":".":e===1&&t.codePointAt(0)===47?"//":t.slice(0,e)}function w2e(t){dg(t);let e=t.length,n=-1,r=0,s=-1,i=0,a;for(;e--;){const l=t.codePointAt(e);if(l===47){if(a){r=e+1;break}continue}n<0&&(a=!0,n=e+1),l===46?s<0?s=e:i!==1&&(i=1):s>-1&&(i=-1)}return s<0||n<0||i===0||i===1&&s===n-1&&s===r+1?"":t.slice(s,n)}function S2e(...t){let e=-1,n;for(;++e0&&t.codePointAt(t.length-1)===47&&(n+="/"),e?"/"+n:n}function O2e(t,e){let n="",r=0,s=-1,i=0,a=-1,l,c;for(;++a<=t.length;){if(a2){if(c=n.lastIndexOf("/"),c!==n.length-1){c<0?(n="",r=0):(n=n.slice(0,c),r=n.length-1-n.lastIndexOf("/")),s=a,i=0;continue}}else if(n.length>0){n="",r=0,s=a,i=0;continue}}e&&(n=n.length>0?n+"/..":"..",r=2)}else n.length>0?n+="/"+t.slice(s+1,a):n=t.slice(s+1,a),r=a-s-1;s=a,i=0}else l===46&&i>-1?i++:i=-1}return n}function dg(t){if(typeof t!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(t))}const j2e={cwd:N2e};function N2e(){return"/"}function _O(t){return!!(t!==null&&typeof t=="object"&&"href"in t&&t.href&&"protocol"in t&&t.protocol&&t.auth===void 0)}function C2e(t){if(typeof t=="string")t=new URL(t);else if(!_O(t)){const e=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+t+"`");throw e.code="ERR_INVALID_ARG_TYPE",e}if(t.protocol!=="file:"){const e=new TypeError("The URL must be of scheme file");throw e.code="ERR_INVALID_URL_SCHEME",e}return T2e(t)}function T2e(t){if(t.hostname!==""){const r=new TypeError('File URL host must be "localhost" or empty on darwin');throw r.code="ERR_INVALID_FILE_URL_HOST",r}const e=t.pathname;let n=-1;for(;++n0){let[x,...y]=h;const w=r[g][1];EO(w)&&EO(x)&&(x=TS(!0,w,x)),r[g]=[d,x,...y]}}}}const A2e=new gN().freeze();function AS(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `parser`")}function RS(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `compiler`")}function DS(t,e){if(e)throw new Error("Cannot call `"+t+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function UA(t){if(!EO(t)||typeof t.type!="string")throw new TypeError("Expected node, got `"+t+"`")}function WA(t,e,n){if(!n)throw new Error("`"+t+"` finished async. Use `"+e+"` instead")}function C1(t){return R2e(t)?t:new xV(t)}function R2e(t){return!!(t&&typeof t=="object"&&"message"in t&&"messages"in t)}function D2e(t){return typeof t=="string"||P2e(t)}function P2e(t){return!!(t&&typeof t=="object"&&"byteLength"in t&&"byteOffset"in t)}const z2e="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",GA=[],XA={allowDangerousHtml:!0},I2e=/^(https?|ircs?|mailto|xmpp)$/i,L2e=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function B2e(t){const e=F2e(t),n=q2e(t);return $2e(e.runSync(e.parse(n),n),t)}function F2e(t){const e=t.rehypePlugins||GA,n=t.remarkPlugins||GA,r=t.remarkRehypeOptions?{...t.remarkRehypeOptions,...XA}:XA;return A2e().use(wwe).use(n).use(m2e,r).use(e)}function q2e(t){const e=t.children||"",n=new xV;return typeof e=="string"&&(n.value=e),n}function $2e(t,e){const n=e.allowedElements,r=e.allowElement,s=e.components,i=e.disallowedElements,a=e.skipHtml,l=e.unwrapDisallowed,c=e.urlTransform||H2e;for(const h of L2e)Object.hasOwn(e,h.from)&&(""+h.from+(h.to?"use `"+h.to+"` instead":"remove it")+z2e+h.id,void 0);return pN(t,d),sye(t,{Fragment:o.Fragment,components:s,ignoreInvalidStyle:!0,jsx:o.jsx,jsxs:o.jsxs,passKeys:!0,passNode:!0});function d(h,m,g){if(h.type==="raw"&&g&&typeof m=="number")return a?g.children.splice(m,1):g.children[m]={type:"text",value:h.value},m;if(h.type==="element"){let x;for(x in OS)if(Object.hasOwn(OS,x)&&Object.hasOwn(h.properties,x)){const y=h.properties[x],w=OS[x];(w===null||w.includes(h.tagName))&&(h.properties[x]=c(String(y||""),x,h))}}if(h.type==="element"){let x=n?!n.includes(h.tagName):i?i.includes(h.tagName):!1;if(!x&&r&&typeof m=="number"&&(x=!r(h,m,g)),x&&g&&typeof m=="number")return l&&h.children?g.children.splice(m,1,...h.children):g.children.splice(m,1),m}}}function H2e(t){const e=t.indexOf(":"),n=t.indexOf("?"),r=t.indexOf("#"),s=t.indexOf("/");return e===-1||s!==-1&&e>s||n!==-1&&e>n||r!==-1&&e>r||I2e.test(t.slice(0,e))?t:""}function YA(t,e){const n=String(t);if(typeof e!="string")throw new TypeError("Expected character");let r=0,s=n.indexOf(e);for(;s!==-1;)r++,s=n.indexOf(e,s+e.length);return r}function Q2e(t){if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function V2e(t,e,n){const s=ug((n||{}).ignore||[]),i=U2e(e);let a=-1;for(;++a0?{type:"text",value:_}:void 0),_===!1?g.lastIndex=T+1:(y!==T&&j.push({type:"text",value:d.value.slice(y,T)}),Array.isArray(_)?j.push(..._):_&&j.push(_),y=T+N[0].length,k=!0),!g.global)break;N=g.exec(d.value)}return k?(y?\]}]+$/.exec(t);if(!e)return[t,void 0];t=t.slice(0,e.index);let n=e[0],r=n.indexOf(")");const s=YA(t,"(");let i=YA(t,")");for(;r!==-1&&s>i;)t+=n.slice(0,r+1),n=n.slice(r+1),r=n.indexOf(")"),i++;return[t,n]}function vV(t,e){const n=t.input.charCodeAt(t.index-1);return(t.index===0||fd(n)||Mb(n))&&(!e||n!==47)}yV.peek=p4e;function o4e(){this.buffer()}function l4e(t){this.enter({type:"footnoteReference",identifier:"",label:""},t)}function c4e(){this.buffer()}function u4e(t){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},t)}function d4e(t){const e=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=Ga(this.sliceSerialize(t)).toLowerCase(),n.label=e}function h4e(t){this.exit(t)}function f4e(t){const e=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=Ga(this.sliceSerialize(t)).toLowerCase(),n.label=e}function m4e(t){this.exit(t)}function p4e(){return"["}function yV(t,e,n,r){const s=n.createTracker(r);let i=s.move("[^");const a=n.enter("footnoteReference"),l=n.enter("reference");return i+=s.move(n.safe(n.associationId(t),{after:"]",before:i})),l(),a(),i+=s.move("]"),i}function g4e(){return{enter:{gfmFootnoteCallString:o4e,gfmFootnoteCall:l4e,gfmFootnoteDefinitionLabelString:c4e,gfmFootnoteDefinition:u4e},exit:{gfmFootnoteCallString:d4e,gfmFootnoteCall:h4e,gfmFootnoteDefinitionLabelString:f4e,gfmFootnoteDefinition:m4e}}}function x4e(t){let e=!1;return t&&t.firstLineBlank&&(e=!0),{handlers:{footnoteDefinition:n,footnoteReference:yV},unsafe:[{character:"[",inConstruct:["label","phrasing","reference"]}]};function n(r,s,i,a){const l=i.createTracker(a);let c=l.move("[^");const d=i.enter("footnoteDefinition"),h=i.enter("label");return c+=l.move(i.safe(i.associationId(r),{before:c,after:"]"})),h(),c+=l.move("]:"),r.children&&r.children.length>0&&(l.shift(4),c+=l.move((e?` -`:" ")+i.indentLines(i.containerFlow(r,l.current()),e?bV:v4e))),d(),c}}function v4e(t,e,n){return e===0?t:bV(t,e,n)}function bV(t,e,n){return(n?"":" ")+t}const y4e=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"];wV.peek=O4e;function b4e(){return{canContainEols:["delete"],enter:{strikethrough:S4e},exit:{strikethrough:k4e}}}function w4e(){return{unsafe:[{character:"~",inConstruct:"phrasing",notInConstruct:y4e}],handlers:{delete:wV}}}function S4e(t){this.enter({type:"delete",children:[]},t)}function k4e(t){this.exit(t)}function wV(t,e,n,r){const s=n.createTracker(r),i=n.enter("strikethrough");let a=s.move("~~");return a+=n.containerPhrasing(t,{...s.current(),before:a,after:"~"}),a+=s.move("~~"),i(),a}function O4e(){return"~"}function j4e(t){return t.length}function N4e(t,e){const n=e||{},r=(n.align||[]).concat(),s=n.stringLength||j4e,i=[],a=[],l=[],c=[];let d=0,h=-1;for(;++hd&&(d=t[h].length);++kc[k])&&(c[k]=N)}w.push(j)}a[h]=w,l[h]=S}let m=-1;if(typeof r=="object"&&"length"in r)for(;++mc[m]&&(c[m]=j),x[m]=j),g[m]=N}a.splice(1,0,g),l.splice(1,0,x),h=-1;const y=[];for(;++h "),i.shift(2);const a=n.indentLines(n.containerFlow(t,i.current()),E4e);return s(),a}function E4e(t,e,n){return">"+(n?"":" ")+t}function _4e(t,e){return ZA(t,e.inConstruct,!0)&&!ZA(t,e.notInConstruct,!1)}function ZA(t,e,n){if(typeof e=="string"&&(e=[e]),!e||e.length===0)return n;let r=-1;for(;++ra&&(a=i):i=1,s=r+e.length,r=n.indexOf(e,s);return a}function M4e(t,e){return!!(e.options.fences===!1&&t.value&&!t.lang&&/[^ \r\n]/.test(t.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(t.value))}function A4e(t){const e=t.options.fence||"`";if(e!=="`"&&e!=="~")throw new Error("Cannot serialize code with `"+e+"` for `options.fence`, expected `` ` `` or `~`");return e}function R4e(t,e,n,r){const s=A4e(n),i=t.value||"",a=s==="`"?"GraveAccent":"Tilde";if(M4e(t,n)){const m=n.enter("codeIndented"),g=n.indentLines(i,D4e);return m(),g}const l=n.createTracker(r),c=s.repeat(Math.max(SV(i,s)+1,3)),d=n.enter("codeFenced");let h=l.move(c);if(t.lang){const m=n.enter(`codeFencedLang${a}`);h+=l.move(n.safe(t.lang,{before:h,after:" ",encode:["`"],...l.current()})),m()}if(t.lang&&t.meta){const m=n.enter(`codeFencedMeta${a}`);h+=l.move(" "),h+=l.move(n.safe(t.meta,{before:h,after:` +`}),n}function WM(t){let e=0,n=t.charCodeAt(e);for(;n===9||n===32;)e++,n=t.charCodeAt(e);return t.slice(e)}function GM(t,e){const n=T2e(t,e),r=n.one(t,void 0),s=y2e(n),i=Array.isArray(r)?{type:"root",children:r}:r||{type:"root",children:[]};return s&&i.children.push({type:"text",value:` +`},s),i}function R2e(t,e){return t&&"run"in t?async function(n,r){const s=GM(n,{file:r,...e});await t.run(s,r)}:function(n,r){return GM(n,{file:r,...t||e})}}function XM(t){if(t)throw t}var RS,YM;function D2e(){if(YM)return RS;YM=1;var t=Object.prototype.hasOwnProperty,e=Object.prototype.toString,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,s=function(d){return typeof Array.isArray=="function"?Array.isArray(d):e.call(d)==="[object Array]"},i=function(d){if(!d||e.call(d)!=="[object Object]")return!1;var h=t.call(d,"constructor"),m=d.constructor&&d.constructor.prototype&&t.call(d.constructor.prototype,"isPrototypeOf");if(d.constructor&&!h&&!m)return!1;var g;for(g in d);return typeof g>"u"||t.call(d,g)},a=function(d,h){n&&h.name==="__proto__"?n(d,h.name,{enumerable:!0,configurable:!0,value:h.newValue,writable:!0}):d[h.name]=h.newValue},l=function(d,h){if(h==="__proto__")if(t.call(d,h)){if(r)return r(d,h).value}else return;return d[h]};return RS=function c(){var d,h,m,g,x,y,w=arguments[0],S=1,k=arguments.length,j=!1;for(typeof w=="boolean"&&(j=w,w=arguments[1]||{},S=2),(w==null||typeof w!="object"&&typeof w!="function")&&(w={});Sa.length;let c;l&&a.push(s);try{c=t.apply(this,a)}catch(d){const h=d;if(l&&n)throw h;return s(h)}l||(c&&c.then&&typeof c.then=="function"?c.then(i,s):c instanceof Error?s(c):i(c))}function s(a,...l){n||(n=!0,e(a,...l))}function i(a){s(null,a)}}const go={basename:L2e,dirname:B2e,extname:F2e,join:q2e,sep:"/"};function L2e(t,e){if(e!==void 0&&typeof e!="string")throw new TypeError('"ext" argument must be a string');fg(t);let n=0,r=-1,s=t.length,i;if(e===void 0||e.length===0||e.length>t.length){for(;s--;)if(t.codePointAt(s)===47){if(i){n=s+1;break}}else r<0&&(i=!0,r=s+1);return r<0?"":t.slice(n,r)}if(e===t)return"";let a=-1,l=e.length-1;for(;s--;)if(t.codePointAt(s)===47){if(i){n=s+1;break}}else a<0&&(i=!0,a=s+1),l>-1&&(t.codePointAt(s)===e.codePointAt(l--)?l<0&&(r=s):(l=-1,r=a));return n===r?r=a:r<0&&(r=t.length),t.slice(n,r)}function B2e(t){if(fg(t),t.length===0)return".";let e=-1,n=t.length,r;for(;--n;)if(t.codePointAt(n)===47){if(r){e=n;break}}else r||(r=!0);return e<0?t.codePointAt(0)===47?"/":".":e===1&&t.codePointAt(0)===47?"//":t.slice(0,e)}function F2e(t){fg(t);let e=t.length,n=-1,r=0,s=-1,i=0,a;for(;e--;){const l=t.codePointAt(e);if(l===47){if(a){r=e+1;break}continue}n<0&&(a=!0,n=e+1),l===46?s<0?s=e:i!==1&&(i=1):s>-1&&(i=-1)}return s<0||n<0||i===0||i===1&&s===n-1&&s===r+1?"":t.slice(s,n)}function q2e(...t){let e=-1,n;for(;++e0&&t.codePointAt(t.length-1)===47&&(n+="/"),e?"/"+n:n}function H2e(t,e){let n="",r=0,s=-1,i=0,a=-1,l,c;for(;++a<=t.length;){if(a2){if(c=n.lastIndexOf("/"),c!==n.length-1){c<0?(n="",r=0):(n=n.slice(0,c),r=n.length-1-n.lastIndexOf("/")),s=a,i=0;continue}}else if(n.length>0){n="",r=0,s=a,i=0;continue}}e&&(n=n.length>0?n+"/..":"..",r=2)}else n.length>0?n+="/"+t.slice(s+1,a):n=t.slice(s+1,a),r=a-s-1;s=a,i=0}else l===46&&i>-1?i++:i=-1}return n}function fg(t){if(typeof t!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(t))}const Q2e={cwd:V2e};function V2e(){return"/"}function zO(t){return!!(t!==null&&typeof t=="object"&&"href"in t&&t.href&&"protocol"in t&&t.protocol&&t.auth===void 0)}function U2e(t){if(typeof t=="string")t=new URL(t);else if(!zO(t)){const e=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+t+"`");throw e.code="ERR_INVALID_ARG_TYPE",e}if(t.protocol!=="file:"){const e=new TypeError("The URL must be of scheme file");throw e.code="ERR_INVALID_URL_SCHEME",e}return W2e(t)}function W2e(t){if(t.hostname!==""){const r=new TypeError('File URL host must be "localhost" or empty on darwin');throw r.code="ERR_INVALID_FILE_URL_HOST",r}const e=t.pathname;let n=-1;for(;++n0){let[x,...y]=h;const w=r[g][1];PO(w)&&PO(x)&&(x=DS(!0,w,x)),r[g]=[d,x,...y]}}}}const K2e=new bN().freeze();function LS(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `parser`")}function BS(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `compiler`")}function FS(t,e){if(e)throw new Error("Cannot call `"+t+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function ZM(t){if(!PO(t)||typeof t.type!="string")throw new TypeError("Expected node, got `"+t+"`")}function JM(t,e,n){if(!n)throw new Error("`"+t+"` finished async. Use `"+e+"` instead")}function E1(t){return Z2e(t)?t:new kV(t)}function Z2e(t){return!!(t&&typeof t=="object"&&"message"in t&&"messages"in t)}function J2e(t){return typeof t=="string"||e4e(t)}function e4e(t){return!!(t&&typeof t=="object"&&"byteLength"in t&&"byteOffset"in t)}const t4e="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",eR=[],tR={allowDangerousHtml:!0},n4e=/^(https?|ircs?|mailto|xmpp)$/i,r4e=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function s4e(t){const e=i4e(t),n=a4e(t);return o4e(e.runSync(e.parse(n),n),t)}function i4e(t){const e=t.rehypePlugins||eR,n=t.remarkPlugins||eR,r=t.remarkRehypeOptions?{...t.remarkRehypeOptions,...tR}:tR;return K2e().use(Fwe).use(n).use(R2e,r).use(e)}function a4e(t){const e=t.children||"",n=new kV;return typeof e=="string"&&(n.value=e),n}function o4e(t,e){const n=e.allowedElements,r=e.allowElement,s=e.components,i=e.disallowedElements,a=e.skipHtml,l=e.unwrapDisallowed,c=e.urlTransform||l4e;for(const h of r4e)Object.hasOwn(e,h.from)&&(""+h.from+(h.to?"use `"+h.to+"` instead":"remove it")+t4e+h.id,void 0);return yN(t,d),kye(t,{Fragment:o.Fragment,components:s,ignoreInvalidStyle:!0,jsx:o.jsx,jsxs:o.jsxs,passKeys:!0,passNode:!0});function d(h,m,g){if(h.type==="raw"&&g&&typeof m=="number")return a?g.children.splice(m,1):g.children[m]={type:"text",value:h.value},m;if(h.type==="element"){let x;for(x in _S)if(Object.hasOwn(_S,x)&&Object.hasOwn(h.properties,x)){const y=h.properties[x],w=_S[x];(w===null||w.includes(h.tagName))&&(h.properties[x]=c(String(y||""),x,h))}}if(h.type==="element"){let x=n?!n.includes(h.tagName):i?i.includes(h.tagName):!1;if(!x&&r&&typeof m=="number"&&(x=!r(h,m,g)),x&&g&&typeof m=="number")return l&&h.children?g.children.splice(m,1,...h.children):g.children.splice(m,1),m}}}function l4e(t){const e=t.indexOf(":"),n=t.indexOf("?"),r=t.indexOf("#"),s=t.indexOf("/");return e===-1||s!==-1&&e>s||n!==-1&&e>n||r!==-1&&e>r||n4e.test(t.slice(0,e))?t:""}function nR(t,e){const n=String(t);if(typeof e!="string")throw new TypeError("Expected character");let r=0,s=n.indexOf(e);for(;s!==-1;)r++,s=n.indexOf(e,s+e.length);return r}function c4e(t){if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function u4e(t,e,n){const s=hg((n||{}).ignore||[]),i=d4e(e);let a=-1;for(;++a0?{type:"text",value:_}:void 0),_===!1?g.lastIndex=T+1:(y!==T&&j.push({type:"text",value:d.value.slice(y,T)}),Array.isArray(_)?j.push(..._):_&&j.push(_),y=T+N[0].length,k=!0),!g.global)break;N=g.exec(d.value)}return k?(y?\]}]+$/.exec(t);if(!e)return[t,void 0];t=t.slice(0,e.index);let n=e[0],r=n.indexOf(")");const s=nR(t,"(");let i=nR(t,")");for(;r!==-1&&s>i;)t+=n.slice(0,r+1),n=n.slice(r+1),r=n.indexOf(")"),i++;return[t,n]}function OV(t,e){const n=t.input.charCodeAt(t.index-1);return(t.index===0||fd(n)||Ib(n))&&(!e||n!==47)}jV.peek=D4e;function N4e(){this.buffer()}function C4e(t){this.enter({type:"footnoteReference",identifier:"",label:""},t)}function T4e(){this.buffer()}function E4e(t){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},t)}function _4e(t){const e=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=Ga(this.sliceSerialize(t)).toLowerCase(),n.label=e}function A4e(t){this.exit(t)}function M4e(t){const e=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=Ga(this.sliceSerialize(t)).toLowerCase(),n.label=e}function R4e(t){this.exit(t)}function D4e(){return"["}function jV(t,e,n,r){const s=n.createTracker(r);let i=s.move("[^");const a=n.enter("footnoteReference"),l=n.enter("reference");return i+=s.move(n.safe(n.associationId(t),{after:"]",before:i})),l(),a(),i+=s.move("]"),i}function P4e(){return{enter:{gfmFootnoteCallString:N4e,gfmFootnoteCall:C4e,gfmFootnoteDefinitionLabelString:T4e,gfmFootnoteDefinition:E4e},exit:{gfmFootnoteCallString:_4e,gfmFootnoteCall:A4e,gfmFootnoteDefinitionLabelString:M4e,gfmFootnoteDefinition:R4e}}}function z4e(t){let e=!1;return t&&t.firstLineBlank&&(e=!0),{handlers:{footnoteDefinition:n,footnoteReference:jV},unsafe:[{character:"[",inConstruct:["label","phrasing","reference"]}]};function n(r,s,i,a){const l=i.createTracker(a);let c=l.move("[^");const d=i.enter("footnoteDefinition"),h=i.enter("label");return c+=l.move(i.safe(i.associationId(r),{before:c,after:"]"})),h(),c+=l.move("]:"),r.children&&r.children.length>0&&(l.shift(4),c+=l.move((e?` +`:" ")+i.indentLines(i.containerFlow(r,l.current()),e?NV:I4e))),d(),c}}function I4e(t,e,n){return e===0?t:NV(t,e,n)}function NV(t,e,n){return(n?"":" ")+t}const L4e=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"];CV.peek=H4e;function B4e(){return{canContainEols:["delete"],enter:{strikethrough:q4e},exit:{strikethrough:$4e}}}function F4e(){return{unsafe:[{character:"~",inConstruct:"phrasing",notInConstruct:L4e}],handlers:{delete:CV}}}function q4e(t){this.enter({type:"delete",children:[]},t)}function $4e(t){this.exit(t)}function CV(t,e,n,r){const s=n.createTracker(r),i=n.enter("strikethrough");let a=s.move("~~");return a+=n.containerPhrasing(t,{...s.current(),before:a,after:"~"}),a+=s.move("~~"),i(),a}function H4e(){return"~"}function Q4e(t){return t.length}function V4e(t,e){const n=e||{},r=(n.align||[]).concat(),s=n.stringLength||Q4e,i=[],a=[],l=[],c=[];let d=0,h=-1;for(;++hd&&(d=t[h].length);++kc[k])&&(c[k]=N)}w.push(j)}a[h]=w,l[h]=S}let m=-1;if(typeof r=="object"&&"length"in r)for(;++mc[m]&&(c[m]=j),x[m]=j),g[m]=N}a.splice(1,0,g),l.splice(1,0,x),h=-1;const y=[];for(;++h "),i.shift(2);const a=n.indentLines(n.containerFlow(t,i.current()),G4e);return s(),a}function G4e(t,e,n){return">"+(n?"":" ")+t}function X4e(t,e){return sR(t,e.inConstruct,!0)&&!sR(t,e.notInConstruct,!1)}function sR(t,e,n){if(typeof e=="string"&&(e=[e]),!e||e.length===0)return n;let r=-1;for(;++ra&&(a=i):i=1,s=r+e.length,r=n.indexOf(e,s);return a}function Y4e(t,e){return!!(e.options.fences===!1&&t.value&&!t.lang&&/[^ \r\n]/.test(t.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(t.value))}function K4e(t){const e=t.options.fence||"`";if(e!=="`"&&e!=="~")throw new Error("Cannot serialize code with `"+e+"` for `options.fence`, expected `` ` `` or `~`");return e}function Z4e(t,e,n,r){const s=K4e(n),i=t.value||"",a=s==="`"?"GraveAccent":"Tilde";if(Y4e(t,n)){const m=n.enter("codeIndented"),g=n.indentLines(i,J4e);return m(),g}const l=n.createTracker(r),c=s.repeat(Math.max(TV(i,s)+1,3)),d=n.enter("codeFenced");let h=l.move(c);if(t.lang){const m=n.enter(`codeFencedLang${a}`);h+=l.move(n.safe(t.lang,{before:h,after:" ",encode:["`"],...l.current()})),m()}if(t.lang&&t.meta){const m=n.enter(`codeFencedMeta${a}`);h+=l.move(" "),h+=l.move(n.safe(t.meta,{before:h,after:` `,encode:["`"],...l.current()})),m()}return h+=l.move(` `),i&&(h+=l.move(i+` -`)),h+=l.move(c),d(),h}function D4e(t,e,n){return(n?"":" ")+t}function xN(t){const e=t.options.quote||'"';if(e!=='"'&&e!=="'")throw new Error("Cannot serialize title with `"+e+"` for `options.quote`, expected `\"`, or `'`");return e}function P4e(t,e,n,r){const s=xN(n),i=s==='"'?"Quote":"Apostrophe",a=n.enter("definition");let l=n.enter("label");const c=n.createTracker(r);let d=c.move("[");return d+=c.move(n.safe(n.associationId(t),{before:d,after:"]",...c.current()})),d+=c.move("]: "),l(),!t.url||/[\0- \u007F]/.test(t.url)?(l=n.enter("destinationLiteral"),d+=c.move("<"),d+=c.move(n.safe(t.url,{before:d,after:">",...c.current()})),d+=c.move(">")):(l=n.enter("destinationRaw"),d+=c.move(n.safe(t.url,{before:d,after:t.title?" ":` -`,...c.current()}))),l(),t.title&&(l=n.enter(`title${i}`),d+=c.move(" "+s),d+=c.move(n.safe(t.title,{before:d,after:s,...c.current()})),d+=c.move(s),l()),a(),d}function z4e(t){const e=t.options.emphasis||"*";if(e!=="*"&&e!=="_")throw new Error("Cannot serialize emphasis with `"+e+"` for `options.emphasis`, expected `*`, or `_`");return e}function fp(t){return"&#x"+t.toString(16).toUpperCase()+";"}function gy(t,e,n){const r=uf(t),s=uf(e);return r===void 0?s===void 0?n==="_"?{inside:!0,outside:!0}:{inside:!1,outside:!1}:s===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:r===1?s===void 0?{inside:!1,outside:!1}:s===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:s===void 0?{inside:!1,outside:!1}:s===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}kV.peek=I4e;function kV(t,e,n,r){const s=z4e(n),i=n.enter("emphasis"),a=n.createTracker(r),l=a.move(s);let c=a.move(n.containerPhrasing(t,{after:s,before:l,...a.current()}));const d=c.charCodeAt(0),h=gy(r.before.charCodeAt(r.before.length-1),d,s);h.inside&&(c=fp(d)+c.slice(1));const m=c.charCodeAt(c.length-1),g=gy(r.after.charCodeAt(0),m,s);g.inside&&(c=c.slice(0,-1)+fp(m));const x=a.move(s);return i(),n.attentionEncodeSurroundingInfo={after:g.outside,before:h.outside},l+c+x}function I4e(t,e,n){return n.options.emphasis||"*"}function L4e(t,e){let n=!1;return pN(t,function(r){if("value"in r&&/\r?\n|\r/.test(r.value)||r.type==="break")return n=!0,CO}),!!((!t.depth||t.depth<3)&&oN(t)&&(e.options.setext||n))}function B4e(t,e,n,r){const s=Math.max(Math.min(6,t.depth||1),1),i=n.createTracker(r);if(L4e(t,n)){const h=n.enter("headingSetext"),m=n.enter("phrasing"),g=n.containerPhrasing(t,{...i.current(),before:` +`)),h+=l.move(c),d(),h}function J4e(t,e,n){return(n?"":" ")+t}function wN(t){const e=t.options.quote||'"';if(e!=='"'&&e!=="'")throw new Error("Cannot serialize title with `"+e+"` for `options.quote`, expected `\"`, or `'`");return e}function eSe(t,e,n,r){const s=wN(n),i=s==='"'?"Quote":"Apostrophe",a=n.enter("definition");let l=n.enter("label");const c=n.createTracker(r);let d=c.move("[");return d+=c.move(n.safe(n.associationId(t),{before:d,after:"]",...c.current()})),d+=c.move("]: "),l(),!t.url||/[\0- \u007F]/.test(t.url)?(l=n.enter("destinationLiteral"),d+=c.move("<"),d+=c.move(n.safe(t.url,{before:d,after:">",...c.current()})),d+=c.move(">")):(l=n.enter("destinationRaw"),d+=c.move(n.safe(t.url,{before:d,after:t.title?" ":` +`,...c.current()}))),l(),t.title&&(l=n.enter(`title${i}`),d+=c.move(" "+s),d+=c.move(n.safe(t.title,{before:d,after:s,...c.current()})),d+=c.move(s),l()),a(),d}function tSe(t){const e=t.options.emphasis||"*";if(e!=="*"&&e!=="_")throw new Error("Cannot serialize emphasis with `"+e+"` for `options.emphasis`, expected `*`, or `_`");return e}function gp(t){return"&#x"+t.toString(16).toUpperCase()+";"}function wy(t,e,n){const r=hf(t),s=hf(e);return r===void 0?s===void 0?n==="_"?{inside:!0,outside:!0}:{inside:!1,outside:!1}:s===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:r===1?s===void 0?{inside:!1,outside:!1}:s===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:s===void 0?{inside:!1,outside:!1}:s===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}EV.peek=nSe;function EV(t,e,n,r){const s=tSe(n),i=n.enter("emphasis"),a=n.createTracker(r),l=a.move(s);let c=a.move(n.containerPhrasing(t,{after:s,before:l,...a.current()}));const d=c.charCodeAt(0),h=wy(r.before.charCodeAt(r.before.length-1),d,s);h.inside&&(c=gp(d)+c.slice(1));const m=c.charCodeAt(c.length-1),g=wy(r.after.charCodeAt(0),m,s);g.inside&&(c=c.slice(0,-1)+gp(m));const x=a.move(s);return i(),n.attentionEncodeSurroundingInfo={after:g.outside,before:h.outside},l+c+x}function nSe(t,e,n){return n.options.emphasis||"*"}function rSe(t,e){let n=!1;return yN(t,function(r){if("value"in r&&/\r?\n|\r/.test(r.value)||r.type==="break")return n=!0,RO}),!!((!t.depth||t.depth<3)&&dN(t)&&(e.options.setext||n))}function sSe(t,e,n,r){const s=Math.max(Math.min(6,t.depth||1),1),i=n.createTracker(r);if(rSe(t,n)){const h=n.enter("headingSetext"),m=n.enter("phrasing"),g=n.containerPhrasing(t,{...i.current(),before:` `,after:` `});return m(),h(),g+` `+(s===1?"=":"-").repeat(g.length-(Math.max(g.lastIndexOf("\r"),g.lastIndexOf(` `))+1))}const a="#".repeat(s),l=n.enter("headingAtx"),c=n.enter("phrasing");i.move(a+" ");let d=n.containerPhrasing(t,{before:"# ",after:` -`,...i.current()});return/^[\t ]/.test(d)&&(d=fp(d.charCodeAt(0))+d.slice(1)),d=d?a+" "+d:a,n.options.closeAtx&&(d+=" "+a),c(),l(),d}OV.peek=F4e;function OV(t){return t.value||""}function F4e(){return"<"}jV.peek=q4e;function jV(t,e,n,r){const s=xN(n),i=s==='"'?"Quote":"Apostrophe",a=n.enter("image");let l=n.enter("label");const c=n.createTracker(r);let d=c.move("![");return d+=c.move(n.safe(t.alt,{before:d,after:"]",...c.current()})),d+=c.move("]("),l(),!t.url&&t.title||/[\0- \u007F]/.test(t.url)?(l=n.enter("destinationLiteral"),d+=c.move("<"),d+=c.move(n.safe(t.url,{before:d,after:">",...c.current()})),d+=c.move(">")):(l=n.enter("destinationRaw"),d+=c.move(n.safe(t.url,{before:d,after:t.title?" ":")",...c.current()}))),l(),t.title&&(l=n.enter(`title${i}`),d+=c.move(" "+s),d+=c.move(n.safe(t.title,{before:d,after:s,...c.current()})),d+=c.move(s),l()),d+=c.move(")"),a(),d}function q4e(){return"!"}NV.peek=$4e;function NV(t,e,n,r){const s=t.referenceType,i=n.enter("imageReference");let a=n.enter("label");const l=n.createTracker(r);let c=l.move("![");const d=n.safe(t.alt,{before:c,after:"]",...l.current()});c+=l.move(d+"]["),a();const h=n.stack;n.stack=[],a=n.enter("reference");const m=n.safe(n.associationId(t),{before:c,after:"]",...l.current()});return a(),n.stack=h,i(),s==="full"||!d||d!==m?c+=l.move(m+"]"):s==="shortcut"?c=c.slice(0,-1):c+=l.move("]"),c}function $4e(){return"!"}CV.peek=H4e;function CV(t,e,n){let r=t.value||"",s="`",i=-1;for(;new RegExp("(^|[^`])"+s+"([^`]|$)").test(r);)s+="`";for(/[^ \r\n]/.test(r)&&(/^[ \r\n]/.test(r)&&/[ \r\n]$/.test(r)||/^`|`$/.test(r))&&(r=" "+r+" ");++i\u007F]/.test(t.url))}EV.peek=Q4e;function EV(t,e,n,r){const s=xN(n),i=s==='"'?"Quote":"Apostrophe",a=n.createTracker(r);let l,c;if(TV(t,n)){const h=n.stack;n.stack=[],l=n.enter("autolink");let m=a.move("<");return m+=a.move(n.containerPhrasing(t,{before:m,after:">",...a.current()})),m+=a.move(">"),l(),n.stack=h,m}l=n.enter("link"),c=n.enter("label");let d=a.move("[");return d+=a.move(n.containerPhrasing(t,{before:d,after:"](",...a.current()})),d+=a.move("]("),c(),!t.url&&t.title||/[\0- \u007F]/.test(t.url)?(c=n.enter("destinationLiteral"),d+=a.move("<"),d+=a.move(n.safe(t.url,{before:d,after:">",...a.current()})),d+=a.move(">")):(c=n.enter("destinationRaw"),d+=a.move(n.safe(t.url,{before:d,after:t.title?" ":")",...a.current()}))),c(),t.title&&(c=n.enter(`title${i}`),d+=a.move(" "+s),d+=a.move(n.safe(t.title,{before:d,after:s,...a.current()})),d+=a.move(s),c()),d+=a.move(")"),l(),d}function Q4e(t,e,n){return TV(t,n)?"<":"["}_V.peek=V4e;function _V(t,e,n,r){const s=t.referenceType,i=n.enter("linkReference");let a=n.enter("label");const l=n.createTracker(r);let c=l.move("[");const d=n.containerPhrasing(t,{before:c,after:"]",...l.current()});c+=l.move(d+"]["),a();const h=n.stack;n.stack=[],a=n.enter("reference");const m=n.safe(n.associationId(t),{before:c,after:"]",...l.current()});return a(),n.stack=h,i(),s==="full"||!d||d!==m?c+=l.move(m+"]"):s==="shortcut"?c=c.slice(0,-1):c+=l.move("]"),c}function V4e(){return"["}function vN(t){const e=t.options.bullet||"*";if(e!=="*"&&e!=="+"&&e!=="-")throw new Error("Cannot serialize items with `"+e+"` for `options.bullet`, expected `*`, `+`, or `-`");return e}function U4e(t){const e=vN(t),n=t.options.bulletOther;if(!n)return e==="*"?"-":"*";if(n!=="*"&&n!=="+"&&n!=="-")throw new Error("Cannot serialize items with `"+n+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(n===e)throw new Error("Expected `bullet` (`"+e+"`) and `bulletOther` (`"+n+"`) to be different");return n}function W4e(t){const e=t.options.bulletOrdered||".";if(e!=="."&&e!==")")throw new Error("Cannot serialize items with `"+e+"` for `options.bulletOrdered`, expected `.` or `)`");return e}function MV(t){const e=t.options.rule||"*";if(e!=="*"&&e!=="-"&&e!=="_")throw new Error("Cannot serialize rules with `"+e+"` for `options.rule`, expected `*`, `-`, or `_`");return e}function G4e(t,e,n,r){const s=n.enter("list"),i=n.bulletCurrent;let a=t.ordered?W4e(n):vN(n);const l=t.ordered?a==="."?")":".":U4e(n);let c=e&&n.bulletLastUsed?a===n.bulletLastUsed:!1;if(!t.ordered){const h=t.children?t.children[0]:void 0;if((a==="*"||a==="-")&&h&&(!h.children||!h.children[0])&&n.stack[n.stack.length-1]==="list"&&n.stack[n.stack.length-2]==="listItem"&&n.stack[n.stack.length-3]==="list"&&n.stack[n.stack.length-4]==="listItem"&&n.indexStack[n.indexStack.length-1]===0&&n.indexStack[n.indexStack.length-2]===0&&n.indexStack[n.indexStack.length-3]===0&&(c=!0),MV(n)===a&&h){let m=-1;for(;++m-1?e.start:1)+(n.options.incrementListMarker===!1?0:e.children.indexOf(t))+i);let a=i.length+1;(s==="tab"||s==="mixed"&&(e&&e.type==="list"&&e.spread||t.spread))&&(a=Math.ceil(a/4)*4);const l=n.createTracker(r);l.move(i+" ".repeat(a-i.length)),l.shift(a);const c=n.enter("listItem"),d=n.indentLines(n.containerFlow(t,l.current()),h);return c(),d;function h(m,g,x){return g?(x?"":" ".repeat(a))+m:(x?i:i+" ".repeat(a-i.length))+m}}function K4e(t,e,n,r){const s=n.enter("paragraph"),i=n.enter("phrasing"),a=n.containerPhrasing(t,r);return i(),s(),a}const Z4e=ug(["break","delete","emphasis","footnote","footnoteReference","image","imageReference","inlineCode","inlineMath","link","linkReference","mdxJsxTextElement","mdxTextExpression","strong","text","textDirective"]);function J4e(t,e,n,r){return(t.children.some(function(a){return Z4e(a)})?n.containerPhrasing:n.containerFlow).call(n,t,r)}function eSe(t){const e=t.options.strong||"*";if(e!=="*"&&e!=="_")throw new Error("Cannot serialize strong with `"+e+"` for `options.strong`, expected `*`, or `_`");return e}AV.peek=tSe;function AV(t,e,n,r){const s=eSe(n),i=n.enter("strong"),a=n.createTracker(r),l=a.move(s+s);let c=a.move(n.containerPhrasing(t,{after:s,before:l,...a.current()}));const d=c.charCodeAt(0),h=gy(r.before.charCodeAt(r.before.length-1),d,s);h.inside&&(c=fp(d)+c.slice(1));const m=c.charCodeAt(c.length-1),g=gy(r.after.charCodeAt(0),m,s);g.inside&&(c=c.slice(0,-1)+fp(m));const x=a.move(s+s);return i(),n.attentionEncodeSurroundingInfo={after:g.outside,before:h.outside},l+c+x}function tSe(t,e,n){return n.options.strong||"*"}function nSe(t,e,n,r){return n.safe(t.value,r)}function rSe(t){const e=t.options.ruleRepetition||3;if(e<3)throw new Error("Cannot serialize rules with repetition `"+e+"` for `options.ruleRepetition`, expected `3` or more");return e}function sSe(t,e,n){const r=(MV(n)+(n.options.ruleSpaces?" ":"")).repeat(rSe(n));return n.options.ruleSpaces?r.slice(0,-1):r}const RV={blockquote:T4e,break:JA,code:R4e,definition:P4e,emphasis:kV,hardBreak:JA,heading:B4e,html:OV,image:jV,imageReference:NV,inlineCode:CV,link:EV,linkReference:_V,list:G4e,listItem:Y4e,paragraph:K4e,root:J4e,strong:AV,text:nSe,thematicBreak:sSe};function iSe(){return{enter:{table:aSe,tableData:eR,tableHeader:eR,tableRow:lSe},exit:{codeText:cSe,table:oSe,tableData:LS,tableHeader:LS,tableRow:LS}}}function aSe(t){const e=t._align;this.enter({type:"table",align:e.map(function(n){return n==="none"?null:n}),children:[]},t),this.data.inTable=!0}function oSe(t){this.exit(t),this.data.inTable=void 0}function lSe(t){this.enter({type:"tableRow",children:[]},t)}function LS(t){this.exit(t)}function eR(t){this.enter({type:"tableCell",children:[]},t)}function cSe(t){let e=this.resume();this.data.inTable&&(e=e.replace(/\\([\\|])/g,uSe));const n=this.stack[this.stack.length-1];n.type,n.value=e,this.exit(t)}function uSe(t,e){return e==="|"?e:t}function dSe(t){const e=t||{},n=e.tableCellPadding,r=e.tablePipeAlign,s=e.stringLength,i=n?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:` +`,...i.current()});return/^[\t ]/.test(d)&&(d=gp(d.charCodeAt(0))+d.slice(1)),d=d?a+" "+d:a,n.options.closeAtx&&(d+=" "+a),c(),l(),d}_V.peek=iSe;function _V(t){return t.value||""}function iSe(){return"<"}AV.peek=aSe;function AV(t,e,n,r){const s=wN(n),i=s==='"'?"Quote":"Apostrophe",a=n.enter("image");let l=n.enter("label");const c=n.createTracker(r);let d=c.move("![");return d+=c.move(n.safe(t.alt,{before:d,after:"]",...c.current()})),d+=c.move("]("),l(),!t.url&&t.title||/[\0- \u007F]/.test(t.url)?(l=n.enter("destinationLiteral"),d+=c.move("<"),d+=c.move(n.safe(t.url,{before:d,after:">",...c.current()})),d+=c.move(">")):(l=n.enter("destinationRaw"),d+=c.move(n.safe(t.url,{before:d,after:t.title?" ":")",...c.current()}))),l(),t.title&&(l=n.enter(`title${i}`),d+=c.move(" "+s),d+=c.move(n.safe(t.title,{before:d,after:s,...c.current()})),d+=c.move(s),l()),d+=c.move(")"),a(),d}function aSe(){return"!"}MV.peek=oSe;function MV(t,e,n,r){const s=t.referenceType,i=n.enter("imageReference");let a=n.enter("label");const l=n.createTracker(r);let c=l.move("![");const d=n.safe(t.alt,{before:c,after:"]",...l.current()});c+=l.move(d+"]["),a();const h=n.stack;n.stack=[],a=n.enter("reference");const m=n.safe(n.associationId(t),{before:c,after:"]",...l.current()});return a(),n.stack=h,i(),s==="full"||!d||d!==m?c+=l.move(m+"]"):s==="shortcut"?c=c.slice(0,-1):c+=l.move("]"),c}function oSe(){return"!"}RV.peek=lSe;function RV(t,e,n){let r=t.value||"",s="`",i=-1;for(;new RegExp("(^|[^`])"+s+"([^`]|$)").test(r);)s+="`";for(/[^ \r\n]/.test(r)&&(/^[ \r\n]/.test(r)&&/[ \r\n]$/.test(r)||/^`|`$/.test(r))&&(r=" "+r+" ");++i\u007F]/.test(t.url))}PV.peek=cSe;function PV(t,e,n,r){const s=wN(n),i=s==='"'?"Quote":"Apostrophe",a=n.createTracker(r);let l,c;if(DV(t,n)){const h=n.stack;n.stack=[],l=n.enter("autolink");let m=a.move("<");return m+=a.move(n.containerPhrasing(t,{before:m,after:">",...a.current()})),m+=a.move(">"),l(),n.stack=h,m}l=n.enter("link"),c=n.enter("label");let d=a.move("[");return d+=a.move(n.containerPhrasing(t,{before:d,after:"](",...a.current()})),d+=a.move("]("),c(),!t.url&&t.title||/[\0- \u007F]/.test(t.url)?(c=n.enter("destinationLiteral"),d+=a.move("<"),d+=a.move(n.safe(t.url,{before:d,after:">",...a.current()})),d+=a.move(">")):(c=n.enter("destinationRaw"),d+=a.move(n.safe(t.url,{before:d,after:t.title?" ":")",...a.current()}))),c(),t.title&&(c=n.enter(`title${i}`),d+=a.move(" "+s),d+=a.move(n.safe(t.title,{before:d,after:s,...a.current()})),d+=a.move(s),c()),d+=a.move(")"),l(),d}function cSe(t,e,n){return DV(t,n)?"<":"["}zV.peek=uSe;function zV(t,e,n,r){const s=t.referenceType,i=n.enter("linkReference");let a=n.enter("label");const l=n.createTracker(r);let c=l.move("[");const d=n.containerPhrasing(t,{before:c,after:"]",...l.current()});c+=l.move(d+"]["),a();const h=n.stack;n.stack=[],a=n.enter("reference");const m=n.safe(n.associationId(t),{before:c,after:"]",...l.current()});return a(),n.stack=h,i(),s==="full"||!d||d!==m?c+=l.move(m+"]"):s==="shortcut"?c=c.slice(0,-1):c+=l.move("]"),c}function uSe(){return"["}function SN(t){const e=t.options.bullet||"*";if(e!=="*"&&e!=="+"&&e!=="-")throw new Error("Cannot serialize items with `"+e+"` for `options.bullet`, expected `*`, `+`, or `-`");return e}function dSe(t){const e=SN(t),n=t.options.bulletOther;if(!n)return e==="*"?"-":"*";if(n!=="*"&&n!=="+"&&n!=="-")throw new Error("Cannot serialize items with `"+n+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(n===e)throw new Error("Expected `bullet` (`"+e+"`) and `bulletOther` (`"+n+"`) to be different");return n}function hSe(t){const e=t.options.bulletOrdered||".";if(e!=="."&&e!==")")throw new Error("Cannot serialize items with `"+e+"` for `options.bulletOrdered`, expected `.` or `)`");return e}function IV(t){const e=t.options.rule||"*";if(e!=="*"&&e!=="-"&&e!=="_")throw new Error("Cannot serialize rules with `"+e+"` for `options.rule`, expected `*`, `-`, or `_`");return e}function fSe(t,e,n,r){const s=n.enter("list"),i=n.bulletCurrent;let a=t.ordered?hSe(n):SN(n);const l=t.ordered?a==="."?")":".":dSe(n);let c=e&&n.bulletLastUsed?a===n.bulletLastUsed:!1;if(!t.ordered){const h=t.children?t.children[0]:void 0;if((a==="*"||a==="-")&&h&&(!h.children||!h.children[0])&&n.stack[n.stack.length-1]==="list"&&n.stack[n.stack.length-2]==="listItem"&&n.stack[n.stack.length-3]==="list"&&n.stack[n.stack.length-4]==="listItem"&&n.indexStack[n.indexStack.length-1]===0&&n.indexStack[n.indexStack.length-2]===0&&n.indexStack[n.indexStack.length-3]===0&&(c=!0),IV(n)===a&&h){let m=-1;for(;++m-1?e.start:1)+(n.options.incrementListMarker===!1?0:e.children.indexOf(t))+i);let a=i.length+1;(s==="tab"||s==="mixed"&&(e&&e.type==="list"&&e.spread||t.spread))&&(a=Math.ceil(a/4)*4);const l=n.createTracker(r);l.move(i+" ".repeat(a-i.length)),l.shift(a);const c=n.enter("listItem"),d=n.indentLines(n.containerFlow(t,l.current()),h);return c(),d;function h(m,g,x){return g?(x?"":" ".repeat(a))+m:(x?i:i+" ".repeat(a-i.length))+m}}function gSe(t,e,n,r){const s=n.enter("paragraph"),i=n.enter("phrasing"),a=n.containerPhrasing(t,r);return i(),s(),a}const xSe=hg(["break","delete","emphasis","footnote","footnoteReference","image","imageReference","inlineCode","inlineMath","link","linkReference","mdxJsxTextElement","mdxTextExpression","strong","text","textDirective"]);function vSe(t,e,n,r){return(t.children.some(function(a){return xSe(a)})?n.containerPhrasing:n.containerFlow).call(n,t,r)}function ySe(t){const e=t.options.strong||"*";if(e!=="*"&&e!=="_")throw new Error("Cannot serialize strong with `"+e+"` for `options.strong`, expected `*`, or `_`");return e}LV.peek=bSe;function LV(t,e,n,r){const s=ySe(n),i=n.enter("strong"),a=n.createTracker(r),l=a.move(s+s);let c=a.move(n.containerPhrasing(t,{after:s,before:l,...a.current()}));const d=c.charCodeAt(0),h=wy(r.before.charCodeAt(r.before.length-1),d,s);h.inside&&(c=gp(d)+c.slice(1));const m=c.charCodeAt(c.length-1),g=wy(r.after.charCodeAt(0),m,s);g.inside&&(c=c.slice(0,-1)+gp(m));const x=a.move(s+s);return i(),n.attentionEncodeSurroundingInfo={after:g.outside,before:h.outside},l+c+x}function bSe(t,e,n){return n.options.strong||"*"}function wSe(t,e,n,r){return n.safe(t.value,r)}function SSe(t){const e=t.options.ruleRepetition||3;if(e<3)throw new Error("Cannot serialize rules with repetition `"+e+"` for `options.ruleRepetition`, expected `3` or more");return e}function kSe(t,e,n){const r=(IV(n)+(n.options.ruleSpaces?" ":"")).repeat(SSe(n));return n.options.ruleSpaces?r.slice(0,-1):r}const BV={blockquote:W4e,break:iR,code:Z4e,definition:eSe,emphasis:EV,hardBreak:iR,heading:sSe,html:_V,image:AV,imageReference:MV,inlineCode:RV,link:PV,linkReference:zV,list:fSe,listItem:pSe,paragraph:gSe,root:vSe,strong:LV,text:wSe,thematicBreak:kSe};function OSe(){return{enter:{table:jSe,tableData:aR,tableHeader:aR,tableRow:CSe},exit:{codeText:TSe,table:NSe,tableData:QS,tableHeader:QS,tableRow:QS}}}function jSe(t){const e=t._align;this.enter({type:"table",align:e.map(function(n){return n==="none"?null:n}),children:[]},t),this.data.inTable=!0}function NSe(t){this.exit(t),this.data.inTable=void 0}function CSe(t){this.enter({type:"tableRow",children:[]},t)}function QS(t){this.exit(t)}function aR(t){this.enter({type:"tableCell",children:[]},t)}function TSe(t){let e=this.resume();this.data.inTable&&(e=e.replace(/\\([\\|])/g,ESe));const n=this.stack[this.stack.length-1];n.type,n.value=e,this.exit(t)}function ESe(t,e){return e==="|"?e:t}function _Se(t){const e=t||{},n=e.tableCellPadding,r=e.tablePipeAlign,s=e.stringLength,i=n?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:` `,inConstruct:"tableCell"},{atBreak:!0,character:"|",after:"[ :-]"},{character:"|",inConstruct:"tableCell"},{atBreak:!0,character:":",after:"-"},{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{inlineCode:g,table:a,tableCell:c,tableRow:l}};function a(x,y,w,S){return d(h(x,w,S),x.align)}function l(x,y,w,S){const k=m(x,w,S),j=d([k]);return j.slice(0,j.indexOf(` -`))}function c(x,y,w,S){const k=w.enter("tableCell"),j=w.enter("phrasing"),N=w.containerPhrasing(x,{...S,before:i,after:i});return j(),k(),N}function d(x,y){return N4e(x,{align:y,alignDelimiters:r,padding:n,stringLength:s})}function h(x,y,w){const S=x.children;let k=-1;const j=[],N=y.enter("table");for(;++k0&&!n&&(t[t.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}const ESe={tokenize:ISe,partial:!0};function _Se(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:DSe,continuation:{tokenize:PSe},exit:zSe}},text:{91:{name:"gfmFootnoteCall",tokenize:RSe},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:MSe,resolveTo:ASe}}}}function MSe(t,e,n){const r=this;let s=r.events.length;const i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let a;for(;s--;){const c=r.events[s][1];if(c.type==="labelImage"){a=c;break}if(c.type==="gfmFootnoteCall"||c.type==="labelLink"||c.type==="label"||c.type==="image"||c.type==="link")break}return l;function l(c){if(!a||!a._balanced)return n(c);const d=Ga(r.sliceSerialize({start:a.end,end:r.now()}));return d.codePointAt(0)!==94||!i.includes(d.slice(1))?n(c):(t.enter("gfmFootnoteCallLabelMarker"),t.consume(c),t.exit("gfmFootnoteCallLabelMarker"),e(c))}}function ASe(t,e){let n=t.length;for(;n--;)if(t[n][1].type==="labelImage"&&t[n][0]==="enter"){t[n][1];break}t[n+1][1].type="data",t[n+3][1].type="gfmFootnoteCallLabelMarker";const r={type:"gfmFootnoteCall",start:Object.assign({},t[n+3][1].start),end:Object.assign({},t[t.length-1][1].end)},s={type:"gfmFootnoteCallMarker",start:Object.assign({},t[n+3][1].end),end:Object.assign({},t[n+3][1].end)};s.end.column++,s.end.offset++,s.end._bufferIndex++;const i={type:"gfmFootnoteCallString",start:Object.assign({},s.end),end:Object.assign({},t[t.length-1][1].start)},a={type:"chunkString",contentType:"string",start:Object.assign({},i.start),end:Object.assign({},i.end)},l=[t[n+1],t[n+2],["enter",r,e],t[n+3],t[n+4],["enter",s,e],["exit",s,e],["enter",i,e],["enter",a,e],["exit",a,e],["exit",i,e],t[t.length-2],t[t.length-1],["exit",r,e]];return t.splice(n,t.length-n+1,...l),t}function RSe(t,e,n){const r=this,s=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let i=0,a;return l;function l(m){return t.enter("gfmFootnoteCall"),t.enter("gfmFootnoteCallLabelMarker"),t.consume(m),t.exit("gfmFootnoteCallLabelMarker"),c}function c(m){return m!==94?n(m):(t.enter("gfmFootnoteCallMarker"),t.consume(m),t.exit("gfmFootnoteCallMarker"),t.enter("gfmFootnoteCallString"),t.enter("chunkString").contentType="string",d)}function d(m){if(i>999||m===93&&!a||m===null||m===91||or(m))return n(m);if(m===93){t.exit("chunkString");const g=t.exit("gfmFootnoteCallString");return s.includes(Ga(r.sliceSerialize(g)))?(t.enter("gfmFootnoteCallLabelMarker"),t.consume(m),t.exit("gfmFootnoteCallLabelMarker"),t.exit("gfmFootnoteCall"),e):n(m)}return or(m)||(a=!0),i++,t.consume(m),m===92?h:d}function h(m){return m===91||m===92||m===93?(t.consume(m),i++,d):d(m)}}function DSe(t,e,n){const r=this,s=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let i,a=0,l;return c;function c(y){return t.enter("gfmFootnoteDefinition")._container=!0,t.enter("gfmFootnoteDefinitionLabel"),t.enter("gfmFootnoteDefinitionLabelMarker"),t.consume(y),t.exit("gfmFootnoteDefinitionLabelMarker"),d}function d(y){return y===94?(t.enter("gfmFootnoteDefinitionMarker"),t.consume(y),t.exit("gfmFootnoteDefinitionMarker"),t.enter("gfmFootnoteDefinitionLabelString"),t.enter("chunkString").contentType="string",h):n(y)}function h(y){if(a>999||y===93&&!l||y===null||y===91||or(y))return n(y);if(y===93){t.exit("chunkString");const w=t.exit("gfmFootnoteDefinitionLabelString");return i=Ga(r.sliceSerialize(w)),t.enter("gfmFootnoteDefinitionLabelMarker"),t.consume(y),t.exit("gfmFootnoteDefinitionLabelMarker"),t.exit("gfmFootnoteDefinitionLabel"),g}return or(y)||(l=!0),a++,t.consume(y),y===92?m:h}function m(y){return y===91||y===92||y===93?(t.consume(y),a++,h):h(y)}function g(y){return y===58?(t.enter("definitionMarker"),t.consume(y),t.exit("definitionMarker"),s.includes(i)||s.push(i),on(t,x,"gfmFootnoteDefinitionWhitespace")):n(y)}function x(y){return e(y)}}function PSe(t,e,n){return t.check(cg,e,t.attempt(ESe,e,n))}function zSe(t){t.exit("gfmFootnoteDefinition")}function ISe(t,e,n){const r=this;return on(t,s,"gfmFootnoteDefinitionIndent",5);function s(i){const a=r.events[r.events.length-1];return a&&a[1].type==="gfmFootnoteDefinitionIndent"&&a[2].sliceSerialize(a[1],!0).length===4?e(i):n(i)}}function LSe(t){let n=(t||{}).singleTilde;const r={name:"strikethrough",tokenize:i,resolveAll:s};return n==null&&(n=!0),{text:{126:r},insideSpan:{null:[r]},attentionMarkers:{null:[126]}};function s(a,l){let c=-1;for(;++c1?c(y):(a.consume(y),m++,x);if(m<2&&!n)return c(y);const S=a.exit("strikethroughSequenceTemporary"),k=uf(y);return S._open=!k||k===2&&!!w,S._close=!w||w===2&&!!k,l(y)}}}class BSe{constructor(){this.map=[]}add(e,n,r){FSe(this,e,n,r)}consume(e){if(this.map.sort(function(i,a){return i[0]-a[0]}),this.map.length===0)return;let n=this.map.length;const r=[];for(;n>0;)n-=1,r.push(e.slice(this.map[n][0]+this.map[n][1]),this.map[n][2]),e.length=this.map[n][0];r.push(e.slice()),e.length=0;let s=r.pop();for(;s;){for(const i of s)e.push(i);s=r.pop()}this.map.length=0}}function FSe(t,e,n,r){let s=0;if(!(n===0&&r.length===0)){for(;s-1;){const z=r.events[H][1].type;if(z==="lineEnding"||z==="linePrefix")H--;else break}const U=H>-1?r.events[H][1].type:null,ee=U==="tableHead"||U==="tableRow"?_:c;return ee===_&&r.parser.lazy[r.now().line]?n(L):ee(L)}function c(L){return t.enter("tableHead"),t.enter("tableRow"),d(L)}function d(L){return L===124||(a=!0,i+=1),h(L)}function h(L){return L===null?n(L):bt(L)?i>1?(i=0,r.interrupt=!0,t.exit("tableRow"),t.enter("lineEnding"),t.consume(L),t.exit("lineEnding"),x):n(L):dn(L)?on(t,h,"whitespace")(L):(i+=1,a&&(a=!1,s+=1),L===124?(t.enter("tableCellDivider"),t.consume(L),t.exit("tableCellDivider"),a=!0,h):(t.enter("data"),m(L)))}function m(L){return L===null||L===124||or(L)?(t.exit("data"),h(L)):(t.consume(L),L===92?g:m)}function g(L){return L===92||L===124?(t.consume(L),m):m(L)}function x(L){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(L):(t.enter("tableDelimiterRow"),a=!1,dn(L)?on(t,y,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(L):y(L))}function y(L){return L===45||L===58?S(L):L===124?(a=!0,t.enter("tableCellDivider"),t.consume(L),t.exit("tableCellDivider"),w):E(L)}function w(L){return dn(L)?on(t,S,"whitespace")(L):S(L)}function S(L){return L===58?(i+=1,a=!0,t.enter("tableDelimiterMarker"),t.consume(L),t.exit("tableDelimiterMarker"),k):L===45?(i+=1,k(L)):L===null||bt(L)?T(L):E(L)}function k(L){return L===45?(t.enter("tableDelimiterFiller"),j(L)):E(L)}function j(L){return L===45?(t.consume(L),j):L===58?(a=!0,t.exit("tableDelimiterFiller"),t.enter("tableDelimiterMarker"),t.consume(L),t.exit("tableDelimiterMarker"),N):(t.exit("tableDelimiterFiller"),N(L))}function N(L){return dn(L)?on(t,T,"whitespace")(L):T(L)}function T(L){return L===124?y(L):L===null||bt(L)?!a||s!==i?E(L):(t.exit("tableDelimiterRow"),t.exit("tableHead"),e(L)):E(L)}function E(L){return n(L)}function _(L){return t.enter("tableRow"),M(L)}function M(L){return L===124?(t.enter("tableCellDivider"),t.consume(L),t.exit("tableCellDivider"),M):L===null||bt(L)?(t.exit("tableRow"),e(L)):dn(L)?on(t,M,"whitespace")(L):(t.enter("data"),I(L))}function I(L){return L===null||L===124||or(L)?(t.exit("data"),M(L)):(t.consume(L),L===92?P:I)}function P(L){return L===92||L===124?(t.consume(L),I):I(L)}}function QSe(t,e){let n=-1,r=!0,s=0,i=[0,0,0,0],a=[0,0,0,0],l=!1,c=0,d,h,m;const g=new BSe;for(;++nn[2]+1){const y=n[2]+1,w=n[3]-n[2]-1;t.add(y,w,[])}}t.add(n[3]+1,0,[["exit",m,e]])}return s!==void 0&&(i.end=Object.assign({},kh(e.events,s)),t.add(s,0,[["exit",i,e]]),i=void 0),i}function nR(t,e,n,r,s){const i=[],a=kh(e.events,n);s&&(s.end=Object.assign({},a),i.push(["exit",s,e])),r.end=Object.assign({},a),i.push(["exit",r,e]),t.add(n+1,0,i)}function kh(t,e){const n=t[e],r=n[0]==="enter"?"start":"end";return n[1][r]}const VSe={name:"tasklistCheck",tokenize:WSe};function USe(){return{text:{91:VSe}}}function WSe(t,e,n){const r=this;return s;function s(c){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(c):(t.enter("taskListCheck"),t.enter("taskListCheckMarker"),t.consume(c),t.exit("taskListCheckMarker"),i)}function i(c){return or(c)?(t.enter("taskListCheckValueUnchecked"),t.consume(c),t.exit("taskListCheckValueUnchecked"),a):c===88||c===120?(t.enter("taskListCheckValueChecked"),t.consume(c),t.exit("taskListCheckValueChecked"),a):n(c)}function a(c){return c===93?(t.enter("taskListCheckMarker"),t.consume(c),t.exit("taskListCheckMarker"),t.exit("taskListCheck"),l):n(c)}function l(c){return bt(c)?e(c):dn(c)?t.check({tokenize:GSe},e,n)(c):n(c)}}function GSe(t,e,n){return on(t,r,"whitespace");function r(s){return s===null?n(s):e(s)}}function XSe(t){return KQ([bSe(),_Se(),LSe(t),$Se(),USe()])}const YSe={};function KSe(t){const e=this,n=t||YSe,r=e.data(),s=r.micromarkExtensions||(r.micromarkExtensions=[]),i=r.fromMarkdownExtensions||(r.fromMarkdownExtensions=[]),a=r.toMarkdownExtensions||(r.toMarkdownExtensions=[]);s.push(XSe(n)),i.push(gSe()),a.push(xSe(n))}function ZSe(){return{enter:{mathFlow:t,mathFlowFenceMeta:e,mathText:i},exit:{mathFlow:s,mathFlowFence:r,mathFlowFenceMeta:n,mathFlowValue:l,mathText:a,mathTextData:l}};function t(c){const d={type:"element",tagName:"code",properties:{className:["language-math","math-display"]},children:[]};this.enter({type:"math",meta:null,value:"",data:{hName:"pre",hChildren:[d]}},c)}function e(){this.buffer()}function n(){const c=this.resume(),d=this.stack[this.stack.length-1];d.type,d.meta=c}function r(){this.data.mathFlowInside||(this.buffer(),this.data.mathFlowInside=!0)}function s(c){const d=this.resume().replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),h=this.stack[this.stack.length-1];h.type,this.exit(c),h.value=d;const m=h.data.hChildren[0];m.type,m.tagName,m.children.push({type:"text",value:d}),this.data.mathFlowInside=void 0}function i(c){this.enter({type:"inlineMath",value:"",data:{hName:"code",hProperties:{className:["language-math","math-inline"]},hChildren:[]}},c),this.buffer()}function a(c){const d=this.resume(),h=this.stack[this.stack.length-1];h.type,this.exit(c),h.value=d,h.data.hChildren.push({type:"text",value:d})}function l(c){this.config.enter.data.call(this,c),this.config.exit.data.call(this,c)}}function JSe(t){let e=(t||{}).singleDollarTextMath;return e==null&&(e=!0),r.peek=s,{unsafe:[{character:"\r",inConstruct:"mathFlowMeta"},{character:` -`,inConstruct:"mathFlowMeta"},{character:"$",after:e?void 0:"\\$",inConstruct:"phrasing"},{character:"$",inConstruct:"mathFlowMeta"},{atBreak:!0,character:"$",after:"\\$"}],handlers:{math:n,inlineMath:r}};function n(i,a,l,c){const d=i.value||"",h=l.createTracker(c),m="$".repeat(Math.max(SV(d,"$")+1,2)),g=l.enter("mathFlow");let x=h.move(m);if(i.meta){const y=l.enter("mathFlowMeta");x+=h.move(l.safe(i.meta,{after:` +`))}function c(x,y,w,S){const k=w.enter("tableCell"),j=w.enter("phrasing"),N=w.containerPhrasing(x,{...S,before:i,after:i});return j(),k(),N}function d(x,y){return V4e(x,{align:y,alignDelimiters:r,padding:n,stringLength:s})}function h(x,y,w){const S=x.children;let k=-1;const j=[],N=y.enter("table");for(;++k0&&!n&&(t[t.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}const GSe={tokenize:n5e,partial:!0};function XSe(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:JSe,continuation:{tokenize:e5e},exit:t5e}},text:{91:{name:"gfmFootnoteCall",tokenize:ZSe},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:YSe,resolveTo:KSe}}}}function YSe(t,e,n){const r=this;let s=r.events.length;const i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let a;for(;s--;){const c=r.events[s][1];if(c.type==="labelImage"){a=c;break}if(c.type==="gfmFootnoteCall"||c.type==="labelLink"||c.type==="label"||c.type==="image"||c.type==="link")break}return l;function l(c){if(!a||!a._balanced)return n(c);const d=Ga(r.sliceSerialize({start:a.end,end:r.now()}));return d.codePointAt(0)!==94||!i.includes(d.slice(1))?n(c):(t.enter("gfmFootnoteCallLabelMarker"),t.consume(c),t.exit("gfmFootnoteCallLabelMarker"),e(c))}}function KSe(t,e){let n=t.length;for(;n--;)if(t[n][1].type==="labelImage"&&t[n][0]==="enter"){t[n][1];break}t[n+1][1].type="data",t[n+3][1].type="gfmFootnoteCallLabelMarker";const r={type:"gfmFootnoteCall",start:Object.assign({},t[n+3][1].start),end:Object.assign({},t[t.length-1][1].end)},s={type:"gfmFootnoteCallMarker",start:Object.assign({},t[n+3][1].end),end:Object.assign({},t[n+3][1].end)};s.end.column++,s.end.offset++,s.end._bufferIndex++;const i={type:"gfmFootnoteCallString",start:Object.assign({},s.end),end:Object.assign({},t[t.length-1][1].start)},a={type:"chunkString",contentType:"string",start:Object.assign({},i.start),end:Object.assign({},i.end)},l=[t[n+1],t[n+2],["enter",r,e],t[n+3],t[n+4],["enter",s,e],["exit",s,e],["enter",i,e],["enter",a,e],["exit",a,e],["exit",i,e],t[t.length-2],t[t.length-1],["exit",r,e]];return t.splice(n,t.length-n+1,...l),t}function ZSe(t,e,n){const r=this,s=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let i=0,a;return l;function l(m){return t.enter("gfmFootnoteCall"),t.enter("gfmFootnoteCallLabelMarker"),t.consume(m),t.exit("gfmFootnoteCallLabelMarker"),c}function c(m){return m!==94?n(m):(t.enter("gfmFootnoteCallMarker"),t.consume(m),t.exit("gfmFootnoteCallMarker"),t.enter("gfmFootnoteCallString"),t.enter("chunkString").contentType="string",d)}function d(m){if(i>999||m===93&&!a||m===null||m===91||or(m))return n(m);if(m===93){t.exit("chunkString");const g=t.exit("gfmFootnoteCallString");return s.includes(Ga(r.sliceSerialize(g)))?(t.enter("gfmFootnoteCallLabelMarker"),t.consume(m),t.exit("gfmFootnoteCallLabelMarker"),t.exit("gfmFootnoteCall"),e):n(m)}return or(m)||(a=!0),i++,t.consume(m),m===92?h:d}function h(m){return m===91||m===92||m===93?(t.consume(m),i++,d):d(m)}}function JSe(t,e,n){const r=this,s=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let i,a=0,l;return c;function c(y){return t.enter("gfmFootnoteDefinition")._container=!0,t.enter("gfmFootnoteDefinitionLabel"),t.enter("gfmFootnoteDefinitionLabelMarker"),t.consume(y),t.exit("gfmFootnoteDefinitionLabelMarker"),d}function d(y){return y===94?(t.enter("gfmFootnoteDefinitionMarker"),t.consume(y),t.exit("gfmFootnoteDefinitionMarker"),t.enter("gfmFootnoteDefinitionLabelString"),t.enter("chunkString").contentType="string",h):n(y)}function h(y){if(a>999||y===93&&!l||y===null||y===91||or(y))return n(y);if(y===93){t.exit("chunkString");const w=t.exit("gfmFootnoteDefinitionLabelString");return i=Ga(r.sliceSerialize(w)),t.enter("gfmFootnoteDefinitionLabelMarker"),t.consume(y),t.exit("gfmFootnoteDefinitionLabelMarker"),t.exit("gfmFootnoteDefinitionLabel"),g}return or(y)||(l=!0),a++,t.consume(y),y===92?m:h}function m(y){return y===91||y===92||y===93?(t.consume(y),a++,h):h(y)}function g(y){return y===58?(t.enter("definitionMarker"),t.consume(y),t.exit("definitionMarker"),s.includes(i)||s.push(i),on(t,x,"gfmFootnoteDefinitionWhitespace")):n(y)}function x(y){return e(y)}}function e5e(t,e,n){return t.check(dg,e,t.attempt(GSe,e,n))}function t5e(t){t.exit("gfmFootnoteDefinition")}function n5e(t,e,n){const r=this;return on(t,s,"gfmFootnoteDefinitionIndent",5);function s(i){const a=r.events[r.events.length-1];return a&&a[1].type==="gfmFootnoteDefinitionIndent"&&a[2].sliceSerialize(a[1],!0).length===4?e(i):n(i)}}function r5e(t){let n=(t||{}).singleTilde;const r={name:"strikethrough",tokenize:i,resolveAll:s};return n==null&&(n=!0),{text:{126:r},insideSpan:{null:[r]},attentionMarkers:{null:[126]}};function s(a,l){let c=-1;for(;++c1?c(y):(a.consume(y),m++,x);if(m<2&&!n)return c(y);const S=a.exit("strikethroughSequenceTemporary"),k=hf(y);return S._open=!k||k===2&&!!w,S._close=!w||w===2&&!!k,l(y)}}}class s5e{constructor(){this.map=[]}add(e,n,r){i5e(this,e,n,r)}consume(e){if(this.map.sort(function(i,a){return i[0]-a[0]}),this.map.length===0)return;let n=this.map.length;const r=[];for(;n>0;)n-=1,r.push(e.slice(this.map[n][0]+this.map[n][1]),this.map[n][2]),e.length=this.map[n][0];r.push(e.slice()),e.length=0;let s=r.pop();for(;s;){for(const i of s)e.push(i);s=r.pop()}this.map.length=0}}function i5e(t,e,n,r){let s=0;if(!(n===0&&r.length===0)){for(;s-1;){const z=r.events[$][1].type;if(z==="lineEnding"||z==="linePrefix")$--;else break}const U=$>-1?r.events[$][1].type:null,te=U==="tableHead"||U==="tableRow"?_:c;return te===_&&r.parser.lazy[r.now().line]?n(B):te(B)}function c(B){return t.enter("tableHead"),t.enter("tableRow"),d(B)}function d(B){return B===124||(a=!0,i+=1),h(B)}function h(B){return B===null?n(B):bt(B)?i>1?(i=0,r.interrupt=!0,t.exit("tableRow"),t.enter("lineEnding"),t.consume(B),t.exit("lineEnding"),x):n(B):dn(B)?on(t,h,"whitespace")(B):(i+=1,a&&(a=!1,s+=1),B===124?(t.enter("tableCellDivider"),t.consume(B),t.exit("tableCellDivider"),a=!0,h):(t.enter("data"),m(B)))}function m(B){return B===null||B===124||or(B)?(t.exit("data"),h(B)):(t.consume(B),B===92?g:m)}function g(B){return B===92||B===124?(t.consume(B),m):m(B)}function x(B){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(B):(t.enter("tableDelimiterRow"),a=!1,dn(B)?on(t,y,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(B):y(B))}function y(B){return B===45||B===58?S(B):B===124?(a=!0,t.enter("tableCellDivider"),t.consume(B),t.exit("tableCellDivider"),w):E(B)}function w(B){return dn(B)?on(t,S,"whitespace")(B):S(B)}function S(B){return B===58?(i+=1,a=!0,t.enter("tableDelimiterMarker"),t.consume(B),t.exit("tableDelimiterMarker"),k):B===45?(i+=1,k(B)):B===null||bt(B)?T(B):E(B)}function k(B){return B===45?(t.enter("tableDelimiterFiller"),j(B)):E(B)}function j(B){return B===45?(t.consume(B),j):B===58?(a=!0,t.exit("tableDelimiterFiller"),t.enter("tableDelimiterMarker"),t.consume(B),t.exit("tableDelimiterMarker"),N):(t.exit("tableDelimiterFiller"),N(B))}function N(B){return dn(B)?on(t,T,"whitespace")(B):T(B)}function T(B){return B===124?y(B):B===null||bt(B)?!a||s!==i?E(B):(t.exit("tableDelimiterRow"),t.exit("tableHead"),e(B)):E(B)}function E(B){return n(B)}function _(B){return t.enter("tableRow"),A(B)}function A(B){return B===124?(t.enter("tableCellDivider"),t.consume(B),t.exit("tableCellDivider"),A):B===null||bt(B)?(t.exit("tableRow"),e(B)):dn(B)?on(t,A,"whitespace")(B):(t.enter("data"),L(B))}function L(B){return B===null||B===124||or(B)?(t.exit("data"),A(B)):(t.consume(B),B===92?P:L)}function P(B){return B===92||B===124?(t.consume(B),L):L(B)}}function c5e(t,e){let n=-1,r=!0,s=0,i=[0,0,0,0],a=[0,0,0,0],l=!1,c=0,d,h,m;const g=new s5e;for(;++nn[2]+1){const y=n[2]+1,w=n[3]-n[2]-1;t.add(y,w,[])}}t.add(n[3]+1,0,[["exit",m,e]])}return s!==void 0&&(i.end=Object.assign({},kh(e.events,s)),t.add(s,0,[["exit",i,e]]),i=void 0),i}function lR(t,e,n,r,s){const i=[],a=kh(e.events,n);s&&(s.end=Object.assign({},a),i.push(["exit",s,e])),r.end=Object.assign({},a),i.push(["exit",r,e]),t.add(n+1,0,i)}function kh(t,e){const n=t[e],r=n[0]==="enter"?"start":"end";return n[1][r]}const u5e={name:"tasklistCheck",tokenize:h5e};function d5e(){return{text:{91:u5e}}}function h5e(t,e,n){const r=this;return s;function s(c){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(c):(t.enter("taskListCheck"),t.enter("taskListCheckMarker"),t.consume(c),t.exit("taskListCheckMarker"),i)}function i(c){return or(c)?(t.enter("taskListCheckValueUnchecked"),t.consume(c),t.exit("taskListCheckValueUnchecked"),a):c===88||c===120?(t.enter("taskListCheckValueChecked"),t.consume(c),t.exit("taskListCheckValueChecked"),a):n(c)}function a(c){return c===93?(t.enter("taskListCheckMarker"),t.consume(c),t.exit("taskListCheckMarker"),t.exit("taskListCheck"),l):n(c)}function l(c){return bt(c)?e(c):dn(c)?t.check({tokenize:f5e},e,n)(c):n(c)}}function f5e(t,e,n){return on(t,r,"whitespace");function r(s){return s===null?n(s):e(s)}}function m5e(t){return rV([BSe(),XSe(),r5e(t),o5e(),d5e()])}const p5e={};function g5e(t){const e=this,n=t||p5e,r=e.data(),s=r.micromarkExtensions||(r.micromarkExtensions=[]),i=r.fromMarkdownExtensions||(r.fromMarkdownExtensions=[]),a=r.toMarkdownExtensions||(r.toMarkdownExtensions=[]);s.push(m5e(n)),i.push(PSe()),a.push(zSe(n))}function x5e(){return{enter:{mathFlow:t,mathFlowFenceMeta:e,mathText:i},exit:{mathFlow:s,mathFlowFence:r,mathFlowFenceMeta:n,mathFlowValue:l,mathText:a,mathTextData:l}};function t(c){const d={type:"element",tagName:"code",properties:{className:["language-math","math-display"]},children:[]};this.enter({type:"math",meta:null,value:"",data:{hName:"pre",hChildren:[d]}},c)}function e(){this.buffer()}function n(){const c=this.resume(),d=this.stack[this.stack.length-1];d.type,d.meta=c}function r(){this.data.mathFlowInside||(this.buffer(),this.data.mathFlowInside=!0)}function s(c){const d=this.resume().replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),h=this.stack[this.stack.length-1];h.type,this.exit(c),h.value=d;const m=h.data.hChildren[0];m.type,m.tagName,m.children.push({type:"text",value:d}),this.data.mathFlowInside=void 0}function i(c){this.enter({type:"inlineMath",value:"",data:{hName:"code",hProperties:{className:["language-math","math-inline"]},hChildren:[]}},c),this.buffer()}function a(c){const d=this.resume(),h=this.stack[this.stack.length-1];h.type,this.exit(c),h.value=d,h.data.hChildren.push({type:"text",value:d})}function l(c){this.config.enter.data.call(this,c),this.config.exit.data.call(this,c)}}function v5e(t){let e=(t||{}).singleDollarTextMath;return e==null&&(e=!0),r.peek=s,{unsafe:[{character:"\r",inConstruct:"mathFlowMeta"},{character:` +`,inConstruct:"mathFlowMeta"},{character:"$",after:e?void 0:"\\$",inConstruct:"phrasing"},{character:"$",inConstruct:"mathFlowMeta"},{atBreak:!0,character:"$",after:"\\$"}],handlers:{math:n,inlineMath:r}};function n(i,a,l,c){const d=i.value||"",h=l.createTracker(c),m="$".repeat(Math.max(TV(d,"$")+1,2)),g=l.enter("mathFlow");let x=h.move(m);if(i.meta){const y=l.enter("mathFlowMeta");x+=h.move(l.safe(i.meta,{after:` `,before:x,encode:["$"],...h.current()})),y()}return x+=h.move(` `),d&&(x+=h.move(d+` -`)),x+=h.move(m),g(),x}function r(i,a,l){let c=i.value||"",d=1;for(e||d++;new RegExp("(^|[^$])"+"\\$".repeat(d)+"([^$]|$)").test(c);)d++;const h="$".repeat(d);/[^ \r\n]/.test(c)&&(/^[ \r\n]/.test(c)&&/[ \r\n]$/.test(c)||/^\$|\$$/.test(c))&&(c=" "+c+" ");let m=-1;for(;++m15?d="…"+l.slice(s-15,s):d=l.slice(0,s);var h;i+15":">","<":"<",'"':""","'":"'"},d5e=/[&><"']/g;function h5e(t){return String(t).replace(d5e,e=>u5e[e])}var $V=function t(e){return e.type==="ordgroup"||e.type==="color"?e.body.length===1?t(e.body[0]):e:e.type==="font"?t(e.body):e},f5e=function(e){var n=$V(e);return n.type==="mathord"||n.type==="textord"||n.type==="atom"},m5e=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e},p5e=function(e){var n=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return n?n[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(n[1])?null:n[1].toLowerCase():"_relative"},$n={deflt:o5e,escape:h5e,hyphenate:c5e,getBaseElem:$V,isCharacterBox:f5e,protocolFromUrl:p5e},wv={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:t=>"#"+t},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(t,e)=>(e.push(t),e)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:t=>Math.max(0,t),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:t=>Math.max(0,t),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:t=>Math.max(0,t),cli:"-e, --max-expand ",cliProcessor:t=>t==="Infinity"?1/0:parseInt(t)},globalGroup:{type:"boolean",cli:!1}};function g5e(t){if(t.default)return t.default;var e=t.type,n=Array.isArray(e)?e[0]:e;if(typeof n!="string")return n.enum[0];switch(n){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}class bN{constructor(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{};for(var n in wv)if(wv.hasOwnProperty(n)){var r=wv[n];this[n]=e[n]!==void 0?r.processor?r.processor(e[n]):e[n]:g5e(r)}}reportNonstrict(e,n,r){var s=this.strict;if(typeof s=="function"&&(s=s(e,n,r)),!(!s||s==="ignore")){if(s===!0||s==="error")throw new $e("LaTeX-incompatible input and strict mode is set to 'error': "+(n+" ["+e+"]"),r);s==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(n+" ["+e+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+s+"': "+n+" ["+e+"]"))}}useStrictBehavior(e,n,r){var s=this.strict;if(typeof s=="function")try{s=s(e,n,r)}catch{s="error"}return!s||s==="ignore"?!1:s===!0||s==="error"?!0:s==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(n+" ["+e+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+s+"': "+n+" ["+e+"]")),!1)}isTrusted(e){if(e.url&&!e.protocol){var n=$n.protocolFromUrl(e.url);if(n==null)return!1;e.protocol=n}var r=typeof this.trust=="function"?this.trust(e):this.trust;return!!r}}class Nc{constructor(e,n,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=n,this.cramped=r}sup(){return bo[x5e[this.id]]}sub(){return bo[v5e[this.id]]}fracNum(){return bo[y5e[this.id]]}fracDen(){return bo[b5e[this.id]]}cramp(){return bo[w5e[this.id]]}text(){return bo[S5e[this.id]]}isTight(){return this.size>=2}}var wN=0,xy=1,$h=2,Il=3,mp=4,Sa=5,df=6,ei=7,bo=[new Nc(wN,0,!1),new Nc(xy,0,!0),new Nc($h,1,!1),new Nc(Il,1,!0),new Nc(mp,2,!1),new Nc(Sa,2,!0),new Nc(df,3,!1),new Nc(ei,3,!0)],x5e=[mp,Sa,mp,Sa,df,ei,df,ei],v5e=[Sa,Sa,Sa,Sa,ei,ei,ei,ei],y5e=[$h,Il,mp,Sa,df,ei,df,ei],b5e=[Il,Il,Sa,Sa,ei,ei,ei,ei],w5e=[xy,xy,Il,Il,Sa,Sa,ei,ei],S5e=[wN,xy,$h,Il,$h,Il,$h,Il],Et={DISPLAY:bo[wN],TEXT:bo[$h],SCRIPT:bo[mp],SCRIPTSCRIPT:bo[df]},AO=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];function k5e(t){for(var e=0;e=s[0]&&t<=s[1])return n.name}return null}var Sv=[];AO.forEach(t=>t.blocks.forEach(e=>Sv.push(...e)));function HV(t){for(var e=0;e=Sv[e]&&t<=Sv[e+1])return!0;return!1}var ch=80,O5e=function(e,n){return"M95,"+(622+e+n)+` +`)),x+=h.move(m),g(),x}function r(i,a,l){let c=i.value||"",d=1;for(e||d++;new RegExp("(^|[^$])"+"\\$".repeat(d)+"([^$]|$)").test(c);)d++;const h="$".repeat(d);/[^ \r\n]/.test(c)&&(/^[ \r\n]/.test(c)&&/[ \r\n]$/.test(c)||/^\$|\$$/.test(c))&&(c=" "+c+" ");let m=-1;for(;++m15?d="…"+l.slice(s-15,s):d=l.slice(0,s);var h;i+15":">","<":"<",'"':""","'":"'"},_5e=/[&><"']/g;function A5e(t){return String(t).replace(_5e,e=>E5e[e])}var GV=function t(e){return e.type==="ordgroup"||e.type==="color"?e.body.length===1?t(e.body[0]):e:e.type==="font"?t(e.body):e},M5e=function(e){var n=GV(e);return n.type==="mathord"||n.type==="textord"||n.type==="atom"},R5e=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e},D5e=function(e){var n=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return n?n[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(n[1])?null:n[1].toLowerCase():"_relative"},$n={deflt:N5e,escape:A5e,hyphenate:T5e,getBaseElem:GV,isCharacterBox:M5e,protocolFromUrl:D5e},kv={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:t=>"#"+t},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(t,e)=>(e.push(t),e)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:t=>Math.max(0,t),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:t=>Math.max(0,t),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:t=>Math.max(0,t),cli:"-e, --max-expand ",cliProcessor:t=>t==="Infinity"?1/0:parseInt(t)},globalGroup:{type:"boolean",cli:!1}};function P5e(t){if(t.default)return t.default;var e=t.type,n=Array.isArray(e)?e[0]:e;if(typeof n!="string")return n.enum[0];switch(n){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}class ON{constructor(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{};for(var n in kv)if(kv.hasOwnProperty(n)){var r=kv[n];this[n]=e[n]!==void 0?r.processor?r.processor(e[n]):e[n]:P5e(r)}}reportNonstrict(e,n,r){var s=this.strict;if(typeof s=="function"&&(s=s(e,n,r)),!(!s||s==="ignore")){if(s===!0||s==="error")throw new $e("LaTeX-incompatible input and strict mode is set to 'error': "+(n+" ["+e+"]"),r);s==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(n+" ["+e+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+s+"': "+n+" ["+e+"]"))}}useStrictBehavior(e,n,r){var s=this.strict;if(typeof s=="function")try{s=s(e,n,r)}catch{s="error"}return!s||s==="ignore"?!1:s===!0||s==="error"?!0:s==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(n+" ["+e+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+s+"': "+n+" ["+e+"]")),!1)}isTrusted(e){if(e.url&&!e.protocol){var n=$n.protocolFromUrl(e.url);if(n==null)return!1;e.protocol=n}var r=typeof this.trust=="function"?this.trust(e):this.trust;return!!r}}class Cc{constructor(e,n,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=n,this.cramped=r}sup(){return bo[z5e[this.id]]}sub(){return bo[I5e[this.id]]}fracNum(){return bo[L5e[this.id]]}fracDen(){return bo[B5e[this.id]]}cramp(){return bo[F5e[this.id]]}text(){return bo[q5e[this.id]]}isTight(){return this.size>=2}}var jN=0,Sy=1,$h=2,Ll=3,xp=4,Sa=5,ff=6,ti=7,bo=[new Cc(jN,0,!1),new Cc(Sy,0,!0),new Cc($h,1,!1),new Cc(Ll,1,!0),new Cc(xp,2,!1),new Cc(Sa,2,!0),new Cc(ff,3,!1),new Cc(ti,3,!0)],z5e=[xp,Sa,xp,Sa,ff,ti,ff,ti],I5e=[Sa,Sa,Sa,Sa,ti,ti,ti,ti],L5e=[$h,Ll,xp,Sa,ff,ti,ff,ti],B5e=[Ll,Ll,Sa,Sa,ti,ti,ti,ti],F5e=[Sy,Sy,Ll,Ll,Sa,Sa,ti,ti],q5e=[jN,Sy,$h,Ll,$h,Ll,$h,Ll],Et={DISPLAY:bo[jN],TEXT:bo[$h],SCRIPT:bo[xp],SCRIPTSCRIPT:bo[ff]},LO=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];function $5e(t){for(var e=0;e=s[0]&&t<=s[1])return n.name}return null}var Ov=[];LO.forEach(t=>t.blocks.forEach(e=>Ov.push(...e)));function XV(t){for(var e=0;e=Ov[e]&&t<=Ov[e+1])return!0;return!1}var ch=80,H5e=function(e,n){return"M95,"+(622+e+n)+` c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 @@ -134,7 +134,7 @@ c5.3,-9.3,12,-14,20,-14 H400000v`+(40+e)+`H845.2724 s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z -M`+(834+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},j5e=function(e,n){return"M263,"+(601+e+n)+`c0.7,0,18,39.7,52,119 +M`+(834+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},Q5e=function(e,n){return"M263,"+(601+e+n)+`c0.7,0,18,39.7,52,119 c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 c340,-704.7,510.7,-1060.3,512,-1067 l`+e/2.084+" -"+e+` @@ -144,7 +144,7 @@ s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5, c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z -M`+(1001+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},N5e=function(e,n){return"M983 "+(10+e+n)+` +M`+(1001+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},V5e=function(e,n){return"M983 "+(10+e+n)+` l`+e/3.13+" -"+e+` c4,-6.7,10,-10,18,-10 H400000v`+(40+e)+` H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 @@ -153,7 +153,7 @@ c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 c53.7,-170.3,84.5,-266.8,92.5,-289.5z -M`+(1001+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},C5e=function(e,n){return"M424,"+(2398+e+n)+` +M`+(1001+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},U5e=function(e,n){return"M424,"+(2398+e+n)+` c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 @@ -163,18 +163,18 @@ v`+(40+e)+`H1014.6 s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 c-2,6,-10,9,-24,9 c-8,0,-12,-0.7,-12,-2z M`+(1001+e)+" "+n+` -h400000v`+(40+e)+"h-400000z"},T5e=function(e,n){return"M473,"+(2713+e+n)+` +h400000v`+(40+e)+"h-400000z"},W5e=function(e,n){return"M473,"+(2713+e+n)+` c339.3,-1799.3,509.3,-2700,510,-2702 l`+e/5.298+" -"+e+` c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+e)+`H1017.7 s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, -606zM`+(1001+e)+" "+n+"h400000v"+(40+e)+"H1017.7z"},E5e=function(e){var n=e/2;return"M400000 "+e+" H0 L"+n+" 0 l65 45 L145 "+(e-80)+" H400000z"},_5e=function(e,n,r){var s=r-54-n-e;return"M702 "+(e+n)+"H400000"+(40+e)+` +606zM`+(1001+e)+" "+n+"h400000v"+(40+e)+"H1017.7z"},G5e=function(e){var n=e/2;return"M400000 "+e+" H0 L"+n+" 0 l65 45 L145 "+(e-80)+" H400000z"},X5e=function(e,n,r){var s=r-54-n-e;return"M702 "+(e+n)+"H400000"+(40+e)+` H742v`+s+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 -219 661 l218 661zM702 `+n+"H400000v"+(40+e)+"H742z"},M5e=function(e,n,r){n=1e3*n;var s="";switch(e){case"sqrtMain":s=O5e(n,ch);break;case"sqrtSize1":s=j5e(n,ch);break;case"sqrtSize2":s=N5e(n,ch);break;case"sqrtSize3":s=C5e(n,ch);break;case"sqrtSize4":s=T5e(n,ch);break;case"sqrtTall":s=_5e(n,ch,r)}return s},A5e=function(e,n){switch(e){case"⎜":return"M291 0 H417 V"+n+" H291z M291 0 H417 V"+n+" H291z";case"∣":return"M145 0 H188 V"+n+" H145z M145 0 H188 V"+n+" H145z";case"∥":return"M145 0 H188 V"+n+" H145z M145 0 H188 V"+n+" H145z"+("M367 0 H410 V"+n+" H367z M367 0 H410 V"+n+" H367z");case"⎟":return"M457 0 H583 V"+n+" H457z M457 0 H583 V"+n+" H457z";case"⎢":return"M319 0 H403 V"+n+" H319z M319 0 H403 V"+n+" H319z";case"⎥":return"M263 0 H347 V"+n+" H263z M263 0 H347 V"+n+" H263z";case"⎪":return"M384 0 H504 V"+n+" H384z M384 0 H504 V"+n+" H384z";case"⏐":return"M312 0 H355 V"+n+" H312z M312 0 H355 V"+n+" H312z";case"‖":return"M257 0 H300 V"+n+" H257z M257 0 H300 V"+n+" H257z"+("M478 0 H521 V"+n+" H478z M478 0 H521 V"+n+" H478z");default:return""}},sR={doubleleftarrow:`M262 157 +219 661 l218 661zM702 `+n+"H400000v"+(40+e)+"H742z"},Y5e=function(e,n,r){n=1e3*n;var s="";switch(e){case"sqrtMain":s=H5e(n,ch);break;case"sqrtSize1":s=Q5e(n,ch);break;case"sqrtSize2":s=V5e(n,ch);break;case"sqrtSize3":s=U5e(n,ch);break;case"sqrtSize4":s=W5e(n,ch);break;case"sqrtTall":s=X5e(n,ch,r)}return s},K5e=function(e,n){switch(e){case"⎜":return"M291 0 H417 V"+n+" H291z M291 0 H417 V"+n+" H291z";case"∣":return"M145 0 H188 V"+n+" H145z M145 0 H188 V"+n+" H145z";case"∥":return"M145 0 H188 V"+n+" H145z M145 0 H188 V"+n+" H145z"+("M367 0 H410 V"+n+" H367z M367 0 H410 V"+n+" H367z");case"⎟":return"M457 0 H583 V"+n+" H457z M457 0 H583 V"+n+" H457z";case"⎢":return"M319 0 H403 V"+n+" H319z M319 0 H403 V"+n+" H319z";case"⎥":return"M263 0 H347 V"+n+" H263z M263 0 H347 V"+n+" H263z";case"⎪":return"M384 0 H504 V"+n+" H384z M384 0 H504 V"+n+" H384z";case"⏐":return"M312 0 H355 V"+n+" H312z M312 0 H355 V"+n+" H312z";case"‖":return"M257 0 H300 V"+n+" H257z M257 0 H300 V"+n+" H257z"+("M478 0 H521 V"+n+" H478z M478 0 H521 V"+n+" H478z");default:return""}},uR={doubleleftarrow:`M262 157 l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 @@ -349,7 +349,7 @@ M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z` c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, -231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z -M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},R5e=function(e,n){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+n+` v1759 h347 v-84 +M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},Z5e=function(e,n){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+n+` v1759 h347 v-84 H403z M403 1759 V0 H319 V1759 v`+n+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+n+` v1759 H0 v84 H347z M347 1759 V0 H263 V1759 v`+n+" v1759 h84z";case"vert":return"M145 15 v585 v"+n+` v585 c2.667,10,9.667,15,21,15 c10,0,16.667,-5,20,-15 v-585 v`+-n+` v-585 c-2.667,-10,-9.667,-15,-21,-15 @@ -377,21 +377,21 @@ c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6 c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 l0,-`+(n+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, --470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}};class hg{constructor(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return this.classes.includes(e)}toNode(){for(var e=document.createDocumentFragment(),n=0;nn.toText();return this.children.map(e).join("")}}var _o={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},E1={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},iR={Å:"A",Ð:"D",Þ:"o",å:"a",ð:"d",þ:"o",А:"A",Б:"B",В:"B",Г:"F",Д:"A",Е:"E",Ж:"K",З:"3",И:"N",Й:"N",К:"K",Л:"N",М:"M",Н:"H",О:"O",П:"N",Р:"P",С:"C",Т:"T",У:"y",Ф:"O",Х:"X",Ц:"U",Ч:"h",Ш:"W",Щ:"W",Ъ:"B",Ы:"X",Ь:"B",Э:"3",Ю:"X",Я:"R",а:"a",б:"b",в:"a",г:"r",д:"y",е:"e",ж:"m",з:"e",и:"n",й:"n",к:"n",л:"n",м:"m",н:"n",о:"o",п:"n",р:"p",с:"c",т:"o",у:"y",ф:"b",х:"x",ц:"n",ч:"n",ш:"w",щ:"w",ъ:"a",ы:"m",ь:"a",э:"e",ю:"m",я:"r"};function D5e(t,e){_o[t]=e}function SN(t,e,n){if(!_o[e])throw new Error("Font metrics not found for font: "+e+".");var r=t.charCodeAt(0),s=_o[e][r];if(!s&&t[0]in iR&&(r=iR[t[0]].charCodeAt(0),s=_o[e][r]),!s&&n==="text"&&HV(r)&&(s=_o[e][77]),s)return{depth:s[0],height:s[1],italic:s[2],skew:s[3],width:s[4]}}var BS={};function P5e(t){var e;if(t>=5?e=0:t>=3?e=1:e=2,!BS[e]){var n=BS[e]={cssEmPerMu:E1.quad[e]/18};for(var r in E1)E1.hasOwnProperty(r)&&(n[r]=E1[r][e])}return BS[e]}var z5e=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],aR=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],oR=function(e,n){return n.size<2?e:z5e[e-1][n.size-1]};class Cl{constructor(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||Cl.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=aR[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var n={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);return new Cl(n)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:oR(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:aR[e-1]})}havingBaseStyle(e){e=e||this.style.text();var n=oR(Cl.BASESIZE,e);return this.size===n&&this.textSize===Cl.BASESIZE&&this.style===e?this:this.extend({style:e,size:n})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==Cl.BASESIZE?["sizing","reset-size"+this.size,"size"+Cl.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=P5e(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}Cl.BASESIZE=6;var RO={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},I5e={ex:!0,em:!0,mu:!0},QV=function(e){return typeof e!="string"&&(e=e.unit),e in RO||e in I5e||e==="ex"},Rr=function(e,n){var r;if(e.unit in RO)r=RO[e.unit]/n.fontMetrics().ptPerEm/n.sizeMultiplier;else if(e.unit==="mu")r=n.fontMetrics().cssEmPerMu;else{var s;if(n.style.isTight()?s=n.havingStyle(n.style.text()):s=n,e.unit==="ex")r=s.fontMetrics().xHeight;else if(e.unit==="em")r=s.fontMetrics().quad;else throw new $e("Invalid unit: '"+e.unit+"'");s!==n&&(r*=s.sizeMultiplier/n.sizeMultiplier)}return Math.min(e.number*r,n.maxSize)},Xe=function(e){return+e.toFixed(4)+"em"},eu=function(e){return e.filter(n=>n).join(" ")},VV=function(e,n,r){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},n){n.style.isTight()&&this.classes.push("mtight");var s=n.getColor();s&&(this.style.color=s)}},UV=function(e){var n=document.createElement(e);n.className=eu(this.classes);for(var r in this.style)this.style.hasOwnProperty(r)&&(n.style[r]=this.style[r]);for(var s in this.attributes)this.attributes.hasOwnProperty(s)&&n.setAttribute(s,this.attributes[s]);for(var i=0;i/=\x00-\x1f]/,WV=function(e){var n="<"+e;this.classes.length&&(n+=' class="'+$n.escape(eu(this.classes))+'"');var r="";for(var s in this.style)this.style.hasOwnProperty(s)&&(r+=$n.hyphenate(s)+":"+this.style[s]+";");r&&(n+=' style="'+$n.escape(r)+'"');for(var i in this.attributes)if(this.attributes.hasOwnProperty(i)){if(L5e.test(i))throw new $e("Invalid attribute name '"+i+"'");n+=" "+i+'="'+$n.escape(this.attributes[i])+'"'}n+=">";for(var a=0;a",n};class fg{constructor(e,n,r,s){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,VV.call(this,e,r,s),this.children=n||[]}setAttribute(e,n){this.attributes[e]=n}hasClass(e){return this.classes.includes(e)}toNode(){return UV.call(this,"span")}toMarkup(){return WV.call(this,"span")}}class kN{constructor(e,n,r,s){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,VV.call(this,n,s),this.children=r||[],this.setAttribute("href",e)}setAttribute(e,n){this.attributes[e]=n}hasClass(e){return this.classes.includes(e)}toNode(){return UV.call(this,"a")}toMarkup(){return WV.call(this,"a")}}class B5e{constructor(e,n,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=n,this.src=e,this.classes=["mord"],this.style=r}hasClass(e){return this.classes.includes(e)}toNode(){var e=document.createElement("img");e.src=this.src,e.alt=this.alt,e.className="mord";for(var n in this.style)this.style.hasOwnProperty(n)&&(e.style[n]=this.style[n]);return e}toMarkup(){var e=''+$n.escape(this.alt)+'0&&(n=document.createElement("span"),n.style.marginRight=Xe(this.italic)),this.classes.length>0&&(n=n||document.createElement("span"),n.className=eu(this.classes));for(var r in this.style)this.style.hasOwnProperty(r)&&(n=n||document.createElement("span"),n.style[r]=this.style[r]);return n?(n.appendChild(e),n):e}toMarkup(){var e=!1,n="0&&(r+="margin-right:"+this.italic+"em;");for(var s in this.style)this.style.hasOwnProperty(s)&&(r+=$n.hyphenate(s)+":"+this.style[s]+";");r&&(e=!0,n+=' style="'+$n.escape(r)+'"');var i=$n.escape(this.text);return e?(n+=">",n+=i,n+="",n):i}}class Hl{constructor(e,n){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=n||{}}toNode(){var e="http://www.w3.org/2000/svg",n=document.createElementNS(e,"svg");for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&n.setAttribute(r,this.attributes[r]);for(var s=0;s':''}}class DO{constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e="http://www.w3.org/2000/svg",n=document.createElementNS(e,"line");for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&n.setAttribute(r,this.attributes[r]);return n}toMarkup(){var e=" but got "+String(t)+".")}var $5e={bin:1,close:1,inner:1,open:1,punct:1,rel:1},H5e={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},dr={math:{},text:{}};function A(t,e,n,r,s,i){dr[t][s]={font:e,group:n,replace:r},i&&r&&(dr[t][r]=dr[t][s])}var D="math",Be="text",$="main",le="ams",jr="accent-token",lt="bin",ii="close",Bf="inner",Tt="mathord",as="op-token",Ji="open",Pb="punct",ce="rel",Kl="spacing",me="textord";A(D,$,ce,"≡","\\equiv",!0);A(D,$,ce,"≺","\\prec",!0);A(D,$,ce,"≻","\\succ",!0);A(D,$,ce,"∼","\\sim",!0);A(D,$,ce,"⊥","\\perp");A(D,$,ce,"⪯","\\preceq",!0);A(D,$,ce,"⪰","\\succeq",!0);A(D,$,ce,"≃","\\simeq",!0);A(D,$,ce,"∣","\\mid",!0);A(D,$,ce,"≪","\\ll",!0);A(D,$,ce,"≫","\\gg",!0);A(D,$,ce,"≍","\\asymp",!0);A(D,$,ce,"∥","\\parallel");A(D,$,ce,"⋈","\\bowtie",!0);A(D,$,ce,"⌣","\\smile",!0);A(D,$,ce,"⊑","\\sqsubseteq",!0);A(D,$,ce,"⊒","\\sqsupseteq",!0);A(D,$,ce,"≐","\\doteq",!0);A(D,$,ce,"⌢","\\frown",!0);A(D,$,ce,"∋","\\ni",!0);A(D,$,ce,"∝","\\propto",!0);A(D,$,ce,"⊢","\\vdash",!0);A(D,$,ce,"⊣","\\dashv",!0);A(D,$,ce,"∋","\\owns");A(D,$,Pb,".","\\ldotp");A(D,$,Pb,"⋅","\\cdotp");A(D,$,me,"#","\\#");A(Be,$,me,"#","\\#");A(D,$,me,"&","\\&");A(Be,$,me,"&","\\&");A(D,$,me,"ℵ","\\aleph",!0);A(D,$,me,"∀","\\forall",!0);A(D,$,me,"ℏ","\\hbar",!0);A(D,$,me,"∃","\\exists",!0);A(D,$,me,"∇","\\nabla",!0);A(D,$,me,"♭","\\flat",!0);A(D,$,me,"ℓ","\\ell",!0);A(D,$,me,"♮","\\natural",!0);A(D,$,me,"♣","\\clubsuit",!0);A(D,$,me,"℘","\\wp",!0);A(D,$,me,"♯","\\sharp",!0);A(D,$,me,"♢","\\diamondsuit",!0);A(D,$,me,"ℜ","\\Re",!0);A(D,$,me,"♡","\\heartsuit",!0);A(D,$,me,"ℑ","\\Im",!0);A(D,$,me,"♠","\\spadesuit",!0);A(D,$,me,"§","\\S",!0);A(Be,$,me,"§","\\S");A(D,$,me,"¶","\\P",!0);A(Be,$,me,"¶","\\P");A(D,$,me,"†","\\dag");A(Be,$,me,"†","\\dag");A(Be,$,me,"†","\\textdagger");A(D,$,me,"‡","\\ddag");A(Be,$,me,"‡","\\ddag");A(Be,$,me,"‡","\\textdaggerdbl");A(D,$,ii,"⎱","\\rmoustache",!0);A(D,$,Ji,"⎰","\\lmoustache",!0);A(D,$,ii,"⟯","\\rgroup",!0);A(D,$,Ji,"⟮","\\lgroup",!0);A(D,$,lt,"∓","\\mp",!0);A(D,$,lt,"⊖","\\ominus",!0);A(D,$,lt,"⊎","\\uplus",!0);A(D,$,lt,"⊓","\\sqcap",!0);A(D,$,lt,"∗","\\ast");A(D,$,lt,"⊔","\\sqcup",!0);A(D,$,lt,"◯","\\bigcirc",!0);A(D,$,lt,"∙","\\bullet",!0);A(D,$,lt,"‡","\\ddagger");A(D,$,lt,"≀","\\wr",!0);A(D,$,lt,"⨿","\\amalg");A(D,$,lt,"&","\\And");A(D,$,ce,"⟵","\\longleftarrow",!0);A(D,$,ce,"⇐","\\Leftarrow",!0);A(D,$,ce,"⟸","\\Longleftarrow",!0);A(D,$,ce,"⟶","\\longrightarrow",!0);A(D,$,ce,"⇒","\\Rightarrow",!0);A(D,$,ce,"⟹","\\Longrightarrow",!0);A(D,$,ce,"↔","\\leftrightarrow",!0);A(D,$,ce,"⟷","\\longleftrightarrow",!0);A(D,$,ce,"⇔","\\Leftrightarrow",!0);A(D,$,ce,"⟺","\\Longleftrightarrow",!0);A(D,$,ce,"↦","\\mapsto",!0);A(D,$,ce,"⟼","\\longmapsto",!0);A(D,$,ce,"↗","\\nearrow",!0);A(D,$,ce,"↩","\\hookleftarrow",!0);A(D,$,ce,"↪","\\hookrightarrow",!0);A(D,$,ce,"↘","\\searrow",!0);A(D,$,ce,"↼","\\leftharpoonup",!0);A(D,$,ce,"⇀","\\rightharpoonup",!0);A(D,$,ce,"↙","\\swarrow",!0);A(D,$,ce,"↽","\\leftharpoondown",!0);A(D,$,ce,"⇁","\\rightharpoondown",!0);A(D,$,ce,"↖","\\nwarrow",!0);A(D,$,ce,"⇌","\\rightleftharpoons",!0);A(D,le,ce,"≮","\\nless",!0);A(D,le,ce,"","\\@nleqslant");A(D,le,ce,"","\\@nleqq");A(D,le,ce,"⪇","\\lneq",!0);A(D,le,ce,"≨","\\lneqq",!0);A(D,le,ce,"","\\@lvertneqq");A(D,le,ce,"⋦","\\lnsim",!0);A(D,le,ce,"⪉","\\lnapprox",!0);A(D,le,ce,"⊀","\\nprec",!0);A(D,le,ce,"⋠","\\npreceq",!0);A(D,le,ce,"⋨","\\precnsim",!0);A(D,le,ce,"⪹","\\precnapprox",!0);A(D,le,ce,"≁","\\nsim",!0);A(D,le,ce,"","\\@nshortmid");A(D,le,ce,"∤","\\nmid",!0);A(D,le,ce,"⊬","\\nvdash",!0);A(D,le,ce,"⊭","\\nvDash",!0);A(D,le,ce,"⋪","\\ntriangleleft");A(D,le,ce,"⋬","\\ntrianglelefteq",!0);A(D,le,ce,"⊊","\\subsetneq",!0);A(D,le,ce,"","\\@varsubsetneq");A(D,le,ce,"⫋","\\subsetneqq",!0);A(D,le,ce,"","\\@varsubsetneqq");A(D,le,ce,"≯","\\ngtr",!0);A(D,le,ce,"","\\@ngeqslant");A(D,le,ce,"","\\@ngeqq");A(D,le,ce,"⪈","\\gneq",!0);A(D,le,ce,"≩","\\gneqq",!0);A(D,le,ce,"","\\@gvertneqq");A(D,le,ce,"⋧","\\gnsim",!0);A(D,le,ce,"⪊","\\gnapprox",!0);A(D,le,ce,"⊁","\\nsucc",!0);A(D,le,ce,"⋡","\\nsucceq",!0);A(D,le,ce,"⋩","\\succnsim",!0);A(D,le,ce,"⪺","\\succnapprox",!0);A(D,le,ce,"≆","\\ncong",!0);A(D,le,ce,"","\\@nshortparallel");A(D,le,ce,"∦","\\nparallel",!0);A(D,le,ce,"⊯","\\nVDash",!0);A(D,le,ce,"⋫","\\ntriangleright");A(D,le,ce,"⋭","\\ntrianglerighteq",!0);A(D,le,ce,"","\\@nsupseteqq");A(D,le,ce,"⊋","\\supsetneq",!0);A(D,le,ce,"","\\@varsupsetneq");A(D,le,ce,"⫌","\\supsetneqq",!0);A(D,le,ce,"","\\@varsupsetneqq");A(D,le,ce,"⊮","\\nVdash",!0);A(D,le,ce,"⪵","\\precneqq",!0);A(D,le,ce,"⪶","\\succneqq",!0);A(D,le,ce,"","\\@nsubseteqq");A(D,le,lt,"⊴","\\unlhd");A(D,le,lt,"⊵","\\unrhd");A(D,le,ce,"↚","\\nleftarrow",!0);A(D,le,ce,"↛","\\nrightarrow",!0);A(D,le,ce,"⇍","\\nLeftarrow",!0);A(D,le,ce,"⇏","\\nRightarrow",!0);A(D,le,ce,"↮","\\nleftrightarrow",!0);A(D,le,ce,"⇎","\\nLeftrightarrow",!0);A(D,le,ce,"△","\\vartriangle");A(D,le,me,"ℏ","\\hslash");A(D,le,me,"▽","\\triangledown");A(D,le,me,"◊","\\lozenge");A(D,le,me,"Ⓢ","\\circledS");A(D,le,me,"®","\\circledR");A(Be,le,me,"®","\\circledR");A(D,le,me,"∡","\\measuredangle",!0);A(D,le,me,"∄","\\nexists");A(D,le,me,"℧","\\mho");A(D,le,me,"Ⅎ","\\Finv",!0);A(D,le,me,"⅁","\\Game",!0);A(D,le,me,"‵","\\backprime");A(D,le,me,"▲","\\blacktriangle");A(D,le,me,"▼","\\blacktriangledown");A(D,le,me,"■","\\blacksquare");A(D,le,me,"⧫","\\blacklozenge");A(D,le,me,"★","\\bigstar");A(D,le,me,"∢","\\sphericalangle",!0);A(D,le,me,"∁","\\complement",!0);A(D,le,me,"ð","\\eth",!0);A(Be,$,me,"ð","ð");A(D,le,me,"╱","\\diagup");A(D,le,me,"╲","\\diagdown");A(D,le,me,"□","\\square");A(D,le,me,"□","\\Box");A(D,le,me,"◊","\\Diamond");A(D,le,me,"¥","\\yen",!0);A(Be,le,me,"¥","\\yen",!0);A(D,le,me,"✓","\\checkmark",!0);A(Be,le,me,"✓","\\checkmark");A(D,le,me,"ℶ","\\beth",!0);A(D,le,me,"ℸ","\\daleth",!0);A(D,le,me,"ℷ","\\gimel",!0);A(D,le,me,"ϝ","\\digamma",!0);A(D,le,me,"ϰ","\\varkappa");A(D,le,Ji,"┌","\\@ulcorner",!0);A(D,le,ii,"┐","\\@urcorner",!0);A(D,le,Ji,"└","\\@llcorner",!0);A(D,le,ii,"┘","\\@lrcorner",!0);A(D,le,ce,"≦","\\leqq",!0);A(D,le,ce,"⩽","\\leqslant",!0);A(D,le,ce,"⪕","\\eqslantless",!0);A(D,le,ce,"≲","\\lesssim",!0);A(D,le,ce,"⪅","\\lessapprox",!0);A(D,le,ce,"≊","\\approxeq",!0);A(D,le,lt,"⋖","\\lessdot");A(D,le,ce,"⋘","\\lll",!0);A(D,le,ce,"≶","\\lessgtr",!0);A(D,le,ce,"⋚","\\lesseqgtr",!0);A(D,le,ce,"⪋","\\lesseqqgtr",!0);A(D,le,ce,"≑","\\doteqdot");A(D,le,ce,"≓","\\risingdotseq",!0);A(D,le,ce,"≒","\\fallingdotseq",!0);A(D,le,ce,"∽","\\backsim",!0);A(D,le,ce,"⋍","\\backsimeq",!0);A(D,le,ce,"⫅","\\subseteqq",!0);A(D,le,ce,"⋐","\\Subset",!0);A(D,le,ce,"⊏","\\sqsubset",!0);A(D,le,ce,"≼","\\preccurlyeq",!0);A(D,le,ce,"⋞","\\curlyeqprec",!0);A(D,le,ce,"≾","\\precsim",!0);A(D,le,ce,"⪷","\\precapprox",!0);A(D,le,ce,"⊲","\\vartriangleleft");A(D,le,ce,"⊴","\\trianglelefteq");A(D,le,ce,"⊨","\\vDash",!0);A(D,le,ce,"⊪","\\Vvdash",!0);A(D,le,ce,"⌣","\\smallsmile");A(D,le,ce,"⌢","\\smallfrown");A(D,le,ce,"≏","\\bumpeq",!0);A(D,le,ce,"≎","\\Bumpeq",!0);A(D,le,ce,"≧","\\geqq",!0);A(D,le,ce,"⩾","\\geqslant",!0);A(D,le,ce,"⪖","\\eqslantgtr",!0);A(D,le,ce,"≳","\\gtrsim",!0);A(D,le,ce,"⪆","\\gtrapprox",!0);A(D,le,lt,"⋗","\\gtrdot");A(D,le,ce,"⋙","\\ggg",!0);A(D,le,ce,"≷","\\gtrless",!0);A(D,le,ce,"⋛","\\gtreqless",!0);A(D,le,ce,"⪌","\\gtreqqless",!0);A(D,le,ce,"≖","\\eqcirc",!0);A(D,le,ce,"≗","\\circeq",!0);A(D,le,ce,"≜","\\triangleq",!0);A(D,le,ce,"∼","\\thicksim");A(D,le,ce,"≈","\\thickapprox");A(D,le,ce,"⫆","\\supseteqq",!0);A(D,le,ce,"⋑","\\Supset",!0);A(D,le,ce,"⊐","\\sqsupset",!0);A(D,le,ce,"≽","\\succcurlyeq",!0);A(D,le,ce,"⋟","\\curlyeqsucc",!0);A(D,le,ce,"≿","\\succsim",!0);A(D,le,ce,"⪸","\\succapprox",!0);A(D,le,ce,"⊳","\\vartriangleright");A(D,le,ce,"⊵","\\trianglerighteq");A(D,le,ce,"⊩","\\Vdash",!0);A(D,le,ce,"∣","\\shortmid");A(D,le,ce,"∥","\\shortparallel");A(D,le,ce,"≬","\\between",!0);A(D,le,ce,"⋔","\\pitchfork",!0);A(D,le,ce,"∝","\\varpropto");A(D,le,ce,"◀","\\blacktriangleleft");A(D,le,ce,"∴","\\therefore",!0);A(D,le,ce,"∍","\\backepsilon");A(D,le,ce,"▶","\\blacktriangleright");A(D,le,ce,"∵","\\because",!0);A(D,le,ce,"⋘","\\llless");A(D,le,ce,"⋙","\\gggtr");A(D,le,lt,"⊲","\\lhd");A(D,le,lt,"⊳","\\rhd");A(D,le,ce,"≂","\\eqsim",!0);A(D,$,ce,"⋈","\\Join");A(D,le,ce,"≑","\\Doteq",!0);A(D,le,lt,"∔","\\dotplus",!0);A(D,le,lt,"∖","\\smallsetminus");A(D,le,lt,"⋒","\\Cap",!0);A(D,le,lt,"⋓","\\Cup",!0);A(D,le,lt,"⩞","\\doublebarwedge",!0);A(D,le,lt,"⊟","\\boxminus",!0);A(D,le,lt,"⊞","\\boxplus",!0);A(D,le,lt,"⋇","\\divideontimes",!0);A(D,le,lt,"⋉","\\ltimes",!0);A(D,le,lt,"⋊","\\rtimes",!0);A(D,le,lt,"⋋","\\leftthreetimes",!0);A(D,le,lt,"⋌","\\rightthreetimes",!0);A(D,le,lt,"⋏","\\curlywedge",!0);A(D,le,lt,"⋎","\\curlyvee",!0);A(D,le,lt,"⊝","\\circleddash",!0);A(D,le,lt,"⊛","\\circledast",!0);A(D,le,lt,"⋅","\\centerdot");A(D,le,lt,"⊺","\\intercal",!0);A(D,le,lt,"⋒","\\doublecap");A(D,le,lt,"⋓","\\doublecup");A(D,le,lt,"⊠","\\boxtimes",!0);A(D,le,ce,"⇢","\\dashrightarrow",!0);A(D,le,ce,"⇠","\\dashleftarrow",!0);A(D,le,ce,"⇇","\\leftleftarrows",!0);A(D,le,ce,"⇆","\\leftrightarrows",!0);A(D,le,ce,"⇚","\\Lleftarrow",!0);A(D,le,ce,"↞","\\twoheadleftarrow",!0);A(D,le,ce,"↢","\\leftarrowtail",!0);A(D,le,ce,"↫","\\looparrowleft",!0);A(D,le,ce,"⇋","\\leftrightharpoons",!0);A(D,le,ce,"↶","\\curvearrowleft",!0);A(D,le,ce,"↺","\\circlearrowleft",!0);A(D,le,ce,"↰","\\Lsh",!0);A(D,le,ce,"⇈","\\upuparrows",!0);A(D,le,ce,"↿","\\upharpoonleft",!0);A(D,le,ce,"⇃","\\downharpoonleft",!0);A(D,$,ce,"⊶","\\origof",!0);A(D,$,ce,"⊷","\\imageof",!0);A(D,le,ce,"⊸","\\multimap",!0);A(D,le,ce,"↭","\\leftrightsquigarrow",!0);A(D,le,ce,"⇉","\\rightrightarrows",!0);A(D,le,ce,"⇄","\\rightleftarrows",!0);A(D,le,ce,"↠","\\twoheadrightarrow",!0);A(D,le,ce,"↣","\\rightarrowtail",!0);A(D,le,ce,"↬","\\looparrowright",!0);A(D,le,ce,"↷","\\curvearrowright",!0);A(D,le,ce,"↻","\\circlearrowright",!0);A(D,le,ce,"↱","\\Rsh",!0);A(D,le,ce,"⇊","\\downdownarrows",!0);A(D,le,ce,"↾","\\upharpoonright",!0);A(D,le,ce,"⇂","\\downharpoonright",!0);A(D,le,ce,"⇝","\\rightsquigarrow",!0);A(D,le,ce,"⇝","\\leadsto");A(D,le,ce,"⇛","\\Rrightarrow",!0);A(D,le,ce,"↾","\\restriction");A(D,$,me,"‘","`");A(D,$,me,"$","\\$");A(Be,$,me,"$","\\$");A(Be,$,me,"$","\\textdollar");A(D,$,me,"%","\\%");A(Be,$,me,"%","\\%");A(D,$,me,"_","\\_");A(Be,$,me,"_","\\_");A(Be,$,me,"_","\\textunderscore");A(D,$,me,"∠","\\angle",!0);A(D,$,me,"∞","\\infty",!0);A(D,$,me,"′","\\prime");A(D,$,me,"△","\\triangle");A(D,$,me,"Γ","\\Gamma",!0);A(D,$,me,"Δ","\\Delta",!0);A(D,$,me,"Θ","\\Theta",!0);A(D,$,me,"Λ","\\Lambda",!0);A(D,$,me,"Ξ","\\Xi",!0);A(D,$,me,"Π","\\Pi",!0);A(D,$,me,"Σ","\\Sigma",!0);A(D,$,me,"Υ","\\Upsilon",!0);A(D,$,me,"Φ","\\Phi",!0);A(D,$,me,"Ψ","\\Psi",!0);A(D,$,me,"Ω","\\Omega",!0);A(D,$,me,"A","Α");A(D,$,me,"B","Β");A(D,$,me,"E","Ε");A(D,$,me,"Z","Ζ");A(D,$,me,"H","Η");A(D,$,me,"I","Ι");A(D,$,me,"K","Κ");A(D,$,me,"M","Μ");A(D,$,me,"N","Ν");A(D,$,me,"O","Ο");A(D,$,me,"P","Ρ");A(D,$,me,"T","Τ");A(D,$,me,"X","Χ");A(D,$,me,"¬","\\neg",!0);A(D,$,me,"¬","\\lnot");A(D,$,me,"⊤","\\top");A(D,$,me,"⊥","\\bot");A(D,$,me,"∅","\\emptyset");A(D,le,me,"∅","\\varnothing");A(D,$,Tt,"α","\\alpha",!0);A(D,$,Tt,"β","\\beta",!0);A(D,$,Tt,"γ","\\gamma",!0);A(D,$,Tt,"δ","\\delta",!0);A(D,$,Tt,"ϵ","\\epsilon",!0);A(D,$,Tt,"ζ","\\zeta",!0);A(D,$,Tt,"η","\\eta",!0);A(D,$,Tt,"θ","\\theta",!0);A(D,$,Tt,"ι","\\iota",!0);A(D,$,Tt,"κ","\\kappa",!0);A(D,$,Tt,"λ","\\lambda",!0);A(D,$,Tt,"μ","\\mu",!0);A(D,$,Tt,"ν","\\nu",!0);A(D,$,Tt,"ξ","\\xi",!0);A(D,$,Tt,"ο","\\omicron",!0);A(D,$,Tt,"π","\\pi",!0);A(D,$,Tt,"ρ","\\rho",!0);A(D,$,Tt,"σ","\\sigma",!0);A(D,$,Tt,"τ","\\tau",!0);A(D,$,Tt,"υ","\\upsilon",!0);A(D,$,Tt,"ϕ","\\phi",!0);A(D,$,Tt,"χ","\\chi",!0);A(D,$,Tt,"ψ","\\psi",!0);A(D,$,Tt,"ω","\\omega",!0);A(D,$,Tt,"ε","\\varepsilon",!0);A(D,$,Tt,"ϑ","\\vartheta",!0);A(D,$,Tt,"ϖ","\\varpi",!0);A(D,$,Tt,"ϱ","\\varrho",!0);A(D,$,Tt,"ς","\\varsigma",!0);A(D,$,Tt,"φ","\\varphi",!0);A(D,$,lt,"∗","*",!0);A(D,$,lt,"+","+");A(D,$,lt,"−","-",!0);A(D,$,lt,"⋅","\\cdot",!0);A(D,$,lt,"∘","\\circ",!0);A(D,$,lt,"÷","\\div",!0);A(D,$,lt,"±","\\pm",!0);A(D,$,lt,"×","\\times",!0);A(D,$,lt,"∩","\\cap",!0);A(D,$,lt,"∪","\\cup",!0);A(D,$,lt,"∖","\\setminus",!0);A(D,$,lt,"∧","\\land");A(D,$,lt,"∨","\\lor");A(D,$,lt,"∧","\\wedge",!0);A(D,$,lt,"∨","\\vee",!0);A(D,$,me,"√","\\surd");A(D,$,Ji,"⟨","\\langle",!0);A(D,$,Ji,"∣","\\lvert");A(D,$,Ji,"∥","\\lVert");A(D,$,ii,"?","?");A(D,$,ii,"!","!");A(D,$,ii,"⟩","\\rangle",!0);A(D,$,ii,"∣","\\rvert");A(D,$,ii,"∥","\\rVert");A(D,$,ce,"=","=");A(D,$,ce,":",":");A(D,$,ce,"≈","\\approx",!0);A(D,$,ce,"≅","\\cong",!0);A(D,$,ce,"≥","\\ge");A(D,$,ce,"≥","\\geq",!0);A(D,$,ce,"←","\\gets");A(D,$,ce,">","\\gt",!0);A(D,$,ce,"∈","\\in",!0);A(D,$,ce,"","\\@not");A(D,$,ce,"⊂","\\subset",!0);A(D,$,ce,"⊃","\\supset",!0);A(D,$,ce,"⊆","\\subseteq",!0);A(D,$,ce,"⊇","\\supseteq",!0);A(D,le,ce,"⊈","\\nsubseteq",!0);A(D,le,ce,"⊉","\\nsupseteq",!0);A(D,$,ce,"⊨","\\models");A(D,$,ce,"←","\\leftarrow",!0);A(D,$,ce,"≤","\\le");A(D,$,ce,"≤","\\leq",!0);A(D,$,ce,"<","\\lt",!0);A(D,$,ce,"→","\\rightarrow",!0);A(D,$,ce,"→","\\to");A(D,le,ce,"≱","\\ngeq",!0);A(D,le,ce,"≰","\\nleq",!0);A(D,$,Kl," ","\\ ");A(D,$,Kl," ","\\space");A(D,$,Kl," ","\\nobreakspace");A(Be,$,Kl," ","\\ ");A(Be,$,Kl," "," ");A(Be,$,Kl," ","\\space");A(Be,$,Kl," ","\\nobreakspace");A(D,$,Kl,null,"\\nobreak");A(D,$,Kl,null,"\\allowbreak");A(D,$,Pb,",",",");A(D,$,Pb,";",";");A(D,le,lt,"⊼","\\barwedge",!0);A(D,le,lt,"⊻","\\veebar",!0);A(D,$,lt,"⊙","\\odot",!0);A(D,$,lt,"⊕","\\oplus",!0);A(D,$,lt,"⊗","\\otimes",!0);A(D,$,me,"∂","\\partial",!0);A(D,$,lt,"⊘","\\oslash",!0);A(D,le,lt,"⊚","\\circledcirc",!0);A(D,le,lt,"⊡","\\boxdot",!0);A(D,$,lt,"△","\\bigtriangleup");A(D,$,lt,"▽","\\bigtriangledown");A(D,$,lt,"†","\\dagger");A(D,$,lt,"⋄","\\diamond");A(D,$,lt,"⋆","\\star");A(D,$,lt,"◃","\\triangleleft");A(D,$,lt,"▹","\\triangleright");A(D,$,Ji,"{","\\{");A(Be,$,me,"{","\\{");A(Be,$,me,"{","\\textbraceleft");A(D,$,ii,"}","\\}");A(Be,$,me,"}","\\}");A(Be,$,me,"}","\\textbraceright");A(D,$,Ji,"{","\\lbrace");A(D,$,ii,"}","\\rbrace");A(D,$,Ji,"[","\\lbrack",!0);A(Be,$,me,"[","\\lbrack",!0);A(D,$,ii,"]","\\rbrack",!0);A(Be,$,me,"]","\\rbrack",!0);A(D,$,Ji,"(","\\lparen",!0);A(D,$,ii,")","\\rparen",!0);A(Be,$,me,"<","\\textless",!0);A(Be,$,me,">","\\textgreater",!0);A(D,$,Ji,"⌊","\\lfloor",!0);A(D,$,ii,"⌋","\\rfloor",!0);A(D,$,Ji,"⌈","\\lceil",!0);A(D,$,ii,"⌉","\\rceil",!0);A(D,$,me,"\\","\\backslash");A(D,$,me,"∣","|");A(D,$,me,"∣","\\vert");A(Be,$,me,"|","\\textbar",!0);A(D,$,me,"∥","\\|");A(D,$,me,"∥","\\Vert");A(Be,$,me,"∥","\\textbardbl");A(Be,$,me,"~","\\textasciitilde");A(Be,$,me,"\\","\\textbackslash");A(Be,$,me,"^","\\textasciicircum");A(D,$,ce,"↑","\\uparrow",!0);A(D,$,ce,"⇑","\\Uparrow",!0);A(D,$,ce,"↓","\\downarrow",!0);A(D,$,ce,"⇓","\\Downarrow",!0);A(D,$,ce,"↕","\\updownarrow",!0);A(D,$,ce,"⇕","\\Updownarrow",!0);A(D,$,as,"∐","\\coprod");A(D,$,as,"⋁","\\bigvee");A(D,$,as,"⋀","\\bigwedge");A(D,$,as,"⨄","\\biguplus");A(D,$,as,"⋂","\\bigcap");A(D,$,as,"⋃","\\bigcup");A(D,$,as,"∫","\\int");A(D,$,as,"∫","\\intop");A(D,$,as,"∬","\\iint");A(D,$,as,"∭","\\iiint");A(D,$,as,"∏","\\prod");A(D,$,as,"∑","\\sum");A(D,$,as,"⨂","\\bigotimes");A(D,$,as,"⨁","\\bigoplus");A(D,$,as,"⨀","\\bigodot");A(D,$,as,"∮","\\oint");A(D,$,as,"∯","\\oiint");A(D,$,as,"∰","\\oiiint");A(D,$,as,"⨆","\\bigsqcup");A(D,$,as,"∫","\\smallint");A(Be,$,Bf,"…","\\textellipsis");A(D,$,Bf,"…","\\mathellipsis");A(Be,$,Bf,"…","\\ldots",!0);A(D,$,Bf,"…","\\ldots",!0);A(D,$,Bf,"⋯","\\@cdots",!0);A(D,$,Bf,"⋱","\\ddots",!0);A(D,$,me,"⋮","\\varvdots");A(Be,$,me,"⋮","\\varvdots");A(D,$,jr,"ˊ","\\acute");A(D,$,jr,"ˋ","\\grave");A(D,$,jr,"¨","\\ddot");A(D,$,jr,"~","\\tilde");A(D,$,jr,"ˉ","\\bar");A(D,$,jr,"˘","\\breve");A(D,$,jr,"ˇ","\\check");A(D,$,jr,"^","\\hat");A(D,$,jr,"⃗","\\vec");A(D,$,jr,"˙","\\dot");A(D,$,jr,"˚","\\mathring");A(D,$,Tt,"","\\@imath");A(D,$,Tt,"","\\@jmath");A(D,$,me,"ı","ı");A(D,$,me,"ȷ","ȷ");A(Be,$,me,"ı","\\i",!0);A(Be,$,me,"ȷ","\\j",!0);A(Be,$,me,"ß","\\ss",!0);A(Be,$,me,"æ","\\ae",!0);A(Be,$,me,"œ","\\oe",!0);A(Be,$,me,"ø","\\o",!0);A(Be,$,me,"Æ","\\AE",!0);A(Be,$,me,"Œ","\\OE",!0);A(Be,$,me,"Ø","\\O",!0);A(Be,$,jr,"ˊ","\\'");A(Be,$,jr,"ˋ","\\`");A(Be,$,jr,"ˆ","\\^");A(Be,$,jr,"˜","\\~");A(Be,$,jr,"ˉ","\\=");A(Be,$,jr,"˘","\\u");A(Be,$,jr,"˙","\\.");A(Be,$,jr,"¸","\\c");A(Be,$,jr,"˚","\\r");A(Be,$,jr,"ˇ","\\v");A(Be,$,jr,"¨",'\\"');A(Be,$,jr,"˝","\\H");A(Be,$,jr,"◯","\\textcircled");var GV={"--":!0,"---":!0,"``":!0,"''":!0};A(Be,$,me,"–","--",!0);A(Be,$,me,"–","\\textendash");A(Be,$,me,"—","---",!0);A(Be,$,me,"—","\\textemdash");A(Be,$,me,"‘","`",!0);A(Be,$,me,"‘","\\textquoteleft");A(Be,$,me,"’","'",!0);A(Be,$,me,"’","\\textquoteright");A(Be,$,me,"“","``",!0);A(Be,$,me,"“","\\textquotedblleft");A(Be,$,me,"”","''",!0);A(Be,$,me,"”","\\textquotedblright");A(D,$,me,"°","\\degree",!0);A(Be,$,me,"°","\\degree");A(Be,$,me,"°","\\textdegree",!0);A(D,$,me,"£","\\pounds");A(D,$,me,"£","\\mathsterling",!0);A(Be,$,me,"£","\\pounds");A(Be,$,me,"£","\\textsterling",!0);A(D,le,me,"✠","\\maltese");A(Be,le,me,"✠","\\maltese");var cR='0123456789/@."';for(var FS=0;FS0)return $a(i,d,s,n,a.concat(h));if(c){var m,g;if(c==="boldsymbol"){var x=U5e(i,s,n,a,r);m=x.fontName,g=[x.fontClass]}else l?(m=KV[c].fontName,g=[c]):(m=R1(c,n.fontWeight,n.fontShape),g=[c,n.fontWeight,n.fontShape]);if(zb(i,m,s).metrics)return $a(i,m,s,n,a.concat(g));if(GV.hasOwnProperty(i)&&m.slice(0,10)==="Typewriter"){for(var y=[],w=0;w{if(eu(t.classes)!==eu(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;if(t.classes.length===1){var n=t.classes[0];if(n==="mbin"||n==="mord")return!1}for(var r in t.style)if(t.style.hasOwnProperty(r)&&t.style[r]!==e.style[r])return!1;for(var s in e.style)if(e.style.hasOwnProperty(s)&&t.style[s]!==e.style[s])return!1;return!0},X5e=t=>{for(var e=0;en&&(n=a.height),a.depth>r&&(r=a.depth),a.maxFontSize>s&&(s=a.maxFontSize)}e.height=n,e.depth=r,e.maxFontSize=s},mi=function(e,n,r,s){var i=new fg(e,n,r,s);return ON(i),i},XV=(t,e,n,r)=>new fg(t,e,n,r),Y5e=function(e,n,r){var s=mi([e],[],n);return s.height=Math.max(r||n.fontMetrics().defaultRuleThickness,n.minRuleThickness),s.style.borderBottomWidth=Xe(s.height),s.maxFontSize=1,s},K5e=function(e,n,r,s){var i=new kN(e,n,r,s);return ON(i),i},YV=function(e){var n=new hg(e);return ON(n),n},Z5e=function(e,n){return e instanceof hg?mi([],[e],n):e},J5e=function(e){if(e.positionType==="individualShift"){for(var n=e.children,r=[n[0]],s=-n[0].shift-n[0].elem.depth,i=s,a=1;a{var n=mi(["mspace"],[],e),r=Rr(t,e);return n.style.marginRight=Xe(r),n},R1=function(e,n,r){var s="";switch(e){case"amsrm":s="AMS";break;case"textrm":s="Main";break;case"textsf":s="SansSerif";break;case"texttt":s="Typewriter";break;default:s=e}var i;return n==="textbf"&&r==="textit"?i="BoldItalic":n==="textbf"?i="Bold":n==="textit"?i="Italic":i="Regular",s+"-"+i},KV={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},ZV={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},n3e=function(e,n){var[r,s,i]=ZV[e],a=new tu(r),l=new Hl([a],{width:Xe(s),height:Xe(i),style:"width:"+Xe(s),viewBox:"0 0 "+1e3*s+" "+1e3*i,preserveAspectRatio:"xMinYMin"}),c=XV(["overlay"],[l],n);return c.height=i,c.style.height=Xe(i),c.style.width=Xe(s),c},be={fontMap:KV,makeSymbol:$a,mathsym:V5e,makeSpan:mi,makeSvgSpan:XV,makeLineSpan:Y5e,makeAnchor:K5e,makeFragment:YV,wrapFragment:Z5e,makeVList:e3e,makeOrd:W5e,makeGlue:t3e,staticSvg:n3e,svgData:ZV,tryCombineChars:X5e},_r={number:3,unit:"mu"},zu={number:4,unit:"mu"},vl={number:5,unit:"mu"},r3e={mord:{mop:_r,mbin:zu,mrel:vl,minner:_r},mop:{mord:_r,mop:_r,mrel:vl,minner:_r},mbin:{mord:zu,mop:zu,mopen:zu,minner:zu},mrel:{mord:vl,mop:vl,mopen:vl,minner:vl},mopen:{},mclose:{mop:_r,mbin:zu,mrel:vl,minner:_r},mpunct:{mord:_r,mop:_r,mrel:vl,mopen:_r,mclose:_r,mpunct:_r,minner:_r},minner:{mord:_r,mop:_r,mbin:zu,mrel:vl,mopen:_r,mpunct:_r,minner:_r}},s3e={mord:{mop:_r},mop:{mord:_r,mop:_r},mbin:{},mrel:{},mopen:{},mclose:{mop:_r},mpunct:{},minner:{mop:_r}},JV={},yy={},by={};function tt(t){for(var{type:e,names:n,props:r,handler:s,htmlBuilder:i,mathmlBuilder:a}=t,l={type:e,numArgs:r.numArgs,argTypes:r.argTypes,allowedInArgument:!!r.allowedInArgument,allowedInText:!!r.allowedInText,allowedInMath:r.allowedInMath===void 0?!0:r.allowedInMath,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,primitive:!!r.primitive,handler:s},c=0;c{var S=w.classes[0],k=y.classes[0];S==="mbin"&&a3e.includes(k)?w.classes[0]="mord":k==="mbin"&&i3e.includes(S)&&(y.classes[0]="mord")},{node:m},g,x),mR(i,(y,w)=>{var S=zO(w),k=zO(y),j=S&&k?y.hasClass("mtight")?s3e[S][k]:r3e[S][k]:null;if(j)return be.makeGlue(j,d)},{node:m},g,x),i},mR=function t(e,n,r,s,i){s&&e.push(s);for(var a=0;ag=>{e.splice(m+1,0,g),a++})(a)}s&&e.pop()},eU=function(e){return e instanceof hg||e instanceof kN||e instanceof fg&&e.hasClass("enclosing")?e:null},c3e=function t(e,n){var r=eU(e);if(r){var s=r.children;if(s.length){if(n==="right")return t(s[s.length-1],"right");if(n==="left")return t(s[0],"left")}}return e},zO=function(e,n){return e?(n&&(e=c3e(e,n)),l3e[e.classes[0]]||null):null},pp=function(e,n){var r=["nulldelimiter"].concat(e.baseSizingClasses());return Ql(n.concat(r))},Pn=function(e,n,r){if(!e)return Ql();if(yy[e.type]){var s=yy[e.type](e,n);if(r&&n.size!==r.size){s=Ql(n.sizingClasses(r),[s],n);var i=n.sizeMultiplier/r.sizeMultiplier;s.height*=i,s.depth*=i}return s}else throw new $e("Got group of unknown type: '"+e.type+"'")};function D1(t,e){var n=Ql(["base"],t,e),r=Ql(["strut"]);return r.style.height=Xe(n.height+n.depth),n.depth&&(r.style.verticalAlign=Xe(-n.depth)),n.children.unshift(r),n}function IO(t,e){var n=null;t.length===1&&t[0].type==="tag"&&(n=t[0].tag,t=t[0].body);var r=hs(t,e,"root"),s;r.length===2&&r[1].hasClass("tag")&&(s=r.pop());for(var i=[],a=[],l=0;l0&&(i.push(D1(a,e)),a=[]),i.push(r[l]));a.length>0&&i.push(D1(a,e));var d;n?(d=D1(hs(n,e,!0)),d.classes=["tag"],i.push(d)):s&&i.push(s);var h=Ql(["katex-html"],i);if(h.setAttribute("aria-hidden","true"),d){var m=d.children[0];m.style.height=Xe(h.height+h.depth),h.depth&&(m.style.verticalAlign=Xe(-h.depth))}return h}function tU(t){return new hg(t)}class Qi{constructor(e,n,r){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=n||[],this.classes=r||[]}setAttribute(e,n){this.attributes[e]=n}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&e.setAttribute(n,this.attributes[n]);this.classes.length>0&&(e.className=eu(this.classes));for(var r=0;r0&&(e+=' class ="'+$n.escape(eu(this.classes))+'"'),e+=">";for(var r=0;r",e}toText(){return this.children.map(e=>e.toText()).join("")}}class Mo{constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return $n.escape(this.toText())}toText(){return this.text}}class u3e{constructor(e){this.width=void 0,this.character=void 0,this.width=e,e>=.05555&&e<=.05556?this.character=" ":e>=.1666&&e<=.1667?this.character=" ":e>=.2222&&e<=.2223?this.character=" ":e>=.2777&&e<=.2778?this.character="  ":e>=-.05556&&e<=-.05555?this.character=" ⁣":e>=-.1667&&e<=-.1666?this.character=" ⁣":e>=-.2223&&e<=-.2222?this.character=" ⁣":e>=-.2778&&e<=-.2777?this.character=" ⁣":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",Xe(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}}var qe={MathNode:Qi,TextNode:Mo,SpaceNode:u3e,newDocumentFragment:tU},Aa=function(e,n,r){return dr[n][e]&&dr[n][e].replace&&e.charCodeAt(0)!==55349&&!(GV.hasOwnProperty(e)&&r&&(r.fontFamily&&r.fontFamily.slice(4,6)==="tt"||r.font&&r.font.slice(4,6)==="tt"))&&(e=dr[n][e].replace),new qe.TextNode(e)},jN=function(e){return e.length===1?e[0]:new qe.MathNode("mrow",e)},NN=function(e,n){if(n.fontFamily==="texttt")return"monospace";if(n.fontFamily==="textsf")return n.fontShape==="textit"&&n.fontWeight==="textbf"?"sans-serif-bold-italic":n.fontShape==="textit"?"sans-serif-italic":n.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(n.fontShape==="textit"&&n.fontWeight==="textbf")return"bold-italic";if(n.fontShape==="textit")return"italic";if(n.fontWeight==="textbf")return"bold";var r=n.font;if(!r||r==="mathnormal")return null;var s=e.mode;if(r==="mathit")return"italic";if(r==="boldsymbol")return e.type==="textord"?"bold":"bold-italic";if(r==="mathbf")return"bold";if(r==="mathbb")return"double-struck";if(r==="mathsfit")return"sans-serif-italic";if(r==="mathfrak")return"fraktur";if(r==="mathscr"||r==="mathcal")return"script";if(r==="mathsf")return"sans-serif";if(r==="mathtt")return"monospace";var i=e.text;if(["\\imath","\\jmath"].includes(i))return null;dr[s][i]&&dr[s][i].replace&&(i=dr[s][i].replace);var a=be.fontMap[r].fontName;return SN(i,a,s)?be.fontMap[r].variant:null};function QS(t){if(!t)return!1;if(t.type==="mi"&&t.children.length===1){var e=t.children[0];return e instanceof Mo&&e.text==="."}else if(t.type==="mo"&&t.children.length===1&&t.getAttribute("separator")==="true"&&t.getAttribute("lspace")==="0em"&&t.getAttribute("rspace")==="0em"){var n=t.children[0];return n instanceof Mo&&n.text===","}else return!1}var _i=function(e,n,r){if(e.length===1){var s=lr(e[0],n);return r&&s instanceof Qi&&s.type==="mo"&&(s.setAttribute("lspace","0em"),s.setAttribute("rspace","0em")),[s]}for(var i=[],a,l=0;l=1&&(a.type==="mn"||QS(a))){var d=c.children[0];d instanceof Qi&&d.type==="mn"&&(d.children=[...a.children,...d.children],i.pop())}else if(a.type==="mi"&&a.children.length===1){var h=a.children[0];if(h instanceof Mo&&h.text==="̸"&&(c.type==="mo"||c.type==="mi"||c.type==="mn")){var m=c.children[0];m instanceof Mo&&m.text.length>0&&(m.text=m.text.slice(0,1)+"̸"+m.text.slice(1),i.pop())}}}i.push(c),a=c}return i},nu=function(e,n,r){return jN(_i(e,n,r))},lr=function(e,n){if(!e)return new qe.MathNode("mrow");if(by[e.type]){var r=by[e.type](e,n);return r}else throw new $e("Got group of unknown type: '"+e.type+"'")};function pR(t,e,n,r,s){var i=_i(t,n),a;i.length===1&&i[0]instanceof Qi&&["mrow","mtable"].includes(i[0].type)?a=i[0]:a=new qe.MathNode("mrow",i);var l=new qe.MathNode("annotation",[new qe.TextNode(e)]);l.setAttribute("encoding","application/x-tex");var c=new qe.MathNode("semantics",[a,l]),d=new qe.MathNode("math",[c]);d.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),r&&d.setAttribute("display","block");var h=s?"katex":"katex-mathml";return be.makeSpan([h],[d])}var nU=function(e){return new Cl({style:e.displayMode?Et.DISPLAY:Et.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},rU=function(e,n){if(n.displayMode){var r=["katex-display"];n.leqno&&r.push("leqno"),n.fleqn&&r.push("fleqn"),e=be.makeSpan(r,[e])}return e},d3e=function(e,n,r){var s=nU(r),i;if(r.output==="mathml")return pR(e,n,s,r.displayMode,!0);if(r.output==="html"){var a=IO(e,s);i=be.makeSpan(["katex"],[a])}else{var l=pR(e,n,s,r.displayMode,!1),c=IO(e,s);i=be.makeSpan(["katex"],[l,c])}return rU(i,r)},h3e=function(e,n,r){var s=nU(r),i=IO(e,s),a=be.makeSpan(["katex"],[i]);return rU(a,r)},f3e={widehat:"^",widecheck:"ˇ",widetilde:"~",utilde:"~",overleftarrow:"←",underleftarrow:"←",xleftarrow:"←",overrightarrow:"→",underrightarrow:"→",xrightarrow:"→",underbrace:"⏟",overbrace:"⏞",overgroup:"⏠",undergroup:"⏡",overleftrightarrow:"↔",underleftrightarrow:"↔",xleftrightarrow:"↔",Overrightarrow:"⇒",xRightarrow:"⇒",overleftharpoon:"↼",xleftharpoonup:"↼",overrightharpoon:"⇀",xrightharpoonup:"⇀",xLeftarrow:"⇐",xLeftrightarrow:"⇔",xhookleftarrow:"↩",xhookrightarrow:"↪",xmapsto:"↦",xrightharpoondown:"⇁",xleftharpoondown:"↽",xrightleftharpoons:"⇌",xleftrightharpoons:"⇋",xtwoheadleftarrow:"↞",xtwoheadrightarrow:"↠",xlongequal:"=",xtofrom:"⇄",xrightleftarrows:"⇄",xrightequilibrium:"⇌",xleftequilibrium:"⇋","\\cdrightarrow":"→","\\cdleftarrow":"←","\\cdlongequal":"="},m3e=function(e){var n=new qe.MathNode("mo",[new qe.TextNode(f3e[e.replace(/^\\/,"")])]);return n.setAttribute("stretchy","true"),n},p3e={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},g3e=function(e){return e.type==="ordgroup"?e.body.length:1},x3e=function(e,n){function r(){var l=4e5,c=e.label.slice(1);if(["widehat","widecheck","widetilde","utilde"].includes(c)){var d=e,h=g3e(d.base),m,g,x;if(h>5)c==="widehat"||c==="widecheck"?(m=420,l=2364,x=.42,g=c+"4"):(m=312,l=2340,x=.34,g="tilde4");else{var y=[1,1,2,2,3,3][h];c==="widehat"||c==="widecheck"?(l=[0,1062,2364,2364,2364][y],m=[0,239,300,360,420][y],x=[0,.24,.3,.3,.36,.42][y],g=c+y):(l=[0,600,1033,2339,2340][y],m=[0,260,286,306,312][y],x=[0,.26,.286,.3,.306,.34][y],g="tilde"+y)}var w=new tu(g),S=new Hl([w],{width:"100%",height:Xe(x),viewBox:"0 0 "+l+" "+m,preserveAspectRatio:"none"});return{span:be.makeSvgSpan([],[S],n),minWidth:0,height:x}}else{var k=[],j=p3e[c],[N,T,E]=j,_=E/1e3,M=N.length,I,P;if(M===1){var L=j[3];I=["hide-tail"],P=[L]}else if(M===2)I=["halfarrow-left","halfarrow-right"],P=["xMinYMin","xMaxYMin"];else if(M===3)I=["brace-left","brace-center","brace-right"],P=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support - `+M+" children.");for(var H=0;H0&&(s.style.minWidth=Xe(i)),s},v3e=function(e,n,r,s,i){var a,l=e.height+e.depth+r+s;if(/fbox|color|angl/.test(n)){if(a=be.makeSpan(["stretchy",n],[],i),n==="fbox"){var c=i.color&&i.getColor();c&&(a.style.borderColor=c)}}else{var d=[];/^[bx]cancel$/.test(n)&&d.push(new DO({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(n)&&d.push(new DO({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new Hl(d,{width:"100%",height:Xe(l)});a=be.makeSvgSpan([],[h],i)}return a.height=l,a.style.height=Xe(l),a},Vl={encloseSpan:v3e,mathMLnode:m3e,svgSpan:x3e};function en(t,e){if(!t||t.type!==e)throw new Error("Expected node of type "+e+", but got "+(t?"node of type "+t.type:String(t)));return t}function CN(t){var e=Ib(t);if(!e)throw new Error("Expected node of symbol group type, but got "+(t?"node of type "+t.type:String(t)));return e}function Ib(t){return t&&(t.type==="atom"||H5e.hasOwnProperty(t.type))?t:null}var TN=(t,e)=>{var n,r,s;t&&t.type==="supsub"?(r=en(t.base,"accent"),n=r.base,t.base=n,s=q5e(Pn(t,e)),t.base=r):(r=en(t,"accent"),n=r.base);var i=Pn(n,e.havingCrampedStyle()),a=r.isShifty&&$n.isCharacterBox(n),l=0;if(a){var c=$n.getBaseElem(n),d=Pn(c,e.havingCrampedStyle());l=lR(d).skew}var h=r.label==="\\c",m=h?i.height+i.depth:Math.min(i.height,e.fontMetrics().xHeight),g;if(r.isStretchy)g=Vl.svgSpan(r,e),g=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:g,wrapperClasses:["svg-align"],wrapperStyle:l>0?{width:"calc(100% - "+Xe(2*l)+")",marginLeft:Xe(2*l)}:void 0}]},e);else{var x,y;r.label==="\\vec"?(x=be.staticSvg("vec",e),y=be.svgData.vec[1]):(x=be.makeOrd({mode:r.mode,text:r.label},e,"textord"),x=lR(x),x.italic=0,y=x.width,h&&(m+=x.depth)),g=be.makeSpan(["accent-body"],[x]);var w=r.label==="\\textcircled";w&&(g.classes.push("accent-full"),m=i.height);var S=l;w||(S-=y/2),g.style.left=Xe(S),r.label==="\\textcircled"&&(g.style.top=".2em"),g=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-m},{type:"elem",elem:g}]},e)}var k=be.makeSpan(["mord","accent"],[g],e);return s?(s.children[0]=k,s.height=Math.max(k.height,s.height),s.classes[0]="mord",s):k},sU=(t,e)=>{var n=t.isStretchy?Vl.mathMLnode(t.label):new qe.MathNode("mo",[Aa(t.label,t.mode)]),r=new qe.MathNode("mover",[lr(t.base,e),n]);return r.setAttribute("accent","true"),r},y3e=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(t=>"\\"+t).join("|"));tt({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(t,e)=>{var n=wy(e[0]),r=!y3e.test(t.funcName),s=!r||t.funcName==="\\widehat"||t.funcName==="\\widetilde"||t.funcName==="\\widecheck";return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:r,isShifty:s,base:n}},htmlBuilder:TN,mathmlBuilder:sU});tt({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(t,e)=>{var n=e[0],r=t.parser.mode;return r==="math"&&(t.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+t.funcName+" works only in text mode"),r="text"),{type:"accent",mode:r,label:t.funcName,isStretchy:!1,isShifty:!0,base:n}},htmlBuilder:TN,mathmlBuilder:sU});tt({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0];return{type:"accentUnder",mode:n.mode,label:r,base:s}},htmlBuilder:(t,e)=>{var n=Pn(t.base,e),r=Vl.svgSpan(t,e),s=t.label==="\\utilde"?.12:0,i=be.makeVList({positionType:"top",positionData:n.height,children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:s},{type:"elem",elem:n}]},e);return be.makeSpan(["mord","accentunder"],[i],e)},mathmlBuilder:(t,e)=>{var n=Vl.mathMLnode(t.label),r=new qe.MathNode("munder",[lr(t.base,e),n]);return r.setAttribute("accentunder","true"),r}});var P1=t=>{var e=new qe.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e};tt({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,n){var{parser:r,funcName:s}=t;return{type:"xArrow",mode:r.mode,label:s,body:e[0],below:n[0]}},htmlBuilder(t,e){var n=e.style,r=e.havingStyle(n.sup()),s=be.wrapFragment(Pn(t.body,r,e),e),i=t.label.slice(0,2)==="\\x"?"x":"cd";s.classes.push(i+"-arrow-pad");var a;t.below&&(r=e.havingStyle(n.sub()),a=be.wrapFragment(Pn(t.below,r,e),e),a.classes.push(i+"-arrow-pad"));var l=Vl.svgSpan(t,e),c=-e.fontMetrics().axisHeight+.5*l.height,d=-e.fontMetrics().axisHeight-.5*l.height-.111;(s.depth>.25||t.label==="\\xleftequilibrium")&&(d-=s.depth);var h;if(a){var m=-e.fontMetrics().axisHeight+a.height+.5*l.height+.111;h=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:d},{type:"elem",elem:l,shift:c},{type:"elem",elem:a,shift:m}]},e)}else h=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:d},{type:"elem",elem:l,shift:c}]},e);return h.children[0].children[0].children[1].classes.push("svg-align"),be.makeSpan(["mrel","x-arrow"],[h],e)},mathmlBuilder(t,e){var n=Vl.mathMLnode(t.label);n.setAttribute("minsize",t.label.charAt(0)==="x"?"1.75em":"3.0em");var r;if(t.body){var s=P1(lr(t.body,e));if(t.below){var i=P1(lr(t.below,e));r=new qe.MathNode("munderover",[n,i,s])}else r=new qe.MathNode("mover",[n,s])}else if(t.below){var a=P1(lr(t.below,e));r=new qe.MathNode("munder",[n,a])}else r=P1(),r=new qe.MathNode("mover",[n,r]);return r}});var b3e=be.makeSpan;function iU(t,e){var n=hs(t.body,e,!0);return b3e([t.mclass],n,e)}function aU(t,e){var n,r=_i(t.body,e);return t.mclass==="minner"?n=new qe.MathNode("mpadded",r):t.mclass==="mord"?t.isCharacterBox?(n=r[0],n.type="mi"):n=new qe.MathNode("mi",r):(t.isCharacterBox?(n=r[0],n.type="mo"):n=new qe.MathNode("mo",r),t.mclass==="mbin"?(n.attributes.lspace="0.22em",n.attributes.rspace="0.22em"):t.mclass==="mpunct"?(n.attributes.lspace="0em",n.attributes.rspace="0.17em"):t.mclass==="mopen"||t.mclass==="mclose"?(n.attributes.lspace="0em",n.attributes.rspace="0em"):t.mclass==="minner"&&(n.attributes.lspace="0.0556em",n.attributes.width="+0.1111em")),n}tt({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];return{type:"mclass",mode:n.mode,mclass:"m"+r.slice(5),body:Qr(s),isCharacterBox:$n.isCharacterBox(s)}},htmlBuilder:iU,mathmlBuilder:aU});var Lb=t=>{var e=t.type==="ordgroup"&&t.body.length?t.body[0]:t;return e.type==="atom"&&(e.family==="bin"||e.family==="rel")?"m"+e.family:"mord"};tt({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(t,e){var{parser:n}=t;return{type:"mclass",mode:n.mode,mclass:Lb(e[0]),body:Qr(e[1]),isCharacterBox:$n.isCharacterBox(e[1])}}});tt({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(t,e){var{parser:n,funcName:r}=t,s=e[1],i=e[0],a;r!=="\\stackrel"?a=Lb(s):a="mrel";var l={type:"op",mode:s.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:r!=="\\stackrel",body:Qr(s)},c={type:"supsub",mode:i.mode,base:l,sup:r==="\\underset"?null:i,sub:r==="\\underset"?i:null};return{type:"mclass",mode:n.mode,mclass:a,body:[c],isCharacterBox:$n.isCharacterBox(c)}},htmlBuilder:iU,mathmlBuilder:aU});tt({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"pmb",mode:n.mode,mclass:Lb(e[0]),body:Qr(e[0])}},htmlBuilder(t,e){var n=hs(t.body,e,!0),r=be.makeSpan([t.mclass],n,e);return r.style.textShadow="0.02em 0.01em 0.04px",r},mathmlBuilder(t,e){var n=_i(t.body,e),r=new qe.MathNode("mstyle",n);return r.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),r}});var w3e={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},gR=()=>({type:"styling",body:[],mode:"math",style:"display"}),xR=t=>t.type==="textord"&&t.text==="@",S3e=(t,e)=>(t.type==="mathord"||t.type==="atom")&&t.text===e;function k3e(t,e,n){var r=w3e[t];switch(r){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return n.callFunction(r,[e[0]],[e[1]]);case"\\uparrow":case"\\downarrow":{var s=n.callFunction("\\\\cdleft",[e[0]],[]),i={type:"atom",text:r,mode:"math",family:"rel"},a=n.callFunction("\\Big",[i],[]),l=n.callFunction("\\\\cdright",[e[1]],[]),c={type:"ordgroup",mode:"math",body:[s,a,l]};return n.callFunction("\\\\cdparent",[c],[])}case"\\\\cdlongequal":return n.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var d={type:"textord",text:"\\Vert",mode:"math"};return n.callFunction("\\Big",[d],[])}default:return{type:"textord",text:" ",mode:"math"}}}function O3e(t){var e=[];for(t.gullet.beginGroup(),t.gullet.macros.set("\\cr","\\\\\\relax"),t.gullet.beginGroup();;){e.push(t.parseExpression(!1,"\\\\")),t.gullet.endGroup(),t.gullet.beginGroup();var n=t.fetch().text;if(n==="&"||n==="\\\\")t.consume();else if(n==="\\end"){e[e.length-1].length===0&&e.pop();break}else throw new $e("Expected \\\\ or \\cr or \\end",t.nextToken)}for(var r=[],s=[r],i=0;i-1))if("<>AV".indexOf(d)>-1)for(var m=0;m<2;m++){for(var g=!0,x=c+1;xAV=|." after @',a[c]);var y=k3e(d,h,t),w={type:"styling",body:[y],mode:"math",style:"display"};r.push(w),l=gR()}i%2===0?r.push(l):r.shift(),r=[],s.push(r)}t.gullet.endGroup(),t.gullet.endGroup();var S=new Array(s[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:s,arraystretch:1,addJot:!0,rowGaps:[null],cols:S,colSeparationType:"CD",hLinesBeforeRow:new Array(s.length+1).fill([])}}tt({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:r}=t;return{type:"cdlabel",mode:n.mode,side:r.slice(4),label:e[0]}},htmlBuilder(t,e){var n=e.havingStyle(e.style.sup()),r=be.wrapFragment(Pn(t.label,n,e),e);return r.classes.push("cd-label-"+t.side),r.style.bottom=Xe(.8-r.depth),r.height=0,r.depth=0,r},mathmlBuilder(t,e){var n=new qe.MathNode("mrow",[lr(t.label,e)]);return n=new qe.MathNode("mpadded",[n]),n.setAttribute("width","0"),t.side==="left"&&n.setAttribute("lspace","-1width"),n.setAttribute("voffset","0.7em"),n=new qe.MathNode("mstyle",[n]),n.setAttribute("displaystyle","false"),n.setAttribute("scriptlevel","1"),n}});tt({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(t,e){var{parser:n}=t;return{type:"cdlabelparent",mode:n.mode,fragment:e[0]}},htmlBuilder(t,e){var n=be.wrapFragment(Pn(t.fragment,e),e);return n.classes.push("cd-vert-arrow"),n},mathmlBuilder(t,e){return new qe.MathNode("mrow",[lr(t.fragment,e)])}});tt({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(t,e){for(var{parser:n}=t,r=en(e[0],"ordgroup"),s=r.body,i="",a=0;a=1114111)throw new $e("\\@char with invalid code point "+i);return c<=65535?d=String.fromCharCode(c):(c-=65536,d=String.fromCharCode((c>>10)+55296,(c&1023)+56320)),{type:"textord",mode:n.mode,text:d}}});var oU=(t,e)=>{var n=hs(t.body,e.withColor(t.color),!1);return be.makeFragment(n)},lU=(t,e)=>{var n=_i(t.body,e.withColor(t.color)),r=new qe.MathNode("mstyle",n);return r.setAttribute("mathcolor",t.color),r};tt({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(t,e){var{parser:n}=t,r=en(e[0],"color-token").color,s=e[1];return{type:"color",mode:n.mode,color:r,body:Qr(s)}},htmlBuilder:oU,mathmlBuilder:lU});tt({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(t,e){var{parser:n,breakOnTokenText:r}=t,s=en(e[0],"color-token").color;n.gullet.macros.set("\\current@color",s);var i=n.parseExpression(!0,r);return{type:"color",mode:n.mode,color:s,body:i}},htmlBuilder:oU,mathmlBuilder:lU});tt({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(t,e,n){var{parser:r}=t,s=r.gullet.future().text==="["?r.parseSizeGroup(!0):null,i=!r.settings.displayMode||!r.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:r.mode,newLine:i,size:s&&en(s,"size").value}},htmlBuilder(t,e){var n=be.makeSpan(["mspace"],[],e);return t.newLine&&(n.classes.push("newline"),t.size&&(n.style.marginTop=Xe(Rr(t.size,e)))),n},mathmlBuilder(t,e){var n=new qe.MathNode("mspace");return t.newLine&&(n.setAttribute("linebreak","newline"),t.size&&n.setAttribute("height",Xe(Rr(t.size,e)))),n}});var LO={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},cU=t=>{var e=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new $e("Expected a control sequence",t);return e},j3e=t=>{var e=t.gullet.popToken();return e.text==="="&&(e=t.gullet.popToken(),e.text===" "&&(e=t.gullet.popToken())),e},uU=(t,e,n,r)=>{var s=t.gullet.macros.get(n.text);s==null&&(n.noexpand=!0,s={tokens:[n],numArgs:0,unexpandable:!t.gullet.isExpandable(n.text)}),t.gullet.macros.set(e,s,r)};tt({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(t){var{parser:e,funcName:n}=t;e.consumeSpaces();var r=e.fetch();if(LO[r.text])return(n==="\\global"||n==="\\\\globallong")&&(r.text=LO[r.text]),en(e.parseFunction(),"internal");throw new $e("Invalid token after macro prefix",r)}});tt({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,r=e.gullet.popToken(),s=r.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(s))throw new $e("Expected a control sequence",r);for(var i=0,a,l=[[]];e.gullet.future().text!=="{";)if(r=e.gullet.popToken(),r.text==="#"){if(e.gullet.future().text==="{"){a=e.gullet.future(),l[i].push("{");break}if(r=e.gullet.popToken(),!/^[1-9]$/.test(r.text))throw new $e('Invalid argument number "'+r.text+'"');if(parseInt(r.text)!==i+1)throw new $e('Argument number "'+r.text+'" out of order');i++,l.push([])}else{if(r.text==="EOF")throw new $e("Expected a macro definition");l[i].push(r.text)}var{tokens:c}=e.gullet.consumeArg();return a&&c.unshift(a),(n==="\\edef"||n==="\\xdef")&&(c=e.gullet.expandTokens(c),c.reverse()),e.gullet.macros.set(s,{tokens:c,numArgs:i,delimiters:l},n===LO[n]),{type:"internal",mode:e.mode}}});tt({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,r=cU(e.gullet.popToken());e.gullet.consumeSpaces();var s=j3e(e);return uU(e,r,s,n==="\\\\globallet"),{type:"internal",mode:e.mode}}});tt({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,r=cU(e.gullet.popToken()),s=e.gullet.popToken(),i=e.gullet.popToken();return uU(e,r,i,n==="\\\\globalfuture"),e.gullet.pushToken(i),e.gullet.pushToken(s),{type:"internal",mode:e.mode}}});var c0=function(e,n,r){var s=dr.math[e]&&dr.math[e].replace,i=SN(s||e,n,r);if(!i)throw new Error("Unsupported symbol "+e+" and font size "+n+".");return i},EN=function(e,n,r,s){var i=r.havingBaseStyle(n),a=be.makeSpan(s.concat(i.sizingClasses(r)),[e],r),l=i.sizeMultiplier/r.sizeMultiplier;return a.height*=l,a.depth*=l,a.maxFontSize=i.sizeMultiplier,a},dU=function(e,n,r){var s=n.havingBaseStyle(r),i=(1-n.sizeMultiplier/s.sizeMultiplier)*n.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=Xe(i),e.height-=i,e.depth+=i},N3e=function(e,n,r,s,i,a){var l=be.makeSymbol(e,"Main-Regular",i,s),c=EN(l,n,s,a);return r&&dU(c,s,n),c},C3e=function(e,n,r,s){return be.makeSymbol(e,"Size"+n+"-Regular",r,s)},hU=function(e,n,r,s,i,a){var l=C3e(e,n,i,s),c=EN(be.makeSpan(["delimsizing","size"+n],[l],s),Et.TEXT,s,a);return r&&dU(c,s,Et.TEXT),c},VS=function(e,n,r){var s;n==="Size1-Regular"?s="delim-size1":s="delim-size4";var i=be.makeSpan(["delimsizinginner",s],[be.makeSpan([],[be.makeSymbol(e,n,r)])]);return{type:"elem",elem:i}},US=function(e,n,r){var s=_o["Size4-Regular"][e.charCodeAt(0)]?_o["Size4-Regular"][e.charCodeAt(0)][4]:_o["Size1-Regular"][e.charCodeAt(0)][4],i=new tu("inner",A5e(e,Math.round(1e3*n))),a=new Hl([i],{width:Xe(s),height:Xe(n),style:"width:"+Xe(s),viewBox:"0 0 "+1e3*s+" "+Math.round(1e3*n),preserveAspectRatio:"xMinYMin"}),l=be.makeSvgSpan([],[a],r);return l.height=n,l.style.height=Xe(n),l.style.width=Xe(s),{type:"elem",elem:l}},BO=.008,z1={type:"kern",size:-1*BO},T3e=["|","\\lvert","\\rvert","\\vert"],E3e=["\\|","\\lVert","\\rVert","\\Vert"],fU=function(e,n,r,s,i,a){var l,c,d,h,m="",g=0;l=d=h=e,c=null;var x="Size1-Regular";e==="\\uparrow"?d=h="⏐":e==="\\Uparrow"?d=h="‖":e==="\\downarrow"?l=d="⏐":e==="\\Downarrow"?l=d="‖":e==="\\updownarrow"?(l="\\uparrow",d="⏐",h="\\downarrow"):e==="\\Updownarrow"?(l="\\Uparrow",d="‖",h="\\Downarrow"):T3e.includes(e)?(d="∣",m="vert",g=333):E3e.includes(e)?(d="∥",m="doublevert",g=556):e==="["||e==="\\lbrack"?(l="⎡",d="⎢",h="⎣",x="Size4-Regular",m="lbrack",g=667):e==="]"||e==="\\rbrack"?(l="⎤",d="⎥",h="⎦",x="Size4-Regular",m="rbrack",g=667):e==="\\lfloor"||e==="⌊"?(d=l="⎢",h="⎣",x="Size4-Regular",m="lfloor",g=667):e==="\\lceil"||e==="⌈"?(l="⎡",d=h="⎢",x="Size4-Regular",m="lceil",g=667):e==="\\rfloor"||e==="⌋"?(d=l="⎥",h="⎦",x="Size4-Regular",m="rfloor",g=667):e==="\\rceil"||e==="⌉"?(l="⎤",d=h="⎥",x="Size4-Regular",m="rceil",g=667):e==="("||e==="\\lparen"?(l="⎛",d="⎜",h="⎝",x="Size4-Regular",m="lparen",g=875):e===")"||e==="\\rparen"?(l="⎞",d="⎟",h="⎠",x="Size4-Regular",m="rparen",g=875):e==="\\{"||e==="\\lbrace"?(l="⎧",c="⎨",h="⎩",d="⎪",x="Size4-Regular"):e==="\\}"||e==="\\rbrace"?(l="⎫",c="⎬",h="⎭",d="⎪",x="Size4-Regular"):e==="\\lgroup"||e==="⟮"?(l="⎧",h="⎩",d="⎪",x="Size4-Regular"):e==="\\rgroup"||e==="⟯"?(l="⎫",h="⎭",d="⎪",x="Size4-Regular"):e==="\\lmoustache"||e==="⎰"?(l="⎧",h="⎭",d="⎪",x="Size4-Regular"):(e==="\\rmoustache"||e==="⎱")&&(l="⎫",h="⎩",d="⎪",x="Size4-Regular");var y=c0(l,x,i),w=y.height+y.depth,S=c0(d,x,i),k=S.height+S.depth,j=c0(h,x,i),N=j.height+j.depth,T=0,E=1;if(c!==null){var _=c0(c,x,i);T=_.height+_.depth,E=2}var M=w+N+T,I=Math.max(0,Math.ceil((n-M)/(E*k))),P=M+I*E*k,L=s.fontMetrics().axisHeight;r&&(L*=s.sizeMultiplier);var H=P/2-L,U=[];if(m.length>0){var ee=P-w-N,z=Math.round(P*1e3),Q=R5e(m,Math.round(ee*1e3)),B=new tu(m,Q),X=(g/1e3).toFixed(3)+"em",J=(z/1e3).toFixed(3)+"em",G=new Hl([B],{width:X,height:J,viewBox:"0 0 "+g+" "+z}),R=be.makeSvgSpan([],[G],s);R.height=z/1e3,R.style.width=X,R.style.height=J,U.push({type:"elem",elem:R})}else{if(U.push(VS(h,x,i)),U.push(z1),c===null){var ie=P-w-N+2*BO;U.push(US(d,ie,s))}else{var W=(P-w-N-T)/2+2*BO;U.push(US(d,W,s)),U.push(z1),U.push(VS(c,x,i)),U.push(z1),U.push(US(d,W,s))}U.push(z1),U.push(VS(l,x,i))}var q=s.havingBaseStyle(Et.TEXT),V=be.makeVList({positionType:"bottom",positionData:H,children:U},q);return EN(be.makeSpan(["delimsizing","mult"],[V],q),Et.TEXT,s,a)},WS=80,GS=.08,XS=function(e,n,r,s,i){var a=M5e(e,s,r),l=new tu(e,a),c=new Hl([l],{width:"400em",height:Xe(n),viewBox:"0 0 400000 "+r,preserveAspectRatio:"xMinYMin slice"});return be.makeSvgSpan(["hide-tail"],[c],i)},_3e=function(e,n){var r=n.havingBaseSizing(),s=xU("\\surd",e*r.sizeMultiplier,gU,r),i=r.sizeMultiplier,a=Math.max(0,n.minRuleThickness-n.fontMetrics().sqrtRuleThickness),l,c=0,d=0,h=0,m;return s.type==="small"?(h=1e3+1e3*a+WS,e<1?i=1:e<1.4&&(i=.7),c=(1+a+GS)/i,d=(1+a)/i,l=XS("sqrtMain",c,h,a,n),l.style.minWidth="0.853em",m=.833/i):s.type==="large"?(h=(1e3+WS)*_0[s.size],d=(_0[s.size]+a)/i,c=(_0[s.size]+a+GS)/i,l=XS("sqrtSize"+s.size,c,h,a,n),l.style.minWidth="1.02em",m=1/i):(c=e+a+GS,d=e+a,h=Math.floor(1e3*e+a)+WS,l=XS("sqrtTall",c,h,a,n),l.style.minWidth="0.742em",m=1.056),l.height=d,l.style.height=Xe(c),{span:l,advanceWidth:m,ruleWidth:(n.fontMetrics().sqrtRuleThickness+a)*i}},mU=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"],M3e=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"],pU=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],_0=[0,1.2,1.8,2.4,3],A3e=function(e,n,r,s,i){if(e==="<"||e==="\\lt"||e==="⟨"?e="\\langle":(e===">"||e==="\\gt"||e==="⟩")&&(e="\\rangle"),mU.includes(e)||pU.includes(e))return hU(e,n,!1,r,s,i);if(M3e.includes(e))return fU(e,_0[n],!1,r,s,i);throw new $e("Illegal delimiter: '"+e+"'")},R3e=[{type:"small",style:Et.SCRIPTSCRIPT},{type:"small",style:Et.SCRIPT},{type:"small",style:Et.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],D3e=[{type:"small",style:Et.SCRIPTSCRIPT},{type:"small",style:Et.SCRIPT},{type:"small",style:Et.TEXT},{type:"stack"}],gU=[{type:"small",style:Et.SCRIPTSCRIPT},{type:"small",style:Et.SCRIPT},{type:"small",style:Et.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],P3e=function(e){if(e.type==="small")return"Main-Regular";if(e.type==="large")return"Size"+e.size+"-Regular";if(e.type==="stack")return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},xU=function(e,n,r,s){for(var i=Math.min(2,3-s.style.size),a=i;an)return r[a]}return r[r.length-1]},vU=function(e,n,r,s,i,a){e==="<"||e==="\\lt"||e==="⟨"?e="\\langle":(e===">"||e==="\\gt"||e==="⟩")&&(e="\\rangle");var l;pU.includes(e)?l=R3e:mU.includes(e)?l=gU:l=D3e;var c=xU(e,n,l,s);return c.type==="small"?N3e(e,c.style,r,s,i,a):c.type==="large"?hU(e,c.size,r,s,i,a):fU(e,n,r,s,i,a)},z3e=function(e,n,r,s,i,a){var l=s.fontMetrics().axisHeight*s.sizeMultiplier,c=901,d=5/s.fontMetrics().ptPerEm,h=Math.max(n-l,r+l),m=Math.max(h/500*c,2*h-d);return vU(e,m,!0,s,i,a)},Ll={sqrtImage:_3e,sizedDelim:A3e,sizeToMaxHeight:_0,customSizedDelim:vU,leftRightDelim:z3e},vR={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},I3e=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function Bb(t,e){var n=Ib(t);if(n&&I3e.includes(n.text))return n;throw n?new $e("Invalid delimiter '"+n.text+"' after '"+e.funcName+"'",t):new $e("Invalid delimiter type '"+t.type+"'",t)}tt({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(t,e)=>{var n=Bb(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:vR[t.funcName].size,mclass:vR[t.funcName].mclass,delim:n.text}},htmlBuilder:(t,e)=>t.delim==="."?be.makeSpan([t.mclass]):Ll.sizedDelim(t.delim,t.size,e,t.mode,[t.mclass]),mathmlBuilder:t=>{var e=[];t.delim!=="."&&e.push(Aa(t.delim,t.mode));var n=new qe.MathNode("mo",e);t.mclass==="mopen"||t.mclass==="mclose"?n.setAttribute("fence","true"):n.setAttribute("fence","false"),n.setAttribute("stretchy","true");var r=Xe(Ll.sizeToMaxHeight[t.size]);return n.setAttribute("minsize",r),n.setAttribute("maxsize",r),n}});function yR(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}tt({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=t.parser.gullet.macros.get("\\current@color");if(n&&typeof n!="string")throw new $e("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:Bb(e[0],t).text,color:n}}});tt({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=Bb(e[0],t),r=t.parser;++r.leftrightDepth;var s=r.parseExpression(!1);--r.leftrightDepth,r.expect("\\right",!1);var i=en(r.parseFunction(),"leftright-right");return{type:"leftright",mode:r.mode,body:s,left:n.text,right:i.delim,rightColor:i.color}},htmlBuilder:(t,e)=>{yR(t);for(var n=hs(t.body,e,!0,["mopen","mclose"]),r=0,s=0,i=!1,a=0;a{yR(t);var n=_i(t.body,e);if(t.left!=="."){var r=new qe.MathNode("mo",[Aa(t.left,t.mode)]);r.setAttribute("fence","true"),n.unshift(r)}if(t.right!=="."){var s=new qe.MathNode("mo",[Aa(t.right,t.mode)]);s.setAttribute("fence","true"),t.rightColor&&s.setAttribute("mathcolor",t.rightColor),n.push(s)}return jN(n)}});tt({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=Bb(e[0],t);if(!t.parser.leftrightDepth)throw new $e("\\middle without preceding \\left",n);return{type:"middle",mode:t.parser.mode,delim:n.text}},htmlBuilder:(t,e)=>{var n;if(t.delim===".")n=pp(e,[]);else{n=Ll.sizedDelim(t.delim,1,e,t.mode,[]);var r={delim:t.delim,options:e};n.isMiddle=r}return n},mathmlBuilder:(t,e)=>{var n=t.delim==="\\vert"||t.delim==="|"?Aa("|","text"):Aa(t.delim,t.mode),r=new qe.MathNode("mo",[n]);return r.setAttribute("fence","true"),r.setAttribute("lspace","0.05em"),r.setAttribute("rspace","0.05em"),r}});var _N=(t,e)=>{var n=be.wrapFragment(Pn(t.body,e),e),r=t.label.slice(1),s=e.sizeMultiplier,i,a=0,l=$n.isCharacterBox(t.body);if(r==="sout")i=be.makeSpan(["stretchy","sout"]),i.height=e.fontMetrics().defaultRuleThickness/s,a=-.5*e.fontMetrics().xHeight;else if(r==="phase"){var c=Rr({number:.6,unit:"pt"},e),d=Rr({number:.35,unit:"ex"},e),h=e.havingBaseSizing();s=s/h.sizeMultiplier;var m=n.height+n.depth+c+d;n.style.paddingLeft=Xe(m/2+c);var g=Math.floor(1e3*m*s),x=E5e(g),y=new Hl([new tu("phase",x)],{width:"400em",height:Xe(g/1e3),viewBox:"0 0 400000 "+g,preserveAspectRatio:"xMinYMin slice"});i=be.makeSvgSpan(["hide-tail"],[y],e),i.style.height=Xe(m),a=n.depth+c+d}else{/cancel/.test(r)?l||n.classes.push("cancel-pad"):r==="angl"?n.classes.push("anglpad"):n.classes.push("boxpad");var w=0,S=0,k=0;/box/.test(r)?(k=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),w=e.fontMetrics().fboxsep+(r==="colorbox"?0:k),S=w):r==="angl"?(k=Math.max(e.fontMetrics().defaultRuleThickness,e.minRuleThickness),w=4*k,S=Math.max(0,.25-n.depth)):(w=l?.2:0,S=w),i=Vl.encloseSpan(n,r,w,S,e),/fbox|boxed|fcolorbox/.test(r)?(i.style.borderStyle="solid",i.style.borderWidth=Xe(k)):r==="angl"&&k!==.049&&(i.style.borderTopWidth=Xe(k),i.style.borderRightWidth=Xe(k)),a=n.depth+S,t.backgroundColor&&(i.style.backgroundColor=t.backgroundColor,t.borderColor&&(i.style.borderColor=t.borderColor))}var j;if(t.backgroundColor)j=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:a},{type:"elem",elem:n,shift:0}]},e);else{var N=/cancel|phase/.test(r)?["svg-align"]:[];j=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:0},{type:"elem",elem:i,shift:a,wrapperClasses:N}]},e)}return/cancel/.test(r)&&(j.height=n.height,j.depth=n.depth),/cancel/.test(r)&&!l?be.makeSpan(["mord","cancel-lap"],[j],e):be.makeSpan(["mord"],[j],e)},MN=(t,e)=>{var n=0,r=new qe.MathNode(t.label.indexOf("colorbox")>-1?"mpadded":"menclose",[lr(t.body,e)]);switch(t.label){case"\\cancel":r.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":r.setAttribute("notation","downdiagonalstrike");break;case"\\phase":r.setAttribute("notation","phasorangle");break;case"\\sout":r.setAttribute("notation","horizontalstrike");break;case"\\fbox":r.setAttribute("notation","box");break;case"\\angl":r.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(n=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,r.setAttribute("width","+"+2*n+"pt"),r.setAttribute("height","+"+2*n+"pt"),r.setAttribute("lspace",n+"pt"),r.setAttribute("voffset",n+"pt"),t.label==="\\fcolorbox"){var s=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);r.setAttribute("style","border: "+s+"em solid "+String(t.borderColor))}break;case"\\xcancel":r.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return t.backgroundColor&&r.setAttribute("mathbackground",t.backgroundColor),r};tt({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(t,e,n){var{parser:r,funcName:s}=t,i=en(e[0],"color-token").color,a=e[1];return{type:"enclose",mode:r.mode,label:s,backgroundColor:i,body:a}},htmlBuilder:_N,mathmlBuilder:MN});tt({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(t,e,n){var{parser:r,funcName:s}=t,i=en(e[0],"color-token").color,a=en(e[1],"color-token").color,l=e[2];return{type:"enclose",mode:r.mode,label:s,backgroundColor:a,borderColor:i,body:l}},htmlBuilder:_N,mathmlBuilder:MN});tt({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"enclose",mode:n.mode,label:"\\fbox",body:e[0]}}});tt({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];return{type:"enclose",mode:n.mode,label:r,body:s}},htmlBuilder:_N,mathmlBuilder:MN});tt({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(t,e){var{parser:n}=t;return{type:"enclose",mode:n.mode,label:"\\angl",body:e[0]}}});var yU={};function Qo(t){for(var{type:e,names:n,props:r,handler:s,htmlBuilder:i,mathmlBuilder:a}=t,l={type:e,numArgs:r.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:s},c=0;c{var e=t.parser.settings;if(!e.displayMode)throw new $e("{"+t.envName+"} can be used only in display mode.")};function AN(t){if(t.indexOf("ed")===-1)return t.indexOf("*")===-1}function du(t,e,n){var{hskipBeforeAndAfter:r,addJot:s,cols:i,arraystretch:a,colSeparationType:l,autoTag:c,singleRow:d,emptySingleRow:h,maxNumCols:m,leqno:g}=e;if(t.gullet.beginGroup(),d||t.gullet.macros.set("\\cr","\\\\\\relax"),!a){var x=t.gullet.expandMacroAsText("\\arraystretch");if(x==null)a=1;else if(a=parseFloat(x),!a||a<0)throw new $e("Invalid \\arraystretch: "+x)}t.gullet.beginGroup();var y=[],w=[y],S=[],k=[],j=c!=null?[]:void 0;function N(){c&&t.gullet.macros.set("\\@eqnsw","1",!0)}function T(){j&&(t.gullet.macros.get("\\df@tag")?(j.push(t.subparse([new Xi("\\df@tag")])),t.gullet.macros.set("\\df@tag",void 0,!0)):j.push(!!c&&t.gullet.macros.get("\\@eqnsw")==="1"))}for(N(),k.push(bR(t));;){var E=t.parseExpression(!1,d?"\\end":"\\\\");t.gullet.endGroup(),t.gullet.beginGroup(),E={type:"ordgroup",mode:t.mode,body:E},n&&(E={type:"styling",mode:t.mode,style:n,body:[E]}),y.push(E);var _=t.fetch().text;if(_==="&"){if(m&&y.length===m){if(d||l)throw new $e("Too many tab characters: &",t.nextToken);t.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}t.consume()}else if(_==="\\end"){T(),y.length===1&&E.type==="styling"&&E.body[0].body.length===0&&(w.length>1||!h)&&w.pop(),k.length0&&(N+=.25),d.push({pos:N,isDashed:He[Ot]})}for(T(a[0]),r=0;r0&&(H+=j,MHe))for(r=0;r=l)){var K=void 0;(s>0||e.hskipBeforeAndAfter)&&(K=$n.deflt(W.pregap,g),K!==0&&(Q=be.makeSpan(["arraycolsep"],[]),Q.style.width=Xe(K),z.push(Q)));var se=[];for(r=0;r0){for(var We=be.makeLineSpan("hline",n,h),Ye=be.makeLineSpan("hdashline",n,h),Je=[{type:"elem",elem:c,shift:0}];d.length>0;){var Oe=d.pop(),Ve=Oe.pos-U;Oe.isDashed?Je.push({type:"elem",elem:Ye,shift:Ve}):Je.push({type:"elem",elem:We,shift:Ve})}c=be.makeVList({positionType:"individualShift",children:Je},n)}if(X.length===0)return be.makeSpan(["mord"],[c],n);var Ue=be.makeVList({positionType:"individualShift",children:X},n);return Ue=be.makeSpan(["tag"],[Ue],n),be.makeFragment([c,Ue])},L3e={c:"center ",l:"left ",r:"right "},Uo=function(e,n){for(var r=[],s=new qe.MathNode("mtd",[],["mtr-glue"]),i=new qe.MathNode("mtd",[],["mml-eqn-num"]),a=0;a0){var y=e.cols,w="",S=!1,k=0,j=y.length;y[0].type==="separator"&&(g+="top ",k=1),y[y.length-1].type==="separator"&&(g+="bottom ",j-=1);for(var N=k;N0?"left ":"",g+=I[I.length-1].length>0?"right ":"";for(var P=1;P-1?"alignat":"align",i=e.envName==="split",a=du(e.parser,{cols:r,addJot:!0,autoTag:i?void 0:AN(e.envName),emptySingleRow:!0,colSeparationType:s,maxNumCols:i?2:void 0,leqno:e.parser.settings.leqno},"display"),l,c=0,d={type:"ordgroup",mode:e.mode,body:[]};if(n[0]&&n[0].type==="ordgroup"){for(var h="",m=0;m0&&x&&(S=1),r[y]={type:"align",align:w,pregap:S,postgap:0}}return a.colSeparationType=x?"align":"alignat",a};Qo({type:"array",names:["array","darray"],props:{numArgs:1},handler(t,e){var n=Ib(e[0]),r=n?[e[0]]:en(e[0],"ordgroup").body,s=r.map(function(a){var l=CN(a),c=l.text;if("lcr".indexOf(c)!==-1)return{type:"align",align:c};if(c==="|")return{type:"separator",separator:"|"};if(c===":")return{type:"separator",separator:":"};throw new $e("Unknown column alignment: "+c,a)}),i={cols:s,hskipBeforeAndAfter:!0,maxNumCols:s.length};return du(t.parser,i,RN(t.envName))},htmlBuilder:Vo,mathmlBuilder:Uo});Qo({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName.replace("*","")],n="c",r={hskipBeforeAndAfter:!1,cols:[{type:"align",align:n}]};if(t.envName.charAt(t.envName.length-1)==="*"){var s=t.parser;if(s.consumeSpaces(),s.fetch().text==="["){if(s.consume(),s.consumeSpaces(),n=s.fetch().text,"lcr".indexOf(n)===-1)throw new $e("Expected l or c or r",s.nextToken);s.consume(),s.consumeSpaces(),s.expect("]"),s.consume(),r.cols=[{type:"align",align:n}]}}var i=du(t.parser,r,RN(t.envName)),a=Math.max(0,...i.body.map(l=>l.length));return i.cols=new Array(a).fill({type:"align",align:n}),e?{type:"leftright",mode:t.mode,body:[i],left:e[0],right:e[1],rightColor:void 0}:i},htmlBuilder:Vo,mathmlBuilder:Uo});Qo({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(t){var e={arraystretch:.5},n=du(t.parser,e,"script");return n.colSeparationType="small",n},htmlBuilder:Vo,mathmlBuilder:Uo});Qo({type:"array",names:["subarray"],props:{numArgs:1},handler(t,e){var n=Ib(e[0]),r=n?[e[0]]:en(e[0],"ordgroup").body,s=r.map(function(a){var l=CN(a),c=l.text;if("lc".indexOf(c)!==-1)return{type:"align",align:c};throw new $e("Unknown column alignment: "+c,a)});if(s.length>1)throw new $e("{subarray} can contain only one column");var i={cols:s,hskipBeforeAndAfter:!1,arraystretch:.5};if(i=du(t.parser,i,"script"),i.body.length>0&&i.body[0].length>1)throw new $e("{subarray} can contain only one column");return i},htmlBuilder:Vo,mathmlBuilder:Uo});Qo({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(t){var e={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},n=du(t.parser,e,RN(t.envName));return{type:"leftright",mode:t.mode,body:[n],left:t.envName.indexOf("r")>-1?".":"\\{",right:t.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:Vo,mathmlBuilder:Uo});Qo({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:wU,htmlBuilder:Vo,mathmlBuilder:Uo});Qo({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(t){["gather","gather*"].includes(t.envName)&&Fb(t);var e={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:AN(t.envName),emptySingleRow:!0,leqno:t.parser.settings.leqno};return du(t.parser,e,"display")},htmlBuilder:Vo,mathmlBuilder:Uo});Qo({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:wU,htmlBuilder:Vo,mathmlBuilder:Uo});Qo({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(t){Fb(t);var e={autoTag:AN(t.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:t.parser.settings.leqno};return du(t.parser,e,"display")},htmlBuilder:Vo,mathmlBuilder:Uo});Qo({type:"array",names:["CD"],props:{numArgs:0},handler(t){return Fb(t),O3e(t.parser)},htmlBuilder:Vo,mathmlBuilder:Uo});Z("\\nonumber","\\gdef\\@eqnsw{0}");Z("\\notag","\\nonumber");tt({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(t,e){throw new $e(t.funcName+" valid only within array environment")}});var wR=yU;tt({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];if(s.type!=="ordgroup")throw new $e("Invalid environment name",s);for(var i="",a=0;a{var n=t.font,r=e.withFont(n);return Pn(t.body,r)},kU=(t,e)=>{var n=t.font,r=e.withFont(n);return lr(t.body,r)},SR={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};tt({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=wy(e[0]),i=r;return i in SR&&(i=SR[i]),{type:"font",mode:n.mode,font:i.slice(1),body:s}},htmlBuilder:SU,mathmlBuilder:kU});tt({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(t,e)=>{var{parser:n}=t,r=e[0],s=$n.isCharacterBox(r);return{type:"mclass",mode:n.mode,mclass:Lb(r),body:[{type:"font",mode:n.mode,font:"boldsymbol",body:r}],isCharacterBox:s}}});tt({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(t,e)=>{var{parser:n,funcName:r,breakOnTokenText:s}=t,{mode:i}=n,a=n.parseExpression(!0,s),l="math"+r.slice(1);return{type:"font",mode:i,font:l,body:{type:"ordgroup",mode:n.mode,body:a}}},htmlBuilder:SU,mathmlBuilder:kU});var OU=(t,e)=>{var n=e;return t==="display"?n=n.id>=Et.SCRIPT.id?n.text():Et.DISPLAY:t==="text"&&n.size===Et.DISPLAY.size?n=Et.TEXT:t==="script"?n=Et.SCRIPT:t==="scriptscript"&&(n=Et.SCRIPTSCRIPT),n},DN=(t,e)=>{var n=OU(t.size,e.style),r=n.fracNum(),s=n.fracDen(),i;i=e.havingStyle(r);var a=Pn(t.numer,i,e);if(t.continued){var l=8.5/e.fontMetrics().ptPerEm,c=3.5/e.fontMetrics().ptPerEm;a.height=a.height0?y=3*g:y=7*g,w=e.fontMetrics().denom1):(m>0?(x=e.fontMetrics().num2,y=g):(x=e.fontMetrics().num3,y=3*g),w=e.fontMetrics().denom2);var S;if(h){var j=e.fontMetrics().axisHeight;x-a.depth-(j+.5*m){var n=new qe.MathNode("mfrac",[lr(t.numer,e),lr(t.denom,e)]);if(!t.hasBarLine)n.setAttribute("linethickness","0px");else if(t.barSize){var r=Rr(t.barSize,e);n.setAttribute("linethickness",Xe(r))}var s=OU(t.size,e.style);if(s.size!==e.style.size){n=new qe.MathNode("mstyle",[n]);var i=s.size===Et.DISPLAY.size?"true":"false";n.setAttribute("displaystyle",i),n.setAttribute("scriptlevel","0")}if(t.leftDelim!=null||t.rightDelim!=null){var a=[];if(t.leftDelim!=null){var l=new qe.MathNode("mo",[new qe.TextNode(t.leftDelim.replace("\\",""))]);l.setAttribute("fence","true"),a.push(l)}if(a.push(n),t.rightDelim!=null){var c=new qe.MathNode("mo",[new qe.TextNode(t.rightDelim.replace("\\",""))]);c.setAttribute("fence","true"),a.push(c)}return jN(a)}return n};tt({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0],i=e[1],a,l=null,c=null,d="auto";switch(r){case"\\dfrac":case"\\frac":case"\\tfrac":a=!0;break;case"\\\\atopfrac":a=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":a=!1,l="(",c=")";break;case"\\\\bracefrac":a=!1,l="\\{",c="\\}";break;case"\\\\brackfrac":a=!1,l="[",c="]";break;default:throw new Error("Unrecognized genfrac command")}switch(r){case"\\dfrac":case"\\dbinom":d="display";break;case"\\tfrac":case"\\tbinom":d="text";break}return{type:"genfrac",mode:n.mode,continued:!1,numer:s,denom:i,hasBarLine:a,leftDelim:l,rightDelim:c,size:d,barSize:null}},htmlBuilder:DN,mathmlBuilder:PN});tt({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0],i=e[1];return{type:"genfrac",mode:n.mode,continued:!0,numer:s,denom:i,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}}});tt({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(t){var{parser:e,funcName:n,token:r}=t,s;switch(n){case"\\over":s="\\frac";break;case"\\choose":s="\\binom";break;case"\\atop":s="\\\\atopfrac";break;case"\\brace":s="\\\\bracefrac";break;case"\\brack":s="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:s,token:r}}});var kR=["display","text","script","scriptscript"],OR=function(e){var n=null;return e.length>0&&(n=e,n=n==="."?null:n),n};tt({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(t,e){var{parser:n}=t,r=e[4],s=e[5],i=wy(e[0]),a=i.type==="atom"&&i.family==="open"?OR(i.text):null,l=wy(e[1]),c=l.type==="atom"&&l.family==="close"?OR(l.text):null,d=en(e[2],"size"),h,m=null;d.isBlank?h=!0:(m=d.value,h=m.number>0);var g="auto",x=e[3];if(x.type==="ordgroup"){if(x.body.length>0){var y=en(x.body[0],"textord");g=kR[Number(y.text)]}}else x=en(x,"textord"),g=kR[Number(x.text)];return{type:"genfrac",mode:n.mode,numer:r,denom:s,continued:!1,hasBarLine:h,barSize:m,leftDelim:a,rightDelim:c,size:g}},htmlBuilder:DN,mathmlBuilder:PN});tt({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(t,e){var{parser:n,funcName:r,token:s}=t;return{type:"infix",mode:n.mode,replaceWith:"\\\\abovefrac",size:en(e[0],"size").value,token:s}}});tt({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0],i=m5e(en(e[1],"infix").size),a=e[2],l=i.number>0;return{type:"genfrac",mode:n.mode,numer:s,denom:a,continued:!1,hasBarLine:l,barSize:i,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:DN,mathmlBuilder:PN});var jU=(t,e)=>{var n=e.style,r,s;t.type==="supsub"?(r=t.sup?Pn(t.sup,e.havingStyle(n.sup()),e):Pn(t.sub,e.havingStyle(n.sub()),e),s=en(t.base,"horizBrace")):s=en(t,"horizBrace");var i=Pn(s.base,e.havingBaseStyle(Et.DISPLAY)),a=Vl.svgSpan(s,e),l;if(s.isOver?(l=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:.1},{type:"elem",elem:a}]},e),l.children[0].children[0].children[1].classes.push("svg-align")):(l=be.makeVList({positionType:"bottom",positionData:i.depth+.1+a.height,children:[{type:"elem",elem:a},{type:"kern",size:.1},{type:"elem",elem:i}]},e),l.children[0].children[0].children[0].classes.push("svg-align")),r){var c=be.makeSpan(["mord",s.isOver?"mover":"munder"],[l],e);s.isOver?l=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:c},{type:"kern",size:.2},{type:"elem",elem:r}]},e):l=be.makeVList({positionType:"bottom",positionData:c.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:c}]},e)}return be.makeSpan(["mord",s.isOver?"mover":"munder"],[l],e)},B3e=(t,e)=>{var n=Vl.mathMLnode(t.label);return new qe.MathNode(t.isOver?"mover":"munder",[lr(t.base,e),n])};tt({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:r}=t;return{type:"horizBrace",mode:n.mode,label:r,isOver:/^\\over/.test(r),base:e[0]}},htmlBuilder:jU,mathmlBuilder:B3e});tt({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[1],s=en(e[0],"url").url;return n.settings.isTrusted({command:"\\href",url:s})?{type:"href",mode:n.mode,href:s,body:Qr(r)}:n.formatUnsupportedCmd("\\href")},htmlBuilder:(t,e)=>{var n=hs(t.body,e,!1);return be.makeAnchor(t.href,[],n,e)},mathmlBuilder:(t,e)=>{var n=nu(t.body,e);return n instanceof Qi||(n=new Qi("mrow",[n])),n.setAttribute("href",t.href),n}});tt({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=en(e[0],"url").url;if(!n.settings.isTrusted({command:"\\url",url:r}))return n.formatUnsupportedCmd("\\url");for(var s=[],i=0;i{var{parser:n,funcName:r,token:s}=t,i=en(e[0],"raw").string,a=e[1];n.settings.strict&&n.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var l,c={};switch(r){case"\\htmlClass":c.class=i,l={command:"\\htmlClass",class:i};break;case"\\htmlId":c.id=i,l={command:"\\htmlId",id:i};break;case"\\htmlStyle":c.style=i,l={command:"\\htmlStyle",style:i};break;case"\\htmlData":{for(var d=i.split(","),h=0;h{var n=hs(t.body,e,!1),r=["enclosing"];t.attributes.class&&r.push(...t.attributes.class.trim().split(/\s+/));var s=be.makeSpan(r,n,e);for(var i in t.attributes)i!=="class"&&t.attributes.hasOwnProperty(i)&&s.setAttribute(i,t.attributes[i]);return s},mathmlBuilder:(t,e)=>nu(t.body,e)});tt({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t;return{type:"htmlmathml",mode:n.mode,html:Qr(e[0]),mathml:Qr(e[1])}},htmlBuilder:(t,e)=>{var n=hs(t.html,e,!1);return be.makeFragment(n)},mathmlBuilder:(t,e)=>nu(t.mathml,e)});var YS=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var n=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!n)throw new $e("Invalid size: '"+e+"' in \\includegraphics");var r={number:+(n[1]+n[2]),unit:n[3]};if(!QV(r))throw new $e("Invalid unit: '"+r.unit+"' in \\includegraphics.");return r};tt({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(t,e,n)=>{var{parser:r}=t,s={number:0,unit:"em"},i={number:.9,unit:"em"},a={number:0,unit:"em"},l="";if(n[0])for(var c=en(n[0],"raw").string,d=c.split(","),h=0;h{var n=Rr(t.height,e),r=0;t.totalheight.number>0&&(r=Rr(t.totalheight,e)-n);var s=0;t.width.number>0&&(s=Rr(t.width,e));var i={height:Xe(n+r)};s>0&&(i.width=Xe(s)),r>0&&(i.verticalAlign=Xe(-r));var a=new B5e(t.src,t.alt,i);return a.height=n,a.depth=r,a},mathmlBuilder:(t,e)=>{var n=new qe.MathNode("mglyph",[]);n.setAttribute("alt",t.alt);var r=Rr(t.height,e),s=0;if(t.totalheight.number>0&&(s=Rr(t.totalheight,e)-r,n.setAttribute("valign",Xe(-s))),n.setAttribute("height",Xe(r+s)),t.width.number>0){var i=Rr(t.width,e);n.setAttribute("width",Xe(i))}return n.setAttribute("src",t.src),n}});tt({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(t,e){var{parser:n,funcName:r}=t,s=en(e[0],"size");if(n.settings.strict){var i=r[1]==="m",a=s.value.unit==="mu";i?(a||n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" supports only mu units, "+("not "+s.value.unit+" units")),n.mode!=="math"&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" works only in math mode")):a&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" doesn't support mu units")}return{type:"kern",mode:n.mode,dimension:s.value}},htmlBuilder(t,e){return be.makeGlue(t.dimension,e)},mathmlBuilder(t,e){var n=Rr(t.dimension,e);return new qe.SpaceNode(n)}});tt({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0];return{type:"lap",mode:n.mode,alignment:r.slice(5),body:s}},htmlBuilder:(t,e)=>{var n;t.alignment==="clap"?(n=be.makeSpan([],[Pn(t.body,e)]),n=be.makeSpan(["inner"],[n],e)):n=be.makeSpan(["inner"],[Pn(t.body,e)]);var r=be.makeSpan(["fix"],[]),s=be.makeSpan([t.alignment],[n,r],e),i=be.makeSpan(["strut"]);return i.style.height=Xe(s.height+s.depth),s.depth&&(i.style.verticalAlign=Xe(-s.depth)),s.children.unshift(i),s=be.makeSpan(["thinbox"],[s],e),be.makeSpan(["mord","vbox"],[s],e)},mathmlBuilder:(t,e)=>{var n=new qe.MathNode("mpadded",[lr(t.body,e)]);if(t.alignment!=="rlap"){var r=t.alignment==="llap"?"-1":"-0.5";n.setAttribute("lspace",r+"width")}return n.setAttribute("width","0px"),n}});tt({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){var{funcName:n,parser:r}=t,s=r.mode;r.switchMode("math");var i=n==="\\("?"\\)":"$",a=r.parseExpression(!1,i);return r.expect(i),r.switchMode(s),{type:"styling",mode:r.mode,style:"text",body:a}}});tt({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){throw new $e("Mismatched "+t.funcName)}});var jR=(t,e)=>{switch(e.style.size){case Et.DISPLAY.size:return t.display;case Et.TEXT.size:return t.text;case Et.SCRIPT.size:return t.script;case Et.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}};tt({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(t,e)=>{var{parser:n}=t;return{type:"mathchoice",mode:n.mode,display:Qr(e[0]),text:Qr(e[1]),script:Qr(e[2]),scriptscript:Qr(e[3])}},htmlBuilder:(t,e)=>{var n=jR(t,e),r=hs(n,e,!1);return be.makeFragment(r)},mathmlBuilder:(t,e)=>{var n=jR(t,e);return nu(n,e)}});var NU=(t,e,n,r,s,i,a)=>{t=be.makeSpan([],[t]);var l=n&&$n.isCharacterBox(n),c,d;if(e){var h=Pn(e,r.havingStyle(s.sup()),r);d={elem:h,kern:Math.max(r.fontMetrics().bigOpSpacing1,r.fontMetrics().bigOpSpacing3-h.depth)}}if(n){var m=Pn(n,r.havingStyle(s.sub()),r);c={elem:m,kern:Math.max(r.fontMetrics().bigOpSpacing2,r.fontMetrics().bigOpSpacing4-m.height)}}var g;if(d&&c){var x=r.fontMetrics().bigOpSpacing5+c.elem.height+c.elem.depth+c.kern+t.depth+a;g=be.makeVList({positionType:"bottom",positionData:x,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:c.elem,marginLeft:Xe(-i)},{type:"kern",size:c.kern},{type:"elem",elem:t},{type:"kern",size:d.kern},{type:"elem",elem:d.elem,marginLeft:Xe(i)},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else if(c){var y=t.height-a;g=be.makeVList({positionType:"top",positionData:y,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:c.elem,marginLeft:Xe(-i)},{type:"kern",size:c.kern},{type:"elem",elem:t}]},r)}else if(d){var w=t.depth+a;g=be.makeVList({positionType:"bottom",positionData:w,children:[{type:"elem",elem:t},{type:"kern",size:d.kern},{type:"elem",elem:d.elem,marginLeft:Xe(i)},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else return t;var S=[g];if(c&&i!==0&&!l){var k=be.makeSpan(["mspace"],[],r);k.style.marginRight=Xe(i),S.unshift(k)}return be.makeSpan(["mop","op-limits"],S,r)},CU=["\\smallint"],Ff=(t,e)=>{var n,r,s=!1,i;t.type==="supsub"?(n=t.sup,r=t.sub,i=en(t.base,"op"),s=!0):i=en(t,"op");var a=e.style,l=!1;a.size===Et.DISPLAY.size&&i.symbol&&!CU.includes(i.name)&&(l=!0);var c;if(i.symbol){var d=l?"Size2-Regular":"Size1-Regular",h="";if((i.name==="\\oiint"||i.name==="\\oiiint")&&(h=i.name.slice(1),i.name=h==="oiint"?"\\iint":"\\iiint"),c=be.makeSymbol(i.name,d,"math",e,["mop","op-symbol",l?"large-op":"small-op"]),h.length>0){var m=c.italic,g=be.staticSvg(h+"Size"+(l?"2":"1"),e);c=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:c,shift:0},{type:"elem",elem:g,shift:l?.08:0}]},e),i.name="\\"+h,c.classes.unshift("mop"),c.italic=m}}else if(i.body){var x=hs(i.body,e,!0);x.length===1&&x[0]instanceof Ma?(c=x[0],c.classes[0]="mop"):c=be.makeSpan(["mop"],x,e)}else{for(var y=[],w=1;w{var n;if(t.symbol)n=new Qi("mo",[Aa(t.name,t.mode)]),CU.includes(t.name)&&n.setAttribute("largeop","false");else if(t.body)n=new Qi("mo",_i(t.body,e));else{n=new Qi("mi",[new Mo(t.name.slice(1))]);var r=new Qi("mo",[Aa("⁡","text")]);t.parentIsSupSub?n=new Qi("mrow",[n,r]):n=tU([n,r])}return n},F3e={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"};tt({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=r;return s.length===1&&(s=F3e[s]),{type:"op",mode:n.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:s}},htmlBuilder:Ff,mathmlBuilder:mg});tt({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"op",mode:n.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:Qr(r)}},htmlBuilder:Ff,mathmlBuilder:mg});var q3e={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"};tt({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(t){var{parser:e,funcName:n}=t;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:Ff,mathmlBuilder:mg});tt({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(t){var{parser:e,funcName:n}=t;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:Ff,mathmlBuilder:mg});tt({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],props:{numArgs:0},handler(t){var{parser:e,funcName:n}=t,r=n;return r.length===1&&(r=q3e[r]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:r}},htmlBuilder:Ff,mathmlBuilder:mg});var TU=(t,e)=>{var n,r,s=!1,i;t.type==="supsub"?(n=t.sup,r=t.sub,i=en(t.base,"operatorname"),s=!0):i=en(t,"operatorname");var a;if(i.body.length>0){for(var l=i.body.map(m=>{var g=m.text;return typeof g=="string"?{type:"textord",mode:m.mode,text:g}:m}),c=hs(l,e.withFont("mathrm"),!0),d=0;d{for(var n=_i(t.body,e.withFont("mathrm")),r=!0,s=0;sh.toText()).join("");n=[new qe.TextNode(l)]}var c=new qe.MathNode("mi",n);c.setAttribute("mathvariant","normal");var d=new qe.MathNode("mo",[Aa("⁡","text")]);return t.parentIsSupSub?new qe.MathNode("mrow",[c,d]):qe.newDocumentFragment([c,d])};tt({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0];return{type:"operatorname",mode:n.mode,body:Qr(s),alwaysHandleSupSub:r==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},htmlBuilder:TU,mathmlBuilder:$3e});Z("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");Sd({type:"ordgroup",htmlBuilder(t,e){return t.semisimple?be.makeFragment(hs(t.body,e,!1)):be.makeSpan(["mord"],hs(t.body,e,!0),e)},mathmlBuilder(t,e){return nu(t.body,e,!0)}});tt({type:"overline",names:["\\overline"],props:{numArgs:1},handler(t,e){var{parser:n}=t,r=e[0];return{type:"overline",mode:n.mode,body:r}},htmlBuilder(t,e){var n=Pn(t.body,e.havingCrampedStyle()),r=be.makeLineSpan("overline-line",e),s=e.fontMetrics().defaultRuleThickness,i=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n},{type:"kern",size:3*s},{type:"elem",elem:r},{type:"kern",size:s}]},e);return be.makeSpan(["mord","overline"],[i],e)},mathmlBuilder(t,e){var n=new qe.MathNode("mo",[new qe.TextNode("‾")]);n.setAttribute("stretchy","true");var r=new qe.MathNode("mover",[lr(t.body,e),n]);return r.setAttribute("accent","true"),r}});tt({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"phantom",mode:n.mode,body:Qr(r)}},htmlBuilder:(t,e)=>{var n=hs(t.body,e.withPhantom(),!1);return be.makeFragment(n)},mathmlBuilder:(t,e)=>{var n=_i(t.body,e);return new qe.MathNode("mphantom",n)}});tt({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"hphantom",mode:n.mode,body:r}},htmlBuilder:(t,e)=>{var n=be.makeSpan([],[Pn(t.body,e.withPhantom())]);if(n.height=0,n.depth=0,n.children)for(var r=0;r{var n=_i(Qr(t.body),e),r=new qe.MathNode("mphantom",n),s=new qe.MathNode("mpadded",[r]);return s.setAttribute("height","0px"),s.setAttribute("depth","0px"),s}});tt({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"vphantom",mode:n.mode,body:r}},htmlBuilder:(t,e)=>{var n=be.makeSpan(["inner"],[Pn(t.body,e.withPhantom())]),r=be.makeSpan(["fix"],[]);return be.makeSpan(["mord","rlap"],[n,r],e)},mathmlBuilder:(t,e)=>{var n=_i(Qr(t.body),e),r=new qe.MathNode("mphantom",n),s=new qe.MathNode("mpadded",[r]);return s.setAttribute("width","0px"),s}});tt({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(t,e){var{parser:n}=t,r=en(e[0],"size").value,s=e[1];return{type:"raisebox",mode:n.mode,dy:r,body:s}},htmlBuilder(t,e){var n=Pn(t.body,e),r=Rr(t.dy,e);return be.makeVList({positionType:"shift",positionData:-r,children:[{type:"elem",elem:n}]},e)},mathmlBuilder(t,e){var n=new qe.MathNode("mpadded",[lr(t.body,e)]),r=t.dy.number+t.dy.unit;return n.setAttribute("voffset",r),n}});tt({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(t){var{parser:e}=t;return{type:"internal",mode:e.mode}}});tt({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(t,e,n){var{parser:r}=t,s=n[0],i=en(e[0],"size"),a=en(e[1],"size");return{type:"rule",mode:r.mode,shift:s&&en(s,"size").value,width:i.value,height:a.value}},htmlBuilder(t,e){var n=be.makeSpan(["mord","rule"],[],e),r=Rr(t.width,e),s=Rr(t.height,e),i=t.shift?Rr(t.shift,e):0;return n.style.borderRightWidth=Xe(r),n.style.borderTopWidth=Xe(s),n.style.bottom=Xe(i),n.width=r,n.height=s+i,n.depth=-i,n.maxFontSize=s*1.125*e.sizeMultiplier,n},mathmlBuilder(t,e){var n=Rr(t.width,e),r=Rr(t.height,e),s=t.shift?Rr(t.shift,e):0,i=e.color&&e.getColor()||"black",a=new qe.MathNode("mspace");a.setAttribute("mathbackground",i),a.setAttribute("width",Xe(n)),a.setAttribute("height",Xe(r));var l=new qe.MathNode("mpadded",[a]);return s>=0?l.setAttribute("height",Xe(s)):(l.setAttribute("height",Xe(s)),l.setAttribute("depth",Xe(-s))),l.setAttribute("voffset",Xe(s)),l}});function EU(t,e,n){for(var r=hs(t,e,!1),s=e.sizeMultiplier/n.sizeMultiplier,i=0;i{var n=e.havingSize(t.size);return EU(t.body,n,e)};tt({type:"sizing",names:NR,props:{numArgs:0,allowedInText:!0},handler:(t,e)=>{var{breakOnTokenText:n,funcName:r,parser:s}=t,i=s.parseExpression(!1,n);return{type:"sizing",mode:s.mode,size:NR.indexOf(r)+1,body:i}},htmlBuilder:H3e,mathmlBuilder:(t,e)=>{var n=e.havingSize(t.size),r=_i(t.body,n),s=new qe.MathNode("mstyle",r);return s.setAttribute("mathsize",Xe(n.sizeMultiplier)),s}});tt({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(t,e,n)=>{var{parser:r}=t,s=!1,i=!1,a=n[0]&&en(n[0],"ordgroup");if(a)for(var l="",c=0;c{var n=be.makeSpan([],[Pn(t.body,e)]);if(!t.smashHeight&&!t.smashDepth)return n;if(t.smashHeight&&(n.height=0,n.children))for(var r=0;r{var n=new qe.MathNode("mpadded",[lr(t.body,e)]);return t.smashHeight&&n.setAttribute("height","0px"),t.smashDepth&&n.setAttribute("depth","0px"),n}});tt({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,n){var{parser:r}=t,s=n[0],i=e[0];return{type:"sqrt",mode:r.mode,body:i,index:s}},htmlBuilder(t,e){var n=Pn(t.body,e.havingCrampedStyle());n.height===0&&(n.height=e.fontMetrics().xHeight),n=be.wrapFragment(n,e);var r=e.fontMetrics(),s=r.defaultRuleThickness,i=s;e.style.idn.height+n.depth+a&&(a=(a+m-n.height-n.depth)/2);var g=c.height-n.height-a-d;n.style.paddingLeft=Xe(h);var x=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:-(n.height+g)},{type:"elem",elem:c},{type:"kern",size:d}]},e);if(t.index){var y=e.havingStyle(Et.SCRIPTSCRIPT),w=Pn(t.index,y,e),S=.6*(x.height-x.depth),k=be.makeVList({positionType:"shift",positionData:-S,children:[{type:"elem",elem:w}]},e),j=be.makeSpan(["root"],[k]);return be.makeSpan(["mord","sqrt"],[j,x],e)}else return be.makeSpan(["mord","sqrt"],[x],e)},mathmlBuilder(t,e){var{body:n,index:r}=t;return r?new qe.MathNode("mroot",[lr(n,e),lr(r,e)]):new qe.MathNode("msqrt",[lr(n,e)])}});var CR={display:Et.DISPLAY,text:Et.TEXT,script:Et.SCRIPT,scriptscript:Et.SCRIPTSCRIPT};tt({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t,e){var{breakOnTokenText:n,funcName:r,parser:s}=t,i=s.parseExpression(!0,n),a=r.slice(1,r.length-5);return{type:"styling",mode:s.mode,style:a,body:i}},htmlBuilder(t,e){var n=CR[t.style],r=e.havingStyle(n).withFont("");return EU(t.body,r,e)},mathmlBuilder(t,e){var n=CR[t.style],r=e.havingStyle(n),s=_i(t.body,r),i=new qe.MathNode("mstyle",s),a={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},l=a[t.style];return i.setAttribute("scriptlevel",l[0]),i.setAttribute("displaystyle",l[1]),i}});var Q3e=function(e,n){var r=e.base;if(r)if(r.type==="op"){var s=r.limits&&(n.style.size===Et.DISPLAY.size||r.alwaysHandleSupSub);return s?Ff:null}else if(r.type==="operatorname"){var i=r.alwaysHandleSupSub&&(n.style.size===Et.DISPLAY.size||r.limits);return i?TU:null}else{if(r.type==="accent")return $n.isCharacterBox(r.base)?TN:null;if(r.type==="horizBrace"){var a=!e.sub;return a===r.isOver?jU:null}else return null}else return null};Sd({type:"supsub",htmlBuilder(t,e){var n=Q3e(t,e);if(n)return n(t,e);var{base:r,sup:s,sub:i}=t,a=Pn(r,e),l,c,d=e.fontMetrics(),h=0,m=0,g=r&&$n.isCharacterBox(r);if(s){var x=e.havingStyle(e.style.sup());l=Pn(s,x,e),g||(h=a.height-x.fontMetrics().supDrop*x.sizeMultiplier/e.sizeMultiplier)}if(i){var y=e.havingStyle(e.style.sub());c=Pn(i,y,e),g||(m=a.depth+y.fontMetrics().subDrop*y.sizeMultiplier/e.sizeMultiplier)}var w;e.style===Et.DISPLAY?w=d.sup1:e.style.cramped?w=d.sup3:w=d.sup2;var S=e.sizeMultiplier,k=Xe(.5/d.ptPerEm/S),j=null;if(c){var N=t.base&&t.base.type==="op"&&t.base.name&&(t.base.name==="\\oiint"||t.base.name==="\\oiiint");(a instanceof Ma||N)&&(j=Xe(-a.italic))}var T;if(l&&c){h=Math.max(h,w,l.depth+.25*d.xHeight),m=Math.max(m,d.sub2);var E=d.defaultRuleThickness,_=4*E;if(h-l.depth-(c.height-m)<_){m=_-(h-l.depth)+c.height;var M=.8*d.xHeight-(h-l.depth);M>0&&(h+=M,m-=M)}var I=[{type:"elem",elem:c,shift:m,marginRight:k,marginLeft:j},{type:"elem",elem:l,shift:-h,marginRight:k}];T=be.makeVList({positionType:"individualShift",children:I},e)}else if(c){m=Math.max(m,d.sub1,c.height-.8*d.xHeight);var P=[{type:"elem",elem:c,marginLeft:j,marginRight:k}];T=be.makeVList({positionType:"shift",positionData:m,children:P},e)}else if(l)h=Math.max(h,w,l.depth+.25*d.xHeight),T=be.makeVList({positionType:"shift",positionData:-h,children:[{type:"elem",elem:l,marginRight:k}]},e);else throw new Error("supsub must have either sup or sub.");var L=zO(a,"right")||"mord";return be.makeSpan([L],[a,be.makeSpan(["msupsub"],[T])],e)},mathmlBuilder(t,e){var n=!1,r,s;t.base&&t.base.type==="horizBrace"&&(s=!!t.sup,s===t.base.isOver&&(n=!0,r=t.base.isOver)),t.base&&(t.base.type==="op"||t.base.type==="operatorname")&&(t.base.parentIsSupSub=!0);var i=[lr(t.base,e)];t.sub&&i.push(lr(t.sub,e)),t.sup&&i.push(lr(t.sup,e));var a;if(n)a=r?"mover":"munder";else if(t.sub)if(t.sup){var d=t.base;d&&d.type==="op"&&d.limits&&e.style===Et.DISPLAY||d&&d.type==="operatorname"&&d.alwaysHandleSupSub&&(e.style===Et.DISPLAY||d.limits)?a="munderover":a="msubsup"}else{var c=t.base;c&&c.type==="op"&&c.limits&&(e.style===Et.DISPLAY||c.alwaysHandleSupSub)||c&&c.type==="operatorname"&&c.alwaysHandleSupSub&&(c.limits||e.style===Et.DISPLAY)?a="munder":a="msub"}else{var l=t.base;l&&l.type==="op"&&l.limits&&(e.style===Et.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||e.style===Et.DISPLAY)?a="mover":a="msup"}return new qe.MathNode(a,i)}});Sd({type:"atom",htmlBuilder(t,e){return be.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder(t,e){var n=new qe.MathNode("mo",[Aa(t.text,t.mode)]);if(t.family==="bin"){var r=NN(t,e);r==="bold-italic"&&n.setAttribute("mathvariant",r)}else t.family==="punct"?n.setAttribute("separator","true"):(t.family==="open"||t.family==="close")&&n.setAttribute("stretchy","false");return n}});var _U={mi:"italic",mn:"normal",mtext:"normal"};Sd({type:"mathord",htmlBuilder(t,e){return be.makeOrd(t,e,"mathord")},mathmlBuilder(t,e){var n=new qe.MathNode("mi",[Aa(t.text,t.mode,e)]),r=NN(t,e)||"italic";return r!==_U[n.type]&&n.setAttribute("mathvariant",r),n}});Sd({type:"textord",htmlBuilder(t,e){return be.makeOrd(t,e,"textord")},mathmlBuilder(t,e){var n=Aa(t.text,t.mode,e),r=NN(t,e)||"normal",s;return t.mode==="text"?s=new qe.MathNode("mtext",[n]):/[0-9]/.test(t.text)?s=new qe.MathNode("mn",[n]):t.text==="\\prime"?s=new qe.MathNode("mo",[n]):s=new qe.MathNode("mi",[n]),r!==_U[s.type]&&s.setAttribute("mathvariant",r),s}});var KS={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},ZS={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};Sd({type:"spacing",htmlBuilder(t,e){if(ZS.hasOwnProperty(t.text)){var n=ZS[t.text].className||"";if(t.mode==="text"){var r=be.makeOrd(t,e,"textord");return r.classes.push(n),r}else return be.makeSpan(["mspace",n],[be.mathsym(t.text,t.mode,e)],e)}else{if(KS.hasOwnProperty(t.text))return be.makeSpan(["mspace",KS[t.text]],[],e);throw new $e('Unknown type of space "'+t.text+'"')}},mathmlBuilder(t,e){var n;if(ZS.hasOwnProperty(t.text))n=new qe.MathNode("mtext",[new qe.TextNode(" ")]);else{if(KS.hasOwnProperty(t.text))return new qe.MathNode("mspace");throw new $e('Unknown type of space "'+t.text+'"')}return n}});var TR=()=>{var t=new qe.MathNode("mtd",[]);return t.setAttribute("width","50%"),t};Sd({type:"tag",mathmlBuilder(t,e){var n=new qe.MathNode("mtable",[new qe.MathNode("mtr",[TR(),new qe.MathNode("mtd",[nu(t.body,e)]),TR(),new qe.MathNode("mtd",[nu(t.tag,e)])])]);return n.setAttribute("width","100%"),n}});var ER={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},_R={"\\textbf":"textbf","\\textmd":"textmd"},V3e={"\\textit":"textit","\\textup":"textup"},MR=(t,e)=>{var n=t.font;if(n){if(ER[n])return e.withTextFontFamily(ER[n]);if(_R[n])return e.withTextFontWeight(_R[n]);if(n==="\\emph")return e.fontShape==="textit"?e.withTextFontShape("textup"):e.withTextFontShape("textit")}else return e;return e.withTextFontShape(V3e[n])};tt({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];return{type:"text",mode:n.mode,body:Qr(s),font:r}},htmlBuilder(t,e){var n=MR(t,e),r=hs(t.body,n,!0);return be.makeSpan(["mord","text"],r,n)},mathmlBuilder(t,e){var n=MR(t,e);return nu(t.body,n)}});tt({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"underline",mode:n.mode,body:e[0]}},htmlBuilder(t,e){var n=Pn(t.body,e),r=be.makeLineSpan("underline-line",e),s=e.fontMetrics().defaultRuleThickness,i=be.makeVList({positionType:"top",positionData:n.height,children:[{type:"kern",size:s},{type:"elem",elem:r},{type:"kern",size:3*s},{type:"elem",elem:n}]},e);return be.makeSpan(["mord","underline"],[i],e)},mathmlBuilder(t,e){var n=new qe.MathNode("mo",[new qe.TextNode("‾")]);n.setAttribute("stretchy","true");var r=new qe.MathNode("munder",[lr(t.body,e),n]);return r.setAttribute("accentunder","true"),r}});tt({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(t,e){var{parser:n}=t;return{type:"vcenter",mode:n.mode,body:e[0]}},htmlBuilder(t,e){var n=Pn(t.body,e),r=e.fontMetrics().axisHeight,s=.5*(n.height-r-(n.depth+r));return be.makeVList({positionType:"shift",positionData:s,children:[{type:"elem",elem:n}]},e)},mathmlBuilder(t,e){return new qe.MathNode("mpadded",[lr(t.body,e)],["vcenter"])}});tt({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,e,n){throw new $e("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(t,e){for(var n=AR(t),r=[],s=e.havingStyle(e.style.text()),i=0;it.body.replace(/ /g,t.star?"␣":" "),Fc=JV,MU=`[ \r - ]`,U3e="\\\\[a-zA-Z@]+",W3e="\\\\[^\uD800-\uDFFF]",G3e="("+U3e+")"+MU+"*",X3e=`\\\\( +-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}};class mg{constructor(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return this.classes.includes(e)}toNode(){for(var e=document.createDocumentFragment(),n=0;nn.toText();return this.children.map(e).join("")}}var _o={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},A1={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},dR={Å:"A",Ð:"D",Þ:"o",å:"a",ð:"d",þ:"o",А:"A",Б:"B",В:"B",Г:"F",Д:"A",Е:"E",Ж:"K",З:"3",И:"N",Й:"N",К:"K",Л:"N",М:"M",Н:"H",О:"O",П:"N",Р:"P",С:"C",Т:"T",У:"y",Ф:"O",Х:"X",Ц:"U",Ч:"h",Ш:"W",Щ:"W",Ъ:"B",Ы:"X",Ь:"B",Э:"3",Ю:"X",Я:"R",а:"a",б:"b",в:"a",г:"r",д:"y",е:"e",ж:"m",з:"e",и:"n",й:"n",к:"n",л:"n",м:"m",н:"n",о:"o",п:"n",р:"p",с:"c",т:"o",у:"y",ф:"b",х:"x",ц:"n",ч:"n",ш:"w",щ:"w",ъ:"a",ы:"m",ь:"a",э:"e",ю:"m",я:"r"};function J5e(t,e){_o[t]=e}function NN(t,e,n){if(!_o[e])throw new Error("Font metrics not found for font: "+e+".");var r=t.charCodeAt(0),s=_o[e][r];if(!s&&t[0]in dR&&(r=dR[t[0]].charCodeAt(0),s=_o[e][r]),!s&&n==="text"&&XV(r)&&(s=_o[e][77]),s)return{depth:s[0],height:s[1],italic:s[2],skew:s[3],width:s[4]}}var VS={};function e3e(t){var e;if(t>=5?e=0:t>=3?e=1:e=2,!VS[e]){var n=VS[e]={cssEmPerMu:A1.quad[e]/18};for(var r in A1)A1.hasOwnProperty(r)&&(n[r]=A1[r][e])}return VS[e]}var t3e=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],hR=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],fR=function(e,n){return n.size<2?e:t3e[e-1][n.size-1]};class Tl{constructor(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||Tl.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=hR[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var n={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);return new Tl(n)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:fR(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:hR[e-1]})}havingBaseStyle(e){e=e||this.style.text();var n=fR(Tl.BASESIZE,e);return this.size===n&&this.textSize===Tl.BASESIZE&&this.style===e?this:this.extend({style:e,size:n})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==Tl.BASESIZE?["sizing","reset-size"+this.size,"size"+Tl.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=e3e(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}Tl.BASESIZE=6;var BO={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},n3e={ex:!0,em:!0,mu:!0},YV=function(e){return typeof e!="string"&&(e=e.unit),e in BO||e in n3e||e==="ex"},Rr=function(e,n){var r;if(e.unit in BO)r=BO[e.unit]/n.fontMetrics().ptPerEm/n.sizeMultiplier;else if(e.unit==="mu")r=n.fontMetrics().cssEmPerMu;else{var s;if(n.style.isTight()?s=n.havingStyle(n.style.text()):s=n,e.unit==="ex")r=s.fontMetrics().xHeight;else if(e.unit==="em")r=s.fontMetrics().quad;else throw new $e("Invalid unit: '"+e.unit+"'");s!==n&&(r*=s.sizeMultiplier/n.sizeMultiplier)}return Math.min(e.number*r,n.maxSize)},Xe=function(e){return+e.toFixed(4)+"em"},eu=function(e){return e.filter(n=>n).join(" ")},KV=function(e,n,r){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},n){n.style.isTight()&&this.classes.push("mtight");var s=n.getColor();s&&(this.style.color=s)}},ZV=function(e){var n=document.createElement(e);n.className=eu(this.classes);for(var r in this.style)this.style.hasOwnProperty(r)&&(n.style[r]=this.style[r]);for(var s in this.attributes)this.attributes.hasOwnProperty(s)&&n.setAttribute(s,this.attributes[s]);for(var i=0;i/=\x00-\x1f]/,JV=function(e){var n="<"+e;this.classes.length&&(n+=' class="'+$n.escape(eu(this.classes))+'"');var r="";for(var s in this.style)this.style.hasOwnProperty(s)&&(r+=$n.hyphenate(s)+":"+this.style[s]+";");r&&(n+=' style="'+$n.escape(r)+'"');for(var i in this.attributes)if(this.attributes.hasOwnProperty(i)){if(r3e.test(i))throw new $e("Invalid attribute name '"+i+"'");n+=" "+i+'="'+$n.escape(this.attributes[i])+'"'}n+=">";for(var a=0;a",n};class pg{constructor(e,n,r,s){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,KV.call(this,e,r,s),this.children=n||[]}setAttribute(e,n){this.attributes[e]=n}hasClass(e){return this.classes.includes(e)}toNode(){return ZV.call(this,"span")}toMarkup(){return JV.call(this,"span")}}class CN{constructor(e,n,r,s){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,KV.call(this,n,s),this.children=r||[],this.setAttribute("href",e)}setAttribute(e,n){this.attributes[e]=n}hasClass(e){return this.classes.includes(e)}toNode(){return ZV.call(this,"a")}toMarkup(){return JV.call(this,"a")}}class s3e{constructor(e,n,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=n,this.src=e,this.classes=["mord"],this.style=r}hasClass(e){return this.classes.includes(e)}toNode(){var e=document.createElement("img");e.src=this.src,e.alt=this.alt,e.className="mord";for(var n in this.style)this.style.hasOwnProperty(n)&&(e.style[n]=this.style[n]);return e}toMarkup(){var e=''+$n.escape(this.alt)+'0&&(n=document.createElement("span"),n.style.marginRight=Xe(this.italic)),this.classes.length>0&&(n=n||document.createElement("span"),n.className=eu(this.classes));for(var r in this.style)this.style.hasOwnProperty(r)&&(n=n||document.createElement("span"),n.style[r]=this.style[r]);return n?(n.appendChild(e),n):e}toMarkup(){var e=!1,n="0&&(r+="margin-right:"+this.italic+"em;");for(var s in this.style)this.style.hasOwnProperty(s)&&(r+=$n.hyphenate(s)+":"+this.style[s]+";");r&&(e=!0,n+=' style="'+$n.escape(r)+'"');var i=$n.escape(this.text);return e?(n+=">",n+=i,n+="",n):i}}class Ql{constructor(e,n){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=n||{}}toNode(){var e="http://www.w3.org/2000/svg",n=document.createElementNS(e,"svg");for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&n.setAttribute(r,this.attributes[r]);for(var s=0;s':''}}class FO{constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e="http://www.w3.org/2000/svg",n=document.createElementNS(e,"line");for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&n.setAttribute(r,this.attributes[r]);return n}toMarkup(){var e=" but got "+String(t)+".")}var o3e={bin:1,close:1,inner:1,open:1,punct:1,rel:1},l3e={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},dr={math:{},text:{}};function M(t,e,n,r,s,i){dr[t][s]={font:e,group:n,replace:r},i&&r&&(dr[t][r]=dr[t][s])}var D="math",Be="text",H="main",le="ams",jr="accent-token",lt="bin",ai="close",qf="inner",Tt="mathord",os="op-token",Ji="open",qb="punct",ce="rel",Zl="spacing",me="textord";M(D,H,ce,"≡","\\equiv",!0);M(D,H,ce,"≺","\\prec",!0);M(D,H,ce,"≻","\\succ",!0);M(D,H,ce,"∼","\\sim",!0);M(D,H,ce,"⊥","\\perp");M(D,H,ce,"⪯","\\preceq",!0);M(D,H,ce,"⪰","\\succeq",!0);M(D,H,ce,"≃","\\simeq",!0);M(D,H,ce,"∣","\\mid",!0);M(D,H,ce,"≪","\\ll",!0);M(D,H,ce,"≫","\\gg",!0);M(D,H,ce,"≍","\\asymp",!0);M(D,H,ce,"∥","\\parallel");M(D,H,ce,"⋈","\\bowtie",!0);M(D,H,ce,"⌣","\\smile",!0);M(D,H,ce,"⊑","\\sqsubseteq",!0);M(D,H,ce,"⊒","\\sqsupseteq",!0);M(D,H,ce,"≐","\\doteq",!0);M(D,H,ce,"⌢","\\frown",!0);M(D,H,ce,"∋","\\ni",!0);M(D,H,ce,"∝","\\propto",!0);M(D,H,ce,"⊢","\\vdash",!0);M(D,H,ce,"⊣","\\dashv",!0);M(D,H,ce,"∋","\\owns");M(D,H,qb,".","\\ldotp");M(D,H,qb,"⋅","\\cdotp");M(D,H,me,"#","\\#");M(Be,H,me,"#","\\#");M(D,H,me,"&","\\&");M(Be,H,me,"&","\\&");M(D,H,me,"ℵ","\\aleph",!0);M(D,H,me,"∀","\\forall",!0);M(D,H,me,"ℏ","\\hbar",!0);M(D,H,me,"∃","\\exists",!0);M(D,H,me,"∇","\\nabla",!0);M(D,H,me,"♭","\\flat",!0);M(D,H,me,"ℓ","\\ell",!0);M(D,H,me,"♮","\\natural",!0);M(D,H,me,"♣","\\clubsuit",!0);M(D,H,me,"℘","\\wp",!0);M(D,H,me,"♯","\\sharp",!0);M(D,H,me,"♢","\\diamondsuit",!0);M(D,H,me,"ℜ","\\Re",!0);M(D,H,me,"♡","\\heartsuit",!0);M(D,H,me,"ℑ","\\Im",!0);M(D,H,me,"♠","\\spadesuit",!0);M(D,H,me,"§","\\S",!0);M(Be,H,me,"§","\\S");M(D,H,me,"¶","\\P",!0);M(Be,H,me,"¶","\\P");M(D,H,me,"†","\\dag");M(Be,H,me,"†","\\dag");M(Be,H,me,"†","\\textdagger");M(D,H,me,"‡","\\ddag");M(Be,H,me,"‡","\\ddag");M(Be,H,me,"‡","\\textdaggerdbl");M(D,H,ai,"⎱","\\rmoustache",!0);M(D,H,Ji,"⎰","\\lmoustache",!0);M(D,H,ai,"⟯","\\rgroup",!0);M(D,H,Ji,"⟮","\\lgroup",!0);M(D,H,lt,"∓","\\mp",!0);M(D,H,lt,"⊖","\\ominus",!0);M(D,H,lt,"⊎","\\uplus",!0);M(D,H,lt,"⊓","\\sqcap",!0);M(D,H,lt,"∗","\\ast");M(D,H,lt,"⊔","\\sqcup",!0);M(D,H,lt,"◯","\\bigcirc",!0);M(D,H,lt,"∙","\\bullet",!0);M(D,H,lt,"‡","\\ddagger");M(D,H,lt,"≀","\\wr",!0);M(D,H,lt,"⨿","\\amalg");M(D,H,lt,"&","\\And");M(D,H,ce,"⟵","\\longleftarrow",!0);M(D,H,ce,"⇐","\\Leftarrow",!0);M(D,H,ce,"⟸","\\Longleftarrow",!0);M(D,H,ce,"⟶","\\longrightarrow",!0);M(D,H,ce,"⇒","\\Rightarrow",!0);M(D,H,ce,"⟹","\\Longrightarrow",!0);M(D,H,ce,"↔","\\leftrightarrow",!0);M(D,H,ce,"⟷","\\longleftrightarrow",!0);M(D,H,ce,"⇔","\\Leftrightarrow",!0);M(D,H,ce,"⟺","\\Longleftrightarrow",!0);M(D,H,ce,"↦","\\mapsto",!0);M(D,H,ce,"⟼","\\longmapsto",!0);M(D,H,ce,"↗","\\nearrow",!0);M(D,H,ce,"↩","\\hookleftarrow",!0);M(D,H,ce,"↪","\\hookrightarrow",!0);M(D,H,ce,"↘","\\searrow",!0);M(D,H,ce,"↼","\\leftharpoonup",!0);M(D,H,ce,"⇀","\\rightharpoonup",!0);M(D,H,ce,"↙","\\swarrow",!0);M(D,H,ce,"↽","\\leftharpoondown",!0);M(D,H,ce,"⇁","\\rightharpoondown",!0);M(D,H,ce,"↖","\\nwarrow",!0);M(D,H,ce,"⇌","\\rightleftharpoons",!0);M(D,le,ce,"≮","\\nless",!0);M(D,le,ce,"","\\@nleqslant");M(D,le,ce,"","\\@nleqq");M(D,le,ce,"⪇","\\lneq",!0);M(D,le,ce,"≨","\\lneqq",!0);M(D,le,ce,"","\\@lvertneqq");M(D,le,ce,"⋦","\\lnsim",!0);M(D,le,ce,"⪉","\\lnapprox",!0);M(D,le,ce,"⊀","\\nprec",!0);M(D,le,ce,"⋠","\\npreceq",!0);M(D,le,ce,"⋨","\\precnsim",!0);M(D,le,ce,"⪹","\\precnapprox",!0);M(D,le,ce,"≁","\\nsim",!0);M(D,le,ce,"","\\@nshortmid");M(D,le,ce,"∤","\\nmid",!0);M(D,le,ce,"⊬","\\nvdash",!0);M(D,le,ce,"⊭","\\nvDash",!0);M(D,le,ce,"⋪","\\ntriangleleft");M(D,le,ce,"⋬","\\ntrianglelefteq",!0);M(D,le,ce,"⊊","\\subsetneq",!0);M(D,le,ce,"","\\@varsubsetneq");M(D,le,ce,"⫋","\\subsetneqq",!0);M(D,le,ce,"","\\@varsubsetneqq");M(D,le,ce,"≯","\\ngtr",!0);M(D,le,ce,"","\\@ngeqslant");M(D,le,ce,"","\\@ngeqq");M(D,le,ce,"⪈","\\gneq",!0);M(D,le,ce,"≩","\\gneqq",!0);M(D,le,ce,"","\\@gvertneqq");M(D,le,ce,"⋧","\\gnsim",!0);M(D,le,ce,"⪊","\\gnapprox",!0);M(D,le,ce,"⊁","\\nsucc",!0);M(D,le,ce,"⋡","\\nsucceq",!0);M(D,le,ce,"⋩","\\succnsim",!0);M(D,le,ce,"⪺","\\succnapprox",!0);M(D,le,ce,"≆","\\ncong",!0);M(D,le,ce,"","\\@nshortparallel");M(D,le,ce,"∦","\\nparallel",!0);M(D,le,ce,"⊯","\\nVDash",!0);M(D,le,ce,"⋫","\\ntriangleright");M(D,le,ce,"⋭","\\ntrianglerighteq",!0);M(D,le,ce,"","\\@nsupseteqq");M(D,le,ce,"⊋","\\supsetneq",!0);M(D,le,ce,"","\\@varsupsetneq");M(D,le,ce,"⫌","\\supsetneqq",!0);M(D,le,ce,"","\\@varsupsetneqq");M(D,le,ce,"⊮","\\nVdash",!0);M(D,le,ce,"⪵","\\precneqq",!0);M(D,le,ce,"⪶","\\succneqq",!0);M(D,le,ce,"","\\@nsubseteqq");M(D,le,lt,"⊴","\\unlhd");M(D,le,lt,"⊵","\\unrhd");M(D,le,ce,"↚","\\nleftarrow",!0);M(D,le,ce,"↛","\\nrightarrow",!0);M(D,le,ce,"⇍","\\nLeftarrow",!0);M(D,le,ce,"⇏","\\nRightarrow",!0);M(D,le,ce,"↮","\\nleftrightarrow",!0);M(D,le,ce,"⇎","\\nLeftrightarrow",!0);M(D,le,ce,"△","\\vartriangle");M(D,le,me,"ℏ","\\hslash");M(D,le,me,"▽","\\triangledown");M(D,le,me,"◊","\\lozenge");M(D,le,me,"Ⓢ","\\circledS");M(D,le,me,"®","\\circledR");M(Be,le,me,"®","\\circledR");M(D,le,me,"∡","\\measuredangle",!0);M(D,le,me,"∄","\\nexists");M(D,le,me,"℧","\\mho");M(D,le,me,"Ⅎ","\\Finv",!0);M(D,le,me,"⅁","\\Game",!0);M(D,le,me,"‵","\\backprime");M(D,le,me,"▲","\\blacktriangle");M(D,le,me,"▼","\\blacktriangledown");M(D,le,me,"■","\\blacksquare");M(D,le,me,"⧫","\\blacklozenge");M(D,le,me,"★","\\bigstar");M(D,le,me,"∢","\\sphericalangle",!0);M(D,le,me,"∁","\\complement",!0);M(D,le,me,"ð","\\eth",!0);M(Be,H,me,"ð","ð");M(D,le,me,"╱","\\diagup");M(D,le,me,"╲","\\diagdown");M(D,le,me,"□","\\square");M(D,le,me,"□","\\Box");M(D,le,me,"◊","\\Diamond");M(D,le,me,"¥","\\yen",!0);M(Be,le,me,"¥","\\yen",!0);M(D,le,me,"✓","\\checkmark",!0);M(Be,le,me,"✓","\\checkmark");M(D,le,me,"ℶ","\\beth",!0);M(D,le,me,"ℸ","\\daleth",!0);M(D,le,me,"ℷ","\\gimel",!0);M(D,le,me,"ϝ","\\digamma",!0);M(D,le,me,"ϰ","\\varkappa");M(D,le,Ji,"┌","\\@ulcorner",!0);M(D,le,ai,"┐","\\@urcorner",!0);M(D,le,Ji,"└","\\@llcorner",!0);M(D,le,ai,"┘","\\@lrcorner",!0);M(D,le,ce,"≦","\\leqq",!0);M(D,le,ce,"⩽","\\leqslant",!0);M(D,le,ce,"⪕","\\eqslantless",!0);M(D,le,ce,"≲","\\lesssim",!0);M(D,le,ce,"⪅","\\lessapprox",!0);M(D,le,ce,"≊","\\approxeq",!0);M(D,le,lt,"⋖","\\lessdot");M(D,le,ce,"⋘","\\lll",!0);M(D,le,ce,"≶","\\lessgtr",!0);M(D,le,ce,"⋚","\\lesseqgtr",!0);M(D,le,ce,"⪋","\\lesseqqgtr",!0);M(D,le,ce,"≑","\\doteqdot");M(D,le,ce,"≓","\\risingdotseq",!0);M(D,le,ce,"≒","\\fallingdotseq",!0);M(D,le,ce,"∽","\\backsim",!0);M(D,le,ce,"⋍","\\backsimeq",!0);M(D,le,ce,"⫅","\\subseteqq",!0);M(D,le,ce,"⋐","\\Subset",!0);M(D,le,ce,"⊏","\\sqsubset",!0);M(D,le,ce,"≼","\\preccurlyeq",!0);M(D,le,ce,"⋞","\\curlyeqprec",!0);M(D,le,ce,"≾","\\precsim",!0);M(D,le,ce,"⪷","\\precapprox",!0);M(D,le,ce,"⊲","\\vartriangleleft");M(D,le,ce,"⊴","\\trianglelefteq");M(D,le,ce,"⊨","\\vDash",!0);M(D,le,ce,"⊪","\\Vvdash",!0);M(D,le,ce,"⌣","\\smallsmile");M(D,le,ce,"⌢","\\smallfrown");M(D,le,ce,"≏","\\bumpeq",!0);M(D,le,ce,"≎","\\Bumpeq",!0);M(D,le,ce,"≧","\\geqq",!0);M(D,le,ce,"⩾","\\geqslant",!0);M(D,le,ce,"⪖","\\eqslantgtr",!0);M(D,le,ce,"≳","\\gtrsim",!0);M(D,le,ce,"⪆","\\gtrapprox",!0);M(D,le,lt,"⋗","\\gtrdot");M(D,le,ce,"⋙","\\ggg",!0);M(D,le,ce,"≷","\\gtrless",!0);M(D,le,ce,"⋛","\\gtreqless",!0);M(D,le,ce,"⪌","\\gtreqqless",!0);M(D,le,ce,"≖","\\eqcirc",!0);M(D,le,ce,"≗","\\circeq",!0);M(D,le,ce,"≜","\\triangleq",!0);M(D,le,ce,"∼","\\thicksim");M(D,le,ce,"≈","\\thickapprox");M(D,le,ce,"⫆","\\supseteqq",!0);M(D,le,ce,"⋑","\\Supset",!0);M(D,le,ce,"⊐","\\sqsupset",!0);M(D,le,ce,"≽","\\succcurlyeq",!0);M(D,le,ce,"⋟","\\curlyeqsucc",!0);M(D,le,ce,"≿","\\succsim",!0);M(D,le,ce,"⪸","\\succapprox",!0);M(D,le,ce,"⊳","\\vartriangleright");M(D,le,ce,"⊵","\\trianglerighteq");M(D,le,ce,"⊩","\\Vdash",!0);M(D,le,ce,"∣","\\shortmid");M(D,le,ce,"∥","\\shortparallel");M(D,le,ce,"≬","\\between",!0);M(D,le,ce,"⋔","\\pitchfork",!0);M(D,le,ce,"∝","\\varpropto");M(D,le,ce,"◀","\\blacktriangleleft");M(D,le,ce,"∴","\\therefore",!0);M(D,le,ce,"∍","\\backepsilon");M(D,le,ce,"▶","\\blacktriangleright");M(D,le,ce,"∵","\\because",!0);M(D,le,ce,"⋘","\\llless");M(D,le,ce,"⋙","\\gggtr");M(D,le,lt,"⊲","\\lhd");M(D,le,lt,"⊳","\\rhd");M(D,le,ce,"≂","\\eqsim",!0);M(D,H,ce,"⋈","\\Join");M(D,le,ce,"≑","\\Doteq",!0);M(D,le,lt,"∔","\\dotplus",!0);M(D,le,lt,"∖","\\smallsetminus");M(D,le,lt,"⋒","\\Cap",!0);M(D,le,lt,"⋓","\\Cup",!0);M(D,le,lt,"⩞","\\doublebarwedge",!0);M(D,le,lt,"⊟","\\boxminus",!0);M(D,le,lt,"⊞","\\boxplus",!0);M(D,le,lt,"⋇","\\divideontimes",!0);M(D,le,lt,"⋉","\\ltimes",!0);M(D,le,lt,"⋊","\\rtimes",!0);M(D,le,lt,"⋋","\\leftthreetimes",!0);M(D,le,lt,"⋌","\\rightthreetimes",!0);M(D,le,lt,"⋏","\\curlywedge",!0);M(D,le,lt,"⋎","\\curlyvee",!0);M(D,le,lt,"⊝","\\circleddash",!0);M(D,le,lt,"⊛","\\circledast",!0);M(D,le,lt,"⋅","\\centerdot");M(D,le,lt,"⊺","\\intercal",!0);M(D,le,lt,"⋒","\\doublecap");M(D,le,lt,"⋓","\\doublecup");M(D,le,lt,"⊠","\\boxtimes",!0);M(D,le,ce,"⇢","\\dashrightarrow",!0);M(D,le,ce,"⇠","\\dashleftarrow",!0);M(D,le,ce,"⇇","\\leftleftarrows",!0);M(D,le,ce,"⇆","\\leftrightarrows",!0);M(D,le,ce,"⇚","\\Lleftarrow",!0);M(D,le,ce,"↞","\\twoheadleftarrow",!0);M(D,le,ce,"↢","\\leftarrowtail",!0);M(D,le,ce,"↫","\\looparrowleft",!0);M(D,le,ce,"⇋","\\leftrightharpoons",!0);M(D,le,ce,"↶","\\curvearrowleft",!0);M(D,le,ce,"↺","\\circlearrowleft",!0);M(D,le,ce,"↰","\\Lsh",!0);M(D,le,ce,"⇈","\\upuparrows",!0);M(D,le,ce,"↿","\\upharpoonleft",!0);M(D,le,ce,"⇃","\\downharpoonleft",!0);M(D,H,ce,"⊶","\\origof",!0);M(D,H,ce,"⊷","\\imageof",!0);M(D,le,ce,"⊸","\\multimap",!0);M(D,le,ce,"↭","\\leftrightsquigarrow",!0);M(D,le,ce,"⇉","\\rightrightarrows",!0);M(D,le,ce,"⇄","\\rightleftarrows",!0);M(D,le,ce,"↠","\\twoheadrightarrow",!0);M(D,le,ce,"↣","\\rightarrowtail",!0);M(D,le,ce,"↬","\\looparrowright",!0);M(D,le,ce,"↷","\\curvearrowright",!0);M(D,le,ce,"↻","\\circlearrowright",!0);M(D,le,ce,"↱","\\Rsh",!0);M(D,le,ce,"⇊","\\downdownarrows",!0);M(D,le,ce,"↾","\\upharpoonright",!0);M(D,le,ce,"⇂","\\downharpoonright",!0);M(D,le,ce,"⇝","\\rightsquigarrow",!0);M(D,le,ce,"⇝","\\leadsto");M(D,le,ce,"⇛","\\Rrightarrow",!0);M(D,le,ce,"↾","\\restriction");M(D,H,me,"‘","`");M(D,H,me,"$","\\$");M(Be,H,me,"$","\\$");M(Be,H,me,"$","\\textdollar");M(D,H,me,"%","\\%");M(Be,H,me,"%","\\%");M(D,H,me,"_","\\_");M(Be,H,me,"_","\\_");M(Be,H,me,"_","\\textunderscore");M(D,H,me,"∠","\\angle",!0);M(D,H,me,"∞","\\infty",!0);M(D,H,me,"′","\\prime");M(D,H,me,"△","\\triangle");M(D,H,me,"Γ","\\Gamma",!0);M(D,H,me,"Δ","\\Delta",!0);M(D,H,me,"Θ","\\Theta",!0);M(D,H,me,"Λ","\\Lambda",!0);M(D,H,me,"Ξ","\\Xi",!0);M(D,H,me,"Π","\\Pi",!0);M(D,H,me,"Σ","\\Sigma",!0);M(D,H,me,"Υ","\\Upsilon",!0);M(D,H,me,"Φ","\\Phi",!0);M(D,H,me,"Ψ","\\Psi",!0);M(D,H,me,"Ω","\\Omega",!0);M(D,H,me,"A","Α");M(D,H,me,"B","Β");M(D,H,me,"E","Ε");M(D,H,me,"Z","Ζ");M(D,H,me,"H","Η");M(D,H,me,"I","Ι");M(D,H,me,"K","Κ");M(D,H,me,"M","Μ");M(D,H,me,"N","Ν");M(D,H,me,"O","Ο");M(D,H,me,"P","Ρ");M(D,H,me,"T","Τ");M(D,H,me,"X","Χ");M(D,H,me,"¬","\\neg",!0);M(D,H,me,"¬","\\lnot");M(D,H,me,"⊤","\\top");M(D,H,me,"⊥","\\bot");M(D,H,me,"∅","\\emptyset");M(D,le,me,"∅","\\varnothing");M(D,H,Tt,"α","\\alpha",!0);M(D,H,Tt,"β","\\beta",!0);M(D,H,Tt,"γ","\\gamma",!0);M(D,H,Tt,"δ","\\delta",!0);M(D,H,Tt,"ϵ","\\epsilon",!0);M(D,H,Tt,"ζ","\\zeta",!0);M(D,H,Tt,"η","\\eta",!0);M(D,H,Tt,"θ","\\theta",!0);M(D,H,Tt,"ι","\\iota",!0);M(D,H,Tt,"κ","\\kappa",!0);M(D,H,Tt,"λ","\\lambda",!0);M(D,H,Tt,"μ","\\mu",!0);M(D,H,Tt,"ν","\\nu",!0);M(D,H,Tt,"ξ","\\xi",!0);M(D,H,Tt,"ο","\\omicron",!0);M(D,H,Tt,"π","\\pi",!0);M(D,H,Tt,"ρ","\\rho",!0);M(D,H,Tt,"σ","\\sigma",!0);M(D,H,Tt,"τ","\\tau",!0);M(D,H,Tt,"υ","\\upsilon",!0);M(D,H,Tt,"ϕ","\\phi",!0);M(D,H,Tt,"χ","\\chi",!0);M(D,H,Tt,"ψ","\\psi",!0);M(D,H,Tt,"ω","\\omega",!0);M(D,H,Tt,"ε","\\varepsilon",!0);M(D,H,Tt,"ϑ","\\vartheta",!0);M(D,H,Tt,"ϖ","\\varpi",!0);M(D,H,Tt,"ϱ","\\varrho",!0);M(D,H,Tt,"ς","\\varsigma",!0);M(D,H,Tt,"φ","\\varphi",!0);M(D,H,lt,"∗","*",!0);M(D,H,lt,"+","+");M(D,H,lt,"−","-",!0);M(D,H,lt,"⋅","\\cdot",!0);M(D,H,lt,"∘","\\circ",!0);M(D,H,lt,"÷","\\div",!0);M(D,H,lt,"±","\\pm",!0);M(D,H,lt,"×","\\times",!0);M(D,H,lt,"∩","\\cap",!0);M(D,H,lt,"∪","\\cup",!0);M(D,H,lt,"∖","\\setminus",!0);M(D,H,lt,"∧","\\land");M(D,H,lt,"∨","\\lor");M(D,H,lt,"∧","\\wedge",!0);M(D,H,lt,"∨","\\vee",!0);M(D,H,me,"√","\\surd");M(D,H,Ji,"⟨","\\langle",!0);M(D,H,Ji,"∣","\\lvert");M(D,H,Ji,"∥","\\lVert");M(D,H,ai,"?","?");M(D,H,ai,"!","!");M(D,H,ai,"⟩","\\rangle",!0);M(D,H,ai,"∣","\\rvert");M(D,H,ai,"∥","\\rVert");M(D,H,ce,"=","=");M(D,H,ce,":",":");M(D,H,ce,"≈","\\approx",!0);M(D,H,ce,"≅","\\cong",!0);M(D,H,ce,"≥","\\ge");M(D,H,ce,"≥","\\geq",!0);M(D,H,ce,"←","\\gets");M(D,H,ce,">","\\gt",!0);M(D,H,ce,"∈","\\in",!0);M(D,H,ce,"","\\@not");M(D,H,ce,"⊂","\\subset",!0);M(D,H,ce,"⊃","\\supset",!0);M(D,H,ce,"⊆","\\subseteq",!0);M(D,H,ce,"⊇","\\supseteq",!0);M(D,le,ce,"⊈","\\nsubseteq",!0);M(D,le,ce,"⊉","\\nsupseteq",!0);M(D,H,ce,"⊨","\\models");M(D,H,ce,"←","\\leftarrow",!0);M(D,H,ce,"≤","\\le");M(D,H,ce,"≤","\\leq",!0);M(D,H,ce,"<","\\lt",!0);M(D,H,ce,"→","\\rightarrow",!0);M(D,H,ce,"→","\\to");M(D,le,ce,"≱","\\ngeq",!0);M(D,le,ce,"≰","\\nleq",!0);M(D,H,Zl," ","\\ ");M(D,H,Zl," ","\\space");M(D,H,Zl," ","\\nobreakspace");M(Be,H,Zl," ","\\ ");M(Be,H,Zl," "," ");M(Be,H,Zl," ","\\space");M(Be,H,Zl," ","\\nobreakspace");M(D,H,Zl,null,"\\nobreak");M(D,H,Zl,null,"\\allowbreak");M(D,H,qb,",",",");M(D,H,qb,";",";");M(D,le,lt,"⊼","\\barwedge",!0);M(D,le,lt,"⊻","\\veebar",!0);M(D,H,lt,"⊙","\\odot",!0);M(D,H,lt,"⊕","\\oplus",!0);M(D,H,lt,"⊗","\\otimes",!0);M(D,H,me,"∂","\\partial",!0);M(D,H,lt,"⊘","\\oslash",!0);M(D,le,lt,"⊚","\\circledcirc",!0);M(D,le,lt,"⊡","\\boxdot",!0);M(D,H,lt,"△","\\bigtriangleup");M(D,H,lt,"▽","\\bigtriangledown");M(D,H,lt,"†","\\dagger");M(D,H,lt,"⋄","\\diamond");M(D,H,lt,"⋆","\\star");M(D,H,lt,"◃","\\triangleleft");M(D,H,lt,"▹","\\triangleright");M(D,H,Ji,"{","\\{");M(Be,H,me,"{","\\{");M(Be,H,me,"{","\\textbraceleft");M(D,H,ai,"}","\\}");M(Be,H,me,"}","\\}");M(Be,H,me,"}","\\textbraceright");M(D,H,Ji,"{","\\lbrace");M(D,H,ai,"}","\\rbrace");M(D,H,Ji,"[","\\lbrack",!0);M(Be,H,me,"[","\\lbrack",!0);M(D,H,ai,"]","\\rbrack",!0);M(Be,H,me,"]","\\rbrack",!0);M(D,H,Ji,"(","\\lparen",!0);M(D,H,ai,")","\\rparen",!0);M(Be,H,me,"<","\\textless",!0);M(Be,H,me,">","\\textgreater",!0);M(D,H,Ji,"⌊","\\lfloor",!0);M(D,H,ai,"⌋","\\rfloor",!0);M(D,H,Ji,"⌈","\\lceil",!0);M(D,H,ai,"⌉","\\rceil",!0);M(D,H,me,"\\","\\backslash");M(D,H,me,"∣","|");M(D,H,me,"∣","\\vert");M(Be,H,me,"|","\\textbar",!0);M(D,H,me,"∥","\\|");M(D,H,me,"∥","\\Vert");M(Be,H,me,"∥","\\textbardbl");M(Be,H,me,"~","\\textasciitilde");M(Be,H,me,"\\","\\textbackslash");M(Be,H,me,"^","\\textasciicircum");M(D,H,ce,"↑","\\uparrow",!0);M(D,H,ce,"⇑","\\Uparrow",!0);M(D,H,ce,"↓","\\downarrow",!0);M(D,H,ce,"⇓","\\Downarrow",!0);M(D,H,ce,"↕","\\updownarrow",!0);M(D,H,ce,"⇕","\\Updownarrow",!0);M(D,H,os,"∐","\\coprod");M(D,H,os,"⋁","\\bigvee");M(D,H,os,"⋀","\\bigwedge");M(D,H,os,"⨄","\\biguplus");M(D,H,os,"⋂","\\bigcap");M(D,H,os,"⋃","\\bigcup");M(D,H,os,"∫","\\int");M(D,H,os,"∫","\\intop");M(D,H,os,"∬","\\iint");M(D,H,os,"∭","\\iiint");M(D,H,os,"∏","\\prod");M(D,H,os,"∑","\\sum");M(D,H,os,"⨂","\\bigotimes");M(D,H,os,"⨁","\\bigoplus");M(D,H,os,"⨀","\\bigodot");M(D,H,os,"∮","\\oint");M(D,H,os,"∯","\\oiint");M(D,H,os,"∰","\\oiiint");M(D,H,os,"⨆","\\bigsqcup");M(D,H,os,"∫","\\smallint");M(Be,H,qf,"…","\\textellipsis");M(D,H,qf,"…","\\mathellipsis");M(Be,H,qf,"…","\\ldots",!0);M(D,H,qf,"…","\\ldots",!0);M(D,H,qf,"⋯","\\@cdots",!0);M(D,H,qf,"⋱","\\ddots",!0);M(D,H,me,"⋮","\\varvdots");M(Be,H,me,"⋮","\\varvdots");M(D,H,jr,"ˊ","\\acute");M(D,H,jr,"ˋ","\\grave");M(D,H,jr,"¨","\\ddot");M(D,H,jr,"~","\\tilde");M(D,H,jr,"ˉ","\\bar");M(D,H,jr,"˘","\\breve");M(D,H,jr,"ˇ","\\check");M(D,H,jr,"^","\\hat");M(D,H,jr,"⃗","\\vec");M(D,H,jr,"˙","\\dot");M(D,H,jr,"˚","\\mathring");M(D,H,Tt,"","\\@imath");M(D,H,Tt,"","\\@jmath");M(D,H,me,"ı","ı");M(D,H,me,"ȷ","ȷ");M(Be,H,me,"ı","\\i",!0);M(Be,H,me,"ȷ","\\j",!0);M(Be,H,me,"ß","\\ss",!0);M(Be,H,me,"æ","\\ae",!0);M(Be,H,me,"œ","\\oe",!0);M(Be,H,me,"ø","\\o",!0);M(Be,H,me,"Æ","\\AE",!0);M(Be,H,me,"Œ","\\OE",!0);M(Be,H,me,"Ø","\\O",!0);M(Be,H,jr,"ˊ","\\'");M(Be,H,jr,"ˋ","\\`");M(Be,H,jr,"ˆ","\\^");M(Be,H,jr,"˜","\\~");M(Be,H,jr,"ˉ","\\=");M(Be,H,jr,"˘","\\u");M(Be,H,jr,"˙","\\.");M(Be,H,jr,"¸","\\c");M(Be,H,jr,"˚","\\r");M(Be,H,jr,"ˇ","\\v");M(Be,H,jr,"¨",'\\"');M(Be,H,jr,"˝","\\H");M(Be,H,jr,"◯","\\textcircled");var eU={"--":!0,"---":!0,"``":!0,"''":!0};M(Be,H,me,"–","--",!0);M(Be,H,me,"–","\\textendash");M(Be,H,me,"—","---",!0);M(Be,H,me,"—","\\textemdash");M(Be,H,me,"‘","`",!0);M(Be,H,me,"‘","\\textquoteleft");M(Be,H,me,"’","'",!0);M(Be,H,me,"’","\\textquoteright");M(Be,H,me,"“","``",!0);M(Be,H,me,"“","\\textquotedblleft");M(Be,H,me,"”","''",!0);M(Be,H,me,"”","\\textquotedblright");M(D,H,me,"°","\\degree",!0);M(Be,H,me,"°","\\degree");M(Be,H,me,"°","\\textdegree",!0);M(D,H,me,"£","\\pounds");M(D,H,me,"£","\\mathsterling",!0);M(Be,H,me,"£","\\pounds");M(Be,H,me,"£","\\textsterling",!0);M(D,le,me,"✠","\\maltese");M(Be,le,me,"✠","\\maltese");var pR='0123456789/@."';for(var US=0;US0)return $a(i,d,s,n,a.concat(h));if(c){var m,g;if(c==="boldsymbol"){var x=d3e(i,s,n,a,r);m=x.fontName,g=[x.fontClass]}else l?(m=rU[c].fontName,g=[c]):(m=P1(c,n.fontWeight,n.fontShape),g=[c,n.fontWeight,n.fontShape]);if($b(i,m,s).metrics)return $a(i,m,s,n,a.concat(g));if(eU.hasOwnProperty(i)&&m.slice(0,10)==="Typewriter"){for(var y=[],w=0;w{if(eu(t.classes)!==eu(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;if(t.classes.length===1){var n=t.classes[0];if(n==="mbin"||n==="mord")return!1}for(var r in t.style)if(t.style.hasOwnProperty(r)&&t.style[r]!==e.style[r])return!1;for(var s in e.style)if(e.style.hasOwnProperty(s)&&t.style[s]!==e.style[s])return!1;return!0},m3e=t=>{for(var e=0;en&&(n=a.height),a.depth>r&&(r=a.depth),a.maxFontSize>s&&(s=a.maxFontSize)}e.height=n,e.depth=r,e.maxFontSize=s},mi=function(e,n,r,s){var i=new pg(e,n,r,s);return TN(i),i},tU=(t,e,n,r)=>new pg(t,e,n,r),p3e=function(e,n,r){var s=mi([e],[],n);return s.height=Math.max(r||n.fontMetrics().defaultRuleThickness,n.minRuleThickness),s.style.borderBottomWidth=Xe(s.height),s.maxFontSize=1,s},g3e=function(e,n,r,s){var i=new CN(e,n,r,s);return TN(i),i},nU=function(e){var n=new mg(e);return TN(n),n},x3e=function(e,n){return e instanceof mg?mi([],[e],n):e},v3e=function(e){if(e.positionType==="individualShift"){for(var n=e.children,r=[n[0]],s=-n[0].shift-n[0].elem.depth,i=s,a=1;a{var n=mi(["mspace"],[],e),r=Rr(t,e);return n.style.marginRight=Xe(r),n},P1=function(e,n,r){var s="";switch(e){case"amsrm":s="AMS";break;case"textrm":s="Main";break;case"textsf":s="SansSerif";break;case"texttt":s="Typewriter";break;default:s=e}var i;return n==="textbf"&&r==="textit"?i="BoldItalic":n==="textbf"?i="Bold":n==="textit"?i="Italic":i="Regular",s+"-"+i},rU={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},sU={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},w3e=function(e,n){var[r,s,i]=sU[e],a=new tu(r),l=new Ql([a],{width:Xe(s),height:Xe(i),style:"width:"+Xe(s),viewBox:"0 0 "+1e3*s+" "+1e3*i,preserveAspectRatio:"xMinYMin"}),c=tU(["overlay"],[l],n);return c.height=i,c.style.height=Xe(i),c.style.width=Xe(s),c},be={fontMap:rU,makeSymbol:$a,mathsym:u3e,makeSpan:mi,makeSvgSpan:tU,makeLineSpan:p3e,makeAnchor:g3e,makeFragment:nU,wrapFragment:x3e,makeVList:y3e,makeOrd:h3e,makeGlue:b3e,staticSvg:w3e,svgData:sU,tryCombineChars:m3e},_r={number:3,unit:"mu"},zu={number:4,unit:"mu"},yl={number:5,unit:"mu"},S3e={mord:{mop:_r,mbin:zu,mrel:yl,minner:_r},mop:{mord:_r,mop:_r,mrel:yl,minner:_r},mbin:{mord:zu,mop:zu,mopen:zu,minner:zu},mrel:{mord:yl,mop:yl,mopen:yl,minner:yl},mopen:{},mclose:{mop:_r,mbin:zu,mrel:yl,minner:_r},mpunct:{mord:_r,mop:_r,mrel:yl,mopen:_r,mclose:_r,mpunct:_r,minner:_r},minner:{mord:_r,mop:_r,mbin:zu,mrel:yl,mopen:_r,mpunct:_r,minner:_r}},k3e={mord:{mop:_r},mop:{mord:_r,mop:_r},mbin:{},mrel:{},mopen:{},mclose:{mop:_r},mpunct:{},minner:{mop:_r}},iU={},Oy={},jy={};function tt(t){for(var{type:e,names:n,props:r,handler:s,htmlBuilder:i,mathmlBuilder:a}=t,l={type:e,numArgs:r.numArgs,argTypes:r.argTypes,allowedInArgument:!!r.allowedInArgument,allowedInText:!!r.allowedInText,allowedInMath:r.allowedInMath===void 0?!0:r.allowedInMath,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,primitive:!!r.primitive,handler:s},c=0;c{var S=w.classes[0],k=y.classes[0];S==="mbin"&&j3e.includes(k)?w.classes[0]="mord":k==="mbin"&&O3e.includes(S)&&(y.classes[0]="mord")},{node:m},g,x),bR(i,(y,w)=>{var S=$O(w),k=$O(y),j=S&&k?y.hasClass("mtight")?k3e[S][k]:S3e[S][k]:null;if(j)return be.makeGlue(j,d)},{node:m},g,x),i},bR=function t(e,n,r,s,i){s&&e.push(s);for(var a=0;ag=>{e.splice(m+1,0,g),a++})(a)}s&&e.pop()},aU=function(e){return e instanceof mg||e instanceof CN||e instanceof pg&&e.hasClass("enclosing")?e:null},T3e=function t(e,n){var r=aU(e);if(r){var s=r.children;if(s.length){if(n==="right")return t(s[s.length-1],"right");if(n==="left")return t(s[0],"left")}}return e},$O=function(e,n){return e?(n&&(e=T3e(e,n)),C3e[e.classes[0]]||null):null},vp=function(e,n){var r=["nulldelimiter"].concat(e.baseSizingClasses());return Vl(n.concat(r))},Pn=function(e,n,r){if(!e)return Vl();if(Oy[e.type]){var s=Oy[e.type](e,n);if(r&&n.size!==r.size){s=Vl(n.sizingClasses(r),[s],n);var i=n.sizeMultiplier/r.sizeMultiplier;s.height*=i,s.depth*=i}return s}else throw new $e("Got group of unknown type: '"+e.type+"'")};function z1(t,e){var n=Vl(["base"],t,e),r=Vl(["strut"]);return r.style.height=Xe(n.height+n.depth),n.depth&&(r.style.verticalAlign=Xe(-n.depth)),n.children.unshift(r),n}function HO(t,e){var n=null;t.length===1&&t[0].type==="tag"&&(n=t[0].tag,t=t[0].body);var r=fs(t,e,"root"),s;r.length===2&&r[1].hasClass("tag")&&(s=r.pop());for(var i=[],a=[],l=0;l0&&(i.push(z1(a,e)),a=[]),i.push(r[l]));a.length>0&&i.push(z1(a,e));var d;n?(d=z1(fs(n,e,!0)),d.classes=["tag"],i.push(d)):s&&i.push(s);var h=Vl(["katex-html"],i);if(h.setAttribute("aria-hidden","true"),d){var m=d.children[0];m.style.height=Xe(h.height+h.depth),h.depth&&(m.style.verticalAlign=Xe(-h.depth))}return h}function oU(t){return new mg(t)}class Qi{constructor(e,n,r){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=n||[],this.classes=r||[]}setAttribute(e,n){this.attributes[e]=n}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&e.setAttribute(n,this.attributes[n]);this.classes.length>0&&(e.className=eu(this.classes));for(var r=0;r0&&(e+=' class ="'+$n.escape(eu(this.classes))+'"'),e+=">";for(var r=0;r",e}toText(){return this.children.map(e=>e.toText()).join("")}}class Ao{constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return $n.escape(this.toText())}toText(){return this.text}}class E3e{constructor(e){this.width=void 0,this.character=void 0,this.width=e,e>=.05555&&e<=.05556?this.character=" ":e>=.1666&&e<=.1667?this.character=" ":e>=.2222&&e<=.2223?this.character=" ":e>=.2777&&e<=.2778?this.character="  ":e>=-.05556&&e<=-.05555?this.character=" ⁣":e>=-.1667&&e<=-.1666?this.character=" ⁣":e>=-.2223&&e<=-.2222?this.character=" ⁣":e>=-.2778&&e<=-.2777?this.character=" ⁣":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",Xe(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}}var qe={MathNode:Qi,TextNode:Ao,SpaceNode:E3e,newDocumentFragment:oU},Ma=function(e,n,r){return dr[n][e]&&dr[n][e].replace&&e.charCodeAt(0)!==55349&&!(eU.hasOwnProperty(e)&&r&&(r.fontFamily&&r.fontFamily.slice(4,6)==="tt"||r.font&&r.font.slice(4,6)==="tt"))&&(e=dr[n][e].replace),new qe.TextNode(e)},EN=function(e){return e.length===1?e[0]:new qe.MathNode("mrow",e)},_N=function(e,n){if(n.fontFamily==="texttt")return"monospace";if(n.fontFamily==="textsf")return n.fontShape==="textit"&&n.fontWeight==="textbf"?"sans-serif-bold-italic":n.fontShape==="textit"?"sans-serif-italic":n.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(n.fontShape==="textit"&&n.fontWeight==="textbf")return"bold-italic";if(n.fontShape==="textit")return"italic";if(n.fontWeight==="textbf")return"bold";var r=n.font;if(!r||r==="mathnormal")return null;var s=e.mode;if(r==="mathit")return"italic";if(r==="boldsymbol")return e.type==="textord"?"bold":"bold-italic";if(r==="mathbf")return"bold";if(r==="mathbb")return"double-struck";if(r==="mathsfit")return"sans-serif-italic";if(r==="mathfrak")return"fraktur";if(r==="mathscr"||r==="mathcal")return"script";if(r==="mathsf")return"sans-serif";if(r==="mathtt")return"monospace";var i=e.text;if(["\\imath","\\jmath"].includes(i))return null;dr[s][i]&&dr[s][i].replace&&(i=dr[s][i].replace);var a=be.fontMap[r].fontName;return NN(i,a,s)?be.fontMap[r].variant:null};function YS(t){if(!t)return!1;if(t.type==="mi"&&t.children.length===1){var e=t.children[0];return e instanceof Ao&&e.text==="."}else if(t.type==="mo"&&t.children.length===1&&t.getAttribute("separator")==="true"&&t.getAttribute("lspace")==="0em"&&t.getAttribute("rspace")==="0em"){var n=t.children[0];return n instanceof Ao&&n.text===","}else return!1}var _i=function(e,n,r){if(e.length===1){var s=lr(e[0],n);return r&&s instanceof Qi&&s.type==="mo"&&(s.setAttribute("lspace","0em"),s.setAttribute("rspace","0em")),[s]}for(var i=[],a,l=0;l=1&&(a.type==="mn"||YS(a))){var d=c.children[0];d instanceof Qi&&d.type==="mn"&&(d.children=[...a.children,...d.children],i.pop())}else if(a.type==="mi"&&a.children.length===1){var h=a.children[0];if(h instanceof Ao&&h.text==="̸"&&(c.type==="mo"||c.type==="mi"||c.type==="mn")){var m=c.children[0];m instanceof Ao&&m.text.length>0&&(m.text=m.text.slice(0,1)+"̸"+m.text.slice(1),i.pop())}}}i.push(c),a=c}return i},nu=function(e,n,r){return EN(_i(e,n,r))},lr=function(e,n){if(!e)return new qe.MathNode("mrow");if(jy[e.type]){var r=jy[e.type](e,n);return r}else throw new $e("Got group of unknown type: '"+e.type+"'")};function wR(t,e,n,r,s){var i=_i(t,n),a;i.length===1&&i[0]instanceof Qi&&["mrow","mtable"].includes(i[0].type)?a=i[0]:a=new qe.MathNode("mrow",i);var l=new qe.MathNode("annotation",[new qe.TextNode(e)]);l.setAttribute("encoding","application/x-tex");var c=new qe.MathNode("semantics",[a,l]),d=new qe.MathNode("math",[c]);d.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),r&&d.setAttribute("display","block");var h=s?"katex":"katex-mathml";return be.makeSpan([h],[d])}var lU=function(e){return new Tl({style:e.displayMode?Et.DISPLAY:Et.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},cU=function(e,n){if(n.displayMode){var r=["katex-display"];n.leqno&&r.push("leqno"),n.fleqn&&r.push("fleqn"),e=be.makeSpan(r,[e])}return e},_3e=function(e,n,r){var s=lU(r),i;if(r.output==="mathml")return wR(e,n,s,r.displayMode,!0);if(r.output==="html"){var a=HO(e,s);i=be.makeSpan(["katex"],[a])}else{var l=wR(e,n,s,r.displayMode,!1),c=HO(e,s);i=be.makeSpan(["katex"],[l,c])}return cU(i,r)},A3e=function(e,n,r){var s=lU(r),i=HO(e,s),a=be.makeSpan(["katex"],[i]);return cU(a,r)},M3e={widehat:"^",widecheck:"ˇ",widetilde:"~",utilde:"~",overleftarrow:"←",underleftarrow:"←",xleftarrow:"←",overrightarrow:"→",underrightarrow:"→",xrightarrow:"→",underbrace:"⏟",overbrace:"⏞",overgroup:"⏠",undergroup:"⏡",overleftrightarrow:"↔",underleftrightarrow:"↔",xleftrightarrow:"↔",Overrightarrow:"⇒",xRightarrow:"⇒",overleftharpoon:"↼",xleftharpoonup:"↼",overrightharpoon:"⇀",xrightharpoonup:"⇀",xLeftarrow:"⇐",xLeftrightarrow:"⇔",xhookleftarrow:"↩",xhookrightarrow:"↪",xmapsto:"↦",xrightharpoondown:"⇁",xleftharpoondown:"↽",xrightleftharpoons:"⇌",xleftrightharpoons:"⇋",xtwoheadleftarrow:"↞",xtwoheadrightarrow:"↠",xlongequal:"=",xtofrom:"⇄",xrightleftarrows:"⇄",xrightequilibrium:"⇌",xleftequilibrium:"⇋","\\cdrightarrow":"→","\\cdleftarrow":"←","\\cdlongequal":"="},R3e=function(e){var n=new qe.MathNode("mo",[new qe.TextNode(M3e[e.replace(/^\\/,"")])]);return n.setAttribute("stretchy","true"),n},D3e={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},P3e=function(e){return e.type==="ordgroup"?e.body.length:1},z3e=function(e,n){function r(){var l=4e5,c=e.label.slice(1);if(["widehat","widecheck","widetilde","utilde"].includes(c)){var d=e,h=P3e(d.base),m,g,x;if(h>5)c==="widehat"||c==="widecheck"?(m=420,l=2364,x=.42,g=c+"4"):(m=312,l=2340,x=.34,g="tilde4");else{var y=[1,1,2,2,3,3][h];c==="widehat"||c==="widecheck"?(l=[0,1062,2364,2364,2364][y],m=[0,239,300,360,420][y],x=[0,.24,.3,.3,.36,.42][y],g=c+y):(l=[0,600,1033,2339,2340][y],m=[0,260,286,306,312][y],x=[0,.26,.286,.3,.306,.34][y],g="tilde"+y)}var w=new tu(g),S=new Ql([w],{width:"100%",height:Xe(x),viewBox:"0 0 "+l+" "+m,preserveAspectRatio:"none"});return{span:be.makeSvgSpan([],[S],n),minWidth:0,height:x}}else{var k=[],j=D3e[c],[N,T,E]=j,_=E/1e3,A=N.length,L,P;if(A===1){var B=j[3];L=["hide-tail"],P=[B]}else if(A===2)L=["halfarrow-left","halfarrow-right"],P=["xMinYMin","xMaxYMin"];else if(A===3)L=["brace-left","brace-center","brace-right"],P=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support + `+A+" children.");for(var $=0;$0&&(s.style.minWidth=Xe(i)),s},I3e=function(e,n,r,s,i){var a,l=e.height+e.depth+r+s;if(/fbox|color|angl/.test(n)){if(a=be.makeSpan(["stretchy",n],[],i),n==="fbox"){var c=i.color&&i.getColor();c&&(a.style.borderColor=c)}}else{var d=[];/^[bx]cancel$/.test(n)&&d.push(new FO({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(n)&&d.push(new FO({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new Ql(d,{width:"100%",height:Xe(l)});a=be.makeSvgSpan([],[h],i)}return a.height=l,a.style.height=Xe(l),a},Ul={encloseSpan:I3e,mathMLnode:R3e,svgSpan:z3e};function en(t,e){if(!t||t.type!==e)throw new Error("Expected node of type "+e+", but got "+(t?"node of type "+t.type:String(t)));return t}function AN(t){var e=Hb(t);if(!e)throw new Error("Expected node of symbol group type, but got "+(t?"node of type "+t.type:String(t)));return e}function Hb(t){return t&&(t.type==="atom"||l3e.hasOwnProperty(t.type))?t:null}var MN=(t,e)=>{var n,r,s;t&&t.type==="supsub"?(r=en(t.base,"accent"),n=r.base,t.base=n,s=a3e(Pn(t,e)),t.base=r):(r=en(t,"accent"),n=r.base);var i=Pn(n,e.havingCrampedStyle()),a=r.isShifty&&$n.isCharacterBox(n),l=0;if(a){var c=$n.getBaseElem(n),d=Pn(c,e.havingCrampedStyle());l=mR(d).skew}var h=r.label==="\\c",m=h?i.height+i.depth:Math.min(i.height,e.fontMetrics().xHeight),g;if(r.isStretchy)g=Ul.svgSpan(r,e),g=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:g,wrapperClasses:["svg-align"],wrapperStyle:l>0?{width:"calc(100% - "+Xe(2*l)+")",marginLeft:Xe(2*l)}:void 0}]},e);else{var x,y;r.label==="\\vec"?(x=be.staticSvg("vec",e),y=be.svgData.vec[1]):(x=be.makeOrd({mode:r.mode,text:r.label},e,"textord"),x=mR(x),x.italic=0,y=x.width,h&&(m+=x.depth)),g=be.makeSpan(["accent-body"],[x]);var w=r.label==="\\textcircled";w&&(g.classes.push("accent-full"),m=i.height);var S=l;w||(S-=y/2),g.style.left=Xe(S),r.label==="\\textcircled"&&(g.style.top=".2em"),g=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-m},{type:"elem",elem:g}]},e)}var k=be.makeSpan(["mord","accent"],[g],e);return s?(s.children[0]=k,s.height=Math.max(k.height,s.height),s.classes[0]="mord",s):k},uU=(t,e)=>{var n=t.isStretchy?Ul.mathMLnode(t.label):new qe.MathNode("mo",[Ma(t.label,t.mode)]),r=new qe.MathNode("mover",[lr(t.base,e),n]);return r.setAttribute("accent","true"),r},L3e=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(t=>"\\"+t).join("|"));tt({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(t,e)=>{var n=Ny(e[0]),r=!L3e.test(t.funcName),s=!r||t.funcName==="\\widehat"||t.funcName==="\\widetilde"||t.funcName==="\\widecheck";return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:r,isShifty:s,base:n}},htmlBuilder:MN,mathmlBuilder:uU});tt({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(t,e)=>{var n=e[0],r=t.parser.mode;return r==="math"&&(t.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+t.funcName+" works only in text mode"),r="text"),{type:"accent",mode:r,label:t.funcName,isStretchy:!1,isShifty:!0,base:n}},htmlBuilder:MN,mathmlBuilder:uU});tt({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0];return{type:"accentUnder",mode:n.mode,label:r,base:s}},htmlBuilder:(t,e)=>{var n=Pn(t.base,e),r=Ul.svgSpan(t,e),s=t.label==="\\utilde"?.12:0,i=be.makeVList({positionType:"top",positionData:n.height,children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:s},{type:"elem",elem:n}]},e);return be.makeSpan(["mord","accentunder"],[i],e)},mathmlBuilder:(t,e)=>{var n=Ul.mathMLnode(t.label),r=new qe.MathNode("munder",[lr(t.base,e),n]);return r.setAttribute("accentunder","true"),r}});var I1=t=>{var e=new qe.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e};tt({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,n){var{parser:r,funcName:s}=t;return{type:"xArrow",mode:r.mode,label:s,body:e[0],below:n[0]}},htmlBuilder(t,e){var n=e.style,r=e.havingStyle(n.sup()),s=be.wrapFragment(Pn(t.body,r,e),e),i=t.label.slice(0,2)==="\\x"?"x":"cd";s.classes.push(i+"-arrow-pad");var a;t.below&&(r=e.havingStyle(n.sub()),a=be.wrapFragment(Pn(t.below,r,e),e),a.classes.push(i+"-arrow-pad"));var l=Ul.svgSpan(t,e),c=-e.fontMetrics().axisHeight+.5*l.height,d=-e.fontMetrics().axisHeight-.5*l.height-.111;(s.depth>.25||t.label==="\\xleftequilibrium")&&(d-=s.depth);var h;if(a){var m=-e.fontMetrics().axisHeight+a.height+.5*l.height+.111;h=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:d},{type:"elem",elem:l,shift:c},{type:"elem",elem:a,shift:m}]},e)}else h=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:d},{type:"elem",elem:l,shift:c}]},e);return h.children[0].children[0].children[1].classes.push("svg-align"),be.makeSpan(["mrel","x-arrow"],[h],e)},mathmlBuilder(t,e){var n=Ul.mathMLnode(t.label);n.setAttribute("minsize",t.label.charAt(0)==="x"?"1.75em":"3.0em");var r;if(t.body){var s=I1(lr(t.body,e));if(t.below){var i=I1(lr(t.below,e));r=new qe.MathNode("munderover",[n,i,s])}else r=new qe.MathNode("mover",[n,s])}else if(t.below){var a=I1(lr(t.below,e));r=new qe.MathNode("munder",[n,a])}else r=I1(),r=new qe.MathNode("mover",[n,r]);return r}});var B3e=be.makeSpan;function dU(t,e){var n=fs(t.body,e,!0);return B3e([t.mclass],n,e)}function hU(t,e){var n,r=_i(t.body,e);return t.mclass==="minner"?n=new qe.MathNode("mpadded",r):t.mclass==="mord"?t.isCharacterBox?(n=r[0],n.type="mi"):n=new qe.MathNode("mi",r):(t.isCharacterBox?(n=r[0],n.type="mo"):n=new qe.MathNode("mo",r),t.mclass==="mbin"?(n.attributes.lspace="0.22em",n.attributes.rspace="0.22em"):t.mclass==="mpunct"?(n.attributes.lspace="0em",n.attributes.rspace="0.17em"):t.mclass==="mopen"||t.mclass==="mclose"?(n.attributes.lspace="0em",n.attributes.rspace="0em"):t.mclass==="minner"&&(n.attributes.lspace="0.0556em",n.attributes.width="+0.1111em")),n}tt({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];return{type:"mclass",mode:n.mode,mclass:"m"+r.slice(5),body:Qr(s),isCharacterBox:$n.isCharacterBox(s)}},htmlBuilder:dU,mathmlBuilder:hU});var Qb=t=>{var e=t.type==="ordgroup"&&t.body.length?t.body[0]:t;return e.type==="atom"&&(e.family==="bin"||e.family==="rel")?"m"+e.family:"mord"};tt({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(t,e){var{parser:n}=t;return{type:"mclass",mode:n.mode,mclass:Qb(e[0]),body:Qr(e[1]),isCharacterBox:$n.isCharacterBox(e[1])}}});tt({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(t,e){var{parser:n,funcName:r}=t,s=e[1],i=e[0],a;r!=="\\stackrel"?a=Qb(s):a="mrel";var l={type:"op",mode:s.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:r!=="\\stackrel",body:Qr(s)},c={type:"supsub",mode:i.mode,base:l,sup:r==="\\underset"?null:i,sub:r==="\\underset"?i:null};return{type:"mclass",mode:n.mode,mclass:a,body:[c],isCharacterBox:$n.isCharacterBox(c)}},htmlBuilder:dU,mathmlBuilder:hU});tt({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"pmb",mode:n.mode,mclass:Qb(e[0]),body:Qr(e[0])}},htmlBuilder(t,e){var n=fs(t.body,e,!0),r=be.makeSpan([t.mclass],n,e);return r.style.textShadow="0.02em 0.01em 0.04px",r},mathmlBuilder(t,e){var n=_i(t.body,e),r=new qe.MathNode("mstyle",n);return r.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),r}});var F3e={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},SR=()=>({type:"styling",body:[],mode:"math",style:"display"}),kR=t=>t.type==="textord"&&t.text==="@",q3e=(t,e)=>(t.type==="mathord"||t.type==="atom")&&t.text===e;function $3e(t,e,n){var r=F3e[t];switch(r){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return n.callFunction(r,[e[0]],[e[1]]);case"\\uparrow":case"\\downarrow":{var s=n.callFunction("\\\\cdleft",[e[0]],[]),i={type:"atom",text:r,mode:"math",family:"rel"},a=n.callFunction("\\Big",[i],[]),l=n.callFunction("\\\\cdright",[e[1]],[]),c={type:"ordgroup",mode:"math",body:[s,a,l]};return n.callFunction("\\\\cdparent",[c],[])}case"\\\\cdlongequal":return n.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var d={type:"textord",text:"\\Vert",mode:"math"};return n.callFunction("\\Big",[d],[])}default:return{type:"textord",text:" ",mode:"math"}}}function H3e(t){var e=[];for(t.gullet.beginGroup(),t.gullet.macros.set("\\cr","\\\\\\relax"),t.gullet.beginGroup();;){e.push(t.parseExpression(!1,"\\\\")),t.gullet.endGroup(),t.gullet.beginGroup();var n=t.fetch().text;if(n==="&"||n==="\\\\")t.consume();else if(n==="\\end"){e[e.length-1].length===0&&e.pop();break}else throw new $e("Expected \\\\ or \\cr or \\end",t.nextToken)}for(var r=[],s=[r],i=0;i-1))if("<>AV".indexOf(d)>-1)for(var m=0;m<2;m++){for(var g=!0,x=c+1;xAV=|." after @',a[c]);var y=$3e(d,h,t),w={type:"styling",body:[y],mode:"math",style:"display"};r.push(w),l=SR()}i%2===0?r.push(l):r.shift(),r=[],s.push(r)}t.gullet.endGroup(),t.gullet.endGroup();var S=new Array(s[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:s,arraystretch:1,addJot:!0,rowGaps:[null],cols:S,colSeparationType:"CD",hLinesBeforeRow:new Array(s.length+1).fill([])}}tt({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:r}=t;return{type:"cdlabel",mode:n.mode,side:r.slice(4),label:e[0]}},htmlBuilder(t,e){var n=e.havingStyle(e.style.sup()),r=be.wrapFragment(Pn(t.label,n,e),e);return r.classes.push("cd-label-"+t.side),r.style.bottom=Xe(.8-r.depth),r.height=0,r.depth=0,r},mathmlBuilder(t,e){var n=new qe.MathNode("mrow",[lr(t.label,e)]);return n=new qe.MathNode("mpadded",[n]),n.setAttribute("width","0"),t.side==="left"&&n.setAttribute("lspace","-1width"),n.setAttribute("voffset","0.7em"),n=new qe.MathNode("mstyle",[n]),n.setAttribute("displaystyle","false"),n.setAttribute("scriptlevel","1"),n}});tt({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(t,e){var{parser:n}=t;return{type:"cdlabelparent",mode:n.mode,fragment:e[0]}},htmlBuilder(t,e){var n=be.wrapFragment(Pn(t.fragment,e),e);return n.classes.push("cd-vert-arrow"),n},mathmlBuilder(t,e){return new qe.MathNode("mrow",[lr(t.fragment,e)])}});tt({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(t,e){for(var{parser:n}=t,r=en(e[0],"ordgroup"),s=r.body,i="",a=0;a=1114111)throw new $e("\\@char with invalid code point "+i);return c<=65535?d=String.fromCharCode(c):(c-=65536,d=String.fromCharCode((c>>10)+55296,(c&1023)+56320)),{type:"textord",mode:n.mode,text:d}}});var fU=(t,e)=>{var n=fs(t.body,e.withColor(t.color),!1);return be.makeFragment(n)},mU=(t,e)=>{var n=_i(t.body,e.withColor(t.color)),r=new qe.MathNode("mstyle",n);return r.setAttribute("mathcolor",t.color),r};tt({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(t,e){var{parser:n}=t,r=en(e[0],"color-token").color,s=e[1];return{type:"color",mode:n.mode,color:r,body:Qr(s)}},htmlBuilder:fU,mathmlBuilder:mU});tt({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(t,e){var{parser:n,breakOnTokenText:r}=t,s=en(e[0],"color-token").color;n.gullet.macros.set("\\current@color",s);var i=n.parseExpression(!0,r);return{type:"color",mode:n.mode,color:s,body:i}},htmlBuilder:fU,mathmlBuilder:mU});tt({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(t,e,n){var{parser:r}=t,s=r.gullet.future().text==="["?r.parseSizeGroup(!0):null,i=!r.settings.displayMode||!r.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:r.mode,newLine:i,size:s&&en(s,"size").value}},htmlBuilder(t,e){var n=be.makeSpan(["mspace"],[],e);return t.newLine&&(n.classes.push("newline"),t.size&&(n.style.marginTop=Xe(Rr(t.size,e)))),n},mathmlBuilder(t,e){var n=new qe.MathNode("mspace");return t.newLine&&(n.setAttribute("linebreak","newline"),t.size&&n.setAttribute("height",Xe(Rr(t.size,e)))),n}});var QO={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},pU=t=>{var e=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new $e("Expected a control sequence",t);return e},Q3e=t=>{var e=t.gullet.popToken();return e.text==="="&&(e=t.gullet.popToken(),e.text===" "&&(e=t.gullet.popToken())),e},gU=(t,e,n,r)=>{var s=t.gullet.macros.get(n.text);s==null&&(n.noexpand=!0,s={tokens:[n],numArgs:0,unexpandable:!t.gullet.isExpandable(n.text)}),t.gullet.macros.set(e,s,r)};tt({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(t){var{parser:e,funcName:n}=t;e.consumeSpaces();var r=e.fetch();if(QO[r.text])return(n==="\\global"||n==="\\\\globallong")&&(r.text=QO[r.text]),en(e.parseFunction(),"internal");throw new $e("Invalid token after macro prefix",r)}});tt({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,r=e.gullet.popToken(),s=r.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(s))throw new $e("Expected a control sequence",r);for(var i=0,a,l=[[]];e.gullet.future().text!=="{";)if(r=e.gullet.popToken(),r.text==="#"){if(e.gullet.future().text==="{"){a=e.gullet.future(),l[i].push("{");break}if(r=e.gullet.popToken(),!/^[1-9]$/.test(r.text))throw new $e('Invalid argument number "'+r.text+'"');if(parseInt(r.text)!==i+1)throw new $e('Argument number "'+r.text+'" out of order');i++,l.push([])}else{if(r.text==="EOF")throw new $e("Expected a macro definition");l[i].push(r.text)}var{tokens:c}=e.gullet.consumeArg();return a&&c.unshift(a),(n==="\\edef"||n==="\\xdef")&&(c=e.gullet.expandTokens(c),c.reverse()),e.gullet.macros.set(s,{tokens:c,numArgs:i,delimiters:l},n===QO[n]),{type:"internal",mode:e.mode}}});tt({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,r=pU(e.gullet.popToken());e.gullet.consumeSpaces();var s=Q3e(e);return gU(e,r,s,n==="\\\\globallet"),{type:"internal",mode:e.mode}}});tt({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,r=pU(e.gullet.popToken()),s=e.gullet.popToken(),i=e.gullet.popToken();return gU(e,r,i,n==="\\\\globalfuture"),e.gullet.pushToken(i),e.gullet.pushToken(s),{type:"internal",mode:e.mode}}});var h0=function(e,n,r){var s=dr.math[e]&&dr.math[e].replace,i=NN(s||e,n,r);if(!i)throw new Error("Unsupported symbol "+e+" and font size "+n+".");return i},RN=function(e,n,r,s){var i=r.havingBaseStyle(n),a=be.makeSpan(s.concat(i.sizingClasses(r)),[e],r),l=i.sizeMultiplier/r.sizeMultiplier;return a.height*=l,a.depth*=l,a.maxFontSize=i.sizeMultiplier,a},xU=function(e,n,r){var s=n.havingBaseStyle(r),i=(1-n.sizeMultiplier/s.sizeMultiplier)*n.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=Xe(i),e.height-=i,e.depth+=i},V3e=function(e,n,r,s,i,a){var l=be.makeSymbol(e,"Main-Regular",i,s),c=RN(l,n,s,a);return r&&xU(c,s,n),c},U3e=function(e,n,r,s){return be.makeSymbol(e,"Size"+n+"-Regular",r,s)},vU=function(e,n,r,s,i,a){var l=U3e(e,n,i,s),c=RN(be.makeSpan(["delimsizing","size"+n],[l],s),Et.TEXT,s,a);return r&&xU(c,s,Et.TEXT),c},KS=function(e,n,r){var s;n==="Size1-Regular"?s="delim-size1":s="delim-size4";var i=be.makeSpan(["delimsizinginner",s],[be.makeSpan([],[be.makeSymbol(e,n,r)])]);return{type:"elem",elem:i}},ZS=function(e,n,r){var s=_o["Size4-Regular"][e.charCodeAt(0)]?_o["Size4-Regular"][e.charCodeAt(0)][4]:_o["Size1-Regular"][e.charCodeAt(0)][4],i=new tu("inner",K5e(e,Math.round(1e3*n))),a=new Ql([i],{width:Xe(s),height:Xe(n),style:"width:"+Xe(s),viewBox:"0 0 "+1e3*s+" "+Math.round(1e3*n),preserveAspectRatio:"xMinYMin"}),l=be.makeSvgSpan([],[a],r);return l.height=n,l.style.height=Xe(n),l.style.width=Xe(s),{type:"elem",elem:l}},VO=.008,L1={type:"kern",size:-1*VO},W3e=["|","\\lvert","\\rvert","\\vert"],G3e=["\\|","\\lVert","\\rVert","\\Vert"],yU=function(e,n,r,s,i,a){var l,c,d,h,m="",g=0;l=d=h=e,c=null;var x="Size1-Regular";e==="\\uparrow"?d=h="⏐":e==="\\Uparrow"?d=h="‖":e==="\\downarrow"?l=d="⏐":e==="\\Downarrow"?l=d="‖":e==="\\updownarrow"?(l="\\uparrow",d="⏐",h="\\downarrow"):e==="\\Updownarrow"?(l="\\Uparrow",d="‖",h="\\Downarrow"):W3e.includes(e)?(d="∣",m="vert",g=333):G3e.includes(e)?(d="∥",m="doublevert",g=556):e==="["||e==="\\lbrack"?(l="⎡",d="⎢",h="⎣",x="Size4-Regular",m="lbrack",g=667):e==="]"||e==="\\rbrack"?(l="⎤",d="⎥",h="⎦",x="Size4-Regular",m="rbrack",g=667):e==="\\lfloor"||e==="⌊"?(d=l="⎢",h="⎣",x="Size4-Regular",m="lfloor",g=667):e==="\\lceil"||e==="⌈"?(l="⎡",d=h="⎢",x="Size4-Regular",m="lceil",g=667):e==="\\rfloor"||e==="⌋"?(d=l="⎥",h="⎦",x="Size4-Regular",m="rfloor",g=667):e==="\\rceil"||e==="⌉"?(l="⎤",d=h="⎥",x="Size4-Regular",m="rceil",g=667):e==="("||e==="\\lparen"?(l="⎛",d="⎜",h="⎝",x="Size4-Regular",m="lparen",g=875):e===")"||e==="\\rparen"?(l="⎞",d="⎟",h="⎠",x="Size4-Regular",m="rparen",g=875):e==="\\{"||e==="\\lbrace"?(l="⎧",c="⎨",h="⎩",d="⎪",x="Size4-Regular"):e==="\\}"||e==="\\rbrace"?(l="⎫",c="⎬",h="⎭",d="⎪",x="Size4-Regular"):e==="\\lgroup"||e==="⟮"?(l="⎧",h="⎩",d="⎪",x="Size4-Regular"):e==="\\rgroup"||e==="⟯"?(l="⎫",h="⎭",d="⎪",x="Size4-Regular"):e==="\\lmoustache"||e==="⎰"?(l="⎧",h="⎭",d="⎪",x="Size4-Regular"):(e==="\\rmoustache"||e==="⎱")&&(l="⎫",h="⎩",d="⎪",x="Size4-Regular");var y=h0(l,x,i),w=y.height+y.depth,S=h0(d,x,i),k=S.height+S.depth,j=h0(h,x,i),N=j.height+j.depth,T=0,E=1;if(c!==null){var _=h0(c,x,i);T=_.height+_.depth,E=2}var A=w+N+T,L=Math.max(0,Math.ceil((n-A)/(E*k))),P=A+L*E*k,B=s.fontMetrics().axisHeight;r&&(B*=s.sizeMultiplier);var $=P/2-B,U=[];if(m.length>0){var te=P-w-N,z=Math.round(P*1e3),Q=Z5e(m,Math.round(te*1e3)),F=new tu(m,Q),Y=(g/1e3).toFixed(3)+"em",J=(z/1e3).toFixed(3)+"em",X=new Ql([F],{width:Y,height:J,viewBox:"0 0 "+g+" "+z}),R=be.makeSvgSpan([],[X],s);R.height=z/1e3,R.style.width=Y,R.style.height=J,U.push({type:"elem",elem:R})}else{if(U.push(KS(h,x,i)),U.push(L1),c===null){var ie=P-w-N+2*VO;U.push(ZS(d,ie,s))}else{var G=(P-w-N-T)/2+2*VO;U.push(ZS(d,G,s)),U.push(L1),U.push(KS(c,x,i)),U.push(L1),U.push(ZS(d,G,s))}U.push(L1),U.push(KS(l,x,i))}var I=s.havingBaseStyle(Et.TEXT),V=be.makeVList({positionType:"bottom",positionData:$,children:U},I);return RN(be.makeSpan(["delimsizing","mult"],[V],I),Et.TEXT,s,a)},JS=80,e5=.08,t5=function(e,n,r,s,i){var a=Y5e(e,s,r),l=new tu(e,a),c=new Ql([l],{width:"400em",height:Xe(n),viewBox:"0 0 400000 "+r,preserveAspectRatio:"xMinYMin slice"});return be.makeSvgSpan(["hide-tail"],[c],i)},X3e=function(e,n){var r=n.havingBaseSizing(),s=kU("\\surd",e*r.sizeMultiplier,SU,r),i=r.sizeMultiplier,a=Math.max(0,n.minRuleThickness-n.fontMetrics().sqrtRuleThickness),l,c=0,d=0,h=0,m;return s.type==="small"?(h=1e3+1e3*a+JS,e<1?i=1:e<1.4&&(i=.7),c=(1+a+e5)/i,d=(1+a)/i,l=t5("sqrtMain",c,h,a,n),l.style.minWidth="0.853em",m=.833/i):s.type==="large"?(h=(1e3+JS)*R0[s.size],d=(R0[s.size]+a)/i,c=(R0[s.size]+a+e5)/i,l=t5("sqrtSize"+s.size,c,h,a,n),l.style.minWidth="1.02em",m=1/i):(c=e+a+e5,d=e+a,h=Math.floor(1e3*e+a)+JS,l=t5("sqrtTall",c,h,a,n),l.style.minWidth="0.742em",m=1.056),l.height=d,l.style.height=Xe(c),{span:l,advanceWidth:m,ruleWidth:(n.fontMetrics().sqrtRuleThickness+a)*i}},bU=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"],Y3e=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"],wU=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],R0=[0,1.2,1.8,2.4,3],K3e=function(e,n,r,s,i){if(e==="<"||e==="\\lt"||e==="⟨"?e="\\langle":(e===">"||e==="\\gt"||e==="⟩")&&(e="\\rangle"),bU.includes(e)||wU.includes(e))return vU(e,n,!1,r,s,i);if(Y3e.includes(e))return yU(e,R0[n],!1,r,s,i);throw new $e("Illegal delimiter: '"+e+"'")},Z3e=[{type:"small",style:Et.SCRIPTSCRIPT},{type:"small",style:Et.SCRIPT},{type:"small",style:Et.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],J3e=[{type:"small",style:Et.SCRIPTSCRIPT},{type:"small",style:Et.SCRIPT},{type:"small",style:Et.TEXT},{type:"stack"}],SU=[{type:"small",style:Et.SCRIPTSCRIPT},{type:"small",style:Et.SCRIPT},{type:"small",style:Et.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],eke=function(e){if(e.type==="small")return"Main-Regular";if(e.type==="large")return"Size"+e.size+"-Regular";if(e.type==="stack")return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},kU=function(e,n,r,s){for(var i=Math.min(2,3-s.style.size),a=i;an)return r[a]}return r[r.length-1]},OU=function(e,n,r,s,i,a){e==="<"||e==="\\lt"||e==="⟨"?e="\\langle":(e===">"||e==="\\gt"||e==="⟩")&&(e="\\rangle");var l;wU.includes(e)?l=Z3e:bU.includes(e)?l=SU:l=J3e;var c=kU(e,n,l,s);return c.type==="small"?V3e(e,c.style,r,s,i,a):c.type==="large"?vU(e,c.size,r,s,i,a):yU(e,n,r,s,i,a)},tke=function(e,n,r,s,i,a){var l=s.fontMetrics().axisHeight*s.sizeMultiplier,c=901,d=5/s.fontMetrics().ptPerEm,h=Math.max(n-l,r+l),m=Math.max(h/500*c,2*h-d);return OU(e,m,!0,s,i,a)},Bl={sqrtImage:X3e,sizedDelim:K3e,sizeToMaxHeight:R0,customSizedDelim:OU,leftRightDelim:tke},OR={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},nke=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function Vb(t,e){var n=Hb(t);if(n&&nke.includes(n.text))return n;throw n?new $e("Invalid delimiter '"+n.text+"' after '"+e.funcName+"'",t):new $e("Invalid delimiter type '"+t.type+"'",t)}tt({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(t,e)=>{var n=Vb(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:OR[t.funcName].size,mclass:OR[t.funcName].mclass,delim:n.text}},htmlBuilder:(t,e)=>t.delim==="."?be.makeSpan([t.mclass]):Bl.sizedDelim(t.delim,t.size,e,t.mode,[t.mclass]),mathmlBuilder:t=>{var e=[];t.delim!=="."&&e.push(Ma(t.delim,t.mode));var n=new qe.MathNode("mo",e);t.mclass==="mopen"||t.mclass==="mclose"?n.setAttribute("fence","true"):n.setAttribute("fence","false"),n.setAttribute("stretchy","true");var r=Xe(Bl.sizeToMaxHeight[t.size]);return n.setAttribute("minsize",r),n.setAttribute("maxsize",r),n}});function jR(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}tt({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=t.parser.gullet.macros.get("\\current@color");if(n&&typeof n!="string")throw new $e("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:Vb(e[0],t).text,color:n}}});tt({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=Vb(e[0],t),r=t.parser;++r.leftrightDepth;var s=r.parseExpression(!1);--r.leftrightDepth,r.expect("\\right",!1);var i=en(r.parseFunction(),"leftright-right");return{type:"leftright",mode:r.mode,body:s,left:n.text,right:i.delim,rightColor:i.color}},htmlBuilder:(t,e)=>{jR(t);for(var n=fs(t.body,e,!0,["mopen","mclose"]),r=0,s=0,i=!1,a=0;a{jR(t);var n=_i(t.body,e);if(t.left!=="."){var r=new qe.MathNode("mo",[Ma(t.left,t.mode)]);r.setAttribute("fence","true"),n.unshift(r)}if(t.right!=="."){var s=new qe.MathNode("mo",[Ma(t.right,t.mode)]);s.setAttribute("fence","true"),t.rightColor&&s.setAttribute("mathcolor",t.rightColor),n.push(s)}return EN(n)}});tt({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=Vb(e[0],t);if(!t.parser.leftrightDepth)throw new $e("\\middle without preceding \\left",n);return{type:"middle",mode:t.parser.mode,delim:n.text}},htmlBuilder:(t,e)=>{var n;if(t.delim===".")n=vp(e,[]);else{n=Bl.sizedDelim(t.delim,1,e,t.mode,[]);var r={delim:t.delim,options:e};n.isMiddle=r}return n},mathmlBuilder:(t,e)=>{var n=t.delim==="\\vert"||t.delim==="|"?Ma("|","text"):Ma(t.delim,t.mode),r=new qe.MathNode("mo",[n]);return r.setAttribute("fence","true"),r.setAttribute("lspace","0.05em"),r.setAttribute("rspace","0.05em"),r}});var DN=(t,e)=>{var n=be.wrapFragment(Pn(t.body,e),e),r=t.label.slice(1),s=e.sizeMultiplier,i,a=0,l=$n.isCharacterBox(t.body);if(r==="sout")i=be.makeSpan(["stretchy","sout"]),i.height=e.fontMetrics().defaultRuleThickness/s,a=-.5*e.fontMetrics().xHeight;else if(r==="phase"){var c=Rr({number:.6,unit:"pt"},e),d=Rr({number:.35,unit:"ex"},e),h=e.havingBaseSizing();s=s/h.sizeMultiplier;var m=n.height+n.depth+c+d;n.style.paddingLeft=Xe(m/2+c);var g=Math.floor(1e3*m*s),x=G5e(g),y=new Ql([new tu("phase",x)],{width:"400em",height:Xe(g/1e3),viewBox:"0 0 400000 "+g,preserveAspectRatio:"xMinYMin slice"});i=be.makeSvgSpan(["hide-tail"],[y],e),i.style.height=Xe(m),a=n.depth+c+d}else{/cancel/.test(r)?l||n.classes.push("cancel-pad"):r==="angl"?n.classes.push("anglpad"):n.classes.push("boxpad");var w=0,S=0,k=0;/box/.test(r)?(k=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),w=e.fontMetrics().fboxsep+(r==="colorbox"?0:k),S=w):r==="angl"?(k=Math.max(e.fontMetrics().defaultRuleThickness,e.minRuleThickness),w=4*k,S=Math.max(0,.25-n.depth)):(w=l?.2:0,S=w),i=Ul.encloseSpan(n,r,w,S,e),/fbox|boxed|fcolorbox/.test(r)?(i.style.borderStyle="solid",i.style.borderWidth=Xe(k)):r==="angl"&&k!==.049&&(i.style.borderTopWidth=Xe(k),i.style.borderRightWidth=Xe(k)),a=n.depth+S,t.backgroundColor&&(i.style.backgroundColor=t.backgroundColor,t.borderColor&&(i.style.borderColor=t.borderColor))}var j;if(t.backgroundColor)j=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:a},{type:"elem",elem:n,shift:0}]},e);else{var N=/cancel|phase/.test(r)?["svg-align"]:[];j=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:0},{type:"elem",elem:i,shift:a,wrapperClasses:N}]},e)}return/cancel/.test(r)&&(j.height=n.height,j.depth=n.depth),/cancel/.test(r)&&!l?be.makeSpan(["mord","cancel-lap"],[j],e):be.makeSpan(["mord"],[j],e)},PN=(t,e)=>{var n=0,r=new qe.MathNode(t.label.indexOf("colorbox")>-1?"mpadded":"menclose",[lr(t.body,e)]);switch(t.label){case"\\cancel":r.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":r.setAttribute("notation","downdiagonalstrike");break;case"\\phase":r.setAttribute("notation","phasorangle");break;case"\\sout":r.setAttribute("notation","horizontalstrike");break;case"\\fbox":r.setAttribute("notation","box");break;case"\\angl":r.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(n=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,r.setAttribute("width","+"+2*n+"pt"),r.setAttribute("height","+"+2*n+"pt"),r.setAttribute("lspace",n+"pt"),r.setAttribute("voffset",n+"pt"),t.label==="\\fcolorbox"){var s=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);r.setAttribute("style","border: "+s+"em solid "+String(t.borderColor))}break;case"\\xcancel":r.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return t.backgroundColor&&r.setAttribute("mathbackground",t.backgroundColor),r};tt({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(t,e,n){var{parser:r,funcName:s}=t,i=en(e[0],"color-token").color,a=e[1];return{type:"enclose",mode:r.mode,label:s,backgroundColor:i,body:a}},htmlBuilder:DN,mathmlBuilder:PN});tt({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(t,e,n){var{parser:r,funcName:s}=t,i=en(e[0],"color-token").color,a=en(e[1],"color-token").color,l=e[2];return{type:"enclose",mode:r.mode,label:s,backgroundColor:a,borderColor:i,body:l}},htmlBuilder:DN,mathmlBuilder:PN});tt({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"enclose",mode:n.mode,label:"\\fbox",body:e[0]}}});tt({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];return{type:"enclose",mode:n.mode,label:r,body:s}},htmlBuilder:DN,mathmlBuilder:PN});tt({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(t,e){var{parser:n}=t;return{type:"enclose",mode:n.mode,label:"\\angl",body:e[0]}}});var jU={};function Vo(t){for(var{type:e,names:n,props:r,handler:s,htmlBuilder:i,mathmlBuilder:a}=t,l={type:e,numArgs:r.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:s},c=0;c{var e=t.parser.settings;if(!e.displayMode)throw new $e("{"+t.envName+"} can be used only in display mode.")};function zN(t){if(t.indexOf("ed")===-1)return t.indexOf("*")===-1}function du(t,e,n){var{hskipBeforeAndAfter:r,addJot:s,cols:i,arraystretch:a,colSeparationType:l,autoTag:c,singleRow:d,emptySingleRow:h,maxNumCols:m,leqno:g}=e;if(t.gullet.beginGroup(),d||t.gullet.macros.set("\\cr","\\\\\\relax"),!a){var x=t.gullet.expandMacroAsText("\\arraystretch");if(x==null)a=1;else if(a=parseFloat(x),!a||a<0)throw new $e("Invalid \\arraystretch: "+x)}t.gullet.beginGroup();var y=[],w=[y],S=[],k=[],j=c!=null?[]:void 0;function N(){c&&t.gullet.macros.set("\\@eqnsw","1",!0)}function T(){j&&(t.gullet.macros.get("\\df@tag")?(j.push(t.subparse([new Xi("\\df@tag")])),t.gullet.macros.set("\\df@tag",void 0,!0)):j.push(!!c&&t.gullet.macros.get("\\@eqnsw")==="1"))}for(N(),k.push(NR(t));;){var E=t.parseExpression(!1,d?"\\end":"\\\\");t.gullet.endGroup(),t.gullet.beginGroup(),E={type:"ordgroup",mode:t.mode,body:E},n&&(E={type:"styling",mode:t.mode,style:n,body:[E]}),y.push(E);var _=t.fetch().text;if(_==="&"){if(m&&y.length===m){if(d||l)throw new $e("Too many tab characters: &",t.nextToken);t.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}t.consume()}else if(_==="\\end"){T(),y.length===1&&E.type==="styling"&&E.body[0].body.length===0&&(w.length>1||!h)&&w.pop(),k.length0&&(N+=.25),d.push({pos:N,isDashed:He[Ot]})}for(T(a[0]),r=0;r0&&($+=j,A<$&&(A=$),$=0)),e.addJot&&(A+=w),L.height=_,L.depth=A,N+=_,L.pos=N,N+=A+$,c[r]=L,T(a[r+1])}var U=N/2+n.fontMetrics().axisHeight,te=e.cols||[],z=[],Q,F,Y=[];if(e.tags&&e.tags.some(He=>He))for(r=0;r=l)){var W=void 0;(s>0||e.hskipBeforeAndAfter)&&(W=$n.deflt(G.pregap,g),W!==0&&(Q=be.makeSpan(["arraycolsep"],[]),Q.style.width=Xe(W),z.push(Q)));var se=[];for(r=0;r0){for(var We=be.makeLineSpan("hline",n,h),Ye=be.makeLineSpan("hdashline",n,h),Je=[{type:"elem",elem:c,shift:0}];d.length>0;){var Oe=d.pop(),Ve=Oe.pos-U;Oe.isDashed?Je.push({type:"elem",elem:Ye,shift:Ve}):Je.push({type:"elem",elem:We,shift:Ve})}c=be.makeVList({positionType:"individualShift",children:Je},n)}if(Y.length===0)return be.makeSpan(["mord"],[c],n);var Ue=be.makeVList({positionType:"individualShift",children:Y},n);return Ue=be.makeSpan(["tag"],[Ue],n),be.makeFragment([c,Ue])},rke={c:"center ",l:"left ",r:"right "},Wo=function(e,n){for(var r=[],s=new qe.MathNode("mtd",[],["mtr-glue"]),i=new qe.MathNode("mtd",[],["mml-eqn-num"]),a=0;a0){var y=e.cols,w="",S=!1,k=0,j=y.length;y[0].type==="separator"&&(g+="top ",k=1),y[y.length-1].type==="separator"&&(g+="bottom ",j-=1);for(var N=k;N0?"left ":"",g+=L[L.length-1].length>0?"right ":"";for(var P=1;P-1?"alignat":"align",i=e.envName==="split",a=du(e.parser,{cols:r,addJot:!0,autoTag:i?void 0:zN(e.envName),emptySingleRow:!0,colSeparationType:s,maxNumCols:i?2:void 0,leqno:e.parser.settings.leqno},"display"),l,c=0,d={type:"ordgroup",mode:e.mode,body:[]};if(n[0]&&n[0].type==="ordgroup"){for(var h="",m=0;m0&&x&&(S=1),r[y]={type:"align",align:w,pregap:S,postgap:0}}return a.colSeparationType=x?"align":"alignat",a};Vo({type:"array",names:["array","darray"],props:{numArgs:1},handler(t,e){var n=Hb(e[0]),r=n?[e[0]]:en(e[0],"ordgroup").body,s=r.map(function(a){var l=AN(a),c=l.text;if("lcr".indexOf(c)!==-1)return{type:"align",align:c};if(c==="|")return{type:"separator",separator:"|"};if(c===":")return{type:"separator",separator:":"};throw new $e("Unknown column alignment: "+c,a)}),i={cols:s,hskipBeforeAndAfter:!0,maxNumCols:s.length};return du(t.parser,i,IN(t.envName))},htmlBuilder:Uo,mathmlBuilder:Wo});Vo({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName.replace("*","")],n="c",r={hskipBeforeAndAfter:!1,cols:[{type:"align",align:n}]};if(t.envName.charAt(t.envName.length-1)==="*"){var s=t.parser;if(s.consumeSpaces(),s.fetch().text==="["){if(s.consume(),s.consumeSpaces(),n=s.fetch().text,"lcr".indexOf(n)===-1)throw new $e("Expected l or c or r",s.nextToken);s.consume(),s.consumeSpaces(),s.expect("]"),s.consume(),r.cols=[{type:"align",align:n}]}}var i=du(t.parser,r,IN(t.envName)),a=Math.max(0,...i.body.map(l=>l.length));return i.cols=new Array(a).fill({type:"align",align:n}),e?{type:"leftright",mode:t.mode,body:[i],left:e[0],right:e[1],rightColor:void 0}:i},htmlBuilder:Uo,mathmlBuilder:Wo});Vo({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(t){var e={arraystretch:.5},n=du(t.parser,e,"script");return n.colSeparationType="small",n},htmlBuilder:Uo,mathmlBuilder:Wo});Vo({type:"array",names:["subarray"],props:{numArgs:1},handler(t,e){var n=Hb(e[0]),r=n?[e[0]]:en(e[0],"ordgroup").body,s=r.map(function(a){var l=AN(a),c=l.text;if("lc".indexOf(c)!==-1)return{type:"align",align:c};throw new $e("Unknown column alignment: "+c,a)});if(s.length>1)throw new $e("{subarray} can contain only one column");var i={cols:s,hskipBeforeAndAfter:!1,arraystretch:.5};if(i=du(t.parser,i,"script"),i.body.length>0&&i.body[0].length>1)throw new $e("{subarray} can contain only one column");return i},htmlBuilder:Uo,mathmlBuilder:Wo});Vo({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(t){var e={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},n=du(t.parser,e,IN(t.envName));return{type:"leftright",mode:t.mode,body:[n],left:t.envName.indexOf("r")>-1?".":"\\{",right:t.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:Uo,mathmlBuilder:Wo});Vo({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:CU,htmlBuilder:Uo,mathmlBuilder:Wo});Vo({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(t){["gather","gather*"].includes(t.envName)&&Ub(t);var e={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:zN(t.envName),emptySingleRow:!0,leqno:t.parser.settings.leqno};return du(t.parser,e,"display")},htmlBuilder:Uo,mathmlBuilder:Wo});Vo({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:CU,htmlBuilder:Uo,mathmlBuilder:Wo});Vo({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(t){Ub(t);var e={autoTag:zN(t.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:t.parser.settings.leqno};return du(t.parser,e,"display")},htmlBuilder:Uo,mathmlBuilder:Wo});Vo({type:"array",names:["CD"],props:{numArgs:0},handler(t){return Ub(t),H3e(t.parser)},htmlBuilder:Uo,mathmlBuilder:Wo});Z("\\nonumber","\\gdef\\@eqnsw{0}");Z("\\notag","\\nonumber");tt({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(t,e){throw new $e(t.funcName+" valid only within array environment")}});var CR=jU;tt({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];if(s.type!=="ordgroup")throw new $e("Invalid environment name",s);for(var i="",a=0;a{var n=t.font,r=e.withFont(n);return Pn(t.body,r)},EU=(t,e)=>{var n=t.font,r=e.withFont(n);return lr(t.body,r)},TR={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};tt({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=Ny(e[0]),i=r;return i in TR&&(i=TR[i]),{type:"font",mode:n.mode,font:i.slice(1),body:s}},htmlBuilder:TU,mathmlBuilder:EU});tt({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(t,e)=>{var{parser:n}=t,r=e[0],s=$n.isCharacterBox(r);return{type:"mclass",mode:n.mode,mclass:Qb(r),body:[{type:"font",mode:n.mode,font:"boldsymbol",body:r}],isCharacterBox:s}}});tt({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(t,e)=>{var{parser:n,funcName:r,breakOnTokenText:s}=t,{mode:i}=n,a=n.parseExpression(!0,s),l="math"+r.slice(1);return{type:"font",mode:i,font:l,body:{type:"ordgroup",mode:n.mode,body:a}}},htmlBuilder:TU,mathmlBuilder:EU});var _U=(t,e)=>{var n=e;return t==="display"?n=n.id>=Et.SCRIPT.id?n.text():Et.DISPLAY:t==="text"&&n.size===Et.DISPLAY.size?n=Et.TEXT:t==="script"?n=Et.SCRIPT:t==="scriptscript"&&(n=Et.SCRIPTSCRIPT),n},LN=(t,e)=>{var n=_U(t.size,e.style),r=n.fracNum(),s=n.fracDen(),i;i=e.havingStyle(r);var a=Pn(t.numer,i,e);if(t.continued){var l=8.5/e.fontMetrics().ptPerEm,c=3.5/e.fontMetrics().ptPerEm;a.height=a.height0?y=3*g:y=7*g,w=e.fontMetrics().denom1):(m>0?(x=e.fontMetrics().num2,y=g):(x=e.fontMetrics().num3,y=3*g),w=e.fontMetrics().denom2);var S;if(h){var j=e.fontMetrics().axisHeight;x-a.depth-(j+.5*m){var n=new qe.MathNode("mfrac",[lr(t.numer,e),lr(t.denom,e)]);if(!t.hasBarLine)n.setAttribute("linethickness","0px");else if(t.barSize){var r=Rr(t.barSize,e);n.setAttribute("linethickness",Xe(r))}var s=_U(t.size,e.style);if(s.size!==e.style.size){n=new qe.MathNode("mstyle",[n]);var i=s.size===Et.DISPLAY.size?"true":"false";n.setAttribute("displaystyle",i),n.setAttribute("scriptlevel","0")}if(t.leftDelim!=null||t.rightDelim!=null){var a=[];if(t.leftDelim!=null){var l=new qe.MathNode("mo",[new qe.TextNode(t.leftDelim.replace("\\",""))]);l.setAttribute("fence","true"),a.push(l)}if(a.push(n),t.rightDelim!=null){var c=new qe.MathNode("mo",[new qe.TextNode(t.rightDelim.replace("\\",""))]);c.setAttribute("fence","true"),a.push(c)}return EN(a)}return n};tt({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0],i=e[1],a,l=null,c=null,d="auto";switch(r){case"\\dfrac":case"\\frac":case"\\tfrac":a=!0;break;case"\\\\atopfrac":a=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":a=!1,l="(",c=")";break;case"\\\\bracefrac":a=!1,l="\\{",c="\\}";break;case"\\\\brackfrac":a=!1,l="[",c="]";break;default:throw new Error("Unrecognized genfrac command")}switch(r){case"\\dfrac":case"\\dbinom":d="display";break;case"\\tfrac":case"\\tbinom":d="text";break}return{type:"genfrac",mode:n.mode,continued:!1,numer:s,denom:i,hasBarLine:a,leftDelim:l,rightDelim:c,size:d,barSize:null}},htmlBuilder:LN,mathmlBuilder:BN});tt({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0],i=e[1];return{type:"genfrac",mode:n.mode,continued:!0,numer:s,denom:i,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}}});tt({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(t){var{parser:e,funcName:n,token:r}=t,s;switch(n){case"\\over":s="\\frac";break;case"\\choose":s="\\binom";break;case"\\atop":s="\\\\atopfrac";break;case"\\brace":s="\\\\bracefrac";break;case"\\brack":s="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:s,token:r}}});var ER=["display","text","script","scriptscript"],_R=function(e){var n=null;return e.length>0&&(n=e,n=n==="."?null:n),n};tt({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(t,e){var{parser:n}=t,r=e[4],s=e[5],i=Ny(e[0]),a=i.type==="atom"&&i.family==="open"?_R(i.text):null,l=Ny(e[1]),c=l.type==="atom"&&l.family==="close"?_R(l.text):null,d=en(e[2],"size"),h,m=null;d.isBlank?h=!0:(m=d.value,h=m.number>0);var g="auto",x=e[3];if(x.type==="ordgroup"){if(x.body.length>0){var y=en(x.body[0],"textord");g=ER[Number(y.text)]}}else x=en(x,"textord"),g=ER[Number(x.text)];return{type:"genfrac",mode:n.mode,numer:r,denom:s,continued:!1,hasBarLine:h,barSize:m,leftDelim:a,rightDelim:c,size:g}},htmlBuilder:LN,mathmlBuilder:BN});tt({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(t,e){var{parser:n,funcName:r,token:s}=t;return{type:"infix",mode:n.mode,replaceWith:"\\\\abovefrac",size:en(e[0],"size").value,token:s}}});tt({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0],i=R5e(en(e[1],"infix").size),a=e[2],l=i.number>0;return{type:"genfrac",mode:n.mode,numer:s,denom:a,continued:!1,hasBarLine:l,barSize:i,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:LN,mathmlBuilder:BN});var AU=(t,e)=>{var n=e.style,r,s;t.type==="supsub"?(r=t.sup?Pn(t.sup,e.havingStyle(n.sup()),e):Pn(t.sub,e.havingStyle(n.sub()),e),s=en(t.base,"horizBrace")):s=en(t,"horizBrace");var i=Pn(s.base,e.havingBaseStyle(Et.DISPLAY)),a=Ul.svgSpan(s,e),l;if(s.isOver?(l=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:.1},{type:"elem",elem:a}]},e),l.children[0].children[0].children[1].classes.push("svg-align")):(l=be.makeVList({positionType:"bottom",positionData:i.depth+.1+a.height,children:[{type:"elem",elem:a},{type:"kern",size:.1},{type:"elem",elem:i}]},e),l.children[0].children[0].children[0].classes.push("svg-align")),r){var c=be.makeSpan(["mord",s.isOver?"mover":"munder"],[l],e);s.isOver?l=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:c},{type:"kern",size:.2},{type:"elem",elem:r}]},e):l=be.makeVList({positionType:"bottom",positionData:c.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:c}]},e)}return be.makeSpan(["mord",s.isOver?"mover":"munder"],[l],e)},ske=(t,e)=>{var n=Ul.mathMLnode(t.label);return new qe.MathNode(t.isOver?"mover":"munder",[lr(t.base,e),n])};tt({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:r}=t;return{type:"horizBrace",mode:n.mode,label:r,isOver:/^\\over/.test(r),base:e[0]}},htmlBuilder:AU,mathmlBuilder:ske});tt({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[1],s=en(e[0],"url").url;return n.settings.isTrusted({command:"\\href",url:s})?{type:"href",mode:n.mode,href:s,body:Qr(r)}:n.formatUnsupportedCmd("\\href")},htmlBuilder:(t,e)=>{var n=fs(t.body,e,!1);return be.makeAnchor(t.href,[],n,e)},mathmlBuilder:(t,e)=>{var n=nu(t.body,e);return n instanceof Qi||(n=new Qi("mrow",[n])),n.setAttribute("href",t.href),n}});tt({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=en(e[0],"url").url;if(!n.settings.isTrusted({command:"\\url",url:r}))return n.formatUnsupportedCmd("\\url");for(var s=[],i=0;i{var{parser:n,funcName:r,token:s}=t,i=en(e[0],"raw").string,a=e[1];n.settings.strict&&n.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var l,c={};switch(r){case"\\htmlClass":c.class=i,l={command:"\\htmlClass",class:i};break;case"\\htmlId":c.id=i,l={command:"\\htmlId",id:i};break;case"\\htmlStyle":c.style=i,l={command:"\\htmlStyle",style:i};break;case"\\htmlData":{for(var d=i.split(","),h=0;h{var n=fs(t.body,e,!1),r=["enclosing"];t.attributes.class&&r.push(...t.attributes.class.trim().split(/\s+/));var s=be.makeSpan(r,n,e);for(var i in t.attributes)i!=="class"&&t.attributes.hasOwnProperty(i)&&s.setAttribute(i,t.attributes[i]);return s},mathmlBuilder:(t,e)=>nu(t.body,e)});tt({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t;return{type:"htmlmathml",mode:n.mode,html:Qr(e[0]),mathml:Qr(e[1])}},htmlBuilder:(t,e)=>{var n=fs(t.html,e,!1);return be.makeFragment(n)},mathmlBuilder:(t,e)=>nu(t.mathml,e)});var n5=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var n=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!n)throw new $e("Invalid size: '"+e+"' in \\includegraphics");var r={number:+(n[1]+n[2]),unit:n[3]};if(!YV(r))throw new $e("Invalid unit: '"+r.unit+"' in \\includegraphics.");return r};tt({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(t,e,n)=>{var{parser:r}=t,s={number:0,unit:"em"},i={number:.9,unit:"em"},a={number:0,unit:"em"},l="";if(n[0])for(var c=en(n[0],"raw").string,d=c.split(","),h=0;h{var n=Rr(t.height,e),r=0;t.totalheight.number>0&&(r=Rr(t.totalheight,e)-n);var s=0;t.width.number>0&&(s=Rr(t.width,e));var i={height:Xe(n+r)};s>0&&(i.width=Xe(s)),r>0&&(i.verticalAlign=Xe(-r));var a=new s3e(t.src,t.alt,i);return a.height=n,a.depth=r,a},mathmlBuilder:(t,e)=>{var n=new qe.MathNode("mglyph",[]);n.setAttribute("alt",t.alt);var r=Rr(t.height,e),s=0;if(t.totalheight.number>0&&(s=Rr(t.totalheight,e)-r,n.setAttribute("valign",Xe(-s))),n.setAttribute("height",Xe(r+s)),t.width.number>0){var i=Rr(t.width,e);n.setAttribute("width",Xe(i))}return n.setAttribute("src",t.src),n}});tt({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(t,e){var{parser:n,funcName:r}=t,s=en(e[0],"size");if(n.settings.strict){var i=r[1]==="m",a=s.value.unit==="mu";i?(a||n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" supports only mu units, "+("not "+s.value.unit+" units")),n.mode!=="math"&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" works only in math mode")):a&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" doesn't support mu units")}return{type:"kern",mode:n.mode,dimension:s.value}},htmlBuilder(t,e){return be.makeGlue(t.dimension,e)},mathmlBuilder(t,e){var n=Rr(t.dimension,e);return new qe.SpaceNode(n)}});tt({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0];return{type:"lap",mode:n.mode,alignment:r.slice(5),body:s}},htmlBuilder:(t,e)=>{var n;t.alignment==="clap"?(n=be.makeSpan([],[Pn(t.body,e)]),n=be.makeSpan(["inner"],[n],e)):n=be.makeSpan(["inner"],[Pn(t.body,e)]);var r=be.makeSpan(["fix"],[]),s=be.makeSpan([t.alignment],[n,r],e),i=be.makeSpan(["strut"]);return i.style.height=Xe(s.height+s.depth),s.depth&&(i.style.verticalAlign=Xe(-s.depth)),s.children.unshift(i),s=be.makeSpan(["thinbox"],[s],e),be.makeSpan(["mord","vbox"],[s],e)},mathmlBuilder:(t,e)=>{var n=new qe.MathNode("mpadded",[lr(t.body,e)]);if(t.alignment!=="rlap"){var r=t.alignment==="llap"?"-1":"-0.5";n.setAttribute("lspace",r+"width")}return n.setAttribute("width","0px"),n}});tt({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){var{funcName:n,parser:r}=t,s=r.mode;r.switchMode("math");var i=n==="\\("?"\\)":"$",a=r.parseExpression(!1,i);return r.expect(i),r.switchMode(s),{type:"styling",mode:r.mode,style:"text",body:a}}});tt({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){throw new $e("Mismatched "+t.funcName)}});var AR=(t,e)=>{switch(e.style.size){case Et.DISPLAY.size:return t.display;case Et.TEXT.size:return t.text;case Et.SCRIPT.size:return t.script;case Et.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}};tt({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(t,e)=>{var{parser:n}=t;return{type:"mathchoice",mode:n.mode,display:Qr(e[0]),text:Qr(e[1]),script:Qr(e[2]),scriptscript:Qr(e[3])}},htmlBuilder:(t,e)=>{var n=AR(t,e),r=fs(n,e,!1);return be.makeFragment(r)},mathmlBuilder:(t,e)=>{var n=AR(t,e);return nu(n,e)}});var MU=(t,e,n,r,s,i,a)=>{t=be.makeSpan([],[t]);var l=n&&$n.isCharacterBox(n),c,d;if(e){var h=Pn(e,r.havingStyle(s.sup()),r);d={elem:h,kern:Math.max(r.fontMetrics().bigOpSpacing1,r.fontMetrics().bigOpSpacing3-h.depth)}}if(n){var m=Pn(n,r.havingStyle(s.sub()),r);c={elem:m,kern:Math.max(r.fontMetrics().bigOpSpacing2,r.fontMetrics().bigOpSpacing4-m.height)}}var g;if(d&&c){var x=r.fontMetrics().bigOpSpacing5+c.elem.height+c.elem.depth+c.kern+t.depth+a;g=be.makeVList({positionType:"bottom",positionData:x,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:c.elem,marginLeft:Xe(-i)},{type:"kern",size:c.kern},{type:"elem",elem:t},{type:"kern",size:d.kern},{type:"elem",elem:d.elem,marginLeft:Xe(i)},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else if(c){var y=t.height-a;g=be.makeVList({positionType:"top",positionData:y,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:c.elem,marginLeft:Xe(-i)},{type:"kern",size:c.kern},{type:"elem",elem:t}]},r)}else if(d){var w=t.depth+a;g=be.makeVList({positionType:"bottom",positionData:w,children:[{type:"elem",elem:t},{type:"kern",size:d.kern},{type:"elem",elem:d.elem,marginLeft:Xe(i)},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else return t;var S=[g];if(c&&i!==0&&!l){var k=be.makeSpan(["mspace"],[],r);k.style.marginRight=Xe(i),S.unshift(k)}return be.makeSpan(["mop","op-limits"],S,r)},RU=["\\smallint"],$f=(t,e)=>{var n,r,s=!1,i;t.type==="supsub"?(n=t.sup,r=t.sub,i=en(t.base,"op"),s=!0):i=en(t,"op");var a=e.style,l=!1;a.size===Et.DISPLAY.size&&i.symbol&&!RU.includes(i.name)&&(l=!0);var c;if(i.symbol){var d=l?"Size2-Regular":"Size1-Regular",h="";if((i.name==="\\oiint"||i.name==="\\oiiint")&&(h=i.name.slice(1),i.name=h==="oiint"?"\\iint":"\\iiint"),c=be.makeSymbol(i.name,d,"math",e,["mop","op-symbol",l?"large-op":"small-op"]),h.length>0){var m=c.italic,g=be.staticSvg(h+"Size"+(l?"2":"1"),e);c=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:c,shift:0},{type:"elem",elem:g,shift:l?.08:0}]},e),i.name="\\"+h,c.classes.unshift("mop"),c.italic=m}}else if(i.body){var x=fs(i.body,e,!0);x.length===1&&x[0]instanceof Aa?(c=x[0],c.classes[0]="mop"):c=be.makeSpan(["mop"],x,e)}else{for(var y=[],w=1;w{var n;if(t.symbol)n=new Qi("mo",[Ma(t.name,t.mode)]),RU.includes(t.name)&&n.setAttribute("largeop","false");else if(t.body)n=new Qi("mo",_i(t.body,e));else{n=new Qi("mi",[new Ao(t.name.slice(1))]);var r=new Qi("mo",[Ma("⁡","text")]);t.parentIsSupSub?n=new Qi("mrow",[n,r]):n=oU([n,r])}return n},ike={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"};tt({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=r;return s.length===1&&(s=ike[s]),{type:"op",mode:n.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:s}},htmlBuilder:$f,mathmlBuilder:gg});tt({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"op",mode:n.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:Qr(r)}},htmlBuilder:$f,mathmlBuilder:gg});var ake={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"};tt({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(t){var{parser:e,funcName:n}=t;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:$f,mathmlBuilder:gg});tt({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(t){var{parser:e,funcName:n}=t;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:$f,mathmlBuilder:gg});tt({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],props:{numArgs:0},handler(t){var{parser:e,funcName:n}=t,r=n;return r.length===1&&(r=ake[r]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:r}},htmlBuilder:$f,mathmlBuilder:gg});var DU=(t,e)=>{var n,r,s=!1,i;t.type==="supsub"?(n=t.sup,r=t.sub,i=en(t.base,"operatorname"),s=!0):i=en(t,"operatorname");var a;if(i.body.length>0){for(var l=i.body.map(m=>{var g=m.text;return typeof g=="string"?{type:"textord",mode:m.mode,text:g}:m}),c=fs(l,e.withFont("mathrm"),!0),d=0;d{for(var n=_i(t.body,e.withFont("mathrm")),r=!0,s=0;sh.toText()).join("");n=[new qe.TextNode(l)]}var c=new qe.MathNode("mi",n);c.setAttribute("mathvariant","normal");var d=new qe.MathNode("mo",[Ma("⁡","text")]);return t.parentIsSupSub?new qe.MathNode("mrow",[c,d]):qe.newDocumentFragment([c,d])};tt({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0];return{type:"operatorname",mode:n.mode,body:Qr(s),alwaysHandleSupSub:r==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},htmlBuilder:DU,mathmlBuilder:oke});Z("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");Sd({type:"ordgroup",htmlBuilder(t,e){return t.semisimple?be.makeFragment(fs(t.body,e,!1)):be.makeSpan(["mord"],fs(t.body,e,!0),e)},mathmlBuilder(t,e){return nu(t.body,e,!0)}});tt({type:"overline",names:["\\overline"],props:{numArgs:1},handler(t,e){var{parser:n}=t,r=e[0];return{type:"overline",mode:n.mode,body:r}},htmlBuilder(t,e){var n=Pn(t.body,e.havingCrampedStyle()),r=be.makeLineSpan("overline-line",e),s=e.fontMetrics().defaultRuleThickness,i=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n},{type:"kern",size:3*s},{type:"elem",elem:r},{type:"kern",size:s}]},e);return be.makeSpan(["mord","overline"],[i],e)},mathmlBuilder(t,e){var n=new qe.MathNode("mo",[new qe.TextNode("‾")]);n.setAttribute("stretchy","true");var r=new qe.MathNode("mover",[lr(t.body,e),n]);return r.setAttribute("accent","true"),r}});tt({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"phantom",mode:n.mode,body:Qr(r)}},htmlBuilder:(t,e)=>{var n=fs(t.body,e.withPhantom(),!1);return be.makeFragment(n)},mathmlBuilder:(t,e)=>{var n=_i(t.body,e);return new qe.MathNode("mphantom",n)}});tt({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"hphantom",mode:n.mode,body:r}},htmlBuilder:(t,e)=>{var n=be.makeSpan([],[Pn(t.body,e.withPhantom())]);if(n.height=0,n.depth=0,n.children)for(var r=0;r{var n=_i(Qr(t.body),e),r=new qe.MathNode("mphantom",n),s=new qe.MathNode("mpadded",[r]);return s.setAttribute("height","0px"),s.setAttribute("depth","0px"),s}});tt({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"vphantom",mode:n.mode,body:r}},htmlBuilder:(t,e)=>{var n=be.makeSpan(["inner"],[Pn(t.body,e.withPhantom())]),r=be.makeSpan(["fix"],[]);return be.makeSpan(["mord","rlap"],[n,r],e)},mathmlBuilder:(t,e)=>{var n=_i(Qr(t.body),e),r=new qe.MathNode("mphantom",n),s=new qe.MathNode("mpadded",[r]);return s.setAttribute("width","0px"),s}});tt({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(t,e){var{parser:n}=t,r=en(e[0],"size").value,s=e[1];return{type:"raisebox",mode:n.mode,dy:r,body:s}},htmlBuilder(t,e){var n=Pn(t.body,e),r=Rr(t.dy,e);return be.makeVList({positionType:"shift",positionData:-r,children:[{type:"elem",elem:n}]},e)},mathmlBuilder(t,e){var n=new qe.MathNode("mpadded",[lr(t.body,e)]),r=t.dy.number+t.dy.unit;return n.setAttribute("voffset",r),n}});tt({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(t){var{parser:e}=t;return{type:"internal",mode:e.mode}}});tt({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(t,e,n){var{parser:r}=t,s=n[0],i=en(e[0],"size"),a=en(e[1],"size");return{type:"rule",mode:r.mode,shift:s&&en(s,"size").value,width:i.value,height:a.value}},htmlBuilder(t,e){var n=be.makeSpan(["mord","rule"],[],e),r=Rr(t.width,e),s=Rr(t.height,e),i=t.shift?Rr(t.shift,e):0;return n.style.borderRightWidth=Xe(r),n.style.borderTopWidth=Xe(s),n.style.bottom=Xe(i),n.width=r,n.height=s+i,n.depth=-i,n.maxFontSize=s*1.125*e.sizeMultiplier,n},mathmlBuilder(t,e){var n=Rr(t.width,e),r=Rr(t.height,e),s=t.shift?Rr(t.shift,e):0,i=e.color&&e.getColor()||"black",a=new qe.MathNode("mspace");a.setAttribute("mathbackground",i),a.setAttribute("width",Xe(n)),a.setAttribute("height",Xe(r));var l=new qe.MathNode("mpadded",[a]);return s>=0?l.setAttribute("height",Xe(s)):(l.setAttribute("height",Xe(s)),l.setAttribute("depth",Xe(-s))),l.setAttribute("voffset",Xe(s)),l}});function PU(t,e,n){for(var r=fs(t,e,!1),s=e.sizeMultiplier/n.sizeMultiplier,i=0;i{var n=e.havingSize(t.size);return PU(t.body,n,e)};tt({type:"sizing",names:MR,props:{numArgs:0,allowedInText:!0},handler:(t,e)=>{var{breakOnTokenText:n,funcName:r,parser:s}=t,i=s.parseExpression(!1,n);return{type:"sizing",mode:s.mode,size:MR.indexOf(r)+1,body:i}},htmlBuilder:lke,mathmlBuilder:(t,e)=>{var n=e.havingSize(t.size),r=_i(t.body,n),s=new qe.MathNode("mstyle",r);return s.setAttribute("mathsize",Xe(n.sizeMultiplier)),s}});tt({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(t,e,n)=>{var{parser:r}=t,s=!1,i=!1,a=n[0]&&en(n[0],"ordgroup");if(a)for(var l="",c=0;c{var n=be.makeSpan([],[Pn(t.body,e)]);if(!t.smashHeight&&!t.smashDepth)return n;if(t.smashHeight&&(n.height=0,n.children))for(var r=0;r{var n=new qe.MathNode("mpadded",[lr(t.body,e)]);return t.smashHeight&&n.setAttribute("height","0px"),t.smashDepth&&n.setAttribute("depth","0px"),n}});tt({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,n){var{parser:r}=t,s=n[0],i=e[0];return{type:"sqrt",mode:r.mode,body:i,index:s}},htmlBuilder(t,e){var n=Pn(t.body,e.havingCrampedStyle());n.height===0&&(n.height=e.fontMetrics().xHeight),n=be.wrapFragment(n,e);var r=e.fontMetrics(),s=r.defaultRuleThickness,i=s;e.style.idn.height+n.depth+a&&(a=(a+m-n.height-n.depth)/2);var g=c.height-n.height-a-d;n.style.paddingLeft=Xe(h);var x=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:-(n.height+g)},{type:"elem",elem:c},{type:"kern",size:d}]},e);if(t.index){var y=e.havingStyle(Et.SCRIPTSCRIPT),w=Pn(t.index,y,e),S=.6*(x.height-x.depth),k=be.makeVList({positionType:"shift",positionData:-S,children:[{type:"elem",elem:w}]},e),j=be.makeSpan(["root"],[k]);return be.makeSpan(["mord","sqrt"],[j,x],e)}else return be.makeSpan(["mord","sqrt"],[x],e)},mathmlBuilder(t,e){var{body:n,index:r}=t;return r?new qe.MathNode("mroot",[lr(n,e),lr(r,e)]):new qe.MathNode("msqrt",[lr(n,e)])}});var RR={display:Et.DISPLAY,text:Et.TEXT,script:Et.SCRIPT,scriptscript:Et.SCRIPTSCRIPT};tt({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t,e){var{breakOnTokenText:n,funcName:r,parser:s}=t,i=s.parseExpression(!0,n),a=r.slice(1,r.length-5);return{type:"styling",mode:s.mode,style:a,body:i}},htmlBuilder(t,e){var n=RR[t.style],r=e.havingStyle(n).withFont("");return PU(t.body,r,e)},mathmlBuilder(t,e){var n=RR[t.style],r=e.havingStyle(n),s=_i(t.body,r),i=new qe.MathNode("mstyle",s),a={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},l=a[t.style];return i.setAttribute("scriptlevel",l[0]),i.setAttribute("displaystyle",l[1]),i}});var cke=function(e,n){var r=e.base;if(r)if(r.type==="op"){var s=r.limits&&(n.style.size===Et.DISPLAY.size||r.alwaysHandleSupSub);return s?$f:null}else if(r.type==="operatorname"){var i=r.alwaysHandleSupSub&&(n.style.size===Et.DISPLAY.size||r.limits);return i?DU:null}else{if(r.type==="accent")return $n.isCharacterBox(r.base)?MN:null;if(r.type==="horizBrace"){var a=!e.sub;return a===r.isOver?AU:null}else return null}else return null};Sd({type:"supsub",htmlBuilder(t,e){var n=cke(t,e);if(n)return n(t,e);var{base:r,sup:s,sub:i}=t,a=Pn(r,e),l,c,d=e.fontMetrics(),h=0,m=0,g=r&&$n.isCharacterBox(r);if(s){var x=e.havingStyle(e.style.sup());l=Pn(s,x,e),g||(h=a.height-x.fontMetrics().supDrop*x.sizeMultiplier/e.sizeMultiplier)}if(i){var y=e.havingStyle(e.style.sub());c=Pn(i,y,e),g||(m=a.depth+y.fontMetrics().subDrop*y.sizeMultiplier/e.sizeMultiplier)}var w;e.style===Et.DISPLAY?w=d.sup1:e.style.cramped?w=d.sup3:w=d.sup2;var S=e.sizeMultiplier,k=Xe(.5/d.ptPerEm/S),j=null;if(c){var N=t.base&&t.base.type==="op"&&t.base.name&&(t.base.name==="\\oiint"||t.base.name==="\\oiiint");(a instanceof Aa||N)&&(j=Xe(-a.italic))}var T;if(l&&c){h=Math.max(h,w,l.depth+.25*d.xHeight),m=Math.max(m,d.sub2);var E=d.defaultRuleThickness,_=4*E;if(h-l.depth-(c.height-m)<_){m=_-(h-l.depth)+c.height;var A=.8*d.xHeight-(h-l.depth);A>0&&(h+=A,m-=A)}var L=[{type:"elem",elem:c,shift:m,marginRight:k,marginLeft:j},{type:"elem",elem:l,shift:-h,marginRight:k}];T=be.makeVList({positionType:"individualShift",children:L},e)}else if(c){m=Math.max(m,d.sub1,c.height-.8*d.xHeight);var P=[{type:"elem",elem:c,marginLeft:j,marginRight:k}];T=be.makeVList({positionType:"shift",positionData:m,children:P},e)}else if(l)h=Math.max(h,w,l.depth+.25*d.xHeight),T=be.makeVList({positionType:"shift",positionData:-h,children:[{type:"elem",elem:l,marginRight:k}]},e);else throw new Error("supsub must have either sup or sub.");var B=$O(a,"right")||"mord";return be.makeSpan([B],[a,be.makeSpan(["msupsub"],[T])],e)},mathmlBuilder(t,e){var n=!1,r,s;t.base&&t.base.type==="horizBrace"&&(s=!!t.sup,s===t.base.isOver&&(n=!0,r=t.base.isOver)),t.base&&(t.base.type==="op"||t.base.type==="operatorname")&&(t.base.parentIsSupSub=!0);var i=[lr(t.base,e)];t.sub&&i.push(lr(t.sub,e)),t.sup&&i.push(lr(t.sup,e));var a;if(n)a=r?"mover":"munder";else if(t.sub)if(t.sup){var d=t.base;d&&d.type==="op"&&d.limits&&e.style===Et.DISPLAY||d&&d.type==="operatorname"&&d.alwaysHandleSupSub&&(e.style===Et.DISPLAY||d.limits)?a="munderover":a="msubsup"}else{var c=t.base;c&&c.type==="op"&&c.limits&&(e.style===Et.DISPLAY||c.alwaysHandleSupSub)||c&&c.type==="operatorname"&&c.alwaysHandleSupSub&&(c.limits||e.style===Et.DISPLAY)?a="munder":a="msub"}else{var l=t.base;l&&l.type==="op"&&l.limits&&(e.style===Et.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||e.style===Et.DISPLAY)?a="mover":a="msup"}return new qe.MathNode(a,i)}});Sd({type:"atom",htmlBuilder(t,e){return be.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder(t,e){var n=new qe.MathNode("mo",[Ma(t.text,t.mode)]);if(t.family==="bin"){var r=_N(t,e);r==="bold-italic"&&n.setAttribute("mathvariant",r)}else t.family==="punct"?n.setAttribute("separator","true"):(t.family==="open"||t.family==="close")&&n.setAttribute("stretchy","false");return n}});var zU={mi:"italic",mn:"normal",mtext:"normal"};Sd({type:"mathord",htmlBuilder(t,e){return be.makeOrd(t,e,"mathord")},mathmlBuilder(t,e){var n=new qe.MathNode("mi",[Ma(t.text,t.mode,e)]),r=_N(t,e)||"italic";return r!==zU[n.type]&&n.setAttribute("mathvariant",r),n}});Sd({type:"textord",htmlBuilder(t,e){return be.makeOrd(t,e,"textord")},mathmlBuilder(t,e){var n=Ma(t.text,t.mode,e),r=_N(t,e)||"normal",s;return t.mode==="text"?s=new qe.MathNode("mtext",[n]):/[0-9]/.test(t.text)?s=new qe.MathNode("mn",[n]):t.text==="\\prime"?s=new qe.MathNode("mo",[n]):s=new qe.MathNode("mi",[n]),r!==zU[s.type]&&s.setAttribute("mathvariant",r),s}});var r5={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},s5={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};Sd({type:"spacing",htmlBuilder(t,e){if(s5.hasOwnProperty(t.text)){var n=s5[t.text].className||"";if(t.mode==="text"){var r=be.makeOrd(t,e,"textord");return r.classes.push(n),r}else return be.makeSpan(["mspace",n],[be.mathsym(t.text,t.mode,e)],e)}else{if(r5.hasOwnProperty(t.text))return be.makeSpan(["mspace",r5[t.text]],[],e);throw new $e('Unknown type of space "'+t.text+'"')}},mathmlBuilder(t,e){var n;if(s5.hasOwnProperty(t.text))n=new qe.MathNode("mtext",[new qe.TextNode(" ")]);else{if(r5.hasOwnProperty(t.text))return new qe.MathNode("mspace");throw new $e('Unknown type of space "'+t.text+'"')}return n}});var DR=()=>{var t=new qe.MathNode("mtd",[]);return t.setAttribute("width","50%"),t};Sd({type:"tag",mathmlBuilder(t,e){var n=new qe.MathNode("mtable",[new qe.MathNode("mtr",[DR(),new qe.MathNode("mtd",[nu(t.body,e)]),DR(),new qe.MathNode("mtd",[nu(t.tag,e)])])]);return n.setAttribute("width","100%"),n}});var PR={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},zR={"\\textbf":"textbf","\\textmd":"textmd"},uke={"\\textit":"textit","\\textup":"textup"},IR=(t,e)=>{var n=t.font;if(n){if(PR[n])return e.withTextFontFamily(PR[n]);if(zR[n])return e.withTextFontWeight(zR[n]);if(n==="\\emph")return e.fontShape==="textit"?e.withTextFontShape("textup"):e.withTextFontShape("textit")}else return e;return e.withTextFontShape(uke[n])};tt({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];return{type:"text",mode:n.mode,body:Qr(s),font:r}},htmlBuilder(t,e){var n=IR(t,e),r=fs(t.body,n,!0);return be.makeSpan(["mord","text"],r,n)},mathmlBuilder(t,e){var n=IR(t,e);return nu(t.body,n)}});tt({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"underline",mode:n.mode,body:e[0]}},htmlBuilder(t,e){var n=Pn(t.body,e),r=be.makeLineSpan("underline-line",e),s=e.fontMetrics().defaultRuleThickness,i=be.makeVList({positionType:"top",positionData:n.height,children:[{type:"kern",size:s},{type:"elem",elem:r},{type:"kern",size:3*s},{type:"elem",elem:n}]},e);return be.makeSpan(["mord","underline"],[i],e)},mathmlBuilder(t,e){var n=new qe.MathNode("mo",[new qe.TextNode("‾")]);n.setAttribute("stretchy","true");var r=new qe.MathNode("munder",[lr(t.body,e),n]);return r.setAttribute("accentunder","true"),r}});tt({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(t,e){var{parser:n}=t;return{type:"vcenter",mode:n.mode,body:e[0]}},htmlBuilder(t,e){var n=Pn(t.body,e),r=e.fontMetrics().axisHeight,s=.5*(n.height-r-(n.depth+r));return be.makeVList({positionType:"shift",positionData:s,children:[{type:"elem",elem:n}]},e)},mathmlBuilder(t,e){return new qe.MathNode("mpadded",[lr(t.body,e)],["vcenter"])}});tt({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,e,n){throw new $e("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(t,e){for(var n=LR(t),r=[],s=e.havingStyle(e.style.text()),i=0;it.body.replace(/ /g,t.star?"␣":" "),qc=iU,IU=`[ \r + ]`,dke="\\\\[a-zA-Z@]+",hke="\\\\[^\uD800-\uDFFF]",fke="("+dke+")"+IU+"*",mke=`\\\\( |[ \r ]+ -?)[ \r ]*`,FO="[̀-ͯ]",Y3e=new RegExp(FO+"+$"),K3e="("+MU+"+)|"+(X3e+"|")+"([!-\\[\\]-‧‪-퟿豈-￿]"+(FO+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(FO+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+G3e)+("|"+W3e+")");class RR{constructor(e,n){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=n,this.tokenRegex=new RegExp(K3e,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,n){this.catcodes[e]=n}lex(){var e=this.input,n=this.tokenRegex.lastIndex;if(n===e.length)return new Xi("EOF",new pi(this,n,n));var r=this.tokenRegex.exec(e);if(r===null||r.index!==n)throw new $e("Unexpected character: '"+e[n]+"'",new Xi(e[n],new pi(this,n,n+1)));var s=r[6]||r[3]||(r[2]?"\\ ":" ");if(this.catcodes[s]===14){var i=e.indexOf(` -`,this.tokenRegex.lastIndex);return i===-1?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=i+1,this.lex()}return new Xi(s,new pi(this,n,this.tokenRegex.lastIndex))}}class Z3e{constructor(e,n){e===void 0&&(e={}),n===void 0&&(n={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=n,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new $e("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var n in e)e.hasOwnProperty(n)&&(e[n]==null?delete this.current[n]:this.current[n]=e[n])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,n,r){if(r===void 0&&(r=!1),r){for(var s=0;s0&&(this.undefStack[this.undefStack.length-1][e]=n)}else{var i=this.undefStack[this.undefStack.length-1];i&&!i.hasOwnProperty(e)&&(i[e]=this.current[e])}n==null?delete this.current[e]:this.current[e]=n}}var J3e=bU;Z("\\noexpand",function(t){var e=t.popToken();return t.isExpandable(e.text)&&(e.noexpand=!0,e.treatAsRelax=!0),{tokens:[e],numArgs:0}});Z("\\expandafter",function(t){var e=t.popToken();return t.expandOnce(!0),{tokens:[e],numArgs:0}});Z("\\@firstoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[0],numArgs:0}});Z("\\@secondoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[1],numArgs:0}});Z("\\@ifnextchar",function(t){var e=t.consumeArgs(3);t.consumeSpaces();var n=t.future();return e[0].length===1&&e[0][0].text===n.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}});Z("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");Z("\\TextOrMath",function(t){var e=t.consumeArgs(2);return t.mode==="text"?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});var DR={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};Z("\\char",function(t){var e=t.popToken(),n,r="";if(e.text==="'")n=8,e=t.popToken();else if(e.text==='"')n=16,e=t.popToken();else if(e.text==="`")if(e=t.popToken(),e.text[0]==="\\")r=e.text.charCodeAt(1);else{if(e.text==="EOF")throw new $e("\\char` missing argument");r=e.text.charCodeAt(0)}else n=10;if(n){if(r=DR[e.text],r==null||r>=n)throw new $e("Invalid base-"+n+" digit "+e.text);for(var s;(s=DR[t.future().text])!=null&&s{var s=t.consumeArg().tokens;if(s.length!==1)throw new $e("\\newcommand's first argument must be a macro name");var i=s[0].text,a=t.isDefined(i);if(a&&!e)throw new $e("\\newcommand{"+i+"} attempting to redefine "+(i+"; use \\renewcommand"));if(!a&&!n)throw new $e("\\renewcommand{"+i+"} when command "+i+" does not yet exist; use \\newcommand");var l=0;if(s=t.consumeArg().tokens,s.length===1&&s[0].text==="["){for(var c="",d=t.expandNextToken();d.text!=="]"&&d.text!=="EOF";)c+=d.text,d=t.expandNextToken();if(!c.match(/^\s*[0-9]+\s*$/))throw new $e("Invalid number of arguments: "+c);l=parseInt(c),s=t.consumeArg().tokens}return a&&r||t.macros.set(i,{tokens:s,numArgs:l}),""};Z("\\newcommand",t=>zN(t,!1,!0,!1));Z("\\renewcommand",t=>zN(t,!0,!1,!1));Z("\\providecommand",t=>zN(t,!0,!0,!0));Z("\\message",t=>{var e=t.consumeArgs(1)[0];return console.log(e.reverse().map(n=>n.text).join("")),""});Z("\\errmessage",t=>{var e=t.consumeArgs(1)[0];return console.error(e.reverse().map(n=>n.text).join("")),""});Z("\\show",t=>{var e=t.popToken(),n=e.text;return console.log(e,t.macros.get(n),Fc[n],dr.math[n],dr.text[n]),""});Z("\\bgroup","{");Z("\\egroup","}");Z("~","\\nobreakspace");Z("\\lq","`");Z("\\rq","'");Z("\\aa","\\r a");Z("\\AA","\\r A");Z("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}");Z("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");Z("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}");Z("ℬ","\\mathscr{B}");Z("ℰ","\\mathscr{E}");Z("ℱ","\\mathscr{F}");Z("ℋ","\\mathscr{H}");Z("ℐ","\\mathscr{I}");Z("ℒ","\\mathscr{L}");Z("ℳ","\\mathscr{M}");Z("ℛ","\\mathscr{R}");Z("ℭ","\\mathfrak{C}");Z("ℌ","\\mathfrak{H}");Z("ℨ","\\mathfrak{Z}");Z("\\Bbbk","\\Bbb{k}");Z("·","\\cdotp");Z("\\llap","\\mathllap{\\textrm{#1}}");Z("\\rlap","\\mathrlap{\\textrm{#1}}");Z("\\clap","\\mathclap{\\textrm{#1}}");Z("\\mathstrut","\\vphantom{(}");Z("\\underbar","\\underline{\\text{#1}}");Z("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');Z("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}");Z("\\ne","\\neq");Z("≠","\\neq");Z("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}");Z("∉","\\notin");Z("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}");Z("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}");Z("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}");Z("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}");Z("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}");Z("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}");Z("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}");Z("⟂","\\perp");Z("‼","\\mathclose{!\\mkern-0.8mu!}");Z("∌","\\notni");Z("⌜","\\ulcorner");Z("⌝","\\urcorner");Z("⌞","\\llcorner");Z("⌟","\\lrcorner");Z("©","\\copyright");Z("®","\\textregistered");Z("️","\\textregistered");Z("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');Z("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');Z("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');Z("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');Z("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");Z("⋮","\\vdots");Z("\\varGamma","\\mathit{\\Gamma}");Z("\\varDelta","\\mathit{\\Delta}");Z("\\varTheta","\\mathit{\\Theta}");Z("\\varLambda","\\mathit{\\Lambda}");Z("\\varXi","\\mathit{\\Xi}");Z("\\varPi","\\mathit{\\Pi}");Z("\\varSigma","\\mathit{\\Sigma}");Z("\\varUpsilon","\\mathit{\\Upsilon}");Z("\\varPhi","\\mathit{\\Phi}");Z("\\varPsi","\\mathit{\\Psi}");Z("\\varOmega","\\mathit{\\Omega}");Z("\\substack","\\begin{subarray}{c}#1\\end{subarray}");Z("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");Z("\\boxed","\\fbox{$\\displaystyle{#1}$}");Z("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");Z("\\implies","\\DOTSB\\;\\Longrightarrow\\;");Z("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");Z("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");Z("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var PR={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};Z("\\dots",function(t){var e="\\dotso",n=t.expandAfterFuture().text;return n in PR?e=PR[n]:(n.slice(0,4)==="\\not"||n in dr.math&&["bin","rel"].includes(dr.math[n].group))&&(e="\\dotsb"),e});var IN={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};Z("\\dotso",function(t){var e=t.future().text;return e in IN?"\\ldots\\,":"\\ldots"});Z("\\dotsc",function(t){var e=t.future().text;return e in IN&&e!==","?"\\ldots\\,":"\\ldots"});Z("\\cdots",function(t){var e=t.future().text;return e in IN?"\\@cdots\\,":"\\@cdots"});Z("\\dotsb","\\cdots");Z("\\dotsm","\\cdots");Z("\\dotsi","\\!\\cdots");Z("\\dotsx","\\ldots\\,");Z("\\DOTSI","\\relax");Z("\\DOTSB","\\relax");Z("\\DOTSX","\\relax");Z("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");Z("\\,","\\tmspace+{3mu}{.1667em}");Z("\\thinspace","\\,");Z("\\>","\\mskip{4mu}");Z("\\:","\\tmspace+{4mu}{.2222em}");Z("\\medspace","\\:");Z("\\;","\\tmspace+{5mu}{.2777em}");Z("\\thickspace","\\;");Z("\\!","\\tmspace-{3mu}{.1667em}");Z("\\negthinspace","\\!");Z("\\negmedspace","\\tmspace-{4mu}{.2222em}");Z("\\negthickspace","\\tmspace-{5mu}{.277em}");Z("\\enspace","\\kern.5em ");Z("\\enskip","\\hskip.5em\\relax");Z("\\quad","\\hskip1em\\relax");Z("\\qquad","\\hskip2em\\relax");Z("\\tag","\\@ifstar\\tag@literal\\tag@paren");Z("\\tag@paren","\\tag@literal{({#1})}");Z("\\tag@literal",t=>{if(t.macros.get("\\df@tag"))throw new $e("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});Z("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");Z("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");Z("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");Z("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");Z("\\newline","\\\\\\relax");Z("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var AU=Xe(_o["Main-Regular"][84][1]-.7*_o["Main-Regular"][65][1]);Z("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+AU+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");Z("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+AU+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");Z("\\hspace","\\@ifstar\\@hspacer\\@hspace");Z("\\@hspace","\\hskip #1\\relax");Z("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");Z("\\ordinarycolon",":");Z("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");Z("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');Z("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');Z("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');Z("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');Z("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');Z("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');Z("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');Z("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');Z("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');Z("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');Z("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');Z("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');Z("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');Z("∷","\\dblcolon");Z("∹","\\eqcolon");Z("≔","\\coloneqq");Z("≕","\\eqqcolon");Z("⩴","\\Coloneqq");Z("\\ratio","\\vcentcolon");Z("\\coloncolon","\\dblcolon");Z("\\colonequals","\\coloneqq");Z("\\coloncolonequals","\\Coloneqq");Z("\\equalscolon","\\eqqcolon");Z("\\equalscoloncolon","\\Eqqcolon");Z("\\colonminus","\\coloneq");Z("\\coloncolonminus","\\Coloneq");Z("\\minuscolon","\\eqcolon");Z("\\minuscoloncolon","\\Eqcolon");Z("\\coloncolonapprox","\\Colonapprox");Z("\\coloncolonsim","\\Colonsim");Z("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");Z("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");Z("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");Z("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");Z("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}");Z("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");Z("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");Z("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");Z("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");Z("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");Z("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");Z("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");Z("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");Z("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}");Z("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}");Z("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}");Z("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}");Z("\\nleqq","\\html@mathml{\\@nleqq}{≰}");Z("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}");Z("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}");Z("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}");Z("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}");Z("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}");Z("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}");Z("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}");Z("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}");Z("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}");Z("\\imath","\\html@mathml{\\@imath}{ı}");Z("\\jmath","\\html@mathml{\\@jmath}{ȷ}");Z("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}");Z("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}");Z("⟦","\\llbracket");Z("⟧","\\rrbracket");Z("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}");Z("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}");Z("⦃","\\lBrace");Z("⦄","\\rBrace");Z("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}");Z("⦵","\\minuso");Z("\\darr","\\downarrow");Z("\\dArr","\\Downarrow");Z("\\Darr","\\Downarrow");Z("\\lang","\\langle");Z("\\rang","\\rangle");Z("\\uarr","\\uparrow");Z("\\uArr","\\Uparrow");Z("\\Uarr","\\Uparrow");Z("\\N","\\mathbb{N}");Z("\\R","\\mathbb{R}");Z("\\Z","\\mathbb{Z}");Z("\\alef","\\aleph");Z("\\alefsym","\\aleph");Z("\\Alpha","\\mathrm{A}");Z("\\Beta","\\mathrm{B}");Z("\\bull","\\bullet");Z("\\Chi","\\mathrm{X}");Z("\\clubs","\\clubsuit");Z("\\cnums","\\mathbb{C}");Z("\\Complex","\\mathbb{C}");Z("\\Dagger","\\ddagger");Z("\\diamonds","\\diamondsuit");Z("\\empty","\\emptyset");Z("\\Epsilon","\\mathrm{E}");Z("\\Eta","\\mathrm{H}");Z("\\exist","\\exists");Z("\\harr","\\leftrightarrow");Z("\\hArr","\\Leftrightarrow");Z("\\Harr","\\Leftrightarrow");Z("\\hearts","\\heartsuit");Z("\\image","\\Im");Z("\\infin","\\infty");Z("\\Iota","\\mathrm{I}");Z("\\isin","\\in");Z("\\Kappa","\\mathrm{K}");Z("\\larr","\\leftarrow");Z("\\lArr","\\Leftarrow");Z("\\Larr","\\Leftarrow");Z("\\lrarr","\\leftrightarrow");Z("\\lrArr","\\Leftrightarrow");Z("\\Lrarr","\\Leftrightarrow");Z("\\Mu","\\mathrm{M}");Z("\\natnums","\\mathbb{N}");Z("\\Nu","\\mathrm{N}");Z("\\Omicron","\\mathrm{O}");Z("\\plusmn","\\pm");Z("\\rarr","\\rightarrow");Z("\\rArr","\\Rightarrow");Z("\\Rarr","\\Rightarrow");Z("\\real","\\Re");Z("\\reals","\\mathbb{R}");Z("\\Reals","\\mathbb{R}");Z("\\Rho","\\mathrm{P}");Z("\\sdot","\\cdot");Z("\\sect","\\S");Z("\\spades","\\spadesuit");Z("\\sub","\\subset");Z("\\sube","\\subseteq");Z("\\supe","\\supseteq");Z("\\Tau","\\mathrm{T}");Z("\\thetasym","\\vartheta");Z("\\weierp","\\wp");Z("\\Zeta","\\mathrm{Z}");Z("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");Z("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");Z("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");Z("\\bra","\\mathinner{\\langle{#1}|}");Z("\\ket","\\mathinner{|{#1}\\rangle}");Z("\\braket","\\mathinner{\\langle{#1}\\rangle}");Z("\\Bra","\\left\\langle#1\\right|");Z("\\Ket","\\left|#1\\right\\rangle");var RU=t=>e=>{var n=e.consumeArg().tokens,r=e.consumeArg().tokens,s=e.consumeArg().tokens,i=e.consumeArg().tokens,a=e.macros.get("|"),l=e.macros.get("\\|");e.macros.beginGroup();var c=m=>g=>{t&&(g.macros.set("|",a),s.length&&g.macros.set("\\|",l));var x=m;if(!m&&s.length){var y=g.future();y.text==="|"&&(g.popToken(),x=!0)}return{tokens:x?s:r,numArgs:0}};e.macros.set("|",c(!1)),s.length&&e.macros.set("\\|",c(!0));var d=e.consumeArg().tokens,h=e.expandTokens([...i,...d,...n]);return e.macros.endGroup(),{tokens:h.reverse(),numArgs:0}};Z("\\bra@ket",RU(!1));Z("\\bra@set",RU(!0));Z("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");Z("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");Z("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");Z("\\angln","{\\angl n}");Z("\\blue","\\textcolor{##6495ed}{#1}");Z("\\orange","\\textcolor{##ffa500}{#1}");Z("\\pink","\\textcolor{##ff00af}{#1}");Z("\\red","\\textcolor{##df0030}{#1}");Z("\\green","\\textcolor{##28ae7b}{#1}");Z("\\gray","\\textcolor{gray}{#1}");Z("\\purple","\\textcolor{##9d38bd}{#1}");Z("\\blueA","\\textcolor{##ccfaff}{#1}");Z("\\blueB","\\textcolor{##80f6ff}{#1}");Z("\\blueC","\\textcolor{##63d9ea}{#1}");Z("\\blueD","\\textcolor{##11accd}{#1}");Z("\\blueE","\\textcolor{##0c7f99}{#1}");Z("\\tealA","\\textcolor{##94fff5}{#1}");Z("\\tealB","\\textcolor{##26edd5}{#1}");Z("\\tealC","\\textcolor{##01d1c1}{#1}");Z("\\tealD","\\textcolor{##01a995}{#1}");Z("\\tealE","\\textcolor{##208170}{#1}");Z("\\greenA","\\textcolor{##b6ffb0}{#1}");Z("\\greenB","\\textcolor{##8af281}{#1}");Z("\\greenC","\\textcolor{##74cf70}{#1}");Z("\\greenD","\\textcolor{##1fab54}{#1}");Z("\\greenE","\\textcolor{##0d923f}{#1}");Z("\\goldA","\\textcolor{##ffd0a9}{#1}");Z("\\goldB","\\textcolor{##ffbb71}{#1}");Z("\\goldC","\\textcolor{##ff9c39}{#1}");Z("\\goldD","\\textcolor{##e07d10}{#1}");Z("\\goldE","\\textcolor{##a75a05}{#1}");Z("\\redA","\\textcolor{##fca9a9}{#1}");Z("\\redB","\\textcolor{##ff8482}{#1}");Z("\\redC","\\textcolor{##f9685d}{#1}");Z("\\redD","\\textcolor{##e84d39}{#1}");Z("\\redE","\\textcolor{##bc2612}{#1}");Z("\\maroonA","\\textcolor{##ffbde0}{#1}");Z("\\maroonB","\\textcolor{##ff92c6}{#1}");Z("\\maroonC","\\textcolor{##ed5fa6}{#1}");Z("\\maroonD","\\textcolor{##ca337c}{#1}");Z("\\maroonE","\\textcolor{##9e034e}{#1}");Z("\\purpleA","\\textcolor{##ddd7ff}{#1}");Z("\\purpleB","\\textcolor{##c6b9fc}{#1}");Z("\\purpleC","\\textcolor{##aa87ff}{#1}");Z("\\purpleD","\\textcolor{##7854ab}{#1}");Z("\\purpleE","\\textcolor{##543b78}{#1}");Z("\\mintA","\\textcolor{##f5f9e8}{#1}");Z("\\mintB","\\textcolor{##edf2df}{#1}");Z("\\mintC","\\textcolor{##e0e5cc}{#1}");Z("\\grayA","\\textcolor{##f6f7f7}{#1}");Z("\\grayB","\\textcolor{##f0f1f2}{#1}");Z("\\grayC","\\textcolor{##e3e5e6}{#1}");Z("\\grayD","\\textcolor{##d6d8da}{#1}");Z("\\grayE","\\textcolor{##babec2}{#1}");Z("\\grayF","\\textcolor{##888d93}{#1}");Z("\\grayG","\\textcolor{##626569}{#1}");Z("\\grayH","\\textcolor{##3b3e40}{#1}");Z("\\grayI","\\textcolor{##21242c}{#1}");Z("\\kaBlue","\\textcolor{##314453}{#1}");Z("\\kaGreen","\\textcolor{##71B307}{#1}");var DU={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class eke{constructor(e,n,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=n,this.expansionCount=0,this.feed(e),this.macros=new Z3e(J3e,n.macros),this.mode=r,this.stack=[]}feed(e){this.lexer=new RR(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var n,r,s;if(e){if(this.consumeSpaces(),this.future().text!=="[")return null;n=this.popToken(),{tokens:s,end:r}=this.consumeArg(["]"])}else({tokens:s,start:n,end:r}=this.consumeArg());return this.pushToken(new Xi("EOF",r.loc)),this.pushTokens(s),new Xi("",pi.range(n,r))}consumeSpaces(){for(;;){var e=this.future();if(e.text===" ")this.stack.pop();else break}}consumeArg(e){var n=[],r=e&&e.length>0;r||this.consumeSpaces();var s=this.future(),i,a=0,l=0;do{if(i=this.popToken(),n.push(i),i.text==="{")++a;else if(i.text==="}"){if(--a,a===-1)throw new $e("Extra }",i)}else if(i.text==="EOF")throw new $e("Unexpected end of input in a macro argument, expected '"+(e&&r?e[l]:"}")+"'",i);if(e&&r)if((a===0||a===1&&e[l]==="{")&&i.text===e[l]){if(++l,l===e.length){n.splice(-l,l);break}}else l=0}while(a!==0||r);return s.text==="{"&&n[n.length-1].text==="}"&&(n.pop(),n.shift()),n.reverse(),{tokens:n,start:s,end:i}}consumeArgs(e,n){if(n){if(n.length!==e+1)throw new $e("The length of delimiters doesn't match the number of args!");for(var r=n[0],s=0;sthis.settings.maxExpand)throw new $e("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var n=this.popToken(),r=n.text,s=n.noexpand?null:this._getExpansion(r);if(s==null||e&&s.unexpandable){if(e&&s==null&&r[0]==="\\"&&!this.isDefined(r))throw new $e("Undefined control sequence: "+r);return this.pushToken(n),!1}this.countExpansion(1);var i=s.tokens,a=this.consumeArgs(s.numArgs,s.delimiters);if(s.numArgs){i=i.slice();for(var l=i.length-1;l>=0;--l){var c=i[l];if(c.text==="#"){if(l===0)throw new $e("Incomplete placeholder at end of macro body",c);if(c=i[--l],c.text==="#")i.splice(l+1,1);else if(/^[1-9]$/.test(c.text))i.splice(l,2,...a[+c.text-1]);else throw new $e("Not a valid argument number",c)}}}return this.pushTokens(i),i.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new Xi(e)]):void 0}expandTokens(e){var n=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;)if(this.expandOnce(!0)===!1){var s=this.stack.pop();s.treatAsRelax&&(s.noexpand=!1,s.treatAsRelax=!1),n.push(s)}return this.countExpansion(n.length),n}expandMacroAsText(e){var n=this.expandMacro(e);return n&&n.map(r=>r.text).join("")}_getExpansion(e){var n=this.macros.get(e);if(n==null)return n;if(e.length===1){var r=this.lexer.catcodes[e];if(r!=null&&r!==13)return}var s=typeof n=="function"?n(this):n;if(typeof s=="string"){var i=0;if(s.indexOf("#")!==-1)for(var a=s.replace(/##/g,"");a.indexOf("#"+(i+1))!==-1;)++i;for(var l=new RR(s,this.settings),c=[],d=l.lex();d.text!=="EOF";)c.push(d),d=l.lex();c.reverse();var h={tokens:c,numArgs:i};return h}return s}isDefined(e){return this.macros.has(e)||Fc.hasOwnProperty(e)||dr.math.hasOwnProperty(e)||dr.text.hasOwnProperty(e)||DU.hasOwnProperty(e)}isExpandable(e){var n=this.macros.get(e);return n!=null?typeof n=="string"||typeof n=="function"||!n.unexpandable:Fc.hasOwnProperty(e)&&!Fc[e].primitive}}var zR=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,I1=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g",ʰ:"h","ⁱ":"i",ʲ:"j","ᵏ":"k",ˡ:"l","ᵐ":"m",ⁿ:"n","ᵒ":"o","ᵖ":"p",ʳ:"r",ˢ:"s","ᵗ":"t","ᵘ":"u","ᵛ":"v",ʷ:"w",ˣ:"x",ʸ:"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),JS={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},IR={á:"á",à:"à",ä:"ä",ǟ:"ǟ",ã:"ã",ā:"ā",ă:"ă",ắ:"ắ",ằ:"ằ",ẵ:"ẵ",ǎ:"ǎ",â:"â",ấ:"ấ",ầ:"ầ",ẫ:"ẫ",ȧ:"ȧ",ǡ:"ǡ",å:"å",ǻ:"ǻ",ḃ:"ḃ",ć:"ć",ḉ:"ḉ",č:"č",ĉ:"ĉ",ċ:"ċ",ç:"ç",ď:"ď",ḋ:"ḋ",ḑ:"ḑ",é:"é",è:"è",ë:"ë",ẽ:"ẽ",ē:"ē",ḗ:"ḗ",ḕ:"ḕ",ĕ:"ĕ",ḝ:"ḝ",ě:"ě",ê:"ê",ế:"ế",ề:"ề",ễ:"ễ",ė:"ė",ȩ:"ȩ",ḟ:"ḟ",ǵ:"ǵ",ḡ:"ḡ",ğ:"ğ",ǧ:"ǧ",ĝ:"ĝ",ġ:"ġ",ģ:"ģ",ḧ:"ḧ",ȟ:"ȟ",ĥ:"ĥ",ḣ:"ḣ",ḩ:"ḩ",í:"í",ì:"ì",ï:"ï",ḯ:"ḯ",ĩ:"ĩ",ī:"ī",ĭ:"ĭ",ǐ:"ǐ",î:"î",ǰ:"ǰ",ĵ:"ĵ",ḱ:"ḱ",ǩ:"ǩ",ķ:"ķ",ĺ:"ĺ",ľ:"ľ",ļ:"ļ",ḿ:"ḿ",ṁ:"ṁ",ń:"ń",ǹ:"ǹ",ñ:"ñ",ň:"ň",ṅ:"ṅ",ņ:"ņ",ó:"ó",ò:"ò",ö:"ö",ȫ:"ȫ",õ:"õ",ṍ:"ṍ",ṏ:"ṏ",ȭ:"ȭ",ō:"ō",ṓ:"ṓ",ṑ:"ṑ",ŏ:"ŏ",ǒ:"ǒ",ô:"ô",ố:"ố",ồ:"ồ",ỗ:"ỗ",ȯ:"ȯ",ȱ:"ȱ",ő:"ő",ṕ:"ṕ",ṗ:"ṗ",ŕ:"ŕ",ř:"ř",ṙ:"ṙ",ŗ:"ŗ",ś:"ś",ṥ:"ṥ",š:"š",ṧ:"ṧ",ŝ:"ŝ",ṡ:"ṡ",ş:"ş",ẗ:"ẗ",ť:"ť",ṫ:"ṫ",ţ:"ţ",ú:"ú",ù:"ù",ü:"ü",ǘ:"ǘ",ǜ:"ǜ",ǖ:"ǖ",ǚ:"ǚ",ũ:"ũ",ṹ:"ṹ",ū:"ū",ṻ:"ṻ",ŭ:"ŭ",ǔ:"ǔ",û:"û",ů:"ů",ű:"ű",ṽ:"ṽ",ẃ:"ẃ",ẁ:"ẁ",ẅ:"ẅ",ŵ:"ŵ",ẇ:"ẇ",ẘ:"ẘ",ẍ:"ẍ",ẋ:"ẋ",ý:"ý",ỳ:"ỳ",ÿ:"ÿ",ỹ:"ỹ",ȳ:"ȳ",ŷ:"ŷ",ẏ:"ẏ",ẙ:"ẙ",ź:"ź",ž:"ž",ẑ:"ẑ",ż:"ż",Á:"Á",À:"À",Ä:"Ä",Ǟ:"Ǟ",Ã:"Ã",Ā:"Ā",Ă:"Ă",Ắ:"Ắ",Ằ:"Ằ",Ẵ:"Ẵ",Ǎ:"Ǎ",Â:"Â",Ấ:"Ấ",Ầ:"Ầ",Ẫ:"Ẫ",Ȧ:"Ȧ",Ǡ:"Ǡ",Å:"Å",Ǻ:"Ǻ",Ḃ:"Ḃ",Ć:"Ć",Ḉ:"Ḉ",Č:"Č",Ĉ:"Ĉ",Ċ:"Ċ",Ç:"Ç",Ď:"Ď",Ḋ:"Ḋ",Ḑ:"Ḑ",É:"É",È:"È",Ë:"Ë",Ẽ:"Ẽ",Ē:"Ē",Ḗ:"Ḗ",Ḕ:"Ḕ",Ĕ:"Ĕ",Ḝ:"Ḝ",Ě:"Ě",Ê:"Ê",Ế:"Ế",Ề:"Ề",Ễ:"Ễ",Ė:"Ė",Ȩ:"Ȩ",Ḟ:"Ḟ",Ǵ:"Ǵ",Ḡ:"Ḡ",Ğ:"Ğ",Ǧ:"Ǧ",Ĝ:"Ĝ",Ġ:"Ġ",Ģ:"Ģ",Ḧ:"Ḧ",Ȟ:"Ȟ",Ĥ:"Ĥ",Ḣ:"Ḣ",Ḩ:"Ḩ",Í:"Í",Ì:"Ì",Ï:"Ï",Ḯ:"Ḯ",Ĩ:"Ĩ",Ī:"Ī",Ĭ:"Ĭ",Ǐ:"Ǐ",Î:"Î",İ:"İ",Ĵ:"Ĵ",Ḱ:"Ḱ",Ǩ:"Ǩ",Ķ:"Ķ",Ĺ:"Ĺ",Ľ:"Ľ",Ļ:"Ļ",Ḿ:"Ḿ",Ṁ:"Ṁ",Ń:"Ń",Ǹ:"Ǹ",Ñ:"Ñ",Ň:"Ň",Ṅ:"Ṅ",Ņ:"Ņ",Ó:"Ó",Ò:"Ò",Ö:"Ö",Ȫ:"Ȫ",Õ:"Õ",Ṍ:"Ṍ",Ṏ:"Ṏ",Ȭ:"Ȭ",Ō:"Ō",Ṓ:"Ṓ",Ṑ:"Ṑ",Ŏ:"Ŏ",Ǒ:"Ǒ",Ô:"Ô",Ố:"Ố",Ồ:"Ồ",Ỗ:"Ỗ",Ȯ:"Ȯ",Ȱ:"Ȱ",Ő:"Ő",Ṕ:"Ṕ",Ṗ:"Ṗ",Ŕ:"Ŕ",Ř:"Ř",Ṙ:"Ṙ",Ŗ:"Ŗ",Ś:"Ś",Ṥ:"Ṥ",Š:"Š",Ṧ:"Ṧ",Ŝ:"Ŝ",Ṡ:"Ṡ",Ş:"Ş",Ť:"Ť",Ṫ:"Ṫ",Ţ:"Ţ",Ú:"Ú",Ù:"Ù",Ü:"Ü",Ǘ:"Ǘ",Ǜ:"Ǜ",Ǖ:"Ǖ",Ǚ:"Ǚ",Ũ:"Ũ",Ṹ:"Ṹ",Ū:"Ū",Ṻ:"Ṻ",Ŭ:"Ŭ",Ǔ:"Ǔ",Û:"Û",Ů:"Ů",Ű:"Ű",Ṽ:"Ṽ",Ẃ:"Ẃ",Ẁ:"Ẁ",Ẅ:"Ẅ",Ŵ:"Ŵ",Ẇ:"Ẇ",Ẍ:"Ẍ",Ẋ:"Ẋ",Ý:"Ý",Ỳ:"Ỳ",Ÿ:"Ÿ",Ỹ:"Ỹ",Ȳ:"Ȳ",Ŷ:"Ŷ",Ẏ:"Ẏ",Ź:"Ź",Ž:"Ž",Ẑ:"Ẑ",Ż:"Ż",ά:"ά",ὰ:"ὰ",ᾱ:"ᾱ",ᾰ:"ᾰ",έ:"έ",ὲ:"ὲ",ή:"ή",ὴ:"ὴ",ί:"ί",ὶ:"ὶ",ϊ:"ϊ",ΐ:"ΐ",ῒ:"ῒ",ῑ:"ῑ",ῐ:"ῐ",ό:"ό",ὸ:"ὸ",ύ:"ύ",ὺ:"ὺ",ϋ:"ϋ",ΰ:"ΰ",ῢ:"ῢ",ῡ:"ῡ",ῠ:"ῠ",ώ:"ώ",ὼ:"ὼ",Ύ:"Ύ",Ὺ:"Ὺ",Ϋ:"Ϋ",Ῡ:"Ῡ",Ῠ:"Ῠ",Ώ:"Ώ",Ὼ:"Ὼ"};class qb{constructor(e,n){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new eke(e,n,this.mode),this.settings=n,this.leftrightDepth=0}expect(e,n){if(n===void 0&&(n=!0),this.fetch().text!==e)throw new $e("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());n&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var n=this.nextToken;this.consume(),this.gullet.pushToken(new Xi("}")),this.gullet.pushTokens(e);var r=this.parseExpression(!1);return this.expect("}"),this.nextToken=n,r}parseExpression(e,n){for(var r=[];;){this.mode==="math"&&this.consumeSpaces();var s=this.fetch();if(qb.endOfExpression.indexOf(s.text)!==-1||n&&s.text===n||e&&Fc[s.text]&&Fc[s.text].infix)break;var i=this.parseAtom(n);if(i){if(i.type==="internal")continue}else break;r.push(i)}return this.mode==="text"&&this.formLigatures(r),this.handleInfixNodes(r)}handleInfixNodes(e){for(var n=-1,r,s=0;s=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+n[0]+'" used in math mode',e);var l=dr[this.mode][n].group,c=pi.range(e),d;if($5e.hasOwnProperty(l)){var h=l;d={type:"atom",mode:this.mode,family:h,loc:c,text:n}}else d={type:l,mode:this.mode,loc:c,text:n};a=d}else if(n.charCodeAt(0)>=128)this.settings.strict&&(HV(n.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+n[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+n[0]+'"'+(" ("+n.charCodeAt(0)+")"),e)),a={type:"textord",mode:"text",loc:pi.range(e),text:n};else return null;if(this.consume(),i)for(var m=0;md&&(d=h):h&&(d!==void 0&&d>-1&&c.push(` -`.repeat(d)||" "),d=-1,c.push(h))}return c.join("")}function qU(t,e,n){return t.type==="element"?Mke(t,e,n):t.type==="text"?n.whitespace==="normal"?$U(t,n):Ake(t):[]}function Mke(t,e,n){const r=HU(t,n),s=t.children||[];let i=-1,a=[];if(Eke(t))return a;let l,c;for($O(t)||UR(t)&&$R(e,t,UR)?c=` -`:Tke(t)?(l=2,c=2):FU(t)&&(l=1,c=1);++i{try{i(!0);const Oe=await $ke({page:a,page_size:h,is_registered:g==="all"?void 0:g==="registered",is_banned:y==="all"?void 0:y==="banned",format:S==="all"?void 0:S,sort_by:j,sort_order:T});e(Oe.data),d(Oe.total)}catch(Oe){const Ve=Oe instanceof Error?Oe.message:"加载表情包列表失败";W({title:"错误",description:Ve,variant:"destructive"})}finally{i(!1)}},[a,h,g,y,S,j,T,W]),V=async()=>{try{const Oe=await Uke();r(Oe.data)}catch(Oe){console.error("加载统计数据失败:",Oe)}};b.useEffect(()=>{q()},[q]),b.useEffect(()=>{V()},[]);const te=async Oe=>{try{const Ve=await Hke(Oe.id);M(Ve.data),P(!0)}catch(Ve){const Ue=Ve instanceof Error?Ve.message:"加载详情失败";W({title:"错误",description:Ue,variant:"destructive"})}},ne=Oe=>{M(Oe),H(!0)},K=Oe=>{M(Oe),ee(!0)},se=async()=>{if(_)try{await Vke(_.id),W({title:"成功",description:"表情包已删除"}),ee(!1),M(null),q(),V()}catch(Oe){const Ve=Oe instanceof Error?Oe.message:"删除失败";W({title:"错误",description:Ve,variant:"destructive"})}},re=async Oe=>{try{await Wke(Oe.id),W({title:"成功",description:"表情包已注册"}),q(),V()}catch(Ve){const Ue=Ve instanceof Error?Ve.message:"注册失败";W({title:"错误",description:Ue,variant:"destructive"})}},oe=async Oe=>{try{await Gke(Oe.id),W({title:"成功",description:"表情包已封禁"}),q(),V()}catch(Ve){const Ue=Ve instanceof Error?Ve.message:"封禁失败";W({title:"错误",description:Ue,variant:"destructive"})}},Te=Oe=>{const Ve=new Set(z);Ve.has(Oe)?Ve.delete(Oe):Ve.add(Oe),Q(Ve)},We=async()=>{try{const Oe=await Xke(Array.from(z));W({title:"批量删除完成",description:Oe.message}),Q(new Set),X(!1),q(),V()}catch(Oe){W({title:"批量删除失败",description:Oe instanceof Error?Oe.message:"批量删除失败",variant:"destructive"})}},Ye=()=>{const Oe=parseInt(J),Ve=Math.ceil(c/h);Oe>=1&&Oe<=Ve?(l(Oe),G("")):W({title:"无效的页码",description:`请输入1-${Ve}之间的页码`,variant:"destructive"})},Je=n?.formats?Object.keys(n.formats):[];return o.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[o.jsxs("div",{className:"mb-4 sm:mb-6",children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"表情包管理"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理麦麦的表情包资源"})]}),o.jsx(wn,{className:"flex-1",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[n&&o.jsxs("div",{className:"grid gap-4 grid-cols-2 lg:grid-cols-4",children:[o.jsx(qt,{children:o.jsxs(Fn,{className:"pb-2",children:[o.jsx(ts,{children:"总数"}),o.jsx(qn,{className:"text-2xl",children:n.total})]})}),o.jsx(qt,{children:o.jsxs(Fn,{className:"pb-2",children:[o.jsx(ts,{children:"已注册"}),o.jsx(qn,{className:"text-2xl text-green-600",children:n.registered})]})}),o.jsx(qt,{children:o.jsxs(Fn,{className:"pb-2",children:[o.jsx(ts,{children:"已封禁"}),o.jsx(qn,{className:"text-2xl text-red-600",children:n.banned})]})}),o.jsx(qt,{children:o.jsxs(Fn,{className:"pb-2",children:[o.jsx(ts,{children:"未注册"}),o.jsx(qn,{className:"text-2xl text-gray-600",children:n.unregistered})]})})]}),o.jsxs(qt,{children:[o.jsx(Fn,{children:o.jsxs(qn,{className:"flex items-center gap-2",children:[o.jsx(Z3,{className:"h-5 w-5"}),"筛选和排序"]})}),o.jsxs(Gn,{className:"space-y-4",children:[o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{children:"排序方式"}),o.jsxs(Vt,{value:`${j}-${T}`,onValueChange:Oe=>{const[Ve,Ue]=Oe.split("-");N(Ve),E(Ue),l(1)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"usage_count-desc",children:"使用次数 (多→少)"}),o.jsx(De,{value:"usage_count-asc",children:"使用次数 (少→多)"}),o.jsx(De,{value:"register_time-desc",children:"注册时间 (新→旧)"}),o.jsx(De,{value:"register_time-asc",children:"注册时间 (旧→新)"}),o.jsx(De,{value:"record_time-desc",children:"记录时间 (新→旧)"}),o.jsx(De,{value:"record_time-asc",children:"记录时间 (旧→新)"}),o.jsx(De,{value:"last_used_time-desc",children:"最后使用 (新→旧)"}),o.jsx(De,{value:"last_used_time-asc",children:"最后使用 (旧→新)"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{children:"注册状态"}),o.jsxs(Vt,{value:g,onValueChange:Oe=>{x(Oe),l(1)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部"}),o.jsx(De,{value:"registered",children:"已注册"}),o.jsx(De,{value:"unregistered",children:"未注册"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{children:"封禁状态"}),o.jsxs(Vt,{value:y,onValueChange:Oe=>{w(Oe),l(1)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部"}),o.jsx(De,{value:"banned",children:"已封禁"}),o.jsx(De,{value:"unbanned",children:"未封禁"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{children:"格式"}),o.jsxs(Vt,{value:S,onValueChange:Oe=>{k(Oe),l(1)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部"}),Je.map(Oe=>o.jsxs(De,{value:Oe,children:[Oe.toUpperCase()," (",n?.formats[Oe],")"]},Oe))]})]})]})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 pt-4 border-t",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[z.size>0&&o.jsxs("span",{className:"text-sm text-muted-foreground",children:["已选择 ",z.size," 个表情包"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(de,{className:"text-sm whitespace-nowrap",children:"卡片大小"}),o.jsxs(Vt,{value:R,onValueChange:Oe=>ie(Oe),children:[o.jsx($t,{className:"w-24",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"small",children:"小"}),o.jsx(De,{value:"medium",children:"中"}),o.jsx(De,{value:"large",children:"大"})]})]})]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(de,{htmlFor:"emoji-page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:h.toString(),onValueChange:Oe=>{m(parseInt(Oe)),l(1),Q(new Set)},children:[o.jsx($t,{id:"emoji-page-size",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"40",children:"40"}),o.jsx(De,{value:"60",children:"60"}),o.jsx(De,{value:"100",children:"100"})]})]}),z.size>0&&o.jsxs(o.Fragment,{children:[o.jsx(he,{variant:"outline",size:"sm",onClick:()=>Q(new Set),children:"取消选择"}),o.jsxs(he,{variant:"destructive",size:"sm",onClick:()=>X(!0),children:[o.jsx(Sn,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]}),o.jsx("div",{className:"flex justify-end pt-4 border-t",children:o.jsxs(he,{variant:"outline",size:"sm",onClick:q,disabled:s,children:[o.jsx(Qs,{className:`h-4 w-4 mr-2 ${s?"animate-spin":""}`}),"刷新"]})})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"表情包列表"}),o.jsxs(ts,{children:["共 ",c," 个表情包,当前第 ",a," 页"]})]}),o.jsxs(Gn,{children:[t.length===0?o.jsx("div",{className:"text-center py-12 text-muted-foreground",children:"暂无数据"}):o.jsx("div",{className:`grid gap-3 ${R==="small"?"grid-cols-3 sm:grid-cols-4 md:grid-cols-6 lg:grid-cols-8 xl:grid-cols-10":R==="medium"?"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 xl:grid-cols-8":"grid-cols-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5"}`,children:t.map(Oe=>o.jsxs("div",{className:`group relative rounded-lg border bg-card overflow-hidden hover:ring-2 hover:ring-primary transition-all cursor-pointer ${z.has(Oe.id)?"ring-2 ring-primary bg-primary/5":""}`,onClick:()=>Te(Oe.id),children:[o.jsx("div",{className:`absolute top-1 left-1 z-10 transition-opacity ${z.has(Oe.id)?"opacity-100":"opacity-0 group-hover:opacity-100"}`,children:o.jsx("div",{className:`w-5 h-5 rounded-full border-2 flex items-center justify-center ${z.has(Oe.id)?"bg-primary border-primary text-primary-foreground":"bg-background/80 border-muted-foreground/50"}`,children:z.has(Oe.id)&&o.jsx(Qc,{className:"h-3 w-3"})})}),o.jsxs("div",{className:"absolute top-1 right-1 z-10 flex flex-col gap-0.5",children:[Oe.is_registered&&o.jsx(Xn,{variant:"default",className:"bg-green-600 text-[10px] px-1 py-0",children:"已注册"}),Oe.is_banned&&o.jsx(Xn,{variant:"destructive",className:"text-[10px] px-1 py-0",children:"已封禁"})]}),o.jsx("div",{className:`aspect-square bg-muted flex items-center justify-center overflow-hidden ${R==="small"?"p-1":R==="medium"?"p-2":"p-3"}`,children:o.jsx("img",{src:QU(Oe.id),alt:"表情包",className:"w-full h-full object-contain",loading:"lazy",onError:Ve=>{const Ue=Ve.target;Ue.style.display="none";const He=Ue.parentElement;He&&(He.innerHTML='')}})}),o.jsxs("div",{className:`border-t bg-card ${R==="small"?"p-1":"p-2"}`,children:[o.jsxs("div",{className:"flex items-center justify-between gap-1 text-xs text-muted-foreground mb-1",children:[o.jsx(Xn,{variant:"outline",className:"text-[10px] px-1 py-0",children:Oe.format.toUpperCase()}),o.jsxs("span",{className:"font-mono",children:[Oe.usage_count,"次"]})]}),o.jsxs("div",{className:`flex gap-1 justify-center opacity-0 group-hover:opacity-100 transition-opacity ${R==="small"?"flex-wrap":""}`,children:[o.jsx(he,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:Ve=>{Ve.stopPropagation(),ne(Oe)},title:"编辑",children:o.jsx(R0,{className:"h-3 w-3"})}),o.jsx(he,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:Ve=>{Ve.stopPropagation(),te(Oe)},title:"详情",children:o.jsx(Oa,{className:"h-3 w-3"})}),!Oe.is_registered&&o.jsx(he,{variant:"ghost",size:"icon",className:"h-6 w-6 text-green-600 hover:text-green-700",onClick:Ve=>{Ve.stopPropagation(),re(Oe)},title:"注册",children:o.jsx(Qc,{className:"h-3 w-3"})}),!Oe.is_banned&&o.jsx(he,{variant:"ghost",size:"icon",className:"h-6 w-6 text-orange-600 hover:text-orange-700",onClick:Ve=>{Ve.stopPropagation(),oe(Oe)},title:"封禁",children:o.jsx(Lee,{className:"h-3 w-3"})}),o.jsx(he,{variant:"ghost",size:"icon",className:"h-6 w-6 text-red-600 hover:text-red-700",onClick:Ve=>{Ve.stopPropagation(),K(Oe)},title:"删除",children:o.jsx(Sn,{className:"h-3 w-3"})})]})]})]},Oe.id))}),c>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[o.jsxs("div",{className:"text-sm text-muted-foreground",children:["显示 ",(a-1)*h+1," 到"," ",Math.min(a*h,c)," 条,共 ",c," 条"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{variant:"outline",size:"sm",onClick:()=>l(1),disabled:a===1,className:"hidden sm:flex",children:o.jsx(Ep,{className:"h-4 w-4"})}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>l(Oe=>Math.max(1,Oe-1)),disabled:a===1,children:[o.jsx(vd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{type:"number",value:J,onChange:Oe=>G(Oe.target.value),onKeyDown:Oe=>Oe.key==="Enter"&&Ye(),placeholder:a.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(c/h)}),o.jsx(he,{variant:"outline",size:"sm",onClick:Ye,disabled:!J,className:"h-8",children:"跳转"})]}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>l(Oe=>Oe+1),disabled:a>=Math.ceil(c/h),children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(yd,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(he,{variant:"outline",size:"sm",onClick:()=>l(Math.ceil(c/h)),disabled:a>=Math.ceil(c/h),className:"hidden sm:flex",children:o.jsx(_p,{className:"h-4 w-4"})})]})]})]})]}),o.jsx(Kke,{emoji:_,open:I,onOpenChange:P}),o.jsx(Zke,{emoji:_,open:L,onOpenChange:H,onSuccess:()=>{q(),V()}})]})}),o.jsx(Dn,{open:B,onOpenChange:X,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认批量删除"}),o.jsxs(_n,{children:["你确定要删除选中的 ",z.size," 个表情包吗?此操作不可撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:We,children:"确认删除"})]})]})}),o.jsx(Dr,{open:U,onOpenChange:ee,children:o.jsxs(Sr,{children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"确认删除"}),o.jsx(ss,{children:"确定要删除这个表情包吗?此操作无法撤销。"})]}),o.jsxs(bs,{children:[o.jsx(he,{variant:"outline",onClick:()=>ee(!1),children:"取消"}),o.jsx(he,{variant:"destructive",onClick:se,children:"删除"})]})]})})]})}function Kke({emoji:t,open:e,onOpenChange:n}){if(!t)return null;const r=s=>s?new Date(s*1e3).toLocaleString("zh-CN"):"-";return o.jsx(Dr,{open:e,onOpenChange:n,children:o.jsxs(Sr,{className:"max-w-2xl max-h-[90vh]",children:[o.jsx(kr,{children:o.jsx(Or,{children:"表情包详情"})}),o.jsx(wn,{className:"max-h-[calc(90vh-8rem)] pr-4",children:o.jsxs("div",{className:"space-y-4",children:[o.jsx("div",{className:"flex justify-center",children:o.jsx("div",{className:"w-32 h-32 bg-muted rounded-lg flex items-center justify-center overflow-hidden",children:o.jsx("img",{src:QU(t.id),alt:t.description||"表情包",className:"w-full h-full object-cover",onError:s=>{const i=s.target;i.style.display="none";const a=i.parentElement;a&&(a.innerHTML='')}})})}),o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx(de,{className:"text-muted-foreground",children:"ID"}),o.jsx("div",{className:"mt-1 font-mono",children:t.id})]}),o.jsxs("div",{children:[o.jsx(de,{className:"text-muted-foreground",children:"格式"}),o.jsx("div",{className:"mt-1",children:o.jsx(Xn,{variant:"outline",children:t.format.toUpperCase()})})]})]}),o.jsxs("div",{children:[o.jsx(de,{className:"text-muted-foreground",children:"文件路径"}),o.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:t.full_path})]}),o.jsxs("div",{children:[o.jsx(de,{className:"text-muted-foreground",children:"哈希值"}),o.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:t.emoji_hash})]}),o.jsxs("div",{children:[o.jsx(de,{className:"text-muted-foreground",children:"描述"}),t.description?o.jsx("div",{className:"mt-1 rounded-lg border bg-muted/50 p-3",children:o.jsx(qke,{className:"prose-sm",children:t.description})}):o.jsx("div",{className:"mt-1 text-sm text-muted-foreground",children:"-"})]}),o.jsxs("div",{children:[o.jsx(de,{className:"text-muted-foreground",children:"情绪"}),o.jsx("div",{className:"mt-1",children:t.emotion?o.jsx("span",{className:"text-sm",children:t.emotion}):o.jsx("span",{className:"text-sm text-muted-foreground",children:"-"})})]}),o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx(de,{className:"text-muted-foreground",children:"状态"}),o.jsxs("div",{className:"mt-2 flex gap-2",children:[t.is_registered&&o.jsx(Xn,{variant:"default",className:"bg-green-600",children:"已注册"}),t.is_banned&&o.jsx(Xn,{variant:"destructive",children:"已封禁"}),!t.is_registered&&!t.is_banned&&o.jsx(Xn,{variant:"outline",children:"未注册"})]})]}),o.jsxs("div",{children:[o.jsx(de,{className:"text-muted-foreground",children:"使用次数"}),o.jsx("div",{className:"mt-1 font-mono text-lg",children:t.usage_count})]})]}),o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx(de,{className:"text-muted-foreground",children:"记录时间"}),o.jsx("div",{className:"mt-1 text-sm",children:r(t.record_time)})]}),o.jsxs("div",{children:[o.jsx(de,{className:"text-muted-foreground",children:"注册时间"}),o.jsx("div",{className:"mt-1 text-sm",children:r(t.register_time)})]})]}),o.jsxs("div",{children:[o.jsx(de,{className:"text-muted-foreground",children:"最后使用"}),o.jsx("div",{className:"mt-1 text-sm",children:r(t.last_used_time)})]})]})})]})})}function Zke({emoji:t,open:e,onOpenChange:n,onSuccess:r}){const[s,i]=b.useState(""),[a,l]=b.useState(!1),[c,d]=b.useState(!1),[h,m]=b.useState(!1),{toast:g}=fs();b.useEffect(()=>{t&&(i(t.emotion||""),l(t.is_registered),d(t.is_banned))},[t]);const x=async()=>{if(t)try{m(!0);const y=s.split(/[,,]/).map(w=>w.trim()).filter(Boolean).join(",");await Qke(t.id,{emotion:y||void 0,is_registered:a,is_banned:c}),g({title:"成功",description:"表情包信息已更新"}),n(!1),r()}catch(y){const w=y instanceof Error?y.message:"保存失败";g({title:"错误",description:w,variant:"destructive"})}finally{m(!1)}};return t?o.jsx(Dr,{open:e,onOpenChange:n,children:o.jsxs(Sr,{className:"max-w-2xl",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"编辑表情包"}),o.jsx(ss,{children:"修改表情包的情绪和状态信息"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{children:[o.jsx(de,{children:"情绪"}),o.jsx(Ar,{value:s,onChange:y=>i(y.target.value),placeholder:"输入情绪描述...",rows:2,className:"mt-1"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"输入情绪相关的文本描述"})]}),o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Oi,{id:"is_registered",checked:a,onCheckedChange:y=>{y===!0?(l(!0),d(!1)):l(!1)}}),o.jsx(de,{htmlFor:"is_registered",className:"cursor-pointer",children:"已注册"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Oi,{id:"is_banned",checked:c,onCheckedChange:y=>{y===!0?(d(!0),l(!1)):d(!1)}}),o.jsx(de,{htmlFor:"is_banned",className:"cursor-pointer",children:"已封禁"})]})]})]}),o.jsxs(bs,{children:[o.jsx(he,{variant:"outline",onClick:()=>n(!1),children:"取消"}),o.jsx(he,{onClick:x,disabled:h,children:h?"保存中...":"保存"})]})]})}):null}const hu="/api/webui/expression";async function Jke(){const t=await St(`${hu}/chats`,{headers:Dt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取聊天列表失败")}return t.json()}async function eOe(t){const e=new URLSearchParams;t.page&&e.append("page",t.page.toString()),t.page_size&&e.append("page_size",t.page_size.toString()),t.search&&e.append("search",t.search),t.chat_id&&e.append("chat_id",t.chat_id);const n=await St(`${hu}/list?${e}`,{headers:Dt()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取表达方式列表失败")}return n.json()}async function tOe(t){const e=await St(`${hu}/${t}`,{headers:Dt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"获取表达方式详情失败")}return e.json()}async function nOe(t){const e=await St(`${hu}/`,{method:"POST",headers:Dt(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"创建表达方式失败")}return e.json()}async function rOe(t,e){const n=await St(`${hu}/${t}`,{method:"PATCH",headers:Dt(),body:JSON.stringify(e)});if(!n.ok){const r=await n.json();throw new Error(r.detail||"更新表达方式失败")}return n.json()}async function sOe(t){const e=await St(`${hu}/${t}`,{method:"DELETE",headers:Dt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"删除表达方式失败")}return e.json()}async function iOe(t){const e=await St(`${hu}/batch/delete`,{method:"POST",headers:Dt(),body:JSON.stringify({ids:t})});if(!e.ok){const n=await e.json();throw new Error(n.detail||"批量删除表达方式失败")}return e.json()}async function aOe(){const t=await St(`${hu}/stats/summary`,{headers:Dt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取统计数据失败")}return t.json()}function oOe(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[s,i]=b.useState(0),[a,l]=b.useState(1),[c,d]=b.useState(20),[h,m]=b.useState(""),[g,x]=b.useState(null),[y,w]=b.useState(!1),[S,k]=b.useState(!1),[j,N]=b.useState(!1),[T,E]=b.useState(null),[_,M]=b.useState(new Set),[I,P]=b.useState(!1),[L,H]=b.useState(""),[U,ee]=b.useState({total:0,recent_7days:0,chat_count:0,top_chats:{}}),[z,Q]=b.useState([]),[B,X]=b.useState(new Map),{toast:J}=fs(),G=async()=>{try{r(!0);const oe=await eOe({page:a,page_size:c,search:h||void 0});e(oe.data),i(oe.total)}catch(oe){J({title:"加载失败",description:oe instanceof Error?oe.message:"无法加载表达方式",variant:"destructive"})}finally{r(!1)}},R=async()=>{try{const oe=await aOe();oe?.data&&ee(oe.data)}catch(oe){console.error("加载统计数据失败:",oe)}},ie=async()=>{try{const oe=await Jke();if(oe?.data){Q(oe.data);const Te=new Map;oe.data.forEach(We=>{Te.set(We.chat_id,We.chat_name)}),X(Te)}}catch(oe){console.error("加载聊天列表失败:",oe)}},W=oe=>B.get(oe)||oe;b.useEffect(()=>{G(),R(),ie()},[a,c,h]);const q=async oe=>{try{const Te=await tOe(oe.id);x(Te.data),w(!0)}catch(Te){J({title:"加载详情失败",description:Te instanceof Error?Te.message:"无法加载表达方式详情",variant:"destructive"})}},V=oe=>{x(oe),k(!0)},te=async oe=>{try{await sOe(oe.id),J({title:"删除成功",description:`已删除表达方式: ${oe.situation}`}),E(null),G(),R()}catch(Te){J({title:"删除失败",description:Te instanceof Error?Te.message:"无法删除表达方式",variant:"destructive"})}},ne=oe=>{const Te=new Set(_);Te.has(oe)?Te.delete(oe):Te.add(oe),M(Te)},K=()=>{_.size===t.length&&t.length>0?M(new Set):M(new Set(t.map(oe=>oe.id)))},se=async()=>{try{await iOe(Array.from(_)),J({title:"批量删除成功",description:`已删除 ${_.size} 个表达方式`}),M(new Set),P(!1),G(),R()}catch(oe){J({title:"批量删除失败",description:oe instanceof Error?oe.message:"无法批量删除表达方式",variant:"destructive"})}},re=()=>{const oe=parseInt(L),Te=Math.ceil(s/c);oe>=1&&oe<=Te?(l(oe),H("")):J({title:"无效的页码",description:`请输入1-${Te}之间的页码`,variant:"destructive"})};return o.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[o.jsx("div",{className:"mb-4 sm:mb-6",children:o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[o.jsx(Cp,{className:"h-8 w-8",strokeWidth:2}),"表达方式管理"]}),o.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦的表达方式和话术模板"})]}),o.jsxs(he,{onClick:()=>N(!0),className:"gap-2",children:[o.jsx(zs,{className:"h-4 w-4"}),"新增表达方式"]})]})}),o.jsx(wn,{className:"flex-1",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"总数量"}),o.jsx("div",{className:"text-2xl font-bold mt-1",children:U.total})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"近7天新增"}),o.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:U.recent_7days})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"关联聊天数"}),o.jsx("div",{className:"text-2xl font-bold mt-1 text-blue-600",children:U.chat_count})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx(de,{htmlFor:"search",children:"搜索"}),o.jsx("div",{className:"flex flex-col sm:flex-row gap-2 mt-1.5",children:o.jsxs("div",{className:"flex-1 relative",children:[o.jsx(Ni,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),o.jsx(ze,{id:"search",placeholder:"搜索情境、风格或上下文...",value:h,onChange:oe=>m(oe.target.value),className:"pl-9"})]})}),o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[o.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:_.size>0&&o.jsxs("span",{children:["已选择 ",_.size," 个表达方式"]})}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(de,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:c.toString(),onValueChange:oe=>{d(parseInt(oe)),l(1),M(new Set)},children:[o.jsx($t,{id:"page-size",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"10",children:"10"}),o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"50",children:"50"}),o.jsx(De,{value:"100",children:"100"})]})]}),_.size>0&&o.jsxs(o.Fragment,{children:[o.jsx(he,{variant:"outline",size:"sm",onClick:()=>M(new Set),children:"取消选择"}),o.jsxs(he,{variant:"destructive",size:"sm",onClick:()=>P(!0),children:[o.jsx(Sn,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card",children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(Tf,{children:[o.jsx(Ef,{children:o.jsxs(Ps,{children:[o.jsx(pn,{className:"w-12",children:o.jsx(Oi,{checked:_.size===t.length&&t.length>0,onCheckedChange:K})}),o.jsx(pn,{children:"情境"}),o.jsx(pn,{children:"风格"}),o.jsx(pn,{children:"聊天"}),o.jsx(pn,{className:"text-right",children:"操作"})]})}),o.jsx(_f,{children:n?o.jsx(Ps,{children:o.jsx(Gt,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):t.length===0?o.jsx(Ps,{children:o.jsx(Gt,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):t.map(oe=>o.jsxs(Ps,{children:[o.jsx(Gt,{children:o.jsx(Oi,{checked:_.has(oe.id),onCheckedChange:()=>ne(oe.id)})}),o.jsx(Gt,{className:"font-medium max-w-xs truncate",children:oe.situation}),o.jsx(Gt,{className:"max-w-xs truncate",children:oe.style}),o.jsx(Gt,{className:"max-w-[200px] truncate",title:W(oe.chat_id),style:{wordBreak:"keep-all"},children:o.jsx("span",{className:"whitespace-nowrap overflow-hidden text-ellipsis block",children:W(oe.chat_id)})}),o.jsx(Gt,{className:"text-right",children:o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsxs(he,{variant:"default",size:"sm",onClick:()=>V(oe),children:[o.jsx(R0,{className:"h-4 w-4 mr-1"}),"编辑"]}),o.jsx(he,{variant:"outline",size:"icon",className:"h-8 w-8",onClick:()=>q(oe),title:"查看详情",children:o.jsx(Ea,{className:"h-4 w-4"})}),o.jsxs(he,{size:"sm",onClick:()=>E(oe),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Sn,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},oe.id))})]})}),o.jsx("div",{className:"md:hidden space-y-3 p-4",children:n?o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):t.length===0?o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):t.map(oe=>o.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Oi,{checked:_.has(oe.id),onCheckedChange:()=>ne(oe.id),className:"mt-1"}),o.jsxs("div",{className:"min-w-0 flex-1 overflow-hidden space-y-2",children:[o.jsxs("div",{children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"情境"}),o.jsx("h3",{className:"font-semibold text-sm line-clamp-2 w-full break-all",title:oe.situation,children:oe.situation})]}),o.jsxs("div",{children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"风格"}),o.jsx("p",{className:"text-sm line-clamp-2 w-full break-all",title:oe.style,children:oe.style})]})]})]}),o.jsxs("div",{className:"text-sm",children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"聊天"}),o.jsx("p",{className:"text-sm truncate",title:W(oe.chat_id),style:{wordBreak:"keep-all"},children:W(oe.chat_id)})]}),o.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>V(oe),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[o.jsx(R0,{className:"h-3 w-3 mr-1"}),"编辑"]}),o.jsx(he,{variant:"outline",size:"sm",onClick:()=>q(oe),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:o.jsx(Ea,{className:"h-3 w-3"})}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>E(oe),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[o.jsx(Sn,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},oe.id))}),s>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[o.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",s," 条记录,第 ",a," / ",Math.ceil(s/c)," 页"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{variant:"outline",size:"sm",onClick:()=>l(1),disabled:a===1,className:"hidden sm:flex",children:o.jsx(Ep,{className:"h-4 w-4"})}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>l(a-1),disabled:a===1,children:[o.jsx(vd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{type:"number",value:L,onChange:oe=>H(oe.target.value),onKeyDown:oe=>oe.key==="Enter"&&re(),placeholder:a.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(s/c)}),o.jsx(he,{variant:"outline",size:"sm",onClick:re,disabled:!L,className:"h-8",children:"跳转"})]}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>l(a+1),disabled:a>=Math.ceil(s/c),children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(yd,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(he,{variant:"outline",size:"sm",onClick:()=>l(Math.ceil(s/c)),disabled:a>=Math.ceil(s/c),className:"hidden sm:flex",children:o.jsx(_p,{className:"h-4 w-4"})})]})]})]})]})}),o.jsx(lOe,{expression:g,open:y,onOpenChange:w,chatNameMap:B}),o.jsx(cOe,{open:j,onOpenChange:N,chatList:z,onSuccess:()=>{G(),R(),N(!1)}}),o.jsx(uOe,{expression:g,open:S,onOpenChange:k,chatList:z,onSuccess:()=>{G(),R(),k(!1)}}),o.jsx(Dn,{open:!!T,onOpenChange:()=>E(null),children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除表达方式 "',T?.situation,'" 吗? 此操作不可撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>T&&te(T),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),o.jsx(dOe,{open:I,onOpenChange:P,onConfirm:se,count:_.size})]})}function lOe({expression:t,open:e,onOpenChange:n,chatNameMap:r}){if(!t)return null;const s=a=>a?new Date(a*1e3).toLocaleString("zh-CN"):"-",i=a=>r.get(a)||a;return o.jsx(Dr,{open:e,onOpenChange:n,children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"表达方式详情"}),o.jsx(ss,{children:"查看表达方式的完整信息"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsx(Zm,{label:"情境",value:t.situation}),o.jsx(Zm,{label:"风格",value:t.style}),o.jsx(Zm,{label:"聊天",value:i(t.chat_id)}),o.jsx(Zm,{icon:J3,label:"记录ID",value:t.id.toString(),mono:!0})]}),o.jsx("div",{className:"grid grid-cols-2 gap-4",children:o.jsx(Zm,{icon:_h,label:"创建时间",value:s(t.create_date)})})]}),o.jsx(bs,{children:o.jsx(he,{onClick:()=>n(!1),children:"关闭"})})]})})}function Zm({icon:t,label:e,value:n,mono:r=!1}){return o.jsxs("div",{className:"space-y-1",children:[o.jsxs(de,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[t&&o.jsx(t,{className:"h-3 w-3"}),e]}),o.jsx("div",{className:ve("text-sm",r&&"font-mono",!n&&"text-muted-foreground"),children:n||"-"})]})}function cOe({open:t,onOpenChange:e,chatList:n,onSuccess:r}){const[s,i]=b.useState({situation:"",style:"",chat_id:""}),[a,l]=b.useState(!1),{toast:c}=fs(),d=async()=>{if(!s.situation||!s.style||!s.chat_id){c({title:"验证失败",description:"请填写必填字段:情境、风格和聊天",variant:"destructive"});return}try{l(!0),await nOe(s),c({title:"创建成功",description:"表达方式已创建"}),i({situation:"",style:"",chat_id:""}),r()}catch(h){c({title:"创建失败",description:h instanceof Error?h.message:"无法创建表达方式",variant:"destructive"})}finally{l(!1)}};return o.jsx(Dr,{open:t,onOpenChange:e,children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"新增表达方式"}),o.jsx(ss,{children:"创建新的表达方式记录"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsxs(de,{htmlFor:"situation",children:["情境 ",o.jsx("span",{className:"text-destructive",children:"*"})]}),o.jsx(ze,{id:"situation",value:s.situation,onChange:h=>i({...s,situation:h.target.value}),placeholder:"描述使用场景"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs(de,{htmlFor:"style",children:["风格 ",o.jsx("span",{className:"text-destructive",children:"*"})]}),o.jsx(ze,{id:"style",value:s.style,onChange:h=>i({...s,style:h.target.value}),placeholder:"描述表达风格"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs(de,{htmlFor:"chat_id",children:["聊天 ",o.jsx("span",{className:"text-destructive",children:"*"})]}),o.jsxs(Vt,{value:s.chat_id,onValueChange:h=>i({...s,chat_id:h}),children:[o.jsx($t,{children:o.jsx(Ut,{placeholder:"选择关联的聊天"})}),o.jsx(Ht,{children:n.map(h=>o.jsx(De,{value:h.chat_id,children:o.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[h.chat_name,h.is_group&&o.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},h.chat_id))})]})]})]}),o.jsxs(bs,{children:[o.jsx(he,{variant:"outline",onClick:()=>e(!1),children:"取消"}),o.jsx(he,{onClick:d,disabled:a,children:a?"创建中...":"创建"})]})]})})}function uOe({expression:t,open:e,onOpenChange:n,chatList:r,onSuccess:s}){const[i,a]=b.useState({}),[l,c]=b.useState(!1),{toast:d}=fs();b.useEffect(()=>{t&&a({situation:t.situation,style:t.style,chat_id:t.chat_id})},[t]);const h=async()=>{if(t)try{c(!0),await rOe(t.id,i),d({title:"保存成功",description:"表达方式已更新"}),s()}catch(m){d({title:"保存失败",description:m instanceof Error?m.message:"无法更新表达方式",variant:"destructive"})}finally{c(!1)}};return t?o.jsx(Dr,{open:e,onOpenChange:n,children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"编辑表达方式"}),o.jsx(ss,{children:"修改表达方式的信息"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"edit_situation",children:"情境"}),o.jsx(ze,{id:"edit_situation",value:i.situation||"",onChange:m=>a({...i,situation:m.target.value}),placeholder:"描述使用场景"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"edit_style",children:"风格"}),o.jsx(ze,{id:"edit_style",value:i.style||"",onChange:m=>a({...i,style:m.target.value}),placeholder:"描述表达风格"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"edit_chat_id",children:"聊天"}),o.jsxs(Vt,{value:i.chat_id||"",onValueChange:m=>a({...i,chat_id:m}),children:[o.jsx($t,{children:o.jsx(Ut,{placeholder:"选择关联的聊天"})}),o.jsx(Ht,{children:r.map(m=>o.jsx(De,{value:m.chat_id,children:o.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[m.chat_name,m.is_group&&o.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},m.chat_id))})]})]})]}),o.jsxs(bs,{children:[o.jsx(he,{variant:"outline",onClick:()=>n(!1),children:"取消"}),o.jsx(he,{onClick:h,disabled:l,children:l?"保存中...":"保存"})]})]})}):null}function dOe({open:t,onOpenChange:e,onConfirm:n,count:r}){return o.jsx(Dn,{open:t,onOpenChange:e,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认批量删除"}),o.jsxs(_n,{children:["您即将删除 ",r," 个表达方式,此操作无法撤销。确定要继续吗?"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:n,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认删除"})]})]})})}const qf="/api/webui/person";async function hOe(t){const e=new URLSearchParams;t.page&&e.append("page",t.page.toString()),t.page_size&&e.append("page_size",t.page_size.toString()),t.search&&e.append("search",t.search),t.is_known!==void 0&&e.append("is_known",t.is_known.toString()),t.platform&&e.append("platform",t.platform);const n=await St(`${qf}/list?${e}`,{headers:Dt()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取人物列表失败")}return n.json()}async function fOe(t){const e=await St(`${qf}/${t}`,{headers:Dt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"获取人物详情失败")}return e.json()}async function mOe(t,e){const n=await St(`${qf}/${t}`,{method:"PATCH",headers:Dt(),body:JSON.stringify(e)});if(!n.ok){const r=await n.json();throw new Error(r.detail||"更新人物信息失败")}return n.json()}async function pOe(t){const e=await St(`${qf}/${t}`,{method:"DELETE",headers:Dt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"删除人物信息失败")}return e.json()}async function gOe(){const t=await St(`${qf}/stats/summary`,{headers:Dt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取统计数据失败")}return t.json()}async function xOe(t){const e=await St(`${qf}/batch/delete`,{method:"POST",headers:Dt(),body:JSON.stringify({person_ids:t})});if(!e.ok){const n=await e.json();throw new Error(n.detail||"批量删除失败")}return e.json()}function vOe(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[s,i]=b.useState(0),[a,l]=b.useState(1),[c,d]=b.useState(20),[h,m]=b.useState(""),[g,x]=b.useState(void 0),[y,w]=b.useState(void 0),[S,k]=b.useState(null),[j,N]=b.useState(!1),[T,E]=b.useState(!1),[_,M]=b.useState(null),[I,P]=b.useState({total:0,known:0,unknown:0,platforms:{}}),[L,H]=b.useState(new Set),[U,ee]=b.useState(!1),[z,Q]=b.useState(""),{toast:B}=fs(),X=async()=>{try{r(!0);const re=await hOe({page:a,page_size:c,search:h||void 0,is_known:g,platform:y});e(re.data),i(re.total)}catch(re){B({title:"加载失败",description:re instanceof Error?re.message:"无法加载人物信息",variant:"destructive"})}finally{r(!1)}},J=async()=>{try{const re=await gOe();re?.data&&P(re.data)}catch(re){console.error("加载统计数据失败:",re)}};b.useEffect(()=>{X(),J()},[a,c,h,g,y]);const G=async re=>{try{const oe=await fOe(re.person_id);k(oe.data),N(!0)}catch(oe){B({title:"加载详情失败",description:oe instanceof Error?oe.message:"无法加载人物详情",variant:"destructive"})}},R=re=>{k(re),E(!0)},ie=async re=>{try{await pOe(re.person_id),B({title:"删除成功",description:`已删除人物信息: ${re.person_name||re.nickname||re.user_id}`}),M(null),X(),J()}catch(oe){B({title:"删除失败",description:oe instanceof Error?oe.message:"无法删除人物信息",variant:"destructive"})}},W=b.useMemo(()=>Object.keys(I.platforms),[I.platforms]),q=re=>{const oe=new Set(L);oe.has(re)?oe.delete(re):oe.add(re),H(oe)},V=()=>{L.size===t.length&&t.length>0?H(new Set):H(new Set(t.map(re=>re.person_id)))},te=()=>{if(L.size===0){B({title:"未选择任何人物",description:"请先选择要删除的人物",variant:"destructive"});return}ee(!0)},ne=async()=>{try{const re=await xOe(Array.from(L));B({title:"批量删除完成",description:re.message}),H(new Set),ee(!1),X(),J()}catch(re){B({title:"批量删除失败",description:re instanceof Error?re.message:"批量删除失败",variant:"destructive"})}},K=()=>{const re=parseInt(z),oe=Math.ceil(s/c);re>=1&&re<=oe?(l(re),Q("")):B({title:"无效的页码",description:`请输入1-${oe}之间的页码`,variant:"destructive"})},se=re=>re?new Date(re*1e3).toLocaleString("zh-CN"):"-";return o.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[o.jsx("div",{className:"mb-4 sm:mb-6",children:o.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:o.jsxs("div",{children:[o.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[o.jsx(Bee,{className:"h-8 w-8",strokeWidth:2}),"人物信息管理"]}),o.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦认识的所有人物信息"})]})})}),o.jsx(wn,{className:"flex-1",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"总人数"}),o.jsx("div",{className:"text-2xl font-bold mt-1",children:I.total})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"已认识"}),o.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:I.known})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"未认识"}),o.jsx("div",{className:"text-2xl font-bold mt-1 text-muted-foreground",children:I.unknown})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-4 gap-4",children:[o.jsxs("div",{className:"sm:col-span-2",children:[o.jsx(de,{htmlFor:"search",children:"搜索"}),o.jsxs("div",{className:"relative mt-1.5",children:[o.jsx(Ni,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),o.jsx(ze,{id:"search",placeholder:"搜索名称、昵称或用户ID...",value:h,onChange:re=>m(re.target.value),className:"pl-9"})]})]}),o.jsxs("div",{children:[o.jsx(de,{htmlFor:"filter-known",children:"认识状态"}),o.jsxs(Vt,{value:g===void 0?"all":g.toString(),onValueChange:re=>{x(re==="all"?void 0:re==="true"),l(1)},children:[o.jsx($t,{id:"filter-known",className:"mt-1.5",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部"}),o.jsx(De,{value:"true",children:"已认识"}),o.jsx(De,{value:"false",children:"未认识"})]})]})]}),o.jsxs("div",{children:[o.jsx(de,{htmlFor:"filter-platform",children:"平台"}),o.jsxs(Vt,{value:y||"all",onValueChange:re=>{w(re==="all"?void 0:re),l(1)},children:[o.jsx($t,{id:"filter-platform",className:"mt-1.5",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部平台"}),W.map(re=>o.jsxs(De,{value:re,children:[re," (",I.platforms[re],")"]},re))]})]})]})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[o.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:L.size>0&&o.jsxs("span",{children:["已选择 ",L.size," 个人物"]})}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(de,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:c.toString(),onValueChange:re=>{d(parseInt(re)),l(1),H(new Set)},children:[o.jsx($t,{id:"page-size",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"10",children:"10"}),o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"50",children:"50"}),o.jsx(De,{value:"100",children:"100"})]})]}),L.size>0&&o.jsxs(o.Fragment,{children:[o.jsx(he,{variant:"outline",size:"sm",onClick:()=>H(new Set),children:"取消选择"}),o.jsxs(he,{variant:"destructive",size:"sm",onClick:te,children:[o.jsx(Sn,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card",children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(Tf,{children:[o.jsx(Ef,{children:o.jsxs(Ps,{children:[o.jsx(pn,{className:"w-12",children:o.jsx(Oi,{checked:t.length>0&&L.size===t.length,onCheckedChange:V,"aria-label":"全选"})}),o.jsx(pn,{children:"状态"}),o.jsx(pn,{children:"名称"}),o.jsx(pn,{children:"昵称"}),o.jsx(pn,{children:"平台"}),o.jsx(pn,{children:"用户ID"}),o.jsx(pn,{children:"最后更新"}),o.jsx(pn,{className:"text-right",children:"操作"})]})}),o.jsx(_f,{children:n?o.jsx(Ps,{children:o.jsx(Gt,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):t.length===0?o.jsx(Ps,{children:o.jsx(Gt,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):t.map(re=>o.jsxs(Ps,{children:[o.jsx(Gt,{children:o.jsx(Oi,{checked:L.has(re.person_id),onCheckedChange:()=>q(re.person_id),"aria-label":`选择 ${re.person_name||re.nickname||re.user_id}`})}),o.jsx(Gt,{children:o.jsx("div",{className:ve("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium",re.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:re.is_known?"已认识":"未认识"})}),o.jsx(Gt,{className:"font-medium",children:re.person_name||o.jsx("span",{className:"text-muted-foreground",children:"-"})}),o.jsx(Gt,{children:re.nickname||"-"}),o.jsx(Gt,{children:re.platform}),o.jsx(Gt,{className:"font-mono text-sm",children:re.user_id}),o.jsx(Gt,{className:"text-sm text-muted-foreground",children:se(re.last_know)}),o.jsx(Gt,{className:"text-right",children:o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsxs(he,{variant:"default",size:"sm",onClick:()=>G(re),children:[o.jsx(Ea,{className:"h-4 w-4 mr-1"}),"详情"]}),o.jsxs(he,{variant:"default",size:"sm",onClick:()=>R(re),children:[o.jsx(R0,{className:"h-4 w-4 mr-1"}),"编辑"]}),o.jsxs(he,{size:"sm",onClick:()=>M(re),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Sn,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},re.id))})]})}),o.jsx("div",{className:"md:hidden space-y-3 p-4",children:n?o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):t.length===0?o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):t.map(re=>o.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Oi,{checked:L.has(re.person_id),onCheckedChange:()=>q(re.person_id),className:"mt-1"}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("div",{className:ve("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium mb-2",re.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:re.is_known?"已认识":"未认识"}),o.jsx("h3",{className:"font-semibold text-sm line-clamp-1 w-full break-all",children:re.person_name||o.jsx("span",{className:"text-muted-foreground",children:"未命名"})}),re.nickname&&o.jsxs("p",{className:"text-xs text-muted-foreground mt-1 line-clamp-1 w-full break-all",children:["昵称: ",re.nickname]})]})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[o.jsxs("div",{children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"平台"}),o.jsx("p",{className:"font-medium text-xs",children:re.platform})]}),o.jsxs("div",{children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"用户ID"}),o.jsx("p",{className:"font-mono text-xs truncate",title:re.user_id,children:re.user_id})]}),o.jsxs("div",{className:"col-span-2",children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"最后更新"}),o.jsx("p",{className:"text-xs",children:se(re.last_know)})]})]}),o.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>G(re),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[o.jsx(Ea,{className:"h-3 w-3 mr-1"}),"查看"]}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>R(re),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[o.jsx(R0,{className:"h-3 w-3 mr-1"}),"编辑"]}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>M(re),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[o.jsx(Sn,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},re.id))}),s>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[o.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",s," 条记录,第 ",a," / ",Math.ceil(s/c)," 页"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{variant:"outline",size:"sm",onClick:()=>l(1),disabled:a===1,className:"hidden sm:flex",children:o.jsx(Ep,{className:"h-4 w-4"})}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>l(a-1),disabled:a===1,children:[o.jsx(vd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{type:"number",value:z,onChange:re=>Q(re.target.value),onKeyDown:re=>re.key==="Enter"&&K(),placeholder:a.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(s/c)}),o.jsx(he,{variant:"outline",size:"sm",onClick:K,disabled:!z,className:"h-8",children:"跳转"})]}),o.jsxs(he,{variant:"outline",size:"sm",onClick:()=>l(a+1),disabled:a>=Math.ceil(s/c),children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(yd,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(he,{variant:"outline",size:"sm",onClick:()=>l(Math.ceil(s/c)),disabled:a>=Math.ceil(s/c),className:"hidden sm:flex",children:o.jsx(_p,{className:"h-4 w-4"})})]})]})]})]})}),o.jsx(yOe,{person:S,open:j,onOpenChange:N}),o.jsx(bOe,{person:S,open:T,onOpenChange:E,onSuccess:()=>{X(),J(),E(!1)}}),o.jsx(Dn,{open:!!_,onOpenChange:()=>M(null),children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除人物信息 "',_?.person_name||_?.nickname||_?.user_id,'" 吗? 此操作不可撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:()=>_&&ie(_),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),o.jsx(Dn,{open:U,onOpenChange:ee,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认批量删除"}),o.jsxs(_n,{children:["确定要删除选中的 ",L.size," 个人物信息吗? 此操作不可撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{children:"取消"}),o.jsx(Mn,{onClick:ne,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})})]})}function yOe({person:t,open:e,onOpenChange:n}){if(!t)return null;const r=s=>s?new Date(s*1e3).toLocaleString("zh-CN"):"-";return o.jsx(Dr,{open:e,onOpenChange:n,children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"人物详情"}),o.jsxs(ss,{children:["查看 ",t.person_name||t.nickname||t.user_id," 的完整信息"]})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsx(yl,{icon:mI,label:"人物名称",value:t.person_name}),o.jsx(yl,{icon:Cp,label:"昵称",value:t.nickname}),o.jsx(yl,{icon:J3,label:"用户ID",value:t.user_id,mono:!0}),o.jsx(yl,{icon:J3,label:"人物ID",value:t.person_id,mono:!0}),o.jsx(yl,{label:"平台",value:t.platform}),o.jsx(yl,{label:"状态",value:t.is_known?"已认识":"未认识"})]}),t.name_reason&&o.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[o.jsx(de,{className:"text-xs text-muted-foreground",children:"名称设定原因"}),o.jsx("p",{className:"mt-1 text-sm",children:t.name_reason})]}),t.memory_points&&o.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[o.jsx(de,{className:"text-xs text-muted-foreground",children:"个人印象"}),o.jsx("p",{className:"mt-1 text-sm whitespace-pre-wrap",children:t.memory_points})]}),t.group_nick_name&&t.group_nick_name.length>0&&o.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[o.jsx(de,{className:"text-xs text-muted-foreground",children:"群昵称"}),o.jsx("div",{className:"mt-2 space-y-1",children:t.group_nick_name.map((s,i)=>o.jsxs("div",{className:"text-sm flex items-center gap-2",children:[o.jsx("span",{className:"font-mono text-xs text-muted-foreground",children:s.group_id}),o.jsx("span",{children:"→"}),o.jsx("span",{children:s.group_nick_name})]},i))})]}),o.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[o.jsx(yl,{icon:_h,label:"认识时间",value:r(t.know_times)}),o.jsx(yl,{icon:_h,label:"首次记录",value:r(t.know_since)}),o.jsx(yl,{icon:_h,label:"最后更新",value:r(t.last_know)})]})]}),o.jsx(bs,{children:o.jsx(he,{onClick:()=>n(!1),children:"关闭"})})]})})}function yl({icon:t,label:e,value:n,mono:r=!1}){return o.jsxs("div",{className:"space-y-1",children:[o.jsxs(de,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[t&&o.jsx(t,{className:"h-3 w-3"}),e]}),o.jsx("div",{className:ve("text-sm",r&&"font-mono",!n&&"text-muted-foreground"),children:n||"-"})]})}function bOe({person:t,open:e,onOpenChange:n,onSuccess:r}){const[s,i]=b.useState({}),[a,l]=b.useState(!1),{toast:c}=fs();b.useEffect(()=>{t&&i({person_name:t.person_name||"",name_reason:t.name_reason||"",nickname:t.nickname||"",memory_points:t.memory_points||"",is_known:t.is_known})},[t]);const d=async()=>{if(t)try{l(!0),await mOe(t.person_id,s),c({title:"保存成功",description:"人物信息已更新"}),r()}catch(h){c({title:"保存失败",description:h instanceof Error?h.message:"无法更新人物信息",variant:"destructive"})}finally{l(!1)}};return t?o.jsx(Dr,{open:e,onOpenChange:n,children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"编辑人物信息"}),o.jsxs(ss,{children:["修改 ",t.person_name||t.nickname||t.user_id," 的信息"]})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"person_name",children:"人物名称"}),o.jsx(ze,{id:"person_name",value:s.person_name||"",onChange:h=>i({...s,person_name:h.target.value}),placeholder:"为这个人设置一个名称"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"nickname",children:"昵称"}),o.jsx(ze,{id:"nickname",value:s.nickname||"",onChange:h=>i({...s,nickname:h.target.value}),placeholder:"昵称"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"name_reason",children:"名称设定原因"}),o.jsx(Ar,{id:"name_reason",value:s.name_reason||"",onChange:h=>i({...s,name_reason:h.target.value}),placeholder:"为什么这样称呼这个人?",rows:2})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"memory_points",children:"个人印象"}),o.jsx(Ar,{id:"memory_points",value:s.memory_points||"",onChange:h=>i({...s,memory_points:h.target.value}),placeholder:"对这个人的印象和记忆点...",rows:4})]}),o.jsxs("div",{className:"flex items-center justify-between rounded-lg border p-3",children:[o.jsxs("div",{children:[o.jsx(de,{htmlFor:"is_known",className:"text-base font-medium",children:"已认识"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"标记是否已经认识这个人"})]}),o.jsx(Bt,{id:"is_known",checked:s.is_known,onCheckedChange:h=>i({...s,is_known:h})})]})]}),o.jsxs(bs,{children:[o.jsx(he,{variant:"outline",onClick:()=>n(!1),children:"取消"}),o.jsx(he,{onClick:d,disabled:a,children:a?"保存中...":"保存"})]})]})}):null}function Is(t){if(typeof t=="string"||typeof t=="number")return""+t;let e="";if(Array.isArray(t))for(let n=0,r;n{let e;const n=new Set,r=(h,m)=>{const g=typeof h=="function"?h(e):h;if(!Object.is(g,e)){const x=e;e=m??(typeof g!="object"||g===null)?g:Object.assign({},e,g),n.forEach(y=>y(e,x))}},s=()=>e,c={setState:r,getState:s,getInitialState:()=>d,subscribe:h=>(n.add(h),()=>n.delete(h)),destroy:()=>{(wOe?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},d=e=t(r,s,c);return c},SOe=t=>t?WR(t):WR,{useDebugValue:kOe}=ae,{useSyncExternalStoreWithSelector:OOe}=eJ,jOe=t=>t;function VU(t,e=jOe,n){const r=OOe(t.subscribe,t.getState,t.getServerState||t.getInitialState,e,n);return kOe(r),r}const GR=(t,e)=>{const n=SOe(t),r=(s,i=e)=>VU(n,s,i);return Object.assign(r,n),r},NOe=(t,e)=>t?GR(t,e):GR;function Ss(t,e){if(Object.is(t,e))return!0;if(typeof t!="object"||t===null||typeof e!="object"||e===null)return!1;if(t instanceof Map&&e instanceof Map){if(t.size!==e.size)return!1;for(const[r,s]of t)if(!Object.is(s,e.get(r)))return!1;return!0}if(t instanceof Set&&e instanceof Set){if(t.size!==e.size)return!1;for(const r of t)if(!e.has(r))return!1;return!0}const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!1;for(const r of n)if(!Object.prototype.hasOwnProperty.call(e,r)||!Object.is(t[r],e[r]))return!1;return!0}var COe={value:()=>{}};function $b(){for(var t=0,e=arguments.length,n={},r;t=0&&(r=n.slice(s+1),n=n.slice(0,s)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}kv.prototype=$b.prototype={constructor:kv,on:function(t,e){var n=this._,r=TOe(t+"",n),s,i=-1,a=r.length;if(arguments.length<2){for(;++i0)for(var n=new Array(s),r=0,s,i;r=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),YR.hasOwnProperty(e)?{space:YR[e],local:t}:t}function _Oe(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===HO&&e.documentElement.namespaceURI===HO?e.createElement(t):e.createElementNS(n,t)}}function MOe(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function UU(t){var e=Hb(t);return(e.local?MOe:_Oe)(e)}function AOe(){}function qN(t){return t==null?AOe:function(){return this.querySelector(t)}}function ROe(t){typeof t!="function"&&(t=qN(t));for(var e=this._groups,n=e.length,r=new Array(n),s=0;s=N&&(N=j+1);!(E=S[N])&&++N=0;)(a=r[s])&&(i&&a.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(a,i),i=a);return this}function sje(t){t||(t=ije);function e(m,g){return m&&g?t(m.__data__,g.__data__):!m-!g}for(var n=this._groups,r=n.length,s=new Array(r),i=0;ie?1:t>=e?0:NaN}function aje(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function oje(){return Array.from(this)}function lje(){for(var t=this._groups,e=0,n=t.length;e1?this.each((e==null?yje:typeof e=="function"?wje:bje)(t,e,n??"")):hf(this.node(),t)}function hf(t,e){return t.style.getPropertyValue(e)||KU(t).getComputedStyle(t,null).getPropertyValue(e)}function kje(t){return function(){delete this[t]}}function Oje(t,e){return function(){this[t]=e}}function jje(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}function Nje(t,e){return arguments.length>1?this.each((e==null?kje:typeof e=="function"?jje:Oje)(t,e)):this.node()[t]}function ZU(t){return t.trim().split(/^|\s+/)}function $N(t){return t.classList||new JU(t)}function JU(t){this._node=t,this._names=ZU(t.getAttribute("class")||"")}JU.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function eW(t,e){for(var n=$N(t),r=-1,s=e.length;++r=0&&(n=e.slice(r+1),e=e.slice(0,r)),{type:e,name:n}})}function e6e(t){return function(){var e=this.__on;if(e){for(var n=0,r=-1,s=e.length,i;n()=>t;function QO(t,{sourceEvent:e,subject:n,target:r,identifier:s,active:i,x:a,y:l,dx:c,dy:d,dispatch:h}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:s,enumerable:!0,configurable:!0},active:{value:i,enumerable:!0,configurable:!0},x:{value:a,enumerable:!0,configurable:!0},y:{value:l,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:d,enumerable:!0,configurable:!0},_:{value:h}})}QO.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};function u6e(t){return!t.ctrlKey&&!t.button}function d6e(){return this.parentNode}function h6e(t,e){return e??{x:t.x,y:t.y}}function f6e(){return navigator.maxTouchPoints||"ontouchstart"in this}function m6e(){var t=u6e,e=d6e,n=h6e,r=f6e,s={},i=$b("start","drag","end"),a=0,l,c,d,h,m=0;function g(T){T.on("mousedown.drag",x).filter(r).on("touchstart.drag",S).on("touchmove.drag",k,c6e).on("touchend.drag touchcancel.drag",j).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function x(T,E){if(!(h||!t.call(this,T,E))){var _=N(this,e.call(this,T,E),T,E,"mouse");_&&(ma(T.view).on("mousemove.drag",y,gp).on("mouseup.drag",w,gp),sW(T.view),t5(T),d=!1,l=T.clientX,c=T.clientY,_("start",T))}}function y(T){if(Hh(T),!d){var E=T.clientX-l,_=T.clientY-c;d=E*E+_*_>m}s.mouse("drag",T)}function w(T){ma(T.view).on("mousemove.drag mouseup.drag",null),iW(T.view,d),Hh(T),s.mouse("end",T)}function S(T,E){if(t.call(this,T,E)){var _=T.changedTouches,M=e.call(this,T,E),I=_.length,P,L;for(P=0;P=0&&t._call.call(void 0,e),t=t._next;--ff}function KR(){md=(Oy=xp.now())+Qb,ff=u0=0;try{g6e()}finally{ff=0,v6e(),md=0}}function x6e(){var t=xp.now(),e=t-Oy;e>aW&&(Qb-=e,Oy=t)}function v6e(){for(var t,e=ky,n,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:ky=n);d0=t,VO(r)}function VO(t){if(!ff){u0&&(u0=clearTimeout(u0));var e=t-md;e>24?(t<1/0&&(u0=setTimeout(KR,t-xp.now()-Qb)),Jm&&(Jm=clearInterval(Jm))):(Jm||(Oy=xp.now(),Jm=setInterval(x6e,aW)),ff=1,oW(KR))}}function ZR(t,e,n){var r=new jy;return e=e==null?0:+e,r.restart(s=>{r.stop(),t(s+e)},e,n),r}var y6e=$b("start","end","cancel","interrupt"),b6e=[],cW=0,JR=1,UO=2,Ov=3,eD=4,WO=5,jv=6;function Vb(t,e,n,r,s,i){var a=t.__transition;if(!a)t.__transition={};else if(n in a)return;w6e(t,n,{name:e,index:r,group:s,on:y6e,tween:b6e,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:cW})}function QN(t,e){var n=io(t,e);if(n.state>cW)throw new Error("too late; already scheduled");return n}function Wo(t,e){var n=io(t,e);if(n.state>Ov)throw new Error("too late; already running");return n}function io(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function w6e(t,e,n){var r=t.__transition,s;r[e]=n,n.timer=lW(i,0,n.time);function i(d){n.state=JR,n.timer.restart(a,n.delay,n.time),n.delay<=d&&a(d-n.delay)}function a(d){var h,m,g,x;if(n.state!==JR)return c();for(h in r)if(x=r[h],x.name===n.name){if(x.state===Ov)return ZR(a);x.state===eD?(x.state=jv,x.timer.stop(),x.on.call("interrupt",t,t.__data__,x.index,x.group),delete r[h]):+hUO&&r.state=0&&(e=e.slice(0,n)),!e||e==="start"})}function K6e(t,e,n){var r,s,i=Y6e(e)?QN:Wo;return function(){var a=i(this,t),l=a.on;l!==r&&(s=(r=l).copy()).on(e,n),a.on=s}}function Z6e(t,e){var n=this._id;return arguments.length<2?io(this.node(),n).on.on(t):this.each(K6e(n,t,e))}function J6e(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}function eNe(){return this.on("end.remove",J6e(this._id))}function tNe(t){var e=this._name,n=this._id;typeof t!="function"&&(t=qN(t));for(var r=this._groups,s=r.length,i=new Array(s),a=0;a()=>t;function NNe(t,{sourceEvent:e,target:n,transform:r,dispatch:s}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:s}})}function Al(t,e,n){this.k=t,this.x=e,this.y=n}Al.prototype={constructor:Al,scale:function(t){return t===1?this:new Al(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new Al(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Bl=new Al(1,0,0);Al.prototype;function n5(t){t.stopImmediatePropagation()}function e0(t){t.preventDefault(),t.stopImmediatePropagation()}function CNe(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function TNe(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]):[[0,0],[t.clientWidth,t.clientHeight]]}function tD(){return this.__zoom||Bl}function ENe(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function _Ne(){return navigator.maxTouchPoints||"ontouchstart"in this}function MNe(t,e,n){var r=t.invertX(e[0][0])-n[0][0],s=t.invertX(e[1][0])-n[1][0],i=t.invertY(e[0][1])-n[0][1],a=t.invertY(e[1][1])-n[1][1];return t.translate(s>r?(r+s)/2:Math.min(0,r)||Math.max(0,s),a>i?(i+a)/2:Math.min(0,i)||Math.max(0,a))}function fW(){var t=CNe,e=TNe,n=MNe,r=ENe,s=_Ne,i=[0,1/0],a=[[-1/0,-1/0],[1/0,1/0]],l=250,c=kJ,d=$b("start","zoom","end"),h,m,g,x=500,y=150,w=0,S=10;function k(z){z.property("__zoom",tD).on("wheel.zoom",I,{passive:!1}).on("mousedown.zoom",P).on("dblclick.zoom",L).filter(s).on("touchstart.zoom",H).on("touchmove.zoom",U).on("touchend.zoom touchcancel.zoom",ee).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}k.transform=function(z,Q,B,X){var J=z.selection?z.selection():z;J.property("__zoom",tD),z!==J?E(z,Q,B,X):J.interrupt().each(function(){_(this,arguments).event(X).start().zoom(null,typeof Q=="function"?Q.apply(this,arguments):Q).end()})},k.scaleBy=function(z,Q,B,X){k.scaleTo(z,function(){var J=this.__zoom.k,G=typeof Q=="function"?Q.apply(this,arguments):Q;return J*G},B,X)},k.scaleTo=function(z,Q,B,X){k.transform(z,function(){var J=e.apply(this,arguments),G=this.__zoom,R=B==null?T(J):typeof B=="function"?B.apply(this,arguments):B,ie=G.invert(R),W=typeof Q=="function"?Q.apply(this,arguments):Q;return n(N(j(G,W),R,ie),J,a)},B,X)},k.translateBy=function(z,Q,B,X){k.transform(z,function(){return n(this.__zoom.translate(typeof Q=="function"?Q.apply(this,arguments):Q,typeof B=="function"?B.apply(this,arguments):B),e.apply(this,arguments),a)},null,X)},k.translateTo=function(z,Q,B,X,J){k.transform(z,function(){var G=e.apply(this,arguments),R=this.__zoom,ie=X==null?T(G):typeof X=="function"?X.apply(this,arguments):X;return n(Bl.translate(ie[0],ie[1]).scale(R.k).translate(typeof Q=="function"?-Q.apply(this,arguments):-Q,typeof B=="function"?-B.apply(this,arguments):-B),G,a)},X,J)};function j(z,Q){return Q=Math.max(i[0],Math.min(i[1],Q)),Q===z.k?z:new Al(Q,z.x,z.y)}function N(z,Q,B){var X=Q[0]-B[0]*z.k,J=Q[1]-B[1]*z.k;return X===z.x&&J===z.y?z:new Al(z.k,X,J)}function T(z){return[(+z[0][0]+ +z[1][0])/2,(+z[0][1]+ +z[1][1])/2]}function E(z,Q,B,X){z.on("start.zoom",function(){_(this,arguments).event(X).start()}).on("interrupt.zoom end.zoom",function(){_(this,arguments).event(X).end()}).tween("zoom",function(){var J=this,G=arguments,R=_(J,G).event(X),ie=e.apply(J,G),W=B==null?T(ie):typeof B=="function"?B.apply(J,G):B,q=Math.max(ie[1][0]-ie[0][0],ie[1][1]-ie[0][1]),V=J.__zoom,te=typeof Q=="function"?Q.apply(J,G):Q,ne=c(V.invert(W).concat(q/V.k),te.invert(W).concat(q/te.k));return function(K){if(K===1)K=te;else{var se=ne(K),re=q/se[2];K=new Al(re,W[0]-se[0]*re,W[1]-se[1]*re)}R.zoom(null,K)}})}function _(z,Q,B){return!B&&z.__zooming||new M(z,Q)}function M(z,Q){this.that=z,this.args=Q,this.active=0,this.sourceEvent=null,this.extent=e.apply(z,Q),this.taps=0}M.prototype={event:function(z){return z&&(this.sourceEvent=z),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(z,Q){return this.mouse&&z!=="mouse"&&(this.mouse[1]=Q.invert(this.mouse[0])),this.touch0&&z!=="touch"&&(this.touch0[1]=Q.invert(this.touch0[0])),this.touch1&&z!=="touch"&&(this.touch1[1]=Q.invert(this.touch1[0])),this.that.__zoom=Q,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(z){var Q=ma(this.that).datum();d.call(z,this.that,new NNe(z,{sourceEvent:this.sourceEvent,target:k,transform:this.that.__zoom,dispatch:d}),Q)}};function I(z,...Q){if(!t.apply(this,arguments))return;var B=_(this,Q).event(z),X=this.__zoom,J=Math.max(i[0],Math.min(i[1],X.k*Math.pow(2,r.apply(this,arguments)))),G=Ha(z);if(B.wheel)(B.mouse[0][0]!==G[0]||B.mouse[0][1]!==G[1])&&(B.mouse[1]=X.invert(B.mouse[0]=G)),clearTimeout(B.wheel);else{if(X.k===J)return;B.mouse=[G,X.invert(G)],Nv(this),B.start()}e0(z),B.wheel=setTimeout(R,y),B.zoom("mouse",n(N(j(X,J),B.mouse[0],B.mouse[1]),B.extent,a));function R(){B.wheel=null,B.end()}}function P(z,...Q){if(g||!t.apply(this,arguments))return;var B=z.currentTarget,X=_(this,Q,!0).event(z),J=ma(z.view).on("mousemove.zoom",W,!0).on("mouseup.zoom",q,!0),G=Ha(z,B),R=z.clientX,ie=z.clientY;sW(z.view),n5(z),X.mouse=[G,this.__zoom.invert(G)],Nv(this),X.start();function W(V){if(e0(V),!X.moved){var te=V.clientX-R,ne=V.clientY-ie;X.moved=te*te+ne*ne>w}X.event(V).zoom("mouse",n(N(X.that.__zoom,X.mouse[0]=Ha(V,B),X.mouse[1]),X.extent,a))}function q(V){J.on("mousemove.zoom mouseup.zoom",null),iW(V.view,X.moved),e0(V),X.event(V).end()}}function L(z,...Q){if(t.apply(this,arguments)){var B=this.__zoom,X=Ha(z.changedTouches?z.changedTouches[0]:z,this),J=B.invert(X),G=B.k*(z.shiftKey?.5:2),R=n(N(j(B,G),X,J),e.apply(this,Q),a);e0(z),l>0?ma(this).transition().duration(l).call(E,R,X,z):ma(this).call(k.transform,R,X,z)}}function H(z,...Q){if(t.apply(this,arguments)){var B=z.touches,X=B.length,J=_(this,Q,z.changedTouches.length===X).event(z),G,R,ie,W;for(n5(z),R=0;R"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:t=>`Node type "${t}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:t=>`The old edge with id=${t} does not exist.`,error009:t=>`Marker type "${t}" doesn't exist.`,error008:(t,e)=>`Couldn't create edge for ${t?"target":"source"} handle id: "${t?e.targetHandle:e.sourceHandle}", edge id: ${e.id}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:t=>`Edge type "${t}" not found. Using fallback type "default".`,error012:t=>`Node with id "${t}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`},mW=Wl.error001();function hr(t,e){const n=b.useContext(Ub);if(n===null)throw new Error(mW);return VU(n,t,e)}const ms=()=>{const t=b.useContext(Ub);if(t===null)throw new Error(mW);return b.useMemo(()=>({getState:t.getState,setState:t.setState,subscribe:t.subscribe,destroy:t.destroy}),[t])},RNe=t=>t.userSelectionActive?"none":"all";function Wb({position:t,children:e,className:n,style:r,...s}){const i=hr(RNe),a=`${t}`.split("-");return ae.createElement("div",{className:Is(["react-flow__panel",n,...a]),style:{...r,pointerEvents:i},...s},e)}function DNe({proOptions:t,position:e="bottom-right"}){return t?.hideAttribution?null:ae.createElement(Wb,{position:e,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://reactflow.dev/pro"},ae.createElement("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution"},"React Flow"))}const PNe=({x:t,y:e,label:n,labelStyle:r={},labelShowBg:s=!0,labelBgStyle:i={},labelBgPadding:a=[2,4],labelBgBorderRadius:l=2,children:c,className:d,...h})=>{const m=b.useRef(null),[g,x]=b.useState({x:0,y:0,width:0,height:0}),y=Is(["react-flow__edge-textwrapper",d]);return b.useEffect(()=>{if(m.current){const w=m.current.getBBox();x({x:w.x,y:w.y,width:w.width,height:w.height})}},[n]),typeof n>"u"||!n?null:ae.createElement("g",{transform:`translate(${t-g.width/2} ${e-g.height/2})`,className:y,visibility:g.width?"visible":"hidden",...h},s&&ae.createElement("rect",{width:g.width+2*a[0],x:-a[0],y:-a[1],height:g.height+2*a[1],className:"react-flow__edge-textbg",style:i,rx:l,ry:l}),ae.createElement("text",{className:"react-flow__edge-text",y:g.height/2,dy:"0.3em",ref:m,style:r},n),c)};var zNe=b.memo(PNe);const UN=t=>({width:t.offsetWidth,height:t.offsetHeight}),mf=(t,e=0,n=1)=>Math.min(Math.max(t,e),n),WN=(t={x:0,y:0},e)=>({x:mf(t.x,e[0][0],e[1][0]),y:mf(t.y,e[0][1],e[1][1])}),nD=(t,e,n)=>tn?-mf(Math.abs(t-n),1,50)/50:0,pW=(t,e)=>{const n=nD(t.x,35,e.width-35)*20,r=nD(t.y,35,e.height-35)*20;return[n,r]},gW=t=>t.getRootNode?.()||window?.document,xW=(t,e)=>({x:Math.min(t.x,e.x),y:Math.min(t.y,e.y),x2:Math.max(t.x2,e.x2),y2:Math.max(t.y2,e.y2)}),vp=({x:t,y:e,width:n,height:r})=>({x:t,y:e,x2:t+n,y2:e+r}),vW=({x:t,y:e,x2:n,y2:r})=>({x:t,y:e,width:n-t,height:r-e}),rD=t=>({...t.positionAbsolute||{x:0,y:0},width:t.width||0,height:t.height||0}),INe=(t,e)=>vW(xW(vp(t),vp(e))),GO=(t,e)=>{const n=Math.max(0,Math.min(t.x+t.width,e.x+e.width)-Math.max(t.x,e.x)),r=Math.max(0,Math.min(t.y+t.height,e.y+e.height)-Math.max(t.y,e.y));return Math.ceil(n*r)},LNe=t=>ka(t.width)&&ka(t.height)&&ka(t.x)&&ka(t.y),ka=t=>!isNaN(t)&&isFinite(t),Lr=Symbol.for("internals"),yW=["Enter"," ","Escape"],BNe=(t,e)=>{},FNe=t=>"nativeEvent"in t;function XO(t){const n=(FNe(t)?t.nativeEvent:t).composedPath?.()?.[0]||t.target;return["INPUT","SELECT","TEXTAREA"].includes(n?.nodeName)||n?.hasAttribute("contenteditable")||!!n?.closest(".nokey")}const bW=t=>"clientX"in t,$c=(t,e)=>{const n=bW(t),r=n?t.clientX:t.touches?.[0].clientX,s=n?t.clientY:t.touches?.[0].clientY;return{x:r-(e?.left??0),y:s-(e?.top??0)}},Ny=()=>typeof navigator<"u"&&navigator?.userAgent?.indexOf("Mac")>=0,gg=({id:t,path:e,labelX:n,labelY:r,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d,style:h,markerEnd:m,markerStart:g,interactionWidth:x=20})=>ae.createElement(ae.Fragment,null,ae.createElement("path",{id:t,style:h,d:e,fill:"none",className:"react-flow__edge-path",markerEnd:m,markerStart:g}),x&&ae.createElement("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:x,className:"react-flow__edge-interaction"}),s&&ka(n)&&ka(r)?ae.createElement(zNe,{x:n,y:r,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d}):null);gg.displayName="BaseEdge";function t0(t,e,n){return n===void 0?n:r=>{const s=e().edges.find(i=>i.id===t);s&&n(r,{...s})}}function wW({sourceX:t,sourceY:e,targetX:n,targetY:r}){const s=Math.abs(n-t)/2,i=n{const[S,k,j]=kW({sourceX:t,sourceY:e,sourcePosition:s,targetX:n,targetY:r,targetPosition:i});return ae.createElement(gg,{path:S,labelX:k,labelY:j,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:m,style:g,markerEnd:x,markerStart:y,interactionWidth:w})});GN.displayName="SimpleBezierEdge";const iD={[wt.Left]:{x:-1,y:0},[wt.Right]:{x:1,y:0},[wt.Top]:{x:0,y:-1},[wt.Bottom]:{x:0,y:1}},qNe=({source:t,sourcePosition:e=wt.Bottom,target:n})=>e===wt.Left||e===wt.Right?t.xMath.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2));function $Ne({source:t,sourcePosition:e=wt.Bottom,target:n,targetPosition:r=wt.Top,center:s,offset:i}){const a=iD[e],l=iD[r],c={x:t.x+a.x*i,y:t.y+a.y*i},d={x:n.x+l.x*i,y:n.y+l.y*i},h=qNe({source:c,sourcePosition:e,target:d}),m=h.x!==0?"x":"y",g=h[m];let x=[],y,w;const S={x:0,y:0},k={x:0,y:0},[j,N,T,E]=wW({sourceX:t.x,sourceY:t.y,targetX:n.x,targetY:n.y});if(a[m]*l[m]===-1){y=s.x??j,w=s.y??N;const M=[{x:y,y:c.y},{x:y,y:d.y}],I=[{x:c.x,y:w},{x:d.x,y:w}];a[m]===g?x=m==="x"?M:I:x=m==="x"?I:M}else{const M=[{x:c.x,y:d.y}],I=[{x:d.x,y:c.y}];if(m==="x"?x=a.x===g?I:M:x=a.y===g?M:I,e===r){const ee=Math.abs(t[m]-n[m]);if(ee<=i){const z=Math.min(i-1,i-ee);a[m]===g?S[m]=(c[m]>t[m]?-1:1)*z:k[m]=(d[m]>n[m]?-1:1)*z}}if(e!==r){const ee=m==="x"?"y":"x",z=a[m]===l[ee],Q=c[ee]>d[ee],B=c[ee]=U?(y=(P.x+L.x)/2,w=x[0].y):(y=x[0].x,w=(P.y+L.y)/2)}return[[t,{x:c.x+S.x,y:c.y+S.y},...x,{x:d.x+k.x,y:d.y+k.y},n],y,w,T,E]}function HNe(t,e,n,r){const s=Math.min(aD(t,e)/2,aD(e,n)/2,r),{x:i,y:a}=e;if(t.x===i&&i===n.x||t.y===a&&a===n.y)return`L${i} ${a}`;if(t.y===a){const d=t.x{let N="";return j>0&&j{const[k,j,N]=YO({sourceX:t,sourceY:e,sourcePosition:m,targetX:n,targetY:r,targetPosition:g,borderRadius:w?.borderRadius,offset:w?.offset});return ae.createElement(gg,{path:k,labelX:j,labelY:N,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d,style:h,markerEnd:x,markerStart:y,interactionWidth:S})});Gb.displayName="SmoothStepEdge";const XN=b.memo(t=>ae.createElement(Gb,{...t,pathOptions:b.useMemo(()=>({borderRadius:0,offset:t.pathOptions?.offset}),[t.pathOptions?.offset])}));XN.displayName="StepEdge";function QNe({sourceX:t,sourceY:e,targetX:n,targetY:r}){const[s,i,a,l]=wW({sourceX:t,sourceY:e,targetX:n,targetY:r});return[`M ${t},${e}L ${n},${r}`,s,i,a,l]}const YN=b.memo(({sourceX:t,sourceY:e,targetX:n,targetY:r,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d,style:h,markerEnd:m,markerStart:g,interactionWidth:x})=>{const[y,w,S]=QNe({sourceX:t,sourceY:e,targetX:n,targetY:r});return ae.createElement(gg,{path:y,labelX:w,labelY:S,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d,style:h,markerEnd:m,markerStart:g,interactionWidth:x})});YN.displayName="StraightEdge";function F1(t,e){return t>=0?.5*t:e*25*Math.sqrt(-t)}function oD({pos:t,x1:e,y1:n,x2:r,y2:s,c:i}){switch(t){case wt.Left:return[e-F1(e-r,i),n];case wt.Right:return[e+F1(r-e,i),n];case wt.Top:return[e,n-F1(n-s,i)];case wt.Bottom:return[e,n+F1(s-n,i)]}}function OW({sourceX:t,sourceY:e,sourcePosition:n=wt.Bottom,targetX:r,targetY:s,targetPosition:i=wt.Top,curvature:a=.25}){const[l,c]=oD({pos:n,x1:t,y1:e,x2:r,y2:s,c:a}),[d,h]=oD({pos:i,x1:r,y1:s,x2:t,y2:e,c:a}),[m,g,x,y]=SW({sourceX:t,sourceY:e,targetX:r,targetY:s,sourceControlX:l,sourceControlY:c,targetControlX:d,targetControlY:h});return[`M${t},${e} C${l},${c} ${d},${h} ${r},${s}`,m,g,x,y]}const Ty=b.memo(({sourceX:t,sourceY:e,targetX:n,targetY:r,sourcePosition:s=wt.Bottom,targetPosition:i=wt.Top,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:m,style:g,markerEnd:x,markerStart:y,pathOptions:w,interactionWidth:S})=>{const[k,j,N]=OW({sourceX:t,sourceY:e,sourcePosition:s,targetX:n,targetY:r,targetPosition:i,curvature:w?.curvature});return ae.createElement(gg,{path:k,labelX:j,labelY:N,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:m,style:g,markerEnd:x,markerStart:y,interactionWidth:S})});Ty.displayName="BezierEdge";const KN=b.createContext(null),VNe=KN.Provider;KN.Consumer;const UNe=()=>b.useContext(KN),WNe=t=>"id"in t&&"source"in t&&"target"in t,GNe=({source:t,sourceHandle:e,target:n,targetHandle:r})=>`reactflow__edge-${t}${e||""}-${n}${r||""}`,KO=(t,e)=>typeof t>"u"?"":typeof t=="string"?t:`${e?`${e}__`:""}${Object.keys(t).sort().map(r=>`${r}=${t[r]}`).join("&")}`,XNe=(t,e)=>e.some(n=>n.source===t.source&&n.target===t.target&&(n.sourceHandle===t.sourceHandle||!n.sourceHandle&&!t.sourceHandle)&&(n.targetHandle===t.targetHandle||!n.targetHandle&&!t.targetHandle)),YNe=(t,e)=>{if(!t.source||!t.target)return e;let n;return WNe(t)?n={...t}:n={...t,id:GNe(t)},XNe(n,e)?e:e.concat(n)},ZO=({x:t,y:e},[n,r,s],i,[a,l])=>{const c={x:(t-n)/s,y:(e-r)/s};return i?{x:a*Math.round(c.x/a),y:l*Math.round(c.y/l)}:c},jW=({x:t,y:e},[n,r,s])=>({x:t*s+n,y:e*s+r}),td=(t,e=[0,0])=>{if(!t)return{x:0,y:0,positionAbsolute:{x:0,y:0}};const n=(t.width??0)*e[0],r=(t.height??0)*e[1],s={x:t.position.x-n,y:t.position.y-r};return{...s,positionAbsolute:t.positionAbsolute?{x:t.positionAbsolute.x-n,y:t.positionAbsolute.y-r}:s}},Xb=(t,e=[0,0])=>{if(t.length===0)return{x:0,y:0,width:0,height:0};const n=t.reduce((r,s)=>{const{x:i,y:a}=td(s,e).positionAbsolute;return xW(r,vp({x:i,y:a,width:s.width||0,height:s.height||0}))},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return vW(n)},NW=(t,e,[n,r,s]=[0,0,1],i=!1,a=!1,l=[0,0])=>{const c={x:(e.x-n)/s,y:(e.y-r)/s,width:e.width/s,height:e.height/s},d=[];return t.forEach(h=>{const{width:m,height:g,selectable:x=!0,hidden:y=!1}=h;if(a&&!x||y)return!1;const{positionAbsolute:w}=td(h,l),S={x:w.x,y:w.y,width:m||0,height:g||0},k=GO(c,S),j=typeof m>"u"||typeof g>"u"||m===null||g===null,N=i&&k>0,T=(m||0)*(g||0);(j||N||k>=T||h.dragging)&&d.push(h)}),d},CW=(t,e)=>{const n=t.map(r=>r.id);return e.filter(r=>n.includes(r.source)||n.includes(r.target))},TW=(t,e,n,r,s,i=.1)=>{const a=e/(t.width*(1+i)),l=n/(t.height*(1+i)),c=Math.min(a,l),d=mf(c,r,s),h=t.x+t.width/2,m=t.y+t.height/2,g=e/2-h*d,x=n/2-m*d;return{x:g,y:x,zoom:d}},Lu=(t,e=0)=>t.transition().duration(e);function lD(t,e,n,r){return(e[n]||[]).reduce((s,i)=>(`${t.id}-${i.id}-${n}`!==r&&s.push({id:i.id||null,type:n,nodeId:t.id,x:(t.positionAbsolute?.x??0)+i.x+i.width/2,y:(t.positionAbsolute?.y??0)+i.y+i.height/2}),s),[])}function KNe(t,e,n,r,s,i){const{x:a,y:l}=$c(t),d=e.elementsFromPoint(a,l).find(y=>y.classList.contains("react-flow__handle"));if(d){const y=d.getAttribute("data-nodeid");if(y){const w=ZN(void 0,d),S=d.getAttribute("data-handleid"),k=i({nodeId:y,id:S,type:w});if(k){const j=s.find(N=>N.nodeId===y&&N.type===w&&N.id===S);return{handle:{id:S,type:w,nodeId:y,x:j?.x||n.x,y:j?.y||n.y},validHandleResult:k}}}}let h=[],m=1/0;if(s.forEach(y=>{const w=Math.sqrt((y.x-n.x)**2+(y.y-n.y)**2);if(w<=r){const S=i(y);w<=m&&(wy.isValid),x=h.some(({handle:y})=>y.type==="target");return h.find(({handle:y,validHandleResult:w})=>x?y.type==="target":g?w.isValid:!0)||h[0]}const ZNe={source:null,target:null,sourceHandle:null,targetHandle:null},EW=()=>({handleDomNode:null,isValid:!1,connection:ZNe,endHandle:null});function _W(t,e,n,r,s,i,a){const l=s==="target",c=a.querySelector(`.react-flow__handle[data-id="${t?.nodeId}-${t?.id}-${t?.type}"]`),d={...EW(),handleDomNode:c};if(c){const h=ZN(void 0,c),m=c.getAttribute("data-nodeid"),g=c.getAttribute("data-handleid"),x=c.classList.contains("connectable"),y=c.classList.contains("connectableend"),w={source:l?m:n,sourceHandle:l?g:r,target:l?n:m,targetHandle:l?r:g};d.connection=w,x&&y&&(e===pd.Strict?l&&h==="source"||!l&&h==="target":m!==n||g!==r)&&(d.endHandle={nodeId:m,handleId:g,type:h},d.isValid=i(w))}return d}function JNe({nodes:t,nodeId:e,handleId:n,handleType:r}){return t.reduce((s,i)=>{if(i[Lr]){const{handleBounds:a}=i[Lr];let l=[],c=[];a&&(l=lD(i,a,"source",`${e}-${n}-${r}`),c=lD(i,a,"target",`${e}-${n}-${r}`)),s.push(...l,...c)}return s},[])}function ZN(t,e){return t||(e?.classList.contains("target")?"target":e?.classList.contains("source")?"source":null)}function r5(t){t?.classList.remove("valid","connecting","react-flow__handle-valid","react-flow__handle-connecting")}function e7e(t,e){let n=null;return e?n="valid":t&&!e&&(n="invalid"),n}function MW({event:t,handleId:e,nodeId:n,onConnect:r,isTarget:s,getState:i,setState:a,isValidConnection:l,edgeUpdaterType:c,onReconnectEnd:d}){const h=gW(t.target),{connectionMode:m,domNode:g,autoPanOnConnect:x,connectionRadius:y,onConnectStart:w,panBy:S,getNodes:k,cancelConnection:j}=i();let N=0,T;const{x:E,y:_}=$c(t),M=h?.elementFromPoint(E,_),I=ZN(c,M),P=g?.getBoundingClientRect();if(!P||!I)return;let L,H=$c(t,P),U=!1,ee=null,z=!1,Q=null;const B=JNe({nodes:k(),nodeId:n,handleId:e,handleType:I}),X=()=>{if(!x)return;const[R,ie]=pW(H,P);S({x:R,y:ie}),N=requestAnimationFrame(X)};a({connectionPosition:H,connectionStatus:null,connectionNodeId:n,connectionHandleId:e,connectionHandleType:I,connectionStartHandle:{nodeId:n,handleId:e,type:I},connectionEndHandle:null}),w?.(t,{nodeId:n,handleId:e,handleType:I});function J(R){const{transform:ie}=i();H=$c(R,P);const{handle:W,validHandleResult:q}=KNe(R,h,ZO(H,ie,!1,[1,1]),y,B,V=>_W(V,m,n,e,s?"target":"source",l,h));if(T=W,U||(X(),U=!0),Q=q.handleDomNode,ee=q.connection,z=q.isValid,a({connectionPosition:T&&z?jW({x:T.x,y:T.y},ie):H,connectionStatus:e7e(!!T,z),connectionEndHandle:q.endHandle}),!T&&!z&&!Q)return r5(L);ee.source!==ee.target&&Q&&(r5(L),L=Q,Q.classList.add("connecting","react-flow__handle-connecting"),Q.classList.toggle("valid",z),Q.classList.toggle("react-flow__handle-valid",z))}function G(R){(T||Q)&&ee&&z&&r?.(ee),i().onConnectEnd?.(R),c&&d?.(R),r5(L),j(),cancelAnimationFrame(N),U=!1,z=!1,ee=null,Q=null,h.removeEventListener("mousemove",J),h.removeEventListener("mouseup",G),h.removeEventListener("touchmove",J),h.removeEventListener("touchend",G)}h.addEventListener("mousemove",J),h.addEventListener("mouseup",G),h.addEventListener("touchmove",J),h.addEventListener("touchend",G)}const cD=()=>!0,t7e=t=>({connectionStartHandle:t.connectionStartHandle,connectOnClick:t.connectOnClick,noPanClassName:t.noPanClassName}),n7e=(t,e,n)=>r=>{const{connectionStartHandle:s,connectionEndHandle:i,connectionClickStartHandle:a}=r;return{connecting:s?.nodeId===t&&s?.handleId===e&&s?.type===n||i?.nodeId===t&&i?.handleId===e&&i?.type===n,clickConnecting:a?.nodeId===t&&a?.handleId===e&&a?.type===n}},AW=b.forwardRef(({type:t="source",position:e=wt.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:s=!0,isConnectableEnd:i=!0,id:a,onConnect:l,children:c,className:d,onMouseDown:h,onTouchStart:m,...g},x)=>{const y=a||null,w=t==="target",S=ms(),k=UNe(),{connectOnClick:j,noPanClassName:N}=hr(t7e,Ss),{connecting:T,clickConnecting:E}=hr(n7e(k,y,t),Ss);k||S.getState().onError?.("010",Wl.error010());const _=P=>{const{defaultEdgeOptions:L,onConnect:H,hasDefaultEdges:U}=S.getState(),ee={...L,...P};if(U){const{edges:z,setEdges:Q}=S.getState();Q(YNe(ee,z))}H?.(ee),l?.(ee)},M=P=>{if(!k)return;const L=bW(P);s&&(L&&P.button===0||!L)&&MW({event:P,handleId:y,nodeId:k,onConnect:_,isTarget:w,getState:S.getState,setState:S.setState,isValidConnection:n||S.getState().isValidConnection||cD}),L?h?.(P):m?.(P)},I=P=>{const{onClickConnectStart:L,onClickConnectEnd:H,connectionClickStartHandle:U,connectionMode:ee,isValidConnection:z}=S.getState();if(!k||!U&&!s)return;if(!U){L?.(P,{nodeId:k,handleId:y,handleType:t}),S.setState({connectionClickStartHandle:{nodeId:k,type:t,handleId:y}});return}const Q=gW(P.target),B=n||z||cD,{connection:X,isValid:J}=_W({nodeId:k,id:y,type:t},ee,U.nodeId,U.handleId||null,U.type,B,Q);J&&_(X),H?.(P),S.setState({connectionClickStartHandle:null})};return ae.createElement("div",{"data-handleid":y,"data-nodeid":k,"data-handlepos":e,"data-id":`${k}-${y}-${t}`,className:Is(["react-flow__handle",`react-flow__handle-${e}`,"nodrag",N,d,{source:!w,target:w,connectable:r,connectablestart:s,connectableend:i,connecting:E,connectionindicator:r&&(s&&!T||i&&T)}]),onMouseDown:M,onTouchStart:M,onClick:j?I:void 0,ref:x,...g},c)});AW.displayName="Handle";var ru=b.memo(AW);const RW=({data:t,isConnectable:e,targetPosition:n=wt.Top,sourcePosition:r=wt.Bottom})=>ae.createElement(ae.Fragment,null,ae.createElement(ru,{type:"target",position:n,isConnectable:e}),t?.label,ae.createElement(ru,{type:"source",position:r,isConnectable:e}));RW.displayName="DefaultNode";var JO=b.memo(RW);const DW=({data:t,isConnectable:e,sourcePosition:n=wt.Bottom})=>ae.createElement(ae.Fragment,null,t?.label,ae.createElement(ru,{type:"source",position:n,isConnectable:e}));DW.displayName="InputNode";var PW=b.memo(DW);const zW=({data:t,isConnectable:e,targetPosition:n=wt.Top})=>ae.createElement(ae.Fragment,null,ae.createElement(ru,{type:"target",position:n,isConnectable:e}),t?.label);zW.displayName="OutputNode";var IW=b.memo(zW);const JN=()=>null;JN.displayName="GroupNode";const r7e=t=>({selectedNodes:t.getNodes().filter(e=>e.selected),selectedEdges:t.edges.filter(e=>e.selected).map(e=>({...e}))}),q1=t=>t.id;function s7e(t,e){return Ss(t.selectedNodes.map(q1),e.selectedNodes.map(q1))&&Ss(t.selectedEdges.map(q1),e.selectedEdges.map(q1))}const LW=b.memo(({onSelectionChange:t})=>{const e=ms(),{selectedNodes:n,selectedEdges:r}=hr(r7e,s7e);return b.useEffect(()=>{const s={nodes:n,edges:r};t?.(s),e.getState().onSelectionChange.forEach(i=>i(s))},[n,r,t]),null});LW.displayName="SelectionListener";const i7e=t=>!!t.onSelectionChange;function a7e({onSelectionChange:t}){const e=hr(i7e);return t||e?ae.createElement(LW,{onSelectionChange:t}):null}const o7e=t=>({setNodes:t.setNodes,setEdges:t.setEdges,setDefaultNodesAndEdges:t.setDefaultNodesAndEdges,setMinZoom:t.setMinZoom,setMaxZoom:t.setMaxZoom,setTranslateExtent:t.setTranslateExtent,setNodeExtent:t.setNodeExtent,reset:t.reset});function uh(t,e){b.useEffect(()=>{typeof t<"u"&&e(t)},[t])}function an(t,e,n){b.useEffect(()=>{typeof e<"u"&&n({[t]:e})},[e])}const l7e=({nodes:t,edges:e,defaultNodes:n,defaultEdges:r,onConnect:s,onConnectStart:i,onConnectEnd:a,onClickConnectStart:l,onClickConnectEnd:c,nodesDraggable:d,nodesConnectable:h,nodesFocusable:m,edgesFocusable:g,edgesUpdatable:x,elevateNodesOnSelect:y,minZoom:w,maxZoom:S,nodeExtent:k,onNodesChange:j,onEdgesChange:N,elementsSelectable:T,connectionMode:E,snapGrid:_,snapToGrid:M,translateExtent:I,connectOnClick:P,defaultEdgeOptions:L,fitView:H,fitViewOptions:U,onNodesDelete:ee,onEdgesDelete:z,onNodeDrag:Q,onNodeDragStart:B,onNodeDragStop:X,onSelectionDrag:J,onSelectionDragStart:G,onSelectionDragStop:R,noPanClassName:ie,nodeOrigin:W,rfId:q,autoPanOnConnect:V,autoPanOnNodeDrag:te,onError:ne,connectionRadius:K,isValidConnection:se,nodeDragThreshold:re})=>{const{setNodes:oe,setEdges:Te,setDefaultNodesAndEdges:We,setMinZoom:Ye,setMaxZoom:Je,setTranslateExtent:Oe,setNodeExtent:Ve,reset:Ue}=hr(o7e,Ss),He=ms();return b.useEffect(()=>{const Ot=r?.map(xt=>({...xt,...L}));return We(n,Ot),()=>{Ue()}},[]),an("defaultEdgeOptions",L,He.setState),an("connectionMode",E,He.setState),an("onConnect",s,He.setState),an("onConnectStart",i,He.setState),an("onConnectEnd",a,He.setState),an("onClickConnectStart",l,He.setState),an("onClickConnectEnd",c,He.setState),an("nodesDraggable",d,He.setState),an("nodesConnectable",h,He.setState),an("nodesFocusable",m,He.setState),an("edgesFocusable",g,He.setState),an("edgesUpdatable",x,He.setState),an("elementsSelectable",T,He.setState),an("elevateNodesOnSelect",y,He.setState),an("snapToGrid",M,He.setState),an("snapGrid",_,He.setState),an("onNodesChange",j,He.setState),an("onEdgesChange",N,He.setState),an("connectOnClick",P,He.setState),an("fitViewOnInit",H,He.setState),an("fitViewOnInitOptions",U,He.setState),an("onNodesDelete",ee,He.setState),an("onEdgesDelete",z,He.setState),an("onNodeDrag",Q,He.setState),an("onNodeDragStart",B,He.setState),an("onNodeDragStop",X,He.setState),an("onSelectionDrag",J,He.setState),an("onSelectionDragStart",G,He.setState),an("onSelectionDragStop",R,He.setState),an("noPanClassName",ie,He.setState),an("nodeOrigin",W,He.setState),an("rfId",q,He.setState),an("autoPanOnConnect",V,He.setState),an("autoPanOnNodeDrag",te,He.setState),an("onError",ne,He.setState),an("connectionRadius",K,He.setState),an("isValidConnection",se,He.setState),an("nodeDragThreshold",re,He.setState),uh(t,oe),uh(e,Te),uh(w,Ye),uh(S,Je),uh(I,Oe),uh(k,Ve),null},uD={display:"none"},c7e={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},BW="react-flow__node-desc",FW="react-flow__edge-desc",u7e="react-flow__aria-live",d7e=t=>t.ariaLiveMessage;function h7e({rfId:t}){const e=hr(d7e);return ae.createElement("div",{id:`${u7e}-${t}`,"aria-live":"assertive","aria-atomic":"true",style:c7e},e)}function f7e({rfId:t,disableKeyboardA11y:e}){return ae.createElement(ae.Fragment,null,ae.createElement("div",{id:`${BW}-${t}`,style:uD},"Press enter or space to select a node.",!e&&"You can then use the arrow keys to move the node around."," Press delete to remove it and escape to cancel."," "),ae.createElement("div",{id:`${FW}-${t}`,style:uD},"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."),!e&&ae.createElement(h7e,{rfId:t}))}var bp=(t=null,e={actInsideInputWithModifier:!0})=>{const[n,r]=b.useState(!1),s=b.useRef(!1),i=b.useRef(new Set([])),[a,l]=b.useMemo(()=>{if(t!==null){const d=(Array.isArray(t)?t:[t]).filter(m=>typeof m=="string").map(m=>m.split("+")),h=d.reduce((m,g)=>m.concat(...g),[]);return[d,h]}return[[],[]]},[t]);return b.useEffect(()=>{const c=typeof document<"u"?document:null,d=e?.target||c;if(t!==null){const h=x=>{if(s.current=x.ctrlKey||x.metaKey||x.shiftKey,(!s.current||s.current&&!e.actInsideInputWithModifier)&&XO(x))return!1;const w=hD(x.code,l);i.current.add(x[w]),dD(a,i.current,!1)&&(x.preventDefault(),r(!0))},m=x=>{if((!s.current||s.current&&!e.actInsideInputWithModifier)&&XO(x))return!1;const w=hD(x.code,l);dD(a,i.current,!0)?(r(!1),i.current.clear()):i.current.delete(x[w]),x.key==="Meta"&&i.current.clear(),s.current=!1},g=()=>{i.current.clear(),r(!1)};return d?.addEventListener("keydown",h),d?.addEventListener("keyup",m),window.addEventListener("blur",g),()=>{d?.removeEventListener("keydown",h),d?.removeEventListener("keyup",m),window.removeEventListener("blur",g)}}},[t,r]),n};function dD(t,e,n){return t.filter(r=>n||r.length===e.size).some(r=>r.every(s=>e.has(s)))}function hD(t,e){return e.includes(t)?"code":"key"}function qW(t,e,n,r){const s=t.parentNode||t.parentId;if(!s)return n;const i=e.get(s),a=td(i,r);return qW(i,e,{x:(n.x??0)+a.x,y:(n.y??0)+a.y,z:(i[Lr]?.z??0)>(n.z??0)?i[Lr]?.z??0:n.z??0},r)}function $W(t,e,n){t.forEach(r=>{const s=r.parentNode||r.parentId;if(s&&!t.has(s))throw new Error(`Parent node ${s} not found`);if(s||n?.[r.id]){const{x:i,y:a,z:l}=qW(r,t,{...r.position,z:r[Lr]?.z??0},e);r.positionAbsolute={x:i,y:a},r[Lr].z=l,n?.[r.id]&&(r[Lr].isParent=!0)}})}function s5(t,e,n,r){const s=new Map,i={},a=r?1e3:0;return t.forEach(l=>{const c=(ka(l.zIndex)?l.zIndex:0)+(l.selected?a:0),d=e.get(l.id),h={...l,positionAbsolute:{x:l.position.x,y:l.position.y}},m=l.parentNode||l.parentId;m&&(i[m]=!0);const g=d?.type&&d?.type!==l.type;Object.defineProperty(h,Lr,{enumerable:!1,value:{handleBounds:g?void 0:d?.[Lr]?.handleBounds,z:c}}),s.set(l.id,h)}),$W(s,n,i),s}function HW(t,e={}){const{getNodes:n,width:r,height:s,minZoom:i,maxZoom:a,d3Zoom:l,d3Selection:c,fitViewOnInitDone:d,fitViewOnInit:h,nodeOrigin:m}=t(),g=e.initial&&!d&&h;if(l&&c&&(g||!e.initial)){const y=n().filter(S=>{const k=e.includeHiddenNodes?S.width&&S.height:!S.hidden;return e.nodes?.length?k&&e.nodes.some(j=>j.id===S.id):k}),w=y.every(S=>S.width&&S.height);if(y.length>0&&w){const S=Xb(y,m),{x:k,y:j,zoom:N}=TW(S,r,s,e.minZoom??i,e.maxZoom??a,e.padding??.1),T=Bl.translate(k,j).scale(N);return typeof e.duration=="number"&&e.duration>0?l.transform(Lu(c,e.duration),T):l.transform(c,T),!0}}return!1}function m7e(t,e){return t.forEach(n=>{const r=e.get(n.id);r&&e.set(r.id,{...r,[Lr]:r[Lr],selected:n.selected})}),new Map(e)}function p7e(t,e){return e.map(n=>{const r=t.find(s=>s.id===n.id);return r&&(n.selected=r.selected),n})}function $1({changedNodes:t,changedEdges:e,get:n,set:r}){const{nodeInternals:s,edges:i,onNodesChange:a,onEdgesChange:l,hasDefaultNodes:c,hasDefaultEdges:d}=n();t?.length&&(c&&r({nodeInternals:m7e(t,s)}),a?.(t)),e?.length&&(d&&r({edges:p7e(e,i)}),l?.(e))}const dh=()=>{},g7e={zoomIn:dh,zoomOut:dh,zoomTo:dh,getZoom:()=>1,setViewport:dh,getViewport:()=>({x:0,y:0,zoom:1}),fitView:()=>!1,setCenter:dh,fitBounds:dh,project:t=>t,screenToFlowPosition:t=>t,flowToScreenPosition:t=>t,viewportInitialized:!1},x7e=t=>({d3Zoom:t.d3Zoom,d3Selection:t.d3Selection}),v7e=()=>{const t=ms(),{d3Zoom:e,d3Selection:n}=hr(x7e,Ss);return b.useMemo(()=>n&&e?{zoomIn:s=>e.scaleBy(Lu(n,s?.duration),1.2),zoomOut:s=>e.scaleBy(Lu(n,s?.duration),1/1.2),zoomTo:(s,i)=>e.scaleTo(Lu(n,i?.duration),s),getZoom:()=>t.getState().transform[2],setViewport:(s,i)=>{const[a,l,c]=t.getState().transform,d=Bl.translate(s.x??a,s.y??l).scale(s.zoom??c);e.transform(Lu(n,i?.duration),d)},getViewport:()=>{const[s,i,a]=t.getState().transform;return{x:s,y:i,zoom:a}},fitView:s=>HW(t.getState,s),setCenter:(s,i,a)=>{const{width:l,height:c,maxZoom:d}=t.getState(),h=typeof a?.zoom<"u"?a.zoom:d,m=l/2-s*h,g=c/2-i*h,x=Bl.translate(m,g).scale(h);e.transform(Lu(n,a?.duration),x)},fitBounds:(s,i)=>{const{width:a,height:l,minZoom:c,maxZoom:d}=t.getState(),{x:h,y:m,zoom:g}=TW(s,a,l,c,d,i?.padding??.1),x=Bl.translate(h,m).scale(g);e.transform(Lu(n,i?.duration),x)},project:s=>{const{transform:i,snapToGrid:a,snapGrid:l}=t.getState();return console.warn("[DEPRECATED] `project` is deprecated. Instead use `screenToFlowPosition`. There is no need to subtract the react flow bounds anymore! https://reactflow.dev/api-reference/types/react-flow-instance#screen-to-flow-position"),ZO(s,i,a,l)},screenToFlowPosition:s=>{const{transform:i,snapToGrid:a,snapGrid:l,domNode:c}=t.getState();if(!c)return s;const{x:d,y:h}=c.getBoundingClientRect(),m={x:s.x-d,y:s.y-h};return ZO(m,i,a,l)},flowToScreenPosition:s=>{const{transform:i,domNode:a}=t.getState();if(!a)return s;const{x:l,y:c}=a.getBoundingClientRect(),d=jW(s,i);return{x:d.x+l,y:d.y+c}},viewportInitialized:!0}:g7e,[e,n])};function e7(){const t=v7e(),e=ms(),n=b.useCallback(()=>e.getState().getNodes().map(w=>({...w})),[]),r=b.useCallback(w=>e.getState().nodeInternals.get(w),[]),s=b.useCallback(()=>{const{edges:w=[]}=e.getState();return w.map(S=>({...S}))},[]),i=b.useCallback(w=>{const{edges:S=[]}=e.getState();return S.find(k=>k.id===w)},[]),a=b.useCallback(w=>{const{getNodes:S,setNodes:k,hasDefaultNodes:j,onNodesChange:N}=e.getState(),T=S(),E=typeof w=="function"?w(T):w;if(j)k(E);else if(N){const _=E.length===0?T.map(M=>({type:"remove",id:M.id})):E.map(M=>({item:M,type:"reset"}));N(_)}},[]),l=b.useCallback(w=>{const{edges:S=[],setEdges:k,hasDefaultEdges:j,onEdgesChange:N}=e.getState(),T=typeof w=="function"?w(S):w;if(j)k(T);else if(N){const E=T.length===0?S.map(_=>({type:"remove",id:_.id})):T.map(_=>({item:_,type:"reset"}));N(E)}},[]),c=b.useCallback(w=>{const S=Array.isArray(w)?w:[w],{getNodes:k,setNodes:j,hasDefaultNodes:N,onNodesChange:T}=e.getState();if(N){const _=[...k(),...S];j(_)}else if(T){const E=S.map(_=>({item:_,type:"add"}));T(E)}},[]),d=b.useCallback(w=>{const S=Array.isArray(w)?w:[w],{edges:k=[],setEdges:j,hasDefaultEdges:N,onEdgesChange:T}=e.getState();if(N)j([...k,...S]);else if(T){const E=S.map(_=>({item:_,type:"add"}));T(E)}},[]),h=b.useCallback(()=>{const{getNodes:w,edges:S=[],transform:k}=e.getState(),[j,N,T]=k;return{nodes:w().map(E=>({...E})),edges:S.map(E=>({...E})),viewport:{x:j,y:N,zoom:T}}},[]),m=b.useCallback(({nodes:w,edges:S})=>{const{nodeInternals:k,getNodes:j,edges:N,hasDefaultNodes:T,hasDefaultEdges:E,onNodesDelete:_,onEdgesDelete:M,onNodesChange:I,onEdgesChange:P}=e.getState(),L=(w||[]).map(Q=>Q.id),H=(S||[]).map(Q=>Q.id),U=j().reduce((Q,B)=>{const X=B.parentNode||B.parentId,J=!L.includes(B.id)&&X&&Q.find(R=>R.id===X);return(typeof B.deletable=="boolean"?B.deletable:!0)&&(L.includes(B.id)||J)&&Q.push(B),Q},[]),ee=N.filter(Q=>typeof Q.deletable=="boolean"?Q.deletable:!0),z=ee.filter(Q=>H.includes(Q.id));if(U||z){const Q=CW(U,ee),B=[...z,...Q],X=B.reduce((J,G)=>(J.includes(G.id)||J.push(G.id),J),[]);if((E||T)&&(E&&e.setState({edges:N.filter(J=>!X.includes(J.id))}),T&&(U.forEach(J=>{k.delete(J.id)}),e.setState({nodeInternals:new Map(k)}))),X.length>0&&(M?.(B),P&&P(X.map(J=>({id:J,type:"remove"})))),U.length>0&&(_?.(U),I)){const J=U.map(G=>({id:G.id,type:"remove"}));I(J)}}},[]),g=b.useCallback(w=>{const S=LNe(w),k=S?null:e.getState().nodeInternals.get(w.id);return!S&&!k?[null,null,S]:[S?w:rD(k),k,S]},[]),x=b.useCallback((w,S=!0,k)=>{const[j,N,T]=g(w);return j?(k||e.getState().getNodes()).filter(E=>{if(!T&&(E.id===N.id||!E.positionAbsolute))return!1;const _=rD(E),M=GO(_,j);return S&&M>0||M>=j.width*j.height}):[]},[]),y=b.useCallback((w,S,k=!0)=>{const[j]=g(w);if(!j)return!1;const N=GO(j,S);return k&&N>0||N>=j.width*j.height},[]);return b.useMemo(()=>({...t,getNodes:n,getNode:r,getEdges:s,getEdge:i,setNodes:a,setEdges:l,addNodes:c,addEdges:d,toObject:h,deleteElements:m,getIntersectingNodes:x,isNodeIntersecting:y}),[t,n,r,s,i,a,l,c,d,h,m,x,y])}const y7e={actInsideInputWithModifier:!1};var b7e=({deleteKeyCode:t,multiSelectionKeyCode:e})=>{const n=ms(),{deleteElements:r}=e7(),s=bp(t,y7e),i=bp(e);b.useEffect(()=>{if(s){const{edges:a,getNodes:l}=n.getState(),c=l().filter(h=>h.selected),d=a.filter(h=>h.selected);r({nodes:c,edges:d}),n.setState({nodesSelectionActive:!1})}},[s]),b.useEffect(()=>{n.setState({multiSelectionActive:i})},[i])};function w7e(t){const e=ms();b.useEffect(()=>{let n;const r=()=>{if(!t.current)return;const s=UN(t.current);(s.height===0||s.width===0)&&e.getState().onError?.("004",Wl.error004()),e.setState({width:s.width||500,height:s.height||500})};return r(),window.addEventListener("resize",r),t.current&&(n=new ResizeObserver(()=>r()),n.observe(t.current)),()=>{window.removeEventListener("resize",r),n&&t.current&&n.unobserve(t.current)}},[])}const t7={position:"absolute",width:"100%",height:"100%",top:0,left:0},S7e=(t,e)=>t.x!==e.x||t.y!==e.y||t.zoom!==e.k,H1=t=>({x:t.x,y:t.y,zoom:t.k}),hh=(t,e)=>t.target.closest(`.${e}`),fD=(t,e)=>e===2&&Array.isArray(t)&&t.includes(2),mD=t=>{const e=t.ctrlKey&&Ny()?10:1;return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*e},k7e=t=>({d3Zoom:t.d3Zoom,d3Selection:t.d3Selection,d3ZoomHandler:t.d3ZoomHandler,userSelectionActive:t.userSelectionActive}),O7e=({onMove:t,onMoveStart:e,onMoveEnd:n,onPaneContextMenu:r,zoomOnScroll:s=!0,zoomOnPinch:i=!0,panOnScroll:a=!1,panOnScrollSpeed:l=.5,panOnScrollMode:c=Wu.Free,zoomOnDoubleClick:d=!0,elementsSelectable:h,panOnDrag:m=!0,defaultViewport:g,translateExtent:x,minZoom:y,maxZoom:w,zoomActivationKeyCode:S,preventScrolling:k=!0,children:j,noWheelClassName:N,noPanClassName:T})=>{const E=b.useRef(),_=ms(),M=b.useRef(!1),I=b.useRef(!1),P=b.useRef(null),L=b.useRef({x:0,y:0,zoom:0}),{d3Zoom:H,d3Selection:U,d3ZoomHandler:ee,userSelectionActive:z}=hr(k7e,Ss),Q=bp(S),B=b.useRef(0),X=b.useRef(!1),J=b.useRef();return w7e(P),b.useEffect(()=>{if(P.current){const G=P.current.getBoundingClientRect(),R=fW().scaleExtent([y,w]).translateExtent(x),ie=ma(P.current).call(R),W=Bl.translate(g.x,g.y).scale(mf(g.zoom,y,w)),q=[[0,0],[G.width,G.height]],V=R.constrain()(W,q,x);R.transform(ie,V),R.wheelDelta(mD),_.setState({d3Zoom:R,d3Selection:ie,d3ZoomHandler:ie.on("wheel.zoom"),transform:[V.x,V.y,V.k],domNode:P.current.closest(".react-flow")})}},[]),b.useEffect(()=>{U&&H&&(a&&!Q&&!z?U.on("wheel.zoom",G=>{if(hh(G,N))return!1;G.preventDefault(),G.stopImmediatePropagation();const R=U.property("__zoom").k||1;if(G.ctrlKey&&i){const se=Ha(G),re=mD(G),oe=R*Math.pow(2,re);H.scaleTo(U,oe,se,G);return}const ie=G.deltaMode===1?20:1;let W=c===Wu.Vertical?0:G.deltaX*ie,q=c===Wu.Horizontal?0:G.deltaY*ie;!Ny()&&G.shiftKey&&c!==Wu.Vertical&&(W=G.deltaY*ie,q=0),H.translateBy(U,-(W/R)*l,-(q/R)*l,{internal:!0});const V=H1(U.property("__zoom")),{onViewportChangeStart:te,onViewportChange:ne,onViewportChangeEnd:K}=_.getState();clearTimeout(J.current),X.current||(X.current=!0,e?.(G,V),te?.(V)),X.current&&(t?.(G,V),ne?.(V),J.current=setTimeout(()=>{n?.(G,V),K?.(V),X.current=!1},150))},{passive:!1}):typeof ee<"u"&&U.on("wheel.zoom",function(G,R){if(!k&&G.type==="wheel"&&!G.ctrlKey||hh(G,N))return null;G.preventDefault(),ee.call(this,G,R)},{passive:!1}))},[z,a,c,U,H,ee,Q,i,k,N,e,t,n]),b.useEffect(()=>{H&&H.on("start",G=>{if(!G.sourceEvent||G.sourceEvent.internal)return null;B.current=G.sourceEvent?.button;const{onViewportChangeStart:R}=_.getState(),ie=H1(G.transform);M.current=!0,L.current=ie,G.sourceEvent?.type==="mousedown"&&_.setState({paneDragging:!0}),R?.(ie),e?.(G.sourceEvent,ie)})},[H,e]),b.useEffect(()=>{H&&(z&&!M.current?H.on("zoom",null):z||H.on("zoom",G=>{const{onViewportChange:R}=_.getState();if(_.setState({transform:[G.transform.x,G.transform.y,G.transform.k]}),I.current=!!(r&&fD(m,B.current??0)),(t||R)&&!G.sourceEvent?.internal){const ie=H1(G.transform);R?.(ie),t?.(G.sourceEvent,ie)}}))},[z,H,t,m,r]),b.useEffect(()=>{H&&H.on("end",G=>{if(!G.sourceEvent||G.sourceEvent.internal)return null;const{onViewportChangeEnd:R}=_.getState();if(M.current=!1,_.setState({paneDragging:!1}),r&&fD(m,B.current??0)&&!I.current&&r(G.sourceEvent),I.current=!1,(n||R)&&S7e(L.current,G.transform)){const ie=H1(G.transform);L.current=ie,clearTimeout(E.current),E.current=setTimeout(()=>{R?.(ie),n?.(G.sourceEvent,ie)},a?150:0)}})},[H,a,m,n,r]),b.useEffect(()=>{H&&H.filter(G=>{const R=Q||s,ie=i&&G.ctrlKey;if((m===!0||Array.isArray(m)&&m.includes(1))&&G.button===1&&G.type==="mousedown"&&(hh(G,"react-flow__node")||hh(G,"react-flow__edge")))return!0;if(!m&&!R&&!a&&!d&&!i||z||!d&&G.type==="dblclick"||hh(G,N)&&G.type==="wheel"||hh(G,T)&&(G.type!=="wheel"||a&&G.type==="wheel"&&!Q)||!i&&G.ctrlKey&&G.type==="wheel"||!R&&!a&&!ie&&G.type==="wheel"||!m&&(G.type==="mousedown"||G.type==="touchstart")||Array.isArray(m)&&!m.includes(G.button)&&G.type==="mousedown")return!1;const W=Array.isArray(m)&&m.includes(G.button)||!G.button||G.button<=1;return(!G.ctrlKey||G.type==="wheel")&&W})},[z,H,s,i,a,d,m,h,Q]),ae.createElement("div",{className:"react-flow__renderer",ref:P,style:t7},j)},j7e=t=>({userSelectionActive:t.userSelectionActive,userSelectionRect:t.userSelectionRect});function N7e(){const{userSelectionActive:t,userSelectionRect:e}=hr(j7e,Ss);return t&&e?ae.createElement("div",{className:"react-flow__selection react-flow__container",style:{width:e.width,height:e.height,transform:`translate(${e.x}px, ${e.y}px)`}}):null}function pD(t,e){const n=e.parentNode||e.parentId,r=t.find(s=>s.id===n);if(r){const s=e.position.x+e.width-r.width,i=e.position.y+e.height-r.height;if(s>0||i>0||e.position.x<0||e.position.y<0){if(r.style={...r.style},r.style.width=r.style.width??r.width,r.style.height=r.style.height??r.height,s>0&&(r.style.width+=s),i>0&&(r.style.height+=i),e.position.x<0){const a=Math.abs(e.position.x);r.position.x=r.position.x-a,r.style.width+=a,e.position.x=0}if(e.position.y<0){const a=Math.abs(e.position.y);r.position.y=r.position.y-a,r.style.height+=a,e.position.y=0}r.width=r.style.width,r.height=r.style.height}}}function QW(t,e){if(t.some(r=>r.type==="reset"))return t.filter(r=>r.type==="reset").map(r=>r.item);const n=t.filter(r=>r.type==="add").map(r=>r.item);return e.reduce((r,s)=>{const i=t.filter(l=>l.id===s.id);if(i.length===0)return r.push(s),r;const a={...s};for(const l of i)if(l)switch(l.type){case"select":{a.selected=l.selected;break}case"position":{typeof l.position<"u"&&(a.position=l.position),typeof l.positionAbsolute<"u"&&(a.positionAbsolute=l.positionAbsolute),typeof l.dragging<"u"&&(a.dragging=l.dragging),a.expandParent&&pD(r,a);break}case"dimensions":{typeof l.dimensions<"u"&&(a.width=l.dimensions.width,a.height=l.dimensions.height),typeof l.updateStyle<"u"&&(a.style={...a.style||{},...l.dimensions}),typeof l.resizing=="boolean"&&(a.resizing=l.resizing),a.expandParent&&pD(r,a);break}case"remove":return r}return r.push(a),r},n)}function VW(t,e){return QW(t,e)}function C7e(t,e){return QW(t,e)}const Dc=(t,e)=>({id:t,type:"select",selected:e});function Eh(t,e){return t.reduce((n,r)=>{const s=e.includes(r.id);return!r.selected&&s?(r.selected=!0,n.push(Dc(r.id,!0))):r.selected&&!s&&(r.selected=!1,n.push(Dc(r.id,!1))),n},[])}const i5=(t,e)=>n=>{n.target===e.current&&t?.(n)},T7e=t=>({userSelectionActive:t.userSelectionActive,elementsSelectable:t.elementsSelectable,dragging:t.paneDragging}),UW=b.memo(({isSelecting:t,selectionMode:e=yp.Full,panOnDrag:n,onSelectionStart:r,onSelectionEnd:s,onPaneClick:i,onPaneContextMenu:a,onPaneScroll:l,onPaneMouseEnter:c,onPaneMouseMove:d,onPaneMouseLeave:h,children:m})=>{const g=b.useRef(null),x=ms(),y=b.useRef(0),w=b.useRef(0),S=b.useRef(),{userSelectionActive:k,elementsSelectable:j,dragging:N}=hr(T7e,Ss),T=()=>{x.setState({userSelectionActive:!1,userSelectionRect:null}),y.current=0,w.current=0},E=ee=>{i?.(ee),x.getState().resetSelectedElements(),x.setState({nodesSelectionActive:!1})},_=ee=>{if(Array.isArray(n)&&n?.includes(2)){ee.preventDefault();return}a?.(ee)},M=l?ee=>l(ee):void 0,I=ee=>{const{resetSelectedElements:z,domNode:Q}=x.getState();if(S.current=Q?.getBoundingClientRect(),!j||!t||ee.button!==0||ee.target!==g.current||!S.current)return;const{x:B,y:X}=$c(ee,S.current);z(),x.setState({userSelectionRect:{width:0,height:0,startX:B,startY:X,x:B,y:X}}),r?.(ee)},P=ee=>{const{userSelectionRect:z,nodeInternals:Q,edges:B,transform:X,onNodesChange:J,onEdgesChange:G,nodeOrigin:R,getNodes:ie}=x.getState();if(!t||!S.current||!z)return;x.setState({userSelectionActive:!0,nodesSelectionActive:!1});const W=$c(ee,S.current),q=z.startX??0,V=z.startY??0,te={...z,x:W.xoe.id),re=K.map(oe=>oe.id);if(y.current!==re.length){y.current=re.length;const oe=Eh(ne,re);oe.length&&J?.(oe)}if(w.current!==se.length){w.current=se.length;const oe=Eh(B,se);oe.length&&G?.(oe)}x.setState({userSelectionRect:te})},L=ee=>{if(ee.button!==0)return;const{userSelectionRect:z}=x.getState();!k&&z&&ee.target===g.current&&E?.(ee),x.setState({nodesSelectionActive:y.current>0}),T(),s?.(ee)},H=ee=>{k&&(x.setState({nodesSelectionActive:y.current>0}),s?.(ee)),T()},U=j&&(t||k);return ae.createElement("div",{className:Is(["react-flow__pane",{dragging:N,selection:t}]),onClick:U?void 0:i5(E,g),onContextMenu:i5(_,g),onWheel:i5(M,g),onMouseEnter:U?void 0:c,onMouseDown:U?I:void 0,onMouseMove:U?P:d,onMouseUp:U?L:void 0,onMouseLeave:U?H:h,ref:g,style:t7},m,ae.createElement(N7e,null))});UW.displayName="Pane";function WW(t,e){const n=t.parentNode||t.parentId;if(!n)return!1;const r=e.get(n);return r?r.selected?!0:WW(r,e):!1}function gD(t,e,n){let r=t;do{if(r?.matches(e))return!0;if(r===n.current)return!1;r=r.parentElement}while(r);return!1}function E7e(t,e,n,r){return Array.from(t.values()).filter(s=>(s.selected||s.id===r)&&(!s.parentNode||s.parentId||!WW(s,t))&&(s.draggable||e&&typeof s.draggable>"u")).map(s=>({id:s.id,position:s.position||{x:0,y:0},positionAbsolute:s.positionAbsolute||{x:0,y:0},distance:{x:n.x-(s.positionAbsolute?.x??0),y:n.y-(s.positionAbsolute?.y??0)},delta:{x:0,y:0},extent:s.extent,parentNode:s.parentNode||s.parentId,parentId:s.parentNode||s.parentId,width:s.width,height:s.height,expandParent:s.expandParent}))}function _7e(t,e){return!e||e==="parent"?e:[e[0],[e[1][0]-(t.width||0),e[1][1]-(t.height||0)]]}function GW(t,e,n,r,s=[0,0],i){const a=_7e(t,t.extent||r);let l=a;const c=t.parentNode||t.parentId;if(t.extent==="parent"&&!t.expandParent)if(c&&t.width&&t.height){const m=n.get(c),{x:g,y:x}=td(m,s).positionAbsolute;l=m&&ka(g)&&ka(x)&&ka(m.width)&&ka(m.height)?[[g+t.width*s[0],x+t.height*s[1]],[g+m.width-t.width+t.width*s[0],x+m.height-t.height+t.height*s[1]]]:l}else i?.("005",Wl.error005()),l=a;else if(t.extent&&c&&t.extent!=="parent"){const m=n.get(c),{x:g,y:x}=td(m,s).positionAbsolute;l=[[t.extent[0][0]+g,t.extent[0][1]+x],[t.extent[1][0]+g,t.extent[1][1]+x]]}let d={x:0,y:0};if(c){const m=n.get(c);d=td(m,s).positionAbsolute}const h=l&&l!=="parent"?WN(e,l):e;return{position:{x:h.x-d.x,y:h.y-d.y},positionAbsolute:h}}function a5({nodeId:t,dragItems:e,nodeInternals:n}){const r=e.map(s=>({...n.get(s.id),position:s.position,positionAbsolute:s.positionAbsolute}));return[t?r.find(s=>s.id===t):r[0],r]}const xD=(t,e,n,r)=>{const s=e.querySelectorAll(t);if(!s||!s.length)return null;const i=Array.from(s),a=e.getBoundingClientRect(),l={x:a.width*r[0],y:a.height*r[1]};return i.map(c=>{const d=c.getBoundingClientRect();return{id:c.getAttribute("data-handleid"),position:c.getAttribute("data-handlepos"),x:(d.left-a.left-l.x)/n,y:(d.top-a.top-l.y)/n,...UN(c)}})};function n0(t,e,n){return n===void 0?n:r=>{const s=e().nodeInternals.get(t);s&&n(r,{...s})}}function ej({id:t,store:e,unselect:n=!1,nodeRef:r}){const{addSelectedNodes:s,unselectNodesAndEdges:i,multiSelectionActive:a,nodeInternals:l,onError:c}=e.getState(),d=l.get(t);if(!d){c?.("012",Wl.error012(t));return}e.setState({nodesSelectionActive:!1}),d.selected?(n||d.selected&&a)&&(i({nodes:[d],edges:[]}),requestAnimationFrame(()=>r?.current?.blur())):s([t])}function M7e(){const t=ms();return b.useCallback(({sourceEvent:n})=>{const{transform:r,snapGrid:s,snapToGrid:i}=t.getState(),a=n.touches?n.touches[0].clientX:n.clientX,l=n.touches?n.touches[0].clientY:n.clientY,c={x:(a-r[0])/r[2],y:(l-r[1])/r[2]};return{xSnapped:i?s[0]*Math.round(c.x/s[0]):c.x,ySnapped:i?s[1]*Math.round(c.y/s[1]):c.y,...c}},[])}function o5(t){return(e,n,r)=>t?.(e,r)}function XW({nodeRef:t,disabled:e=!1,noDragClassName:n,handleSelector:r,nodeId:s,isSelectable:i,selectNodesOnDrag:a}){const l=ms(),[c,d]=b.useState(!1),h=b.useRef([]),m=b.useRef({x:null,y:null}),g=b.useRef(0),x=b.useRef(null),y=b.useRef({x:0,y:0}),w=b.useRef(null),S=b.useRef(!1),k=b.useRef(!1),j=b.useRef(!1),N=M7e();return b.useEffect(()=>{if(t?.current){const T=ma(t.current),E=({x:I,y:P})=>{const{nodeInternals:L,onNodeDrag:H,onSelectionDrag:U,updateNodePositions:ee,nodeExtent:z,snapGrid:Q,snapToGrid:B,nodeOrigin:X,onError:J}=l.getState();m.current={x:I,y:P};let G=!1,R={x:0,y:0,x2:0,y2:0};if(h.current.length>1&&z){const W=Xb(h.current,X);R=vp(W)}if(h.current=h.current.map(W=>{const q={x:I-W.distance.x,y:P-W.distance.y};B&&(q.x=Q[0]*Math.round(q.x/Q[0]),q.y=Q[1]*Math.round(q.y/Q[1]));const V=[[z[0][0],z[0][1]],[z[1][0],z[1][1]]];h.current.length>1&&z&&!W.extent&&(V[0][0]=W.positionAbsolute.x-R.x+z[0][0],V[1][0]=W.positionAbsolute.x+(W.width??0)-R.x2+z[1][0],V[0][1]=W.positionAbsolute.y-R.y+z[0][1],V[1][1]=W.positionAbsolute.y+(W.height??0)-R.y2+z[1][1]);const te=GW(W,q,L,V,X,J);return G=G||W.position.x!==te.position.x||W.position.y!==te.position.y,W.position=te.position,W.positionAbsolute=te.positionAbsolute,W}),!G)return;ee(h.current,!0,!0),d(!0);const ie=s?H:o5(U);if(ie&&w.current){const[W,q]=a5({nodeId:s,dragItems:h.current,nodeInternals:L});ie(w.current,W,q)}},_=()=>{if(!x.current)return;const[I,P]=pW(y.current,x.current);if(I!==0||P!==0){const{transform:L,panBy:H}=l.getState();m.current.x=(m.current.x??0)-I/L[2],m.current.y=(m.current.y??0)-P/L[2],H({x:I,y:P})&&E(m.current)}g.current=requestAnimationFrame(_)},M=I=>{const{nodeInternals:P,multiSelectionActive:L,nodesDraggable:H,unselectNodesAndEdges:U,onNodeDragStart:ee,onSelectionDragStart:z}=l.getState();k.current=!0;const Q=s?ee:o5(z);(!a||!i)&&!L&&s&&(P.get(s)?.selected||U()),s&&i&&a&&ej({id:s,store:l,nodeRef:t});const B=N(I);if(m.current=B,h.current=E7e(P,H,B,s),Q&&h.current){const[X,J]=a5({nodeId:s,dragItems:h.current,nodeInternals:P});Q(I.sourceEvent,X,J)}};if(e)T.on(".drag",null);else{const I=m6e().on("start",P=>{const{domNode:L,nodeDragThreshold:H}=l.getState();H===0&&M(P),j.current=!1;const U=N(P);m.current=U,x.current=L?.getBoundingClientRect()||null,y.current=$c(P.sourceEvent,x.current)}).on("drag",P=>{const L=N(P),{autoPanOnNodeDrag:H,nodeDragThreshold:U}=l.getState();if(P.sourceEvent.type==="touchmove"&&P.sourceEvent.touches.length>1&&(j.current=!0),!j.current){if(!S.current&&k.current&&H&&(S.current=!0,_()),!k.current){const ee=L.xSnapped-(m?.current?.x??0),z=L.ySnapped-(m?.current?.y??0);Math.sqrt(ee*ee+z*z)>U&&M(P)}(m.current.x!==L.xSnapped||m.current.y!==L.ySnapped)&&h.current&&k.current&&(w.current=P.sourceEvent,y.current=$c(P.sourceEvent,x.current),E(L))}}).on("end",P=>{if(!(!k.current||j.current)&&(d(!1),S.current=!1,k.current=!1,cancelAnimationFrame(g.current),h.current)){const{updateNodePositions:L,nodeInternals:H,onNodeDragStop:U,onSelectionDragStop:ee}=l.getState(),z=s?U:o5(ee);if(L(h.current,!1,!1),z){const[Q,B]=a5({nodeId:s,dragItems:h.current,nodeInternals:H});z(P.sourceEvent,Q,B)}}}).filter(P=>{const L=P.target;return!P.button&&(!n||!gD(L,`.${n}`,t))&&(!r||gD(L,r,t))});return T.call(I),()=>{T.on(".drag",null)}}}},[t,e,n,r,i,l,s,a,N]),c}function YW(){const t=ms();return b.useCallback(n=>{const{nodeInternals:r,nodeExtent:s,updateNodePositions:i,getNodes:a,snapToGrid:l,snapGrid:c,onError:d,nodesDraggable:h}=t.getState(),m=a().filter(j=>j.selected&&(j.draggable||h&&typeof j.draggable>"u")),g=l?c[0]:5,x=l?c[1]:5,y=n.isShiftPressed?4:1,w=n.x*g*y,S=n.y*x*y,k=m.map(j=>{if(j.positionAbsolute){const N={x:j.positionAbsolute.x+w,y:j.positionAbsolute.y+S};l&&(N.x=c[0]*Math.round(N.x/c[0]),N.y=c[1]*Math.round(N.y/c[1]));const{positionAbsolute:T,position:E}=GW(j,N,r,s,void 0,d);j.position=E,j.positionAbsolute=T}return j});i(k,!0,!1)},[])}const Qh={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}};var r0=t=>{const e=({id:n,type:r,data:s,xPos:i,yPos:a,xPosOrigin:l,yPosOrigin:c,selected:d,onClick:h,onMouseEnter:m,onMouseMove:g,onMouseLeave:x,onContextMenu:y,onDoubleClick:w,style:S,className:k,isDraggable:j,isSelectable:N,isConnectable:T,isFocusable:E,selectNodesOnDrag:_,sourcePosition:M,targetPosition:I,hidden:P,resizeObserver:L,dragHandle:H,zIndex:U,isParent:ee,noDragClassName:z,noPanClassName:Q,initialized:B,disableKeyboardA11y:X,ariaLabel:J,rfId:G,hasHandleBounds:R})=>{const ie=ms(),W=b.useRef(null),q=b.useRef(null),V=b.useRef(M),te=b.useRef(I),ne=b.useRef(r),K=N||j||h||m||g||x,se=YW(),re=n0(n,ie.getState,m),oe=n0(n,ie.getState,g),Te=n0(n,ie.getState,x),We=n0(n,ie.getState,y),Ye=n0(n,ie.getState,w),Je=Ue=>{const{nodeDragThreshold:He}=ie.getState();if(N&&(!_||!j||He>0)&&ej({id:n,store:ie,nodeRef:W}),h){const Ot=ie.getState().nodeInternals.get(n);Ot&&h(Ue,{...Ot})}},Oe=Ue=>{if(!XO(Ue)&&!X)if(yW.includes(Ue.key)&&N){const He=Ue.key==="Escape";ej({id:n,store:ie,unselect:He,nodeRef:W})}else j&&d&&Object.prototype.hasOwnProperty.call(Qh,Ue.key)&&(ie.setState({ariaLiveMessage:`Moved selected node ${Ue.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~i}, y: ${~~a}`}),se({x:Qh[Ue.key].x,y:Qh[Ue.key].y,isShiftPressed:Ue.shiftKey}))};b.useEffect(()=>()=>{q.current&&(L?.unobserve(q.current),q.current=null)},[]),b.useEffect(()=>{if(W.current&&!P){const Ue=W.current;(!B||!R||q.current!==Ue)&&(q.current&&L?.unobserve(q.current),L?.observe(Ue),q.current=Ue)}},[P,B,R]),b.useEffect(()=>{const Ue=ne.current!==r,He=V.current!==M,Ot=te.current!==I;W.current&&(Ue||He||Ot)&&(Ue&&(ne.current=r),He&&(V.current=M),Ot&&(te.current=I),ie.getState().updateNodeDimensions([{id:n,nodeElement:W.current,forceUpdate:!0}]))},[n,r,M,I]);const Ve=XW({nodeRef:W,disabled:P||!j,noDragClassName:z,handleSelector:H,nodeId:n,isSelectable:N,selectNodesOnDrag:_});return P?null:ae.createElement("div",{className:Is(["react-flow__node",`react-flow__node-${r}`,{[Q]:j},k,{selected:d,selectable:N,parent:ee,dragging:Ve}]),ref:W,style:{zIndex:U,transform:`translate(${l}px,${c}px)`,pointerEvents:K?"all":"none",visibility:B?"visible":"hidden",...S},"data-id":n,"data-testid":`rf__node-${n}`,onMouseEnter:re,onMouseMove:oe,onMouseLeave:Te,onContextMenu:We,onClick:Je,onDoubleClick:Ye,onKeyDown:E?Oe:void 0,tabIndex:E?0:void 0,role:E?"button":void 0,"aria-describedby":X?void 0:`${BW}-${G}`,"aria-label":J},ae.createElement(VNe,{value:n},ae.createElement(t,{id:n,data:s,type:r,xPos:i,yPos:a,selected:d,isConnectable:T,sourcePosition:M,targetPosition:I,dragging:Ve,dragHandle:H,zIndex:U})))};return e.displayName="NodeWrapper",b.memo(e)};const A7e=t=>{const e=t.getNodes().filter(n=>n.selected);return{...Xb(e,t.nodeOrigin),transformString:`translate(${t.transform[0]}px,${t.transform[1]}px) scale(${t.transform[2]})`,userSelectionActive:t.userSelectionActive}};function R7e({onSelectionContextMenu:t,noPanClassName:e,disableKeyboardA11y:n}){const r=ms(),{width:s,height:i,x:a,y:l,transformString:c,userSelectionActive:d}=hr(A7e,Ss),h=YW(),m=b.useRef(null);if(b.useEffect(()=>{n||m.current?.focus({preventScroll:!0})},[n]),XW({nodeRef:m}),d||!s||!i)return null;const g=t?y=>{const w=r.getState().getNodes().filter(S=>S.selected);t(y,w)}:void 0,x=y=>{Object.prototype.hasOwnProperty.call(Qh,y.key)&&h({x:Qh[y.key].x,y:Qh[y.key].y,isShiftPressed:y.shiftKey})};return ae.createElement("div",{className:Is(["react-flow__nodesselection","react-flow__container",e]),style:{transform:c}},ae.createElement("div",{ref:m,className:"react-flow__nodesselection-rect",onContextMenu:g,tabIndex:n?void 0:-1,onKeyDown:n?void 0:x,style:{width:s,height:i,top:l,left:a}}))}var D7e=b.memo(R7e);const P7e=t=>t.nodesSelectionActive,KW=({children:t,onPaneClick:e,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:s,onPaneContextMenu:i,onPaneScroll:a,deleteKeyCode:l,onMove:c,onMoveStart:d,onMoveEnd:h,selectionKeyCode:m,selectionOnDrag:g,selectionMode:x,onSelectionStart:y,onSelectionEnd:w,multiSelectionKeyCode:S,panActivationKeyCode:k,zoomActivationKeyCode:j,elementsSelectable:N,zoomOnScroll:T,zoomOnPinch:E,panOnScroll:_,panOnScrollSpeed:M,panOnScrollMode:I,zoomOnDoubleClick:P,panOnDrag:L,defaultViewport:H,translateExtent:U,minZoom:ee,maxZoom:z,preventScrolling:Q,onSelectionContextMenu:B,noWheelClassName:X,noPanClassName:J,disableKeyboardA11y:G})=>{const R=hr(P7e),ie=bp(m),W=bp(k),q=W||L,V=W||_,te=ie||g&&q!==!0;return b7e({deleteKeyCode:l,multiSelectionKeyCode:S}),ae.createElement(O7e,{onMove:c,onMoveStart:d,onMoveEnd:h,onPaneContextMenu:i,elementsSelectable:N,zoomOnScroll:T,zoomOnPinch:E,panOnScroll:V,panOnScrollSpeed:M,panOnScrollMode:I,zoomOnDoubleClick:P,panOnDrag:!ie&&q,defaultViewport:H,translateExtent:U,minZoom:ee,maxZoom:z,zoomActivationKeyCode:j,preventScrolling:Q,noWheelClassName:X,noPanClassName:J},ae.createElement(UW,{onSelectionStart:y,onSelectionEnd:w,onPaneClick:e,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:s,onPaneContextMenu:i,onPaneScroll:a,panOnDrag:q,isSelecting:!!te,selectionMode:x},t,R&&ae.createElement(D7e,{onSelectionContextMenu:B,noPanClassName:J,disableKeyboardA11y:G})))};KW.displayName="FlowRenderer";var z7e=b.memo(KW);function I7e(t){return hr(b.useCallback(n=>t?NW(n.nodeInternals,{x:0,y:0,width:n.width,height:n.height},n.transform,!0):n.getNodes(),[t]))}function L7e(t){const e={input:r0(t.input||PW),default:r0(t.default||JO),output:r0(t.output||IW),group:r0(t.group||JN)},n={},r=Object.keys(t).filter(s=>!["input","default","output","group"].includes(s)).reduce((s,i)=>(s[i]=r0(t[i]||JO),s),n);return{...e,...r}}const B7e=({x:t,y:e,width:n,height:r,origin:s})=>!n||!r?{x:t,y:e}:s[0]<0||s[1]<0||s[0]>1||s[1]>1?{x:t,y:e}:{x:t-n*s[0],y:e-r*s[1]},F7e=t=>({nodesDraggable:t.nodesDraggable,nodesConnectable:t.nodesConnectable,nodesFocusable:t.nodesFocusable,elementsSelectable:t.elementsSelectable,updateNodeDimensions:t.updateNodeDimensions,onError:t.onError}),ZW=t=>{const{nodesDraggable:e,nodesConnectable:n,nodesFocusable:r,elementsSelectable:s,updateNodeDimensions:i,onError:a}=hr(F7e,Ss),l=I7e(t.onlyRenderVisibleElements),c=b.useRef(),d=b.useMemo(()=>{if(typeof ResizeObserver>"u")return null;const h=new ResizeObserver(m=>{const g=m.map(x=>({id:x.target.getAttribute("data-id"),nodeElement:x.target,forceUpdate:!0}));i(g)});return c.current=h,h},[]);return b.useEffect(()=>()=>{c?.current?.disconnect()},[]),ae.createElement("div",{className:"react-flow__nodes",style:t7},l.map(h=>{let m=h.type||"default";t.nodeTypes[m]||(a?.("003",Wl.error003(m)),m="default");const g=t.nodeTypes[m]||t.nodeTypes.default,x=!!(h.draggable||e&&typeof h.draggable>"u"),y=!!(h.selectable||s&&typeof h.selectable>"u"),w=!!(h.connectable||n&&typeof h.connectable>"u"),S=!!(h.focusable||r&&typeof h.focusable>"u"),k=t.nodeExtent?WN(h.positionAbsolute,t.nodeExtent):h.positionAbsolute,j=k?.x??0,N=k?.y??0,T=B7e({x:j,y:N,width:h.width??0,height:h.height??0,origin:t.nodeOrigin});return ae.createElement(g,{key:h.id,id:h.id,className:h.className,style:h.style,type:m,data:h.data,sourcePosition:h.sourcePosition||wt.Bottom,targetPosition:h.targetPosition||wt.Top,hidden:h.hidden,xPos:j,yPos:N,xPosOrigin:T.x,yPosOrigin:T.y,selectNodesOnDrag:t.selectNodesOnDrag,onClick:t.onNodeClick,onMouseEnter:t.onNodeMouseEnter,onMouseMove:t.onNodeMouseMove,onMouseLeave:t.onNodeMouseLeave,onContextMenu:t.onNodeContextMenu,onDoubleClick:t.onNodeDoubleClick,selected:!!h.selected,isDraggable:x,isSelectable:y,isConnectable:w,isFocusable:S,resizeObserver:d,dragHandle:h.dragHandle,zIndex:h[Lr]?.z??0,isParent:!!h[Lr]?.isParent,noDragClassName:t.noDragClassName,noPanClassName:t.noPanClassName,initialized:!!h.width&&!!h.height,rfId:t.rfId,disableKeyboardA11y:t.disableKeyboardA11y,ariaLabel:h.ariaLabel,hasHandleBounds:!!h[Lr]?.handleBounds})}))};ZW.displayName="NodeRenderer";var q7e=b.memo(ZW);const $7e=(t,e,n)=>n===wt.Left?t-e:n===wt.Right?t+e:t,H7e=(t,e,n)=>n===wt.Top?t-e:n===wt.Bottom?t+e:t,vD="react-flow__edgeupdater",yD=({position:t,centerX:e,centerY:n,radius:r=10,onMouseDown:s,onMouseEnter:i,onMouseOut:a,type:l})=>ae.createElement("circle",{onMouseDown:s,onMouseEnter:i,onMouseOut:a,className:Is([vD,`${vD}-${l}`]),cx:$7e(e,r,t),cy:H7e(n,r,t),r,stroke:"transparent",fill:"transparent"}),Q7e=()=>!0;var fh=t=>{const e=({id:n,className:r,type:s,data:i,onClick:a,onEdgeDoubleClick:l,selected:c,animated:d,label:h,labelStyle:m,labelShowBg:g,labelBgStyle:x,labelBgPadding:y,labelBgBorderRadius:w,style:S,source:k,target:j,sourceX:N,sourceY:T,targetX:E,targetY:_,sourcePosition:M,targetPosition:I,elementsSelectable:P,hidden:L,sourceHandleId:H,targetHandleId:U,onContextMenu:ee,onMouseEnter:z,onMouseMove:Q,onMouseLeave:B,reconnectRadius:X,onReconnect:J,onReconnectStart:G,onReconnectEnd:R,markerEnd:ie,markerStart:W,rfId:q,ariaLabel:V,isFocusable:te,isReconnectable:ne,pathOptions:K,interactionWidth:se,disableKeyboardA11y:re})=>{const oe=b.useRef(null),[Te,We]=b.useState(!1),[Ye,Je]=b.useState(!1),Oe=ms(),Ve=b.useMemo(()=>`url('#${KO(W,q)}')`,[W,q]),Ue=b.useMemo(()=>`url('#${KO(ie,q)}')`,[ie,q]);if(L)return null;const He=At=>{const{edges:zn,addSelectedEdges:Fe,unselectNodesAndEdges:rt,multiSelectionActive:tn}=Oe.getState(),Rt=zn.find(ke=>ke.id===n);Rt&&(P&&(Oe.setState({nodesSelectionActive:!1}),Rt.selected&&tn?(rt({nodes:[],edges:[Rt]}),oe.current?.blur()):Fe([n])),a&&a(At,Rt))},Ot=t0(n,Oe.getState,l),xt=t0(n,Oe.getState,ee),kn=t0(n,Oe.getState,z),It=t0(n,Oe.getState,Q),Yt=t0(n,Oe.getState,B),_t=(At,zn)=>{if(At.button!==0)return;const{edges:Fe,isValidConnection:rt}=Oe.getState(),tn=zn?j:k,Rt=(zn?U:H)||null,ke=zn?"target":"source",Pe=rt||Q7e,it=zn,ot=Fe.find(pt=>pt.id===n);Je(!0),G?.(At,ot,ke);const nn=pt=>{Je(!1),R?.(pt,ot,ke)};MW({event:At,handleId:Rt,nodeId:tn,onConnect:pt=>J?.(ot,pt),isTarget:it,getState:Oe.getState,setState:Oe.setState,isValidConnection:Pe,edgeUpdaterType:ke,onReconnectEnd:nn})},mt=At=>_t(At,!0),Ne=At=>_t(At,!1),Ie=()=>We(!0),st=()=>We(!1),yt=!P&&!a,Pt=At=>{if(!re&&yW.includes(At.key)&&P){const{unselectNodesAndEdges:zn,addSelectedEdges:Fe,edges:rt}=Oe.getState();At.key==="Escape"?(oe.current?.blur(),zn({edges:[rt.find(Rt=>Rt.id===n)]})):Fe([n])}};return ae.createElement("g",{className:Is(["react-flow__edge",`react-flow__edge-${s}`,r,{selected:c,animated:d,inactive:yt,updating:Te}]),onClick:He,onDoubleClick:Ot,onContextMenu:xt,onMouseEnter:kn,onMouseMove:It,onMouseLeave:Yt,onKeyDown:te?Pt:void 0,tabIndex:te?0:void 0,role:te?"button":"img","data-testid":`rf__edge-${n}`,"aria-label":V===null?void 0:V||`Edge from ${k} to ${j}`,"aria-describedby":te?`${FW}-${q}`:void 0,ref:oe},!Ye&&ae.createElement(t,{id:n,source:k,target:j,selected:c,animated:d,label:h,labelStyle:m,labelShowBg:g,labelBgStyle:x,labelBgPadding:y,labelBgBorderRadius:w,data:i,style:S,sourceX:N,sourceY:T,targetX:E,targetY:_,sourcePosition:M,targetPosition:I,sourceHandleId:H,targetHandleId:U,markerStart:Ve,markerEnd:Ue,pathOptions:K,interactionWidth:se}),ne&&ae.createElement(ae.Fragment,null,(ne==="source"||ne===!0)&&ae.createElement(yD,{position:M,centerX:N,centerY:T,radius:X,onMouseDown:mt,onMouseEnter:Ie,onMouseOut:st,type:"source"}),(ne==="target"||ne===!0)&&ae.createElement(yD,{position:I,centerX:E,centerY:_,radius:X,onMouseDown:Ne,onMouseEnter:Ie,onMouseOut:st,type:"target"})))};return e.displayName="EdgeWrapper",b.memo(e)};function V7e(t){const e={default:fh(t.default||Ty),straight:fh(t.bezier||YN),step:fh(t.step||XN),smoothstep:fh(t.step||Gb),simplebezier:fh(t.simplebezier||GN)},n={},r=Object.keys(t).filter(s=>!["default","bezier"].includes(s)).reduce((s,i)=>(s[i]=fh(t[i]||Ty),s),n);return{...e,...r}}function bD(t,e,n=null){const r=(n?.x||0)+e.x,s=(n?.y||0)+e.y,i=n?.width||e.width,a=n?.height||e.height;switch(t){case wt.Top:return{x:r+i/2,y:s};case wt.Right:return{x:r+i,y:s+a/2};case wt.Bottom:return{x:r+i/2,y:s+a};case wt.Left:return{x:r,y:s+a/2}}}function wD(t,e){return t?t.length===1||!e?t[0]:e&&t.find(n=>n.id===e)||null:null}const U7e=(t,e,n,r,s,i)=>{const a=bD(n,t,e),l=bD(i,r,s);return{sourceX:a.x,sourceY:a.y,targetX:l.x,targetY:l.y}};function W7e({sourcePos:t,targetPos:e,sourceWidth:n,sourceHeight:r,targetWidth:s,targetHeight:i,width:a,height:l,transform:c}){const d={x:Math.min(t.x,e.x),y:Math.min(t.y,e.y),x2:Math.max(t.x+n,e.x+s),y2:Math.max(t.y+r,e.y+i)};d.x===d.x2&&(d.x2+=1),d.y===d.y2&&(d.y2+=1);const h=vp({x:(0-c[0])/c[2],y:(0-c[1])/c[2],width:a/c[2],height:l/c[2]}),m=Math.max(0,Math.min(h.x2,d.x2)-Math.max(h.x,d.x)),g=Math.max(0,Math.min(h.y2,d.y2)-Math.max(h.y,d.y));return Math.ceil(m*g)>0}function SD(t){const e=t?.[Lr]?.handleBounds||null,n=e&&t?.width&&t?.height&&typeof t?.positionAbsolute?.x<"u"&&typeof t?.positionAbsolute?.y<"u";return[{x:t?.positionAbsolute?.x||0,y:t?.positionAbsolute?.y||0,width:t?.width||0,height:t?.height||0},e,!!n]}const G7e=[{level:0,isMaxLevel:!0,edges:[]}];function X7e(t,e,n=!1){let r=-1;const s=t.reduce((a,l)=>{const c=ka(l.zIndex);let d=c?l.zIndex:0;if(n){const h=e.get(l.target),m=e.get(l.source),g=l.selected||h?.selected||m?.selected,x=Math.max(m?.[Lr]?.z||0,h?.[Lr]?.z||0,1e3);d=(c?l.zIndex:0)+(g?x:0)}return a[d]?a[d].push(l):a[d]=[l],r=d>r?d:r,a},{}),i=Object.entries(s).map(([a,l])=>{const c=+a;return{edges:l,level:c,isMaxLevel:c===r}});return i.length===0?G7e:i}function Y7e(t,e,n){const r=hr(b.useCallback(s=>t?s.edges.filter(i=>{const a=e.get(i.source),l=e.get(i.target);return a?.width&&a?.height&&l?.width&&l?.height&&W7e({sourcePos:a.positionAbsolute||{x:0,y:0},targetPos:l.positionAbsolute||{x:0,y:0},sourceWidth:a.width,sourceHeight:a.height,targetWidth:l.width,targetHeight:l.height,width:s.width,height:s.height,transform:s.transform})}):s.edges,[t,e]));return X7e(r,e,n)}const K7e=({color:t="none",strokeWidth:e=1})=>ae.createElement("polyline",{style:{stroke:t,strokeWidth:e},strokeLinecap:"round",strokeLinejoin:"round",fill:"none",points:"-5,-4 0,0 -5,4"}),Z7e=({color:t="none",strokeWidth:e=1})=>ae.createElement("polyline",{style:{stroke:t,fill:t,strokeWidth:e},strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"}),kD={[Cy.Arrow]:K7e,[Cy.ArrowClosed]:Z7e};function J7e(t){const e=ms();return b.useMemo(()=>Object.prototype.hasOwnProperty.call(kD,t)?kD[t]:(e.getState().onError?.("009",Wl.error009(t)),null),[t])}const eCe=({id:t,type:e,color:n,width:r=12.5,height:s=12.5,markerUnits:i="strokeWidth",strokeWidth:a,orient:l="auto-start-reverse"})=>{const c=J7e(e);return c?ae.createElement("marker",{className:"react-flow__arrowhead",id:t,markerWidth:`${r}`,markerHeight:`${s}`,viewBox:"-10 -10 20 20",markerUnits:i,orient:l,refX:"0",refY:"0"},ae.createElement(c,{color:n,strokeWidth:a})):null},tCe=({defaultColor:t,rfId:e})=>n=>{const r=[];return n.edges.reduce((s,i)=>([i.markerStart,i.markerEnd].forEach(a=>{if(a&&typeof a=="object"){const l=KO(a,e);r.includes(l)||(s.push({id:l,color:a.color||t,...a}),r.push(l))}}),s),[]).sort((s,i)=>s.id.localeCompare(i.id))},JW=({defaultColor:t,rfId:e})=>{const n=hr(b.useCallback(tCe({defaultColor:t,rfId:e}),[t,e]),(r,s)=>!(r.length!==s.length||r.some((i,a)=>i.id!==s[a].id)));return ae.createElement("defs",null,n.map(r=>ae.createElement(eCe,{id:r.id,key:r.id,type:r.type,color:r.color,width:r.width,height:r.height,markerUnits:r.markerUnits,strokeWidth:r.strokeWidth,orient:r.orient})))};JW.displayName="MarkerDefinitions";var nCe=b.memo(JW);const rCe=t=>({nodesConnectable:t.nodesConnectable,edgesFocusable:t.edgesFocusable,edgesUpdatable:t.edgesUpdatable,elementsSelectable:t.elementsSelectable,width:t.width,height:t.height,connectionMode:t.connectionMode,nodeInternals:t.nodeInternals,onError:t.onError}),eG=({defaultMarkerColor:t,onlyRenderVisibleElements:e,elevateEdgesOnSelect:n,rfId:r,edgeTypes:s,noPanClassName:i,onEdgeContextMenu:a,onEdgeMouseEnter:l,onEdgeMouseMove:c,onEdgeMouseLeave:d,onEdgeClick:h,onEdgeDoubleClick:m,onReconnect:g,onReconnectStart:x,onReconnectEnd:y,reconnectRadius:w,children:S,disableKeyboardA11y:k})=>{const{edgesFocusable:j,edgesUpdatable:N,elementsSelectable:T,width:E,height:_,connectionMode:M,nodeInternals:I,onError:P}=hr(rCe,Ss),L=Y7e(e,I,n);return E?ae.createElement(ae.Fragment,null,L.map(({level:H,edges:U,isMaxLevel:ee})=>ae.createElement("svg",{key:H,style:{zIndex:H},width:E,height:_,className:"react-flow__edges react-flow__container"},ee&&ae.createElement(nCe,{defaultColor:t,rfId:r}),ae.createElement("g",null,U.map(z=>{const[Q,B,X]=SD(I.get(z.source)),[J,G,R]=SD(I.get(z.target));if(!X||!R)return null;let ie=z.type||"default";s[ie]||(P?.("011",Wl.error011(ie)),ie="default");const W=s[ie]||s.default,q=M===pd.Strict?G.target:(G.target??[]).concat(G.source??[]),V=wD(B.source,z.sourceHandle),te=wD(q,z.targetHandle),ne=V?.position||wt.Bottom,K=te?.position||wt.Top,se=!!(z.focusable||j&&typeof z.focusable>"u"),re=z.reconnectable||z.updatable,oe=typeof g<"u"&&(re||N&&typeof re>"u");if(!V||!te)return P?.("008",Wl.error008(V,z)),null;const{sourceX:Te,sourceY:We,targetX:Ye,targetY:Je}=U7e(Q,V,ne,J,te,K);return ae.createElement(W,{key:z.id,id:z.id,className:Is([z.className,i]),type:ie,data:z.data,selected:!!z.selected,animated:!!z.animated,hidden:!!z.hidden,label:z.label,labelStyle:z.labelStyle,labelShowBg:z.labelShowBg,labelBgStyle:z.labelBgStyle,labelBgPadding:z.labelBgPadding,labelBgBorderRadius:z.labelBgBorderRadius,style:z.style,source:z.source,target:z.target,sourceHandleId:z.sourceHandle,targetHandleId:z.targetHandle,markerEnd:z.markerEnd,markerStart:z.markerStart,sourceX:Te,sourceY:We,targetX:Ye,targetY:Je,sourcePosition:ne,targetPosition:K,elementsSelectable:T,onContextMenu:a,onMouseEnter:l,onMouseMove:c,onMouseLeave:d,onClick:h,onEdgeDoubleClick:m,onReconnect:g,onReconnectStart:x,onReconnectEnd:y,reconnectRadius:w,rfId:r,ariaLabel:z.ariaLabel,isFocusable:se,isReconnectable:oe,pathOptions:"pathOptions"in z?z.pathOptions:void 0,interactionWidth:z.interactionWidth,disableKeyboardA11y:k})})))),S):null};eG.displayName="EdgeRenderer";var sCe=b.memo(eG);const iCe=t=>`translate(${t.transform[0]}px,${t.transform[1]}px) scale(${t.transform[2]})`;function aCe({children:t}){const e=hr(iCe);return ae.createElement("div",{className:"react-flow__viewport react-flow__container",style:{transform:e}},t)}function oCe(t){const e=e7(),n=b.useRef(!1);b.useEffect(()=>{!n.current&&e.viewportInitialized&&t&&(setTimeout(()=>t(e),1),n.current=!0)},[t,e.viewportInitialized])}const lCe={[wt.Left]:wt.Right,[wt.Right]:wt.Left,[wt.Top]:wt.Bottom,[wt.Bottom]:wt.Top},tG=({nodeId:t,handleType:e,style:n,type:r=Ic.Bezier,CustomComponent:s,connectionStatus:i})=>{const{fromNode:a,handleId:l,toX:c,toY:d,connectionMode:h}=hr(b.useCallback(_=>({fromNode:_.nodeInternals.get(t),handleId:_.connectionHandleId,toX:(_.connectionPosition.x-_.transform[0])/_.transform[2],toY:(_.connectionPosition.y-_.transform[1])/_.transform[2],connectionMode:_.connectionMode}),[t]),Ss),m=a?.[Lr]?.handleBounds;let g=m?.[e];if(h===pd.Loose&&(g=g||m?.[e==="source"?"target":"source"]),!a||!g)return null;const x=l?g.find(_=>_.id===l):g[0],y=x?x.x+x.width/2:(a.width??0)/2,w=x?x.y+x.height/2:a.height??0,S=(a.positionAbsolute?.x??0)+y,k=(a.positionAbsolute?.y??0)+w,j=x?.position,N=j?lCe[j]:null;if(!j||!N)return null;if(s)return ae.createElement(s,{connectionLineType:r,connectionLineStyle:n,fromNode:a,fromHandle:x,fromX:S,fromY:k,toX:c,toY:d,fromPosition:j,toPosition:N,connectionStatus:i});let T="";const E={sourceX:S,sourceY:k,sourcePosition:j,targetX:c,targetY:d,targetPosition:N};return r===Ic.Bezier?[T]=OW(E):r===Ic.Step?[T]=YO({...E,borderRadius:0}):r===Ic.SmoothStep?[T]=YO(E):r===Ic.SimpleBezier?[T]=kW(E):T=`M${S},${k} ${c},${d}`,ae.createElement("path",{d:T,fill:"none",className:"react-flow__connection-path",style:n})};tG.displayName="ConnectionLine";const cCe=t=>({nodeId:t.connectionNodeId,handleType:t.connectionHandleType,nodesConnectable:t.nodesConnectable,connectionStatus:t.connectionStatus,width:t.width,height:t.height});function uCe({containerStyle:t,style:e,type:n,component:r}){const{nodeId:s,handleType:i,nodesConnectable:a,width:l,height:c,connectionStatus:d}=hr(cCe,Ss);return!(s&&i&&l&&a)?null:ae.createElement("svg",{style:t,width:l,height:c,className:"react-flow__edges react-flow__connectionline react-flow__container"},ae.createElement("g",{className:Is(["react-flow__connection",d])},ae.createElement(tG,{nodeId:s,handleType:i,style:e,type:n,CustomComponent:r,connectionStatus:d})))}function OD(t,e){return b.useRef(null),ms(),b.useMemo(()=>e(t),[t])}const nG=({nodeTypes:t,edgeTypes:e,onMove:n,onMoveStart:r,onMoveEnd:s,onInit:i,onNodeClick:a,onEdgeClick:l,onNodeDoubleClick:c,onEdgeDoubleClick:d,onNodeMouseEnter:h,onNodeMouseMove:m,onNodeMouseLeave:g,onNodeContextMenu:x,onSelectionContextMenu:y,onSelectionStart:w,onSelectionEnd:S,connectionLineType:k,connectionLineStyle:j,connectionLineComponent:N,connectionLineContainerStyle:T,selectionKeyCode:E,selectionOnDrag:_,selectionMode:M,multiSelectionKeyCode:I,panActivationKeyCode:P,zoomActivationKeyCode:L,deleteKeyCode:H,onlyRenderVisibleElements:U,elementsSelectable:ee,selectNodesOnDrag:z,defaultViewport:Q,translateExtent:B,minZoom:X,maxZoom:J,preventScrolling:G,defaultMarkerColor:R,zoomOnScroll:ie,zoomOnPinch:W,panOnScroll:q,panOnScrollSpeed:V,panOnScrollMode:te,zoomOnDoubleClick:ne,panOnDrag:K,onPaneClick:se,onPaneMouseEnter:re,onPaneMouseMove:oe,onPaneMouseLeave:Te,onPaneScroll:We,onPaneContextMenu:Ye,onEdgeContextMenu:Je,onEdgeMouseEnter:Oe,onEdgeMouseMove:Ve,onEdgeMouseLeave:Ue,onReconnect:He,onReconnectStart:Ot,onReconnectEnd:xt,reconnectRadius:kn,noDragClassName:It,noWheelClassName:Yt,noPanClassName:_t,elevateEdgesOnSelect:mt,disableKeyboardA11y:Ne,nodeOrigin:Ie,nodeExtent:st,rfId:yt})=>{const Pt=OD(t,L7e),At=OD(e,V7e);return oCe(i),ae.createElement(z7e,{onPaneClick:se,onPaneMouseEnter:re,onPaneMouseMove:oe,onPaneMouseLeave:Te,onPaneContextMenu:Ye,onPaneScroll:We,deleteKeyCode:H,selectionKeyCode:E,selectionOnDrag:_,selectionMode:M,onSelectionStart:w,onSelectionEnd:S,multiSelectionKeyCode:I,panActivationKeyCode:P,zoomActivationKeyCode:L,elementsSelectable:ee,onMove:n,onMoveStart:r,onMoveEnd:s,zoomOnScroll:ie,zoomOnPinch:W,zoomOnDoubleClick:ne,panOnScroll:q,panOnScrollSpeed:V,panOnScrollMode:te,panOnDrag:K,defaultViewport:Q,translateExtent:B,minZoom:X,maxZoom:J,onSelectionContextMenu:y,preventScrolling:G,noDragClassName:It,noWheelClassName:Yt,noPanClassName:_t,disableKeyboardA11y:Ne},ae.createElement(aCe,null,ae.createElement(sCe,{edgeTypes:At,onEdgeClick:l,onEdgeDoubleClick:d,onlyRenderVisibleElements:U,onEdgeContextMenu:Je,onEdgeMouseEnter:Oe,onEdgeMouseMove:Ve,onEdgeMouseLeave:Ue,onReconnect:He,onReconnectStart:Ot,onReconnectEnd:xt,reconnectRadius:kn,defaultMarkerColor:R,noPanClassName:_t,elevateEdgesOnSelect:!!mt,disableKeyboardA11y:Ne,rfId:yt},ae.createElement(uCe,{style:j,type:k,component:N,containerStyle:T})),ae.createElement("div",{className:"react-flow__edgelabel-renderer"}),ae.createElement(q7e,{nodeTypes:Pt,onNodeClick:a,onNodeDoubleClick:c,onNodeMouseEnter:h,onNodeMouseMove:m,onNodeMouseLeave:g,onNodeContextMenu:x,selectNodesOnDrag:z,onlyRenderVisibleElements:U,noPanClassName:_t,noDragClassName:It,disableKeyboardA11y:Ne,nodeOrigin:Ie,nodeExtent:st,rfId:yt})))};nG.displayName="GraphView";var dCe=b.memo(nG);const tj=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],Tc={rfId:"1",width:0,height:0,transform:[0,0,1],nodeInternals:new Map,edges:[],onNodesChange:null,onEdgesChange:null,hasDefaultNodes:!1,hasDefaultEdges:!1,d3Zoom:null,d3Selection:null,d3ZoomHandler:void 0,minZoom:.5,maxZoom:2,translateExtent:tj,nodeExtent:tj,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionNodeId:null,connectionHandleId:null,connectionHandleType:"source",connectionPosition:{x:0,y:0},connectionStatus:null,connectionMode:pd.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:[0,0],nodeDragThreshold:0,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesUpdatable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,fitViewOnInit:!1,fitViewOnInitDone:!1,fitViewOnInitOptions:void 0,onSelectionChange:[],multiSelectionActive:!1,connectionStartHandle:null,connectionEndHandle:null,connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,connectionRadius:20,onError:BNe,isValidConnection:void 0},hCe=()=>NOe((t,e)=>({...Tc,setNodes:n=>{const{nodeInternals:r,nodeOrigin:s,elevateNodesOnSelect:i}=e();t({nodeInternals:s5(n,r,s,i)})},getNodes:()=>Array.from(e().nodeInternals.values()),setEdges:n=>{const{defaultEdgeOptions:r={}}=e();t({edges:n.map(s=>({...r,...s}))})},setDefaultNodesAndEdges:(n,r)=>{const s=typeof n<"u",i=typeof r<"u",a=s?s5(n,new Map,e().nodeOrigin,e().elevateNodesOnSelect):new Map;t({nodeInternals:a,edges:i?r:[],hasDefaultNodes:s,hasDefaultEdges:i})},updateNodeDimensions:n=>{const{onNodesChange:r,nodeInternals:s,fitViewOnInit:i,fitViewOnInitDone:a,fitViewOnInitOptions:l,domNode:c,nodeOrigin:d}=e(),h=c?.querySelector(".react-flow__viewport");if(!h)return;const m=window.getComputedStyle(h),{m22:g}=new window.DOMMatrixReadOnly(m.transform),x=n.reduce((w,S)=>{const k=s.get(S.id);if(k?.hidden)s.set(k.id,{...k,[Lr]:{...k[Lr],handleBounds:void 0}});else if(k){const j=UN(S.nodeElement);!!(j.width&&j.height&&(k.width!==j.width||k.height!==j.height||S.forceUpdate))&&(s.set(k.id,{...k,[Lr]:{...k[Lr],handleBounds:{source:xD(".source",S.nodeElement,g,d),target:xD(".target",S.nodeElement,g,d)}},...j}),w.push({id:k.id,type:"dimensions",dimensions:j}))}return w},[]);$W(s,d);const y=a||i&&!a&&HW(e,{initial:!0,...l});t({nodeInternals:new Map(s),fitViewOnInitDone:y}),x?.length>0&&r?.(x)},updateNodePositions:(n,r=!0,s=!1)=>{const{triggerNodeChanges:i}=e(),a=n.map(l=>{const c={id:l.id,type:"position",dragging:s};return r&&(c.positionAbsolute=l.positionAbsolute,c.position=l.position),c});i(a)},triggerNodeChanges:n=>{const{onNodesChange:r,nodeInternals:s,hasDefaultNodes:i,nodeOrigin:a,getNodes:l,elevateNodesOnSelect:c}=e();if(n?.length){if(i){const d=VW(n,l()),h=s5(d,s,a,c);t({nodeInternals:h})}r?.(n)}},addSelectedNodes:n=>{const{multiSelectionActive:r,edges:s,getNodes:i}=e();let a,l=null;r?a=n.map(c=>Dc(c,!0)):(a=Eh(i(),n),l=Eh(s,[])),$1({changedNodes:a,changedEdges:l,get:e,set:t})},addSelectedEdges:n=>{const{multiSelectionActive:r,edges:s,getNodes:i}=e();let a,l=null;r?a=n.map(c=>Dc(c,!0)):(a=Eh(s,n),l=Eh(i(),[])),$1({changedNodes:l,changedEdges:a,get:e,set:t})},unselectNodesAndEdges:({nodes:n,edges:r}={})=>{const{edges:s,getNodes:i}=e(),a=n||i(),l=r||s,c=a.map(h=>(h.selected=!1,Dc(h.id,!1))),d=l.map(h=>Dc(h.id,!1));$1({changedNodes:c,changedEdges:d,get:e,set:t})},setMinZoom:n=>{const{d3Zoom:r,maxZoom:s}=e();r?.scaleExtent([n,s]),t({minZoom:n})},setMaxZoom:n=>{const{d3Zoom:r,minZoom:s}=e();r?.scaleExtent([s,n]),t({maxZoom:n})},setTranslateExtent:n=>{e().d3Zoom?.translateExtent(n),t({translateExtent:n})},resetSelectedElements:()=>{const{edges:n,getNodes:r}=e(),i=r().filter(l=>l.selected).map(l=>Dc(l.id,!1)),a=n.filter(l=>l.selected).map(l=>Dc(l.id,!1));$1({changedNodes:i,changedEdges:a,get:e,set:t})},setNodeExtent:n=>{const{nodeInternals:r}=e();r.forEach(s=>{s.positionAbsolute=WN(s.position,n)}),t({nodeExtent:n,nodeInternals:new Map(r)})},panBy:n=>{const{transform:r,width:s,height:i,d3Zoom:a,d3Selection:l,translateExtent:c}=e();if(!a||!l||!n.x&&!n.y)return!1;const d=Bl.translate(r[0]+n.x,r[1]+n.y).scale(r[2]),h=[[0,0],[s,i]],m=a?.constrain()(d,h,c);return a.transform(l,m),r[0]!==m.x||r[1]!==m.y||r[2]!==m.k},cancelConnection:()=>t({connectionNodeId:Tc.connectionNodeId,connectionHandleId:Tc.connectionHandleId,connectionHandleType:Tc.connectionHandleType,connectionStatus:Tc.connectionStatus,connectionStartHandle:Tc.connectionStartHandle,connectionEndHandle:Tc.connectionEndHandle}),reset:()=>t({...Tc})}),Object.is),rG=({children:t})=>{const e=b.useRef(null);return e.current||(e.current=hCe()),ae.createElement(ANe,{value:e.current},t)};rG.displayName="ReactFlowProvider";const sG=({children:t})=>b.useContext(Ub)?ae.createElement(ae.Fragment,null,t):ae.createElement(rG,null,t);sG.displayName="ReactFlowWrapper";const fCe={input:PW,default:JO,output:IW,group:JN},mCe={default:Ty,straight:YN,step:XN,smoothstep:Gb,simplebezier:GN},pCe=[0,0],gCe=[15,15],xCe={x:0,y:0,zoom:1},vCe={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0},iG=b.forwardRef(({nodes:t,edges:e,defaultNodes:n,defaultEdges:r,className:s,nodeTypes:i=fCe,edgeTypes:a=mCe,onNodeClick:l,onEdgeClick:c,onInit:d,onMove:h,onMoveStart:m,onMoveEnd:g,onConnect:x,onConnectStart:y,onConnectEnd:w,onClickConnectStart:S,onClickConnectEnd:k,onNodeMouseEnter:j,onNodeMouseMove:N,onNodeMouseLeave:T,onNodeContextMenu:E,onNodeDoubleClick:_,onNodeDragStart:M,onNodeDrag:I,onNodeDragStop:P,onNodesDelete:L,onEdgesDelete:H,onSelectionChange:U,onSelectionDragStart:ee,onSelectionDrag:z,onSelectionDragStop:Q,onSelectionContextMenu:B,onSelectionStart:X,onSelectionEnd:J,connectionMode:G=pd.Strict,connectionLineType:R=Ic.Bezier,connectionLineStyle:ie,connectionLineComponent:W,connectionLineContainerStyle:q,deleteKeyCode:V="Backspace",selectionKeyCode:te="Shift",selectionOnDrag:ne=!1,selectionMode:K=yp.Full,panActivationKeyCode:se="Space",multiSelectionKeyCode:re=Ny()?"Meta":"Control",zoomActivationKeyCode:oe=Ny()?"Meta":"Control",snapToGrid:Te=!1,snapGrid:We=gCe,onlyRenderVisibleElements:Ye=!1,selectNodesOnDrag:Je=!0,nodesDraggable:Oe,nodesConnectable:Ve,nodesFocusable:Ue,nodeOrigin:He=pCe,edgesFocusable:Ot,edgesUpdatable:xt,elementsSelectable:kn,defaultViewport:It=xCe,minZoom:Yt=.5,maxZoom:_t=2,translateExtent:mt=tj,preventScrolling:Ne=!0,nodeExtent:Ie,defaultMarkerColor:st="#b1b1b7",zoomOnScroll:yt=!0,zoomOnPinch:Pt=!0,panOnScroll:At=!1,panOnScrollSpeed:zn=.5,panOnScrollMode:Fe=Wu.Free,zoomOnDoubleClick:rt=!0,panOnDrag:tn=!0,onPaneClick:Rt,onPaneMouseEnter:ke,onPaneMouseMove:Pe,onPaneMouseLeave:it,onPaneScroll:ot,onPaneContextMenu:nn,children:Kt,onEdgeContextMenu:pt,onEdgeDoubleClick:xr,onEdgeMouseEnter:Ur,onEdgeMouseMove:Wr,onEdgeMouseLeave:vr,onEdgeUpdate:In,onEdgeUpdateStart:cr,onEdgeUpdateEnd:nr,onReconnect:ps,onReconnectStart:gs,onReconnectEnd:js,reconnectRadius:ge=10,edgeUpdaterRadius:Le=10,onNodesChange:Ct,onEdgesChange:xn,noDragClassName:Fr="nodrag",noWheelClassName:Cr="nowheel",noPanClassName:Tr="nopan",fitView:Ns=!1,fitViewOptions:$f,connectOnClick:nw=!0,attributionPosition:rw,proOptions:Cg,defaultEdgeOptions:mu,elevateNodesOnSelect:Hf=!0,elevateEdgesOnSelect:Jl=!1,disableKeyboardA11y:Xo=!1,autoPanOnConnect:pu=!0,autoPanOnNodeDrag:ec=!0,connectionRadius:Gr=20,isValidConnection:Tg,onError:Eg,style:Yo,id:Ko,nodeDragThreshold:sw,..._g},Mg)=>{const Qf=Ko||"1";return ae.createElement("div",{..._g,style:{...Yo,...vCe},ref:Mg,className:Is(["react-flow",s]),"data-testid":"rf__wrapper",id:Ko},ae.createElement(sG,null,ae.createElement(dCe,{onInit:d,onMove:h,onMoveStart:m,onMoveEnd:g,onNodeClick:l,onEdgeClick:c,onNodeMouseEnter:j,onNodeMouseMove:N,onNodeMouseLeave:T,onNodeContextMenu:E,onNodeDoubleClick:_,nodeTypes:i,edgeTypes:a,connectionLineType:R,connectionLineStyle:ie,connectionLineComponent:W,connectionLineContainerStyle:q,selectionKeyCode:te,selectionOnDrag:ne,selectionMode:K,deleteKeyCode:V,multiSelectionKeyCode:re,panActivationKeyCode:se,zoomActivationKeyCode:oe,onlyRenderVisibleElements:Ye,selectNodesOnDrag:Je,defaultViewport:It,translateExtent:mt,minZoom:Yt,maxZoom:_t,preventScrolling:Ne,zoomOnScroll:yt,zoomOnPinch:Pt,zoomOnDoubleClick:rt,panOnScroll:At,panOnScrollSpeed:zn,panOnScrollMode:Fe,panOnDrag:tn,onPaneClick:Rt,onPaneMouseEnter:ke,onPaneMouseMove:Pe,onPaneMouseLeave:it,onPaneScroll:ot,onPaneContextMenu:nn,onSelectionContextMenu:B,onSelectionStart:X,onSelectionEnd:J,onEdgeContextMenu:pt,onEdgeDoubleClick:xr,onEdgeMouseEnter:Ur,onEdgeMouseMove:Wr,onEdgeMouseLeave:vr,onReconnect:ps??In,onReconnectStart:gs??cr,onReconnectEnd:js??nr,reconnectRadius:ge??Le,defaultMarkerColor:st,noDragClassName:Fr,noWheelClassName:Cr,noPanClassName:Tr,elevateEdgesOnSelect:Jl,rfId:Qf,disableKeyboardA11y:Xo,nodeOrigin:He,nodeExtent:Ie}),ae.createElement(l7e,{nodes:t,edges:e,defaultNodes:n,defaultEdges:r,onConnect:x,onConnectStart:y,onConnectEnd:w,onClickConnectStart:S,onClickConnectEnd:k,nodesDraggable:Oe,nodesConnectable:Ve,nodesFocusable:Ue,edgesFocusable:Ot,edgesUpdatable:xt,elementsSelectable:kn,elevateNodesOnSelect:Hf,minZoom:Yt,maxZoom:_t,nodeExtent:Ie,onNodesChange:Ct,onEdgesChange:xn,snapToGrid:Te,snapGrid:We,connectionMode:G,translateExtent:mt,connectOnClick:nw,defaultEdgeOptions:mu,fitView:Ns,fitViewOptions:$f,onNodesDelete:L,onEdgesDelete:H,onNodeDragStart:M,onNodeDrag:I,onNodeDragStop:P,onSelectionDrag:z,onSelectionDragStart:ee,onSelectionDragStop:Q,noPanClassName:Tr,nodeOrigin:He,rfId:Qf,autoPanOnConnect:pu,autoPanOnNodeDrag:ec,onError:Eg,connectionRadius:Gr,isValidConnection:Tg,nodeDragThreshold:sw}),ae.createElement(a7e,{onSelectionChange:U}),Kt,ae.createElement(DNe,{proOptions:Cg,position:rw}),ae.createElement(f7e,{rfId:Qf,disableKeyboardA11y:Xo})))});iG.displayName="ReactFlow";function aG(t){return e=>{const[n,r]=b.useState(e),s=b.useCallback(i=>r(a=>t(i,a)),[]);return[n,r,s]}}const yCe=aG(VW),bCe=aG(C7e),oG=({id:t,x:e,y:n,width:r,height:s,style:i,color:a,strokeColor:l,strokeWidth:c,className:d,borderRadius:h,shapeRendering:m,onClick:g,selected:x})=>{const{background:y,backgroundColor:w}=i||{},S=a||y||w;return ae.createElement("rect",{className:Is(["react-flow__minimap-node",{selected:x},d]),x:e,y:n,rx:h,ry:h,width:r,height:s,fill:S,stroke:l,strokeWidth:c,shapeRendering:m,onClick:g?k=>g(k,t):void 0})};oG.displayName="MiniMapNode";var wCe=b.memo(oG);const SCe=t=>t.nodeOrigin,kCe=t=>t.getNodes().filter(e=>!e.hidden&&e.width&&e.height),l5=t=>t instanceof Function?t:()=>t;function OCe({nodeStrokeColor:t="transparent",nodeColor:e="#e2e2e2",nodeClassName:n="",nodeBorderRadius:r=5,nodeStrokeWidth:s=2,nodeComponent:i=wCe,onClick:a}){const l=hr(kCe,Ss),c=hr(SCe),d=l5(e),h=l5(t),m=l5(n),g=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return ae.createElement(ae.Fragment,null,l.map(x=>{const{x:y,y:w}=td(x,c).positionAbsolute;return ae.createElement(i,{key:x.id,x:y,y:w,width:x.width,height:x.height,style:x.style,selected:x.selected,className:m(x),color:d(x),borderRadius:r,strokeColor:h(x),strokeWidth:s,shapeRendering:g,onClick:a,id:x.id})}))}var jCe=b.memo(OCe);const NCe=200,CCe=150,TCe=t=>{const e=t.getNodes(),n={x:-t.transform[0]/t.transform[2],y:-t.transform[1]/t.transform[2],width:t.width/t.transform[2],height:t.height/t.transform[2]};return{viewBB:n,boundingRect:e.length>0?INe(Xb(e,t.nodeOrigin),n):n,rfId:t.rfId}},ECe="react-flow__minimap-desc";function lG({style:t,className:e,nodeStrokeColor:n="transparent",nodeColor:r="#e2e2e2",nodeClassName:s="",nodeBorderRadius:i=5,nodeStrokeWidth:a=2,nodeComponent:l,maskColor:c="rgb(240, 240, 240, 0.6)",maskStrokeColor:d="none",maskStrokeWidth:h=1,position:m="bottom-right",onClick:g,onNodeClick:x,pannable:y=!1,zoomable:w=!1,ariaLabel:S="React Flow mini map",inversePan:k=!1,zoomStep:j=10,offsetScale:N=5}){const T=ms(),E=b.useRef(null),{boundingRect:_,viewBB:M,rfId:I}=hr(TCe,Ss),P=t?.width??NCe,L=t?.height??CCe,H=_.width/P,U=_.height/L,ee=Math.max(H,U),z=ee*P,Q=ee*L,B=N*ee,X=_.x-(z-_.width)/2-B,J=_.y-(Q-_.height)/2-B,G=z+B*2,R=Q+B*2,ie=`${ECe}-${I}`,W=b.useRef(0);W.current=ee,b.useEffect(()=>{if(E.current){const te=ma(E.current),ne=re=>{const{transform:oe,d3Selection:Te,d3Zoom:We}=T.getState();if(re.sourceEvent.type!=="wheel"||!Te||!We)return;const Ye=-re.sourceEvent.deltaY*(re.sourceEvent.deltaMode===1?.05:re.sourceEvent.deltaMode?1:.002)*j,Je=oe[2]*Math.pow(2,Ye);We.scaleTo(Te,Je)},K=re=>{const{transform:oe,d3Selection:Te,d3Zoom:We,translateExtent:Ye,width:Je,height:Oe}=T.getState();if(re.sourceEvent.type!=="mousemove"||!Te||!We)return;const Ve=W.current*Math.max(1,oe[2])*(k?-1:1),Ue={x:oe[0]-re.sourceEvent.movementX*Ve,y:oe[1]-re.sourceEvent.movementY*Ve},He=[[0,0],[Je,Oe]],Ot=Bl.translate(Ue.x,Ue.y).scale(oe[2]),xt=We.constrain()(Ot,He,Ye);We.transform(Te,xt)},se=fW().on("zoom",y?K:null).on("zoom.wheel",w?ne:null);return te.call(se),()=>{te.on("zoom",null)}}},[y,w,k,j]);const q=g?te=>{const ne=Ha(te);g(te,{x:ne[0],y:ne[1]})}:void 0,V=x?(te,ne)=>{const K=T.getState().nodeInternals.get(ne);x(te,K)}:void 0;return ae.createElement(Wb,{position:m,style:t,className:Is(["react-flow__minimap",e]),"data-testid":"rf__minimap"},ae.createElement("svg",{width:P,height:L,viewBox:`${X} ${J} ${G} ${R}`,role:"img","aria-labelledby":ie,ref:E,onClick:q},S&&ae.createElement("title",{id:ie},S),ae.createElement(jCe,{onClick:V,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:i,nodeClassName:s,nodeStrokeWidth:a,nodeComponent:l}),ae.createElement("path",{className:"react-flow__minimap-mask",d:`M${X-B},${J-B}h${G+B*2}v${R+B*2}h${-G-B*2}z - M${M.x},${M.y}h${M.width}v${M.height}h${-M.width}z`,fill:c,fillRule:"evenodd",stroke:d,strokeWidth:h,pointerEvents:"none"})))}lG.displayName="MiniMap";var _Ce=b.memo(lG);function MCe(){return ae.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32"},ae.createElement("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"}))}function ACe(){return ae.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5"},ae.createElement("path",{d:"M0 0h32v4.2H0z"}))}function RCe(){return ae.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30"},ae.createElement("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"}))}function DCe(){return ae.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},ae.createElement("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"}))}function PCe(){return ae.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},ae.createElement("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"}))}const h0=({children:t,className:e,...n})=>ae.createElement("button",{type:"button",className:Is(["react-flow__controls-button",e]),...n},t);h0.displayName="ControlButton";const zCe=t=>({isInteractive:t.nodesDraggable||t.nodesConnectable||t.elementsSelectable,minZoomReached:t.transform[2]<=t.minZoom,maxZoomReached:t.transform[2]>=t.maxZoom}),cG=({style:t,showZoom:e=!0,showFitView:n=!0,showInteractive:r=!0,fitViewOptions:s,onZoomIn:i,onZoomOut:a,onFitView:l,onInteractiveChange:c,className:d,children:h,position:m="bottom-left"})=>{const g=ms(),[x,y]=b.useState(!1),{isInteractive:w,minZoomReached:S,maxZoomReached:k}=hr(zCe,Ss),{zoomIn:j,zoomOut:N,fitView:T}=e7();if(b.useEffect(()=>{y(!0)},[]),!x)return null;const E=()=>{j(),i?.()},_=()=>{N(),a?.()},M=()=>{T(s),l?.()},I=()=>{g.setState({nodesDraggable:!w,nodesConnectable:!w,elementsSelectable:!w}),c?.(!w)};return ae.createElement(Wb,{className:Is(["react-flow__controls",d]),position:m,style:t,"data-testid":"rf__controls"},e&&ae.createElement(ae.Fragment,null,ae.createElement(h0,{onClick:E,className:"react-flow__controls-zoomin",title:"zoom in","aria-label":"zoom in",disabled:k},ae.createElement(MCe,null)),ae.createElement(h0,{onClick:_,className:"react-flow__controls-zoomout",title:"zoom out","aria-label":"zoom out",disabled:S},ae.createElement(ACe,null))),n&&ae.createElement(h0,{className:"react-flow__controls-fitview",onClick:M,title:"fit view","aria-label":"fit view"},ae.createElement(RCe,null)),r&&ae.createElement(h0,{className:"react-flow__controls-interactive",onClick:I,title:"toggle interactivity","aria-label":"toggle interactivity"},w?ae.createElement(PCe,null):ae.createElement(DCe,null)),h)};cG.displayName="Controls";var ICe=b.memo(cG),Ca;(function(t){t.Lines="lines",t.Dots="dots",t.Cross="cross"})(Ca||(Ca={}));function LCe({color:t,dimensions:e,lineWidth:n}){return ae.createElement("path",{stroke:t,strokeWidth:n,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`})}function BCe({color:t,radius:e}){return ae.createElement("circle",{cx:e,cy:e,r:e,fill:t})}const FCe={[Ca.Dots]:"#91919a",[Ca.Lines]:"#eee",[Ca.Cross]:"#e2e2e2"},qCe={[Ca.Dots]:1,[Ca.Lines]:1,[Ca.Cross]:6},$Ce=t=>({transform:t.transform,patternId:`pattern-${t.rfId}`});function uG({id:t,variant:e=Ca.Dots,gap:n=20,size:r,lineWidth:s=1,offset:i=2,color:a,style:l,className:c}){const d=b.useRef(null),{transform:h,patternId:m}=hr($Ce,Ss),g=a||FCe[e],x=r||qCe[e],y=e===Ca.Dots,w=e===Ca.Cross,S=Array.isArray(n)?n:[n,n],k=[S[0]*h[2]||1,S[1]*h[2]||1],j=x*h[2],N=w?[j,j]:k,T=y?[j/i,j/i]:[N[0]/i,N[1]/i];return ae.createElement("svg",{className:Is(["react-flow__background",c]),style:{...l,position:"absolute",width:"100%",height:"100%",top:0,left:0},ref:d,"data-testid":"rf__background"},ae.createElement("pattern",{id:m+t,x:h[0]%k[0],y:h[1]%k[1],width:k[0],height:k[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${T[0]},-${T[1]})`},y?ae.createElement(BCe,{color:g,radius:j/i}):ae.createElement(LCe,{dimensions:N,color:g,lineWidth:s})),ae.createElement("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${m+t})`}))}uG.displayName="Background";var HCe=b.memo(uG);function n7(t){throw new Error('Could not dynamically require "'+t+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var c5,jD;function QCe(){if(jD)return c5;jD=1;var t=Dz(),e=4;function n(r){return t(r,e)}return c5=n,c5}var u5,ND;function dG(){if(ND)return u5;ND=1;var t=OJ();function e(n){return typeof n=="function"?n:t}return u5=e,u5}var d5,CD;function hG(){if(CD)return d5;CD=1;var t=Pz(),e=cj(),n=dG(),r=xd();function s(i,a){var l=r(i)?t:e;return l(i,n(a))}return d5=s,d5}var h5,TD;function fG(){return TD||(TD=1,h5=hG()),h5}var f5,ED;function VCe(){if(ED)return f5;ED=1;var t=cj();function e(n,r){var s=[];return t(n,function(i,a,l){r(i,a,l)&&s.push(i)}),s}return f5=e,f5}var m5,_D;function mG(){if(_D)return m5;_D=1;var t=jJ(),e=VCe(),n=uj(),r=xd();function s(i,a){var l=r(i)?t:e;return l(i,n(a,3))}return m5=s,m5}var p5,MD;function UCe(){if(MD)return p5;MD=1;var t=Object.prototype,e=t.hasOwnProperty;function n(r,s){return r!=null&&e.call(r,s)}return p5=n,p5}var g5,AD;function pG(){if(AD)return g5;AD=1;var t=UCe(),e=NJ();function n(r,s){return r!=null&&e(r,s,t)}return g5=n,g5}var x5,RD;function WCe(){if(RD)return x5;RD=1;var t=zz(),e=Iz(),n=Lz(),r=xd(),s=dj(),i=hj(),a=CJ(),l=fj(),c="[object Map]",d="[object Set]",h=Object.prototype,m=h.hasOwnProperty;function g(x){if(x==null)return!0;if(s(x)&&(r(x)||typeof x=="string"||typeof x.splice=="function"||i(x)||l(x)||n(x)))return!x.length;var y=e(x);if(y==c||y==d)return!x.size;if(a(x))return!t(x).length;for(var w in x)if(m.call(x,w))return!1;return!0}return x5=g,x5}var v5,DD;function gG(){if(DD)return v5;DD=1;function t(e){return e===void 0}return v5=t,v5}var y5,PD;function GCe(){if(PD)return y5;PD=1;function t(e,n,r,s){var i=-1,a=e==null?0:e.length;for(s&&a&&(r=e[++i]);++i1?x.setNode(y,m):x.setNode(y)}),this},s.prototype.setNode=function(h,m){return t.has(this._nodes,h)?(arguments.length>1&&(this._nodes[h]=m),this):(this._nodes[h]=arguments.length>1?m:this._defaultNodeLabelFn(h),this._isCompound&&(this._parent[h]=n,this._children[h]={},this._children[n][h]=!0),this._in[h]={},this._preds[h]={},this._out[h]={},this._sucs[h]={},++this._nodeCount,this)},s.prototype.node=function(h){return this._nodes[h]},s.prototype.hasNode=function(h){return t.has(this._nodes,h)},s.prototype.removeNode=function(h){var m=this;if(t.has(this._nodes,h)){var g=function(x){m.removeEdge(m._edgeObjs[x])};delete this._nodes[h],this._isCompound&&(this._removeFromParentsChildList(h),delete this._parent[h],t.each(this.children(h),function(x){m.setParent(x)}),delete this._children[h]),t.each(t.keys(this._in[h]),g),delete this._in[h],delete this._preds[h],t.each(t.keys(this._out[h]),g),delete this._out[h],delete this._sucs[h],--this._nodeCount}return this},s.prototype.setParent=function(h,m){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(t.isUndefined(m))m=n;else{m+="";for(var g=m;!t.isUndefined(g);g=this.parent(g))if(g===h)throw new Error("Setting "+m+" as parent of "+h+" would create a cycle");this.setNode(m)}return this.setNode(h),this._removeFromParentsChildList(h),this._parent[h]=m,this._children[m][h]=!0,this},s.prototype._removeFromParentsChildList=function(h){delete this._children[this._parent[h]][h]},s.prototype.parent=function(h){if(this._isCompound){var m=this._parent[h];if(m!==n)return m}},s.prototype.children=function(h){if(t.isUndefined(h)&&(h=n),this._isCompound){var m=this._children[h];if(m)return t.keys(m)}else{if(h===n)return this.nodes();if(this.hasNode(h))return[]}},s.prototype.predecessors=function(h){var m=this._preds[h];if(m)return t.keys(m)},s.prototype.successors=function(h){var m=this._sucs[h];if(m)return t.keys(m)},s.prototype.neighbors=function(h){var m=this.predecessors(h);if(m)return t.union(m,this.successors(h))},s.prototype.isLeaf=function(h){var m;return this.isDirected()?m=this.successors(h):m=this.neighbors(h),m.length===0},s.prototype.filterNodes=function(h){var m=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});m.setGraph(this.graph());var g=this;t.each(this._nodes,function(w,S){h(S)&&m.setNode(S,w)}),t.each(this._edgeObjs,function(w){m.hasNode(w.v)&&m.hasNode(w.w)&&m.setEdge(w,g.edge(w))});var x={};function y(w){var S=g.parent(w);return S===void 0||m.hasNode(S)?(x[w]=S,S):S in x?x[S]:y(S)}return this._isCompound&&t.each(m.nodes(),function(w){m.setParent(w,y(w))}),m},s.prototype.setDefaultEdgeLabel=function(h){return t.isFunction(h)||(h=t.constant(h)),this._defaultEdgeLabelFn=h,this},s.prototype.edgeCount=function(){return this._edgeCount},s.prototype.edges=function(){return t.values(this._edgeObjs)},s.prototype.setPath=function(h,m){var g=this,x=arguments;return t.reduce(h,function(y,w){return x.length>1?g.setEdge(y,w,m):g.setEdge(y,w),w}),this},s.prototype.setEdge=function(){var h,m,g,x,y=!1,w=arguments[0];typeof w=="object"&&w!==null&&"v"in w?(h=w.v,m=w.w,g=w.name,arguments.length===2&&(x=arguments[1],y=!0)):(h=w,m=arguments[1],g=arguments[3],arguments.length>2&&(x=arguments[2],y=!0)),h=""+h,m=""+m,t.isUndefined(g)||(g=""+g);var S=l(this._isDirected,h,m,g);if(t.has(this._edgeLabels,S))return y&&(this._edgeLabels[S]=x),this;if(!t.isUndefined(g)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(h),this.setNode(m),this._edgeLabels[S]=y?x:this._defaultEdgeLabelFn(h,m,g);var k=c(this._isDirected,h,m,g);return h=k.v,m=k.w,Object.freeze(k),this._edgeObjs[S]=k,i(this._preds[m],h),i(this._sucs[h],m),this._in[m][S]=k,this._out[h][S]=k,this._edgeCount++,this},s.prototype.edge=function(h,m,g){var x=arguments.length===1?d(this._isDirected,arguments[0]):l(this._isDirected,h,m,g);return this._edgeLabels[x]},s.prototype.hasEdge=function(h,m,g){var x=arguments.length===1?d(this._isDirected,arguments[0]):l(this._isDirected,h,m,g);return t.has(this._edgeLabels,x)},s.prototype.removeEdge=function(h,m,g){var x=arguments.length===1?d(this._isDirected,arguments[0]):l(this._isDirected,h,m,g),y=this._edgeObjs[x];return y&&(h=y.v,m=y.w,delete this._edgeLabels[x],delete this._edgeObjs[x],a(this._preds[m],h),a(this._sucs[h],m),delete this._in[m][x],delete this._out[h][x],this._edgeCount--),this},s.prototype.inEdges=function(h,m){var g=this._in[h];if(g){var x=t.values(g);return m?t.filter(x,function(y){return y.v===m}):x}},s.prototype.outEdges=function(h,m){var g=this._out[h];if(g){var x=t.values(g);return m?t.filter(x,function(y){return y.w===m}):x}},s.prototype.nodeEdges=function(h,m){var g=this.inEdges(h,m);if(g)return g.concat(this.outEdges(h,m))};function i(h,m){h[m]?h[m]++:h[m]=1}function a(h,m){--h[m]||delete h[m]}function l(h,m,g,x){var y=""+m,w=""+g;if(!h&&y>w){var S=y;y=w,w=S}return y+r+w+r+(t.isUndefined(x)?e:x)}function c(h,m,g,x){var y=""+m,w=""+g;if(!h&&y>w){var S=y;y=w,w=S}var k={v:y,w};return x&&(k.name=x),k}function d(h,m){return l(h,m.v,m.w,m.name)}return A5}var R5,XD;function r8e(){return XD||(XD=1,R5="2.1.8"),R5}var D5,YD;function s8e(){return YD||(YD=1,D5={Graph:r7(),version:r8e()}),D5}var P5,KD;function i8e(){if(KD)return P5;KD=1;var t=za(),e=r7();P5={write:n,read:i};function n(a){var l={options:{directed:a.isDirected(),multigraph:a.isMultigraph(),compound:a.isCompound()},nodes:r(a),edges:s(a)};return t.isUndefined(a.graph())||(l.value=t.clone(a.graph())),l}function r(a){return t.map(a.nodes(),function(l){var c=a.node(l),d=a.parent(l),h={v:l};return t.isUndefined(c)||(h.value=c),t.isUndefined(d)||(h.parent=d),h})}function s(a){return t.map(a.edges(),function(l){var c=a.edge(l),d={v:l.v,w:l.w};return t.isUndefined(l.name)||(d.name=l.name),t.isUndefined(c)||(d.value=c),d})}function i(a){var l=new e(a.options).setGraph(a.value);return t.each(a.nodes,function(c){l.setNode(c.v,c.value),c.parent&&l.setParent(c.v,c.parent)}),t.each(a.edges,function(c){l.setEdge({v:c.v,w:c.w,name:c.name},c.value)}),l}return P5}var z5,ZD;function a8e(){if(ZD)return z5;ZD=1;var t=za();z5=e;function e(n){var r={},s=[],i;function a(l){t.has(r,l)||(r[l]=!0,i.push(l),t.each(n.successors(l),a),t.each(n.predecessors(l),a))}return t.each(n.nodes(),function(l){i=[],a(l),i.length&&s.push(i)}),s}return z5}var I5,JD;function bG(){if(JD)return I5;JD=1;var t=za();I5=e;function e(){this._arr=[],this._keyIndices={}}return e.prototype.size=function(){return this._arr.length},e.prototype.keys=function(){return this._arr.map(function(n){return n.key})},e.prototype.has=function(n){return t.has(this._keyIndices,n)},e.prototype.priority=function(n){var r=this._keyIndices[n];if(r!==void 0)return this._arr[r].priority},e.prototype.min=function(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key},e.prototype.add=function(n,r){var s=this._keyIndices;if(n=String(n),!t.has(s,n)){var i=this._arr,a=i.length;return s[n]=a,i.push({key:n,priority:r}),this._decrease(a),!0}return!1},e.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var n=this._arr.pop();return delete this._keyIndices[n.key],this._heapify(0),n.key},e.prototype.decrease=function(n,r){var s=this._keyIndices[n];if(r>this._arr[s].priority)throw new Error("New priority is greater than current priority. Key: "+n+" Old: "+this._arr[s].priority+" New: "+r);this._arr[s].priority=r,this._decrease(s)},e.prototype._heapify=function(n){var r=this._arr,s=2*n,i=s+1,a=n;s>1,!(r[i].priority0&&(m=h.removeMin(),g=d[m],g.distance!==Number.POSITIVE_INFINITY);)c(m).forEach(x);return d}return L5}var B5,tP;function o8e(){if(tP)return B5;tP=1;var t=wG(),e=za();B5=n;function n(r,s,i){return e.transform(r.nodes(),function(a,l){a[l]=t(r,l,s,i)},{})}return B5}var F5,nP;function SG(){if(nP)return F5;nP=1;var t=za();F5=e;function e(n){var r=0,s=[],i={},a=[];function l(c){var d=i[c]={onStack:!0,lowlink:r,index:r++};if(s.push(c),n.successors(c).forEach(function(g){t.has(i,g)?i[g].onStack&&(d.lowlink=Math.min(d.lowlink,i[g].index)):(l(g),d.lowlink=Math.min(d.lowlink,i[g].lowlink))}),d.lowlink===d.index){var h=[],m;do m=s.pop(),i[m].onStack=!1,h.push(m);while(c!==m);a.push(h)}}return n.nodes().forEach(function(c){t.has(i,c)||l(c)}),a}return F5}var q5,rP;function l8e(){if(rP)return q5;rP=1;var t=za(),e=SG();q5=n;function n(r){return t.filter(e(r),function(s){return s.length>1||s.length===1&&r.hasEdge(s[0],s[0])})}return q5}var $5,sP;function c8e(){if(sP)return $5;sP=1;var t=za();$5=n;var e=t.constant(1);function n(s,i,a){return r(s,i||e,a||function(l){return s.outEdges(l)})}function r(s,i,a){var l={},c=s.nodes();return c.forEach(function(d){l[d]={},l[d][d]={distance:0},c.forEach(function(h){d!==h&&(l[d][h]={distance:Number.POSITIVE_INFINITY})}),a(d).forEach(function(h){var m=h.v===d?h.w:h.v,g=i(h);l[d][m]={distance:g,predecessor:d}})}),c.forEach(function(d){var h=l[d];c.forEach(function(m){var g=l[m];c.forEach(function(x){var y=g[d],w=h[x],S=g[x],k=y.distance+w.distance;k0;){if(d=c.removeMin(),t.has(l,d))a.setEdge(d,l[d]);else{if(m)throw new Error("Input graph is not connected: "+s);m=!0}s.nodeEdges(d).forEach(h)}return a}return G5}var X5,dP;function m8e(){return dP||(dP=1,X5={components:a8e(),dijkstra:wG(),dijkstraAll:o8e(),findCycles:l8e(),floydWarshall:c8e(),isAcyclic:u8e(),postorder:d8e(),preorder:h8e(),prim:f8e(),tarjan:SG(),topsort:kG()}),X5}var Y5,hP;function p8e(){if(hP)return Y5;hP=1;var t=s8e();return Y5={Graph:t.Graph,json:i8e(),alg:m8e(),version:t.version},Y5}var K5,fP;function Ja(){if(fP)return K5;fP=1;var t;if(typeof n7=="function")try{t=p8e()}catch{}return t||(t=window.graphlib),K5=t,K5}var Z5,mP;function g8e(){if(mP)return Z5;mP=1;var t=Dz(),e=1,n=4;function r(s){return t(s,e|n)}return Z5=r,Z5}var J5,pP;function x8e(){if(pP)return J5;pP=1;var t=pj(),e=Hz(),n=$z(),r=Ry(),s=Object.prototype,i=s.hasOwnProperty,a=t(function(l,c){l=Object(l);var d=-1,h=c.length,m=h>2?c[2]:void 0;for(m&&n(c[0],c[1],m)&&(h=1);++d1?i[l-1]:void 0,d=l>2?i[2]:void 0;for(c=r.length>3&&typeof c=="function"?(l--,c):void 0,d&&e(i[0],i[1],d)&&(c=l<3?void 0:c,l=1),s=Object(s);++a0;--S)if(w=h[S].dequeue(),w){g=g.concat(a(d,h,m,w,!0));break}}}return g}function a(d,h,m,g,x){var y=x?[]:void 0;return t.forEach(d.inEdges(g.v),function(w){var S=d.edge(w),k=d.node(w.v);x&&y.push({v:w.v,w:w.w}),k.out-=S,c(h,m,k)}),t.forEach(d.outEdges(g.v),function(w){var S=d.edge(w),k=w.w,j=d.node(k);j.in-=S,c(h,m,j)}),d.removeNode(g.v),y}function l(d,h){var m=new e,g=0,x=0;t.forEach(d.nodes(),function(S){m.setNode(S,{v:S,in:0,out:0})}),t.forEach(d.edges(),function(S){var k=m.edge(S.v,S.w)||0,j=h(S),N=k+j;m.setEdge(S.v,S.w,N),x=Math.max(x,m.node(S.v).out+=j),g=Math.max(g,m.node(S.w).in+=j)});var y=t.range(x+g+3).map(function(){return new n}),w=g+1;return t.forEach(m.nodes(),function(S){c(y,w,m.node(S))}),{graph:m,buckets:y,zeroIdx:w}}function c(d,h,m){m.out?m.in?d[m.out-m.in+h].enqueue(m):d[d.length-1].enqueue(m):d[0].enqueue(m)}return x3}var v3,DP;function R8e(){if(DP)return v3;DP=1;var t=Nr(),e=A8e();v3={run:n,undo:s};function n(i){var a=i.graph().acyclicer==="greedy"?e(i,l(i)):r(i);t.forEach(a,function(c){var d=i.edge(c);i.removeEdge(c),d.forwardName=c.name,d.reversed=!0,i.setEdge(c.w,c.v,d,t.uniqueId("rev"))});function l(c){return function(d){return c.edge(d).weight}}}function r(i){var a=[],l={},c={};function d(h){t.has(c,h)||(c[h]=!0,l[h]=!0,t.forEach(i.outEdges(h),function(m){t.has(l,m.w)?a.push(m):d(m.w)}),delete l[h])}return t.forEach(i.nodes(),d),a}function s(i){t.forEach(i.edges(),function(a){var l=i.edge(a);if(l.reversed){i.removeEdge(a);var c=l.forwardName;delete l.reversed,delete l.forwardName,i.setEdge(a.w,a.v,l,c)}})}return v3}var y3,PP;function ji(){if(PP)return y3;PP=1;var t=Nr(),e=Ja().Graph;y3={addDummyNode:n,simplify:r,asNonCompoundGraph:s,successorWeights:i,predecessorWeights:a,intersectRect:l,buildLayerMatrix:c,normalizeRanks:d,removeEmptyRanks:h,addBorderNode:m,maxRank:g,partition:x,time:y,notime:w};function n(S,k,j,N){var T;do T=t.uniqueId(N);while(S.hasNode(T));return j.dummy=k,S.setNode(T,j),T}function r(S){var k=new e().setGraph(S.graph());return t.forEach(S.nodes(),function(j){k.setNode(j,S.node(j))}),t.forEach(S.edges(),function(j){var N=k.edge(j.v,j.w)||{weight:0,minlen:1},T=S.edge(j);k.setEdge(j.v,j.w,{weight:N.weight+T.weight,minlen:Math.max(N.minlen,T.minlen)})}),k}function s(S){var k=new e({multigraph:S.isMultigraph()}).setGraph(S.graph());return t.forEach(S.nodes(),function(j){S.children(j).length||k.setNode(j,S.node(j))}),t.forEach(S.edges(),function(j){k.setEdge(j,S.edge(j))}),k}function i(S){var k=t.map(S.nodes(),function(j){var N={};return t.forEach(S.outEdges(j),function(T){N[T.w]=(N[T.w]||0)+S.edge(T).weight}),N});return t.zipObject(S.nodes(),k)}function a(S){var k=t.map(S.nodes(),function(j){var N={};return t.forEach(S.inEdges(j),function(T){N[T.v]=(N[T.v]||0)+S.edge(T).weight}),N});return t.zipObject(S.nodes(),k)}function l(S,k){var j=S.x,N=S.y,T=k.x-j,E=k.y-N,_=S.width/2,M=S.height/2;if(!T&&!E)throw new Error("Not possible to find intersection inside of the rectangle");var I,P;return Math.abs(E)*_>Math.abs(T)*M?(E<0&&(M=-M),I=M*T/E,P=M):(T<0&&(_=-_),I=_,P=_*E/T),{x:j+I,y:N+P}}function c(S){var k=t.map(t.range(g(S)+1),function(){return[]});return t.forEach(S.nodes(),function(j){var N=S.node(j),T=N.rank;t.isUndefined(T)||(k[T][N.order]=j)}),k}function d(S){var k=t.min(t.map(S.nodes(),function(j){return S.node(j).rank}));t.forEach(S.nodes(),function(j){var N=S.node(j);t.has(N,"rank")&&(N.rank-=k)})}function h(S){var k=t.min(t.map(S.nodes(),function(E){return S.node(E).rank})),j=[];t.forEach(S.nodes(),function(E){var _=S.node(E).rank-k;j[_]||(j[_]=[]),j[_].push(E)});var N=0,T=S.graph().nodeRankFactor;t.forEach(j,function(E,_){t.isUndefined(E)&&_%T!==0?--N:N&&t.forEach(E,function(M){S.node(M).rank+=N})})}function m(S,k,j,N){var T={width:0,height:0};return arguments.length>=4&&(T.rank=j,T.order=N),n(S,"border",T,k)}function g(S){return t.max(t.map(S.nodes(),function(k){var j=S.node(k).rank;if(!t.isUndefined(j))return j}))}function x(S,k){var j={lhs:[],rhs:[]};return t.forEach(S,function(N){k(N)?j.lhs.push(N):j.rhs.push(N)}),j}function y(S,k){var j=t.now();try{return k()}finally{console.log(S+" time: "+(t.now()-j)+"ms")}}function w(S,k){return k()}return y3}var b3,zP;function D8e(){if(zP)return b3;zP=1;var t=Nr(),e=ji();b3={run:n,undo:s};function n(i){i.graph().dummyChains=[],t.forEach(i.edges(),function(a){r(i,a)})}function r(i,a){var l=a.v,c=i.node(l).rank,d=a.w,h=i.node(d).rank,m=a.name,g=i.edge(a),x=g.labelRank;if(h!==c+1){i.removeEdge(a);var y,w,S;for(S=0,++c;cP.lim&&(L=P,H=!0);var U=t.filter(T.edges(),function(ee){return H===j(N,N.node(ee.v),L)&&H!==j(N,N.node(ee.w),L)});return t.minBy(U,function(ee){return n(T,ee)})}function w(N,T,E,_){var M=E.v,I=E.w;N.removeEdge(M,I),N.setEdge(_.v,_.w,{}),m(N),c(N,T),S(N,T)}function S(N,T){var E=t.find(N.nodes(),function(M){return!T.node(M).parent}),_=s(N,E);_=_.slice(1),t.forEach(_,function(M){var I=N.node(M).parent,P=T.edge(M,I),L=!1;P||(P=T.edge(I,M),L=!0),T.node(M).rank=T.node(I).rank+(L?P.minlen:-P.minlen)})}function k(N,T,E){return N.hasEdge(T,E)}function j(N,T,E){return E.low<=T.lim&&T.lim<=E.lim}return k3}var O3,FP;function z8e(){if(FP)return O3;FP=1;var t=Ey(),e=t.longestPath,n=CG(),r=P8e();O3=s;function s(c){switch(c.graph().ranker){case"network-simplex":l(c);break;case"tight-tree":a(c);break;case"longest-path":i(c);break;default:l(c)}}var i=e;function a(c){e(c),n(c)}function l(c){r(c)}return O3}var j3,qP;function I8e(){if(qP)return j3;qP=1;var t=Nr();j3=e;function e(s){var i=r(s);t.forEach(s.graph().dummyChains,function(a){for(var l=s.node(a),c=l.edgeObj,d=n(s,i,c.v,c.w),h=d.path,m=d.lca,g=0,x=h[g],y=!0;a!==c.w;){if(l=s.node(a),y){for(;(x=h[g])!==m&&s.node(x).maxRankh||m>i[g].lim));for(x=g,g=l;(g=s.parent(g))!==x;)d.push(g);return{path:c.concat(d.reverse()),lca:x}}function r(s){var i={},a=0;function l(c){var d=a;t.forEach(s.children(c),l),i[c]={low:d,lim:a++}}return t.forEach(s.children(),l),i}return j3}var N3,$P;function L8e(){if($P)return N3;$P=1;var t=Nr(),e=ji();N3={run:n,cleanup:a};function n(l){var c=e.addDummyNode(l,"root",{},"_root"),d=s(l),h=t.max(t.values(d))-1,m=2*h+1;l.graph().nestingRoot=c,t.forEach(l.edges(),function(x){l.edge(x).minlen*=m});var g=i(l)+1;t.forEach(l.children(),function(x){r(l,c,m,g,h,d,x)}),l.graph().nodeRankFactor=m}function r(l,c,d,h,m,g,x){var y=l.children(x);if(!y.length){x!==c&&l.setEdge(c,x,{weight:0,minlen:d});return}var w=e.addBorderNode(l,"_bt"),S=e.addBorderNode(l,"_bb"),k=l.node(x);l.setParent(w,x),k.borderTop=w,l.setParent(S,x),k.borderBottom=S,t.forEach(y,function(j){r(l,c,d,h,m,g,j);var N=l.node(j),T=N.borderTop?N.borderTop:j,E=N.borderBottom?N.borderBottom:j,_=N.borderTop?h:2*h,M=T!==E?1:m-g[x]+1;l.setEdge(w,T,{weight:_,minlen:M,nestingEdge:!0}),l.setEdge(E,S,{weight:_,minlen:M,nestingEdge:!0})}),l.parent(x)||l.setEdge(c,w,{weight:0,minlen:m+g[x]})}function s(l){var c={};function d(h,m){var g=l.children(h);g&&g.length&&t.forEach(g,function(x){d(x,m+1)}),c[h]=m}return t.forEach(l.children(),function(h){d(h,1)}),c}function i(l){return t.reduce(l.edges(),function(c,d){return c+l.edge(d).weight},0)}function a(l){var c=l.graph();l.removeNode(c.nestingRoot),delete c.nestingRoot,t.forEach(l.edges(),function(d){var h=l.edge(d);h.nestingEdge&&l.removeEdge(d)})}return N3}var C3,HP;function B8e(){if(HP)return C3;HP=1;var t=Nr(),e=ji();C3=n;function n(s){function i(a){var l=s.children(a),c=s.node(a);if(l.length&&t.forEach(l,i),t.has(c,"minRank")){c.borderLeft=[],c.borderRight=[];for(var d=c.minRank,h=c.maxRank+1;d0;)x%2&&(y+=h[x+1]),x=x-1>>1,h[x]+=g.weight;m+=g.weight*y})),m}return _3}var M3,WP;function H8e(){if(WP)return M3;WP=1;var t=Nr();M3=e;function e(n,r){return t.map(r,function(s){var i=n.inEdges(s);if(i.length){var a=t.reduce(i,function(l,c){var d=n.edge(c),h=n.node(c.v);return{sum:l.sum+d.weight*h.order,weight:l.weight+d.weight}},{sum:0,weight:0});return{v:s,barycenter:a.sum/a.weight,weight:a.weight}}else return{v:s}})}return M3}var A3,GP;function Q8e(){if(GP)return A3;GP=1;var t=Nr();A3=e;function e(s,i){var a={};t.forEach(s,function(c,d){var h=a[c.v]={indegree:0,in:[],out:[],vs:[c.v],i:d};t.isUndefined(c.barycenter)||(h.barycenter=c.barycenter,h.weight=c.weight)}),t.forEach(i.edges(),function(c){var d=a[c.v],h=a[c.w];!t.isUndefined(d)&&!t.isUndefined(h)&&(h.indegree++,d.out.push(a[c.w]))});var l=t.filter(a,function(c){return!c.indegree});return n(l)}function n(s){var i=[];function a(d){return function(h){h.merged||(t.isUndefined(h.barycenter)||t.isUndefined(d.barycenter)||h.barycenter>=d.barycenter)&&r(d,h)}}function l(d){return function(h){h.in.push(d),--h.indegree===0&&s.push(h)}}for(;s.length;){var c=s.pop();i.push(c),t.forEach(c.in.reverse(),a(c)),t.forEach(c.out,l(c))}return t.map(t.filter(i,function(d){return!d.merged}),function(d){return t.pick(d,["vs","i","barycenter","weight"])})}function r(s,i){var a=0,l=0;s.weight&&(a+=s.barycenter*s.weight,l+=s.weight),i.weight&&(a+=i.barycenter*i.weight,l+=i.weight),s.vs=i.vs.concat(s.vs),s.barycenter=a/l,s.weight=l,s.i=Math.min(i.i,s.i),i.merged=!0}return A3}var R3,XP;function V8e(){if(XP)return R3;XP=1;var t=Nr(),e=ji();R3=n;function n(i,a){var l=e.partition(i,function(w){return t.has(w,"barycenter")}),c=l.lhs,d=t.sortBy(l.rhs,function(w){return-w.i}),h=[],m=0,g=0,x=0;c.sort(s(!!a)),x=r(h,d,x),t.forEach(c,function(w){x+=w.vs.length,h.push(w.vs),m+=w.barycenter*w.weight,g+=w.weight,x=r(h,d,x)});var y={vs:t.flatten(h,!0)};return g&&(y.barycenter=m/g,y.weight=g),y}function r(i,a,l){for(var c;a.length&&(c=t.last(a)).i<=l;)a.pop(),i.push(c.vs),l++;return l}function s(i){return function(a,l){return a.barycenterl.barycenter?1:i?l.i-a.i:a.i-l.i}}return R3}var D3,YP;function U8e(){if(YP)return D3;YP=1;var t=Nr(),e=H8e(),n=Q8e(),r=V8e();D3=s;function s(l,c,d,h){var m=l.children(c),g=l.node(c),x=g?g.borderLeft:void 0,y=g?g.borderRight:void 0,w={};x&&(m=t.filter(m,function(E){return E!==x&&E!==y}));var S=e(l,m);t.forEach(S,function(E){if(l.children(E.v).length){var _=s(l,E.v,d,h);w[E.v]=_,t.has(_,"barycenter")&&a(E,_)}});var k=n(S,d);i(k,w);var j=r(k,h);if(x&&(j.vs=t.flatten([x,j.vs,y],!0),l.predecessors(x).length)){var N=l.node(l.predecessors(x)[0]),T=l.node(l.predecessors(y)[0]);t.has(j,"barycenter")||(j.barycenter=0,j.weight=0),j.barycenter=(j.barycenter*j.weight+N.order+T.order)/(j.weight+2),j.weight+=2}return j}function i(l,c){t.forEach(l,function(d){d.vs=t.flatten(d.vs.map(function(h){return c[h]?c[h].vs:h}),!0)})}function a(l,c){t.isUndefined(l.barycenter)?(l.barycenter=c.barycenter,l.weight=c.weight):(l.barycenter=(l.barycenter*l.weight+c.barycenter*c.weight)/(l.weight+c.weight),l.weight+=c.weight)}return D3}var P3,KP;function W8e(){if(KP)return P3;KP=1;var t=Nr(),e=Ja().Graph;P3=n;function n(s,i,a){var l=r(s),c=new e({compound:!0}).setGraph({root:l}).setDefaultNodeLabel(function(d){return s.node(d)});return t.forEach(s.nodes(),function(d){var h=s.node(d),m=s.parent(d);(h.rank===i||h.minRank<=i&&i<=h.maxRank)&&(c.setNode(d),c.setParent(d,m||l),t.forEach(s[a](d),function(g){var x=g.v===d?g.w:g.v,y=c.edge(x,d),w=t.isUndefined(y)?0:y.weight;c.setEdge(x,d,{weight:s.edge(g).weight+w})}),t.has(h,"minRank")&&c.setNode(d,{borderLeft:h.borderLeft[i],borderRight:h.borderRight[i]}))}),c}function r(s){for(var i;s.hasNode(i=t.uniqueId("_root")););return i}return P3}var z3,ZP;function G8e(){if(ZP)return z3;ZP=1;var t=Nr();z3=e;function e(n,r,s){var i={},a;t.forEach(s,function(l){for(var c=n.parent(l),d,h;c;){if(d=n.parent(c),d?(h=i[d],i[d]=c):(h=a,a=c),h&&h!==c){r.setEdge(h,c);return}c=d}})}return z3}var I3,JP;function X8e(){if(JP)return I3;JP=1;var t=Nr(),e=q8e(),n=$8e(),r=U8e(),s=W8e(),i=G8e(),a=Ja().Graph,l=ji();I3=c;function c(g){var x=l.maxRank(g),y=d(g,t.range(1,x+1),"inEdges"),w=d(g,t.range(x-1,-1,-1),"outEdges"),S=e(g);m(g,S);for(var k=Number.POSITIVE_INFINITY,j,N=0,T=0;T<4;++N,++T){h(N%2?y:w,N%4>=2),S=l.buildLayerMatrix(g);var E=n(g,S);EL)&&a(N,ee,H)})})}function E(_,M){var I=-1,P,L=0;return t.forEach(M,function(H,U){if(k.node(H).dummy==="border"){var ee=k.predecessors(H);ee.length&&(P=k.node(ee[0]).order,T(M,L,U,I,P),L=U,I=P)}T(M,L,M.length,P,_.length)}),M}return t.reduce(j,E),N}function i(k,j){if(k.node(j).dummy)return t.find(k.predecessors(j),function(N){return k.node(N).dummy})}function a(k,j,N){if(j>N){var T=j;j=N,N=T}var E=k[j];E||(k[j]=E={}),E[N]=!0}function l(k,j,N){if(j>N){var T=j;j=N,N=T}return t.has(k[j],N)}function c(k,j,N,T){var E={},_={},M={};return t.forEach(j,function(I){t.forEach(I,function(P,L){E[P]=P,_[P]=P,M[P]=L})}),t.forEach(j,function(I){var P=-1;t.forEach(I,function(L){var H=T(L);if(H.length){H=t.sortBy(H,function(B){return M[B]});for(var U=(H.length-1)/2,ee=Math.floor(U),z=Math.ceil(U);ee<=z;++ee){var Q=H[ee];_[L]===L&&Po.jsxs("div",{className:"px-4 py-2 shadow-md rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700 min-w-[120px]",children:[o.jsx(ru,{type:"target",position:wt.Top}),o.jsx("div",{className:"font-semibold text-white text-sm truncate max-w-[200px]",title:t.content,children:t.label}),o.jsx(ru,{type:"source",position:wt.Bottom})]}));TG.displayName="EntityNode";const EG=b.memo(({data:t})=>o.jsxs("div",{className:"px-3 py-2 shadow-md rounded-md bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700 min-w-[100px]",children:[o.jsx(ru,{type:"target",position:wt.Top}),o.jsx("div",{className:"font-medium text-white text-xs truncate max-w-[150px]",title:t.content,children:t.label}),o.jsx(ru,{type:"source",position:wt.Bottom})]}));EG.displayName="ParagraphNode";const aTe={entity:TG,paragraph:EG};function oTe(t,e){const n=new az.graphlib.Graph;n.setDefaultEdgeLabel(()=>({})),n.setGraph({rankdir:"TB",ranksep:100,nodesep:80});const r=[],s=[];return t.forEach(i=>{n.setNode(i.id,{width:150,height:50})}),e.forEach(i=>{n.setEdge(i.source,i.target)}),az.layout(n),t.forEach(i=>{const a=n.node(i.id);r.push({id:i.id,type:i.type,position:{x:a.x-75,y:a.y-25},data:{label:i.content.slice(0,20)+(i.content.length>20?"...":""),content:i.content}})}),e.forEach((i,a)=>{const l={id:`edge-${a}`,source:i.source,target:i.target,animated:t.length<=200&&i.weight>5,style:{strokeWidth:Math.min(i.weight/2,5),opacity:.6}};i.weight>10&&t.length<100&&(l.label=`${i.weight.toFixed(0)}`),s.push(l)}),{nodes:r,edges:s}}function lTe(){const t=Zi(),[e,n]=b.useState(!1),[r,s]=b.useState(null),[i,a]=b.useState(""),[l,c]=b.useState("all"),[d,h]=b.useState(50),[m,g]=b.useState("50"),[x,y]=b.useState(!1),[w,S]=b.useState(!0),[k,j]=b.useState(!1),[N,T]=b.useState(!1),[E,_,M]=yCe([]),[I,P,L]=bCe([]),[H,U]=b.useState(0),[ee,z]=b.useState(null),[Q,B]=b.useState(null),{toast:X}=fs(),J=b.useCallback(ne=>ne.type==="entity"?"#6366f1":ne.type==="paragraph"?"#10b981":"#6b7280",[]),G=b.useCallback(async(ne=!1)=>{try{if(!ne&&d>200){T(!0);return}n(!0);const[K,se]=await Promise.all([rTe(d,l),sTe()]);if(s(se),K.nodes.length===0){X({title:"提示",description:"知识库为空,请先导入知识数据"}),_([]),P([]);return}const{nodes:re,edges:oe}=oTe(K.nodes,K.edges);_(re),P(oe),U(re.length),se&&se.total_nodes>d&&X({title:"提示",description:`知识图谱包含 ${se.total_nodes} 个节点,当前显示 ${re.length} 个`}),X({title:"加载成功",description:`已加载 ${re.length} 个节点,${oe.length} 条边`})}catch(K){console.error("加载知识图谱失败:",K),X({title:"加载失败",description:K instanceof Error?K.message:"未知错误",variant:"destructive"})}finally{n(!1)}},[d,l,X]),R=b.useCallback(async()=>{if(!i.trim()){X({title:"提示",description:"请输入搜索关键词"});return}try{const ne=await iTe(i);if(ne.length===0){X({title:"未找到",description:"没有找到匹配的节点"});return}const K=new Set(ne.map(se=>se.id));_(se=>se.map(re=>({...re,style:{...re.style,opacity:K.has(re.id)?1:.3,filter:K.has(re.id)?"brightness(1.2)":"brightness(0.8)"}}))),X({title:"搜索完成",description:`找到 ${ne.length} 个匹配节点`})}catch(ne){console.error("搜索失败:",ne),X({title:"搜索失败",description:ne instanceof Error?ne.message:"未知错误",variant:"destructive"})}},[i,X]),ie=b.useCallback(()=>{_(ne=>ne.map(K=>({...K,style:{...K.style,opacity:1,filter:"brightness(1)"}})))},[]),W=b.useCallback(()=>{S(!1),j(!0),G()},[G]),q=b.useCallback(()=>{T(!1),setTimeout(()=>{G(!0)},0)},[G]),V=b.useCallback((ne,K)=>{E.find(re=>re.id===K.id)&&z({id:K.id,type:K.type,content:K.data.content})},[E]);b.useEffect(()=>{w||k&&G()},[d,l,w,k]);const te=b.useCallback((ne,K)=>{const se=E.find(Te=>Te.id===K.source),re=E.find(Te=>Te.id===K.target),oe=I.find(Te=>Te.id===K.id);se&&re&&oe&&B({source:{id:se.id,type:se.type,content:se.data.content},target:{id:re.id,type:re.type,content:re.data.content},edge:{source:K.source,target:K.target,weight:parseFloat(K.label||"0")}})},[E,I]);return o.jsxs("div",{className:"h-full flex flex-col",children:[o.jsxs("div",{className:"flex-shrink-0 p-4 border-b bg-background",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦知识库图谱"}),o.jsx("p",{className:"text-muted-foreground mt-1",children:"可视化知识实体与关系网络"})]}),r&&o.jsxs("div",{className:"flex gap-2 flex-wrap",children:[o.jsxs(Xn,{variant:"outline",className:"gap-1",children:[o.jsx(G3,{className:"h-3 w-3"}),"节点: ",r.total_nodes]}),o.jsxs(Xn,{variant:"outline",className:"gap-1",children:[o.jsx(gI,{className:"h-3 w-3"}),"边: ",r.total_edges]}),o.jsxs(Xn,{variant:"outline",className:"gap-1",children:[o.jsx(Oa,{className:"h-3 w-3"}),"实体: ",r.entity_nodes]}),o.jsxs(Xn,{variant:"outline",className:"gap-1",children:[o.jsx(Pl,{className:"h-3 w-3"}),"段落: ",r.paragraph_nodes]})]})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 mt-4",children:[o.jsxs("div",{className:"flex-1 flex gap-2",children:[o.jsx(ze,{placeholder:"搜索节点内容...",value:i,onChange:ne=>a(ne.target.value),onKeyDown:ne=>ne.key==="Enter"&&R(),className:"flex-1"}),o.jsx(he,{onClick:R,size:"sm",children:o.jsx(Ni,{className:"h-4 w-4"})}),o.jsx(he,{onClick:ie,variant:"outline",size:"sm",children:"重置"})]}),o.jsxs("div",{className:"flex gap-2",children:[o.jsxs(Vt,{value:l,onValueChange:ne=>c(ne),children:[o.jsx($t,{className:"w-[120px]",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部节点"}),o.jsx(De,{value:"entity",children:"仅实体"}),o.jsx(De,{value:"paragraph",children:"仅段落"})]})]}),o.jsxs(Vt,{value:d===1e4?"all":x?"custom":d.toString(),onValueChange:ne=>{ne==="custom"?(y(!0),g(d.toString())):ne==="all"?(y(!1),h(1e4)):(y(!1),h(Number(ne)))},children:[o.jsx($t,{className:"w-[120px]",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"50",children:"50 节点"}),o.jsx(De,{value:"100",children:"100 节点"}),o.jsx(De,{value:"200",children:"200 节点"}),o.jsx(De,{value:"500",children:"500 节点"}),o.jsx(De,{value:"1000",children:"1000 节点"}),o.jsx(De,{value:"all",children:"全部 (最多10000)"}),o.jsx(De,{value:"custom",children:"自定义..."})]})]}),x&&o.jsx(ze,{type:"number",min:"50",value:m,onChange:ne=>g(ne.target.value),onBlur:()=>{const ne=parseInt(m);!isNaN(ne)&&ne>=50?h(ne):(g("50"),h(50))},onKeyDown:ne=>{if(ne.key==="Enter"){const K=parseInt(m);!isNaN(K)&&K>=50?h(K):(g("50"),h(50))}},placeholder:"最少50个",className:"w-[120px]"}),o.jsx(he,{onClick:()=>G(),variant:"outline",size:"sm",disabled:e,children:o.jsx(Qs,{className:ve("h-4 w-4",e&&"animate-spin")})})]})]})]}),o.jsx("div",{className:"flex-1 relative",children:e?o.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:o.jsxs("div",{className:"text-center",children:[o.jsx(Qs,{className:"h-8 w-8 animate-spin mx-auto mb-2 text-muted-foreground"}),o.jsx("p",{className:"text-muted-foreground",children:"加载知识图谱中..."})]})}):E.length===0?o.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:o.jsxs("div",{className:"text-center",children:[o.jsx(G3,{className:"h-12 w-12 mx-auto mb-4 text-muted-foreground"}),o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"知识库为空"}),o.jsx("p",{className:"text-muted-foreground",children:"请先导入知识数据"})]})}):o.jsxs(iG,{nodes:E,edges:I,onNodesChange:M,onEdgesChange:L,onNodeClick:V,onEdgeClick:te,nodeTypes:aTe,fitView:!0,minZoom:.05,maxZoom:1.5,defaultViewport:{x:0,y:0,zoom:.5},elevateNodesOnSelect:H<=500,nodesDraggable:H<=1e3,attributionPosition:"bottom-left",children:[o.jsx(HCe,{variant:Ca.Dots,gap:12,size:1}),o.jsx(ICe,{}),H<=500&&o.jsx(_Ce,{nodeColor:J,nodeBorderRadius:8,pannable:!0,zoomable:!0}),o.jsxs(Wb,{position:"top-right",className:"bg-background/95 backdrop-blur-sm rounded-lg border p-3 shadow-lg",children:[o.jsx("div",{className:"text-sm font-semibold mb-2",children:"图例"}),o.jsxs("div",{className:"space-y-2 text-xs",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700"}),o.jsx("span",{children:"实体节点"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700"}),o.jsx("span",{children:"段落节点"})]}),H>200&&o.jsxs("div",{className:"mt-2 pt-2 border-t text-yellow-600 dark:text-yellow-500",children:[o.jsx("div",{className:"font-semibold",children:"性能模式"}),o.jsx("div",{children:"已禁用动画"}),H>500&&o.jsx("div",{children:"已禁用缩略图"})]})]})]})]})}),o.jsx(Dr,{open:!!ee,onOpenChange:ne=>!ne&&z(null),children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsx(kr,{children:o.jsx(Or,{children:"节点详情"})}),ee&&o.jsxs("div",{className:"space-y-4",children:[o.jsx("div",{className:"grid grid-cols-2 gap-4",children:o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"类型"}),o.jsx("div",{className:"mt-1",children:o.jsx(Xn,{variant:ee.type==="entity"?"default":"secondary",children:ee.type==="entity"?"🏷️ 实体":"📄 段落"})})]})}),o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"ID"}),o.jsx("code",{className:"mt-1 block p-2 bg-muted rounded text-xs break-all",children:ee.id})]}),o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"内容"}),o.jsx(wn,{className:"mt-1 h-40 p-3 bg-muted rounded",children:o.jsx("p",{className:"text-sm whitespace-pre-wrap",children:ee.content})})]})]})]})}),o.jsx(Dr,{open:!!Q,onOpenChange:ne=>!ne&&B(null),children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-hidden flex flex-col",children:[o.jsx(kr,{children:o.jsx(Or,{children:"边详情"})}),Q&&o.jsx(wn,{className:"flex-1 pr-4",children:o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-blue-50 dark:bg-blue-950 rounded border-2 border-blue-200 dark:border-blue-800",children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"源节点"}),o.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:Q.source.content}),o.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[Q.source.id.slice(0,40),"..."]})]}),o.jsx("div",{className:"text-2xl text-muted-foreground flex-shrink-0",children:"→"}),o.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-green-50 dark:bg-green-950 rounded border-2 border-green-200 dark:border-green-800",children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"目标节点"}),o.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:Q.target.content}),o.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[Q.target.id.slice(0,40),"..."]})]})]}),o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"权重"}),o.jsx("div",{className:"mt-1",children:o.jsx(Xn,{variant:"outline",className:"text-base font-mono",children:Q.edge.weight.toFixed(4)})})]})]})})]})}),o.jsx(Dn,{open:w,onOpenChange:S,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"加载知识图谱"}),o.jsxs(_n,{children:["知识图谱的动态展示会消耗较多系统资源。",o.jsx("br",{}),"确定要加载知识图谱吗?"]})]}),o.jsxs(Tn,{children:[o.jsx(An,{onClick:()=>t({to:"/"}),children:"取消 (返回首页)"}),o.jsx(Mn,{onClick:W,children:"确认加载"})]})]})}),o.jsx(Dn,{open:N,onOpenChange:T,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"⚠️ 节点数量较多"}),o.jsx(_n,{asChild:!0,children:o.jsxs("div",{children:[o.jsxs("p",{children:["您正在尝试加载 ",o.jsx("strong",{className:"text-orange-600",children:d>=1e4?"全部 (最多10000个)":d})," 个节点。"]}),o.jsx("p",{className:"mt-4",children:"节点数量过多可能导致:"}),o.jsxs("ul",{className:"list-disc list-inside mt-2 space-y-1",children:[o.jsx("li",{children:"页面加载时间较长"}),o.jsx("li",{children:"浏览器卡顿或崩溃"}),o.jsx("li",{children:"系统资源占用过高"})]}),o.jsx("p",{className:"mt-4",children:"建议先选择较少的节点数量 (50-200 个)。"})]})})]}),o.jsxs(Tn,{children:[o.jsx(An,{onClick:()=>{T(!1),d>200&&(h(50),y(!1))},children:"取消"}),o.jsx(Mn,{onClick:q,className:"bg-orange-600 hover:bg-orange-700",children:"我了解风险,继续加载"})]})]})})]})}function mh(t,e,n){let r=n.initialDeps??[],s;function i(){var a,l,c,d;let h;n.key&&((a=n.debug)!=null&&a.call(n))&&(h=Date.now());const m=t();if(!(m.length!==r.length||m.some((y,w)=>r[w]!==y)))return s;r=m;let x;if(n.key&&((l=n.debug)!=null&&l.call(n))&&(x=Date.now()),s=e(...m),n.key&&((c=n.debug)!=null&&c.call(n))){const y=Math.round((Date.now()-h)*100)/100,w=Math.round((Date.now()-x)*100)/100,S=w/16,k=(j,N)=>{for(j=String(j);j.length0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,n,r){if(r===void 0&&(r=!1),r){for(var s=0;s0&&(this.undefStack[this.undefStack.length-1][e]=n)}else{var i=this.undefStack[this.undefStack.length-1];i&&!i.hasOwnProperty(e)&&(i[e]=this.current[e])}n==null?delete this.current[e]:this.current[e]=n}}var vke=NU;Z("\\noexpand",function(t){var e=t.popToken();return t.isExpandable(e.text)&&(e.noexpand=!0,e.treatAsRelax=!0),{tokens:[e],numArgs:0}});Z("\\expandafter",function(t){var e=t.popToken();return t.expandOnce(!0),{tokens:[e],numArgs:0}});Z("\\@firstoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[0],numArgs:0}});Z("\\@secondoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[1],numArgs:0}});Z("\\@ifnextchar",function(t){var e=t.consumeArgs(3);t.consumeSpaces();var n=t.future();return e[0].length===1&&e[0][0].text===n.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}});Z("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");Z("\\TextOrMath",function(t){var e=t.consumeArgs(2);return t.mode==="text"?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});var FR={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};Z("\\char",function(t){var e=t.popToken(),n,r="";if(e.text==="'")n=8,e=t.popToken();else if(e.text==='"')n=16,e=t.popToken();else if(e.text==="`")if(e=t.popToken(),e.text[0]==="\\")r=e.text.charCodeAt(1);else{if(e.text==="EOF")throw new $e("\\char` missing argument");r=e.text.charCodeAt(0)}else n=10;if(n){if(r=FR[e.text],r==null||r>=n)throw new $e("Invalid base-"+n+" digit "+e.text);for(var s;(s=FR[t.future().text])!=null&&s{var s=t.consumeArg().tokens;if(s.length!==1)throw new $e("\\newcommand's first argument must be a macro name");var i=s[0].text,a=t.isDefined(i);if(a&&!e)throw new $e("\\newcommand{"+i+"} attempting to redefine "+(i+"; use \\renewcommand"));if(!a&&!n)throw new $e("\\renewcommand{"+i+"} when command "+i+" does not yet exist; use \\newcommand");var l=0;if(s=t.consumeArg().tokens,s.length===1&&s[0].text==="["){for(var c="",d=t.expandNextToken();d.text!=="]"&&d.text!=="EOF";)c+=d.text,d=t.expandNextToken();if(!c.match(/^\s*[0-9]+\s*$/))throw new $e("Invalid number of arguments: "+c);l=parseInt(c),s=t.consumeArg().tokens}return a&&r||t.macros.set(i,{tokens:s,numArgs:l}),""};Z("\\newcommand",t=>FN(t,!1,!0,!1));Z("\\renewcommand",t=>FN(t,!0,!1,!1));Z("\\providecommand",t=>FN(t,!0,!0,!0));Z("\\message",t=>{var e=t.consumeArgs(1)[0];return console.log(e.reverse().map(n=>n.text).join("")),""});Z("\\errmessage",t=>{var e=t.consumeArgs(1)[0];return console.error(e.reverse().map(n=>n.text).join("")),""});Z("\\show",t=>{var e=t.popToken(),n=e.text;return console.log(e,t.macros.get(n),qc[n],dr.math[n],dr.text[n]),""});Z("\\bgroup","{");Z("\\egroup","}");Z("~","\\nobreakspace");Z("\\lq","`");Z("\\rq","'");Z("\\aa","\\r a");Z("\\AA","\\r A");Z("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}");Z("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");Z("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}");Z("ℬ","\\mathscr{B}");Z("ℰ","\\mathscr{E}");Z("ℱ","\\mathscr{F}");Z("ℋ","\\mathscr{H}");Z("ℐ","\\mathscr{I}");Z("ℒ","\\mathscr{L}");Z("ℳ","\\mathscr{M}");Z("ℛ","\\mathscr{R}");Z("ℭ","\\mathfrak{C}");Z("ℌ","\\mathfrak{H}");Z("ℨ","\\mathfrak{Z}");Z("\\Bbbk","\\Bbb{k}");Z("·","\\cdotp");Z("\\llap","\\mathllap{\\textrm{#1}}");Z("\\rlap","\\mathrlap{\\textrm{#1}}");Z("\\clap","\\mathclap{\\textrm{#1}}");Z("\\mathstrut","\\vphantom{(}");Z("\\underbar","\\underline{\\text{#1}}");Z("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');Z("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}");Z("\\ne","\\neq");Z("≠","\\neq");Z("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}");Z("∉","\\notin");Z("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}");Z("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}");Z("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}");Z("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}");Z("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}");Z("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}");Z("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}");Z("⟂","\\perp");Z("‼","\\mathclose{!\\mkern-0.8mu!}");Z("∌","\\notni");Z("⌜","\\ulcorner");Z("⌝","\\urcorner");Z("⌞","\\llcorner");Z("⌟","\\lrcorner");Z("©","\\copyright");Z("®","\\textregistered");Z("️","\\textregistered");Z("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');Z("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');Z("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');Z("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');Z("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");Z("⋮","\\vdots");Z("\\varGamma","\\mathit{\\Gamma}");Z("\\varDelta","\\mathit{\\Delta}");Z("\\varTheta","\\mathit{\\Theta}");Z("\\varLambda","\\mathit{\\Lambda}");Z("\\varXi","\\mathit{\\Xi}");Z("\\varPi","\\mathit{\\Pi}");Z("\\varSigma","\\mathit{\\Sigma}");Z("\\varUpsilon","\\mathit{\\Upsilon}");Z("\\varPhi","\\mathit{\\Phi}");Z("\\varPsi","\\mathit{\\Psi}");Z("\\varOmega","\\mathit{\\Omega}");Z("\\substack","\\begin{subarray}{c}#1\\end{subarray}");Z("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");Z("\\boxed","\\fbox{$\\displaystyle{#1}$}");Z("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");Z("\\implies","\\DOTSB\\;\\Longrightarrow\\;");Z("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");Z("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");Z("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var qR={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};Z("\\dots",function(t){var e="\\dotso",n=t.expandAfterFuture().text;return n in qR?e=qR[n]:(n.slice(0,4)==="\\not"||n in dr.math&&["bin","rel"].includes(dr.math[n].group))&&(e="\\dotsb"),e});var qN={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};Z("\\dotso",function(t){var e=t.future().text;return e in qN?"\\ldots\\,":"\\ldots"});Z("\\dotsc",function(t){var e=t.future().text;return e in qN&&e!==","?"\\ldots\\,":"\\ldots"});Z("\\cdots",function(t){var e=t.future().text;return e in qN?"\\@cdots\\,":"\\@cdots"});Z("\\dotsb","\\cdots");Z("\\dotsm","\\cdots");Z("\\dotsi","\\!\\cdots");Z("\\dotsx","\\ldots\\,");Z("\\DOTSI","\\relax");Z("\\DOTSB","\\relax");Z("\\DOTSX","\\relax");Z("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");Z("\\,","\\tmspace+{3mu}{.1667em}");Z("\\thinspace","\\,");Z("\\>","\\mskip{4mu}");Z("\\:","\\tmspace+{4mu}{.2222em}");Z("\\medspace","\\:");Z("\\;","\\tmspace+{5mu}{.2777em}");Z("\\thickspace","\\;");Z("\\!","\\tmspace-{3mu}{.1667em}");Z("\\negthinspace","\\!");Z("\\negmedspace","\\tmspace-{4mu}{.2222em}");Z("\\negthickspace","\\tmspace-{5mu}{.277em}");Z("\\enspace","\\kern.5em ");Z("\\enskip","\\hskip.5em\\relax");Z("\\quad","\\hskip1em\\relax");Z("\\qquad","\\hskip2em\\relax");Z("\\tag","\\@ifstar\\tag@literal\\tag@paren");Z("\\tag@paren","\\tag@literal{({#1})}");Z("\\tag@literal",t=>{if(t.macros.get("\\df@tag"))throw new $e("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});Z("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");Z("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");Z("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");Z("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");Z("\\newline","\\\\\\relax");Z("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var LU=Xe(_o["Main-Regular"][84][1]-.7*_o["Main-Regular"][65][1]);Z("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+LU+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");Z("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+LU+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");Z("\\hspace","\\@ifstar\\@hspacer\\@hspace");Z("\\@hspace","\\hskip #1\\relax");Z("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");Z("\\ordinarycolon",":");Z("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");Z("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');Z("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');Z("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');Z("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');Z("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');Z("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');Z("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');Z("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');Z("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');Z("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');Z("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');Z("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');Z("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');Z("∷","\\dblcolon");Z("∹","\\eqcolon");Z("≔","\\coloneqq");Z("≕","\\eqqcolon");Z("⩴","\\Coloneqq");Z("\\ratio","\\vcentcolon");Z("\\coloncolon","\\dblcolon");Z("\\colonequals","\\coloneqq");Z("\\coloncolonequals","\\Coloneqq");Z("\\equalscolon","\\eqqcolon");Z("\\equalscoloncolon","\\Eqqcolon");Z("\\colonminus","\\coloneq");Z("\\coloncolonminus","\\Coloneq");Z("\\minuscolon","\\eqcolon");Z("\\minuscoloncolon","\\Eqcolon");Z("\\coloncolonapprox","\\Colonapprox");Z("\\coloncolonsim","\\Colonsim");Z("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");Z("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");Z("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");Z("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");Z("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}");Z("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");Z("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");Z("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");Z("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");Z("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");Z("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");Z("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");Z("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");Z("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}");Z("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}");Z("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}");Z("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}");Z("\\nleqq","\\html@mathml{\\@nleqq}{≰}");Z("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}");Z("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}");Z("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}");Z("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}");Z("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}");Z("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}");Z("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}");Z("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}");Z("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}");Z("\\imath","\\html@mathml{\\@imath}{ı}");Z("\\jmath","\\html@mathml{\\@jmath}{ȷ}");Z("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}");Z("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}");Z("⟦","\\llbracket");Z("⟧","\\rrbracket");Z("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}");Z("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}");Z("⦃","\\lBrace");Z("⦄","\\rBrace");Z("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}");Z("⦵","\\minuso");Z("\\darr","\\downarrow");Z("\\dArr","\\Downarrow");Z("\\Darr","\\Downarrow");Z("\\lang","\\langle");Z("\\rang","\\rangle");Z("\\uarr","\\uparrow");Z("\\uArr","\\Uparrow");Z("\\Uarr","\\Uparrow");Z("\\N","\\mathbb{N}");Z("\\R","\\mathbb{R}");Z("\\Z","\\mathbb{Z}");Z("\\alef","\\aleph");Z("\\alefsym","\\aleph");Z("\\Alpha","\\mathrm{A}");Z("\\Beta","\\mathrm{B}");Z("\\bull","\\bullet");Z("\\Chi","\\mathrm{X}");Z("\\clubs","\\clubsuit");Z("\\cnums","\\mathbb{C}");Z("\\Complex","\\mathbb{C}");Z("\\Dagger","\\ddagger");Z("\\diamonds","\\diamondsuit");Z("\\empty","\\emptyset");Z("\\Epsilon","\\mathrm{E}");Z("\\Eta","\\mathrm{H}");Z("\\exist","\\exists");Z("\\harr","\\leftrightarrow");Z("\\hArr","\\Leftrightarrow");Z("\\Harr","\\Leftrightarrow");Z("\\hearts","\\heartsuit");Z("\\image","\\Im");Z("\\infin","\\infty");Z("\\Iota","\\mathrm{I}");Z("\\isin","\\in");Z("\\Kappa","\\mathrm{K}");Z("\\larr","\\leftarrow");Z("\\lArr","\\Leftarrow");Z("\\Larr","\\Leftarrow");Z("\\lrarr","\\leftrightarrow");Z("\\lrArr","\\Leftrightarrow");Z("\\Lrarr","\\Leftrightarrow");Z("\\Mu","\\mathrm{M}");Z("\\natnums","\\mathbb{N}");Z("\\Nu","\\mathrm{N}");Z("\\Omicron","\\mathrm{O}");Z("\\plusmn","\\pm");Z("\\rarr","\\rightarrow");Z("\\rArr","\\Rightarrow");Z("\\Rarr","\\Rightarrow");Z("\\real","\\Re");Z("\\reals","\\mathbb{R}");Z("\\Reals","\\mathbb{R}");Z("\\Rho","\\mathrm{P}");Z("\\sdot","\\cdot");Z("\\sect","\\S");Z("\\spades","\\spadesuit");Z("\\sub","\\subset");Z("\\sube","\\subseteq");Z("\\supe","\\supseteq");Z("\\Tau","\\mathrm{T}");Z("\\thetasym","\\vartheta");Z("\\weierp","\\wp");Z("\\Zeta","\\mathrm{Z}");Z("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");Z("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");Z("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");Z("\\bra","\\mathinner{\\langle{#1}|}");Z("\\ket","\\mathinner{|{#1}\\rangle}");Z("\\braket","\\mathinner{\\langle{#1}\\rangle}");Z("\\Bra","\\left\\langle#1\\right|");Z("\\Ket","\\left|#1\\right\\rangle");var BU=t=>e=>{var n=e.consumeArg().tokens,r=e.consumeArg().tokens,s=e.consumeArg().tokens,i=e.consumeArg().tokens,a=e.macros.get("|"),l=e.macros.get("\\|");e.macros.beginGroup();var c=m=>g=>{t&&(g.macros.set("|",a),s.length&&g.macros.set("\\|",l));var x=m;if(!m&&s.length){var y=g.future();y.text==="|"&&(g.popToken(),x=!0)}return{tokens:x?s:r,numArgs:0}};e.macros.set("|",c(!1)),s.length&&e.macros.set("\\|",c(!0));var d=e.consumeArg().tokens,h=e.expandTokens([...i,...d,...n]);return e.macros.endGroup(),{tokens:h.reverse(),numArgs:0}};Z("\\bra@ket",BU(!1));Z("\\bra@set",BU(!0));Z("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");Z("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");Z("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");Z("\\angln","{\\angl n}");Z("\\blue","\\textcolor{##6495ed}{#1}");Z("\\orange","\\textcolor{##ffa500}{#1}");Z("\\pink","\\textcolor{##ff00af}{#1}");Z("\\red","\\textcolor{##df0030}{#1}");Z("\\green","\\textcolor{##28ae7b}{#1}");Z("\\gray","\\textcolor{gray}{#1}");Z("\\purple","\\textcolor{##9d38bd}{#1}");Z("\\blueA","\\textcolor{##ccfaff}{#1}");Z("\\blueB","\\textcolor{##80f6ff}{#1}");Z("\\blueC","\\textcolor{##63d9ea}{#1}");Z("\\blueD","\\textcolor{##11accd}{#1}");Z("\\blueE","\\textcolor{##0c7f99}{#1}");Z("\\tealA","\\textcolor{##94fff5}{#1}");Z("\\tealB","\\textcolor{##26edd5}{#1}");Z("\\tealC","\\textcolor{##01d1c1}{#1}");Z("\\tealD","\\textcolor{##01a995}{#1}");Z("\\tealE","\\textcolor{##208170}{#1}");Z("\\greenA","\\textcolor{##b6ffb0}{#1}");Z("\\greenB","\\textcolor{##8af281}{#1}");Z("\\greenC","\\textcolor{##74cf70}{#1}");Z("\\greenD","\\textcolor{##1fab54}{#1}");Z("\\greenE","\\textcolor{##0d923f}{#1}");Z("\\goldA","\\textcolor{##ffd0a9}{#1}");Z("\\goldB","\\textcolor{##ffbb71}{#1}");Z("\\goldC","\\textcolor{##ff9c39}{#1}");Z("\\goldD","\\textcolor{##e07d10}{#1}");Z("\\goldE","\\textcolor{##a75a05}{#1}");Z("\\redA","\\textcolor{##fca9a9}{#1}");Z("\\redB","\\textcolor{##ff8482}{#1}");Z("\\redC","\\textcolor{##f9685d}{#1}");Z("\\redD","\\textcolor{##e84d39}{#1}");Z("\\redE","\\textcolor{##bc2612}{#1}");Z("\\maroonA","\\textcolor{##ffbde0}{#1}");Z("\\maroonB","\\textcolor{##ff92c6}{#1}");Z("\\maroonC","\\textcolor{##ed5fa6}{#1}");Z("\\maroonD","\\textcolor{##ca337c}{#1}");Z("\\maroonE","\\textcolor{##9e034e}{#1}");Z("\\purpleA","\\textcolor{##ddd7ff}{#1}");Z("\\purpleB","\\textcolor{##c6b9fc}{#1}");Z("\\purpleC","\\textcolor{##aa87ff}{#1}");Z("\\purpleD","\\textcolor{##7854ab}{#1}");Z("\\purpleE","\\textcolor{##543b78}{#1}");Z("\\mintA","\\textcolor{##f5f9e8}{#1}");Z("\\mintB","\\textcolor{##edf2df}{#1}");Z("\\mintC","\\textcolor{##e0e5cc}{#1}");Z("\\grayA","\\textcolor{##f6f7f7}{#1}");Z("\\grayB","\\textcolor{##f0f1f2}{#1}");Z("\\grayC","\\textcolor{##e3e5e6}{#1}");Z("\\grayD","\\textcolor{##d6d8da}{#1}");Z("\\grayE","\\textcolor{##babec2}{#1}");Z("\\grayF","\\textcolor{##888d93}{#1}");Z("\\grayG","\\textcolor{##626569}{#1}");Z("\\grayH","\\textcolor{##3b3e40}{#1}");Z("\\grayI","\\textcolor{##21242c}{#1}");Z("\\kaBlue","\\textcolor{##314453}{#1}");Z("\\kaGreen","\\textcolor{##71B307}{#1}");var FU={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class yke{constructor(e,n,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=n,this.expansionCount=0,this.feed(e),this.macros=new xke(vke,n.macros),this.mode=r,this.stack=[]}feed(e){this.lexer=new BR(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var n,r,s;if(e){if(this.consumeSpaces(),this.future().text!=="[")return null;n=this.popToken(),{tokens:s,end:r}=this.consumeArg(["]"])}else({tokens:s,start:n,end:r}=this.consumeArg());return this.pushToken(new Xi("EOF",r.loc)),this.pushTokens(s),new Xi("",pi.range(n,r))}consumeSpaces(){for(;;){var e=this.future();if(e.text===" ")this.stack.pop();else break}}consumeArg(e){var n=[],r=e&&e.length>0;r||this.consumeSpaces();var s=this.future(),i,a=0,l=0;do{if(i=this.popToken(),n.push(i),i.text==="{")++a;else if(i.text==="}"){if(--a,a===-1)throw new $e("Extra }",i)}else if(i.text==="EOF")throw new $e("Unexpected end of input in a macro argument, expected '"+(e&&r?e[l]:"}")+"'",i);if(e&&r)if((a===0||a===1&&e[l]==="{")&&i.text===e[l]){if(++l,l===e.length){n.splice(-l,l);break}}else l=0}while(a!==0||r);return s.text==="{"&&n[n.length-1].text==="}"&&(n.pop(),n.shift()),n.reverse(),{tokens:n,start:s,end:i}}consumeArgs(e,n){if(n){if(n.length!==e+1)throw new $e("The length of delimiters doesn't match the number of args!");for(var r=n[0],s=0;sthis.settings.maxExpand)throw new $e("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var n=this.popToken(),r=n.text,s=n.noexpand?null:this._getExpansion(r);if(s==null||e&&s.unexpandable){if(e&&s==null&&r[0]==="\\"&&!this.isDefined(r))throw new $e("Undefined control sequence: "+r);return this.pushToken(n),!1}this.countExpansion(1);var i=s.tokens,a=this.consumeArgs(s.numArgs,s.delimiters);if(s.numArgs){i=i.slice();for(var l=i.length-1;l>=0;--l){var c=i[l];if(c.text==="#"){if(l===0)throw new $e("Incomplete placeholder at end of macro body",c);if(c=i[--l],c.text==="#")i.splice(l+1,1);else if(/^[1-9]$/.test(c.text))i.splice(l,2,...a[+c.text-1]);else throw new $e("Not a valid argument number",c)}}}return this.pushTokens(i),i.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new Xi(e)]):void 0}expandTokens(e){var n=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;)if(this.expandOnce(!0)===!1){var s=this.stack.pop();s.treatAsRelax&&(s.noexpand=!1,s.treatAsRelax=!1),n.push(s)}return this.countExpansion(n.length),n}expandMacroAsText(e){var n=this.expandMacro(e);return n&&n.map(r=>r.text).join("")}_getExpansion(e){var n=this.macros.get(e);if(n==null)return n;if(e.length===1){var r=this.lexer.catcodes[e];if(r!=null&&r!==13)return}var s=typeof n=="function"?n(this):n;if(typeof s=="string"){var i=0;if(s.indexOf("#")!==-1)for(var a=s.replace(/##/g,"");a.indexOf("#"+(i+1))!==-1;)++i;for(var l=new BR(s,this.settings),c=[],d=l.lex();d.text!=="EOF";)c.push(d),d=l.lex();c.reverse();var h={tokens:c,numArgs:i};return h}return s}isDefined(e){return this.macros.has(e)||qc.hasOwnProperty(e)||dr.math.hasOwnProperty(e)||dr.text.hasOwnProperty(e)||FU.hasOwnProperty(e)}isExpandable(e){var n=this.macros.get(e);return n!=null?typeof n=="string"||typeof n=="function"||!n.unexpandable:qc.hasOwnProperty(e)&&!qc[e].primitive}}var $R=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,B1=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g",ʰ:"h","ⁱ":"i",ʲ:"j","ᵏ":"k",ˡ:"l","ᵐ":"m",ⁿ:"n","ᵒ":"o","ᵖ":"p",ʳ:"r",ˢ:"s","ᵗ":"t","ᵘ":"u","ᵛ":"v",ʷ:"w",ˣ:"x",ʸ:"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),i5={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},HR={á:"á",à:"à",ä:"ä",ǟ:"ǟ",ã:"ã",ā:"ā",ă:"ă",ắ:"ắ",ằ:"ằ",ẵ:"ẵ",ǎ:"ǎ",â:"â",ấ:"ấ",ầ:"ầ",ẫ:"ẫ",ȧ:"ȧ",ǡ:"ǡ",å:"å",ǻ:"ǻ",ḃ:"ḃ",ć:"ć",ḉ:"ḉ",č:"č",ĉ:"ĉ",ċ:"ċ",ç:"ç",ď:"ď",ḋ:"ḋ",ḑ:"ḑ",é:"é",è:"è",ë:"ë",ẽ:"ẽ",ē:"ē",ḗ:"ḗ",ḕ:"ḕ",ĕ:"ĕ",ḝ:"ḝ",ě:"ě",ê:"ê",ế:"ế",ề:"ề",ễ:"ễ",ė:"ė",ȩ:"ȩ",ḟ:"ḟ",ǵ:"ǵ",ḡ:"ḡ",ğ:"ğ",ǧ:"ǧ",ĝ:"ĝ",ġ:"ġ",ģ:"ģ",ḧ:"ḧ",ȟ:"ȟ",ĥ:"ĥ",ḣ:"ḣ",ḩ:"ḩ",í:"í",ì:"ì",ï:"ï",ḯ:"ḯ",ĩ:"ĩ",ī:"ī",ĭ:"ĭ",ǐ:"ǐ",î:"î",ǰ:"ǰ",ĵ:"ĵ",ḱ:"ḱ",ǩ:"ǩ",ķ:"ķ",ĺ:"ĺ",ľ:"ľ",ļ:"ļ",ḿ:"ḿ",ṁ:"ṁ",ń:"ń",ǹ:"ǹ",ñ:"ñ",ň:"ň",ṅ:"ṅ",ņ:"ņ",ó:"ó",ò:"ò",ö:"ö",ȫ:"ȫ",õ:"õ",ṍ:"ṍ",ṏ:"ṏ",ȭ:"ȭ",ō:"ō",ṓ:"ṓ",ṑ:"ṑ",ŏ:"ŏ",ǒ:"ǒ",ô:"ô",ố:"ố",ồ:"ồ",ỗ:"ỗ",ȯ:"ȯ",ȱ:"ȱ",ő:"ő",ṕ:"ṕ",ṗ:"ṗ",ŕ:"ŕ",ř:"ř",ṙ:"ṙ",ŗ:"ŗ",ś:"ś",ṥ:"ṥ",š:"š",ṧ:"ṧ",ŝ:"ŝ",ṡ:"ṡ",ş:"ş",ẗ:"ẗ",ť:"ť",ṫ:"ṫ",ţ:"ţ",ú:"ú",ù:"ù",ü:"ü",ǘ:"ǘ",ǜ:"ǜ",ǖ:"ǖ",ǚ:"ǚ",ũ:"ũ",ṹ:"ṹ",ū:"ū",ṻ:"ṻ",ŭ:"ŭ",ǔ:"ǔ",û:"û",ů:"ů",ű:"ű",ṽ:"ṽ",ẃ:"ẃ",ẁ:"ẁ",ẅ:"ẅ",ŵ:"ŵ",ẇ:"ẇ",ẘ:"ẘ",ẍ:"ẍ",ẋ:"ẋ",ý:"ý",ỳ:"ỳ",ÿ:"ÿ",ỹ:"ỹ",ȳ:"ȳ",ŷ:"ŷ",ẏ:"ẏ",ẙ:"ẙ",ź:"ź",ž:"ž",ẑ:"ẑ",ż:"ż",Á:"Á",À:"À",Ä:"Ä",Ǟ:"Ǟ",Ã:"Ã",Ā:"Ā",Ă:"Ă",Ắ:"Ắ",Ằ:"Ằ",Ẵ:"Ẵ",Ǎ:"Ǎ",Â:"Â",Ấ:"Ấ",Ầ:"Ầ",Ẫ:"Ẫ",Ȧ:"Ȧ",Ǡ:"Ǡ",Å:"Å",Ǻ:"Ǻ",Ḃ:"Ḃ",Ć:"Ć",Ḉ:"Ḉ",Č:"Č",Ĉ:"Ĉ",Ċ:"Ċ",Ç:"Ç",Ď:"Ď",Ḋ:"Ḋ",Ḑ:"Ḑ",É:"É",È:"È",Ë:"Ë",Ẽ:"Ẽ",Ē:"Ē",Ḗ:"Ḗ",Ḕ:"Ḕ",Ĕ:"Ĕ",Ḝ:"Ḝ",Ě:"Ě",Ê:"Ê",Ế:"Ế",Ề:"Ề",Ễ:"Ễ",Ė:"Ė",Ȩ:"Ȩ",Ḟ:"Ḟ",Ǵ:"Ǵ",Ḡ:"Ḡ",Ğ:"Ğ",Ǧ:"Ǧ",Ĝ:"Ĝ",Ġ:"Ġ",Ģ:"Ģ",Ḧ:"Ḧ",Ȟ:"Ȟ",Ĥ:"Ĥ",Ḣ:"Ḣ",Ḩ:"Ḩ",Í:"Í",Ì:"Ì",Ï:"Ï",Ḯ:"Ḯ",Ĩ:"Ĩ",Ī:"Ī",Ĭ:"Ĭ",Ǐ:"Ǐ",Î:"Î",İ:"İ",Ĵ:"Ĵ",Ḱ:"Ḱ",Ǩ:"Ǩ",Ķ:"Ķ",Ĺ:"Ĺ",Ľ:"Ľ",Ļ:"Ļ",Ḿ:"Ḿ",Ṁ:"Ṁ",Ń:"Ń",Ǹ:"Ǹ",Ñ:"Ñ",Ň:"Ň",Ṅ:"Ṅ",Ņ:"Ņ",Ó:"Ó",Ò:"Ò",Ö:"Ö",Ȫ:"Ȫ",Õ:"Õ",Ṍ:"Ṍ",Ṏ:"Ṏ",Ȭ:"Ȭ",Ō:"Ō",Ṓ:"Ṓ",Ṑ:"Ṑ",Ŏ:"Ŏ",Ǒ:"Ǒ",Ô:"Ô",Ố:"Ố",Ồ:"Ồ",Ỗ:"Ỗ",Ȯ:"Ȯ",Ȱ:"Ȱ",Ő:"Ő",Ṕ:"Ṕ",Ṗ:"Ṗ",Ŕ:"Ŕ",Ř:"Ř",Ṙ:"Ṙ",Ŗ:"Ŗ",Ś:"Ś",Ṥ:"Ṥ",Š:"Š",Ṧ:"Ṧ",Ŝ:"Ŝ",Ṡ:"Ṡ",Ş:"Ş",Ť:"Ť",Ṫ:"Ṫ",Ţ:"Ţ",Ú:"Ú",Ù:"Ù",Ü:"Ü",Ǘ:"Ǘ",Ǜ:"Ǜ",Ǖ:"Ǖ",Ǚ:"Ǚ",Ũ:"Ũ",Ṹ:"Ṹ",Ū:"Ū",Ṻ:"Ṻ",Ŭ:"Ŭ",Ǔ:"Ǔ",Û:"Û",Ů:"Ů",Ű:"Ű",Ṽ:"Ṽ",Ẃ:"Ẃ",Ẁ:"Ẁ",Ẅ:"Ẅ",Ŵ:"Ŵ",Ẇ:"Ẇ",Ẍ:"Ẍ",Ẋ:"Ẋ",Ý:"Ý",Ỳ:"Ỳ",Ÿ:"Ÿ",Ỹ:"Ỹ",Ȳ:"Ȳ",Ŷ:"Ŷ",Ẏ:"Ẏ",Ź:"Ź",Ž:"Ž",Ẑ:"Ẑ",Ż:"Ż",ά:"ά",ὰ:"ὰ",ᾱ:"ᾱ",ᾰ:"ᾰ",έ:"έ",ὲ:"ὲ",ή:"ή",ὴ:"ὴ",ί:"ί",ὶ:"ὶ",ϊ:"ϊ",ΐ:"ΐ",ῒ:"ῒ",ῑ:"ῑ",ῐ:"ῐ",ό:"ό",ὸ:"ὸ",ύ:"ύ",ὺ:"ὺ",ϋ:"ϋ",ΰ:"ΰ",ῢ:"ῢ",ῡ:"ῡ",ῠ:"ῠ",ώ:"ώ",ὼ:"ὼ",Ύ:"Ύ",Ὺ:"Ὺ",Ϋ:"Ϋ",Ῡ:"Ῡ",Ῠ:"Ῠ",Ώ:"Ώ",Ὼ:"Ὼ"};class Wb{constructor(e,n){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new yke(e,n,this.mode),this.settings=n,this.leftrightDepth=0}expect(e,n){if(n===void 0&&(n=!0),this.fetch().text!==e)throw new $e("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());n&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var n=this.nextToken;this.consume(),this.gullet.pushToken(new Xi("}")),this.gullet.pushTokens(e);var r=this.parseExpression(!1);return this.expect("}"),this.nextToken=n,r}parseExpression(e,n){for(var r=[];;){this.mode==="math"&&this.consumeSpaces();var s=this.fetch();if(Wb.endOfExpression.indexOf(s.text)!==-1||n&&s.text===n||e&&qc[s.text]&&qc[s.text].infix)break;var i=this.parseAtom(n);if(i){if(i.type==="internal")continue}else break;r.push(i)}return this.mode==="text"&&this.formLigatures(r),this.handleInfixNodes(r)}handleInfixNodes(e){for(var n=-1,r,s=0;s=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+n[0]+'" used in math mode',e);var l=dr[this.mode][n].group,c=pi.range(e),d;if(o3e.hasOwnProperty(l)){var h=l;d={type:"atom",mode:this.mode,family:h,loc:c,text:n}}else d={type:l,mode:this.mode,loc:c,text:n};a=d}else if(n.charCodeAt(0)>=128)this.settings.strict&&(XV(n.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+n[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+n[0]+'"'+(" ("+n.charCodeAt(0)+")"),e)),a={type:"textord",mode:"text",loc:pi.range(e),text:n};else return null;if(this.consume(),i)for(var m=0;md&&(d=h):h&&(d!==void 0&&d>-1&&c.push(` +`.repeat(d)||" "),d=-1,c.push(h))}return c.join("")}function WU(t,e,n){return t.type==="element"?Yke(t,e,n):t.type==="text"?n.whitespace==="normal"?GU(t,n):Kke(t):[]}function Yke(t,e,n){const r=XU(t,n),s=t.children||[];let i=-1,a=[];if(Gke(t))return a;let l,c;for(GO(t)||ZR(t)&&GR(e,t,ZR)?c=` +`:Wke(t)?(l=2,c=2):UU(t)&&(l=1,c=1);++i{try{i(!0);const Oe=await oOe({page:a,page_size:h,is_registered:g==="all"?void 0:g==="registered",is_banned:y==="all"?void 0:y==="banned",format:S==="all"?void 0:S,sort_by:j,sort_order:T});e(Oe.data),d(Oe.total)}catch(Oe){const Ve=Oe instanceof Error?Oe.message:"加载表情包列表失败";G({title:"错误",description:Ve,variant:"destructive"})}finally{i(!1)}},[a,h,g,y,S,j,T,G]),V=async()=>{try{const Oe=await dOe();r(Oe.data)}catch(Oe){console.error("加载统计数据失败:",Oe)}};b.useEffect(()=>{I()},[I]),b.useEffect(()=>{V()},[]);const ee=async Oe=>{try{const Ve=await lOe(Oe.id);A(Ve.data),P(!0)}catch(Ve){const Ue=Ve instanceof Error?Ve.message:"加载详情失败";G({title:"错误",description:Ue,variant:"destructive"})}},ne=Oe=>{A(Oe),$(!0)},W=Oe=>{A(Oe),te(!0)},se=async()=>{if(_)try{await uOe(_.id),G({title:"成功",description:"表情包已删除"}),te(!1),A(null),I(),V()}catch(Oe){const Ve=Oe instanceof Error?Oe.message:"删除失败";G({title:"错误",description:Ve,variant:"destructive"})}},re=async Oe=>{try{await hOe(Oe.id),G({title:"成功",description:"表情包已注册"}),I(),V()}catch(Ve){const Ue=Ve instanceof Error?Ve.message:"注册失败";G({title:"错误",description:Ue,variant:"destructive"})}},oe=async Oe=>{try{await fOe(Oe.id),G({title:"成功",description:"表情包已封禁"}),I(),V()}catch(Ve){const Ue=Ve instanceof Error?Ve.message:"封禁失败";G({title:"错误",description:Ue,variant:"destructive"})}},Te=Oe=>{const Ve=new Set(z);Ve.has(Oe)?Ve.delete(Oe):Ve.add(Oe),Q(Ve)},We=async()=>{try{const Oe=await mOe(Array.from(z));G({title:"批量删除完成",description:Oe.message}),Q(new Set),Y(!1),I(),V()}catch(Oe){G({title:"批量删除失败",description:Oe instanceof Error?Oe.message:"批量删除失败",variant:"destructive"})}},Ye=()=>{const Oe=parseInt(J),Ve=Math.ceil(c/h);Oe>=1&&Oe<=Ve?(l(Oe),X("")):G({title:"无效的页码",description:`请输入1-${Ve}之间的页码`,variant:"destructive"})},Je=n?.formats?Object.keys(n.formats):[];return o.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[o.jsxs("div",{className:"mb-4 sm:mb-6",children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"表情包管理"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理麦麦的表情包资源"})]}),o.jsx(gn,{className:"flex-1",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[n&&o.jsxs("div",{className:"grid gap-4 grid-cols-2 lg:grid-cols-4",children:[o.jsx(qt,{children:o.jsxs(Fn,{className:"pb-2",children:[o.jsx(ts,{children:"总数"}),o.jsx(qn,{className:"text-2xl",children:n.total})]})}),o.jsx(qt,{children:o.jsxs(Fn,{className:"pb-2",children:[o.jsx(ts,{children:"已注册"}),o.jsx(qn,{className:"text-2xl text-green-600",children:n.registered})]})}),o.jsx(qt,{children:o.jsxs(Fn,{className:"pb-2",children:[o.jsx(ts,{children:"已封禁"}),o.jsx(qn,{className:"text-2xl text-red-600",children:n.banned})]})}),o.jsx(qt,{children:o.jsxs(Fn,{className:"pb-2",children:[o.jsx(ts,{children:"未注册"}),o.jsx(qn,{className:"text-2xl text-gray-600",children:n.unregistered})]})})]}),o.jsxs(qt,{children:[o.jsx(Fn,{children:o.jsxs(qn,{className:"flex items-center gap-2",children:[o.jsx(sk,{className:"h-5 w-5"}),"筛选和排序"]})}),o.jsxs(Gn,{className:"space-y-4",children:[o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:"排序方式"}),o.jsxs(Vt,{value:`${j}-${T}`,onValueChange:Oe=>{const[Ve,Ue]=Oe.split("-");N(Ve),E(Ue),l(1)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"usage_count-desc",children:"使用次数 (多→少)"}),o.jsx(De,{value:"usage_count-asc",children:"使用次数 (少→多)"}),o.jsx(De,{value:"register_time-desc",children:"注册时间 (新→旧)"}),o.jsx(De,{value:"register_time-asc",children:"注册时间 (旧→新)"}),o.jsx(De,{value:"record_time-desc",children:"记录时间 (新→旧)"}),o.jsx(De,{value:"record_time-asc",children:"记录时间 (旧→新)"}),o.jsx(De,{value:"last_used_time-desc",children:"最后使用 (新→旧)"}),o.jsx(De,{value:"last_used_time-asc",children:"最后使用 (旧→新)"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:"注册状态"}),o.jsxs(Vt,{value:g,onValueChange:Oe=>{x(Oe),l(1)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部"}),o.jsx(De,{value:"registered",children:"已注册"}),o.jsx(De,{value:"unregistered",children:"未注册"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:"封禁状态"}),o.jsxs(Vt,{value:y,onValueChange:Oe=>{w(Oe),l(1)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部"}),o.jsx(De,{value:"banned",children:"已封禁"}),o.jsx(De,{value:"unbanned",children:"未封禁"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:"格式"}),o.jsxs(Vt,{value:S,onValueChange:Oe=>{k(Oe),l(1)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部"}),Je.map(Oe=>o.jsxs(De,{value:Oe,children:[Oe.toUpperCase()," (",n?.formats[Oe],")"]},Oe))]})]})]})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 pt-4 border-t",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[z.size>0&&o.jsxs("span",{className:"text-sm text-muted-foreground",children:["已选择 ",z.size," 个表情包"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{className:"text-sm whitespace-nowrap",children:"卡片大小"}),o.jsxs(Vt,{value:R,onValueChange:Oe=>ie(Oe),children:[o.jsx($t,{className:"w-24",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"small",children:"小"}),o.jsx(De,{value:"medium",children:"中"}),o.jsx(De,{value:"large",children:"大"})]})]})]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{htmlFor:"emoji-page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:h.toString(),onValueChange:Oe=>{m(parseInt(Oe)),l(1),Q(new Set)},children:[o.jsx($t,{id:"emoji-page-size",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"40",children:"40"}),o.jsx(De,{value:"60",children:"60"}),o.jsx(De,{value:"100",children:"100"})]})]}),z.size>0&&o.jsxs(o.Fragment,{children:[o.jsx(de,{variant:"outline",size:"sm",onClick:()=>Q(new Set),children:"取消选择"}),o.jsxs(de,{variant:"destructive",size:"sm",onClick:()=>Y(!0),children:[o.jsx(Sn,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]}),o.jsx("div",{className:"flex justify-end pt-4 border-t",children:o.jsxs(de,{variant:"outline",size:"sm",onClick:I,disabled:s,children:[o.jsx(Ps,{className:`h-4 w-4 mr-2 ${s?"animate-spin":""}`}),"刷新"]})})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"表情包列表"}),o.jsxs(ts,{children:["共 ",c," 个表情包,当前第 ",a," 页"]})]}),o.jsxs(Gn,{children:[t.length===0?o.jsx("div",{className:"text-center py-12 text-muted-foreground",children:"暂无数据"}):o.jsx("div",{className:`grid gap-3 ${R==="small"?"grid-cols-3 sm:grid-cols-4 md:grid-cols-6 lg:grid-cols-8 xl:grid-cols-10":R==="medium"?"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 xl:grid-cols-8":"grid-cols-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5"}`,children:t.map(Oe=>o.jsxs("div",{className:`group relative rounded-lg border bg-card overflow-hidden hover:ring-2 hover:ring-primary transition-all cursor-pointer ${z.has(Oe.id)?"ring-2 ring-primary bg-primary/5":""}`,onClick:()=>Te(Oe.id),children:[o.jsx("div",{className:`absolute top-1 left-1 z-10 transition-opacity ${z.has(Oe.id)?"opacity-100":"opacity-0 group-hover:opacity-100"}`,children:o.jsx("div",{className:`w-5 h-5 rounded-full border-2 flex items-center justify-center ${z.has(Oe.id)?"bg-primary border-primary text-primary-foreground":"bg-background/80 border-muted-foreground/50"}`,children:z.has(Oe.id)&&o.jsx(Vc,{className:"h-3 w-3"})})}),o.jsxs("div",{className:"absolute top-1 right-1 z-10 flex flex-col gap-0.5",children:[Oe.is_registered&&o.jsx(Xn,{variant:"default",className:"bg-green-600 text-[10px] px-1 py-0",children:"已注册"}),Oe.is_banned&&o.jsx(Xn,{variant:"destructive",className:"text-[10px] px-1 py-0",children:"已封禁"})]}),o.jsx("div",{className:`aspect-square bg-muted flex items-center justify-center overflow-hidden ${R==="small"?"p-1":R==="medium"?"p-2":"p-3"}`,children:o.jsx("img",{src:YU(Oe.id),alt:"表情包",className:"w-full h-full object-contain",loading:"lazy",onError:Ve=>{const Ue=Ve.target;Ue.style.display="none";const He=Ue.parentElement;He&&(He.innerHTML='')}})}),o.jsxs("div",{className:`border-t bg-card ${R==="small"?"p-1":"p-2"}`,children:[o.jsxs("div",{className:"flex items-center justify-between gap-1 text-xs text-muted-foreground mb-1",children:[o.jsx(Xn,{variant:"outline",className:"text-[10px] px-1 py-0",children:Oe.format.toUpperCase()}),o.jsxs("span",{className:"font-mono",children:[Oe.usage_count,"次"]})]}),o.jsxs("div",{className:`flex gap-1 justify-center opacity-0 group-hover:opacity-100 transition-opacity ${R==="small"?"flex-wrap":""}`,children:[o.jsx(de,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:Ve=>{Ve.stopPropagation(),ne(Oe)},title:"编辑",children:o.jsx(z0,{className:"h-3 w-3"})}),o.jsx(de,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:Ve=>{Ve.stopPropagation(),ee(Oe)},title:"详情",children:o.jsx(Oa,{className:"h-3 w-3"})}),!Oe.is_registered&&o.jsx(de,{variant:"ghost",size:"icon",className:"h-6 w-6 text-green-600 hover:text-green-700",onClick:Ve=>{Ve.stopPropagation(),re(Oe)},title:"注册",children:o.jsx(Vc,{className:"h-3 w-3"})}),!Oe.is_banned&&o.jsx(de,{variant:"ghost",size:"icon",className:"h-6 w-6 text-orange-600 hover:text-orange-700",onClick:Ve=>{Ve.stopPropagation(),oe(Oe)},title:"封禁",children:o.jsx(Jee,{className:"h-3 w-3"})}),o.jsx(de,{variant:"ghost",size:"icon",className:"h-6 w-6 text-red-600 hover:text-red-700",onClick:Ve=>{Ve.stopPropagation(),W(Oe)},title:"删除",children:o.jsx(Sn,{className:"h-3 w-3"})})]})]})]},Oe.id))}),c>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[o.jsxs("div",{className:"text-sm text-muted-foreground",children:["显示 ",(a-1)*h+1," 到"," ",Math.min(a*h,c)," 条,共 ",c," 条"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(de,{variant:"outline",size:"sm",onClick:()=>l(1),disabled:a===1,className:"hidden sm:flex",children:o.jsx(Ap,{className:"h-4 w-4"})}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>l(Oe=>Math.max(1,Oe-1)),disabled:a===1,children:[o.jsx(vd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{type:"number",value:J,onChange:Oe=>X(Oe.target.value),onKeyDown:Oe=>Oe.key==="Enter"&&Ye(),placeholder:a.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(c/h)}),o.jsx(de,{variant:"outline",size:"sm",onClick:Ye,disabled:!J,className:"h-8",children:"跳转"})]}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>l(Oe=>Oe+1),disabled:a>=Math.ceil(c/h),children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(yd,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(de,{variant:"outline",size:"sm",onClick:()=>l(Math.ceil(c/h)),disabled:a>=Math.ceil(c/h),className:"hidden sm:flex",children:o.jsx(Mp,{className:"h-4 w-4"})})]})]})]})]}),o.jsx(gOe,{emoji:_,open:L,onOpenChange:P}),o.jsx(xOe,{emoji:_,open:B,onOpenChange:$,onSuccess:()=>{I(),V()}})]})}),o.jsx(Dn,{open:F,onOpenChange:Y,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认批量删除"}),o.jsxs(_n,{children:["你确定要删除选中的 ",z.size," 个表情包吗?此操作不可撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:We,children:"确认删除"})]})]})}),o.jsx(Dr,{open:U,onOpenChange:te,children:o.jsxs(Sr,{children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"确认删除"}),o.jsx(ss,{children:"确定要删除这个表情包吗?此操作无法撤销。"})]}),o.jsxs(ws,{children:[o.jsx(de,{variant:"outline",onClick:()=>te(!1),children:"取消"}),o.jsx(de,{variant:"destructive",onClick:se,children:"删除"})]})]})})]})}function gOe({emoji:t,open:e,onOpenChange:n}){if(!t)return null;const r=s=>s?new Date(s*1e3).toLocaleString("zh-CN"):"-";return o.jsx(Dr,{open:e,onOpenChange:n,children:o.jsxs(Sr,{className:"max-w-2xl max-h-[90vh]",children:[o.jsx(kr,{children:o.jsx(Or,{children:"表情包详情"})}),o.jsx(gn,{className:"max-h-[calc(90vh-8rem)] pr-4",children:o.jsxs("div",{className:"space-y-4",children:[o.jsx("div",{className:"flex justify-center",children:o.jsx("div",{className:"w-32 h-32 bg-muted rounded-lg flex items-center justify-center overflow-hidden",children:o.jsx("img",{src:YU(t.id),alt:t.description||"表情包",className:"w-full h-full object-cover",onError:s=>{const i=s.target;i.style.display="none";const a=i.parentElement;a&&(a.innerHTML='')}})})}),o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"ID"}),o.jsx("div",{className:"mt-1 font-mono",children:t.id})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"格式"}),o.jsx("div",{className:"mt-1",children:o.jsx(Xn,{variant:"outline",children:t.format.toUpperCase()})})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"文件路径"}),o.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:t.full_path})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"哈希值"}),o.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:t.emoji_hash})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"描述"}),t.description?o.jsx("div",{className:"mt-1 rounded-lg border bg-muted/50 p-3",children:o.jsx(aOe,{className:"prose-sm",children:t.description})}):o.jsx("div",{className:"mt-1 text-sm text-muted-foreground",children:"-"})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"情绪"}),o.jsx("div",{className:"mt-1",children:t.emotion?o.jsx("span",{className:"text-sm",children:t.emotion}):o.jsx("span",{className:"text-sm text-muted-foreground",children:"-"})})]}),o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"状态"}),o.jsxs("div",{className:"mt-2 flex gap-2",children:[t.is_registered&&o.jsx(Xn,{variant:"default",className:"bg-green-600",children:"已注册"}),t.is_banned&&o.jsx(Xn,{variant:"destructive",children:"已封禁"}),!t.is_registered&&!t.is_banned&&o.jsx(Xn,{variant:"outline",children:"未注册"})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"使用次数"}),o.jsx("div",{className:"mt-1 font-mono text-lg",children:t.usage_count})]})]}),o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"记录时间"}),o.jsx("div",{className:"mt-1 text-sm",children:r(t.record_time)})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"注册时间"}),o.jsx("div",{className:"mt-1 text-sm",children:r(t.register_time)})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"最后使用"}),o.jsx("div",{className:"mt-1 text-sm",children:r(t.last_used_time)})]})]})})]})})}function xOe({emoji:t,open:e,onOpenChange:n,onSuccess:r}){const[s,i]=b.useState(""),[a,l]=b.useState(!1),[c,d]=b.useState(!1),[h,m]=b.useState(!1),{toast:g}=as();b.useEffect(()=>{t&&(i(t.emotion||""),l(t.is_registered),d(t.is_banned))},[t]);const x=async()=>{if(t)try{m(!0);const y=s.split(/[,,]/).map(w=>w.trim()).filter(Boolean).join(",");await cOe(t.id,{emotion:y||void 0,is_registered:a,is_banned:c}),g({title:"成功",description:"表情包信息已更新"}),n(!1),r()}catch(y){const w=y instanceof Error?y.message:"保存失败";g({title:"错误",description:w,variant:"destructive"})}finally{m(!1)}};return t?o.jsx(Dr,{open:e,onOpenChange:n,children:o.jsxs(Sr,{className:"max-w-2xl",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"编辑表情包"}),o.jsx(ss,{children:"修改表情包的情绪和状态信息"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{children:[o.jsx(he,{children:"情绪"}),o.jsx(Mr,{value:s,onChange:y=>i(y.target.value),placeholder:"输入情绪描述...",rows:2,className:"mt-1"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"输入情绪相关的文本描述"})]}),o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Oi,{id:"is_registered",checked:a,onCheckedChange:y=>{y===!0?(l(!0),d(!1)):l(!1)}}),o.jsx(he,{htmlFor:"is_registered",className:"cursor-pointer",children:"已注册"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Oi,{id:"is_banned",checked:c,onCheckedChange:y=>{y===!0?(d(!0),l(!1)):d(!1)}}),o.jsx(he,{htmlFor:"is_banned",className:"cursor-pointer",children:"已封禁"})]})]})]}),o.jsxs(ws,{children:[o.jsx(de,{variant:"outline",onClick:()=>n(!1),children:"取消"}),o.jsx(de,{onClick:x,disabled:h,children:h?"保存中...":"保存"})]})]})}):null}const hu="/api/webui/expression";async function vOe(){const t=await St(`${hu}/chats`,{headers:Dt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取聊天列表失败")}return t.json()}async function yOe(t){const e=new URLSearchParams;t.page&&e.append("page",t.page.toString()),t.page_size&&e.append("page_size",t.page_size.toString()),t.search&&e.append("search",t.search),t.chat_id&&e.append("chat_id",t.chat_id);const n=await St(`${hu}/list?${e}`,{headers:Dt()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取表达方式列表失败")}return n.json()}async function bOe(t){const e=await St(`${hu}/${t}`,{headers:Dt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"获取表达方式详情失败")}return e.json()}async function wOe(t){const e=await St(`${hu}/`,{method:"POST",headers:Dt(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"创建表达方式失败")}return e.json()}async function SOe(t,e){const n=await St(`${hu}/${t}`,{method:"PATCH",headers:Dt(),body:JSON.stringify(e)});if(!n.ok){const r=await n.json();throw new Error(r.detail||"更新表达方式失败")}return n.json()}async function kOe(t){const e=await St(`${hu}/${t}`,{method:"DELETE",headers:Dt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"删除表达方式失败")}return e.json()}async function OOe(t){const e=await St(`${hu}/batch/delete`,{method:"POST",headers:Dt(),body:JSON.stringify({ids:t})});if(!e.ok){const n=await e.json();throw new Error(n.detail||"批量删除表达方式失败")}return e.json()}async function jOe(){const t=await St(`${hu}/stats/summary`,{headers:Dt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取统计数据失败")}return t.json()}function NOe(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[s,i]=b.useState(0),[a,l]=b.useState(1),[c,d]=b.useState(20),[h,m]=b.useState(""),[g,x]=b.useState(null),[y,w]=b.useState(!1),[S,k]=b.useState(!1),[j,N]=b.useState(!1),[T,E]=b.useState(null),[_,A]=b.useState(new Set),[L,P]=b.useState(!1),[B,$]=b.useState(""),[U,te]=b.useState({total:0,recent_7days:0,chat_count:0,top_chats:{}}),[z,Q]=b.useState([]),[F,Y]=b.useState(new Map),{toast:J}=as(),X=async()=>{try{r(!0);const oe=await yOe({page:a,page_size:c,search:h||void 0});e(oe.data),i(oe.total)}catch(oe){J({title:"加载失败",description:oe instanceof Error?oe.message:"无法加载表达方式",variant:"destructive"})}finally{r(!1)}},R=async()=>{try{const oe=await jOe();oe?.data&&te(oe.data)}catch(oe){console.error("加载统计数据失败:",oe)}},ie=async()=>{try{const oe=await vOe();if(oe?.data){Q(oe.data);const Te=new Map;oe.data.forEach(We=>{Te.set(We.chat_id,We.chat_name)}),Y(Te)}}catch(oe){console.error("加载聊天列表失败:",oe)}},G=oe=>F.get(oe)||oe;b.useEffect(()=>{X(),R(),ie()},[a,c,h]);const I=async oe=>{try{const Te=await bOe(oe.id);x(Te.data),w(!0)}catch(Te){J({title:"加载详情失败",description:Te instanceof Error?Te.message:"无法加载表达方式详情",variant:"destructive"})}},V=oe=>{x(oe),k(!0)},ee=async oe=>{try{await kOe(oe.id),J({title:"删除成功",description:`已删除表达方式: ${oe.situation}`}),E(null),X(),R()}catch(Te){J({title:"删除失败",description:Te instanceof Error?Te.message:"无法删除表达方式",variant:"destructive"})}},ne=oe=>{const Te=new Set(_);Te.has(oe)?Te.delete(oe):Te.add(oe),A(Te)},W=()=>{_.size===t.length&&t.length>0?A(new Set):A(new Set(t.map(oe=>oe.id)))},se=async()=>{try{await OOe(Array.from(_)),J({title:"批量删除成功",description:`已删除 ${_.size} 个表达方式`}),A(new Set),P(!1),X(),R()}catch(oe){J({title:"批量删除失败",description:oe instanceof Error?oe.message:"无法批量删除表达方式",variant:"destructive"})}},re=()=>{const oe=parseInt(B),Te=Math.ceil(s/c);oe>=1&&oe<=Te?(l(oe),$("")):J({title:"无效的页码",description:`请输入1-${Te}之间的页码`,variant:"destructive"})};return o.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[o.jsx("div",{className:"mb-4 sm:mb-6",children:o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[o.jsx(Wh,{className:"h-8 w-8",strokeWidth:2}),"表达方式管理"]}),o.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦的表达方式和话术模板"})]}),o.jsxs(de,{onClick:()=>N(!0),className:"gap-2",children:[o.jsx(Ls,{className:"h-4 w-4"}),"新增表达方式"]})]})}),o.jsx(gn,{className:"flex-1",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"总数量"}),o.jsx("div",{className:"text-2xl font-bold mt-1",children:U.total})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"近7天新增"}),o.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:U.recent_7days})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"关联聊天数"}),o.jsx("div",{className:"text-2xl font-bold mt-1 text-blue-600",children:U.chat_count})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx(he,{htmlFor:"search",children:"搜索"}),o.jsx("div",{className:"flex flex-col sm:flex-row gap-2 mt-1.5",children:o.jsxs("div",{className:"flex-1 relative",children:[o.jsx(Ni,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),o.jsx(ze,{id:"search",placeholder:"搜索情境、风格或上下文...",value:h,onChange:oe=>m(oe.target.value),className:"pl-9"})]})}),o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[o.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:_.size>0&&o.jsxs("span",{children:["已选择 ",_.size," 个表达方式"]})}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:c.toString(),onValueChange:oe=>{d(parseInt(oe)),l(1),A(new Set)},children:[o.jsx($t,{id:"page-size",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"10",children:"10"}),o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"50",children:"50"}),o.jsx(De,{value:"100",children:"100"})]})]}),_.size>0&&o.jsxs(o.Fragment,{children:[o.jsx(de,{variant:"outline",size:"sm",onClick:()=>A(new Set),children:"取消选择"}),o.jsxs(de,{variant:"destructive",size:"sm",onClick:()=>P(!0),children:[o.jsx(Sn,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card",children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(_f,{children:[o.jsx(Af,{children:o.jsxs(Is,{children:[o.jsx(pn,{className:"w-12",children:o.jsx(Oi,{checked:_.size===t.length&&t.length>0,onCheckedChange:W})}),o.jsx(pn,{children:"情境"}),o.jsx(pn,{children:"风格"}),o.jsx(pn,{children:"聊天"}),o.jsx(pn,{className:"text-right",children:"操作"})]})}),o.jsx(Mf,{children:n?o.jsx(Is,{children:o.jsx(Gt,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):t.length===0?o.jsx(Is,{children:o.jsx(Gt,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):t.map(oe=>o.jsxs(Is,{children:[o.jsx(Gt,{children:o.jsx(Oi,{checked:_.has(oe.id),onCheckedChange:()=>ne(oe.id)})}),o.jsx(Gt,{className:"font-medium max-w-xs truncate",children:oe.situation}),o.jsx(Gt,{className:"max-w-xs truncate",children:oe.style}),o.jsx(Gt,{className:"max-w-[200px] truncate",title:G(oe.chat_id),style:{wordBreak:"keep-all"},children:o.jsx("span",{className:"whitespace-nowrap overflow-hidden text-ellipsis block",children:G(oe.chat_id)})}),o.jsx(Gt,{className:"text-right",children:o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsxs(de,{variant:"default",size:"sm",onClick:()=>V(oe),children:[o.jsx(z0,{className:"h-4 w-4 mr-1"}),"编辑"]}),o.jsx(de,{variant:"outline",size:"icon",className:"h-8 w-8",onClick:()=>I(oe),title:"查看详情",children:o.jsx(Ea,{className:"h-4 w-4"})}),o.jsxs(de,{size:"sm",onClick:()=>E(oe),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Sn,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},oe.id))})]})}),o.jsx("div",{className:"md:hidden space-y-3 p-4",children:n?o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):t.length===0?o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):t.map(oe=>o.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Oi,{checked:_.has(oe.id),onCheckedChange:()=>ne(oe.id),className:"mt-1"}),o.jsxs("div",{className:"min-w-0 flex-1 overflow-hidden space-y-2",children:[o.jsxs("div",{children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"情境"}),o.jsx("h3",{className:"font-semibold text-sm line-clamp-2 w-full break-all",title:oe.situation,children:oe.situation})]}),o.jsxs("div",{children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"风格"}),o.jsx("p",{className:"text-sm line-clamp-2 w-full break-all",title:oe.style,children:oe.style})]})]})]}),o.jsxs("div",{className:"text-sm",children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"聊天"}),o.jsx("p",{className:"text-sm truncate",title:G(oe.chat_id),style:{wordBreak:"keep-all"},children:G(oe.chat_id)})]}),o.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>V(oe),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[o.jsx(z0,{className:"h-3 w-3 mr-1"}),"编辑"]}),o.jsx(de,{variant:"outline",size:"sm",onClick:()=>I(oe),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:o.jsx(Ea,{className:"h-3 w-3"})}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>E(oe),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[o.jsx(Sn,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},oe.id))}),s>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[o.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",s," 条记录,第 ",a," / ",Math.ceil(s/c)," 页"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(de,{variant:"outline",size:"sm",onClick:()=>l(1),disabled:a===1,className:"hidden sm:flex",children:o.jsx(Ap,{className:"h-4 w-4"})}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>l(a-1),disabled:a===1,children:[o.jsx(vd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{type:"number",value:B,onChange:oe=>$(oe.target.value),onKeyDown:oe=>oe.key==="Enter"&&re(),placeholder:a.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(s/c)}),o.jsx(de,{variant:"outline",size:"sm",onClick:re,disabled:!B,className:"h-8",children:"跳转"})]}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>l(a+1),disabled:a>=Math.ceil(s/c),children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(yd,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(de,{variant:"outline",size:"sm",onClick:()=>l(Math.ceil(s/c)),disabled:a>=Math.ceil(s/c),className:"hidden sm:flex",children:o.jsx(Mp,{className:"h-4 w-4"})})]})]})]})]})}),o.jsx(COe,{expression:g,open:y,onOpenChange:w,chatNameMap:F}),o.jsx(TOe,{open:j,onOpenChange:N,chatList:z,onSuccess:()=>{X(),R(),N(!1)}}),o.jsx(EOe,{expression:g,open:S,onOpenChange:k,chatList:z,onSuccess:()=>{X(),R(),k(!1)}}),o.jsx(Dn,{open:!!T,onOpenChange:()=>E(null),children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除表达方式 "',T?.situation,'" 吗? 此操作不可撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>T&&ee(T),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),o.jsx(_Oe,{open:L,onOpenChange:P,onConfirm:se,count:_.size})]})}function COe({expression:t,open:e,onOpenChange:n,chatNameMap:r}){if(!t)return null;const s=a=>a?new Date(a*1e3).toLocaleString("zh-CN"):"-",i=a=>r.get(a)||a;return o.jsx(Dr,{open:e,onOpenChange:n,children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"表达方式详情"}),o.jsx(ss,{children:"查看表达方式的完整信息"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsx(e0,{label:"情境",value:t.situation}),o.jsx(e0,{label:"风格",value:t.style}),o.jsx(e0,{label:"聊天",value:i(t.chat_id)}),o.jsx(e0,{icon:ik,label:"记录ID",value:t.id.toString(),mono:!0})]}),o.jsx("div",{className:"grid grid-cols-2 gap-4",children:o.jsx(e0,{icon:_h,label:"创建时间",value:s(t.create_date)})})]}),o.jsx(ws,{children:o.jsx(de,{onClick:()=>n(!1),children:"关闭"})})]})})}function e0({icon:t,label:e,value:n,mono:r=!1}){return o.jsxs("div",{className:"space-y-1",children:[o.jsxs(he,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[t&&o.jsx(t,{className:"h-3 w-3"}),e]}),o.jsx("div",{className:xe("text-sm",r&&"font-mono",!n&&"text-muted-foreground"),children:n||"-"})]})}function TOe({open:t,onOpenChange:e,chatList:n,onSuccess:r}){const[s,i]=b.useState({situation:"",style:"",chat_id:""}),[a,l]=b.useState(!1),{toast:c}=as(),d=async()=>{if(!s.situation||!s.style||!s.chat_id){c({title:"验证失败",description:"请填写必填字段:情境、风格和聊天",variant:"destructive"});return}try{l(!0),await wOe(s),c({title:"创建成功",description:"表达方式已创建"}),i({situation:"",style:"",chat_id:""}),r()}catch(h){c({title:"创建失败",description:h instanceof Error?h.message:"无法创建表达方式",variant:"destructive"})}finally{l(!1)}};return o.jsx(Dr,{open:t,onOpenChange:e,children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"新增表达方式"}),o.jsx(ss,{children:"创建新的表达方式记录"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsxs(he,{htmlFor:"situation",children:["情境 ",o.jsx("span",{className:"text-destructive",children:"*"})]}),o.jsx(ze,{id:"situation",value:s.situation,onChange:h=>i({...s,situation:h.target.value}),placeholder:"描述使用场景"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs(he,{htmlFor:"style",children:["风格 ",o.jsx("span",{className:"text-destructive",children:"*"})]}),o.jsx(ze,{id:"style",value:s.style,onChange:h=>i({...s,style:h.target.value}),placeholder:"描述表达风格"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs(he,{htmlFor:"chat_id",children:["聊天 ",o.jsx("span",{className:"text-destructive",children:"*"})]}),o.jsxs(Vt,{value:s.chat_id,onValueChange:h=>i({...s,chat_id:h}),children:[o.jsx($t,{children:o.jsx(Ut,{placeholder:"选择关联的聊天"})}),o.jsx(Ht,{children:n.map(h=>o.jsx(De,{value:h.chat_id,children:o.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[h.chat_name,h.is_group&&o.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},h.chat_id))})]})]})]}),o.jsxs(ws,{children:[o.jsx(de,{variant:"outline",onClick:()=>e(!1),children:"取消"}),o.jsx(de,{onClick:d,disabled:a,children:a?"创建中...":"创建"})]})]})})}function EOe({expression:t,open:e,onOpenChange:n,chatList:r,onSuccess:s}){const[i,a]=b.useState({}),[l,c]=b.useState(!1),{toast:d}=as();b.useEffect(()=>{t&&a({situation:t.situation,style:t.style,chat_id:t.chat_id})},[t]);const h=async()=>{if(t)try{c(!0),await SOe(t.id,i),d({title:"保存成功",description:"表达方式已更新"}),s()}catch(m){d({title:"保存失败",description:m instanceof Error?m.message:"无法更新表达方式",variant:"destructive"})}finally{c(!1)}};return t?o.jsx(Dr,{open:e,onOpenChange:n,children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"编辑表达方式"}),o.jsx(ss,{children:"修改表达方式的信息"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit_situation",children:"情境"}),o.jsx(ze,{id:"edit_situation",value:i.situation||"",onChange:m=>a({...i,situation:m.target.value}),placeholder:"描述使用场景"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit_style",children:"风格"}),o.jsx(ze,{id:"edit_style",value:i.style||"",onChange:m=>a({...i,style:m.target.value}),placeholder:"描述表达风格"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit_chat_id",children:"聊天"}),o.jsxs(Vt,{value:i.chat_id||"",onValueChange:m=>a({...i,chat_id:m}),children:[o.jsx($t,{children:o.jsx(Ut,{placeholder:"选择关联的聊天"})}),o.jsx(Ht,{children:r.map(m=>o.jsx(De,{value:m.chat_id,children:o.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[m.chat_name,m.is_group&&o.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},m.chat_id))})]})]})]}),o.jsxs(ws,{children:[o.jsx(de,{variant:"outline",onClick:()=>n(!1),children:"取消"}),o.jsx(de,{onClick:h,disabled:l,children:l?"保存中...":"保存"})]})]})}):null}function _Oe({open:t,onOpenChange:e,onConfirm:n,count:r}){return o.jsx(Dn,{open:t,onOpenChange:e,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认批量删除"}),o.jsxs(_n,{children:["您即将删除 ",r," 个表达方式,此操作无法撤销。确定要继续吗?"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:n,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认删除"})]})]})})}const Hf="/api/webui/person";async function AOe(t){const e=new URLSearchParams;t.page&&e.append("page",t.page.toString()),t.page_size&&e.append("page_size",t.page_size.toString()),t.search&&e.append("search",t.search),t.is_known!==void 0&&e.append("is_known",t.is_known.toString()),t.platform&&e.append("platform",t.platform);const n=await St(`${Hf}/list?${e}`,{headers:Dt()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取人物列表失败")}return n.json()}async function MOe(t){const e=await St(`${Hf}/${t}`,{headers:Dt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"获取人物详情失败")}return e.json()}async function ROe(t,e){const n=await St(`${Hf}/${t}`,{method:"PATCH",headers:Dt(),body:JSON.stringify(e)});if(!n.ok){const r=await n.json();throw new Error(r.detail||"更新人物信息失败")}return n.json()}async function DOe(t){const e=await St(`${Hf}/${t}`,{method:"DELETE",headers:Dt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"删除人物信息失败")}return e.json()}async function POe(){const t=await St(`${Hf}/stats/summary`,{headers:Dt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取统计数据失败")}return t.json()}async function zOe(t){const e=await St(`${Hf}/batch/delete`,{method:"POST",headers:Dt(),body:JSON.stringify({person_ids:t})});if(!e.ok){const n=await e.json();throw new Error(n.detail||"批量删除失败")}return e.json()}function IOe(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[s,i]=b.useState(0),[a,l]=b.useState(1),[c,d]=b.useState(20),[h,m]=b.useState(""),[g,x]=b.useState(void 0),[y,w]=b.useState(void 0),[S,k]=b.useState(null),[j,N]=b.useState(!1),[T,E]=b.useState(!1),[_,A]=b.useState(null),[L,P]=b.useState({total:0,known:0,unknown:0,platforms:{}}),[B,$]=b.useState(new Set),[U,te]=b.useState(!1),[z,Q]=b.useState(""),{toast:F}=as(),Y=async()=>{try{r(!0);const re=await AOe({page:a,page_size:c,search:h||void 0,is_known:g,platform:y});e(re.data),i(re.total)}catch(re){F({title:"加载失败",description:re instanceof Error?re.message:"无法加载人物信息",variant:"destructive"})}finally{r(!1)}},J=async()=>{try{const re=await POe();re?.data&&P(re.data)}catch(re){console.error("加载统计数据失败:",re)}};b.useEffect(()=>{Y(),J()},[a,c,h,g,y]);const X=async re=>{try{const oe=await MOe(re.person_id);k(oe.data),N(!0)}catch(oe){F({title:"加载详情失败",description:oe instanceof Error?oe.message:"无法加载人物详情",variant:"destructive"})}},R=re=>{k(re),E(!0)},ie=async re=>{try{await DOe(re.person_id),F({title:"删除成功",description:`已删除人物信息: ${re.person_name||re.nickname||re.user_id}`}),A(null),Y(),J()}catch(oe){F({title:"删除失败",description:oe instanceof Error?oe.message:"无法删除人物信息",variant:"destructive"})}},G=b.useMemo(()=>Object.keys(L.platforms),[L.platforms]),I=re=>{const oe=new Set(B);oe.has(re)?oe.delete(re):oe.add(re),$(oe)},V=()=>{B.size===t.length&&t.length>0?$(new Set):$(new Set(t.map(re=>re.person_id)))},ee=()=>{if(B.size===0){F({title:"未选择任何人物",description:"请先选择要删除的人物",variant:"destructive"});return}te(!0)},ne=async()=>{try{const re=await zOe(Array.from(B));F({title:"批量删除完成",description:re.message}),$(new Set),te(!1),Y(),J()}catch(re){F({title:"批量删除失败",description:re instanceof Error?re.message:"批量删除失败",variant:"destructive"})}},W=()=>{const re=parseInt(z),oe=Math.ceil(s/c);re>=1&&re<=oe?(l(re),Q("")):F({title:"无效的页码",description:`请输入1-${oe}之间的页码`,variant:"destructive"})},se=re=>re?new Date(re*1e3).toLocaleString("zh-CN"):"-";return o.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[o.jsx("div",{className:"mb-4 sm:mb-6",children:o.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:o.jsxs("div",{children:[o.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[o.jsx(ete,{className:"h-8 w-8",strokeWidth:2}),"人物信息管理"]}),o.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦认识的所有人物信息"})]})})}),o.jsx(gn,{className:"flex-1",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"总人数"}),o.jsx("div",{className:"text-2xl font-bold mt-1",children:L.total})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"已认识"}),o.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:L.known})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"未认识"}),o.jsx("div",{className:"text-2xl font-bold mt-1 text-muted-foreground",children:L.unknown})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-4 gap-4",children:[o.jsxs("div",{className:"sm:col-span-2",children:[o.jsx(he,{htmlFor:"search",children:"搜索"}),o.jsxs("div",{className:"relative mt-1.5",children:[o.jsx(Ni,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),o.jsx(ze,{id:"search",placeholder:"搜索名称、昵称或用户ID...",value:h,onChange:re=>m(re.target.value),className:"pl-9"})]})]}),o.jsxs("div",{children:[o.jsx(he,{htmlFor:"filter-known",children:"认识状态"}),o.jsxs(Vt,{value:g===void 0?"all":g.toString(),onValueChange:re=>{x(re==="all"?void 0:re==="true"),l(1)},children:[o.jsx($t,{id:"filter-known",className:"mt-1.5",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部"}),o.jsx(De,{value:"true",children:"已认识"}),o.jsx(De,{value:"false",children:"未认识"})]})]})]}),o.jsxs("div",{children:[o.jsx(he,{htmlFor:"filter-platform",children:"平台"}),o.jsxs(Vt,{value:y||"all",onValueChange:re=>{w(re==="all"?void 0:re),l(1)},children:[o.jsx($t,{id:"filter-platform",className:"mt-1.5",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部平台"}),G.map(re=>o.jsxs(De,{value:re,children:[re," (",L.platforms[re],")"]},re))]})]})]})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[o.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:B.size>0&&o.jsxs("span",{children:["已选择 ",B.size," 个人物"]})}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:c.toString(),onValueChange:re=>{d(parseInt(re)),l(1),$(new Set)},children:[o.jsx($t,{id:"page-size",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"10",children:"10"}),o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"50",children:"50"}),o.jsx(De,{value:"100",children:"100"})]})]}),B.size>0&&o.jsxs(o.Fragment,{children:[o.jsx(de,{variant:"outline",size:"sm",onClick:()=>$(new Set),children:"取消选择"}),o.jsxs(de,{variant:"destructive",size:"sm",onClick:ee,children:[o.jsx(Sn,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card",children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(_f,{children:[o.jsx(Af,{children:o.jsxs(Is,{children:[o.jsx(pn,{className:"w-12",children:o.jsx(Oi,{checked:t.length>0&&B.size===t.length,onCheckedChange:V,"aria-label":"全选"})}),o.jsx(pn,{children:"状态"}),o.jsx(pn,{children:"名称"}),o.jsx(pn,{children:"昵称"}),o.jsx(pn,{children:"平台"}),o.jsx(pn,{children:"用户ID"}),o.jsx(pn,{children:"最后更新"}),o.jsx(pn,{className:"text-right",children:"操作"})]})}),o.jsx(Mf,{children:n?o.jsx(Is,{children:o.jsx(Gt,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):t.length===0?o.jsx(Is,{children:o.jsx(Gt,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):t.map(re=>o.jsxs(Is,{children:[o.jsx(Gt,{children:o.jsx(Oi,{checked:B.has(re.person_id),onCheckedChange:()=>I(re.person_id),"aria-label":`选择 ${re.person_name||re.nickname||re.user_id}`})}),o.jsx(Gt,{children:o.jsx("div",{className:xe("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium",re.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:re.is_known?"已认识":"未认识"})}),o.jsx(Gt,{className:"font-medium",children:re.person_name||o.jsx("span",{className:"text-muted-foreground",children:"-"})}),o.jsx(Gt,{children:re.nickname||"-"}),o.jsx(Gt,{children:re.platform}),o.jsx(Gt,{className:"font-mono text-sm",children:re.user_id}),o.jsx(Gt,{className:"text-sm text-muted-foreground",children:se(re.last_know)}),o.jsx(Gt,{className:"text-right",children:o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsxs(de,{variant:"default",size:"sm",onClick:()=>X(re),children:[o.jsx(Ea,{className:"h-4 w-4 mr-1"}),"详情"]}),o.jsxs(de,{variant:"default",size:"sm",onClick:()=>R(re),children:[o.jsx(z0,{className:"h-4 w-4 mr-1"}),"编辑"]}),o.jsxs(de,{size:"sm",onClick:()=>A(re),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Sn,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},re.id))})]})}),o.jsx("div",{className:"md:hidden space-y-3 p-4",children:n?o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):t.length===0?o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):t.map(re=>o.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Oi,{checked:B.has(re.person_id),onCheckedChange:()=>I(re.person_id),className:"mt-1"}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("div",{className:xe("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium mb-2",re.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:re.is_known?"已认识":"未认识"}),o.jsx("h3",{className:"font-semibold text-sm line-clamp-1 w-full break-all",children:re.person_name||o.jsx("span",{className:"text-muted-foreground",children:"未命名"})}),re.nickname&&o.jsxs("p",{className:"text-xs text-muted-foreground mt-1 line-clamp-1 w-full break-all",children:["昵称: ",re.nickname]})]})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[o.jsxs("div",{children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"平台"}),o.jsx("p",{className:"font-medium text-xs",children:re.platform})]}),o.jsxs("div",{children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"用户ID"}),o.jsx("p",{className:"font-mono text-xs truncate",title:re.user_id,children:re.user_id})]}),o.jsxs("div",{className:"col-span-2",children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"最后更新"}),o.jsx("p",{className:"text-xs",children:se(re.last_know)})]})]}),o.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>X(re),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[o.jsx(Ea,{className:"h-3 w-3 mr-1"}),"查看"]}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>R(re),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[o.jsx(z0,{className:"h-3 w-3 mr-1"}),"编辑"]}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>A(re),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[o.jsx(Sn,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},re.id))}),s>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[o.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",s," 条记录,第 ",a," / ",Math.ceil(s/c)," 页"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(de,{variant:"outline",size:"sm",onClick:()=>l(1),disabled:a===1,className:"hidden sm:flex",children:o.jsx(Ap,{className:"h-4 w-4"})}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>l(a-1),disabled:a===1,children:[o.jsx(vd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{type:"number",value:z,onChange:re=>Q(re.target.value),onKeyDown:re=>re.key==="Enter"&&W(),placeholder:a.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(s/c)}),o.jsx(de,{variant:"outline",size:"sm",onClick:W,disabled:!z,className:"h-8",children:"跳转"})]}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>l(a+1),disabled:a>=Math.ceil(s/c),children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(yd,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(de,{variant:"outline",size:"sm",onClick:()=>l(Math.ceil(s/c)),disabled:a>=Math.ceil(s/c),className:"hidden sm:flex",children:o.jsx(Mp,{className:"h-4 w-4"})})]})]})]})]})}),o.jsx(LOe,{person:S,open:j,onOpenChange:N}),o.jsx(BOe,{person:S,open:T,onOpenChange:E,onSuccess:()=>{Y(),J(),E(!1)}}),o.jsx(Dn,{open:!!_,onOpenChange:()=>A(null),children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除人物信息 "',_?.person_name||_?.nickname||_?.user_id,'" 吗? 此操作不可撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>_&&ie(_),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),o.jsx(Dn,{open:U,onOpenChange:te,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认批量删除"}),o.jsxs(_n,{children:["确定要删除选中的 ",B.size," 个人物信息吗? 此操作不可撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:ne,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})})]})}function LOe({person:t,open:e,onOpenChange:n}){if(!t)return null;const r=s=>s?new Date(s*1e3).toLocaleString("zh-CN"):"-";return o.jsx(Dr,{open:e,onOpenChange:n,children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"人物详情"}),o.jsxs(ss,{children:["查看 ",t.person_name||t.nickname||t.user_id," 的完整信息"]})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsx(bl,{icon:Dv,label:"人物名称",value:t.person_name}),o.jsx(bl,{icon:Wh,label:"昵称",value:t.nickname}),o.jsx(bl,{icon:ik,label:"用户ID",value:t.user_id,mono:!0}),o.jsx(bl,{icon:ik,label:"人物ID",value:t.person_id,mono:!0}),o.jsx(bl,{label:"平台",value:t.platform}),o.jsx(bl,{label:"状态",value:t.is_known?"已认识":"未认识"})]}),t.name_reason&&o.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[o.jsx(he,{className:"text-xs text-muted-foreground",children:"名称设定原因"}),o.jsx("p",{className:"mt-1 text-sm",children:t.name_reason})]}),t.memory_points&&o.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[o.jsx(he,{className:"text-xs text-muted-foreground",children:"个人印象"}),o.jsx("p",{className:"mt-1 text-sm whitespace-pre-wrap",children:t.memory_points})]}),t.group_nick_name&&t.group_nick_name.length>0&&o.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[o.jsx(he,{className:"text-xs text-muted-foreground",children:"群昵称"}),o.jsx("div",{className:"mt-2 space-y-1",children:t.group_nick_name.map((s,i)=>o.jsxs("div",{className:"text-sm flex items-center gap-2",children:[o.jsx("span",{className:"font-mono text-xs text-muted-foreground",children:s.group_id}),o.jsx("span",{children:"→"}),o.jsx("span",{children:s.group_nick_name})]},i))})]}),o.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[o.jsx(bl,{icon:_h,label:"认识时间",value:r(t.know_times)}),o.jsx(bl,{icon:_h,label:"首次记录",value:r(t.know_since)}),o.jsx(bl,{icon:_h,label:"最后更新",value:r(t.last_know)})]})]}),o.jsx(ws,{children:o.jsx(de,{onClick:()=>n(!1),children:"关闭"})})]})})}function bl({icon:t,label:e,value:n,mono:r=!1}){return o.jsxs("div",{className:"space-y-1",children:[o.jsxs(he,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[t&&o.jsx(t,{className:"h-3 w-3"}),e]}),o.jsx("div",{className:xe("text-sm",r&&"font-mono",!n&&"text-muted-foreground"),children:n||"-"})]})}function BOe({person:t,open:e,onOpenChange:n,onSuccess:r}){const[s,i]=b.useState({}),[a,l]=b.useState(!1),{toast:c}=as();b.useEffect(()=>{t&&i({person_name:t.person_name||"",name_reason:t.name_reason||"",nickname:t.nickname||"",memory_points:t.memory_points||"",is_known:t.is_known})},[t]);const d=async()=>{if(t)try{l(!0),await ROe(t.person_id,s),c({title:"保存成功",description:"人物信息已更新"}),r()}catch(h){c({title:"保存失败",description:h instanceof Error?h.message:"无法更新人物信息",variant:"destructive"})}finally{l(!1)}};return t?o.jsx(Dr,{open:e,onOpenChange:n,children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"编辑人物信息"}),o.jsxs(ss,{children:["修改 ",t.person_name||t.nickname||t.user_id," 的信息"]})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"person_name",children:"人物名称"}),o.jsx(ze,{id:"person_name",value:s.person_name||"",onChange:h=>i({...s,person_name:h.target.value}),placeholder:"为这个人设置一个名称"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"nickname",children:"昵称"}),o.jsx(ze,{id:"nickname",value:s.nickname||"",onChange:h=>i({...s,nickname:h.target.value}),placeholder:"昵称"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"name_reason",children:"名称设定原因"}),o.jsx(Mr,{id:"name_reason",value:s.name_reason||"",onChange:h=>i({...s,name_reason:h.target.value}),placeholder:"为什么这样称呼这个人?",rows:2})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"memory_points",children:"个人印象"}),o.jsx(Mr,{id:"memory_points",value:s.memory_points||"",onChange:h=>i({...s,memory_points:h.target.value}),placeholder:"对这个人的印象和记忆点...",rows:4})]}),o.jsxs("div",{className:"flex items-center justify-between rounded-lg border p-3",children:[o.jsxs("div",{children:[o.jsx(he,{htmlFor:"is_known",className:"text-base font-medium",children:"已认识"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"标记是否已经认识这个人"})]}),o.jsx(Bt,{id:"is_known",checked:s.is_known,onCheckedChange:h=>i({...s,is_known:h})})]})]}),o.jsxs(ws,{children:[o.jsx(de,{variant:"outline",onClick:()=>n(!1),children:"取消"}),o.jsx(de,{onClick:d,disabled:a,children:a?"保存中...":"保存"})]})]})}):null}function Bs(t){if(typeof t=="string"||typeof t=="number")return""+t;let e="";if(Array.isArray(t))for(let n=0,r;n{let e;const n=new Set,r=(h,m)=>{const g=typeof h=="function"?h(e):h;if(!Object.is(g,e)){const x=e;e=m??(typeof g!="object"||g===null)?g:Object.assign({},e,g),n.forEach(y=>y(e,x))}},s=()=>e,c={setState:r,getState:s,getInitialState:()=>d,subscribe:h=>(n.add(h),()=>n.delete(h)),destroy:()=>{(FOe?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},d=e=t(r,s,c);return c},qOe=t=>t?JR(t):JR,{useDebugValue:$Oe}=ae,{useSyncExternalStoreWithSelector:HOe}=pJ,QOe=t=>t;function KU(t,e=QOe,n){const r=HOe(t.subscribe,t.getState,t.getServerState||t.getInitialState,e,n);return $Oe(r),r}const eD=(t,e)=>{const n=qOe(t),r=(s,i=e)=>KU(n,s,i);return Object.assign(r,n),r},VOe=(t,e)=>t?eD(t,e):eD;function ks(t,e){if(Object.is(t,e))return!0;if(typeof t!="object"||t===null||typeof e!="object"||e===null)return!1;if(t instanceof Map&&e instanceof Map){if(t.size!==e.size)return!1;for(const[r,s]of t)if(!Object.is(s,e.get(r)))return!1;return!0}if(t instanceof Set&&e instanceof Set){if(t.size!==e.size)return!1;for(const r of t)if(!e.has(r))return!1;return!0}const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!1;for(const r of n)if(!Object.prototype.hasOwnProperty.call(e,r)||!Object.is(t[r],e[r]))return!1;return!0}var UOe={value:()=>{}};function Gb(){for(var t=0,e=arguments.length,n={},r;t=0&&(r=n.slice(s+1),n=n.slice(0,s)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}jv.prototype=Gb.prototype={constructor:jv,on:function(t,e){var n=this._,r=WOe(t+"",n),s,i=-1,a=r.length;if(arguments.length<2){for(;++i0)for(var n=new Array(s),r=0,s,i;r=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),nD.hasOwnProperty(e)?{space:nD[e],local:t}:t}function XOe(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===XO&&e.documentElement.namespaceURI===XO?e.createElement(t):e.createElementNS(n,t)}}function YOe(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function ZU(t){var e=Xb(t);return(e.local?YOe:XOe)(e)}function KOe(){}function VN(t){return t==null?KOe:function(){return this.querySelector(t)}}function ZOe(t){typeof t!="function"&&(t=VN(t));for(var e=this._groups,n=e.length,r=new Array(n),s=0;s=N&&(N=j+1);!(E=S[N])&&++N=0;)(a=r[s])&&(i&&a.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(a,i),i=a);return this}function kje(t){t||(t=Oje);function e(m,g){return m&&g?t(m.__data__,g.__data__):!m-!g}for(var n=this._groups,r=n.length,s=new Array(r),i=0;ie?1:t>=e?0:NaN}function jje(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function Nje(){return Array.from(this)}function Cje(){for(var t=this._groups,e=0,n=t.length;e1?this.each((e==null?Lje:typeof e=="function"?Fje:Bje)(t,e,n??"")):mf(this.node(),t)}function mf(t,e){return t.style.getPropertyValue(e)||rW(t).getComputedStyle(t,null).getPropertyValue(e)}function $je(t){return function(){delete this[t]}}function Hje(t,e){return function(){this[t]=e}}function Qje(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}function Vje(t,e){return arguments.length>1?this.each((e==null?$je:typeof e=="function"?Qje:Hje)(t,e)):this.node()[t]}function sW(t){return t.trim().split(/^|\s+/)}function UN(t){return t.classList||new iW(t)}function iW(t){this._node=t,this._names=sW(t.getAttribute("class")||"")}iW.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function aW(t,e){for(var n=UN(t),r=-1,s=e.length;++r=0&&(n=e.slice(r+1),e=e.slice(0,r)),{type:e,name:n}})}function y6e(t){return function(){var e=this.__on;if(e){for(var n=0,r=-1,s=e.length,i;n()=>t;function YO(t,{sourceEvent:e,subject:n,target:r,identifier:s,active:i,x:a,y:l,dx:c,dy:d,dispatch:h}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:s,enumerable:!0,configurable:!0},active:{value:i,enumerable:!0,configurable:!0},x:{value:a,enumerable:!0,configurable:!0},y:{value:l,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:d,enumerable:!0,configurable:!0},_:{value:h}})}YO.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};function E6e(t){return!t.ctrlKey&&!t.button}function _6e(){return this.parentNode}function A6e(t,e){return e??{x:t.x,y:t.y}}function M6e(){return navigator.maxTouchPoints||"ontouchstart"in this}function R6e(){var t=E6e,e=_6e,n=A6e,r=M6e,s={},i=Gb("start","drag","end"),a=0,l,c,d,h,m=0;function g(T){T.on("mousedown.drag",x).filter(r).on("touchstart.drag",S).on("touchmove.drag",k,T6e).on("touchend.drag touchcancel.drag",j).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function x(T,E){if(!(h||!t.call(this,T,E))){var _=N(this,e.call(this,T,E),T,E,"mouse");_&&(ma(T.view).on("mousemove.drag",y,yp).on("mouseup.drag",w,yp),uW(T.view),o5(T),d=!1,l=T.clientX,c=T.clientY,_("start",T))}}function y(T){if(Hh(T),!d){var E=T.clientX-l,_=T.clientY-c;d=E*E+_*_>m}s.mouse("drag",T)}function w(T){ma(T.view).on("mousemove.drag mouseup.drag",null),dW(T.view,d),Hh(T),s.mouse("end",T)}function S(T,E){if(t.call(this,T,E)){var _=T.changedTouches,A=e.call(this,T,E),L=_.length,P,B;for(P=0;P=0&&t._call.call(void 0,e),t=t._next;--pf}function rD(){md=(Ey=bp.now())+Yb,pf=f0=0;try{P6e()}finally{pf=0,I6e(),md=0}}function z6e(){var t=bp.now(),e=t-Ey;e>hW&&(Yb-=e,Ey=t)}function I6e(){for(var t,e=Ty,n,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Ty=n);m0=t,KO(r)}function KO(t){if(!pf){f0&&(f0=clearTimeout(f0));var e=t-md;e>24?(t<1/0&&(f0=setTimeout(rD,t-bp.now()-Yb)),t0&&(t0=clearInterval(t0))):(t0||(Ey=bp.now(),t0=setInterval(z6e,hW)),pf=1,fW(rD))}}function sD(t,e,n){var r=new _y;return e=e==null?0:+e,r.restart(s=>{r.stop(),t(s+e)},e,n),r}var L6e=Gb("start","end","cancel","interrupt"),B6e=[],pW=0,iD=1,ZO=2,Nv=3,aD=4,JO=5,Cv=6;function Kb(t,e,n,r,s,i){var a=t.__transition;if(!a)t.__transition={};else if(n in a)return;F6e(t,n,{name:e,index:r,group:s,on:L6e,tween:B6e,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:pW})}function GN(t,e){var n=io(t,e);if(n.state>pW)throw new Error("too late; already scheduled");return n}function Go(t,e){var n=io(t,e);if(n.state>Nv)throw new Error("too late; already running");return n}function io(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function F6e(t,e,n){var r=t.__transition,s;r[e]=n,n.timer=mW(i,0,n.time);function i(d){n.state=iD,n.timer.restart(a,n.delay,n.time),n.delay<=d&&a(d-n.delay)}function a(d){var h,m,g,x;if(n.state!==iD)return c();for(h in r)if(x=r[h],x.name===n.name){if(x.state===Nv)return sD(a);x.state===aD?(x.state=Cv,x.timer.stop(),x.on.call("interrupt",t,t.__data__,x.index,x.group),delete r[h]):+hZO&&r.state=0&&(e=e.slice(0,n)),!e||e==="start"})}function gNe(t,e,n){var r,s,i=pNe(e)?GN:Go;return function(){var a=i(this,t),l=a.on;l!==r&&(s=(r=l).copy()).on(e,n),a.on=s}}function xNe(t,e){var n=this._id;return arguments.length<2?io(this.node(),n).on.on(t):this.each(gNe(n,t,e))}function vNe(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}function yNe(){return this.on("end.remove",vNe(this._id))}function bNe(t){var e=this._name,n=this._id;typeof t!="function"&&(t=VN(t));for(var r=this._groups,s=r.length,i=new Array(s),a=0;a()=>t;function VNe(t,{sourceEvent:e,target:n,transform:r,dispatch:s}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:s}})}function Rl(t,e,n){this.k=t,this.x=e,this.y=n}Rl.prototype={constructor:Rl,scale:function(t){return t===1?this:new Rl(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new Rl(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Fl=new Rl(1,0,0);Rl.prototype;function l5(t){t.stopImmediatePropagation()}function n0(t){t.preventDefault(),t.stopImmediatePropagation()}function UNe(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function WNe(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]):[[0,0],[t.clientWidth,t.clientHeight]]}function oD(){return this.__zoom||Fl}function GNe(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function XNe(){return navigator.maxTouchPoints||"ontouchstart"in this}function YNe(t,e,n){var r=t.invertX(e[0][0])-n[0][0],s=t.invertX(e[1][0])-n[1][0],i=t.invertY(e[0][1])-n[0][1],a=t.invertY(e[1][1])-n[1][1];return t.translate(s>r?(r+s)/2:Math.min(0,r)||Math.max(0,s),a>i?(i+a)/2:Math.min(0,i)||Math.max(0,a))}function yW(){var t=UNe,e=WNe,n=YNe,r=GNe,s=XNe,i=[0,1/0],a=[[-1/0,-1/0],[1/0,1/0]],l=250,c=BJ,d=Gb("start","zoom","end"),h,m,g,x=500,y=150,w=0,S=10;function k(z){z.property("__zoom",oD).on("wheel.zoom",L,{passive:!1}).on("mousedown.zoom",P).on("dblclick.zoom",B).filter(s).on("touchstart.zoom",$).on("touchmove.zoom",U).on("touchend.zoom touchcancel.zoom",te).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}k.transform=function(z,Q,F,Y){var J=z.selection?z.selection():z;J.property("__zoom",oD),z!==J?E(z,Q,F,Y):J.interrupt().each(function(){_(this,arguments).event(Y).start().zoom(null,typeof Q=="function"?Q.apply(this,arguments):Q).end()})},k.scaleBy=function(z,Q,F,Y){k.scaleTo(z,function(){var J=this.__zoom.k,X=typeof Q=="function"?Q.apply(this,arguments):Q;return J*X},F,Y)},k.scaleTo=function(z,Q,F,Y){k.transform(z,function(){var J=e.apply(this,arguments),X=this.__zoom,R=F==null?T(J):typeof F=="function"?F.apply(this,arguments):F,ie=X.invert(R),G=typeof Q=="function"?Q.apply(this,arguments):Q;return n(N(j(X,G),R,ie),J,a)},F,Y)},k.translateBy=function(z,Q,F,Y){k.transform(z,function(){return n(this.__zoom.translate(typeof Q=="function"?Q.apply(this,arguments):Q,typeof F=="function"?F.apply(this,arguments):F),e.apply(this,arguments),a)},null,Y)},k.translateTo=function(z,Q,F,Y,J){k.transform(z,function(){var X=e.apply(this,arguments),R=this.__zoom,ie=Y==null?T(X):typeof Y=="function"?Y.apply(this,arguments):Y;return n(Fl.translate(ie[0],ie[1]).scale(R.k).translate(typeof Q=="function"?-Q.apply(this,arguments):-Q,typeof F=="function"?-F.apply(this,arguments):-F),X,a)},Y,J)};function j(z,Q){return Q=Math.max(i[0],Math.min(i[1],Q)),Q===z.k?z:new Rl(Q,z.x,z.y)}function N(z,Q,F){var Y=Q[0]-F[0]*z.k,J=Q[1]-F[1]*z.k;return Y===z.x&&J===z.y?z:new Rl(z.k,Y,J)}function T(z){return[(+z[0][0]+ +z[1][0])/2,(+z[0][1]+ +z[1][1])/2]}function E(z,Q,F,Y){z.on("start.zoom",function(){_(this,arguments).event(Y).start()}).on("interrupt.zoom end.zoom",function(){_(this,arguments).event(Y).end()}).tween("zoom",function(){var J=this,X=arguments,R=_(J,X).event(Y),ie=e.apply(J,X),G=F==null?T(ie):typeof F=="function"?F.apply(J,X):F,I=Math.max(ie[1][0]-ie[0][0],ie[1][1]-ie[0][1]),V=J.__zoom,ee=typeof Q=="function"?Q.apply(J,X):Q,ne=c(V.invert(G).concat(I/V.k),ee.invert(G).concat(I/ee.k));return function(W){if(W===1)W=ee;else{var se=ne(W),re=I/se[2];W=new Rl(re,G[0]-se[0]*re,G[1]-se[1]*re)}R.zoom(null,W)}})}function _(z,Q,F){return!F&&z.__zooming||new A(z,Q)}function A(z,Q){this.that=z,this.args=Q,this.active=0,this.sourceEvent=null,this.extent=e.apply(z,Q),this.taps=0}A.prototype={event:function(z){return z&&(this.sourceEvent=z),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(z,Q){return this.mouse&&z!=="mouse"&&(this.mouse[1]=Q.invert(this.mouse[0])),this.touch0&&z!=="touch"&&(this.touch0[1]=Q.invert(this.touch0[0])),this.touch1&&z!=="touch"&&(this.touch1[1]=Q.invert(this.touch1[0])),this.that.__zoom=Q,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(z){var Q=ma(this.that).datum();d.call(z,this.that,new VNe(z,{sourceEvent:this.sourceEvent,target:k,transform:this.that.__zoom,dispatch:d}),Q)}};function L(z,...Q){if(!t.apply(this,arguments))return;var F=_(this,Q).event(z),Y=this.__zoom,J=Math.max(i[0],Math.min(i[1],Y.k*Math.pow(2,r.apply(this,arguments)))),X=Ha(z);if(F.wheel)(F.mouse[0][0]!==X[0]||F.mouse[0][1]!==X[1])&&(F.mouse[1]=Y.invert(F.mouse[0]=X)),clearTimeout(F.wheel);else{if(Y.k===J)return;F.mouse=[X,Y.invert(X)],Tv(this),F.start()}n0(z),F.wheel=setTimeout(R,y),F.zoom("mouse",n(N(j(Y,J),F.mouse[0],F.mouse[1]),F.extent,a));function R(){F.wheel=null,F.end()}}function P(z,...Q){if(g||!t.apply(this,arguments))return;var F=z.currentTarget,Y=_(this,Q,!0).event(z),J=ma(z.view).on("mousemove.zoom",G,!0).on("mouseup.zoom",I,!0),X=Ha(z,F),R=z.clientX,ie=z.clientY;uW(z.view),l5(z),Y.mouse=[X,this.__zoom.invert(X)],Tv(this),Y.start();function G(V){if(n0(V),!Y.moved){var ee=V.clientX-R,ne=V.clientY-ie;Y.moved=ee*ee+ne*ne>w}Y.event(V).zoom("mouse",n(N(Y.that.__zoom,Y.mouse[0]=Ha(V,F),Y.mouse[1]),Y.extent,a))}function I(V){J.on("mousemove.zoom mouseup.zoom",null),dW(V.view,Y.moved),n0(V),Y.event(V).end()}}function B(z,...Q){if(t.apply(this,arguments)){var F=this.__zoom,Y=Ha(z.changedTouches?z.changedTouches[0]:z,this),J=F.invert(Y),X=F.k*(z.shiftKey?.5:2),R=n(N(j(F,X),Y,J),e.apply(this,Q),a);n0(z),l>0?ma(this).transition().duration(l).call(E,R,Y,z):ma(this).call(k.transform,R,Y,z)}}function $(z,...Q){if(t.apply(this,arguments)){var F=z.touches,Y=F.length,J=_(this,Q,z.changedTouches.length===Y).event(z),X,R,ie,G;for(l5(z),R=0;R"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:t=>`Node type "${t}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:t=>`The old edge with id=${t} does not exist.`,error009:t=>`Marker type "${t}" doesn't exist.`,error008:(t,e)=>`Couldn't create edge for ${t?"target":"source"} handle id: "${t?e.targetHandle:e.sourceHandle}", edge id: ${e.id}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:t=>`Edge type "${t}" not found. Using fallback type "default".`,error012:t=>`Node with id "${t}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`},bW=Gl.error001();function hr(t,e){const n=b.useContext(Zb);if(n===null)throw new Error(bW);return KU(n,t,e)}const ps=()=>{const t=b.useContext(Zb);if(t===null)throw new Error(bW);return b.useMemo(()=>({getState:t.getState,setState:t.setState,subscribe:t.subscribe,destroy:t.destroy}),[t])},ZNe=t=>t.userSelectionActive?"none":"all";function Jb({position:t,children:e,className:n,style:r,...s}){const i=hr(ZNe),a=`${t}`.split("-");return ae.createElement("div",{className:Bs(["react-flow__panel",n,...a]),style:{...r,pointerEvents:i},...s},e)}function JNe({proOptions:t,position:e="bottom-right"}){return t?.hideAttribution?null:ae.createElement(Jb,{position:e,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://reactflow.dev/pro"},ae.createElement("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution"},"React Flow"))}const e7e=({x:t,y:e,label:n,labelStyle:r={},labelShowBg:s=!0,labelBgStyle:i={},labelBgPadding:a=[2,4],labelBgBorderRadius:l=2,children:c,className:d,...h})=>{const m=b.useRef(null),[g,x]=b.useState({x:0,y:0,width:0,height:0}),y=Bs(["react-flow__edge-textwrapper",d]);return b.useEffect(()=>{if(m.current){const w=m.current.getBBox();x({x:w.x,y:w.y,width:w.width,height:w.height})}},[n]),typeof n>"u"||!n?null:ae.createElement("g",{transform:`translate(${t-g.width/2} ${e-g.height/2})`,className:y,visibility:g.width?"visible":"hidden",...h},s&&ae.createElement("rect",{width:g.width+2*a[0],x:-a[0],y:-a[1],height:g.height+2*a[1],className:"react-flow__edge-textbg",style:i,rx:l,ry:l}),ae.createElement("text",{className:"react-flow__edge-text",y:g.height/2,dy:"0.3em",ref:m,style:r},n),c)};var t7e=b.memo(e7e);const YN=t=>({width:t.offsetWidth,height:t.offsetHeight}),gf=(t,e=0,n=1)=>Math.min(Math.max(t,e),n),KN=(t={x:0,y:0},e)=>({x:gf(t.x,e[0][0],e[1][0]),y:gf(t.y,e[0][1],e[1][1])}),lD=(t,e,n)=>tn?-gf(Math.abs(t-n),1,50)/50:0,wW=(t,e)=>{const n=lD(t.x,35,e.width-35)*20,r=lD(t.y,35,e.height-35)*20;return[n,r]},SW=t=>t.getRootNode?.()||window?.document,kW=(t,e)=>({x:Math.min(t.x,e.x),y:Math.min(t.y,e.y),x2:Math.max(t.x2,e.x2),y2:Math.max(t.y2,e.y2)}),wp=({x:t,y:e,width:n,height:r})=>({x:t,y:e,x2:t+n,y2:e+r}),OW=({x:t,y:e,x2:n,y2:r})=>({x:t,y:e,width:n-t,height:r-e}),cD=t=>({...t.positionAbsolute||{x:0,y:0},width:t.width||0,height:t.height||0}),n7e=(t,e)=>OW(kW(wp(t),wp(e))),ej=(t,e)=>{const n=Math.max(0,Math.min(t.x+t.width,e.x+e.width)-Math.max(t.x,e.x)),r=Math.max(0,Math.min(t.y+t.height,e.y+e.height)-Math.max(t.y,e.y));return Math.ceil(n*r)},r7e=t=>ka(t.width)&&ka(t.height)&&ka(t.x)&&ka(t.y),ka=t=>!isNaN(t)&&isFinite(t),Lr=Symbol.for("internals"),jW=["Enter"," ","Escape"],s7e=(t,e)=>{},i7e=t=>"nativeEvent"in t;function tj(t){const n=(i7e(t)?t.nativeEvent:t).composedPath?.()?.[0]||t.target;return["INPUT","SELECT","TEXTAREA"].includes(n?.nodeName)||n?.hasAttribute("contenteditable")||!!n?.closest(".nokey")}const NW=t=>"clientX"in t,Hc=(t,e)=>{const n=NW(t),r=n?t.clientX:t.touches?.[0].clientX,s=n?t.clientY:t.touches?.[0].clientY;return{x:r-(e?.left??0),y:s-(e?.top??0)}},Ay=()=>typeof navigator<"u"&&navigator?.userAgent?.indexOf("Mac")>=0,vg=({id:t,path:e,labelX:n,labelY:r,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d,style:h,markerEnd:m,markerStart:g,interactionWidth:x=20})=>ae.createElement(ae.Fragment,null,ae.createElement("path",{id:t,style:h,d:e,fill:"none",className:"react-flow__edge-path",markerEnd:m,markerStart:g}),x&&ae.createElement("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:x,className:"react-flow__edge-interaction"}),s&&ka(n)&&ka(r)?ae.createElement(t7e,{x:n,y:r,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d}):null);vg.displayName="BaseEdge";function r0(t,e,n){return n===void 0?n:r=>{const s=e().edges.find(i=>i.id===t);s&&n(r,{...s})}}function CW({sourceX:t,sourceY:e,targetX:n,targetY:r}){const s=Math.abs(n-t)/2,i=n{const[S,k,j]=EW({sourceX:t,sourceY:e,sourcePosition:s,targetX:n,targetY:r,targetPosition:i});return ae.createElement(vg,{path:S,labelX:k,labelY:j,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:m,style:g,markerEnd:x,markerStart:y,interactionWidth:w})});ZN.displayName="SimpleBezierEdge";const dD={[wt.Left]:{x:-1,y:0},[wt.Right]:{x:1,y:0},[wt.Top]:{x:0,y:-1},[wt.Bottom]:{x:0,y:1}},a7e=({source:t,sourcePosition:e=wt.Bottom,target:n})=>e===wt.Left||e===wt.Right?t.xMath.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2));function o7e({source:t,sourcePosition:e=wt.Bottom,target:n,targetPosition:r=wt.Top,center:s,offset:i}){const a=dD[e],l=dD[r],c={x:t.x+a.x*i,y:t.y+a.y*i},d={x:n.x+l.x*i,y:n.y+l.y*i},h=a7e({source:c,sourcePosition:e,target:d}),m=h.x!==0?"x":"y",g=h[m];let x=[],y,w;const S={x:0,y:0},k={x:0,y:0},[j,N,T,E]=CW({sourceX:t.x,sourceY:t.y,targetX:n.x,targetY:n.y});if(a[m]*l[m]===-1){y=s.x??j,w=s.y??N;const A=[{x:y,y:c.y},{x:y,y:d.y}],L=[{x:c.x,y:w},{x:d.x,y:w}];a[m]===g?x=m==="x"?A:L:x=m==="x"?L:A}else{const A=[{x:c.x,y:d.y}],L=[{x:d.x,y:c.y}];if(m==="x"?x=a.x===g?L:A:x=a.y===g?A:L,e===r){const te=Math.abs(t[m]-n[m]);if(te<=i){const z=Math.min(i-1,i-te);a[m]===g?S[m]=(c[m]>t[m]?-1:1)*z:k[m]=(d[m]>n[m]?-1:1)*z}}if(e!==r){const te=m==="x"?"y":"x",z=a[m]===l[te],Q=c[te]>d[te],F=c[te]=U?(y=(P.x+B.x)/2,w=x[0].y):(y=x[0].x,w=(P.y+B.y)/2)}return[[t,{x:c.x+S.x,y:c.y+S.y},...x,{x:d.x+k.x,y:d.y+k.y},n],y,w,T,E]}function l7e(t,e,n,r){const s=Math.min(hD(t,e)/2,hD(e,n)/2,r),{x:i,y:a}=e;if(t.x===i&&i===n.x||t.y===a&&a===n.y)return`L${i} ${a}`;if(t.y===a){const d=t.x{let N="";return j>0&&j{const[k,j,N]=nj({sourceX:t,sourceY:e,sourcePosition:m,targetX:n,targetY:r,targetPosition:g,borderRadius:w?.borderRadius,offset:w?.offset});return ae.createElement(vg,{path:k,labelX:j,labelY:N,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d,style:h,markerEnd:x,markerStart:y,interactionWidth:S})});ew.displayName="SmoothStepEdge";const JN=b.memo(t=>ae.createElement(ew,{...t,pathOptions:b.useMemo(()=>({borderRadius:0,offset:t.pathOptions?.offset}),[t.pathOptions?.offset])}));JN.displayName="StepEdge";function c7e({sourceX:t,sourceY:e,targetX:n,targetY:r}){const[s,i,a,l]=CW({sourceX:t,sourceY:e,targetX:n,targetY:r});return[`M ${t},${e}L ${n},${r}`,s,i,a,l]}const e7=b.memo(({sourceX:t,sourceY:e,targetX:n,targetY:r,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d,style:h,markerEnd:m,markerStart:g,interactionWidth:x})=>{const[y,w,S]=c7e({sourceX:t,sourceY:e,targetX:n,targetY:r});return ae.createElement(vg,{path:y,labelX:w,labelY:S,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d,style:h,markerEnd:m,markerStart:g,interactionWidth:x})});e7.displayName="StraightEdge";function $1(t,e){return t>=0?.5*t:e*25*Math.sqrt(-t)}function fD({pos:t,x1:e,y1:n,x2:r,y2:s,c:i}){switch(t){case wt.Left:return[e-$1(e-r,i),n];case wt.Right:return[e+$1(r-e,i),n];case wt.Top:return[e,n-$1(n-s,i)];case wt.Bottom:return[e,n+$1(s-n,i)]}}function _W({sourceX:t,sourceY:e,sourcePosition:n=wt.Bottom,targetX:r,targetY:s,targetPosition:i=wt.Top,curvature:a=.25}){const[l,c]=fD({pos:n,x1:t,y1:e,x2:r,y2:s,c:a}),[d,h]=fD({pos:i,x1:r,y1:s,x2:t,y2:e,c:a}),[m,g,x,y]=TW({sourceX:t,sourceY:e,targetX:r,targetY:s,sourceControlX:l,sourceControlY:c,targetControlX:d,targetControlY:h});return[`M${t},${e} C${l},${c} ${d},${h} ${r},${s}`,m,g,x,y]}const Ry=b.memo(({sourceX:t,sourceY:e,targetX:n,targetY:r,sourcePosition:s=wt.Bottom,targetPosition:i=wt.Top,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:m,style:g,markerEnd:x,markerStart:y,pathOptions:w,interactionWidth:S})=>{const[k,j,N]=_W({sourceX:t,sourceY:e,sourcePosition:s,targetX:n,targetY:r,targetPosition:i,curvature:w?.curvature});return ae.createElement(vg,{path:k,labelX:j,labelY:N,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:m,style:g,markerEnd:x,markerStart:y,interactionWidth:S})});Ry.displayName="BezierEdge";const t7=b.createContext(null),u7e=t7.Provider;t7.Consumer;const d7e=()=>b.useContext(t7),h7e=t=>"id"in t&&"source"in t&&"target"in t,f7e=({source:t,sourceHandle:e,target:n,targetHandle:r})=>`reactflow__edge-${t}${e||""}-${n}${r||""}`,rj=(t,e)=>typeof t>"u"?"":typeof t=="string"?t:`${e?`${e}__`:""}${Object.keys(t).sort().map(r=>`${r}=${t[r]}`).join("&")}`,m7e=(t,e)=>e.some(n=>n.source===t.source&&n.target===t.target&&(n.sourceHandle===t.sourceHandle||!n.sourceHandle&&!t.sourceHandle)&&(n.targetHandle===t.targetHandle||!n.targetHandle&&!t.targetHandle)),p7e=(t,e)=>{if(!t.source||!t.target)return e;let n;return h7e(t)?n={...t}:n={...t,id:f7e(t)},m7e(n,e)?e:e.concat(n)},sj=({x:t,y:e},[n,r,s],i,[a,l])=>{const c={x:(t-n)/s,y:(e-r)/s};return i?{x:a*Math.round(c.x/a),y:l*Math.round(c.y/l)}:c},AW=({x:t,y:e},[n,r,s])=>({x:t*s+n,y:e*s+r}),td=(t,e=[0,0])=>{if(!t)return{x:0,y:0,positionAbsolute:{x:0,y:0}};const n=(t.width??0)*e[0],r=(t.height??0)*e[1],s={x:t.position.x-n,y:t.position.y-r};return{...s,positionAbsolute:t.positionAbsolute?{x:t.positionAbsolute.x-n,y:t.positionAbsolute.y-r}:s}},tw=(t,e=[0,0])=>{if(t.length===0)return{x:0,y:0,width:0,height:0};const n=t.reduce((r,s)=>{const{x:i,y:a}=td(s,e).positionAbsolute;return kW(r,wp({x:i,y:a,width:s.width||0,height:s.height||0}))},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return OW(n)},MW=(t,e,[n,r,s]=[0,0,1],i=!1,a=!1,l=[0,0])=>{const c={x:(e.x-n)/s,y:(e.y-r)/s,width:e.width/s,height:e.height/s},d=[];return t.forEach(h=>{const{width:m,height:g,selectable:x=!0,hidden:y=!1}=h;if(a&&!x||y)return!1;const{positionAbsolute:w}=td(h,l),S={x:w.x,y:w.y,width:m||0,height:g||0},k=ej(c,S),j=typeof m>"u"||typeof g>"u"||m===null||g===null,N=i&&k>0,T=(m||0)*(g||0);(j||N||k>=T||h.dragging)&&d.push(h)}),d},RW=(t,e)=>{const n=t.map(r=>r.id);return e.filter(r=>n.includes(r.source)||n.includes(r.target))},DW=(t,e,n,r,s,i=.1)=>{const a=e/(t.width*(1+i)),l=n/(t.height*(1+i)),c=Math.min(a,l),d=gf(c,r,s),h=t.x+t.width/2,m=t.y+t.height/2,g=e/2-h*d,x=n/2-m*d;return{x:g,y:x,zoom:d}},Lu=(t,e=0)=>t.transition().duration(e);function mD(t,e,n,r){return(e[n]||[]).reduce((s,i)=>(`${t.id}-${i.id}-${n}`!==r&&s.push({id:i.id||null,type:n,nodeId:t.id,x:(t.positionAbsolute?.x??0)+i.x+i.width/2,y:(t.positionAbsolute?.y??0)+i.y+i.height/2}),s),[])}function g7e(t,e,n,r,s,i){const{x:a,y:l}=Hc(t),d=e.elementsFromPoint(a,l).find(y=>y.classList.contains("react-flow__handle"));if(d){const y=d.getAttribute("data-nodeid");if(y){const w=n7(void 0,d),S=d.getAttribute("data-handleid"),k=i({nodeId:y,id:S,type:w});if(k){const j=s.find(N=>N.nodeId===y&&N.type===w&&N.id===S);return{handle:{id:S,type:w,nodeId:y,x:j?.x||n.x,y:j?.y||n.y},validHandleResult:k}}}}let h=[],m=1/0;if(s.forEach(y=>{const w=Math.sqrt((y.x-n.x)**2+(y.y-n.y)**2);if(w<=r){const S=i(y);w<=m&&(wy.isValid),x=h.some(({handle:y})=>y.type==="target");return h.find(({handle:y,validHandleResult:w})=>x?y.type==="target":g?w.isValid:!0)||h[0]}const x7e={source:null,target:null,sourceHandle:null,targetHandle:null},PW=()=>({handleDomNode:null,isValid:!1,connection:x7e,endHandle:null});function zW(t,e,n,r,s,i,a){const l=s==="target",c=a.querySelector(`.react-flow__handle[data-id="${t?.nodeId}-${t?.id}-${t?.type}"]`),d={...PW(),handleDomNode:c};if(c){const h=n7(void 0,c),m=c.getAttribute("data-nodeid"),g=c.getAttribute("data-handleid"),x=c.classList.contains("connectable"),y=c.classList.contains("connectableend"),w={source:l?m:n,sourceHandle:l?g:r,target:l?n:m,targetHandle:l?r:g};d.connection=w,x&&y&&(e===pd.Strict?l&&h==="source"||!l&&h==="target":m!==n||g!==r)&&(d.endHandle={nodeId:m,handleId:g,type:h},d.isValid=i(w))}return d}function v7e({nodes:t,nodeId:e,handleId:n,handleType:r}){return t.reduce((s,i)=>{if(i[Lr]){const{handleBounds:a}=i[Lr];let l=[],c=[];a&&(l=mD(i,a,"source",`${e}-${n}-${r}`),c=mD(i,a,"target",`${e}-${n}-${r}`)),s.push(...l,...c)}return s},[])}function n7(t,e){return t||(e?.classList.contains("target")?"target":e?.classList.contains("source")?"source":null)}function c5(t){t?.classList.remove("valid","connecting","react-flow__handle-valid","react-flow__handle-connecting")}function y7e(t,e){let n=null;return e?n="valid":t&&!e&&(n="invalid"),n}function IW({event:t,handleId:e,nodeId:n,onConnect:r,isTarget:s,getState:i,setState:a,isValidConnection:l,edgeUpdaterType:c,onReconnectEnd:d}){const h=SW(t.target),{connectionMode:m,domNode:g,autoPanOnConnect:x,connectionRadius:y,onConnectStart:w,panBy:S,getNodes:k,cancelConnection:j}=i();let N=0,T;const{x:E,y:_}=Hc(t),A=h?.elementFromPoint(E,_),L=n7(c,A),P=g?.getBoundingClientRect();if(!P||!L)return;let B,$=Hc(t,P),U=!1,te=null,z=!1,Q=null;const F=v7e({nodes:k(),nodeId:n,handleId:e,handleType:L}),Y=()=>{if(!x)return;const[R,ie]=wW($,P);S({x:R,y:ie}),N=requestAnimationFrame(Y)};a({connectionPosition:$,connectionStatus:null,connectionNodeId:n,connectionHandleId:e,connectionHandleType:L,connectionStartHandle:{nodeId:n,handleId:e,type:L},connectionEndHandle:null}),w?.(t,{nodeId:n,handleId:e,handleType:L});function J(R){const{transform:ie}=i();$=Hc(R,P);const{handle:G,validHandleResult:I}=g7e(R,h,sj($,ie,!1,[1,1]),y,F,V=>zW(V,m,n,e,s?"target":"source",l,h));if(T=G,U||(Y(),U=!0),Q=I.handleDomNode,te=I.connection,z=I.isValid,a({connectionPosition:T&&z?AW({x:T.x,y:T.y},ie):$,connectionStatus:y7e(!!T,z),connectionEndHandle:I.endHandle}),!T&&!z&&!Q)return c5(B);te.source!==te.target&&Q&&(c5(B),B=Q,Q.classList.add("connecting","react-flow__handle-connecting"),Q.classList.toggle("valid",z),Q.classList.toggle("react-flow__handle-valid",z))}function X(R){(T||Q)&&te&&z&&r?.(te),i().onConnectEnd?.(R),c&&d?.(R),c5(B),j(),cancelAnimationFrame(N),U=!1,z=!1,te=null,Q=null,h.removeEventListener("mousemove",J),h.removeEventListener("mouseup",X),h.removeEventListener("touchmove",J),h.removeEventListener("touchend",X)}h.addEventListener("mousemove",J),h.addEventListener("mouseup",X),h.addEventListener("touchmove",J),h.addEventListener("touchend",X)}const pD=()=>!0,b7e=t=>({connectionStartHandle:t.connectionStartHandle,connectOnClick:t.connectOnClick,noPanClassName:t.noPanClassName}),w7e=(t,e,n)=>r=>{const{connectionStartHandle:s,connectionEndHandle:i,connectionClickStartHandle:a}=r;return{connecting:s?.nodeId===t&&s?.handleId===e&&s?.type===n||i?.nodeId===t&&i?.handleId===e&&i?.type===n,clickConnecting:a?.nodeId===t&&a?.handleId===e&&a?.type===n}},LW=b.forwardRef(({type:t="source",position:e=wt.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:s=!0,isConnectableEnd:i=!0,id:a,onConnect:l,children:c,className:d,onMouseDown:h,onTouchStart:m,...g},x)=>{const y=a||null,w=t==="target",S=ps(),k=d7e(),{connectOnClick:j,noPanClassName:N}=hr(b7e,ks),{connecting:T,clickConnecting:E}=hr(w7e(k,y,t),ks);k||S.getState().onError?.("010",Gl.error010());const _=P=>{const{defaultEdgeOptions:B,onConnect:$,hasDefaultEdges:U}=S.getState(),te={...B,...P};if(U){const{edges:z,setEdges:Q}=S.getState();Q(p7e(te,z))}$?.(te),l?.(te)},A=P=>{if(!k)return;const B=NW(P);s&&(B&&P.button===0||!B)&&IW({event:P,handleId:y,nodeId:k,onConnect:_,isTarget:w,getState:S.getState,setState:S.setState,isValidConnection:n||S.getState().isValidConnection||pD}),B?h?.(P):m?.(P)},L=P=>{const{onClickConnectStart:B,onClickConnectEnd:$,connectionClickStartHandle:U,connectionMode:te,isValidConnection:z}=S.getState();if(!k||!U&&!s)return;if(!U){B?.(P,{nodeId:k,handleId:y,handleType:t}),S.setState({connectionClickStartHandle:{nodeId:k,type:t,handleId:y}});return}const Q=SW(P.target),F=n||z||pD,{connection:Y,isValid:J}=zW({nodeId:k,id:y,type:t},te,U.nodeId,U.handleId||null,U.type,F,Q);J&&_(Y),$?.(P),S.setState({connectionClickStartHandle:null})};return ae.createElement("div",{"data-handleid":y,"data-nodeid":k,"data-handlepos":e,"data-id":`${k}-${y}-${t}`,className:Bs(["react-flow__handle",`react-flow__handle-${e}`,"nodrag",N,d,{source:!w,target:w,connectable:r,connectablestart:s,connectableend:i,connecting:E,connectionindicator:r&&(s&&!T||i&&T)}]),onMouseDown:A,onTouchStart:A,onClick:j?L:void 0,ref:x,...g},c)});LW.displayName="Handle";var ru=b.memo(LW);const BW=({data:t,isConnectable:e,targetPosition:n=wt.Top,sourcePosition:r=wt.Bottom})=>ae.createElement(ae.Fragment,null,ae.createElement(ru,{type:"target",position:n,isConnectable:e}),t?.label,ae.createElement(ru,{type:"source",position:r,isConnectable:e}));BW.displayName="DefaultNode";var ij=b.memo(BW);const FW=({data:t,isConnectable:e,sourcePosition:n=wt.Bottom})=>ae.createElement(ae.Fragment,null,t?.label,ae.createElement(ru,{type:"source",position:n,isConnectable:e}));FW.displayName="InputNode";var qW=b.memo(FW);const $W=({data:t,isConnectable:e,targetPosition:n=wt.Top})=>ae.createElement(ae.Fragment,null,ae.createElement(ru,{type:"target",position:n,isConnectable:e}),t?.label);$W.displayName="OutputNode";var HW=b.memo($W);const r7=()=>null;r7.displayName="GroupNode";const S7e=t=>({selectedNodes:t.getNodes().filter(e=>e.selected),selectedEdges:t.edges.filter(e=>e.selected).map(e=>({...e}))}),H1=t=>t.id;function k7e(t,e){return ks(t.selectedNodes.map(H1),e.selectedNodes.map(H1))&&ks(t.selectedEdges.map(H1),e.selectedEdges.map(H1))}const QW=b.memo(({onSelectionChange:t})=>{const e=ps(),{selectedNodes:n,selectedEdges:r}=hr(S7e,k7e);return b.useEffect(()=>{const s={nodes:n,edges:r};t?.(s),e.getState().onSelectionChange.forEach(i=>i(s))},[n,r,t]),null});QW.displayName="SelectionListener";const O7e=t=>!!t.onSelectionChange;function j7e({onSelectionChange:t}){const e=hr(O7e);return t||e?ae.createElement(QW,{onSelectionChange:t}):null}const N7e=t=>({setNodes:t.setNodes,setEdges:t.setEdges,setDefaultNodesAndEdges:t.setDefaultNodesAndEdges,setMinZoom:t.setMinZoom,setMaxZoom:t.setMaxZoom,setTranslateExtent:t.setTranslateExtent,setNodeExtent:t.setNodeExtent,reset:t.reset});function uh(t,e){b.useEffect(()=>{typeof t<"u"&&e(t)},[t])}function an(t,e,n){b.useEffect(()=>{typeof e<"u"&&n({[t]:e})},[e])}const C7e=({nodes:t,edges:e,defaultNodes:n,defaultEdges:r,onConnect:s,onConnectStart:i,onConnectEnd:a,onClickConnectStart:l,onClickConnectEnd:c,nodesDraggable:d,nodesConnectable:h,nodesFocusable:m,edgesFocusable:g,edgesUpdatable:x,elevateNodesOnSelect:y,minZoom:w,maxZoom:S,nodeExtent:k,onNodesChange:j,onEdgesChange:N,elementsSelectable:T,connectionMode:E,snapGrid:_,snapToGrid:A,translateExtent:L,connectOnClick:P,defaultEdgeOptions:B,fitView:$,fitViewOptions:U,onNodesDelete:te,onEdgesDelete:z,onNodeDrag:Q,onNodeDragStart:F,onNodeDragStop:Y,onSelectionDrag:J,onSelectionDragStart:X,onSelectionDragStop:R,noPanClassName:ie,nodeOrigin:G,rfId:I,autoPanOnConnect:V,autoPanOnNodeDrag:ee,onError:ne,connectionRadius:W,isValidConnection:se,nodeDragThreshold:re})=>{const{setNodes:oe,setEdges:Te,setDefaultNodesAndEdges:We,setMinZoom:Ye,setMaxZoom:Je,setTranslateExtent:Oe,setNodeExtent:Ve,reset:Ue}=hr(N7e,ks),He=ps();return b.useEffect(()=>{const Ot=r?.map(xt=>({...xt,...B}));return We(n,Ot),()=>{Ue()}},[]),an("defaultEdgeOptions",B,He.setState),an("connectionMode",E,He.setState),an("onConnect",s,He.setState),an("onConnectStart",i,He.setState),an("onConnectEnd",a,He.setState),an("onClickConnectStart",l,He.setState),an("onClickConnectEnd",c,He.setState),an("nodesDraggable",d,He.setState),an("nodesConnectable",h,He.setState),an("nodesFocusable",m,He.setState),an("edgesFocusable",g,He.setState),an("edgesUpdatable",x,He.setState),an("elementsSelectable",T,He.setState),an("elevateNodesOnSelect",y,He.setState),an("snapToGrid",A,He.setState),an("snapGrid",_,He.setState),an("onNodesChange",j,He.setState),an("onEdgesChange",N,He.setState),an("connectOnClick",P,He.setState),an("fitViewOnInit",$,He.setState),an("fitViewOnInitOptions",U,He.setState),an("onNodesDelete",te,He.setState),an("onEdgesDelete",z,He.setState),an("onNodeDrag",Q,He.setState),an("onNodeDragStart",F,He.setState),an("onNodeDragStop",Y,He.setState),an("onSelectionDrag",J,He.setState),an("onSelectionDragStart",X,He.setState),an("onSelectionDragStop",R,He.setState),an("noPanClassName",ie,He.setState),an("nodeOrigin",G,He.setState),an("rfId",I,He.setState),an("autoPanOnConnect",V,He.setState),an("autoPanOnNodeDrag",ee,He.setState),an("onError",ne,He.setState),an("connectionRadius",W,He.setState),an("isValidConnection",se,He.setState),an("nodeDragThreshold",re,He.setState),uh(t,oe),uh(e,Te),uh(w,Ye),uh(S,Je),uh(L,Oe),uh(k,Ve),null},gD={display:"none"},T7e={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},VW="react-flow__node-desc",UW="react-flow__edge-desc",E7e="react-flow__aria-live",_7e=t=>t.ariaLiveMessage;function A7e({rfId:t}){const e=hr(_7e);return ae.createElement("div",{id:`${E7e}-${t}`,"aria-live":"assertive","aria-atomic":"true",style:T7e},e)}function M7e({rfId:t,disableKeyboardA11y:e}){return ae.createElement(ae.Fragment,null,ae.createElement("div",{id:`${VW}-${t}`,style:gD},"Press enter or space to select a node.",!e&&"You can then use the arrow keys to move the node around."," Press delete to remove it and escape to cancel."," "),ae.createElement("div",{id:`${UW}-${t}`,style:gD},"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."),!e&&ae.createElement(A7e,{rfId:t}))}var kp=(t=null,e={actInsideInputWithModifier:!0})=>{const[n,r]=b.useState(!1),s=b.useRef(!1),i=b.useRef(new Set([])),[a,l]=b.useMemo(()=>{if(t!==null){const d=(Array.isArray(t)?t:[t]).filter(m=>typeof m=="string").map(m=>m.split("+")),h=d.reduce((m,g)=>m.concat(...g),[]);return[d,h]}return[[],[]]},[t]);return b.useEffect(()=>{const c=typeof document<"u"?document:null,d=e?.target||c;if(t!==null){const h=x=>{if(s.current=x.ctrlKey||x.metaKey||x.shiftKey,(!s.current||s.current&&!e.actInsideInputWithModifier)&&tj(x))return!1;const w=vD(x.code,l);i.current.add(x[w]),xD(a,i.current,!1)&&(x.preventDefault(),r(!0))},m=x=>{if((!s.current||s.current&&!e.actInsideInputWithModifier)&&tj(x))return!1;const w=vD(x.code,l);xD(a,i.current,!0)?(r(!1),i.current.clear()):i.current.delete(x[w]),x.key==="Meta"&&i.current.clear(),s.current=!1},g=()=>{i.current.clear(),r(!1)};return d?.addEventListener("keydown",h),d?.addEventListener("keyup",m),window.addEventListener("blur",g),()=>{d?.removeEventListener("keydown",h),d?.removeEventListener("keyup",m),window.removeEventListener("blur",g)}}},[t,r]),n};function xD(t,e,n){return t.filter(r=>n||r.length===e.size).some(r=>r.every(s=>e.has(s)))}function vD(t,e){return e.includes(t)?"code":"key"}function WW(t,e,n,r){const s=t.parentNode||t.parentId;if(!s)return n;const i=e.get(s),a=td(i,r);return WW(i,e,{x:(n.x??0)+a.x,y:(n.y??0)+a.y,z:(i[Lr]?.z??0)>(n.z??0)?i[Lr]?.z??0:n.z??0},r)}function GW(t,e,n){t.forEach(r=>{const s=r.parentNode||r.parentId;if(s&&!t.has(s))throw new Error(`Parent node ${s} not found`);if(s||n?.[r.id]){const{x:i,y:a,z:l}=WW(r,t,{...r.position,z:r[Lr]?.z??0},e);r.positionAbsolute={x:i,y:a},r[Lr].z=l,n?.[r.id]&&(r[Lr].isParent=!0)}})}function u5(t,e,n,r){const s=new Map,i={},a=r?1e3:0;return t.forEach(l=>{const c=(ka(l.zIndex)?l.zIndex:0)+(l.selected?a:0),d=e.get(l.id),h={...l,positionAbsolute:{x:l.position.x,y:l.position.y}},m=l.parentNode||l.parentId;m&&(i[m]=!0);const g=d?.type&&d?.type!==l.type;Object.defineProperty(h,Lr,{enumerable:!1,value:{handleBounds:g?void 0:d?.[Lr]?.handleBounds,z:c}}),s.set(l.id,h)}),GW(s,n,i),s}function XW(t,e={}){const{getNodes:n,width:r,height:s,minZoom:i,maxZoom:a,d3Zoom:l,d3Selection:c,fitViewOnInitDone:d,fitViewOnInit:h,nodeOrigin:m}=t(),g=e.initial&&!d&&h;if(l&&c&&(g||!e.initial)){const y=n().filter(S=>{const k=e.includeHiddenNodes?S.width&&S.height:!S.hidden;return e.nodes?.length?k&&e.nodes.some(j=>j.id===S.id):k}),w=y.every(S=>S.width&&S.height);if(y.length>0&&w){const S=tw(y,m),{x:k,y:j,zoom:N}=DW(S,r,s,e.minZoom??i,e.maxZoom??a,e.padding??.1),T=Fl.translate(k,j).scale(N);return typeof e.duration=="number"&&e.duration>0?l.transform(Lu(c,e.duration),T):l.transform(c,T),!0}}return!1}function R7e(t,e){return t.forEach(n=>{const r=e.get(n.id);r&&e.set(r.id,{...r,[Lr]:r[Lr],selected:n.selected})}),new Map(e)}function D7e(t,e){return e.map(n=>{const r=t.find(s=>s.id===n.id);return r&&(n.selected=r.selected),n})}function Q1({changedNodes:t,changedEdges:e,get:n,set:r}){const{nodeInternals:s,edges:i,onNodesChange:a,onEdgesChange:l,hasDefaultNodes:c,hasDefaultEdges:d}=n();t?.length&&(c&&r({nodeInternals:R7e(t,s)}),a?.(t)),e?.length&&(d&&r({edges:D7e(e,i)}),l?.(e))}const dh=()=>{},P7e={zoomIn:dh,zoomOut:dh,zoomTo:dh,getZoom:()=>1,setViewport:dh,getViewport:()=>({x:0,y:0,zoom:1}),fitView:()=>!1,setCenter:dh,fitBounds:dh,project:t=>t,screenToFlowPosition:t=>t,flowToScreenPosition:t=>t,viewportInitialized:!1},z7e=t=>({d3Zoom:t.d3Zoom,d3Selection:t.d3Selection}),I7e=()=>{const t=ps(),{d3Zoom:e,d3Selection:n}=hr(z7e,ks);return b.useMemo(()=>n&&e?{zoomIn:s=>e.scaleBy(Lu(n,s?.duration),1.2),zoomOut:s=>e.scaleBy(Lu(n,s?.duration),1/1.2),zoomTo:(s,i)=>e.scaleTo(Lu(n,i?.duration),s),getZoom:()=>t.getState().transform[2],setViewport:(s,i)=>{const[a,l,c]=t.getState().transform,d=Fl.translate(s.x??a,s.y??l).scale(s.zoom??c);e.transform(Lu(n,i?.duration),d)},getViewport:()=>{const[s,i,a]=t.getState().transform;return{x:s,y:i,zoom:a}},fitView:s=>XW(t.getState,s),setCenter:(s,i,a)=>{const{width:l,height:c,maxZoom:d}=t.getState(),h=typeof a?.zoom<"u"?a.zoom:d,m=l/2-s*h,g=c/2-i*h,x=Fl.translate(m,g).scale(h);e.transform(Lu(n,a?.duration),x)},fitBounds:(s,i)=>{const{width:a,height:l,minZoom:c,maxZoom:d}=t.getState(),{x:h,y:m,zoom:g}=DW(s,a,l,c,d,i?.padding??.1),x=Fl.translate(h,m).scale(g);e.transform(Lu(n,i?.duration),x)},project:s=>{const{transform:i,snapToGrid:a,snapGrid:l}=t.getState();return console.warn("[DEPRECATED] `project` is deprecated. Instead use `screenToFlowPosition`. There is no need to subtract the react flow bounds anymore! https://reactflow.dev/api-reference/types/react-flow-instance#screen-to-flow-position"),sj(s,i,a,l)},screenToFlowPosition:s=>{const{transform:i,snapToGrid:a,snapGrid:l,domNode:c}=t.getState();if(!c)return s;const{x:d,y:h}=c.getBoundingClientRect(),m={x:s.x-d,y:s.y-h};return sj(m,i,a,l)},flowToScreenPosition:s=>{const{transform:i,domNode:a}=t.getState();if(!a)return s;const{x:l,y:c}=a.getBoundingClientRect(),d=AW(s,i);return{x:d.x+l,y:d.y+c}},viewportInitialized:!0}:P7e,[e,n])};function s7(){const t=I7e(),e=ps(),n=b.useCallback(()=>e.getState().getNodes().map(w=>({...w})),[]),r=b.useCallback(w=>e.getState().nodeInternals.get(w),[]),s=b.useCallback(()=>{const{edges:w=[]}=e.getState();return w.map(S=>({...S}))},[]),i=b.useCallback(w=>{const{edges:S=[]}=e.getState();return S.find(k=>k.id===w)},[]),a=b.useCallback(w=>{const{getNodes:S,setNodes:k,hasDefaultNodes:j,onNodesChange:N}=e.getState(),T=S(),E=typeof w=="function"?w(T):w;if(j)k(E);else if(N){const _=E.length===0?T.map(A=>({type:"remove",id:A.id})):E.map(A=>({item:A,type:"reset"}));N(_)}},[]),l=b.useCallback(w=>{const{edges:S=[],setEdges:k,hasDefaultEdges:j,onEdgesChange:N}=e.getState(),T=typeof w=="function"?w(S):w;if(j)k(T);else if(N){const E=T.length===0?S.map(_=>({type:"remove",id:_.id})):T.map(_=>({item:_,type:"reset"}));N(E)}},[]),c=b.useCallback(w=>{const S=Array.isArray(w)?w:[w],{getNodes:k,setNodes:j,hasDefaultNodes:N,onNodesChange:T}=e.getState();if(N){const _=[...k(),...S];j(_)}else if(T){const E=S.map(_=>({item:_,type:"add"}));T(E)}},[]),d=b.useCallback(w=>{const S=Array.isArray(w)?w:[w],{edges:k=[],setEdges:j,hasDefaultEdges:N,onEdgesChange:T}=e.getState();if(N)j([...k,...S]);else if(T){const E=S.map(_=>({item:_,type:"add"}));T(E)}},[]),h=b.useCallback(()=>{const{getNodes:w,edges:S=[],transform:k}=e.getState(),[j,N,T]=k;return{nodes:w().map(E=>({...E})),edges:S.map(E=>({...E})),viewport:{x:j,y:N,zoom:T}}},[]),m=b.useCallback(({nodes:w,edges:S})=>{const{nodeInternals:k,getNodes:j,edges:N,hasDefaultNodes:T,hasDefaultEdges:E,onNodesDelete:_,onEdgesDelete:A,onNodesChange:L,onEdgesChange:P}=e.getState(),B=(w||[]).map(Q=>Q.id),$=(S||[]).map(Q=>Q.id),U=j().reduce((Q,F)=>{const Y=F.parentNode||F.parentId,J=!B.includes(F.id)&&Y&&Q.find(R=>R.id===Y);return(typeof F.deletable=="boolean"?F.deletable:!0)&&(B.includes(F.id)||J)&&Q.push(F),Q},[]),te=N.filter(Q=>typeof Q.deletable=="boolean"?Q.deletable:!0),z=te.filter(Q=>$.includes(Q.id));if(U||z){const Q=RW(U,te),F=[...z,...Q],Y=F.reduce((J,X)=>(J.includes(X.id)||J.push(X.id),J),[]);if((E||T)&&(E&&e.setState({edges:N.filter(J=>!Y.includes(J.id))}),T&&(U.forEach(J=>{k.delete(J.id)}),e.setState({nodeInternals:new Map(k)}))),Y.length>0&&(A?.(F),P&&P(Y.map(J=>({id:J,type:"remove"})))),U.length>0&&(_?.(U),L)){const J=U.map(X=>({id:X.id,type:"remove"}));L(J)}}},[]),g=b.useCallback(w=>{const S=r7e(w),k=S?null:e.getState().nodeInternals.get(w.id);return!S&&!k?[null,null,S]:[S?w:cD(k),k,S]},[]),x=b.useCallback((w,S=!0,k)=>{const[j,N,T]=g(w);return j?(k||e.getState().getNodes()).filter(E=>{if(!T&&(E.id===N.id||!E.positionAbsolute))return!1;const _=cD(E),A=ej(_,j);return S&&A>0||A>=j.width*j.height}):[]},[]),y=b.useCallback((w,S,k=!0)=>{const[j]=g(w);if(!j)return!1;const N=ej(j,S);return k&&N>0||N>=j.width*j.height},[]);return b.useMemo(()=>({...t,getNodes:n,getNode:r,getEdges:s,getEdge:i,setNodes:a,setEdges:l,addNodes:c,addEdges:d,toObject:h,deleteElements:m,getIntersectingNodes:x,isNodeIntersecting:y}),[t,n,r,s,i,a,l,c,d,h,m,x,y])}const L7e={actInsideInputWithModifier:!1};var B7e=({deleteKeyCode:t,multiSelectionKeyCode:e})=>{const n=ps(),{deleteElements:r}=s7(),s=kp(t,L7e),i=kp(e);b.useEffect(()=>{if(s){const{edges:a,getNodes:l}=n.getState(),c=l().filter(h=>h.selected),d=a.filter(h=>h.selected);r({nodes:c,edges:d}),n.setState({nodesSelectionActive:!1})}},[s]),b.useEffect(()=>{n.setState({multiSelectionActive:i})},[i])};function F7e(t){const e=ps();b.useEffect(()=>{let n;const r=()=>{if(!t.current)return;const s=YN(t.current);(s.height===0||s.width===0)&&e.getState().onError?.("004",Gl.error004()),e.setState({width:s.width||500,height:s.height||500})};return r(),window.addEventListener("resize",r),t.current&&(n=new ResizeObserver(()=>r()),n.observe(t.current)),()=>{window.removeEventListener("resize",r),n&&t.current&&n.unobserve(t.current)}},[])}const i7={position:"absolute",width:"100%",height:"100%",top:0,left:0},q7e=(t,e)=>t.x!==e.x||t.y!==e.y||t.zoom!==e.k,V1=t=>({x:t.x,y:t.y,zoom:t.k}),hh=(t,e)=>t.target.closest(`.${e}`),yD=(t,e)=>e===2&&Array.isArray(t)&&t.includes(2),bD=t=>{const e=t.ctrlKey&&Ay()?10:1;return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*e},$7e=t=>({d3Zoom:t.d3Zoom,d3Selection:t.d3Selection,d3ZoomHandler:t.d3ZoomHandler,userSelectionActive:t.userSelectionActive}),H7e=({onMove:t,onMoveStart:e,onMoveEnd:n,onPaneContextMenu:r,zoomOnScroll:s=!0,zoomOnPinch:i=!0,panOnScroll:a=!1,panOnScrollSpeed:l=.5,panOnScrollMode:c=Wu.Free,zoomOnDoubleClick:d=!0,elementsSelectable:h,panOnDrag:m=!0,defaultViewport:g,translateExtent:x,minZoom:y,maxZoom:w,zoomActivationKeyCode:S,preventScrolling:k=!0,children:j,noWheelClassName:N,noPanClassName:T})=>{const E=b.useRef(),_=ps(),A=b.useRef(!1),L=b.useRef(!1),P=b.useRef(null),B=b.useRef({x:0,y:0,zoom:0}),{d3Zoom:$,d3Selection:U,d3ZoomHandler:te,userSelectionActive:z}=hr($7e,ks),Q=kp(S),F=b.useRef(0),Y=b.useRef(!1),J=b.useRef();return F7e(P),b.useEffect(()=>{if(P.current){const X=P.current.getBoundingClientRect(),R=yW().scaleExtent([y,w]).translateExtent(x),ie=ma(P.current).call(R),G=Fl.translate(g.x,g.y).scale(gf(g.zoom,y,w)),I=[[0,0],[X.width,X.height]],V=R.constrain()(G,I,x);R.transform(ie,V),R.wheelDelta(bD),_.setState({d3Zoom:R,d3Selection:ie,d3ZoomHandler:ie.on("wheel.zoom"),transform:[V.x,V.y,V.k],domNode:P.current.closest(".react-flow")})}},[]),b.useEffect(()=>{U&&$&&(a&&!Q&&!z?U.on("wheel.zoom",X=>{if(hh(X,N))return!1;X.preventDefault(),X.stopImmediatePropagation();const R=U.property("__zoom").k||1;if(X.ctrlKey&&i){const se=Ha(X),re=bD(X),oe=R*Math.pow(2,re);$.scaleTo(U,oe,se,X);return}const ie=X.deltaMode===1?20:1;let G=c===Wu.Vertical?0:X.deltaX*ie,I=c===Wu.Horizontal?0:X.deltaY*ie;!Ay()&&X.shiftKey&&c!==Wu.Vertical&&(G=X.deltaY*ie,I=0),$.translateBy(U,-(G/R)*l,-(I/R)*l,{internal:!0});const V=V1(U.property("__zoom")),{onViewportChangeStart:ee,onViewportChange:ne,onViewportChangeEnd:W}=_.getState();clearTimeout(J.current),Y.current||(Y.current=!0,e?.(X,V),ee?.(V)),Y.current&&(t?.(X,V),ne?.(V),J.current=setTimeout(()=>{n?.(X,V),W?.(V),Y.current=!1},150))},{passive:!1}):typeof te<"u"&&U.on("wheel.zoom",function(X,R){if(!k&&X.type==="wheel"&&!X.ctrlKey||hh(X,N))return null;X.preventDefault(),te.call(this,X,R)},{passive:!1}))},[z,a,c,U,$,te,Q,i,k,N,e,t,n]),b.useEffect(()=>{$&&$.on("start",X=>{if(!X.sourceEvent||X.sourceEvent.internal)return null;F.current=X.sourceEvent?.button;const{onViewportChangeStart:R}=_.getState(),ie=V1(X.transform);A.current=!0,B.current=ie,X.sourceEvent?.type==="mousedown"&&_.setState({paneDragging:!0}),R?.(ie),e?.(X.sourceEvent,ie)})},[$,e]),b.useEffect(()=>{$&&(z&&!A.current?$.on("zoom",null):z||$.on("zoom",X=>{const{onViewportChange:R}=_.getState();if(_.setState({transform:[X.transform.x,X.transform.y,X.transform.k]}),L.current=!!(r&&yD(m,F.current??0)),(t||R)&&!X.sourceEvent?.internal){const ie=V1(X.transform);R?.(ie),t?.(X.sourceEvent,ie)}}))},[z,$,t,m,r]),b.useEffect(()=>{$&&$.on("end",X=>{if(!X.sourceEvent||X.sourceEvent.internal)return null;const{onViewportChangeEnd:R}=_.getState();if(A.current=!1,_.setState({paneDragging:!1}),r&&yD(m,F.current??0)&&!L.current&&r(X.sourceEvent),L.current=!1,(n||R)&&q7e(B.current,X.transform)){const ie=V1(X.transform);B.current=ie,clearTimeout(E.current),E.current=setTimeout(()=>{R?.(ie),n?.(X.sourceEvent,ie)},a?150:0)}})},[$,a,m,n,r]),b.useEffect(()=>{$&&$.filter(X=>{const R=Q||s,ie=i&&X.ctrlKey;if((m===!0||Array.isArray(m)&&m.includes(1))&&X.button===1&&X.type==="mousedown"&&(hh(X,"react-flow__node")||hh(X,"react-flow__edge")))return!0;if(!m&&!R&&!a&&!d&&!i||z||!d&&X.type==="dblclick"||hh(X,N)&&X.type==="wheel"||hh(X,T)&&(X.type!=="wheel"||a&&X.type==="wheel"&&!Q)||!i&&X.ctrlKey&&X.type==="wheel"||!R&&!a&&!ie&&X.type==="wheel"||!m&&(X.type==="mousedown"||X.type==="touchstart")||Array.isArray(m)&&!m.includes(X.button)&&X.type==="mousedown")return!1;const G=Array.isArray(m)&&m.includes(X.button)||!X.button||X.button<=1;return(!X.ctrlKey||X.type==="wheel")&&G})},[z,$,s,i,a,d,m,h,Q]),ae.createElement("div",{className:"react-flow__renderer",ref:P,style:i7},j)},Q7e=t=>({userSelectionActive:t.userSelectionActive,userSelectionRect:t.userSelectionRect});function V7e(){const{userSelectionActive:t,userSelectionRect:e}=hr(Q7e,ks);return t&&e?ae.createElement("div",{className:"react-flow__selection react-flow__container",style:{width:e.width,height:e.height,transform:`translate(${e.x}px, ${e.y}px)`}}):null}function wD(t,e){const n=e.parentNode||e.parentId,r=t.find(s=>s.id===n);if(r){const s=e.position.x+e.width-r.width,i=e.position.y+e.height-r.height;if(s>0||i>0||e.position.x<0||e.position.y<0){if(r.style={...r.style},r.style.width=r.style.width??r.width,r.style.height=r.style.height??r.height,s>0&&(r.style.width+=s),i>0&&(r.style.height+=i),e.position.x<0){const a=Math.abs(e.position.x);r.position.x=r.position.x-a,r.style.width+=a,e.position.x=0}if(e.position.y<0){const a=Math.abs(e.position.y);r.position.y=r.position.y-a,r.style.height+=a,e.position.y=0}r.width=r.style.width,r.height=r.style.height}}}function YW(t,e){if(t.some(r=>r.type==="reset"))return t.filter(r=>r.type==="reset").map(r=>r.item);const n=t.filter(r=>r.type==="add").map(r=>r.item);return e.reduce((r,s)=>{const i=t.filter(l=>l.id===s.id);if(i.length===0)return r.push(s),r;const a={...s};for(const l of i)if(l)switch(l.type){case"select":{a.selected=l.selected;break}case"position":{typeof l.position<"u"&&(a.position=l.position),typeof l.positionAbsolute<"u"&&(a.positionAbsolute=l.positionAbsolute),typeof l.dragging<"u"&&(a.dragging=l.dragging),a.expandParent&&wD(r,a);break}case"dimensions":{typeof l.dimensions<"u"&&(a.width=l.dimensions.width,a.height=l.dimensions.height),typeof l.updateStyle<"u"&&(a.style={...a.style||{},...l.dimensions}),typeof l.resizing=="boolean"&&(a.resizing=l.resizing),a.expandParent&&wD(r,a);break}case"remove":return r}return r.push(a),r},n)}function KW(t,e){return YW(t,e)}function U7e(t,e){return YW(t,e)}const Pc=(t,e)=>({id:t,type:"select",selected:e});function Eh(t,e){return t.reduce((n,r)=>{const s=e.includes(r.id);return!r.selected&&s?(r.selected=!0,n.push(Pc(r.id,!0))):r.selected&&!s&&(r.selected=!1,n.push(Pc(r.id,!1))),n},[])}const d5=(t,e)=>n=>{n.target===e.current&&t?.(n)},W7e=t=>({userSelectionActive:t.userSelectionActive,elementsSelectable:t.elementsSelectable,dragging:t.paneDragging}),ZW=b.memo(({isSelecting:t,selectionMode:e=Sp.Full,panOnDrag:n,onSelectionStart:r,onSelectionEnd:s,onPaneClick:i,onPaneContextMenu:a,onPaneScroll:l,onPaneMouseEnter:c,onPaneMouseMove:d,onPaneMouseLeave:h,children:m})=>{const g=b.useRef(null),x=ps(),y=b.useRef(0),w=b.useRef(0),S=b.useRef(),{userSelectionActive:k,elementsSelectable:j,dragging:N}=hr(W7e,ks),T=()=>{x.setState({userSelectionActive:!1,userSelectionRect:null}),y.current=0,w.current=0},E=te=>{i?.(te),x.getState().resetSelectedElements(),x.setState({nodesSelectionActive:!1})},_=te=>{if(Array.isArray(n)&&n?.includes(2)){te.preventDefault();return}a?.(te)},A=l?te=>l(te):void 0,L=te=>{const{resetSelectedElements:z,domNode:Q}=x.getState();if(S.current=Q?.getBoundingClientRect(),!j||!t||te.button!==0||te.target!==g.current||!S.current)return;const{x:F,y:Y}=Hc(te,S.current);z(),x.setState({userSelectionRect:{width:0,height:0,startX:F,startY:Y,x:F,y:Y}}),r?.(te)},P=te=>{const{userSelectionRect:z,nodeInternals:Q,edges:F,transform:Y,onNodesChange:J,onEdgesChange:X,nodeOrigin:R,getNodes:ie}=x.getState();if(!t||!S.current||!z)return;x.setState({userSelectionActive:!0,nodesSelectionActive:!1});const G=Hc(te,S.current),I=z.startX??0,V=z.startY??0,ee={...z,x:G.xoe.id),re=W.map(oe=>oe.id);if(y.current!==re.length){y.current=re.length;const oe=Eh(ne,re);oe.length&&J?.(oe)}if(w.current!==se.length){w.current=se.length;const oe=Eh(F,se);oe.length&&X?.(oe)}x.setState({userSelectionRect:ee})},B=te=>{if(te.button!==0)return;const{userSelectionRect:z}=x.getState();!k&&z&&te.target===g.current&&E?.(te),x.setState({nodesSelectionActive:y.current>0}),T(),s?.(te)},$=te=>{k&&(x.setState({nodesSelectionActive:y.current>0}),s?.(te)),T()},U=j&&(t||k);return ae.createElement("div",{className:Bs(["react-flow__pane",{dragging:N,selection:t}]),onClick:U?void 0:d5(E,g),onContextMenu:d5(_,g),onWheel:d5(A,g),onMouseEnter:U?void 0:c,onMouseDown:U?L:void 0,onMouseMove:U?P:d,onMouseUp:U?B:void 0,onMouseLeave:U?$:h,ref:g,style:i7},m,ae.createElement(V7e,null))});ZW.displayName="Pane";function JW(t,e){const n=t.parentNode||t.parentId;if(!n)return!1;const r=e.get(n);return r?r.selected?!0:JW(r,e):!1}function SD(t,e,n){let r=t;do{if(r?.matches(e))return!0;if(r===n.current)return!1;r=r.parentElement}while(r);return!1}function G7e(t,e,n,r){return Array.from(t.values()).filter(s=>(s.selected||s.id===r)&&(!s.parentNode||s.parentId||!JW(s,t))&&(s.draggable||e&&typeof s.draggable>"u")).map(s=>({id:s.id,position:s.position||{x:0,y:0},positionAbsolute:s.positionAbsolute||{x:0,y:0},distance:{x:n.x-(s.positionAbsolute?.x??0),y:n.y-(s.positionAbsolute?.y??0)},delta:{x:0,y:0},extent:s.extent,parentNode:s.parentNode||s.parentId,parentId:s.parentNode||s.parentId,width:s.width,height:s.height,expandParent:s.expandParent}))}function X7e(t,e){return!e||e==="parent"?e:[e[0],[e[1][0]-(t.width||0),e[1][1]-(t.height||0)]]}function eG(t,e,n,r,s=[0,0],i){const a=X7e(t,t.extent||r);let l=a;const c=t.parentNode||t.parentId;if(t.extent==="parent"&&!t.expandParent)if(c&&t.width&&t.height){const m=n.get(c),{x:g,y:x}=td(m,s).positionAbsolute;l=m&&ka(g)&&ka(x)&&ka(m.width)&&ka(m.height)?[[g+t.width*s[0],x+t.height*s[1]],[g+m.width-t.width+t.width*s[0],x+m.height-t.height+t.height*s[1]]]:l}else i?.("005",Gl.error005()),l=a;else if(t.extent&&c&&t.extent!=="parent"){const m=n.get(c),{x:g,y:x}=td(m,s).positionAbsolute;l=[[t.extent[0][0]+g,t.extent[0][1]+x],[t.extent[1][0]+g,t.extent[1][1]+x]]}let d={x:0,y:0};if(c){const m=n.get(c);d=td(m,s).positionAbsolute}const h=l&&l!=="parent"?KN(e,l):e;return{position:{x:h.x-d.x,y:h.y-d.y},positionAbsolute:h}}function h5({nodeId:t,dragItems:e,nodeInternals:n}){const r=e.map(s=>({...n.get(s.id),position:s.position,positionAbsolute:s.positionAbsolute}));return[t?r.find(s=>s.id===t):r[0],r]}const kD=(t,e,n,r)=>{const s=e.querySelectorAll(t);if(!s||!s.length)return null;const i=Array.from(s),a=e.getBoundingClientRect(),l={x:a.width*r[0],y:a.height*r[1]};return i.map(c=>{const d=c.getBoundingClientRect();return{id:c.getAttribute("data-handleid"),position:c.getAttribute("data-handlepos"),x:(d.left-a.left-l.x)/n,y:(d.top-a.top-l.y)/n,...YN(c)}})};function s0(t,e,n){return n===void 0?n:r=>{const s=e().nodeInternals.get(t);s&&n(r,{...s})}}function aj({id:t,store:e,unselect:n=!1,nodeRef:r}){const{addSelectedNodes:s,unselectNodesAndEdges:i,multiSelectionActive:a,nodeInternals:l,onError:c}=e.getState(),d=l.get(t);if(!d){c?.("012",Gl.error012(t));return}e.setState({nodesSelectionActive:!1}),d.selected?(n||d.selected&&a)&&(i({nodes:[d],edges:[]}),requestAnimationFrame(()=>r?.current?.blur())):s([t])}function Y7e(){const t=ps();return b.useCallback(({sourceEvent:n})=>{const{transform:r,snapGrid:s,snapToGrid:i}=t.getState(),a=n.touches?n.touches[0].clientX:n.clientX,l=n.touches?n.touches[0].clientY:n.clientY,c={x:(a-r[0])/r[2],y:(l-r[1])/r[2]};return{xSnapped:i?s[0]*Math.round(c.x/s[0]):c.x,ySnapped:i?s[1]*Math.round(c.y/s[1]):c.y,...c}},[])}function f5(t){return(e,n,r)=>t?.(e,r)}function tG({nodeRef:t,disabled:e=!1,noDragClassName:n,handleSelector:r,nodeId:s,isSelectable:i,selectNodesOnDrag:a}){const l=ps(),[c,d]=b.useState(!1),h=b.useRef([]),m=b.useRef({x:null,y:null}),g=b.useRef(0),x=b.useRef(null),y=b.useRef({x:0,y:0}),w=b.useRef(null),S=b.useRef(!1),k=b.useRef(!1),j=b.useRef(!1),N=Y7e();return b.useEffect(()=>{if(t?.current){const T=ma(t.current),E=({x:L,y:P})=>{const{nodeInternals:B,onNodeDrag:$,onSelectionDrag:U,updateNodePositions:te,nodeExtent:z,snapGrid:Q,snapToGrid:F,nodeOrigin:Y,onError:J}=l.getState();m.current={x:L,y:P};let X=!1,R={x:0,y:0,x2:0,y2:0};if(h.current.length>1&&z){const G=tw(h.current,Y);R=wp(G)}if(h.current=h.current.map(G=>{const I={x:L-G.distance.x,y:P-G.distance.y};F&&(I.x=Q[0]*Math.round(I.x/Q[0]),I.y=Q[1]*Math.round(I.y/Q[1]));const V=[[z[0][0],z[0][1]],[z[1][0],z[1][1]]];h.current.length>1&&z&&!G.extent&&(V[0][0]=G.positionAbsolute.x-R.x+z[0][0],V[1][0]=G.positionAbsolute.x+(G.width??0)-R.x2+z[1][0],V[0][1]=G.positionAbsolute.y-R.y+z[0][1],V[1][1]=G.positionAbsolute.y+(G.height??0)-R.y2+z[1][1]);const ee=eG(G,I,B,V,Y,J);return X=X||G.position.x!==ee.position.x||G.position.y!==ee.position.y,G.position=ee.position,G.positionAbsolute=ee.positionAbsolute,G}),!X)return;te(h.current,!0,!0),d(!0);const ie=s?$:f5(U);if(ie&&w.current){const[G,I]=h5({nodeId:s,dragItems:h.current,nodeInternals:B});ie(w.current,G,I)}},_=()=>{if(!x.current)return;const[L,P]=wW(y.current,x.current);if(L!==0||P!==0){const{transform:B,panBy:$}=l.getState();m.current.x=(m.current.x??0)-L/B[2],m.current.y=(m.current.y??0)-P/B[2],$({x:L,y:P})&&E(m.current)}g.current=requestAnimationFrame(_)},A=L=>{const{nodeInternals:P,multiSelectionActive:B,nodesDraggable:$,unselectNodesAndEdges:U,onNodeDragStart:te,onSelectionDragStart:z}=l.getState();k.current=!0;const Q=s?te:f5(z);(!a||!i)&&!B&&s&&(P.get(s)?.selected||U()),s&&i&&a&&aj({id:s,store:l,nodeRef:t});const F=N(L);if(m.current=F,h.current=G7e(P,$,F,s),Q&&h.current){const[Y,J]=h5({nodeId:s,dragItems:h.current,nodeInternals:P});Q(L.sourceEvent,Y,J)}};if(e)T.on(".drag",null);else{const L=R6e().on("start",P=>{const{domNode:B,nodeDragThreshold:$}=l.getState();$===0&&A(P),j.current=!1;const U=N(P);m.current=U,x.current=B?.getBoundingClientRect()||null,y.current=Hc(P.sourceEvent,x.current)}).on("drag",P=>{const B=N(P),{autoPanOnNodeDrag:$,nodeDragThreshold:U}=l.getState();if(P.sourceEvent.type==="touchmove"&&P.sourceEvent.touches.length>1&&(j.current=!0),!j.current){if(!S.current&&k.current&&$&&(S.current=!0,_()),!k.current){const te=B.xSnapped-(m?.current?.x??0),z=B.ySnapped-(m?.current?.y??0);Math.sqrt(te*te+z*z)>U&&A(P)}(m.current.x!==B.xSnapped||m.current.y!==B.ySnapped)&&h.current&&k.current&&(w.current=P.sourceEvent,y.current=Hc(P.sourceEvent,x.current),E(B))}}).on("end",P=>{if(!(!k.current||j.current)&&(d(!1),S.current=!1,k.current=!1,cancelAnimationFrame(g.current),h.current)){const{updateNodePositions:B,nodeInternals:$,onNodeDragStop:U,onSelectionDragStop:te}=l.getState(),z=s?U:f5(te);if(B(h.current,!1,!1),z){const[Q,F]=h5({nodeId:s,dragItems:h.current,nodeInternals:$});z(P.sourceEvent,Q,F)}}}).filter(P=>{const B=P.target;return!P.button&&(!n||!SD(B,`.${n}`,t))&&(!r||SD(B,r,t))});return T.call(L),()=>{T.on(".drag",null)}}}},[t,e,n,r,i,l,s,a,N]),c}function nG(){const t=ps();return b.useCallback(n=>{const{nodeInternals:r,nodeExtent:s,updateNodePositions:i,getNodes:a,snapToGrid:l,snapGrid:c,onError:d,nodesDraggable:h}=t.getState(),m=a().filter(j=>j.selected&&(j.draggable||h&&typeof j.draggable>"u")),g=l?c[0]:5,x=l?c[1]:5,y=n.isShiftPressed?4:1,w=n.x*g*y,S=n.y*x*y,k=m.map(j=>{if(j.positionAbsolute){const N={x:j.positionAbsolute.x+w,y:j.positionAbsolute.y+S};l&&(N.x=c[0]*Math.round(N.x/c[0]),N.y=c[1]*Math.round(N.y/c[1]));const{positionAbsolute:T,position:E}=eG(j,N,r,s,void 0,d);j.position=E,j.positionAbsolute=T}return j});i(k,!0,!1)},[])}const Qh={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}};var i0=t=>{const e=({id:n,type:r,data:s,xPos:i,yPos:a,xPosOrigin:l,yPosOrigin:c,selected:d,onClick:h,onMouseEnter:m,onMouseMove:g,onMouseLeave:x,onContextMenu:y,onDoubleClick:w,style:S,className:k,isDraggable:j,isSelectable:N,isConnectable:T,isFocusable:E,selectNodesOnDrag:_,sourcePosition:A,targetPosition:L,hidden:P,resizeObserver:B,dragHandle:$,zIndex:U,isParent:te,noDragClassName:z,noPanClassName:Q,initialized:F,disableKeyboardA11y:Y,ariaLabel:J,rfId:X,hasHandleBounds:R})=>{const ie=ps(),G=b.useRef(null),I=b.useRef(null),V=b.useRef(A),ee=b.useRef(L),ne=b.useRef(r),W=N||j||h||m||g||x,se=nG(),re=s0(n,ie.getState,m),oe=s0(n,ie.getState,g),Te=s0(n,ie.getState,x),We=s0(n,ie.getState,y),Ye=s0(n,ie.getState,w),Je=Ue=>{const{nodeDragThreshold:He}=ie.getState();if(N&&(!_||!j||He>0)&&aj({id:n,store:ie,nodeRef:G}),h){const Ot=ie.getState().nodeInternals.get(n);Ot&&h(Ue,{...Ot})}},Oe=Ue=>{if(!tj(Ue)&&!Y)if(jW.includes(Ue.key)&&N){const He=Ue.key==="Escape";aj({id:n,store:ie,unselect:He,nodeRef:G})}else j&&d&&Object.prototype.hasOwnProperty.call(Qh,Ue.key)&&(ie.setState({ariaLiveMessage:`Moved selected node ${Ue.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~i}, y: ${~~a}`}),se({x:Qh[Ue.key].x,y:Qh[Ue.key].y,isShiftPressed:Ue.shiftKey}))};b.useEffect(()=>()=>{I.current&&(B?.unobserve(I.current),I.current=null)},[]),b.useEffect(()=>{if(G.current&&!P){const Ue=G.current;(!F||!R||I.current!==Ue)&&(I.current&&B?.unobserve(I.current),B?.observe(Ue),I.current=Ue)}},[P,F,R]),b.useEffect(()=>{const Ue=ne.current!==r,He=V.current!==A,Ot=ee.current!==L;G.current&&(Ue||He||Ot)&&(Ue&&(ne.current=r),He&&(V.current=A),Ot&&(ee.current=L),ie.getState().updateNodeDimensions([{id:n,nodeElement:G.current,forceUpdate:!0}]))},[n,r,A,L]);const Ve=tG({nodeRef:G,disabled:P||!j,noDragClassName:z,handleSelector:$,nodeId:n,isSelectable:N,selectNodesOnDrag:_});return P?null:ae.createElement("div",{className:Bs(["react-flow__node",`react-flow__node-${r}`,{[Q]:j},k,{selected:d,selectable:N,parent:te,dragging:Ve}]),ref:G,style:{zIndex:U,transform:`translate(${l}px,${c}px)`,pointerEvents:W?"all":"none",visibility:F?"visible":"hidden",...S},"data-id":n,"data-testid":`rf__node-${n}`,onMouseEnter:re,onMouseMove:oe,onMouseLeave:Te,onContextMenu:We,onClick:Je,onDoubleClick:Ye,onKeyDown:E?Oe:void 0,tabIndex:E?0:void 0,role:E?"button":void 0,"aria-describedby":Y?void 0:`${VW}-${X}`,"aria-label":J},ae.createElement(u7e,{value:n},ae.createElement(t,{id:n,data:s,type:r,xPos:i,yPos:a,selected:d,isConnectable:T,sourcePosition:A,targetPosition:L,dragging:Ve,dragHandle:$,zIndex:U})))};return e.displayName="NodeWrapper",b.memo(e)};const K7e=t=>{const e=t.getNodes().filter(n=>n.selected);return{...tw(e,t.nodeOrigin),transformString:`translate(${t.transform[0]}px,${t.transform[1]}px) scale(${t.transform[2]})`,userSelectionActive:t.userSelectionActive}};function Z7e({onSelectionContextMenu:t,noPanClassName:e,disableKeyboardA11y:n}){const r=ps(),{width:s,height:i,x:a,y:l,transformString:c,userSelectionActive:d}=hr(K7e,ks),h=nG(),m=b.useRef(null);if(b.useEffect(()=>{n||m.current?.focus({preventScroll:!0})},[n]),tG({nodeRef:m}),d||!s||!i)return null;const g=t?y=>{const w=r.getState().getNodes().filter(S=>S.selected);t(y,w)}:void 0,x=y=>{Object.prototype.hasOwnProperty.call(Qh,y.key)&&h({x:Qh[y.key].x,y:Qh[y.key].y,isShiftPressed:y.shiftKey})};return ae.createElement("div",{className:Bs(["react-flow__nodesselection","react-flow__container",e]),style:{transform:c}},ae.createElement("div",{ref:m,className:"react-flow__nodesselection-rect",onContextMenu:g,tabIndex:n?void 0:-1,onKeyDown:n?void 0:x,style:{width:s,height:i,top:l,left:a}}))}var J7e=b.memo(Z7e);const eCe=t=>t.nodesSelectionActive,rG=({children:t,onPaneClick:e,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:s,onPaneContextMenu:i,onPaneScroll:a,deleteKeyCode:l,onMove:c,onMoveStart:d,onMoveEnd:h,selectionKeyCode:m,selectionOnDrag:g,selectionMode:x,onSelectionStart:y,onSelectionEnd:w,multiSelectionKeyCode:S,panActivationKeyCode:k,zoomActivationKeyCode:j,elementsSelectable:N,zoomOnScroll:T,zoomOnPinch:E,panOnScroll:_,panOnScrollSpeed:A,panOnScrollMode:L,zoomOnDoubleClick:P,panOnDrag:B,defaultViewport:$,translateExtent:U,minZoom:te,maxZoom:z,preventScrolling:Q,onSelectionContextMenu:F,noWheelClassName:Y,noPanClassName:J,disableKeyboardA11y:X})=>{const R=hr(eCe),ie=kp(m),G=kp(k),I=G||B,V=G||_,ee=ie||g&&I!==!0;return B7e({deleteKeyCode:l,multiSelectionKeyCode:S}),ae.createElement(H7e,{onMove:c,onMoveStart:d,onMoveEnd:h,onPaneContextMenu:i,elementsSelectable:N,zoomOnScroll:T,zoomOnPinch:E,panOnScroll:V,panOnScrollSpeed:A,panOnScrollMode:L,zoomOnDoubleClick:P,panOnDrag:!ie&&I,defaultViewport:$,translateExtent:U,minZoom:te,maxZoom:z,zoomActivationKeyCode:j,preventScrolling:Q,noWheelClassName:Y,noPanClassName:J},ae.createElement(ZW,{onSelectionStart:y,onSelectionEnd:w,onPaneClick:e,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:s,onPaneContextMenu:i,onPaneScroll:a,panOnDrag:I,isSelecting:!!ee,selectionMode:x},t,R&&ae.createElement(J7e,{onSelectionContextMenu:F,noPanClassName:J,disableKeyboardA11y:X})))};rG.displayName="FlowRenderer";var tCe=b.memo(rG);function nCe(t){return hr(b.useCallback(n=>t?MW(n.nodeInternals,{x:0,y:0,width:n.width,height:n.height},n.transform,!0):n.getNodes(),[t]))}function rCe(t){const e={input:i0(t.input||qW),default:i0(t.default||ij),output:i0(t.output||HW),group:i0(t.group||r7)},n={},r=Object.keys(t).filter(s=>!["input","default","output","group"].includes(s)).reduce((s,i)=>(s[i]=i0(t[i]||ij),s),n);return{...e,...r}}const sCe=({x:t,y:e,width:n,height:r,origin:s})=>!n||!r?{x:t,y:e}:s[0]<0||s[1]<0||s[0]>1||s[1]>1?{x:t,y:e}:{x:t-n*s[0],y:e-r*s[1]},iCe=t=>({nodesDraggable:t.nodesDraggable,nodesConnectable:t.nodesConnectable,nodesFocusable:t.nodesFocusable,elementsSelectable:t.elementsSelectable,updateNodeDimensions:t.updateNodeDimensions,onError:t.onError}),sG=t=>{const{nodesDraggable:e,nodesConnectable:n,nodesFocusable:r,elementsSelectable:s,updateNodeDimensions:i,onError:a}=hr(iCe,ks),l=nCe(t.onlyRenderVisibleElements),c=b.useRef(),d=b.useMemo(()=>{if(typeof ResizeObserver>"u")return null;const h=new ResizeObserver(m=>{const g=m.map(x=>({id:x.target.getAttribute("data-id"),nodeElement:x.target,forceUpdate:!0}));i(g)});return c.current=h,h},[]);return b.useEffect(()=>()=>{c?.current?.disconnect()},[]),ae.createElement("div",{className:"react-flow__nodes",style:i7},l.map(h=>{let m=h.type||"default";t.nodeTypes[m]||(a?.("003",Gl.error003(m)),m="default");const g=t.nodeTypes[m]||t.nodeTypes.default,x=!!(h.draggable||e&&typeof h.draggable>"u"),y=!!(h.selectable||s&&typeof h.selectable>"u"),w=!!(h.connectable||n&&typeof h.connectable>"u"),S=!!(h.focusable||r&&typeof h.focusable>"u"),k=t.nodeExtent?KN(h.positionAbsolute,t.nodeExtent):h.positionAbsolute,j=k?.x??0,N=k?.y??0,T=sCe({x:j,y:N,width:h.width??0,height:h.height??0,origin:t.nodeOrigin});return ae.createElement(g,{key:h.id,id:h.id,className:h.className,style:h.style,type:m,data:h.data,sourcePosition:h.sourcePosition||wt.Bottom,targetPosition:h.targetPosition||wt.Top,hidden:h.hidden,xPos:j,yPos:N,xPosOrigin:T.x,yPosOrigin:T.y,selectNodesOnDrag:t.selectNodesOnDrag,onClick:t.onNodeClick,onMouseEnter:t.onNodeMouseEnter,onMouseMove:t.onNodeMouseMove,onMouseLeave:t.onNodeMouseLeave,onContextMenu:t.onNodeContextMenu,onDoubleClick:t.onNodeDoubleClick,selected:!!h.selected,isDraggable:x,isSelectable:y,isConnectable:w,isFocusable:S,resizeObserver:d,dragHandle:h.dragHandle,zIndex:h[Lr]?.z??0,isParent:!!h[Lr]?.isParent,noDragClassName:t.noDragClassName,noPanClassName:t.noPanClassName,initialized:!!h.width&&!!h.height,rfId:t.rfId,disableKeyboardA11y:t.disableKeyboardA11y,ariaLabel:h.ariaLabel,hasHandleBounds:!!h[Lr]?.handleBounds})}))};sG.displayName="NodeRenderer";var aCe=b.memo(sG);const oCe=(t,e,n)=>n===wt.Left?t-e:n===wt.Right?t+e:t,lCe=(t,e,n)=>n===wt.Top?t-e:n===wt.Bottom?t+e:t,OD="react-flow__edgeupdater",jD=({position:t,centerX:e,centerY:n,radius:r=10,onMouseDown:s,onMouseEnter:i,onMouseOut:a,type:l})=>ae.createElement("circle",{onMouseDown:s,onMouseEnter:i,onMouseOut:a,className:Bs([OD,`${OD}-${l}`]),cx:oCe(e,r,t),cy:lCe(n,r,t),r,stroke:"transparent",fill:"transparent"}),cCe=()=>!0;var fh=t=>{const e=({id:n,className:r,type:s,data:i,onClick:a,onEdgeDoubleClick:l,selected:c,animated:d,label:h,labelStyle:m,labelShowBg:g,labelBgStyle:x,labelBgPadding:y,labelBgBorderRadius:w,style:S,source:k,target:j,sourceX:N,sourceY:T,targetX:E,targetY:_,sourcePosition:A,targetPosition:L,elementsSelectable:P,hidden:B,sourceHandleId:$,targetHandleId:U,onContextMenu:te,onMouseEnter:z,onMouseMove:Q,onMouseLeave:F,reconnectRadius:Y,onReconnect:J,onReconnectStart:X,onReconnectEnd:R,markerEnd:ie,markerStart:G,rfId:I,ariaLabel:V,isFocusable:ee,isReconnectable:ne,pathOptions:W,interactionWidth:se,disableKeyboardA11y:re})=>{const oe=b.useRef(null),[Te,We]=b.useState(!1),[Ye,Je]=b.useState(!1),Oe=ps(),Ve=b.useMemo(()=>`url('#${rj(G,I)}')`,[G,I]),Ue=b.useMemo(()=>`url('#${rj(ie,I)}')`,[ie,I]);if(B)return null;const He=Mt=>{const{edges:zn,addSelectedEdges:Fe,unselectNodesAndEdges:rt,multiSelectionActive:tn}=Oe.getState(),Rt=zn.find(ke=>ke.id===n);Rt&&(P&&(Oe.setState({nodesSelectionActive:!1}),Rt.selected&&tn?(rt({nodes:[],edges:[Rt]}),oe.current?.blur()):Fe([n])),a&&a(Mt,Rt))},Ot=r0(n,Oe.getState,l),xt=r0(n,Oe.getState,te),kn=r0(n,Oe.getState,z),It=r0(n,Oe.getState,Q),Yt=r0(n,Oe.getState,F),_t=(Mt,zn)=>{if(Mt.button!==0)return;const{edges:Fe,isValidConnection:rt}=Oe.getState(),tn=zn?j:k,Rt=(zn?U:$)||null,ke=zn?"target":"source",Pe=rt||cCe,it=zn,ot=Fe.find(pt=>pt.id===n);Je(!0),X?.(Mt,ot,ke);const nn=pt=>{Je(!1),R?.(pt,ot,ke)};IW({event:Mt,handleId:Rt,nodeId:tn,onConnect:pt=>J?.(ot,pt),isTarget:it,getState:Oe.getState,setState:Oe.setState,isValidConnection:Pe,edgeUpdaterType:ke,onReconnectEnd:nn})},mt=Mt=>_t(Mt,!0),Ne=Mt=>_t(Mt,!1),Ie=()=>We(!0),st=()=>We(!1),yt=!P&&!a,Pt=Mt=>{if(!re&&jW.includes(Mt.key)&&P){const{unselectNodesAndEdges:zn,addSelectedEdges:Fe,edges:rt}=Oe.getState();Mt.key==="Escape"?(oe.current?.blur(),zn({edges:[rt.find(Rt=>Rt.id===n)]})):Fe([n])}};return ae.createElement("g",{className:Bs(["react-flow__edge",`react-flow__edge-${s}`,r,{selected:c,animated:d,inactive:yt,updating:Te}]),onClick:He,onDoubleClick:Ot,onContextMenu:xt,onMouseEnter:kn,onMouseMove:It,onMouseLeave:Yt,onKeyDown:ee?Pt:void 0,tabIndex:ee?0:void 0,role:ee?"button":"img","data-testid":`rf__edge-${n}`,"aria-label":V===null?void 0:V||`Edge from ${k} to ${j}`,"aria-describedby":ee?`${UW}-${I}`:void 0,ref:oe},!Ye&&ae.createElement(t,{id:n,source:k,target:j,selected:c,animated:d,label:h,labelStyle:m,labelShowBg:g,labelBgStyle:x,labelBgPadding:y,labelBgBorderRadius:w,data:i,style:S,sourceX:N,sourceY:T,targetX:E,targetY:_,sourcePosition:A,targetPosition:L,sourceHandleId:$,targetHandleId:U,markerStart:Ve,markerEnd:Ue,pathOptions:W,interactionWidth:se}),ne&&ae.createElement(ae.Fragment,null,(ne==="source"||ne===!0)&&ae.createElement(jD,{position:A,centerX:N,centerY:T,radius:Y,onMouseDown:mt,onMouseEnter:Ie,onMouseOut:st,type:"source"}),(ne==="target"||ne===!0)&&ae.createElement(jD,{position:L,centerX:E,centerY:_,radius:Y,onMouseDown:Ne,onMouseEnter:Ie,onMouseOut:st,type:"target"})))};return e.displayName="EdgeWrapper",b.memo(e)};function uCe(t){const e={default:fh(t.default||Ry),straight:fh(t.bezier||e7),step:fh(t.step||JN),smoothstep:fh(t.step||ew),simplebezier:fh(t.simplebezier||ZN)},n={},r=Object.keys(t).filter(s=>!["default","bezier"].includes(s)).reduce((s,i)=>(s[i]=fh(t[i]||Ry),s),n);return{...e,...r}}function ND(t,e,n=null){const r=(n?.x||0)+e.x,s=(n?.y||0)+e.y,i=n?.width||e.width,a=n?.height||e.height;switch(t){case wt.Top:return{x:r+i/2,y:s};case wt.Right:return{x:r+i,y:s+a/2};case wt.Bottom:return{x:r+i/2,y:s+a};case wt.Left:return{x:r,y:s+a/2}}}function CD(t,e){return t?t.length===1||!e?t[0]:e&&t.find(n=>n.id===e)||null:null}const dCe=(t,e,n,r,s,i)=>{const a=ND(n,t,e),l=ND(i,r,s);return{sourceX:a.x,sourceY:a.y,targetX:l.x,targetY:l.y}};function hCe({sourcePos:t,targetPos:e,sourceWidth:n,sourceHeight:r,targetWidth:s,targetHeight:i,width:a,height:l,transform:c}){const d={x:Math.min(t.x,e.x),y:Math.min(t.y,e.y),x2:Math.max(t.x+n,e.x+s),y2:Math.max(t.y+r,e.y+i)};d.x===d.x2&&(d.x2+=1),d.y===d.y2&&(d.y2+=1);const h=wp({x:(0-c[0])/c[2],y:(0-c[1])/c[2],width:a/c[2],height:l/c[2]}),m=Math.max(0,Math.min(h.x2,d.x2)-Math.max(h.x,d.x)),g=Math.max(0,Math.min(h.y2,d.y2)-Math.max(h.y,d.y));return Math.ceil(m*g)>0}function TD(t){const e=t?.[Lr]?.handleBounds||null,n=e&&t?.width&&t?.height&&typeof t?.positionAbsolute?.x<"u"&&typeof t?.positionAbsolute?.y<"u";return[{x:t?.positionAbsolute?.x||0,y:t?.positionAbsolute?.y||0,width:t?.width||0,height:t?.height||0},e,!!n]}const fCe=[{level:0,isMaxLevel:!0,edges:[]}];function mCe(t,e,n=!1){let r=-1;const s=t.reduce((a,l)=>{const c=ka(l.zIndex);let d=c?l.zIndex:0;if(n){const h=e.get(l.target),m=e.get(l.source),g=l.selected||h?.selected||m?.selected,x=Math.max(m?.[Lr]?.z||0,h?.[Lr]?.z||0,1e3);d=(c?l.zIndex:0)+(g?x:0)}return a[d]?a[d].push(l):a[d]=[l],r=d>r?d:r,a},{}),i=Object.entries(s).map(([a,l])=>{const c=+a;return{edges:l,level:c,isMaxLevel:c===r}});return i.length===0?fCe:i}function pCe(t,e,n){const r=hr(b.useCallback(s=>t?s.edges.filter(i=>{const a=e.get(i.source),l=e.get(i.target);return a?.width&&a?.height&&l?.width&&l?.height&&hCe({sourcePos:a.positionAbsolute||{x:0,y:0},targetPos:l.positionAbsolute||{x:0,y:0},sourceWidth:a.width,sourceHeight:a.height,targetWidth:l.width,targetHeight:l.height,width:s.width,height:s.height,transform:s.transform})}):s.edges,[t,e]));return mCe(r,e,n)}const gCe=({color:t="none",strokeWidth:e=1})=>ae.createElement("polyline",{style:{stroke:t,strokeWidth:e},strokeLinecap:"round",strokeLinejoin:"round",fill:"none",points:"-5,-4 0,0 -5,4"}),xCe=({color:t="none",strokeWidth:e=1})=>ae.createElement("polyline",{style:{stroke:t,fill:t,strokeWidth:e},strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"}),ED={[My.Arrow]:gCe,[My.ArrowClosed]:xCe};function vCe(t){const e=ps();return b.useMemo(()=>Object.prototype.hasOwnProperty.call(ED,t)?ED[t]:(e.getState().onError?.("009",Gl.error009(t)),null),[t])}const yCe=({id:t,type:e,color:n,width:r=12.5,height:s=12.5,markerUnits:i="strokeWidth",strokeWidth:a,orient:l="auto-start-reverse"})=>{const c=vCe(e);return c?ae.createElement("marker",{className:"react-flow__arrowhead",id:t,markerWidth:`${r}`,markerHeight:`${s}`,viewBox:"-10 -10 20 20",markerUnits:i,orient:l,refX:"0",refY:"0"},ae.createElement(c,{color:n,strokeWidth:a})):null},bCe=({defaultColor:t,rfId:e})=>n=>{const r=[];return n.edges.reduce((s,i)=>([i.markerStart,i.markerEnd].forEach(a=>{if(a&&typeof a=="object"){const l=rj(a,e);r.includes(l)||(s.push({id:l,color:a.color||t,...a}),r.push(l))}}),s),[]).sort((s,i)=>s.id.localeCompare(i.id))},iG=({defaultColor:t,rfId:e})=>{const n=hr(b.useCallback(bCe({defaultColor:t,rfId:e}),[t,e]),(r,s)=>!(r.length!==s.length||r.some((i,a)=>i.id!==s[a].id)));return ae.createElement("defs",null,n.map(r=>ae.createElement(yCe,{id:r.id,key:r.id,type:r.type,color:r.color,width:r.width,height:r.height,markerUnits:r.markerUnits,strokeWidth:r.strokeWidth,orient:r.orient})))};iG.displayName="MarkerDefinitions";var wCe=b.memo(iG);const SCe=t=>({nodesConnectable:t.nodesConnectable,edgesFocusable:t.edgesFocusable,edgesUpdatable:t.edgesUpdatable,elementsSelectable:t.elementsSelectable,width:t.width,height:t.height,connectionMode:t.connectionMode,nodeInternals:t.nodeInternals,onError:t.onError}),aG=({defaultMarkerColor:t,onlyRenderVisibleElements:e,elevateEdgesOnSelect:n,rfId:r,edgeTypes:s,noPanClassName:i,onEdgeContextMenu:a,onEdgeMouseEnter:l,onEdgeMouseMove:c,onEdgeMouseLeave:d,onEdgeClick:h,onEdgeDoubleClick:m,onReconnect:g,onReconnectStart:x,onReconnectEnd:y,reconnectRadius:w,children:S,disableKeyboardA11y:k})=>{const{edgesFocusable:j,edgesUpdatable:N,elementsSelectable:T,width:E,height:_,connectionMode:A,nodeInternals:L,onError:P}=hr(SCe,ks),B=pCe(e,L,n);return E?ae.createElement(ae.Fragment,null,B.map(({level:$,edges:U,isMaxLevel:te})=>ae.createElement("svg",{key:$,style:{zIndex:$},width:E,height:_,className:"react-flow__edges react-flow__container"},te&&ae.createElement(wCe,{defaultColor:t,rfId:r}),ae.createElement("g",null,U.map(z=>{const[Q,F,Y]=TD(L.get(z.source)),[J,X,R]=TD(L.get(z.target));if(!Y||!R)return null;let ie=z.type||"default";s[ie]||(P?.("011",Gl.error011(ie)),ie="default");const G=s[ie]||s.default,I=A===pd.Strict?X.target:(X.target??[]).concat(X.source??[]),V=CD(F.source,z.sourceHandle),ee=CD(I,z.targetHandle),ne=V?.position||wt.Bottom,W=ee?.position||wt.Top,se=!!(z.focusable||j&&typeof z.focusable>"u"),re=z.reconnectable||z.updatable,oe=typeof g<"u"&&(re||N&&typeof re>"u");if(!V||!ee)return P?.("008",Gl.error008(V,z)),null;const{sourceX:Te,sourceY:We,targetX:Ye,targetY:Je}=dCe(Q,V,ne,J,ee,W);return ae.createElement(G,{key:z.id,id:z.id,className:Bs([z.className,i]),type:ie,data:z.data,selected:!!z.selected,animated:!!z.animated,hidden:!!z.hidden,label:z.label,labelStyle:z.labelStyle,labelShowBg:z.labelShowBg,labelBgStyle:z.labelBgStyle,labelBgPadding:z.labelBgPadding,labelBgBorderRadius:z.labelBgBorderRadius,style:z.style,source:z.source,target:z.target,sourceHandleId:z.sourceHandle,targetHandleId:z.targetHandle,markerEnd:z.markerEnd,markerStart:z.markerStart,sourceX:Te,sourceY:We,targetX:Ye,targetY:Je,sourcePosition:ne,targetPosition:W,elementsSelectable:T,onContextMenu:a,onMouseEnter:l,onMouseMove:c,onMouseLeave:d,onClick:h,onEdgeDoubleClick:m,onReconnect:g,onReconnectStart:x,onReconnectEnd:y,reconnectRadius:w,rfId:r,ariaLabel:z.ariaLabel,isFocusable:se,isReconnectable:oe,pathOptions:"pathOptions"in z?z.pathOptions:void 0,interactionWidth:z.interactionWidth,disableKeyboardA11y:k})})))),S):null};aG.displayName="EdgeRenderer";var kCe=b.memo(aG);const OCe=t=>`translate(${t.transform[0]}px,${t.transform[1]}px) scale(${t.transform[2]})`;function jCe({children:t}){const e=hr(OCe);return ae.createElement("div",{className:"react-flow__viewport react-flow__container",style:{transform:e}},t)}function NCe(t){const e=s7(),n=b.useRef(!1);b.useEffect(()=>{!n.current&&e.viewportInitialized&&t&&(setTimeout(()=>t(e),1),n.current=!0)},[t,e.viewportInitialized])}const CCe={[wt.Left]:wt.Right,[wt.Right]:wt.Left,[wt.Top]:wt.Bottom,[wt.Bottom]:wt.Top},oG=({nodeId:t,handleType:e,style:n,type:r=Lc.Bezier,CustomComponent:s,connectionStatus:i})=>{const{fromNode:a,handleId:l,toX:c,toY:d,connectionMode:h}=hr(b.useCallback(_=>({fromNode:_.nodeInternals.get(t),handleId:_.connectionHandleId,toX:(_.connectionPosition.x-_.transform[0])/_.transform[2],toY:(_.connectionPosition.y-_.transform[1])/_.transform[2],connectionMode:_.connectionMode}),[t]),ks),m=a?.[Lr]?.handleBounds;let g=m?.[e];if(h===pd.Loose&&(g=g||m?.[e==="source"?"target":"source"]),!a||!g)return null;const x=l?g.find(_=>_.id===l):g[0],y=x?x.x+x.width/2:(a.width??0)/2,w=x?x.y+x.height/2:a.height??0,S=(a.positionAbsolute?.x??0)+y,k=(a.positionAbsolute?.y??0)+w,j=x?.position,N=j?CCe[j]:null;if(!j||!N)return null;if(s)return ae.createElement(s,{connectionLineType:r,connectionLineStyle:n,fromNode:a,fromHandle:x,fromX:S,fromY:k,toX:c,toY:d,fromPosition:j,toPosition:N,connectionStatus:i});let T="";const E={sourceX:S,sourceY:k,sourcePosition:j,targetX:c,targetY:d,targetPosition:N};return r===Lc.Bezier?[T]=_W(E):r===Lc.Step?[T]=nj({...E,borderRadius:0}):r===Lc.SmoothStep?[T]=nj(E):r===Lc.SimpleBezier?[T]=EW(E):T=`M${S},${k} ${c},${d}`,ae.createElement("path",{d:T,fill:"none",className:"react-flow__connection-path",style:n})};oG.displayName="ConnectionLine";const TCe=t=>({nodeId:t.connectionNodeId,handleType:t.connectionHandleType,nodesConnectable:t.nodesConnectable,connectionStatus:t.connectionStatus,width:t.width,height:t.height});function ECe({containerStyle:t,style:e,type:n,component:r}){const{nodeId:s,handleType:i,nodesConnectable:a,width:l,height:c,connectionStatus:d}=hr(TCe,ks);return!(s&&i&&l&&a)?null:ae.createElement("svg",{style:t,width:l,height:c,className:"react-flow__edges react-flow__connectionline react-flow__container"},ae.createElement("g",{className:Bs(["react-flow__connection",d])},ae.createElement(oG,{nodeId:s,handleType:i,style:e,type:n,CustomComponent:r,connectionStatus:d})))}function _D(t,e){return b.useRef(null),ps(),b.useMemo(()=>e(t),[t])}const lG=({nodeTypes:t,edgeTypes:e,onMove:n,onMoveStart:r,onMoveEnd:s,onInit:i,onNodeClick:a,onEdgeClick:l,onNodeDoubleClick:c,onEdgeDoubleClick:d,onNodeMouseEnter:h,onNodeMouseMove:m,onNodeMouseLeave:g,onNodeContextMenu:x,onSelectionContextMenu:y,onSelectionStart:w,onSelectionEnd:S,connectionLineType:k,connectionLineStyle:j,connectionLineComponent:N,connectionLineContainerStyle:T,selectionKeyCode:E,selectionOnDrag:_,selectionMode:A,multiSelectionKeyCode:L,panActivationKeyCode:P,zoomActivationKeyCode:B,deleteKeyCode:$,onlyRenderVisibleElements:U,elementsSelectable:te,selectNodesOnDrag:z,defaultViewport:Q,translateExtent:F,minZoom:Y,maxZoom:J,preventScrolling:X,defaultMarkerColor:R,zoomOnScroll:ie,zoomOnPinch:G,panOnScroll:I,panOnScrollSpeed:V,panOnScrollMode:ee,zoomOnDoubleClick:ne,panOnDrag:W,onPaneClick:se,onPaneMouseEnter:re,onPaneMouseMove:oe,onPaneMouseLeave:Te,onPaneScroll:We,onPaneContextMenu:Ye,onEdgeContextMenu:Je,onEdgeMouseEnter:Oe,onEdgeMouseMove:Ve,onEdgeMouseLeave:Ue,onReconnect:He,onReconnectStart:Ot,onReconnectEnd:xt,reconnectRadius:kn,noDragClassName:It,noWheelClassName:Yt,noPanClassName:_t,elevateEdgesOnSelect:mt,disableKeyboardA11y:Ne,nodeOrigin:Ie,nodeExtent:st,rfId:yt})=>{const Pt=_D(t,rCe),Mt=_D(e,uCe);return NCe(i),ae.createElement(tCe,{onPaneClick:se,onPaneMouseEnter:re,onPaneMouseMove:oe,onPaneMouseLeave:Te,onPaneContextMenu:Ye,onPaneScroll:We,deleteKeyCode:$,selectionKeyCode:E,selectionOnDrag:_,selectionMode:A,onSelectionStart:w,onSelectionEnd:S,multiSelectionKeyCode:L,panActivationKeyCode:P,zoomActivationKeyCode:B,elementsSelectable:te,onMove:n,onMoveStart:r,onMoveEnd:s,zoomOnScroll:ie,zoomOnPinch:G,zoomOnDoubleClick:ne,panOnScroll:I,panOnScrollSpeed:V,panOnScrollMode:ee,panOnDrag:W,defaultViewport:Q,translateExtent:F,minZoom:Y,maxZoom:J,onSelectionContextMenu:y,preventScrolling:X,noDragClassName:It,noWheelClassName:Yt,noPanClassName:_t,disableKeyboardA11y:Ne},ae.createElement(jCe,null,ae.createElement(kCe,{edgeTypes:Mt,onEdgeClick:l,onEdgeDoubleClick:d,onlyRenderVisibleElements:U,onEdgeContextMenu:Je,onEdgeMouseEnter:Oe,onEdgeMouseMove:Ve,onEdgeMouseLeave:Ue,onReconnect:He,onReconnectStart:Ot,onReconnectEnd:xt,reconnectRadius:kn,defaultMarkerColor:R,noPanClassName:_t,elevateEdgesOnSelect:!!mt,disableKeyboardA11y:Ne,rfId:yt},ae.createElement(ECe,{style:j,type:k,component:N,containerStyle:T})),ae.createElement("div",{className:"react-flow__edgelabel-renderer"}),ae.createElement(aCe,{nodeTypes:Pt,onNodeClick:a,onNodeDoubleClick:c,onNodeMouseEnter:h,onNodeMouseMove:m,onNodeMouseLeave:g,onNodeContextMenu:x,selectNodesOnDrag:z,onlyRenderVisibleElements:U,noPanClassName:_t,noDragClassName:It,disableKeyboardA11y:Ne,nodeOrigin:Ie,nodeExtent:st,rfId:yt})))};lG.displayName="GraphView";var _Ce=b.memo(lG);const oj=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],Ec={rfId:"1",width:0,height:0,transform:[0,0,1],nodeInternals:new Map,edges:[],onNodesChange:null,onEdgesChange:null,hasDefaultNodes:!1,hasDefaultEdges:!1,d3Zoom:null,d3Selection:null,d3ZoomHandler:void 0,minZoom:.5,maxZoom:2,translateExtent:oj,nodeExtent:oj,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionNodeId:null,connectionHandleId:null,connectionHandleType:"source",connectionPosition:{x:0,y:0},connectionStatus:null,connectionMode:pd.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:[0,0],nodeDragThreshold:0,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesUpdatable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,fitViewOnInit:!1,fitViewOnInitDone:!1,fitViewOnInitOptions:void 0,onSelectionChange:[],multiSelectionActive:!1,connectionStartHandle:null,connectionEndHandle:null,connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,connectionRadius:20,onError:s7e,isValidConnection:void 0},ACe=()=>VOe((t,e)=>({...Ec,setNodes:n=>{const{nodeInternals:r,nodeOrigin:s,elevateNodesOnSelect:i}=e();t({nodeInternals:u5(n,r,s,i)})},getNodes:()=>Array.from(e().nodeInternals.values()),setEdges:n=>{const{defaultEdgeOptions:r={}}=e();t({edges:n.map(s=>({...r,...s}))})},setDefaultNodesAndEdges:(n,r)=>{const s=typeof n<"u",i=typeof r<"u",a=s?u5(n,new Map,e().nodeOrigin,e().elevateNodesOnSelect):new Map;t({nodeInternals:a,edges:i?r:[],hasDefaultNodes:s,hasDefaultEdges:i})},updateNodeDimensions:n=>{const{onNodesChange:r,nodeInternals:s,fitViewOnInit:i,fitViewOnInitDone:a,fitViewOnInitOptions:l,domNode:c,nodeOrigin:d}=e(),h=c?.querySelector(".react-flow__viewport");if(!h)return;const m=window.getComputedStyle(h),{m22:g}=new window.DOMMatrixReadOnly(m.transform),x=n.reduce((w,S)=>{const k=s.get(S.id);if(k?.hidden)s.set(k.id,{...k,[Lr]:{...k[Lr],handleBounds:void 0}});else if(k){const j=YN(S.nodeElement);!!(j.width&&j.height&&(k.width!==j.width||k.height!==j.height||S.forceUpdate))&&(s.set(k.id,{...k,[Lr]:{...k[Lr],handleBounds:{source:kD(".source",S.nodeElement,g,d),target:kD(".target",S.nodeElement,g,d)}},...j}),w.push({id:k.id,type:"dimensions",dimensions:j}))}return w},[]);GW(s,d);const y=a||i&&!a&&XW(e,{initial:!0,...l});t({nodeInternals:new Map(s),fitViewOnInitDone:y}),x?.length>0&&r?.(x)},updateNodePositions:(n,r=!0,s=!1)=>{const{triggerNodeChanges:i}=e(),a=n.map(l=>{const c={id:l.id,type:"position",dragging:s};return r&&(c.positionAbsolute=l.positionAbsolute,c.position=l.position),c});i(a)},triggerNodeChanges:n=>{const{onNodesChange:r,nodeInternals:s,hasDefaultNodes:i,nodeOrigin:a,getNodes:l,elevateNodesOnSelect:c}=e();if(n?.length){if(i){const d=KW(n,l()),h=u5(d,s,a,c);t({nodeInternals:h})}r?.(n)}},addSelectedNodes:n=>{const{multiSelectionActive:r,edges:s,getNodes:i}=e();let a,l=null;r?a=n.map(c=>Pc(c,!0)):(a=Eh(i(),n),l=Eh(s,[])),Q1({changedNodes:a,changedEdges:l,get:e,set:t})},addSelectedEdges:n=>{const{multiSelectionActive:r,edges:s,getNodes:i}=e();let a,l=null;r?a=n.map(c=>Pc(c,!0)):(a=Eh(s,n),l=Eh(i(),[])),Q1({changedNodes:l,changedEdges:a,get:e,set:t})},unselectNodesAndEdges:({nodes:n,edges:r}={})=>{const{edges:s,getNodes:i}=e(),a=n||i(),l=r||s,c=a.map(h=>(h.selected=!1,Pc(h.id,!1))),d=l.map(h=>Pc(h.id,!1));Q1({changedNodes:c,changedEdges:d,get:e,set:t})},setMinZoom:n=>{const{d3Zoom:r,maxZoom:s}=e();r?.scaleExtent([n,s]),t({minZoom:n})},setMaxZoom:n=>{const{d3Zoom:r,minZoom:s}=e();r?.scaleExtent([s,n]),t({maxZoom:n})},setTranslateExtent:n=>{e().d3Zoom?.translateExtent(n),t({translateExtent:n})},resetSelectedElements:()=>{const{edges:n,getNodes:r}=e(),i=r().filter(l=>l.selected).map(l=>Pc(l.id,!1)),a=n.filter(l=>l.selected).map(l=>Pc(l.id,!1));Q1({changedNodes:i,changedEdges:a,get:e,set:t})},setNodeExtent:n=>{const{nodeInternals:r}=e();r.forEach(s=>{s.positionAbsolute=KN(s.position,n)}),t({nodeExtent:n,nodeInternals:new Map(r)})},panBy:n=>{const{transform:r,width:s,height:i,d3Zoom:a,d3Selection:l,translateExtent:c}=e();if(!a||!l||!n.x&&!n.y)return!1;const d=Fl.translate(r[0]+n.x,r[1]+n.y).scale(r[2]),h=[[0,0],[s,i]],m=a?.constrain()(d,h,c);return a.transform(l,m),r[0]!==m.x||r[1]!==m.y||r[2]!==m.k},cancelConnection:()=>t({connectionNodeId:Ec.connectionNodeId,connectionHandleId:Ec.connectionHandleId,connectionHandleType:Ec.connectionHandleType,connectionStatus:Ec.connectionStatus,connectionStartHandle:Ec.connectionStartHandle,connectionEndHandle:Ec.connectionEndHandle}),reset:()=>t({...Ec})}),Object.is),cG=({children:t})=>{const e=b.useRef(null);return e.current||(e.current=ACe()),ae.createElement(KNe,{value:e.current},t)};cG.displayName="ReactFlowProvider";const uG=({children:t})=>b.useContext(Zb)?ae.createElement(ae.Fragment,null,t):ae.createElement(cG,null,t);uG.displayName="ReactFlowWrapper";const MCe={input:qW,default:ij,output:HW,group:r7},RCe={default:Ry,straight:e7,step:JN,smoothstep:ew,simplebezier:ZN},DCe=[0,0],PCe=[15,15],zCe={x:0,y:0,zoom:1},ICe={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0},dG=b.forwardRef(({nodes:t,edges:e,defaultNodes:n,defaultEdges:r,className:s,nodeTypes:i=MCe,edgeTypes:a=RCe,onNodeClick:l,onEdgeClick:c,onInit:d,onMove:h,onMoveStart:m,onMoveEnd:g,onConnect:x,onConnectStart:y,onConnectEnd:w,onClickConnectStart:S,onClickConnectEnd:k,onNodeMouseEnter:j,onNodeMouseMove:N,onNodeMouseLeave:T,onNodeContextMenu:E,onNodeDoubleClick:_,onNodeDragStart:A,onNodeDrag:L,onNodeDragStop:P,onNodesDelete:B,onEdgesDelete:$,onSelectionChange:U,onSelectionDragStart:te,onSelectionDrag:z,onSelectionDragStop:Q,onSelectionContextMenu:F,onSelectionStart:Y,onSelectionEnd:J,connectionMode:X=pd.Strict,connectionLineType:R=Lc.Bezier,connectionLineStyle:ie,connectionLineComponent:G,connectionLineContainerStyle:I,deleteKeyCode:V="Backspace",selectionKeyCode:ee="Shift",selectionOnDrag:ne=!1,selectionMode:W=Sp.Full,panActivationKeyCode:se="Space",multiSelectionKeyCode:re=Ay()?"Meta":"Control",zoomActivationKeyCode:oe=Ay()?"Meta":"Control",snapToGrid:Te=!1,snapGrid:We=PCe,onlyRenderVisibleElements:Ye=!1,selectNodesOnDrag:Je=!0,nodesDraggable:Oe,nodesConnectable:Ve,nodesFocusable:Ue,nodeOrigin:He=DCe,edgesFocusable:Ot,edgesUpdatable:xt,elementsSelectable:kn,defaultViewport:It=zCe,minZoom:Yt=.5,maxZoom:_t=2,translateExtent:mt=oj,preventScrolling:Ne=!0,nodeExtent:Ie,defaultMarkerColor:st="#b1b1b7",zoomOnScroll:yt=!0,zoomOnPinch:Pt=!0,panOnScroll:Mt=!1,panOnScrollSpeed:zn=.5,panOnScrollMode:Fe=Wu.Free,zoomOnDoubleClick:rt=!0,panOnDrag:tn=!0,onPaneClick:Rt,onPaneMouseEnter:ke,onPaneMouseMove:Pe,onPaneMouseLeave:it,onPaneScroll:ot,onPaneContextMenu:nn,children:Kt,onEdgeContextMenu:pt,onEdgeDoubleClick:xr,onEdgeMouseEnter:Ur,onEdgeMouseMove:Wr,onEdgeMouseLeave:vr,onEdgeUpdate:In,onEdgeUpdateStart:cr,onEdgeUpdateEnd:nr,onReconnect:gs,onReconnectStart:xs,onReconnectEnd:js,reconnectRadius:ge=10,edgeUpdaterRadius:Le=10,onNodesChange:Ct,onEdgesChange:vn,noDragClassName:Fr="nodrag",noWheelClassName:Cr="nowheel",noPanClassName:Tr="nopan",fitView:Ns=!1,fitViewOptions:Qf,connectOnClick:lw=!0,attributionPosition:cw,proOptions:Eg,defaultEdgeOptions:mu,elevateNodesOnSelect:Vf=!0,elevateEdgesOnSelect:ec=!1,disableKeyboardA11y:Yo=!1,autoPanOnConnect:pu=!0,autoPanOnNodeDrag:tc=!0,connectionRadius:Gr=20,isValidConnection:_g,onError:Ag,style:Ko,id:Zo,nodeDragThreshold:uw,...Mg},Rg)=>{const Uf=Zo||"1";return ae.createElement("div",{...Mg,style:{...Ko,...ICe},ref:Rg,className:Bs(["react-flow",s]),"data-testid":"rf__wrapper",id:Zo},ae.createElement(uG,null,ae.createElement(_Ce,{onInit:d,onMove:h,onMoveStart:m,onMoveEnd:g,onNodeClick:l,onEdgeClick:c,onNodeMouseEnter:j,onNodeMouseMove:N,onNodeMouseLeave:T,onNodeContextMenu:E,onNodeDoubleClick:_,nodeTypes:i,edgeTypes:a,connectionLineType:R,connectionLineStyle:ie,connectionLineComponent:G,connectionLineContainerStyle:I,selectionKeyCode:ee,selectionOnDrag:ne,selectionMode:W,deleteKeyCode:V,multiSelectionKeyCode:re,panActivationKeyCode:se,zoomActivationKeyCode:oe,onlyRenderVisibleElements:Ye,selectNodesOnDrag:Je,defaultViewport:It,translateExtent:mt,minZoom:Yt,maxZoom:_t,preventScrolling:Ne,zoomOnScroll:yt,zoomOnPinch:Pt,zoomOnDoubleClick:rt,panOnScroll:Mt,panOnScrollSpeed:zn,panOnScrollMode:Fe,panOnDrag:tn,onPaneClick:Rt,onPaneMouseEnter:ke,onPaneMouseMove:Pe,onPaneMouseLeave:it,onPaneScroll:ot,onPaneContextMenu:nn,onSelectionContextMenu:F,onSelectionStart:Y,onSelectionEnd:J,onEdgeContextMenu:pt,onEdgeDoubleClick:xr,onEdgeMouseEnter:Ur,onEdgeMouseMove:Wr,onEdgeMouseLeave:vr,onReconnect:gs??In,onReconnectStart:xs??cr,onReconnectEnd:js??nr,reconnectRadius:ge??Le,defaultMarkerColor:st,noDragClassName:Fr,noWheelClassName:Cr,noPanClassName:Tr,elevateEdgesOnSelect:ec,rfId:Uf,disableKeyboardA11y:Yo,nodeOrigin:He,nodeExtent:Ie}),ae.createElement(C7e,{nodes:t,edges:e,defaultNodes:n,defaultEdges:r,onConnect:x,onConnectStart:y,onConnectEnd:w,onClickConnectStart:S,onClickConnectEnd:k,nodesDraggable:Oe,nodesConnectable:Ve,nodesFocusable:Ue,edgesFocusable:Ot,edgesUpdatable:xt,elementsSelectable:kn,elevateNodesOnSelect:Vf,minZoom:Yt,maxZoom:_t,nodeExtent:Ie,onNodesChange:Ct,onEdgesChange:vn,snapToGrid:Te,snapGrid:We,connectionMode:X,translateExtent:mt,connectOnClick:lw,defaultEdgeOptions:mu,fitView:Ns,fitViewOptions:Qf,onNodesDelete:B,onEdgesDelete:$,onNodeDragStart:A,onNodeDrag:L,onNodeDragStop:P,onSelectionDrag:z,onSelectionDragStart:te,onSelectionDragStop:Q,noPanClassName:Tr,nodeOrigin:He,rfId:Uf,autoPanOnConnect:pu,autoPanOnNodeDrag:tc,onError:Ag,connectionRadius:Gr,isValidConnection:_g,nodeDragThreshold:uw}),ae.createElement(j7e,{onSelectionChange:U}),Kt,ae.createElement(JNe,{proOptions:Eg,position:cw}),ae.createElement(M7e,{rfId:Uf,disableKeyboardA11y:Yo})))});dG.displayName="ReactFlow";function hG(t){return e=>{const[n,r]=b.useState(e),s=b.useCallback(i=>r(a=>t(i,a)),[]);return[n,r,s]}}const LCe=hG(KW),BCe=hG(U7e),fG=({id:t,x:e,y:n,width:r,height:s,style:i,color:a,strokeColor:l,strokeWidth:c,className:d,borderRadius:h,shapeRendering:m,onClick:g,selected:x})=>{const{background:y,backgroundColor:w}=i||{},S=a||y||w;return ae.createElement("rect",{className:Bs(["react-flow__minimap-node",{selected:x},d]),x:e,y:n,rx:h,ry:h,width:r,height:s,fill:S,stroke:l,strokeWidth:c,shapeRendering:m,onClick:g?k=>g(k,t):void 0})};fG.displayName="MiniMapNode";var FCe=b.memo(fG);const qCe=t=>t.nodeOrigin,$Ce=t=>t.getNodes().filter(e=>!e.hidden&&e.width&&e.height),m5=t=>t instanceof Function?t:()=>t;function HCe({nodeStrokeColor:t="transparent",nodeColor:e="#e2e2e2",nodeClassName:n="",nodeBorderRadius:r=5,nodeStrokeWidth:s=2,nodeComponent:i=FCe,onClick:a}){const l=hr($Ce,ks),c=hr(qCe),d=m5(e),h=m5(t),m=m5(n),g=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return ae.createElement(ae.Fragment,null,l.map(x=>{const{x:y,y:w}=td(x,c).positionAbsolute;return ae.createElement(i,{key:x.id,x:y,y:w,width:x.width,height:x.height,style:x.style,selected:x.selected,className:m(x),color:d(x),borderRadius:r,strokeColor:h(x),strokeWidth:s,shapeRendering:g,onClick:a,id:x.id})}))}var QCe=b.memo(HCe);const VCe=200,UCe=150,WCe=t=>{const e=t.getNodes(),n={x:-t.transform[0]/t.transform[2],y:-t.transform[1]/t.transform[2],width:t.width/t.transform[2],height:t.height/t.transform[2]};return{viewBB:n,boundingRect:e.length>0?n7e(tw(e,t.nodeOrigin),n):n,rfId:t.rfId}},GCe="react-flow__minimap-desc";function mG({style:t,className:e,nodeStrokeColor:n="transparent",nodeColor:r="#e2e2e2",nodeClassName:s="",nodeBorderRadius:i=5,nodeStrokeWidth:a=2,nodeComponent:l,maskColor:c="rgb(240, 240, 240, 0.6)",maskStrokeColor:d="none",maskStrokeWidth:h=1,position:m="bottom-right",onClick:g,onNodeClick:x,pannable:y=!1,zoomable:w=!1,ariaLabel:S="React Flow mini map",inversePan:k=!1,zoomStep:j=10,offsetScale:N=5}){const T=ps(),E=b.useRef(null),{boundingRect:_,viewBB:A,rfId:L}=hr(WCe,ks),P=t?.width??VCe,B=t?.height??UCe,$=_.width/P,U=_.height/B,te=Math.max($,U),z=te*P,Q=te*B,F=N*te,Y=_.x-(z-_.width)/2-F,J=_.y-(Q-_.height)/2-F,X=z+F*2,R=Q+F*2,ie=`${GCe}-${L}`,G=b.useRef(0);G.current=te,b.useEffect(()=>{if(E.current){const ee=ma(E.current),ne=re=>{const{transform:oe,d3Selection:Te,d3Zoom:We}=T.getState();if(re.sourceEvent.type!=="wheel"||!Te||!We)return;const Ye=-re.sourceEvent.deltaY*(re.sourceEvent.deltaMode===1?.05:re.sourceEvent.deltaMode?1:.002)*j,Je=oe[2]*Math.pow(2,Ye);We.scaleTo(Te,Je)},W=re=>{const{transform:oe,d3Selection:Te,d3Zoom:We,translateExtent:Ye,width:Je,height:Oe}=T.getState();if(re.sourceEvent.type!=="mousemove"||!Te||!We)return;const Ve=G.current*Math.max(1,oe[2])*(k?-1:1),Ue={x:oe[0]-re.sourceEvent.movementX*Ve,y:oe[1]-re.sourceEvent.movementY*Ve},He=[[0,0],[Je,Oe]],Ot=Fl.translate(Ue.x,Ue.y).scale(oe[2]),xt=We.constrain()(Ot,He,Ye);We.transform(Te,xt)},se=yW().on("zoom",y?W:null).on("zoom.wheel",w?ne:null);return ee.call(se),()=>{ee.on("zoom",null)}}},[y,w,k,j]);const I=g?ee=>{const ne=Ha(ee);g(ee,{x:ne[0],y:ne[1]})}:void 0,V=x?(ee,ne)=>{const W=T.getState().nodeInternals.get(ne);x(ee,W)}:void 0;return ae.createElement(Jb,{position:m,style:t,className:Bs(["react-flow__minimap",e]),"data-testid":"rf__minimap"},ae.createElement("svg",{width:P,height:B,viewBox:`${Y} ${J} ${X} ${R}`,role:"img","aria-labelledby":ie,ref:E,onClick:I},S&&ae.createElement("title",{id:ie},S),ae.createElement(QCe,{onClick:V,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:i,nodeClassName:s,nodeStrokeWidth:a,nodeComponent:l}),ae.createElement("path",{className:"react-flow__minimap-mask",d:`M${Y-F},${J-F}h${X+F*2}v${R+F*2}h${-X-F*2}z + M${A.x},${A.y}h${A.width}v${A.height}h${-A.width}z`,fill:c,fillRule:"evenodd",stroke:d,strokeWidth:h,pointerEvents:"none"})))}mG.displayName="MiniMap";var XCe=b.memo(mG);function YCe(){return ae.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32"},ae.createElement("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"}))}function KCe(){return ae.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5"},ae.createElement("path",{d:"M0 0h32v4.2H0z"}))}function ZCe(){return ae.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30"},ae.createElement("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"}))}function JCe(){return ae.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},ae.createElement("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"}))}function e8e(){return ae.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},ae.createElement("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"}))}const p0=({children:t,className:e,...n})=>ae.createElement("button",{type:"button",className:Bs(["react-flow__controls-button",e]),...n},t);p0.displayName="ControlButton";const t8e=t=>({isInteractive:t.nodesDraggable||t.nodesConnectable||t.elementsSelectable,minZoomReached:t.transform[2]<=t.minZoom,maxZoomReached:t.transform[2]>=t.maxZoom}),pG=({style:t,showZoom:e=!0,showFitView:n=!0,showInteractive:r=!0,fitViewOptions:s,onZoomIn:i,onZoomOut:a,onFitView:l,onInteractiveChange:c,className:d,children:h,position:m="bottom-left"})=>{const g=ps(),[x,y]=b.useState(!1),{isInteractive:w,minZoomReached:S,maxZoomReached:k}=hr(t8e,ks),{zoomIn:j,zoomOut:N,fitView:T}=s7();if(b.useEffect(()=>{y(!0)},[]),!x)return null;const E=()=>{j(),i?.()},_=()=>{N(),a?.()},A=()=>{T(s),l?.()},L=()=>{g.setState({nodesDraggable:!w,nodesConnectable:!w,elementsSelectable:!w}),c?.(!w)};return ae.createElement(Jb,{className:Bs(["react-flow__controls",d]),position:m,style:t,"data-testid":"rf__controls"},e&&ae.createElement(ae.Fragment,null,ae.createElement(p0,{onClick:E,className:"react-flow__controls-zoomin",title:"zoom in","aria-label":"zoom in",disabled:k},ae.createElement(YCe,null)),ae.createElement(p0,{onClick:_,className:"react-flow__controls-zoomout",title:"zoom out","aria-label":"zoom out",disabled:S},ae.createElement(KCe,null))),n&&ae.createElement(p0,{className:"react-flow__controls-fitview",onClick:A,title:"fit view","aria-label":"fit view"},ae.createElement(ZCe,null)),r&&ae.createElement(p0,{className:"react-flow__controls-interactive",onClick:L,title:"toggle interactivity","aria-label":"toggle interactivity"},w?ae.createElement(e8e,null):ae.createElement(JCe,null)),h)};pG.displayName="Controls";var n8e=b.memo(pG),Ca;(function(t){t.Lines="lines",t.Dots="dots",t.Cross="cross"})(Ca||(Ca={}));function r8e({color:t,dimensions:e,lineWidth:n}){return ae.createElement("path",{stroke:t,strokeWidth:n,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`})}function s8e({color:t,radius:e}){return ae.createElement("circle",{cx:e,cy:e,r:e,fill:t})}const i8e={[Ca.Dots]:"#91919a",[Ca.Lines]:"#eee",[Ca.Cross]:"#e2e2e2"},a8e={[Ca.Dots]:1,[Ca.Lines]:1,[Ca.Cross]:6},o8e=t=>({transform:t.transform,patternId:`pattern-${t.rfId}`});function gG({id:t,variant:e=Ca.Dots,gap:n=20,size:r,lineWidth:s=1,offset:i=2,color:a,style:l,className:c}){const d=b.useRef(null),{transform:h,patternId:m}=hr(o8e,ks),g=a||i8e[e],x=r||a8e[e],y=e===Ca.Dots,w=e===Ca.Cross,S=Array.isArray(n)?n:[n,n],k=[S[0]*h[2]||1,S[1]*h[2]||1],j=x*h[2],N=w?[j,j]:k,T=y?[j/i,j/i]:[N[0]/i,N[1]/i];return ae.createElement("svg",{className:Bs(["react-flow__background",c]),style:{...l,position:"absolute",width:"100%",height:"100%",top:0,left:0},ref:d,"data-testid":"rf__background"},ae.createElement("pattern",{id:m+t,x:h[0]%k[0],y:h[1]%k[1],width:k[0],height:k[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${T[0]},-${T[1]})`},y?ae.createElement(s8e,{color:g,radius:j/i}):ae.createElement(r8e,{dimensions:N,color:g,lineWidth:s})),ae.createElement("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${m+t})`}))}gG.displayName="Background";var l8e=b.memo(gG);function a7(t){throw new Error('Could not dynamically require "'+t+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var p5,AD;function c8e(){if(AD)return p5;AD=1;var t=qz(),e=4;function n(r){return t(r,e)}return p5=n,p5}var g5,MD;function xG(){if(MD)return g5;MD=1;var t=FJ();function e(n){return typeof n=="function"?n:t}return g5=e,g5}var x5,RD;function vG(){if(RD)return x5;RD=1;var t=$z(),e=pj(),n=xG(),r=xd();function s(i,a){var l=r(i)?t:e;return l(i,n(a))}return x5=s,x5}var v5,DD;function yG(){return DD||(DD=1,v5=vG()),v5}var y5,PD;function u8e(){if(PD)return y5;PD=1;var t=pj();function e(n,r){var s=[];return t(n,function(i,a,l){r(i,a,l)&&s.push(i)}),s}return y5=e,y5}var b5,zD;function bG(){if(zD)return b5;zD=1;var t=qJ(),e=u8e(),n=gj(),r=xd();function s(i,a){var l=r(i)?t:e;return l(i,n(a,3))}return b5=s,b5}var w5,ID;function d8e(){if(ID)return w5;ID=1;var t=Object.prototype,e=t.hasOwnProperty;function n(r,s){return r!=null&&e.call(r,s)}return w5=n,w5}var S5,LD;function wG(){if(LD)return S5;LD=1;var t=d8e(),e=$J();function n(r,s){return r!=null&&e(r,s,t)}return S5=n,S5}var k5,BD;function h8e(){if(BD)return k5;BD=1;var t=Hz(),e=Qz(),n=Vz(),r=xd(),s=xj(),i=vj(),a=HJ(),l=yj(),c="[object Map]",d="[object Set]",h=Object.prototype,m=h.hasOwnProperty;function g(x){if(x==null)return!0;if(s(x)&&(r(x)||typeof x=="string"||typeof x.splice=="function"||i(x)||l(x)||n(x)))return!x.length;var y=e(x);if(y==c||y==d)return!x.size;if(a(x))return!t(x).length;for(var w in x)if(m.call(x,w))return!1;return!0}return k5=g,k5}var O5,FD;function SG(){if(FD)return O5;FD=1;function t(e){return e===void 0}return O5=t,O5}var j5,qD;function f8e(){if(qD)return j5;qD=1;function t(e,n,r,s){var i=-1,a=e==null?0:e.length;for(s&&a&&(r=e[++i]);++i1?x.setNode(y,m):x.setNode(y)}),this},s.prototype.setNode=function(h,m){return t.has(this._nodes,h)?(arguments.length>1&&(this._nodes[h]=m),this):(this._nodes[h]=arguments.length>1?m:this._defaultNodeLabelFn(h),this._isCompound&&(this._parent[h]=n,this._children[h]={},this._children[n][h]=!0),this._in[h]={},this._preds[h]={},this._out[h]={},this._sucs[h]={},++this._nodeCount,this)},s.prototype.node=function(h){return this._nodes[h]},s.prototype.hasNode=function(h){return t.has(this._nodes,h)},s.prototype.removeNode=function(h){var m=this;if(t.has(this._nodes,h)){var g=function(x){m.removeEdge(m._edgeObjs[x])};delete this._nodes[h],this._isCompound&&(this._removeFromParentsChildList(h),delete this._parent[h],t.each(this.children(h),function(x){m.setParent(x)}),delete this._children[h]),t.each(t.keys(this._in[h]),g),delete this._in[h],delete this._preds[h],t.each(t.keys(this._out[h]),g),delete this._out[h],delete this._sucs[h],--this._nodeCount}return this},s.prototype.setParent=function(h,m){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(t.isUndefined(m))m=n;else{m+="";for(var g=m;!t.isUndefined(g);g=this.parent(g))if(g===h)throw new Error("Setting "+m+" as parent of "+h+" would create a cycle");this.setNode(m)}return this.setNode(h),this._removeFromParentsChildList(h),this._parent[h]=m,this._children[m][h]=!0,this},s.prototype._removeFromParentsChildList=function(h){delete this._children[this._parent[h]][h]},s.prototype.parent=function(h){if(this._isCompound){var m=this._parent[h];if(m!==n)return m}},s.prototype.children=function(h){if(t.isUndefined(h)&&(h=n),this._isCompound){var m=this._children[h];if(m)return t.keys(m)}else{if(h===n)return this.nodes();if(this.hasNode(h))return[]}},s.prototype.predecessors=function(h){var m=this._preds[h];if(m)return t.keys(m)},s.prototype.successors=function(h){var m=this._sucs[h];if(m)return t.keys(m)},s.prototype.neighbors=function(h){var m=this.predecessors(h);if(m)return t.union(m,this.successors(h))},s.prototype.isLeaf=function(h){var m;return this.isDirected()?m=this.successors(h):m=this.neighbors(h),m.length===0},s.prototype.filterNodes=function(h){var m=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});m.setGraph(this.graph());var g=this;t.each(this._nodes,function(w,S){h(S)&&m.setNode(S,w)}),t.each(this._edgeObjs,function(w){m.hasNode(w.v)&&m.hasNode(w.w)&&m.setEdge(w,g.edge(w))});var x={};function y(w){var S=g.parent(w);return S===void 0||m.hasNode(S)?(x[w]=S,S):S in x?x[S]:y(S)}return this._isCompound&&t.each(m.nodes(),function(w){m.setParent(w,y(w))}),m},s.prototype.setDefaultEdgeLabel=function(h){return t.isFunction(h)||(h=t.constant(h)),this._defaultEdgeLabelFn=h,this},s.prototype.edgeCount=function(){return this._edgeCount},s.prototype.edges=function(){return t.values(this._edgeObjs)},s.prototype.setPath=function(h,m){var g=this,x=arguments;return t.reduce(h,function(y,w){return x.length>1?g.setEdge(y,w,m):g.setEdge(y,w),w}),this},s.prototype.setEdge=function(){var h,m,g,x,y=!1,w=arguments[0];typeof w=="object"&&w!==null&&"v"in w?(h=w.v,m=w.w,g=w.name,arguments.length===2&&(x=arguments[1],y=!0)):(h=w,m=arguments[1],g=arguments[3],arguments.length>2&&(x=arguments[2],y=!0)),h=""+h,m=""+m,t.isUndefined(g)||(g=""+g);var S=l(this._isDirected,h,m,g);if(t.has(this._edgeLabels,S))return y&&(this._edgeLabels[S]=x),this;if(!t.isUndefined(g)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(h),this.setNode(m),this._edgeLabels[S]=y?x:this._defaultEdgeLabelFn(h,m,g);var k=c(this._isDirected,h,m,g);return h=k.v,m=k.w,Object.freeze(k),this._edgeObjs[S]=k,i(this._preds[m],h),i(this._sucs[h],m),this._in[m][S]=k,this._out[h][S]=k,this._edgeCount++,this},s.prototype.edge=function(h,m,g){var x=arguments.length===1?d(this._isDirected,arguments[0]):l(this._isDirected,h,m,g);return this._edgeLabels[x]},s.prototype.hasEdge=function(h,m,g){var x=arguments.length===1?d(this._isDirected,arguments[0]):l(this._isDirected,h,m,g);return t.has(this._edgeLabels,x)},s.prototype.removeEdge=function(h,m,g){var x=arguments.length===1?d(this._isDirected,arguments[0]):l(this._isDirected,h,m,g),y=this._edgeObjs[x];return y&&(h=y.v,m=y.w,delete this._edgeLabels[x],delete this._edgeObjs[x],a(this._preds[m],h),a(this._sucs[h],m),delete this._in[m][x],delete this._out[h][x],this._edgeCount--),this},s.prototype.inEdges=function(h,m){var g=this._in[h];if(g){var x=t.values(g);return m?t.filter(x,function(y){return y.v===m}):x}},s.prototype.outEdges=function(h,m){var g=this._out[h];if(g){var x=t.values(g);return m?t.filter(x,function(y){return y.w===m}):x}},s.prototype.nodeEdges=function(h,m){var g=this.inEdges(h,m);if(g)return g.concat(this.outEdges(h,m))};function i(h,m){h[m]?h[m]++:h[m]=1}function a(h,m){--h[m]||delete h[m]}function l(h,m,g,x){var y=""+m,w=""+g;if(!h&&y>w){var S=y;y=w,w=S}return y+r+w+r+(t.isUndefined(x)?e:x)}function c(h,m,g,x){var y=""+m,w=""+g;if(!h&&y>w){var S=y;y=w,w=S}var k={v:y,w};return x&&(k.name=x),k}function d(h,m){return l(h,m.v,m.w,m.name)}return L5}var B5,tP;function S8e(){return tP||(tP=1,B5="2.1.8"),B5}var F5,nP;function k8e(){return nP||(nP=1,F5={Graph:o7(),version:S8e()}),F5}var q5,rP;function O8e(){if(rP)return q5;rP=1;var t=za(),e=o7();q5={write:n,read:i};function n(a){var l={options:{directed:a.isDirected(),multigraph:a.isMultigraph(),compound:a.isCompound()},nodes:r(a),edges:s(a)};return t.isUndefined(a.graph())||(l.value=t.clone(a.graph())),l}function r(a){return t.map(a.nodes(),function(l){var c=a.node(l),d=a.parent(l),h={v:l};return t.isUndefined(c)||(h.value=c),t.isUndefined(d)||(h.parent=d),h})}function s(a){return t.map(a.edges(),function(l){var c=a.edge(l),d={v:l.v,w:l.w};return t.isUndefined(l.name)||(d.name=l.name),t.isUndefined(c)||(d.value=c),d})}function i(a){var l=new e(a.options).setGraph(a.value);return t.each(a.nodes,function(c){l.setNode(c.v,c.value),c.parent&&l.setParent(c.v,c.parent)}),t.each(a.edges,function(c){l.setEdge({v:c.v,w:c.w,name:c.name},c.value)}),l}return q5}var $5,sP;function j8e(){if(sP)return $5;sP=1;var t=za();$5=e;function e(n){var r={},s=[],i;function a(l){t.has(r,l)||(r[l]=!0,i.push(l),t.each(n.successors(l),a),t.each(n.predecessors(l),a))}return t.each(n.nodes(),function(l){i=[],a(l),i.length&&s.push(i)}),s}return $5}var H5,iP;function NG(){if(iP)return H5;iP=1;var t=za();H5=e;function e(){this._arr=[],this._keyIndices={}}return e.prototype.size=function(){return this._arr.length},e.prototype.keys=function(){return this._arr.map(function(n){return n.key})},e.prototype.has=function(n){return t.has(this._keyIndices,n)},e.prototype.priority=function(n){var r=this._keyIndices[n];if(r!==void 0)return this._arr[r].priority},e.prototype.min=function(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key},e.prototype.add=function(n,r){var s=this._keyIndices;if(n=String(n),!t.has(s,n)){var i=this._arr,a=i.length;return s[n]=a,i.push({key:n,priority:r}),this._decrease(a),!0}return!1},e.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var n=this._arr.pop();return delete this._keyIndices[n.key],this._heapify(0),n.key},e.prototype.decrease=function(n,r){var s=this._keyIndices[n];if(r>this._arr[s].priority)throw new Error("New priority is greater than current priority. Key: "+n+" Old: "+this._arr[s].priority+" New: "+r);this._arr[s].priority=r,this._decrease(s)},e.prototype._heapify=function(n){var r=this._arr,s=2*n,i=s+1,a=n;s>1,!(r[i].priority0&&(m=h.removeMin(),g=d[m],g.distance!==Number.POSITIVE_INFINITY);)c(m).forEach(x);return d}return Q5}var V5,oP;function N8e(){if(oP)return V5;oP=1;var t=CG(),e=za();V5=n;function n(r,s,i){return e.transform(r.nodes(),function(a,l){a[l]=t(r,l,s,i)},{})}return V5}var U5,lP;function TG(){if(lP)return U5;lP=1;var t=za();U5=e;function e(n){var r=0,s=[],i={},a=[];function l(c){var d=i[c]={onStack:!0,lowlink:r,index:r++};if(s.push(c),n.successors(c).forEach(function(g){t.has(i,g)?i[g].onStack&&(d.lowlink=Math.min(d.lowlink,i[g].index)):(l(g),d.lowlink=Math.min(d.lowlink,i[g].lowlink))}),d.lowlink===d.index){var h=[],m;do m=s.pop(),i[m].onStack=!1,h.push(m);while(c!==m);a.push(h)}}return n.nodes().forEach(function(c){t.has(i,c)||l(c)}),a}return U5}var W5,cP;function C8e(){if(cP)return W5;cP=1;var t=za(),e=TG();W5=n;function n(r){return t.filter(e(r),function(s){return s.length>1||s.length===1&&r.hasEdge(s[0],s[0])})}return W5}var G5,uP;function T8e(){if(uP)return G5;uP=1;var t=za();G5=n;var e=t.constant(1);function n(s,i,a){return r(s,i||e,a||function(l){return s.outEdges(l)})}function r(s,i,a){var l={},c=s.nodes();return c.forEach(function(d){l[d]={},l[d][d]={distance:0},c.forEach(function(h){d!==h&&(l[d][h]={distance:Number.POSITIVE_INFINITY})}),a(d).forEach(function(h){var m=h.v===d?h.w:h.v,g=i(h);l[d][m]={distance:g,predecessor:d}})}),c.forEach(function(d){var h=l[d];c.forEach(function(m){var g=l[m];c.forEach(function(x){var y=g[d],w=h[x],S=g[x],k=y.distance+w.distance;k0;){if(d=c.removeMin(),t.has(l,d))a.setEdge(d,l[d]);else{if(m)throw new Error("Input graph is not connected: "+s);m=!0}s.nodeEdges(d).forEach(h)}return a}return e3}var t3,xP;function R8e(){return xP||(xP=1,t3={components:j8e(),dijkstra:CG(),dijkstraAll:N8e(),findCycles:C8e(),floydWarshall:T8e(),isAcyclic:E8e(),postorder:_8e(),preorder:A8e(),prim:M8e(),tarjan:TG(),topsort:EG()}),t3}var n3,vP;function D8e(){if(vP)return n3;vP=1;var t=k8e();return n3={Graph:t.Graph,json:O8e(),alg:R8e(),version:t.version},n3}var r3,yP;function Ja(){if(yP)return r3;yP=1;var t;if(typeof a7=="function")try{t=D8e()}catch{}return t||(t=window.graphlib),r3=t,r3}var s3,bP;function P8e(){if(bP)return s3;bP=1;var t=qz(),e=1,n=4;function r(s){return t(s,e|n)}return s3=r,s3}var i3,wP;function z8e(){if(wP)return i3;wP=1;var t=wj(),e=Yz(),n=Xz(),r=Ly(),s=Object.prototype,i=s.hasOwnProperty,a=t(function(l,c){l=Object(l);var d=-1,h=c.length,m=h>2?c[2]:void 0;for(m&&n(c[0],c[1],m)&&(h=1);++d1?i[l-1]:void 0,d=l>2?i[2]:void 0;for(c=r.length>3&&typeof c=="function"?(l--,c):void 0,d&&e(i[0],i[1],d)&&(c=l<3?void 0:c,l=1),s=Object(s);++a0;--S)if(w=h[S].dequeue(),w){g=g.concat(a(d,h,m,w,!0));break}}}return g}function a(d,h,m,g,x){var y=x?[]:void 0;return t.forEach(d.inEdges(g.v),function(w){var S=d.edge(w),k=d.node(w.v);x&&y.push({v:w.v,w:w.w}),k.out-=S,c(h,m,k)}),t.forEach(d.outEdges(g.v),function(w){var S=d.edge(w),k=w.w,j=d.node(k);j.in-=S,c(h,m,j)}),d.removeNode(g.v),y}function l(d,h){var m=new e,g=0,x=0;t.forEach(d.nodes(),function(S){m.setNode(S,{v:S,in:0,out:0})}),t.forEach(d.edges(),function(S){var k=m.edge(S.v,S.w)||0,j=h(S),N=k+j;m.setEdge(S.v,S.w,N),x=Math.max(x,m.node(S.v).out+=j),g=Math.max(g,m.node(S.w).in+=j)});var y=t.range(x+g+3).map(function(){return new n}),w=g+1;return t.forEach(m.nodes(),function(S){c(y,w,m.node(S))}),{graph:m,buckets:y,zeroIdx:w}}function c(d,h,m){m.out?m.in?d[m.out-m.in+h].enqueue(m):d[d.length-1].enqueue(m):d[0].enqueue(m)}return k3}var O3,FP;function Z8e(){if(FP)return O3;FP=1;var t=Nr(),e=K8e();O3={run:n,undo:s};function n(i){var a=i.graph().acyclicer==="greedy"?e(i,l(i)):r(i);t.forEach(a,function(c){var d=i.edge(c);i.removeEdge(c),d.forwardName=c.name,d.reversed=!0,i.setEdge(c.w,c.v,d,t.uniqueId("rev"))});function l(c){return function(d){return c.edge(d).weight}}}function r(i){var a=[],l={},c={};function d(h){t.has(c,h)||(c[h]=!0,l[h]=!0,t.forEach(i.outEdges(h),function(m){t.has(l,m.w)?a.push(m):d(m.w)}),delete l[h])}return t.forEach(i.nodes(),d),a}function s(i){t.forEach(i.edges(),function(a){var l=i.edge(a);if(l.reversed){i.removeEdge(a);var c=l.forwardName;delete l.reversed,delete l.forwardName,i.setEdge(a.w,a.v,l,c)}})}return O3}var j3,qP;function ji(){if(qP)return j3;qP=1;var t=Nr(),e=Ja().Graph;j3={addDummyNode:n,simplify:r,asNonCompoundGraph:s,successorWeights:i,predecessorWeights:a,intersectRect:l,buildLayerMatrix:c,normalizeRanks:d,removeEmptyRanks:h,addBorderNode:m,maxRank:g,partition:x,time:y,notime:w};function n(S,k,j,N){var T;do T=t.uniqueId(N);while(S.hasNode(T));return j.dummy=k,S.setNode(T,j),T}function r(S){var k=new e().setGraph(S.graph());return t.forEach(S.nodes(),function(j){k.setNode(j,S.node(j))}),t.forEach(S.edges(),function(j){var N=k.edge(j.v,j.w)||{weight:0,minlen:1},T=S.edge(j);k.setEdge(j.v,j.w,{weight:N.weight+T.weight,minlen:Math.max(N.minlen,T.minlen)})}),k}function s(S){var k=new e({multigraph:S.isMultigraph()}).setGraph(S.graph());return t.forEach(S.nodes(),function(j){S.children(j).length||k.setNode(j,S.node(j))}),t.forEach(S.edges(),function(j){k.setEdge(j,S.edge(j))}),k}function i(S){var k=t.map(S.nodes(),function(j){var N={};return t.forEach(S.outEdges(j),function(T){N[T.w]=(N[T.w]||0)+S.edge(T).weight}),N});return t.zipObject(S.nodes(),k)}function a(S){var k=t.map(S.nodes(),function(j){var N={};return t.forEach(S.inEdges(j),function(T){N[T.v]=(N[T.v]||0)+S.edge(T).weight}),N});return t.zipObject(S.nodes(),k)}function l(S,k){var j=S.x,N=S.y,T=k.x-j,E=k.y-N,_=S.width/2,A=S.height/2;if(!T&&!E)throw new Error("Not possible to find intersection inside of the rectangle");var L,P;return Math.abs(E)*_>Math.abs(T)*A?(E<0&&(A=-A),L=A*T/E,P=A):(T<0&&(_=-_),L=_,P=_*E/T),{x:j+L,y:N+P}}function c(S){var k=t.map(t.range(g(S)+1),function(){return[]});return t.forEach(S.nodes(),function(j){var N=S.node(j),T=N.rank;t.isUndefined(T)||(k[T][N.order]=j)}),k}function d(S){var k=t.min(t.map(S.nodes(),function(j){return S.node(j).rank}));t.forEach(S.nodes(),function(j){var N=S.node(j);t.has(N,"rank")&&(N.rank-=k)})}function h(S){var k=t.min(t.map(S.nodes(),function(E){return S.node(E).rank})),j=[];t.forEach(S.nodes(),function(E){var _=S.node(E).rank-k;j[_]||(j[_]=[]),j[_].push(E)});var N=0,T=S.graph().nodeRankFactor;t.forEach(j,function(E,_){t.isUndefined(E)&&_%T!==0?--N:N&&t.forEach(E,function(A){S.node(A).rank+=N})})}function m(S,k,j,N){var T={width:0,height:0};return arguments.length>=4&&(T.rank=j,T.order=N),n(S,"border",T,k)}function g(S){return t.max(t.map(S.nodes(),function(k){var j=S.node(k).rank;if(!t.isUndefined(j))return j}))}function x(S,k){var j={lhs:[],rhs:[]};return t.forEach(S,function(N){k(N)?j.lhs.push(N):j.rhs.push(N)}),j}function y(S,k){var j=t.now();try{return k()}finally{console.log(S+" time: "+(t.now()-j)+"ms")}}function w(S,k){return k()}return j3}var N3,$P;function J8e(){if($P)return N3;$P=1;var t=Nr(),e=ji();N3={run:n,undo:s};function n(i){i.graph().dummyChains=[],t.forEach(i.edges(),function(a){r(i,a)})}function r(i,a){var l=a.v,c=i.node(l).rank,d=a.w,h=i.node(d).rank,m=a.name,g=i.edge(a),x=g.labelRank;if(h!==c+1){i.removeEdge(a);var y,w,S;for(S=0,++c;cP.lim&&(B=P,$=!0);var U=t.filter(T.edges(),function(te){return $===j(N,N.node(te.v),B)&&$!==j(N,N.node(te.w),B)});return t.minBy(U,function(te){return n(T,te)})}function w(N,T,E,_){var A=E.v,L=E.w;N.removeEdge(A,L),N.setEdge(_.v,_.w,{}),m(N),c(N,T),S(N,T)}function S(N,T){var E=t.find(N.nodes(),function(A){return!T.node(A).parent}),_=s(N,E);_=_.slice(1),t.forEach(_,function(A){var L=N.node(A).parent,P=T.edge(A,L),B=!1;P||(P=T.edge(L,A),B=!0),T.node(A).rank=T.node(L).rank+(B?P.minlen:-P.minlen)})}function k(N,T,E){return N.hasEdge(T,E)}function j(N,T,E){return E.low<=T.lim&&T.lim<=E.lim}return E3}var _3,UP;function tTe(){if(UP)return _3;UP=1;var t=Dy(),e=t.longestPath,n=RG(),r=eTe();_3=s;function s(c){switch(c.graph().ranker){case"network-simplex":l(c);break;case"tight-tree":a(c);break;case"longest-path":i(c);break;default:l(c)}}var i=e;function a(c){e(c),n(c)}function l(c){r(c)}return _3}var A3,WP;function nTe(){if(WP)return A3;WP=1;var t=Nr();A3=e;function e(s){var i=r(s);t.forEach(s.graph().dummyChains,function(a){for(var l=s.node(a),c=l.edgeObj,d=n(s,i,c.v,c.w),h=d.path,m=d.lca,g=0,x=h[g],y=!0;a!==c.w;){if(l=s.node(a),y){for(;(x=h[g])!==m&&s.node(x).maxRankh||m>i[g].lim));for(x=g,g=l;(g=s.parent(g))!==x;)d.push(g);return{path:c.concat(d.reverse()),lca:x}}function r(s){var i={},a=0;function l(c){var d=a;t.forEach(s.children(c),l),i[c]={low:d,lim:a++}}return t.forEach(s.children(),l),i}return A3}var M3,GP;function rTe(){if(GP)return M3;GP=1;var t=Nr(),e=ji();M3={run:n,cleanup:a};function n(l){var c=e.addDummyNode(l,"root",{},"_root"),d=s(l),h=t.max(t.values(d))-1,m=2*h+1;l.graph().nestingRoot=c,t.forEach(l.edges(),function(x){l.edge(x).minlen*=m});var g=i(l)+1;t.forEach(l.children(),function(x){r(l,c,m,g,h,d,x)}),l.graph().nodeRankFactor=m}function r(l,c,d,h,m,g,x){var y=l.children(x);if(!y.length){x!==c&&l.setEdge(c,x,{weight:0,minlen:d});return}var w=e.addBorderNode(l,"_bt"),S=e.addBorderNode(l,"_bb"),k=l.node(x);l.setParent(w,x),k.borderTop=w,l.setParent(S,x),k.borderBottom=S,t.forEach(y,function(j){r(l,c,d,h,m,g,j);var N=l.node(j),T=N.borderTop?N.borderTop:j,E=N.borderBottom?N.borderBottom:j,_=N.borderTop?h:2*h,A=T!==E?1:m-g[x]+1;l.setEdge(w,T,{weight:_,minlen:A,nestingEdge:!0}),l.setEdge(E,S,{weight:_,minlen:A,nestingEdge:!0})}),l.parent(x)||l.setEdge(c,w,{weight:0,minlen:m+g[x]})}function s(l){var c={};function d(h,m){var g=l.children(h);g&&g.length&&t.forEach(g,function(x){d(x,m+1)}),c[h]=m}return t.forEach(l.children(),function(h){d(h,1)}),c}function i(l){return t.reduce(l.edges(),function(c,d){return c+l.edge(d).weight},0)}function a(l){var c=l.graph();l.removeNode(c.nestingRoot),delete c.nestingRoot,t.forEach(l.edges(),function(d){var h=l.edge(d);h.nestingEdge&&l.removeEdge(d)})}return M3}var R3,XP;function sTe(){if(XP)return R3;XP=1;var t=Nr(),e=ji();R3=n;function n(s){function i(a){var l=s.children(a),c=s.node(a);if(l.length&&t.forEach(l,i),t.has(c,"minRank")){c.borderLeft=[],c.borderRight=[];for(var d=c.minRank,h=c.maxRank+1;d0;)x%2&&(y+=h[x+1]),x=x-1>>1,h[x]+=g.weight;m+=g.weight*y})),m}return z3}var I3,JP;function lTe(){if(JP)return I3;JP=1;var t=Nr();I3=e;function e(n,r){return t.map(r,function(s){var i=n.inEdges(s);if(i.length){var a=t.reduce(i,function(l,c){var d=n.edge(c),h=n.node(c.v);return{sum:l.sum+d.weight*h.order,weight:l.weight+d.weight}},{sum:0,weight:0});return{v:s,barycenter:a.sum/a.weight,weight:a.weight}}else return{v:s}})}return I3}var L3,ez;function cTe(){if(ez)return L3;ez=1;var t=Nr();L3=e;function e(s,i){var a={};t.forEach(s,function(c,d){var h=a[c.v]={indegree:0,in:[],out:[],vs:[c.v],i:d};t.isUndefined(c.barycenter)||(h.barycenter=c.barycenter,h.weight=c.weight)}),t.forEach(i.edges(),function(c){var d=a[c.v],h=a[c.w];!t.isUndefined(d)&&!t.isUndefined(h)&&(h.indegree++,d.out.push(a[c.w]))});var l=t.filter(a,function(c){return!c.indegree});return n(l)}function n(s){var i=[];function a(d){return function(h){h.merged||(t.isUndefined(h.barycenter)||t.isUndefined(d.barycenter)||h.barycenter>=d.barycenter)&&r(d,h)}}function l(d){return function(h){h.in.push(d),--h.indegree===0&&s.push(h)}}for(;s.length;){var c=s.pop();i.push(c),t.forEach(c.in.reverse(),a(c)),t.forEach(c.out,l(c))}return t.map(t.filter(i,function(d){return!d.merged}),function(d){return t.pick(d,["vs","i","barycenter","weight"])})}function r(s,i){var a=0,l=0;s.weight&&(a+=s.barycenter*s.weight,l+=s.weight),i.weight&&(a+=i.barycenter*i.weight,l+=i.weight),s.vs=i.vs.concat(s.vs),s.barycenter=a/l,s.weight=l,s.i=Math.min(i.i,s.i),i.merged=!0}return L3}var B3,tz;function uTe(){if(tz)return B3;tz=1;var t=Nr(),e=ji();B3=n;function n(i,a){var l=e.partition(i,function(w){return t.has(w,"barycenter")}),c=l.lhs,d=t.sortBy(l.rhs,function(w){return-w.i}),h=[],m=0,g=0,x=0;c.sort(s(!!a)),x=r(h,d,x),t.forEach(c,function(w){x+=w.vs.length,h.push(w.vs),m+=w.barycenter*w.weight,g+=w.weight,x=r(h,d,x)});var y={vs:t.flatten(h,!0)};return g&&(y.barycenter=m/g,y.weight=g),y}function r(i,a,l){for(var c;a.length&&(c=t.last(a)).i<=l;)a.pop(),i.push(c.vs),l++;return l}function s(i){return function(a,l){return a.barycenterl.barycenter?1:i?l.i-a.i:a.i-l.i}}return B3}var F3,nz;function dTe(){if(nz)return F3;nz=1;var t=Nr(),e=lTe(),n=cTe(),r=uTe();F3=s;function s(l,c,d,h){var m=l.children(c),g=l.node(c),x=g?g.borderLeft:void 0,y=g?g.borderRight:void 0,w={};x&&(m=t.filter(m,function(E){return E!==x&&E!==y}));var S=e(l,m);t.forEach(S,function(E){if(l.children(E.v).length){var _=s(l,E.v,d,h);w[E.v]=_,t.has(_,"barycenter")&&a(E,_)}});var k=n(S,d);i(k,w);var j=r(k,h);if(x&&(j.vs=t.flatten([x,j.vs,y],!0),l.predecessors(x).length)){var N=l.node(l.predecessors(x)[0]),T=l.node(l.predecessors(y)[0]);t.has(j,"barycenter")||(j.barycenter=0,j.weight=0),j.barycenter=(j.barycenter*j.weight+N.order+T.order)/(j.weight+2),j.weight+=2}return j}function i(l,c){t.forEach(l,function(d){d.vs=t.flatten(d.vs.map(function(h){return c[h]?c[h].vs:h}),!0)})}function a(l,c){t.isUndefined(l.barycenter)?(l.barycenter=c.barycenter,l.weight=c.weight):(l.barycenter=(l.barycenter*l.weight+c.barycenter*c.weight)/(l.weight+c.weight),l.weight+=c.weight)}return F3}var q3,rz;function hTe(){if(rz)return q3;rz=1;var t=Nr(),e=Ja().Graph;q3=n;function n(s,i,a){var l=r(s),c=new e({compound:!0}).setGraph({root:l}).setDefaultNodeLabel(function(d){return s.node(d)});return t.forEach(s.nodes(),function(d){var h=s.node(d),m=s.parent(d);(h.rank===i||h.minRank<=i&&i<=h.maxRank)&&(c.setNode(d),c.setParent(d,m||l),t.forEach(s[a](d),function(g){var x=g.v===d?g.w:g.v,y=c.edge(x,d),w=t.isUndefined(y)?0:y.weight;c.setEdge(x,d,{weight:s.edge(g).weight+w})}),t.has(h,"minRank")&&c.setNode(d,{borderLeft:h.borderLeft[i],borderRight:h.borderRight[i]}))}),c}function r(s){for(var i;s.hasNode(i=t.uniqueId("_root")););return i}return q3}var $3,sz;function fTe(){if(sz)return $3;sz=1;var t=Nr();$3=e;function e(n,r,s){var i={},a;t.forEach(s,function(l){for(var c=n.parent(l),d,h;c;){if(d=n.parent(c),d?(h=i[d],i[d]=c):(h=a,a=c),h&&h!==c){r.setEdge(h,c);return}c=d}})}return $3}var H3,iz;function mTe(){if(iz)return H3;iz=1;var t=Nr(),e=aTe(),n=oTe(),r=dTe(),s=hTe(),i=fTe(),a=Ja().Graph,l=ji();H3=c;function c(g){var x=l.maxRank(g),y=d(g,t.range(1,x+1),"inEdges"),w=d(g,t.range(x-1,-1,-1),"outEdges"),S=e(g);m(g,S);for(var k=Number.POSITIVE_INFINITY,j,N=0,T=0;T<4;++N,++T){h(N%2?y:w,N%4>=2),S=l.buildLayerMatrix(g);var E=n(g,S);EB)&&a(N,te,$)})})}function E(_,A){var L=-1,P,B=0;return t.forEach(A,function($,U){if(k.node($).dummy==="border"){var te=k.predecessors($);te.length&&(P=k.node(te[0]).order,T(A,B,U,L,P),B=U,L=P)}T(A,B,A.length,P,_.length)}),A}return t.reduce(j,E),N}function i(k,j){if(k.node(j).dummy)return t.find(k.predecessors(j),function(N){return k.node(N).dummy})}function a(k,j,N){if(j>N){var T=j;j=N,N=T}var E=k[j];E||(k[j]=E={}),E[N]=!0}function l(k,j,N){if(j>N){var T=j;j=N,N=T}return t.has(k[j],N)}function c(k,j,N,T){var E={},_={},A={};return t.forEach(j,function(L){t.forEach(L,function(P,B){E[P]=P,_[P]=P,A[P]=B})}),t.forEach(j,function(L){var P=-1;t.forEach(L,function(B){var $=T(B);if($.length){$=t.sortBy($,function(F){return A[F]});for(var U=($.length-1)/2,te=Math.floor(U),z=Math.ceil(U);te<=z;++te){var Q=$[te];_[B]===B&&Po.jsxs("div",{className:"px-4 py-2 shadow-md rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700 min-w-[120px]",children:[o.jsx(ru,{type:"target",position:wt.Top}),o.jsx("div",{className:"font-semibold text-white text-sm truncate max-w-[200px]",title:t.content,children:t.label}),o.jsx(ru,{type:"source",position:wt.Bottom})]}));DG.displayName="EntityNode";const PG=b.memo(({data:t})=>o.jsxs("div",{className:"px-3 py-2 shadow-md rounded-md bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700 min-w-[100px]",children:[o.jsx(ru,{type:"target",position:wt.Top}),o.jsx("div",{className:"font-medium text-white text-xs truncate max-w-[150px]",title:t.content,children:t.label}),o.jsx(ru,{type:"source",position:wt.Bottom})]}));PG.displayName="ParagraphNode";const jTe={entity:DG,paragraph:PG};function NTe(t,e){const n=new hz.graphlib.Graph;n.setDefaultEdgeLabel(()=>({})),n.setGraph({rankdir:"TB",ranksep:100,nodesep:80});const r=[],s=[];return t.forEach(i=>{n.setNode(i.id,{width:150,height:50})}),e.forEach(i=>{n.setEdge(i.source,i.target)}),hz.layout(n),t.forEach(i=>{const a=n.node(i.id);r.push({id:i.id,type:i.type,position:{x:a.x-75,y:a.y-25},data:{label:i.content.slice(0,20)+(i.content.length>20?"...":""),content:i.content}})}),e.forEach((i,a)=>{const l={id:`edge-${a}`,source:i.source,target:i.target,animated:t.length<=200&&i.weight>5,style:{strokeWidth:Math.min(i.weight/2,5),opacity:.6}};i.weight>10&&t.length<100&&(l.label=`${i.weight.toFixed(0)}`),s.push(l)}),{nodes:r,edges:s}}function CTe(){const t=Zi(),[e,n]=b.useState(!1),[r,s]=b.useState(null),[i,a]=b.useState(""),[l,c]=b.useState("all"),[d,h]=b.useState(50),[m,g]=b.useState("50"),[x,y]=b.useState(!1),[w,S]=b.useState(!0),[k,j]=b.useState(!1),[N,T]=b.useState(!1),[E,_,A]=LCe([]),[L,P,B]=BCe([]),[$,U]=b.useState(0),[te,z]=b.useState(null),[Q,F]=b.useState(null),{toast:Y}=as(),J=b.useCallback(ne=>ne.type==="entity"?"#6366f1":ne.type==="paragraph"?"#10b981":"#6b7280",[]),X=b.useCallback(async(ne=!1)=>{try{if(!ne&&d>200){T(!0);return}n(!0);const[W,se]=await Promise.all([STe(d,l),kTe()]);if(s(se),W.nodes.length===0){Y({title:"提示",description:"知识库为空,请先导入知识数据"}),_([]),P([]);return}const{nodes:re,edges:oe}=NTe(W.nodes,W.edges);_(re),P(oe),U(re.length),se&&se.total_nodes>d&&Y({title:"提示",description:`知识图谱包含 ${se.total_nodes} 个节点,当前显示 ${re.length} 个`}),Y({title:"加载成功",description:`已加载 ${re.length} 个节点,${oe.length} 条边`})}catch(W){console.error("加载知识图谱失败:",W),Y({title:"加载失败",description:W instanceof Error?W.message:"未知错误",variant:"destructive"})}finally{n(!1)}},[d,l,Y]),R=b.useCallback(async()=>{if(!i.trim()){Y({title:"提示",description:"请输入搜索关键词"});return}try{const ne=await OTe(i);if(ne.length===0){Y({title:"未找到",description:"没有找到匹配的节点"});return}const W=new Set(ne.map(se=>se.id));_(se=>se.map(re=>({...re,style:{...re.style,opacity:W.has(re.id)?1:.3,filter:W.has(re.id)?"brightness(1.2)":"brightness(0.8)"}}))),Y({title:"搜索完成",description:`找到 ${ne.length} 个匹配节点`})}catch(ne){console.error("搜索失败:",ne),Y({title:"搜索失败",description:ne instanceof Error?ne.message:"未知错误",variant:"destructive"})}},[i,Y]),ie=b.useCallback(()=>{_(ne=>ne.map(W=>({...W,style:{...W.style,opacity:1,filter:"brightness(1)"}})))},[]),G=b.useCallback(()=>{S(!1),j(!0),X()},[X]),I=b.useCallback(()=>{T(!1),setTimeout(()=>{X(!0)},0)},[X]),V=b.useCallback((ne,W)=>{E.find(re=>re.id===W.id)&&z({id:W.id,type:W.type,content:W.data.content})},[E]);b.useEffect(()=>{w||k&&X()},[d,l,w,k]);const ee=b.useCallback((ne,W)=>{const se=E.find(Te=>Te.id===W.source),re=E.find(Te=>Te.id===W.target),oe=L.find(Te=>Te.id===W.id);se&&re&&oe&&F({source:{id:se.id,type:se.type,content:se.data.content},target:{id:re.id,type:re.type,content:re.data.content},edge:{source:W.source,target:W.target,weight:parseFloat(W.label||"0")}})},[E,L]);return o.jsxs("div",{className:"h-full flex flex-col",children:[o.jsxs("div",{className:"flex-shrink-0 p-4 border-b bg-background",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦知识库图谱"}),o.jsx("p",{className:"text-muted-foreground mt-1",children:"可视化知识实体与关系网络"})]}),r&&o.jsxs("div",{className:"flex gap-2 flex-wrap",children:[o.jsxs(Xn,{variant:"outline",className:"gap-1",children:[o.jsx(ek,{className:"h-3 w-3"}),"节点: ",r.total_nodes]}),o.jsxs(Xn,{variant:"outline",className:"gap-1",children:[o.jsx(SI,{className:"h-3 w-3"}),"边: ",r.total_edges]}),o.jsxs(Xn,{variant:"outline",className:"gap-1",children:[o.jsx(Oa,{className:"h-3 w-3"}),"实体: ",r.entity_nodes]}),o.jsxs(Xn,{variant:"outline",className:"gap-1",children:[o.jsx(zl,{className:"h-3 w-3"}),"段落: ",r.paragraph_nodes]})]})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 mt-4",children:[o.jsxs("div",{className:"flex-1 flex gap-2",children:[o.jsx(ze,{placeholder:"搜索节点内容...",value:i,onChange:ne=>a(ne.target.value),onKeyDown:ne=>ne.key==="Enter"&&R(),className:"flex-1"}),o.jsx(de,{onClick:R,size:"sm",children:o.jsx(Ni,{className:"h-4 w-4"})}),o.jsx(de,{onClick:ie,variant:"outline",size:"sm",children:"重置"})]}),o.jsxs("div",{className:"flex gap-2",children:[o.jsxs(Vt,{value:l,onValueChange:ne=>c(ne),children:[o.jsx($t,{className:"w-[120px]",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部节点"}),o.jsx(De,{value:"entity",children:"仅实体"}),o.jsx(De,{value:"paragraph",children:"仅段落"})]})]}),o.jsxs(Vt,{value:d===1e4?"all":x?"custom":d.toString(),onValueChange:ne=>{ne==="custom"?(y(!0),g(d.toString())):ne==="all"?(y(!1),h(1e4)):(y(!1),h(Number(ne)))},children:[o.jsx($t,{className:"w-[120px]",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"50",children:"50 节点"}),o.jsx(De,{value:"100",children:"100 节点"}),o.jsx(De,{value:"200",children:"200 节点"}),o.jsx(De,{value:"500",children:"500 节点"}),o.jsx(De,{value:"1000",children:"1000 节点"}),o.jsx(De,{value:"all",children:"全部 (最多10000)"}),o.jsx(De,{value:"custom",children:"自定义..."})]})]}),x&&o.jsx(ze,{type:"number",min:"50",value:m,onChange:ne=>g(ne.target.value),onBlur:()=>{const ne=parseInt(m);!isNaN(ne)&&ne>=50?h(ne):(g("50"),h(50))},onKeyDown:ne=>{if(ne.key==="Enter"){const W=parseInt(m);!isNaN(W)&&W>=50?h(W):(g("50"),h(50))}},placeholder:"最少50个",className:"w-[120px]"}),o.jsx(de,{onClick:()=>X(),variant:"outline",size:"sm",disabled:e,children:o.jsx(Ps,{className:xe("h-4 w-4",e&&"animate-spin")})})]})]})]}),o.jsx("div",{className:"flex-1 relative",children:e?o.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:o.jsxs("div",{className:"text-center",children:[o.jsx(Ps,{className:"h-8 w-8 animate-spin mx-auto mb-2 text-muted-foreground"}),o.jsx("p",{className:"text-muted-foreground",children:"加载知识图谱中..."})]})}):E.length===0?o.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:o.jsxs("div",{className:"text-center",children:[o.jsx(ek,{className:"h-12 w-12 mx-auto mb-4 text-muted-foreground"}),o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"知识库为空"}),o.jsx("p",{className:"text-muted-foreground",children:"请先导入知识数据"})]})}):o.jsxs(dG,{nodes:E,edges:L,onNodesChange:A,onEdgesChange:B,onNodeClick:V,onEdgeClick:ee,nodeTypes:jTe,fitView:!0,minZoom:.05,maxZoom:1.5,defaultViewport:{x:0,y:0,zoom:.5},elevateNodesOnSelect:$<=500,nodesDraggable:$<=1e3,attributionPosition:"bottom-left",children:[o.jsx(l8e,{variant:Ca.Dots,gap:12,size:1}),o.jsx(n8e,{}),$<=500&&o.jsx(XCe,{nodeColor:J,nodeBorderRadius:8,pannable:!0,zoomable:!0}),o.jsxs(Jb,{position:"top-right",className:"bg-background/95 backdrop-blur-sm rounded-lg border p-3 shadow-lg",children:[o.jsx("div",{className:"text-sm font-semibold mb-2",children:"图例"}),o.jsxs("div",{className:"space-y-2 text-xs",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700"}),o.jsx("span",{children:"实体节点"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700"}),o.jsx("span",{children:"段落节点"})]}),$>200&&o.jsxs("div",{className:"mt-2 pt-2 border-t text-yellow-600 dark:text-yellow-500",children:[o.jsx("div",{className:"font-semibold",children:"性能模式"}),o.jsx("div",{children:"已禁用动画"}),$>500&&o.jsx("div",{children:"已禁用缩略图"})]})]})]})]})}),o.jsx(Dr,{open:!!te,onOpenChange:ne=>!ne&&z(null),children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsx(kr,{children:o.jsx(Or,{children:"节点详情"})}),te&&o.jsxs("div",{className:"space-y-4",children:[o.jsx("div",{className:"grid grid-cols-2 gap-4",children:o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"类型"}),o.jsx("div",{className:"mt-1",children:o.jsx(Xn,{variant:te.type==="entity"?"default":"secondary",children:te.type==="entity"?"🏷️ 实体":"📄 段落"})})]})}),o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"ID"}),o.jsx("code",{className:"mt-1 block p-2 bg-muted rounded text-xs break-all",children:te.id})]}),o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"内容"}),o.jsx(gn,{className:"mt-1 h-40 p-3 bg-muted rounded",children:o.jsx("p",{className:"text-sm whitespace-pre-wrap",children:te.content})})]})]})]})}),o.jsx(Dr,{open:!!Q,onOpenChange:ne=>!ne&&F(null),children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-hidden flex flex-col",children:[o.jsx(kr,{children:o.jsx(Or,{children:"边详情"})}),Q&&o.jsx(gn,{className:"flex-1 pr-4",children:o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-blue-50 dark:bg-blue-950 rounded border-2 border-blue-200 dark:border-blue-800",children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"源节点"}),o.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:Q.source.content}),o.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[Q.source.id.slice(0,40),"..."]})]}),o.jsx("div",{className:"text-2xl text-muted-foreground flex-shrink-0",children:"→"}),o.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-green-50 dark:bg-green-950 rounded border-2 border-green-200 dark:border-green-800",children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"目标节点"}),o.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:Q.target.content}),o.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[Q.target.id.slice(0,40),"..."]})]})]}),o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"权重"}),o.jsx("div",{className:"mt-1",children:o.jsx(Xn,{variant:"outline",className:"text-base font-mono",children:Q.edge.weight.toFixed(4)})})]})]})})]})}),o.jsx(Dn,{open:w,onOpenChange:S,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"加载知识图谱"}),o.jsxs(_n,{children:["知识图谱的动态展示会消耗较多系统资源。",o.jsx("br",{}),"确定要加载知识图谱吗?"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{onClick:()=>t({to:"/"}),children:"取消 (返回首页)"}),o.jsx(An,{onClick:G,children:"确认加载"})]})]})}),o.jsx(Dn,{open:N,onOpenChange:T,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"⚠️ 节点数量较多"}),o.jsx(_n,{asChild:!0,children:o.jsxs("div",{children:[o.jsxs("p",{children:["您正在尝试加载 ",o.jsx("strong",{className:"text-orange-600",children:d>=1e4?"全部 (最多10000个)":d})," 个节点。"]}),o.jsx("p",{className:"mt-4",children:"节点数量过多可能导致:"}),o.jsxs("ul",{className:"list-disc list-inside mt-2 space-y-1",children:[o.jsx("li",{children:"页面加载时间较长"}),o.jsx("li",{children:"浏览器卡顿或崩溃"}),o.jsx("li",{children:"系统资源占用过高"})]}),o.jsx("p",{className:"mt-4",children:"建议先选择较少的节点数量 (50-200 个)。"})]})})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{onClick:()=>{T(!1),d>200&&(h(50),y(!1))},children:"取消"}),o.jsx(An,{onClick:I,className:"bg-orange-600 hover:bg-orange-700",children:"我了解风险,继续加载"})]})]})})]})}function mh(t,e,n){let r=n.initialDeps??[],s;function i(){var a,l,c,d;let h;n.key&&((a=n.debug)!=null&&a.call(n))&&(h=Date.now());const m=t();if(!(m.length!==r.length||m.some((y,w)=>r[w]!==y)))return s;r=m;let x;if(n.key&&((l=n.debug)!=null&&l.call(n))&&(x=Date.now()),s=e(...m),n.key&&((c=n.debug)!=null&&c.call(n))){const y=Math.round((Date.now()-h)*100)/100,w=Math.round((Date.now()-x)*100)/100,S=w/16,k=(j,N)=>{for(j=String(j);j.length{r=a},i}function oz(t,e){if(t===void 0)throw new Error("Unexpected undefined");return t}const cTe=(t,e)=>Math.abs(t-e)<1.01,uTe=(t,e,n)=>{let r;return function(...s){t.clearTimeout(r),r=t.setTimeout(()=>e.apply(this,s),n)}},lz=t=>{const{offsetWidth:e,offsetHeight:n}=t;return{width:e,height:n}},dTe=t=>t,hTe=t=>{const e=Math.max(t.startIndex-t.overscan,0),n=Math.min(t.endIndex+t.overscan,t.count-1),r=[];for(let s=e;s<=n;s++)r.push(s);return r},fTe=(t,e)=>{const n=t.scrollElement;if(!n)return;const r=t.targetWindow;if(!r)return;const s=a=>{const{width:l,height:c}=a;e({width:Math.round(l),height:Math.round(c)})};if(s(lz(n)),!r.ResizeObserver)return()=>{};const i=new r.ResizeObserver(a=>{const l=()=>{const c=a[0];if(c?.borderBoxSize){const d=c.borderBoxSize[0];if(d){s({width:d.inlineSize,height:d.blockSize});return}}s(lz(n))};t.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(l):l()});return i.observe(n,{box:"border-box"}),()=>{i.unobserve(n)}},cz={passive:!0},uz=typeof window>"u"?!0:"onscrollend"in window,mTe=(t,e)=>{const n=t.scrollElement;if(!n)return;const r=t.targetWindow;if(!r)return;let s=0;const i=t.options.useScrollendEvent&&uz?()=>{}:uTe(r,()=>{e(s,!1)},t.options.isScrollingResetDelay),a=h=>()=>{const{horizontal:m,isRtl:g}=t.options;s=m?n.scrollLeft*(g&&-1||1):n.scrollTop,i(),e(s,h)},l=a(!0),c=a(!1);c(),n.addEventListener("scroll",l,cz);const d=t.options.useScrollendEvent&&uz;return d&&n.addEventListener("scrollend",c,cz),()=>{n.removeEventListener("scroll",l),d&&n.removeEventListener("scrollend",c)}},pTe=(t,e,n)=>{if(e?.borderBoxSize){const r=e.borderBoxSize[0];if(r)return Math.round(r[n.options.horizontal?"inlineSize":"blockSize"])}return t[n.options.horizontal?"offsetWidth":"offsetHeight"]},gTe=(t,{adjustments:e=0,behavior:n},r)=>{var s,i;const a=t+e;(i=(s=r.scrollElement)==null?void 0:s.scrollTo)==null||i.call(s,{[r.options.horizontal?"left":"top"]:a,behavior:n})};class xTe{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.measurementsCache=[],this.itemSizeCache=new Map,this.pendingMeasuredCacheIndexes=[],this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.observer=(()=>{let n=null;const r=()=>n||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:n=new this.targetWindow.ResizeObserver(s=>{s.forEach(i=>{const a=()=>{this._measureElement(i.target,i)};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(a):a()})}));return{disconnect:()=>{var s;(s=r())==null||s.disconnect(),n=null},observe:s=>{var i;return(i=r())==null?void 0:i.observe(s,{box:"border-box"})},unobserve:s=>{var i;return(i=r())==null?void 0:i.unobserve(s)}}})(),this.range=null,this.setOptions=n=>{Object.entries(n).forEach(([r,s])=>{typeof s>"u"&&delete n[r]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:dTe,rangeExtractor:hTe,onChange:()=>{},measureElement:pTe,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,...n}},this.notify=n=>{var r,s;(s=(r=this.options).onChange)==null||s.call(r,this,n)},this.maybeNotify=mh(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),n=>{this.notify(n)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(n=>n()),this.unsubs=[],this.observer.disconnect(),this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var n;const r=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==r){if(this.cleanup(),!r){this.maybeNotify();return}this.scrollElement=r,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((n=this.scrollElement)==null?void 0:n.window)??null,this.elementsCache.forEach(s=>{this.observer.observe(s)}),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0}),this.unsubs.push(this.options.observeElementRect(this,s=>{this.scrollRect=s,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(s,i)=>{this.scrollAdjustments=0,this.scrollDirection=i?this.getScrollOffset()this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(n,r)=>{const s=new Map,i=new Map;for(let a=r-1;a>=0;a--){const l=n[a];if(s.has(l.lane))continue;const c=i.get(l.lane);if(c==null||l.end>c.end?i.set(l.lane,l):l.enda.end===l.end?a.index-l.index:a.end-l.end)[0]:void 0},this.getMeasurementOptions=mh(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled],(n,r,s,i,a)=>(this.pendingMeasuredCacheIndexes=[],{count:n,paddingStart:r,scrollMargin:s,getItemKey:i,enabled:a}),{key:!1}),this.getMeasurements=mh(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:n,paddingStart:r,scrollMargin:s,getItemKey:i,enabled:a},l)=>{if(!a)return this.measurementsCache=[],this.itemSizeCache.clear(),[];this.measurementsCache.length===0&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(h=>{this.itemSizeCache.set(h.key,h.size)}));const c=this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[];const d=this.measurementsCache.slice(0,c);for(let h=c;hthis.options.debug}),this.calculateRange=mh(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(n,r,s,i)=>this.range=n.length>0&&r>0?vTe({measurements:n,outerSize:r,scrollOffset:s,lanes:i}):null,{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=mh(()=>{let n=null,r=null;const s=this.calculateRange();return s&&(n=s.startIndex,r=s.endIndex),this.maybeNotify.updateDeps([this.isScrolling,n,r]),[this.options.rangeExtractor,this.options.overscan,this.options.count,n,r]},(n,r,s,i,a)=>i===null||a===null?[]:n({startIndex:i,endIndex:a,overscan:r,count:s}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=n=>{const r=this.options.indexAttribute,s=n.getAttribute(r);return s?parseInt(s,10):(console.warn(`Missing attribute name '${r}={index}' on measured element.`),-1)},this._measureElement=(n,r)=>{const s=this.indexFromElement(n),i=this.measurementsCache[s];if(!i)return;const a=i.key,l=this.elementsCache.get(a);l!==n&&(l&&this.observer.unobserve(l),this.observer.observe(n),this.elementsCache.set(a,n)),n.isConnected&&this.resizeItem(s,this.options.measureElement(n,r,this))},this.resizeItem=(n,r)=>{const s=this.measurementsCache[n];if(!s)return;const i=this.itemSizeCache.get(s.key)??s.size,a=r-i;a!==0&&((this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(s,a,this):s.start{if(!n){this.elementsCache.forEach((r,s)=>{r.isConnected||(this.observer.unobserve(r),this.elementsCache.delete(s))});return}this._measureElement(n,void 0)},this.getVirtualItems=mh(()=>[this.getVirtualIndexes(),this.getMeasurements()],(n,r)=>{const s=[];for(let i=0,a=n.length;ithis.options.debug}),this.getVirtualItemForOffset=n=>{const r=this.getMeasurements();if(r.length!==0)return oz(r[_G(0,r.length-1,s=>oz(r[s]).start,n)])},this.getOffsetForAlignment=(n,r,s=0)=>{const i=this.getSize(),a=this.getScrollOffset();r==="auto"&&(r=n>=a+i?"end":"start"),r==="center"?n+=(s-i)/2:r==="end"&&(n-=i);const l=this.getTotalSize()+this.options.scrollMargin-i;return Math.max(Math.min(l,n),0)},this.getOffsetForIndex=(n,r="auto")=>{n=Math.max(0,Math.min(n,this.options.count-1));const s=this.measurementsCache[n];if(!s)return;const i=this.getSize(),a=this.getScrollOffset();if(r==="auto")if(s.end>=a+i-this.options.scrollPaddingEnd)r="end";else if(s.start<=a+this.options.scrollPaddingStart)r="start";else return[a,r];const l=r==="end"?s.end+this.options.scrollPaddingEnd:s.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(l,r,s.size),r]},this.isDynamicMode=()=>this.elementsCache.size>0,this.scrollToOffset=(n,{align:r="start",behavior:s}={})=>{s==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getOffsetForAlignment(n,r),{adjustments:void 0,behavior:s})},this.scrollToIndex=(n,{align:r="auto",behavior:s}={})=>{s==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),n=Math.max(0,Math.min(n,this.options.count-1));let i=0;const a=10,l=d=>{if(!this.targetWindow)return;const h=this.getOffsetForIndex(n,d);if(!h){console.warn("Failed to get offset for index:",n);return}const[m,g]=h;this._scrollToOffset(m,{adjustments:void 0,behavior:s}),this.targetWindow.requestAnimationFrame(()=>{const x=this.getScrollOffset(),y=this.getOffsetForIndex(n,g);if(!y){console.warn("Failed to get offset for index:",n);return}cTe(y[0],x)||c(g)})},c=d=>{this.targetWindow&&(i++,il(d)):console.warn(`Failed to scroll to index ${n} after ${a} attempts.`))};l(r)},this.scrollBy=(n,{behavior:r}={})=>{r==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getScrollOffset()+n,{adjustments:void 0,behavior:r})},this.getTotalSize=()=>{var n;const r=this.getMeasurements();let s;if(r.length===0)s=this.options.paddingStart;else if(this.options.lanes===1)s=((n=r[r.length-1])==null?void 0:n.end)??0;else{const i=Array(this.options.lanes).fill(null);let a=r.length-1;for(;a>=0&&i.some(l=>l===null);){const l=r[a];i[l.lane]===null&&(i[l.lane]=l.end),a--}s=Math.max(...i.filter(l=>l!==null))}return Math.max(s-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(n,{adjustments:r,behavior:s})=>{this.options.scrollToFn(n,{behavior:s,adjustments:r},this)},this.measure=()=>{this.itemSizeCache=new Map,this.notify(!1)},this.setOptions(e)}}const _G=(t,e,n,r)=>{for(;t<=e;){const s=(t+e)/2|0,i=n(s);if(ir)e=s-1;else return s}return t>0?t-1:0};function vTe({measurements:t,outerSize:e,scrollOffset:n,lanes:r}){const s=t.length-1,i=c=>t[c].start;if(t.length<=r)return{startIndex:0,endIndex:s};let a=_G(0,s,i,n),l=a;if(r===1)for(;l1){const c=Array(r).fill(0);for(;lh=0&&d.some(h=>h>=n);){const h=t[a];d[h.lane]=h.start,a--}a=Math.max(0,a-a%r),l=Math.min(s,l+(r-1-l%r))}return{startIndex:a,endIndex:l}}const dz=typeof document<"u"?b.useLayoutEffect:b.useEffect;function yTe(t){const e=b.useReducer(()=>({}),{})[1],n={...t,onChange:(s,i)=>{var a;i?pa.flushSync(e):e(),(a=t.onChange)==null||a.call(t,s,i)}},[r]=b.useState(()=>new xTe(n));return r.setOptions(n),dz(()=>r._didMount(),[]),dz(()=>r._willUpdate()),r}function bTe(t){return yTe({observeElementRect:fTe,observeElementOffset:mTe,scrollToFn:gTe,...t})}function wTe(t,e,n="long"){return new Intl.DateTimeFormat("en-US",{hour:"numeric",timeZone:t,timeZoneName:n}).format(e).split(/\s/g).slice(2).join(" ")}const STe={},f0={};function Gu(t,e){try{const r=(STe[t]||=new Intl.DateTimeFormat("en-US",{timeZone:t,timeZoneName:"longOffset"}).format)(e).split("GMT")[1];return r in f0?f0[r]:hz(r,r.split(":"))}catch{if(t in f0)return f0[t];const n=t?.match(kTe);return n?hz(t,n.slice(1)):NaN}}const kTe=/([+-]\d\d):?(\d\d)?/;function hz(t,e){const n=+(e[0]||0),r=+(e[1]||0),s=+(e[2]||0)/60;return f0[t]=n*60+r>0?n*60+r+s:n*60-r-s}class Ao extends Date{constructor(...e){super(),e.length>1&&typeof e[e.length-1]=="string"&&(this.timeZone=e.pop()),this.internal=new Date,isNaN(Gu(this.timeZone,this))?this.setTime(NaN):e.length?typeof e[0]=="number"&&(e.length===1||e.length===2&&typeof e[1]!="number")?this.setTime(e[0]):typeof e[0]=="string"?this.setTime(+new Date(e[0])):e[0]instanceof Date?this.setTime(+e[0]):(this.setTime(+new Date(...e)),MG(this),nj(this)):this.setTime(Date.now())}static tz(e,...n){return n.length?new Ao(...n,e):new Ao(Date.now(),e)}withTimeZone(e){return new Ao(+this,e)}getTimezoneOffset(){const e=-Gu(this.timeZone,this);return e>0?Math.floor(e):Math.ceil(e)}setTime(e){return Date.prototype.setTime.apply(this,arguments),nj(this),+this}[Symbol.for("constructDateFrom")](e){return new Ao(+new Date(e),this.timeZone)}}const fz=/^(get|set)(?!UTC)/;Object.getOwnPropertyNames(Date.prototype).forEach(t=>{if(!fz.test(t))return;const e=t.replace(fz,"$1UTC");Ao.prototype[e]&&(t.startsWith("get")?Ao.prototype[t]=function(){return this.internal[e]()}:(Ao.prototype[t]=function(){return Date.prototype[e].apply(this.internal,arguments),OTe(this),+this},Ao.prototype[e]=function(){return Date.prototype[e].apply(this,arguments),nj(this),+this}))});function nj(t){t.internal.setTime(+t),t.internal.setUTCSeconds(t.internal.getUTCSeconds()-Math.round(-Gu(t.timeZone,t)*60))}function OTe(t){Date.prototype.setFullYear.call(t,t.internal.getUTCFullYear(),t.internal.getUTCMonth(),t.internal.getUTCDate()),Date.prototype.setHours.call(t,t.internal.getUTCHours(),t.internal.getUTCMinutes(),t.internal.getUTCSeconds(),t.internal.getUTCMilliseconds()),MG(t)}function MG(t){const e=Gu(t.timeZone,t),n=e>0?Math.floor(e):Math.ceil(e),r=new Date(+t);r.setUTCHours(r.getUTCHours()-1);const s=-new Date(+t).getTimezoneOffset(),i=-new Date(+r).getTimezoneOffset(),a=s-i,l=Date.prototype.getHours.apply(t)!==t.internal.getUTCHours();a&&l&&t.internal.setUTCMinutes(t.internal.getUTCMinutes()+a);const c=s-n;c&&Date.prototype.setUTCMinutes.call(t,Date.prototype.getUTCMinutes.call(t)+c);const d=new Date(+t);d.setUTCSeconds(0);const h=s>0?d.getSeconds():(d.getSeconds()-60)%60,m=Math.round(-(Gu(t.timeZone,t)*60))%60;(m||h)&&(t.internal.setUTCSeconds(t.internal.getUTCSeconds()+m),Date.prototype.setUTCSeconds.call(t,Date.prototype.getUTCSeconds.call(t)+m+h));const g=Gu(t.timeZone,t),x=g>0?Math.floor(g):Math.ceil(g),w=-new Date(+t).getTimezoneOffset()-x,S=x!==n,k=w-c;if(S&&k){Date.prototype.setUTCMinutes.call(t,Date.prototype.getUTCMinutes.call(t)+k);const j=Gu(t.timeZone,t),N=j>0?Math.floor(j):Math.ceil(j),T=x-N;T&&(t.internal.setUTCMinutes(t.internal.getUTCMinutes()+T),Date.prototype.setUTCMinutes.call(t,Date.prototype.getUTCMinutes.call(t)+T))}}class Ls extends Ao{static tz(e,...n){return n.length?new Ls(...n,e):new Ls(Date.now(),e)}toISOString(){const[e,n,r]=this.tzComponents(),s=`${e}${n}:${r}`;return this.internal.toISOString().slice(0,-1)+s}toString(){return`${this.toDateString()} ${this.toTimeString()}`}toDateString(){const[e,n,r,s]=this.internal.toUTCString().split(" ");return`${e?.slice(0,-1)} ${r} ${n} ${s}`}toTimeString(){const e=this.internal.toUTCString().split(" ")[4],[n,r,s]=this.tzComponents();return`${e} GMT${n}${r}${s} (${wTe(this.timeZone,this)})`}toLocaleString(e,n){return Date.prototype.toLocaleString.call(this,e,{...n,timeZone:n?.timeZone||this.timeZone})}toLocaleDateString(e,n){return Date.prototype.toLocaleDateString.call(this,e,{...n,timeZone:n?.timeZone||this.timeZone})}toLocaleTimeString(e,n){return Date.prototype.toLocaleTimeString.call(this,e,{...n,timeZone:n?.timeZone||this.timeZone})}tzComponents(){const e=this.getTimezoneOffset(),n=e>0?"-":"+",r=String(Math.floor(Math.abs(e)/60)).padStart(2,"0"),s=String(Math.abs(e)%60).padStart(2,"0");return[n,r,s]}withTimeZone(e){return new Ls(+this,e)}[Symbol.for("constructDateFrom")](e){return new Ls(+new Date(e),this.timeZone)}}const AG=6048e5,jTe=864e5,mz=Symbol.for("constructDateFrom");function is(t,e){return typeof t=="function"?t(e):t&&typeof t=="object"&&mz in t?t[mz](e):t instanceof Date?new t.constructor(e):new Date(e)}function tr(t,e){return is(e||t,t)}function RG(t,e,n){const r=tr(t,n?.in);return isNaN(e)?is(t,NaN):(e&&r.setDate(r.getDate()+e),r)}function DG(t,e,n){const r=tr(t,n?.in);if(isNaN(e))return is(t,NaN);if(!e)return r;const s=r.getDate(),i=is(t,r.getTime());i.setMonth(r.getMonth()+e+1,0);const a=i.getDate();return s>=a?i:(r.setFullYear(i.getFullYear(),i.getMonth(),s),r)}let NTe={};function xg(){return NTe}function su(t,e){const n=xg(),r=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,s=tr(t,e?.in),i=s.getDay(),a=(i=i.getTime()?r+1:n.getTime()>=l.getTime()?r:r-1}function pz(t){const e=tr(t),n=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return n.setUTCFullYear(e.getFullYear()),+t-+n}function Od(t,...e){const n=is.bind(null,t||e.find(r=>typeof r=="object"));return e.map(n)}function Sp(t,e){const n=tr(t,e?.in);return n.setHours(0,0,0,0),n}function zG(t,e,n){const[r,s]=Od(n?.in,t,e),i=Sp(r),a=Sp(s),l=+i-pz(i),c=+a-pz(a);return Math.round((l-c)/jTe)}function CTe(t,e){const n=PG(t,e),r=is(t,0);return r.setFullYear(n,0,4),r.setHours(0,0,0,0),wp(r)}function TTe(t,e,n){return RG(t,e*7,n)}function ETe(t,e,n){return DG(t,e*12,n)}function _Te(t,e){let n,r=e?.in;return t.forEach(s=>{!r&&typeof s=="object"&&(r=is.bind(null,s));const i=tr(s,r);(!n||n{!r&&typeof s=="object"&&(r=is.bind(null,s));const i=tr(s,r);(!n||n>i||isNaN(+i))&&(n=i)}),is(r,n||NaN)}function ATe(t,e,n){const[r,s]=Od(n?.in,t,e);return+Sp(r)==+Sp(s)}function IG(t){return t instanceof Date||typeof t=="object"&&Object.prototype.toString.call(t)==="[object Date]"}function RTe(t){return!(!IG(t)&&typeof t!="number"||isNaN(+tr(t)))}function DTe(t,e,n){const[r,s]=Od(n?.in,t,e),i=r.getFullYear()-s.getFullYear(),a=r.getMonth()-s.getMonth();return i*12+a}function PTe(t,e){const n=tr(t,e?.in),r=n.getMonth();return n.setFullYear(n.getFullYear(),r+1,0),n.setHours(23,59,59,999),n}function LG(t,e){const[n,r]=Od(t,e.start,e.end);return{start:n,end:r}}function zTe(t,e){const{start:n,end:r}=LG(e?.in,t);let s=+n>+r;const i=s?+n:+r,a=s?r:n;a.setHours(0,0,0,0),a.setDate(1);let l=1;const c=[];for(;+a<=i;)c.push(is(n,a)),a.setMonth(a.getMonth()+l);return s?c.reverse():c}function ITe(t,e){const n=tr(t,e?.in);return n.setDate(1),n.setHours(0,0,0,0),n}function LTe(t,e){const n=tr(t,e?.in),r=n.getFullYear();return n.setFullYear(r+1,0,0),n.setHours(23,59,59,999),n}function BG(t,e){const n=tr(t,e?.in);return n.setFullYear(n.getFullYear(),0,1),n.setHours(0,0,0,0),n}function BTe(t,e){const{start:n,end:r}=LG(e?.in,t);let s=+n>+r;const i=s?+n:+r,a=s?r:n;a.setHours(0,0,0,0),a.setMonth(0,1);let l=1;const c=[];for(;+a<=i;)c.push(is(n,a)),a.setFullYear(a.getFullYear()+l);return s?c.reverse():c}function FG(t,e){const n=xg(),r=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,s=tr(t,e?.in),i=s.getDay(),a=(i{let r;const s=qTe[t];return typeof s=="string"?r=s:e===1?r=s.one:r=s.other.replace("{{count}}",e.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"in "+r:r+" ago":r};function Vh(t){return(e={})=>{const n=e.width?String(e.width):t.defaultWidth;return t.formats[n]||t.formats[t.defaultWidth]}}const HTe={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},QTe={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},VTe={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},UTe={date:Vh({formats:HTe,defaultWidth:"full"}),time:Vh({formats:QTe,defaultWidth:"full"}),dateTime:Vh({formats:VTe,defaultWidth:"full"})},WTe={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},GTe=(t,e,n,r)=>WTe[t];function ko(t){return(e,n)=>{const r=n?.context?String(n.context):"standalone";let s;if(r==="formatting"&&t.formattingValues){const a=t.defaultFormattingWidth||t.defaultWidth,l=n?.width?String(n.width):a;s=t.formattingValues[l]||t.formattingValues[a]}else{const a=t.defaultWidth,l=n?.width?String(n.width):t.defaultWidth;s=t.values[l]||t.values[a]}const i=t.argumentCallback?t.argumentCallback(e):e;return s[i]}}const XTe={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},YTe={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},KTe={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},ZTe={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},JTe={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},e9e={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},t9e=(t,e)=>{const n=Number(t),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},n9e={ordinalNumber:t9e,era:ko({values:XTe,defaultWidth:"wide"}),quarter:ko({values:YTe,defaultWidth:"wide",argumentCallback:t=>t-1}),month:ko({values:KTe,defaultWidth:"wide"}),day:ko({values:ZTe,defaultWidth:"wide"}),dayPeriod:ko({values:JTe,defaultWidth:"wide",formattingValues:e9e,defaultFormattingWidth:"wide"})};function Oo(t){return(e,n={})=>{const r=n.width,s=r&&t.matchPatterns[r]||t.matchPatterns[t.defaultMatchWidth],i=e.match(s);if(!i)return null;const a=i[0],l=r&&t.parsePatterns[r]||t.parsePatterns[t.defaultParseWidth],c=Array.isArray(l)?s9e(l,m=>m.test(a)):r9e(l,m=>m.test(a));let d;d=t.valueCallback?t.valueCallback(c):c,d=n.valueCallback?n.valueCallback(d):d;const h=e.slice(a.length);return{value:d,rest:h}}}function r9e(t,e){for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&e(t[n]))return n}function s9e(t,e){for(let n=0;n{const r=e.match(t.matchPattern);if(!r)return null;const s=r[0],i=e.match(t.parsePattern);if(!i)return null;let a=t.valueCallback?t.valueCallback(i[0]):i[0];a=n.valueCallback?n.valueCallback(a):a;const l=e.slice(s.length);return{value:a,rest:l}}}const i9e=/^(\d+)(th|st|nd|rd)?/i,a9e=/\d+/i,o9e={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},l9e={any:[/^b/i,/^(a|c)/i]},c9e={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},u9e={any:[/1/i,/2/i,/3/i,/4/i]},d9e={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},h9e={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},f9e={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},m9e={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},p9e={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},g9e={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},x9e={ordinalNumber:qG({matchPattern:i9e,parsePattern:a9e,valueCallback:t=>parseInt(t,10)}),era:Oo({matchPatterns:o9e,defaultMatchWidth:"wide",parsePatterns:l9e,defaultParseWidth:"any"}),quarter:Oo({matchPatterns:c9e,defaultMatchWidth:"wide",parsePatterns:u9e,defaultParseWidth:"any",valueCallback:t=>t+1}),month:Oo({matchPatterns:d9e,defaultMatchWidth:"wide",parsePatterns:h9e,defaultParseWidth:"any"}),day:Oo({matchPatterns:f9e,defaultMatchWidth:"wide",parsePatterns:m9e,defaultParseWidth:"any"}),dayPeriod:Oo({matchPatterns:p9e,defaultMatchWidth:"any",parsePatterns:g9e,defaultParseWidth:"any"})},i7={code:"en-US",formatDistance:$Te,formatLong:UTe,formatRelative:GTe,localize:n9e,match:x9e,options:{weekStartsOn:0,firstWeekContainsDate:1}};function v9e(t,e){const n=tr(t,e?.in);return zG(n,BG(n))+1}function $G(t,e){const n=tr(t,e?.in),r=+wp(n)-+CTe(n);return Math.round(r/AG)+1}function HG(t,e){const n=tr(t,e?.in),r=n.getFullYear(),s=xg(),i=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??s.firstWeekContainsDate??s.locale?.options?.firstWeekContainsDate??1,a=is(e?.in||t,0);a.setFullYear(r+1,0,i),a.setHours(0,0,0,0);const l=su(a,e),c=is(e?.in||t,0);c.setFullYear(r,0,i),c.setHours(0,0,0,0);const d=su(c,e);return+n>=+l?r+1:+n>=+d?r:r-1}function y9e(t,e){const n=xg(),r=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,s=HG(t,e),i=is(e?.in||t,0);return i.setFullYear(s,0,r),i.setHours(0,0,0,0),su(i,e)}function QG(t,e){const n=tr(t,e?.in),r=+su(n,e)-+y9e(n,e);return Math.round(r/AG)+1}function Wn(t,e){const n=t<0?"-":"",r=Math.abs(t).toString().padStart(e,"0");return n+r}const Ec={y(t,e){const n=t.getFullYear(),r=n>0?n:1-n;return Wn(e==="yy"?r%100:r,e.length)},M(t,e){const n=t.getMonth();return e==="M"?String(n+1):Wn(n+1,2)},d(t,e){return Wn(t.getDate(),e.length)},a(t,e){const n=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];case"aaaa":default:return n==="am"?"a.m.":"p.m."}},h(t,e){return Wn(t.getHours()%12||12,e.length)},H(t,e){return Wn(t.getHours(),e.length)},m(t,e){return Wn(t.getMinutes(),e.length)},s(t,e){return Wn(t.getSeconds(),e.length)},S(t,e){const n=e.length,r=t.getMilliseconds(),s=Math.trunc(r*Math.pow(10,n-3));return Wn(s,e.length)}},ph={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},gz={G:function(t,e,n){const r=t.getFullYear()>0?1:0;switch(e){case"G":case"GG":case"GGG":return n.era(r,{width:"abbreviated"});case"GGGGG":return n.era(r,{width:"narrow"});case"GGGG":default:return n.era(r,{width:"wide"})}},y:function(t,e,n){if(e==="yo"){const r=t.getFullYear(),s=r>0?r:1-r;return n.ordinalNumber(s,{unit:"year"})}return Ec.y(t,e)},Y:function(t,e,n,r){const s=HG(t,r),i=s>0?s:1-s;if(e==="YY"){const a=i%100;return Wn(a,2)}return e==="Yo"?n.ordinalNumber(i,{unit:"year"}):Wn(i,e.length)},R:function(t,e){const n=PG(t);return Wn(n,e.length)},u:function(t,e){const n=t.getFullYear();return Wn(n,e.length)},Q:function(t,e,n){const r=Math.ceil((t.getMonth()+1)/3);switch(e){case"Q":return String(r);case"QQ":return Wn(r,2);case"Qo":return n.ordinalNumber(r,{unit:"quarter"});case"QQQ":return n.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(r,{width:"narrow",context:"formatting"});case"QQQQ":default:return n.quarter(r,{width:"wide",context:"formatting"})}},q:function(t,e,n){const r=Math.ceil((t.getMonth()+1)/3);switch(e){case"q":return String(r);case"qq":return Wn(r,2);case"qo":return n.ordinalNumber(r,{unit:"quarter"});case"qqq":return n.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(r,{width:"narrow",context:"standalone"});case"qqqq":default:return n.quarter(r,{width:"wide",context:"standalone"})}},M:function(t,e,n){const r=t.getMonth();switch(e){case"M":case"MM":return Ec.M(t,e);case"Mo":return n.ordinalNumber(r+1,{unit:"month"});case"MMM":return n.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(r,{width:"narrow",context:"formatting"});case"MMMM":default:return n.month(r,{width:"wide",context:"formatting"})}},L:function(t,e,n){const r=t.getMonth();switch(e){case"L":return String(r+1);case"LL":return Wn(r+1,2);case"Lo":return n.ordinalNumber(r+1,{unit:"month"});case"LLL":return n.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(r,{width:"narrow",context:"standalone"});case"LLLL":default:return n.month(r,{width:"wide",context:"standalone"})}},w:function(t,e,n,r){const s=QG(t,r);return e==="wo"?n.ordinalNumber(s,{unit:"week"}):Wn(s,e.length)},I:function(t,e,n){const r=$G(t);return e==="Io"?n.ordinalNumber(r,{unit:"week"}):Wn(r,e.length)},d:function(t,e,n){return e==="do"?n.ordinalNumber(t.getDate(),{unit:"date"}):Ec.d(t,e)},D:function(t,e,n){const r=v9e(t);return e==="Do"?n.ordinalNumber(r,{unit:"dayOfYear"}):Wn(r,e.length)},E:function(t,e,n){const r=t.getDay();switch(e){case"E":case"EE":case"EEE":return n.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(r,{width:"short",context:"formatting"});case"EEEE":default:return n.day(r,{width:"wide",context:"formatting"})}},e:function(t,e,n,r){const s=t.getDay(),i=(s-r.weekStartsOn+8)%7||7;switch(e){case"e":return String(i);case"ee":return Wn(i,2);case"eo":return n.ordinalNumber(i,{unit:"day"});case"eee":return n.day(s,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(s,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(s,{width:"short",context:"formatting"});case"eeee":default:return n.day(s,{width:"wide",context:"formatting"})}},c:function(t,e,n,r){const s=t.getDay(),i=(s-r.weekStartsOn+8)%7||7;switch(e){case"c":return String(i);case"cc":return Wn(i,e.length);case"co":return n.ordinalNumber(i,{unit:"day"});case"ccc":return n.day(s,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(s,{width:"narrow",context:"standalone"});case"cccccc":return n.day(s,{width:"short",context:"standalone"});case"cccc":default:return n.day(s,{width:"wide",context:"standalone"})}},i:function(t,e,n){const r=t.getDay(),s=r===0?7:r;switch(e){case"i":return String(s);case"ii":return Wn(s,e.length);case"io":return n.ordinalNumber(s,{unit:"day"});case"iii":return n.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(r,{width:"short",context:"formatting"});case"iiii":default:return n.day(r,{width:"wide",context:"formatting"})}},a:function(t,e,n){const s=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"aaaa":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},b:function(t,e,n){const r=t.getHours();let s;switch(r===12?s=ph.noon:r===0?s=ph.midnight:s=r/12>=1?"pm":"am",e){case"b":case"bb":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"bbbb":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},B:function(t,e,n){const r=t.getHours();let s;switch(r>=17?s=ph.evening:r>=12?s=ph.afternoon:r>=4?s=ph.morning:s=ph.night,e){case"B":case"BB":case"BBB":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"BBBB":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},h:function(t,e,n){if(e==="ho"){let r=t.getHours()%12;return r===0&&(r=12),n.ordinalNumber(r,{unit:"hour"})}return Ec.h(t,e)},H:function(t,e,n){return e==="Ho"?n.ordinalNumber(t.getHours(),{unit:"hour"}):Ec.H(t,e)},K:function(t,e,n){const r=t.getHours()%12;return e==="Ko"?n.ordinalNumber(r,{unit:"hour"}):Wn(r,e.length)},k:function(t,e,n){let r=t.getHours();return r===0&&(r=24),e==="ko"?n.ordinalNumber(r,{unit:"hour"}):Wn(r,e.length)},m:function(t,e,n){return e==="mo"?n.ordinalNumber(t.getMinutes(),{unit:"minute"}):Ec.m(t,e)},s:function(t,e,n){return e==="so"?n.ordinalNumber(t.getSeconds(),{unit:"second"}):Ec.s(t,e)},S:function(t,e){return Ec.S(t,e)},X:function(t,e,n){const r=t.getTimezoneOffset();if(r===0)return"Z";switch(e){case"X":return vz(r);case"XXXX":case"XX":return Bu(r);case"XXXXX":case"XXX":default:return Bu(r,":")}},x:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"x":return vz(r);case"xxxx":case"xx":return Bu(r);case"xxxxx":case"xxx":default:return Bu(r,":")}},O:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"O":case"OO":case"OOO":return"GMT"+xz(r,":");case"OOOO":default:return"GMT"+Bu(r,":")}},z:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"z":case"zz":case"zzz":return"GMT"+xz(r,":");case"zzzz":default:return"GMT"+Bu(r,":")}},t:function(t,e,n){const r=Math.trunc(+t/1e3);return Wn(r,e.length)},T:function(t,e,n){return Wn(+t,e.length)}};function xz(t,e=""){const n=t>0?"-":"+",r=Math.abs(t),s=Math.trunc(r/60),i=r%60;return i===0?n+String(s):n+String(s)+e+Wn(i,2)}function vz(t,e){return t%60===0?(t>0?"-":"+")+Wn(Math.abs(t)/60,2):Bu(t,e)}function Bu(t,e=""){const n=t>0?"-":"+",r=Math.abs(t),s=Wn(Math.trunc(r/60),2),i=Wn(r%60,2);return n+s+e+i}const yz=(t,e)=>{switch(t){case"P":return e.date({width:"short"});case"PP":return e.date({width:"medium"});case"PPP":return e.date({width:"long"});case"PPPP":default:return e.date({width:"full"})}},VG=(t,e)=>{switch(t){case"p":return e.time({width:"short"});case"pp":return e.time({width:"medium"});case"ppp":return e.time({width:"long"});case"pppp":default:return e.time({width:"full"})}},b9e=(t,e)=>{const n=t.match(/(P+)(p+)?/)||[],r=n[1],s=n[2];if(!s)return yz(t,e);let i;switch(r){case"P":i=e.dateTime({width:"short"});break;case"PP":i=e.dateTime({width:"medium"});break;case"PPP":i=e.dateTime({width:"long"});break;case"PPPP":default:i=e.dateTime({width:"full"});break}return i.replace("{{date}}",yz(r,e)).replace("{{time}}",VG(s,e))},w9e={p:VG,P:b9e},S9e=/^D+$/,k9e=/^Y+$/,O9e=["D","DD","YY","YYYY"];function j9e(t){return S9e.test(t)}function N9e(t){return k9e.test(t)}function C9e(t,e,n){const r=T9e(t,e,n);if(console.warn(r),O9e.includes(t))throw new RangeError(r)}function T9e(t,e,n){const r=t[0]==="Y"?"years":"days of the month";return`Use \`${t.toLowerCase()}\` instead of \`${t}\` (in \`${e}\`) for formatting ${r} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}const E9e=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,_9e=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,M9e=/^'([^]*?)'?$/,A9e=/''/g,R9e=/[a-zA-Z]/;function Cv(t,e,n){const r=xg(),s=n?.locale??r.locale??i7,i=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,a=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,l=tr(t,n?.in);if(!RTe(l))throw new RangeError("Invalid time value");let c=e.match(_9e).map(h=>{const m=h[0];if(m==="p"||m==="P"){const g=w9e[m];return g(h,s.formatLong)}return h}).join("").match(E9e).map(h=>{if(h==="''")return{isToken:!1,value:"'"};const m=h[0];if(m==="'")return{isToken:!1,value:D9e(h)};if(gz[m])return{isToken:!0,value:h};if(m.match(R9e))throw new RangeError("Format string contains an unescaped latin alphabet character `"+m+"`");return{isToken:!1,value:h}});s.localize.preprocessor&&(c=s.localize.preprocessor(l,c));const d={firstWeekContainsDate:i,weekStartsOn:a,locale:s};return c.map(h=>{if(!h.isToken)return h.value;const m=h.value;(!n?.useAdditionalWeekYearTokens&&N9e(m)||!n?.useAdditionalDayOfYearTokens&&j9e(m))&&C9e(m,e,String(t));const g=gz[m[0]];return g(l,m,s.localize,d)}).join("")}function D9e(t){const e=t.match(M9e);return e?e[1].replace(A9e,"'"):t}function P9e(t,e){const n=tr(t,e?.in),r=n.getFullYear(),s=n.getMonth(),i=is(n,0);return i.setFullYear(r,s+1,0),i.setHours(0,0,0,0),i.getDate()}function z9e(t,e){return tr(t,e?.in).getMonth()}function I9e(t,e){return tr(t,e?.in).getFullYear()}function L9e(t,e){return+tr(t)>+tr(e)}function B9e(t,e){return+tr(t)<+tr(e)}function F9e(t,e,n){const[r,s]=Od(n?.in,t,e);return+su(r,n)==+su(s,n)}function q9e(t,e,n){const[r,s]=Od(n?.in,t,e);return r.getFullYear()===s.getFullYear()&&r.getMonth()===s.getMonth()}function $9e(t,e,n){const[r,s]=Od(n?.in,t,e);return r.getFullYear()===s.getFullYear()}function H9e(t,e,n){const r=tr(t,n?.in),s=r.getFullYear(),i=r.getDate(),a=is(t,0);a.setFullYear(s,e,15),a.setHours(0,0,0,0);const l=P9e(a);return r.setMonth(e,Math.min(i,l)),r}function Q9e(t,e,n){const r=tr(t,n?.in);return isNaN(+r)?is(t,NaN):(r.setFullYear(e),r)}const bz=5,V9e=4;function U9e(t,e){const n=e.startOfMonth(t),r=n.getDay()>0?n.getDay():7,s=e.addDays(t,-r+1),i=e.addDays(s,bz*7-1);return e.getMonth(t)===e.getMonth(i)?bz:V9e}function UG(t,e){const n=e.startOfMonth(t),r=n.getDay();return r===1?n:r===0?e.addDays(n,-6):e.addDays(n,-1*(r-1))}function W9e(t,e){const n=UG(t,e),r=U9e(t,e);return e.addDays(n,r*7-1)}class Ki{constructor(e,n){this.Date=Date,this.today=()=>this.overrides?.today?this.overrides.today():this.options.timeZone?Ls.tz(this.options.timeZone):new this.Date,this.newDate=(r,s,i)=>this.overrides?.newDate?this.overrides.newDate(r,s,i):this.options.timeZone?new Ls(r,s,i,this.options.timeZone):new Date(r,s,i),this.addDays=(r,s)=>this.overrides?.addDays?this.overrides.addDays(r,s):RG(r,s),this.addMonths=(r,s)=>this.overrides?.addMonths?this.overrides.addMonths(r,s):DG(r,s),this.addWeeks=(r,s)=>this.overrides?.addWeeks?this.overrides.addWeeks(r,s):TTe(r,s),this.addYears=(r,s)=>this.overrides?.addYears?this.overrides.addYears(r,s):ETe(r,s),this.differenceInCalendarDays=(r,s)=>this.overrides?.differenceInCalendarDays?this.overrides.differenceInCalendarDays(r,s):zG(r,s),this.differenceInCalendarMonths=(r,s)=>this.overrides?.differenceInCalendarMonths?this.overrides.differenceInCalendarMonths(r,s):DTe(r,s),this.eachMonthOfInterval=r=>this.overrides?.eachMonthOfInterval?this.overrides.eachMonthOfInterval(r):zTe(r),this.eachYearOfInterval=r=>{const s=this.overrides?.eachYearOfInterval?this.overrides.eachYearOfInterval(r):BTe(r),i=new Set(s.map(l=>this.getYear(l)));if(i.size===s.length)return s;const a=[];return i.forEach(l=>{a.push(new Date(l,0,1))}),a},this.endOfBroadcastWeek=r=>this.overrides?.endOfBroadcastWeek?this.overrides.endOfBroadcastWeek(r):W9e(r,this),this.endOfISOWeek=r=>this.overrides?.endOfISOWeek?this.overrides.endOfISOWeek(r):FTe(r),this.endOfMonth=r=>this.overrides?.endOfMonth?this.overrides.endOfMonth(r):PTe(r),this.endOfWeek=(r,s)=>this.overrides?.endOfWeek?this.overrides.endOfWeek(r,s):FG(r,this.options),this.endOfYear=r=>this.overrides?.endOfYear?this.overrides.endOfYear(r):LTe(r),this.format=(r,s,i)=>{const a=this.overrides?.format?this.overrides.format(r,s,this.options):Cv(r,s,this.options);return this.options.numerals&&this.options.numerals!=="latn"?this.replaceDigits(a):a},this.getISOWeek=r=>this.overrides?.getISOWeek?this.overrides.getISOWeek(r):$G(r),this.getMonth=(r,s)=>this.overrides?.getMonth?this.overrides.getMonth(r,this.options):z9e(r,this.options),this.getYear=(r,s)=>this.overrides?.getYear?this.overrides.getYear(r,this.options):I9e(r,this.options),this.getWeek=(r,s)=>this.overrides?.getWeek?this.overrides.getWeek(r,this.options):QG(r,this.options),this.isAfter=(r,s)=>this.overrides?.isAfter?this.overrides.isAfter(r,s):L9e(r,s),this.isBefore=(r,s)=>this.overrides?.isBefore?this.overrides.isBefore(r,s):B9e(r,s),this.isDate=r=>this.overrides?.isDate?this.overrides.isDate(r):IG(r),this.isSameDay=(r,s)=>this.overrides?.isSameDay?this.overrides.isSameDay(r,s):ATe(r,s),this.isSameMonth=(r,s)=>this.overrides?.isSameMonth?this.overrides.isSameMonth(r,s):q9e(r,s),this.isSameYear=(r,s)=>this.overrides?.isSameYear?this.overrides.isSameYear(r,s):$9e(r,s),this.max=r=>this.overrides?.max?this.overrides.max(r):_Te(r),this.min=r=>this.overrides?.min?this.overrides.min(r):MTe(r),this.setMonth=(r,s)=>this.overrides?.setMonth?this.overrides.setMonth(r,s):H9e(r,s),this.setYear=(r,s)=>this.overrides?.setYear?this.overrides.setYear(r,s):Q9e(r,s),this.startOfBroadcastWeek=(r,s)=>this.overrides?.startOfBroadcastWeek?this.overrides.startOfBroadcastWeek(r,this):UG(r,this),this.startOfDay=r=>this.overrides?.startOfDay?this.overrides.startOfDay(r):Sp(r),this.startOfISOWeek=r=>this.overrides?.startOfISOWeek?this.overrides.startOfISOWeek(r):wp(r),this.startOfMonth=r=>this.overrides?.startOfMonth?this.overrides.startOfMonth(r):ITe(r),this.startOfWeek=(r,s)=>this.overrides?.startOfWeek?this.overrides.startOfWeek(r,this.options):su(r,this.options),this.startOfYear=r=>this.overrides?.startOfYear?this.overrides.startOfYear(r):BG(r),this.options={locale:i7,...e},this.overrides=n}getDigitMap(){const{numerals:e="latn"}=this.options,n=new Intl.NumberFormat("en-US",{numberingSystem:e}),r={};for(let s=0;s<10;s++)r[s.toString()]=n.format(s);return r}replaceDigits(e){const n=this.getDigitMap();return e.replace(/\d/g,r=>n[r]||r)}formatNumber(e){return this.replaceDigits(e.toString())}getMonthYearOrder(){const e=this.options.locale?.code;return e&&Ki.yearFirstLocales.has(e)?"year-first":"month-first"}formatMonthYear(e){const{locale:n,timeZone:r,numerals:s}=this.options,i=n?.code;if(i&&Ki.yearFirstLocales.has(i))try{return new Intl.DateTimeFormat(i,{month:"long",year:"numeric",timeZone:r,numberingSystem:s}).format(e)}catch{}const a=this.getMonthYearOrder()==="year-first"?"y LLLL":"LLLL y";return this.format(e,a)}}Ki.yearFirstLocales=new Set(["eu","hu","ja","ja-Hira","ja-JP","ko","ko-KR","lt","lt-LT","lv","lv-LV","mn","mn-MN","zh","zh-CN","zh-HK","zh-TW"]);const Go=new Ki;class WG{constructor(e,n,r=Go){this.date=e,this.displayMonth=n,this.outside=!!(n&&!r.isSameMonth(e,n)),this.dateLib=r}isEqualTo(e){return this.dateLib.isSameDay(e.date,this.date)&&this.dateLib.isSameMonth(e.displayMonth,this.displayMonth)}}class G9e{constructor(e,n){this.date=e,this.weeks=n}}class X9e{constructor(e,n){this.days=n,this.weekNumber=e}}function Y9e(t){return ae.createElement("button",{...t})}function K9e(t){return ae.createElement("span",{...t})}function Z9e(t){const{size:e=24,orientation:n="left",className:r}=t;return ae.createElement("svg",{className:r,width:e,height:e,viewBox:"0 0 24 24"},n==="up"&&ae.createElement("polygon",{points:"6.77 17 12.5 11.43 18.24 17 20 15.28 12.5 8 5 15.28"}),n==="down"&&ae.createElement("polygon",{points:"6.77 8 12.5 13.57 18.24 8 20 9.72 12.5 17 5 9.72"}),n==="left"&&ae.createElement("polygon",{points:"16 18.112 9.81111111 12 16 5.87733333 14.0888889 4 6 12 14.0888889 20"}),n==="right"&&ae.createElement("polygon",{points:"8 18.112 14.18888889 12 8 5.87733333 9.91111111 4 18 12 9.91111111 20"}))}function J9e(t){const{day:e,modifiers:n,...r}=t;return ae.createElement("td",{...r})}function eEe(t){const{day:e,modifiers:n,...r}=t,s=ae.useRef(null);return ae.useEffect(()=>{n.focused&&s.current?.focus()},[n.focused]),ae.createElement("button",{ref:s,...r})}var jt;(function(t){t.Root="root",t.Chevron="chevron",t.Day="day",t.DayButton="day_button",t.CaptionLabel="caption_label",t.Dropdowns="dropdowns",t.Dropdown="dropdown",t.DropdownRoot="dropdown_root",t.Footer="footer",t.MonthGrid="month_grid",t.MonthCaption="month_caption",t.MonthsDropdown="months_dropdown",t.Month="month",t.Months="months",t.Nav="nav",t.NextMonthButton="button_next",t.PreviousMonthButton="button_previous",t.Week="week",t.Weeks="weeks",t.Weekday="weekday",t.Weekdays="weekdays",t.WeekNumber="week_number",t.WeekNumberHeader="week_number_header",t.YearsDropdown="years_dropdown"})(jt||(jt={}));var Mr;(function(t){t.disabled="disabled",t.hidden="hidden",t.outside="outside",t.focused="focused",t.today="today"})(Mr||(Mr={}));var Ua;(function(t){t.range_end="range_end",t.range_middle="range_middle",t.range_start="range_start",t.selected="selected"})(Ua||(Ua={}));var Hi;(function(t){t.weeks_before_enter="weeks_before_enter",t.weeks_before_exit="weeks_before_exit",t.weeks_after_enter="weeks_after_enter",t.weeks_after_exit="weeks_after_exit",t.caption_after_enter="caption_after_enter",t.caption_after_exit="caption_after_exit",t.caption_before_enter="caption_before_enter",t.caption_before_exit="caption_before_exit"})(Hi||(Hi={}));function tEe(t){const{options:e,className:n,components:r,classNames:s,...i}=t,a=[s[jt.Dropdown],n].join(" "),l=e?.find(({value:c})=>c===i.value);return ae.createElement("span",{"data-disabled":i.disabled,className:s[jt.DropdownRoot]},ae.createElement(r.Select,{className:a,...i},e?.map(({value:c,label:d,disabled:h})=>ae.createElement(r.Option,{key:c,value:c,disabled:h},d))),ae.createElement("span",{className:s[jt.CaptionLabel],"aria-hidden":!0},l?.label,ae.createElement(r.Chevron,{orientation:"down",size:18,className:s[jt.Chevron]})))}function nEe(t){return ae.createElement("div",{...t})}function rEe(t){return ae.createElement("div",{...t})}function sEe(t){const{calendarMonth:e,displayIndex:n,...r}=t;return ae.createElement("div",{...r},t.children)}function iEe(t){const{calendarMonth:e,displayIndex:n,...r}=t;return ae.createElement("div",{...r})}function aEe(t){return ae.createElement("table",{...t})}function oEe(t){return ae.createElement("div",{...t})}const GG=b.createContext(void 0);function vg(){const t=b.useContext(GG);if(t===void 0)throw new Error("useDayPicker() must be used within a custom component.");return t}function lEe(t){const{components:e}=vg();return ae.createElement(e.Dropdown,{...t})}function cEe(t){const{onPreviousClick:e,onNextClick:n,previousMonth:r,nextMonth:s,...i}=t,{components:a,classNames:l,labels:{labelPrevious:c,labelNext:d}}=vg(),h=b.useCallback(g=>{s&&n?.(g)},[s,n]),m=b.useCallback(g=>{r&&e?.(g)},[r,e]);return ae.createElement("nav",{...i},ae.createElement(a.PreviousMonthButton,{type:"button",className:l[jt.PreviousMonthButton],tabIndex:r?void 0:-1,"aria-disabled":r?void 0:!0,"aria-label":c(r),onClick:m},ae.createElement(a.Chevron,{disabled:r?void 0:!0,className:l[jt.Chevron],orientation:"left"})),ae.createElement(a.NextMonthButton,{type:"button",className:l[jt.NextMonthButton],tabIndex:s?void 0:-1,"aria-disabled":s?void 0:!0,"aria-label":d(s),onClick:h},ae.createElement(a.Chevron,{disabled:s?void 0:!0,orientation:"right",className:l[jt.Chevron]})))}function uEe(t){const{components:e}=vg();return ae.createElement(e.Button,{...t})}function dEe(t){return ae.createElement("option",{...t})}function hEe(t){const{components:e}=vg();return ae.createElement(e.Button,{...t})}function fEe(t){const{rootRef:e,...n}=t;return ae.createElement("div",{...n,ref:e})}function mEe(t){return ae.createElement("select",{...t})}function pEe(t){const{week:e,...n}=t;return ae.createElement("tr",{...n})}function gEe(t){return ae.createElement("th",{...t})}function xEe(t){return ae.createElement("thead",{"aria-hidden":!0},ae.createElement("tr",{...t}))}function vEe(t){const{week:e,...n}=t;return ae.createElement("th",{...n})}function yEe(t){return ae.createElement("th",{...t})}function bEe(t){return ae.createElement("tbody",{...t})}function wEe(t){const{components:e}=vg();return ae.createElement(e.Dropdown,{...t})}const SEe=Object.freeze(Object.defineProperty({__proto__:null,Button:Y9e,CaptionLabel:K9e,Chevron:Z9e,Day:J9e,DayButton:eEe,Dropdown:tEe,DropdownNav:nEe,Footer:rEe,Month:sEe,MonthCaption:iEe,MonthGrid:aEe,Months:oEe,MonthsDropdown:lEe,Nav:cEe,NextMonthButton:uEe,Option:dEe,PreviousMonthButton:hEe,Root:fEe,Select:mEe,Week:pEe,WeekNumber:vEe,WeekNumberHeader:yEe,Weekday:gEe,Weekdays:xEe,Weeks:bEe,YearsDropdown:wEe},Symbol.toStringTag,{value:"Module"}));function Rl(t,e,n=!1,r=Go){let{from:s,to:i}=t;const{differenceInCalendarDays:a,isSameDay:l}=r;return s&&i?(a(i,s)<0&&([s,i]=[i,s]),a(e,s)>=(n?1:0)&&a(i,e)>=(n?1:0)):!n&&i?l(i,e):!n&&s?l(s,e):!1}function XG(t){return!!(t&&typeof t=="object"&&"before"in t&&"after"in t)}function a7(t){return!!(t&&typeof t=="object"&&"from"in t)}function YG(t){return!!(t&&typeof t=="object"&&"after"in t)}function KG(t){return!!(t&&typeof t=="object"&&"before"in t)}function ZG(t){return!!(t&&typeof t=="object"&&"dayOfWeek"in t)}function JG(t,e){return Array.isArray(t)&&t.every(e.isDate)}function Dl(t,e,n=Go){const r=Array.isArray(e)?e:[e],{isSameDay:s,differenceInCalendarDays:i,isAfter:a}=n;return r.some(l=>{if(typeof l=="boolean")return l;if(n.isDate(l))return s(t,l);if(JG(l,n))return l.includes(t);if(a7(l))return Rl(l,t,!1,n);if(ZG(l))return Array.isArray(l.dayOfWeek)?l.dayOfWeek.includes(t.getDay()):l.dayOfWeek===t.getDay();if(XG(l)){const c=i(l.before,t),d=i(l.after,t),h=c>0,m=d<0;return a(l.before,l.after)?m&&h:h||m}return YG(l)?i(t,l.after)>0:KG(l)?i(l.before,t)>0:typeof l=="function"?l(t):!1})}function kEe(t,e,n,r,s){const{disabled:i,hidden:a,modifiers:l,showOutsideDays:c,broadcastCalendar:d,today:h}=e,{isSameDay:m,isSameMonth:g,startOfMonth:x,isBefore:y,endOfMonth:w,isAfter:S}=s,k=n&&x(n),j=r&&w(r),N={[Mr.focused]:[],[Mr.outside]:[],[Mr.disabled]:[],[Mr.hidden]:[],[Mr.today]:[]},T={};for(const E of t){const{date:_,displayMonth:M}=E,I=!!(M&&!g(_,M)),P=!!(k&&y(_,k)),L=!!(j&&S(_,j)),H=!!(i&&Dl(_,i,s)),U=!!(a&&Dl(_,a,s))||P||L||!d&&!c&&I||d&&c===!1&&I,ee=m(_,h??s.today());I&&N.outside.push(E),H&&N.disabled.push(E),U&&N.hidden.push(E),ee&&N.today.push(E),l&&Object.keys(l).forEach(z=>{const Q=l?.[z];Q&&Dl(_,Q,s)&&(T[z]?T[z].push(E):T[z]=[E])})}return E=>{const _={[Mr.focused]:!1,[Mr.disabled]:!1,[Mr.hidden]:!1,[Mr.outside]:!1,[Mr.today]:!1},M={};for(const I in N){const P=N[I];_[I]=P.some(L=>L===E)}for(const I in T)M[I]=T[I].some(P=>P===E);return{..._,...M}}}function OEe(t,e,n={}){return Object.entries(t).filter(([,s])=>s===!0).reduce((s,[i])=>(n[i]?s.push(n[i]):e[Mr[i]]?s.push(e[Mr[i]]):e[Ua[i]]&&s.push(e[Ua[i]]),s),[e[jt.Day]])}function jEe(t){return{...SEe,...t}}function NEe(t){const e={"data-mode":t.mode??void 0,"data-required":"required"in t?t.required:void 0,"data-multiple-months":t.numberOfMonths&&t.numberOfMonths>1||void 0,"data-week-numbers":t.showWeekNumber||void 0,"data-broadcast-calendar":t.broadcastCalendar||void 0,"data-nav-layout":t.navLayout||void 0};return Object.entries(t).forEach(([n,r])=>{n.startsWith("data-")&&(e[n]=r)}),e}function o7(){const t={};for(const e in jt)t[jt[e]]=`rdp-${jt[e]}`;for(const e in Mr)t[Mr[e]]=`rdp-${Mr[e]}`;for(const e in Ua)t[Ua[e]]=`rdp-${Ua[e]}`;for(const e in Hi)t[Hi[e]]=`rdp-${Hi[e]}`;return t}function eX(t,e,n){return(n??new Ki(e)).formatMonthYear(t)}const CEe=eX;function TEe(t,e,n){return(n??new Ki(e)).format(t,"d")}function EEe(t,e=Go){return e.format(t,"LLLL")}function _Ee(t,e,n){return(n??new Ki(e)).format(t,"cccccc")}function MEe(t,e=Go){return t<10?e.formatNumber(`0${t.toLocaleString()}`):e.formatNumber(`${t.toLocaleString()}`)}function AEe(){return""}function tX(t,e=Go){return e.format(t,"yyyy")}const REe=tX,DEe=Object.freeze(Object.defineProperty({__proto__:null,formatCaption:eX,formatDay:TEe,formatMonthCaption:CEe,formatMonthDropdown:EEe,formatWeekNumber:MEe,formatWeekNumberHeader:AEe,formatWeekdayName:_Ee,formatYearCaption:REe,formatYearDropdown:tX},Symbol.toStringTag,{value:"Module"}));function PEe(t){return t?.formatMonthCaption&&!t.formatCaption&&(t.formatCaption=t.formatMonthCaption),t?.formatYearCaption&&!t.formatYearDropdown&&(t.formatYearDropdown=t.formatYearCaption),{...DEe,...t}}function zEe(t,e,n,r,s){const{startOfMonth:i,startOfYear:a,endOfYear:l,eachMonthOfInterval:c,getMonth:d}=s;return c({start:a(t),end:l(t)}).map(g=>{const x=r.formatMonthDropdown(g,s),y=d(g),w=e&&gi(n)||!1;return{value:y,label:x,disabled:w}})}function IEe(t,e={},n={}){let r={...e?.[jt.Day]};return Object.entries(t).filter(([,s])=>s===!0).forEach(([s])=>{r={...r,...n?.[s]}}),r}function LEe(t,e,n){const r=t.today(),s=e?t.startOfISOWeek(r):t.startOfWeek(r),i=[];for(let a=0;a<7;a++){const l=t.addDays(s,a);i.push(l)}return i}function BEe(t,e,n,r,s=!1){if(!t||!e)return;const{startOfYear:i,endOfYear:a,eachYearOfInterval:l,getYear:c}=r,d=i(t),h=a(e),m=l({start:d,end:h});return s&&m.reverse(),m.map(g=>{const x=n.formatYearDropdown(g,r);return{value:c(g),label:x,disabled:!1}})}function nX(t,e,n,r){let s=(r??new Ki(n)).format(t,"PPPP");return e.today&&(s=`Today, ${s}`),e.selected&&(s=`${s}, selected`),s}const FEe=nX;function rX(t,e,n){return(n??new Ki(e)).formatMonthYear(t)}const qEe=rX;function $Ee(t,e,n,r){let s=(r??new Ki(n)).format(t,"PPPP");return e?.today&&(s=`Today, ${s}`),s}function HEe(t){return"Choose the Month"}function QEe(){return""}function VEe(t){return"Go to the Next Month"}function UEe(t){return"Go to the Previous Month"}function WEe(t,e,n){return(n??new Ki(e)).format(t,"cccc")}function GEe(t,e){return`Week ${t}`}function XEe(t){return"Week Number"}function YEe(t){return"Choose the Year"}const KEe=Object.freeze(Object.defineProperty({__proto__:null,labelCaption:qEe,labelDay:FEe,labelDayButton:nX,labelGrid:rX,labelGridcell:$Ee,labelMonthDropdown:HEe,labelNav:QEe,labelNext:VEe,labelPrevious:UEe,labelWeekNumber:GEe,labelWeekNumberHeader:XEe,labelWeekday:WEe,labelYearDropdown:YEe},Symbol.toStringTag,{value:"Module"})),yg=t=>t instanceof HTMLElement?t:null,Q3=t=>[...t.querySelectorAll("[data-animated-month]")??[]],ZEe=t=>yg(t.querySelector("[data-animated-month]")),V3=t=>yg(t.querySelector("[data-animated-caption]")),U3=t=>yg(t.querySelector("[data-animated-weeks]")),JEe=t=>yg(t.querySelector("[data-animated-nav]")),e_e=t=>yg(t.querySelector("[data-animated-weekdays]"));function t_e(t,e,{classNames:n,months:r,focused:s,dateLib:i}){const a=b.useRef(null),l=b.useRef(r),c=b.useRef(!1);b.useLayoutEffect(()=>{const d=l.current;if(l.current=r,!e||!t.current||!(t.current instanceof HTMLElement)||r.length===0||d.length===0||r.length!==d.length)return;const h=i.isSameMonth(r[0].date,d[0].date),m=i.isAfter(r[0].date,d[0].date),g=m?n[Hi.caption_after_enter]:n[Hi.caption_before_enter],x=m?n[Hi.weeks_after_enter]:n[Hi.weeks_before_enter],y=a.current,w=t.current.cloneNode(!0);if(w instanceof HTMLElement?(Q3(w).forEach(N=>{if(!(N instanceof HTMLElement))return;const T=ZEe(N);T&&N.contains(T)&&N.removeChild(T);const E=V3(N);E&&E.classList.remove(g);const _=U3(N);_&&_.classList.remove(x)}),a.current=w):a.current=null,c.current||h||s)return;const S=y instanceof HTMLElement?Q3(y):[],k=Q3(t.current);if(k?.every(j=>j instanceof HTMLElement)&&S&&S.every(j=>j instanceof HTMLElement)){c.current=!0,t.current.style.isolation="isolate";const j=JEe(t.current);j&&(j.style.zIndex="1"),k.forEach((N,T)=>{const E=S[T];if(!E)return;N.style.position="relative",N.style.overflow="hidden";const _=V3(N);_&&_.classList.add(g);const M=U3(N);M&&M.classList.add(x);const I=()=>{c.current=!1,t.current&&(t.current.style.isolation=""),j&&(j.style.zIndex=""),_&&_.classList.remove(g),M&&M.classList.remove(x),N.style.position="",N.style.overflow="",N.contains(E)&&N.removeChild(E)};E.style.pointerEvents="none",E.style.position="absolute",E.style.overflow="hidden",E.setAttribute("aria-hidden","true");const P=e_e(E);P&&(P.style.opacity="0");const L=V3(E);L&&(L.classList.add(m?n[Hi.caption_before_exit]:n[Hi.caption_after_exit]),L.addEventListener("animationend",I));const H=U3(E);H&&H.classList.add(m?n[Hi.weeks_before_exit]:n[Hi.weeks_after_exit]),N.insertBefore(E,N.firstChild)})}})}function n_e(t,e,n,r){const s=t[0],i=t[t.length-1],{ISOWeek:a,fixedWeeks:l,broadcastCalendar:c}=n??{},{addDays:d,differenceInCalendarDays:h,differenceInCalendarMonths:m,endOfBroadcastWeek:g,endOfISOWeek:x,endOfMonth:y,endOfWeek:w,isAfter:S,startOfBroadcastWeek:k,startOfISOWeek:j,startOfWeek:N}=r,T=c?k(s,r):a?j(s):N(s),E=c?g(i):a?x(y(i)):w(y(i)),_=h(E,T),M=m(i,s)+1,I=[];for(let H=0;H<=_;H++){const U=d(T,H);if(e&&S(U,e))break;I.push(U)}const L=(c?35:42)*M;if(l&&I.length{const s=r.weeks.reduce((i,a)=>i.concat(a.days.slice()),e.slice());return n.concat(s.slice())},e.slice())}function s_e(t,e,n,r){const{numberOfMonths:s=1}=n,i=[];for(let a=0;ae)break;i.push(l)}return i}function wz(t,e,n,r){const{month:s,defaultMonth:i,today:a=r.today(),numberOfMonths:l=1}=t;let c=s||i||a;const{differenceInCalendarMonths:d,addMonths:h,startOfMonth:m}=r;if(n&&d(n,c){const k=n.broadcastCalendar?m(S,r):n.ISOWeek?g(S):x(S),j=n.broadcastCalendar?i(S):n.ISOWeek?a(l(S)):c(l(S)),N=e.filter(M=>M>=k&&M<=j),T=n.broadcastCalendar?35:42;if(n.fixedWeeks&&N.length{const P=T-N.length;return I>j&&I<=s(j,P)});N.push(...M)}const E=N.reduce((M,I)=>{const P=n.ISOWeek?d(I):h(I),L=M.find(U=>U.weekNumber===P),H=new WG(I,S,r);return L?L.days.push(H):M.push(new X9e(P,[H])),M},[]),_=new G9e(S,E);return w.push(_),w},[]);return n.reverseMonths?y.reverse():y}function a_e(t,e){let{startMonth:n,endMonth:r}=t;const{startOfYear:s,startOfDay:i,startOfMonth:a,endOfMonth:l,addYears:c,endOfYear:d,newDate:h,today:m}=e,{fromYear:g,toYear:x,fromMonth:y,toMonth:w}=t;!n&&y&&(n=y),!n&&g&&(n=e.newDate(g,0,1)),!r&&w&&(r=w),!r&&x&&(r=h(x,11,31));const S=t.captionLayout==="dropdown"||t.captionLayout==="dropdown-years";return n?n=a(n):g?n=h(g,0,1):!n&&S&&(n=s(c(t.today??m(),-100))),r?r=l(r):x?r=h(x,11,31):!r&&S&&(r=d(t.today??m())),[n&&i(n),r&&i(r)]}function o_e(t,e,n,r){if(n.disableNavigation)return;const{pagedNavigation:s,numberOfMonths:i=1}=n,{startOfMonth:a,addMonths:l,differenceInCalendarMonths:c}=r,d=s?i:1,h=a(t);if(!e)return l(h,d);if(!(c(e,t)n.concat(r.weeks.slice()),e.slice())}function Yb(t,e){const[n,r]=b.useState(t);return[e===void 0?n:e,r]}function u_e(t,e){const[n,r]=a_e(t,e),{startOfMonth:s,endOfMonth:i}=e,a=wz(t,n,r,e),[l,c]=Yb(a,t.month?a:void 0);b.useEffect(()=>{const _=wz(t,n,r,e);c(_)},[t.timeZone]);const d=s_e(l,r,t,e),h=n_e(d,t.endMonth?i(t.endMonth):void 0,t,e),m=i_e(d,h,t,e),g=c_e(m),x=r_e(m),y=l_e(l,n,t,e),w=o_e(l,r,t,e),{disableNavigation:S,onMonthChange:k}=t,j=_=>g.some(M=>M.days.some(I=>I.isEqualTo(_))),N=_=>{if(S)return;let M=s(_);n&&Ms(r)&&(M=s(r)),c(M),k?.(M)};return{months:m,weeks:g,days:x,navStart:n,navEnd:r,previousMonth:y,nextMonth:w,goToMonth:N,goToDay:_=>{j(_)||N(_.date)}}}var xo;(function(t){t[t.Today=0]="Today",t[t.Selected=1]="Selected",t[t.LastFocused=2]="LastFocused",t[t.FocusedModifier=3]="FocusedModifier"})(xo||(xo={}));function Sz(t){return!t[Mr.disabled]&&!t[Mr.hidden]&&!t[Mr.outside]}function d_e(t,e,n,r){let s,i=-1;for(const a of t){const l=e(a);Sz(l)&&(l[Mr.focused]&&iSz(e(a)))),s}function h_e(t,e,n,r,s,i,a){const{ISOWeek:l,broadcastCalendar:c}=i,{addDays:d,addMonths:h,addWeeks:m,addYears:g,endOfBroadcastWeek:x,endOfISOWeek:y,endOfWeek:w,max:S,min:k,startOfBroadcastWeek:j,startOfISOWeek:N,startOfWeek:T}=a;let _={day:d,week:m,month:h,year:g,startOfWeek:M=>c?j(M,a):l?N(M):T(M),endOfWeek:M=>c?x(M):l?y(M):w(M)}[t](n,e==="after"?1:-1);return e==="before"&&r?_=S([r,_]):e==="after"&&s&&(_=k([s,_])),_}function sX(t,e,n,r,s,i,a,l=0){if(l>365)return;const c=h_e(t,e,n.date,r,s,i,a),d=!!(i.disabled&&Dl(c,i.disabled,a)),h=!!(i.hidden&&Dl(c,i.hidden,a)),m=c,g=new WG(c,m,a);return!d&&!h?g:sX(t,e,g,r,s,i,a,l+1)}function f_e(t,e,n,r,s){const{autoFocus:i}=t,[a,l]=b.useState(),c=d_e(e.days,n,r||(()=>!1),a),[d,h]=b.useState(i?c:void 0);return{isFocusTarget:w=>!!c?.isEqualTo(w),setFocused:h,focused:d,blur:()=>{l(d),h(void 0)},moveFocus:(w,S)=>{if(!d)return;const k=sX(w,S,d,e.navStart,e.navEnd,t,s);k&&(t.disableNavigation&&!e.days.some(N=>N.isEqualTo(k))||(e.goToDay(k),h(k)))}}}function m_e(t,e){const{selected:n,required:r,onSelect:s}=t,[i,a]=Yb(n,s?n:void 0),l=s?n:i,{isSameDay:c}=e,d=x=>l?.some(y=>c(y,x))??!1,{min:h,max:m}=t;return{selected:l,select:(x,y,w)=>{let S=[...l??[]];if(d(x)){if(l?.length===h||r&&l?.length===1)return;S=l?.filter(k=>!c(k,x))}else l?.length===m?S=[x]:S=[...S,x];return s||a(S),s?.(S,x,y,w),S},isSelected:d}}function p_e(t,e,n=0,r=0,s=!1,i=Go){const{from:a,to:l}=e||{},{isSameDay:c,isAfter:d,isBefore:h}=i;let m;if(!a&&!l)m={from:t,to:n>0?void 0:t};else if(a&&!l)c(a,t)?n===0?m={from:a,to:t}:s?m={from:a,to:void 0}:m=void 0:h(t,a)?m={from:t,to:a}:m={from:a,to:t};else if(a&&l)if(c(a,t)&&c(l,t))s?m={from:a,to:l}:m=void 0;else if(c(a,t))m={from:a,to:n>0?void 0:t};else if(c(l,t))m={from:t,to:n>0?void 0:t};else if(h(t,a))m={from:t,to:l};else if(d(t,a))m={from:a,to:t};else if(d(t,l))m={from:a,to:t};else throw new Error("Invalid range");if(m?.from&&m?.to){const g=i.differenceInCalendarDays(m.to,m.from);r>0&&g>r?m={from:t,to:void 0}:n>1&&gtypeof l!="function").some(l=>typeof l=="boolean"?l:n.isDate(l)?Rl(t,l,!1,n):JG(l,n)?l.some(c=>Rl(t,c,!1,n)):a7(l)?l.from&&l.to?kz(t,{from:l.from,to:l.to},n):!1:ZG(l)?g_e(t,l.dayOfWeek,n):XG(l)?n.isAfter(l.before,l.after)?kz(t,{from:n.addDays(l.after,1),to:n.addDays(l.before,-1)},n):Dl(t.from,l,n)||Dl(t.to,l,n):YG(l)||KG(l)?Dl(t.from,l,n)||Dl(t.to,l,n):!1))return!0;const a=r.filter(l=>typeof l=="function");if(a.length){let l=t.from;const c=n.differenceInCalendarDays(t.to,t.from);for(let d=0;d<=c;d++){if(a.some(h=>h(l)))return!0;l=n.addDays(l,1)}}return!1}function v_e(t,e){const{disabled:n,excludeDisabled:r,selected:s,required:i,onSelect:a}=t,[l,c]=Yb(s,a?s:void 0),d=a?s:l;return{selected:d,select:(g,x,y)=>{const{min:w,max:S}=t,k=g?p_e(g,d,w,S,i,e):void 0;return r&&n&&k?.from&&k.to&&x_e({from:k.from,to:k.to},n,e)&&(k.from=g,k.to=void 0),a||c(k),a?.(k,g,x,y),k},isSelected:g=>d&&Rl(d,g,!1,e)}}function y_e(t,e){const{selected:n,required:r,onSelect:s}=t,[i,a]=Yb(n,s?n:void 0),l=s?n:i,{isSameDay:c}=e;return{selected:l,select:(m,g,x)=>{let y=m;return!r&&l&&l&&c(m,l)&&(y=void 0),s||a(y),s?.(y,m,g,x),y},isSelected:m=>l?c(l,m):!1}}function b_e(t,e){const n=y_e(t,e),r=m_e(t,e),s=v_e(t,e);switch(t.mode){case"single":return n;case"multiple":return r;case"range":return s;default:return}}function w_e(t){let e=t;e.timeZone&&(e={...t},e.today&&(e.today=new Ls(e.today,e.timeZone)),e.month&&(e.month=new Ls(e.month,e.timeZone)),e.defaultMonth&&(e.defaultMonth=new Ls(e.defaultMonth,e.timeZone)),e.startMonth&&(e.startMonth=new Ls(e.startMonth,e.timeZone)),e.endMonth&&(e.endMonth=new Ls(e.endMonth,e.timeZone)),e.mode==="single"&&e.selected?e.selected=new Ls(e.selected,e.timeZone):e.mode==="multiple"&&e.selected?e.selected=e.selected?.map(Pe=>new Ls(Pe,e.timeZone)):e.mode==="range"&&e.selected&&(e.selected={from:e.selected.from?new Ls(e.selected.from,e.timeZone):void 0,to:e.selected.to?new Ls(e.selected.to,e.timeZone):void 0}));const{components:n,formatters:r,labels:s,dateLib:i,locale:a,classNames:l}=b.useMemo(()=>{const Pe={...i7,...e.locale};return{dateLib:new Ki({locale:Pe,weekStartsOn:e.broadcastCalendar?1:e.weekStartsOn,firstWeekContainsDate:e.firstWeekContainsDate,useAdditionalWeekYearTokens:e.useAdditionalWeekYearTokens,useAdditionalDayOfYearTokens:e.useAdditionalDayOfYearTokens,timeZone:e.timeZone,numerals:e.numerals},e.dateLib),components:jEe(e.components),formatters:PEe(e.formatters),labels:{...KEe,...e.labels},locale:Pe,classNames:{...o7(),...e.classNames}}},[e.locale,e.broadcastCalendar,e.weekStartsOn,e.firstWeekContainsDate,e.useAdditionalWeekYearTokens,e.useAdditionalDayOfYearTokens,e.timeZone,e.numerals,e.dateLib,e.components,e.formatters,e.labels,e.classNames]),{captionLayout:c,mode:d,navLayout:h,numberOfMonths:m=1,onDayBlur:g,onDayClick:x,onDayFocus:y,onDayKeyDown:w,onDayMouseEnter:S,onDayMouseLeave:k,onNextClick:j,onPrevClick:N,showWeekNumber:T,styles:E}=e,{formatCaption:_,formatDay:M,formatMonthDropdown:I,formatWeekNumber:P,formatWeekNumberHeader:L,formatWeekdayName:H,formatYearDropdown:U}=r,ee=u_e(e,i),{days:z,months:Q,navStart:B,navEnd:X,previousMonth:J,nextMonth:G,goToMonth:R}=ee,ie=kEe(z,e,B,X,i),{isSelected:W,select:q,selected:V}=b_e(e,i)??{},{blur:te,focused:ne,isFocusTarget:K,moveFocus:se,setFocused:re}=f_e(e,ee,ie,W??(()=>!1),i),{labelDayButton:oe,labelGridcell:Te,labelGrid:We,labelMonthDropdown:Ye,labelNav:Je,labelPrevious:Oe,labelNext:Ve,labelWeekday:Ue,labelWeekNumber:He,labelWeekNumberHeader:Ot,labelYearDropdown:xt}=s,kn=b.useMemo(()=>LEe(i,e.ISOWeek),[i,e.ISOWeek]),It=d!==void 0||x!==void 0,Yt=b.useCallback(()=>{J&&(R(J),N?.(J))},[J,R,N]),_t=b.useCallback(()=>{G&&(R(G),j?.(G))},[R,G,j]),mt=b.useCallback((Pe,it)=>ot=>{ot.preventDefault(),ot.stopPropagation(),re(Pe),q?.(Pe.date,it,ot),x?.(Pe.date,it,ot)},[q,x,re]),Ne=b.useCallback((Pe,it)=>ot=>{re(Pe),y?.(Pe.date,it,ot)},[y,re]),Ie=b.useCallback((Pe,it)=>ot=>{te(),g?.(Pe.date,it,ot)},[te,g]),st=b.useCallback((Pe,it)=>ot=>{const nn={ArrowLeft:[ot.shiftKey?"month":"day",e.dir==="rtl"?"after":"before"],ArrowRight:[ot.shiftKey?"month":"day",e.dir==="rtl"?"before":"after"],ArrowDown:[ot.shiftKey?"year":"week","after"],ArrowUp:[ot.shiftKey?"year":"week","before"],PageUp:[ot.shiftKey?"year":"month","before"],PageDown:[ot.shiftKey?"year":"month","after"],Home:["startOfWeek","before"],End:["endOfWeek","after"]};if(nn[ot.key]){ot.preventDefault(),ot.stopPropagation();const[Kt,pt]=nn[ot.key];se(Kt,pt)}w?.(Pe.date,it,ot)},[se,w,e.dir]),yt=b.useCallback((Pe,it)=>ot=>{S?.(Pe.date,it,ot)},[S]),Pt=b.useCallback((Pe,it)=>ot=>{k?.(Pe.date,it,ot)},[k]),At=b.useCallback(Pe=>it=>{const ot=Number(it.target.value),nn=i.setMonth(i.startOfMonth(Pe),ot);R(nn)},[i,R]),zn=b.useCallback(Pe=>it=>{const ot=Number(it.target.value),nn=i.setYear(i.startOfMonth(Pe),ot);R(nn)},[i,R]),{className:Fe,style:rt}=b.useMemo(()=>({className:[l[jt.Root],e.className].filter(Boolean).join(" "),style:{...E?.[jt.Root],...e.style}}),[l,e.className,e.style,E]),tn=NEe(e),Rt=b.useRef(null);t_e(Rt,!!e.animate,{classNames:l,months:Q,focused:ne,dateLib:i});const ke={dayPickerProps:e,selected:V,select:q,isSelected:W,months:Q,nextMonth:G,previousMonth:J,goToMonth:R,getModifiers:ie,components:n,classNames:l,styles:E,labels:s,formatters:r};return ae.createElement(GG.Provider,{value:ke},ae.createElement(n.Root,{rootRef:e.animate?Rt:void 0,className:Fe,style:rt,dir:e.dir,id:e.id,lang:e.lang,nonce:e.nonce,title:e.title,role:e.role,"aria-label":e["aria-label"],"aria-labelledby":e["aria-labelledby"],...tn},ae.createElement(n.Months,{className:l[jt.Months],style:E?.[jt.Months]},!e.hideNavigation&&!h&&ae.createElement(n.Nav,{"data-animated-nav":e.animate?"true":void 0,className:l[jt.Nav],style:E?.[jt.Nav],"aria-label":Je(),onPreviousClick:Yt,onNextClick:_t,previousMonth:J,nextMonth:G}),Q.map((Pe,it)=>ae.createElement(n.Month,{"data-animated-month":e.animate?"true":void 0,className:l[jt.Month],style:E?.[jt.Month],key:it,displayIndex:it,calendarMonth:Pe},h==="around"&&!e.hideNavigation&&it===0&&ae.createElement(n.PreviousMonthButton,{type:"button",className:l[jt.PreviousMonthButton],tabIndex:J?void 0:-1,"aria-disabled":J?void 0:!0,"aria-label":Oe(J),onClick:Yt,"data-animated-button":e.animate?"true":void 0},ae.createElement(n.Chevron,{disabled:J?void 0:!0,className:l[jt.Chevron],orientation:e.dir==="rtl"?"right":"left"})),ae.createElement(n.MonthCaption,{"data-animated-caption":e.animate?"true":void 0,className:l[jt.MonthCaption],style:E?.[jt.MonthCaption],calendarMonth:Pe,displayIndex:it},c?.startsWith("dropdown")?ae.createElement(n.DropdownNav,{className:l[jt.Dropdowns],style:E?.[jt.Dropdowns]},(()=>{const ot=c==="dropdown"||c==="dropdown-months"?ae.createElement(n.MonthsDropdown,{key:"month",className:l[jt.MonthsDropdown],"aria-label":Ye(),classNames:l,components:n,disabled:!!e.disableNavigation,onChange:At(Pe.date),options:zEe(Pe.date,B,X,r,i),style:E?.[jt.Dropdown],value:i.getMonth(Pe.date)}):ae.createElement("span",{key:"month"},I(Pe.date,i)),nn=c==="dropdown"||c==="dropdown-years"?ae.createElement(n.YearsDropdown,{key:"year",className:l[jt.YearsDropdown],"aria-label":xt(i.options),classNames:l,components:n,disabled:!!e.disableNavigation,onChange:zn(Pe.date),options:BEe(B,X,r,i,!!e.reverseYears),style:E?.[jt.Dropdown],value:i.getYear(Pe.date)}):ae.createElement("span",{key:"year"},U(Pe.date,i));return i.getMonthYearOrder()==="year-first"?[nn,ot]:[ot,nn]})(),ae.createElement("span",{role:"status","aria-live":"polite",style:{border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",width:"1px",whiteSpace:"nowrap",wordWrap:"normal"}},_(Pe.date,i.options,i))):ae.createElement(n.CaptionLabel,{className:l[jt.CaptionLabel],role:"status","aria-live":"polite"},_(Pe.date,i.options,i))),h==="around"&&!e.hideNavigation&&it===m-1&&ae.createElement(n.NextMonthButton,{type:"button",className:l[jt.NextMonthButton],tabIndex:G?void 0:-1,"aria-disabled":G?void 0:!0,"aria-label":Ve(G),onClick:_t,"data-animated-button":e.animate?"true":void 0},ae.createElement(n.Chevron,{disabled:G?void 0:!0,className:l[jt.Chevron],orientation:e.dir==="rtl"?"left":"right"})),it===m-1&&h==="after"&&!e.hideNavigation&&ae.createElement(n.Nav,{"data-animated-nav":e.animate?"true":void 0,className:l[jt.Nav],style:E?.[jt.Nav],"aria-label":Je(),onPreviousClick:Yt,onNextClick:_t,previousMonth:J,nextMonth:G}),ae.createElement(n.MonthGrid,{role:"grid","aria-multiselectable":d==="multiple"||d==="range","aria-label":We(Pe.date,i.options,i)||void 0,className:l[jt.MonthGrid],style:E?.[jt.MonthGrid]},!e.hideWeekdays&&ae.createElement(n.Weekdays,{"data-animated-weekdays":e.animate?"true":void 0,className:l[jt.Weekdays],style:E?.[jt.Weekdays]},T&&ae.createElement(n.WeekNumberHeader,{"aria-label":Ot(i.options),className:l[jt.WeekNumberHeader],style:E?.[jt.WeekNumberHeader],scope:"col"},L()),kn.map(ot=>ae.createElement(n.Weekday,{"aria-label":Ue(ot,i.options,i),className:l[jt.Weekday],key:String(ot),style:E?.[jt.Weekday],scope:"col"},H(ot,i.options,i)))),ae.createElement(n.Weeks,{"data-animated-weeks":e.animate?"true":void 0,className:l[jt.Weeks],style:E?.[jt.Weeks]},Pe.weeks.map(ot=>ae.createElement(n.Week,{className:l[jt.Week],key:ot.weekNumber,style:E?.[jt.Week],week:ot},T&&ae.createElement(n.WeekNumber,{week:ot,style:E?.[jt.WeekNumber],"aria-label":He(ot.weekNumber,{locale:a}),className:l[jt.WeekNumber],scope:"row",role:"rowheader"},P(ot.weekNumber,i)),ot.days.map(nn=>{const{date:Kt}=nn,pt=ie(nn);if(pt[Mr.focused]=!pt.hidden&&!!ne?.isEqualTo(nn),pt[Ua.selected]=W?.(Kt)||pt.selected,a7(V)){const{from:vr,to:In}=V;pt[Ua.range_start]=!!(vr&&In&&i.isSameDay(Kt,vr)),pt[Ua.range_end]=!!(vr&&In&&i.isSameDay(Kt,In)),pt[Ua.range_middle]=Rl(V,Kt,!0,i)}const xr=IEe(pt,E,e.modifiersStyles),Ur=OEe(pt,l,e.modifiersClassNames),Wr=!It&&!pt.hidden?Te(Kt,pt,i.options,i):void 0;return ae.createElement(n.Day,{key:`${i.format(Kt,"yyyy-MM-dd")}_${i.format(nn.displayMonth,"yyyy-MM")}`,day:nn,modifiers:pt,className:Ur.join(" "),style:xr,role:"gridcell","aria-selected":pt.selected||void 0,"aria-label":Wr,"data-day":i.format(Kt,"yyyy-MM-dd"),"data-month":nn.outside?i.format(Kt,"yyyy-MM"):void 0,"data-selected":pt.selected||void 0,"data-disabled":pt.disabled||void 0,"data-hidden":pt.hidden||void 0,"data-outside":nn.outside||void 0,"data-focused":pt.focused||void 0,"data-today":pt.today||void 0},!pt.hidden&&It?ae.createElement(n.DayButton,{className:l[jt.DayButton],style:E?.[jt.DayButton],type:"button",day:nn,modifiers:pt,disabled:pt.disabled||void 0,tabIndex:K(nn)?0:-1,"aria-label":oe(Kt,pt,i.options,i),onClick:mt(nn,pt),onBlur:Ie(nn,pt),onFocus:Ne(nn,pt),onKeyDown:st(nn,pt),onMouseEnter:yt(nn,pt),onMouseLeave:Pt(nn,pt)},M(Kt,i.options,i)):!pt.hidden&&M(nn.date,i.options,i))})))))))),e.footer&&ae.createElement(n.Footer,{className:l[jt.Footer],style:E?.[jt.Footer],role:"status","aria-live":"polite"},e.footer)))}function Oz({className:t,classNames:e,showOutsideDays:n=!0,captionLayout:r="label",buttonVariant:s="ghost",formatters:i,components:a,...l}){const c=o7();return o.jsx(w_e,{showOutsideDays:n,className:ve("bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,t),captionLayout:r,formatters:{formatMonthDropdown:d=>d.toLocaleString("default",{month:"short"}),...i},classNames:{root:ve("w-fit",c.root),months:ve("relative flex flex-col gap-4 md:flex-row",c.months),month:ve("flex w-full flex-col gap-4",c.month),nav:ve("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",c.nav),button_previous:ve(D0({variant:s}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",c.button_previous),button_next:ve(D0({variant:s}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",c.button_next),month_caption:ve("flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]",c.month_caption),dropdowns:ve("flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium",c.dropdowns),dropdown_root:ve("has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border",c.dropdown_root),dropdown:ve("bg-popover absolute inset-0 opacity-0",c.dropdown),caption_label:ve("select-none font-medium",r==="label"?"text-sm":"[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5",c.caption_label),table:"w-full border-collapse",weekdays:ve("flex",c.weekdays),weekday:ve("text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal",c.weekday),week:ve("mt-2 flex w-full",c.week),week_number_header:ve("w-[--cell-size] select-none",c.week_number_header),week_number:ve("text-muted-foreground select-none text-[0.8rem]",c.week_number),day:ve("group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md",c.day),range_start:ve("bg-accent rounded-l-md",c.range_start),range_middle:ve("rounded-none",c.range_middle),range_end:ve("bg-accent rounded-r-md",c.range_end),today:ve("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",c.today),outside:ve("text-muted-foreground aria-selected:text-muted-foreground",c.outside),disabled:ve("text-muted-foreground opacity-50",c.disabled),hidden:ve("invisible",c.hidden),...e},components:{Root:({className:d,rootRef:h,...m})=>o.jsx("div",{"data-slot":"calendar",ref:h,className:ve(d),...m}),Chevron:({className:d,orientation:h,...m})=>h==="left"?o.jsx(vd,{className:ve("size-4",d),...m}):h==="right"?o.jsx(yd,{className:ve("size-4",d),...m}):o.jsx(nd,{className:ve("size-4",d),...m}),DayButton:S_e,WeekNumber:({children:d,...h})=>o.jsx("td",{...h,children:o.jsx("div",{className:"flex size-[--cell-size] items-center justify-center text-center",children:d})}),...a},...l})}function S_e({className:t,day:e,modifiers:n,...r}){const s=o7(),i=b.useRef(null);return b.useEffect(()=>{n.focused&&i.current?.focus()},[n.focused]),o.jsx(he,{ref:i,variant:"ghost",size:"icon","data-day":e.date.toLocaleDateString(),"data-selected-single":n.selected&&!n.range_start&&!n.range_end&&!n.range_middle,"data-range-start":n.range_start,"data-range-end":n.range_end,"data-range-middle":n.range_middle,className:ve("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70",s.day,t),...r})}class k_e{ws=null;reconnectTimeout=null;reconnectAttempts=0;maxReconnectAttempts=10;heartbeatInterval=null;logCallbacks=new Set;connectionCallbacks=new Set;isConnected=!1;logCache=[];maxCacheSize=1e3;getWebSocketUrl(){{const e=window.location.protocol==="https:"?"wss:":"ws:",n=window.location.host;return`${e}//${n}/ws/logs`}}connect(){if(this.ws?.readyState===WebSocket.OPEN||this.ws?.readyState===WebSocket.CONNECTING)return;const e=this.getWebSocketUrl();try{this.ws=new WebSocket(e),this.ws.onopen=()=>{this.isConnected=!0,this.reconnectAttempts=0,this.notifyConnection(!0),this.startHeartbeat()},this.ws.onmessage=n=>{try{if(n.data==="pong")return;const r=JSON.parse(n.data);this.notifyLog(r)}catch(r){console.error("解析日志消息失败:",r)}},this.ws.onerror=n=>{console.error("❌ WebSocket 错误:",n),this.isConnected=!1,this.notifyConnection(!1)},this.ws.onclose=()=>{this.isConnected=!1,this.notifyConnection(!1),this.stopHeartbeat(),this.attemptReconnect()}}catch(n){console.error("创建 WebSocket 连接失败:",n),this.attemptReconnect()}}attemptReconnect(){if(this.reconnectAttempts>=this.maxReconnectAttempts)return;this.reconnectAttempts+=1;const e=Math.min(1e3*this.reconnectAttempts,1e4);this.reconnectTimeout=window.setTimeout(()=>{this.connect()},e)}startHeartbeat(){this.heartbeatInterval=window.setInterval(()=>{this.ws?.readyState===WebSocket.OPEN&&this.ws.send("ping")},3e4)}stopHeartbeat(){this.heartbeatInterval!==null&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}disconnect(){this.reconnectTimeout!==null&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.stopHeartbeat(),this.ws&&(this.ws.close(),this.ws=null),this.isConnected=!1,this.reconnectAttempts=0}onLog(e){return this.logCallbacks.add(e),()=>this.logCallbacks.delete(e)}onConnectionChange(e){return this.connectionCallbacks.add(e),e(this.isConnected),()=>this.connectionCallbacks.delete(e)}notifyLog(e){this.logCache.some(r=>r.id===e.id)||(this.logCache.push(e),this.logCache.length>this.maxCacheSize&&(this.logCache=this.logCache.slice(-this.maxCacheSize)),this.logCallbacks.forEach(r=>{try{r(e)}catch(s){console.error("日志回调执行失败:",s)}}))}notifyConnection(e){this.connectionCallbacks.forEach(n=>{try{n(e)}catch(r){console.error("连接状态回调执行失败:",r)}})}getAllLogs(){return[...this.logCache]}clearLogs(){this.logCache=[]}getConnectionStatus(){return this.isConnected}}const Oh=new k_e;typeof window<"u"&&Oh.connect();const O_e={lessThanXSeconds:{one:"不到 1 秒",other:"不到 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分钟",lessThanXMinutes:{one:"不到 1 分钟",other:"不到 {{count}} 分钟"},xMinutes:{one:"1 分钟",other:"{{count}} 分钟"},xHours:{one:"1 小时",other:"{{count}} 小时"},aboutXHours:{one:"大约 1 小时",other:"大约 {{count}} 小时"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大约 1 个星期",other:"大约 {{count}} 个星期"},xWeeks:{one:"1 个星期",other:"{{count}} 个星期"},aboutXMonths:{one:"大约 1 个月",other:"大约 {{count}} 个月"},xMonths:{one:"1 个月",other:"{{count}} 个月"},aboutXYears:{one:"大约 1 年",other:"大约 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超过 1 年",other:"超过 {{count}} 年"},almostXYears:{one:"将近 1 年",other:"将近 {{count}} 年"}},j_e=(t,e,n)=>{let r;const s=O_e[t];return typeof s=="string"?r=s:e===1?r=s.one:r=s.other.replace("{{count}}",String(e)),n?.addSuffix?n.comparison&&n.comparison>0?r+"内":r+"前":r},N_e={full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},C_e={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},T_e={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},E_e={date:Vh({formats:N_e,defaultWidth:"full"}),time:Vh({formats:C_e,defaultWidth:"full"}),dateTime:Vh({formats:T_e,defaultWidth:"full"})};function jz(t,e,n){const r="eeee p";return F9e(t,e,n)?r:t.getTime()>e.getTime()?"'下个'"+r:"'上个'"+r}const __e={lastWeek:jz,yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:jz,other:"PP p"},M_e=(t,e,n,r)=>{const s=__e[t];return typeof s=="function"?s(e,n,r):s},A_e={narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},R_e={narrow:["1","2","3","4"],abbreviated:["第一季","第二季","第三季","第四季"],wide:["第一季度","第二季度","第三季度","第四季度"]},D_e={narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},P_e={narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["周日","周一","周二","周三","周四","周五","周六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},z_e={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},I_e={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},L_e=(t,e)=>{const n=Number(t);switch(e?.unit){case"date":return n.toString()+"日";case"hour":return n.toString()+"时";case"minute":return n.toString()+"分";case"second":return n.toString()+"秒";default:return"第 "+n.toString()}},B_e={ordinalNumber:L_e,era:ko({values:A_e,defaultWidth:"wide"}),quarter:ko({values:R_e,defaultWidth:"wide",argumentCallback:t=>t-1}),month:ko({values:D_e,defaultWidth:"wide"}),day:ko({values:P_e,defaultWidth:"wide"}),dayPeriod:ko({values:z_e,defaultWidth:"wide",formattingValues:I_e,defaultFormattingWidth:"wide"})},F_e=/^(第\s*)?\d+(日|时|分|秒)?/i,q_e=/\d+/i,$_e={narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},H_e={any:[/^(前)/i,/^(公元)/i]},Q_e={narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻钟/i},V_e={any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},U_e={narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},W_e={narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},G_e={narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^周[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},X_e={any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},Y_e={any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i},K_e={any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},Z_e={ordinalNumber:qG({matchPattern:F_e,parsePattern:q_e,valueCallback:t=>parseInt(t,10)}),era:Oo({matchPatterns:$_e,defaultMatchWidth:"wide",parsePatterns:H_e,defaultParseWidth:"any"}),quarter:Oo({matchPatterns:Q_e,defaultMatchWidth:"wide",parsePatterns:V_e,defaultParseWidth:"any",valueCallback:t=>t+1}),month:Oo({matchPatterns:U_e,defaultMatchWidth:"wide",parsePatterns:W_e,defaultParseWidth:"any"}),day:Oo({matchPatterns:G_e,defaultMatchWidth:"wide",parsePatterns:X_e,defaultParseWidth:"any"}),dayPeriod:Oo({matchPatterns:Y_e,defaultMatchWidth:"any",parsePatterns:K_e,defaultParseWidth:"any"})},Q1={code:"zh-CN",formatDistance:j_e,formatLong:E_e,formatRelative:M_e,localize:B_e,match:Z_e,options:{weekStartsOn:1,firstWeekContainsDate:4}},V1={xs:{label:"小",rowHeight:28,class:"text-[10px] sm:text-xs"},sm:{label:"中",rowHeight:36,class:"text-xs sm:text-sm"},base:{label:"大",rowHeight:44,class:"text-sm sm:text-base"}};function J_e(){const[t,e]=b.useState([]),[n,r]=b.useState(""),[s,i]=b.useState("all"),[a,l]=b.useState("all"),[c,d]=b.useState(void 0),[h,m]=b.useState(void 0),[g,x]=b.useState(!0),[y,w]=b.useState(!1),[S,k]=b.useState("xs"),[j,N]=b.useState(4),T=b.useRef(null);b.useEffect(()=>{const B=Oh.getAllLogs();e(B);const X=Oh.onLog(()=>{e(Oh.getAllLogs())}),J=Oh.onConnectionChange(G=>{w(G)});return()=>{X(),J()}},[]);const E=b.useMemo(()=>{const B=new Set(t.map(X=>X.module));return Array.from(B).sort()},[t]),_=B=>{switch(B){case"DEBUG":return"text-muted-foreground";case"INFO":return"text-blue-500 dark:text-blue-400";case"WARNING":return"text-yellow-600 dark:text-yellow-500";case"ERROR":return"text-red-600 dark:text-red-500";case"CRITICAL":return"text-red-700 dark:text-red-400 font-bold";default:return"text-foreground"}},M=B=>{switch(B){case"DEBUG":return"bg-gray-800/30 dark:bg-gray-800/50";case"INFO":return"bg-blue-900/20 dark:bg-blue-500/20";case"WARNING":return"bg-yellow-900/20 dark:bg-yellow-500/20";case"ERROR":return"bg-red-900/20 dark:bg-red-500/20";case"CRITICAL":return"bg-red-900/30 dark:bg-red-600/30";default:return"bg-gray-800/20 dark:bg-gray-800/30"}},I=()=>{window.location.reload()},P=()=>{Oh.clearLogs(),e([])},L=()=>{const B=ee.map(R=>`${R.timestamp} [${R.level.padEnd(8)}] [${R.module}] ${R.message}`).join(` -`),X=new Blob([B],{type:"text/plain;charset=utf-8"}),J=URL.createObjectURL(X),G=document.createElement("a");G.href=J,G.download=`logs-${Cv(new Date,"yyyy-MM-dd-HHmmss")}.txt`,G.click(),URL.revokeObjectURL(J)},H=()=>{x(!g)},U=()=>{d(void 0),m(void 0)},ee=b.useMemo(()=>t.filter(B=>{const X=n===""||B.message.toLowerCase().includes(n.toLowerCase())||B.module.toLowerCase().includes(n.toLowerCase()),J=s==="all"||B.level===s,G=a==="all"||B.module===a;let R=!0;if(c||h){const ie=new Date(B.timestamp);if(c){const W=new Date(c);W.setHours(0,0,0,0),R=R&&ie>=W}if(h){const W=new Date(h);W.setHours(23,59,59,999),R=R&&ie<=W}}return X&&J&&G&&R}),[t,n,s,a,c,h]),z=V1[S].rowHeight+j,Q=bTe({count:ee.length,getScrollElement:()=>T.current,estimateSize:()=>z,overscan:15});return b.useEffect(()=>{g&&ee.length>0&&Q.scrollToIndex(ee.length-1,{align:"end",behavior:"auto"})},[ee.length,g,Q]),o.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[o.jsxs("div",{className:"flex-shrink-0 space-y-4 p-3 sm:p-4 lg:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-3",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-xl sm:text-2xl lg:text-3xl font-bold",children:"日志查看器"}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:"实时查看和分析麦麦运行日志"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("div",{className:ve("h-2.5 w-2.5 sm:h-3 sm:w-3 rounded-full",y?"bg-green-500 animate-pulse":"bg-red-500")}),o.jsx("span",{className:"text-xs sm:text-sm text-muted-foreground",children:y?"已连接":"未连接"})]})]}),o.jsx(qt,{className:"p-3 sm:p-4",children:o.jsxs("div",{className:"flex flex-col gap-3 sm:gap-4",children:[o.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:gap-4",children:[o.jsxs("div",{className:"flex-1 relative",children:[o.jsx(Ni,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(ze,{placeholder:"搜索日志...",value:n,onChange:B=>r(B.target.value),className:"pl-9 h-9 text-sm"})]}),o.jsxs(Vt,{value:s,onValueChange:i,children:[o.jsxs($t,{className:"w-full sm:w-[140px] lg:w-[180px] h-9 text-sm",children:[o.jsx(Z3,{className:"h-4 w-4 mr-2"}),o.jsx(Ut,{placeholder:"级别"})]}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部级别"}),o.jsx(De,{value:"DEBUG",children:"DEBUG"}),o.jsx(De,{value:"INFO",children:"INFO"}),o.jsx(De,{value:"WARNING",children:"WARNING"}),o.jsx(De,{value:"ERROR",children:"ERROR"}),o.jsx(De,{value:"CRITICAL",children:"CRITICAL"})]})]}),o.jsxs(Vt,{value:a,onValueChange:l,children:[o.jsxs($t,{className:"w-full sm:w-[160px] lg:w-[200px] h-9 text-sm",children:[o.jsx(Z3,{className:"h-4 w-4 mr-2"}),o.jsx(Ut,{placeholder:"模块"})]}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部模块"}),E.map(B=>o.jsx(De,{value:B,children:B},B))]})]})]}),o.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:gap-4",children:[o.jsxs(Po,{children:[o.jsx(zo,{asChild:!0,children:o.jsxs(he,{variant:"outline",size:"sm",className:ve("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!c&&"text-muted-foreground"),children:[o.jsx(p9,{className:"mr-2 h-4 w-4"}),o.jsx("span",{className:"text-xs sm:text-sm",children:c?Cv(c,"PPP",{locale:Q1}):"开始日期"})]})}),o.jsx(Xa,{className:"w-auto p-0",align:"start",children:o.jsx(Oz,{mode:"single",selected:c,onSelect:d,initialFocus:!0,locale:Q1})})]}),o.jsxs(Po,{children:[o.jsx(zo,{asChild:!0,children:o.jsxs(he,{variant:"outline",size:"sm",className:ve("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!h&&"text-muted-foreground"),children:[o.jsx(p9,{className:"mr-2 h-4 w-4"}),o.jsx("span",{className:"text-xs sm:text-sm",children:h?Cv(h,"PPP",{locale:Q1}):"结束日期"})]})}),o.jsx(Xa,{className:"w-auto p-0",align:"start",children:o.jsx(Oz,{mode:"single",selected:h,onSelect:m,initialFocus:!0,locale:Q1})})]}),(c||h)&&o.jsxs(he,{variant:"outline",size:"sm",onClick:U,className:"w-full sm:w-auto h-9",children:[o.jsx(Tp,{className:"h-4 w-4 sm:mr-2"}),o.jsx("span",{className:"hidden sm:inline text-sm",children:"清除时间筛选"}),o.jsx("span",{className:"sm:hidden text-sm",children:"清除"})]})]}),o.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center",children:[o.jsxs("div",{className:"flex gap-2 flex-wrap",children:[o.jsxs(he,{variant:g?"default":"outline",size:"sm",onClick:H,className:"flex-1 sm:flex-none h-9",children:[g?o.jsx(Fee,{className:"h-4 w-4"}):o.jsx(qee,{className:"h-4 w-4"}),o.jsx("span",{className:"ml-2 text-sm",children:g?"自动滚动":"已暂停"})]}),o.jsxs(he,{variant:"outline",size:"sm",onClick:I,className:"flex-1 sm:flex-none h-9",children:[o.jsx(Qs,{className:"h-4 w-4"}),o.jsx("span",{className:"ml-2 text-sm",children:"刷新"})]}),o.jsxs(he,{variant:"outline",size:"sm",onClick:P,className:"flex-1 sm:flex-none h-9",children:[o.jsx(Sn,{className:"h-4 w-4"}),o.jsx("span",{className:"ml-2 text-sm",children:"清空"})]}),o.jsxs(he,{variant:"outline",size:"sm",onClick:L,className:"flex-1 sm:flex-none h-9",children:[o.jsx(Ku,{className:"h-4 w-4"}),o.jsx("span",{className:"ml-2 text-sm",children:"导出"})]})]}),o.jsx("div",{className:"flex-1 hidden sm:block"}),o.jsxs("div",{className:"text-xs sm:text-sm text-muted-foreground flex items-center justify-center sm:justify-end",children:[o.jsxs("span",{className:"font-mono",children:[ee.length," / ",t.length]}),o.jsx("span",{className:"ml-1",children:"条日志"})]})]}),o.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-6 pt-2 border-t border-border/50",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[o.jsx($ee,{className:"h-4 w-4"}),o.jsx("span",{children:"字号"})]}),o.jsx("div",{className:"flex gap-1",children:Object.keys(V1).map(B=>o.jsx(he,{variant:S===B?"default":"outline",size:"sm",onClick:()=>k(B),className:"h-7 px-3 text-xs",children:V1[B].label},B))})]}),o.jsxs("div",{className:"flex items-center gap-3 flex-1 max-w-xs",children:[o.jsx("span",{className:"text-sm text-muted-foreground whitespace-nowrap",children:"行距"}),o.jsx(Ip,{value:[j],onValueChange:([B])=>N(B),min:0,max:12,step:2,className:"flex-1"}),o.jsxs("span",{className:"text-xs text-muted-foreground w-8",children:[j,"px"]})]})]})]})})]}),o.jsx("div",{className:"flex-1 min-h-0 px-3 sm:px-4 lg:px-6 pb-3 sm:pb-4 lg:pb-6",children:o.jsx(qt,{className:"bg-black dark:bg-gray-950 border-gray-800 dark:border-gray-900 h-full",children:o.jsx(wn,{viewportRef:T,className:"h-full",children:o.jsx("div",{className:ve("p-2 sm:p-3 font-mono relative",V1[S].class),style:{height:`${Q.getTotalSize()}px`},children:ee.length===0?o.jsx("div",{className:"text-gray-500 dark:text-gray-600 text-center py-8 text-sm",children:"暂无日志数据"}):Q.getVirtualItems().map(B=>{const X=ee[B.index];return o.jsxs("div",{"data-index":B.index,ref:Q.measureElement,className:ve("absolute top-0 left-0 w-full px-2 sm:px-3 rounded hover:bg-white/5 transition-colors group",M(X.level)),style:{transform:`translateY(${B.start}px)`,paddingTop:`${j/2}px`,paddingBottom:`${j/2}px`},children:[o.jsxs("div",{className:"flex flex-col gap-0.5 sm:hidden",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"text-gray-500 dark:text-gray-600",children:X.timestamp}),o.jsxs("span",{className:ve("font-semibold",_(X.level)),children:["[",X.level,"]"]})]}),o.jsx("div",{className:"text-cyan-400 dark:text-cyan-500 truncate",children:X.module}),o.jsx("div",{className:"text-gray-300 dark:text-gray-400 whitespace-pre-wrap break-words",children:X.message})]}),o.jsxs("div",{className:"hidden sm:flex gap-2 items-start",children:[o.jsx("span",{className:"text-gray-500 dark:text-gray-600 flex-shrink-0 w-[130px] lg:w-[160px]",children:X.timestamp}),o.jsxs("span",{className:ve("flex-shrink-0 w-[65px] lg:w-[75px] font-semibold",_(X.level)),children:["[",X.level,"]"]}),o.jsx("span",{className:"text-cyan-400 dark:text-cyan-500 flex-shrink-0 w-[100px] lg:w-[130px] truncate",children:X.module}),o.jsx("span",{className:"text-gray-300 dark:text-gray-400 flex-1 whitespace-pre-wrap break-words",children:X.message})]})]},B.key)})})})})})]})}const eMe="Mai-with-u",tMe="plugin-repo",nMe="main",rMe="plugin_details.json";async function sMe(){try{const t=await St("/api/webui/plugins/fetch-raw",{method:"POST",headers:Dt(),body:JSON.stringify({owner:eMe,repo:tMe,branch:nMe,file_path:rMe})});if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);const e=await t.json();if(!e.success||!e.data)throw new Error(e.error||"获取插件列表失败");return JSON.parse(e.data).filter(s=>!s?.id||!s?.manifest?(console.warn("跳过无效插件数据:",s),!1):!s.manifest.name||!s.manifest.version?(console.warn("跳过缺少必需字段的插件:",s.id),!1):!0).map(s=>({id:s.id,manifest:{manifest_version:s.manifest.manifest_version||1,name:s.manifest.name,version:s.manifest.version,description:s.manifest.description||"",author:s.manifest.author||{name:"Unknown"},license:s.manifest.license||"Unknown",host_application:s.manifest.host_application||{min_version:"0.0.0"},homepage_url:s.manifest.homepage_url,repository_url:s.manifest.repository_url,keywords:s.manifest.keywords||[],categories:s.manifest.categories||[],default_locale:s.manifest.default_locale||"zh-CN",locales_path:s.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!1,published_at:new Date().toISOString(),updated_at:new Date().toISOString()}))}catch(t){throw console.error("Failed to fetch plugin list:",t),t}}async function iMe(){try{const t=await St("/api/webui/plugins/git-status");if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);return await t.json()}catch(t){return console.error("Failed to check Git status:",t),{installed:!1,error:"无法检测 Git 安装状态"}}}async function aMe(){try{const t=await St("/api/webui/plugins/version");if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);return await t.json()}catch(t){return console.error("Failed to get Maimai version:",t),{version:"0.0.0",version_major:0,version_minor:0,version_patch:0}}}function oMe(t,e,n){const r=t.split(".").map(l=>parseInt(l)||0),s=r[0]||0,i=r[1]||0,a=r[2]||0;if(n.version_majorparseInt(m)||0),c=l[0]||0,d=l[1]||0,h=l[2]||0;if(n.version_major>c||n.version_major===c&&n.version_minor>d||n.version_major===c&&n.version_minor===d&&n.version_patch>h)return!1}return!0}function lMe(t,e){const n=window.location.protocol==="https:"?"wss:":"ws:",r=window.location.host,s=new WebSocket(`${n}//${r}/api/webui/ws/plugin-progress`);return s.onopen=()=>{console.log("Plugin progress WebSocket connected");const i=setInterval(()=>{s.readyState===WebSocket.OPEN?s.send("ping"):clearInterval(i)},3e4)},s.onmessage=i=>{try{if(i.data==="pong")return;const a=JSON.parse(i.data);t(a)}catch(a){console.error("Failed to parse progress data:",a)}},s.onerror=i=>{console.error("Plugin progress WebSocket error:",i),e?.(i)},s.onclose=()=>{console.log("Plugin progress WebSocket disconnected")},s}async function U1(){try{const t=await St("/api/webui/plugins/installed",{headers:Dt()});if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);const e=await t.json();if(!e.success)throw new Error(e.message||"获取已安装插件列表失败");return e.plugins||[]}catch(t){return console.error("Failed to get installed plugins:",t),[]}}function W1(t,e){return e.some(n=>n.id===t)}function G1(t,e){const n=e.find(r=>r.id===t);if(n)return n.manifest?.version||n.version}async function cMe(t,e,n="main"){const r=await St("/api/webui/plugins/install",{method:"POST",headers:Dt(),body:JSON.stringify({plugin_id:t,repository_url:e,branch:n})});if(!r.ok){const s=await r.json();throw new Error(s.detail||"安装失败")}return await r.json()}async function uMe(t){const e=await St("/api/webui/plugins/uninstall",{method:"POST",headers:Dt(),body:JSON.stringify({plugin_id:t})});if(!e.ok){const n=await e.json();throw new Error(n.detail||"卸载失败")}return await e.json()}async function dMe(t,e,n="main"){const r=await St("/api/webui/plugins/update",{method:"POST",headers:Dt(),body:JSON.stringify({plugin_id:t,repository_url:e,branch:n})});if(!r.ok){const s=await r.json();throw new Error(s.detail||"更新失败")}return await r.json()}const bg="https://maibot-plugin-stats.maibot-webui.workers.dev";async function iX(t){try{const e=await fetch(`${bg}/stats/${t}`);return e.ok?await e.json():(console.error("Failed to fetch plugin stats:",e.statusText),null)}catch(e){return console.error("Error fetching plugin stats:",e),null}}async function hMe(t,e){try{const n=e||l7(),r=await fetch(`${bg}/stats/like`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t,user_id:n})}),s=await r.json();return r.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:r.ok?{success:!0,...s}:{success:!1,error:s.error||"点赞失败"}}catch(n){return console.error("Error liking plugin:",n),{success:!1,error:"网络错误"}}}async function fMe(t,e){try{const n=e||l7(),r=await fetch(`${bg}/stats/dislike`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t,user_id:n})}),s=await r.json();return r.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:r.ok?{success:!0,...s}:{success:!1,error:s.error||"点踩失败"}}catch(n){return console.error("Error disliking plugin:",n),{success:!1,error:"网络错误"}}}async function mMe(t,e,n,r){if(e<1||e>5)return{success:!1,error:"评分必须在 1-5 之间"};try{const s=r||l7(),i=await fetch(`${bg}/stats/rate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t,rating:e,comment:n,user_id:s})}),a=await i.json();return i.status===429?{success:!1,error:"每天最多评分 3 次"}:i.ok?{success:!0,...a}:{success:!1,error:a.error||"评分失败"}}catch(s){return console.error("Error rating plugin:",s),{success:!1,error:"网络错误"}}}async function pMe(t){try{const e=await fetch(`${bg}/stats/download`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t})}),n=await e.json();return e.status===429?(console.warn("Download recording rate limited"),{success:!0}):e.ok?{success:!0,...n}:(console.error("Failed to record download:",n.error),{success:!1,error:n.error})}catch(e){return console.error("Error recording download:",e),{success:!1,error:"网络错误"}}}function gMe(){const t=navigator,e=[navigator.userAgent,navigator.language,navigator.languages?.join(",")||"",navigator.platform,navigator.hardwareConcurrency||0,screen.width,screen.height,screen.colorDepth,screen.pixelDepth,new Date().getTimezoneOffset(),Intl.DateTimeFormat().resolvedOptions().timeZone,navigator.maxTouchPoints||0,t.deviceMemory||0].join("|");let n=0;for(let r=0;r{i(!0);const k=await iX(t);k&&r(k),i(!1)};b.useEffect(()=>{x()},[t]);const y=async()=>{const k=await hMe(t);k.success?(g({title:"已点赞",description:"感谢你的支持!"}),x()):g({title:"点赞失败",description:k.error||"未知错误",variant:"destructive"})},w=async()=>{const k=await fMe(t);k.success?(g({title:"已反馈",description:"感谢你的反馈!"}),x()):g({title:"操作失败",description:k.error||"未知错误",variant:"destructive"})},S=async()=>{if(a===0){g({title:"请选择评分",description:"至少选择 1 颗星",variant:"destructive"});return}const k=await mMe(t,a,c||void 0);k.success?(g({title:"评分成功",description:"感谢你的评价!"}),m(!1),l(0),d(""),x()):g({title:"评分失败",description:k.error||"未知错误",variant:"destructive"})};return s?o.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(Ku,{className:"h-4 w-4"}),o.jsx("span",{children:"-"})]}),o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(_c,{className:"h-4 w-4"}),o.jsx("span",{children:"-"})]})]}):n?e?o.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[o.jsxs("div",{className:"flex items-center gap-1",title:`下载量: ${n.downloads.toLocaleString()}`,children:[o.jsx(Ku,{className:"h-4 w-4"}),o.jsx("span",{children:n.downloads.toLocaleString()})]}),o.jsxs("div",{className:"flex items-center gap-1",title:`评分: ${n.rating.toFixed(1)} (${n.rating_count} 条评价)`,children:[o.jsx(_c,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),o.jsx("span",{children:n.rating.toFixed(1)})]}),o.jsxs("div",{className:"flex items-center gap-1",title:`点赞数: ${n.likes}`,children:[o.jsx(f4,{className:"h-4 w-4"}),o.jsx("span",{children:n.likes})]})]}):o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-4",children:[o.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[o.jsx(Ku,{className:"h-5 w-5 text-muted-foreground mb-1"}),o.jsx("span",{className:"text-2xl font-bold",children:n.downloads.toLocaleString()}),o.jsx("span",{className:"text-xs text-muted-foreground",children:"下载量"})]}),o.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[o.jsx(_c,{className:"h-5 w-5 text-yellow-400 mb-1 fill-yellow-400"}),o.jsx("span",{className:"text-2xl font-bold",children:n.rating.toFixed(1)}),o.jsxs("span",{className:"text-xs text-muted-foreground",children:[n.rating_count," 条评价"]})]}),o.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[o.jsx(f4,{className:"h-5 w-5 text-green-500 mb-1"}),o.jsx("span",{className:"text-2xl font-bold",children:n.likes}),o.jsx("span",{className:"text-xs text-muted-foreground",children:"点赞"})]}),o.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[o.jsx(g9,{className:"h-5 w-5 text-red-500 mb-1"}),o.jsx("span",{className:"text-2xl font-bold",children:n.dislikes}),o.jsx("span",{className:"text-xs text-muted-foreground",children:"点踩"})]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsxs(he,{variant:"outline",size:"sm",onClick:y,children:[o.jsx(f4,{className:"h-4 w-4 mr-1"}),"点赞"]}),o.jsxs(he,{variant:"outline",size:"sm",onClick:w,children:[o.jsx(g9,{className:"h-4 w-4 mr-1"}),"点踩"]}),o.jsxs(Dr,{open:h,onOpenChange:m,children:[o.jsx(Sf,{asChild:!0,children:o.jsxs(he,{variant:"default",size:"sm",children:[o.jsx(_c,{className:"h-4 w-4 mr-1"}),"评分"]})}),o.jsxs(Sr,{children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"为插件评分"}),o.jsx(ss,{children:"分享你的使用体验,帮助其他用户"})]}),o.jsxs("div",{className:"space-y-4 py-4",children:[o.jsxs("div",{className:"flex flex-col items-center gap-2",children:[o.jsx("div",{className:"flex gap-2",children:[1,2,3,4,5].map(k=>o.jsx("button",{onClick:()=>l(k),className:"focus:outline-none",children:o.jsx(_c,{className:`h-8 w-8 transition-colors ${k<=a?"fill-yellow-400 text-yellow-400":"text-muted-foreground hover:text-yellow-300"}`})},k))}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:[a===0&&"点击星星进行评分",a===1&&"很差",a===2&&"一般",a===3&&"还行",a===4&&"不错",a===5&&"非常好"]})]}),o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium mb-2 block",children:"评论(可选)"}),o.jsx(Ar,{value:c,onChange:k=>d(k.target.value),placeholder:"分享你的使用体验...",rows:4,maxLength:500}),o.jsxs("div",{className:"text-xs text-muted-foreground mt-1 text-right",children:[c.length," / 500"]})]})]}),o.jsxs(bs,{children:[o.jsx(he,{variant:"outline",onClick:()=>m(!1),children:"取消"}),o.jsx(he,{onClick:S,disabled:a===0,children:"提交评分"})]})]})]})]}),n.recent_ratings&&n.recent_ratings.length>0&&o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"text-sm font-semibold",children:"最近评价"}),o.jsx("div",{className:"space-y-3",children:n.recent_ratings.map((k,j)=>o.jsxs("div",{className:"p-3 rounded-lg border bg-muted/50",children:[o.jsxs("div",{className:"flex items-center justify-between mb-2",children:[o.jsx("div",{className:"flex gap-1",children:[1,2,3,4,5].map(N=>o.jsx(_c,{className:`h-3 w-3 ${N<=k.rating?"fill-yellow-400 text-yellow-400":"text-muted-foreground"}`},N))}),o.jsx("span",{className:"text-xs text-muted-foreground",children:new Date(k.created_at).toLocaleDateString()})]}),k.comment&&o.jsx("p",{className:"text-sm text-muted-foreground",children:k.comment})]},j))})]})]}):null}const Nz={"Group Management":"群组管理","Entertainment & Interaction":"娱乐互动","Utility Tools":"实用工具","Content Generation":"内容生成",Multimedia:"多媒体","External Integration":"外部集成","Data Analysis & Insights":"数据分析与洞察",Other:"其他"};function vMe(){const t=Zi(),[e,n]=b.useState(null),[r,s]=b.useState(""),[i,a]=b.useState("all"),[l,c]=b.useState("all"),[d,h]=b.useState(!0),[m,g]=b.useState([]),[x,y]=b.useState(!0),[w,S]=b.useState(null),[k,j]=b.useState(null),[N,T]=b.useState(null),[E,_]=b.useState(null),[,M]=b.useState([]),[I,P]=b.useState({}),{toast:L}=fs(),H=async R=>{const ie=R.map(async V=>{try{const te=await iX(V.id);return{id:V.id,stats:te}}catch(te){return console.warn(`Failed to load stats for ${V.id}:`,te),{id:V.id,stats:null}}}),W=await Promise.all(ie),q={};W.forEach(({id:V,stats:te})=>{te&&(q[V]=te)}),P(q)};b.useEffect(()=>{let R=null,ie=!1;return(async()=>{if(R=lMe(q=>{ie||(T(q),q.stage==="success"?setTimeout(()=>{ie||T(null)},2e3):q.stage==="error"&&(y(!1),S(q.error||"加载失败")))},q=>{console.error("WebSocket error:",q),ie||L({title:"WebSocket 连接失败",description:"无法实时显示加载进度",variant:"destructive"})}),await new Promise(q=>{if(!R){q();return}const V=()=>{R&&R.readyState===WebSocket.OPEN?(console.log("WebSocket connected, starting to load plugins"),q()):R&&R.readyState===WebSocket.CLOSED?(console.warn("WebSocket closed before loading plugins"),q()):setTimeout(V,100)};V()}),!ie){const q=await iMe();j(q),q.installed||L({title:"Git 未安装",description:q.error||"请先安装 Git 才能使用插件安装功能",variant:"destructive"})}if(!ie){const q=await aMe();_(q)}if(!ie)try{y(!0),S(null);const q=await sMe();if(!ie){const V=await U1();M(V);const te=q.map(ne=>{const K=W1(ne.id,V),se=G1(ne.id,V);return{...ne,installed:K,installed_version:se}});for(const ne of V)!te.some(se=>se.id===ne.id)&&ne.manifest&&te.push({id:ne.id,manifest:{manifest_version:ne.manifest.manifest_version||1,name:ne.manifest.name,version:ne.manifest.version,description:ne.manifest.description||"",author:ne.manifest.author,license:ne.manifest.license||"Unknown",host_application:ne.manifest.host_application,homepage_url:ne.manifest.homepage_url,repository_url:ne.manifest.repository_url,keywords:ne.manifest.keywords||[],categories:ne.manifest.categories||[],default_locale:ne.manifest.default_locale||"zh-CN",locales_path:ne.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!0,installed_version:ne.manifest.version,published_at:new Date().toISOString(),updated_at:new Date().toISOString()});g(te),H(te)}}catch(q){if(!ie){const V=q instanceof Error?q.message:"加载插件列表失败";S(V),L({title:"加载失败",description:V,variant:"destructive"})}}finally{ie||y(!1)}})(),()=>{ie=!0,R&&R.close()}},[L]);const U=R=>{if(!R.installed&&E&&!ee(R))return o.jsxs(Xn,{variant:"destructive",className:"gap-1",children:[o.jsx(Vc,{className:"h-3 w-3"}),"不兼容"]});if(R.installed){const ie=R.installed_version?.trim(),W=R.manifest.version?.trim();if(ie!==W){const q=ie?.split(".").map(Number)||[0,0,0],V=W?.split(".").map(Number)||[0,0,0];for(let te=0;te<3;te++){if((V[te]||0)>(q[te]||0))return o.jsxs(Xn,{variant:"outline",className:"gap-1 text-orange-600 border-orange-600",children:[o.jsx(Vc,{className:"h-3 w-3"}),"可更新"]});if((V[te]||0)<(q[te]||0))break}}return o.jsxs(Xn,{variant:"default",className:"gap-1",children:[o.jsx(Qc,{className:"h-3 w-3"}),"已安装"]})}return null},ee=R=>!E||!R.manifest?.host_application?!0:oMe(R.manifest.host_application.min_version,R.manifest.host_application.max_version,E),z=R=>{if(!R.installed||!R.installed_version||!R.manifest?.version)return!1;const ie=R.installed_version.trim(),W=R.manifest.version.trim();if(ie===W)return!1;const q=ie.split(".").map(Number),V=W.split(".").map(Number);for(let te=0;te<3;te++){if((V[te]||0)>(q[te]||0))return!0;if((V[te]||0)<(q[te]||0))return!1}return!1},Q=m.filter(R=>{if(!R.manifest)return console.warn("[过滤] 跳过无 manifest 的插件:",R.id),!1;const ie=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(te=>te.toLowerCase().includes(r.toLowerCase())),W=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i);let q=!0;l==="installed"?q=R.installed===!0:l==="updates"&&(q=R.installed===!0&&z(R));const V=!d||!E||ee(R);return ie&&W&&q&&V}),B=()=>{n(null)},X=async R=>{if(!k?.installed){L({title:"无法安装",description:"Git 未安装",variant:"destructive"});return}if(E&&!ee(R)){L({title:"无法安装",description:"插件与当前麦麦版本不兼容",variant:"destructive"});return}try{await cMe(R.id,R.manifest.repository_url||"","main"),pMe(R.id).catch(W=>{console.warn("Failed to record download:",W)}),L({title:"安装成功",description:`${R.manifest.name} 已成功安装`});const ie=await U1();M(ie),g(W=>W.map(q=>{if(q.id===R.id){const V=W1(q.id,ie),te=G1(q.id,ie);return{...q,installed:V,installed_version:te}}return q}))}catch(ie){L({title:"安装失败",description:ie instanceof Error?ie.message:"未知错误",variant:"destructive"})}},J=async R=>{try{await uMe(R.id),L({title:"卸载成功",description:`${R.manifest.name} 已成功卸载`});const ie=await U1();M(ie),g(W=>W.map(q=>{if(q.id===R.id){const V=W1(q.id,ie),te=G1(q.id,ie);return{...q,installed:V,installed_version:te}}return q}))}catch(ie){L({title:"卸载失败",description:ie instanceof Error?ie.message:"未知错误",variant:"destructive"})}},G=async R=>{if(!k?.installed){L({title:"无法更新",description:"Git 未安装",variant:"destructive"});return}try{const ie=await dMe(R.id,R.manifest.repository_url||"","main");L({title:"更新成功",description:`${R.manifest.name} 已从 ${ie.old_version} 更新到 ${ie.new_version}`});const W=await U1();M(W),g(q=>q.map(V=>{if(V.id===R.id){const te=W1(V.id,W),ne=G1(V.id,W);return{...V,installed:te,installed_version:ne}}return V}))}catch(ie){L({title:"更新失败",description:ie instanceof Error?ie.message:"未知错误",variant:"destructive"})}};return o.jsx(wn,{className:"h-full",children:o.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件市场"}),o.jsx("p",{className:"text-muted-foreground mt-2",children:"浏览和管理麦麦的插件"})]}),o.jsxs(he,{onClick:()=>t({to:"/plugin-mirrors"}),children:[o.jsx(Hee,{className:"h-4 w-4 mr-2"}),"配置镜像源"]})]}),k&&!k.installed&&o.jsxs(qt,{className:"border-orange-600 bg-orange-50 dark:bg-orange-950/20",children:[o.jsx(Fn,{children:o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx(Wa,{className:"h-5 w-5 text-orange-600"}),o.jsxs("div",{children:[o.jsx(qn,{className:"text-lg text-orange-900 dark:text-orange-100",children:"Git 未安装"}),o.jsx(ts,{className:"text-orange-800 dark:text-orange-200",children:k.error||"请先安装 Git 才能使用插件安装功能"})]})]})}),o.jsx(Gn,{children:o.jsxs("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:["您可以从 ",o.jsx("a",{href:"https://git-scm.com/downloads",target:"_blank",rel:"noopener noreferrer",className:"underline font-medium",children:"git-scm.com"})," 下载并安装 Git。 安装完成后,请重启麦麦应用。"]})})]}),o.jsx(qt,{className:"p-4",children:o.jsxs("div",{className:"flex flex-col gap-4",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[o.jsxs("div",{className:"flex-1 relative",children:[o.jsx(Ni,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(ze,{placeholder:"搜索插件...",value:r,onChange:R=>s(R.target.value),className:"pl-9"})]}),o.jsxs(Vt,{value:i,onValueChange:a,children:[o.jsx($t,{className:"w-full sm:w-[200px]",children:o.jsx(Ut,{placeholder:"选择分类"})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部分类"}),o.jsx(De,{value:"Group Management",children:"群组管理"}),o.jsx(De,{value:"Entertainment & Interaction",children:"娱乐互动"}),o.jsx(De,{value:"Utility Tools",children:"实用工具"}),o.jsx(De,{value:"Content Generation",children:"内容生成"}),o.jsx(De,{value:"Multimedia",children:"多媒体"}),o.jsx(De,{value:"External Integration",children:"外部集成"}),o.jsx(De,{value:"Data Analysis & Insights",children:"数据分析与洞察"}),o.jsx(De,{value:"Other",children:"其他"})]})]})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Oi,{id:"compatible-only",checked:d,onCheckedChange:R=>h(R===!0)}),o.jsx("label",{htmlFor:"compatible-only",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer",children:"只显示兼容当前版本的插件"})]})]})}),o.jsx(ja,{value:l,onValueChange:c,className:"w-full",children:o.jsxs(Wi,{className:"grid w-full grid-cols-3",children:[o.jsxs(Lt,{value:"all",children:["全部插件 (",m.filter(R=>{if(!R.manifest)return!1;const ie=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(V=>V.toLowerCase().includes(r.toLowerCase())),W=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i),q=!d||!E||ee(R);return ie&&W&&q}).length,")"]}),o.jsxs(Lt,{value:"installed",children:["已安装 (",m.filter(R=>{if(!R.manifest)return!1;const ie=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(V=>V.toLowerCase().includes(r.toLowerCase())),W=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i),q=!d||!E||ee(R);return R.installed&&ie&&W&&q}).length,")"]}),o.jsxs(Lt,{value:"updates",children:["可更新 (",m.filter(R=>{if(!R.manifest)return!1;const ie=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(V=>V.toLowerCase().includes(r.toLowerCase())),W=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i),q=!d||!E||ee(R);return R.installed&&z(R)&&ie&&W&&q}).length,")"]})]})}),N&&N.stage==="loading"&&o.jsx(qt,{className:"p-4",children:o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Uc,{className:"h-4 w-4 animate-spin"}),o.jsxs("span",{className:"text-sm font-medium",children:[N.operation==="fetch"&&"加载插件列表",N.operation==="install"&&`安装插件${N.plugin_id?`: ${N.plugin_id}`:""}`,N.operation==="uninstall"&&`卸载插件${N.plugin_id?`: ${N.plugin_id}`:""}`,N.operation==="update"&&`更新插件${N.plugin_id?`: ${N.plugin_id}`:""}`]})]}),o.jsxs("span",{className:"text-sm font-medium",children:[N.progress,"%"]})]}),o.jsx(zp,{value:N.progress,className:"h-2"}),o.jsx("div",{className:"text-xs text-muted-foreground",children:N.message}),N.operation==="fetch"&&N.total_plugins>0&&o.jsxs("div",{className:"text-xs text-muted-foreground text-center",children:["已加载 ",N.loaded_plugins," / ",N.total_plugins," 个插件"]})]})}),N&&N.stage==="error"&&N.error&&o.jsx(qt,{className:"border-destructive bg-destructive/10",children:o.jsx(Fn,{children:o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx(Wa,{className:"h-5 w-5 text-destructive"}),o.jsxs("div",{children:[o.jsx(qn,{className:"text-lg text-destructive",children:"加载失败"}),o.jsx(ts,{className:"text-destructive/80",children:N.error})]})]})})}),x?o.jsxs("div",{className:"flex items-center justify-center py-12",children:[o.jsx(Uc,{className:"h-8 w-8 animate-spin text-muted-foreground"}),o.jsx("span",{className:"ml-3 text-muted-foreground",children:"加载插件列表中..."})]}):w?o.jsx(qt,{className:"p-6",children:o.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[o.jsx(Wa,{className:"h-12 w-12 text-destructive mb-4"}),o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),o.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:w}),o.jsx(he,{onClick:()=>window.location.reload(),children:"重新加载"})]})}):Q.length===0?o.jsx(qt,{className:"p-6",children:o.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[o.jsx(Ni,{className:"h-12 w-12 text-muted-foreground mb-4"}),o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"未找到插件"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:r||i!=="all"?"尝试调整搜索条件或筛选器":"暂无可用插件"})]})}):o.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:Q.map(R=>o.jsxs(qt,{className:"flex flex-col hover:shadow-lg transition-shadow h-full",children:[o.jsxs(Fn,{children:[o.jsxs("div",{className:"flex items-start justify-between gap-2",children:[o.jsx(qn,{className:"text-xl",children:R.manifest?.name||R.id}),o.jsxs("div",{className:"flex flex-col gap-1",children:[R.manifest?.categories&&R.manifest.categories[0]&&o.jsx(Xn,{variant:"secondary",className:"text-xs whitespace-nowrap",children:Nz[R.manifest.categories[0]]||R.manifest.categories[0]}),U(R)]})]}),o.jsx(ts,{className:"line-clamp-2",children:R.manifest?.description||"无描述"})]}),o.jsx(Gn,{className:"flex-1",children:o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(Ku,{className:"h-4 w-4"}),o.jsx("span",{children:(I[R.id]?.downloads??R.downloads??0).toLocaleString()})]}),o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(_c,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),o.jsx("span",{children:(I[R.id]?.rating??R.rating??0).toFixed(1)})]})]}),o.jsxs("div",{className:"flex flex-wrap gap-2",children:[R.manifest?.keywords&&R.manifest.keywords.slice(0,3).map(ie=>o.jsx(Xn,{variant:"outline",className:"text-xs",children:ie},ie)),R.manifest?.keywords&&R.manifest.keywords.length>3&&o.jsxs(Xn,{variant:"outline",className:"text-xs",children:["+",R.manifest.keywords.length-3]})]}),o.jsxs("div",{className:"text-xs text-muted-foreground pt-2 border-t space-y-1",children:[o.jsxs("div",{children:["v",R.manifest?.version||"unknown"," · ",R.manifest?.author?.name||"Unknown"]}),R.manifest?.host_application&&o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx("span",{children:"支持:"}),o.jsxs("span",{className:"font-medium",children:[R.manifest.host_application.min_version,R.manifest.host_application.max_version?` - ${R.manifest.host_application.max_version}`:" - 最新版本"]})]})]})]})}),o.jsx(nL,{className:"pt-4",children:o.jsxs("div",{className:"flex items-center justify-end gap-2 w-full",children:[o.jsx(he,{variant:"outline",size:"sm",onClick:()=>n(R),children:"查看详情"}),R.installed?z(R)?o.jsxs(he,{size:"sm",disabled:!k?.installed,title:k?.installed?void 0:"Git 未安装",onClick:()=>G(R),children:[o.jsx(Qs,{className:"h-4 w-4 mr-1"}),"更新"]}):o.jsxs(he,{variant:"destructive",size:"sm",disabled:!k?.installed,title:k?.installed?void 0:"Git 未安装",onClick:()=>J(R),children:[o.jsx(Sn,{className:"h-4 w-4 mr-1"}),"卸载"]}):o.jsxs(he,{size:"sm",disabled:!k?.installed||N?.operation==="install"||E!==null&&!ee(R),title:k?.installed?E!==null&&!ee(R)?`不兼容当前版本 (需要 ${R.manifest?.host_application?.min_version||"未知"}${R.manifest?.host_application?.max_version?` - ${R.manifest.host_application.max_version}`:"+"},当前 ${E?.version})`:void 0:"Git 未安装",onClick:()=>X(R),children:[o.jsx(Ku,{className:"h-4 w-4 mr-1"}),N?.operation==="install"&&N?.plugin_id===R.id?"安装中...":"安装"]})]})})]},R.id))}),o.jsx(Dr,{open:e!==null,onOpenChange:B,children:e&&e.manifest&&o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsx(kr,{children:o.jsxs("div",{className:"flex items-start justify-between gap-4",children:[o.jsxs("div",{className:"space-y-2 flex-1",children:[o.jsx(Or,{className:"text-2xl",children:e.manifest.name}),o.jsxs(ss,{children:["作者: ",e.manifest.author?.name||"Unknown",e.manifest.author?.url&&o.jsx("a",{href:e.manifest.author.url,target:"_blank",rel:"noopener noreferrer",className:"ml-2 text-primary hover:underline",children:o.jsx(Mh,{className:"h-3 w-3 inline"})})]})]}),o.jsxs("div",{className:"flex flex-col gap-2",children:[e.manifest.categories&&e.manifest.categories[0]&&o.jsx(Xn,{variant:"secondary",children:Nz[e.manifest.categories[0]]||e.manifest.categories[0]}),U(e)]})]})}),o.jsxs("div",{className:"space-y-6",children:[o.jsx(xMe,{pluginId:e.id}),o.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-4",children:[o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:"版本"}),o.jsxs("p",{className:"text-sm text-muted-foreground",children:["v",e.manifest?.version||"unknown"]}),e.installed&&e.installed_version&&o.jsxs("p",{className:"text-xs text-muted-foreground",children:["已安装: v",e.installed_version]})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:"下载量"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:(I[e.id]?.downloads??e.downloads??0).toLocaleString()})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:"评分"}),o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(_c,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:[(I[e.id]?.rating??e.rating??0).toFixed(1)," (",I[e.id]?.rating_count??e.review_count??0,")"]})]})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:"许可证"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:e.manifest.license||"Unknown"})]}),o.jsxs("div",{className:"col-span-2",children:[o.jsx("p",{className:"text-sm font-medium",children:"支持版本"}),o.jsxs("p",{className:"text-sm text-muted-foreground",children:[e.manifest.host_application?.min_version||"未知",e.manifest.host_application?.max_version?` - ${e.manifest.host_application.max_version}`:" - 最新版本"]})]})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium mb-2",children:"关键词"}),o.jsx("div",{className:"flex flex-wrap gap-2",children:e.manifest.keywords&&e.manifest.keywords.map(R=>o.jsx(Xn,{variant:"outline",children:R},R))})]}),e.detailed_description&&o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium mb-2",children:"详细说明"}),o.jsx("p",{className:"text-sm text-muted-foreground whitespace-pre-line",children:e.detailed_description})]}),!e.detailed_description&&o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium mb-2",children:"说明"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:e.manifest.description||"无描述"})]}),o.jsxs("div",{className:"space-y-2",children:[e.manifest.homepage_url&&o.jsxs("div",{className:"text-sm",children:[o.jsx("span",{className:"font-medium",children:"主页: "}),o.jsx("a",{href:e.manifest.homepage_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:e.manifest.homepage_url})]}),e.manifest.repository_url&&o.jsxs("div",{className:"text-sm",children:[o.jsx("span",{className:"font-medium",children:"仓库: "}),o.jsx("a",{href:e.manifest.repository_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:e.manifest.repository_url})]})]})]}),o.jsxs(bs,{children:[e.manifest.homepage_url&&o.jsxs(he,{onClick:()=>window.open(e.manifest.homepage_url,"_blank"),children:[o.jsx(Mh,{className:"h-4 w-4 mr-2"}),"访问主页"]}),e.manifest.repository_url&&o.jsxs(he,{variant:"outline",onClick:()=>window.open(e.manifest.repository_url,"_blank"),children:[o.jsx(Mh,{className:"h-4 w-4 mr-2"}),"查看仓库"]})]})]})})]})})}function yMe(){return o.jsx(wn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件配置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理和配置已安装的插件"})]}),o.jsxs("div",{className:"flex gap-2",children:[o.jsxs(he,{variant:"outline",size:"sm",children:[o.jsx(Qs,{className:"h-4 w-4 mr-2"}),"刷新"]}),o.jsxs(he,{size:"sm",children:[o.jsx(Xu,{className:"h-4 w-4 mr-2"}),"全局设置"]})]})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-4",children:[o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"已安装插件"}),o.jsx(Uh,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:"0"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"正在加载..."})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"已启用"}),o.jsx(Qc,{className:"h-4 w-4 text-green-600"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:"0"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"运行中的插件"})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"已禁用"}),o.jsx(Vc,{className:"h-4 w-4 text-orange-600"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:"0"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"未激活的插件"})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"可更新"}),o.jsx(Qs,{className:"h-4 w-4 text-blue-600"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:"0"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"有新版本可用"})]})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"已安装的插件"}),o.jsx(ts,{children:"查看和管理已安装插件的配置"})]}),o.jsx(Gn,{children:o.jsxs("div",{className:"flex flex-col items-center justify-center py-12 space-y-4",children:[o.jsx(Uh,{className:"h-16 w-16 text-muted-foreground/50"}),o.jsxs("div",{className:"text-center space-y-2",children:[o.jsx("p",{className:"text-lg font-medium text-muted-foreground",children:"插件配置功能开发中"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"即将支持插件的启用/禁用、参数配置等功能"})]}),o.jsx("div",{className:"flex gap-2",children:o.jsx(he,{variant:"outline",asChild:!0,children:o.jsxs("a",{href:"/plugins",children:[o.jsx(Mh,{className:"h-4 w-4 mr-2"}),"前往插件市场"]})})})]})})]}),o.jsx(qt,{className:"border-blue-200 bg-blue-50 dark:bg-blue-950/20 dark:border-blue-900",children:o.jsx(Gn,{className:"pt-6",children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Vc,{className:"h-5 w-5 text-blue-600 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"space-y-1",children:[o.jsx("p",{className:"text-sm font-medium text-blue-900 dark:text-blue-100",children:"开发进行中"}),o.jsxs("p",{className:"text-sm text-blue-800 dark:text-blue-200",children:["插件配置功能正在积极开发中。目前您可以通过",o.jsx("strong",{children:"插件市场"}),"安装和卸载插件,完整的配置管理功能即将推出。"]})]})]})})})]})})}function bMe(){const t=Zi(),{toast:e}=fs(),[n,r]=b.useState([]),[s,i]=b.useState(!0),[a,l]=b.useState(null),[c,d]=b.useState(null),[h,m]=b.useState(!1),[g,x]=b.useState(!1),[y,w]=b.useState({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),S=b.useCallback(async()=>{try{i(!0),l(null);const M=localStorage.getItem("access-token"),I=await fetch("/api/webui/plugins/mirrors",{headers:{Authorization:`Bearer ${M}`}});if(!I.ok)throw new Error("获取镜像源列表失败");const P=await I.json();r(P.mirrors||[])}catch(M){const I=M instanceof Error?M.message:"加载镜像源失败";l(I),e({title:"加载失败",description:I,variant:"destructive"})}finally{i(!1)}},[e]);b.useEffect(()=>{S()},[S]);const k=async()=>{try{const M=localStorage.getItem("access-token"),I=await fetch("/api/webui/plugins/mirrors",{method:"POST",headers:{Authorization:`Bearer ${M}`,"Content-Type":"application/json"},body:JSON.stringify(y)});if(!I.ok){const P=await I.json();throw new Error(P.detail||"添加镜像源失败")}e({title:"添加成功",description:"镜像源已添加"}),m(!1),w({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),S()}catch(M){e({title:"添加失败",description:M instanceof Error?M.message:"未知错误",variant:"destructive"})}},j=async()=>{if(c)try{const M=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${c.id}`,{method:"PUT",headers:{Authorization:`Bearer ${M}`,"Content-Type":"application/json"},body:JSON.stringify({name:y.name,raw_prefix:y.raw_prefix,clone_prefix:y.clone_prefix,enabled:y.enabled,priority:y.priority})})).ok)throw new Error("更新镜像源失败");e({title:"更新成功",description:"镜像源已更新"}),x(!1),d(null),S()}catch(M){e({title:"更新失败",description:M instanceof Error?M.message:"未知错误",variant:"destructive"})}},N=async M=>{if(confirm("确定要删除这个镜像源吗?"))try{const I=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${M}`,{method:"DELETE",headers:{Authorization:`Bearer ${I}`}})).ok)throw new Error("删除镜像源失败");e({title:"删除成功",description:"镜像源已删除"}),S()}catch(I){e({title:"删除失败",description:I instanceof Error?I.message:"未知错误",variant:"destructive"})}},T=async M=>{try{const I=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${M.id}`,{method:"PUT",headers:{Authorization:`Bearer ${I}`,"Content-Type":"application/json"},body:JSON.stringify({enabled:!M.enabled})})).ok)throw new Error("更新状态失败");S()}catch(I){e({title:"更新失败",description:I instanceof Error?I.message:"未知错误",variant:"destructive"})}},E=M=>{d(M),w({id:M.id,name:M.name,raw_prefix:M.raw_prefix,clone_prefix:M.clone_prefix,enabled:M.enabled,priority:M.priority}),x(!0)},_=async(M,I)=>{const P=I==="up"?M.priority-1:M.priority+1;if(!(P<1))try{const L=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${M.id}`,{method:"PUT",headers:{Authorization:`Bearer ${L}`,"Content-Type":"application/json"},body:JSON.stringify({priority:P})})).ok)throw new Error("更新优先级失败");S()}catch(L){e({title:"更新失败",description:L instanceof Error?L.message:"未知错误",variant:"destructive"})}};return o.jsx(wn,{className:"h-full",children:o.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsx(he,{variant:"ghost",size:"icon",onClick:()=>t({to:"/plugins"}),children:o.jsx(pI,{className:"h-5 w-5"})}),o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"镜像源配置"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理 Git 克隆和文件下载的镜像源"})]})]}),o.jsxs(he,{onClick:()=>m(!0),children:[o.jsx(zs,{className:"h-4 w-4 mr-2"}),"添加镜像源"]})]}),s?o.jsx(qt,{className:"p-6",children:o.jsx("div",{className:"flex items-center justify-center py-8",children:o.jsx(Uc,{className:"h-8 w-8 animate-spin text-primary"})})}):a?o.jsx(qt,{className:"p-6",children:o.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[o.jsx(Wa,{className:"h-12 w-12 text-destructive mb-4"}),o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),o.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:a}),o.jsx(he,{onClick:S,children:"重新加载"})]})}):o.jsxs(qt,{children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(Tf,{children:[o.jsx(Ef,{children:o.jsxs(Ps,{children:[o.jsx(pn,{children:"状态"}),o.jsx(pn,{children:"名称"}),o.jsx(pn,{children:"ID"}),o.jsx(pn,{children:"优先级"}),o.jsx(pn,{className:"text-right",children:"操作"})]})}),o.jsx(_f,{children:n.map(M=>o.jsxs(Ps,{children:[o.jsx(Gt,{children:o.jsx(Bt,{checked:M.enabled,onCheckedChange:()=>T(M)})}),o.jsx(Gt,{children:o.jsxs("div",{children:[o.jsx("div",{className:"font-medium",children:M.name}),o.jsxs("div",{className:"text-xs text-muted-foreground mt-1",children:["Raw: ",M.raw_prefix]})]})}),o.jsx(Gt,{children:o.jsx(Xn,{variant:"outline",children:M.id})}),o.jsx(Gt,{children:o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"font-mono",children:M.priority}),o.jsxs("div",{className:"flex flex-col gap-1",children:[o.jsx(he,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>_(M,"up"),disabled:M.priority===1,children:o.jsx(A0,{className:"h-3 w-3"})}),o.jsx(he,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>_(M,"down"),children:o.jsx(nd,{className:"h-3 w-3"})})]})]})}),o.jsx(Gt,{className:"text-right",children:o.jsxs("div",{className:"flex items-center justify-end gap-2",children:[o.jsx(he,{variant:"ghost",size:"icon",onClick:()=>E(M),children:o.jsx(Yu,{className:"h-4 w-4"})}),o.jsx(he,{variant:"ghost",size:"icon",onClick:()=>N(M.id),children:o.jsx(Sn,{className:"h-4 w-4 text-destructive"})})]})})]},M.id))})]})}),o.jsx("div",{className:"md:hidden p-4 space-y-4",children:n.map(M=>o.jsx(qt,{className:"p-4",children:o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-start justify-between",children:[o.jsxs("div",{className:"flex-1",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("h3",{className:"font-semibold",children:M.name}),M.enabled&&o.jsx(Xn,{variant:"default",className:"text-xs",children:"启用"})]}),o.jsx(Xn,{variant:"outline",className:"mt-1 text-xs",children:M.id})]}),o.jsx(Bt,{checked:M.enabled,onCheckedChange:()=>T(M)})]}),o.jsxs("div",{className:"text-sm space-y-1",children:[o.jsxs("div",{className:"text-muted-foreground",children:[o.jsx("span",{className:"font-medium",children:"Raw: "}),o.jsx("span",{className:"break-all",children:M.raw_prefix})]}),o.jsxs("div",{className:"text-muted-foreground",children:[o.jsx("span",{className:"font-medium",children:"优先级: "}),o.jsx("span",{className:"font-mono",children:M.priority})]})]}),o.jsxs("div",{className:"flex items-center gap-2 pt-2 border-t",children:[o.jsxs(he,{variant:"outline",size:"sm",className:"flex-1",onClick:()=>E(M),children:[o.jsx(Yu,{className:"h-4 w-4 mr-1"}),"编辑"]}),o.jsx(he,{variant:"outline",size:"sm",onClick:()=>_(M,"up"),disabled:M.priority===1,children:o.jsx(A0,{className:"h-4 w-4"})}),o.jsx(he,{variant:"outline",size:"sm",onClick:()=>_(M,"down"),children:o.jsx(nd,{className:"h-4 w-4"})}),o.jsx(he,{variant:"destructive",size:"sm",onClick:()=>N(M.id),children:o.jsx(Sn,{className:"h-4 w-4"})})]})]})},M.id))})]}),o.jsx(Dr,{open:h,onOpenChange:m,children:o.jsxs(Sr,{className:"max-w-lg",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"添加镜像源"}),o.jsx(ss,{children:"添加新的 Git 镜像源配置"})]}),o.jsxs("div",{className:"space-y-4 py-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"add-id",children:"镜像源 ID *"}),o.jsx(ze,{id:"add-id",placeholder:"例如: my-mirror",value:y.id,onChange:M=>w({...y,id:M.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"add-name",children:"名称 *"}),o.jsx(ze,{id:"add-name",placeholder:"例如: 我的镜像源",value:y.name,onChange:M=>w({...y,name:M.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"add-raw",children:"Raw 文件前缀 *"}),o.jsx(ze,{id:"add-raw",placeholder:"https://example.com/raw",value:y.raw_prefix,onChange:M=>w({...y,raw_prefix:M.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"add-clone",children:"克隆前缀 *"}),o.jsx(ze,{id:"add-clone",placeholder:"https://example.com/clone",value:y.clone_prefix,onChange:M=>w({...y,clone_prefix:M.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"add-priority",children:"优先级"}),o.jsx(ze,{id:"add-priority",type:"number",min:"1",value:y.priority,onChange:M=>w({...y,priority:parseInt(M.target.value)||1})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"add-enabled",checked:y.enabled,onCheckedChange:M=>w({...y,enabled:M})}),o.jsx(de,{htmlFor:"add-enabled",children:"启用此镜像源"})]})]}),o.jsxs(bs,{children:[o.jsx(he,{variant:"outline",onClick:()=>m(!1),children:"取消"}),o.jsx(he,{onClick:k,children:"添加"})]})]})}),o.jsx(Dr,{open:g,onOpenChange:x,children:o.jsxs(Sr,{className:"max-w-lg",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"编辑镜像源"}),o.jsx(ss,{children:"修改镜像源配置"})]}),o.jsxs("div",{className:"space-y-4 py-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{children:"镜像源 ID"}),o.jsx(ze,{value:y.id,disabled:!0})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"edit-name",children:"名称 *"}),o.jsx(ze,{id:"edit-name",value:y.name,onChange:M=>w({...y,name:M.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"edit-raw",children:"Raw 文件前缀 *"}),o.jsx(ze,{id:"edit-raw",value:y.raw_prefix,onChange:M=>w({...y,raw_prefix:M.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"edit-clone",children:"克隆前缀 *"}),o.jsx(ze,{id:"edit-clone",value:y.clone_prefix,onChange:M=>w({...y,clone_prefix:M.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{htmlFor:"edit-priority",children:"优先级"}),o.jsx(ze,{id:"edit-priority",type:"number",min:"1",value:y.priority,onChange:M=>w({...y,priority:parseInt(M.target.value)||1})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"edit-enabled",checked:y.enabled,onCheckedChange:M=>w({...y,enabled:M})}),o.jsx(de,{htmlFor:"edit-enabled",children:"启用此镜像源"})]})]}),o.jsxs(bs,{children:[o.jsx(he,{variant:"outline",onClick:()=>x(!1),children:"取消"}),o.jsx(he,{onClick:j,children:"保存"})]})]})})]})})}const wMe=wf("pointer-events-none inline-flex select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono font-medium opacity-100",{variants:{size:{sm:"h-5 text-[10px]",default:"h-6 text-xs",lg:"h-7 text-sm"}},defaultVariants:{size:"default"}}),aX=b.forwardRef(({className:t,size:e,abbrTitle:n,children:r,...s},i)=>o.jsx("kbd",{className:ve(wMe({size:e,className:t})),ref:i,...s,children:n?o.jsx("abbr",{title:n,children:r}):r}));aX.displayName="Kbd";const SMe=[{icon:M0,title:"首页",description:"查看仪表板概览",path:"/",category:"概览"},{icon:Pl,title:"麦麦主程序配置",description:"配置麦麦的核心设置",path:"/config/bot",category:"配置"},{icon:xI,title:"麦麦模型提供商配置",description:"配置模型提供商",path:"/config/modelProvider",category:"配置"},{icon:vI,title:"麦麦模型配置",description:"配置模型参数",path:"/config/model",category:"配置"},{icon:Nj,title:"表情包管理",description:"管理麦麦的表情包",path:"/resource/emoji",category:"资源"},{icon:Cp,title:"表达方式管理",description:"管理麦麦的表达方式",path:"/resource/expression",category:"资源"},{icon:yI,title:"人物信息管理",description:"管理人物信息",path:"/resource/person",category:"资源"},{icon:Qee,title:"统计信息",description:"查看使用统计",path:"/statistics",category:"监控"},{icon:Uh,title:"插件市场",description:"浏览和安装插件",path:"/plugins",category:"扩展"},{icon:_v,title:"日志查看器",description:"查看系统日志",path:"/logs",category:"监控"},{icon:Xu,title:"系统设置",description:"配置系统参数",path:"/settings",category:"系统"}];function kMe({open:t,onOpenChange:e}){const[n,r]=b.useState(""),[s,i]=b.useState(0),a=Zi(),l=SMe.filter(h=>h.title.toLowerCase().includes(n.toLowerCase())||h.description.toLowerCase().includes(n.toLowerCase())||h.category.toLowerCase().includes(n.toLowerCase()));b.useEffect(()=>{t&&(r(""),i(0))},[t]);const c=b.useCallback(h=>{a({to:h}),e(!1)},[a,e]),d=b.useCallback(h=>{h.key==="ArrowDown"?(h.preventDefault(),i(m=>(m+1)%l.length)):h.key==="ArrowUp"?(h.preventDefault(),i(m=>(m-1+l.length)%l.length)):h.key==="Enter"&&l[s]&&(h.preventDefault(),c(l[s].path))},[l,s,c]);return o.jsx(Dr,{open:t,onOpenChange:e,children:o.jsxs(Sr,{className:"max-w-2xl p-0 gap-0",children:[o.jsxs(kr,{className:"px-4 pt-4 pb-0",children:[o.jsx(Or,{className:"sr-only",children:"搜索"}),o.jsxs("div",{className:"relative",children:[o.jsx(Ni,{className:"absolute left-3 top-1/2 h-5 w-5 -translate-y-1/2 text-muted-foreground"}),o.jsx(ze,{value:n,onChange:h=>{r(h.target.value),i(0)},onKeyDown:d,placeholder:"搜索页面...",className:"h-12 pl-11 text-base border-0 focus-visible:ring-0 shadow-none",autoFocus:!0})]})]}),o.jsx("div",{className:"border-t",children:o.jsx(wn,{className:"h-[400px]",children:l.length>0?o.jsx("div",{className:"p-2",children:l.map((h,m)=>{const g=h.icon;return o.jsxs("button",{onClick:()=>c(h.path),onMouseEnter:()=>i(m),className:ve("w-full flex items-center gap-3 px-3 py-2.5 rounded-md text-left transition-colors",m===s?"bg-accent text-accent-foreground":"hover:bg-accent/50"),children:[o.jsx(g,{className:"h-5 w-5 flex-shrink-0"}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("div",{className:"font-medium text-sm",children:h.title}),o.jsx("div",{className:"text-xs text-muted-foreground truncate",children:h.description})]}),o.jsx("div",{className:"text-xs text-muted-foreground px-2 py-1 bg-muted rounded",children:h.category})]},h.path)})}):o.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[o.jsx(Ni,{className:"h-12 w-12 text-muted-foreground/50 mb-4"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:n?"未找到匹配的页面":"输入关键词开始搜索"})]})})}),o.jsx("div",{className:"border-t px-4 py-3 flex items-center justify-between text-xs text-muted-foreground",children:o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsxs("span",{className:"flex items-center gap-1",children:[o.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↑"}),o.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↓"}),"导航"]}),o.jsxs("span",{className:"flex items-center gap-1",children:[o.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Enter"}),"选择"]}),o.jsxs("span",{className:"flex items-center gap-1",children:[o.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Esc"}),"关闭"]})]})})]})})}function OMe(t){const e=jMe(t),n=b.forwardRef((r,s)=>{const{children:i,...a}=r,l=b.Children.toArray(i),c=l.find(CMe);if(c){const d=c.props.children,h=l.map(m=>m===c?b.Children.count(d)>1?b.Children.only(null):b.isValidElement(d)?d.props.children:null:m);return o.jsx(e,{...a,ref:s,children:b.isValidElement(d)?b.cloneElement(d,void 0,h):null})}return o.jsx(e,{...a,ref:s,children:i})});return n.displayName=`${t}.Slot`,n}function jMe(t){const e=b.forwardRef((n,r)=>{const{children:s,...i}=n;if(b.isValidElement(s)){const a=EMe(s),l=TMe(i,s.props);return s.type!==b.Fragment&&(l.ref=r?Hc(r,a):a),b.cloneElement(s,l)}return b.Children.count(s)>1?b.Children.only(null):null});return e.displayName=`${t}.SlotClone`,e}var NMe=Symbol("radix.slottable");function CMe(t){return b.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===NMe}function TMe(t,e){const n={...e};for(const r in e){const s=t[r],i=e[r];/^on[A-Z]/.test(r)?s&&i?n[r]=(...l)=>{const c=i(...l);return s(...l),c}:s&&(n[r]=s):r==="style"?n[r]={...s,...i}:r==="className"&&(n[r]=[s,i].filter(Boolean).join(" "))}return{...t,...n}}function EMe(t){let e=Object.getOwnPropertyDescriptor(t.props,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning;return n?t.ref:(e=Object.getOwnPropertyDescriptor(t,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning,n?t.props.ref:t.props.ref||t.ref)}var rj=["Enter"," "],_Me=["ArrowDown","PageUp","Home"],oX=["ArrowUp","PageDown","End"],MMe=[..._Me,...oX],AMe={ltr:[...rj,"ArrowRight"],rtl:[...rj,"ArrowLeft"]},RMe={ltr:["ArrowLeft"],rtl:["ArrowRight"]},wg="Menu",[kp,DMe,PMe]=Dy(wg),[jd,lX]=Ra(wg,[PMe,gf,Gy]),Sg=gf(),cX=Gy(),[uX,fu]=jd(wg),[zMe,kg]=jd(wg),dX=t=>{const{__scopeMenu:e,open:n=!1,children:r,dir:s,onOpenChange:i,modal:a=!0}=t,l=Sg(e),[c,d]=b.useState(null),h=b.useRef(!1),m=qs(i),g=Np(s);return b.useEffect(()=>{const x=()=>{h.current=!0,document.addEventListener("pointerdown",y,{capture:!0,once:!0}),document.addEventListener("pointermove",y,{capture:!0,once:!0})},y=()=>h.current=!1;return document.addEventListener("keydown",x,{capture:!0}),()=>{document.removeEventListener("keydown",x,{capture:!0}),document.removeEventListener("pointerdown",y,{capture:!0}),document.removeEventListener("pointermove",y,{capture:!0})}},[]),o.jsx(By,{...l,children:o.jsx(uX,{scope:e,open:n,onOpenChange:m,content:c,onContentChange:d,children:o.jsx(zMe,{scope:e,onClose:b.useCallback(()=>m(!1),[m]),isUsingKeyboardRef:h,dir:g,modal:a,children:r})})})};dX.displayName=wg;var IMe="MenuAnchor",c7=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t,s=Sg(n);return o.jsx(Fy,{...s,...r,ref:e})});c7.displayName=IMe;var u7="MenuPortal",[LMe,hX]=jd(u7,{forceMount:void 0}),fX=t=>{const{__scopeMenu:e,forceMount:n,children:r,container:s}=t,i=fu(u7,e);return o.jsx(LMe,{scope:e,forceMount:n,children:o.jsx(si,{present:n||i.open,children:o.jsx(Ly,{asChild:!0,container:s,children:r})})})};fX.displayName=u7;var Ta="MenuContent",[BMe,d7]=jd(Ta),mX=b.forwardRef((t,e)=>{const n=hX(Ta,t.__scopeMenu),{forceMount:r=n.forceMount,...s}=t,i=fu(Ta,t.__scopeMenu),a=kg(Ta,t.__scopeMenu);return o.jsx(kp.Provider,{scope:t.__scopeMenu,children:o.jsx(si,{present:r||i.open,children:o.jsx(kp.Slot,{scope:t.__scopeMenu,children:a.modal?o.jsx(FMe,{...s,ref:e}):o.jsx(qMe,{...s,ref:e})})})})}),FMe=b.forwardRef((t,e)=>{const n=fu(Ta,t.__scopeMenu),r=b.useRef(null),s=Yn(e,r);return b.useEffect(()=>{const i=r.current;if(i)return iI(i)},[]),o.jsx(h7,{...t,ref:s,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:nt(t.onFocusOutside,i=>i.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),qMe=b.forwardRef((t,e)=>{const n=fu(Ta,t.__scopeMenu);return o.jsx(h7,{...t,ref:e,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),$Me=OMe("MenuContent.ScrollLock"),h7=b.forwardRef((t,e)=>{const{__scopeMenu:n,loop:r=!1,trapFocus:s,onOpenAutoFocus:i,onCloseAutoFocus:a,disableOutsidePointerEvents:l,onEntryFocus:c,onEscapeKeyDown:d,onPointerDownOutside:h,onFocusOutside:m,onInteractOutside:g,onDismiss:x,disableOutsideScroll:y,...w}=t,S=fu(Ta,n),k=kg(Ta,n),j=Sg(n),N=cX(n),T=DMe(n),[E,_]=b.useState(null),M=b.useRef(null),I=Yn(e,M,S.onContentChange),P=b.useRef(0),L=b.useRef(""),H=b.useRef(0),U=b.useRef(null),ee=b.useRef("right"),z=b.useRef(0),Q=y?aI:b.Fragment,B=y?{as:$Me,allowPinchZoom:!0}:void 0,X=G=>{const R=L.current+G,ie=T().filter(K=>!K.disabled),W=document.activeElement,q=ie.find(K=>K.ref.current===W)?.textValue,V=ie.map(K=>K.textValue),te=eAe(V,R,q),ne=ie.find(K=>K.textValue===te)?.ref.current;(function K(se){L.current=se,window.clearTimeout(P.current),se!==""&&(P.current=window.setTimeout(()=>K(""),1e3))})(R),ne&&setTimeout(()=>ne.focus())};b.useEffect(()=>()=>window.clearTimeout(P.current),[]),oI();const J=b.useCallback(G=>ee.current===U.current?.side&&nAe(G,U.current?.area),[]);return o.jsx(BMe,{scope:n,searchRef:L,onItemEnter:b.useCallback(G=>{J(G)&&G.preventDefault()},[J]),onItemLeave:b.useCallback(G=>{J(G)||(M.current?.focus(),_(null))},[J]),onTriggerLeave:b.useCallback(G=>{J(G)&&G.preventDefault()},[J]),pointerGraceTimerRef:H,onPointerGraceIntentChange:b.useCallback(G=>{U.current=G},[]),children:o.jsx(Q,{...B,children:o.jsx(lI,{asChild:!0,trapped:s,onMountAutoFocus:nt(i,G=>{G.preventDefault(),M.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:a,children:o.jsx(kj,{asChild:!0,disableOutsidePointerEvents:l,onEscapeKeyDown:d,onPointerDownOutside:h,onFocusOutside:m,onInteractOutside:g,onDismiss:x,children:o.jsx(lL,{asChild:!0,...N,dir:k.dir,orientation:"vertical",loop:r,currentTabStopId:E,onCurrentTabStopIdChange:_,onEntryFocus:nt(c,G=>{k.isUsingKeyboardRef.current||G.preventDefault()}),preventScrollOnEntryFocus:!0,children:o.jsx(Oj,{role:"menu","aria-orientation":"vertical","data-state":MX(S.open),"data-radix-menu-content":"",dir:k.dir,...j,...w,ref:I,style:{outline:"none",...w.style},onKeyDown:nt(w.onKeyDown,G=>{const ie=G.target.closest("[data-radix-menu-content]")===G.currentTarget,W=G.ctrlKey||G.altKey||G.metaKey,q=G.key.length===1;ie&&(G.key==="Tab"&&G.preventDefault(),!W&&q&&X(G.key));const V=M.current;if(G.target!==V||!MMe.includes(G.key))return;G.preventDefault();const ne=T().filter(K=>!K.disabled).map(K=>K.ref.current);oX.includes(G.key)&&ne.reverse(),ZMe(ne)}),onBlur:nt(t.onBlur,G=>{G.currentTarget.contains(G.target)||(window.clearTimeout(P.current),L.current="")}),onPointerMove:nt(t.onPointerMove,Op(G=>{const R=G.target,ie=z.current!==G.clientX;if(G.currentTarget.contains(R)&&ie){const W=G.clientX>z.current?"right":"left";ee.current=W,z.current=G.clientX}}))})})})})})})});mX.displayName=Ta;var HMe="MenuGroup",f7=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t;return o.jsx(gn.div,{role:"group",...r,ref:e})});f7.displayName=HMe;var QMe="MenuLabel",pX=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t;return o.jsx(gn.div,{...r,ref:e})});pX.displayName=QMe;var _y="MenuItem",Cz="menu.itemSelect",Kb=b.forwardRef((t,e)=>{const{disabled:n=!1,onSelect:r,...s}=t,i=b.useRef(null),a=kg(_y,t.__scopeMenu),l=d7(_y,t.__scopeMenu),c=Yn(e,i),d=b.useRef(!1),h=()=>{const m=i.current;if(!n&&m){const g=new CustomEvent(Cz,{bubbles:!0,cancelable:!0});m.addEventListener(Cz,x=>r?.(x),{once:!0}),uI(m,g),g.defaultPrevented?d.current=!1:a.onClose()}};return o.jsx(gX,{...s,ref:c,disabled:n,onClick:nt(t.onClick,h),onPointerDown:m=>{t.onPointerDown?.(m),d.current=!0},onPointerUp:nt(t.onPointerUp,m=>{d.current||m.currentTarget?.click()}),onKeyDown:nt(t.onKeyDown,m=>{const g=l.searchRef.current!=="";n||g&&m.key===" "||rj.includes(m.key)&&(m.currentTarget.click(),m.preventDefault())})})});Kb.displayName=_y;var gX=b.forwardRef((t,e)=>{const{__scopeMenu:n,disabled:r=!1,textValue:s,...i}=t,a=d7(_y,n),l=cX(n),c=b.useRef(null),d=Yn(e,c),[h,m]=b.useState(!1),[g,x]=b.useState("");return b.useEffect(()=>{const y=c.current;y&&x((y.textContent??"").trim())},[i.children]),o.jsx(kp.ItemSlot,{scope:n,disabled:r,textValue:s??g,children:o.jsx(cL,{asChild:!0,...l,focusable:!r,children:o.jsx(gn.div,{role:"menuitem","data-highlighted":h?"":void 0,"aria-disabled":r||void 0,"data-disabled":r?"":void 0,...i,ref:d,onPointerMove:nt(t.onPointerMove,Op(y=>{r?a.onItemLeave(y):(a.onItemEnter(y),y.defaultPrevented||y.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:nt(t.onPointerLeave,Op(y=>a.onItemLeave(y))),onFocus:nt(t.onFocus,()=>m(!0)),onBlur:nt(t.onBlur,()=>m(!1))})})})}),VMe="MenuCheckboxItem",xX=b.forwardRef((t,e)=>{const{checked:n=!1,onCheckedChange:r,...s}=t;return o.jsx(SX,{scope:t.__scopeMenu,checked:n,children:o.jsx(Kb,{role:"menuitemcheckbox","aria-checked":My(n)?"mixed":n,...s,ref:e,"data-state":g7(n),onSelect:nt(s.onSelect,()=>r?.(My(n)?!0:!n),{checkForDefaultPrevented:!1})})})});xX.displayName=VMe;var vX="MenuRadioGroup",[UMe,WMe]=jd(vX,{value:void 0,onValueChange:()=>{}}),yX=b.forwardRef((t,e)=>{const{value:n,onValueChange:r,...s}=t,i=qs(r);return o.jsx(UMe,{scope:t.__scopeMenu,value:n,onValueChange:i,children:o.jsx(f7,{...s,ref:e})})});yX.displayName=vX;var bX="MenuRadioItem",wX=b.forwardRef((t,e)=>{const{value:n,...r}=t,s=WMe(bX,t.__scopeMenu),i=n===s.value;return o.jsx(SX,{scope:t.__scopeMenu,checked:i,children:o.jsx(Kb,{role:"menuitemradio","aria-checked":i,...r,ref:e,"data-state":g7(i),onSelect:nt(r.onSelect,()=>s.onValueChange?.(n),{checkForDefaultPrevented:!1})})})});wX.displayName=bX;var m7="MenuItemIndicator",[SX,GMe]=jd(m7,{checked:!1}),kX=b.forwardRef((t,e)=>{const{__scopeMenu:n,forceMount:r,...s}=t,i=GMe(m7,n);return o.jsx(si,{present:r||My(i.checked)||i.checked===!0,children:o.jsx(gn.span,{...s,ref:e,"data-state":g7(i.checked)})})});kX.displayName=m7;var XMe="MenuSeparator",OX=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t;return o.jsx(gn.div,{role:"separator","aria-orientation":"horizontal",...r,ref:e})});OX.displayName=XMe;var YMe="MenuArrow",jX=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t,s=Sg(n);return o.jsx(jj,{...s,...r,ref:e})});jX.displayName=YMe;var p7="MenuSub",[KMe,NX]=jd(p7),CX=t=>{const{__scopeMenu:e,children:n,open:r=!1,onOpenChange:s}=t,i=fu(p7,e),a=Sg(e),[l,c]=b.useState(null),[d,h]=b.useState(null),m=qs(s);return b.useEffect(()=>(i.open===!1&&m(!1),()=>m(!1)),[i.open,m]),o.jsx(By,{...a,children:o.jsx(uX,{scope:e,open:r,onOpenChange:m,content:d,onContentChange:h,children:o.jsx(KMe,{scope:e,contentId:Ui(),triggerId:Ui(),trigger:l,onTriggerChange:c,children:n})})})};CX.displayName=p7;var m0="MenuSubTrigger",TX=b.forwardRef((t,e)=>{const n=fu(m0,t.__scopeMenu),r=kg(m0,t.__scopeMenu),s=NX(m0,t.__scopeMenu),i=d7(m0,t.__scopeMenu),a=b.useRef(null),{pointerGraceTimerRef:l,onPointerGraceIntentChange:c}=i,d={__scopeMenu:t.__scopeMenu},h=b.useCallback(()=>{a.current&&window.clearTimeout(a.current),a.current=null},[]);return b.useEffect(()=>h,[h]),b.useEffect(()=>{const m=l.current;return()=>{window.clearTimeout(m),c(null)}},[l,c]),o.jsx(c7,{asChild:!0,...d,children:o.jsx(gX,{id:s.triggerId,"aria-haspopup":"menu","aria-expanded":n.open,"aria-controls":s.contentId,"data-state":MX(n.open),...t,ref:Hc(e,s.onTriggerChange),onClick:m=>{t.onClick?.(m),!(t.disabled||m.defaultPrevented)&&(m.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:nt(t.onPointerMove,Op(m=>{i.onItemEnter(m),!m.defaultPrevented&&!t.disabled&&!n.open&&!a.current&&(i.onPointerGraceIntentChange(null),a.current=window.setTimeout(()=>{n.onOpenChange(!0),h()},100))})),onPointerLeave:nt(t.onPointerLeave,Op(m=>{h();const g=n.content?.getBoundingClientRect();if(g){const x=n.content?.dataset.side,y=x==="right",w=y?-5:5,S=g[y?"left":"right"],k=g[y?"right":"left"];i.onPointerGraceIntentChange({area:[{x:m.clientX+w,y:m.clientY},{x:S,y:g.top},{x:k,y:g.top},{x:k,y:g.bottom},{x:S,y:g.bottom}],side:x}),window.clearTimeout(l.current),l.current=window.setTimeout(()=>i.onPointerGraceIntentChange(null),300)}else{if(i.onTriggerLeave(m),m.defaultPrevented)return;i.onPointerGraceIntentChange(null)}})),onKeyDown:nt(t.onKeyDown,m=>{const g=i.searchRef.current!=="";t.disabled||g&&m.key===" "||AMe[r.dir].includes(m.key)&&(n.onOpenChange(!0),n.content?.focus(),m.preventDefault())})})})});TX.displayName=m0;var EX="MenuSubContent",_X=b.forwardRef((t,e)=>{const n=hX(Ta,t.__scopeMenu),{forceMount:r=n.forceMount,...s}=t,i=fu(Ta,t.__scopeMenu),a=kg(Ta,t.__scopeMenu),l=NX(EX,t.__scopeMenu),c=b.useRef(null),d=Yn(e,c);return o.jsx(kp.Provider,{scope:t.__scopeMenu,children:o.jsx(si,{present:r||i.open,children:o.jsx(kp.Slot,{scope:t.__scopeMenu,children:o.jsx(h7,{id:l.contentId,"aria-labelledby":l.triggerId,...s,ref:d,align:"start",side:a.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:h=>{a.isUsingKeyboardRef.current&&c.current?.focus(),h.preventDefault()},onCloseAutoFocus:h=>h.preventDefault(),onFocusOutside:nt(t.onFocusOutside,h=>{h.target!==l.trigger&&i.onOpenChange(!1)}),onEscapeKeyDown:nt(t.onEscapeKeyDown,h=>{a.onClose(),h.preventDefault()}),onKeyDown:nt(t.onKeyDown,h=>{const m=h.currentTarget.contains(h.target),g=RMe[a.dir].includes(h.key);m&&g&&(i.onOpenChange(!1),l.trigger?.focus(),h.preventDefault())})})})})})});_X.displayName=EX;function MX(t){return t?"open":"closed"}function My(t){return t==="indeterminate"}function g7(t){return My(t)?"indeterminate":t?"checked":"unchecked"}function ZMe(t){const e=document.activeElement;for(const n of t)if(n===e||(n.focus(),document.activeElement!==e))return}function JMe(t,e){return t.map((n,r)=>t[(e+r)%t.length])}function eAe(t,e,n){const s=e.length>1&&Array.from(e).every(d=>d===e[0])?e[0]:e,i=n?t.indexOf(n):-1;let a=JMe(t,Math.max(i,0));s.length===1&&(a=a.filter(d=>d!==n));const c=a.find(d=>d.toLowerCase().startsWith(s.toLowerCase()));return c!==n?c:void 0}function tAe(t,e){const{x:n,y:r}=t;let s=!1;for(let i=0,a=e.length-1;ir!=g>r&&n<(m-d)*(r-h)/(g-h)+d&&(s=!s)}return s}function nAe(t,e){if(!e)return!1;const n={x:t.clientX,y:t.clientY};return tAe(n,e)}function Op(t){return e=>e.pointerType==="mouse"?t(e):void 0}var rAe=dX,sAe=c7,iAe=fX,aAe=mX,oAe=f7,lAe=pX,cAe=Kb,uAe=xX,dAe=yX,hAe=wX,fAe=kX,mAe=OX,pAe=jX,gAe=CX,xAe=TX,vAe=_X,x7="ContextMenu",[yAe]=Ra(x7,[lX]),Gs=lX(),[bAe,AX]=yAe(x7),RX=t=>{const{__scopeContextMenu:e,children:n,onOpenChange:r,dir:s,modal:i=!0}=t,[a,l]=b.useState(!1),c=Gs(e),d=qs(r),h=b.useCallback(m=>{l(m),d(m)},[d]);return o.jsx(bAe,{scope:e,open:a,onOpenChange:h,modal:i,children:o.jsx(rAe,{...c,dir:s,open:a,onOpenChange:h,modal:i,children:n})})};RX.displayName=x7;var DX="ContextMenuTrigger",PX=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,disabled:r=!1,...s}=t,i=AX(DX,n),a=Gs(n),l=b.useRef({x:0,y:0}),c=b.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...l.current})}),d=b.useRef(0),h=b.useCallback(()=>window.clearTimeout(d.current),[]),m=g=>{l.current={x:g.clientX,y:g.clientY},i.onOpenChange(!0)};return b.useEffect(()=>h,[h]),b.useEffect(()=>void(r&&h()),[r,h]),o.jsxs(o.Fragment,{children:[o.jsx(sAe,{...a,virtualRef:c}),o.jsx(gn.span,{"data-state":i.open?"open":"closed","data-disabled":r?"":void 0,...s,ref:e,style:{WebkitTouchCallout:"none",...t.style},onContextMenu:r?t.onContextMenu:nt(t.onContextMenu,g=>{h(),m(g),g.preventDefault()}),onPointerDown:r?t.onPointerDown:nt(t.onPointerDown,X1(g=>{h(),d.current=window.setTimeout(()=>m(g),700)})),onPointerMove:r?t.onPointerMove:nt(t.onPointerMove,X1(h)),onPointerCancel:r?t.onPointerCancel:nt(t.onPointerCancel,X1(h)),onPointerUp:r?t.onPointerUp:nt(t.onPointerUp,X1(h))})]})});PX.displayName=DX;var wAe="ContextMenuPortal",zX=t=>{const{__scopeContextMenu:e,...n}=t,r=Gs(e);return o.jsx(iAe,{...r,...n})};zX.displayName=wAe;var IX="ContextMenuContent",LX=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=AX(IX,n),i=Gs(n),a=b.useRef(!1);return o.jsx(aAe,{...i,...r,ref:e,side:"right",sideOffset:2,align:"start",onCloseAutoFocus:l=>{t.onCloseAutoFocus?.(l),!l.defaultPrevented&&a.current&&l.preventDefault(),a.current=!1},onInteractOutside:l=>{t.onInteractOutside?.(l),!l.defaultPrevented&&!s.modal&&(a.current=!0)},style:{...t.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});LX.displayName=IX;var SAe="ContextMenuGroup",kAe=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(oAe,{...s,...r,ref:e})});kAe.displayName=SAe;var OAe="ContextMenuLabel",BX=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(lAe,{...s,...r,ref:e})});BX.displayName=OAe;var jAe="ContextMenuItem",FX=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(cAe,{...s,...r,ref:e})});FX.displayName=jAe;var NAe="ContextMenuCheckboxItem",qX=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(uAe,{...s,...r,ref:e})});qX.displayName=NAe;var CAe="ContextMenuRadioGroup",TAe=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(dAe,{...s,...r,ref:e})});TAe.displayName=CAe;var EAe="ContextMenuRadioItem",$X=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(hAe,{...s,...r,ref:e})});$X.displayName=EAe;var _Ae="ContextMenuItemIndicator",HX=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(fAe,{...s,...r,ref:e})});HX.displayName=_Ae;var MAe="ContextMenuSeparator",QX=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(mAe,{...s,...r,ref:e})});QX.displayName=MAe;var AAe="ContextMenuArrow",RAe=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(pAe,{...s,...r,ref:e})});RAe.displayName=AAe;var VX="ContextMenuSub",UX=t=>{const{__scopeContextMenu:e,children:n,onOpenChange:r,open:s,defaultOpen:i}=t,a=Gs(e),[l,c]=Gl({prop:s,defaultProp:i??!1,onChange:r,caller:VX});return o.jsx(gAe,{...a,open:l,onOpenChange:c,children:n})};UX.displayName=VX;var DAe="ContextMenuSubTrigger",WX=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(xAe,{...s,...r,ref:e})});WX.displayName=DAe;var PAe="ContextMenuSubContent",GX=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(vAe,{...s,...r,ref:e,style:{...t.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});GX.displayName=PAe;function X1(t){return e=>e.pointerType!=="mouse"?t(e):void 0}var zAe=RX,IAe=PX,LAe=zX,XX=LX,YX=BX,KX=FX,ZX=qX,JX=$X,eY=HX,tY=QX,BAe=UX,nY=WX,rY=GX;const FAe=zAe,qAe=IAe,$Ae=BAe,sY=b.forwardRef(({className:t,inset:e,children:n,...r},s)=>o.jsxs(nY,{ref:s,className:ve("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",e&&"pl-8",t),...r,children:[n,o.jsx(yd,{className:"ml-auto h-4 w-4"})]}));sY.displayName=nY.displayName;const iY=b.forwardRef(({className:t,...e},n)=>o.jsx(rY,{ref:n,className:ve("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]",t),...e}));iY.displayName=rY.displayName;const aY=b.forwardRef(({className:t,...e},n)=>o.jsx(LAe,{children:o.jsx(XX,{ref:n,className:ve("z-50 max-h-[--radix-context-menu-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]",t),...e})}));aY.displayName=XX.displayName;const qa=b.forwardRef(({className:t,inset:e,...n},r)=>o.jsx(KX,{ref:r,className:ve("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e&&"pl-8",t),...n}));qa.displayName=KX.displayName;const HAe=b.forwardRef(({className:t,children:e,checked:n,...r},s)=>o.jsxs(ZX,{ref:s,className:ve("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),checked:n,...r,children:[o.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:o.jsx(eY,{children:o.jsx(Ro,{className:"h-4 w-4"})})}),e]}));HAe.displayName=ZX.displayName;const QAe=b.forwardRef(({className:t,children:e,...n},r)=>o.jsxs(JX,{ref:r,className:ve("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),...n,children:[o.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:o.jsx(eY,{children:o.jsx(Vee,{className:"h-2 w-2 fill-current"})})}),e]}));QAe.displayName=JX.displayName;const VAe=b.forwardRef(({className:t,inset:e,...n},r)=>o.jsx(YX,{ref:r,className:ve("px-2 py-1.5 text-sm font-semibold text-foreground",e&&"pl-8",t),...n}));VAe.displayName=YX.displayName;const p0=b.forwardRef(({className:t,...e},n)=>o.jsx(tY,{ref:n,className:ve("-mx-1 my-1 h-px bg-border",t),...e}));p0.displayName=tY.displayName;const jh=({className:t,...e})=>o.jsx("span",{className:ve("ml-auto text-xs tracking-widest text-muted-foreground",t),...e});jh.displayName="ContextMenuShortcut";var UAe=Symbol("radix.slottable");function WAe(t){const e=({children:n})=>o.jsx(o.Fragment,{children:n});return e.displayName=`${t}.Slottable`,e.__radixId=UAe,e}var[Zb]=Ra("Tooltip",[gf]),Jb=gf(),oY="TooltipProvider",GAe=700,sj="tooltip.open",[XAe,v7]=Zb(oY),lY=t=>{const{__scopeTooltip:e,delayDuration:n=GAe,skipDelayDuration:r=300,disableHoverableContent:s=!1,children:i}=t,a=b.useRef(!0),l=b.useRef(!1),c=b.useRef(0);return b.useEffect(()=>{const d=c.current;return()=>window.clearTimeout(d)},[]),o.jsx(XAe,{scope:e,isOpenDelayedRef:a,delayDuration:n,onOpen:b.useCallback(()=>{window.clearTimeout(c.current),a.current=!1},[]),onClose:b.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>a.current=!0,r)},[r]),isPointerInTransitRef:l,onPointerInTransitChange:b.useCallback(d=>{l.current=d},[]),disableHoverableContent:s,children:i})};lY.displayName=oY;var jp="Tooltip",[YAe,Og]=Zb(jp),cY=t=>{const{__scopeTooltip:e,children:n,open:r,defaultOpen:s,onOpenChange:i,disableHoverableContent:a,delayDuration:l}=t,c=v7(jp,t.__scopeTooltip),d=Jb(e),[h,m]=b.useState(null),g=Ui(),x=b.useRef(0),y=a??c.disableHoverableContent,w=l??c.delayDuration,S=b.useRef(!1),[k,j]=Gl({prop:r,defaultProp:s??!1,onChange:M=>{M?(c.onOpen(),document.dispatchEvent(new CustomEvent(sj))):c.onClose(),i?.(M)},caller:jp}),N=b.useMemo(()=>k?S.current?"delayed-open":"instant-open":"closed",[k]),T=b.useCallback(()=>{window.clearTimeout(x.current),x.current=0,S.current=!1,j(!0)},[j]),E=b.useCallback(()=>{window.clearTimeout(x.current),x.current=0,j(!1)},[j]),_=b.useCallback(()=>{window.clearTimeout(x.current),x.current=window.setTimeout(()=>{S.current=!0,j(!0),x.current=0},w)},[w,j]);return b.useEffect(()=>()=>{x.current&&(window.clearTimeout(x.current),x.current=0)},[]),o.jsx(By,{...d,children:o.jsx(YAe,{scope:e,contentId:g,open:k,stateAttribute:N,trigger:h,onTriggerChange:m,onTriggerEnter:b.useCallback(()=>{c.isOpenDelayedRef.current?_():T()},[c.isOpenDelayedRef,_,T]),onTriggerLeave:b.useCallback(()=>{y?E():(window.clearTimeout(x.current),x.current=0)},[E,y]),onOpen:T,onClose:E,disableHoverableContent:y,children:n})})};cY.displayName=jp;var ij="TooltipTrigger",uY=b.forwardRef((t,e)=>{const{__scopeTooltip:n,...r}=t,s=Og(ij,n),i=v7(ij,n),a=Jb(n),l=b.useRef(null),c=Yn(e,l,s.onTriggerChange),d=b.useRef(!1),h=b.useRef(!1),m=b.useCallback(()=>d.current=!1,[]);return b.useEffect(()=>()=>document.removeEventListener("pointerup",m),[m]),o.jsx(Fy,{asChild:!0,...a,children:o.jsx(gn.button,{"aria-describedby":s.open?s.contentId:void 0,"data-state":s.stateAttribute,...r,ref:c,onPointerMove:nt(t.onPointerMove,g=>{g.pointerType!=="touch"&&!h.current&&!i.isPointerInTransitRef.current&&(s.onTriggerEnter(),h.current=!0)}),onPointerLeave:nt(t.onPointerLeave,()=>{s.onTriggerLeave(),h.current=!1}),onPointerDown:nt(t.onPointerDown,()=>{s.open&&s.onClose(),d.current=!0,document.addEventListener("pointerup",m,{once:!0})}),onFocus:nt(t.onFocus,()=>{d.current||s.onOpen()}),onBlur:nt(t.onBlur,s.onClose),onClick:nt(t.onClick,s.onClose)})})});uY.displayName=ij;var y7="TooltipPortal",[KAe,ZAe]=Zb(y7,{forceMount:void 0}),dY=t=>{const{__scopeTooltip:e,forceMount:n,children:r,container:s}=t,i=Og(y7,e);return o.jsx(KAe,{scope:e,forceMount:n,children:o.jsx(si,{present:n||i.open,children:o.jsx(Ly,{asChild:!0,container:s,children:r})})})};dY.displayName=y7;var pf="TooltipContent",hY=b.forwardRef((t,e)=>{const n=ZAe(pf,t.__scopeTooltip),{forceMount:r=n.forceMount,side:s="top",...i}=t,a=Og(pf,t.__scopeTooltip);return o.jsx(si,{present:r||a.open,children:a.disableHoverableContent?o.jsx(fY,{side:s,...i,ref:e}):o.jsx(JAe,{side:s,...i,ref:e})})}),JAe=b.forwardRef((t,e)=>{const n=Og(pf,t.__scopeTooltip),r=v7(pf,t.__scopeTooltip),s=b.useRef(null),i=Yn(e,s),[a,l]=b.useState(null),{trigger:c,onClose:d}=n,h=s.current,{onPointerInTransitChange:m}=r,g=b.useCallback(()=>{l(null),m(!1)},[m]),x=b.useCallback((y,w)=>{const S=y.currentTarget,k={x:y.clientX,y:y.clientY},j=sRe(k,S.getBoundingClientRect()),N=iRe(k,j),T=aRe(w.getBoundingClientRect()),E=lRe([...N,...T]);l(E),m(!0)},[m]);return b.useEffect(()=>()=>g(),[g]),b.useEffect(()=>{if(c&&h){const y=S=>x(S,h),w=S=>x(S,c);return c.addEventListener("pointerleave",y),h.addEventListener("pointerleave",w),()=>{c.removeEventListener("pointerleave",y),h.removeEventListener("pointerleave",w)}}},[c,h,x,g]),b.useEffect(()=>{if(a){const y=w=>{const S=w.target,k={x:w.clientX,y:w.clientY},j=c?.contains(S)||h?.contains(S),N=!oRe(k,a);j?g():N&&(g(),d())};return document.addEventListener("pointermove",y),()=>document.removeEventListener("pointermove",y)}},[c,h,a,d,g]),o.jsx(fY,{...t,ref:i})}),[eRe,tRe]=Zb(jp,{isInside:!1}),nRe=WAe("TooltipContent"),fY=b.forwardRef((t,e)=>{const{__scopeTooltip:n,children:r,"aria-label":s,onEscapeKeyDown:i,onPointerDownOutside:a,...l}=t,c=Og(pf,n),d=Jb(n),{onClose:h}=c;return b.useEffect(()=>(document.addEventListener(sj,h),()=>document.removeEventListener(sj,h)),[h]),b.useEffect(()=>{if(c.trigger){const m=g=>{g.target?.contains(c.trigger)&&h()};return window.addEventListener("scroll",m,{capture:!0}),()=>window.removeEventListener("scroll",m,{capture:!0})}},[c.trigger,h]),o.jsx(kj,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:i,onPointerDownOutside:a,onFocusOutside:m=>m.preventDefault(),onDismiss:h,children:o.jsxs(Oj,{"data-state":c.stateAttribute,...d,...l,ref:e,style:{...l.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[o.jsx(nRe,{children:r}),o.jsx(eRe,{scope:n,isInside:!0,children:o.jsx(vee,{id:c.contentId,role:"tooltip",children:s||r})})]})})});hY.displayName=pf;var mY="TooltipArrow",rRe=b.forwardRef((t,e)=>{const{__scopeTooltip:n,...r}=t,s=Jb(n);return tRe(mY,n).isInside?null:o.jsx(jj,{...s,...r,ref:e})});rRe.displayName=mY;function sRe(t,e){const n=Math.abs(e.top-t.y),r=Math.abs(e.bottom-t.y),s=Math.abs(e.right-t.x),i=Math.abs(e.left-t.x);switch(Math.min(n,r,s,i)){case i:return"left";case s:return"right";case n:return"top";case r:return"bottom";default:throw new Error("unreachable")}}function iRe(t,e,n=5){const r=[];switch(e){case"top":r.push({x:t.x-n,y:t.y+n},{x:t.x+n,y:t.y+n});break;case"bottom":r.push({x:t.x-n,y:t.y-n},{x:t.x+n,y:t.y-n});break;case"left":r.push({x:t.x+n,y:t.y-n},{x:t.x+n,y:t.y+n});break;case"right":r.push({x:t.x-n,y:t.y-n},{x:t.x-n,y:t.y+n});break}return r}function aRe(t){const{top:e,right:n,bottom:r,left:s}=t;return[{x:s,y:e},{x:n,y:e},{x:n,y:r},{x:s,y:r}]}function oRe(t,e){const{x:n,y:r}=t;let s=!1;for(let i=0,a=e.length-1;ir!=g>r&&n<(m-d)*(r-h)/(g-h)+d&&(s=!s)}return s}function lRe(t){const e=t.slice();return e.sort((n,r)=>n.xr.x?1:n.yr.y?1:0),cRe(e)}function cRe(t){if(t.length<=1)return t.slice();const e=[];for(let r=0;r=2;){const i=e[e.length-1],a=e[e.length-2];if((i.x-a.x)*(s.y-a.y)>=(i.y-a.y)*(s.x-a.x))e.pop();else break}e.push(s)}e.pop();const n=[];for(let r=t.length-1;r>=0;r--){const s=t[r];for(;n.length>=2;){const i=n[n.length-1],a=n[n.length-2];if((i.x-a.x)*(s.y-a.y)>=(i.y-a.y)*(s.x-a.x))n.pop();else break}n.push(s)}return n.pop(),e.length===1&&n.length===1&&e[0].x===n[0].x&&e[0].y===n[0].y?e:e.concat(n)}var uRe=lY,dRe=cY,hRe=uY,fRe=dY,pY=hY;const mRe=uRe,pRe=dRe,gRe=hRe,gY=b.forwardRef(({className:t,sideOffset:e=4,...n},r)=>o.jsx(fRe,{children:o.jsx(pY,{ref:r,sideOffset:e,className:ve("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",t),...n})}));gY.displayName=pY.displayName;function xRe({children:t}){Vse();const[e,n]=b.useState(!0),[r,s]=b.useState(!1),[i,a]=b.useState(!1),{theme:l,setTheme:c}=qj(),d=tJ(),h=Zi();b.useEffect(()=>{const w=S=>{(S.metaKey||S.ctrlKey)&&S.key==="k"&&(S.preventDefault(),a(!0))};return window.addEventListener("keydown",w),()=>window.removeEventListener("keydown",w)},[]);const m=[{title:"概览",items:[{icon:M0,label:"首页",path:"/"}]},{title:"麦麦配置编辑",items:[{icon:Pl,label:"麦麦主程序配置",path:"/config/bot"},{icon:xI,label:"AI模型厂商配置",path:"/config/modelProvider",tourId:"sidebar-model-provider"},{icon:vI,label:"模型管理与分配",path:"/config/model",tourId:"sidebar-model-management"},{icon:x9,label:"麦麦适配器配置",path:"/config/adapter"}]},{title:"麦麦资源管理",items:[{icon:Nj,label:"表情包管理",path:"/resource/emoji"},{icon:Cp,label:"表达方式管理",path:"/resource/expression"},{icon:yI,label:"人物信息管理",path:"/resource/person"},{icon:gI,label:"知识库图谱可视化",path:"/resource/knowledge-graph"}]},{title:"扩展与监控",items:[{icon:Uh,label:"插件市场",path:"/plugins"},{icon:x9,label:"插件配置",path:"/plugin-config"},{icon:_v,label:"日志查看器",path:"/logs"}]},{title:"系统",items:[{icon:Xu,label:"系统设置",path:"/settings"}]}],x=l==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":l,y=()=>{localStorage.removeItem("access-token"),h({to:"/auth"})};return o.jsx(mRe,{delayDuration:300,children:o.jsxs("div",{className:"flex h-screen overflow-hidden",children:[o.jsxs("aside",{className:ve("fixed inset-y-0 left-0 z-50 flex flex-col border-r bg-card transition-all duration-300 lg:relative lg:z-0","w-64 lg:w-auto",e?"lg:w-64":"lg:w-16",r?"translate-x-0":"-translate-x-full lg:translate-x-0"),children:[o.jsx("div",{className:"flex h-16 items-center border-b px-4",children:o.jsxs("div",{className:ve("relative flex items-center justify-center flex-1 transition-all overflow-hidden","lg:flex-1",!e&&"lg:flex-none lg:w-8"),children:[o.jsxs("div",{className:ve("flex items-baseline gap-2",!e&&"lg:hidden"),children:[o.jsx("span",{className:"font-bold text-xl text-primary-gradient whitespace-nowrap",children:"MaiBot WebUI"}),o.jsx("span",{className:"text-xs text-primary/60 whitespace-nowrap",children:wse()})]}),!e&&o.jsx("span",{className:"hidden lg:block font-bold text-primary-gradient text-2xl",children:"M"})]})}),o.jsx(wn,{className:ve("flex-1 overflow-x-hidden",!e&&"lg:w-16"),children:o.jsx("nav",{className:ve("p-4",!e&&"lg:p-2 lg:w-16"),children:o.jsx("ul",{className:ve("space-y-6",!e&&"lg:space-y-3 lg:w-full"),children:m.map((w,S)=>o.jsxs("li",{children:[o.jsx("div",{className:ve("px-3 h-[1.25rem]","mb-2",!e&&"lg:mb-1 lg:invisible"),children:o.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground/60 whitespace-nowrap",children:w.title})}),!e&&S>0&&o.jsx("div",{className:"hidden lg:block mb-2 border-t border-border"}),o.jsx("ul",{className:"space-y-1",children:w.items.map(k=>{const j=d({to:k.path}),N=k.icon,T=o.jsxs(o.Fragment,{children:[j&&o.jsx("div",{className:"absolute left-0 top-1/2 h-8 w-1 -translate-y-1/2 rounded-r-full bg-primary transition-opacity duration-300"}),o.jsxs("div",{className:ve("flex items-center transition-all duration-300",e?"gap-3":"gap-3 lg:gap-0"),children:[o.jsx(N,{className:ve("h-5 w-5 flex-shrink-0",j&&"text-primary"),strokeWidth:2,fill:"none"}),o.jsx("span",{className:ve("text-sm font-medium whitespace-nowrap transition-all duration-300",j&&"font-semibold",e?"opacity-100 max-w-[200px]":"opacity-100 max-w-[200px] lg:opacity-0 lg:max-w-0 lg:overflow-hidden"),children:k.label})]})]});return o.jsx("li",{className:"relative",children:o.jsxs(pRe,{children:[o.jsx(gRe,{asChild:!0,children:o.jsx(nJ,{to:k.path,"data-tour":k.tourId,className:ve("relative flex items-center rounded-lg py-2 transition-all duration-300","hover:bg-accent hover:text-accent-foreground",j?"bg-accent text-foreground":"text-muted-foreground hover:text-foreground",e?"px-3":"px-3 lg:px-0 lg:justify-center lg:w-12 lg:mx-auto"),onClick:()=>s(!1),children:T})}),!e&&o.jsx(gY,{side:"right",className:"hidden lg:block",children:o.jsx("p",{children:k.label})})]})},k.path)})})]},w.title))})})})]}),r&&o.jsx("div",{className:"fixed inset-0 z-40 bg-black/50 lg:hidden",onClick:()=>s(!1)}),o.jsxs("div",{className:"flex flex-1 flex-col overflow-hidden",children:[o.jsxs("header",{className:"flex h-16 items-center justify-between border-b bg-card/80 backdrop-blur-md px-4 sticky top-0 z-10",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsx("button",{onClick:()=>s(!r),className:"rounded-lg p-2 hover:bg-accent lg:hidden",children:o.jsx(Uee,{className:"h-5 w-5"})}),o.jsx("button",{onClick:()=>n(!e),className:"hidden rounded-lg p-2 hover:bg-accent lg:block",title:e?"收起侧边栏":"展开侧边栏",children:o.jsx(vd,{className:ve("h-5 w-5 transition-transform",!e&&"rotate-180")})})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsxs("button",{onClick:()=>a(!0),className:"relative hidden md:flex items-center w-64 h-9 pl-9 pr-16 bg-background/50 border rounded-md hover:bg-accent/50 transition-colors text-left",children:[o.jsx(Ni,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),o.jsx("span",{className:"text-sm text-muted-foreground",children:"搜索..."}),o.jsxs(aX,{size:"sm",className:"absolute right-2 top-1/2 -translate-y-1/2",children:[o.jsx("span",{className:"text-xs",children:"⌘"}),"K"]})]}),o.jsx(kMe,{open:i,onOpenChange:a}),o.jsxs(he,{variant:"ghost",size:"sm",onClick:()=>window.open("https://docs.mai-mai.org","_blank"),className:"gap-2",title:"查看麦麦文档",children:[o.jsx(Wee,{className:"h-4 w-4"}),o.jsx("span",{className:"hidden sm:inline",children:"麦麦文档"})]}),o.jsx("button",{onClick:w=>{ase(x==="dark"?"light":"dark",c,w)},className:"rounded-lg p-2 hover:bg-accent",title:x==="dark"?"切换到浅色模式":"切换到深色模式",children:x==="dark"?o.jsx(Y3,{className:"h-5 w-5"}):o.jsx(K3,{className:"h-5 w-5"})}),o.jsx("div",{className:"h-6 w-px bg-border"}),o.jsxs(he,{variant:"ghost",size:"sm",onClick:y,className:"gap-2",title:"登出系统",children:[o.jsx(v9,{className:"h-4 w-4"}),o.jsx("span",{className:"hidden sm:inline",children:"登出"})]})]})]}),o.jsxs(FAe,{children:[o.jsx(qAe,{asChild:!0,children:o.jsx("main",{className:"flex-1 overflow-hidden bg-background",children:t})}),o.jsxs(aY,{className:"w-64",children:[o.jsxs(qa,{onClick:()=>h({to:"/"}),children:[o.jsx(M0,{className:"mr-2 h-4 w-4"}),"首页"]}),o.jsxs(qa,{onClick:()=>h({to:"/settings"}),children:[o.jsx(Xu,{className:"mr-2 h-4 w-4"}),"系统设置"]}),o.jsxs(qa,{onClick:()=>h({to:"/logs"}),children:[o.jsx(_v,{className:"mr-2 h-4 w-4"}),"日志查看器"]}),o.jsx(p0,{}),o.jsxs($Ae,{children:[o.jsxs(sY,{children:[o.jsx(hI,{className:"mr-2 h-4 w-4"}),"切换主题"]}),o.jsxs(iY,{className:"w-48",children:[o.jsxs(qa,{onClick:()=>c("light"),disabled:l==="light",children:[o.jsx(Y3,{className:"mr-2 h-4 w-4"}),"浅色",l==="light"&&o.jsx(jh,{children:"✓"})]}),o.jsxs(qa,{onClick:()=>c("dark"),disabled:l==="dark",children:[o.jsx(K3,{className:"mr-2 h-4 w-4"}),"深色",l==="dark"&&o.jsx(jh,{children:"✓"})]}),o.jsxs(qa,{onClick:()=>c("system"),disabled:l==="system",children:[o.jsx(Xu,{className:"mr-2 h-4 w-4"}),"跟随系统",l==="system"&&o.jsx(jh,{children:"✓"})]})]})]}),o.jsx(p0,{}),o.jsxs(qa,{onClick:()=>window.location.reload(),children:[o.jsx(Gee,{className:"mr-2 h-4 w-4"}),"刷新页面",o.jsx(jh,{children:"⌘R"})]}),o.jsxs(qa,{onClick:()=>a(!0),children:[o.jsx(Ni,{className:"mr-2 h-4 w-4"}),"搜索",o.jsx(jh,{children:"⌘K"})]}),o.jsx(p0,{}),o.jsxs(qa,{onClick:()=>window.open("https://docs.mai-mai.org","_blank"),children:[o.jsx(Mh,{className:"mr-2 h-4 w-4"}),"麦麦文档"]}),o.jsx(p0,{}),o.jsxs(qa,{onClick:y,className:"text-destructive focus:text-destructive",children:[o.jsx(v9,{className:"mr-2 h-4 w-4"}),"登出系统"]})]})]})]})]})})}var ew="Collapsible",[vRe]=Ra(ew),[yRe,b7]=vRe(ew),xY=b.forwardRef((t,e)=>{const{__scopeCollapsible:n,open:r,defaultOpen:s,disabled:i,onOpenChange:a,...l}=t,[c,d]=Gl({prop:r,defaultProp:s??!1,onChange:a,caller:ew});return o.jsx(yRe,{scope:n,disabled:i,contentId:Ui(),open:c,onOpenToggle:b.useCallback(()=>d(h=>!h),[d]),children:o.jsx(gn.div,{"data-state":S7(c),"data-disabled":i?"":void 0,...l,ref:e})})});xY.displayName=ew;var vY="CollapsibleTrigger",yY=b.forwardRef((t,e)=>{const{__scopeCollapsible:n,...r}=t,s=b7(vY,n);return o.jsx(gn.button,{type:"button","aria-controls":s.contentId,"aria-expanded":s.open||!1,"data-state":S7(s.open),"data-disabled":s.disabled?"":void 0,disabled:s.disabled,...r,ref:e,onClick:nt(t.onClick,s.onOpenToggle)})});yY.displayName=vY;var w7="CollapsibleContent",bY=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=b7(w7,t.__scopeCollapsible);return o.jsx(si,{present:n||s.open,children:({present:i})=>o.jsx(bRe,{...r,ref:e,present:i})})});bY.displayName=w7;var bRe=b.forwardRef((t,e)=>{const{__scopeCollapsible:n,present:r,children:s,...i}=t,a=b7(w7,n),[l,c]=b.useState(r),d=b.useRef(null),h=Yn(e,d),m=b.useRef(0),g=m.current,x=b.useRef(0),y=x.current,w=a.open||l,S=b.useRef(w),k=b.useRef(void 0);return b.useEffect(()=>{const j=requestAnimationFrame(()=>S.current=!1);return()=>cancelAnimationFrame(j)},[]),gj(()=>{const j=d.current;if(j){k.current=k.current||{transitionDuration:j.style.transitionDuration,animationName:j.style.animationName},j.style.transitionDuration="0s",j.style.animationName="none";const N=j.getBoundingClientRect();m.current=N.height,x.current=N.width,S.current||(j.style.transitionDuration=k.current.transitionDuration,j.style.animationName=k.current.animationName),c(r)}},[a.open,r]),o.jsx(gn.div,{"data-state":S7(a.open),"data-disabled":a.disabled?"":void 0,id:a.contentId,hidden:!w,...i,ref:h,style:{"--radix-collapsible-content-height":g?`${g}px`:void 0,"--radix-collapsible-content-width":y?`${y}px`:void 0,...t.style},children:w&&s})});function S7(t){return t?"open":"closed"}var wRe=xY;const Tz=wRe,Ez=yY,_z=bY;function SRe(t){const e=t.split(` -`).slice(1),n=[];for(const r of e){const s=r.trim();if(!s.startsWith("at "))continue;const i=s.match(/at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?$/);i?n.push({functionName:i[1]||"",fileName:i[2],lineNumber:i[3],columnNumber:i[4],raw:s}):n.push({functionName:"",fileName:"",lineNumber:"",columnNumber:"",raw:s})}return n}function kRe({error:t,errorInfo:e}){const[n,r]=b.useState(!0),[s,i]=b.useState(!1),[a,l]=b.useState(!1),c=t.stack?SRe(t.stack):[],d=async()=>{const h=` + color: hsl(${Math.max(0,Math.min(120-120*S,120))}deg 100% 31%);`,n?.key)}return(d=n?.onChange)==null||d.call(n,s),s}return i.updateDeps=a=>{r=a},i}function fz(t,e){if(t===void 0)throw new Error("Unexpected undefined");return t}const TTe=(t,e)=>Math.abs(t-e)<1.01,ETe=(t,e,n)=>{let r;return function(...s){t.clearTimeout(r),r=t.setTimeout(()=>e.apply(this,s),n)}},mz=t=>{const{offsetWidth:e,offsetHeight:n}=t;return{width:e,height:n}},_Te=t=>t,ATe=t=>{const e=Math.max(t.startIndex-t.overscan,0),n=Math.min(t.endIndex+t.overscan,t.count-1),r=[];for(let s=e;s<=n;s++)r.push(s);return r},MTe=(t,e)=>{const n=t.scrollElement;if(!n)return;const r=t.targetWindow;if(!r)return;const s=a=>{const{width:l,height:c}=a;e({width:Math.round(l),height:Math.round(c)})};if(s(mz(n)),!r.ResizeObserver)return()=>{};const i=new r.ResizeObserver(a=>{const l=()=>{const c=a[0];if(c?.borderBoxSize){const d=c.borderBoxSize[0];if(d){s({width:d.inlineSize,height:d.blockSize});return}}s(mz(n))};t.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(l):l()});return i.observe(n,{box:"border-box"}),()=>{i.unobserve(n)}},pz={passive:!0},gz=typeof window>"u"?!0:"onscrollend"in window,RTe=(t,e)=>{const n=t.scrollElement;if(!n)return;const r=t.targetWindow;if(!r)return;let s=0;const i=t.options.useScrollendEvent&&gz?()=>{}:ETe(r,()=>{e(s,!1)},t.options.isScrollingResetDelay),a=h=>()=>{const{horizontal:m,isRtl:g}=t.options;s=m?n.scrollLeft*(g&&-1||1):n.scrollTop,i(),e(s,h)},l=a(!0),c=a(!1);c(),n.addEventListener("scroll",l,pz);const d=t.options.useScrollendEvent&&gz;return d&&n.addEventListener("scrollend",c,pz),()=>{n.removeEventListener("scroll",l),d&&n.removeEventListener("scrollend",c)}},DTe=(t,e,n)=>{if(e?.borderBoxSize){const r=e.borderBoxSize[0];if(r)return Math.round(r[n.options.horizontal?"inlineSize":"blockSize"])}return t[n.options.horizontal?"offsetWidth":"offsetHeight"]},PTe=(t,{adjustments:e=0,behavior:n},r)=>{var s,i;const a=t+e;(i=(s=r.scrollElement)==null?void 0:s.scrollTo)==null||i.call(s,{[r.options.horizontal?"left":"top"]:a,behavior:n})};class zTe{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.measurementsCache=[],this.itemSizeCache=new Map,this.pendingMeasuredCacheIndexes=[],this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.observer=(()=>{let n=null;const r=()=>n||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:n=new this.targetWindow.ResizeObserver(s=>{s.forEach(i=>{const a=()=>{this._measureElement(i.target,i)};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(a):a()})}));return{disconnect:()=>{var s;(s=r())==null||s.disconnect(),n=null},observe:s=>{var i;return(i=r())==null?void 0:i.observe(s,{box:"border-box"})},unobserve:s=>{var i;return(i=r())==null?void 0:i.unobserve(s)}}})(),this.range=null,this.setOptions=n=>{Object.entries(n).forEach(([r,s])=>{typeof s>"u"&&delete n[r]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:_Te,rangeExtractor:ATe,onChange:()=>{},measureElement:DTe,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,...n}},this.notify=n=>{var r,s;(s=(r=this.options).onChange)==null||s.call(r,this,n)},this.maybeNotify=mh(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),n=>{this.notify(n)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(n=>n()),this.unsubs=[],this.observer.disconnect(),this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var n;const r=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==r){if(this.cleanup(),!r){this.maybeNotify();return}this.scrollElement=r,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((n=this.scrollElement)==null?void 0:n.window)??null,this.elementsCache.forEach(s=>{this.observer.observe(s)}),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0}),this.unsubs.push(this.options.observeElementRect(this,s=>{this.scrollRect=s,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(s,i)=>{this.scrollAdjustments=0,this.scrollDirection=i?this.getScrollOffset()this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(n,r)=>{const s=new Map,i=new Map;for(let a=r-1;a>=0;a--){const l=n[a];if(s.has(l.lane))continue;const c=i.get(l.lane);if(c==null||l.end>c.end?i.set(l.lane,l):l.enda.end===l.end?a.index-l.index:a.end-l.end)[0]:void 0},this.getMeasurementOptions=mh(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled],(n,r,s,i,a)=>(this.pendingMeasuredCacheIndexes=[],{count:n,paddingStart:r,scrollMargin:s,getItemKey:i,enabled:a}),{key:!1}),this.getMeasurements=mh(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:n,paddingStart:r,scrollMargin:s,getItemKey:i,enabled:a},l)=>{if(!a)return this.measurementsCache=[],this.itemSizeCache.clear(),[];this.measurementsCache.length===0&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(h=>{this.itemSizeCache.set(h.key,h.size)}));const c=this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[];const d=this.measurementsCache.slice(0,c);for(let h=c;hthis.options.debug}),this.calculateRange=mh(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(n,r,s,i)=>this.range=n.length>0&&r>0?ITe({measurements:n,outerSize:r,scrollOffset:s,lanes:i}):null,{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=mh(()=>{let n=null,r=null;const s=this.calculateRange();return s&&(n=s.startIndex,r=s.endIndex),this.maybeNotify.updateDeps([this.isScrolling,n,r]),[this.options.rangeExtractor,this.options.overscan,this.options.count,n,r]},(n,r,s,i,a)=>i===null||a===null?[]:n({startIndex:i,endIndex:a,overscan:r,count:s}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=n=>{const r=this.options.indexAttribute,s=n.getAttribute(r);return s?parseInt(s,10):(console.warn(`Missing attribute name '${r}={index}' on measured element.`),-1)},this._measureElement=(n,r)=>{const s=this.indexFromElement(n),i=this.measurementsCache[s];if(!i)return;const a=i.key,l=this.elementsCache.get(a);l!==n&&(l&&this.observer.unobserve(l),this.observer.observe(n),this.elementsCache.set(a,n)),n.isConnected&&this.resizeItem(s,this.options.measureElement(n,r,this))},this.resizeItem=(n,r)=>{const s=this.measurementsCache[n];if(!s)return;const i=this.itemSizeCache.get(s.key)??s.size,a=r-i;a!==0&&((this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(s,a,this):s.start{if(!n){this.elementsCache.forEach((r,s)=>{r.isConnected||(this.observer.unobserve(r),this.elementsCache.delete(s))});return}this._measureElement(n,void 0)},this.getVirtualItems=mh(()=>[this.getVirtualIndexes(),this.getMeasurements()],(n,r)=>{const s=[];for(let i=0,a=n.length;ithis.options.debug}),this.getVirtualItemForOffset=n=>{const r=this.getMeasurements();if(r.length!==0)return fz(r[zG(0,r.length-1,s=>fz(r[s]).start,n)])},this.getOffsetForAlignment=(n,r,s=0)=>{const i=this.getSize(),a=this.getScrollOffset();r==="auto"&&(r=n>=a+i?"end":"start"),r==="center"?n+=(s-i)/2:r==="end"&&(n-=i);const l=this.getTotalSize()+this.options.scrollMargin-i;return Math.max(Math.min(l,n),0)},this.getOffsetForIndex=(n,r="auto")=>{n=Math.max(0,Math.min(n,this.options.count-1));const s=this.measurementsCache[n];if(!s)return;const i=this.getSize(),a=this.getScrollOffset();if(r==="auto")if(s.end>=a+i-this.options.scrollPaddingEnd)r="end";else if(s.start<=a+this.options.scrollPaddingStart)r="start";else return[a,r];const l=r==="end"?s.end+this.options.scrollPaddingEnd:s.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(l,r,s.size),r]},this.isDynamicMode=()=>this.elementsCache.size>0,this.scrollToOffset=(n,{align:r="start",behavior:s}={})=>{s==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getOffsetForAlignment(n,r),{adjustments:void 0,behavior:s})},this.scrollToIndex=(n,{align:r="auto",behavior:s}={})=>{s==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),n=Math.max(0,Math.min(n,this.options.count-1));let i=0;const a=10,l=d=>{if(!this.targetWindow)return;const h=this.getOffsetForIndex(n,d);if(!h){console.warn("Failed to get offset for index:",n);return}const[m,g]=h;this._scrollToOffset(m,{adjustments:void 0,behavior:s}),this.targetWindow.requestAnimationFrame(()=>{const x=this.getScrollOffset(),y=this.getOffsetForIndex(n,g);if(!y){console.warn("Failed to get offset for index:",n);return}TTe(y[0],x)||c(g)})},c=d=>{this.targetWindow&&(i++,il(d)):console.warn(`Failed to scroll to index ${n} after ${a} attempts.`))};l(r)},this.scrollBy=(n,{behavior:r}={})=>{r==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getScrollOffset()+n,{adjustments:void 0,behavior:r})},this.getTotalSize=()=>{var n;const r=this.getMeasurements();let s;if(r.length===0)s=this.options.paddingStart;else if(this.options.lanes===1)s=((n=r[r.length-1])==null?void 0:n.end)??0;else{const i=Array(this.options.lanes).fill(null);let a=r.length-1;for(;a>=0&&i.some(l=>l===null);){const l=r[a];i[l.lane]===null&&(i[l.lane]=l.end),a--}s=Math.max(...i.filter(l=>l!==null))}return Math.max(s-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(n,{adjustments:r,behavior:s})=>{this.options.scrollToFn(n,{behavior:s,adjustments:r},this)},this.measure=()=>{this.itemSizeCache=new Map,this.notify(!1)},this.setOptions(e)}}const zG=(t,e,n,r)=>{for(;t<=e;){const s=(t+e)/2|0,i=n(s);if(ir)e=s-1;else return s}return t>0?t-1:0};function ITe({measurements:t,outerSize:e,scrollOffset:n,lanes:r}){const s=t.length-1,i=c=>t[c].start;if(t.length<=r)return{startIndex:0,endIndex:s};let a=zG(0,s,i,n),l=a;if(r===1)for(;l1){const c=Array(r).fill(0);for(;lh=0&&d.some(h=>h>=n);){const h=t[a];d[h.lane]=h.start,a--}a=Math.max(0,a-a%r),l=Math.min(s,l+(r-1-l%r))}return{startIndex:a,endIndex:l}}const xz=typeof document<"u"?b.useLayoutEffect:b.useEffect;function LTe(t){const e=b.useReducer(()=>({}),{})[1],n={...t,onChange:(s,i)=>{var a;i?pa.flushSync(e):e(),(a=t.onChange)==null||a.call(t,s,i)}},[r]=b.useState(()=>new zTe(n));return r.setOptions(n),xz(()=>r._didMount(),[]),xz(()=>r._willUpdate()),r}function BTe(t){return LTe({observeElementRect:MTe,observeElementOffset:RTe,scrollToFn:PTe,...t})}function FTe(t,e,n="long"){return new Intl.DateTimeFormat("en-US",{hour:"numeric",timeZone:t,timeZoneName:n}).format(e).split(/\s/g).slice(2).join(" ")}const qTe={},g0={};function Gu(t,e){try{const r=(qTe[t]||=new Intl.DateTimeFormat("en-US",{timeZone:t,timeZoneName:"longOffset"}).format)(e).split("GMT")[1];return r in g0?g0[r]:vz(r,r.split(":"))}catch{if(t in g0)return g0[t];const n=t?.match($Te);return n?vz(t,n.slice(1)):NaN}}const $Te=/([+-]\d\d):?(\d\d)?/;function vz(t,e){const n=+(e[0]||0),r=+(e[1]||0),s=+(e[2]||0)/60;return g0[t]=n*60+r>0?n*60+r+s:n*60-r-s}class Mo extends Date{constructor(...e){super(),e.length>1&&typeof e[e.length-1]=="string"&&(this.timeZone=e.pop()),this.internal=new Date,isNaN(Gu(this.timeZone,this))?this.setTime(NaN):e.length?typeof e[0]=="number"&&(e.length===1||e.length===2&&typeof e[1]!="number")?this.setTime(e[0]):typeof e[0]=="string"?this.setTime(+new Date(e[0])):e[0]instanceof Date?this.setTime(+e[0]):(this.setTime(+new Date(...e)),IG(this),lj(this)):this.setTime(Date.now())}static tz(e,...n){return n.length?new Mo(...n,e):new Mo(Date.now(),e)}withTimeZone(e){return new Mo(+this,e)}getTimezoneOffset(){const e=-Gu(this.timeZone,this);return e>0?Math.floor(e):Math.ceil(e)}setTime(e){return Date.prototype.setTime.apply(this,arguments),lj(this),+this}[Symbol.for("constructDateFrom")](e){return new Mo(+new Date(e),this.timeZone)}}const yz=/^(get|set)(?!UTC)/;Object.getOwnPropertyNames(Date.prototype).forEach(t=>{if(!yz.test(t))return;const e=t.replace(yz,"$1UTC");Mo.prototype[e]&&(t.startsWith("get")?Mo.prototype[t]=function(){return this.internal[e]()}:(Mo.prototype[t]=function(){return Date.prototype[e].apply(this.internal,arguments),HTe(this),+this},Mo.prototype[e]=function(){return Date.prototype[e].apply(this,arguments),lj(this),+this}))});function lj(t){t.internal.setTime(+t),t.internal.setUTCSeconds(t.internal.getUTCSeconds()-Math.round(-Gu(t.timeZone,t)*60))}function HTe(t){Date.prototype.setFullYear.call(t,t.internal.getUTCFullYear(),t.internal.getUTCMonth(),t.internal.getUTCDate()),Date.prototype.setHours.call(t,t.internal.getUTCHours(),t.internal.getUTCMinutes(),t.internal.getUTCSeconds(),t.internal.getUTCMilliseconds()),IG(t)}function IG(t){const e=Gu(t.timeZone,t),n=e>0?Math.floor(e):Math.ceil(e),r=new Date(+t);r.setUTCHours(r.getUTCHours()-1);const s=-new Date(+t).getTimezoneOffset(),i=-new Date(+r).getTimezoneOffset(),a=s-i,l=Date.prototype.getHours.apply(t)!==t.internal.getUTCHours();a&&l&&t.internal.setUTCMinutes(t.internal.getUTCMinutes()+a);const c=s-n;c&&Date.prototype.setUTCMinutes.call(t,Date.prototype.getUTCMinutes.call(t)+c);const d=new Date(+t);d.setUTCSeconds(0);const h=s>0?d.getSeconds():(d.getSeconds()-60)%60,m=Math.round(-(Gu(t.timeZone,t)*60))%60;(m||h)&&(t.internal.setUTCSeconds(t.internal.getUTCSeconds()+m),Date.prototype.setUTCSeconds.call(t,Date.prototype.getUTCSeconds.call(t)+m+h));const g=Gu(t.timeZone,t),x=g>0?Math.floor(g):Math.ceil(g),w=-new Date(+t).getTimezoneOffset()-x,S=x!==n,k=w-c;if(S&&k){Date.prototype.setUTCMinutes.call(t,Date.prototype.getUTCMinutes.call(t)+k);const j=Gu(t.timeZone,t),N=j>0?Math.floor(j):Math.ceil(j),T=x-N;T&&(t.internal.setUTCMinutes(t.internal.getUTCMinutes()+T),Date.prototype.setUTCMinutes.call(t,Date.prototype.getUTCMinutes.call(t)+T))}}class Fs extends Mo{static tz(e,...n){return n.length?new Fs(...n,e):new Fs(Date.now(),e)}toISOString(){const[e,n,r]=this.tzComponents(),s=`${e}${n}:${r}`;return this.internal.toISOString().slice(0,-1)+s}toString(){return`${this.toDateString()} ${this.toTimeString()}`}toDateString(){const[e,n,r,s]=this.internal.toUTCString().split(" ");return`${e?.slice(0,-1)} ${r} ${n} ${s}`}toTimeString(){const e=this.internal.toUTCString().split(" ")[4],[n,r,s]=this.tzComponents();return`${e} GMT${n}${r}${s} (${FTe(this.timeZone,this)})`}toLocaleString(e,n){return Date.prototype.toLocaleString.call(this,e,{...n,timeZone:n?.timeZone||this.timeZone})}toLocaleDateString(e,n){return Date.prototype.toLocaleDateString.call(this,e,{...n,timeZone:n?.timeZone||this.timeZone})}toLocaleTimeString(e,n){return Date.prototype.toLocaleTimeString.call(this,e,{...n,timeZone:n?.timeZone||this.timeZone})}tzComponents(){const e=this.getTimezoneOffset(),n=e>0?"-":"+",r=String(Math.floor(Math.abs(e)/60)).padStart(2,"0"),s=String(Math.abs(e)%60).padStart(2,"0");return[n,r,s]}withTimeZone(e){return new Fs(+this,e)}[Symbol.for("constructDateFrom")](e){return new Fs(+new Date(e),this.timeZone)}}const LG=6048e5,QTe=864e5,bz=Symbol.for("constructDateFrom");function is(t,e){return typeof t=="function"?t(e):t&&typeof t=="object"&&bz in t?t[bz](e):t instanceof Date?new t.constructor(e):new Date(e)}function tr(t,e){return is(e||t,t)}function BG(t,e,n){const r=tr(t,n?.in);return isNaN(e)?is(t,NaN):(e&&r.setDate(r.getDate()+e),r)}function FG(t,e,n){const r=tr(t,n?.in);if(isNaN(e))return is(t,NaN);if(!e)return r;const s=r.getDate(),i=is(t,r.getTime());i.setMonth(r.getMonth()+e+1,0);const a=i.getDate();return s>=a?i:(r.setFullYear(i.getFullYear(),i.getMonth(),s),r)}let VTe={};function yg(){return VTe}function su(t,e){const n=yg(),r=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,s=tr(t,e?.in),i=s.getDay(),a=(i=i.getTime()?r+1:n.getTime()>=l.getTime()?r:r-1}function wz(t){const e=tr(t),n=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return n.setUTCFullYear(e.getFullYear()),+t-+n}function Od(t,...e){const n=is.bind(null,t||e.find(r=>typeof r=="object"));return e.map(n)}function jp(t,e){const n=tr(t,e?.in);return n.setHours(0,0,0,0),n}function $G(t,e,n){const[r,s]=Od(n?.in,t,e),i=jp(r),a=jp(s),l=+i-wz(i),c=+a-wz(a);return Math.round((l-c)/QTe)}function UTe(t,e){const n=qG(t,e),r=is(t,0);return r.setFullYear(n,0,4),r.setHours(0,0,0,0),Op(r)}function WTe(t,e,n){return BG(t,e*7,n)}function GTe(t,e,n){return FG(t,e*12,n)}function XTe(t,e){let n,r=e?.in;return t.forEach(s=>{!r&&typeof s=="object"&&(r=is.bind(null,s));const i=tr(s,r);(!n||n{!r&&typeof s=="object"&&(r=is.bind(null,s));const i=tr(s,r);(!n||n>i||isNaN(+i))&&(n=i)}),is(r,n||NaN)}function KTe(t,e,n){const[r,s]=Od(n?.in,t,e);return+jp(r)==+jp(s)}function HG(t){return t instanceof Date||typeof t=="object"&&Object.prototype.toString.call(t)==="[object Date]"}function ZTe(t){return!(!HG(t)&&typeof t!="number"||isNaN(+tr(t)))}function JTe(t,e,n){const[r,s]=Od(n?.in,t,e),i=r.getFullYear()-s.getFullYear(),a=r.getMonth()-s.getMonth();return i*12+a}function e9e(t,e){const n=tr(t,e?.in),r=n.getMonth();return n.setFullYear(n.getFullYear(),r+1,0),n.setHours(23,59,59,999),n}function QG(t,e){const[n,r]=Od(t,e.start,e.end);return{start:n,end:r}}function t9e(t,e){const{start:n,end:r}=QG(e?.in,t);let s=+n>+r;const i=s?+n:+r,a=s?r:n;a.setHours(0,0,0,0),a.setDate(1);let l=1;const c=[];for(;+a<=i;)c.push(is(n,a)),a.setMonth(a.getMonth()+l);return s?c.reverse():c}function n9e(t,e){const n=tr(t,e?.in);return n.setDate(1),n.setHours(0,0,0,0),n}function r9e(t,e){const n=tr(t,e?.in),r=n.getFullYear();return n.setFullYear(r+1,0,0),n.setHours(23,59,59,999),n}function VG(t,e){const n=tr(t,e?.in);return n.setFullYear(n.getFullYear(),0,1),n.setHours(0,0,0,0),n}function s9e(t,e){const{start:n,end:r}=QG(e?.in,t);let s=+n>+r;const i=s?+n:+r,a=s?r:n;a.setHours(0,0,0,0),a.setMonth(0,1);let l=1;const c=[];for(;+a<=i;)c.push(is(n,a)),a.setFullYear(a.getFullYear()+l);return s?c.reverse():c}function UG(t,e){const n=yg(),r=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,s=tr(t,e?.in),i=s.getDay(),a=(i{let r;const s=a9e[t];return typeof s=="string"?r=s:e===1?r=s.one:r=s.other.replace("{{count}}",e.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"in "+r:r+" ago":r};function Vh(t){return(e={})=>{const n=e.width?String(e.width):t.defaultWidth;return t.formats[n]||t.formats[t.defaultWidth]}}const l9e={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},c9e={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},u9e={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},d9e={date:Vh({formats:l9e,defaultWidth:"full"}),time:Vh({formats:c9e,defaultWidth:"full"}),dateTime:Vh({formats:u9e,defaultWidth:"full"})},h9e={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},f9e=(t,e,n,r)=>h9e[t];function ko(t){return(e,n)=>{const r=n?.context?String(n.context):"standalone";let s;if(r==="formatting"&&t.formattingValues){const a=t.defaultFormattingWidth||t.defaultWidth,l=n?.width?String(n.width):a;s=t.formattingValues[l]||t.formattingValues[a]}else{const a=t.defaultWidth,l=n?.width?String(n.width):t.defaultWidth;s=t.values[l]||t.values[a]}const i=t.argumentCallback?t.argumentCallback(e):e;return s[i]}}const m9e={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},p9e={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},g9e={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},x9e={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},v9e={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},y9e={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},b9e=(t,e)=>{const n=Number(t),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},w9e={ordinalNumber:b9e,era:ko({values:m9e,defaultWidth:"wide"}),quarter:ko({values:p9e,defaultWidth:"wide",argumentCallback:t=>t-1}),month:ko({values:g9e,defaultWidth:"wide"}),day:ko({values:x9e,defaultWidth:"wide"}),dayPeriod:ko({values:v9e,defaultWidth:"wide",formattingValues:y9e,defaultFormattingWidth:"wide"})};function Oo(t){return(e,n={})=>{const r=n.width,s=r&&t.matchPatterns[r]||t.matchPatterns[t.defaultMatchWidth],i=e.match(s);if(!i)return null;const a=i[0],l=r&&t.parsePatterns[r]||t.parsePatterns[t.defaultParseWidth],c=Array.isArray(l)?k9e(l,m=>m.test(a)):S9e(l,m=>m.test(a));let d;d=t.valueCallback?t.valueCallback(c):c,d=n.valueCallback?n.valueCallback(d):d;const h=e.slice(a.length);return{value:d,rest:h}}}function S9e(t,e){for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&e(t[n]))return n}function k9e(t,e){for(let n=0;n{const r=e.match(t.matchPattern);if(!r)return null;const s=r[0],i=e.match(t.parsePattern);if(!i)return null;let a=t.valueCallback?t.valueCallback(i[0]):i[0];a=n.valueCallback?n.valueCallback(a):a;const l=e.slice(s.length);return{value:a,rest:l}}}const O9e=/^(\d+)(th|st|nd|rd)?/i,j9e=/\d+/i,N9e={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},C9e={any:[/^b/i,/^(a|c)/i]},T9e={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},E9e={any:[/1/i,/2/i,/3/i,/4/i]},_9e={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},A9e={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},M9e={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},R9e={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},D9e={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},P9e={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},z9e={ordinalNumber:WG({matchPattern:O9e,parsePattern:j9e,valueCallback:t=>parseInt(t,10)}),era:Oo({matchPatterns:N9e,defaultMatchWidth:"wide",parsePatterns:C9e,defaultParseWidth:"any"}),quarter:Oo({matchPatterns:T9e,defaultMatchWidth:"wide",parsePatterns:E9e,defaultParseWidth:"any",valueCallback:t=>t+1}),month:Oo({matchPatterns:_9e,defaultMatchWidth:"wide",parsePatterns:A9e,defaultParseWidth:"any"}),day:Oo({matchPatterns:M9e,defaultMatchWidth:"wide",parsePatterns:R9e,defaultParseWidth:"any"}),dayPeriod:Oo({matchPatterns:D9e,defaultMatchWidth:"any",parsePatterns:P9e,defaultParseWidth:"any"})},c7={code:"en-US",formatDistance:o9e,formatLong:d9e,formatRelative:f9e,localize:w9e,match:z9e,options:{weekStartsOn:0,firstWeekContainsDate:1}};function I9e(t,e){const n=tr(t,e?.in);return $G(n,VG(n))+1}function GG(t,e){const n=tr(t,e?.in),r=+Op(n)-+UTe(n);return Math.round(r/LG)+1}function XG(t,e){const n=tr(t,e?.in),r=n.getFullYear(),s=yg(),i=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??s.firstWeekContainsDate??s.locale?.options?.firstWeekContainsDate??1,a=is(e?.in||t,0);a.setFullYear(r+1,0,i),a.setHours(0,0,0,0);const l=su(a,e),c=is(e?.in||t,0);c.setFullYear(r,0,i),c.setHours(0,0,0,0);const d=su(c,e);return+n>=+l?r+1:+n>=+d?r:r-1}function L9e(t,e){const n=yg(),r=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,s=XG(t,e),i=is(e?.in||t,0);return i.setFullYear(s,0,r),i.setHours(0,0,0,0),su(i,e)}function YG(t,e){const n=tr(t,e?.in),r=+su(n,e)-+L9e(n,e);return Math.round(r/LG)+1}function Wn(t,e){const n=t<0?"-":"",r=Math.abs(t).toString().padStart(e,"0");return n+r}const _c={y(t,e){const n=t.getFullYear(),r=n>0?n:1-n;return Wn(e==="yy"?r%100:r,e.length)},M(t,e){const n=t.getMonth();return e==="M"?String(n+1):Wn(n+1,2)},d(t,e){return Wn(t.getDate(),e.length)},a(t,e){const n=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];case"aaaa":default:return n==="am"?"a.m.":"p.m."}},h(t,e){return Wn(t.getHours()%12||12,e.length)},H(t,e){return Wn(t.getHours(),e.length)},m(t,e){return Wn(t.getMinutes(),e.length)},s(t,e){return Wn(t.getSeconds(),e.length)},S(t,e){const n=e.length,r=t.getMilliseconds(),s=Math.trunc(r*Math.pow(10,n-3));return Wn(s,e.length)}},ph={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},Sz={G:function(t,e,n){const r=t.getFullYear()>0?1:0;switch(e){case"G":case"GG":case"GGG":return n.era(r,{width:"abbreviated"});case"GGGGG":return n.era(r,{width:"narrow"});case"GGGG":default:return n.era(r,{width:"wide"})}},y:function(t,e,n){if(e==="yo"){const r=t.getFullYear(),s=r>0?r:1-r;return n.ordinalNumber(s,{unit:"year"})}return _c.y(t,e)},Y:function(t,e,n,r){const s=XG(t,r),i=s>0?s:1-s;if(e==="YY"){const a=i%100;return Wn(a,2)}return e==="Yo"?n.ordinalNumber(i,{unit:"year"}):Wn(i,e.length)},R:function(t,e){const n=qG(t);return Wn(n,e.length)},u:function(t,e){const n=t.getFullYear();return Wn(n,e.length)},Q:function(t,e,n){const r=Math.ceil((t.getMonth()+1)/3);switch(e){case"Q":return String(r);case"QQ":return Wn(r,2);case"Qo":return n.ordinalNumber(r,{unit:"quarter"});case"QQQ":return n.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(r,{width:"narrow",context:"formatting"});case"QQQQ":default:return n.quarter(r,{width:"wide",context:"formatting"})}},q:function(t,e,n){const r=Math.ceil((t.getMonth()+1)/3);switch(e){case"q":return String(r);case"qq":return Wn(r,2);case"qo":return n.ordinalNumber(r,{unit:"quarter"});case"qqq":return n.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(r,{width:"narrow",context:"standalone"});case"qqqq":default:return n.quarter(r,{width:"wide",context:"standalone"})}},M:function(t,e,n){const r=t.getMonth();switch(e){case"M":case"MM":return _c.M(t,e);case"Mo":return n.ordinalNumber(r+1,{unit:"month"});case"MMM":return n.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(r,{width:"narrow",context:"formatting"});case"MMMM":default:return n.month(r,{width:"wide",context:"formatting"})}},L:function(t,e,n){const r=t.getMonth();switch(e){case"L":return String(r+1);case"LL":return Wn(r+1,2);case"Lo":return n.ordinalNumber(r+1,{unit:"month"});case"LLL":return n.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(r,{width:"narrow",context:"standalone"});case"LLLL":default:return n.month(r,{width:"wide",context:"standalone"})}},w:function(t,e,n,r){const s=YG(t,r);return e==="wo"?n.ordinalNumber(s,{unit:"week"}):Wn(s,e.length)},I:function(t,e,n){const r=GG(t);return e==="Io"?n.ordinalNumber(r,{unit:"week"}):Wn(r,e.length)},d:function(t,e,n){return e==="do"?n.ordinalNumber(t.getDate(),{unit:"date"}):_c.d(t,e)},D:function(t,e,n){const r=I9e(t);return e==="Do"?n.ordinalNumber(r,{unit:"dayOfYear"}):Wn(r,e.length)},E:function(t,e,n){const r=t.getDay();switch(e){case"E":case"EE":case"EEE":return n.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(r,{width:"short",context:"formatting"});case"EEEE":default:return n.day(r,{width:"wide",context:"formatting"})}},e:function(t,e,n,r){const s=t.getDay(),i=(s-r.weekStartsOn+8)%7||7;switch(e){case"e":return String(i);case"ee":return Wn(i,2);case"eo":return n.ordinalNumber(i,{unit:"day"});case"eee":return n.day(s,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(s,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(s,{width:"short",context:"formatting"});case"eeee":default:return n.day(s,{width:"wide",context:"formatting"})}},c:function(t,e,n,r){const s=t.getDay(),i=(s-r.weekStartsOn+8)%7||7;switch(e){case"c":return String(i);case"cc":return Wn(i,e.length);case"co":return n.ordinalNumber(i,{unit:"day"});case"ccc":return n.day(s,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(s,{width:"narrow",context:"standalone"});case"cccccc":return n.day(s,{width:"short",context:"standalone"});case"cccc":default:return n.day(s,{width:"wide",context:"standalone"})}},i:function(t,e,n){const r=t.getDay(),s=r===0?7:r;switch(e){case"i":return String(s);case"ii":return Wn(s,e.length);case"io":return n.ordinalNumber(s,{unit:"day"});case"iii":return n.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(r,{width:"short",context:"formatting"});case"iiii":default:return n.day(r,{width:"wide",context:"formatting"})}},a:function(t,e,n){const s=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"aaaa":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},b:function(t,e,n){const r=t.getHours();let s;switch(r===12?s=ph.noon:r===0?s=ph.midnight:s=r/12>=1?"pm":"am",e){case"b":case"bb":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"bbbb":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},B:function(t,e,n){const r=t.getHours();let s;switch(r>=17?s=ph.evening:r>=12?s=ph.afternoon:r>=4?s=ph.morning:s=ph.night,e){case"B":case"BB":case"BBB":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"BBBB":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},h:function(t,e,n){if(e==="ho"){let r=t.getHours()%12;return r===0&&(r=12),n.ordinalNumber(r,{unit:"hour"})}return _c.h(t,e)},H:function(t,e,n){return e==="Ho"?n.ordinalNumber(t.getHours(),{unit:"hour"}):_c.H(t,e)},K:function(t,e,n){const r=t.getHours()%12;return e==="Ko"?n.ordinalNumber(r,{unit:"hour"}):Wn(r,e.length)},k:function(t,e,n){let r=t.getHours();return r===0&&(r=24),e==="ko"?n.ordinalNumber(r,{unit:"hour"}):Wn(r,e.length)},m:function(t,e,n){return e==="mo"?n.ordinalNumber(t.getMinutes(),{unit:"minute"}):_c.m(t,e)},s:function(t,e,n){return e==="so"?n.ordinalNumber(t.getSeconds(),{unit:"second"}):_c.s(t,e)},S:function(t,e){return _c.S(t,e)},X:function(t,e,n){const r=t.getTimezoneOffset();if(r===0)return"Z";switch(e){case"X":return Oz(r);case"XXXX":case"XX":return Bu(r);case"XXXXX":case"XXX":default:return Bu(r,":")}},x:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"x":return Oz(r);case"xxxx":case"xx":return Bu(r);case"xxxxx":case"xxx":default:return Bu(r,":")}},O:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"O":case"OO":case"OOO":return"GMT"+kz(r,":");case"OOOO":default:return"GMT"+Bu(r,":")}},z:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"z":case"zz":case"zzz":return"GMT"+kz(r,":");case"zzzz":default:return"GMT"+Bu(r,":")}},t:function(t,e,n){const r=Math.trunc(+t/1e3);return Wn(r,e.length)},T:function(t,e,n){return Wn(+t,e.length)}};function kz(t,e=""){const n=t>0?"-":"+",r=Math.abs(t),s=Math.trunc(r/60),i=r%60;return i===0?n+String(s):n+String(s)+e+Wn(i,2)}function Oz(t,e){return t%60===0?(t>0?"-":"+")+Wn(Math.abs(t)/60,2):Bu(t,e)}function Bu(t,e=""){const n=t>0?"-":"+",r=Math.abs(t),s=Wn(Math.trunc(r/60),2),i=Wn(r%60,2);return n+s+e+i}const jz=(t,e)=>{switch(t){case"P":return e.date({width:"short"});case"PP":return e.date({width:"medium"});case"PPP":return e.date({width:"long"});case"PPPP":default:return e.date({width:"full"})}},KG=(t,e)=>{switch(t){case"p":return e.time({width:"short"});case"pp":return e.time({width:"medium"});case"ppp":return e.time({width:"long"});case"pppp":default:return e.time({width:"full"})}},B9e=(t,e)=>{const n=t.match(/(P+)(p+)?/)||[],r=n[1],s=n[2];if(!s)return jz(t,e);let i;switch(r){case"P":i=e.dateTime({width:"short"});break;case"PP":i=e.dateTime({width:"medium"});break;case"PPP":i=e.dateTime({width:"long"});break;case"PPPP":default:i=e.dateTime({width:"full"});break}return i.replace("{{date}}",jz(r,e)).replace("{{time}}",KG(s,e))},F9e={p:KG,P:B9e},q9e=/^D+$/,$9e=/^Y+$/,H9e=["D","DD","YY","YYYY"];function Q9e(t){return q9e.test(t)}function V9e(t){return $9e.test(t)}function U9e(t,e,n){const r=W9e(t,e,n);if(console.warn(r),H9e.includes(t))throw new RangeError(r)}function W9e(t,e,n){const r=t[0]==="Y"?"years":"days of the month";return`Use \`${t.toLowerCase()}\` instead of \`${t}\` (in \`${e}\`) for formatting ${r} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}const G9e=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,X9e=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,Y9e=/^'([^]*?)'?$/,K9e=/''/g,Z9e=/[a-zA-Z]/;function Ev(t,e,n){const r=yg(),s=n?.locale??r.locale??c7,i=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,a=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,l=tr(t,n?.in);if(!ZTe(l))throw new RangeError("Invalid time value");let c=e.match(X9e).map(h=>{const m=h[0];if(m==="p"||m==="P"){const g=F9e[m];return g(h,s.formatLong)}return h}).join("").match(G9e).map(h=>{if(h==="''")return{isToken:!1,value:"'"};const m=h[0];if(m==="'")return{isToken:!1,value:J9e(h)};if(Sz[m])return{isToken:!0,value:h};if(m.match(Z9e))throw new RangeError("Format string contains an unescaped latin alphabet character `"+m+"`");return{isToken:!1,value:h}});s.localize.preprocessor&&(c=s.localize.preprocessor(l,c));const d={firstWeekContainsDate:i,weekStartsOn:a,locale:s};return c.map(h=>{if(!h.isToken)return h.value;const m=h.value;(!n?.useAdditionalWeekYearTokens&&V9e(m)||!n?.useAdditionalDayOfYearTokens&&Q9e(m))&&U9e(m,e,String(t));const g=Sz[m[0]];return g(l,m,s.localize,d)}).join("")}function J9e(t){const e=t.match(Y9e);return e?e[1].replace(K9e,"'"):t}function eEe(t,e){const n=tr(t,e?.in),r=n.getFullYear(),s=n.getMonth(),i=is(n,0);return i.setFullYear(r,s+1,0),i.setHours(0,0,0,0),i.getDate()}function tEe(t,e){return tr(t,e?.in).getMonth()}function nEe(t,e){return tr(t,e?.in).getFullYear()}function rEe(t,e){return+tr(t)>+tr(e)}function sEe(t,e){return+tr(t)<+tr(e)}function iEe(t,e,n){const[r,s]=Od(n?.in,t,e);return+su(r,n)==+su(s,n)}function aEe(t,e,n){const[r,s]=Od(n?.in,t,e);return r.getFullYear()===s.getFullYear()&&r.getMonth()===s.getMonth()}function oEe(t,e,n){const[r,s]=Od(n?.in,t,e);return r.getFullYear()===s.getFullYear()}function lEe(t,e,n){const r=tr(t,n?.in),s=r.getFullYear(),i=r.getDate(),a=is(t,0);a.setFullYear(s,e,15),a.setHours(0,0,0,0);const l=eEe(a);return r.setMonth(e,Math.min(i,l)),r}function cEe(t,e,n){const r=tr(t,n?.in);return isNaN(+r)?is(t,NaN):(r.setFullYear(e),r)}const Nz=5,uEe=4;function dEe(t,e){const n=e.startOfMonth(t),r=n.getDay()>0?n.getDay():7,s=e.addDays(t,-r+1),i=e.addDays(s,Nz*7-1);return e.getMonth(t)===e.getMonth(i)?Nz:uEe}function ZG(t,e){const n=e.startOfMonth(t),r=n.getDay();return r===1?n:r===0?e.addDays(n,-6):e.addDays(n,-1*(r-1))}function hEe(t,e){const n=ZG(t,e),r=dEe(t,e);return e.addDays(n,r*7-1)}class Ki{constructor(e,n){this.Date=Date,this.today=()=>this.overrides?.today?this.overrides.today():this.options.timeZone?Fs.tz(this.options.timeZone):new this.Date,this.newDate=(r,s,i)=>this.overrides?.newDate?this.overrides.newDate(r,s,i):this.options.timeZone?new Fs(r,s,i,this.options.timeZone):new Date(r,s,i),this.addDays=(r,s)=>this.overrides?.addDays?this.overrides.addDays(r,s):BG(r,s),this.addMonths=(r,s)=>this.overrides?.addMonths?this.overrides.addMonths(r,s):FG(r,s),this.addWeeks=(r,s)=>this.overrides?.addWeeks?this.overrides.addWeeks(r,s):WTe(r,s),this.addYears=(r,s)=>this.overrides?.addYears?this.overrides.addYears(r,s):GTe(r,s),this.differenceInCalendarDays=(r,s)=>this.overrides?.differenceInCalendarDays?this.overrides.differenceInCalendarDays(r,s):$G(r,s),this.differenceInCalendarMonths=(r,s)=>this.overrides?.differenceInCalendarMonths?this.overrides.differenceInCalendarMonths(r,s):JTe(r,s),this.eachMonthOfInterval=r=>this.overrides?.eachMonthOfInterval?this.overrides.eachMonthOfInterval(r):t9e(r),this.eachYearOfInterval=r=>{const s=this.overrides?.eachYearOfInterval?this.overrides.eachYearOfInterval(r):s9e(r),i=new Set(s.map(l=>this.getYear(l)));if(i.size===s.length)return s;const a=[];return i.forEach(l=>{a.push(new Date(l,0,1))}),a},this.endOfBroadcastWeek=r=>this.overrides?.endOfBroadcastWeek?this.overrides.endOfBroadcastWeek(r):hEe(r,this),this.endOfISOWeek=r=>this.overrides?.endOfISOWeek?this.overrides.endOfISOWeek(r):i9e(r),this.endOfMonth=r=>this.overrides?.endOfMonth?this.overrides.endOfMonth(r):e9e(r),this.endOfWeek=(r,s)=>this.overrides?.endOfWeek?this.overrides.endOfWeek(r,s):UG(r,this.options),this.endOfYear=r=>this.overrides?.endOfYear?this.overrides.endOfYear(r):r9e(r),this.format=(r,s,i)=>{const a=this.overrides?.format?this.overrides.format(r,s,this.options):Ev(r,s,this.options);return this.options.numerals&&this.options.numerals!=="latn"?this.replaceDigits(a):a},this.getISOWeek=r=>this.overrides?.getISOWeek?this.overrides.getISOWeek(r):GG(r),this.getMonth=(r,s)=>this.overrides?.getMonth?this.overrides.getMonth(r,this.options):tEe(r,this.options),this.getYear=(r,s)=>this.overrides?.getYear?this.overrides.getYear(r,this.options):nEe(r,this.options),this.getWeek=(r,s)=>this.overrides?.getWeek?this.overrides.getWeek(r,this.options):YG(r,this.options),this.isAfter=(r,s)=>this.overrides?.isAfter?this.overrides.isAfter(r,s):rEe(r,s),this.isBefore=(r,s)=>this.overrides?.isBefore?this.overrides.isBefore(r,s):sEe(r,s),this.isDate=r=>this.overrides?.isDate?this.overrides.isDate(r):HG(r),this.isSameDay=(r,s)=>this.overrides?.isSameDay?this.overrides.isSameDay(r,s):KTe(r,s),this.isSameMonth=(r,s)=>this.overrides?.isSameMonth?this.overrides.isSameMonth(r,s):aEe(r,s),this.isSameYear=(r,s)=>this.overrides?.isSameYear?this.overrides.isSameYear(r,s):oEe(r,s),this.max=r=>this.overrides?.max?this.overrides.max(r):XTe(r),this.min=r=>this.overrides?.min?this.overrides.min(r):YTe(r),this.setMonth=(r,s)=>this.overrides?.setMonth?this.overrides.setMonth(r,s):lEe(r,s),this.setYear=(r,s)=>this.overrides?.setYear?this.overrides.setYear(r,s):cEe(r,s),this.startOfBroadcastWeek=(r,s)=>this.overrides?.startOfBroadcastWeek?this.overrides.startOfBroadcastWeek(r,this):ZG(r,this),this.startOfDay=r=>this.overrides?.startOfDay?this.overrides.startOfDay(r):jp(r),this.startOfISOWeek=r=>this.overrides?.startOfISOWeek?this.overrides.startOfISOWeek(r):Op(r),this.startOfMonth=r=>this.overrides?.startOfMonth?this.overrides.startOfMonth(r):n9e(r),this.startOfWeek=(r,s)=>this.overrides?.startOfWeek?this.overrides.startOfWeek(r,this.options):su(r,this.options),this.startOfYear=r=>this.overrides?.startOfYear?this.overrides.startOfYear(r):VG(r),this.options={locale:c7,...e},this.overrides=n}getDigitMap(){const{numerals:e="latn"}=this.options,n=new Intl.NumberFormat("en-US",{numberingSystem:e}),r={};for(let s=0;s<10;s++)r[s.toString()]=n.format(s);return r}replaceDigits(e){const n=this.getDigitMap();return e.replace(/\d/g,r=>n[r]||r)}formatNumber(e){return this.replaceDigits(e.toString())}getMonthYearOrder(){const e=this.options.locale?.code;return e&&Ki.yearFirstLocales.has(e)?"year-first":"month-first"}formatMonthYear(e){const{locale:n,timeZone:r,numerals:s}=this.options,i=n?.code;if(i&&Ki.yearFirstLocales.has(i))try{return new Intl.DateTimeFormat(i,{month:"long",year:"numeric",timeZone:r,numberingSystem:s}).format(e)}catch{}const a=this.getMonthYearOrder()==="year-first"?"y LLLL":"LLLL y";return this.format(e,a)}}Ki.yearFirstLocales=new Set(["eu","hu","ja","ja-Hira","ja-JP","ko","ko-KR","lt","lt-LT","lv","lv-LV","mn","mn-MN","zh","zh-CN","zh-HK","zh-TW"]);const Xo=new Ki;class JG{constructor(e,n,r=Xo){this.date=e,this.displayMonth=n,this.outside=!!(n&&!r.isSameMonth(e,n)),this.dateLib=r}isEqualTo(e){return this.dateLib.isSameDay(e.date,this.date)&&this.dateLib.isSameMonth(e.displayMonth,this.displayMonth)}}class fEe{constructor(e,n){this.date=e,this.weeks=n}}class mEe{constructor(e,n){this.days=n,this.weekNumber=e}}function pEe(t){return ae.createElement("button",{...t})}function gEe(t){return ae.createElement("span",{...t})}function xEe(t){const{size:e=24,orientation:n="left",className:r}=t;return ae.createElement("svg",{className:r,width:e,height:e,viewBox:"0 0 24 24"},n==="up"&&ae.createElement("polygon",{points:"6.77 17 12.5 11.43 18.24 17 20 15.28 12.5 8 5 15.28"}),n==="down"&&ae.createElement("polygon",{points:"6.77 8 12.5 13.57 18.24 8 20 9.72 12.5 17 5 9.72"}),n==="left"&&ae.createElement("polygon",{points:"16 18.112 9.81111111 12 16 5.87733333 14.0888889 4 6 12 14.0888889 20"}),n==="right"&&ae.createElement("polygon",{points:"8 18.112 14.18888889 12 8 5.87733333 9.91111111 4 18 12 9.91111111 20"}))}function vEe(t){const{day:e,modifiers:n,...r}=t;return ae.createElement("td",{...r})}function yEe(t){const{day:e,modifiers:n,...r}=t,s=ae.useRef(null);return ae.useEffect(()=>{n.focused&&s.current?.focus()},[n.focused]),ae.createElement("button",{ref:s,...r})}var jt;(function(t){t.Root="root",t.Chevron="chevron",t.Day="day",t.DayButton="day_button",t.CaptionLabel="caption_label",t.Dropdowns="dropdowns",t.Dropdown="dropdown",t.DropdownRoot="dropdown_root",t.Footer="footer",t.MonthGrid="month_grid",t.MonthCaption="month_caption",t.MonthsDropdown="months_dropdown",t.Month="month",t.Months="months",t.Nav="nav",t.NextMonthButton="button_next",t.PreviousMonthButton="button_previous",t.Week="week",t.Weeks="weeks",t.Weekday="weekday",t.Weekdays="weekdays",t.WeekNumber="week_number",t.WeekNumberHeader="week_number_header",t.YearsDropdown="years_dropdown"})(jt||(jt={}));var Ar;(function(t){t.disabled="disabled",t.hidden="hidden",t.outside="outside",t.focused="focused",t.today="today"})(Ar||(Ar={}));var Ua;(function(t){t.range_end="range_end",t.range_middle="range_middle",t.range_start="range_start",t.selected="selected"})(Ua||(Ua={}));var Hi;(function(t){t.weeks_before_enter="weeks_before_enter",t.weeks_before_exit="weeks_before_exit",t.weeks_after_enter="weeks_after_enter",t.weeks_after_exit="weeks_after_exit",t.caption_after_enter="caption_after_enter",t.caption_after_exit="caption_after_exit",t.caption_before_enter="caption_before_enter",t.caption_before_exit="caption_before_exit"})(Hi||(Hi={}));function bEe(t){const{options:e,className:n,components:r,classNames:s,...i}=t,a=[s[jt.Dropdown],n].join(" "),l=e?.find(({value:c})=>c===i.value);return ae.createElement("span",{"data-disabled":i.disabled,className:s[jt.DropdownRoot]},ae.createElement(r.Select,{className:a,...i},e?.map(({value:c,label:d,disabled:h})=>ae.createElement(r.Option,{key:c,value:c,disabled:h},d))),ae.createElement("span",{className:s[jt.CaptionLabel],"aria-hidden":!0},l?.label,ae.createElement(r.Chevron,{orientation:"down",size:18,className:s[jt.Chevron]})))}function wEe(t){return ae.createElement("div",{...t})}function SEe(t){return ae.createElement("div",{...t})}function kEe(t){const{calendarMonth:e,displayIndex:n,...r}=t;return ae.createElement("div",{...r},t.children)}function OEe(t){const{calendarMonth:e,displayIndex:n,...r}=t;return ae.createElement("div",{...r})}function jEe(t){return ae.createElement("table",{...t})}function NEe(t){return ae.createElement("div",{...t})}const eX=b.createContext(void 0);function bg(){const t=b.useContext(eX);if(t===void 0)throw new Error("useDayPicker() must be used within a custom component.");return t}function CEe(t){const{components:e}=bg();return ae.createElement(e.Dropdown,{...t})}function TEe(t){const{onPreviousClick:e,onNextClick:n,previousMonth:r,nextMonth:s,...i}=t,{components:a,classNames:l,labels:{labelPrevious:c,labelNext:d}}=bg(),h=b.useCallback(g=>{s&&n?.(g)},[s,n]),m=b.useCallback(g=>{r&&e?.(g)},[r,e]);return ae.createElement("nav",{...i},ae.createElement(a.PreviousMonthButton,{type:"button",className:l[jt.PreviousMonthButton],tabIndex:r?void 0:-1,"aria-disabled":r?void 0:!0,"aria-label":c(r),onClick:m},ae.createElement(a.Chevron,{disabled:r?void 0:!0,className:l[jt.Chevron],orientation:"left"})),ae.createElement(a.NextMonthButton,{type:"button",className:l[jt.NextMonthButton],tabIndex:s?void 0:-1,"aria-disabled":s?void 0:!0,"aria-label":d(s),onClick:h},ae.createElement(a.Chevron,{disabled:s?void 0:!0,orientation:"right",className:l[jt.Chevron]})))}function EEe(t){const{components:e}=bg();return ae.createElement(e.Button,{...t})}function _Ee(t){return ae.createElement("option",{...t})}function AEe(t){const{components:e}=bg();return ae.createElement(e.Button,{...t})}function MEe(t){const{rootRef:e,...n}=t;return ae.createElement("div",{...n,ref:e})}function REe(t){return ae.createElement("select",{...t})}function DEe(t){const{week:e,...n}=t;return ae.createElement("tr",{...n})}function PEe(t){return ae.createElement("th",{...t})}function zEe(t){return ae.createElement("thead",{"aria-hidden":!0},ae.createElement("tr",{...t}))}function IEe(t){const{week:e,...n}=t;return ae.createElement("th",{...n})}function LEe(t){return ae.createElement("th",{...t})}function BEe(t){return ae.createElement("tbody",{...t})}function FEe(t){const{components:e}=bg();return ae.createElement(e.Dropdown,{...t})}const qEe=Object.freeze(Object.defineProperty({__proto__:null,Button:pEe,CaptionLabel:gEe,Chevron:xEe,Day:vEe,DayButton:yEe,Dropdown:bEe,DropdownNav:wEe,Footer:SEe,Month:kEe,MonthCaption:OEe,MonthGrid:jEe,Months:NEe,MonthsDropdown:CEe,Nav:TEe,NextMonthButton:EEe,Option:_Ee,PreviousMonthButton:AEe,Root:MEe,Select:REe,Week:DEe,WeekNumber:IEe,WeekNumberHeader:LEe,Weekday:PEe,Weekdays:zEe,Weeks:BEe,YearsDropdown:FEe},Symbol.toStringTag,{value:"Module"}));function Dl(t,e,n=!1,r=Xo){let{from:s,to:i}=t;const{differenceInCalendarDays:a,isSameDay:l}=r;return s&&i?(a(i,s)<0&&([s,i]=[i,s]),a(e,s)>=(n?1:0)&&a(i,e)>=(n?1:0)):!n&&i?l(i,e):!n&&s?l(s,e):!1}function tX(t){return!!(t&&typeof t=="object"&&"before"in t&&"after"in t)}function u7(t){return!!(t&&typeof t=="object"&&"from"in t)}function nX(t){return!!(t&&typeof t=="object"&&"after"in t)}function rX(t){return!!(t&&typeof t=="object"&&"before"in t)}function sX(t){return!!(t&&typeof t=="object"&&"dayOfWeek"in t)}function iX(t,e){return Array.isArray(t)&&t.every(e.isDate)}function Pl(t,e,n=Xo){const r=Array.isArray(e)?e:[e],{isSameDay:s,differenceInCalendarDays:i,isAfter:a}=n;return r.some(l=>{if(typeof l=="boolean")return l;if(n.isDate(l))return s(t,l);if(iX(l,n))return l.includes(t);if(u7(l))return Dl(l,t,!1,n);if(sX(l))return Array.isArray(l.dayOfWeek)?l.dayOfWeek.includes(t.getDay()):l.dayOfWeek===t.getDay();if(tX(l)){const c=i(l.before,t),d=i(l.after,t),h=c>0,m=d<0;return a(l.before,l.after)?m&&h:h||m}return nX(l)?i(t,l.after)>0:rX(l)?i(l.before,t)>0:typeof l=="function"?l(t):!1})}function $Ee(t,e,n,r,s){const{disabled:i,hidden:a,modifiers:l,showOutsideDays:c,broadcastCalendar:d,today:h}=e,{isSameDay:m,isSameMonth:g,startOfMonth:x,isBefore:y,endOfMonth:w,isAfter:S}=s,k=n&&x(n),j=r&&w(r),N={[Ar.focused]:[],[Ar.outside]:[],[Ar.disabled]:[],[Ar.hidden]:[],[Ar.today]:[]},T={};for(const E of t){const{date:_,displayMonth:A}=E,L=!!(A&&!g(_,A)),P=!!(k&&y(_,k)),B=!!(j&&S(_,j)),$=!!(i&&Pl(_,i,s)),U=!!(a&&Pl(_,a,s))||P||B||!d&&!c&&L||d&&c===!1&&L,te=m(_,h??s.today());L&&N.outside.push(E),$&&N.disabled.push(E),U&&N.hidden.push(E),te&&N.today.push(E),l&&Object.keys(l).forEach(z=>{const Q=l?.[z];Q&&Pl(_,Q,s)&&(T[z]?T[z].push(E):T[z]=[E])})}return E=>{const _={[Ar.focused]:!1,[Ar.disabled]:!1,[Ar.hidden]:!1,[Ar.outside]:!1,[Ar.today]:!1},A={};for(const L in N){const P=N[L];_[L]=P.some(B=>B===E)}for(const L in T)A[L]=T[L].some(P=>P===E);return{..._,...A}}}function HEe(t,e,n={}){return Object.entries(t).filter(([,s])=>s===!0).reduce((s,[i])=>(n[i]?s.push(n[i]):e[Ar[i]]?s.push(e[Ar[i]]):e[Ua[i]]&&s.push(e[Ua[i]]),s),[e[jt.Day]])}function QEe(t){return{...qEe,...t}}function VEe(t){const e={"data-mode":t.mode??void 0,"data-required":"required"in t?t.required:void 0,"data-multiple-months":t.numberOfMonths&&t.numberOfMonths>1||void 0,"data-week-numbers":t.showWeekNumber||void 0,"data-broadcast-calendar":t.broadcastCalendar||void 0,"data-nav-layout":t.navLayout||void 0};return Object.entries(t).forEach(([n,r])=>{n.startsWith("data-")&&(e[n]=r)}),e}function d7(){const t={};for(const e in jt)t[jt[e]]=`rdp-${jt[e]}`;for(const e in Ar)t[Ar[e]]=`rdp-${Ar[e]}`;for(const e in Ua)t[Ua[e]]=`rdp-${Ua[e]}`;for(const e in Hi)t[Hi[e]]=`rdp-${Hi[e]}`;return t}function aX(t,e,n){return(n??new Ki(e)).formatMonthYear(t)}const UEe=aX;function WEe(t,e,n){return(n??new Ki(e)).format(t,"d")}function GEe(t,e=Xo){return e.format(t,"LLLL")}function XEe(t,e,n){return(n??new Ki(e)).format(t,"cccccc")}function YEe(t,e=Xo){return t<10?e.formatNumber(`0${t.toLocaleString()}`):e.formatNumber(`${t.toLocaleString()}`)}function KEe(){return""}function oX(t,e=Xo){return e.format(t,"yyyy")}const ZEe=oX,JEe=Object.freeze(Object.defineProperty({__proto__:null,formatCaption:aX,formatDay:WEe,formatMonthCaption:UEe,formatMonthDropdown:GEe,formatWeekNumber:YEe,formatWeekNumberHeader:KEe,formatWeekdayName:XEe,formatYearCaption:ZEe,formatYearDropdown:oX},Symbol.toStringTag,{value:"Module"}));function e_e(t){return t?.formatMonthCaption&&!t.formatCaption&&(t.formatCaption=t.formatMonthCaption),t?.formatYearCaption&&!t.formatYearDropdown&&(t.formatYearDropdown=t.formatYearCaption),{...JEe,...t}}function t_e(t,e,n,r,s){const{startOfMonth:i,startOfYear:a,endOfYear:l,eachMonthOfInterval:c,getMonth:d}=s;return c({start:a(t),end:l(t)}).map(g=>{const x=r.formatMonthDropdown(g,s),y=d(g),w=e&&gi(n)||!1;return{value:y,label:x,disabled:w}})}function n_e(t,e={},n={}){let r={...e?.[jt.Day]};return Object.entries(t).filter(([,s])=>s===!0).forEach(([s])=>{r={...r,...n?.[s]}}),r}function r_e(t,e,n){const r=t.today(),s=e?t.startOfISOWeek(r):t.startOfWeek(r),i=[];for(let a=0;a<7;a++){const l=t.addDays(s,a);i.push(l)}return i}function s_e(t,e,n,r,s=!1){if(!t||!e)return;const{startOfYear:i,endOfYear:a,eachYearOfInterval:l,getYear:c}=r,d=i(t),h=a(e),m=l({start:d,end:h});return s&&m.reverse(),m.map(g=>{const x=n.formatYearDropdown(g,r);return{value:c(g),label:x,disabled:!1}})}function lX(t,e,n,r){let s=(r??new Ki(n)).format(t,"PPPP");return e.today&&(s=`Today, ${s}`),e.selected&&(s=`${s}, selected`),s}const i_e=lX;function cX(t,e,n){return(n??new Ki(e)).formatMonthYear(t)}const a_e=cX;function o_e(t,e,n,r){let s=(r??new Ki(n)).format(t,"PPPP");return e?.today&&(s=`Today, ${s}`),s}function l_e(t){return"Choose the Month"}function c_e(){return""}function u_e(t){return"Go to the Next Month"}function d_e(t){return"Go to the Previous Month"}function h_e(t,e,n){return(n??new Ki(e)).format(t,"cccc")}function f_e(t,e){return`Week ${t}`}function m_e(t){return"Week Number"}function p_e(t){return"Choose the Year"}const g_e=Object.freeze(Object.defineProperty({__proto__:null,labelCaption:a_e,labelDay:i_e,labelDayButton:lX,labelGrid:cX,labelGridcell:o_e,labelMonthDropdown:l_e,labelNav:c_e,labelNext:u_e,labelPrevious:d_e,labelWeekNumber:f_e,labelWeekNumberHeader:m_e,labelWeekday:h_e,labelYearDropdown:p_e},Symbol.toStringTag,{value:"Module"})),wg=t=>t instanceof HTMLElement?t:null,Y3=t=>[...t.querySelectorAll("[data-animated-month]")??[]],x_e=t=>wg(t.querySelector("[data-animated-month]")),K3=t=>wg(t.querySelector("[data-animated-caption]")),Z3=t=>wg(t.querySelector("[data-animated-weeks]")),v_e=t=>wg(t.querySelector("[data-animated-nav]")),y_e=t=>wg(t.querySelector("[data-animated-weekdays]"));function b_e(t,e,{classNames:n,months:r,focused:s,dateLib:i}){const a=b.useRef(null),l=b.useRef(r),c=b.useRef(!1);b.useLayoutEffect(()=>{const d=l.current;if(l.current=r,!e||!t.current||!(t.current instanceof HTMLElement)||r.length===0||d.length===0||r.length!==d.length)return;const h=i.isSameMonth(r[0].date,d[0].date),m=i.isAfter(r[0].date,d[0].date),g=m?n[Hi.caption_after_enter]:n[Hi.caption_before_enter],x=m?n[Hi.weeks_after_enter]:n[Hi.weeks_before_enter],y=a.current,w=t.current.cloneNode(!0);if(w instanceof HTMLElement?(Y3(w).forEach(N=>{if(!(N instanceof HTMLElement))return;const T=x_e(N);T&&N.contains(T)&&N.removeChild(T);const E=K3(N);E&&E.classList.remove(g);const _=Z3(N);_&&_.classList.remove(x)}),a.current=w):a.current=null,c.current||h||s)return;const S=y instanceof HTMLElement?Y3(y):[],k=Y3(t.current);if(k?.every(j=>j instanceof HTMLElement)&&S&&S.every(j=>j instanceof HTMLElement)){c.current=!0,t.current.style.isolation="isolate";const j=v_e(t.current);j&&(j.style.zIndex="1"),k.forEach((N,T)=>{const E=S[T];if(!E)return;N.style.position="relative",N.style.overflow="hidden";const _=K3(N);_&&_.classList.add(g);const A=Z3(N);A&&A.classList.add(x);const L=()=>{c.current=!1,t.current&&(t.current.style.isolation=""),j&&(j.style.zIndex=""),_&&_.classList.remove(g),A&&A.classList.remove(x),N.style.position="",N.style.overflow="",N.contains(E)&&N.removeChild(E)};E.style.pointerEvents="none",E.style.position="absolute",E.style.overflow="hidden",E.setAttribute("aria-hidden","true");const P=y_e(E);P&&(P.style.opacity="0");const B=K3(E);B&&(B.classList.add(m?n[Hi.caption_before_exit]:n[Hi.caption_after_exit]),B.addEventListener("animationend",L));const $=Z3(E);$&&$.classList.add(m?n[Hi.weeks_before_exit]:n[Hi.weeks_after_exit]),N.insertBefore(E,N.firstChild)})}})}function w_e(t,e,n,r){const s=t[0],i=t[t.length-1],{ISOWeek:a,fixedWeeks:l,broadcastCalendar:c}=n??{},{addDays:d,differenceInCalendarDays:h,differenceInCalendarMonths:m,endOfBroadcastWeek:g,endOfISOWeek:x,endOfMonth:y,endOfWeek:w,isAfter:S,startOfBroadcastWeek:k,startOfISOWeek:j,startOfWeek:N}=r,T=c?k(s,r):a?j(s):N(s),E=c?g(i):a?x(y(i)):w(y(i)),_=h(E,T),A=m(i,s)+1,L=[];for(let $=0;$<=_;$++){const U=d(T,$);if(e&&S(U,e))break;L.push(U)}const B=(c?35:42)*A;if(l&&L.length{const s=r.weeks.reduce((i,a)=>i.concat(a.days.slice()),e.slice());return n.concat(s.slice())},e.slice())}function k_e(t,e,n,r){const{numberOfMonths:s=1}=n,i=[];for(let a=0;ae)break;i.push(l)}return i}function Cz(t,e,n,r){const{month:s,defaultMonth:i,today:a=r.today(),numberOfMonths:l=1}=t;let c=s||i||a;const{differenceInCalendarMonths:d,addMonths:h,startOfMonth:m}=r;if(n&&d(n,c){const k=n.broadcastCalendar?m(S,r):n.ISOWeek?g(S):x(S),j=n.broadcastCalendar?i(S):n.ISOWeek?a(l(S)):c(l(S)),N=e.filter(A=>A>=k&&A<=j),T=n.broadcastCalendar?35:42;if(n.fixedWeeks&&N.length{const P=T-N.length;return L>j&&L<=s(j,P)});N.push(...A)}const E=N.reduce((A,L)=>{const P=n.ISOWeek?d(L):h(L),B=A.find(U=>U.weekNumber===P),$=new JG(L,S,r);return B?B.days.push($):A.push(new mEe(P,[$])),A},[]),_=new fEe(S,E);return w.push(_),w},[]);return n.reverseMonths?y.reverse():y}function j_e(t,e){let{startMonth:n,endMonth:r}=t;const{startOfYear:s,startOfDay:i,startOfMonth:a,endOfMonth:l,addYears:c,endOfYear:d,newDate:h,today:m}=e,{fromYear:g,toYear:x,fromMonth:y,toMonth:w}=t;!n&&y&&(n=y),!n&&g&&(n=e.newDate(g,0,1)),!r&&w&&(r=w),!r&&x&&(r=h(x,11,31));const S=t.captionLayout==="dropdown"||t.captionLayout==="dropdown-years";return n?n=a(n):g?n=h(g,0,1):!n&&S&&(n=s(c(t.today??m(),-100))),r?r=l(r):x?r=h(x,11,31):!r&&S&&(r=d(t.today??m())),[n&&i(n),r&&i(r)]}function N_e(t,e,n,r){if(n.disableNavigation)return;const{pagedNavigation:s,numberOfMonths:i=1}=n,{startOfMonth:a,addMonths:l,differenceInCalendarMonths:c}=r,d=s?i:1,h=a(t);if(!e)return l(h,d);if(!(c(e,t)n.concat(r.weeks.slice()),e.slice())}function nw(t,e){const[n,r]=b.useState(t);return[e===void 0?n:e,r]}function E_e(t,e){const[n,r]=j_e(t,e),{startOfMonth:s,endOfMonth:i}=e,a=Cz(t,n,r,e),[l,c]=nw(a,t.month?a:void 0);b.useEffect(()=>{const _=Cz(t,n,r,e);c(_)},[t.timeZone]);const d=k_e(l,r,t,e),h=w_e(d,t.endMonth?i(t.endMonth):void 0,t,e),m=O_e(d,h,t,e),g=T_e(m),x=S_e(m),y=C_e(l,n,t,e),w=N_e(l,r,t,e),{disableNavigation:S,onMonthChange:k}=t,j=_=>g.some(A=>A.days.some(L=>L.isEqualTo(_))),N=_=>{if(S)return;let A=s(_);n&&As(r)&&(A=s(r)),c(A),k?.(A)};return{months:m,weeks:g,days:x,navStart:n,navEnd:r,previousMonth:y,nextMonth:w,goToMonth:N,goToDay:_=>{j(_)||N(_.date)}}}var xo;(function(t){t[t.Today=0]="Today",t[t.Selected=1]="Selected",t[t.LastFocused=2]="LastFocused",t[t.FocusedModifier=3]="FocusedModifier"})(xo||(xo={}));function Tz(t){return!t[Ar.disabled]&&!t[Ar.hidden]&&!t[Ar.outside]}function __e(t,e,n,r){let s,i=-1;for(const a of t){const l=e(a);Tz(l)&&(l[Ar.focused]&&iTz(e(a)))),s}function A_e(t,e,n,r,s,i,a){const{ISOWeek:l,broadcastCalendar:c}=i,{addDays:d,addMonths:h,addWeeks:m,addYears:g,endOfBroadcastWeek:x,endOfISOWeek:y,endOfWeek:w,max:S,min:k,startOfBroadcastWeek:j,startOfISOWeek:N,startOfWeek:T}=a;let _={day:d,week:m,month:h,year:g,startOfWeek:A=>c?j(A,a):l?N(A):T(A),endOfWeek:A=>c?x(A):l?y(A):w(A)}[t](n,e==="after"?1:-1);return e==="before"&&r?_=S([r,_]):e==="after"&&s&&(_=k([s,_])),_}function uX(t,e,n,r,s,i,a,l=0){if(l>365)return;const c=A_e(t,e,n.date,r,s,i,a),d=!!(i.disabled&&Pl(c,i.disabled,a)),h=!!(i.hidden&&Pl(c,i.hidden,a)),m=c,g=new JG(c,m,a);return!d&&!h?g:uX(t,e,g,r,s,i,a,l+1)}function M_e(t,e,n,r,s){const{autoFocus:i}=t,[a,l]=b.useState(),c=__e(e.days,n,r||(()=>!1),a),[d,h]=b.useState(i?c:void 0);return{isFocusTarget:w=>!!c?.isEqualTo(w),setFocused:h,focused:d,blur:()=>{l(d),h(void 0)},moveFocus:(w,S)=>{if(!d)return;const k=uX(w,S,d,e.navStart,e.navEnd,t,s);k&&(t.disableNavigation&&!e.days.some(N=>N.isEqualTo(k))||(e.goToDay(k),h(k)))}}}function R_e(t,e){const{selected:n,required:r,onSelect:s}=t,[i,a]=nw(n,s?n:void 0),l=s?n:i,{isSameDay:c}=e,d=x=>l?.some(y=>c(y,x))??!1,{min:h,max:m}=t;return{selected:l,select:(x,y,w)=>{let S=[...l??[]];if(d(x)){if(l?.length===h||r&&l?.length===1)return;S=l?.filter(k=>!c(k,x))}else l?.length===m?S=[x]:S=[...S,x];return s||a(S),s?.(S,x,y,w),S},isSelected:d}}function D_e(t,e,n=0,r=0,s=!1,i=Xo){const{from:a,to:l}=e||{},{isSameDay:c,isAfter:d,isBefore:h}=i;let m;if(!a&&!l)m={from:t,to:n>0?void 0:t};else if(a&&!l)c(a,t)?n===0?m={from:a,to:t}:s?m={from:a,to:void 0}:m=void 0:h(t,a)?m={from:t,to:a}:m={from:a,to:t};else if(a&&l)if(c(a,t)&&c(l,t))s?m={from:a,to:l}:m=void 0;else if(c(a,t))m={from:a,to:n>0?void 0:t};else if(c(l,t))m={from:t,to:n>0?void 0:t};else if(h(t,a))m={from:t,to:l};else if(d(t,a))m={from:a,to:t};else if(d(t,l))m={from:a,to:t};else throw new Error("Invalid range");if(m?.from&&m?.to){const g=i.differenceInCalendarDays(m.to,m.from);r>0&&g>r?m={from:t,to:void 0}:n>1&&gtypeof l!="function").some(l=>typeof l=="boolean"?l:n.isDate(l)?Dl(t,l,!1,n):iX(l,n)?l.some(c=>Dl(t,c,!1,n)):u7(l)?l.from&&l.to?Ez(t,{from:l.from,to:l.to},n):!1:sX(l)?P_e(t,l.dayOfWeek,n):tX(l)?n.isAfter(l.before,l.after)?Ez(t,{from:n.addDays(l.after,1),to:n.addDays(l.before,-1)},n):Pl(t.from,l,n)||Pl(t.to,l,n):nX(l)||rX(l)?Pl(t.from,l,n)||Pl(t.to,l,n):!1))return!0;const a=r.filter(l=>typeof l=="function");if(a.length){let l=t.from;const c=n.differenceInCalendarDays(t.to,t.from);for(let d=0;d<=c;d++){if(a.some(h=>h(l)))return!0;l=n.addDays(l,1)}}return!1}function I_e(t,e){const{disabled:n,excludeDisabled:r,selected:s,required:i,onSelect:a}=t,[l,c]=nw(s,a?s:void 0),d=a?s:l;return{selected:d,select:(g,x,y)=>{const{min:w,max:S}=t,k=g?D_e(g,d,w,S,i,e):void 0;return r&&n&&k?.from&&k.to&&z_e({from:k.from,to:k.to},n,e)&&(k.from=g,k.to=void 0),a||c(k),a?.(k,g,x,y),k},isSelected:g=>d&&Dl(d,g,!1,e)}}function L_e(t,e){const{selected:n,required:r,onSelect:s}=t,[i,a]=nw(n,s?n:void 0),l=s?n:i,{isSameDay:c}=e;return{selected:l,select:(m,g,x)=>{let y=m;return!r&&l&&l&&c(m,l)&&(y=void 0),s||a(y),s?.(y,m,g,x),y},isSelected:m=>l?c(l,m):!1}}function B_e(t,e){const n=L_e(t,e),r=R_e(t,e),s=I_e(t,e);switch(t.mode){case"single":return n;case"multiple":return r;case"range":return s;default:return}}function F_e(t){let e=t;e.timeZone&&(e={...t},e.today&&(e.today=new Fs(e.today,e.timeZone)),e.month&&(e.month=new Fs(e.month,e.timeZone)),e.defaultMonth&&(e.defaultMonth=new Fs(e.defaultMonth,e.timeZone)),e.startMonth&&(e.startMonth=new Fs(e.startMonth,e.timeZone)),e.endMonth&&(e.endMonth=new Fs(e.endMonth,e.timeZone)),e.mode==="single"&&e.selected?e.selected=new Fs(e.selected,e.timeZone):e.mode==="multiple"&&e.selected?e.selected=e.selected?.map(Pe=>new Fs(Pe,e.timeZone)):e.mode==="range"&&e.selected&&(e.selected={from:e.selected.from?new Fs(e.selected.from,e.timeZone):void 0,to:e.selected.to?new Fs(e.selected.to,e.timeZone):void 0}));const{components:n,formatters:r,labels:s,dateLib:i,locale:a,classNames:l}=b.useMemo(()=>{const Pe={...c7,...e.locale};return{dateLib:new Ki({locale:Pe,weekStartsOn:e.broadcastCalendar?1:e.weekStartsOn,firstWeekContainsDate:e.firstWeekContainsDate,useAdditionalWeekYearTokens:e.useAdditionalWeekYearTokens,useAdditionalDayOfYearTokens:e.useAdditionalDayOfYearTokens,timeZone:e.timeZone,numerals:e.numerals},e.dateLib),components:QEe(e.components),formatters:e_e(e.formatters),labels:{...g_e,...e.labels},locale:Pe,classNames:{...d7(),...e.classNames}}},[e.locale,e.broadcastCalendar,e.weekStartsOn,e.firstWeekContainsDate,e.useAdditionalWeekYearTokens,e.useAdditionalDayOfYearTokens,e.timeZone,e.numerals,e.dateLib,e.components,e.formatters,e.labels,e.classNames]),{captionLayout:c,mode:d,navLayout:h,numberOfMonths:m=1,onDayBlur:g,onDayClick:x,onDayFocus:y,onDayKeyDown:w,onDayMouseEnter:S,onDayMouseLeave:k,onNextClick:j,onPrevClick:N,showWeekNumber:T,styles:E}=e,{formatCaption:_,formatDay:A,formatMonthDropdown:L,formatWeekNumber:P,formatWeekNumberHeader:B,formatWeekdayName:$,formatYearDropdown:U}=r,te=E_e(e,i),{days:z,months:Q,navStart:F,navEnd:Y,previousMonth:J,nextMonth:X,goToMonth:R}=te,ie=$Ee(z,e,F,Y,i),{isSelected:G,select:I,selected:V}=B_e(e,i)??{},{blur:ee,focused:ne,isFocusTarget:W,moveFocus:se,setFocused:re}=M_e(e,te,ie,G??(()=>!1),i),{labelDayButton:oe,labelGridcell:Te,labelGrid:We,labelMonthDropdown:Ye,labelNav:Je,labelPrevious:Oe,labelNext:Ve,labelWeekday:Ue,labelWeekNumber:He,labelWeekNumberHeader:Ot,labelYearDropdown:xt}=s,kn=b.useMemo(()=>r_e(i,e.ISOWeek),[i,e.ISOWeek]),It=d!==void 0||x!==void 0,Yt=b.useCallback(()=>{J&&(R(J),N?.(J))},[J,R,N]),_t=b.useCallback(()=>{X&&(R(X),j?.(X))},[R,X,j]),mt=b.useCallback((Pe,it)=>ot=>{ot.preventDefault(),ot.stopPropagation(),re(Pe),I?.(Pe.date,it,ot),x?.(Pe.date,it,ot)},[I,x,re]),Ne=b.useCallback((Pe,it)=>ot=>{re(Pe),y?.(Pe.date,it,ot)},[y,re]),Ie=b.useCallback((Pe,it)=>ot=>{ee(),g?.(Pe.date,it,ot)},[ee,g]),st=b.useCallback((Pe,it)=>ot=>{const nn={ArrowLeft:[ot.shiftKey?"month":"day",e.dir==="rtl"?"after":"before"],ArrowRight:[ot.shiftKey?"month":"day",e.dir==="rtl"?"before":"after"],ArrowDown:[ot.shiftKey?"year":"week","after"],ArrowUp:[ot.shiftKey?"year":"week","before"],PageUp:[ot.shiftKey?"year":"month","before"],PageDown:[ot.shiftKey?"year":"month","after"],Home:["startOfWeek","before"],End:["endOfWeek","after"]};if(nn[ot.key]){ot.preventDefault(),ot.stopPropagation();const[Kt,pt]=nn[ot.key];se(Kt,pt)}w?.(Pe.date,it,ot)},[se,w,e.dir]),yt=b.useCallback((Pe,it)=>ot=>{S?.(Pe.date,it,ot)},[S]),Pt=b.useCallback((Pe,it)=>ot=>{k?.(Pe.date,it,ot)},[k]),Mt=b.useCallback(Pe=>it=>{const ot=Number(it.target.value),nn=i.setMonth(i.startOfMonth(Pe),ot);R(nn)},[i,R]),zn=b.useCallback(Pe=>it=>{const ot=Number(it.target.value),nn=i.setYear(i.startOfMonth(Pe),ot);R(nn)},[i,R]),{className:Fe,style:rt}=b.useMemo(()=>({className:[l[jt.Root],e.className].filter(Boolean).join(" "),style:{...E?.[jt.Root],...e.style}}),[l,e.className,e.style,E]),tn=VEe(e),Rt=b.useRef(null);b_e(Rt,!!e.animate,{classNames:l,months:Q,focused:ne,dateLib:i});const ke={dayPickerProps:e,selected:V,select:I,isSelected:G,months:Q,nextMonth:X,previousMonth:J,goToMonth:R,getModifiers:ie,components:n,classNames:l,styles:E,labels:s,formatters:r};return ae.createElement(eX.Provider,{value:ke},ae.createElement(n.Root,{rootRef:e.animate?Rt:void 0,className:Fe,style:rt,dir:e.dir,id:e.id,lang:e.lang,nonce:e.nonce,title:e.title,role:e.role,"aria-label":e["aria-label"],"aria-labelledby":e["aria-labelledby"],...tn},ae.createElement(n.Months,{className:l[jt.Months],style:E?.[jt.Months]},!e.hideNavigation&&!h&&ae.createElement(n.Nav,{"data-animated-nav":e.animate?"true":void 0,className:l[jt.Nav],style:E?.[jt.Nav],"aria-label":Je(),onPreviousClick:Yt,onNextClick:_t,previousMonth:J,nextMonth:X}),Q.map((Pe,it)=>ae.createElement(n.Month,{"data-animated-month":e.animate?"true":void 0,className:l[jt.Month],style:E?.[jt.Month],key:it,displayIndex:it,calendarMonth:Pe},h==="around"&&!e.hideNavigation&&it===0&&ae.createElement(n.PreviousMonthButton,{type:"button",className:l[jt.PreviousMonthButton],tabIndex:J?void 0:-1,"aria-disabled":J?void 0:!0,"aria-label":Oe(J),onClick:Yt,"data-animated-button":e.animate?"true":void 0},ae.createElement(n.Chevron,{disabled:J?void 0:!0,className:l[jt.Chevron],orientation:e.dir==="rtl"?"right":"left"})),ae.createElement(n.MonthCaption,{"data-animated-caption":e.animate?"true":void 0,className:l[jt.MonthCaption],style:E?.[jt.MonthCaption],calendarMonth:Pe,displayIndex:it},c?.startsWith("dropdown")?ae.createElement(n.DropdownNav,{className:l[jt.Dropdowns],style:E?.[jt.Dropdowns]},(()=>{const ot=c==="dropdown"||c==="dropdown-months"?ae.createElement(n.MonthsDropdown,{key:"month",className:l[jt.MonthsDropdown],"aria-label":Ye(),classNames:l,components:n,disabled:!!e.disableNavigation,onChange:Mt(Pe.date),options:t_e(Pe.date,F,Y,r,i),style:E?.[jt.Dropdown],value:i.getMonth(Pe.date)}):ae.createElement("span",{key:"month"},L(Pe.date,i)),nn=c==="dropdown"||c==="dropdown-years"?ae.createElement(n.YearsDropdown,{key:"year",className:l[jt.YearsDropdown],"aria-label":xt(i.options),classNames:l,components:n,disabled:!!e.disableNavigation,onChange:zn(Pe.date),options:s_e(F,Y,r,i,!!e.reverseYears),style:E?.[jt.Dropdown],value:i.getYear(Pe.date)}):ae.createElement("span",{key:"year"},U(Pe.date,i));return i.getMonthYearOrder()==="year-first"?[nn,ot]:[ot,nn]})(),ae.createElement("span",{role:"status","aria-live":"polite",style:{border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",width:"1px",whiteSpace:"nowrap",wordWrap:"normal"}},_(Pe.date,i.options,i))):ae.createElement(n.CaptionLabel,{className:l[jt.CaptionLabel],role:"status","aria-live":"polite"},_(Pe.date,i.options,i))),h==="around"&&!e.hideNavigation&&it===m-1&&ae.createElement(n.NextMonthButton,{type:"button",className:l[jt.NextMonthButton],tabIndex:X?void 0:-1,"aria-disabled":X?void 0:!0,"aria-label":Ve(X),onClick:_t,"data-animated-button":e.animate?"true":void 0},ae.createElement(n.Chevron,{disabled:X?void 0:!0,className:l[jt.Chevron],orientation:e.dir==="rtl"?"left":"right"})),it===m-1&&h==="after"&&!e.hideNavigation&&ae.createElement(n.Nav,{"data-animated-nav":e.animate?"true":void 0,className:l[jt.Nav],style:E?.[jt.Nav],"aria-label":Je(),onPreviousClick:Yt,onNextClick:_t,previousMonth:J,nextMonth:X}),ae.createElement(n.MonthGrid,{role:"grid","aria-multiselectable":d==="multiple"||d==="range","aria-label":We(Pe.date,i.options,i)||void 0,className:l[jt.MonthGrid],style:E?.[jt.MonthGrid]},!e.hideWeekdays&&ae.createElement(n.Weekdays,{"data-animated-weekdays":e.animate?"true":void 0,className:l[jt.Weekdays],style:E?.[jt.Weekdays]},T&&ae.createElement(n.WeekNumberHeader,{"aria-label":Ot(i.options),className:l[jt.WeekNumberHeader],style:E?.[jt.WeekNumberHeader],scope:"col"},B()),kn.map(ot=>ae.createElement(n.Weekday,{"aria-label":Ue(ot,i.options,i),className:l[jt.Weekday],key:String(ot),style:E?.[jt.Weekday],scope:"col"},$(ot,i.options,i)))),ae.createElement(n.Weeks,{"data-animated-weeks":e.animate?"true":void 0,className:l[jt.Weeks],style:E?.[jt.Weeks]},Pe.weeks.map(ot=>ae.createElement(n.Week,{className:l[jt.Week],key:ot.weekNumber,style:E?.[jt.Week],week:ot},T&&ae.createElement(n.WeekNumber,{week:ot,style:E?.[jt.WeekNumber],"aria-label":He(ot.weekNumber,{locale:a}),className:l[jt.WeekNumber],scope:"row",role:"rowheader"},P(ot.weekNumber,i)),ot.days.map(nn=>{const{date:Kt}=nn,pt=ie(nn);if(pt[Ar.focused]=!pt.hidden&&!!ne?.isEqualTo(nn),pt[Ua.selected]=G?.(Kt)||pt.selected,u7(V)){const{from:vr,to:In}=V;pt[Ua.range_start]=!!(vr&&In&&i.isSameDay(Kt,vr)),pt[Ua.range_end]=!!(vr&&In&&i.isSameDay(Kt,In)),pt[Ua.range_middle]=Dl(V,Kt,!0,i)}const xr=n_e(pt,E,e.modifiersStyles),Ur=HEe(pt,l,e.modifiersClassNames),Wr=!It&&!pt.hidden?Te(Kt,pt,i.options,i):void 0;return ae.createElement(n.Day,{key:`${i.format(Kt,"yyyy-MM-dd")}_${i.format(nn.displayMonth,"yyyy-MM")}`,day:nn,modifiers:pt,className:Ur.join(" "),style:xr,role:"gridcell","aria-selected":pt.selected||void 0,"aria-label":Wr,"data-day":i.format(Kt,"yyyy-MM-dd"),"data-month":nn.outside?i.format(Kt,"yyyy-MM"):void 0,"data-selected":pt.selected||void 0,"data-disabled":pt.disabled||void 0,"data-hidden":pt.hidden||void 0,"data-outside":nn.outside||void 0,"data-focused":pt.focused||void 0,"data-today":pt.today||void 0},!pt.hidden&&It?ae.createElement(n.DayButton,{className:l[jt.DayButton],style:E?.[jt.DayButton],type:"button",day:nn,modifiers:pt,disabled:pt.disabled||void 0,tabIndex:W(nn)?0:-1,"aria-label":oe(Kt,pt,i.options,i),onClick:mt(nn,pt),onBlur:Ie(nn,pt),onFocus:Ne(nn,pt),onKeyDown:st(nn,pt),onMouseEnter:yt(nn,pt),onMouseLeave:Pt(nn,pt)},A(Kt,i.options,i)):!pt.hidden&&A(nn.date,i.options,i))})))))))),e.footer&&ae.createElement(n.Footer,{className:l[jt.Footer],style:E?.[jt.Footer],role:"status","aria-live":"polite"},e.footer)))}function _z({className:t,classNames:e,showOutsideDays:n=!0,captionLayout:r="label",buttonVariant:s="ghost",formatters:i,components:a,...l}){const c=d7();return o.jsx(F_e,{showOutsideDays:n,className:xe("bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,t),captionLayout:r,formatters:{formatMonthDropdown:d=>d.toLocaleString("default",{month:"short"}),...i},classNames:{root:xe("w-fit",c.root),months:xe("relative flex flex-col gap-4 md:flex-row",c.months),month:xe("flex w-full flex-col gap-4",c.month),nav:xe("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",c.nav),button_previous:xe(I0({variant:s}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",c.button_previous),button_next:xe(I0({variant:s}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",c.button_next),month_caption:xe("flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]",c.month_caption),dropdowns:xe("flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium",c.dropdowns),dropdown_root:xe("has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border",c.dropdown_root),dropdown:xe("bg-popover absolute inset-0 opacity-0",c.dropdown),caption_label:xe("select-none font-medium",r==="label"?"text-sm":"[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5",c.caption_label),table:"w-full border-collapse",weekdays:xe("flex",c.weekdays),weekday:xe("text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal",c.weekday),week:xe("mt-2 flex w-full",c.week),week_number_header:xe("w-[--cell-size] select-none",c.week_number_header),week_number:xe("text-muted-foreground select-none text-[0.8rem]",c.week_number),day:xe("group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md",c.day),range_start:xe("bg-accent rounded-l-md",c.range_start),range_middle:xe("rounded-none",c.range_middle),range_end:xe("bg-accent rounded-r-md",c.range_end),today:xe("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",c.today),outside:xe("text-muted-foreground aria-selected:text-muted-foreground",c.outside),disabled:xe("text-muted-foreground opacity-50",c.disabled),hidden:xe("invisible",c.hidden),...e},components:{Root:({className:d,rootRef:h,...m})=>o.jsx("div",{"data-slot":"calendar",ref:h,className:xe(d),...m}),Chevron:({className:d,orientation:h,...m})=>h==="left"?o.jsx(vd,{className:xe("size-4",d),...m}):h==="right"?o.jsx(yd,{className:xe("size-4",d),...m}):o.jsx(nd,{className:xe("size-4",d),...m}),DayButton:q_e,WeekNumber:({children:d,...h})=>o.jsx("td",{...h,children:o.jsx("div",{className:"flex size-[--cell-size] items-center justify-center text-center",children:d})}),...a},...l})}function q_e({className:t,day:e,modifiers:n,...r}){const s=d7(),i=b.useRef(null);return b.useEffect(()=>{n.focused&&i.current?.focus()},[n.focused]),o.jsx(de,{ref:i,variant:"ghost",size:"icon","data-day":e.date.toLocaleDateString(),"data-selected-single":n.selected&&!n.range_start&&!n.range_end&&!n.range_middle,"data-range-start":n.range_start,"data-range-end":n.range_end,"data-range-middle":n.range_middle,className:xe("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70",s.day,t),...r})}class $_e{ws=null;reconnectTimeout=null;reconnectAttempts=0;maxReconnectAttempts=10;heartbeatInterval=null;logCallbacks=new Set;connectionCallbacks=new Set;isConnected=!1;logCache=[];maxCacheSize=1e3;getWebSocketUrl(){{const e=window.location.protocol==="https:"?"wss:":"ws:",n=window.location.host;return`${e}//${n}/ws/logs`}}connect(){if(this.ws?.readyState===WebSocket.OPEN||this.ws?.readyState===WebSocket.CONNECTING)return;const e=this.getWebSocketUrl();try{this.ws=new WebSocket(e),this.ws.onopen=()=>{this.isConnected=!0,this.reconnectAttempts=0,this.notifyConnection(!0),this.startHeartbeat()},this.ws.onmessage=n=>{try{if(n.data==="pong")return;const r=JSON.parse(n.data);this.notifyLog(r)}catch(r){console.error("解析日志消息失败:",r)}},this.ws.onerror=n=>{console.error("❌ WebSocket 错误:",n),this.isConnected=!1,this.notifyConnection(!1)},this.ws.onclose=()=>{this.isConnected=!1,this.notifyConnection(!1),this.stopHeartbeat(),this.attemptReconnect()}}catch(n){console.error("创建 WebSocket 连接失败:",n),this.attemptReconnect()}}attemptReconnect(){if(this.reconnectAttempts>=this.maxReconnectAttempts)return;this.reconnectAttempts+=1;const e=Math.min(1e3*this.reconnectAttempts,1e4);this.reconnectTimeout=window.setTimeout(()=>{this.connect()},e)}startHeartbeat(){this.heartbeatInterval=window.setInterval(()=>{this.ws?.readyState===WebSocket.OPEN&&this.ws.send("ping")},3e4)}stopHeartbeat(){this.heartbeatInterval!==null&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}disconnect(){this.reconnectTimeout!==null&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.stopHeartbeat(),this.ws&&(this.ws.close(),this.ws=null),this.isConnected=!1,this.reconnectAttempts=0}onLog(e){return this.logCallbacks.add(e),()=>this.logCallbacks.delete(e)}onConnectionChange(e){return this.connectionCallbacks.add(e),e(this.isConnected),()=>this.connectionCallbacks.delete(e)}notifyLog(e){this.logCache.some(r=>r.id===e.id)||(this.logCache.push(e),this.logCache.length>this.maxCacheSize&&(this.logCache=this.logCache.slice(-this.maxCacheSize)),this.logCallbacks.forEach(r=>{try{r(e)}catch(s){console.error("日志回调执行失败:",s)}}))}notifyConnection(e){this.connectionCallbacks.forEach(n=>{try{n(e)}catch(r){console.error("连接状态回调执行失败:",r)}})}getAllLogs(){return[...this.logCache]}clearLogs(){this.logCache=[]}getConnectionStatus(){return this.isConnected}}const Oh=new $_e;typeof window<"u"&&Oh.connect();const H_e={lessThanXSeconds:{one:"不到 1 秒",other:"不到 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分钟",lessThanXMinutes:{one:"不到 1 分钟",other:"不到 {{count}} 分钟"},xMinutes:{one:"1 分钟",other:"{{count}} 分钟"},xHours:{one:"1 小时",other:"{{count}} 小时"},aboutXHours:{one:"大约 1 小时",other:"大约 {{count}} 小时"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大约 1 个星期",other:"大约 {{count}} 个星期"},xWeeks:{one:"1 个星期",other:"{{count}} 个星期"},aboutXMonths:{one:"大约 1 个月",other:"大约 {{count}} 个月"},xMonths:{one:"1 个月",other:"{{count}} 个月"},aboutXYears:{one:"大约 1 年",other:"大约 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超过 1 年",other:"超过 {{count}} 年"},almostXYears:{one:"将近 1 年",other:"将近 {{count}} 年"}},Q_e=(t,e,n)=>{let r;const s=H_e[t];return typeof s=="string"?r=s:e===1?r=s.one:r=s.other.replace("{{count}}",String(e)),n?.addSuffix?n.comparison&&n.comparison>0?r+"内":r+"前":r},V_e={full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},U_e={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},W_e={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},G_e={date:Vh({formats:V_e,defaultWidth:"full"}),time:Vh({formats:U_e,defaultWidth:"full"}),dateTime:Vh({formats:W_e,defaultWidth:"full"})};function Az(t,e,n){const r="eeee p";return iEe(t,e,n)?r:t.getTime()>e.getTime()?"'下个'"+r:"'上个'"+r}const X_e={lastWeek:Az,yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:Az,other:"PP p"},Y_e=(t,e,n,r)=>{const s=X_e[t];return typeof s=="function"?s(e,n,r):s},K_e={narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},Z_e={narrow:["1","2","3","4"],abbreviated:["第一季","第二季","第三季","第四季"],wide:["第一季度","第二季度","第三季度","第四季度"]},J_e={narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},eAe={narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["周日","周一","周二","周三","周四","周五","周六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},tAe={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},nAe={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},rAe=(t,e)=>{const n=Number(t);switch(e?.unit){case"date":return n.toString()+"日";case"hour":return n.toString()+"时";case"minute":return n.toString()+"分";case"second":return n.toString()+"秒";default:return"第 "+n.toString()}},sAe={ordinalNumber:rAe,era:ko({values:K_e,defaultWidth:"wide"}),quarter:ko({values:Z_e,defaultWidth:"wide",argumentCallback:t=>t-1}),month:ko({values:J_e,defaultWidth:"wide"}),day:ko({values:eAe,defaultWidth:"wide"}),dayPeriod:ko({values:tAe,defaultWidth:"wide",formattingValues:nAe,defaultFormattingWidth:"wide"})},iAe=/^(第\s*)?\d+(日|时|分|秒)?/i,aAe=/\d+/i,oAe={narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},lAe={any:[/^(前)/i,/^(公元)/i]},cAe={narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻钟/i},uAe={any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},dAe={narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},hAe={narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},fAe={narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^周[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},mAe={any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},pAe={any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i},gAe={any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},xAe={ordinalNumber:WG({matchPattern:iAe,parsePattern:aAe,valueCallback:t=>parseInt(t,10)}),era:Oo({matchPatterns:oAe,defaultMatchWidth:"wide",parsePatterns:lAe,defaultParseWidth:"any"}),quarter:Oo({matchPatterns:cAe,defaultMatchWidth:"wide",parsePatterns:uAe,defaultParseWidth:"any",valueCallback:t=>t+1}),month:Oo({matchPatterns:dAe,defaultMatchWidth:"wide",parsePatterns:hAe,defaultParseWidth:"any"}),day:Oo({matchPatterns:fAe,defaultMatchWidth:"wide",parsePatterns:mAe,defaultParseWidth:"any"}),dayPeriod:Oo({matchPatterns:pAe,defaultMatchWidth:"any",parsePatterns:gAe,defaultParseWidth:"any"})},U1={code:"zh-CN",formatDistance:Q_e,formatLong:G_e,formatRelative:Y_e,localize:sAe,match:xAe,options:{weekStartsOn:1,firstWeekContainsDate:4}},W1={xs:{label:"小",rowHeight:28,class:"text-[10px] sm:text-xs"},sm:{label:"中",rowHeight:36,class:"text-xs sm:text-sm"},base:{label:"大",rowHeight:44,class:"text-sm sm:text-base"}};function vAe(){const[t,e]=b.useState([]),[n,r]=b.useState(""),[s,i]=b.useState("all"),[a,l]=b.useState("all"),[c,d]=b.useState(void 0),[h,m]=b.useState(void 0),[g,x]=b.useState(!0),[y,w]=b.useState(!1),[S,k]=b.useState("xs"),[j,N]=b.useState(4),T=b.useRef(null);b.useEffect(()=>{const F=Oh.getAllLogs();e(F);const Y=Oh.onLog(()=>{e(Oh.getAllLogs())}),J=Oh.onConnectionChange(X=>{w(X)});return()=>{Y(),J()}},[]);const E=b.useMemo(()=>{const F=new Set(t.map(Y=>Y.module));return Array.from(F).sort()},[t]),_=F=>{switch(F){case"DEBUG":return"text-muted-foreground";case"INFO":return"text-blue-500 dark:text-blue-400";case"WARNING":return"text-yellow-600 dark:text-yellow-500";case"ERROR":return"text-red-600 dark:text-red-500";case"CRITICAL":return"text-red-700 dark:text-red-400 font-bold";default:return"text-foreground"}},A=F=>{switch(F){case"DEBUG":return"bg-gray-800/30 dark:bg-gray-800/50";case"INFO":return"bg-blue-900/20 dark:bg-blue-500/20";case"WARNING":return"bg-yellow-900/20 dark:bg-yellow-500/20";case"ERROR":return"bg-red-900/20 dark:bg-red-500/20";case"CRITICAL":return"bg-red-900/30 dark:bg-red-600/30";default:return"bg-gray-800/20 dark:bg-gray-800/30"}},L=()=>{window.location.reload()},P=()=>{Oh.clearLogs(),e([])},B=()=>{const F=te.map(R=>`${R.timestamp} [${R.level.padEnd(8)}] [${R.module}] ${R.message}`).join(` +`),Y=new Blob([F],{type:"text/plain;charset=utf-8"}),J=URL.createObjectURL(Y),X=document.createElement("a");X.href=J,X.download=`logs-${Ev(new Date,"yyyy-MM-dd-HHmmss")}.txt`,X.click(),URL.revokeObjectURL(J)},$=()=>{x(!g)},U=()=>{d(void 0),m(void 0)},te=b.useMemo(()=>t.filter(F=>{const Y=n===""||F.message.toLowerCase().includes(n.toLowerCase())||F.module.toLowerCase().includes(n.toLowerCase()),J=s==="all"||F.level===s,X=a==="all"||F.module===a;let R=!0;if(c||h){const ie=new Date(F.timestamp);if(c){const G=new Date(c);G.setHours(0,0,0,0),R=R&&ie>=G}if(h){const G=new Date(h);G.setHours(23,59,59,999),R=R&&ie<=G}}return Y&&J&&X&&R}),[t,n,s,a,c,h]),z=W1[S].rowHeight+j,Q=BTe({count:te.length,getScrollElement:()=>T.current,estimateSize:()=>z,overscan:15});return b.useEffect(()=>{g&&te.length>0&&Q.scrollToIndex(te.length-1,{align:"end",behavior:"auto"})},[te.length,g,Q]),o.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[o.jsxs("div",{className:"flex-shrink-0 space-y-4 p-3 sm:p-4 lg:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-3",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-xl sm:text-2xl lg:text-3xl font-bold",children:"日志查看器"}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:"实时查看和分析麦麦运行日志"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("div",{className:xe("h-2.5 w-2.5 sm:h-3 sm:w-3 rounded-full",y?"bg-green-500 animate-pulse":"bg-red-500")}),o.jsx("span",{className:"text-xs sm:text-sm text-muted-foreground",children:y?"已连接":"未连接"})]})]}),o.jsx(qt,{className:"p-3 sm:p-4",children:o.jsxs("div",{className:"flex flex-col gap-3 sm:gap-4",children:[o.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:gap-4",children:[o.jsxs("div",{className:"flex-1 relative",children:[o.jsx(Ni,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(ze,{placeholder:"搜索日志...",value:n,onChange:F=>r(F.target.value),className:"pl-9 h-9 text-sm"})]}),o.jsxs(Vt,{value:s,onValueChange:i,children:[o.jsxs($t,{className:"w-full sm:w-[140px] lg:w-[180px] h-9 text-sm",children:[o.jsx(sk,{className:"h-4 w-4 mr-2"}),o.jsx(Ut,{placeholder:"级别"})]}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部级别"}),o.jsx(De,{value:"DEBUG",children:"DEBUG"}),o.jsx(De,{value:"INFO",children:"INFO"}),o.jsx(De,{value:"WARNING",children:"WARNING"}),o.jsx(De,{value:"ERROR",children:"ERROR"}),o.jsx(De,{value:"CRITICAL",children:"CRITICAL"})]})]}),o.jsxs(Vt,{value:a,onValueChange:l,children:[o.jsxs($t,{className:"w-full sm:w-[160px] lg:w-[200px] h-9 text-sm",children:[o.jsx(sk,{className:"h-4 w-4 mr-2"}),o.jsx(Ut,{placeholder:"模块"})]}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部模块"}),E.map(F=>o.jsx(De,{value:F,children:F},F))]})]})]}),o.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:gap-4",children:[o.jsxs(zo,{children:[o.jsx(Io,{asChild:!0,children:o.jsxs(de,{variant:"outline",size:"sm",className:xe("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!c&&"text-muted-foreground"),children:[o.jsx(w9,{className:"mr-2 h-4 w-4"}),o.jsx("span",{className:"text-xs sm:text-sm",children:c?Ev(c,"PPP",{locale:U1}):"开始日期"})]})}),o.jsx(Xa,{className:"w-auto p-0",align:"start",children:o.jsx(_z,{mode:"single",selected:c,onSelect:d,initialFocus:!0,locale:U1})})]}),o.jsxs(zo,{children:[o.jsx(Io,{asChild:!0,children:o.jsxs(de,{variant:"outline",size:"sm",className:xe("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!h&&"text-muted-foreground"),children:[o.jsx(w9,{className:"mr-2 h-4 w-4"}),o.jsx("span",{className:"text-xs sm:text-sm",children:h?Ev(h,"PPP",{locale:U1}):"结束日期"})]})}),o.jsx(Xa,{className:"w-auto p-0",align:"start",children:o.jsx(_z,{mode:"single",selected:h,onSelect:m,initialFocus:!0,locale:U1})})]}),(c||h)&&o.jsxs(de,{variant:"outline",size:"sm",onClick:U,className:"w-full sm:w-auto h-9",children:[o.jsx(_p,{className:"h-4 w-4 sm:mr-2"}),o.jsx("span",{className:"hidden sm:inline text-sm",children:"清除时间筛选"}),o.jsx("span",{className:"sm:hidden text-sm",children:"清除"})]})]}),o.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center",children:[o.jsxs("div",{className:"flex gap-2 flex-wrap",children:[o.jsxs(de,{variant:g?"default":"outline",size:"sm",onClick:$,className:"flex-1 sm:flex-none h-9",children:[g?o.jsx(tte,{className:"h-4 w-4"}):o.jsx(nte,{className:"h-4 w-4"}),o.jsx("span",{className:"ml-2 text-sm",children:g?"自动滚动":"已暂停"})]}),o.jsxs(de,{variant:"outline",size:"sm",onClick:L,className:"flex-1 sm:flex-none h-9",children:[o.jsx(Ps,{className:"h-4 w-4"}),o.jsx("span",{className:"ml-2 text-sm",children:"刷新"})]}),o.jsxs(de,{variant:"outline",size:"sm",onClick:P,className:"flex-1 sm:flex-none h-9",children:[o.jsx(Sn,{className:"h-4 w-4"}),o.jsx("span",{className:"ml-2 text-sm",children:"清空"})]}),o.jsxs(de,{variant:"outline",size:"sm",onClick:B,className:"flex-1 sm:flex-none h-9",children:[o.jsx(Ku,{className:"h-4 w-4"}),o.jsx("span",{className:"ml-2 text-sm",children:"导出"})]})]}),o.jsx("div",{className:"flex-1 hidden sm:block"}),o.jsxs("div",{className:"text-xs sm:text-sm text-muted-foreground flex items-center justify-center sm:justify-end",children:[o.jsxs("span",{className:"font-mono",children:[te.length," / ",t.length]}),o.jsx("span",{className:"ml-1",children:"条日志"})]})]}),o.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-6 pt-2 border-t border-border/50",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[o.jsx(rte,{className:"h-4 w-4"}),o.jsx("span",{children:"字号"})]}),o.jsx("div",{className:"flex gap-1",children:Object.keys(W1).map(F=>o.jsx(de,{variant:S===F?"default":"outline",size:"sm",onClick:()=>k(F),className:"h-7 px-3 text-xs",children:W1[F].label},F))})]}),o.jsxs("div",{className:"flex items-center gap-3 flex-1 max-w-xs",children:[o.jsx("span",{className:"text-sm text-muted-foreground whitespace-nowrap",children:"行距"}),o.jsx(Bp,{value:[j],onValueChange:([F])=>N(F),min:0,max:12,step:2,className:"flex-1"}),o.jsxs("span",{className:"text-xs text-muted-foreground w-8",children:[j,"px"]})]})]})]})})]}),o.jsx("div",{className:"flex-1 min-h-0 px-3 sm:px-4 lg:px-6 pb-3 sm:pb-4 lg:pb-6",children:o.jsx(qt,{className:"bg-black dark:bg-gray-950 border-gray-800 dark:border-gray-900 h-full",children:o.jsx(gn,{viewportRef:T,className:"h-full",children:o.jsx("div",{className:xe("p-2 sm:p-3 font-mono relative",W1[S].class),style:{height:`${Q.getTotalSize()}px`},children:te.length===0?o.jsx("div",{className:"text-gray-500 dark:text-gray-600 text-center py-8 text-sm",children:"暂无日志数据"}):Q.getVirtualItems().map(F=>{const Y=te[F.index];return o.jsxs("div",{"data-index":F.index,ref:Q.measureElement,className:xe("absolute top-0 left-0 w-full px-2 sm:px-3 rounded hover:bg-white/5 transition-colors group",A(Y.level)),style:{transform:`translateY(${F.start}px)`,paddingTop:`${j/2}px`,paddingBottom:`${j/2}px`},children:[o.jsxs("div",{className:"flex flex-col gap-0.5 sm:hidden",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"text-gray-500 dark:text-gray-600",children:Y.timestamp}),o.jsxs("span",{className:xe("font-semibold",_(Y.level)),children:["[",Y.level,"]"]})]}),o.jsx("div",{className:"text-cyan-400 dark:text-cyan-500 truncate",children:Y.module}),o.jsx("div",{className:"text-gray-300 dark:text-gray-400 whitespace-pre-wrap break-words",children:Y.message})]}),o.jsxs("div",{className:"hidden sm:flex gap-2 items-start",children:[o.jsx("span",{className:"text-gray-500 dark:text-gray-600 flex-shrink-0 w-[130px] lg:w-[160px]",children:Y.timestamp}),o.jsxs("span",{className:xe("flex-shrink-0 w-[65px] lg:w-[75px] font-semibold",_(Y.level)),children:["[",Y.level,"]"]}),o.jsx("span",{className:"text-cyan-400 dark:text-cyan-500 flex-shrink-0 w-[100px] lg:w-[130px] truncate",children:Y.module}),o.jsx("span",{className:"text-gray-300 dark:text-gray-400 flex-1 whitespace-pre-wrap break-words",children:Y.message})]})]},F.key)})})})})})]})}const yAe="Mai-with-u",bAe="plugin-repo",wAe="main",SAe="plugin_details.json";async function kAe(){try{const t=await St("/api/webui/plugins/fetch-raw",{method:"POST",headers:Dt(),body:JSON.stringify({owner:yAe,repo:bAe,branch:wAe,file_path:SAe})});if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);const e=await t.json();if(!e.success||!e.data)throw new Error(e.error||"获取插件列表失败");return JSON.parse(e.data).filter(s=>!s?.id||!s?.manifest?(console.warn("跳过无效插件数据:",s),!1):!s.manifest.name||!s.manifest.version?(console.warn("跳过缺少必需字段的插件:",s.id),!1):!0).map(s=>({id:s.id,manifest:{manifest_version:s.manifest.manifest_version||1,name:s.manifest.name,version:s.manifest.version,description:s.manifest.description||"",author:s.manifest.author||{name:"Unknown"},license:s.manifest.license||"Unknown",host_application:s.manifest.host_application||{min_version:"0.0.0"},homepage_url:s.manifest.homepage_url,repository_url:s.manifest.repository_url,keywords:s.manifest.keywords||[],categories:s.manifest.categories||[],default_locale:s.manifest.default_locale||"zh-CN",locales_path:s.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!1,published_at:new Date().toISOString(),updated_at:new Date().toISOString()}))}catch(t){throw console.error("Failed to fetch plugin list:",t),t}}async function OAe(){try{const t=await St("/api/webui/plugins/git-status");if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);return await t.json()}catch(t){return console.error("Failed to check Git status:",t),{installed:!1,error:"无法检测 Git 安装状态"}}}async function jAe(){try{const t=await St("/api/webui/plugins/version");if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);return await t.json()}catch(t){return console.error("Failed to get Maimai version:",t),{version:"0.0.0",version_major:0,version_minor:0,version_patch:0}}}function NAe(t,e,n){const r=t.split(".").map(l=>parseInt(l)||0),s=r[0]||0,i=r[1]||0,a=r[2]||0;if(n.version_majorparseInt(m)||0),c=l[0]||0,d=l[1]||0,h=l[2]||0;if(n.version_major>c||n.version_major===c&&n.version_minor>d||n.version_major===c&&n.version_minor===d&&n.version_patch>h)return!1}return!0}function CAe(t,e){const n=window.location.protocol==="https:"?"wss:":"ws:",r=window.location.host,s=new WebSocket(`${n}//${r}/api/webui/ws/plugin-progress`);return s.onopen=()=>{console.log("Plugin progress WebSocket connected");const i=setInterval(()=>{s.readyState===WebSocket.OPEN?s.send("ping"):clearInterval(i)},3e4)},s.onmessage=i=>{try{if(i.data==="pong")return;const a=JSON.parse(i.data);t(a)}catch(a){console.error("Failed to parse progress data:",a)}},s.onerror=i=>{console.error("Plugin progress WebSocket error:",i),e?.(i)},s.onclose=()=>{console.log("Plugin progress WebSocket disconnected")},s}async function G1(){try{const t=await St("/api/webui/plugins/installed",{headers:Dt()});if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);const e=await t.json();if(!e.success)throw new Error(e.message||"获取已安装插件列表失败");return e.plugins||[]}catch(t){return console.error("Failed to get installed plugins:",t),[]}}function X1(t,e){return e.some(n=>n.id===t)}function Y1(t,e){const n=e.find(r=>r.id===t);if(n)return n.manifest?.version||n.version}async function TAe(t,e,n="main"){const r=await St("/api/webui/plugins/install",{method:"POST",headers:Dt(),body:JSON.stringify({plugin_id:t,repository_url:e,branch:n})});if(!r.ok){const s=await r.json();throw new Error(s.detail||"安装失败")}return await r.json()}async function EAe(t){const e=await St("/api/webui/plugins/uninstall",{method:"POST",headers:Dt(),body:JSON.stringify({plugin_id:t})});if(!e.ok){const n=await e.json();throw new Error(n.detail||"卸载失败")}return await e.json()}async function _Ae(t,e,n="main"){const r=await St("/api/webui/plugins/update",{method:"POST",headers:Dt(),body:JSON.stringify({plugin_id:t,repository_url:e,branch:n})});if(!r.ok){const s=await r.json();throw new Error(s.detail||"更新失败")}return await r.json()}const Sg="https://maibot-plugin-stats.maibot-webui.workers.dev";async function dX(t){try{const e=await fetch(`${Sg}/stats/${t}`);return e.ok?await e.json():(console.error("Failed to fetch plugin stats:",e.statusText),null)}catch(e){return console.error("Error fetching plugin stats:",e),null}}async function AAe(t,e){try{const n=e||h7(),r=await fetch(`${Sg}/stats/like`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t,user_id:n})}),s=await r.json();return r.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:r.ok?{success:!0,...s}:{success:!1,error:s.error||"点赞失败"}}catch(n){return console.error("Error liking plugin:",n),{success:!1,error:"网络错误"}}}async function MAe(t,e){try{const n=e||h7(),r=await fetch(`${Sg}/stats/dislike`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t,user_id:n})}),s=await r.json();return r.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:r.ok?{success:!0,...s}:{success:!1,error:s.error||"点踩失败"}}catch(n){return console.error("Error disliking plugin:",n),{success:!1,error:"网络错误"}}}async function RAe(t,e,n,r){if(e<1||e>5)return{success:!1,error:"评分必须在 1-5 之间"};try{const s=r||h7(),i=await fetch(`${Sg}/stats/rate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t,rating:e,comment:n,user_id:s})}),a=await i.json();return i.status===429?{success:!1,error:"每天最多评分 3 次"}:i.ok?{success:!0,...a}:{success:!1,error:a.error||"评分失败"}}catch(s){return console.error("Error rating plugin:",s),{success:!1,error:"网络错误"}}}async function DAe(t){try{const e=await fetch(`${Sg}/stats/download`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t})}),n=await e.json();return e.status===429?(console.warn("Download recording rate limited"),{success:!0}):e.ok?{success:!0,...n}:(console.error("Failed to record download:",n.error),{success:!1,error:n.error})}catch(e){return console.error("Error recording download:",e),{success:!1,error:"网络错误"}}}function PAe(){const t=navigator,e=[navigator.userAgent,navigator.language,navigator.languages?.join(",")||"",navigator.platform,navigator.hardwareConcurrency||0,screen.width,screen.height,screen.colorDepth,screen.pixelDepth,new Date().getTimezoneOffset(),Intl.DateTimeFormat().resolvedOptions().timeZone,navigator.maxTouchPoints||0,t.deviceMemory||0].join("|");let n=0;for(let r=0;r{i(!0);const k=await dX(t);k&&r(k),i(!1)};b.useEffect(()=>{x()},[t]);const y=async()=>{const k=await AAe(t);k.success?(g({title:"已点赞",description:"感谢你的支持!"}),x()):g({title:"点赞失败",description:k.error||"未知错误",variant:"destructive"})},w=async()=>{const k=await MAe(t);k.success?(g({title:"已反馈",description:"感谢你的反馈!"}),x()):g({title:"操作失败",description:k.error||"未知错误",variant:"destructive"})},S=async()=>{if(a===0){g({title:"请选择评分",description:"至少选择 1 颗星",variant:"destructive"});return}const k=await RAe(t,a,c||void 0);k.success?(g({title:"评分成功",description:"感谢你的评价!"}),m(!1),l(0),d(""),x()):g({title:"评分失败",description:k.error||"未知错误",variant:"destructive"})};return s?o.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(Ku,{className:"h-4 w-4"}),o.jsx("span",{children:"-"})]}),o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(Ac,{className:"h-4 w-4"}),o.jsx("span",{children:"-"})]})]}):n?e?o.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[o.jsxs("div",{className:"flex items-center gap-1",title:`下载量: ${n.downloads.toLocaleString()}`,children:[o.jsx(Ku,{className:"h-4 w-4"}),o.jsx("span",{children:n.downloads.toLocaleString()})]}),o.jsxs("div",{className:"flex items-center gap-1",title:`评分: ${n.rating.toFixed(1)} (${n.rating_count} 条评价)`,children:[o.jsx(Ac,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),o.jsx("span",{children:n.rating.toFixed(1)})]}),o.jsxs("div",{className:"flex items-center gap-1",title:`点赞数: ${n.likes}`,children:[o.jsx(y4,{className:"h-4 w-4"}),o.jsx("span",{children:n.likes})]})]}):o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-4",children:[o.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[o.jsx(Ku,{className:"h-5 w-5 text-muted-foreground mb-1"}),o.jsx("span",{className:"text-2xl font-bold",children:n.downloads.toLocaleString()}),o.jsx("span",{className:"text-xs text-muted-foreground",children:"下载量"})]}),o.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[o.jsx(Ac,{className:"h-5 w-5 text-yellow-400 mb-1 fill-yellow-400"}),o.jsx("span",{className:"text-2xl font-bold",children:n.rating.toFixed(1)}),o.jsxs("span",{className:"text-xs text-muted-foreground",children:[n.rating_count," 条评价"]})]}),o.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[o.jsx(y4,{className:"h-5 w-5 text-green-500 mb-1"}),o.jsx("span",{className:"text-2xl font-bold",children:n.likes}),o.jsx("span",{className:"text-xs text-muted-foreground",children:"点赞"})]}),o.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[o.jsx(S9,{className:"h-5 w-5 text-red-500 mb-1"}),o.jsx("span",{className:"text-2xl font-bold",children:n.dislikes}),o.jsx("span",{className:"text-xs text-muted-foreground",children:"点踩"})]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsxs(de,{variant:"outline",size:"sm",onClick:y,children:[o.jsx(y4,{className:"h-4 w-4 mr-1"}),"点赞"]}),o.jsxs(de,{variant:"outline",size:"sm",onClick:w,children:[o.jsx(S9,{className:"h-4 w-4 mr-1"}),"点踩"]}),o.jsxs(Dr,{open:h,onOpenChange:m,children:[o.jsx(Of,{asChild:!0,children:o.jsxs(de,{variant:"default",size:"sm",children:[o.jsx(Ac,{className:"h-4 w-4 mr-1"}),"评分"]})}),o.jsxs(Sr,{children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"为插件评分"}),o.jsx(ss,{children:"分享你的使用体验,帮助其他用户"})]}),o.jsxs("div",{className:"space-y-4 py-4",children:[o.jsxs("div",{className:"flex flex-col items-center gap-2",children:[o.jsx("div",{className:"flex gap-2",children:[1,2,3,4,5].map(k=>o.jsx("button",{onClick:()=>l(k),className:"focus:outline-none",children:o.jsx(Ac,{className:`h-8 w-8 transition-colors ${k<=a?"fill-yellow-400 text-yellow-400":"text-muted-foreground hover:text-yellow-300"}`})},k))}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:[a===0&&"点击星星进行评分",a===1&&"很差",a===2&&"一般",a===3&&"还行",a===4&&"不错",a===5&&"非常好"]})]}),o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium mb-2 block",children:"评论(可选)"}),o.jsx(Mr,{value:c,onChange:k=>d(k.target.value),placeholder:"分享你的使用体验...",rows:4,maxLength:500}),o.jsxs("div",{className:"text-xs text-muted-foreground mt-1 text-right",children:[c.length," / 500"]})]})]}),o.jsxs(ws,{children:[o.jsx(de,{variant:"outline",onClick:()=>m(!1),children:"取消"}),o.jsx(de,{onClick:S,disabled:a===0,children:"提交评分"})]})]})]})]}),n.recent_ratings&&n.recent_ratings.length>0&&o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"text-sm font-semibold",children:"最近评价"}),o.jsx("div",{className:"space-y-3",children:n.recent_ratings.map((k,j)=>o.jsxs("div",{className:"p-3 rounded-lg border bg-muted/50",children:[o.jsxs("div",{className:"flex items-center justify-between mb-2",children:[o.jsx("div",{className:"flex gap-1",children:[1,2,3,4,5].map(N=>o.jsx(Ac,{className:`h-3 w-3 ${N<=k.rating?"fill-yellow-400 text-yellow-400":"text-muted-foreground"}`},N))}),o.jsx("span",{className:"text-xs text-muted-foreground",children:new Date(k.created_at).toLocaleDateString()})]}),k.comment&&o.jsx("p",{className:"text-sm text-muted-foreground",children:k.comment})]},j))})]})]}):null}const Mz={"Group Management":"群组管理","Entertainment & Interaction":"娱乐互动","Utility Tools":"实用工具","Content Generation":"内容生成",Multimedia:"多媒体","External Integration":"外部集成","Data Analysis & Insights":"数据分析与洞察",Other:"其他"};function IAe(){const t=Zi(),[e,n]=b.useState(null),[r,s]=b.useState(""),[i,a]=b.useState("all"),[l,c]=b.useState("all"),[d,h]=b.useState(!0),[m,g]=b.useState([]),[x,y]=b.useState(!0),[w,S]=b.useState(null),[k,j]=b.useState(null),[N,T]=b.useState(null),[E,_]=b.useState(null),[,A]=b.useState([]),[L,P]=b.useState({}),{toast:B}=as(),$=async R=>{const ie=R.map(async V=>{try{const ee=await dX(V.id);return{id:V.id,stats:ee}}catch(ee){return console.warn(`Failed to load stats for ${V.id}:`,ee),{id:V.id,stats:null}}}),G=await Promise.all(ie),I={};G.forEach(({id:V,stats:ee})=>{ee&&(I[V]=ee)}),P(I)};b.useEffect(()=>{let R=null,ie=!1;return(async()=>{if(R=CAe(I=>{ie||(T(I),I.stage==="success"?setTimeout(()=>{ie||T(null)},2e3):I.stage==="error"&&(y(!1),S(I.error||"加载失败")))},I=>{console.error("WebSocket error:",I),ie||B({title:"WebSocket 连接失败",description:"无法实时显示加载进度",variant:"destructive"})}),await new Promise(I=>{if(!R){I();return}const V=()=>{R&&R.readyState===WebSocket.OPEN?(console.log("WebSocket connected, starting to load plugins"),I()):R&&R.readyState===WebSocket.CLOSED?(console.warn("WebSocket closed before loading plugins"),I()):setTimeout(V,100)};V()}),!ie){const I=await OAe();j(I),I.installed||B({title:"Git 未安装",description:I.error||"请先安装 Git 才能使用插件安装功能",variant:"destructive"})}if(!ie){const I=await jAe();_(I)}if(!ie)try{y(!0),S(null);const I=await kAe();if(!ie){const V=await G1();A(V);const ee=I.map(ne=>{const W=X1(ne.id,V),se=Y1(ne.id,V);return{...ne,installed:W,installed_version:se}});for(const ne of V)!ee.some(se=>se.id===ne.id)&&ne.manifest&&ee.push({id:ne.id,manifest:{manifest_version:ne.manifest.manifest_version||1,name:ne.manifest.name,version:ne.manifest.version,description:ne.manifest.description||"",author:ne.manifest.author,license:ne.manifest.license||"Unknown",host_application:ne.manifest.host_application,homepage_url:ne.manifest.homepage_url,repository_url:ne.manifest.repository_url,keywords:ne.manifest.keywords||[],categories:ne.manifest.categories||[],default_locale:ne.manifest.default_locale||"zh-CN",locales_path:ne.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!0,installed_version:ne.manifest.version,published_at:new Date().toISOString(),updated_at:new Date().toISOString()});g(ee),$(ee)}}catch(I){if(!ie){const V=I instanceof Error?I.message:"加载插件列表失败";S(V),B({title:"加载失败",description:V,variant:"destructive"})}}finally{ie||y(!1)}})(),()=>{ie=!0,R&&R.close()}},[B]);const U=R=>{if(!R.installed&&E&&!te(R))return o.jsxs(Xn,{variant:"destructive",className:"gap-1",children:[o.jsx(Uc,{className:"h-3 w-3"}),"不兼容"]});if(R.installed){const ie=R.installed_version?.trim(),G=R.manifest.version?.trim();if(ie!==G){const I=ie?.split(".").map(Number)||[0,0,0],V=G?.split(".").map(Number)||[0,0,0];for(let ee=0;ee<3;ee++){if((V[ee]||0)>(I[ee]||0))return o.jsxs(Xn,{variant:"outline",className:"gap-1 text-orange-600 border-orange-600",children:[o.jsx(Uc,{className:"h-3 w-3"}),"可更新"]});if((V[ee]||0)<(I[ee]||0))break}}return o.jsxs(Xn,{variant:"default",className:"gap-1",children:[o.jsx(Vc,{className:"h-3 w-3"}),"已安装"]})}return null},te=R=>!E||!R.manifest?.host_application?!0:NAe(R.manifest.host_application.min_version,R.manifest.host_application.max_version,E),z=R=>{if(!R.installed||!R.installed_version||!R.manifest?.version)return!1;const ie=R.installed_version.trim(),G=R.manifest.version.trim();if(ie===G)return!1;const I=ie.split(".").map(Number),V=G.split(".").map(Number);for(let ee=0;ee<3;ee++){if((V[ee]||0)>(I[ee]||0))return!0;if((V[ee]||0)<(I[ee]||0))return!1}return!1},Q=m.filter(R=>{if(!R.manifest)return console.warn("[过滤] 跳过无 manifest 的插件:",R.id),!1;const ie=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(ee=>ee.toLowerCase().includes(r.toLowerCase())),G=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i);let I=!0;l==="installed"?I=R.installed===!0:l==="updates"&&(I=R.installed===!0&&z(R));const V=!d||!E||te(R);return ie&&G&&I&&V}),F=()=>{n(null)},Y=async R=>{if(!k?.installed){B({title:"无法安装",description:"Git 未安装",variant:"destructive"});return}if(E&&!te(R)){B({title:"无法安装",description:"插件与当前麦麦版本不兼容",variant:"destructive"});return}try{await TAe(R.id,R.manifest.repository_url||"","main"),DAe(R.id).catch(G=>{console.warn("Failed to record download:",G)}),B({title:"安装成功",description:`${R.manifest.name} 已成功安装`});const ie=await G1();A(ie),g(G=>G.map(I=>{if(I.id===R.id){const V=X1(I.id,ie),ee=Y1(I.id,ie);return{...I,installed:V,installed_version:ee}}return I}))}catch(ie){B({title:"安装失败",description:ie instanceof Error?ie.message:"未知错误",variant:"destructive"})}},J=async R=>{try{await EAe(R.id),B({title:"卸载成功",description:`${R.manifest.name} 已成功卸载`});const ie=await G1();A(ie),g(G=>G.map(I=>{if(I.id===R.id){const V=X1(I.id,ie),ee=Y1(I.id,ie);return{...I,installed:V,installed_version:ee}}return I}))}catch(ie){B({title:"卸载失败",description:ie instanceof Error?ie.message:"未知错误",variant:"destructive"})}},X=async R=>{if(!k?.installed){B({title:"无法更新",description:"Git 未安装",variant:"destructive"});return}try{const ie=await _Ae(R.id,R.manifest.repository_url||"","main");B({title:"更新成功",description:`${R.manifest.name} 已从 ${ie.old_version} 更新到 ${ie.new_version}`});const G=await G1();A(G),g(I=>I.map(V=>{if(V.id===R.id){const ee=X1(V.id,G),ne=Y1(V.id,G);return{...V,installed:ee,installed_version:ne}}return V}))}catch(ie){B({title:"更新失败",description:ie instanceof Error?ie.message:"未知错误",variant:"destructive"})}};return o.jsx(gn,{className:"h-full",children:o.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件市场"}),o.jsx("p",{className:"text-muted-foreground mt-2",children:"浏览和管理麦麦的插件"})]}),o.jsxs(de,{onClick:()=>t({to:"/plugin-mirrors"}),children:[o.jsx(ste,{className:"h-4 w-4 mr-2"}),"配置镜像源"]})]}),k&&!k.installed&&o.jsxs(qt,{className:"border-orange-600 bg-orange-50 dark:bg-orange-950/20",children:[o.jsx(Fn,{children:o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx(Wa,{className:"h-5 w-5 text-orange-600"}),o.jsxs("div",{children:[o.jsx(qn,{className:"text-lg text-orange-900 dark:text-orange-100",children:"Git 未安装"}),o.jsx(ts,{className:"text-orange-800 dark:text-orange-200",children:k.error||"请先安装 Git 才能使用插件安装功能"})]})]})}),o.jsx(Gn,{children:o.jsxs("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:["您可以从 ",o.jsx("a",{href:"https://git-scm.com/downloads",target:"_blank",rel:"noopener noreferrer",className:"underline font-medium",children:"git-scm.com"})," 下载并安装 Git。 安装完成后,请重启麦麦应用。"]})})]}),o.jsx(qt,{className:"p-4",children:o.jsxs("div",{className:"flex flex-col gap-4",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[o.jsxs("div",{className:"flex-1 relative",children:[o.jsx(Ni,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(ze,{placeholder:"搜索插件...",value:r,onChange:R=>s(R.target.value),className:"pl-9"})]}),o.jsxs(Vt,{value:i,onValueChange:a,children:[o.jsx($t,{className:"w-full sm:w-[200px]",children:o.jsx(Ut,{placeholder:"选择分类"})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部分类"}),o.jsx(De,{value:"Group Management",children:"群组管理"}),o.jsx(De,{value:"Entertainment & Interaction",children:"娱乐互动"}),o.jsx(De,{value:"Utility Tools",children:"实用工具"}),o.jsx(De,{value:"Content Generation",children:"内容生成"}),o.jsx(De,{value:"Multimedia",children:"多媒体"}),o.jsx(De,{value:"External Integration",children:"外部集成"}),o.jsx(De,{value:"Data Analysis & Insights",children:"数据分析与洞察"}),o.jsx(De,{value:"Other",children:"其他"})]})]})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Oi,{id:"compatible-only",checked:d,onCheckedChange:R=>h(R===!0)}),o.jsx("label",{htmlFor:"compatible-only",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer",children:"只显示兼容当前版本的插件"})]})]})}),o.jsx(ja,{value:l,onValueChange:c,className:"w-full",children:o.jsxs(Wi,{className:"grid w-full grid-cols-3",children:[o.jsxs(Lt,{value:"all",children:["全部插件 (",m.filter(R=>{if(!R.manifest)return!1;const ie=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(V=>V.toLowerCase().includes(r.toLowerCase())),G=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i),I=!d||!E||te(R);return ie&&G&&I}).length,")"]}),o.jsxs(Lt,{value:"installed",children:["已安装 (",m.filter(R=>{if(!R.manifest)return!1;const ie=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(V=>V.toLowerCase().includes(r.toLowerCase())),G=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i),I=!d||!E||te(R);return R.installed&&ie&&G&&I}).length,")"]}),o.jsxs(Lt,{value:"updates",children:["可更新 (",m.filter(R=>{if(!R.manifest)return!1;const ie=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(V=>V.toLowerCase().includes(r.toLowerCase())),G=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i),I=!d||!E||te(R);return R.installed&&z(R)&&ie&&G&&I}).length,")"]})]})}),N&&N.stage==="loading"&&o.jsx(qt,{className:"p-4",children:o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Po,{className:"h-4 w-4 animate-spin"}),o.jsxs("span",{className:"text-sm font-medium",children:[N.operation==="fetch"&&"加载插件列表",N.operation==="install"&&`安装插件${N.plugin_id?`: ${N.plugin_id}`:""}`,N.operation==="uninstall"&&`卸载插件${N.plugin_id?`: ${N.plugin_id}`:""}`,N.operation==="update"&&`更新插件${N.plugin_id?`: ${N.plugin_id}`:""}`]})]}),o.jsxs("span",{className:"text-sm font-medium",children:[N.progress,"%"]})]}),o.jsx(Lp,{value:N.progress,className:"h-2"}),o.jsx("div",{className:"text-xs text-muted-foreground",children:N.message}),N.operation==="fetch"&&N.total_plugins>0&&o.jsxs("div",{className:"text-xs text-muted-foreground text-center",children:["已加载 ",N.loaded_plugins," / ",N.total_plugins," 个插件"]})]})}),N&&N.stage==="error"&&N.error&&o.jsx(qt,{className:"border-destructive bg-destructive/10",children:o.jsx(Fn,{children:o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx(Wa,{className:"h-5 w-5 text-destructive"}),o.jsxs("div",{children:[o.jsx(qn,{className:"text-lg text-destructive",children:"加载失败"}),o.jsx(ts,{className:"text-destructive/80",children:N.error})]})]})})}),x?o.jsxs("div",{className:"flex items-center justify-center py-12",children:[o.jsx(Po,{className:"h-8 w-8 animate-spin text-muted-foreground"}),o.jsx("span",{className:"ml-3 text-muted-foreground",children:"加载插件列表中..."})]}):w?o.jsx(qt,{className:"p-6",children:o.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[o.jsx(Wa,{className:"h-12 w-12 text-destructive mb-4"}),o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),o.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:w}),o.jsx(de,{onClick:()=>window.location.reload(),children:"重新加载"})]})}):Q.length===0?o.jsx(qt,{className:"p-6",children:o.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[o.jsx(Ni,{className:"h-12 w-12 text-muted-foreground mb-4"}),o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"未找到插件"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:r||i!=="all"?"尝试调整搜索条件或筛选器":"暂无可用插件"})]})}):o.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:Q.map(R=>o.jsxs(qt,{className:"flex flex-col hover:shadow-lg transition-shadow h-full",children:[o.jsxs(Fn,{children:[o.jsxs("div",{className:"flex items-start justify-between gap-2",children:[o.jsx(qn,{className:"text-xl",children:R.manifest?.name||R.id}),o.jsxs("div",{className:"flex flex-col gap-1",children:[R.manifest?.categories&&R.manifest.categories[0]&&o.jsx(Xn,{variant:"secondary",className:"text-xs whitespace-nowrap",children:Mz[R.manifest.categories[0]]||R.manifest.categories[0]}),U(R)]})]}),o.jsx(ts,{className:"line-clamp-2",children:R.manifest?.description||"无描述"})]}),o.jsx(Gn,{className:"flex-1",children:o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(Ku,{className:"h-4 w-4"}),o.jsx("span",{children:(L[R.id]?.downloads??R.downloads??0).toLocaleString()})]}),o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(Ac,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),o.jsx("span",{children:(L[R.id]?.rating??R.rating??0).toFixed(1)})]})]}),o.jsxs("div",{className:"flex flex-wrap gap-2",children:[R.manifest?.keywords&&R.manifest.keywords.slice(0,3).map(ie=>o.jsx(Xn,{variant:"outline",className:"text-xs",children:ie},ie)),R.manifest?.keywords&&R.manifest.keywords.length>3&&o.jsxs(Xn,{variant:"outline",className:"text-xs",children:["+",R.manifest.keywords.length-3]})]}),o.jsxs("div",{className:"text-xs text-muted-foreground pt-2 border-t space-y-1",children:[o.jsxs("div",{children:["v",R.manifest?.version||"unknown"," · ",R.manifest?.author?.name||"Unknown"]}),R.manifest?.host_application&&o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx("span",{children:"支持:"}),o.jsxs("span",{className:"font-medium",children:[R.manifest.host_application.min_version,R.manifest.host_application.max_version?` - ${R.manifest.host_application.max_version}`:" - 最新版本"]})]})]})]})}),o.jsx(lL,{className:"pt-4",children:o.jsxs("div",{className:"flex items-center justify-end gap-2 w-full",children:[o.jsx(de,{variant:"outline",size:"sm",onClick:()=>n(R),children:"查看详情"}),R.installed?z(R)?o.jsxs(de,{size:"sm",disabled:!k?.installed,title:k?.installed?void 0:"Git 未安装",onClick:()=>X(R),children:[o.jsx(Ps,{className:"h-4 w-4 mr-1"}),"更新"]}):o.jsxs(de,{variant:"destructive",size:"sm",disabled:!k?.installed,title:k?.installed?void 0:"Git 未安装",onClick:()=>J(R),children:[o.jsx(Sn,{className:"h-4 w-4 mr-1"}),"卸载"]}):o.jsxs(de,{size:"sm",disabled:!k?.installed||N?.operation==="install"||E!==null&&!te(R),title:k?.installed?E!==null&&!te(R)?`不兼容当前版本 (需要 ${R.manifest?.host_application?.min_version||"未知"}${R.manifest?.host_application?.max_version?` - ${R.manifest.host_application.max_version}`:"+"},当前 ${E?.version})`:void 0:"Git 未安装",onClick:()=>Y(R),children:[o.jsx(Ku,{className:"h-4 w-4 mr-1"}),N?.operation==="install"&&N?.plugin_id===R.id?"安装中...":"安装"]})]})})]},R.id))}),o.jsx(Dr,{open:e!==null,onOpenChange:F,children:e&&e.manifest&&o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsx(kr,{children:o.jsxs("div",{className:"flex items-start justify-between gap-4",children:[o.jsxs("div",{className:"space-y-2 flex-1",children:[o.jsx(Or,{className:"text-2xl",children:e.manifest.name}),o.jsxs(ss,{children:["作者: ",e.manifest.author?.name||"Unknown",e.manifest.author?.url&&o.jsx("a",{href:e.manifest.author.url,target:"_blank",rel:"noopener noreferrer",className:"ml-2 text-primary hover:underline",children:o.jsx(Ah,{className:"h-3 w-3 inline"})})]})]}),o.jsxs("div",{className:"flex flex-col gap-2",children:[e.manifest.categories&&e.manifest.categories[0]&&o.jsx(Xn,{variant:"secondary",children:Mz[e.manifest.categories[0]]||e.manifest.categories[0]}),U(e)]})]})}),o.jsxs("div",{className:"space-y-6",children:[o.jsx(zAe,{pluginId:e.id}),o.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-4",children:[o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:"版本"}),o.jsxs("p",{className:"text-sm text-muted-foreground",children:["v",e.manifest?.version||"unknown"]}),e.installed&&e.installed_version&&o.jsxs("p",{className:"text-xs text-muted-foreground",children:["已安装: v",e.installed_version]})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:"下载量"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:(L[e.id]?.downloads??e.downloads??0).toLocaleString()})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:"评分"}),o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(Ac,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:[(L[e.id]?.rating??e.rating??0).toFixed(1)," (",L[e.id]?.rating_count??e.review_count??0,")"]})]})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:"许可证"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:e.manifest.license||"Unknown"})]}),o.jsxs("div",{className:"col-span-2",children:[o.jsx("p",{className:"text-sm font-medium",children:"支持版本"}),o.jsxs("p",{className:"text-sm text-muted-foreground",children:[e.manifest.host_application?.min_version||"未知",e.manifest.host_application?.max_version?` - ${e.manifest.host_application.max_version}`:" - 最新版本"]})]})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium mb-2",children:"关键词"}),o.jsx("div",{className:"flex flex-wrap gap-2",children:e.manifest.keywords&&e.manifest.keywords.map(R=>o.jsx(Xn,{variant:"outline",children:R},R))})]}),e.detailed_description&&o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium mb-2",children:"详细说明"}),o.jsx("p",{className:"text-sm text-muted-foreground whitespace-pre-line",children:e.detailed_description})]}),!e.detailed_description&&o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium mb-2",children:"说明"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:e.manifest.description||"无描述"})]}),o.jsxs("div",{className:"space-y-2",children:[e.manifest.homepage_url&&o.jsxs("div",{className:"text-sm",children:[o.jsx("span",{className:"font-medium",children:"主页: "}),o.jsx("a",{href:e.manifest.homepage_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:e.manifest.homepage_url})]}),e.manifest.repository_url&&o.jsxs("div",{className:"text-sm",children:[o.jsx("span",{className:"font-medium",children:"仓库: "}),o.jsx("a",{href:e.manifest.repository_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:e.manifest.repository_url})]})]})]}),o.jsxs(ws,{children:[e.manifest.homepage_url&&o.jsxs(de,{onClick:()=>window.open(e.manifest.homepage_url,"_blank"),children:[o.jsx(Ah,{className:"h-4 w-4 mr-2"}),"访问主页"]}),e.manifest.repository_url&&o.jsxs(de,{variant:"outline",onClick:()=>window.open(e.manifest.repository_url,"_blank"),children:[o.jsx(Ah,{className:"h-4 w-4 mr-2"}),"查看仓库"]})]})]})})]})})}function LAe(){return o.jsx(gn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件配置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理和配置已安装的插件"})]}),o.jsxs("div",{className:"flex gap-2",children:[o.jsxs(de,{variant:"outline",size:"sm",children:[o.jsx(Ps,{className:"h-4 w-4 mr-2"}),"刷新"]}),o.jsxs(de,{size:"sm",children:[o.jsx(Xu,{className:"h-4 w-4 mr-2"}),"全局设置"]})]})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-4",children:[o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"已安装插件"}),o.jsx(Gh,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:"0"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"正在加载..."})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"已启用"}),o.jsx(Vc,{className:"h-4 w-4 text-green-600"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:"0"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"运行中的插件"})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"已禁用"}),o.jsx(Uc,{className:"h-4 w-4 text-orange-600"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:"0"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"未激活的插件"})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"可更新"}),o.jsx(Ps,{className:"h-4 w-4 text-blue-600"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:"0"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"有新版本可用"})]})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"已安装的插件"}),o.jsx(ts,{children:"查看和管理已安装插件的配置"})]}),o.jsx(Gn,{children:o.jsxs("div",{className:"flex flex-col items-center justify-center py-12 space-y-4",children:[o.jsx(Gh,{className:"h-16 w-16 text-muted-foreground/50"}),o.jsxs("div",{className:"text-center space-y-2",children:[o.jsx("p",{className:"text-lg font-medium text-muted-foreground",children:"插件配置功能开发中"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"即将支持插件的启用/禁用、参数配置等功能"})]}),o.jsx("div",{className:"flex gap-2",children:o.jsx(de,{variant:"outline",asChild:!0,children:o.jsxs("a",{href:"/plugins",children:[o.jsx(Ah,{className:"h-4 w-4 mr-2"}),"前往插件市场"]})})})]})})]}),o.jsx(qt,{className:"border-blue-200 bg-blue-50 dark:bg-blue-950/20 dark:border-blue-900",children:o.jsx(Gn,{className:"pt-6",children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Uc,{className:"h-5 w-5 text-blue-600 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"space-y-1",children:[o.jsx("p",{className:"text-sm font-medium text-blue-900 dark:text-blue-100",children:"开发进行中"}),o.jsxs("p",{className:"text-sm text-blue-800 dark:text-blue-200",children:["插件配置功能正在积极开发中。目前您可以通过",o.jsx("strong",{children:"插件市场"}),"安装和卸载插件,完整的配置管理功能即将推出。"]})]})]})})})]})})}function BAe(){const t=Zi(),{toast:e}=as(),[n,r]=b.useState([]),[s,i]=b.useState(!0),[a,l]=b.useState(null),[c,d]=b.useState(null),[h,m]=b.useState(!1),[g,x]=b.useState(!1),[y,w]=b.useState({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),S=b.useCallback(async()=>{try{i(!0),l(null);const A=localStorage.getItem("access-token"),L=await fetch("/api/webui/plugins/mirrors",{headers:{Authorization:`Bearer ${A}`}});if(!L.ok)throw new Error("获取镜像源列表失败");const P=await L.json();r(P.mirrors||[])}catch(A){const L=A instanceof Error?A.message:"加载镜像源失败";l(L),e({title:"加载失败",description:L,variant:"destructive"})}finally{i(!1)}},[e]);b.useEffect(()=>{S()},[S]);const k=async()=>{try{const A=localStorage.getItem("access-token"),L=await fetch("/api/webui/plugins/mirrors",{method:"POST",headers:{Authorization:`Bearer ${A}`,"Content-Type":"application/json"},body:JSON.stringify(y)});if(!L.ok){const P=await L.json();throw new Error(P.detail||"添加镜像源失败")}e({title:"添加成功",description:"镜像源已添加"}),m(!1),w({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),S()}catch(A){e({title:"添加失败",description:A instanceof Error?A.message:"未知错误",variant:"destructive"})}},j=async()=>{if(c)try{const A=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${c.id}`,{method:"PUT",headers:{Authorization:`Bearer ${A}`,"Content-Type":"application/json"},body:JSON.stringify({name:y.name,raw_prefix:y.raw_prefix,clone_prefix:y.clone_prefix,enabled:y.enabled,priority:y.priority})})).ok)throw new Error("更新镜像源失败");e({title:"更新成功",description:"镜像源已更新"}),x(!1),d(null),S()}catch(A){e({title:"更新失败",description:A instanceof Error?A.message:"未知错误",variant:"destructive"})}},N=async A=>{if(confirm("确定要删除这个镜像源吗?"))try{const L=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${A}`,{method:"DELETE",headers:{Authorization:`Bearer ${L}`}})).ok)throw new Error("删除镜像源失败");e({title:"删除成功",description:"镜像源已删除"}),S()}catch(L){e({title:"删除失败",description:L instanceof Error?L.message:"未知错误",variant:"destructive"})}},T=async A=>{try{const L=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${A.id}`,{method:"PUT",headers:{Authorization:`Bearer ${L}`,"Content-Type":"application/json"},body:JSON.stringify({enabled:!A.enabled})})).ok)throw new Error("更新状态失败");S()}catch(L){e({title:"更新失败",description:L instanceof Error?L.message:"未知错误",variant:"destructive"})}},E=A=>{d(A),w({id:A.id,name:A.name,raw_prefix:A.raw_prefix,clone_prefix:A.clone_prefix,enabled:A.enabled,priority:A.priority}),x(!0)},_=async(A,L)=>{const P=L==="up"?A.priority-1:A.priority+1;if(!(P<1))try{const B=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${A.id}`,{method:"PUT",headers:{Authorization:`Bearer ${B}`,"Content-Type":"application/json"},body:JSON.stringify({priority:P})})).ok)throw new Error("更新优先级失败");S()}catch(B){e({title:"更新失败",description:B instanceof Error?B.message:"未知错误",variant:"destructive"})}};return o.jsx(gn,{className:"h-full",children:o.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsx(de,{variant:"ghost",size:"icon",onClick:()=>t({to:"/plugins"}),children:o.jsx(wI,{className:"h-5 w-5"})}),o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"镜像源配置"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理 Git 克隆和文件下载的镜像源"})]})]}),o.jsxs(de,{onClick:()=>m(!0),children:[o.jsx(Ls,{className:"h-4 w-4 mr-2"}),"添加镜像源"]})]}),s?o.jsx(qt,{className:"p-6",children:o.jsx("div",{className:"flex items-center justify-center py-8",children:o.jsx(Po,{className:"h-8 w-8 animate-spin text-primary"})})}):a?o.jsx(qt,{className:"p-6",children:o.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[o.jsx(Wa,{className:"h-12 w-12 text-destructive mb-4"}),o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),o.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:a}),o.jsx(de,{onClick:S,children:"重新加载"})]})}):o.jsxs(qt,{children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(_f,{children:[o.jsx(Af,{children:o.jsxs(Is,{children:[o.jsx(pn,{children:"状态"}),o.jsx(pn,{children:"名称"}),o.jsx(pn,{children:"ID"}),o.jsx(pn,{children:"优先级"}),o.jsx(pn,{className:"text-right",children:"操作"})]})}),o.jsx(Mf,{children:n.map(A=>o.jsxs(Is,{children:[o.jsx(Gt,{children:o.jsx(Bt,{checked:A.enabled,onCheckedChange:()=>T(A)})}),o.jsx(Gt,{children:o.jsxs("div",{children:[o.jsx("div",{className:"font-medium",children:A.name}),o.jsxs("div",{className:"text-xs text-muted-foreground mt-1",children:["Raw: ",A.raw_prefix]})]})}),o.jsx(Gt,{children:o.jsx(Xn,{variant:"outline",children:A.id})}),o.jsx(Gt,{children:o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"font-mono",children:A.priority}),o.jsxs("div",{className:"flex flex-col gap-1",children:[o.jsx(de,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>_(A,"up"),disabled:A.priority===1,children:o.jsx(P0,{className:"h-3 w-3"})}),o.jsx(de,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>_(A,"down"),children:o.jsx(nd,{className:"h-3 w-3"})})]})]})}),o.jsx(Gt,{className:"text-right",children:o.jsxs("div",{className:"flex items-center justify-end gap-2",children:[o.jsx(de,{variant:"ghost",size:"icon",onClick:()=>E(A),children:o.jsx(Yu,{className:"h-4 w-4"})}),o.jsx(de,{variant:"ghost",size:"icon",onClick:()=>N(A.id),children:o.jsx(Sn,{className:"h-4 w-4 text-destructive"})})]})})]},A.id))})]})}),o.jsx("div",{className:"md:hidden p-4 space-y-4",children:n.map(A=>o.jsx(qt,{className:"p-4",children:o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-start justify-between",children:[o.jsxs("div",{className:"flex-1",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("h3",{className:"font-semibold",children:A.name}),A.enabled&&o.jsx(Xn,{variant:"default",className:"text-xs",children:"启用"})]}),o.jsx(Xn,{variant:"outline",className:"mt-1 text-xs",children:A.id})]}),o.jsx(Bt,{checked:A.enabled,onCheckedChange:()=>T(A)})]}),o.jsxs("div",{className:"text-sm space-y-1",children:[o.jsxs("div",{className:"text-muted-foreground",children:[o.jsx("span",{className:"font-medium",children:"Raw: "}),o.jsx("span",{className:"break-all",children:A.raw_prefix})]}),o.jsxs("div",{className:"text-muted-foreground",children:[o.jsx("span",{className:"font-medium",children:"优先级: "}),o.jsx("span",{className:"font-mono",children:A.priority})]})]}),o.jsxs("div",{className:"flex items-center gap-2 pt-2 border-t",children:[o.jsxs(de,{variant:"outline",size:"sm",className:"flex-1",onClick:()=>E(A),children:[o.jsx(Yu,{className:"h-4 w-4 mr-1"}),"编辑"]}),o.jsx(de,{variant:"outline",size:"sm",onClick:()=>_(A,"up"),disabled:A.priority===1,children:o.jsx(P0,{className:"h-4 w-4"})}),o.jsx(de,{variant:"outline",size:"sm",onClick:()=>_(A,"down"),children:o.jsx(nd,{className:"h-4 w-4"})}),o.jsx(de,{variant:"destructive",size:"sm",onClick:()=>N(A.id),children:o.jsx(Sn,{className:"h-4 w-4"})})]})]})},A.id))})]}),o.jsx(Dr,{open:h,onOpenChange:m,children:o.jsxs(Sr,{className:"max-w-lg",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"添加镜像源"}),o.jsx(ss,{children:"添加新的 Git 镜像源配置"})]}),o.jsxs("div",{className:"space-y-4 py-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"add-id",children:"镜像源 ID *"}),o.jsx(ze,{id:"add-id",placeholder:"例如: my-mirror",value:y.id,onChange:A=>w({...y,id:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"add-name",children:"名称 *"}),o.jsx(ze,{id:"add-name",placeholder:"例如: 我的镜像源",value:y.name,onChange:A=>w({...y,name:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"add-raw",children:"Raw 文件前缀 *"}),o.jsx(ze,{id:"add-raw",placeholder:"https://example.com/raw",value:y.raw_prefix,onChange:A=>w({...y,raw_prefix:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"add-clone",children:"克隆前缀 *"}),o.jsx(ze,{id:"add-clone",placeholder:"https://example.com/clone",value:y.clone_prefix,onChange:A=>w({...y,clone_prefix:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"add-priority",children:"优先级"}),o.jsx(ze,{id:"add-priority",type:"number",min:"1",value:y.priority,onChange:A=>w({...y,priority:parseInt(A.target.value)||1})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"add-enabled",checked:y.enabled,onCheckedChange:A=>w({...y,enabled:A})}),o.jsx(he,{htmlFor:"add-enabled",children:"启用此镜像源"})]})]}),o.jsxs(ws,{children:[o.jsx(de,{variant:"outline",onClick:()=>m(!1),children:"取消"}),o.jsx(de,{onClick:k,children:"添加"})]})]})}),o.jsx(Dr,{open:g,onOpenChange:x,children:o.jsxs(Sr,{className:"max-w-lg",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"编辑镜像源"}),o.jsx(ss,{children:"修改镜像源配置"})]}),o.jsxs("div",{className:"space-y-4 py-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:"镜像源 ID"}),o.jsx(ze,{value:y.id,disabled:!0})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit-name",children:"名称 *"}),o.jsx(ze,{id:"edit-name",value:y.name,onChange:A=>w({...y,name:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit-raw",children:"Raw 文件前缀 *"}),o.jsx(ze,{id:"edit-raw",value:y.raw_prefix,onChange:A=>w({...y,raw_prefix:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit-clone",children:"克隆前缀 *"}),o.jsx(ze,{id:"edit-clone",value:y.clone_prefix,onChange:A=>w({...y,clone_prefix:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit-priority",children:"优先级"}),o.jsx(ze,{id:"edit-priority",type:"number",min:"1",value:y.priority,onChange:A=>w({...y,priority:parseInt(A.target.value)||1})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"edit-enabled",checked:y.enabled,onCheckedChange:A=>w({...y,enabled:A})}),o.jsx(he,{htmlFor:"edit-enabled",children:"启用此镜像源"})]})]}),o.jsxs(ws,{children:[o.jsx(de,{variant:"outline",onClick:()=>x(!1),children:"取消"}),o.jsx(de,{onClick:j,children:"保存"})]})]})})]})})}function FAe(t,e=[]){let n=[];function r(i,a){const l=b.createContext(a);l.displayName=i+"Context";const c=n.length;n=[...n,a];const d=m=>{const{scope:g,children:x,...y}=m,w=g?.[t]?.[c]||l,S=b.useMemo(()=>y,Object.values(y));return o.jsx(w.Provider,{value:S,children:x})};d.displayName=i+"Provider";function h(m,g){const x=g?.[t]?.[c]||l,y=b.useContext(x);if(y)return y;if(a!==void 0)return a;throw new Error(`\`${m}\` must be used within \`${i}\``)}return[d,h]}const s=()=>{const i=n.map(a=>b.createContext(a));return function(l){const c=l?.[t]||i;return b.useMemo(()=>({[`__scope${t}`]:{...l,[t]:c}}),[l,c])}};return s.scopeName=t,[r,qAe(s,...e)]}function qAe(...t){const e=t[0];if(t.length===1)return e;const n=()=>{const r=t.map(s=>({useScope:s(),scopeName:s.scopeName}));return function(i){const a=r.reduce((l,{useScope:c,scopeName:d})=>{const m=c(i)[`__scope${d}`];return{...l,...m}},{});return b.useMemo(()=>({[`__scope${e.scopeName}`]:a}),[a])}};return n.scopeName=e.scopeName,n}var $Ae=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],f7=$Ae.reduce((t,e)=>{const n=Fy(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...l}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(c,{...l,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),HAe=gJ();function QAe(){return HAe.useSyncExternalStore(VAe,()=>!0,()=>!1)}function VAe(){return()=>{}}var m7="Avatar",[UAe]=FAe(m7),[WAe,hX]=UAe(m7),fX=b.forwardRef((t,e)=>{const{__scopeAvatar:n,...r}=t,[s,i]=b.useState("idle");return o.jsx(WAe,{scope:n,imageLoadingStatus:s,onImageLoadingStatusChange:i,children:o.jsx(f7.span,{...r,ref:e})})});fX.displayName=m7;var mX="AvatarImage",pX=b.forwardRef((t,e)=>{const{__scopeAvatar:n,src:r,onLoadingStatusChange:s=()=>{},...i}=t,a=hX(mX,n),l=GAe(r,i),c=Rs(d=>{s(d),a.onImageLoadingStatusChange(d)});return Uh(()=>{l!=="idle"&&c(l)},[l,c]),l==="loaded"?o.jsx(f7.img,{...i,ref:e,src:r}):null});pX.displayName=mX;var gX="AvatarFallback",xX=b.forwardRef((t,e)=>{const{__scopeAvatar:n,delayMs:r,...s}=t,i=hX(gX,n),[a,l]=b.useState(r===void 0);return b.useEffect(()=>{if(r!==void 0){const c=window.setTimeout(()=>l(!0),r);return()=>window.clearTimeout(c)}},[r]),a&&i.imageLoadingStatus!=="loaded"?o.jsx(f7.span,{...s,ref:e}):null});xX.displayName=gX;function Rz(t,e){return t?e?(t.src!==e&&(t.src=e),t.complete&&t.naturalWidth>0?"loaded":"loading"):"error":"idle"}function GAe(t,{referrerPolicy:e,crossOrigin:n}){const r=QAe(),s=b.useRef(null),i=r?(s.current||(s.current=new window.Image),s.current):null,[a,l]=b.useState(()=>Rz(i,t));return Uh(()=>{l(Rz(i,t))},[i,t]),Uh(()=>{const c=m=>()=>{l(m)};if(!i)return;const d=c("loaded"),h=c("error");return i.addEventListener("load",d),i.addEventListener("error",h),e&&(i.referrerPolicy=e),typeof n=="string"&&(i.crossOrigin=n),()=>{i.removeEventListener("load",d),i.removeEventListener("error",h)}},[i,n,e]),a}var vX=fX,yX=pX,bX=xX;const _v=b.forwardRef(({className:t,...e},n)=>o.jsx(vX,{ref:n,className:xe("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",t),...e}));_v.displayName=vX.displayName;const XAe=b.forwardRef(({className:t,...e},n)=>o.jsx(yX,{ref:n,className:xe("aspect-square h-full w-full",t),...e}));XAe.displayName=yX.displayName;const Av=b.forwardRef(({className:t,...e},n)=>o.jsx(bX,{ref:n,className:xe("flex h-full w-full items-center justify-center rounded-full bg-muted",t),...e}));Av.displayName=bX.displayName;function YAe(){return"webui_"+Math.random().toString(36).substr(2,9)+"_"+Date.now().toString(36)}function KAe(){const t="maibot_webui_user_id";let e=localStorage.getItem(t);return e||(e=YAe(),localStorage.setItem(t,e)),e}function ZAe(){return localStorage.getItem("maibot_webui_user_name")||"WebUI用户"}function JAe(t){localStorage.setItem("maibot_webui_user_name",t)}function eMe(){const[t,e]=b.useState([]),[n,r]=b.useState(""),[s,i]=b.useState(!1),[a,l]=b.useState(!1),[c,d]=b.useState(!1),[h,m]=b.useState(!0),[g,x]=b.useState(ZAe()),[y,w]=b.useState(!1),[S,k]=b.useState(""),[j,N]=b.useState({}),T=b.useRef(KAe()),E=b.useRef(null),_=b.useRef(null),A=b.useRef(null),L=b.useRef(0),P=b.useRef(new Set),{toast:B}=as(),$=I=>(L.current+=1,`${I}-${Date.now()}-${L.current}-${Math.random().toString(36).substr(2,9)}`),U=b.useCallback(()=>{_.current?.scrollIntoView({behavior:"smooth"})},[]);b.useEffect(()=>{U()},[t,U]);const te=b.useCallback(async()=>{m(!0);try{const I=`/api/chat/history?user_id=${T.current}&limit=50`;console.log("[Chat] 正在加载历史消息:",I);const V=await fetch(I);if(console.log("[Chat] 历史消息响应状态:",V.status,V.statusText),console.log("[Chat] 响应 Content-Type:",V.headers.get("content-type")),V.ok){const ee=await V.text();console.log("[Chat] 响应内容前100字符:",ee.substring(0,100));try{const ne=JSON.parse(ee);if(console.log("[Chat] 解析后的数据:",ne),ne.messages&&ne.messages.length>0){const W=ne.messages.map(se=>({id:se.id,type:se.type,content:se.content,timestamp:se.timestamp,sender:{name:se.sender_name||(se.is_bot?"麦麦":"WebUI用户"),user_id:se.user_id,is_bot:se.is_bot}}));e(W),console.log("[Chat] 已加载历史消息数量:",W.length),W.forEach(se=>{if(se.type==="bot"){const re=`bot-${se.content}-${Math.floor(se.timestamp*1e3)}`;P.current.add(re)}})}else console.log("[Chat] 没有历史消息")}catch(ne){console.error("[Chat] JSON 解析失败:",ne),console.error("[Chat] 原始响应内容:",ee)}}else{console.error("[Chat] 响应失败:",V.status);const ee=await V.text();console.error("[Chat] 错误响应内容:",ee.substring(0,200))}}catch(I){console.error("[Chat] 加载历史消息失败:",I)}finally{m(!1)}},[]),z=b.useCallback(()=>{if(E.current?.readyState===WebSocket.OPEN||E.current?.readyState===WebSocket.CONNECTING){console.log("WebSocket 已存在,跳过连接");return}l(!0);const V=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/api/chat/ws?user_id=${encodeURIComponent(T.current)}&user_name=${encodeURIComponent(g)}`;console.log("正在连接 WebSocket:",V);try{const ee=new WebSocket(V);E.current=ee,ee.onopen=()=>{i(!0),l(!1),console.log("WebSocket 已连接")},ee.onmessage=ne=>{try{const W=JSON.parse(ne.data);switch(W.type){case"session_info":N({session_id:W.session_id,user_id:W.user_id,user_name:W.user_name,bot_name:W.bot_name});break;case"system":e(se=>[...se,{id:$("sys"),type:"system",content:W.content||"",timestamp:W.timestamp||Date.now()/1e3}]);break;case"user_message":e(se=>[...se,{id:W.message_id||$("user"),type:"user",content:W.content||"",timestamp:W.timestamp||Date.now()/1e3,sender:W.sender}]);break;case"bot_message":{d(!1);const se=`bot-${W.content}-${Math.floor((W.timestamp||0)*1e3)}`;if(P.current.has(se)){console.log("跳过重复的机器人消息");break}if(P.current.add(se),P.current.size>100){const re=P.current.values().next().value;re&&P.current.delete(re)}e(re=>[...re,{id:$("bot"),type:"bot",content:W.content||"",timestamp:W.timestamp||Date.now()/1e3,sender:W.sender}]);break}case"typing":d(W.is_typing||!1);break;case"error":e(se=>[...se,{id:$("error"),type:"error",content:W.content||"发生错误",timestamp:W.timestamp||Date.now()/1e3}]),B({title:"错误",description:W.content,variant:"destructive"});break;case"pong":break;default:console.log("未知消息类型:",W.type)}}catch(W){console.error("解析消息失败:",W)}},ee.onclose=()=>{i(!1),l(!1),E.current=null,console.log("WebSocket 已断开"),A.current&&clearTimeout(A.current),A.current=window.setTimeout(()=>{Q.current||z()},5e3)},ee.onerror=ne=>{console.error("WebSocket 错误:",ne),l(!1)}}catch(ee){console.error("创建 WebSocket 失败:",ee),l(!1)}},[B,g]),Q=b.useRef(!1);b.useEffect(()=>{Q.current=!1,te();const I=setTimeout(()=>{Q.current||z()},100),V=setInterval(()=>{E.current?.readyState===WebSocket.OPEN&&E.current.send(JSON.stringify({type:"ping"}))},3e4);return()=>{Q.current=!0,clearTimeout(I),clearInterval(V),A.current&&(clearTimeout(A.current),A.current=null),E.current&&(E.current.close(),E.current=null)}},[z,te]);const F=b.useCallback(()=>{!n.trim()||!E.current||E.current.readyState!==WebSocket.OPEN||(E.current.send(JSON.stringify({type:"message",content:n.trim(),user_name:g})),r(""))},[n,g]),Y=I=>{I.key==="Enter"&&!I.shiftKey&&(I.preventDefault(),F())},J=()=>{k(g),w(!0)},X=()=>{const I=S.trim()||"WebUI用户";x(I),JAe(I),w(!1),E.current?.readyState===WebSocket.OPEN&&E.current.send(JSON.stringify({type:"update_nickname",user_name:I}))},R=()=>{k(""),w(!1)},ie=I=>new Date(I*1e3).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"}),G=()=>{E.current&&E.current.close(),z()};return o.jsxs("div",{className:"h-full flex flex-col",children:[o.jsx("div",{className:"shrink-0 border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:o.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:[o.jsxs("div",{className:"flex items-center justify-between gap-2",children:[o.jsxs("div",{className:"flex items-center gap-2 sm:gap-3 min-w-0",children:[o.jsx(_v,{className:"h-8 w-8 sm:h-10 sm:w-10 shrink-0",children:o.jsx(Av,{className:"bg-primary/10 text-primary",children:o.jsx(a0,{className:"h-4 w-4 sm:h-5 sm:w-5"})})}),o.jsxs("div",{className:"min-w-0",children:[o.jsx("h1",{className:"text-base sm:text-lg font-semibold truncate",children:j.bot_name||"麦麦"}),o.jsx("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:s?o.jsxs(o.Fragment,{children:[o.jsx(ite,{className:"h-3 w-3 text-green-500"}),o.jsx("span",{className:"text-green-600 dark:text-green-400",children:"已连接"})]}):a?o.jsxs(o.Fragment,{children:[o.jsx(Po,{className:"h-3 w-3 animate-spin"}),o.jsx("span",{children:"连接中..."})]}):o.jsxs(o.Fragment,{children:[o.jsx(ate,{className:"h-3 w-3 text-red-500"}),o.jsx("span",{className:"text-red-600 dark:text-red-400",children:"未连接"})]})})]})]}),o.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[h&&o.jsx(Po,{className:"h-4 w-4 animate-spin text-muted-foreground"}),o.jsx(de,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:G,disabled:a,title:"重新连接",children:o.jsx(Ps,{className:xe("h-4 w-4",a&&"animate-spin")})})]})]}),o.jsxs("div",{className:"hidden sm:flex items-center gap-2 mt-2 text-sm text-muted-foreground",children:[o.jsx(Dv,{className:"h-3 w-3"}),o.jsx("span",{children:"当前身份:"}),y?o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{value:S,onChange:I=>k(I.target.value),onKeyDown:I=>{I.key==="Enter"&&X(),I.key==="Escape"&&R()},className:"h-7 w-32",placeholder:"输入昵称",autoFocus:!0}),o.jsx(de,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:X,children:"保存"}),o.jsx(de,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:R,children:"取消"})]}):o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx("span",{className:"font-medium text-foreground",children:g}),o.jsx(de,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0",onClick:J,title:"修改昵称",children:o.jsx(ote,{className:"h-3 w-3"})})]})]})]})}),o.jsx("div",{className:"flex-1 overflow-hidden",children:o.jsx(gn,{className:"h-full",children:o.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto space-y-3 sm:space-y-4",children:[t.length===0&&!h&&o.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-muted-foreground",children:[o.jsx(a0,{className:"h-12 w-12 mb-4 opacity-50"}),o.jsxs("p",{className:"text-sm",children:["开始与 ",j.bot_name||"麦麦"," 对话吧!"]})]}),t.map(I=>o.jsxs("div",{className:xe("flex gap-2 sm:gap-3",I.type==="user"&&"flex-row-reverse",I.type==="system"&&"justify-center",I.type==="error"&&"justify-center"),children:[I.type==="system"&&o.jsx("div",{className:"text-xs text-muted-foreground bg-muted/50 px-3 py-1 rounded-full max-w-[90%]",children:I.content}),I.type==="error"&&o.jsx("div",{className:"text-xs text-red-600 dark:text-red-400 bg-red-100 dark:bg-red-900/30 px-3 py-1 rounded-full max-w-[90%]",children:I.content}),(I.type==="user"||I.type==="bot")&&o.jsxs(o.Fragment,{children:[o.jsx(_v,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:o.jsx(Av,{className:xe("text-xs",I.type==="bot"?"bg-primary/10 text-primary":"bg-secondary text-secondary-foreground"),children:I.type==="bot"?o.jsx(a0,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}):o.jsx(Dv,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),o.jsxs("div",{className:xe("flex flex-col gap-1 max-w-[75%] sm:max-w-[70%]",I.type==="user"&&"items-end"),children:[o.jsxs("div",{className:"flex items-center gap-2 text-[10px] sm:text-xs text-muted-foreground",children:[o.jsx("span",{className:"hidden sm:inline",children:I.sender?.name||(I.type==="bot"?j.bot_name:g)}),o.jsx("span",{children:ie(I.timestamp)})]}),o.jsx("div",{className:xe("rounded-2xl px-3 py-2 text-sm whitespace-pre-wrap break-words",I.type==="bot"?"bg-muted rounded-tl-sm":"bg-primary text-primary-foreground rounded-tr-sm"),children:I.content})]})]})]},I.id)),c&&o.jsxs("div",{className:"flex gap-2 sm:gap-3",children:[o.jsx(_v,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:o.jsx(Av,{className:"bg-primary/10 text-primary",children:o.jsx(a0,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),o.jsx("div",{className:"bg-muted rounded-2xl rounded-tl-sm px-4 py-3",children:o.jsxs("div",{className:"flex gap-1",children:[o.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"0ms"}}),o.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"150ms"}}),o.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"300ms"}})]})})]}),o.jsx("div",{ref:_})]})})}),o.jsx("div",{className:"shrink-0 border-t bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:o.jsx("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{value:n,onChange:I=>r(I.target.value),onKeyDown:Y,placeholder:s?"输入消息...":"等待连接...",disabled:!s,className:"flex-1 h-10 sm:h-10"}),o.jsx(de,{onClick:F,disabled:!s||!n.trim(),size:"icon",className:"h-10 w-10 shrink-0",children:o.jsx(lte,{className:"h-4 w-4"})})]})})})]})}const tMe=kf("pointer-events-none inline-flex select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono font-medium opacity-100",{variants:{size:{sm:"h-5 text-[10px]",default:"h-6 text-xs",lg:"h-7 text-sm"}},defaultVariants:{size:"default"}}),wX=b.forwardRef(({className:t,size:e,abbrTitle:n,children:r,...s},i)=>o.jsx("kbd",{className:xe(tMe({size:e,className:t})),ref:i,...s,children:n?o.jsx("abbr",{title:n,children:r}):r}));wX.displayName="Kbd";const nMe=[{icon:D0,title:"首页",description:"查看仪表板概览",path:"/",category:"概览"},{icon:zl,title:"麦麦主程序配置",description:"配置麦麦的核心设置",path:"/config/bot",category:"配置"},{icon:kI,title:"麦麦模型提供商配置",description:"配置模型提供商",path:"/config/modelProvider",category:"配置"},{icon:OI,title:"麦麦模型配置",description:"配置模型参数",path:"/config/model",category:"配置"},{icon:_j,title:"表情包管理",description:"管理麦麦的表情包",path:"/resource/emoji",category:"资源"},{icon:Wh,title:"表达方式管理",description:"管理麦麦的表达方式",path:"/resource/expression",category:"资源"},{icon:jI,title:"人物信息管理",description:"管理人物信息",path:"/resource/person",category:"资源"},{icon:cte,title:"统计信息",description:"查看使用统计",path:"/statistics",category:"监控"},{icon:Gh,title:"插件市场",description:"浏览和安装插件",path:"/plugins",category:"扩展"},{icon:Pv,title:"日志查看器",description:"查看系统日志",path:"/logs",category:"监控"},{icon:Xu,title:"系统设置",description:"配置系统参数",path:"/settings",category:"系统"}];function rMe({open:t,onOpenChange:e}){const[n,r]=b.useState(""),[s,i]=b.useState(0),a=Zi(),l=nMe.filter(h=>h.title.toLowerCase().includes(n.toLowerCase())||h.description.toLowerCase().includes(n.toLowerCase())||h.category.toLowerCase().includes(n.toLowerCase()));b.useEffect(()=>{t&&(r(""),i(0))},[t]);const c=b.useCallback(h=>{a({to:h}),e(!1)},[a,e]),d=b.useCallback(h=>{h.key==="ArrowDown"?(h.preventDefault(),i(m=>(m+1)%l.length)):h.key==="ArrowUp"?(h.preventDefault(),i(m=>(m-1+l.length)%l.length)):h.key==="Enter"&&l[s]&&(h.preventDefault(),c(l[s].path))},[l,s,c]);return o.jsx(Dr,{open:t,onOpenChange:e,children:o.jsxs(Sr,{className:"max-w-2xl p-0 gap-0",children:[o.jsxs(kr,{className:"px-4 pt-4 pb-0",children:[o.jsx(Or,{className:"sr-only",children:"搜索"}),o.jsxs("div",{className:"relative",children:[o.jsx(Ni,{className:"absolute left-3 top-1/2 h-5 w-5 -translate-y-1/2 text-muted-foreground"}),o.jsx(ze,{value:n,onChange:h=>{r(h.target.value),i(0)},onKeyDown:d,placeholder:"搜索页面...",className:"h-12 pl-11 text-base border-0 focus-visible:ring-0 shadow-none",autoFocus:!0})]})]}),o.jsx("div",{className:"border-t",children:o.jsx(gn,{className:"h-[400px]",children:l.length>0?o.jsx("div",{className:"p-2",children:l.map((h,m)=>{const g=h.icon;return o.jsxs("button",{onClick:()=>c(h.path),onMouseEnter:()=>i(m),className:xe("w-full flex items-center gap-3 px-3 py-2.5 rounded-md text-left transition-colors",m===s?"bg-accent text-accent-foreground":"hover:bg-accent/50"),children:[o.jsx(g,{className:"h-5 w-5 flex-shrink-0"}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("div",{className:"font-medium text-sm",children:h.title}),o.jsx("div",{className:"text-xs text-muted-foreground truncate",children:h.description})]}),o.jsx("div",{className:"text-xs text-muted-foreground px-2 py-1 bg-muted rounded",children:h.category})]},h.path)})}):o.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[o.jsx(Ni,{className:"h-12 w-12 text-muted-foreground/50 mb-4"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:n?"未找到匹配的页面":"输入关键词开始搜索"})]})})}),o.jsx("div",{className:"border-t px-4 py-3 flex items-center justify-between text-xs text-muted-foreground",children:o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsxs("span",{className:"flex items-center gap-1",children:[o.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↑"}),o.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↓"}),"导航"]}),o.jsxs("span",{className:"flex items-center gap-1",children:[o.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Enter"}),"选择"]}),o.jsxs("span",{className:"flex items-center gap-1",children:[o.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Esc"}),"关闭"]})]})})]})})}function sMe(t){const e=iMe(t),n=b.forwardRef((r,s)=>{const{children:i,...a}=r,l=b.Children.toArray(i),c=l.find(oMe);if(c){const d=c.props.children,h=l.map(m=>m===c?b.Children.count(d)>1?b.Children.only(null):b.isValidElement(d)?d.props.children:null:m);return o.jsx(e,{...a,ref:s,children:b.isValidElement(d)?b.cloneElement(d,void 0,h):null})}return o.jsx(e,{...a,ref:s,children:i})});return n.displayName=`${t}.Slot`,n}function iMe(t){const e=b.forwardRef((n,r)=>{const{children:s,...i}=n;if(b.isValidElement(s)){const a=cMe(s),l=lMe(i,s.props);return s.type!==b.Fragment&&(l.ref=r?Qc(r,a):a),b.cloneElement(s,l)}return b.Children.count(s)>1?b.Children.only(null):null});return e.displayName=`${t}.SlotClone`,e}var aMe=Symbol("radix.slottable");function oMe(t){return b.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===aMe}function lMe(t,e){const n={...e};for(const r in e){const s=t[r],i=e[r];/^on[A-Z]/.test(r)?s&&i?n[r]=(...l)=>{const c=i(...l);return s(...l),c}:s&&(n[r]=s):r==="style"?n[r]={...s,...i}:r==="className"&&(n[r]=[s,i].filter(Boolean).join(" "))}return{...t,...n}}function cMe(t){let e=Object.getOwnPropertyDescriptor(t.props,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning;return n?t.ref:(e=Object.getOwnPropertyDescriptor(t,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning,n?t.props.ref:t.props.ref||t.ref)}var cj=["Enter"," "],uMe=["ArrowDown","PageUp","Home"],SX=["ArrowUp","PageDown","End"],dMe=[...uMe,...SX],hMe={ltr:[...cj,"ArrowRight"],rtl:[...cj,"ArrowLeft"]},fMe={ltr:["ArrowLeft"],rtl:["ArrowRight"]},kg="Menu",[Np,mMe,pMe]=By(kg),[jd,kX]=Ra(kg,[pMe,vf,eb]),Og=vf(),OX=eb(),[jX,fu]=jd(kg),[gMe,jg]=jd(kg),NX=t=>{const{__scopeMenu:e,open:n=!1,children:r,dir:s,onOpenChange:i,modal:a=!0}=t,l=Og(e),[c,d]=b.useState(null),h=b.useRef(!1),m=Rs(i),g=Ep(s);return b.useEffect(()=>{const x=()=>{h.current=!0,document.addEventListener("pointerdown",y,{capture:!0,once:!0}),document.addEventListener("pointermove",y,{capture:!0,once:!0})},y=()=>h.current=!1;return document.addEventListener("keydown",x,{capture:!0}),()=>{document.removeEventListener("keydown",x,{capture:!0}),document.removeEventListener("pointerdown",y,{capture:!0}),document.removeEventListener("pointermove",y,{capture:!0})}},[]),o.jsx(Vy,{...l,children:o.jsx(jX,{scope:e,open:n,onOpenChange:m,content:c,onContentChange:d,children:o.jsx(gMe,{scope:e,onClose:b.useCallback(()=>m(!1),[m]),isUsingKeyboardRef:h,dir:g,modal:a,children:r})})})};NX.displayName=kg;var xMe="MenuAnchor",p7=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t,s=Og(n);return o.jsx(Uy,{...s,...r,ref:e})});p7.displayName=xMe;var g7="MenuPortal",[vMe,CX]=jd(g7,{forceMount:void 0}),TX=t=>{const{__scopeMenu:e,forceMount:n,children:r,container:s}=t,i=fu(g7,e);return o.jsx(vMe,{scope:e,forceMount:n,children:o.jsx(ii,{present:n||i.open,children:o.jsx(Qy,{asChild:!0,container:s,children:r})})})};TX.displayName=g7;var Ta="MenuContent",[yMe,x7]=jd(Ta),EX=b.forwardRef((t,e)=>{const n=CX(Ta,t.__scopeMenu),{forceMount:r=n.forceMount,...s}=t,i=fu(Ta,t.__scopeMenu),a=jg(Ta,t.__scopeMenu);return o.jsx(Np.Provider,{scope:t.__scopeMenu,children:o.jsx(ii,{present:r||i.open,children:o.jsx(Np.Slot,{scope:t.__scopeMenu,children:a.modal?o.jsx(bMe,{...s,ref:e}):o.jsx(wMe,{...s,ref:e})})})})}),bMe=b.forwardRef((t,e)=>{const n=fu(Ta,t.__scopeMenu),r=b.useRef(null),s=Yn(e,r);return b.useEffect(()=>{const i=r.current;if(i)return hI(i)},[]),o.jsx(v7,{...t,ref:s,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:nt(t.onFocusOutside,i=>i.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),wMe=b.forwardRef((t,e)=>{const n=fu(Ta,t.__scopeMenu);return o.jsx(v7,{...t,ref:e,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),SMe=sMe("MenuContent.ScrollLock"),v7=b.forwardRef((t,e)=>{const{__scopeMenu:n,loop:r=!1,trapFocus:s,onOpenAutoFocus:i,onCloseAutoFocus:a,disableOutsidePointerEvents:l,onEntryFocus:c,onEscapeKeyDown:d,onPointerDownOutside:h,onFocusOutside:m,onInteractOutside:g,onDismiss:x,disableOutsideScroll:y,...w}=t,S=fu(Ta,n),k=jg(Ta,n),j=Og(n),N=OX(n),T=mMe(n),[E,_]=b.useState(null),A=b.useRef(null),L=Yn(e,A,S.onContentChange),P=b.useRef(0),B=b.useRef(""),$=b.useRef(0),U=b.useRef(null),te=b.useRef("right"),z=b.useRef(0),Q=y?fI:b.Fragment,F=y?{as:SMe,allowPinchZoom:!0}:void 0,Y=X=>{const R=B.current+X,ie=T().filter(W=>!W.disabled),G=document.activeElement,I=ie.find(W=>W.ref.current===G)?.textValue,V=ie.map(W=>W.textValue),ee=DMe(V,R,I),ne=ie.find(W=>W.textValue===ee)?.ref.current;(function W(se){B.current=se,window.clearTimeout(P.current),se!==""&&(P.current=window.setTimeout(()=>W(""),1e3))})(R),ne&&setTimeout(()=>ne.focus())};b.useEffect(()=>()=>window.clearTimeout(P.current),[]),mI();const J=b.useCallback(X=>te.current===U.current?.side&&zMe(X,U.current?.area),[]);return o.jsx(yMe,{scope:n,searchRef:B,onItemEnter:b.useCallback(X=>{J(X)&&X.preventDefault()},[J]),onItemLeave:b.useCallback(X=>{J(X)||(A.current?.focus(),_(null))},[J]),onTriggerLeave:b.useCallback(X=>{J(X)&&X.preventDefault()},[J]),pointerGraceTimerRef:$,onPointerGraceIntentChange:b.useCallback(X=>{U.current=X},[]),children:o.jsx(Q,{...F,children:o.jsx(pI,{asChild:!0,trapped:s,onMountAutoFocus:nt(i,X=>{X.preventDefault(),A.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:a,children:o.jsx(Cj,{asChild:!0,disableOutsidePointerEvents:l,onEscapeKeyDown:d,onPointerDownOutside:h,onFocusOutside:m,onInteractOutside:g,onDismiss:x,children:o.jsx(mL,{asChild:!0,...N,dir:k.dir,orientation:"vertical",loop:r,currentTabStopId:E,onCurrentTabStopIdChange:_,onEntryFocus:nt(c,X=>{k.isUsingKeyboardRef.current||X.preventDefault()}),preventScrollOnEntryFocus:!0,children:o.jsx(Tj,{role:"menu","aria-orientation":"vertical","data-state":UX(S.open),"data-radix-menu-content":"",dir:k.dir,...j,...w,ref:L,style:{outline:"none",...w.style},onKeyDown:nt(w.onKeyDown,X=>{const ie=X.target.closest("[data-radix-menu-content]")===X.currentTarget,G=X.ctrlKey||X.altKey||X.metaKey,I=X.key.length===1;ie&&(X.key==="Tab"&&X.preventDefault(),!G&&I&&Y(X.key));const V=A.current;if(X.target!==V||!dMe.includes(X.key))return;X.preventDefault();const ne=T().filter(W=>!W.disabled).map(W=>W.ref.current);SX.includes(X.key)&&ne.reverse(),MMe(ne)}),onBlur:nt(t.onBlur,X=>{X.currentTarget.contains(X.target)||(window.clearTimeout(P.current),B.current="")}),onPointerMove:nt(t.onPointerMove,Cp(X=>{const R=X.target,ie=z.current!==X.clientX;if(X.currentTarget.contains(R)&&ie){const G=X.clientX>z.current?"right":"left";te.current=G,z.current=X.clientX}}))})})})})})})});EX.displayName=Ta;var kMe="MenuGroup",y7=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t;return o.jsx(xn.div,{role:"group",...r,ref:e})});y7.displayName=kMe;var OMe="MenuLabel",_X=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t;return o.jsx(xn.div,{...r,ref:e})});_X.displayName=OMe;var Py="MenuItem",Dz="menu.itemSelect",rw=b.forwardRef((t,e)=>{const{disabled:n=!1,onSelect:r,...s}=t,i=b.useRef(null),a=jg(Py,t.__scopeMenu),l=x7(Py,t.__scopeMenu),c=Yn(e,i),d=b.useRef(!1),h=()=>{const m=i.current;if(!n&&m){const g=new CustomEvent(Dz,{bubbles:!0,cancelable:!0});m.addEventListener(Dz,x=>r?.(x),{once:!0}),xI(m,g),g.defaultPrevented?d.current=!1:a.onClose()}};return o.jsx(AX,{...s,ref:c,disabled:n,onClick:nt(t.onClick,h),onPointerDown:m=>{t.onPointerDown?.(m),d.current=!0},onPointerUp:nt(t.onPointerUp,m=>{d.current||m.currentTarget?.click()}),onKeyDown:nt(t.onKeyDown,m=>{const g=l.searchRef.current!=="";n||g&&m.key===" "||cj.includes(m.key)&&(m.currentTarget.click(),m.preventDefault())})})});rw.displayName=Py;var AX=b.forwardRef((t,e)=>{const{__scopeMenu:n,disabled:r=!1,textValue:s,...i}=t,a=x7(Py,n),l=OX(n),c=b.useRef(null),d=Yn(e,c),[h,m]=b.useState(!1),[g,x]=b.useState("");return b.useEffect(()=>{const y=c.current;y&&x((y.textContent??"").trim())},[i.children]),o.jsx(Np.ItemSlot,{scope:n,disabled:r,textValue:s??g,children:o.jsx(pL,{asChild:!0,...l,focusable:!r,children:o.jsx(xn.div,{role:"menuitem","data-highlighted":h?"":void 0,"aria-disabled":r||void 0,"data-disabled":r?"":void 0,...i,ref:d,onPointerMove:nt(t.onPointerMove,Cp(y=>{r?a.onItemLeave(y):(a.onItemEnter(y),y.defaultPrevented||y.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:nt(t.onPointerLeave,Cp(y=>a.onItemLeave(y))),onFocus:nt(t.onFocus,()=>m(!0)),onBlur:nt(t.onBlur,()=>m(!1))})})})}),jMe="MenuCheckboxItem",MX=b.forwardRef((t,e)=>{const{checked:n=!1,onCheckedChange:r,...s}=t;return o.jsx(IX,{scope:t.__scopeMenu,checked:n,children:o.jsx(rw,{role:"menuitemcheckbox","aria-checked":zy(n)?"mixed":n,...s,ref:e,"data-state":S7(n),onSelect:nt(s.onSelect,()=>r?.(zy(n)?!0:!n),{checkForDefaultPrevented:!1})})})});MX.displayName=jMe;var RX="MenuRadioGroup",[NMe,CMe]=jd(RX,{value:void 0,onValueChange:()=>{}}),DX=b.forwardRef((t,e)=>{const{value:n,onValueChange:r,...s}=t,i=Rs(r);return o.jsx(NMe,{scope:t.__scopeMenu,value:n,onValueChange:i,children:o.jsx(y7,{...s,ref:e})})});DX.displayName=RX;var PX="MenuRadioItem",zX=b.forwardRef((t,e)=>{const{value:n,...r}=t,s=CMe(PX,t.__scopeMenu),i=n===s.value;return o.jsx(IX,{scope:t.__scopeMenu,checked:i,children:o.jsx(rw,{role:"menuitemradio","aria-checked":i,...r,ref:e,"data-state":S7(i),onSelect:nt(r.onSelect,()=>s.onValueChange?.(n),{checkForDefaultPrevented:!1})})})});zX.displayName=PX;var b7="MenuItemIndicator",[IX,TMe]=jd(b7,{checked:!1}),LX=b.forwardRef((t,e)=>{const{__scopeMenu:n,forceMount:r,...s}=t,i=TMe(b7,n);return o.jsx(ii,{present:r||zy(i.checked)||i.checked===!0,children:o.jsx(xn.span,{...s,ref:e,"data-state":S7(i.checked)})})});LX.displayName=b7;var EMe="MenuSeparator",BX=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t;return o.jsx(xn.div,{role:"separator","aria-orientation":"horizontal",...r,ref:e})});BX.displayName=EMe;var _Me="MenuArrow",FX=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t,s=Og(n);return o.jsx(Ej,{...s,...r,ref:e})});FX.displayName=_Me;var w7="MenuSub",[AMe,qX]=jd(w7),$X=t=>{const{__scopeMenu:e,children:n,open:r=!1,onOpenChange:s}=t,i=fu(w7,e),a=Og(e),[l,c]=b.useState(null),[d,h]=b.useState(null),m=Rs(s);return b.useEffect(()=>(i.open===!1&&m(!1),()=>m(!1)),[i.open,m]),o.jsx(Vy,{...a,children:o.jsx(jX,{scope:e,open:r,onOpenChange:m,content:d,onContentChange:h,children:o.jsx(AMe,{scope:e,contentId:Ui(),triggerId:Ui(),trigger:l,onTriggerChange:c,children:n})})})};$X.displayName=w7;var x0="MenuSubTrigger",HX=b.forwardRef((t,e)=>{const n=fu(x0,t.__scopeMenu),r=jg(x0,t.__scopeMenu),s=qX(x0,t.__scopeMenu),i=x7(x0,t.__scopeMenu),a=b.useRef(null),{pointerGraceTimerRef:l,onPointerGraceIntentChange:c}=i,d={__scopeMenu:t.__scopeMenu},h=b.useCallback(()=>{a.current&&window.clearTimeout(a.current),a.current=null},[]);return b.useEffect(()=>h,[h]),b.useEffect(()=>{const m=l.current;return()=>{window.clearTimeout(m),c(null)}},[l,c]),o.jsx(p7,{asChild:!0,...d,children:o.jsx(AX,{id:s.triggerId,"aria-haspopup":"menu","aria-expanded":n.open,"aria-controls":s.contentId,"data-state":UX(n.open),...t,ref:Qc(e,s.onTriggerChange),onClick:m=>{t.onClick?.(m),!(t.disabled||m.defaultPrevented)&&(m.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:nt(t.onPointerMove,Cp(m=>{i.onItemEnter(m),!m.defaultPrevented&&!t.disabled&&!n.open&&!a.current&&(i.onPointerGraceIntentChange(null),a.current=window.setTimeout(()=>{n.onOpenChange(!0),h()},100))})),onPointerLeave:nt(t.onPointerLeave,Cp(m=>{h();const g=n.content?.getBoundingClientRect();if(g){const x=n.content?.dataset.side,y=x==="right",w=y?-5:5,S=g[y?"left":"right"],k=g[y?"right":"left"];i.onPointerGraceIntentChange({area:[{x:m.clientX+w,y:m.clientY},{x:S,y:g.top},{x:k,y:g.top},{x:k,y:g.bottom},{x:S,y:g.bottom}],side:x}),window.clearTimeout(l.current),l.current=window.setTimeout(()=>i.onPointerGraceIntentChange(null),300)}else{if(i.onTriggerLeave(m),m.defaultPrevented)return;i.onPointerGraceIntentChange(null)}})),onKeyDown:nt(t.onKeyDown,m=>{const g=i.searchRef.current!=="";t.disabled||g&&m.key===" "||hMe[r.dir].includes(m.key)&&(n.onOpenChange(!0),n.content?.focus(),m.preventDefault())})})})});HX.displayName=x0;var QX="MenuSubContent",VX=b.forwardRef((t,e)=>{const n=CX(Ta,t.__scopeMenu),{forceMount:r=n.forceMount,...s}=t,i=fu(Ta,t.__scopeMenu),a=jg(Ta,t.__scopeMenu),l=qX(QX,t.__scopeMenu),c=b.useRef(null),d=Yn(e,c);return o.jsx(Np.Provider,{scope:t.__scopeMenu,children:o.jsx(ii,{present:r||i.open,children:o.jsx(Np.Slot,{scope:t.__scopeMenu,children:o.jsx(v7,{id:l.contentId,"aria-labelledby":l.triggerId,...s,ref:d,align:"start",side:a.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:h=>{a.isUsingKeyboardRef.current&&c.current?.focus(),h.preventDefault()},onCloseAutoFocus:h=>h.preventDefault(),onFocusOutside:nt(t.onFocusOutside,h=>{h.target!==l.trigger&&i.onOpenChange(!1)}),onEscapeKeyDown:nt(t.onEscapeKeyDown,h=>{a.onClose(),h.preventDefault()}),onKeyDown:nt(t.onKeyDown,h=>{const m=h.currentTarget.contains(h.target),g=fMe[a.dir].includes(h.key);m&&g&&(i.onOpenChange(!1),l.trigger?.focus(),h.preventDefault())})})})})})});VX.displayName=QX;function UX(t){return t?"open":"closed"}function zy(t){return t==="indeterminate"}function S7(t){return zy(t)?"indeterminate":t?"checked":"unchecked"}function MMe(t){const e=document.activeElement;for(const n of t)if(n===e||(n.focus(),document.activeElement!==e))return}function RMe(t,e){return t.map((n,r)=>t[(e+r)%t.length])}function DMe(t,e,n){const s=e.length>1&&Array.from(e).every(d=>d===e[0])?e[0]:e,i=n?t.indexOf(n):-1;let a=RMe(t,Math.max(i,0));s.length===1&&(a=a.filter(d=>d!==n));const c=a.find(d=>d.toLowerCase().startsWith(s.toLowerCase()));return c!==n?c:void 0}function PMe(t,e){const{x:n,y:r}=t;let s=!1;for(let i=0,a=e.length-1;ir!=g>r&&n<(m-d)*(r-h)/(g-h)+d&&(s=!s)}return s}function zMe(t,e){if(!e)return!1;const n={x:t.clientX,y:t.clientY};return PMe(n,e)}function Cp(t){return e=>e.pointerType==="mouse"?t(e):void 0}var IMe=NX,LMe=p7,BMe=TX,FMe=EX,qMe=y7,$Me=_X,HMe=rw,QMe=MX,VMe=DX,UMe=zX,WMe=LX,GMe=BX,XMe=FX,YMe=$X,KMe=HX,ZMe=VX,k7="ContextMenu",[JMe]=Ra(k7,[kX]),Gs=kX(),[eRe,WX]=JMe(k7),GX=t=>{const{__scopeContextMenu:e,children:n,onOpenChange:r,dir:s,modal:i=!0}=t,[a,l]=b.useState(!1),c=Gs(e),d=Rs(r),h=b.useCallback(m=>{l(m),d(m)},[d]);return o.jsx(eRe,{scope:e,open:a,onOpenChange:h,modal:i,children:o.jsx(IMe,{...c,dir:s,open:a,onOpenChange:h,modal:i,children:n})})};GX.displayName=k7;var XX="ContextMenuTrigger",YX=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,disabled:r=!1,...s}=t,i=WX(XX,n),a=Gs(n),l=b.useRef({x:0,y:0}),c=b.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...l.current})}),d=b.useRef(0),h=b.useCallback(()=>window.clearTimeout(d.current),[]),m=g=>{l.current={x:g.clientX,y:g.clientY},i.onOpenChange(!0)};return b.useEffect(()=>h,[h]),b.useEffect(()=>void(r&&h()),[r,h]),o.jsxs(o.Fragment,{children:[o.jsx(LMe,{...a,virtualRef:c}),o.jsx(xn.span,{"data-state":i.open?"open":"closed","data-disabled":r?"":void 0,...s,ref:e,style:{WebkitTouchCallout:"none",...t.style},onContextMenu:r?t.onContextMenu:nt(t.onContextMenu,g=>{h(),m(g),g.preventDefault()}),onPointerDown:r?t.onPointerDown:nt(t.onPointerDown,K1(g=>{h(),d.current=window.setTimeout(()=>m(g),700)})),onPointerMove:r?t.onPointerMove:nt(t.onPointerMove,K1(h)),onPointerCancel:r?t.onPointerCancel:nt(t.onPointerCancel,K1(h)),onPointerUp:r?t.onPointerUp:nt(t.onPointerUp,K1(h))})]})});YX.displayName=XX;var tRe="ContextMenuPortal",KX=t=>{const{__scopeContextMenu:e,...n}=t,r=Gs(e);return o.jsx(BMe,{...r,...n})};KX.displayName=tRe;var ZX="ContextMenuContent",JX=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=WX(ZX,n),i=Gs(n),a=b.useRef(!1);return o.jsx(FMe,{...i,...r,ref:e,side:"right",sideOffset:2,align:"start",onCloseAutoFocus:l=>{t.onCloseAutoFocus?.(l),!l.defaultPrevented&&a.current&&l.preventDefault(),a.current=!1},onInteractOutside:l=>{t.onInteractOutside?.(l),!l.defaultPrevented&&!s.modal&&(a.current=!0)},style:{...t.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});JX.displayName=ZX;var nRe="ContextMenuGroup",rRe=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(qMe,{...s,...r,ref:e})});rRe.displayName=nRe;var sRe="ContextMenuLabel",eY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx($Me,{...s,...r,ref:e})});eY.displayName=sRe;var iRe="ContextMenuItem",tY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(HMe,{...s,...r,ref:e})});tY.displayName=iRe;var aRe="ContextMenuCheckboxItem",nY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(QMe,{...s,...r,ref:e})});nY.displayName=aRe;var oRe="ContextMenuRadioGroup",lRe=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(VMe,{...s,...r,ref:e})});lRe.displayName=oRe;var cRe="ContextMenuRadioItem",rY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(UMe,{...s,...r,ref:e})});rY.displayName=cRe;var uRe="ContextMenuItemIndicator",sY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(WMe,{...s,...r,ref:e})});sY.displayName=uRe;var dRe="ContextMenuSeparator",iY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(GMe,{...s,...r,ref:e})});iY.displayName=dRe;var hRe="ContextMenuArrow",fRe=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(XMe,{...s,...r,ref:e})});fRe.displayName=hRe;var aY="ContextMenuSub",oY=t=>{const{__scopeContextMenu:e,children:n,onOpenChange:r,open:s,defaultOpen:i}=t,a=Gs(e),[l,c]=Xl({prop:s,defaultProp:i??!1,onChange:r,caller:aY});return o.jsx(YMe,{...a,open:l,onOpenChange:c,children:n})};oY.displayName=aY;var mRe="ContextMenuSubTrigger",lY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(KMe,{...s,...r,ref:e})});lY.displayName=mRe;var pRe="ContextMenuSubContent",cY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(ZMe,{...s,...r,ref:e,style:{...t.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});cY.displayName=pRe;function K1(t){return e=>e.pointerType!=="mouse"?t(e):void 0}var gRe=GX,xRe=YX,vRe=KX,uY=JX,dY=eY,hY=tY,fY=nY,mY=rY,pY=sY,gY=iY,yRe=oY,xY=lY,vY=cY;const bRe=gRe,wRe=xRe,SRe=yRe,yY=b.forwardRef(({className:t,inset:e,children:n,...r},s)=>o.jsxs(xY,{ref:s,className:xe("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",e&&"pl-8",t),...r,children:[n,o.jsx(yd,{className:"ml-auto h-4 w-4"})]}));yY.displayName=xY.displayName;const bY=b.forwardRef(({className:t,...e},n)=>o.jsx(vY,{ref:n,className:xe("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]",t),...e}));bY.displayName=vY.displayName;const wY=b.forwardRef(({className:t,...e},n)=>o.jsx(vRe,{children:o.jsx(uY,{ref:n,className:xe("z-50 max-h-[--radix-context-menu-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]",t),...e})}));wY.displayName=uY.displayName;const qa=b.forwardRef(({className:t,inset:e,...n},r)=>o.jsx(hY,{ref:r,className:xe("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e&&"pl-8",t),...n}));qa.displayName=hY.displayName;const kRe=b.forwardRef(({className:t,children:e,checked:n,...r},s)=>o.jsxs(fY,{ref:s,className:xe("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),checked:n,...r,children:[o.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:o.jsx(pY,{children:o.jsx(Ro,{className:"h-4 w-4"})})}),e]}));kRe.displayName=fY.displayName;const ORe=b.forwardRef(({className:t,children:e,...n},r)=>o.jsxs(mY,{ref:r,className:xe("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),...n,children:[o.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:o.jsx(pY,{children:o.jsx(ute,{className:"h-2 w-2 fill-current"})})}),e]}));ORe.displayName=mY.displayName;const jRe=b.forwardRef(({className:t,inset:e,...n},r)=>o.jsx(dY,{ref:r,className:xe("px-2 py-1.5 text-sm font-semibold text-foreground",e&&"pl-8",t),...n}));jRe.displayName=dY.displayName;const v0=b.forwardRef(({className:t,...e},n)=>o.jsx(gY,{ref:n,className:xe("-mx-1 my-1 h-px bg-border",t),...e}));v0.displayName=gY.displayName;const jh=({className:t,...e})=>o.jsx("span",{className:xe("ml-auto text-xs tracking-widest text-muted-foreground",t),...e});jh.displayName="ContextMenuShortcut";var NRe=Symbol("radix.slottable");function CRe(t){const e=({children:n})=>o.jsx(o.Fragment,{children:n});return e.displayName=`${t}.Slottable`,e.__radixId=NRe,e}var[sw]=Ra("Tooltip",[vf]),iw=vf(),SY="TooltipProvider",TRe=700,uj="tooltip.open",[ERe,O7]=sw(SY),kY=t=>{const{__scopeTooltip:e,delayDuration:n=TRe,skipDelayDuration:r=300,disableHoverableContent:s=!1,children:i}=t,a=b.useRef(!0),l=b.useRef(!1),c=b.useRef(0);return b.useEffect(()=>{const d=c.current;return()=>window.clearTimeout(d)},[]),o.jsx(ERe,{scope:e,isOpenDelayedRef:a,delayDuration:n,onOpen:b.useCallback(()=>{window.clearTimeout(c.current),a.current=!1},[]),onClose:b.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>a.current=!0,r)},[r]),isPointerInTransitRef:l,onPointerInTransitChange:b.useCallback(d=>{l.current=d},[]),disableHoverableContent:s,children:i})};kY.displayName=SY;var Tp="Tooltip",[_Re,Ng]=sw(Tp),OY=t=>{const{__scopeTooltip:e,children:n,open:r,defaultOpen:s,onOpenChange:i,disableHoverableContent:a,delayDuration:l}=t,c=O7(Tp,t.__scopeTooltip),d=iw(e),[h,m]=b.useState(null),g=Ui(),x=b.useRef(0),y=a??c.disableHoverableContent,w=l??c.delayDuration,S=b.useRef(!1),[k,j]=Xl({prop:r,defaultProp:s??!1,onChange:A=>{A?(c.onOpen(),document.dispatchEvent(new CustomEvent(uj))):c.onClose(),i?.(A)},caller:Tp}),N=b.useMemo(()=>k?S.current?"delayed-open":"instant-open":"closed",[k]),T=b.useCallback(()=>{window.clearTimeout(x.current),x.current=0,S.current=!1,j(!0)},[j]),E=b.useCallback(()=>{window.clearTimeout(x.current),x.current=0,j(!1)},[j]),_=b.useCallback(()=>{window.clearTimeout(x.current),x.current=window.setTimeout(()=>{S.current=!0,j(!0),x.current=0},w)},[w,j]);return b.useEffect(()=>()=>{x.current&&(window.clearTimeout(x.current),x.current=0)},[]),o.jsx(Vy,{...d,children:o.jsx(_Re,{scope:e,contentId:g,open:k,stateAttribute:N,trigger:h,onTriggerChange:m,onTriggerEnter:b.useCallback(()=>{c.isOpenDelayedRef.current?_():T()},[c.isOpenDelayedRef,_,T]),onTriggerLeave:b.useCallback(()=>{y?E():(window.clearTimeout(x.current),x.current=0)},[E,y]),onOpen:T,onClose:E,disableHoverableContent:y,children:n})})};OY.displayName=Tp;var dj="TooltipTrigger",jY=b.forwardRef((t,e)=>{const{__scopeTooltip:n,...r}=t,s=Ng(dj,n),i=O7(dj,n),a=iw(n),l=b.useRef(null),c=Yn(e,l,s.onTriggerChange),d=b.useRef(!1),h=b.useRef(!1),m=b.useCallback(()=>d.current=!1,[]);return b.useEffect(()=>()=>document.removeEventListener("pointerup",m),[m]),o.jsx(Uy,{asChild:!0,...a,children:o.jsx(xn.button,{"aria-describedby":s.open?s.contentId:void 0,"data-state":s.stateAttribute,...r,ref:c,onPointerMove:nt(t.onPointerMove,g=>{g.pointerType!=="touch"&&!h.current&&!i.isPointerInTransitRef.current&&(s.onTriggerEnter(),h.current=!0)}),onPointerLeave:nt(t.onPointerLeave,()=>{s.onTriggerLeave(),h.current=!1}),onPointerDown:nt(t.onPointerDown,()=>{s.open&&s.onClose(),d.current=!0,document.addEventListener("pointerup",m,{once:!0})}),onFocus:nt(t.onFocus,()=>{d.current||s.onOpen()}),onBlur:nt(t.onBlur,s.onClose),onClick:nt(t.onClick,s.onClose)})})});jY.displayName=dj;var j7="TooltipPortal",[ARe,MRe]=sw(j7,{forceMount:void 0}),NY=t=>{const{__scopeTooltip:e,forceMount:n,children:r,container:s}=t,i=Ng(j7,e);return o.jsx(ARe,{scope:e,forceMount:n,children:o.jsx(ii,{present:n||i.open,children:o.jsx(Qy,{asChild:!0,container:s,children:r})})})};NY.displayName=j7;var xf="TooltipContent",CY=b.forwardRef((t,e)=>{const n=MRe(xf,t.__scopeTooltip),{forceMount:r=n.forceMount,side:s="top",...i}=t,a=Ng(xf,t.__scopeTooltip);return o.jsx(ii,{present:r||a.open,children:a.disableHoverableContent?o.jsx(TY,{side:s,...i,ref:e}):o.jsx(RRe,{side:s,...i,ref:e})})}),RRe=b.forwardRef((t,e)=>{const n=Ng(xf,t.__scopeTooltip),r=O7(xf,t.__scopeTooltip),s=b.useRef(null),i=Yn(e,s),[a,l]=b.useState(null),{trigger:c,onClose:d}=n,h=s.current,{onPointerInTransitChange:m}=r,g=b.useCallback(()=>{l(null),m(!1)},[m]),x=b.useCallback((y,w)=>{const S=y.currentTarget,k={x:y.clientX,y:y.clientY},j=LRe(k,S.getBoundingClientRect()),N=BRe(k,j),T=FRe(w.getBoundingClientRect()),E=$Re([...N,...T]);l(E),m(!0)},[m]);return b.useEffect(()=>()=>g(),[g]),b.useEffect(()=>{if(c&&h){const y=S=>x(S,h),w=S=>x(S,c);return c.addEventListener("pointerleave",y),h.addEventListener("pointerleave",w),()=>{c.removeEventListener("pointerleave",y),h.removeEventListener("pointerleave",w)}}},[c,h,x,g]),b.useEffect(()=>{if(a){const y=w=>{const S=w.target,k={x:w.clientX,y:w.clientY},j=c?.contains(S)||h?.contains(S),N=!qRe(k,a);j?g():N&&(g(),d())};return document.addEventListener("pointermove",y),()=>document.removeEventListener("pointermove",y)}},[c,h,a,d,g]),o.jsx(TY,{...t,ref:i})}),[DRe,PRe]=sw(Tp,{isInside:!1}),zRe=CRe("TooltipContent"),TY=b.forwardRef((t,e)=>{const{__scopeTooltip:n,children:r,"aria-label":s,onEscapeKeyDown:i,onPointerDownOutside:a,...l}=t,c=Ng(xf,n),d=iw(n),{onClose:h}=c;return b.useEffect(()=>(document.addEventListener(uj,h),()=>document.removeEventListener(uj,h)),[h]),b.useEffect(()=>{if(c.trigger){const m=g=>{g.target?.contains(c.trigger)&&h()};return window.addEventListener("scroll",m,{capture:!0}),()=>window.removeEventListener("scroll",m,{capture:!0})}},[c.trigger,h]),o.jsx(Cj,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:i,onPointerDownOutside:a,onFocusOutside:m=>m.preventDefault(),onDismiss:h,children:o.jsxs(Tj,{"data-state":c.stateAttribute,...d,...l,ref:e,style:{...l.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[o.jsx(zRe,{children:r}),o.jsx(DRe,{scope:n,isInside:!0,children:o.jsx(Dee,{id:c.contentId,role:"tooltip",children:s||r})})]})})});CY.displayName=xf;var EY="TooltipArrow",IRe=b.forwardRef((t,e)=>{const{__scopeTooltip:n,...r}=t,s=iw(n);return PRe(EY,n).isInside?null:o.jsx(Ej,{...s,...r,ref:e})});IRe.displayName=EY;function LRe(t,e){const n=Math.abs(e.top-t.y),r=Math.abs(e.bottom-t.y),s=Math.abs(e.right-t.x),i=Math.abs(e.left-t.x);switch(Math.min(n,r,s,i)){case i:return"left";case s:return"right";case n:return"top";case r:return"bottom";default:throw new Error("unreachable")}}function BRe(t,e,n=5){const r=[];switch(e){case"top":r.push({x:t.x-n,y:t.y+n},{x:t.x+n,y:t.y+n});break;case"bottom":r.push({x:t.x-n,y:t.y-n},{x:t.x+n,y:t.y-n});break;case"left":r.push({x:t.x+n,y:t.y-n},{x:t.x+n,y:t.y+n});break;case"right":r.push({x:t.x-n,y:t.y-n},{x:t.x-n,y:t.y+n});break}return r}function FRe(t){const{top:e,right:n,bottom:r,left:s}=t;return[{x:s,y:e},{x:n,y:e},{x:n,y:r},{x:s,y:r}]}function qRe(t,e){const{x:n,y:r}=t;let s=!1;for(let i=0,a=e.length-1;ir!=g>r&&n<(m-d)*(r-h)/(g-h)+d&&(s=!s)}return s}function $Re(t){const e=t.slice();return e.sort((n,r)=>n.xr.x?1:n.yr.y?1:0),HRe(e)}function HRe(t){if(t.length<=1)return t.slice();const e=[];for(let r=0;r=2;){const i=e[e.length-1],a=e[e.length-2];if((i.x-a.x)*(s.y-a.y)>=(i.y-a.y)*(s.x-a.x))e.pop();else break}e.push(s)}e.pop();const n=[];for(let r=t.length-1;r>=0;r--){const s=t[r];for(;n.length>=2;){const i=n[n.length-1],a=n[n.length-2];if((i.x-a.x)*(s.y-a.y)>=(i.y-a.y)*(s.x-a.x))n.pop();else break}n.push(s)}return n.pop(),e.length===1&&n.length===1&&e[0].x===n[0].x&&e[0].y===n[0].y?e:e.concat(n)}var QRe=kY,VRe=OY,URe=jY,WRe=NY,_Y=CY;const GRe=QRe,XRe=VRe,YRe=URe,AY=b.forwardRef(({className:t,sideOffset:e=4,...n},r)=>o.jsx(WRe,{children:o.jsx(_Y,{ref:r,sideOffset:e,className:xe("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",t),...n})}));AY.displayName=_Y.displayName;function KRe({children:t}){uie();const[e,n]=b.useState(!0),[r,s]=b.useState(!1),[i,a]=b.useState(!1),{theme:l,setTheme:c}=Vj(),d=xJ(),h=Zi();b.useEffect(()=>{const w=S=>{(S.metaKey||S.ctrlKey)&&S.key==="k"&&(S.preventDefault(),a(!0))};return window.addEventListener("keydown",w),()=>window.removeEventListener("keydown",w)},[]);const m=[{title:"概览",items:[{icon:D0,label:"首页",path:"/"}]},{title:"麦麦配置编辑",items:[{icon:zl,label:"麦麦主程序配置",path:"/config/bot"},{icon:kI,label:"AI模型厂商配置",path:"/config/modelProvider",tourId:"sidebar-model-provider"},{icon:OI,label:"模型管理与分配",path:"/config/model",tourId:"sidebar-model-management"},{icon:k9,label:"麦麦适配器配置",path:"/config/adapter"}]},{title:"麦麦资源管理",items:[{icon:_j,label:"表情包管理",path:"/resource/emoji"},{icon:Wh,label:"表达方式管理",path:"/resource/expression"},{icon:jI,label:"人物信息管理",path:"/resource/person"},{icon:SI,label:"知识库图谱可视化",path:"/resource/knowledge-graph"}]},{title:"扩展与监控",items:[{icon:Gh,label:"插件市场",path:"/plugins"},{icon:k9,label:"插件配置",path:"/plugin-config"},{icon:Pv,label:"日志查看器",path:"/logs"},{icon:Wh,label:"本地聊天室",path:"/chat"}]},{title:"系统",items:[{icon:Xu,label:"系统设置",path:"/settings"}]}],x=l==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":l,y=()=>{localStorage.removeItem("access-token"),h({to:"/auth"})};return o.jsx(GRe,{delayDuration:300,children:o.jsxs("div",{className:"flex h-screen overflow-hidden",children:[o.jsxs("aside",{className:xe("fixed inset-y-0 left-0 z-50 flex flex-col border-r bg-card transition-all duration-300 lg:relative lg:z-0","w-64 lg:w-auto",e?"lg:w-64":"lg:w-16",r?"translate-x-0":"-translate-x-full lg:translate-x-0"),children:[o.jsx("div",{className:"flex h-16 items-center border-b px-4",children:o.jsxs("div",{className:xe("relative flex items-center justify-center flex-1 transition-all overflow-hidden","lg:flex-1",!e&&"lg:flex-none lg:w-8"),children:[o.jsxs("div",{className:xe("flex items-baseline gap-2",!e&&"lg:hidden"),children:[o.jsx("span",{className:"font-bold text-xl text-primary-gradient whitespace-nowrap",children:"MaiBot WebUI"}),o.jsx("span",{className:"text-xs text-primary/60 whitespace-nowrap",children:Fse()})]}),!e&&o.jsx("span",{className:"hidden lg:block font-bold text-primary-gradient text-2xl",children:"M"})]})}),o.jsx(gn,{className:xe("flex-1 overflow-x-hidden",!e&&"lg:w-16"),children:o.jsx("nav",{className:xe("p-4",!e&&"lg:p-2 lg:w-16"),children:o.jsx("ul",{className:xe("space-y-6",!e&&"lg:space-y-3 lg:w-full"),children:m.map((w,S)=>o.jsxs("li",{children:[o.jsx("div",{className:xe("px-3 h-[1.25rem]","mb-2",!e&&"lg:mb-1 lg:invisible"),children:o.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground/60 whitespace-nowrap",children:w.title})}),!e&&S>0&&o.jsx("div",{className:"hidden lg:block mb-2 border-t border-border"}),o.jsx("ul",{className:"space-y-1",children:w.items.map(k=>{const j=d({to:k.path}),N=k.icon,T=o.jsxs(o.Fragment,{children:[j&&o.jsx("div",{className:"absolute left-0 top-1/2 h-8 w-1 -translate-y-1/2 rounded-r-full bg-primary transition-opacity duration-300"}),o.jsxs("div",{className:xe("flex items-center transition-all duration-300",e?"gap-3":"gap-3 lg:gap-0"),children:[o.jsx(N,{className:xe("h-5 w-5 flex-shrink-0",j&&"text-primary"),strokeWidth:2,fill:"none"}),o.jsx("span",{className:xe("text-sm font-medium whitespace-nowrap transition-all duration-300",j&&"font-semibold",e?"opacity-100 max-w-[200px]":"opacity-100 max-w-[200px] lg:opacity-0 lg:max-w-0 lg:overflow-hidden"),children:k.label})]})]});return o.jsx("li",{className:"relative",children:o.jsxs(XRe,{children:[o.jsx(YRe,{asChild:!0,children:o.jsx(vJ,{to:k.path,"data-tour":k.tourId,className:xe("relative flex items-center rounded-lg py-2 transition-all duration-300","hover:bg-accent hover:text-accent-foreground",j?"bg-accent text-foreground":"text-muted-foreground hover:text-foreground",e?"px-3":"px-3 lg:px-0 lg:justify-center lg:w-12 lg:mx-auto"),onClick:()=>s(!1),children:T})}),!e&&o.jsx(AY,{side:"right",className:"hidden lg:block",children:o.jsx("p",{children:k.label})})]})},k.path)})})]},w.title))})})})]}),r&&o.jsx("div",{className:"fixed inset-0 z-40 bg-black/50 lg:hidden",onClick:()=>s(!1)}),o.jsxs("div",{className:"flex flex-1 flex-col overflow-hidden",children:[o.jsxs("header",{className:"flex h-16 items-center justify-between border-b bg-card/80 backdrop-blur-md px-4 sticky top-0 z-10",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsx("button",{onClick:()=>s(!r),className:"rounded-lg p-2 hover:bg-accent lg:hidden",children:o.jsx(dte,{className:"h-5 w-5"})}),o.jsx("button",{onClick:()=>n(!e),className:"hidden rounded-lg p-2 hover:bg-accent lg:block",title:e?"收起侧边栏":"展开侧边栏",children:o.jsx(vd,{className:xe("h-5 w-5 transition-transform",!e&&"rotate-180")})})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsxs("button",{onClick:()=>a(!0),className:"relative hidden md:flex items-center w-64 h-9 pl-9 pr-16 bg-background/50 border rounded-md hover:bg-accent/50 transition-colors text-left",children:[o.jsx(Ni,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),o.jsx("span",{className:"text-sm text-muted-foreground",children:"搜索..."}),o.jsxs(wX,{size:"sm",className:"absolute right-2 top-1/2 -translate-y-1/2",children:[o.jsx("span",{className:"text-xs",children:"⌘"}),"K"]})]}),o.jsx(rMe,{open:i,onOpenChange:a}),o.jsxs(de,{variant:"ghost",size:"sm",onClick:()=>window.open("https://docs.mai-mai.org","_blank"),className:"gap-2",title:"查看麦麦文档",children:[o.jsx(hte,{className:"h-4 w-4"}),o.jsx("span",{className:"hidden sm:inline",children:"麦麦文档"})]}),o.jsx("button",{onClick:w=>{jse(x==="dark"?"light":"dark",c,w)},className:"rounded-lg p-2 hover:bg-accent",title:x==="dark"?"切换到浅色模式":"切换到深色模式",children:x==="dark"?o.jsx(nk,{className:"h-5 w-5"}):o.jsx(rk,{className:"h-5 w-5"})}),o.jsx("div",{className:"h-6 w-px bg-border"}),o.jsxs(de,{variant:"ghost",size:"sm",onClick:y,className:"gap-2",title:"登出系统",children:[o.jsx(O9,{className:"h-4 w-4"}),o.jsx("span",{className:"hidden sm:inline",children:"登出"})]})]})]}),o.jsxs(bRe,{children:[o.jsx(wRe,{asChild:!0,children:o.jsx("main",{className:"flex-1 overflow-hidden bg-background",children:t})}),o.jsxs(wY,{className:"w-64",children:[o.jsxs(qa,{onClick:()=>h({to:"/"}),children:[o.jsx(D0,{className:"mr-2 h-4 w-4"}),"首页"]}),o.jsxs(qa,{onClick:()=>h({to:"/settings"}),children:[o.jsx(Xu,{className:"mr-2 h-4 w-4"}),"系统设置"]}),o.jsxs(qa,{onClick:()=>h({to:"/logs"}),children:[o.jsx(Pv,{className:"mr-2 h-4 w-4"}),"日志查看器"]}),o.jsx(v0,{}),o.jsxs(SRe,{children:[o.jsxs(yY,{children:[o.jsx(yI,{className:"mr-2 h-4 w-4"}),"切换主题"]}),o.jsxs(bY,{className:"w-48",children:[o.jsxs(qa,{onClick:()=>c("light"),disabled:l==="light",children:[o.jsx(nk,{className:"mr-2 h-4 w-4"}),"浅色",l==="light"&&o.jsx(jh,{children:"✓"})]}),o.jsxs(qa,{onClick:()=>c("dark"),disabled:l==="dark",children:[o.jsx(rk,{className:"mr-2 h-4 w-4"}),"深色",l==="dark"&&o.jsx(jh,{children:"✓"})]}),o.jsxs(qa,{onClick:()=>c("system"),disabled:l==="system",children:[o.jsx(Xu,{className:"mr-2 h-4 w-4"}),"跟随系统",l==="system"&&o.jsx(jh,{children:"✓"})]})]})]}),o.jsx(v0,{}),o.jsxs(qa,{onClick:()=>window.location.reload(),children:[o.jsx(fte,{className:"mr-2 h-4 w-4"}),"刷新页面",o.jsx(jh,{children:"⌘R"})]}),o.jsxs(qa,{onClick:()=>a(!0),children:[o.jsx(Ni,{className:"mr-2 h-4 w-4"}),"搜索",o.jsx(jh,{children:"⌘K"})]}),o.jsx(v0,{}),o.jsxs(qa,{onClick:()=>window.open("https://docs.mai-mai.org","_blank"),children:[o.jsx(Ah,{className:"mr-2 h-4 w-4"}),"麦麦文档"]}),o.jsx(v0,{}),o.jsxs(qa,{onClick:y,className:"text-destructive focus:text-destructive",children:[o.jsx(O9,{className:"mr-2 h-4 w-4"}),"登出系统"]})]})]})]})]})})}var aw="Collapsible",[ZRe]=Ra(aw),[JRe,N7]=ZRe(aw),MY=b.forwardRef((t,e)=>{const{__scopeCollapsible:n,open:r,defaultOpen:s,disabled:i,onOpenChange:a,...l}=t,[c,d]=Xl({prop:r,defaultProp:s??!1,onChange:a,caller:aw});return o.jsx(JRe,{scope:n,disabled:i,contentId:Ui(),open:c,onOpenToggle:b.useCallback(()=>d(h=>!h),[d]),children:o.jsx(xn.div,{"data-state":T7(c),"data-disabled":i?"":void 0,...l,ref:e})})});MY.displayName=aw;var RY="CollapsibleTrigger",DY=b.forwardRef((t,e)=>{const{__scopeCollapsible:n,...r}=t,s=N7(RY,n);return o.jsx(xn.button,{type:"button","aria-controls":s.contentId,"aria-expanded":s.open||!1,"data-state":T7(s.open),"data-disabled":s.disabled?"":void 0,disabled:s.disabled,...r,ref:e,onClick:nt(t.onClick,s.onOpenToggle)})});DY.displayName=RY;var C7="CollapsibleContent",PY=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=N7(C7,t.__scopeCollapsible);return o.jsx(ii,{present:n||s.open,children:({present:i})=>o.jsx(eDe,{...r,ref:e,present:i})})});PY.displayName=C7;var eDe=b.forwardRef((t,e)=>{const{__scopeCollapsible:n,present:r,children:s,...i}=t,a=N7(C7,n),[l,c]=b.useState(r),d=b.useRef(null),h=Yn(e,d),m=b.useRef(0),g=m.current,x=b.useRef(0),y=x.current,w=a.open||l,S=b.useRef(w),k=b.useRef(void 0);return b.useEffect(()=>{const j=requestAnimationFrame(()=>S.current=!1);return()=>cancelAnimationFrame(j)},[]),Uh(()=>{const j=d.current;if(j){k.current=k.current||{transitionDuration:j.style.transitionDuration,animationName:j.style.animationName},j.style.transitionDuration="0s",j.style.animationName="none";const N=j.getBoundingClientRect();m.current=N.height,x.current=N.width,S.current||(j.style.transitionDuration=k.current.transitionDuration,j.style.animationName=k.current.animationName),c(r)}},[a.open,r]),o.jsx(xn.div,{"data-state":T7(a.open),"data-disabled":a.disabled?"":void 0,id:a.contentId,hidden:!w,...i,ref:h,style:{"--radix-collapsible-content-height":g?`${g}px`:void 0,"--radix-collapsible-content-width":y?`${y}px`:void 0,...t.style},children:w&&s})});function T7(t){return t?"open":"closed"}var tDe=MY;const Pz=tDe,zz=DY,Iz=PY;function nDe(t){const e=t.split(` +`).slice(1),n=[];for(const r of e){const s=r.trim();if(!s.startsWith("at "))continue;const i=s.match(/at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?$/);i?n.push({functionName:i[1]||"",fileName:i[2],lineNumber:i[3],columnNumber:i[4],raw:s}):n.push({functionName:"",fileName:"",lineNumber:"",columnNumber:"",raw:s})}return n}function rDe({error:t,errorInfo:e}){const[n,r]=b.useState(!0),[s,i]=b.useState(!1),[a,l]=b.useState(!1),c=t.stack?nDe(t.stack):[],d=async()=>{const h=` Error: ${t.name} Message: ${t.message} @@ -404,4 +404,4 @@ ${e?.componentStack||"No component stack available"} URL: ${window.location.href} User Agent: ${navigator.userAgent} Time: ${new Date().toISOString()} - `.trim();try{await navigator.clipboard.writeText(h),l(!0),setTimeout(()=>l(!1),2e3)}catch(m){console.error("Failed to copy:",m)}};return o.jsxs("div",{className:"space-y-4",children:[o.jsxs(ga,{variant:"destructive",className:"border-red-500/50 bg-red-500/10",children:[o.jsx(Wa,{className:"h-4 w-4"}),o.jsxs(xa,{className:"font-mono text-sm",children:[o.jsxs("span",{className:"font-semibold",children:[t.name,":"]})," ",t.message]})]}),c.length>0&&o.jsxs(Tz,{open:n,onOpenChange:r,children:[o.jsx(Ez,{asChild:!0,children:o.jsxs(he,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[o.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[o.jsx(Xee,{className:"h-4 w-4"}),"Stack Trace (",c.length," frames)"]}),n?o.jsx(A0,{className:"h-4 w-4"}):o.jsx(nd,{className:"h-4 w-4"})]})}),o.jsx(_z,{children:o.jsx(wn,{className:"h-[280px] rounded-md border bg-muted/30",children:o.jsx("div",{className:"p-3 space-y-1",children:c.map((h,m)=>o.jsx("div",{className:"font-mono text-xs p-2 rounded hover:bg-muted/50 transition-colors",children:o.jsxs("div",{className:"flex items-start gap-2",children:[o.jsxs("span",{className:"text-muted-foreground w-6 text-right flex-shrink-0",children:[m+1,"."]}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("span",{className:"text-primary font-medium",children:h.functionName}),h.fileName&&o.jsxs("div",{className:"text-muted-foreground mt-0.5 break-all",children:[h.fileName,h.lineNumber&&o.jsxs("span",{className:"text-yellow-600 dark:text-yellow-400",children:[":",h.lineNumber,":",h.columnNumber]})]})]})]})},m))})})})]}),e?.componentStack&&o.jsxs(Tz,{open:s,onOpenChange:i,children:[o.jsx(Ez,{asChild:!0,children:o.jsxs(he,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[o.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[o.jsx(Wa,{className:"h-4 w-4"}),"Component Stack"]}),s?o.jsx(A0,{className:"h-4 w-4"}):o.jsx(nd,{className:"h-4 w-4"})]})}),o.jsx(_z,{children:o.jsx(wn,{className:"h-[200px] rounded-md border bg-muted/30",children:o.jsx("pre",{className:"p-3 font-mono text-xs whitespace-pre-wrap text-muted-foreground",children:e.componentStack})})})]}),o.jsx(he,{variant:"outline",size:"sm",onClick:d,className:"w-full",children:a?o.jsxs(o.Fragment,{children:[o.jsx(Ro,{className:"mr-2 h-4 w-4 text-green-500"}),"已复制到剪贴板"]}):o.jsxs(o.Fragment,{children:[o.jsx(Tv,{className:"mr-2 h-4 w-4"}),"复制错误信息"]})})]})}function wY({error:t,errorInfo:e}){const n=()=>{window.location.href="/"},r=()=>{window.location.reload()};return o.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background p-4",children:o.jsxs(qt,{className:"w-full max-w-2xl shadow-lg",children:[o.jsxs(Fn,{className:"text-center pb-2",children:[o.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30 mb-4",children:o.jsx(Wa,{className:"h-8 w-8 text-red-600 dark:text-red-400"})}),o.jsx(qn,{className:"text-2xl font-bold",children:"页面出现了问题"}),o.jsx(ts,{className:"text-base mt-2",children:"应用程序遇到了意外错误。您可以尝试刷新页面或返回首页。"})]}),o.jsxs(Gn,{className:"space-y-4",children:[o.jsx(kRe,{error:t,errorInfo:e}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 pt-2",children:[o.jsxs(he,{onClick:r,className:"flex-1",children:[o.jsx(Qs,{className:"mr-2 h-4 w-4"}),"刷新页面"]}),o.jsxs(he,{onClick:n,variant:"outline",className:"flex-1",children:[o.jsx(M0,{className:"mr-2 h-4 w-4"}),"返回首页"]})]}),o.jsx("p",{className:"text-xs text-center text-muted-foreground pt-2",children:"如果问题持续存在,请将错误信息复制并反馈给开发者"})]})]})})}class ORe extends b.Component{constructor(e){super(e),this.state={hasError:!1,error:null,errorInfo:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,n){console.error("ErrorBoundary caught an error:",e,n),this.setState({errorInfo:n})}handleReset=()=>{this.setState({hasError:!1,error:null,errorInfo:null})};render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback:o.jsx(wY,{error:this.state.error,errorInfo:this.state.errorInfo}):this.props.children}}function SY({error:t}){return o.jsx(wY,{error:t,errorInfo:null})}const jg=rJ({component:()=>o.jsxs(o.Fragment,{children:[o.jsx(Az,{}),!1]}),beforeLoad:()=>{if(window.location.pathname==="/"&&!wB())throw iJ({to:"/auth"})}}),jRe=ks({getParentRoute:()=>jg,path:"/auth",component:Use}),NRe=ks({getParentRoute:()=>jg,path:"/setup",component:pie}),ai=ks({getParentRoute:()=>jg,id:"protected",component:()=>o.jsx(xRe,{children:o.jsx(Az,{})}),errorComponent:({error:t})=>o.jsx(SY,{error:t})}),CRe=ks({getParentRoute:()=>ai,path:"/",component:sse}),TRe=ks({getParentRoute:()=>ai,path:"/config/bot",component:f0e}),ERe=ks({getParentRoute:()=>ai,path:"/config/modelProvider",component:Rxe}),_Re=ks({getParentRoute:()=>ai,path:"/config/model",component:Ove}),MRe=ks({getParentRoute:()=>ai,path:"/config/adapter",component:Nve}),ARe=ks({getParentRoute:()=>ai,path:"/resource/emoji",component:Yke}),RRe=ks({getParentRoute:()=>ai,path:"/resource/expression",component:oOe}),DRe=ks({getParentRoute:()=>ai,path:"/resource/person",component:vOe}),PRe=ks({getParentRoute:()=>ai,path:"/resource/knowledge-graph",component:lTe}),zRe=ks({getParentRoute:()=>ai,path:"/logs",component:J_e}),IRe=ks({getParentRoute:()=>ai,path:"/plugins",component:vMe}),LRe=ks({getParentRoute:()=>ai,path:"/plugin-config",component:yMe}),BRe=ks({getParentRoute:()=>ai,path:"/plugin-mirrors",component:bMe}),FRe=ks({getParentRoute:()=>ai,path:"/settings",component:Lse}),qRe=ks({getParentRoute:()=>jg,path:"*",component:OB}),$Re=jg.addChildren([jRe,NRe,ai.addChildren([CRe,TRe,ERe,_Re,MRe,ARe,RRe,DRe,PRe,IRe,LRe,BRe,zRe,FRe]),qRe]),HRe=sJ({routeTree:$Re,defaultNotFoundComponent:OB,defaultErrorComponent:({error:t})=>o.jsx(SY,{error:t})});function QRe({children:t,defaultTheme:e="system",storageKey:n="ui-theme",...r}){const[s,i]=b.useState(()=>localStorage.getItem(n)||e);b.useEffect(()=>{const l=window.document.documentElement;if(l.classList.remove("light","dark"),s==="system"){const c=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";l.classList.add(c);return}l.classList.add(s)},[s]),b.useEffect(()=>{const l=localStorage.getItem("accent-color");if(l){const c=document.documentElement,h={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[l];h&&(c.style.setProperty("--primary",h.hsl),h.gradient?(c.style.setProperty("--primary-gradient",h.gradient),c.classList.add("has-gradient")):(c.style.removeProperty("--primary-gradient"),c.classList.remove("has-gradient")))}},[]);const a={theme:s,setTheme:l=>{localStorage.setItem(n,l),i(l)}};return o.jsx(VL.Provider,{...r,value:a,children:t})}function VRe({children:t,defaultEnabled:e=!0,defaultWavesEnabled:n=!0,storageKey:r="enable-animations",wavesStorageKey:s="enable-waves-background"}){const[i,a]=b.useState(()=>{const h=localStorage.getItem(r);return h!==null?h==="true":e}),[l,c]=b.useState(()=>{const h=localStorage.getItem(s);return h!==null?h==="true":n});b.useEffect(()=>{const h=document.documentElement;i?h.classList.remove("no-animations"):h.classList.add("no-animations"),localStorage.setItem(r,String(i))},[i,r]),b.useEffect(()=>{localStorage.setItem(s,String(l))},[l,s]);const d={enableAnimations:i,setEnableAnimations:a,enableWavesBackground:l,setEnableWavesBackground:c};return o.jsx(UL.Provider,{value:d,children:t})}var k7="ToastProvider",[O7,URe,WRe]=Dy("Toast"),[kY]=Ra("Toast",[WRe]),[GRe,tw]=kY(k7),OY=t=>{const{__scopeToast:e,label:n="Notification",duration:r=5e3,swipeDirection:s="right",swipeThreshold:i=50,children:a}=t,[l,c]=b.useState(null),[d,h]=b.useState(0),m=b.useRef(!1),g=b.useRef(!1);return n.trim()||console.error(`Invalid prop \`label\` supplied to \`${k7}\`. Expected non-empty \`string\`.`),o.jsx(O7.Provider,{scope:e,children:o.jsx(GRe,{scope:e,label:n,duration:r,swipeDirection:s,swipeThreshold:i,toastCount:d,viewport:l,onViewportChange:c,onToastAdd:b.useCallback(()=>h(x=>x+1),[]),onToastRemove:b.useCallback(()=>h(x=>x-1),[]),isFocusedToastEscapeKeyDownRef:m,isClosePausedRef:g,children:a})})};OY.displayName=k7;var jY="ToastViewport",XRe=["F8"],aj="toast.viewportPause",oj="toast.viewportResume",NY=b.forwardRef((t,e)=>{const{__scopeToast:n,hotkey:r=XRe,label:s="Notifications ({hotkey})",...i}=t,a=tw(jY,n),l=URe(n),c=b.useRef(null),d=b.useRef(null),h=b.useRef(null),m=b.useRef(null),g=Yn(e,m,a.onViewportChange),x=r.join("+").replace(/Key/g,"").replace(/Digit/g,""),y=a.toastCount>0;b.useEffect(()=>{const S=k=>{r.length!==0&&r.every(N=>k[N]||k.code===N)&&m.current?.focus()};return document.addEventListener("keydown",S),()=>document.removeEventListener("keydown",S)},[r]),b.useEffect(()=>{const S=c.current,k=m.current;if(y&&S&&k){const j=()=>{if(!a.isClosePausedRef.current){const _=new CustomEvent(aj);k.dispatchEvent(_),a.isClosePausedRef.current=!0}},N=()=>{if(a.isClosePausedRef.current){const _=new CustomEvent(oj);k.dispatchEvent(_),a.isClosePausedRef.current=!1}},T=_=>{!S.contains(_.relatedTarget)&&N()},E=()=>{S.contains(document.activeElement)||N()};return S.addEventListener("focusin",j),S.addEventListener("focusout",T),S.addEventListener("pointermove",j),S.addEventListener("pointerleave",E),window.addEventListener("blur",j),window.addEventListener("focus",N),()=>{S.removeEventListener("focusin",j),S.removeEventListener("focusout",T),S.removeEventListener("pointermove",j),S.removeEventListener("pointerleave",E),window.removeEventListener("blur",j),window.removeEventListener("focus",N)}}},[y,a.isClosePausedRef]);const w=b.useCallback(({tabbingDirection:S})=>{const j=l().map(N=>{const T=N.ref.current,E=[T,...lDe(T)];return S==="forwards"?E:E.reverse()});return(S==="forwards"?j.reverse():j).flat()},[l]);return b.useEffect(()=>{const S=m.current;if(S){const k=j=>{const N=j.altKey||j.ctrlKey||j.metaKey;if(j.key==="Tab"&&!N){const E=document.activeElement,_=j.shiftKey;if(j.target===S&&_){d.current?.focus();return}const P=w({tabbingDirection:_?"backwards":"forwards"}),L=P.findIndex(H=>H===E);W3(P.slice(L+1))?j.preventDefault():_?d.current?.focus():h.current?.focus()}};return S.addEventListener("keydown",k),()=>S.removeEventListener("keydown",k)}},[l,w]),o.jsxs(yee,{ref:c,role:"region","aria-label":s.replace("{hotkey}",x),tabIndex:-1,style:{pointerEvents:y?void 0:"none"},children:[y&&o.jsx(lj,{ref:d,onFocusFromOutsideViewport:()=>{const S=w({tabbingDirection:"forwards"});W3(S)}}),o.jsx(O7.Slot,{scope:n,children:o.jsx(gn.ol,{tabIndex:-1,...i,ref:g})}),y&&o.jsx(lj,{ref:h,onFocusFromOutsideViewport:()=>{const S=w({tabbingDirection:"backwards"});W3(S)}})]})});NY.displayName=jY;var CY="ToastFocusProxy",lj=b.forwardRef((t,e)=>{const{__scopeToast:n,onFocusFromOutsideViewport:r,...s}=t,i=tw(CY,n);return o.jsx(dI,{tabIndex:0,...s,ref:e,style:{position:"fixed"},onFocus:a=>{const l=a.relatedTarget;!i.viewport?.contains(l)&&r()}})});lj.displayName=CY;var Ng="Toast",YRe="toast.swipeStart",KRe="toast.swipeMove",ZRe="toast.swipeCancel",JRe="toast.swipeEnd",TY=b.forwardRef((t,e)=>{const{forceMount:n,open:r,defaultOpen:s,onOpenChange:i,...a}=t,[l,c]=Gl({prop:r,defaultProp:s??!0,onChange:i,caller:Ng});return o.jsx(si,{present:n||l,children:o.jsx(nDe,{open:l,...a,ref:e,onClose:()=>c(!1),onPause:qs(t.onPause),onResume:qs(t.onResume),onSwipeStart:nt(t.onSwipeStart,d=>{d.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:nt(t.onSwipeMove,d=>{const{x:h,y:m}=d.detail.delta;d.currentTarget.setAttribute("data-swipe","move"),d.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${h}px`),d.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${m}px`)}),onSwipeCancel:nt(t.onSwipeCancel,d=>{d.currentTarget.setAttribute("data-swipe","cancel"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),d.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),d.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:nt(t.onSwipeEnd,d=>{const{x:h,y:m}=d.detail.delta;d.currentTarget.setAttribute("data-swipe","end"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),d.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${h}px`),d.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${m}px`),c(!1)})})})});TY.displayName=Ng;var[eDe,tDe]=kY(Ng,{onClose(){}}),nDe=b.forwardRef((t,e)=>{const{__scopeToast:n,type:r="foreground",duration:s,open:i,onClose:a,onEscapeKeyDown:l,onPause:c,onResume:d,onSwipeStart:h,onSwipeMove:m,onSwipeCancel:g,onSwipeEnd:x,...y}=t,w=tw(Ng,n),[S,k]=b.useState(null),j=Yn(e,z=>k(z)),N=b.useRef(null),T=b.useRef(null),E=s||w.duration,_=b.useRef(0),M=b.useRef(E),I=b.useRef(0),{onToastAdd:P,onToastRemove:L}=w,H=qs(()=>{S?.contains(document.activeElement)&&w.viewport?.focus(),a()}),U=b.useCallback(z=>{!z||z===1/0||(window.clearTimeout(I.current),_.current=new Date().getTime(),I.current=window.setTimeout(H,z))},[H]);b.useEffect(()=>{const z=w.viewport;if(z){const Q=()=>{U(M.current),d?.()},B=()=>{const X=new Date().getTime()-_.current;M.current=M.current-X,window.clearTimeout(I.current),c?.()};return z.addEventListener(aj,B),z.addEventListener(oj,Q),()=>{z.removeEventListener(aj,B),z.removeEventListener(oj,Q)}}},[w.viewport,E,c,d,U]),b.useEffect(()=>{i&&!w.isClosePausedRef.current&&U(E)},[i,E,w.isClosePausedRef,U]),b.useEffect(()=>(P(),()=>L()),[P,L]);const ee=b.useMemo(()=>S?PY(S):null,[S]);return w.viewport?o.jsxs(o.Fragment,{children:[ee&&o.jsx(rDe,{__scopeToast:n,role:"status","aria-live":r==="foreground"?"assertive":"polite",children:ee}),o.jsx(eDe,{scope:n,onClose:H,children:pa.createPortal(o.jsx(O7.ItemSlot,{scope:n,children:o.jsx(bee,{asChild:!0,onEscapeKeyDown:nt(l,()=>{w.isFocusedToastEscapeKeyDownRef.current||H(),w.isFocusedToastEscapeKeyDownRef.current=!1}),children:o.jsx(gn.li,{tabIndex:0,"data-state":i?"open":"closed","data-swipe-direction":w.swipeDirection,...y,ref:j,style:{userSelect:"none",touchAction:"none",...t.style},onKeyDown:nt(t.onKeyDown,z=>{z.key==="Escape"&&(l?.(z.nativeEvent),z.nativeEvent.defaultPrevented||(w.isFocusedToastEscapeKeyDownRef.current=!0,H()))}),onPointerDown:nt(t.onPointerDown,z=>{z.button===0&&(N.current={x:z.clientX,y:z.clientY})}),onPointerMove:nt(t.onPointerMove,z=>{if(!N.current)return;const Q=z.clientX-N.current.x,B=z.clientY-N.current.y,X=!!T.current,J=["left","right"].includes(w.swipeDirection),G=["left","up"].includes(w.swipeDirection)?Math.min:Math.max,R=J?G(0,Q):0,ie=J?0:G(0,B),W=z.pointerType==="touch"?10:2,q={x:R,y:ie},V={originalEvent:z,delta:q};X?(T.current=q,Y1(KRe,m,V,{discrete:!1})):Mz(q,w.swipeDirection,W)?(T.current=q,Y1(YRe,h,V,{discrete:!1}),z.target.setPointerCapture(z.pointerId)):(Math.abs(Q)>W||Math.abs(B)>W)&&(N.current=null)}),onPointerUp:nt(t.onPointerUp,z=>{const Q=T.current,B=z.target;if(B.hasPointerCapture(z.pointerId)&&B.releasePointerCapture(z.pointerId),T.current=null,N.current=null,Q){const X=z.currentTarget,J={originalEvent:z,delta:Q};Mz(Q,w.swipeDirection,w.swipeThreshold)?Y1(JRe,x,J,{discrete:!0}):Y1(ZRe,g,J,{discrete:!0}),X.addEventListener("click",G=>G.preventDefault(),{once:!0})}})})})}),w.viewport)})]}):null}),rDe=t=>{const{__scopeToast:e,children:n,...r}=t,s=tw(Ng,e),[i,a]=b.useState(!1),[l,c]=b.useState(!1);return aDe(()=>a(!0)),b.useEffect(()=>{const d=window.setTimeout(()=>c(!0),1e3);return()=>window.clearTimeout(d)},[]),l?null:o.jsx(Ly,{asChild:!0,children:o.jsx(dI,{...r,children:i&&o.jsxs(o.Fragment,{children:[s.label," ",n]})})})},sDe="ToastTitle",EY=b.forwardRef((t,e)=>{const{__scopeToast:n,...r}=t;return o.jsx(gn.div,{...r,ref:e})});EY.displayName=sDe;var iDe="ToastDescription",_Y=b.forwardRef((t,e)=>{const{__scopeToast:n,...r}=t;return o.jsx(gn.div,{...r,ref:e})});_Y.displayName=iDe;var MY="ToastAction",AY=b.forwardRef((t,e)=>{const{altText:n,...r}=t;return n.trim()?o.jsx(DY,{altText:n,asChild:!0,children:o.jsx(j7,{...r,ref:e})}):(console.error(`Invalid prop \`altText\` supplied to \`${MY}\`. Expected non-empty \`string\`.`),null)});AY.displayName=MY;var RY="ToastClose",j7=b.forwardRef((t,e)=>{const{__scopeToast:n,...r}=t,s=tDe(RY,n);return o.jsx(DY,{asChild:!0,children:o.jsx(gn.button,{type:"button",...r,ref:e,onClick:nt(t.onClick,s.onClose)})})});j7.displayName=RY;var DY=b.forwardRef((t,e)=>{const{__scopeToast:n,altText:r,...s}=t;return o.jsx(gn.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":r||void 0,...s,ref:e})});function PY(t){const e=[];return Array.from(t.childNodes).forEach(r=>{if(r.nodeType===r.TEXT_NODE&&r.textContent&&e.push(r.textContent),oDe(r)){const s=r.ariaHidden||r.hidden||r.style.display==="none",i=r.dataset.radixToastAnnounceExclude==="";if(!s)if(i){const a=r.dataset.radixToastAnnounceAlt;a&&e.push(a)}else e.push(...PY(r))}}),e}function Y1(t,e,n,{discrete:r}){const s=n.originalEvent.currentTarget,i=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:n});e&&s.addEventListener(t,e,{once:!0}),r?uI(s,i):s.dispatchEvent(i)}var Mz=(t,e,n=0)=>{const r=Math.abs(t.x),s=Math.abs(t.y),i=r>s;return e==="left"||e==="right"?i&&r>n:!i&&s>n};function aDe(t=()=>{}){const e=qs(t);gj(()=>{let n=0,r=0;return n=window.requestAnimationFrame(()=>r=window.requestAnimationFrame(e)),()=>{window.cancelAnimationFrame(n),window.cancelAnimationFrame(r)}},[e])}function oDe(t){return t.nodeType===t.ELEMENT_NODE}function lDe(t){const e=[],n=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const s=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||s?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)e.push(n.currentNode);return e}function W3(t){const e=document.activeElement;return t.some(n=>n===e?!0:(n.focus(),document.activeElement!==e))}var cDe=OY,zY=NY,IY=TY,LY=EY,BY=_Y,FY=AY,qY=j7;const uDe=cDe,$Y=b.forwardRef(({className:t,...e},n)=>o.jsx(zY,{ref:n,className:ve("fixed bottom-0 right-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:max-w-[420px] gap-2",t),...e}));$Y.displayName=zY.displayName;const dDe=wf("group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-slide-in-from-right data-[state=open]:animate-fade-in data-[state=closed]:animate-slide-out-to-right data-[state=closed]:animate-fade-out data-[swipe=end]:animate-slide-out-to-right",{variants:{variant:{default:"border bg-primary/5 text-foreground backdrop-blur-sm",destructive:"destructive group border-destructive bg-destructive/10 text-destructive-foreground backdrop-blur-sm"}},defaultVariants:{variant:"default"}}),HY=b.forwardRef(({className:t,variant:e,...n},r)=>o.jsx(IY,{ref:r,className:ve(dDe({variant:e}),t),...n}));HY.displayName=IY.displayName;const hDe=b.forwardRef(({className:t,...e},n)=>o.jsx(FY,{ref:n,className:ve("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",t),...e}));hDe.displayName=FY.displayName;const QY=b.forwardRef(({className:t,...e},n)=>o.jsx(qY,{ref:n,className:ve("absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",t),"toast-close":"",...e,children:o.jsx(Tp,{className:"h-4 w-4"})}));QY.displayName=qY.displayName;const VY=b.forwardRef(({className:t,...e},n)=>o.jsx(LY,{ref:n,className:ve("text-sm font-semibold [&+div]:text-xs",t),...e}));VY.displayName=LY.displayName;const UY=b.forwardRef(({className:t,...e},n)=>o.jsx(BY,{ref:n,className:ve("text-sm opacity-90",t),...e}));UY.displayName=BY.displayName;function fDe(){const{toasts:t}=fs();return o.jsxs(uDe,{children:[t.map(function({id:e,title:n,description:r,action:s,...i}){return o.jsxs(HY,{...i,children:[o.jsxs("div",{className:"grid gap-1",children:[n&&o.jsx(VY,{children:n}),r&&o.jsx(UY,{children:r})]}),s,o.jsx(QY,{})]},e)}),o.jsx($Y,{})]})}ete.createRoot(document.getElementById("root")).render(o.jsx(b.StrictMode,{children:o.jsx(ORe,{children:o.jsx(QRe,{defaultTheme:"system",children:o.jsx(VRe,{children:o.jsxs(rpe,{children:[o.jsx(aJ,{router:HRe}),o.jsx(Mxe,{}),o.jsx(fDe,{})]})})})})})); + `.trim();try{await navigator.clipboard.writeText(h),l(!0),setTimeout(()=>l(!1),2e3)}catch(m){console.error("Failed to copy:",m)}};return o.jsxs("div",{className:"space-y-4",children:[o.jsxs(ga,{variant:"destructive",className:"border-red-500/50 bg-red-500/10",children:[o.jsx(Wa,{className:"h-4 w-4"}),o.jsxs(xa,{className:"font-mono text-sm",children:[o.jsxs("span",{className:"font-semibold",children:[t.name,":"]})," ",t.message]})]}),c.length>0&&o.jsxs(Pz,{open:n,onOpenChange:r,children:[o.jsx(zz,{asChild:!0,children:o.jsxs(de,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[o.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[o.jsx(mte,{className:"h-4 w-4"}),"Stack Trace (",c.length," frames)"]}),n?o.jsx(P0,{className:"h-4 w-4"}):o.jsx(nd,{className:"h-4 w-4"})]})}),o.jsx(Iz,{children:o.jsx(gn,{className:"h-[280px] rounded-md border bg-muted/30",children:o.jsx("div",{className:"p-3 space-y-1",children:c.map((h,m)=>o.jsx("div",{className:"font-mono text-xs p-2 rounded hover:bg-muted/50 transition-colors",children:o.jsxs("div",{className:"flex items-start gap-2",children:[o.jsxs("span",{className:"text-muted-foreground w-6 text-right flex-shrink-0",children:[m+1,"."]}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("span",{className:"text-primary font-medium",children:h.functionName}),h.fileName&&o.jsxs("div",{className:"text-muted-foreground mt-0.5 break-all",children:[h.fileName,h.lineNumber&&o.jsxs("span",{className:"text-yellow-600 dark:text-yellow-400",children:[":",h.lineNumber,":",h.columnNumber]})]})]})]})},m))})})})]}),e?.componentStack&&o.jsxs(Pz,{open:s,onOpenChange:i,children:[o.jsx(zz,{asChild:!0,children:o.jsxs(de,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[o.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[o.jsx(Wa,{className:"h-4 w-4"}),"Component Stack"]}),s?o.jsx(P0,{className:"h-4 w-4"}):o.jsx(nd,{className:"h-4 w-4"})]})}),o.jsx(Iz,{children:o.jsx(gn,{className:"h-[200px] rounded-md border bg-muted/30",children:o.jsx("pre",{className:"p-3 font-mono text-xs whitespace-pre-wrap text-muted-foreground",children:e.componentStack})})})]}),o.jsx(de,{variant:"outline",size:"sm",onClick:d,className:"w-full",children:a?o.jsxs(o.Fragment,{children:[o.jsx(Ro,{className:"mr-2 h-4 w-4 text-green-500"}),"已复制到剪贴板"]}):o.jsxs(o.Fragment,{children:[o.jsx(Mv,{className:"mr-2 h-4 w-4"}),"复制错误信息"]})})]})}function zY({error:t,errorInfo:e}){const n=()=>{window.location.href="/"},r=()=>{window.location.reload()};return o.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background p-4",children:o.jsxs(qt,{className:"w-full max-w-2xl shadow-lg",children:[o.jsxs(Fn,{className:"text-center pb-2",children:[o.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30 mb-4",children:o.jsx(Wa,{className:"h-8 w-8 text-red-600 dark:text-red-400"})}),o.jsx(qn,{className:"text-2xl font-bold",children:"页面出现了问题"}),o.jsx(ts,{className:"text-base mt-2",children:"应用程序遇到了意外错误。您可以尝试刷新页面或返回首页。"})]}),o.jsxs(Gn,{className:"space-y-4",children:[o.jsx(rDe,{error:t,errorInfo:e}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 pt-2",children:[o.jsxs(de,{onClick:r,className:"flex-1",children:[o.jsx(Ps,{className:"mr-2 h-4 w-4"}),"刷新页面"]}),o.jsxs(de,{onClick:n,variant:"outline",className:"flex-1",children:[o.jsx(D0,{className:"mr-2 h-4 w-4"}),"返回首页"]})]}),o.jsx("p",{className:"text-xs text-center text-muted-foreground pt-2",children:"如果问题持续存在,请将错误信息复制并反馈给开发者"})]})]})})}class sDe extends b.Component{constructor(e){super(e),this.state={hasError:!1,error:null,errorInfo:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,n){console.error("ErrorBoundary caught an error:",e,n),this.setState({errorInfo:n})}handleReset=()=>{this.setState({hasError:!1,error:null,errorInfo:null})};render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback:o.jsx(zY,{error:this.state.error,errorInfo:this.state.errorInfo}):this.props.children}}function IY({error:t}){return o.jsx(zY,{error:t,errorInfo:null})}const Cg=yJ({component:()=>o.jsxs(o.Fragment,{children:[o.jsx(Bz,{}),!1]}),beforeLoad:()=>{if(window.location.pathname==="/"&&!CB())throw wJ({to:"/auth"})}}),iDe=ms({getParentRoute:()=>Cg,path:"/auth",component:die}),aDe=ms({getParentRoute:()=>Cg,path:"/setup",component:Die}),Xs=ms({getParentRoute:()=>Cg,id:"protected",component:()=>o.jsx(KRe,{children:o.jsx(Bz,{})}),errorComponent:({error:t})=>o.jsx(IY,{error:t})}),oDe=ms({getParentRoute:()=>Xs,path:"/",component:kse}),lDe=ms({getParentRoute:()=>Xs,path:"/config/bot",component:M0e}),cDe=ms({getParentRoute:()=>Xs,path:"/config/modelProvider",component:Zxe}),uDe=ms({getParentRoute:()=>Xs,path:"/config/model",component:Hve}),dDe=ms({getParentRoute:()=>Xs,path:"/config/adapter",component:Vve}),hDe=ms({getParentRoute:()=>Xs,path:"/resource/emoji",component:pOe}),fDe=ms({getParentRoute:()=>Xs,path:"/resource/expression",component:NOe}),mDe=ms({getParentRoute:()=>Xs,path:"/resource/person",component:IOe}),pDe=ms({getParentRoute:()=>Xs,path:"/resource/knowledge-graph",component:CTe}),gDe=ms({getParentRoute:()=>Xs,path:"/logs",component:vAe}),xDe=ms({getParentRoute:()=>Xs,path:"/chat",component:eMe}),vDe=ms({getParentRoute:()=>Xs,path:"/plugins",component:IAe}),yDe=ms({getParentRoute:()=>Xs,path:"/plugin-config",component:LAe}),bDe=ms({getParentRoute:()=>Xs,path:"/plugin-mirrors",component:BAe}),wDe=ms({getParentRoute:()=>Xs,path:"/settings",component:rie}),SDe=ms({getParentRoute:()=>Cg,path:"*",component:_B}),kDe=Cg.addChildren([iDe,aDe,Xs.addChildren([oDe,lDe,cDe,uDe,dDe,hDe,fDe,mDe,pDe,vDe,yDe,bDe,gDe,xDe,wDe]),SDe]),ODe=bJ({routeTree:kDe,defaultNotFoundComponent:_B,defaultErrorComponent:({error:t})=>o.jsx(IY,{error:t})});function jDe({children:t,defaultTheme:e="system",storageKey:n="ui-theme",...r}){const[s,i]=b.useState(()=>localStorage.getItem(n)||e);b.useEffect(()=>{const l=window.document.documentElement;if(l.classList.remove("light","dark"),s==="system"){const c=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";l.classList.add(c);return}l.classList.add(s)},[s]),b.useEffect(()=>{const l=localStorage.getItem("accent-color");if(l){const c=document.documentElement,h={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[l];h&&(c.style.setProperty("--primary",h.hsl),h.gradient?(c.style.setProperty("--primary-gradient",h.gradient),c.classList.add("has-gradient")):(c.style.removeProperty("--primary-gradient"),c.classList.remove("has-gradient")))}},[]);const a={theme:s,setTheme:l=>{localStorage.setItem(n,l),i(l)}};return o.jsx(KL.Provider,{...r,value:a,children:t})}function NDe({children:t,defaultEnabled:e=!0,defaultWavesEnabled:n=!0,storageKey:r="enable-animations",wavesStorageKey:s="enable-waves-background"}){const[i,a]=b.useState(()=>{const h=localStorage.getItem(r);return h!==null?h==="true":e}),[l,c]=b.useState(()=>{const h=localStorage.getItem(s);return h!==null?h==="true":n});b.useEffect(()=>{const h=document.documentElement;i?h.classList.remove("no-animations"):h.classList.add("no-animations"),localStorage.setItem(r,String(i))},[i,r]),b.useEffect(()=>{localStorage.setItem(s,String(l))},[l,s]);const d={enableAnimations:i,setEnableAnimations:a,enableWavesBackground:l,setEnableWavesBackground:c};return o.jsx(ZL.Provider,{value:d,children:t})}var E7="ToastProvider",[_7,CDe,TDe]=By("Toast"),[LY]=Ra("Toast",[TDe]),[EDe,ow]=LY(E7),BY=t=>{const{__scopeToast:e,label:n="Notification",duration:r=5e3,swipeDirection:s="right",swipeThreshold:i=50,children:a}=t,[l,c]=b.useState(null),[d,h]=b.useState(0),m=b.useRef(!1),g=b.useRef(!1);return n.trim()||console.error(`Invalid prop \`label\` supplied to \`${E7}\`. Expected non-empty \`string\`.`),o.jsx(_7.Provider,{scope:e,children:o.jsx(EDe,{scope:e,label:n,duration:r,swipeDirection:s,swipeThreshold:i,toastCount:d,viewport:l,onViewportChange:c,onToastAdd:b.useCallback(()=>h(x=>x+1),[]),onToastRemove:b.useCallback(()=>h(x=>x-1),[]),isFocusedToastEscapeKeyDownRef:m,isClosePausedRef:g,children:a})})};BY.displayName=E7;var FY="ToastViewport",_De=["F8"],hj="toast.viewportPause",fj="toast.viewportResume",qY=b.forwardRef((t,e)=>{const{__scopeToast:n,hotkey:r=_De,label:s="Notifications ({hotkey})",...i}=t,a=ow(FY,n),l=CDe(n),c=b.useRef(null),d=b.useRef(null),h=b.useRef(null),m=b.useRef(null),g=Yn(e,m,a.onViewportChange),x=r.join("+").replace(/Key/g,"").replace(/Digit/g,""),y=a.toastCount>0;b.useEffect(()=>{const S=k=>{r.length!==0&&r.every(N=>k[N]||k.code===N)&&m.current?.focus()};return document.addEventListener("keydown",S),()=>document.removeEventListener("keydown",S)},[r]),b.useEffect(()=>{const S=c.current,k=m.current;if(y&&S&&k){const j=()=>{if(!a.isClosePausedRef.current){const _=new CustomEvent(hj);k.dispatchEvent(_),a.isClosePausedRef.current=!0}},N=()=>{if(a.isClosePausedRef.current){const _=new CustomEvent(fj);k.dispatchEvent(_),a.isClosePausedRef.current=!1}},T=_=>{!S.contains(_.relatedTarget)&&N()},E=()=>{S.contains(document.activeElement)||N()};return S.addEventListener("focusin",j),S.addEventListener("focusout",T),S.addEventListener("pointermove",j),S.addEventListener("pointerleave",E),window.addEventListener("blur",j),window.addEventListener("focus",N),()=>{S.removeEventListener("focusin",j),S.removeEventListener("focusout",T),S.removeEventListener("pointermove",j),S.removeEventListener("pointerleave",E),window.removeEventListener("blur",j),window.removeEventListener("focus",N)}}},[y,a.isClosePausedRef]);const w=b.useCallback(({tabbingDirection:S})=>{const j=l().map(N=>{const T=N.ref.current,E=[T,...HDe(T)];return S==="forwards"?E:E.reverse()});return(S==="forwards"?j.reverse():j).flat()},[l]);return b.useEffect(()=>{const S=m.current;if(S){const k=j=>{const N=j.altKey||j.ctrlKey||j.metaKey;if(j.key==="Tab"&&!N){const E=document.activeElement,_=j.shiftKey;if(j.target===S&&_){d.current?.focus();return}const P=w({tabbingDirection:_?"backwards":"forwards"}),B=P.findIndex($=>$===E);J3(P.slice(B+1))?j.preventDefault():_?d.current?.focus():h.current?.focus()}};return S.addEventListener("keydown",k),()=>S.removeEventListener("keydown",k)}},[l,w]),o.jsxs(Pee,{ref:c,role:"region","aria-label":s.replace("{hotkey}",x),tabIndex:-1,style:{pointerEvents:y?void 0:"none"},children:[y&&o.jsx(mj,{ref:d,onFocusFromOutsideViewport:()=>{const S=w({tabbingDirection:"forwards"});J3(S)}}),o.jsx(_7.Slot,{scope:n,children:o.jsx(xn.ol,{tabIndex:-1,...i,ref:g})}),y&&o.jsx(mj,{ref:h,onFocusFromOutsideViewport:()=>{const S=w({tabbingDirection:"backwards"});J3(S)}})]})});qY.displayName=FY;var $Y="ToastFocusProxy",mj=b.forwardRef((t,e)=>{const{__scopeToast:n,onFocusFromOutsideViewport:r,...s}=t,i=ow($Y,n);return o.jsx(vI,{tabIndex:0,...s,ref:e,style:{position:"fixed"},onFocus:a=>{const l=a.relatedTarget;!i.viewport?.contains(l)&&r()}})});mj.displayName=$Y;var Tg="Toast",ADe="toast.swipeStart",MDe="toast.swipeMove",RDe="toast.swipeCancel",DDe="toast.swipeEnd",HY=b.forwardRef((t,e)=>{const{forceMount:n,open:r,defaultOpen:s,onOpenChange:i,...a}=t,[l,c]=Xl({prop:r,defaultProp:s??!0,onChange:i,caller:Tg});return o.jsx(ii,{present:n||l,children:o.jsx(IDe,{open:l,...a,ref:e,onClose:()=>c(!1),onPause:Rs(t.onPause),onResume:Rs(t.onResume),onSwipeStart:nt(t.onSwipeStart,d=>{d.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:nt(t.onSwipeMove,d=>{const{x:h,y:m}=d.detail.delta;d.currentTarget.setAttribute("data-swipe","move"),d.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${h}px`),d.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${m}px`)}),onSwipeCancel:nt(t.onSwipeCancel,d=>{d.currentTarget.setAttribute("data-swipe","cancel"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),d.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),d.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:nt(t.onSwipeEnd,d=>{const{x:h,y:m}=d.detail.delta;d.currentTarget.setAttribute("data-swipe","end"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),d.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${h}px`),d.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${m}px`),c(!1)})})})});HY.displayName=Tg;var[PDe,zDe]=LY(Tg,{onClose(){}}),IDe=b.forwardRef((t,e)=>{const{__scopeToast:n,type:r="foreground",duration:s,open:i,onClose:a,onEscapeKeyDown:l,onPause:c,onResume:d,onSwipeStart:h,onSwipeMove:m,onSwipeCancel:g,onSwipeEnd:x,...y}=t,w=ow(Tg,n),[S,k]=b.useState(null),j=Yn(e,z=>k(z)),N=b.useRef(null),T=b.useRef(null),E=s||w.duration,_=b.useRef(0),A=b.useRef(E),L=b.useRef(0),{onToastAdd:P,onToastRemove:B}=w,$=Rs(()=>{S?.contains(document.activeElement)&&w.viewport?.focus(),a()}),U=b.useCallback(z=>{!z||z===1/0||(window.clearTimeout(L.current),_.current=new Date().getTime(),L.current=window.setTimeout($,z))},[$]);b.useEffect(()=>{const z=w.viewport;if(z){const Q=()=>{U(A.current),d?.()},F=()=>{const Y=new Date().getTime()-_.current;A.current=A.current-Y,window.clearTimeout(L.current),c?.()};return z.addEventListener(hj,F),z.addEventListener(fj,Q),()=>{z.removeEventListener(hj,F),z.removeEventListener(fj,Q)}}},[w.viewport,E,c,d,U]),b.useEffect(()=>{i&&!w.isClosePausedRef.current&&U(E)},[i,E,w.isClosePausedRef,U]),b.useEffect(()=>(P(),()=>B()),[P,B]);const te=b.useMemo(()=>S?YY(S):null,[S]);return w.viewport?o.jsxs(o.Fragment,{children:[te&&o.jsx(LDe,{__scopeToast:n,role:"status","aria-live":r==="foreground"?"assertive":"polite",children:te}),o.jsx(PDe,{scope:n,onClose:$,children:pa.createPortal(o.jsx(_7.ItemSlot,{scope:n,children:o.jsx(zee,{asChild:!0,onEscapeKeyDown:nt(l,()=>{w.isFocusedToastEscapeKeyDownRef.current||$(),w.isFocusedToastEscapeKeyDownRef.current=!1}),children:o.jsx(xn.li,{tabIndex:0,"data-state":i?"open":"closed","data-swipe-direction":w.swipeDirection,...y,ref:j,style:{userSelect:"none",touchAction:"none",...t.style},onKeyDown:nt(t.onKeyDown,z=>{z.key==="Escape"&&(l?.(z.nativeEvent),z.nativeEvent.defaultPrevented||(w.isFocusedToastEscapeKeyDownRef.current=!0,$()))}),onPointerDown:nt(t.onPointerDown,z=>{z.button===0&&(N.current={x:z.clientX,y:z.clientY})}),onPointerMove:nt(t.onPointerMove,z=>{if(!N.current)return;const Q=z.clientX-N.current.x,F=z.clientY-N.current.y,Y=!!T.current,J=["left","right"].includes(w.swipeDirection),X=["left","up"].includes(w.swipeDirection)?Math.min:Math.max,R=J?X(0,Q):0,ie=J?0:X(0,F),G=z.pointerType==="touch"?10:2,I={x:R,y:ie},V={originalEvent:z,delta:I};Y?(T.current=I,Z1(MDe,m,V,{discrete:!1})):Lz(I,w.swipeDirection,G)?(T.current=I,Z1(ADe,h,V,{discrete:!1}),z.target.setPointerCapture(z.pointerId)):(Math.abs(Q)>G||Math.abs(F)>G)&&(N.current=null)}),onPointerUp:nt(t.onPointerUp,z=>{const Q=T.current,F=z.target;if(F.hasPointerCapture(z.pointerId)&&F.releasePointerCapture(z.pointerId),T.current=null,N.current=null,Q){const Y=z.currentTarget,J={originalEvent:z,delta:Q};Lz(Q,w.swipeDirection,w.swipeThreshold)?Z1(DDe,x,J,{discrete:!0}):Z1(RDe,g,J,{discrete:!0}),Y.addEventListener("click",X=>X.preventDefault(),{once:!0})}})})})}),w.viewport)})]}):null}),LDe=t=>{const{__scopeToast:e,children:n,...r}=t,s=ow(Tg,e),[i,a]=b.useState(!1),[l,c]=b.useState(!1);return qDe(()=>a(!0)),b.useEffect(()=>{const d=window.setTimeout(()=>c(!0),1e3);return()=>window.clearTimeout(d)},[]),l?null:o.jsx(Qy,{asChild:!0,children:o.jsx(vI,{...r,children:i&&o.jsxs(o.Fragment,{children:[s.label," ",n]})})})},BDe="ToastTitle",QY=b.forwardRef((t,e)=>{const{__scopeToast:n,...r}=t;return o.jsx(xn.div,{...r,ref:e})});QY.displayName=BDe;var FDe="ToastDescription",VY=b.forwardRef((t,e)=>{const{__scopeToast:n,...r}=t;return o.jsx(xn.div,{...r,ref:e})});VY.displayName=FDe;var UY="ToastAction",WY=b.forwardRef((t,e)=>{const{altText:n,...r}=t;return n.trim()?o.jsx(XY,{altText:n,asChild:!0,children:o.jsx(A7,{...r,ref:e})}):(console.error(`Invalid prop \`altText\` supplied to \`${UY}\`. Expected non-empty \`string\`.`),null)});WY.displayName=UY;var GY="ToastClose",A7=b.forwardRef((t,e)=>{const{__scopeToast:n,...r}=t,s=zDe(GY,n);return o.jsx(XY,{asChild:!0,children:o.jsx(xn.button,{type:"button",...r,ref:e,onClick:nt(t.onClick,s.onClose)})})});A7.displayName=GY;var XY=b.forwardRef((t,e)=>{const{__scopeToast:n,altText:r,...s}=t;return o.jsx(xn.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":r||void 0,...s,ref:e})});function YY(t){const e=[];return Array.from(t.childNodes).forEach(r=>{if(r.nodeType===r.TEXT_NODE&&r.textContent&&e.push(r.textContent),$De(r)){const s=r.ariaHidden||r.hidden||r.style.display==="none",i=r.dataset.radixToastAnnounceExclude==="";if(!s)if(i){const a=r.dataset.radixToastAnnounceAlt;a&&e.push(a)}else e.push(...YY(r))}}),e}function Z1(t,e,n,{discrete:r}){const s=n.originalEvent.currentTarget,i=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:n});e&&s.addEventListener(t,e,{once:!0}),r?xI(s,i):s.dispatchEvent(i)}var Lz=(t,e,n=0)=>{const r=Math.abs(t.x),s=Math.abs(t.y),i=r>s;return e==="left"||e==="right"?i&&r>n:!i&&s>n};function qDe(t=()=>{}){const e=Rs(t);Uh(()=>{let n=0,r=0;return n=window.requestAnimationFrame(()=>r=window.requestAnimationFrame(e)),()=>{window.cancelAnimationFrame(n),window.cancelAnimationFrame(r)}},[e])}function $De(t){return t.nodeType===t.ELEMENT_NODE}function HDe(t){const e=[],n=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const s=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||s?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)e.push(n.currentNode);return e}function J3(t){const e=document.activeElement;return t.some(n=>n===e?!0:(n.focus(),document.activeElement!==e))}var QDe=BY,KY=qY,ZY=HY,JY=QY,eK=VY,tK=WY,nK=A7;const VDe=QDe,rK=b.forwardRef(({className:t,...e},n)=>o.jsx(KY,{ref:n,className:xe("fixed bottom-0 right-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:max-w-[420px] gap-2",t),...e}));rK.displayName=KY.displayName;const UDe=kf("group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-slide-in-from-right data-[state=open]:animate-fade-in data-[state=closed]:animate-slide-out-to-right data-[state=closed]:animate-fade-out data-[swipe=end]:animate-slide-out-to-right",{variants:{variant:{default:"border bg-primary/5 text-foreground backdrop-blur-sm",destructive:"destructive group border-destructive bg-destructive/10 text-destructive-foreground backdrop-blur-sm"}},defaultVariants:{variant:"default"}}),sK=b.forwardRef(({className:t,variant:e,...n},r)=>o.jsx(ZY,{ref:r,className:xe(UDe({variant:e}),t),...n}));sK.displayName=ZY.displayName;const WDe=b.forwardRef(({className:t,...e},n)=>o.jsx(tK,{ref:n,className:xe("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",t),...e}));WDe.displayName=tK.displayName;const iK=b.forwardRef(({className:t,...e},n)=>o.jsx(nK,{ref:n,className:xe("absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",t),"toast-close":"",...e,children:o.jsx(_p,{className:"h-4 w-4"})}));iK.displayName=nK.displayName;const aK=b.forwardRef(({className:t,...e},n)=>o.jsx(JY,{ref:n,className:xe("text-sm font-semibold [&+div]:text-xs",t),...e}));aK.displayName=JY.displayName;const oK=b.forwardRef(({className:t,...e},n)=>o.jsx(eK,{ref:n,className:xe("text-sm opacity-90",t),...e}));oK.displayName=eK.displayName;function GDe(){const{toasts:t}=as();return o.jsxs(VDe,{children:[t.map(function({id:e,title:n,description:r,action:s,...i}){return o.jsxs(sK,{...i,children:[o.jsxs("div",{className:"grid gap-1",children:[n&&o.jsx(aK,{children:n}),r&&o.jsx(oK,{children:r})]}),s,o.jsx(iK,{})]},e)}),o.jsx(rK,{})]})}yte.createRoot(document.getElementById("root")).render(o.jsx(b.StrictMode,{children:o.jsx(sDe,{children:o.jsx(jDe,{defaultTheme:"system",children:o.jsx(NDe,{children:o.jsxs(Spe,{children:[o.jsx(SJ,{router:ODe}),o.jsx(Yxe,{}),o.jsx(GDe,{})]})})})})})); diff --git a/webui/dist/assets/index-Rqzi5c1P.css b/webui/dist/assets/index-Rqzi5c1P.css new file mode 100644 index 00000000..fe11943e --- /dev/null +++ b/webui/dist/assets/index-Rqzi5c1P.css @@ -0,0 +1 @@ +*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 0 0% 100%;--foreground: 222.2 84% 4.9%;--card: 0 0% 100%;--card-foreground: 222.2 84% 4.9%;--popover: 0 0% 100%;--popover-foreground: 222.2 84% 4.9%;--primary: 221.2 83.2% 53.3%;--primary-foreground: 210 40% 98%;--primary-gradient: none;--secondary: 210 40% 96.1%;--secondary-foreground: 222.2 47.4% 11.2%;--muted: 210 40% 96.1%;--muted-foreground: 215.4 16.3% 46.9%;--accent: 210 40% 96.1%;--accent-foreground: 222.2 47.4% 11.2%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 210 40% 98%;--border: 214.3 31.8% 91.4%;--input: 214.3 31.8% 91.4%;--ring: 221.2 83.2% 53.3%;--radius: .5rem;--chart-1: 221.2 83.2% 53.3%;--chart-2: 160 60% 45%;--chart-3: 30 80% 55%;--chart-4: 280 65% 60%;--chart-5: 340 75% 55%}.dark{--background: 222.2 84% 4.9%;--foreground: 210 40% 98%;--card: 222.2 84% 4.9%;--card-foreground: 210 40% 98%;--popover: 222.2 84% 4.9%;--popover-foreground: 210 40% 98%;--primary: 217.2 91.2% 59.8%;--primary-foreground: 222.2 47.4% 11.2%;--primary-gradient: none;--secondary: 217.2 32.6% 17.5%;--secondary-foreground: 210 40% 98%;--muted: 217.2 32.6% 17.5%;--muted-foreground: 215 20.2% 65.1%;--accent: 217.2 32.6% 17.5%;--accent-foreground: 210 40% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 210 40% 98%;--border: 217.2 32.6% 17.5%;--input: 217.2 32.6% 17.5%;--ring: 224.3 76.3% 48%;--chart-1: 217.2 91.2% 59.8%;--chart-2: 160 60% 50%;--chart-3: 30 80% 60%;--chart-4: 280 65% 65%;--chart-5: 340 75% 60%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-1\/4{bottom:25%}.bottom-4{bottom:1rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.left-1\/4{left:25%}.left-2{left:.5rem}.left-2\.5{left:.625rem}.left-3{left:.75rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-1\.5{right:.375rem}.right-1\/4{right:25%}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-1\/4{top:25%}.top-2{top:.5rem}.top-2\.5{top:.625rem}.top-3{top:.75rem}.top-4{top:1rem}.top-\[50\%\]{top:50%}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.order-1{order:1}.order-2{order:2}.col-span-2{grid-column:span 2 / span 2}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-mt-2{margin-top:-.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-auto{aspect-ratio:auto}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:16 / 9}.size-4{width:1rem;height:1rem}.size-\[--cell-size\]{width:var(--cell-size);height:var(--cell-size)}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[--cell-size\]{height:var(--cell-size)}.h-\[1\.25rem\]{height:1.25rem}.h-\[1px\]{height:1px}.h-\[200px\]{height:200px}.h-\[250px\]{height:250px}.h-\[280px\]{height:280px}.h-\[300px\]{height:300px}.h-\[400px\]{height:400px}.h-\[calc\(100vh-200px\)\]{height:calc(100vh - 200px)}.h-\[calc\(100vh-240px\)\]{height:calc(100vh - 240px)}.h-\[calc\(100vh-260px\)\]{height:calc(100vh - 260px)}.h-\[calc\(100vh-4rem\)\]{height:calc(100vh - 4rem)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\[--radix-context-menu-content-available-height\]{max-height:var(--radix-context-menu-content-available-height)}.max-h-\[--radix-select-content-available-height\]{max-height:var(--radix-select-content-available-height)}.max-h-\[300px\]{max-height:300px}.max-h-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[calc\(90vh-120px\)\]{max-height:calc(90vh - 120px)}.max-h-\[calc\(90vh-8rem\)\]{max-height:calc(90vh - 8rem)}.max-h-none{max-height:none}.max-h-screen{max-height:100vh}.min-h-0{min-height:0px}.min-h-10{min-height:2.5rem}.min-h-\[100px\]{min-height:100px}.min-h-\[300px\]{min-height:300px}.min-h-\[60px\]{min-height:60px}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[--cell-size\]{width:var(--cell-size)}.w-\[100px\]{width:100px}.w-\[120px\]{width:120px}.w-\[130px\]{width:130px}.w-\[1px\]{width:1px}.w-\[65px\]{width:65px}.w-\[95vw\]{width:95vw}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[--cell-size\]{min-width:var(--cell-size)}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[80px\]{min-width:80px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-\[150px\]{max-width:150px}.max-w-\[200px\]{max-width:200px}.max-w-\[60px\]{max-width:60px}.max-w-\[75\%\]{max-width:75%}.max-w-\[90\%\]{max-width:90%}.max-w-\[95vw\]{max-width:95vw}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\[--radix-context-menu-content-transform-origin\]{transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\[--radix-popover-content-transform-origin\]{transform-origin:var(--radix-popover-content-transform-origin)}.origin-\[--radix-select-content-transform-origin\]{transform-origin:var(--radix-select-content-transform-origin)}.origin-\[--radix-tooltip-content-transform-origin\]{transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.rounded-tr-sm{border-top-right-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-\[1\.5px\]{border-width:1.5px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[--color-border\]{border-color:var(--color-border)}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-500\/50{border-color:#f59e0b80}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-700{--tw-border-opacity: 1;border-color:rgb(29 78 216 / var(--tw-border-opacity, 1))}.border-border{border-color:hsl(var(--border))}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-current{border-color:currentColor}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-green-700{--tw-border-opacity: 1;border-color:rgb(21 128 61 / var(--tw-border-opacity, 1))}.border-input{border-color:hsl(var(--input))}.border-muted{border-color:hsl(var(--muted))}.border-muted-foreground\/30{border-color:hsl(var(--muted-foreground) / .3)}.border-muted-foreground\/50{border-color:hsl(var(--muted-foreground) / .5)}.border-orange-600{--tw-border-opacity: 1;border-color:rgb(234 88 12 / var(--tw-border-opacity, 1))}.border-primary{border-color:hsl(var(--primary))}.border-primary\/20{border-color:hsl(var(--primary) / .2)}.border-primary\/30{border-color:hsl(var(--primary) / .3)}.border-primary\/50{border-color:hsl(var(--primary) / .5)}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-red-500\/50{border-color:#ef444480}.border-transparent{border-color:transparent}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-yellow-500\/50{border-color:#eab30880}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\[--color-bg\]{background-color:var(--color-bg)}.bg-accent{background-color:hsl(var(--accent))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-background{background-color:hsl(var(--background))}.bg-background\/50{background-color:hsl(var(--background) / .5)}.bg-background\/80{background-color:hsl(var(--background) / .8)}.bg-background\/95{background-color:hsl(var(--background) / .95)}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-black\/50{background-color:#00000080}.bg-black\/80{background-color:#000c}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-900\/20{background-color:#1e3a8a33}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-card\/80{background-color:hsl(var(--card) / .8)}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-800\/20{background-color:#1f293733}.bg-gray-800\/30{background-color:#1f29374d}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground\/50{background-color:hsl(var(--muted-foreground) / .5)}.bg-muted\/20{background-color:hsl(var(--muted) / .2)}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-orange-600{--tw-bg-opacity: 1;background-color:rgb(234 88 12 / var(--tw-bg-opacity, 1))}.bg-pink-500{--tw-bg-opacity: 1;background-color:rgb(236 72 153 / var(--tw-bg-opacity, 1))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/20{background-color:hsl(var(--primary) / .2)}.bg-primary\/5{background-color:hsl(var(--primary) / .05)}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(168 85 247 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-red-900\/20{background-color:#7f1d1d33}.bg-red-900\/30{background-color:#7f1d1d4d}.bg-secondary{background-color:hsl(var(--secondary))}.bg-secondary\/5{background-color:hsl(var(--secondary) / .05)}.bg-slate-200{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity, 1))}.bg-slate-300{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity, 1))}.bg-slate-400{--tw-bg-opacity: 1;background-color:rgb(148 163 184 / var(--tw-bg-opacity, 1))}.bg-slate-700{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-200{--tw-bg-opacity: 1;background-color:rgb(254 240 138 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-yellow-500\/10{background-color:#eab3081a}.bg-yellow-500\/5{background-color:#eab3080d}.bg-yellow-900\/20{background-color:#713f1233}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-blue-500{--tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-500{--tw-gradient-from: #22c55e var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 197 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-500{--tw-gradient-from: #f97316 var(--tw-gradient-from-position);--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-primary\/5{--tw-gradient-from: hsl(var(--primary) / .05) var(--tw-gradient-from-position);--tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-500{--tw-gradient-from: #a855f7 var(--tw-gradient-from-position);--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-500{--tw-gradient-from: #ef4444 var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 68 68 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-200{--tw-gradient-from: #e2e8f0 var(--tw-gradient-from-position);--tw-gradient-to: rgb(226 232 240 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-300{--tw-gradient-from: #cbd5e1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(203 213 225 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-400{--tw-gradient-from: #94a3b8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(148 163 184 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-background{--tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), hsl(var(--background)) var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-blue-600{--tw-gradient-to: #2563eb var(--tw-gradient-to-position)}.to-cyan-500{--tw-gradient-to: #06b6d4 var(--tw-gradient-to-position)}.to-emerald-500{--tw-gradient-to: #10b981 var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to: #16a34a var(--tw-gradient-to-position)}.to-orange-500{--tw-gradient-to: #f97316 var(--tw-gradient-to-position)}.to-pink-500{--tw-gradient-to: #ec4899 var(--tw-gradient-to-position)}.to-primary\/10{--tw-gradient-to: hsl(var(--primary) / .1) var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to: #a855f7 var(--tw-gradient-to-position)}.to-secondary\/5{--tw-gradient-to: hsl(var(--secondary) / .05) var(--tw-gradient-to-position)}.to-slate-700{--tw-gradient-to: #334155 var(--tw-gradient-to-position)}.to-slate-800{--tw-gradient-to: #1e293b var(--tw-gradient-to-position)}.to-slate-900{--tw-gradient-to: #0f172a var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.fill-yellow-400{fill:#facc15}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[1px\]{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[--cell-size\]{padding-left:var(--cell-size);padding-right:var(--cell-size)}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pl-10{padding-left:2.5rem}.pl-11{padding-left:2.75rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-1{padding-right:.25rem}.pr-10{padding-right:2.5rem}.pr-16{padding-right:4rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.text-\[150px\]{font-size:150px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/50{color:hsl(var(--foreground) / .5)}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/50{color:hsl(var(--muted-foreground) / .5)}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-800{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.text-orange-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary\/10{color:hsl(var(--primary) / .1)}.text-primary\/30{color:hsl(var(--primary) / .3)}.text-primary\/60{color:hsl(var(--primary) / .6)}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.text-yellow-900{--tw-text-opacity: 1;color:rgb(113 63 18 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-primary{--tw-ring-color: hsl(var(--primary))}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur-3xl{--tw-blur: blur(64px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.text-primary-gradient{color:hsl(var(--primary))}.has-gradient .text-primary-gradient{background:var(--primary-gradient);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.\[--cell-size\:2rem\]{--cell-size: 2rem}.no-animations *,.no-animations *:before,.no-animations *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.no-animations *:hover{transition-duration:.01ms!important}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:999}.__floater{z-index:99999!important;pointer-events:auto!important}.react-joyride__overlay,.react-joyride__spotlight{z-index:99998!important}.react-joyride__tooltip{pointer-events:auto!important}#tour-portal-container *{pointer-events:auto}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:border-primary\/50:hover{border-color:hsl(var(--primary) / .5)}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent) / .5)}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-orange-700:hover{--tw-bg-opacity: 1;background-color:rgb(194 65 12 / var(--tw-bg-opacity, 1))}.hover\:bg-primary\/10:hover{background-color:hsl(var(--primary) / .1)}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-secondary:hover{background-color:hsl(var(--secondary))}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-secondary\/90:hover{background-color:hsl(var(--secondary) / .9)}.hover\:bg-transparent:hover{background-color:transparent}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-green-700:hover{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.hover\:text-orange-700:hover{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.hover\:text-primary\/80:hover{color:hsl(var(--primary) / .8)}.hover\:text-red-700:hover{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.hover\:text-yellow-300:hover{--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.hover\:text-yellow-800:hover{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:ring-2:hover{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.hover\:ring-primary:hover{--tw-ring-color: hsl(var(--primary))}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-gray-100:focus{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-red-500:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.active\:cursor-grabbing:active{cursor:grabbing}.active\:border-primary\/70:active{border-color:hsl(var(--primary) / .7)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group[open] .group-open\:rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:opacity-100{opacity:1}.group.destructive .group-\[\.destructive\]\:border-muted\/40{border-color:hsl(var(--muted) / .4)}.group.destructive .group-\[\.destructive\]\:text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:hover\:text-red-50:hover{--tw-text-opacity: 1;color:rgb(254 242 242 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-red-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(248 113 113 / var(--tw-ring-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-offset-red-600:focus{--tw-ring-offset-color: #dc2626}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-selected\:text-muted-foreground[aria-selected=true]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true],.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked],.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x: var(--radix-toast-swipe-end-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x: var(--radix-toast-swipe-move-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes fade-out{0%{opacity:1}to{opacity:0}}.data-\[state\=closed\]\:animate-fade-out[data-state=closed]{animation:fade-out .15s ease-in}.data-\[state\=closed\]\:animate-slide-out-to-right[data-state=closed]{animation:slide-out-to-right .2s ease-in}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.data-\[state\=open\]\:animate-fade-in[data-state=open]{animation:fade-in .2s ease-out}@keyframes slide-in-from-right{0%{transform:translate(100%)}to{transform:translate(0)}}.data-\[state\=open\]\:animate-slide-in-from-right[data-state=open]{animation:slide-in-from-right .3s ease-out}@keyframes slide-out-to-right{0%{transform:translate(0)}to{transform:translate(100%)}}.data-\[swipe\=end\]\:animate-slide-out-to-right[data-swipe=end]{animation:slide-out-to-right .2s ease-in}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) - 2px)}.data-\[selected\=true\]\:rounded-none[data-selected=true]{border-radius:0}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:hsl(var(--primary))}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:hsl(var(--accent))}.data-\[range-start\=true\]\:bg-primary[data-range-start=true],.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:hsl(var(--primary))}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:hsl(var(--primary-foreground))}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:hsl(var(--accent-foreground))}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true],.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:hsl(var(--primary-foreground))}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:opacity-50[data-disabled=true],.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.data-\[state\=active\]\:duration-300[data-state=active]{transition-duration:.3s}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:relative{position:relative}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:z-10{z-index:10}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:border-ring{border-color:hsl(var(--ring))}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-\[3px\]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}@supports (backdrop-filter: var(--tw)){.supports-\[backdrop-filter\]\:bg-background\/60{background-color:hsl(var(--background) / .6)}}.dark\:border-amber-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(146 64 14 / var(--tw-border-opacity, 1))}.dark\:border-blue-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity, 1))}.dark\:border-blue-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 58 138 / var(--tw-border-opacity, 1))}.dark\:border-gray-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(17 24 39 / var(--tw-border-opacity, 1))}.dark\:border-green-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(22 101 52 / var(--tw-border-opacity, 1))}.dark\:border-yellow-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(113 63 18 / var(--tw-border-opacity, 1))}.dark\:bg-amber-950\/30:is(.dark *){background-color:#451a034d}.dark\:bg-blue-500\/20:is(.dark *){background-color:#3b82f633}.dark\:bg-blue-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 37 84 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950\/20:is(.dark *){background-color:#17255433}.dark\:bg-blue-950\/30:is(.dark *){background-color:#1725544d}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800\/30:is(.dark *){background-color:#1f29374d}.dark\:bg-gray-800\/50:is(.dark *){background-color:#1f293780}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(3 7 18 / var(--tw-bg-opacity, 1))}.dark\:bg-green-900\/30:is(.dark *){background-color:#14532d4d}.dark\:bg-green-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(5 46 22 / var(--tw-bg-opacity, 1))}.dark\:bg-orange-950\/20:is(.dark *){background-color:#43140733}.dark\:bg-red-500\/20:is(.dark *){background-color:#ef444433}.dark\:bg-red-600\/30:is(.dark *){background-color:#dc26264d}.dark\:bg-red-900\/30:is(.dark *){background-color:#7f1d1d4d}.dark\:bg-red-950\/50:is(.dark *){background-color:#450a0a80}.dark\:bg-yellow-500\/20:is(.dark *){background-color:#eab30833}.dark\:bg-yellow-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1))}.dark\:bg-yellow-950\/30:is(.dark *){background-color:#4220064d}.dark\:text-amber-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 243 199 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-blue-100:is(.dark *){--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-200:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-cyan-500:is(.dark *){--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-orange-100:is(.dark *){--tw-text-opacity: 1;color:rgb(255 237 213 / var(--tw-text-opacity, 1))}.dark\:text-orange-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 215 170 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-red-500:is(.dark *){--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.dark\:text-yellow-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 249 195 / var(--tw-text-opacity, 1))}.dark\:text-yellow-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.dark\:text-yellow-400:is(.dark *){--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.dark\:text-yellow-500:is(.dark *){--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:hover\:text-yellow-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:focus\:bg-gray-800:focus:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}@media(min-width:640px){.sm\:right-2{right:.5rem}.sm\:right-3{right:.75rem}.sm\:top-2{top:.5rem}.sm\:top-3{top:.75rem}.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:mb-3{margin-bottom:.75rem}.sm\:mb-4{margin-bottom:1rem}.sm\:mb-6{margin-bottom:1.5rem}.sm\:ml-1{margin-left:.25rem}.sm\:mr-1{margin-right:.25rem}.sm\:mr-2{margin-right:.5rem}.sm\:mt-0{margin-top:0}.sm\:mt-2{margin-top:.5rem}.sm\:mt-3{margin-top:.75rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-12{height:3rem}.sm\:h-2{height:.5rem}.sm\:h-24{height:6rem}.sm\:h-3{height:.75rem}.sm\:h-4{height:1rem}.sm\:h-5{height:1.25rem}.sm\:h-8{height:2rem}.sm\:h-\[300px\]{height:300px}.sm\:h-\[400px\]{height:400px}.sm\:h-\[500px\]{height:500px}.sm\:h-\[calc\(100vh-280px\)\]{height:calc(100vh - 280px)}.sm\:w-10{width:2.5rem}.sm\:w-2{width:.5rem}.sm\:w-24{width:6rem}.sm\:w-3{width:.75rem}.sm\:w-4{width:1rem}.sm\:w-5{width:1.25rem}.sm\:w-8{width:2rem}.sm\:w-\[140px\]{width:140px}.sm\:w-\[160px\]{width:160px}.sm\:w-\[200px\]{width:200px}.sm\:w-\[500px\]{width:500px}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:min-w-\[120px\]{min-width:120px}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-\[420px\]{max-width:420px}.sm\:max-w-\[70\%\]{max-width:70%}.sm\:max-w-\[900px\]{max-width:900px}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:flex-1{flex:1 1 0%}.sm\:flex-none{flex:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-0{gap:0px}.sm\:gap-1{gap:.25rem}.sm\:gap-2{gap:.5rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:gap-6{gap:1.5rem}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.sm\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.sm\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.sm\:space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-\[200px\]{font-size:200px}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:768px){.md\:top-4{top:1rem}.md\:mb-4{margin-bottom:1rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-8{margin-bottom:2rem}.md\:mt-8{margin-top:2rem}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-16{height:4rem}.md\:h-4{height:1rem}.md\:h-5{height:1.25rem}.md\:h-8{height:2rem}.md\:h-96{height:24rem}.md\:h-\[500px\]{height:500px}.md\:min-h-\[400px\]{min-height:400px}.md\:w-16{width:4rem}.md\:w-4{width:1rem}.md\:w-5{width:1.25rem}.md\:w-8{width:2rem}.md\:w-96{width:24rem}.md\:max-w-none{max-width:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:gap-2{gap:.5rem}.md\:gap-3{gap:.75rem}.md\:gap-4{gap:1rem}.md\:gap-6{gap:1.5rem}.md\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.md\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.md\:whitespace-normal{white-space:normal}.md\:p-12{padding:3rem}.md\:p-4{padding:1rem}.md\:p-6{padding:1.5rem}.md\:p-8{padding:2rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:1024px){.lg\:invisible{visibility:hidden}.lg\:relative{position:relative}.lg\:z-0{z-index:0}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:mb-1{margin-bottom:.25rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-12{width:3rem}.lg\:w-16{width:4rem}.lg\:w-64{width:16rem}.lg\:w-8{width:2rem}.lg\:w-\[130px\]{width:130px}.lg\:w-\[160px\]{width:160px}.lg\:w-\[180px\]{width:180px}.lg\:w-\[200px\]{width:200px}.lg\:w-\[240px\]{width:240px}.lg\:w-\[75px\]{width:75px}.lg\:w-auto{width:auto}.lg\:w-full{width:100%}.lg\:max-w-0{max-width:0px}.lg\:flex-1{flex:1 1 0%}.lg\:flex-none{flex:none}.lg\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:justify-center{justify-content:center}.lg\:gap-0{gap:0px}.lg\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.lg\:overflow-hidden{overflow:hidden}.lg\:p-2{padding:.5rem}.lg\:p-6{padding:1.5rem}.lg\:px-0{padding-left:0;padding-right:0}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:pb-6{padding-bottom:1.5rem}.lg\:text-3xl{font-size:1.875rem;line-height:2.25rem}.lg\:opacity-0{opacity:0}}@media(min-width:1280px){.xl\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}}.\[\&\+div\]\:text-xs+div{font-size:.75rem;line-height:1rem}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>span\]\:text-xs>span{font-size:.75rem;line-height:1rem}.\[\&\>span\]\:opacity-70>span{opacity:.7}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y: -3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-4>svg{top:1rem}.\[\&\>svg\]\:size-3\.5>svg{width:.875rem;height:.875rem}.\[\&\>svg\]\:h-2\.5>svg{height:.625rem}.\[\&\>svg\]\:h-3>svg{height:.75rem}.\[\&\>svg\]\:w-2\.5>svg{width:.625rem}.\[\&\>svg\]\:w-3>svg{width:.75rem}.\[\&\>svg\]\:text-foreground>svg{color:hsl(var(--foreground))}.\[\&\>svg\]\:text-muted-foreground>svg{color:hsl(var(--muted-foreground))}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:1.75rem}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:hsl(var(--muted-foreground))}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:hsl(var(--border) / .5)}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:hsl(var(--border))}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-layer\]\:outline-none .recharts-layer{outline:2px solid transparent;outline-offset:2px}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector,.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:hsl(var(--muted))}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-sector\]\:outline-none .recharts-sector,.\[\&_\.recharts-surface\]\:outline-none .recharts-surface{outline:2px solid transparent;outline-offset:2px}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:1.25rem}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:invisible svg{visibility:hidden}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent,[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:transparent}@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(/assets/KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(/assets/KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(/assets/KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(/assets/KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(/assets/KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(/assets/KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.25"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:grab}.react-flow__node.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%} diff --git a/webui/dist/assets/router-SinpzM5S.js b/webui/dist/assets/router-DQNkr8RI.js similarity index 99% rename from webui/dist/assets/router-SinpzM5S.js rename to webui/dist/assets/router-DQNkr8RI.js index c8b8f8ad..70f3abb1 100644 --- a/webui/dist/assets/router-SinpzM5S.js +++ b/webui/dist/assets/router-DQNkr8RI.js @@ -1,2 +1,2 @@ import{r as po,a as ee,g as oe,b as mo}from"./react-vendor-Dtc2IqVY.js";function go(t,o){for(var e=0;es[n]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}var g=po(),R=ee();const rt=oe(R),hn=go({__proto__:null,default:rt},[R]),Yt=new WeakMap,yo=new WeakMap,bt={current:[]};let Nt=!1,mt=0;const pt=new Set,Pt=new Map;function Ue(t){for(const o of t){if(bt.current.includes(o))continue;bt.current.push(o),o.recompute();const e=yo.get(o);if(e)for(const s of e){const n=Yt.get(s);n?.length&&Ue(n)}}}function vo(t){const o={prevVal:t.prevState,currentVal:t.state};for(const e of t.listeners)e(o)}function So(t){const o={prevVal:t.prevState,currentVal:t.state};for(const e of t.listeners)e(o)}function Ve(t){if(mt>0&&!Pt.has(t)&&Pt.set(t,t.prevState),pt.add(t),!(mt>0)&&!Nt)try{for(Nt=!0;pt.size>0;){const o=Array.from(pt);pt.clear();for(const e of o){const s=Pt.get(e)??e.prevState;e.prevState=s,vo(e)}for(const e of o){const s=Yt.get(e);s&&(bt.current.push(e),Ue(s))}for(const e of o){const s=Yt.get(e);if(s)for(const n of s)So(n)}}}finally{Nt=!1,bt.current=[],Pt.clear()}}function gt(t){mt++;try{t()}finally{if(mt--,mt===0){const o=pt.values().next().value;o&&Ve(o)}}}function _o(t){return typeof t=="function"}class Ro{constructor(o,e){this.listeners=new Set,this.subscribe=s=>{var n,r;this.listeners.add(s);const i=(r=(n=this.options)==null?void 0:n.onSubscribe)==null?void 0:r.call(n,s,this);return()=>{this.listeners.delete(s),i?.()}},this.prevState=o,this.state=o,this.options=e}setState(o){var e,s,n;this.prevState=this.state,(e=this.options)!=null&&e.updateFn?this.state=this.options.updateFn(this.prevState)(o):_o(o)?this.state=o(this.prevState):this.state=o,(n=(s=this.options)==null?void 0:s.onUpdate)==null||n.call(s),Ve(this)}}const G="__TSR_index",Se="popstate",_e="beforeunload";function Po(t){let o=t.getLocation();const e=new Set,s=i=>{o=t.getLocation(),e.forEach(c=>c({location:o,action:i}))},n=i=>{t.notifyOnIndexChange??!0?s(i):o=t.getLocation()},r=async({task:i,navigateOpts:c,...a})=>{if(c?.ignoreBlocker??!1){i();return}const u=t.getBlockers?.()??[],h=a.type==="PUSH"||a.type==="REPLACE";if(typeof document<"u"&&u.length&&h)for(const f of u){const d=Et(a.path,a.state);if(await f.blockerFn({currentLocation:o,nextLocation:d,action:a.type})){t.onBlocked?.();return}}i()};return{get location(){return o},get length(){return t.getLength()},subscribers:e,subscribe:i=>(e.add(i),()=>{e.delete(i)}),push:(i,c,a)=>{const l=o.state[G];c=Re(l+1,c),r({task:()=>{t.pushState(i,c),s({type:"PUSH"})},navigateOpts:a,type:"PUSH",path:i,state:c})},replace:(i,c,a)=>{const l=o.state[G];c=Re(l,c),r({task:()=>{t.replaceState(i,c),s({type:"REPLACE"})},navigateOpts:a,type:"REPLACE",path:i,state:c})},go:(i,c)=>{r({task:()=>{t.go(i),n({type:"GO",index:i})},navigateOpts:c,type:"GO"})},back:i=>{r({task:()=>{t.back(i?.ignoreBlocker??!1),n({type:"BACK"})},navigateOpts:i,type:"BACK"})},forward:i=>{r({task:()=>{t.forward(i?.ignoreBlocker??!1),n({type:"FORWARD"})},navigateOpts:i,type:"FORWARD"})},canGoBack:()=>o.state[G]!==0,createHref:i=>t.createHref(i),block:i=>{if(!t.setBlockers)return()=>{};const c=t.getBlockers?.()??[];return t.setBlockers([...c,i]),()=>{const a=t.getBlockers?.()??[];t.setBlockers?.(a.filter(l=>l!==i))}},flush:()=>t.flush?.(),destroy:()=>t.destroy?.(),notify:s}}function Re(t,o){o||(o={});const e=se();return{...o,key:e,__TSR_key:e,[G]:t}}function wo(t){const o=typeof document<"u"?window:void 0,e=o.history.pushState,s=o.history.replaceState;let n=[];const r=()=>n,i=v=>n=v,c=(v=>v),a=(()=>Et(`${o.location.pathname}${o.location.search}${o.location.hash}`,o.history.state));if(!o.history.state?.__TSR_key&&!o.history.state?.key){const v=se();o.history.replaceState({[G]:0,key:v,__TSR_key:v},"")}let l=a(),u,h=!1,f=!1,d=!1,p=!1;const m=()=>l;let y,_;const x=()=>{y&&(S._ignoreSubscribers=!0,(y.isPush?o.history.pushState:o.history.replaceState)(y.state,"",y.href),S._ignoreSubscribers=!1,y=void 0,_=void 0,u=void 0)},P=(v,C,M)=>{const T=c(C);_||(u=l),l=Et(C,M),y={href:T,state:M,isPush:y?.isPush||v==="push"},_||(_=Promise.resolve().then(()=>x()))},L=v=>{l=a(),S.notify({type:v})},E=async()=>{if(f){f=!1;return}const v=a(),C=v.state[G]-l.state[G],M=C===1,T=C===-1,I=!M&&!T||h;h=!1;const Y=I?"GO":T?"BACK":"FORWARD",D=I?{type:"GO",index:C}:{type:T?"BACK":"FORWARD"};if(d)d=!1;else{const X=r();if(typeof document<"u"&&X.length){for(const fe of X)if(await fe.blockerFn({currentLocation:l,nextLocation:v,action:Y})){f=!0,o.history.go(1),S.notify(D);return}}}l=a(),S.notify(D)},w=v=>{if(p){p=!1;return}let C=!1;const M=r();if(typeof document<"u"&&M.length)for(const T of M){const I=T.enableBeforeUnload??!0;if(I===!0){C=!0;break}if(typeof I=="function"&&I()===!0){C=!0;break}}if(C)return v.preventDefault(),v.returnValue=""},S=Po({getLocation:m,getLength:()=>o.history.length,pushState:(v,C)=>P("push",v,C),replaceState:(v,C)=>P("replace",v,C),back:v=>(v&&(d=!0),p=!0,o.history.back()),forward:v=>{v&&(d=!0),p=!0,o.history.forward()},go:v=>{h=!0,o.history.go(v)},createHref:v=>c(v),flush:x,destroy:()=>{o.history.pushState=e,o.history.replaceState=s,o.removeEventListener(_e,w,{capture:!0}),o.removeEventListener(Se,E)},onBlocked:()=>{u&&l!==u&&(l=u)},getBlockers:r,setBlockers:i,notifyOnIndexChange:!1});return o.addEventListener(_e,w,{capture:!0}),o.addEventListener(Se,E),o.history.pushState=function(...v){const C=e.apply(o.history,v);return S._ignoreSubscribers||L("PUSH"),C},o.history.replaceState=function(...v){const C=s.apply(o.history,v);return S._ignoreSubscribers||L("REPLACE"),C},S}function Et(t,o){const e=t.indexOf("#"),s=t.indexOf("?"),n=se();return{href:t,pathname:t.substring(0,e>0?s>0?Math.min(e,s):e:s>0?s:t.length),hash:e>-1?t.substring(e):"",search:s>-1?t.slice(s,e===-1?void 0:e):"",state:o||{[G]:0,key:n,__TSR_key:n}}}function se(){return(Math.random()+1).toString(36).substring(7)}function Xt(t){return t[t.length-1]}function xo(t){return typeof t=="function"}function Q(t,o){return xo(t)?t(o):t}const Lo=Object.prototype.hasOwnProperty;function B(t,o){if(t===o)return t;const e=o,s=xe(t)&&xe(e);if(!s&&!(Tt(t)&&Tt(e)))return e;const n=s?t:Pe(t);if(!n)return e;const r=s?e:Pe(e);if(!r)return e;const i=n.length,c=r.length,a=s?new Array(c):{};let l=0;for(let u=0;u"u")return!0;const e=o.prototype;return!(!we(e)||!e.hasOwnProperty("isPrototypeOf"))}function we(t){return Object.prototype.toString.call(t)==="[object Object]"}function xe(t){return Array.isArray(t)&&t.length===Object.keys(t).length}function tt(t,o,e){if(t===o)return!0;if(typeof t!=typeof o)return!1;if(Array.isArray(t)&&Array.isArray(o)){if(t.length!==o.length)return!1;for(let s=0,n=t.length;sn||!tt(t[i],o[i],e)))return!1;return n===r}return!1}function it(t){let o,e;const s=new Promise((n,r)=>{o=n,e=r});return s.status="pending",s.resolve=n=>{s.status="resolved",s.value=n,o(n),t?.(n)},s.reject=n=>{s.status="rejected",e(n)},s}function q(t){return!!(t&&typeof t=="object"&&typeof t.then=="function")}const Co=Array.from(new Map([["%","%25"],["\\","%5C"]]).values());function Le(t,o=Co){function e(n,r,i=0){for(let c=i;c{try{return decodeURI(c)}catch{return c}})}}if(t===""||!/%[0-9A-Fa-f]{2}/g.test(t))return t;const s=t.replaceAll(/%[0-9a-f]{2}/g,n=>n.toUpperCase());return e(s,o)}var Mo="Invariant failed";function K(t,o){if(!t)throw new Error(Mo)}const U=0,ot=1,at=2,ct=3;function z(t){return ne(t.filter(o=>o!==void 0).join("/"))}function ne(t){return t.replace(/\/{2,}/g,"/")}function re(t){return t==="/"?t:t.replace(/^\/{1,}/,"")}function J(t){return t==="/"?t:t.replace(/\/{1,}$/,"")}function Ct(t){return J(re(t))}function It(t,o){return t?.endsWith("/")&&t!=="/"&&t!==`${o}/`?t.slice(0,-1):t}function bo(t,o,e){return It(t,e)===It(o,e)}function Eo(t){const{type:o,value:e}=t;if(o===U)return e;const{prefixSegment:s,suffixSegment:n}=t;if(o===ot){const r=e.substring(1);if(s&&n)return`${s}{$${r}}${n}`;if(s)return`${s}{$${r}}`;if(n)return`{$${r}}${n}`}if(o===ct){const r=e.substring(1);return s&&n?`${s}{-$${r}}${n}`:s?`${s}{-$${r}}`:n?`{-$${r}}${n}`:`{-$${r}}`}if(o===at){if(s&&n)return`${s}{$}${n}`;if(s)return`${s}{$}`;if(n)return`{$}${n}`}return e}function To({base:t,to:o,trailingSlash:e="never",parseCache:s}){let n=ut(t,s).slice();const r=ut(o,s);n.length>1&&Xt(n)?.value==="/"&&n.pop();for(let a=0,l=r.length;a1&&(Xt(n).value==="/"?e==="never"&&n.pop():e==="always"&&n.push({type:U,value:"/"}));const i=n.map(Eo);return z(i)}const ut=(t,o)=>{if(!t)return[];const e=o?.get(t);if(e)return e;const s=Bo(t);return o?.set(t,s),s},Io=/^\$.{1,}$/,ko=/^(.*?)\{(\$[a-zA-Z_$][a-zA-Z0-9_$]*)\}(.*)$/,Oo=/^(.*?)\{-(\$[a-zA-Z_$][a-zA-Z0-9_$]*)\}(.*)$/,Fo=/^\$$/,Ao=/^(.*?)\{\$\}(.*)$/;function Bo(t){t=ne(t);const o=[];if(t.slice(0,1)==="/"&&(t=t.substring(1),o.push({type:U,value:"/"})),!t)return o;const e=t.split("/").filter(Boolean);return o.push(...e.map(s=>{const n=s.match(Ao);if(n){const c=n[1],a=n[2];return{type:at,value:"$",prefixSegment:c||void 0,suffixSegment:a||void 0}}const r=s.match(Oo);if(r){const c=r[1],a=r[2],l=r[3];return{type:ct,value:a,prefixSegment:c||void 0,suffixSegment:l||void 0}}const i=s.match(ko);if(i){const c=i[1],a=i[2],l=i[3];return{type:ot,value:""+a,prefixSegment:c||void 0,suffixSegment:l||void 0}}if(Io.test(s)){const c=s.substring(1);return{type:ot,value:"$"+c,prefixSegment:void 0,suffixSegment:void 0}}return Fo.test(s)?{type:at,value:"$",prefixSegment:void 0,suffixSegment:void 0}:{type:U,value:s}})),t.slice(-1)==="/"&&(t=t.substring(1),o.push({type:U,value:"/"})),o}function Ut({path:t,params:o,decodeCharMap:e,parseCache:s}){const n=ut(t,s);function r(l){const u=o[l],h=typeof u=="string";return l==="*"||l==="_splat"?h?encodeURI(u):u:h?Do(u,e):u}let i=!1;const c={},a=z(n.map(l=>{if(l.type===U)return l.value;if(l.type===at){c._splat=o._splat,c["*"]=o._splat;const u=l.prefixSegment||"",h=l.suffixSegment||"";if(!o._splat)return i=!0,u||h?`${u}${h}`:void 0;const f=r("_splat");return`${u}${f}${h}`}if(l.type===ot){const u=l.value.substring(1);!i&&!(u in o)&&(i=!0),c[u]=o[u];const h=l.prefixSegment||"",f=l.suffixSegment||"";return`${h}${r(u)??"undefined"}${f}`}if(l.type===ct){const u=l.value.substring(1),h=l.prefixSegment||"",f=l.suffixSegment||"";return!(u in o)||o[u]==null?h||f?`${h}${f}`:void 0:(c[u]=o[u],`${h}${r(u)??""}${f}`)}return l.value}));return{usedParams:c,interpolatedPath:a,isMissingParams:i}}function Do(t,o){let e=encodeURIComponent(t);if(o)for(const[s,n]of o)e=e.replaceAll(s,n);return e}function Zt(t,o,e){const s=$o(t,o,e);if(!(o.to&&!s))return s??{}}function $o(t,{to:o,fuzzy:e,caseSensitive:s},n){const r=o,i=ut(t.startsWith("/")?t:`/${t}`,n),c=ut(r.startsWith("/")?r:`/${r}`,n),a={};return jo(i,c,a,e,s)?a:void 0}function jo(t,o,e,s,n){let r=0,i=0;for(;rm.value)));h&&p.startsWith(h)&&(p=p.slice(h.length)),f&&p.endsWith(f)&&(p=p.slice(0,p.length-f.length)),u=p}else u=decodeURI(z(l.map(h=>h.value)));return e["*"]=u,e._splat=u,!0}if(a.type===U){if(a.value==="/"&&!c?.value){i++;continue}if(c){if(n){if(a.value!==c.value)return!1}else if(a.value.toLowerCase()!==c.value.toLowerCase())return!1;r++,i++;continue}else return!1}if(a.type===ot){if(!c||c.value==="/")return!1;let l="",u=!1;if(a.prefixSegment||a.suffixSegment){const h=a.prefixSegment||"",f=a.suffixSegment||"",d=c.value;if(h&&!d.startsWith(h)||f&&!d.endsWith(f))return!1;let p=d;h&&p.startsWith(h)&&(p=p.slice(h.length)),f&&p.endsWith(f)&&(p=p.slice(0,p.length-f.length)),l=decodeURIComponent(p),u=!0}else l=decodeURIComponent(c.value),u=!0;u&&(e[a.value.substring(1)]=l,r++),i++;continue}if(a.type===ct){if(!c){i++;continue}if(c.value==="/"){i++;continue}let l="",u=!1;if(a.prefixSegment||a.suffixSegment){const h=a.prefixSegment||"",f=a.suffixSegment||"",d=c.value;if((!h||d.startsWith(h))&&(!f||d.endsWith(f))){let p=d;h&&p.startsWith(h)&&(p=p.slice(h.length)),f&&p.endsWith(f)&&(p=p.slice(0,p.length-f.length)),l=decodeURIComponent(p),u=!0}}else{let h=!0;for(let f=i+1;f=o.length)return e["**"]=z(t.slice(r).map(l=>l.value)),!!s&&o[o.length-1]?.value!=="/";if(i=t.length){for(let l=i;l{if(s.isRoot||!s.path)return;const r=re(s.fullPath);let i=ut(r),c=0;for(;i.length>c+1&&i[c]?.value==="/";)c++;c>0&&(i=i.slice(c));let a=0,l=!1;const u=i.map((h,f)=>{if(h.value==="/")return No;if(h.type===U)return Uo;let d;h.type===ot?d=Vo:h.type===ct?(d=Wo,a++):d=zo;for(let p=f+1;p{const r=Math.min(s.scores.length,n.scores.length);for(let i=0;in.parsed[i].value?1:-1;return s.index-n.index}).map((s,n)=>(s.child.rank=n,s.child))}function Yo({routeTree:t,initRoute:o}){const e={},s={},n=i=>{i.forEach((c,a)=>{o?.(c,a);const l=e[c.id];if(K(!l,`Duplicate routes found with id: ${String(c.id)}`),e[c.id]=c,!c.isRoot&&c.path){const h=J(c.fullPath);(!s[h]||c.fullPath.endsWith("/"))&&(s[h]=c)}const u=c.children;u?.length&&n(u)})};n([t]);const r=Jo(Object.values(e));return{routesById:e,routesByPath:s,flatRoutes:r}}function j(t){return!!t?.isNotFound}function Xo(){try{if(typeof window<"u"&&typeof window.sessionStorage=="object")return window.sessionStorage}catch{}}const kt="tsr-scroll-restoration-v1_3",Zo=(t,o)=>{let e;return(...s)=>{e||(e=setTimeout(()=>{t(...s),e=null},o))}};function Qo(){const t=Xo();if(!t)return null;const o=t.getItem(kt);let e=o?JSON.parse(o):{};return{state:e,set:s=>(e=Q(s,e)||e,t.setItem(kt,JSON.stringify(e)))}}const wt=Qo(),Qt=t=>t.state.__TSR_key||t.href;function ts(t){const o=[];let e;for(;e=t.parentNode;)o.push(`${t.tagName}:nth-child(${Array.prototype.indexOf.call(e.children,t)+1})`),t=e;return`${o.reverse().join(" > ")}`.toLowerCase()}let Ot=!1;function We({storageKey:t,key:o,behavior:e,shouldScrollRestoration:s,scrollToTopSelectors:n,location:r}){let i;try{i=JSON.parse(sessionStorage.getItem(t)||"{}")}catch(l){console.error(l);return}const c=o||window.history.state?.__TSR_key,a=i[c];Ot=!0;t:{if(s&&a&&Object.keys(a).length>0){for(const h in a){const f=a[h];if(h==="window")window.scrollTo({top:f.scrollY,left:f.scrollX,behavior:e});else if(h){const d=document.querySelector(h);d&&(d.scrollLeft=f.scrollX,d.scrollTop=f.scrollY)}}break t}const l=(r??window.location).hash.split("#",2)[1];if(l){const h=window.history.state?.__hashScrollIntoViewOptions??!0;if(h){const f=document.getElementById(l);f&&f.scrollIntoView(h)}break t}const u={top:0,left:0,behavior:e};if(window.scrollTo(u),n)for(const h of n){if(h==="window")continue;const f=typeof h=="function"?h():document.querySelector(h);f&&f.scrollTo(u)}}Ot=!1}function es(t,o){if(!wt&&!t.isServer||((t.options.scrollRestoration??!1)&&(t.isScrollRestoring=!0),t.isServer||t.isScrollRestorationSetup||!wt))return;t.isScrollRestorationSetup=!0,Ot=!1;const s=t.options.getScrollRestorationKey||Qt;window.history.scrollRestoration="manual";const n=r=>{if(Ot||!t.isScrollRestoring)return;let i="";if(r.target===document||r.target===window)i="window";else{const a=r.target.getAttribute("data-scroll-restoration-id");a?i=`[data-scroll-restoration-id="${a}"]`:i=ts(r.target)}const c=s(t.state.location);wt.set(a=>{const l=a[c]||={},u=l[i]||={};if(i==="window")u.scrollX=window.scrollX||0,u.scrollY=window.scrollY||0;else if(i){const h=document.querySelector(i);h&&(u.scrollX=h.scrollLeft||0,u.scrollY=h.scrollTop||0)}return a})};typeof document<"u"&&document.addEventListener("scroll",Zo(n,100),!0),t.subscribe("onRendered",r=>{const i=s(r.toLocation);if(!t.resetNextScroll){t.resetNextScroll=!0;return}typeof t.options.scrollRestoration=="function"&&!t.options.scrollRestoration({location:t.latestLocation})||(We({storageKey:kt,key:i,behavior:t.options.scrollRestorationBehavior,shouldScrollRestoration:t.isScrollRestoring,scrollToTopSelectors:t.options.scrollToTopSelectors,location:t.history.location}),t.isScrollRestoring&&wt.set(c=>(c[i]||={},c)))})}function os(t){if(typeof document<"u"&&document.querySelector){const o=t.state.location.state.__hashScrollIntoViewOptions??!0;if(o&&t.state.location.hash!==""){const e=document.getElementById(t.state.location.hash);e&&e.scrollIntoView(o)}}}function ss(t,o=String){const e=new URLSearchParams;for(const s in t){const n=t[s];n!==void 0&&e.set(s,o(n))}return e.toString()}function Vt(t){return t?t==="false"?!1:t==="true"?!0:+t*0===0&&+t+""===t?+t:t:""}function ns(t){const o=new URLSearchParams(t),e={};for(const[s,n]of o.entries()){const r=e[s];r==null?e[s]=Vt(n):Array.isArray(r)?r.push(Vt(n)):e[s]=[r,Vt(n)]}return e}const rs=as(JSON.parse),is=cs(JSON.stringify,JSON.parse);function as(t){return o=>{o[0]==="?"&&(o=o.substring(1));const e=ns(o);for(const s in e){const n=e[s];if(typeof n=="string")try{e[s]=t(n)}catch{}}return e}}function cs(t,o){const e=typeof o=="function";function s(n){if(typeof n=="object"&&n!==null)try{return t(n)}catch{}else if(e&&typeof n=="string")try{return o(n),t(n)}catch{}return n}return n=>{const r=ss(n,s);return r?`?${r}`:""}}const A="__root__";function us(t){if(t.statusCode=t.statusCode||t.code||307,!t.reloadDocument&&typeof t.href=="string")try{new URL(t.href),t.reloadDocument=!0}catch{}const o=new Headers(t.headers);t.href&&o.get("Location")===null&&o.set("Location",t.href);const e=new Response(null,{status:t.statusCode,headers:o});if(e.options=t,t.throw)throw e;return e}function N(t){return t instanceof Response&&!!t.options}function ls(t){const o=new Map;let e,s;const n=r=>{r.next&&(r.prev?(r.prev.next=r.next,r.next.prev=r.prev,r.next=void 0,s&&(s.next=r,r.prev=s)):(r.next.prev=void 0,e=r.next,r.next=void 0,s&&(r.prev=s,s.next=r)),s=r)};return{get(r){const i=o.get(r);if(i)return n(i),i.value},set(r,i){if(o.size>=t&&e){const a=e;o.delete(a.key),a.next&&(e=a.next,a.next.prev=void 0),a===s&&(s=void 0)}const c=o.get(r);if(c)c.value=i,n(c);else{const a={key:r,value:i,prev:s};s&&(s.next=a),s=a,e||(e=a),o.set(r,a)}}}}const Mt=t=>{if(!t.rendered)return t.rendered=!0,t.onReady?.()},At=(t,o)=>!!(t.preload&&!t.router.state.matches.some(e=>e.id===o)),ze=(t,o)=>{const e=t.router.routesById[o.routeId??""]??t.router.routeTree;!e.options.notFoundComponent&&t.router.options?.defaultNotFoundComponent&&(e.options.notFoundComponent=t.router.options.defaultNotFoundComponent),K(e.options.notFoundComponent);const s=t.matches.find(n=>n.routeId===e.id);K(s,"Could not find match for route: "+e.id),t.updateMatch(s.id,n=>({...n,status:"notFound",error:o,isFetching:!1})),o.routerCode==="BEFORE_LOAD"&&e.parentRoute&&(o.routeId=e.parentRoute.id,ze(t,o))},H=(t,o,e)=>{if(!(!N(e)&&!j(e))){if(N(e)&&e.redirectHandled&&!e.options.reloadDocument)throw e;if(o){o._nonReactive.beforeLoadPromise?.resolve(),o._nonReactive.loaderPromise?.resolve(),o._nonReactive.beforeLoadPromise=void 0,o._nonReactive.loaderPromise=void 0;const s=N(e)?"redirected":"notFound";o._nonReactive.error=e,t.updateMatch(o.id,n=>({...n,status:s,isFetching:!1,error:e})),j(e)&&!e.routeId&&(e.routeId=o.routeId),o._nonReactive.loadPromise?.resolve()}throw N(e)?(t.rendered=!0,e.options._fromLocation=t.location,e.redirectHandled=!0,e=t.router.resolveRedirect(e),e):(ze(t,e),e)}},Ke=(t,o)=>{const e=t.router.getMatch(o);return!!(!t.router.isServer&&e._nonReactive.dehydrated||t.router.isServer&&e.ssr===!1)},ht=(t,o,e,s)=>{const{id:n,routeId:r}=t.matches[o],i=t.router.looseRoutesById[r];if(e instanceof Promise)throw e;e.routerCode=s,t.firstBadMatchIndex??=o,H(t,t.router.getMatch(n),e);try{i.options.onError?.(e)}catch(c){e=c,H(t,t.router.getMatch(n),e)}t.updateMatch(n,c=>(c._nonReactive.beforeLoadPromise?.resolve(),c._nonReactive.beforeLoadPromise=void 0,c._nonReactive.loadPromise?.resolve(),{...c,error:e,status:"error",isFetching:!1,updatedAt:Date.now(),abortController:new AbortController}))},hs=(t,o,e,s)=>{const n=t.router.getMatch(o),r=t.matches[e-1]?.id,i=r?t.router.getMatch(r):void 0;if(t.router.isShell()){n.ssr=s.id===A;return}if(i?.ssr===!1){n.ssr=!1;return}const c=d=>d===!0&&i?.ssr==="data-only"?"data-only":d,a=t.router.options.defaultSsr??!0;if(s.options.ssr===void 0){n.ssr=c(a);return}if(typeof s.options.ssr!="function"){n.ssr=c(s.options.ssr);return}const{search:l,params:u}=n,h={search:xt(l,n.searchError),params:xt(u,n.paramsError),location:t.location,matches:t.matches.map(d=>({index:d.index,pathname:d.pathname,fullPath:d.fullPath,staticData:d.staticData,id:d.id,routeId:d.routeId,search:xt(d.search,d.searchError),params:xt(d.params,d.paramsError),ssr:d.ssr}))},f=s.options.ssr(h);if(q(f))return f.then(d=>{n.ssr=c(d??a)});n.ssr=c(f??a)},He=(t,o,e,s)=>{if(s._nonReactive.pendingTimeout!==void 0)return;const n=e.options.pendingMs??t.router.options.defaultPendingMs;if(!!(t.onReady&&!t.router.isServer&&!At(t,o)&&(e.options.loader||e.options.beforeLoad||Je(e))&&typeof n=="number"&&n!==1/0&&(e.options.pendingComponent??t.router.options?.defaultPendingComponent))){const i=setTimeout(()=>{Mt(t)},n);s._nonReactive.pendingTimeout=i}},fs=(t,o,e)=>{const s=t.router.getMatch(o);if(!s._nonReactive.beforeLoadPromise&&!s._nonReactive.loaderPromise)return;He(t,o,e,s);const n=()=>{const r=t.router.getMatch(o);r.preload&&(r.status==="redirected"||r.status==="notFound")&&H(t,r,r.error)};return s._nonReactive.beforeLoadPromise?s._nonReactive.beforeLoadPromise.then(n):n()},ds=(t,o,e,s)=>{const n=t.router.getMatch(o),r=n._nonReactive.loadPromise;n._nonReactive.loadPromise=it(()=>{r?.resolve()});const{paramsError:i,searchError:c}=n;i&&ht(t,e,i,"PARSE_PARAMS"),c&&ht(t,e,c,"VALIDATE_SEARCH"),He(t,o,s,n);const a=new AbortController,l=t.matches[e-1]?.id,f={...(l?t.router.getMatch(l):void 0)?.context??t.router.options.context??void 0,...n.__routeContext};let d=!1;const p=()=>{d||(d=!0,t.updateMatch(o,S=>({...S,isFetching:"beforeLoad",fetchCount:S.fetchCount+1,abortController:a,context:f})))},m=()=>{n._nonReactive.beforeLoadPromise?.resolve(),n._nonReactive.beforeLoadPromise=void 0,t.updateMatch(o,S=>({...S,isFetching:!1}))};if(!s.options.beforeLoad){gt(()=>{p(),m()});return}n._nonReactive.beforeLoadPromise=it();const{search:y,params:_,cause:x}=n,P=At(t,o),L={search:y,abortController:a,params:_,preload:P,context:f,location:t.location,navigate:S=>t.router.navigate({...S,_fromLocation:t.location}),buildLocation:t.router.buildLocation,cause:P?"preload":x,matches:t.matches,...t.router.options.additionalContext},E=S=>{if(S===void 0){gt(()=>{p(),m()});return}(N(S)||j(S))&&(p(),ht(t,e,S,"BEFORE_LOAD")),gt(()=>{p(),t.updateMatch(o,v=>({...v,__beforeLoadContext:S,context:{...v.context,...S}})),m()})};let w;try{if(w=s.options.beforeLoad(L),q(w))return p(),w.catch(S=>{ht(t,e,S,"BEFORE_LOAD")}).then(E)}catch(S){p(),ht(t,e,S,"BEFORE_LOAD")}E(w)},ps=(t,o)=>{const{id:e,routeId:s}=t.matches[o],n=t.router.looseRoutesById[s],r=()=>{if(t.router.isServer){const a=hs(t,e,o,n);if(q(a))return a.then(c)}return c()},i=()=>ds(t,e,o,n),c=()=>{if(Ke(t,e))return;const a=fs(t,e,n);return q(a)?a.then(i):i()};return r()},yt=(t,o,e)=>{const s=t.router.getMatch(o);if(!s||!e.options.head&&!e.options.scripts&&!e.options.headers)return;const n={matches:t.matches,match:s,params:s.params,loaderData:s.loaderData};return Promise.all([e.options.head?.(n),e.options.scripts?.(n),e.options.headers?.(n)]).then(([r,i,c])=>{const a=r?.meta,l=r?.links,u=r?.scripts,h=r?.styles;return{meta:a,links:l,headScripts:u,headers:c,scripts:i,styles:h}})},Ge=(t,o,e,s)=>{const n=t.matchPromises[e-1],{params:r,loaderDeps:i,abortController:c,cause:a}=t.router.getMatch(o);let l=t.router.options.context??{};for(let h=0;h<=e;h++){const f=t.matches[h];if(!f)continue;const d=t.router.getMatch(f.id);d&&(l={...l,...d.__routeContext??{},...d.__beforeLoadContext??{}})}const u=At(t,o);return{params:r,deps:i,preload:!!u,parentMatchPromise:n,abortController:c,context:l,location:t.location,navigate:h=>t.router.navigate({...h,_fromLocation:t.location}),cause:u?"preload":a,route:s,...t.router.options.additionalContext}},Ee=async(t,o,e,s)=>{try{const n=t.router.getMatch(o);try{(!t.router.isServer||n.ssr===!0)&&qe(s);const r=s.options.loader?.(Ge(t,o,e,s)),i=s.options.loader&&q(r);if(!!(i||s._lazyPromise||s._componentsPromise||s.options.head||s.options.scripts||s.options.headers||n._nonReactive.minPendingPromise)&&t.updateMatch(o,h=>({...h,isFetching:"loader"})),s.options.loader){const h=i?await r:r;H(t,t.router.getMatch(o),h),h!==void 0&&t.updateMatch(o,f=>({...f,loaderData:h}))}s._lazyPromise&&await s._lazyPromise;const a=yt(t,o,s),l=a?await a:void 0,u=n._nonReactive.minPendingPromise;u&&await u,s._componentsPromise&&await s._componentsPromise,t.updateMatch(o,h=>({...h,error:void 0,status:"success",isFetching:!1,updatedAt:Date.now(),...l}))}catch(r){let i=r;const c=n._nonReactive.minPendingPromise;c&&await c,j(r)&&await s.options.notFoundComponent?.preload?.(),H(t,t.router.getMatch(o),r);try{s.options.onError?.(r)}catch(u){i=u,H(t,t.router.getMatch(o),u)}const a=yt(t,o,s),l=a?await a:void 0;t.updateMatch(o,u=>({...u,error:i,status:"error",isFetching:!1,...l}))}}catch(n){const r=t.router.getMatch(o);if(r){const i=yt(t,o,s);if(i){const c=await i;t.updateMatch(o,a=>({...a,...c}))}r._nonReactive.loaderPromise=void 0}H(t,r,n)}},ms=async(t,o)=>{const{id:e,routeId:s}=t.matches[o];let n=!1,r=!1;const i=t.router.looseRoutesById[s];if(Ke(t,e)){if(t.router.isServer){const l=yt(t,e,i);if(l){const u=await l;t.updateMatch(e,h=>({...h,...u}))}return t.router.getMatch(e)}}else{const l=t.router.getMatch(e);if(l._nonReactive.loaderPromise){if(l.status==="success"&&!t.sync&&!l.preload)return l;await l._nonReactive.loaderPromise;const u=t.router.getMatch(e),h=u._nonReactive.error||u.error;h&&H(t,u,h)}else{const u=Date.now()-l.updatedAt,h=At(t,e),f=h?i.options.preloadStaleTime??t.router.options.defaultPreloadStaleTime??3e4:i.options.staleTime??t.router.options.defaultStaleTime??0,d=i.options.shouldReload,p=typeof d=="function"?d(Ge(t,e,o,i)):d,m=!!h&&!t.router.state.matches.some(P=>P.id===e),y=t.router.getMatch(e);y._nonReactive.loaderPromise=it(),m!==y.preload&&t.updateMatch(e,P=>({...P,preload:m}));const{status:_,invalid:x}=y;if(n=_==="success"&&(x||(p??u>f)),!(h&&i.options.preload===!1))if(n&&!t.sync)r=!0,(async()=>{try{await Ee(t,e,o,i);const P=t.router.getMatch(e);P._nonReactive.loaderPromise?.resolve(),P._nonReactive.loadPromise?.resolve(),P._nonReactive.loaderPromise=void 0}catch(P){N(P)&&await t.router.navigate(P.options)}})();else if(_!=="success"||n&&t.sync)await Ee(t,e,o,i);else{const P=yt(t,e,i);if(P){const L=await P;t.updateMatch(e,E=>({...E,...L}))}}}}const c=t.router.getMatch(e);r||(c._nonReactive.loaderPromise?.resolve(),c._nonReactive.loadPromise?.resolve()),clearTimeout(c._nonReactive.pendingTimeout),c._nonReactive.pendingTimeout=void 0,r||(c._nonReactive.loaderPromise=void 0),c._nonReactive.dehydrated=void 0;const a=r?c.isFetching:!1;return a!==c.isFetching||c.invalid!==!1?(t.updateMatch(e,l=>({...l,isFetching:a,invalid:!1})),t.router.getMatch(e)):c};async function Te(t){const o=Object.assign(t,{matchPromises:[]});!o.router.isServer&&o.router.state.matches.some(e=>e._forcePending)&&Mt(o);try{for(let n=0;n{const{id:e,...s}=o.options;Object.assign(t.options,s),t._lazyLoaded=!0,t._lazyPromise=void 0}):t._lazyLoaded=!0),!t._componentsLoaded&&t._componentsPromise===void 0){const o=()=>{const e=[];for(const s of Ye){const n=t.options[s]?.preload;n&&e.push(n())}if(e.length)return Promise.all(e).then(()=>{t._componentsLoaded=!0,t._componentsPromise=void 0});t._componentsLoaded=!0,t._componentsPromise=void 0};t._componentsPromise=t._lazyPromise?t._lazyPromise.then(o):o()}return t._componentsPromise}function xt(t,o){return o?{status:"error",error:o}:{status:"success",value:t}}function Je(t){for(const o of Ye)if(t.options[o]?.preload)return!0;return!1}const Ye=["component","errorComponent","pendingComponent","notFoundComponent"];function gs(t){return{input:({url:o})=>{for(const e of t)o=Xe(e,o);return o},output:({url:o})=>{for(let e=t.length-1;e>=0;e--)o=Ze(t[e],o);return o}}}function ys(t){const o=Ct(t.basepath),e=`/${o}`,s=`${e}/`,n=t.caseSensitive?e:e.toLowerCase(),r=t.caseSensitive?s:s.toLowerCase();return{input:({url:i})=>{const c=t.caseSensitive?i.pathname:i.pathname.toLowerCase();return c===n?i.pathname="/":c.startsWith(r)&&(i.pathname=i.pathname.slice(e.length)),i},output:({url:i})=>(i.pathname=z(["/",o,i.pathname]),i)}}function Xe(t,o){const e=t?.input?.({url:o});if(e){if(typeof e=="string")return new URL(e);if(e instanceof URL)return e}return o}function Ze(t,o){const e=t?.output?.({url:o});if(e){if(typeof e=="string")return new URL(e);if(e instanceof URL)return e}return o}function et(t){const o=t.resolvedLocation,e=t.location,s=o?.pathname!==e.pathname,n=o?.href!==e.href,r=o?.hash!==e.hash;return{fromLocation:o,toLocation:e,pathChanged:s,hrefChanged:n,hashChanged:r}}class vs{constructor(o){this.tempLocationKey=`${Math.round(Math.random()*1e7)}`,this.resetNextScroll=!0,this.shouldViewTransition=void 0,this.isViewTransitionTypesSupported=void 0,this.subscribers=new Set,this.isScrollRestoring=!1,this.isScrollRestorationSetup=!1,this.startTransition=e=>e(),this.update=e=>{e.notFoundRoute&&console.warn("The notFoundRoute API is deprecated and will be removed in the next major version. See https://tanstack.com/router/v1/docs/framework/react/guide/not-found-errors#migrating-from-notfoundroute for more info.");const s=this.options,n=this.basepath??s?.basepath??"/",r=this.basepath===void 0,i=s?.rewrite;this.options={...s,...e},this.isServer=this.options.isServer??typeof document>"u",this.pathParamsDecodeCharMap=this.options.pathParamsAllowedCharacters?new Map(this.options.pathParamsAllowedCharacters.map(f=>[encodeURIComponent(f),f])):void 0,(!this.history||this.options.history&&this.options.history!==this.history)&&(this.options.history?this.history=this.options.history:this.isServer||(this.history=wo())),this.origin=this.options.origin,this.origin||(!this.isServer&&window?.origin&&window.origin!=="null"?this.origin=window.origin:this.origin="http://localhost"),this.history&&this.updateLatestLocation(),this.options.routeTree!==this.routeTree&&(this.routeTree=this.options.routeTree,this.buildRouteTree()),!this.__store&&this.latestLocation&&(this.__store=new Ro(_s(this.latestLocation),{onUpdate:()=>{this.__store.state={...this.state,cachedMatches:this.state.cachedMatches.filter(f=>!["redirected"].includes(f.status))}}}),es(this));let c=!1;const a=this.options.basepath??"/",l=this.options.rewrite;if(r||n!==a||i!==l){this.basepath=a;const f=[];Ct(a)!==""&&f.push(ys({basepath:a})),l&&f.push(l),this.rewrite=f.length===0?void 0:f.length===1?f[0]:gs(f),this.history&&this.updateLatestLocation(),c=!0}c&&this.__store&&(this.__store.state={...this.state,location:this.latestLocation}),typeof window<"u"&&"CSS"in window&&typeof window.CSS?.supports=="function"&&(this.isViewTransitionTypesSupported=window.CSS.supports("selector(:active-view-transition-type(a)"))},this.updateLatestLocation=()=>{this.latestLocation=this.parseLocation(this.history.location,this.latestLocation)},this.buildRouteTree=()=>{const{routesById:e,routesByPath:s,flatRoutes:n}=Yo({routeTree:this.routeTree,initRoute:(i,c)=>{i.init({originalIndex:c})}});this.routesById=e,this.routesByPath=s,this.flatRoutes=n;const r=this.options.notFoundRoute;r&&(r.init({originalIndex:99999999999}),this.routesById[r.id]=r)},this.subscribe=(e,s)=>{const n={eventType:e,fn:s};return this.subscribers.add(n),()=>{this.subscribers.delete(n)}},this.emit=e=>{this.subscribers.forEach(s=>{s.eventType===e.type&&s.fn(e)})},this.parseLocation=(e,s)=>{const n=({href:a,state:l})=>{const u=new URL(a,this.origin),h=Xe(this.rewrite,u),f=this.options.parseSearch(h.search),d=this.options.stringifySearch(f);h.search=d;const p=h.href.replace(h.origin,""),{pathname:m,hash:y}=h;return{href:p,publicHref:a,url:h.href,pathname:Le(m),searchStr:d,search:B(s?.search,f),hash:y.split("#").reverse()[0]??"",state:B(s?.state,l)}},r=n(e),{__tempLocation:i,__tempKey:c}=r.state;if(i&&(!c||c===this.tempLocationKey)){const a=n(i);return a.state.key=r.state.key,a.state.__TSR_key=r.state.__TSR_key,delete a.state.__tempLocation,{...a,maskedLocation:r}}return r},this.resolvePathWithBase=(e,s)=>To({base:e,to:ne(s),trailingSlash:this.options.trailingSlash,parseCache:this.parsePathnameCache}),this.matchRoutes=(e,s,n)=>typeof e=="string"?this.matchRoutesInternal({pathname:e,search:s},n):this.matchRoutesInternal(e,s),this.parsePathnameCache=ls(1e3),this.getMatchedRoutes=(e,s)=>Rs({pathname:e,routePathname:s,caseSensitive:this.options.caseSensitive,routesByPath:this.routesByPath,routesById:this.routesById,flatRoutes:this.flatRoutes,parseCache:this.parsePathnameCache}),this.cancelMatch=e=>{const s=this.getMatch(e);s&&(s.abortController.abort(),clearTimeout(s._nonReactive.pendingTimeout),s._nonReactive.pendingTimeout=void 0)},this.cancelMatches=()=>{const e=this.state.matches.filter(r=>r.status==="pending"),s=this.state.matches.filter(r=>r.isFetching==="loader");new Set([...this.state.pendingMatches??[],...e,...s]).forEach(r=>{this.cancelMatch(r.id)})},this.buildLocation=e=>{const s=(r={})=>{const i=r._fromLocation||this.pendingBuiltLocation||this.latestLocation,c=this.matchRoutes(i,{_buildLocation:!0}),a=Xt(c);r.from;const l=r.unsafeRelative==="path"?i.pathname:r.from??a.fullPath,u=this.resolvePathWithBase(l,"."),h=a.search,f={...a.params},d=r.to?this.resolvePathWithBase(u,`${r.to}`):this.resolvePathWithBase(u,"."),p=r.params===!1||r.params===null?{}:(r.params??!0)===!0?f:Object.assign(f,Q(r.params,f)),m=Ut({path:d,params:p,parseCache:this.parsePathnameCache}).interpolatedPath,y=this.matchRoutes(m,void 0,{_buildLocation:!0}).map(M=>this.looseRoutesById[M.routeId]);if(Object.keys(p).length>0)for(const M of y){const T=M.options.params?.stringify??M.options.stringifyParams;T&&Object.assign(p,T(p))}const _=e.leaveParams?d:Le(Ut({path:d,params:p,decodeCharMap:this.pathParamsDecodeCharMap,parseCache:this.parsePathnameCache}).interpolatedPath);let x=h;if(e._includeValidateSearch&&this.options.search?.strict){const M={};y.forEach(T=>{if(T.options.validateSearch)try{Object.assign(M,te(T.options.validateSearch,{...M,...x}))}catch{}}),x=M}x=Ps({search:x,dest:r,destRoutes:y,_includeValidateSearch:e._includeValidateSearch}),x=B(h,x);const P=this.options.stringifySearch(x),L=r.hash===!0?i.hash:r.hash?Q(r.hash,i.hash):void 0,E=L?`#${L}`:"";let w=r.state===!0?i.state:r.state?Q(r.state,i.state):{};w=B(i.state,w);const S=`${_}${P}${E}`,v=new URL(S,this.origin),C=Ze(this.rewrite,v);return{publicHref:C.pathname+C.search+C.hash,href:S,url:C.href,pathname:_,search:x,searchStr:P,state:w,hash:L??"",unmaskOnReload:r.unmaskOnReload}},n=(r={},i)=>{const c=s(r);let a=i?s(i):void 0;if(!a){let l={};const u=this.options.routeMasks?.find(h=>{const f=Zt(c.pathname,{to:h.from,caseSensitive:!1,fuzzy:!1},this.parsePathnameCache);return f?(l=f,!0):!1});if(u){const{from:h,...f}=u;i={from:e.from,...f,params:l},a=s(i)}}return a&&(c.maskedLocation=a),c};return e.mask?n(e,{from:e.from,...e.mask}):n(e)},this.commitLocation=({viewTransition:e,ignoreBlocker:s,...n})=>{const r=()=>{const a=["key","__TSR_key","__TSR_index","__hashScrollIntoViewOptions"];a.forEach(u=>{n.state[u]=this.latestLocation.state[u]});const l=tt(n.state,this.latestLocation.state);return a.forEach(u=>{delete n.state[u]}),l},i=J(this.latestLocation.href)===J(n.href),c=this.commitLocationPromise;if(this.commitLocationPromise=it(()=>{c?.resolve()}),i&&r())this.load();else{let{maskedLocation:a,hashScrollIntoView:l,...u}=n;a&&(u={...a,state:{...a.state,__tempKey:void 0,__tempLocation:{...u,search:u.searchStr,state:{...u.state,__tempKey:void 0,__tempLocation:void 0,__TSR_key:void 0,key:void 0}}}},(u.unmaskOnReload??this.options.unmaskOnReload??!1)&&(u.state.__tempKey=this.tempLocationKey)),u.state.__hashScrollIntoViewOptions=l??this.options.defaultHashScrollIntoView??!0,this.shouldViewTransition=e,this.history[n.replace?"replace":"push"](u.publicHref,u.state,{ignoreBlocker:s})}return this.resetNextScroll=n.resetScroll??!0,this.history.subscribers.size||this.load(),this.commitLocationPromise},this.buildAndCommitLocation=({replace:e,resetScroll:s,hashScrollIntoView:n,viewTransition:r,ignoreBlocker:i,href:c,...a}={})=>{if(c){const h=this.history.location.state.__TSR_index,f=Et(c,{__TSR_index:e?h:h+1});a.to=f.pathname,a.search=this.options.parseSearch(f.search),a.hash=f.hash.slice(1)}const l=this.buildLocation({...a,_includeValidateSearch:!0});this.pendingBuiltLocation=l;const u=this.commitLocation({...l,viewTransition:r,replace:e,resetScroll:s,hashScrollIntoView:n,ignoreBlocker:i});return Promise.resolve().then(()=>{this.pendingBuiltLocation===l&&(this.pendingBuiltLocation=void 0)}),u},this.navigate=({to:e,reloadDocument:s,href:n,...r})=>{if(!s&&n)try{new URL(`${n}`),s=!0}catch{}return s?(n||(n=this.buildLocation({to:e,...r}).url),r.replace?window.location.replace(n):window.location.href=n,Promise.resolve()):this.buildAndCommitLocation({...r,href:n,to:e,_isNavigate:!0})},this.beforeLoad=()=>{if(this.cancelMatches(),this.updateLatestLocation(),this.isServer){const s=this.buildLocation({to:this.latestLocation.pathname,search:!0,params:!0,hash:!0,state:!0,_includeValidateSearch:!0}),n=r=>{try{return encodeURI(decodeURI(r))}catch{return r}};if(Ct(n(this.latestLocation.href))!==Ct(n(s.href))){let r=s.url;throw this.origin&&r.startsWith(this.origin)&&(r=r.replace(this.origin,"")||"/"),us({href:r})}}const e=this.matchRoutes(this.latestLocation);this.__store.setState(s=>({...s,status:"pending",statusCode:200,isLoading:!0,location:this.latestLocation,pendingMatches:e,cachedMatches:s.cachedMatches.filter(n=>!e.some(r=>r.id===n.id))}))},this.load=async e=>{let s,n,r;for(r=new Promise(c=>{this.startTransition(async()=>{try{this.beforeLoad();const a=this.latestLocation,l=this.state.resolvedLocation;this.state.redirect||this.emit({type:"onBeforeNavigate",...et({resolvedLocation:l,location:a})}),this.emit({type:"onBeforeLoad",...et({resolvedLocation:l,location:a})}),await Te({router:this,sync:e?.sync,matches:this.state.pendingMatches,location:a,updateMatch:this.updateMatch,onReady:async()=>{this.startTransition(()=>{this.startViewTransition(async()=>{let u=[],h=[],f=[];gt(()=>{this.__store.setState(d=>{const p=d.matches,m=d.pendingMatches||d.matches;return u=p.filter(y=>!m.some(_=>_.id===y.id)),h=m.filter(y=>!p.some(_=>_.id===y.id)),f=m.filter(y=>p.some(_=>_.id===y.id)),{...d,isLoading:!1,loadedAt:Date.now(),matches:m,pendingMatches:void 0,cachedMatches:[...d.cachedMatches,...u.filter(y=>y.status!=="error")]}}),this.clearExpiredCache()}),[[u,"onLeave"],[h,"onEnter"],[f,"onStay"]].forEach(([d,p])=>{d.forEach(m=>{this.looseRoutesById[m.routeId].options[p]?.(m)})})})})}})}catch(a){N(a)?(s=a,this.isServer||this.navigate({...s.options,replace:!0,ignoreBlocker:!0})):j(a)&&(n=a),this.__store.setState(l=>({...l,statusCode:s?s.status:n?404:l.matches.some(u=>u.status==="error")?500:200,redirect:s}))}this.latestLoadPromise===r&&(this.commitLocationPromise?.resolve(),this.latestLoadPromise=void 0,this.commitLocationPromise=void 0),c()})}),this.latestLoadPromise=r,await r;this.latestLoadPromise&&r!==this.latestLoadPromise;)await this.latestLoadPromise;let i;this.hasNotFoundMatch()?i=404:this.__store.state.matches.some(c=>c.status==="error")&&(i=500),i!==void 0&&this.__store.setState(c=>({...c,statusCode:i}))},this.startViewTransition=e=>{const s=this.shouldViewTransition??this.options.defaultViewTransition;if(delete this.shouldViewTransition,s&&typeof document<"u"&&"startViewTransition"in document&&typeof document.startViewTransition=="function"){let n;if(typeof s=="object"&&this.isViewTransitionTypesSupported){const r=this.latestLocation,i=this.state.resolvedLocation,c=typeof s.types=="function"?s.types(et({resolvedLocation:i,location:r})):s.types;if(c===!1){e();return}n={update:e,types:c}}else n=e;document.startViewTransition(n)}else e()},this.updateMatch=(e,s)=>{this.startTransition(()=>{const n=this.state.pendingMatches?.some(r=>r.id===e)?"pendingMatches":this.state.matches.some(r=>r.id===e)?"matches":this.state.cachedMatches.some(r=>r.id===e)?"cachedMatches":"";n&&this.__store.setState(r=>({...r,[n]:r[n]?.map(i=>i.id===e?s(i):i)}))})},this.getMatch=e=>{const s=n=>n.id===e;return this.state.cachedMatches.find(s)??this.state.pendingMatches?.find(s)??this.state.matches.find(s)},this.invalidate=e=>{const s=n=>e?.filter?.(n)??!0?{...n,invalid:!0,...e?.forcePending||n.status==="error"?{status:"pending",error:void 0}:void 0}:n;return this.__store.setState(n=>({...n,matches:n.matches.map(s),cachedMatches:n.cachedMatches.map(s),pendingMatches:n.pendingMatches?.map(s)})),this.shouldViewTransition=!1,this.load({sync:e?.sync})},this.resolveRedirect=e=>{if(!e.options.href){const s=this.buildLocation(e.options);let n=s.url;this.origin&&n.startsWith(this.origin)&&(n=n.replace(this.origin,"")||"/"),e.options.href=s.href,e.headers.set("Location",n)}return e.headers.get("Location")||e.headers.set("Location",e.options.href),e},this.clearCache=e=>{const s=e?.filter;s!==void 0?this.__store.setState(n=>({...n,cachedMatches:n.cachedMatches.filter(r=>!s(r))})):this.__store.setState(n=>({...n,cachedMatches:[]}))},this.clearExpiredCache=()=>{const e=s=>{const n=this.looseRoutesById[s.routeId];if(!n.options.loader)return!0;const r=(s.preload?n.options.preloadGcTime??this.options.defaultPreloadGcTime:n.options.gcTime??this.options.defaultGcTime)??300*1e3;return s.status==="error"?!0:Date.now()-s.updatedAt>=r};this.clearCache({filter:e})},this.loadRouteChunk=qe,this.preloadRoute=async e=>{const s=this.buildLocation(e);let n=this.matchRoutes(s,{throwOnError:!0,preload:!0,dest:e});const r=new Set([...this.state.matches,...this.state.pendingMatches??[]].map(c=>c.id)),i=new Set([...r,...this.state.cachedMatches.map(c=>c.id)]);gt(()=>{n.forEach(c=>{i.has(c.id)||this.__store.setState(a=>({...a,cachedMatches:[...a.cachedMatches,c]}))})});try{return n=await Te({router:this,matches:n,location:s,preload:!0,updateMatch:(c,a)=>{r.has(c)?n=n.map(l=>l.id===c?a(l):l):this.updateMatch(c,a)}}),n}catch(c){if(N(c))return c.options.reloadDocument?void 0:await this.preloadRoute({...c.options,_fromLocation:s});j(c)||console.error(c);return}},this.matchRoute=(e,s)=>{const n={...e,to:e.to?this.resolvePathWithBase(e.from||"",e.to):void 0,params:e.params||{},leaveParams:!0},r=this.buildLocation(n);if(s?.pending&&this.state.status!=="pending")return!1;const c=(s?.pending===void 0?!this.state.isLoading:s.pending)?this.latestLocation:this.state.resolvedLocation||this.state.location,a=Zt(c.pathname,{...s,to:r.pathname},this.parsePathnameCache);return!a||e.params&&!tt(a,e.params,{partial:!0})?!1:a&&(s?.includeSearch??!0)?tt(c.search,r.search,{partial:!0})?a:!1:a},this.hasNotFoundMatch=()=>this.__store.state.matches.some(e=>e.status==="notFound"||e.globalNotFound),this.update({defaultPreloadDelay:50,defaultPendingMs:1e3,defaultPendingMinMs:500,context:void 0,...o,caseSensitive:o.caseSensitive??!1,notFoundMode:o.notFoundMode??"fuzzy",stringifySearch:o.stringifySearch??is,parseSearch:o.parseSearch??rs}),typeof document<"u"&&(self.__TSR_ROUTER__=this)}isShell(){return!!this.options.isShell}isPrerendering(){return!!this.options.isPrerendering}get state(){return this.__store.state}get looseRoutesById(){return this.routesById}matchRoutesInternal(o,e){const{foundRoute:s,matchedRoutes:n,routeParams:r}=this.getMatchedRoutes(o.pathname,e?.dest?.to);let i=!1;(s?s.path!=="/"&&r["**"]:J(o.pathname))&&(this.options.notFoundRoute?n.push(this.options.notFoundRoute):i=!0);const c=(()=>{if(i){if(this.options.notFoundMode!=="root")for(let u=n.length-1;u>=0;u--){const h=n[u];if(h.children)return h.id}return A}})(),a=[],l=u=>u?.id?u.context??this.options.context??void 0:this.options.context??void 0;return n.forEach((u,h)=>{const f=a[h-1],[d,p,m]=(()=>{const I=f?.search??o.search,Y=f?._strictSearch??void 0;try{const D=te(u.options.validateSearch,{...I})??void 0;return[{...I,...D},{...Y,...D},void 0]}catch(D){let X=D;if(D instanceof Ft||(X=new Ft(D.message,{cause:D})),e?.throwOnError)throw X;return[I,{},X]}})(),y=u.options.loaderDeps?.({search:d})??"",_=y?JSON.stringify(y):"",{interpolatedPath:x,usedParams:P}=Ut({path:u.fullPath,params:r,decodeCharMap:this.pathParamsDecodeCharMap}),L=u.id+x+_,E=this.getMatch(L),w=this.state.matches.find(I=>I.routeId===u.id),S=E?._strictParams??P;let v;if(!E){const I=u.options.params?.parse??u.options.parseParams;if(I)try{Object.assign(S,I(S))}catch(Y){if(v=new Ss(Y.message,{cause:Y}),e?.throwOnError)throw v}}Object.assign(r,S);const C=w?"stay":"enter";let M;if(E)M={...E,cause:C,params:w?B(w.params,r):r,_strictParams:S,search:B(w?w.search:E.search,d),_strictSearch:p};else{const I=u.options.loader||u.options.beforeLoad||u.lazyFn||Je(u)?"pending":"success";M={id:L,index:h,routeId:u.id,params:w?B(w.params,r):r,_strictParams:S,pathname:x,updatedAt:Date.now(),search:w?B(w.search,d):d,_strictSearch:p,searchError:void 0,status:I,isFetching:!1,error:void 0,paramsError:v,__routeContext:void 0,_nonReactive:{loadPromise:it()},__beforeLoadContext:void 0,context:{},abortController:new AbortController,fetchCount:0,cause:C,loaderDeps:w?B(w.loaderDeps,y):y,invalid:!1,preload:!1,links:void 0,scripts:void 0,headScripts:void 0,meta:void 0,staticData:u.options.staticData||{},fullPath:u.fullPath}}e?.preload||(M.globalNotFound=c===u.id),M.searchError=m;const T=l(f);M.context={...T,...M.__routeContext,...M.__beforeLoadContext},a.push(M)}),a.forEach((u,h)=>{const f=this.looseRoutesById[u.routeId];if(!this.getMatch(u.id)&&e?._buildLocation!==!0){const p=a[h-1],m=l(p);if(f.options.context){const y={deps:u.loaderDeps,params:u.params,context:m??{},location:o,navigate:_=>this.navigate({..._,_fromLocation:o}),buildLocation:this.buildLocation,cause:u.cause,abortController:u.abortController,preload:!!u.preload,matches:a};u.__routeContext=f.options.context(y)??void 0}u.context={...m,...u.__routeContext,...u.__beforeLoadContext}}}),a}}class Ft extends Error{}class Ss extends Error{}function _s(t){return{loadedAt:0,isLoading:!1,isTransitioning:!1,status:"idle",resolvedLocation:void 0,location:t,matches:[],pendingMatches:[],cachedMatches:[],statusCode:200}}function te(t,o){if(t==null)return{};if("~standard"in t){const e=t["~standard"].validate(o);if(e instanceof Promise)throw new Ft("Async validation not supported");if(e.issues)throw new Ft(JSON.stringify(e.issues,void 0,2),{cause:e});return e.value}return"parse"in t?t.parse(o):typeof t=="function"?t(o):{}}function Rs({pathname:t,routePathname:o,caseSensitive:e,routesByPath:s,routesById:n,flatRoutes:r,parseCache:i}){let c={};const a=J(t),l=d=>Zt(a,{to:d.fullPath,caseSensitive:d.options?.caseSensitive??e,fuzzy:!0},i);let u=o!==void 0?s[o]:void 0;if(u)c=l(u);else{let d;for(const p of r){const m=l(p);if(m)if(p.path!=="/"&&m["**"])d||(d={foundRoute:p,routeParams:m});else{u=p,c=m;break}}!u&&d&&(u=d.foundRoute,c=d.routeParams)}let h=u||n[A];const f=[h];for(;h.parentRoute;)h=h.parentRoute,f.push(h);return f.reverse(),{matchedRoutes:f,routeParams:c,foundRoute:u}}function Ps({search:t,dest:o,destRoutes:e,_includeValidateSearch:s}){const n=e.reduce((c,a)=>{const l=[];if("search"in a.options)a.options.search?.middlewares&&l.push(...a.options.search.middlewares);else if(a.options.preSearchFilters||a.options.postSearchFilters){const u=({search:h,next:f})=>{let d=h;"preSearchFilters"in a.options&&a.options.preSearchFilters&&(d=a.options.preSearchFilters.reduce((m,y)=>y(m),h));const p=f(d);return"postSearchFilters"in a.options&&a.options.postSearchFilters?a.options.postSearchFilters.reduce((m,y)=>y(m),p):p};l.push(u)}if(s&&a.options.validateSearch){const u=({search:h,next:f})=>{const d=f(h);try{return{...d,...te(a.options.validateSearch,d)??void 0}}catch{return d}};l.push(u)}return c.concat(l)},[])??[],r=({search:c})=>o.search?o.search===!0?c:Q(o.search,c):{};n.push(r);const i=(c,a)=>{if(c>=n.length)return a;const l=n[c];return l({search:a,next:h=>i(c+1,h)})};return i(0,t)}const ws="Error preloading route! ☝️";class Qe{constructor(o){if(this.init=e=>{this.originalIndex=e.originalIndex;const s=this.options,n=!s?.path&&!s?.id;this.parentRoute=this.options.getParentRoute?.(),n?this._path=A:this.parentRoute||K(!1);let r=n?A:s?.path;r&&r!=="/"&&(r=re(r));const i=s?.id||r;let c=n?A:z([this.parentRoute.id===A?"":this.parentRoute.id,i]);r===A&&(r="/"),c!==A&&(c=z(["/",c]));const a=c===A?"/":z([this.parentRoute.fullPath,r]);this._path=r,this._id=c,this._fullPath=a,this._to=a},this.addChildren=e=>this._addFileChildren(e),this._addFileChildren=e=>(Array.isArray(e)&&(this.children=e),typeof e=="object"&&e!==null&&(this.children=Object.values(e)),this),this._addFileTypes=()=>this,this.updateLoader=e=>(Object.assign(this.options,e),this),this.update=e=>(Object.assign(this.options,e),this),this.lazy=e=>(this.lazyFn=e,this),this.options=o||{},this.isRoot=!o?.getParentRoute,o?.id&&o?.path)throw new Error("Route cannot have both an 'id' and a 'path' option.")}get to(){return this._to}get id(){return this._id}get path(){return this._path}get fullPath(){return this._fullPath}}class xs extends Qe{constructor(o){super(o)}}function ie(t){const o=t.errorComponent??Bt;return g.jsx(Ls,{getResetKey:t.getResetKey,onCatch:t.onCatch,children:({error:e,reset:s})=>e?R.createElement(o,{error:e,reset:s}):t.children})}class Ls extends R.Component{constructor(){super(...arguments),this.state={error:null}}static getDerivedStateFromProps(o){return{resetKey:o.getResetKey()}}static getDerivedStateFromError(o){return{error:o}}reset(){this.setState({error:null})}componentDidUpdate(o,e){e.error&&e.resetKey!==this.state.resetKey&&this.reset()}componentDidCatch(o,e){this.props.onCatch&&this.props.onCatch(o,e)}render(){return this.props.children({error:this.state.resetKey!==this.props.getResetKey()?null:this.state.error,reset:()=>{this.reset()}})}}function Bt({error:t}){const[o,e]=R.useState(!1);return g.jsxs("div",{style:{padding:".5rem",maxWidth:"100%"},children:[g.jsxs("div",{style:{display:"flex",alignItems:"center",gap:".5rem"},children:[g.jsx("strong",{style:{fontSize:"1rem"},children:"Something went wrong!"}),g.jsx("button",{style:{appearance:"none",fontSize:".6em",border:"1px solid currentColor",padding:".1rem .2rem",fontWeight:"bold",borderRadius:".25rem"},onClick:()=>e(s=>!s),children:o?"Hide Error":"Show Error"})]}),g.jsx("div",{style:{height:".25rem"}}),o?g.jsx("div",{children:g.jsx("pre",{style:{fontSize:".7em",border:"1px solid red",borderRadius:".25rem",padding:".3rem",color:"red",overflow:"auto"},children:t.message?g.jsx("code",{children:t.message}):null})}):null]})}function Cs({children:t,fallback:o=null}){return Ms()?g.jsx(rt.Fragment,{children:t}):g.jsx(rt.Fragment,{children:o})}function Ms(){return rt.useSyncExternalStore(bs,()=>!0,()=>!1)}function bs(){return()=>{}}var Wt={exports:{}},zt={},Kt={exports:{}},Ht={};var Ie;function Es(){if(Ie)return Ht;Ie=1;var t=ee();function o(h,f){return h===f&&(h!==0||1/h===1/f)||h!==h&&f!==f}var e=typeof Object.is=="function"?Object.is:o,s=t.useState,n=t.useEffect,r=t.useLayoutEffect,i=t.useDebugValue;function c(h,f){var d=f(),p=s({inst:{value:d,getSnapshot:f}}),m=p[0].inst,y=p[1];return r(function(){m.value=d,m.getSnapshot=f,a(m)&&y({inst:m})},[h,d,f]),n(function(){return a(m)&&y({inst:m}),h(function(){a(m)&&y({inst:m})})},[h]),i(d),d}function a(h){var f=h.getSnapshot;h=h.value;try{var d=f();return!e(h,d)}catch{return!0}}function l(h,f){return f()}var u=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?l:c;return Ht.useSyncExternalStore=t.useSyncExternalStore!==void 0?t.useSyncExternalStore:u,Ht}var ke;function Ts(){return ke||(ke=1,Kt.exports=Es()),Kt.exports}var Oe;function Is(){if(Oe)return zt;Oe=1;var t=ee(),o=Ts();function e(l,u){return l===u&&(l!==0||1/l===1/u)||l!==l&&u!==u}var s=typeof Object.is=="function"?Object.is:e,n=o.useSyncExternalStore,r=t.useRef,i=t.useEffect,c=t.useMemo,a=t.useDebugValue;return zt.useSyncExternalStoreWithSelector=function(l,u,h,f,d){var p=r(null);if(p.current===null){var m={hasValue:!1,value:null};p.current=m}else m=p.current;p=c(function(){function _(w){if(!x){if(x=!0,P=w,w=f(w),d!==void 0&&m.hasValue){var S=m.value;if(d(S,w))return L=S}return L=w}if(S=L,s(P,w))return S;var v=f(w);return d!==void 0&&d(S,v)?(P=w,S):(P=w,L=v)}var x=!1,P,L,E=h===void 0?null:h;return[function(){return _(u())},E===null?void 0:function(){return _(E())}]},[u,h,f,d]);var y=n(l,p[0],p[1]);return i(function(){m.hasValue=!0,m.value=y},[y]),a(y),y},zt}var Fe;function ks(){return Fe||(Fe=1,Wt.exports=Is()),Wt.exports}var to=ks();const fn=oe(to);function Os(t,o=s=>s,e={}){const s=e.equal??Fs;return to.useSyncExternalStoreWithSelector(t.subscribe,()=>t.state,()=>t.state,o,s)}function Fs(t,o){if(Object.is(t,o))return!0;if(typeof t!="object"||t===null||typeof o!="object"||o===null)return!1;if(t instanceof Map&&o instanceof Map){if(t.size!==o.size)return!1;for(const[s,n]of t)if(!o.has(s)||!Object.is(n,o.get(s)))return!1;return!0}if(t instanceof Set&&o instanceof Set){if(t.size!==o.size)return!1;for(const s of t)if(!o.has(s))return!1;return!0}if(t instanceof Date&&o instanceof Date)return t.getTime()===o.getTime();const e=Ae(t);if(e.length!==Ae(o).length)return!1;for(let s=0;s"u"?Gt:window.__TSR_ROUTER_CONTEXT__?window.__TSR_ROUTER_CONTEXT__:(window.__TSR_ROUTER_CONTEXT__=Gt,Gt)}function F(t){const o=R.useContext(eo());return t?.warn,o}function O(t){const o=F({warn:t?.router===void 0}),e=t?.router||o,s=R.useRef(void 0);return Os(e.__store,n=>{if(t?.select){if(t.structuralSharing??e.options.defaultStructuralSharing){const r=B(s.current,t.select(n));return s.current=r,r}return t.select(n)}return n})}const Dt=R.createContext(void 0),As=R.createContext(void 0);function V(t){const o=R.useContext(t.from?As:Dt);return O({select:s=>{const n=s.matches.find(r=>t.from?t.from===r.routeId:r.id===o);if(K(!((t.shouldThrow??!0)&&!n),`Could not find ${t.from?`an active match from "${t.from}"`:"a nearest match!"}`),n!==void 0)return t.select?t.select(n):n},structuralSharing:t.structuralSharing})}function ae(t){return V({from:t.from,strict:t.strict,structuralSharing:t.structuralSharing,select:o=>t.select?t.select(o.loaderData):o.loaderData})}function ce(t){const{select:o,...e}=t;return V({...e,select:s=>o?o(s.loaderDeps):s.loaderDeps})}function ue(t){return V({from:t.from,shouldThrow:t.shouldThrow,structuralSharing:t.structuralSharing,strict:t.strict,select:o=>{const e=t.strict===!1?o.params:o._strictParams;return t.select?t.select(e):e}})}function le(t){return V({from:t.from,strict:t.strict,shouldThrow:t.shouldThrow,structuralSharing:t.structuralSharing,select:o=>t.select?t.select(o.search):o.search})}function he(t){const o=F();return R.useCallback(e=>o.navigate({...e,from:e.from??t?.from}),[t?.from,o])}var oo=mo();const dn=oe(oo),Lt=typeof window<"u"?R.useLayoutEffect:R.useEffect;function qt(t){const o=R.useRef({value:t,prev:null}),e=o.current.value;return t!==e&&(o.current={value:t,prev:e}),o.current.prev}function Bs(t,o,e={},s={}){R.useEffect(()=>{if(!t.current||s.disabled||typeof IntersectionObserver!="function")return;const n=new IntersectionObserver(([r])=>{o(r)},e);return n.observe(t.current),()=>{n.disconnect()}},[o,e,s.disabled,t])}function Ds(t){const o=R.useRef(null);return R.useImperativeHandle(t,()=>o.current,[]),o}function $s(t,o){const e=F(),[s,n]=R.useState(!1),r=R.useRef(!1),i=Ds(o),{activeProps:c,inactiveProps:a,activeOptions:l,to:u,preload:h,preloadDelay:f,hashScrollIntoView:d,replace:p,startTransition:m,resetScroll:y,viewTransition:_,children:x,target:P,disabled:L,style:E,className:w,onClick:S,onFocus:v,onMouseEnter:C,onMouseLeave:M,onTouchStart:T,ignoreBlocker:I,params:Y,search:D,hash:X,state:fe,mask:io,reloadDocument:rn,unsafeRelative:an,from:cn,_fromLocation:un,...de}=t,ao=O({select:b=>b.location.search,structuralSharing:!0}),pe=t.from,lt=R.useMemo(()=>({...t,from:pe}),[e,ao,pe,t._fromLocation,t.hash,t.to,t.search,t.params,t.state,t.mask,t.unsafeRelative]),W=R.useMemo(()=>e.buildLocation({...lt}),[e,lt]),vt=R.useMemo(()=>{if(L)return;let b=W.maskedLocation?W.maskedLocation.url:W.url,k=!1;return e.origin&&(b.startsWith(e.origin)?b=e.history.createHref(b.replace(e.origin,""))||"/":k=!0),{href:b,external:k}},[L,W.maskedLocation,W.url,e.origin,e.history]),St=R.useMemo(()=>{if(vt?.external)return vt.href;try{return new URL(u),u}catch{}},[u,vt]),st=t.reloadDocument||St?!1:h??e.options.defaultPreload,$t=f??e.options.defaultPreloadDelay??0,jt=O({select:b=>{if(St)return!1;if(l?.exact){if(!bo(b.location.pathname,W.pathname,e.basepath))return!1}else{const k=It(b.location.pathname,e.basepath),$=It(W.pathname,e.basepath);if(!(k.startsWith($)&&(k.length===$.length||k[$.length]==="/")))return!1}return(l?.includeSearch??!0)&&!tt(b.location.search,W.search,{partial:!l?.exact,ignoreUndefined:!l?.explicitUndefined})?!1:l?.includeHash?b.location.hash===W.hash:!0}}),Z=R.useCallback(()=>{e.preloadRoute({...lt}).catch(b=>{console.warn(b),console.warn(ws)})},[e,lt]),co=R.useCallback(b=>{b?.isIntersecting&&Z()},[Z]);Bs(i,co,Ws,{disabled:!!L||st!=="viewport"}),R.useEffect(()=>{r.current||!L&&st==="render"&&(Z(),r.current=!0)},[L,Z,st]);const uo=b=>{const k=b.currentTarget.getAttribute("target"),$=P!==void 0?P:k;if(!L&&!zs(b)&&!b.defaultPrevented&&(!$||$==="_self")&&b.button===0){b.preventDefault(),oo.flushSync(()=>{n(!0)});const ve=e.subscribe("onResolved",()=>{ve(),n(!1)});e.navigate({...lt,replace:p,resetScroll:y,hashScrollIntoView:d,startTransition:m,viewTransition:_,ignoreBlocker:I})}};if(St)return{...de,ref:i,href:St,...x&&{children:x},...P&&{target:P},...L&&{disabled:L},...E&&{style:E},...w&&{className:w},...S&&{onClick:S},...v&&{onFocus:v},...C&&{onMouseEnter:C},...M&&{onMouseLeave:M},...T&&{onTouchStart:T}};const me=b=>{L||st&&Z()},lo=me,ho=b=>{if(!(L||!st))if(!$t)Z();else{const k=b.target;if(ft.has(k))return;const $=setTimeout(()=>{ft.delete(k),Z()},$t);ft.set(k,$)}},fo=b=>{if(L||!st||!$t)return;const k=b.target,$=ft.get(k);$&&(clearTimeout($),ft.delete(k))},_t=jt?Q(c,{})??js:Jt,Rt=jt?Jt:Q(a,{})??Jt,ge=[w,_t.className,Rt.className].filter(Boolean).join(" "),ye=(E||_t.style||Rt.style)&&{...E,..._t.style,...Rt.style};return{...de,..._t,...Rt,href:vt?.href,ref:i,onClick:dt([S,uo]),onFocus:dt([v,me]),onMouseEnter:dt([C,ho]),onMouseLeave:dt([M,fo]),onTouchStart:dt([T,lo]),disabled:!!L,target:P,...ye&&{style:ye},...ge&&{className:ge},...L&&Ns,...jt&&Us,...s&&Vs}}const Jt={},js={className:"active"},Ns={role:"link","aria-disabled":!0},Us={"data-status":"active","aria-current":"page"},Vs={"data-transitioning":"transitioning"},ft=new WeakMap,Ws={rootMargin:"100px"},dt=t=>o=>{for(const e of t)if(e){if(o.defaultPrevented)return;e(o)}},so=R.forwardRef((t,o)=>{const{_asChild:e,...s}=t,{type:n,ref:r,...i}=$s(s,o),c=typeof s.children=="function"?s.children({isActive:i["data-status"]==="active"}):s.children;return e===void 0&&delete i.disabled,R.createElement(e||"a",{...i,ref:r},c)});function zs(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}class Ks extends Qe{constructor(o){super(o),this.useMatch=e=>V({select:e?.select,from:this.id,structuralSharing:e?.structuralSharing}),this.useRouteContext=e=>V({...e,from:this.id,select:s=>e?.select?e.select(s.context):s.context}),this.useSearch=e=>le({select:e?.select,structuralSharing:e?.structuralSharing,from:this.id}),this.useParams=e=>ue({select:e?.select,structuralSharing:e?.structuralSharing,from:this.id}),this.useLoaderDeps=e=>ce({...e,from:this.id}),this.useLoaderData=e=>ae({...e,from:this.id}),this.useNavigate=()=>he({from:this.fullPath}),this.Link=rt.forwardRef((e,s)=>g.jsx(so,{ref:s,from:this.fullPath,...e})),this.$$typeof=Symbol.for("react.memo")}}function Hs(t){return new Ks(t)}class Gs extends xs{constructor(o){super(o),this.useMatch=e=>V({select:e?.select,from:this.id,structuralSharing:e?.structuralSharing}),this.useRouteContext=e=>V({...e,from:this.id,select:s=>e?.select?e.select(s.context):s.context}),this.useSearch=e=>le({select:e?.select,structuralSharing:e?.structuralSharing,from:this.id}),this.useParams=e=>ue({select:e?.select,structuralSharing:e?.structuralSharing,from:this.id}),this.useLoaderDeps=e=>ce({...e,from:this.id}),this.useLoaderData=e=>ae({...e,from:this.id}),this.useNavigate=()=>he({from:this.fullPath}),this.Link=rt.forwardRef((e,s)=>g.jsx(so,{ref:s,from:this.fullPath,...e})),this.$$typeof=Symbol.for("react.memo")}}function pn(t){return new Gs(t)}function Be(t){return typeof t=="object"?new De(t,{silent:!0}).createRoute(t):new De(t,{silent:!0}).createRoute}class De{constructor(o,e){this.path=o,this.createRoute=s=>{this.silent;const n=Hs(s);return n.isRoot=!1,n},this.silent=e?.silent}}class $e{constructor(o){this.useMatch=e=>V({select:e?.select,from:this.options.id,structuralSharing:e?.structuralSharing}),this.useRouteContext=e=>V({from:this.options.id,select:s=>e?.select?e.select(s.context):s.context}),this.useSearch=e=>le({select:e?.select,structuralSharing:e?.structuralSharing,from:this.options.id}),this.useParams=e=>ue({select:e?.select,structuralSharing:e?.structuralSharing,from:this.options.id}),this.useLoaderDeps=e=>ce({...e,from:this.options.id}),this.useLoaderData=e=>ae({...e,from:this.options.id}),this.useNavigate=()=>{const e=F();return he({from:e.routesById[this.options.id].fullPath})},this.options=o,this.$$typeof=Symbol.for("react.memo")}}function je(t){return typeof t=="object"?new $e(t):o=>new $e({id:t,...o})}function qs(){const t=F(),o=R.useRef({router:t,mounted:!1}),[e,s]=R.useState(!1),{hasPendingMatches:n,isLoading:r}=O({select:h=>({isLoading:h.isLoading,hasPendingMatches:h.matches.some(f=>f.status==="pending")}),structuralSharing:!0}),i=qt(r),c=r||e||n,a=qt(c),l=r||n,u=qt(l);return t.startTransition=h=>{s(!0),R.startTransition(()=>{h(),s(!1)})},R.useEffect(()=>{const h=t.history.subscribe(t.load),f=t.buildLocation({to:t.latestLocation.pathname,search:!0,params:!0,hash:!0,state:!0,_includeValidateSearch:!0});return J(t.latestLocation.href)!==J(f.href)&&t.commitLocation({...f,replace:!0}),()=>{h()}},[t,t.history]),Lt(()=>{if(typeof window<"u"&&t.ssr||o.current.router===t&&o.current.mounted)return;o.current={router:t,mounted:!0},(async()=>{try{await t.load()}catch(f){console.error(f)}})()},[t]),Lt(()=>{i&&!r&&t.emit({type:"onLoad",...et(t.state)})},[i,t,r]),Lt(()=>{u&&!l&&t.emit({type:"onBeforeRouteMount",...et(t.state)})},[l,u,t]),Lt(()=>{a&&!c&&(t.emit({type:"onResolved",...et(t.state)}),t.__store.setState(h=>({...h,status:"idle",resolvedLocation:h.location})),os(t))},[c,a,t]),null}function Js(t){const o=O({select:e=>`not-found-${e.location.pathname}-${e.status}`});return g.jsx(ie,{getResetKey:()=>o,onCatch:(e,s)=>{if(j(e))t.onCatch?.(e,s);else throw e},errorComponent:({error:e})=>{if(j(e))return t.fallback?.(e);throw e},children:t.children})}function Ys(){return g.jsx("p",{children:"Not Found"})}function nt(t){return g.jsx(g.Fragment,{children:t.children})}function no(t,o,e){return o.options.notFoundComponent?g.jsx(o.options.notFoundComponent,{data:e}):t.options.defaultNotFoundComponent?g.jsx(t.options.defaultNotFoundComponent,{data:e}):g.jsx(Ys,{})}function Xs({children:t}){const o=F();return o.isServer?g.jsx("script",{nonce:o.options.ssr?.nonce,className:"$tsr",dangerouslySetInnerHTML:{__html:[t].filter(Boolean).join(` -`)+";$_TSR.c()"}}):null}function Zs(){const t=F();if(!t.isScrollRestoring||!t.isServer||typeof t.options.scrollRestoration=="function"&&!t.options.scrollRestoration({location:t.latestLocation}))return null;const e=(t.options.getScrollRestorationKey||Qt)(t.latestLocation),s=e!==Qt(t.latestLocation)?e:void 0,n={storageKey:kt,shouldScrollRestoration:!0};return s&&(n.key=s),g.jsx(Xs,{children:`(${We.toString()})(${JSON.stringify(n)})`})}const ro=R.memo(function({matchId:o}){const e=F(),s=O({select:_=>{const x=_.matches.find(P=>P.id===o);return K(x),{routeId:x.routeId,ssr:x.ssr,_displayPending:x._displayPending}},structuralSharing:!0}),n=e.routesById[s.routeId],r=n.options.pendingComponent??e.options.defaultPendingComponent,i=r?g.jsx(r,{}):null,c=n.options.errorComponent??e.options.defaultErrorComponent,a=n.options.onCatch??e.options.defaultOnCatch,l=n.isRoot?n.options.notFoundComponent??e.options.notFoundRoute?.options.component:n.options.notFoundComponent,u=s.ssr===!1||s.ssr==="data-only",h=(!n.isRoot||n.options.wrapInSuspense||u)&&(n.options.wrapInSuspense??r??(n.options.errorComponent?.preload||u))?R.Suspense:nt,f=c?ie:nt,d=l?Js:nt,p=O({select:_=>_.loadedAt}),m=O({select:_=>{const x=_.matches.findIndex(P=>P.id===o);return _.matches[x-1]?.routeId}}),y=n.isRoot?n.options.shellComponent??nt:nt;return g.jsxs(y,{children:[g.jsx(Dt.Provider,{value:o,children:g.jsx(h,{fallback:i,children:g.jsx(f,{getResetKey:()=>p,errorComponent:c||Bt,onCatch:(_,x)=>{if(j(_))throw _;a?.(_,x)},children:g.jsx(d,{fallback:_=>{if(!l||_.routeId&&_.routeId!==s.routeId||!_.routeId&&!n.isRoot)throw _;return R.createElement(l,_)},children:u||s._displayPending?g.jsx(Cs,{fallback:i,children:g.jsx(Ne,{matchId:o})}):g.jsx(Ne,{matchId:o})})})})}),m===A&&e.options.scrollRestoration?g.jsxs(g.Fragment,{children:[g.jsx(Qs,{}),g.jsx(Zs,{})]}):null]})});function Qs(){const t=F(),o=R.useRef(void 0);return g.jsx("script",{suppressHydrationWarning:!0,ref:e=>{e&&(o.current===void 0||o.current.href!==t.latestLocation.href)&&(t.emit({type:"onRendered",...et(t.state)}),o.current=t.latestLocation)}},t.latestLocation.state.__TSR_key)}const Ne=R.memo(function({matchId:o}){const e=F(),{match:s,key:n,routeId:r}=O({select:a=>{const l=a.matches.find(p=>p.id===o),u=l.routeId,f=(e.routesById[u].options.remountDeps??e.options.defaultRemountDeps)?.({routeId:u,loaderDeps:l.loaderDeps,params:l._strictParams,search:l._strictSearch});return{key:f?JSON.stringify(f):void 0,routeId:u,match:{id:l.id,status:l.status,error:l.error,_forcePending:l._forcePending,_displayPending:l._displayPending}}},structuralSharing:!0}),i=e.routesById[r],c=R.useMemo(()=>{const a=i.options.component??e.options.defaultComponent;return a?g.jsx(a,{},n):g.jsx(tn,{})},[n,i.options.component,e.options.defaultComponent]);if(s._displayPending)throw e.getMatch(s.id)?._nonReactive.displayPendingPromise;if(s._forcePending)throw e.getMatch(s.id)?._nonReactive.minPendingPromise;if(s.status==="pending"){const a=i.options.pendingMinMs??e.options.defaultPendingMinMs;if(a){const l=e.getMatch(s.id);if(l&&!l._nonReactive.minPendingPromise&&!e.isServer){const u=it();l._nonReactive.minPendingPromise=u,setTimeout(()=>{u.resolve(),l._nonReactive.minPendingPromise=void 0},a)}}throw e.getMatch(s.id)?._nonReactive.loadPromise}if(s.status==="notFound")return K(j(s.error)),no(e,i,s.error);if(s.status==="redirected")throw K(N(s.error)),e.getMatch(s.id)?._nonReactive.loadPromise;if(s.status==="error"){if(e.isServer){const a=(i.options.errorComponent??e.options.defaultErrorComponent)||Bt;return g.jsx(a,{error:s.error,reset:void 0,info:{componentStack:""}})}throw s.error}return c}),tn=R.memo(function(){const o=F(),e=R.useContext(Dt),s=O({select:l=>l.matches.find(u=>u.id===e)?.routeId}),n=o.routesById[s],r=O({select:l=>{const h=l.matches.find(f=>f.id===e);return K(h),h.globalNotFound}}),i=O({select:l=>{const u=l.matches,h=u.findIndex(f=>f.id===e);return u[h+1]?.id}}),c=o.options.defaultPendingComponent?g.jsx(o.options.defaultPendingComponent,{}):null;if(r)return no(o,n,void 0);if(!i)return null;const a=g.jsx(ro,{matchId:i});return s===A?g.jsx(R.Suspense,{fallback:c,children:a}):a});function en(){const t=F(),e=t.routesById[A].options.pendingComponent??t.options.defaultPendingComponent,s=e?g.jsx(e,{}):null,n=t.isServer||typeof document<"u"&&t.ssr?nt:R.Suspense,r=g.jsxs(n,{fallback:s,children:[!t.isServer&&g.jsx(qs,{}),g.jsx(on,{})]});return t.options.InnerWrap?g.jsx(t.options.InnerWrap,{children:r}):r}function on(){const t=F(),o=O({select:n=>n.matches[0]?.id}),e=O({select:n=>n.loadedAt}),s=o?g.jsx(ro,{matchId:o}):null;return g.jsx(Dt.Provider,{value:o,children:t.options.disableGlobalCatchBoundary?s:g.jsx(ie,{getResetKey:()=>e,errorComponent:Bt,onCatch:n=>{n.message||n.toString()},children:s})})}function mn(){const t=F();return O({select:o=>[o.location.href,o.resolvedLocation?.href,o.status],structuralSharing:!0}),R.useCallback(o=>{const{pending:e,caseSensitive:s,fuzzy:n,includeSearch:r,...i}=o;return t.matchRoute(i,{pending:e,caseSensitive:s,fuzzy:n,includeSearch:r})},[t])}const gn=t=>new sn(t);class sn extends vs{constructor(o){super(o)}}typeof globalThis<"u"?(globalThis.createFileRoute=Be,globalThis.createLazyFileRoute=je):typeof window<"u"&&(window.createFileRoute=Be,window.createLazyFileRoute=je);function nn({router:t,children:o,...e}){Object.keys(e).length>0&&t.update({...t.options,...e,context:{...t.options.context,...e.context}});const s=eo(),n=g.jsx(s.Provider,{value:t,children:o});return t.options.Wrap?g.jsx(t.options.Wrap,{children:n}):n}function yn({router:t,...o}){return g.jsx(nn,{router:t,...o,children:g.jsx(en,{})})}export{so as L,tn as O,rt as R,hn as a,oo as b,dn as c,fn as d,mn as e,pn as f,Hs as g,gn as h,K as i,g as j,us as k,yn as l,R as r,he as u}; +`)+";$_TSR.c()"}}):null}function Zs(){const t=F();if(!t.isScrollRestoring||!t.isServer||typeof t.options.scrollRestoration=="function"&&!t.options.scrollRestoration({location:t.latestLocation}))return null;const e=(t.options.getScrollRestorationKey||Qt)(t.latestLocation),s=e!==Qt(t.latestLocation)?e:void 0,n={storageKey:kt,shouldScrollRestoration:!0};return s&&(n.key=s),g.jsx(Xs,{children:`(${We.toString()})(${JSON.stringify(n)})`})}const ro=R.memo(function({matchId:o}){const e=F(),s=O({select:_=>{const x=_.matches.find(P=>P.id===o);return K(x),{routeId:x.routeId,ssr:x.ssr,_displayPending:x._displayPending}},structuralSharing:!0}),n=e.routesById[s.routeId],r=n.options.pendingComponent??e.options.defaultPendingComponent,i=r?g.jsx(r,{}):null,c=n.options.errorComponent??e.options.defaultErrorComponent,a=n.options.onCatch??e.options.defaultOnCatch,l=n.isRoot?n.options.notFoundComponent??e.options.notFoundRoute?.options.component:n.options.notFoundComponent,u=s.ssr===!1||s.ssr==="data-only",h=(!n.isRoot||n.options.wrapInSuspense||u)&&(n.options.wrapInSuspense??r??(n.options.errorComponent?.preload||u))?R.Suspense:nt,f=c?ie:nt,d=l?Js:nt,p=O({select:_=>_.loadedAt}),m=O({select:_=>{const x=_.matches.findIndex(P=>P.id===o);return _.matches[x-1]?.routeId}}),y=n.isRoot?n.options.shellComponent??nt:nt;return g.jsxs(y,{children:[g.jsx(Dt.Provider,{value:o,children:g.jsx(h,{fallback:i,children:g.jsx(f,{getResetKey:()=>p,errorComponent:c||Bt,onCatch:(_,x)=>{if(j(_))throw _;a?.(_,x)},children:g.jsx(d,{fallback:_=>{if(!l||_.routeId&&_.routeId!==s.routeId||!_.routeId&&!n.isRoot)throw _;return R.createElement(l,_)},children:u||s._displayPending?g.jsx(Cs,{fallback:i,children:g.jsx(Ne,{matchId:o})}):g.jsx(Ne,{matchId:o})})})})}),m===A&&e.options.scrollRestoration?g.jsxs(g.Fragment,{children:[g.jsx(Qs,{}),g.jsx(Zs,{})]}):null]})});function Qs(){const t=F(),o=R.useRef(void 0);return g.jsx("script",{suppressHydrationWarning:!0,ref:e=>{e&&(o.current===void 0||o.current.href!==t.latestLocation.href)&&(t.emit({type:"onRendered",...et(t.state)}),o.current=t.latestLocation)}},t.latestLocation.state.__TSR_key)}const Ne=R.memo(function({matchId:o}){const e=F(),{match:s,key:n,routeId:r}=O({select:a=>{const l=a.matches.find(p=>p.id===o),u=l.routeId,f=(e.routesById[u].options.remountDeps??e.options.defaultRemountDeps)?.({routeId:u,loaderDeps:l.loaderDeps,params:l._strictParams,search:l._strictSearch});return{key:f?JSON.stringify(f):void 0,routeId:u,match:{id:l.id,status:l.status,error:l.error,_forcePending:l._forcePending,_displayPending:l._displayPending}}},structuralSharing:!0}),i=e.routesById[r],c=R.useMemo(()=>{const a=i.options.component??e.options.defaultComponent;return a?g.jsx(a,{},n):g.jsx(tn,{})},[n,i.options.component,e.options.defaultComponent]);if(s._displayPending)throw e.getMatch(s.id)?._nonReactive.displayPendingPromise;if(s._forcePending)throw e.getMatch(s.id)?._nonReactive.minPendingPromise;if(s.status==="pending"){const a=i.options.pendingMinMs??e.options.defaultPendingMinMs;if(a){const l=e.getMatch(s.id);if(l&&!l._nonReactive.minPendingPromise&&!e.isServer){const u=it();l._nonReactive.minPendingPromise=u,setTimeout(()=>{u.resolve(),l._nonReactive.minPendingPromise=void 0},a)}}throw e.getMatch(s.id)?._nonReactive.loadPromise}if(s.status==="notFound")return K(j(s.error)),no(e,i,s.error);if(s.status==="redirected")throw K(N(s.error)),e.getMatch(s.id)?._nonReactive.loadPromise;if(s.status==="error"){if(e.isServer){const a=(i.options.errorComponent??e.options.defaultErrorComponent)||Bt;return g.jsx(a,{error:s.error,reset:void 0,info:{componentStack:""}})}throw s.error}return c}),tn=R.memo(function(){const o=F(),e=R.useContext(Dt),s=O({select:l=>l.matches.find(u=>u.id===e)?.routeId}),n=o.routesById[s],r=O({select:l=>{const h=l.matches.find(f=>f.id===e);return K(h),h.globalNotFound}}),i=O({select:l=>{const u=l.matches,h=u.findIndex(f=>f.id===e);return u[h+1]?.id}}),c=o.options.defaultPendingComponent?g.jsx(o.options.defaultPendingComponent,{}):null;if(r)return no(o,n,void 0);if(!i)return null;const a=g.jsx(ro,{matchId:i});return s===A?g.jsx(R.Suspense,{fallback:c,children:a}):a});function en(){const t=F(),e=t.routesById[A].options.pendingComponent??t.options.defaultPendingComponent,s=e?g.jsx(e,{}):null,n=t.isServer||typeof document<"u"&&t.ssr?nt:R.Suspense,r=g.jsxs(n,{fallback:s,children:[!t.isServer&&g.jsx(qs,{}),g.jsx(on,{})]});return t.options.InnerWrap?g.jsx(t.options.InnerWrap,{children:r}):r}function on(){const t=F(),o=O({select:n=>n.matches[0]?.id}),e=O({select:n=>n.loadedAt}),s=o?g.jsx(ro,{matchId:o}):null;return g.jsx(Dt.Provider,{value:o,children:t.options.disableGlobalCatchBoundary?s:g.jsx(ie,{getResetKey:()=>e,errorComponent:Bt,onCatch:n=>{n.message||n.toString()},children:s})})}function mn(){const t=F();return O({select:o=>[o.location.href,o.resolvedLocation?.href,o.status],structuralSharing:!0}),R.useCallback(o=>{const{pending:e,caseSensitive:s,fuzzy:n,includeSearch:r,...i}=o;return t.matchRoute(i,{pending:e,caseSensitive:s,fuzzy:n,includeSearch:r})},[t])}const gn=t=>new sn(t);class sn extends vs{constructor(o){super(o)}}typeof globalThis<"u"?(globalThis.createFileRoute=Be,globalThis.createLazyFileRoute=je):typeof window<"u"&&(window.createFileRoute=Be,window.createLazyFileRoute=je);function nn({router:t,children:o,...e}){Object.keys(e).length>0&&t.update({...t.options,...e,context:{...t.options.context,...e.context}});const s=eo(),n=g.jsx(s.Provider,{value:t,children:o});return t.options.Wrap?g.jsx(t.options.Wrap,{children:n}):n}function yn({router:t,...o}){return g.jsx(nn,{router:t,...o,children:g.jsx(en,{})})}export{so as L,tn as O,rt as R,hn as a,oo as b,dn as c,fn as d,Ts as e,mn as f,pn as g,Hs as h,K as i,g as j,gn as k,us as l,yn as m,R as r,he as u}; diff --git a/webui/dist/assets/ui-vendor-BLBhIcJ8.js b/webui/dist/assets/ui-vendor-BgfqR_Xz.js similarity index 99% rename from webui/dist/assets/ui-vendor-BLBhIcJ8.js rename to webui/dist/assets/ui-vendor-BgfqR_Xz.js index 4b143681..93e393f0 100644 --- a/webui/dist/assets/ui-vendor-BLBhIcJ8.js +++ b/webui/dist/assets/ui-vendor-BgfqR_Xz.js @@ -1,4 +1,4 @@ -import{r as a,j as x,R as we,a as Vt,b as at,c as yr}from"./router-SinpzM5S.js";function k(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),n===!1||!r.defaultPrevented)return t?.(r)}}function wr(e,t){const n=a.createContext(t),o=i=>{const{children:c,...s}=i,l=a.useMemo(()=>s,Object.values(s));return x.jsx(n.Provider,{value:l,children:c})};o.displayName=e+"Provider";function r(i){const c=a.useContext(n);if(c)return c;if(t!==void 0)return t;throw new Error(`\`${i}\` must be used within \`${e}\``)}return[o,r]}function Ve(e,t=[]){let n=[];function o(i,c){const s=a.createContext(c),l=n.length;n=[...n,c];const u=p=>{const{scope:h,children:m,...w}=p,f=h?.[e]?.[l]||s,g=a.useMemo(()=>w,Object.values(w));return x.jsx(f.Provider,{value:g,children:m})};u.displayName=i+"Provider";function d(p,h){const m=h?.[e]?.[l]||s,w=a.useContext(m);if(w)return w;if(c!==void 0)return c;throw new Error(`\`${p}\` must be used within \`${i}\``)}return[u,d]}const r=()=>{const i=n.map(c=>a.createContext(c));return function(s){const l=s?.[e]||i;return a.useMemo(()=>({[`__scope${e}`]:{...s,[e]:l}}),[s,l])}};return r.scopeName=e,[o,xr(r,...t)]}function xr(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const o=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(i){const c=o.reduce((s,{useScope:l,scopeName:u})=>{const p=l(i)[`__scope${u}`];return{...s,...p}},{});return a.useMemo(()=>({[`__scope${t.scopeName}`]:c}),[c])}};return n.scopeName=t.scopeName,n}function sn(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function _e(...e){return t=>{let n=!1;const o=e.map(r=>{const i=sn(r,t);return!n&&typeof i=="function"&&(n=!0),i});if(n)return()=>{for(let r=0;r{const{children:i,...c}=o,s=a.Children.toArray(i),l=s.find(Cr);if(l){const u=l.props.children,d=s.map(p=>p===l?a.Children.count(u)>1?a.Children.only(null):a.isValidElement(u)?u.props.children:null:p);return x.jsx(t,{...c,ref:r,children:a.isValidElement(u)?a.cloneElement(u,void 0,d):null})}return x.jsx(t,{...c,ref:r,children:i})});return n.displayName=`${e}.Slot`,n}function Sr(e){const t=a.forwardRef((n,o)=>{const{children:r,...i}=n;if(a.isValidElement(r)){const c=Rr(r),s=Er(i,r.props);return r.type!==a.Fragment&&(s.ref=o?_e(o,c):c),a.cloneElement(r,s)}return a.Children.count(r)>1?a.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var br=Symbol("radix.slottable");function Cr(e){return a.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===br}function Er(e,t){const n={...t};for(const o in t){const r=e[o],i=t[o];/^on[A-Z]/.test(o)?r&&i?n[o]=(...s)=>{const l=i(...s);return r(...s),l}:r&&(n[o]=r):o==="style"?n[o]={...r,...i}:o==="className"&&(n[o]=[r,i].filter(Boolean).join(" "))}return{...e,...n}}function Rr(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function Pr(e){const t=e+"CollectionProvider",[n,o]=Ve(t),[r,i]=n(t,{collectionRef:{current:null},itemMap:new Map}),c=f=>{const{scope:g,children:y}=f,v=we.useRef(null),S=we.useRef(new Map).current;return x.jsx(r,{scope:g,itemMap:S,collectionRef:v,children:y})};c.displayName=t;const s=e+"CollectionSlot",l=cn(s),u=we.forwardRef((f,g)=>{const{scope:y,children:v}=f,S=i(s,y),b=H(g,S.collectionRef);return x.jsx(l,{ref:b,children:v})});u.displayName=s;const d=e+"CollectionItemSlot",p="data-radix-collection-item",h=cn(d),m=we.forwardRef((f,g)=>{const{scope:y,children:v,...S}=f,b=we.useRef(null),C=H(g,b),R=i(d,y);return we.useEffect(()=>(R.itemMap.set(b,{ref:b,...S}),()=>void R.itemMap.delete(b))),x.jsx(h,{[p]:"",ref:C,children:v})});m.displayName=d;function w(f){const g=i(e+"CollectionConsumer",f);return we.useCallback(()=>{const v=g.collectionRef.current;if(!v)return[];const S=Array.from(v.querySelectorAll(`[${p}]`));return Array.from(g.itemMap.values()).sort((R,E)=>S.indexOf(R.ref.current)-S.indexOf(E.ref.current))},[g.collectionRef,g.itemMap])}return[{Provider:c,Slot:u,ItemSlot:m},w,o]}var K=globalThis?.document?a.useLayoutEffect:()=>{},Ar=Vt[" useId ".trim().toString()]||(()=>{}),Or=0;function Te(e){const[t,n]=a.useState(Ar());return K(()=>{n(o=>o??String(Or++))},[e]),t?`radix-${t}`:""}function Tr(e){const t=Nr(e),n=a.forwardRef((o,r)=>{const{children:i,...c}=o,s=a.Children.toArray(i),l=s.find(Dr);if(l){const u=l.props.children,d=s.map(p=>p===l?a.Children.count(u)>1?a.Children.only(null):a.isValidElement(u)?u.props.children:null:p);return x.jsx(t,{...c,ref:r,children:a.isValidElement(u)?a.cloneElement(u,void 0,d):null})}return x.jsx(t,{...c,ref:r,children:i})});return n.displayName=`${e}.Slot`,n}function Nr(e){const t=a.forwardRef((n,o)=>{const{children:r,...i}=n;if(a.isValidElement(r)){const c=Mr(r),s=_r(i,r.props);return r.type!==a.Fragment&&(s.ref=o?_e(o,c):c),a.cloneElement(r,s)}return a.Children.count(r)>1?a.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Ir=Symbol("radix.slottable");function Dr(e){return a.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Ir}function _r(e,t){const n={...t};for(const o in t){const r=e[o],i=t[o];/^on[A-Z]/.test(o)?r&&i?n[o]=(...s)=>{const l=i(...s);return r(...s),l}:r&&(n[o]=r):o==="style"?n[o]={...r,...i}:o==="className"&&(n[o]=[r,i].filter(Boolean).join(" "))}return{...e,...n}}function Mr(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Lr=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],M=Lr.reduce((e,t)=>{const n=Tr(`Primitive.${t}`),o=a.forwardRef((r,i)=>{const{asChild:c,...s}=r,l=c?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),x.jsx(l,{...s,ref:i})});return o.displayName=`Primitive.${t}`,{...e,[t]:o}},{});function kr(e,t){e&&at.flushSync(()=>e.dispatchEvent(t))}function xe(e){const t=a.useRef(e);return a.useEffect(()=>{t.current=e}),a.useMemo(()=>(...n)=>t.current?.(...n),[])}var jr=Vt[" useInsertionEffect ".trim().toString()]||K;function et({prop:e,defaultProp:t,onChange:n=()=>{},caller:o}){const[r,i,c]=Fr({defaultProp:t,onChange:n}),s=e!==void 0,l=s?e:r;{const d=a.useRef(e!==void 0);a.useEffect(()=>{const p=d.current;p!==s&&console.warn(`${o} is changing from ${p?"controlled":"uncontrolled"} to ${s?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),d.current=s},[s,o])}const u=a.useCallback(d=>{if(s){const p=Wr(d)?d(e):d;p!==e&&c.current?.(p)}else i(d)},[s,e,i,c]);return[l,u]}function Fr({defaultProp:e,onChange:t}){const[n,o]=a.useState(e),r=a.useRef(n),i=a.useRef(t);return jr(()=>{i.current=t},[t]),a.useEffect(()=>{r.current!==n&&(i.current?.(n),r.current=n)},[n,r]),[n,o,i]}function Wr(e){return typeof e=="function"}var $r=a.createContext(void 0);function Br(e){const t=a.useContext($r);return e||t||"ltr"}function Vr(e,t){return a.useReducer((n,o)=>t[n][o]??n,e)}var He=e=>{const{present:t,children:n}=e,o=Hr(t),r=typeof n=="function"?n({present:o.isPresent}):a.Children.only(n),i=H(o.ref,Ur(r));return typeof n=="function"||o.isPresent?a.cloneElement(r,{ref:i}):null};He.displayName="Presence";function Hr(e){const[t,n]=a.useState(),o=a.useRef(null),r=a.useRef(e),i=a.useRef("none"),c=e?"mounted":"unmounted",[s,l]=Vr(c,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return a.useEffect(()=>{const u=ze(o.current);i.current=s==="mounted"?u:"none"},[s]),K(()=>{const u=o.current,d=r.current;if(d!==e){const h=i.current,m=ze(u);e?l("MOUNT"):m==="none"||u?.display==="none"?l("UNMOUNT"):l(d&&h!==m?"ANIMATION_OUT":"UNMOUNT"),r.current=e}},[e,l]),K(()=>{if(t){let u;const d=t.ownerDocument.defaultView??window,p=m=>{const f=ze(o.current).includes(CSS.escape(m.animationName));if(m.target===t&&f&&(l("ANIMATION_END"),!r.current)){const g=t.style.animationFillMode;t.style.animationFillMode="forwards",u=d.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=g)})}},h=m=>{m.target===t&&(i.current=ze(o.current))};return t.addEventListener("animationstart",h),t.addEventListener("animationcancel",p),t.addEventListener("animationend",p),()=>{d.clearTimeout(u),t.removeEventListener("animationstart",h),t.removeEventListener("animationcancel",p),t.removeEventListener("animationend",p)}}else l("ANIMATION_END")},[t,l]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:a.useCallback(u=>{o.current=u?getComputedStyle(u):null,n(u)},[])}}function ze(e){return e?.animationName||"none"}function Ur(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function an(e,[t,n]){return Math.min(n,Math.max(t,e))}var zr=Symbol.for("react.lazy"),tt=Vt[" use ".trim().toString()];function Kr(e){return typeof e=="object"&&e!==null&&"then"in e}function Dn(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===zr&&"_payload"in e&&Kr(e._payload)}function _n(e){const t=Yr(e),n=a.forwardRef((o,r)=>{let{children:i,...c}=o;Dn(i)&&typeof tt=="function"&&(i=tt(i._payload));const s=a.Children.toArray(i),l=s.find(Gr);if(l){const u=l.props.children,d=s.map(p=>p===l?a.Children.count(u)>1?a.Children.only(null):a.isValidElement(u)?u.props.children:null:p);return x.jsx(t,{...c,ref:r,children:a.isValidElement(u)?a.cloneElement(u,void 0,d):null})}return x.jsx(t,{...c,ref:r,children:i})});return n.displayName=`${e}.Slot`,n}var wa=_n("Slot");function Yr(e){const t=a.forwardRef((n,o)=>{let{children:r,...i}=n;if(Dn(r)&&typeof tt=="function"&&(r=tt(r._payload)),a.isValidElement(r)){const c=Zr(r),s=qr(i,r.props);return r.type!==a.Fragment&&(s.ref=o?_e(o,c):c),a.cloneElement(r,s)}return a.Children.count(r)>1?a.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Xr=Symbol("radix.slottable");function Gr(e){return a.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Xr}function qr(e,t){const n={...t};for(const o in t){const r=e[o],i=t[o];/^on[A-Z]/.test(o)?r&&i?n[o]=(...s)=>{const l=i(...s);return r(...s),l}:r&&(n[o]=r):o==="style"?n[o]={...r,...i}:o==="className"&&(n[o]=[r,i].filter(Boolean).join(" "))}return{...e,...n}}function Zr(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function Mn(e){const t=a.useRef({value:e,previous:e});return a.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}function Ln(e){const[t,n]=a.useState(void 0);return K(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const o=new ResizeObserver(r=>{if(!Array.isArray(r)||!r.length)return;const i=r[0];let c,s;if("borderBoxSize"in i){const l=i.borderBoxSize,u=Array.isArray(l)?l[0]:l;c=u.inlineSize,s=u.blockSize}else c=e.offsetWidth,s=e.offsetHeight;n({width:c,height:s})});return o.observe(e,{box:"border-box"}),()=>o.unobserve(e)}else n(void 0)},[e]),t}var Qr=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Jr=Qr.reduce((e,t)=>{const n=_n(`Primitive.${t}`),o=a.forwardRef((r,i)=>{const{asChild:c,...s}=r,l=c?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),x.jsx(l,{...s,ref:i})});return o.displayName=`Primitive.${t}`,{...e,[t]:o}},{}),ei="Label",kn=a.forwardRef((e,t)=>x.jsx(Jr.label,{...e,ref:t,onMouseDown:n=>{n.target.closest("button, input, select, textarea")||(e.onMouseDown?.(n),!n.defaultPrevented&&n.detail>1&&n.preventDefault())}}));kn.displayName=ei;var xa=kn;function ti(e,t=globalThis?.document){const n=xe(e);a.useEffect(()=>{const o=r=>{r.key==="Escape"&&n(r)};return t.addEventListener("keydown",o,{capture:!0}),()=>t.removeEventListener("keydown",o,{capture:!0})},[n,t])}var ni="DismissableLayer",Dt="dismissableLayer.update",oi="dismissableLayer.pointerDownOutside",ri="dismissableLayer.focusOutside",ln,jn=a.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),lt=a.forwardRef((e,t)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:o,onPointerDownOutside:r,onFocusOutside:i,onInteractOutside:c,onDismiss:s,...l}=e,u=a.useContext(jn),[d,p]=a.useState(null),h=d?.ownerDocument??globalThis?.document,[,m]=a.useState({}),w=H(t,E=>p(E)),f=Array.from(u.layers),[g]=[...u.layersWithOutsidePointerEventsDisabled].slice(-1),y=f.indexOf(g),v=d?f.indexOf(d):-1,S=u.layersWithOutsidePointerEventsDisabled.size>0,b=v>=y,C=si(E=>{const O=E.target,_=[...u.branches].some(I=>I.contains(O));!b||_||(r?.(E),c?.(E),E.defaultPrevented||s?.())},h),R=ci(E=>{const O=E.target;[...u.branches].some(I=>I.contains(O))||(i?.(E),c?.(E),E.defaultPrevented||s?.())},h);return ti(E=>{v===u.layers.size-1&&(o?.(E),!E.defaultPrevented&&s&&(E.preventDefault(),s()))},h),a.useEffect(()=>{if(d)return n&&(u.layersWithOutsidePointerEventsDisabled.size===0&&(ln=h.body.style.pointerEvents,h.body.style.pointerEvents="none"),u.layersWithOutsidePointerEventsDisabled.add(d)),u.layers.add(d),un(),()=>{n&&u.layersWithOutsidePointerEventsDisabled.size===1&&(h.body.style.pointerEvents=ln)}},[d,h,n,u]),a.useEffect(()=>()=>{d&&(u.layers.delete(d),u.layersWithOutsidePointerEventsDisabled.delete(d),un())},[d,u]),a.useEffect(()=>{const E=()=>m({});return document.addEventListener(Dt,E),()=>document.removeEventListener(Dt,E)},[]),x.jsx(M.div,{...l,ref:w,style:{pointerEvents:S?b?"auto":"none":void 0,...e.style},onFocusCapture:k(e.onFocusCapture,R.onFocusCapture),onBlurCapture:k(e.onBlurCapture,R.onBlurCapture),onPointerDownCapture:k(e.onPointerDownCapture,C.onPointerDownCapture)})});lt.displayName=ni;var ii="DismissableLayerBranch",Fn=a.forwardRef((e,t)=>{const n=a.useContext(jn),o=a.useRef(null),r=H(t,o);return a.useEffect(()=>{const i=o.current;if(i)return n.branches.add(i),()=>{n.branches.delete(i)}},[n.branches]),x.jsx(M.div,{...e,ref:r})});Fn.displayName=ii;function si(e,t=globalThis?.document){const n=xe(e),o=a.useRef(!1),r=a.useRef(()=>{});return a.useEffect(()=>{const i=s=>{if(s.target&&!o.current){let l=function(){Wn(oi,n,u,{discrete:!0})};const u={originalEvent:s};s.pointerType==="touch"?(t.removeEventListener("click",r.current),r.current=l,t.addEventListener("click",r.current,{once:!0})):l()}else t.removeEventListener("click",r.current);o.current=!1},c=window.setTimeout(()=>{t.addEventListener("pointerdown",i)},0);return()=>{window.clearTimeout(c),t.removeEventListener("pointerdown",i),t.removeEventListener("click",r.current)}},[t,n]),{onPointerDownCapture:()=>o.current=!0}}function ci(e,t=globalThis?.document){const n=xe(e),o=a.useRef(!1);return a.useEffect(()=>{const r=i=>{i.target&&!o.current&&Wn(ri,n,{originalEvent:i},{discrete:!1})};return t.addEventListener("focusin",r),()=>t.removeEventListener("focusin",r)},[t,n]),{onFocusCapture:()=>o.current=!0,onBlurCapture:()=>o.current=!1}}function un(){const e=new CustomEvent(Dt);document.dispatchEvent(e)}function Wn(e,t,n,{discrete:o}){const r=n.originalEvent.target,i=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&r.addEventListener(e,t,{once:!0}),o?kr(r,i):r.dispatchEvent(i)}var Sa=lt,ba=Fn,Ct="focusScope.autoFocusOnMount",Et="focusScope.autoFocusOnUnmount",fn={bubbles:!1,cancelable:!0},ai="FocusScope",Ht=a.forwardRef((e,t)=>{const{loop:n=!1,trapped:o=!1,onMountAutoFocus:r,onUnmountAutoFocus:i,...c}=e,[s,l]=a.useState(null),u=xe(r),d=xe(i),p=a.useRef(null),h=H(t,f=>l(f)),m=a.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;a.useEffect(()=>{if(o){let f=function(S){if(m.paused||!s)return;const b=S.target;s.contains(b)?p.current=b:ue(p.current,{select:!0})},g=function(S){if(m.paused||!s)return;const b=S.relatedTarget;b!==null&&(s.contains(b)||ue(p.current,{select:!0}))},y=function(S){if(document.activeElement===document.body)for(const C of S)C.removedNodes.length>0&&ue(s)};document.addEventListener("focusin",f),document.addEventListener("focusout",g);const v=new MutationObserver(y);return s&&v.observe(s,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",f),document.removeEventListener("focusout",g),v.disconnect()}}},[o,s,m.paused]),a.useEffect(()=>{if(s){pn.add(m);const f=document.activeElement;if(!s.contains(f)){const y=new CustomEvent(Ct,fn);s.addEventListener(Ct,u),s.dispatchEvent(y),y.defaultPrevented||(li(mi($n(s)),{select:!0}),document.activeElement===f&&ue(s))}return()=>{s.removeEventListener(Ct,u),setTimeout(()=>{const y=new CustomEvent(Et,fn);s.addEventListener(Et,d),s.dispatchEvent(y),y.defaultPrevented||ue(f??document.body,{select:!0}),s.removeEventListener(Et,d),pn.remove(m)},0)}}},[s,u,d,m]);const w=a.useCallback(f=>{if(!n&&!o||m.paused)return;const g=f.key==="Tab"&&!f.altKey&&!f.ctrlKey&&!f.metaKey,y=document.activeElement;if(g&&y){const v=f.currentTarget,[S,b]=ui(v);S&&b?!f.shiftKey&&y===b?(f.preventDefault(),n&&ue(S,{select:!0})):f.shiftKey&&y===S&&(f.preventDefault(),n&&ue(b,{select:!0})):y===v&&f.preventDefault()}},[n,o,m.paused]);return x.jsx(M.div,{tabIndex:-1,...c,ref:h,onKeyDown:w})});Ht.displayName=ai;function li(e,{select:t=!1}={}){const n=document.activeElement;for(const o of e)if(ue(o,{select:t}),document.activeElement!==n)return}function ui(e){const t=$n(e),n=dn(t,e),o=dn(t.reverse(),e);return[n,o]}function $n(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>{const r=o.tagName==="INPUT"&&o.type==="hidden";return o.disabled||o.hidden||r?NodeFilter.FILTER_SKIP:o.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function dn(e,t){for(const n of e)if(!fi(n,{upTo:t}))return n}function fi(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function di(e){return e instanceof HTMLInputElement&&"select"in e}function ue(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&di(e)&&t&&e.select()}}var pn=pi();function pi(){let e=[];return{add(t){const n=e[0];t!==n&&n?.pause(),e=mn(e,t),e.unshift(t)},remove(t){e=mn(e,t),e[0]?.resume()}}}function mn(e,t){const n=[...e],o=n.indexOf(t);return o!==-1&&n.splice(o,1),n}function mi(e){return e.filter(t=>t.tagName!=="A")}var hi="Portal",Ut=a.forwardRef((e,t)=>{const{container:n,...o}=e,[r,i]=a.useState(!1);K(()=>i(!0),[]);const c=n||r&&globalThis?.document?.body;return c?yr.createPortal(x.jsx(M.div,{...o,ref:t}),c):null});Ut.displayName=hi;var Rt=0;function Bn(){a.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??hn()),document.body.insertAdjacentElement("beforeend",e[1]??hn()),Rt++,()=>{Rt===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(t=>t.remove()),Rt--}},[])}function hn(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var ne=function(){return ne=Object.assign||function(t){for(var n,o=1,r=arguments.length;o"u")return Di;var t=_i(e),n=document.documentElement.clientWidth,o=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,o-n+t[2]-t[0])}},Li=zn(),Ne="data-scroll-locked",ki=function(e,t,n,o){var r=e.left,i=e.top,c=e.right,s=e.gap;return n===void 0&&(n="margin"),` +import{r as a,j as x,R as we,a as Vt,b as at,c as yr}from"./router-DQNkr8RI.js";function k(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),n===!1||!r.defaultPrevented)return t?.(r)}}function wr(e,t){const n=a.createContext(t),o=i=>{const{children:c,...s}=i,l=a.useMemo(()=>s,Object.values(s));return x.jsx(n.Provider,{value:l,children:c})};o.displayName=e+"Provider";function r(i){const c=a.useContext(n);if(c)return c;if(t!==void 0)return t;throw new Error(`\`${i}\` must be used within \`${e}\``)}return[o,r]}function Ve(e,t=[]){let n=[];function o(i,c){const s=a.createContext(c),l=n.length;n=[...n,c];const u=p=>{const{scope:h,children:m,...w}=p,f=h?.[e]?.[l]||s,g=a.useMemo(()=>w,Object.values(w));return x.jsx(f.Provider,{value:g,children:m})};u.displayName=i+"Provider";function d(p,h){const m=h?.[e]?.[l]||s,w=a.useContext(m);if(w)return w;if(c!==void 0)return c;throw new Error(`\`${p}\` must be used within \`${i}\``)}return[u,d]}const r=()=>{const i=n.map(c=>a.createContext(c));return function(s){const l=s?.[e]||i;return a.useMemo(()=>({[`__scope${e}`]:{...s,[e]:l}}),[s,l])}};return r.scopeName=e,[o,xr(r,...t)]}function xr(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const o=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(i){const c=o.reduce((s,{useScope:l,scopeName:u})=>{const p=l(i)[`__scope${u}`];return{...s,...p}},{});return a.useMemo(()=>({[`__scope${t.scopeName}`]:c}),[c])}};return n.scopeName=t.scopeName,n}function sn(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function _e(...e){return t=>{let n=!1;const o=e.map(r=>{const i=sn(r,t);return!n&&typeof i=="function"&&(n=!0),i});if(n)return()=>{for(let r=0;r{const{children:i,...c}=o,s=a.Children.toArray(i),l=s.find(Cr);if(l){const u=l.props.children,d=s.map(p=>p===l?a.Children.count(u)>1?a.Children.only(null):a.isValidElement(u)?u.props.children:null:p);return x.jsx(t,{...c,ref:r,children:a.isValidElement(u)?a.cloneElement(u,void 0,d):null})}return x.jsx(t,{...c,ref:r,children:i})});return n.displayName=`${e}.Slot`,n}function Sr(e){const t=a.forwardRef((n,o)=>{const{children:r,...i}=n;if(a.isValidElement(r)){const c=Rr(r),s=Er(i,r.props);return r.type!==a.Fragment&&(s.ref=o?_e(o,c):c),a.cloneElement(r,s)}return a.Children.count(r)>1?a.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var br=Symbol("radix.slottable");function Cr(e){return a.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===br}function Er(e,t){const n={...t};for(const o in t){const r=e[o],i=t[o];/^on[A-Z]/.test(o)?r&&i?n[o]=(...s)=>{const l=i(...s);return r(...s),l}:r&&(n[o]=r):o==="style"?n[o]={...r,...i}:o==="className"&&(n[o]=[r,i].filter(Boolean).join(" "))}return{...e,...n}}function Rr(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function Pr(e){const t=e+"CollectionProvider",[n,o]=Ve(t),[r,i]=n(t,{collectionRef:{current:null},itemMap:new Map}),c=f=>{const{scope:g,children:y}=f,v=we.useRef(null),S=we.useRef(new Map).current;return x.jsx(r,{scope:g,itemMap:S,collectionRef:v,children:y})};c.displayName=t;const s=e+"CollectionSlot",l=cn(s),u=we.forwardRef((f,g)=>{const{scope:y,children:v}=f,S=i(s,y),b=H(g,S.collectionRef);return x.jsx(l,{ref:b,children:v})});u.displayName=s;const d=e+"CollectionItemSlot",p="data-radix-collection-item",h=cn(d),m=we.forwardRef((f,g)=>{const{scope:y,children:v,...S}=f,b=we.useRef(null),C=H(g,b),R=i(d,y);return we.useEffect(()=>(R.itemMap.set(b,{ref:b,...S}),()=>void R.itemMap.delete(b))),x.jsx(h,{[p]:"",ref:C,children:v})});m.displayName=d;function w(f){const g=i(e+"CollectionConsumer",f);return we.useCallback(()=>{const v=g.collectionRef.current;if(!v)return[];const S=Array.from(v.querySelectorAll(`[${p}]`));return Array.from(g.itemMap.values()).sort((R,E)=>S.indexOf(R.ref.current)-S.indexOf(E.ref.current))},[g.collectionRef,g.itemMap])}return[{Provider:c,Slot:u,ItemSlot:m},w,o]}var K=globalThis?.document?a.useLayoutEffect:()=>{},Ar=Vt[" useId ".trim().toString()]||(()=>{}),Or=0;function Te(e){const[t,n]=a.useState(Ar());return K(()=>{n(o=>o??String(Or++))},[e]),t?`radix-${t}`:""}function Tr(e){const t=Nr(e),n=a.forwardRef((o,r)=>{const{children:i,...c}=o,s=a.Children.toArray(i),l=s.find(Dr);if(l){const u=l.props.children,d=s.map(p=>p===l?a.Children.count(u)>1?a.Children.only(null):a.isValidElement(u)?u.props.children:null:p);return x.jsx(t,{...c,ref:r,children:a.isValidElement(u)?a.cloneElement(u,void 0,d):null})}return x.jsx(t,{...c,ref:r,children:i})});return n.displayName=`${e}.Slot`,n}function Nr(e){const t=a.forwardRef((n,o)=>{const{children:r,...i}=n;if(a.isValidElement(r)){const c=Mr(r),s=_r(i,r.props);return r.type!==a.Fragment&&(s.ref=o?_e(o,c):c),a.cloneElement(r,s)}return a.Children.count(r)>1?a.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Ir=Symbol("radix.slottable");function Dr(e){return a.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Ir}function _r(e,t){const n={...t};for(const o in t){const r=e[o],i=t[o];/^on[A-Z]/.test(o)?r&&i?n[o]=(...s)=>{const l=i(...s);return r(...s),l}:r&&(n[o]=r):o==="style"?n[o]={...r,...i}:o==="className"&&(n[o]=[r,i].filter(Boolean).join(" "))}return{...e,...n}}function Mr(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Lr=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],M=Lr.reduce((e,t)=>{const n=Tr(`Primitive.${t}`),o=a.forwardRef((r,i)=>{const{asChild:c,...s}=r,l=c?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),x.jsx(l,{...s,ref:i})});return o.displayName=`Primitive.${t}`,{...e,[t]:o}},{});function kr(e,t){e&&at.flushSync(()=>e.dispatchEvent(t))}function xe(e){const t=a.useRef(e);return a.useEffect(()=>{t.current=e}),a.useMemo(()=>(...n)=>t.current?.(...n),[])}var jr=Vt[" useInsertionEffect ".trim().toString()]||K;function et({prop:e,defaultProp:t,onChange:n=()=>{},caller:o}){const[r,i,c]=Fr({defaultProp:t,onChange:n}),s=e!==void 0,l=s?e:r;{const d=a.useRef(e!==void 0);a.useEffect(()=>{const p=d.current;p!==s&&console.warn(`${o} is changing from ${p?"controlled":"uncontrolled"} to ${s?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),d.current=s},[s,o])}const u=a.useCallback(d=>{if(s){const p=Wr(d)?d(e):d;p!==e&&c.current?.(p)}else i(d)},[s,e,i,c]);return[l,u]}function Fr({defaultProp:e,onChange:t}){const[n,o]=a.useState(e),r=a.useRef(n),i=a.useRef(t);return jr(()=>{i.current=t},[t]),a.useEffect(()=>{r.current!==n&&(i.current?.(n),r.current=n)},[n,r]),[n,o,i]}function Wr(e){return typeof e=="function"}var $r=a.createContext(void 0);function Br(e){const t=a.useContext($r);return e||t||"ltr"}function Vr(e,t){return a.useReducer((n,o)=>t[n][o]??n,e)}var He=e=>{const{present:t,children:n}=e,o=Hr(t),r=typeof n=="function"?n({present:o.isPresent}):a.Children.only(n),i=H(o.ref,Ur(r));return typeof n=="function"||o.isPresent?a.cloneElement(r,{ref:i}):null};He.displayName="Presence";function Hr(e){const[t,n]=a.useState(),o=a.useRef(null),r=a.useRef(e),i=a.useRef("none"),c=e?"mounted":"unmounted",[s,l]=Vr(c,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return a.useEffect(()=>{const u=ze(o.current);i.current=s==="mounted"?u:"none"},[s]),K(()=>{const u=o.current,d=r.current;if(d!==e){const h=i.current,m=ze(u);e?l("MOUNT"):m==="none"||u?.display==="none"?l("UNMOUNT"):l(d&&h!==m?"ANIMATION_OUT":"UNMOUNT"),r.current=e}},[e,l]),K(()=>{if(t){let u;const d=t.ownerDocument.defaultView??window,p=m=>{const f=ze(o.current).includes(CSS.escape(m.animationName));if(m.target===t&&f&&(l("ANIMATION_END"),!r.current)){const g=t.style.animationFillMode;t.style.animationFillMode="forwards",u=d.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=g)})}},h=m=>{m.target===t&&(i.current=ze(o.current))};return t.addEventListener("animationstart",h),t.addEventListener("animationcancel",p),t.addEventListener("animationend",p),()=>{d.clearTimeout(u),t.removeEventListener("animationstart",h),t.removeEventListener("animationcancel",p),t.removeEventListener("animationend",p)}}else l("ANIMATION_END")},[t,l]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:a.useCallback(u=>{o.current=u?getComputedStyle(u):null,n(u)},[])}}function ze(e){return e?.animationName||"none"}function Ur(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function an(e,[t,n]){return Math.min(n,Math.max(t,e))}var zr=Symbol.for("react.lazy"),tt=Vt[" use ".trim().toString()];function Kr(e){return typeof e=="object"&&e!==null&&"then"in e}function Dn(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===zr&&"_payload"in e&&Kr(e._payload)}function _n(e){const t=Yr(e),n=a.forwardRef((o,r)=>{let{children:i,...c}=o;Dn(i)&&typeof tt=="function"&&(i=tt(i._payload));const s=a.Children.toArray(i),l=s.find(Gr);if(l){const u=l.props.children,d=s.map(p=>p===l?a.Children.count(u)>1?a.Children.only(null):a.isValidElement(u)?u.props.children:null:p);return x.jsx(t,{...c,ref:r,children:a.isValidElement(u)?a.cloneElement(u,void 0,d):null})}return x.jsx(t,{...c,ref:r,children:i})});return n.displayName=`${e}.Slot`,n}var wa=_n("Slot");function Yr(e){const t=a.forwardRef((n,o)=>{let{children:r,...i}=n;if(Dn(r)&&typeof tt=="function"&&(r=tt(r._payload)),a.isValidElement(r)){const c=Zr(r),s=qr(i,r.props);return r.type!==a.Fragment&&(s.ref=o?_e(o,c):c),a.cloneElement(r,s)}return a.Children.count(r)>1?a.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Xr=Symbol("radix.slottable");function Gr(e){return a.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Xr}function qr(e,t){const n={...t};for(const o in t){const r=e[o],i=t[o];/^on[A-Z]/.test(o)?r&&i?n[o]=(...s)=>{const l=i(...s);return r(...s),l}:r&&(n[o]=r):o==="style"?n[o]={...r,...i}:o==="className"&&(n[o]=[r,i].filter(Boolean).join(" "))}return{...e,...n}}function Zr(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function Mn(e){const t=a.useRef({value:e,previous:e});return a.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}function Ln(e){const[t,n]=a.useState(void 0);return K(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const o=new ResizeObserver(r=>{if(!Array.isArray(r)||!r.length)return;const i=r[0];let c,s;if("borderBoxSize"in i){const l=i.borderBoxSize,u=Array.isArray(l)?l[0]:l;c=u.inlineSize,s=u.blockSize}else c=e.offsetWidth,s=e.offsetHeight;n({width:c,height:s})});return o.observe(e,{box:"border-box"}),()=>o.unobserve(e)}else n(void 0)},[e]),t}var Qr=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Jr=Qr.reduce((e,t)=>{const n=_n(`Primitive.${t}`),o=a.forwardRef((r,i)=>{const{asChild:c,...s}=r,l=c?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),x.jsx(l,{...s,ref:i})});return o.displayName=`Primitive.${t}`,{...e,[t]:o}},{}),ei="Label",kn=a.forwardRef((e,t)=>x.jsx(Jr.label,{...e,ref:t,onMouseDown:n=>{n.target.closest("button, input, select, textarea")||(e.onMouseDown?.(n),!n.defaultPrevented&&n.detail>1&&n.preventDefault())}}));kn.displayName=ei;var xa=kn;function ti(e,t=globalThis?.document){const n=xe(e);a.useEffect(()=>{const o=r=>{r.key==="Escape"&&n(r)};return t.addEventListener("keydown",o,{capture:!0}),()=>t.removeEventListener("keydown",o,{capture:!0})},[n,t])}var ni="DismissableLayer",Dt="dismissableLayer.update",oi="dismissableLayer.pointerDownOutside",ri="dismissableLayer.focusOutside",ln,jn=a.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),lt=a.forwardRef((e,t)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:o,onPointerDownOutside:r,onFocusOutside:i,onInteractOutside:c,onDismiss:s,...l}=e,u=a.useContext(jn),[d,p]=a.useState(null),h=d?.ownerDocument??globalThis?.document,[,m]=a.useState({}),w=H(t,E=>p(E)),f=Array.from(u.layers),[g]=[...u.layersWithOutsidePointerEventsDisabled].slice(-1),y=f.indexOf(g),v=d?f.indexOf(d):-1,S=u.layersWithOutsidePointerEventsDisabled.size>0,b=v>=y,C=si(E=>{const O=E.target,_=[...u.branches].some(I=>I.contains(O));!b||_||(r?.(E),c?.(E),E.defaultPrevented||s?.())},h),R=ci(E=>{const O=E.target;[...u.branches].some(I=>I.contains(O))||(i?.(E),c?.(E),E.defaultPrevented||s?.())},h);return ti(E=>{v===u.layers.size-1&&(o?.(E),!E.defaultPrevented&&s&&(E.preventDefault(),s()))},h),a.useEffect(()=>{if(d)return n&&(u.layersWithOutsidePointerEventsDisabled.size===0&&(ln=h.body.style.pointerEvents,h.body.style.pointerEvents="none"),u.layersWithOutsidePointerEventsDisabled.add(d)),u.layers.add(d),un(),()=>{n&&u.layersWithOutsidePointerEventsDisabled.size===1&&(h.body.style.pointerEvents=ln)}},[d,h,n,u]),a.useEffect(()=>()=>{d&&(u.layers.delete(d),u.layersWithOutsidePointerEventsDisabled.delete(d),un())},[d,u]),a.useEffect(()=>{const E=()=>m({});return document.addEventListener(Dt,E),()=>document.removeEventListener(Dt,E)},[]),x.jsx(M.div,{...l,ref:w,style:{pointerEvents:S?b?"auto":"none":void 0,...e.style},onFocusCapture:k(e.onFocusCapture,R.onFocusCapture),onBlurCapture:k(e.onBlurCapture,R.onBlurCapture),onPointerDownCapture:k(e.onPointerDownCapture,C.onPointerDownCapture)})});lt.displayName=ni;var ii="DismissableLayerBranch",Fn=a.forwardRef((e,t)=>{const n=a.useContext(jn),o=a.useRef(null),r=H(t,o);return a.useEffect(()=>{const i=o.current;if(i)return n.branches.add(i),()=>{n.branches.delete(i)}},[n.branches]),x.jsx(M.div,{...e,ref:r})});Fn.displayName=ii;function si(e,t=globalThis?.document){const n=xe(e),o=a.useRef(!1),r=a.useRef(()=>{});return a.useEffect(()=>{const i=s=>{if(s.target&&!o.current){let l=function(){Wn(oi,n,u,{discrete:!0})};const u={originalEvent:s};s.pointerType==="touch"?(t.removeEventListener("click",r.current),r.current=l,t.addEventListener("click",r.current,{once:!0})):l()}else t.removeEventListener("click",r.current);o.current=!1},c=window.setTimeout(()=>{t.addEventListener("pointerdown",i)},0);return()=>{window.clearTimeout(c),t.removeEventListener("pointerdown",i),t.removeEventListener("click",r.current)}},[t,n]),{onPointerDownCapture:()=>o.current=!0}}function ci(e,t=globalThis?.document){const n=xe(e),o=a.useRef(!1);return a.useEffect(()=>{const r=i=>{i.target&&!o.current&&Wn(ri,n,{originalEvent:i},{discrete:!1})};return t.addEventListener("focusin",r),()=>t.removeEventListener("focusin",r)},[t,n]),{onFocusCapture:()=>o.current=!0,onBlurCapture:()=>o.current=!1}}function un(){const e=new CustomEvent(Dt);document.dispatchEvent(e)}function Wn(e,t,n,{discrete:o}){const r=n.originalEvent.target,i=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&r.addEventListener(e,t,{once:!0}),o?kr(r,i):r.dispatchEvent(i)}var Sa=lt,ba=Fn,Ct="focusScope.autoFocusOnMount",Et="focusScope.autoFocusOnUnmount",fn={bubbles:!1,cancelable:!0},ai="FocusScope",Ht=a.forwardRef((e,t)=>{const{loop:n=!1,trapped:o=!1,onMountAutoFocus:r,onUnmountAutoFocus:i,...c}=e,[s,l]=a.useState(null),u=xe(r),d=xe(i),p=a.useRef(null),h=H(t,f=>l(f)),m=a.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;a.useEffect(()=>{if(o){let f=function(S){if(m.paused||!s)return;const b=S.target;s.contains(b)?p.current=b:ue(p.current,{select:!0})},g=function(S){if(m.paused||!s)return;const b=S.relatedTarget;b!==null&&(s.contains(b)||ue(p.current,{select:!0}))},y=function(S){if(document.activeElement===document.body)for(const C of S)C.removedNodes.length>0&&ue(s)};document.addEventListener("focusin",f),document.addEventListener("focusout",g);const v=new MutationObserver(y);return s&&v.observe(s,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",f),document.removeEventListener("focusout",g),v.disconnect()}}},[o,s,m.paused]),a.useEffect(()=>{if(s){pn.add(m);const f=document.activeElement;if(!s.contains(f)){const y=new CustomEvent(Ct,fn);s.addEventListener(Ct,u),s.dispatchEvent(y),y.defaultPrevented||(li(mi($n(s)),{select:!0}),document.activeElement===f&&ue(s))}return()=>{s.removeEventListener(Ct,u),setTimeout(()=>{const y=new CustomEvent(Et,fn);s.addEventListener(Et,d),s.dispatchEvent(y),y.defaultPrevented||ue(f??document.body,{select:!0}),s.removeEventListener(Et,d),pn.remove(m)},0)}}},[s,u,d,m]);const w=a.useCallback(f=>{if(!n&&!o||m.paused)return;const g=f.key==="Tab"&&!f.altKey&&!f.ctrlKey&&!f.metaKey,y=document.activeElement;if(g&&y){const v=f.currentTarget,[S,b]=ui(v);S&&b?!f.shiftKey&&y===b?(f.preventDefault(),n&&ue(S,{select:!0})):f.shiftKey&&y===S&&(f.preventDefault(),n&&ue(b,{select:!0})):y===v&&f.preventDefault()}},[n,o,m.paused]);return x.jsx(M.div,{tabIndex:-1,...c,ref:h,onKeyDown:w})});Ht.displayName=ai;function li(e,{select:t=!1}={}){const n=document.activeElement;for(const o of e)if(ue(o,{select:t}),document.activeElement!==n)return}function ui(e){const t=$n(e),n=dn(t,e),o=dn(t.reverse(),e);return[n,o]}function $n(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>{const r=o.tagName==="INPUT"&&o.type==="hidden";return o.disabled||o.hidden||r?NodeFilter.FILTER_SKIP:o.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function dn(e,t){for(const n of e)if(!fi(n,{upTo:t}))return n}function fi(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function di(e){return e instanceof HTMLInputElement&&"select"in e}function ue(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&di(e)&&t&&e.select()}}var pn=pi();function pi(){let e=[];return{add(t){const n=e[0];t!==n&&n?.pause(),e=mn(e,t),e.unshift(t)},remove(t){e=mn(e,t),e[0]?.resume()}}}function mn(e,t){const n=[...e],o=n.indexOf(t);return o!==-1&&n.splice(o,1),n}function mi(e){return e.filter(t=>t.tagName!=="A")}var hi="Portal",Ut=a.forwardRef((e,t)=>{const{container:n,...o}=e,[r,i]=a.useState(!1);K(()=>i(!0),[]);const c=n||r&&globalThis?.document?.body;return c?yr.createPortal(x.jsx(M.div,{...o,ref:t}),c):null});Ut.displayName=hi;var Rt=0;function Bn(){a.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??hn()),document.body.insertAdjacentElement("beforeend",e[1]??hn()),Rt++,()=>{Rt===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(t=>t.remove()),Rt--}},[])}function hn(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var ne=function(){return ne=Object.assign||function(t){for(var n,o=1,r=arguments.length;o"u")return Di;var t=_i(e),n=document.documentElement.clientWidth,o=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,o-n+t[2]-t[0])}},Li=zn(),Ne="data-scroll-locked",ki=function(e,t,n,o){var r=e.left,i=e.top,c=e.right,s=e.gap;return n===void 0&&(n="margin"),` .`.concat(vi,` { overflow: hidden `).concat(o,`; padding-right: `).concat(s,"px ").concat(o,`; diff --git a/webui/dist/index.html b/webui/dist/index.html index e0ee1d7f..2dc900c9 100644 --- a/webui/dist/index.html +++ b/webui/dist/index.html @@ -7,13 +7,13 @@ MaiBot Dashboard - + - - - - - + + + + +
From e06a35fe811856071d37bfc04888d3cd43a03e33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Fri, 28 Nov 2025 15:27:58 +0800 Subject: [PATCH 08/61] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=8F=90?= =?UTF-8?q?=E4=BE=9B=E5=95=86=E8=BF=9E=E6=8E=A5=E6=B5=8B=E8=AF=95=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=8C=E6=94=AF=E6=8C=81=E9=80=9A=E8=BF=87=20URL=20?= =?UTF-8?q?=E5=92=8C=E5=90=8D=E7=A7=B0=E9=AA=8C=E8=AF=81=E8=BF=9E=E6=8E=A5?= =?UTF-8?q?=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/webui/model_routes.py | 123 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) diff --git a/src/webui/model_routes.py b/src/webui/model_routes.py index af8fa9a7..871512f5 100644 --- a/src/webui/model_routes.py +++ b/src/webui/model_routes.py @@ -242,3 +242,126 @@ async def get_models_by_url( "models": models, "count": len(models), } + + +@router.get("/test-connection") +async def test_provider_connection( + base_url: str = Query(..., description="提供商的基础 URL"), + api_key: Optional[str] = Query(None, description="API Key(可选,用于验证 Key 有效性)"), +): + """ + 测试提供商连接状态 + + 分两步测试: + 1. 网络连通性测试:向 base_url 发送请求,检查是否能连接 + 2. API Key 验证(可选):如果提供了 api_key,尝试获取模型列表验证 Key 是否有效 + + 返回: + - network_ok: 网络是否连通 + - api_key_valid: API Key 是否有效(仅在提供 api_key 时返回) + - latency_ms: 响应延迟(毫秒) + - error: 错误信息(如果有) + """ + import time + + base_url = _normalize_url(base_url) + if not base_url: + raise HTTPException(status_code=400, detail="base_url 不能为空") + + result = { + "network_ok": False, + "api_key_valid": None, + "latency_ms": None, + "error": None, + "http_status": None, + } + + # 第一步:测试网络连通性 + try: + start_time = time.time() + async with httpx.AsyncClient(timeout=10.0, follow_redirects=True) as client: + # 尝试 GET 请求 base_url(不需要 API Key) + response = await client.get(base_url) + latency = (time.time() - start_time) * 1000 + + result["network_ok"] = True + result["latency_ms"] = round(latency, 2) + result["http_status"] = response.status_code + + except httpx.ConnectError as e: + result["error"] = f"连接失败:无法连接到服务器 ({str(e)})" + return result + except httpx.TimeoutException: + result["error"] = "连接超时:服务器响应时间过长" + return result + except httpx.RequestError as e: + result["error"] = f"请求错误:{str(e)}" + return result + except Exception as e: + result["error"] = f"未知错误:{str(e)}" + return result + + # 第二步:如果提供了 API Key,验证其有效性 + if api_key: + try: + start_time = time.time() + async with httpx.AsyncClient(timeout=15.0, follow_redirects=True) as client: + headers = { + "Authorization": f"Bearer {api_key}", + "Content-Type": "application/json", + } + # 尝试获取模型列表 + models_url = f"{base_url}/models" + response = await client.get(models_url, headers=headers) + + if response.status_code == 200: + result["api_key_valid"] = True + elif response.status_code in (401, 403): + result["api_key_valid"] = False + result["error"] = "API Key 无效或已过期" + else: + # 其他状态码,可能是端点不支持,但 Key 可能是有效的 + result["api_key_valid"] = None + + except Exception as e: + # API Key 验证失败不影响网络连通性结果 + logger.warning(f"API Key 验证失败: {e}") + result["api_key_valid"] = None + + return result + + +@router.post("/test-connection-by-name") +async def test_provider_connection_by_name( + provider_name: str = Query(..., description="提供商名称"), +): + """ + 通过提供商名称测试连接(从配置文件读取信息) + """ + # 读取配置文件 + model_config_path = os.path.join(CONFIG_DIR, "model_config.toml") + if not os.path.exists(model_config_path): + raise HTTPException(status_code=404, detail="配置文件不存在") + + with open(model_config_path, "r", encoding="utf-8") as f: + config = tomlkit.load(f) + + # 查找提供商 + providers = config.get("api_providers", []) + provider = None + for p in providers: + if p.get("name") == provider_name: + provider = p + break + + if not provider: + raise HTTPException(status_code=404, detail=f"未找到提供商: {provider_name}") + + base_url = provider.get("base_url", "") + api_key = provider.get("api_key", "") + + if not base_url: + raise HTTPException(status_code=400, detail="提供商配置缺少 base_url") + + # 调用测试接口 + return await test_provider_connection(base_url=base_url, api_key=api_key if api_key else None) From 321c784434c700158d79c4dd96e118e5f959a64c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Sat, 29 Nov 2025 00:01:25 +0800 Subject: [PATCH 09/61] =?UTF-8?q?feat:=20=E5=A2=9E=E5=BC=BA=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E9=85=8D=E7=BD=AE=E7=AE=A1=E7=90=86=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E9=85=8D=E7=BD=AE=20Schema=20=E5=92=8C=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugin_system/base/config_types.py | 264 +++++++++++++++- src/plugin_system/base/plugin_base.py | 98 +++++- src/webui/plugin_routes.py | 415 ++++++++++++++++++++++++- 3 files changed, 767 insertions(+), 10 deletions(-) diff --git a/src/plugin_system/base/config_types.py b/src/plugin_system/base/config_types.py index 752b3345..ef0f656c 100644 --- a/src/plugin_system/base/config_types.py +++ b/src/plugin_system/base/config_types.py @@ -1,18 +1,270 @@ """ 插件系统配置类型定义 + +提供插件配置的类型定义,支持 WebUI 可视化配置编辑。 """ -from typing import Any, Optional, List +from typing import Any, Optional, List, Dict, Union, Callable from dataclasses import dataclass, field @dataclass class ConfigField: - """配置字段定义""" + """ + 配置字段定义 + + 用于定义插件配置项的元数据,支持类型验证、UI 渲染等功能。 + + 基础示例: + ConfigField(type=str, default="", description="API密钥") + + 完整示例: + ConfigField( + type=str, + default="", + description="API密钥", + input_type="password", + placeholder="请输入API密钥", + required=True, + hint="从服务商控制台获取", + order=1 + ) + """ - type: type # 字段类型 + # === 基础字段(必需) === + type: type # 字段类型: str, int, float, bool, list, dict default: Any # 默认值 - description: str # 字段描述 - example: Optional[str] = None # 示例值 + description: str # 字段描述(也用作默认标签) + + # === 验证相关 === + example: Optional[str] = None # 示例值(用于生成配置文件注释) required: bool = False # 是否必需 - choices: Optional[List[Any]] = field(default_factory=list) # 可选值列表 + choices: Optional[List[Any]] = field(default_factory=list) # 可选值列表(用于下拉选择) + min: Optional[float] = None # 最小值(数字类型) + max: Optional[float] = None # 最大值(数字类型) + step: Optional[float] = None # 步进值(数字类型) + pattern: Optional[str] = None # 正则验证(字符串类型) + max_length: Optional[int] = None # 最大长度(字符串类型) + + # === UI 显示控制 === + label: Optional[str] = None # 显示标签(默认使用 description) + placeholder: Optional[str] = None # 输入框占位符 + hint: Optional[str] = None # 字段下方的提示文字 + icon: Optional[str] = None # 字段图标名称 + hidden: bool = False # 是否在 UI 中隐藏 + disabled: bool = False # 是否禁用编辑 + order: int = 0 # 排序权重(数字越小越靠前) + + # === 输入控件类型 === + # 可选值: text, password, textarea, number, color, code, file, json + # 不指定时根据 type 和 choices 自动推断 + input_type: Optional[str] = None + + # === textarea 专用 === + rows: int = 3 # 文本域行数 + + # === 分组与布局 === + group: Optional[str] = None # 字段分组(在 section 内再细分) + + # === 条件显示 === + depends_on: Optional[str] = None # 依赖的字段路径,如 "section.field" + depends_value: Any = None # 依赖字段需要的值(当依赖字段等于此值时显示) + + def get_ui_type(self) -> str: + """ + 获取 UI 控件类型 + + 如果指定了 input_type 则直接返回,否则根据 type 和 choices 自动推断。 + + Returns: + 控件类型字符串 + """ + if self.input_type: + return self.input_type + + # 根据 type 和 choices 自动推断 + if self.type == bool: + return "switch" + elif self.type in (int, float): + if self.min is not None and self.max is not None: + return "slider" + return "number" + elif self.type == str: + if self.choices: + return "select" + return "text" + elif self.type == list: + return "list" + elif self.type == dict: + return "json" + else: + return "text" + + def to_dict(self) -> Dict[str, Any]: + """ + 转换为可序列化的字典(用于 API 传输) + + Returns: + 包含所有配置信息的字典 + """ + return { + "type": self.type.__name__ if isinstance(self.type, type) else str(self.type), + "default": self.default, + "description": self.description, + "example": self.example, + "required": self.required, + "choices": self.choices if self.choices else None, + "min": self.min, + "max": self.max, + "step": self.step, + "pattern": self.pattern, + "max_length": self.max_length, + "label": self.label or self.description, + "placeholder": self.placeholder, + "hint": self.hint, + "icon": self.icon, + "hidden": self.hidden, + "disabled": self.disabled, + "order": self.order, + "input_type": self.input_type, + "ui_type": self.get_ui_type(), + "rows": self.rows, + "group": self.group, + "depends_on": self.depends_on, + "depends_value": self.depends_value, + } + + +@dataclass +class ConfigSection: + """ + 配置节定义 + + 用于描述配置文件中一个 section 的元数据。 + + 示例: + ConfigSection( + title="API配置", + description="外部API连接参数", + icon="cloud", + order=1 + ) + """ + title: str # 显示标题 + description: Optional[str] = None # 详细描述 + icon: Optional[str] = None # 图标名称 + collapsed: bool = False # 默认是否折叠 + order: int = 0 # 排序权重 + + def to_dict(self) -> Dict[str, Any]: + """转换为可序列化的字典""" + return { + "title": self.title, + "description": self.description, + "icon": self.icon, + "collapsed": self.collapsed, + "order": self.order, + } + + +@dataclass +class ConfigTab: + """ + 配置标签页定义 + + 用于将多个 section 组织到一个标签页中。 + + 示例: + ConfigTab( + id="general", + title="通用设置", + icon="settings", + sections=["plugin", "api"] + ) + """ + id: str # 标签页 ID + title: str # 显示标题 + sections: List[str] = field(default_factory=list) # 包含的 section 名称列表 + icon: Optional[str] = None # 图标名称 + order: int = 0 # 排序权重 + badge: Optional[str] = None # 角标文字(如 "Beta", "New") + + def to_dict(self) -> Dict[str, Any]: + """转换为可序列化的字典""" + return { + "id": self.id, + "title": self.title, + "sections": self.sections, + "icon": self.icon, + "order": self.order, + "badge": self.badge, + } + + +@dataclass +class ConfigLayout: + """ + 配置页面布局定义 + + 用于定义插件配置页面的整体布局结构。 + + 布局类型: + - "auto": 自动布局,sections 作为折叠面板显示 + - "tabs": 标签页布局 + - "pages": 分页布局(左侧导航 + 右侧内容) + + 简单示例(标签页布局): + ConfigLayout( + type="tabs", + tabs=[ + ConfigTab(id="basic", title="基础", sections=["plugin", "api"]), + ConfigTab(id="advanced", title="高级", sections=["debug"]), + ] + ) + """ + type: str = "auto" # 布局类型: auto, tabs, pages + tabs: List[ConfigTab] = field(default_factory=list) # 标签页列表 + + def to_dict(self) -> Dict[str, Any]: + """转换为可序列化的字典""" + return { + "type": self.type, + "tabs": [tab.to_dict() for tab in self.tabs], + } + + +def section_meta( + title: str, + description: Optional[str] = None, + icon: Optional[str] = None, + collapsed: bool = False, + order: int = 0 +) -> Union[str, ConfigSection]: + """ + 便捷函数:创建 section 元数据 + + 可以在 config_section_descriptions 中使用,提供比纯字符串更丰富的信息。 + + Args: + title: 显示标题 + description: 详细描述 + icon: 图标名称 + collapsed: 默认是否折叠 + order: 排序权重 + + Returns: + ConfigSection 实例 + + 示例: + config_section_descriptions = { + "api": section_meta("API配置", icon="cloud", order=1), + "debug": section_meta("调试设置", collapsed=True, order=99), + } + """ + return ConfigSection( + title=title, + description=description, + icon=icon, + collapsed=collapsed, + order=order + ) diff --git a/src/plugin_system/base/plugin_base.py b/src/plugin_system/base/plugin_base.py index 0b7f15d1..1fe99b8a 100644 --- a/src/plugin_system/base/plugin_base.py +++ b/src/plugin_system/base/plugin_base.py @@ -12,7 +12,11 @@ from src.plugin_system.base.component_types import ( PluginInfo, PythonDependency, ) -from src.plugin_system.base.config_types import ConfigField +from src.plugin_system.base.config_types import ( + ConfigField, + ConfigSection, + ConfigLayout, +) from src.plugin_system.utils.manifest_utils import ManifestValidator logger = get_logger("plugin_base") @@ -60,7 +64,10 @@ class PluginBase(ABC): def config_schema(self) -> Dict[str, Union[Dict[str, ConfigField], str]]: return {} - config_section_descriptions: Dict[str, str] = {} + config_section_descriptions: Dict[str, Union[str, ConfigSection]] = {} + + # 布局配置(可选,不定义则使用自动布局) + config_layout: ConfigLayout = None def __init__(self, plugin_dir: str): """初始化插件 @@ -564,6 +571,93 @@ class PluginBase(ABC): return current + def get_webui_config_schema(self) -> Dict[str, Any]: + """ + 获取 WebUI 配置 Schema + + 返回完整的配置 schema,包含: + - 插件基本信息 + - 所有 section 及其字段定义 + - 布局配置 + + 用于 WebUI 动态生成配置表单。 + + Returns: + Dict: 完整的配置 schema + """ + schema = { + "plugin_id": self.plugin_name, + "plugin_info": { + "name": self.display_name, + "version": self.plugin_version, + "description": self.plugin_description, + "author": self.plugin_author, + }, + "sections": {}, + "layout": None, + } + + # 处理 sections + for section_name, fields in self.config_schema.items(): + if not isinstance(fields, dict): + continue + + section_data = { + "name": section_name, + "title": section_name, + "description": None, + "icon": None, + "collapsed": False, + "order": 0, + "fields": {}, + } + + # 获取 section 元数据 + section_meta = self.config_section_descriptions.get(section_name) + if section_meta: + if isinstance(section_meta, str): + section_data["title"] = section_meta + elif isinstance(section_meta, ConfigSection): + section_data["title"] = section_meta.title + section_data["description"] = section_meta.description + section_data["icon"] = section_meta.icon + section_data["collapsed"] = section_meta.collapsed + section_data["order"] = section_meta.order + elif isinstance(section_meta, dict): + section_data.update(section_meta) + + # 处理字段 + for field_name, field_def in fields.items(): + if isinstance(field_def, ConfigField): + field_data = field_def.to_dict() + field_data["name"] = field_name + section_data["fields"][field_name] = field_data + + schema["sections"][section_name] = section_data + + # 处理布局 + if self.config_layout: + schema["layout"] = self.config_layout.to_dict() + else: + # 自动布局:按 section order 排序 + schema["layout"] = { + "type": "auto", + "tabs": [], + } + + return schema + + def get_current_config_values(self) -> Dict[str, Any]: + """ + 获取当前配置值 + + 返回插件当前的配置值(已从配置文件加载)。 + + Returns: + Dict: 当前配置值 + """ + return self.config.copy() + @abstractmethod def register_plugin(self) -> bool: """ diff --git a/src/webui/plugin_routes.py b/src/webui/plugin_routes.py index 0d8ab19b..5c49483e 100644 --- a/src/webui/plugin_routes.py +++ b/src/webui/plugin_routes.py @@ -29,8 +29,10 @@ def parse_version(version_str: str) -> tuple[int, int, int]: Returns: (major, minor, patch) 三元组 """ - # 移除 snapshot 等后缀 - base_version = version_str.split(".snapshot")[0].split(".dev")[0].split(".alpha")[0].split(".beta")[0] + # 移除 snapshot、dev、alpha、beta 等后缀(支持 - 和 . 分隔符) + import re + # 匹配 -snapshot.X, .snapshot, -dev, .dev, -alpha, .alpha, -beta, .beta 等后缀 + base_version = re.split(r'[-.](?:snapshot|dev|alpha|beta|rc)', version_str, flags=re.IGNORECASE)[0] parts = base_version.split(".") if len(parts) < 3: @@ -1153,3 +1155,412 @@ async def get_installed_plugins(authorization: Optional[str] = Header(None)) -> except Exception as e: logger.error(f"获取已安装插件列表失败: {e}", exc_info=True) raise HTTPException(status_code=500, detail=f"服务器错误: {str(e)}") from e + + +# ============ 插件配置管理 API ============ + + +class UpdatePluginConfigRequest(BaseModel): + """更新插件配置请求""" + + config: Dict[str, Any] = Field(..., description="配置数据") + + +@router.get("/config/{plugin_id}/schema") +async def get_plugin_config_schema( + plugin_id: str, authorization: Optional[str] = Header(None) +) -> Dict[str, Any]: + """ + 获取插件配置 Schema + + 返回插件的完整配置 schema,包含所有 section、字段定义和布局信息。 + 用于前端动态生成配置表单。 + """ + # Token 验证 + token = authorization.replace("Bearer ", "") if authorization else None + token_manager = get_token_manager() + if not token or not token_manager.verify_token(token): + raise HTTPException(status_code=401, detail="未授权:无效的访问令牌") + + logger.info(f"获取插件配置 Schema: {plugin_id}") + + try: + # 尝试从已加载的插件中获取 + from src.plugin_system.core.plugin_manager import plugin_manager + + # 查找插件实例 + plugin_instance = None + + # 遍历所有已加载的插件 + for loaded_plugin_name in plugin_manager.list_loaded_plugins(): + instance = plugin_manager.get_plugin_instance(loaded_plugin_name) + if instance: + # 匹配 plugin_name 或 manifest 中的 id + if instance.plugin_name == plugin_id: + plugin_instance = instance + break + # 也尝试匹配 manifest 中的 id + manifest_id = instance.get_manifest_info("id", "") + if manifest_id == plugin_id: + plugin_instance = instance + break + + if plugin_instance and hasattr(plugin_instance, 'get_webui_config_schema'): + # 从插件实例获取 schema + schema = plugin_instance.get_webui_config_schema() + return {"success": True, "schema": schema} + + # 如果插件未加载,尝试从文件系统读取 + # 查找插件目录 + plugins_dir = Path("plugins") + plugin_path = None + + for p in plugins_dir.iterdir(): + if p.is_dir(): + manifest_path = p / "_manifest.json" + if manifest_path.exists(): + try: + with open(manifest_path, "r", encoding="utf-8") as f: + manifest = json.load(f) + if manifest.get("id") == plugin_id or p.name == plugin_id: + plugin_path = p + break + except Exception: + continue + + if not plugin_path: + raise HTTPException(status_code=404, detail=f"未找到插件: {plugin_id}") + + # 读取配置文件获取当前配置 + config_path = plugin_path / "config.toml" + current_config = {} + if config_path.exists(): + import toml + current_config = toml.load(config_path) + + # 构建基础 schema(无法获取完整的 ConfigField 信息) + schema = { + "plugin_id": plugin_id, + "plugin_info": { + "name": plugin_id, + "version": "", + "description": "", + "author": "", + }, + "sections": {}, + "layout": {"type": "auto", "tabs": []}, + "_note": "插件未加载,仅返回当前配置结构", + } + + # 从当前配置推断 schema + for section_name, section_data in current_config.items(): + if isinstance(section_data, dict): + schema["sections"][section_name] = { + "name": section_name, + "title": section_name, + "description": None, + "icon": None, + "collapsed": False, + "order": 0, + "fields": {}, + } + for field_name, field_value in section_data.items(): + # 推断字段类型 + field_type = type(field_value).__name__ + ui_type = "text" + if isinstance(field_value, bool): + ui_type = "switch" + elif isinstance(field_value, (int, float)): + ui_type = "number" + elif isinstance(field_value, list): + ui_type = "list" + elif isinstance(field_value, dict): + ui_type = "json" + + schema["sections"][section_name]["fields"][field_name] = { + "name": field_name, + "type": field_type, + "default": field_value, + "description": field_name, + "label": field_name, + "ui_type": ui_type, + "required": False, + "hidden": False, + "disabled": False, + "order": 0, + } + + return {"success": True, "schema": schema} + + except HTTPException: + raise + except Exception as e: + logger.error(f"获取插件配置 Schema 失败: {e}", exc_info=True) + raise HTTPException(status_code=500, detail=f"服务器错误: {str(e)}") from e + + +@router.get("/config/{plugin_id}") +async def get_plugin_config( + plugin_id: str, authorization: Optional[str] = Header(None) +) -> Dict[str, Any]: + """ + 获取插件当前配置值 + + 返回插件的当前配置值。 + """ + # Token 验证 + token = authorization.replace("Bearer ", "") if authorization else None + token_manager = get_token_manager() + if not token or not token_manager.verify_token(token): + raise HTTPException(status_code=401, detail="未授权:无效的访问令牌") + + logger.info(f"获取插件配置: {plugin_id}") + + try: + # 查找插件目录 + plugins_dir = Path("plugins") + plugin_path = None + + for p in plugins_dir.iterdir(): + if p.is_dir(): + manifest_path = p / "_manifest.json" + if manifest_path.exists(): + try: + with open(manifest_path, "r", encoding="utf-8") as f: + manifest = json.load(f) + if manifest.get("id") == plugin_id or p.name == plugin_id: + plugin_path = p + break + except Exception: + continue + + if not plugin_path: + raise HTTPException(status_code=404, detail=f"未找到插件: {plugin_id}") + + # 读取配置文件 + config_path = plugin_path / "config.toml" + if not config_path.exists(): + return {"success": True, "config": {}, "message": "配置文件不存在"} + + import toml + config = toml.load(config_path) + + return {"success": True, "config": config} + + except HTTPException: + raise + except Exception as e: + logger.error(f"获取插件配置失败: {e}", exc_info=True) + raise HTTPException(status_code=500, detail=f"服务器错误: {str(e)}") from e + + +@router.put("/config/{plugin_id}") +async def update_plugin_config( + plugin_id: str, + request: UpdatePluginConfigRequest, + authorization: Optional[str] = Header(None) +) -> Dict[str, Any]: + """ + 更新插件配置 + + 保存新的配置值到插件的配置文件。 + """ + # Token 验证 + token = authorization.replace("Bearer ", "") if authorization else None + token_manager = get_token_manager() + if not token or not token_manager.verify_token(token): + raise HTTPException(status_code=401, detail="未授权:无效的访问令牌") + + logger.info(f"更新插件配置: {plugin_id}") + + try: + # 查找插件目录 + plugins_dir = Path("plugins") + plugin_path = None + + for p in plugins_dir.iterdir(): + if p.is_dir(): + manifest_path = p / "_manifest.json" + if manifest_path.exists(): + try: + with open(manifest_path, "r", encoding="utf-8") as f: + manifest = json.load(f) + if manifest.get("id") == plugin_id or p.name == plugin_id: + plugin_path = p + break + except Exception: + continue + + if not plugin_path: + raise HTTPException(status_code=404, detail=f"未找到插件: {plugin_id}") + + config_path = plugin_path / "config.toml" + + # 备份旧配置 + import shutil + import datetime + if config_path.exists(): + backup_name = f"config.toml.backup.{datetime.datetime.now().strftime('%Y%m%d%H%M%S')}" + backup_path = plugin_path / backup_name + shutil.copy(config_path, backup_path) + logger.info(f"已备份配置文件: {backup_path}") + + # 写入新配置 + import toml + with open(config_path, "w", encoding="utf-8") as f: + toml.dump(request.config, f) + + logger.info(f"已更新插件配置: {plugin_id}") + + return { + "success": True, + "message": "配置已保存", + "note": "配置更改将在插件重新加载后生效" + } + + except HTTPException: + raise + except Exception as e: + logger.error(f"更新插件配置失败: {e}", exc_info=True) + raise HTTPException(status_code=500, detail=f"服务器错误: {str(e)}") from e + + +@router.post("/config/{plugin_id}/reset") +async def reset_plugin_config( + plugin_id: str, authorization: Optional[str] = Header(None) +) -> Dict[str, Any]: + """ + 重置插件配置为默认值 + + 删除当前配置文件,下次加载插件时将使用默认配置。 + """ + # Token 验证 + token = authorization.replace("Bearer ", "") if authorization else None + token_manager = get_token_manager() + if not token or not token_manager.verify_token(token): + raise HTTPException(status_code=401, detail="未授权:无效的访问令牌") + + logger.info(f"重置插件配置: {plugin_id}") + + try: + # 查找插件目录 + plugins_dir = Path("plugins") + plugin_path = None + + for p in plugins_dir.iterdir(): + if p.is_dir(): + manifest_path = p / "_manifest.json" + if manifest_path.exists(): + try: + with open(manifest_path, "r", encoding="utf-8") as f: + manifest = json.load(f) + if manifest.get("id") == plugin_id or p.name == plugin_id: + plugin_path = p + break + except Exception: + continue + + if not plugin_path: + raise HTTPException(status_code=404, detail=f"未找到插件: {plugin_id}") + + config_path = plugin_path / "config.toml" + + if not config_path.exists(): + return {"success": True, "message": "配置文件不存在,无需重置"} + + # 备份并删除 + import shutil + import datetime + backup_name = f"config.toml.reset.{datetime.datetime.now().strftime('%Y%m%d%H%M%S')}" + backup_path = plugin_path / backup_name + shutil.move(config_path, backup_path) + + logger.info(f"已重置插件配置: {plugin_id},备份: {backup_path}") + + return { + "success": True, + "message": "配置已重置,下次加载插件时将使用默认配置", + "backup": str(backup_path) + } + + except HTTPException: + raise + except Exception as e: + logger.error(f"重置插件配置失败: {e}", exc_info=True) + raise HTTPException(status_code=500, detail=f"服务器错误: {str(e)}") from e + + +@router.post("/config/{plugin_id}/toggle") +async def toggle_plugin( + plugin_id: str, authorization: Optional[str] = Header(None) +) -> Dict[str, Any]: + """ + 切换插件启用状态 + + 切换插件配置中的 enabled 字段。 + """ + # Token 验证 + token = authorization.replace("Bearer ", "") if authorization else None + token_manager = get_token_manager() + if not token or not token_manager.verify_token(token): + raise HTTPException(status_code=401, detail="未授权:无效的访问令牌") + + logger.info(f"切换插件状态: {plugin_id}") + + try: + # 查找插件目录 + plugins_dir = Path("plugins") + plugin_path = None + + for p in plugins_dir.iterdir(): + if p.is_dir(): + manifest_path = p / "_manifest.json" + if manifest_path.exists(): + try: + with open(manifest_path, "r", encoding="utf-8") as f: + manifest = json.load(f) + if manifest.get("id") == plugin_id or p.name == plugin_id: + plugin_path = p + break + except Exception: + continue + + if not plugin_path: + raise HTTPException(status_code=404, detail=f"未找到插件: {plugin_id}") + + config_path = plugin_path / "config.toml" + + import toml + + # 读取当前配置 + config = {} + if config_path.exists(): + config = toml.load(config_path) + + # 切换 enabled 状态 + if "plugin" not in config: + config["plugin"] = {} + + current_enabled = config["plugin"].get("enabled", True) + new_enabled = not current_enabled + config["plugin"]["enabled"] = new_enabled + + # 写入配置 + with open(config_path, "w", encoding="utf-8") as f: + toml.dump(config, f) + + status = "启用" if new_enabled else "禁用" + logger.info(f"已{status}插件: {plugin_id}") + + return { + "success": True, + "enabled": new_enabled, + "message": f"插件已{status}", + "note": "状态更改将在下次加载插件时生效" + } + + except HTTPException: + raise + except Exception as e: + logger.error(f"切换插件状态失败: {e}", exc_info=True) + raise HTTPException(status_code=500, detail=f"服务器错误: {str(e)}") from e From 3357ab0d1de92261756fec836ca258636d0b4fca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Sat, 29 Nov 2025 00:23:54 +0800 Subject: [PATCH 10/61] WebUI d17d667711a0784d255bbb27e1c296d02216b644 --- webui/dist/assets/icons-CqUsKJFR.js | 1 + webui/dist/assets/icons-wa0wi-vG.js | 1 - .../{index-JgAL2W8G.js => index-CnFGj4Iv.js} | 156 +++++++++--------- webui/dist/assets/index-Rqzi5c1P.css | 1 - webui/dist/assets/index-_a_MShLH.css | 1 + webui/dist/index.html | 6 +- 6 files changed, 83 insertions(+), 83 deletions(-) create mode 100644 webui/dist/assets/icons-CqUsKJFR.js delete mode 100644 webui/dist/assets/icons-wa0wi-vG.js rename webui/dist/assets/{index-JgAL2W8G.js => index-CnFGj4Iv.js} (53%) delete mode 100644 webui/dist/assets/index-Rqzi5c1P.css create mode 100644 webui/dist/assets/index-_a_MShLH.css diff --git a/webui/dist/assets/icons-CqUsKJFR.js b/webui/dist/assets/icons-CqUsKJFR.js new file mode 100644 index 00000000..f4df2379 --- /dev/null +++ b/webui/dist/assets/icons-CqUsKJFR.js @@ -0,0 +1 @@ +import{r as s}from"./router-DQNkr8RI.js";const _=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),M=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,c,o)=>o?o.toUpperCase():c.toLowerCase()),d=t=>{const a=M(t);return a.charAt(0).toUpperCase()+a.slice(1)},k=(...t)=>t.filter((a,c,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===c).join(" ").trim(),m=t=>{for(const a in t)if(a.startsWith("aria-")||a==="role"||a==="title")return!0};var v={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const x=s.forwardRef(({color:t="currentColor",size:a=24,strokeWidth:c=2,absoluteStrokeWidth:o,className:y="",children:n,iconNode:r,...h},p)=>s.createElement("svg",{ref:p,...v,width:a,height:a,stroke:t,strokeWidth:o?Number(c)*24/Number(a):c,className:k("lucide",y),...!n&&!m(h)&&{"aria-hidden":"true"},...h},[...r.map(([i,l])=>s.createElement(i,l)),...Array.isArray(n)?n:[n]]));const e=(t,a)=>{const c=s.forwardRef(({className:o,...y},n)=>s.createElement(x,{ref:n,iconNode:a,className:k(`lucide-${_(d(t))}`,`lucide-${t}`,o),...y}));return c.displayName=d(t),c};const f=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],n2=e("activity",f);const u=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],s2=e("arrow-left",u);const g=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],y2=e("arrow-right",g);const $=[["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],h2=e("ban",$);const N=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],d2=e("book-open",N);const w=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],k2=e("bot",w);const z=[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]],r2=e("boxes",z);const b=[["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z",key:"uouzyp"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M21 21a4 4 0 0 0-3.81-4",key:"1b0z45"}],["path",{d:"M21 5a4 4 0 0 1-3.55 3.97",key:"5cxbf6"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M3 21a4 4 0 0 1 3.81-4",key:"1fjd4g"}],["path",{d:"M3 5a4 4 0 0 0 3.55 3.97",key:"1d7oge"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M9 7.13V6a3 3 0 1 1 6 0v1.13",key:"1vgav8"}]],p2=e("bug",b);const q=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],i2=e("calendar",q);const j=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],l2=e("chart-column",j);const C=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],_2=e("check",C);const V=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],M2=e("chevron-down",V);const A=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],m2=e("chevron-left",A);const L=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],v2=e("chevron-right",L);const H=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],x2=e("chevron-up",H);const S=[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]],f2=e("chevrons-left",S);const P=[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]],u2=e("chevrons-right",P);const U=[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]],g2=e("chevrons-up-down",U);const T=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],$2=e("circle-alert",T);const Z=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],N2=e("circle-check",Z);const B=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],w2=e("circle-question-mark",B);const R=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662",key:"154egf"}]],z2=e("circle-user",R);const E=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],b2=e("circle-x",E);const D=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],q2=e("circle",D);const O=[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],j2=e("clock",O);const F=[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]],C2=e("code-xml",F);const W=[["path",{d:"M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z",key:"1t2lqe"}],["path",{d:"M10 21.9V14L2.1 9.1",key:"o7czzq"}],["path",{d:"m10 14 11.9-6.9",key:"zm5e20"}],["path",{d:"M14 19.8v-8.1",key:"159ecu"}],["path",{d:"M18 17.5V9.4",key:"11uown"}]],V2=e("container",W);const I=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],A2=e("copy",I);const G=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],L2=e("database",G);const K=[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]],H2=e("dollar-sign",K);const X=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],S2=e("download",X);const Q=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],P2=e("external-link",Q);const J=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],U2=e("eye-off",J);const Y=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],T2=e("eye",Y);const e1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["circle",{cx:"11.5",cy:"14.5",r:"2.5",key:"1bq0ko"}],["path",{d:"M13.3 16.3 15 18",key:"2quom7"}]],Z2=e("file-search",e1);const a1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],B2=e("file-text",a1);const t1=[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]],R2=e("folder-open",t1);const c1=[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]],E2=e("funnel",c1);const o1=[["path",{d:"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",key:"j76jl0"}],["path",{d:"M22 10v6",key:"1lu8f3"}],["path",{d:"M6 12.5V16a6 3 0 0 0 12 0v-3.5",key:"1r8lef"}]],D2=e("graduation-cap",o1);const n1=[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]],O2=e("grip-vertical",n1);const s1=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],F2=e("hash",s1);const y1=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]],W2=e("house",y1);const h1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],I2=e("info",h1);const d1=[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]],G2=e("key",d1);const k1=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],K2=e("loader-circle",k1);const r1=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],X2=e("lock",r1);const p1=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],Q2=e("log-out",p1);const i1=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],J2=e("menu",i1);const l1=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]],Y2=e("message-square",l1);const _1=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]],e0=e("moon",_1);const M1=[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]],a0=e("network",M1);const m1=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],t0=e("package",m1);const v1=[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]],c0=e("palette",v1);const x1=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]],o0=e("panels-top-left",x1);const f1=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]],n0=e("pause",f1);const u1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]],s0=e("pen",u1);const g1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],y0=e("pencil",g1);const $1=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],h0=e("play",$1);const N1=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],d0=e("plus",N1);const w1=[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]],k0=e("power",w1);const z1=[["path",{d:"M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z",key:"w46dr5"}]],r0=e("puzzle",z1);const b1=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],p0=e("refresh-cw",b1);const q1=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],i0=e("rotate-ccw",q1);const j1=[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]],l0=e("rotate-cw",j1);const C1=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],_0=e("save",C1);const V1=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],M0=e("search",V1);const A1=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],m0=e("send",A1);const L1=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],v0=e("server",L1);const H1=[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]],x0=e("settings-2",H1);const S1=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],f0=e("settings",S1);const P1=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]],u0=e("shield",P1);const U1=[["path",{d:"M21 4v16",key:"7j8fe9"}],["path",{d:"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z",key:"zs4d6"}]],g0=e("skip-forward",U1);const T1=[["path",{d:"M10 8h4",key:"1sr2af"}],["path",{d:"M12 21v-9",key:"17s77i"}],["path",{d:"M12 8V3",key:"13r4qs"}],["path",{d:"M17 16h4",key:"h1uq16"}],["path",{d:"M19 12V3",key:"o1uvq1"}],["path",{d:"M19 21v-5",key:"qua636"}],["path",{d:"M3 14h4",key:"bcjad9"}],["path",{d:"M5 10V3",key:"cb8scm"}],["path",{d:"M5 21v-7",key:"1w1uti"}]],$0=e("sliders-vertical",T1);const Z1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]],N0=e("smile",Z1);const B1=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],w0=e("sparkles",B1);const R1=[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]],z0=e("square-pen",R1);const E1=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],b0=e("star",E1);const D1=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],q0=e("sun",D1);const O1=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],j0=e("terminal",O1);const F1=[["path",{d:"M7 10v12",key:"1qc93n"}],["path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z",key:"emmmcr"}]],C0=e("thumbs-up",F1);const W1=[["path",{d:"M17 14V2",key:"8ymqnk"}],["path",{d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z",key:"m61m77"}]],V0=e("thumbs-down",W1);const I1=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],A0=e("trash-2",I1);const G1=[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]],L0=e("trending-up",G1);const K1=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],H0=e("triangle-alert",K1);const X1=[["path",{d:"M12 4v16",key:"1654pz"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2",key:"e0r10z"}],["path",{d:"M9 20h6",key:"s66wpe"}]],S0=e("type",X1);const Q1=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],P0=e("upload",Q1);const J1=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],U0=e("user",J1);const Y1=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],T0=e("users",Y1);const e2=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],Z0=e("wifi-off",e2);const a2=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]],B0=e("wifi",a2);const t2=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],R0=e("x",t2);const c2=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],E0=e("zap",c2);export{v2 as $,n2 as A,k2 as B,N2 as C,H2 as D,U2 as E,B2 as F,o0 as G,W2 as H,I2 as I,C2 as J,G2 as K,X2 as L,Y2 as M,_0 as N,d0 as O,k0 as P,A0 as Q,p0 as R,f0 as S,L0 as T,U0 as U,Z2 as V,y0 as W,R0 as X,f2 as Y,E0 as Z,m2 as _,$2 as a,u2 as a0,g2 as a1,O2 as a2,D2 as a3,V2 as a4,t0 as a5,P0 as a6,R2 as a7,S2 as a8,E2 as a9,l0 as aA,p2 as aB,z0 as aa,h2 as ab,F2 as ac,T0 as ad,a0 as ae,i2 as af,n0 as ag,h0 as ah,S0 as ai,b0 as aj,C0 as ak,V0 as al,x0 as am,B0 as an,Z0 as ao,s0 as ap,m0 as aq,v0 as ar,r2 as as,z2 as at,l2 as au,q2 as av,$0 as aw,J2 as ax,d2 as ay,Q2 as az,i0 as b,r0 as c,L2 as d,j2 as e,c0 as f,u0 as g,H0 as h,_2 as i,A2 as j,T2 as k,b2 as l,q0 as m,e0 as n,w2 as o,j0 as p,P2 as q,K2 as r,w0 as s,N0 as t,g0 as u,y2 as v,M0 as w,s2 as x,M2 as y,x2 as z}; diff --git a/webui/dist/assets/icons-wa0wi-vG.js b/webui/dist/assets/icons-wa0wi-vG.js deleted file mode 100644 index 9add2cce..00000000 --- a/webui/dist/assets/icons-wa0wi-vG.js +++ /dev/null @@ -1 +0,0 @@ -import{r as s}from"./router-DQNkr8RI.js";const _=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),M=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,c,o)=>o?o.toUpperCase():c.toLowerCase()),d=t=>{const a=M(t);return a.charAt(0).toUpperCase()+a.slice(1)},k=(...t)=>t.filter((a,c,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===c).join(" ").trim(),m=t=>{for(const a in t)if(a.startsWith("aria-")||a==="role"||a==="title")return!0};var v={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const x=s.forwardRef(({color:t="currentColor",size:a=24,strokeWidth:c=2,absoluteStrokeWidth:o,className:y="",children:n,iconNode:r,...h},p)=>s.createElement("svg",{ref:p,...v,width:a,height:a,stroke:t,strokeWidth:o?Number(c)*24/Number(a):c,className:k("lucide",y),...!n&&!m(h)&&{"aria-hidden":"true"},...h},[...r.map(([i,l])=>s.createElement(i,l)),...Array.isArray(n)?n:[n]]));const e=(t,a)=>{const c=s.forwardRef(({className:o,...y},n)=>s.createElement(x,{ref:n,iconNode:a,className:k(`lucide-${_(d(t))}`,`lucide-${t}`,o),...y}));return c.displayName=d(t),c};const f=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],o2=e("activity",f);const u=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],n2=e("arrow-left",u);const g=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],s2=e("arrow-right",g);const $=[["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],y2=e("ban",$);const N=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],h2=e("book-open",N);const w=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],d2=e("bot",w);const z=[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]],k2=e("boxes",z);const b=[["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z",key:"uouzyp"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M21 21a4 4 0 0 0-3.81-4",key:"1b0z45"}],["path",{d:"M21 5a4 4 0 0 1-3.55 3.97",key:"5cxbf6"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M3 21a4 4 0 0 1 3.81-4",key:"1fjd4g"}],["path",{d:"M3 5a4 4 0 0 0 3.55 3.97",key:"1d7oge"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M9 7.13V6a3 3 0 1 1 6 0v1.13",key:"1vgav8"}]],r2=e("bug",b);const q=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],p2=e("calendar",q);const j=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],i2=e("chart-column",j);const C=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],l2=e("check",C);const V=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],_2=e("chevron-down",V);const A=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],M2=e("chevron-left",A);const H=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],m2=e("chevron-right",H);const L=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],v2=e("chevron-up",L);const S=[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]],x2=e("chevrons-left",S);const P=[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]],f2=e("chevrons-right",P);const U=[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]],u2=e("chevrons-up-down",U);const T=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],g2=e("circle-alert",T);const Z=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],$2=e("circle-check",Z);const R=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],N2=e("circle-question-mark",R);const B=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662",key:"154egf"}]],w2=e("circle-user",B);const E=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],z2=e("circle-x",E);const D=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],b2=e("circle",D);const O=[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],q2=e("clock",O);const F=[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]],j2=e("code-xml",F);const W=[["path",{d:"M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z",key:"1t2lqe"}],["path",{d:"M10 21.9V14L2.1 9.1",key:"o7czzq"}],["path",{d:"m10 14 11.9-6.9",key:"zm5e20"}],["path",{d:"M14 19.8v-8.1",key:"159ecu"}],["path",{d:"M18 17.5V9.4",key:"11uown"}]],C2=e("container",W);const I=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],V2=e("copy",I);const G=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],A2=e("database",G);const K=[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]],H2=e("dollar-sign",K);const X=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],L2=e("download",X);const Q=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],S2=e("external-link",Q);const J=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],P2=e("eye-off",J);const Y=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],U2=e("eye",Y);const e1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["circle",{cx:"11.5",cy:"14.5",r:"2.5",key:"1bq0ko"}],["path",{d:"M13.3 16.3 15 18",key:"2quom7"}]],T2=e("file-search",e1);const a1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],Z2=e("file-text",a1);const t1=[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]],R2=e("folder-open",t1);const c1=[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]],B2=e("funnel",c1);const o1=[["path",{d:"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",key:"j76jl0"}],["path",{d:"M22 10v6",key:"1lu8f3"}],["path",{d:"M6 12.5V16a6 3 0 0 0 12 0v-3.5",key:"1r8lef"}]],E2=e("graduation-cap",o1);const n1=[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]],D2=e("grip-vertical",n1);const s1=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],O2=e("hash",s1);const y1=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]],F2=e("house",y1);const h1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],W2=e("info",h1);const d1=[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]],I2=e("key",d1);const k1=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],G2=e("loader-circle",k1);const r1=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],K2=e("lock",r1);const p1=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],X2=e("log-out",p1);const i1=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],Q2=e("menu",i1);const l1=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]],J2=e("message-square",l1);const _1=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]],Y2=e("moon",_1);const M1=[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]],e0=e("network",M1);const m1=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],a0=e("package",m1);const v1=[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]],t0=e("palette",v1);const x1=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]],c0=e("panels-top-left",x1);const f1=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]],o0=e("pause",f1);const u1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]],n0=e("pen",u1);const g1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],s0=e("pencil",g1);const $1=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],y0=e("play",$1);const N1=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],h0=e("plus",N1);const w1=[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]],d0=e("power",w1);const z1=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],k0=e("refresh-cw",z1);const b1=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],r0=e("rotate-ccw",b1);const q1=[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]],p0=e("rotate-cw",q1);const j1=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],i0=e("save",j1);const C1=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],l0=e("search",C1);const V1=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],_0=e("send",V1);const A1=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],M0=e("server",A1);const H1=[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]],m0=e("settings-2",H1);const L1=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],v0=e("settings",L1);const S1=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]],x0=e("shield",S1);const P1=[["path",{d:"M21 4v16",key:"7j8fe9"}],["path",{d:"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z",key:"zs4d6"}]],f0=e("skip-forward",P1);const U1=[["path",{d:"M10 8h4",key:"1sr2af"}],["path",{d:"M12 21v-9",key:"17s77i"}],["path",{d:"M12 8V3",key:"13r4qs"}],["path",{d:"M17 16h4",key:"h1uq16"}],["path",{d:"M19 12V3",key:"o1uvq1"}],["path",{d:"M19 21v-5",key:"qua636"}],["path",{d:"M3 14h4",key:"bcjad9"}],["path",{d:"M5 10V3",key:"cb8scm"}],["path",{d:"M5 21v-7",key:"1w1uti"}]],u0=e("sliders-vertical",U1);const T1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]],g0=e("smile",T1);const Z1=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],$0=e("sparkles",Z1);const R1=[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]],N0=e("square-pen",R1);const B1=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],w0=e("star",B1);const E1=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],z0=e("sun",E1);const D1=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],b0=e("terminal",D1);const O1=[["path",{d:"M7 10v12",key:"1qc93n"}],["path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z",key:"emmmcr"}]],q0=e("thumbs-up",O1);const F1=[["path",{d:"M17 14V2",key:"8ymqnk"}],["path",{d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z",key:"m61m77"}]],j0=e("thumbs-down",F1);const W1=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],C0=e("trash-2",W1);const I1=[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]],V0=e("trending-up",I1);const G1=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],A0=e("triangle-alert",G1);const K1=[["path",{d:"M12 4v16",key:"1654pz"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2",key:"e0r10z"}],["path",{d:"M9 20h6",key:"s66wpe"}]],H0=e("type",K1);const X1=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],L0=e("upload",X1);const Q1=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],S0=e("user",Q1);const J1=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],P0=e("users",J1);const Y1=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],U0=e("wifi-off",Y1);const e2=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]],T0=e("wifi",e2);const a2=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],Z0=e("x",a2);const t2=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],R0=e("zap",t2);export{f2 as $,o2 as A,d2 as B,q2 as C,H2 as D,P2 as E,Z2 as F,i0 as G,F2 as H,W2 as I,d0 as J,I2 as K,K2 as L,J2 as M,h0 as N,C0 as O,t0 as P,T2 as Q,k0 as R,x0 as S,V0 as T,S0 as U,s0 as V,x2 as W,Z0 as X,M2 as Y,R0 as Z,m2 as _,A2 as a,u2 as a0,D2 as a1,E2 as a2,C2 as a3,a0 as a4,L0 as a5,R2 as a6,L2 as a7,B2 as a8,N0 as a9,r2 as aA,y2 as aa,O2 as ab,P0 as ac,e0 as ad,p2 as ae,o0 as af,y0 as ag,H0 as ah,w0 as ai,q0 as aj,j0 as ak,m0 as al,T0 as am,U0 as an,n0 as ao,_0 as ap,M0 as aq,k2 as ar,w2 as as,i2 as at,b2 as au,u0 as av,Q2 as aw,h2 as ax,X2 as ay,p0 as az,v0 as b,A0 as c,l2 as d,V2 as e,U2 as f,$2 as g,z2 as h,r0 as i,z0 as j,Y2 as k,g2 as l,N2 as m,b0 as n,S2 as o,G2 as p,$0 as q,g0 as r,f0 as s,s2 as t,l0 as u,n2 as v,_2 as w,v2 as x,c0 as y,j2 as z}; diff --git a/webui/dist/assets/index-JgAL2W8G.js b/webui/dist/assets/index-CnFGj4Iv.js similarity index 53% rename from webui/dist/assets/index-JgAL2W8G.js rename to webui/dist/assets/index-CnFGj4Iv.js index dadd1eea..e6aa6582 100644 --- a/webui/dist/assets/index-JgAL2W8G.js +++ b/webui/dist/assets/index-CnFGj4Iv.js @@ -1,65 +1,65 @@ -import{r as b,j as o,u as Zi,R as ae,c as J1,b as pa,d as pJ,e as gJ,f as xJ,L as vJ,g as yJ,h as ms,k as bJ,l as wJ,O as Bz,m as SJ}from"./router-DQNkr8RI.js";import{a as kJ,b as OJ,g as gd}from"./react-vendor-Dtc2IqVY.js";import{c as Fz,R as jJ,T as NJ,L as CJ,a as TJ,C as Ux,X as Wx,Y as Dm,b as EJ,B as v4,d as Gx,P as _J,e as AJ,f as MJ,_ as RJ,g as DJ,h as Ge,i as PJ,j as x9,k as zJ,l as v9,m as IJ,n as LJ,o as BJ,r as qz,p as FJ,q as pj,s as $z,t as xd,u as gj,v as qJ,w as $J,x as Hz,y as Qz,z as Vz,A as xj,D as vj,E as yj,F as HJ,G as QJ,H as VJ,I as UJ,J as WJ,K as GJ,M as XJ,N as bj,O as Iy,Q as YJ,S as KJ,U as wj,V as ZJ,W as JJ,Z as Uz,$ as Wz,a0 as Gz,a1 as Xz,a2 as Ly,a3 as Yz,a4 as Kz,a5 as eee,a6 as tee,a7 as nee,a8 as ree,a9 as see,aa as iee,ab as aee,ac as oee,ad as Zz,ae as Jz,af as lee,ag as cee,ah as uee,ai as dee,aj as hee,ak as fee,al as mee,am as pee,an as gee,ao as xee,ap as vee,aq as yee,ar as bee,as as wee,at as See,au as kee}from"./charts-Cdq_Jxe7.js";import{c as Ra,a as By,u as Ui,P as xn,b as nt,d as Yn,e as Ep,f as Xl,g as Rs,h as ii,i as Uh,j as Sj,k as Fy,S as Oee,l as eI,m as tI,R as nI,O as qy,n as kj,C as $y,o as Hy,T as Oj,D as jj,p as Nj,q as rI,r as sI,W as jee,s as iI,I as Nee,t as aI,v as oI,w as Cee,x as lI,V as Tee,L as cI,y as uI,z as Eee,A as _ee,B as dI,E as Aee,F as Mee,G as Qc,H as Qy,J as vf,K as hI,M as fI,N as mI,Q as pI,U as Cj,X as Tj,Y as Vy,Z as Uy,_ as Ej,$ as gI,a0 as Ree,a1 as xI,a2 as Dee,a3 as Pee,a4 as vI,a5 as zee}from"./ui-vendor-BgfqR_Xz.js";import{R as Ps,A as Iee,D as Lee,a as ek,Z as tk,C as _h,M as Wh,T as Bee,X as _p,P as yI,S as Fee,b as Xu,I as Oa,c as Wa,d as Ro,e as Mv,E as Rv,f as Ea,g as Vc,h as qee,i as $ee,j as nk,k as rk,L as y9,K as bI,l as Uc,m as Wy,n as Hee,F as zl,o as Ah,p as Po,q as Qee,B as a0,U as Dv,r as _j,s as Vee,t as Uee,u as Ni,H as D0,v as wI,w as nd,x as P0,y as Wee,z as Gee,G as Gy,J as Aj,N as Ls,O as Sn,Q as Pv,V as Yu,W as Ap,Y as vd,_ as yd,$ as Mp,a0 as Mj,a1 as Xee,a2 as Yee,a3 as Kee,a4 as Gh,a5 as b9,a6 as Zee,a7 as Ku,a8 as sk,a9 as z0,aa as Jee,ab as ik,ac as ete,ad as SI,ae as w9,af as tte,ag as nte,ah as rte,ai as Ac,aj as y4,ak as S9,al as ste,am as ite,an as ate,ao as ote,ap as lte,aq as kI,ar as OI,as as jI,at as cte,au as ute,av as k9,aw as dte,ax as hte,ay as O9,az as fte,aA as mte}from"./icons-wa0wi-vG.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const i of s)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(s){const i={};return s.integrity&&(i.integrity=s.integrity),s.referrerPolicy&&(i.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?i.credentials="include":s.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(s){if(s.ep)return;s.ep=!0;const i=n(s);fetch(s.href,i)}})();var b4={exports:{}},Pm={},w4={exports:{}},S4={};var j9;function pte(){return j9||(j9=1,(function(t){function e(F,Y){var J=F.length;F.push(Y);e:for(;0>>1,R=F[X];if(0>>1;Xs(I,J))Vs(ee,I)?(F[X]=ee,F[V]=J,X=V):(F[X]=I,F[G]=J,X=G);else if(Vs(ee,J))F[X]=ee,F[V]=J,X=V;else break e}}return Y}function s(F,Y){var J=F.sortIndex-Y.sortIndex;return J!==0?J:F.id-Y.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var i=performance;t.unstable_now=function(){return i.now()}}else{var a=Date,l=a.now();t.unstable_now=function(){return a.now()-l}}var c=[],d=[],h=1,m=null,g=3,x=!1,y=!1,w=!1,S=!1,k=typeof setTimeout=="function"?setTimeout:null,j=typeof clearTimeout=="function"?clearTimeout:null,N=typeof setImmediate<"u"?setImmediate:null;function T(F){for(var Y=n(d);Y!==null;){if(Y.callback===null)r(d);else if(Y.startTime<=F)r(d),Y.sortIndex=Y.expirationTime,e(c,Y);else break;Y=n(d)}}function E(F){if(w=!1,T(F),!y)if(n(c)!==null)y=!0,_||(_=!0,U());else{var Y=n(d);Y!==null&&Q(E,Y.startTime-F)}}var _=!1,A=-1,L=5,P=-1;function B(){return S?!0:!(t.unstable_now()-PF&&B());){var X=m.callback;if(typeof X=="function"){m.callback=null,g=m.priorityLevel;var R=X(m.expirationTime<=F);if(F=t.unstable_now(),typeof R=="function"){m.callback=R,T(F),Y=!0;break t}m===n(c)&&r(c),T(F)}else r(c);m=n(c)}if(m!==null)Y=!0;else{var ie=n(d);ie!==null&&Q(E,ie.startTime-F),Y=!1}}break e}finally{m=null,g=J,x=!1}Y=void 0}}finally{Y?U():_=!1}}}var U;if(typeof N=="function")U=function(){N($)};else if(typeof MessageChannel<"u"){var te=new MessageChannel,z=te.port2;te.port1.onmessage=$,U=function(){z.postMessage(null)}}else U=function(){k($,0)};function Q(F,Y){A=k(function(){F(t.unstable_now())},Y)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(F){F.callback=null},t.unstable_forceFrameRate=function(F){0>F||125X?(F.sortIndex=J,e(d,F),n(c)===null&&F===n(d)&&(w?(j(A),A=-1):w=!0,Q(E,J-X))):(F.sortIndex=R,e(c,F),y||x||(y=!0,_||(_=!0,U()))),F},t.unstable_shouldYield=B,t.unstable_wrapCallback=function(F){var Y=g;return function(){var J=g;g=Y;try{return F.apply(this,arguments)}finally{g=J}}}})(S4)),S4}var N9;function gte(){return N9||(N9=1,w4.exports=pte()),w4.exports}var C9;function xte(){if(C9)return Pm;C9=1;var t=gte(),e=kJ(),n=OJ();function r(u){var f="https://react.dev/errors/"+u;if(1R||(u.current=X[R],X[R]=null,R--)}function I(u,f){R++,X[R]=u.current,u.current=f}var V=ie(null),ee=ie(null),ne=ie(null),W=ie(null);function se(u,f){switch(I(ne,f),I(ee,u),I(V,null),f.nodeType){case 9:case 11:u=(u=f.documentElement)&&(u=u.namespaceURI)?FT(u):0;break;default:if(u=f.tagName,f=f.namespaceURI)f=FT(f),u=qT(f,u);else switch(u){case"svg":u=1;break;case"math":u=2;break;default:u=0}}G(V),I(V,u)}function re(){G(V),G(ee),G(ne)}function oe(u){u.memoizedState!==null&&I(W,u);var f=V.current,p=qT(f,u.type);f!==p&&(I(ee,u),I(V,p))}function Te(u){ee.current===u&&(G(V),G(ee)),W.current===u&&(G(W),_m._currentValue=J)}var We,Ye;function Je(u){if(We===void 0)try{throw Error()}catch(p){var f=p.stack.trim().match(/\n( *(at )?)/);We=f&&f[1]||"",Ye=-1{for(const i of s)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(s){const i={};return s.integrity&&(i.integrity=s.integrity),s.referrerPolicy&&(i.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?i.credentials="include":s.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(s){if(s.ep)return;s.ep=!0;const i=n(s);fetch(s.href,i)}})();var O4={exports:{}},zm={},j4={exports:{}},N4={};var A9;function xte(){return A9||(A9=1,(function(t){function e(L,$){var K=L.length;L.push($);e:for(;0>>1,R=L[Y];if(0>>1;Ys(z,K))Us(te,z)?(L[Y]=te,L[U]=K,Y=U):(L[Y]=z,L[X]=K,Y=X);else if(Us(te,K))L[Y]=te,L[U]=K,Y=U;else break e}}return $}function s(L,$){var K=L.sortIndex-$.sortIndex;return K!==0?K:L.id-$.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var i=performance;t.unstable_now=function(){return i.now()}}else{var a=Date,l=a.now();t.unstable_now=function(){return a.now()-l}}var c=[],d=[],h=1,m=null,g=3,x=!1,y=!1,w=!1,S=!1,k=typeof setTimeout=="function"?setTimeout:null,j=typeof clearTimeout=="function"?clearTimeout:null,N=typeof setImmediate<"u"?setImmediate:null;function T(L){for(var $=n(d);$!==null;){if($.callback===null)r(d);else if($.startTime<=L)r(d),$.sortIndex=$.expirationTime,e(c,$);else break;$=n(d)}}function E(L){if(w=!1,T(L),!y)if(n(c)!==null)y=!0,_||(_=!0,W());else{var $=n(d);$!==null&&V(E,$.startTime-L)}}var _=!1,A=-1,D=5,q=-1;function B(){return S?!0:!(t.unstable_now()-qL&&B());){var Y=m.callback;if(typeof Y=="function"){m.callback=null,g=m.priorityLevel;var R=Y(m.expirationTime<=L);if(L=t.unstable_now(),typeof R=="function"){m.callback=R,T(L),$=!0;break t}m===n(c)&&r(c),T(L)}else r(c);m=n(c)}if(m!==null)$=!0;else{var ie=n(d);ie!==null&&V(E,ie.startTime-L),$=!1}}break e}finally{m=null,g=K,x=!1}$=void 0}}finally{$?W():_=!1}}}var W;if(typeof N=="function")W=function(){N(H)};else if(typeof MessageChannel<"u"){var ee=new MessageChannel,I=ee.port2;ee.port1.onmessage=H,W=function(){I.postMessage(null)}}else W=function(){k(H,0)};function V(L,$){A=k(function(){L(t.unstable_now())},$)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(L){L.callback=null},t.unstable_forceFrameRate=function(L){0>L||125Y?(L.sortIndex=K,e(d,L),n(c)===null&&L===n(d)&&(w?(j(A),A=-1):w=!0,V(E,K-Y))):(L.sortIndex=R,e(c,L),y||x||(y=!0,_||(_=!0,W()))),L},t.unstable_shouldYield=B,t.unstable_wrapCallback=function(L){var $=g;return function(){var K=g;g=$;try{return L.apply(this,arguments)}finally{g=K}}}})(N4)),N4}var M9;function vte(){return M9||(M9=1,j4.exports=xte()),j4.exports}var R9;function yte(){if(R9)return zm;R9=1;var t=vte(),e=NJ(),n=CJ();function r(u){var f="https://react.dev/errors/"+u;if(1R||(u.current=Y[R],Y[R]=null,R--)}function z(u,f){R++,Y[R]=u.current,u.current=f}var U=ie(null),te=ie(null),ne=ie(null),G=ie(null);function se(u,f){switch(z(ne,f),z(te,u),z(U,null),f.nodeType){case 9:case 11:u=(u=f.documentElement)&&(u=u.namespaceURI)?UT(u):0;break;default:if(u=f.tagName,f=f.namespaceURI)f=UT(f),u=WT(f,u);else switch(u){case"svg":u=1;break;case"math":u=2;break;default:u=0}}X(U),z(U,u)}function re(){X(U),X(te),X(ne)}function ae(u){u.memoizedState!==null&&z(G,u);var f=U.current,p=WT(f,u.type);f!==p&&(z(te,u),z(U,p))}function _e(u){te.current===u&&(X(U),X(te)),G.current===u&&(X(G),Am._currentValue=K)}var Be,Ye;function Je(u){if(Be===void 0)try{throw Error()}catch(p){var f=p.stack.trim().match(/\n( *(at )?)/);Be=f&&f[1]||"",Ye=-1)":-1O||ue[v]!==we[O]){var Ee=` -`+ue[v].replace(" at new "," at ");return u.displayName&&Ee.includes("")&&(Ee=Ee.replace("",u.displayName)),Ee}while(1<=v&&0<=O);break}}}finally{Oe=!1,Error.prepareStackTrace=p}return(p=u?u.displayName||u.name:"")?Je(p):""}function Ue(u,f){switch(u.tag){case 26:case 27:case 5:return Je(u.type);case 16:return Je("Lazy");case 13:return u.child!==f&&f!==null?Je("Suspense Fallback"):Je("Suspense");case 19:return Je("SuspenseList");case 0:case 15:return Ve(u.type,!1);case 11:return Ve(u.type.render,!1);case 1:return Ve(u.type,!0);case 31:return Je("Activity");default:return""}}function He(u){try{var f="",p=null;do f+=Ue(u,p),p=u,u=u.return;while(u);return f}catch(v){return` +`+Be+u+Ye}var Oe=!1;function Ve(u,f){if(!u||Oe)return"";Oe=!0;var p=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var v={DetermineComponentFrameRoot:function(){try{if(f){var Re=function(){throw Error()};if(Object.defineProperty(Re.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(Re,[])}catch(Ce){var ke=Ce}Reflect.construct(u,[],Re)}else{try{Re.call()}catch(Ce){ke=Ce}u.call(Re.prototype)}}else{try{throw Error()}catch(Ce){ke=Ce}(Re=u())&&typeof Re.catch=="function"&&Re.catch(function(){})}}catch(Ce){if(Ce&&ke&&typeof Ce.stack=="string")return[Ce.stack,ke.stack]}return[null,null]}};v.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var O=Object.getOwnPropertyDescriptor(v.DetermineComponentFrameRoot,"name");O&&O.configurable&&Object.defineProperty(v.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var C=v.DetermineComponentFrameRoot(),F=C[0],Z=C[1];if(F&&Z){var de=F.split(` +`),Se=Z.split(` +`);for(O=v=0;vO||de[v]!==Se[O]){var Te=` +`+de[v].replace(" at new "," at ");return u.displayName&&Te.includes("")&&(Te=Te.replace("",u.displayName)),Te}while(1<=v&&0<=O);break}}}finally{Oe=!1,Error.prepareStackTrace=p}return(p=u?u.displayName||u.name:"")?Je(p):""}function Ue(u,f){switch(u.tag){case 26:case 27:case 5:return Je(u.type);case 16:return Je("Lazy");case 13:return u.child!==f&&f!==null?Je("Suspense Fallback"):Je("Suspense");case 19:return Je("SuspenseList");case 0:case 15:return Ve(u.type,!1);case 11:return Ve(u.type.render,!1);case 1:return Ve(u.type,!0);case 31:return Je("Activity");default:return""}}function $e(u){try{var f="",p=null;do f+=Ue(u,p),p=u,u=u.return;while(u);return f}catch(v){return` Error generating stack: `+v.message+` -`+v.stack}}var Ot=Object.prototype.hasOwnProperty,xt=t.unstable_scheduleCallback,kn=t.unstable_cancelCallback,It=t.unstable_shouldYield,Yt=t.unstable_requestPaint,_t=t.unstable_now,mt=t.unstable_getCurrentPriorityLevel,Ne=t.unstable_ImmediatePriority,Ie=t.unstable_UserBlockingPriority,st=t.unstable_NormalPriority,yt=t.unstable_LowPriority,Pt=t.unstable_IdlePriority,Mt=t.log,zn=t.unstable_setDisableYieldValue,Fe=null,rt=null;function tn(u){if(typeof Mt=="function"&&zn(u),rt&&typeof rt.setStrictMode=="function")try{rt.setStrictMode(Fe,u)}catch{}}var Rt=Math.clz32?Math.clz32:it,ke=Math.log,Pe=Math.LN2;function it(u){return u>>>=0,u===0?32:31-(ke(u)/Pe|0)|0}var ot=256,nn=262144,Kt=4194304;function pt(u){var f=u&42;if(f!==0)return f;switch(u&-u){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:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return u&261888;case 262144:case 524288:case 1048576:case 2097152:return u&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return u&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return u}}function xr(u,f,p){var v=u.pendingLanes;if(v===0)return 0;var O=0,C=u.suspendedLanes,q=u.pingedLanes;u=u.warmLanes;var K=v&134217727;return K!==0?(v=K&~C,v!==0?O=pt(v):(q&=K,q!==0?O=pt(q):p||(p=K&~u,p!==0&&(O=pt(p))))):(K=v&~C,K!==0?O=pt(K):q!==0?O=pt(q):p||(p=v&~u,p!==0&&(O=pt(p)))),O===0?0:f!==0&&f!==O&&(f&C)===0&&(C=O&-O,p=f&-f,C>=p||C===32&&(p&4194048)!==0)?f:O}function Ur(u,f){return(u.pendingLanes&~(u.suspendedLanes&~u.pingedLanes)&f)===0}function Wr(u,f){switch(u){case 1:case 2:case 4:case 8:case 64:return f+250;case 16:case 32: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 f+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 vr(){var u=Kt;return Kt<<=1,(Kt&62914560)===0&&(Kt=4194304),u}function In(u){for(var f=[],p=0;31>p;p++)f.push(u);return f}function cr(u,f){u.pendingLanes|=f,f!==268435456&&(u.suspendedLanes=0,u.pingedLanes=0,u.warmLanes=0)}function nr(u,f,p,v,O,C){var q=u.pendingLanes;u.pendingLanes=p,u.suspendedLanes=0,u.pingedLanes=0,u.warmLanes=0,u.expiredLanes&=p,u.entangledLanes&=p,u.errorRecoveryDisabledLanes&=p,u.shellSuspendCounter=0;var K=u.entanglements,ue=u.expirationTimes,we=u.hiddenUpdates;for(p=q&~p;0"u")return null;try{return u.activeElement||u.body}catch{return u.body}}var cK=/[\n"\\]/g;function ta(u){return u.replace(cK,function(f){return"\\"+f.charCodeAt(0).toString(16)+" "})}function hw(u,f,p,v,O,C,q,K){u.name="",q!=null&&typeof q!="function"&&typeof q!="symbol"&&typeof q!="boolean"?u.type=q:u.removeAttribute("type"),f!=null?q==="number"?(f===0&&u.value===""||u.value!=f)&&(u.value=""+ea(f)):u.value!==""+ea(f)&&(u.value=""+ea(f)):q!=="submit"&&q!=="reset"||u.removeAttribute("value"),f!=null?fw(u,q,ea(f)):p!=null?fw(u,q,ea(p)):v!=null&&u.removeAttribute("value"),O==null&&C!=null&&(u.defaultChecked=!!C),O!=null&&(u.checked=O&&typeof O!="function"&&typeof O!="symbol"),K!=null&&typeof K!="function"&&typeof K!="symbol"&&typeof K!="boolean"?u.name=""+ea(K):u.removeAttribute("name")}function D7(u,f,p,v,O,C,q,K){if(C!=null&&typeof C!="function"&&typeof C!="symbol"&&typeof C!="boolean"&&(u.type=C),f!=null||p!=null){if(!(C!=="submit"&&C!=="reset"||f!=null)){dw(u);return}p=p!=null?""+ea(p):"",f=f!=null?""+ea(f):p,K||f===u.value||(u.value=f),u.defaultValue=f}v=v??O,v=typeof v!="function"&&typeof v!="symbol"&&!!v,u.checked=K?u.checked:!!v,u.defaultChecked=!!v,q!=null&&typeof q!="function"&&typeof q!="symbol"&&typeof q!="boolean"&&(u.name=q),dw(u)}function fw(u,f,p){f==="number"&&zg(u.ownerDocument)===u||u.defaultValue===""+p||(u.defaultValue=""+p)}function Nd(u,f,p,v){if(u=u.options,f){f={};for(var O=0;O"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),vw=!1;if(tl)try{var Gf={};Object.defineProperty(Gf,"passive",{get:function(){vw=!0}}),window.addEventListener("test",Gf,Gf),window.removeEventListener("test",Gf,Gf)}catch{vw=!1}var nc=null,yw=null,Lg=null;function q7(){if(Lg)return Lg;var u,f=yw,p=f.length,v,O="value"in nc?nc.value:nc.textContent,C=O.length;for(u=0;u=Kf),W7=" ",G7=!1;function X7(u,f){switch(u){case"keyup":return IK.indexOf(f.keyCode)!==-1;case"keydown":return f.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Y7(u){return u=u.detail,typeof u=="object"&&"data"in u?u.data:null}var _d=!1;function BK(u,f){switch(u){case"compositionend":return Y7(f);case"keypress":return f.which!==32?null:(G7=!0,W7);case"textInput":return u=f.data,u===W7&&G7?null:u;default:return null}}function FK(u,f){if(_d)return u==="compositionend"||!Ow&&X7(u,f)?(u=q7(),Lg=yw=nc=null,_d=!1,u):null;switch(u){case"paste":return null;case"keypress":if(!(f.ctrlKey||f.altKey||f.metaKey)||f.ctrlKey&&f.altKey){if(f.char&&1=f)return{node:p,offset:f-u};u=v}e:{for(;p;){if(p.nextSibling){p=p.nextSibling;break e}p=p.parentNode}p=void 0}p=sC(p)}}function aC(u,f){return u&&f?u===f?!0:u&&u.nodeType===3?!1:f&&f.nodeType===3?aC(u,f.parentNode):"contains"in u?u.contains(f):u.compareDocumentPosition?!!(u.compareDocumentPosition(f)&16):!1:!1}function oC(u){u=u!=null&&u.ownerDocument!=null&&u.ownerDocument.defaultView!=null?u.ownerDocument.defaultView:window;for(var f=zg(u.document);f instanceof u.HTMLIFrameElement;){try{var p=typeof f.contentWindow.location.href=="string"}catch{p=!1}if(p)u=f.contentWindow;else break;f=zg(u.document)}return f}function Cw(u){var f=u&&u.nodeName&&u.nodeName.toLowerCase();return f&&(f==="input"&&(u.type==="text"||u.type==="search"||u.type==="tel"||u.type==="url"||u.type==="password")||f==="textarea"||u.contentEditable==="true")}var GK=tl&&"documentMode"in document&&11>=document.documentMode,Ad=null,Tw=null,tm=null,Ew=!1;function lC(u,f,p){var v=p.window===p?p.document:p.nodeType===9?p:p.ownerDocument;Ew||Ad==null||Ad!==zg(v)||(v=Ad,"selectionStart"in v&&Cw(v)?v={start:v.selectionStart,end:v.selectionEnd}:(v=(v.ownerDocument&&v.ownerDocument.defaultView||window).getSelection(),v={anchorNode:v.anchorNode,anchorOffset:v.anchorOffset,focusNode:v.focusNode,focusOffset:v.focusOffset}),tm&&em(tm,v)||(tm=v,v=Ax(Tw,"onSelect"),0>=q,O-=q,ao=1<<32-Rt(f)+O|p<Zt?(fn=vt,vt=null):fn=vt.sibling;var Bn=Se(pe,vt,ye[Zt],Ae);if(Bn===null){vt===null&&(vt=fn);break}u&&vt&&Bn.alternate===null&&f(pe,vt),fe=C(Bn,fe,Zt),Ln===null?Nt=Bn:Ln.sibling=Bn,Ln=Bn,vt=fn}if(Zt===ye.length)return p(pe,vt),yn&&rl(pe,Zt),Nt;if(vt===null){for(;ZtZt?(fn=vt,vt=null):fn=vt.sibling;var Oc=Se(pe,vt,Bn.value,Ae);if(Oc===null){vt===null&&(vt=fn);break}u&&vt&&Oc.alternate===null&&f(pe,vt),fe=C(Oc,fe,Zt),Ln===null?Nt=Oc:Ln.sibling=Oc,Ln=Oc,vt=fn}if(Bn.done)return p(pe,vt),yn&&rl(pe,Zt),Nt;if(vt===null){for(;!Bn.done;Zt++,Bn=ye.next())Bn=Re(pe,Bn.value,Ae),Bn!==null&&(fe=C(Bn,fe,Zt),Ln===null?Nt=Bn:Ln.sibling=Bn,Ln=Bn);return yn&&rl(pe,Zt),Nt}for(vt=v(vt);!Bn.done;Zt++,Bn=ye.next())Bn=Ce(vt,pe,Zt,Bn.value,Ae),Bn!==null&&(u&&Bn.alternate!==null&&vt.delete(Bn.key===null?Zt:Bn.key),fe=C(Bn,fe,Zt),Ln===null?Nt=Bn:Ln.sibling=Bn,Ln=Bn);return u&&vt.forEach(function(mJ){return f(pe,mJ)}),yn&&rl(pe,Zt),Nt}function Jn(pe,fe,ye,Ae){if(typeof ye=="object"&&ye!==null&&ye.type===w&&ye.key===null&&(ye=ye.props.children),typeof ye=="object"&&ye!==null){switch(ye.$$typeof){case x:e:{for(var Nt=ye.key;fe!==null;){if(fe.key===Nt){if(Nt=ye.type,Nt===w){if(fe.tag===7){p(pe,fe.sibling),Ae=O(fe,ye.props.children),Ae.return=pe,pe=Ae;break e}}else if(fe.elementType===Nt||typeof Nt=="object"&&Nt!==null&&Nt.$$typeof===L&&ju(Nt)===fe.type){p(pe,fe.sibling),Ae=O(fe,ye.props),om(Ae,ye),Ae.return=pe,pe=Ae;break e}p(pe,fe);break}else f(pe,fe);fe=fe.sibling}ye.type===w?(Ae=bu(ye.props.children,pe.mode,Ae,ye.key),Ae.return=pe,pe=Ae):(Ae=Gg(ye.type,ye.key,ye.props,null,pe.mode,Ae),om(Ae,ye),Ae.return=pe,pe=Ae)}return q(pe);case y:e:{for(Nt=ye.key;fe!==null;){if(fe.key===Nt)if(fe.tag===4&&fe.stateNode.containerInfo===ye.containerInfo&&fe.stateNode.implementation===ye.implementation){p(pe,fe.sibling),Ae=O(fe,ye.children||[]),Ae.return=pe,pe=Ae;break e}else{p(pe,fe);break}else f(pe,fe);fe=fe.sibling}Ae=zw(ye,pe.mode,Ae),Ae.return=pe,pe=Ae}return q(pe);case L:return ye=ju(ye),Jn(pe,fe,ye,Ae)}if(Q(ye))return ut(pe,fe,ye,Ae);if(U(ye)){if(Nt=U(ye),typeof Nt!="function")throw Error(r(150));return ye=Nt.call(ye),At(pe,fe,ye,Ae)}if(typeof ye.then=="function")return Jn(pe,fe,tx(ye),Ae);if(ye.$$typeof===N)return Jn(pe,fe,Kg(pe,ye),Ae);nx(pe,ye)}return typeof ye=="string"&&ye!==""||typeof ye=="number"||typeof ye=="bigint"?(ye=""+ye,fe!==null&&fe.tag===6?(p(pe,fe.sibling),Ae=O(fe,ye),Ae.return=pe,pe=Ae):(p(pe,fe),Ae=Pw(ye,pe.mode,Ae),Ae.return=pe,pe=Ae),q(pe)):p(pe,fe)}return function(pe,fe,ye,Ae){try{am=0;var Nt=Jn(pe,fe,ye,Ae);return $d=null,Nt}catch(vt){if(vt===qd||vt===Jg)throw vt;var Ln=Mi(29,vt,null,pe.mode);return Ln.lanes=Ae,Ln.return=pe,Ln}finally{}}}var Cu=AC(!0),MC=AC(!1),oc=!1;function Gw(u){u.updateQueue={baseState:u.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Xw(u,f){u=u.updateQueue,f.updateQueue===u&&(f.updateQueue={baseState:u.baseState,firstBaseUpdate:u.firstBaseUpdate,lastBaseUpdate:u.lastBaseUpdate,shared:u.shared,callbacks:null})}function lc(u){return{lane:u,tag:0,payload:null,callback:null,next:null}}function cc(u,f,p){var v=u.updateQueue;if(v===null)return null;if(v=v.shared,(Hn&2)!==0){var O=v.pending;return O===null?f.next=f:(f.next=O.next,O.next=f),v.pending=f,f=Wg(u),pC(u,null,p),f}return Ug(u,v,f,p),Wg(u)}function lm(u,f,p){if(f=f.updateQueue,f!==null&&(f=f.shared,(p&4194048)!==0)){var v=f.lanes;v&=u.pendingLanes,p|=v,f.lanes=p,xs(u,p)}}function Yw(u,f){var p=u.updateQueue,v=u.alternate;if(v!==null&&(v=v.updateQueue,p===v)){var O=null,C=null;if(p=p.firstBaseUpdate,p!==null){do{var q={lane:p.lane,tag:p.tag,payload:p.payload,callback:null,next:null};C===null?O=C=q:C=C.next=q,p=p.next}while(p!==null);C===null?O=C=f:C=C.next=f}else O=C=f;p={baseState:v.baseState,firstBaseUpdate:O,lastBaseUpdate:C,shared:v.shared,callbacks:v.callbacks},u.updateQueue=p;return}u=p.lastBaseUpdate,u===null?p.firstBaseUpdate=f:u.next=f,p.lastBaseUpdate=f}var Kw=!1;function cm(){if(Kw){var u=Fd;if(u!==null)throw u}}function um(u,f,p,v){Kw=!1;var O=u.updateQueue;oc=!1;var C=O.firstBaseUpdate,q=O.lastBaseUpdate,K=O.shared.pending;if(K!==null){O.shared.pending=null;var ue=K,we=ue.next;ue.next=null,q===null?C=we:q.next=we,q=ue;var Ee=u.alternate;Ee!==null&&(Ee=Ee.updateQueue,K=Ee.lastBaseUpdate,K!==q&&(K===null?Ee.firstBaseUpdate=we:K.next=we,Ee.lastBaseUpdate=ue))}if(C!==null){var Re=O.baseState;q=0,Ee=we=ue=null,K=C;do{var Se=K.lane&-536870913,Ce=Se!==K.lane;if(Ce?(hn&Se)===Se:(v&Se)===Se){Se!==0&&Se===Bd&&(Kw=!0),Ee!==null&&(Ee=Ee.next={lane:0,tag:K.tag,payload:K.payload,callback:null,next:null});e:{var ut=u,At=K;Se=f;var Jn=p;switch(At.tag){case 1:if(ut=At.payload,typeof ut=="function"){Re=ut.call(Jn,Re,Se);break e}Re=ut;break e;case 3:ut.flags=ut.flags&-65537|128;case 0:if(ut=At.payload,Se=typeof ut=="function"?ut.call(Jn,Re,Se):ut,Se==null)break e;Re=m({},Re,Se);break e;case 2:oc=!0}}Se=K.callback,Se!==null&&(u.flags|=64,Ce&&(u.flags|=8192),Ce=O.callbacks,Ce===null?O.callbacks=[Se]:Ce.push(Se))}else Ce={lane:Se,tag:K.tag,payload:K.payload,callback:K.callback,next:null},Ee===null?(we=Ee=Ce,ue=Re):Ee=Ee.next=Ce,q|=Se;if(K=K.next,K===null){if(K=O.shared.pending,K===null)break;Ce=K,K=Ce.next,Ce.next=null,O.lastBaseUpdate=Ce,O.shared.pending=null}}while(!0);Ee===null&&(ue=Re),O.baseState=ue,O.firstBaseUpdate=we,O.lastBaseUpdate=Ee,C===null&&(O.shared.lanes=0),mc|=q,u.lanes=q,u.memoizedState=Re}}function RC(u,f){if(typeof u!="function")throw Error(r(191,u));u.call(f)}function DC(u,f){var p=u.callbacks;if(p!==null)for(u.callbacks=null,u=0;uC?C:8;var q=F.T,K={};F.T=K,g2(u,!1,f,p);try{var ue=O(),we=F.S;if(we!==null&&we(K,ue),ue!==null&&typeof ue=="object"&&typeof ue.then=="function"){var Ee=rZ(ue,v);fm(u,f,Ee,Ii(u))}else fm(u,f,v,Ii(u))}catch(Re){fm(u,f,{then:function(){},status:"rejected",reason:Re},Ii())}finally{Y.p=C,q!==null&&K.types!==null&&(q.types=K.types),F.T=q}}function cZ(){}function m2(u,f,p,v){if(u.tag!==5)throw Error(r(476));var O=h8(u).queue;d8(u,O,f,J,p===null?cZ:function(){return f8(u),p(v)})}function h8(u){var f=u.memoizedState;if(f!==null)return f;f={memoizedState:J,baseState:J,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ol,lastRenderedState:J},next:null};var p={};return f.next={memoizedState:p,baseState:p,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ol,lastRenderedState:p},next:null},u.memoizedState=f,u=u.alternate,u!==null&&(u.memoizedState=f),f}function f8(u){var f=h8(u);f.next===null&&(f=u.alternate.memoizedState),fm(u,f.next.queue,{},Ii())}function p2(){return Ts(_m)}function m8(){return $r().memoizedState}function p8(){return $r().memoizedState}function uZ(u){for(var f=u.return;f!==null;){switch(f.tag){case 24:case 3:var p=Ii();u=lc(p);var v=cc(f,u,p);v!==null&&(hi(v,f,p),lm(v,f,p)),f={cache:Qw()},u.payload=f;return}f=f.return}}function dZ(u,f,p){var v=Ii();p={lane:v,revertLane:0,gesture:null,action:p,hasEagerState:!1,eagerState:null,next:null},hx(u)?x8(f,p):(p=Rw(u,f,p,v),p!==null&&(hi(p,u,v),v8(p,f,v)))}function g8(u,f,p){var v=Ii();fm(u,f,p,v)}function fm(u,f,p,v){var O={lane:v,revertLane:0,gesture:null,action:p,hasEagerState:!1,eagerState:null,next:null};if(hx(u))x8(f,O);else{var C=u.alternate;if(u.lanes===0&&(C===null||C.lanes===0)&&(C=f.lastRenderedReducer,C!==null))try{var q=f.lastRenderedState,K=C(q,p);if(O.hasEagerState=!0,O.eagerState=K,Ai(K,q))return Ug(u,f,O,0),rr===null&&Vg(),!1}catch{}finally{}if(p=Rw(u,f,O,v),p!==null)return hi(p,u,v),v8(p,f,v),!0}return!1}function g2(u,f,p,v){if(v={lane:2,revertLane:G2(),gesture:null,action:v,hasEagerState:!1,eagerState:null,next:null},hx(u)){if(f)throw Error(r(479))}else f=Rw(u,p,v,2),f!==null&&hi(f,u,2)}function hx(u){var f=u.alternate;return u===Wt||f!==null&&f===Wt}function x8(u,f){Qd=ix=!0;var p=u.pending;p===null?f.next=f:(f.next=p.next,p.next=f),u.pending=f}function v8(u,f,p){if((p&4194048)!==0){var v=f.lanes;v&=u.pendingLanes,p|=v,f.lanes=p,xs(u,p)}}var mm={readContext:Ts,use:lx,useCallback:Pr,useContext:Pr,useEffect:Pr,useImperativeHandle:Pr,useLayoutEffect:Pr,useInsertionEffect:Pr,useMemo:Pr,useReducer:Pr,useRef:Pr,useState:Pr,useDebugValue:Pr,useDeferredValue:Pr,useTransition:Pr,useSyncExternalStore:Pr,useId:Pr,useHostTransitionStatus:Pr,useFormState:Pr,useActionState:Pr,useOptimistic:Pr,useMemoCache:Pr,useCacheRefresh:Pr};mm.useEffectEvent=Pr;var y8={readContext:Ts,use:lx,useCallback:function(u,f){return Ys().memoizedState=[u,f===void 0?null:f],u},useContext:Ts,useEffect:n8,useImperativeHandle:function(u,f,p){p=p!=null?p.concat([u]):null,ux(4194308,4,a8.bind(null,f,u),p)},useLayoutEffect:function(u,f){return ux(4194308,4,u,f)},useInsertionEffect:function(u,f){ux(4,2,u,f)},useMemo:function(u,f){var p=Ys();f=f===void 0?null:f;var v=u();if(Tu){tn(!0);try{u()}finally{tn(!1)}}return p.memoizedState=[v,f],v},useReducer:function(u,f,p){var v=Ys();if(p!==void 0){var O=p(f);if(Tu){tn(!0);try{p(f)}finally{tn(!1)}}}else O=f;return v.memoizedState=v.baseState=O,u={pending:null,lanes:0,dispatch:null,lastRenderedReducer:u,lastRenderedState:O},v.queue=u,u=u.dispatch=dZ.bind(null,Wt,u),[v.memoizedState,u]},useRef:function(u){var f=Ys();return u={current:u},f.memoizedState=u},useState:function(u){u=c2(u);var f=u.queue,p=g8.bind(null,Wt,f);return f.dispatch=p,[u.memoizedState,p]},useDebugValue:h2,useDeferredValue:function(u,f){var p=Ys();return f2(p,u,f)},useTransition:function(){var u=c2(!1);return u=d8.bind(null,Wt,u.queue,!0,!1),Ys().memoizedState=u,[!1,u]},useSyncExternalStore:function(u,f,p){var v=Wt,O=Ys();if(yn){if(p===void 0)throw Error(r(407));p=p()}else{if(p=f(),rr===null)throw Error(r(349));(hn&127)!==0||FC(v,f,p)}O.memoizedState=p;var C={value:p,getSnapshot:f};return O.queue=C,n8($C.bind(null,v,C,u),[u]),v.flags|=2048,Ud(9,{destroy:void 0},qC.bind(null,v,C,p,f),null),p},useId:function(){var u=Ys(),f=rr.identifierPrefix;if(yn){var p=oo,v=ao;p=(v&~(1<<32-Rt(v)-1)).toString(32)+p,f="_"+f+"R_"+p,p=ax++,0<\/script>",C=C.removeChild(C.firstChild);break;case"select":C=typeof v.is=="string"?q.createElement("select",{is:v.is}):q.createElement("select"),v.multiple?C.multiple=!0:v.size&&(C.size=v.size);break;default:C=typeof v.is=="string"?q.createElement(O,{is:v.is}):q.createElement(O)}}C[Cr]=f,C[Tr]=v;e:for(q=f.child;q!==null;){if(q.tag===5||q.tag===6)C.appendChild(q.stateNode);else if(q.tag!==4&&q.tag!==27&&q.child!==null){q.child.return=q,q=q.child;continue}if(q===f)break e;for(;q.sibling===null;){if(q.return===null||q.return===f)break e;q=q.return}q.sibling.return=q.return,q=q.sibling}f.stateNode=C;e:switch(_s(C,O,v),O){case"button":case"input":case"select":case"textarea":v=!!v.autoFocus;break e;case"img":v=!0;break e;default:v=!1}v&&cl(f)}}return mr(f),_2(f,f.type,u===null?null:u.memoizedProps,f.pendingProps,p),null;case 6:if(u&&f.stateNode!=null)u.memoizedProps!==v&&cl(f);else{if(typeof v!="string"&&f.stateNode===null)throw Error(r(166));if(u=ne.current,Id(f)){if(u=f.stateNode,p=f.memoizedProps,v=null,O=Cs,O!==null)switch(O.tag){case 27:case 5:v=O.memoizedProps}u[Cr]=f,u=!!(u.nodeValue===p||v!==null&&v.suppressHydrationWarning===!0||LT(u.nodeValue,p)),u||ic(f,!0)}else u=Mx(u).createTextNode(v),u[Cr]=f,f.stateNode=u}return mr(f),null;case 31:if(p=f.memoizedState,u===null||u.memoizedState!==null){if(v=Id(f),p!==null){if(u===null){if(!v)throw Error(r(318));if(u=f.memoizedState,u=u!==null?u.dehydrated:null,!u)throw Error(r(557));u[Cr]=f}else wu(),(f.flags&128)===0&&(f.memoizedState=null),f.flags|=4;mr(f),u=!1}else p=Fw(),u!==null&&u.memoizedState!==null&&(u.memoizedState.hydrationErrors=p),u=!0;if(!u)return f.flags&256?(Di(f),f):(Di(f),null);if((f.flags&128)!==0)throw Error(r(558))}return mr(f),null;case 13:if(v=f.memoizedState,u===null||u.memoizedState!==null&&u.memoizedState.dehydrated!==null){if(O=Id(f),v!==null&&v.dehydrated!==null){if(u===null){if(!O)throw Error(r(318));if(O=f.memoizedState,O=O!==null?O.dehydrated:null,!O)throw Error(r(317));O[Cr]=f}else wu(),(f.flags&128)===0&&(f.memoizedState=null),f.flags|=4;mr(f),O=!1}else O=Fw(),u!==null&&u.memoizedState!==null&&(u.memoizedState.hydrationErrors=O),O=!0;if(!O)return f.flags&256?(Di(f),f):(Di(f),null)}return Di(f),(f.flags&128)!==0?(f.lanes=p,f):(p=v!==null,u=u!==null&&u.memoizedState!==null,p&&(v=f.child,O=null,v.alternate!==null&&v.alternate.memoizedState!==null&&v.alternate.memoizedState.cachePool!==null&&(O=v.alternate.memoizedState.cachePool.pool),C=null,v.memoizedState!==null&&v.memoizedState.cachePool!==null&&(C=v.memoizedState.cachePool.pool),C!==O&&(v.flags|=2048)),p!==u&&p&&(f.child.flags|=8192),xx(f,f.updateQueue),mr(f),null);case 4:return re(),u===null&&Z2(f.stateNode.containerInfo),mr(f),null;case 10:return il(f.type),mr(f),null;case 19:if(G(qr),v=f.memoizedState,v===null)return mr(f),null;if(O=(f.flags&128)!==0,C=v.rendering,C===null)if(O)gm(v,!1);else{if(zr!==0||u!==null&&(u.flags&128)!==0)for(u=f.child;u!==null;){if(C=sx(u),C!==null){for(f.flags|=128,gm(v,!1),u=C.updateQueue,f.updateQueue=u,xx(f,u),f.subtreeFlags=0,u=p,p=f.child;p!==null;)gC(p,u),p=p.sibling;return I(qr,qr.current&1|2),yn&&rl(f,v.treeForkCount),f.child}u=u.sibling}v.tail!==null&&_t()>Sx&&(f.flags|=128,O=!0,gm(v,!1),f.lanes=4194304)}else{if(!O)if(u=sx(C),u!==null){if(f.flags|=128,O=!0,u=u.updateQueue,f.updateQueue=u,xx(f,u),gm(v,!0),v.tail===null&&v.tailMode==="hidden"&&!C.alternate&&!yn)return mr(f),null}else 2*_t()-v.renderingStartTime>Sx&&p!==536870912&&(f.flags|=128,O=!0,gm(v,!1),f.lanes=4194304);v.isBackwards?(C.sibling=f.child,f.child=C):(u=v.last,u!==null?u.sibling=C:f.child=C,v.last=C)}return v.tail!==null?(u=v.tail,v.rendering=u,v.tail=u.sibling,v.renderingStartTime=_t(),u.sibling=null,p=qr.current,I(qr,O?p&1|2:p&1),yn&&rl(f,v.treeForkCount),u):(mr(f),null);case 22:case 23:return Di(f),Jw(),v=f.memoizedState!==null,u!==null?u.memoizedState!==null!==v&&(f.flags|=8192):v&&(f.flags|=8192),v?(p&536870912)!==0&&(f.flags&128)===0&&(mr(f),f.subtreeFlags&6&&(f.flags|=8192)):mr(f),p=f.updateQueue,p!==null&&xx(f,p.retryQueue),p=null,u!==null&&u.memoizedState!==null&&u.memoizedState.cachePool!==null&&(p=u.memoizedState.cachePool.pool),v=null,f.memoizedState!==null&&f.memoizedState.cachePool!==null&&(v=f.memoizedState.cachePool.pool),v!==p&&(f.flags|=2048),u!==null&&G(Ou),null;case 24:return p=null,u!==null&&(p=u.memoizedState.cache),f.memoizedState.cache!==p&&(f.flags|=2048),il(Xr),mr(f),null;case 25:return null;case 30:return null}throw Error(r(156,f.tag))}function gZ(u,f){switch(Lw(f),f.tag){case 1:return u=f.flags,u&65536?(f.flags=u&-65537|128,f):null;case 3:return il(Xr),re(),u=f.flags,(u&65536)!==0&&(u&128)===0?(f.flags=u&-65537|128,f):null;case 26:case 27:case 5:return Te(f),null;case 31:if(f.memoizedState!==null){if(Di(f),f.alternate===null)throw Error(r(340));wu()}return u=f.flags,u&65536?(f.flags=u&-65537|128,f):null;case 13:if(Di(f),u=f.memoizedState,u!==null&&u.dehydrated!==null){if(f.alternate===null)throw Error(r(340));wu()}return u=f.flags,u&65536?(f.flags=u&-65537|128,f):null;case 19:return G(qr),null;case 4:return re(),null;case 10:return il(f.type),null;case 22:case 23:return Di(f),Jw(),u!==null&&G(Ou),u=f.flags,u&65536?(f.flags=u&-65537|128,f):null;case 24:return il(Xr),null;case 25:return null;default:return null}}function H8(u,f){switch(Lw(f),f.tag){case 3:il(Xr),re();break;case 26:case 27:case 5:Te(f);break;case 4:re();break;case 31:f.memoizedState!==null&&Di(f);break;case 13:Di(f);break;case 19:G(qr);break;case 10:il(f.type);break;case 22:case 23:Di(f),Jw(),u!==null&&G(Ou);break;case 24:il(Xr)}}function xm(u,f){try{var p=f.updateQueue,v=p!==null?p.lastEffect:null;if(v!==null){var O=v.next;p=O;do{if((p.tag&u)===u){v=void 0;var C=p.create,q=p.inst;v=C(),q.destroy=v}p=p.next}while(p!==O)}}catch(K){Un(f,f.return,K)}}function hc(u,f,p){try{var v=f.updateQueue,O=v!==null?v.lastEffect:null;if(O!==null){var C=O.next;v=C;do{if((v.tag&u)===u){var q=v.inst,K=q.destroy;if(K!==void 0){q.destroy=void 0,O=f;var ue=p,we=K;try{we()}catch(Ee){Un(O,ue,Ee)}}}v=v.next}while(v!==C)}}catch(Ee){Un(f,f.return,Ee)}}function Q8(u){var f=u.updateQueue;if(f!==null){var p=u.stateNode;try{DC(f,p)}catch(v){Un(u,u.return,v)}}}function V8(u,f,p){p.props=Eu(u.type,u.memoizedProps),p.state=u.memoizedState;try{p.componentWillUnmount()}catch(v){Un(u,f,v)}}function vm(u,f){try{var p=u.ref;if(p!==null){switch(u.tag){case 26:case 27:case 5:var v=u.stateNode;break;case 30:v=u.stateNode;break;default:v=u.stateNode}typeof p=="function"?u.refCleanup=p(v):p.current=v}}catch(O){Un(u,f,O)}}function lo(u,f){var p=u.ref,v=u.refCleanup;if(p!==null)if(typeof v=="function")try{v()}catch(O){Un(u,f,O)}finally{u.refCleanup=null,u=u.alternate,u!=null&&(u.refCleanup=null)}else if(typeof p=="function")try{p(null)}catch(O){Un(u,f,O)}else p.current=null}function U8(u){var f=u.type,p=u.memoizedProps,v=u.stateNode;try{e:switch(f){case"button":case"input":case"select":case"textarea":p.autoFocus&&v.focus();break e;case"img":p.src?v.src=p.src:p.srcSet&&(v.srcset=p.srcSet)}}catch(O){Un(u,u.return,O)}}function A2(u,f,p){try{var v=u.stateNode;LZ(v,u.type,p,f),v[Tr]=f}catch(O){Un(u,u.return,O)}}function W8(u){return u.tag===5||u.tag===3||u.tag===26||u.tag===27&&yc(u.type)||u.tag===4}function M2(u){e:for(;;){for(;u.sibling===null;){if(u.return===null||W8(u.return))return null;u=u.return}for(u.sibling.return=u.return,u=u.sibling;u.tag!==5&&u.tag!==6&&u.tag!==18;){if(u.tag===27&&yc(u.type)||u.flags&2||u.child===null||u.tag===4)continue e;u.child.return=u,u=u.child}if(!(u.flags&2))return u.stateNode}}function R2(u,f,p){var v=u.tag;if(v===5||v===6)u=u.stateNode,f?(p.nodeType===9?p.body:p.nodeName==="HTML"?p.ownerDocument.body:p).insertBefore(u,f):(f=p.nodeType===9?p.body:p.nodeName==="HTML"?p.ownerDocument.body:p,f.appendChild(u),p=p._reactRootContainer,p!=null||f.onclick!==null||(f.onclick=el));else if(v!==4&&(v===27&&yc(u.type)&&(p=u.stateNode,f=null),u=u.child,u!==null))for(R2(u,f,p),u=u.sibling;u!==null;)R2(u,f,p),u=u.sibling}function vx(u,f,p){var v=u.tag;if(v===5||v===6)u=u.stateNode,f?p.insertBefore(u,f):p.appendChild(u);else if(v!==4&&(v===27&&yc(u.type)&&(p=u.stateNode),u=u.child,u!==null))for(vx(u,f,p),u=u.sibling;u!==null;)vx(u,f,p),u=u.sibling}function G8(u){var f=u.stateNode,p=u.memoizedProps;try{for(var v=u.type,O=f.attributes;O.length;)f.removeAttributeNode(O[0]);_s(f,v,p),f[Cr]=u,f[Tr]=p}catch(C){Un(u,u.return,C)}}var ul=!1,Zr=!1,D2=!1,X8=typeof WeakSet=="function"?WeakSet:Set,vs=null;function xZ(u,f){if(u=u.containerInfo,t4=Bx,u=oC(u),Cw(u)){if("selectionStart"in u)var p={start:u.selectionStart,end:u.selectionEnd};else e:{p=(p=u.ownerDocument)&&p.defaultView||window;var v=p.getSelection&&p.getSelection();if(v&&v.rangeCount!==0){p=v.anchorNode;var O=v.anchorOffset,C=v.focusNode;v=v.focusOffset;try{p.nodeType,C.nodeType}catch{p=null;break e}var q=0,K=-1,ue=-1,we=0,Ee=0,Re=u,Se=null;t:for(;;){for(var Ce;Re!==p||O!==0&&Re.nodeType!==3||(K=q+O),Re!==C||v!==0&&Re.nodeType!==3||(ue=q+v),Re.nodeType===3&&(q+=Re.nodeValue.length),(Ce=Re.firstChild)!==null;)Se=Re,Re=Ce;for(;;){if(Re===u)break t;if(Se===p&&++we===O&&(K=q),Se===C&&++Ee===v&&(ue=q),(Ce=Re.nextSibling)!==null)break;Re=Se,Se=Re.parentNode}Re=Ce}p=K===-1||ue===-1?null:{start:K,end:ue}}else p=null}p=p||{start:0,end:0}}else p=null;for(n4={focusedElem:u,selectionRange:p},Bx=!1,vs=f;vs!==null;)if(f=vs,u=f.child,(f.subtreeFlags&1028)!==0&&u!==null)u.return=f,vs=u;else for(;vs!==null;){switch(f=vs,C=f.alternate,u=f.flags,f.tag){case 0:if((u&4)!==0&&(u=f.updateQueue,u=u!==null?u.events:null,u!==null))for(p=0;p title"))),_s(C,v,p),C[Cr]=u,Gr(C),v=C;break e;case"link":var q=t9("link","href",O).get(v+(p.href||""));if(q){for(var K=0;KJn&&(q=Jn,Jn=At,At=q);var pe=iC(K,At),fe=iC(K,Jn);if(pe&&fe&&(Ce.rangeCount!==1||Ce.anchorNode!==pe.node||Ce.anchorOffset!==pe.offset||Ce.focusNode!==fe.node||Ce.focusOffset!==fe.offset)){var ye=Re.createRange();ye.setStart(pe.node,pe.offset),Ce.removeAllRanges(),At>Jn?(Ce.addRange(ye),Ce.extend(fe.node,fe.offset)):(ye.setEnd(fe.node,fe.offset),Ce.addRange(ye))}}}}for(Re=[],Ce=K;Ce=Ce.parentNode;)Ce.nodeType===1&&Re.push({element:Ce,left:Ce.scrollLeft,top:Ce.scrollTop});for(typeof K.focus=="function"&&K.focus(),K=0;Kp?32:p,F.T=null,p=q2,q2=null;var C=gc,q=pl;if(ls=0,Kd=gc=null,pl=0,(Hn&6)!==0)throw Error(r(331));var K=Hn;if(Hn|=4,aT(C.current),rT(C,C.current,q,p),Hn=K,Om(0,!1),rt&&typeof rt.onPostCommitFiberRoot=="function")try{rt.onPostCommitFiberRoot(Fe,C)}catch{}return!0}finally{Y.p=O,F.T=v,OT(u,f)}}function NT(u,f,p){f=ra(p,f),f=b2(u.stateNode,f,2),u=cc(u,f,2),u!==null&&(cr(u,2),co(u))}function Un(u,f,p){if(u.tag===3)NT(u,u,p);else for(;f!==null;){if(f.tag===3){NT(f,u,p);break}else if(f.tag===1){var v=f.stateNode;if(typeof f.type.getDerivedStateFromError=="function"||typeof v.componentDidCatch=="function"&&(pc===null||!pc.has(v))){u=ra(p,u),p=C8(2),v=cc(f,p,2),v!==null&&(T8(p,v,f,u),cr(v,2),co(v));break}}f=f.return}}function V2(u,f,p){var v=u.pingCache;if(v===null){v=u.pingCache=new bZ;var O=new Set;v.set(f,O)}else O=v.get(f),O===void 0&&(O=new Set,v.set(f,O));O.has(p)||(I2=!0,O.add(p),u=jZ.bind(null,u,f,p),f.then(u,u))}function jZ(u,f,p){var v=u.pingCache;v!==null&&v.delete(f),u.pingedLanes|=u.suspendedLanes&p,u.warmLanes&=~p,rr===u&&(hn&p)===p&&(zr===4||zr===3&&(hn&62914560)===hn&&300>_t()-wx?(Hn&2)===0&&Zd(u,0):L2|=p,Yd===hn&&(Yd=0)),co(u)}function CT(u,f){f===0&&(f=vr()),u=yu(u,f),u!==null&&(cr(u,f),co(u))}function NZ(u){var f=u.memoizedState,p=0;f!==null&&(p=f.retryLane),CT(u,p)}function CZ(u,f){var p=0;switch(u.tag){case 31:case 13:var v=u.stateNode,O=u.memoizedState;O!==null&&(p=O.retryLane);break;case 19:v=u.stateNode;break;case 22:v=u.stateNode._retryCache;break;default:throw Error(r(314))}v!==null&&v.delete(f),CT(u,p)}function TZ(u,f){return xt(u,f)}var Tx=null,eh=null,U2=!1,Ex=!1,W2=!1,vc=0;function co(u){u!==eh&&u.next===null&&(eh===null?Tx=eh=u:eh=eh.next=u),Ex=!0,U2||(U2=!0,_Z())}function Om(u,f){if(!W2&&Ex){W2=!0;do for(var p=!1,v=Tx;v!==null;){if(u!==0){var O=v.pendingLanes;if(O===0)var C=0;else{var q=v.suspendedLanes,K=v.pingedLanes;C=(1<<31-Rt(42|u)+1)-1,C&=O&~(q&~K),C=C&201326741?C&201326741|1:C?C|2:0}C!==0&&(p=!0,AT(v,C))}else C=hn,C=xr(v,v===rr?C:0,v.cancelPendingCommit!==null||v.timeoutHandle!==-1),(C&3)===0||Ur(v,C)||(p=!0,AT(v,C));v=v.next}while(p);W2=!1}}function EZ(){TT()}function TT(){Ex=U2=!1;var u=0;vc!==0&&FZ()&&(u=vc);for(var f=_t(),p=null,v=Tx;v!==null;){var O=v.next,C=ET(v,f);C===0?(v.next=null,p===null?Tx=O:p.next=O,O===null&&(eh=p)):(p=v,(u!==0||(C&3)!==0)&&(Ex=!0)),v=O}ls!==0&&ls!==5||Om(u),vc!==0&&(vc=0)}function ET(u,f){for(var p=u.suspendedLanes,v=u.pingedLanes,O=u.expirationTimes,C=u.pendingLanes&-62914561;0K)break;var Ee=ue.transferSize,Re=ue.initiatorType;Ee&&BT(Re)&&(ue=ue.responseEnd,q+=Ee*(ue"u"?null:document;function KT(u,f,p){var v=th;if(v&&typeof f=="string"&&f){var O=ta(f);O='link[rel="'+u+'"][href="'+O+'"]',typeof p=="string"&&(O+='[crossorigin="'+p+'"]'),YT.has(O)||(YT.add(O),u={rel:u,crossOrigin:p,href:f},v.querySelector(O)===null&&(f=v.createElement("link"),_s(f,"link",u),Gr(f),v.head.appendChild(f)))}}function XZ(u){gl.D(u),KT("dns-prefetch",u,null)}function YZ(u,f){gl.C(u,f),KT("preconnect",u,f)}function KZ(u,f,p){gl.L(u,f,p);var v=th;if(v&&u&&f){var O='link[rel="preload"][as="'+ta(f)+'"]';f==="image"&&p&&p.imageSrcSet?(O+='[imagesrcset="'+ta(p.imageSrcSet)+'"]',typeof p.imageSizes=="string"&&(O+='[imagesizes="'+ta(p.imageSizes)+'"]')):O+='[href="'+ta(u)+'"]';var C=O;switch(f){case"style":C=nh(u);break;case"script":C=rh(u)}ca.has(C)||(u=m({rel:"preload",href:f==="image"&&p&&p.imageSrcSet?void 0:u,as:f},p),ca.set(C,u),v.querySelector(O)!==null||f==="style"&&v.querySelector(Tm(C))||f==="script"&&v.querySelector(Em(C))||(f=v.createElement("link"),_s(f,"link",u),Gr(f),v.head.appendChild(f)))}}function ZZ(u,f){gl.m(u,f);var p=th;if(p&&u){var v=f&&typeof f.as=="string"?f.as:"script",O='link[rel="modulepreload"][as="'+ta(v)+'"][href="'+ta(u)+'"]',C=O;switch(v){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":C=rh(u)}if(!ca.has(C)&&(u=m({rel:"modulepreload",href:u},f),ca.set(C,u),p.querySelector(O)===null)){switch(v){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(p.querySelector(Em(C)))return}v=p.createElement("link"),_s(v,"link",u),Gr(v),p.head.appendChild(v)}}}function JZ(u,f,p){gl.S(u,f,p);var v=th;if(v&&u){var O=tc(v).hoistableStyles,C=nh(u);f=f||"default";var q=O.get(C);if(!q){var K={loading:0,preload:null};if(q=v.querySelector(Tm(C)))K.loading=5;else{u=m({rel:"stylesheet",href:u,"data-precedence":f},p),(p=ca.get(C))&&c4(u,p);var ue=q=v.createElement("link");Gr(ue),_s(ue,"link",u),ue._p=new Promise(function(we,Ee){ue.onload=we,ue.onerror=Ee}),ue.addEventListener("load",function(){K.loading|=1}),ue.addEventListener("error",function(){K.loading|=2}),K.loading|=4,Dx(q,f,v)}q={type:"stylesheet",instance:q,count:1,state:K},O.set(C,q)}}}function eJ(u,f){gl.X(u,f);var p=th;if(p&&u){var v=tc(p).hoistableScripts,O=rh(u),C=v.get(O);C||(C=p.querySelector(Em(O)),C||(u=m({src:u,async:!0},f),(f=ca.get(O))&&u4(u,f),C=p.createElement("script"),Gr(C),_s(C,"link",u),p.head.appendChild(C)),C={type:"script",instance:C,count:1,state:null},v.set(O,C))}}function tJ(u,f){gl.M(u,f);var p=th;if(p&&u){var v=tc(p).hoistableScripts,O=rh(u),C=v.get(O);C||(C=p.querySelector(Em(O)),C||(u=m({src:u,async:!0,type:"module"},f),(f=ca.get(O))&&u4(u,f),C=p.createElement("script"),Gr(C),_s(C,"link",u),p.head.appendChild(C)),C={type:"script",instance:C,count:1,state:null},v.set(O,C))}}function ZT(u,f,p,v){var O=(O=ne.current)?Rx(O):null;if(!O)throw Error(r(446));switch(u){case"meta":case"title":return null;case"style":return typeof p.precedence=="string"&&typeof p.href=="string"?(f=nh(p.href),p=tc(O).hoistableStyles,v=p.get(f),v||(v={type:"style",instance:null,count:0,state:null},p.set(f,v)),v):{type:"void",instance:null,count:0,state:null};case"link":if(p.rel==="stylesheet"&&typeof p.href=="string"&&typeof p.precedence=="string"){u=nh(p.href);var C=tc(O).hoistableStyles,q=C.get(u);if(q||(O=O.ownerDocument||O,q={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},C.set(u,q),(C=O.querySelector(Tm(u)))&&!C._p&&(q.instance=C,q.state.loading=5),ca.has(u)||(p={rel:"preload",as:"style",href:p.href,crossOrigin:p.crossOrigin,integrity:p.integrity,media:p.media,hrefLang:p.hrefLang,referrerPolicy:p.referrerPolicy},ca.set(u,p),C||nJ(O,u,p,q.state))),f&&v===null)throw Error(r(528,""));return q}if(f&&v!==null)throw Error(r(529,""));return null;case"script":return f=p.async,p=p.src,typeof p=="string"&&f&&typeof f!="function"&&typeof f!="symbol"?(f=rh(p),p=tc(O).hoistableScripts,v=p.get(f),v||(v={type:"script",instance:null,count:0,state:null},p.set(f,v)),v):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,u))}}function nh(u){return'href="'+ta(u)+'"'}function Tm(u){return'link[rel="stylesheet"]['+u+"]"}function JT(u){return m({},u,{"data-precedence":u.precedence,precedence:null})}function nJ(u,f,p,v){u.querySelector('link[rel="preload"][as="style"]['+f+"]")?v.loading=1:(f=u.createElement("link"),v.preload=f,f.addEventListener("load",function(){return v.loading|=1}),f.addEventListener("error",function(){return v.loading|=2}),_s(f,"link",p),Gr(f),u.head.appendChild(f))}function rh(u){return'[src="'+ta(u)+'"]'}function Em(u){return"script[async]"+u}function e9(u,f,p){if(f.count++,f.instance===null)switch(f.type){case"style":var v=u.querySelector('style[data-href~="'+ta(p.href)+'"]');if(v)return f.instance=v,Gr(v),v;var O=m({},p,{"data-href":p.href,"data-precedence":p.precedence,href:null,precedence:null});return v=(u.ownerDocument||u).createElement("style"),Gr(v),_s(v,"style",O),Dx(v,p.precedence,u),f.instance=v;case"stylesheet":O=nh(p.href);var C=u.querySelector(Tm(O));if(C)return f.state.loading|=4,f.instance=C,Gr(C),C;v=JT(p),(O=ca.get(O))&&c4(v,O),C=(u.ownerDocument||u).createElement("link"),Gr(C);var q=C;return q._p=new Promise(function(K,ue){q.onload=K,q.onerror=ue}),_s(C,"link",v),f.state.loading|=4,Dx(C,p.precedence,u),f.instance=C;case"script":return C=rh(p.src),(O=u.querySelector(Em(C)))?(f.instance=O,Gr(O),O):(v=p,(O=ca.get(C))&&(v=m({},p),u4(v,O)),u=u.ownerDocument||u,O=u.createElement("script"),Gr(O),_s(O,"link",v),u.head.appendChild(O),f.instance=O);case"void":return null;default:throw Error(r(443,f.type))}else f.type==="stylesheet"&&(f.state.loading&4)===0&&(v=f.instance,f.state.loading|=4,Dx(v,p.precedence,u));return f.instance}function Dx(u,f,p){for(var v=p.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),O=v.length?v[v.length-1]:null,C=O,q=0;q title"):null)}function rJ(u,f,p){if(p===1||f.itemProp!=null)return!1;switch(u){case"meta":case"title":return!0;case"style":if(typeof f.precedence!="string"||typeof f.href!="string"||f.href==="")break;return!0;case"link":if(typeof f.rel!="string"||typeof f.href!="string"||f.href===""||f.onLoad||f.onError)break;switch(f.rel){case"stylesheet":return u=f.disabled,typeof f.precedence=="string"&&u==null;default:return!0}case"script":if(f.async&&typeof f.async!="function"&&typeof f.async!="symbol"&&!f.onLoad&&!f.onError&&f.src&&typeof f.src=="string")return!0}return!1}function r9(u){return!(u.type==="stylesheet"&&(u.state.loading&3)===0)}function sJ(u,f,p,v){if(p.type==="stylesheet"&&(typeof v.media!="string"||matchMedia(v.media).matches!==!1)&&(p.state.loading&4)===0){if(p.instance===null){var O=nh(v.href),C=f.querySelector(Tm(O));if(C){f=C._p,f!==null&&typeof f=="object"&&typeof f.then=="function"&&(u.count++,u=zx.bind(u),f.then(u,u)),p.state.loading|=4,p.instance=C,Gr(C);return}C=f.ownerDocument||f,v=JT(v),(O=ca.get(O))&&c4(v,O),C=C.createElement("link"),Gr(C);var q=C;q._p=new Promise(function(K,ue){q.onload=K,q.onerror=ue}),_s(C,"link",v),p.instance=C}u.stylesheets===null&&(u.stylesheets=new Map),u.stylesheets.set(p,f),(f=p.state.preload)&&(p.state.loading&3)===0&&(u.count++,p=zx.bind(u),f.addEventListener("load",p),f.addEventListener("error",p))}}var d4=0;function iJ(u,f){return u.stylesheets&&u.count===0&&Lx(u,u.stylesheets),0d4?50:800)+f);return u.unsuspend=p,function(){u.unsuspend=null,clearTimeout(v),clearTimeout(O)}}:null}function zx(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Lx(this,this.stylesheets);else if(this.unsuspend){var u=this.unsuspend;this.unsuspend=null,u()}}}var Ix=null;function Lx(u,f){u.stylesheets=null,u.unsuspend!==null&&(u.count++,Ix=new Map,f.forEach(aJ,u),Ix=null,zx.call(u))}function aJ(u,f){if(!(f.state.loading&4)){var p=Ix.get(u);if(p)var v=p.get(null);else{p=new Map,Ix.set(u,p);for(var O=u.querySelectorAll("link[data-precedence],style[data-precedence]"),C=0;C"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),b4.exports=xte(),b4.exports}var yte=vte();function NI(t,e){return function(){return t.apply(e,arguments)}}const{toString:bte}=Object.prototype,{getPrototypeOf:Rj}=Object,{iterator:Xy,toStringTag:CI}=Symbol,Yy=(t=>e=>{const n=bte.call(e);return t[n]||(t[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),eo=t=>(t=t.toLowerCase(),e=>Yy(e)===t),Ky=t=>e=>typeof e===t,{isArray:yf}=Array,Xh=Ky("undefined");function Rp(t){return t!==null&&!Xh(t)&&t.constructor!==null&&!Xh(t.constructor)&&wi(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const TI=eo("ArrayBuffer");function wte(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&TI(t.buffer),e}const Ste=Ky("string"),wi=Ky("function"),EI=Ky("number"),Dp=t=>t!==null&&typeof t=="object",kte=t=>t===!0||t===!1,ev=t=>{if(Yy(t)!=="object")return!1;const e=Rj(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(CI in t)&&!(Xy in t)},Ote=t=>{if(!Dp(t)||Rp(t))return!1;try{return Object.keys(t).length===0&&Object.getPrototypeOf(t)===Object.prototype}catch{return!1}},jte=eo("Date"),Nte=eo("File"),Cte=eo("Blob"),Tte=eo("FileList"),Ete=t=>Dp(t)&&wi(t.pipe),_te=t=>{let e;return t&&(typeof FormData=="function"&&t instanceof FormData||wi(t.append)&&((e=Yy(t))==="formdata"||e==="object"&&wi(t.toString)&&t.toString()==="[object FormData]"))},Ate=eo("URLSearchParams"),[Mte,Rte,Dte,Pte]=["ReadableStream","Request","Response","Headers"].map(eo),zte=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Pp(t,e,{allOwnKeys:n=!1}={}){if(t===null||typeof t>"u")return;let r,s;if(typeof t!="object"&&(t=[t]),yf(t))for(r=0,s=t.length;r0;)if(s=n[r],e===s.toLowerCase())return s;return null}const $u=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,AI=t=>!Xh(t)&&t!==$u;function ak(){const{caseless:t,skipUndefined:e}=AI(this)&&this||{},n={},r=(s,i)=>{const a=t&&_I(n,i)||i;ev(n[a])&&ev(s)?n[a]=ak(n[a],s):ev(s)?n[a]=ak({},s):yf(s)?n[a]=s.slice():(!e||!Xh(s))&&(n[a]=s)};for(let s=0,i=arguments.length;s(Pp(e,(s,i)=>{n&&wi(s)?t[i]=NI(s,n):t[i]=s},{allOwnKeys:r}),t),Lte=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),Bte=(t,e,n,r)=>{t.prototype=Object.create(e.prototype,r),t.prototype.constructor=t,Object.defineProperty(t,"super",{value:e.prototype}),n&&Object.assign(t.prototype,n)},Fte=(t,e,n,r)=>{let s,i,a;const l={};if(e=e||{},t==null)return e;do{for(s=Object.getOwnPropertyNames(t),i=s.length;i-- >0;)a=s[i],(!r||r(a,t,e))&&!l[a]&&(e[a]=t[a],l[a]=!0);t=n!==!1&&Rj(t)}while(t&&(!n||n(t,e))&&t!==Object.prototype);return e},qte=(t,e,n)=>{t=String(t),(n===void 0||n>t.length)&&(n=t.length),n-=e.length;const r=t.indexOf(e,n);return r!==-1&&r===n},$te=t=>{if(!t)return null;if(yf(t))return t;let e=t.length;if(!EI(e))return null;const n=new Array(e);for(;e-- >0;)n[e]=t[e];return n},Hte=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&Rj(Uint8Array)),Qte=(t,e)=>{const r=(t&&t[Xy]).call(t);let s;for(;(s=r.next())&&!s.done;){const i=s.value;e.call(t,i[0],i[1])}},Vte=(t,e)=>{let n;const r=[];for(;(n=t.exec(e))!==null;)r.push(n);return r},Ute=eo("HTMLFormElement"),Wte=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),E9=(({hasOwnProperty:t})=>(e,n)=>t.call(e,n))(Object.prototype),Gte=eo("RegExp"),MI=(t,e)=>{const n=Object.getOwnPropertyDescriptors(t),r={};Pp(n,(s,i)=>{let a;(a=e(s,i,t))!==!1&&(r[i]=a||s)}),Object.defineProperties(t,r)},Xte=t=>{MI(t,(e,n)=>{if(wi(t)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=t[n];if(wi(r)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},Yte=(t,e)=>{const n={},r=s=>{s.forEach(i=>{n[i]=!0})};return yf(t)?r(t):r(String(t).split(e)),n},Kte=()=>{},Zte=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e;function Jte(t){return!!(t&&wi(t.append)&&t[CI]==="FormData"&&t[Xy])}const ene=t=>{const e=new Array(10),n=(r,s)=>{if(Dp(r)){if(e.indexOf(r)>=0)return;if(Rp(r))return r;if(!("toJSON"in r)){e[s]=r;const i=yf(r)?[]:{};return Pp(r,(a,l)=>{const c=n(a,s+1);!Xh(c)&&(i[l]=c)}),e[s]=void 0,i}}return r};return n(t,0)},tne=eo("AsyncFunction"),nne=t=>t&&(Dp(t)||wi(t))&&wi(t.then)&&wi(t.catch),RI=((t,e)=>t?setImmediate:e?((n,r)=>($u.addEventListener("message",({source:s,data:i})=>{s===$u&&i===n&&r.length&&r.shift()()},!1),s=>{r.push(s),$u.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",wi($u.postMessage)),rne=typeof queueMicrotask<"u"?queueMicrotask.bind($u):typeof process<"u"&&process.nextTick||RI,sne=t=>t!=null&&wi(t[Xy]),je={isArray:yf,isArrayBuffer:TI,isBuffer:Rp,isFormData:_te,isArrayBufferView:wte,isString:Ste,isNumber:EI,isBoolean:kte,isObject:Dp,isPlainObject:ev,isEmptyObject:Ote,isReadableStream:Mte,isRequest:Rte,isResponse:Dte,isHeaders:Pte,isUndefined:Xh,isDate:jte,isFile:Nte,isBlob:Cte,isRegExp:Gte,isFunction:wi,isStream:Ete,isURLSearchParams:Ate,isTypedArray:Hte,isFileList:Tte,forEach:Pp,merge:ak,extend:Ite,trim:zte,stripBOM:Lte,inherits:Bte,toFlatObject:Fte,kindOf:Yy,kindOfTest:eo,endsWith:qte,toArray:$te,forEachEntry:Qte,matchAll:Vte,isHTMLForm:Ute,hasOwnProperty:E9,hasOwnProp:E9,reduceDescriptors:MI,freezeMethods:Xte,toObjectSet:Yte,toCamelCase:Wte,noop:Kte,toFiniteNumber:Zte,findKey:_I,global:$u,isContextDefined:AI,isSpecCompliantForm:Jte,toJSONObject:ene,isAsyncFn:tne,isThenable:nne,setImmediate:RI,asap:rne,isIterable:sne};function Xt(t,e,n,r,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=t,this.name="AxiosError",e&&(this.code=e),n&&(this.config=n),r&&(this.request=r),s&&(this.response=s,this.status=s.status?s.status:null)}je.inherits(Xt,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:je.toJSONObject(this.config),code:this.code,status:this.status}}});const DI=Xt.prototype,PI={};["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(t=>{PI[t]={value:t}});Object.defineProperties(Xt,PI);Object.defineProperty(DI,"isAxiosError",{value:!0});Xt.from=(t,e,n,r,s,i)=>{const a=Object.create(DI);je.toFlatObject(t,a,function(h){return h!==Error.prototype},d=>d!=="isAxiosError");const l=t&&t.message?t.message:"Error",c=e==null&&t?t.code:e;return Xt.call(a,l,c,n,r,s),t&&a.cause==null&&Object.defineProperty(a,"cause",{value:t,configurable:!0}),a.name=t&&t.name||"Error",i&&Object.assign(a,i),a};const ine=null;function ok(t){return je.isPlainObject(t)||je.isArray(t)}function zI(t){return je.endsWith(t,"[]")?t.slice(0,-2):t}function _9(t,e,n){return t?t.concat(e).map(function(s,i){return s=zI(s),!n&&i?"["+s+"]":s}).join(n?".":""):e}function ane(t){return je.isArray(t)&&!t.some(ok)}const one=je.toFlatObject(je,{},null,function(e){return/^is[A-Z]/.test(e)});function Zy(t,e,n){if(!je.isObject(t))throw new TypeError("target must be an object");e=e||new FormData,n=je.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(w,S){return!je.isUndefined(S[w])});const r=n.metaTokens,s=n.visitor||h,i=n.dots,a=n.indexes,c=(n.Blob||typeof Blob<"u"&&Blob)&&je.isSpecCompliantForm(e);if(!je.isFunction(s))throw new TypeError("visitor must be a function");function d(y){if(y===null)return"";if(je.isDate(y))return y.toISOString();if(je.isBoolean(y))return y.toString();if(!c&&je.isBlob(y))throw new Xt("Blob is not supported. Use a Buffer instead.");return je.isArrayBuffer(y)||je.isTypedArray(y)?c&&typeof Blob=="function"?new Blob([y]):Buffer.from(y):y}function h(y,w,S){let k=y;if(y&&!S&&typeof y=="object"){if(je.endsWith(w,"{}"))w=r?w:w.slice(0,-2),y=JSON.stringify(y);else if(je.isArray(y)&&ane(y)||(je.isFileList(y)||je.endsWith(w,"[]"))&&(k=je.toArray(y)))return w=zI(w),k.forEach(function(N,T){!(je.isUndefined(N)||N===null)&&e.append(a===!0?_9([w],T,i):a===null?w:w+"[]",d(N))}),!1}return ok(y)?!0:(e.append(_9(S,w,i),d(y)),!1)}const m=[],g=Object.assign(one,{defaultVisitor:h,convertValue:d,isVisitable:ok});function x(y,w){if(!je.isUndefined(y)){if(m.indexOf(y)!==-1)throw Error("Circular reference detected in "+w.join("."));m.push(y),je.forEach(y,function(k,j){(!(je.isUndefined(k)||k===null)&&s.call(e,k,je.isString(j)?j.trim():j,w,g))===!0&&x(k,w?w.concat(j):[j])}),m.pop()}}if(!je.isObject(t))throw new TypeError("data must be an object");return x(t),e}function A9(t){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,function(r){return e[r]})}function Dj(t,e){this._pairs=[],t&&Zy(t,this,e)}const II=Dj.prototype;II.append=function(e,n){this._pairs.push([e,n])};II.toString=function(e){const n=e?function(r){return e.call(this,r,A9)}:A9;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function lne(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function LI(t,e,n){if(!e)return t;const r=n&&n.encode||lne;je.isFunction(n)&&(n={serialize:n});const s=n&&n.serialize;let i;if(s?i=s(e,n):i=je.isURLSearchParams(e)?e.toString():new Dj(e,n).toString(r),i){const a=t.indexOf("#");a!==-1&&(t=t.slice(0,a)),t+=(t.indexOf("?")===-1?"?":"&")+i}return t}class M9{constructor(){this.handlers=[]}use(e,n,r){return this.handlers.push({fulfilled:e,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){je.forEach(this.handlers,function(r){r!==null&&e(r)})}}const BI={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},cne=typeof URLSearchParams<"u"?URLSearchParams:Dj,une=typeof FormData<"u"?FormData:null,dne=typeof Blob<"u"?Blob:null,hne={isBrowser:!0,classes:{URLSearchParams:cne,FormData:une,Blob:dne},protocols:["http","https","file","blob","url","data"]},Pj=typeof window<"u"&&typeof document<"u",lk=typeof navigator=="object"&&navigator||void 0,fne=Pj&&(!lk||["ReactNative","NativeScript","NS"].indexOf(lk.product)<0),mne=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",pne=Pj&&window.location.href||"http://localhost",gne=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:Pj,hasStandardBrowserEnv:fne,hasStandardBrowserWebWorkerEnv:mne,navigator:lk,origin:pne},Symbol.toStringTag,{value:"Module"})),Hs={...gne,...hne};function xne(t,e){return Zy(t,new Hs.classes.URLSearchParams,{visitor:function(n,r,s,i){return Hs.isNode&&je.isBuffer(n)?(this.append(r,n.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)},...e})}function vne(t){return je.matchAll(/\w+|\[(\w*)]/g,t).map(e=>e[0]==="[]"?"":e[1]||e[0])}function yne(t){const e={},n=Object.keys(t);let r;const s=n.length;let i;for(r=0;r=n.length;return a=!a&&je.isArray(s)?s.length:a,c?(je.hasOwnProp(s,a)?s[a]=[s[a],r]:s[a]=r,!l):((!s[a]||!je.isObject(s[a]))&&(s[a]=[]),e(n,r,s[a],i)&&je.isArray(s[a])&&(s[a]=yne(s[a])),!l)}if(je.isFormData(t)&&je.isFunction(t.entries)){const n={};return je.forEachEntry(t,(r,s)=>{e(vne(r),s,n,0)}),n}return null}function bne(t,e,n){if(je.isString(t))try{return(e||JSON.parse)(t),je.trim(t)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(t)}const zp={transitional:BI,adapter:["xhr","http","fetch"],transformRequest:[function(e,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,i=je.isObject(e);if(i&&je.isHTMLForm(e)&&(e=new FormData(e)),je.isFormData(e))return s?JSON.stringify(FI(e)):e;if(je.isArrayBuffer(e)||je.isBuffer(e)||je.isStream(e)||je.isFile(e)||je.isBlob(e)||je.isReadableStream(e))return e;if(je.isArrayBufferView(e))return e.buffer;if(je.isURLSearchParams(e))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let l;if(i){if(r.indexOf("application/x-www-form-urlencoded")>-1)return xne(e,this.formSerializer).toString();if((l=je.isFileList(e))||r.indexOf("multipart/form-data")>-1){const c=this.env&&this.env.FormData;return Zy(l?{"files[]":e}:e,c&&new c,this.formSerializer)}}return i||s?(n.setContentType("application/json",!1),bne(e)):e}],transformResponse:[function(e){const n=this.transitional||zp.transitional,r=n&&n.forcedJSONParsing,s=this.responseType==="json";if(je.isResponse(e)||je.isReadableStream(e))return e;if(e&&je.isString(e)&&(r&&!this.responseType||s)){const a=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(e,this.parseReviver)}catch(l){if(a)throw l.name==="SyntaxError"?Xt.from(l,Xt.ERR_BAD_RESPONSE,this,null,this.response):l}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Hs.classes.FormData,Blob:Hs.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};je.forEach(["delete","get","head","post","put","patch"],t=>{zp.headers[t]={}});const wne=je.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"]),Sne=t=>{const e={};let n,r,s;return t&&t.split(` -`).forEach(function(a){s=a.indexOf(":"),n=a.substring(0,s).trim().toLowerCase(),r=a.substring(s+1).trim(),!(!n||e[n]&&wne[n])&&(n==="set-cookie"?e[n]?e[n].push(r):e[n]=[r]:e[n]=e[n]?e[n]+", "+r:r)}),e},R9=Symbol("internals");function zm(t){return t&&String(t).trim().toLowerCase()}function tv(t){return t===!1||t==null?t:je.isArray(t)?t.map(tv):String(t)}function kne(t){const e=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(t);)e[r[1]]=r[2];return e}const One=t=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function k4(t,e,n,r,s){if(je.isFunction(r))return r.call(this,e,n);if(s&&(e=n),!!je.isString(e)){if(je.isString(r))return e.indexOf(r)!==-1;if(je.isRegExp(r))return r.test(e)}}function jne(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,n,r)=>n.toUpperCase()+r)}function Nne(t,e){const n=je.toCamelCase(" "+e);["get","set","has"].forEach(r=>{Object.defineProperty(t,r+n,{value:function(s,i,a){return this[r].call(this,e,s,i,a)},configurable:!0})})}let Si=class{constructor(e){e&&this.set(e)}set(e,n,r){const s=this;function i(l,c,d){const h=zm(c);if(!h)throw new Error("header name must be a non-empty string");const m=je.findKey(s,h);(!m||s[m]===void 0||d===!0||d===void 0&&s[m]!==!1)&&(s[m||c]=tv(l))}const a=(l,c)=>je.forEach(l,(d,h)=>i(d,h,c));if(je.isPlainObject(e)||e instanceof this.constructor)a(e,n);else if(je.isString(e)&&(e=e.trim())&&!One(e))a(Sne(e),n);else if(je.isObject(e)&&je.isIterable(e)){let l={},c,d;for(const h of e){if(!je.isArray(h))throw TypeError("Object iterator must return a key-value pair");l[d=h[0]]=(c=l[d])?je.isArray(c)?[...c,h[1]]:[c,h[1]]:h[1]}a(l,n)}else e!=null&&i(n,e,r);return this}get(e,n){if(e=zm(e),e){const r=je.findKey(this,e);if(r){const s=this[r];if(!n)return s;if(n===!0)return kne(s);if(je.isFunction(n))return n.call(this,s,r);if(je.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,n){if(e=zm(e),e){const r=je.findKey(this,e);return!!(r&&this[r]!==void 0&&(!n||k4(this,this[r],r,n)))}return!1}delete(e,n){const r=this;let s=!1;function i(a){if(a=zm(a),a){const l=je.findKey(r,a);l&&(!n||k4(r,r[l],l,n))&&(delete r[l],s=!0)}}return je.isArray(e)?e.forEach(i):i(e),s}clear(e){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const i=n[r];(!e||k4(this,this[i],i,e,!0))&&(delete this[i],s=!0)}return s}normalize(e){const n=this,r={};return je.forEach(this,(s,i)=>{const a=je.findKey(r,i);if(a){n[a]=tv(s),delete n[i];return}const l=e?jne(i):String(i).trim();l!==i&&delete n[i],n[l]=tv(s),r[l]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const n=Object.create(null);return je.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=e&&je.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,n])=>e+": "+n).join(` -`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...n){const r=new this(e);return n.forEach(s=>r.set(s)),r}static accessor(e){const r=(this[R9]=this[R9]={accessors:{}}).accessors,s=this.prototype;function i(a){const l=zm(a);r[l]||(Nne(s,a),r[l]=!0)}return je.isArray(e)?e.forEach(i):i(e),this}};Si.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);je.reduceDescriptors(Si.prototype,({value:t},e)=>{let n=e[0].toUpperCase()+e.slice(1);return{get:()=>t,set(r){this[n]=r}}});je.freezeMethods(Si);function O4(t,e){const n=this||zp,r=e||n,s=Si.from(r.headers);let i=r.data;return je.forEach(t,function(l){i=l.call(n,i,s.normalize(),e?e.status:void 0)}),s.normalize(),i}function qI(t){return!!(t&&t.__CANCEL__)}function bf(t,e,n){Xt.call(this,t??"canceled",Xt.ERR_CANCELED,e,n),this.name="CanceledError"}je.inherits(bf,Xt,{__CANCEL__:!0});function $I(t,e,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?t(n):e(new Xt("Request failed with status code "+n.status,[Xt.ERR_BAD_REQUEST,Xt.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function Cne(t){const e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return e&&e[1]||""}function Tne(t,e){t=t||10;const n=new Array(t),r=new Array(t);let s=0,i=0,a;return e=e!==void 0?e:1e3,function(c){const d=Date.now(),h=r[i];a||(a=d),n[s]=c,r[s]=d;let m=i,g=0;for(;m!==s;)g+=n[m++],m=m%t;if(s=(s+1)%t,s===i&&(i=(i+1)%t),d-a{n=h,s=null,i&&(clearTimeout(i),i=null),t(...d)};return[(...d)=>{const h=Date.now(),m=h-n;m>=r?a(d,h):(s=d,i||(i=setTimeout(()=>{i=null,a(s)},r-m)))},()=>s&&a(s)]}const zv=(t,e,n=3)=>{let r=0;const s=Tne(50,250);return Ene(i=>{const a=i.loaded,l=i.lengthComputable?i.total:void 0,c=a-r,d=s(c),h=a<=l;r=a;const m={loaded:a,total:l,progress:l?a/l:void 0,bytes:c,rate:d||void 0,estimated:d&&l&&h?(l-a)/d:void 0,event:i,lengthComputable:l!=null,[e?"download":"upload"]:!0};t(m)},n)},D9=(t,e)=>{const n=t!=null;return[r=>e[0]({lengthComputable:n,total:t,loaded:r}),e[1]]},P9=t=>(...e)=>je.asap(()=>t(...e)),_ne=Hs.hasStandardBrowserEnv?((t,e)=>n=>(n=new URL(n,Hs.origin),t.protocol===n.protocol&&t.host===n.host&&(e||t.port===n.port)))(new URL(Hs.origin),Hs.navigator&&/(msie|trident)/i.test(Hs.navigator.userAgent)):()=>!0,Ane=Hs.hasStandardBrowserEnv?{write(t,e,n,r,s,i,a){if(typeof document>"u")return;const l=[`${t}=${encodeURIComponent(e)}`];je.isNumber(n)&&l.push(`expires=${new Date(n).toUTCString()}`),je.isString(r)&&l.push(`path=${r}`),je.isString(s)&&l.push(`domain=${s}`),i===!0&&l.push("secure"),je.isString(a)&&l.push(`SameSite=${a}`),document.cookie=l.join("; ")},read(t){if(typeof document>"u")return null;const e=document.cookie.match(new RegExp("(?:^|; )"+t+"=([^;]*)"));return e?decodeURIComponent(e[1]):null},remove(t){this.write(t,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function Mne(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}function Rne(t,e){return e?t.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):t}function HI(t,e,n){let r=!Mne(e);return t&&(r||n==!1)?Rne(t,e):e}const z9=t=>t instanceof Si?{...t}:t;function rd(t,e){e=e||{};const n={};function r(d,h,m,g){return je.isPlainObject(d)&&je.isPlainObject(h)?je.merge.call({caseless:g},d,h):je.isPlainObject(h)?je.merge({},h):je.isArray(h)?h.slice():h}function s(d,h,m,g){if(je.isUndefined(h)){if(!je.isUndefined(d))return r(void 0,d,m,g)}else return r(d,h,m,g)}function i(d,h){if(!je.isUndefined(h))return r(void 0,h)}function a(d,h){if(je.isUndefined(h)){if(!je.isUndefined(d))return r(void 0,d)}else return r(void 0,h)}function l(d,h,m){if(m in e)return r(d,h);if(m in t)return r(void 0,d)}const c={url:i,method:i,data:i,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:l,headers:(d,h,m)=>s(z9(d),z9(h),m,!0)};return je.forEach(Object.keys({...t,...e}),function(h){const m=c[h]||s,g=m(t[h],e[h],h);je.isUndefined(g)&&m!==l||(n[h]=g)}),n}const QI=t=>{const e=rd({},t);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:i,headers:a,auth:l}=e;if(e.headers=a=Si.from(a),e.url=LI(HI(e.baseURL,e.url,e.allowAbsoluteUrls),t.params,t.paramsSerializer),l&&a.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):""))),je.isFormData(n)){if(Hs.hasStandardBrowserEnv||Hs.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if(je.isFunction(n.getHeaders)){const c=n.getHeaders(),d=["content-type","content-length"];Object.entries(c).forEach(([h,m])=>{d.includes(h.toLowerCase())&&a.set(h,m)})}}if(Hs.hasStandardBrowserEnv&&(r&&je.isFunction(r)&&(r=r(e)),r||r!==!1&&_ne(e.url))){const c=s&&i&&Ane.read(i);c&&a.set(s,c)}return e},Dne=typeof XMLHttpRequest<"u",Pne=Dne&&function(t){return new Promise(function(n,r){const s=QI(t);let i=s.data;const a=Si.from(s.headers).normalize();let{responseType:l,onUploadProgress:c,onDownloadProgress:d}=s,h,m,g,x,y;function w(){x&&x(),y&&y(),s.cancelToken&&s.cancelToken.unsubscribe(h),s.signal&&s.signal.removeEventListener("abort",h)}let S=new XMLHttpRequest;S.open(s.method.toUpperCase(),s.url,!0),S.timeout=s.timeout;function k(){if(!S)return;const N=Si.from("getAllResponseHeaders"in S&&S.getAllResponseHeaders()),E={data:!l||l==="text"||l==="json"?S.responseText:S.response,status:S.status,statusText:S.statusText,headers:N,config:t,request:S};$I(function(A){n(A),w()},function(A){r(A),w()},E),S=null}"onloadend"in S?S.onloadend=k:S.onreadystatechange=function(){!S||S.readyState!==4||S.status===0&&!(S.responseURL&&S.responseURL.indexOf("file:")===0)||setTimeout(k)},S.onabort=function(){S&&(r(new Xt("Request aborted",Xt.ECONNABORTED,t,S)),S=null)},S.onerror=function(T){const E=T&&T.message?T.message:"Network Error",_=new Xt(E,Xt.ERR_NETWORK,t,S);_.event=T||null,r(_),S=null},S.ontimeout=function(){let T=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const E=s.transitional||BI;s.timeoutErrorMessage&&(T=s.timeoutErrorMessage),r(new Xt(T,E.clarifyTimeoutError?Xt.ETIMEDOUT:Xt.ECONNABORTED,t,S)),S=null},i===void 0&&a.setContentType(null),"setRequestHeader"in S&&je.forEach(a.toJSON(),function(T,E){S.setRequestHeader(E,T)}),je.isUndefined(s.withCredentials)||(S.withCredentials=!!s.withCredentials),l&&l!=="json"&&(S.responseType=s.responseType),d&&([g,y]=zv(d,!0),S.addEventListener("progress",g)),c&&S.upload&&([m,x]=zv(c),S.upload.addEventListener("progress",m),S.upload.addEventListener("loadend",x)),(s.cancelToken||s.signal)&&(h=N=>{S&&(r(!N||N.type?new bf(null,t,S):N),S.abort(),S=null)},s.cancelToken&&s.cancelToken.subscribe(h),s.signal&&(s.signal.aborted?h():s.signal.addEventListener("abort",h)));const j=Cne(s.url);if(j&&Hs.protocols.indexOf(j)===-1){r(new Xt("Unsupported protocol "+j+":",Xt.ERR_BAD_REQUEST,t));return}S.send(i||null)})},zne=(t,e)=>{const{length:n}=t=t?t.filter(Boolean):[];if(e||n){let r=new AbortController,s;const i=function(d){if(!s){s=!0,l();const h=d instanceof Error?d:this.reason;r.abort(h instanceof Xt?h:new bf(h instanceof Error?h.message:h))}};let a=e&&setTimeout(()=>{a=null,i(new Xt(`timeout ${e} of ms exceeded`,Xt.ETIMEDOUT))},e);const l=()=>{t&&(a&&clearTimeout(a),a=null,t.forEach(d=>{d.unsubscribe?d.unsubscribe(i):d.removeEventListener("abort",i)}),t=null)};t.forEach(d=>d.addEventListener("abort",i));const{signal:c}=r;return c.unsubscribe=()=>je.asap(l),c}},Ine=function*(t,e){let n=t.byteLength;if(n{const s=Lne(t,e);let i=0,a,l=c=>{a||(a=!0,r&&r(c))};return new ReadableStream({async pull(c){try{const{done:d,value:h}=await s.next();if(d){l(),c.close();return}let m=h.byteLength;if(n){let g=i+=m;n(g)}c.enqueue(new Uint8Array(h))}catch(d){throw l(d),d}},cancel(c){return l(c),s.return()}},{highWaterMark:2})},L9=64*1024,{isFunction:Xx}=je,Fne=(({Request:t,Response:e})=>({Request:t,Response:e}))(je.global),{ReadableStream:B9,TextEncoder:F9}=je.global,q9=(t,...e)=>{try{return!!t(...e)}catch{return!1}},qne=t=>{t=je.merge.call({skipUndefined:!0},Fne,t);const{fetch:e,Request:n,Response:r}=t,s=e?Xx(e):typeof fetch=="function",i=Xx(n),a=Xx(r);if(!s)return!1;const l=s&&Xx(B9),c=s&&(typeof F9=="function"?(y=>w=>y.encode(w))(new F9):async y=>new Uint8Array(await new n(y).arrayBuffer())),d=i&&l&&q9(()=>{let y=!1;const w=new n(Hs.origin,{body:new B9,method:"POST",get duplex(){return y=!0,"half"}}).headers.has("Content-Type");return y&&!w}),h=a&&l&&q9(()=>je.isReadableStream(new r("").body)),m={stream:h&&(y=>y.body)};s&&["text","arrayBuffer","blob","formData","stream"].forEach(y=>{!m[y]&&(m[y]=(w,S)=>{let k=w&&w[y];if(k)return k.call(w);throw new Xt(`Response type '${y}' is not supported`,Xt.ERR_NOT_SUPPORT,S)})});const g=async y=>{if(y==null)return 0;if(je.isBlob(y))return y.size;if(je.isSpecCompliantForm(y))return(await new n(Hs.origin,{method:"POST",body:y}).arrayBuffer()).byteLength;if(je.isArrayBufferView(y)||je.isArrayBuffer(y))return y.byteLength;if(je.isURLSearchParams(y)&&(y=y+""),je.isString(y))return(await c(y)).byteLength},x=async(y,w)=>{const S=je.toFiniteNumber(y.getContentLength());return S??g(w)};return async y=>{let{url:w,method:S,data:k,signal:j,cancelToken:N,timeout:T,onDownloadProgress:E,onUploadProgress:_,responseType:A,headers:L,withCredentials:P="same-origin",fetchOptions:B}=QI(y),$=e||fetch;A=A?(A+"").toLowerCase():"text";let U=zne([j,N&&N.toAbortSignal()],T),te=null;const z=U&&U.unsubscribe&&(()=>{U.unsubscribe()});let Q;try{if(_&&d&&S!=="get"&&S!=="head"&&(Q=await x(L,k))!==0){let ie=new n(w,{method:"POST",body:k,duplex:"half"}),G;if(je.isFormData(k)&&(G=ie.headers.get("content-type"))&&L.setContentType(G),ie.body){const[I,V]=D9(Q,zv(P9(_)));k=I9(ie.body,L9,I,V)}}je.isString(P)||(P=P?"include":"omit");const F=i&&"credentials"in n.prototype,Y={...B,signal:U,method:S.toUpperCase(),headers:L.normalize().toJSON(),body:k,duplex:"half",credentials:F?P:void 0};te=i&&new n(w,Y);let J=await(i?$(te,B):$(w,Y));const X=h&&(A==="stream"||A==="response");if(h&&(E||X&&z)){const ie={};["status","statusText","headers"].forEach(ee=>{ie[ee]=J[ee]});const G=je.toFiniteNumber(J.headers.get("content-length")),[I,V]=E&&D9(G,zv(P9(E),!0))||[];J=new r(I9(J.body,L9,I,()=>{V&&V(),z&&z()}),ie)}A=A||"text";let R=await m[je.findKey(m,A)||"text"](J,y);return!X&&z&&z(),await new Promise((ie,G)=>{$I(ie,G,{data:R,headers:Si.from(J.headers),status:J.status,statusText:J.statusText,config:y,request:te})})}catch(F){throw z&&z(),F&&F.name==="TypeError"&&/Load failed|fetch/i.test(F.message)?Object.assign(new Xt("Network Error",Xt.ERR_NETWORK,y,te),{cause:F.cause||F}):Xt.from(F,F&&F.code,y,te)}}},$ne=new Map,VI=t=>{let e=t&&t.env||{};const{fetch:n,Request:r,Response:s}=e,i=[r,s,n];let a=i.length,l=a,c,d,h=$ne;for(;l--;)c=i[l],d=h.get(c),d===void 0&&h.set(c,d=l?new Map:qne(e)),h=d;return d};VI();const zj={http:ine,xhr:Pne,fetch:{get:VI}};je.forEach(zj,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{value:e})}catch{}Object.defineProperty(t,"adapterName",{value:e})}});const $9=t=>`- ${t}`,Hne=t=>je.isFunction(t)||t===null||t===!1;function Qne(t,e){t=je.isArray(t)?t:[t];const{length:n}=t;let r,s;const i={};for(let a=0;a`adapter ${c} `+(d===!1?"is not supported by the environment":"is not available in the build"));let l=n?a.length>1?`since : -`+a.map($9).join(` -`):" "+$9(a[0]):"as no adapter specified";throw new Xt("There is no suitable adapter to dispatch the request "+l,"ERR_NOT_SUPPORT")}return s}const UI={getAdapter:Qne,adapters:zj};function j4(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new bf(null,t)}function H9(t){return j4(t),t.headers=Si.from(t.headers),t.data=O4.call(t,t.transformRequest),["post","put","patch"].indexOf(t.method)!==-1&&t.headers.setContentType("application/x-www-form-urlencoded",!1),UI.getAdapter(t.adapter||zp.adapter,t)(t).then(function(r){return j4(t),r.data=O4.call(t,t.transformResponse,r),r.headers=Si.from(r.headers),r},function(r){return qI(r)||(j4(t),r&&r.response&&(r.response.data=O4.call(t,t.transformResponse,r.response),r.response.headers=Si.from(r.response.headers))),Promise.reject(r)})}const WI="1.13.2",Jy={};["object","boolean","number","function","string","symbol"].forEach((t,e)=>{Jy[t]=function(r){return typeof r===t||"a"+(e<1?"n ":" ")+t}});const Q9={};Jy.transitional=function(e,n,r){function s(i,a){return"[Axios v"+WI+"] Transitional option '"+i+"'"+a+(r?". "+r:"")}return(i,a,l)=>{if(e===!1)throw new Xt(s(a," has been removed"+(n?" in "+n:"")),Xt.ERR_DEPRECATED);return n&&!Q9[a]&&(Q9[a]=!0,console.warn(s(a," has been deprecated since v"+n+" and will be removed in the near future"))),e?e(i,a,l):!0}};Jy.spelling=function(e){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${e}`),!0)};function Vne(t,e,n){if(typeof t!="object")throw new Xt("options must be an object",Xt.ERR_BAD_OPTION_VALUE);const r=Object.keys(t);let s=r.length;for(;s-- >0;){const i=r[s],a=e[i];if(a){const l=t[i],c=l===void 0||a(l,i,t);if(c!==!0)throw new Xt("option "+i+" must be "+c,Xt.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new Xt("Unknown option "+i,Xt.ERR_BAD_OPTION)}}const nv={assertOptions:Vne,validators:Jy},uo=nv.validators;let Zu=class{constructor(e){this.defaults=e||{},this.interceptors={request:new M9,response:new M9}}async request(e,n){try{return await this._request(e,n)}catch(r){if(r instanceof Error){let s={};Error.captureStackTrace?Error.captureStackTrace(s):s=new Error;const i=s.stack?s.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(e,n){typeof e=="string"?(n=n||{},n.url=e):n=e||{},n=rd(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:i}=n;r!==void 0&&nv.assertOptions(r,{silentJSONParsing:uo.transitional(uo.boolean),forcedJSONParsing:uo.transitional(uo.boolean),clarifyTimeoutError:uo.transitional(uo.boolean)},!1),s!=null&&(je.isFunction(s)?n.paramsSerializer={serialize:s}:nv.assertOptions(s,{encode:uo.function,serialize:uo.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),nv.assertOptions(n,{baseUrl:uo.spelling("baseURL"),withXsrfToken:uo.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let a=i&&je.merge(i.common,i[n.method]);i&&je.forEach(["delete","get","head","post","put","patch","common"],y=>{delete i[y]}),n.headers=Si.concat(a,i);const l=[];let c=!0;this.interceptors.request.forEach(function(w){typeof w.runWhen=="function"&&w.runWhen(n)===!1||(c=c&&w.synchronous,l.unshift(w.fulfilled,w.rejected))});const d=[];this.interceptors.response.forEach(function(w){d.push(w.fulfilled,w.rejected)});let h,m=0,g;if(!c){const y=[H9.bind(this),void 0];for(y.unshift(...l),y.push(...d),g=y.length,h=Promise.resolve(n);m{if(!r._listeners)return;let i=r._listeners.length;for(;i-- >0;)r._listeners[i](s);r._listeners=null}),this.promise.then=s=>{let i;const a=new Promise(l=>{r.subscribe(l),i=l}).then(s);return a.cancel=function(){r.unsubscribe(i)},a},e(function(i,a,l){r.reason||(r.reason=new bf(i,a,l),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const n=this._listeners.indexOf(e);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const e=new AbortController,n=r=>{e.abort(r)};return this.subscribe(n),e.signal.unsubscribe=()=>this.unsubscribe(n),e.signal}static source(){let e;return{token:new GI(function(s){e=s}),cancel:e}}};function Wne(t){return function(n){return t.apply(null,n)}}function Gne(t){return je.isObject(t)&&t.isAxiosError===!0}const ck={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,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(ck).forEach(([t,e])=>{ck[e]=t});function XI(t){const e=new Zu(t),n=NI(Zu.prototype.request,e);return je.extend(n,Zu.prototype,e,{allOwnKeys:!0}),je.extend(n,e,null,{allOwnKeys:!0}),n.create=function(s){return XI(rd(t,s))},n}const Br=XI(zp);Br.Axios=Zu;Br.CanceledError=bf;Br.CancelToken=Une;Br.isCancel=qI;Br.VERSION=WI;Br.toFormData=Zy;Br.AxiosError=Xt;Br.Cancel=Br.CanceledError;Br.all=function(e){return Promise.all(e)};Br.spread=Wne;Br.isAxiosError=Gne;Br.mergeConfig=rd;Br.AxiosHeaders=Si;Br.formToJSON=t=>FI(je.isHTMLForm(t)?new FormData(t):t);Br.getAdapter=UI.getAdapter;Br.HttpStatusCode=ck;Br.default=Br;const{Axios:nPe,AxiosError:rPe,CanceledError:sPe,isCancel:iPe,CancelToken:aPe,VERSION:oPe,all:lPe,Cancel:cPe,isAxiosError:uPe,spread:dPe,toFormData:hPe,AxiosHeaders:fPe,HttpStatusCode:mPe,formToJSON:pPe,getAdapter:gPe,mergeConfig:xPe}=Br,Xne=(t,e)=>{const n=new Array(t.length+e.length);for(let r=0;r({classGroupId:t,validator:e}),YI=(t=new Map,e=null,n)=>({nextPart:t,validators:e,classGroupId:n}),Iv="-",V9=[],Kne="arbitrary..",Zne=t=>{const e=ere(t),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=t;return{getClassGroupId:a=>{if(a.startsWith("[")&&a.endsWith("]"))return Jne(a);const l=a.split(Iv),c=l[0]===""&&l.length>1?1:0;return KI(l,c,e)},getConflictingClassGroupIds:(a,l)=>{if(l){const c=r[a],d=n[a];return c?d?Xne(d,c):c:d||V9}return n[a]||V9}}},KI=(t,e,n)=>{if(t.length-e===0)return n.classGroupId;const s=t[e],i=n.nextPart.get(s);if(i){const d=KI(t,e+1,i);if(d)return d}const a=n.validators;if(a===null)return;const l=e===0?t.join(Iv):t.slice(e).join(Iv),c=a.length;for(let d=0;dt.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const e=t.slice(1,-1),n=e.indexOf(":"),r=e.slice(0,n);return r?Kne+r:void 0})(),ere=t=>{const{theme:e,classGroups:n}=t;return tre(n,e)},tre=(t,e)=>{const n=YI();for(const r in t){const s=t[r];Ij(s,n,r,e)}return n},Ij=(t,e,n,r)=>{const s=t.length;for(let i=0;i{if(typeof t=="string"){rre(t,e,n);return}if(typeof t=="function"){sre(t,e,n,r);return}ire(t,e,n,r)},rre=(t,e,n)=>{const r=t===""?e:ZI(e,t);r.classGroupId=n},sre=(t,e,n,r)=>{if(are(t)){Ij(t(r),e,n,r);return}e.validators===null&&(e.validators=[]),e.validators.push(Yne(n,t))},ire=(t,e,n,r)=>{const s=Object.entries(t),i=s.length;for(let a=0;a{let n=t;const r=e.split(Iv),s=r.length;for(let i=0;i"isThemeGetter"in t&&t.isThemeGetter===!0,ore=t=>{if(t<1)return{get:()=>{},set:()=>{}};let e=0,n=Object.create(null),r=Object.create(null);const s=(i,a)=>{n[i]=a,e++,e>t&&(e=0,r=n,n=Object.create(null))};return{get(i){let a=n[i];if(a!==void 0)return a;if((a=r[i])!==void 0)return s(i,a),a},set(i,a){i in n?n[i]=a:s(i,a)}}},uk="!",U9=":",lre=[],W9=(t,e,n,r,s)=>({modifiers:t,hasImportantModifier:e,baseClassName:n,maybePostfixModifierPosition:r,isExternal:s}),cre=t=>{const{prefix:e,experimentalParseClassName:n}=t;let r=s=>{const i=[];let a=0,l=0,c=0,d;const h=s.length;for(let w=0;wc?d-c:void 0;return W9(i,x,g,y)};if(e){const s=e+U9,i=r;r=a=>a.startsWith(s)?i(a.slice(s.length)):W9(lre,!1,a,void 0,!0)}if(n){const s=r;r=i=>n({className:i,parseClassName:s})}return r},ure=t=>{const e=new Map;return t.orderSensitiveModifiers.forEach((n,r)=>{e.set(n,1e6+r)}),n=>{const r=[];let s=[];for(let i=0;i0&&(s.sort(),r.push(...s),s=[]),r.push(a)):s.push(a)}return s.length>0&&(s.sort(),r.push(...s)),r}},dre=t=>({cache:ore(t.cacheSize),parseClassName:cre(t),sortModifiers:ure(t),...Zne(t)}),hre=/\s+/,fre=(t,e)=>{const{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:s,sortModifiers:i}=e,a=[],l=t.trim().split(hre);let c="";for(let d=l.length-1;d>=0;d-=1){const h=l[d],{isExternal:m,modifiers:g,hasImportantModifier:x,baseClassName:y,maybePostfixModifierPosition:w}=n(h);if(m){c=h+(c.length>0?" "+c:c);continue}let S=!!w,k=r(S?y.substring(0,w):y);if(!k){if(!S){c=h+(c.length>0?" "+c:c);continue}if(k=r(y),!k){c=h+(c.length>0?" "+c:c);continue}S=!1}const j=g.length===0?"":g.length===1?g[0]:i(g).join(":"),N=x?j+uk:j,T=N+k;if(a.indexOf(T)>-1)continue;a.push(T);const E=s(k,S);for(let _=0;_0?" "+c:c)}return c},mre=(...t)=>{let e=0,n,r,s="";for(;e{if(typeof t=="string")return t;let e,n="";for(let r=0;r{let n,r,s,i;const a=c=>{const d=e.reduce((h,m)=>m(h),t());return n=dre(d),r=n.cache.get,s=n.cache.set,i=l,l(c)},l=c=>{const d=r(c);if(d)return d;const h=fre(c,n);return s(c,h),h};return i=a,(...c)=>i(mre(...c))},gre=[],cs=t=>{const e=n=>n[t]||gre;return e.isThemeGetter=!0,e},eL=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,tL=/^\((?:(\w[\w-]*):)?(.+)\)$/i,xre=/^\d+\/\d+$/,vre=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,yre=/\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$/,bre=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,wre=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Sre=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,ih=t=>xre.test(t),rn=t=>!!t&&!Number.isNaN(Number(t)),jc=t=>!!t&&Number.isInteger(Number(t)),N4=t=>t.endsWith("%")&&rn(t.slice(0,-1)),xl=t=>vre.test(t),kre=()=>!0,Ore=t=>yre.test(t)&&!bre.test(t),nL=()=>!1,jre=t=>wre.test(t),Nre=t=>Sre.test(t),Cre=t=>!dt(t)&&!ht(t),Tre=t=>wf(t,iL,nL),dt=t=>eL.test(t),Mu=t=>wf(t,aL,Ore),C4=t=>wf(t,Rre,rn),G9=t=>wf(t,rL,nL),Ere=t=>wf(t,sL,Nre),Yx=t=>wf(t,oL,jre),ht=t=>tL.test(t),Im=t=>Sf(t,aL),_re=t=>Sf(t,Dre),X9=t=>Sf(t,rL),Are=t=>Sf(t,iL),Mre=t=>Sf(t,sL),Kx=t=>Sf(t,oL,!0),wf=(t,e,n)=>{const r=eL.exec(t);return r?r[1]?e(r[1]):n(r[2]):!1},Sf=(t,e,n=!1)=>{const r=tL.exec(t);return r?r[1]?e(r[1]):n:!1},rL=t=>t==="position"||t==="percentage",sL=t=>t==="image"||t==="url",iL=t=>t==="length"||t==="size"||t==="bg-size",aL=t=>t==="length",Rre=t=>t==="number",Dre=t=>t==="family-name",oL=t=>t==="shadow",Pre=()=>{const t=cs("color"),e=cs("font"),n=cs("text"),r=cs("font-weight"),s=cs("tracking"),i=cs("leading"),a=cs("breakpoint"),l=cs("container"),c=cs("spacing"),d=cs("radius"),h=cs("shadow"),m=cs("inset-shadow"),g=cs("text-shadow"),x=cs("drop-shadow"),y=cs("blur"),w=cs("perspective"),S=cs("aspect"),k=cs("ease"),j=cs("animate"),N=()=>["auto","avoid","all","avoid-page","page","left","right","column"],T=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],E=()=>[...T(),ht,dt],_=()=>["auto","hidden","clip","visible","scroll"],A=()=>["auto","contain","none"],L=()=>[ht,dt,c],P=()=>[ih,"full","auto",...L()],B=()=>[jc,"none","subgrid",ht,dt],$=()=>["auto",{span:["full",jc,ht,dt]},jc,ht,dt],U=()=>[jc,"auto",ht,dt],te=()=>["auto","min","max","fr",ht,dt],z=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],Q=()=>["start","end","center","stretch","center-safe","end-safe"],F=()=>["auto",...L()],Y=()=>[ih,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...L()],J=()=>[t,ht,dt],X=()=>[...T(),X9,G9,{position:[ht,dt]}],R=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ie=()=>["auto","cover","contain",Are,Tre,{size:[ht,dt]}],G=()=>[N4,Im,Mu],I=()=>["","none","full",d,ht,dt],V=()=>["",rn,Im,Mu],ee=()=>["solid","dashed","dotted","double"],ne=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],W=()=>[rn,N4,X9,G9],se=()=>["","none",y,ht,dt],re=()=>["none",rn,ht,dt],oe=()=>["none",rn,ht,dt],Te=()=>[rn,ht,dt],We=()=>[ih,"full",...L()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[xl],breakpoint:[xl],color:[kre],container:[xl],"drop-shadow":[xl],ease:["in","out","in-out"],font:[Cre],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[xl],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[xl],shadow:[xl],spacing:["px",rn],text:[xl],"text-shadow":[xl],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",ih,dt,ht,S]}],container:["container"],columns:[{columns:[rn,dt,ht,l]}],"break-after":[{"break-after":N()}],"break-before":[{"break-before":N()}],"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:E()}],overflow:[{overflow:_()}],"overflow-x":[{"overflow-x":_()}],"overflow-y":[{"overflow-y":_()}],overscroll:[{overscroll:A()}],"overscroll-x":[{"overscroll-x":A()}],"overscroll-y":[{"overscroll-y":A()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:P()}],"inset-x":[{"inset-x":P()}],"inset-y":[{"inset-y":P()}],start:[{start:P()}],end:[{end:P()}],top:[{top:P()}],right:[{right:P()}],bottom:[{bottom:P()}],left:[{left:P()}],visibility:["visible","invisible","collapse"],z:[{z:[jc,"auto",ht,dt]}],basis:[{basis:[ih,"full","auto",l,...L()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[rn,ih,"auto","initial","none",dt]}],grow:[{grow:["",rn,ht,dt]}],shrink:[{shrink:["",rn,ht,dt]}],order:[{order:[jc,"first","last","none",ht,dt]}],"grid-cols":[{"grid-cols":B()}],"col-start-end":[{col:$()}],"col-start":[{"col-start":U()}],"col-end":[{"col-end":U()}],"grid-rows":[{"grid-rows":B()}],"row-start-end":[{row:$()}],"row-start":[{"row-start":U()}],"row-end":[{"row-end":U()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":te()}],"auto-rows":[{"auto-rows":te()}],gap:[{gap:L()}],"gap-x":[{"gap-x":L()}],"gap-y":[{"gap-y":L()}],"justify-content":[{justify:[...z(),"normal"]}],"justify-items":[{"justify-items":[...Q(),"normal"]}],"justify-self":[{"justify-self":["auto",...Q()]}],"align-content":[{content:["normal",...z()]}],"align-items":[{items:[...Q(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...Q(),{baseline:["","last"]}]}],"place-content":[{"place-content":z()}],"place-items":[{"place-items":[...Q(),"baseline"]}],"place-self":[{"place-self":["auto",...Q()]}],p:[{p:L()}],px:[{px:L()}],py:[{py:L()}],ps:[{ps:L()}],pe:[{pe:L()}],pt:[{pt:L()}],pr:[{pr:L()}],pb:[{pb:L()}],pl:[{pl:L()}],m:[{m:F()}],mx:[{mx:F()}],my:[{my:F()}],ms:[{ms:F()}],me:[{me:F()}],mt:[{mt:F()}],mr:[{mr:F()}],mb:[{mb:F()}],ml:[{ml:F()}],"space-x":[{"space-x":L()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":L()}],"space-y-reverse":["space-y-reverse"],size:[{size:Y()}],w:[{w:[l,"screen",...Y()]}],"min-w":[{"min-w":[l,"screen","none",...Y()]}],"max-w":[{"max-w":[l,"screen","none","prose",{screen:[a]},...Y()]}],h:[{h:["screen","lh",...Y()]}],"min-h":[{"min-h":["screen","lh","none",...Y()]}],"max-h":[{"max-h":["screen","lh",...Y()]}],"font-size":[{text:["base",n,Im,Mu]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,ht,C4]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",N4,dt]}],"font-family":[{font:[_re,dt,e]}],"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:[s,ht,dt]}],"line-clamp":[{"line-clamp":[rn,"none",ht,C4]}],leading:[{leading:[i,...L()]}],"list-image":[{"list-image":["none",ht,dt]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",ht,dt]}],"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:[...ee(),"wavy"]}],"text-decoration-thickness":[{decoration:[rn,"from-font","auto",ht,Mu]}],"text-decoration-color":[{decoration:J()}],"underline-offset":[{"underline-offset":[rn,"auto",ht,dt]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:L()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",ht,dt]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",ht,dt]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:X()}],"bg-repeat":[{bg:R()}],"bg-size":[{bg:ie()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},jc,ht,dt],radial:["",ht,dt],conic:[jc,ht,dt]},Mre,Ere]}],"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:I()}],"rounded-s":[{"rounded-s":I()}],"rounded-e":[{"rounded-e":I()}],"rounded-t":[{"rounded-t":I()}],"rounded-r":[{"rounded-r":I()}],"rounded-b":[{"rounded-b":I()}],"rounded-l":[{"rounded-l":I()}],"rounded-ss":[{"rounded-ss":I()}],"rounded-se":[{"rounded-se":I()}],"rounded-ee":[{"rounded-ee":I()}],"rounded-es":[{"rounded-es":I()}],"rounded-tl":[{"rounded-tl":I()}],"rounded-tr":[{"rounded-tr":I()}],"rounded-br":[{"rounded-br":I()}],"rounded-bl":[{"rounded-bl":I()}],"border-w":[{border:V()}],"border-w-x":[{"border-x":V()}],"border-w-y":[{"border-y":V()}],"border-w-s":[{"border-s":V()}],"border-w-e":[{"border-e":V()}],"border-w-t":[{"border-t":V()}],"border-w-r":[{"border-r":V()}],"border-w-b":[{"border-b":V()}],"border-w-l":[{"border-l":V()}],"divide-x":[{"divide-x":V()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":V()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ee(),"hidden","none"]}],"divide-style":[{divide:[...ee(),"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:[...ee(),"none","hidden"]}],"outline-offset":[{"outline-offset":[rn,ht,dt]}],"outline-w":[{outline:["",rn,Im,Mu]}],"outline-color":[{outline:J()}],shadow:[{shadow:["","none",h,Kx,Yx]}],"shadow-color":[{shadow:J()}],"inset-shadow":[{"inset-shadow":["none",m,Kx,Yx]}],"inset-shadow-color":[{"inset-shadow":J()}],"ring-w":[{ring:V()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:J()}],"ring-offset-w":[{"ring-offset":[rn,Mu]}],"ring-offset-color":[{"ring-offset":J()}],"inset-ring-w":[{"inset-ring":V()}],"inset-ring-color":[{"inset-ring":J()}],"text-shadow":[{"text-shadow":["none",g,Kx,Yx]}],"text-shadow-color":[{"text-shadow":J()}],opacity:[{opacity:[rn,ht,dt]}],"mix-blend":[{"mix-blend":[...ne(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ne()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[rn]}],"mask-image-linear-from-pos":[{"mask-linear-from":W()}],"mask-image-linear-to-pos":[{"mask-linear-to":W()}],"mask-image-linear-from-color":[{"mask-linear-from":J()}],"mask-image-linear-to-color":[{"mask-linear-to":J()}],"mask-image-t-from-pos":[{"mask-t-from":W()}],"mask-image-t-to-pos":[{"mask-t-to":W()}],"mask-image-t-from-color":[{"mask-t-from":J()}],"mask-image-t-to-color":[{"mask-t-to":J()}],"mask-image-r-from-pos":[{"mask-r-from":W()}],"mask-image-r-to-pos":[{"mask-r-to":W()}],"mask-image-r-from-color":[{"mask-r-from":J()}],"mask-image-r-to-color":[{"mask-r-to":J()}],"mask-image-b-from-pos":[{"mask-b-from":W()}],"mask-image-b-to-pos":[{"mask-b-to":W()}],"mask-image-b-from-color":[{"mask-b-from":J()}],"mask-image-b-to-color":[{"mask-b-to":J()}],"mask-image-l-from-pos":[{"mask-l-from":W()}],"mask-image-l-to-pos":[{"mask-l-to":W()}],"mask-image-l-from-color":[{"mask-l-from":J()}],"mask-image-l-to-color":[{"mask-l-to":J()}],"mask-image-x-from-pos":[{"mask-x-from":W()}],"mask-image-x-to-pos":[{"mask-x-to":W()}],"mask-image-x-from-color":[{"mask-x-from":J()}],"mask-image-x-to-color":[{"mask-x-to":J()}],"mask-image-y-from-pos":[{"mask-y-from":W()}],"mask-image-y-to-pos":[{"mask-y-to":W()}],"mask-image-y-from-color":[{"mask-y-from":J()}],"mask-image-y-to-color":[{"mask-y-to":J()}],"mask-image-radial":[{"mask-radial":[ht,dt]}],"mask-image-radial-from-pos":[{"mask-radial-from":W()}],"mask-image-radial-to-pos":[{"mask-radial-to":W()}],"mask-image-radial-from-color":[{"mask-radial-from":J()}],"mask-image-radial-to-color":[{"mask-radial-to":J()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":T()}],"mask-image-conic-pos":[{"mask-conic":[rn]}],"mask-image-conic-from-pos":[{"mask-conic-from":W()}],"mask-image-conic-to-pos":[{"mask-conic-to":W()}],"mask-image-conic-from-color":[{"mask-conic-from":J()}],"mask-image-conic-to-color":[{"mask-conic-to":J()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:X()}],"mask-repeat":[{mask:R()}],"mask-size":[{mask:ie()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",ht,dt]}],filter:[{filter:["","none",ht,dt]}],blur:[{blur:se()}],brightness:[{brightness:[rn,ht,dt]}],contrast:[{contrast:[rn,ht,dt]}],"drop-shadow":[{"drop-shadow":["","none",x,Kx,Yx]}],"drop-shadow-color":[{"drop-shadow":J()}],grayscale:[{grayscale:["",rn,ht,dt]}],"hue-rotate":[{"hue-rotate":[rn,ht,dt]}],invert:[{invert:["",rn,ht,dt]}],saturate:[{saturate:[rn,ht,dt]}],sepia:[{sepia:["",rn,ht,dt]}],"backdrop-filter":[{"backdrop-filter":["","none",ht,dt]}],"backdrop-blur":[{"backdrop-blur":se()}],"backdrop-brightness":[{"backdrop-brightness":[rn,ht,dt]}],"backdrop-contrast":[{"backdrop-contrast":[rn,ht,dt]}],"backdrop-grayscale":[{"backdrop-grayscale":["",rn,ht,dt]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[rn,ht,dt]}],"backdrop-invert":[{"backdrop-invert":["",rn,ht,dt]}],"backdrop-opacity":[{"backdrop-opacity":[rn,ht,dt]}],"backdrop-saturate":[{"backdrop-saturate":[rn,ht,dt]}],"backdrop-sepia":[{"backdrop-sepia":["",rn,ht,dt]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":L()}],"border-spacing-x":[{"border-spacing-x":L()}],"border-spacing-y":[{"border-spacing-y":L()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",ht,dt]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[rn,"initial",ht,dt]}],ease:[{ease:["linear","initial",k,ht,dt]}],delay:[{delay:[rn,ht,dt]}],animate:[{animate:["none",j,ht,dt]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,ht,dt]}],"perspective-origin":[{"perspective-origin":E()}],rotate:[{rotate:re()}],"rotate-x":[{"rotate-x":re()}],"rotate-y":[{"rotate-y":re()}],"rotate-z":[{"rotate-z":re()}],scale:[{scale:oe()}],"scale-x":[{"scale-x":oe()}],"scale-y":[{"scale-y":oe()}],"scale-z":[{"scale-z":oe()}],"scale-3d":["scale-3d"],skew:[{skew:Te()}],"skew-x":[{"skew-x":Te()}],"skew-y":[{"skew-y":Te()}],transform:[{transform:[ht,dt,"","none","gpu","cpu"]}],"transform-origin":[{origin:E()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:We()}],"translate-x":[{"translate-x":We()}],"translate-y":[{"translate-y":We()}],"translate-z":[{"translate-z":We()}],"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",ht,dt]}],"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":L()}],"scroll-mx":[{"scroll-mx":L()}],"scroll-my":[{"scroll-my":L()}],"scroll-ms":[{"scroll-ms":L()}],"scroll-me":[{"scroll-me":L()}],"scroll-mt":[{"scroll-mt":L()}],"scroll-mr":[{"scroll-mr":L()}],"scroll-mb":[{"scroll-mb":L()}],"scroll-ml":[{"scroll-ml":L()}],"scroll-p":[{"scroll-p":L()}],"scroll-px":[{"scroll-px":L()}],"scroll-py":[{"scroll-py":L()}],"scroll-ps":[{"scroll-ps":L()}],"scroll-pe":[{"scroll-pe":L()}],"scroll-pt":[{"scroll-pt":L()}],"scroll-pr":[{"scroll-pr":L()}],"scroll-pb":[{"scroll-pb":L()}],"scroll-pl":[{"scroll-pl":L()}],"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",ht,dt]}],fill:[{fill:["none",...J()]}],"stroke-w":[{stroke:[rn,Im,Mu,C4]}],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-x","border-w-y","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-x","border-color-y","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:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},zre=pre(Pre);function xe(...t){return zre(Fz(t))}const qt=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("rounded-xl border bg-card text-card-foreground shadow",t),...e}));qt.displayName="Card";const Fn=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("flex flex-col space-y-1.5 p-6",t),...e}));Fn.displayName="CardHeader";const qn=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("font-semibold leading-none tracking-tight",t),...e}));qn.displayName="CardTitle";const ts=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("text-sm text-muted-foreground",t),...e}));ts.displayName="CardDescription";const Gn=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("p-6 pt-0",t),...e}));Gn.displayName="CardContent";const lL=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("flex items-center p-6 pt-0",t),...e}));lL.displayName="CardFooter";var T4="rovingFocusGroup.onEntryFocus",Ire={bubbles:!1,cancelable:!0},Ip="RovingFocusGroup",[dk,cL,Lre]=By(Ip),[Bre,eb]=Ra(Ip,[Lre]),[Fre,qre]=Bre(Ip),uL=b.forwardRef((t,e)=>o.jsx(dk.Provider,{scope:t.__scopeRovingFocusGroup,children:o.jsx(dk.Slot,{scope:t.__scopeRovingFocusGroup,children:o.jsx($re,{...t,ref:e})})}));uL.displayName=Ip;var $re=b.forwardRef((t,e)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:s=!1,dir:i,currentTabStopId:a,defaultCurrentTabStopId:l,onCurrentTabStopIdChange:c,onEntryFocus:d,preventScrollOnEntryFocus:h=!1,...m}=t,g=b.useRef(null),x=Yn(e,g),y=Ep(i),[w,S]=Xl({prop:a,defaultProp:l??null,onChange:c,caller:Ip}),[k,j]=b.useState(!1),N=Rs(d),T=cL(n),E=b.useRef(!1),[_,A]=b.useState(0);return b.useEffect(()=>{const L=g.current;if(L)return L.addEventListener(T4,N),()=>L.removeEventListener(T4,N)},[N]),o.jsx(Fre,{scope:n,orientation:r,dir:y,loop:s,currentTabStopId:w,onItemFocus:b.useCallback(L=>S(L),[S]),onItemShiftTab:b.useCallback(()=>j(!0),[]),onFocusableItemAdd:b.useCallback(()=>A(L=>L+1),[]),onFocusableItemRemove:b.useCallback(()=>A(L=>L-1),[]),children:o.jsx(xn.div,{tabIndex:k||_===0?-1:0,"data-orientation":r,...m,ref:x,style:{outline:"none",...t.style},onMouseDown:nt(t.onMouseDown,()=>{E.current=!0}),onFocus:nt(t.onFocus,L=>{const P=!E.current;if(L.target===L.currentTarget&&P&&!k){const B=new CustomEvent(T4,Ire);if(L.currentTarget.dispatchEvent(B),!B.defaultPrevented){const $=T().filter(F=>F.focusable),U=$.find(F=>F.active),te=$.find(F=>F.id===w),Q=[U,te,...$].filter(Boolean).map(F=>F.ref.current);fL(Q,h)}}E.current=!1}),onBlur:nt(t.onBlur,()=>j(!1))})})}),dL="RovingFocusGroupItem",hL=b.forwardRef((t,e)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:s=!1,tabStopId:i,children:a,...l}=t,c=Ui(),d=i||c,h=qre(dL,n),m=h.currentTabStopId===d,g=cL(n),{onFocusableItemAdd:x,onFocusableItemRemove:y,currentTabStopId:w}=h;return b.useEffect(()=>{if(r)return x(),()=>y()},[r,x,y]),o.jsx(dk.ItemSlot,{scope:n,id:d,focusable:r,active:s,children:o.jsx(xn.span,{tabIndex:m?0:-1,"data-orientation":h.orientation,...l,ref:e,onMouseDown:nt(t.onMouseDown,S=>{r?h.onItemFocus(d):S.preventDefault()}),onFocus:nt(t.onFocus,()=>h.onItemFocus(d)),onKeyDown:nt(t.onKeyDown,S=>{if(S.key==="Tab"&&S.shiftKey){h.onItemShiftTab();return}if(S.target!==S.currentTarget)return;const k=Vre(S,h.orientation,h.dir);if(k!==void 0){if(S.metaKey||S.ctrlKey||S.altKey||S.shiftKey)return;S.preventDefault();let N=g().filter(T=>T.focusable).map(T=>T.ref.current);if(k==="last")N.reverse();else if(k==="prev"||k==="next"){k==="prev"&&N.reverse();const T=N.indexOf(S.currentTarget);N=h.loop?Ure(N,T+1):N.slice(T+1)}setTimeout(()=>fL(N))}}),children:typeof a=="function"?a({isCurrentTabStop:m,hasTabStop:w!=null}):a})})});hL.displayName=dL;var Hre={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function Qre(t,e){return e!=="rtl"?t:t==="ArrowLeft"?"ArrowRight":t==="ArrowRight"?"ArrowLeft":t}function Vre(t,e,n){const r=Qre(t.key,n);if(!(e==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(e==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return Hre[r]}function fL(t,e=!1){const n=document.activeElement;for(const r of t)if(r===n||(r.focus({preventScroll:e}),document.activeElement!==n))return}function Ure(t,e){return t.map((n,r)=>t[(e+r)%t.length])}var mL=uL,pL=hL,tb="Tabs",[Wre]=Ra(tb,[eb]),gL=eb(),[Gre,Lj]=Wre(tb),xL=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,onValueChange:s,defaultValue:i,orientation:a="horizontal",dir:l,activationMode:c="automatic",...d}=t,h=Ep(l),[m,g]=Xl({prop:r,onChange:s,defaultProp:i??"",caller:tb});return o.jsx(Gre,{scope:n,baseId:Ui(),value:m,onValueChange:g,orientation:a,dir:h,activationMode:c,children:o.jsx(xn.div,{dir:h,"data-orientation":a,...d,ref:e})})});xL.displayName=tb;var vL="TabsList",yL=b.forwardRef((t,e)=>{const{__scopeTabs:n,loop:r=!0,...s}=t,i=Lj(vL,n),a=gL(n);return o.jsx(mL,{asChild:!0,...a,orientation:i.orientation,dir:i.dir,loop:r,children:o.jsx(xn.div,{role:"tablist","aria-orientation":i.orientation,...s,ref:e})})});yL.displayName=vL;var bL="TabsTrigger",wL=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,disabled:s=!1,...i}=t,a=Lj(bL,n),l=gL(n),c=OL(a.baseId,r),d=jL(a.baseId,r),h=r===a.value;return o.jsx(pL,{asChild:!0,...l,focusable:!s,active:h,children:o.jsx(xn.button,{type:"button",role:"tab","aria-selected":h,"aria-controls":d,"data-state":h?"active":"inactive","data-disabled":s?"":void 0,disabled:s,id:c,...i,ref:e,onMouseDown:nt(t.onMouseDown,m=>{!s&&m.button===0&&m.ctrlKey===!1?a.onValueChange(r):m.preventDefault()}),onKeyDown:nt(t.onKeyDown,m=>{[" ","Enter"].includes(m.key)&&a.onValueChange(r)}),onFocus:nt(t.onFocus,()=>{const m=a.activationMode!=="manual";!h&&!s&&m&&a.onValueChange(r)})})})});wL.displayName=bL;var SL="TabsContent",kL=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,forceMount:s,children:i,...a}=t,l=Lj(SL,n),c=OL(l.baseId,r),d=jL(l.baseId,r),h=r===l.value,m=b.useRef(h);return b.useEffect(()=>{const g=requestAnimationFrame(()=>m.current=!1);return()=>cancelAnimationFrame(g)},[]),o.jsx(ii,{present:s||h,children:({present:g})=>o.jsx(xn.div,{"data-state":h?"active":"inactive","data-orientation":l.orientation,role:"tabpanel","aria-labelledby":c,hidden:!g,id:d,tabIndex:0,...a,ref:e,style:{...t.style,animationDuration:m.current?"0s":void 0},children:g&&i})})});kL.displayName=SL;function OL(t,e){return`${t}-trigger-${e}`}function jL(t,e){return`${t}-content-${e}`}var Xre=xL,NL=yL,CL=wL,TL=kL;const ja=Xre,Wi=b.forwardRef(({className:t,...e},n)=>o.jsx(NL,{ref:n,className:xe("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",t),...e}));Wi.displayName=NL.displayName;const Lt=b.forwardRef(({className:t,...e},n)=>o.jsx(CL,{ref:n,className:xe("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all duration-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",t),...e}));Lt.displayName=CL.displayName;const un=b.forwardRef(({className:t,...e},n)=>o.jsx(TL,{ref:n,className:xe("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[state=active]:animate-in data-[state=active]:fade-in data-[state=active]:duration-300",t),...e}));un.displayName=TL.displayName;function Yre(t,e){return b.useReducer((n,r)=>e[n][r]??n,t)}var Bj="ScrollArea",[EL]=Ra(Bj),[Kre,Da]=EL(Bj),_L=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,type:r="hover",dir:s,scrollHideDelay:i=600,...a}=t,[l,c]=b.useState(null),[d,h]=b.useState(null),[m,g]=b.useState(null),[x,y]=b.useState(null),[w,S]=b.useState(null),[k,j]=b.useState(0),[N,T]=b.useState(0),[E,_]=b.useState(!1),[A,L]=b.useState(!1),P=Yn(e,$=>c($)),B=Ep(s);return o.jsx(Kre,{scope:n,type:r,dir:B,scrollHideDelay:i,scrollArea:l,viewport:d,onViewportChange:h,content:m,onContentChange:g,scrollbarX:x,onScrollbarXChange:y,scrollbarXEnabled:E,onScrollbarXEnabledChange:_,scrollbarY:w,onScrollbarYChange:S,scrollbarYEnabled:A,onScrollbarYEnabledChange:L,onCornerWidthChange:j,onCornerHeightChange:T,children:o.jsx(xn.div,{dir:B,...a,ref:P,style:{position:"relative","--radix-scroll-area-corner-width":k+"px","--radix-scroll-area-corner-height":N+"px",...t.style}})})});_L.displayName=Bj;var AL="ScrollAreaViewport",ML=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,children:r,nonce:s,...i}=t,a=Da(AL,n),l=b.useRef(null),c=Yn(e,l,a.onViewportChange);return o.jsxs(o.Fragment,{children:[o.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:s}),o.jsx(xn.div,{"data-radix-scroll-area-viewport":"",...i,ref:c,style:{overflowX:a.scrollbarXEnabled?"scroll":"hidden",overflowY:a.scrollbarYEnabled?"scroll":"hidden",...t.style},children:o.jsx("div",{ref:a.onContentChange,style:{minWidth:"100%",display:"table"},children:r})})]})});ML.displayName=AL;var Fo="ScrollAreaScrollbar",Fj=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=Da(Fo,t.__scopeScrollArea),{onScrollbarXEnabledChange:i,onScrollbarYEnabledChange:a}=s,l=t.orientation==="horizontal";return b.useEffect(()=>(l?i(!0):a(!0),()=>{l?i(!1):a(!1)}),[l,i,a]),s.type==="hover"?o.jsx(Zre,{...r,ref:e,forceMount:n}):s.type==="scroll"?o.jsx(Jre,{...r,ref:e,forceMount:n}):s.type==="auto"?o.jsx(RL,{...r,ref:e,forceMount:n}):s.type==="always"?o.jsx(qj,{...r,ref:e}):null});Fj.displayName=Fo;var Zre=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=Da(Fo,t.__scopeScrollArea),[i,a]=b.useState(!1);return b.useEffect(()=>{const l=s.scrollArea;let c=0;if(l){const d=()=>{window.clearTimeout(c),a(!0)},h=()=>{c=window.setTimeout(()=>a(!1),s.scrollHideDelay)};return l.addEventListener("pointerenter",d),l.addEventListener("pointerleave",h),()=>{window.clearTimeout(c),l.removeEventListener("pointerenter",d),l.removeEventListener("pointerleave",h)}}},[s.scrollArea,s.scrollHideDelay]),o.jsx(ii,{present:n||i,children:o.jsx(RL,{"data-state":i?"visible":"hidden",...r,ref:e})})}),Jre=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=Da(Fo,t.__scopeScrollArea),i=t.orientation==="horizontal",a=rb(()=>c("SCROLL_END"),100),[l,c]=Yre("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return b.useEffect(()=>{if(l==="idle"){const d=window.setTimeout(()=>c("HIDE"),s.scrollHideDelay);return()=>window.clearTimeout(d)}},[l,s.scrollHideDelay,c]),b.useEffect(()=>{const d=s.viewport,h=i?"scrollLeft":"scrollTop";if(d){let m=d[h];const g=()=>{const x=d[h];m!==x&&(c("SCROLL"),a()),m=x};return d.addEventListener("scroll",g),()=>d.removeEventListener("scroll",g)}},[s.viewport,i,c,a]),o.jsx(ii,{present:n||l!=="hidden",children:o.jsx(qj,{"data-state":l==="hidden"?"hidden":"visible",...r,ref:e,onPointerEnter:nt(t.onPointerEnter,()=>c("POINTER_ENTER")),onPointerLeave:nt(t.onPointerLeave,()=>c("POINTER_LEAVE"))})})}),RL=b.forwardRef((t,e)=>{const n=Da(Fo,t.__scopeScrollArea),{forceMount:r,...s}=t,[i,a]=b.useState(!1),l=t.orientation==="horizontal",c=rb(()=>{if(n.viewport){const d=n.viewport.offsetWidth{const{orientation:n="vertical",...r}=t,s=Da(Fo,t.__scopeScrollArea),i=b.useRef(null),a=b.useRef(0),[l,c]=b.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),d=LL(l.viewport,l.content),h={...r,sizes:l,onSizesChange:c,hasThumb:d>0&&d<1,onThumbChange:g=>i.current=g,onThumbPointerUp:()=>a.current=0,onThumbPointerDown:g=>a.current=g};function m(g,x){return ise(g,a.current,l,x)}return n==="horizontal"?o.jsx(ese,{...h,ref:e,onThumbPositionChange:()=>{if(s.viewport&&i.current){const g=s.viewport.scrollLeft,x=Y9(g,l,s.dir);i.current.style.transform=`translate3d(${x}px, 0, 0)`}},onWheelScroll:g=>{s.viewport&&(s.viewport.scrollLeft=g)},onDragScroll:g=>{s.viewport&&(s.viewport.scrollLeft=m(g,s.dir))}}):n==="vertical"?o.jsx(tse,{...h,ref:e,onThumbPositionChange:()=>{if(s.viewport&&i.current){const g=s.viewport.scrollTop,x=Y9(g,l);i.current.style.transform=`translate3d(0, ${x}px, 0)`}},onWheelScroll:g=>{s.viewport&&(s.viewport.scrollTop=g)},onDragScroll:g=>{s.viewport&&(s.viewport.scrollTop=m(g))}}):null}),ese=b.forwardRef((t,e)=>{const{sizes:n,onSizesChange:r,...s}=t,i=Da(Fo,t.__scopeScrollArea),[a,l]=b.useState(),c=b.useRef(null),d=Yn(e,c,i.onScrollbarXChange);return b.useEffect(()=>{c.current&&l(getComputedStyle(c.current))},[c]),o.jsx(PL,{"data-orientation":"horizontal",...s,ref:d,sizes:n,style:{bottom:0,left:i.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:i.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":nb(n)+"px",...t.style},onThumbPointerDown:h=>t.onThumbPointerDown(h.x),onDragScroll:h=>t.onDragScroll(h.x),onWheelScroll:(h,m)=>{if(i.viewport){const g=i.viewport.scrollLeft+h.deltaX;t.onWheelScroll(g),FL(g,m)&&h.preventDefault()}},onResize:()=>{c.current&&i.viewport&&a&&r({content:i.viewport.scrollWidth,viewport:i.viewport.offsetWidth,scrollbar:{size:c.current.clientWidth,paddingStart:Bv(a.paddingLeft),paddingEnd:Bv(a.paddingRight)}})}})}),tse=b.forwardRef((t,e)=>{const{sizes:n,onSizesChange:r,...s}=t,i=Da(Fo,t.__scopeScrollArea),[a,l]=b.useState(),c=b.useRef(null),d=Yn(e,c,i.onScrollbarYChange);return b.useEffect(()=>{c.current&&l(getComputedStyle(c.current))},[c]),o.jsx(PL,{"data-orientation":"vertical",...s,ref:d,sizes:n,style:{top:0,right:i.dir==="ltr"?0:void 0,left:i.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":nb(n)+"px",...t.style},onThumbPointerDown:h=>t.onThumbPointerDown(h.y),onDragScroll:h=>t.onDragScroll(h.y),onWheelScroll:(h,m)=>{if(i.viewport){const g=i.viewport.scrollTop+h.deltaY;t.onWheelScroll(g),FL(g,m)&&h.preventDefault()}},onResize:()=>{c.current&&i.viewport&&a&&r({content:i.viewport.scrollHeight,viewport:i.viewport.offsetHeight,scrollbar:{size:c.current.clientHeight,paddingStart:Bv(a.paddingTop),paddingEnd:Bv(a.paddingBottom)}})}})}),[nse,DL]=EL(Fo),PL=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,sizes:r,hasThumb:s,onThumbChange:i,onThumbPointerUp:a,onThumbPointerDown:l,onThumbPositionChange:c,onDragScroll:d,onWheelScroll:h,onResize:m,...g}=t,x=Da(Fo,n),[y,w]=b.useState(null),S=Yn(e,P=>w(P)),k=b.useRef(null),j=b.useRef(""),N=x.viewport,T=r.content-r.viewport,E=Rs(h),_=Rs(c),A=rb(m,10);function L(P){if(k.current){const B=P.clientX-k.current.left,$=P.clientY-k.current.top;d({x:B,y:$})}}return b.useEffect(()=>{const P=B=>{const $=B.target;y?.contains($)&&E(B,T)};return document.addEventListener("wheel",P,{passive:!1}),()=>document.removeEventListener("wheel",P,{passive:!1})},[N,y,T,E]),b.useEffect(_,[r,_]),Yh(y,A),Yh(x.content,A),o.jsx(nse,{scope:n,scrollbar:y,hasThumb:s,onThumbChange:Rs(i),onThumbPointerUp:Rs(a),onThumbPositionChange:_,onThumbPointerDown:Rs(l),children:o.jsx(xn.div,{...g,ref:S,style:{position:"absolute",...g.style},onPointerDown:nt(t.onPointerDown,P=>{P.button===0&&(P.target.setPointerCapture(P.pointerId),k.current=y.getBoundingClientRect(),j.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",x.viewport&&(x.viewport.style.scrollBehavior="auto"),L(P))}),onPointerMove:nt(t.onPointerMove,L),onPointerUp:nt(t.onPointerUp,P=>{const B=P.target;B.hasPointerCapture(P.pointerId)&&B.releasePointerCapture(P.pointerId),document.body.style.webkitUserSelect=j.current,x.viewport&&(x.viewport.style.scrollBehavior=""),k.current=null})})})}),Lv="ScrollAreaThumb",zL=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=DL(Lv,t.__scopeScrollArea);return o.jsx(ii,{present:n||s.hasThumb,children:o.jsx(rse,{ref:e,...r})})}),rse=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,style:r,...s}=t,i=Da(Lv,n),a=DL(Lv,n),{onThumbPositionChange:l}=a,c=Yn(e,m=>a.onThumbChange(m)),d=b.useRef(void 0),h=rb(()=>{d.current&&(d.current(),d.current=void 0)},100);return b.useEffect(()=>{const m=i.viewport;if(m){const g=()=>{if(h(),!d.current){const x=ase(m,l);d.current=x,l()}};return l(),m.addEventListener("scroll",g),()=>m.removeEventListener("scroll",g)}},[i.viewport,h,l]),o.jsx(xn.div,{"data-state":a.hasThumb?"visible":"hidden",...s,ref:c,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...r},onPointerDownCapture:nt(t.onPointerDownCapture,m=>{const x=m.target.getBoundingClientRect(),y=m.clientX-x.left,w=m.clientY-x.top;a.onThumbPointerDown({x:y,y:w})}),onPointerUp:nt(t.onPointerUp,a.onThumbPointerUp)})});zL.displayName=Lv;var $j="ScrollAreaCorner",IL=b.forwardRef((t,e)=>{const n=Da($j,t.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!=="scroll"&&r?o.jsx(sse,{...t,ref:e}):null});IL.displayName=$j;var sse=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,...r}=t,s=Da($j,n),[i,a]=b.useState(0),[l,c]=b.useState(0),d=!!(i&&l);return Yh(s.scrollbarX,()=>{const h=s.scrollbarX?.offsetHeight||0;s.onCornerHeightChange(h),c(h)}),Yh(s.scrollbarY,()=>{const h=s.scrollbarY?.offsetWidth||0;s.onCornerWidthChange(h),a(h)}),d?o.jsx(xn.div,{...r,ref:e,style:{width:i,height:l,position:"absolute",right:s.dir==="ltr"?0:void 0,left:s.dir==="rtl"?0:void 0,bottom:0,...t.style}}):null});function Bv(t){return t?parseInt(t,10):0}function LL(t,e){const n=t/e;return isNaN(n)?0:n}function nb(t){const e=LL(t.viewport,t.content),n=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,r=(t.scrollbar.size-n)*e;return Math.max(r,18)}function ise(t,e,n,r="ltr"){const s=nb(n),i=s/2,a=e||i,l=s-a,c=n.scrollbar.paddingStart+a,d=n.scrollbar.size-n.scrollbar.paddingEnd-l,h=n.content-n.viewport,m=r==="ltr"?[0,h]:[h*-1,0];return BL([c,d],m)(t)}function Y9(t,e,n="ltr"){const r=nb(e),s=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,i=e.scrollbar.size-s,a=e.content-e.viewport,l=i-r,c=n==="ltr"?[0,a]:[a*-1,0],d=Sj(t,c);return BL([0,a],[0,l])(d)}function BL(t,e){return n=>{if(t[0]===t[1]||e[0]===e[1])return e[0];const r=(e[1]-e[0])/(t[1]-t[0]);return e[0]+r*(n-t[0])}}function FL(t,e){return t>0&&t{})=>{let n={left:t.scrollLeft,top:t.scrollTop},r=0;return(function s(){const i={left:t.scrollLeft,top:t.scrollTop},a=n.left!==i.left,l=n.top!==i.top;(a||l)&&e(),n=i,r=window.requestAnimationFrame(s)})(),()=>window.cancelAnimationFrame(r)};function rb(t,e){const n=Rs(t),r=b.useRef(0);return b.useEffect(()=>()=>window.clearTimeout(r.current),[]),b.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,e)},[n,e])}function Yh(t,e){const n=Rs(e);Uh(()=>{let r=0;if(t){const s=new ResizeObserver(()=>{cancelAnimationFrame(r),r=window.requestAnimationFrame(n)});return s.observe(t),()=>{window.cancelAnimationFrame(r),s.unobserve(t)}}},[t,n])}var qL=_L,ose=ML,lse=IL;const gn=b.forwardRef(({className:t,children:e,viewportRef:n,...r},s)=>o.jsxs(qL,{ref:s,className:xe("relative overflow-hidden",t),...r,children:[o.jsx(ose,{ref:n,className:"h-full w-full rounded-[inherit]",children:e}),o.jsx(hk,{}),o.jsx(hk,{orientation:"horizontal"}),o.jsx(lse,{})]}));gn.displayName=qL.displayName;const hk=b.forwardRef(({className:t,orientation:e="vertical",...n},r)=>o.jsx(Fj,{ref:r,orientation:e,className:xe("flex touch-none select-none transition-colors",e==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",e==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",t),...n,children:o.jsx(zL,{className:"relative flex-1 rounded-full bg-border"})}));hk.displayName=Fj.displayName;function cse({className:t,...e}){return o.jsx("div",{className:xe("animate-pulse rounded-md bg-primary/10",t),...e})}function use(t,e=[]){let n=[];function r(i,a){const l=b.createContext(a);l.displayName=i+"Context";const c=n.length;n=[...n,a];const d=m=>{const{scope:g,children:x,...y}=m,w=g?.[t]?.[c]||l,S=b.useMemo(()=>y,Object.values(y));return o.jsx(w.Provider,{value:S,children:x})};d.displayName=i+"Provider";function h(m,g){const x=g?.[t]?.[c]||l,y=b.useContext(x);if(y)return y;if(a!==void 0)return a;throw new Error(`\`${m}\` must be used within \`${i}\``)}return[d,h]}const s=()=>{const i=n.map(a=>b.createContext(a));return function(l){const c=l?.[t]||i;return b.useMemo(()=>({[`__scope${t}`]:{...l,[t]:c}}),[l,c])}};return s.scopeName=t,[r,dse(s,...e)]}function dse(...t){const e=t[0];if(t.length===1)return e;const n=()=>{const r=t.map(s=>({useScope:s(),scopeName:s.scopeName}));return function(i){const a=r.reduce((l,{useScope:c,scopeName:d})=>{const m=c(i)[`__scope${d}`];return{...l,...m}},{});return b.useMemo(()=>({[`__scope${e.scopeName}`]:a}),[a])}};return n.scopeName=e.scopeName,n}var hse=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],$L=hse.reduce((t,e)=>{const n=Fy(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...l}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(c,{...l,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),Hj="Progress",Qj=100,[fse]=use(Hj),[mse,pse]=fse(Hj),HL=b.forwardRef((t,e)=>{const{__scopeProgress:n,value:r=null,max:s,getValueLabel:i=gse,...a}=t;(s||s===0)&&!K9(s)&&console.error(xse(`${s}`,"Progress"));const l=K9(s)?s:Qj;r!==null&&!Z9(r,l)&&console.error(vse(`${r}`,"Progress"));const c=Z9(r,l)?r:null,d=Fv(c)?i(c,l):void 0;return o.jsx(mse,{scope:n,value:c,max:l,children:o.jsx($L.div,{"aria-valuemax":l,"aria-valuemin":0,"aria-valuenow":Fv(c)?c:void 0,"aria-valuetext":d,role:"progressbar","data-state":UL(c,l),"data-value":c??void 0,"data-max":l,...a,ref:e})})});HL.displayName=Hj;var QL="ProgressIndicator",VL=b.forwardRef((t,e)=>{const{__scopeProgress:n,...r}=t,s=pse(QL,n);return o.jsx($L.div,{"data-state":UL(s.value,s.max),"data-value":s.value??void 0,"data-max":s.max,...r,ref:e})});VL.displayName=QL;function gse(t,e){return`${Math.round(t/e*100)}%`}function UL(t,e){return t==null?"indeterminate":t===e?"complete":"loading"}function Fv(t){return typeof t=="number"}function K9(t){return Fv(t)&&!isNaN(t)&&t>0}function Z9(t,e){return Fv(t)&&!isNaN(t)&&t<=e&&t>=0}function xse(t,e){return`Invalid prop \`max\` of value \`${t}\` supplied to \`${e}\`. Only numbers greater than 0 are valid max values. Defaulting to \`${Qj}\`.`}function vse(t,e){return`Invalid prop \`value\` of value \`${t}\` supplied to \`${e}\`. The \`value\` prop must be: +`+v.stack}}var jt=Object.prototype.hasOwnProperty,vt=t.unstable_scheduleCallback,$n=t.unstable_cancelCallback,qt=t.unstable_shouldYield,un=t.unstable_requestPaint,Mt=t.unstable_now,ct=t.unstable_getCurrentPriorityLevel,Ne=t.unstable_ImmediatePriority,ze=t.unstable_UserBlockingPriority,rt=t.unstable_NormalPriority,bt=t.unstable_LowPriority,zt=t.unstable_IdlePriority,Rt=t.log,Hn=t.unstable_setDisableYieldValue,We=null,ot=null;function dn(u){if(typeof Rt=="function"&&Hn(u),ot&&typeof ot.setStrictMode=="function")try{ot.setStrictMode(We,u)}catch{}}var Pt=Math.clz32?Math.clz32:rn,xn=Math.log,dt=Math.LN2;function rn(u){return u>>>=0,u===0?32:31-(xn(u)/dt|0)|0}var wt=256,Wt=262144,Gt=4194304;function lt(u){var f=u&42;if(f!==0)return f;switch(u&-u){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:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return u&261888;case 262144:case 524288:case 1048576:case 2097152:return u&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return u&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return u}}function ve(u,f,p){var v=u.pendingLanes;if(v===0)return 0;var O=0,C=u.suspendedLanes,F=u.pingedLanes;u=u.warmLanes;var Z=v&134217727;return Z!==0?(v=Z&~C,v!==0?O=lt(v):(F&=Z,F!==0?O=lt(F):p||(p=Z&~u,p!==0&&(O=lt(p))))):(Z=v&~C,Z!==0?O=lt(Z):F!==0?O=lt(F):p||(p=v&~u,p!==0&&(O=lt(p)))),O===0?0:f!==0&&f!==O&&(f&C)===0&&(C=O&-O,p=f&-f,C>=p||C===32&&(p&4194048)!==0)?f:O}function He(u,f){return(u.pendingLanes&~(u.suspendedLanes&~u.pingedLanes)&f)===0}function ht(u,f){switch(u){case 1:case 2:case 4:case 8:case 64:return f+250;case 16:case 32: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 f+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 vn(){var u=Gt;return Gt<<=1,(Gt&62914560)===0&&(Gt=4194304),u}function Qn(u){for(var f=[],p=0;31>p;p++)f.push(u);return f}function fr(u,f){u.pendingLanes|=f,f!==268435456&&(u.suspendedLanes=0,u.pingedLanes=0,u.warmLanes=0)}function ar(u,f,p,v,O,C){var F=u.pendingLanes;u.pendingLanes=p,u.suspendedLanes=0,u.pingedLanes=0,u.warmLanes=0,u.expiredLanes&=p,u.entangledLanes&=p,u.errorRecoveryDisabledLanes&=p,u.shellSuspendCounter=0;var Z=u.entanglements,de=u.expirationTimes,Se=u.hiddenUpdates;for(p=F&~p;0"u")return null;try{return u.activeElement||u.body}catch{return u.body}}var fK=/[\n"\\]/g;function ia(u){return u.replace(fK,function(f){return"\\"+f.charCodeAt(0).toString(16)+" "})}function gw(u,f,p,v,O,C,F,Z){u.name="",F!=null&&typeof F!="function"&&typeof F!="symbol"&&typeof F!="boolean"?u.type=F:u.removeAttribute("type"),f!=null?F==="number"?(f===0&&u.value===""||u.value!=f)&&(u.value=""+sa(f)):u.value!==""+sa(f)&&(u.value=""+sa(f)):F!=="submit"&&F!=="reset"||u.removeAttribute("value"),f!=null?xw(u,F,sa(f)):p!=null?xw(u,F,sa(p)):v!=null&&u.removeAttribute("value"),O==null&&C!=null&&(u.defaultChecked=!!C),O!=null&&(u.checked=O&&typeof O!="function"&&typeof O!="symbol"),Z!=null&&typeof Z!="function"&&typeof Z!="symbol"&&typeof Z!="boolean"?u.name=""+sa(Z):u.removeAttribute("name")}function F7(u,f,p,v,O,C,F,Z){if(C!=null&&typeof C!="function"&&typeof C!="symbol"&&typeof C!="boolean"&&(u.type=C),f!=null||p!=null){if(!(C!=="submit"&&C!=="reset"||f!=null)){pw(u);return}p=p!=null?""+sa(p):"",f=f!=null?""+sa(f):p,Z||f===u.value||(u.value=f),u.defaultValue=f}v=v??O,v=typeof v!="function"&&typeof v!="symbol"&&!!v,u.checked=Z?u.checked:!!v,u.defaultChecked=!!v,F!=null&&typeof F!="function"&&typeof F!="symbol"&&typeof F!="boolean"&&(u.name=F),pw(u)}function xw(u,f,p){f==="number"&&qg(u.ownerDocument)===u||u.defaultValue===""+p||(u.defaultValue=""+p)}function Td(u,f,p,v){if(u=u.options,f){f={};for(var O=0;O"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Sw=!1;if(sl)try{var Xf={};Object.defineProperty(Xf,"passive",{get:function(){Sw=!0}}),window.addEventListener("test",Xf,Xf),window.removeEventListener("test",Xf,Xf)}catch{Sw=!1}var ic=null,kw=null,Hg=null;function W7(){if(Hg)return Hg;var u,f=kw,p=f.length,v,O="value"in ic?ic.value:ic.textContent,C=O.length;for(u=0;u=Zf),J7=" ",eC=!1;function tC(u,f){switch(u){case"keyup":return qK.indexOf(f.keyCode)!==-1;case"keydown":return f.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function nC(u){return u=u.detail,typeof u=="object"&&"data"in u?u.data:null}var Md=!1;function HK(u,f){switch(u){case"compositionend":return nC(f);case"keypress":return f.which!==32?null:(eC=!0,J7);case"textInput":return u=f.data,u===J7&&eC?null:u;default:return null}}function QK(u,f){if(Md)return u==="compositionend"||!Tw&&tC(u,f)?(u=W7(),Hg=kw=ic=null,Md=!1,u):null;switch(u){case"paste":return null;case"keypress":if(!(f.ctrlKey||f.altKey||f.metaKey)||f.ctrlKey&&f.altKey){if(f.char&&1=f)return{node:p,offset:f-u};u=v}e:{for(;p;){if(p.nextSibling){p=p.nextSibling;break e}p=p.parentNode}p=void 0}p=uC(p)}}function hC(u,f){return u&&f?u===f?!0:u&&u.nodeType===3?!1:f&&f.nodeType===3?hC(u,f.parentNode):"contains"in u?u.contains(f):u.compareDocumentPosition?!!(u.compareDocumentPosition(f)&16):!1:!1}function fC(u){u=u!=null&&u.ownerDocument!=null&&u.ownerDocument.defaultView!=null?u.ownerDocument.defaultView:window;for(var f=qg(u.document);f instanceof u.HTMLIFrameElement;){try{var p=typeof f.contentWindow.location.href=="string"}catch{p=!1}if(p)u=f.contentWindow;else break;f=qg(u.document)}return f}function Aw(u){var f=u&&u.nodeName&&u.nodeName.toLowerCase();return f&&(f==="input"&&(u.type==="text"||u.type==="search"||u.type==="tel"||u.type==="url"||u.type==="password")||f==="textarea"||u.contentEditable==="true")}var ZK=sl&&"documentMode"in document&&11>=document.documentMode,Rd=null,Mw=null,nm=null,Rw=!1;function mC(u,f,p){var v=p.window===p?p.document:p.nodeType===9?p:p.ownerDocument;Rw||Rd==null||Rd!==qg(v)||(v=Rd,"selectionStart"in v&&Aw(v)?v={start:v.selectionStart,end:v.selectionEnd}:(v=(v.ownerDocument&&v.ownerDocument.defaultView||window).getSelection(),v={anchorNode:v.anchorNode,anchorOffset:v.anchorOffset,focusNode:v.focusNode,focusOffset:v.focusOffset}),nm&&tm(nm,v)||(nm=v,v=zx(Mw,"onSelect"),0>=F,O-=F,lo=1<<32-Pt(f)+O|p<Jt?(bn=yt,yt=null):bn=yt.sibling;var Un=ke(pe,yt,be[Jt],Ae);if(Un===null){yt===null&&(yt=bn);break}u&&yt&&Un.alternate===null&&f(pe,yt),fe=C(Un,fe,Jt),Vn===null?Ct=Un:Vn.sibling=Un,Vn=Un,yt=bn}if(Jt===be.length)return p(pe,yt),On&&al(pe,Jt),Ct;if(yt===null){for(;JtJt?(bn=yt,yt=null):bn=yt.sibling;var Cc=ke(pe,yt,Un.value,Ae);if(Cc===null){yt===null&&(yt=bn);break}u&&yt&&Cc.alternate===null&&f(pe,yt),fe=C(Cc,fe,Jt),Vn===null?Ct=Cc:Vn.sibling=Cc,Vn=Cc,yt=bn}if(Un.done)return p(pe,yt),On&&al(pe,Jt),Ct;if(yt===null){for(;!Un.done;Jt++,Un=be.next())Un=Re(pe,Un.value,Ae),Un!==null&&(fe=C(Un,fe,Jt),Vn===null?Ct=Un:Vn.sibling=Un,Vn=Un);return On&&al(pe,Jt),Ct}for(yt=v(yt);!Un.done;Jt++,Un=be.next())Un=Ce(yt,pe,Jt,Un.value,Ae),Un!==null&&(u&&Un.alternate!==null&&yt.delete(Un.key===null?Jt:Un.key),fe=C(Un,fe,Jt),Vn===null?Ct=Un:Vn.sibling=Un,Vn=Un);return u&&yt.forEach(function(vJ){return f(pe,vJ)}),On&&al(pe,Jt),Ct}function rr(pe,fe,be,Ae){if(typeof be=="object"&&be!==null&&be.type===w&&be.key===null&&(be=be.props.children),typeof be=="object"&&be!==null){switch(be.$$typeof){case x:e:{for(var Ct=be.key;fe!==null;){if(fe.key===Ct){if(Ct=be.type,Ct===w){if(fe.tag===7){p(pe,fe.sibling),Ae=O(fe,be.props.children),Ae.return=pe,pe=Ae;break e}}else if(fe.elementType===Ct||typeof Ct=="object"&&Ct!==null&&Ct.$$typeof===D&&Tu(Ct)===fe.type){p(pe,fe.sibling),Ae=O(fe,be.props),lm(Ae,be),Ae.return=pe,pe=Ae;break e}p(pe,fe);break}else f(pe,fe);fe=fe.sibling}be.type===w?(Ae=ku(be.props.children,pe.mode,Ae,be.key),Ae.return=pe,pe=Ae):(Ae=Jg(be.type,be.key,be.props,null,pe.mode,Ae),lm(Ae,be),Ae.return=pe,pe=Ae)}return F(pe);case y:e:{for(Ct=be.key;fe!==null;){if(fe.key===Ct)if(fe.tag===4&&fe.stateNode.containerInfo===be.containerInfo&&fe.stateNode.implementation===be.implementation){p(pe,fe.sibling),Ae=O(fe,be.children||[]),Ae.return=pe,pe=Ae;break e}else{p(pe,fe);break}else f(pe,fe);fe=fe.sibling}Ae=Fw(be,pe.mode,Ae),Ae.return=pe,pe=Ae}return F(pe);case D:return be=Tu(be),rr(pe,fe,be,Ae)}if(V(be))return ut(pe,fe,be,Ae);if(W(be)){if(Ct=W(be),typeof Ct!="function")throw Error(r(150));return be=Ct.call(be),Dt(pe,fe,be,Ae)}if(typeof be.then=="function")return rr(pe,fe,ax(be),Ae);if(be.$$typeof===N)return rr(pe,fe,nx(pe,be),Ae);ox(pe,be)}return typeof be=="string"&&be!==""||typeof be=="number"||typeof be=="bigint"?(be=""+be,fe!==null&&fe.tag===6?(p(pe,fe.sibling),Ae=O(fe,be),Ae.return=pe,pe=Ae):(p(pe,fe),Ae=Bw(be,pe.mode,Ae),Ae.return=pe,pe=Ae),F(pe)):p(pe,fe)}return function(pe,fe,be,Ae){try{om=0;var Ct=rr(pe,fe,be,Ae);return Qd=null,Ct}catch(yt){if(yt===Hd||yt===sx)throw yt;var Vn=Di(29,yt,null,pe.mode);return Vn.lanes=Ae,Vn.return=pe,Vn}finally{}}}var _u=IC(!0),LC=IC(!1),uc=!1;function Zw(u){u.updateQueue={baseState:u.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Jw(u,f){u=u.updateQueue,f.updateQueue===u&&(f.updateQueue={baseState:u.baseState,firstBaseUpdate:u.firstBaseUpdate,lastBaseUpdate:u.lastBaseUpdate,shared:u.shared,callbacks:null})}function dc(u){return{lane:u,tag:0,payload:null,callback:null,next:null}}function hc(u,f,p){var v=u.updateQueue;if(v===null)return null;if(v=v.shared,(Gn&2)!==0){var O=v.pending;return O===null?f.next=f:(f.next=O.next,O.next=f),v.pending=f,f=Zg(u),wC(u,null,p),f}return Kg(u,v,f,p),Zg(u)}function cm(u,f,p){if(f=f.updateQueue,f!==null&&(f=f.shared,(p&4194048)!==0)){var v=f.lanes;v&=u.pendingLanes,p|=v,f.lanes=p,vs(u,p)}}function e2(u,f){var p=u.updateQueue,v=u.alternate;if(v!==null&&(v=v.updateQueue,p===v)){var O=null,C=null;if(p=p.firstBaseUpdate,p!==null){do{var F={lane:p.lane,tag:p.tag,payload:p.payload,callback:null,next:null};C===null?O=C=F:C=C.next=F,p=p.next}while(p!==null);C===null?O=C=f:C=C.next=f}else O=C=f;p={baseState:v.baseState,firstBaseUpdate:O,lastBaseUpdate:C,shared:v.shared,callbacks:v.callbacks},u.updateQueue=p;return}u=p.lastBaseUpdate,u===null?p.firstBaseUpdate=f:u.next=f,p.lastBaseUpdate=f}var t2=!1;function um(){if(t2){var u=$d;if(u!==null)throw u}}function dm(u,f,p,v){t2=!1;var O=u.updateQueue;uc=!1;var C=O.firstBaseUpdate,F=O.lastBaseUpdate,Z=O.shared.pending;if(Z!==null){O.shared.pending=null;var de=Z,Se=de.next;de.next=null,F===null?C=Se:F.next=Se,F=de;var Te=u.alternate;Te!==null&&(Te=Te.updateQueue,Z=Te.lastBaseUpdate,Z!==F&&(Z===null?Te.firstBaseUpdate=Se:Z.next=Se,Te.lastBaseUpdate=de))}if(C!==null){var Re=O.baseState;F=0,Te=Se=de=null,Z=C;do{var ke=Z.lane&-536870913,Ce=ke!==Z.lane;if(Ce?(yn&ke)===ke:(v&ke)===ke){ke!==0&&ke===qd&&(t2=!0),Te!==null&&(Te=Te.next={lane:0,tag:Z.tag,payload:Z.payload,callback:null,next:null});e:{var ut=u,Dt=Z;ke=f;var rr=p;switch(Dt.tag){case 1:if(ut=Dt.payload,typeof ut=="function"){Re=ut.call(rr,Re,ke);break e}Re=ut;break e;case 3:ut.flags=ut.flags&-65537|128;case 0:if(ut=Dt.payload,ke=typeof ut=="function"?ut.call(rr,Re,ke):ut,ke==null)break e;Re=m({},Re,ke);break e;case 2:uc=!0}}ke=Z.callback,ke!==null&&(u.flags|=64,Ce&&(u.flags|=8192),Ce=O.callbacks,Ce===null?O.callbacks=[ke]:Ce.push(ke))}else Ce={lane:ke,tag:Z.tag,payload:Z.payload,callback:Z.callback,next:null},Te===null?(Se=Te=Ce,de=Re):Te=Te.next=Ce,F|=ke;if(Z=Z.next,Z===null){if(Z=O.shared.pending,Z===null)break;Ce=Z,Z=Ce.next,Ce.next=null,O.lastBaseUpdate=Ce,O.shared.pending=null}}while(!0);Te===null&&(de=Re),O.baseState=de,O.firstBaseUpdate=Se,O.lastBaseUpdate=Te,C===null&&(O.shared.lanes=0),xc|=F,u.lanes=F,u.memoizedState=Re}}function BC(u,f){if(typeof u!="function")throw Error(r(191,u));u.call(f)}function FC(u,f){var p=u.callbacks;if(p!==null)for(u.callbacks=null,u=0;uC?C:8;var F=L.T,Z={};L.T=Z,b2(u,!1,f,p);try{var de=O(),Se=L.S;if(Se!==null&&Se(Z,de),de!==null&&typeof de=="object"&&typeof de.then=="function"){var Te=oZ(de,v);mm(u,f,Te,Bi(u))}else mm(u,f,v,Bi(u))}catch(Re){mm(u,f,{then:function(){},status:"rejected",reason:Re},Bi())}finally{$.p=C,F!==null&&Z.types!==null&&(F.types=Z.types),L.T=F}}function fZ(){}function v2(u,f,p,v){if(u.tag!==5)throw Error(r(476));var O=v8(u).queue;x8(u,O,f,K,p===null?fZ:function(){return y8(u),p(v)})}function v8(u){var f=u.memoizedState;if(f!==null)return f;f={memoizedState:K,baseState:K,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ul,lastRenderedState:K},next:null};var p={};return f.next={memoizedState:p,baseState:p,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ul,lastRenderedState:p},next:null},u.memoizedState=f,u=u.alternate,u!==null&&(u.memoizedState=f),f}function y8(u){var f=v8(u);f.next===null&&(f=u.alternate.memoizedState),mm(u,f.next.queue,{},Bi())}function y2(){return Ts(Am)}function b8(){return Vr().memoizedState}function w8(){return Vr().memoizedState}function mZ(u){for(var f=u.return;f!==null;){switch(f.tag){case 24:case 3:var p=Bi();u=dc(p);var v=hc(f,u,p);v!==null&&(mi(v,f,p),cm(v,f,p)),f={cache:Gw()},u.payload=f;return}f=f.return}}function pZ(u,f,p){var v=Bi();p={lane:v,revertLane:0,gesture:null,action:p,hasEagerState:!1,eagerState:null,next:null},xx(u)?k8(f,p):(p=Iw(u,f,p,v),p!==null&&(mi(p,u,v),O8(p,f,v)))}function S8(u,f,p){var v=Bi();mm(u,f,p,v)}function mm(u,f,p,v){var O={lane:v,revertLane:0,gesture:null,action:p,hasEagerState:!1,eagerState:null,next:null};if(xx(u))k8(f,O);else{var C=u.alternate;if(u.lanes===0&&(C===null||C.lanes===0)&&(C=f.lastRenderedReducer,C!==null))try{var F=f.lastRenderedState,Z=C(F,p);if(O.hasEagerState=!0,O.eagerState=Z,Ri(Z,F))return Kg(u,f,O,0),or===null&&Yg(),!1}catch{}finally{}if(p=Iw(u,f,O,v),p!==null)return mi(p,u,v),O8(p,f,v),!0}return!1}function b2(u,f,p,v){if(v={lane:2,revertLane:Z2(),gesture:null,action:v,hasEagerState:!1,eagerState:null,next:null},xx(u)){if(f)throw Error(r(479))}else f=Iw(u,p,v,2),f!==null&&mi(f,u,2)}function xx(u){var f=u.alternate;return u===Kt||f!==null&&f===Kt}function k8(u,f){Ud=ux=!0;var p=u.pending;p===null?f.next=f:(f.next=p.next,p.next=f),u.pending=f}function O8(u,f,p){if((p&4194048)!==0){var v=f.lanes;v&=u.pendingLanes,p|=v,f.lanes=p,vs(u,p)}}var pm={readContext:Ts,use:fx,useCallback:Br,useContext:Br,useEffect:Br,useImperativeHandle:Br,useLayoutEffect:Br,useInsertionEffect:Br,useMemo:Br,useReducer:Br,useRef:Br,useState:Br,useDebugValue:Br,useDeferredValue:Br,useTransition:Br,useSyncExternalStore:Br,useId:Br,useHostTransitionStatus:Br,useFormState:Br,useActionState:Br,useOptimistic:Br,useMemoCache:Br,useCacheRefresh:Br};pm.useEffectEvent=Br;var j8={readContext:Ts,use:fx,useCallback:function(u,f){return Ks().memoizedState=[u,f===void 0?null:f],u},useContext:Ts,useEffect:l8,useImperativeHandle:function(u,f,p){p=p!=null?p.concat([u]):null,px(4194308,4,h8.bind(null,f,u),p)},useLayoutEffect:function(u,f){return px(4194308,4,u,f)},useInsertionEffect:function(u,f){px(4,2,u,f)},useMemo:function(u,f){var p=Ks();f=f===void 0?null:f;var v=u();if(Au){dn(!0);try{u()}finally{dn(!1)}}return p.memoizedState=[v,f],v},useReducer:function(u,f,p){var v=Ks();if(p!==void 0){var O=p(f);if(Au){dn(!0);try{p(f)}finally{dn(!1)}}}else O=f;return v.memoizedState=v.baseState=O,u={pending:null,lanes:0,dispatch:null,lastRenderedReducer:u,lastRenderedState:O},v.queue=u,u=u.dispatch=pZ.bind(null,Kt,u),[v.memoizedState,u]},useRef:function(u){var f=Ks();return u={current:u},f.memoizedState=u},useState:function(u){u=f2(u);var f=u.queue,p=S8.bind(null,Kt,f);return f.dispatch=p,[u.memoizedState,p]},useDebugValue:g2,useDeferredValue:function(u,f){var p=Ks();return x2(p,u,f)},useTransition:function(){var u=f2(!1);return u=x8.bind(null,Kt,u.queue,!0,!1),Ks().memoizedState=u,[!1,u]},useSyncExternalStore:function(u,f,p){var v=Kt,O=Ks();if(On){if(p===void 0)throw Error(r(407));p=p()}else{if(p=f(),or===null)throw Error(r(349));(yn&127)!==0||UC(v,f,p)}O.memoizedState=p;var C={value:p,getSnapshot:f};return O.queue=C,l8(GC.bind(null,v,C,u),[u]),v.flags|=2048,Gd(9,{destroy:void 0},WC.bind(null,v,C,p,f),null),p},useId:function(){var u=Ks(),f=or.identifierPrefix;if(On){var p=co,v=lo;p=(v&~(1<<32-Pt(v)-1)).toString(32)+p,f="_"+f+"R_"+p,p=dx++,0<\/script>",C=C.removeChild(C.firstChild);break;case"select":C=typeof v.is=="string"?F.createElement("select",{is:v.is}):F.createElement("select"),v.multiple?C.multiple=!0:v.size&&(C.size=v.size);break;default:C=typeof v.is=="string"?F.createElement(O,{is:v.is}):F.createElement(O)}}C[Mr]=f,C[Rr]=v;e:for(F=f.child;F!==null;){if(F.tag===5||F.tag===6)C.appendChild(F.stateNode);else if(F.tag!==4&&F.tag!==27&&F.child!==null){F.child.return=F,F=F.child;continue}if(F===f)break e;for(;F.sibling===null;){if(F.return===null||F.return===f)break e;F=F.return}F.sibling.return=F.return,F=F.sibling}f.stateNode=C;e:switch(_s(C,O,v),O){case"button":case"input":case"select":case"textarea":v=!!v.autoFocus;break e;case"img":v=!0;break e;default:v=!1}v&&hl(f)}}return vr(f),D2(f,f.type,u===null?null:u.memoizedProps,f.pendingProps,p),null;case 6:if(u&&f.stateNode!=null)u.memoizedProps!==v&&hl(f);else{if(typeof v!="string"&&f.stateNode===null)throw Error(r(166));if(u=ne.current,Bd(f)){if(u=f.stateNode,p=f.memoizedProps,v=null,O=Cs,O!==null)switch(O.tag){case 27:case 5:v=O.memoizedProps}u[Mr]=f,u=!!(u.nodeValue===p||v!==null&&v.suppressHydrationWarning===!0||QT(u.nodeValue,p)),u||lc(f,!0)}else u=Ix(u).createTextNode(v),u[Mr]=f,f.stateNode=u}return vr(f),null;case 31:if(p=f.memoizedState,u===null||u.memoizedState!==null){if(v=Bd(f),p!==null){if(u===null){if(!v)throw Error(r(318));if(u=f.memoizedState,u=u!==null?u.dehydrated:null,!u)throw Error(r(557));u[Mr]=f}else Ou(),(f.flags&128)===0&&(f.memoizedState=null),f.flags|=4;vr(f),u=!1}else p=Qw(),u!==null&&u.memoizedState!==null&&(u.memoizedState.hydrationErrors=p),u=!0;if(!u)return f.flags&256?(zi(f),f):(zi(f),null);if((f.flags&128)!==0)throw Error(r(558))}return vr(f),null;case 13:if(v=f.memoizedState,u===null||u.memoizedState!==null&&u.memoizedState.dehydrated!==null){if(O=Bd(f),v!==null&&v.dehydrated!==null){if(u===null){if(!O)throw Error(r(318));if(O=f.memoizedState,O=O!==null?O.dehydrated:null,!O)throw Error(r(317));O[Mr]=f}else Ou(),(f.flags&128)===0&&(f.memoizedState=null),f.flags|=4;vr(f),O=!1}else O=Qw(),u!==null&&u.memoizedState!==null&&(u.memoizedState.hydrationErrors=O),O=!0;if(!O)return f.flags&256?(zi(f),f):(zi(f),null)}return zi(f),(f.flags&128)!==0?(f.lanes=p,f):(p=v!==null,u=u!==null&&u.memoizedState!==null,p&&(v=f.child,O=null,v.alternate!==null&&v.alternate.memoizedState!==null&&v.alternate.memoizedState.cachePool!==null&&(O=v.alternate.memoizedState.cachePool.pool),C=null,v.memoizedState!==null&&v.memoizedState.cachePool!==null&&(C=v.memoizedState.cachePool.pool),C!==O&&(v.flags|=2048)),p!==u&&p&&(f.child.flags|=8192),Sx(f,f.updateQueue),vr(f),null);case 4:return re(),u===null&&n4(f.stateNode.containerInfo),vr(f),null;case 10:return ll(f.type),vr(f),null;case 19:if(X(Qr),v=f.memoizedState,v===null)return vr(f),null;if(O=(f.flags&128)!==0,C=v.rendering,C===null)if(O)xm(v,!1);else{if(Fr!==0||u!==null&&(u.flags&128)!==0)for(u=f.child;u!==null;){if(C=cx(u),C!==null){for(f.flags|=128,xm(v,!1),u=C.updateQueue,f.updateQueue=u,Sx(f,u),f.subtreeFlags=0,u=p,p=f.child;p!==null;)SC(p,u),p=p.sibling;return z(Qr,Qr.current&1|2),On&&al(f,v.treeForkCount),f.child}u=u.sibling}v.tail!==null&&Mt()>Cx&&(f.flags|=128,O=!0,xm(v,!1),f.lanes=4194304)}else{if(!O)if(u=cx(C),u!==null){if(f.flags|=128,O=!0,u=u.updateQueue,f.updateQueue=u,Sx(f,u),xm(v,!0),v.tail===null&&v.tailMode==="hidden"&&!C.alternate&&!On)return vr(f),null}else 2*Mt()-v.renderingStartTime>Cx&&p!==536870912&&(f.flags|=128,O=!0,xm(v,!1),f.lanes=4194304);v.isBackwards?(C.sibling=f.child,f.child=C):(u=v.last,u!==null?u.sibling=C:f.child=C,v.last=C)}return v.tail!==null?(u=v.tail,v.rendering=u,v.tail=u.sibling,v.renderingStartTime=Mt(),u.sibling=null,p=Qr.current,z(Qr,O?p&1|2:p&1),On&&al(f,v.treeForkCount),u):(vr(f),null);case 22:case 23:return zi(f),r2(),v=f.memoizedState!==null,u!==null?u.memoizedState!==null!==v&&(f.flags|=8192):v&&(f.flags|=8192),v?(p&536870912)!==0&&(f.flags&128)===0&&(vr(f),f.subtreeFlags&6&&(f.flags|=8192)):vr(f),p=f.updateQueue,p!==null&&Sx(f,p.retryQueue),p=null,u!==null&&u.memoizedState!==null&&u.memoizedState.cachePool!==null&&(p=u.memoizedState.cachePool.pool),v=null,f.memoizedState!==null&&f.memoizedState.cachePool!==null&&(v=f.memoizedState.cachePool.pool),v!==p&&(f.flags|=2048),u!==null&&X(Cu),null;case 24:return p=null,u!==null&&(p=u.memoizedState.cache),f.memoizedState.cache!==p&&(f.flags|=2048),ll(Zr),vr(f),null;case 25:return null;case 30:return null}throw Error(r(156,f.tag))}function bZ(u,f){switch($w(f),f.tag){case 1:return u=f.flags,u&65536?(f.flags=u&-65537|128,f):null;case 3:return ll(Zr),re(),u=f.flags,(u&65536)!==0&&(u&128)===0?(f.flags=u&-65537|128,f):null;case 26:case 27:case 5:return _e(f),null;case 31:if(f.memoizedState!==null){if(zi(f),f.alternate===null)throw Error(r(340));Ou()}return u=f.flags,u&65536?(f.flags=u&-65537|128,f):null;case 13:if(zi(f),u=f.memoizedState,u!==null&&u.dehydrated!==null){if(f.alternate===null)throw Error(r(340));Ou()}return u=f.flags,u&65536?(f.flags=u&-65537|128,f):null;case 19:return X(Qr),null;case 4:return re(),null;case 10:return ll(f.type),null;case 22:case 23:return zi(f),r2(),u!==null&&X(Cu),u=f.flags,u&65536?(f.flags=u&-65537|128,f):null;case 24:return ll(Zr),null;case 25:return null;default:return null}}function X8(u,f){switch($w(f),f.tag){case 3:ll(Zr),re();break;case 26:case 27:case 5:_e(f);break;case 4:re();break;case 31:f.memoizedState!==null&&zi(f);break;case 13:zi(f);break;case 19:X(Qr);break;case 10:ll(f.type);break;case 22:case 23:zi(f),r2(),u!==null&&X(Cu);break;case 24:ll(Zr)}}function vm(u,f){try{var p=f.updateQueue,v=p!==null?p.lastEffect:null;if(v!==null){var O=v.next;p=O;do{if((p.tag&u)===u){v=void 0;var C=p.create,F=p.inst;v=C(),F.destroy=v}p=p.next}while(p!==O)}}catch(Z){Zn(f,f.return,Z)}}function pc(u,f,p){try{var v=f.updateQueue,O=v!==null?v.lastEffect:null;if(O!==null){var C=O.next;v=C;do{if((v.tag&u)===u){var F=v.inst,Z=F.destroy;if(Z!==void 0){F.destroy=void 0,O=f;var de=p,Se=Z;try{Se()}catch(Te){Zn(O,de,Te)}}}v=v.next}while(v!==C)}}catch(Te){Zn(f,f.return,Te)}}function Y8(u){var f=u.updateQueue;if(f!==null){var p=u.stateNode;try{FC(f,p)}catch(v){Zn(u,u.return,v)}}}function K8(u,f,p){p.props=Mu(u.type,u.memoizedProps),p.state=u.memoizedState;try{p.componentWillUnmount()}catch(v){Zn(u,f,v)}}function ym(u,f){try{var p=u.ref;if(p!==null){switch(u.tag){case 26:case 27:case 5:var v=u.stateNode;break;case 30:v=u.stateNode;break;default:v=u.stateNode}typeof p=="function"?u.refCleanup=p(v):p.current=v}}catch(O){Zn(u,f,O)}}function uo(u,f){var p=u.ref,v=u.refCleanup;if(p!==null)if(typeof v=="function")try{v()}catch(O){Zn(u,f,O)}finally{u.refCleanup=null,u=u.alternate,u!=null&&(u.refCleanup=null)}else if(typeof p=="function")try{p(null)}catch(O){Zn(u,f,O)}else p.current=null}function Z8(u){var f=u.type,p=u.memoizedProps,v=u.stateNode;try{e:switch(f){case"button":case"input":case"select":case"textarea":p.autoFocus&&v.focus();break e;case"img":p.src?v.src=p.src:p.srcSet&&(v.srcset=p.srcSet)}}catch(O){Zn(u,u.return,O)}}function P2(u,f,p){try{var v=u.stateNode;$Z(v,u.type,p,f),v[Rr]=f}catch(O){Zn(u,u.return,O)}}function J8(u){return u.tag===5||u.tag===3||u.tag===26||u.tag===27&&Sc(u.type)||u.tag===4}function z2(u){e:for(;;){for(;u.sibling===null;){if(u.return===null||J8(u.return))return null;u=u.return}for(u.sibling.return=u.return,u=u.sibling;u.tag!==5&&u.tag!==6&&u.tag!==18;){if(u.tag===27&&Sc(u.type)||u.flags&2||u.child===null||u.tag===4)continue e;u.child.return=u,u=u.child}if(!(u.flags&2))return u.stateNode}}function I2(u,f,p){var v=u.tag;if(v===5||v===6)u=u.stateNode,f?(p.nodeType===9?p.body:p.nodeName==="HTML"?p.ownerDocument.body:p).insertBefore(u,f):(f=p.nodeType===9?p.body:p.nodeName==="HTML"?p.ownerDocument.body:p,f.appendChild(u),p=p._reactRootContainer,p!=null||f.onclick!==null||(f.onclick=rl));else if(v!==4&&(v===27&&Sc(u.type)&&(p=u.stateNode,f=null),u=u.child,u!==null))for(I2(u,f,p),u=u.sibling;u!==null;)I2(u,f,p),u=u.sibling}function kx(u,f,p){var v=u.tag;if(v===5||v===6)u=u.stateNode,f?p.insertBefore(u,f):p.appendChild(u);else if(v!==4&&(v===27&&Sc(u.type)&&(p=u.stateNode),u=u.child,u!==null))for(kx(u,f,p),u=u.sibling;u!==null;)kx(u,f,p),u=u.sibling}function eT(u){var f=u.stateNode,p=u.memoizedProps;try{for(var v=u.type,O=f.attributes;O.length;)f.removeAttributeNode(O[0]);_s(f,v,p),f[Mr]=u,f[Rr]=p}catch(C){Zn(u,u.return,C)}}var fl=!1,ts=!1,L2=!1,tT=typeof WeakSet=="function"?WeakSet:Set,ys=null;function wZ(u,f){if(u=u.containerInfo,i4=Qx,u=fC(u),Aw(u)){if("selectionStart"in u)var p={start:u.selectionStart,end:u.selectionEnd};else e:{p=(p=u.ownerDocument)&&p.defaultView||window;var v=p.getSelection&&p.getSelection();if(v&&v.rangeCount!==0){p=v.anchorNode;var O=v.anchorOffset,C=v.focusNode;v=v.focusOffset;try{p.nodeType,C.nodeType}catch{p=null;break e}var F=0,Z=-1,de=-1,Se=0,Te=0,Re=u,ke=null;t:for(;;){for(var Ce;Re!==p||O!==0&&Re.nodeType!==3||(Z=F+O),Re!==C||v!==0&&Re.nodeType!==3||(de=F+v),Re.nodeType===3&&(F+=Re.nodeValue.length),(Ce=Re.firstChild)!==null;)ke=Re,Re=Ce;for(;;){if(Re===u)break t;if(ke===p&&++Se===O&&(Z=F),ke===C&&++Te===v&&(de=F),(Ce=Re.nextSibling)!==null)break;Re=ke,ke=Re.parentNode}Re=Ce}p=Z===-1||de===-1?null:{start:Z,end:de}}else p=null}p=p||{start:0,end:0}}else p=null;for(a4={focusedElem:u,selectionRange:p},Qx=!1,ys=f;ys!==null;)if(f=ys,u=f.child,(f.subtreeFlags&1028)!==0&&u!==null)u.return=f,ys=u;else for(;ys!==null;){switch(f=ys,C=f.alternate,u=f.flags,f.tag){case 0:if((u&4)!==0&&(u=f.updateQueue,u=u!==null?u.events:null,u!==null))for(p=0;p title"))),_s(C,v,p),C[Mr]=u,Kr(C),v=C;break e;case"link":var F=o9("link","href",O).get(v+(p.href||""));if(F){for(var Z=0;Zrr&&(F=rr,rr=Dt,Dt=F);var pe=dC(Z,Dt),fe=dC(Z,rr);if(pe&&fe&&(Ce.rangeCount!==1||Ce.anchorNode!==pe.node||Ce.anchorOffset!==pe.offset||Ce.focusNode!==fe.node||Ce.focusOffset!==fe.offset)){var be=Re.createRange();be.setStart(pe.node,pe.offset),Ce.removeAllRanges(),Dt>rr?(Ce.addRange(be),Ce.extend(fe.node,fe.offset)):(be.setEnd(fe.node,fe.offset),Ce.addRange(be))}}}}for(Re=[],Ce=Z;Ce=Ce.parentNode;)Ce.nodeType===1&&Re.push({element:Ce,left:Ce.scrollLeft,top:Ce.scrollTop});for(typeof Z.focus=="function"&&Z.focus(),Z=0;Zp?32:p,L.T=null,p=V2,V2=null;var C=yc,F=vl;if(ls=0,Jd=yc=null,vl=0,(Gn&6)!==0)throw Error(r(331));var Z=Gn;if(Gn|=4,hT(C.current),cT(C,C.current,F,p),Gn=Z,jm(0,!1),ot&&typeof ot.onPostCommitFiberRoot=="function")try{ot.onPostCommitFiberRoot(We,C)}catch{}return!0}finally{$.p=O,L.T=v,_T(u,f)}}function MT(u,f,p){f=oa(p,f),f=O2(u.stateNode,f,2),u=hc(u,f,2),u!==null&&(fr(u,2),ho(u))}function Zn(u,f,p){if(u.tag===3)MT(u,u,p);else for(;f!==null;){if(f.tag===3){MT(f,u,p);break}else if(f.tag===1){var v=f.stateNode;if(typeof f.type.getDerivedStateFromError=="function"||typeof v.componentDidCatch=="function"&&(vc===null||!vc.has(v))){u=oa(p,u),p=R8(2),v=hc(f,p,2),v!==null&&(D8(p,v,f,u),fr(v,2),ho(v));break}}f=f.return}}function X2(u,f,p){var v=u.pingCache;if(v===null){v=u.pingCache=new OZ;var O=new Set;v.set(f,O)}else O=v.get(f),O===void 0&&(O=new Set,v.set(f,O));O.has(p)||(q2=!0,O.add(p),u=EZ.bind(null,u,f,p),f.then(u,u))}function EZ(u,f,p){var v=u.pingCache;v!==null&&v.delete(f),u.pingedLanes|=u.suspendedLanes&p,u.warmLanes&=~p,or===u&&(yn&p)===p&&(Fr===4||Fr===3&&(yn&62914560)===yn&&300>Mt()-Nx?(Gn&2)===0&&eh(u,0):$2|=p,Zd===yn&&(Zd=0)),ho(u)}function RT(u,f){f===0&&(f=vn()),u=Su(u,f),u!==null&&(fr(u,f),ho(u))}function _Z(u){var f=u.memoizedState,p=0;f!==null&&(p=f.retryLane),RT(u,p)}function AZ(u,f){var p=0;switch(u.tag){case 31:case 13:var v=u.stateNode,O=u.memoizedState;O!==null&&(p=O.retryLane);break;case 19:v=u.stateNode;break;case 22:v=u.stateNode._retryCache;break;default:throw Error(r(314))}v!==null&&v.delete(f),RT(u,p)}function MZ(u,f){return vt(u,f)}var Rx=null,nh=null,Y2=!1,Dx=!1,K2=!1,wc=0;function ho(u){u!==nh&&u.next===null&&(nh===null?Rx=nh=u:nh=nh.next=u),Dx=!0,Y2||(Y2=!0,DZ())}function jm(u,f){if(!K2&&Dx){K2=!0;do for(var p=!1,v=Rx;v!==null;){if(u!==0){var O=v.pendingLanes;if(O===0)var C=0;else{var F=v.suspendedLanes,Z=v.pingedLanes;C=(1<<31-Pt(42|u)+1)-1,C&=O&~(F&~Z),C=C&201326741?C&201326741|1:C?C|2:0}C!==0&&(p=!0,IT(v,C))}else C=yn,C=ve(v,v===or?C:0,v.cancelPendingCommit!==null||v.timeoutHandle!==-1),(C&3)===0||He(v,C)||(p=!0,IT(v,C));v=v.next}while(p);K2=!1}}function RZ(){DT()}function DT(){Dx=Y2=!1;var u=0;wc!==0&&QZ()&&(u=wc);for(var f=Mt(),p=null,v=Rx;v!==null;){var O=v.next,C=PT(v,f);C===0?(v.next=null,p===null?Rx=O:p.next=O,O===null&&(nh=p)):(p=v,(u!==0||(C&3)!==0)&&(Dx=!0)),v=O}ls!==0&&ls!==5||jm(u),wc!==0&&(wc=0)}function PT(u,f){for(var p=u.suspendedLanes,v=u.pingedLanes,O=u.expirationTimes,C=u.pendingLanes&-62914561;0Z)break;var Te=de.transferSize,Re=de.initiatorType;Te&&VT(Re)&&(de=de.responseEnd,F+=Te*(de"u"?null:document;function r9(u,f,p){var v=rh;if(v&&typeof f=="string"&&f){var O=ia(f);O='link[rel="'+u+'"][href="'+O+'"]',typeof p=="string"&&(O+='[crossorigin="'+p+'"]'),n9.has(O)||(n9.add(O),u={rel:u,crossOrigin:p,href:f},v.querySelector(O)===null&&(f=v.createElement("link"),_s(f,"link",u),Kr(f),v.head.appendChild(f)))}}function JZ(u){yl.D(u),r9("dns-prefetch",u,null)}function eJ(u,f){yl.C(u,f),r9("preconnect",u,f)}function tJ(u,f,p){yl.L(u,f,p);var v=rh;if(v&&u&&f){var O='link[rel="preload"][as="'+ia(f)+'"]';f==="image"&&p&&p.imageSrcSet?(O+='[imagesrcset="'+ia(p.imageSrcSet)+'"]',typeof p.imageSizes=="string"&&(O+='[imagesizes="'+ia(p.imageSizes)+'"]')):O+='[href="'+ia(u)+'"]';var C=O;switch(f){case"style":C=sh(u);break;case"script":C=ih(u)}fa.has(C)||(u=m({rel:"preload",href:f==="image"&&p&&p.imageSrcSet?void 0:u,as:f},p),fa.set(C,u),v.querySelector(O)!==null||f==="style"&&v.querySelector(Em(C))||f==="script"&&v.querySelector(_m(C))||(f=v.createElement("link"),_s(f,"link",u),Kr(f),v.head.appendChild(f)))}}function nJ(u,f){yl.m(u,f);var p=rh;if(p&&u){var v=f&&typeof f.as=="string"?f.as:"script",O='link[rel="modulepreload"][as="'+ia(v)+'"][href="'+ia(u)+'"]',C=O;switch(v){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":C=ih(u)}if(!fa.has(C)&&(u=m({rel:"modulepreload",href:u},f),fa.set(C,u),p.querySelector(O)===null)){switch(v){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(p.querySelector(_m(C)))return}v=p.createElement("link"),_s(v,"link",u),Kr(v),p.head.appendChild(v)}}}function rJ(u,f,p){yl.S(u,f,p);var v=rh;if(v&&u){var O=sc(v).hoistableStyles,C=sh(u);f=f||"default";var F=O.get(C);if(!F){var Z={loading:0,preload:null};if(F=v.querySelector(Em(C)))Z.loading=5;else{u=m({rel:"stylesheet",href:u,"data-precedence":f},p),(p=fa.get(C))&&f4(u,p);var de=F=v.createElement("link");Kr(de),_s(de,"link",u),de._p=new Promise(function(Se,Te){de.onload=Se,de.onerror=Te}),de.addEventListener("load",function(){Z.loading|=1}),de.addEventListener("error",function(){Z.loading|=2}),Z.loading|=4,Bx(F,f,v)}F={type:"stylesheet",instance:F,count:1,state:Z},O.set(C,F)}}}function sJ(u,f){yl.X(u,f);var p=rh;if(p&&u){var v=sc(p).hoistableScripts,O=ih(u),C=v.get(O);C||(C=p.querySelector(_m(O)),C||(u=m({src:u,async:!0},f),(f=fa.get(O))&&m4(u,f),C=p.createElement("script"),Kr(C),_s(C,"link",u),p.head.appendChild(C)),C={type:"script",instance:C,count:1,state:null},v.set(O,C))}}function iJ(u,f){yl.M(u,f);var p=rh;if(p&&u){var v=sc(p).hoistableScripts,O=ih(u),C=v.get(O);C||(C=p.querySelector(_m(O)),C||(u=m({src:u,async:!0,type:"module"},f),(f=fa.get(O))&&m4(u,f),C=p.createElement("script"),Kr(C),_s(C,"link",u),p.head.appendChild(C)),C={type:"script",instance:C,count:1,state:null},v.set(O,C))}}function s9(u,f,p,v){var O=(O=ne.current)?Lx(O):null;if(!O)throw Error(r(446));switch(u){case"meta":case"title":return null;case"style":return typeof p.precedence=="string"&&typeof p.href=="string"?(f=sh(p.href),p=sc(O).hoistableStyles,v=p.get(f),v||(v={type:"style",instance:null,count:0,state:null},p.set(f,v)),v):{type:"void",instance:null,count:0,state:null};case"link":if(p.rel==="stylesheet"&&typeof p.href=="string"&&typeof p.precedence=="string"){u=sh(p.href);var C=sc(O).hoistableStyles,F=C.get(u);if(F||(O=O.ownerDocument||O,F={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},C.set(u,F),(C=O.querySelector(Em(u)))&&!C._p&&(F.instance=C,F.state.loading=5),fa.has(u)||(p={rel:"preload",as:"style",href:p.href,crossOrigin:p.crossOrigin,integrity:p.integrity,media:p.media,hrefLang:p.hrefLang,referrerPolicy:p.referrerPolicy},fa.set(u,p),C||aJ(O,u,p,F.state))),f&&v===null)throw Error(r(528,""));return F}if(f&&v!==null)throw Error(r(529,""));return null;case"script":return f=p.async,p=p.src,typeof p=="string"&&f&&typeof f!="function"&&typeof f!="symbol"?(f=ih(p),p=sc(O).hoistableScripts,v=p.get(f),v||(v={type:"script",instance:null,count:0,state:null},p.set(f,v)),v):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,u))}}function sh(u){return'href="'+ia(u)+'"'}function Em(u){return'link[rel="stylesheet"]['+u+"]"}function i9(u){return m({},u,{"data-precedence":u.precedence,precedence:null})}function aJ(u,f,p,v){u.querySelector('link[rel="preload"][as="style"]['+f+"]")?v.loading=1:(f=u.createElement("link"),v.preload=f,f.addEventListener("load",function(){return v.loading|=1}),f.addEventListener("error",function(){return v.loading|=2}),_s(f,"link",p),Kr(f),u.head.appendChild(f))}function ih(u){return'[src="'+ia(u)+'"]'}function _m(u){return"script[async]"+u}function a9(u,f,p){if(f.count++,f.instance===null)switch(f.type){case"style":var v=u.querySelector('style[data-href~="'+ia(p.href)+'"]');if(v)return f.instance=v,Kr(v),v;var O=m({},p,{"data-href":p.href,"data-precedence":p.precedence,href:null,precedence:null});return v=(u.ownerDocument||u).createElement("style"),Kr(v),_s(v,"style",O),Bx(v,p.precedence,u),f.instance=v;case"stylesheet":O=sh(p.href);var C=u.querySelector(Em(O));if(C)return f.state.loading|=4,f.instance=C,Kr(C),C;v=i9(p),(O=fa.get(O))&&f4(v,O),C=(u.ownerDocument||u).createElement("link"),Kr(C);var F=C;return F._p=new Promise(function(Z,de){F.onload=Z,F.onerror=de}),_s(C,"link",v),f.state.loading|=4,Bx(C,p.precedence,u),f.instance=C;case"script":return C=ih(p.src),(O=u.querySelector(_m(C)))?(f.instance=O,Kr(O),O):(v=p,(O=fa.get(C))&&(v=m({},p),m4(v,O)),u=u.ownerDocument||u,O=u.createElement("script"),Kr(O),_s(O,"link",v),u.head.appendChild(O),f.instance=O);case"void":return null;default:throw Error(r(443,f.type))}else f.type==="stylesheet"&&(f.state.loading&4)===0&&(v=f.instance,f.state.loading|=4,Bx(v,p.precedence,u));return f.instance}function Bx(u,f,p){for(var v=p.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),O=v.length?v[v.length-1]:null,C=O,F=0;F title"):null)}function oJ(u,f,p){if(p===1||f.itemProp!=null)return!1;switch(u){case"meta":case"title":return!0;case"style":if(typeof f.precedence!="string"||typeof f.href!="string"||f.href==="")break;return!0;case"link":if(typeof f.rel!="string"||typeof f.href!="string"||f.href===""||f.onLoad||f.onError)break;switch(f.rel){case"stylesheet":return u=f.disabled,typeof f.precedence=="string"&&u==null;default:return!0}case"script":if(f.async&&typeof f.async!="function"&&typeof f.async!="symbol"&&!f.onLoad&&!f.onError&&f.src&&typeof f.src=="string")return!0}return!1}function c9(u){return!(u.type==="stylesheet"&&(u.state.loading&3)===0)}function lJ(u,f,p,v){if(p.type==="stylesheet"&&(typeof v.media!="string"||matchMedia(v.media).matches!==!1)&&(p.state.loading&4)===0){if(p.instance===null){var O=sh(v.href),C=f.querySelector(Em(O));if(C){f=C._p,f!==null&&typeof f=="object"&&typeof f.then=="function"&&(u.count++,u=qx.bind(u),f.then(u,u)),p.state.loading|=4,p.instance=C,Kr(C);return}C=f.ownerDocument||f,v=i9(v),(O=fa.get(O))&&f4(v,O),C=C.createElement("link"),Kr(C);var F=C;F._p=new Promise(function(Z,de){F.onload=Z,F.onerror=de}),_s(C,"link",v),p.instance=C}u.stylesheets===null&&(u.stylesheets=new Map),u.stylesheets.set(p,f),(f=p.state.preload)&&(p.state.loading&3)===0&&(u.count++,p=qx.bind(u),f.addEventListener("load",p),f.addEventListener("error",p))}}var p4=0;function cJ(u,f){return u.stylesheets&&u.count===0&&Hx(u,u.stylesheets),0p4?50:800)+f);return u.unsuspend=p,function(){u.unsuspend=null,clearTimeout(v),clearTimeout(O)}}:null}function qx(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Hx(this,this.stylesheets);else if(this.unsuspend){var u=this.unsuspend;this.unsuspend=null,u()}}}var $x=null;function Hx(u,f){u.stylesheets=null,u.unsuspend!==null&&(u.count++,$x=new Map,f.forEach(uJ,u),$x=null,qx.call(u))}function uJ(u,f){if(!(f.state.loading&4)){var p=$x.get(u);if(p)var v=p.get(null);else{p=new Map,$x.set(u,p);for(var O=u.querySelectorAll("link[data-precedence],style[data-precedence]"),C=0;C"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),O4.exports=yte(),O4.exports}var wte=bte();function _I(t,e){return function(){return t.apply(e,arguments)}}const{toString:Ste}=Object.prototype,{getPrototypeOf:Bj}=Object,{iterator:Jy,toStringTag:AI}=Symbol,eb=(t=>e=>{const n=Ste.call(e);return t[n]||(t[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),no=t=>(t=t.toLowerCase(),e=>eb(e)===t),tb=t=>e=>typeof e===t,{isArray:yf}=Array,Xh=tb("undefined");function Bp(t){return t!==null&&!Xh(t)&&t.constructor!==null&&!Xh(t.constructor)&&ki(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const MI=no("ArrayBuffer");function kte(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&MI(t.buffer),e}const Ote=tb("string"),ki=tb("function"),RI=tb("number"),Fp=t=>t!==null&&typeof t=="object",jte=t=>t===!0||t===!1,iv=t=>{if(eb(t)!=="object")return!1;const e=Bj(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(AI in t)&&!(Jy in t)},Nte=t=>{if(!Fp(t)||Bp(t))return!1;try{return Object.keys(t).length===0&&Object.getPrototypeOf(t)===Object.prototype}catch{return!1}},Cte=no("Date"),Tte=no("File"),Ete=no("Blob"),_te=no("FileList"),Ate=t=>Fp(t)&&ki(t.pipe),Mte=t=>{let e;return t&&(typeof FormData=="function"&&t instanceof FormData||ki(t.append)&&((e=eb(t))==="formdata"||e==="object"&&ki(t.toString)&&t.toString()==="[object FormData]"))},Rte=no("URLSearchParams"),[Dte,Pte,zte,Ite]=["ReadableStream","Request","Response","Headers"].map(no),Lte=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function qp(t,e,{allOwnKeys:n=!1}={}){if(t===null||typeof t>"u")return;let r,s;if(typeof t!="object"&&(t=[t]),yf(t))for(r=0,s=t.length;r0;)if(s=n[r],e===s.toLowerCase())return s;return null}const Vu=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,PI=t=>!Xh(t)&&t!==Vu;function ck(){const{caseless:t,skipUndefined:e}=PI(this)&&this||{},n={},r=(s,i)=>{const a=t&&DI(n,i)||i;iv(n[a])&&iv(s)?n[a]=ck(n[a],s):iv(s)?n[a]=ck({},s):yf(s)?n[a]=s.slice():(!e||!Xh(s))&&(n[a]=s)};for(let s=0,i=arguments.length;s(qp(e,(s,i)=>{n&&ki(s)?t[i]=_I(s,n):t[i]=s},{allOwnKeys:r}),t),Fte=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),qte=(t,e,n,r)=>{t.prototype=Object.create(e.prototype,r),t.prototype.constructor=t,Object.defineProperty(t,"super",{value:e.prototype}),n&&Object.assign(t.prototype,n)},$te=(t,e,n,r)=>{let s,i,a;const l={};if(e=e||{},t==null)return e;do{for(s=Object.getOwnPropertyNames(t),i=s.length;i-- >0;)a=s[i],(!r||r(a,t,e))&&!l[a]&&(e[a]=t[a],l[a]=!0);t=n!==!1&&Bj(t)}while(t&&(!n||n(t,e))&&t!==Object.prototype);return e},Hte=(t,e,n)=>{t=String(t),(n===void 0||n>t.length)&&(n=t.length),n-=e.length;const r=t.indexOf(e,n);return r!==-1&&r===n},Qte=t=>{if(!t)return null;if(yf(t))return t;let e=t.length;if(!RI(e))return null;const n=new Array(e);for(;e-- >0;)n[e]=t[e];return n},Vte=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&Bj(Uint8Array)),Ute=(t,e)=>{const r=(t&&t[Jy]).call(t);let s;for(;(s=r.next())&&!s.done;){const i=s.value;e.call(t,i[0],i[1])}},Wte=(t,e)=>{let n;const r=[];for(;(n=t.exec(e))!==null;)r.push(n);return r},Gte=no("HTMLFormElement"),Xte=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),P9=(({hasOwnProperty:t})=>(e,n)=>t.call(e,n))(Object.prototype),Yte=no("RegExp"),zI=(t,e)=>{const n=Object.getOwnPropertyDescriptors(t),r={};qp(n,(s,i)=>{let a;(a=e(s,i,t))!==!1&&(r[i]=a||s)}),Object.defineProperties(t,r)},Kte=t=>{zI(t,(e,n)=>{if(ki(t)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=t[n];if(ki(r)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},Zte=(t,e)=>{const n={},r=s=>{s.forEach(i=>{n[i]=!0})};return yf(t)?r(t):r(String(t).split(e)),n},Jte=()=>{},ene=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e;function tne(t){return!!(t&&ki(t.append)&&t[AI]==="FormData"&&t[Jy])}const nne=t=>{const e=new Array(10),n=(r,s)=>{if(Fp(r)){if(e.indexOf(r)>=0)return;if(Bp(r))return r;if(!("toJSON"in r)){e[s]=r;const i=yf(r)?[]:{};return qp(r,(a,l)=>{const c=n(a,s+1);!Xh(c)&&(i[l]=c)}),e[s]=void 0,i}}return r};return n(t,0)},rne=no("AsyncFunction"),sne=t=>t&&(Fp(t)||ki(t))&&ki(t.then)&&ki(t.catch),II=((t,e)=>t?setImmediate:e?((n,r)=>(Vu.addEventListener("message",({source:s,data:i})=>{s===Vu&&i===n&&r.length&&r.shift()()},!1),s=>{r.push(s),Vu.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",ki(Vu.postMessage)),ine=typeof queueMicrotask<"u"?queueMicrotask.bind(Vu):typeof process<"u"&&process.nextTick||II,ane=t=>t!=null&&ki(t[Jy]),je={isArray:yf,isArrayBuffer:MI,isBuffer:Bp,isFormData:Mte,isArrayBufferView:kte,isString:Ote,isNumber:RI,isBoolean:jte,isObject:Fp,isPlainObject:iv,isEmptyObject:Nte,isReadableStream:Dte,isRequest:Pte,isResponse:zte,isHeaders:Ite,isUndefined:Xh,isDate:Cte,isFile:Tte,isBlob:Ete,isRegExp:Yte,isFunction:ki,isStream:Ate,isURLSearchParams:Rte,isTypedArray:Vte,isFileList:_te,forEach:qp,merge:ck,extend:Bte,trim:Lte,stripBOM:Fte,inherits:qte,toFlatObject:$te,kindOf:eb,kindOfTest:no,endsWith:Hte,toArray:Qte,forEachEntry:Ute,matchAll:Wte,isHTMLForm:Gte,hasOwnProperty:P9,hasOwnProp:P9,reduceDescriptors:zI,freezeMethods:Kte,toObjectSet:Zte,toCamelCase:Xte,noop:Jte,toFiniteNumber:ene,findKey:DI,global:Vu,isContextDefined:PI,isSpecCompliantForm:tne,toJSONObject:nne,isAsyncFn:rne,isThenable:sne,setImmediate:II,asap:ine,isIterable:ane};function Zt(t,e,n,r,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=t,this.name="AxiosError",e&&(this.code=e),n&&(this.config=n),r&&(this.request=r),s&&(this.response=s,this.status=s.status?s.status:null)}je.inherits(Zt,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:je.toJSONObject(this.config),code:this.code,status:this.status}}});const LI=Zt.prototype,BI={};["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(t=>{BI[t]={value:t}});Object.defineProperties(Zt,BI);Object.defineProperty(LI,"isAxiosError",{value:!0});Zt.from=(t,e,n,r,s,i)=>{const a=Object.create(LI);je.toFlatObject(t,a,function(h){return h!==Error.prototype},d=>d!=="isAxiosError");const l=t&&t.message?t.message:"Error",c=e==null&&t?t.code:e;return Zt.call(a,l,c,n,r,s),t&&a.cause==null&&Object.defineProperty(a,"cause",{value:t,configurable:!0}),a.name=t&&t.name||"Error",i&&Object.assign(a,i),a};const one=null;function uk(t){return je.isPlainObject(t)||je.isArray(t)}function FI(t){return je.endsWith(t,"[]")?t.slice(0,-2):t}function z9(t,e,n){return t?t.concat(e).map(function(s,i){return s=FI(s),!n&&i?"["+s+"]":s}).join(n?".":""):e}function lne(t){return je.isArray(t)&&!t.some(uk)}const cne=je.toFlatObject(je,{},null,function(e){return/^is[A-Z]/.test(e)});function nb(t,e,n){if(!je.isObject(t))throw new TypeError("target must be an object");e=e||new FormData,n=je.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(w,S){return!je.isUndefined(S[w])});const r=n.metaTokens,s=n.visitor||h,i=n.dots,a=n.indexes,c=(n.Blob||typeof Blob<"u"&&Blob)&&je.isSpecCompliantForm(e);if(!je.isFunction(s))throw new TypeError("visitor must be a function");function d(y){if(y===null)return"";if(je.isDate(y))return y.toISOString();if(je.isBoolean(y))return y.toString();if(!c&&je.isBlob(y))throw new Zt("Blob is not supported. Use a Buffer instead.");return je.isArrayBuffer(y)||je.isTypedArray(y)?c&&typeof Blob=="function"?new Blob([y]):Buffer.from(y):y}function h(y,w,S){let k=y;if(y&&!S&&typeof y=="object"){if(je.endsWith(w,"{}"))w=r?w:w.slice(0,-2),y=JSON.stringify(y);else if(je.isArray(y)&&lne(y)||(je.isFileList(y)||je.endsWith(w,"[]"))&&(k=je.toArray(y)))return w=FI(w),k.forEach(function(N,T){!(je.isUndefined(N)||N===null)&&e.append(a===!0?z9([w],T,i):a===null?w:w+"[]",d(N))}),!1}return uk(y)?!0:(e.append(z9(S,w,i),d(y)),!1)}const m=[],g=Object.assign(cne,{defaultVisitor:h,convertValue:d,isVisitable:uk});function x(y,w){if(!je.isUndefined(y)){if(m.indexOf(y)!==-1)throw Error("Circular reference detected in "+w.join("."));m.push(y),je.forEach(y,function(k,j){(!(je.isUndefined(k)||k===null)&&s.call(e,k,je.isString(j)?j.trim():j,w,g))===!0&&x(k,w?w.concat(j):[j])}),m.pop()}}if(!je.isObject(t))throw new TypeError("data must be an object");return x(t),e}function I9(t){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,function(r){return e[r]})}function Fj(t,e){this._pairs=[],t&&nb(t,this,e)}const qI=Fj.prototype;qI.append=function(e,n){this._pairs.push([e,n])};qI.toString=function(e){const n=e?function(r){return e.call(this,r,I9)}:I9;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function une(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function $I(t,e,n){if(!e)return t;const r=n&&n.encode||une;je.isFunction(n)&&(n={serialize:n});const s=n&&n.serialize;let i;if(s?i=s(e,n):i=je.isURLSearchParams(e)?e.toString():new Fj(e,n).toString(r),i){const a=t.indexOf("#");a!==-1&&(t=t.slice(0,a)),t+=(t.indexOf("?")===-1?"?":"&")+i}return t}class L9{constructor(){this.handlers=[]}use(e,n,r){return this.handlers.push({fulfilled:e,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){je.forEach(this.handlers,function(r){r!==null&&e(r)})}}const HI={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},dne=typeof URLSearchParams<"u"?URLSearchParams:Fj,hne=typeof FormData<"u"?FormData:null,fne=typeof Blob<"u"?Blob:null,mne={isBrowser:!0,classes:{URLSearchParams:dne,FormData:hne,Blob:fne},protocols:["http","https","file","blob","url","data"]},qj=typeof window<"u"&&typeof document<"u",dk=typeof navigator=="object"&&navigator||void 0,pne=qj&&(!dk||["ReactNative","NativeScript","NS"].indexOf(dk.product)<0),gne=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",xne=qj&&window.location.href||"http://localhost",vne=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:qj,hasStandardBrowserEnv:pne,hasStandardBrowserWebWorkerEnv:gne,navigator:dk,origin:xne},Symbol.toStringTag,{value:"Module"})),$s={...vne,...mne};function yne(t,e){return nb(t,new $s.classes.URLSearchParams,{visitor:function(n,r,s,i){return $s.isNode&&je.isBuffer(n)?(this.append(r,n.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)},...e})}function bne(t){return je.matchAll(/\w+|\[(\w*)]/g,t).map(e=>e[0]==="[]"?"":e[1]||e[0])}function wne(t){const e={},n=Object.keys(t);let r;const s=n.length;let i;for(r=0;r=n.length;return a=!a&&je.isArray(s)?s.length:a,c?(je.hasOwnProp(s,a)?s[a]=[s[a],r]:s[a]=r,!l):((!s[a]||!je.isObject(s[a]))&&(s[a]=[]),e(n,r,s[a],i)&&je.isArray(s[a])&&(s[a]=wne(s[a])),!l)}if(je.isFormData(t)&&je.isFunction(t.entries)){const n={};return je.forEachEntry(t,(r,s)=>{e(bne(r),s,n,0)}),n}return null}function Sne(t,e,n){if(je.isString(t))try{return(e||JSON.parse)(t),je.trim(t)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(t)}const $p={transitional:HI,adapter:["xhr","http","fetch"],transformRequest:[function(e,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,i=je.isObject(e);if(i&&je.isHTMLForm(e)&&(e=new FormData(e)),je.isFormData(e))return s?JSON.stringify(QI(e)):e;if(je.isArrayBuffer(e)||je.isBuffer(e)||je.isStream(e)||je.isFile(e)||je.isBlob(e)||je.isReadableStream(e))return e;if(je.isArrayBufferView(e))return e.buffer;if(je.isURLSearchParams(e))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let l;if(i){if(r.indexOf("application/x-www-form-urlencoded")>-1)return yne(e,this.formSerializer).toString();if((l=je.isFileList(e))||r.indexOf("multipart/form-data")>-1){const c=this.env&&this.env.FormData;return nb(l?{"files[]":e}:e,c&&new c,this.formSerializer)}}return i||s?(n.setContentType("application/json",!1),Sne(e)):e}],transformResponse:[function(e){const n=this.transitional||$p.transitional,r=n&&n.forcedJSONParsing,s=this.responseType==="json";if(je.isResponse(e)||je.isReadableStream(e))return e;if(e&&je.isString(e)&&(r&&!this.responseType||s)){const a=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(e,this.parseReviver)}catch(l){if(a)throw l.name==="SyntaxError"?Zt.from(l,Zt.ERR_BAD_RESPONSE,this,null,this.response):l}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:$s.classes.FormData,Blob:$s.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};je.forEach(["delete","get","head","post","put","patch"],t=>{$p.headers[t]={}});const kne=je.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"]),One=t=>{const e={};let n,r,s;return t&&t.split(` +`).forEach(function(a){s=a.indexOf(":"),n=a.substring(0,s).trim().toLowerCase(),r=a.substring(s+1).trim(),!(!n||e[n]&&kne[n])&&(n==="set-cookie"?e[n]?e[n].push(r):e[n]=[r]:e[n]=e[n]?e[n]+", "+r:r)}),e},B9=Symbol("internals");function Im(t){return t&&String(t).trim().toLowerCase()}function av(t){return t===!1||t==null?t:je.isArray(t)?t.map(av):String(t)}function jne(t){const e=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(t);)e[r[1]]=r[2];return e}const Nne=t=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function C4(t,e,n,r,s){if(je.isFunction(r))return r.call(this,e,n);if(s&&(e=n),!!je.isString(e)){if(je.isString(r))return e.indexOf(r)!==-1;if(je.isRegExp(r))return r.test(e)}}function Cne(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,n,r)=>n.toUpperCase()+r)}function Tne(t,e){const n=je.toCamelCase(" "+e);["get","set","has"].forEach(r=>{Object.defineProperty(t,r+n,{value:function(s,i,a){return this[r].call(this,e,s,i,a)},configurable:!0})})}let Oi=class{constructor(e){e&&this.set(e)}set(e,n,r){const s=this;function i(l,c,d){const h=Im(c);if(!h)throw new Error("header name must be a non-empty string");const m=je.findKey(s,h);(!m||s[m]===void 0||d===!0||d===void 0&&s[m]!==!1)&&(s[m||c]=av(l))}const a=(l,c)=>je.forEach(l,(d,h)=>i(d,h,c));if(je.isPlainObject(e)||e instanceof this.constructor)a(e,n);else if(je.isString(e)&&(e=e.trim())&&!Nne(e))a(One(e),n);else if(je.isObject(e)&&je.isIterable(e)){let l={},c,d;for(const h of e){if(!je.isArray(h))throw TypeError("Object iterator must return a key-value pair");l[d=h[0]]=(c=l[d])?je.isArray(c)?[...c,h[1]]:[c,h[1]]:h[1]}a(l,n)}else e!=null&&i(n,e,r);return this}get(e,n){if(e=Im(e),e){const r=je.findKey(this,e);if(r){const s=this[r];if(!n)return s;if(n===!0)return jne(s);if(je.isFunction(n))return n.call(this,s,r);if(je.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,n){if(e=Im(e),e){const r=je.findKey(this,e);return!!(r&&this[r]!==void 0&&(!n||C4(this,this[r],r,n)))}return!1}delete(e,n){const r=this;let s=!1;function i(a){if(a=Im(a),a){const l=je.findKey(r,a);l&&(!n||C4(r,r[l],l,n))&&(delete r[l],s=!0)}}return je.isArray(e)?e.forEach(i):i(e),s}clear(e){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const i=n[r];(!e||C4(this,this[i],i,e,!0))&&(delete this[i],s=!0)}return s}normalize(e){const n=this,r={};return je.forEach(this,(s,i)=>{const a=je.findKey(r,i);if(a){n[a]=av(s),delete n[i];return}const l=e?Cne(i):String(i).trim();l!==i&&delete n[i],n[l]=av(s),r[l]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const n=Object.create(null);return je.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=e&&je.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,n])=>e+": "+n).join(` +`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...n){const r=new this(e);return n.forEach(s=>r.set(s)),r}static accessor(e){const r=(this[B9]=this[B9]={accessors:{}}).accessors,s=this.prototype;function i(a){const l=Im(a);r[l]||(Tne(s,a),r[l]=!0)}return je.isArray(e)?e.forEach(i):i(e),this}};Oi.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);je.reduceDescriptors(Oi.prototype,({value:t},e)=>{let n=e[0].toUpperCase()+e.slice(1);return{get:()=>t,set(r){this[n]=r}}});je.freezeMethods(Oi);function T4(t,e){const n=this||$p,r=e||n,s=Oi.from(r.headers);let i=r.data;return je.forEach(t,function(l){i=l.call(n,i,s.normalize(),e?e.status:void 0)}),s.normalize(),i}function VI(t){return!!(t&&t.__CANCEL__)}function bf(t,e,n){Zt.call(this,t??"canceled",Zt.ERR_CANCELED,e,n),this.name="CanceledError"}je.inherits(bf,Zt,{__CANCEL__:!0});function UI(t,e,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?t(n):e(new Zt("Request failed with status code "+n.status,[Zt.ERR_BAD_REQUEST,Zt.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function Ene(t){const e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return e&&e[1]||""}function _ne(t,e){t=t||10;const n=new Array(t),r=new Array(t);let s=0,i=0,a;return e=e!==void 0?e:1e3,function(c){const d=Date.now(),h=r[i];a||(a=d),n[s]=c,r[s]=d;let m=i,g=0;for(;m!==s;)g+=n[m++],m=m%t;if(s=(s+1)%t,s===i&&(i=(i+1)%t),d-a{n=h,s=null,i&&(clearTimeout(i),i=null),t(...d)};return[(...d)=>{const h=Date.now(),m=h-n;m>=r?a(d,h):(s=d,i||(i=setTimeout(()=>{i=null,a(s)},r-m)))},()=>s&&a(s)]}const qv=(t,e,n=3)=>{let r=0;const s=_ne(50,250);return Ane(i=>{const a=i.loaded,l=i.lengthComputable?i.total:void 0,c=a-r,d=s(c),h=a<=l;r=a;const m={loaded:a,total:l,progress:l?a/l:void 0,bytes:c,rate:d||void 0,estimated:d&&l&&h?(l-a)/d:void 0,event:i,lengthComputable:l!=null,[e?"download":"upload"]:!0};t(m)},n)},F9=(t,e)=>{const n=t!=null;return[r=>e[0]({lengthComputable:n,total:t,loaded:r}),e[1]]},q9=t=>(...e)=>je.asap(()=>t(...e)),Mne=$s.hasStandardBrowserEnv?((t,e)=>n=>(n=new URL(n,$s.origin),t.protocol===n.protocol&&t.host===n.host&&(e||t.port===n.port)))(new URL($s.origin),$s.navigator&&/(msie|trident)/i.test($s.navigator.userAgent)):()=>!0,Rne=$s.hasStandardBrowserEnv?{write(t,e,n,r,s,i,a){if(typeof document>"u")return;const l=[`${t}=${encodeURIComponent(e)}`];je.isNumber(n)&&l.push(`expires=${new Date(n).toUTCString()}`),je.isString(r)&&l.push(`path=${r}`),je.isString(s)&&l.push(`domain=${s}`),i===!0&&l.push("secure"),je.isString(a)&&l.push(`SameSite=${a}`),document.cookie=l.join("; ")},read(t){if(typeof document>"u")return null;const e=document.cookie.match(new RegExp("(?:^|; )"+t+"=([^;]*)"));return e?decodeURIComponent(e[1]):null},remove(t){this.write(t,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function Dne(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}function Pne(t,e){return e?t.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):t}function WI(t,e,n){let r=!Dne(e);return t&&(r||n==!1)?Pne(t,e):e}const $9=t=>t instanceof Oi?{...t}:t;function ad(t,e){e=e||{};const n={};function r(d,h,m,g){return je.isPlainObject(d)&&je.isPlainObject(h)?je.merge.call({caseless:g},d,h):je.isPlainObject(h)?je.merge({},h):je.isArray(h)?h.slice():h}function s(d,h,m,g){if(je.isUndefined(h)){if(!je.isUndefined(d))return r(void 0,d,m,g)}else return r(d,h,m,g)}function i(d,h){if(!je.isUndefined(h))return r(void 0,h)}function a(d,h){if(je.isUndefined(h)){if(!je.isUndefined(d))return r(void 0,d)}else return r(void 0,h)}function l(d,h,m){if(m in e)return r(d,h);if(m in t)return r(void 0,d)}const c={url:i,method:i,data:i,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:l,headers:(d,h,m)=>s($9(d),$9(h),m,!0)};return je.forEach(Object.keys({...t,...e}),function(h){const m=c[h]||s,g=m(t[h],e[h],h);je.isUndefined(g)&&m!==l||(n[h]=g)}),n}const GI=t=>{const e=ad({},t);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:i,headers:a,auth:l}=e;if(e.headers=a=Oi.from(a),e.url=$I(WI(e.baseURL,e.url,e.allowAbsoluteUrls),t.params,t.paramsSerializer),l&&a.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):""))),je.isFormData(n)){if($s.hasStandardBrowserEnv||$s.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if(je.isFunction(n.getHeaders)){const c=n.getHeaders(),d=["content-type","content-length"];Object.entries(c).forEach(([h,m])=>{d.includes(h.toLowerCase())&&a.set(h,m)})}}if($s.hasStandardBrowserEnv&&(r&&je.isFunction(r)&&(r=r(e)),r||r!==!1&&Mne(e.url))){const c=s&&i&&Rne.read(i);c&&a.set(s,c)}return e},zne=typeof XMLHttpRequest<"u",Ine=zne&&function(t){return new Promise(function(n,r){const s=GI(t);let i=s.data;const a=Oi.from(s.headers).normalize();let{responseType:l,onUploadProgress:c,onDownloadProgress:d}=s,h,m,g,x,y;function w(){x&&x(),y&&y(),s.cancelToken&&s.cancelToken.unsubscribe(h),s.signal&&s.signal.removeEventListener("abort",h)}let S=new XMLHttpRequest;S.open(s.method.toUpperCase(),s.url,!0),S.timeout=s.timeout;function k(){if(!S)return;const N=Oi.from("getAllResponseHeaders"in S&&S.getAllResponseHeaders()),E={data:!l||l==="text"||l==="json"?S.responseText:S.response,status:S.status,statusText:S.statusText,headers:N,config:t,request:S};UI(function(A){n(A),w()},function(A){r(A),w()},E),S=null}"onloadend"in S?S.onloadend=k:S.onreadystatechange=function(){!S||S.readyState!==4||S.status===0&&!(S.responseURL&&S.responseURL.indexOf("file:")===0)||setTimeout(k)},S.onabort=function(){S&&(r(new Zt("Request aborted",Zt.ECONNABORTED,t,S)),S=null)},S.onerror=function(T){const E=T&&T.message?T.message:"Network Error",_=new Zt(E,Zt.ERR_NETWORK,t,S);_.event=T||null,r(_),S=null},S.ontimeout=function(){let T=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const E=s.transitional||HI;s.timeoutErrorMessage&&(T=s.timeoutErrorMessage),r(new Zt(T,E.clarifyTimeoutError?Zt.ETIMEDOUT:Zt.ECONNABORTED,t,S)),S=null},i===void 0&&a.setContentType(null),"setRequestHeader"in S&&je.forEach(a.toJSON(),function(T,E){S.setRequestHeader(E,T)}),je.isUndefined(s.withCredentials)||(S.withCredentials=!!s.withCredentials),l&&l!=="json"&&(S.responseType=s.responseType),d&&([g,y]=qv(d,!0),S.addEventListener("progress",g)),c&&S.upload&&([m,x]=qv(c),S.upload.addEventListener("progress",m),S.upload.addEventListener("loadend",x)),(s.cancelToken||s.signal)&&(h=N=>{S&&(r(!N||N.type?new bf(null,t,S):N),S.abort(),S=null)},s.cancelToken&&s.cancelToken.subscribe(h),s.signal&&(s.signal.aborted?h():s.signal.addEventListener("abort",h)));const j=Ene(s.url);if(j&&$s.protocols.indexOf(j)===-1){r(new Zt("Unsupported protocol "+j+":",Zt.ERR_BAD_REQUEST,t));return}S.send(i||null)})},Lne=(t,e)=>{const{length:n}=t=t?t.filter(Boolean):[];if(e||n){let r=new AbortController,s;const i=function(d){if(!s){s=!0,l();const h=d instanceof Error?d:this.reason;r.abort(h instanceof Zt?h:new bf(h instanceof Error?h.message:h))}};let a=e&&setTimeout(()=>{a=null,i(new Zt(`timeout ${e} of ms exceeded`,Zt.ETIMEDOUT))},e);const l=()=>{t&&(a&&clearTimeout(a),a=null,t.forEach(d=>{d.unsubscribe?d.unsubscribe(i):d.removeEventListener("abort",i)}),t=null)};t.forEach(d=>d.addEventListener("abort",i));const{signal:c}=r;return c.unsubscribe=()=>je.asap(l),c}},Bne=function*(t,e){let n=t.byteLength;if(n{const s=Fne(t,e);let i=0,a,l=c=>{a||(a=!0,r&&r(c))};return new ReadableStream({async pull(c){try{const{done:d,value:h}=await s.next();if(d){l(),c.close();return}let m=h.byteLength;if(n){let g=i+=m;n(g)}c.enqueue(new Uint8Array(h))}catch(d){throw l(d),d}},cancel(c){return l(c),s.return()}},{highWaterMark:2})},Q9=64*1024,{isFunction:e1}=je,$ne=(({Request:t,Response:e})=>({Request:t,Response:e}))(je.global),{ReadableStream:V9,TextEncoder:U9}=je.global,W9=(t,...e)=>{try{return!!t(...e)}catch{return!1}},Hne=t=>{t=je.merge.call({skipUndefined:!0},$ne,t);const{fetch:e,Request:n,Response:r}=t,s=e?e1(e):typeof fetch=="function",i=e1(n),a=e1(r);if(!s)return!1;const l=s&&e1(V9),c=s&&(typeof U9=="function"?(y=>w=>y.encode(w))(new U9):async y=>new Uint8Array(await new n(y).arrayBuffer())),d=i&&l&&W9(()=>{let y=!1;const w=new n($s.origin,{body:new V9,method:"POST",get duplex(){return y=!0,"half"}}).headers.has("Content-Type");return y&&!w}),h=a&&l&&W9(()=>je.isReadableStream(new r("").body)),m={stream:h&&(y=>y.body)};s&&["text","arrayBuffer","blob","formData","stream"].forEach(y=>{!m[y]&&(m[y]=(w,S)=>{let k=w&&w[y];if(k)return k.call(w);throw new Zt(`Response type '${y}' is not supported`,Zt.ERR_NOT_SUPPORT,S)})});const g=async y=>{if(y==null)return 0;if(je.isBlob(y))return y.size;if(je.isSpecCompliantForm(y))return(await new n($s.origin,{method:"POST",body:y}).arrayBuffer()).byteLength;if(je.isArrayBufferView(y)||je.isArrayBuffer(y))return y.byteLength;if(je.isURLSearchParams(y)&&(y=y+""),je.isString(y))return(await c(y)).byteLength},x=async(y,w)=>{const S=je.toFiniteNumber(y.getContentLength());return S??g(w)};return async y=>{let{url:w,method:S,data:k,signal:j,cancelToken:N,timeout:T,onDownloadProgress:E,onUploadProgress:_,responseType:A,headers:D,withCredentials:q="same-origin",fetchOptions:B}=GI(y),H=e||fetch;A=A?(A+"").toLowerCase():"text";let W=Lne([j,N&&N.toAbortSignal()],T),ee=null;const I=W&&W.unsubscribe&&(()=>{W.unsubscribe()});let V;try{if(_&&d&&S!=="get"&&S!=="head"&&(V=await x(D,k))!==0){let ie=new n(w,{method:"POST",body:k,duplex:"half"}),X;if(je.isFormData(k)&&(X=ie.headers.get("content-type"))&&D.setContentType(X),ie.body){const[z,U]=F9(V,qv(q9(_)));k=H9(ie.body,Q9,z,U)}}je.isString(q)||(q=q?"include":"omit");const L=i&&"credentials"in n.prototype,$={...B,signal:W,method:S.toUpperCase(),headers:D.normalize().toJSON(),body:k,duplex:"half",credentials:L?q:void 0};ee=i&&new n(w,$);let K=await(i?H(ee,B):H(w,$));const Y=h&&(A==="stream"||A==="response");if(h&&(E||Y&&I)){const ie={};["status","statusText","headers"].forEach(te=>{ie[te]=K[te]});const X=je.toFiniteNumber(K.headers.get("content-length")),[z,U]=E&&F9(X,qv(q9(E),!0))||[];K=new r(H9(K.body,Q9,z,()=>{U&&U(),I&&I()}),ie)}A=A||"text";let R=await m[je.findKey(m,A)||"text"](K,y);return!Y&&I&&I(),await new Promise((ie,X)=>{UI(ie,X,{data:R,headers:Oi.from(K.headers),status:K.status,statusText:K.statusText,config:y,request:ee})})}catch(L){throw I&&I(),L&&L.name==="TypeError"&&/Load failed|fetch/i.test(L.message)?Object.assign(new Zt("Network Error",Zt.ERR_NETWORK,y,ee),{cause:L.cause||L}):Zt.from(L,L&&L.code,y,ee)}}},Qne=new Map,XI=t=>{let e=t&&t.env||{};const{fetch:n,Request:r,Response:s}=e,i=[r,s,n];let a=i.length,l=a,c,d,h=Qne;for(;l--;)c=i[l],d=h.get(c),d===void 0&&h.set(c,d=l?new Map:Hne(e)),h=d;return d};XI();const $j={http:one,xhr:Ine,fetch:{get:XI}};je.forEach($j,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{value:e})}catch{}Object.defineProperty(t,"adapterName",{value:e})}});const G9=t=>`- ${t}`,Vne=t=>je.isFunction(t)||t===null||t===!1;function Une(t,e){t=je.isArray(t)?t:[t];const{length:n}=t;let r,s;const i={};for(let a=0;a`adapter ${c} `+(d===!1?"is not supported by the environment":"is not available in the build"));let l=n?a.length>1?`since : +`+a.map(G9).join(` +`):" "+G9(a[0]):"as no adapter specified";throw new Zt("There is no suitable adapter to dispatch the request "+l,"ERR_NOT_SUPPORT")}return s}const YI={getAdapter:Une,adapters:$j};function E4(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new bf(null,t)}function X9(t){return E4(t),t.headers=Oi.from(t.headers),t.data=T4.call(t,t.transformRequest),["post","put","patch"].indexOf(t.method)!==-1&&t.headers.setContentType("application/x-www-form-urlencoded",!1),YI.getAdapter(t.adapter||$p.adapter,t)(t).then(function(r){return E4(t),r.data=T4.call(t,t.transformResponse,r),r.headers=Oi.from(r.headers),r},function(r){return VI(r)||(E4(t),r&&r.response&&(r.response.data=T4.call(t,t.transformResponse,r.response),r.response.headers=Oi.from(r.response.headers))),Promise.reject(r)})}const KI="1.13.2",rb={};["object","boolean","number","function","string","symbol"].forEach((t,e)=>{rb[t]=function(r){return typeof r===t||"a"+(e<1?"n ":" ")+t}});const Y9={};rb.transitional=function(e,n,r){function s(i,a){return"[Axios v"+KI+"] Transitional option '"+i+"'"+a+(r?". "+r:"")}return(i,a,l)=>{if(e===!1)throw new Zt(s(a," has been removed"+(n?" in "+n:"")),Zt.ERR_DEPRECATED);return n&&!Y9[a]&&(Y9[a]=!0,console.warn(s(a," has been deprecated since v"+n+" and will be removed in the near future"))),e?e(i,a,l):!0}};rb.spelling=function(e){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${e}`),!0)};function Wne(t,e,n){if(typeof t!="object")throw new Zt("options must be an object",Zt.ERR_BAD_OPTION_VALUE);const r=Object.keys(t);let s=r.length;for(;s-- >0;){const i=r[s],a=e[i];if(a){const l=t[i],c=l===void 0||a(l,i,t);if(c!==!0)throw new Zt("option "+i+" must be "+c,Zt.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new Zt("Unknown option "+i,Zt.ERR_BAD_OPTION)}}const ov={assertOptions:Wne,validators:rb},fo=ov.validators;let nd=class{constructor(e){this.defaults=e||{},this.interceptors={request:new L9,response:new L9}}async request(e,n){try{return await this._request(e,n)}catch(r){if(r instanceof Error){let s={};Error.captureStackTrace?Error.captureStackTrace(s):s=new Error;const i=s.stack?s.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(e,n){typeof e=="string"?(n=n||{},n.url=e):n=e||{},n=ad(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:i}=n;r!==void 0&&ov.assertOptions(r,{silentJSONParsing:fo.transitional(fo.boolean),forcedJSONParsing:fo.transitional(fo.boolean),clarifyTimeoutError:fo.transitional(fo.boolean)},!1),s!=null&&(je.isFunction(s)?n.paramsSerializer={serialize:s}:ov.assertOptions(s,{encode:fo.function,serialize:fo.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),ov.assertOptions(n,{baseUrl:fo.spelling("baseURL"),withXsrfToken:fo.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let a=i&&je.merge(i.common,i[n.method]);i&&je.forEach(["delete","get","head","post","put","patch","common"],y=>{delete i[y]}),n.headers=Oi.concat(a,i);const l=[];let c=!0;this.interceptors.request.forEach(function(w){typeof w.runWhen=="function"&&w.runWhen(n)===!1||(c=c&&w.synchronous,l.unshift(w.fulfilled,w.rejected))});const d=[];this.interceptors.response.forEach(function(w){d.push(w.fulfilled,w.rejected)});let h,m=0,g;if(!c){const y=[X9.bind(this),void 0];for(y.unshift(...l),y.push(...d),g=y.length,h=Promise.resolve(n);m{if(!r._listeners)return;let i=r._listeners.length;for(;i-- >0;)r._listeners[i](s);r._listeners=null}),this.promise.then=s=>{let i;const a=new Promise(l=>{r.subscribe(l),i=l}).then(s);return a.cancel=function(){r.unsubscribe(i)},a},e(function(i,a,l){r.reason||(r.reason=new bf(i,a,l),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const n=this._listeners.indexOf(e);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const e=new AbortController,n=r=>{e.abort(r)};return this.subscribe(n),e.signal.unsubscribe=()=>this.unsubscribe(n),e.signal}static source(){let e;return{token:new ZI(function(s){e=s}),cancel:e}}};function Xne(t){return function(n){return t.apply(null,n)}}function Yne(t){return je.isObject(t)&&t.isAxiosError===!0}const hk={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,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(hk).forEach(([t,e])=>{hk[e]=t});function JI(t){const e=new nd(t),n=_I(nd.prototype.request,e);return je.extend(n,nd.prototype,e,{allOwnKeys:!0}),je.extend(n,e,null,{allOwnKeys:!0}),n.create=function(s){return JI(ad(t,s))},n}const Cr=JI($p);Cr.Axios=nd;Cr.CanceledError=bf;Cr.CancelToken=Gne;Cr.isCancel=VI;Cr.VERSION=KI;Cr.toFormData=nb;Cr.AxiosError=Zt;Cr.Cancel=Cr.CanceledError;Cr.all=function(e){return Promise.all(e)};Cr.spread=Xne;Cr.isAxiosError=Yne;Cr.mergeConfig=ad;Cr.AxiosHeaders=Oi;Cr.formToJSON=t=>QI(je.isHTMLForm(t)?new FormData(t):t);Cr.getAdapter=YI.getAdapter;Cr.HttpStatusCode=hk;Cr.default=Cr;const{Axios:fPe,AxiosError:mPe,CanceledError:pPe,isCancel:gPe,CancelToken:xPe,VERSION:vPe,all:yPe,Cancel:bPe,isAxiosError:wPe,spread:SPe,toFormData:kPe,AxiosHeaders:OPe,HttpStatusCode:jPe,formToJSON:NPe,getAdapter:CPe,mergeConfig:TPe}=Cr,Kne=(t,e)=>{const n=new Array(t.length+e.length);for(let r=0;r({classGroupId:t,validator:e}),eL=(t=new Map,e=null,n)=>({nextPart:t,validators:e,classGroupId:n}),$v="-",K9=[],Jne="arbitrary..",ere=t=>{const e=nre(t),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=t;return{getClassGroupId:a=>{if(a.startsWith("[")&&a.endsWith("]"))return tre(a);const l=a.split($v),c=l[0]===""&&l.length>1?1:0;return tL(l,c,e)},getConflictingClassGroupIds:(a,l)=>{if(l){const c=r[a],d=n[a];return c?d?Kne(d,c):c:d||K9}return n[a]||K9}}},tL=(t,e,n)=>{if(t.length-e===0)return n.classGroupId;const s=t[e],i=n.nextPart.get(s);if(i){const d=tL(t,e+1,i);if(d)return d}const a=n.validators;if(a===null)return;const l=e===0?t.join($v):t.slice(e).join($v),c=a.length;for(let d=0;dt.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const e=t.slice(1,-1),n=e.indexOf(":"),r=e.slice(0,n);return r?Jne+r:void 0})(),nre=t=>{const{theme:e,classGroups:n}=t;return rre(n,e)},rre=(t,e)=>{const n=eL();for(const r in t){const s=t[r];Hj(s,n,r,e)}return n},Hj=(t,e,n,r)=>{const s=t.length;for(let i=0;i{if(typeof t=="string"){ire(t,e,n);return}if(typeof t=="function"){are(t,e,n,r);return}ore(t,e,n,r)},ire=(t,e,n)=>{const r=t===""?e:nL(e,t);r.classGroupId=n},are=(t,e,n,r)=>{if(lre(t)){Hj(t(r),e,n,r);return}e.validators===null&&(e.validators=[]),e.validators.push(Zne(n,t))},ore=(t,e,n,r)=>{const s=Object.entries(t),i=s.length;for(let a=0;a{let n=t;const r=e.split($v),s=r.length;for(let i=0;i"isThemeGetter"in t&&t.isThemeGetter===!0,cre=t=>{if(t<1)return{get:()=>{},set:()=>{}};let e=0,n=Object.create(null),r=Object.create(null);const s=(i,a)=>{n[i]=a,e++,e>t&&(e=0,r=n,n=Object.create(null))};return{get(i){let a=n[i];if(a!==void 0)return a;if((a=r[i])!==void 0)return s(i,a),a},set(i,a){i in n?n[i]=a:s(i,a)}}},fk="!",Z9=":",ure=[],J9=(t,e,n,r,s)=>({modifiers:t,hasImportantModifier:e,baseClassName:n,maybePostfixModifierPosition:r,isExternal:s}),dre=t=>{const{prefix:e,experimentalParseClassName:n}=t;let r=s=>{const i=[];let a=0,l=0,c=0,d;const h=s.length;for(let w=0;wc?d-c:void 0;return J9(i,x,g,y)};if(e){const s=e+Z9,i=r;r=a=>a.startsWith(s)?i(a.slice(s.length)):J9(ure,!1,a,void 0,!0)}if(n){const s=r;r=i=>n({className:i,parseClassName:s})}return r},hre=t=>{const e=new Map;return t.orderSensitiveModifiers.forEach((n,r)=>{e.set(n,1e6+r)}),n=>{const r=[];let s=[];for(let i=0;i0&&(s.sort(),r.push(...s),s=[]),r.push(a)):s.push(a)}return s.length>0&&(s.sort(),r.push(...s)),r}},fre=t=>({cache:cre(t.cacheSize),parseClassName:dre(t),sortModifiers:hre(t),...ere(t)}),mre=/\s+/,pre=(t,e)=>{const{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:s,sortModifiers:i}=e,a=[],l=t.trim().split(mre);let c="";for(let d=l.length-1;d>=0;d-=1){const h=l[d],{isExternal:m,modifiers:g,hasImportantModifier:x,baseClassName:y,maybePostfixModifierPosition:w}=n(h);if(m){c=h+(c.length>0?" "+c:c);continue}let S=!!w,k=r(S?y.substring(0,w):y);if(!k){if(!S){c=h+(c.length>0?" "+c:c);continue}if(k=r(y),!k){c=h+(c.length>0?" "+c:c);continue}S=!1}const j=g.length===0?"":g.length===1?g[0]:i(g).join(":"),N=x?j+fk:j,T=N+k;if(a.indexOf(T)>-1)continue;a.push(T);const E=s(k,S);for(let _=0;_0?" "+c:c)}return c},gre=(...t)=>{let e=0,n,r,s="";for(;e{if(typeof t=="string")return t;let e,n="";for(let r=0;r{let n,r,s,i;const a=c=>{const d=e.reduce((h,m)=>m(h),t());return n=fre(d),r=n.cache.get,s=n.cache.set,i=l,l(c)},l=c=>{const d=r(c);if(d)return d;const h=pre(c,n);return s(c,h),h};return i=a,(...c)=>i(gre(...c))},vre=[],cs=t=>{const e=n=>n[t]||vre;return e.isThemeGetter=!0,e},sL=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,iL=/^\((?:(\w[\w-]*):)?(.+)\)$/i,yre=/^\d+\/\d+$/,bre=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,wre=/\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$/,Sre=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,kre=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Ore=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,oh=t=>yre.test(t),sn=t=>!!t&&!Number.isNaN(Number(t)),Tc=t=>!!t&&Number.isInteger(Number(t)),_4=t=>t.endsWith("%")&&sn(t.slice(0,-1)),bl=t=>bre.test(t),jre=()=>!0,Nre=t=>wre.test(t)&&!Sre.test(t),aL=()=>!1,Cre=t=>kre.test(t),Tre=t=>Ore.test(t),Ere=t=>!ft(t)&&!mt(t),_re=t=>wf(t,cL,aL),ft=t=>sL.test(t),Pu=t=>wf(t,uL,Nre),A4=t=>wf(t,Pre,sn),eE=t=>wf(t,oL,aL),Are=t=>wf(t,lL,Tre),t1=t=>wf(t,dL,Cre),mt=t=>iL.test(t),Lm=t=>Sf(t,uL),Mre=t=>Sf(t,zre),tE=t=>Sf(t,oL),Rre=t=>Sf(t,cL),Dre=t=>Sf(t,lL),n1=t=>Sf(t,dL,!0),wf=(t,e,n)=>{const r=sL.exec(t);return r?r[1]?e(r[1]):n(r[2]):!1},Sf=(t,e,n=!1)=>{const r=iL.exec(t);return r?r[1]?e(r[1]):n:!1},oL=t=>t==="position"||t==="percentage",lL=t=>t==="image"||t==="url",cL=t=>t==="length"||t==="size"||t==="bg-size",uL=t=>t==="length",Pre=t=>t==="number",zre=t=>t==="family-name",dL=t=>t==="shadow",Ire=()=>{const t=cs("color"),e=cs("font"),n=cs("text"),r=cs("font-weight"),s=cs("tracking"),i=cs("leading"),a=cs("breakpoint"),l=cs("container"),c=cs("spacing"),d=cs("radius"),h=cs("shadow"),m=cs("inset-shadow"),g=cs("text-shadow"),x=cs("drop-shadow"),y=cs("blur"),w=cs("perspective"),S=cs("aspect"),k=cs("ease"),j=cs("animate"),N=()=>["auto","avoid","all","avoid-page","page","left","right","column"],T=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],E=()=>[...T(),mt,ft],_=()=>["auto","hidden","clip","visible","scroll"],A=()=>["auto","contain","none"],D=()=>[mt,ft,c],q=()=>[oh,"full","auto",...D()],B=()=>[Tc,"none","subgrid",mt,ft],H=()=>["auto",{span:["full",Tc,mt,ft]},Tc,mt,ft],W=()=>[Tc,"auto",mt,ft],ee=()=>["auto","min","max","fr",mt,ft],I=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],V=()=>["start","end","center","stretch","center-safe","end-safe"],L=()=>["auto",...D()],$=()=>[oh,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...D()],K=()=>[t,mt,ft],Y=()=>[...T(),tE,eE,{position:[mt,ft]}],R=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ie=()=>["auto","cover","contain",Rre,_re,{size:[mt,ft]}],X=()=>[_4,Lm,Pu],z=()=>["","none","full",d,mt,ft],U=()=>["",sn,Lm,Pu],te=()=>["solid","dashed","dotted","double"],ne=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],G=()=>[sn,_4,tE,eE],se=()=>["","none",y,mt,ft],re=()=>["none",sn,mt,ft],ae=()=>["none",sn,mt,ft],_e=()=>[sn,mt,ft],Be=()=>[oh,"full",...D()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[bl],breakpoint:[bl],color:[jre],container:[bl],"drop-shadow":[bl],ease:["in","out","in-out"],font:[Ere],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[bl],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[bl],shadow:[bl],spacing:["px",sn],text:[bl],"text-shadow":[bl],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",oh,ft,mt,S]}],container:["container"],columns:[{columns:[sn,ft,mt,l]}],"break-after":[{"break-after":N()}],"break-before":[{"break-before":N()}],"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:E()}],overflow:[{overflow:_()}],"overflow-x":[{"overflow-x":_()}],"overflow-y":[{"overflow-y":_()}],overscroll:[{overscroll:A()}],"overscroll-x":[{"overscroll-x":A()}],"overscroll-y":[{"overscroll-y":A()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:q()}],"inset-x":[{"inset-x":q()}],"inset-y":[{"inset-y":q()}],start:[{start:q()}],end:[{end:q()}],top:[{top:q()}],right:[{right:q()}],bottom:[{bottom:q()}],left:[{left:q()}],visibility:["visible","invisible","collapse"],z:[{z:[Tc,"auto",mt,ft]}],basis:[{basis:[oh,"full","auto",l,...D()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[sn,oh,"auto","initial","none",ft]}],grow:[{grow:["",sn,mt,ft]}],shrink:[{shrink:["",sn,mt,ft]}],order:[{order:[Tc,"first","last","none",mt,ft]}],"grid-cols":[{"grid-cols":B()}],"col-start-end":[{col:H()}],"col-start":[{"col-start":W()}],"col-end":[{"col-end":W()}],"grid-rows":[{"grid-rows":B()}],"row-start-end":[{row:H()}],"row-start":[{"row-start":W()}],"row-end":[{"row-end":W()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":ee()}],"auto-rows":[{"auto-rows":ee()}],gap:[{gap:D()}],"gap-x":[{"gap-x":D()}],"gap-y":[{"gap-y":D()}],"justify-content":[{justify:[...I(),"normal"]}],"justify-items":[{"justify-items":[...V(),"normal"]}],"justify-self":[{"justify-self":["auto",...V()]}],"align-content":[{content:["normal",...I()]}],"align-items":[{items:[...V(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...V(),{baseline:["","last"]}]}],"place-content":[{"place-content":I()}],"place-items":[{"place-items":[...V(),"baseline"]}],"place-self":[{"place-self":["auto",...V()]}],p:[{p:D()}],px:[{px:D()}],py:[{py:D()}],ps:[{ps:D()}],pe:[{pe:D()}],pt:[{pt:D()}],pr:[{pr:D()}],pb:[{pb:D()}],pl:[{pl:D()}],m:[{m:L()}],mx:[{mx:L()}],my:[{my:L()}],ms:[{ms:L()}],me:[{me:L()}],mt:[{mt:L()}],mr:[{mr:L()}],mb:[{mb:L()}],ml:[{ml:L()}],"space-x":[{"space-x":D()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":D()}],"space-y-reverse":["space-y-reverse"],size:[{size:$()}],w:[{w:[l,"screen",...$()]}],"min-w":[{"min-w":[l,"screen","none",...$()]}],"max-w":[{"max-w":[l,"screen","none","prose",{screen:[a]},...$()]}],h:[{h:["screen","lh",...$()]}],"min-h":[{"min-h":["screen","lh","none",...$()]}],"max-h":[{"max-h":["screen","lh",...$()]}],"font-size":[{text:["base",n,Lm,Pu]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,mt,A4]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",_4,ft]}],"font-family":[{font:[Mre,ft,e]}],"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:[s,mt,ft]}],"line-clamp":[{"line-clamp":[sn,"none",mt,A4]}],leading:[{leading:[i,...D()]}],"list-image":[{"list-image":["none",mt,ft]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",mt,ft]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:K()}],"text-color":[{text:K()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...te(),"wavy"]}],"text-decoration-thickness":[{decoration:[sn,"from-font","auto",mt,Pu]}],"text-decoration-color":[{decoration:K()}],"underline-offset":[{"underline-offset":[sn,"auto",mt,ft]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:D()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",mt,ft]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",mt,ft]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:Y()}],"bg-repeat":[{bg:R()}],"bg-size":[{bg:ie()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Tc,mt,ft],radial:["",mt,ft],conic:[Tc,mt,ft]},Dre,Are]}],"bg-color":[{bg:K()}],"gradient-from-pos":[{from:X()}],"gradient-via-pos":[{via:X()}],"gradient-to-pos":[{to:X()}],"gradient-from":[{from:K()}],"gradient-via":[{via:K()}],"gradient-to":[{to:K()}],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:U()}],"border-w-x":[{"border-x":U()}],"border-w-y":[{"border-y":U()}],"border-w-s":[{"border-s":U()}],"border-w-e":[{"border-e":U()}],"border-w-t":[{"border-t":U()}],"border-w-r":[{"border-r":U()}],"border-w-b":[{"border-b":U()}],"border-w-l":[{"border-l":U()}],"divide-x":[{"divide-x":U()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":U()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...te(),"hidden","none"]}],"divide-style":[{divide:[...te(),"hidden","none"]}],"border-color":[{border:K()}],"border-color-x":[{"border-x":K()}],"border-color-y":[{"border-y":K()}],"border-color-s":[{"border-s":K()}],"border-color-e":[{"border-e":K()}],"border-color-t":[{"border-t":K()}],"border-color-r":[{"border-r":K()}],"border-color-b":[{"border-b":K()}],"border-color-l":[{"border-l":K()}],"divide-color":[{divide:K()}],"outline-style":[{outline:[...te(),"none","hidden"]}],"outline-offset":[{"outline-offset":[sn,mt,ft]}],"outline-w":[{outline:["",sn,Lm,Pu]}],"outline-color":[{outline:K()}],shadow:[{shadow:["","none",h,n1,t1]}],"shadow-color":[{shadow:K()}],"inset-shadow":[{"inset-shadow":["none",m,n1,t1]}],"inset-shadow-color":[{"inset-shadow":K()}],"ring-w":[{ring:U()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:K()}],"ring-offset-w":[{"ring-offset":[sn,Pu]}],"ring-offset-color":[{"ring-offset":K()}],"inset-ring-w":[{"inset-ring":U()}],"inset-ring-color":[{"inset-ring":K()}],"text-shadow":[{"text-shadow":["none",g,n1,t1]}],"text-shadow-color":[{"text-shadow":K()}],opacity:[{opacity:[sn,mt,ft]}],"mix-blend":[{"mix-blend":[...ne(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ne()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[sn]}],"mask-image-linear-from-pos":[{"mask-linear-from":G()}],"mask-image-linear-to-pos":[{"mask-linear-to":G()}],"mask-image-linear-from-color":[{"mask-linear-from":K()}],"mask-image-linear-to-color":[{"mask-linear-to":K()}],"mask-image-t-from-pos":[{"mask-t-from":G()}],"mask-image-t-to-pos":[{"mask-t-to":G()}],"mask-image-t-from-color":[{"mask-t-from":K()}],"mask-image-t-to-color":[{"mask-t-to":K()}],"mask-image-r-from-pos":[{"mask-r-from":G()}],"mask-image-r-to-pos":[{"mask-r-to":G()}],"mask-image-r-from-color":[{"mask-r-from":K()}],"mask-image-r-to-color":[{"mask-r-to":K()}],"mask-image-b-from-pos":[{"mask-b-from":G()}],"mask-image-b-to-pos":[{"mask-b-to":G()}],"mask-image-b-from-color":[{"mask-b-from":K()}],"mask-image-b-to-color":[{"mask-b-to":K()}],"mask-image-l-from-pos":[{"mask-l-from":G()}],"mask-image-l-to-pos":[{"mask-l-to":G()}],"mask-image-l-from-color":[{"mask-l-from":K()}],"mask-image-l-to-color":[{"mask-l-to":K()}],"mask-image-x-from-pos":[{"mask-x-from":G()}],"mask-image-x-to-pos":[{"mask-x-to":G()}],"mask-image-x-from-color":[{"mask-x-from":K()}],"mask-image-x-to-color":[{"mask-x-to":K()}],"mask-image-y-from-pos":[{"mask-y-from":G()}],"mask-image-y-to-pos":[{"mask-y-to":G()}],"mask-image-y-from-color":[{"mask-y-from":K()}],"mask-image-y-to-color":[{"mask-y-to":K()}],"mask-image-radial":[{"mask-radial":[mt,ft]}],"mask-image-radial-from-pos":[{"mask-radial-from":G()}],"mask-image-radial-to-pos":[{"mask-radial-to":G()}],"mask-image-radial-from-color":[{"mask-radial-from":K()}],"mask-image-radial-to-color":[{"mask-radial-to":K()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":T()}],"mask-image-conic-pos":[{"mask-conic":[sn]}],"mask-image-conic-from-pos":[{"mask-conic-from":G()}],"mask-image-conic-to-pos":[{"mask-conic-to":G()}],"mask-image-conic-from-color":[{"mask-conic-from":K()}],"mask-image-conic-to-color":[{"mask-conic-to":K()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:Y()}],"mask-repeat":[{mask:R()}],"mask-size":[{mask:ie()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",mt,ft]}],filter:[{filter:["","none",mt,ft]}],blur:[{blur:se()}],brightness:[{brightness:[sn,mt,ft]}],contrast:[{contrast:[sn,mt,ft]}],"drop-shadow":[{"drop-shadow":["","none",x,n1,t1]}],"drop-shadow-color":[{"drop-shadow":K()}],grayscale:[{grayscale:["",sn,mt,ft]}],"hue-rotate":[{"hue-rotate":[sn,mt,ft]}],invert:[{invert:["",sn,mt,ft]}],saturate:[{saturate:[sn,mt,ft]}],sepia:[{sepia:["",sn,mt,ft]}],"backdrop-filter":[{"backdrop-filter":["","none",mt,ft]}],"backdrop-blur":[{"backdrop-blur":se()}],"backdrop-brightness":[{"backdrop-brightness":[sn,mt,ft]}],"backdrop-contrast":[{"backdrop-contrast":[sn,mt,ft]}],"backdrop-grayscale":[{"backdrop-grayscale":["",sn,mt,ft]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[sn,mt,ft]}],"backdrop-invert":[{"backdrop-invert":["",sn,mt,ft]}],"backdrop-opacity":[{"backdrop-opacity":[sn,mt,ft]}],"backdrop-saturate":[{"backdrop-saturate":[sn,mt,ft]}],"backdrop-sepia":[{"backdrop-sepia":["",sn,mt,ft]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":D()}],"border-spacing-x":[{"border-spacing-x":D()}],"border-spacing-y":[{"border-spacing-y":D()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",mt,ft]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[sn,"initial",mt,ft]}],ease:[{ease:["linear","initial",k,mt,ft]}],delay:[{delay:[sn,mt,ft]}],animate:[{animate:["none",j,mt,ft]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,mt,ft]}],"perspective-origin":[{"perspective-origin":E()}],rotate:[{rotate:re()}],"rotate-x":[{"rotate-x":re()}],"rotate-y":[{"rotate-y":re()}],"rotate-z":[{"rotate-z":re()}],scale:[{scale:ae()}],"scale-x":[{"scale-x":ae()}],"scale-y":[{"scale-y":ae()}],"scale-z":[{"scale-z":ae()}],"scale-3d":["scale-3d"],skew:[{skew:_e()}],"skew-x":[{"skew-x":_e()}],"skew-y":[{"skew-y":_e()}],transform:[{transform:[mt,ft,"","none","gpu","cpu"]}],"transform-origin":[{origin:E()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Be()}],"translate-x":[{"translate-x":Be()}],"translate-y":[{"translate-y":Be()}],"translate-z":[{"translate-z":Be()}],"translate-none":["translate-none"],accent:[{accent:K()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:K()}],"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",mt,ft]}],"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":D()}],"scroll-mx":[{"scroll-mx":D()}],"scroll-my":[{"scroll-my":D()}],"scroll-ms":[{"scroll-ms":D()}],"scroll-me":[{"scroll-me":D()}],"scroll-mt":[{"scroll-mt":D()}],"scroll-mr":[{"scroll-mr":D()}],"scroll-mb":[{"scroll-mb":D()}],"scroll-ml":[{"scroll-ml":D()}],"scroll-p":[{"scroll-p":D()}],"scroll-px":[{"scroll-px":D()}],"scroll-py":[{"scroll-py":D()}],"scroll-ps":[{"scroll-ps":D()}],"scroll-pe":[{"scroll-pe":D()}],"scroll-pt":[{"scroll-pt":D()}],"scroll-pr":[{"scroll-pr":D()}],"scroll-pb":[{"scroll-pb":D()}],"scroll-pl":[{"scroll-pl":D()}],"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",mt,ft]}],fill:[{fill:["none",...K()]}],"stroke-w":[{stroke:[sn,Lm,Pu,A4]}],stroke:[{stroke:["none",...K()]}],"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-x","border-w-y","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-x","border-color-y","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:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},Lre=xre(Ire);function xe(...t){return Lre(Qz(t))}const Lt=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("rounded-xl border bg-card text-card-foreground shadow",t),...e}));Lt.displayName="Card";const En=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("flex flex-col space-y-1.5 p-6",t),...e}));En.displayName="CardHeader";const _n=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("font-semibold leading-none tracking-tight",t),...e}));_n.displayName="CardTitle";const Wr=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("text-sm text-muted-foreground",t),...e}));Wr.displayName="CardDescription";const Xn=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("p-6 pt-0",t),...e}));Xn.displayName="CardContent";const hL=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("flex items-center p-6 pt-0",t),...e}));hL.displayName="CardFooter";var M4="rovingFocusGroup.onEntryFocus",Bre={bubbles:!1,cancelable:!0},Hp="RovingFocusGroup",[mk,fL,Fre]=Qy(Hp),[qre,sb]=Da(Hp,[Fre]),[$re,Hre]=qre(Hp),mL=b.forwardRef((t,e)=>o.jsx(mk.Provider,{scope:t.__scopeRovingFocusGroup,children:o.jsx(mk.Slot,{scope:t.__scopeRovingFocusGroup,children:o.jsx(Qre,{...t,ref:e})})}));mL.displayName=Hp;var Qre=b.forwardRef((t,e)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:s=!1,dir:i,currentTabStopId:a,defaultCurrentTabStopId:l,onCurrentTabStopIdChange:c,onEntryFocus:d,preventScrollOnEntryFocus:h=!1,...m}=t,g=b.useRef(null),x=er(e,g),y=Rp(i),[w,S]=Kl({prop:a,defaultProp:l??null,onChange:c,caller:Hp}),[k,j]=b.useState(!1),N=Rs(d),T=fL(n),E=b.useRef(!1),[_,A]=b.useState(0);return b.useEffect(()=>{const D=g.current;if(D)return D.addEventListener(M4,N),()=>D.removeEventListener(M4,N)},[N]),o.jsx($re,{scope:n,orientation:r,dir:y,loop:s,currentTabStopId:w,onItemFocus:b.useCallback(D=>S(D),[S]),onItemShiftTab:b.useCallback(()=>j(!0),[]),onFocusableItemAdd:b.useCallback(()=>A(D=>D+1),[]),onFocusableItemRemove:b.useCallback(()=>A(D=>D-1),[]),children:o.jsx(Sn.div,{tabIndex:k||_===0?-1:0,"data-orientation":r,...m,ref:x,style:{outline:"none",...t.style},onMouseDown:nt(t.onMouseDown,()=>{E.current=!0}),onFocus:nt(t.onFocus,D=>{const q=!E.current;if(D.target===D.currentTarget&&q&&!k){const B=new CustomEvent(M4,Bre);if(D.currentTarget.dispatchEvent(B),!B.defaultPrevented){const H=T().filter(L=>L.focusable),W=H.find(L=>L.active),ee=H.find(L=>L.id===w),V=[W,ee,...H].filter(Boolean).map(L=>L.ref.current);xL(V,h)}}E.current=!1}),onBlur:nt(t.onBlur,()=>j(!1))})})}),pL="RovingFocusGroupItem",gL=b.forwardRef((t,e)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:s=!1,tabStopId:i,children:a,...l}=t,c=Gi(),d=i||c,h=Hre(pL,n),m=h.currentTabStopId===d,g=fL(n),{onFocusableItemAdd:x,onFocusableItemRemove:y,currentTabStopId:w}=h;return b.useEffect(()=>{if(r)return x(),()=>y()},[r,x,y]),o.jsx(mk.ItemSlot,{scope:n,id:d,focusable:r,active:s,children:o.jsx(Sn.span,{tabIndex:m?0:-1,"data-orientation":h.orientation,...l,ref:e,onMouseDown:nt(t.onMouseDown,S=>{r?h.onItemFocus(d):S.preventDefault()}),onFocus:nt(t.onFocus,()=>h.onItemFocus(d)),onKeyDown:nt(t.onKeyDown,S=>{if(S.key==="Tab"&&S.shiftKey){h.onItemShiftTab();return}if(S.target!==S.currentTarget)return;const k=Wre(S,h.orientation,h.dir);if(k!==void 0){if(S.metaKey||S.ctrlKey||S.altKey||S.shiftKey)return;S.preventDefault();let N=g().filter(T=>T.focusable).map(T=>T.ref.current);if(k==="last")N.reverse();else if(k==="prev"||k==="next"){k==="prev"&&N.reverse();const T=N.indexOf(S.currentTarget);N=h.loop?Gre(N,T+1):N.slice(T+1)}setTimeout(()=>xL(N))}}),children:typeof a=="function"?a({isCurrentTabStop:m,hasTabStop:w!=null}):a})})});gL.displayName=pL;var Vre={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function Ure(t,e){return e!=="rtl"?t:t==="ArrowLeft"?"ArrowRight":t==="ArrowRight"?"ArrowLeft":t}function Wre(t,e,n){const r=Ure(t.key,n);if(!(e==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(e==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return Vre[r]}function xL(t,e=!1){const n=document.activeElement;for(const r of t)if(r===n||(r.focus({preventScroll:e}),document.activeElement!==n))return}function Gre(t,e){return t.map((n,r)=>t[(e+r)%t.length])}var vL=mL,yL=gL,ib="Tabs",[Xre]=Da(ib,[sb]),bL=sb(),[Yre,Qj]=Xre(ib),wL=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,onValueChange:s,defaultValue:i,orientation:a="horizontal",dir:l,activationMode:c="automatic",...d}=t,h=Rp(l),[m,g]=Kl({prop:r,onChange:s,defaultProp:i??"",caller:ib});return o.jsx(Yre,{scope:n,baseId:Gi(),value:m,onValueChange:g,orientation:a,dir:h,activationMode:c,children:o.jsx(Sn.div,{dir:h,"data-orientation":a,...d,ref:e})})});wL.displayName=ib;var SL="TabsList",kL=b.forwardRef((t,e)=>{const{__scopeTabs:n,loop:r=!0,...s}=t,i=Qj(SL,n),a=bL(n);return o.jsx(vL,{asChild:!0,...a,orientation:i.orientation,dir:i.dir,loop:r,children:o.jsx(Sn.div,{role:"tablist","aria-orientation":i.orientation,...s,ref:e})})});kL.displayName=SL;var OL="TabsTrigger",jL=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,disabled:s=!1,...i}=t,a=Qj(OL,n),l=bL(n),c=TL(a.baseId,r),d=EL(a.baseId,r),h=r===a.value;return o.jsx(yL,{asChild:!0,...l,focusable:!s,active:h,children:o.jsx(Sn.button,{type:"button",role:"tab","aria-selected":h,"aria-controls":d,"data-state":h?"active":"inactive","data-disabled":s?"":void 0,disabled:s,id:c,...i,ref:e,onMouseDown:nt(t.onMouseDown,m=>{!s&&m.button===0&&m.ctrlKey===!1?a.onValueChange(r):m.preventDefault()}),onKeyDown:nt(t.onKeyDown,m=>{[" ","Enter"].includes(m.key)&&a.onValueChange(r)}),onFocus:nt(t.onFocus,()=>{const m=a.activationMode!=="manual";!h&&!s&&m&&a.onValueChange(r)})})})});jL.displayName=OL;var NL="TabsContent",CL=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,forceMount:s,children:i,...a}=t,l=Qj(NL,n),c=TL(l.baseId,r),d=EL(l.baseId,r),h=r===l.value,m=b.useRef(h);return b.useEffect(()=>{const g=requestAnimationFrame(()=>m.current=!1);return()=>cancelAnimationFrame(g)},[]),o.jsx(oi,{present:s||h,children:({present:g})=>o.jsx(Sn.div,{"data-state":h?"active":"inactive","data-orientation":l.orientation,role:"tabpanel","aria-labelledby":c,hidden:!g,id:d,tabIndex:0,...a,ref:e,style:{...t.style,animationDuration:m.current?"0s":void 0},children:g&&i})})});CL.displayName=NL;function TL(t,e){return`${t}-trigger-${e}`}function EL(t,e){return`${t}-content-${e}`}var Kre=wL,_L=kL,AL=jL,ML=CL;const Yi=Kre,ji=b.forwardRef(({className:t,...e},n)=>o.jsx(_L,{ref:n,className:xe("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",t),...e}));ji.displayName=_L.displayName;const Bt=b.forwardRef(({className:t,...e},n)=>o.jsx(AL,{ref:n,className:xe("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all duration-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",t),...e}));Bt.displayName=AL.displayName;const ln=b.forwardRef(({className:t,...e},n)=>o.jsx(ML,{ref:n,className:xe("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[state=active]:animate-in data-[state=active]:fade-in data-[state=active]:duration-300",t),...e}));ln.displayName=ML.displayName;function Zre(t,e){return b.useReducer((n,r)=>e[n][r]??n,t)}var Vj="ScrollArea",[RL]=Da(Vj),[Jre,Pa]=RL(Vj),DL=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,type:r="hover",dir:s,scrollHideDelay:i=600,...a}=t,[l,c]=b.useState(null),[d,h]=b.useState(null),[m,g]=b.useState(null),[x,y]=b.useState(null),[w,S]=b.useState(null),[k,j]=b.useState(0),[N,T]=b.useState(0),[E,_]=b.useState(!1),[A,D]=b.useState(!1),q=er(e,H=>c(H)),B=Rp(s);return o.jsx(Jre,{scope:n,type:r,dir:B,scrollHideDelay:i,scrollArea:l,viewport:d,onViewportChange:h,content:m,onContentChange:g,scrollbarX:x,onScrollbarXChange:y,scrollbarXEnabled:E,onScrollbarXEnabledChange:_,scrollbarY:w,onScrollbarYChange:S,scrollbarYEnabled:A,onScrollbarYEnabledChange:D,onCornerWidthChange:j,onCornerHeightChange:T,children:o.jsx(Sn.div,{dir:B,...a,ref:q,style:{position:"relative","--radix-scroll-area-corner-width":k+"px","--radix-scroll-area-corner-height":N+"px",...t.style}})})});DL.displayName=Vj;var PL="ScrollAreaViewport",zL=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,children:r,nonce:s,...i}=t,a=Pa(PL,n),l=b.useRef(null),c=er(e,l,a.onViewportChange);return o.jsxs(o.Fragment,{children:[o.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:s}),o.jsx(Sn.div,{"data-radix-scroll-area-viewport":"",...i,ref:c,style:{overflowX:a.scrollbarXEnabled?"scroll":"hidden",overflowY:a.scrollbarYEnabled?"scroll":"hidden",...t.style},children:o.jsx("div",{ref:a.onContentChange,style:{minWidth:"100%",display:"table"},children:r})})]})});zL.displayName=PL;var Ho="ScrollAreaScrollbar",Uj=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=Pa(Ho,t.__scopeScrollArea),{onScrollbarXEnabledChange:i,onScrollbarYEnabledChange:a}=s,l=t.orientation==="horizontal";return b.useEffect(()=>(l?i(!0):a(!0),()=>{l?i(!1):a(!1)}),[l,i,a]),s.type==="hover"?o.jsx(ese,{...r,ref:e,forceMount:n}):s.type==="scroll"?o.jsx(tse,{...r,ref:e,forceMount:n}):s.type==="auto"?o.jsx(IL,{...r,ref:e,forceMount:n}):s.type==="always"?o.jsx(Wj,{...r,ref:e}):null});Uj.displayName=Ho;var ese=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=Pa(Ho,t.__scopeScrollArea),[i,a]=b.useState(!1);return b.useEffect(()=>{const l=s.scrollArea;let c=0;if(l){const d=()=>{window.clearTimeout(c),a(!0)},h=()=>{c=window.setTimeout(()=>a(!1),s.scrollHideDelay)};return l.addEventListener("pointerenter",d),l.addEventListener("pointerleave",h),()=>{window.clearTimeout(c),l.removeEventListener("pointerenter",d),l.removeEventListener("pointerleave",h)}}},[s.scrollArea,s.scrollHideDelay]),o.jsx(oi,{present:n||i,children:o.jsx(IL,{"data-state":i?"visible":"hidden",...r,ref:e})})}),tse=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=Pa(Ho,t.__scopeScrollArea),i=t.orientation==="horizontal",a=ob(()=>c("SCROLL_END"),100),[l,c]=Zre("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return b.useEffect(()=>{if(l==="idle"){const d=window.setTimeout(()=>c("HIDE"),s.scrollHideDelay);return()=>window.clearTimeout(d)}},[l,s.scrollHideDelay,c]),b.useEffect(()=>{const d=s.viewport,h=i?"scrollLeft":"scrollTop";if(d){let m=d[h];const g=()=>{const x=d[h];m!==x&&(c("SCROLL"),a()),m=x};return d.addEventListener("scroll",g),()=>d.removeEventListener("scroll",g)}},[s.viewport,i,c,a]),o.jsx(oi,{present:n||l!=="hidden",children:o.jsx(Wj,{"data-state":l==="hidden"?"hidden":"visible",...r,ref:e,onPointerEnter:nt(t.onPointerEnter,()=>c("POINTER_ENTER")),onPointerLeave:nt(t.onPointerLeave,()=>c("POINTER_LEAVE"))})})}),IL=b.forwardRef((t,e)=>{const n=Pa(Ho,t.__scopeScrollArea),{forceMount:r,...s}=t,[i,a]=b.useState(!1),l=t.orientation==="horizontal",c=ob(()=>{if(n.viewport){const d=n.viewport.offsetWidth{const{orientation:n="vertical",...r}=t,s=Pa(Ho,t.__scopeScrollArea),i=b.useRef(null),a=b.useRef(0),[l,c]=b.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),d=$L(l.viewport,l.content),h={...r,sizes:l,onSizesChange:c,hasThumb:d>0&&d<1,onThumbChange:g=>i.current=g,onThumbPointerUp:()=>a.current=0,onThumbPointerDown:g=>a.current=g};function m(g,x){return ose(g,a.current,l,x)}return n==="horizontal"?o.jsx(nse,{...h,ref:e,onThumbPositionChange:()=>{if(s.viewport&&i.current){const g=s.viewport.scrollLeft,x=nE(g,l,s.dir);i.current.style.transform=`translate3d(${x}px, 0, 0)`}},onWheelScroll:g=>{s.viewport&&(s.viewport.scrollLeft=g)},onDragScroll:g=>{s.viewport&&(s.viewport.scrollLeft=m(g,s.dir))}}):n==="vertical"?o.jsx(rse,{...h,ref:e,onThumbPositionChange:()=>{if(s.viewport&&i.current){const g=s.viewport.scrollTop,x=nE(g,l);i.current.style.transform=`translate3d(0, ${x}px, 0)`}},onWheelScroll:g=>{s.viewport&&(s.viewport.scrollTop=g)},onDragScroll:g=>{s.viewport&&(s.viewport.scrollTop=m(g))}}):null}),nse=b.forwardRef((t,e)=>{const{sizes:n,onSizesChange:r,...s}=t,i=Pa(Ho,t.__scopeScrollArea),[a,l]=b.useState(),c=b.useRef(null),d=er(e,c,i.onScrollbarXChange);return b.useEffect(()=>{c.current&&l(getComputedStyle(c.current))},[c]),o.jsx(BL,{"data-orientation":"horizontal",...s,ref:d,sizes:n,style:{bottom:0,left:i.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:i.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":ab(n)+"px",...t.style},onThumbPointerDown:h=>t.onThumbPointerDown(h.x),onDragScroll:h=>t.onDragScroll(h.x),onWheelScroll:(h,m)=>{if(i.viewport){const g=i.viewport.scrollLeft+h.deltaX;t.onWheelScroll(g),QL(g,m)&&h.preventDefault()}},onResize:()=>{c.current&&i.viewport&&a&&r({content:i.viewport.scrollWidth,viewport:i.viewport.offsetWidth,scrollbar:{size:c.current.clientWidth,paddingStart:Qv(a.paddingLeft),paddingEnd:Qv(a.paddingRight)}})}})}),rse=b.forwardRef((t,e)=>{const{sizes:n,onSizesChange:r,...s}=t,i=Pa(Ho,t.__scopeScrollArea),[a,l]=b.useState(),c=b.useRef(null),d=er(e,c,i.onScrollbarYChange);return b.useEffect(()=>{c.current&&l(getComputedStyle(c.current))},[c]),o.jsx(BL,{"data-orientation":"vertical",...s,ref:d,sizes:n,style:{top:0,right:i.dir==="ltr"?0:void 0,left:i.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":ab(n)+"px",...t.style},onThumbPointerDown:h=>t.onThumbPointerDown(h.y),onDragScroll:h=>t.onDragScroll(h.y),onWheelScroll:(h,m)=>{if(i.viewport){const g=i.viewport.scrollTop+h.deltaY;t.onWheelScroll(g),QL(g,m)&&h.preventDefault()}},onResize:()=>{c.current&&i.viewport&&a&&r({content:i.viewport.scrollHeight,viewport:i.viewport.offsetHeight,scrollbar:{size:c.current.clientHeight,paddingStart:Qv(a.paddingTop),paddingEnd:Qv(a.paddingBottom)}})}})}),[sse,LL]=RL(Ho),BL=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,sizes:r,hasThumb:s,onThumbChange:i,onThumbPointerUp:a,onThumbPointerDown:l,onThumbPositionChange:c,onDragScroll:d,onWheelScroll:h,onResize:m,...g}=t,x=Pa(Ho,n),[y,w]=b.useState(null),S=er(e,q=>w(q)),k=b.useRef(null),j=b.useRef(""),N=x.viewport,T=r.content-r.viewport,E=Rs(h),_=Rs(c),A=ob(m,10);function D(q){if(k.current){const B=q.clientX-k.current.left,H=q.clientY-k.current.top;d({x:B,y:H})}}return b.useEffect(()=>{const q=B=>{const H=B.target;y?.contains(H)&&E(B,T)};return document.addEventListener("wheel",q,{passive:!1}),()=>document.removeEventListener("wheel",q,{passive:!1})},[N,y,T,E]),b.useEffect(_,[r,_]),Yh(y,A),Yh(x.content,A),o.jsx(sse,{scope:n,scrollbar:y,hasThumb:s,onThumbChange:Rs(i),onThumbPointerUp:Rs(a),onThumbPositionChange:_,onThumbPointerDown:Rs(l),children:o.jsx(Sn.div,{...g,ref:S,style:{position:"absolute",...g.style},onPointerDown:nt(t.onPointerDown,q=>{q.button===0&&(q.target.setPointerCapture(q.pointerId),k.current=y.getBoundingClientRect(),j.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",x.viewport&&(x.viewport.style.scrollBehavior="auto"),D(q))}),onPointerMove:nt(t.onPointerMove,D),onPointerUp:nt(t.onPointerUp,q=>{const B=q.target;B.hasPointerCapture(q.pointerId)&&B.releasePointerCapture(q.pointerId),document.body.style.webkitUserSelect=j.current,x.viewport&&(x.viewport.style.scrollBehavior=""),k.current=null})})})}),Hv="ScrollAreaThumb",FL=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=LL(Hv,t.__scopeScrollArea);return o.jsx(oi,{present:n||s.hasThumb,children:o.jsx(ise,{ref:e,...r})})}),ise=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,style:r,...s}=t,i=Pa(Hv,n),a=LL(Hv,n),{onThumbPositionChange:l}=a,c=er(e,m=>a.onThumbChange(m)),d=b.useRef(void 0),h=ob(()=>{d.current&&(d.current(),d.current=void 0)},100);return b.useEffect(()=>{const m=i.viewport;if(m){const g=()=>{if(h(),!d.current){const x=lse(m,l);d.current=x,l()}};return l(),m.addEventListener("scroll",g),()=>m.removeEventListener("scroll",g)}},[i.viewport,h,l]),o.jsx(Sn.div,{"data-state":a.hasThumb?"visible":"hidden",...s,ref:c,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...r},onPointerDownCapture:nt(t.onPointerDownCapture,m=>{const x=m.target.getBoundingClientRect(),y=m.clientX-x.left,w=m.clientY-x.top;a.onThumbPointerDown({x:y,y:w})}),onPointerUp:nt(t.onPointerUp,a.onThumbPointerUp)})});FL.displayName=Hv;var Gj="ScrollAreaCorner",qL=b.forwardRef((t,e)=>{const n=Pa(Gj,t.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!=="scroll"&&r?o.jsx(ase,{...t,ref:e}):null});qL.displayName=Gj;var ase=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,...r}=t,s=Pa(Gj,n),[i,a]=b.useState(0),[l,c]=b.useState(0),d=!!(i&&l);return Yh(s.scrollbarX,()=>{const h=s.scrollbarX?.offsetHeight||0;s.onCornerHeightChange(h),c(h)}),Yh(s.scrollbarY,()=>{const h=s.scrollbarY?.offsetWidth||0;s.onCornerWidthChange(h),a(h)}),d?o.jsx(Sn.div,{...r,ref:e,style:{width:i,height:l,position:"absolute",right:s.dir==="ltr"?0:void 0,left:s.dir==="rtl"?0:void 0,bottom:0,...t.style}}):null});function Qv(t){return t?parseInt(t,10):0}function $L(t,e){const n=t/e;return isNaN(n)?0:n}function ab(t){const e=$L(t.viewport,t.content),n=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,r=(t.scrollbar.size-n)*e;return Math.max(r,18)}function ose(t,e,n,r="ltr"){const s=ab(n),i=s/2,a=e||i,l=s-a,c=n.scrollbar.paddingStart+a,d=n.scrollbar.size-n.scrollbar.paddingEnd-l,h=n.content-n.viewport,m=r==="ltr"?[0,h]:[h*-1,0];return HL([c,d],m)(t)}function nE(t,e,n="ltr"){const r=ab(e),s=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,i=e.scrollbar.size-s,a=e.content-e.viewport,l=i-r,c=n==="ltr"?[0,a]:[a*-1,0],d=Tj(t,c);return HL([0,a],[0,l])(d)}function HL(t,e){return n=>{if(t[0]===t[1]||e[0]===e[1])return e[0];const r=(e[1]-e[0])/(t[1]-t[0]);return e[0]+r*(n-t[0])}}function QL(t,e){return t>0&&t{})=>{let n={left:t.scrollLeft,top:t.scrollTop},r=0;return(function s(){const i={left:t.scrollLeft,top:t.scrollTop},a=n.left!==i.left,l=n.top!==i.top;(a||l)&&e(),n=i,r=window.requestAnimationFrame(s)})(),()=>window.cancelAnimationFrame(r)};function ob(t,e){const n=Rs(t),r=b.useRef(0);return b.useEffect(()=>()=>window.clearTimeout(r.current),[]),b.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,e)},[n,e])}function Yh(t,e){const n=Rs(e);Wh(()=>{let r=0;if(t){const s=new ResizeObserver(()=>{cancelAnimationFrame(r),r=window.requestAnimationFrame(n)});return s.observe(t),()=>{window.cancelAnimationFrame(r),s.unobserve(t)}}},[t,n])}var VL=DL,cse=zL,use=qL;const pn=b.forwardRef(({className:t,children:e,viewportRef:n,...r},s)=>o.jsxs(VL,{ref:s,className:xe("relative overflow-hidden",t),...r,children:[o.jsx(cse,{ref:n,className:"h-full w-full rounded-[inherit]",children:e}),o.jsx(pk,{}),o.jsx(pk,{orientation:"horizontal"}),o.jsx(use,{})]}));pn.displayName=VL.displayName;const pk=b.forwardRef(({className:t,orientation:e="vertical",...n},r)=>o.jsx(Uj,{ref:r,orientation:e,className:xe("flex touch-none select-none transition-colors",e==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",e==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",t),...n,children:o.jsx(FL,{className:"relative flex-1 rounded-full bg-border"})}));pk.displayName=Uj.displayName;function dse({className:t,...e}){return o.jsx("div",{className:xe("animate-pulse rounded-md bg-primary/10",t),...e})}function hse(t,e=[]){let n=[];function r(i,a){const l=b.createContext(a);l.displayName=i+"Context";const c=n.length;n=[...n,a];const d=m=>{const{scope:g,children:x,...y}=m,w=g?.[t]?.[c]||l,S=b.useMemo(()=>y,Object.values(y));return o.jsx(w.Provider,{value:S,children:x})};d.displayName=i+"Provider";function h(m,g){const x=g?.[t]?.[c]||l,y=b.useContext(x);if(y)return y;if(a!==void 0)return a;throw new Error(`\`${m}\` must be used within \`${i}\``)}return[d,h]}const s=()=>{const i=n.map(a=>b.createContext(a));return function(l){const c=l?.[t]||i;return b.useMemo(()=>({[`__scope${t}`]:{...l,[t]:c}}),[l,c])}};return s.scopeName=t,[r,fse(s,...e)]}function fse(...t){const e=t[0];if(t.length===1)return e;const n=()=>{const r=t.map(s=>({useScope:s(),scopeName:s.scopeName}));return function(i){const a=r.reduce((l,{useScope:c,scopeName:d})=>{const m=c(i)[`__scope${d}`];return{...l,...m}},{});return b.useMemo(()=>({[`__scope${e.scopeName}`]:a}),[a])}};return n.scopeName=e.scopeName,n}var mse=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],UL=mse.reduce((t,e)=>{const n=Vy(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...l}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(c,{...l,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),Xj="Progress",Yj=100,[pse]=hse(Xj),[gse,xse]=pse(Xj),WL=b.forwardRef((t,e)=>{const{__scopeProgress:n,value:r=null,max:s,getValueLabel:i=vse,...a}=t;(s||s===0)&&!rE(s)&&console.error(yse(`${s}`,"Progress"));const l=rE(s)?s:Yj;r!==null&&!sE(r,l)&&console.error(bse(`${r}`,"Progress"));const c=sE(r,l)?r:null,d=Vv(c)?i(c,l):void 0;return o.jsx(gse,{scope:n,value:c,max:l,children:o.jsx(UL.div,{"aria-valuemax":l,"aria-valuemin":0,"aria-valuenow":Vv(c)?c:void 0,"aria-valuetext":d,role:"progressbar","data-state":YL(c,l),"data-value":c??void 0,"data-max":l,...a,ref:e})})});WL.displayName=Xj;var GL="ProgressIndicator",XL=b.forwardRef((t,e)=>{const{__scopeProgress:n,...r}=t,s=xse(GL,n);return o.jsx(UL.div,{"data-state":YL(s.value,s.max),"data-value":s.value??void 0,"data-max":s.max,...r,ref:e})});XL.displayName=GL;function vse(t,e){return`${Math.round(t/e*100)}%`}function YL(t,e){return t==null?"indeterminate":t===e?"complete":"loading"}function Vv(t){return typeof t=="number"}function rE(t){return Vv(t)&&!isNaN(t)&&t>0}function sE(t,e){return Vv(t)&&!isNaN(t)&&t<=e&&t>=0}function yse(t,e){return`Invalid prop \`max\` of value \`${t}\` supplied to \`${e}\`. Only numbers greater than 0 are valid max values. Defaulting to \`${Yj}\`.`}function bse(t,e){return`Invalid prop \`value\` of value \`${t}\` supplied to \`${e}\`. The \`value\` prop must be: - a positive number - - less than the value passed to \`max\` (or ${Qj} if no \`max\` prop is set) + - less than the value passed to \`max\` (or ${Yj} if no \`max\` prop is set) - \`null\` or \`undefined\` if the progress is indeterminate. -Defaulting to \`null\`.`}var WL=HL,yse=VL;const Lp=b.forwardRef(({className:t,value:e,...n},r)=>o.jsx(WL,{ref:r,className:xe("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",t),...n,children:o.jsx(yse,{className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(e||0)}%)`}})}));Lp.displayName=WL.displayName;const bse={light:"",dark:".dark"},GL=b.createContext(null);function XL(){const t=b.useContext(GL);if(!t)throw new Error("useChart must be used within a ");return t}const gh=b.forwardRef(({id:t,className:e,children:n,config:r,...s},i)=>{const a=b.useId(),l=`chart-${t||a.replace(/:/g,"")}`;return o.jsx(GL.Provider,{value:{config:r},children:o.jsxs("div",{"data-chart":l,ref:i,className:xe("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",e),...s,children:[o.jsx(wse,{id:l,config:r}),o.jsx(jJ,{children:n})]})})});gh.displayName="Chart";const wse=({id:t,config:e})=>{const n=Object.entries(e).filter(([,r])=>r.theme||r.color);return n.length?o.jsx("style",{dangerouslySetInnerHTML:{__html:Object.entries(bse).map(([r,s])=>` +Defaulting to \`null\`.`}var KL=WL,wse=XL;const Qp=b.forwardRef(({className:t,value:e,...n},r)=>o.jsx(KL,{ref:r,className:xe("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",t),...n,children:o.jsx(wse,{className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(e||0)}%)`}})}));Qp.displayName=KL.displayName;const Sse={light:"",dark:".dark"},ZL=b.createContext(null);function JL(){const t=b.useContext(ZL);if(!t)throw new Error("useChart must be used within a ");return t}const vh=b.forwardRef(({id:t,className:e,children:n,config:r,...s},i)=>{const a=b.useId(),l=`chart-${t||a.replace(/:/g,"")}`;return o.jsx(ZL.Provider,{value:{config:r},children:o.jsxs("div",{"data-chart":l,ref:i,className:xe("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",e),...s,children:[o.jsx(kse,{id:l,config:r}),o.jsx(TJ,{children:n})]})})});vh.displayName="Chart";const kse=({id:t,config:e})=>{const n=Object.entries(e).filter(([,r])=>r.theme||r.color);return n.length?o.jsx("style",{dangerouslySetInnerHTML:{__html:Object.entries(Sse).map(([r,s])=>` ${s} [data-chart=${t}] { ${n.map(([i,a])=>{const l=a.theme?.[r]||a.color;return l?` --color-${i}: ${l};`:null}).join(` `)} } `).join(` -`)}}):null},Lm=NJ,xh=b.forwardRef(({active:t,payload:e,className:n,indicator:r="dot",hideLabel:s=!1,hideIndicator:i=!1,label:a,labelFormatter:l,labelClassName:c,formatter:d,color:h,nameKey:m,labelKey:g},x)=>{const{config:y}=XL(),w=b.useMemo(()=>{if(s||!e?.length)return null;const[k]=e,j=`${g||k?.dataKey||k?.name||"value"}`,N=fk(y,k,j),T=!g&&typeof a=="string"?y[a]?.label||a:N?.label;return l?o.jsx("div",{className:xe("font-medium",c),children:l(T,e)}):T?o.jsx("div",{className:xe("font-medium",c),children:T}):null},[a,l,e,s,c,y,g]);if(!t||!e?.length)return null;const S=e.length===1&&r!=="dot";return o.jsxs("div",{ref:x,className:xe("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",n),children:[S?null:w,o.jsx("div",{className:"grid gap-1.5",children:e.filter(k=>k.type!=="none").map((k,j)=>{const N=`${m||k.name||k.dataKey||"value"}`,T=fk(y,k,N),E=h||k.payload.fill||k.color;return o.jsx("div",{className:xe("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",r==="dot"&&"items-center"),children:d&&k?.value!==void 0&&k.name?d(k.value,k.name,k,j,k.payload):o.jsxs(o.Fragment,{children:[T?.icon?o.jsx(T.icon,{}):!i&&o.jsx("div",{className:xe("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]",{"h-2.5 w-2.5":r==="dot","w-1":r==="line","w-0 border-[1.5px] border-dashed bg-transparent":r==="dashed","my-0.5":S&&r==="dashed"}),style:{"--color-bg":E,"--color-border":E}}),o.jsxs("div",{className:xe("flex flex-1 justify-between leading-none",S?"items-end":"items-center"),children:[o.jsxs("div",{className:"grid gap-1.5",children:[S?w:null,o.jsx("span",{className:"text-muted-foreground",children:T?.label||k.name})]}),k.value&&o.jsx("span",{className:"font-mono font-medium tabular-nums text-foreground",children:k.value.toLocaleString()})]})]})},k.dataKey)})})]})});xh.displayName="ChartTooltip";const Sse=CJ,YL=b.forwardRef(({className:t,hideIcon:e=!1,payload:n,verticalAlign:r="bottom",nameKey:s},i)=>{const{config:a}=XL();return n?.length?o.jsx("div",{ref:i,className:xe("flex items-center justify-center gap-4",r==="top"?"pb-3":"pt-3",t),children:n.filter(l=>l.type!=="none").map(l=>{const c=`${s||l.dataKey||"value"}`,d=fk(a,l,c);return o.jsxs("div",{className:xe("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"),children:[d?.icon&&!e?o.jsx(d.icon,{}):o.jsx("div",{className:"h-2 w-2 shrink-0 rounded-[2px]",style:{backgroundColor:l.color}}),d?.label]},l.value)})}):null});YL.displayName="ChartLegend";function fk(t,e,n){if(typeof e!="object"||e===null)return;const r="payload"in e&&typeof e.payload=="object"&&e.payload!==null?e.payload:void 0;let s=n;return n in e&&typeof e[n]=="string"?s=e[n]:r&&n in r&&typeof r[n]=="string"&&(s=r[n]),s in t?t[s]:t[n]}const J9=t=>typeof t=="boolean"?`${t}`:t===0?"0":t,eE=Fz,kf=(t,e)=>n=>{var r;if(e?.variants==null)return eE(t,n?.class,n?.className);const{variants:s,defaultVariants:i}=e,a=Object.keys(s).map(d=>{const h=n?.[d],m=i?.[d];if(h===null)return null;const g=J9(h)||J9(m);return s[d][g]}),l=n&&Object.entries(n).reduce((d,h)=>{let[m,g]=h;return g===void 0||(d[m]=g),d},{}),c=e==null||(r=e.compoundVariants)===null||r===void 0?void 0:r.reduce((d,h)=>{let{class:m,className:g,...x}=h;return Object.entries(x).every(y=>{let[w,S]=y;return Array.isArray(S)?S.includes({...i,...l}[w]):{...i,...l}[w]===S})?[...d,m,g]:d},[]);return eE(t,a,c,n?.class,n?.className)},I0=kf("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),de=b.forwardRef(({className:t,variant:e,size:n,asChild:r=!1,...s},i)=>{const a=r?Oee:"button";return o.jsx(a,{className:xe(I0({variant:e,size:n,className:t})),ref:i,...s})});de.displayName="Button";function kse(){const[t,e]=b.useState(null),[n,r]=b.useState(!0),[s,i]=b.useState(0),[a,l]=b.useState(24),[c,d]=b.useState(!0),[h,m]=b.useState(null),[g,x]=b.useState(!0),y=b.useCallback(async()=>{try{x(!0);const P=await Br.get("https://v1.hitokoto.cn/?c=a&c=b&c=c&c=d&c=h&c=i&c=k");m({hitokoto:P.data.hitokoto,from:P.data.from||P.data.from_who||"未知"})}catch(P){console.error("获取一言失败:",P),m({hitokoto:"人生就像一盒巧克力,你永远不知道下一颗是什么味道。",from:"阿甘正传"})}finally{x(!1)}},[]),w=b.useCallback(async()=>{try{const P=localStorage.getItem("access-token"),B=await Br.get(`/api/webui/statistics/dashboard?hours=${a}`,{headers:{Authorization:`Bearer ${P}`}});e(B.data),r(!1),i(100)}catch(P){console.error("Failed to fetch dashboard data:",P),r(!1),i(100)}},[a]);if(b.useEffect(()=>{if(!n)return;i(0);const P=setTimeout(()=>i(15),200),B=setTimeout(()=>i(30),800),$=setTimeout(()=>i(45),2e3),U=setTimeout(()=>i(60),4e3),te=setTimeout(()=>i(75),6500),z=setTimeout(()=>i(85),9e3),Q=setTimeout(()=>i(92),11e3);return()=>{clearTimeout(P),clearTimeout(B),clearTimeout($),clearTimeout(U),clearTimeout(te),clearTimeout(z),clearTimeout(Q)}},[n]),b.useEffect(()=>{w(),y()},[w,y]),b.useEffect(()=>{if(!c)return;const P=setInterval(()=>{w()},3e4);return()=>clearInterval(P)},[c,w]),n||!t)return o.jsx("div",{className:"flex items-center justify-center h-[calc(100vh-200px)]",children:o.jsxs("div",{className:"text-center space-y-6 w-full max-w-md px-4",children:[o.jsx(Ps,{className:"h-12 w-12 animate-spin mx-auto text-primary"}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-lg font-medium",children:"加载统计数据中..."}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"正在获取麦麦运行数据"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(Lp,{value:s,className:"h-2"}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:[s,"%"]})]})]})});const{summary:S,model_stats:k,hourly_data:j,daily_data:N,recent_activity:T}=t,E=P=>{const B=Math.floor(P/3600),$=Math.floor(P%3600/60);return`${B}小时${$}分钟`},_=P=>new Date(P).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),A=k.slice(0,6).map(P=>({name:P.model_name,value:P.request_count,fill:`hsl(var(--chart-${k.indexOf(P)%5+1}))`})),L={requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"},tokens:{label:"Tokens",color:"hsl(var(--chart-3))"}};return o.jsx(gn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"实时监控面板"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"麦麦运行状态和统计数据一览"})]}),o.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[o.jsx(ja,{value:a.toString(),onValueChange:P=>l(Number(P)),children:o.jsxs(Wi,{className:"grid grid-cols-3 w-full sm:w-auto",children:[o.jsx(Lt,{value:"24",children:"24小时"}),o.jsx(Lt,{value:"168",children:"7天"}),o.jsx(Lt,{value:"720",children:"30天"})]})}),o.jsxs(de,{variant:c?"default":"outline",size:"sm",onClick:()=>d(!c),className:"gap-2",children:[o.jsx(Ps,{className:`h-4 w-4 ${c?"animate-spin":""}`}),o.jsx("span",{className:"hidden sm:inline",children:"自动刷新"})]}),o.jsx(de,{variant:"outline",size:"sm",onClick:w,children:o.jsx(Ps,{className:"h-4 w-4"})})]})]}),o.jsxs("div",{className:"flex items-center gap-3 px-4 py-2 rounded-lg border border-dashed border-muted-foreground/30 bg-muted/20",children:[g?o.jsx(cse,{className:"h-5 flex-1"}):h?o.jsxs("p",{className:"flex-1 text-sm text-muted-foreground italic truncate",children:['"',h.hitokoto,'" —— ',h.from]}):null,o.jsx(de,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0",onClick:y,disabled:g,children:o.jsx(Ps,{className:`h-3.5 w-3.5 ${g?"animate-spin":""}`})})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-4",children:[o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"总请求数"}),o.jsx(Iee,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:S.total_requests.toLocaleString()}),o.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["最近",a<48?a+"小时":Math.floor(a/24)+"天"]})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"总花费"}),o.jsx(Lee,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsxs("div",{className:"text-2xl font-bold",children:["¥",S.total_cost.toFixed(2)]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:S.cost_per_hour>0?`¥${S.cost_per_hour.toFixed(2)}/小时`:"暂无数据"})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"Token消耗"}),o.jsx(ek,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsxs("div",{className:"text-2xl font-bold",children:[(S.total_tokens/1e3).toFixed(1),"K"]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:S.tokens_per_hour>0?`${(S.tokens_per_hour/1e3).toFixed(1)}K/小时`:"暂无数据"})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"平均响应"}),o.jsx(tk,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsxs("div",{className:"text-2xl font-bold",children:[S.avg_response_time.toFixed(2),"s"]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"API平均耗时"})]})]})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 sm:grid-cols-3",children:[o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"在线时长"}),o.jsx(_h,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsx(Gn,{children:o.jsx("div",{className:"text-xl font-bold",children:E(S.online_time)})})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"消息处理"}),o.jsx(Wh,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-xl font-bold",children:S.total_messages.toLocaleString()}),o.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["回复 ",S.total_replies.toLocaleString()," 条"]})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"成本效率"}),o.jsx(Bee,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-xl font-bold",children:S.total_messages>0?`¥${(S.total_cost/S.total_messages*100).toFixed(2)}`:"¥0.00"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"每100条消息"})]})]})]}),o.jsxs(ja,{defaultValue:"trends",className:"space-y-4",children:[o.jsxs(Wi,{className:"grid w-full grid-cols-2 sm:grid-cols-4",children:[o.jsx(Lt,{value:"trends",children:"趋势"}),o.jsx(Lt,{value:"models",children:"模型"}),o.jsx(Lt,{value:"activity",children:"活动"}),o.jsx(Lt,{value:"daily",children:"日统计"})]}),o.jsxs(un,{value:"trends",className:"space-y-4",children:[o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"请求趋势"}),o.jsxs(ts,{children:["最近",a,"小时的请求量变化"]})]}),o.jsx(Gn,{children:o.jsx(gh,{config:L,className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:o.jsxs(TJ,{data:j,children:[o.jsx(Ux,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),o.jsx(Wx,{dataKey:"timestamp",tickFormatter:P=>_(P),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Dm,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Lm,{content:o.jsx(xh,{labelFormatter:P=>_(P)})}),o.jsx(EJ,{type:"monotone",dataKey:"requests",stroke:"var(--color-requests)",strokeWidth:2})]})})})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"花费趋势"}),o.jsx(ts,{children:"API调用成本变化"})]}),o.jsx(Gn,{children:o.jsx(gh,{config:L,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:o.jsxs(v4,{data:j,children:[o.jsx(Ux,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),o.jsx(Wx,{dataKey:"timestamp",tickFormatter:P=>_(P),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Dm,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Lm,{content:o.jsx(xh,{labelFormatter:P=>_(P)})}),o.jsx(Gx,{dataKey:"cost",fill:"var(--color-cost)"})]})})})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"Token消耗"}),o.jsx(ts,{children:"Token使用量变化"})]}),o.jsx(Gn,{children:o.jsx(gh,{config:L,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:o.jsxs(v4,{data:j,children:[o.jsx(Ux,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),o.jsx(Wx,{dataKey:"timestamp",tickFormatter:P=>_(P),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Dm,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Lm,{content:o.jsx(xh,{labelFormatter:P=>_(P)})}),o.jsx(Gx,{dataKey:"tokens",fill:"var(--color-tokens)"})]})})})]})]})]}),o.jsx(un,{value:"models",className:"space-y-4",children:o.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"模型请求分布"}),o.jsx(ts,{children:"各模型使用占比"})]}),o.jsx(Gn,{children:o.jsx(gh,{config:Object.fromEntries(k.slice(0,6).map((P,B)=>[P.model_name,{label:P.model_name,color:`hsl(var(--chart-${B%5+1}))`}])),className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:o.jsxs(_J,{children:[o.jsx(Lm,{content:o.jsx(xh,{})}),o.jsx(AJ,{data:A,cx:"50%",cy:"50%",labelLine:!1,label:({name:P,percent:B})=>`${P} ${B?(B*100).toFixed(0):0}%`,outerRadius:100,dataKey:"value",children:A.map((P,B)=>o.jsx(MJ,{fill:P.fill},`cell-${B}`))})]})})})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"模型详细统计"}),o.jsx(ts,{children:"请求数、花费和性能"})]}),o.jsx(Gn,{children:o.jsx(gn,{className:"h-[300px] sm:h-[400px]",children:o.jsx("div",{className:"space-y-3",children:k.map((P,B)=>o.jsxs("div",{className:"p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[o.jsxs("div",{className:"flex items-center justify-between mb-2",children:[o.jsx("h4",{className:"font-semibold text-sm truncate flex-1 min-w-0",children:P.model_name}),o.jsx("div",{className:"w-3 h-3 rounded-full ml-2 flex-shrink-0",style:{backgroundColor:`hsl(var(--chart-${B%5+1}))`}})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"请求数:"}),o.jsx("span",{className:"ml-1 font-medium",children:P.request_count.toLocaleString()})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"花费:"}),o.jsxs("span",{className:"ml-1 font-medium",children:["¥",P.total_cost.toFixed(2)]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),o.jsxs("span",{className:"ml-1 font-medium",children:[(P.total_tokens/1e3).toFixed(1),"K"]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"平均耗时:"}),o.jsxs("span",{className:"ml-1 font-medium",children:[P.avg_response_time.toFixed(2),"s"]})]})]})]},B))})})})]})]})}),o.jsx(un,{value:"activity",children:o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"最近活动"}),o.jsx(ts,{children:"最新的API调用记录"})]}),o.jsx(Gn,{children:o.jsx(gn,{className:"h-[400px] sm:h-[500px]",children:o.jsx("div",{className:"space-y-2",children:T.map((P,B)=>o.jsxs("div",{className:"p-3 sm:p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-2 mb-2",children:[o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("div",{className:"font-medium text-sm truncate",children:P.model}),o.jsx("div",{className:"text-xs text-muted-foreground",children:P.request_type})]}),o.jsx("div",{className:"text-xs text-muted-foreground flex-shrink-0",children:_(P.timestamp)})]}),o.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-2 text-xs",children:[o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),o.jsx("span",{className:"ml-1",children:P.tokens})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"花费:"}),o.jsxs("span",{className:"ml-1",children:["¥",P.cost.toFixed(4)]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"耗时:"}),o.jsxs("span",{className:"ml-1",children:[P.time_cost.toFixed(2),"s"]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"状态:"}),o.jsx("span",{className:`ml-1 ${P.status==="success"?"text-green-600":"text-red-600"}`,children:P.status})]})]})]},B))})})})]})}),o.jsx(un,{value:"daily",children:o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"每日统计"}),o.jsx(ts,{children:"最近7天的数据汇总"})]}),o.jsx(Gn,{children:o.jsx(gh,{config:{requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"}},className:"h-[400px] sm:h-[500px] w-full aspect-auto",children:o.jsxs(v4,{data:N,children:[o.jsx(Ux,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),o.jsx(Wx,{dataKey:"timestamp",tickFormatter:P=>{const B=new Date(P);return`${B.getMonth()+1}/${B.getDate()}`},stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Dm,{yAxisId:"left",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Dm,{yAxisId:"right",orientation:"right",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Lm,{content:o.jsx(xh,{labelFormatter:P=>new Date(P).toLocaleDateString("zh-CN")})}),o.jsx(Sse,{content:o.jsx(YL,{})}),o.jsx(Gx,{yAxisId:"left",dataKey:"requests",fill:"var(--color-requests)"}),o.jsx(Gx,{yAxisId:"right",dataKey:"cost",fill:"var(--color-cost)"})]})})})]})})]})]})})}const Ose={theme:"system",setTheme:()=>null},KL=b.createContext(Ose),Vj=()=>{const t=b.useContext(KL);if(t===void 0)throw new Error("useTheme must be used within a ThemeProvider");return t},jse=(t,e,n)=>{const r=document.documentElement.classList.contains("no-animations");if(!document.startViewTransition||r){e(t);return}const s=n.clientX,i=n.clientY,a=Math.hypot(Math.max(s,innerWidth-s),Math.max(i,innerHeight-i));document.startViewTransition(()=>{e(t)}).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${s}px ${i}px)`,`circle(${a}px at ${s}px ${i}px)`]},{duration:500,easing:"ease-in-out",pseudoElement:"::view-transition-new(root)"})})},ZL=b.createContext(void 0),JL=()=>{const t=b.useContext(ZL);if(t===void 0)throw new Error("useAnimation must be used within an AnimationProvider");return t};var sb="Switch",[Nse]=Ra(sb),[Cse,Tse]=Nse(sb),eB=b.forwardRef((t,e)=>{const{__scopeSwitch:n,name:r,checked:s,defaultChecked:i,required:a,disabled:l,value:c="on",onCheckedChange:d,form:h,...m}=t,[g,x]=b.useState(null),y=Yn(e,N=>x(N)),w=b.useRef(!1),S=g?h||!!g.closest("form"):!0,[k,j]=Xl({prop:s,defaultProp:i??!1,onChange:d,caller:sb});return o.jsxs(Cse,{scope:n,checked:k,disabled:l,children:[o.jsx(xn.button,{type:"button",role:"switch","aria-checked":k,"aria-required":a,"data-state":sB(k),"data-disabled":l?"":void 0,disabled:l,value:c,...m,ref:y,onClick:nt(t.onClick,N=>{j(T=>!T),S&&(w.current=N.isPropagationStopped(),w.current||N.stopPropagation())})}),S&&o.jsx(rB,{control:g,bubbles:!w.current,name:r,value:c,checked:k,required:a,disabled:l,form:h,style:{transform:"translateX(-100%)"}})]})});eB.displayName=sb;var tB="SwitchThumb",nB=b.forwardRef((t,e)=>{const{__scopeSwitch:n,...r}=t,s=Tse(tB,n);return o.jsx(xn.span,{"data-state":sB(s.checked),"data-disabled":s.disabled?"":void 0,...r,ref:e})});nB.displayName=tB;var Ese="SwitchBubbleInput",rB=b.forwardRef(({__scopeSwitch:t,control:e,checked:n,bubbles:r=!0,...s},i)=>{const a=b.useRef(null),l=Yn(a,i),c=eI(n),d=tI(e);return b.useEffect(()=>{const h=a.current;if(!h)return;const m=window.HTMLInputElement.prototype,x=Object.getOwnPropertyDescriptor(m,"checked").set;if(c!==n&&x){const y=new Event("click",{bubbles:r});x.call(h,n),h.dispatchEvent(y)}},[c,n,r]),o.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:n,...s,tabIndex:-1,ref:l,style:{...s.style,...d,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});rB.displayName=Ese;function sB(t){return t?"checked":"unchecked"}var iB=eB,_se=nB;const Bt=b.forwardRef(({className:t,...e},n)=>o.jsx(iB,{className:xe("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",t),...e,ref:n,children:o.jsx(_se,{className:xe("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));Bt.displayName=iB.displayName;const Ase=kf("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),he=b.forwardRef(({className:t,...e},n)=>o.jsx(nI,{ref:n,className:xe(Ase(),t),...e}));he.displayName=nI.displayName;const ze=b.forwardRef(({className:t,type:e,...n},r)=>o.jsx("input",{type:e,className:xe("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",t),ref:r,...n}));ze.displayName="Input";const Mse=5,Rse=5e3;let E4=0;function Dse(){return E4=(E4+1)%Number.MAX_SAFE_INTEGER,E4.toString()}const _4=new Map,tE=t=>{if(_4.has(t))return;const e=setTimeout(()=>{_4.delete(t),y0({type:"REMOVE_TOAST",toastId:t})},Rse);_4.set(t,e)},Pse=(t,e)=>{switch(e.type){case"ADD_TOAST":return{...t,toasts:[e.toast,...t.toasts].slice(0,Mse)};case"UPDATE_TOAST":return{...t,toasts:t.toasts.map(n=>n.id===e.toast.id?{...n,...e.toast}:n)};case"DISMISS_TOAST":{const{toastId:n}=e;return n?tE(n):t.toasts.forEach(r=>{tE(r.id)}),{...t,toasts:t.toasts.map(r=>r.id===n||n===void 0?{...r,open:!1}:r)}}case"REMOVE_TOAST":return e.toastId===void 0?{...t,toasts:[]}:{...t,toasts:t.toasts.filter(n=>n.id!==e.toastId)}}},rv=[];let sv={toasts:[]};function y0(t){sv=Pse(sv,t),rv.forEach(e=>{e(sv)})}function zse({...t}){const e=Dse(),n=s=>y0({type:"UPDATE_TOAST",toast:{...s,id:e}}),r=()=>y0({type:"DISMISS_TOAST",toastId:e});return y0({type:"ADD_TOAST",toast:{...t,id:e,open:!0,onOpenChange:s=>{s||r()}}}),{id:e,dismiss:r,update:n}}function as(){const[t,e]=b.useState(sv);return b.useEffect(()=>(rv.push(e),()=>{const n=rv.indexOf(e);n>-1&&rv.splice(n,1)}),[t]),{...t,toast:zse,dismiss:n=>y0({type:"DISMISS_TOAST",toastId:n})}}const Ise=[{id:"minLength",label:"长度至少 10 位",description:"Token 长度必须大于等于 10 个字符",validate:t=>t.length>=10},{id:"hasUppercase",label:"包含大写字母",description:"至少包含一个大写字母 (A-Z)",validate:t=>/[A-Z]/.test(t)},{id:"hasLowercase",label:"包含小写字母",description:"至少包含一个小写字母 (a-z)",validate:t=>/[a-z]/.test(t)},{id:"hasSpecialChar",label:"包含特殊符号",description:"至少包含一个特殊符号 (!@#$%^&*()_+-=[]{}|;:,.<>?/)",validate:t=>/[!@#$%^&*()_+\-=[\]{}|;:,.<>?/]/.test(t)}];function Lse(t){const e=Ise.map(r=>({id:r.id,label:r.label,description:r.description,passed:r.validate(t)}));return{isValid:e.every(r=>r.passed),rules:e}}const Uj="0.11.6 Beta",Wj="MaiBot Dashboard",Bse=`${Wj} v${Uj}`,Fse=(t="v")=>`${t}${Uj}`,Dr=Nj,Of=rI,qse=kj,Gj=Hy,aB=b.forwardRef(({className:t,...e},n)=>o.jsx(qy,{ref:n,className:xe("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),...e}));aB.displayName=qy.displayName;const Sr=b.forwardRef(({className:t,children:e,preventOutsideClose:n=!1,...r},s)=>o.jsxs(qse,{children:[o.jsx(aB,{}),o.jsxs($y,{ref:s,className:xe("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",t),onPointerDownOutside:n?i=>i.preventDefault():void 0,onInteractOutside:n?i=>i.preventDefault():void 0,...r,children:[e,o.jsxs(Hy,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[o.jsx(_p,{className:"h-4 w-4"}),o.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Sr.displayName=$y.displayName;const kr=({className:t,...e})=>o.jsx("div",{className:xe("flex flex-col space-y-1.5 text-center sm:text-left",t),...e});kr.displayName="DialogHeader";const ws=({className:t,...e})=>o.jsx("div",{className:xe("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...e});ws.displayName="DialogFooter";const Or=b.forwardRef(({className:t,...e},n)=>o.jsx(Oj,{ref:n,className:xe("text-lg font-semibold leading-none tracking-tight",t),...e}));Or.displayName=Oj.displayName;const ss=b.forwardRef(({className:t,...e},n)=>o.jsx(jj,{ref:n,className:xe("text-sm text-muted-foreground",t),...e}));ss.displayName=jj.displayName;var $se=Symbol("radix.slottable");function Hse(t){const e=({children:n})=>o.jsx(o.Fragment,{children:n});return e.displayName=`${t}.Slottable`,e.__radixId=$se,e}var oB="AlertDialog",[Qse]=Ra(oB,[sI]),Yl=sI(),lB=t=>{const{__scopeAlertDialog:e,...n}=t,r=Yl(e);return o.jsx(Nj,{...r,...n,modal:!0})};lB.displayName=oB;var Vse="AlertDialogTrigger",cB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Yl(n);return o.jsx(rI,{...s,...r,ref:e})});cB.displayName=Vse;var Use="AlertDialogPortal",uB=t=>{const{__scopeAlertDialog:e,...n}=t,r=Yl(e);return o.jsx(kj,{...r,...n})};uB.displayName=Use;var Wse="AlertDialogOverlay",dB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Yl(n);return o.jsx(qy,{...s,...r,ref:e})});dB.displayName=Wse;var Mh="AlertDialogContent",[Gse,Xse]=Qse(Mh),Yse=Hse("AlertDialogContent"),hB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,children:r,...s}=t,i=Yl(n),a=b.useRef(null),l=Yn(e,a),c=b.useRef(null);return o.jsx(jee,{contentName:Mh,titleName:fB,docsSlug:"alert-dialog",children:o.jsx(Gse,{scope:n,cancelRef:c,children:o.jsxs($y,{role:"alertdialog",...i,...s,ref:l,onOpenAutoFocus:nt(s.onOpenAutoFocus,d=>{d.preventDefault(),c.current?.focus({preventScroll:!0})}),onPointerDownOutside:d=>d.preventDefault(),onInteractOutside:d=>d.preventDefault(),children:[o.jsx(Yse,{children:r}),o.jsx(Zse,{contentRef:a})]})})})});hB.displayName=Mh;var fB="AlertDialogTitle",mB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Yl(n);return o.jsx(Oj,{...s,...r,ref:e})});mB.displayName=fB;var pB="AlertDialogDescription",gB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Yl(n);return o.jsx(jj,{...s,...r,ref:e})});gB.displayName=pB;var Kse="AlertDialogAction",xB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Yl(n);return o.jsx(Hy,{...s,...r,ref:e})});xB.displayName=Kse;var vB="AlertDialogCancel",yB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,{cancelRef:s}=Xse(vB,n),i=Yl(n),a=Yn(e,s);return o.jsx(Hy,{...i,...r,ref:a})});yB.displayName=vB;var Zse=({contentRef:t})=>{const e=`\`${Mh}\` requires a description for the component to be accessible for screen reader users. +`)}}):null},Bm=EJ,yh=b.forwardRef(({active:t,payload:e,className:n,indicator:r="dot",hideLabel:s=!1,hideIndicator:i=!1,label:a,labelFormatter:l,labelClassName:c,formatter:d,color:h,nameKey:m,labelKey:g},x)=>{const{config:y}=JL(),w=b.useMemo(()=>{if(s||!e?.length)return null;const[k]=e,j=`${g||k?.dataKey||k?.name||"value"}`,N=gk(y,k,j),T=!g&&typeof a=="string"?y[a]?.label||a:N?.label;return l?o.jsx("div",{className:xe("font-medium",c),children:l(T,e)}):T?o.jsx("div",{className:xe("font-medium",c),children:T}):null},[a,l,e,s,c,y,g]);if(!t||!e?.length)return null;const S=e.length===1&&r!=="dot";return o.jsxs("div",{ref:x,className:xe("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",n),children:[S?null:w,o.jsx("div",{className:"grid gap-1.5",children:e.filter(k=>k.type!=="none").map((k,j)=>{const N=`${m||k.name||k.dataKey||"value"}`,T=gk(y,k,N),E=h||k.payload.fill||k.color;return o.jsx("div",{className:xe("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",r==="dot"&&"items-center"),children:d&&k?.value!==void 0&&k.name?d(k.value,k.name,k,j,k.payload):o.jsxs(o.Fragment,{children:[T?.icon?o.jsx(T.icon,{}):!i&&o.jsx("div",{className:xe("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]",{"h-2.5 w-2.5":r==="dot","w-1":r==="line","w-0 border-[1.5px] border-dashed bg-transparent":r==="dashed","my-0.5":S&&r==="dashed"}),style:{"--color-bg":E,"--color-border":E}}),o.jsxs("div",{className:xe("flex flex-1 justify-between leading-none",S?"items-end":"items-center"),children:[o.jsxs("div",{className:"grid gap-1.5",children:[S?w:null,o.jsx("span",{className:"text-muted-foreground",children:T?.label||k.name})]}),k.value&&o.jsx("span",{className:"font-mono font-medium tabular-nums text-foreground",children:k.value.toLocaleString()})]})]})},k.dataKey)})})]})});yh.displayName="ChartTooltip";const Ose=_J,eB=b.forwardRef(({className:t,hideIcon:e=!1,payload:n,verticalAlign:r="bottom",nameKey:s},i)=>{const{config:a}=JL();return n?.length?o.jsx("div",{ref:i,className:xe("flex items-center justify-center gap-4",r==="top"?"pb-3":"pt-3",t),children:n.filter(l=>l.type!=="none").map(l=>{const c=`${s||l.dataKey||"value"}`,d=gk(a,l,c);return o.jsxs("div",{className:xe("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"),children:[d?.icon&&!e?o.jsx(d.icon,{}):o.jsx("div",{className:"h-2 w-2 shrink-0 rounded-[2px]",style:{backgroundColor:l.color}}),d?.label]},l.value)})}):null});eB.displayName="ChartLegend";function gk(t,e,n){if(typeof e!="object"||e===null)return;const r="payload"in e&&typeof e.payload=="object"&&e.payload!==null?e.payload:void 0;let s=n;return n in e&&typeof e[n]=="string"?s=e[n]:r&&n in r&&typeof r[n]=="string"&&(s=r[n]),s in t?t[s]:t[n]}const iE=t=>typeof t=="boolean"?`${t}`:t===0?"0":t,aE=Qz,kf=(t,e)=>n=>{var r;if(e?.variants==null)return aE(t,n?.class,n?.className);const{variants:s,defaultVariants:i}=e,a=Object.keys(s).map(d=>{const h=n?.[d],m=i?.[d];if(h===null)return null;const g=iE(h)||iE(m);return s[d][g]}),l=n&&Object.entries(n).reduce((d,h)=>{let[m,g]=h;return g===void 0||(d[m]=g),d},{}),c=e==null||(r=e.compoundVariants)===null||r===void 0?void 0:r.reduce((d,h)=>{let{class:m,className:g,...x}=h;return Object.entries(x).every(y=>{let[w,S]=y;return Array.isArray(S)?S.includes({...i,...l}[w]):{...i,...l}[w]===S})?[...d,m,g]:d},[]);return aE(t,a,c,n?.class,n?.className)},q0=kf("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),ue=b.forwardRef(({className:t,variant:e,size:n,asChild:r=!1,...s},i)=>{const a=r?Cee:"button";return o.jsx(a,{className:xe(q0({variant:e,size:n,className:t})),ref:i,...s})});ue.displayName="Button";const jse=kf("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function tn({className:t,variant:e,...n}){return o.jsx("div",{className:xe(jse({variant:e}),t),...n})}const Nse=5,Cse=5e3;let R4=0;function Tse(){return R4=(R4+1)%Number.MAX_SAFE_INTEGER,R4.toString()}const D4=new Map,oE=t=>{if(D4.has(t))return;const e=setTimeout(()=>{D4.delete(t),S0({type:"REMOVE_TOAST",toastId:t})},Cse);D4.set(t,e)},Ese=(t,e)=>{switch(e.type){case"ADD_TOAST":return{...t,toasts:[e.toast,...t.toasts].slice(0,Nse)};case"UPDATE_TOAST":return{...t,toasts:t.toasts.map(n=>n.id===e.toast.id?{...n,...e.toast}:n)};case"DISMISS_TOAST":{const{toastId:n}=e;return n?oE(n):t.toasts.forEach(r=>{oE(r.id)}),{...t,toasts:t.toasts.map(r=>r.id===n||n===void 0?{...r,open:!1}:r)}}case"REMOVE_TOAST":return e.toastId===void 0?{...t,toasts:[]}:{...t,toasts:t.toasts.filter(n=>n.id!==e.toastId)}}},lv=[];let cv={toasts:[]};function S0(t){cv=Ese(cv,t),lv.forEach(e=>{e(cv)})}function _se({...t}){const e=Tse(),n=s=>S0({type:"UPDATE_TOAST",toast:{...s,id:e}}),r=()=>S0({type:"DISMISS_TOAST",toastId:e});return S0({type:"ADD_TOAST",toast:{...t,id:e,open:!0,onOpenChange:s=>{s||r()}}}),{id:e,dismiss:r,update:n}}function Lr(){const[t,e]=b.useState(cv);return b.useEffect(()=>(lv.push(e),()=>{const n=lv.indexOf(e);n>-1&&lv.splice(n,1)}),[t]),{...t,toast:_se,dismiss:n=>S0({type:"DISMISS_TOAST",toastId:n})}}const Ase=t=>{const e=[];for(let n=0;n{try{x(!0);const $=await Cr.get("https://v1.hitokoto.cn/?c=a&c=b&c=c&c=d&c=h&c=i&c=k");m({hitokoto:$.data.hitokoto,from:$.data.from||$.data.from_who||"未知"})}catch($){console.error("获取一言失败:",$),m({hitokoto:"人生就像一盒巧克力,你永远不知道下一颗是什么味道。",from:"阿甘正传"})}finally{x(!1)}},[]),T=b.useCallback(async()=>{try{const $=localStorage.getItem("access-token"),K=await Cr.get("/api/webui/system/status",{headers:{Authorization:`Bearer ${$}`}});w(K.data)}catch($){console.error("获取机器人状态失败:",$),w(null)}},[]),E=async()=>{if(!S)try{k(!0);const $=localStorage.getItem("access-token");await Cr.post("/api/webui/system/restart",{},{headers:{Authorization:`Bearer ${$}`}}),j({title:"重启中",description:"麦麦正在重启,请稍候..."}),setTimeout(()=>{T(),k(!1)},3e3)}catch($){console.error("重启失败:",$),j({title:"重启失败",description:"无法重启麦麦,请检查控制台",variant:"destructive"}),k(!1)}},_=b.useCallback(async()=>{try{const $=localStorage.getItem("access-token"),K=await Cr.get(`/api/webui/statistics/dashboard?hours=${a}`,{headers:{Authorization:`Bearer ${$}`}});e(K.data),r(!1),i(100)}catch($){console.error("Failed to fetch dashboard data:",$),r(!1),i(100)}},[a]);if(b.useEffect(()=>{if(!n)return;i(0);const $=setTimeout(()=>i(15),200),K=setTimeout(()=>i(30),800),Y=setTimeout(()=>i(45),2e3),R=setTimeout(()=>i(60),4e3),ie=setTimeout(()=>i(75),6500),X=setTimeout(()=>i(85),9e3),z=setTimeout(()=>i(92),11e3);return()=>{clearTimeout($),clearTimeout(K),clearTimeout(Y),clearTimeout(R),clearTimeout(ie),clearTimeout(X),clearTimeout(z)}},[n]),b.useEffect(()=>{_(),N(),T()},[_,N,T]),b.useEffect(()=>{if(!c)return;const $=setInterval(()=>{_(),T()},3e4);return()=>clearInterval($)},[c,_,T]),n||!t)return o.jsx("div",{className:"flex items-center justify-center h-[calc(100vh-200px)]",children:o.jsxs("div",{className:"text-center space-y-6 w-full max-w-md px-4",children:[o.jsx(Qs,{className:"h-12 w-12 animate-spin mx-auto text-primary"}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-lg font-medium",children:"加载统计数据中..."}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"正在获取麦麦运行数据"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(Qp,{value:s,className:"h-2"}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:[s,"%"]})]})]})});const{summary:A,model_stats:D,hourly_data:q,daily_data:B,recent_activity:H}=t,W=$=>{const K=Math.floor($/3600),Y=Math.floor($%3600/60);return`${K}小时${Y}分钟`},ee=$=>new Date($).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),I=Ase(D.length),V=D.map(($,K)=>({name:$.model_name,value:$.request_count,fill:I[K]})),L={requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"},tokens:{label:"Tokens",color:"hsl(var(--chart-3))"}};return o.jsx(pn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"实时监控面板"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"麦麦运行状态和统计数据一览"})]}),o.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[o.jsx(Yi,{value:a.toString(),onValueChange:$=>l(Number($)),children:o.jsxs(ji,{className:"grid grid-cols-3 w-full sm:w-auto",children:[o.jsx(Bt,{value:"24",children:"24小时"}),o.jsx(Bt,{value:"168",children:"7天"}),o.jsx(Bt,{value:"720",children:"30天"})]})}),o.jsxs(ue,{variant:c?"default":"outline",size:"sm",onClick:()=>d(!c),className:"gap-2",children:[o.jsx(Qs,{className:`h-4 w-4 ${c?"animate-spin":""}`}),o.jsx("span",{className:"hidden sm:inline",children:"自动刷新"})]}),o.jsx(ue,{variant:"outline",size:"sm",onClick:_,children:o.jsx(Qs,{className:"h-4 w-4"})})]})]}),o.jsxs("div",{className:"flex items-center gap-3 px-4 py-2 rounded-lg border border-dashed border-muted-foreground/30 bg-muted/20",children:[g?o.jsx(dse,{className:"h-5 flex-1"}):h?o.jsxs("p",{className:"flex-1 text-sm text-muted-foreground italic truncate",children:['"',h.hitokoto,'" —— ',h.from]}):null,o.jsx(ue,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0",onClick:N,disabled:g,children:o.jsx(Qs,{className:`h-3.5 w-3.5 ${g?"animate-spin":""}`})})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-3",children:[o.jsxs(Lt,{className:"lg:col-span-1",children:[o.jsx(En,{className:"pb-3",children:o.jsxs(_n,{className:"text-sm font-medium flex items-center gap-2",children:[o.jsx(Dp,{className:"h-4 w-4"}),"麦麦状态"]})}),o.jsx(Xn,{children:o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsx("div",{className:"flex items-center gap-2",children:y?.running?o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-3 w-3 rounded-full bg-green-500 animate-pulse"}),o.jsxs(tn,{variant:"outline",className:"text-green-600 border-green-300 bg-green-50",children:[o.jsx(Ya,{className:"h-3 w-3 mr-1"}),"运行中"]})]}):o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-3 w-3 rounded-full bg-red-500"}),o.jsxs(tn,{variant:"outline",className:"text-red-600 border-red-300 bg-red-50",children:[o.jsx(Lo,{className:"h-3 w-3 mr-1"}),"已停止"]})]})}),y&&o.jsxs("div",{className:"text-xs text-muted-foreground",children:[o.jsxs("span",{children:["v",y.version]}),o.jsx("span",{className:"mx-2",children:"|"}),o.jsxs("span",{children:["运行 ",W(y.uptime)]})]})]})})]}),o.jsxs(Lt,{className:"lg:col-span-2",children:[o.jsx(En,{className:"pb-3",children:o.jsxs(_n,{className:"text-sm font-medium flex items-center gap-2",children:[o.jsx(Zu,{className:"h-4 w-4"}),"快速操作"]})}),o.jsx(Xn,{children:o.jsxs("div",{className:"flex flex-wrap gap-2",children:[o.jsxs(ue,{variant:"outline",size:"sm",onClick:E,disabled:S,className:"gap-2",children:[o.jsx(zj,{className:`h-4 w-4 ${S?"animate-spin":""}`}),S?"重启中...":"重启麦麦"]}),o.jsx(ue,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:o.jsxs(rv,{to:"/logs",children:[o.jsx(Po,{className:"h-4 w-4"}),"查看日志"]})}),o.jsx(ue,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:o.jsxs(rv,{to:"/plugins",children:[o.jsx(Fee,{className:"h-4 w-4"}),"插件管理"]})}),o.jsx(ue,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:o.jsxs(rv,{to:"/settings",children:[o.jsx(Vc,{className:"h-4 w-4"}),"系统设置"]})})]})})]})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-4",children:[o.jsxs(Lt,{children:[o.jsxs(En,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(_n,{className:"text-sm font-medium",children:"总请求数"}),o.jsx(qee,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Xn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:A.total_requests.toLocaleString()}),o.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["最近",a<48?a+"小时":Math.floor(a/24)+"天"]})]})]}),o.jsxs(Lt,{children:[o.jsxs(En,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(_n,{className:"text-sm font-medium",children:"总花费"}),o.jsx($ee,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Xn,{children:[o.jsxs("div",{className:"text-2xl font-bold",children:["¥",A.total_cost.toFixed(2)]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:A.cost_per_hour>0?`¥${A.cost_per_hour.toFixed(2)}/小时`:"暂无数据"})]})]}),o.jsxs(Lt,{children:[o.jsxs(En,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(_n,{className:"text-sm font-medium",children:"Token消耗"}),o.jsx(sk,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Xn,{children:[o.jsxs("div",{className:"text-2xl font-bold",children:[(A.total_tokens/1e3).toFixed(1),"K"]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:A.tokens_per_hour>0?`${(A.tokens_per_hour/1e3).toFixed(1)}K/小时`:"暂无数据"})]})]}),o.jsxs(Lt,{children:[o.jsxs(En,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(_n,{className:"text-sm font-medium",children:"平均响应"}),o.jsx(Zu,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Xn,{children:[o.jsxs("div",{className:"text-2xl font-bold",children:[A.avg_response_time.toFixed(2),"s"]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"API平均耗时"})]})]})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 sm:grid-cols-3",children:[o.jsxs(Lt,{children:[o.jsxs(En,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(_n,{className:"text-sm font-medium",children:"在线时长"}),o.jsx(Mh,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsx(Xn,{children:o.jsx("div",{className:"text-xl font-bold",children:W(A.online_time)})})]}),o.jsxs(Lt,{children:[o.jsxs(En,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(_n,{className:"text-sm font-medium",children:"消息处理"}),o.jsx(Gh,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Xn,{children:[o.jsx("div",{className:"text-xl font-bold",children:A.total_messages.toLocaleString()}),o.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["回复 ",A.total_replies.toLocaleString()," 条"]})]})]}),o.jsxs(Lt,{children:[o.jsxs(En,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(_n,{className:"text-sm font-medium",children:"成本效率"}),o.jsx(Hee,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Xn,{children:[o.jsx("div",{className:"text-xl font-bold",children:A.total_messages>0?`¥${(A.total_cost/A.total_messages*100).toFixed(2)}`:"¥0.00"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"每100条消息"})]})]})]}),o.jsxs(Yi,{defaultValue:"trends",className:"space-y-4",children:[o.jsxs(ji,{className:"grid w-full grid-cols-2 sm:grid-cols-4",children:[o.jsx(Bt,{value:"trends",children:"趋势"}),o.jsx(Bt,{value:"models",children:"模型"}),o.jsx(Bt,{value:"activity",children:"活动"}),o.jsx(Bt,{value:"daily",children:"日统计"})]}),o.jsxs(ln,{value:"trends",className:"space-y-4",children:[o.jsxs(Lt,{children:[o.jsxs(En,{children:[o.jsx(_n,{children:"请求趋势"}),o.jsxs(Wr,{children:["最近",a,"小时的请求量变化"]})]}),o.jsx(Xn,{children:o.jsx(vh,{config:L,className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:o.jsxs(AJ,{data:q,children:[o.jsx(Kx,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),o.jsx(Zx,{dataKey:"timestamp",tickFormatter:$=>ee($),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Pm,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Bm,{content:o.jsx(yh,{labelFormatter:$=>ee($)})}),o.jsx(MJ,{type:"monotone",dataKey:"requests",stroke:"var(--color-requests)",strokeWidth:2})]})})})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[o.jsxs(Lt,{children:[o.jsxs(En,{children:[o.jsx(_n,{children:"花费趋势"}),o.jsx(Wr,{children:"API调用成本变化"})]}),o.jsx(Xn,{children:o.jsx(vh,{config:L,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:o.jsxs(S4,{data:q,children:[o.jsx(Kx,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),o.jsx(Zx,{dataKey:"timestamp",tickFormatter:$=>ee($),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Pm,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Bm,{content:o.jsx(yh,{labelFormatter:$=>ee($)})}),o.jsx(Jx,{dataKey:"cost",fill:"var(--color-cost)"})]})})})]}),o.jsxs(Lt,{children:[o.jsxs(En,{children:[o.jsx(_n,{children:"Token消耗"}),o.jsx(Wr,{children:"Token使用量变化"})]}),o.jsx(Xn,{children:o.jsx(vh,{config:L,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:o.jsxs(S4,{data:q,children:[o.jsx(Kx,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),o.jsx(Zx,{dataKey:"timestamp",tickFormatter:$=>ee($),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Pm,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Bm,{content:o.jsx(yh,{labelFormatter:$=>ee($)})}),o.jsx(Jx,{dataKey:"tokens",fill:"var(--color-tokens)"})]})})})]})]})]}),o.jsx(ln,{value:"models",className:"space-y-4",children:o.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[o.jsxs(Lt,{children:[o.jsxs(En,{children:[o.jsx(_n,{children:"模型请求分布"}),o.jsxs(Wr,{children:["各模型使用占比 (共 ",D.length," 个模型)"]})]}),o.jsx(Xn,{children:o.jsx(vh,{config:Object.fromEntries(D.map(($,K)=>[$.model_name,{label:$.model_name,color:I[K]}])),className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:o.jsxs(RJ,{children:[o.jsx(Bm,{content:o.jsx(yh,{})}),o.jsx(DJ,{data:V,cx:"50%",cy:"50%",labelLine:!1,label:({name:$,percent:K})=>K&&K<.05?"":`${$} ${K?(K*100).toFixed(0):0}%`,outerRadius:100,dataKey:"value",children:V.map(($,K)=>o.jsx(PJ,{fill:$.fill},`cell-${K}`))})]})})})]}),o.jsxs(Lt,{children:[o.jsxs(En,{children:[o.jsx(_n,{children:"模型详细统计"}),o.jsx(Wr,{children:"请求数、花费和性能"})]}),o.jsx(Xn,{children:o.jsx(pn,{className:"h-[300px] sm:h-[400px]",children:o.jsx("div",{className:"space-y-3",children:D.map(($,K)=>o.jsxs("div",{className:"p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[o.jsxs("div",{className:"flex items-center justify-between mb-2",children:[o.jsx("h4",{className:"font-semibold text-sm truncate flex-1 min-w-0",children:$.model_name}),o.jsx("div",{className:"w-3 h-3 rounded-full ml-2 flex-shrink-0",style:{backgroundColor:`hsl(var(--chart-${K%5+1}))`}})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"请求数:"}),o.jsx("span",{className:"ml-1 font-medium",children:$.request_count.toLocaleString()})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"花费:"}),o.jsxs("span",{className:"ml-1 font-medium",children:["¥",$.total_cost.toFixed(2)]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),o.jsxs("span",{className:"ml-1 font-medium",children:[($.total_tokens/1e3).toFixed(1),"K"]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"平均耗时:"}),o.jsxs("span",{className:"ml-1 font-medium",children:[$.avg_response_time.toFixed(2),"s"]})]})]})]},K))})})})]})]})}),o.jsx(ln,{value:"activity",children:o.jsxs(Lt,{children:[o.jsxs(En,{children:[o.jsx(_n,{children:"最近活动"}),o.jsx(Wr,{children:"最新的API调用记录"})]}),o.jsx(Xn,{children:o.jsx(pn,{className:"h-[400px] sm:h-[500px]",children:o.jsx("div",{className:"space-y-2",children:H.map(($,K)=>o.jsxs("div",{className:"p-3 sm:p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-2 mb-2",children:[o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("div",{className:"font-medium text-sm truncate",children:$.model}),o.jsx("div",{className:"text-xs text-muted-foreground",children:$.request_type})]}),o.jsx("div",{className:"text-xs text-muted-foreground flex-shrink-0",children:ee($.timestamp)})]}),o.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-2 text-xs",children:[o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),o.jsx("span",{className:"ml-1",children:$.tokens})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"花费:"}),o.jsxs("span",{className:"ml-1",children:["¥",$.cost.toFixed(4)]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"耗时:"}),o.jsxs("span",{className:"ml-1",children:[$.time_cost.toFixed(2),"s"]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"状态:"}),o.jsx("span",{className:`ml-1 ${$.status==="success"?"text-green-600":"text-red-600"}`,children:$.status})]})]})]},K))})})})]})}),o.jsx(ln,{value:"daily",children:o.jsxs(Lt,{children:[o.jsxs(En,{children:[o.jsx(_n,{children:"每日统计"}),o.jsx(Wr,{children:"最近7天的数据汇总"})]}),o.jsx(Xn,{children:o.jsx(vh,{config:{requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"}},className:"h-[400px] sm:h-[500px] w-full aspect-auto",children:o.jsxs(S4,{data:B,children:[o.jsx(Kx,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),o.jsx(Zx,{dataKey:"timestamp",tickFormatter:$=>{const K=new Date($);return`${K.getMonth()+1}/${K.getDate()}`},stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Pm,{yAxisId:"left",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Pm,{yAxisId:"right",orientation:"right",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Bm,{content:o.jsx(yh,{labelFormatter:$=>new Date($).toLocaleDateString("zh-CN")})}),o.jsx(Ose,{content:o.jsx(eB,{})}),o.jsx(Jx,{yAxisId:"left",dataKey:"requests",fill:"var(--color-requests)"}),o.jsx(Jx,{yAxisId:"right",dataKey:"cost",fill:"var(--color-cost)"})]})})})]})})]})]})})}const Rse={theme:"system",setTheme:()=>null},tB=b.createContext(Rse),Kj=()=>{const t=b.useContext(tB);if(t===void 0)throw new Error("useTheme must be used within a ThemeProvider");return t},Dse=(t,e,n)=>{const r=document.documentElement.classList.contains("no-animations");if(!document.startViewTransition||r){e(t);return}const s=n.clientX,i=n.clientY,a=Math.hypot(Math.max(s,innerWidth-s),Math.max(i,innerHeight-i));document.startViewTransition(()=>{e(t)}).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${s}px ${i}px)`,`circle(${a}px at ${s}px ${i}px)`]},{duration:500,easing:"ease-in-out",pseudoElement:"::view-transition-new(root)"})})},nB=b.createContext(void 0),rB=()=>{const t=b.useContext(nB);if(t===void 0)throw new Error("useAnimation must be used within an AnimationProvider");return t};var lb="Switch",[Pse]=Da(lb),[zse,Ise]=Pse(lb),sB=b.forwardRef((t,e)=>{const{__scopeSwitch:n,name:r,checked:s,defaultChecked:i,required:a,disabled:l,value:c="on",onCheckedChange:d,form:h,...m}=t,[g,x]=b.useState(null),y=er(e,N=>x(N)),w=b.useRef(!1),S=g?h||!!g.closest("form"):!0,[k,j]=Kl({prop:s,defaultProp:i??!1,onChange:d,caller:lb});return o.jsxs(zse,{scope:n,checked:k,disabled:l,children:[o.jsx(Sn.button,{type:"button",role:"switch","aria-checked":k,"aria-required":a,"data-state":lB(k),"data-disabled":l?"":void 0,disabled:l,value:c,...m,ref:y,onClick:nt(t.onClick,N=>{j(T=>!T),S&&(w.current=N.isPropagationStopped(),w.current||N.stopPropagation())})}),S&&o.jsx(oB,{control:g,bubbles:!w.current,name:r,value:c,checked:k,required:a,disabled:l,form:h,style:{transform:"translateX(-100%)"}})]})});sB.displayName=lb;var iB="SwitchThumb",aB=b.forwardRef((t,e)=>{const{__scopeSwitch:n,...r}=t,s=Ise(iB,n);return o.jsx(Sn.span,{"data-state":lB(s.checked),"data-disabled":s.disabled?"":void 0,...r,ref:e})});aB.displayName=iB;var Lse="SwitchBubbleInput",oB=b.forwardRef(({__scopeSwitch:t,control:e,checked:n,bubbles:r=!0,...s},i)=>{const a=b.useRef(null),l=er(a,i),c=sI(n),d=iI(e);return b.useEffect(()=>{const h=a.current;if(!h)return;const m=window.HTMLInputElement.prototype,x=Object.getOwnPropertyDescriptor(m,"checked").set;if(c!==n&&x){const y=new Event("click",{bubbles:r});x.call(h,n),h.dispatchEvent(y)}},[c,n,r]),o.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:n,...s,tabIndex:-1,ref:l,style:{...s.style,...d,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});oB.displayName=Lse;function lB(t){return t?"checked":"unchecked"}var cB=sB,Bse=aB;const Ft=b.forwardRef(({className:t,...e},n)=>o.jsx(cB,{className:xe("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",t),...e,ref:n,children:o.jsx(Bse,{className:xe("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));Ft.displayName=cB.displayName;const Fse=kf("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),he=b.forwardRef(({className:t,...e},n)=>o.jsx(aI,{ref:n,className:xe(Fse(),t),...e}));he.displayName=aI.displayName;const Pe=b.forwardRef(({className:t,type:e,...n},r)=>o.jsx("input",{type:e,className:xe("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",t),ref:r,...n}));Pe.displayName="Input";const qse=[{id:"minLength",label:"长度至少 10 位",description:"Token 长度必须大于等于 10 个字符",validate:t=>t.length>=10},{id:"hasUppercase",label:"包含大写字母",description:"至少包含一个大写字母 (A-Z)",validate:t=>/[A-Z]/.test(t)},{id:"hasLowercase",label:"包含小写字母",description:"至少包含一个小写字母 (a-z)",validate:t=>/[a-z]/.test(t)},{id:"hasSpecialChar",label:"包含特殊符号",description:"至少包含一个特殊符号 (!@#$%^&*()_+-=[]{}|;:,.<>?/)",validate:t=>/[!@#$%^&*()_+\-=[\]{}|;:,.<>?/]/.test(t)}];function $se(t){const e=qse.map(r=>({id:r.id,label:r.label,description:r.description,passed:r.validate(t)}));return{isValid:e.every(r=>r.passed),rules:e}}const Zj="0.11.6 Beta",Jj="MaiBot Dashboard",Hse=`${Jj} v${Zj}`,Qse=(t="v")=>`${t}${Zj}`,Er=Mj,Of=oI,Vse=Ej,e6=Gy,uB=b.forwardRef(({className:t,...e},n)=>o.jsx(Uy,{ref:n,className:xe("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),...e}));uB.displayName=Uy.displayName;const wr=b.forwardRef(({className:t,children:e,preventOutsideClose:n=!1,...r},s)=>o.jsxs(Vse,{children:[o.jsx(uB,{}),o.jsxs(Wy,{ref:s,className:xe("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",t),onPointerDownOutside:n?i=>i.preventDefault():void 0,onInteractOutside:n?i=>i.preventDefault():void 0,...r,children:[e,o.jsxs(Gy,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[o.jsx(Pp,{className:"h-4 w-4"}),o.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));wr.displayName=Wy.displayName;const Sr=({className:t,...e})=>o.jsx("div",{className:xe("flex flex-col space-y-1.5 text-center sm:text-left",t),...e});Sr.displayName="DialogHeader";const fs=({className:t,...e})=>o.jsx("div",{className:xe("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...e});fs.displayName="DialogFooter";const kr=b.forwardRef(({className:t,...e},n)=>o.jsx(_j,{ref:n,className:xe("text-lg font-semibold leading-none tracking-tight",t),...e}));kr.displayName=_j.displayName;const Xr=b.forwardRef(({className:t,...e},n)=>o.jsx(Aj,{ref:n,className:xe("text-sm text-muted-foreground",t),...e}));Xr.displayName=Aj.displayName;var Use=Symbol("radix.slottable");function Wse(t){const e=({children:n})=>o.jsx(o.Fragment,{children:n});return e.displayName=`${t}.Slottable`,e.__radixId=Use,e}var dB="AlertDialog",[Gse]=Da(dB,[lI]),Jl=lI(),hB=t=>{const{__scopeAlertDialog:e,...n}=t,r=Jl(e);return o.jsx(Mj,{...r,...n,modal:!0})};hB.displayName=dB;var Xse="AlertDialogTrigger",fB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Jl(n);return o.jsx(oI,{...s,...r,ref:e})});fB.displayName=Xse;var Yse="AlertDialogPortal",mB=t=>{const{__scopeAlertDialog:e,...n}=t,r=Jl(e);return o.jsx(Ej,{...r,...n})};mB.displayName=Yse;var Kse="AlertDialogOverlay",pB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Jl(n);return o.jsx(Uy,{...s,...r,ref:e})});pB.displayName=Kse;var Rh="AlertDialogContent",[Zse,Jse]=Gse(Rh),eie=Wse("AlertDialogContent"),gB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,children:r,...s}=t,i=Jl(n),a=b.useRef(null),l=er(e,a),c=b.useRef(null);return o.jsx(Tee,{contentName:Rh,titleName:xB,docsSlug:"alert-dialog",children:o.jsx(Zse,{scope:n,cancelRef:c,children:o.jsxs(Wy,{role:"alertdialog",...i,...s,ref:l,onOpenAutoFocus:nt(s.onOpenAutoFocus,d=>{d.preventDefault(),c.current?.focus({preventScroll:!0})}),onPointerDownOutside:d=>d.preventDefault(),onInteractOutside:d=>d.preventDefault(),children:[o.jsx(eie,{children:r}),o.jsx(nie,{contentRef:a})]})})})});gB.displayName=Rh;var xB="AlertDialogTitle",vB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Jl(n);return o.jsx(_j,{...s,...r,ref:e})});vB.displayName=xB;var yB="AlertDialogDescription",bB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Jl(n);return o.jsx(Aj,{...s,...r,ref:e})});bB.displayName=yB;var tie="AlertDialogAction",wB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Jl(n);return o.jsx(Gy,{...s,...r,ref:e})});wB.displayName=tie;var SB="AlertDialogCancel",kB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,{cancelRef:s}=Jse(SB,n),i=Jl(n),a=er(e,s);return o.jsx(Gy,{...i,...r,ref:a})});kB.displayName=SB;var nie=({contentRef:t})=>{const e=`\`${Rh}\` requires a description for the component to be accessible for screen reader users. -You can add a description to the \`${Mh}\` by passing a \`${pB}\` component as a child, which also benefits sighted users by adding visible context to the dialog. +You can add a description to the \`${Rh}\` by passing a \`${yB}\` component as a child, which also benefits sighted users by adding visible context to the dialog. -Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${Mh}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component. +Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${Rh}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component. -For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;return b.useEffect(()=>{document.getElementById(t.current?.getAttribute("aria-describedby"))||console.warn(e)},[e,t]),null},Jse=lB,eie=cB,tie=uB,bB=dB,wB=hB,SB=xB,kB=yB,OB=mB,jB=gB;const Dn=Jse,rs=eie,nie=tie,NB=b.forwardRef(({className:t,...e},n)=>o.jsx(bB,{className:xe("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),...e,ref:n}));NB.displayName=bB.displayName;const Nn=b.forwardRef(({className:t,...e},n)=>o.jsxs(nie,{children:[o.jsx(NB,{}),o.jsx(wB,{ref:n,className:xe("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",t),...e})]}));Nn.displayName=wB.displayName;const Cn=({className:t,...e})=>o.jsx("div",{className:xe("flex flex-col space-y-2 text-center sm:text-left",t),...e});Cn.displayName="AlertDialogHeader";const Tn=({className:t,...e})=>o.jsx("div",{className:xe("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...e});Tn.displayName="AlertDialogFooter";const En=b.forwardRef(({className:t,...e},n)=>o.jsx(OB,{ref:n,className:xe("text-lg font-semibold",t),...e}));En.displayName=OB.displayName;const _n=b.forwardRef(({className:t,...e},n)=>o.jsx(jB,{ref:n,className:xe("text-sm text-muted-foreground",t),...e}));_n.displayName=jB.displayName;const An=b.forwardRef(({className:t,...e},n)=>o.jsx(SB,{ref:n,className:xe(I0(),t),...e}));An.displayName=SB.displayName;const Mn=b.forwardRef(({className:t,...e},n)=>o.jsx(kB,{ref:n,className:xe(I0({variant:"outline"}),"mt-2 sm:mt-0",t),...e}));Mn.displayName=kB.displayName;function rie(){return o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"系统设置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理您的应用偏好设置"})]})}),o.jsxs(ja,{defaultValue:"appearance",className:"w-full",children:[o.jsxs(Wi,{className:"grid w-full grid-cols-2 sm:grid-cols-4 gap-0.5 sm:gap-1 h-auto p-1",children:[o.jsxs(Lt,{value:"appearance",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[o.jsx(yI,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),o.jsx("span",{children:"外观"})]}),o.jsxs(Lt,{value:"security",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[o.jsx(Fee,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),o.jsx("span",{children:"安全"})]}),o.jsxs(Lt,{value:"other",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[o.jsx(Xu,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),o.jsx("span",{children:"其他"})]}),o.jsxs(Lt,{value:"about",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[o.jsx(Oa,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),o.jsx("span",{children:"关于"})]})]}),o.jsxs(gn,{className:"h-[calc(100vh-240px)] sm:h-[calc(100vh-280px)] mt-4 sm:mt-6",children:[o.jsx(un,{value:"appearance",className:"mt-0",children:o.jsx(sie,{})}),o.jsx(un,{value:"security",className:"mt-0",children:o.jsx(iie,{})}),o.jsx(un,{value:"other",className:"mt-0",children:o.jsx(aie,{})}),o.jsx(un,{value:"about",className:"mt-0",children:o.jsx(oie,{})})]})]})]})}function nE(t){const e=document.documentElement,r={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[t];if(r)e.style.setProperty("--primary",r.hsl),r.gradient?(e.style.setProperty("--primary-gradient",r.gradient),e.classList.add("has-gradient")):(e.style.removeProperty("--primary-gradient"),e.classList.remove("has-gradient"));else if(t.startsWith("#")){const s=i=>{i=i.replace("#","");const a=parseInt(i.substring(0,2),16)/255,l=parseInt(i.substring(2,4),16)/255,c=parseInt(i.substring(4,6),16)/255,d=Math.max(a,l,c),h=Math.min(a,l,c);let m=0,g=0;const x=(d+h)/2;if(d!==h){const y=d-h;switch(g=x>.5?y/(2-d-h):y/(d+h),d){case a:m=((l-c)/y+(llocalStorage.getItem("accent-color")||"blue");b.useEffect(()=>{const d=localStorage.getItem("accent-color")||"blue";nE(d)},[]);const c=d=>{l(d),localStorage.setItem("accent-color",d),nE(d)};return o.jsxs("div",{className:"space-y-6 sm:space-y-8",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题模式"}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 sm:gap-4",children:[o.jsx(A4,{value:"light",current:t,onChange:e,label:"浅色",description:"始终使用浅色主题"}),o.jsx(A4,{value:"dark",current:t,onChange:e,label:"深色",description:"始终使用深色主题"}),o.jsx(A4,{value:"system",current:t,onChange:e,label:"跟随系统",description:"根据系统设置自动切换"})]})]}),o.jsxs("div",{children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题色"}),o.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"单色"}),o.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[o.jsx(ua,{value:"blue",current:a,onChange:c,label:"蓝色",colorClass:"bg-blue-500"}),o.jsx(ua,{value:"purple",current:a,onChange:c,label:"紫色",colorClass:"bg-purple-500"}),o.jsx(ua,{value:"green",current:a,onChange:c,label:"绿色",colorClass:"bg-green-500"}),o.jsx(ua,{value:"orange",current:a,onChange:c,label:"橙色",colorClass:"bg-orange-500"}),o.jsx(ua,{value:"pink",current:a,onChange:c,label:"粉色",colorClass:"bg-pink-500"}),o.jsx(ua,{value:"red",current:a,onChange:c,label:"红色",colorClass:"bg-red-500"})]})]}),o.jsxs("div",{children:[o.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"渐变色"}),o.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[o.jsx(ua,{value:"gradient-sunset",current:a,onChange:c,label:"日落",colorClass:"bg-gradient-to-r from-orange-500 to-pink-500"}),o.jsx(ua,{value:"gradient-ocean",current:a,onChange:c,label:"海洋",colorClass:"bg-gradient-to-r from-blue-500 to-cyan-500"}),o.jsx(ua,{value:"gradient-forest",current:a,onChange:c,label:"森林",colorClass:"bg-gradient-to-r from-green-500 to-emerald-500"}),o.jsx(ua,{value:"gradient-aurora",current:a,onChange:c,label:"极光",colorClass:"bg-gradient-to-r from-purple-500 to-pink-500"}),o.jsx(ua,{value:"gradient-fire",current:a,onChange:c,label:"烈焰",colorClass:"bg-gradient-to-r from-red-500 to-orange-500"}),o.jsx(ua,{value:"gradient-twilight",current:a,onChange:c,label:"暮光",colorClass:"bg-gradient-to-r from-indigo-500 to-purple-500"})]})]}),o.jsxs("div",{children:[o.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"自定义颜色"}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 sm:gap-4",children:[o.jsx("div",{className:"flex-1",children:o.jsx("input",{type:"color",value:a.startsWith("#")?a:"#3b82f6",onChange:d=>c(d.target.value),className:"h-10 sm:h-12 w-full rounded-lg border-2 border-border cursor-pointer",title:"选择自定义颜色"})}),o.jsx("div",{className:"flex-1",children:o.jsx(ze,{type:"text",value:a,onChange:d=>c(d.target.value),placeholder:"#3b82f6",className:"font-mono text-sm"})})]}),o.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground mt-2",children:"点击色块选择颜色,或手动输入 HEX 颜色代码"})]})]})]}),o.jsxs("div",{children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"动画效果"}),o.jsxs("div",{className:"space-y-2 sm:space-y-3",children:[o.jsx("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5 flex-1",children:[o.jsx(he,{htmlFor:"animations",className:"text-base font-medium cursor-pointer",children:"启用动画效果"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后将禁用所有过渡动画和特效,提升性能"})]}),o.jsx(Bt,{id:"animations",checked:n,onCheckedChange:r})]})}),o.jsx("div",{className:"rounded-lg border bg-card p-4",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5 flex-1",children:[o.jsx(he,{htmlFor:"waves-background",className:"text-base font-medium cursor-pointer",children:"登录页波浪背景"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后登录页将使用纯色背景,适合低性能设备"})]}),o.jsx(Bt,{id:"waves-background",checked:s,onCheckedChange:i})]})})]})]})]})}function iie(){const t=Zi(),[e,n]=b.useState(""),[r,s]=b.useState(""),[i,a]=b.useState(!1),[l,c]=b.useState(!1),[d,h]=b.useState(!1),[m,g]=b.useState(!1),[x,y]=b.useState(!1),[w,S]=b.useState(!1),[k,j]=b.useState(""),[N,T]=b.useState(!1),{toast:E}=as(),_=b.useMemo(()=>Lse(r),[r]),A=()=>localStorage.getItem("access-token")||"",L=async z=>{try{await navigator.clipboard.writeText(z),y(!0),E({title:"复制成功",description:"Token 已复制到剪贴板"}),setTimeout(()=>y(!1),2e3)}catch{E({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},P=async()=>{if(!r.trim()){E({title:"输入错误",description:"请输入新的 Token",variant:"destructive"});return}if(!_.isValid){const z=_.rules.filter(Q=>!Q.passed).map(Q=>Q.label).join(", ");E({title:"格式错误",description:`Token 不符合要求: ${z}`,variant:"destructive"});return}h(!0);try{const z=A(),Q=await fetch("/api/webui/auth/update",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${z}`},body:JSON.stringify({new_token:r.trim()})}),F=await Q.json();Q.ok&&F.success?(localStorage.setItem("access-token",r.trim()),s(""),e&&n(r.trim()),E({title:"更新成功",description:"Access Token 已更新,即将跳转到登录页"}),setTimeout(()=>{localStorage.removeItem("access-token"),t({to:"/auth"})},1500)):E({title:"更新失败",description:F.message||"无法更新 Token",variant:"destructive"})}catch(z){console.error("更新 Token 错误:",z),E({title:"更新失败",description:"连接服务器失败",variant:"destructive"})}finally{h(!1)}},B=async()=>{g(!0);try{const z=A(),Q=await fetch("/api/webui/auth/regenerate",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${z}`}}),F=await Q.json();Q.ok&&F.success?(localStorage.setItem("access-token",F.token),n(F.token),j(F.token),S(!0),T(!1),E({title:"生成成功",description:"新的 Access Token 已生成,请及时保存"})):E({title:"生成失败",description:F.message||"无法生成新 Token",variant:"destructive"})}catch(z){console.error("生成 Token 错误:",z),E({title:"生成失败",description:"连接服务器失败",variant:"destructive"})}finally{g(!1)}},$=async()=>{try{await navigator.clipboard.writeText(k),T(!0),E({title:"复制成功",description:"Token 已复制到剪贴板"})}catch{E({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},U=()=>{S(!1),setTimeout(()=>{j(""),T(!1)},300),setTimeout(()=>{localStorage.removeItem("access-token"),t({to:"/auth"})},500)},te=z=>{z||U()};return o.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[o.jsx(Dr,{open:w,onOpenChange:te,children:o.jsxs(Sr,{className:"sm:max-w-md",children:[o.jsxs(kr,{children:[o.jsxs(Or,{className:"flex items-center gap-2",children:[o.jsx(Wa,{className:"h-5 w-5 text-yellow-500"}),"新的 Access Token"]}),o.jsx(ss,{children:"这是您的新 Token,请立即保存。关闭此窗口后将跳转到登录页面。"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"rounded-lg border-2 border-primary/20 bg-primary/5 p-4",children:[o.jsx(he,{className:"text-xs text-muted-foreground mb-2 block",children:"您的新 Token (64位安全令牌)"}),o.jsx("div",{className:"font-mono text-sm break-all select-all bg-background p-3 rounded border",children:k})]}),o.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Wa,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5"}),o.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[o.jsx("p",{className:"font-semibold",children:"重要提示"}),o.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[o.jsx("li",{children:"此 Token 仅显示一次,关闭后无法再查看"}),o.jsx("li",{children:"请立即复制并保存到安全的位置"}),o.jsx("li",{children:"关闭窗口后将自动跳转到登录页面"}),o.jsx("li",{children:"请使用新 Token 重新登录系统"})]})]})]})})]}),o.jsxs(ws,{className:"gap-2 sm:gap-0",children:[o.jsx(de,{variant:"outline",onClick:$,className:"gap-2",children:N?o.jsxs(o.Fragment,{children:[o.jsx(Ro,{className:"h-4 w-4 text-green-500"}),"已复制"]}):o.jsxs(o.Fragment,{children:[o.jsx(Mv,{className:"h-4 w-4"}),"复制 Token"]})}),o.jsx(de,{onClick:U,children:"我已保存,关闭"})]})]})}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"当前 Access Token"}),o.jsx("div",{className:"space-y-3 sm:space-y-4",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"current-token",className:"text-sm",children:"您的访问令牌"}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[o.jsxs("div",{className:"relative flex-1",children:[o.jsx(ze,{id:"current-token",type:i?"text":"password",value:e||A(),readOnly:!0,className:"pr-10 font-mono text-sm",placeholder:"点击查看按钮显示 Token"}),o.jsx("button",{onClick:()=>{e||n(A()),a(!i)},className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:i?"隐藏":"显示",children:i?o.jsx(Rv,{className:"h-4 w-4 text-muted-foreground"}):o.jsx(Ea,{className:"h-4 w-4 text-muted-foreground"})})]}),o.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[o.jsx(de,{variant:"outline",size:"icon",onClick:()=>L(A()),title:"复制到剪贴板",className:"flex-shrink-0",children:x?o.jsx(Ro,{className:"h-4 w-4 text-green-500"}):o.jsx(Mv,{className:"h-4 w-4"})}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs(de,{variant:"outline",disabled:m,className:"gap-2 flex-1 sm:flex-none",children:[o.jsx(Ps,{className:xe("h-4 w-4",m&&"animate-spin")}),o.jsx("span",{className:"hidden sm:inline",children:"重新生成"}),o.jsx("span",{className:"sm:hidden",children:"生成"})]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认重新生成 Token"}),o.jsx(_n,{children:"这将生成一个新的 64 位安全令牌,并使当前 Token 立即失效。 您需要使用新 Token 重新登录系统。此操作不可撤销,确定要继续吗?"})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:B,children:"确认生成"})]})]})]})]})]}),o.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground",children:"请妥善保管您的 Access Token,不要泄露给他人"})]})})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"自定义 Access Token"}),o.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"new-token",className:"text-sm",children:"新的访问令牌"}),o.jsxs("div",{className:"relative",children:[o.jsx(ze,{id:"new-token",type:l?"text":"password",value:r,onChange:z=>s(z.target.value),className:"pr-10 font-mono text-sm",placeholder:"输入自定义 Token"}),o.jsx("button",{onClick:()=>c(!l),className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:l?"隐藏":"显示",children:l?o.jsx(Rv,{className:"h-4 w-4 text-muted-foreground"}):o.jsx(Ea,{className:"h-4 w-4 text-muted-foreground"})})]}),r&&o.jsxs("div",{className:"mt-3 space-y-2 p-3 rounded-lg bg-muted/50",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"Token 安全要求:"}),o.jsx("div",{className:"space-y-1.5",children:_.rules.map(z=>o.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[z.passed?o.jsx(Vc,{className:"h-4 w-4 text-green-500 flex-shrink-0"}):o.jsx(qee,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),o.jsx("span",{className:xe(z.passed?"text-green-600 dark:text-green-400":"text-muted-foreground"),children:z.label})]},z.id))}),_.isValid&&o.jsx("div",{className:"mt-2 pt-2 border-t border-border",children:o.jsxs("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[o.jsx(Ro,{className:"h-4 w-4"}),o.jsx("span",{className:"font-medium",children:"Token 格式正确,可以使用"})]})})]})]}),o.jsx(de,{onClick:P,disabled:d||!_.isValid||!r,className:"w-full sm:w-auto",children:d?"更新中...":"更新自定义 Token"})]})]}),o.jsxs("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3 sm:p-4",children:[o.jsx("h4",{className:"text-sm sm:text-base font-semibold text-yellow-900 dark:text-yellow-200 mb-2",children:"安全提示"}),o.jsxs("ul",{className:"text-xs sm:text-sm text-yellow-800 dark:text-yellow-300 space-y-1 list-disc list-inside",children:[o.jsx("li",{children:"重新生成 Token 会创建系统随机生成的 64 位安全令牌"}),o.jsx("li",{children:"自定义 Token 必须满足所有安全要求才能使用"}),o.jsx("li",{children:"更新 Token 后,旧的 Token 将立即失效"}),o.jsx("li",{children:"请在安全的环境下查看和复制 Token"}),o.jsx("li",{children:"如果怀疑 Token 泄露,请立即重新生成或更新"}),o.jsx("li",{children:"建议使用系统生成的 Token 以获得最高安全性"})]})]})]})}function aie(){const t=Zi(),{toast:e}=as(),[n,r]=b.useState(!1),[s,i]=b.useState(!1);if(s)throw new Error("这是一个手动触发的测试错误,用于验证错误边界组件是否正常工作。");const a=async()=>{r(!0);try{const l=localStorage.getItem("access-token"),c=await fetch("/api/webui/setup/reset",{method:"POST",headers:{Authorization:`Bearer ${l}`}}),d=await c.json();c.ok&&d.success?(e({title:"重置成功",description:"即将进入初次配置向导"}),setTimeout(()=>{t({to:"/setup"})},1e3)):e({title:"重置失败",description:d.message||"无法重置配置状态",variant:"destructive"})}catch(l){console.error("重置配置状态错误:",l),e({title:"重置失败",description:"连接服务器失败",variant:"destructive"})}finally{r(!1)}};return o.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"配置向导"}),o.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[o.jsx("div",{className:"space-y-2",children:o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"重新进行初次配置向导,可以帮助您重新设置系统的基础配置。"})}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs(de,{variant:"outline",disabled:n,className:"gap-2",children:[o.jsx($ee,{className:xe("h-4 w-4",n&&"animate-spin")}),"重新进行初次配置"]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认重新配置"}),o.jsx(_n,{children:"这将带您重新进入初次配置向导。您可以重新设置系统的基础配置项。确定要继续吗?"})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:a,children:"确认重置"})]})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border border-dashed border-yellow-500/50 bg-yellow-500/5 p-4 sm:p-6",children:[o.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[o.jsx(Wa,{className:"h-5 w-5 text-yellow-500"}),"开发者工具"]}),o.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[o.jsx("div",{className:"space-y-2",children:o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"以下功能仅供开发调试使用,可能会导致页面崩溃或异常。"})}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs(de,{variant:"destructive",className:"gap-2",children:[o.jsx(Wa,{className:"h-4 w-4"}),"触发测试错误"]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认触发错误"}),o.jsx(_n,{children:"这将手动触发一个 React 错误,用于测试错误边界组件的显示效果。 页面将显示错误界面,您可以通过刷新页面或点击返回首页来恢复。"})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>i(!0),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认触发"})]})]})]})]})]})]})}function oie(){return o.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[o.jsx("div",{className:"rounded-lg border-2 border-primary/30 bg-gradient-to-r from-primary/5 to-primary/10 p-4 sm:p-6",children:o.jsxs("div",{className:"flex items-start gap-3 sm:gap-4",children:[o.jsx("div",{className:"flex-shrink-0 rounded-lg bg-primary/10 p-2 sm:p-3",children:o.jsx("svg",{className:"h-6 w-6 sm:h-8 sm:w-8 text-primary",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:o.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})})}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("h3",{className:"text-lg sm:text-xl font-bold text-foreground mb-2",children:"开源项目"}),o.jsx("p",{className:"text-sm sm:text-base text-muted-foreground mb-3",children:"本项目在 GitHub 开源,欢迎 Star ⭐ 支持!"}),o.jsxs("a",{href:"https://github.com/Mai-with-u/MaiBot-Dashboard",target:"_blank",rel:"noopener noreferrer",className:xe("inline-flex items-center gap-2 px-4 py-2 rounded-lg","bg-primary text-primary-foreground font-medium text-sm","hover:bg-primary/90 transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"),children:[o.jsx("svg",{className:"h-4 w-4",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:o.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})}),"前往 GitHub",o.jsx("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:o.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})})]})]})]})}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:["关于 ",Wj]}),o.jsxs("div",{className:"space-y-2 text-xs sm:text-sm text-muted-foreground",children:[o.jsxs("p",{children:["版本: ",Uj]}),o.jsx("p",{children:"麦麦(MaiBot)的现代化 Web 管理界面"})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"作者"}),o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx("p",{className:"text-sm font-medium",children:"MaiBot 核心"}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"Mai-with-u"})]}),o.jsxs("div",{className:"space-y-1",children:[o.jsx("p",{className:"text-sm font-medium",children:"WebUI"}),o.jsxs("p",{className:"text-xs sm:text-sm text-muted-foreground",children:["Mai-with-u ",o.jsx("a",{href:"https://github.com/DrSmoothl",target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"@MotricSeven"})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"技术栈"}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-xs sm:text-sm text-muted-foreground",children:[o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("p",{className:"font-medium text-foreground",children:"前端框架"}),o.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[o.jsx("li",{children:"React 19.2.0"}),o.jsx("li",{children:"TypeScript 5.7.2"}),o.jsx("li",{children:"Vite 6.0.7"}),o.jsx("li",{children:"TanStack Router 1.94.2"})]})]}),o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("p",{className:"font-medium text-foreground",children:"UI 组件"}),o.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[o.jsx("li",{children:"shadcn/ui"}),o.jsx("li",{children:"Radix UI"}),o.jsx("li",{children:"Tailwind CSS 3.4.17"}),o.jsx("li",{children:"Lucide Icons"})]})]}),o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("p",{className:"font-medium text-foreground",children:"后端"}),o.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[o.jsx("li",{children:"Python 3.12+"}),o.jsx("li",{children:"FastAPI"}),o.jsx("li",{children:"Uvicorn"}),o.jsx("li",{children:"WebSocket"})]})]}),o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("p",{className:"font-medium text-foreground",children:"构建工具"}),o.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[o.jsx("li",{children:"Bun / npm"}),o.jsx("li",{children:"ESLint 9.17.0"}),o.jsx("li",{children:"PostCSS"})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源库感谢"}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mb-3",children:"本项目使用了以下优秀的开源库,感谢他们的贡献:"}),o.jsx(gn,{className:"h-[300px] sm:h-[400px]",children:o.jsxs("div",{className:"space-y-4 pr-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"UI 框架与组件"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"React",description:"用户界面构建库",license:"MIT"}),o.jsx(Er,{name:"shadcn/ui",description:"优雅的 React 组件库",license:"MIT"}),o.jsx(Er,{name:"Radix UI",description:"无样式的可访问组件库",license:"MIT"}),o.jsx(Er,{name:"Tailwind CSS",description:"实用优先的 CSS 框架",license:"MIT"}),o.jsx(Er,{name:"Lucide React",description:"精美的图标库",license:"ISC"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"路由与状态管理"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"TanStack Router",description:"类型安全的路由库",license:"MIT"}),o.jsx(Er,{name:"Zustand",description:"轻量级状态管理",license:"MIT"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"表单处理"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"React Hook Form",description:"高性能表单库",license:"MIT"}),o.jsx(Er,{name:"Zod",description:"TypeScript 优先的 schema 验证",license:"MIT"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"工具库"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"clsx",description:"条件 className 构建工具",license:"MIT"}),o.jsx(Er,{name:"tailwind-merge",description:"Tailwind 类名合并工具",license:"MIT"}),o.jsx(Er,{name:"class-variance-authority",description:"组件变体管理",license:"Apache-2.0"}),o.jsx(Er,{name:"date-fns",description:"现代化日期处理库",license:"MIT"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"动画效果"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"Framer Motion",description:"React 动画库",license:"MIT"}),o.jsx(Er,{name:"vaul",description:"抽屉组件动画",license:"MIT"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"后端框架"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"FastAPI",description:"现代化 Python Web 框架",license:"MIT"}),o.jsx(Er,{name:"Uvicorn",description:"ASGI 服务器",license:"BSD-3-Clause"}),o.jsx(Er,{name:"Pydantic",description:"数据验证库",license:"MIT"}),o.jsx(Er,{name:"python-multipart",description:"文件上传支持",license:"Apache-2.0"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"开发工具"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Er,{name:"TypeScript",description:"JavaScript 的超集",license:"Apache-2.0"}),o.jsx(Er,{name:"Vite",description:"下一代前端构建工具",license:"MIT"}),o.jsx(Er,{name:"ESLint",description:"JavaScript 代码检查工具",license:"MIT"}),o.jsx(Er,{name:"PostCSS",description:"CSS 转换工具",license:"MIT"})]})]})]})})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源许可"}),o.jsxs("div",{className:"space-y-3",children:[o.jsx("div",{className:"rounded-lg bg-primary/5 border border-primary/20 p-3 sm:p-4",children:o.jsxs("div",{className:"flex items-start gap-2 sm:gap-3",children:[o.jsx("div",{className:"flex-shrink-0 mt-0.5",children:o.jsx("div",{className:"rounded-md bg-primary/10 px-2 py-1",children:o.jsx("span",{className:"text-xs sm:text-sm font-bold text-primary",children:"GPLv3"})})}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("p",{className:"text-sm sm:text-base font-semibold text-foreground mb-1",children:"MaiBot WebUI"}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目采用 GNU General Public License v3.0 开源许可证。 您可以自由地使用、修改和分发本软件,但必须保持相同的开源许可。"})]})]})}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目依赖的所有开源库均遵循各自的开源许可证(MIT、Apache-2.0、BSD 等)。 感谢所有开源贡献者的无私奉献。"})]})]})]})}function Er({name:t,description:e,license:n}){return o.jsxs("div",{className:"flex items-start justify-between gap-2 rounded-lg border bg-muted/30 p-2.5 sm:p-3",children:[o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("p",{className:"font-medium text-foreground truncate",children:t}),o.jsx("p",{className:"text-muted-foreground text-xs mt-0.5",children:e})]}),o.jsx("span",{className:"inline-flex items-center rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-medium text-primary flex-shrink-0",children:n})]})}function A4({value:t,current:e,onChange:n,label:r,description:s}){const i=e===t;return o.jsxs("button",{onClick:()=>n(t),className:xe("relative rounded-lg border-2 p-3 sm:p-4 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",i?"border-primary bg-accent":"border-border"),children:[i&&o.jsx("div",{className:"absolute top-2 right-2 sm:top-3 sm:right-3 h-2 w-2 rounded-full bg-primary"}),o.jsxs("div",{className:"space-y-1",children:[o.jsx("div",{className:"text-sm sm:text-base font-medium",children:r}),o.jsx("div",{className:"text-[10px] sm:text-xs text-muted-foreground",children:s})]}),o.jsxs("div",{className:"mt-2 sm:mt-3 flex gap-1",children:[t==="light"&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-200"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-300"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-400"})]}),t==="dark"&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-700"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-800"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-900"})]}),t==="system"&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-200 to-slate-700"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-300 to-slate-800"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-400 to-slate-900"})]})]})]})}function ua({value:t,current:e,onChange:n,label:r,colorClass:s}){const i=e===t;return o.jsxs("button",{onClick:()=>n(t),className:xe("relative rounded-lg border-2 p-2 sm:p-3 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",i?"border-primary bg-accent":"border-border"),children:[i&&o.jsx("div",{className:"absolute top-1.5 right-1.5 sm:top-2 sm:right-2 h-1.5 w-1.5 sm:h-2 sm:w-2 rounded-full bg-primary"}),o.jsxs("div",{className:"flex flex-col items-center gap-1.5 sm:gap-2",children:[o.jsx("div",{className:xe("h-8 w-8 sm:h-10 sm:w-10 rounded-full",s)}),o.jsx("div",{className:"text-[10px] sm:text-xs font-medium text-center",children:r})]})]})}class lie{grad3;p;perm;constructor(e=0){this.grad3=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],this.p=[];for(let n=0;n<256;n++)this.p[n]=Math.floor(Math.random()*256);this.perm=[];for(let n=0;n<512;n++)this.perm[n]=this.p[n&255]}dot(e,n,r){return e[0]*n+e[1]*r}mix(e,n,r){return(1-r)*e+r*n}fade(e){return e*e*e*(e*(e*6-15)+10)}perlin2(e,n){const r=Math.floor(e)&255,s=Math.floor(n)&255;e-=Math.floor(e),n-=Math.floor(n);const i=this.fade(e),a=this.fade(n),l=this.perm[r]+s,c=this.perm[l],d=this.perm[l+1],h=this.perm[r+1]+s,m=this.perm[h],g=this.perm[h+1];return this.mix(this.mix(this.dot(this.grad3[c%12],e,n),this.dot(this.grad3[m%12],e-1,n),i),this.mix(this.dot(this.grad3[d%12],e,n-1),this.dot(this.grad3[g%12],e-1,n-1),i),a)}}function cie(){const t=b.useRef(null),e=b.useRef(null),n=b.useRef(void 0),r=b.useRef({mouse:{x:-10,y:0,lx:0,ly:0,sx:0,sy:0,v:0,vs:0,a:0,set:!1},lines:[],paths:[],noise:new lie(Math.random()),bounding:null});return b.useEffect(()=>{const s=e.current,i=t.current;if(!s||!i)return;const a=r.current,l=()=>{const w=s.getBoundingClientRect();a.bounding=w,i.style.width=`${w.width}px`,i.style.height=`${w.height}px`},c=()=>{if(!a.bounding)return;const{width:w,height:S}=a.bounding;a.lines=[],a.paths.forEach(P=>P.remove()),a.paths=[];const k=10,j=32,N=w+200,T=S+30,E=Math.ceil(N/k),_=Math.ceil(T/j),A=(w-k*E)/2,L=(S-j*_)/2;for(let P=0;P<=E;P++){const B=[];for(let U=0;U<=_;U++){const te={x:A+k*P,y:L+j*U,wave:{x:0,y:0},cursor:{x:0,y:0,vx:0,vy:0}};B.push(te)}const $=document.createElementNS("http://www.w3.org/2000/svg","path");i.appendChild($),a.paths.push($),a.lines.push(B)}},d=w=>{const{lines:S,mouse:k,noise:j}=a;S.forEach(N=>{N.forEach(T=>{const E=j.perlin2((T.x+w*.0125)*.002,(T.y+w*.005)*.0015)*12;T.wave.x=Math.cos(E)*32,T.wave.y=Math.sin(E)*16;const _=T.x-k.sx,A=T.y-k.sy,L=Math.hypot(_,A),P=Math.max(175,k.vs);if(L{const k={x:w.x+w.wave.x+(S?w.cursor.x:0),y:w.y+w.wave.y+(S?w.cursor.y:0)};return k.x=Math.round(k.x*10)/10,k.y=Math.round(k.y*10)/10,k},m=()=>{const{lines:w,paths:S}=a;w.forEach((k,j)=>{let N=h(k[0],!1),T=`M ${N.x} ${N.y}`;k.forEach((E,_)=>{const A=_===k.length-1;N=h(E,!A),T+=`L ${N.x} ${N.y}`}),S[j].setAttribute("d",T)})},g=w=>{const{mouse:S}=a;S.sx+=(S.x-S.sx)*.1,S.sy+=(S.y-S.sy)*.1;const k=S.x-S.lx,j=S.y-S.ly,N=Math.hypot(k,j);S.v=N,S.vs+=(N-S.vs)*.1,S.vs=Math.min(100,S.vs),S.lx=S.x,S.ly=S.y,S.a=Math.atan2(j,k),s&&(s.style.setProperty("--x",`${S.sx}px`),s.style.setProperty("--y",`${S.sy}px`)),d(w),m(),n.current=requestAnimationFrame(g)},x=w=>{if(!a.bounding)return;const{mouse:S}=a;S.x=w.pageX-a.bounding.left,S.y=w.pageY-a.bounding.top+window.scrollY,S.set||(S.sx=S.x,S.sy=S.y,S.lx=S.x,S.ly=S.y,S.set=!0)},y=()=>{l(),c()};return l(),c(),window.addEventListener("resize",y),window.addEventListener("mousemove",x),n.current=requestAnimationFrame(g),()=>{window.removeEventListener("resize",y),window.removeEventListener("mousemove",x),n.current&&cancelAnimationFrame(n.current)}},[]),o.jsxs("div",{ref:e,className:"waves-background",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflow:"hidden",pointerEvents:"none"},children:[o.jsx("div",{className:"waves-cursor",style:{position:"absolute",top:0,left:0,width:"0.5rem",height:"0.5rem",background:"hsl(var(--primary) / 0.3)",borderRadius:"50%",transform:"translate3d(calc(var(--x, -0.5rem) - 50%), calc(var(--y, 50%) - 50%), 0)",willChange:"transform",pointerEvents:"none"}}),o.jsx("svg",{ref:t,style:{display:"block",width:"100%",height:"100%"},children:o.jsx("style",{children:` +For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;return b.useEffect(()=>{document.getElementById(t.current?.getAttribute("aria-describedby"))||console.warn(e)},[e,t]),null},rie=hB,sie=fB,iie=mB,OB=pB,jB=gB,NB=wB,CB=kB,TB=vB,EB=bB;const Fn=rie,is=sie,aie=iie,_B=b.forwardRef(({className:t,...e},n)=>o.jsx(OB,{className:xe("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),...e,ref:n}));_B.displayName=OB.displayName;const Mn=b.forwardRef(({className:t,...e},n)=>o.jsxs(aie,{children:[o.jsx(_B,{}),o.jsx(jB,{ref:n,className:xe("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",t),...e})]}));Mn.displayName=jB.displayName;const Rn=({className:t,...e})=>o.jsx("div",{className:xe("flex flex-col space-y-2 text-center sm:text-left",t),...e});Rn.displayName="AlertDialogHeader";const Dn=({className:t,...e})=>o.jsx("div",{className:xe("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...e});Dn.displayName="AlertDialogFooter";const Pn=b.forwardRef(({className:t,...e},n)=>o.jsx(TB,{ref:n,className:xe("text-lg font-semibold",t),...e}));Pn.displayName=TB.displayName;const zn=b.forwardRef(({className:t,...e},n)=>o.jsx(EB,{ref:n,className:xe("text-sm text-muted-foreground",t),...e}));zn.displayName=EB.displayName;const In=b.forwardRef(({className:t,...e},n)=>o.jsx(NB,{ref:n,className:xe(q0(),t),...e}));In.displayName=NB.displayName;const Ln=b.forwardRef(({className:t,...e},n)=>o.jsx(CB,{ref:n,className:xe(q0({variant:"outline"}),"mt-2 sm:mt-0",t),...e}));Ln.displayName=CB.displayName;function oie(){return o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"系统设置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理您的应用偏好设置"})]})}),o.jsxs(Yi,{defaultValue:"appearance",className:"w-full",children:[o.jsxs(ji,{className:"grid w-full grid-cols-2 sm:grid-cols-4 gap-0.5 sm:gap-1 h-auto p-1",children:[o.jsxs(Bt,{value:"appearance",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[o.jsx(kI,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),o.jsx("span",{children:"外观"})]}),o.jsxs(Bt,{value:"security",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[o.jsx(Qee,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),o.jsx("span",{children:"安全"})]}),o.jsxs(Bt,{value:"other",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[o.jsx(Vc,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),o.jsx("span",{children:"其他"})]}),o.jsxs(Bt,{value:"about",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[o.jsx(Xi,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),o.jsx("span",{children:"关于"})]})]}),o.jsxs(pn,{className:"h-[calc(100vh-240px)] sm:h-[calc(100vh-280px)] mt-4 sm:mt-6",children:[o.jsx(ln,{value:"appearance",className:"mt-0",children:o.jsx(lie,{})}),o.jsx(ln,{value:"security",className:"mt-0",children:o.jsx(cie,{})}),o.jsx(ln,{value:"other",className:"mt-0",children:o.jsx(uie,{})}),o.jsx(ln,{value:"about",className:"mt-0",children:o.jsx(die,{})})]})]})]})}function lE(t){const e=document.documentElement,r={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[t];if(r)e.style.setProperty("--primary",r.hsl),r.gradient?(e.style.setProperty("--primary-gradient",r.gradient),e.classList.add("has-gradient")):(e.style.removeProperty("--primary-gradient"),e.classList.remove("has-gradient"));else if(t.startsWith("#")){const s=i=>{i=i.replace("#","");const a=parseInt(i.substring(0,2),16)/255,l=parseInt(i.substring(2,4),16)/255,c=parseInt(i.substring(4,6),16)/255,d=Math.max(a,l,c),h=Math.min(a,l,c);let m=0,g=0;const x=(d+h)/2;if(d!==h){const y=d-h;switch(g=x>.5?y/(2-d-h):y/(d+h),d){case a:m=((l-c)/y+(llocalStorage.getItem("accent-color")||"blue");b.useEffect(()=>{const d=localStorage.getItem("accent-color")||"blue";lE(d)},[]);const c=d=>{l(d),localStorage.setItem("accent-color",d),lE(d)};return o.jsxs("div",{className:"space-y-6 sm:space-y-8",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题模式"}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 sm:gap-4",children:[o.jsx(P4,{value:"light",current:t,onChange:e,label:"浅色",description:"始终使用浅色主题"}),o.jsx(P4,{value:"dark",current:t,onChange:e,label:"深色",description:"始终使用深色主题"}),o.jsx(P4,{value:"system",current:t,onChange:e,label:"跟随系统",description:"根据系统设置自动切换"})]})]}),o.jsxs("div",{children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题色"}),o.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"单色"}),o.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[o.jsx(ma,{value:"blue",current:a,onChange:c,label:"蓝色",colorClass:"bg-blue-500"}),o.jsx(ma,{value:"purple",current:a,onChange:c,label:"紫色",colorClass:"bg-purple-500"}),o.jsx(ma,{value:"green",current:a,onChange:c,label:"绿色",colorClass:"bg-green-500"}),o.jsx(ma,{value:"orange",current:a,onChange:c,label:"橙色",colorClass:"bg-orange-500"}),o.jsx(ma,{value:"pink",current:a,onChange:c,label:"粉色",colorClass:"bg-pink-500"}),o.jsx(ma,{value:"red",current:a,onChange:c,label:"红色",colorClass:"bg-red-500"})]})]}),o.jsxs("div",{children:[o.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"渐变色"}),o.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[o.jsx(ma,{value:"gradient-sunset",current:a,onChange:c,label:"日落",colorClass:"bg-gradient-to-r from-orange-500 to-pink-500"}),o.jsx(ma,{value:"gradient-ocean",current:a,onChange:c,label:"海洋",colorClass:"bg-gradient-to-r from-blue-500 to-cyan-500"}),o.jsx(ma,{value:"gradient-forest",current:a,onChange:c,label:"森林",colorClass:"bg-gradient-to-r from-green-500 to-emerald-500"}),o.jsx(ma,{value:"gradient-aurora",current:a,onChange:c,label:"极光",colorClass:"bg-gradient-to-r from-purple-500 to-pink-500"}),o.jsx(ma,{value:"gradient-fire",current:a,onChange:c,label:"烈焰",colorClass:"bg-gradient-to-r from-red-500 to-orange-500"}),o.jsx(ma,{value:"gradient-twilight",current:a,onChange:c,label:"暮光",colorClass:"bg-gradient-to-r from-indigo-500 to-purple-500"})]})]}),o.jsxs("div",{children:[o.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"自定义颜色"}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 sm:gap-4",children:[o.jsx("div",{className:"flex-1",children:o.jsx("input",{type:"color",value:a.startsWith("#")?a:"#3b82f6",onChange:d=>c(d.target.value),className:"h-10 sm:h-12 w-full rounded-lg border-2 border-border cursor-pointer",title:"选择自定义颜色"})}),o.jsx("div",{className:"flex-1",children:o.jsx(Pe,{type:"text",value:a,onChange:d=>c(d.target.value),placeholder:"#3b82f6",className:"font-mono text-sm"})})]}),o.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground mt-2",children:"点击色块选择颜色,或手动输入 HEX 颜色代码"})]})]})]}),o.jsxs("div",{children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"动画效果"}),o.jsxs("div",{className:"space-y-2 sm:space-y-3",children:[o.jsx("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5 flex-1",children:[o.jsx(he,{htmlFor:"animations",className:"text-base font-medium cursor-pointer",children:"启用动画效果"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后将禁用所有过渡动画和特效,提升性能"})]}),o.jsx(Ft,{id:"animations",checked:n,onCheckedChange:r})]})}),o.jsx("div",{className:"rounded-lg border bg-card p-4",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5 flex-1",children:[o.jsx(he,{htmlFor:"waves-background",className:"text-base font-medium cursor-pointer",children:"登录页波浪背景"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后登录页将使用纯色背景,适合低性能设备"})]}),o.jsx(Ft,{id:"waves-background",checked:s,onCheckedChange:i})]})})]})]})]})}function cie(){const t=na(),[e,n]=b.useState(""),[r,s]=b.useState(""),[i,a]=b.useState(!1),[l,c]=b.useState(!1),[d,h]=b.useState(!1),[m,g]=b.useState(!1),[x,y]=b.useState(!1),[w,S]=b.useState(!1),[k,j]=b.useState(""),[N,T]=b.useState(!1),{toast:E}=Lr(),_=b.useMemo(()=>$se(r),[r]),A=()=>localStorage.getItem("access-token")||"",D=async I=>{try{await navigator.clipboard.writeText(I),y(!0),E({title:"复制成功",description:"Token 已复制到剪贴板"}),setTimeout(()=>y(!1),2e3)}catch{E({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},q=async()=>{if(!r.trim()){E({title:"输入错误",description:"请输入新的 Token",variant:"destructive"});return}if(!_.isValid){const I=_.rules.filter(V=>!V.passed).map(V=>V.label).join(", ");E({title:"格式错误",description:`Token 不符合要求: ${I}`,variant:"destructive"});return}h(!0);try{const I=A(),V=await fetch("/api/webui/auth/update",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${I}`},body:JSON.stringify({new_token:r.trim()})}),L=await V.json();V.ok&&L.success?(localStorage.setItem("access-token",r.trim()),s(""),e&&n(r.trim()),E({title:"更新成功",description:"Access Token 已更新,即将跳转到登录页"}),setTimeout(()=>{localStorage.removeItem("access-token"),t({to:"/auth"})},1500)):E({title:"更新失败",description:L.message||"无法更新 Token",variant:"destructive"})}catch(I){console.error("更新 Token 错误:",I),E({title:"更新失败",description:"连接服务器失败",variant:"destructive"})}finally{h(!1)}},B=async()=>{g(!0);try{const I=A(),V=await fetch("/api/webui/auth/regenerate",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${I}`}}),L=await V.json();V.ok&&L.success?(localStorage.setItem("access-token",L.token),n(L.token),j(L.token),S(!0),T(!1),E({title:"生成成功",description:"新的 Access Token 已生成,请及时保存"})):E({title:"生成失败",description:L.message||"无法生成新 Token",variant:"destructive"})}catch(I){console.error("生成 Token 错误:",I),E({title:"生成失败",description:"连接服务器失败",variant:"destructive"})}finally{g(!1)}},H=async()=>{try{await navigator.clipboard.writeText(k),T(!0),E({title:"复制成功",description:"Token 已复制到剪贴板"})}catch{E({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},W=()=>{S(!1),setTimeout(()=>{j(""),T(!1)},300),setTimeout(()=>{localStorage.removeItem("access-token"),t({to:"/auth"})},500)},ee=I=>{I||W()};return o.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[o.jsx(Er,{open:w,onOpenChange:ee,children:o.jsxs(wr,{className:"sm:max-w-md",children:[o.jsxs(Sr,{children:[o.jsxs(kr,{className:"flex items-center gap-2",children:[o.jsx(Ga,{className:"h-5 w-5 text-yellow-500"}),"新的 Access Token"]}),o.jsx(Xr,{children:"这是您的新 Token,请立即保存。关闭此窗口后将跳转到登录页面。"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"rounded-lg border-2 border-primary/20 bg-primary/5 p-4",children:[o.jsx(he,{className:"text-xs text-muted-foreground mb-2 block",children:"您的新 Token (64位安全令牌)"}),o.jsx("div",{className:"font-mono text-sm break-all select-all bg-background p-3 rounded border",children:k})]}),o.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Ga,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5"}),o.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[o.jsx("p",{className:"font-semibold",children:"重要提示"}),o.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[o.jsx("li",{children:"此 Token 仅显示一次,关闭后无法再查看"}),o.jsx("li",{children:"请立即复制并保存到安全的位置"}),o.jsx("li",{children:"关闭窗口后将自动跳转到登录页面"}),o.jsx("li",{children:"请使用新 Token 重新登录系统"})]})]})]})})]}),o.jsxs(fs,{className:"gap-2 sm:gap-0",children:[o.jsx(ue,{variant:"outline",onClick:H,className:"gap-2",children:N?o.jsxs(o.Fragment,{children:[o.jsx(zo,{className:"h-4 w-4 text-green-500"}),"已复制"]}):o.jsxs(o.Fragment,{children:[o.jsx(Iv,{className:"h-4 w-4"}),"复制 Token"]})}),o.jsx(ue,{onClick:W,children:"我已保存,关闭"})]})]})}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"当前 Access Token"}),o.jsx("div",{className:"space-y-3 sm:space-y-4",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"current-token",className:"text-sm",children:"您的访问令牌"}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[o.jsxs("div",{className:"relative flex-1",children:[o.jsx(Pe,{id:"current-token",type:i?"text":"password",value:e||A(),readOnly:!0,className:"pr-10 font-mono text-sm",placeholder:"点击查看按钮显示 Token"}),o.jsx("button",{onClick:()=>{e||n(A()),a(!i)},className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:i?"隐藏":"显示",children:i?o.jsx(I0,{className:"h-4 w-4 text-muted-foreground"}):o.jsx(Ji,{className:"h-4 w-4 text-muted-foreground"})})]}),o.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[o.jsx(ue,{variant:"outline",size:"icon",onClick:()=>D(A()),title:"复制到剪贴板",className:"flex-shrink-0",children:x?o.jsx(zo,{className:"h-4 w-4 text-green-500"}):o.jsx(Iv,{className:"h-4 w-4"})}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsxs(ue,{variant:"outline",disabled:m,className:"gap-2 flex-1 sm:flex-none",children:[o.jsx(Qs,{className:xe("h-4 w-4",m&&"animate-spin")}),o.jsx("span",{className:"hidden sm:inline",children:"重新生成"}),o.jsx("span",{className:"sm:hidden",children:"生成"})]})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认重新生成 Token"}),o.jsx(zn,{children:"这将生成一个新的 64 位安全令牌,并使当前 Token 立即失效。 您需要使用新 Token 重新登录系统。此操作不可撤销,确定要继续吗?"})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:B,children:"确认生成"})]})]})]})]})]}),o.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground",children:"请妥善保管您的 Access Token,不要泄露给他人"})]})})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"自定义 Access Token"}),o.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"new-token",className:"text-sm",children:"新的访问令牌"}),o.jsxs("div",{className:"relative",children:[o.jsx(Pe,{id:"new-token",type:l?"text":"password",value:r,onChange:I=>s(I.target.value),className:"pr-10 font-mono text-sm",placeholder:"输入自定义 Token"}),o.jsx("button",{onClick:()=>c(!l),className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:l?"隐藏":"显示",children:l?o.jsx(I0,{className:"h-4 w-4 text-muted-foreground"}):o.jsx(Ji,{className:"h-4 w-4 text-muted-foreground"})})]}),r&&o.jsxs("div",{className:"mt-3 space-y-2 p-3 rounded-lg bg-muted/50",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"Token 安全要求:"}),o.jsx("div",{className:"space-y-1.5",children:_.rules.map(I=>o.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[I.passed?o.jsx(Ya,{className:"h-4 w-4 text-green-500 flex-shrink-0"}):o.jsx(OI,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),o.jsx("span",{className:xe(I.passed?"text-green-600 dark:text-green-400":"text-muted-foreground"),children:I.label})]},I.id))}),_.isValid&&o.jsx("div",{className:"mt-2 pt-2 border-t border-border",children:o.jsxs("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[o.jsx(zo,{className:"h-4 w-4"}),o.jsx("span",{className:"font-medium",children:"Token 格式正确,可以使用"})]})})]})]}),o.jsx(ue,{onClick:q,disabled:d||!_.isValid||!r,className:"w-full sm:w-auto",children:d?"更新中...":"更新自定义 Token"})]})]}),o.jsxs("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3 sm:p-4",children:[o.jsx("h4",{className:"text-sm sm:text-base font-semibold text-yellow-900 dark:text-yellow-200 mb-2",children:"安全提示"}),o.jsxs("ul",{className:"text-xs sm:text-sm text-yellow-800 dark:text-yellow-300 space-y-1 list-disc list-inside",children:[o.jsx("li",{children:"重新生成 Token 会创建系统随机生成的 64 位安全令牌"}),o.jsx("li",{children:"自定义 Token 必须满足所有安全要求才能使用"}),o.jsx("li",{children:"更新 Token 后,旧的 Token 将立即失效"}),o.jsx("li",{children:"请在安全的环境下查看和复制 Token"}),o.jsx("li",{children:"如果怀疑 Token 泄露,请立即重新生成或更新"}),o.jsx("li",{children:"建议使用系统生成的 Token 以获得最高安全性"})]})]})]})}function uie(){const t=na(),{toast:e}=Lr(),[n,r]=b.useState(!1),[s,i]=b.useState(!1);if(s)throw new Error("这是一个手动触发的测试错误,用于验证错误边界组件是否正常工作。");const a=async()=>{r(!0);try{const l=localStorage.getItem("access-token"),c=await fetch("/api/webui/setup/reset",{method:"POST",headers:{Authorization:`Bearer ${l}`}}),d=await c.json();c.ok&&d.success?(e({title:"重置成功",description:"即将进入初次配置向导"}),setTimeout(()=>{t({to:"/setup"})},1e3)):e({title:"重置失败",description:d.message||"无法重置配置状态",variant:"destructive"})}catch(l){console.error("重置配置状态错误:",l),e({title:"重置失败",description:"连接服务器失败",variant:"destructive"})}finally{r(!1)}};return o.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"配置向导"}),o.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[o.jsx("div",{className:"space-y-2",children:o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"重新进行初次配置向导,可以帮助您重新设置系统的基础配置。"})}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsxs(ue,{variant:"outline",disabled:n,className:"gap-2",children:[o.jsx(zj,{className:xe("h-4 w-4",n&&"animate-spin")}),"重新进行初次配置"]})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认重新配置"}),o.jsx(zn,{children:"这将带您重新进入初次配置向导。您可以重新设置系统的基础配置项。确定要继续吗?"})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:a,children:"确认重置"})]})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border border-dashed border-yellow-500/50 bg-yellow-500/5 p-4 sm:p-6",children:[o.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[o.jsx(Ga,{className:"h-5 w-5 text-yellow-500"}),"开发者工具"]}),o.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[o.jsx("div",{className:"space-y-2",children:o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"以下功能仅供开发调试使用,可能会导致页面崩溃或异常。"})}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsxs(ue,{variant:"destructive",className:"gap-2",children:[o.jsx(Ga,{className:"h-4 w-4"}),"触发测试错误"]})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认触发错误"}),o.jsx(zn,{children:"这将手动触发一个 React 错误,用于测试错误边界组件的显示效果。 页面将显示错误界面,您可以通过刷新页面或点击返回首页来恢复。"})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>i(!0),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认触发"})]})]})]})]})]})]})}function die(){return o.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[o.jsx("div",{className:"rounded-lg border-2 border-primary/30 bg-gradient-to-r from-primary/5 to-primary/10 p-4 sm:p-6",children:o.jsxs("div",{className:"flex items-start gap-3 sm:gap-4",children:[o.jsx("div",{className:"flex-shrink-0 rounded-lg bg-primary/10 p-2 sm:p-3",children:o.jsx("svg",{className:"h-6 w-6 sm:h-8 sm:w-8 text-primary",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:o.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})})}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("h3",{className:"text-lg sm:text-xl font-bold text-foreground mb-2",children:"开源项目"}),o.jsx("p",{className:"text-sm sm:text-base text-muted-foreground mb-3",children:"本项目在 GitHub 开源,欢迎 Star ⭐ 支持!"}),o.jsxs("a",{href:"https://github.com/Mai-with-u/MaiBot-Dashboard",target:"_blank",rel:"noopener noreferrer",className:xe("inline-flex items-center gap-2 px-4 py-2 rounded-lg","bg-primary text-primary-foreground font-medium text-sm","hover:bg-primary/90 transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"),children:[o.jsx("svg",{className:"h-4 w-4",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:o.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})}),"前往 GitHub",o.jsx("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:o.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})})]})]})]})}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:["关于 ",Jj]}),o.jsxs("div",{className:"space-y-2 text-xs sm:text-sm text-muted-foreground",children:[o.jsxs("p",{children:["版本: ",Zj]}),o.jsx("p",{children:"麦麦(MaiBot)的现代化 Web 管理界面"})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"作者"}),o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx("p",{className:"text-sm font-medium",children:"MaiBot 核心"}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"Mai-with-u"})]}),o.jsxs("div",{className:"space-y-1",children:[o.jsx("p",{className:"text-sm font-medium",children:"WebUI"}),o.jsxs("p",{className:"text-xs sm:text-sm text-muted-foreground",children:["Mai-with-u ",o.jsx("a",{href:"https://github.com/DrSmoothl",target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"@MotricSeven"})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"技术栈"}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-xs sm:text-sm text-muted-foreground",children:[o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("p",{className:"font-medium text-foreground",children:"前端框架"}),o.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[o.jsx("li",{children:"React 19.2.0"}),o.jsx("li",{children:"TypeScript 5.7.2"}),o.jsx("li",{children:"Vite 6.0.7"}),o.jsx("li",{children:"TanStack Router 1.94.2"})]})]}),o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("p",{className:"font-medium text-foreground",children:"UI 组件"}),o.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[o.jsx("li",{children:"shadcn/ui"}),o.jsx("li",{children:"Radix UI"}),o.jsx("li",{children:"Tailwind CSS 3.4.17"}),o.jsx("li",{children:"Lucide Icons"})]})]}),o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("p",{className:"font-medium text-foreground",children:"后端"}),o.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[o.jsx("li",{children:"Python 3.12+"}),o.jsx("li",{children:"FastAPI"}),o.jsx("li",{children:"Uvicorn"}),o.jsx("li",{children:"WebSocket"})]})]}),o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("p",{className:"font-medium text-foreground",children:"构建工具"}),o.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[o.jsx("li",{children:"Bun / npm"}),o.jsx("li",{children:"ESLint 9.17.0"}),o.jsx("li",{children:"PostCSS"})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源库感谢"}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mb-3",children:"本项目使用了以下优秀的开源库,感谢他们的贡献:"}),o.jsx(pn,{className:"h-[300px] sm:h-[400px]",children:o.jsxs("div",{className:"space-y-4 pr-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"UI 框架与组件"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Dr,{name:"React",description:"用户界面构建库",license:"MIT"}),o.jsx(Dr,{name:"shadcn/ui",description:"优雅的 React 组件库",license:"MIT"}),o.jsx(Dr,{name:"Radix UI",description:"无样式的可访问组件库",license:"MIT"}),o.jsx(Dr,{name:"Tailwind CSS",description:"实用优先的 CSS 框架",license:"MIT"}),o.jsx(Dr,{name:"Lucide React",description:"精美的图标库",license:"ISC"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"路由与状态管理"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Dr,{name:"TanStack Router",description:"类型安全的路由库",license:"MIT"}),o.jsx(Dr,{name:"Zustand",description:"轻量级状态管理",license:"MIT"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"表单处理"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Dr,{name:"React Hook Form",description:"高性能表单库",license:"MIT"}),o.jsx(Dr,{name:"Zod",description:"TypeScript 优先的 schema 验证",license:"MIT"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"工具库"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Dr,{name:"clsx",description:"条件 className 构建工具",license:"MIT"}),o.jsx(Dr,{name:"tailwind-merge",description:"Tailwind 类名合并工具",license:"MIT"}),o.jsx(Dr,{name:"class-variance-authority",description:"组件变体管理",license:"Apache-2.0"}),o.jsx(Dr,{name:"date-fns",description:"现代化日期处理库",license:"MIT"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"动画效果"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Dr,{name:"Framer Motion",description:"React 动画库",license:"MIT"}),o.jsx(Dr,{name:"vaul",description:"抽屉组件动画",license:"MIT"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"后端框架"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Dr,{name:"FastAPI",description:"现代化 Python Web 框架",license:"MIT"}),o.jsx(Dr,{name:"Uvicorn",description:"ASGI 服务器",license:"BSD-3-Clause"}),o.jsx(Dr,{name:"Pydantic",description:"数据验证库",license:"MIT"}),o.jsx(Dr,{name:"python-multipart",description:"文件上传支持",license:"Apache-2.0"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"开发工具"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Dr,{name:"TypeScript",description:"JavaScript 的超集",license:"Apache-2.0"}),o.jsx(Dr,{name:"Vite",description:"下一代前端构建工具",license:"MIT"}),o.jsx(Dr,{name:"ESLint",description:"JavaScript 代码检查工具",license:"MIT"}),o.jsx(Dr,{name:"PostCSS",description:"CSS 转换工具",license:"MIT"})]})]})]})})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源许可"}),o.jsxs("div",{className:"space-y-3",children:[o.jsx("div",{className:"rounded-lg bg-primary/5 border border-primary/20 p-3 sm:p-4",children:o.jsxs("div",{className:"flex items-start gap-2 sm:gap-3",children:[o.jsx("div",{className:"flex-shrink-0 mt-0.5",children:o.jsx("div",{className:"rounded-md bg-primary/10 px-2 py-1",children:o.jsx("span",{className:"text-xs sm:text-sm font-bold text-primary",children:"GPLv3"})})}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("p",{className:"text-sm sm:text-base font-semibold text-foreground mb-1",children:"MaiBot WebUI"}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目采用 GNU General Public License v3.0 开源许可证。 您可以自由地使用、修改和分发本软件,但必须保持相同的开源许可。"})]})]})}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目依赖的所有开源库均遵循各自的开源许可证(MIT、Apache-2.0、BSD 等)。 感谢所有开源贡献者的无私奉献。"})]})]})]})}function Dr({name:t,description:e,license:n}){return o.jsxs("div",{className:"flex items-start justify-between gap-2 rounded-lg border bg-muted/30 p-2.5 sm:p-3",children:[o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("p",{className:"font-medium text-foreground truncate",children:t}),o.jsx("p",{className:"text-muted-foreground text-xs mt-0.5",children:e})]}),o.jsx("span",{className:"inline-flex items-center rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-medium text-primary flex-shrink-0",children:n})]})}function P4({value:t,current:e,onChange:n,label:r,description:s}){const i=e===t;return o.jsxs("button",{onClick:()=>n(t),className:xe("relative rounded-lg border-2 p-3 sm:p-4 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",i?"border-primary bg-accent":"border-border"),children:[i&&o.jsx("div",{className:"absolute top-2 right-2 sm:top-3 sm:right-3 h-2 w-2 rounded-full bg-primary"}),o.jsxs("div",{className:"space-y-1",children:[o.jsx("div",{className:"text-sm sm:text-base font-medium",children:r}),o.jsx("div",{className:"text-[10px] sm:text-xs text-muted-foreground",children:s})]}),o.jsxs("div",{className:"mt-2 sm:mt-3 flex gap-1",children:[t==="light"&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-200"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-300"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-400"})]}),t==="dark"&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-700"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-800"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-900"})]}),t==="system"&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-200 to-slate-700"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-300 to-slate-800"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-400 to-slate-900"})]})]})]})}function ma({value:t,current:e,onChange:n,label:r,colorClass:s}){const i=e===t;return o.jsxs("button",{onClick:()=>n(t),className:xe("relative rounded-lg border-2 p-2 sm:p-3 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",i?"border-primary bg-accent":"border-border"),children:[i&&o.jsx("div",{className:"absolute top-1.5 right-1.5 sm:top-2 sm:right-2 h-1.5 w-1.5 sm:h-2 sm:w-2 rounded-full bg-primary"}),o.jsxs("div",{className:"flex flex-col items-center gap-1.5 sm:gap-2",children:[o.jsx("div",{className:xe("h-8 w-8 sm:h-10 sm:w-10 rounded-full",s)}),o.jsx("div",{className:"text-[10px] sm:text-xs font-medium text-center",children:r})]})]})}class hie{grad3;p;perm;constructor(e=0){this.grad3=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],this.p=[];for(let n=0;n<256;n++)this.p[n]=Math.floor(Math.random()*256);this.perm=[];for(let n=0;n<512;n++)this.perm[n]=this.p[n&255]}dot(e,n,r){return e[0]*n+e[1]*r}mix(e,n,r){return(1-r)*e+r*n}fade(e){return e*e*e*(e*(e*6-15)+10)}perlin2(e,n){const r=Math.floor(e)&255,s=Math.floor(n)&255;e-=Math.floor(e),n-=Math.floor(n);const i=this.fade(e),a=this.fade(n),l=this.perm[r]+s,c=this.perm[l],d=this.perm[l+1],h=this.perm[r+1]+s,m=this.perm[h],g=this.perm[h+1];return this.mix(this.mix(this.dot(this.grad3[c%12],e,n),this.dot(this.grad3[m%12],e-1,n),i),this.mix(this.dot(this.grad3[d%12],e,n-1),this.dot(this.grad3[g%12],e-1,n-1),i),a)}}function fie(){const t=b.useRef(null),e=b.useRef(null),n=b.useRef(void 0),r=b.useRef({mouse:{x:-10,y:0,lx:0,ly:0,sx:0,sy:0,v:0,vs:0,a:0,set:!1},lines:[],paths:[],noise:new hie(Math.random()),bounding:null});return b.useEffect(()=>{const s=e.current,i=t.current;if(!s||!i)return;const a=r.current,l=()=>{const w=s.getBoundingClientRect();a.bounding=w,i.style.width=`${w.width}px`,i.style.height=`${w.height}px`},c=()=>{if(!a.bounding)return;const{width:w,height:S}=a.bounding;a.lines=[],a.paths.forEach(q=>q.remove()),a.paths=[];const k=10,j=32,N=w+200,T=S+30,E=Math.ceil(N/k),_=Math.ceil(T/j),A=(w-k*E)/2,D=(S-j*_)/2;for(let q=0;q<=E;q++){const B=[];for(let W=0;W<=_;W++){const ee={x:A+k*q,y:D+j*W,wave:{x:0,y:0},cursor:{x:0,y:0,vx:0,vy:0}};B.push(ee)}const H=document.createElementNS("http://www.w3.org/2000/svg","path");i.appendChild(H),a.paths.push(H),a.lines.push(B)}},d=w=>{const{lines:S,mouse:k,noise:j}=a;S.forEach(N=>{N.forEach(T=>{const E=j.perlin2((T.x+w*.0125)*.002,(T.y+w*.005)*.0015)*12;T.wave.x=Math.cos(E)*32,T.wave.y=Math.sin(E)*16;const _=T.x-k.sx,A=T.y-k.sy,D=Math.hypot(_,A),q=Math.max(175,k.vs);if(D{const k={x:w.x+w.wave.x+(S?w.cursor.x:0),y:w.y+w.wave.y+(S?w.cursor.y:0)};return k.x=Math.round(k.x*10)/10,k.y=Math.round(k.y*10)/10,k},m=()=>{const{lines:w,paths:S}=a;w.forEach((k,j)=>{let N=h(k[0],!1),T=`M ${N.x} ${N.y}`;k.forEach((E,_)=>{const A=_===k.length-1;N=h(E,!A),T+=`L ${N.x} ${N.y}`}),S[j].setAttribute("d",T)})},g=w=>{const{mouse:S}=a;S.sx+=(S.x-S.sx)*.1,S.sy+=(S.y-S.sy)*.1;const k=S.x-S.lx,j=S.y-S.ly,N=Math.hypot(k,j);S.v=N,S.vs+=(N-S.vs)*.1,S.vs=Math.min(100,S.vs),S.lx=S.x,S.ly=S.y,S.a=Math.atan2(j,k),s&&(s.style.setProperty("--x",`${S.sx}px`),s.style.setProperty("--y",`${S.sy}px`)),d(w),m(),n.current=requestAnimationFrame(g)},x=w=>{if(!a.bounding)return;const{mouse:S}=a;S.x=w.pageX-a.bounding.left,S.y=w.pageY-a.bounding.top+window.scrollY,S.set||(S.sx=S.x,S.sy=S.y,S.lx=S.x,S.ly=S.y,S.set=!0)},y=()=>{l(),c()};return l(),c(),window.addEventListener("resize",y),window.addEventListener("mousemove",x),n.current=requestAnimationFrame(g),()=>{window.removeEventListener("resize",y),window.removeEventListener("mousemove",x),n.current&&cancelAnimationFrame(n.current)}},[]),o.jsxs("div",{ref:e,className:"waves-background",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflow:"hidden",pointerEvents:"none"},children:[o.jsx("div",{className:"waves-cursor",style:{position:"absolute",top:0,left:0,width:"0.5rem",height:"0.5rem",background:"hsl(var(--primary) / 0.3)",borderRadius:"50%",transform:"translate3d(calc(var(--x, -0.5rem) - 50%), calc(var(--y, 50%) - 50%), 0)",willChange:"transform",pointerEvents:"none"}}),o.jsx("svg",{ref:t,style:{display:"block",width:"100%",height:"100%"},children:o.jsx("style",{children:` path { fill: none; stroke: hsl(var(--primary) / 0.20); stroke-width: 1px; } - `})})]})}function uie(){const t=Zi();b.useEffect(()=>{localStorage.getItem("access-token")||t({to:"/auth"})},[t])}function CB(){return!!localStorage.getItem("access-token")}function die(){const[t,e]=b.useState(""),[n,r]=b.useState(!1),[s,i]=b.useState(""),a=Zi(),{enableWavesBackground:l,setEnableWavesBackground:c}=JL(),{theme:d,setTheme:h}=Vj();b.useEffect(()=>{CB()&&a({to:"/"})},[a]);const g=d==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":d,x=()=>{h(g==="dark"?"light":"dark")},y=async w=>{if(w.preventDefault(),i(""),!t.trim()){i("请输入 Access Token");return}r(!0);try{const S=await fetch("/api/webui/auth/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t.trim()})}),k=await S.json();if(S.ok&&k.valid){localStorage.setItem("access-token",t.trim());const j=await fetch("/api/webui/setup/status",{method:"GET",headers:{Authorization:`Bearer ${t.trim()}`}}),N=await j.json();j.ok&&N.is_first_setup?a({to:"/setup"}):a({to:"/"})}else i(k.message||"Token 验证失败,请检查后重试")}catch(S){console.error("Token 验证错误:",S),i("连接服务器失败,请检查网络连接")}finally{r(!1)}};return o.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[l&&o.jsx(cie,{}),o.jsxs(qt,{className:"relative z-10 w-full max-w-md shadow-2xl backdrop-blur-xl bg-card/80 border-border/50",children:[o.jsx("button",{onClick:x,className:"absolute right-4 top-4 rounded-lg p-2 hover:bg-accent transition-colors z-10 text-foreground",title:g==="dark"?"切换到浅色模式":"切换到深色模式",children:g==="dark"?o.jsx(nk,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"}):o.jsx(rk,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"})}),o.jsxs(Fn,{className:"space-y-4 text-center",children:[o.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-2xl bg-primary/10",children:o.jsx(y9,{className:"h-8 w-8 text-primary",strokeWidth:2,fill:"none"})}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(qn,{className:"text-2xl font-bold",children:"欢迎使用 MaiBot"}),o.jsx(ts,{className:"text-base",children:"请输入您的 Access Token 以继续访问系统"})]})]}),o.jsx(Gn,{children:o.jsxs("form",{onSubmit:y,className:"space-y-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"token",className:"text-sm font-medium",children:"Access Token"}),o.jsxs("div",{className:"relative",children:[o.jsx(bI,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground",strokeWidth:2,fill:"none"}),o.jsx(ze,{id:"token",type:"password",placeholder:"请输入您的 Access Token",value:t,onChange:w=>e(w.target.value),className:xe("pl-10",s&&"border-red-500 focus-visible:ring-red-500"),disabled:n,autoFocus:!0,autoComplete:"off"})]})]}),s&&o.jsxs("div",{className:"flex items-center gap-2 rounded-md bg-red-50 p-3 text-sm text-red-600 dark:bg-red-950/50 dark:text-red-400",children:[o.jsx(Uc,{className:"h-4 w-4 flex-shrink-0",strokeWidth:2,fill:"none"}),o.jsx("span",{children:s})]}),o.jsx(de,{type:"submit",className:"w-full",disabled:n,children:n?o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent"}),"验证中..."]}):"验证并进入"}),o.jsxs(Dr,{children:[o.jsx(Of,{asChild:!0,children:o.jsxs("button",{className:"w-full text-center text-sm text-primary hover:text-primary/80 transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[o.jsx(Wy,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我没有 Token,我该去哪里获得 Token?"]})}),o.jsxs(Sr,{className:"sm:max-w-md",children:[o.jsxs(kr,{children:[o.jsxs(Or,{className:"flex items-center gap-2",children:[o.jsx(y9,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"如何获取 Access Token"]}),o.jsx(ss,{children:"Access Token 是访问 MaiBot WebUI 的唯一凭证,请按以下方式获取"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Hee,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),o.jsxs("div",{className:"flex-1 space-y-2",children:[o.jsx("h4",{className:"font-semibold text-sm",children:"方式一:查看启动日志"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"在 MaiBot 启动时,控制台会显示 WebUI Access Token。"}),o.jsxs("div",{className:"rounded bg-background p-2 font-mono text-xs",children:[o.jsx("p",{className:"text-muted-foreground",children:"🔑 WebUI Access Token: abc123..."}),o.jsx("p",{className:"text-muted-foreground",children:"💡 请使用此 Token 登录 WebUI"})]})]})]})}),o.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(zl,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),o.jsxs("div",{className:"flex-1 space-y-2",children:[o.jsx("h4",{className:"font-semibold text-sm",children:"方式二:查看配置文件"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"Token 保存在项目根目录的配置文件中:"}),o.jsx("div",{className:"rounded bg-background p-2 font-mono text-xs break-all",children:o.jsx("code",{className:"text-primary",children:"data/webui.json"})}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:["打开此文件,复制 ",o.jsx("code",{className:"px-1 py-0.5 bg-background rounded",children:"access_token"})," 字段的值"]})]})]})}),o.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Uc,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),o.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[o.jsx("p",{className:"font-semibold",children:"安全提示"}),o.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[o.jsx("li",{children:"请妥善保管您的 Token,不要泄露给他人"}),o.jsx("li",{children:"如需重置 Token,请在登录后前往系统设置"})]})]})]})})]})]})]}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs("button",{className:"w-full text-center text-sm text-muted-foreground hover:text-foreground transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[o.jsx(tk,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我觉得这个界面很卡怎么办?"]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsxs(En,{className:"flex items-center gap-2",children:[o.jsx(tk,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"关闭背景动画"]}),o.jsx(_n,{children:"背景动画可能会在低性能设备上造成卡顿。关闭动画可以显著提升界面流畅度。"})]}),o.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:o.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭动画后,背景将变为纯色,但不影响任何功能的使用。您可以随时在系统设置中重新开启动画。"})}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>c(!1),children:"关闭动画"})]})]})]})]})})]}),o.jsx("div",{className:"absolute bottom-4 left-0 right-0 text-center text-xs text-muted-foreground",children:o.jsx("p",{children:Bse})})]})}const Mr=b.forwardRef(({className:t,...e},n)=>o.jsx("textarea",{className:xe("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",t),ref:n,...e}));Mr.displayName="Textarea";var hie=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],fie=hie.reduce((t,e)=>{const n=Fy(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...l}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(c,{...l,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),mie="Separator",rE="horizontal",pie=["horizontal","vertical"],TB=b.forwardRef((t,e)=>{const{decorative:n,orientation:r=rE,...s}=t,i=gie(r)?r:rE,l=n?{role:"none"}:{"aria-orientation":i==="vertical"?i:void 0,role:"separator"};return o.jsx(fie.div,{"data-orientation":i,...l,...s,ref:e})});TB.displayName=mie;function gie(t){return pie.includes(t)}var EB=TB;const L0=b.forwardRef(({className:t,orientation:e="horizontal",decorative:n=!0,...r},s)=>o.jsx(EB,{ref:s,decorative:n,orientation:e,className:xe("shrink-0 bg-border",e==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",t),...r}));L0.displayName=EB.displayName;const xie=kf("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function Xn({className:t,variant:e,...n}){return o.jsx("div",{className:xe(xie({variant:e}),t),...n})}function vie({config:t,onChange:e}){const n=s=>{s.trim()&&!t.alias_names.includes(s.trim())&&e({...t,alias_names:[...t.alias_names,s.trim()]})},r=s=>{e({...t,alias_names:t.alias_names.filter((i,a)=>a!==s)})};return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"qq_account",children:"QQ账号 *"}),o.jsx(ze,{id:"qq_account",type:"number",placeholder:"请输入机器人的QQ账号",value:t.qq_account||"",onChange:s=>e({...t,qq_account:Number(s.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人登录使用的QQ账号"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"nickname",children:"昵称 *"}),o.jsx(ze,{id:"nickname",placeholder:"请输入机器人的昵称",value:t.nickname,onChange:s=>e({...t,nickname:s.target.value})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的主要称呼名称"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{children:"别名"}),o.jsx("div",{className:"flex flex-wrap gap-2 mb-2",children:t.alias_names.map((s,i)=>o.jsxs(Xn,{variant:"secondary",className:"gap-1",children:[s,o.jsx("button",{type:"button",onClick:()=>r(i),className:"ml-1 hover:text-destructive",children:o.jsx(_p,{className:"h-3 w-3"})})]},i))}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{id:"alias_input",placeholder:"输入别名后按回车添加",onKeyPress:s=>{s.key==="Enter"&&(n(s.target.value),s.target.value="")}}),o.jsx(de,{type:"button",variant:"outline",onClick:()=>{const s=document.getElementById("alias_input");s&&(n(s.value),s.value="")},children:"添加"})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的其他称呼,可以添加多个"})]})]})}function yie({config:t,onChange:e}){return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"personality",children:"人格特征 *"}),o.jsx(Mr,{id:"personality",placeholder:"描述机器人的人格特质和身份特征(建议120字以内)",value:t.personality,onChange:n=>e({...t,personality:n.target.value}),rows:3}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:是一个女大学生,现在在读大二,会刷贴吧"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"reply_style",children:"表达风格 *"}),o.jsx(Mr,{id:"reply_style",placeholder:"描述机器人说话的表达风格、表达习惯",value:t.reply_style,onChange:n=>e({...t,reply_style:n.target.value}),rows:3}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:回复平淡一些,简短一些,说中文,参考贴吧、知乎和微博的回复风格"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"interest",children:"兴趣 *"}),o.jsx(Mr,{id:"interest",placeholder:"描述机器人感兴趣的话题",value:t.interest,onChange:n=>e({...t,interest:n.target.value}),rows:2}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"会影响机器人对什么话题进行回复"})]}),o.jsx(L0,{}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"plan_style",children:"群聊说话规则 *"}),o.jsx(Mr,{id:"plan_style",placeholder:"机器人在群聊中的行为风格和规则",value:t.plan_style,onChange:n=>e({...t,plan_style:n.target.value}),rows:4}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在群聊中如何行动,例如回复频率、条件等"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"private_plan_style",children:"私聊说话规则 *"}),o.jsx(Mr,{id:"private_plan_style",placeholder:"机器人在私聊中的行为风格和规则",value:t.private_plan_style,onChange:n=>e({...t,private_plan_style:n.target.value}),rows:3}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在私聊中的行为方式"})]})]})}function bie({config:t,onChange:e}){return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{htmlFor:"emoji_chance",children:"表情包激活概率"}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:[(t.emoji_chance*100).toFixed(0),"%"]})]}),o.jsx(ze,{id:"emoji_chance",type:"range",min:"0",max:"1",step:"0.1",value:t.emoji_chance,onChange:n=>e({...t,emoji_chance:Number(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人发送表情包的概率"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"max_reg_num",children:"最大表情包数量"}),o.jsx(ze,{id:"max_reg_num",type:"number",min:"1",max:"200",value:t.max_reg_num,onChange:n=>e({...t,max_reg_num:Number(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人最多保存的表情包数量"})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(he,{htmlFor:"do_replace",children:"达到最大数量时替换"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"开启后会删除旧表情包,关闭则不再收集新表情包"})]}),o.jsx(Bt,{id:"do_replace",checked:t.do_replace,onCheckedChange:n=>e({...t,do_replace:n})})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),o.jsx(ze,{id:"check_interval",type:"number",min:"1",max:"120",value:t.check_interval,onChange:n=>e({...t,check_interval:Number(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包注册、破损、删除的时间间隔"})]}),o.jsx(L0,{}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(he,{htmlFor:"steal_emoji",children:"偷取表情包"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人将一些表情包据为己有"})]}),o.jsx(Bt,{id:"steal_emoji",checked:t.steal_emoji,onCheckedChange:n=>e({...t,steal_emoji:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(he,{htmlFor:"content_filtration",children:"启用表情包过滤"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"只保存符合要求的表情包"})]}),o.jsx(Bt,{id:"content_filtration",checked:t.content_filtration,onCheckedChange:n=>e({...t,content_filtration:n})})]}),t.content_filtration&&o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"filtration_prompt",children:"过滤要求"}),o.jsx(ze,{id:"filtration_prompt",placeholder:"例如:符合公序良俗",value:t.filtration_prompt,onChange:n=>e({...t,filtration_prompt:n.target.value})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"描述表情包应该符合的要求"})]})]})}function wie({config:t,onChange:e}){return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(he,{htmlFor:"enable_tool",children:"启用工具系统"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人使用各种工具增强功能"})]}),o.jsx(Bt,{id:"enable_tool",checked:t.enable_tool,onCheckedChange:n=>e({...t,enable_tool:n})})]}),o.jsx(L0,{}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(he,{htmlFor:"enable_mood",children:"启用情绪系统"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"让机器人具有情绪变化能力"})]}),o.jsx(Bt,{id:"enable_mood",checked:t.enable_mood,onCheckedChange:n=>e({...t,enable_mood:n})})]}),t.enable_mood&&o.jsxs("div",{className:"ml-6 space-y-6 border-l-2 border-primary/20 pl-6",children:[o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"mood_update_threshold",children:"情绪更新阈值"}),o.jsx(ze,{id:"mood_update_threshold",type:"number",min:"0.1",max:"10",step:"0.1",value:t.mood_update_threshold||1,onChange:n=>e({...t,mood_update_threshold:Number(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"值越高,情绪更新越慢"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"emotion_style",children:"情感特征"}),o.jsx(Mr,{id:"emotion_style",placeholder:"描述情绪的变化情况,例如:情绪较为稳定,但遭遇特定事件时起伏较大",value:t.emotion_style||"",onChange:n=>e({...t,emotion_style:n.target.value}),rows:2}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"影响机器人的情绪变化方式"})]})]}),o.jsx(L0,{}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(he,{htmlFor:"all_global",children:"启用全局黑话模式"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人学习和使用群组黑话"})]}),o.jsx(Bt,{id:"all_global",checked:t.all_global,onCheckedChange:n=>e({...t,all_global:n})})]})]})}function Sie({config:t,onChange:e}){const[n,r]=b.useState(!1);return o.jsxs("div",{className:"space-y-6",children:[o.jsx("div",{className:"rounded-lg bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-4",children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx("div",{className:"mt-0.5",children:o.jsx("svg",{className:"h-5 w-5 text-blue-600 dark:text-blue-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:o.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),o.jsxs("div",{className:"flex-1 text-sm",children:[o.jsx("p",{className:"font-medium text-blue-900 dark:text-blue-100 mb-1",children:"关于硅基流动 (SiliconFlow)"}),o.jsx("p",{className:"text-blue-700 dark:text-blue-300 mb-2",children:"硅基流动提供了完整的模型覆盖,包括 DeepSeek V3、Qwen、视觉模型、语音识别和嵌入模型。 只需一个 API Key 即可使用麦麦的所有功能!"}),o.jsxs("a",{href:"https://cloud.siliconflow.cn",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-blue-600 dark:text-blue-400 hover:underline font-medium",children:["前往硅基流动获取 API Key",o.jsx(Ah,{className:"h-3 w-3"})]})]})]})}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"siliconflow_api_key",children:"SiliconFlow API Key *"}),o.jsxs("div",{className:"relative",children:[o.jsx(ze,{id:"siliconflow_api_key",type:n?"text":"password",placeholder:"sk-...",value:t.api_key,onChange:s=>e({api_key:s.target.value}),className:"font-mono pr-10"}),o.jsx(de,{type:"button",variant:"ghost",size:"sm",className:"absolute right-0 top-0 h-full px-3 hover:bg-transparent",onClick:()=>r(!n),children:n?o.jsx(Rv,{className:"h-4 w-4 text-muted-foreground"}):o.jsx(Ea,{className:"h-4 w-4 text-muted-foreground"})})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"请输入您的硅基流动 API 密钥。获取后,麦麦将自动配置所有必需的模型。"})]}),o.jsxs("div",{className:"rounded-lg bg-muted/50 p-4 text-sm space-y-2",children:[o.jsx("p",{className:"font-medium",children:"将自动配置以下模型:"}),o.jsxs("ul",{className:"list-disc list-inside space-y-1 text-muted-foreground ml-2",children:[o.jsx("li",{children:"DeepSeek V3 - 主要对话和工具模型"}),o.jsx("li",{children:"Qwen3 30B - 高频小任务和工具调用"}),o.jsx("li",{children:"Qwen3 VL 30B - 图像识别"}),o.jsx("li",{children:"SenseVoice - 语音识别"}),o.jsx("li",{children:"BGE-M3 - 文本嵌入"}),o.jsx("li",{children:"知识库相关模型 (LPMM)"})]})]}),o.jsx("div",{className:"rounded-lg border border-amber-200 dark:border-amber-800 bg-amber-50 dark:bg-amber-950/30 p-4",children:o.jsxs("p",{className:"text-sm text-amber-900 dark:text-amber-100",children:[o.jsx("span",{className:"font-medium",children:"💡 提示:"}),'完成向导后,您可以在"系统设置 → 模型配置"中添加更多 API 提供商和模型。']})})]})}async function St(t,e){const n=await fetch(t,e);if(n.status===401)throw localStorage.removeItem("access-token"),window.location.href="/auth",new Error("认证失败,请重新登录");return n}function Dt(){return{"Content-Type":"application/json",Authorization:`Bearer ${localStorage.getItem("access-token")}`}}async function kie(){const t=await St("/api/webui/config/bot",{method:"GET",headers:Dt()});if(!t.ok)throw new Error("读取Bot配置失败");const n=(await t.json()).config.bot||{};return{qq_account:n.qq_account||0,nickname:n.nickname||"",alias_names:n.alias_names||[]}}async function Oie(){const t=await St("/api/webui/config/bot",{method:"GET",headers:Dt()});if(!t.ok)throw new Error("读取人格配置失败");const n=(await t.json()).config.personality||{};return{personality:n.personality||"",reply_style:n.reply_style||"",interest:n.interest||"",plan_style:n.plan_style||"",private_plan_style:n.private_plan_style||""}}async function jie(){const t=await St("/api/webui/config/bot",{method:"GET",headers:Dt()});if(!t.ok)throw new Error("读取表情包配置失败");const n=(await t.json()).config.emoji||{};return{emoji_chance:n.emoji_chance??.4,max_reg_num:n.max_reg_num??40,do_replace:n.do_replace??!0,check_interval:n.check_interval??10,steal_emoji:n.steal_emoji??!0,content_filtration:n.content_filtration??!1,filtration_prompt:n.filtration_prompt||""}}async function Nie(){const t=await St("/api/webui/config/bot",{method:"GET",headers:Dt()});if(!t.ok)throw new Error("读取其他配置失败");const n=(await t.json()).config,r=n.tool||{},s=n.mood||{},i=n.jargon||{};return{enable_tool:r.enable_tool??!0,enable_mood:s.enable_mood??!1,mood_update_threshold:s.mood_update_threshold,emotion_style:s.emotion_style,all_global:i.all_global??!0}}async function Cie(){const t=await St("/api/webui/config/model",{method:"GET",headers:Dt()});if(!t.ok)throw new Error("读取模型配置失败");return{api_key:((await t.json()).config.api_providers||[]).find(i=>i.name==="SiliconFlow")?.api_key||""}}async function Tie(t){const e=await St("/api/webui/config/bot/section/bot",{method:"POST",headers:Dt(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"保存Bot基础配置失败")}return await e.json()}async function Eie(t){const e=await St("/api/webui/config/bot/section/personality",{method:"POST",headers:Dt(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"保存人格配置失败")}return await e.json()}async function _ie(t){const e=await St("/api/webui/config/bot/section/emoji",{method:"POST",headers:Dt(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"保存表情包配置失败")}return await e.json()}async function Aie(t){const e=[];e.push(St("/api/webui/config/bot/section/tool",{method:"POST",headers:Dt(),body:JSON.stringify({enable_tool:t.enable_tool})})),e.push(St("/api/webui/config/bot/section/jargon",{method:"POST",headers:Dt(),body:JSON.stringify({all_global:t.all_global})}));const n={enable_mood:t.enable_mood};t.enable_mood&&(n.mood_update_threshold=t.mood_update_threshold||1,n.emotion_style=t.emotion_style||""),e.push(St("/api/webui/config/bot/section/mood",{method:"POST",headers:Dt(),body:JSON.stringify(n)}));const r=await Promise.all(e);for(const s of r)if(!s.ok){const i=await s.json();throw new Error(i.detail||"保存其他配置失败")}return{success:!0}}async function Mie(t){const e=await St("/api/webui/config/model",{method:"GET",headers:Dt()});if(!e.ok)throw new Error("读取模型配置失败");const r=(await e.json()).config,s=r.api_providers||[],i=s.findIndex(c=>c.name==="SiliconFlow");i>=0?s[i]={...s[i],api_key:t.api_key}:s.push({name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",api_key:t.api_key,client_type:"openai",max_retry:3,timeout:120,retry_interval:5});const a={...r,api_providers:s},l=await St("/api/webui/config/model",{method:"POST",headers:Dt(),body:JSON.stringify(a)});if(!l.ok){const c=await l.json();throw new Error(c.detail||"保存模型配置失败")}return await l.json()}async function sE(){const t=localStorage.getItem("access-token"),e=await St("/api/webui/setup/complete",{method:"POST",headers:{Authorization:`Bearer ${t}`}});if(!e.ok){const n=await e.json();throw new Error(n.message||"标记配置完成失败")}return await e.json()}async function ib(){const t=await St("/api/webui/system/restart",{method:"POST",headers:Dt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"重启失败")}return await t.json()}async function Rie(){const t=await St("/api/webui/system/status",{method:"GET",headers:Dt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取状态失败")}return await t.json()}function Die(){const t=Zi(),{toast:e}=as(),[n,r]=b.useState(0),[s,i]=b.useState(!1),[a,l]=b.useState(!1),[c,d]=b.useState(!0),[h,m]=b.useState({qq_account:0,nickname:"",alias_names:[]}),[g,x]=b.useState({personality:"是一个女大学生,现在在读大二,会刷贴吧。",reply_style:"请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景。可以参考贴吧,知乎和微博的回复风格。",interest:"对技术相关话题,游戏和动漫相关话题感兴趣,也对日常话题感兴趣,不喜欢太过沉重严肃的话题",plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 + `})})]})}function mie(){const t=na();b.useEffect(()=>{localStorage.getItem("access-token")||t({to:"/auth"})},[t])}function AB(){return!!localStorage.getItem("access-token")}function pie(){const[t,e]=b.useState(""),[n,r]=b.useState(!1),[s,i]=b.useState(""),a=na(),{enableWavesBackground:l,setEnableWavesBackground:c}=rB(),{theme:d,setTheme:h}=Kj();b.useEffect(()=>{AB()&&a({to:"/"})},[a]);const g=d==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":d,x=()=>{h(g==="dark"?"light":"dark")},y=async w=>{if(w.preventDefault(),i(""),!t.trim()){i("请输入 Access Token");return}r(!0);try{const S=await fetch("/api/webui/auth/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t.trim()})}),k=await S.json();if(S.ok&&k.valid){localStorage.setItem("access-token",t.trim());const j=await fetch("/api/webui/setup/status",{method:"GET",headers:{Authorization:`Bearer ${t.trim()}`}}),N=await j.json();j.ok&&N.is_first_setup?a({to:"/setup"}):a({to:"/"})}else i(k.message||"Token 验证失败,请检查后重试")}catch(S){console.error("Token 验证错误:",S),i("连接服务器失败,请检查网络连接")}finally{r(!1)}};return o.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[l&&o.jsx(fie,{}),o.jsxs(Lt,{className:"relative z-10 w-full max-w-md shadow-2xl backdrop-blur-xl bg-card/80 border-border/50",children:[o.jsx("button",{onClick:x,className:"absolute right-4 top-4 rounded-lg p-2 hover:bg-accent transition-colors z-10 text-foreground",title:g==="dark"?"切换到浅色模式":"切换到深色模式",children:g==="dark"?o.jsx(ik,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"}):o.jsx(ak,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"})}),o.jsxs(En,{className:"space-y-4 text-center",children:[o.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-2xl bg-primary/10",children:o.jsx(j9,{className:"h-8 w-8 text-primary",strokeWidth:2,fill:"none"})}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(_n,{className:"text-2xl font-bold",children:"欢迎使用 MaiBot"}),o.jsx(Wr,{className:"text-base",children:"请输入您的 Access Token 以继续访问系统"})]})]}),o.jsx(Xn,{children:o.jsxs("form",{onSubmit:y,className:"space-y-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"token",className:"text-sm font-medium",children:"Access Token"}),o.jsxs("div",{className:"relative",children:[o.jsx(jI,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground",strokeWidth:2,fill:"none"}),o.jsx(Pe,{id:"token",type:"password",placeholder:"请输入您的 Access Token",value:t,onChange:w=>e(w.target.value),className:xe("pl-10",s&&"border-red-500 focus-visible:ring-red-500"),disabled:n,autoFocus:!0,autoComplete:"off"})]})]}),s&&o.jsxs("div",{className:"flex items-center gap-2 rounded-md bg-red-50 p-3 text-sm text-red-600 dark:bg-red-950/50 dark:text-red-400",children:[o.jsx(Lo,{className:"h-4 w-4 flex-shrink-0",strokeWidth:2,fill:"none"}),o.jsx("span",{children:s})]}),o.jsx(ue,{type:"submit",className:"w-full",disabled:n,children:n?o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent"}),"验证中..."]}):"验证并进入"}),o.jsxs(Er,{children:[o.jsx(Of,{asChild:!0,children:o.jsxs("button",{className:"w-full text-center text-sm text-primary hover:text-primary/80 transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[o.jsx(Zy,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我没有 Token,我该去哪里获得 Token?"]})}),o.jsxs(wr,{className:"sm:max-w-md",children:[o.jsxs(Sr,{children:[o.jsxs(kr,{className:"flex items-center gap-2",children:[o.jsx(j9,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"如何获取 Access Token"]}),o.jsx(Xr,{children:"Access Token 是访问 MaiBot WebUI 的唯一凭证,请按以下方式获取"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Vee,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),o.jsxs("div",{className:"flex-1 space-y-2",children:[o.jsx("h4",{className:"font-semibold text-sm",children:"方式一:查看启动日志"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"在 MaiBot 启动时,控制台会显示 WebUI Access Token。"}),o.jsxs("div",{className:"rounded bg-background p-2 font-mono text-xs",children:[o.jsx("p",{className:"text-muted-foreground",children:"🔑 WebUI Access Token: abc123..."}),o.jsx("p",{className:"text-muted-foreground",children:"💡 请使用此 Token 登录 WebUI"})]})]})]})}),o.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Po,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),o.jsxs("div",{className:"flex-1 space-y-2",children:[o.jsx("h4",{className:"font-semibold text-sm",children:"方式二:查看配置文件"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"Token 保存在项目根目录的配置文件中:"}),o.jsx("div",{className:"rounded bg-background p-2 font-mono text-xs break-all",children:o.jsx("code",{className:"text-primary",children:"data/webui.json"})}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:["打开此文件,复制 ",o.jsx("code",{className:"px-1 py-0.5 bg-background rounded",children:"access_token"})," 字段的值"]})]})]})}),o.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Lo,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),o.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[o.jsx("p",{className:"font-semibold",children:"安全提示"}),o.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[o.jsx("li",{children:"请妥善保管您的 Token,不要泄露给他人"}),o.jsx("li",{children:"如需重置 Token,请在登录后前往系统设置"})]})]})]})})]})]})]}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsxs("button",{className:"w-full text-center text-sm text-muted-foreground hover:text-foreground transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[o.jsx(Zu,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我觉得这个界面很卡怎么办?"]})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsxs(Pn,{className:"flex items-center gap-2",children:[o.jsx(Zu,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"关闭背景动画"]}),o.jsx(zn,{children:"背景动画可能会在低性能设备上造成卡顿。关闭动画可以显著提升界面流畅度。"})]}),o.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:o.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭动画后,背景将变为纯色,但不影响任何功能的使用。您可以随时在系统设置中重新开启动画。"})}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>c(!1),children:"关闭动画"})]})]})]})]})})]}),o.jsx("div",{className:"absolute bottom-4 left-0 right-0 text-center text-xs text-muted-foreground",children:o.jsx("p",{children:Hse})})]})}const Nr=b.forwardRef(({className:t,...e},n)=>o.jsx("textarea",{className:xe("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",t),ref:n,...e}));Nr.displayName="Textarea";var gie=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],xie=gie.reduce((t,e)=>{const n=Vy(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...l}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(c,{...l,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),vie="Separator",cE="horizontal",yie=["horizontal","vertical"],MB=b.forwardRef((t,e)=>{const{decorative:n,orientation:r=cE,...s}=t,i=bie(r)?r:cE,l=n?{role:"none"}:{"aria-orientation":i==="vertical"?i:void 0,role:"separator"};return o.jsx(xie.div,{"data-orientation":i,...l,...s,ref:e})});MB.displayName=vie;function bie(t){return yie.includes(t)}var RB=MB;const $0=b.forwardRef(({className:t,orientation:e="horizontal",decorative:n=!0,...r},s)=>o.jsx(RB,{ref:s,decorative:n,orientation:e,className:xe("shrink-0 bg-border",e==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",t),...r}));$0.displayName=RB.displayName;function wie({config:t,onChange:e}){const n=s=>{s.trim()&&!t.alias_names.includes(s.trim())&&e({...t,alias_names:[...t.alias_names,s.trim()]})},r=s=>{e({...t,alias_names:t.alias_names.filter((i,a)=>a!==s)})};return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"qq_account",children:"QQ账号 *"}),o.jsx(Pe,{id:"qq_account",type:"number",placeholder:"请输入机器人的QQ账号",value:t.qq_account||"",onChange:s=>e({...t,qq_account:Number(s.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人登录使用的QQ账号"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"nickname",children:"昵称 *"}),o.jsx(Pe,{id:"nickname",placeholder:"请输入机器人的昵称",value:t.nickname,onChange:s=>e({...t,nickname:s.target.value})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的主要称呼名称"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{children:"别名"}),o.jsx("div",{className:"flex flex-wrap gap-2 mb-2",children:t.alias_names.map((s,i)=>o.jsxs(tn,{variant:"secondary",className:"gap-1",children:[s,o.jsx("button",{type:"button",onClick:()=>r(i),className:"ml-1 hover:text-destructive",children:o.jsx(Pp,{className:"h-3 w-3"})})]},i))}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Pe,{id:"alias_input",placeholder:"输入别名后按回车添加",onKeyPress:s=>{s.key==="Enter"&&(n(s.target.value),s.target.value="")}}),o.jsx(ue,{type:"button",variant:"outline",onClick:()=>{const s=document.getElementById("alias_input");s&&(n(s.value),s.value="")},children:"添加"})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的其他称呼,可以添加多个"})]})]})}function Sie({config:t,onChange:e}){return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"personality",children:"人格特征 *"}),o.jsx(Nr,{id:"personality",placeholder:"描述机器人的人格特质和身份特征(建议120字以内)",value:t.personality,onChange:n=>e({...t,personality:n.target.value}),rows:3}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:是一个女大学生,现在在读大二,会刷贴吧"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"reply_style",children:"表达风格 *"}),o.jsx(Nr,{id:"reply_style",placeholder:"描述机器人说话的表达风格、表达习惯",value:t.reply_style,onChange:n=>e({...t,reply_style:n.target.value}),rows:3}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:回复平淡一些,简短一些,说中文,参考贴吧、知乎和微博的回复风格"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"interest",children:"兴趣 *"}),o.jsx(Nr,{id:"interest",placeholder:"描述机器人感兴趣的话题",value:t.interest,onChange:n=>e({...t,interest:n.target.value}),rows:2}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"会影响机器人对什么话题进行回复"})]}),o.jsx($0,{}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"plan_style",children:"群聊说话规则 *"}),o.jsx(Nr,{id:"plan_style",placeholder:"机器人在群聊中的行为风格和规则",value:t.plan_style,onChange:n=>e({...t,plan_style:n.target.value}),rows:4}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在群聊中如何行动,例如回复频率、条件等"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"private_plan_style",children:"私聊说话规则 *"}),o.jsx(Nr,{id:"private_plan_style",placeholder:"机器人在私聊中的行为风格和规则",value:t.private_plan_style,onChange:n=>e({...t,private_plan_style:n.target.value}),rows:3}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在私聊中的行为方式"})]})]})}function kie({config:t,onChange:e}){return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{htmlFor:"emoji_chance",children:"表情包激活概率"}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:[(t.emoji_chance*100).toFixed(0),"%"]})]}),o.jsx(Pe,{id:"emoji_chance",type:"range",min:"0",max:"1",step:"0.1",value:t.emoji_chance,onChange:n=>e({...t,emoji_chance:Number(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人发送表情包的概率"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"max_reg_num",children:"最大表情包数量"}),o.jsx(Pe,{id:"max_reg_num",type:"number",min:"1",max:"200",value:t.max_reg_num,onChange:n=>e({...t,max_reg_num:Number(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人最多保存的表情包数量"})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(he,{htmlFor:"do_replace",children:"达到最大数量时替换"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"开启后会删除旧表情包,关闭则不再收集新表情包"})]}),o.jsx(Ft,{id:"do_replace",checked:t.do_replace,onCheckedChange:n=>e({...t,do_replace:n})})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),o.jsx(Pe,{id:"check_interval",type:"number",min:"1",max:"120",value:t.check_interval,onChange:n=>e({...t,check_interval:Number(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包注册、破损、删除的时间间隔"})]}),o.jsx($0,{}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(he,{htmlFor:"steal_emoji",children:"偷取表情包"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人将一些表情包据为己有"})]}),o.jsx(Ft,{id:"steal_emoji",checked:t.steal_emoji,onCheckedChange:n=>e({...t,steal_emoji:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(he,{htmlFor:"content_filtration",children:"启用表情包过滤"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"只保存符合要求的表情包"})]}),o.jsx(Ft,{id:"content_filtration",checked:t.content_filtration,onCheckedChange:n=>e({...t,content_filtration:n})})]}),t.content_filtration&&o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"filtration_prompt",children:"过滤要求"}),o.jsx(Pe,{id:"filtration_prompt",placeholder:"例如:符合公序良俗",value:t.filtration_prompt,onChange:n=>e({...t,filtration_prompt:n.target.value})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"描述表情包应该符合的要求"})]})]})}function Oie({config:t,onChange:e}){return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(he,{htmlFor:"enable_tool",children:"启用工具系统"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人使用各种工具增强功能"})]}),o.jsx(Ft,{id:"enable_tool",checked:t.enable_tool,onCheckedChange:n=>e({...t,enable_tool:n})})]}),o.jsx($0,{}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(he,{htmlFor:"enable_mood",children:"启用情绪系统"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"让机器人具有情绪变化能力"})]}),o.jsx(Ft,{id:"enable_mood",checked:t.enable_mood,onCheckedChange:n=>e({...t,enable_mood:n})})]}),t.enable_mood&&o.jsxs("div",{className:"ml-6 space-y-6 border-l-2 border-primary/20 pl-6",children:[o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"mood_update_threshold",children:"情绪更新阈值"}),o.jsx(Pe,{id:"mood_update_threshold",type:"number",min:"0.1",max:"10",step:"0.1",value:t.mood_update_threshold||1,onChange:n=>e({...t,mood_update_threshold:Number(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"值越高,情绪更新越慢"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"emotion_style",children:"情感特征"}),o.jsx(Nr,{id:"emotion_style",placeholder:"描述情绪的变化情况,例如:情绪较为稳定,但遭遇特定事件时起伏较大",value:t.emotion_style||"",onChange:n=>e({...t,emotion_style:n.target.value}),rows:2}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"影响机器人的情绪变化方式"})]})]}),o.jsx($0,{}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(he,{htmlFor:"all_global",children:"启用全局黑话模式"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人学习和使用群组黑话"})]}),o.jsx(Ft,{id:"all_global",checked:t.all_global,onCheckedChange:n=>e({...t,all_global:n})})]})]})}function jie({config:t,onChange:e}){const[n,r]=b.useState(!1);return o.jsxs("div",{className:"space-y-6",children:[o.jsx("div",{className:"rounded-lg bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-4",children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx("div",{className:"mt-0.5",children:o.jsx("svg",{className:"h-5 w-5 text-blue-600 dark:text-blue-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:o.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),o.jsxs("div",{className:"flex-1 text-sm",children:[o.jsx("p",{className:"font-medium text-blue-900 dark:text-blue-100 mb-1",children:"关于硅基流动 (SiliconFlow)"}),o.jsx("p",{className:"text-blue-700 dark:text-blue-300 mb-2",children:"硅基流动提供了完整的模型覆盖,包括 DeepSeek V3、Qwen、视觉模型、语音识别和嵌入模型。 只需一个 API Key 即可使用麦麦的所有功能!"}),o.jsxs("a",{href:"https://cloud.siliconflow.cn",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-blue-600 dark:text-blue-400 hover:underline font-medium",children:["前往硅基流动获取 API Key",o.jsx(w0,{className:"h-3 w-3"})]})]})]})}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"siliconflow_api_key",children:"SiliconFlow API Key *"}),o.jsxs("div",{className:"relative",children:[o.jsx(Pe,{id:"siliconflow_api_key",type:n?"text":"password",placeholder:"sk-...",value:t.api_key,onChange:s=>e({api_key:s.target.value}),className:"font-mono pr-10"}),o.jsx(ue,{type:"button",variant:"ghost",size:"sm",className:"absolute right-0 top-0 h-full px-3 hover:bg-transparent",onClick:()=>r(!n),children:n?o.jsx(I0,{className:"h-4 w-4 text-muted-foreground"}):o.jsx(Ji,{className:"h-4 w-4 text-muted-foreground"})})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"请输入您的硅基流动 API 密钥。获取后,麦麦将自动配置所有必需的模型。"})]}),o.jsxs("div",{className:"rounded-lg bg-muted/50 p-4 text-sm space-y-2",children:[o.jsx("p",{className:"font-medium",children:"将自动配置以下模型:"}),o.jsxs("ul",{className:"list-disc list-inside space-y-1 text-muted-foreground ml-2",children:[o.jsx("li",{children:"DeepSeek V3 - 主要对话和工具模型"}),o.jsx("li",{children:"Qwen3 30B - 高频小任务和工具调用"}),o.jsx("li",{children:"Qwen3 VL 30B - 图像识别"}),o.jsx("li",{children:"SenseVoice - 语音识别"}),o.jsx("li",{children:"BGE-M3 - 文本嵌入"}),o.jsx("li",{children:"知识库相关模型 (LPMM)"})]})]}),o.jsx("div",{className:"rounded-lg border border-amber-200 dark:border-amber-800 bg-amber-50 dark:bg-amber-950/30 p-4",children:o.jsxs("p",{className:"text-sm text-amber-900 dark:text-amber-100",children:[o.jsx("span",{className:"font-medium",children:"💡 提示:"}),'完成向导后,您可以在"系统设置 → 模型配置"中添加更多 API 提供商和模型。']})})]})}async function gt(t,e){const n=await fetch(t,e);if(n.status===401)throw localStorage.removeItem("access-token"),window.location.href="/auth",new Error("认证失败,请重新登录");return n}function Tt(){return{"Content-Type":"application/json",Authorization:`Bearer ${localStorage.getItem("access-token")}`}}async function Nie(){const t=await gt("/api/webui/config/bot",{method:"GET",headers:Tt()});if(!t.ok)throw new Error("读取Bot配置失败");const n=(await t.json()).config.bot||{};return{qq_account:n.qq_account||0,nickname:n.nickname||"",alias_names:n.alias_names||[]}}async function Cie(){const t=await gt("/api/webui/config/bot",{method:"GET",headers:Tt()});if(!t.ok)throw new Error("读取人格配置失败");const n=(await t.json()).config.personality||{};return{personality:n.personality||"",reply_style:n.reply_style||"",interest:n.interest||"",plan_style:n.plan_style||"",private_plan_style:n.private_plan_style||""}}async function Tie(){const t=await gt("/api/webui/config/bot",{method:"GET",headers:Tt()});if(!t.ok)throw new Error("读取表情包配置失败");const n=(await t.json()).config.emoji||{};return{emoji_chance:n.emoji_chance??.4,max_reg_num:n.max_reg_num??40,do_replace:n.do_replace??!0,check_interval:n.check_interval??10,steal_emoji:n.steal_emoji??!0,content_filtration:n.content_filtration??!1,filtration_prompt:n.filtration_prompt||""}}async function Eie(){const t=await gt("/api/webui/config/bot",{method:"GET",headers:Tt()});if(!t.ok)throw new Error("读取其他配置失败");const n=(await t.json()).config,r=n.tool||{},s=n.mood||{},i=n.jargon||{};return{enable_tool:r.enable_tool??!0,enable_mood:s.enable_mood??!1,mood_update_threshold:s.mood_update_threshold,emotion_style:s.emotion_style,all_global:i.all_global??!0}}async function _ie(){const t=await gt("/api/webui/config/model",{method:"GET",headers:Tt()});if(!t.ok)throw new Error("读取模型配置失败");return{api_key:((await t.json()).config.api_providers||[]).find(i=>i.name==="SiliconFlow")?.api_key||""}}async function Aie(t){const e=await gt("/api/webui/config/bot/section/bot",{method:"POST",headers:Tt(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"保存Bot基础配置失败")}return await e.json()}async function Mie(t){const e=await gt("/api/webui/config/bot/section/personality",{method:"POST",headers:Tt(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"保存人格配置失败")}return await e.json()}async function Rie(t){const e=await gt("/api/webui/config/bot/section/emoji",{method:"POST",headers:Tt(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"保存表情包配置失败")}return await e.json()}async function Die(t){const e=[];e.push(gt("/api/webui/config/bot/section/tool",{method:"POST",headers:Tt(),body:JSON.stringify({enable_tool:t.enable_tool})})),e.push(gt("/api/webui/config/bot/section/jargon",{method:"POST",headers:Tt(),body:JSON.stringify({all_global:t.all_global})}));const n={enable_mood:t.enable_mood};t.enable_mood&&(n.mood_update_threshold=t.mood_update_threshold||1,n.emotion_style=t.emotion_style||""),e.push(gt("/api/webui/config/bot/section/mood",{method:"POST",headers:Tt(),body:JSON.stringify(n)}));const r=await Promise.all(e);for(const s of r)if(!s.ok){const i=await s.json();throw new Error(i.detail||"保存其他配置失败")}return{success:!0}}async function Pie(t){const e=await gt("/api/webui/config/model",{method:"GET",headers:Tt()});if(!e.ok)throw new Error("读取模型配置失败");const r=(await e.json()).config,s=r.api_providers||[],i=s.findIndex(c=>c.name==="SiliconFlow");i>=0?s[i]={...s[i],api_key:t.api_key}:s.push({name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",api_key:t.api_key,client_type:"openai",max_retry:3,timeout:120,retry_interval:5});const a={...r,api_providers:s},l=await gt("/api/webui/config/model",{method:"POST",headers:Tt(),body:JSON.stringify(a)});if(!l.ok){const c=await l.json();throw new Error(c.detail||"保存模型配置失败")}return await l.json()}async function uE(){const t=localStorage.getItem("access-token"),e=await gt("/api/webui/setup/complete",{method:"POST",headers:{Authorization:`Bearer ${t}`}});if(!e.ok){const n=await e.json();throw new Error(n.message||"标记配置完成失败")}return await e.json()}async function cb(){const t=await gt("/api/webui/system/restart",{method:"POST",headers:Tt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"重启失败")}return await t.json()}async function zie(){const t=await gt("/api/webui/system/status",{method:"GET",headers:Tt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取状态失败")}return await t.json()}function Iie(){const t=na(),{toast:e}=Lr(),[n,r]=b.useState(0),[s,i]=b.useState(!1),[a,l]=b.useState(!1),[c,d]=b.useState(!0),[h,m]=b.useState({qq_account:0,nickname:"",alias_names:[]}),[g,x]=b.useState({personality:"是一个女大学生,现在在读大二,会刷贴吧。",reply_style:"请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景。可以参考贴吧,知乎和微博的回复风格。",interest:"对技术相关话题,游戏和动漫相关话题感兴趣,也对日常话题感兴趣,不喜欢太过沉重严肃的话题",plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 2.如果相同的内容已经被执行,请不要重复执行 3.请控制你的发言频率,不要太过频繁的发言 4.如果有人对你感到厌烦,请减少回复 5.如果有人对你进行攻击,或者情绪激动,请你以合适的方法应对`,private_plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 2.如果相同的内容已经被执行,请不要重复执行 -3.某句话如果已经被回复过,不要重复回复`}),[y,w]=b.useState({emoji_chance:.4,max_reg_num:40,do_replace:!0,check_interval:10,steal_emoji:!0,content_filtration:!1,filtration_prompt:"符合公序良俗"}),[S,k]=b.useState({enable_tool:!0,enable_mood:!1,mood_update_threshold:1,emotion_style:"情绪较为稳定,但遇遇特定事件的时候起伏较大",all_global:!0}),[j,N]=b.useState({api_key:""}),[T,E]=b.useState(!1),[_,A]=b.useState(""),L=[{id:"bot-basic",title:"Bot基础",description:"配置机器人的基本信息",icon:a0},{id:"personality",title:"人格配置",description:"定义机器人的性格和说话风格",icon:Dv},{id:"emoji",title:"表情包",description:"配置表情包相关设置",icon:_j},{id:"other",title:"其他设置",description:"工具、情绪系统等配置",icon:Xu},{id:"siliconflow",title:"API配置",description:"配置硅基流动API密钥",icon:bI}],P=(n+1)/L.length*100;b.useEffect(()=>{(async()=>{try{d(!0);const[Y,J,X,R,ie]=await Promise.all([kie(),Oie(),jie(),Nie(),Cie()]);m(Y),x(J),w(X),k(R),N(ie)}catch(Y){e({title:"加载配置失败",description:Y instanceof Error?Y.message:"无法加载现有配置,将使用默认值",variant:"destructive"})}finally{d(!1)}})()},[e]);const B=async()=>{l(!0);try{switch(n){case 0:await Tie(h);break;case 1:await Eie(g);break;case 2:await _ie(y);break;case 3:await Aie(S);break;case 4:await Mie(j);break}return e({title:"保存成功",description:`${L[n].title}配置已保存`}),!0}catch(F){return e({title:"保存失败",description:F instanceof Error?F.message:"未知错误",variant:"destructive"}),!1}finally{l(!1)}},$=async()=>{await B()&&n{n>0&&r(n-1)},te=async()=>{i(!0),E(!0);try{if(A("正在保存API配置..."),!await B()){i(!1),E(!1);return}A("正在完成初始化..."),await sE(),A("正在重启麦麦..."),await ib(),e({title:"配置完成",description:"麦麦正在重启以应用新配置..."}),A("等待麦麦重启完成...");const Y=60;let J=0,X=!1;for(;JsetTimeout(R,1e3));try{(await Rie()).running&&(X=!0,A("重启成功!正在跳转..."))}catch{J++}}if(!X)throw new Error("重启超时,请手动检查麦麦状态");setTimeout(()=>{t({to:"/"})},1e3)}catch(F){E(!1),e({title:"配置失败",description:F instanceof Error?F.message:"未知错误",variant:"destructive"})}finally{i(!1)}},z=async()=>{try{await sE(),t({to:"/"})}catch(F){e({title:"跳过失败",description:F instanceof Error?F.message:"未知错误",variant:"destructive"})}},Q=()=>{switch(n){case 0:return o.jsx(vie,{config:h,onChange:m});case 1:return o.jsx(yie,{config:g,onChange:x});case 2:return o.jsx(bie,{config:y,onChange:w});case 3:return o.jsx(wie,{config:S,onChange:k});case 4:return o.jsx(Sie,{config:j,onChange:N});default:return null}};return o.jsxs("div",{className:"relative flex min-h-screen flex-col items-center justify-center overflow-hidden bg-gradient-to-br from-primary/5 via-background to-secondary/5 p-4 md:p-6",children:[T&&o.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm",children:o.jsxs("div",{className:"mx-auto flex max-w-md flex-col items-center space-y-6 rounded-lg border bg-card p-8 text-center shadow-lg",children:[o.jsx("div",{className:"flex h-20 w-20 items-center justify-center rounded-full bg-primary/10",children:o.jsx(Po,{className:"h-10 w-10 animate-spin text-primary"})}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),o.jsx("p",{className:"text-muted-foreground",children:_})]}),o.jsx("div",{className:"w-full",children:o.jsx("div",{className:"h-2 w-full overflow-hidden rounded-full bg-secondary",children:o.jsx("div",{className:"h-full w-full animate-pulse bg-primary",style:{animation:"pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite"}})})}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"请稍候,这可能需要一分钟..."})]})}),o.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[o.jsx("div",{className:"absolute left-1/4 top-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-primary/5 blur-3xl"}),o.jsx("div",{className:"absolute right-1/4 bottom-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-secondary/5 blur-3xl"})]}),c?o.jsxs("div",{className:"relative z-10 text-center",children:[o.jsx("div",{className:"mx-auto mb-4 flex h-16 w-16 items-center justify-center",children:o.jsx("div",{className:"h-12 w-12 animate-spin rounded-full border-4 border-primary border-t-transparent"})}),o.jsx("p",{className:"text-lg font-medium",children:"加载配置中..."}),o.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"正在读取现有配置"})]}):o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"relative z-10 w-full max-w-4xl",children:[o.jsxs("div",{className:"mb-6 md:mb-8 text-center",children:[o.jsx("div",{className:"mx-auto mb-4 flex h-12 w-12 md:h-16 md:w-16 items-center justify-center rounded-2xl bg-primary/10",children:o.jsx(Qee,{className:"h-6 w-6 md:h-8 md:w-8 text-primary",strokeWidth:2,fill:"none"})}),o.jsx("h1",{className:"mb-2 text-2xl md:text-3xl font-bold",children:"首次配置向导"}),o.jsxs("p",{className:"text-sm md:text-base text-muted-foreground",children:["让我们一起完成 ",Wj," 的初始配置"]})]}),o.jsxs("div",{className:"mb-6 md:mb-8",children:[o.jsxs("div",{className:"mb-2 flex items-center justify-between text-xs md:text-sm",children:[o.jsxs("span",{className:"text-muted-foreground",children:["步骤 ",n+1," / ",L.length]}),o.jsxs("span",{className:"font-medium text-primary",children:[Math.round(P),"%"]})]}),o.jsx(Lp,{value:P,className:"h-2"})]}),o.jsx("div",{className:"mb-6 md:mb-8 flex justify-between",children:L.map((F,Y)=>{const J=F.icon;return o.jsxs("div",{className:xe("flex flex-1 flex-col items-center gap-1 md:gap-2",Yt({to:"/"}),className:"gap-2 w-full sm:w-auto",children:[o.jsx(D0,{className:"h-4 w-4"}),"返回首页"]}),o.jsxs(de,{size:"lg",variant:"outline",onClick:()=>window.history.back(),className:"gap-2 w-full sm:w-auto",children:[o.jsx(wI,{className:"h-4 w-4"}),"返回上一页"]})]}),o.jsx("div",{className:"mt-12 pt-8 border-t border-border",children:o.jsx("p",{className:"text-sm text-muted-foreground",children:"如果您认为这是一个错误,请联系系统管理员"})})]})})}var AB=["PageUp","PageDown"],MB=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],RB={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},jf="Slider",[mk,Pie,zie]=By(jf),[DB]=Ra(jf,[zie]),[Iie,ab]=DB(jf),PB=b.forwardRef((t,e)=>{const{name:n,min:r=0,max:s=100,step:i=1,orientation:a="horizontal",disabled:l=!1,minStepsBetweenThumbs:c=0,defaultValue:d=[r],value:h,onValueChange:m=()=>{},onValueCommit:g=()=>{},inverted:x=!1,form:y,...w}=t,S=b.useRef(new Set),k=b.useRef(0),N=a==="horizontal"?Lie:Bie,[T=[],E]=Xl({prop:h,defaultProp:d,onChange:$=>{[...S.current][k.current]?.focus(),m($)}}),_=b.useRef(T);function A($){const U=Qie(T,$);B($,U)}function L($){B($,k.current)}function P(){const $=_.current[k.current];T[k.current]!==$&&g(T)}function B($,U,{commit:te}={commit:!1}){const z=Gie(i),Q=Xie(Math.round(($-r)/i)*i+r,z),F=Sj(Q,[r,s]);E((Y=[])=>{const J=$ie(Y,F,U);if(Wie(J,c*i)){k.current=J.indexOf(F);const X=String(J)!==String(Y);return X&&te&&g(J),X?J:Y}else return Y})}return o.jsx(Iie,{scope:t.__scopeSlider,name:n,disabled:l,min:r,max:s,valueIndexToChangeRef:k,thumbs:S.current,values:T,orientation:a,form:y,children:o.jsx(mk.Provider,{scope:t.__scopeSlider,children:o.jsx(mk.Slot,{scope:t.__scopeSlider,children:o.jsx(N,{"aria-disabled":l,"data-disabled":l?"":void 0,...w,ref:e,onPointerDown:nt(w.onPointerDown,()=>{l||(_.current=T)}),min:r,max:s,inverted:x,onSlideStart:l?void 0:A,onSlideMove:l?void 0:L,onSlideEnd:l?void 0:P,onHomeKeyDown:()=>!l&&B(r,0,{commit:!0}),onEndKeyDown:()=>!l&&B(s,T.length-1,{commit:!0}),onStepKeyDown:({event:$,direction:U})=>{if(!l){const Q=AB.includes($.key)||$.shiftKey&&MB.includes($.key)?10:1,F=k.current,Y=T[F],J=i*Q*U;B(Y+J,F,{commit:!0})}}})})})})});PB.displayName=jf;var[zB,IB]=DB(jf,{startEdge:"left",endEdge:"right",size:"width",direction:1}),Lie=b.forwardRef((t,e)=>{const{min:n,max:r,dir:s,inverted:i,onSlideStart:a,onSlideMove:l,onSlideEnd:c,onStepKeyDown:d,...h}=t,[m,g]=b.useState(null),x=Yn(e,N=>g(N)),y=b.useRef(void 0),w=Ep(s),S=w==="ltr",k=S&&!i||!S&&i;function j(N){const T=y.current||m.getBoundingClientRect(),E=[0,T.width],A=Xj(E,k?[n,r]:[r,n]);return y.current=T,A(N-T.left)}return o.jsx(zB,{scope:t.__scopeSlider,startEdge:k?"left":"right",endEdge:k?"right":"left",direction:k?1:-1,size:"width",children:o.jsx(LB,{dir:w,"data-orientation":"horizontal",...h,ref:x,style:{...h.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:N=>{const T=j(N.clientX);a?.(T)},onSlideMove:N=>{const T=j(N.clientX);l?.(T)},onSlideEnd:()=>{y.current=void 0,c?.()},onStepKeyDown:N=>{const E=RB[k?"from-left":"from-right"].includes(N.key);d?.({event:N,direction:E?-1:1})}})})}),Bie=b.forwardRef((t,e)=>{const{min:n,max:r,inverted:s,onSlideStart:i,onSlideMove:a,onSlideEnd:l,onStepKeyDown:c,...d}=t,h=b.useRef(null),m=Yn(e,h),g=b.useRef(void 0),x=!s;function y(w){const S=g.current||h.current.getBoundingClientRect(),k=[0,S.height],N=Xj(k,x?[r,n]:[n,r]);return g.current=S,N(w-S.top)}return o.jsx(zB,{scope:t.__scopeSlider,startEdge:x?"bottom":"top",endEdge:x?"top":"bottom",size:"height",direction:x?1:-1,children:o.jsx(LB,{"data-orientation":"vertical",...d,ref:m,style:{...d.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:w=>{const S=y(w.clientY);i?.(S)},onSlideMove:w=>{const S=y(w.clientY);a?.(S)},onSlideEnd:()=>{g.current=void 0,l?.()},onStepKeyDown:w=>{const k=RB[x?"from-bottom":"from-top"].includes(w.key);c?.({event:w,direction:k?-1:1})}})})}),LB=b.forwardRef((t,e)=>{const{__scopeSlider:n,onSlideStart:r,onSlideMove:s,onSlideEnd:i,onHomeKeyDown:a,onEndKeyDown:l,onStepKeyDown:c,...d}=t,h=ab(jf,n);return o.jsx(xn.span,{...d,ref:e,onKeyDown:nt(t.onKeyDown,m=>{m.key==="Home"?(a(m),m.preventDefault()):m.key==="End"?(l(m),m.preventDefault()):AB.concat(MB).includes(m.key)&&(c(m),m.preventDefault())}),onPointerDown:nt(t.onPointerDown,m=>{const g=m.target;g.setPointerCapture(m.pointerId),m.preventDefault(),h.thumbs.has(g)?g.focus():r(m)}),onPointerMove:nt(t.onPointerMove,m=>{m.target.hasPointerCapture(m.pointerId)&&s(m)}),onPointerUp:nt(t.onPointerUp,m=>{const g=m.target;g.hasPointerCapture(m.pointerId)&&(g.releasePointerCapture(m.pointerId),i(m))})})}),BB="SliderTrack",FB=b.forwardRef((t,e)=>{const{__scopeSlider:n,...r}=t,s=ab(BB,n);return o.jsx(xn.span,{"data-disabled":s.disabled?"":void 0,"data-orientation":s.orientation,...r,ref:e})});FB.displayName=BB;var pk="SliderRange",qB=b.forwardRef((t,e)=>{const{__scopeSlider:n,...r}=t,s=ab(pk,n),i=IB(pk,n),a=b.useRef(null),l=Yn(e,a),c=s.values.length,d=s.values.map(g=>QB(g,s.min,s.max)),h=c>1?Math.min(...d):0,m=100-Math.max(...d);return o.jsx(xn.span,{"data-orientation":s.orientation,"data-disabled":s.disabled?"":void 0,...r,ref:l,style:{...t.style,[i.startEdge]:h+"%",[i.endEdge]:m+"%"}})});qB.displayName=pk;var gk="SliderThumb",$B=b.forwardRef((t,e)=>{const n=Pie(t.__scopeSlider),[r,s]=b.useState(null),i=Yn(e,l=>s(l)),a=b.useMemo(()=>r?n().findIndex(l=>l.ref.current===r):-1,[n,r]);return o.jsx(Fie,{...t,ref:i,index:a})}),Fie=b.forwardRef((t,e)=>{const{__scopeSlider:n,index:r,name:s,...i}=t,a=ab(gk,n),l=IB(gk,n),[c,d]=b.useState(null),h=Yn(e,j=>d(j)),m=c?a.form||!!c.closest("form"):!0,g=tI(c),x=a.values[r],y=x===void 0?0:QB(x,a.min,a.max),w=Hie(r,a.values.length),S=g?.[l.size],k=S?Vie(S,y,l.direction):0;return b.useEffect(()=>{if(c)return a.thumbs.add(c),()=>{a.thumbs.delete(c)}},[c,a.thumbs]),o.jsxs("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[l.startEdge]:`calc(${y}% + ${k}px)`},children:[o.jsx(mk.ItemSlot,{scope:t.__scopeSlider,children:o.jsx(xn.span,{role:"slider","aria-label":t["aria-label"]||w,"aria-valuemin":a.min,"aria-valuenow":x,"aria-valuemax":a.max,"aria-orientation":a.orientation,"data-orientation":a.orientation,"data-disabled":a.disabled?"":void 0,tabIndex:a.disabled?void 0:0,...i,ref:h,style:x===void 0?{display:"none"}:t.style,onFocus:nt(t.onFocus,()=>{a.valueIndexToChangeRef.current=r})})}),m&&o.jsx(HB,{name:s??(a.name?a.name+(a.values.length>1?"[]":""):void 0),form:a.form,value:x},r)]})});$B.displayName=gk;var qie="RadioBubbleInput",HB=b.forwardRef(({__scopeSlider:t,value:e,...n},r)=>{const s=b.useRef(null),i=Yn(s,r),a=eI(e);return b.useEffect(()=>{const l=s.current;if(!l)return;const c=window.HTMLInputElement.prototype,h=Object.getOwnPropertyDescriptor(c,"value").set;if(a!==e&&h){const m=new Event("input",{bubbles:!0});h.call(l,e),l.dispatchEvent(m)}},[a,e]),o.jsx(xn.input,{style:{display:"none"},...n,ref:i,defaultValue:e})});HB.displayName=qie;function $ie(t=[],e,n){const r=[...t];return r[n]=e,r.sort((s,i)=>s-i)}function QB(t,e,n){const i=100/(n-e)*(t-e);return Sj(i,[0,100])}function Hie(t,e){return e>2?`Value ${t+1} of ${e}`:e===2?["Minimum","Maximum"][t]:void 0}function Qie(t,e){if(t.length===1)return 0;const n=t.map(s=>Math.abs(s-e)),r=Math.min(...n);return n.indexOf(r)}function Vie(t,e,n){const r=t/2,i=Xj([0,50],[0,r]);return(r-i(e)*n)*n}function Uie(t){return t.slice(0,-1).map((e,n)=>t[n+1]-e)}function Wie(t,e){if(e>0){const n=Uie(t);return Math.min(...n)>=e}return!0}function Xj(t,e){return n=>{if(t[0]===t[1]||e[0]===e[1])return e[0];const r=(e[1]-e[0])/(t[1]-t[0]);return e[0]+r*(n-t[0])}}function Gie(t){return(String(t).split(".")[1]||"").length}function Xie(t,e){const n=Math.pow(10,e);return Math.round(t*n)/n}var VB=PB,Yie=FB,Kie=qB,Zie=$B;const Bp=b.forwardRef(({className:t,...e},n)=>o.jsxs(VB,{ref:n,className:xe("relative flex w-full touch-none select-none items-center",t),...e,children:[o.jsx(Yie,{className:"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20",children:o.jsx(Kie,{className:"absolute h-full bg-primary"})}),o.jsx(Zie,{className:"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"})]}));Bp.displayName=VB.displayName;const Vt=Aee,Ut=Mee,$t=b.forwardRef(({className:t,children:e,...n},r)=>o.jsxs(iI,{ref:r,className:xe("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",t),...n,children:[e,o.jsx(Nee,{asChild:!0,children:o.jsx(nd,{className:"h-4 w-4 opacity-50"})})]}));$t.displayName=iI.displayName;const UB=b.forwardRef(({className:t,...e},n)=>o.jsx(aI,{ref:n,className:xe("flex cursor-default items-center justify-center py-1",t),...e,children:o.jsx(P0,{className:"h-4 w-4"})}));UB.displayName=aI.displayName;const WB=b.forwardRef(({className:t,...e},n)=>o.jsx(oI,{ref:n,className:xe("flex cursor-default items-center justify-center py-1",t),...e,children:o.jsx(nd,{className:"h-4 w-4"})}));WB.displayName=oI.displayName;const Ht=b.forwardRef(({className:t,children:e,position:n="popper",...r},s)=>o.jsx(Cee,{children:o.jsxs(lI,{ref:s,className:xe("relative z-[100] max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-hidden rounded-md border border-border bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",n==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:n,...r,children:[o.jsx(UB,{}),o.jsx(Tee,{className:xe("p-1",n==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:e}),o.jsx(WB,{})]})}));Ht.displayName=lI.displayName;const Jie=b.forwardRef(({className:t,...e},n)=>o.jsx(cI,{ref:n,className:xe("px-2 py-1.5 text-sm font-semibold",t),...e}));Jie.displayName=cI.displayName;const De=b.forwardRef(({className:t,children:e,...n},r)=>o.jsxs(uI,{ref:r,className:xe("relative flex w-full cursor-default select-none items-center rounded-sm py-2 pl-2 pr-8 text-sm outline-none bg-white dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800 focus:bg-gray-100 dark:focus:bg-gray-800 data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),...n,children:[o.jsx("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:o.jsx(Eee,{children:o.jsx(Ro,{className:"h-4 w-4"})})}),o.jsx(_ee,{children:e})]}));De.displayName=uI.displayName;const eae=b.forwardRef(({className:t,...e},n)=>o.jsx(dI,{ref:n,className:xe("-mx-1 my-1 h-px bg-muted",t),...e}));eae.displayName=dI.displayName;function tae(t){const e=nae(t),n=b.forwardRef((r,s)=>{const{children:i,...a}=r,l=b.Children.toArray(i),c=l.find(sae);if(c){const d=c.props.children,h=l.map(m=>m===c?b.Children.count(d)>1?b.Children.only(null):b.isValidElement(d)?d.props.children:null:m);return o.jsx(e,{...a,ref:s,children:b.isValidElement(d)?b.cloneElement(d,void 0,h):null})}return o.jsx(e,{...a,ref:s,children:i})});return n.displayName=`${t}.Slot`,n}function nae(t){const e=b.forwardRef((n,r)=>{const{children:s,...i}=n;if(b.isValidElement(s)){const a=aae(s),l=iae(i,s.props);return s.type!==b.Fragment&&(l.ref=r?Qc(r,a):a),b.cloneElement(s,l)}return b.Children.count(s)>1?b.Children.only(null):null});return e.displayName=`${t}.SlotClone`,e}var rae=Symbol("radix.slottable");function sae(t){return b.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===rae}function iae(t,e){const n={...e};for(const r in e){const s=t[r],i=e[r];/^on[A-Z]/.test(r)?s&&i?n[r]=(...l)=>{const c=i(...l);return s(...l),c}:s&&(n[r]=s):r==="style"?n[r]={...s,...i}:r==="className"&&(n[r]=[s,i].filter(Boolean).join(" "))}return{...t,...n}}function aae(t){let e=Object.getOwnPropertyDescriptor(t.props,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning;return n?t.ref:(e=Object.getOwnPropertyDescriptor(t,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning,n?t.props.ref:t.props.ref||t.ref)}var ob="Popover",[GB]=Ra(ob,[vf]),Fp=vf(),[oae,iu]=GB(ob),XB=t=>{const{__scopePopover:e,children:n,open:r,defaultOpen:s,onOpenChange:i,modal:a=!1}=t,l=Fp(e),c=b.useRef(null),[d,h]=b.useState(!1),[m,g]=Xl({prop:r,defaultProp:s??!1,onChange:i,caller:ob});return o.jsx(Vy,{...l,children:o.jsx(oae,{scope:e,contentId:Ui(),triggerRef:c,open:m,onOpenChange:g,onOpenToggle:b.useCallback(()=>g(x=>!x),[g]),hasCustomAnchor:d,onCustomAnchorAdd:b.useCallback(()=>h(!0),[]),onCustomAnchorRemove:b.useCallback(()=>h(!1),[]),modal:a,children:n})})};XB.displayName=ob;var YB="PopoverAnchor",lae=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=iu(YB,n),i=Fp(n),{onCustomAnchorAdd:a,onCustomAnchorRemove:l}=s;return b.useEffect(()=>(a(),()=>l()),[a,l]),o.jsx(Uy,{...i,...r,ref:e})});lae.displayName=YB;var KB="PopoverTrigger",ZB=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=iu(KB,n),i=Fp(n),a=Yn(e,s.triggerRef),l=o.jsx(xn.button,{type:"button","aria-haspopup":"dialog","aria-expanded":s.open,"aria-controls":s.contentId,"data-state":rF(s.open),...r,ref:a,onClick:nt(t.onClick,s.onOpenToggle)});return s.hasCustomAnchor?l:o.jsx(Uy,{asChild:!0,...i,children:l})});ZB.displayName=KB;var Yj="PopoverPortal",[cae,uae]=GB(Yj,{forceMount:void 0}),JB=t=>{const{__scopePopover:e,forceMount:n,children:r,container:s}=t,i=iu(Yj,e);return o.jsx(cae,{scope:e,forceMount:n,children:o.jsx(ii,{present:n||i.open,children:o.jsx(Qy,{asChild:!0,container:s,children:r})})})};JB.displayName=Yj;var Kh="PopoverContent",eF=b.forwardRef((t,e)=>{const n=uae(Kh,t.__scopePopover),{forceMount:r=n.forceMount,...s}=t,i=iu(Kh,t.__scopePopover);return o.jsx(ii,{present:r||i.open,children:i.modal?o.jsx(hae,{...s,ref:e}):o.jsx(fae,{...s,ref:e})})});eF.displayName=Kh;var dae=tae("PopoverContent.RemoveScroll"),hae=b.forwardRef((t,e)=>{const n=iu(Kh,t.__scopePopover),r=b.useRef(null),s=Yn(e,r),i=b.useRef(!1);return b.useEffect(()=>{const a=r.current;if(a)return hI(a)},[]),o.jsx(fI,{as:dae,allowPinchZoom:!0,children:o.jsx(tF,{...t,ref:s,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:nt(t.onCloseAutoFocus,a=>{a.preventDefault(),i.current||n.triggerRef.current?.focus()}),onPointerDownOutside:nt(t.onPointerDownOutside,a=>{const l=a.detail.originalEvent,c=l.button===0&&l.ctrlKey===!0,d=l.button===2||c;i.current=d},{checkForDefaultPrevented:!1}),onFocusOutside:nt(t.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1})})})}),fae=b.forwardRef((t,e)=>{const n=iu(Kh,t.__scopePopover),r=b.useRef(!1),s=b.useRef(!1);return o.jsx(tF,{...t,ref:e,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{t.onCloseAutoFocus?.(i),i.defaultPrevented||(r.current||n.triggerRef.current?.focus(),i.preventDefault()),r.current=!1,s.current=!1},onInteractOutside:i=>{t.onInteractOutside?.(i),i.defaultPrevented||(r.current=!0,i.detail.originalEvent.type==="pointerdown"&&(s.current=!0));const a=i.target;n.triggerRef.current?.contains(a)&&i.preventDefault(),i.detail.originalEvent.type==="focusin"&&s.current&&i.preventDefault()}})}),tF=b.forwardRef((t,e)=>{const{__scopePopover:n,trapFocus:r,onOpenAutoFocus:s,onCloseAutoFocus:i,disableOutsidePointerEvents:a,onEscapeKeyDown:l,onPointerDownOutside:c,onFocusOutside:d,onInteractOutside:h,...m}=t,g=iu(Kh,n),x=Fp(n);return mI(),o.jsx(pI,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:s,onUnmountAutoFocus:i,children:o.jsx(Cj,{asChild:!0,disableOutsidePointerEvents:a,onInteractOutside:h,onEscapeKeyDown:l,onPointerDownOutside:c,onFocusOutside:d,onDismiss:()=>g.onOpenChange(!1),children:o.jsx(Tj,{"data-state":rF(g.open),role:"dialog",id:g.contentId,...x,...m,ref:e,style:{...m.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),nF="PopoverClose",mae=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=iu(nF,n);return o.jsx(xn.button,{type:"button",...r,ref:e,onClick:nt(t.onClick,()=>s.onOpenChange(!1))})});mae.displayName=nF;var pae="PopoverArrow",gae=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=Fp(n);return o.jsx(Ej,{...s,...r,ref:e})});gae.displayName=pae;function rF(t){return t?"open":"closed"}var xae=XB,vae=ZB,yae=JB,sF=eF;const zo=xae,Io=vae,Xa=b.forwardRef(({className:t,align:e="center",sideOffset:n=4,...r},s)=>o.jsx(yae,{children:o.jsx(sF,{ref:s,align:e,sideOffset:n,className:xe("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]",t),...r})}));Xa.displayName=sF.displayName;const au="/api/webui/config";async function iE(){const e=await(await St(`${au}/bot`)).json();if(!e.success)throw new Error("获取配置数据失败");return e.config}async function Rh(){const e=await(await St(`${au}/model`)).json();if(!e.success)throw new Error("获取模型配置数据失败");return e.config}async function aE(t){const n=await(await St(`${au}/bot`,{method:"POST",headers:Dt(),body:JSON.stringify(t)})).json();if(!n.success)throw new Error(n.message||"保存配置失败")}async function bae(){const e=await(await St(`${au}/bot/raw`)).json();if(!e.success)throw new Error("获取配置源代码失败");return e.content}async function wae(t){const n=await(await St(`${au}/bot/raw`,{method:"POST",headers:Dt(),body:JSON.stringify({raw_content:t})})).json();if(!n.success)throw new Error(n.message||"保存配置失败")}async function qv(t){const n=await(await St(`${au}/model`,{method:"POST",headers:Dt(),body:JSON.stringify(t)})).json();if(!n.success)throw new Error(n.message||"保存配置失败")}async function Sae(t,e){const r=await(await St(`${au}/bot/section/${t}`,{method:"POST",headers:Dt(),body:JSON.stringify(e)})).json();if(!r.success)throw new Error(r.message||`保存配置节 ${t} 失败`)}async function xk(t,e){const r=await(await St(`${au}/model/section/${t}`,{method:"POST",headers:Dt(),body:JSON.stringify(e)})).json();if(!r.success)throw new Error(r.message||`保存配置节 ${t} 失败`)}async function kae(t,e="openai",n="/models"){const r=new URLSearchParams({provider_name:t,parser:e,endpoint:n}),s=await St(`/api/webui/models/list?${r}`);if(!s.ok){const a=await s.json().catch(()=>({}));throw new Error(a.detail||`获取模型列表失败 (${s.status})`)}const i=await s.json();if(!i.success)throw new Error("获取模型列表失败");return i.models}const Oae=kf("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"}}),ga=b.forwardRef(({className:t,variant:e,...n},r)=>o.jsx("div",{ref:r,role:"alert",className:xe(Oae({variant:e}),t),...n}));ga.displayName="Alert";const jae=b.forwardRef(({className:t,...e},n)=>o.jsx("h5",{ref:n,className:xe("mb-1 font-medium leading-none tracking-tight",t),...e}));jae.displayName="AlertTitle";const xa=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("text-sm [&_p]:leading-relaxed",t),...e}));xa.displayName="AlertDescription";function Kj({onRestartComplete:t,onRestartFailed:e}){const[n,r]=b.useState(0),[s,i]=b.useState("restarting"),[a,l]=b.useState(0),[c,d]=b.useState(0);b.useEffect(()=>{const g=setInterval(()=>{r(w=>w>=90?w:w+1)},200),x=setInterval(()=>{l(w=>w+1)},1e3),y=setTimeout(()=>{i("checking"),h()},3e3);return()=>{clearInterval(g),clearInterval(x),clearTimeout(y)}},[]);const h=()=>{const x=async()=>{try{if(d(w=>w+1),(await fetch("/api/webui/system/status",{method:"GET",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(3e3)})).ok)r(100),i("success"),setTimeout(()=>{t?.()},1500);else throw new Error("Status check failed")}catch{c<60?setTimeout(x,2e3):(i("failed"),e?.())}};x()},m=g=>{const x=Math.floor(g/60),y=g%60;return`${x}:${y.toString().padStart(2,"0")}`};return o.jsx("div",{className:"fixed inset-0 bg-background/95 backdrop-blur-sm z-50 flex items-center justify-center",children:o.jsxs("div",{className:"max-w-md w-full mx-4 space-y-8",children:[o.jsxs("div",{className:"flex flex-col items-center space-y-4",children:[s==="restarting"&&o.jsxs(o.Fragment,{children:[o.jsx(Po,{className:"h-16 w-16 text-primary animate-spin"}),o.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),o.jsx("p",{className:"text-muted-foreground text-center",children:"请稍候,麦麦正在重启中..."})]}),s==="checking"&&o.jsxs(o.Fragment,{children:[o.jsx(Po,{className:"h-16 w-16 text-primary animate-spin"}),o.jsx("h2",{className:"text-2xl font-bold",children:"检查服务状态"}),o.jsxs("p",{className:"text-muted-foreground text-center",children:["等待服务恢复... (尝试 ",c,"/60)"]})]}),s==="success"&&o.jsxs(o.Fragment,{children:[o.jsx(Vc,{className:"h-16 w-16 text-green-500"}),o.jsx("h2",{className:"text-2xl font-bold",children:"重启成功"}),o.jsx("p",{className:"text-muted-foreground text-center",children:"正在跳转到登录页面..."})]}),s==="failed"&&o.jsxs(o.Fragment,{children:[o.jsx(Uc,{className:"h-16 w-16 text-destructive"}),o.jsx("h2",{className:"text-2xl font-bold",children:"重启超时"}),o.jsx("p",{className:"text-muted-foreground text-center",children:"服务未能在预期时间内恢复,请手动检查或刷新页面"})]})]}),s!=="failed"&&o.jsxs("div",{className:"space-y-2",children:[o.jsx(Lp,{value:n,className:"h-2"}),o.jsxs("div",{className:"flex justify-between text-sm text-muted-foreground",children:[o.jsxs("span",{children:[n,"%"]}),o.jsxs("span",{children:["已用时: ",m(a)]})]})]}),o.jsx("div",{className:"bg-muted/50 rounded-lg p-4 space-y-2",children:o.jsxs("p",{className:"text-sm text-muted-foreground",children:[s==="restarting"&&"🔄 配置已保存,正在重启主程序...",s==="checking"&&"⏳ 正在等待服务恢复,请勿关闭页面...",s==="success"&&"✅ 配置已生效,服务运行正常",s==="failed"&&"⚠️ 如果长时间无响应,请尝试手动重启"]})}),o.jsx("div",{className:"bg-yellow-500/10 border border-yellow-500/50 rounded-lg p-4",children:o.jsxs("p",{className:"text-sm text-yellow-900 dark:text-yellow-100",children:[o.jsx("strong",{children:"⚠️ 重要提示:"})," 由于技术原因,使用重启功能后,将无法再使用 ",o.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。如需结束程序,请使用脚本目录下的进程管理脚本。"]})}),s==="failed"&&o.jsxs("div",{className:"flex gap-2",children:[o.jsx("button",{onClick:()=>window.location.reload(),className:"flex-1 px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary/90",children:"刷新页面"}),o.jsx("button",{onClick:()=>{i("checking"),d(0),h()},className:"flex-1 px-4 py-2 bg-secondary text-secondary-foreground rounded-md hover:bg-secondary/90",children:"重试检测"})]})]})})}let vk=[],iF=[];(()=>{let t="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,n=0;e>1;if(t=iF[r])e=r+1;else return!0;if(e==n)return!1}}function oE(t){return t>=127462&&t<=127487}const lE=8205;function Cae(t,e,n=!0,r=!0){return(n?aF:Tae)(t,e,r)}function aF(t,e,n){if(e==t.length)return e;e&&oF(t.charCodeAt(e))&&lF(t.charCodeAt(e-1))&&e--;let r=M4(t,e);for(e+=cE(r);e=0&&oE(M4(t,a));)i++,a-=2;if(i%2==0)break;e+=2}else break}return e}function Tae(t,e,n){for(;e>0;){let r=aF(t,e-2,n);if(r=56320&&t<57344}function lF(t){return t>=55296&&t<56320}function cE(t){return t<65536?1:2}class jn{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,n,r){[e,n]=Zh(this,e,n);let s=[];return this.decompose(0,e,s,2),r.length&&r.decompose(0,r.length,s,3),this.decompose(n,this.length,s,1),iv.from(s,this.length-(n-e)+r.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,n=this.length){[e,n]=Zh(this,e,n);let r=[];return this.decompose(e,n,r,0),iv.from(r,n-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let n=this.scanIdentical(e,1),r=this.length-this.scanIdentical(e,-1),s=new b0(this),i=new b0(e);for(let a=n,l=n;;){if(s.next(a),i.next(a),a=0,s.lineBreak!=i.lineBreak||s.done!=i.done||s.value!=i.value)return!1;if(l+=s.value.length,s.done||l>=r)return!0}}iter(e=1){return new b0(this,e)}iterRange(e,n=this.length){return new cF(this,e,n)}iterLines(e,n){let r;if(e==null)r=this.iter();else{n==null&&(n=this.lines+1);let s=this.line(e).from;r=this.iterRange(s,Math.max(s,n==this.lines+1?this.length:n<=1?0:this.line(n-1).to))}return new uF(r)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?jn.empty:e.length<=32?new Hr(e):iv.from(Hr.split(e,[]))}}class Hr extends jn{constructor(e,n=Eae(e)){super(),this.text=e,this.length=n}get lines(){return this.text.length}get children(){return null}lineInner(e,n,r,s){for(let i=0;;i++){let a=this.text[i],l=s+a.length;if((n?r:l)>=e)return new _ae(s,l,r,a);s=l+1,r++}}decompose(e,n,r,s){let i=e<=0&&n>=this.length?this:new Hr(uE(this.text,e,n),Math.min(n,this.length)-Math.max(0,e));if(s&1){let a=r.pop(),l=av(i.text,a.text.slice(),0,i.length);if(l.length<=32)r.push(new Hr(l,a.length+i.length));else{let c=l.length>>1;r.push(new Hr(l.slice(0,c)),new Hr(l.slice(c)))}}else r.push(i)}replace(e,n,r){if(!(r instanceof Hr))return super.replace(e,n,r);[e,n]=Zh(this,e,n);let s=av(this.text,av(r.text,uE(this.text,0,e)),n),i=this.length+r.length-(n-e);return s.length<=32?new Hr(s,i):iv.from(Hr.split(s,[]),i)}sliceString(e,n=this.length,r=` -`){[e,n]=Zh(this,e,n);let s="";for(let i=0,a=0;i<=n&&ae&&a&&(s+=r),ei&&(s+=l.slice(Math.max(0,e-i),n-i)),i=c+1}return s}flatten(e){for(let n of this.text)e.push(n)}scanIdentical(){return 0}static split(e,n){let r=[],s=-1;for(let i of e)r.push(i),s+=i.length+1,r.length==32&&(n.push(new Hr(r,s)),r=[],s=-1);return s>-1&&n.push(new Hr(r,s)),n}}let iv=class vh extends jn{constructor(e,n){super(),this.children=e,this.length=n,this.lines=0;for(let r of e)this.lines+=r.lines}lineInner(e,n,r,s){for(let i=0;;i++){let a=this.children[i],l=s+a.length,c=r+a.lines-1;if((n?c:l)>=e)return a.lineInner(e,n,r,s);s=l+1,r=c+1}}decompose(e,n,r,s){for(let i=0,a=0;a<=n&&i=a){let d=s&((a<=e?1:0)|(c>=n?2:0));a>=e&&c<=n&&!d?r.push(l):l.decompose(e-a,n-a,r,d)}a=c+1}}replace(e,n,r){if([e,n]=Zh(this,e,n),r.lines=i&&n<=l){let c=a.replace(e-i,n-i,r),d=this.lines-a.lines+c.lines;if(c.lines>4&&c.lines>d>>6){let h=this.children.slice();return h[s]=c,new vh(h,this.length-(n-e)+r.length)}return super.replace(i,l,c)}i=l+1}return super.replace(e,n,r)}sliceString(e,n=this.length,r=` -`){[e,n]=Zh(this,e,n);let s="";for(let i=0,a=0;ie&&i&&(s+=r),ea&&(s+=l.sliceString(e-a,n-a,r)),a=c+1}return s}flatten(e){for(let n of this.children)n.flatten(e)}scanIdentical(e,n){if(!(e instanceof vh))return 0;let r=0,[s,i,a,l]=n>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;s+=n,i+=n){if(s==a||i==l)return r;let c=this.children[s],d=e.children[i];if(c!=d)return r+c.scanIdentical(d,n);r+=c.length+1}}static from(e,n=e.reduce((r,s)=>r+s.length+1,-1)){let r=0;for(let x of e)r+=x.lines;if(r<32){let x=[];for(let y of e)y.flatten(x);return new Hr(x,n)}let s=Math.max(32,r>>5),i=s<<1,a=s>>1,l=[],c=0,d=-1,h=[];function m(x){let y;if(x.lines>i&&x instanceof vh)for(let w of x.children)m(w);else x.lines>a&&(c>a||!c)?(g(),l.push(x)):x instanceof Hr&&c&&(y=h[h.length-1])instanceof Hr&&x.lines+y.lines<=32?(c+=x.lines,d+=x.length+1,h[h.length-1]=new Hr(y.text.concat(x.text),y.length+1+x.length)):(c+x.lines>s&&g(),c+=x.lines,d+=x.length+1,h.push(x))}function g(){c!=0&&(l.push(h.length==1?h[0]:vh.from(h,d)),d=-1,c=h.length=0)}for(let x of e)m(x);return g(),l.length==1?l[0]:new vh(l,n)}};jn.empty=new Hr([""],0);function Eae(t){let e=-1;for(let n of t)e+=n.length+1;return e}function av(t,e,n=0,r=1e9){for(let s=0,i=0,a=!0;i=n&&(c>r&&(l=l.slice(0,r-s)),s0?1:(e instanceof Hr?e.text.length:e.children.length)<<1]}nextInner(e,n){for(this.done=this.lineBreak=!1;;){let r=this.nodes.length-1,s=this.nodes[r],i=this.offsets[r],a=i>>1,l=s instanceof Hr?s.text.length:s.children.length;if(a==(n>0?l:0)){if(r==0)return this.done=!0,this.value="",this;n>0&&this.offsets[r-1]++,this.nodes.pop(),this.offsets.pop()}else if((i&1)==(n>0?0:1)){if(this.offsets[r]+=n,e==0)return this.lineBreak=!0,this.value=` -`,this;e--}else if(s instanceof Hr){let c=s.text[a+(n<0?-1:0)];if(this.offsets[r]+=n,c.length>Math.max(0,e))return this.value=e==0?c:n>0?c.slice(e):c.slice(0,c.length-e),this;e-=c.length}else{let c=s.children[a+(n<0?-1:0)];e>c.length?(e-=c.length,this.offsets[r]+=n):(n<0&&this.offsets[r]--,this.nodes.push(c),this.offsets.push(n>0?1:(c instanceof Hr?c.text.length:c.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class cF{constructor(e,n,r){this.value="",this.done=!1,this.cursor=new b0(e,n>r?-1:1),this.pos=n>r?e.length:0,this.from=Math.min(n,r),this.to=Math.max(n,r)}nextInner(e,n){if(n<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,n<0?this.pos-this.to:this.from-this.pos);let r=n<0?this.pos-this.from:this.to-this.pos;e>r&&(e=r),r-=e;let{value:s}=this.cursor.next(e);return this.pos+=(s.length+e)*n,this.value=s.length<=r?s:n<0?s.slice(s.length-r):s.slice(0,r),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class uF{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:n,lineBreak:r,value:s}=this.inner.next(e);return n&&this.afterBreak?(this.value="",this.afterBreak=!1):n?(this.done=!0,this.value=""):r?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol<"u"&&(jn.prototype[Symbol.iterator]=function(){return this.iter()},b0.prototype[Symbol.iterator]=cF.prototype[Symbol.iterator]=uF.prototype[Symbol.iterator]=function(){return this});class _ae{constructor(e,n,r,s){this.from=e,this.to=n,this.number=r,this.text=s}get length(){return this.to-this.from}}function Zh(t,e,n){return e=Math.max(0,Math.min(t.length,e)),[e,Math.max(e,Math.min(t.length,n))]}function zs(t,e,n=!0,r=!0){return Cae(t,e,n,r)}function Aae(t){return t>=56320&&t<57344}function Mae(t){return t>=55296&&t<56320}function gi(t,e){let n=t.charCodeAt(e);if(!Mae(n)||e+1==t.length)return n;let r=t.charCodeAt(e+1);return Aae(r)?(n-55296<<10)+(r-56320)+65536:n}function Zj(t){return t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode((t>>10)+55296,(t&1023)+56320))}function wo(t){return t<65536?1:2}const yk=/\r\n?|\n/;var Ds=(function(t){return t[t.Simple=0]="Simple",t[t.TrackDel=1]="TrackDel",t[t.TrackBefore=2]="TrackBefore",t[t.TrackAfter=3]="TrackAfter",t})(Ds||(Ds={}));class Do{constructor(e){this.sections=e}get length(){let e=0;for(let n=0;ne)return i+(e-s);i+=l}else{if(r!=Ds.Simple&&d>=e&&(r==Ds.TrackDel&&se||r==Ds.TrackBefore&&se))return null;if(d>e||d==e&&n<0&&!l)return e==s||n<0?i:i+c;i+=c}s=d}if(e>s)throw new RangeError(`Position ${e} is out of range for changeset of length ${s}`);return i}touchesRange(e,n=e){for(let r=0,s=0;r=0&&s<=n&&l>=e)return sn?"cover":!0;s=l}return!1}toString(){let e="";for(let n=0;n=0?":"+s:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(n=>typeof n!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new Do(e)}static create(e){return new Do(e)}}class us extends Do{constructor(e,n){super(e),this.inserted=n}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return bk(this,(n,r,s,i,a)=>e=e.replace(s,s+(r-n),a),!1),e}mapDesc(e,n=!1){return wk(this,e,n,!0)}invert(e){let n=this.sections.slice(),r=[];for(let s=0,i=0;s=0){n[s]=l,n[s+1]=a;let c=s>>1;for(;r.length0&&Bc(r,n,i.text),i.forward(h),l+=h}let d=e[a++];for(;l>1].toJSON()))}return e}static of(e,n,r){let s=[],i=[],a=0,l=null;function c(h=!1){if(!h&&!s.length)return;ag||m<0||g>n)throw new RangeError(`Invalid change range ${m} to ${g} (in doc of length ${n})`);let y=x?typeof x=="string"?jn.of(x.split(r||yk)):x:jn.empty,w=y.length;if(m==g&&w==0)return;ma&&$s(s,m-a,-1),$s(s,g-m,w),Bc(i,s,y),a=g}}return d(e),c(!l),l}static empty(e){return new us(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let n=[],r=[];for(let s=0;sl&&typeof a!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(i.length==1)n.push(i[0],0);else{for(;r.length=0&&n<=0&&n==t[s+1]?t[s]+=e:s>=0&&e==0&&t[s]==0?t[s+1]+=n:r?(t[s]+=e,t[s+1]+=n):t.push(e,n)}function Bc(t,e,n){if(n.length==0)return;let r=e.length-2>>1;if(r>1])),!(n||a==t.sections.length||t.sections[a+1]<0);)l=t.sections[a++],c=t.sections[a++];e(s,d,i,h,m),s=d,i=h}}}function wk(t,e,n,r=!1){let s=[],i=r?[]:null,a=new B0(t),l=new B0(e);for(let c=-1;;){if(a.done&&l.len||l.done&&a.len)throw new Error("Mismatched change set lengths");if(a.ins==-1&&l.ins==-1){let d=Math.min(a.len,l.len);$s(s,d,-1),a.forward(d),l.forward(d)}else if(l.ins>=0&&(a.ins<0||c==a.i||a.off==0&&(l.len=0&&c=0){let d=0,h=a.len;for(;h;)if(l.ins==-1){let m=Math.min(h,l.len);d+=m,h-=m,l.forward(m)}else if(l.ins==0&&l.lenc||a.ins>=0&&a.len>c)&&(l||r.length>d),i.forward2(c),a.forward(c)}}}}class B0{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return n>=e.length?jn.empty:e[n]}textBit(e){let{inserted:n}=this.set,r=this.i-2>>1;return r>=n.length&&!e?jn.empty:n[r].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class Hu{constructor(e,n,r){this.from=e,this.to=n,this.flags=r}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(e,n=-1){let r,s;return this.empty?r=s=e.mapPos(this.from,n):(r=e.mapPos(this.from,1),s=e.mapPos(this.to,-1)),r==this.from&&s==this.to?this:new Hu(r,s,this.flags)}extend(e,n=e){if(e<=this.anchor&&n>=this.anchor)return Me.range(e,n);let r=Math.abs(e-this.anchor)>Math.abs(n-this.anchor)?e:n;return Me.range(this.anchor,r)}eq(e,n=!1){return this.anchor==e.anchor&&this.head==e.head&&(!n||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return Me.range(e.anchor,e.head)}static create(e,n,r){return new Hu(e,n,r)}}class Me{constructor(e,n){this.ranges=e,this.mainIndex=n}map(e,n=-1){return e.empty?this:Me.create(this.ranges.map(r=>r.map(e,n)),this.mainIndex)}eq(e,n=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let r=0;re.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new Me(e.ranges.map(n=>Hu.fromJSON(n)),e.main)}static single(e,n=e){return new Me([Me.range(e,n)],0)}static create(e,n=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let r=0,s=0;se?8:0)|i)}static normalized(e,n=0){let r=e[n];e.sort((s,i)=>s.from-i.from),n=e.indexOf(r);for(let s=1;si.head?Me.range(c,l):Me.range(l,c))}}return new Me(e,n)}}function hF(t,e){for(let n of t.ranges)if(n.to>e)throw new RangeError("Selection points outside of document")}let Jj=0;class at{constructor(e,n,r,s,i){this.combine=e,this.compareInput=n,this.compare=r,this.isStatic=s,this.id=Jj++,this.default=e([]),this.extensions=typeof i=="function"?i(this):i}get reader(){return this}static define(e={}){return new at(e.combine||(n=>n),e.compareInput||((n,r)=>n===r),e.compare||(e.combine?(n,r)=>n===r:e6),!!e.static,e.enables)}of(e){return new ov([],this,0,e)}compute(e,n){if(this.isStatic)throw new Error("Can't compute a static facet");return new ov(e,this,1,n)}computeN(e,n){if(this.isStatic)throw new Error("Can't compute a static facet");return new ov(e,this,2,n)}from(e,n){return n||(n=r=>r),this.compute([e],r=>n(r.field(e)))}}function e6(t,e){return t==e||t.length==e.length&&t.every((n,r)=>n===e[r])}class ov{constructor(e,n,r,s){this.dependencies=e,this.facet=n,this.type=r,this.value=s,this.id=Jj++}dynamicSlot(e){var n;let r=this.value,s=this.facet.compareInput,i=this.id,a=e[i]>>1,l=this.type==2,c=!1,d=!1,h=[];for(let m of this.dependencies)m=="doc"?c=!0:m=="selection"?d=!0:(((n=e[m.id])!==null&&n!==void 0?n:1)&1)==0&&h.push(e[m.id]);return{create(m){return m.values[a]=r(m),1},update(m,g){if(c&&g.docChanged||d&&(g.docChanged||g.selection)||Sk(m,h)){let x=r(m);if(l?!dE(x,m.values[a],s):!s(x,m.values[a]))return m.values[a]=x,1}return 0},reconfigure:(m,g)=>{let x,y=g.config.address[i];if(y!=null){let w=Hv(g,y);if(this.dependencies.every(S=>S instanceof at?g.facet(S)===m.facet(S):S instanceof Os?g.field(S,!1)==m.field(S,!1):!0)||(l?dE(x=r(m),w,s):s(x=r(m),w)))return m.values[a]=w,0}else x=r(m);return m.values[a]=x,1}}}}function dE(t,e,n){if(t.length!=e.length)return!1;for(let r=0;rt[c.id]),s=n.map(c=>c.type),i=r.filter(c=>!(c&1)),a=t[e.id]>>1;function l(c){let d=[];for(let h=0;hr===s),e);return e.provide&&(n.provides=e.provide(n)),n}create(e){let n=e.facet(Zx).find(r=>r.field==this);return(n?.create||this.createF)(e)}slot(e){let n=e[this.id]>>1;return{create:r=>(r.values[n]=this.create(r),1),update:(r,s)=>{let i=r.values[n],a=this.updateF(i,s);return this.compareF(i,a)?0:(r.values[n]=a,1)},reconfigure:(r,s)=>{let i=r.facet(Zx),a=s.facet(Zx),l;return(l=i.find(c=>c.field==this))&&l!=a.find(c=>c.field==this)?(r.values[n]=l.create(r),1):s.config.address[this.id]!=null?(r.values[n]=s.field(this),0):(r.values[n]=this.create(r),1)}}}init(e){return[this,Zx.of({field:this,create:e})]}get extension(){return this}}const Fu={lowest:4,low:3,default:2,high:1,highest:0};function Bm(t){return e=>new fF(e,t)}const ou={highest:Bm(Fu.highest),high:Bm(Fu.high),default:Bm(Fu.default),low:Bm(Fu.low),lowest:Bm(Fu.lowest)};class fF{constructor(e,n){this.inner=e,this.prec=n}}class lb{of(e){return new kk(this,e)}reconfigure(e){return lb.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class kk{constructor(e,n){this.compartment=e,this.inner=n}}class $v{constructor(e,n,r,s,i,a){for(this.base=e,this.compartments=n,this.dynamicSlots=r,this.address=s,this.staticValues=i,this.facets=a,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,n,r){let s=[],i=Object.create(null),a=new Map;for(let g of Dae(e,n,a))g instanceof Os?s.push(g):(i[g.facet.id]||(i[g.facet.id]=[])).push(g);let l=Object.create(null),c=[],d=[];for(let g of s)l[g.id]=d.length<<1,d.push(x=>g.slot(x));let h=r?.config.facets;for(let g in i){let x=i[g],y=x[0].facet,w=h&&h[g]||[];if(x.every(S=>S.type==0))if(l[y.id]=c.length<<1|1,e6(w,x))c.push(r.facet(y));else{let S=y.combine(x.map(k=>k.value));c.push(r&&y.compare(S,r.facet(y))?r.facet(y):S)}else{for(let S of x)S.type==0?(l[S.id]=c.length<<1|1,c.push(S.value)):(l[S.id]=d.length<<1,d.push(k=>S.dynamicSlot(k)));l[y.id]=d.length<<1,d.push(S=>Rae(S,y,x))}}let m=d.map(g=>g(l));return new $v(e,a,m,l,c,i)}}function Dae(t,e,n){let r=[[],[],[],[],[]],s=new Map;function i(a,l){let c=s.get(a);if(c!=null){if(c<=l)return;let d=r[c].indexOf(a);d>-1&&r[c].splice(d,1),a instanceof kk&&n.delete(a.compartment)}if(s.set(a,l),Array.isArray(a))for(let d of a)i(d,l);else if(a instanceof kk){if(n.has(a.compartment))throw new RangeError("Duplicate use of compartment in extensions");let d=e.get(a.compartment)||a.inner;n.set(a.compartment,d),i(d,l)}else if(a instanceof fF)i(a.inner,a.prec);else if(a instanceof Os)r[l].push(a),a.provides&&i(a.provides,l);else if(a instanceof ov)r[l].push(a),a.facet.extensions&&i(a.facet.extensions,Fu.default);else{let d=a.extension;if(!d)throw new Error(`Unrecognized extension value in extension set (${a}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);i(d,l)}}return i(t,Fu.default),r.reduce((a,l)=>a.concat(l))}function w0(t,e){if(e&1)return 2;let n=e>>1,r=t.status[n];if(r==4)throw new Error("Cyclic dependency between fields and/or facets");if(r&2)return r;t.status[n]=4;let s=t.computeSlot(t,t.config.dynamicSlots[n]);return t.status[n]=2|s}function Hv(t,e){return e&1?t.config.staticValues[e>>1]:t.values[e>>1]}const mF=at.define(),Ok=at.define({combine:t=>t.some(e=>e),static:!0}),pF=at.define({combine:t=>t.length?t[0]:void 0,static:!0}),gF=at.define(),xF=at.define(),vF=at.define(),yF=at.define({combine:t=>t.length?t[0]:!1});class qo{constructor(e,n){this.type=e,this.value=n}static define(){return new Pae}}class Pae{of(e){return new qo(this,e)}}class zae{constructor(e){this.map=e}of(e){return new Ft(this,e)}}class Ft{constructor(e,n){this.type=e,this.value=n}map(e){let n=this.type.map(this.value,e);return n===void 0?void 0:n==this.value?this:new Ft(this.type,n)}is(e){return this.type==e}static define(e={}){return new zae(e.map||(n=>n))}static mapEffects(e,n){if(!e.length)return e;let r=[];for(let s of e){let i=s.map(n);i&&r.push(i)}return r}}Ft.reconfigure=Ft.define();Ft.appendConfig=Ft.define();class ns{constructor(e,n,r,s,i,a){this.startState=e,this.changes=n,this.selection=r,this.effects=s,this.annotations=i,this.scrollIntoView=a,this._doc=null,this._state=null,r&&hF(r,n.newLength),i.some(l=>l.type==ns.time)||(this.annotations=i.concat(ns.time.of(Date.now())))}static create(e,n,r,s,i,a){return new ns(e,n,r,s,i,a)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let n of this.annotations)if(n.type==e)return n.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let n=this.annotation(ns.userEvent);return!!(n&&(n==e||n.length>e.length&&n.slice(0,e.length)==e&&n[e.length]=="."))}}ns.time=qo.define();ns.userEvent=qo.define();ns.addToHistory=qo.define();ns.remote=qo.define();function Iae(t,e){let n=[];for(let r=0,s=0;;){let i,a;if(r=t[r]))i=t[r++],a=t[r++];else if(s=0;s--){let i=r[s](t);i instanceof ns?t=i:Array.isArray(i)&&i.length==1&&i[0]instanceof ns?t=i[0]:t=wF(e,Dh(i),!1)}return t}function Bae(t){let e=t.startState,n=e.facet(vF),r=t;for(let s=n.length-1;s>=0;s--){let i=n[s](t);i&&Object.keys(i).length&&(r=bF(r,jk(e,i,t.changes.newLength),!0))}return r==t?t:ns.create(e,t.changes,t.selection,r.effects,r.annotations,r.scrollIntoView)}const Fae=[];function Dh(t){return t==null?Fae:Array.isArray(t)?t:[t]}var wr=(function(t){return t[t.Word=0]="Word",t[t.Space=1]="Space",t[t.Other=2]="Other",t})(wr||(wr={}));const qae=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let Nk;try{Nk=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function $ae(t){if(Nk)return Nk.test(t);for(let e=0;e"€"&&(n.toUpperCase()!=n.toLowerCase()||qae.test(n)))return!0}return!1}function Hae(t){return e=>{if(!/\S/.test(e))return wr.Space;if($ae(e))return wr.Word;for(let n=0;n-1)return wr.Word;return wr.Other}}class wn{constructor(e,n,r,s,i,a){this.config=e,this.doc=n,this.selection=r,this.values=s,this.status=e.statusTemplate.slice(),this.computeSlot=i,a&&(a._state=this);for(let l=0;ls.set(d,c)),n=null),s.set(l.value.compartment,l.value.extension)):l.is(Ft.reconfigure)?(n=null,r=l.value):l.is(Ft.appendConfig)&&(n=null,r=Dh(r).concat(l.value));let i;n?i=e.startState.values.slice():(n=$v.resolve(r,s,this),i=new wn(n,this.doc,this.selection,n.dynamicSlots.map(()=>null),(c,d)=>d.reconfigure(c,this),null).values);let a=e.startState.facet(Ok)?e.newSelection:e.newSelection.asSingle();new wn(n,e.newDoc,a,i,(l,c)=>c.update(l,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(n=>({changes:{from:n.from,to:n.to,insert:e},range:Me.cursor(n.from+e.length)}))}changeByRange(e){let n=this.selection,r=e(n.ranges[0]),s=this.changes(r.changes),i=[r.range],a=Dh(r.effects);for(let l=1;la.spec.fromJSON(l,c)))}}return wn.create({doc:e.doc,selection:Me.fromJSON(e.selection),extensions:n.extensions?s.concat([n.extensions]):s})}static create(e={}){let n=$v.resolve(e.extensions||[],new Map),r=e.doc instanceof jn?e.doc:jn.of((e.doc||"").split(n.staticFacet(wn.lineSeparator)||yk)),s=e.selection?e.selection instanceof Me?e.selection:Me.single(e.selection.anchor,e.selection.head):Me.single(0);return hF(s,r.length),n.staticFacet(Ok)||(s=s.asSingle()),new wn(n,r,s,n.dynamicSlots.map(()=>null),(i,a)=>a.create(i),null)}get tabSize(){return this.facet(wn.tabSize)}get lineBreak(){return this.facet(wn.lineSeparator)||` -`}get readOnly(){return this.facet(yF)}phrase(e,...n){for(let r of this.facet(wn.phrases))if(Object.prototype.hasOwnProperty.call(r,e)){e=r[e];break}return n.length&&(e=e.replace(/\$(\$|\d*)/g,(r,s)=>{if(s=="$")return"$";let i=+(s||1);return!i||i>n.length?r:n[i-1]})),e}languageDataAt(e,n,r=-1){let s=[];for(let i of this.facet(mF))for(let a of i(this,n,r))Object.prototype.hasOwnProperty.call(a,e)&&s.push(a[e]);return s}charCategorizer(e){return Hae(this.languageDataAt("wordChars",e).join(""))}wordAt(e){let{text:n,from:r,length:s}=this.doc.lineAt(e),i=this.charCategorizer(e),a=e-r,l=e-r;for(;a>0;){let c=zs(n,a,!1);if(i(n.slice(c,a))!=wr.Word)break;a=c}for(;lt.length?t[0]:4});wn.lineSeparator=pF;wn.readOnly=yF;wn.phrases=at.define({compare(t,e){let n=Object.keys(t),r=Object.keys(e);return n.length==r.length&&n.every(s=>t[s]==e[s])}});wn.languageData=mF;wn.changeFilter=gF;wn.transactionFilter=xF;wn.transactionExtender=vF;lb.reconfigure=Ft.define();function $o(t,e,n={}){let r={};for(let s of t)for(let i of Object.keys(s)){let a=s[i],l=r[i];if(l===void 0)r[i]=a;else if(!(l===a||a===void 0))if(Object.hasOwnProperty.call(n,i))r[i]=n[i](l,a);else throw new Error("Config merge conflict for field "+i)}for(let s in e)r[s]===void 0&&(r[s]=e[s]);return r}class sd{eq(e){return this==e}range(e,n=e){return Ck.create(e,n,this)}}sd.prototype.startSide=sd.prototype.endSide=0;sd.prototype.point=!1;sd.prototype.mapMode=Ds.TrackDel;let Ck=class SF{constructor(e,n,r){this.from=e,this.to=n,this.value=r}static create(e,n,r){return new SF(e,n,r)}};function Tk(t,e){return t.from-e.from||t.value.startSide-e.value.startSide}class t6{constructor(e,n,r,s){this.from=e,this.to=n,this.value=r,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(e,n,r,s=0){let i=r?this.to:this.from;for(let a=s,l=i.length;;){if(a==l)return a;let c=a+l>>1,d=i[c]-e||(r?this.value[c].endSide:this.value[c].startSide)-n;if(c==a)return d>=0?a:l;d>=0?l=c:a=c+1}}between(e,n,r,s){for(let i=this.findIndex(n,-1e9,!0),a=this.findIndex(r,1e9,!1,i);ix||g==x&&d.startSide>0&&d.endSide<=0)continue;(x-g||d.endSide-d.startSide)<0||(a<0&&(a=g),d.point&&(l=Math.max(l,x-g)),r.push(d),s.push(g-a),i.push(x-a))}return{mapped:r.length?new t6(s,i,r,l):null,pos:a}}}class Rn{constructor(e,n,r,s){this.chunkPos=e,this.chunk=n,this.nextLayer=r,this.maxPoint=s}static create(e,n,r,s){return new Rn(e,n,r,s)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let n of this.chunk)e+=n.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:n=[],sort:r=!1,filterFrom:s=0,filterTo:i=this.length}=e,a=e.filter;if(n.length==0&&!a)return this;if(r&&(n=n.slice().sort(Tk)),this.isEmpty)return n.length?Rn.of(n):this;let l=new kF(this,null,-1).goto(0),c=0,d=[],h=new ql;for(;l.value||c=0){let m=n[c++];h.addInner(m.from,m.to,m.value)||d.push(m)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||il.to||i=i&&e<=i+a.length&&a.between(i,e-i,n-i,r)===!1)return}this.nextLayer.between(e,n,r)}}iter(e=0){return F0.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,n=0){return F0.from(e).goto(n)}static compare(e,n,r,s,i=-1){let a=e.filter(m=>m.maxPoint>0||!m.isEmpty&&m.maxPoint>=i),l=n.filter(m=>m.maxPoint>0||!m.isEmpty&&m.maxPoint>=i),c=hE(a,l,r),d=new Fm(a,c,i),h=new Fm(l,c,i);r.iterGaps((m,g,x)=>fE(d,m,h,g,x,s)),r.empty&&r.length==0&&fE(d,0,h,0,0,s)}static eq(e,n,r=0,s){s==null&&(s=999999999);let i=e.filter(h=>!h.isEmpty&&n.indexOf(h)<0),a=n.filter(h=>!h.isEmpty&&e.indexOf(h)<0);if(i.length!=a.length)return!1;if(!i.length)return!0;let l=hE(i,a),c=new Fm(i,l,0).goto(r),d=new Fm(a,l,0).goto(r);for(;;){if(c.to!=d.to||!Ek(c.active,d.active)||c.point&&(!d.point||!c.point.eq(d.point)))return!1;if(c.to>s)return!0;c.next(),d.next()}}static spans(e,n,r,s,i=-1){let a=new Fm(e,null,i).goto(n),l=n,c=a.openStart;for(;;){let d=Math.min(a.to,r);if(a.point){let h=a.activeForPoint(a.to),m=a.pointFroml&&(s.span(l,d,a.active,c),c=a.openEnd(d));if(a.to>r)return c+(a.point&&a.to>r?1:0);l=a.to,a.next()}}static of(e,n=!1){let r=new ql;for(let s of e instanceof Ck?[e]:n?Qae(e):e)r.add(s.from,s.to,s.value);return r.finish()}static join(e){if(!e.length)return Rn.empty;let n=e[e.length-1];for(let r=e.length-2;r>=0;r--)for(let s=e[r];s!=Rn.empty;s=s.nextLayer)n=new Rn(s.chunkPos,s.chunk,n,Math.max(s.maxPoint,n.maxPoint));return n}}Rn.empty=new Rn([],[],null,-1);function Qae(t){if(t.length>1)for(let e=t[0],n=1;n0)return t.slice().sort(Tk);e=r}return t}Rn.empty.nextLayer=Rn.empty;class ql{finishChunk(e){this.chunks.push(new t6(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,n,r){this.addInner(e,n,r)||(this.nextLayer||(this.nextLayer=new ql)).add(e,n,r)}addInner(e,n,r){let s=e-this.lastTo||r.startSide-this.last.endSide;if(s<=0&&(e-this.lastFrom||r.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(n-this.chunkStart),this.last=r,this.lastFrom=e,this.lastTo=n,this.value.push(r),r.point&&(this.maxPoint=Math.max(this.maxPoint,n-e)),!0)}addChunk(e,n){if((e-this.lastTo||n.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,n.maxPoint),this.chunks.push(n),this.chunkPos.push(e);let r=n.value.length-1;return this.last=n.value[r],this.lastFrom=n.from[r]+e,this.lastTo=n.to[r]+e,!0}finish(){return this.finishInner(Rn.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let n=Rn.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,n}}function hE(t,e,n){let r=new Map;for(let i of t)for(let a=0;a=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=r&&s.push(new kF(a,n,r,i));return s.length==1?s[0]:new F0(s)}get startSide(){return this.value?this.value.startSide:0}goto(e,n=-1e9){for(let r of this.heap)r.goto(e,n);for(let r=this.heap.length>>1;r>=0;r--)R4(this.heap,r);return this.next(),this}forward(e,n){for(let r of this.heap)r.forward(e,n);for(let r=this.heap.length>>1;r>=0;r--)R4(this.heap,r);(this.to-e||this.value.endSide-n)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),R4(this.heap,0)}}}function R4(t,e){for(let n=t[e];;){let r=(e<<1)+1;if(r>=t.length)break;let s=t[r];if(r+1=0&&(s=t[r+1],r++),n.compare(s)<0)break;t[r]=n,t[e]=s,e=r}}class Fm{constructor(e,n,r){this.minPoint=r,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=F0.from(e,n,r)}goto(e,n=-1e9){return this.cursor.goto(e,n),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=n,this.openStart=-1,this.next(),this}forward(e,n){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-n)<0;)this.removeActive(this.minActive);this.cursor.forward(e,n)}removeActive(e){Jx(this.active,e),Jx(this.activeTo,e),Jx(this.activeRank,e),this.minActive=mE(this.active,this.activeTo)}addActive(e){let n=0,{value:r,to:s,rank:i}=this.cursor;for(;n0;)n++;e1(this.active,n,r),e1(this.activeTo,n,s),e1(this.activeRank,n,i),e&&e1(e,n,this.cursor.from),this.minActive=mE(this.active,this.activeTo)}next(){let e=this.to,n=this.point;this.point=null;let r=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>e){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),r&&Jx(r,s)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let i=this.cursor.value;if(!i.point)this.addActive(r),this.cursor.next();else if(n&&this.cursor.to==this.to&&this.cursor.from=0&&r[s]=0&&!(this.activeRank[r]e||this.activeTo[r]==e&&this.active[r].endSide>=this.point.endSide)&&n.push(this.active[r]);return n.reverse()}openEnd(e){let n=0;for(let r=this.activeTo.length-1;r>=0&&this.activeTo[r]>e;r--)n++;return n}}function fE(t,e,n,r,s,i){t.goto(e),n.goto(r);let a=r+s,l=r,c=r-e;for(;;){let d=t.to+c-n.to,h=d||t.endSide-n.endSide,m=h<0?t.to+c:n.to,g=Math.min(m,a);if(t.point||n.point?t.point&&n.point&&(t.point==n.point||t.point.eq(n.point))&&Ek(t.activeForPoint(t.to),n.activeForPoint(n.to))||i.comparePoint(l,g,t.point,n.point):g>l&&!Ek(t.active,n.active)&&i.compareRange(l,g,t.active,n.active),m>a)break;(d||t.openEnd!=n.openEnd)&&i.boundChange&&i.boundChange(m),l=m,h<=0&&t.next(),h>=0&&n.next()}}function Ek(t,e){if(t.length!=e.length)return!1;for(let n=0;n=e;r--)t[r+1]=t[r];t[e]=n}function mE(t,e){let n=-1,r=1e9;for(let s=0;s=e)return s;if(s==t.length)break;i+=t.charCodeAt(s)==9?n-i%n:1,s=zs(t,s)}return r===!0?-1:t.length}const Ak="ͼ",pE=typeof Symbol>"u"?"__"+Ak:Symbol.for(Ak),Mk=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),gE=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{};class Wc{constructor(e,n){this.rules=[];let{finish:r}=n||{};function s(a){return/^@/.test(a)?[a]:a.split(/,\s*/)}function i(a,l,c,d){let h=[],m=/^@(\w+)\b/.exec(a[0]),g=m&&m[1]=="keyframes";if(m&&l==null)return c.push(a[0]+";");for(let x in l){let y=l[x];if(/&/.test(x))i(x.split(/,\s*/).map(w=>a.map(S=>w.replace(/&/,S))).reduce((w,S)=>w.concat(S)),y,c);else if(y&&typeof y=="object"){if(!m)throw new RangeError("The value of a property ("+x+") should be a primitive value.");i(s(x),y,h,g)}else y!=null&&h.push(x.replace(/_.*/,"").replace(/[A-Z]/g,w=>"-"+w.toLowerCase())+": "+y+";")}(h.length||g)&&c.push((r&&!m&&!d?a.map(r):a).join(", ")+" {"+h.join(" ")+"}")}for(let a in e)i(s(a),e[a],this.rules)}getRules(){return this.rules.join(` -`)}static newName(){let e=gE[pE]||1;return gE[pE]=e+1,Ak+e.toString(36)}static mount(e,n,r){let s=e[Mk],i=r&&r.nonce;s?i&&s.setNonce(i):s=new Vae(e,i),s.mount(Array.isArray(n)?n:[n],e)}}let xE=new Map;class Vae{constructor(e,n){let r=e.ownerDocument||e,s=r.defaultView;if(!e.head&&e.adoptedStyleSheets&&s.CSSStyleSheet){let i=xE.get(r);if(i)return e[Mk]=i;this.sheet=new s.CSSStyleSheet,xE.set(r,this)}else this.styleTag=r.createElement("style"),n&&this.styleTag.setAttribute("nonce",n);this.modules=[],e[Mk]=this}mount(e,n){let r=this.sheet,s=0,i=0;for(let a=0;a-1&&(this.modules.splice(c,1),i--,c=-1),c==-1){if(this.modules.splice(i++,0,l),r)for(let d=0;d",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},Uae=typeof navigator<"u"&&/Mac/.test(navigator.platform),Wae=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(var Ms=0;Ms<10;Ms++)Gc[48+Ms]=Gc[96+Ms]=String(Ms);for(var Ms=1;Ms<=24;Ms++)Gc[Ms+111]="F"+Ms;for(var Ms=65;Ms<=90;Ms++)Gc[Ms]=String.fromCharCode(Ms+32),q0[Ms]=String.fromCharCode(Ms);for(var D4 in Gc)q0.hasOwnProperty(D4)||(q0[D4]=Gc[D4]);function Gae(t){var e=Uae&&t.metaKey&&t.shiftKey&&!t.ctrlKey&&!t.altKey||Wae&&t.shiftKey&&t.key&&t.key.length==1||t.key=="Unidentified",n=!e&&t.key||(t.shiftKey?q0:Gc)[t.keyCode]||t.key||"Unidentified";return n=="Esc"&&(n="Escape"),n=="Del"&&(n="Delete"),n=="Left"&&(n="ArrowLeft"),n=="Up"&&(n="ArrowUp"),n=="Right"&&(n="ArrowRight"),n=="Down"&&(n="ArrowDown"),n}function sr(){var t=arguments[0];typeof t=="string"&&(t=document.createElement(t));var e=1,n=arguments[1];if(n&&typeof n=="object"&&n.nodeType==null&&!Array.isArray(n)){for(var r in n)if(Object.prototype.hasOwnProperty.call(n,r)){var s=n[r];typeof s=="string"?t.setAttribute(r,s):s!=null&&(t[r]=s)}e++}for(;e2);var et={mac:yE||/Mac/.test(Zs.platform),windows:/Win/.test(Zs.platform),linux:/Linux|X11/.test(Zs.platform),ie:cb,ie_version:jF?Rk.documentMode||6:Pk?+Pk[1]:Dk?+Dk[1]:0,gecko:vE,gecko_version:vE?+(/Firefox\/(\d+)/.exec(Zs.userAgent)||[0,0])[1]:0,chrome:!!P4,chrome_version:P4?+P4[1]:0,ios:yE,android:/Android\b/.test(Zs.userAgent),webkit_version:Xae?+(/\bAppleWebKit\/(\d+)/.exec(Zs.userAgent)||[0,0])[1]:0,safari:zk,safari_version:zk?+(/\bVersion\/(\d+(\.\d+)?)/.exec(Zs.userAgent)||[0,0])[1]:0,tabSize:Rk.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function $0(t){let e;return t.nodeType==11?e=t.getSelection?t:t.ownerDocument:e=t,e.getSelection()}function Ik(t,e){return e?t==e||t.contains(e.nodeType!=1?e.parentNode:e):!1}function lv(t,e){if(!e.anchorNode)return!1;try{return Ik(t,e.anchorNode)}catch{return!1}}function Jh(t){return t.nodeType==3?ad(t,0,t.nodeValue.length).getClientRects():t.nodeType==1?t.getClientRects():[]}function S0(t,e,n,r){return n?bE(t,e,n,r,-1)||bE(t,e,n,r,1):!1}function id(t){for(var e=0;;e++)if(t=t.previousSibling,!t)return e}function Qv(t){return t.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(t.nodeName)}function bE(t,e,n,r,s){for(;;){if(t==n&&e==r)return!0;if(e==(s<0?0:Lo(t))){if(t.nodeName=="DIV")return!1;let i=t.parentNode;if(!i||i.nodeType!=1)return!1;e=id(t)+(s<0?0:1),t=i}else if(t.nodeType==1){if(t=t.childNodes[e+(s<0?-1:0)],t.nodeType==1&&t.contentEditable=="false")return!1;e=s<0?Lo(t):0}else return!1}}function Lo(t){return t.nodeType==3?t.nodeValue.length:t.childNodes.length}function qp(t,e){let n=e?t.left:t.right;return{left:n,right:n,top:t.top,bottom:t.bottom}}function Yae(t){let e=t.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:t.innerWidth,top:0,bottom:t.innerHeight}}function NF(t,e){let n=e.width/t.offsetWidth,r=e.height/t.offsetHeight;return(n>.995&&n<1.005||!isFinite(n)||Math.abs(e.width-t.offsetWidth)<1)&&(n=1),(r>.995&&r<1.005||!isFinite(r)||Math.abs(e.height-t.offsetHeight)<1)&&(r=1),{scaleX:n,scaleY:r}}function Kae(t,e,n,r,s,i,a,l){let c=t.ownerDocument,d=c.defaultView||window;for(let h=t,m=!1;h&&!m;)if(h.nodeType==1){let g,x=h==c.body,y=1,w=1;if(x)g=Yae(d);else{if(/^(fixed|sticky)$/.test(getComputedStyle(h).position)&&(m=!0),h.scrollHeight<=h.clientHeight&&h.scrollWidth<=h.clientWidth){h=h.assignedSlot||h.parentNode;continue}let j=h.getBoundingClientRect();({scaleX:y,scaleY:w}=NF(h,j)),g={left:j.left,right:j.left+h.clientWidth*y,top:j.top,bottom:j.top+h.clientHeight*w}}let S=0,k=0;if(s=="nearest")e.top0&&e.bottom>g.bottom+k&&(k=e.bottom-g.bottom+a)):e.bottom>g.bottom&&(k=e.bottom-g.bottom+a,n<0&&e.top-k0&&e.right>g.right+S&&(S=e.right-g.right+i)):e.right>g.right&&(S=e.right-g.right+i,n<0&&e.leftg.bottom||e.leftg.right)&&(e={left:Math.max(e.left,g.left),right:Math.min(e.right,g.right),top:Math.max(e.top,g.top),bottom:Math.min(e.bottom,g.bottom)}),h=h.assignedSlot||h.parentNode}else if(h.nodeType==11)h=h.host;else break}function Zae(t){let e=t.ownerDocument,n,r;for(let s=t.parentNode;s&&!(s==e.body||n&&r);)if(s.nodeType==1)!r&&s.scrollHeight>s.clientHeight&&(r=s),!n&&s.scrollWidth>s.clientWidth&&(n=s),s=s.assignedSlot||s.parentNode;else if(s.nodeType==11)s=s.host;else break;return{x:n,y:r}}class Jae{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:n,focusNode:r}=e;this.set(n,Math.min(e.anchorOffset,n?Lo(n):0),r,Math.min(e.focusOffset,r?Lo(r):0))}set(e,n,r,s){this.anchorNode=e,this.anchorOffset=n,this.focusNode=r,this.focusOffset=s}}let Iu=null;et.safari&&et.safari_version>=26&&(Iu=!1);function CF(t){if(t.setActive)return t.setActive();if(Iu)return t.focus(Iu);let e=[];for(let n=t;n&&(e.push(n,n.scrollTop,n.scrollLeft),n!=n.ownerDocument);n=n.parentNode);if(t.focus(Iu==null?{get preventScroll(){return Iu={preventScroll:!0},!0}}:void 0),!Iu){Iu=!1;for(let n=0;nMath.max(1,t.scrollHeight-t.clientHeight-4)}function _F(t,e){for(let n=t,r=e;;){if(n.nodeType==3&&r>0)return{node:n,offset:r};if(n.nodeType==1&&r>0){if(n.contentEditable=="false")return null;n=n.childNodes[r-1],r=Lo(n)}else if(n.parentNode&&!Qv(n))r=id(n),n=n.parentNode;else return null}}function AF(t,e){for(let n=t,r=e;;){if(n.nodeType==3&&rn)return m.domBoundsAround(e,n,d);if(g>=e&&s==-1&&(s=c,i=d),d>n&&m.dom.parentNode==this.dom){a=c,l=h;break}h=g,d=g+m.breakAfter}return{from:i,to:l<0?r+this.length:l,startDOM:(s?this.children[s-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:a=0?this.children[a].dom:null}}markDirty(e=!1){this.flags|=2,this.markParentsDirty(e)}markParentsDirty(e){for(let n=this.parent;n;n=n.parent){if(e&&(n.flags|=2),n.flags&1)return;n.flags|=1,e=!1}}setParent(e){this.parent!=e&&(this.parent=e,this.flags&7&&this.markParentsDirty(!0))}setDOM(e){this.dom!=e&&(this.dom&&(this.dom.cmView=null),this.dom=e,e.cmView=this)}get rootView(){for(let e=this;;){let n=e.parent;if(!n)return e;e=n}}replaceChildren(e,n,r=n6){this.markDirty();for(let s=e;sthis.pos||e==this.pos&&(n>0||this.i==0||this.children[this.i-1].breakAfter))return this.off=e-this.pos,this;let r=this.children[--this.i];this.pos-=r.length+r.breakAfter}}}function RF(t,e,n,r,s,i,a,l,c){let{children:d}=t,h=d.length?d[e]:null,m=i.length?i[i.length-1]:null,g=m?m.breakAfter:a;if(!(e==r&&h&&!a&&!g&&i.length<2&&h.merge(n,s,i.length?m:null,n==0,l,c))){if(r0&&(!a&&i.length&&h.merge(n,h.length,i[0],!1,l,0)?h.breakAfter=i.shift().breakAfter:(nnoe||r.flags&8)?!1:(this.text=this.text.slice(0,e)+(r?r.text:"")+this.text.slice(n),this.markDirty(),!0)}split(e){let n=new Ya(this.text.slice(e));return this.text=this.text.slice(0,e),this.markDirty(),n.flags|=this.flags&8,n}localPosFromDOM(e,n){return e==this.dom?n:n?this.text.length:0}domAtPos(e){return new Qs(this.dom,e)}domBoundsAround(e,n,r){return{from:r,to:r+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(e,n){return roe(this.dom,e,n)}}class $l extends er{constructor(e,n=[],r=0){super(),this.mark=e,this.children=n,this.length=r;for(let s of n)s.setParent(this)}setAttrs(e){if(TF(e),this.mark.class&&(e.className=this.mark.class),this.mark.attrs)for(let n in this.mark.attrs)e.setAttribute(n,this.mark.attrs[n]);return e}canReuseDOM(e){return super.canReuseDOM(e)&&!((this.flags|e.flags)&8)}reuseDOM(e){e.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(e),this.flags|=6)}sync(e,n){this.dom?this.flags&4&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(e,n)}merge(e,n,r,s,i,a){return r&&(!(r instanceof $l&&r.mark.eq(this.mark))||e&&i<=0||ne&&n.push(r=e&&(s=i),r=c,i++}let a=this.length-e;return this.length=e,s>-1&&(this.children.length=s,this.markDirty()),new $l(this.mark,n,a)}domAtPos(e){return PF(this,e)}coordsAt(e,n){return IF(this,e,n)}}function roe(t,e,n){let r=t.nodeValue.length;e>r&&(e=r);let s=e,i=e,a=0;e==0&&n<0||e==r&&n>=0?et.chrome||et.gecko||(e?(s--,a=1):i=0)?0:l.length-1];return et.safari&&!a&&c.width==0&&(c=Array.prototype.find.call(l,d=>d.width)||c),a?qp(c,a<0):c||null}class Al extends er{static create(e,n,r){return new Al(e,n,r)}constructor(e,n,r){super(),this.widget=e,this.length=n,this.side=r,this.prevWidget=null}split(e){let n=Al.create(this.widget,this.length-e,this.side);return this.length-=e,n}sync(e){(!this.dom||!this.widget.updateDOM(this.dom,e))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(e)),this.widget.editable||(this.dom.contentEditable="false"))}getSide(){return this.side}merge(e,n,r,s,i,a){return r&&(!(r instanceof Al)||!this.widget.compare(r.widget)||e>0&&i<=0||n0)?Qs.before(this.dom):Qs.after(this.dom,e==this.length)}domBoundsAround(){return null}coordsAt(e,n){let r=this.widget.coordsAt(this.dom,e,n);if(r)return r;let s=this.dom.getClientRects(),i=null;if(!s.length)return null;let a=this.side?this.side<0:e>0;for(let l=a?s.length-1:0;i=s[l],!(e>0?l==0:l==s.length-1||i.top0?Qs.before(this.dom):Qs.after(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(e){return this.dom.getBoundingClientRect()}get overrideDOMText(){return jn.empty}get isHidden(){return!0}}Ya.prototype.children=Al.prototype.children=ef.prototype.children=n6;function PF(t,e){let n=t.dom,{children:r}=t,s=0;for(let i=0;si&&e0;i--){let a=r[i-1];if(a.dom.parentNode==n)return a.domAtPos(a.length)}for(let i=s;i0&&e instanceof $l&&s.length&&(r=s[s.length-1])instanceof $l&&r.mark.eq(e.mark)?zF(r,e.children[0],n-1):(s.push(e),e.setParent(t)),t.length+=e.length}function IF(t,e,n){let r=null,s=-1,i=null,a=-1;function l(d,h){for(let m=0,g=0;m=h&&(x.children.length?l(x,h-g):(!i||i.isHidden&&(n>0||ioe(i,x)))&&(y>h||g==y&&x.getSide()>0)?(i=x,a=h-g):(g-1?1:0)!=s.length-(n&&s.indexOf(n)>-1?1:0))return!1;for(let i of r)if(i!=n&&(s.indexOf(i)==-1||t[i]!==e[i]))return!1;return!0}function Bk(t,e,n){let r=!1;if(e)for(let s in e)n&&s in n||(r=!0,s=="style"?t.style.cssText="":t.removeAttribute(s));if(n)for(let s in n)e&&e[s]==n[s]||(r=!0,s=="style"?t.style.cssText=n[s]:t.setAttribute(s,n[s]));return r}function aoe(t){let e=Object.create(null);for(let n=0;n0?3e8:-4e8:n>0?1e8:-1e8,new Xc(e,n,n,r,e.widget||null,!1)}static replace(e){let n=!!e.block,r,s;if(e.isBlockGap)r=-5e8,s=4e8;else{let{start:i,end:a}=LF(e,n);r=(i?n?-3e8:-1:5e8)-1,s=(a?n?2e8:1:-6e8)+1}return new Xc(e,r,s,n,e.widget||null,!0)}static line(e){return new Hp(e)}static set(e,n=!1){return Rn.of(e,n)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}}kt.none=Rn.empty;class $p extends kt{constructor(e){let{start:n,end:r}=LF(e);super(n?-1:5e8,r?1:-6e8,null,e),this.tagName=e.tagName||"span",this.class=e.class||"",this.attrs=e.attributes||null}eq(e){var n,r;return this==e||e instanceof $p&&this.tagName==e.tagName&&(this.class||((n=this.attrs)===null||n===void 0?void 0:n.class))==(e.class||((r=e.attrs)===null||r===void 0?void 0:r.class))&&Vv(this.attrs,e.attrs,"class")}range(e,n=e){if(e>=n)throw new RangeError("Mark decorations may not be empty");return super.range(e,n)}}$p.prototype.point=!1;class Hp extends kt{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof Hp&&this.spec.class==e.spec.class&&Vv(this.spec.attributes,e.spec.attributes)}range(e,n=e){if(n!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,n)}}Hp.prototype.mapMode=Ds.TrackBefore;Hp.prototype.point=!0;class Xc extends kt{constructor(e,n,r,s,i,a){super(n,r,i,e),this.block=s,this.isReplace=a,this.mapMode=s?n<=0?Ds.TrackBefore:Ds.TrackAfter:Ds.TrackDel}get type(){return this.startSide!=this.endSide?ni.WidgetRange:this.startSide<=0?ni.WidgetBefore:ni.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof Xc&&ooe(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,n=e){if(this.isReplace&&(e>n||e==n&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&n!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,n)}}Xc.prototype.point=!0;function LF(t,e=!1){let{inclusiveStart:n,inclusiveEnd:r}=t;return n==null&&(n=t.inclusive),r==null&&(r=t.inclusive),{start:n??e,end:r??e}}function ooe(t,e){return t==e||!!(t&&e&&t.compare(e))}function cv(t,e,n,r=0){let s=n.length-1;s>=0&&n[s]+r>=t?n[s]=Math.max(n[s],e):n.push(t,e)}class es extends er{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(e,n,r,s,i,a){if(r){if(!(r instanceof es))return!1;this.dom||r.transferDOM(this)}return s&&this.setDeco(r?r.attrs:null),DF(this,e,n,r?r.children.slice():[],i,a),!0}split(e){let n=new es;if(n.breakAfter=this.breakAfter,this.length==0)return n;let{i:r,off:s}=this.childPos(e);s&&(n.append(this.children[r].split(s),0),this.children[r].merge(s,this.children[r].length,null,!1,0,0),r++);for(let i=r;i0&&this.children[r-1].length==0;)this.children[--r].destroy();return this.children.length=r,this.markDirty(),this.length=e,n}transferDOM(e){this.dom&&(this.markDirty(),e.setDOM(this.dom),e.prevAttrs=this.prevAttrs===void 0?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(e){Vv(this.attrs,e)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=e)}append(e,n){zF(this,e,n)}addLineDeco(e){let n=e.spec.attributes,r=e.spec.class;n&&(this.attrs=Lk(n,this.attrs||{})),r&&(this.attrs=Lk({class:r},this.attrs||{}))}domAtPos(e){return PF(this,e)}reuseDOM(e){e.nodeName=="DIV"&&(this.setDOM(e),this.flags|=6)}sync(e,n){var r;this.dom?this.flags&4&&(TF(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),this.prevAttrs!==void 0&&(Bk(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(e,n);let s=this.dom.lastChild;for(;s&&er.get(s)instanceof $l;)s=s.lastChild;if(!s||!this.length||s.nodeName!="BR"&&((r=er.get(s))===null||r===void 0?void 0:r.isEditable)==!1&&(!et.ios||!this.children.some(i=>i instanceof Ya))){let i=document.createElement("BR");i.cmIgnore=!0,this.dom.appendChild(i)}}measureTextSize(){if(this.children.length==0||this.length>20)return null;let e=0,n;for(let r of this.children){if(!(r instanceof Ya)||/[^ -~]/.test(r.text))return null;let s=Jh(r.dom);if(s.length!=1)return null;e+=s[0].width,n=s[0].height}return e?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length,textHeight:n}:null}coordsAt(e,n){let r=IF(this,e,n);if(!this.children.length&&r&&this.parent){let{heightOracle:s}=this.parent.view.viewState,i=r.bottom-r.top;if(Math.abs(i-s.lineHeight)<2&&s.textHeight=n){if(i instanceof es)return i;if(a>n)break}s=a+i.breakAfter}return null}}class Il extends er{constructor(e,n,r){super(),this.widget=e,this.length=n,this.deco=r,this.breakAfter=0,this.prevWidget=null}merge(e,n,r,s,i,a){return r&&(!(r instanceof Il)||!this.widget.compare(r.widget)||e>0&&i<=0||n0}}class Fk extends Ho{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}}class k0{constructor(e,n,r,s){this.doc=e,this.pos=n,this.end=r,this.disallowBlockEffectsFor=s,this.content=[],this.curLine=null,this.breakAtStart=0,this.pendingBuffer=0,this.bufferMarks=[],this.atCursorPos=!0,this.openStart=-1,this.openEnd=-1,this.text="",this.textOff=0,this.cursor=e.iter(),this.skip=n}posCovered(){if(this.content.length==0)return!this.breakAtStart&&this.doc.lineAt(this.pos).from!=this.pos;let e=this.content[this.content.length-1];return!(e.breakAfter||e instanceof Il&&e.deco.endSide<0)}getLine(){return this.curLine||(this.content.push(this.curLine=new es),this.atCursorPos=!0),this.curLine}flushBuffer(e=this.bufferMarks){this.pendingBuffer&&(this.curLine.append(t1(new ef(-1),e),e.length),this.pendingBuffer=0)}addBlockWidget(e){this.flushBuffer(),this.curLine=null,this.content.push(e)}finish(e){this.pendingBuffer&&e<=this.bufferMarks.length?this.flushBuffer():this.pendingBuffer=0,!this.posCovered()&&!(e&&this.content.length&&this.content[this.content.length-1]instanceof Il)&&this.getLine()}buildText(e,n,r){for(;e>0;){if(this.textOff==this.text.length){let{value:a,lineBreak:l,done:c}=this.cursor.next(this.skip);if(this.skip=0,c)throw new Error("Ran out of text content when drawing inline views");if(l){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer(),this.curLine=null,this.atCursorPos=!0,e--;continue}else this.text=a,this.textOff=0}let s=Math.min(this.text.length-this.textOff,e),i=Math.min(s,512);this.flushBuffer(n.slice(n.length-r)),this.getLine().append(t1(new Ya(this.text.slice(this.textOff,this.textOff+i)),n),r),this.atCursorPos=!0,this.textOff+=i,e-=i,r=s<=i?0:n.length}}span(e,n,r,s){this.buildText(n-e,r,s),this.pos=n,this.openStart<0&&(this.openStart=s)}point(e,n,r,s,i,a){if(this.disallowBlockEffectsFor[a]&&r instanceof Xc){if(r.block)throw new RangeError("Block decorations may not be specified via plugins");if(n>this.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}let l=n-e;if(r instanceof Xc)if(r.block)r.startSide>0&&!this.posCovered()&&this.getLine(),this.addBlockWidget(new Il(r.widget||tf.block,l,r));else{let c=Al.create(r.widget||tf.inline,l,l?0:r.startSide),d=this.atCursorPos&&!c.isEditable&&i<=s.length&&(e0),h=!c.isEditable&&(es.length||r.startSide<=0),m=this.getLine();this.pendingBuffer==2&&!d&&!c.isEditable&&(this.pendingBuffer=0),this.flushBuffer(s),d&&(m.append(t1(new ef(1),s),i),i=s.length+Math.max(0,i-s.length)),m.append(t1(c,s),i),this.atCursorPos=h,this.pendingBuffer=h?es.length?1:2:0,this.pendingBuffer&&(this.bufferMarks=s.slice())}else this.doc.lineAt(this.pos).from==this.pos&&this.getLine().addLineDeco(r);l&&(this.textOff+l<=this.text.length?this.textOff+=l:(this.skip+=l-(this.text.length-this.textOff),this.text="",this.textOff=0),this.pos=n),this.openStart<0&&(this.openStart=i)}static build(e,n,r,s,i){let a=new k0(e,n,r,i);return a.openEnd=Rn.spans(s,n,r,a),a.openStart<0&&(a.openStart=a.openEnd),a.finish(a.openEnd),a}}function t1(t,e){for(let n of e)t=new $l(n,[t],t.length);return t}class tf extends Ho{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}}tf.inline=new tf("span");tf.block=new tf("div");var gr=(function(t){return t[t.LTR=0]="LTR",t[t.RTL=1]="RTL",t})(gr||(gr={}));const od=gr.LTR,r6=gr.RTL;function BF(t){let e=[];for(let n=0;n=n){if(l.level==r)return a;(i<0||(s!=0?s<0?l.fromn:e[i].level>l.level))&&(i=a)}}if(i<0)throw new RangeError("Index out of range");return i}}function qF(t,e){if(t.length!=e.length)return!1;for(let n=0;n=0;w-=3)if(ho[w+1]==-x){let S=ho[w+2],k=S&2?s:S&4?S&1?i:s:0;k&&(ir[m]=ir[ho[w]]=k),l=w;break}}else{if(ho.length==189)break;ho[l++]=m,ho[l++]=g,ho[l++]=c}else if((y=ir[m])==2||y==1){let w=y==s;c=w?0:1;for(let S=l-3;S>=0;S-=3){let k=ho[S+2];if(k&2)break;if(w)ho[S+2]|=2;else{if(k&4)break;ho[S+2]|=4}}}}}function foe(t,e,n,r){for(let s=0,i=r;s<=n.length;s++){let a=s?n[s-1].to:t,l=sc;)y==S&&(y=n[--w].from,S=w?n[w-1].to:t),ir[--y]=x;c=h}else i=d,c++}}}function $k(t,e,n,r,s,i,a){let l=r%2?2:1;if(r%2==s%2)for(let c=e,d=0;cc&&a.push(new Fc(c,w.from,x));let S=w.direction==od!=!(x%2);Hk(t,S?r+1:r,s,w.inner,w.from,w.to,a),c=w.to}y=w.to}else{if(y==n||(h?ir[y]!=l:ir[y]==l))break;y++}g?$k(t,c,y,r+1,s,g,a):ce;){let h=!0,m=!1;if(!d||c>i[d-1].to){let w=ir[c-1];w!=l&&(h=!1,m=w==16)}let g=!h&&l==1?[]:null,x=h?r:r+1,y=c;e:for(;;)if(d&&y==i[d-1].to){if(m)break e;let w=i[--d];if(!h)for(let S=w.from,k=d;;){if(S==e)break e;if(k&&i[k-1].to==S)S=i[--k].from;else{if(ir[S-1]==l)break e;break}}if(g)g.push(w);else{w.toir.length;)ir[ir.length]=256;let r=[],s=e==od?0:1;return Hk(t,s,s,n,0,t.length,r),r}function $F(t){return[new Fc(0,t,0)]}let HF="";function poe(t,e,n,r,s){var i;let a=r.head-t.from,l=Fc.find(e,a,(i=r.bidiLevel)!==null&&i!==void 0?i:-1,r.assoc),c=e[l],d=c.side(s,n);if(a==d){let g=l+=s?1:-1;if(g<0||g>=e.length)return null;c=e[l=g],a=c.side(!s,n),d=c.side(s,n)}let h=zs(t.text,a,c.forward(s,n));(hc.to)&&(h=d),HF=t.text.slice(Math.min(a,h),Math.max(a,h));let m=l==(s?e.length-1:0)?null:e[l+(s?1:-1)];return m&&h==d&&m.level+(s?0:1)t.some(e=>e)}),KF=at.define({combine:t=>t.some(e=>e)}),ZF=at.define();class zh{constructor(e,n="nearest",r="nearest",s=5,i=5,a=!1){this.range=e,this.y=n,this.x=r,this.yMargin=s,this.xMargin=i,this.isSnapshot=a}map(e){return e.empty?this:new zh(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new zh(Me.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}}const n1=Ft.define({map:(t,e)=>t.map(e)}),JF=Ft.define();function vi(t,e,n){let r=t.facet(WF);r.length?r[0](e):window.onerror&&window.onerror(String(e),n,void 0,void 0,e)||(n?console.error(n+":",e):console.error(e))}const El=at.define({combine:t=>t.length?t[0]:!0});let xoe=0;const Nh=at.define({combine(t){return t.filter((e,n)=>{for(let r=0;r{let c=[];return a&&c.push(H0.of(d=>{let h=d.plugin(l);return h?a(h):kt.none})),i&&c.push(i(l)),c})}static fromClass(e,n){return Vr.define((r,s)=>new e(r,s),n)}}class z4{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(e){if(this.value){if(this.mustUpdate){let n=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(n)}catch(r){if(vi(n.state,r,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg)}catch(n){vi(e.state,n,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var n;if(!((n=this.value)===null||n===void 0)&&n.destroy)try{this.value.destroy()}catch(r){vi(e.state,r,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const eq=at.define(),a6=at.define(),H0=at.define(),tq=at.define(),Qp=at.define(),nq=at.define();function OE(t,e){let n=t.state.facet(nq);if(!n.length)return n;let r=n.map(i=>i instanceof Function?i(t):i),s=[];return Rn.spans(r,e.from,e.to,{point(){},span(i,a,l,c){let d=i-e.from,h=a-e.from,m=s;for(let g=l.length-1;g>=0;g--,c--){let x=l[g].spec.bidiIsolate,y;if(x==null&&(x=goe(e.text,d,h)),c>0&&m.length&&(y=m[m.length-1]).to==d&&y.direction==x)y.to=h,m=y.inner;else{let w={from:d,to:h,direction:x,inner:[]};m.push(w),m=w.inner}}}}),s}const rq=at.define();function o6(t){let e=0,n=0,r=0,s=0;for(let i of t.state.facet(rq)){let a=i(t);a&&(a.left!=null&&(e=Math.max(e,a.left)),a.right!=null&&(n=Math.max(n,a.right)),a.top!=null&&(r=Math.max(r,a.top)),a.bottom!=null&&(s=Math.max(s,a.bottom)))}return{left:e,right:n,top:r,bottom:s}}const o0=at.define();class Na{constructor(e,n,r,s){this.fromA=e,this.toA=n,this.fromB=r,this.toB=s}join(e){return new Na(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let n=e.length,r=this;for(;n>0;n--){let s=e[n-1];if(!(s.fromA>r.toA)){if(s.toAh)break;i+=2}if(!c)return r;new Na(c.fromA,c.toA,c.fromB,c.toB).addToSet(r),a=c.toA,l=c.toB}}}class Uv{constructor(e,n,r){this.view=e,this.state=n,this.transactions=r,this.flags=0,this.startState=e.state,this.changes=us.empty(this.startState.doc.length);for(let i of r)this.changes=this.changes.compose(i.changes);let s=[];this.changes.iterChangedRanges((i,a,l,c)=>s.push(new Na(i,a,l,c))),this.changedRanges=s}static create(e,n,r){return new Uv(e,n,r)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}}class jE extends er{get length(){return this.view.state.doc.length}constructor(e){super(),this.view=e,this.decorations=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.markedForComposition=new Set,this.editContextFormatting=kt.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(e.contentDOM),this.children=[new es],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new Na(0,0,0,e.state.doc.length)],0,null)}update(e){var n;let r=e.changedRanges;this.minWidth>0&&r.length&&(r.every(({fromA:d,toA:h})=>hthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((n=this.domChanged)===null||n===void 0)&&n.newSel?s=this.domChanged.newSel.head:!Ooe(e.changes,this.hasComposition)&&!e.selectionSet&&(s=e.state.selection.main.head));let i=s>-1?yoe(this.view,e.changes,s):null;if(this.domChanged=null,this.hasComposition){this.markedForComposition.clear();let{from:d,to:h}=this.hasComposition;r=new Na(d,h,e.changes.mapPos(d,-1),e.changes.mapPos(h,1)).addToSet(r.slice())}this.hasComposition=i?{from:i.range.fromB,to:i.range.toB}:null,(et.ie||et.chrome)&&!i&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let a=this.decorations,l=this.updateDeco(),c=Soe(a,l,e.changes);return r=Na.extendWithRanges(r,c),!(this.flags&7)&&r.length==0?!1:(this.updateInner(r,e.startState.doc.length,i),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,n,r){this.view.viewState.mustMeasureContent=!0,this.updateChildren(e,n,r);let{observer:s}=this.view;s.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let a=et.chrome||et.ios?{node:s.selectionRange.focusNode,written:!1}:void 0;this.sync(this.view,a),this.flags&=-8,a&&(a.written||s.selectionRange.focusNode!=a.node)&&(this.forceSelection=!0),this.dom.style.height=""}),this.markedForComposition.forEach(a=>a.flags&=-9);let i=[];if(this.view.viewport.from||this.view.viewport.to=0?s[a]:null;if(!l)break;let{fromA:c,toA:d,fromB:h,toB:m}=l,g,x,y,w;if(r&&r.range.fromBh){let T=k0.build(this.view.state.doc,h,r.range.fromB,this.decorations,this.dynamicDecorationMap),E=k0.build(this.view.state.doc,r.range.toB,m,this.decorations,this.dynamicDecorationMap);x=T.breakAtStart,y=T.openStart,w=E.openEnd;let _=this.compositionView(r);E.breakAtStart?_.breakAfter=1:E.content.length&&_.merge(_.length,_.length,E.content[0],!1,E.openStart,0)&&(_.breakAfter=E.content[0].breakAfter,E.content.shift()),T.content.length&&_.merge(0,0,T.content[T.content.length-1],!0,0,T.openEnd)&&T.content.pop(),g=T.content.concat(_).concat(E.content)}else({content:g,breakAtStart:x,openStart:y,openEnd:w}=k0.build(this.view.state.doc,h,m,this.decorations,this.dynamicDecorationMap));let{i:S,off:k}=i.findPos(d,1),{i:j,off:N}=i.findPos(c,-1);RF(this,j,N,S,k,g,x,y,w)}r&&this.fixCompositionDOM(r)}updateEditContextFormatting(e){this.editContextFormatting=this.editContextFormatting.map(e.changes);for(let n of e.transactions)for(let r of n.effects)r.is(JF)&&(this.editContextFormatting=r.value)}compositionView(e){let n=new Ya(e.text.nodeValue);n.flags|=8;for(let{deco:s}of e.marks)n=new $l(s,[n],n.length);let r=new es;return r.append(n,0),r}fixCompositionDOM(e){let n=(i,a)=>{a.flags|=8|(a.children.some(c=>c.flags&7)?1:0),this.markedForComposition.add(a);let l=er.get(i);l&&l!=a&&(l.dom=null),a.setDOM(i)},r=this.childPos(e.range.fromB,1),s=this.children[r.i];n(e.line,s);for(let i=e.marks.length-1;i>=-1;i--)r=s.childPos(r.off,1),s=s.children[r.i],n(i>=0?e.marks[i].node:e.text,s)}updateSelection(e=!1,n=!1){(e||!this.view.observer.selectionRange.focusNode)&&this.view.observer.readSelectionRange();let r=this.view.root.activeElement,s=r==this.dom,i=!s&&!(this.view.state.facet(El)||this.dom.tabIndex>-1)&&lv(this.dom,this.view.observer.selectionRange)&&!(r&&this.dom.contains(r));if(!(s||n||i))return;let a=this.forceSelection;this.forceSelection=!1;let l=this.view.state.selection.main,c=this.moveToLine(this.domAtPos(l.anchor)),d=l.empty?c:this.moveToLine(this.domAtPos(l.head));if(et.gecko&&l.empty&&!this.hasComposition&&voe(c)){let m=document.createTextNode("");this.view.observer.ignore(()=>c.node.insertBefore(m,c.node.childNodes[c.offset]||null)),c=d=new Qs(m,0),a=!0}let h=this.view.observer.selectionRange;(a||!h.focusNode||(!S0(c.node,c.offset,h.anchorNode,h.anchorOffset)||!S0(d.node,d.offset,h.focusNode,h.focusOffset))&&!this.suppressWidgetCursorChange(h,l))&&(this.view.observer.ignore(()=>{et.android&&et.chrome&&this.dom.contains(h.focusNode)&&koe(h.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let m=$0(this.view.root);if(m)if(l.empty){if(et.gecko){let g=boe(c.node,c.offset);if(g&&g!=3){let x=(g==1?_F:AF)(c.node,c.offset);x&&(c=new Qs(x.node,x.offset))}}m.collapse(c.node,c.offset),l.bidiLevel!=null&&m.caretBidiLevel!==void 0&&(m.caretBidiLevel=l.bidiLevel)}else if(m.extend){m.collapse(c.node,c.offset);try{m.extend(d.node,d.offset)}catch{}}else{let g=document.createRange();l.anchor>l.head&&([c,d]=[d,c]),g.setEnd(d.node,d.offset),g.setStart(c.node,c.offset),m.removeAllRanges(),m.addRange(g)}i&&this.view.root.activeElement==this.dom&&(this.dom.blur(),r&&r.focus())}),this.view.observer.setSelectionRange(c,d)),this.impreciseAnchor=c.precise?null:new Qs(h.anchorNode,h.anchorOffset),this.impreciseHead=d.precise?null:new Qs(h.focusNode,h.focusOffset)}suppressWidgetCursorChange(e,n){return this.hasComposition&&n.empty&&S0(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==n.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,n=e.state.selection.main,r=$0(e.root),{anchorNode:s,anchorOffset:i}=e.observer.selectionRange;if(!r||!n.empty||!n.assoc||!r.modify)return;let a=es.find(this,n.head);if(!a)return;let l=a.posAtStart;if(n.head==l||n.head==l+a.length)return;let c=this.coordsAt(n.head,-1),d=this.coordsAt(n.head,1);if(!c||!d||c.bottom>d.top)return;let h=this.domAtPos(n.head+n.assoc);r.collapse(h.node,h.offset),r.modify("move",n.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let m=e.observer.selectionRange;e.docView.posFromDOM(m.anchorNode,m.anchorOffset)!=n.from&&r.collapse(s,i)}moveToLine(e){let n=this.dom,r;if(e.node!=n)return e;for(let s=e.offset;!r&&s=0;s--){let i=er.get(n.childNodes[s]);i instanceof es&&(r=i.domAtPos(i.length))}return r?new Qs(r.node,r.offset,!0):e}nearest(e){for(let n=e;n;){let r=er.get(n);if(r&&r.rootView==this)return r;n=n.parentNode}return null}posFromDOM(e,n){let r=this.nearest(e);if(!r)throw new RangeError("Trying to find position for a DOM position outside of the document");return r.localPosFromDOM(e,n)+r.posAtStart}domAtPos(e){let{i:n,off:r}=this.childCursor().findPos(e,-1);for(;n=0;a--){let l=this.children[a],c=i-l.breakAfter,d=c-l.length;if(ce||l.covers(1))&&(!r||l instanceof es&&!(r instanceof es&&n>=0)))r=l,s=d;else if(r&&d==e&&c==e&&l instanceof Il&&Math.abs(n)<2){if(l.deco.startSide<0)break;a&&(r=null)}i=d}return r?r.coordsAt(e-s,n):null}coordsForChar(e){let{i:n,off:r}=this.childPos(e,1),s=this.children[n];if(!(s instanceof es))return null;for(;s.children.length;){let{i:l,off:c}=s.childPos(r,1);for(;;l++){if(l==s.children.length)return null;if((s=s.children[l]).length)break}r=c}if(!(s instanceof Ya))return null;let i=zs(s.text,r);if(i==r)return null;let a=ad(s.dom,r,i).getClientRects();for(let l=0;lMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,c=this.view.textDirection==gr.LTR;for(let d=0,h=0;hs)break;if(d>=r){let x=m.dom.getBoundingClientRect();if(n.push(x.height),a){let y=m.dom.lastChild,w=y?Jh(y):[];if(w.length){let S=w[w.length-1],k=c?S.right-x.left:x.right-S.left;k>l&&(l=k,this.minWidth=i,this.minWidthFrom=d,this.minWidthTo=g)}}}d=g+m.breakAfter}return n}textDirectionAt(e){let{i:n}=this.childPos(e,1);return getComputedStyle(this.children[n].dom).direction=="rtl"?gr.RTL:gr.LTR}measureTextSize(){for(let i of this.children)if(i instanceof es){let a=i.measureTextSize();if(a)return a}let e=document.createElement("div"),n,r,s;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.dom.appendChild(e);let i=Jh(e.firstChild)[0];n=e.getBoundingClientRect().height,r=i?i.width/27:7,s=i?i.height:n,e.remove()}),{lineHeight:n,charWidth:r,textHeight:s}}childCursor(e=this.length){let n=this.children.length;return n&&(e-=this.children[--n].length),new MF(this.children,e,n)}computeBlockGapDeco(){let e=[],n=this.view.viewState;for(let r=0,s=0;;s++){let i=s==n.viewports.length?null:n.viewports[s],a=i?i.from-1:this.length;if(a>r){let l=(n.lineBlockAt(a).bottom-n.lineBlockAt(r).top)/this.view.scaleY;e.push(kt.replace({widget:new Fk(l),block:!0,inclusive:!0,isBlockGap:!0}).range(r,a))}if(!i)break;r=i.to+1}return kt.set(e)}updateDeco(){let e=1,n=this.view.state.facet(H0).map(i=>(this.dynamicDecorationMap[e++]=typeof i=="function")?i(this.view):i),r=!1,s=this.view.state.facet(tq).map((i,a)=>{let l=typeof i=="function";return l&&(r=!0),l?i(this.view):i});for(s.length&&(this.dynamicDecorationMap[e++]=r,n.push(Rn.join(s))),this.decorations=[this.editContextFormatting,...n,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];en.anchor?-1:1),s;if(!r)return;!n.empty&&(s=this.coordsAt(n.anchor,n.anchor>n.head?-1:1))&&(r={left:Math.min(r.left,s.left),top:Math.min(r.top,s.top),right:Math.max(r.right,s.right),bottom:Math.max(r.bottom,s.bottom)});let i=o6(this.view),a={left:r.left-i.left,top:r.top-i.top,right:r.right+i.right,bottom:r.bottom+i.bottom},{offsetWidth:l,offsetHeight:c}=this.view.scrollDOM;Kae(this.view.scrollDOM,a,n.heads instanceof Al||s.children.some(r);return r(this.children[n])}}function voe(t){return t.node.nodeType==1&&t.node.firstChild&&(t.offset==0||t.node.childNodes[t.offset-1].contentEditable=="false")&&(t.offset==t.node.childNodes.length||t.node.childNodes[t.offset].contentEditable=="false")}function sq(t,e){let n=t.observer.selectionRange;if(!n.focusNode)return null;let r=_F(n.focusNode,n.focusOffset),s=AF(n.focusNode,n.focusOffset),i=r||s;if(s&&r&&s.node!=r.node){let l=er.get(s.node);if(!l||l instanceof Ya&&l.text!=s.node.nodeValue)i=s;else if(t.docView.lastCompositionAfterCursor){let c=er.get(r.node);!c||c instanceof Ya&&c.text!=r.node.nodeValue||(i=s)}}if(t.docView.lastCompositionAfterCursor=i!=r,!i)return null;let a=e-i.offset;return{from:a,to:a+i.node.nodeValue.length,node:i.node}}function yoe(t,e,n){let r=sq(t,n);if(!r)return null;let{node:s,from:i,to:a}=r,l=s.nodeValue;if(/[\n\r]/.test(l)||t.state.doc.sliceString(r.from,r.to)!=l)return null;let c=e.invertedDesc,d=new Na(c.mapPos(i),c.mapPos(a),i,a),h=[];for(let m=s.parentNode;;m=m.parentNode){let g=er.get(m);if(g instanceof $l)h.push({node:m,deco:g.mark});else{if(g instanceof es||m.nodeName=="DIV"&&m.parentNode==t.contentDOM)return{range:d,text:s,marks:h,line:m};if(m!=t.contentDOM)h.push({node:m,deco:new $p({inclusive:!0,attributes:aoe(m),tagName:m.tagName.toLowerCase()})});else return null}}}function boe(t,e){return t.nodeType!=1?0:(e&&t.childNodes[e-1].contentEditable=="false"?1:0)|(e{re.from&&(n=!0)}),n}function joe(t,e,n=1){let r=t.charCategorizer(e),s=t.doc.lineAt(e),i=e-s.from;if(s.length==0)return Me.cursor(e);i==0?n=1:i==s.length&&(n=-1);let a=i,l=i;n<0?a=zs(s.text,i,!1):l=zs(s.text,i);let c=r(s.text.slice(a,l));for(;a>0;){let d=zs(s.text,a,!1);if(r(s.text.slice(d,a))!=c)break;a=d}for(;lt?e.left-t:Math.max(0,t-e.right)}function Coe(t,e){return e.top>t?e.top-t:Math.max(0,t-e.bottom)}function I4(t,e){return t.tope.top+1}function NE(t,e){return et.bottom?{top:t.top,left:t.left,right:t.right,bottom:e}:t}function Vk(t,e,n){let r,s,i,a,l=!1,c,d,h,m;for(let y=t.firstChild;y;y=y.nextSibling){let w=Jh(y);for(let S=0;SN||a==N&&i>j)&&(r=y,s=k,i=j,a=N,l=j?e0:Sk.bottom&&(!h||h.bottomk.top)&&(d=y,m=k):h&&I4(h,k)?h=CE(h,k.bottom):m&&I4(m,k)&&(m=NE(m,k.top))}}if(h&&h.bottom>=n?(r=c,s=h):m&&m.top<=n&&(r=d,s=m),!r)return{node:t,offset:0};let g=Math.max(s.left,Math.min(s.right,e));if(r.nodeType==3)return TE(r,g,n);if(l&&r.contentEditable!="false")return Vk(r,g,n);let x=Array.prototype.indexOf.call(t.childNodes,r)+(e>=(s.left+s.right)/2?1:0);return{node:t,offset:x}}function TE(t,e,n){let r=t.nodeValue.length,s=-1,i=1e9,a=0;for(let l=0;ln?h.top-n:n-h.bottom)-1;if(h.left-1<=e&&h.right+1>=e&&m=(h.left+h.right)/2,x=g;if(et.chrome||et.gecko){let y=ad(t,l).getBoundingClientRect();Math.abs(y.left-h.right)<.1&&(x=!g)}if(m<=0)return{node:t,offset:l+(x?1:0)};s=l+(x?1:0),i=m}}}return{node:t,offset:s>-1?s:a>0?t.nodeValue.length:0}}function iq(t,e,n,r=-1){var s,i;let a=t.contentDOM.getBoundingClientRect(),l=a.top+t.viewState.paddingTop,c,{docHeight:d}=t.viewState,{x:h,y:m}=e,g=m-l;if(g<0)return 0;if(g>d)return t.state.doc.length;for(let T=t.viewState.heightOracle.textHeight/2,E=!1;c=t.elementAtHeight(g),c.type!=ni.Text;)for(;g=r>0?c.bottom+T:c.top-T,!(g>=0&&g<=d);){if(E)return n?null:0;E=!0,r=-r}m=l+g;let x=c.from;if(xt.viewport.to)return t.viewport.to==t.state.doc.length?t.state.doc.length:n?null:EE(t,a,c,h,m);let y=t.dom.ownerDocument,w=t.root.elementFromPoint?t.root:y,S=w.elementFromPoint(h,m);S&&!t.contentDOM.contains(S)&&(S=null),S||(h=Math.max(a.left+1,Math.min(a.right-1,h)),S=w.elementFromPoint(h,m),S&&!t.contentDOM.contains(S)&&(S=null));let k,j=-1;if(S&&((s=t.docView.nearest(S))===null||s===void 0?void 0:s.isEditable)!=!1){if(y.caretPositionFromPoint){let T=y.caretPositionFromPoint(h,m);T&&({offsetNode:k,offset:j}=T)}else if(y.caretRangeFromPoint){let T=y.caretRangeFromPoint(h,m);T&&({startContainer:k,startOffset:j}=T)}k&&(!t.contentDOM.contains(k)||et.safari&&Toe(k,j,h)||et.chrome&&Eoe(k,j,h))&&(k=void 0),k&&(j=Math.min(Lo(k),j))}if(!k||!t.docView.dom.contains(k)){let T=es.find(t.docView,x);if(!T)return g>c.top+c.height/2?c.to:c.from;({node:k,offset:j}=Vk(T.dom,h,m))}let N=t.docView.nearest(k);if(!N)return null;if(N.isWidget&&((i=N.dom)===null||i===void 0?void 0:i.nodeType)==1){let T=N.dom.getBoundingClientRect();return e.yt.defaultLineHeight*1.5){let l=t.viewState.heightOracle.textHeight,c=Math.floor((s-n.top-(t.defaultLineHeight-l)*.5)/l);i+=c*t.viewState.heightOracle.lineLength}let a=t.state.sliceDoc(n.from,n.to);return n.from+_k(a,i,t.state.tabSize)}function aq(t,e,n){let r,s=t;if(t.nodeType!=3||e!=(r=t.nodeValue.length))return!1;for(;;){let i=s.nextSibling;if(i){if(i.nodeName=="BR")break;return!1}else{let a=s.parentNode;if(!a||a.nodeName=="DIV")break;s=a}}return ad(t,r-1,r).getBoundingClientRect().right>n}function Toe(t,e,n){return aq(t,e,n)}function Eoe(t,e,n){if(e!=0)return aq(t,e,n);for(let s=t;;){let i=s.parentNode;if(!i||i.nodeType!=1||i.firstChild!=s)return!1;if(i.classList.contains("cm-line"))break;s=i}let r=t.nodeType==1?t.getBoundingClientRect():ad(t,0,Math.max(t.nodeValue.length,1)).getBoundingClientRect();return n-r.left>5}function Uk(t,e,n){let r=t.lineBlockAt(e);if(Array.isArray(r.type)){let s;for(let i of r.type){if(i.from>e)break;if(!(i.toe)return i;(!s||i.type==ni.Text&&(s.type!=i.type||(n<0?i.frome)))&&(s=i)}}return s||r}return r}function _oe(t,e,n,r){let s=Uk(t,e.head,e.assoc||-1),i=!r||s.type!=ni.Text||!(t.lineWrapping||s.widgetLineBreaks)?null:t.coordsAtPos(e.assoc<0&&e.head>s.from?e.head-1:e.head);if(i){let a=t.dom.getBoundingClientRect(),l=t.textDirectionAt(s.from),c=t.posAtCoords({x:n==(l==gr.LTR)?a.right-1:a.left+1,y:(i.top+i.bottom)/2});if(c!=null)return Me.cursor(c,n?-1:1)}return Me.cursor(n?s.to:s.from,n?-1:1)}function _E(t,e,n,r){let s=t.state.doc.lineAt(e.head),i=t.bidiSpans(s),a=t.textDirectionAt(s.from);for(let l=e,c=null;;){let d=poe(s,i,a,l,n),h=HF;if(!d){if(s.number==(n?t.state.doc.lines:1))return l;h=` -`,s=t.state.doc.line(s.number+(n?1:-1)),i=t.bidiSpans(s),d=t.visualLineSide(s,!n)}if(c){if(!c(h))return l}else{if(!r)return d;c=r(h)}l=d}}function Aoe(t,e,n){let r=t.state.charCategorizer(e),s=r(n);return i=>{let a=r(i);return s==wr.Space&&(s=a),s==a}}function Moe(t,e,n,r){let s=e.head,i=n?1:-1;if(s==(n?t.state.doc.length:0))return Me.cursor(s,e.assoc);let a=e.goalColumn,l,c=t.contentDOM.getBoundingClientRect(),d=t.coordsAtPos(s,e.assoc||-1),h=t.documentTop;if(d)a==null&&(a=d.left-c.left),l=i<0?d.top:d.bottom;else{let x=t.viewState.lineBlockAt(s);a==null&&(a=Math.min(c.right-c.left,t.defaultCharacterWidth*(s-x.from))),l=(i<0?x.top:x.bottom)+h}let m=c.left+a,g=r??t.viewState.heightOracle.textHeight>>1;for(let x=0;;x+=10){let y=l+(g+x)*i,w=iq(t,{x:m,y},!1,i);if(yc.bottom||(i<0?ws)){let S=t.docView.coordsForChar(w),k=!S||y{if(e>i&&es(t)),n.from,e.head>n.from?-1:1);return r==n.from?n:Me.cursor(r,ri)&&!Poe(a,n)&&this.lineBreak(),s=a}return this.findPointBefore(r,n),this}readTextNode(e){let n=e.nodeValue;for(let r of this.points)r.node==e&&(r.pos=this.text.length+Math.min(r.offset,n.length));for(let r=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let i=-1,a=1,l;if(this.lineSeparator?(i=n.indexOf(this.lineSeparator,r),a=this.lineSeparator.length):(l=s.exec(n))&&(i=l.index,a=l[0].length),this.append(n.slice(r,i<0?n.length:i)),i<0)break;if(this.lineBreak(),a>1)for(let c of this.points)c.node==e&&c.pos>this.text.length&&(c.pos-=a-1);r=i+a}}readNode(e){if(e.cmIgnore)return;let n=er.get(e),r=n&&n.overrideDOMText;if(r!=null){this.findPointInside(e,r.length);for(let s=r.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,n){for(let r of this.points)r.node==e&&e.childNodes[r.offset]==n&&(r.pos=this.text.length)}findPointInside(e,n){for(let r of this.points)(e.nodeType==3?r.node==e:e.contains(r.node))&&(r.pos=this.text.length+(Doe(e,r.node,r.offset)?n:0))}}function Doe(t,e,n){for(;;){if(!e||n-1;let{impreciseHead:i,impreciseAnchor:a}=e.docView;if(e.state.readOnly&&n>-1)this.newSel=null;else if(n>-1&&(this.bounds=e.docView.domBoundsAround(n,r,0))){let l=i||a?[]:Loe(e),c=new Roe(l,e.state);c.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=c.text,this.newSel=Boe(l,this.bounds.from)}else{let l=e.observer.selectionRange,c=i&&i.node==l.focusNode&&i.offset==l.focusOffset||!Ik(e.contentDOM,l.focusNode)?e.state.selection.main.head:e.docView.posFromDOM(l.focusNode,l.focusOffset),d=a&&a.node==l.anchorNode&&a.offset==l.anchorOffset||!Ik(e.contentDOM,l.anchorNode)?e.state.selection.main.anchor:e.docView.posFromDOM(l.anchorNode,l.anchorOffset),h=e.viewport;if((et.ios||et.chrome)&&e.state.selection.main.empty&&c!=d&&(h.from>0||h.to-1&&e.state.selection.ranges.length>1?this.newSel=e.state.selection.replaceRange(Me.range(d,c)):this.newSel=Me.single(d,c)}}}function lq(t,e){let n,{newSel:r}=e,s=t.state.selection.main,i=t.inputState.lastKeyTime>Date.now()-100?t.inputState.lastKeyCode:-1;if(e.bounds){let{from:a,to:l}=e.bounds,c=s.from,d=null;(i===8||et.android&&e.text.length=s.from&&n.to<=s.to&&(n.from!=s.from||n.to!=s.to)&&s.to-s.from-(n.to-n.from)<=4?n={from:s.from,to:s.to,insert:t.state.doc.slice(s.from,n.from).append(n.insert).append(t.state.doc.slice(n.to,s.to))}:t.state.doc.lineAt(s.from).toDate.now()-50?n={from:s.from,to:s.to,insert:t.state.toText(t.inputState.insertingText)}:et.chrome&&n&&n.from==n.to&&n.from==s.head&&n.insert.toString()==` - `&&t.lineWrapping&&(r&&(r=Me.single(r.main.anchor-1,r.main.head-1)),n={from:s.from,to:s.to,insert:jn.of([" "])}),n)return l6(t,n,r,i);if(r&&!r.main.eq(s)){let a=!1,l="select";return t.inputState.lastSelectionTime>Date.now()-50&&(t.inputState.lastSelectionOrigin=="select"&&(a=!0),l=t.inputState.lastSelectionOrigin,l=="select.pointer"&&(r=oq(t.state.facet(Qp).map(c=>c(t)),r))),t.dispatch({selection:r,scrollIntoView:a,userEvent:l}),!0}else return!1}function l6(t,e,n,r=-1){if(et.ios&&t.inputState.flushIOSKey(e))return!0;let s=t.state.selection.main;if(et.android&&(e.to==s.to&&(e.from==s.from||e.from==s.from-1&&t.state.sliceDoc(e.from,s.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&Ph(t.contentDOM,"Enter",13)||(e.from==s.from-1&&e.to==s.to&&e.insert.length==0||r==8&&e.insert.lengths.head)&&Ph(t.contentDOM,"Backspace",8)||e.from==s.from&&e.to==s.to+1&&e.insert.length==0&&Ph(t.contentDOM,"Delete",46)))return!0;let i=e.insert.toString();t.inputState.composing>=0&&t.inputState.composing++;let a,l=()=>a||(a=Ioe(t,e,n));return t.state.facet(GF).some(c=>c(t,e.from,e.to,i,l))||t.dispatch(l()),!0}function Ioe(t,e,n){let r,s=t.state,i=s.selection.main,a=-1;if(e.from==e.to&&e.fromi.to){let c=e.fromm(t)),d,c);e.from==h&&(a=h)}if(a>-1)r={changes:e,selection:Me.cursor(e.from+e.insert.length,-1)};else if(e.from>=i.from&&e.to<=i.to&&e.to-e.from>=(i.to-i.from)/3&&(!n||n.main.empty&&n.main.from==e.from+e.insert.length)&&t.inputState.composing<0){let c=i.frome.to?s.sliceDoc(e.to,i.to):"";r=s.replaceSelection(t.state.toText(c+e.insert.sliceString(0,void 0,t.state.lineBreak)+d))}else{let c=s.changes(e),d=n&&n.main.to<=c.newLength?n.main:void 0;if(s.selection.ranges.length>1&&(t.inputState.composing>=0||t.inputState.compositionPendingChange)&&e.to<=i.to+10&&e.to>=i.to-10){let h=t.state.sliceDoc(e.from,e.to),m,g=n&&sq(t,n.main.head);if(g){let y=e.insert.length-(e.to-e.from);m={from:g.from,to:g.to-y}}else m=t.state.doc.lineAt(i.head);let x=i.to-e.to;r=s.changeByRange(y=>{if(y.from==i.from&&y.to==i.to)return{changes:c,range:d||y.map(c)};let w=y.to-x,S=w-h.length;if(t.state.sliceDoc(S,w)!=h||w>=m.from&&S<=m.to)return{range:y};let k=s.changes({from:S,to:w,insert:e.insert}),j=y.to-i.to;return{changes:k,range:d?Me.range(Math.max(0,d.anchor+j),Math.max(0,d.head+j)):y.map(k)}})}else r={changes:c,selection:d&&s.selection.replaceRange(d)}}let l="input.type";return(t.composing||t.inputState.compositionPendingChange&&t.inputState.compositionEndedAt>Date.now()-50)&&(t.inputState.compositionPendingChange=!1,l+=".compose",t.inputState.compositionFirstChange&&(l+=".start",t.inputState.compositionFirstChange=!1)),s.update(r,{userEvent:l,scrollIntoView:!0})}function cq(t,e,n,r){let s=Math.min(t.length,e.length),i=0;for(;i0&&l>0&&t.charCodeAt(a-1)==e.charCodeAt(l-1);)a--,l--;if(r=="end"){let c=Math.max(0,i-Math.min(a,l));n-=a+c-i}if(a=a?i-n:0;i-=c,l=i+(l-a),a=i}else if(l=l?i-n:0;i-=c,a=i+(a-l),l=i}return{from:i,toA:a,toB:l}}function Loe(t){let e=[];if(t.root.activeElement!=t.contentDOM)return e;let{anchorNode:n,anchorOffset:r,focusNode:s,focusOffset:i}=t.observer.selectionRange;return n&&(e.push(new AE(n,r)),(s!=n||i!=r)&&e.push(new AE(s,i))),e}function Boe(t,e){if(t.length==0)return null;let n=t[0].pos,r=t.length==2?t[1].pos:n;return n>-1&&r>-1?Me.single(n+e,r+e):null}class Foe{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,et.safari&&e.contentDOM.addEventListener("input",()=>null),et.gecko&&nle(e.contentDOM.ownerDocument)}handleEvent(e){!Goe(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,n){let r=this.handlers[e];if(r){for(let s of r.observers)s(this.view,n);for(let s of r.handlers){if(n.defaultPrevented)break;if(s(this.view,n)){n.preventDefault();break}}}}ensureHandlers(e){let n=qoe(e),r=this.handlers,s=this.view.contentDOM;for(let i in n)if(i!="scroll"){let a=!n[i].handlers.length,l=r[i];l&&a!=!l.handlers.length&&(s.removeEventListener(i,this.handleEvent),l=null),l||s.addEventListener(i,this.handleEvent,{passive:a})}for(let i in r)i!="scroll"&&!n[i]&&s.removeEventListener(i,this.handleEvent);this.handlers=n}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&dq.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),et.android&&et.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;let n;return et.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&((n=uq.find(r=>r.keyCode==e.keyCode))&&!e.ctrlKey||$oe.indexOf(e.key)>-1&&e.ctrlKey&&!e.shiftKey)?(this.pendingIOSKey=n||e,setTimeout(()=>this.flushIOSKey(),250),!0):(e.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(e){let n=this.pendingIOSKey;return!n||n.key=="Enter"&&e&&e.from0?!0:et.safari&&!et.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}function ME(t,e){return(n,r)=>{try{return e.call(t,r,n)}catch(s){vi(n.state,s)}}}function qoe(t){let e=Object.create(null);function n(r){return e[r]||(e[r]={observers:[],handlers:[]})}for(let r of t){let s=r.spec,i=s&&s.plugin.domEventHandlers,a=s&&s.plugin.domEventObservers;if(i)for(let l in i){let c=i[l];c&&n(l).handlers.push(ME(r.value,c))}if(a)for(let l in a){let c=a[l];c&&n(l).observers.push(ME(r.value,c))}}for(let r in Ka)n(r).handlers.push(Ka[r]);for(let r in _a)n(r).observers.push(_a[r]);return e}const uq=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],$oe="dthko",dq=[16,17,18,20,91,92,224,225],r1=6;function s1(t){return Math.max(0,t)*.7+8}function Hoe(t,e){return Math.max(Math.abs(t.clientX-e.clientX),Math.abs(t.clientY-e.clientY))}class Qoe{constructor(e,n,r,s){this.view=e,this.startEvent=n,this.style=r,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=n,this.scrollParents=Zae(e.contentDOM),this.atoms=e.state.facet(Qp).map(a=>a(e));let i=e.contentDOM.ownerDocument;i.addEventListener("mousemove",this.move=this.move.bind(this)),i.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=n.shiftKey,this.multiple=e.state.facet(wn.allowMultipleSelections)&&Voe(e,n),this.dragging=Woe(e,n)&&mq(n)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Hoe(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let n=0,r=0,s=0,i=0,a=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:a}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:i,bottom:l}=this.scrollParents.y.getBoundingClientRect());let c=o6(this.view);e.clientX-c.left<=s+r1?n=-s1(s-e.clientX):e.clientX+c.right>=a-r1&&(n=s1(e.clientX-a)),e.clientY-c.top<=i+r1?r=-s1(i-e.clientY):e.clientY+c.bottom>=l-r1&&(r=s1(e.clientY-l)),this.setScrollSpeed(n,r)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,n){this.scrollSpeed={x:e,y:n},e||n?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:n}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),n&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=n,n=0),(e||n)&&this.view.win.scrollBy(e,n),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:n}=this,r=oq(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!r.eq(n.state.selection,this.dragging===!1))&&this.view.dispatch({selection:r,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){e.transactions.some(n=>n.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}}function Voe(t,e){let n=t.state.facet(QF);return n.length?n[0](e):et.mac?e.metaKey:e.ctrlKey}function Uoe(t,e){let n=t.state.facet(VF);return n.length?n[0](e):et.mac?!e.altKey:!e.ctrlKey}function Woe(t,e){let{main:n}=t.state.selection;if(n.empty)return!1;let r=$0(t.root);if(!r||r.rangeCount==0)return!0;let s=r.getRangeAt(0).getClientRects();for(let i=0;i=e.clientX&&a.top<=e.clientY&&a.bottom>=e.clientY)return!0}return!1}function Goe(t,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let n=e.target,r;n!=t.contentDOM;n=n.parentNode)if(!n||n.nodeType==11||(r=er.get(n))&&r.ignoreEvent(e))return!1;return!0}const Ka=Object.create(null),_a=Object.create(null),hq=et.ie&&et.ie_version<15||et.ios&&et.webkit_version<604;function Xoe(t){let e=t.dom.parentNode;if(!e)return;let n=e.appendChild(document.createElement("textarea"));n.style.cssText="position: fixed; left: -10000px; top: 10px",n.focus(),setTimeout(()=>{t.focus(),n.remove(),fq(t,n.value)},50)}function ub(t,e,n){for(let r of t.facet(e))n=r(n,t);return n}function fq(t,e){e=ub(t.state,s6,e);let{state:n}=t,r,s=1,i=n.toText(e),a=i.lines==n.selection.ranges.length;if(Wk!=null&&n.selection.ranges.every(c=>c.empty)&&Wk==i.toString()){let c=-1;r=n.changeByRange(d=>{let h=n.doc.lineAt(d.from);if(h.from==c)return{range:d};c=h.from;let m=n.toText((a?i.line(s++).text:e)+n.lineBreak);return{changes:{from:h.from,insert:m},range:Me.cursor(d.from+m.length)}})}else a?r=n.changeByRange(c=>{let d=i.line(s++);return{changes:{from:c.from,to:c.to,insert:d.text},range:Me.cursor(c.from+d.length)}}):r=n.replaceSelection(i);t.dispatch(r,{userEvent:"input.paste",scrollIntoView:!0})}_a.scroll=t=>{t.inputState.lastScrollTop=t.scrollDOM.scrollTop,t.inputState.lastScrollLeft=t.scrollDOM.scrollLeft};Ka.keydown=(t,e)=>(t.inputState.setSelectionOrigin("select"),e.keyCode==27&&t.inputState.tabFocusMode!=0&&(t.inputState.tabFocusMode=Date.now()+2e3),!1);_a.touchstart=(t,e)=>{t.inputState.lastTouchTime=Date.now(),t.inputState.setSelectionOrigin("select.pointer")};_a.touchmove=t=>{t.inputState.setSelectionOrigin("select.pointer")};Ka.mousedown=(t,e)=>{if(t.observer.flush(),t.inputState.lastTouchTime>Date.now()-2e3)return!1;let n=null;for(let r of t.state.facet(UF))if(n=r(t,e),n)break;if(!n&&e.button==0&&(n=Zoe(t,e)),n){let r=!t.hasFocus;t.inputState.startMouseSelection(new Qoe(t,e,n,r)),r&&t.observer.ignore(()=>{CF(t.contentDOM);let i=t.root.activeElement;i&&!i.contains(t.contentDOM)&&i.blur()});let s=t.inputState.mouseSelection;if(s)return s.start(e),s.dragging===!1}else t.inputState.setSelectionOrigin("select.pointer");return!1};function RE(t,e,n,r){if(r==1)return Me.cursor(e,n);if(r==2)return joe(t.state,e,n);{let s=es.find(t.docView,e),i=t.state.doc.lineAt(s?s.posAtEnd:e),a=s?s.posAtStart:i.from,l=s?s.posAtEnd:i.to;return le>=n.top&&e<=n.bottom&&t>=n.left&&t<=n.right;function Yoe(t,e,n,r){let s=es.find(t.docView,e);if(!s)return 1;let i=e-s.posAtStart;if(i==0)return 1;if(i==s.length)return-1;let a=s.coordsAt(i,-1);if(a&&DE(n,r,a))return-1;let l=s.coordsAt(i,1);return l&&DE(n,r,l)?1:a&&a.bottom>=r?-1:1}function PE(t,e){let n=t.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:n,bias:Yoe(t,n,e.clientX,e.clientY)}}const Koe=et.ie&&et.ie_version<=11;let zE=null,IE=0,LE=0;function mq(t){if(!Koe)return t.detail;let e=zE,n=LE;return zE=t,LE=Date.now(),IE=!e||n>Date.now()-400&&Math.abs(e.clientX-t.clientX)<2&&Math.abs(e.clientY-t.clientY)<2?(IE+1)%3:1}function Zoe(t,e){let n=PE(t,e),r=mq(e),s=t.state.selection;return{update(i){i.docChanged&&(n.pos=i.changes.mapPos(n.pos),s=s.map(i.changes))},get(i,a,l){let c=PE(t,i),d,h=RE(t,c.pos,c.bias,r);if(n.pos!=c.pos&&!a){let m=RE(t,n.pos,n.bias,r),g=Math.min(m.from,h.from),x=Math.max(m.to,h.to);h=g1&&(d=Joe(s,c.pos))?d:l?s.addRange(h):Me.create([h])}}}function Joe(t,e){for(let n=0;n=e)return Me.create(t.ranges.slice(0,n).concat(t.ranges.slice(n+1)),t.mainIndex==n?0:t.mainIndex-(t.mainIndex>n?1:0))}return null}Ka.dragstart=(t,e)=>{let{selection:{main:n}}=t.state;if(e.target.draggable){let s=t.docView.nearest(e.target);if(s&&s.isWidget){let i=s.posAtStart,a=i+s.length;(i>=n.to||a<=n.from)&&(n=Me.range(i,a))}}let{inputState:r}=t;return r.mouseSelection&&(r.mouseSelection.dragging=!0),r.draggedContent=n,e.dataTransfer&&(e.dataTransfer.setData("Text",ub(t.state,i6,t.state.sliceDoc(n.from,n.to))),e.dataTransfer.effectAllowed="copyMove"),!1};Ka.dragend=t=>(t.inputState.draggedContent=null,!1);function BE(t,e,n,r){if(n=ub(t.state,s6,n),!n)return;let s=t.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:i}=t.inputState,a=r&&i&&Uoe(t,e)?{from:i.from,to:i.to}:null,l={from:s,insert:n},c=t.state.changes(a?[a,l]:l);t.focus(),t.dispatch({changes:c,selection:{anchor:c.mapPos(s,-1),head:c.mapPos(s,1)},userEvent:a?"move.drop":"input.drop"}),t.inputState.draggedContent=null}Ka.drop=(t,e)=>{if(!e.dataTransfer)return!1;if(t.state.readOnly)return!0;let n=e.dataTransfer.files;if(n&&n.length){let r=Array(n.length),s=0,i=()=>{++s==n.length&&BE(t,e,r.filter(a=>a!=null).join(t.state.lineBreak),!1)};for(let a=0;a{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(r[a]=l.result),i()},l.readAsText(n[a])}return!0}else{let r=e.dataTransfer.getData("Text");if(r)return BE(t,e,r,!0),!0}return!1};Ka.paste=(t,e)=>{if(t.state.readOnly)return!0;t.observer.flush();let n=hq?null:e.clipboardData;return n?(fq(t,n.getData("text/plain")||n.getData("text/uri-list")),!0):(Xoe(t),!1)};function ele(t,e){let n=t.dom.parentNode;if(!n)return;let r=n.appendChild(document.createElement("textarea"));r.style.cssText="position: fixed; left: -10000px; top: 10px",r.value=e,r.focus(),r.selectionEnd=e.length,r.selectionStart=0,setTimeout(()=>{r.remove(),t.focus()},50)}function tle(t){let e=[],n=[],r=!1;for(let s of t.selection.ranges)s.empty||(e.push(t.sliceDoc(s.from,s.to)),n.push(s));if(!e.length){let s=-1;for(let{from:i}of t.selection.ranges){let a=t.doc.lineAt(i);a.number>s&&(e.push(a.text),n.push({from:a.from,to:Math.min(t.doc.length,a.to+1)})),s=a.number}r=!0}return{text:ub(t,i6,e.join(t.lineBreak)),ranges:n,linewise:r}}let Wk=null;Ka.copy=Ka.cut=(t,e)=>{let{text:n,ranges:r,linewise:s}=tle(t.state);if(!n&&!s)return!1;Wk=s?n:null,e.type=="cut"&&!t.state.readOnly&&t.dispatch({changes:r,scrollIntoView:!0,userEvent:"delete.cut"});let i=hq?null:e.clipboardData;return i?(i.clearData(),i.setData("text/plain",n),!0):(ele(t,n),!1)};const pq=qo.define();function gq(t,e){let n=[];for(let r of t.facet(XF)){let s=r(t,e);s&&n.push(s)}return n.length?t.update({effects:n,annotations:pq.of(!0)}):null}function xq(t){setTimeout(()=>{let e=t.hasFocus;if(e!=t.inputState.notifiedFocused){let n=gq(t.state,e);n?t.dispatch(n):t.update([])}},10)}_a.focus=t=>{t.inputState.lastFocusTime=Date.now(),!t.scrollDOM.scrollTop&&(t.inputState.lastScrollTop||t.inputState.lastScrollLeft)&&(t.scrollDOM.scrollTop=t.inputState.lastScrollTop,t.scrollDOM.scrollLeft=t.inputState.lastScrollLeft),xq(t)};_a.blur=t=>{t.observer.clearSelectionRange(),xq(t)};_a.compositionstart=_a.compositionupdate=t=>{t.observer.editContext||(t.inputState.compositionFirstChange==null&&(t.inputState.compositionFirstChange=!0),t.inputState.composing<0&&(t.inputState.composing=0))};_a.compositionend=t=>{t.observer.editContext||(t.inputState.composing=-1,t.inputState.compositionEndedAt=Date.now(),t.inputState.compositionPendingKey=!0,t.inputState.compositionPendingChange=t.observer.pendingRecords().length>0,t.inputState.compositionFirstChange=null,et.chrome&&et.android?t.observer.flushSoon():t.inputState.compositionPendingChange?Promise.resolve().then(()=>t.observer.flush()):setTimeout(()=>{t.inputState.composing<0&&t.docView.hasComposition&&t.update([])},50))};_a.contextmenu=t=>{t.inputState.lastContextMenu=Date.now()};Ka.beforeinput=(t,e)=>{var n,r;if((e.inputType=="insertText"||e.inputType=="insertCompositionText")&&(t.inputState.insertingText=e.data,t.inputState.insertingTextAt=Date.now()),e.inputType=="insertReplacementText"&&t.observer.editContext){let i=(n=e.dataTransfer)===null||n===void 0?void 0:n.getData("text/plain"),a=e.getTargetRanges();if(i&&a.length){let l=a[0],c=t.posAtDOM(l.startContainer,l.startOffset),d=t.posAtDOM(l.endContainer,l.endOffset);return l6(t,{from:c,to:d,insert:t.state.toText(i)},null),!0}}let s;if(et.chrome&&et.android&&(s=uq.find(i=>i.inputType==e.inputType))&&(t.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let i=((r=window.visualViewport)===null||r===void 0?void 0:r.height)||0;setTimeout(()=>{var a;(((a=window.visualViewport)===null||a===void 0?void 0:a.height)||0)>i+10&&t.hasFocus&&(t.contentDOM.blur(),t.focus())},100)}return et.ios&&e.inputType=="deleteContentForward"&&t.observer.flushSoon(),et.safari&&e.inputType=="insertText"&&t.inputState.composing>=0&&setTimeout(()=>_a.compositionend(t,e),20),!1};const FE=new Set;function nle(t){FE.has(t)||(FE.add(t),t.addEventListener("copy",()=>{}),t.addEventListener("cut",()=>{}))}const qE=["pre-wrap","normal","pre-line","break-spaces"];let nf=!1;function $E(){nf=!1}class rle{constructor(e){this.lineWrapping=e,this.doc=jn.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,n){let r=this.doc.lineAt(n).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(r+=Math.max(0,Math.ceil((n-e-r*this.lineLength*.5)/this.lineLength))),this.lineHeight*r}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return qE.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let n=!1;for(let r=0;r-1,c=Math.round(n)!=Math.round(this.lineHeight)||this.lineWrapping!=l;if(this.lineWrapping=l,this.lineHeight=n,this.charWidth=r,this.textHeight=s,this.lineLength=i,c){this.heightSamples={};for(let d=0;d0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>uv&&(nf=!0),this.height=e)}replace(e,n,r){return ri.of(r)}decomposeLeft(e,n){n.push(this)}decomposeRight(e,n){n.push(this)}applyChanges(e,n,r,s){let i=this,a=r.doc;for(let l=s.length-1;l>=0;l--){let{fromA:c,toA:d,fromB:h,toB:m}=s[l],g=i.lineAt(c,pr.ByPosNoHeight,r.setDoc(n),0,0),x=g.to>=d?g:i.lineAt(d,pr.ByPosNoHeight,r,0,0);for(m+=x.to-d,d=x.to;l>0&&g.from<=s[l-1].toA;)c=s[l-1].fromA,h=s[l-1].fromB,l--,ci*2){let l=e[n-1];l.break?e.splice(--n,1,l.left,null,l.right):e.splice(--n,1,l.left,l.right),r+=1+l.break,s-=l.size}else if(i>s*2){let l=e[r];l.break?e.splice(r,1,l.left,null,l.right):e.splice(r,1,l.left,l.right),r+=2+l.break,i-=l.size}else break;else if(s=i&&a(this.blockAt(0,r,s,i))}updateHeight(e,n=0,r=!1,s){return s&&s.from<=n&&s.more&&this.setHeight(s.heights[s.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}}class $i extends vq{constructor(e,n){super(e,n,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0}blockAt(e,n,r,s){return new So(s,this.length,r,this.height,this.breaks)}replace(e,n,r){let s=r[0];return r.length==1&&(s instanceof $i||s instanceof As&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof As?s=new $i(s.length,this.height):s.height=this.height,this.outdated||(s.outdated=!1),s):ri.of(r)}updateHeight(e,n=0,r=!1,s){return s&&s.from<=n&&s.more?this.setHeight(s.heights[s.index++]):(r||this.outdated)&&this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class As extends ri{constructor(e){super(e,0)}heightMetrics(e,n){let r=e.doc.lineAt(n).number,s=e.doc.lineAt(n+this.length).number,i=s-r+1,a,l=0;if(e.lineWrapping){let c=Math.min(this.height,e.lineHeight*i);a=c/i,this.length>i+1&&(l=(this.height-c)/(this.length-i-1))}else a=this.height/i;return{firstLine:r,lastLine:s,perLine:a,perChar:l}}blockAt(e,n,r,s){let{firstLine:i,lastLine:a,perLine:l,perChar:c}=this.heightMetrics(n,s);if(n.lineWrapping){let d=s+(e0){let i=r[r.length-1];i instanceof As?r[r.length-1]=new As(i.length+s):r.push(null,new As(s-1))}if(e>0){let i=r[0];i instanceof As?r[0]=new As(e+i.length):r.unshift(new As(e-1),null)}return ri.of(r)}decomposeLeft(e,n){n.push(new As(e-1),null)}decomposeRight(e,n){n.push(null,new As(this.length-e-1))}updateHeight(e,n=0,r=!1,s){let i=n+this.length;if(s&&s.from<=n+this.length&&s.more){let a=[],l=Math.max(n,s.from),c=-1;for(s.from>n&&a.push(new As(s.from-n-1).updateHeight(e,n));l<=i&&s.more;){let h=e.doc.lineAt(l).length;a.length&&a.push(null);let m=s.heights[s.index++];c==-1?c=m:Math.abs(m-c)>=uv&&(c=-2);let g=new $i(h,m);g.outdated=!1,a.push(g),l+=h+1}l<=i&&a.push(null,new As(i-l).updateHeight(e,l));let d=ri.of(a);return(c<0||Math.abs(d.height-this.height)>=uv||Math.abs(c-this.heightMetrics(e,n).perLine)>=uv)&&(nf=!0),Wv(this,d)}else(r||this.outdated)&&(this.setHeight(e.heightForGap(n,n+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}}class ile extends ri{constructor(e,n,r){super(e.length+n+r.length,e.height+r.height,n|(e.outdated||r.outdated?2:0)),this.left=e,this.right=r,this.size=e.size+r.size}get break(){return this.flags&1}blockAt(e,n,r,s){let i=r+this.left.height;return el))return d;let h=n==pr.ByPosNoHeight?pr.ByPosNoHeight:pr.ByPos;return c?d.join(this.right.lineAt(l,h,r,a,l)):this.left.lineAt(l,h,r,s,i).join(d)}forEachLine(e,n,r,s,i,a){let l=s+this.left.height,c=i+this.left.length+this.break;if(this.break)e=c&&this.right.forEachLine(e,n,r,l,c,a);else{let d=this.lineAt(c,pr.ByPos,r,s,i);e=e&&d.from<=n&&a(d),n>d.to&&this.right.forEachLine(d.to+1,n,r,l,c,a)}}replace(e,n,r){let s=this.left.length+this.break;if(nthis.left.length)return this.balanced(this.left,this.right.replace(e-s,n-s,r));let i=[];e>0&&this.decomposeLeft(e,i);let a=i.length;for(let l of r)i.push(l);if(e>0&&HE(i,a-1),n=r&&n.push(null)),e>r&&this.right.decomposeLeft(e-r,n)}decomposeRight(e,n){let r=this.left.length,s=r+this.break;if(e>=s)return this.right.decomposeRight(e-s,n);e2*n.size||n.size>2*e.size?ri.of(this.break?[e,null,n]:[e,n]):(this.left=Wv(this.left,e),this.right=Wv(this.right,n),this.setHeight(e.height+n.height),this.outdated=e.outdated||n.outdated,this.size=e.size+n.size,this.length=e.length+this.break+n.length,this)}updateHeight(e,n=0,r=!1,s){let{left:i,right:a}=this,l=n+i.length+this.break,c=null;return s&&s.from<=n+i.length&&s.more?c=i=i.updateHeight(e,n,r,s):i.updateHeight(e,n,r),s&&s.from<=l+a.length&&s.more?c=a=a.updateHeight(e,l,r,s):a.updateHeight(e,l,r),c?this.balanced(i,a):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function HE(t,e){let n,r;t[e]==null&&(n=t[e-1])instanceof As&&(r=t[e+1])instanceof As&&t.splice(e-1,3,new As(n.length+1+r.length))}const ale=5;class c6{constructor(e,n){this.pos=e,this.oracle=n,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,n){if(this.lineStart>-1){let r=Math.min(n,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof $i?s.length+=r-this.pos:(r>this.pos||!this.isCovered)&&this.nodes.push(new $i(r-this.pos,-1)),this.writtenTo=r,n>r&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=n}point(e,n,r){if(e=ale)&&this.addLineDeco(s,i,a)}else n>e&&this.span(e,n);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:n}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=n,this.writtenToe&&this.nodes.push(new $i(this.pos-e,-1)),this.writtenTo=this.pos}blankContent(e,n){let r=new As(n-e);return this.oracle.doc.lineAt(e).to==n&&(r.flags|=4),r}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof $i)return e;let n=new $i(0,-1);return this.nodes.push(n),n}addBlock(e){this.enterLine();let n=e.deco;n&&n.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,n&&n.endSide>0&&(this.covering=e)}addLineDeco(e,n,r){let s=this.ensureLine();s.length+=r,s.collapsed+=r,s.widgetHeight=Math.max(s.widgetHeight,e),s.breaks+=n,this.writtenTo=this.pos=this.pos+r}finish(e){let n=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(n instanceof $i)&&!this.isCovered?this.nodes.push(new $i(0,-1)):(this.writtenToh.clientHeight||h.scrollWidth>h.clientWidth)&&m.overflow!="visible"){let g=h.getBoundingClientRect();i=Math.max(i,g.left),a=Math.min(a,g.right),l=Math.max(l,g.top),c=Math.min(d==t.parentNode?s.innerHeight:c,g.bottom)}d=m.position=="absolute"||m.position=="fixed"?h.offsetParent:h.parentNode}else if(d.nodeType==11)d=d.host;else break;return{left:i-n.left,right:Math.max(i,a)-n.left,top:l-(n.top+e),bottom:Math.max(l,c)-(n.top+e)}}function ule(t){let e=t.getBoundingClientRect(),n=t.ownerDocument.defaultView||window;return e.left0&&e.top0}function dle(t,e){let n=t.getBoundingClientRect();return{left:0,right:n.right-n.left,top:e,bottom:n.bottom-(n.top+e)}}class B4{constructor(e,n,r,s){this.from=e,this.to=n,this.size=r,this.displaySize=s}static same(e,n){if(e.length!=n.length)return!1;for(let r=0;rtypeof r!="function"&&r.class=="cm-lineWrapping");this.heightOracle=new rle(n),this.stateDeco=e.facet(H0).filter(r=>typeof r!="function"),this.heightMap=ri.empty().applyChanges(this.stateDeco,jn.empty,this.heightOracle.setDoc(e.doc),[new Na(0,0,0,e.doc.length)]);for(let r=0;r<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());r++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=kt.set(this.lineGaps.map(r=>r.draw(this,!1))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:n}=this.state.selection;for(let r=0;r<=1;r++){let s=r?n.head:n.anchor;if(!e.some(({from:i,to:a})=>s>=i&&s<=a)){let{from:i,to:a}=this.lineBlockAt(s);e.push(new i1(i,a))}}return this.viewports=e.sort((r,s)=>r.from-s.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?VE:new u6(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(c0(e,this.scaler))})}update(e,n=null){this.state=e.state;let r=this.stateDeco;this.stateDeco=this.state.facet(H0).filter(h=>typeof h!="function");let s=e.changedRanges,i=Na.extendWithRanges(s,ole(r,this.stateDeco,e?e.changes:us.empty(this.state.doc.length))),a=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);$E(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),i),(this.heightMap.height!=a||nf)&&(e.flags|=2),l?(this.scrollAnchorPos=e.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=a);let c=i.length?this.mapViewport(this.viewport,e.changes):this.viewport;(n&&(n.range.headc.to)||!this.viewportIsAppropriate(c))&&(c=this.getViewport(0,n));let d=c.from!=this.viewport.from||c.to!=this.viewport.to;this.viewport=c,e.flags|=this.updateForViewport(),(d||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),n&&(this.scrollTarget=n),!this.mustEnforceCursorAssoc&&e.selectionSet&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(KF)&&(this.mustEnforceCursorAssoc=!0)}measure(e){let n=e.contentDOM,r=window.getComputedStyle(n),s=this.heightOracle,i=r.whiteSpace;this.defaultTextDirection=r.direction=="rtl"?gr.RTL:gr.LTR;let a=this.heightOracle.mustRefreshForWrapping(i),l=n.getBoundingClientRect(),c=a||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let d=0,h=0;if(l.width&&l.height){let{scaleX:T,scaleY:E}=NF(n,l);(T>.005&&Math.abs(this.scaleX-T)>.005||E>.005&&Math.abs(this.scaleY-E)>.005)&&(this.scaleX=T,this.scaleY=E,d|=16,a=c=!0)}let m=(parseInt(r.paddingTop)||0)*this.scaleY,g=(parseInt(r.paddingBottom)||0)*this.scaleY;(this.paddingTop!=m||this.paddingBottom!=g)&&(this.paddingTop=m,this.paddingBottom=g,d|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(s.lineWrapping&&(c=!0),this.editorWidth=e.scrollDOM.clientWidth,d|=16);let x=e.scrollDOM.scrollTop*this.scaleY;this.scrollTop!=x&&(this.scrollAnchorHeight=-1,this.scrollTop=x),this.scrolledToBottom=EF(e.scrollDOM);let y=(this.printing?dle:cle)(n,this.paddingTop),w=y.top-this.pixelViewport.top,S=y.bottom-this.pixelViewport.bottom;this.pixelViewport=y;let k=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(k!=this.inView&&(this.inView=k,k&&(c=!0)),!this.inView&&!this.scrollTarget&&!ule(e.dom))return 0;let j=l.width;if((this.contentDOMWidth!=j||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=e.scrollDOM.clientHeight,d|=16),c){let T=e.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(T)&&(a=!0),a||s.lineWrapping&&Math.abs(j-this.contentDOMWidth)>s.charWidth){let{lineHeight:E,charWidth:_,textHeight:A}=e.docView.measureTextSize();a=E>0&&s.refresh(i,E,_,A,Math.max(5,j/_),T),a&&(e.docView.minWidth=0,d|=16)}w>0&&S>0?h=Math.max(w,S):w<0&&S<0&&(h=Math.min(w,S)),$E();for(let E of this.viewports){let _=E.from==this.viewport.from?T:e.docView.measureVisibleLineHeights(E);this.heightMap=(a?ri.empty().applyChanges(this.stateDeco,jn.empty,this.heightOracle,[new Na(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(s,0,a,new sle(E.from,_))}nf&&(d|=2)}let N=!this.viewportIsAppropriate(this.viewport,h)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return N&&(d&2&&(d|=this.updateScaler()),this.viewport=this.getViewport(h,this.scrollTarget),d|=this.updateForViewport()),(d&2||N)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(a?[]:this.lineGaps,e)),d|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),d}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,n){let r=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),s=this.heightMap,i=this.heightOracle,{visibleTop:a,visibleBottom:l}=this,c=new i1(s.lineAt(a-r*1e3,pr.ByHeight,i,0,0).from,s.lineAt(l+(1-r)*1e3,pr.ByHeight,i,0,0).to);if(n){let{head:d}=n.range;if(dc.to){let h=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),m=s.lineAt(d,pr.ByPos,i,0,0),g;n.y=="center"?g=(m.top+m.bottom)/2-h/2:n.y=="start"||n.y=="nearest"&&d=l+Math.max(10,Math.min(r,250)))&&s>a-2*1e3&&i>1,a=s<<1;if(this.defaultTextDirection!=gr.LTR&&!r)return[];let l=[],c=(h,m,g,x)=>{if(m-hh&&kk.from>=g.from&&k.to<=g.to&&Math.abs(k.from-h)k.fromj));if(!S){if(mN.from<=m&&N.to>=m)){let N=n.moveToLineBoundary(Me.cursor(m),!1,!0).head;N>h&&(m=N)}let k=this.gapSize(g,h,m,x),j=r||k<2e6?k:2e6;S=new B4(h,m,k,j)}l.push(S)},d=h=>{if(h.length2e6)for(let _ of e)_.from>=h.from&&_.fromh.from&&c(h.from,x,h,m),yn.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let n=this.stateDeco;this.lineGaps.length&&(n=n.concat(this.lineGapDeco));let r=[];Rn.spans(n,this.viewport.from,this.viewport.to,{span(i,a){r.push({from:i,to:a})},point(){}},20);let s=0;if(r.length!=this.visibleRanges.length)s=12;else for(let i=0;i=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(n=>n.from<=e&&n.to>=e)||c0(this.heightMap.lineAt(e,pr.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(n=>n.top<=e&&n.bottom>=e)||c0(this.heightMap.lineAt(this.scaler.fromDOM(e),pr.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(e){let n=this.lineBlockAtHeight(e+8);return n.from>=this.viewport.from||this.viewportLines[0].top-e>200?n:this.viewportLines[0]}elementAtHeight(e){return c0(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}let i1=class{constructor(e,n){this.from=e,this.to=n}};function fle(t,e,n){let r=[],s=t,i=0;return Rn.spans(n,t,e,{span(){},point(a,l){a>s&&(r.push({from:s,to:a}),i+=a-s),s=l}},20),s=1)return e[e.length-1].to;let r=Math.floor(t*n);for(let s=0;;s++){let{from:i,to:a}=e[s],l=a-i;if(r<=l)return i+r;r-=l}}function o1(t,e){let n=0;for(let{from:r,to:s}of t.ranges){if(e<=s){n+=e-r;break}n+=s-r}return n/t.total}function mle(t,e){for(let n of t)if(e(n))return n}const VE={toDOM(t){return t},fromDOM(t){return t},scale:1,eq(t){return t==this}};class u6{constructor(e,n,r){let s=0,i=0,a=0;this.viewports=r.map(({from:l,to:c})=>{let d=n.lineAt(l,pr.ByPos,e,0,0).top,h=n.lineAt(c,pr.ByPos,e,0,0).bottom;return s+=h-d,{from:l,to:c,top:d,bottom:h,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(n.height-s);for(let l of this.viewports)l.domTop=a+(l.top-i)*this.scale,a=l.domBottom=l.domTop+(l.bottom-l.top),i=l.bottom}toDOM(e){for(let n=0,r=0,s=0;;n++){let i=nn.from==e.viewports[r].from&&n.to==e.viewports[r].to):!1}}function c0(t,e){if(e.scale==1)return t;let n=e.toDOM(t.top),r=e.toDOM(t.bottom);return new So(t.from,t.length,n,r-n,Array.isArray(t._content)?t._content.map(s=>c0(s,e)):t._content)}const l1=at.define({combine:t=>t.join(" ")}),Gk=at.define({combine:t=>t.indexOf(!0)>-1}),Xk=Wc.newName(),yq=Wc.newName(),bq=Wc.newName(),wq={"&light":"."+yq,"&dark":"."+bq};function Yk(t,e,n){return new Wc(e,{finish(r){return/&/.test(r)?r.replace(/&\w*/,s=>{if(s=="&")return t;if(!n||!n[s])throw new RangeError(`Unsupported selector: ${s}`);return n[s]}):t+" "+r}})}const ple=Yk("."+Xk,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},wq),gle={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},F4=et.ie&&et.ie_version<=11;class xle{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new Jae,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(n=>{for(let r of n)this.queue.push(r);(et.ie&&et.ie_version<=11||et.ios&&e.composing)&&n.some(r=>r.type=="childList"&&r.removedNodes.length||r.type=="characterData"&&r.oldValue.length>r.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&et.android&&e.constructor.EDIT_CONTEXT!==!1&&!(et.chrome&&et.chrome_version<126)&&(this.editContext=new yle(e),e.state.facet(El)&&(e.contentDOM.editContext=this.editContext.editContext)),F4&&(this.onCharData=n=>{this.queue.push({target:n.target,type:"characterData",oldValue:n.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var n;((n=this.view.docView)===null||n===void 0?void 0:n.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),n.length>0&&n[n.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(n=>{n.length>0&&n[n.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type=="change"||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((n,r)=>n!=e[r]))){this.gapIntersection.disconnect();for(let n of e)this.gapIntersection.observe(n);this.gaps=e}}onSelectionChange(e){let n=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:r}=this,s=this.selectionRange;if(r.state.facet(El)?r.root.activeElement!=this.dom:!lv(this.dom,s))return;let i=s.anchorNode&&r.docView.nearest(s.anchorNode);if(i&&i.ignoreEvent(e)){n||(this.selectionChanged=!1);return}(et.ie&&et.ie_version<=11||et.android&&et.chrome)&&!r.state.selection.main.empty&&s.focusNode&&S0(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,n=$0(e.root);if(!n)return!1;let r=et.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&vle(this.view,n)||n;if(!r||this.selectionRange.eq(r))return!1;let s=lv(this.dom,r);return s&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime{let i=this.delayedAndroidKey;i&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=i.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&i.force&&Ph(this.dom,i.key,i.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:n,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let n=-1,r=-1,s=!1;for(let i of e){let a=this.readMutation(i);a&&(a.typeOver&&(s=!0),n==-1?{from:n,to:r}=a:(n=Math.min(a.from,n),r=Math.max(a.to,r)))}return{from:n,to:r,typeOver:s}}readChange(){let{from:e,to:n,typeOver:r}=this.processRecords(),s=this.selectionChanged&&lv(this.dom,this.selectionRange);if(e<0&&!s)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let i=new zoe(this.view,e,n,r);return this.view.docView.domChanged={newSel:i.newSel?i.newSel.main:null},i}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let n=this.readChange();if(!n)return this.view.requestMeasure(),!1;let r=this.view.state,s=lq(this.view,n);return this.view.state==r&&(n.domChanged||n.newSel&&!n.newSel.main.eq(this.view.state.selection.main))&&this.view.update([]),s}readMutation(e){let n=this.view.docView.nearest(e.target);if(!n||n.ignoreMutation(e))return null;if(n.markDirty(e.type=="attributes"),e.type=="attributes"&&(n.flags|=4),e.type=="childList"){let r=UE(n,e.previousSibling||e.target.previousSibling,-1),s=UE(n,e.nextSibling||e.target.nextSibling,1);return{from:r?n.posAfter(r):n.posAtStart,to:s?n.posBefore(s):n.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:n.posAtStart,to:n.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(El)!=e.state.facet(El)&&(e.view.contentDOM.editContext=e.state.facet(El)?this.editContext.editContext:null))}destroy(){var e,n,r;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(n=this.gapIntersection)===null||n===void 0||n.disconnect(),(r=this.resizeScroll)===null||r===void 0||r.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}}function UE(t,e,n){for(;e;){let r=er.get(e);if(r&&r.parent==t)return r;let s=e.parentNode;e=s!=t.dom?s:n>0?e.nextSibling:e.previousSibling}return null}function WE(t,e){let n=e.startContainer,r=e.startOffset,s=e.endContainer,i=e.endOffset,a=t.docView.domAtPos(t.state.selection.main.anchor);return S0(a.node,a.offset,s,i)&&([n,r,s,i]=[s,i,n,r]),{anchorNode:n,anchorOffset:r,focusNode:s,focusOffset:i}}function vle(t,e){if(e.getComposedRanges){let s=e.getComposedRanges(t.root)[0];if(s)return WE(t,s)}let n=null;function r(s){s.preventDefault(),s.stopImmediatePropagation(),n=s.getTargetRanges()[0]}return t.contentDOM.addEventListener("beforeinput",r,!0),t.dom.ownerDocument.execCommand("indent"),t.contentDOM.removeEventListener("beforeinput",r,!0),n?WE(t,n):null}class yle{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let n=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=r=>{let s=e.state.selection.main,{anchor:i,head:a}=s,l=this.toEditorPos(r.updateRangeStart),c=this.toEditorPos(r.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:r.updateRangeStart,editorBase:l,drifted:!1});let d=c-l>r.text.length;l==this.from&&ithis.to&&(c=i);let h=cq(e.state.sliceDoc(l,c),r.text,(d?s.from:s.to)-l,d?"end":null);if(!h){let g=Me.single(this.toEditorPos(r.selectionStart),this.toEditorPos(r.selectionEnd));g.main.eq(s)||e.dispatch({selection:g,userEvent:"select"});return}let m={from:h.from+l,to:h.toA+l,insert:jn.of(r.text.slice(h.from,h.toB).split(` -`))};if((et.mac||et.android)&&m.from==a-1&&/^\. ?$/.test(r.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(m={from:l,to:c,insert:jn.of([r.text.replace("."," ")])}),this.pendingContextChange=m,!e.state.readOnly){let g=this.to-this.from+(m.to-m.from+m.insert.length);l6(e,m,Me.single(this.toEditorPos(r.selectionStart,g),this.toEditorPos(r.selectionEnd,g)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),m.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(n.text.slice(Math.max(0,r.updateRangeStart-1),Math.min(n.text.length,r.updateRangeStart+1)))&&this.handlers.compositionend(r)},this.handlers.characterboundsupdate=r=>{let s=[],i=null;for(let a=this.toEditorPos(r.rangeStart),l=this.toEditorPos(r.rangeEnd);a{let s=[];for(let i of r.getTextFormats()){let a=i.underlineStyle,l=i.underlineThickness;if(!/none/i.test(a)&&!/none/i.test(l)){let c=this.toEditorPos(i.rangeStart),d=this.toEditorPos(i.rangeEnd);if(c{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:r}=this.composing;this.composing=null,r&&this.reset(e.state)}};for(let r in this.handlers)n.addEventListener(r,this.handlers[r]);this.measureReq={read:r=>{this.editContext.updateControlBounds(r.contentDOM.getBoundingClientRect());let s=$0(r.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let n=0,r=!1,s=this.pendingContextChange;return e.changes.iterChanges((i,a,l,c,d)=>{if(r)return;let h=d.length-(a-i);if(s&&a>=s.to)if(s.from==i&&s.to==a&&s.insert.eq(d)){s=this.pendingContextChange=null,n+=h,this.to+=h;return}else s=null,this.revertPending(e.state);if(i+=n,a+=n,a<=this.from)this.from+=h,this.to+=h;else if(ithis.to||this.to-this.from+d.length>3e4){r=!0;return}this.editContext.updateText(this.toContextPos(i),this.toContextPos(a),d.toString()),this.to+=h}n+=h}),s&&!r&&this.revertPending(e.state),!r}update(e){let n=this.pendingContextChange,r=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(r.from,r.to)&&e.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||n)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:n}=e.selection.main;this.from=Math.max(0,n-1e4),this.to=Math.min(e.doc.length,n+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let n=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(n.from),this.toContextPos(n.from+n.insert.length),e.doc.sliceString(n.from,n.to))}setSelection(e){let{main:n}=e.selection,r=this.toContextPos(Math.max(this.from,Math.min(this.to,n.anchor))),s=this.toContextPos(n.head);(this.editContext.selectionStart!=r||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(r,s)}rangeIsValid(e){let{head:n}=e.selection.main;return!(this.from>0&&n-this.from<500||this.to1e4*3)}toEditorPos(e,n=this.to-this.from){e=Math.min(e,n);let r=this.composing;return r&&r.drifted?r.editorBase+(e-r.contextBase):e+this.from}toContextPos(e){let n=this.composing;return n&&n.drifted?n.contextBase+(e-n.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}}class Ze{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var n;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:r}=e;this.dispatchTransactions=e.dispatchTransactions||r&&(s=>s.forEach(i=>r(i,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=e.root||eoe(e.parent)||document,this.viewState=new QE(e.state||wn.create(e)),e.scrollTo&&e.scrollTo.is(n1)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Nh).map(s=>new z4(s));for(let s of this.plugins)s.update(this);this.observer=new xle(this),this.inputState=new Foe(this),this.inputState.ensureHandlers(this.plugins),this.docView=new jE(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((n=document.fonts)===null||n===void 0)&&n.ready&&document.fonts.ready.then(()=>this.requestMeasure())}dispatch(...e){let n=e.length==1&&e[0]instanceof ns?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(n,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let n=!1,r=!1,s,i=this.state;for(let g of e){if(g.startState!=i)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");i=g.state}if(this.destroyed){this.viewState.state=i;return}let a=this.hasFocus,l=0,c=null;e.some(g=>g.annotation(pq))?(this.inputState.notifiedFocused=a,l=1):a!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=a,c=gq(i,a),c||(l=1));let d=this.observer.delayedAndroidKey,h=null;if(d?(this.observer.clearDelayedAndroidKey(),h=this.observer.readChange(),(h&&!this.state.doc.eq(i.doc)||!this.state.selection.eq(i.selection))&&(h=null)):this.observer.clear(),i.facet(wn.phrases)!=this.state.facet(wn.phrases))return this.setState(i);s=Uv.create(this,i,e),s.flags|=l;let m=this.viewState.scrollTarget;try{this.updateState=2;for(let g of e){if(m&&(m=m.map(g.changes)),g.scrollIntoView){let{main:x}=g.state.selection;m=new zh(x.empty?x:Me.cursor(x.head,x.head>x.anchor?-1:1))}for(let x of g.effects)x.is(n1)&&(m=x.value.clip(this.state))}this.viewState.update(s,m),this.bidiCache=Gv.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),n=this.docView.update(s),this.state.facet(o0)!=this.styleModules&&this.mountStyles(),r=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(n,e.some(g=>g.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(l1)!=s.state.facet(l1)&&(this.viewState.mustMeasureContent=!0),(n||r||m||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),n&&this.docViewUpdate(),!s.empty)for(let g of this.state.facet(Qk))try{g(s)}catch(x){vi(this.state,x,"update listener")}(c||h)&&Promise.resolve().then(()=>{c&&this.state==c.startState&&this.dispatch(c),h&&!lq(this,h)&&d.force&&Ph(this.contentDOM,d.key,d.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let n=this.hasFocus;try{for(let r of this.plugins)r.destroy(this);this.viewState=new QE(e),this.plugins=e.facet(Nh).map(r=>new z4(r)),this.pluginMap.clear();for(let r of this.plugins)r.update(this);this.docView.destroy(),this.docView=new jE(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}n&&this.focus(),this.requestMeasure()}updatePlugins(e){let n=e.startState.facet(Nh),r=e.state.facet(Nh);if(n!=r){let s=[];for(let i of r){let a=n.indexOf(i);if(a<0)s.push(new z4(i));else{let l=this.plugins[a];l.mustUpdate=e,s.push(l)}}for(let i of this.plugins)i.mustUpdate!=e&&i.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=e;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let n=null,r=this.scrollDOM,s=r.scrollTop*this.scaleY,{scrollAnchorPos:i,scrollAnchorHeight:a}=this.viewState;Math.abs(s-this.viewState.scrollTop)>1&&(a=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(a<0)if(EF(r))i=-1,a=this.viewState.heightMap.height;else{let x=this.viewState.scrollAnchorAt(s);i=x.from,a=x.top}this.updateState=1;let c=this.viewState.measure(this);if(!c&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let d=[];c&4||([this.measureRequests,d]=[d,this.measureRequests]);let h=d.map(x=>{try{return x.read(this)}catch(y){return vi(this.state,y),GE}}),m=Uv.create(this,this.state,[]),g=!1;m.flags|=c,n?n.flags|=c:n=m,this.updateState=2,m.empty||(this.updatePlugins(m),this.inputState.update(m),this.updateAttrs(),g=this.docView.update(m),g&&this.docViewUpdate());for(let x=0;x1||y<-1){s=s+y,r.scrollTop=s/this.scaleY,a=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(n&&!n.empty)for(let l of this.state.facet(Qk))l(n)}get themeClasses(){return Xk+" "+(this.state.facet(Gk)?bq:yq)+" "+this.state.facet(l1)}updateAttrs(){let e=XE(this,eq,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),n={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(El)?"true":"false",class:"cm-content",style:`${et.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(n["aria-readonly"]="true"),XE(this,a6,n);let r=this.observer.ignore(()=>{let s=Bk(this.contentDOM,this.contentAttrs,n),i=Bk(this.dom,this.editorAttrs,e);return s||i});return this.editorAttrs=e,this.contentAttrs=n,r}showAnnouncements(e){let n=!0;for(let r of e)for(let s of r.effects)if(s.is(Ze.announce)){n&&(this.announceDOM.textContent=""),n=!1;let i=this.announceDOM.appendChild(document.createElement("div"));i.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(o0);let e=this.state.facet(Ze.cspNonce);Wc.mount(this.root,this.styleModules.concat(ple).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let n=0;nr.plugin==e)||null),n&&n.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,n,r){return L4(this,e,_E(this,e,n,r))}moveByGroup(e,n){return L4(this,e,_E(this,e,n,r=>Aoe(this,e.head,r)))}visualLineSide(e,n){let r=this.bidiSpans(e),s=this.textDirectionAt(e.from),i=r[n?r.length-1:0];return Me.cursor(i.side(n,s)+e.from,i.forward(!n,s)?1:-1)}moveToLineBoundary(e,n,r=!0){return _oe(this,e,n,r)}moveVertically(e,n,r){return L4(this,e,Moe(this,e,n,r))}domAtPos(e){return this.docView.domAtPos(e)}posAtDOM(e,n=0){return this.docView.posFromDOM(e,n)}posAtCoords(e,n=!0){return this.readMeasured(),iq(this,e,n)}coordsAtPos(e,n=1){this.readMeasured();let r=this.docView.coordsAt(e,n);if(!r||r.left==r.right)return r;let s=this.state.doc.lineAt(e),i=this.bidiSpans(s),a=i[Fc.find(i,e-s.from,-1,n)];return qp(r,a.dir==gr.LTR==n>0)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(YF)||ethis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>ble)return $F(e.length);let n=this.textDirectionAt(e.from),r;for(let i of this.bidiCache)if(i.from==e.from&&i.dir==n&&(i.fresh||qF(i.isolates,r=OE(this,e))))return i.order;r||(r=OE(this,e));let s=moe(e.text,n,r);return this.bidiCache.push(new Gv(e.from,e.to,n,r,!0,s)),s}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||et.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{CF(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,n={}){return n1.of(new zh(typeof e=="number"?Me.cursor(e):e,n.y,n.x,n.yMargin,n.xMargin))}scrollSnapshot(){let{scrollTop:e,scrollLeft:n}=this.scrollDOM,r=this.viewState.scrollAnchorAt(e);return n1.of(new zh(Me.cursor(r.from),"start","start",r.top-e,n,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return Vr.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return Vr.define(()=>({}),{eventObservers:e})}static theme(e,n){let r=Wc.newName(),s=[l1.of(r),o0.of(Yk(`.${r}`,e))];return n&&n.dark&&s.push(Gk.of(!0)),s}static baseTheme(e){return ou.lowest(o0.of(Yk("."+Xk,e,wq)))}static findFromDOM(e){var n;let r=e.querySelector(".cm-content"),s=r&&er.get(r)||er.get(e);return((n=s?.rootView)===null||n===void 0?void 0:n.view)||null}}Ze.styleModule=o0;Ze.inputHandler=GF;Ze.clipboardInputFilter=s6;Ze.clipboardOutputFilter=i6;Ze.scrollHandler=ZF;Ze.focusChangeEffect=XF;Ze.perLineTextDirection=YF;Ze.exceptionSink=WF;Ze.updateListener=Qk;Ze.editable=El;Ze.mouseSelectionStyle=UF;Ze.dragMovesSelection=VF;Ze.clickAddsSelectionRange=QF;Ze.decorations=H0;Ze.outerDecorations=tq;Ze.atomicRanges=Qp;Ze.bidiIsolatedRanges=nq;Ze.scrollMargins=rq;Ze.darkTheme=Gk;Ze.cspNonce=at.define({combine:t=>t.length?t[0]:""});Ze.contentAttributes=a6;Ze.editorAttributes=eq;Ze.lineWrapping=Ze.contentAttributes.of({class:"cm-lineWrapping"});Ze.announce=Ft.define();const ble=4096,GE={};class Gv{constructor(e,n,r,s,i,a){this.from=e,this.to=n,this.dir=r,this.isolates=s,this.fresh=i,this.order=a}static update(e,n){if(n.empty&&!e.some(i=>i.fresh))return e;let r=[],s=e.length?e[e.length-1].dir:gr.LTR;for(let i=Math.max(0,e.length-10);i=0;s--){let i=r[s],a=typeof i=="function"?i(t):i;a&&Lk(a,n)}return n}const wle=et.mac?"mac":et.windows?"win":et.linux?"linux":"key";function Sle(t,e){const n=t.split(/-(?!$)/);let r=n[n.length-1];r=="Space"&&(r=" ");let s,i,a,l;for(let c=0;cr.concat(s),[]))),n}function Ole(t,e,n){return kq(Sq(t.state),e,t,n)}let zc=null;const jle=4e3;function Nle(t,e=wle){let n=Object.create(null),r=Object.create(null),s=(a,l)=>{let c=r[a];if(c==null)r[a]=l;else if(c!=l)throw new Error("Key binding "+a+" is used both as a regular binding and as a multi-stroke prefix")},i=(a,l,c,d,h)=>{var m,g;let x=n[a]||(n[a]=Object.create(null)),y=l.split(/ (?!$)/).map(k=>Sle(k,e));for(let k=1;k{let T=zc={view:N,prefix:j,scope:a};return setTimeout(()=>{zc==T&&(zc=null)},jle),!0}]})}let w=y.join(" ");s(w,!1);let S=x[w]||(x[w]={preventDefault:!1,stopPropagation:!1,run:((g=(m=x._any)===null||m===void 0?void 0:m.run)===null||g===void 0?void 0:g.slice())||[]});c&&S.run.push(c),d&&(S.preventDefault=!0),h&&(S.stopPropagation=!0)};for(let a of t){let l=a.scope?a.scope.split(" "):["editor"];if(a.any)for(let d of l){let h=n[d]||(n[d]=Object.create(null));h._any||(h._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:m}=a;for(let g in h)h[g].run.push(x=>m(x,Kk))}let c=a[e]||a.key;if(c)for(let d of l)i(d,c,a.run,a.preventDefault,a.stopPropagation),a.shift&&i(d,"Shift-"+c,a.shift,a.preventDefault,a.stopPropagation)}return n}let Kk=null;function kq(t,e,n,r){Kk=e;let s=Gae(e),i=gi(s,0),a=wo(i)==s.length&&s!=" ",l="",c=!1,d=!1,h=!1;zc&&zc.view==n&&zc.scope==r&&(l=zc.prefix+" ",dq.indexOf(e.keyCode)<0&&(d=!0,zc=null));let m=new Set,g=S=>{if(S){for(let k of S.run)if(!m.has(k)&&(m.add(k),k(n)))return S.stopPropagation&&(h=!0),!0;S.preventDefault&&(S.stopPropagation&&(h=!0),d=!0)}return!1},x=t[r],y,w;return x&&(g(x[l+c1(s,e,!a)])?c=!0:a&&(e.altKey||e.metaKey||e.ctrlKey)&&!(et.windows&&e.ctrlKey&&e.altKey)&&!(et.mac&&e.altKey&&!(e.ctrlKey||e.metaKey))&&(y=Gc[e.keyCode])&&y!=s?(g(x[l+c1(y,e,!0)])||e.shiftKey&&(w=q0[e.keyCode])!=s&&w!=y&&g(x[l+c1(w,e,!1)]))&&(c=!0):a&&e.shiftKey&&g(x[l+c1(s,e,!0)])&&(c=!0),!c&&g(x._any)&&(c=!0)),d&&(c=!0),c&&h&&e.stopPropagation(),Kk=null,c}class Up{constructor(e,n,r,s,i){this.className=e,this.left=n,this.top=r,this.width=s,this.height=i}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,n){return n.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,n,r){if(r.empty){let s=e.coordsAtPos(r.head,r.assoc||1);if(!s)return[];let i=Oq(e);return[new Up(n,s.left-i.left,s.top-i.top,null,s.bottom-s.top)]}else return Cle(e,n,r)}}function Oq(t){let e=t.scrollDOM.getBoundingClientRect();return{left:(t.textDirection==gr.LTR?e.left:e.right-t.scrollDOM.clientWidth*t.scaleX)-t.scrollDOM.scrollLeft*t.scaleX,top:e.top-t.scrollDOM.scrollTop*t.scaleY}}function KE(t,e,n,r){let s=t.coordsAtPos(e,n*2);if(!s)return r;let i=t.dom.getBoundingClientRect(),a=(s.top+s.bottom)/2,l=t.posAtCoords({x:i.left+1,y:a}),c=t.posAtCoords({x:i.right-1,y:a});return l==null||c==null?r:{from:Math.max(r.from,Math.min(l,c)),to:Math.min(r.to,Math.max(l,c))}}function Cle(t,e,n){if(n.to<=t.viewport.from||n.from>=t.viewport.to)return[];let r=Math.max(n.from,t.viewport.from),s=Math.min(n.to,t.viewport.to),i=t.textDirection==gr.LTR,a=t.contentDOM,l=a.getBoundingClientRect(),c=Oq(t),d=a.querySelector(".cm-line"),h=d&&window.getComputedStyle(d),m=l.left+(h?parseInt(h.paddingLeft)+Math.min(0,parseInt(h.textIndent)):0),g=l.right-(h?parseInt(h.paddingRight):0),x=Uk(t,r,1),y=Uk(t,s,-1),w=x.type==ni.Text?x:null,S=y.type==ni.Text?y:null;if(w&&(t.lineWrapping||x.widgetLineBreaks)&&(w=KE(t,r,1,w)),S&&(t.lineWrapping||y.widgetLineBreaks)&&(S=KE(t,s,-1,S)),w&&S&&w.from==S.from&&w.to==S.to)return j(N(n.from,n.to,w));{let E=w?N(n.from,null,w):T(x,!1),_=S?N(null,n.to,S):T(y,!0),A=[];return(w||x).to<(S||y).from-(w&&S?1:0)||x.widgetLineBreaks>1&&E.bottom+t.defaultLineHeight/2<_.top?A.push(k(m,E.bottom,g,_.top)):E.bottom<_.top&&t.elementAtHeight((E.bottom+_.top)/2).type==ni.Text&&(E.bottom=_.top=(E.bottom+_.top)/2),j(E).concat(A).concat(j(_))}function k(E,_,A,L){return new Up(e,E-c.left,_-c.top,A-E,L-_)}function j({top:E,bottom:_,horizontal:A}){let L=[];for(let P=0;PU&&z.from=F)break;R>Q&&$(Math.max(X,Q),E==null&&X<=U,Math.min(R,F),_==null&&R>=te,J.dir)}if(Q=Y.to+1,Q>=F)break}return B.length==0&&$(U,E==null,te,_==null,t.textDirection),{top:L,bottom:P,horizontal:B}}function T(E,_){let A=l.top+(_?E.top:E.bottom);return{top:A,bottom:A,horizontal:[]}}}function Tle(t,e){return t.constructor==e.constructor&&t.eq(e)}class Ele{constructor(e,n){this.view=e,this.layer=n,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),n.above&&this.dom.classList.add("cm-layer-above"),n.class&&this.dom.classList.add(n.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),n.mount&&n.mount(this.dom,e)}update(e){e.startState.facet(dv)!=e.state.facet(dv)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let n=0,r=e.facet(dv);for(;n!Tle(n,this.drawn[r]))){let n=this.dom.firstChild,r=0;for(let s of e)s.update&&n&&s.constructor&&this.drawn[r].constructor&&s.update(n,this.drawn[r])?(n=n.nextSibling,r++):this.dom.insertBefore(s.draw(),n);for(;n;){let s=n.nextSibling;n.remove(),n=s}this.drawn=e,et.safari&&et.safari_version>=26&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}}const dv=at.define();function jq(t){return[Vr.define(e=>new Ele(e,t)),dv.of(t)]}const Q0=at.define({combine(t){return $o(t,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,n)=>Math.min(e,n),drawRangeCursor:(e,n)=>e||n})}});function _le(t={}){return[Q0.of(t),Ale,Mle,Rle,KF.of(!0)]}function Nq(t){return t.startState.facet(Q0)!=t.state.facet(Q0)}const Ale=jq({above:!0,markers(t){let{state:e}=t,n=e.facet(Q0),r=[];for(let s of e.selection.ranges){let i=s==e.selection.main;if(s.empty||n.drawRangeCursor){let a=i?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:Me.cursor(s.head,s.head>s.anchor?-1:1);for(let c of Up.forRange(t,a,l))r.push(c)}}return r},update(t,e){t.transactions.some(r=>r.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let n=Nq(t);return n&&ZE(t.state,e),t.docChanged||t.selectionSet||n},mount(t,e){ZE(e.state,t)},class:"cm-cursorLayer"});function ZE(t,e){e.style.animationDuration=t.facet(Q0).cursorBlinkRate+"ms"}const Mle=jq({above:!1,markers(t){return t.state.selection.ranges.map(e=>e.empty?[]:Up.forRange(t,"cm-selectionBackground",e)).reduce((e,n)=>e.concat(n))},update(t,e){return t.docChanged||t.selectionSet||t.viewportChanged||Nq(t)},class:"cm-selectionLayer"}),Rle=ou.highest(Ze.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}})),Cq=Ft.define({map(t,e){return t==null?null:e.mapPos(t)}}),u0=Os.define({create(){return null},update(t,e){return t!=null&&(t=e.changes.mapPos(t)),e.effects.reduce((n,r)=>r.is(Cq)?r.value:n,t)}}),Dle=Vr.fromClass(class{constructor(t){this.view=t,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(t){var e;let n=t.state.field(u0);n==null?this.cursor!=null&&((e=this.cursor)===null||e===void 0||e.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(t.startState.field(u0)!=n||t.docChanged||t.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:t}=this,e=t.state.field(u0),n=e!=null&&t.coordsAtPos(e);if(!n)return null;let r=t.scrollDOM.getBoundingClientRect();return{left:n.left-r.left+t.scrollDOM.scrollLeft*t.scaleX,top:n.top-r.top+t.scrollDOM.scrollTop*t.scaleY,height:n.bottom-n.top}}drawCursor(t){if(this.cursor){let{scaleX:e,scaleY:n}=this.view;t?(this.cursor.style.left=t.left/e+"px",this.cursor.style.top=t.top/n+"px",this.cursor.style.height=t.height/n+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(t){this.view.state.field(u0)!=t&&this.view.dispatch({effects:Cq.of(t)})}},{eventObservers:{dragover(t){this.setDropPos(this.view.posAtCoords({x:t.clientX,y:t.clientY}))},dragleave(t){(t.target==this.view.contentDOM||!this.view.contentDOM.contains(t.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function Ple(){return[u0,Dle]}function JE(t,e,n,r,s){e.lastIndex=0;for(let i=t.iterRange(n,r),a=n,l;!i.next().done;a+=i.value.length)if(!i.lineBreak)for(;l=e.exec(i.value);)s(a+l.index,l)}function zle(t,e){let n=t.visibleRanges;if(n.length==1&&n[0].from==t.viewport.from&&n[0].to==t.viewport.to)return n;let r=[];for(let{from:s,to:i}of n)s=Math.max(t.state.doc.lineAt(s).from,s-e),i=Math.min(t.state.doc.lineAt(i).to,i+e),r.length&&r[r.length-1].to>=s?r[r.length-1].to=i:r.push({from:s,to:i});return r}class Ile{constructor(e){const{regexp:n,decoration:r,decorate:s,boundary:i,maxLength:a=1e3}=e;if(!n.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=n,s)this.addMatch=(l,c,d,h)=>s(h,d,d+l[0].length,l,c);else if(typeof r=="function")this.addMatch=(l,c,d,h)=>{let m=r(l,c,d);m&&h(d,d+l[0].length,m)};else if(r)this.addMatch=(l,c,d,h)=>h(d,d+l[0].length,r);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=i,this.maxLength=a}createDeco(e){let n=new ql,r=n.add.bind(n);for(let{from:s,to:i}of zle(e,this.maxLength))JE(e.state.doc,this.regexp,s,i,(a,l)=>this.addMatch(l,e,a,r));return n.finish()}updateDeco(e,n){let r=1e9,s=-1;return e.docChanged&&e.changes.iterChanges((i,a,l,c)=>{c>=e.view.viewport.from&&l<=e.view.viewport.to&&(r=Math.min(l,r),s=Math.max(c,s))}),e.viewportMoved||s-r>1e3?this.createDeco(e.view):s>-1?this.updateRange(e.view,n.map(e.changes),r,s):n}updateRange(e,n,r,s){for(let i of e.visibleRanges){let a=Math.max(i.from,r),l=Math.min(i.to,s);if(l>=a){let c=e.state.doc.lineAt(a),d=c.toc.from;a--)if(this.boundary.test(c.text[a-1-c.from])){h=a;break}for(;lg.push(k.range(w,S));if(c==d)for(this.regexp.lastIndex=h-c.from;(x=this.regexp.exec(c.text))&&x.indexthis.addMatch(S,e,w,y));n=n.update({filterFrom:h,filterTo:m,filter:(w,S)=>wm,add:g})}}return n}}const Zk=/x/.unicode!=null?"gu":"g",Lle=new RegExp(`[\0-\b ---Ÿ­؜​‎‏\u2028\u2029‭‮⁦⁧⁩\uFEFF-]`,Zk),Ble={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let q4=null;function Fle(){var t;if(q4==null&&typeof document<"u"&&document.body){let e=document.body.style;q4=((t=e.tabSize)!==null&&t!==void 0?t:e.MozTabSize)!=null}return q4||!1}const hv=at.define({combine(t){let e=$o(t,{render:null,specialChars:Lle,addSpecialChars:null});return(e.replaceTabs=!Fle())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,Zk)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,Zk)),e}});function qle(t={}){return[hv.of(t),$le()]}let e_=null;function $le(){return e_||(e_=Vr.fromClass(class{constructor(t){this.view=t,this.decorations=kt.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(t.state.facet(hv)),this.decorations=this.decorator.createDeco(t)}makeDecorator(t){return new Ile({regexp:t.specialChars,decoration:(e,n,r)=>{let{doc:s}=n.state,i=gi(e[0],0);if(i==9){let a=s.lineAt(r),l=n.state.tabSize,c=Nf(a.text,l,r-a.from);return kt.replace({widget:new Ule((l-c%l)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[i]||(this.decorationCache[i]=kt.replace({widget:new Vle(t,i)}))},boundary:t.replaceTabs?void 0:/[^]/})}update(t){let e=t.state.facet(hv);t.startState.facet(hv)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(t.view)):this.decorations=this.decorator.updateDeco(t,this.decorations)}},{decorations:t=>t.decorations}))}const Hle="•";function Qle(t){return t>=32?Hle:t==10?"␤":String.fromCharCode(9216+t)}class Vle extends Ho{constructor(e,n){super(),this.options=e,this.code=n}eq(e){return e.code==this.code}toDOM(e){let n=Qle(this.code),r=e.state.phrase("Control character")+" "+(Ble[this.code]||"0x"+this.code.toString(16)),s=this.options.render&&this.options.render(this.code,r,n);if(s)return s;let i=document.createElement("span");return i.textContent=n,i.title=r,i.setAttribute("aria-label",r),i.className="cm-specialChar",i}ignoreEvent(){return!1}}class Ule extends Ho{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}}function Wle(){return Xle}const Gle=kt.line({class:"cm-activeLine"}),Xle=Vr.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.docChanged||t.selectionSet)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=-1,n=[];for(let r of t.state.selection.ranges){let s=t.lineBlockAt(r.head);s.from>e&&(n.push(Gle.range(s.from)),e=s.from)}return kt.set(n)}},{decorations:t=>t.decorations});class Yle extends Ho{constructor(e){super(),this.content=e}toDOM(e){let n=document.createElement("span");return n.className="cm-placeholder",n.style.pointerEvents="none",n.appendChild(typeof this.content=="string"?document.createTextNode(this.content):typeof this.content=="function"?this.content(e):this.content.cloneNode(!0)),n.setAttribute("aria-hidden","true"),n}coordsAt(e){let n=e.firstChild?Jh(e.firstChild):[];if(!n.length)return null;let r=window.getComputedStyle(e.parentNode),s=qp(n[0],r.direction!="rtl"),i=parseInt(r.lineHeight);return s.bottom-s.top>i*1.5?{left:s.left,right:s.right,top:s.top,bottom:s.top+i}:s}ignoreEvent(){return!1}}function Kle(t){let e=Vr.fromClass(class{constructor(n){this.view=n,this.placeholder=t?kt.set([kt.widget({widget:new Yle(t),side:1}).range(0)]):kt.none}get decorations(){return this.view.state.doc.length?kt.none:this.placeholder}},{decorations:n=>n.decorations});return typeof t=="string"?[e,Ze.contentAttributes.of({"aria-placeholder":t})]:e}const Jk=2e3;function Zle(t,e,n){let r=Math.min(e.line,n.line),s=Math.max(e.line,n.line),i=[];if(e.off>Jk||n.off>Jk||e.col<0||n.col<0){let a=Math.min(e.off,n.off),l=Math.max(e.off,n.off);for(let c=r;c<=s;c++){let d=t.doc.line(c);d.length<=l&&i.push(Me.range(d.from+a,d.to+l))}}else{let a=Math.min(e.col,n.col),l=Math.max(e.col,n.col);for(let c=r;c<=s;c++){let d=t.doc.line(c),h=_k(d.text,a,t.tabSize,!0);if(h<0)i.push(Me.cursor(d.to));else{let m=_k(d.text,l,t.tabSize);i.push(Me.range(d.from+h,d.from+m))}}}return i}function Jle(t,e){let n=t.coordsAtPos(t.viewport.from);return n?Math.round(Math.abs((n.left-e)/t.defaultCharacterWidth)):-1}function t_(t,e){let n=t.posAtCoords({x:e.clientX,y:e.clientY},!1),r=t.state.doc.lineAt(n),s=n-r.from,i=s>Jk?-1:s==r.length?Jle(t,e.clientX):Nf(r.text,t.state.tabSize,n-r.from);return{line:r.number,col:i,off:s}}function ece(t,e){let n=t_(t,e),r=t.state.selection;return n?{update(s){if(s.docChanged){let i=s.changes.mapPos(s.startState.doc.line(n.line).from),a=s.state.doc.lineAt(i);n={line:a.number,col:n.col,off:Math.min(n.off,a.length)},r=r.map(s.changes)}},get(s,i,a){let l=t_(t,s);if(!l)return r;let c=Zle(t.state,n,l);return c.length?a?Me.create(c.concat(r.ranges)):Me.create(c):r}}:null}function tce(t){let e=(n=>n.altKey&&n.button==0);return Ze.mouseSelectionStyle.of((n,r)=>e(r)?ece(n,r):null)}const nce={Alt:[18,t=>!!t.altKey],Control:[17,t=>!!t.ctrlKey],Shift:[16,t=>!!t.shiftKey],Meta:[91,t=>!!t.metaKey]},rce={style:"cursor: crosshair"};function sce(t={}){let[e,n]=nce[t.key||"Alt"],r=Vr.fromClass(class{constructor(s){this.view=s,this.isDown=!1}set(s){this.isDown!=s&&(this.isDown=s,this.view.update([]))}},{eventObservers:{keydown(s){this.set(s.keyCode==e||n(s))},keyup(s){(s.keyCode==e||!n(s))&&this.set(!1)},mousemove(s){this.set(n(s))}}});return[r,Ze.contentAttributes.of(s=>{var i;return!((i=s.plugin(r))===null||i===void 0)&&i.isDown?rce:null})]}const u1="-10000px";class Tq{constructor(e,n,r,s){this.facet=n,this.createTooltipView=r,this.removeTooltipView=s,this.input=e.state.facet(n),this.tooltips=this.input.filter(a=>a);let i=null;this.tooltipViews=this.tooltips.map(a=>i=r(a,i))}update(e,n){var r;let s=e.state.facet(this.facet),i=s.filter(c=>c);if(s===this.input){for(let c of this.tooltipViews)c.update&&c.update(e);return!1}let a=[],l=n?[]:null;for(let c=0;cn[d]=c),n.length=l.length),this.input=s,this.tooltips=i,this.tooltipViews=a,!0}}function ice(t){let e=t.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:e.clientHeight,right:e.clientWidth}}const $4=at.define({combine:t=>{var e,n,r;return{position:et.ios?"absolute":((e=t.find(s=>s.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((n=t.find(s=>s.parent))===null||n===void 0?void 0:n.parent)||null,tooltipSpace:((r=t.find(s=>s.tooltipSpace))===null||r===void 0?void 0:r.tooltipSpace)||ice}}}),n_=new WeakMap,d6=Vr.fromClass(class{constructor(t){this.view=t,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let e=t.state.facet($4);this.position=e.position,this.parent=e.parent,this.classes=t.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.resizeObserver=typeof ResizeObserver=="function"?new ResizeObserver(()=>this.measureSoon()):null,this.manager=new Tq(t,h6,(n,r)=>this.createTooltip(n,r),n=>{this.resizeObserver&&this.resizeObserver.unobserve(n.dom),n.dom.remove()}),this.above=this.manager.tooltips.map(n=>!!n.above),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(n=>{Date.now()>this.lastTransaction-50&&n.length>0&&n[n.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),t.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let t of this.manager.tooltipViews)this.intersectionObserver.observe(t.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(t){t.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(t,this.above);e&&this.observeIntersection();let n=e||t.geometryChanged,r=t.state.facet($4);if(r.position!=this.position&&!this.madeAbsolute){this.position=r.position;for(let s of this.manager.tooltipViews)s.dom.style.position=this.position;n=!0}if(r.parent!=this.parent){this.parent&&this.container.remove(),this.parent=r.parent,this.createContainer();for(let s of this.manager.tooltipViews)this.container.appendChild(s.dom);n=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);n&&this.maybeMeasure()}createTooltip(t,e){let n=t.create(this.view),r=e?e.dom:null;if(n.dom.classList.add("cm-tooltip"),t.arrow&&!n.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let s=document.createElement("div");s.className="cm-tooltip-arrow",n.dom.appendChild(s)}return n.dom.style.position=this.position,n.dom.style.top=u1,n.dom.style.left="0px",this.container.insertBefore(n.dom,r),n.mount&&n.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(n.dom),n}destroy(){var t,e,n;this.view.win.removeEventListener("resize",this.measureSoon);for(let r of this.manager.tooltipViews)r.dom.remove(),(t=r.destroy)===null||t===void 0||t.call(r);this.parent&&this.container.remove(),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),(n=this.intersectionObserver)===null||n===void 0||n.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let t=1,e=1,n=!1;if(this.position=="fixed"&&this.manager.tooltipViews.length){let{dom:i}=this.manager.tooltipViews[0];if(et.safari){let a=i.getBoundingClientRect();n=Math.abs(a.top+1e4)>1||Math.abs(a.left)>1}else n=!!i.offsetParent&&i.offsetParent!=this.container.ownerDocument.body}if(n||this.position=="absolute")if(this.parent){let i=this.parent.getBoundingClientRect();i.width&&i.height&&(t=i.width/this.parent.offsetWidth,e=i.height/this.parent.offsetHeight)}else({scaleX:t,scaleY:e}=this.view.viewState);let r=this.view.scrollDOM.getBoundingClientRect(),s=o6(this.view);return{visible:{left:r.left+s.left,top:r.top+s.top,right:r.right-s.right,bottom:r.bottom-s.bottom},parent:this.parent?this.container.getBoundingClientRect():this.view.dom.getBoundingClientRect(),pos:this.manager.tooltips.map((i,a)=>{let l=this.manager.tooltipViews[a];return l.getCoords?l.getCoords(i.pos):this.view.coordsAtPos(i.pos)}),size:this.manager.tooltipViews.map(({dom:i})=>i.getBoundingClientRect()),space:this.view.state.facet($4).tooltipSpace(this.view),scaleX:t,scaleY:e,makeAbsolute:n}}writeMeasure(t){var e;if(t.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let l of this.manager.tooltipViews)l.dom.style.position="absolute"}let{visible:n,space:r,scaleX:s,scaleY:i}=t,a=[];for(let l=0;l=Math.min(n.bottom,r.bottom)||m.rightMath.min(n.right,r.right)+.1)){h.style.top=u1;continue}let x=c.arrow?d.dom.querySelector(".cm-tooltip-arrow"):null,y=x?7:0,w=g.right-g.left,S=(e=n_.get(d))!==null&&e!==void 0?e:g.bottom-g.top,k=d.offset||oce,j=this.view.textDirection==gr.LTR,N=g.width>r.right-r.left?j?r.left:r.right-g.width:j?Math.max(r.left,Math.min(m.left-(x?14:0)+k.x,r.right-w)):Math.min(Math.max(r.left,m.left-w+(x?14:0)-k.x),r.right-w),T=this.above[l];!c.strictSide&&(T?m.top-S-y-k.yr.bottom)&&T==r.bottom-m.bottom>m.top-r.top&&(T=this.above[l]=!T);let E=(T?m.top-r.top:r.bottom-m.bottom)-y;if(EN&&L.top<_+S&&L.bottom>_&&(_=T?L.top-S-2-y:L.bottom+y+2);if(this.position=="absolute"?(h.style.top=(_-t.parent.top)/i+"px",r_(h,(N-t.parent.left)/s)):(h.style.top=_/i+"px",r_(h,N/s)),x){let L=m.left+(j?k.x:-k.x)-(N+14-7);x.style.left=L/s+"px"}d.overlap!==!0&&a.push({left:N,top:_,right:A,bottom:_+S}),h.classList.toggle("cm-tooltip-above",T),h.classList.toggle("cm-tooltip-below",!T),d.positioned&&d.positioned(t.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let t of this.manager.tooltipViews)t.dom.style.top=u1}},{eventObservers:{scroll(){this.maybeMeasure()}}});function r_(t,e){let n=parseInt(t.style.left,10);(isNaN(n)||Math.abs(e-n)>1)&&(t.style.left=e+"px")}const ace=Ze.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:"14px",position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),oce={x:0,y:0},h6=at.define({enables:[d6,ace]}),Xv=at.define({combine:t=>t.reduce((e,n)=>e.concat(n),[])});class db{static create(e){return new db(e)}constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new Tq(e,Xv,(n,r)=>this.createHostedView(n,r),n=>n.dom.remove())}createHostedView(e,n){let r=e.create(this.view);return r.dom.classList.add("cm-tooltip-section"),this.dom.insertBefore(r.dom,n?n.dom.nextSibling:this.dom.firstChild),this.mounted&&r.mount&&r.mount(this.view),r}mount(e){for(let n of this.manager.tooltipViews)n.mount&&n.mount(e);this.mounted=!0}positioned(e){for(let n of this.manager.tooltipViews)n.positioned&&n.positioned(e)}update(e){this.manager.update(e)}destroy(){var e;for(let n of this.manager.tooltipViews)(e=n.destroy)===null||e===void 0||e.call(n)}passProp(e){let n;for(let r of this.manager.tooltipViews){let s=r[e];if(s!==void 0){if(n===void 0)n=s;else if(n!==s)return}}return n}get offset(){return this.passProp("offset")}get getCoords(){return this.passProp("getCoords")}get overlap(){return this.passProp("overlap")}get resize(){return this.passProp("resize")}}const lce=h6.compute([Xv],t=>{let e=t.facet(Xv);return e.length===0?null:{pos:Math.min(...e.map(n=>n.pos)),end:Math.max(...e.map(n=>{var r;return(r=n.end)!==null&&r!==void 0?r:n.pos})),create:db.create,above:e[0].above,arrow:e.some(n=>n.arrow)}});class cce{constructor(e,n,r,s,i){this.view=e,this.source=n,this.field=r,this.setHover=s,this.hoverTime=i,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active.length)return;let e=Date.now()-this.lastMove.time;el.bottom||n.xl.right+e.defaultCharacterWidth)return;let c=e.bidiSpans(e.state.doc.lineAt(s)).find(h=>h.from<=s&&h.to>=s),d=c&&c.dir==gr.RTL?-1:1;i=n.x{this.pending==l&&(this.pending=null,c&&!(Array.isArray(c)&&!c.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(c)?c:[c])}))},c=>vi(e.state,c,"hover tooltip"))}else a&&!(Array.isArray(a)&&!a.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(a)?a:[a])})}get tooltip(){let e=this.view.plugin(d6),n=e?e.manager.tooltips.findIndex(r=>r.create==db.create):-1;return n>-1?e.manager.tooltipViews[n]:null}mousemove(e){var n,r;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let{active:s,tooltip:i}=this;if(s.length&&i&&!uce(i.dom,e)||this.pending){let{pos:a}=s[0]||this.pending,l=(r=(n=s[0])===null||n===void 0?void 0:n.end)!==null&&r!==void 0?r:a;(a==l?this.view.posAtCoords(this.lastMove)!=a:!dce(this.view,a,l,e.clientX,e.clientY))&&(this.view.dispatch({effects:this.setHover.of([])}),this.pending=null)}}mouseleave(e){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;let{active:n}=this;if(n.length){let{tooltip:r}=this;r&&r.dom.contains(e.relatedTarget)?this.watchTooltipLeave(r.dom):this.view.dispatch({effects:this.setHover.of([])})}}watchTooltipLeave(e){let n=r=>{e.removeEventListener("mouseleave",n),this.active.length&&!this.view.dom.contains(r.relatedTarget)&&this.view.dispatch({effects:this.setHover.of([])})};e.addEventListener("mouseleave",n)}destroy(){clearTimeout(this.hoverTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}}const d1=4;function uce(t,e){let{left:n,right:r,top:s,bottom:i}=t.getBoundingClientRect(),a;if(a=t.querySelector(".cm-tooltip-arrow")){let l=a.getBoundingClientRect();s=Math.min(l.top,s),i=Math.max(l.bottom,i)}return e.clientX>=n-d1&&e.clientX<=r+d1&&e.clientY>=s-d1&&e.clientY<=i+d1}function dce(t,e,n,r,s,i){let a=t.scrollDOM.getBoundingClientRect(),l=t.documentTop+t.documentPadding.top+t.contentHeight;if(a.left>r||a.rights||Math.min(a.bottom,l)=e&&c<=n}function hce(t,e={}){let n=Ft.define(),r=Os.define({create(){return[]},update(s,i){if(s.length&&(e.hideOnChange&&(i.docChanged||i.selection)?s=[]:e.hideOn&&(s=s.filter(a=>!e.hideOn(i,a))),i.docChanged)){let a=[];for(let l of s){let c=i.changes.mapPos(l.pos,-1,Ds.TrackDel);if(c!=null){let d=Object.assign(Object.create(null),l);d.pos=c,d.end!=null&&(d.end=i.changes.mapPos(d.end)),a.push(d)}}s=a}for(let a of i.effects)a.is(n)&&(s=a.value),a.is(fce)&&(s=[]);return s},provide:s=>Xv.from(s)});return{active:r,extension:[r,Vr.define(s=>new cce(s,t,r,n,e.hoverTime||300)),lce]}}function Eq(t,e){let n=t.plugin(d6);if(!n)return null;let r=n.manager.tooltips.indexOf(e);return r<0?null:n.manager.tooltipViews[r]}const fce=Ft.define(),s_=at.define({combine(t){let e,n;for(let r of t)e=e||r.topContainer,n=n||r.bottomContainer;return{topContainer:e,bottomContainer:n}}});function V0(t,e){let n=t.plugin(_q),r=n?n.specs.indexOf(e):-1;return r>-1?n.panels[r]:null}const _q=Vr.fromClass(class{constructor(t){this.input=t.state.facet(U0),this.specs=this.input.filter(n=>n),this.panels=this.specs.map(n=>n(t));let e=t.state.facet(s_);this.top=new h1(t,!0,e.topContainer),this.bottom=new h1(t,!1,e.bottomContainer),this.top.sync(this.panels.filter(n=>n.top)),this.bottom.sync(this.panels.filter(n=>!n.top));for(let n of this.panels)n.dom.classList.add("cm-panel"),n.mount&&n.mount()}update(t){let e=t.state.facet(s_);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new h1(t.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new h1(t.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let n=t.state.facet(U0);if(n!=this.input){let r=n.filter(c=>c),s=[],i=[],a=[],l=[];for(let c of r){let d=this.specs.indexOf(c),h;d<0?(h=c(t.view),l.push(h)):(h=this.panels[d],h.update&&h.update(t)),s.push(h),(h.top?i:a).push(h)}this.specs=r,this.panels=s,this.top.sync(i),this.bottom.sync(a);for(let c of l)c.dom.classList.add("cm-panel"),c.mount&&c.mount()}else for(let r of this.panels)r.update&&r.update(t)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:t=>Ze.scrollMargins.of(e=>{let n=e.plugin(t);return n&&{top:n.top.scrollMargin(),bottom:n.bottom.scrollMargin()}})});class h1{constructor(e,n,r){this.view=e,this.top=n,this.container=r,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let n of this.panels)n.destroy&&e.indexOf(n)<0&&n.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let n=this.container||this.view.dom;n.insertBefore(this.dom,this.top?n.firstChild:null)}let e=this.dom.firstChild;for(let n of this.panels)if(n.dom.parentNode==this.dom){for(;e!=n.dom;)e=i_(e);e=e.nextSibling}else this.dom.insertBefore(n.dom,e);for(;e;)e=i_(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}}function i_(t){let e=t.nextSibling;return t.remove(),e}const U0=at.define({enables:_q});class Hl extends sd{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}}Hl.prototype.elementClass="";Hl.prototype.toDOM=void 0;Hl.prototype.mapMode=Ds.TrackBefore;Hl.prototype.startSide=Hl.prototype.endSide=-1;Hl.prototype.point=!0;const fv=at.define(),mce=at.define(),pce={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>Rn.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{},side:"before"},j0=at.define();function gce(t){return[Aq(),j0.of({...pce,...t})]}const a_=at.define({combine:t=>t.some(e=>e)});function Aq(t){return[xce]}const xce=Vr.fromClass(class{constructor(t){this.view=t,this.domAfter=null,this.prevViewport=t.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=t.state.facet(j0).map(e=>new l_(t,e)),this.fixed=!t.state.facet(a_);for(let e of this.gutters)e.config.side=="after"?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),t.scrollDOM.insertBefore(this.dom,t.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(t){if(this.updateGutters(t)){let e=this.prevViewport,n=t.view.viewport,r=Math.min(e.to,n.to)-Math.max(e.from,n.from);this.syncGutters(r<(n.to-n.from)*.8)}if(t.geometryChanged){let e=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=e,this.domAfter&&(this.domAfter.style.minHeight=e)}this.view.state.facet(a_)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=t.view.viewport}syncGutters(t){let e=this.dom.nextSibling;t&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let n=Rn.iter(this.view.state.facet(fv),this.view.viewport.from),r=[],s=this.gutters.map(i=>new vce(i,this.view.viewport,-this.view.documentPadding.top));for(let i of this.view.viewportLineBlocks)if(r.length&&(r=[]),Array.isArray(i.type)){let a=!0;for(let l of i.type)if(l.type==ni.Text&&a){eO(n,r,l.from);for(let c of s)c.line(this.view,l,r);a=!1}else if(l.widget)for(let c of s)c.widget(this.view,l)}else if(i.type==ni.Text){eO(n,r,i.from);for(let a of s)a.line(this.view,i,r)}else if(i.widget)for(let a of s)a.widget(this.view,i);for(let i of s)i.finish();t&&(this.view.scrollDOM.insertBefore(this.dom,e),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(t){let e=t.startState.facet(j0),n=t.state.facet(j0),r=t.docChanged||t.heightChanged||t.viewportChanged||!Rn.eq(t.startState.facet(fv),t.state.facet(fv),t.view.viewport.from,t.view.viewport.to);if(e==n)for(let s of this.gutters)s.update(t)&&(r=!0);else{r=!0;let s=[];for(let i of n){let a=e.indexOf(i);a<0?s.push(new l_(this.view,i)):(this.gutters[a].update(t),s.push(this.gutters[a]))}for(let i of this.gutters)i.dom.remove(),s.indexOf(i)<0&&i.destroy();for(let i of s)i.config.side=="after"?this.getDOMAfter().appendChild(i.dom):this.dom.appendChild(i.dom);this.gutters=s}return r}destroy(){for(let t of this.gutters)t.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:t=>Ze.scrollMargins.of(e=>{let n=e.plugin(t);if(!n||n.gutters.length==0||!n.fixed)return null;let r=n.dom.offsetWidth*e.scaleX,s=n.domAfter?n.domAfter.offsetWidth*e.scaleX:0;return e.textDirection==gr.LTR?{left:r,right:s}:{right:r,left:s}})});function o_(t){return Array.isArray(t)?t:[t]}function eO(t,e,n){for(;t.value&&t.from<=n;)t.from==n&&e.push(t.value),t.next()}class vce{constructor(e,n,r){this.gutter=e,this.height=r,this.i=0,this.cursor=Rn.iter(e.markers,n.from)}addElement(e,n,r){let{gutter:s}=this,i=(n.top-this.height)/e.scaleY,a=n.height/e.scaleY;if(this.i==s.elements.length){let l=new Mq(e,a,i,r);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(e,a,i,r);this.height=n.bottom,this.i++}line(e,n,r){let s=[];eO(this.cursor,s,n.from),r.length&&(s=s.concat(r));let i=this.gutter.config.lineMarker(e,n,s);i&&s.unshift(i);let a=this.gutter;s.length==0&&!a.config.renderEmptyElements||this.addElement(e,n,s)}widget(e,n){let r=this.gutter.config.widgetMarker(e,n.widget,n),s=r?[r]:null;for(let i of e.state.facet(mce)){let a=i(e,n.widget,n);a&&(s||(s=[])).push(a)}s&&this.addElement(e,n,s)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let n=e.elements.pop();e.dom.removeChild(n.dom),n.destroy()}}}class l_{constructor(e,n){this.view=e,this.config=n,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let r in n.domEventHandlers)this.dom.addEventListener(r,s=>{let i=s.target,a;if(i!=this.dom&&this.dom.contains(i)){for(;i.parentNode!=this.dom;)i=i.parentNode;let c=i.getBoundingClientRect();a=(c.top+c.bottom)/2}else a=s.clientY;let l=e.lineBlockAtHeight(a-e.documentTop);n.domEventHandlers[r](e,l,s)&&s.preventDefault()});this.markers=o_(n.markers(e)),n.initialSpacer&&(this.spacer=new Mq(e,0,0,[n.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let n=this.markers;if(this.markers=o_(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],e);s!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[s])}let r=e.view.viewport;return!Rn.eq(this.markers,n,r.from,r.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}}class Mq{constructor(e,n,r,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,n,r,s)}update(e,n,r,s){this.height!=n&&(this.height=n,this.dom.style.height=n+"px"),this.above!=r&&(this.dom.style.marginTop=(this.above=r)?r+"px":""),yce(this.markers,s)||this.setMarkers(e,s)}setMarkers(e,n){let r="cm-gutterElement",s=this.dom.firstChild;for(let i=0,a=0;;){let l=a,c=ii(l,c,d)||a(l,c,d):a}return r}})}});class H4 extends Hl{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}}function Q4(t,e){return t.state.facet(Ch).formatNumber(e,t.state)}const Sce=j0.compute([Ch],t=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(bce)},lineMarker(e,n,r){return r.some(s=>s.toDOM)?null:new H4(Q4(e,e.state.doc.lineAt(n.from).number))},widgetMarker:(e,n,r)=>{for(let s of e.state.facet(wce)){let i=s(e,n,r);if(i)return i}return null},lineMarkerChange:e=>e.startState.facet(Ch)!=e.state.facet(Ch),initialSpacer(e){return new H4(Q4(e,c_(e.state.doc.lines)))},updateSpacer(e,n){let r=Q4(n.view,c_(n.view.state.doc.lines));return r==e.number?e:new H4(r)},domEventHandlers:t.facet(Ch).domEventHandlers,side:"before"}));function kce(t={}){return[Ch.of(t),Aq(),Sce]}function c_(t){let e=9;for(;e{let e=[],n=-1;for(let r of t.selection.ranges){let s=t.doc.lineAt(r.head).from;s>n&&(n=s,e.push(Oce.range(s)))}return Rn.of(e)});function Nce(){return jce}const Rq=1024;let Cce=0;class V4{constructor(e,n){this.from=e,this.to=n}}class sn{constructor(e={}){this.id=Cce++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=e.combine||null}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=si.match(e)),n=>{let r=e(n);return r===void 0?null:[this,r]}}}sn.closedBy=new sn({deserialize:t=>t.split(" ")});sn.openedBy=new sn({deserialize:t=>t.split(" ")});sn.group=new sn({deserialize:t=>t.split(" ")});sn.isolate=new sn({deserialize:t=>{if(t&&t!="rtl"&&t!="ltr"&&t!="auto")throw new RangeError("Invalid value for isolate: "+t);return t||"auto"}});sn.contextHash=new sn({perNode:!0});sn.lookAhead=new sn({perNode:!0});sn.mounted=new sn({perNode:!0});class Yv{constructor(e,n,r){this.tree=e,this.overlay=n,this.parser=r}static get(e){return e&&e.props&&e.props[sn.mounted.id]}}const Tce=Object.create(null);class si{constructor(e,n,r,s=0){this.name=e,this.props=n,this.id=r,this.flags=s}static define(e){let n=e.props&&e.props.length?Object.create(null):Tce,r=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),s=new si(e.name||"",n,e.id,r);if(e.props){for(let i of e.props)if(Array.isArray(i)||(i=i(s)),i){if(i[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");n[i[0].id]=i[1]}}return s}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let n=this.prop(sn.group);return n?n.indexOf(e)>-1:!1}return this.id==e}static match(e){let n=Object.create(null);for(let r in e)for(let s of r.split(" "))n[s]=e[r];return r=>{for(let s=r.prop(sn.group),i=-1;i<(s?s.length:0);i++){let a=n[i<0?r.name:s[i]];if(a)return a}}}}si.none=new si("",Object.create(null),0,8);class hb{constructor(e){this.types=e;for(let n=0;n0;for(let c=this.cursor(a|hs.IncludeAnonymous);;){let d=!1;if(c.from<=i&&c.to>=s&&(!l&&c.type.isAnonymous||n(c)!==!1)){if(c.firstChild())continue;d=!0}for(;d&&r&&(l||!c.type.isAnonymous)&&r(c),!c.nextSibling();){if(!c.parent())return;d=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let n in this.props)e.push([+n,this.props[n]]);return e}balance(e={}){return this.children.length<=8?this:p6(si.none,this.children,this.positions,0,this.children.length,0,this.length,(n,r,s)=>new ar(this.type,n,r,s,this.propValues),e.makeTree||((n,r,s)=>new ar(si.none,n,r,s)))}static build(e){return Mce(e)}}ar.empty=new ar(si.none,[],[],0);class f6{constructor(e,n){this.buffer=e,this.index=n}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new f6(this.buffer,this.index)}}class Yc{constructor(e,n,r){this.buffer=e,this.length=n,this.set=r}get type(){return si.none}toString(){let e=[];for(let n=0;n0));c=a[c+3]);return l}slice(e,n,r){let s=this.buffer,i=new Uint16Array(n-e),a=0;for(let l=e,c=0;l=e&&ne;case 1:return n<=e&&r>e;case 2:return r>e;case 4:return!0}}function W0(t,e,n,r){for(var s;t.from==t.to||(n<1?t.from>=e:t.from>e)||(n>-1?t.to<=e:t.to0?l.length:-1;e!=d;e+=n){let h=l[e],m=c[e]+a.from;if(Dq(s,r,m,m+h.length)){if(h instanceof Yc){if(i&hs.ExcludeBuffers)continue;let g=h.findChild(0,h.buffer.length,n,r-m,s);if(g>-1)return new jo(new Ece(a,h,e,m),null,g)}else if(i&hs.IncludeAnonymous||!h.type.isAnonymous||m6(h)){let g;if(!(i&hs.IgnoreMounts)&&(g=Yv.get(h))&&!g.overlay)return new ki(g.tree,m,e,a);let x=new ki(h,m,e,a);return i&hs.IncludeAnonymous||!x.type.isAnonymous?x:x.nextChild(n<0?h.children.length-1:0,n,r,s)}}}if(i&hs.IncludeAnonymous||!a.type.isAnonymous||(a.index>=0?e=a.index+n:e=n<0?-1:a._parent._tree.children.length,a=a._parent,!a))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}enter(e,n,r=0){let s;if(!(r&hs.IgnoreOverlays)&&(s=Yv.get(this._tree))&&s.overlay){let i=e-this.from;for(let{from:a,to:l}of s.overlay)if((n>0?a<=i:a=i:l>i))return new ki(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,n,r)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function d_(t,e,n,r){let s=t.cursor(),i=[];if(!s.firstChild())return i;if(n!=null){for(let a=!1;!a;)if(a=s.type.is(n),!s.nextSibling())return i}for(;;){if(r!=null&&s.type.is(r))return i;if(s.type.is(e)&&i.push(s.node),!s.nextSibling())return r==null?i:[]}}function tO(t,e,n=e.length-1){for(let r=t;n>=0;r=r.parent){if(!r)return!1;if(!r.type.isAnonymous){if(e[n]&&e[n]!=r.name)return!1;n--}}return!0}class Ece{constructor(e,n,r,s){this.parent=e,this.buffer=n,this.index=r,this.start=s}}class jo extends Pq{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,n,r){super(),this.context=e,this._parent=n,this.index=r,this.type=e.buffer.set.types[e.buffer.buffer[r]]}child(e,n,r){let{buffer:s}=this.context,i=s.findChild(this.index+4,s.buffer[this.index+3],e,n-this.context.start,r);return i<0?null:new jo(this.context,this,i)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,n,r=0){if(r&hs.ExcludeBuffers)return null;let{buffer:s}=this.context,i=s.findChild(this.index+4,s.buffer[this.index+3],n>0?1:-1,e-this.context.start,n);return i<0?null:new jo(this.context,this,i)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,n=e.buffer[this.index+3];return n<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new jo(this.context,this._parent,n):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,n=this._parent?this._parent.index+4:0;return this.index==n?this.externalSibling(-1):new jo(this.context,this._parent,e.findChild(n,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],n=[],{buffer:r}=this.context,s=this.index+4,i=r.buffer[this.index+3];if(i>s){let a=r.buffer[this.index+1];e.push(r.slice(s,i,a)),n.push(0)}return new ar(this.type,e,n,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function zq(t){if(!t.length)return null;let e=0,n=t[0];for(let i=1;in.from||a.to=e){let l=new ki(a.tree,a.overlay[0].from+i.from,-1,i);(s||(s=[r])).push(W0(l,e,n,!1))}}return s?zq(s):r}class nO{get name(){return this.type.name}constructor(e,n=0){if(this.mode=n,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,e instanceof ki)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let r=e._parent;r;r=r._parent)this.stack.unshift(r.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,n){this.index=e;let{start:r,buffer:s}=this.buffer;return this.type=n||s.set.types[s.buffer[e]],this.from=r+s.buffer[e+1],this.to=r+s.buffer[e+2],!0}yield(e){return e?e instanceof ki?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,n,r){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,n,r,this.mode));let{buffer:s}=this.buffer,i=s.findChild(this.index+4,s.buffer[this.index+3],e,n-this.buffer.start,r);return i<0?!1:(this.stack.push(this.index),this.yieldBuf(i))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,n,r=this.mode){return this.buffer?r&hs.ExcludeBuffers?!1:this.enterChild(1,e,n):this.yield(this._tree.enter(e,n,r))}parent(){if(!this.buffer)return this.yieldNode(this.mode&hs.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&hs.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:n}=this.buffer,r=this.stack.length-1;if(e<0){let s=r<0?0:this.stack[r]+4;if(this.index!=s)return this.yieldBuf(n.findChild(s,this.index,-1,0,4))}else{let s=n.buffer[this.index+3];if(s<(r<0?n.buffer.length:n.buffer[this.stack[r]+3]))return this.yieldBuf(s)}return r<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let n,r,{buffer:s}=this;if(s){if(e>0){if(this.index-1)for(let i=n+e,a=e<0?-1:r._tree.children.length;i!=a;i+=e){let l=r._tree.children[i];if(this.mode&hs.IncludeAnonymous||l instanceof Yc||!l.type.isAnonymous||m6(l))return!1}return!0}move(e,n){if(n&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,n=0){for(;(this.from==this.to||(n<1?this.from>=e:this.from>e)||(n>-1?this.to<=e:this.to=0;){for(let a=e;a;a=a._parent)if(a.index==s){if(s==this.index)return a;n=a,r=i+1;break e}s=this.stack[--i]}for(let s=r;s=0;i--){if(i<0)return tO(this._tree,e,s);let a=r[n.buffer[this.stack[i]]];if(!a.isAnonymous){if(e[s]&&e[s]!=a.name)return!1;s--}}return!0}}function m6(t){return t.children.some(e=>e instanceof Yc||!e.type.isAnonymous||m6(e))}function Mce(t){var e;let{buffer:n,nodeSet:r,maxBufferLength:s=Rq,reused:i=[],minRepeatType:a=r.types.length}=t,l=Array.isArray(n)?new f6(n,n.length):n,c=r.types,d=0,h=0;function m(E,_,A,L,P,B){let{id:$,start:U,end:te,size:z}=l,Q=h,F=d;if(z<0)if(l.next(),z==-1){let ie=i[$];A.push(ie),L.push(U-E);return}else if(z==-3){d=$;return}else if(z==-4){h=$;return}else throw new RangeError(`Unrecognized record size: ${z}`);let Y=c[$],J,X,R=U-E;if(te-U<=s&&(X=S(l.pos-_,P))){let ie=new Uint16Array(X.size-X.skip),G=l.pos-X.size,I=ie.length;for(;l.pos>G;)I=k(X.start,ie,I);J=new Yc(ie,te-X.start,r),R=X.start-E}else{let ie=l.pos-z;l.next();let G=[],I=[],V=$>=a?$:-1,ee=0,ne=te;for(;l.pos>ie;)V>=0&&l.id==V&&l.size>=0?(l.end<=ne-s&&(y(G,I,U,ee,l.end,ne,V,Q,F),ee=G.length,ne=l.end),l.next()):B>2500?g(U,ie,G,I):m(U,ie,G,I,V,B+1);if(V>=0&&ee>0&&ee-1&&ee>0){let W=x(Y,F);J=p6(Y,G,I,0,G.length,0,te-U,W,W)}else J=w(Y,G,I,te-U,Q-te,F)}A.push(J),L.push(R)}function g(E,_,A,L){let P=[],B=0,$=-1;for(;l.pos>_;){let{id:U,start:te,end:z,size:Q}=l;if(Q>4)l.next();else{if($>-1&&te<$)break;$<0&&($=z-s),P.push(U,te,z),B++,l.next()}}if(B){let U=new Uint16Array(B*4),te=P[P.length-2];for(let z=P.length-3,Q=0;z>=0;z-=3)U[Q++]=P[z],U[Q++]=P[z+1]-te,U[Q++]=P[z+2]-te,U[Q++]=Q;A.push(new Yc(U,P[2]-te,r)),L.push(te-E)}}function x(E,_){return(A,L,P)=>{let B=0,$=A.length-1,U,te;if($>=0&&(U=A[$])instanceof ar){if(!$&&U.type==E&&U.length==P)return U;(te=U.prop(sn.lookAhead))&&(B=L[$]+U.length+te)}return w(E,A,L,P,B,_)}}function y(E,_,A,L,P,B,$,U,te){let z=[],Q=[];for(;E.length>L;)z.push(E.pop()),Q.push(_.pop()+A-P);E.push(w(r.types[$],z,Q,B-P,U-B,te)),_.push(P-A)}function w(E,_,A,L,P,B,$){if(B){let U=[sn.contextHash,B];$=$?[U].concat($):[U]}if(P>25){let U=[sn.lookAhead,P];$=$?[U].concat($):[U]}return new ar(E,_,A,L,$)}function S(E,_){let A=l.fork(),L=0,P=0,B=0,$=A.end-s,U={size:0,start:0,skip:0};e:for(let te=A.pos-E;A.pos>te;){let z=A.size;if(A.id==_&&z>=0){U.size=L,U.start=P,U.skip=B,B+=4,L+=4,A.next();continue}let Q=A.pos-z;if(z<0||Q=a?4:0,Y=A.start;for(A.next();A.pos>Q;){if(A.size<0)if(A.size==-3)F+=4;else break e;else A.id>=a&&(F+=4);A.next()}P=Y,L+=z,B+=F}return(_<0||L==E)&&(U.size=L,U.start=P,U.skip=B),U.size>4?U:void 0}function k(E,_,A){let{id:L,start:P,end:B,size:$}=l;if(l.next(),$>=0&&L4){let te=l.pos-($-4);for(;l.pos>te;)A=k(E,_,A)}_[--A]=U,_[--A]=B-E,_[--A]=P-E,_[--A]=L}else $==-3?d=L:$==-4&&(h=L);return A}let j=[],N=[];for(;l.pos>0;)m(t.start||0,t.bufferStart||0,j,N,-1,0);let T=(e=t.length)!==null&&e!==void 0?e:j.length?N[0]+j[0].length:0;return new ar(c[t.topID],j.reverse(),N.reverse(),T)}const h_=new WeakMap;function mv(t,e){if(!t.isAnonymous||e instanceof Yc||e.type!=t)return 1;let n=h_.get(e);if(n==null){n=1;for(let r of e.children){if(r.type!=t||!(r instanceof ar)){n=1;break}n+=mv(t,r)}h_.set(e,n)}return n}function p6(t,e,n,r,s,i,a,l,c){let d=0;for(let y=r;y=h)break;_+=A}if(N==T+1){if(_>h){let A=y[T];x(A.children,A.positions,0,A.children.length,w[T]+j);continue}m.push(y[T])}else{let A=w[N-1]+y[N-1].length-E;m.push(p6(t,y,w,T,N,E,A,null,c))}g.push(E+j-i)}}return x(e,n,r,s,0),(l||c)(m,g,a)}class Rce{constructor(){this.map=new WeakMap}setBuffer(e,n,r){let s=this.map.get(e);s||this.map.set(e,s=new Map),s.set(n,r)}getBuffer(e,n){let r=this.map.get(e);return r&&r.get(n)}set(e,n){e instanceof jo?this.setBuffer(e.context.buffer,e.index,n):e instanceof ki&&this.map.set(e.tree,n)}get(e){return e instanceof jo?this.getBuffer(e.context.buffer,e.index):e instanceof ki?this.map.get(e.tree):void 0}cursorSet(e,n){e.buffer?this.setBuffer(e.buffer.buffer,e.index,n):this.map.set(e.tree,n)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}}class Ju{constructor(e,n,r,s,i=!1,a=!1){this.from=e,this.to=n,this.tree=r,this.offset=s,this.open=(i?1:0)|(a?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,n=[],r=!1){let s=[new Ju(0,e.length,e,0,!1,r)];for(let i of n)i.to>e.length&&s.push(i);return s}static applyChanges(e,n,r=128){if(!n.length)return e;let s=[],i=1,a=e.length?e[0]:null;for(let l=0,c=0,d=0;;l++){let h=l=r)for(;a&&a.from=g.from||m<=g.to||d){let x=Math.max(g.from,c)-d,y=Math.min(g.to,m)-d;g=x>=y?null:new Ju(x,y,g.tree,g.offset+d,l>0,!!h)}if(g&&s.push(g),a.to>m)break;a=inew V4(s.from,s.to)):[new V4(0,0)]:[new V4(0,e.length)],this.createParse(e,n||[],r)}parse(e,n,r){let s=this.startParse(e,n,r);for(;;){let i=s.advance();if(i)return i}}};class Dce{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,n){return this.string.slice(e,n)}}new sn({perNode:!0});let Pce=0;class ha{constructor(e,n,r,s){this.name=e,this.set=n,this.base=r,this.modified=s,this.id=Pce++}toString(){let{name:e}=this;for(let n of this.modified)n.name&&(e=`${n.name}(${e})`);return e}static define(e,n){let r=typeof e=="string"?e:"?";if(e instanceof ha&&(n=e),n?.base)throw new Error("Can not derive from a modified tag");let s=new ha(r,[],null,[]);if(s.set.push(s),n)for(let i of n.set)s.set.push(i);return s}static defineModifier(e){let n=new Kv(e);return r=>r.modified.indexOf(n)>-1?r:Kv.get(r.base||r,r.modified.concat(n).sort((s,i)=>s.id-i.id))}}let zce=0;class Kv{constructor(e){this.name=e,this.instances=[],this.id=zce++}static get(e,n){if(!n.length)return e;let r=n[0].instances.find(l=>l.base==e&&Ice(n,l.modified));if(r)return r;let s=[],i=new ha(e.name,s,e,n);for(let l of n)l.instances.push(i);let a=Lce(n);for(let l of e.set)if(!l.modified.length)for(let c of a)s.push(Kv.get(l,c));return i}}function Ice(t,e){return t.length==e.length&&t.every((n,r)=>n==e[r])}function Lce(t){let e=[[]];for(let n=0;nr.length-n.length)}function x6(t){let e=Object.create(null);for(let n in t){let r=t[n];Array.isArray(r)||(r=[r]);for(let s of n.split(" "))if(s){let i=[],a=2,l=s;for(let m=0;;){if(l=="..."&&m>0&&m+3==s.length){a=1;break}let g=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!g)throw new RangeError("Invalid path: "+s);if(i.push(g[0]=="*"?"":g[0][0]=='"'?JSON.parse(g[0]):g[0]),m+=g[0].length,m==s.length)break;let x=s[m++];if(m==s.length&&x=="!"){a=0;break}if(x!="/")throw new RangeError("Invalid path: "+s);l=s.slice(m)}let c=i.length-1,d=i[c];if(!d)throw new RangeError("Invalid path: "+s);let h=new G0(r,a,c>0?i.slice(0,c):null);e[d]=h.sort(e[d])}}return Iq.add(e)}const Iq=new sn({combine(t,e){let n,r,s;for(;t||e;){if(!t||e&&t.depth>=e.depth?(s=e,e=e.next):(s=t,t=t.next),n&&n.mode==s.mode&&!s.context&&!n.context)continue;let i=new G0(s.tags,s.mode,s.context);n?n.next=i:r=i,n=i}return r}});class G0{constructor(e,n,r,s){this.tags=e,this.mode=n,this.context=r,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth{let a=s;for(let l of i)for(let c of l.set){let d=n[c.id];if(d){a=a?a+" "+d:d;break}}return a},scope:r}}function Bce(t,e){let n=null;for(let r of t){let s=r.style(e);s&&(n=n?n+" "+s:s)}return n}function Fce(t,e,n,r=0,s=t.length){let i=new qce(r,Array.isArray(e)?e:[e],n);i.highlightRange(t.cursor(),r,s,"",i.highlighters),i.flush(s)}class qce{constructor(e,n,r){this.at=e,this.highlighters=n,this.span=r,this.class=""}startSpan(e,n){n!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=n)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,n,r,s,i){let{type:a,from:l,to:c}=e;if(l>=r||c<=n)return;a.isTop&&(i=this.highlighters.filter(x=>!x.scope||x.scope(a)));let d=s,h=$ce(e)||G0.empty,m=Bce(i,h.tags);if(m&&(d&&(d+=" "),d+=m,h.mode==1&&(s+=(s?" ":"")+m)),this.startSpan(Math.max(n,l),d),h.opaque)return;let g=e.tree&&e.tree.prop(sn.mounted);if(g&&g.overlay){let x=e.node.enter(g.overlay[0].from+l,1),y=this.highlighters.filter(S=>!S.scope||S.scope(g.tree.type)),w=e.firstChild();for(let S=0,k=l;;S++){let j=S=N||!e.nextSibling())););if(!j||N>r)break;k=j.to+l,k>n&&(this.highlightRange(x.cursor(),Math.max(n,j.from+l),Math.min(r,k),"",y),this.startSpan(Math.min(r,k),d))}w&&e.parent()}else if(e.firstChild()){g&&(s="");do if(!(e.to<=n)){if(e.from>=r)break;this.highlightRange(e,n,r,s,i),this.startSpan(Math.min(r,e.to),d)}while(e.nextSibling());e.parent()}}}function $ce(t){let e=t.type.prop(Iq);for(;e&&e.context&&!t.matchContext(e.context);)e=e.next;return e||null}const Ke=ha.define,m1=Ke(),Mc=Ke(),f_=Ke(Mc),m_=Ke(Mc),Rc=Ke(),p1=Ke(Rc),U4=Ke(Rc),po=Ke(),Ru=Ke(po),fo=Ke(),mo=Ke(),rO=Ke(),qm=Ke(rO),g1=Ke(),ve={comment:m1,lineComment:Ke(m1),blockComment:Ke(m1),docComment:Ke(m1),name:Mc,variableName:Ke(Mc),typeName:f_,tagName:Ke(f_),propertyName:m_,attributeName:Ke(m_),className:Ke(Mc),labelName:Ke(Mc),namespace:Ke(Mc),macroName:Ke(Mc),literal:Rc,string:p1,docString:Ke(p1),character:Ke(p1),attributeValue:Ke(p1),number:U4,integer:Ke(U4),float:Ke(U4),bool:Ke(Rc),regexp:Ke(Rc),escape:Ke(Rc),color:Ke(Rc),url:Ke(Rc),keyword:fo,self:Ke(fo),null:Ke(fo),atom:Ke(fo),unit:Ke(fo),modifier:Ke(fo),operatorKeyword:Ke(fo),controlKeyword:Ke(fo),definitionKeyword:Ke(fo),moduleKeyword:Ke(fo),operator:mo,derefOperator:Ke(mo),arithmeticOperator:Ke(mo),logicOperator:Ke(mo),bitwiseOperator:Ke(mo),compareOperator:Ke(mo),updateOperator:Ke(mo),definitionOperator:Ke(mo),typeOperator:Ke(mo),controlOperator:Ke(mo),punctuation:rO,separator:Ke(rO),bracket:qm,angleBracket:Ke(qm),squareBracket:Ke(qm),paren:Ke(qm),brace:Ke(qm),content:po,heading:Ru,heading1:Ke(Ru),heading2:Ke(Ru),heading3:Ke(Ru),heading4:Ke(Ru),heading5:Ke(Ru),heading6:Ke(Ru),contentSeparator:Ke(po),list:Ke(po),quote:Ke(po),emphasis:Ke(po),strong:Ke(po),link:Ke(po),monospace:Ke(po),strikethrough:Ke(po),inserted:Ke(),deleted:Ke(),changed:Ke(),invalid:Ke(),meta:g1,documentMeta:Ke(g1),annotation:Ke(g1),processingInstruction:Ke(g1),definition:ha.defineModifier("definition"),constant:ha.defineModifier("constant"),function:ha.defineModifier("function"),standard:ha.defineModifier("standard"),local:ha.defineModifier("local"),special:ha.defineModifier("special")};for(let t in ve){let e=ve[t];e instanceof ha&&(e.name=t)}Lq([{tag:ve.link,class:"tok-link"},{tag:ve.heading,class:"tok-heading"},{tag:ve.emphasis,class:"tok-emphasis"},{tag:ve.strong,class:"tok-strong"},{tag:ve.keyword,class:"tok-keyword"},{tag:ve.atom,class:"tok-atom"},{tag:ve.bool,class:"tok-bool"},{tag:ve.url,class:"tok-url"},{tag:ve.labelName,class:"tok-labelName"},{tag:ve.inserted,class:"tok-inserted"},{tag:ve.deleted,class:"tok-deleted"},{tag:ve.literal,class:"tok-literal"},{tag:ve.string,class:"tok-string"},{tag:ve.number,class:"tok-number"},{tag:[ve.regexp,ve.escape,ve.special(ve.string)],class:"tok-string2"},{tag:ve.variableName,class:"tok-variableName"},{tag:ve.local(ve.variableName),class:"tok-variableName tok-local"},{tag:ve.definition(ve.variableName),class:"tok-variableName tok-definition"},{tag:ve.special(ve.variableName),class:"tok-variableName2"},{tag:ve.definition(ve.propertyName),class:"tok-propertyName tok-definition"},{tag:ve.typeName,class:"tok-typeName"},{tag:ve.namespace,class:"tok-namespace"},{tag:ve.className,class:"tok-className"},{tag:ve.macroName,class:"tok-macroName"},{tag:ve.propertyName,class:"tok-propertyName"},{tag:ve.operator,class:"tok-operator"},{tag:ve.comment,class:"tok-comment"},{tag:ve.meta,class:"tok-meta"},{tag:ve.invalid,class:"tok-invalid"},{tag:ve.punctuation,class:"tok-punctuation"}]);var W4;const Qu=new sn;function Bq(t){return at.define({combine:t?e=>e.concat(t):void 0})}const Hce=new sn;class va{constructor(e,n,r=[],s=""){this.data=e,this.name=s,wn.prototype.hasOwnProperty("tree")||Object.defineProperty(wn.prototype,"tree",{get(){return Ss(this)}}),this.parser=n,this.extension=[Kc.of(this),wn.languageData.of((i,a,l)=>{let c=p_(i,a,l),d=c.type.prop(Qu);if(!d)return[];let h=i.facet(d),m=c.type.prop(Hce);if(m){let g=c.resolve(a-c.from,l);for(let x of m)if(x.test(g,i)){let y=i.facet(x.facet);return x.type=="replace"?y:y.concat(h)}}return h})].concat(r)}isActiveAt(e,n,r=-1){return p_(e,n,r).type.prop(Qu)==this.data}findRegions(e){let n=e.facet(Kc);if(n?.data==this.data)return[{from:0,to:e.doc.length}];if(!n||!n.allowsNesting)return[];let r=[],s=(i,a)=>{if(i.prop(Qu)==this.data){r.push({from:a,to:a+i.length});return}let l=i.prop(sn.mounted);if(l){if(l.tree.prop(Qu)==this.data){if(l.overlay)for(let c of l.overlay)r.push({from:c.from+a,to:c.to+a});else r.push({from:a,to:a+i.length});return}else if(l.overlay){let c=r.length;if(s(l.tree,l.overlay[0].from+a),r.length>c)return}}for(let c=0;cr.isTop?n:void 0)]}),e.name)}configure(e,n){return new X0(this.data,this.parser.configure(e),n||this.name)}get allowsNesting(){return this.parser.hasWrappers()}}function Ss(t){let e=t.field(va.state,!1);return e?e.tree:ar.empty}class Qce{constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,n){let r=this.cursorPos-this.string.length;return e=this.cursorPos?this.doc.sliceString(e,n):this.string.slice(e-r,n-r)}}let $m=null;class rf{constructor(e,n,r=[],s,i,a,l,c){this.parser=e,this.state=n,this.fragments=r,this.tree=s,this.treeLen=i,this.viewport=a,this.skipped=l,this.scheduleOn=c,this.parse=null,this.tempSkipped=[]}static create(e,n,r){return new rf(e,n,[],ar.empty,0,r,[],null)}startParse(){return this.parser.startParse(new Qce(this.state.doc),this.fragments)}work(e,n){return n!=null&&n>=this.state.doc.length&&(n=void 0),this.tree!=ar.empty&&this.isDone(n??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var r;if(typeof e=="number"){let s=Date.now()+e;e=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),n!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>n)&&n=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(n=this.parse.advance()););}),this.treeLen=e,this.tree=n,this.fragments=this.withoutTempSkipped(Ju.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let n=$m;$m=this;try{return e()}finally{$m=n}}withoutTempSkipped(e){for(let n;n=this.tempSkipped.pop();)e=g_(e,n.from,n.to);return e}changes(e,n){let{fragments:r,tree:s,treeLen:i,viewport:a,skipped:l}=this;if(this.takeTree(),!e.empty){let c=[];if(e.iterChangedRanges((d,h,m,g)=>c.push({fromA:d,toA:h,fromB:m,toB:g})),r=Ju.applyChanges(r,c),s=ar.empty,i=0,a={from:e.mapPos(a.from,-1),to:e.mapPos(a.to,1)},this.skipped.length){l=[];for(let d of this.skipped){let h=e.mapPos(d.from,1),m=e.mapPos(d.to,-1);he.from&&(this.fragments=g_(this.fragments,s,i),this.skipped.splice(r--,1))}return this.skipped.length>=n?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,n){this.skipped.push({from:e,to:n})}static getSkippingParser(e){return new class extends g6{createParse(n,r,s){let i=s[0].from,a=s[s.length-1].to;return{parsedPos:i,advance(){let c=$m;if(c){for(let d of s)c.tempSkipped.push(d);e&&(c.scheduleOn=c.scheduleOn?Promise.all([c.scheduleOn,e]):e)}return this.parsedPos=a,new ar(si.none,[],[],a-i)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let n=this.fragments;return this.treeLen>=e&&n.length&&n[0].from==0&&n[0].to>=e}static get(){return $m}}function g_(t,e,n){return Ju.applyChanges(t,[{fromA:e,toA:n,fromB:e,toB:n}])}class sf{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let n=this.context.changes(e.changes,e.state),r=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),n.viewport.to);return n.work(20,r)||n.takeTree(),new sf(n)}static init(e){let n=Math.min(3e3,e.doc.length),r=rf.create(e.facet(Kc).parser,e,{from:0,to:n});return r.work(20,n)||r.takeTree(),new sf(r)}}va.state=Os.define({create:sf.init,update(t,e){for(let n of e.effects)if(n.is(va.setState))return n.value;return e.startState.facet(Kc)!=e.state.facet(Kc)?sf.init(e.state):t.apply(e)}});let Fq=t=>{let e=setTimeout(()=>t(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(Fq=t=>{let e=-1,n=setTimeout(()=>{e=requestIdleCallback(t,{timeout:400})},100);return()=>e<0?clearTimeout(n):cancelIdleCallback(e)});const G4=typeof navigator<"u"&&(!((W4=navigator.scheduling)===null||W4===void 0)&&W4.isInputPending)?()=>navigator.scheduling.isInputPending():null,Vce=Vr.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let n=this.view.state.field(va.state).context;(n.updateViewport(e.view.viewport)||this.view.viewport.to>n.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(n)}scheduleWork(){if(this.working)return;let{state:e}=this.view,n=e.field(va.state);(n.tree!=n.context.tree||!n.context.isDone(e.doc.length))&&(this.working=Fq(this.work))}work(e){this.working=null;let n=Date.now();if(this.chunkEnds+1e3,c=i.context.work(()=>G4&&G4()||Date.now()>a,s+(l?0:1e5));this.chunkBudget-=Date.now()-n,(c||this.chunkBudget<=0)&&(i.context.takeTree(),this.view.dispatch({effects:va.setState.of(new sf(i.context))})),this.chunkBudget>0&&!(c&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(i.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(n=>vi(this.view.state,n)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),Kc=at.define({combine(t){return t.length?t[0]:null},enables:t=>[va.state,Vce,Ze.contentAttributes.compute([t],e=>{let n=e.facet(t);return n&&n.name?{"data-language":n.name}:{}})]});class qq{constructor(e,n=[]){this.language=e,this.support=n,this.extension=[e,n]}}const Uce=at.define(),Wp=at.define({combine:t=>{if(!t.length)return" ";let e=t[0];if(!e||/\S/.test(e)||Array.from(e).some(n=>n!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(t[0]));return e}});function ld(t){let e=t.facet(Wp);return e.charCodeAt(0)==9?t.tabSize*e.length:e.length}function Y0(t,e){let n="",r=t.tabSize,s=t.facet(Wp)[0];if(s==" "){for(;e>=r;)n+=" ",e-=r;s=" "}for(let i=0;i=e?Wce(t,n,e):null}class fb{constructor(e,n={}){this.state=e,this.options=n,this.unit=ld(e)}lineAt(e,n=1){let r=this.state.doc.lineAt(e),{simulateBreak:s,simulateDoubleBreak:i}=this.options;return s!=null&&s>=r.from&&s<=r.to?i&&s==e?{text:"",from:e}:(n<0?s-1&&(i+=a-this.countColumn(r,r.search(/\S|$/))),i}countColumn(e,n=e.length){return Nf(e,this.state.tabSize,n)}lineIndent(e,n=1){let{text:r,from:s}=this.lineAt(e,n),i=this.options.overrideIndentation;if(i){let a=i(s);if(a>-1)return a}return this.countColumn(r,r.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const mb=new sn;function Wce(t,e,n){let r=e.resolveStack(n),s=e.resolveInner(n,-1).resolve(n,0).enterUnfinishedNodesBefore(n);if(s!=r.node){let i=[];for(let a=s;a&&!(a.fromr.node.to||a.from==r.node.from&&a.type==r.node.type);a=a.parent)i.push(a);for(let a=i.length-1;a>=0;a--)r={node:i[a],next:r}}return $q(r,t,n)}function $q(t,e,n){for(let r=t;r;r=r.next){let s=Xce(r.node);if(s)return s(y6.create(e,n,r))}return 0}function Gce(t){return t.pos==t.options.simulateBreak&&t.options.simulateDoubleBreak}function Xce(t){let e=t.type.prop(mb);if(e)return e;let n=t.firstChild,r;if(n&&(r=n.type.prop(sn.closedBy))){let s=t.lastChild,i=s&&r.indexOf(s.name)>-1;return a=>Hq(a,!0,1,void 0,i&&!Gce(a)?s.from:void 0)}return t.parent==null?Yce:null}function Yce(){return 0}class y6 extends fb{constructor(e,n,r){super(e.state,e.options),this.base=e,this.pos=n,this.context=r}get node(){return this.context.node}static create(e,n,r){return new y6(e,n,r)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let n=this.state.doc.lineAt(e.from);for(;;){let r=e.resolve(n.from);for(;r.parent&&r.parent.from==r.from;)r=r.parent;if(Kce(r,e))break;n=this.state.doc.lineAt(r.from)}return this.lineIndent(n.from)}continue(){return $q(this.context.next,this.base,this.pos)}}function Kce(t,e){for(let n=e;n;n=n.parent)if(t==n)return!0;return!1}function Zce(t){let e=t.node,n=e.childAfter(e.from),r=e.lastChild;if(!n)return null;let s=t.options.simulateBreak,i=t.state.doc.lineAt(n.from),a=s==null||s<=i.from?i.to:Math.min(i.to,s);for(let l=n.to;;){let c=e.childAfter(l);if(!c||c==r)return null;if(!c.type.isSkipped){if(c.from>=a)return null;let d=/^ */.exec(i.text.slice(n.to-i.from))[0].length;return{from:n.from,to:n.to+d}}l=c.to}}function X4({closing:t,align:e=!0,units:n=1}){return r=>Hq(r,e,n,t)}function Hq(t,e,n,r,s){let i=t.textAfter,a=i.match(/^\s*/)[0].length,l=r&&i.slice(a,a+r.length)==r||s==t.pos+a,c=e?Zce(t):null;return c?l?t.column(c.from):t.column(c.to):t.baseIndent+(l?0:t.unit*n)}function x_({except:t,units:e=1}={}){return n=>{let r=t&&t.test(n.textAfter);return n.baseIndent+(r?0:e*n.unit)}}const Jce=200;function eue(){return wn.transactionFilter.of(t=>{if(!t.docChanged||!t.isUserEvent("input.type")&&!t.isUserEvent("input.complete"))return t;let e=t.startState.languageDataAt("indentOnInput",t.startState.selection.main.head);if(!e.length)return t;let n=t.newDoc,{head:r}=t.newSelection.main,s=n.lineAt(r);if(r>s.from+Jce)return t;let i=n.sliceString(s.from,r);if(!e.some(d=>d.test(i)))return t;let{state:a}=t,l=-1,c=[];for(let{head:d}of a.selection.ranges){let h=a.doc.lineAt(d);if(h.from==l)continue;l=h.from;let m=v6(a,h.from);if(m==null)continue;let g=/^\s*/.exec(h.text)[0],x=Y0(a,m);g!=x&&c.push({from:h.from,to:h.from+g.length,insert:x})}return c.length?[t,{changes:c,sequential:!0}]:t})}const tue=at.define(),b6=new sn;function Qq(t){let e=t.firstChild,n=t.lastChild;return e&&e.ton)continue;if(i&&l.from=e&&d.to>n&&(i=d)}}return i}function rue(t){let e=t.lastChild;return e&&e.to==t.to&&e.type.isError}function Zv(t,e,n){for(let r of t.facet(tue)){let s=r(t,e,n);if(s)return s}return nue(t,e,n)}function Vq(t,e){let n=e.mapPos(t.from,1),r=e.mapPos(t.to,-1);return n>=r?void 0:{from:n,to:r}}const pb=Ft.define({map:Vq}),Gp=Ft.define({map:Vq});function Uq(t){let e=[];for(let{head:n}of t.state.selection.ranges)e.some(r=>r.from<=n&&r.to>=n)||e.push(t.lineBlockAt(n));return e}const cd=Os.define({create(){return kt.none},update(t,e){e.isUserEvent("delete")&&e.changes.iterChangedRanges((n,r)=>t=v_(t,n,r)),t=t.map(e.changes);for(let n of e.effects)if(n.is(pb)&&!sue(t,n.value.from,n.value.to)){let{preparePlaceholder:r}=e.state.facet(Xq),s=r?kt.replace({widget:new due(r(e.state,n.value))}):y_;t=t.update({add:[s.range(n.value.from,n.value.to)]})}else n.is(Gp)&&(t=t.update({filter:(r,s)=>n.value.from!=r||n.value.to!=s,filterFrom:n.value.from,filterTo:n.value.to}));return e.selection&&(t=v_(t,e.selection.main.head)),t},provide:t=>Ze.decorations.from(t),toJSON(t,e){let n=[];return t.between(0,e.doc.length,(r,s)=>{n.push(r,s)}),n},fromJSON(t){if(!Array.isArray(t)||t.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let n=0;n{se&&(r=!0)}),r?t.update({filterFrom:e,filterTo:n,filter:(s,i)=>s>=n||i<=e}):t}function Jv(t,e,n){var r;let s=null;return(r=t.field(cd,!1))===null||r===void 0||r.between(e,n,(i,a)=>{(!s||s.from>i)&&(s={from:i,to:a})}),s}function sue(t,e,n){let r=!1;return t.between(e,e,(s,i)=>{s==e&&i==n&&(r=!0)}),r}function Wq(t,e){return t.field(cd,!1)?e:e.concat(Ft.appendConfig.of(Yq()))}const iue=t=>{for(let e of Uq(t)){let n=Zv(t.state,e.from,e.to);if(n)return t.dispatch({effects:Wq(t.state,[pb.of(n),Gq(t,n)])}),!0}return!1},aue=t=>{if(!t.state.field(cd,!1))return!1;let e=[];for(let n of Uq(t)){let r=Jv(t.state,n.from,n.to);r&&e.push(Gp.of(r),Gq(t,r,!1))}return e.length&&t.dispatch({effects:e}),e.length>0};function Gq(t,e,n=!0){let r=t.state.doc.lineAt(e.from).number,s=t.state.doc.lineAt(e.to).number;return Ze.announce.of(`${t.state.phrase(n?"Folded lines":"Unfolded lines")} ${r} ${t.state.phrase("to")} ${s}.`)}const oue=t=>{let{state:e}=t,n=[];for(let r=0;r{let e=t.state.field(cd,!1);if(!e||!e.size)return!1;let n=[];return e.between(0,t.state.doc.length,(r,s)=>{n.push(Gp.of({from:r,to:s}))}),t.dispatch({effects:n}),!0},cue=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:iue},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:aue},{key:"Ctrl-Alt-[",run:oue},{key:"Ctrl-Alt-]",run:lue}],uue={placeholderDOM:null,preparePlaceholder:null,placeholderText:"…"},Xq=at.define({combine(t){return $o(t,uue)}});function Yq(t){return[cd,mue]}function Kq(t,e){let{state:n}=t,r=n.facet(Xq),s=a=>{let l=t.lineBlockAt(t.posAtDOM(a.target)),c=Jv(t.state,l.from,l.to);c&&t.dispatch({effects:Gp.of(c)}),a.preventDefault()};if(r.placeholderDOM)return r.placeholderDOM(t,s,e);let i=document.createElement("span");return i.textContent=r.placeholderText,i.setAttribute("aria-label",n.phrase("folded code")),i.title=n.phrase("unfold"),i.className="cm-foldPlaceholder",i.onclick=s,i}const y_=kt.replace({widget:new class extends Ho{toDOM(t){return Kq(t,null)}}});class due extends Ho{constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return Kq(e,this.value)}}const hue={openText:"⌄",closedText:"›",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1};class Y4 extends Hl{constructor(e,n){super(),this.config=e,this.open=n}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let n=document.createElement("span");return n.textContent=this.open?this.config.openText:this.config.closedText,n.title=e.state.phrase(this.open?"Fold line":"Unfold line"),n}}function fue(t={}){let e={...hue,...t},n=new Y4(e,!0),r=new Y4(e,!1),s=Vr.fromClass(class{constructor(a){this.from=a.viewport.from,this.markers=this.buildMarkers(a)}update(a){(a.docChanged||a.viewportChanged||a.startState.facet(Kc)!=a.state.facet(Kc)||a.startState.field(cd,!1)!=a.state.field(cd,!1)||Ss(a.startState)!=Ss(a.state)||e.foldingChanged(a))&&(this.markers=this.buildMarkers(a.view))}buildMarkers(a){let l=new ql;for(let c of a.viewportLineBlocks){let d=Jv(a.state,c.from,c.to)?r:Zv(a.state,c.from,c.to)?n:null;d&&l.add(c.from,c.from,d)}return l.finish()}}),{domEventHandlers:i}=e;return[s,gce({class:"cm-foldGutter",markers(a){var l;return((l=a.plugin(s))===null||l===void 0?void 0:l.markers)||Rn.empty},initialSpacer(){return new Y4(e,!1)},domEventHandlers:{...i,click:(a,l,c)=>{if(i.click&&i.click(a,l,c))return!0;let d=Jv(a.state,l.from,l.to);if(d)return a.dispatch({effects:Gp.of(d)}),!0;let h=Zv(a.state,l.from,l.to);return h?(a.dispatch({effects:pb.of(h)}),!0):!1}}}),Yq()]}const mue=Ze.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}});class Xp{constructor(e,n){this.specs=e;let r;function s(l){let c=Wc.newName();return(r||(r=Object.create(null)))["."+c]=l,c}const i=typeof n.all=="string"?n.all:n.all?s(n.all):void 0,a=n.scope;this.scope=a instanceof va?l=>l.prop(Qu)==a.data:a?l=>l==a:void 0,this.style=Lq(e.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:i}).style,this.module=r?new Wc(r):null,this.themeType=n.themeType}static define(e,n){return new Xp(e,n||{})}}const sO=at.define(),Zq=at.define({combine(t){return t.length?[t[0]]:null}});function K4(t){let e=t.facet(sO);return e.length?e:t.facet(Zq)}function Jq(t,e){let n=[gue],r;return t instanceof Xp&&(t.module&&n.push(Ze.styleModule.of(t.module)),r=t.themeType),e?.fallback?n.push(Zq.of(t)):r?n.push(sO.computeN([Ze.darkTheme],s=>s.facet(Ze.darkTheme)==(r=="dark")?[t]:[])):n.push(sO.of(t)),n}class pue{constructor(e){this.markCache=Object.create(null),this.tree=Ss(e.state),this.decorations=this.buildDeco(e,K4(e.state)),this.decoratedTo=e.viewport.to}update(e){let n=Ss(e.state),r=K4(e.state),s=r!=K4(e.startState),{viewport:i}=e.view,a=e.changes.mapPos(this.decoratedTo,1);n.length=i.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=a):(n!=this.tree||e.viewportChanged||s)&&(this.tree=n,this.decorations=this.buildDeco(e.view,r),this.decoratedTo=i.to)}buildDeco(e,n){if(!n||!this.tree.length)return kt.none;let r=new ql;for(let{from:s,to:i}of e.visibleRanges)Fce(this.tree,n,(a,l,c)=>{r.add(a,l,this.markCache[c]||(this.markCache[c]=kt.mark({class:c})))},s,i);return r.finish()}}const gue=ou.high(Vr.fromClass(pue,{decorations:t=>t.decorations})),xue=Xp.define([{tag:ve.meta,color:"#404740"},{tag:ve.link,textDecoration:"underline"},{tag:ve.heading,textDecoration:"underline",fontWeight:"bold"},{tag:ve.emphasis,fontStyle:"italic"},{tag:ve.strong,fontWeight:"bold"},{tag:ve.strikethrough,textDecoration:"line-through"},{tag:ve.keyword,color:"#708"},{tag:[ve.atom,ve.bool,ve.url,ve.contentSeparator,ve.labelName],color:"#219"},{tag:[ve.literal,ve.inserted],color:"#164"},{tag:[ve.string,ve.deleted],color:"#a11"},{tag:[ve.regexp,ve.escape,ve.special(ve.string)],color:"#e40"},{tag:ve.definition(ve.variableName),color:"#00f"},{tag:ve.local(ve.variableName),color:"#30a"},{tag:[ve.typeName,ve.namespace],color:"#085"},{tag:ve.className,color:"#167"},{tag:[ve.special(ve.variableName),ve.macroName],color:"#256"},{tag:ve.definition(ve.propertyName),color:"#00c"},{tag:ve.comment,color:"#940"},{tag:ve.invalid,color:"#f00"}]),vue=Ze.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),e$=1e4,t$="()[]{}",n$=at.define({combine(t){return $o(t,{afterCursor:!0,brackets:t$,maxScanDistance:e$,renderMatch:wue})}}),yue=kt.mark({class:"cm-matchingBracket"}),bue=kt.mark({class:"cm-nonmatchingBracket"});function wue(t){let e=[],n=t.matched?yue:bue;return e.push(n.range(t.start.from,t.start.to)),t.end&&e.push(n.range(t.end.from,t.end.to)),e}const Sue=Os.define({create(){return kt.none},update(t,e){if(!e.docChanged&&!e.selection)return t;let n=[],r=e.state.facet(n$);for(let s of e.state.selection.ranges){if(!s.empty)continue;let i=No(e.state,s.head,-1,r)||s.head>0&&No(e.state,s.head-1,1,r)||r.afterCursor&&(No(e.state,s.head,1,r)||s.headZe.decorations.from(t)}),kue=[Sue,vue];function Oue(t={}){return[n$.of(t),kue]}const jue=new sn;function iO(t,e,n){let r=t.prop(e<0?sn.openedBy:sn.closedBy);if(r)return r;if(t.name.length==1){let s=n.indexOf(t.name);if(s>-1&&s%2==(e<0?1:0))return[n[s+e]]}return null}function aO(t){let e=t.type.prop(jue);return e?e(t.node):t}function No(t,e,n,r={}){let s=r.maxScanDistance||e$,i=r.brackets||t$,a=Ss(t),l=a.resolveInner(e,n);for(let c=l;c;c=c.parent){let d=iO(c.type,n,i);if(d&&c.from0?e>=h.from&&eh.from&&e<=h.to))return Nue(t,e,n,c,h,d,i)}}return Cue(t,e,n,a,l.type,s,i)}function Nue(t,e,n,r,s,i,a){let l=r.parent,c={from:s.from,to:s.to},d=0,h=l?.cursor();if(h&&(n<0?h.childBefore(r.from):h.childAfter(r.to)))do if(n<0?h.to<=r.from:h.from>=r.to){if(d==0&&i.indexOf(h.type.name)>-1&&h.from0)return null;let d={from:n<0?e-1:e,to:n>0?e+1:e},h=t.doc.iterRange(e,n>0?t.doc.length:0),m=0;for(let g=0;!h.next().done&&g<=i;){let x=h.value;n<0&&(g+=x.length);let y=e+g*n;for(let w=n>0?0:x.length-1,S=n>0?x.length:-1;w!=S;w+=n){let k=a.indexOf(x[w]);if(!(k<0||r.resolveInner(y+w,1).type!=s))if(k%2==0==n>0)m++;else{if(m==1)return{start:d,end:{from:y+w,to:y+w+1},matched:k>>1==c>>1};m--}}n>0&&(g+=x.length)}return h.done?{start:d,matched:!1}:null}function b_(t,e,n,r=0,s=0){e==null&&(e=t.search(/[^\s\u00a0]/),e==-1&&(e=t.length));let i=s;for(let a=r;a=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.posn}eatSpace(){let e=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e}skipToEnd(){this.pos=this.string.length}skipTo(e){let n=this.string.indexOf(e,this.pos);if(n>-1)return this.pos=n,!0}backUp(e){this.pos-=e}column(){return this.lastColumnPosr?a.toLowerCase():a,i=this.string.substr(this.pos,e.length);return s(i)==s(e)?(n!==!1&&(this.pos+=e.length),!0):null}else{let s=this.string.slice(this.pos).match(e);return s&&s.index>0?null:(s&&n!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}}function Tue(t){return{name:t.name||"",token:t.token,blankLine:t.blankLine||(()=>{}),startState:t.startState||(()=>!0),copyState:t.copyState||Eue,indent:t.indent||(()=>null),languageData:t.languageData||{},tokenTable:t.tokenTable||k6,mergeTokens:t.mergeTokens!==!1}}function Eue(t){if(typeof t!="object")return t;let e={};for(let n in t){let r=t[n];e[n]=r instanceof Array?r.slice():r}return e}const w_=new WeakMap;class w6 extends va{constructor(e){let n=Bq(e.languageData),r=Tue(e),s,i=new class extends g6{createParse(a,l,c){return new Aue(s,a,l,c)}};super(n,i,[],e.name),this.topNode=Due(n,this),s=this,this.streamParser=r,this.stateAfter=new sn({perNode:!0}),this.tokenTable=e.tokenTable?new o$(r.tokenTable):Rue}static define(e){return new w6(e)}getIndent(e){let n,{overrideIndentation:r}=e.options;r&&(n=w_.get(e.state),n!=null&&n1e4)return null;for(;i=r&&n+e.length<=s&&e.prop(t.stateAfter);if(i)return{state:t.streamParser.copyState(i),pos:n+e.length};for(let a=e.children.length-1;a>=0;a--){let l=e.children[a],c=n+e.positions[a],d=l instanceof ar&&c=e.length)return e;!s&&n==0&&e.type==t.topNode&&(s=!0);for(let i=e.children.length-1;i>=0;i--){let a=e.positions[i],l=e.children[i],c;if(an&&S6(t,i.tree,0-i.offset,n,l),d;if(c&&c.pos<=r&&(d=s$(t,i.tree,n+i.offset,c.pos+i.offset,!1)))return{state:c.state,tree:d}}return{state:t.streamParser.startState(s?ld(s):4),tree:ar.empty}}let Aue=class{constructor(e,n,r,s){this.lang=e,this.input=n,this.fragments=r,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let i=rf.get(),a=s[0].from,{state:l,tree:c}=_ue(e,r,a,this.to,i?.state);this.state=l,this.parsedPos=this.chunkStart=a+c.length;for(let d=0;dd.from<=i.viewport.from&&d.to>=i.viewport.from)&&(this.state=this.lang.streamParser.startState(ld(i.state)),i.skipUntilInView(this.parsedPos,i.viewport.from),this.parsedPos=i.viewport.from),this.moveRangeIndex()}advance(){let e=rf.get(),n=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),r=Math.min(n,this.chunkStart+512);for(e&&(r=Math.min(r,e.viewport.to));this.parsedPos=n?this.finish():e&&this.parsedPos>=e.viewport.to?(e.skipUntilInView(this.parsedPos,n),this.finish()):null}stopAt(e){this.stoppedAt=e}lineAfter(e){let n=this.input.chunk(e);if(this.input.lineChunks)n==` +3.某句话如果已经被回复过,不要重复回复`}),[y,w]=b.useState({emoji_chance:.4,max_reg_num:40,do_replace:!0,check_interval:10,steal_emoji:!0,content_filtration:!1,filtration_prompt:"符合公序良俗"}),[S,k]=b.useState({enable_tool:!0,enable_mood:!1,mood_update_threshold:1,emotion_style:"情绪较为稳定,但遇遇特定事件的时候起伏较大",all_global:!0}),[j,N]=b.useState({api_key:""}),[T,E]=b.useState(!1),[_,A]=b.useState(""),D=[{id:"bot-basic",title:"Bot基础",description:"配置机器人的基本信息",icon:o0},{id:"personality",title:"人格配置",description:"定义机器人的性格和说话风格",icon:Lv},{id:"emoji",title:"表情包",description:"配置表情包相关设置",icon:Ij},{id:"other",title:"其他设置",description:"工具、情绪系统等配置",icon:Vc},{id:"siliconflow",title:"API配置",description:"配置硅基流动API密钥",icon:jI}],q=(n+1)/D.length*100;b.useEffect(()=>{(async()=>{try{d(!0);const[$,K,Y,R,ie]=await Promise.all([Nie(),Cie(),Tie(),Eie(),_ie()]);m($),x(K),w(Y),k(R),N(ie)}catch($){e({title:"加载配置失败",description:$ instanceof Error?$.message:"无法加载现有配置,将使用默认值",variant:"destructive"})}finally{d(!1)}})()},[e]);const B=async()=>{l(!0);try{switch(n){case 0:await Aie(h);break;case 1:await Mie(g);break;case 2:await Rie(y);break;case 3:await Die(S);break;case 4:await Pie(j);break}return e({title:"保存成功",description:`${D[n].title}配置已保存`}),!0}catch(L){return e({title:"保存失败",description:L instanceof Error?L.message:"未知错误",variant:"destructive"}),!1}finally{l(!1)}},H=async()=>{await B()&&n{n>0&&r(n-1)},ee=async()=>{i(!0),E(!0);try{if(A("正在保存API配置..."),!await B()){i(!1),E(!1);return}A("正在完成初始化..."),await uE(),A("正在重启麦麦..."),await cb(),e({title:"配置完成",description:"麦麦正在重启以应用新配置..."}),A("等待麦麦重启完成...");const $=60;let K=0,Y=!1;for(;K<$&&!Y;){await new Promise(R=>setTimeout(R,1e3));try{(await zie()).running&&(Y=!0,A("重启成功!正在跳转..."))}catch{K++}}if(!Y)throw new Error("重启超时,请手动检查麦麦状态");setTimeout(()=>{t({to:"/"})},1e3)}catch(L){E(!1),e({title:"配置失败",description:L instanceof Error?L.message:"未知错误",variant:"destructive"})}finally{i(!1)}},I=async()=>{try{await uE(),t({to:"/"})}catch(L){e({title:"跳过失败",description:L instanceof Error?L.message:"未知错误",variant:"destructive"})}},V=()=>{switch(n){case 0:return o.jsx(wie,{config:h,onChange:m});case 1:return o.jsx(Sie,{config:g,onChange:x});case 2:return o.jsx(kie,{config:y,onChange:w});case 3:return o.jsx(Oie,{config:S,onChange:k});case 4:return o.jsx(jie,{config:j,onChange:N});default:return null}};return o.jsxs("div",{className:"relative flex min-h-screen flex-col items-center justify-center overflow-hidden bg-gradient-to-br from-primary/5 via-background to-secondary/5 p-4 md:p-6",children:[T&&o.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm",children:o.jsxs("div",{className:"mx-auto flex max-w-md flex-col items-center space-y-6 rounded-lg border bg-card p-8 text-center shadow-lg",children:[o.jsx("div",{className:"flex h-20 w-20 items-center justify-center rounded-full bg-primary/10",children:o.jsx(Us,{className:"h-10 w-10 animate-spin text-primary"})}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),o.jsx("p",{className:"text-muted-foreground",children:_})]}),o.jsx("div",{className:"w-full",children:o.jsx("div",{className:"h-2 w-full overflow-hidden rounded-full bg-secondary",children:o.jsx("div",{className:"h-full w-full animate-pulse bg-primary",style:{animation:"pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite"}})})}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"请稍候,这可能需要一分钟..."})]})}),o.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[o.jsx("div",{className:"absolute left-1/4 top-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-primary/5 blur-3xl"}),o.jsx("div",{className:"absolute right-1/4 bottom-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-secondary/5 blur-3xl"})]}),c?o.jsxs("div",{className:"relative z-10 text-center",children:[o.jsx("div",{className:"mx-auto mb-4 flex h-16 w-16 items-center justify-center",children:o.jsx("div",{className:"h-12 w-12 animate-spin rounded-full border-4 border-primary border-t-transparent"})}),o.jsx("p",{className:"text-lg font-medium",children:"加载配置中..."}),o.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"正在读取现有配置"})]}):o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"relative z-10 w-full max-w-4xl",children:[o.jsxs("div",{className:"mb-6 md:mb-8 text-center",children:[o.jsx("div",{className:"mx-auto mb-4 flex h-12 w-12 md:h-16 md:w-16 items-center justify-center rounded-2xl bg-primary/10",children:o.jsx(Uee,{className:"h-6 w-6 md:h-8 md:w-8 text-primary",strokeWidth:2,fill:"none"})}),o.jsx("h1",{className:"mb-2 text-2xl md:text-3xl font-bold",children:"首次配置向导"}),o.jsxs("p",{className:"text-sm md:text-base text-muted-foreground",children:["让我们一起完成 ",Jj," 的初始配置"]})]}),o.jsxs("div",{className:"mb-6 md:mb-8",children:[o.jsxs("div",{className:"mb-2 flex items-center justify-between text-xs md:text-sm",children:[o.jsxs("span",{className:"text-muted-foreground",children:["步骤 ",n+1," / ",D.length]}),o.jsxs("span",{className:"font-medium text-primary",children:[Math.round(q),"%"]})]}),o.jsx(Qp,{value:q,className:"h-2"})]}),o.jsx("div",{className:"mb-6 md:mb-8 flex justify-between",children:D.map((L,$)=>{const K=L.icon;return o.jsxs("div",{className:xe("flex flex-1 flex-col items-center gap-1 md:gap-2",$t({to:"/"}),className:"gap-2 w-full sm:w-auto",children:[o.jsx(L0,{className:"h-4 w-4"}),"返回首页"]}),o.jsxs(ue,{size:"lg",variant:"outline",onClick:()=>window.history.back(),className:"gap-2 w-full sm:w-auto",children:[o.jsx(Bv,{className:"h-4 w-4"}),"返回上一页"]})]}),o.jsx("div",{className:"mt-12 pt-8 border-t border-border",children:o.jsx("p",{className:"text-sm text-muted-foreground",children:"如果您认为这是一个错误,请联系系统管理员"})})]})})}var PB=["PageUp","PageDown"],zB=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],IB={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},jf="Slider",[xk,Lie,Bie]=Qy(jf),[LB]=Da(jf,[Bie]),[Fie,ub]=LB(jf),BB=b.forwardRef((t,e)=>{const{name:n,min:r=0,max:s=100,step:i=1,orientation:a="horizontal",disabled:l=!1,minStepsBetweenThumbs:c=0,defaultValue:d=[r],value:h,onValueChange:m=()=>{},onValueCommit:g=()=>{},inverted:x=!1,form:y,...w}=t,S=b.useRef(new Set),k=b.useRef(0),N=a==="horizontal"?qie:$ie,[T=[],E]=Kl({prop:h,defaultProp:d,onChange:H=>{[...S.current][k.current]?.focus(),m(H)}}),_=b.useRef(T);function A(H){const W=Wie(T,H);B(H,W)}function D(H){B(H,k.current)}function q(){const H=_.current[k.current];T[k.current]!==H&&g(T)}function B(H,W,{commit:ee}={commit:!1}){const I=Kie(i),V=Zie(Math.round((H-r)/i)*i+r,I),L=Tj(V,[r,s]);E(($=[])=>{const K=Vie($,L,W);if(Yie(K,c*i)){k.current=K.indexOf(L);const Y=String(K)!==String($);return Y&&ee&&g(K),Y?K:$}else return $})}return o.jsx(Fie,{scope:t.__scopeSlider,name:n,disabled:l,min:r,max:s,valueIndexToChangeRef:k,thumbs:S.current,values:T,orientation:a,form:y,children:o.jsx(xk.Provider,{scope:t.__scopeSlider,children:o.jsx(xk.Slot,{scope:t.__scopeSlider,children:o.jsx(N,{"aria-disabled":l,"data-disabled":l?"":void 0,...w,ref:e,onPointerDown:nt(w.onPointerDown,()=>{l||(_.current=T)}),min:r,max:s,inverted:x,onSlideStart:l?void 0:A,onSlideMove:l?void 0:D,onSlideEnd:l?void 0:q,onHomeKeyDown:()=>!l&&B(r,0,{commit:!0}),onEndKeyDown:()=>!l&&B(s,T.length-1,{commit:!0}),onStepKeyDown:({event:H,direction:W})=>{if(!l){const V=PB.includes(H.key)||H.shiftKey&&zB.includes(H.key)?10:1,L=k.current,$=T[L],K=i*V*W;B($+K,L,{commit:!0})}}})})})})});BB.displayName=jf;var[FB,qB]=LB(jf,{startEdge:"left",endEdge:"right",size:"width",direction:1}),qie=b.forwardRef((t,e)=>{const{min:n,max:r,dir:s,inverted:i,onSlideStart:a,onSlideMove:l,onSlideEnd:c,onStepKeyDown:d,...h}=t,[m,g]=b.useState(null),x=er(e,N=>g(N)),y=b.useRef(void 0),w=Rp(s),S=w==="ltr",k=S&&!i||!S&&i;function j(N){const T=y.current||m.getBoundingClientRect(),E=[0,T.width],A=t6(E,k?[n,r]:[r,n]);return y.current=T,A(N-T.left)}return o.jsx(FB,{scope:t.__scopeSlider,startEdge:k?"left":"right",endEdge:k?"right":"left",direction:k?1:-1,size:"width",children:o.jsx($B,{dir:w,"data-orientation":"horizontal",...h,ref:x,style:{...h.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:N=>{const T=j(N.clientX);a?.(T)},onSlideMove:N=>{const T=j(N.clientX);l?.(T)},onSlideEnd:()=>{y.current=void 0,c?.()},onStepKeyDown:N=>{const E=IB[k?"from-left":"from-right"].includes(N.key);d?.({event:N,direction:E?-1:1})}})})}),$ie=b.forwardRef((t,e)=>{const{min:n,max:r,inverted:s,onSlideStart:i,onSlideMove:a,onSlideEnd:l,onStepKeyDown:c,...d}=t,h=b.useRef(null),m=er(e,h),g=b.useRef(void 0),x=!s;function y(w){const S=g.current||h.current.getBoundingClientRect(),k=[0,S.height],N=t6(k,x?[r,n]:[n,r]);return g.current=S,N(w-S.top)}return o.jsx(FB,{scope:t.__scopeSlider,startEdge:x?"bottom":"top",endEdge:x?"top":"bottom",size:"height",direction:x?1:-1,children:o.jsx($B,{"data-orientation":"vertical",...d,ref:m,style:{...d.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:w=>{const S=y(w.clientY);i?.(S)},onSlideMove:w=>{const S=y(w.clientY);a?.(S)},onSlideEnd:()=>{g.current=void 0,l?.()},onStepKeyDown:w=>{const k=IB[x?"from-bottom":"from-top"].includes(w.key);c?.({event:w,direction:k?-1:1})}})})}),$B=b.forwardRef((t,e)=>{const{__scopeSlider:n,onSlideStart:r,onSlideMove:s,onSlideEnd:i,onHomeKeyDown:a,onEndKeyDown:l,onStepKeyDown:c,...d}=t,h=ub(jf,n);return o.jsx(Sn.span,{...d,ref:e,onKeyDown:nt(t.onKeyDown,m=>{m.key==="Home"?(a(m),m.preventDefault()):m.key==="End"?(l(m),m.preventDefault()):PB.concat(zB).includes(m.key)&&(c(m),m.preventDefault())}),onPointerDown:nt(t.onPointerDown,m=>{const g=m.target;g.setPointerCapture(m.pointerId),m.preventDefault(),h.thumbs.has(g)?g.focus():r(m)}),onPointerMove:nt(t.onPointerMove,m=>{m.target.hasPointerCapture(m.pointerId)&&s(m)}),onPointerUp:nt(t.onPointerUp,m=>{const g=m.target;g.hasPointerCapture(m.pointerId)&&(g.releasePointerCapture(m.pointerId),i(m))})})}),HB="SliderTrack",QB=b.forwardRef((t,e)=>{const{__scopeSlider:n,...r}=t,s=ub(HB,n);return o.jsx(Sn.span,{"data-disabled":s.disabled?"":void 0,"data-orientation":s.orientation,...r,ref:e})});QB.displayName=HB;var vk="SliderRange",VB=b.forwardRef((t,e)=>{const{__scopeSlider:n,...r}=t,s=ub(vk,n),i=qB(vk,n),a=b.useRef(null),l=er(e,a),c=s.values.length,d=s.values.map(g=>GB(g,s.min,s.max)),h=c>1?Math.min(...d):0,m=100-Math.max(...d);return o.jsx(Sn.span,{"data-orientation":s.orientation,"data-disabled":s.disabled?"":void 0,...r,ref:l,style:{...t.style,[i.startEdge]:h+"%",[i.endEdge]:m+"%"}})});VB.displayName=vk;var yk="SliderThumb",UB=b.forwardRef((t,e)=>{const n=Lie(t.__scopeSlider),[r,s]=b.useState(null),i=er(e,l=>s(l)),a=b.useMemo(()=>r?n().findIndex(l=>l.ref.current===r):-1,[n,r]);return o.jsx(Hie,{...t,ref:i,index:a})}),Hie=b.forwardRef((t,e)=>{const{__scopeSlider:n,index:r,name:s,...i}=t,a=ub(yk,n),l=qB(yk,n),[c,d]=b.useState(null),h=er(e,j=>d(j)),m=c?a.form||!!c.closest("form"):!0,g=iI(c),x=a.values[r],y=x===void 0?0:GB(x,a.min,a.max),w=Uie(r,a.values.length),S=g?.[l.size],k=S?Gie(S,y,l.direction):0;return b.useEffect(()=>{if(c)return a.thumbs.add(c),()=>{a.thumbs.delete(c)}},[c,a.thumbs]),o.jsxs("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[l.startEdge]:`calc(${y}% + ${k}px)`},children:[o.jsx(xk.ItemSlot,{scope:t.__scopeSlider,children:o.jsx(Sn.span,{role:"slider","aria-label":t["aria-label"]||w,"aria-valuemin":a.min,"aria-valuenow":x,"aria-valuemax":a.max,"aria-orientation":a.orientation,"data-orientation":a.orientation,"data-disabled":a.disabled?"":void 0,tabIndex:a.disabled?void 0:0,...i,ref:h,style:x===void 0?{display:"none"}:t.style,onFocus:nt(t.onFocus,()=>{a.valueIndexToChangeRef.current=r})})}),m&&o.jsx(WB,{name:s??(a.name?a.name+(a.values.length>1?"[]":""):void 0),form:a.form,value:x},r)]})});UB.displayName=yk;var Qie="RadioBubbleInput",WB=b.forwardRef(({__scopeSlider:t,value:e,...n},r)=>{const s=b.useRef(null),i=er(s,r),a=sI(e);return b.useEffect(()=>{const l=s.current;if(!l)return;const c=window.HTMLInputElement.prototype,h=Object.getOwnPropertyDescriptor(c,"value").set;if(a!==e&&h){const m=new Event("input",{bubbles:!0});h.call(l,e),l.dispatchEvent(m)}},[a,e]),o.jsx(Sn.input,{style:{display:"none"},...n,ref:i,defaultValue:e})});WB.displayName=Qie;function Vie(t=[],e,n){const r=[...t];return r[n]=e,r.sort((s,i)=>s-i)}function GB(t,e,n){const i=100/(n-e)*(t-e);return Tj(i,[0,100])}function Uie(t,e){return e>2?`Value ${t+1} of ${e}`:e===2?["Minimum","Maximum"][t]:void 0}function Wie(t,e){if(t.length===1)return 0;const n=t.map(s=>Math.abs(s-e)),r=Math.min(...n);return n.indexOf(r)}function Gie(t,e,n){const r=t/2,i=t6([0,50],[0,r]);return(r-i(e)*n)*n}function Xie(t){return t.slice(0,-1).map((e,n)=>t[n+1]-e)}function Yie(t,e){if(e>0){const n=Xie(t);return Math.min(...n)>=e}return!0}function t6(t,e){return n=>{if(t[0]===t[1]||e[0]===e[1])return e[0];const r=(e[1]-e[0])/(t[1]-t[0]);return e[0]+r*(n-t[0])}}function Kie(t){return(String(t).split(".")[1]||"").length}function Zie(t,e){const n=Math.pow(10,e);return Math.round(t*n)/n}var XB=BB,Jie=QB,eae=VB,tae=UB;const Nf=b.forwardRef(({className:t,...e},n)=>o.jsxs(XB,{ref:n,className:xe("relative flex w-full touch-none select-none items-center",t),...e,children:[o.jsx(Jie,{className:"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20",children:o.jsx(eae,{className:"absolute h-full bg-primary"})}),o.jsx(tae,{className:"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"})]}));Nf.displayName=XB.displayName;const Vt=Dee,Ut=Pee,$t=b.forwardRef(({className:t,children:e,...n},r)=>o.jsxs(cI,{ref:r,className:xe("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",t),...n,children:[e,o.jsx(Eee,{asChild:!0,children:o.jsx(Xc,{className:"h-4 w-4 opacity-50"})})]}));$t.displayName=cI.displayName;const YB=b.forwardRef(({className:t,...e},n)=>o.jsx(uI,{ref:n,className:xe("flex cursor-default items-center justify-center py-1",t),...e,children:o.jsx(B0,{className:"h-4 w-4"})}));YB.displayName=uI.displayName;const KB=b.forwardRef(({className:t,...e},n)=>o.jsx(dI,{ref:n,className:xe("flex cursor-default items-center justify-center py-1",t),...e,children:o.jsx(Xc,{className:"h-4 w-4"})}));KB.displayName=dI.displayName;const Ht=b.forwardRef(({className:t,children:e,position:n="popper",...r},s)=>o.jsx(_ee,{children:o.jsxs(hI,{ref:s,className:xe("relative z-[100] max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-hidden rounded-md border border-border bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",n==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:n,...r,children:[o.jsx(YB,{}),o.jsx(Aee,{className:xe("p-1",n==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:e}),o.jsx(KB,{})]})}));Ht.displayName=hI.displayName;const nae=b.forwardRef(({className:t,...e},n)=>o.jsx(fI,{ref:n,className:xe("px-2 py-1.5 text-sm font-semibold",t),...e}));nae.displayName=fI.displayName;const De=b.forwardRef(({className:t,children:e,...n},r)=>o.jsxs(mI,{ref:r,className:xe("relative flex w-full cursor-default select-none items-center rounded-sm py-2 pl-2 pr-8 text-sm outline-none bg-white dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800 focus:bg-gray-100 dark:focus:bg-gray-800 data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),...n,children:[o.jsx("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:o.jsx(Mee,{children:o.jsx(zo,{className:"h-4 w-4"})})}),o.jsx(Ree,{children:e})]}));De.displayName=mI.displayName;const rae=b.forwardRef(({className:t,...e},n)=>o.jsx(pI,{ref:n,className:xe("-mx-1 my-1 h-px bg-muted",t),...e}));rae.displayName=pI.displayName;function sae(t){const e=iae(t),n=b.forwardRef((r,s)=>{const{children:i,...a}=r,l=b.Children.toArray(i),c=l.find(oae);if(c){const d=c.props.children,h=l.map(m=>m===c?b.Children.count(d)>1?b.Children.only(null):b.isValidElement(d)?d.props.children:null:m);return o.jsx(e,{...a,ref:s,children:b.isValidElement(d)?b.cloneElement(d,void 0,h):null})}return o.jsx(e,{...a,ref:s,children:i})});return n.displayName=`${t}.Slot`,n}function iae(t){const e=b.forwardRef((n,r)=>{const{children:s,...i}=n;if(b.isValidElement(s)){const a=cae(s),l=lae(i,s.props);return s.type!==b.Fragment&&(l.ref=r?Gc(r,a):a),b.cloneElement(s,l)}return b.Children.count(s)>1?b.Children.only(null):null});return e.displayName=`${t}.SlotClone`,e}var aae=Symbol("radix.slottable");function oae(t){return b.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===aae}function lae(t,e){const n={...e};for(const r in e){const s=t[r],i=e[r];/^on[A-Z]/.test(r)?s&&i?n[r]=(...l)=>{const c=i(...l);return s(...l),c}:s&&(n[r]=s):r==="style"?n[r]={...s,...i}:r==="className"&&(n[r]=[s,i].filter(Boolean).join(" "))}return{...t,...n}}function cae(t){let e=Object.getOwnPropertyDescriptor(t.props,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning;return n?t.ref:(e=Object.getOwnPropertyDescriptor(t,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning,n?t.props.ref:t.props.ref||t.ref)}var db="Popover",[ZB]=Da(db,[vf]),Vp=vf(),[uae,lu]=ZB(db),JB=t=>{const{__scopePopover:e,children:n,open:r,defaultOpen:s,onOpenChange:i,modal:a=!1}=t,l=Vp(e),c=b.useRef(null),[d,h]=b.useState(!1),[m,g]=Kl({prop:r,defaultProp:s??!1,onChange:i,caller:db});return o.jsx(Yy,{...l,children:o.jsx(uae,{scope:e,contentId:Gi(),triggerRef:c,open:m,onOpenChange:g,onOpenToggle:b.useCallback(()=>g(x=>!x),[g]),hasCustomAnchor:d,onCustomAnchorAdd:b.useCallback(()=>h(!0),[]),onCustomAnchorRemove:b.useCallback(()=>h(!1),[]),modal:a,children:n})})};JB.displayName=db;var eF="PopoverAnchor",dae=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=lu(eF,n),i=Vp(n),{onCustomAnchorAdd:a,onCustomAnchorRemove:l}=s;return b.useEffect(()=>(a(),()=>l()),[a,l]),o.jsx(Ky,{...i,...r,ref:e})});dae.displayName=eF;var tF="PopoverTrigger",nF=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=lu(tF,n),i=Vp(n),a=er(e,s.triggerRef),l=o.jsx(Sn.button,{type:"button","aria-haspopup":"dialog","aria-expanded":s.open,"aria-controls":s.contentId,"data-state":oF(s.open),...r,ref:a,onClick:nt(t.onClick,s.onOpenToggle)});return s.hasCustomAnchor?l:o.jsx(Ky,{asChild:!0,...i,children:l})});nF.displayName=tF;var n6="PopoverPortal",[hae,fae]=ZB(n6,{forceMount:void 0}),rF=t=>{const{__scopePopover:e,forceMount:n,children:r,container:s}=t,i=lu(n6,e);return o.jsx(hae,{scope:e,forceMount:n,children:o.jsx(oi,{present:n||i.open,children:o.jsx(Xy,{asChild:!0,container:s,children:r})})})};rF.displayName=n6;var Kh="PopoverContent",sF=b.forwardRef((t,e)=>{const n=fae(Kh,t.__scopePopover),{forceMount:r=n.forceMount,...s}=t,i=lu(Kh,t.__scopePopover);return o.jsx(oi,{present:r||i.open,children:i.modal?o.jsx(pae,{...s,ref:e}):o.jsx(gae,{...s,ref:e})})});sF.displayName=Kh;var mae=sae("PopoverContent.RemoveScroll"),pae=b.forwardRef((t,e)=>{const n=lu(Kh,t.__scopePopover),r=b.useRef(null),s=er(e,r),i=b.useRef(!1);return b.useEffect(()=>{const a=r.current;if(a)return gI(a)},[]),o.jsx(xI,{as:mae,allowPinchZoom:!0,children:o.jsx(iF,{...t,ref:s,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:nt(t.onCloseAutoFocus,a=>{a.preventDefault(),i.current||n.triggerRef.current?.focus()}),onPointerDownOutside:nt(t.onPointerDownOutside,a=>{const l=a.detail.originalEvent,c=l.button===0&&l.ctrlKey===!0,d=l.button===2||c;i.current=d},{checkForDefaultPrevented:!1}),onFocusOutside:nt(t.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1})})})}),gae=b.forwardRef((t,e)=>{const n=lu(Kh,t.__scopePopover),r=b.useRef(!1),s=b.useRef(!1);return o.jsx(iF,{...t,ref:e,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{t.onCloseAutoFocus?.(i),i.defaultPrevented||(r.current||n.triggerRef.current?.focus(),i.preventDefault()),r.current=!1,s.current=!1},onInteractOutside:i=>{t.onInteractOutside?.(i),i.defaultPrevented||(r.current=!0,i.detail.originalEvent.type==="pointerdown"&&(s.current=!0));const a=i.target;n.triggerRef.current?.contains(a)&&i.preventDefault(),i.detail.originalEvent.type==="focusin"&&s.current&&i.preventDefault()}})}),iF=b.forwardRef((t,e)=>{const{__scopePopover:n,trapFocus:r,onOpenAutoFocus:s,onCloseAutoFocus:i,disableOutsidePointerEvents:a,onEscapeKeyDown:l,onPointerDownOutside:c,onFocusOutside:d,onInteractOutside:h,...m}=t,g=lu(Kh,n),x=Vp(n);return vI(),o.jsx(yI,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:s,onUnmountAutoFocus:i,children:o.jsx(Rj,{asChild:!0,disableOutsidePointerEvents:a,onInteractOutside:h,onEscapeKeyDown:l,onPointerDownOutside:c,onFocusOutside:d,onDismiss:()=>g.onOpenChange(!1),children:o.jsx(Dj,{"data-state":oF(g.open),role:"dialog",id:g.contentId,...x,...m,ref:e,style:{...m.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),aF="PopoverClose",xae=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=lu(aF,n);return o.jsx(Sn.button,{type:"button",...r,ref:e,onClick:nt(t.onClick,()=>s.onOpenChange(!1))})});xae.displayName=aF;var vae="PopoverArrow",yae=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=Vp(n);return o.jsx(Pj,{...s,...r,ref:e})});yae.displayName=vae;function oF(t){return t?"open":"closed"}var bae=JB,wae=nF,Sae=rF,lF=sF;const Bo=bae,Fo=wae,Ka=b.forwardRef(({className:t,align:e="center",sideOffset:n=4,...r},s)=>o.jsx(Sae,{children:o.jsx(lF,{ref:s,align:e,sideOffset:n,className:xe("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]",t),...r})}));Ka.displayName=lF.displayName;const cu="/api/webui/config";async function dE(){const e=await(await gt(`${cu}/bot`)).json();if(!e.success)throw new Error("获取配置数据失败");return e.config}async function Dh(){const e=await(await gt(`${cu}/model`)).json();if(!e.success)throw new Error("获取模型配置数据失败");return e.config}async function hE(t){const n=await(await gt(`${cu}/bot`,{method:"POST",headers:Tt(),body:JSON.stringify(t)})).json();if(!n.success)throw new Error(n.message||"保存配置失败")}async function kae(){const e=await(await gt(`${cu}/bot/raw`)).json();if(!e.success)throw new Error("获取配置源代码失败");return e.content}async function Oae(t){const n=await(await gt(`${cu}/bot/raw`,{method:"POST",headers:Tt(),body:JSON.stringify({raw_content:t})})).json();if(!n.success)throw new Error(n.message||"保存配置失败")}async function Uv(t){const n=await(await gt(`${cu}/model`,{method:"POST",headers:Tt(),body:JSON.stringify(t)})).json();if(!n.success)throw new Error(n.message||"保存配置失败")}async function jae(t,e){const r=await(await gt(`${cu}/bot/section/${t}`,{method:"POST",headers:Tt(),body:JSON.stringify(e)})).json();if(!r.success)throw new Error(r.message||`保存配置节 ${t} 失败`)}async function bk(t,e){const r=await(await gt(`${cu}/model/section/${t}`,{method:"POST",headers:Tt(),body:JSON.stringify(e)})).json();if(!r.success)throw new Error(r.message||`保存配置节 ${t} 失败`)}async function Nae(t,e="openai",n="/models"){const r=new URLSearchParams({provider_name:t,parser:e,endpoint:n}),s=await gt(`/api/webui/models/list?${r}`);if(!s.ok){const a=await s.json().catch(()=>({}));throw new Error(a.detail||`获取模型列表失败 (${s.status})`)}const i=await s.json();if(!i.success)throw new Error("获取模型列表失败");return i.models}async function Cae(t){const e=new URLSearchParams({provider_name:t}),n=await gt(`/api/webui/models/test-connection-by-name?${e}`,{method:"POST"});if(!n.ok){const r=await n.json().catch(()=>({}));throw new Error(r.detail||`测试连接失败 (${n.status})`)}return await n.json()}const Tae=kf("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"}}),ba=b.forwardRef(({className:t,variant:e,...n},r)=>o.jsx("div",{ref:r,role:"alert",className:xe(Tae({variant:e}),t),...n}));ba.displayName="Alert";const Eae=b.forwardRef(({className:t,...e},n)=>o.jsx("h5",{ref:n,className:xe("mb-1 font-medium leading-none tracking-tight",t),...e}));Eae.displayName="AlertTitle";const wa=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("text-sm [&_p]:leading-relaxed",t),...e}));wa.displayName="AlertDescription";function r6({onRestartComplete:t,onRestartFailed:e}){const[n,r]=b.useState(0),[s,i]=b.useState("restarting"),[a,l]=b.useState(0),[c,d]=b.useState(0);b.useEffect(()=>{const g=setInterval(()=>{r(w=>w>=90?w:w+1)},200),x=setInterval(()=>{l(w=>w+1)},1e3),y=setTimeout(()=>{i("checking"),h()},3e3);return()=>{clearInterval(g),clearInterval(x),clearTimeout(y)}},[]);const h=()=>{const x=async()=>{try{if(d(w=>w+1),(await fetch("/api/webui/system/status",{method:"GET",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(3e3)})).ok)r(100),i("success"),setTimeout(()=>{t?.()},1500);else throw new Error("Status check failed")}catch{c<60?setTimeout(x,2e3):(i("failed"),e?.())}};x()},m=g=>{const x=Math.floor(g/60),y=g%60;return`${x}:${y.toString().padStart(2,"0")}`};return o.jsx("div",{className:"fixed inset-0 bg-background/95 backdrop-blur-sm z-50 flex items-center justify-center",children:o.jsxs("div",{className:"max-w-md w-full mx-4 space-y-8",children:[o.jsxs("div",{className:"flex flex-col items-center space-y-4",children:[s==="restarting"&&o.jsxs(o.Fragment,{children:[o.jsx(Us,{className:"h-16 w-16 text-primary animate-spin"}),o.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),o.jsx("p",{className:"text-muted-foreground text-center",children:"请稍候,麦麦正在重启中..."})]}),s==="checking"&&o.jsxs(o.Fragment,{children:[o.jsx(Us,{className:"h-16 w-16 text-primary animate-spin"}),o.jsx("h2",{className:"text-2xl font-bold",children:"检查服务状态"}),o.jsxs("p",{className:"text-muted-foreground text-center",children:["等待服务恢复... (尝试 ",c,"/60)"]})]}),s==="success"&&o.jsxs(o.Fragment,{children:[o.jsx(Ya,{className:"h-16 w-16 text-green-500"}),o.jsx("h2",{className:"text-2xl font-bold",children:"重启成功"}),o.jsx("p",{className:"text-muted-foreground text-center",children:"正在跳转到登录页面..."})]}),s==="failed"&&o.jsxs(o.Fragment,{children:[o.jsx(Lo,{className:"h-16 w-16 text-destructive"}),o.jsx("h2",{className:"text-2xl font-bold",children:"重启超时"}),o.jsx("p",{className:"text-muted-foreground text-center",children:"服务未能在预期时间内恢复,请手动检查或刷新页面"})]})]}),s!=="failed"&&o.jsxs("div",{className:"space-y-2",children:[o.jsx(Qp,{value:n,className:"h-2"}),o.jsxs("div",{className:"flex justify-between text-sm text-muted-foreground",children:[o.jsxs("span",{children:[n,"%"]}),o.jsxs("span",{children:["已用时: ",m(a)]})]})]}),o.jsx("div",{className:"bg-muted/50 rounded-lg p-4 space-y-2",children:o.jsxs("p",{className:"text-sm text-muted-foreground",children:[s==="restarting"&&"🔄 配置已保存,正在重启主程序...",s==="checking"&&"⏳ 正在等待服务恢复,请勿关闭页面...",s==="success"&&"✅ 配置已生效,服务运行正常",s==="failed"&&"⚠️ 如果长时间无响应,请尝试手动重启"]})}),o.jsx("div",{className:"bg-yellow-500/10 border border-yellow-500/50 rounded-lg p-4",children:o.jsxs("p",{className:"text-sm text-yellow-900 dark:text-yellow-100",children:[o.jsx("strong",{children:"⚠️ 重要提示:"})," 由于技术原因,使用重启功能后,将无法再使用 ",o.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。如需结束程序,请使用脚本目录下的进程管理脚本。"]})}),s==="failed"&&o.jsxs("div",{className:"flex gap-2",children:[o.jsx("button",{onClick:()=>window.location.reload(),className:"flex-1 px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary/90",children:"刷新页面"}),o.jsx("button",{onClick:()=>{i("checking"),d(0),h()},className:"flex-1 px-4 py-2 bg-secondary text-secondary-foreground rounded-md hover:bg-secondary/90",children:"重试检测"})]})]})})}let wk=[],cF=[];(()=>{let t="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,n=0;e>1;if(t=cF[r])e=r+1;else return!0;if(e==n)return!1}}function fE(t){return t>=127462&&t<=127487}const mE=8205;function Aae(t,e,n=!0,r=!0){return(n?uF:Mae)(t,e,r)}function uF(t,e,n){if(e==t.length)return e;e&&dF(t.charCodeAt(e))&&hF(t.charCodeAt(e-1))&&e--;let r=z4(t,e);for(e+=pE(r);e=0&&fE(z4(t,a));)i++,a-=2;if(i%2==0)break;e+=2}else break}return e}function Mae(t,e,n){for(;e>0;){let r=uF(t,e-2,n);if(r=56320&&t<57344}function hF(t){return t>=55296&&t<56320}function pE(t){return t<65536?1:2}class An{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,n,r){[e,n]=Zh(this,e,n);let s=[];return this.decompose(0,e,s,2),r.length&&r.decompose(0,r.length,s,3),this.decompose(n,this.length,s,1),uv.from(s,this.length-(n-e)+r.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,n=this.length){[e,n]=Zh(this,e,n);let r=[];return this.decompose(e,n,r,0),uv.from(r,n-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let n=this.scanIdentical(e,1),r=this.length-this.scanIdentical(e,-1),s=new k0(this),i=new k0(e);for(let a=n,l=n;;){if(s.next(a),i.next(a),a=0,s.lineBreak!=i.lineBreak||s.done!=i.done||s.value!=i.value)return!1;if(l+=s.value.length,s.done||l>=r)return!0}}iter(e=1){return new k0(this,e)}iterRange(e,n=this.length){return new fF(this,e,n)}iterLines(e,n){let r;if(e==null)r=this.iter();else{n==null&&(n=this.lines+1);let s=this.line(e).from;r=this.iterRange(s,Math.max(s,n==this.lines+1?this.length:n<=1?0:this.line(n-1).to))}return new mF(r)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?An.empty:e.length<=32?new Ur(e):uv.from(Ur.split(e,[]))}}class Ur extends An{constructor(e,n=Rae(e)){super(),this.text=e,this.length=n}get lines(){return this.text.length}get children(){return null}lineInner(e,n,r,s){for(let i=0;;i++){let a=this.text[i],l=s+a.length;if((n?r:l)>=e)return new Dae(s,l,r,a);s=l+1,r++}}decompose(e,n,r,s){let i=e<=0&&n>=this.length?this:new Ur(gE(this.text,e,n),Math.min(n,this.length)-Math.max(0,e));if(s&1){let a=r.pop(),l=dv(i.text,a.text.slice(),0,i.length);if(l.length<=32)r.push(new Ur(l,a.length+i.length));else{let c=l.length>>1;r.push(new Ur(l.slice(0,c)),new Ur(l.slice(c)))}}else r.push(i)}replace(e,n,r){if(!(r instanceof Ur))return super.replace(e,n,r);[e,n]=Zh(this,e,n);let s=dv(this.text,dv(r.text,gE(this.text,0,e)),n),i=this.length+r.length-(n-e);return s.length<=32?new Ur(s,i):uv.from(Ur.split(s,[]),i)}sliceString(e,n=this.length,r=` +`){[e,n]=Zh(this,e,n);let s="";for(let i=0,a=0;i<=n&&ae&&a&&(s+=r),ei&&(s+=l.slice(Math.max(0,e-i),n-i)),i=c+1}return s}flatten(e){for(let n of this.text)e.push(n)}scanIdentical(){return 0}static split(e,n){let r=[],s=-1;for(let i of e)r.push(i),s+=i.length+1,r.length==32&&(n.push(new Ur(r,s)),r=[],s=-1);return s>-1&&n.push(new Ur(r,s)),n}}let uv=class bh extends An{constructor(e,n){super(),this.children=e,this.length=n,this.lines=0;for(let r of e)this.lines+=r.lines}lineInner(e,n,r,s){for(let i=0;;i++){let a=this.children[i],l=s+a.length,c=r+a.lines-1;if((n?c:l)>=e)return a.lineInner(e,n,r,s);s=l+1,r=c+1}}decompose(e,n,r,s){for(let i=0,a=0;a<=n&&i=a){let d=s&((a<=e?1:0)|(c>=n?2:0));a>=e&&c<=n&&!d?r.push(l):l.decompose(e-a,n-a,r,d)}a=c+1}}replace(e,n,r){if([e,n]=Zh(this,e,n),r.lines=i&&n<=l){let c=a.replace(e-i,n-i,r),d=this.lines-a.lines+c.lines;if(c.lines>4&&c.lines>d>>6){let h=this.children.slice();return h[s]=c,new bh(h,this.length-(n-e)+r.length)}return super.replace(i,l,c)}i=l+1}return super.replace(e,n,r)}sliceString(e,n=this.length,r=` +`){[e,n]=Zh(this,e,n);let s="";for(let i=0,a=0;ie&&i&&(s+=r),ea&&(s+=l.sliceString(e-a,n-a,r)),a=c+1}return s}flatten(e){for(let n of this.children)n.flatten(e)}scanIdentical(e,n){if(!(e instanceof bh))return 0;let r=0,[s,i,a,l]=n>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;s+=n,i+=n){if(s==a||i==l)return r;let c=this.children[s],d=e.children[i];if(c!=d)return r+c.scanIdentical(d,n);r+=c.length+1}}static from(e,n=e.reduce((r,s)=>r+s.length+1,-1)){let r=0;for(let x of e)r+=x.lines;if(r<32){let x=[];for(let y of e)y.flatten(x);return new Ur(x,n)}let s=Math.max(32,r>>5),i=s<<1,a=s>>1,l=[],c=0,d=-1,h=[];function m(x){let y;if(x.lines>i&&x instanceof bh)for(let w of x.children)m(w);else x.lines>a&&(c>a||!c)?(g(),l.push(x)):x instanceof Ur&&c&&(y=h[h.length-1])instanceof Ur&&x.lines+y.lines<=32?(c+=x.lines,d+=x.length+1,h[h.length-1]=new Ur(y.text.concat(x.text),y.length+1+x.length)):(c+x.lines>s&&g(),c+=x.lines,d+=x.length+1,h.push(x))}function g(){c!=0&&(l.push(h.length==1?h[0]:bh.from(h,d)),d=-1,c=h.length=0)}for(let x of e)m(x);return g(),l.length==1?l[0]:new bh(l,n)}};An.empty=new Ur([""],0);function Rae(t){let e=-1;for(let n of t)e+=n.length+1;return e}function dv(t,e,n=0,r=1e9){for(let s=0,i=0,a=!0;i=n&&(c>r&&(l=l.slice(0,r-s)),s0?1:(e instanceof Ur?e.text.length:e.children.length)<<1]}nextInner(e,n){for(this.done=this.lineBreak=!1;;){let r=this.nodes.length-1,s=this.nodes[r],i=this.offsets[r],a=i>>1,l=s instanceof Ur?s.text.length:s.children.length;if(a==(n>0?l:0)){if(r==0)return this.done=!0,this.value="",this;n>0&&this.offsets[r-1]++,this.nodes.pop(),this.offsets.pop()}else if((i&1)==(n>0?0:1)){if(this.offsets[r]+=n,e==0)return this.lineBreak=!0,this.value=` +`,this;e--}else if(s instanceof Ur){let c=s.text[a+(n<0?-1:0)];if(this.offsets[r]+=n,c.length>Math.max(0,e))return this.value=e==0?c:n>0?c.slice(e):c.slice(0,c.length-e),this;e-=c.length}else{let c=s.children[a+(n<0?-1:0)];e>c.length?(e-=c.length,this.offsets[r]+=n):(n<0&&this.offsets[r]--,this.nodes.push(c),this.offsets.push(n>0?1:(c instanceof Ur?c.text.length:c.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class fF{constructor(e,n,r){this.value="",this.done=!1,this.cursor=new k0(e,n>r?-1:1),this.pos=n>r?e.length:0,this.from=Math.min(n,r),this.to=Math.max(n,r)}nextInner(e,n){if(n<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,n<0?this.pos-this.to:this.from-this.pos);let r=n<0?this.pos-this.from:this.to-this.pos;e>r&&(e=r),r-=e;let{value:s}=this.cursor.next(e);return this.pos+=(s.length+e)*n,this.value=s.length<=r?s:n<0?s.slice(s.length-r):s.slice(0,r),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class mF{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:n,lineBreak:r,value:s}=this.inner.next(e);return n&&this.afterBreak?(this.value="",this.afterBreak=!1):n?(this.done=!0,this.value=""):r?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol<"u"&&(An.prototype[Symbol.iterator]=function(){return this.iter()},k0.prototype[Symbol.iterator]=fF.prototype[Symbol.iterator]=mF.prototype[Symbol.iterator]=function(){return this});class Dae{constructor(e,n,r,s){this.from=e,this.to=n,this.number=r,this.text=s}get length(){return this.to-this.from}}function Zh(t,e,n){return e=Math.max(0,Math.min(t.length,e)),[e,Math.max(e,Math.min(t.length,n))]}function Ps(t,e,n=!0,r=!0){return Aae(t,e,n,r)}function Pae(t){return t>=56320&&t<57344}function zae(t){return t>=55296&&t<56320}function vi(t,e){let n=t.charCodeAt(e);if(!zae(n)||e+1==t.length)return n;let r=t.charCodeAt(e+1);return Pae(r)?(n-55296<<10)+(r-56320)+65536:n}function s6(t){return t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode((t>>10)+55296,(t&1023)+56320))}function ko(t){return t<65536?1:2}const Sk=/\r\n?|\n/;var Ds=(function(t){return t[t.Simple=0]="Simple",t[t.TrackDel=1]="TrackDel",t[t.TrackBefore=2]="TrackBefore",t[t.TrackAfter=3]="TrackAfter",t})(Ds||(Ds={}));class Io{constructor(e){this.sections=e}get length(){let e=0;for(let n=0;ne)return i+(e-s);i+=l}else{if(r!=Ds.Simple&&d>=e&&(r==Ds.TrackDel&&se||r==Ds.TrackBefore&&se))return null;if(d>e||d==e&&n<0&&!l)return e==s||n<0?i:i+c;i+=c}s=d}if(e>s)throw new RangeError(`Position ${e} is out of range for changeset of length ${s}`);return i}touchesRange(e,n=e){for(let r=0,s=0;r=0&&s<=n&&l>=e)return sn?"cover":!0;s=l}return!1}toString(){let e="";for(let n=0;n=0?":"+s:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(n=>typeof n!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new Io(e)}static create(e){return new Io(e)}}class us extends Io{constructor(e,n){super(e),this.inserted=n}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return kk(this,(n,r,s,i,a)=>e=e.replace(s,s+(r-n),a),!1),e}mapDesc(e,n=!1){return Ok(this,e,n,!0)}invert(e){let n=this.sections.slice(),r=[];for(let s=0,i=0;s=0){n[s]=l,n[s+1]=a;let c=s>>1;for(;r.length0&&$c(r,n,i.text),i.forward(h),l+=h}let d=e[a++];for(;l>1].toJSON()))}return e}static of(e,n,r){let s=[],i=[],a=0,l=null;function c(h=!1){if(!h&&!s.length)return;ag||m<0||g>n)throw new RangeError(`Invalid change range ${m} to ${g} (in doc of length ${n})`);let y=x?typeof x=="string"?An.of(x.split(r||Sk)):x:An.empty,w=y.length;if(m==g&&w==0)return;ma&&qs(s,m-a,-1),qs(s,g-m,w),$c(i,s,y),a=g}}return d(e),c(!l),l}static empty(e){return new us(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let n=[],r=[];for(let s=0;sl&&typeof a!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(i.length==1)n.push(i[0],0);else{for(;r.length=0&&n<=0&&n==t[s+1]?t[s]+=e:s>=0&&e==0&&t[s]==0?t[s+1]+=n:r?(t[s]+=e,t[s+1]+=n):t.push(e,n)}function $c(t,e,n){if(n.length==0)return;let r=e.length-2>>1;if(r>1])),!(n||a==t.sections.length||t.sections[a+1]<0);)l=t.sections[a++],c=t.sections[a++];e(s,d,i,h,m),s=d,i=h}}}function Ok(t,e,n,r=!1){let s=[],i=r?[]:null,a=new H0(t),l=new H0(e);for(let c=-1;;){if(a.done&&l.len||l.done&&a.len)throw new Error("Mismatched change set lengths");if(a.ins==-1&&l.ins==-1){let d=Math.min(a.len,l.len);qs(s,d,-1),a.forward(d),l.forward(d)}else if(l.ins>=0&&(a.ins<0||c==a.i||a.off==0&&(l.len=0&&c=0){let d=0,h=a.len;for(;h;)if(l.ins==-1){let m=Math.min(h,l.len);d+=m,h-=m,l.forward(m)}else if(l.ins==0&&l.lenc||a.ins>=0&&a.len>c)&&(l||r.length>d),i.forward2(c),a.forward(c)}}}}class H0{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return n>=e.length?An.empty:e[n]}textBit(e){let{inserted:n}=this.set,r=this.i-2>>1;return r>=n.length&&!e?An.empty:n[r].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class Uu{constructor(e,n,r){this.from=e,this.to=n,this.flags=r}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(e,n=-1){let r,s;return this.empty?r=s=e.mapPos(this.from,n):(r=e.mapPos(this.from,1),s=e.mapPos(this.to,-1)),r==this.from&&s==this.to?this:new Uu(r,s,this.flags)}extend(e,n=e){if(e<=this.anchor&&n>=this.anchor)return Me.range(e,n);let r=Math.abs(e-this.anchor)>Math.abs(n-this.anchor)?e:n;return Me.range(this.anchor,r)}eq(e,n=!1){return this.anchor==e.anchor&&this.head==e.head&&(!n||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return Me.range(e.anchor,e.head)}static create(e,n,r){return new Uu(e,n,r)}}class Me{constructor(e,n){this.ranges=e,this.mainIndex=n}map(e,n=-1){return e.empty?this:Me.create(this.ranges.map(r=>r.map(e,n)),this.mainIndex)}eq(e,n=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let r=0;re.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new Me(e.ranges.map(n=>Uu.fromJSON(n)),e.main)}static single(e,n=e){return new Me([Me.range(e,n)],0)}static create(e,n=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let r=0,s=0;se?8:0)|i)}static normalized(e,n=0){let r=e[n];e.sort((s,i)=>s.from-i.from),n=e.indexOf(r);for(let s=1;si.head?Me.range(c,l):Me.range(l,c))}}return new Me(e,n)}}function gF(t,e){for(let n of t.ranges)if(n.to>e)throw new RangeError("Selection points outside of document")}let i6=0;class st{constructor(e,n,r,s,i){this.combine=e,this.compareInput=n,this.compare=r,this.isStatic=s,this.id=i6++,this.default=e([]),this.extensions=typeof i=="function"?i(this):i}get reader(){return this}static define(e={}){return new st(e.combine||(n=>n),e.compareInput||((n,r)=>n===r),e.compare||(e.combine?(n,r)=>n===r:a6),!!e.static,e.enables)}of(e){return new hv([],this,0,e)}compute(e,n){if(this.isStatic)throw new Error("Can't compute a static facet");return new hv(e,this,1,n)}computeN(e,n){if(this.isStatic)throw new Error("Can't compute a static facet");return new hv(e,this,2,n)}from(e,n){return n||(n=r=>r),this.compute([e],r=>n(r.field(e)))}}function a6(t,e){return t==e||t.length==e.length&&t.every((n,r)=>n===e[r])}class hv{constructor(e,n,r,s){this.dependencies=e,this.facet=n,this.type=r,this.value=s,this.id=i6++}dynamicSlot(e){var n;let r=this.value,s=this.facet.compareInput,i=this.id,a=e[i]>>1,l=this.type==2,c=!1,d=!1,h=[];for(let m of this.dependencies)m=="doc"?c=!0:m=="selection"?d=!0:(((n=e[m.id])!==null&&n!==void 0?n:1)&1)==0&&h.push(e[m.id]);return{create(m){return m.values[a]=r(m),1},update(m,g){if(c&&g.docChanged||d&&(g.docChanged||g.selection)||jk(m,h)){let x=r(m);if(l?!xE(x,m.values[a],s):!s(x,m.values[a]))return m.values[a]=x,1}return 0},reconfigure:(m,g)=>{let x,y=g.config.address[i];if(y!=null){let w=Gv(g,y);if(this.dependencies.every(S=>S instanceof st?g.facet(S)===m.facet(S):S instanceof Os?g.field(S,!1)==m.field(S,!1):!0)||(l?xE(x=r(m),w,s):s(x=r(m),w)))return m.values[a]=w,0}else x=r(m);return m.values[a]=x,1}}}}function xE(t,e,n){if(t.length!=e.length)return!1;for(let r=0;rt[c.id]),s=n.map(c=>c.type),i=r.filter(c=>!(c&1)),a=t[e.id]>>1;function l(c){let d=[];for(let h=0;hr===s),e);return e.provide&&(n.provides=e.provide(n)),n}create(e){let n=e.facet(r1).find(r=>r.field==this);return(n?.create||this.createF)(e)}slot(e){let n=e[this.id]>>1;return{create:r=>(r.values[n]=this.create(r),1),update:(r,s)=>{let i=r.values[n],a=this.updateF(i,s);return this.compareF(i,a)?0:(r.values[n]=a,1)},reconfigure:(r,s)=>{let i=r.facet(r1),a=s.facet(r1),l;return(l=i.find(c=>c.field==this))&&l!=a.find(c=>c.field==this)?(r.values[n]=l.create(r),1):s.config.address[this.id]!=null?(r.values[n]=s.field(this),0):(r.values[n]=this.create(r),1)}}}init(e){return[this,r1.of({field:this,create:e})]}get extension(){return this}}const Hu={lowest:4,low:3,default:2,high:1,highest:0};function Fm(t){return e=>new xF(e,t)}const uu={highest:Fm(Hu.highest),high:Fm(Hu.high),default:Fm(Hu.default),low:Fm(Hu.low),lowest:Fm(Hu.lowest)};class xF{constructor(e,n){this.inner=e,this.prec=n}}class hb{of(e){return new Nk(this,e)}reconfigure(e){return hb.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class Nk{constructor(e,n){this.compartment=e,this.inner=n}}class Wv{constructor(e,n,r,s,i,a){for(this.base=e,this.compartments=n,this.dynamicSlots=r,this.address=s,this.staticValues=i,this.facets=a,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,n,r){let s=[],i=Object.create(null),a=new Map;for(let g of Lae(e,n,a))g instanceof Os?s.push(g):(i[g.facet.id]||(i[g.facet.id]=[])).push(g);let l=Object.create(null),c=[],d=[];for(let g of s)l[g.id]=d.length<<1,d.push(x=>g.slot(x));let h=r?.config.facets;for(let g in i){let x=i[g],y=x[0].facet,w=h&&h[g]||[];if(x.every(S=>S.type==0))if(l[y.id]=c.length<<1|1,a6(w,x))c.push(r.facet(y));else{let S=y.combine(x.map(k=>k.value));c.push(r&&y.compare(S,r.facet(y))?r.facet(y):S)}else{for(let S of x)S.type==0?(l[S.id]=c.length<<1|1,c.push(S.value)):(l[S.id]=d.length<<1,d.push(k=>S.dynamicSlot(k)));l[y.id]=d.length<<1,d.push(S=>Iae(S,y,x))}}let m=d.map(g=>g(l));return new Wv(e,a,m,l,c,i)}}function Lae(t,e,n){let r=[[],[],[],[],[]],s=new Map;function i(a,l){let c=s.get(a);if(c!=null){if(c<=l)return;let d=r[c].indexOf(a);d>-1&&r[c].splice(d,1),a instanceof Nk&&n.delete(a.compartment)}if(s.set(a,l),Array.isArray(a))for(let d of a)i(d,l);else if(a instanceof Nk){if(n.has(a.compartment))throw new RangeError("Duplicate use of compartment in extensions");let d=e.get(a.compartment)||a.inner;n.set(a.compartment,d),i(d,l)}else if(a instanceof xF)i(a.inner,a.prec);else if(a instanceof Os)r[l].push(a),a.provides&&i(a.provides,l);else if(a instanceof hv)r[l].push(a),a.facet.extensions&&i(a.facet.extensions,Hu.default);else{let d=a.extension;if(!d)throw new Error(`Unrecognized extension value in extension set (${a}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);i(d,l)}}return i(t,Hu.default),r.reduce((a,l)=>a.concat(l))}function O0(t,e){if(e&1)return 2;let n=e>>1,r=t.status[n];if(r==4)throw new Error("Cyclic dependency between fields and/or facets");if(r&2)return r;t.status[n]=4;let s=t.computeSlot(t,t.config.dynamicSlots[n]);return t.status[n]=2|s}function Gv(t,e){return e&1?t.config.staticValues[e>>1]:t.values[e>>1]}const vF=st.define(),Ck=st.define({combine:t=>t.some(e=>e),static:!0}),yF=st.define({combine:t=>t.length?t[0]:void 0,static:!0}),bF=st.define(),wF=st.define(),SF=st.define(),kF=st.define({combine:t=>t.length?t[0]:!1});class Qo{constructor(e,n){this.type=e,this.value=n}static define(){return new Bae}}class Bae{of(e){return new Qo(this,e)}}class Fae{constructor(e){this.map=e}of(e){return new Qt(this,e)}}class Qt{constructor(e,n){this.type=e,this.value=n}map(e){let n=this.type.map(this.value,e);return n===void 0?void 0:n==this.value?this:new Qt(this.type,n)}is(e){return this.type==e}static define(e={}){return new Fae(e.map||(n=>n))}static mapEffects(e,n){if(!e.length)return e;let r=[];for(let s of e){let i=s.map(n);i&&r.push(i)}return r}}Qt.reconfigure=Qt.define();Qt.appendConfig=Qt.define();class ss{constructor(e,n,r,s,i,a){this.startState=e,this.changes=n,this.selection=r,this.effects=s,this.annotations=i,this.scrollIntoView=a,this._doc=null,this._state=null,r&&gF(r,n.newLength),i.some(l=>l.type==ss.time)||(this.annotations=i.concat(ss.time.of(Date.now())))}static create(e,n,r,s,i,a){return new ss(e,n,r,s,i,a)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let n of this.annotations)if(n.type==e)return n.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let n=this.annotation(ss.userEvent);return!!(n&&(n==e||n.length>e.length&&n.slice(0,e.length)==e&&n[e.length]=="."))}}ss.time=Qo.define();ss.userEvent=Qo.define();ss.addToHistory=Qo.define();ss.remote=Qo.define();function qae(t,e){let n=[];for(let r=0,s=0;;){let i,a;if(r=t[r]))i=t[r++],a=t[r++];else if(s=0;s--){let i=r[s](t);i instanceof ss?t=i:Array.isArray(i)&&i.length==1&&i[0]instanceof ss?t=i[0]:t=jF(e,Ph(i),!1)}return t}function Hae(t){let e=t.startState,n=e.facet(SF),r=t;for(let s=n.length-1;s>=0;s--){let i=n[s](t);i&&Object.keys(i).length&&(r=OF(r,Tk(e,i,t.changes.newLength),!0))}return r==t?t:ss.create(e,t.changes,t.selection,r.effects,r.annotations,r.scrollIntoView)}const Qae=[];function Ph(t){return t==null?Qae:Array.isArray(t)?t:[t]}var Tr=(function(t){return t[t.Word=0]="Word",t[t.Space=1]="Space",t[t.Other=2]="Other",t})(Tr||(Tr={}));const Vae=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let Ek;try{Ek=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function Uae(t){if(Ek)return Ek.test(t);for(let e=0;e"€"&&(n.toUpperCase()!=n.toLowerCase()||Vae.test(n)))return!0}return!1}function Wae(t){return e=>{if(!/\S/.test(e))return Tr.Space;if(Uae(e))return Tr.Word;for(let n=0;n-1)return Tr.Word;return Tr.Other}}class Nn{constructor(e,n,r,s,i,a){this.config=e,this.doc=n,this.selection=r,this.values=s,this.status=e.statusTemplate.slice(),this.computeSlot=i,a&&(a._state=this);for(let l=0;ls.set(d,c)),n=null),s.set(l.value.compartment,l.value.extension)):l.is(Qt.reconfigure)?(n=null,r=l.value):l.is(Qt.appendConfig)&&(n=null,r=Ph(r).concat(l.value));let i;n?i=e.startState.values.slice():(n=Wv.resolve(r,s,this),i=new Nn(n,this.doc,this.selection,n.dynamicSlots.map(()=>null),(c,d)=>d.reconfigure(c,this),null).values);let a=e.startState.facet(Ck)?e.newSelection:e.newSelection.asSingle();new Nn(n,e.newDoc,a,i,(l,c)=>c.update(l,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(n=>({changes:{from:n.from,to:n.to,insert:e},range:Me.cursor(n.from+e.length)}))}changeByRange(e){let n=this.selection,r=e(n.ranges[0]),s=this.changes(r.changes),i=[r.range],a=Ph(r.effects);for(let l=1;la.spec.fromJSON(l,c)))}}return Nn.create({doc:e.doc,selection:Me.fromJSON(e.selection),extensions:n.extensions?s.concat([n.extensions]):s})}static create(e={}){let n=Wv.resolve(e.extensions||[],new Map),r=e.doc instanceof An?e.doc:An.of((e.doc||"").split(n.staticFacet(Nn.lineSeparator)||Sk)),s=e.selection?e.selection instanceof Me?e.selection:Me.single(e.selection.anchor,e.selection.head):Me.single(0);return gF(s,r.length),n.staticFacet(Ck)||(s=s.asSingle()),new Nn(n,r,s,n.dynamicSlots.map(()=>null),(i,a)=>a.create(i),null)}get tabSize(){return this.facet(Nn.tabSize)}get lineBreak(){return this.facet(Nn.lineSeparator)||` +`}get readOnly(){return this.facet(kF)}phrase(e,...n){for(let r of this.facet(Nn.phrases))if(Object.prototype.hasOwnProperty.call(r,e)){e=r[e];break}return n.length&&(e=e.replace(/\$(\$|\d*)/g,(r,s)=>{if(s=="$")return"$";let i=+(s||1);return!i||i>n.length?r:n[i-1]})),e}languageDataAt(e,n,r=-1){let s=[];for(let i of this.facet(vF))for(let a of i(this,n,r))Object.prototype.hasOwnProperty.call(a,e)&&s.push(a[e]);return s}charCategorizer(e){return Wae(this.languageDataAt("wordChars",e).join(""))}wordAt(e){let{text:n,from:r,length:s}=this.doc.lineAt(e),i=this.charCategorizer(e),a=e-r,l=e-r;for(;a>0;){let c=Ps(n,a,!1);if(i(n.slice(c,a))!=Tr.Word)break;a=c}for(;lt.length?t[0]:4});Nn.lineSeparator=yF;Nn.readOnly=kF;Nn.phrases=st.define({compare(t,e){let n=Object.keys(t),r=Object.keys(e);return n.length==r.length&&n.every(s=>t[s]==e[s])}});Nn.languageData=vF;Nn.changeFilter=bF;Nn.transactionFilter=wF;Nn.transactionExtender=SF;hb.reconfigure=Qt.define();function Vo(t,e,n={}){let r={};for(let s of t)for(let i of Object.keys(s)){let a=s[i],l=r[i];if(l===void 0)r[i]=a;else if(!(l===a||a===void 0))if(Object.hasOwnProperty.call(n,i))r[i]=n[i](l,a);else throw new Error("Config merge conflict for field "+i)}for(let s in e)r[s]===void 0&&(r[s]=e[s]);return r}class od{eq(e){return this==e}range(e,n=e){return _k.create(e,n,this)}}od.prototype.startSide=od.prototype.endSide=0;od.prototype.point=!1;od.prototype.mapMode=Ds.TrackDel;let _k=class NF{constructor(e,n,r){this.from=e,this.to=n,this.value=r}static create(e,n,r){return new NF(e,n,r)}};function Ak(t,e){return t.from-e.from||t.value.startSide-e.value.startSide}class o6{constructor(e,n,r,s){this.from=e,this.to=n,this.value=r,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(e,n,r,s=0){let i=r?this.to:this.from;for(let a=s,l=i.length;;){if(a==l)return a;let c=a+l>>1,d=i[c]-e||(r?this.value[c].endSide:this.value[c].startSide)-n;if(c==a)return d>=0?a:l;d>=0?l=c:a=c+1}}between(e,n,r,s){for(let i=this.findIndex(n,-1e9,!0),a=this.findIndex(r,1e9,!1,i);ix||g==x&&d.startSide>0&&d.endSide<=0)continue;(x-g||d.endSide-d.startSide)<0||(a<0&&(a=g),d.point&&(l=Math.max(l,x-g)),r.push(d),s.push(g-a),i.push(x-a))}return{mapped:r.length?new o6(s,i,r,l):null,pos:a}}}class Bn{constructor(e,n,r,s){this.chunkPos=e,this.chunk=n,this.nextLayer=r,this.maxPoint=s}static create(e,n,r,s){return new Bn(e,n,r,s)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let n of this.chunk)e+=n.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:n=[],sort:r=!1,filterFrom:s=0,filterTo:i=this.length}=e,a=e.filter;if(n.length==0&&!a)return this;if(r&&(n=n.slice().sort(Ak)),this.isEmpty)return n.length?Bn.of(n):this;let l=new CF(this,null,-1).goto(0),c=0,d=[],h=new Hl;for(;l.value||c=0){let m=n[c++];h.addInner(m.from,m.to,m.value)||d.push(m)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||il.to||i=i&&e<=i+a.length&&a.between(i,e-i,n-i,r)===!1)return}this.nextLayer.between(e,n,r)}}iter(e=0){return Q0.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,n=0){return Q0.from(e).goto(n)}static compare(e,n,r,s,i=-1){let a=e.filter(m=>m.maxPoint>0||!m.isEmpty&&m.maxPoint>=i),l=n.filter(m=>m.maxPoint>0||!m.isEmpty&&m.maxPoint>=i),c=vE(a,l,r),d=new qm(a,c,i),h=new qm(l,c,i);r.iterGaps((m,g,x)=>yE(d,m,h,g,x,s)),r.empty&&r.length==0&&yE(d,0,h,0,0,s)}static eq(e,n,r=0,s){s==null&&(s=999999999);let i=e.filter(h=>!h.isEmpty&&n.indexOf(h)<0),a=n.filter(h=>!h.isEmpty&&e.indexOf(h)<0);if(i.length!=a.length)return!1;if(!i.length)return!0;let l=vE(i,a),c=new qm(i,l,0).goto(r),d=new qm(a,l,0).goto(r);for(;;){if(c.to!=d.to||!Mk(c.active,d.active)||c.point&&(!d.point||!c.point.eq(d.point)))return!1;if(c.to>s)return!0;c.next(),d.next()}}static spans(e,n,r,s,i=-1){let a=new qm(e,null,i).goto(n),l=n,c=a.openStart;for(;;){let d=Math.min(a.to,r);if(a.point){let h=a.activeForPoint(a.to),m=a.pointFroml&&(s.span(l,d,a.active,c),c=a.openEnd(d));if(a.to>r)return c+(a.point&&a.to>r?1:0);l=a.to,a.next()}}static of(e,n=!1){let r=new Hl;for(let s of e instanceof _k?[e]:n?Gae(e):e)r.add(s.from,s.to,s.value);return r.finish()}static join(e){if(!e.length)return Bn.empty;let n=e[e.length-1];for(let r=e.length-2;r>=0;r--)for(let s=e[r];s!=Bn.empty;s=s.nextLayer)n=new Bn(s.chunkPos,s.chunk,n,Math.max(s.maxPoint,n.maxPoint));return n}}Bn.empty=new Bn([],[],null,-1);function Gae(t){if(t.length>1)for(let e=t[0],n=1;n0)return t.slice().sort(Ak);e=r}return t}Bn.empty.nextLayer=Bn.empty;class Hl{finishChunk(e){this.chunks.push(new o6(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,n,r){this.addInner(e,n,r)||(this.nextLayer||(this.nextLayer=new Hl)).add(e,n,r)}addInner(e,n,r){let s=e-this.lastTo||r.startSide-this.last.endSide;if(s<=0&&(e-this.lastFrom||r.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(n-this.chunkStart),this.last=r,this.lastFrom=e,this.lastTo=n,this.value.push(r),r.point&&(this.maxPoint=Math.max(this.maxPoint,n-e)),!0)}addChunk(e,n){if((e-this.lastTo||n.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,n.maxPoint),this.chunks.push(n),this.chunkPos.push(e);let r=n.value.length-1;return this.last=n.value[r],this.lastFrom=n.from[r]+e,this.lastTo=n.to[r]+e,!0}finish(){return this.finishInner(Bn.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let n=Bn.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,n}}function vE(t,e,n){let r=new Map;for(let i of t)for(let a=0;a=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=r&&s.push(new CF(a,n,r,i));return s.length==1?s[0]:new Q0(s)}get startSide(){return this.value?this.value.startSide:0}goto(e,n=-1e9){for(let r of this.heap)r.goto(e,n);for(let r=this.heap.length>>1;r>=0;r--)I4(this.heap,r);return this.next(),this}forward(e,n){for(let r of this.heap)r.forward(e,n);for(let r=this.heap.length>>1;r>=0;r--)I4(this.heap,r);(this.to-e||this.value.endSide-n)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),I4(this.heap,0)}}}function I4(t,e){for(let n=t[e];;){let r=(e<<1)+1;if(r>=t.length)break;let s=t[r];if(r+1=0&&(s=t[r+1],r++),n.compare(s)<0)break;t[r]=n,t[e]=s,e=r}}class qm{constructor(e,n,r){this.minPoint=r,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=Q0.from(e,n,r)}goto(e,n=-1e9){return this.cursor.goto(e,n),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=n,this.openStart=-1,this.next(),this}forward(e,n){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-n)<0;)this.removeActive(this.minActive);this.cursor.forward(e,n)}removeActive(e){s1(this.active,e),s1(this.activeTo,e),s1(this.activeRank,e),this.minActive=bE(this.active,this.activeTo)}addActive(e){let n=0,{value:r,to:s,rank:i}=this.cursor;for(;n0;)n++;i1(this.active,n,r),i1(this.activeTo,n,s),i1(this.activeRank,n,i),e&&i1(e,n,this.cursor.from),this.minActive=bE(this.active,this.activeTo)}next(){let e=this.to,n=this.point;this.point=null;let r=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>e){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),r&&s1(r,s)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let i=this.cursor.value;if(!i.point)this.addActive(r),this.cursor.next();else if(n&&this.cursor.to==this.to&&this.cursor.from=0&&r[s]=0&&!(this.activeRank[r]e||this.activeTo[r]==e&&this.active[r].endSide>=this.point.endSide)&&n.push(this.active[r]);return n.reverse()}openEnd(e){let n=0;for(let r=this.activeTo.length-1;r>=0&&this.activeTo[r]>e;r--)n++;return n}}function yE(t,e,n,r,s,i){t.goto(e),n.goto(r);let a=r+s,l=r,c=r-e;for(;;){let d=t.to+c-n.to,h=d||t.endSide-n.endSide,m=h<0?t.to+c:n.to,g=Math.min(m,a);if(t.point||n.point?t.point&&n.point&&(t.point==n.point||t.point.eq(n.point))&&Mk(t.activeForPoint(t.to),n.activeForPoint(n.to))||i.comparePoint(l,g,t.point,n.point):g>l&&!Mk(t.active,n.active)&&i.compareRange(l,g,t.active,n.active),m>a)break;(d||t.openEnd!=n.openEnd)&&i.boundChange&&i.boundChange(m),l=m,h<=0&&t.next(),h>=0&&n.next()}}function Mk(t,e){if(t.length!=e.length)return!1;for(let n=0;n=e;r--)t[r+1]=t[r];t[e]=n}function bE(t,e){let n=-1,r=1e9;for(let s=0;s=e)return s;if(s==t.length)break;i+=t.charCodeAt(s)==9?n-i%n:1,s=Ps(t,s)}return r===!0?-1:t.length}const Dk="ͼ",wE=typeof Symbol>"u"?"__"+Dk:Symbol.for(Dk),Pk=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),SE=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{};class Yc{constructor(e,n){this.rules=[];let{finish:r}=n||{};function s(a){return/^@/.test(a)?[a]:a.split(/,\s*/)}function i(a,l,c,d){let h=[],m=/^@(\w+)\b/.exec(a[0]),g=m&&m[1]=="keyframes";if(m&&l==null)return c.push(a[0]+";");for(let x in l){let y=l[x];if(/&/.test(x))i(x.split(/,\s*/).map(w=>a.map(S=>w.replace(/&/,S))).reduce((w,S)=>w.concat(S)),y,c);else if(y&&typeof y=="object"){if(!m)throw new RangeError("The value of a property ("+x+") should be a primitive value.");i(s(x),y,h,g)}else y!=null&&h.push(x.replace(/_.*/,"").replace(/[A-Z]/g,w=>"-"+w.toLowerCase())+": "+y+";")}(h.length||g)&&c.push((r&&!m&&!d?a.map(r):a).join(", ")+" {"+h.join(" ")+"}")}for(let a in e)i(s(a),e[a],this.rules)}getRules(){return this.rules.join(` +`)}static newName(){let e=SE[wE]||1;return SE[wE]=e+1,Dk+e.toString(36)}static mount(e,n,r){let s=e[Pk],i=r&&r.nonce;s?i&&s.setNonce(i):s=new Xae(e,i),s.mount(Array.isArray(n)?n:[n],e)}}let kE=new Map;class Xae{constructor(e,n){let r=e.ownerDocument||e,s=r.defaultView;if(!e.head&&e.adoptedStyleSheets&&s.CSSStyleSheet){let i=kE.get(r);if(i)return e[Pk]=i;this.sheet=new s.CSSStyleSheet,kE.set(r,this)}else this.styleTag=r.createElement("style"),n&&this.styleTag.setAttribute("nonce",n);this.modules=[],e[Pk]=this}mount(e,n){let r=this.sheet,s=0,i=0;for(let a=0;a-1&&(this.modules.splice(c,1),i--,c=-1),c==-1){if(this.modules.splice(i++,0,l),r)for(let d=0;d",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},Yae=typeof navigator<"u"&&/Mac/.test(navigator.platform),Kae=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(var Ms=0;Ms<10;Ms++)Kc[48+Ms]=Kc[96+Ms]=String(Ms);for(var Ms=1;Ms<=24;Ms++)Kc[Ms+111]="F"+Ms;for(var Ms=65;Ms<=90;Ms++)Kc[Ms]=String.fromCharCode(Ms+32),V0[Ms]=String.fromCharCode(Ms);for(var L4 in Kc)V0.hasOwnProperty(L4)||(V0[L4]=Kc[L4]);function Zae(t){var e=Yae&&t.metaKey&&t.shiftKey&&!t.ctrlKey&&!t.altKey||Kae&&t.shiftKey&&t.key&&t.key.length==1||t.key=="Unidentified",n=!e&&t.key||(t.shiftKey?V0:Kc)[t.keyCode]||t.key||"Unidentified";return n=="Esc"&&(n="Escape"),n=="Del"&&(n="Delete"),n=="Left"&&(n="ArrowLeft"),n=="Up"&&(n="ArrowUp"),n=="Right"&&(n="ArrowRight"),n=="Down"&&(n="ArrowDown"),n}function lr(){var t=arguments[0];typeof t=="string"&&(t=document.createElement(t));var e=1,n=arguments[1];if(n&&typeof n=="object"&&n.nodeType==null&&!Array.isArray(n)){for(var r in n)if(Object.prototype.hasOwnProperty.call(n,r)){var s=n[r];typeof s=="string"?t.setAttribute(r,s):s!=null&&(t[r]=s)}e++}for(;e2);var et={mac:jE||/Mac/.test(Js.platform),windows:/Win/.test(Js.platform),linux:/Linux|X11/.test(Js.platform),ie:fb,ie_version:EF?zk.documentMode||6:Lk?+Lk[1]:Ik?+Ik[1]:0,gecko:OE,gecko_version:OE?+(/Firefox\/(\d+)/.exec(Js.userAgent)||[0,0])[1]:0,chrome:!!B4,chrome_version:B4?+B4[1]:0,ios:jE,android:/Android\b/.test(Js.userAgent),webkit_version:Jae?+(/\bAppleWebKit\/(\d+)/.exec(Js.userAgent)||[0,0])[1]:0,safari:Bk,safari_version:Bk?+(/\bVersion\/(\d+(\.\d+)?)/.exec(Js.userAgent)||[0,0])[1]:0,tabSize:zk.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function U0(t){let e;return t.nodeType==11?e=t.getSelection?t:t.ownerDocument:e=t,e.getSelection()}function Fk(t,e){return e?t==e||t.contains(e.nodeType!=1?e.parentNode:e):!1}function fv(t,e){if(!e.anchorNode)return!1;try{return Fk(t,e.anchorNode)}catch{return!1}}function Jh(t){return t.nodeType==3?cd(t,0,t.nodeValue.length).getClientRects():t.nodeType==1?t.getClientRects():[]}function j0(t,e,n,r){return n?NE(t,e,n,r,-1)||NE(t,e,n,r,1):!1}function ld(t){for(var e=0;;e++)if(t=t.previousSibling,!t)return e}function Xv(t){return t.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(t.nodeName)}function NE(t,e,n,r,s){for(;;){if(t==n&&e==r)return!0;if(e==(s<0?0:qo(t))){if(t.nodeName=="DIV")return!1;let i=t.parentNode;if(!i||i.nodeType!=1)return!1;e=ld(t)+(s<0?0:1),t=i}else if(t.nodeType==1){if(t=t.childNodes[e+(s<0?-1:0)],t.nodeType==1&&t.contentEditable=="false")return!1;e=s<0?qo(t):0}else return!1}}function qo(t){return t.nodeType==3?t.nodeValue.length:t.childNodes.length}function Up(t,e){let n=e?t.left:t.right;return{left:n,right:n,top:t.top,bottom:t.bottom}}function eoe(t){let e=t.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:t.innerWidth,top:0,bottom:t.innerHeight}}function _F(t,e){let n=e.width/t.offsetWidth,r=e.height/t.offsetHeight;return(n>.995&&n<1.005||!isFinite(n)||Math.abs(e.width-t.offsetWidth)<1)&&(n=1),(r>.995&&r<1.005||!isFinite(r)||Math.abs(e.height-t.offsetHeight)<1)&&(r=1),{scaleX:n,scaleY:r}}function toe(t,e,n,r,s,i,a,l){let c=t.ownerDocument,d=c.defaultView||window;for(let h=t,m=!1;h&&!m;)if(h.nodeType==1){let g,x=h==c.body,y=1,w=1;if(x)g=eoe(d);else{if(/^(fixed|sticky)$/.test(getComputedStyle(h).position)&&(m=!0),h.scrollHeight<=h.clientHeight&&h.scrollWidth<=h.clientWidth){h=h.assignedSlot||h.parentNode;continue}let j=h.getBoundingClientRect();({scaleX:y,scaleY:w}=_F(h,j)),g={left:j.left,right:j.left+h.clientWidth*y,top:j.top,bottom:j.top+h.clientHeight*w}}let S=0,k=0;if(s=="nearest")e.top0&&e.bottom>g.bottom+k&&(k=e.bottom-g.bottom+a)):e.bottom>g.bottom&&(k=e.bottom-g.bottom+a,n<0&&e.top-k0&&e.right>g.right+S&&(S=e.right-g.right+i)):e.right>g.right&&(S=e.right-g.right+i,n<0&&e.leftg.bottom||e.leftg.right)&&(e={left:Math.max(e.left,g.left),right:Math.min(e.right,g.right),top:Math.max(e.top,g.top),bottom:Math.min(e.bottom,g.bottom)}),h=h.assignedSlot||h.parentNode}else if(h.nodeType==11)h=h.host;else break}function noe(t){let e=t.ownerDocument,n,r;for(let s=t.parentNode;s&&!(s==e.body||n&&r);)if(s.nodeType==1)!r&&s.scrollHeight>s.clientHeight&&(r=s),!n&&s.scrollWidth>s.clientWidth&&(n=s),s=s.assignedSlot||s.parentNode;else if(s.nodeType==11)s=s.host;else break;return{x:n,y:r}}class roe{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:n,focusNode:r}=e;this.set(n,Math.min(e.anchorOffset,n?qo(n):0),r,Math.min(e.focusOffset,r?qo(r):0))}set(e,n,r,s){this.anchorNode=e,this.anchorOffset=n,this.focusNode=r,this.focusOffset=s}}let Fu=null;et.safari&&et.safari_version>=26&&(Fu=!1);function AF(t){if(t.setActive)return t.setActive();if(Fu)return t.focus(Fu);let e=[];for(let n=t;n&&(e.push(n,n.scrollTop,n.scrollLeft),n!=n.ownerDocument);n=n.parentNode);if(t.focus(Fu==null?{get preventScroll(){return Fu={preventScroll:!0},!0}}:void 0),!Fu){Fu=!1;for(let n=0;nMath.max(1,t.scrollHeight-t.clientHeight-4)}function DF(t,e){for(let n=t,r=e;;){if(n.nodeType==3&&r>0)return{node:n,offset:r};if(n.nodeType==1&&r>0){if(n.contentEditable=="false")return null;n=n.childNodes[r-1],r=qo(n)}else if(n.parentNode&&!Xv(n))r=ld(n),n=n.parentNode;else return null}}function PF(t,e){for(let n=t,r=e;;){if(n.nodeType==3&&rn)return m.domBoundsAround(e,n,d);if(g>=e&&s==-1&&(s=c,i=d),d>n&&m.dom.parentNode==this.dom){a=c,l=h;break}h=g,d=g+m.breakAfter}return{from:i,to:l<0?r+this.length:l,startDOM:(s?this.children[s-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:a=0?this.children[a].dom:null}}markDirty(e=!1){this.flags|=2,this.markParentsDirty(e)}markParentsDirty(e){for(let n=this.parent;n;n=n.parent){if(e&&(n.flags|=2),n.flags&1)return;n.flags|=1,e=!1}}setParent(e){this.parent!=e&&(this.parent=e,this.flags&7&&this.markParentsDirty(!0))}setDOM(e){this.dom!=e&&(this.dom&&(this.dom.cmView=null),this.dom=e,e.cmView=this)}get rootView(){for(let e=this;;){let n=e.parent;if(!n)return e;e=n}}replaceChildren(e,n,r=l6){this.markDirty();for(let s=e;sthis.pos||e==this.pos&&(n>0||this.i==0||this.children[this.i-1].breakAfter))return this.off=e-this.pos,this;let r=this.children[--this.i];this.pos-=r.length+r.breakAfter}}}function IF(t,e,n,r,s,i,a,l,c){let{children:d}=t,h=d.length?d[e]:null,m=i.length?i[i.length-1]:null,g=m?m.breakAfter:a;if(!(e==r&&h&&!a&&!g&&i.length<2&&h.merge(n,s,i.length?m:null,n==0,l,c))){if(r0&&(!a&&i.length&&h.merge(n,h.length,i[0],!1,l,0)?h.breakAfter=i.shift().breakAfter:(naoe||r.flags&8)?!1:(this.text=this.text.slice(0,e)+(r?r.text:"")+this.text.slice(n),this.markDirty(),!0)}split(e){let n=new Za(this.text.slice(e));return this.text=this.text.slice(0,e),this.markDirty(),n.flags|=this.flags&8,n}localPosFromDOM(e,n){return e==this.dom?n:n?this.text.length:0}domAtPos(e){return new Hs(this.dom,e)}domBoundsAround(e,n,r){return{from:r,to:r+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(e,n){return ooe(this.dom,e,n)}}class Ql extends sr{constructor(e,n=[],r=0){super(),this.mark=e,this.children=n,this.length=r;for(let s of n)s.setParent(this)}setAttrs(e){if(MF(e),this.mark.class&&(e.className=this.mark.class),this.mark.attrs)for(let n in this.mark.attrs)e.setAttribute(n,this.mark.attrs[n]);return e}canReuseDOM(e){return super.canReuseDOM(e)&&!((this.flags|e.flags)&8)}reuseDOM(e){e.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(e),this.flags|=6)}sync(e,n){this.dom?this.flags&4&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(e,n)}merge(e,n,r,s,i,a){return r&&(!(r instanceof Ql&&r.mark.eq(this.mark))||e&&i<=0||ne&&n.push(r=e&&(s=i),r=c,i++}let a=this.length-e;return this.length=e,s>-1&&(this.children.length=s,this.markDirty()),new Ql(this.mark,n,a)}domAtPos(e){return BF(this,e)}coordsAt(e,n){return qF(this,e,n)}}function ooe(t,e,n){let r=t.nodeValue.length;e>r&&(e=r);let s=e,i=e,a=0;e==0&&n<0||e==r&&n>=0?et.chrome||et.gecko||(e?(s--,a=1):i=0)?0:l.length-1];return et.safari&&!a&&c.width==0&&(c=Array.prototype.find.call(l,d=>d.width)||c),a?Up(c,a<0):c||null}class Dl extends sr{static create(e,n,r){return new Dl(e,n,r)}constructor(e,n,r){super(),this.widget=e,this.length=n,this.side=r,this.prevWidget=null}split(e){let n=Dl.create(this.widget,this.length-e,this.side);return this.length-=e,n}sync(e){(!this.dom||!this.widget.updateDOM(this.dom,e))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(e)),this.widget.editable||(this.dom.contentEditable="false"))}getSide(){return this.side}merge(e,n,r,s,i,a){return r&&(!(r instanceof Dl)||!this.widget.compare(r.widget)||e>0&&i<=0||n0)?Hs.before(this.dom):Hs.after(this.dom,e==this.length)}domBoundsAround(){return null}coordsAt(e,n){let r=this.widget.coordsAt(this.dom,e,n);if(r)return r;let s=this.dom.getClientRects(),i=null;if(!s.length)return null;let a=this.side?this.side<0:e>0;for(let l=a?s.length-1:0;i=s[l],!(e>0?l==0:l==s.length-1||i.top0?Hs.before(this.dom):Hs.after(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(e){return this.dom.getBoundingClientRect()}get overrideDOMText(){return An.empty}get isHidden(){return!0}}Za.prototype.children=Dl.prototype.children=ef.prototype.children=l6;function BF(t,e){let n=t.dom,{children:r}=t,s=0;for(let i=0;si&&e0;i--){let a=r[i-1];if(a.dom.parentNode==n)return a.domAtPos(a.length)}for(let i=s;i0&&e instanceof Ql&&s.length&&(r=s[s.length-1])instanceof Ql&&r.mark.eq(e.mark)?FF(r,e.children[0],n-1):(s.push(e),e.setParent(t)),t.length+=e.length}function qF(t,e,n){let r=null,s=-1,i=null,a=-1;function l(d,h){for(let m=0,g=0;m=h&&(x.children.length?l(x,h-g):(!i||i.isHidden&&(n>0||coe(i,x)))&&(y>h||g==y&&x.getSide()>0)?(i=x,a=h-g):(g-1?1:0)!=s.length-(n&&s.indexOf(n)>-1?1:0))return!1;for(let i of r)if(i!=n&&(s.indexOf(i)==-1||t[i]!==e[i]))return!1;return!0}function $k(t,e,n){let r=!1;if(e)for(let s in e)n&&s in n||(r=!0,s=="style"?t.style.cssText="":t.removeAttribute(s));if(n)for(let s in n)e&&e[s]==n[s]||(r=!0,s=="style"?t.style.cssText=n[s]:t.setAttribute(s,n[s]));return r}function uoe(t){let e=Object.create(null);for(let n=0;n0?3e8:-4e8:n>0?1e8:-1e8,new Zc(e,n,n,r,e.widget||null,!1)}static replace(e){let n=!!e.block,r,s;if(e.isBlockGap)r=-5e8,s=4e8;else{let{start:i,end:a}=$F(e,n);r=(i?n?-3e8:-1:5e8)-1,s=(a?n?2e8:1:-6e8)+1}return new Zc(e,r,s,n,e.widget||null,!0)}static line(e){return new Gp(e)}static set(e,n=!1){return Bn.of(e,n)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}}Ot.none=Bn.empty;class Wp extends Ot{constructor(e){let{start:n,end:r}=$F(e);super(n?-1:5e8,r?1:-6e8,null,e),this.tagName=e.tagName||"span",this.class=e.class||"",this.attrs=e.attributes||null}eq(e){var n,r;return this==e||e instanceof Wp&&this.tagName==e.tagName&&(this.class||((n=this.attrs)===null||n===void 0?void 0:n.class))==(e.class||((r=e.attrs)===null||r===void 0?void 0:r.class))&&Yv(this.attrs,e.attrs,"class")}range(e,n=e){if(e>=n)throw new RangeError("Mark decorations may not be empty");return super.range(e,n)}}Wp.prototype.point=!1;class Gp extends Ot{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof Gp&&this.spec.class==e.spec.class&&Yv(this.spec.attributes,e.spec.attributes)}range(e,n=e){if(n!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,n)}}Gp.prototype.mapMode=Ds.TrackBefore;Gp.prototype.point=!0;class Zc extends Ot{constructor(e,n,r,s,i,a){super(n,r,i,e),this.block=s,this.isReplace=a,this.mapMode=s?n<=0?Ds.TrackBefore:Ds.TrackAfter:Ds.TrackDel}get type(){return this.startSide!=this.endSide?ri.WidgetRange:this.startSide<=0?ri.WidgetBefore:ri.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof Zc&&doe(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,n=e){if(this.isReplace&&(e>n||e==n&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&n!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,n)}}Zc.prototype.point=!0;function $F(t,e=!1){let{inclusiveStart:n,inclusiveEnd:r}=t;return n==null&&(n=t.inclusive),r==null&&(r=t.inclusive),{start:n??e,end:r??e}}function doe(t,e){return t==e||!!(t&&e&&t.compare(e))}function mv(t,e,n,r=0){let s=n.length-1;s>=0&&n[s]+r>=t?n[s]=Math.max(n[s],e):n.push(t,e)}class rs extends sr{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(e,n,r,s,i,a){if(r){if(!(r instanceof rs))return!1;this.dom||r.transferDOM(this)}return s&&this.setDeco(r?r.attrs:null),LF(this,e,n,r?r.children.slice():[],i,a),!0}split(e){let n=new rs;if(n.breakAfter=this.breakAfter,this.length==0)return n;let{i:r,off:s}=this.childPos(e);s&&(n.append(this.children[r].split(s),0),this.children[r].merge(s,this.children[r].length,null,!1,0,0),r++);for(let i=r;i0&&this.children[r-1].length==0;)this.children[--r].destroy();return this.children.length=r,this.markDirty(),this.length=e,n}transferDOM(e){this.dom&&(this.markDirty(),e.setDOM(this.dom),e.prevAttrs=this.prevAttrs===void 0?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(e){Yv(this.attrs,e)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=e)}append(e,n){FF(this,e,n)}addLineDeco(e){let n=e.spec.attributes,r=e.spec.class;n&&(this.attrs=qk(n,this.attrs||{})),r&&(this.attrs=qk({class:r},this.attrs||{}))}domAtPos(e){return BF(this,e)}reuseDOM(e){e.nodeName=="DIV"&&(this.setDOM(e),this.flags|=6)}sync(e,n){var r;this.dom?this.flags&4&&(MF(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),this.prevAttrs!==void 0&&($k(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(e,n);let s=this.dom.lastChild;for(;s&&sr.get(s)instanceof Ql;)s=s.lastChild;if(!s||!this.length||s.nodeName!="BR"&&((r=sr.get(s))===null||r===void 0?void 0:r.isEditable)==!1&&(!et.ios||!this.children.some(i=>i instanceof Za))){let i=document.createElement("BR");i.cmIgnore=!0,this.dom.appendChild(i)}}measureTextSize(){if(this.children.length==0||this.length>20)return null;let e=0,n;for(let r of this.children){if(!(r instanceof Za)||/[^ -~]/.test(r.text))return null;let s=Jh(r.dom);if(s.length!=1)return null;e+=s[0].width,n=s[0].height}return e?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length,textHeight:n}:null}coordsAt(e,n){let r=qF(this,e,n);if(!this.children.length&&r&&this.parent){let{heightOracle:s}=this.parent.view.viewState,i=r.bottom-r.top;if(Math.abs(i-s.lineHeight)<2&&s.textHeight=n){if(i instanceof rs)return i;if(a>n)break}s=a+i.breakAfter}return null}}class Bl extends sr{constructor(e,n,r){super(),this.widget=e,this.length=n,this.deco=r,this.breakAfter=0,this.prevWidget=null}merge(e,n,r,s,i,a){return r&&(!(r instanceof Bl)||!this.widget.compare(r.widget)||e>0&&i<=0||n0}}class Hk extends Uo{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}}class N0{constructor(e,n,r,s){this.doc=e,this.pos=n,this.end=r,this.disallowBlockEffectsFor=s,this.content=[],this.curLine=null,this.breakAtStart=0,this.pendingBuffer=0,this.bufferMarks=[],this.atCursorPos=!0,this.openStart=-1,this.openEnd=-1,this.text="",this.textOff=0,this.cursor=e.iter(),this.skip=n}posCovered(){if(this.content.length==0)return!this.breakAtStart&&this.doc.lineAt(this.pos).from!=this.pos;let e=this.content[this.content.length-1];return!(e.breakAfter||e instanceof Bl&&e.deco.endSide<0)}getLine(){return this.curLine||(this.content.push(this.curLine=new rs),this.atCursorPos=!0),this.curLine}flushBuffer(e=this.bufferMarks){this.pendingBuffer&&(this.curLine.append(a1(new ef(-1),e),e.length),this.pendingBuffer=0)}addBlockWidget(e){this.flushBuffer(),this.curLine=null,this.content.push(e)}finish(e){this.pendingBuffer&&e<=this.bufferMarks.length?this.flushBuffer():this.pendingBuffer=0,!this.posCovered()&&!(e&&this.content.length&&this.content[this.content.length-1]instanceof Bl)&&this.getLine()}buildText(e,n,r){for(;e>0;){if(this.textOff==this.text.length){let{value:a,lineBreak:l,done:c}=this.cursor.next(this.skip);if(this.skip=0,c)throw new Error("Ran out of text content when drawing inline views");if(l){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer(),this.curLine=null,this.atCursorPos=!0,e--;continue}else this.text=a,this.textOff=0}let s=Math.min(this.text.length-this.textOff,e),i=Math.min(s,512);this.flushBuffer(n.slice(n.length-r)),this.getLine().append(a1(new Za(this.text.slice(this.textOff,this.textOff+i)),n),r),this.atCursorPos=!0,this.textOff+=i,e-=i,r=s<=i?0:n.length}}span(e,n,r,s){this.buildText(n-e,r,s),this.pos=n,this.openStart<0&&(this.openStart=s)}point(e,n,r,s,i,a){if(this.disallowBlockEffectsFor[a]&&r instanceof Zc){if(r.block)throw new RangeError("Block decorations may not be specified via plugins");if(n>this.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}let l=n-e;if(r instanceof Zc)if(r.block)r.startSide>0&&!this.posCovered()&&this.getLine(),this.addBlockWidget(new Bl(r.widget||tf.block,l,r));else{let c=Dl.create(r.widget||tf.inline,l,l?0:r.startSide),d=this.atCursorPos&&!c.isEditable&&i<=s.length&&(e0),h=!c.isEditable&&(es.length||r.startSide<=0),m=this.getLine();this.pendingBuffer==2&&!d&&!c.isEditable&&(this.pendingBuffer=0),this.flushBuffer(s),d&&(m.append(a1(new ef(1),s),i),i=s.length+Math.max(0,i-s.length)),m.append(a1(c,s),i),this.atCursorPos=h,this.pendingBuffer=h?es.length?1:2:0,this.pendingBuffer&&(this.bufferMarks=s.slice())}else this.doc.lineAt(this.pos).from==this.pos&&this.getLine().addLineDeco(r);l&&(this.textOff+l<=this.text.length?this.textOff+=l:(this.skip+=l-(this.text.length-this.textOff),this.text="",this.textOff=0),this.pos=n),this.openStart<0&&(this.openStart=i)}static build(e,n,r,s,i){let a=new N0(e,n,r,i);return a.openEnd=Bn.spans(s,n,r,a),a.openStart<0&&(a.openStart=a.openEnd),a.finish(a.openEnd),a}}function a1(t,e){for(let n of e)t=new Ql(n,[t],t.length);return t}class tf extends Uo{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}}tf.inline=new tf("span");tf.block=new tf("div");var br=(function(t){return t[t.LTR=0]="LTR",t[t.RTL=1]="RTL",t})(br||(br={}));const ud=br.LTR,c6=br.RTL;function HF(t){let e=[];for(let n=0;n=n){if(l.level==r)return a;(i<0||(s!=0?s<0?l.fromn:e[i].level>l.level))&&(i=a)}}if(i<0)throw new RangeError("Index out of range");return i}}function VF(t,e){if(t.length!=e.length)return!1;for(let n=0;n=0;w-=3)if(mo[w+1]==-x){let S=mo[w+2],k=S&2?s:S&4?S&1?i:s:0;k&&(cr[m]=cr[mo[w]]=k),l=w;break}}else{if(mo.length==189)break;mo[l++]=m,mo[l++]=g,mo[l++]=c}else if((y=cr[m])==2||y==1){let w=y==s;c=w?0:1;for(let S=l-3;S>=0;S-=3){let k=mo[S+2];if(k&2)break;if(w)mo[S+2]|=2;else{if(k&4)break;mo[S+2]|=4}}}}}function xoe(t,e,n,r){for(let s=0,i=r;s<=n.length;s++){let a=s?n[s-1].to:t,l=sc;)y==S&&(y=n[--w].from,S=w?n[w-1].to:t),cr[--y]=x;c=h}else i=d,c++}}}function Vk(t,e,n,r,s,i,a){let l=r%2?2:1;if(r%2==s%2)for(let c=e,d=0;cc&&a.push(new Hc(c,w.from,x));let S=w.direction==ud!=!(x%2);Uk(t,S?r+1:r,s,w.inner,w.from,w.to,a),c=w.to}y=w.to}else{if(y==n||(h?cr[y]!=l:cr[y]==l))break;y++}g?Vk(t,c,y,r+1,s,g,a):ce;){let h=!0,m=!1;if(!d||c>i[d-1].to){let w=cr[c-1];w!=l&&(h=!1,m=w==16)}let g=!h&&l==1?[]:null,x=h?r:r+1,y=c;e:for(;;)if(d&&y==i[d-1].to){if(m)break e;let w=i[--d];if(!h)for(let S=w.from,k=d;;){if(S==e)break e;if(k&&i[k-1].to==S)S=i[--k].from;else{if(cr[S-1]==l)break e;break}}if(g)g.push(w);else{w.tocr.length;)cr[cr.length]=256;let r=[],s=e==ud?0:1;return Uk(t,s,s,n,0,t.length,r),r}function UF(t){return[new Hc(0,t,0)]}let WF="";function yoe(t,e,n,r,s){var i;let a=r.head-t.from,l=Hc.find(e,a,(i=r.bidiLevel)!==null&&i!==void 0?i:-1,r.assoc),c=e[l],d=c.side(s,n);if(a==d){let g=l+=s?1:-1;if(g<0||g>=e.length)return null;c=e[l=g],a=c.side(!s,n),d=c.side(s,n)}let h=Ps(t.text,a,c.forward(s,n));(hc.to)&&(h=d),WF=t.text.slice(Math.min(a,h),Math.max(a,h));let m=l==(s?e.length-1:0)?null:e[l+(s?1:-1)];return m&&h==d&&m.level+(s?0:1)t.some(e=>e)}),tq=st.define({combine:t=>t.some(e=>e)}),nq=st.define();class Ih{constructor(e,n="nearest",r="nearest",s=5,i=5,a=!1){this.range=e,this.y=n,this.x=r,this.yMargin=s,this.xMargin=i,this.isSnapshot=a}map(e){return e.empty?this:new Ih(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new Ih(Me.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}}const o1=Qt.define({map:(t,e)=>t.map(e)}),rq=Qt.define();function bi(t,e,n){let r=t.facet(KF);r.length?r[0](e):window.onerror&&window.onerror(String(e),n,void 0,void 0,e)||(n?console.error(n+":",e):console.error(e))}const Ml=st.define({combine:t=>t.length?t[0]:!0});let woe=0;const Th=st.define({combine(t){return t.filter((e,n)=>{for(let r=0;r{let c=[];return a&&c.push(W0.of(d=>{let h=d.plugin(l);return h?a(h):Ot.none})),i&&c.push(i(l)),c})}static fromClass(e,n){return Yr.define((r,s)=>new e(r,s),n)}}class F4{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(e){if(this.value){if(this.mustUpdate){let n=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(n)}catch(r){if(bi(n.state,r,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg)}catch(n){bi(e.state,n,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var n;if(!((n=this.value)===null||n===void 0)&&n.destroy)try{this.value.destroy()}catch(r){bi(e.state,r,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const sq=st.define(),h6=st.define(),W0=st.define(),iq=st.define(),Xp=st.define(),aq=st.define();function _E(t,e){let n=t.state.facet(aq);if(!n.length)return n;let r=n.map(i=>i instanceof Function?i(t):i),s=[];return Bn.spans(r,e.from,e.to,{point(){},span(i,a,l,c){let d=i-e.from,h=a-e.from,m=s;for(let g=l.length-1;g>=0;g--,c--){let x=l[g].spec.bidiIsolate,y;if(x==null&&(x=boe(e.text,d,h)),c>0&&m.length&&(y=m[m.length-1]).to==d&&y.direction==x)y.to=h,m=y.inner;else{let w={from:d,to:h,direction:x,inner:[]};m.push(w),m=w.inner}}}}),s}const oq=st.define();function f6(t){let e=0,n=0,r=0,s=0;for(let i of t.state.facet(oq)){let a=i(t);a&&(a.left!=null&&(e=Math.max(e,a.left)),a.right!=null&&(n=Math.max(n,a.right)),a.top!=null&&(r=Math.max(r,a.top)),a.bottom!=null&&(s=Math.max(s,a.bottom)))}return{left:e,right:n,top:r,bottom:s}}const l0=st.define();class Ta{constructor(e,n,r,s){this.fromA=e,this.toA=n,this.fromB=r,this.toB=s}join(e){return new Ta(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let n=e.length,r=this;for(;n>0;n--){let s=e[n-1];if(!(s.fromA>r.toA)){if(s.toAh)break;i+=2}if(!c)return r;new Ta(c.fromA,c.toA,c.fromB,c.toB).addToSet(r),a=c.toA,l=c.toB}}}class Kv{constructor(e,n,r){this.view=e,this.state=n,this.transactions=r,this.flags=0,this.startState=e.state,this.changes=us.empty(this.startState.doc.length);for(let i of r)this.changes=this.changes.compose(i.changes);let s=[];this.changes.iterChangedRanges((i,a,l,c)=>s.push(new Ta(i,a,l,c))),this.changedRanges=s}static create(e,n,r){return new Kv(e,n,r)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}}class AE extends sr{get length(){return this.view.state.doc.length}constructor(e){super(),this.view=e,this.decorations=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.markedForComposition=new Set,this.editContextFormatting=Ot.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(e.contentDOM),this.children=[new rs],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new Ta(0,0,0,e.state.doc.length)],0,null)}update(e){var n;let r=e.changedRanges;this.minWidth>0&&r.length&&(r.every(({fromA:d,toA:h})=>hthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((n=this.domChanged)===null||n===void 0)&&n.newSel?s=this.domChanged.newSel.head:!Toe(e.changes,this.hasComposition)&&!e.selectionSet&&(s=e.state.selection.main.head));let i=s>-1?koe(this.view,e.changes,s):null;if(this.domChanged=null,this.hasComposition){this.markedForComposition.clear();let{from:d,to:h}=this.hasComposition;r=new Ta(d,h,e.changes.mapPos(d,-1),e.changes.mapPos(h,1)).addToSet(r.slice())}this.hasComposition=i?{from:i.range.fromB,to:i.range.toB}:null,(et.ie||et.chrome)&&!i&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let a=this.decorations,l=this.updateDeco(),c=Noe(a,l,e.changes);return r=Ta.extendWithRanges(r,c),!(this.flags&7)&&r.length==0?!1:(this.updateInner(r,e.startState.doc.length,i),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,n,r){this.view.viewState.mustMeasureContent=!0,this.updateChildren(e,n,r);let{observer:s}=this.view;s.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let a=et.chrome||et.ios?{node:s.selectionRange.focusNode,written:!1}:void 0;this.sync(this.view,a),this.flags&=-8,a&&(a.written||s.selectionRange.focusNode!=a.node)&&(this.forceSelection=!0),this.dom.style.height=""}),this.markedForComposition.forEach(a=>a.flags&=-9);let i=[];if(this.view.viewport.from||this.view.viewport.to=0?s[a]:null;if(!l)break;let{fromA:c,toA:d,fromB:h,toB:m}=l,g,x,y,w;if(r&&r.range.fromBh){let T=N0.build(this.view.state.doc,h,r.range.fromB,this.decorations,this.dynamicDecorationMap),E=N0.build(this.view.state.doc,r.range.toB,m,this.decorations,this.dynamicDecorationMap);x=T.breakAtStart,y=T.openStart,w=E.openEnd;let _=this.compositionView(r);E.breakAtStart?_.breakAfter=1:E.content.length&&_.merge(_.length,_.length,E.content[0],!1,E.openStart,0)&&(_.breakAfter=E.content[0].breakAfter,E.content.shift()),T.content.length&&_.merge(0,0,T.content[T.content.length-1],!0,0,T.openEnd)&&T.content.pop(),g=T.content.concat(_).concat(E.content)}else({content:g,breakAtStart:x,openStart:y,openEnd:w}=N0.build(this.view.state.doc,h,m,this.decorations,this.dynamicDecorationMap));let{i:S,off:k}=i.findPos(d,1),{i:j,off:N}=i.findPos(c,-1);IF(this,j,N,S,k,g,x,y,w)}r&&this.fixCompositionDOM(r)}updateEditContextFormatting(e){this.editContextFormatting=this.editContextFormatting.map(e.changes);for(let n of e.transactions)for(let r of n.effects)r.is(rq)&&(this.editContextFormatting=r.value)}compositionView(e){let n=new Za(e.text.nodeValue);n.flags|=8;for(let{deco:s}of e.marks)n=new Ql(s,[n],n.length);let r=new rs;return r.append(n,0),r}fixCompositionDOM(e){let n=(i,a)=>{a.flags|=8|(a.children.some(c=>c.flags&7)?1:0),this.markedForComposition.add(a);let l=sr.get(i);l&&l!=a&&(l.dom=null),a.setDOM(i)},r=this.childPos(e.range.fromB,1),s=this.children[r.i];n(e.line,s);for(let i=e.marks.length-1;i>=-1;i--)r=s.childPos(r.off,1),s=s.children[r.i],n(i>=0?e.marks[i].node:e.text,s)}updateSelection(e=!1,n=!1){(e||!this.view.observer.selectionRange.focusNode)&&this.view.observer.readSelectionRange();let r=this.view.root.activeElement,s=r==this.dom,i=!s&&!(this.view.state.facet(Ml)||this.dom.tabIndex>-1)&&fv(this.dom,this.view.observer.selectionRange)&&!(r&&this.dom.contains(r));if(!(s||n||i))return;let a=this.forceSelection;this.forceSelection=!1;let l=this.view.state.selection.main,c=this.moveToLine(this.domAtPos(l.anchor)),d=l.empty?c:this.moveToLine(this.domAtPos(l.head));if(et.gecko&&l.empty&&!this.hasComposition&&Soe(c)){let m=document.createTextNode("");this.view.observer.ignore(()=>c.node.insertBefore(m,c.node.childNodes[c.offset]||null)),c=d=new Hs(m,0),a=!0}let h=this.view.observer.selectionRange;(a||!h.focusNode||(!j0(c.node,c.offset,h.anchorNode,h.anchorOffset)||!j0(d.node,d.offset,h.focusNode,h.focusOffset))&&!this.suppressWidgetCursorChange(h,l))&&(this.view.observer.ignore(()=>{et.android&&et.chrome&&this.dom.contains(h.focusNode)&&Coe(h.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let m=U0(this.view.root);if(m)if(l.empty){if(et.gecko){let g=Ooe(c.node,c.offset);if(g&&g!=3){let x=(g==1?DF:PF)(c.node,c.offset);x&&(c=new Hs(x.node,x.offset))}}m.collapse(c.node,c.offset),l.bidiLevel!=null&&m.caretBidiLevel!==void 0&&(m.caretBidiLevel=l.bidiLevel)}else if(m.extend){m.collapse(c.node,c.offset);try{m.extend(d.node,d.offset)}catch{}}else{let g=document.createRange();l.anchor>l.head&&([c,d]=[d,c]),g.setEnd(d.node,d.offset),g.setStart(c.node,c.offset),m.removeAllRanges(),m.addRange(g)}i&&this.view.root.activeElement==this.dom&&(this.dom.blur(),r&&r.focus())}),this.view.observer.setSelectionRange(c,d)),this.impreciseAnchor=c.precise?null:new Hs(h.anchorNode,h.anchorOffset),this.impreciseHead=d.precise?null:new Hs(h.focusNode,h.focusOffset)}suppressWidgetCursorChange(e,n){return this.hasComposition&&n.empty&&j0(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==n.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,n=e.state.selection.main,r=U0(e.root),{anchorNode:s,anchorOffset:i}=e.observer.selectionRange;if(!r||!n.empty||!n.assoc||!r.modify)return;let a=rs.find(this,n.head);if(!a)return;let l=a.posAtStart;if(n.head==l||n.head==l+a.length)return;let c=this.coordsAt(n.head,-1),d=this.coordsAt(n.head,1);if(!c||!d||c.bottom>d.top)return;let h=this.domAtPos(n.head+n.assoc);r.collapse(h.node,h.offset),r.modify("move",n.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let m=e.observer.selectionRange;e.docView.posFromDOM(m.anchorNode,m.anchorOffset)!=n.from&&r.collapse(s,i)}moveToLine(e){let n=this.dom,r;if(e.node!=n)return e;for(let s=e.offset;!r&&s=0;s--){let i=sr.get(n.childNodes[s]);i instanceof rs&&(r=i.domAtPos(i.length))}return r?new Hs(r.node,r.offset,!0):e}nearest(e){for(let n=e;n;){let r=sr.get(n);if(r&&r.rootView==this)return r;n=n.parentNode}return null}posFromDOM(e,n){let r=this.nearest(e);if(!r)throw new RangeError("Trying to find position for a DOM position outside of the document");return r.localPosFromDOM(e,n)+r.posAtStart}domAtPos(e){let{i:n,off:r}=this.childCursor().findPos(e,-1);for(;n=0;a--){let l=this.children[a],c=i-l.breakAfter,d=c-l.length;if(ce||l.covers(1))&&(!r||l instanceof rs&&!(r instanceof rs&&n>=0)))r=l,s=d;else if(r&&d==e&&c==e&&l instanceof Bl&&Math.abs(n)<2){if(l.deco.startSide<0)break;a&&(r=null)}i=d}return r?r.coordsAt(e-s,n):null}coordsForChar(e){let{i:n,off:r}=this.childPos(e,1),s=this.children[n];if(!(s instanceof rs))return null;for(;s.children.length;){let{i:l,off:c}=s.childPos(r,1);for(;;l++){if(l==s.children.length)return null;if((s=s.children[l]).length)break}r=c}if(!(s instanceof Za))return null;let i=Ps(s.text,r);if(i==r)return null;let a=cd(s.dom,r,i).getClientRects();for(let l=0;lMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,c=this.view.textDirection==br.LTR;for(let d=0,h=0;hs)break;if(d>=r){let x=m.dom.getBoundingClientRect();if(n.push(x.height),a){let y=m.dom.lastChild,w=y?Jh(y):[];if(w.length){let S=w[w.length-1],k=c?S.right-x.left:x.right-S.left;k>l&&(l=k,this.minWidth=i,this.minWidthFrom=d,this.minWidthTo=g)}}}d=g+m.breakAfter}return n}textDirectionAt(e){let{i:n}=this.childPos(e,1);return getComputedStyle(this.children[n].dom).direction=="rtl"?br.RTL:br.LTR}measureTextSize(){for(let i of this.children)if(i instanceof rs){let a=i.measureTextSize();if(a)return a}let e=document.createElement("div"),n,r,s;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.dom.appendChild(e);let i=Jh(e.firstChild)[0];n=e.getBoundingClientRect().height,r=i?i.width/27:7,s=i?i.height:n,e.remove()}),{lineHeight:n,charWidth:r,textHeight:s}}childCursor(e=this.length){let n=this.children.length;return n&&(e-=this.children[--n].length),new zF(this.children,e,n)}computeBlockGapDeco(){let e=[],n=this.view.viewState;for(let r=0,s=0;;s++){let i=s==n.viewports.length?null:n.viewports[s],a=i?i.from-1:this.length;if(a>r){let l=(n.lineBlockAt(a).bottom-n.lineBlockAt(r).top)/this.view.scaleY;e.push(Ot.replace({widget:new Hk(l),block:!0,inclusive:!0,isBlockGap:!0}).range(r,a))}if(!i)break;r=i.to+1}return Ot.set(e)}updateDeco(){let e=1,n=this.view.state.facet(W0).map(i=>(this.dynamicDecorationMap[e++]=typeof i=="function")?i(this.view):i),r=!1,s=this.view.state.facet(iq).map((i,a)=>{let l=typeof i=="function";return l&&(r=!0),l?i(this.view):i});for(s.length&&(this.dynamicDecorationMap[e++]=r,n.push(Bn.join(s))),this.decorations=[this.editContextFormatting,...n,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];en.anchor?-1:1),s;if(!r)return;!n.empty&&(s=this.coordsAt(n.anchor,n.anchor>n.head?-1:1))&&(r={left:Math.min(r.left,s.left),top:Math.min(r.top,s.top),right:Math.max(r.right,s.right),bottom:Math.max(r.bottom,s.bottom)});let i=f6(this.view),a={left:r.left-i.left,top:r.top-i.top,right:r.right+i.right,bottom:r.bottom+i.bottom},{offsetWidth:l,offsetHeight:c}=this.view.scrollDOM;toe(this.view.scrollDOM,a,n.heads instanceof Dl||s.children.some(r);return r(this.children[n])}}function Soe(t){return t.node.nodeType==1&&t.node.firstChild&&(t.offset==0||t.node.childNodes[t.offset-1].contentEditable=="false")&&(t.offset==t.node.childNodes.length||t.node.childNodes[t.offset].contentEditable=="false")}function lq(t,e){let n=t.observer.selectionRange;if(!n.focusNode)return null;let r=DF(n.focusNode,n.focusOffset),s=PF(n.focusNode,n.focusOffset),i=r||s;if(s&&r&&s.node!=r.node){let l=sr.get(s.node);if(!l||l instanceof Za&&l.text!=s.node.nodeValue)i=s;else if(t.docView.lastCompositionAfterCursor){let c=sr.get(r.node);!c||c instanceof Za&&c.text!=r.node.nodeValue||(i=s)}}if(t.docView.lastCompositionAfterCursor=i!=r,!i)return null;let a=e-i.offset;return{from:a,to:a+i.node.nodeValue.length,node:i.node}}function koe(t,e,n){let r=lq(t,n);if(!r)return null;let{node:s,from:i,to:a}=r,l=s.nodeValue;if(/[\n\r]/.test(l)||t.state.doc.sliceString(r.from,r.to)!=l)return null;let c=e.invertedDesc,d=new Ta(c.mapPos(i),c.mapPos(a),i,a),h=[];for(let m=s.parentNode;;m=m.parentNode){let g=sr.get(m);if(g instanceof Ql)h.push({node:m,deco:g.mark});else{if(g instanceof rs||m.nodeName=="DIV"&&m.parentNode==t.contentDOM)return{range:d,text:s,marks:h,line:m};if(m!=t.contentDOM)h.push({node:m,deco:new Wp({inclusive:!0,attributes:uoe(m),tagName:m.tagName.toLowerCase()})});else return null}}}function Ooe(t,e){return t.nodeType!=1?0:(e&&t.childNodes[e-1].contentEditable=="false"?1:0)|(e{re.from&&(n=!0)}),n}function Eoe(t,e,n=1){let r=t.charCategorizer(e),s=t.doc.lineAt(e),i=e-s.from;if(s.length==0)return Me.cursor(e);i==0?n=1:i==s.length&&(n=-1);let a=i,l=i;n<0?a=Ps(s.text,i,!1):l=Ps(s.text,i);let c=r(s.text.slice(a,l));for(;a>0;){let d=Ps(s.text,a,!1);if(r(s.text.slice(d,a))!=c)break;a=d}for(;lt?e.left-t:Math.max(0,t-e.right)}function Aoe(t,e){return e.top>t?e.top-t:Math.max(0,t-e.bottom)}function q4(t,e){return t.tope.top+1}function ME(t,e){return et.bottom?{top:t.top,left:t.left,right:t.right,bottom:e}:t}function Gk(t,e,n){let r,s,i,a,l=!1,c,d,h,m;for(let y=t.firstChild;y;y=y.nextSibling){let w=Jh(y);for(let S=0;SN||a==N&&i>j)&&(r=y,s=k,i=j,a=N,l=j?e0:Sk.bottom&&(!h||h.bottomk.top)&&(d=y,m=k):h&&q4(h,k)?h=RE(h,k.bottom):m&&q4(m,k)&&(m=ME(m,k.top))}}if(h&&h.bottom>=n?(r=c,s=h):m&&m.top<=n&&(r=d,s=m),!r)return{node:t,offset:0};let g=Math.max(s.left,Math.min(s.right,e));if(r.nodeType==3)return DE(r,g,n);if(l&&r.contentEditable!="false")return Gk(r,g,n);let x=Array.prototype.indexOf.call(t.childNodes,r)+(e>=(s.left+s.right)/2?1:0);return{node:t,offset:x}}function DE(t,e,n){let r=t.nodeValue.length,s=-1,i=1e9,a=0;for(let l=0;ln?h.top-n:n-h.bottom)-1;if(h.left-1<=e&&h.right+1>=e&&m=(h.left+h.right)/2,x=g;if(et.chrome||et.gecko){let y=cd(t,l).getBoundingClientRect();Math.abs(y.left-h.right)<.1&&(x=!g)}if(m<=0)return{node:t,offset:l+(x?1:0)};s=l+(x?1:0),i=m}}}return{node:t,offset:s>-1?s:a>0?t.nodeValue.length:0}}function cq(t,e,n,r=-1){var s,i;let a=t.contentDOM.getBoundingClientRect(),l=a.top+t.viewState.paddingTop,c,{docHeight:d}=t.viewState,{x:h,y:m}=e,g=m-l;if(g<0)return 0;if(g>d)return t.state.doc.length;for(let T=t.viewState.heightOracle.textHeight/2,E=!1;c=t.elementAtHeight(g),c.type!=ri.Text;)for(;g=r>0?c.bottom+T:c.top-T,!(g>=0&&g<=d);){if(E)return n?null:0;E=!0,r=-r}m=l+g;let x=c.from;if(xt.viewport.to)return t.viewport.to==t.state.doc.length?t.state.doc.length:n?null:PE(t,a,c,h,m);let y=t.dom.ownerDocument,w=t.root.elementFromPoint?t.root:y,S=w.elementFromPoint(h,m);S&&!t.contentDOM.contains(S)&&(S=null),S||(h=Math.max(a.left+1,Math.min(a.right-1,h)),S=w.elementFromPoint(h,m),S&&!t.contentDOM.contains(S)&&(S=null));let k,j=-1;if(S&&((s=t.docView.nearest(S))===null||s===void 0?void 0:s.isEditable)!=!1){if(y.caretPositionFromPoint){let T=y.caretPositionFromPoint(h,m);T&&({offsetNode:k,offset:j}=T)}else if(y.caretRangeFromPoint){let T=y.caretRangeFromPoint(h,m);T&&({startContainer:k,startOffset:j}=T)}k&&(!t.contentDOM.contains(k)||et.safari&&Moe(k,j,h)||et.chrome&&Roe(k,j,h))&&(k=void 0),k&&(j=Math.min(qo(k),j))}if(!k||!t.docView.dom.contains(k)){let T=rs.find(t.docView,x);if(!T)return g>c.top+c.height/2?c.to:c.from;({node:k,offset:j}=Gk(T.dom,h,m))}let N=t.docView.nearest(k);if(!N)return null;if(N.isWidget&&((i=N.dom)===null||i===void 0?void 0:i.nodeType)==1){let T=N.dom.getBoundingClientRect();return e.yt.defaultLineHeight*1.5){let l=t.viewState.heightOracle.textHeight,c=Math.floor((s-n.top-(t.defaultLineHeight-l)*.5)/l);i+=c*t.viewState.heightOracle.lineLength}let a=t.state.sliceDoc(n.from,n.to);return n.from+Rk(a,i,t.state.tabSize)}function uq(t,e,n){let r,s=t;if(t.nodeType!=3||e!=(r=t.nodeValue.length))return!1;for(;;){let i=s.nextSibling;if(i){if(i.nodeName=="BR")break;return!1}else{let a=s.parentNode;if(!a||a.nodeName=="DIV")break;s=a}}return cd(t,r-1,r).getBoundingClientRect().right>n}function Moe(t,e,n){return uq(t,e,n)}function Roe(t,e,n){if(e!=0)return uq(t,e,n);for(let s=t;;){let i=s.parentNode;if(!i||i.nodeType!=1||i.firstChild!=s)return!1;if(i.classList.contains("cm-line"))break;s=i}let r=t.nodeType==1?t.getBoundingClientRect():cd(t,0,Math.max(t.nodeValue.length,1)).getBoundingClientRect();return n-r.left>5}function Xk(t,e,n){let r=t.lineBlockAt(e);if(Array.isArray(r.type)){let s;for(let i of r.type){if(i.from>e)break;if(!(i.toe)return i;(!s||i.type==ri.Text&&(s.type!=i.type||(n<0?i.frome)))&&(s=i)}}return s||r}return r}function Doe(t,e,n,r){let s=Xk(t,e.head,e.assoc||-1),i=!r||s.type!=ri.Text||!(t.lineWrapping||s.widgetLineBreaks)?null:t.coordsAtPos(e.assoc<0&&e.head>s.from?e.head-1:e.head);if(i){let a=t.dom.getBoundingClientRect(),l=t.textDirectionAt(s.from),c=t.posAtCoords({x:n==(l==br.LTR)?a.right-1:a.left+1,y:(i.top+i.bottom)/2});if(c!=null)return Me.cursor(c,n?-1:1)}return Me.cursor(n?s.to:s.from,n?-1:1)}function zE(t,e,n,r){let s=t.state.doc.lineAt(e.head),i=t.bidiSpans(s),a=t.textDirectionAt(s.from);for(let l=e,c=null;;){let d=yoe(s,i,a,l,n),h=WF;if(!d){if(s.number==(n?t.state.doc.lines:1))return l;h=` +`,s=t.state.doc.line(s.number+(n?1:-1)),i=t.bidiSpans(s),d=t.visualLineSide(s,!n)}if(c){if(!c(h))return l}else{if(!r)return d;c=r(h)}l=d}}function Poe(t,e,n){let r=t.state.charCategorizer(e),s=r(n);return i=>{let a=r(i);return s==Tr.Space&&(s=a),s==a}}function zoe(t,e,n,r){let s=e.head,i=n?1:-1;if(s==(n?t.state.doc.length:0))return Me.cursor(s,e.assoc);let a=e.goalColumn,l,c=t.contentDOM.getBoundingClientRect(),d=t.coordsAtPos(s,e.assoc||-1),h=t.documentTop;if(d)a==null&&(a=d.left-c.left),l=i<0?d.top:d.bottom;else{let x=t.viewState.lineBlockAt(s);a==null&&(a=Math.min(c.right-c.left,t.defaultCharacterWidth*(s-x.from))),l=(i<0?x.top:x.bottom)+h}let m=c.left+a,g=r??t.viewState.heightOracle.textHeight>>1;for(let x=0;;x+=10){let y=l+(g+x)*i,w=cq(t,{x:m,y},!1,i);if(yc.bottom||(i<0?ws)){let S=t.docView.coordsForChar(w),k=!S||y{if(e>i&&es(t)),n.from,e.head>n.from?-1:1);return r==n.from?n:Me.cursor(r,ri)&&!Boe(a,n)&&this.lineBreak(),s=a}return this.findPointBefore(r,n),this}readTextNode(e){let n=e.nodeValue;for(let r of this.points)r.node==e&&(r.pos=this.text.length+Math.min(r.offset,n.length));for(let r=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let i=-1,a=1,l;if(this.lineSeparator?(i=n.indexOf(this.lineSeparator,r),a=this.lineSeparator.length):(l=s.exec(n))&&(i=l.index,a=l[0].length),this.append(n.slice(r,i<0?n.length:i)),i<0)break;if(this.lineBreak(),a>1)for(let c of this.points)c.node==e&&c.pos>this.text.length&&(c.pos-=a-1);r=i+a}}readNode(e){if(e.cmIgnore)return;let n=sr.get(e),r=n&&n.overrideDOMText;if(r!=null){this.findPointInside(e,r.length);for(let s=r.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,n){for(let r of this.points)r.node==e&&e.childNodes[r.offset]==n&&(r.pos=this.text.length)}findPointInside(e,n){for(let r of this.points)(e.nodeType==3?r.node==e:e.contains(r.node))&&(r.pos=this.text.length+(Loe(e,r.node,r.offset)?n:0))}}function Loe(t,e,n){for(;;){if(!e||n-1;let{impreciseHead:i,impreciseAnchor:a}=e.docView;if(e.state.readOnly&&n>-1)this.newSel=null;else if(n>-1&&(this.bounds=e.docView.domBoundsAround(n,r,0))){let l=i||a?[]:$oe(e),c=new Ioe(l,e.state);c.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=c.text,this.newSel=Hoe(l,this.bounds.from)}else{let l=e.observer.selectionRange,c=i&&i.node==l.focusNode&&i.offset==l.focusOffset||!Fk(e.contentDOM,l.focusNode)?e.state.selection.main.head:e.docView.posFromDOM(l.focusNode,l.focusOffset),d=a&&a.node==l.anchorNode&&a.offset==l.anchorOffset||!Fk(e.contentDOM,l.anchorNode)?e.state.selection.main.anchor:e.docView.posFromDOM(l.anchorNode,l.anchorOffset),h=e.viewport;if((et.ios||et.chrome)&&e.state.selection.main.empty&&c!=d&&(h.from>0||h.to-1&&e.state.selection.ranges.length>1?this.newSel=e.state.selection.replaceRange(Me.range(d,c)):this.newSel=Me.single(d,c)}}}function hq(t,e){let n,{newSel:r}=e,s=t.state.selection.main,i=t.inputState.lastKeyTime>Date.now()-100?t.inputState.lastKeyCode:-1;if(e.bounds){let{from:a,to:l}=e.bounds,c=s.from,d=null;(i===8||et.android&&e.text.length=s.from&&n.to<=s.to&&(n.from!=s.from||n.to!=s.to)&&s.to-s.from-(n.to-n.from)<=4?n={from:s.from,to:s.to,insert:t.state.doc.slice(s.from,n.from).append(n.insert).append(t.state.doc.slice(n.to,s.to))}:t.state.doc.lineAt(s.from).toDate.now()-50?n={from:s.from,to:s.to,insert:t.state.toText(t.inputState.insertingText)}:et.chrome&&n&&n.from==n.to&&n.from==s.head&&n.insert.toString()==` + `&&t.lineWrapping&&(r&&(r=Me.single(r.main.anchor-1,r.main.head-1)),n={from:s.from,to:s.to,insert:An.of([" "])}),n)return m6(t,n,r,i);if(r&&!r.main.eq(s)){let a=!1,l="select";return t.inputState.lastSelectionTime>Date.now()-50&&(t.inputState.lastSelectionOrigin=="select"&&(a=!0),l=t.inputState.lastSelectionOrigin,l=="select.pointer"&&(r=dq(t.state.facet(Xp).map(c=>c(t)),r))),t.dispatch({selection:r,scrollIntoView:a,userEvent:l}),!0}else return!1}function m6(t,e,n,r=-1){if(et.ios&&t.inputState.flushIOSKey(e))return!0;let s=t.state.selection.main;if(et.android&&(e.to==s.to&&(e.from==s.from||e.from==s.from-1&&t.state.sliceDoc(e.from,s.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&zh(t.contentDOM,"Enter",13)||(e.from==s.from-1&&e.to==s.to&&e.insert.length==0||r==8&&e.insert.lengths.head)&&zh(t.contentDOM,"Backspace",8)||e.from==s.from&&e.to==s.to+1&&e.insert.length==0&&zh(t.contentDOM,"Delete",46)))return!0;let i=e.insert.toString();t.inputState.composing>=0&&t.inputState.composing++;let a,l=()=>a||(a=qoe(t,e,n));return t.state.facet(ZF).some(c=>c(t,e.from,e.to,i,l))||t.dispatch(l()),!0}function qoe(t,e,n){let r,s=t.state,i=s.selection.main,a=-1;if(e.from==e.to&&e.fromi.to){let c=e.fromm(t)),d,c);e.from==h&&(a=h)}if(a>-1)r={changes:e,selection:Me.cursor(e.from+e.insert.length,-1)};else if(e.from>=i.from&&e.to<=i.to&&e.to-e.from>=(i.to-i.from)/3&&(!n||n.main.empty&&n.main.from==e.from+e.insert.length)&&t.inputState.composing<0){let c=i.frome.to?s.sliceDoc(e.to,i.to):"";r=s.replaceSelection(t.state.toText(c+e.insert.sliceString(0,void 0,t.state.lineBreak)+d))}else{let c=s.changes(e),d=n&&n.main.to<=c.newLength?n.main:void 0;if(s.selection.ranges.length>1&&(t.inputState.composing>=0||t.inputState.compositionPendingChange)&&e.to<=i.to+10&&e.to>=i.to-10){let h=t.state.sliceDoc(e.from,e.to),m,g=n&&lq(t,n.main.head);if(g){let y=e.insert.length-(e.to-e.from);m={from:g.from,to:g.to-y}}else m=t.state.doc.lineAt(i.head);let x=i.to-e.to;r=s.changeByRange(y=>{if(y.from==i.from&&y.to==i.to)return{changes:c,range:d||y.map(c)};let w=y.to-x,S=w-h.length;if(t.state.sliceDoc(S,w)!=h||w>=m.from&&S<=m.to)return{range:y};let k=s.changes({from:S,to:w,insert:e.insert}),j=y.to-i.to;return{changes:k,range:d?Me.range(Math.max(0,d.anchor+j),Math.max(0,d.head+j)):y.map(k)}})}else r={changes:c,selection:d&&s.selection.replaceRange(d)}}let l="input.type";return(t.composing||t.inputState.compositionPendingChange&&t.inputState.compositionEndedAt>Date.now()-50)&&(t.inputState.compositionPendingChange=!1,l+=".compose",t.inputState.compositionFirstChange&&(l+=".start",t.inputState.compositionFirstChange=!1)),s.update(r,{userEvent:l,scrollIntoView:!0})}function fq(t,e,n,r){let s=Math.min(t.length,e.length),i=0;for(;i0&&l>0&&t.charCodeAt(a-1)==e.charCodeAt(l-1);)a--,l--;if(r=="end"){let c=Math.max(0,i-Math.min(a,l));n-=a+c-i}if(a=a?i-n:0;i-=c,l=i+(l-a),a=i}else if(l=l?i-n:0;i-=c,a=i+(a-l),l=i}return{from:i,toA:a,toB:l}}function $oe(t){let e=[];if(t.root.activeElement!=t.contentDOM)return e;let{anchorNode:n,anchorOffset:r,focusNode:s,focusOffset:i}=t.observer.selectionRange;return n&&(e.push(new IE(n,r)),(s!=n||i!=r)&&e.push(new IE(s,i))),e}function Hoe(t,e){if(t.length==0)return null;let n=t[0].pos,r=t.length==2?t[1].pos:n;return n>-1&&r>-1?Me.single(n+e,r+e):null}class Qoe{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,et.safari&&e.contentDOM.addEventListener("input",()=>null),et.gecko&&ale(e.contentDOM.ownerDocument)}handleEvent(e){!Zoe(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,n){let r=this.handlers[e];if(r){for(let s of r.observers)s(this.view,n);for(let s of r.handlers){if(n.defaultPrevented)break;if(s(this.view,n)){n.preventDefault();break}}}}ensureHandlers(e){let n=Voe(e),r=this.handlers,s=this.view.contentDOM;for(let i in n)if(i!="scroll"){let a=!n[i].handlers.length,l=r[i];l&&a!=!l.handlers.length&&(s.removeEventListener(i,this.handleEvent),l=null),l||s.addEventListener(i,this.handleEvent,{passive:a})}for(let i in r)i!="scroll"&&!n[i]&&s.removeEventListener(i,this.handleEvent);this.handlers=n}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&pq.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),et.android&&et.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;let n;return et.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&((n=mq.find(r=>r.keyCode==e.keyCode))&&!e.ctrlKey||Uoe.indexOf(e.key)>-1&&e.ctrlKey&&!e.shiftKey)?(this.pendingIOSKey=n||e,setTimeout(()=>this.flushIOSKey(),250),!0):(e.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(e){let n=this.pendingIOSKey;return!n||n.key=="Enter"&&e&&e.from0?!0:et.safari&&!et.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}function LE(t,e){return(n,r)=>{try{return e.call(t,r,n)}catch(s){bi(n.state,s)}}}function Voe(t){let e=Object.create(null);function n(r){return e[r]||(e[r]={observers:[],handlers:[]})}for(let r of t){let s=r.spec,i=s&&s.plugin.domEventHandlers,a=s&&s.plugin.domEventObservers;if(i)for(let l in i){let c=i[l];c&&n(l).handlers.push(LE(r.value,c))}if(a)for(let l in a){let c=a[l];c&&n(l).observers.push(LE(r.value,c))}}for(let r in Ja)n(r).handlers.push(Ja[r]);for(let r in Aa)n(r).observers.push(Aa[r]);return e}const mq=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],Uoe="dthko",pq=[16,17,18,20,91,92,224,225],l1=6;function c1(t){return Math.max(0,t)*.7+8}function Woe(t,e){return Math.max(Math.abs(t.clientX-e.clientX),Math.abs(t.clientY-e.clientY))}class Goe{constructor(e,n,r,s){this.view=e,this.startEvent=n,this.style=r,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=n,this.scrollParents=noe(e.contentDOM),this.atoms=e.state.facet(Xp).map(a=>a(e));let i=e.contentDOM.ownerDocument;i.addEventListener("mousemove",this.move=this.move.bind(this)),i.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=n.shiftKey,this.multiple=e.state.facet(Nn.allowMultipleSelections)&&Xoe(e,n),this.dragging=Koe(e,n)&&vq(n)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Woe(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let n=0,r=0,s=0,i=0,a=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:a}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:i,bottom:l}=this.scrollParents.y.getBoundingClientRect());let c=f6(this.view);e.clientX-c.left<=s+l1?n=-c1(s-e.clientX):e.clientX+c.right>=a-l1&&(n=c1(e.clientX-a)),e.clientY-c.top<=i+l1?r=-c1(i-e.clientY):e.clientY+c.bottom>=l-l1&&(r=c1(e.clientY-l)),this.setScrollSpeed(n,r)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,n){this.scrollSpeed={x:e,y:n},e||n?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:n}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),n&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=n,n=0),(e||n)&&this.view.win.scrollBy(e,n),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:n}=this,r=dq(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!r.eq(n.state.selection,this.dragging===!1))&&this.view.dispatch({selection:r,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){e.transactions.some(n=>n.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}}function Xoe(t,e){let n=t.state.facet(GF);return n.length?n[0](e):et.mac?e.metaKey:e.ctrlKey}function Yoe(t,e){let n=t.state.facet(XF);return n.length?n[0](e):et.mac?!e.altKey:!e.ctrlKey}function Koe(t,e){let{main:n}=t.state.selection;if(n.empty)return!1;let r=U0(t.root);if(!r||r.rangeCount==0)return!0;let s=r.getRangeAt(0).getClientRects();for(let i=0;i=e.clientX&&a.top<=e.clientY&&a.bottom>=e.clientY)return!0}return!1}function Zoe(t,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let n=e.target,r;n!=t.contentDOM;n=n.parentNode)if(!n||n.nodeType==11||(r=sr.get(n))&&r.ignoreEvent(e))return!1;return!0}const Ja=Object.create(null),Aa=Object.create(null),gq=et.ie&&et.ie_version<15||et.ios&&et.webkit_version<604;function Joe(t){let e=t.dom.parentNode;if(!e)return;let n=e.appendChild(document.createElement("textarea"));n.style.cssText="position: fixed; left: -10000px; top: 10px",n.focus(),setTimeout(()=>{t.focus(),n.remove(),xq(t,n.value)},50)}function mb(t,e,n){for(let r of t.facet(e))n=r(n,t);return n}function xq(t,e){e=mb(t.state,u6,e);let{state:n}=t,r,s=1,i=n.toText(e),a=i.lines==n.selection.ranges.length;if(Yk!=null&&n.selection.ranges.every(c=>c.empty)&&Yk==i.toString()){let c=-1;r=n.changeByRange(d=>{let h=n.doc.lineAt(d.from);if(h.from==c)return{range:d};c=h.from;let m=n.toText((a?i.line(s++).text:e)+n.lineBreak);return{changes:{from:h.from,insert:m},range:Me.cursor(d.from+m.length)}})}else a?r=n.changeByRange(c=>{let d=i.line(s++);return{changes:{from:c.from,to:c.to,insert:d.text},range:Me.cursor(c.from+d.length)}}):r=n.replaceSelection(i);t.dispatch(r,{userEvent:"input.paste",scrollIntoView:!0})}Aa.scroll=t=>{t.inputState.lastScrollTop=t.scrollDOM.scrollTop,t.inputState.lastScrollLeft=t.scrollDOM.scrollLeft};Ja.keydown=(t,e)=>(t.inputState.setSelectionOrigin("select"),e.keyCode==27&&t.inputState.tabFocusMode!=0&&(t.inputState.tabFocusMode=Date.now()+2e3),!1);Aa.touchstart=(t,e)=>{t.inputState.lastTouchTime=Date.now(),t.inputState.setSelectionOrigin("select.pointer")};Aa.touchmove=t=>{t.inputState.setSelectionOrigin("select.pointer")};Ja.mousedown=(t,e)=>{if(t.observer.flush(),t.inputState.lastTouchTime>Date.now()-2e3)return!1;let n=null;for(let r of t.state.facet(YF))if(n=r(t,e),n)break;if(!n&&e.button==0&&(n=nle(t,e)),n){let r=!t.hasFocus;t.inputState.startMouseSelection(new Goe(t,e,n,r)),r&&t.observer.ignore(()=>{AF(t.contentDOM);let i=t.root.activeElement;i&&!i.contains(t.contentDOM)&&i.blur()});let s=t.inputState.mouseSelection;if(s)return s.start(e),s.dragging===!1}else t.inputState.setSelectionOrigin("select.pointer");return!1};function BE(t,e,n,r){if(r==1)return Me.cursor(e,n);if(r==2)return Eoe(t.state,e,n);{let s=rs.find(t.docView,e),i=t.state.doc.lineAt(s?s.posAtEnd:e),a=s?s.posAtStart:i.from,l=s?s.posAtEnd:i.to;return le>=n.top&&e<=n.bottom&&t>=n.left&&t<=n.right;function ele(t,e,n,r){let s=rs.find(t.docView,e);if(!s)return 1;let i=e-s.posAtStart;if(i==0)return 1;if(i==s.length)return-1;let a=s.coordsAt(i,-1);if(a&&FE(n,r,a))return-1;let l=s.coordsAt(i,1);return l&&FE(n,r,l)?1:a&&a.bottom>=r?-1:1}function qE(t,e){let n=t.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:n,bias:ele(t,n,e.clientX,e.clientY)}}const tle=et.ie&&et.ie_version<=11;let $E=null,HE=0,QE=0;function vq(t){if(!tle)return t.detail;let e=$E,n=QE;return $E=t,QE=Date.now(),HE=!e||n>Date.now()-400&&Math.abs(e.clientX-t.clientX)<2&&Math.abs(e.clientY-t.clientY)<2?(HE+1)%3:1}function nle(t,e){let n=qE(t,e),r=vq(e),s=t.state.selection;return{update(i){i.docChanged&&(n.pos=i.changes.mapPos(n.pos),s=s.map(i.changes))},get(i,a,l){let c=qE(t,i),d,h=BE(t,c.pos,c.bias,r);if(n.pos!=c.pos&&!a){let m=BE(t,n.pos,n.bias,r),g=Math.min(m.from,h.from),x=Math.max(m.to,h.to);h=g1&&(d=rle(s,c.pos))?d:l?s.addRange(h):Me.create([h])}}}function rle(t,e){for(let n=0;n=e)return Me.create(t.ranges.slice(0,n).concat(t.ranges.slice(n+1)),t.mainIndex==n?0:t.mainIndex-(t.mainIndex>n?1:0))}return null}Ja.dragstart=(t,e)=>{let{selection:{main:n}}=t.state;if(e.target.draggable){let s=t.docView.nearest(e.target);if(s&&s.isWidget){let i=s.posAtStart,a=i+s.length;(i>=n.to||a<=n.from)&&(n=Me.range(i,a))}}let{inputState:r}=t;return r.mouseSelection&&(r.mouseSelection.dragging=!0),r.draggedContent=n,e.dataTransfer&&(e.dataTransfer.setData("Text",mb(t.state,d6,t.state.sliceDoc(n.from,n.to))),e.dataTransfer.effectAllowed="copyMove"),!1};Ja.dragend=t=>(t.inputState.draggedContent=null,!1);function VE(t,e,n,r){if(n=mb(t.state,u6,n),!n)return;let s=t.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:i}=t.inputState,a=r&&i&&Yoe(t,e)?{from:i.from,to:i.to}:null,l={from:s,insert:n},c=t.state.changes(a?[a,l]:l);t.focus(),t.dispatch({changes:c,selection:{anchor:c.mapPos(s,-1),head:c.mapPos(s,1)},userEvent:a?"move.drop":"input.drop"}),t.inputState.draggedContent=null}Ja.drop=(t,e)=>{if(!e.dataTransfer)return!1;if(t.state.readOnly)return!0;let n=e.dataTransfer.files;if(n&&n.length){let r=Array(n.length),s=0,i=()=>{++s==n.length&&VE(t,e,r.filter(a=>a!=null).join(t.state.lineBreak),!1)};for(let a=0;a{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(r[a]=l.result),i()},l.readAsText(n[a])}return!0}else{let r=e.dataTransfer.getData("Text");if(r)return VE(t,e,r,!0),!0}return!1};Ja.paste=(t,e)=>{if(t.state.readOnly)return!0;t.observer.flush();let n=gq?null:e.clipboardData;return n?(xq(t,n.getData("text/plain")||n.getData("text/uri-list")),!0):(Joe(t),!1)};function sle(t,e){let n=t.dom.parentNode;if(!n)return;let r=n.appendChild(document.createElement("textarea"));r.style.cssText="position: fixed; left: -10000px; top: 10px",r.value=e,r.focus(),r.selectionEnd=e.length,r.selectionStart=0,setTimeout(()=>{r.remove(),t.focus()},50)}function ile(t){let e=[],n=[],r=!1;for(let s of t.selection.ranges)s.empty||(e.push(t.sliceDoc(s.from,s.to)),n.push(s));if(!e.length){let s=-1;for(let{from:i}of t.selection.ranges){let a=t.doc.lineAt(i);a.number>s&&(e.push(a.text),n.push({from:a.from,to:Math.min(t.doc.length,a.to+1)})),s=a.number}r=!0}return{text:mb(t,d6,e.join(t.lineBreak)),ranges:n,linewise:r}}let Yk=null;Ja.copy=Ja.cut=(t,e)=>{let{text:n,ranges:r,linewise:s}=ile(t.state);if(!n&&!s)return!1;Yk=s?n:null,e.type=="cut"&&!t.state.readOnly&&t.dispatch({changes:r,scrollIntoView:!0,userEvent:"delete.cut"});let i=gq?null:e.clipboardData;return i?(i.clearData(),i.setData("text/plain",n),!0):(sle(t,n),!1)};const yq=Qo.define();function bq(t,e){let n=[];for(let r of t.facet(JF)){let s=r(t,e);s&&n.push(s)}return n.length?t.update({effects:n,annotations:yq.of(!0)}):null}function wq(t){setTimeout(()=>{let e=t.hasFocus;if(e!=t.inputState.notifiedFocused){let n=bq(t.state,e);n?t.dispatch(n):t.update([])}},10)}Aa.focus=t=>{t.inputState.lastFocusTime=Date.now(),!t.scrollDOM.scrollTop&&(t.inputState.lastScrollTop||t.inputState.lastScrollLeft)&&(t.scrollDOM.scrollTop=t.inputState.lastScrollTop,t.scrollDOM.scrollLeft=t.inputState.lastScrollLeft),wq(t)};Aa.blur=t=>{t.observer.clearSelectionRange(),wq(t)};Aa.compositionstart=Aa.compositionupdate=t=>{t.observer.editContext||(t.inputState.compositionFirstChange==null&&(t.inputState.compositionFirstChange=!0),t.inputState.composing<0&&(t.inputState.composing=0))};Aa.compositionend=t=>{t.observer.editContext||(t.inputState.composing=-1,t.inputState.compositionEndedAt=Date.now(),t.inputState.compositionPendingKey=!0,t.inputState.compositionPendingChange=t.observer.pendingRecords().length>0,t.inputState.compositionFirstChange=null,et.chrome&&et.android?t.observer.flushSoon():t.inputState.compositionPendingChange?Promise.resolve().then(()=>t.observer.flush()):setTimeout(()=>{t.inputState.composing<0&&t.docView.hasComposition&&t.update([])},50))};Aa.contextmenu=t=>{t.inputState.lastContextMenu=Date.now()};Ja.beforeinput=(t,e)=>{var n,r;if((e.inputType=="insertText"||e.inputType=="insertCompositionText")&&(t.inputState.insertingText=e.data,t.inputState.insertingTextAt=Date.now()),e.inputType=="insertReplacementText"&&t.observer.editContext){let i=(n=e.dataTransfer)===null||n===void 0?void 0:n.getData("text/plain"),a=e.getTargetRanges();if(i&&a.length){let l=a[0],c=t.posAtDOM(l.startContainer,l.startOffset),d=t.posAtDOM(l.endContainer,l.endOffset);return m6(t,{from:c,to:d,insert:t.state.toText(i)},null),!0}}let s;if(et.chrome&&et.android&&(s=mq.find(i=>i.inputType==e.inputType))&&(t.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let i=((r=window.visualViewport)===null||r===void 0?void 0:r.height)||0;setTimeout(()=>{var a;(((a=window.visualViewport)===null||a===void 0?void 0:a.height)||0)>i+10&&t.hasFocus&&(t.contentDOM.blur(),t.focus())},100)}return et.ios&&e.inputType=="deleteContentForward"&&t.observer.flushSoon(),et.safari&&e.inputType=="insertText"&&t.inputState.composing>=0&&setTimeout(()=>Aa.compositionend(t,e),20),!1};const UE=new Set;function ale(t){UE.has(t)||(UE.add(t),t.addEventListener("copy",()=>{}),t.addEventListener("cut",()=>{}))}const WE=["pre-wrap","normal","pre-line","break-spaces"];let nf=!1;function GE(){nf=!1}class ole{constructor(e){this.lineWrapping=e,this.doc=An.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,n){let r=this.doc.lineAt(n).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(r+=Math.max(0,Math.ceil((n-e-r*this.lineLength*.5)/this.lineLength))),this.lineHeight*r}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return WE.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let n=!1;for(let r=0;r-1,c=Math.round(n)!=Math.round(this.lineHeight)||this.lineWrapping!=l;if(this.lineWrapping=l,this.lineHeight=n,this.charWidth=r,this.textHeight=s,this.lineLength=i,c){this.heightSamples={};for(let d=0;d0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>pv&&(nf=!0),this.height=e)}replace(e,n,r){return si.of(r)}decomposeLeft(e,n){n.push(this)}decomposeRight(e,n){n.push(this)}applyChanges(e,n,r,s){let i=this,a=r.doc;for(let l=s.length-1;l>=0;l--){let{fromA:c,toA:d,fromB:h,toB:m}=s[l],g=i.lineAt(c,yr.ByPosNoHeight,r.setDoc(n),0,0),x=g.to>=d?g:i.lineAt(d,yr.ByPosNoHeight,r,0,0);for(m+=x.to-d,d=x.to;l>0&&g.from<=s[l-1].toA;)c=s[l-1].fromA,h=s[l-1].fromB,l--,ci*2){let l=e[n-1];l.break?e.splice(--n,1,l.left,null,l.right):e.splice(--n,1,l.left,l.right),r+=1+l.break,s-=l.size}else if(i>s*2){let l=e[r];l.break?e.splice(r,1,l.left,null,l.right):e.splice(r,1,l.left,l.right),r+=2+l.break,i-=l.size}else break;else if(s=i&&a(this.blockAt(0,r,s,i))}updateHeight(e,n=0,r=!1,s){return s&&s.from<=n&&s.more&&this.setHeight(s.heights[s.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}}class Qi extends Sq{constructor(e,n){super(e,n,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0}blockAt(e,n,r,s){return new Oo(s,this.length,r,this.height,this.breaks)}replace(e,n,r){let s=r[0];return r.length==1&&(s instanceof Qi||s instanceof As&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof As?s=new Qi(s.length,this.height):s.height=this.height,this.outdated||(s.outdated=!1),s):si.of(r)}updateHeight(e,n=0,r=!1,s){return s&&s.from<=n&&s.more?this.setHeight(s.heights[s.index++]):(r||this.outdated)&&this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class As extends si{constructor(e){super(e,0)}heightMetrics(e,n){let r=e.doc.lineAt(n).number,s=e.doc.lineAt(n+this.length).number,i=s-r+1,a,l=0;if(e.lineWrapping){let c=Math.min(this.height,e.lineHeight*i);a=c/i,this.length>i+1&&(l=(this.height-c)/(this.length-i-1))}else a=this.height/i;return{firstLine:r,lastLine:s,perLine:a,perChar:l}}blockAt(e,n,r,s){let{firstLine:i,lastLine:a,perLine:l,perChar:c}=this.heightMetrics(n,s);if(n.lineWrapping){let d=s+(e0){let i=r[r.length-1];i instanceof As?r[r.length-1]=new As(i.length+s):r.push(null,new As(s-1))}if(e>0){let i=r[0];i instanceof As?r[0]=new As(e+i.length):r.unshift(new As(e-1),null)}return si.of(r)}decomposeLeft(e,n){n.push(new As(e-1),null)}decomposeRight(e,n){n.push(null,new As(this.length-e-1))}updateHeight(e,n=0,r=!1,s){let i=n+this.length;if(s&&s.from<=n+this.length&&s.more){let a=[],l=Math.max(n,s.from),c=-1;for(s.from>n&&a.push(new As(s.from-n-1).updateHeight(e,n));l<=i&&s.more;){let h=e.doc.lineAt(l).length;a.length&&a.push(null);let m=s.heights[s.index++];c==-1?c=m:Math.abs(m-c)>=pv&&(c=-2);let g=new Qi(h,m);g.outdated=!1,a.push(g),l+=h+1}l<=i&&a.push(null,new As(i-l).updateHeight(e,l));let d=si.of(a);return(c<0||Math.abs(d.height-this.height)>=pv||Math.abs(c-this.heightMetrics(e,n).perLine)>=pv)&&(nf=!0),Zv(this,d)}else(r||this.outdated)&&(this.setHeight(e.heightForGap(n,n+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}}class cle extends si{constructor(e,n,r){super(e.length+n+r.length,e.height+r.height,n|(e.outdated||r.outdated?2:0)),this.left=e,this.right=r,this.size=e.size+r.size}get break(){return this.flags&1}blockAt(e,n,r,s){let i=r+this.left.height;return el))return d;let h=n==yr.ByPosNoHeight?yr.ByPosNoHeight:yr.ByPos;return c?d.join(this.right.lineAt(l,h,r,a,l)):this.left.lineAt(l,h,r,s,i).join(d)}forEachLine(e,n,r,s,i,a){let l=s+this.left.height,c=i+this.left.length+this.break;if(this.break)e=c&&this.right.forEachLine(e,n,r,l,c,a);else{let d=this.lineAt(c,yr.ByPos,r,s,i);e=e&&d.from<=n&&a(d),n>d.to&&this.right.forEachLine(d.to+1,n,r,l,c,a)}}replace(e,n,r){let s=this.left.length+this.break;if(nthis.left.length)return this.balanced(this.left,this.right.replace(e-s,n-s,r));let i=[];e>0&&this.decomposeLeft(e,i);let a=i.length;for(let l of r)i.push(l);if(e>0&&XE(i,a-1),n=r&&n.push(null)),e>r&&this.right.decomposeLeft(e-r,n)}decomposeRight(e,n){let r=this.left.length,s=r+this.break;if(e>=s)return this.right.decomposeRight(e-s,n);e2*n.size||n.size>2*e.size?si.of(this.break?[e,null,n]:[e,n]):(this.left=Zv(this.left,e),this.right=Zv(this.right,n),this.setHeight(e.height+n.height),this.outdated=e.outdated||n.outdated,this.size=e.size+n.size,this.length=e.length+this.break+n.length,this)}updateHeight(e,n=0,r=!1,s){let{left:i,right:a}=this,l=n+i.length+this.break,c=null;return s&&s.from<=n+i.length&&s.more?c=i=i.updateHeight(e,n,r,s):i.updateHeight(e,n,r),s&&s.from<=l+a.length&&s.more?c=a=a.updateHeight(e,l,r,s):a.updateHeight(e,l,r),c?this.balanced(i,a):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function XE(t,e){let n,r;t[e]==null&&(n=t[e-1])instanceof As&&(r=t[e+1])instanceof As&&t.splice(e-1,3,new As(n.length+1+r.length))}const ule=5;class p6{constructor(e,n){this.pos=e,this.oracle=n,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,n){if(this.lineStart>-1){let r=Math.min(n,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof Qi?s.length+=r-this.pos:(r>this.pos||!this.isCovered)&&this.nodes.push(new Qi(r-this.pos,-1)),this.writtenTo=r,n>r&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=n}point(e,n,r){if(e=ule)&&this.addLineDeco(s,i,a)}else n>e&&this.span(e,n);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:n}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=n,this.writtenToe&&this.nodes.push(new Qi(this.pos-e,-1)),this.writtenTo=this.pos}blankContent(e,n){let r=new As(n-e);return this.oracle.doc.lineAt(e).to==n&&(r.flags|=4),r}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof Qi)return e;let n=new Qi(0,-1);return this.nodes.push(n),n}addBlock(e){this.enterLine();let n=e.deco;n&&n.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,n&&n.endSide>0&&(this.covering=e)}addLineDeco(e,n,r){let s=this.ensureLine();s.length+=r,s.collapsed+=r,s.widgetHeight=Math.max(s.widgetHeight,e),s.breaks+=n,this.writtenTo=this.pos=this.pos+r}finish(e){let n=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(n instanceof Qi)&&!this.isCovered?this.nodes.push(new Qi(0,-1)):(this.writtenToh.clientHeight||h.scrollWidth>h.clientWidth)&&m.overflow!="visible"){let g=h.getBoundingClientRect();i=Math.max(i,g.left),a=Math.min(a,g.right),l=Math.max(l,g.top),c=Math.min(d==t.parentNode?s.innerHeight:c,g.bottom)}d=m.position=="absolute"||m.position=="fixed"?h.offsetParent:h.parentNode}else if(d.nodeType==11)d=d.host;else break;return{left:i-n.left,right:Math.max(i,a)-n.left,top:l-(n.top+e),bottom:Math.max(l,c)-(n.top+e)}}function mle(t){let e=t.getBoundingClientRect(),n=t.ownerDocument.defaultView||window;return e.left0&&e.top0}function ple(t,e){let n=t.getBoundingClientRect();return{left:0,right:n.right-n.left,top:e,bottom:n.bottom-(n.top+e)}}class H4{constructor(e,n,r,s){this.from=e,this.to=n,this.size=r,this.displaySize=s}static same(e,n){if(e.length!=n.length)return!1;for(let r=0;rtypeof r!="function"&&r.class=="cm-lineWrapping");this.heightOracle=new ole(n),this.stateDeco=e.facet(W0).filter(r=>typeof r!="function"),this.heightMap=si.empty().applyChanges(this.stateDeco,An.empty,this.heightOracle.setDoc(e.doc),[new Ta(0,0,0,e.doc.length)]);for(let r=0;r<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());r++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=Ot.set(this.lineGaps.map(r=>r.draw(this,!1))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:n}=this.state.selection;for(let r=0;r<=1;r++){let s=r?n.head:n.anchor;if(!e.some(({from:i,to:a})=>s>=i&&s<=a)){let{from:i,to:a}=this.lineBlockAt(s);e.push(new u1(i,a))}}return this.viewports=e.sort((r,s)=>r.from-s.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?KE:new g6(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(u0(e,this.scaler))})}update(e,n=null){this.state=e.state;let r=this.stateDeco;this.stateDeco=this.state.facet(W0).filter(h=>typeof h!="function");let s=e.changedRanges,i=Ta.extendWithRanges(s,dle(r,this.stateDeco,e?e.changes:us.empty(this.state.doc.length))),a=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);GE(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),i),(this.heightMap.height!=a||nf)&&(e.flags|=2),l?(this.scrollAnchorPos=e.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=a);let c=i.length?this.mapViewport(this.viewport,e.changes):this.viewport;(n&&(n.range.headc.to)||!this.viewportIsAppropriate(c))&&(c=this.getViewport(0,n));let d=c.from!=this.viewport.from||c.to!=this.viewport.to;this.viewport=c,e.flags|=this.updateForViewport(),(d||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),n&&(this.scrollTarget=n),!this.mustEnforceCursorAssoc&&e.selectionSet&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(tq)&&(this.mustEnforceCursorAssoc=!0)}measure(e){let n=e.contentDOM,r=window.getComputedStyle(n),s=this.heightOracle,i=r.whiteSpace;this.defaultTextDirection=r.direction=="rtl"?br.RTL:br.LTR;let a=this.heightOracle.mustRefreshForWrapping(i),l=n.getBoundingClientRect(),c=a||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let d=0,h=0;if(l.width&&l.height){let{scaleX:T,scaleY:E}=_F(n,l);(T>.005&&Math.abs(this.scaleX-T)>.005||E>.005&&Math.abs(this.scaleY-E)>.005)&&(this.scaleX=T,this.scaleY=E,d|=16,a=c=!0)}let m=(parseInt(r.paddingTop)||0)*this.scaleY,g=(parseInt(r.paddingBottom)||0)*this.scaleY;(this.paddingTop!=m||this.paddingBottom!=g)&&(this.paddingTop=m,this.paddingBottom=g,d|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(s.lineWrapping&&(c=!0),this.editorWidth=e.scrollDOM.clientWidth,d|=16);let x=e.scrollDOM.scrollTop*this.scaleY;this.scrollTop!=x&&(this.scrollAnchorHeight=-1,this.scrollTop=x),this.scrolledToBottom=RF(e.scrollDOM);let y=(this.printing?ple:fle)(n,this.paddingTop),w=y.top-this.pixelViewport.top,S=y.bottom-this.pixelViewport.bottom;this.pixelViewport=y;let k=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(k!=this.inView&&(this.inView=k,k&&(c=!0)),!this.inView&&!this.scrollTarget&&!mle(e.dom))return 0;let j=l.width;if((this.contentDOMWidth!=j||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=e.scrollDOM.clientHeight,d|=16),c){let T=e.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(T)&&(a=!0),a||s.lineWrapping&&Math.abs(j-this.contentDOMWidth)>s.charWidth){let{lineHeight:E,charWidth:_,textHeight:A}=e.docView.measureTextSize();a=E>0&&s.refresh(i,E,_,A,Math.max(5,j/_),T),a&&(e.docView.minWidth=0,d|=16)}w>0&&S>0?h=Math.max(w,S):w<0&&S<0&&(h=Math.min(w,S)),GE();for(let E of this.viewports){let _=E.from==this.viewport.from?T:e.docView.measureVisibleLineHeights(E);this.heightMap=(a?si.empty().applyChanges(this.stateDeco,An.empty,this.heightOracle,[new Ta(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(s,0,a,new lle(E.from,_))}nf&&(d|=2)}let N=!this.viewportIsAppropriate(this.viewport,h)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return N&&(d&2&&(d|=this.updateScaler()),this.viewport=this.getViewport(h,this.scrollTarget),d|=this.updateForViewport()),(d&2||N)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(a?[]:this.lineGaps,e)),d|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),d}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,n){let r=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),s=this.heightMap,i=this.heightOracle,{visibleTop:a,visibleBottom:l}=this,c=new u1(s.lineAt(a-r*1e3,yr.ByHeight,i,0,0).from,s.lineAt(l+(1-r)*1e3,yr.ByHeight,i,0,0).to);if(n){let{head:d}=n.range;if(dc.to){let h=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),m=s.lineAt(d,yr.ByPos,i,0,0),g;n.y=="center"?g=(m.top+m.bottom)/2-h/2:n.y=="start"||n.y=="nearest"&&d=l+Math.max(10,Math.min(r,250)))&&s>a-2*1e3&&i>1,a=s<<1;if(this.defaultTextDirection!=br.LTR&&!r)return[];let l=[],c=(h,m,g,x)=>{if(m-hh&&kk.from>=g.from&&k.to<=g.to&&Math.abs(k.from-h)k.fromj));if(!S){if(mN.from<=m&&N.to>=m)){let N=n.moveToLineBoundary(Me.cursor(m),!1,!0).head;N>h&&(m=N)}let k=this.gapSize(g,h,m,x),j=r||k<2e6?k:2e6;S=new H4(h,m,k,j)}l.push(S)},d=h=>{if(h.length2e6)for(let _ of e)_.from>=h.from&&_.fromh.from&&c(h.from,x,h,m),yn.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let n=this.stateDeco;this.lineGaps.length&&(n=n.concat(this.lineGapDeco));let r=[];Bn.spans(n,this.viewport.from,this.viewport.to,{span(i,a){r.push({from:i,to:a})},point(){}},20);let s=0;if(r.length!=this.visibleRanges.length)s=12;else for(let i=0;i=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(n=>n.from<=e&&n.to>=e)||u0(this.heightMap.lineAt(e,yr.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(n=>n.top<=e&&n.bottom>=e)||u0(this.heightMap.lineAt(this.scaler.fromDOM(e),yr.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(e){let n=this.lineBlockAtHeight(e+8);return n.from>=this.viewport.from||this.viewportLines[0].top-e>200?n:this.viewportLines[0]}elementAtHeight(e){return u0(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}let u1=class{constructor(e,n){this.from=e,this.to=n}};function xle(t,e,n){let r=[],s=t,i=0;return Bn.spans(n,t,e,{span(){},point(a,l){a>s&&(r.push({from:s,to:a}),i+=a-s),s=l}},20),s=1)return e[e.length-1].to;let r=Math.floor(t*n);for(let s=0;;s++){let{from:i,to:a}=e[s],l=a-i;if(r<=l)return i+r;r-=l}}function h1(t,e){let n=0;for(let{from:r,to:s}of t.ranges){if(e<=s){n+=e-r;break}n+=s-r}return n/t.total}function vle(t,e){for(let n of t)if(e(n))return n}const KE={toDOM(t){return t},fromDOM(t){return t},scale:1,eq(t){return t==this}};class g6{constructor(e,n,r){let s=0,i=0,a=0;this.viewports=r.map(({from:l,to:c})=>{let d=n.lineAt(l,yr.ByPos,e,0,0).top,h=n.lineAt(c,yr.ByPos,e,0,0).bottom;return s+=h-d,{from:l,to:c,top:d,bottom:h,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(n.height-s);for(let l of this.viewports)l.domTop=a+(l.top-i)*this.scale,a=l.domBottom=l.domTop+(l.bottom-l.top),i=l.bottom}toDOM(e){for(let n=0,r=0,s=0;;n++){let i=nn.from==e.viewports[r].from&&n.to==e.viewports[r].to):!1}}function u0(t,e){if(e.scale==1)return t;let n=e.toDOM(t.top),r=e.toDOM(t.bottom);return new Oo(t.from,t.length,n,r-n,Array.isArray(t._content)?t._content.map(s=>u0(s,e)):t._content)}const f1=st.define({combine:t=>t.join(" ")}),Kk=st.define({combine:t=>t.indexOf(!0)>-1}),Zk=Yc.newName(),kq=Yc.newName(),Oq=Yc.newName(),jq={"&light":"."+kq,"&dark":"."+Oq};function Jk(t,e,n){return new Yc(e,{finish(r){return/&/.test(r)?r.replace(/&\w*/,s=>{if(s=="&")return t;if(!n||!n[s])throw new RangeError(`Unsupported selector: ${s}`);return n[s]}):t+" "+r}})}const yle=Jk("."+Zk,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},jq),ble={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},Q4=et.ie&&et.ie_version<=11;class wle{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new roe,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(n=>{for(let r of n)this.queue.push(r);(et.ie&&et.ie_version<=11||et.ios&&e.composing)&&n.some(r=>r.type=="childList"&&r.removedNodes.length||r.type=="characterData"&&r.oldValue.length>r.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&et.android&&e.constructor.EDIT_CONTEXT!==!1&&!(et.chrome&&et.chrome_version<126)&&(this.editContext=new kle(e),e.state.facet(Ml)&&(e.contentDOM.editContext=this.editContext.editContext)),Q4&&(this.onCharData=n=>{this.queue.push({target:n.target,type:"characterData",oldValue:n.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var n;((n=this.view.docView)===null||n===void 0?void 0:n.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),n.length>0&&n[n.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(n=>{n.length>0&&n[n.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type=="change"||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((n,r)=>n!=e[r]))){this.gapIntersection.disconnect();for(let n of e)this.gapIntersection.observe(n);this.gaps=e}}onSelectionChange(e){let n=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:r}=this,s=this.selectionRange;if(r.state.facet(Ml)?r.root.activeElement!=this.dom:!fv(this.dom,s))return;let i=s.anchorNode&&r.docView.nearest(s.anchorNode);if(i&&i.ignoreEvent(e)){n||(this.selectionChanged=!1);return}(et.ie&&et.ie_version<=11||et.android&&et.chrome)&&!r.state.selection.main.empty&&s.focusNode&&j0(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,n=U0(e.root);if(!n)return!1;let r=et.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&Sle(this.view,n)||n;if(!r||this.selectionRange.eq(r))return!1;let s=fv(this.dom,r);return s&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime{let i=this.delayedAndroidKey;i&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=i.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&i.force&&zh(this.dom,i.key,i.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:n,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let n=-1,r=-1,s=!1;for(let i of e){let a=this.readMutation(i);a&&(a.typeOver&&(s=!0),n==-1?{from:n,to:r}=a:(n=Math.min(a.from,n),r=Math.max(a.to,r)))}return{from:n,to:r,typeOver:s}}readChange(){let{from:e,to:n,typeOver:r}=this.processRecords(),s=this.selectionChanged&&fv(this.dom,this.selectionRange);if(e<0&&!s)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let i=new Foe(this.view,e,n,r);return this.view.docView.domChanged={newSel:i.newSel?i.newSel.main:null},i}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let n=this.readChange();if(!n)return this.view.requestMeasure(),!1;let r=this.view.state,s=hq(this.view,n);return this.view.state==r&&(n.domChanged||n.newSel&&!n.newSel.main.eq(this.view.state.selection.main))&&this.view.update([]),s}readMutation(e){let n=this.view.docView.nearest(e.target);if(!n||n.ignoreMutation(e))return null;if(n.markDirty(e.type=="attributes"),e.type=="attributes"&&(n.flags|=4),e.type=="childList"){let r=ZE(n,e.previousSibling||e.target.previousSibling,-1),s=ZE(n,e.nextSibling||e.target.nextSibling,1);return{from:r?n.posAfter(r):n.posAtStart,to:s?n.posBefore(s):n.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:n.posAtStart,to:n.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(Ml)!=e.state.facet(Ml)&&(e.view.contentDOM.editContext=e.state.facet(Ml)?this.editContext.editContext:null))}destroy(){var e,n,r;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(n=this.gapIntersection)===null||n===void 0||n.disconnect(),(r=this.resizeScroll)===null||r===void 0||r.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}}function ZE(t,e,n){for(;e;){let r=sr.get(e);if(r&&r.parent==t)return r;let s=e.parentNode;e=s!=t.dom?s:n>0?e.nextSibling:e.previousSibling}return null}function JE(t,e){let n=e.startContainer,r=e.startOffset,s=e.endContainer,i=e.endOffset,a=t.docView.domAtPos(t.state.selection.main.anchor);return j0(a.node,a.offset,s,i)&&([n,r,s,i]=[s,i,n,r]),{anchorNode:n,anchorOffset:r,focusNode:s,focusOffset:i}}function Sle(t,e){if(e.getComposedRanges){let s=e.getComposedRanges(t.root)[0];if(s)return JE(t,s)}let n=null;function r(s){s.preventDefault(),s.stopImmediatePropagation(),n=s.getTargetRanges()[0]}return t.contentDOM.addEventListener("beforeinput",r,!0),t.dom.ownerDocument.execCommand("indent"),t.contentDOM.removeEventListener("beforeinput",r,!0),n?JE(t,n):null}class kle{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let n=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=r=>{let s=e.state.selection.main,{anchor:i,head:a}=s,l=this.toEditorPos(r.updateRangeStart),c=this.toEditorPos(r.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:r.updateRangeStart,editorBase:l,drifted:!1});let d=c-l>r.text.length;l==this.from&&ithis.to&&(c=i);let h=fq(e.state.sliceDoc(l,c),r.text,(d?s.from:s.to)-l,d?"end":null);if(!h){let g=Me.single(this.toEditorPos(r.selectionStart),this.toEditorPos(r.selectionEnd));g.main.eq(s)||e.dispatch({selection:g,userEvent:"select"});return}let m={from:h.from+l,to:h.toA+l,insert:An.of(r.text.slice(h.from,h.toB).split(` +`))};if((et.mac||et.android)&&m.from==a-1&&/^\. ?$/.test(r.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(m={from:l,to:c,insert:An.of([r.text.replace("."," ")])}),this.pendingContextChange=m,!e.state.readOnly){let g=this.to-this.from+(m.to-m.from+m.insert.length);m6(e,m,Me.single(this.toEditorPos(r.selectionStart,g),this.toEditorPos(r.selectionEnd,g)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),m.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(n.text.slice(Math.max(0,r.updateRangeStart-1),Math.min(n.text.length,r.updateRangeStart+1)))&&this.handlers.compositionend(r)},this.handlers.characterboundsupdate=r=>{let s=[],i=null;for(let a=this.toEditorPos(r.rangeStart),l=this.toEditorPos(r.rangeEnd);a{let s=[];for(let i of r.getTextFormats()){let a=i.underlineStyle,l=i.underlineThickness;if(!/none/i.test(a)&&!/none/i.test(l)){let c=this.toEditorPos(i.rangeStart),d=this.toEditorPos(i.rangeEnd);if(c{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:r}=this.composing;this.composing=null,r&&this.reset(e.state)}};for(let r in this.handlers)n.addEventListener(r,this.handlers[r]);this.measureReq={read:r=>{this.editContext.updateControlBounds(r.contentDOM.getBoundingClientRect());let s=U0(r.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let n=0,r=!1,s=this.pendingContextChange;return e.changes.iterChanges((i,a,l,c,d)=>{if(r)return;let h=d.length-(a-i);if(s&&a>=s.to)if(s.from==i&&s.to==a&&s.insert.eq(d)){s=this.pendingContextChange=null,n+=h,this.to+=h;return}else s=null,this.revertPending(e.state);if(i+=n,a+=n,a<=this.from)this.from+=h,this.to+=h;else if(ithis.to||this.to-this.from+d.length>3e4){r=!0;return}this.editContext.updateText(this.toContextPos(i),this.toContextPos(a),d.toString()),this.to+=h}n+=h}),s&&!r&&this.revertPending(e.state),!r}update(e){let n=this.pendingContextChange,r=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(r.from,r.to)&&e.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||n)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:n}=e.selection.main;this.from=Math.max(0,n-1e4),this.to=Math.min(e.doc.length,n+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let n=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(n.from),this.toContextPos(n.from+n.insert.length),e.doc.sliceString(n.from,n.to))}setSelection(e){let{main:n}=e.selection,r=this.toContextPos(Math.max(this.from,Math.min(this.to,n.anchor))),s=this.toContextPos(n.head);(this.editContext.selectionStart!=r||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(r,s)}rangeIsValid(e){let{head:n}=e.selection.main;return!(this.from>0&&n-this.from<500||this.to1e4*3)}toEditorPos(e,n=this.to-this.from){e=Math.min(e,n);let r=this.composing;return r&&r.drifted?r.editorBase+(e-r.contextBase):e+this.from}toContextPos(e){let n=this.composing;return n&&n.drifted?n.contextBase+(e-n.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}}class Ze{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var n;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:r}=e;this.dispatchTransactions=e.dispatchTransactions||r&&(s=>s.forEach(i=>r(i,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=e.root||soe(e.parent)||document,this.viewState=new YE(e.state||Nn.create(e)),e.scrollTo&&e.scrollTo.is(o1)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Th).map(s=>new F4(s));for(let s of this.plugins)s.update(this);this.observer=new wle(this),this.inputState=new Qoe(this),this.inputState.ensureHandlers(this.plugins),this.docView=new AE(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((n=document.fonts)===null||n===void 0)&&n.ready&&document.fonts.ready.then(()=>this.requestMeasure())}dispatch(...e){let n=e.length==1&&e[0]instanceof ss?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(n,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let n=!1,r=!1,s,i=this.state;for(let g of e){if(g.startState!=i)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");i=g.state}if(this.destroyed){this.viewState.state=i;return}let a=this.hasFocus,l=0,c=null;e.some(g=>g.annotation(yq))?(this.inputState.notifiedFocused=a,l=1):a!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=a,c=bq(i,a),c||(l=1));let d=this.observer.delayedAndroidKey,h=null;if(d?(this.observer.clearDelayedAndroidKey(),h=this.observer.readChange(),(h&&!this.state.doc.eq(i.doc)||!this.state.selection.eq(i.selection))&&(h=null)):this.observer.clear(),i.facet(Nn.phrases)!=this.state.facet(Nn.phrases))return this.setState(i);s=Kv.create(this,i,e),s.flags|=l;let m=this.viewState.scrollTarget;try{this.updateState=2;for(let g of e){if(m&&(m=m.map(g.changes)),g.scrollIntoView){let{main:x}=g.state.selection;m=new Ih(x.empty?x:Me.cursor(x.head,x.head>x.anchor?-1:1))}for(let x of g.effects)x.is(o1)&&(m=x.value.clip(this.state))}this.viewState.update(s,m),this.bidiCache=Jv.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),n=this.docView.update(s),this.state.facet(l0)!=this.styleModules&&this.mountStyles(),r=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(n,e.some(g=>g.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(f1)!=s.state.facet(f1)&&(this.viewState.mustMeasureContent=!0),(n||r||m||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),n&&this.docViewUpdate(),!s.empty)for(let g of this.state.facet(Wk))try{g(s)}catch(x){bi(this.state,x,"update listener")}(c||h)&&Promise.resolve().then(()=>{c&&this.state==c.startState&&this.dispatch(c),h&&!hq(this,h)&&d.force&&zh(this.contentDOM,d.key,d.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let n=this.hasFocus;try{for(let r of this.plugins)r.destroy(this);this.viewState=new YE(e),this.plugins=e.facet(Th).map(r=>new F4(r)),this.pluginMap.clear();for(let r of this.plugins)r.update(this);this.docView.destroy(),this.docView=new AE(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}n&&this.focus(),this.requestMeasure()}updatePlugins(e){let n=e.startState.facet(Th),r=e.state.facet(Th);if(n!=r){let s=[];for(let i of r){let a=n.indexOf(i);if(a<0)s.push(new F4(i));else{let l=this.plugins[a];l.mustUpdate=e,s.push(l)}}for(let i of this.plugins)i.mustUpdate!=e&&i.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=e;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let n=null,r=this.scrollDOM,s=r.scrollTop*this.scaleY,{scrollAnchorPos:i,scrollAnchorHeight:a}=this.viewState;Math.abs(s-this.viewState.scrollTop)>1&&(a=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(a<0)if(RF(r))i=-1,a=this.viewState.heightMap.height;else{let x=this.viewState.scrollAnchorAt(s);i=x.from,a=x.top}this.updateState=1;let c=this.viewState.measure(this);if(!c&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let d=[];c&4||([this.measureRequests,d]=[d,this.measureRequests]);let h=d.map(x=>{try{return x.read(this)}catch(y){return bi(this.state,y),e_}}),m=Kv.create(this,this.state,[]),g=!1;m.flags|=c,n?n.flags|=c:n=m,this.updateState=2,m.empty||(this.updatePlugins(m),this.inputState.update(m),this.updateAttrs(),g=this.docView.update(m),g&&this.docViewUpdate());for(let x=0;x1||y<-1){s=s+y,r.scrollTop=s/this.scaleY,a=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(n&&!n.empty)for(let l of this.state.facet(Wk))l(n)}get themeClasses(){return Zk+" "+(this.state.facet(Kk)?Oq:kq)+" "+this.state.facet(f1)}updateAttrs(){let e=t_(this,sq,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),n={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Ml)?"true":"false",class:"cm-content",style:`${et.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(n["aria-readonly"]="true"),t_(this,h6,n);let r=this.observer.ignore(()=>{let s=$k(this.contentDOM,this.contentAttrs,n),i=$k(this.dom,this.editorAttrs,e);return s||i});return this.editorAttrs=e,this.contentAttrs=n,r}showAnnouncements(e){let n=!0;for(let r of e)for(let s of r.effects)if(s.is(Ze.announce)){n&&(this.announceDOM.textContent=""),n=!1;let i=this.announceDOM.appendChild(document.createElement("div"));i.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(l0);let e=this.state.facet(Ze.cspNonce);Yc.mount(this.root,this.styleModules.concat(yle).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let n=0;nr.plugin==e)||null),n&&n.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,n,r){return $4(this,e,zE(this,e,n,r))}moveByGroup(e,n){return $4(this,e,zE(this,e,n,r=>Poe(this,e.head,r)))}visualLineSide(e,n){let r=this.bidiSpans(e),s=this.textDirectionAt(e.from),i=r[n?r.length-1:0];return Me.cursor(i.side(n,s)+e.from,i.forward(!n,s)?1:-1)}moveToLineBoundary(e,n,r=!0){return Doe(this,e,n,r)}moveVertically(e,n,r){return $4(this,e,zoe(this,e,n,r))}domAtPos(e){return this.docView.domAtPos(e)}posAtDOM(e,n=0){return this.docView.posFromDOM(e,n)}posAtCoords(e,n=!0){return this.readMeasured(),cq(this,e,n)}coordsAtPos(e,n=1){this.readMeasured();let r=this.docView.coordsAt(e,n);if(!r||r.left==r.right)return r;let s=this.state.doc.lineAt(e),i=this.bidiSpans(s),a=i[Hc.find(i,e-s.from,-1,n)];return Up(r,a.dir==br.LTR==n>0)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(eq)||ethis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>Ole)return UF(e.length);let n=this.textDirectionAt(e.from),r;for(let i of this.bidiCache)if(i.from==e.from&&i.dir==n&&(i.fresh||VF(i.isolates,r=_E(this,e))))return i.order;r||(r=_E(this,e));let s=voe(e.text,n,r);return this.bidiCache.push(new Jv(e.from,e.to,n,r,!0,s)),s}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||et.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{AF(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,n={}){return o1.of(new Ih(typeof e=="number"?Me.cursor(e):e,n.y,n.x,n.yMargin,n.xMargin))}scrollSnapshot(){let{scrollTop:e,scrollLeft:n}=this.scrollDOM,r=this.viewState.scrollAnchorAt(e);return o1.of(new Ih(Me.cursor(r.from),"start","start",r.top-e,n,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return Yr.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return Yr.define(()=>({}),{eventObservers:e})}static theme(e,n){let r=Yc.newName(),s=[f1.of(r),l0.of(Jk(`.${r}`,e))];return n&&n.dark&&s.push(Kk.of(!0)),s}static baseTheme(e){return uu.lowest(l0.of(Jk("."+Zk,e,jq)))}static findFromDOM(e){var n;let r=e.querySelector(".cm-content"),s=r&&sr.get(r)||sr.get(e);return((n=s?.rootView)===null||n===void 0?void 0:n.view)||null}}Ze.styleModule=l0;Ze.inputHandler=ZF;Ze.clipboardInputFilter=u6;Ze.clipboardOutputFilter=d6;Ze.scrollHandler=nq;Ze.focusChangeEffect=JF;Ze.perLineTextDirection=eq;Ze.exceptionSink=KF;Ze.updateListener=Wk;Ze.editable=Ml;Ze.mouseSelectionStyle=YF;Ze.dragMovesSelection=XF;Ze.clickAddsSelectionRange=GF;Ze.decorations=W0;Ze.outerDecorations=iq;Ze.atomicRanges=Xp;Ze.bidiIsolatedRanges=aq;Ze.scrollMargins=oq;Ze.darkTheme=Kk;Ze.cspNonce=st.define({combine:t=>t.length?t[0]:""});Ze.contentAttributes=h6;Ze.editorAttributes=sq;Ze.lineWrapping=Ze.contentAttributes.of({class:"cm-lineWrapping"});Ze.announce=Qt.define();const Ole=4096,e_={};class Jv{constructor(e,n,r,s,i,a){this.from=e,this.to=n,this.dir=r,this.isolates=s,this.fresh=i,this.order=a}static update(e,n){if(n.empty&&!e.some(i=>i.fresh))return e;let r=[],s=e.length?e[e.length-1].dir:br.LTR;for(let i=Math.max(0,e.length-10);i=0;s--){let i=r[s],a=typeof i=="function"?i(t):i;a&&qk(a,n)}return n}const jle=et.mac?"mac":et.windows?"win":et.linux?"linux":"key";function Nle(t,e){const n=t.split(/-(?!$)/);let r=n[n.length-1];r=="Space"&&(r=" ");let s,i,a,l;for(let c=0;cr.concat(s),[]))),n}function Tle(t,e,n){return Cq(Nq(t.state),e,t,n)}let Bc=null;const Ele=4e3;function _le(t,e=jle){let n=Object.create(null),r=Object.create(null),s=(a,l)=>{let c=r[a];if(c==null)r[a]=l;else if(c!=l)throw new Error("Key binding "+a+" is used both as a regular binding and as a multi-stroke prefix")},i=(a,l,c,d,h)=>{var m,g;let x=n[a]||(n[a]=Object.create(null)),y=l.split(/ (?!$)/).map(k=>Nle(k,e));for(let k=1;k{let T=Bc={view:N,prefix:j,scope:a};return setTimeout(()=>{Bc==T&&(Bc=null)},Ele),!0}]})}let w=y.join(" ");s(w,!1);let S=x[w]||(x[w]={preventDefault:!1,stopPropagation:!1,run:((g=(m=x._any)===null||m===void 0?void 0:m.run)===null||g===void 0?void 0:g.slice())||[]});c&&S.run.push(c),d&&(S.preventDefault=!0),h&&(S.stopPropagation=!0)};for(let a of t){let l=a.scope?a.scope.split(" "):["editor"];if(a.any)for(let d of l){let h=n[d]||(n[d]=Object.create(null));h._any||(h._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:m}=a;for(let g in h)h[g].run.push(x=>m(x,eO))}let c=a[e]||a.key;if(c)for(let d of l)i(d,c,a.run,a.preventDefault,a.stopPropagation),a.shift&&i(d,"Shift-"+c,a.shift,a.preventDefault,a.stopPropagation)}return n}let eO=null;function Cq(t,e,n,r){eO=e;let s=Zae(e),i=vi(s,0),a=ko(i)==s.length&&s!=" ",l="",c=!1,d=!1,h=!1;Bc&&Bc.view==n&&Bc.scope==r&&(l=Bc.prefix+" ",pq.indexOf(e.keyCode)<0&&(d=!0,Bc=null));let m=new Set,g=S=>{if(S){for(let k of S.run)if(!m.has(k)&&(m.add(k),k(n)))return S.stopPropagation&&(h=!0),!0;S.preventDefault&&(S.stopPropagation&&(h=!0),d=!0)}return!1},x=t[r],y,w;return x&&(g(x[l+m1(s,e,!a)])?c=!0:a&&(e.altKey||e.metaKey||e.ctrlKey)&&!(et.windows&&e.ctrlKey&&e.altKey)&&!(et.mac&&e.altKey&&!(e.ctrlKey||e.metaKey))&&(y=Kc[e.keyCode])&&y!=s?(g(x[l+m1(y,e,!0)])||e.shiftKey&&(w=V0[e.keyCode])!=s&&w!=y&&g(x[l+m1(w,e,!1)]))&&(c=!0):a&&e.shiftKey&&g(x[l+m1(s,e,!0)])&&(c=!0),!c&&g(x._any)&&(c=!0)),d&&(c=!0),c&&h&&e.stopPropagation(),eO=null,c}class Kp{constructor(e,n,r,s,i){this.className=e,this.left=n,this.top=r,this.width=s,this.height=i}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,n){return n.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,n,r){if(r.empty){let s=e.coordsAtPos(r.head,r.assoc||1);if(!s)return[];let i=Tq(e);return[new Kp(n,s.left-i.left,s.top-i.top,null,s.bottom-s.top)]}else return Ale(e,n,r)}}function Tq(t){let e=t.scrollDOM.getBoundingClientRect();return{left:(t.textDirection==br.LTR?e.left:e.right-t.scrollDOM.clientWidth*t.scaleX)-t.scrollDOM.scrollLeft*t.scaleX,top:e.top-t.scrollDOM.scrollTop*t.scaleY}}function r_(t,e,n,r){let s=t.coordsAtPos(e,n*2);if(!s)return r;let i=t.dom.getBoundingClientRect(),a=(s.top+s.bottom)/2,l=t.posAtCoords({x:i.left+1,y:a}),c=t.posAtCoords({x:i.right-1,y:a});return l==null||c==null?r:{from:Math.max(r.from,Math.min(l,c)),to:Math.min(r.to,Math.max(l,c))}}function Ale(t,e,n){if(n.to<=t.viewport.from||n.from>=t.viewport.to)return[];let r=Math.max(n.from,t.viewport.from),s=Math.min(n.to,t.viewport.to),i=t.textDirection==br.LTR,a=t.contentDOM,l=a.getBoundingClientRect(),c=Tq(t),d=a.querySelector(".cm-line"),h=d&&window.getComputedStyle(d),m=l.left+(h?parseInt(h.paddingLeft)+Math.min(0,parseInt(h.textIndent)):0),g=l.right-(h?parseInt(h.paddingRight):0),x=Xk(t,r,1),y=Xk(t,s,-1),w=x.type==ri.Text?x:null,S=y.type==ri.Text?y:null;if(w&&(t.lineWrapping||x.widgetLineBreaks)&&(w=r_(t,r,1,w)),S&&(t.lineWrapping||y.widgetLineBreaks)&&(S=r_(t,s,-1,S)),w&&S&&w.from==S.from&&w.to==S.to)return j(N(n.from,n.to,w));{let E=w?N(n.from,null,w):T(x,!1),_=S?N(null,n.to,S):T(y,!0),A=[];return(w||x).to<(S||y).from-(w&&S?1:0)||x.widgetLineBreaks>1&&E.bottom+t.defaultLineHeight/2<_.top?A.push(k(m,E.bottom,g,_.top)):E.bottom<_.top&&t.elementAtHeight((E.bottom+_.top)/2).type==ri.Text&&(E.bottom=_.top=(E.bottom+_.top)/2),j(E).concat(A).concat(j(_))}function k(E,_,A,D){return new Kp(e,E-c.left,_-c.top,A-E,D-_)}function j({top:E,bottom:_,horizontal:A}){let D=[];for(let q=0;qW&&I.from=L)break;R>V&&H(Math.max(Y,V),E==null&&Y<=W,Math.min(R,L),_==null&&R>=ee,K.dir)}if(V=$.to+1,V>=L)break}return B.length==0&&H(W,E==null,ee,_==null,t.textDirection),{top:D,bottom:q,horizontal:B}}function T(E,_){let A=l.top+(_?E.top:E.bottom);return{top:A,bottom:A,horizontal:[]}}}function Mle(t,e){return t.constructor==e.constructor&&t.eq(e)}class Rle{constructor(e,n){this.view=e,this.layer=n,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),n.above&&this.dom.classList.add("cm-layer-above"),n.class&&this.dom.classList.add(n.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),n.mount&&n.mount(this.dom,e)}update(e){e.startState.facet(gv)!=e.state.facet(gv)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let n=0,r=e.facet(gv);for(;n!Mle(n,this.drawn[r]))){let n=this.dom.firstChild,r=0;for(let s of e)s.update&&n&&s.constructor&&this.drawn[r].constructor&&s.update(n,this.drawn[r])?(n=n.nextSibling,r++):this.dom.insertBefore(s.draw(),n);for(;n;){let s=n.nextSibling;n.remove(),n=s}this.drawn=e,et.safari&&et.safari_version>=26&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}}const gv=st.define();function Eq(t){return[Yr.define(e=>new Rle(e,t)),gv.of(t)]}const G0=st.define({combine(t){return Vo(t,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,n)=>Math.min(e,n),drawRangeCursor:(e,n)=>e||n})}});function Dle(t={}){return[G0.of(t),Ple,zle,Ile,tq.of(!0)]}function _q(t){return t.startState.facet(G0)!=t.state.facet(G0)}const Ple=Eq({above:!0,markers(t){let{state:e}=t,n=e.facet(G0),r=[];for(let s of e.selection.ranges){let i=s==e.selection.main;if(s.empty||n.drawRangeCursor){let a=i?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:Me.cursor(s.head,s.head>s.anchor?-1:1);for(let c of Kp.forRange(t,a,l))r.push(c)}}return r},update(t,e){t.transactions.some(r=>r.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let n=_q(t);return n&&s_(t.state,e),t.docChanged||t.selectionSet||n},mount(t,e){s_(e.state,t)},class:"cm-cursorLayer"});function s_(t,e){e.style.animationDuration=t.facet(G0).cursorBlinkRate+"ms"}const zle=Eq({above:!1,markers(t){return t.state.selection.ranges.map(e=>e.empty?[]:Kp.forRange(t,"cm-selectionBackground",e)).reduce((e,n)=>e.concat(n))},update(t,e){return t.docChanged||t.selectionSet||t.viewportChanged||_q(t)},class:"cm-selectionLayer"}),Ile=uu.highest(Ze.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}})),Aq=Qt.define({map(t,e){return t==null?null:e.mapPos(t)}}),d0=Os.define({create(){return null},update(t,e){return t!=null&&(t=e.changes.mapPos(t)),e.effects.reduce((n,r)=>r.is(Aq)?r.value:n,t)}}),Lle=Yr.fromClass(class{constructor(t){this.view=t,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(t){var e;let n=t.state.field(d0);n==null?this.cursor!=null&&((e=this.cursor)===null||e===void 0||e.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(t.startState.field(d0)!=n||t.docChanged||t.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:t}=this,e=t.state.field(d0),n=e!=null&&t.coordsAtPos(e);if(!n)return null;let r=t.scrollDOM.getBoundingClientRect();return{left:n.left-r.left+t.scrollDOM.scrollLeft*t.scaleX,top:n.top-r.top+t.scrollDOM.scrollTop*t.scaleY,height:n.bottom-n.top}}drawCursor(t){if(this.cursor){let{scaleX:e,scaleY:n}=this.view;t?(this.cursor.style.left=t.left/e+"px",this.cursor.style.top=t.top/n+"px",this.cursor.style.height=t.height/n+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(t){this.view.state.field(d0)!=t&&this.view.dispatch({effects:Aq.of(t)})}},{eventObservers:{dragover(t){this.setDropPos(this.view.posAtCoords({x:t.clientX,y:t.clientY}))},dragleave(t){(t.target==this.view.contentDOM||!this.view.contentDOM.contains(t.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function Ble(){return[d0,Lle]}function i_(t,e,n,r,s){e.lastIndex=0;for(let i=t.iterRange(n,r),a=n,l;!i.next().done;a+=i.value.length)if(!i.lineBreak)for(;l=e.exec(i.value);)s(a+l.index,l)}function Fle(t,e){let n=t.visibleRanges;if(n.length==1&&n[0].from==t.viewport.from&&n[0].to==t.viewport.to)return n;let r=[];for(let{from:s,to:i}of n)s=Math.max(t.state.doc.lineAt(s).from,s-e),i=Math.min(t.state.doc.lineAt(i).to,i+e),r.length&&r[r.length-1].to>=s?r[r.length-1].to=i:r.push({from:s,to:i});return r}class qle{constructor(e){const{regexp:n,decoration:r,decorate:s,boundary:i,maxLength:a=1e3}=e;if(!n.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=n,s)this.addMatch=(l,c,d,h)=>s(h,d,d+l[0].length,l,c);else if(typeof r=="function")this.addMatch=(l,c,d,h)=>{let m=r(l,c,d);m&&h(d,d+l[0].length,m)};else if(r)this.addMatch=(l,c,d,h)=>h(d,d+l[0].length,r);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=i,this.maxLength=a}createDeco(e){let n=new Hl,r=n.add.bind(n);for(let{from:s,to:i}of Fle(e,this.maxLength))i_(e.state.doc,this.regexp,s,i,(a,l)=>this.addMatch(l,e,a,r));return n.finish()}updateDeco(e,n){let r=1e9,s=-1;return e.docChanged&&e.changes.iterChanges((i,a,l,c)=>{c>=e.view.viewport.from&&l<=e.view.viewport.to&&(r=Math.min(l,r),s=Math.max(c,s))}),e.viewportMoved||s-r>1e3?this.createDeco(e.view):s>-1?this.updateRange(e.view,n.map(e.changes),r,s):n}updateRange(e,n,r,s){for(let i of e.visibleRanges){let a=Math.max(i.from,r),l=Math.min(i.to,s);if(l>=a){let c=e.state.doc.lineAt(a),d=c.toc.from;a--)if(this.boundary.test(c.text[a-1-c.from])){h=a;break}for(;lg.push(k.range(w,S));if(c==d)for(this.regexp.lastIndex=h-c.from;(x=this.regexp.exec(c.text))&&x.indexthis.addMatch(S,e,w,y));n=n.update({filterFrom:h,filterTo:m,filter:(w,S)=>wm,add:g})}}return n}}const tO=/x/.unicode!=null?"gu":"g",$le=new RegExp(`[\0-\b +--Ÿ­؜​‎‏\u2028\u2029‭‮⁦⁧⁩\uFEFF-]`,tO),Hle={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let V4=null;function Qle(){var t;if(V4==null&&typeof document<"u"&&document.body){let e=document.body.style;V4=((t=e.tabSize)!==null&&t!==void 0?t:e.MozTabSize)!=null}return V4||!1}const xv=st.define({combine(t){let e=Vo(t,{render:null,specialChars:$le,addSpecialChars:null});return(e.replaceTabs=!Qle())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,tO)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,tO)),e}});function Vle(t={}){return[xv.of(t),Ule()]}let a_=null;function Ule(){return a_||(a_=Yr.fromClass(class{constructor(t){this.view=t,this.decorations=Ot.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(t.state.facet(xv)),this.decorations=this.decorator.createDeco(t)}makeDecorator(t){return new qle({regexp:t.specialChars,decoration:(e,n,r)=>{let{doc:s}=n.state,i=vi(e[0],0);if(i==9){let a=s.lineAt(r),l=n.state.tabSize,c=Cf(a.text,l,r-a.from);return Ot.replace({widget:new Yle((l-c%l)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[i]||(this.decorationCache[i]=Ot.replace({widget:new Xle(t,i)}))},boundary:t.replaceTabs?void 0:/[^]/})}update(t){let e=t.state.facet(xv);t.startState.facet(xv)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(t.view)):this.decorations=this.decorator.updateDeco(t,this.decorations)}},{decorations:t=>t.decorations}))}const Wle="•";function Gle(t){return t>=32?Wle:t==10?"␤":String.fromCharCode(9216+t)}class Xle extends Uo{constructor(e,n){super(),this.options=e,this.code=n}eq(e){return e.code==this.code}toDOM(e){let n=Gle(this.code),r=e.state.phrase("Control character")+" "+(Hle[this.code]||"0x"+this.code.toString(16)),s=this.options.render&&this.options.render(this.code,r,n);if(s)return s;let i=document.createElement("span");return i.textContent=n,i.title=r,i.setAttribute("aria-label",r),i.className="cm-specialChar",i}ignoreEvent(){return!1}}class Yle extends Uo{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}}function Kle(){return Jle}const Zle=Ot.line({class:"cm-activeLine"}),Jle=Yr.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.docChanged||t.selectionSet)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=-1,n=[];for(let r of t.state.selection.ranges){let s=t.lineBlockAt(r.head);s.from>e&&(n.push(Zle.range(s.from)),e=s.from)}return Ot.set(n)}},{decorations:t=>t.decorations});class ece extends Uo{constructor(e){super(),this.content=e}toDOM(e){let n=document.createElement("span");return n.className="cm-placeholder",n.style.pointerEvents="none",n.appendChild(typeof this.content=="string"?document.createTextNode(this.content):typeof this.content=="function"?this.content(e):this.content.cloneNode(!0)),n.setAttribute("aria-hidden","true"),n}coordsAt(e){let n=e.firstChild?Jh(e.firstChild):[];if(!n.length)return null;let r=window.getComputedStyle(e.parentNode),s=Up(n[0],r.direction!="rtl"),i=parseInt(r.lineHeight);return s.bottom-s.top>i*1.5?{left:s.left,right:s.right,top:s.top,bottom:s.top+i}:s}ignoreEvent(){return!1}}function tce(t){let e=Yr.fromClass(class{constructor(n){this.view=n,this.placeholder=t?Ot.set([Ot.widget({widget:new ece(t),side:1}).range(0)]):Ot.none}get decorations(){return this.view.state.doc.length?Ot.none:this.placeholder}},{decorations:n=>n.decorations});return typeof t=="string"?[e,Ze.contentAttributes.of({"aria-placeholder":t})]:e}const nO=2e3;function nce(t,e,n){let r=Math.min(e.line,n.line),s=Math.max(e.line,n.line),i=[];if(e.off>nO||n.off>nO||e.col<0||n.col<0){let a=Math.min(e.off,n.off),l=Math.max(e.off,n.off);for(let c=r;c<=s;c++){let d=t.doc.line(c);d.length<=l&&i.push(Me.range(d.from+a,d.to+l))}}else{let a=Math.min(e.col,n.col),l=Math.max(e.col,n.col);for(let c=r;c<=s;c++){let d=t.doc.line(c),h=Rk(d.text,a,t.tabSize,!0);if(h<0)i.push(Me.cursor(d.to));else{let m=Rk(d.text,l,t.tabSize);i.push(Me.range(d.from+h,d.from+m))}}}return i}function rce(t,e){let n=t.coordsAtPos(t.viewport.from);return n?Math.round(Math.abs((n.left-e)/t.defaultCharacterWidth)):-1}function o_(t,e){let n=t.posAtCoords({x:e.clientX,y:e.clientY},!1),r=t.state.doc.lineAt(n),s=n-r.from,i=s>nO?-1:s==r.length?rce(t,e.clientX):Cf(r.text,t.state.tabSize,n-r.from);return{line:r.number,col:i,off:s}}function sce(t,e){let n=o_(t,e),r=t.state.selection;return n?{update(s){if(s.docChanged){let i=s.changes.mapPos(s.startState.doc.line(n.line).from),a=s.state.doc.lineAt(i);n={line:a.number,col:n.col,off:Math.min(n.off,a.length)},r=r.map(s.changes)}},get(s,i,a){let l=o_(t,s);if(!l)return r;let c=nce(t.state,n,l);return c.length?a?Me.create(c.concat(r.ranges)):Me.create(c):r}}:null}function ice(t){let e=(n=>n.altKey&&n.button==0);return Ze.mouseSelectionStyle.of((n,r)=>e(r)?sce(n,r):null)}const ace={Alt:[18,t=>!!t.altKey],Control:[17,t=>!!t.ctrlKey],Shift:[16,t=>!!t.shiftKey],Meta:[91,t=>!!t.metaKey]},oce={style:"cursor: crosshair"};function lce(t={}){let[e,n]=ace[t.key||"Alt"],r=Yr.fromClass(class{constructor(s){this.view=s,this.isDown=!1}set(s){this.isDown!=s&&(this.isDown=s,this.view.update([]))}},{eventObservers:{keydown(s){this.set(s.keyCode==e||n(s))},keyup(s){(s.keyCode==e||!n(s))&&this.set(!1)},mousemove(s){this.set(n(s))}}});return[r,Ze.contentAttributes.of(s=>{var i;return!((i=s.plugin(r))===null||i===void 0)&&i.isDown?oce:null})]}const p1="-10000px";class Mq{constructor(e,n,r,s){this.facet=n,this.createTooltipView=r,this.removeTooltipView=s,this.input=e.state.facet(n),this.tooltips=this.input.filter(a=>a);let i=null;this.tooltipViews=this.tooltips.map(a=>i=r(a,i))}update(e,n){var r;let s=e.state.facet(this.facet),i=s.filter(c=>c);if(s===this.input){for(let c of this.tooltipViews)c.update&&c.update(e);return!1}let a=[],l=n?[]:null;for(let c=0;cn[d]=c),n.length=l.length),this.input=s,this.tooltips=i,this.tooltipViews=a,!0}}function cce(t){let e=t.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:e.clientHeight,right:e.clientWidth}}const U4=st.define({combine:t=>{var e,n,r;return{position:et.ios?"absolute":((e=t.find(s=>s.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((n=t.find(s=>s.parent))===null||n===void 0?void 0:n.parent)||null,tooltipSpace:((r=t.find(s=>s.tooltipSpace))===null||r===void 0?void 0:r.tooltipSpace)||cce}}}),l_=new WeakMap,x6=Yr.fromClass(class{constructor(t){this.view=t,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let e=t.state.facet(U4);this.position=e.position,this.parent=e.parent,this.classes=t.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.resizeObserver=typeof ResizeObserver=="function"?new ResizeObserver(()=>this.measureSoon()):null,this.manager=new Mq(t,v6,(n,r)=>this.createTooltip(n,r),n=>{this.resizeObserver&&this.resizeObserver.unobserve(n.dom),n.dom.remove()}),this.above=this.manager.tooltips.map(n=>!!n.above),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(n=>{Date.now()>this.lastTransaction-50&&n.length>0&&n[n.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),t.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let t of this.manager.tooltipViews)this.intersectionObserver.observe(t.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(t){t.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(t,this.above);e&&this.observeIntersection();let n=e||t.geometryChanged,r=t.state.facet(U4);if(r.position!=this.position&&!this.madeAbsolute){this.position=r.position;for(let s of this.manager.tooltipViews)s.dom.style.position=this.position;n=!0}if(r.parent!=this.parent){this.parent&&this.container.remove(),this.parent=r.parent,this.createContainer();for(let s of this.manager.tooltipViews)this.container.appendChild(s.dom);n=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);n&&this.maybeMeasure()}createTooltip(t,e){let n=t.create(this.view),r=e?e.dom:null;if(n.dom.classList.add("cm-tooltip"),t.arrow&&!n.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let s=document.createElement("div");s.className="cm-tooltip-arrow",n.dom.appendChild(s)}return n.dom.style.position=this.position,n.dom.style.top=p1,n.dom.style.left="0px",this.container.insertBefore(n.dom,r),n.mount&&n.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(n.dom),n}destroy(){var t,e,n;this.view.win.removeEventListener("resize",this.measureSoon);for(let r of this.manager.tooltipViews)r.dom.remove(),(t=r.destroy)===null||t===void 0||t.call(r);this.parent&&this.container.remove(),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),(n=this.intersectionObserver)===null||n===void 0||n.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let t=1,e=1,n=!1;if(this.position=="fixed"&&this.manager.tooltipViews.length){let{dom:i}=this.manager.tooltipViews[0];if(et.safari){let a=i.getBoundingClientRect();n=Math.abs(a.top+1e4)>1||Math.abs(a.left)>1}else n=!!i.offsetParent&&i.offsetParent!=this.container.ownerDocument.body}if(n||this.position=="absolute")if(this.parent){let i=this.parent.getBoundingClientRect();i.width&&i.height&&(t=i.width/this.parent.offsetWidth,e=i.height/this.parent.offsetHeight)}else({scaleX:t,scaleY:e}=this.view.viewState);let r=this.view.scrollDOM.getBoundingClientRect(),s=f6(this.view);return{visible:{left:r.left+s.left,top:r.top+s.top,right:r.right-s.right,bottom:r.bottom-s.bottom},parent:this.parent?this.container.getBoundingClientRect():this.view.dom.getBoundingClientRect(),pos:this.manager.tooltips.map((i,a)=>{let l=this.manager.tooltipViews[a];return l.getCoords?l.getCoords(i.pos):this.view.coordsAtPos(i.pos)}),size:this.manager.tooltipViews.map(({dom:i})=>i.getBoundingClientRect()),space:this.view.state.facet(U4).tooltipSpace(this.view),scaleX:t,scaleY:e,makeAbsolute:n}}writeMeasure(t){var e;if(t.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let l of this.manager.tooltipViews)l.dom.style.position="absolute"}let{visible:n,space:r,scaleX:s,scaleY:i}=t,a=[];for(let l=0;l=Math.min(n.bottom,r.bottom)||m.rightMath.min(n.right,r.right)+.1)){h.style.top=p1;continue}let x=c.arrow?d.dom.querySelector(".cm-tooltip-arrow"):null,y=x?7:0,w=g.right-g.left,S=(e=l_.get(d))!==null&&e!==void 0?e:g.bottom-g.top,k=d.offset||dce,j=this.view.textDirection==br.LTR,N=g.width>r.right-r.left?j?r.left:r.right-g.width:j?Math.max(r.left,Math.min(m.left-(x?14:0)+k.x,r.right-w)):Math.min(Math.max(r.left,m.left-w+(x?14:0)-k.x),r.right-w),T=this.above[l];!c.strictSide&&(T?m.top-S-y-k.yr.bottom)&&T==r.bottom-m.bottom>m.top-r.top&&(T=this.above[l]=!T);let E=(T?m.top-r.top:r.bottom-m.bottom)-y;if(EN&&D.top<_+S&&D.bottom>_&&(_=T?D.top-S-2-y:D.bottom+y+2);if(this.position=="absolute"?(h.style.top=(_-t.parent.top)/i+"px",c_(h,(N-t.parent.left)/s)):(h.style.top=_/i+"px",c_(h,N/s)),x){let D=m.left+(j?k.x:-k.x)-(N+14-7);x.style.left=D/s+"px"}d.overlap!==!0&&a.push({left:N,top:_,right:A,bottom:_+S}),h.classList.toggle("cm-tooltip-above",T),h.classList.toggle("cm-tooltip-below",!T),d.positioned&&d.positioned(t.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let t of this.manager.tooltipViews)t.dom.style.top=p1}},{eventObservers:{scroll(){this.maybeMeasure()}}});function c_(t,e){let n=parseInt(t.style.left,10);(isNaN(n)||Math.abs(e-n)>1)&&(t.style.left=e+"px")}const uce=Ze.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:"14px",position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),dce={x:0,y:0},v6=st.define({enables:[x6,uce]}),ey=st.define({combine:t=>t.reduce((e,n)=>e.concat(n),[])});class pb{static create(e){return new pb(e)}constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new Mq(e,ey,(n,r)=>this.createHostedView(n,r),n=>n.dom.remove())}createHostedView(e,n){let r=e.create(this.view);return r.dom.classList.add("cm-tooltip-section"),this.dom.insertBefore(r.dom,n?n.dom.nextSibling:this.dom.firstChild),this.mounted&&r.mount&&r.mount(this.view),r}mount(e){for(let n of this.manager.tooltipViews)n.mount&&n.mount(e);this.mounted=!0}positioned(e){for(let n of this.manager.tooltipViews)n.positioned&&n.positioned(e)}update(e){this.manager.update(e)}destroy(){var e;for(let n of this.manager.tooltipViews)(e=n.destroy)===null||e===void 0||e.call(n)}passProp(e){let n;for(let r of this.manager.tooltipViews){let s=r[e];if(s!==void 0){if(n===void 0)n=s;else if(n!==s)return}}return n}get offset(){return this.passProp("offset")}get getCoords(){return this.passProp("getCoords")}get overlap(){return this.passProp("overlap")}get resize(){return this.passProp("resize")}}const hce=v6.compute([ey],t=>{let e=t.facet(ey);return e.length===0?null:{pos:Math.min(...e.map(n=>n.pos)),end:Math.max(...e.map(n=>{var r;return(r=n.end)!==null&&r!==void 0?r:n.pos})),create:pb.create,above:e[0].above,arrow:e.some(n=>n.arrow)}});class fce{constructor(e,n,r,s,i){this.view=e,this.source=n,this.field=r,this.setHover=s,this.hoverTime=i,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active.length)return;let e=Date.now()-this.lastMove.time;el.bottom||n.xl.right+e.defaultCharacterWidth)return;let c=e.bidiSpans(e.state.doc.lineAt(s)).find(h=>h.from<=s&&h.to>=s),d=c&&c.dir==br.RTL?-1:1;i=n.x{this.pending==l&&(this.pending=null,c&&!(Array.isArray(c)&&!c.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(c)?c:[c])}))},c=>bi(e.state,c,"hover tooltip"))}else a&&!(Array.isArray(a)&&!a.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(a)?a:[a])})}get tooltip(){let e=this.view.plugin(x6),n=e?e.manager.tooltips.findIndex(r=>r.create==pb.create):-1;return n>-1?e.manager.tooltipViews[n]:null}mousemove(e){var n,r;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let{active:s,tooltip:i}=this;if(s.length&&i&&!mce(i.dom,e)||this.pending){let{pos:a}=s[0]||this.pending,l=(r=(n=s[0])===null||n===void 0?void 0:n.end)!==null&&r!==void 0?r:a;(a==l?this.view.posAtCoords(this.lastMove)!=a:!pce(this.view,a,l,e.clientX,e.clientY))&&(this.view.dispatch({effects:this.setHover.of([])}),this.pending=null)}}mouseleave(e){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;let{active:n}=this;if(n.length){let{tooltip:r}=this;r&&r.dom.contains(e.relatedTarget)?this.watchTooltipLeave(r.dom):this.view.dispatch({effects:this.setHover.of([])})}}watchTooltipLeave(e){let n=r=>{e.removeEventListener("mouseleave",n),this.active.length&&!this.view.dom.contains(r.relatedTarget)&&this.view.dispatch({effects:this.setHover.of([])})};e.addEventListener("mouseleave",n)}destroy(){clearTimeout(this.hoverTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}}const g1=4;function mce(t,e){let{left:n,right:r,top:s,bottom:i}=t.getBoundingClientRect(),a;if(a=t.querySelector(".cm-tooltip-arrow")){let l=a.getBoundingClientRect();s=Math.min(l.top,s),i=Math.max(l.bottom,i)}return e.clientX>=n-g1&&e.clientX<=r+g1&&e.clientY>=s-g1&&e.clientY<=i+g1}function pce(t,e,n,r,s,i){let a=t.scrollDOM.getBoundingClientRect(),l=t.documentTop+t.documentPadding.top+t.contentHeight;if(a.left>r||a.rights||Math.min(a.bottom,l)=e&&c<=n}function gce(t,e={}){let n=Qt.define(),r=Os.define({create(){return[]},update(s,i){if(s.length&&(e.hideOnChange&&(i.docChanged||i.selection)?s=[]:e.hideOn&&(s=s.filter(a=>!e.hideOn(i,a))),i.docChanged)){let a=[];for(let l of s){let c=i.changes.mapPos(l.pos,-1,Ds.TrackDel);if(c!=null){let d=Object.assign(Object.create(null),l);d.pos=c,d.end!=null&&(d.end=i.changes.mapPos(d.end)),a.push(d)}}s=a}for(let a of i.effects)a.is(n)&&(s=a.value),a.is(xce)&&(s=[]);return s},provide:s=>ey.from(s)});return{active:r,extension:[r,Yr.define(s=>new fce(s,t,r,n,e.hoverTime||300)),hce]}}function Rq(t,e){let n=t.plugin(x6);if(!n)return null;let r=n.manager.tooltips.indexOf(e);return r<0?null:n.manager.tooltipViews[r]}const xce=Qt.define(),u_=st.define({combine(t){let e,n;for(let r of t)e=e||r.topContainer,n=n||r.bottomContainer;return{topContainer:e,bottomContainer:n}}});function X0(t,e){let n=t.plugin(Dq),r=n?n.specs.indexOf(e):-1;return r>-1?n.panels[r]:null}const Dq=Yr.fromClass(class{constructor(t){this.input=t.state.facet(Y0),this.specs=this.input.filter(n=>n),this.panels=this.specs.map(n=>n(t));let e=t.state.facet(u_);this.top=new x1(t,!0,e.topContainer),this.bottom=new x1(t,!1,e.bottomContainer),this.top.sync(this.panels.filter(n=>n.top)),this.bottom.sync(this.panels.filter(n=>!n.top));for(let n of this.panels)n.dom.classList.add("cm-panel"),n.mount&&n.mount()}update(t){let e=t.state.facet(u_);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new x1(t.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new x1(t.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let n=t.state.facet(Y0);if(n!=this.input){let r=n.filter(c=>c),s=[],i=[],a=[],l=[];for(let c of r){let d=this.specs.indexOf(c),h;d<0?(h=c(t.view),l.push(h)):(h=this.panels[d],h.update&&h.update(t)),s.push(h),(h.top?i:a).push(h)}this.specs=r,this.panels=s,this.top.sync(i),this.bottom.sync(a);for(let c of l)c.dom.classList.add("cm-panel"),c.mount&&c.mount()}else for(let r of this.panels)r.update&&r.update(t)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:t=>Ze.scrollMargins.of(e=>{let n=e.plugin(t);return n&&{top:n.top.scrollMargin(),bottom:n.bottom.scrollMargin()}})});class x1{constructor(e,n,r){this.view=e,this.top=n,this.container=r,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let n of this.panels)n.destroy&&e.indexOf(n)<0&&n.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let n=this.container||this.view.dom;n.insertBefore(this.dom,this.top?n.firstChild:null)}let e=this.dom.firstChild;for(let n of this.panels)if(n.dom.parentNode==this.dom){for(;e!=n.dom;)e=d_(e);e=e.nextSibling}else this.dom.insertBefore(n.dom,e);for(;e;)e=d_(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}}function d_(t){let e=t.nextSibling;return t.remove(),e}const Y0=st.define({enables:Dq});class Vl extends od{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}}Vl.prototype.elementClass="";Vl.prototype.toDOM=void 0;Vl.prototype.mapMode=Ds.TrackBefore;Vl.prototype.startSide=Vl.prototype.endSide=-1;Vl.prototype.point=!0;const vv=st.define(),vce=st.define(),yce={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>Bn.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{},side:"before"},T0=st.define();function bce(t){return[Pq(),T0.of({...yce,...t})]}const h_=st.define({combine:t=>t.some(e=>e)});function Pq(t){return[wce]}const wce=Yr.fromClass(class{constructor(t){this.view=t,this.domAfter=null,this.prevViewport=t.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=t.state.facet(T0).map(e=>new m_(t,e)),this.fixed=!t.state.facet(h_);for(let e of this.gutters)e.config.side=="after"?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),t.scrollDOM.insertBefore(this.dom,t.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(t){if(this.updateGutters(t)){let e=this.prevViewport,n=t.view.viewport,r=Math.min(e.to,n.to)-Math.max(e.from,n.from);this.syncGutters(r<(n.to-n.from)*.8)}if(t.geometryChanged){let e=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=e,this.domAfter&&(this.domAfter.style.minHeight=e)}this.view.state.facet(h_)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=t.view.viewport}syncGutters(t){let e=this.dom.nextSibling;t&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let n=Bn.iter(this.view.state.facet(vv),this.view.viewport.from),r=[],s=this.gutters.map(i=>new Sce(i,this.view.viewport,-this.view.documentPadding.top));for(let i of this.view.viewportLineBlocks)if(r.length&&(r=[]),Array.isArray(i.type)){let a=!0;for(let l of i.type)if(l.type==ri.Text&&a){rO(n,r,l.from);for(let c of s)c.line(this.view,l,r);a=!1}else if(l.widget)for(let c of s)c.widget(this.view,l)}else if(i.type==ri.Text){rO(n,r,i.from);for(let a of s)a.line(this.view,i,r)}else if(i.widget)for(let a of s)a.widget(this.view,i);for(let i of s)i.finish();t&&(this.view.scrollDOM.insertBefore(this.dom,e),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(t){let e=t.startState.facet(T0),n=t.state.facet(T0),r=t.docChanged||t.heightChanged||t.viewportChanged||!Bn.eq(t.startState.facet(vv),t.state.facet(vv),t.view.viewport.from,t.view.viewport.to);if(e==n)for(let s of this.gutters)s.update(t)&&(r=!0);else{r=!0;let s=[];for(let i of n){let a=e.indexOf(i);a<0?s.push(new m_(this.view,i)):(this.gutters[a].update(t),s.push(this.gutters[a]))}for(let i of this.gutters)i.dom.remove(),s.indexOf(i)<0&&i.destroy();for(let i of s)i.config.side=="after"?this.getDOMAfter().appendChild(i.dom):this.dom.appendChild(i.dom);this.gutters=s}return r}destroy(){for(let t of this.gutters)t.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:t=>Ze.scrollMargins.of(e=>{let n=e.plugin(t);if(!n||n.gutters.length==0||!n.fixed)return null;let r=n.dom.offsetWidth*e.scaleX,s=n.domAfter?n.domAfter.offsetWidth*e.scaleX:0;return e.textDirection==br.LTR?{left:r,right:s}:{right:r,left:s}})});function f_(t){return Array.isArray(t)?t:[t]}function rO(t,e,n){for(;t.value&&t.from<=n;)t.from==n&&e.push(t.value),t.next()}class Sce{constructor(e,n,r){this.gutter=e,this.height=r,this.i=0,this.cursor=Bn.iter(e.markers,n.from)}addElement(e,n,r){let{gutter:s}=this,i=(n.top-this.height)/e.scaleY,a=n.height/e.scaleY;if(this.i==s.elements.length){let l=new zq(e,a,i,r);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(e,a,i,r);this.height=n.bottom,this.i++}line(e,n,r){let s=[];rO(this.cursor,s,n.from),r.length&&(s=s.concat(r));let i=this.gutter.config.lineMarker(e,n,s);i&&s.unshift(i);let a=this.gutter;s.length==0&&!a.config.renderEmptyElements||this.addElement(e,n,s)}widget(e,n){let r=this.gutter.config.widgetMarker(e,n.widget,n),s=r?[r]:null;for(let i of e.state.facet(vce)){let a=i(e,n.widget,n);a&&(s||(s=[])).push(a)}s&&this.addElement(e,n,s)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let n=e.elements.pop();e.dom.removeChild(n.dom),n.destroy()}}}class m_{constructor(e,n){this.view=e,this.config=n,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let r in n.domEventHandlers)this.dom.addEventListener(r,s=>{let i=s.target,a;if(i!=this.dom&&this.dom.contains(i)){for(;i.parentNode!=this.dom;)i=i.parentNode;let c=i.getBoundingClientRect();a=(c.top+c.bottom)/2}else a=s.clientY;let l=e.lineBlockAtHeight(a-e.documentTop);n.domEventHandlers[r](e,l,s)&&s.preventDefault()});this.markers=f_(n.markers(e)),n.initialSpacer&&(this.spacer=new zq(e,0,0,[n.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let n=this.markers;if(this.markers=f_(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],e);s!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[s])}let r=e.view.viewport;return!Bn.eq(this.markers,n,r.from,r.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}}class zq{constructor(e,n,r,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,n,r,s)}update(e,n,r,s){this.height!=n&&(this.height=n,this.dom.style.height=n+"px"),this.above!=r&&(this.dom.style.marginTop=(this.above=r)?r+"px":""),kce(this.markers,s)||this.setMarkers(e,s)}setMarkers(e,n){let r="cm-gutterElement",s=this.dom.firstChild;for(let i=0,a=0;;){let l=a,c=ii(l,c,d)||a(l,c,d):a}return r}})}});class W4 extends Vl{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}}function G4(t,e){return t.state.facet(Eh).formatNumber(e,t.state)}const Nce=T0.compute([Eh],t=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(Oce)},lineMarker(e,n,r){return r.some(s=>s.toDOM)?null:new W4(G4(e,e.state.doc.lineAt(n.from).number))},widgetMarker:(e,n,r)=>{for(let s of e.state.facet(jce)){let i=s(e,n,r);if(i)return i}return null},lineMarkerChange:e=>e.startState.facet(Eh)!=e.state.facet(Eh),initialSpacer(e){return new W4(G4(e,p_(e.state.doc.lines)))},updateSpacer(e,n){let r=G4(n.view,p_(n.view.state.doc.lines));return r==e.number?e:new W4(r)},domEventHandlers:t.facet(Eh).domEventHandlers,side:"before"}));function Cce(t={}){return[Eh.of(t),Pq(),Nce]}function p_(t){let e=9;for(;e{let e=[],n=-1;for(let r of t.selection.ranges){let s=t.doc.lineAt(r.head).from;s>n&&(n=s,e.push(Tce.range(s)))}return Bn.of(e)});function _ce(){return Ece}const Iq=1024;let Ace=0;class X4{constructor(e,n){this.from=e,this.to=n}}class an{constructor(e={}){this.id=Ace++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=e.combine||null}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=ai.match(e)),n=>{let r=e(n);return r===void 0?null:[this,r]}}}an.closedBy=new an({deserialize:t=>t.split(" ")});an.openedBy=new an({deserialize:t=>t.split(" ")});an.group=new an({deserialize:t=>t.split(" ")});an.isolate=new an({deserialize:t=>{if(t&&t!="rtl"&&t!="ltr"&&t!="auto")throw new RangeError("Invalid value for isolate: "+t);return t||"auto"}});an.contextHash=new an({perNode:!0});an.lookAhead=new an({perNode:!0});an.mounted=new an({perNode:!0});class ty{constructor(e,n,r){this.tree=e,this.overlay=n,this.parser=r}static get(e){return e&&e.props&&e.props[an.mounted.id]}}const Mce=Object.create(null);class ai{constructor(e,n,r,s=0){this.name=e,this.props=n,this.id=r,this.flags=s}static define(e){let n=e.props&&e.props.length?Object.create(null):Mce,r=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),s=new ai(e.name||"",n,e.id,r);if(e.props){for(let i of e.props)if(Array.isArray(i)||(i=i(s)),i){if(i[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");n[i[0].id]=i[1]}}return s}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let n=this.prop(an.group);return n?n.indexOf(e)>-1:!1}return this.id==e}static match(e){let n=Object.create(null);for(let r in e)for(let s of r.split(" "))n[s]=e[r];return r=>{for(let s=r.prop(an.group),i=-1;i<(s?s.length:0);i++){let a=n[i<0?r.name:s[i]];if(a)return a}}}}ai.none=new ai("",Object.create(null),0,8);class gb{constructor(e){this.types=e;for(let n=0;n0;for(let c=this.cursor(a|hs.IncludeAnonymous);;){let d=!1;if(c.from<=i&&c.to>=s&&(!l&&c.type.isAnonymous||n(c)!==!1)){if(c.firstChild())continue;d=!0}for(;d&&r&&(l||!c.type.isAnonymous)&&r(c),!c.nextSibling();){if(!c.parent())return;d=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let n in this.props)e.push([+n,this.props[n]]);return e}balance(e={}){return this.children.length<=8?this:w6(ai.none,this.children,this.positions,0,this.children.length,0,this.length,(n,r,s)=>new ur(this.type,n,r,s,this.propValues),e.makeTree||((n,r,s)=>new ur(ai.none,n,r,s)))}static build(e){return zce(e)}}ur.empty=new ur(ai.none,[],[],0);class y6{constructor(e,n){this.buffer=e,this.index=n}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new y6(this.buffer,this.index)}}class Jc{constructor(e,n,r){this.buffer=e,this.length=n,this.set=r}get type(){return ai.none}toString(){let e=[];for(let n=0;n0));c=a[c+3]);return l}slice(e,n,r){let s=this.buffer,i=new Uint16Array(n-e),a=0;for(let l=e,c=0;l=e&&ne;case 1:return n<=e&&r>e;case 2:return r>e;case 4:return!0}}function K0(t,e,n,r){for(var s;t.from==t.to||(n<1?t.from>=e:t.from>e)||(n>-1?t.to<=e:t.to0?l.length:-1;e!=d;e+=n){let h=l[e],m=c[e]+a.from;if(Lq(s,r,m,m+h.length)){if(h instanceof Jc){if(i&hs.ExcludeBuffers)continue;let g=h.findChild(0,h.buffer.length,n,r-m,s);if(g>-1)return new Co(new Rce(a,h,e,m),null,g)}else if(i&hs.IncludeAnonymous||!h.type.isAnonymous||b6(h)){let g;if(!(i&hs.IgnoreMounts)&&(g=ty.get(h))&&!g.overlay)return new Ni(g.tree,m,e,a);let x=new Ni(h,m,e,a);return i&hs.IncludeAnonymous||!x.type.isAnonymous?x:x.nextChild(n<0?h.children.length-1:0,n,r,s)}}}if(i&hs.IncludeAnonymous||!a.type.isAnonymous||(a.index>=0?e=a.index+n:e=n<0?-1:a._parent._tree.children.length,a=a._parent,!a))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}enter(e,n,r=0){let s;if(!(r&hs.IgnoreOverlays)&&(s=ty.get(this._tree))&&s.overlay){let i=e-this.from;for(let{from:a,to:l}of s.overlay)if((n>0?a<=i:a=i:l>i))return new Ni(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,n,r)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function x_(t,e,n,r){let s=t.cursor(),i=[];if(!s.firstChild())return i;if(n!=null){for(let a=!1;!a;)if(a=s.type.is(n),!s.nextSibling())return i}for(;;){if(r!=null&&s.type.is(r))return i;if(s.type.is(e)&&i.push(s.node),!s.nextSibling())return r==null?i:[]}}function sO(t,e,n=e.length-1){for(let r=t;n>=0;r=r.parent){if(!r)return!1;if(!r.type.isAnonymous){if(e[n]&&e[n]!=r.name)return!1;n--}}return!0}class Rce{constructor(e,n,r,s){this.parent=e,this.buffer=n,this.index=r,this.start=s}}class Co extends Bq{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,n,r){super(),this.context=e,this._parent=n,this.index=r,this.type=e.buffer.set.types[e.buffer.buffer[r]]}child(e,n,r){let{buffer:s}=this.context,i=s.findChild(this.index+4,s.buffer[this.index+3],e,n-this.context.start,r);return i<0?null:new Co(this.context,this,i)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,n,r=0){if(r&hs.ExcludeBuffers)return null;let{buffer:s}=this.context,i=s.findChild(this.index+4,s.buffer[this.index+3],n>0?1:-1,e-this.context.start,n);return i<0?null:new Co(this.context,this,i)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,n=e.buffer[this.index+3];return n<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new Co(this.context,this._parent,n):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,n=this._parent?this._parent.index+4:0;return this.index==n?this.externalSibling(-1):new Co(this.context,this._parent,e.findChild(n,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],n=[],{buffer:r}=this.context,s=this.index+4,i=r.buffer[this.index+3];if(i>s){let a=r.buffer[this.index+1];e.push(r.slice(s,i,a)),n.push(0)}return new ur(this.type,e,n,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function Fq(t){if(!t.length)return null;let e=0,n=t[0];for(let i=1;in.from||a.to=e){let l=new Ni(a.tree,a.overlay[0].from+i.from,-1,i);(s||(s=[r])).push(K0(l,e,n,!1))}}return s?Fq(s):r}class iO{get name(){return this.type.name}constructor(e,n=0){if(this.mode=n,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,e instanceof Ni)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let r=e._parent;r;r=r._parent)this.stack.unshift(r.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,n){this.index=e;let{start:r,buffer:s}=this.buffer;return this.type=n||s.set.types[s.buffer[e]],this.from=r+s.buffer[e+1],this.to=r+s.buffer[e+2],!0}yield(e){return e?e instanceof Ni?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,n,r){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,n,r,this.mode));let{buffer:s}=this.buffer,i=s.findChild(this.index+4,s.buffer[this.index+3],e,n-this.buffer.start,r);return i<0?!1:(this.stack.push(this.index),this.yieldBuf(i))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,n,r=this.mode){return this.buffer?r&hs.ExcludeBuffers?!1:this.enterChild(1,e,n):this.yield(this._tree.enter(e,n,r))}parent(){if(!this.buffer)return this.yieldNode(this.mode&hs.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&hs.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:n}=this.buffer,r=this.stack.length-1;if(e<0){let s=r<0?0:this.stack[r]+4;if(this.index!=s)return this.yieldBuf(n.findChild(s,this.index,-1,0,4))}else{let s=n.buffer[this.index+3];if(s<(r<0?n.buffer.length:n.buffer[this.stack[r]+3]))return this.yieldBuf(s)}return r<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let n,r,{buffer:s}=this;if(s){if(e>0){if(this.index-1)for(let i=n+e,a=e<0?-1:r._tree.children.length;i!=a;i+=e){let l=r._tree.children[i];if(this.mode&hs.IncludeAnonymous||l instanceof Jc||!l.type.isAnonymous||b6(l))return!1}return!0}move(e,n){if(n&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,n=0){for(;(this.from==this.to||(n<1?this.from>=e:this.from>e)||(n>-1?this.to<=e:this.to=0;){for(let a=e;a;a=a._parent)if(a.index==s){if(s==this.index)return a;n=a,r=i+1;break e}s=this.stack[--i]}for(let s=r;s=0;i--){if(i<0)return sO(this._tree,e,s);let a=r[n.buffer[this.stack[i]]];if(!a.isAnonymous){if(e[s]&&e[s]!=a.name)return!1;s--}}return!0}}function b6(t){return t.children.some(e=>e instanceof Jc||!e.type.isAnonymous||b6(e))}function zce(t){var e;let{buffer:n,nodeSet:r,maxBufferLength:s=Iq,reused:i=[],minRepeatType:a=r.types.length}=t,l=Array.isArray(n)?new y6(n,n.length):n,c=r.types,d=0,h=0;function m(E,_,A,D,q,B){let{id:H,start:W,end:ee,size:I}=l,V=h,L=d;if(I<0)if(l.next(),I==-1){let ie=i[H];A.push(ie),D.push(W-E);return}else if(I==-3){d=H;return}else if(I==-4){h=H;return}else throw new RangeError(`Unrecognized record size: ${I}`);let $=c[H],K,Y,R=W-E;if(ee-W<=s&&(Y=S(l.pos-_,q))){let ie=new Uint16Array(Y.size-Y.skip),X=l.pos-Y.size,z=ie.length;for(;l.pos>X;)z=k(Y.start,ie,z);K=new Jc(ie,ee-Y.start,r),R=Y.start-E}else{let ie=l.pos-I;l.next();let X=[],z=[],U=H>=a?H:-1,te=0,ne=ee;for(;l.pos>ie;)U>=0&&l.id==U&&l.size>=0?(l.end<=ne-s&&(y(X,z,W,te,l.end,ne,U,V,L),te=X.length,ne=l.end),l.next()):B>2500?g(W,ie,X,z):m(W,ie,X,z,U,B+1);if(U>=0&&te>0&&te-1&&te>0){let G=x($,L);K=w6($,X,z,0,X.length,0,ee-W,G,G)}else K=w($,X,z,ee-W,V-ee,L)}A.push(K),D.push(R)}function g(E,_,A,D){let q=[],B=0,H=-1;for(;l.pos>_;){let{id:W,start:ee,end:I,size:V}=l;if(V>4)l.next();else{if(H>-1&&ee=0;I-=3)W[V++]=q[I],W[V++]=q[I+1]-ee,W[V++]=q[I+2]-ee,W[V++]=V;A.push(new Jc(W,q[2]-ee,r)),D.push(ee-E)}}function x(E,_){return(A,D,q)=>{let B=0,H=A.length-1,W,ee;if(H>=0&&(W=A[H])instanceof ur){if(!H&&W.type==E&&W.length==q)return W;(ee=W.prop(an.lookAhead))&&(B=D[H]+W.length+ee)}return w(E,A,D,q,B,_)}}function y(E,_,A,D,q,B,H,W,ee){let I=[],V=[];for(;E.length>D;)I.push(E.pop()),V.push(_.pop()+A-q);E.push(w(r.types[H],I,V,B-q,W-B,ee)),_.push(q-A)}function w(E,_,A,D,q,B,H){if(B){let W=[an.contextHash,B];H=H?[W].concat(H):[W]}if(q>25){let W=[an.lookAhead,q];H=H?[W].concat(H):[W]}return new ur(E,_,A,D,H)}function S(E,_){let A=l.fork(),D=0,q=0,B=0,H=A.end-s,W={size:0,start:0,skip:0};e:for(let ee=A.pos-E;A.pos>ee;){let I=A.size;if(A.id==_&&I>=0){W.size=D,W.start=q,W.skip=B,B+=4,D+=4,A.next();continue}let V=A.pos-I;if(I<0||V=a?4:0,$=A.start;for(A.next();A.pos>V;){if(A.size<0)if(A.size==-3)L+=4;else break e;else A.id>=a&&(L+=4);A.next()}q=$,D+=I,B+=L}return(_<0||D==E)&&(W.size=D,W.start=q,W.skip=B),W.size>4?W:void 0}function k(E,_,A){let{id:D,start:q,end:B,size:H}=l;if(l.next(),H>=0&&D4){let ee=l.pos-(H-4);for(;l.pos>ee;)A=k(E,_,A)}_[--A]=W,_[--A]=B-E,_[--A]=q-E,_[--A]=D}else H==-3?d=D:H==-4&&(h=D);return A}let j=[],N=[];for(;l.pos>0;)m(t.start||0,t.bufferStart||0,j,N,-1,0);let T=(e=t.length)!==null&&e!==void 0?e:j.length?N[0]+j[0].length:0;return new ur(c[t.topID],j.reverse(),N.reverse(),T)}const v_=new WeakMap;function yv(t,e){if(!t.isAnonymous||e instanceof Jc||e.type!=t)return 1;let n=v_.get(e);if(n==null){n=1;for(let r of e.children){if(r.type!=t||!(r instanceof ur)){n=1;break}n+=yv(t,r)}v_.set(e,n)}return n}function w6(t,e,n,r,s,i,a,l,c){let d=0;for(let y=r;y=h)break;_+=A}if(N==T+1){if(_>h){let A=y[T];x(A.children,A.positions,0,A.children.length,w[T]+j);continue}m.push(y[T])}else{let A=w[N-1]+y[N-1].length-E;m.push(w6(t,y,w,T,N,E,A,null,c))}g.push(E+j-i)}}return x(e,n,r,s,0),(l||c)(m,g,a)}class Ice{constructor(){this.map=new WeakMap}setBuffer(e,n,r){let s=this.map.get(e);s||this.map.set(e,s=new Map),s.set(n,r)}getBuffer(e,n){let r=this.map.get(e);return r&&r.get(n)}set(e,n){e instanceof Co?this.setBuffer(e.context.buffer,e.index,n):e instanceof Ni&&this.map.set(e.tree,n)}get(e){return e instanceof Co?this.getBuffer(e.context.buffer,e.index):e instanceof Ni?this.map.get(e.tree):void 0}cursorSet(e,n){e.buffer?this.setBuffer(e.buffer.buffer,e.index,n):this.map.set(e.tree,n)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}}class rd{constructor(e,n,r,s,i=!1,a=!1){this.from=e,this.to=n,this.tree=r,this.offset=s,this.open=(i?1:0)|(a?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,n=[],r=!1){let s=[new rd(0,e.length,e,0,!1,r)];for(let i of n)i.to>e.length&&s.push(i);return s}static applyChanges(e,n,r=128){if(!n.length)return e;let s=[],i=1,a=e.length?e[0]:null;for(let l=0,c=0,d=0;;l++){let h=l=r)for(;a&&a.from=g.from||m<=g.to||d){let x=Math.max(g.from,c)-d,y=Math.min(g.to,m)-d;g=x>=y?null:new rd(x,y,g.tree,g.offset+d,l>0,!!h)}if(g&&s.push(g),a.to>m)break;a=inew X4(s.from,s.to)):[new X4(0,0)]:[new X4(0,e.length)],this.createParse(e,n||[],r)}parse(e,n,r){let s=this.startParse(e,n,r);for(;;){let i=s.advance();if(i)return i}}};class Lce{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,n){return this.string.slice(e,n)}}new an({perNode:!0});let Bce=0;class ga{constructor(e,n,r,s){this.name=e,this.set=n,this.base=r,this.modified=s,this.id=Bce++}toString(){let{name:e}=this;for(let n of this.modified)n.name&&(e=`${n.name}(${e})`);return e}static define(e,n){let r=typeof e=="string"?e:"?";if(e instanceof ga&&(n=e),n?.base)throw new Error("Can not derive from a modified tag");let s=new ga(r,[],null,[]);if(s.set.push(s),n)for(let i of n.set)s.set.push(i);return s}static defineModifier(e){let n=new ny(e);return r=>r.modified.indexOf(n)>-1?r:ny.get(r.base||r,r.modified.concat(n).sort((s,i)=>s.id-i.id))}}let Fce=0;class ny{constructor(e){this.name=e,this.instances=[],this.id=Fce++}static get(e,n){if(!n.length)return e;let r=n[0].instances.find(l=>l.base==e&&qce(n,l.modified));if(r)return r;let s=[],i=new ga(e.name,s,e,n);for(let l of n)l.instances.push(i);let a=$ce(n);for(let l of e.set)if(!l.modified.length)for(let c of a)s.push(ny.get(l,c));return i}}function qce(t,e){return t.length==e.length&&t.every((n,r)=>n==e[r])}function $ce(t){let e=[[]];for(let n=0;nr.length-n.length)}function k6(t){let e=Object.create(null);for(let n in t){let r=t[n];Array.isArray(r)||(r=[r]);for(let s of n.split(" "))if(s){let i=[],a=2,l=s;for(let m=0;;){if(l=="..."&&m>0&&m+3==s.length){a=1;break}let g=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!g)throw new RangeError("Invalid path: "+s);if(i.push(g[0]=="*"?"":g[0][0]=='"'?JSON.parse(g[0]):g[0]),m+=g[0].length,m==s.length)break;let x=s[m++];if(m==s.length&&x=="!"){a=0;break}if(x!="/")throw new RangeError("Invalid path: "+s);l=s.slice(m)}let c=i.length-1,d=i[c];if(!d)throw new RangeError("Invalid path: "+s);let h=new Z0(r,a,c>0?i.slice(0,c):null);e[d]=h.sort(e[d])}}return qq.add(e)}const qq=new an({combine(t,e){let n,r,s;for(;t||e;){if(!t||e&&t.depth>=e.depth?(s=e,e=e.next):(s=t,t=t.next),n&&n.mode==s.mode&&!s.context&&!n.context)continue;let i=new Z0(s.tags,s.mode,s.context);n?n.next=i:r=i,n=i}return r}});class Z0{constructor(e,n,r,s){this.tags=e,this.mode=n,this.context=r,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth{let a=s;for(let l of i)for(let c of l.set){let d=n[c.id];if(d){a=a?a+" "+d:d;break}}return a},scope:r}}function Hce(t,e){let n=null;for(let r of t){let s=r.style(e);s&&(n=n?n+" "+s:s)}return n}function Qce(t,e,n,r=0,s=t.length){let i=new Vce(r,Array.isArray(e)?e:[e],n);i.highlightRange(t.cursor(),r,s,"",i.highlighters),i.flush(s)}class Vce{constructor(e,n,r){this.at=e,this.highlighters=n,this.span=r,this.class=""}startSpan(e,n){n!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=n)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,n,r,s,i){let{type:a,from:l,to:c}=e;if(l>=r||c<=n)return;a.isTop&&(i=this.highlighters.filter(x=>!x.scope||x.scope(a)));let d=s,h=Uce(e)||Z0.empty,m=Hce(i,h.tags);if(m&&(d&&(d+=" "),d+=m,h.mode==1&&(s+=(s?" ":"")+m)),this.startSpan(Math.max(n,l),d),h.opaque)return;let g=e.tree&&e.tree.prop(an.mounted);if(g&&g.overlay){let x=e.node.enter(g.overlay[0].from+l,1),y=this.highlighters.filter(S=>!S.scope||S.scope(g.tree.type)),w=e.firstChild();for(let S=0,k=l;;S++){let j=S=N||!e.nextSibling())););if(!j||N>r)break;k=j.to+l,k>n&&(this.highlightRange(x.cursor(),Math.max(n,j.from+l),Math.min(r,k),"",y),this.startSpan(Math.min(r,k),d))}w&&e.parent()}else if(e.firstChild()){g&&(s="");do if(!(e.to<=n)){if(e.from>=r)break;this.highlightRange(e,n,r,s,i),this.startSpan(Math.min(r,e.to),d)}while(e.nextSibling());e.parent()}}}function Uce(t){let e=t.type.prop(qq);for(;e&&e.context&&!t.matchContext(e.context);)e=e.next;return e||null}const Ke=ga.define,y1=Ke(),Pc=Ke(),y_=Ke(Pc),b_=Ke(Pc),zc=Ke(),b1=Ke(zc),Y4=Ke(zc),xo=Ke(),zu=Ke(xo),po=Ke(),go=Ke(),aO=Ke(),$m=Ke(aO),w1=Ke(),ye={comment:y1,lineComment:Ke(y1),blockComment:Ke(y1),docComment:Ke(y1),name:Pc,variableName:Ke(Pc),typeName:y_,tagName:Ke(y_),propertyName:b_,attributeName:Ke(b_),className:Ke(Pc),labelName:Ke(Pc),namespace:Ke(Pc),macroName:Ke(Pc),literal:zc,string:b1,docString:Ke(b1),character:Ke(b1),attributeValue:Ke(b1),number:Y4,integer:Ke(Y4),float:Ke(Y4),bool:Ke(zc),regexp:Ke(zc),escape:Ke(zc),color:Ke(zc),url:Ke(zc),keyword:po,self:Ke(po),null:Ke(po),atom:Ke(po),unit:Ke(po),modifier:Ke(po),operatorKeyword:Ke(po),controlKeyword:Ke(po),definitionKeyword:Ke(po),moduleKeyword:Ke(po),operator:go,derefOperator:Ke(go),arithmeticOperator:Ke(go),logicOperator:Ke(go),bitwiseOperator:Ke(go),compareOperator:Ke(go),updateOperator:Ke(go),definitionOperator:Ke(go),typeOperator:Ke(go),controlOperator:Ke(go),punctuation:aO,separator:Ke(aO),bracket:$m,angleBracket:Ke($m),squareBracket:Ke($m),paren:Ke($m),brace:Ke($m),content:xo,heading:zu,heading1:Ke(zu),heading2:Ke(zu),heading3:Ke(zu),heading4:Ke(zu),heading5:Ke(zu),heading6:Ke(zu),contentSeparator:Ke(xo),list:Ke(xo),quote:Ke(xo),emphasis:Ke(xo),strong:Ke(xo),link:Ke(xo),monospace:Ke(xo),strikethrough:Ke(xo),inserted:Ke(),deleted:Ke(),changed:Ke(),invalid:Ke(),meta:w1,documentMeta:Ke(w1),annotation:Ke(w1),processingInstruction:Ke(w1),definition:ga.defineModifier("definition"),constant:ga.defineModifier("constant"),function:ga.defineModifier("function"),standard:ga.defineModifier("standard"),local:ga.defineModifier("local"),special:ga.defineModifier("special")};for(let t in ye){let e=ye[t];e instanceof ga&&(e.name=t)}$q([{tag:ye.link,class:"tok-link"},{tag:ye.heading,class:"tok-heading"},{tag:ye.emphasis,class:"tok-emphasis"},{tag:ye.strong,class:"tok-strong"},{tag:ye.keyword,class:"tok-keyword"},{tag:ye.atom,class:"tok-atom"},{tag:ye.bool,class:"tok-bool"},{tag:ye.url,class:"tok-url"},{tag:ye.labelName,class:"tok-labelName"},{tag:ye.inserted,class:"tok-inserted"},{tag:ye.deleted,class:"tok-deleted"},{tag:ye.literal,class:"tok-literal"},{tag:ye.string,class:"tok-string"},{tag:ye.number,class:"tok-number"},{tag:[ye.regexp,ye.escape,ye.special(ye.string)],class:"tok-string2"},{tag:ye.variableName,class:"tok-variableName"},{tag:ye.local(ye.variableName),class:"tok-variableName tok-local"},{tag:ye.definition(ye.variableName),class:"tok-variableName tok-definition"},{tag:ye.special(ye.variableName),class:"tok-variableName2"},{tag:ye.definition(ye.propertyName),class:"tok-propertyName tok-definition"},{tag:ye.typeName,class:"tok-typeName"},{tag:ye.namespace,class:"tok-namespace"},{tag:ye.className,class:"tok-className"},{tag:ye.macroName,class:"tok-macroName"},{tag:ye.propertyName,class:"tok-propertyName"},{tag:ye.operator,class:"tok-operator"},{tag:ye.comment,class:"tok-comment"},{tag:ye.meta,class:"tok-meta"},{tag:ye.invalid,class:"tok-invalid"},{tag:ye.punctuation,class:"tok-punctuation"}]);var K4;const Wu=new an;function Hq(t){return st.define({combine:t?e=>e.concat(t):void 0})}const Wce=new an;class Sa{constructor(e,n,r=[],s=""){this.data=e,this.name=s,Nn.prototype.hasOwnProperty("tree")||Object.defineProperty(Nn.prototype,"tree",{get(){return Ss(this)}}),this.parser=n,this.extension=[eu.of(this),Nn.languageData.of((i,a,l)=>{let c=w_(i,a,l),d=c.type.prop(Wu);if(!d)return[];let h=i.facet(d),m=c.type.prop(Wce);if(m){let g=c.resolve(a-c.from,l);for(let x of m)if(x.test(g,i)){let y=i.facet(x.facet);return x.type=="replace"?y:y.concat(h)}}return h})].concat(r)}isActiveAt(e,n,r=-1){return w_(e,n,r).type.prop(Wu)==this.data}findRegions(e){let n=e.facet(eu);if(n?.data==this.data)return[{from:0,to:e.doc.length}];if(!n||!n.allowsNesting)return[];let r=[],s=(i,a)=>{if(i.prop(Wu)==this.data){r.push({from:a,to:a+i.length});return}let l=i.prop(an.mounted);if(l){if(l.tree.prop(Wu)==this.data){if(l.overlay)for(let c of l.overlay)r.push({from:c.from+a,to:c.to+a});else r.push({from:a,to:a+i.length});return}else if(l.overlay){let c=r.length;if(s(l.tree,l.overlay[0].from+a),r.length>c)return}}for(let c=0;cr.isTop?n:void 0)]}),e.name)}configure(e,n){return new J0(this.data,this.parser.configure(e),n||this.name)}get allowsNesting(){return this.parser.hasWrappers()}}function Ss(t){let e=t.field(Sa.state,!1);return e?e.tree:ur.empty}class Gce{constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,n){let r=this.cursorPos-this.string.length;return e=this.cursorPos?this.doc.sliceString(e,n):this.string.slice(e-r,n-r)}}let Hm=null;class rf{constructor(e,n,r=[],s,i,a,l,c){this.parser=e,this.state=n,this.fragments=r,this.tree=s,this.treeLen=i,this.viewport=a,this.skipped=l,this.scheduleOn=c,this.parse=null,this.tempSkipped=[]}static create(e,n,r){return new rf(e,n,[],ur.empty,0,r,[],null)}startParse(){return this.parser.startParse(new Gce(this.state.doc),this.fragments)}work(e,n){return n!=null&&n>=this.state.doc.length&&(n=void 0),this.tree!=ur.empty&&this.isDone(n??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var r;if(typeof e=="number"){let s=Date.now()+e;e=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),n!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>n)&&n=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(n=this.parse.advance()););}),this.treeLen=e,this.tree=n,this.fragments=this.withoutTempSkipped(rd.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let n=Hm;Hm=this;try{return e()}finally{Hm=n}}withoutTempSkipped(e){for(let n;n=this.tempSkipped.pop();)e=S_(e,n.from,n.to);return e}changes(e,n){let{fragments:r,tree:s,treeLen:i,viewport:a,skipped:l}=this;if(this.takeTree(),!e.empty){let c=[];if(e.iterChangedRanges((d,h,m,g)=>c.push({fromA:d,toA:h,fromB:m,toB:g})),r=rd.applyChanges(r,c),s=ur.empty,i=0,a={from:e.mapPos(a.from,-1),to:e.mapPos(a.to,1)},this.skipped.length){l=[];for(let d of this.skipped){let h=e.mapPos(d.from,1),m=e.mapPos(d.to,-1);he.from&&(this.fragments=S_(this.fragments,s,i),this.skipped.splice(r--,1))}return this.skipped.length>=n?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,n){this.skipped.push({from:e,to:n})}static getSkippingParser(e){return new class extends S6{createParse(n,r,s){let i=s[0].from,a=s[s.length-1].to;return{parsedPos:i,advance(){let c=Hm;if(c){for(let d of s)c.tempSkipped.push(d);e&&(c.scheduleOn=c.scheduleOn?Promise.all([c.scheduleOn,e]):e)}return this.parsedPos=a,new ur(ai.none,[],[],a-i)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let n=this.fragments;return this.treeLen>=e&&n.length&&n[0].from==0&&n[0].to>=e}static get(){return Hm}}function S_(t,e,n){return rd.applyChanges(t,[{fromA:e,toA:n,fromB:e,toB:n}])}class sf{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let n=this.context.changes(e.changes,e.state),r=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),n.viewport.to);return n.work(20,r)||n.takeTree(),new sf(n)}static init(e){let n=Math.min(3e3,e.doc.length),r=rf.create(e.facet(eu).parser,e,{from:0,to:n});return r.work(20,n)||r.takeTree(),new sf(r)}}Sa.state=Os.define({create:sf.init,update(t,e){for(let n of e.effects)if(n.is(Sa.setState))return n.value;return e.startState.facet(eu)!=e.state.facet(eu)?sf.init(e.state):t.apply(e)}});let Qq=t=>{let e=setTimeout(()=>t(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(Qq=t=>{let e=-1,n=setTimeout(()=>{e=requestIdleCallback(t,{timeout:400})},100);return()=>e<0?clearTimeout(n):cancelIdleCallback(e)});const Z4=typeof navigator<"u"&&(!((K4=navigator.scheduling)===null||K4===void 0)&&K4.isInputPending)?()=>navigator.scheduling.isInputPending():null,Xce=Yr.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let n=this.view.state.field(Sa.state).context;(n.updateViewport(e.view.viewport)||this.view.viewport.to>n.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(n)}scheduleWork(){if(this.working)return;let{state:e}=this.view,n=e.field(Sa.state);(n.tree!=n.context.tree||!n.context.isDone(e.doc.length))&&(this.working=Qq(this.work))}work(e){this.working=null;let n=Date.now();if(this.chunkEnds+1e3,c=i.context.work(()=>Z4&&Z4()||Date.now()>a,s+(l?0:1e5));this.chunkBudget-=Date.now()-n,(c||this.chunkBudget<=0)&&(i.context.takeTree(),this.view.dispatch({effects:Sa.setState.of(new sf(i.context))})),this.chunkBudget>0&&!(c&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(i.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(n=>bi(this.view.state,n)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),eu=st.define({combine(t){return t.length?t[0]:null},enables:t=>[Sa.state,Xce,Ze.contentAttributes.compute([t],e=>{let n=e.facet(t);return n&&n.name?{"data-language":n.name}:{}})]});class Vq{constructor(e,n=[]){this.language=e,this.support=n,this.extension=[e,n]}}const Yce=st.define(),Zp=st.define({combine:t=>{if(!t.length)return" ";let e=t[0];if(!e||/\S/.test(e)||Array.from(e).some(n=>n!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(t[0]));return e}});function dd(t){let e=t.facet(Zp);return e.charCodeAt(0)==9?t.tabSize*e.length:e.length}function ep(t,e){let n="",r=t.tabSize,s=t.facet(Zp)[0];if(s==" "){for(;e>=r;)n+=" ",e-=r;s=" "}for(let i=0;i=e?Kce(t,n,e):null}class xb{constructor(e,n={}){this.state=e,this.options=n,this.unit=dd(e)}lineAt(e,n=1){let r=this.state.doc.lineAt(e),{simulateBreak:s,simulateDoubleBreak:i}=this.options;return s!=null&&s>=r.from&&s<=r.to?i&&s==e?{text:"",from:e}:(n<0?s-1&&(i+=a-this.countColumn(r,r.search(/\S|$/))),i}countColumn(e,n=e.length){return Cf(e,this.state.tabSize,n)}lineIndent(e,n=1){let{text:r,from:s}=this.lineAt(e,n),i=this.options.overrideIndentation;if(i){let a=i(s);if(a>-1)return a}return this.countColumn(r,r.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const vb=new an;function Kce(t,e,n){let r=e.resolveStack(n),s=e.resolveInner(n,-1).resolve(n,0).enterUnfinishedNodesBefore(n);if(s!=r.node){let i=[];for(let a=s;a&&!(a.fromr.node.to||a.from==r.node.from&&a.type==r.node.type);a=a.parent)i.push(a);for(let a=i.length-1;a>=0;a--)r={node:i[a],next:r}}return Uq(r,t,n)}function Uq(t,e,n){for(let r=t;r;r=r.next){let s=Jce(r.node);if(s)return s(j6.create(e,n,r))}return 0}function Zce(t){return t.pos==t.options.simulateBreak&&t.options.simulateDoubleBreak}function Jce(t){let e=t.type.prop(vb);if(e)return e;let n=t.firstChild,r;if(n&&(r=n.type.prop(an.closedBy))){let s=t.lastChild,i=s&&r.indexOf(s.name)>-1;return a=>Wq(a,!0,1,void 0,i&&!Zce(a)?s.from:void 0)}return t.parent==null?eue:null}function eue(){return 0}class j6 extends xb{constructor(e,n,r){super(e.state,e.options),this.base=e,this.pos=n,this.context=r}get node(){return this.context.node}static create(e,n,r){return new j6(e,n,r)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let n=this.state.doc.lineAt(e.from);for(;;){let r=e.resolve(n.from);for(;r.parent&&r.parent.from==r.from;)r=r.parent;if(tue(r,e))break;n=this.state.doc.lineAt(r.from)}return this.lineIndent(n.from)}continue(){return Uq(this.context.next,this.base,this.pos)}}function tue(t,e){for(let n=e;n;n=n.parent)if(t==n)return!0;return!1}function nue(t){let e=t.node,n=e.childAfter(e.from),r=e.lastChild;if(!n)return null;let s=t.options.simulateBreak,i=t.state.doc.lineAt(n.from),a=s==null||s<=i.from?i.to:Math.min(i.to,s);for(let l=n.to;;){let c=e.childAfter(l);if(!c||c==r)return null;if(!c.type.isSkipped){if(c.from>=a)return null;let d=/^ */.exec(i.text.slice(n.to-i.from))[0].length;return{from:n.from,to:n.to+d}}l=c.to}}function J4({closing:t,align:e=!0,units:n=1}){return r=>Wq(r,e,n,t)}function Wq(t,e,n,r,s){let i=t.textAfter,a=i.match(/^\s*/)[0].length,l=r&&i.slice(a,a+r.length)==r||s==t.pos+a,c=e?nue(t):null;return c?l?t.column(c.from):t.column(c.to):t.baseIndent+(l?0:t.unit*n)}function k_({except:t,units:e=1}={}){return n=>{let r=t&&t.test(n.textAfter);return n.baseIndent+(r?0:e*n.unit)}}const rue=200;function sue(){return Nn.transactionFilter.of(t=>{if(!t.docChanged||!t.isUserEvent("input.type")&&!t.isUserEvent("input.complete"))return t;let e=t.startState.languageDataAt("indentOnInput",t.startState.selection.main.head);if(!e.length)return t;let n=t.newDoc,{head:r}=t.newSelection.main,s=n.lineAt(r);if(r>s.from+rue)return t;let i=n.sliceString(s.from,r);if(!e.some(d=>d.test(i)))return t;let{state:a}=t,l=-1,c=[];for(let{head:d}of a.selection.ranges){let h=a.doc.lineAt(d);if(h.from==l)continue;l=h.from;let m=O6(a,h.from);if(m==null)continue;let g=/^\s*/.exec(h.text)[0],x=ep(a,m);g!=x&&c.push({from:h.from,to:h.from+g.length,insert:x})}return c.length?[t,{changes:c,sequential:!0}]:t})}const iue=st.define(),N6=new an;function Gq(t){let e=t.firstChild,n=t.lastChild;return e&&e.ton)continue;if(i&&l.from=e&&d.to>n&&(i=d)}}return i}function oue(t){let e=t.lastChild;return e&&e.to==t.to&&e.type.isError}function ry(t,e,n){for(let r of t.facet(iue)){let s=r(t,e,n);if(s)return s}return aue(t,e,n)}function Xq(t,e){let n=e.mapPos(t.from,1),r=e.mapPos(t.to,-1);return n>=r?void 0:{from:n,to:r}}const yb=Qt.define({map:Xq}),Jp=Qt.define({map:Xq});function Yq(t){let e=[];for(let{head:n}of t.state.selection.ranges)e.some(r=>r.from<=n&&r.to>=n)||e.push(t.lineBlockAt(n));return e}const hd=Os.define({create(){return Ot.none},update(t,e){e.isUserEvent("delete")&&e.changes.iterChangedRanges((n,r)=>t=O_(t,n,r)),t=t.map(e.changes);for(let n of e.effects)if(n.is(yb)&&!lue(t,n.value.from,n.value.to)){let{preparePlaceholder:r}=e.state.facet(Jq),s=r?Ot.replace({widget:new pue(r(e.state,n.value))}):j_;t=t.update({add:[s.range(n.value.from,n.value.to)]})}else n.is(Jp)&&(t=t.update({filter:(r,s)=>n.value.from!=r||n.value.to!=s,filterFrom:n.value.from,filterTo:n.value.to}));return e.selection&&(t=O_(t,e.selection.main.head)),t},provide:t=>Ze.decorations.from(t),toJSON(t,e){let n=[];return t.between(0,e.doc.length,(r,s)=>{n.push(r,s)}),n},fromJSON(t){if(!Array.isArray(t)||t.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let n=0;n{se&&(r=!0)}),r?t.update({filterFrom:e,filterTo:n,filter:(s,i)=>s>=n||i<=e}):t}function sy(t,e,n){var r;let s=null;return(r=t.field(hd,!1))===null||r===void 0||r.between(e,n,(i,a)=>{(!s||s.from>i)&&(s={from:i,to:a})}),s}function lue(t,e,n){let r=!1;return t.between(e,e,(s,i)=>{s==e&&i==n&&(r=!0)}),r}function Kq(t,e){return t.field(hd,!1)?e:e.concat(Qt.appendConfig.of(e$()))}const cue=t=>{for(let e of Yq(t)){let n=ry(t.state,e.from,e.to);if(n)return t.dispatch({effects:Kq(t.state,[yb.of(n),Zq(t,n)])}),!0}return!1},uue=t=>{if(!t.state.field(hd,!1))return!1;let e=[];for(let n of Yq(t)){let r=sy(t.state,n.from,n.to);r&&e.push(Jp.of(r),Zq(t,r,!1))}return e.length&&t.dispatch({effects:e}),e.length>0};function Zq(t,e,n=!0){let r=t.state.doc.lineAt(e.from).number,s=t.state.doc.lineAt(e.to).number;return Ze.announce.of(`${t.state.phrase(n?"Folded lines":"Unfolded lines")} ${r} ${t.state.phrase("to")} ${s}.`)}const due=t=>{let{state:e}=t,n=[];for(let r=0;r{let e=t.state.field(hd,!1);if(!e||!e.size)return!1;let n=[];return e.between(0,t.state.doc.length,(r,s)=>{n.push(Jp.of({from:r,to:s}))}),t.dispatch({effects:n}),!0},fue=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:cue},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:uue},{key:"Ctrl-Alt-[",run:due},{key:"Ctrl-Alt-]",run:hue}],mue={placeholderDOM:null,preparePlaceholder:null,placeholderText:"…"},Jq=st.define({combine(t){return Vo(t,mue)}});function e$(t){return[hd,vue]}function t$(t,e){let{state:n}=t,r=n.facet(Jq),s=a=>{let l=t.lineBlockAt(t.posAtDOM(a.target)),c=sy(t.state,l.from,l.to);c&&t.dispatch({effects:Jp.of(c)}),a.preventDefault()};if(r.placeholderDOM)return r.placeholderDOM(t,s,e);let i=document.createElement("span");return i.textContent=r.placeholderText,i.setAttribute("aria-label",n.phrase("folded code")),i.title=n.phrase("unfold"),i.className="cm-foldPlaceholder",i.onclick=s,i}const j_=Ot.replace({widget:new class extends Uo{toDOM(t){return t$(t,null)}}});class pue extends Uo{constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return t$(e,this.value)}}const gue={openText:"⌄",closedText:"›",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1};class eS extends Vl{constructor(e,n){super(),this.config=e,this.open=n}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let n=document.createElement("span");return n.textContent=this.open?this.config.openText:this.config.closedText,n.title=e.state.phrase(this.open?"Fold line":"Unfold line"),n}}function xue(t={}){let e={...gue,...t},n=new eS(e,!0),r=new eS(e,!1),s=Yr.fromClass(class{constructor(a){this.from=a.viewport.from,this.markers=this.buildMarkers(a)}update(a){(a.docChanged||a.viewportChanged||a.startState.facet(eu)!=a.state.facet(eu)||a.startState.field(hd,!1)!=a.state.field(hd,!1)||Ss(a.startState)!=Ss(a.state)||e.foldingChanged(a))&&(this.markers=this.buildMarkers(a.view))}buildMarkers(a){let l=new Hl;for(let c of a.viewportLineBlocks){let d=sy(a.state,c.from,c.to)?r:ry(a.state,c.from,c.to)?n:null;d&&l.add(c.from,c.from,d)}return l.finish()}}),{domEventHandlers:i}=e;return[s,bce({class:"cm-foldGutter",markers(a){var l;return((l=a.plugin(s))===null||l===void 0?void 0:l.markers)||Bn.empty},initialSpacer(){return new eS(e,!1)},domEventHandlers:{...i,click:(a,l,c)=>{if(i.click&&i.click(a,l,c))return!0;let d=sy(a.state,l.from,l.to);if(d)return a.dispatch({effects:Jp.of(d)}),!0;let h=ry(a.state,l.from,l.to);return h?(a.dispatch({effects:yb.of(h)}),!0):!1}}}),e$()]}const vue=Ze.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}});class eg{constructor(e,n){this.specs=e;let r;function s(l){let c=Yc.newName();return(r||(r=Object.create(null)))["."+c]=l,c}const i=typeof n.all=="string"?n.all:n.all?s(n.all):void 0,a=n.scope;this.scope=a instanceof Sa?l=>l.prop(Wu)==a.data:a?l=>l==a:void 0,this.style=$q(e.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:i}).style,this.module=r?new Yc(r):null,this.themeType=n.themeType}static define(e,n){return new eg(e,n||{})}}const oO=st.define(),n$=st.define({combine(t){return t.length?[t[0]]:null}});function tS(t){let e=t.facet(oO);return e.length?e:t.facet(n$)}function r$(t,e){let n=[bue],r;return t instanceof eg&&(t.module&&n.push(Ze.styleModule.of(t.module)),r=t.themeType),e?.fallback?n.push(n$.of(t)):r?n.push(oO.computeN([Ze.darkTheme],s=>s.facet(Ze.darkTheme)==(r=="dark")?[t]:[])):n.push(oO.of(t)),n}class yue{constructor(e){this.markCache=Object.create(null),this.tree=Ss(e.state),this.decorations=this.buildDeco(e,tS(e.state)),this.decoratedTo=e.viewport.to}update(e){let n=Ss(e.state),r=tS(e.state),s=r!=tS(e.startState),{viewport:i}=e.view,a=e.changes.mapPos(this.decoratedTo,1);n.length=i.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=a):(n!=this.tree||e.viewportChanged||s)&&(this.tree=n,this.decorations=this.buildDeco(e.view,r),this.decoratedTo=i.to)}buildDeco(e,n){if(!n||!this.tree.length)return Ot.none;let r=new Hl;for(let{from:s,to:i}of e.visibleRanges)Qce(this.tree,n,(a,l,c)=>{r.add(a,l,this.markCache[c]||(this.markCache[c]=Ot.mark({class:c})))},s,i);return r.finish()}}const bue=uu.high(Yr.fromClass(yue,{decorations:t=>t.decorations})),wue=eg.define([{tag:ye.meta,color:"#404740"},{tag:ye.link,textDecoration:"underline"},{tag:ye.heading,textDecoration:"underline",fontWeight:"bold"},{tag:ye.emphasis,fontStyle:"italic"},{tag:ye.strong,fontWeight:"bold"},{tag:ye.strikethrough,textDecoration:"line-through"},{tag:ye.keyword,color:"#708"},{tag:[ye.atom,ye.bool,ye.url,ye.contentSeparator,ye.labelName],color:"#219"},{tag:[ye.literal,ye.inserted],color:"#164"},{tag:[ye.string,ye.deleted],color:"#a11"},{tag:[ye.regexp,ye.escape,ye.special(ye.string)],color:"#e40"},{tag:ye.definition(ye.variableName),color:"#00f"},{tag:ye.local(ye.variableName),color:"#30a"},{tag:[ye.typeName,ye.namespace],color:"#085"},{tag:ye.className,color:"#167"},{tag:[ye.special(ye.variableName),ye.macroName],color:"#256"},{tag:ye.definition(ye.propertyName),color:"#00c"},{tag:ye.comment,color:"#940"},{tag:ye.invalid,color:"#f00"}]),Sue=Ze.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),s$=1e4,i$="()[]{}",a$=st.define({combine(t){return Vo(t,{afterCursor:!0,brackets:i$,maxScanDistance:s$,renderMatch:jue})}}),kue=Ot.mark({class:"cm-matchingBracket"}),Oue=Ot.mark({class:"cm-nonmatchingBracket"});function jue(t){let e=[],n=t.matched?kue:Oue;return e.push(n.range(t.start.from,t.start.to)),t.end&&e.push(n.range(t.end.from,t.end.to)),e}const Nue=Os.define({create(){return Ot.none},update(t,e){if(!e.docChanged&&!e.selection)return t;let n=[],r=e.state.facet(a$);for(let s of e.state.selection.ranges){if(!s.empty)continue;let i=To(e.state,s.head,-1,r)||s.head>0&&To(e.state,s.head-1,1,r)||r.afterCursor&&(To(e.state,s.head,1,r)||s.headZe.decorations.from(t)}),Cue=[Nue,Sue];function Tue(t={}){return[a$.of(t),Cue]}const Eue=new an;function lO(t,e,n){let r=t.prop(e<0?an.openedBy:an.closedBy);if(r)return r;if(t.name.length==1){let s=n.indexOf(t.name);if(s>-1&&s%2==(e<0?1:0))return[n[s+e]]}return null}function cO(t){let e=t.type.prop(Eue);return e?e(t.node):t}function To(t,e,n,r={}){let s=r.maxScanDistance||s$,i=r.brackets||i$,a=Ss(t),l=a.resolveInner(e,n);for(let c=l;c;c=c.parent){let d=lO(c.type,n,i);if(d&&c.from0?e>=h.from&&eh.from&&e<=h.to))return _ue(t,e,n,c,h,d,i)}}return Aue(t,e,n,a,l.type,s,i)}function _ue(t,e,n,r,s,i,a){let l=r.parent,c={from:s.from,to:s.to},d=0,h=l?.cursor();if(h&&(n<0?h.childBefore(r.from):h.childAfter(r.to)))do if(n<0?h.to<=r.from:h.from>=r.to){if(d==0&&i.indexOf(h.type.name)>-1&&h.from0)return null;let d={from:n<0?e-1:e,to:n>0?e+1:e},h=t.doc.iterRange(e,n>0?t.doc.length:0),m=0;for(let g=0;!h.next().done&&g<=i;){let x=h.value;n<0&&(g+=x.length);let y=e+g*n;for(let w=n>0?0:x.length-1,S=n>0?x.length:-1;w!=S;w+=n){let k=a.indexOf(x[w]);if(!(k<0||r.resolveInner(y+w,1).type!=s))if(k%2==0==n>0)m++;else{if(m==1)return{start:d,end:{from:y+w,to:y+w+1},matched:k>>1==c>>1};m--}}n>0&&(g+=x.length)}return h.done?{start:d,matched:!1}:null}function N_(t,e,n,r=0,s=0){e==null&&(e=t.search(/[^\s\u00a0]/),e==-1&&(e=t.length));let i=s;for(let a=r;a=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.posn}eatSpace(){let e=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e}skipToEnd(){this.pos=this.string.length}skipTo(e){let n=this.string.indexOf(e,this.pos);if(n>-1)return this.pos=n,!0}backUp(e){this.pos-=e}column(){return this.lastColumnPosr?a.toLowerCase():a,i=this.string.substr(this.pos,e.length);return s(i)==s(e)?(n!==!1&&(this.pos+=e.length),!0):null}else{let s=this.string.slice(this.pos).match(e);return s&&s.index>0?null:(s&&n!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}}function Mue(t){return{name:t.name||"",token:t.token,blankLine:t.blankLine||(()=>{}),startState:t.startState||(()=>!0),copyState:t.copyState||Rue,indent:t.indent||(()=>null),languageData:t.languageData||{},tokenTable:t.tokenTable||E6,mergeTokens:t.mergeTokens!==!1}}function Rue(t){if(typeof t!="object")return t;let e={};for(let n in t){let r=t[n];e[n]=r instanceof Array?r.slice():r}return e}const C_=new WeakMap;class C6 extends Sa{constructor(e){let n=Hq(e.languageData),r=Mue(e),s,i=new class extends S6{createParse(a,l,c){return new Pue(s,a,l,c)}};super(n,i,[],e.name),this.topNode=Lue(n,this),s=this,this.streamParser=r,this.stateAfter=new an({perNode:!0}),this.tokenTable=e.tokenTable?new d$(r.tokenTable):Iue}static define(e){return new C6(e)}getIndent(e){let n,{overrideIndentation:r}=e.options;r&&(n=C_.get(e.state),n!=null&&n1e4)return null;for(;i=r&&n+e.length<=s&&e.prop(t.stateAfter);if(i)return{state:t.streamParser.copyState(i),pos:n+e.length};for(let a=e.children.length-1;a>=0;a--){let l=e.children[a],c=n+e.positions[a],d=l instanceof ur&&c=e.length)return e;!s&&n==0&&e.type==t.topNode&&(s=!0);for(let i=e.children.length-1;i>=0;i--){let a=e.positions[i],l=e.children[i],c;if(an&&T6(t,i.tree,0-i.offset,n,l),d;if(c&&c.pos<=r&&(d=l$(t,i.tree,n+i.offset,c.pos+i.offset,!1)))return{state:c.state,tree:d}}return{state:t.streamParser.startState(s?dd(s):4),tree:ur.empty}}let Pue=class{constructor(e,n,r,s){this.lang=e,this.input=n,this.fragments=r,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let i=rf.get(),a=s[0].from,{state:l,tree:c}=Due(e,r,a,this.to,i?.state);this.state=l,this.parsedPos=this.chunkStart=a+c.length;for(let d=0;dd.from<=i.viewport.from&&d.to>=i.viewport.from)&&(this.state=this.lang.streamParser.startState(dd(i.state)),i.skipUntilInView(this.parsedPos,i.viewport.from),this.parsedPos=i.viewport.from),this.moveRangeIndex()}advance(){let e=rf.get(),n=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),r=Math.min(n,this.chunkStart+512);for(e&&(r=Math.min(r,e.viewport.to));this.parsedPos=n?this.finish():e&&this.parsedPos>=e.viewport.to?(e.skipUntilInView(this.parsedPos,n),this.finish()):null}stopAt(e){this.stoppedAt=e}lineAfter(e){let n=this.input.chunk(e);if(this.input.lineChunks)n==` `&&(n="");else{let r=n.indexOf(` -`);r>-1&&(n=n.slice(0,r))}return e+n.length<=this.to?n:n.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,n=this.lineAfter(e),r=e+n.length;for(let s=this.rangeIndex;;){let i=this.ranges[s].to;if(i>=r||(n=n.slice(0,i-(r-n.length)),s++,s==this.ranges.length))break;let a=this.ranges[s].from,l=this.lineAfter(a);n+=l,r=a+l.length}return{line:n,end:r}}skipGapsTo(e,n,r){for(;;){let s=this.ranges[this.rangeIndex].to,i=e+n;if(r>0?s>i:s>=i)break;let a=this.ranges[++this.rangeIndex].from;n+=a-s}return n}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(n,s,1),n+=s;let l=this.chunk.length;s=this.skipGapsTo(r,s,-1),r+=s,i+=this.chunk.length-l}let a=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&i==4&&a>=0&&this.chunk[a]==e&&this.chunk[a+2]==n?this.chunk[a+2]=r:this.chunk.push(e,n,r,i),s}parseLine(e){let{line:n,end:r}=this.nextLine(),s=0,{streamParser:i}=this.lang,a=new r$(n,e?e.state.tabSize:4,e?ld(e.state):2);if(a.eol())i.blankLine(this.state,a.indentUnit);else for(;!a.eol();){let l=i$(i.token,a,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+a.start,this.parsedPos+a.pos,s)),a.start>1e4)break}this.parsedPos=r,this.moveRangeIndex(),this.parsedPose.start)return s}throw new Error("Stream parser failed to advance stream.")}const k6=Object.create(null),K0=[si.none],Mue=new hb(K0),S_=[],k_=Object.create(null),a$=Object.create(null);for(let[t,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])a$[t]=l$(k6,e);class o${constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),a$)}resolve(e){return e?this.table[e]||(this.table[e]=l$(this.extra,e)):0}}const Rue=new o$(k6);function Z4(t,e){S_.indexOf(t)>-1||(S_.push(t),console.warn(e))}function l$(t,e){let n=[];for(let l of e.split(" ")){let c=[];for(let d of l.split(".")){let h=t[d]||ve[d];h?typeof h=="function"?c.length?c=c.map(h):Z4(d,`Modifier ${d} used at start of tag`):c.length?Z4(d,`Tag ${d} used as modifier`):c=Array.isArray(h)?h:[h]:Z4(d,`Unknown highlighting tag ${d}`)}for(let d of c)n.push(d)}if(!n.length)return 0;let r=e.replace(/ /g,"_"),s=r+" "+n.map(l=>l.id),i=k_[s];if(i)return i.id;let a=k_[s]=si.define({id:K0.length,name:r,props:[x6({[r]:n})]});return K0.push(a),a.id}function Due(t,e){let n=si.define({id:K0.length,name:"Document",props:[Qu.add(()=>t),mb.add(()=>r=>e.getIndent(r))],top:!0});return K0.push(n),n}gr.RTL,gr.LTR;const Pue=t=>{let{state:e}=t,n=e.doc.lineAt(e.selection.main.from),r=j6(t.state,n.from);return r.line?zue(t):r.block?Lue(t):!1};function O6(t,e){return({state:n,dispatch:r})=>{if(n.readOnly)return!1;let s=t(e,n);return s?(r(n.update(s)),!0):!1}}const zue=O6(que,0),Iue=O6(c$,0),Lue=O6((t,e)=>c$(t,e,Fue(e)),0);function j6(t,e){let n=t.languageDataAt("commentTokens",e,1);return n.length?n[0]:{}}const Hm=50;function Bue(t,{open:e,close:n},r,s){let i=t.sliceDoc(r-Hm,r),a=t.sliceDoc(s,s+Hm),l=/\s*$/.exec(i)[0].length,c=/^\s*/.exec(a)[0].length,d=i.length-l;if(i.slice(d-e.length,d)==e&&a.slice(c,c+n.length)==n)return{open:{pos:r-l,margin:l&&1},close:{pos:s+c,margin:c&&1}};let h,m;s-r<=2*Hm?h=m=t.sliceDoc(r,s):(h=t.sliceDoc(r,r+Hm),m=t.sliceDoc(s-Hm,s));let g=/^\s*/.exec(h)[0].length,x=/\s*$/.exec(m)[0].length,y=m.length-x-n.length;return h.slice(g,g+e.length)==e&&m.slice(y,y+n.length)==n?{open:{pos:r+g+e.length,margin:/\s/.test(h.charAt(g+e.length))?1:0},close:{pos:s-x-n.length,margin:/\s/.test(m.charAt(y-1))?1:0}}:null}function Fue(t){let e=[];for(let n of t.selection.ranges){let r=t.doc.lineAt(n.from),s=n.to<=r.to?r:t.doc.lineAt(n.to);s.from>r.from&&s.from==n.to&&(s=n.to==r.to+1?r:t.doc.lineAt(n.to-1));let i=e.length-1;i>=0&&e[i].to>r.from?e[i].to=s.to:e.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:s.to})}return e}function c$(t,e,n=e.selection.ranges){let r=n.map(i=>j6(e,i.from).block);if(!r.every(i=>i))return null;let s=n.map((i,a)=>Bue(e,r[a],i.from,i.to));if(t!=2&&!s.every(i=>i))return{changes:e.changes(n.map((i,a)=>s[a]?[]:[{from:i.from,insert:r[a].open+" "},{from:i.to,insert:" "+r[a].close}]))};if(t!=1&&s.some(i=>i)){let i=[];for(let a=0,l;as&&(i==a||a>m.from)){s=m.from;let g=/^\s*/.exec(m.text)[0].length,x=g==m.length,y=m.text.slice(g,g+d.length)==d?g:-1;gi.comment<0&&(!i.empty||i.single))){let i=[];for(let{line:l,token:c,indent:d,empty:h,single:m}of r)(m||!h)&&i.push({from:l.from+d,insert:c+" "});let a=e.changes(i);return{changes:a,selection:e.selection.map(a,1)}}else if(t!=1&&r.some(i=>i.comment>=0)){let i=[];for(let{line:a,comment:l,token:c}of r)if(l>=0){let d=a.from+l,h=d+c.length;a.text[h-a.from]==" "&&h++,i.push({from:d,to:h})}return{changes:i}}return null}const oO=qo.define(),$ue=qo.define(),Hue=at.define(),u$=at.define({combine(t){return $o(t,{minDepth:100,newGroupDelay:500,joinToEvent:(e,n)=>n},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,n)=>(r,s)=>e(r,s)||n(r,s)})}}),d$=Os.define({create(){return Co.empty},update(t,e){let n=e.state.facet(u$),r=e.annotation(oO);if(r){let c=yi.fromTransaction(e,r.selection),d=r.side,h=d==0?t.undone:t.done;return c?h=ey(h,h.length,n.minDepth,c):h=m$(h,e.startState.selection),new Co(d==0?r.rest:h,d==0?h:r.rest)}let s=e.annotation($ue);if((s=="full"||s=="before")&&(t=t.isolate()),e.annotation(ns.addToHistory)===!1)return e.changes.empty?t:t.addMapping(e.changes.desc);let i=yi.fromTransaction(e),a=e.annotation(ns.time),l=e.annotation(ns.userEvent);return i?t=t.addChanges(i,a,l,n,e):e.selection&&(t=t.addSelection(e.startState.selection,a,l,n.newGroupDelay)),(s=="full"||s=="after")&&(t=t.isolate()),t},toJSON(t){return{done:t.done.map(e=>e.toJSON()),undone:t.undone.map(e=>e.toJSON())}},fromJSON(t){return new Co(t.done.map(yi.fromJSON),t.undone.map(yi.fromJSON))}});function Que(t={}){return[d$,u$.of(t),Ze.domEventHandlers({beforeinput(e,n){let r=e.inputType=="historyUndo"?h$:e.inputType=="historyRedo"?lO:null;return r?(e.preventDefault(),r(n)):!1}})]}function gb(t,e){return function({state:n,dispatch:r}){if(!e&&n.readOnly)return!1;let s=n.field(d$,!1);if(!s)return!1;let i=s.pop(t,n,e);return i?(r(i),!0):!1}}const h$=gb(0,!1),lO=gb(1,!1),Vue=gb(0,!0),Uue=gb(1,!0);class yi{constructor(e,n,r,s,i){this.changes=e,this.effects=n,this.mapped=r,this.startSelection=s,this.selectionsAfter=i}setSelAfter(e){return new yi(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,n,r;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(n=this.mapped)===null||n===void 0?void 0:n.toJSON(),startSelection:(r=this.startSelection)===null||r===void 0?void 0:r.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(e){return new yi(e.changes&&us.fromJSON(e.changes),[],e.mapped&&Do.fromJSON(e.mapped),e.startSelection&&Me.fromJSON(e.startSelection),e.selectionsAfter.map(Me.fromJSON))}static fromTransaction(e,n){let r=ya;for(let s of e.startState.facet(Hue)){let i=s(e);i.length&&(r=r.concat(i))}return!r.length&&e.changes.empty?null:new yi(e.changes.invert(e.startState.doc),r,void 0,n||e.startState.selection,ya)}static selection(e){return new yi(void 0,ya,void 0,void 0,e)}}function ey(t,e,n,r){let s=e+1>n+20?e-n-1:0,i=t.slice(s,e);return i.push(r),i}function Wue(t,e){let n=[],r=!1;return t.iterChangedRanges((s,i)=>n.push(s,i)),e.iterChangedRanges((s,i,a,l)=>{for(let c=0;c=d&&a<=h&&(r=!0)}}),r}function Gue(t,e){return t.ranges.length==e.ranges.length&&t.ranges.filter((n,r)=>n.empty!=e.ranges[r].empty).length===0}function f$(t,e){return t.length?e.length?t.concat(e):t:e}const ya=[],Xue=200;function m$(t,e){if(t.length){let n=t[t.length-1],r=n.selectionsAfter.slice(Math.max(0,n.selectionsAfter.length-Xue));return r.length&&r[r.length-1].eq(e)?t:(r.push(e),ey(t,t.length-1,1e9,n.setSelAfter(r)))}else return[yi.selection([e])]}function Yue(t){let e=t[t.length-1],n=t.slice();return n[t.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),n}function J4(t,e){if(!t.length)return t;let n=t.length,r=ya;for(;n;){let s=Kue(t[n-1],e,r);if(s.changes&&!s.changes.empty||s.effects.length){let i=t.slice(0,n);return i[n-1]=s,i}else e=s.mapped,n--,r=s.selectionsAfter}return r.length?[yi.selection(r)]:ya}function Kue(t,e,n){let r=f$(t.selectionsAfter.length?t.selectionsAfter.map(l=>l.map(e)):ya,n);if(!t.changes)return yi.selection(r);let s=t.changes.map(e),i=e.mapDesc(t.changes,!0),a=t.mapped?t.mapped.composeDesc(i):i;return new yi(s,Ft.mapEffects(t.effects,e),a,t.startSelection.map(i),r)}const Zue=/^(input\.type|delete)($|\.)/;class Co{constructor(e,n,r=0,s=void 0){this.done=e,this.undone=n,this.prevTime=r,this.prevUserEvent=s}isolate(){return this.prevTime?new Co(this.done,this.undone):this}addChanges(e,n,r,s,i){let a=this.done,l=a[a.length-1];return l&&l.changes&&!l.changes.empty&&e.changes&&(!r||Zue.test(r))&&(!l.selectionsAfter.length&&n-this.prevTime0&&n-this.prevTimen.empty?t.moveByChar(n,e):xb(n,e))}function Us(t){return t.textDirectionAt(t.state.selection.main.head)==gr.LTR}const g$=t=>p$(t,!Us(t)),x$=t=>p$(t,Us(t));function v$(t,e){return no(t,n=>n.empty?t.moveByGroup(n,e):xb(n,e))}const ede=t=>v$(t,!Us(t)),tde=t=>v$(t,Us(t));function nde(t,e,n){if(e.type.prop(n))return!0;let r=e.to-e.from;return r&&(r>2||/[^\s,.;:]/.test(t.sliceDoc(e.from,e.to)))||e.firstChild}function vb(t,e,n){let r=Ss(t).resolveInner(e.head),s=n?sn.closedBy:sn.openedBy;for(let c=e.head;;){let d=n?r.childAfter(c):r.childBefore(c);if(!d)break;nde(t,d,s)?r=d:c=n?d.to:d.from}let i=r.type.prop(s),a,l;return i&&(a=n?No(t,r.from,1):No(t,r.to,-1))&&a.matched?l=n?a.end.to:a.end.from:l=n?r.to:r.from,Me.cursor(l,n?-1:1)}const rde=t=>no(t,e=>vb(t.state,e,!Us(t))),sde=t=>no(t,e=>vb(t.state,e,Us(t)));function y$(t,e){return no(t,n=>{if(!n.empty)return xb(n,e);let r=t.moveVertically(n,e);return r.head!=n.head?r:t.moveToLineBoundary(n,e)})}const b$=t=>y$(t,!1),w$=t=>y$(t,!0);function S$(t){let e=t.scrollDOM.clientHeighta.empty?t.moveVertically(a,e,n.height):xb(a,e));if(s.eq(r.selection))return!1;let i;if(n.selfScroll){let a=t.coordsAtPos(r.selection.main.head),l=t.scrollDOM.getBoundingClientRect(),c=l.top+n.marginTop,d=l.bottom-n.marginBottom;a&&a.top>c&&a.bottomk$(t,!1),cO=t=>k$(t,!0);function lu(t,e,n){let r=t.lineBlockAt(e.head),s=t.moveToLineBoundary(e,n);if(s.head==e.head&&s.head!=(n?r.to:r.from)&&(s=t.moveToLineBoundary(e,n,!1)),!n&&s.head==r.from&&r.length){let i=/^\s*/.exec(t.state.sliceDoc(r.from,Math.min(r.from+100,r.to)))[0].length;i&&e.head!=r.from+i&&(s=Me.cursor(r.from+i))}return s}const ide=t=>no(t,e=>lu(t,e,!0)),ade=t=>no(t,e=>lu(t,e,!1)),ode=t=>no(t,e=>lu(t,e,!Us(t))),lde=t=>no(t,e=>lu(t,e,Us(t))),cde=t=>no(t,e=>Me.cursor(t.lineBlockAt(e.head).from,1)),ude=t=>no(t,e=>Me.cursor(t.lineBlockAt(e.head).to,-1));function dde(t,e,n){let r=!1,s=Cf(t.selection,i=>{let a=No(t,i.head,-1)||No(t,i.head,1)||i.head>0&&No(t,i.head-1,1)||i.headdde(t,e);function Pa(t,e){let n=Cf(t.state.selection,r=>{let s=e(r);return Me.range(r.anchor,s.head,s.goalColumn,s.bidiLevel||void 0)});return n.eq(t.state.selection)?!1:(t.dispatch(to(t.state,n)),!0)}function O$(t,e){return Pa(t,n=>t.moveByChar(n,e))}const j$=t=>O$(t,!Us(t)),N$=t=>O$(t,Us(t));function C$(t,e){return Pa(t,n=>t.moveByGroup(n,e))}const fde=t=>C$(t,!Us(t)),mde=t=>C$(t,Us(t)),pde=t=>Pa(t,e=>vb(t.state,e,!Us(t))),gde=t=>Pa(t,e=>vb(t.state,e,Us(t)));function T$(t,e){return Pa(t,n=>t.moveVertically(n,e))}const E$=t=>T$(t,!1),_$=t=>T$(t,!0);function A$(t,e){return Pa(t,n=>t.moveVertically(n,e,S$(t).height))}const j_=t=>A$(t,!1),N_=t=>A$(t,!0),xde=t=>Pa(t,e=>lu(t,e,!0)),vde=t=>Pa(t,e=>lu(t,e,!1)),yde=t=>Pa(t,e=>lu(t,e,!Us(t))),bde=t=>Pa(t,e=>lu(t,e,Us(t))),wde=t=>Pa(t,e=>Me.cursor(t.lineBlockAt(e.head).from)),Sde=t=>Pa(t,e=>Me.cursor(t.lineBlockAt(e.head).to)),C_=({state:t,dispatch:e})=>(e(to(t,{anchor:0})),!0),T_=({state:t,dispatch:e})=>(e(to(t,{anchor:t.doc.length})),!0),E_=({state:t,dispatch:e})=>(e(to(t,{anchor:t.selection.main.anchor,head:0})),!0),__=({state:t,dispatch:e})=>(e(to(t,{anchor:t.selection.main.anchor,head:t.doc.length})),!0),kde=({state:t,dispatch:e})=>(e(t.update({selection:{anchor:0,head:t.doc.length},userEvent:"select"})),!0),Ode=({state:t,dispatch:e})=>{let n=yb(t).map(({from:r,to:s})=>Me.range(r,Math.min(s+1,t.doc.length)));return e(t.update({selection:Me.create(n),userEvent:"select"})),!0},jde=({state:t,dispatch:e})=>{let n=Cf(t.selection,r=>{let s=Ss(t),i=s.resolveStack(r.from,1);if(r.empty){let a=s.resolveStack(r.from,-1);a.node.from>=i.node.from&&a.node.to<=i.node.to&&(i=a)}for(let a=i;a;a=a.next){let{node:l}=a;if((l.from=r.to||l.to>r.to&&l.from<=r.from)&&a.next)return Me.range(l.to,l.from)}return r});return n.eq(t.selection)?!1:(e(to(t,n)),!0)};function M$(t,e){let{state:n}=t,r=n.selection,s=n.selection.ranges.slice();for(let i of n.selection.ranges){let a=n.doc.lineAt(i.head);if(e?a.to0)for(let l=i;;){let c=t.moveVertically(l,e);if(c.heada.to){s.some(d=>d.head==c.head)||s.push(c);break}else{if(c.head==l.head)break;l=c}}}return s.length==r.ranges.length?!1:(t.dispatch(to(n,Me.create(s,s.length-1))),!0)}const Nde=t=>M$(t,!1),Cde=t=>M$(t,!0),Tde=({state:t,dispatch:e})=>{let n=t.selection,r=null;return n.ranges.length>1?r=Me.create([n.main]):n.main.empty||(r=Me.create([Me.cursor(n.main.head)])),r?(e(to(t,r)),!0):!1};function Yp(t,e){if(t.state.readOnly)return!1;let n="delete.selection",{state:r}=t,s=r.changeByRange(i=>{let{from:a,to:l}=i;if(a==l){let c=e(i);ca&&(n="delete.forward",c=x1(t,c,!0)),a=Math.min(a,c),l=Math.max(l,c)}else a=x1(t,a,!1),l=x1(t,l,!0);return a==l?{range:i}:{changes:{from:a,to:l},range:Me.cursor(a,as(t)))r.between(e,e,(s,i)=>{se&&(e=n?i:s)});return e}const R$=(t,e,n)=>Yp(t,r=>{let s=r.from,{state:i}=t,a=i.doc.lineAt(s),l,c;if(n&&!e&&s>a.from&&sR$(t,!1,!0),D$=t=>R$(t,!0,!1),P$=(t,e)=>Yp(t,n=>{let r=n.head,{state:s}=t,i=s.doc.lineAt(r),a=s.charCategorizer(r);for(let l=null;;){if(r==(e?i.to:i.from)){r==n.head&&i.number!=(e?s.doc.lines:1)&&(r+=e?1:-1);break}let c=zs(i.text,r-i.from,e)+i.from,d=i.text.slice(Math.min(r,c)-i.from,Math.max(r,c)-i.from),h=a(d);if(l!=null&&h!=l)break;(d!=" "||r!=n.head)&&(l=h),r=c}return r}),z$=t=>P$(t,!1),Ede=t=>P$(t,!0),_de=t=>Yp(t,e=>{let n=t.lineBlockAt(e.head).to;return e.headYp(t,e=>{let n=t.moveToLineBoundary(e,!1).head;return e.head>n?n:Math.max(0,e.head-1)}),Mde=t=>Yp(t,e=>{let n=t.moveToLineBoundary(e,!0).head;return e.head{if(t.readOnly)return!1;let n=t.changeByRange(r=>({changes:{from:r.from,to:r.to,insert:jn.of(["",""])},range:Me.cursor(r.from)}));return e(t.update(n,{scrollIntoView:!0,userEvent:"input"})),!0},Dde=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let n=t.changeByRange(r=>{if(!r.empty||r.from==0||r.from==t.doc.length)return{range:r};let s=r.from,i=t.doc.lineAt(s),a=s==i.from?s-1:zs(i.text,s-i.from,!1)+i.from,l=s==i.to?s+1:zs(i.text,s-i.from,!0)+i.from;return{changes:{from:a,to:l,insert:t.doc.slice(s,l).append(t.doc.slice(a,s))},range:Me.cursor(l)}});return n.changes.empty?!1:(e(t.update(n,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function yb(t){let e=[],n=-1;for(let r of t.selection.ranges){let s=t.doc.lineAt(r.from),i=t.doc.lineAt(r.to);if(!r.empty&&r.to==i.from&&(i=t.doc.lineAt(r.to-1)),n>=s.number){let a=e[e.length-1];a.to=i.to,a.ranges.push(r)}else e.push({from:s.from,to:i.to,ranges:[r]});n=i.number+1}return e}function I$(t,e,n){if(t.readOnly)return!1;let r=[],s=[];for(let i of yb(t)){if(n?i.to==t.doc.length:i.from==0)continue;let a=t.doc.lineAt(n?i.to+1:i.from-1),l=a.length+1;if(n){r.push({from:i.to,to:a.to},{from:i.from,insert:a.text+t.lineBreak});for(let c of i.ranges)s.push(Me.range(Math.min(t.doc.length,c.anchor+l),Math.min(t.doc.length,c.head+l)))}else{r.push({from:a.from,to:i.from},{from:i.to,insert:t.lineBreak+a.text});for(let c of i.ranges)s.push(Me.range(c.anchor-l,c.head-l))}}return r.length?(e(t.update({changes:r,scrollIntoView:!0,selection:Me.create(s,t.selection.mainIndex),userEvent:"move.line"})),!0):!1}const Pde=({state:t,dispatch:e})=>I$(t,e,!1),zde=({state:t,dispatch:e})=>I$(t,e,!0);function L$(t,e,n){if(t.readOnly)return!1;let r=[];for(let s of yb(t))n?r.push({from:s.from,insert:t.doc.slice(s.from,s.to)+t.lineBreak}):r.push({from:s.to,insert:t.lineBreak+t.doc.slice(s.from,s.to)});return e(t.update({changes:r,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const Ide=({state:t,dispatch:e})=>L$(t,e,!1),Lde=({state:t,dispatch:e})=>L$(t,e,!0),Bde=t=>{if(t.state.readOnly)return!1;let{state:e}=t,n=e.changes(yb(e).map(({from:s,to:i})=>(s>0?s--:i{let i;if(t.lineWrapping){let a=t.lineBlockAt(s.head),l=t.coordsAtPos(s.head,s.assoc||1);l&&(i=a.bottom+t.documentTop-l.bottom+t.defaultLineHeight/2)}return t.moveVertically(s,!0,i)}).map(n);return t.dispatch({changes:n,selection:r,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Fde(t,e){if(/\(\)|\[\]|\{\}/.test(t.sliceDoc(e-1,e+1)))return{from:e,to:e};let n=Ss(t).resolveInner(e),r=n.childBefore(e),s=n.childAfter(e),i;return r&&s&&r.to<=e&&s.from>=e&&(i=r.type.prop(sn.closedBy))&&i.indexOf(s.name)>-1&&t.doc.lineAt(r.to).from==t.doc.lineAt(s.from).from&&!/\S/.test(t.sliceDoc(r.to,s.from))?{from:r.to,to:s.from}:null}const A_=B$(!1),qde=B$(!0);function B$(t){return({state:e,dispatch:n})=>{if(e.readOnly)return!1;let r=e.changeByRange(s=>{let{from:i,to:a}=s,l=e.doc.lineAt(i),c=!t&&i==a&&Fde(e,i);t&&(i=a=(a<=l.to?l:e.doc.lineAt(a)).to);let d=new fb(e,{simulateBreak:i,simulateDoubleBreak:!!c}),h=v6(d,i);for(h==null&&(h=Nf(/^\s*/.exec(e.doc.lineAt(i).text)[0],e.tabSize));al.from&&i{let s=[];for(let a=r.from;a<=r.to;){let l=t.doc.lineAt(a);l.number>n&&(r.empty||r.to>l.from)&&(e(l,s,r),n=l.number),a=l.to+1}let i=t.changes(s);return{changes:s,range:Me.range(i.mapPos(r.anchor,1),i.mapPos(r.head,1))}})}const $de=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let n=Object.create(null),r=new fb(t,{overrideIndentation:i=>{let a=n[i];return a??-1}}),s=N6(t,(i,a,l)=>{let c=v6(r,i.from);if(c==null)return;/\S/.test(i.text)||(c=0);let d=/^\s*/.exec(i.text)[0],h=Y0(t,c);(d!=h||l.fromt.readOnly?!1:(e(t.update(N6(t,(n,r)=>{r.push({from:n.from,insert:t.facet(Wp)})}),{userEvent:"input.indent"})),!0),q$=({state:t,dispatch:e})=>t.readOnly?!1:(e(t.update(N6(t,(n,r)=>{let s=/^\s*/.exec(n.text)[0];if(!s)return;let i=Nf(s,t.tabSize),a=0,l=Y0(t,Math.max(0,i-ld(t)));for(;a(t.setTabFocusMode(),!0),Qde=[{key:"Ctrl-b",run:g$,shift:j$,preventDefault:!0},{key:"Ctrl-f",run:x$,shift:N$},{key:"Ctrl-p",run:b$,shift:E$},{key:"Ctrl-n",run:w$,shift:_$},{key:"Ctrl-a",run:cde,shift:wde},{key:"Ctrl-e",run:ude,shift:Sde},{key:"Ctrl-d",run:D$},{key:"Ctrl-h",run:uO},{key:"Ctrl-k",run:_de},{key:"Ctrl-Alt-h",run:z$},{key:"Ctrl-o",run:Rde},{key:"Ctrl-t",run:Dde},{key:"Ctrl-v",run:cO}],Vde=[{key:"ArrowLeft",run:g$,shift:j$,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:ede,shift:fde,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:ode,shift:yde,preventDefault:!0},{key:"ArrowRight",run:x$,shift:N$,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:tde,shift:mde,preventDefault:!0},{mac:"Cmd-ArrowRight",run:lde,shift:bde,preventDefault:!0},{key:"ArrowUp",run:b$,shift:E$,preventDefault:!0},{mac:"Cmd-ArrowUp",run:C_,shift:E_},{mac:"Ctrl-ArrowUp",run:O_,shift:j_},{key:"ArrowDown",run:w$,shift:_$,preventDefault:!0},{mac:"Cmd-ArrowDown",run:T_,shift:__},{mac:"Ctrl-ArrowDown",run:cO,shift:N_},{key:"PageUp",run:O_,shift:j_},{key:"PageDown",run:cO,shift:N_},{key:"Home",run:ade,shift:vde,preventDefault:!0},{key:"Mod-Home",run:C_,shift:E_},{key:"End",run:ide,shift:xde,preventDefault:!0},{key:"Mod-End",run:T_,shift:__},{key:"Enter",run:A_,shift:A_},{key:"Mod-a",run:kde},{key:"Backspace",run:uO,shift:uO,preventDefault:!0},{key:"Delete",run:D$,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:z$,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:Ede,preventDefault:!0},{mac:"Mod-Backspace",run:Ade,preventDefault:!0},{mac:"Mod-Delete",run:Mde,preventDefault:!0}].concat(Qde.map(t=>({mac:t.key,run:t.run,shift:t.shift}))),Ude=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:rde,shift:pde},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:sde,shift:gde},{key:"Alt-ArrowUp",run:Pde},{key:"Shift-Alt-ArrowUp",run:Ide},{key:"Alt-ArrowDown",run:zde},{key:"Shift-Alt-ArrowDown",run:Lde},{key:"Mod-Alt-ArrowUp",run:Nde},{key:"Mod-Alt-ArrowDown",run:Cde},{key:"Escape",run:Tde},{key:"Mod-Enter",run:qde},{key:"Alt-l",mac:"Ctrl-l",run:Ode},{key:"Mod-i",run:jde,preventDefault:!0},{key:"Mod-[",run:q$},{key:"Mod-]",run:F$},{key:"Mod-Alt-\\",run:$de},{key:"Shift-Mod-k",run:Bde},{key:"Shift-Mod-\\",run:hde},{key:"Mod-/",run:Pue},{key:"Alt-A",run:Iue},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Hde}].concat(Vde),Wde={key:"Tab",run:F$,shift:q$},M_=typeof String.prototype.normalize=="function"?t=>t.normalize("NFKD"):t=>t;class af{constructor(e,n,r=0,s=e.length,i,a){this.test=a,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(r,s),this.bufferStart=r,this.normalize=i?l=>i(M_(l)):M_,this.query=this.normalize(n)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return gi(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let n=Zj(e),r=this.bufferStart+this.bufferPos;this.bufferPos+=wo(e);let s=this.normalize(n);if(s.length)for(let i=0,a=r;;i++){let l=s.charCodeAt(i),c=this.match(l,a,this.bufferPos+this.bufferStart);if(i==s.length-1){if(c)return this.value=c,this;break}a==r&&ithis.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let n=this.matchPos<=this.to&&this.re.exec(this.curLine);if(n){let r=this.curLineStart+n.index,s=r+n[0].length;if(this.matchPos=ty(this.text,s+(r==s?1:0)),r==this.curLineStart+this.curLine.length&&this.nextLine(),(rthis.value.to)&&(!this.test||this.test(r,s,n)))return this.value={from:r,to:s,match:n},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length=r||s.to<=n){let l=new Ih(n,e.sliceString(n,r));return eS.set(e,l),l}if(s.from==n&&s.to==r)return s;let{text:i,from:a}=s;return a>n&&(i=e.sliceString(n,a)+i,a=n),s.to=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,n=this.re.exec(this.flat.text);if(n&&!n[0]&&n.index==e&&(this.re.lastIndex=e+1,n=this.re.exec(this.flat.text)),n){let r=this.flat.from+n.index,s=r+n[0].length;if((this.flat.to>=this.to||n.index+n[0].length<=this.flat.text.length-10)&&(!this.test||this.test(r,s,n)))return this.value={from:r,to:s,match:n},this.matchPos=ty(this.text,s+(r==s?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=Ih.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}typeof Symbol<"u"&&(H$.prototype[Symbol.iterator]=Q$.prototype[Symbol.iterator]=function(){return this});function Gde(t){try{return new RegExp(t,C6),!0}catch{return!1}}function ty(t,e){if(e>=t.length)return e;let n=t.lineAt(e),r;for(;e=56320&&r<57344;)e++;return e}function dO(t){let e=String(t.state.doc.lineAt(t.state.selection.main.head).number),n=sr("input",{class:"cm-textfield",name:"line",value:e}),r=sr("form",{class:"cm-gotoLine",onkeydown:i=>{i.keyCode==27?(i.preventDefault(),t.dispatch({effects:N0.of(!1)}),t.focus()):i.keyCode==13&&(i.preventDefault(),s())},onsubmit:i=>{i.preventDefault(),s()}},sr("label",t.state.phrase("Go to line"),": ",n)," ",sr("button",{class:"cm-button",type:"submit"},t.state.phrase("go")),sr("button",{name:"close",onclick:()=>{t.dispatch({effects:N0.of(!1)}),t.focus()},"aria-label":t.state.phrase("close"),type:"button"},["×"]));function s(){let i=/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(n.value);if(!i)return;let{state:a}=t,l=a.doc.lineAt(a.selection.main.head),[,c,d,h,m]=i,g=h?+h.slice(1):0,x=d?+d:l.number;if(d&&m){let S=x/100;c&&(S=S*(c=="-"?-1:1)+l.number/a.doc.lines),x=Math.round(a.doc.lines*S)}else d&&c&&(x=x*(c=="-"?-1:1)+l.number);let y=a.doc.line(Math.max(1,Math.min(a.doc.lines,x))),w=Me.cursor(y.from+Math.max(0,Math.min(g,y.length)));t.dispatch({effects:[N0.of(!1),Ze.scrollIntoView(w.from,{y:"center"})],selection:w}),t.focus()}return{dom:r}}const N0=Ft.define(),R_=Os.define({create(){return!0},update(t,e){for(let n of e.effects)n.is(N0)&&(t=n.value);return t},provide:t=>U0.from(t,e=>e?dO:null)}),Xde=t=>{let e=V0(t,dO);if(!e){let n=[N0.of(!0)];t.state.field(R_,!1)==null&&n.push(Ft.appendConfig.of([R_,Yde])),t.dispatch({effects:n}),e=V0(t,dO)}return e&&e.dom.querySelector("input").select(),!0},Yde=Ze.baseTheme({".cm-panel.cm-gotoLine":{padding:"2px 6px 4px",position:"relative","& label":{fontSize:"80%"},"& [name=close]":{position:"absolute",top:"0",bottom:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:"0"}}}),Kde={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},Zde=at.define({combine(t){return $o(t,Kde,{highlightWordAroundCursor:(e,n)=>e||n,minSelectionLength:Math.min,maxMatches:Math.min})}});function Jde(t){return[she,rhe]}const ehe=kt.mark({class:"cm-selectionMatch"}),the=kt.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function D_(t,e,n,r){return(n==0||t(e.sliceDoc(n-1,n))!=wr.Word)&&(r==e.doc.length||t(e.sliceDoc(r,r+1))!=wr.Word)}function nhe(t,e,n,r){return t(e.sliceDoc(n,n+1))==wr.Word&&t(e.sliceDoc(r-1,r))==wr.Word}const rhe=Vr.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.selectionSet||t.docChanged||t.viewportChanged)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=t.state.facet(Zde),{state:n}=t,r=n.selection;if(r.ranges.length>1)return kt.none;let s=r.main,i,a=null;if(s.empty){if(!e.highlightWordAroundCursor)return kt.none;let c=n.wordAt(s.head);if(!c)return kt.none;a=n.charCategorizer(s.head),i=n.sliceDoc(c.from,c.to)}else{let c=s.to-s.from;if(c200)return kt.none;if(e.wholeWords){if(i=n.sliceDoc(s.from,s.to),a=n.charCategorizer(s.head),!(D_(a,n,s.from,s.to)&&nhe(a,n,s.from,s.to)))return kt.none}else if(i=n.sliceDoc(s.from,s.to),!i)return kt.none}let l=[];for(let c of t.visibleRanges){let d=new af(n.doc,i,c.from,c.to);for(;!d.next().done;){let{from:h,to:m}=d.value;if((!a||D_(a,n,h,m))&&(s.empty&&h<=s.from&&m>=s.to?l.push(the.range(h,m)):(h>=s.to||m<=s.from)&&l.push(ehe.range(h,m)),l.length>e.maxMatches))return kt.none}}return kt.set(l)}},{decorations:t=>t.decorations}),she=Ze.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),ihe=({state:t,dispatch:e})=>{let{selection:n}=t,r=Me.create(n.ranges.map(s=>t.wordAt(s.head)||Me.cursor(s.head)),n.mainIndex);return r.eq(n)?!1:(e(t.update({selection:r})),!0)};function ahe(t,e){let{main:n,ranges:r}=t.selection,s=t.wordAt(n.head),i=s&&s.from==n.from&&s.to==n.to;for(let a=!1,l=new af(t.doc,e,r[r.length-1].to);;)if(l.next(),l.done){if(a)return null;l=new af(t.doc,e,0,Math.max(0,r[r.length-1].from-1)),a=!0}else{if(a&&r.some(c=>c.from==l.value.from))continue;if(i){let c=t.wordAt(l.value.from);if(!c||c.from!=l.value.from||c.to!=l.value.to)continue}return l.value}}const ohe=({state:t,dispatch:e})=>{let{ranges:n}=t.selection;if(n.some(i=>i.from===i.to))return ihe({state:t,dispatch:e});let r=t.sliceDoc(n[0].from,n[0].to);if(t.selection.ranges.some(i=>t.sliceDoc(i.from,i.to)!=r))return!1;let s=ahe(t,r);return s?(e(t.update({selection:t.selection.addRange(Me.range(s.from,s.to),!1),effects:Ze.scrollIntoView(s.to)})),!0):!1},Tf=at.define({combine(t){return $o(t,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new yhe(e),scrollToMatch:e=>Ze.scrollIntoView(e)})}});class V${constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||Gde(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(n,r)=>r=="n"?` -`:r=="r"?"\r":r=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord}create(){return this.regexp?new dhe(this):new che(this)}getCursor(e,n=0,r){let s=e.doc?e:wn.create({doc:e});return r==null&&(r=s.doc.length),this.regexp?bh(this,s,n,r):yh(this,s,n,r)}}class U${constructor(e){this.spec=e}}function yh(t,e,n,r){return new af(e.doc,t.unquoted,n,r,t.caseSensitive?void 0:s=>s.toLowerCase(),t.wholeWord?lhe(e.doc,e.charCategorizer(e.selection.main.head)):void 0)}function lhe(t,e){return(n,r,s,i)=>((i>n||i+s.length=n)return null;s.push(r.value)}return s}highlight(e,n,r,s){let i=yh(this.spec,e,Math.max(0,n-this.spec.unquoted.length),Math.min(r+this.spec.unquoted.length,e.doc.length));for(;!i.next().done;)s(i.value.from,i.value.to)}}function bh(t,e,n,r){return new H$(e.doc,t.search,{ignoreCase:!t.caseSensitive,test:t.wholeWord?uhe(e.charCategorizer(e.selection.main.head)):void 0},n,r)}function ny(t,e){return t.slice(zs(t,e,!1),e)}function ry(t,e){return t.slice(e,zs(t,e))}function uhe(t){return(e,n,r)=>!r[0].length||(t(ny(r.input,r.index))!=wr.Word||t(ry(r.input,r.index))!=wr.Word)&&(t(ry(r.input,r.index+r[0].length))!=wr.Word||t(ny(r.input,r.index+r[0].length))!=wr.Word)}class dhe extends U${nextMatch(e,n,r){let s=bh(this.spec,e,r,e.doc.length).next();return s.done&&(s=bh(this.spec,e,0,n).next()),s.done?null:s.value}prevMatchInRange(e,n,r){for(let s=1;;s++){let i=Math.max(n,r-s*1e4),a=bh(this.spec,e,i,r),l=null;for(;!a.next().done;)l=a.value;if(l&&(i==n||l.from>i+10))return l;if(i==n)return null}}prevMatch(e,n,r){return this.prevMatchInRange(e,0,n)||this.prevMatchInRange(e,r,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(n,r)=>{if(r=="&")return e.match[0];if(r=="$")return"$";for(let s=r.length;s>0;s--){let i=+r.slice(0,s);if(i>0&&i=n)return null;s.push(r.value)}return s}highlight(e,n,r,s){let i=bh(this.spec,e,Math.max(0,n-250),Math.min(r+250,e.doc.length));for(;!i.next().done;)s(i.value.from,i.value.to)}}const Z0=Ft.define(),T6=Ft.define(),$c=Os.define({create(t){return new tS(hO(t).create(),null)},update(t,e){for(let n of e.effects)n.is(Z0)?t=new tS(n.value.create(),t.panel):n.is(T6)&&(t=new tS(t.query,n.value?E6:null));return t},provide:t=>U0.from(t,e=>e.panel)});class tS{constructor(e,n){this.query=e,this.panel=n}}const hhe=kt.mark({class:"cm-searchMatch"}),fhe=kt.mark({class:"cm-searchMatch cm-searchMatch-selected"}),mhe=Vr.fromClass(class{constructor(t){this.view=t,this.decorations=this.highlight(t.state.field($c))}update(t){let e=t.state.field($c);(e!=t.startState.field($c)||t.docChanged||t.selectionSet||t.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:t,panel:e}){if(!e||!t.spec.valid)return kt.none;let{view:n}=this,r=new ql;for(let s=0,i=n.visibleRanges,a=i.length;si[s+1].from-500;)c=i[++s].to;t.highlight(n.state,l,c,(d,h)=>{let m=n.state.selection.ranges.some(g=>g.from==d&&g.to==h);r.add(d,h,m?fhe:hhe)})}return r.finish()}},{decorations:t=>t.decorations});function Kp(t){return e=>{let n=e.state.field($c,!1);return n&&n.query.spec.valid?t(e,n):X$(e)}}const sy=Kp((t,{query:e})=>{let{to:n}=t.state.selection.main,r=e.nextMatch(t.state,n,n);if(!r)return!1;let s=Me.single(r.from,r.to),i=t.state.facet(Tf);return t.dispatch({selection:s,effects:[_6(t,r),i.scrollToMatch(s.main,t)],userEvent:"select.search"}),G$(t),!0}),iy=Kp((t,{query:e})=>{let{state:n}=t,{from:r}=n.selection.main,s=e.prevMatch(n,r,r);if(!s)return!1;let i=Me.single(s.from,s.to),a=t.state.facet(Tf);return t.dispatch({selection:i,effects:[_6(t,s),a.scrollToMatch(i.main,t)],userEvent:"select.search"}),G$(t),!0}),phe=Kp((t,{query:e})=>{let n=e.matchAll(t.state,1e3);return!n||!n.length?!1:(t.dispatch({selection:Me.create(n.map(r=>Me.range(r.from,r.to))),userEvent:"select.search.matches"}),!0)}),ghe=({state:t,dispatch:e})=>{let n=t.selection;if(n.ranges.length>1||n.main.empty)return!1;let{from:r,to:s}=n.main,i=[],a=0;for(let l=new af(t.doc,t.sliceDoc(r,s));!l.next().done;){if(i.length>1e3)return!1;l.value.from==r&&(a=i.length),i.push(Me.range(l.value.from,l.value.to))}return e(t.update({selection:Me.create(i,a),userEvent:"select.search.matches"})),!0},P_=Kp((t,{query:e})=>{let{state:n}=t,{from:r,to:s}=n.selection.main;if(n.readOnly)return!1;let i=e.nextMatch(n,r,r);if(!i)return!1;let a=i,l=[],c,d,h=[];a.from==r&&a.to==s&&(d=n.toText(e.getReplacement(a)),l.push({from:a.from,to:a.to,insert:d}),a=e.nextMatch(n,a.from,a.to),h.push(Ze.announce.of(n.phrase("replaced match on line $",n.doc.lineAt(r).number)+".")));let m=t.state.changes(l);return a&&(c=Me.single(a.from,a.to).map(m),h.push(_6(t,a)),h.push(n.facet(Tf).scrollToMatch(c.main,t))),t.dispatch({changes:m,selection:c,effects:h,userEvent:"input.replace"}),!0}),xhe=Kp((t,{query:e})=>{if(t.state.readOnly)return!1;let n=e.matchAll(t.state,1e9).map(s=>{let{from:i,to:a}=s;return{from:i,to:a,insert:e.getReplacement(s)}});if(!n.length)return!1;let r=t.state.phrase("replaced $ matches",n.length)+".";return t.dispatch({changes:n,effects:Ze.announce.of(r),userEvent:"input.replace.all"}),!0});function E6(t){return t.state.facet(Tf).createPanel(t)}function hO(t,e){var n,r,s,i,a;let l=t.selection.main,c=l.empty||l.to>l.from+100?"":t.sliceDoc(l.from,l.to);if(e&&!c)return e;let d=t.facet(Tf);return new V$({search:((n=e?.literal)!==null&&n!==void 0?n:d.literal)?c:c.replace(/\n/g,"\\n"),caseSensitive:(r=e?.caseSensitive)!==null&&r!==void 0?r:d.caseSensitive,literal:(s=e?.literal)!==null&&s!==void 0?s:d.literal,regexp:(i=e?.regexp)!==null&&i!==void 0?i:d.regexp,wholeWord:(a=e?.wholeWord)!==null&&a!==void 0?a:d.wholeWord})}function W$(t){let e=V0(t,E6);return e&&e.dom.querySelector("[main-field]")}function G$(t){let e=W$(t);e&&e==t.root.activeElement&&e.select()}const X$=t=>{let e=t.state.field($c,!1);if(e&&e.panel){let n=W$(t);if(n&&n!=t.root.activeElement){let r=hO(t.state,e.query.spec);r.valid&&t.dispatch({effects:Z0.of(r)}),n.focus(),n.select()}}else t.dispatch({effects:[T6.of(!0),e?Z0.of(hO(t.state,e.query.spec)):Ft.appendConfig.of(whe)]});return!0},Y$=t=>{let e=t.state.field($c,!1);if(!e||!e.panel)return!1;let n=V0(t,E6);return n&&n.dom.contains(t.root.activeElement)&&t.focus(),t.dispatch({effects:T6.of(!1)}),!0},vhe=[{key:"Mod-f",run:X$,scope:"editor search-panel"},{key:"F3",run:sy,shift:iy,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:sy,shift:iy,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:Y$,scope:"editor search-panel"},{key:"Mod-Shift-l",run:ghe},{key:"Mod-Alt-g",run:Xde},{key:"Mod-d",run:ohe,preventDefault:!0}];class yhe{constructor(e){this.view=e;let n=this.query=e.state.field($c).query.spec;this.commit=this.commit.bind(this),this.searchField=sr("input",{value:n.search,placeholder:Li(e,"Find"),"aria-label":Li(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=sr("input",{value:n.replace,placeholder:Li(e,"Replace"),"aria-label":Li(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=sr("input",{type:"checkbox",name:"case",form:"",checked:n.caseSensitive,onchange:this.commit}),this.reField=sr("input",{type:"checkbox",name:"re",form:"",checked:n.regexp,onchange:this.commit}),this.wordField=sr("input",{type:"checkbox",name:"word",form:"",checked:n.wholeWord,onchange:this.commit});function r(s,i,a){return sr("button",{class:"cm-button",name:s,onclick:i,type:"button"},a)}this.dom=sr("div",{onkeydown:s=>this.keydown(s),class:"cm-search"},[this.searchField,r("next",()=>sy(e),[Li(e,"next")]),r("prev",()=>iy(e),[Li(e,"previous")]),r("select",()=>phe(e),[Li(e,"all")]),sr("label",null,[this.caseField,Li(e,"match case")]),sr("label",null,[this.reField,Li(e,"regexp")]),sr("label",null,[this.wordField,Li(e,"by word")]),...e.state.readOnly?[]:[sr("br"),this.replaceField,r("replace",()=>P_(e),[Li(e,"replace")]),r("replaceAll",()=>xhe(e),[Li(e,"replace all")])],sr("button",{name:"close",onclick:()=>Y$(e),"aria-label":Li(e,"close"),type:"button"},["×"])])}commit(){let e=new V$({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:Z0.of(e)}))}keydown(e){Ole(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?iy:sy)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),P_(this.view))}update(e){for(let n of e.transactions)for(let r of n.effects)r.is(Z0)&&!r.value.eq(this.query)&&this.setQuery(r.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(Tf).top}}function Li(t,e){return t.state.phrase(e)}const v1=30,y1=/[\s\.,:;?!]/;function _6(t,{from:e,to:n}){let r=t.state.doc.lineAt(e),s=t.state.doc.lineAt(n).to,i=Math.max(r.from,e-v1),a=Math.min(s,n+v1),l=t.state.sliceDoc(i,a);if(i!=r.from){for(let c=0;cl.length-v1;c--)if(!y1.test(l[c-1])&&y1.test(l[c])){l=l.slice(0,c);break}}return Ze.announce.of(`${t.state.phrase("current match")}. ${l} ${t.state.phrase("on line")} ${r.number}.`)}const bhe=Ze.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),whe=[$c,ou.low(mhe),bhe];class K${constructor(e,n,r,s){this.state=e,this.pos=n,this.explicit=r,this.view=s,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let n=Ss(this.state).resolveInner(this.pos,-1);for(;n&&e.indexOf(n.name)<0;)n=n.parent;return n?{from:n.from,to:this.pos,text:this.state.sliceDoc(n.from,this.pos),type:n.type}:null}matchBefore(e){let n=this.state.doc.lineAt(this.pos),r=Math.max(n.from,this.pos-250),s=n.text.slice(r-n.from,this.pos-n.from),i=s.search(J$(e,!1));return i<0?null:{from:r+i,to:this.pos,text:s.slice(i)}}get aborted(){return this.abortListeners==null}addEventListener(e,n,r){e=="abort"&&this.abortListeners&&(this.abortListeners.push(n),r&&r.onDocChange&&(this.abortOnDocChange=!0))}}function z_(t){let e=Object.keys(t).join(""),n=/\w/.test(e);return n&&(e=e.replace(/\w/g,"")),`[${n?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function She(t){let e=Object.create(null),n=Object.create(null);for(let{label:s}of t){e[s[0]]=!0;for(let i=1;itypeof s=="string"?{label:s}:s),[n,r]=e.every(s=>/^\w+$/.test(s.label))?[/\w*$/,/\w+$/]:She(e);return s=>{let i=s.matchBefore(r);return i||s.explicit?{from:i?i.from:s.pos,options:e,validFor:n}:null}}function khe(t,e){return n=>{for(let r=Ss(n.state).resolveInner(n.pos,-1);r;r=r.parent){if(t.indexOf(r.name)>-1)return null;if(r.type.isTop)break}return e(n)}}let I_=class{constructor(e,n,r,s){this.completion=e,this.source=n,this.match=r,this.score=s}};function ed(t){return t.selection.main.from}function J$(t,e){var n;let{source:r}=t,s=e&&r[0]!="^",i=r[r.length-1]!="$";return!s&&!i?t:new RegExp(`${s?"^":""}(?:${r})${i?"$":""}`,(n=t.flags)!==null&&n!==void 0?n:t.ignoreCase?"i":"")}const A6=qo.define();function Ohe(t,e,n,r){let{main:s}=t.selection,i=n-s.from,a=r-s.from;return{...t.changeByRange(l=>{if(l!=s&&n!=r&&t.sliceDoc(l.from+i,l.from+a)!=t.sliceDoc(n,r))return{range:l};let c=t.toText(e);return{changes:{from:l.from+i,to:r==s.from?l.to:l.from+a,insert:c},range:Me.cursor(l.from+i+c.length)}}),scrollIntoView:!0,userEvent:"input.complete"}}const L_=new WeakMap;function jhe(t){if(!Array.isArray(t))return t;let e=L_.get(t);return e||L_.set(t,e=Z$(t)),e}const ay=Ft.define(),J0=Ft.define();class Nhe{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let n=0;n=48&&E<=57||E>=97&&E<=122?2:E>=65&&E<=90?1:0:(_=Zj(E))!=_.toLowerCase()?1:_!=_.toUpperCase()?2:0;(!j||A==1&&S||T==0&&A!=0)&&(n[m]==E||r[m]==E&&(g=!0)?a[m++]=j:a.length&&(k=!1)),T=A,j+=wo(E)}return m==c&&a[0]==0&&k?this.result(-100+(g?-200:0),a,e):x==c&&y==0?this.ret(-200-e.length+(w==e.length?0:-100),[0,w]):l>-1?this.ret(-700-e.length,[l,l+this.pattern.length]):x==c?this.ret(-900-e.length,[y,w]):m==c?this.result(-100+(g?-200:0)+-700+(k?0:-1100),a,e):n.length==2?null:this.result((s[0]?-700:0)+-200+-1100,s,e)}result(e,n,r){let s=[],i=0;for(let a of n){let l=a+(this.astral?wo(gi(r,a)):1);i&&s[i-1]==a?s[i-1]=l:(s[i++]=a,s[i++]=l)}return this.ret(e-r.length,s)}}class Che{constructor(e){this.pattern=e,this.matched=[],this.score=0,this.folded=e.toLowerCase()}match(e){if(e.length!1,activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:()=>"",optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:The,filterStrict:!1,compareCompletions:(e,n)=>e.label.localeCompare(n.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(e,n)=>e&&n,closeOnBlur:(e,n)=>e&&n,icons:(e,n)=>e&&n,tooltipClass:(e,n)=>r=>B_(e(r),n(r)),optionClass:(e,n)=>r=>B_(e(r),n(r)),addToOptions:(e,n)=>e.concat(n),filterStrict:(e,n)=>e||n})}});function B_(t,e){return t?e?t+" "+e:t:e}function The(t,e,n,r,s,i){let a=t.textDirection==gr.RTL,l=a,c=!1,d="top",h,m,g=e.left-s.left,x=s.right-e.right,y=r.right-r.left,w=r.bottom-r.top;if(l&&g=w||j>e.top?h=n.bottom-e.top:(d="bottom",h=e.bottom-n.top)}let S=(e.bottom-e.top)/i.offsetHeight,k=(e.right-e.left)/i.offsetWidth;return{style:`${d}: ${h/S}px; max-width: ${m/k}px`,class:"cm-completionInfo-"+(c?a?"left-narrow":"right-narrow":l?"left":"right")}}function Ehe(t){let e=t.addToOptions.slice();return t.icons&&e.push({render(n){let r=document.createElement("div");return r.classList.add("cm-completionIcon"),n.type&&r.classList.add(...n.type.split(/\s+/g).map(s=>"cm-completionIcon-"+s)),r.setAttribute("aria-hidden","true"),r},position:20}),e.push({render(n,r,s,i){let a=document.createElement("span");a.className="cm-completionLabel";let l=n.displayLabel||n.label,c=0;for(let d=0;dc&&a.appendChild(document.createTextNode(l.slice(c,h)));let g=a.appendChild(document.createElement("span"));g.appendChild(document.createTextNode(l.slice(h,m))),g.className="cm-completionMatchedText",c=m}return cn.position-r.position).map(n=>n.render)}function nS(t,e,n){if(t<=n)return{from:0,to:t};if(e<0&&(e=0),e<=t>>1){let s=Math.floor(e/n);return{from:s*n,to:(s+1)*n}}let r=Math.floor((t-e)/n);return{from:t-(r+1)*n,to:t-r*n}}class _he{constructor(e,n,r){this.view=e,this.stateField=n,this.applyCompletion=r,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:()=>this.measureInfo(),write:c=>this.placeInfo(c),key:this},this.space=null,this.currentClass="";let s=e.state.field(n),{options:i,selected:a}=s.open,l=e.state.facet(bs);this.optionContent=Ehe(l),this.optionClass=l.optionClass,this.tooltipClass=l.tooltipClass,this.range=nS(i.length,a,l.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.updateTooltipClass(e.state),this.dom.addEventListener("mousedown",c=>{let{options:d}=e.state.field(n).open;for(let h=c.target,m;h&&h!=this.dom;h=h.parentNode)if(h.nodeName=="LI"&&(m=/-(\d+)$/.exec(h.id))&&+m[1]{let d=e.state.field(this.stateField,!1);d&&d.tooltip&&e.state.facet(bs).closeOnBlur&&c.relatedTarget!=e.contentDOM&&e.dispatch({effects:J0.of(null)})}),this.showOptions(i,s.id)}mount(){this.updateSel()}showOptions(e,n){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(e,n,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(e){var n;let r=e.state.field(this.stateField),s=e.startState.field(this.stateField);if(this.updateTooltipClass(e.state),r!=s){let{options:i,selected:a,disabled:l}=r.open;(!s.open||s.open.options!=i)&&(this.range=nS(i.length,a,e.state.facet(bs).maxRenderedOptions),this.showOptions(i,r.id)),this.updateSel(),l!=((n=s.open)===null||n===void 0?void 0:n.disabled)&&this.dom.classList.toggle("cm-tooltip-autocomplete-disabled",!!l)}}updateTooltipClass(e){let n=this.tooltipClass(e);if(n!=this.currentClass){for(let r of this.currentClass.split(" "))r&&this.dom.classList.remove(r);for(let r of n.split(" "))r&&this.dom.classList.add(r);this.currentClass=n}}positioned(e){this.space=e,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let e=this.view.state.field(this.stateField),n=e.open;(n.selected>-1&&n.selected=this.range.to)&&(this.range=nS(n.options.length,n.selected,this.view.state.facet(bs).maxRenderedOptions),this.showOptions(n.options,e.id));let r=this.updateSelectedOption(n.selected);if(r){this.destroyInfo();let{completion:s}=n.options[n.selected],{info:i}=s;if(!i)return;let a=typeof i=="string"?document.createTextNode(i):i(s);if(!a)return;"then"in a?a.then(l=>{l&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(l,s)}).catch(l=>vi(this.view.state,l,"completion info")):(this.addInfoPane(a,s),r.setAttribute("aria-describedby",this.info.id))}}addInfoPane(e,n){this.destroyInfo();let r=this.info=document.createElement("div");if(r.className="cm-tooltip cm-completionInfo",r.id="cm-completionInfo-"+Math.floor(Math.random()*65535).toString(16),e.nodeType!=null)r.appendChild(e),this.infoDestroy=null;else{let{dom:s,destroy:i}=e;r.appendChild(s),this.infoDestroy=i||null}this.dom.appendChild(r),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(e){let n=null;for(let r=this.list.firstChild,s=this.range.from;r;r=r.nextSibling,s++)r.nodeName!="LI"||!r.id?s--:s==e?r.hasAttribute("aria-selected")||(r.setAttribute("aria-selected","true"),n=r):r.hasAttribute("aria-selected")&&(r.removeAttribute("aria-selected"),r.removeAttribute("aria-describedby"));return n&&Mhe(this.list,n),n}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let n=this.dom.getBoundingClientRect(),r=this.info.getBoundingClientRect(),s=e.getBoundingClientRect(),i=this.space;if(!i){let a=this.dom.ownerDocument.documentElement;i={left:0,top:0,right:a.clientWidth,bottom:a.clientHeight}}return s.top>Math.min(i.bottom,n.bottom)-10||s.bottom{a.target==s&&a.preventDefault()});let i=null;for(let a=r.from;ar.from||r.from==0))if(i=g,typeof d!="string"&&d.header)s.appendChild(d.header(d));else{let x=s.appendChild(document.createElement("completion-section"));x.textContent=g}}const h=s.appendChild(document.createElement("li"));h.id=n+"-"+a,h.setAttribute("role","option");let m=this.optionClass(l);m&&(h.className=m);for(let g of this.optionContent){let x=g(l,this.view.state,this.view,c);x&&h.appendChild(x)}}return r.from&&s.classList.add("cm-completionListIncompleteTop"),r.tonew _he(n,t,e)}function Mhe(t,e){let n=t.getBoundingClientRect(),r=e.getBoundingClientRect(),s=n.height/t.offsetHeight;r.topn.bottom&&(t.scrollTop+=(r.bottom-n.bottom)/s)}function F_(t){return(t.boost||0)*100+(t.apply?10:0)+(t.info?5:0)+(t.type?1:0)}function Rhe(t,e){let n=[],r=null,s=null,i=h=>{n.push(h);let{section:m}=h.completion;if(m){r||(r=[]);let g=typeof m=="string"?m:m.name;r.some(x=>x.name==g)||r.push(typeof m=="string"?{name:g}:m)}},a=e.facet(bs);for(let h of t)if(h.hasResult()){let m=h.result.getMatch;if(h.result.filter===!1)for(let g of h.result.options)i(new I_(g,h.source,m?m(g):[],1e9-n.length));else{let g=e.sliceDoc(h.from,h.to),x,y=a.filterStrict?new Che(g):new Nhe(g);for(let w of h.result.options)if(x=y.match(w.label)){let S=w.displayLabel?m?m(w,x.matched):[]:x.matched,k=x.score+(w.boost||0);if(i(new I_(w,h.source,S,k)),typeof w.section=="object"&&w.section.rank==="dynamic"){let{name:j}=w.section;s||(s=Object.create(null)),s[j]=Math.max(k,s[j]||-1e9)}}}}if(r){let h=Object.create(null),m=0,g=(x,y)=>(x.rank==="dynamic"&&y.rank==="dynamic"?s[y.name]-s[x.name]:0)||(typeof x.rank=="number"?x.rank:1e9)-(typeof y.rank=="number"?y.rank:1e9)||(x.nameg.score-m.score||d(m.completion,g.completion))){let m=h.completion;!c||c.label!=m.label||c.detail!=m.detail||c.type!=null&&m.type!=null&&c.type!=m.type||c.apply!=m.apply||c.boost!=m.boost?l.push(h):F_(h.completion)>F_(c)&&(l[l.length-1]=h),c=h.completion}return l}class Th{constructor(e,n,r,s,i,a){this.options=e,this.attrs=n,this.tooltip=r,this.timestamp=s,this.selected=i,this.disabled=a}setSelected(e,n){return e==this.selected||e>=this.options.length?this:new Th(this.options,q_(n,e),this.tooltip,this.timestamp,e,this.disabled)}static build(e,n,r,s,i,a){if(s&&!a&&e.some(d=>d.isPending))return s.setDisabled();let l=Rhe(e,n);if(!l.length)return s&&e.some(d=>d.isPending)?s.setDisabled():null;let c=n.facet(bs).selectOnOpen?0:-1;if(s&&s.selected!=c&&s.selected!=-1){let d=s.options[s.selected].completion;for(let h=0;hh.hasResult()?Math.min(d,h.from):d,1e8),create:Bhe,above:i.aboveCursor},s?s.timestamp:Date.now(),c,!1)}map(e){return new Th(this.options,this.attrs,{...this.tooltip,pos:e.mapPos(this.tooltip.pos)},this.timestamp,this.selected,this.disabled)}setDisabled(){return new Th(this.options,this.attrs,this.tooltip,this.timestamp,this.selected,!0)}}class oy{constructor(e,n,r){this.active=e,this.id=n,this.open=r}static start(){return new oy(Ihe,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:n}=e,r=n.facet(bs),i=(r.override||n.languageDataAt("autocomplete",ed(n)).map(jhe)).map(c=>(this.active.find(h=>h.source==c)||new ba(c,this.active.some(h=>h.state!=0)?1:0)).update(e,r));i.length==this.active.length&&i.every((c,d)=>c==this.active[d])&&(i=this.active);let a=this.open,l=e.effects.some(c=>c.is(M6));a&&e.docChanged&&(a=a.map(e.changes)),e.selection||i.some(c=>c.hasResult()&&e.changes.touchesRange(c.from,c.to))||!Dhe(i,this.active)||l?a=Th.build(i,n,this.id,a,r,l):a&&a.disabled&&!i.some(c=>c.isPending)&&(a=null),!a&&i.every(c=>!c.isPending)&&i.some(c=>c.hasResult())&&(i=i.map(c=>c.hasResult()?new ba(c.source,0):c));for(let c of e.effects)c.is(tH)&&(a=a&&a.setSelected(c.value,this.id));return i==this.active&&a==this.open?this:new oy(i,this.id,a)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?Phe:zhe}}function Dhe(t,e){if(t==e)return!0;for(let n=0,r=0;;){for(;n-1&&(n["aria-activedescendant"]=t+"-"+e),n}const Ihe=[];function eH(t,e){if(t.isUserEvent("input.complete")){let r=t.annotation(A6);if(r&&e.activateOnCompletion(r))return 12}let n=t.isUserEvent("input.type");return n&&e.activateOnTyping?5:n?1:t.isUserEvent("delete.backward")?2:t.selection?8:t.docChanged?16:0}class ba{constructor(e,n,r=!1){this.source=e,this.state=n,this.explicit=r}hasResult(){return!1}get isPending(){return this.state==1}update(e,n){let r=eH(e,n),s=this;(r&8||r&16&&this.touches(e))&&(s=new ba(s.source,0)),r&4&&s.state==0&&(s=new ba(this.source,1)),s=s.updateFor(e,r);for(let i of e.effects)if(i.is(ay))s=new ba(s.source,1,i.value);else if(i.is(J0))s=new ba(s.source,0);else if(i.is(M6))for(let a of i.value)a.source==s.source&&(s=a);return s}updateFor(e,n){return this.map(e.changes)}map(e){return this}touches(e){return e.changes.touchesRange(ed(e.state))}}class Lh extends ba{constructor(e,n,r,s,i,a){super(e,3,n),this.limit=r,this.result=s,this.from=i,this.to=a}hasResult(){return!0}updateFor(e,n){var r;if(!(n&3))return this.map(e.changes);let s=this.result;s.map&&!e.changes.empty&&(s=s.map(s,e.changes));let i=e.changes.mapPos(this.from),a=e.changes.mapPos(this.to,1),l=ed(e.state);if(l>a||!s||n&2&&(ed(e.startState)==this.from||ln.map(e))}}),tH=Ft.define(),xi=Os.define({create(){return oy.start()},update(t,e){return t.update(e)},provide:t=>[h6.from(t,e=>e.tooltip),Ze.contentAttributes.from(t,e=>e.attrs)]});function R6(t,e){const n=e.completion.apply||e.completion.label;let r=t.state.field(xi).active.find(s=>s.source==e.source);return r instanceof Lh?(typeof n=="string"?t.dispatch({...Ohe(t.state,n,r.from,r.to),annotations:A6.of(e.completion)}):n(t,e.completion,r.from,r.to),!0):!1}const Bhe=Ahe(xi,R6);function b1(t,e="option"){return n=>{let r=n.state.field(xi,!1);if(!r||!r.open||r.open.disabled||Date.now()-r.open.timestamp-1?r.open.selected+s*(t?1:-1):t?0:a-1;return l<0?l=e=="page"?0:a-1:l>=a&&(l=e=="page"?a-1:0),n.dispatch({effects:tH.of(l)}),!0}}const Fhe=t=>{let e=t.state.field(xi,!1);return t.state.readOnly||!e||!e.open||e.open.selected<0||e.open.disabled||Date.now()-e.open.timestampt.state.field(xi,!1)?(t.dispatch({effects:ay.of(!0)}),!0):!1,qhe=t=>{let e=t.state.field(xi,!1);return!e||!e.active.some(n=>n.state!=0)?!1:(t.dispatch({effects:J0.of(null)}),!0)};class $he{constructor(e,n){this.active=e,this.context=n,this.time=Date.now(),this.updates=[],this.done=void 0}}const Hhe=50,Qhe=1e3,Vhe=Vr.fromClass(class{constructor(t){this.view=t,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(let e of t.state.field(xi).active)e.isPending&&this.startQuery(e)}update(t){let e=t.state.field(xi),n=t.state.facet(bs);if(!t.selectionSet&&!t.docChanged&&t.startState.field(xi)==e)return;let r=t.transactions.some(i=>{let a=eH(i,n);return a&8||(i.selection||i.docChanged)&&!(a&3)});for(let i=0;iHhe&&Date.now()-a.time>Qhe){for(let l of a.context.abortListeners)try{l()}catch(c){vi(this.view.state,c)}a.context.abortListeners=null,this.running.splice(i--,1)}else a.updates.push(...t.transactions)}this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),t.transactions.some(i=>i.effects.some(a=>a.is(ay)))&&(this.pendingStart=!0);let s=this.pendingStart?50:n.activateOnTypingDelay;if(this.debounceUpdate=e.active.some(i=>i.isPending&&!this.running.some(a=>a.active.source==i.source))?setTimeout(()=>this.startUpdate(),s):-1,this.composing!=0)for(let i of t.transactions)i.isUserEvent("input.type")?this.composing=2:this.composing==2&&i.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;let{state:t}=this.view,e=t.field(xi);for(let n of e.active)n.isPending&&!this.running.some(r=>r.active.source==n.source)&&this.startQuery(n);this.running.length&&e.open&&e.open.disabled&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(bs).updateSyncTime))}startQuery(t){let{state:e}=this.view,n=ed(e),r=new K$(e,n,t.explicit,this.view),s=new $he(t,r);this.running.push(s),Promise.resolve(t.source(r)).then(i=>{s.context.aborted||(s.done=i||null,this.scheduleAccept())},i=>{this.view.dispatch({effects:J0.of(null)}),vi(this.view.state,i)})}scheduleAccept(){this.running.every(t=>t.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(bs).updateSyncTime))}accept(){var t;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],n=this.view.state.facet(bs),r=this.view.state.field(xi);for(let s=0;sl.source==i.active.source);if(a&&a.isPending)if(i.done==null){let l=new ba(i.active.source,0);for(let c of i.updates)l=l.update(c,n);l.isPending||e.push(l)}else this.startQuery(a)}(e.length||r.open&&r.open.disabled)&&this.view.dispatch({effects:M6.of(e)})}},{eventHandlers:{blur(t){let e=this.view.state.field(xi,!1);if(e&&e.tooltip&&this.view.state.facet(bs).closeOnBlur){let n=e.open&&Eq(this.view,e.open.tooltip);(!n||!n.dom.contains(t.relatedTarget))&&setTimeout(()=>this.view.dispatch({effects:J0.of(null)}),10)}},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:ay.of(!1)}),20),this.composing=0}}}),Uhe=typeof navigator=="object"&&/Win/.test(navigator.platform),Whe=ou.highest(Ze.domEventHandlers({keydown(t,e){let n=e.state.field(xi,!1);if(!n||!n.open||n.open.disabled||n.open.selected<0||t.key.length>1||t.ctrlKey&&!(Uhe&&t.altKey)||t.metaKey)return!1;let r=n.open.options[n.open.selected],s=n.active.find(a=>a.source==r.source),i=r.completion.commitCharacters||s.result.commitCharacters;return i&&i.indexOf(t.key)>-1&&R6(e,r),!1}})),nH=Ze.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li, & > completion-section":{padding:"1px 3px",lineHeight:1.2},"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer"},"& > completion-section":{display:"list-item",borderBottom:"1px solid silver",paddingLeft:"0.5em",opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"···"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"400px",boxSizing:"border-box",whiteSpace:"pre-line"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:"30px"},".cm-completionInfo.cm-completionInfo-right-narrow":{left:"30px"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'ƒ'"}},".cm-completionIcon-class":{"&:after":{content:"'○'"}},".cm-completionIcon-interface":{"&:after":{content:"'◌'"}},".cm-completionIcon-variable":{"&:after":{content:"'𝑥'"}},".cm-completionIcon-constant":{"&:after":{content:"'𝐶'"}},".cm-completionIcon-type":{"&:after":{content:"'𝑡'"}},".cm-completionIcon-enum":{"&:after":{content:"'∪'"}},".cm-completionIcon-property":{"&:after":{content:"'□'"}},".cm-completionIcon-keyword":{"&:after":{content:"'🔑︎'"}},".cm-completionIcon-namespace":{"&:after":{content:"'▢'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class Ghe{constructor(e,n,r,s){this.field=e,this.line=n,this.from=r,this.to=s}}class D6{constructor(e,n,r){this.field=e,this.from=n,this.to=r}map(e){let n=e.mapPos(this.from,-1,Ds.TrackDel),r=e.mapPos(this.to,1,Ds.TrackDel);return n==null||r==null?null:new D6(this.field,n,r)}}class P6{constructor(e,n){this.lines=e,this.fieldPositions=n}instantiate(e,n){let r=[],s=[n],i=e.doc.lineAt(n),a=/^\s*/.exec(i.text)[0];for(let c of this.lines){if(r.length){let d=a,h=/^\t*/.exec(c)[0].length;for(let m=0;mnew D6(c.field,s[c.line]+c.from,s[c.line]+c.to));return{text:r,ranges:l}}static parse(e){let n=[],r=[],s=[],i;for(let a of e.split(/\r\n?|\n/)){for(;i=/[#$]\{(?:(\d+)(?::([^{}]*))?|((?:\\[{}]|[^{}])*))\}/.exec(a);){let l=i[1]?+i[1]:null,c=i[2]||i[3]||"",d=-1,h=c.replace(/\\[{}]/g,m=>m[1]);for(let m=0;m=d&&g.field++}for(let m of s)if(m.line==r.length&&m.from>i.index){let g=i[2]?3+(i[1]||"").length:2;m.from-=g,m.to-=g}s.push(new Ghe(d,r.length,i.index,i.index+h.length)),a=a.slice(0,i.index)+c+a.slice(i.index+i[0].length)}a=a.replace(/\\([{}])/g,(l,c,d)=>{for(let h of s)h.line==r.length&&h.from>d&&(h.from--,h.to--);return c}),r.push(a)}return new P6(r,s)}}let Xhe=kt.widget({widget:new class extends Ho{toDOM(){let t=document.createElement("span");return t.className="cm-snippetFieldPosition",t}ignoreEvent(){return!1}}}),Yhe=kt.mark({class:"cm-snippetField"});class Ef{constructor(e,n){this.ranges=e,this.active=n,this.deco=kt.set(e.map(r=>(r.from==r.to?Xhe:Yhe).range(r.from,r.to)),!0)}map(e){let n=[];for(let r of this.ranges){let s=r.map(e);if(!s)return null;n.push(s)}return new Ef(n,this.active)}selectionInsideField(e){return e.ranges.every(n=>this.ranges.some(r=>r.field==this.active&&r.from<=n.from&&r.to>=n.to))}}const Zp=Ft.define({map(t,e){return t&&t.map(e)}}),Khe=Ft.define(),ep=Os.define({create(){return null},update(t,e){for(let n of e.effects){if(n.is(Zp))return n.value;if(n.is(Khe)&&t)return new Ef(t.ranges,n.value)}return t&&e.docChanged&&(t=t.map(e.changes)),t&&e.selection&&!t.selectionInsideField(e.selection)&&(t=null),t},provide:t=>Ze.decorations.from(t,e=>e?e.deco:kt.none)});function z6(t,e){return Me.create(t.filter(n=>n.field==e).map(n=>Me.range(n.from,n.to)))}function Zhe(t){let e=P6.parse(t);return(n,r,s,i)=>{let{text:a,ranges:l}=e.instantiate(n.state,s),{main:c}=n.state.selection,d={changes:{from:s,to:i==c.from?c.to:i,insert:jn.of(a)},scrollIntoView:!0,annotations:r?[A6.of(r),ns.userEvent.of("input.complete")]:void 0};if(l.length&&(d.selection=z6(l,0)),l.some(h=>h.field>0)){let h=new Ef(l,0),m=d.effects=[Zp.of(h)];n.state.field(ep,!1)===void 0&&m.push(Ft.appendConfig.of([ep,rfe,sfe,nH]))}n.dispatch(n.state.update(d))}}function rH(t){return({state:e,dispatch:n})=>{let r=e.field(ep,!1);if(!r||t<0&&r.active==0)return!1;let s=r.active+t,i=t>0&&!r.ranges.some(a=>a.field==s+t);return n(e.update({selection:z6(r.ranges,s),effects:Zp.of(i?null:new Ef(r.ranges,s)),scrollIntoView:!0})),!0}}const Jhe=({state:t,dispatch:e})=>t.field(ep,!1)?(e(t.update({effects:Zp.of(null)})),!0):!1,efe=rH(1),tfe=rH(-1),nfe=[{key:"Tab",run:efe,shift:tfe},{key:"Escape",run:Jhe}],$_=at.define({combine(t){return t.length?t[0]:nfe}}),rfe=ou.highest(Vp.compute([$_],t=>t.facet($_)));function vl(t,e){return{...e,apply:Zhe(t)}}const sfe=Ze.domEventHandlers({mousedown(t,e){let n=e.state.field(ep,!1),r;if(!n||(r=e.posAtCoords({x:t.clientX,y:t.clientY}))==null)return!1;let s=n.ranges.find(i=>i.from<=r&&i.to>=r);return!s||s.field==n.active?!1:(e.dispatch({selection:z6(n.ranges,s.field),effects:Zp.of(n.ranges.some(i=>i.field>s.field)?new Ef(n.ranges,s.field):null),scrollIntoView:!0}),!0)}}),tp={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},Vu=Ft.define({map(t,e){let n=e.mapPos(t,-1,Ds.TrackAfter);return n??void 0}}),I6=new class extends sd{};I6.startSide=1;I6.endSide=-1;const sH=Os.define({create(){return Rn.empty},update(t,e){if(t=t.map(e.changes),e.selection){let n=e.state.doc.lineAt(e.selection.main.head);t=t.update({filter:r=>r>=n.from&&r<=n.to})}for(let n of e.effects)n.is(Vu)&&(t=t.update({add:[I6.range(n.value,n.value+1)]}));return t}});function ife(){return[ofe,sH]}const sS="()[]{}<>«»»«[]{}";function iH(t){for(let e=0;e{if((afe?t.composing:t.compositionStarted)||t.state.readOnly)return!1;let s=t.state.selection.main;if(r.length>2||r.length==2&&wo(gi(r,0))==1||e!=s.from||n!=s.to)return!1;let i=ufe(t.state,r);return i?(t.dispatch(i),!0):!1}),lfe=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let r=aH(t,t.selection.main.head).brackets||tp.brackets,s=null,i=t.changeByRange(a=>{if(a.empty){let l=dfe(t.doc,a.head);for(let c of r)if(c==l&&bb(t.doc,a.head)==iH(gi(c,0)))return{changes:{from:a.head-c.length,to:a.head+c.length},range:Me.cursor(a.head-c.length)}}return{range:s=a}});return s||e(t.update(i,{scrollIntoView:!0,userEvent:"delete.backward"})),!s},cfe=[{key:"Backspace",run:lfe}];function ufe(t,e){let n=aH(t,t.selection.main.head),r=n.brackets||tp.brackets;for(let s of r){let i=iH(gi(s,0));if(e==s)return i==s?mfe(t,s,r.indexOf(s+s+s)>-1,n):hfe(t,s,i,n.before||tp.before);if(e==i&&oH(t,t.selection.main.from))return ffe(t,s,i)}return null}function oH(t,e){let n=!1;return t.field(sH).between(0,t.doc.length,r=>{r==e&&(n=!0)}),n}function bb(t,e){let n=t.sliceString(e,e+2);return n.slice(0,wo(gi(n,0)))}function dfe(t,e){let n=t.sliceString(e-2,e);return wo(gi(n,0))==n.length?n:n.slice(1)}function hfe(t,e,n,r){let s=null,i=t.changeByRange(a=>{if(!a.empty)return{changes:[{insert:e,from:a.from},{insert:n,from:a.to}],effects:Vu.of(a.to+e.length),range:Me.range(a.anchor+e.length,a.head+e.length)};let l=bb(t.doc,a.head);return!l||/\s/.test(l)||r.indexOf(l)>-1?{changes:{insert:e+n,from:a.head},effects:Vu.of(a.head+e.length),range:Me.cursor(a.head+e.length)}:{range:s=a}});return s?null:t.update(i,{scrollIntoView:!0,userEvent:"input.type"})}function ffe(t,e,n){let r=null,s=t.changeByRange(i=>i.empty&&bb(t.doc,i.head)==n?{changes:{from:i.head,to:i.head+n.length,insert:n},range:Me.cursor(i.head+n.length)}:r={range:i});return r?null:t.update(s,{scrollIntoView:!0,userEvent:"input.type"})}function mfe(t,e,n,r){let s=r.stringPrefixes||tp.stringPrefixes,i=null,a=t.changeByRange(l=>{if(!l.empty)return{changes:[{insert:e,from:l.from},{insert:e,from:l.to}],effects:Vu.of(l.to+e.length),range:Me.range(l.anchor+e.length,l.head+e.length)};let c=l.head,d=bb(t.doc,c),h;if(d==e){if(H_(t,c))return{changes:{insert:e+e,from:c},effects:Vu.of(c+e.length),range:Me.cursor(c+e.length)};if(oH(t,c)){let g=n&&t.sliceDoc(c,c+e.length*3)==e+e+e?e+e+e:e;return{changes:{from:c,to:c+g.length,insert:g},range:Me.cursor(c+g.length)}}}else{if(n&&t.sliceDoc(c-2*e.length,c)==e+e&&(h=Q_(t,c-2*e.length,s))>-1&&H_(t,h))return{changes:{insert:e+e+e+e,from:c},effects:Vu.of(c+e.length),range:Me.cursor(c+e.length)};if(t.charCategorizer(c)(d)!=wr.Word&&Q_(t,c,s)>-1&&!pfe(t,c,e,s))return{changes:{insert:e+e,from:c},effects:Vu.of(c+e.length),range:Me.cursor(c+e.length)}}return{range:i=l}});return i?null:t.update(a,{scrollIntoView:!0,userEvent:"input.type"})}function H_(t,e){let n=Ss(t).resolveInner(e+1);return n.parent&&n.from==e}function pfe(t,e,n,r){let s=Ss(t).resolveInner(e,-1),i=r.reduce((a,l)=>Math.max(a,l.length),0);for(let a=0;a<5;a++){let l=t.sliceDoc(s.from,Math.min(s.to,s.from+n.length+i)),c=l.indexOf(n);if(!c||c>-1&&r.indexOf(l.slice(0,c))>-1){let h=s.firstChild;for(;h&&h.from==s.from&&h.to-h.from>n.length+c;){if(t.sliceDoc(h.to-n.length,h.to)==n)return!1;h=h.firstChild}return!0}let d=s.to==e&&s.parent;if(!d)break;s=d}return!1}function Q_(t,e,n){let r=t.charCategorizer(e);if(r(t.sliceDoc(e-1,e))!=wr.Word)return e;for(let s of n){let i=e-s.length;if(t.sliceDoc(i,e)==s&&r(t.sliceDoc(i-1,i))!=wr.Word)return i}return-1}function gfe(t={}){return[Whe,xi,bs.of(t),Vhe,xfe,nH]}const lH=[{key:"Ctrl-Space",run:rS},{mac:"Alt-`",run:rS},{mac:"Alt-i",run:rS},{key:"Escape",run:qhe},{key:"ArrowDown",run:b1(!0)},{key:"ArrowUp",run:b1(!1)},{key:"PageDown",run:b1(!0,"page")},{key:"PageUp",run:b1(!1,"page")},{key:"Enter",run:Fhe}],xfe=ou.highest(Vp.computeN([bs],t=>t.facet(bs).defaultKeymap?[lH]:[]));class V_{constructor(e,n,r){this.from=e,this.to=n,this.diagnostic=r}}class qu{constructor(e,n,r){this.diagnostics=e,this.panel=n,this.selected=r}static init(e,n,r){let s=r.facet(np).markerFilter;s&&(e=s(e,r));let i=e.slice().sort((x,y)=>x.from-y.from||x.to-y.to),a=new ql,l=[],c=0,d=r.doc.iter(),h=0,m=r.doc.length;for(let x=0;;){let y=x==i.length?null:i[x];if(!y&&!l.length)break;let w,S;if(l.length)w=c,S=l.reduce((N,T)=>Math.min(N,T.to),y&&y.from>w?y.from:1e8);else{if(w=y.from,w>m)break;S=y.to,l.push(y),x++}for(;xN.from||N.to==w))l.push(N),x++,S=Math.min(N.to,S);else{S=Math.min(N.from,S);break}}S=Math.min(S,m);let k=!1;if(l.some(N=>N.from==w&&(N.to==S||S==m))&&(k=w==S,!k&&S-w<10)){let N=w-(h+d.value.length);N>0&&(d.next(N),h=w);for(let T=w;;){if(T>=S){k=!0;break}if(!d.lineBreak&&h+d.value.length>T)break;T=h+d.value.length,h+=d.value.length,d.next()}}let j=_fe(l);if(k)a.add(w,w,kt.widget({widget:new Nfe(j),diagnostics:l.slice()}));else{let N=l.reduce((T,E)=>E.markClass?T+" "+E.markClass:T,"");a.add(w,S,kt.mark({class:"cm-lintRange cm-lintRange-"+j+N,diagnostics:l.slice(),inclusiveEnd:l.some(T=>T.to>S)}))}if(c=S,c==m)break;for(let N=0;N{if(!(e&&a.diagnostics.indexOf(e)<0))if(!r)r=new V_(s,i,e||a.diagnostics[0]);else{if(a.diagnostics.indexOf(r.diagnostic)<0)return!1;r=new V_(r.from,i,r.diagnostic)}}),r}function vfe(t,e){let n=e.pos,r=e.end||n,s=t.state.facet(np).hideOn(t,n,r);if(s!=null)return s;let i=t.startState.doc.lineAt(e.pos);return!!(t.effects.some(a=>a.is(cH))||t.changes.touchesRange(i.from,Math.max(i.to,r)))}function yfe(t,e){return t.field(Vi,!1)?e:e.concat(Ft.appendConfig.of(Afe))}const cH=Ft.define(),L6=Ft.define(),uH=Ft.define(),Vi=Os.define({create(){return new qu(kt.none,null,null)},update(t,e){if(e.docChanged&&t.diagnostics.size){let n=t.diagnostics.map(e.changes),r=null,s=t.panel;if(t.selected){let i=e.changes.mapPos(t.selected.from,1);r=of(n,t.selected.diagnostic,i)||of(n,null,i)}!n.size&&s&&e.state.facet(np).autoPanel&&(s=null),t=new qu(n,s,r)}for(let n of e.effects)if(n.is(cH)){let r=e.state.facet(np).autoPanel?n.value.length?rp.open:null:t.panel;t=qu.init(n.value,r,e.state)}else n.is(L6)?t=new qu(t.diagnostics,n.value?rp.open:null,t.selected):n.is(uH)&&(t=new qu(t.diagnostics,t.panel,n.value));return t},provide:t=>[U0.from(t,e=>e.panel),Ze.decorations.from(t,e=>e.diagnostics)]}),bfe=kt.mark({class:"cm-lintRange cm-lintRange-active"});function wfe(t,e,n){let{diagnostics:r}=t.state.field(Vi),s,i=-1,a=-1;r.between(e-(n<0?1:0),e+(n>0?1:0),(c,d,{spec:h})=>{if(e>=c&&e<=d&&(c==d||(e>c||n>0)&&(ehH(t,n,!1)))}const kfe=t=>{let e=t.state.field(Vi,!1);(!e||!e.panel)&&t.dispatch({effects:yfe(t.state,[L6.of(!0)])});let n=V0(t,rp.open);return n&&n.dom.querySelector(".cm-panel-lint ul").focus(),!0},U_=t=>{let e=t.state.field(Vi,!1);return!e||!e.panel?!1:(t.dispatch({effects:L6.of(!1)}),!0)},Ofe=t=>{let e=t.state.field(Vi,!1);if(!e)return!1;let n=t.state.selection.main,r=e.diagnostics.iter(n.to+1);return!r.value&&(r=e.diagnostics.iter(0),!r.value||r.from==n.from&&r.to==n.to)?!1:(t.dispatch({selection:{anchor:r.from,head:r.to},scrollIntoView:!0}),!0)},jfe=[{key:"Mod-Shift-m",run:kfe,preventDefault:!0},{key:"F8",run:Ofe}],np=at.define({combine(t){return{sources:t.map(e=>e.source).filter(e=>e!=null),...$o(t.map(e=>e.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null,hideOn:()=>null},{delay:Math.max,markerFilter:W_,tooltipFilter:W_,needsRefresh:(e,n)=>e?n?r=>e(r)||n(r):e:n,hideOn:(e,n)=>e?n?(r,s,i)=>e(r,s,i)||n(r,s,i):e:n,autoPanel:(e,n)=>e||n})}}});function W_(t,e){return t?e?(n,r)=>e(t(n,r),r):t:e}function dH(t){let e=[];if(t)e:for(let{name:n}of t){for(let r=0;ri.toLowerCase()==s.toLowerCase())){e.push(s);continue e}}e.push("")}return e}function hH(t,e,n){var r;let s=n?dH(e.actions):[];return sr("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},sr("span",{class:"cm-diagnosticText"},e.renderMessage?e.renderMessage(t):e.message),(r=e.actions)===null||r===void 0?void 0:r.map((i,a)=>{let l=!1,c=x=>{if(x.preventDefault(),l)return;l=!0;let y=of(t.state.field(Vi).diagnostics,e);y&&i.apply(t,y.from,y.to)},{name:d}=i,h=s[a]?d.indexOf(s[a]):-1,m=h<0?d:[d.slice(0,h),sr("u",d.slice(h,h+1)),d.slice(h+1)],g=i.markClass?" "+i.markClass:"";return sr("button",{type:"button",class:"cm-diagnosticAction"+g,onclick:c,onmousedown:c,"aria-label":` Action: ${d}${h<0?"":` (access key "${s[a]})"`}.`},m)}),e.source&&sr("div",{class:"cm-diagnosticSource"},e.source))}class Nfe extends Ho{constructor(e){super(),this.sev=e}eq(e){return e.sev==this.sev}toDOM(){return sr("span",{class:"cm-lintPoint cm-lintPoint-"+this.sev})}}class G_{constructor(e,n){this.diagnostic=n,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=hH(e,n,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class rp{constructor(e){this.view=e,this.items=[];let n=s=>{if(s.keyCode==27)U_(this.view),this.view.focus();else if(s.keyCode==38||s.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(s.keyCode==40||s.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(s.keyCode==36)this.moveSelection(0);else if(s.keyCode==35)this.moveSelection(this.items.length-1);else if(s.keyCode==13)this.view.focus();else if(s.keyCode>=65&&s.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:i}=this.items[this.selectedIndex],a=dH(i.actions);for(let l=0;l{for(let i=0;iU_(this.view)},"×")),this.update()}get selectedIndex(){let e=this.view.state.field(Vi).selected;if(!e)return-1;for(let n=0;n{for(let h of d.diagnostics){if(a.has(h))continue;a.add(h);let m=-1,g;for(let x=r;xr&&(this.items.splice(r,m-r),s=!0)),n&&g.diagnostic==n.diagnostic?g.dom.hasAttribute("aria-selected")||(g.dom.setAttribute("aria-selected","true"),i=g):g.dom.hasAttribute("aria-selected")&&g.dom.removeAttribute("aria-selected"),r++}});r({sel:i.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:l,panel:c})=>{let d=c.height/this.list.offsetHeight;l.topc.bottom&&(this.list.scrollTop+=(l.bottom-c.bottom)/d)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),s&&this.sync()}sync(){let e=this.list.firstChild;function n(){let r=e;e=r.nextSibling,r.remove()}for(let r of this.items)if(r.dom.parentNode==this.list){for(;e!=r.dom;)n();e=r.dom.nextSibling}else this.list.insertBefore(r.dom,e);for(;e;)n()}moveSelection(e){if(this.selectedIndex<0)return;let n=this.view.state.field(Vi),r=of(n.diagnostics,this.items[e].diagnostic);r&&this.view.dispatch({selection:{anchor:r.from,head:r.to},scrollIntoView:!0,effects:uH.of(r)})}static open(e){return new rp(e)}}function Cfe(t,e='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,${encodeURIComponent(t)}')`}function w1(t){return Cfe(``,'width="6" height="3"')}const Tfe=Ze.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnostic-hint":{borderLeft:"5px solid #66d"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px",cursor:"pointer"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:w1("#d11")},".cm-lintRange-warning":{backgroundImage:w1("orange")},".cm-lintRange-info":{backgroundImage:w1("#999")},".cm-lintRange-hint":{backgroundImage:w1("#66d")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-lintPoint-hint":{"&:after":{borderBottomColor:"#66d"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}}});function Efe(t){return t=="error"?4:t=="warning"?3:t=="info"?2:1}function _fe(t){let e="hint",n=1;for(let r of t){let s=Efe(r.severity);s>n&&(n=s,e=r.severity)}return e}const Afe=[Vi,Ze.decorations.compute([Vi],t=>{let{selected:e,panel:n}=t.field(Vi);return!e||!n||e.from==e.to?kt.none:kt.set([bfe.range(e.from,e.to)])}),hce(wfe,{hideOn:vfe}),Tfe];var X_=function(e){e===void 0&&(e={});var{crosshairCursor:n=!1}=e,r=[];e.closeBracketsKeymap!==!1&&(r=r.concat(cfe)),e.defaultKeymap!==!1&&(r=r.concat(Ude)),e.searchKeymap!==!1&&(r=r.concat(vhe)),e.historyKeymap!==!1&&(r=r.concat(Jue)),e.foldKeymap!==!1&&(r=r.concat(cue)),e.completionKeymap!==!1&&(r=r.concat(lH)),e.lintKeymap!==!1&&(r=r.concat(jfe));var s=[];return e.lineNumbers!==!1&&s.push(kce()),e.highlightActiveLineGutter!==!1&&s.push(Nce()),e.highlightSpecialChars!==!1&&s.push(qle()),e.history!==!1&&s.push(Que()),e.foldGutter!==!1&&s.push(fue()),e.drawSelection!==!1&&s.push(_le()),e.dropCursor!==!1&&s.push(Ple()),e.allowMultipleSelections!==!1&&s.push(wn.allowMultipleSelections.of(!0)),e.indentOnInput!==!1&&s.push(eue()),e.syntaxHighlighting!==!1&&s.push(Jq(xue,{fallback:!0})),e.bracketMatching!==!1&&s.push(Oue()),e.closeBrackets!==!1&&s.push(ife()),e.autocompletion!==!1&&s.push(gfe()),e.rectangularSelection!==!1&&s.push(tce()),n!==!1&&s.push(sce()),e.highlightActiveLine!==!1&&s.push(Wle()),e.highlightSelectionMatches!==!1&&s.push(Jde()),e.tabSize&&typeof e.tabSize=="number"&&s.push(Wp.of(" ".repeat(e.tabSize))),s.concat([Vp.of(r.flat())]).filter(Boolean)};const Mfe="#e5c07b",Y_="#e06c75",Rfe="#56b6c2",Dfe="#ffffff",pv="#abb2bf",fO="#7d8799",Pfe="#61afef",zfe="#98c379",K_="#d19a66",Ife="#c678dd",Lfe="#21252b",Z_="#2c313a",J_="#282c34",iS="#353a42",Bfe="#3E4451",eA="#528bff",Ffe=Ze.theme({"&":{color:pv,backgroundColor:J_},".cm-content":{caretColor:eA},".cm-cursor, .cm-dropCursor":{borderLeftColor:eA},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:Bfe},".cm-panels":{backgroundColor:Lfe,color:pv},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:J_,color:fO,border:"none"},".cm-activeLineGutter":{backgroundColor:Z_},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:iS},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:iS,borderBottomColor:iS},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Z_,color:pv}}},{dark:!0}),qfe=Xp.define([{tag:ve.keyword,color:Ife},{tag:[ve.name,ve.deleted,ve.character,ve.propertyName,ve.macroName],color:Y_},{tag:[ve.function(ve.variableName),ve.labelName],color:Pfe},{tag:[ve.color,ve.constant(ve.name),ve.standard(ve.name)],color:K_},{tag:[ve.definition(ve.name),ve.separator],color:pv},{tag:[ve.typeName,ve.className,ve.number,ve.changed,ve.annotation,ve.modifier,ve.self,ve.namespace],color:Mfe},{tag:[ve.operator,ve.operatorKeyword,ve.url,ve.escape,ve.regexp,ve.link,ve.special(ve.string)],color:Rfe},{tag:[ve.meta,ve.comment],color:fO},{tag:ve.strong,fontWeight:"bold"},{tag:ve.emphasis,fontStyle:"italic"},{tag:ve.strikethrough,textDecoration:"line-through"},{tag:ve.link,color:fO,textDecoration:"underline"},{tag:ve.heading,fontWeight:"bold",color:Y_},{tag:[ve.atom,ve.bool,ve.special(ve.variableName)],color:K_},{tag:[ve.processingInstruction,ve.string,ve.inserted],color:zfe},{tag:ve.invalid,color:Dfe}]),fH=[Ffe,Jq(qfe)];var $fe=Ze.theme({"&":{backgroundColor:"#fff"}},{dark:!1}),Hfe=function(e){e===void 0&&(e={});var{indentWithTab:n=!0,editable:r=!0,readOnly:s=!1,theme:i="light",placeholder:a="",basicSetup:l=!0}=e,c=[];switch(n&&c.unshift(Vp.of([Wde])),l&&(typeof l=="boolean"?c.unshift(X_()):c.unshift(X_(l))),a&&c.unshift(Kle(a)),i){case"light":c.push($fe);break;case"dark":c.push(fH);break;case"none":break;default:c.push(i);break}return r===!1&&c.push(Ze.editable.of(!1)),s&&c.push(wn.readOnly.of(!0)),[...c]},Qfe=t=>({line:t.state.doc.lineAt(t.state.selection.main.from),lineCount:t.state.doc.lines,lineBreak:t.state.lineBreak,length:t.state.doc.length,readOnly:t.state.readOnly,tabSize:t.state.tabSize,selection:t.state.selection,selectionAsSingle:t.state.selection.asSingle().main,ranges:t.state.selection.ranges,selectionCode:t.state.sliceDoc(t.state.selection.main.from,t.state.selection.main.to),selections:t.state.selection.ranges.map(e=>t.state.sliceDoc(e.from,e.to)),selectedText:t.state.selection.ranges.some(e=>!e.empty)});class Vfe{constructor(e,n){this.timeLeftMS=void 0,this.timeoutMS=void 0,this.isCancelled=!1,this.isTimeExhausted=!1,this.callbacks=[],this.timeLeftMS=n,this.timeoutMS=n,this.callbacks.push(e)}tick(){if(!this.isCancelled&&!this.isTimeExhausted&&(this.timeLeftMS--,this.timeLeftMS<=0)){this.isTimeExhausted=!0;var e=this.callbacks.slice();this.callbacks.length=0,e.forEach(n=>{try{n()}catch(r){console.error("TimeoutLatch callback error:",r)}})}}cancel(){this.isCancelled=!0,this.callbacks.length=0}reset(){this.timeLeftMS=this.timeoutMS,this.isCancelled=!1,this.isTimeExhausted=!1}get isDone(){return this.isCancelled||this.isTimeExhausted}}class tA{constructor(){this.interval=null,this.latches=new Set}add(e){this.latches.add(e),this.start()}remove(e){this.latches.delete(e),this.latches.size===0&&this.stop()}start(){this.interval===null&&(this.interval=setInterval(()=>{this.latches.forEach(e=>{e.tick(),e.isDone&&this.remove(e)})},1))}stop(){this.interval!==null&&(clearInterval(this.interval),this.interval=null)}}var aS=null,Ufe=()=>typeof window>"u"?new tA:(aS||(aS=new tA),aS),nA=qo.define(),Wfe=200,Gfe=[];function Xfe(t){var{value:e,selection:n,onChange:r,onStatistics:s,onCreateEditor:i,onUpdate:a,extensions:l=Gfe,autoFocus:c,theme:d="light",height:h=null,minHeight:m=null,maxHeight:g=null,width:x=null,minWidth:y=null,maxWidth:w=null,placeholder:S="",editable:k=!0,readOnly:j=!1,indentWithTab:N=!0,basicSetup:T=!0,root:E,initialState:_}=t,[A,L]=b.useState(),[P,B]=b.useState(),[$,U]=b.useState(),te=b.useState(()=>({current:null}))[0],z=b.useState(()=>({current:null}))[0],Q=Ze.theme({"&":{height:h,minHeight:m,maxHeight:g,width:x,minWidth:y,maxWidth:w},"& .cm-scroller":{height:"100% !important"}}),F=Ze.updateListener.of(X=>{if(X.docChanged&&typeof r=="function"&&!X.transactions.some(G=>G.annotation(nA))){te.current?te.current.reset():(te.current=new Vfe(()=>{if(z.current){var G=z.current;z.current=null,G()}te.current=null},Wfe),Ufe().add(te.current));var R=X.state.doc,ie=R.toString();r(ie,X)}s&&s(Qfe(X))}),Y=Hfe({theme:d,editable:k,readOnly:j,placeholder:S,indentWithTab:N,basicSetup:T}),J=[F,Q,...Y];return a&&typeof a=="function"&&J.push(Ze.updateListener.of(a)),J=J.concat(l),b.useLayoutEffect(()=>{if(A&&!$){var X={doc:e,selection:n,extensions:J},R=_?wn.fromJSON(_.json,X,_.fields):wn.create(X);if(U(R),!P){var ie=new Ze({state:R,parent:A,root:E});B(ie),i&&i(ie,R)}}return()=>{P&&(U(void 0),B(void 0))}},[A,$]),b.useEffect(()=>{t.container&&L(t.container)},[t.container]),b.useEffect(()=>()=>{P&&(P.destroy(),B(void 0)),te.current&&(te.current.cancel(),te.current=null)},[P]),b.useEffect(()=>{c&&P&&P.focus()},[c,P]),b.useEffect(()=>{P&&P.dispatch({effects:Ft.reconfigure.of(J)})},[d,l,h,m,g,x,y,w,S,k,j,N,T,r,a]),b.useEffect(()=>{if(e!==void 0){var X=P?P.state.doc.toString():"";if(P&&e!==X){var R=te.current&&!te.current.isDone,ie=()=>{P&&e!==P.state.doc.toString()&&P.dispatch({changes:{from:0,to:P.state.doc.toString().length,insert:e||""},annotations:[nA.of(!0)]})};R?z.current=ie:ie()}}},[e,P]),{state:$,setState:U,view:P,setView:B,container:A,setContainer:L}}var Yfe=["className","value","selection","extensions","onChange","onStatistics","onCreateEditor","onUpdate","autoFocus","theme","height","minHeight","maxHeight","width","minWidth","maxWidth","basicSetup","placeholder","indentWithTab","editable","readOnly","root","initialState"],mH=b.forwardRef((t,e)=>{var{className:n,value:r="",selection:s,extensions:i=[],onChange:a,onStatistics:l,onCreateEditor:c,onUpdate:d,autoFocus:h,theme:m="light",height:g,minHeight:x,maxHeight:y,width:w,minWidth:S,maxWidth:k,basicSetup:j,placeholder:N,indentWithTab:T,editable:E,readOnly:_,root:A,initialState:L}=t,P=RJ(t,Yfe),B=b.useRef(null),{state:$,view:U,container:te,setContainer:z}=Xfe({root:A,value:r,autoFocus:h,theme:m,height:g,minHeight:x,maxHeight:y,width:w,minWidth:S,maxWidth:k,basicSetup:j,placeholder:N,indentWithTab:T,editable:E,readOnly:_,selection:s,onChange:a,onStatistics:l,onCreateEditor:c,onUpdate:d,extensions:i,initialState:L});b.useImperativeHandle(e,()=>({editor:B.current,state:$,view:U}),[B,te,$,U]);var Q=b.useCallback(Y=>{B.current=Y,z(Y)},[z]);if(typeof r!="string")throw new Error("value must be typeof string but got "+typeof r);var F=typeof m=="string"?"cm-theme-"+m:"cm-theme";return o.jsx("div",DJ({ref:Q,className:""+F+(n?" "+n:"")},P))});mH.displayName="CodeMirror";var rA={};class ly{constructor(e,n,r,s,i,a,l,c,d,h=0,m){this.p=e,this.stack=n,this.state=r,this.reducePos=s,this.pos=i,this.score=a,this.buffer=l,this.bufferBase=c,this.curContext=d,this.lookAhead=h,this.parent=m}toString(){return`[${this.stack.filter((e,n)=>n%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,n,r=0){let s=e.parser.context;return new ly(e,[],n,r,r,0,[],0,s?new sA(s,s.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,n){this.stack.push(this.state,n,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var n;let r=e>>19,s=e&65535,{parser:i}=this.p,a=this.reducePos=2e3&&!(!((n=this.p.parser.nodeSet.types[s])===null||n===void 0)&&n.isAnonymous)&&(d==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=h):this.p.lastBigReductionSizec;)this.stack.pop();this.reduceContext(s,d)}storeNode(e,n,r,s=4,i=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]0&&a.buffer[l-4]==0&&a.buffer[l-1]>-1){if(n==r)return;if(a.buffer[l-2]>=n){a.buffer[l-2]=r;return}}}if(!i||this.pos==r)this.buffer.push(e,n,r,s);else{let a=this.buffer.length;if(a>0&&(this.buffer[a-4]!=0||this.buffer[a-1]<0)){let l=!1;for(let c=a;c>0&&this.buffer[c-2]>r;c-=4)if(this.buffer[c-1]>=0){l=!0;break}if(l)for(;a>0&&this.buffer[a-2]>r;)this.buffer[a]=this.buffer[a-4],this.buffer[a+1]=this.buffer[a-3],this.buffer[a+2]=this.buffer[a-2],this.buffer[a+3]=this.buffer[a-1],a-=4,s>4&&(s-=4)}this.buffer[a]=e,this.buffer[a+1]=n,this.buffer[a+2]=r,this.buffer[a+3]=s}}shift(e,n,r,s){if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let i=e,{parser:a}=this.p;(s>this.pos||n<=a.maxNode)&&(this.pos=s,a.stateFlag(i,1)||(this.reducePos=s)),this.pushState(i,r),this.shiftContext(n,r),n<=a.maxNode&&this.buffer.push(n,r,s,4)}else this.pos=s,this.shiftContext(n,r),n<=this.p.parser.maxNode&&this.buffer.push(n,r,s,4)}apply(e,n,r,s){e&65536?this.reduce(e):this.shift(e,n,r,s)}useNode(e,n){let r=this.p.reused.length-1;(r<0||this.p.reused[r]!=e)&&(this.p.reused.push(e),r++);let s=this.pos;this.reducePos=this.pos=s+e.length,this.pushState(n,s),this.buffer.push(r,s,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,n=e.buffer.length;for(;n>0&&e.buffer[n-2]>e.reducePos;)n-=4;let r=e.buffer.slice(n),s=e.bufferBase+n;for(;e&&s==e.bufferBase;)e=e.parent;return new ly(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,r,s,this.curContext,this.lookAhead,e)}recoverByDelete(e,n){let r=e<=this.p.parser.maxNode;r&&this.storeNode(e,this.pos,n,4),this.storeNode(0,this.pos,n,r?8:4),this.pos=this.reducePos=n,this.score-=190}canShift(e){for(let n=new Kfe(this);;){let r=this.p.parser.stateSlot(n.state,4)||this.p.parser.hasAction(n.state,e);if(r==0)return!1;if((r&65536)==0)return!0;n.reduce(r)}}recoverByInsert(e){if(this.stack.length>=300)return[];let n=this.p.parser.nextStates(this.state);if(n.length>8||this.stack.length>=120){let s=[];for(let i=0,a;ic&1&&l==a)||s.push(n[i],a)}n=s}let r=[];for(let s=0;s>19,s=n&65535,i=this.stack.length-r*3;if(i<0||e.getGoto(this.stack[i],s,!1)<0){let a=this.findForcedReduction();if(a==null)return!1;n=a}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(n),!0}findForcedReduction(){let{parser:e}=this.p,n=[],r=(s,i)=>{if(!n.includes(s))return n.push(s),e.allActions(s,a=>{if(!(a&393216))if(a&65536){let l=(a>>19)-i;if(l>1){let c=a&65535,d=this.stack.length-l*3;if(d>=0&&e.getGoto(this.stack[d],c,!1)>=0)return l<<19|65536|c}}else{let l=r(a,i+1);if(l!=null)return l}})};return r(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let n=0;nthis.lookAhead&&(this.emitLookAhead(),this.lookAhead=e)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}}class sA{constructor(e,n){this.tracker=e,this.context=n,this.hash=e.strict?e.hash(n):0}}class Kfe{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let n=e&65535,r=e>>19;r==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(r-1)*3;let s=this.start.p.parser.getGoto(this.stack[this.base-3],n,!0);this.state=s}}class cy{constructor(e,n,r){this.stack=e,this.pos=n,this.index=r,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,n=e.bufferBase+e.buffer.length){return new cy(e,n,n-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new cy(this.stack,this.pos,this.index)}}function S1(t,e=Uint16Array){if(typeof t!="string")return t;let n=null;for(let r=0,s=0;r=92&&a--,a>=34&&a--;let c=a-32;if(c>=46&&(c-=46,l=!0),i+=c,l)break;i*=46}n?n[s++]=i:n=new e(i)}return n}class gv{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const iA=new gv;class Zfe{constructor(e,n){this.input=e,this.ranges=n,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=iA,this.rangeIndex=0,this.pos=this.chunkPos=n[0].from,this.range=n[0],this.end=n[n.length-1].to,this.readNext()}resolveOffset(e,n){let r=this.range,s=this.rangeIndex,i=this.pos+e;for(;ir.to:i>=r.to;){if(s==this.ranges.length-1)return null;let a=this.ranges[++s];i+=a.from-r.to,r=a}return i}clipPos(e){if(e>=this.range.from&&ee)return Math.max(e,n.from);return this.end}peek(e){let n=this.chunkOff+e,r,s;if(n>=0&&n=this.chunk2Pos&&rl.to&&(this.chunk2=this.chunk2.slice(0,l.to-r)),s=this.chunk2.charCodeAt(0)}}return r>=this.token.lookAhead&&(this.token.lookAhead=r+1),s}acceptToken(e,n=0){let r=n?this.resolveOffset(n,-1):this.pos;if(r==null||r=this.chunk2Pos&&this.posthis.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,n){if(n?(this.token=n,n.start=e,n.lookAhead=e+1,n.value=n.extended=-1):this.token=iA,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e=this.chunkPos&&n<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,n-this.chunkPos);if(e>=this.chunk2Pos&&n<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,n-this.chunk2Pos);if(e>=this.range.from&&n<=this.range.to)return this.input.read(e,n);let r="";for(let s of this.ranges){if(s.from>=n)break;s.to>e&&(r+=this.input.read(Math.max(s.from,e),Math.min(s.to,n)))}return r}}class Bh{constructor(e,n){this.data=e,this.id=n}token(e,n){let{parser:r}=n.p;Jfe(this.data,e,n,this.id,r.data,r.tokenPrecTable)}}Bh.prototype.contextual=Bh.prototype.fallback=Bh.prototype.extend=!1;Bh.prototype.fallback=Bh.prototype.extend=!1;class wb{constructor(e,n={}){this.token=e,this.contextual=!!n.contextual,this.fallback=!!n.fallback,this.extend=!!n.extend}}function Jfe(t,e,n,r,s,i){let a=0,l=1<0){let y=t[x];if(c.allows(y)&&(e.token.value==-1||e.token.value==y||eme(y,e.token.value,s,i))){e.acceptToken(y);break}}let h=e.next,m=0,g=t[a+2];if(e.next<0&&g>m&&t[d+g*3-3]==65535){a=t[d+g*3-1];continue e}for(;m>1,y=d+x+(x<<1),w=t[y],S=t[y+1]||65536;if(h=S)m=x+1;else{a=t[y+2],e.advance();continue e}}break}}function aA(t,e,n){for(let r=e,s;(s=t[r])!=65535;r++)if(s==n)return r-e;return-1}function eme(t,e,n,r){let s=aA(n,r,e);return s<0||aA(n,r,t)e)&&!r.type.isError)return n<0?Math.max(0,Math.min(r.to-1,e-25)):Math.min(t.length,Math.max(r.from+1,e+25));if(n<0?r.prevSibling():r.nextSibling())break;if(!r.parent())return n<0?0:t.length}}class tme{constructor(e,n){this.fragments=e,this.nodeSet=n,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?oA(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?oA(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(ee)return this.nextStart=a,null;if(i instanceof ar){if(a==e){if(a=Math.max(this.safeFrom,e)&&(this.trees.push(i),this.start.push(a),this.index.push(0))}else this.index[n]++,this.nextStart=a+i.length}}}class nme{constructor(e,n){this.stream=n,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(r=>new gv)}getActions(e){let n=0,r=null,{parser:s}=e.p,{tokenizers:i}=s,a=s.stateSlot(e.state,3),l=e.curContext?e.curContext.hash:0,c=0;for(let d=0;dm.end+25&&(c=Math.max(m.lookAhead,c)),m.value!=0)){let g=n;if(m.extended>-1&&(n=this.addActions(e,m.extended,m.end,n)),n=this.addActions(e,m.value,m.end,n),!h.extend&&(r=m,n>g))break}}for(;this.actions.length>n;)this.actions.pop();return c&&e.setLookAhead(c),!r&&e.pos==this.stream.end&&(r=new gv,r.value=e.p.parser.eofTerm,r.start=r.end=e.pos,n=this.addActions(e,r.value,r.end,n)),this.mainToken=r,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let n=new gv,{pos:r,p:s}=e;return n.start=r,n.end=Math.min(r+1,s.stream.end),n.value=r==s.stream.end?s.parser.eofTerm:0,n}updateCachedToken(e,n,r){let s=this.stream.clipPos(r.pos);if(n.token(this.stream.reset(s,e),r),e.value>-1){let{parser:i}=r.p;for(let a=0;a=0&&r.p.parser.dialect.allows(l>>1)){(l&1)==0?e.value=l>>1:e.extended=l>>1;break}}}else e.value=0,e.end=this.stream.clipPos(s+1)}putAction(e,n,r,s){for(let i=0;ie.bufferLength*4?new tme(r,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,n=this.minStackPos,r=this.stacks=[],s,i;if(this.bigReductionCount>300&&e.length==1){let[a]=e;for(;a.forceReduce()&&a.stack.length&&a.stack[a.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let a=0;an)r.push(l);else{if(this.advanceStack(l,r,e))continue;{s||(s=[],i=[]),s.push(l);let c=this.tokens.getMainToken(l);i.push(c.value,c.end)}}break}}if(!r.length){let a=s&&ame(s);if(a)return Bi&&console.log("Finish with "+this.stackID(a)),this.stackToTree(a);if(this.parser.strict)throw Bi&&s&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+n);this.recovering||(this.recovering=5)}if(this.recovering&&s){let a=this.stoppedAt!=null&&s[0].pos>this.stoppedAt?s[0]:this.runRecovery(s,i,r);if(a)return Bi&&console.log("Force-finish "+this.stackID(a)),this.stackToTree(a.forceAll())}if(this.recovering){let a=this.recovering==1?1:this.recovering*3;if(r.length>a)for(r.sort((l,c)=>c.score-l.score);r.length>a;)r.pop();r.some(l=>l.reducePos>n)&&this.recovering--}else if(r.length>1){e:for(let a=0;a500&&d.buffer.length>500)if((l.score-d.score||l.buffer.length-d.buffer.length)>0)r.splice(c--,1);else{r.splice(a--,1);continue e}}}r.length>12&&r.splice(12,r.length-12)}this.minStackPos=r[0].pos;for(let a=1;a ":"";if(this.stoppedAt!=null&&s>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let d=e.curContext&&e.curContext.tracker.strict,h=d?e.curContext.hash:0;for(let m=this.fragments.nodeAt(s);m;){let g=this.parser.nodeSet.types[m.type.id]==m.type?i.getGoto(e.state,m.type.id):-1;if(g>-1&&m.length&&(!d||(m.prop(sn.contextHash)||0)==h))return e.useNode(m,g),Bi&&console.log(a+this.stackID(e)+` (via reuse of ${i.getName(m.type.id)})`),!0;if(!(m instanceof ar)||m.children.length==0||m.positions[0]>0)break;let x=m.children[0];if(x instanceof ar&&m.positions[0]==0)m=x;else break}}let l=i.stateSlot(e.state,4);if(l>0)return e.reduce(l),Bi&&console.log(a+this.stackID(e)+` (via always-reduce ${i.getName(l&65535)})`),!0;if(e.stack.length>=8400)for(;e.stack.length>6e3&&e.forceReduce(););let c=this.tokens.getActions(e);for(let d=0;ds?n.push(y):r.push(y)}return!1}advanceFully(e,n){let r=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>r)return lA(e,n),!0}}runRecovery(e,n,r){let s=null,i=!1;for(let a=0;a ":"";if(l.deadEnd&&(i||(i=!0,l.restart(),Bi&&console.log(h+this.stackID(l)+" (restarted)"),this.advanceFully(l,r))))continue;let m=l.split(),g=h;for(let x=0;x<10&&m.forceReduce()&&(Bi&&console.log(g+this.stackID(m)+" (via force-reduce)"),!this.advanceFully(m,r));x++)Bi&&(g=this.stackID(m)+" -> ");for(let x of l.recoverByInsert(c))Bi&&console.log(h+this.stackID(x)+" (via recover-insert)"),this.advanceFully(x,r);this.stream.end>l.pos?(d==l.pos&&(d++,c=0),l.recoverByDelete(c,d),Bi&&console.log(h+this.stackID(l)+` (via recover-delete ${this.parser.getName(c)})`),lA(l,r)):(!s||s.scoret;class ime{constructor(e){this.start=e.start,this.shift=e.shift||lS,this.reduce=e.reduce||lS,this.reuse=e.reuse||lS,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}}class sp extends g6{constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (14)`);let n=e.nodeNames.split(" ");this.minRepeatTerm=n.length;for(let l=0;le.topRules[l][1]),s=[];for(let l=0;l=0)i(h,c,l[d++]);else{let m=l[d+-h];for(let g=-h;g>0;g--)i(l[d++],c,m);d++}}}this.nodeSet=new hb(n.map((l,c)=>si.define({name:c>=this.minRepeatTerm?void 0:l,id:c,props:s[c],top:r.indexOf(c)>-1,error:c==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(c)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=Rq;let a=S1(e.tokenData);this.context=e.context,this.specializerSpecs=e.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let l=0;ltypeof l=="number"?new Bh(a,l):l),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,n,r){let s=new rme(this,e,n,r);for(let i of this.wrappers)s=i(s,e,n,r);return s}getGoto(e,n,r=!1){let s=this.goto;if(n>=s[0])return-1;for(let i=s[n+1];;){let a=s[i++],l=a&1,c=s[i++];if(l&&r)return c;for(let d=i+(a>>1);i0}validAction(e,n){return!!this.allActions(e,r=>r==n?!0:null)}allActions(e,n){let r=this.stateSlot(e,4),s=r?n(r):void 0;for(let i=this.stateSlot(e,1);s==null;i+=3){if(this.data[i]==65535)if(this.data[i+1]==1)i=Cl(this.data,i+2);else break;s=n(Cl(this.data,i+1))}return s}nextStates(e){let n=[];for(let r=this.stateSlot(e,1);;r+=3){if(this.data[r]==65535)if(this.data[r+1]==1)r=Cl(this.data,r+2);else break;if((this.data[r+2]&1)==0){let s=this.data[r+1];n.some((i,a)=>a&1&&i==s)||n.push(this.data[r],s)}}return n}configure(e){let n=Object.assign(Object.create(sp.prototype),this);if(e.props&&(n.nodeSet=this.nodeSet.extend(...e.props)),e.top){let r=this.topRules[e.top];if(!r)throw new RangeError(`Invalid top rule name ${e.top}`);n.top=r}return e.tokenizers&&(n.tokenizers=this.tokenizers.map(r=>{let s=e.tokenizers.find(i=>i.from==r);return s?s.to:r})),e.specializers&&(n.specializers=this.specializers.slice(),n.specializerSpecs=this.specializerSpecs.map((r,s)=>{let i=e.specializers.find(l=>l.from==r.external);if(!i)return r;let a=Object.assign(Object.assign({},r),{external:i.to});return n.specializers[s]=cA(a),a})),e.contextTracker&&(n.context=e.contextTracker),e.dialect&&(n.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(n.strict=e.strict),e.wrap&&(n.wrappers=n.wrappers.concat(e.wrap)),e.bufferLength!=null&&(n.bufferLength=e.bufferLength),n}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let n=this.dynamicPrecedences;return n==null?0:n[e]||0}parseDialect(e){let n=Object.keys(this.dialects),r=n.map(()=>!1);if(e)for(let i of e.split(" ")){let a=n.indexOf(i);a>=0&&(r[a]=!0)}let s=null;for(let i=0;ir)&&n.p.parser.stateFlag(n.state,2)&&(!e||e.scoret.external(n,r)<<1|e}return t.get}const ome=1,pH=194,gH=195,lme=196,uA=197,cme=198,ume=199,dme=200,hme=2,xH=3,dA=201,fme=24,mme=25,pme=49,gme=50,xme=55,vme=56,yme=57,bme=59,wme=60,Sme=61,kme=62,Ome=63,jme=65,Nme=238,Cme=71,Tme=241,Eme=242,_me=243,Ame=244,Mme=245,Rme=246,Dme=247,Pme=248,vH=72,zme=249,Ime=250,Lme=251,Bme=252,Fme=253,qme=254,$me=255,Hme=256,Qme=73,Vme=77,Ume=263,Wme=112,Gme=130,Xme=151,Yme=152,Kme=155,ud=10,ip=13,B6=32,Sb=9,F6=35,Zme=40,Jme=46,mO=123,hA=125,yH=39,bH=34,fA=92,e0e=111,t0e=120,n0e=78,r0e=117,s0e=85,i0e=new Set([mme,pme,gme,Ume,jme,Gme,vme,yme,Nme,kme,Ome,vH,Qme,Vme,wme,Sme,Xme,Yme,Kme,Wme]);function cS(t){return t==ud||t==ip}function uS(t){return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102}const a0e=new wb((t,e)=>{let n;if(t.next<0)t.acceptToken(ume);else if(e.context.flags&xv)cS(t.next)&&t.acceptToken(cme,1);else if(((n=t.peek(-1))<0||cS(n))&&e.canShift(uA)){let r=0;for(;t.next==B6||t.next==Sb;)t.advance(),r++;(t.next==ud||t.next==ip||t.next==F6)&&t.acceptToken(uA,-r)}else cS(t.next)&&t.acceptToken(lme,1)},{contextual:!0}),o0e=new wb((t,e)=>{let n=e.context;if(n.flags)return;let r=t.peek(-1);if(r==ud||r==ip){let s=0,i=0;for(;;){if(t.next==B6)s++;else if(t.next==Sb)s+=8-s%8;else break;t.advance(),i++}s!=n.indent&&t.next!=ud&&t.next!=ip&&t.next!=F6&&(s[t,e|wH])),u0e=new ime({start:l0e,reduce(t,e,n,r){return t.flags&xv&&i0e.has(e)||(e==Cme||e==vH)&&t.flags&wH?t.parent:t},shift(t,e,n,r){return e==pH?new vv(t,c0e(r.read(r.pos,n.pos)),0):e==gH?t.parent:e==fme||e==xme||e==bme||e==xH?new vv(t,0,xv):mA.has(e)?new vv(t,0,mA.get(e)|t.flags&xv):t},hash(t){return t.hash}}),d0e=new wb(t=>{for(let e=0;e<5;e++){if(t.next!="print".charCodeAt(e))return;t.advance()}if(!/\w/.test(String.fromCharCode(t.next)))for(let e=0;;e++){let n=t.peek(e);if(!(n==B6||n==Sb)){n!=Zme&&n!=Jme&&n!=ud&&n!=ip&&n!=F6&&t.acceptToken(ome);return}}}),h0e=new wb((t,e)=>{let{flags:n}=e.context,r=n&Sl?bH:yH,s=(n&kl)>0,i=!(n&Ol),a=(n&jl)>0,l=t.pos;for(;!(t.next<0);)if(a&&t.next==mO)if(t.peek(1)==mO)t.advance(2);else{if(t.pos==l){t.acceptToken(xH,1);return}break}else if(i&&t.next==fA){if(t.pos==l){t.advance();let c=t.next;c>=0&&(t.advance(),f0e(t,c)),t.acceptToken(hme);return}break}else if(t.next==fA&&!i&&t.peek(1)>-1)t.advance(2);else if(t.next==r&&(!s||t.peek(1)==r&&t.peek(2)==r)){if(t.pos==l){t.acceptToken(dA,s?3:1);return}break}else if(t.next==ud){if(s)t.advance();else if(t.pos==l){t.acceptToken(dA);return}break}else t.advance();t.pos>l&&t.acceptToken(dme)});function f0e(t,e){if(e==e0e)for(let n=0;n<2&&t.next>=48&&t.next<=55;n++)t.advance();else if(e==t0e)for(let n=0;n<2&&uS(t.next);n++)t.advance();else if(e==r0e)for(let n=0;n<4&&uS(t.next);n++)t.advance();else if(e==s0e)for(let n=0;n<8&&uS(t.next);n++)t.advance();else if(e==n0e&&t.next==mO){for(t.advance();t.next>=0&&t.next!=hA&&t.next!=yH&&t.next!=bH&&t.next!=ud;)t.advance();t.next==hA&&t.advance()}}const m0e=x6({'async "*" "**" FormatConversion FormatSpec':ve.modifier,"for while if elif else try except finally return raise break continue with pass assert await yield match case":ve.controlKeyword,"in not and or is del":ve.operatorKeyword,"from def class global nonlocal lambda":ve.definitionKeyword,import:ve.moduleKeyword,"with as print":ve.keyword,Boolean:ve.bool,None:ve.null,VariableName:ve.variableName,"CallExpression/VariableName":ve.function(ve.variableName),"FunctionDefinition/VariableName":ve.function(ve.definition(ve.variableName)),"ClassDefinition/VariableName":ve.definition(ve.className),PropertyName:ve.propertyName,"CallExpression/MemberExpression/PropertyName":ve.function(ve.propertyName),Comment:ve.lineComment,Number:ve.number,String:ve.string,FormatString:ve.special(ve.string),Escape:ve.escape,UpdateOp:ve.updateOperator,"ArithOp!":ve.arithmeticOperator,BitOp:ve.bitwiseOperator,CompareOp:ve.compareOperator,AssignOp:ve.definitionOperator,Ellipsis:ve.punctuation,At:ve.meta,"( )":ve.paren,"[ ]":ve.squareBracket,"{ }":ve.brace,".":ve.derefOperator,", ;":ve.separator}),p0e={__proto__:null,await:44,or:54,and:56,in:60,not:62,is:64,if:70,else:72,lambda:76,yield:94,from:96,async:102,for:104,None:162,True:164,False:164,del:178,pass:182,break:186,continue:190,return:194,raise:202,import:206,as:208,global:212,nonlocal:214,assert:218,type:223,elif:236,while:240,try:246,except:248,finally:250,with:254,def:258,class:268,match:279,case:285},g0e=sp.deserialize({version:14,states:"##jO`QeOOP$}OSOOO&WQtO'#HUOOQS'#Co'#CoOOQS'#Cp'#CpO'vQdO'#CnO*UQtO'#HTOOQS'#HU'#HUOOQS'#DU'#DUOOQS'#HT'#HTO*rQdO'#D_O+VQdO'#DfO+gQdO'#DjO+zOWO'#DuO,VOWO'#DvO.[QtO'#GuOOQS'#Gu'#GuO'vQdO'#GtO0ZQtO'#GtOOQS'#Eb'#EbO0rQdO'#EcOOQS'#Gs'#GsO0|QdO'#GrOOQV'#Gr'#GrO1XQdO'#FYOOQS'#G^'#G^O1^QdO'#FXOOQV'#IS'#ISOOQV'#Gq'#GqOOQV'#Fq'#FqQ`QeOOO'vQdO'#CqO1lQdO'#C}O1sQdO'#DRO2RQdO'#HYO2cQtO'#EVO'vQdO'#EWOOQS'#EY'#EYOOQS'#E['#E[OOQS'#E^'#E^O2wQdO'#E`O3_QdO'#EdO3rQdO'#EfO3zQtO'#EfO1XQdO'#EiO0rQdO'#ElO1XQdO'#EnO0rQdO'#EtO0rQdO'#EwO4VQdO'#EyO4^QdO'#FOO4iQdO'#EzO0rQdO'#FOO1XQdO'#FQO1XQdO'#FVO4nQdO'#F[P4uOdO'#GpPOOO)CBd)CBdOOQS'#Ce'#CeOOQS'#Cf'#CfOOQS'#Cg'#CgOOQS'#Ch'#ChOOQS'#Ci'#CiOOQS'#Cj'#CjOOQS'#Cl'#ClO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO5TQdO'#DoOOQS,5:Y,5:YO5hQdO'#HdOOQS,5:],5:]O5uQ!fO,5:]O5zQtO,59YO1lQdO,59bO1lQdO,59bO1lQdO,59bO8jQdO,59bO8oQdO,59bO8vQdO,59jO8}QdO'#HTO:TQdO'#HSOOQS'#HS'#HSOOQS'#D['#D[O:lQdO,59aO'vQdO,59aO:zQdO,59aOOQS,59y,59yO;PQdO,5:RO'vQdO,5:ROOQS,5:Q,5:QO;_QdO,5:QO;dQdO,5:XO'vQdO,5:XO'vQdO,5:VOOQS,5:U,5:UO;uQdO,5:UO;zQdO,5:WOOOW'#Fy'#FyOOOOQS'#Ds'#DsOOQS1G/w1G/wOOQS1G.|1G.|O!/[QtO1G.|O!/cQtO1G.|O1lQdO1G.|O!0OQdO1G/UOOQS'#DZ'#DZO0rQdO,59tOOQS1G.{1G.{O!0VQdO1G/eO!0gQdO1G/eO!0oQdO1G/fO'vQdO'#H[O!0tQdO'#H[O!0yQtO1G.{O!1ZQdO,59iO!2aQdO,5=zO!2qQdO,5=zO!2yQdO1G/mO!3OQtO1G/mOOQS1G/l1G/lO!3`QdO,5=uO!4VQdO,5=uO0rQdO1G/qO!4tQdO1G/sO!4yQtO1G/sO!5ZQtO1G/qOOQS1G/p1G/pOOQS1G/r1G/rOOOW-E9w-E9wOOQS1G/{1G/{O!5kQdO'#HxO0rQdO'#HxO!5|QdO,5>cOOOW-E9x-E9xOOQS1G/|1G/|OOQS-E9{-E9{O!6[Q#xO1G2zO!6{QtO1G2zO'vQdO,5kOOQS1G1`1G1`O!8RQdO1G1`OOQS'#DV'#DVO0rQdO,5=qOOQS,5=q,5=qO!8WQdO'#FrO!8cQdO,59oO!8kQdO1G/XO!8uQtO,5=uOOQS1G3`1G3`OOQS,5:m,5:mO!9fQdO'#GtOOQS,5jO!;ZQdO,5>jO1XQdO,5>jO!;lQdO,5>iOOQS-E:R-E:RO!;qQdO1G0lO!;|QdO1G0lO!lO!lO!hO!=VQdO,5>hO!=hQdO'#EpO0rQdO1G0tO!=sQdO1G0tO!=xQgO1G0zO!AvQgO1G0}O!EqQdO,5>oO!E{QdO,5>oO!FTQtO,5>oO0rQdO1G1PO!F_QdO1G1PO4iQdO1G1UO!!vQdO1G1WOOQV,5;a,5;aO!FdQfO,5;aO!FiQgO1G1QO!JjQdO'#GZO4iQdO1G1QO4iQdO1G1QO!JzQdO,5>pO!KXQdO,5>pO1XQdO,5>pOOQV1G1U1G1UO!KaQdO'#FSO!KrQ!fO1G1WO!KzQdO1G1WOOQV1G1]1G1]O4iQdO1G1]O!LPQdO1G1]O!LXQdO'#F^OOQV1G1b1G1bO!#ZQtO1G1bPOOO1G2v1G2vP!L^OSO1G2vOOQS,5=},5=}OOQS'#Dp'#DpO0rQdO,5=}O!LfQdO,5=|O!LyQdO,5=|OOQS1G/u1G/uO!MRQdO,5>PO!McQdO,5>PO!MkQdO,5>PO!NOQdO,5>PO!N`QdO,5>POOQS1G3j1G3jOOQS7+$h7+$hO!8kQdO7+$pO#!RQdO1G.|O#!YQdO1G.|OOQS1G/`1G/`OOQS,5<`,5<`O'vQdO,5<`OOQS7+%P7+%PO#!aQdO7+%POOQS-E9r-E9rOOQS7+%Q7+%QO#!qQdO,5=vO'vQdO,5=vOOQS7+$g7+$gO#!vQdO7+%PO##OQdO7+%QO##TQdO1G3fOOQS7+%X7+%XO##eQdO1G3fO##mQdO7+%XOOQS,5<_,5<_O'vQdO,5<_O##rQdO1G3aOOQS-E9q-E9qO#$iQdO7+%]OOQS7+%_7+%_O#$wQdO1G3aO#%fQdO7+%_O#%kQdO1G3gO#%{QdO1G3gO#&TQdO7+%]O#&YQdO,5>dO#&sQdO,5>dO#&sQdO,5>dOOQS'#Dx'#DxO#'UO&jO'#DzO#'aO`O'#HyOOOW1G3}1G3}O#'fQdO1G3}O#'nQdO1G3}O#'yQ#xO7+(fO#(jQtO1G2UP#)TQdO'#GOOOQS,5nQdO,5sQdO1G4OOOQS-E9y-E9yO#?^QdO1G4OO<[QdO'#H{OOOO'#D{'#D{OOOO'#F|'#F|O#?oO&jO,5:fOOOW,5>e,5>eOOOW7+)i7+)iO#?zQdO7+)iO#@SQdO1G2zO#@mQdO1G2zP'vQdO'#FuO0rQdO<mO#BQQdO,5>mOOQS1G0v1G0vOOQS<rO#KgQdO,5>rO#KrQdO,5>rO#K}QdO,5>qO#L`QdO,5>qOOQS1G1Y1G1YOOQS,5;p,5;pOOQV<VAN>VO$ oQdO<cAN>cO0rQdO1G1|O$!PQtO1G1|P$!ZQdO'#FvOOQS1G2R1G2RP$!hQdO'#F{O$!uQdO7+)jO$#`QdO,5>gOOOO-E9z-E9zOOOW<tO$4{QdO,5>tO1XQdO,5vO$)nQdO,5>vOOQS1G1p1G1pOOQS,5<[,5<[OOQU7+'P7+'PO$+zQdO1G/iO$)nQdO,5wO$8zQdO,5>wOOQS1G1s1G1sOOQS7+'S7+'SP$)nQdO'#GdO$9SQdO1G4bO$9^QdO1G4bO$9fQdO1G4bOOQS7+%T7+%TO$9tQdO1G1tO$:SQtO'#FaO$:ZQdO,5<}OOQS,5<},5<}O$:iQdO1G4cOOQS-E:a-E:aO$)nQdO,5<|O$:pQdO,5<|O$:uQdO7+)|OOQS-E:`-E:`O$;PQdO7+)|O$)nQdO,5S~O%cOS%^OSSOS%]PQ~OPdOVaOfoOhYOopOs!POvqO!PrO!Q{O!T!SO!U!RO!XZO!][O!h`O!r`O!s`O!t`O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#l!QO#o!TO#s!UO#u!VO#z!WO#}hO$P!XO%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~O%]!YO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%j![O%k!]O%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aO~Ok%xXl%xXm%xXn%xXo%xXp%xXs%xXz%xX{%xX!x%xX#g%xX%[%xX%_%xX%z%xXg%xX!T%xX!U%xX%{%xX!W%xX![%xX!Q%xX#[%xXt%xX!m%xX~P%SOfoOhYO!XZO!][O!h`O!r`O!s`O!t`O%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~Oz%wX{%wX#g%wX%[%wX%_%wX%z%wX~Ok!pOl!qOm!oOn!oOo!rOp!sOs!tO!x%wX~P)pOV!zOg!|Oo0cOv0qO!PrO~P'vOV#OOo0cOv0qO!W#PO~P'vOV#SOa#TOo0cOv0qO![#UO~P'vOQ#XO%`#XO%a#ZO~OQ#^OR#[O%`#^O%a#`O~OV%iX_%iXa%iXh%iXk%iXl%iXm%iXn%iXo%iXp%iXs%iXz%iX!X%iX!f%iX%j%iX%k%iX%l%iX%m%iX%n%iX%o%iX%p%iX%q%iX%r%iX%s%iXg%iX!T%iX!U%iX~O&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O{%iX!x%iX#g%iX%[%iX%_%iX%z%iX%{%iX!W%iX![%iX!Q%iX#[%iXt%iX!m%iX~P,eOz#dO{%hX!x%hX#g%hX%[%hX%_%hX%z%hX~Oo0cOv0qO~P'vO#g#gO%[#iO%_#iO~O%uWO~O!T#nO#u!VO#z!WO#}hO~OopO~P'vOV#sOa#tO%uWO{wP~OV#xOo0cOv0qO!Q#yO~P'vO{#{O!x$QO%z#|O#g!yX%[!yX%_!yX~OV#xOo0cOv0qO#g#SX%[#SX%_#SX~P'vOo0cOv0qO#g#WX%[#WX%_#WX~P'vOh$WO%uWO~O!f$YO!r$YO%uWO~OV$eO~P'vO!U$gO#s$hO#u$iO~O{$jO~OV$qO~P'vOS$sO%[$rO%_$rO%c$tO~OV$}Oa$}Og%POo0cOv0qO~P'vOo0cOv0qO{%SO~P'vO&Y%UO~Oa!bOh!iO!X!kO!f!mOVba_bakbalbambanbaobapbasbazba{ba!xba#gba%[ba%_ba%jba%kba%lba%mba%nba%oba%pba%qba%rba%sba%zbagba!Tba!Uba%{ba!Wba![ba!Qba#[batba!mba~On%ZO~Oo%ZO~P'vOo0cO~P'vOk0eOl0fOm0dOn0dOo0mOp0nOs0rOg%wX!T%wX!U%wX%{%wX!W%wX![%wX!Q%wX#[%wX!m%wX~P)pO%{%]Og%vXz%vX!T%vX!U%vX!W%vX{%vX~Og%_Oz%`O!T%dO!U%cO~Og%_O~Oz%gO!T%dO!U%cO!W&SX~O!W%kO~Oz%lO{%nO!T%dO!U%cO![%}X~O![%rO~O![%sO~OQ#XO%`#XO%a%uO~OV%wOo0cOv0qO!PrO~P'vOQ#^OR#[O%`#^O%a%zO~OV!qa_!qaa!qah!qak!qal!qam!qan!qao!qap!qas!qaz!qa{!qa!X!qa!f!qa!x!qa#g!qa%[!qa%_!qa%j!qa%k!qa%l!qa%m!qa%n!qa%o!qa%p!qa%q!qa%r!qa%s!qa%z!qag!qa!T!qa!U!qa%{!qa!W!qa![!qa!Q!qa#[!qat!qa!m!qa~P#yOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P%SOV&OOopOvqO{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P'vOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#g$zX%[$zX%_$zX~P'vO#g#gO%[&TO%_&TO~O!f&UOh&sX%[&sXz&sX#[&sX#g&sX%_&sX#Z&sXg&sX~Oh!iO%[&WO~Okealeameaneaoeapeaseazea{ea!xea#gea%[ea%_ea%zeagea!Tea!Uea%{ea!Wea![ea!Qea#[eatea!mea~P%SOsqazqa{qa#gqa%[qa%_qa%zqa~Ok!pOl!qOm!oOn!oOo!rOp!sO!xqa~PEcO%z&YOz%yX{%yX~O%uWOz%yX{%yX~Oz&]O{wX~O{&_O~Oz%lO#g%}X%[%}X%_%}Xg%}X{%}X![%}X!m%}X%z%}X~OV0lOo0cOv0qO!PrO~P'vO%z#|O#gUa%[Ua%_Ua~Oz&hO#g&PX%[&PX%_&PXn&PX~P%SOz&kO!Q&jO#g#Wa%[#Wa%_#Wa~Oz&lO#[&nO#g&rX%[&rX%_&rXg&rX~O!f$YO!r$YO#Z&qO%uWO~O#Z&qO~Oz&sO#g&tX%[&tX%_&tX~Oz&uO#g&pX%[&pX%_&pX{&pX~O!X&wO%z&xO~Oz&|On&wX~P%SOn'PO~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO%['UO~P'vOt'YO#p'WO#q'XOP#naV#naf#nah#nao#nas#nav#na!P#na!Q#na!T#na!U#na!X#na!]#na!h#na!r#na!s#na!t#na!{#na!}#na#P#na#R#na#T#na#X#na#Z#na#^#na#_#na#a#na#c#na#l#na#o#na#s#na#u#na#z#na#}#na$P#na%X#na%o#na%p#na%t#na%u#na&Z#na&[#na&]#na&^#na&_#na&`#na&a#na&b#na&c#na&d#na&e#na&f#na&g#na&h#na&i#na&j#na%Z#na%_#na~Oz'ZO#[']O{&xX~Oh'_O!X&wO~Oh!iO{$jO!X&wO~O{'eO~P%SO%['hO%_'hO~OS'iO%['hO%_'hO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%k!]O~P!#uO%kWi~P!#uOV!aO_!aOa!bOh!iO!X!kO!f!mO%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%m!_O%n!_O~P!&pO%mWi%nWi~P!&pOa!bOh!iO!X!kO!f!mOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%mWi%nWi%oWi%pWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~OV!aO_!aO%q!aO%r!aO%s!aO~P!)nOVWi_Wi%qWi%rWi%sWi~P!)nO!T%dO!U%cOg&VXz&VX~O%z'kO%{'kO~P,eOz'mOg&UX~Og'oO~Oz'pO{'rO!W&XX~Oo0cOv0qOz'pO{'sO!W&XX~P'vO!W'uO~Om!oOn!oOo!rOp!sOkjisjizji{ji!xji#gji%[ji%_ji%zji~Ol!qO~P!.aOlji~P!.aOk0eOl0fOm0dOn0dOo0mOp0nO~Ot'wO~P!/jOV'|Og'}Oo0cOv0qO~P'vOg'}Oz(OO~Og(QO~O!U(SO~Og(TOz(OO!T%dO!U%cO~P%SOk0eOl0fOm0dOn0dOo0mOp0nOgqa!Tqa!Uqa%{qa!Wqa![qa!Qqa#[qatqa!mqa~PEcOV'|Oo0cOv0qO!W&Sa~P'vOz(WO!W&Sa~O!W(XO~Oz(WO!T%dO!U%cO!W&Sa~P%SOV(]Oo0cOv0qO![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~P'vOz(^O![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~O![(aO~Oz(^O!T%dO!U%cO![%}a~P%SOz(dO!T%dO!U%cO![&Ta~P%SOz(gO{&lX![&lX!m&lX%z&lX~O{(kO![(mO!m(nO%z(jO~OV&OOopOvqO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~P'vOz(pO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~O!f&UOh&sa%[&saz&sa#[&sa#g&sa%_&sa#Z&sag&sa~O%[(uO~OV#sOa#tO%uWO~Oz&]O{wa~OopOvqO~P'vOz(^O#g%}a%[%}a%_%}ag%}a{%}a![%}a!m%}a%z%}a~P%SOz(zO#g%hX%[%hX%_%hX%z%hX~O%z#|O#gUi%[Ui%_Ui~O#g&Pa%[&Pa%_&Pan&Pa~P'vOz(}O#g&Pa%[&Pa%_&Pan&Pa~O%uWO#g&ra%[&ra%_&rag&ra~Oz)SO#g&ra%[&ra%_&rag&ra~Og)VO~OV)WOh$WO%uWO~O#Z)XO~O%uWO#g&ta%[&ta%_&ta~Oz)ZO#g&ta%[&ta%_&ta~Oo0cOv0qO#g&pa%[&pa%_&pa{&pa~P'vOz)^O#g&pa%[&pa%_&pa{&pa~OV)`Oa)`O%uWO~O%z)eO~Ot)hO#j)gOP#hiV#hif#hih#hio#his#hiv#hi!P#hi!Q#hi!T#hi!U#hi!X#hi!]#hi!h#hi!r#hi!s#hi!t#hi!{#hi!}#hi#P#hi#R#hi#T#hi#X#hi#Z#hi#^#hi#_#hi#a#hi#c#hi#l#hi#o#hi#s#hi#u#hi#z#hi#}#hi$P#hi%X#hi%o#hi%p#hi%t#hi%u#hi&Z#hi&[#hi&]#hi&^#hi&_#hi&`#hi&a#hi&b#hi&c#hi&d#hi&e#hi&f#hi&g#hi&h#hi&i#hi&j#hi%Z#hi%_#hi~Ot)iOP#kiV#kif#kih#kio#kis#kiv#ki!P#ki!Q#ki!T#ki!U#ki!X#ki!]#ki!h#ki!r#ki!s#ki!t#ki!{#ki!}#ki#P#ki#R#ki#T#ki#X#ki#Z#ki#^#ki#_#ki#a#ki#c#ki#l#ki#o#ki#s#ki#u#ki#z#ki#}#ki$P#ki%X#ki%o#ki%p#ki%t#ki%u#ki&Z#ki&[#ki&]#ki&^#ki&_#ki&`#ki&a#ki&b#ki&c#ki&d#ki&e#ki&f#ki&g#ki&h#ki&i#ki&j#ki%Z#ki%_#ki~OV)kOn&wa~P'vOz)lOn&wa~Oz)lOn&wa~P%SOn)pO~O%Y)tO~Ot)wO#p'WO#q)vOP#niV#nif#nih#nio#nis#niv#ni!P#ni!Q#ni!T#ni!U#ni!X#ni!]#ni!h#ni!r#ni!s#ni!t#ni!{#ni!}#ni#P#ni#R#ni#T#ni#X#ni#Z#ni#^#ni#_#ni#a#ni#c#ni#l#ni#o#ni#s#ni#u#ni#z#ni#}#ni$P#ni%X#ni%o#ni%p#ni%t#ni%u#ni&Z#ni&[#ni&]#ni&^#ni&_#ni&`#ni&a#ni&b#ni&c#ni&d#ni&e#ni&f#ni&g#ni&h#ni&i#ni&j#ni%Z#ni%_#ni~OV)zOo0cOv0qO{$jO~P'vOo0cOv0qO{&xa~P'vOz*OO{&xa~OV*SOa*TOg*WO%q*UO%uWO~O{$jO&{*YO~Oh'_O~Oh!iO{$jO~O%[*_O~O%[*aO%_*aO~OV$}Oa$}Oo0cOv0qOg&Ua~P'vOz*dOg&Ua~Oo0cOv0qO{*gO!W&Xa~P'vOz*hO!W&Xa~Oo0cOv0qOz*hO{*kO!W&Xa~P'vOo0cOv0qOz*hO!W&Xa~P'vOz*hO{*kO!W&Xa~Om0dOn0dOo0mOp0nOgjikjisjizji!Tji!Uji%{ji!Wji{ji![ji#gji%[ji%_ji!Qji#[jitji!mji%zji~Ol0fO~P!NkOlji~P!NkOV'|Og*pOo0cOv0qO~P'vOn*rO~Og*pOz*tO~Og*uO~OV'|Oo0cOv0qO!W&Si~P'vOz*vO!W&Si~O!W*wO~OV(]Oo0cOv0qO![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~P'vOz*zO!T%dO!U%cO![&Ti~Oz*}O![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~O![+OO~Oa+QOo0cOv0qO![&Ti~P'vOz*zO![&Ti~O![+SO~OV+UOo0cOv0qO{&la![&la!m&la%z&la~P'vOz+VO{&la![&la!m&la%z&la~O!]+YO&n+[O![!nX~O![+^O~O{(kO![+_O~O{(kO![+_O!m+`O~OV&OOopOvqO{%hq!x%hq#g%hq%[%hq%_%hq%z%hq~P'vOz$ri{$ri!x$ri#g$ri%[$ri%_$ri%z$ri~P%SOV&OOopOvqO~P'vOV&OOo0cOv0qO#g%ha%[%ha%_%ha%z%ha~P'vOz+aO#g%ha%[%ha%_%ha%z%ha~Oz$ia#g$ia%[$ia%_$ian$ia~P%SO#g&Pi%[&Pi%_&Pin&Pi~P'vOz+dO#g#Wq%[#Wq%_#Wq~O#[+eOz$va#g$va%[$va%_$vag$va~O%uWO#g&ri%[&ri%_&rig&ri~Oz+gO#g&ri%[&ri%_&rig&ri~OV+iOh$WO%uWO~O%uWO#g&ti%[&ti%_&ti~Oo0cOv0qO#g&pi%[&pi%_&pi{&pi~P'vO{#{Oz#eX!W#eX~Oz+mO!W&uX~O!W+oO~Ot+rO#j)gOP#hqV#hqf#hqh#hqo#hqs#hqv#hq!P#hq!Q#hq!T#hq!U#hq!X#hq!]#hq!h#hq!r#hq!s#hq!t#hq!{#hq!}#hq#P#hq#R#hq#T#hq#X#hq#Z#hq#^#hq#_#hq#a#hq#c#hq#l#hq#o#hq#s#hq#u#hq#z#hq#}#hq$P#hq%X#hq%o#hq%p#hq%t#hq%u#hq&Z#hq&[#hq&]#hq&^#hq&_#hq&`#hq&a#hq&b#hq&c#hq&d#hq&e#hq&f#hq&g#hq&h#hq&i#hq&j#hq%Z#hq%_#hq~On$|az$|a~P%SOV)kOn&wi~P'vOz+yOn&wi~Oz,TO{$jO#[,TO~O#q,VOP#nqV#nqf#nqh#nqo#nqs#nqv#nq!P#nq!Q#nq!T#nq!U#nq!X#nq!]#nq!h#nq!r#nq!s#nq!t#nq!{#nq!}#nq#P#nq#R#nq#T#nq#X#nq#Z#nq#^#nq#_#nq#a#nq#c#nq#l#nq#o#nq#s#nq#u#nq#z#nq#}#nq$P#nq%X#nq%o#nq%p#nq%t#nq%u#nq&Z#nq&[#nq&]#nq&^#nq&_#nq&`#nq&a#nq&b#nq&c#nq&d#nq&e#nq&f#nq&g#nq&h#nq&i#nq&j#nq%Z#nq%_#nq~O#[,WOz%Oa{%Oa~Oo0cOv0qO{&xi~P'vOz,YO{&xi~O{#{O%z,[Og&zXz&zX~O%uWOg&zXz&zX~Oz,`Og&yX~Og,bO~O%Y,eO~O!T%dO!U%cOg&Viz&Vi~OV$}Oa$}Oo0cOv0qOg&Ui~P'vO{,hOz$la!W$la~Oo0cOv0qO{,iOz$la!W$la~P'vOo0cOv0qO{*gO!W&Xi~P'vOz,lO!W&Xi~Oo0cOv0qOz,lO!W&Xi~P'vOz,lO{,oO!W&Xi~Og$hiz$hi!W$hi~P%SOV'|Oo0cOv0qO~P'vOn,qO~OV'|Og,rOo0cOv0qO~P'vOV'|Oo0cOv0qO!W&Sq~P'vOz$gi![$gi#g$gi%[$gi%_$gig$gi{$gi!m$gi%z$gi~P%SOV(]Oo0cOv0qO~P'vOa+QOo0cOv0qO![&Tq~P'vOz,sO![&Tq~O![,tO~OV(]Oo0cOv0qO![%}q#g%}q%[%}q%_%}qg%}q{%}q!m%}q%z%}q~P'vO{,uO~OV+UOo0cOv0qO{&li![&li!m&li%z&li~P'vOz,zO{&li![&li!m&li%z&li~O!]+YO&n+[O![!na~O{(kO![,}O~OV&OOo0cOv0qO#g%hi%[%hi%_%hi%z%hi~P'vOz-OO#g%hi%[%hi%_%hi%z%hi~O%uWO#g&rq%[&rq%_&rqg&rq~Oz-RO#g&rq%[&rq%_&rqg&rq~OV)`Oa)`O%uWO!W&ua~Oz-TO!W&ua~On$|iz$|i~P%SOV)kO~P'vOV)kOn&wq~P'vOt-XOP#myV#myf#myh#myo#mys#myv#my!P#my!Q#my!T#my!U#my!X#my!]#my!h#my!r#my!s#my!t#my!{#my!}#my#P#my#R#my#T#my#X#my#Z#my#^#my#_#my#a#my#c#my#l#my#o#my#s#my#u#my#z#my#}#my$P#my%X#my%o#my%p#my%t#my%u#my&Z#my&[#my&]#my&^#my&_#my&`#my&a#my&b#my&c#my&d#my&e#my&f#my&g#my&h#my&i#my&j#my%Z#my%_#my~O%Z-]O%_-]O~P`O#q-^OP#nyV#nyf#nyh#nyo#nys#nyv#ny!P#ny!Q#ny!T#ny!U#ny!X#ny!]#ny!h#ny!r#ny!s#ny!t#ny!{#ny!}#ny#P#ny#R#ny#T#ny#X#ny#Z#ny#^#ny#_#ny#a#ny#c#ny#l#ny#o#ny#s#ny#u#ny#z#ny#}#ny$P#ny%X#ny%o#ny%p#ny%t#ny%u#ny&Z#ny&[#ny&]#ny&^#ny&_#ny&`#ny&a#ny&b#ny&c#ny&d#ny&e#ny&f#ny&g#ny&h#ny&i#ny&j#ny%Z#ny%_#ny~Oz-aO{$jO#[-aO~Oo0cOv0qO{&xq~P'vOz-dO{&xq~O%z,[Og&zaz&za~O{#{Og&zaz&za~OV*SOa*TO%q*UO%uWOg&ya~Oz-hOg&ya~O$S-lO~OV$}Oa$}Oo0cOv0qO~P'vOo0cOv0qO{-mOz$li!W$li~P'vOo0cOv0qOz$li!W$li~P'vO{-mOz$li!W$li~Oo0cOv0qO{*gO~P'vOo0cOv0qO{*gO!W&Xq~P'vOz-pO!W&Xq~Oo0cOv0qOz-pO!W&Xq~P'vOs-sO!T%dO!U%cOg&Oq!W&Oq![&Oqz&Oq~P!/jOa+QOo0cOv0qO![&Ty~P'vOz$ji![$ji~P%SOa+QOo0cOv0qO~P'vOV+UOo0cOv0qO~P'vOV+UOo0cOv0qO{&lq![&lq!m&lq%z&lq~P'vO{(kO![-xO!m-yO%z-wO~OV&OOo0cOv0qO#g%hq%[%hq%_%hq%z%hq~P'vO%uWO#g&ry%[&ry%_&ryg&ry~OV)`Oa)`O%uWO!W&ui~Ot-}OP#m!RV#m!Rf#m!Rh#m!Ro#m!Rs#m!Rv#m!R!P#m!R!Q#m!R!T#m!R!U#m!R!X#m!R!]#m!R!h#m!R!r#m!R!s#m!R!t#m!R!{#m!R!}#m!R#P#m!R#R#m!R#T#m!R#X#m!R#Z#m!R#^#m!R#_#m!R#a#m!R#c#m!R#l#m!R#o#m!R#s#m!R#u#m!R#z#m!R#}#m!R$P#m!R%X#m!R%o#m!R%p#m!R%t#m!R%u#m!R&Z#m!R&[#m!R&]#m!R&^#m!R&_#m!R&`#m!R&a#m!R&b#m!R&c#m!R&d#m!R&e#m!R&f#m!R&g#m!R&h#m!R&i#m!R&j#m!R%Z#m!R%_#m!R~Oo0cOv0qO{&xy~P'vOV*SOa*TO%q*UO%uWOg&yi~O$S-lO%Z.VO%_.VO~OV.aOh._O!X.^O!].`O!h.YO!s.[O!t.[O%p.XO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O~Oo0cOv0qOz$lq!W$lq~P'vO{.fOz$lq!W$lq~Oo0cOv0qO{*gO!W&Xy~P'vOz.gO!W&Xy~Oo0cOv.kO~P'vOs-sO!T%dO!U%cOg&Oy!W&Oy![&Oyz&Oy~P!/jO{(kO![.nO~O{(kO![.nO!m.oO~OV*SOa*TO%q*UO%uWO~Oh.tO!f.rOz$TX#[$TX%j$TXg$TX~Os$TX{$TX!W$TX![$TX~P$-bO%o.vO%p.vOs$UXz$UX{$UX#[$UX%j$UX!W$UXg$UX![$UX~O!h.xO~Oz.|O#[/OO%j.yOs&|X{&|X!W&|Xg&|X~Oa/RO~P$)zOh.tOs&}Xz&}X{&}X#[&}X%j&}X!W&}Xg&}X![&}X~Os/VO{$jO~Oo0cOv0qOz$ly!W$ly~P'vOo0cOv0qO{*gO!W&X!R~P'vOz/ZO!W&X!R~Og&RXs&RX!T&RX!U&RX!W&RX![&RXz&RX~P!/jOs-sO!T%dO!U%cOg&Qa!W&Qa![&Qaz&Qa~O{(kO![/^O~O!f.rOh$[as$[az$[a{$[a#[$[a%j$[a!W$[ag$[a![$[a~O!h/eO~O%o.vO%p.vOs$Uaz$Ua{$Ua#[$Ua%j$Ua!W$Uag$Ua![$Ua~O%j.yOs$Yaz$Ya{$Ya#[$Ya!W$Yag$Ya![$Ya~Os&|a{&|a!W&|ag&|a~P$)nOz/jOs&|a{&|a!W&|ag&|a~O!W/mO~Og/mO~O{/oO~O![/pO~Oo0cOv0qO{*gO!W&X!Z~P'vO{/sO~O%z/tO~P$-bOz/uO#[/OO%j.yOg'PX~Oz/uOg'PX~Og/wO~O!h/xO~O#[/OOs%Saz%Sa{%Sa%j%Sa!W%Sag%Sa![%Sa~O#[/OO%j.yOs%Waz%Wa{%Wa!W%Wag%Wa~Os&|i{&|i!W&|ig&|i~P$)nOz/zO#[/OO%j.yO!['Oa~Og'Pa~P$)nOz0SOg'Pa~Oa0UO!['Oi~P$)zOz0WO!['Oi~Oz0WO#[/OO%j.yO!['Oi~O#[/OO%j.yOg$biz$bi~O%z0ZO~P$-bO#[/OO%j.yOg%Vaz%Va~Og'Pi~P$)nO{0^O~Oa0UO!['Oq~P$)zOz0`O!['Oq~O#[/OO%j.yOz%Ui![%Ui~Oa0UO~P$)zOa0UO!['Oy~P$)zO#[/OO%j.yOg$ciz$ci~O#[/OO%j.yOz%Uq![%Uq~Oz+aO#g%ha%[%ha%_%ha%z%ha~P%SOV&OOo0cOv0qO~P'vOn0hO~Oo0hO~P'vO{0iO~Ot0jO~P!/jO&]&Z&j&h&i&g&f&d&e&c&b&`&a&_&^&[%u~",goto:"!=j'QPPPPPP'RP'Z*s+[+t,_,y-fP.SP'Z.r.r'ZPPP'Z2[PPPPPP2[5PPP5PP7b7k=sPP=v>h>kPP'Z'ZPP>zPP'Z'ZPP'Z'Z'Z'Z'Z?O?w'ZP?zP@QDXGuGyPG|HWH['ZPPPH_Hk'RP'R'RP'RP'RP'RP'RP'R'R'RP'RPP'RPP'RP'RPHqH}IVPI^IdPI^PI^I^PPPI^PKrPK{LVL]KrPI^LfPI^PLmLsPLwM]MzNeLwLwNkNxLwLwLwLw! ^! d! g! l! o! y!!P!!]!!o!!u!#P!#V!#s!#y!$P!$Z!$a!$g!$y!%T!%Z!%a!%k!%q!%w!%}!&T!&Z!&e!&k!&u!&{!'U!'[!'k!'s!'}!(UPPPPPPPPPPP!([!(_!(e!(n!(x!)TPPPPPPPPPPPP!-u!/Z!3^!6oPP!6w!7W!7a!8Y!8P!8c!8i!8l!8o!8r!8z!9jPPPPPPPPPPPPPPPPP!9m!9q!9wP!:]!:a!:m!:v!;S!;j!;m!;p!;v!;|!_![!]Do!]!^Es!^!_FZ!_!`Gk!`!aHX!a!b%T!b!cIf!c!dJU!d!eK^!e!hJU!h!i!#f!i!tJU!t!u!,|!u!wJU!w!x!.t!x!}JU!}#O!0S#O#P&o#P#Q!0j#Q#R!1Q#R#SJU#S#T%T#T#UJU#U#VK^#V#YJU#Y#Z!#f#Z#fJU#f#g!,|#g#iJU#i#j!.t#j#oJU#o#p!1n#p#q!1s#q#r!2a#r#s!2f#s$g%T$g;'SJU;'S;=`KW<%lOJU`%YT&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T`%lP;=`<%l%To%v]&n`%c_OX%TXY%oY[%T[]%o]p%Tpq%oq#O%T#O#P&o#P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To&tX&n`OY%TYZ%oZ]%T]^%o^#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc'f[&n`O!_%T!_!`([!`#T%T#T#U(r#U#f%T#f#g(r#g#h(r#h#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(cTmR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(yT!mR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk)aV&n`&[ZOr%Trs)vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk){V&n`Or%Trs*bs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk*iT&n`&^ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To+PZS_&n`OY*xYZ%TZ]*x]^%T^#o*x#o#p+r#p#q*x#q#r+r#r;'S*x;'S;=`,^<%lO*x_+wTS_OY+rZ]+r^;'S+r;'S;=`,W<%lO+r_,ZP;=`<%l+ro,aP;=`<%l*xj,kV%rQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-XT!xY&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-oV%lQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.]V&n`&ZZOw%Twx.rx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.wV&n`Ow%Twx/^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/eT&n`&]ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/{ThZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc0cTgR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk0yXVZ&n`Oz%Tz{1f{!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk1mVaR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk2ZV%oZ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc2wTzR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To3_W%pZ&n`O!_%T!_!`-Q!`!a3w!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Td4OT&{S&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk4fX!fQ&n`O!O%T!O!P5R!P!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5WV&n`O!O%T!O!P5m!P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5tT!rZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti6[a!hX&n`O!Q%T!Q![6T![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S6T#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti7fZ&n`O{%T{|8X|}%T}!O8X!O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8^V&n`O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8z]!hX&n`O!Q%T!Q![8s![!l%T!l!m9s!m#R%T#R#S8s#S#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti9zT!hX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk:bX%qR&n`O!P%T!P!Q:}!Q!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj;UV%sQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti;ro!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!d%T!d!e?q!e!g%T!g!h7a!h!l%T!l!m9s!m!q%T!q!rA]!r!z%T!z!{Bq!{#R%T#R#S>_#S#U%T#U#V?q#V#X%T#X#Y7a#Y#^%T#^#_9s#_#c%T#c#dA]#d#l%T#l#mBq#m#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti=xV&n`O!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti>fc!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S>_#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti?vY&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti@mY!hX&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiAbX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBUX!hX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBv]&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiCv]!hX&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToDvV{_&n`O!_%T!_!`E]!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TcEdT%{R&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkEzT#gZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkFbXmR&n`O!^%T!^!_F}!_!`([!`!a([!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjGUV%mQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkGrV%zZ&n`O!_%T!_!`([!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkH`WmR&n`O!_%T!_!`([!`!aHx!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjIPV%nQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkIoV_Q#}P&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToJ_]&n`&YS%uZO!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoKZP;=`<%lJUoKge&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!tJU!t!uLx!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#gLx#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoMRa&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUkN_V&n`&`ZOr%TrsNts#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkNyV&n`Or%Trs! `s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! gT&n`&bZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! }V&n`&_ZOw%Twx!!dx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!!iV&n`Ow%Twx!#Ox#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!#VT&n`&aZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!#oe&n`&YS%uZOr%Trs!%Qsw%Twx!&px!Q%T!Q![JU![!c%T!c!tJU!t!u!(`!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#g!(`#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!%XV&n`&dZOr%Trs!%ns#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!%sV&n`Or%Trs!&Ys#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&aT&n`&fZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&wV&n`&cZOw%Twx!'^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!'cV&n`Ow%Twx!'xx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!(PT&n`&eZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!(ia&n`&YS%uZOr%Trs!)nsw%Twx!+^x!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!)uV&n`&hZOr%Trs!*[s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*aV&n`Or%Trs!*vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*}T&n`&jZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!+eV&n`&gZOw%Twx!+zx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,PV&n`Ow%Twx!,fx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,mT&n`&iZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!-Vi&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!dJU!d!eLx!e!hJU!h!i!(`!i!}JU!}#R%T#R#SJU#S#T%T#T#UJU#U#VLx#V#YJU#Y#Z!(`#Z#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUo!.}a&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!0ZT!XZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc!0qT!WR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj!1XV%kQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!1sO!]~k!1zV%jR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!2fO![~i!2mT%tX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T",tokenizers:[d0e,o0e,a0e,h0e,0,1,2,3,4],topRules:{Script:[0,5]},specialized:[{term:221,get:t=>p0e[t]||-1}],tokenPrec:7668}),pA=new Rce,SH=new Set(["Script","Body","FunctionDefinition","ClassDefinition","LambdaExpression","ForStatement","MatchClause"]);function k1(t){return(e,n,r)=>{if(r)return!1;let s=e.node.getChild("VariableName");return s&&n(s,t),!0}}const x0e={FunctionDefinition:k1("function"),ClassDefinition:k1("class"),ForStatement(t,e,n){if(n){for(let r=t.node.firstChild;r;r=r.nextSibling)if(r.name=="VariableName")e(r,"variable");else if(r.name=="in")break}},ImportStatement(t,e){var n,r;let{node:s}=t,i=((n=s.firstChild)===null||n===void 0?void 0:n.name)=="from";for(let a=s.getChild("import");a;a=a.nextSibling)a.name=="VariableName"&&((r=a.nextSibling)===null||r===void 0?void 0:r.name)!="as"&&e(a,i?"variable":"namespace")},AssignStatement(t,e){for(let n=t.node.firstChild;n;n=n.nextSibling)if(n.name=="VariableName")e(n,"variable");else if(n.name==":"||n.name=="AssignOp")break},ParamList(t,e){for(let n=null,r=t.node.firstChild;r;r=r.nextSibling)r.name=="VariableName"&&(!n||!/\*|AssignOp/.test(n.name))&&e(r,"variable"),n=r},CapturePattern:k1("variable"),AsPattern:k1("variable"),__proto__:null};function kH(t,e){let n=pA.get(e);if(n)return n;let r=[],s=!0;function i(a,l){let c=t.sliceString(a.from,a.to);r.push({label:c,type:l})}return e.cursor(hs.IncludeAnonymous).iterate(a=>{if(a.name){let l=x0e[a.name];if(l&&l(a,i,s)||!s&&SH.has(a.name))return!1;s=!1}else if(a.to-a.from>8192){for(let l of kH(t,a.node))r.push(l);return!1}}),pA.set(e,r),r}const gA=/^[\w\xa1-\uffff][\w\d\xa1-\uffff]*$/,OH=["String","FormatString","Comment","PropertyName"];function v0e(t){let e=Ss(t.state).resolveInner(t.pos,-1);if(OH.indexOf(e.name)>-1)return null;let n=e.name=="VariableName"||e.to-e.from<20&&gA.test(t.state.sliceDoc(e.from,e.to));if(!n&&!t.explicit)return null;let r=[];for(let s=e;s;s=s.parent)SH.has(s.name)&&(r=r.concat(kH(t.state.doc,s)));return{options:r,from:n?e.from:t.pos,validFor:gA}}const y0e=["__annotations__","__builtins__","__debug__","__doc__","__import__","__name__","__loader__","__package__","__spec__","False","None","True"].map(t=>({label:t,type:"constant"})).concat(["ArithmeticError","AssertionError","AttributeError","BaseException","BlockingIOError","BrokenPipeError","BufferError","BytesWarning","ChildProcessError","ConnectionAbortedError","ConnectionError","ConnectionRefusedError","ConnectionResetError","DeprecationWarning","EOFError","Ellipsis","EncodingWarning","EnvironmentError","Exception","FileExistsError","FileNotFoundError","FloatingPointError","FutureWarning","GeneratorExit","IOError","ImportError","ImportWarning","IndentationError","IndexError","InterruptedError","IsADirectoryError","KeyError","KeyboardInterrupt","LookupError","MemoryError","ModuleNotFoundError","NameError","NotADirectoryError","NotImplemented","NotImplementedError","OSError","OverflowError","PendingDeprecationWarning","PermissionError","ProcessLookupError","RecursionError","ReferenceError","ResourceWarning","RuntimeError","RuntimeWarning","StopAsyncIteration","StopIteration","SyntaxError","SyntaxWarning","SystemError","SystemExit","TabError","TimeoutError","TypeError","UnboundLocalError","UnicodeDecodeError","UnicodeEncodeError","UnicodeError","UnicodeTranslateError","UnicodeWarning","UserWarning","ValueError","Warning","ZeroDivisionError"].map(t=>({label:t,type:"type"}))).concat(["bool","bytearray","bytes","classmethod","complex","float","frozenset","int","list","map","memoryview","object","range","set","staticmethod","str","super","tuple","type"].map(t=>({label:t,type:"class"}))).concat(["abs","aiter","all","anext","any","ascii","bin","breakpoint","callable","chr","compile","delattr","dict","dir","divmod","enumerate","eval","exec","exit","filter","format","getattr","globals","hasattr","hash","help","hex","id","input","isinstance","issubclass","iter","len","license","locals","max","min","next","oct","open","ord","pow","print","property","quit","repr","reversed","round","setattr","slice","sorted","sum","vars","zip"].map(t=>({label:t,type:"function"}))),b0e=[vl("def ${name}(${params}):\n ${}",{label:"def",detail:"function",type:"keyword"}),vl("for ${name} in ${collection}:\n ${}",{label:"for",detail:"loop",type:"keyword"}),vl("while ${}:\n ${}",{label:"while",detail:"loop",type:"keyword"}),vl("try:\n ${}\nexcept ${error}:\n ${}",{label:"try",detail:"/ except block",type:"keyword"}),vl(`if \${}: +`);r>-1&&(n=n.slice(0,r))}return e+n.length<=this.to?n:n.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,n=this.lineAfter(e),r=e+n.length;for(let s=this.rangeIndex;;){let i=this.ranges[s].to;if(i>=r||(n=n.slice(0,i-(r-n.length)),s++,s==this.ranges.length))break;let a=this.ranges[s].from,l=this.lineAfter(a);n+=l,r=a+l.length}return{line:n,end:r}}skipGapsTo(e,n,r){for(;;){let s=this.ranges[this.rangeIndex].to,i=e+n;if(r>0?s>i:s>=i)break;let a=this.ranges[++this.rangeIndex].from;n+=a-s}return n}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(n,s,1),n+=s;let l=this.chunk.length;s=this.skipGapsTo(r,s,-1),r+=s,i+=this.chunk.length-l}let a=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&i==4&&a>=0&&this.chunk[a]==e&&this.chunk[a+2]==n?this.chunk[a+2]=r:this.chunk.push(e,n,r,i),s}parseLine(e){let{line:n,end:r}=this.nextLine(),s=0,{streamParser:i}=this.lang,a=new o$(n,e?e.state.tabSize:4,e?dd(e.state):2);if(a.eol())i.blankLine(this.state,a.indentUnit);else for(;!a.eol();){let l=c$(i.token,a,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+a.start,this.parsedPos+a.pos,s)),a.start>1e4)break}this.parsedPos=r,this.moveRangeIndex(),this.parsedPose.start)return s}throw new Error("Stream parser failed to advance stream.")}const E6=Object.create(null),tp=[ai.none],zue=new gb(tp),T_=[],E_=Object.create(null),u$=Object.create(null);for(let[t,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])u$[t]=h$(E6,e);class d${constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),u$)}resolve(e){return e?this.table[e]||(this.table[e]=h$(this.extra,e)):0}}const Iue=new d$(E6);function nS(t,e){T_.indexOf(t)>-1||(T_.push(t),console.warn(e))}function h$(t,e){let n=[];for(let l of e.split(" ")){let c=[];for(let d of l.split(".")){let h=t[d]||ye[d];h?typeof h=="function"?c.length?c=c.map(h):nS(d,`Modifier ${d} used at start of tag`):c.length?nS(d,`Tag ${d} used as modifier`):c=Array.isArray(h)?h:[h]:nS(d,`Unknown highlighting tag ${d}`)}for(let d of c)n.push(d)}if(!n.length)return 0;let r=e.replace(/ /g,"_"),s=r+" "+n.map(l=>l.id),i=E_[s];if(i)return i.id;let a=E_[s]=ai.define({id:tp.length,name:r,props:[k6({[r]:n})]});return tp.push(a),a.id}function Lue(t,e){let n=ai.define({id:tp.length,name:"Document",props:[Wu.add(()=>t),vb.add(()=>r=>e.getIndent(r))],top:!0});return tp.push(n),n}br.RTL,br.LTR;const Bue=t=>{let{state:e}=t,n=e.doc.lineAt(e.selection.main.from),r=A6(t.state,n.from);return r.line?Fue(t):r.block?$ue(t):!1};function _6(t,e){return({state:n,dispatch:r})=>{if(n.readOnly)return!1;let s=t(e,n);return s?(r(n.update(s)),!0):!1}}const Fue=_6(Vue,0),que=_6(f$,0),$ue=_6((t,e)=>f$(t,e,Que(e)),0);function A6(t,e){let n=t.languageDataAt("commentTokens",e,1);return n.length?n[0]:{}}const Qm=50;function Hue(t,{open:e,close:n},r,s){let i=t.sliceDoc(r-Qm,r),a=t.sliceDoc(s,s+Qm),l=/\s*$/.exec(i)[0].length,c=/^\s*/.exec(a)[0].length,d=i.length-l;if(i.slice(d-e.length,d)==e&&a.slice(c,c+n.length)==n)return{open:{pos:r-l,margin:l&&1},close:{pos:s+c,margin:c&&1}};let h,m;s-r<=2*Qm?h=m=t.sliceDoc(r,s):(h=t.sliceDoc(r,r+Qm),m=t.sliceDoc(s-Qm,s));let g=/^\s*/.exec(h)[0].length,x=/\s*$/.exec(m)[0].length,y=m.length-x-n.length;return h.slice(g,g+e.length)==e&&m.slice(y,y+n.length)==n?{open:{pos:r+g+e.length,margin:/\s/.test(h.charAt(g+e.length))?1:0},close:{pos:s-x-n.length,margin:/\s/.test(m.charAt(y-1))?1:0}}:null}function Que(t){let e=[];for(let n of t.selection.ranges){let r=t.doc.lineAt(n.from),s=n.to<=r.to?r:t.doc.lineAt(n.to);s.from>r.from&&s.from==n.to&&(s=n.to==r.to+1?r:t.doc.lineAt(n.to-1));let i=e.length-1;i>=0&&e[i].to>r.from?e[i].to=s.to:e.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:s.to})}return e}function f$(t,e,n=e.selection.ranges){let r=n.map(i=>A6(e,i.from).block);if(!r.every(i=>i))return null;let s=n.map((i,a)=>Hue(e,r[a],i.from,i.to));if(t!=2&&!s.every(i=>i))return{changes:e.changes(n.map((i,a)=>s[a]?[]:[{from:i.from,insert:r[a].open+" "},{from:i.to,insert:" "+r[a].close}]))};if(t!=1&&s.some(i=>i)){let i=[];for(let a=0,l;as&&(i==a||a>m.from)){s=m.from;let g=/^\s*/.exec(m.text)[0].length,x=g==m.length,y=m.text.slice(g,g+d.length)==d?g:-1;gi.comment<0&&(!i.empty||i.single))){let i=[];for(let{line:l,token:c,indent:d,empty:h,single:m}of r)(m||!h)&&i.push({from:l.from+d,insert:c+" "});let a=e.changes(i);return{changes:a,selection:e.selection.map(a,1)}}else if(t!=1&&r.some(i=>i.comment>=0)){let i=[];for(let{line:a,comment:l,token:c}of r)if(l>=0){let d=a.from+l,h=d+c.length;a.text[h-a.from]==" "&&h++,i.push({from:d,to:h})}return{changes:i}}return null}const uO=Qo.define(),Uue=Qo.define(),Wue=st.define(),m$=st.define({combine(t){return Vo(t,{minDepth:100,newGroupDelay:500,joinToEvent:(e,n)=>n},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,n)=>(r,s)=>e(r,s)||n(r,s)})}}),p$=Os.define({create(){return Eo.empty},update(t,e){let n=e.state.facet(m$),r=e.annotation(uO);if(r){let c=wi.fromTransaction(e,r.selection),d=r.side,h=d==0?t.undone:t.done;return c?h=iy(h,h.length,n.minDepth,c):h=v$(h,e.startState.selection),new Eo(d==0?r.rest:h,d==0?h:r.rest)}let s=e.annotation(Uue);if((s=="full"||s=="before")&&(t=t.isolate()),e.annotation(ss.addToHistory)===!1)return e.changes.empty?t:t.addMapping(e.changes.desc);let i=wi.fromTransaction(e),a=e.annotation(ss.time),l=e.annotation(ss.userEvent);return i?t=t.addChanges(i,a,l,n,e):e.selection&&(t=t.addSelection(e.startState.selection,a,l,n.newGroupDelay)),(s=="full"||s=="after")&&(t=t.isolate()),t},toJSON(t){return{done:t.done.map(e=>e.toJSON()),undone:t.undone.map(e=>e.toJSON())}},fromJSON(t){return new Eo(t.done.map(wi.fromJSON),t.undone.map(wi.fromJSON))}});function Gue(t={}){return[p$,m$.of(t),Ze.domEventHandlers({beforeinput(e,n){let r=e.inputType=="historyUndo"?g$:e.inputType=="historyRedo"?dO:null;return r?(e.preventDefault(),r(n)):!1}})]}function bb(t,e){return function({state:n,dispatch:r}){if(!e&&n.readOnly)return!1;let s=n.field(p$,!1);if(!s)return!1;let i=s.pop(t,n,e);return i?(r(i),!0):!1}}const g$=bb(0,!1),dO=bb(1,!1),Xue=bb(0,!0),Yue=bb(1,!0);class wi{constructor(e,n,r,s,i){this.changes=e,this.effects=n,this.mapped=r,this.startSelection=s,this.selectionsAfter=i}setSelAfter(e){return new wi(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,n,r;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(n=this.mapped)===null||n===void 0?void 0:n.toJSON(),startSelection:(r=this.startSelection)===null||r===void 0?void 0:r.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(e){return new wi(e.changes&&us.fromJSON(e.changes),[],e.mapped&&Io.fromJSON(e.mapped),e.startSelection&&Me.fromJSON(e.startSelection),e.selectionsAfter.map(Me.fromJSON))}static fromTransaction(e,n){let r=ka;for(let s of e.startState.facet(Wue)){let i=s(e);i.length&&(r=r.concat(i))}return!r.length&&e.changes.empty?null:new wi(e.changes.invert(e.startState.doc),r,void 0,n||e.startState.selection,ka)}static selection(e){return new wi(void 0,ka,void 0,void 0,e)}}function iy(t,e,n,r){let s=e+1>n+20?e-n-1:0,i=t.slice(s,e);return i.push(r),i}function Kue(t,e){let n=[],r=!1;return t.iterChangedRanges((s,i)=>n.push(s,i)),e.iterChangedRanges((s,i,a,l)=>{for(let c=0;c=d&&a<=h&&(r=!0)}}),r}function Zue(t,e){return t.ranges.length==e.ranges.length&&t.ranges.filter((n,r)=>n.empty!=e.ranges[r].empty).length===0}function x$(t,e){return t.length?e.length?t.concat(e):t:e}const ka=[],Jue=200;function v$(t,e){if(t.length){let n=t[t.length-1],r=n.selectionsAfter.slice(Math.max(0,n.selectionsAfter.length-Jue));return r.length&&r[r.length-1].eq(e)?t:(r.push(e),iy(t,t.length-1,1e9,n.setSelAfter(r)))}else return[wi.selection([e])]}function ede(t){let e=t[t.length-1],n=t.slice();return n[t.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),n}function rS(t,e){if(!t.length)return t;let n=t.length,r=ka;for(;n;){let s=tde(t[n-1],e,r);if(s.changes&&!s.changes.empty||s.effects.length){let i=t.slice(0,n);return i[n-1]=s,i}else e=s.mapped,n--,r=s.selectionsAfter}return r.length?[wi.selection(r)]:ka}function tde(t,e,n){let r=x$(t.selectionsAfter.length?t.selectionsAfter.map(l=>l.map(e)):ka,n);if(!t.changes)return wi.selection(r);let s=t.changes.map(e),i=e.mapDesc(t.changes,!0),a=t.mapped?t.mapped.composeDesc(i):i;return new wi(s,Qt.mapEffects(t.effects,e),a,t.startSelection.map(i),r)}const nde=/^(input\.type|delete)($|\.)/;class Eo{constructor(e,n,r=0,s=void 0){this.done=e,this.undone=n,this.prevTime=r,this.prevUserEvent=s}isolate(){return this.prevTime?new Eo(this.done,this.undone):this}addChanges(e,n,r,s,i){let a=this.done,l=a[a.length-1];return l&&l.changes&&!l.changes.empty&&e.changes&&(!r||nde.test(r))&&(!l.selectionsAfter.length&&n-this.prevTime0&&n-this.prevTimen.empty?t.moveByChar(n,e):wb(n,e))}function Ws(t){return t.textDirectionAt(t.state.selection.main.head)==br.LTR}const b$=t=>y$(t,!Ws(t)),w$=t=>y$(t,Ws(t));function S$(t,e){return so(t,n=>n.empty?t.moveByGroup(n,e):wb(n,e))}const sde=t=>S$(t,!Ws(t)),ide=t=>S$(t,Ws(t));function ade(t,e,n){if(e.type.prop(n))return!0;let r=e.to-e.from;return r&&(r>2||/[^\s,.;:]/.test(t.sliceDoc(e.from,e.to)))||e.firstChild}function Sb(t,e,n){let r=Ss(t).resolveInner(e.head),s=n?an.closedBy:an.openedBy;for(let c=e.head;;){let d=n?r.childAfter(c):r.childBefore(c);if(!d)break;ade(t,d,s)?r=d:c=n?d.to:d.from}let i=r.type.prop(s),a,l;return i&&(a=n?To(t,r.from,1):To(t,r.to,-1))&&a.matched?l=n?a.end.to:a.end.from:l=n?r.to:r.from,Me.cursor(l,n?-1:1)}const ode=t=>so(t,e=>Sb(t.state,e,!Ws(t))),lde=t=>so(t,e=>Sb(t.state,e,Ws(t)));function k$(t,e){return so(t,n=>{if(!n.empty)return wb(n,e);let r=t.moveVertically(n,e);return r.head!=n.head?r:t.moveToLineBoundary(n,e)})}const O$=t=>k$(t,!1),j$=t=>k$(t,!0);function N$(t){let e=t.scrollDOM.clientHeighta.empty?t.moveVertically(a,e,n.height):wb(a,e));if(s.eq(r.selection))return!1;let i;if(n.selfScroll){let a=t.coordsAtPos(r.selection.main.head),l=t.scrollDOM.getBoundingClientRect(),c=l.top+n.marginTop,d=l.bottom-n.marginBottom;a&&a.top>c&&a.bottomC$(t,!1),hO=t=>C$(t,!0);function du(t,e,n){let r=t.lineBlockAt(e.head),s=t.moveToLineBoundary(e,n);if(s.head==e.head&&s.head!=(n?r.to:r.from)&&(s=t.moveToLineBoundary(e,n,!1)),!n&&s.head==r.from&&r.length){let i=/^\s*/.exec(t.state.sliceDoc(r.from,Math.min(r.from+100,r.to)))[0].length;i&&e.head!=r.from+i&&(s=Me.cursor(r.from+i))}return s}const cde=t=>so(t,e=>du(t,e,!0)),ude=t=>so(t,e=>du(t,e,!1)),dde=t=>so(t,e=>du(t,e,!Ws(t))),hde=t=>so(t,e=>du(t,e,Ws(t))),fde=t=>so(t,e=>Me.cursor(t.lineBlockAt(e.head).from,1)),mde=t=>so(t,e=>Me.cursor(t.lineBlockAt(e.head).to,-1));function pde(t,e,n){let r=!1,s=Tf(t.selection,i=>{let a=To(t,i.head,-1)||To(t,i.head,1)||i.head>0&&To(t,i.head-1,1)||i.headpde(t,e);function za(t,e){let n=Tf(t.state.selection,r=>{let s=e(r);return Me.range(r.anchor,s.head,s.goalColumn,s.bidiLevel||void 0)});return n.eq(t.state.selection)?!1:(t.dispatch(ro(t.state,n)),!0)}function T$(t,e){return za(t,n=>t.moveByChar(n,e))}const E$=t=>T$(t,!Ws(t)),_$=t=>T$(t,Ws(t));function A$(t,e){return za(t,n=>t.moveByGroup(n,e))}const xde=t=>A$(t,!Ws(t)),vde=t=>A$(t,Ws(t)),yde=t=>za(t,e=>Sb(t.state,e,!Ws(t))),bde=t=>za(t,e=>Sb(t.state,e,Ws(t)));function M$(t,e){return za(t,n=>t.moveVertically(n,e))}const R$=t=>M$(t,!1),D$=t=>M$(t,!0);function P$(t,e){return za(t,n=>t.moveVertically(n,e,N$(t).height))}const A_=t=>P$(t,!1),M_=t=>P$(t,!0),wde=t=>za(t,e=>du(t,e,!0)),Sde=t=>za(t,e=>du(t,e,!1)),kde=t=>za(t,e=>du(t,e,!Ws(t))),Ode=t=>za(t,e=>du(t,e,Ws(t))),jde=t=>za(t,e=>Me.cursor(t.lineBlockAt(e.head).from)),Nde=t=>za(t,e=>Me.cursor(t.lineBlockAt(e.head).to)),R_=({state:t,dispatch:e})=>(e(ro(t,{anchor:0})),!0),D_=({state:t,dispatch:e})=>(e(ro(t,{anchor:t.doc.length})),!0),P_=({state:t,dispatch:e})=>(e(ro(t,{anchor:t.selection.main.anchor,head:0})),!0),z_=({state:t,dispatch:e})=>(e(ro(t,{anchor:t.selection.main.anchor,head:t.doc.length})),!0),Cde=({state:t,dispatch:e})=>(e(t.update({selection:{anchor:0,head:t.doc.length},userEvent:"select"})),!0),Tde=({state:t,dispatch:e})=>{let n=kb(t).map(({from:r,to:s})=>Me.range(r,Math.min(s+1,t.doc.length)));return e(t.update({selection:Me.create(n),userEvent:"select"})),!0},Ede=({state:t,dispatch:e})=>{let n=Tf(t.selection,r=>{let s=Ss(t),i=s.resolveStack(r.from,1);if(r.empty){let a=s.resolveStack(r.from,-1);a.node.from>=i.node.from&&a.node.to<=i.node.to&&(i=a)}for(let a=i;a;a=a.next){let{node:l}=a;if((l.from=r.to||l.to>r.to&&l.from<=r.from)&&a.next)return Me.range(l.to,l.from)}return r});return n.eq(t.selection)?!1:(e(ro(t,n)),!0)};function z$(t,e){let{state:n}=t,r=n.selection,s=n.selection.ranges.slice();for(let i of n.selection.ranges){let a=n.doc.lineAt(i.head);if(e?a.to0)for(let l=i;;){let c=t.moveVertically(l,e);if(c.heada.to){s.some(d=>d.head==c.head)||s.push(c);break}else{if(c.head==l.head)break;l=c}}}return s.length==r.ranges.length?!1:(t.dispatch(ro(n,Me.create(s,s.length-1))),!0)}const _de=t=>z$(t,!1),Ade=t=>z$(t,!0),Mde=({state:t,dispatch:e})=>{let n=t.selection,r=null;return n.ranges.length>1?r=Me.create([n.main]):n.main.empty||(r=Me.create([Me.cursor(n.main.head)])),r?(e(ro(t,r)),!0):!1};function tg(t,e){if(t.state.readOnly)return!1;let n="delete.selection",{state:r}=t,s=r.changeByRange(i=>{let{from:a,to:l}=i;if(a==l){let c=e(i);ca&&(n="delete.forward",c=S1(t,c,!0)),a=Math.min(a,c),l=Math.max(l,c)}else a=S1(t,a,!1),l=S1(t,l,!0);return a==l?{range:i}:{changes:{from:a,to:l},range:Me.cursor(a,as(t)))r.between(e,e,(s,i)=>{se&&(e=n?i:s)});return e}const I$=(t,e,n)=>tg(t,r=>{let s=r.from,{state:i}=t,a=i.doc.lineAt(s),l,c;if(n&&!e&&s>a.from&&sI$(t,!1,!0),L$=t=>I$(t,!0,!1),B$=(t,e)=>tg(t,n=>{let r=n.head,{state:s}=t,i=s.doc.lineAt(r),a=s.charCategorizer(r);for(let l=null;;){if(r==(e?i.to:i.from)){r==n.head&&i.number!=(e?s.doc.lines:1)&&(r+=e?1:-1);break}let c=Ps(i.text,r-i.from,e)+i.from,d=i.text.slice(Math.min(r,c)-i.from,Math.max(r,c)-i.from),h=a(d);if(l!=null&&h!=l)break;(d!=" "||r!=n.head)&&(l=h),r=c}return r}),F$=t=>B$(t,!1),Rde=t=>B$(t,!0),Dde=t=>tg(t,e=>{let n=t.lineBlockAt(e.head).to;return e.headtg(t,e=>{let n=t.moveToLineBoundary(e,!1).head;return e.head>n?n:Math.max(0,e.head-1)}),zde=t=>tg(t,e=>{let n=t.moveToLineBoundary(e,!0).head;return e.head{if(t.readOnly)return!1;let n=t.changeByRange(r=>({changes:{from:r.from,to:r.to,insert:An.of(["",""])},range:Me.cursor(r.from)}));return e(t.update(n,{scrollIntoView:!0,userEvent:"input"})),!0},Lde=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let n=t.changeByRange(r=>{if(!r.empty||r.from==0||r.from==t.doc.length)return{range:r};let s=r.from,i=t.doc.lineAt(s),a=s==i.from?s-1:Ps(i.text,s-i.from,!1)+i.from,l=s==i.to?s+1:Ps(i.text,s-i.from,!0)+i.from;return{changes:{from:a,to:l,insert:t.doc.slice(s,l).append(t.doc.slice(a,s))},range:Me.cursor(l)}});return n.changes.empty?!1:(e(t.update(n,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function kb(t){let e=[],n=-1;for(let r of t.selection.ranges){let s=t.doc.lineAt(r.from),i=t.doc.lineAt(r.to);if(!r.empty&&r.to==i.from&&(i=t.doc.lineAt(r.to-1)),n>=s.number){let a=e[e.length-1];a.to=i.to,a.ranges.push(r)}else e.push({from:s.from,to:i.to,ranges:[r]});n=i.number+1}return e}function q$(t,e,n){if(t.readOnly)return!1;let r=[],s=[];for(let i of kb(t)){if(n?i.to==t.doc.length:i.from==0)continue;let a=t.doc.lineAt(n?i.to+1:i.from-1),l=a.length+1;if(n){r.push({from:i.to,to:a.to},{from:i.from,insert:a.text+t.lineBreak});for(let c of i.ranges)s.push(Me.range(Math.min(t.doc.length,c.anchor+l),Math.min(t.doc.length,c.head+l)))}else{r.push({from:a.from,to:i.from},{from:i.to,insert:t.lineBreak+a.text});for(let c of i.ranges)s.push(Me.range(c.anchor-l,c.head-l))}}return r.length?(e(t.update({changes:r,scrollIntoView:!0,selection:Me.create(s,t.selection.mainIndex),userEvent:"move.line"})),!0):!1}const Bde=({state:t,dispatch:e})=>q$(t,e,!1),Fde=({state:t,dispatch:e})=>q$(t,e,!0);function $$(t,e,n){if(t.readOnly)return!1;let r=[];for(let s of kb(t))n?r.push({from:s.from,insert:t.doc.slice(s.from,s.to)+t.lineBreak}):r.push({from:s.to,insert:t.lineBreak+t.doc.slice(s.from,s.to)});return e(t.update({changes:r,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const qde=({state:t,dispatch:e})=>$$(t,e,!1),$de=({state:t,dispatch:e})=>$$(t,e,!0),Hde=t=>{if(t.state.readOnly)return!1;let{state:e}=t,n=e.changes(kb(e).map(({from:s,to:i})=>(s>0?s--:i{let i;if(t.lineWrapping){let a=t.lineBlockAt(s.head),l=t.coordsAtPos(s.head,s.assoc||1);l&&(i=a.bottom+t.documentTop-l.bottom+t.defaultLineHeight/2)}return t.moveVertically(s,!0,i)}).map(n);return t.dispatch({changes:n,selection:r,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Qde(t,e){if(/\(\)|\[\]|\{\}/.test(t.sliceDoc(e-1,e+1)))return{from:e,to:e};let n=Ss(t).resolveInner(e),r=n.childBefore(e),s=n.childAfter(e),i;return r&&s&&r.to<=e&&s.from>=e&&(i=r.type.prop(an.closedBy))&&i.indexOf(s.name)>-1&&t.doc.lineAt(r.to).from==t.doc.lineAt(s.from).from&&!/\S/.test(t.sliceDoc(r.to,s.from))?{from:r.to,to:s.from}:null}const I_=H$(!1),Vde=H$(!0);function H$(t){return({state:e,dispatch:n})=>{if(e.readOnly)return!1;let r=e.changeByRange(s=>{let{from:i,to:a}=s,l=e.doc.lineAt(i),c=!t&&i==a&&Qde(e,i);t&&(i=a=(a<=l.to?l:e.doc.lineAt(a)).to);let d=new xb(e,{simulateBreak:i,simulateDoubleBreak:!!c}),h=O6(d,i);for(h==null&&(h=Cf(/^\s*/.exec(e.doc.lineAt(i).text)[0],e.tabSize));al.from&&i{let s=[];for(let a=r.from;a<=r.to;){let l=t.doc.lineAt(a);l.number>n&&(r.empty||r.to>l.from)&&(e(l,s,r),n=l.number),a=l.to+1}let i=t.changes(s);return{changes:s,range:Me.range(i.mapPos(r.anchor,1),i.mapPos(r.head,1))}})}const Ude=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let n=Object.create(null),r=new xb(t,{overrideIndentation:i=>{let a=n[i];return a??-1}}),s=M6(t,(i,a,l)=>{let c=O6(r,i.from);if(c==null)return;/\S/.test(i.text)||(c=0);let d=/^\s*/.exec(i.text)[0],h=ep(t,c);(d!=h||l.fromt.readOnly?!1:(e(t.update(M6(t,(n,r)=>{r.push({from:n.from,insert:t.facet(Zp)})}),{userEvent:"input.indent"})),!0),V$=({state:t,dispatch:e})=>t.readOnly?!1:(e(t.update(M6(t,(n,r)=>{let s=/^\s*/.exec(n.text)[0];if(!s)return;let i=Cf(s,t.tabSize),a=0,l=ep(t,Math.max(0,i-dd(t)));for(;a(t.setTabFocusMode(),!0),Gde=[{key:"Ctrl-b",run:b$,shift:E$,preventDefault:!0},{key:"Ctrl-f",run:w$,shift:_$},{key:"Ctrl-p",run:O$,shift:R$},{key:"Ctrl-n",run:j$,shift:D$},{key:"Ctrl-a",run:fde,shift:jde},{key:"Ctrl-e",run:mde,shift:Nde},{key:"Ctrl-d",run:L$},{key:"Ctrl-h",run:fO},{key:"Ctrl-k",run:Dde},{key:"Ctrl-Alt-h",run:F$},{key:"Ctrl-o",run:Ide},{key:"Ctrl-t",run:Lde},{key:"Ctrl-v",run:hO}],Xde=[{key:"ArrowLeft",run:b$,shift:E$,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:sde,shift:xde,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:dde,shift:kde,preventDefault:!0},{key:"ArrowRight",run:w$,shift:_$,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:ide,shift:vde,preventDefault:!0},{mac:"Cmd-ArrowRight",run:hde,shift:Ode,preventDefault:!0},{key:"ArrowUp",run:O$,shift:R$,preventDefault:!0},{mac:"Cmd-ArrowUp",run:R_,shift:P_},{mac:"Ctrl-ArrowUp",run:__,shift:A_},{key:"ArrowDown",run:j$,shift:D$,preventDefault:!0},{mac:"Cmd-ArrowDown",run:D_,shift:z_},{mac:"Ctrl-ArrowDown",run:hO,shift:M_},{key:"PageUp",run:__,shift:A_},{key:"PageDown",run:hO,shift:M_},{key:"Home",run:ude,shift:Sde,preventDefault:!0},{key:"Mod-Home",run:R_,shift:P_},{key:"End",run:cde,shift:wde,preventDefault:!0},{key:"Mod-End",run:D_,shift:z_},{key:"Enter",run:I_,shift:I_},{key:"Mod-a",run:Cde},{key:"Backspace",run:fO,shift:fO,preventDefault:!0},{key:"Delete",run:L$,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:F$,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:Rde,preventDefault:!0},{mac:"Mod-Backspace",run:Pde,preventDefault:!0},{mac:"Mod-Delete",run:zde,preventDefault:!0}].concat(Gde.map(t=>({mac:t.key,run:t.run,shift:t.shift}))),Yde=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:ode,shift:yde},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:lde,shift:bde},{key:"Alt-ArrowUp",run:Bde},{key:"Shift-Alt-ArrowUp",run:qde},{key:"Alt-ArrowDown",run:Fde},{key:"Shift-Alt-ArrowDown",run:$de},{key:"Mod-Alt-ArrowUp",run:_de},{key:"Mod-Alt-ArrowDown",run:Ade},{key:"Escape",run:Mde},{key:"Mod-Enter",run:Vde},{key:"Alt-l",mac:"Ctrl-l",run:Tde},{key:"Mod-i",run:Ede,preventDefault:!0},{key:"Mod-[",run:V$},{key:"Mod-]",run:Q$},{key:"Mod-Alt-\\",run:Ude},{key:"Shift-Mod-k",run:Hde},{key:"Shift-Mod-\\",run:gde},{key:"Mod-/",run:Bue},{key:"Alt-A",run:que},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Wde}].concat(Xde),Kde={key:"Tab",run:Q$,shift:V$},L_=typeof String.prototype.normalize=="function"?t=>t.normalize("NFKD"):t=>t;class af{constructor(e,n,r=0,s=e.length,i,a){this.test=a,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(r,s),this.bufferStart=r,this.normalize=i?l=>i(L_(l)):L_,this.query=this.normalize(n)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return vi(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let n=s6(e),r=this.bufferStart+this.bufferPos;this.bufferPos+=ko(e);let s=this.normalize(n);if(s.length)for(let i=0,a=r;;i++){let l=s.charCodeAt(i),c=this.match(l,a,this.bufferPos+this.bufferStart);if(i==s.length-1){if(c)return this.value=c,this;break}a==r&&ithis.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let n=this.matchPos<=this.to&&this.re.exec(this.curLine);if(n){let r=this.curLineStart+n.index,s=r+n[0].length;if(this.matchPos=ay(this.text,s+(r==s?1:0)),r==this.curLineStart+this.curLine.length&&this.nextLine(),(rthis.value.to)&&(!this.test||this.test(r,s,n)))return this.value={from:r,to:s,match:n},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length=r||s.to<=n){let l=new Lh(n,e.sliceString(n,r));return sS.set(e,l),l}if(s.from==n&&s.to==r)return s;let{text:i,from:a}=s;return a>n&&(i=e.sliceString(n,a)+i,a=n),s.to=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,n=this.re.exec(this.flat.text);if(n&&!n[0]&&n.index==e&&(this.re.lastIndex=e+1,n=this.re.exec(this.flat.text)),n){let r=this.flat.from+n.index,s=r+n[0].length;if((this.flat.to>=this.to||n.index+n[0].length<=this.flat.text.length-10)&&(!this.test||this.test(r,s,n)))return this.value={from:r,to:s,match:n},this.matchPos=ay(this.text,s+(r==s?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=Lh.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}typeof Symbol<"u"&&(W$.prototype[Symbol.iterator]=G$.prototype[Symbol.iterator]=function(){return this});function Zde(t){try{return new RegExp(t,R6),!0}catch{return!1}}function ay(t,e){if(e>=t.length)return e;let n=t.lineAt(e),r;for(;e=56320&&r<57344;)e++;return e}function mO(t){let e=String(t.state.doc.lineAt(t.state.selection.main.head).number),n=lr("input",{class:"cm-textfield",name:"line",value:e}),r=lr("form",{class:"cm-gotoLine",onkeydown:i=>{i.keyCode==27?(i.preventDefault(),t.dispatch({effects:E0.of(!1)}),t.focus()):i.keyCode==13&&(i.preventDefault(),s())},onsubmit:i=>{i.preventDefault(),s()}},lr("label",t.state.phrase("Go to line"),": ",n)," ",lr("button",{class:"cm-button",type:"submit"},t.state.phrase("go")),lr("button",{name:"close",onclick:()=>{t.dispatch({effects:E0.of(!1)}),t.focus()},"aria-label":t.state.phrase("close"),type:"button"},["×"]));function s(){let i=/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(n.value);if(!i)return;let{state:a}=t,l=a.doc.lineAt(a.selection.main.head),[,c,d,h,m]=i,g=h?+h.slice(1):0,x=d?+d:l.number;if(d&&m){let S=x/100;c&&(S=S*(c=="-"?-1:1)+l.number/a.doc.lines),x=Math.round(a.doc.lines*S)}else d&&c&&(x=x*(c=="-"?-1:1)+l.number);let y=a.doc.line(Math.max(1,Math.min(a.doc.lines,x))),w=Me.cursor(y.from+Math.max(0,Math.min(g,y.length)));t.dispatch({effects:[E0.of(!1),Ze.scrollIntoView(w.from,{y:"center"})],selection:w}),t.focus()}return{dom:r}}const E0=Qt.define(),B_=Os.define({create(){return!0},update(t,e){for(let n of e.effects)n.is(E0)&&(t=n.value);return t},provide:t=>Y0.from(t,e=>e?mO:null)}),Jde=t=>{let e=X0(t,mO);if(!e){let n=[E0.of(!0)];t.state.field(B_,!1)==null&&n.push(Qt.appendConfig.of([B_,ehe])),t.dispatch({effects:n}),e=X0(t,mO)}return e&&e.dom.querySelector("input").select(),!0},ehe=Ze.baseTheme({".cm-panel.cm-gotoLine":{padding:"2px 6px 4px",position:"relative","& label":{fontSize:"80%"},"& [name=close]":{position:"absolute",top:"0",bottom:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:"0"}}}),the={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},nhe=st.define({combine(t){return Vo(t,the,{highlightWordAroundCursor:(e,n)=>e||n,minSelectionLength:Math.min,maxMatches:Math.min})}});function rhe(t){return[lhe,ohe]}const she=Ot.mark({class:"cm-selectionMatch"}),ihe=Ot.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function F_(t,e,n,r){return(n==0||t(e.sliceDoc(n-1,n))!=Tr.Word)&&(r==e.doc.length||t(e.sliceDoc(r,r+1))!=Tr.Word)}function ahe(t,e,n,r){return t(e.sliceDoc(n,n+1))==Tr.Word&&t(e.sliceDoc(r-1,r))==Tr.Word}const ohe=Yr.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.selectionSet||t.docChanged||t.viewportChanged)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=t.state.facet(nhe),{state:n}=t,r=n.selection;if(r.ranges.length>1)return Ot.none;let s=r.main,i,a=null;if(s.empty){if(!e.highlightWordAroundCursor)return Ot.none;let c=n.wordAt(s.head);if(!c)return Ot.none;a=n.charCategorizer(s.head),i=n.sliceDoc(c.from,c.to)}else{let c=s.to-s.from;if(c200)return Ot.none;if(e.wholeWords){if(i=n.sliceDoc(s.from,s.to),a=n.charCategorizer(s.head),!(F_(a,n,s.from,s.to)&&ahe(a,n,s.from,s.to)))return Ot.none}else if(i=n.sliceDoc(s.from,s.to),!i)return Ot.none}let l=[];for(let c of t.visibleRanges){let d=new af(n.doc,i,c.from,c.to);for(;!d.next().done;){let{from:h,to:m}=d.value;if((!a||F_(a,n,h,m))&&(s.empty&&h<=s.from&&m>=s.to?l.push(ihe.range(h,m)):(h>=s.to||m<=s.from)&&l.push(she.range(h,m)),l.length>e.maxMatches))return Ot.none}}return Ot.set(l)}},{decorations:t=>t.decorations}),lhe=Ze.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),che=({state:t,dispatch:e})=>{let{selection:n}=t,r=Me.create(n.ranges.map(s=>t.wordAt(s.head)||Me.cursor(s.head)),n.mainIndex);return r.eq(n)?!1:(e(t.update({selection:r})),!0)};function uhe(t,e){let{main:n,ranges:r}=t.selection,s=t.wordAt(n.head),i=s&&s.from==n.from&&s.to==n.to;for(let a=!1,l=new af(t.doc,e,r[r.length-1].to);;)if(l.next(),l.done){if(a)return null;l=new af(t.doc,e,0,Math.max(0,r[r.length-1].from-1)),a=!0}else{if(a&&r.some(c=>c.from==l.value.from))continue;if(i){let c=t.wordAt(l.value.from);if(!c||c.from!=l.value.from||c.to!=l.value.to)continue}return l.value}}const dhe=({state:t,dispatch:e})=>{let{ranges:n}=t.selection;if(n.some(i=>i.from===i.to))return che({state:t,dispatch:e});let r=t.sliceDoc(n[0].from,n[0].to);if(t.selection.ranges.some(i=>t.sliceDoc(i.from,i.to)!=r))return!1;let s=uhe(t,r);return s?(e(t.update({selection:t.selection.addRange(Me.range(s.from,s.to),!1),effects:Ze.scrollIntoView(s.to)})),!0):!1},Ef=st.define({combine(t){return Vo(t,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new khe(e),scrollToMatch:e=>Ze.scrollIntoView(e)})}});class X${constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||Zde(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(n,r)=>r=="n"?` +`:r=="r"?"\r":r=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord}create(){return this.regexp?new phe(this):new fhe(this)}getCursor(e,n=0,r){let s=e.doc?e:Nn.create({doc:e});return r==null&&(r=s.doc.length),this.regexp?Sh(this,s,n,r):wh(this,s,n,r)}}class Y${constructor(e){this.spec=e}}function wh(t,e,n,r){return new af(e.doc,t.unquoted,n,r,t.caseSensitive?void 0:s=>s.toLowerCase(),t.wholeWord?hhe(e.doc,e.charCategorizer(e.selection.main.head)):void 0)}function hhe(t,e){return(n,r,s,i)=>((i>n||i+s.length=n)return null;s.push(r.value)}return s}highlight(e,n,r,s){let i=wh(this.spec,e,Math.max(0,n-this.spec.unquoted.length),Math.min(r+this.spec.unquoted.length,e.doc.length));for(;!i.next().done;)s(i.value.from,i.value.to)}}function Sh(t,e,n,r){return new W$(e.doc,t.search,{ignoreCase:!t.caseSensitive,test:t.wholeWord?mhe(e.charCategorizer(e.selection.main.head)):void 0},n,r)}function oy(t,e){return t.slice(Ps(t,e,!1),e)}function ly(t,e){return t.slice(e,Ps(t,e))}function mhe(t){return(e,n,r)=>!r[0].length||(t(oy(r.input,r.index))!=Tr.Word||t(ly(r.input,r.index))!=Tr.Word)&&(t(ly(r.input,r.index+r[0].length))!=Tr.Word||t(oy(r.input,r.index+r[0].length))!=Tr.Word)}class phe extends Y${nextMatch(e,n,r){let s=Sh(this.spec,e,r,e.doc.length).next();return s.done&&(s=Sh(this.spec,e,0,n).next()),s.done?null:s.value}prevMatchInRange(e,n,r){for(let s=1;;s++){let i=Math.max(n,r-s*1e4),a=Sh(this.spec,e,i,r),l=null;for(;!a.next().done;)l=a.value;if(l&&(i==n||l.from>i+10))return l;if(i==n)return null}}prevMatch(e,n,r){return this.prevMatchInRange(e,0,n)||this.prevMatchInRange(e,r,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(n,r)=>{if(r=="&")return e.match[0];if(r=="$")return"$";for(let s=r.length;s>0;s--){let i=+r.slice(0,s);if(i>0&&i=n)return null;s.push(r.value)}return s}highlight(e,n,r,s){let i=Sh(this.spec,e,Math.max(0,n-250),Math.min(r+250,e.doc.length));for(;!i.next().done;)s(i.value.from,i.value.to)}}const np=Qt.define(),D6=Qt.define(),Uc=Os.define({create(t){return new iS(pO(t).create(),null)},update(t,e){for(let n of e.effects)n.is(np)?t=new iS(n.value.create(),t.panel):n.is(D6)&&(t=new iS(t.query,n.value?P6:null));return t},provide:t=>Y0.from(t,e=>e.panel)});class iS{constructor(e,n){this.query=e,this.panel=n}}const ghe=Ot.mark({class:"cm-searchMatch"}),xhe=Ot.mark({class:"cm-searchMatch cm-searchMatch-selected"}),vhe=Yr.fromClass(class{constructor(t){this.view=t,this.decorations=this.highlight(t.state.field(Uc))}update(t){let e=t.state.field(Uc);(e!=t.startState.field(Uc)||t.docChanged||t.selectionSet||t.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:t,panel:e}){if(!e||!t.spec.valid)return Ot.none;let{view:n}=this,r=new Hl;for(let s=0,i=n.visibleRanges,a=i.length;si[s+1].from-500;)c=i[++s].to;t.highlight(n.state,l,c,(d,h)=>{let m=n.state.selection.ranges.some(g=>g.from==d&&g.to==h);r.add(d,h,m?xhe:ghe)})}return r.finish()}},{decorations:t=>t.decorations});function ng(t){return e=>{let n=e.state.field(Uc,!1);return n&&n.query.spec.valid?t(e,n):J$(e)}}const cy=ng((t,{query:e})=>{let{to:n}=t.state.selection.main,r=e.nextMatch(t.state,n,n);if(!r)return!1;let s=Me.single(r.from,r.to),i=t.state.facet(Ef);return t.dispatch({selection:s,effects:[z6(t,r),i.scrollToMatch(s.main,t)],userEvent:"select.search"}),Z$(t),!0}),uy=ng((t,{query:e})=>{let{state:n}=t,{from:r}=n.selection.main,s=e.prevMatch(n,r,r);if(!s)return!1;let i=Me.single(s.from,s.to),a=t.state.facet(Ef);return t.dispatch({selection:i,effects:[z6(t,s),a.scrollToMatch(i.main,t)],userEvent:"select.search"}),Z$(t),!0}),yhe=ng((t,{query:e})=>{let n=e.matchAll(t.state,1e3);return!n||!n.length?!1:(t.dispatch({selection:Me.create(n.map(r=>Me.range(r.from,r.to))),userEvent:"select.search.matches"}),!0)}),bhe=({state:t,dispatch:e})=>{let n=t.selection;if(n.ranges.length>1||n.main.empty)return!1;let{from:r,to:s}=n.main,i=[],a=0;for(let l=new af(t.doc,t.sliceDoc(r,s));!l.next().done;){if(i.length>1e3)return!1;l.value.from==r&&(a=i.length),i.push(Me.range(l.value.from,l.value.to))}return e(t.update({selection:Me.create(i,a),userEvent:"select.search.matches"})),!0},q_=ng((t,{query:e})=>{let{state:n}=t,{from:r,to:s}=n.selection.main;if(n.readOnly)return!1;let i=e.nextMatch(n,r,r);if(!i)return!1;let a=i,l=[],c,d,h=[];a.from==r&&a.to==s&&(d=n.toText(e.getReplacement(a)),l.push({from:a.from,to:a.to,insert:d}),a=e.nextMatch(n,a.from,a.to),h.push(Ze.announce.of(n.phrase("replaced match on line $",n.doc.lineAt(r).number)+".")));let m=t.state.changes(l);return a&&(c=Me.single(a.from,a.to).map(m),h.push(z6(t,a)),h.push(n.facet(Ef).scrollToMatch(c.main,t))),t.dispatch({changes:m,selection:c,effects:h,userEvent:"input.replace"}),!0}),whe=ng((t,{query:e})=>{if(t.state.readOnly)return!1;let n=e.matchAll(t.state,1e9).map(s=>{let{from:i,to:a}=s;return{from:i,to:a,insert:e.getReplacement(s)}});if(!n.length)return!1;let r=t.state.phrase("replaced $ matches",n.length)+".";return t.dispatch({changes:n,effects:Ze.announce.of(r),userEvent:"input.replace.all"}),!0});function P6(t){return t.state.facet(Ef).createPanel(t)}function pO(t,e){var n,r,s,i,a;let l=t.selection.main,c=l.empty||l.to>l.from+100?"":t.sliceDoc(l.from,l.to);if(e&&!c)return e;let d=t.facet(Ef);return new X$({search:((n=e?.literal)!==null&&n!==void 0?n:d.literal)?c:c.replace(/\n/g,"\\n"),caseSensitive:(r=e?.caseSensitive)!==null&&r!==void 0?r:d.caseSensitive,literal:(s=e?.literal)!==null&&s!==void 0?s:d.literal,regexp:(i=e?.regexp)!==null&&i!==void 0?i:d.regexp,wholeWord:(a=e?.wholeWord)!==null&&a!==void 0?a:d.wholeWord})}function K$(t){let e=X0(t,P6);return e&&e.dom.querySelector("[main-field]")}function Z$(t){let e=K$(t);e&&e==t.root.activeElement&&e.select()}const J$=t=>{let e=t.state.field(Uc,!1);if(e&&e.panel){let n=K$(t);if(n&&n!=t.root.activeElement){let r=pO(t.state,e.query.spec);r.valid&&t.dispatch({effects:np.of(r)}),n.focus(),n.select()}}else t.dispatch({effects:[D6.of(!0),e?np.of(pO(t.state,e.query.spec)):Qt.appendConfig.of(jhe)]});return!0},eH=t=>{let e=t.state.field(Uc,!1);if(!e||!e.panel)return!1;let n=X0(t,P6);return n&&n.dom.contains(t.root.activeElement)&&t.focus(),t.dispatch({effects:D6.of(!1)}),!0},She=[{key:"Mod-f",run:J$,scope:"editor search-panel"},{key:"F3",run:cy,shift:uy,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:cy,shift:uy,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:eH,scope:"editor search-panel"},{key:"Mod-Shift-l",run:bhe},{key:"Mod-Alt-g",run:Jde},{key:"Mod-d",run:dhe,preventDefault:!0}];class khe{constructor(e){this.view=e;let n=this.query=e.state.field(Uc).query.spec;this.commit=this.commit.bind(this),this.searchField=lr("input",{value:n.search,placeholder:Fi(e,"Find"),"aria-label":Fi(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=lr("input",{value:n.replace,placeholder:Fi(e,"Replace"),"aria-label":Fi(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=lr("input",{type:"checkbox",name:"case",form:"",checked:n.caseSensitive,onchange:this.commit}),this.reField=lr("input",{type:"checkbox",name:"re",form:"",checked:n.regexp,onchange:this.commit}),this.wordField=lr("input",{type:"checkbox",name:"word",form:"",checked:n.wholeWord,onchange:this.commit});function r(s,i,a){return lr("button",{class:"cm-button",name:s,onclick:i,type:"button"},a)}this.dom=lr("div",{onkeydown:s=>this.keydown(s),class:"cm-search"},[this.searchField,r("next",()=>cy(e),[Fi(e,"next")]),r("prev",()=>uy(e),[Fi(e,"previous")]),r("select",()=>yhe(e),[Fi(e,"all")]),lr("label",null,[this.caseField,Fi(e,"match case")]),lr("label",null,[this.reField,Fi(e,"regexp")]),lr("label",null,[this.wordField,Fi(e,"by word")]),...e.state.readOnly?[]:[lr("br"),this.replaceField,r("replace",()=>q_(e),[Fi(e,"replace")]),r("replaceAll",()=>whe(e),[Fi(e,"replace all")])],lr("button",{name:"close",onclick:()=>eH(e),"aria-label":Fi(e,"close"),type:"button"},["×"])])}commit(){let e=new X$({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:np.of(e)}))}keydown(e){Tle(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?uy:cy)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),q_(this.view))}update(e){for(let n of e.transactions)for(let r of n.effects)r.is(np)&&!r.value.eq(this.query)&&this.setQuery(r.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(Ef).top}}function Fi(t,e){return t.state.phrase(e)}const k1=30,O1=/[\s\.,:;?!]/;function z6(t,{from:e,to:n}){let r=t.state.doc.lineAt(e),s=t.state.doc.lineAt(n).to,i=Math.max(r.from,e-k1),a=Math.min(s,n+k1),l=t.state.sliceDoc(i,a);if(i!=r.from){for(let c=0;cl.length-k1;c--)if(!O1.test(l[c-1])&&O1.test(l[c])){l=l.slice(0,c);break}}return Ze.announce.of(`${t.state.phrase("current match")}. ${l} ${t.state.phrase("on line")} ${r.number}.`)}const Ohe=Ze.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),jhe=[Uc,uu.low(vhe),Ohe];class tH{constructor(e,n,r,s){this.state=e,this.pos=n,this.explicit=r,this.view=s,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let n=Ss(this.state).resolveInner(this.pos,-1);for(;n&&e.indexOf(n.name)<0;)n=n.parent;return n?{from:n.from,to:this.pos,text:this.state.sliceDoc(n.from,this.pos),type:n.type}:null}matchBefore(e){let n=this.state.doc.lineAt(this.pos),r=Math.max(n.from,this.pos-250),s=n.text.slice(r-n.from,this.pos-n.from),i=s.search(rH(e,!1));return i<0?null:{from:r+i,to:this.pos,text:s.slice(i)}}get aborted(){return this.abortListeners==null}addEventListener(e,n,r){e=="abort"&&this.abortListeners&&(this.abortListeners.push(n),r&&r.onDocChange&&(this.abortOnDocChange=!0))}}function $_(t){let e=Object.keys(t).join(""),n=/\w/.test(e);return n&&(e=e.replace(/\w/g,"")),`[${n?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function Nhe(t){let e=Object.create(null),n=Object.create(null);for(let{label:s}of t){e[s[0]]=!0;for(let i=1;itypeof s=="string"?{label:s}:s),[n,r]=e.every(s=>/^\w+$/.test(s.label))?[/\w*$/,/\w+$/]:Nhe(e);return s=>{let i=s.matchBefore(r);return i||s.explicit?{from:i?i.from:s.pos,options:e,validFor:n}:null}}function Che(t,e){return n=>{for(let r=Ss(n.state).resolveInner(n.pos,-1);r;r=r.parent){if(t.indexOf(r.name)>-1)return null;if(r.type.isTop)break}return e(n)}}let H_=class{constructor(e,n,r,s){this.completion=e,this.source=n,this.match=r,this.score=s}};function sd(t){return t.selection.main.from}function rH(t,e){var n;let{source:r}=t,s=e&&r[0]!="^",i=r[r.length-1]!="$";return!s&&!i?t:new RegExp(`${s?"^":""}(?:${r})${i?"$":""}`,(n=t.flags)!==null&&n!==void 0?n:t.ignoreCase?"i":"")}const I6=Qo.define();function The(t,e,n,r){let{main:s}=t.selection,i=n-s.from,a=r-s.from;return{...t.changeByRange(l=>{if(l!=s&&n!=r&&t.sliceDoc(l.from+i,l.from+a)!=t.sliceDoc(n,r))return{range:l};let c=t.toText(e);return{changes:{from:l.from+i,to:r==s.from?l.to:l.from+a,insert:c},range:Me.cursor(l.from+i+c.length)}}),scrollIntoView:!0,userEvent:"input.complete"}}const Q_=new WeakMap;function Ehe(t){if(!Array.isArray(t))return t;let e=Q_.get(t);return e||Q_.set(t,e=nH(t)),e}const dy=Qt.define(),rp=Qt.define();class _he{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let n=0;n=48&&E<=57||E>=97&&E<=122?2:E>=65&&E<=90?1:0:(_=s6(E))!=_.toLowerCase()?1:_!=_.toUpperCase()?2:0;(!j||A==1&&S||T==0&&A!=0)&&(n[m]==E||r[m]==E&&(g=!0)?a[m++]=j:a.length&&(k=!1)),T=A,j+=ko(E)}return m==c&&a[0]==0&&k?this.result(-100+(g?-200:0),a,e):x==c&&y==0?this.ret(-200-e.length+(w==e.length?0:-100),[0,w]):l>-1?this.ret(-700-e.length,[l,l+this.pattern.length]):x==c?this.ret(-900-e.length,[y,w]):m==c?this.result(-100+(g?-200:0)+-700+(k?0:-1100),a,e):n.length==2?null:this.result((s[0]?-700:0)+-200+-1100,s,e)}result(e,n,r){let s=[],i=0;for(let a of n){let l=a+(this.astral?ko(vi(r,a)):1);i&&s[i-1]==a?s[i-1]=l:(s[i++]=a,s[i++]=l)}return this.ret(e-r.length,s)}}class Ahe{constructor(e){this.pattern=e,this.matched=[],this.score=0,this.folded=e.toLowerCase()}match(e){if(e.length!1,activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:()=>"",optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:Mhe,filterStrict:!1,compareCompletions:(e,n)=>e.label.localeCompare(n.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(e,n)=>e&&n,closeOnBlur:(e,n)=>e&&n,icons:(e,n)=>e&&n,tooltipClass:(e,n)=>r=>V_(e(r),n(r)),optionClass:(e,n)=>r=>V_(e(r),n(r)),addToOptions:(e,n)=>e.concat(n),filterStrict:(e,n)=>e||n})}});function V_(t,e){return t?e?t+" "+e:t:e}function Mhe(t,e,n,r,s,i){let a=t.textDirection==br.RTL,l=a,c=!1,d="top",h,m,g=e.left-s.left,x=s.right-e.right,y=r.right-r.left,w=r.bottom-r.top;if(l&&g=w||j>e.top?h=n.bottom-e.top:(d="bottom",h=e.bottom-n.top)}let S=(e.bottom-e.top)/i.offsetHeight,k=(e.right-e.left)/i.offsetWidth;return{style:`${d}: ${h/S}px; max-width: ${m/k}px`,class:"cm-completionInfo-"+(c?a?"left-narrow":"right-narrow":l?"left":"right")}}function Rhe(t){let e=t.addToOptions.slice();return t.icons&&e.push({render(n){let r=document.createElement("div");return r.classList.add("cm-completionIcon"),n.type&&r.classList.add(...n.type.split(/\s+/g).map(s=>"cm-completionIcon-"+s)),r.setAttribute("aria-hidden","true"),r},position:20}),e.push({render(n,r,s,i){let a=document.createElement("span");a.className="cm-completionLabel";let l=n.displayLabel||n.label,c=0;for(let d=0;dc&&a.appendChild(document.createTextNode(l.slice(c,h)));let g=a.appendChild(document.createElement("span"));g.appendChild(document.createTextNode(l.slice(h,m))),g.className="cm-completionMatchedText",c=m}return cn.position-r.position).map(n=>n.render)}function aS(t,e,n){if(t<=n)return{from:0,to:t};if(e<0&&(e=0),e<=t>>1){let s=Math.floor(e/n);return{from:s*n,to:(s+1)*n}}let r=Math.floor((t-e)/n);return{from:t-(r+1)*n,to:t-r*n}}class Dhe{constructor(e,n,r){this.view=e,this.stateField=n,this.applyCompletion=r,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:()=>this.measureInfo(),write:c=>this.placeInfo(c),key:this},this.space=null,this.currentClass="";let s=e.state.field(n),{options:i,selected:a}=s.open,l=e.state.facet(ws);this.optionContent=Rhe(l),this.optionClass=l.optionClass,this.tooltipClass=l.tooltipClass,this.range=aS(i.length,a,l.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.updateTooltipClass(e.state),this.dom.addEventListener("mousedown",c=>{let{options:d}=e.state.field(n).open;for(let h=c.target,m;h&&h!=this.dom;h=h.parentNode)if(h.nodeName=="LI"&&(m=/-(\d+)$/.exec(h.id))&&+m[1]{let d=e.state.field(this.stateField,!1);d&&d.tooltip&&e.state.facet(ws).closeOnBlur&&c.relatedTarget!=e.contentDOM&&e.dispatch({effects:rp.of(null)})}),this.showOptions(i,s.id)}mount(){this.updateSel()}showOptions(e,n){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(e,n,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(e){var n;let r=e.state.field(this.stateField),s=e.startState.field(this.stateField);if(this.updateTooltipClass(e.state),r!=s){let{options:i,selected:a,disabled:l}=r.open;(!s.open||s.open.options!=i)&&(this.range=aS(i.length,a,e.state.facet(ws).maxRenderedOptions),this.showOptions(i,r.id)),this.updateSel(),l!=((n=s.open)===null||n===void 0?void 0:n.disabled)&&this.dom.classList.toggle("cm-tooltip-autocomplete-disabled",!!l)}}updateTooltipClass(e){let n=this.tooltipClass(e);if(n!=this.currentClass){for(let r of this.currentClass.split(" "))r&&this.dom.classList.remove(r);for(let r of n.split(" "))r&&this.dom.classList.add(r);this.currentClass=n}}positioned(e){this.space=e,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let e=this.view.state.field(this.stateField),n=e.open;(n.selected>-1&&n.selected=this.range.to)&&(this.range=aS(n.options.length,n.selected,this.view.state.facet(ws).maxRenderedOptions),this.showOptions(n.options,e.id));let r=this.updateSelectedOption(n.selected);if(r){this.destroyInfo();let{completion:s}=n.options[n.selected],{info:i}=s;if(!i)return;let a=typeof i=="string"?document.createTextNode(i):i(s);if(!a)return;"then"in a?a.then(l=>{l&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(l,s)}).catch(l=>bi(this.view.state,l,"completion info")):(this.addInfoPane(a,s),r.setAttribute("aria-describedby",this.info.id))}}addInfoPane(e,n){this.destroyInfo();let r=this.info=document.createElement("div");if(r.className="cm-tooltip cm-completionInfo",r.id="cm-completionInfo-"+Math.floor(Math.random()*65535).toString(16),e.nodeType!=null)r.appendChild(e),this.infoDestroy=null;else{let{dom:s,destroy:i}=e;r.appendChild(s),this.infoDestroy=i||null}this.dom.appendChild(r),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(e){let n=null;for(let r=this.list.firstChild,s=this.range.from;r;r=r.nextSibling,s++)r.nodeName!="LI"||!r.id?s--:s==e?r.hasAttribute("aria-selected")||(r.setAttribute("aria-selected","true"),n=r):r.hasAttribute("aria-selected")&&(r.removeAttribute("aria-selected"),r.removeAttribute("aria-describedby"));return n&&zhe(this.list,n),n}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let n=this.dom.getBoundingClientRect(),r=this.info.getBoundingClientRect(),s=e.getBoundingClientRect(),i=this.space;if(!i){let a=this.dom.ownerDocument.documentElement;i={left:0,top:0,right:a.clientWidth,bottom:a.clientHeight}}return s.top>Math.min(i.bottom,n.bottom)-10||s.bottom{a.target==s&&a.preventDefault()});let i=null;for(let a=r.from;ar.from||r.from==0))if(i=g,typeof d!="string"&&d.header)s.appendChild(d.header(d));else{let x=s.appendChild(document.createElement("completion-section"));x.textContent=g}}const h=s.appendChild(document.createElement("li"));h.id=n+"-"+a,h.setAttribute("role","option");let m=this.optionClass(l);m&&(h.className=m);for(let g of this.optionContent){let x=g(l,this.view.state,this.view,c);x&&h.appendChild(x)}}return r.from&&s.classList.add("cm-completionListIncompleteTop"),r.tonew Dhe(n,t,e)}function zhe(t,e){let n=t.getBoundingClientRect(),r=e.getBoundingClientRect(),s=n.height/t.offsetHeight;r.topn.bottom&&(t.scrollTop+=(r.bottom-n.bottom)/s)}function U_(t){return(t.boost||0)*100+(t.apply?10:0)+(t.info?5:0)+(t.type?1:0)}function Ihe(t,e){let n=[],r=null,s=null,i=h=>{n.push(h);let{section:m}=h.completion;if(m){r||(r=[]);let g=typeof m=="string"?m:m.name;r.some(x=>x.name==g)||r.push(typeof m=="string"?{name:g}:m)}},a=e.facet(ws);for(let h of t)if(h.hasResult()){let m=h.result.getMatch;if(h.result.filter===!1)for(let g of h.result.options)i(new H_(g,h.source,m?m(g):[],1e9-n.length));else{let g=e.sliceDoc(h.from,h.to),x,y=a.filterStrict?new Ahe(g):new _he(g);for(let w of h.result.options)if(x=y.match(w.label)){let S=w.displayLabel?m?m(w,x.matched):[]:x.matched,k=x.score+(w.boost||0);if(i(new H_(w,h.source,S,k)),typeof w.section=="object"&&w.section.rank==="dynamic"){let{name:j}=w.section;s||(s=Object.create(null)),s[j]=Math.max(k,s[j]||-1e9)}}}}if(r){let h=Object.create(null),m=0,g=(x,y)=>(x.rank==="dynamic"&&y.rank==="dynamic"?s[y.name]-s[x.name]:0)||(typeof x.rank=="number"?x.rank:1e9)-(typeof y.rank=="number"?y.rank:1e9)||(x.nameg.score-m.score||d(m.completion,g.completion))){let m=h.completion;!c||c.label!=m.label||c.detail!=m.detail||c.type!=null&&m.type!=null&&c.type!=m.type||c.apply!=m.apply||c.boost!=m.boost?l.push(h):U_(h.completion)>U_(c)&&(l[l.length-1]=h),c=h.completion}return l}class _h{constructor(e,n,r,s,i,a){this.options=e,this.attrs=n,this.tooltip=r,this.timestamp=s,this.selected=i,this.disabled=a}setSelected(e,n){return e==this.selected||e>=this.options.length?this:new _h(this.options,W_(n,e),this.tooltip,this.timestamp,e,this.disabled)}static build(e,n,r,s,i,a){if(s&&!a&&e.some(d=>d.isPending))return s.setDisabled();let l=Ihe(e,n);if(!l.length)return s&&e.some(d=>d.isPending)?s.setDisabled():null;let c=n.facet(ws).selectOnOpen?0:-1;if(s&&s.selected!=c&&s.selected!=-1){let d=s.options[s.selected].completion;for(let h=0;hh.hasResult()?Math.min(d,h.from):d,1e8),create:Hhe,above:i.aboveCursor},s?s.timestamp:Date.now(),c,!1)}map(e){return new _h(this.options,this.attrs,{...this.tooltip,pos:e.mapPos(this.tooltip.pos)},this.timestamp,this.selected,this.disabled)}setDisabled(){return new _h(this.options,this.attrs,this.tooltip,this.timestamp,this.selected,!0)}}class hy{constructor(e,n,r){this.active=e,this.id=n,this.open=r}static start(){return new hy(qhe,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:n}=e,r=n.facet(ws),i=(r.override||n.languageDataAt("autocomplete",sd(n)).map(Ehe)).map(c=>(this.active.find(h=>h.source==c)||new Oa(c,this.active.some(h=>h.state!=0)?1:0)).update(e,r));i.length==this.active.length&&i.every((c,d)=>c==this.active[d])&&(i=this.active);let a=this.open,l=e.effects.some(c=>c.is(L6));a&&e.docChanged&&(a=a.map(e.changes)),e.selection||i.some(c=>c.hasResult()&&e.changes.touchesRange(c.from,c.to))||!Lhe(i,this.active)||l?a=_h.build(i,n,this.id,a,r,l):a&&a.disabled&&!i.some(c=>c.isPending)&&(a=null),!a&&i.every(c=>!c.isPending)&&i.some(c=>c.hasResult())&&(i=i.map(c=>c.hasResult()?new Oa(c.source,0):c));for(let c of e.effects)c.is(iH)&&(a=a&&a.setSelected(c.value,this.id));return i==this.active&&a==this.open?this:new hy(i,this.id,a)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?Bhe:Fhe}}function Lhe(t,e){if(t==e)return!0;for(let n=0,r=0;;){for(;n-1&&(n["aria-activedescendant"]=t+"-"+e),n}const qhe=[];function sH(t,e){if(t.isUserEvent("input.complete")){let r=t.annotation(I6);if(r&&e.activateOnCompletion(r))return 12}let n=t.isUserEvent("input.type");return n&&e.activateOnTyping?5:n?1:t.isUserEvent("delete.backward")?2:t.selection?8:t.docChanged?16:0}class Oa{constructor(e,n,r=!1){this.source=e,this.state=n,this.explicit=r}hasResult(){return!1}get isPending(){return this.state==1}update(e,n){let r=sH(e,n),s=this;(r&8||r&16&&this.touches(e))&&(s=new Oa(s.source,0)),r&4&&s.state==0&&(s=new Oa(this.source,1)),s=s.updateFor(e,r);for(let i of e.effects)if(i.is(dy))s=new Oa(s.source,1,i.value);else if(i.is(rp))s=new Oa(s.source,0);else if(i.is(L6))for(let a of i.value)a.source==s.source&&(s=a);return s}updateFor(e,n){return this.map(e.changes)}map(e){return this}touches(e){return e.changes.touchesRange(sd(e.state))}}class Bh extends Oa{constructor(e,n,r,s,i,a){super(e,3,n),this.limit=r,this.result=s,this.from=i,this.to=a}hasResult(){return!0}updateFor(e,n){var r;if(!(n&3))return this.map(e.changes);let s=this.result;s.map&&!e.changes.empty&&(s=s.map(s,e.changes));let i=e.changes.mapPos(this.from),a=e.changes.mapPos(this.to,1),l=sd(e.state);if(l>a||!s||n&2&&(sd(e.startState)==this.from||ln.map(e))}}),iH=Qt.define(),yi=Os.define({create(){return hy.start()},update(t,e){return t.update(e)},provide:t=>[v6.from(t,e=>e.tooltip),Ze.contentAttributes.from(t,e=>e.attrs)]});function B6(t,e){const n=e.completion.apply||e.completion.label;let r=t.state.field(yi).active.find(s=>s.source==e.source);return r instanceof Bh?(typeof n=="string"?t.dispatch({...The(t.state,n,r.from,r.to),annotations:I6.of(e.completion)}):n(t,e.completion,r.from,r.to),!0):!1}const Hhe=Phe(yi,B6);function j1(t,e="option"){return n=>{let r=n.state.field(yi,!1);if(!r||!r.open||r.open.disabled||Date.now()-r.open.timestamp-1?r.open.selected+s*(t?1:-1):t?0:a-1;return l<0?l=e=="page"?0:a-1:l>=a&&(l=e=="page"?a-1:0),n.dispatch({effects:iH.of(l)}),!0}}const Qhe=t=>{let e=t.state.field(yi,!1);return t.state.readOnly||!e||!e.open||e.open.selected<0||e.open.disabled||Date.now()-e.open.timestampt.state.field(yi,!1)?(t.dispatch({effects:dy.of(!0)}),!0):!1,Vhe=t=>{let e=t.state.field(yi,!1);return!e||!e.active.some(n=>n.state!=0)?!1:(t.dispatch({effects:rp.of(null)}),!0)};class Uhe{constructor(e,n){this.active=e,this.context=n,this.time=Date.now(),this.updates=[],this.done=void 0}}const Whe=50,Ghe=1e3,Xhe=Yr.fromClass(class{constructor(t){this.view=t,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(let e of t.state.field(yi).active)e.isPending&&this.startQuery(e)}update(t){let e=t.state.field(yi),n=t.state.facet(ws);if(!t.selectionSet&&!t.docChanged&&t.startState.field(yi)==e)return;let r=t.transactions.some(i=>{let a=sH(i,n);return a&8||(i.selection||i.docChanged)&&!(a&3)});for(let i=0;iWhe&&Date.now()-a.time>Ghe){for(let l of a.context.abortListeners)try{l()}catch(c){bi(this.view.state,c)}a.context.abortListeners=null,this.running.splice(i--,1)}else a.updates.push(...t.transactions)}this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),t.transactions.some(i=>i.effects.some(a=>a.is(dy)))&&(this.pendingStart=!0);let s=this.pendingStart?50:n.activateOnTypingDelay;if(this.debounceUpdate=e.active.some(i=>i.isPending&&!this.running.some(a=>a.active.source==i.source))?setTimeout(()=>this.startUpdate(),s):-1,this.composing!=0)for(let i of t.transactions)i.isUserEvent("input.type")?this.composing=2:this.composing==2&&i.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;let{state:t}=this.view,e=t.field(yi);for(let n of e.active)n.isPending&&!this.running.some(r=>r.active.source==n.source)&&this.startQuery(n);this.running.length&&e.open&&e.open.disabled&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(ws).updateSyncTime))}startQuery(t){let{state:e}=this.view,n=sd(e),r=new tH(e,n,t.explicit,this.view),s=new Uhe(t,r);this.running.push(s),Promise.resolve(t.source(r)).then(i=>{s.context.aborted||(s.done=i||null,this.scheduleAccept())},i=>{this.view.dispatch({effects:rp.of(null)}),bi(this.view.state,i)})}scheduleAccept(){this.running.every(t=>t.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(ws).updateSyncTime))}accept(){var t;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],n=this.view.state.facet(ws),r=this.view.state.field(yi);for(let s=0;sl.source==i.active.source);if(a&&a.isPending)if(i.done==null){let l=new Oa(i.active.source,0);for(let c of i.updates)l=l.update(c,n);l.isPending||e.push(l)}else this.startQuery(a)}(e.length||r.open&&r.open.disabled)&&this.view.dispatch({effects:L6.of(e)})}},{eventHandlers:{blur(t){let e=this.view.state.field(yi,!1);if(e&&e.tooltip&&this.view.state.facet(ws).closeOnBlur){let n=e.open&&Rq(this.view,e.open.tooltip);(!n||!n.dom.contains(t.relatedTarget))&&setTimeout(()=>this.view.dispatch({effects:rp.of(null)}),10)}},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:dy.of(!1)}),20),this.composing=0}}}),Yhe=typeof navigator=="object"&&/Win/.test(navigator.platform),Khe=uu.highest(Ze.domEventHandlers({keydown(t,e){let n=e.state.field(yi,!1);if(!n||!n.open||n.open.disabled||n.open.selected<0||t.key.length>1||t.ctrlKey&&!(Yhe&&t.altKey)||t.metaKey)return!1;let r=n.open.options[n.open.selected],s=n.active.find(a=>a.source==r.source),i=r.completion.commitCharacters||s.result.commitCharacters;return i&&i.indexOf(t.key)>-1&&B6(e,r),!1}})),aH=Ze.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li, & > completion-section":{padding:"1px 3px",lineHeight:1.2},"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer"},"& > completion-section":{display:"list-item",borderBottom:"1px solid silver",paddingLeft:"0.5em",opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"···"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"400px",boxSizing:"border-box",whiteSpace:"pre-line"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:"30px"},".cm-completionInfo.cm-completionInfo-right-narrow":{left:"30px"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'ƒ'"}},".cm-completionIcon-class":{"&:after":{content:"'○'"}},".cm-completionIcon-interface":{"&:after":{content:"'◌'"}},".cm-completionIcon-variable":{"&:after":{content:"'𝑥'"}},".cm-completionIcon-constant":{"&:after":{content:"'𝐶'"}},".cm-completionIcon-type":{"&:after":{content:"'𝑡'"}},".cm-completionIcon-enum":{"&:after":{content:"'∪'"}},".cm-completionIcon-property":{"&:after":{content:"'□'"}},".cm-completionIcon-keyword":{"&:after":{content:"'🔑︎'"}},".cm-completionIcon-namespace":{"&:after":{content:"'▢'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class Zhe{constructor(e,n,r,s){this.field=e,this.line=n,this.from=r,this.to=s}}class F6{constructor(e,n,r){this.field=e,this.from=n,this.to=r}map(e){let n=e.mapPos(this.from,-1,Ds.TrackDel),r=e.mapPos(this.to,1,Ds.TrackDel);return n==null||r==null?null:new F6(this.field,n,r)}}class q6{constructor(e,n){this.lines=e,this.fieldPositions=n}instantiate(e,n){let r=[],s=[n],i=e.doc.lineAt(n),a=/^\s*/.exec(i.text)[0];for(let c of this.lines){if(r.length){let d=a,h=/^\t*/.exec(c)[0].length;for(let m=0;mnew F6(c.field,s[c.line]+c.from,s[c.line]+c.to));return{text:r,ranges:l}}static parse(e){let n=[],r=[],s=[],i;for(let a of e.split(/\r\n?|\n/)){for(;i=/[#$]\{(?:(\d+)(?::([^{}]*))?|((?:\\[{}]|[^{}])*))\}/.exec(a);){let l=i[1]?+i[1]:null,c=i[2]||i[3]||"",d=-1,h=c.replace(/\\[{}]/g,m=>m[1]);for(let m=0;m=d&&g.field++}for(let m of s)if(m.line==r.length&&m.from>i.index){let g=i[2]?3+(i[1]||"").length:2;m.from-=g,m.to-=g}s.push(new Zhe(d,r.length,i.index,i.index+h.length)),a=a.slice(0,i.index)+c+a.slice(i.index+i[0].length)}a=a.replace(/\\([{}])/g,(l,c,d)=>{for(let h of s)h.line==r.length&&h.from>d&&(h.from--,h.to--);return c}),r.push(a)}return new q6(r,s)}}let Jhe=Ot.widget({widget:new class extends Uo{toDOM(){let t=document.createElement("span");return t.className="cm-snippetFieldPosition",t}ignoreEvent(){return!1}}}),efe=Ot.mark({class:"cm-snippetField"});class _f{constructor(e,n){this.ranges=e,this.active=n,this.deco=Ot.set(e.map(r=>(r.from==r.to?Jhe:efe).range(r.from,r.to)),!0)}map(e){let n=[];for(let r of this.ranges){let s=r.map(e);if(!s)return null;n.push(s)}return new _f(n,this.active)}selectionInsideField(e){return e.ranges.every(n=>this.ranges.some(r=>r.field==this.active&&r.from<=n.from&&r.to>=n.to))}}const rg=Qt.define({map(t,e){return t&&t.map(e)}}),tfe=Qt.define(),sp=Os.define({create(){return null},update(t,e){for(let n of e.effects){if(n.is(rg))return n.value;if(n.is(tfe)&&t)return new _f(t.ranges,n.value)}return t&&e.docChanged&&(t=t.map(e.changes)),t&&e.selection&&!t.selectionInsideField(e.selection)&&(t=null),t},provide:t=>Ze.decorations.from(t,e=>e?e.deco:Ot.none)});function $6(t,e){return Me.create(t.filter(n=>n.field==e).map(n=>Me.range(n.from,n.to)))}function nfe(t){let e=q6.parse(t);return(n,r,s,i)=>{let{text:a,ranges:l}=e.instantiate(n.state,s),{main:c}=n.state.selection,d={changes:{from:s,to:i==c.from?c.to:i,insert:An.of(a)},scrollIntoView:!0,annotations:r?[I6.of(r),ss.userEvent.of("input.complete")]:void 0};if(l.length&&(d.selection=$6(l,0)),l.some(h=>h.field>0)){let h=new _f(l,0),m=d.effects=[rg.of(h)];n.state.field(sp,!1)===void 0&&m.push(Qt.appendConfig.of([sp,ofe,lfe,aH]))}n.dispatch(n.state.update(d))}}function oH(t){return({state:e,dispatch:n})=>{let r=e.field(sp,!1);if(!r||t<0&&r.active==0)return!1;let s=r.active+t,i=t>0&&!r.ranges.some(a=>a.field==s+t);return n(e.update({selection:$6(r.ranges,s),effects:rg.of(i?null:new _f(r.ranges,s)),scrollIntoView:!0})),!0}}const rfe=({state:t,dispatch:e})=>t.field(sp,!1)?(e(t.update({effects:rg.of(null)})),!0):!1,sfe=oH(1),ife=oH(-1),afe=[{key:"Tab",run:sfe,shift:ife},{key:"Escape",run:rfe}],G_=st.define({combine(t){return t.length?t[0]:afe}}),ofe=uu.highest(Yp.compute([G_],t=>t.facet(G_)));function wl(t,e){return{...e,apply:nfe(t)}}const lfe=Ze.domEventHandlers({mousedown(t,e){let n=e.state.field(sp,!1),r;if(!n||(r=e.posAtCoords({x:t.clientX,y:t.clientY}))==null)return!1;let s=n.ranges.find(i=>i.from<=r&&i.to>=r);return!s||s.field==n.active?!1:(e.dispatch({selection:$6(n.ranges,s.field),effects:rg.of(n.ranges.some(i=>i.field>s.field)?new _f(n.ranges,s.field):null),scrollIntoView:!0}),!0)}}),ip={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},Gu=Qt.define({map(t,e){let n=e.mapPos(t,-1,Ds.TrackAfter);return n??void 0}}),H6=new class extends od{};H6.startSide=1;H6.endSide=-1;const lH=Os.define({create(){return Bn.empty},update(t,e){if(t=t.map(e.changes),e.selection){let n=e.state.doc.lineAt(e.selection.main.head);t=t.update({filter:r=>r>=n.from&&r<=n.to})}for(let n of e.effects)n.is(Gu)&&(t=t.update({add:[H6.range(n.value,n.value+1)]}));return t}});function cfe(){return[dfe,lH]}const lS="()[]{}<>«»»«[]{}";function cH(t){for(let e=0;e{if((ufe?t.composing:t.compositionStarted)||t.state.readOnly)return!1;let s=t.state.selection.main;if(r.length>2||r.length==2&&ko(vi(r,0))==1||e!=s.from||n!=s.to)return!1;let i=mfe(t.state,r);return i?(t.dispatch(i),!0):!1}),hfe=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let r=uH(t,t.selection.main.head).brackets||ip.brackets,s=null,i=t.changeByRange(a=>{if(a.empty){let l=pfe(t.doc,a.head);for(let c of r)if(c==l&&Ob(t.doc,a.head)==cH(vi(c,0)))return{changes:{from:a.head-c.length,to:a.head+c.length},range:Me.cursor(a.head-c.length)}}return{range:s=a}});return s||e(t.update(i,{scrollIntoView:!0,userEvent:"delete.backward"})),!s},ffe=[{key:"Backspace",run:hfe}];function mfe(t,e){let n=uH(t,t.selection.main.head),r=n.brackets||ip.brackets;for(let s of r){let i=cH(vi(s,0));if(e==s)return i==s?vfe(t,s,r.indexOf(s+s+s)>-1,n):gfe(t,s,i,n.before||ip.before);if(e==i&&dH(t,t.selection.main.from))return xfe(t,s,i)}return null}function dH(t,e){let n=!1;return t.field(lH).between(0,t.doc.length,r=>{r==e&&(n=!0)}),n}function Ob(t,e){let n=t.sliceString(e,e+2);return n.slice(0,ko(vi(n,0)))}function pfe(t,e){let n=t.sliceString(e-2,e);return ko(vi(n,0))==n.length?n:n.slice(1)}function gfe(t,e,n,r){let s=null,i=t.changeByRange(a=>{if(!a.empty)return{changes:[{insert:e,from:a.from},{insert:n,from:a.to}],effects:Gu.of(a.to+e.length),range:Me.range(a.anchor+e.length,a.head+e.length)};let l=Ob(t.doc,a.head);return!l||/\s/.test(l)||r.indexOf(l)>-1?{changes:{insert:e+n,from:a.head},effects:Gu.of(a.head+e.length),range:Me.cursor(a.head+e.length)}:{range:s=a}});return s?null:t.update(i,{scrollIntoView:!0,userEvent:"input.type"})}function xfe(t,e,n){let r=null,s=t.changeByRange(i=>i.empty&&Ob(t.doc,i.head)==n?{changes:{from:i.head,to:i.head+n.length,insert:n},range:Me.cursor(i.head+n.length)}:r={range:i});return r?null:t.update(s,{scrollIntoView:!0,userEvent:"input.type"})}function vfe(t,e,n,r){let s=r.stringPrefixes||ip.stringPrefixes,i=null,a=t.changeByRange(l=>{if(!l.empty)return{changes:[{insert:e,from:l.from},{insert:e,from:l.to}],effects:Gu.of(l.to+e.length),range:Me.range(l.anchor+e.length,l.head+e.length)};let c=l.head,d=Ob(t.doc,c),h;if(d==e){if(X_(t,c))return{changes:{insert:e+e,from:c},effects:Gu.of(c+e.length),range:Me.cursor(c+e.length)};if(dH(t,c)){let g=n&&t.sliceDoc(c,c+e.length*3)==e+e+e?e+e+e:e;return{changes:{from:c,to:c+g.length,insert:g},range:Me.cursor(c+g.length)}}}else{if(n&&t.sliceDoc(c-2*e.length,c)==e+e&&(h=Y_(t,c-2*e.length,s))>-1&&X_(t,h))return{changes:{insert:e+e+e+e,from:c},effects:Gu.of(c+e.length),range:Me.cursor(c+e.length)};if(t.charCategorizer(c)(d)!=Tr.Word&&Y_(t,c,s)>-1&&!yfe(t,c,e,s))return{changes:{insert:e+e,from:c},effects:Gu.of(c+e.length),range:Me.cursor(c+e.length)}}return{range:i=l}});return i?null:t.update(a,{scrollIntoView:!0,userEvent:"input.type"})}function X_(t,e){let n=Ss(t).resolveInner(e+1);return n.parent&&n.from==e}function yfe(t,e,n,r){let s=Ss(t).resolveInner(e,-1),i=r.reduce((a,l)=>Math.max(a,l.length),0);for(let a=0;a<5;a++){let l=t.sliceDoc(s.from,Math.min(s.to,s.from+n.length+i)),c=l.indexOf(n);if(!c||c>-1&&r.indexOf(l.slice(0,c))>-1){let h=s.firstChild;for(;h&&h.from==s.from&&h.to-h.from>n.length+c;){if(t.sliceDoc(h.to-n.length,h.to)==n)return!1;h=h.firstChild}return!0}let d=s.to==e&&s.parent;if(!d)break;s=d}return!1}function Y_(t,e,n){let r=t.charCategorizer(e);if(r(t.sliceDoc(e-1,e))!=Tr.Word)return e;for(let s of n){let i=e-s.length;if(t.sliceDoc(i,e)==s&&r(t.sliceDoc(i-1,i))!=Tr.Word)return i}return-1}function bfe(t={}){return[Khe,yi,ws.of(t),Xhe,wfe,aH]}const hH=[{key:"Ctrl-Space",run:oS},{mac:"Alt-`",run:oS},{mac:"Alt-i",run:oS},{key:"Escape",run:Vhe},{key:"ArrowDown",run:j1(!0)},{key:"ArrowUp",run:j1(!1)},{key:"PageDown",run:j1(!0,"page")},{key:"PageUp",run:j1(!1,"page")},{key:"Enter",run:Qhe}],wfe=uu.highest(Yp.computeN([ws],t=>t.facet(ws).defaultKeymap?[hH]:[]));class K_{constructor(e,n,r){this.from=e,this.to=n,this.diagnostic=r}}class Qu{constructor(e,n,r){this.diagnostics=e,this.panel=n,this.selected=r}static init(e,n,r){let s=r.facet(ap).markerFilter;s&&(e=s(e,r));let i=e.slice().sort((x,y)=>x.from-y.from||x.to-y.to),a=new Hl,l=[],c=0,d=r.doc.iter(),h=0,m=r.doc.length;for(let x=0;;){let y=x==i.length?null:i[x];if(!y&&!l.length)break;let w,S;if(l.length)w=c,S=l.reduce((N,T)=>Math.min(N,T.to),y&&y.from>w?y.from:1e8);else{if(w=y.from,w>m)break;S=y.to,l.push(y),x++}for(;xN.from||N.to==w))l.push(N),x++,S=Math.min(N.to,S);else{S=Math.min(N.from,S);break}}S=Math.min(S,m);let k=!1;if(l.some(N=>N.from==w&&(N.to==S||S==m))&&(k=w==S,!k&&S-w<10)){let N=w-(h+d.value.length);N>0&&(d.next(N),h=w);for(let T=w;;){if(T>=S){k=!0;break}if(!d.lineBreak&&h+d.value.length>T)break;T=h+d.value.length,h+=d.value.length,d.next()}}let j=Dfe(l);if(k)a.add(w,w,Ot.widget({widget:new _fe(j),diagnostics:l.slice()}));else{let N=l.reduce((T,E)=>E.markClass?T+" "+E.markClass:T,"");a.add(w,S,Ot.mark({class:"cm-lintRange cm-lintRange-"+j+N,diagnostics:l.slice(),inclusiveEnd:l.some(T=>T.to>S)}))}if(c=S,c==m)break;for(let N=0;N{if(!(e&&a.diagnostics.indexOf(e)<0))if(!r)r=new K_(s,i,e||a.diagnostics[0]);else{if(a.diagnostics.indexOf(r.diagnostic)<0)return!1;r=new K_(r.from,i,r.diagnostic)}}),r}function Sfe(t,e){let n=e.pos,r=e.end||n,s=t.state.facet(ap).hideOn(t,n,r);if(s!=null)return s;let i=t.startState.doc.lineAt(e.pos);return!!(t.effects.some(a=>a.is(fH))||t.changes.touchesRange(i.from,Math.max(i.to,r)))}function kfe(t,e){return t.field(Wi,!1)?e:e.concat(Qt.appendConfig.of(Pfe))}const fH=Qt.define(),Q6=Qt.define(),mH=Qt.define(),Wi=Os.define({create(){return new Qu(Ot.none,null,null)},update(t,e){if(e.docChanged&&t.diagnostics.size){let n=t.diagnostics.map(e.changes),r=null,s=t.panel;if(t.selected){let i=e.changes.mapPos(t.selected.from,1);r=of(n,t.selected.diagnostic,i)||of(n,null,i)}!n.size&&s&&e.state.facet(ap).autoPanel&&(s=null),t=new Qu(n,s,r)}for(let n of e.effects)if(n.is(fH)){let r=e.state.facet(ap).autoPanel?n.value.length?op.open:null:t.panel;t=Qu.init(n.value,r,e.state)}else n.is(Q6)?t=new Qu(t.diagnostics,n.value?op.open:null,t.selected):n.is(mH)&&(t=new Qu(t.diagnostics,t.panel,n.value));return t},provide:t=>[Y0.from(t,e=>e.panel),Ze.decorations.from(t,e=>e.diagnostics)]}),Ofe=Ot.mark({class:"cm-lintRange cm-lintRange-active"});function jfe(t,e,n){let{diagnostics:r}=t.state.field(Wi),s,i=-1,a=-1;r.between(e-(n<0?1:0),e+(n>0?1:0),(c,d,{spec:h})=>{if(e>=c&&e<=d&&(c==d||(e>c||n>0)&&(egH(t,n,!1)))}const Cfe=t=>{let e=t.state.field(Wi,!1);(!e||!e.panel)&&t.dispatch({effects:kfe(t.state,[Q6.of(!0)])});let n=X0(t,op.open);return n&&n.dom.querySelector(".cm-panel-lint ul").focus(),!0},Z_=t=>{let e=t.state.field(Wi,!1);return!e||!e.panel?!1:(t.dispatch({effects:Q6.of(!1)}),!0)},Tfe=t=>{let e=t.state.field(Wi,!1);if(!e)return!1;let n=t.state.selection.main,r=e.diagnostics.iter(n.to+1);return!r.value&&(r=e.diagnostics.iter(0),!r.value||r.from==n.from&&r.to==n.to)?!1:(t.dispatch({selection:{anchor:r.from,head:r.to},scrollIntoView:!0}),!0)},Efe=[{key:"Mod-Shift-m",run:Cfe,preventDefault:!0},{key:"F8",run:Tfe}],ap=st.define({combine(t){return{sources:t.map(e=>e.source).filter(e=>e!=null),...Vo(t.map(e=>e.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null,hideOn:()=>null},{delay:Math.max,markerFilter:J_,tooltipFilter:J_,needsRefresh:(e,n)=>e?n?r=>e(r)||n(r):e:n,hideOn:(e,n)=>e?n?(r,s,i)=>e(r,s,i)||n(r,s,i):e:n,autoPanel:(e,n)=>e||n})}}});function J_(t,e){return t?e?(n,r)=>e(t(n,r),r):t:e}function pH(t){let e=[];if(t)e:for(let{name:n}of t){for(let r=0;ri.toLowerCase()==s.toLowerCase())){e.push(s);continue e}}e.push("")}return e}function gH(t,e,n){var r;let s=n?pH(e.actions):[];return lr("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},lr("span",{class:"cm-diagnosticText"},e.renderMessage?e.renderMessage(t):e.message),(r=e.actions)===null||r===void 0?void 0:r.map((i,a)=>{let l=!1,c=x=>{if(x.preventDefault(),l)return;l=!0;let y=of(t.state.field(Wi).diagnostics,e);y&&i.apply(t,y.from,y.to)},{name:d}=i,h=s[a]?d.indexOf(s[a]):-1,m=h<0?d:[d.slice(0,h),lr("u",d.slice(h,h+1)),d.slice(h+1)],g=i.markClass?" "+i.markClass:"";return lr("button",{type:"button",class:"cm-diagnosticAction"+g,onclick:c,onmousedown:c,"aria-label":` Action: ${d}${h<0?"":` (access key "${s[a]})"`}.`},m)}),e.source&&lr("div",{class:"cm-diagnosticSource"},e.source))}class _fe extends Uo{constructor(e){super(),this.sev=e}eq(e){return e.sev==this.sev}toDOM(){return lr("span",{class:"cm-lintPoint cm-lintPoint-"+this.sev})}}class eA{constructor(e,n){this.diagnostic=n,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=gH(e,n,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class op{constructor(e){this.view=e,this.items=[];let n=s=>{if(s.keyCode==27)Z_(this.view),this.view.focus();else if(s.keyCode==38||s.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(s.keyCode==40||s.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(s.keyCode==36)this.moveSelection(0);else if(s.keyCode==35)this.moveSelection(this.items.length-1);else if(s.keyCode==13)this.view.focus();else if(s.keyCode>=65&&s.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:i}=this.items[this.selectedIndex],a=pH(i.actions);for(let l=0;l{for(let i=0;iZ_(this.view)},"×")),this.update()}get selectedIndex(){let e=this.view.state.field(Wi).selected;if(!e)return-1;for(let n=0;n{for(let h of d.diagnostics){if(a.has(h))continue;a.add(h);let m=-1,g;for(let x=r;xr&&(this.items.splice(r,m-r),s=!0)),n&&g.diagnostic==n.diagnostic?g.dom.hasAttribute("aria-selected")||(g.dom.setAttribute("aria-selected","true"),i=g):g.dom.hasAttribute("aria-selected")&&g.dom.removeAttribute("aria-selected"),r++}});r({sel:i.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:l,panel:c})=>{let d=c.height/this.list.offsetHeight;l.topc.bottom&&(this.list.scrollTop+=(l.bottom-c.bottom)/d)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),s&&this.sync()}sync(){let e=this.list.firstChild;function n(){let r=e;e=r.nextSibling,r.remove()}for(let r of this.items)if(r.dom.parentNode==this.list){for(;e!=r.dom;)n();e=r.dom.nextSibling}else this.list.insertBefore(r.dom,e);for(;e;)n()}moveSelection(e){if(this.selectedIndex<0)return;let n=this.view.state.field(Wi),r=of(n.diagnostics,this.items[e].diagnostic);r&&this.view.dispatch({selection:{anchor:r.from,head:r.to},scrollIntoView:!0,effects:mH.of(r)})}static open(e){return new op(e)}}function Afe(t,e='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,${encodeURIComponent(t)}')`}function N1(t){return Afe(``,'width="6" height="3"')}const Mfe=Ze.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnostic-hint":{borderLeft:"5px solid #66d"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px",cursor:"pointer"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:N1("#d11")},".cm-lintRange-warning":{backgroundImage:N1("orange")},".cm-lintRange-info":{backgroundImage:N1("#999")},".cm-lintRange-hint":{backgroundImage:N1("#66d")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-lintPoint-hint":{"&:after":{borderBottomColor:"#66d"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}}});function Rfe(t){return t=="error"?4:t=="warning"?3:t=="info"?2:1}function Dfe(t){let e="hint",n=1;for(let r of t){let s=Rfe(r.severity);s>n&&(n=s,e=r.severity)}return e}const Pfe=[Wi,Ze.decorations.compute([Wi],t=>{let{selected:e,panel:n}=t.field(Wi);return!e||!n||e.from==e.to?Ot.none:Ot.set([Ofe.range(e.from,e.to)])}),gce(jfe,{hideOn:Sfe}),Mfe];var tA=function(e){e===void 0&&(e={});var{crosshairCursor:n=!1}=e,r=[];e.closeBracketsKeymap!==!1&&(r=r.concat(ffe)),e.defaultKeymap!==!1&&(r=r.concat(Yde)),e.searchKeymap!==!1&&(r=r.concat(She)),e.historyKeymap!==!1&&(r=r.concat(rde)),e.foldKeymap!==!1&&(r=r.concat(fue)),e.completionKeymap!==!1&&(r=r.concat(hH)),e.lintKeymap!==!1&&(r=r.concat(Efe));var s=[];return e.lineNumbers!==!1&&s.push(Cce()),e.highlightActiveLineGutter!==!1&&s.push(_ce()),e.highlightSpecialChars!==!1&&s.push(Vle()),e.history!==!1&&s.push(Gue()),e.foldGutter!==!1&&s.push(xue()),e.drawSelection!==!1&&s.push(Dle()),e.dropCursor!==!1&&s.push(Ble()),e.allowMultipleSelections!==!1&&s.push(Nn.allowMultipleSelections.of(!0)),e.indentOnInput!==!1&&s.push(sue()),e.syntaxHighlighting!==!1&&s.push(r$(wue,{fallback:!0})),e.bracketMatching!==!1&&s.push(Tue()),e.closeBrackets!==!1&&s.push(cfe()),e.autocompletion!==!1&&s.push(bfe()),e.rectangularSelection!==!1&&s.push(ice()),n!==!1&&s.push(lce()),e.highlightActiveLine!==!1&&s.push(Kle()),e.highlightSelectionMatches!==!1&&s.push(rhe()),e.tabSize&&typeof e.tabSize=="number"&&s.push(Zp.of(" ".repeat(e.tabSize))),s.concat([Yp.of(r.flat())]).filter(Boolean)};const zfe="#e5c07b",nA="#e06c75",Ife="#56b6c2",Lfe="#ffffff",bv="#abb2bf",gO="#7d8799",Bfe="#61afef",Ffe="#98c379",rA="#d19a66",qfe="#c678dd",$fe="#21252b",sA="#2c313a",iA="#282c34",cS="#353a42",Hfe="#3E4451",aA="#528bff",Qfe=Ze.theme({"&":{color:bv,backgroundColor:iA},".cm-content":{caretColor:aA},".cm-cursor, .cm-dropCursor":{borderLeftColor:aA},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:Hfe},".cm-panels":{backgroundColor:$fe,color:bv},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:iA,color:gO,border:"none"},".cm-activeLineGutter":{backgroundColor:sA},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:cS},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:cS,borderBottomColor:cS},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:sA,color:bv}}},{dark:!0}),Vfe=eg.define([{tag:ye.keyword,color:qfe},{tag:[ye.name,ye.deleted,ye.character,ye.propertyName,ye.macroName],color:nA},{tag:[ye.function(ye.variableName),ye.labelName],color:Bfe},{tag:[ye.color,ye.constant(ye.name),ye.standard(ye.name)],color:rA},{tag:[ye.definition(ye.name),ye.separator],color:bv},{tag:[ye.typeName,ye.className,ye.number,ye.changed,ye.annotation,ye.modifier,ye.self,ye.namespace],color:zfe},{tag:[ye.operator,ye.operatorKeyword,ye.url,ye.escape,ye.regexp,ye.link,ye.special(ye.string)],color:Ife},{tag:[ye.meta,ye.comment],color:gO},{tag:ye.strong,fontWeight:"bold"},{tag:ye.emphasis,fontStyle:"italic"},{tag:ye.strikethrough,textDecoration:"line-through"},{tag:ye.link,color:gO,textDecoration:"underline"},{tag:ye.heading,fontWeight:"bold",color:nA},{tag:[ye.atom,ye.bool,ye.special(ye.variableName)],color:rA},{tag:[ye.processingInstruction,ye.string,ye.inserted],color:Ffe},{tag:ye.invalid,color:Lfe}]),xH=[Qfe,r$(Vfe)];var Ufe=Ze.theme({"&":{backgroundColor:"#fff"}},{dark:!1}),Wfe=function(e){e===void 0&&(e={});var{indentWithTab:n=!0,editable:r=!0,readOnly:s=!1,theme:i="light",placeholder:a="",basicSetup:l=!0}=e,c=[];switch(n&&c.unshift(Yp.of([Kde])),l&&(typeof l=="boolean"?c.unshift(tA()):c.unshift(tA(l))),a&&c.unshift(tce(a)),i){case"light":c.push(Ufe);break;case"dark":c.push(xH);break;case"none":break;default:c.push(i);break}return r===!1&&c.push(Ze.editable.of(!1)),s&&c.push(Nn.readOnly.of(!0)),[...c]},Gfe=t=>({line:t.state.doc.lineAt(t.state.selection.main.from),lineCount:t.state.doc.lines,lineBreak:t.state.lineBreak,length:t.state.doc.length,readOnly:t.state.readOnly,tabSize:t.state.tabSize,selection:t.state.selection,selectionAsSingle:t.state.selection.asSingle().main,ranges:t.state.selection.ranges,selectionCode:t.state.sliceDoc(t.state.selection.main.from,t.state.selection.main.to),selections:t.state.selection.ranges.map(e=>t.state.sliceDoc(e.from,e.to)),selectedText:t.state.selection.ranges.some(e=>!e.empty)});class Xfe{constructor(e,n){this.timeLeftMS=void 0,this.timeoutMS=void 0,this.isCancelled=!1,this.isTimeExhausted=!1,this.callbacks=[],this.timeLeftMS=n,this.timeoutMS=n,this.callbacks.push(e)}tick(){if(!this.isCancelled&&!this.isTimeExhausted&&(this.timeLeftMS--,this.timeLeftMS<=0)){this.isTimeExhausted=!0;var e=this.callbacks.slice();this.callbacks.length=0,e.forEach(n=>{try{n()}catch(r){console.error("TimeoutLatch callback error:",r)}})}}cancel(){this.isCancelled=!0,this.callbacks.length=0}reset(){this.timeLeftMS=this.timeoutMS,this.isCancelled=!1,this.isTimeExhausted=!1}get isDone(){return this.isCancelled||this.isTimeExhausted}}class oA{constructor(){this.interval=null,this.latches=new Set}add(e){this.latches.add(e),this.start()}remove(e){this.latches.delete(e),this.latches.size===0&&this.stop()}start(){this.interval===null&&(this.interval=setInterval(()=>{this.latches.forEach(e=>{e.tick(),e.isDone&&this.remove(e)})},1))}stop(){this.interval!==null&&(clearInterval(this.interval),this.interval=null)}}var uS=null,Yfe=()=>typeof window>"u"?new oA:(uS||(uS=new oA),uS),lA=Qo.define(),Kfe=200,Zfe=[];function Jfe(t){var{value:e,selection:n,onChange:r,onStatistics:s,onCreateEditor:i,onUpdate:a,extensions:l=Zfe,autoFocus:c,theme:d="light",height:h=null,minHeight:m=null,maxHeight:g=null,width:x=null,minWidth:y=null,maxWidth:w=null,placeholder:S="",editable:k=!0,readOnly:j=!1,indentWithTab:N=!0,basicSetup:T=!0,root:E,initialState:_}=t,[A,D]=b.useState(),[q,B]=b.useState(),[H,W]=b.useState(),ee=b.useState(()=>({current:null}))[0],I=b.useState(()=>({current:null}))[0],V=Ze.theme({"&":{height:h,minHeight:m,maxHeight:g,width:x,minWidth:y,maxWidth:w},"& .cm-scroller":{height:"100% !important"}}),L=Ze.updateListener.of(Y=>{if(Y.docChanged&&typeof r=="function"&&!Y.transactions.some(X=>X.annotation(lA))){ee.current?ee.current.reset():(ee.current=new Xfe(()=>{if(I.current){var X=I.current;I.current=null,X()}ee.current=null},Kfe),Yfe().add(ee.current));var R=Y.state.doc,ie=R.toString();r(ie,Y)}s&&s(Gfe(Y))}),$=Wfe({theme:d,editable:k,readOnly:j,placeholder:S,indentWithTab:N,basicSetup:T}),K=[L,V,...$];return a&&typeof a=="function"&&K.push(Ze.updateListener.of(a)),K=K.concat(l),b.useLayoutEffect(()=>{if(A&&!H){var Y={doc:e,selection:n,extensions:K},R=_?Nn.fromJSON(_.json,Y,_.fields):Nn.create(Y);if(W(R),!q){var ie=new Ze({state:R,parent:A,root:E});B(ie),i&&i(ie,R)}}return()=>{q&&(W(void 0),B(void 0))}},[A,H]),b.useEffect(()=>{t.container&&D(t.container)},[t.container]),b.useEffect(()=>()=>{q&&(q.destroy(),B(void 0)),ee.current&&(ee.current.cancel(),ee.current=null)},[q]),b.useEffect(()=>{c&&q&&q.focus()},[c,q]),b.useEffect(()=>{q&&q.dispatch({effects:Qt.reconfigure.of(K)})},[d,l,h,m,g,x,y,w,S,k,j,N,T,r,a]),b.useEffect(()=>{if(e!==void 0){var Y=q?q.state.doc.toString():"";if(q&&e!==Y){var R=ee.current&&!ee.current.isDone,ie=()=>{q&&e!==q.state.doc.toString()&&q.dispatch({changes:{from:0,to:q.state.doc.toString().length,insert:e||""},annotations:[lA.of(!0)]})};R?I.current=ie:ie()}}},[e,q]),{state:H,setState:W,view:q,setView:B,container:A,setContainer:D}}var eme=["className","value","selection","extensions","onChange","onStatistics","onCreateEditor","onUpdate","autoFocus","theme","height","minHeight","maxHeight","width","minWidth","maxWidth","basicSetup","placeholder","indentWithTab","editable","readOnly","root","initialState"],vH=b.forwardRef((t,e)=>{var{className:n,value:r="",selection:s,extensions:i=[],onChange:a,onStatistics:l,onCreateEditor:c,onUpdate:d,autoFocus:h,theme:m="light",height:g,minHeight:x,maxHeight:y,width:w,minWidth:S,maxWidth:k,basicSetup:j,placeholder:N,indentWithTab:T,editable:E,readOnly:_,root:A,initialState:D}=t,q=zJ(t,eme),B=b.useRef(null),{state:H,view:W,container:ee,setContainer:I}=Jfe({root:A,value:r,autoFocus:h,theme:m,height:g,minHeight:x,maxHeight:y,width:w,minWidth:S,maxWidth:k,basicSetup:j,placeholder:N,indentWithTab:T,editable:E,readOnly:_,selection:s,onChange:a,onStatistics:l,onCreateEditor:c,onUpdate:d,extensions:i,initialState:D});b.useImperativeHandle(e,()=>({editor:B.current,state:H,view:W}),[B,ee,H,W]);var V=b.useCallback($=>{B.current=$,I($)},[I]);if(typeof r!="string")throw new Error("value must be typeof string but got "+typeof r);var L=typeof m=="string"?"cm-theme-"+m:"cm-theme";return o.jsx("div",IJ({ref:V,className:""+L+(n?" "+n:"")},q))});vH.displayName="CodeMirror";var cA={};class fy{constructor(e,n,r,s,i,a,l,c,d,h=0,m){this.p=e,this.stack=n,this.state=r,this.reducePos=s,this.pos=i,this.score=a,this.buffer=l,this.bufferBase=c,this.curContext=d,this.lookAhead=h,this.parent=m}toString(){return`[${this.stack.filter((e,n)=>n%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,n,r=0){let s=e.parser.context;return new fy(e,[],n,r,r,0,[],0,s?new uA(s,s.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,n){this.stack.push(this.state,n,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var n;let r=e>>19,s=e&65535,{parser:i}=this.p,a=this.reducePos=2e3&&!(!((n=this.p.parser.nodeSet.types[s])===null||n===void 0)&&n.isAnonymous)&&(d==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=h):this.p.lastBigReductionSizec;)this.stack.pop();this.reduceContext(s,d)}storeNode(e,n,r,s=4,i=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]0&&a.buffer[l-4]==0&&a.buffer[l-1]>-1){if(n==r)return;if(a.buffer[l-2]>=n){a.buffer[l-2]=r;return}}}if(!i||this.pos==r)this.buffer.push(e,n,r,s);else{let a=this.buffer.length;if(a>0&&(this.buffer[a-4]!=0||this.buffer[a-1]<0)){let l=!1;for(let c=a;c>0&&this.buffer[c-2]>r;c-=4)if(this.buffer[c-1]>=0){l=!0;break}if(l)for(;a>0&&this.buffer[a-2]>r;)this.buffer[a]=this.buffer[a-4],this.buffer[a+1]=this.buffer[a-3],this.buffer[a+2]=this.buffer[a-2],this.buffer[a+3]=this.buffer[a-1],a-=4,s>4&&(s-=4)}this.buffer[a]=e,this.buffer[a+1]=n,this.buffer[a+2]=r,this.buffer[a+3]=s}}shift(e,n,r,s){if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let i=e,{parser:a}=this.p;(s>this.pos||n<=a.maxNode)&&(this.pos=s,a.stateFlag(i,1)||(this.reducePos=s)),this.pushState(i,r),this.shiftContext(n,r),n<=a.maxNode&&this.buffer.push(n,r,s,4)}else this.pos=s,this.shiftContext(n,r),n<=this.p.parser.maxNode&&this.buffer.push(n,r,s,4)}apply(e,n,r,s){e&65536?this.reduce(e):this.shift(e,n,r,s)}useNode(e,n){let r=this.p.reused.length-1;(r<0||this.p.reused[r]!=e)&&(this.p.reused.push(e),r++);let s=this.pos;this.reducePos=this.pos=s+e.length,this.pushState(n,s),this.buffer.push(r,s,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,n=e.buffer.length;for(;n>0&&e.buffer[n-2]>e.reducePos;)n-=4;let r=e.buffer.slice(n),s=e.bufferBase+n;for(;e&&s==e.bufferBase;)e=e.parent;return new fy(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,r,s,this.curContext,this.lookAhead,e)}recoverByDelete(e,n){let r=e<=this.p.parser.maxNode;r&&this.storeNode(e,this.pos,n,4),this.storeNode(0,this.pos,n,r?8:4),this.pos=this.reducePos=n,this.score-=190}canShift(e){for(let n=new tme(this);;){let r=this.p.parser.stateSlot(n.state,4)||this.p.parser.hasAction(n.state,e);if(r==0)return!1;if((r&65536)==0)return!0;n.reduce(r)}}recoverByInsert(e){if(this.stack.length>=300)return[];let n=this.p.parser.nextStates(this.state);if(n.length>8||this.stack.length>=120){let s=[];for(let i=0,a;ic&1&&l==a)||s.push(n[i],a)}n=s}let r=[];for(let s=0;s>19,s=n&65535,i=this.stack.length-r*3;if(i<0||e.getGoto(this.stack[i],s,!1)<0){let a=this.findForcedReduction();if(a==null)return!1;n=a}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(n),!0}findForcedReduction(){let{parser:e}=this.p,n=[],r=(s,i)=>{if(!n.includes(s))return n.push(s),e.allActions(s,a=>{if(!(a&393216))if(a&65536){let l=(a>>19)-i;if(l>1){let c=a&65535,d=this.stack.length-l*3;if(d>=0&&e.getGoto(this.stack[d],c,!1)>=0)return l<<19|65536|c}}else{let l=r(a,i+1);if(l!=null)return l}})};return r(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let n=0;nthis.lookAhead&&(this.emitLookAhead(),this.lookAhead=e)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}}class uA{constructor(e,n){this.tracker=e,this.context=n,this.hash=e.strict?e.hash(n):0}}class tme{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let n=e&65535,r=e>>19;r==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(r-1)*3;let s=this.start.p.parser.getGoto(this.stack[this.base-3],n,!0);this.state=s}}class my{constructor(e,n,r){this.stack=e,this.pos=n,this.index=r,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,n=e.bufferBase+e.buffer.length){return new my(e,n,n-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new my(this.stack,this.pos,this.index)}}function C1(t,e=Uint16Array){if(typeof t!="string")return t;let n=null;for(let r=0,s=0;r=92&&a--,a>=34&&a--;let c=a-32;if(c>=46&&(c-=46,l=!0),i+=c,l)break;i*=46}n?n[s++]=i:n=new e(i)}return n}class wv{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const dA=new wv;class nme{constructor(e,n){this.input=e,this.ranges=n,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=dA,this.rangeIndex=0,this.pos=this.chunkPos=n[0].from,this.range=n[0],this.end=n[n.length-1].to,this.readNext()}resolveOffset(e,n){let r=this.range,s=this.rangeIndex,i=this.pos+e;for(;ir.to:i>=r.to;){if(s==this.ranges.length-1)return null;let a=this.ranges[++s];i+=a.from-r.to,r=a}return i}clipPos(e){if(e>=this.range.from&&ee)return Math.max(e,n.from);return this.end}peek(e){let n=this.chunkOff+e,r,s;if(n>=0&&n=this.chunk2Pos&&rl.to&&(this.chunk2=this.chunk2.slice(0,l.to-r)),s=this.chunk2.charCodeAt(0)}}return r>=this.token.lookAhead&&(this.token.lookAhead=r+1),s}acceptToken(e,n=0){let r=n?this.resolveOffset(n,-1):this.pos;if(r==null||r=this.chunk2Pos&&this.posthis.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,n){if(n?(this.token=n,n.start=e,n.lookAhead=e+1,n.value=n.extended=-1):this.token=dA,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e=this.chunkPos&&n<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,n-this.chunkPos);if(e>=this.chunk2Pos&&n<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,n-this.chunk2Pos);if(e>=this.range.from&&n<=this.range.to)return this.input.read(e,n);let r="";for(let s of this.ranges){if(s.from>=n)break;s.to>e&&(r+=this.input.read(Math.max(s.from,e),Math.min(s.to,n)))}return r}}class Fh{constructor(e,n){this.data=e,this.id=n}token(e,n){let{parser:r}=n.p;rme(this.data,e,n,this.id,r.data,r.tokenPrecTable)}}Fh.prototype.contextual=Fh.prototype.fallback=Fh.prototype.extend=!1;Fh.prototype.fallback=Fh.prototype.extend=!1;class jb{constructor(e,n={}){this.token=e,this.contextual=!!n.contextual,this.fallback=!!n.fallback,this.extend=!!n.extend}}function rme(t,e,n,r,s,i){let a=0,l=1<0){let y=t[x];if(c.allows(y)&&(e.token.value==-1||e.token.value==y||sme(y,e.token.value,s,i))){e.acceptToken(y);break}}let h=e.next,m=0,g=t[a+2];if(e.next<0&&g>m&&t[d+g*3-3]==65535){a=t[d+g*3-1];continue e}for(;m>1,y=d+x+(x<<1),w=t[y],S=t[y+1]||65536;if(h=S)m=x+1;else{a=t[y+2],e.advance();continue e}}break}}function hA(t,e,n){for(let r=e,s;(s=t[r])!=65535;r++)if(s==n)return r-e;return-1}function sme(t,e,n,r){let s=hA(n,r,e);return s<0||hA(n,r,t)e)&&!r.type.isError)return n<0?Math.max(0,Math.min(r.to-1,e-25)):Math.min(t.length,Math.max(r.from+1,e+25));if(n<0?r.prevSibling():r.nextSibling())break;if(!r.parent())return n<0?0:t.length}}class ime{constructor(e,n){this.fragments=e,this.nodeSet=n,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?fA(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?fA(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(ee)return this.nextStart=a,null;if(i instanceof ur){if(a==e){if(a=Math.max(this.safeFrom,e)&&(this.trees.push(i),this.start.push(a),this.index.push(0))}else this.index[n]++,this.nextStart=a+i.length}}}class ame{constructor(e,n){this.stream=n,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(r=>new wv)}getActions(e){let n=0,r=null,{parser:s}=e.p,{tokenizers:i}=s,a=s.stateSlot(e.state,3),l=e.curContext?e.curContext.hash:0,c=0;for(let d=0;dm.end+25&&(c=Math.max(m.lookAhead,c)),m.value!=0)){let g=n;if(m.extended>-1&&(n=this.addActions(e,m.extended,m.end,n)),n=this.addActions(e,m.value,m.end,n),!h.extend&&(r=m,n>g))break}}for(;this.actions.length>n;)this.actions.pop();return c&&e.setLookAhead(c),!r&&e.pos==this.stream.end&&(r=new wv,r.value=e.p.parser.eofTerm,r.start=r.end=e.pos,n=this.addActions(e,r.value,r.end,n)),this.mainToken=r,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let n=new wv,{pos:r,p:s}=e;return n.start=r,n.end=Math.min(r+1,s.stream.end),n.value=r==s.stream.end?s.parser.eofTerm:0,n}updateCachedToken(e,n,r){let s=this.stream.clipPos(r.pos);if(n.token(this.stream.reset(s,e),r),e.value>-1){let{parser:i}=r.p;for(let a=0;a=0&&r.p.parser.dialect.allows(l>>1)){(l&1)==0?e.value=l>>1:e.extended=l>>1;break}}}else e.value=0,e.end=this.stream.clipPos(s+1)}putAction(e,n,r,s){for(let i=0;ie.bufferLength*4?new ime(r,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,n=this.minStackPos,r=this.stacks=[],s,i;if(this.bigReductionCount>300&&e.length==1){let[a]=e;for(;a.forceReduce()&&a.stack.length&&a.stack[a.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let a=0;an)r.push(l);else{if(this.advanceStack(l,r,e))continue;{s||(s=[],i=[]),s.push(l);let c=this.tokens.getMainToken(l);i.push(c.value,c.end)}}break}}if(!r.length){let a=s&&ume(s);if(a)return qi&&console.log("Finish with "+this.stackID(a)),this.stackToTree(a);if(this.parser.strict)throw qi&&s&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+n);this.recovering||(this.recovering=5)}if(this.recovering&&s){let a=this.stoppedAt!=null&&s[0].pos>this.stoppedAt?s[0]:this.runRecovery(s,i,r);if(a)return qi&&console.log("Force-finish "+this.stackID(a)),this.stackToTree(a.forceAll())}if(this.recovering){let a=this.recovering==1?1:this.recovering*3;if(r.length>a)for(r.sort((l,c)=>c.score-l.score);r.length>a;)r.pop();r.some(l=>l.reducePos>n)&&this.recovering--}else if(r.length>1){e:for(let a=0;a500&&d.buffer.length>500)if((l.score-d.score||l.buffer.length-d.buffer.length)>0)r.splice(c--,1);else{r.splice(a--,1);continue e}}}r.length>12&&r.splice(12,r.length-12)}this.minStackPos=r[0].pos;for(let a=1;a ":"";if(this.stoppedAt!=null&&s>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let d=e.curContext&&e.curContext.tracker.strict,h=d?e.curContext.hash:0;for(let m=this.fragments.nodeAt(s);m;){let g=this.parser.nodeSet.types[m.type.id]==m.type?i.getGoto(e.state,m.type.id):-1;if(g>-1&&m.length&&(!d||(m.prop(an.contextHash)||0)==h))return e.useNode(m,g),qi&&console.log(a+this.stackID(e)+` (via reuse of ${i.getName(m.type.id)})`),!0;if(!(m instanceof ur)||m.children.length==0||m.positions[0]>0)break;let x=m.children[0];if(x instanceof ur&&m.positions[0]==0)m=x;else break}}let l=i.stateSlot(e.state,4);if(l>0)return e.reduce(l),qi&&console.log(a+this.stackID(e)+` (via always-reduce ${i.getName(l&65535)})`),!0;if(e.stack.length>=8400)for(;e.stack.length>6e3&&e.forceReduce(););let c=this.tokens.getActions(e);for(let d=0;ds?n.push(y):r.push(y)}return!1}advanceFully(e,n){let r=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>r)return mA(e,n),!0}}runRecovery(e,n,r){let s=null,i=!1;for(let a=0;a ":"";if(l.deadEnd&&(i||(i=!0,l.restart(),qi&&console.log(h+this.stackID(l)+" (restarted)"),this.advanceFully(l,r))))continue;let m=l.split(),g=h;for(let x=0;x<10&&m.forceReduce()&&(qi&&console.log(g+this.stackID(m)+" (via force-reduce)"),!this.advanceFully(m,r));x++)qi&&(g=this.stackID(m)+" -> ");for(let x of l.recoverByInsert(c))qi&&console.log(h+this.stackID(x)+" (via recover-insert)"),this.advanceFully(x,r);this.stream.end>l.pos?(d==l.pos&&(d++,c=0),l.recoverByDelete(c,d),qi&&console.log(h+this.stackID(l)+` (via recover-delete ${this.parser.getName(c)})`),mA(l,r)):(!s||s.scoret;class cme{constructor(e){this.start=e.start,this.shift=e.shift||hS,this.reduce=e.reduce||hS,this.reuse=e.reuse||hS,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}}class lp extends S6{constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (14)`);let n=e.nodeNames.split(" ");this.minRepeatTerm=n.length;for(let l=0;le.topRules[l][1]),s=[];for(let l=0;l=0)i(h,c,l[d++]);else{let m=l[d+-h];for(let g=-h;g>0;g--)i(l[d++],c,m);d++}}}this.nodeSet=new gb(n.map((l,c)=>ai.define({name:c>=this.minRepeatTerm?void 0:l,id:c,props:s[c],top:r.indexOf(c)>-1,error:c==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(c)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=Iq;let a=C1(e.tokenData);this.context=e.context,this.specializerSpecs=e.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let l=0;ltypeof l=="number"?new Fh(a,l):l),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,n,r){let s=new ome(this,e,n,r);for(let i of this.wrappers)s=i(s,e,n,r);return s}getGoto(e,n,r=!1){let s=this.goto;if(n>=s[0])return-1;for(let i=s[n+1];;){let a=s[i++],l=a&1,c=s[i++];if(l&&r)return c;for(let d=i+(a>>1);i0}validAction(e,n){return!!this.allActions(e,r=>r==n?!0:null)}allActions(e,n){let r=this.stateSlot(e,4),s=r?n(r):void 0;for(let i=this.stateSlot(e,1);s==null;i+=3){if(this.data[i]==65535)if(this.data[i+1]==1)i=_l(this.data,i+2);else break;s=n(_l(this.data,i+1))}return s}nextStates(e){let n=[];for(let r=this.stateSlot(e,1);;r+=3){if(this.data[r]==65535)if(this.data[r+1]==1)r=_l(this.data,r+2);else break;if((this.data[r+2]&1)==0){let s=this.data[r+1];n.some((i,a)=>a&1&&i==s)||n.push(this.data[r],s)}}return n}configure(e){let n=Object.assign(Object.create(lp.prototype),this);if(e.props&&(n.nodeSet=this.nodeSet.extend(...e.props)),e.top){let r=this.topRules[e.top];if(!r)throw new RangeError(`Invalid top rule name ${e.top}`);n.top=r}return e.tokenizers&&(n.tokenizers=this.tokenizers.map(r=>{let s=e.tokenizers.find(i=>i.from==r);return s?s.to:r})),e.specializers&&(n.specializers=this.specializers.slice(),n.specializerSpecs=this.specializerSpecs.map((r,s)=>{let i=e.specializers.find(l=>l.from==r.external);if(!i)return r;let a=Object.assign(Object.assign({},r),{external:i.to});return n.specializers[s]=pA(a),a})),e.contextTracker&&(n.context=e.contextTracker),e.dialect&&(n.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(n.strict=e.strict),e.wrap&&(n.wrappers=n.wrappers.concat(e.wrap)),e.bufferLength!=null&&(n.bufferLength=e.bufferLength),n}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let n=this.dynamicPrecedences;return n==null?0:n[e]||0}parseDialect(e){let n=Object.keys(this.dialects),r=n.map(()=>!1);if(e)for(let i of e.split(" ")){let a=n.indexOf(i);a>=0&&(r[a]=!0)}let s=null;for(let i=0;ir)&&n.p.parser.stateFlag(n.state,2)&&(!e||e.scoret.external(n,r)<<1|e}return t.get}const dme=1,yH=194,bH=195,hme=196,gA=197,fme=198,mme=199,pme=200,gme=2,wH=3,xA=201,xme=24,vme=25,yme=49,bme=50,wme=55,Sme=56,kme=57,Ome=59,jme=60,Nme=61,Cme=62,Tme=63,Eme=65,_me=238,Ame=71,Mme=241,Rme=242,Dme=243,Pme=244,zme=245,Ime=246,Lme=247,Bme=248,SH=72,Fme=249,qme=250,$me=251,Hme=252,Qme=253,Vme=254,Ume=255,Wme=256,Gme=73,Xme=77,Yme=263,Kme=112,Zme=130,Jme=151,e0e=152,t0e=155,fd=10,cp=13,V6=32,Nb=9,U6=35,n0e=40,r0e=46,xO=123,vA=125,kH=39,OH=34,yA=92,s0e=111,i0e=120,a0e=78,o0e=117,l0e=85,c0e=new Set([vme,yme,bme,Yme,Eme,Zme,Sme,kme,_me,Cme,Tme,SH,Gme,Xme,jme,Nme,Jme,e0e,t0e,Kme]);function fS(t){return t==fd||t==cp}function mS(t){return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102}const u0e=new jb((t,e)=>{let n;if(t.next<0)t.acceptToken(mme);else if(e.context.flags&Sv)fS(t.next)&&t.acceptToken(fme,1);else if(((n=t.peek(-1))<0||fS(n))&&e.canShift(gA)){let r=0;for(;t.next==V6||t.next==Nb;)t.advance(),r++;(t.next==fd||t.next==cp||t.next==U6)&&t.acceptToken(gA,-r)}else fS(t.next)&&t.acceptToken(hme,1)},{contextual:!0}),d0e=new jb((t,e)=>{let n=e.context;if(n.flags)return;let r=t.peek(-1);if(r==fd||r==cp){let s=0,i=0;for(;;){if(t.next==V6)s++;else if(t.next==Nb)s+=8-s%8;else break;t.advance(),i++}s!=n.indent&&t.next!=fd&&t.next!=cp&&t.next!=U6&&(s[t,e|jH])),m0e=new cme({start:h0e,reduce(t,e,n,r){return t.flags&Sv&&c0e.has(e)||(e==Ame||e==SH)&&t.flags&jH?t.parent:t},shift(t,e,n,r){return e==yH?new kv(t,f0e(r.read(r.pos,n.pos)),0):e==bH?t.parent:e==xme||e==wme||e==Ome||e==wH?new kv(t,0,Sv):bA.has(e)?new kv(t,0,bA.get(e)|t.flags&Sv):t},hash(t){return t.hash}}),p0e=new jb(t=>{for(let e=0;e<5;e++){if(t.next!="print".charCodeAt(e))return;t.advance()}if(!/\w/.test(String.fromCharCode(t.next)))for(let e=0;;e++){let n=t.peek(e);if(!(n==V6||n==Nb)){n!=n0e&&n!=r0e&&n!=fd&&n!=cp&&n!=U6&&t.acceptToken(dme);return}}}),g0e=new jb((t,e)=>{let{flags:n}=e.context,r=n&jl?OH:kH,s=(n&Nl)>0,i=!(n&Cl),a=(n&Tl)>0,l=t.pos;for(;!(t.next<0);)if(a&&t.next==xO)if(t.peek(1)==xO)t.advance(2);else{if(t.pos==l){t.acceptToken(wH,1);return}break}else if(i&&t.next==yA){if(t.pos==l){t.advance();let c=t.next;c>=0&&(t.advance(),x0e(t,c)),t.acceptToken(gme);return}break}else if(t.next==yA&&!i&&t.peek(1)>-1)t.advance(2);else if(t.next==r&&(!s||t.peek(1)==r&&t.peek(2)==r)){if(t.pos==l){t.acceptToken(xA,s?3:1);return}break}else if(t.next==fd){if(s)t.advance();else if(t.pos==l){t.acceptToken(xA);return}break}else t.advance();t.pos>l&&t.acceptToken(pme)});function x0e(t,e){if(e==s0e)for(let n=0;n<2&&t.next>=48&&t.next<=55;n++)t.advance();else if(e==i0e)for(let n=0;n<2&&mS(t.next);n++)t.advance();else if(e==o0e)for(let n=0;n<4&&mS(t.next);n++)t.advance();else if(e==l0e)for(let n=0;n<8&&mS(t.next);n++)t.advance();else if(e==a0e&&t.next==xO){for(t.advance();t.next>=0&&t.next!=vA&&t.next!=kH&&t.next!=OH&&t.next!=fd;)t.advance();t.next==vA&&t.advance()}}const v0e=k6({'async "*" "**" FormatConversion FormatSpec':ye.modifier,"for while if elif else try except finally return raise break continue with pass assert await yield match case":ye.controlKeyword,"in not and or is del":ye.operatorKeyword,"from def class global nonlocal lambda":ye.definitionKeyword,import:ye.moduleKeyword,"with as print":ye.keyword,Boolean:ye.bool,None:ye.null,VariableName:ye.variableName,"CallExpression/VariableName":ye.function(ye.variableName),"FunctionDefinition/VariableName":ye.function(ye.definition(ye.variableName)),"ClassDefinition/VariableName":ye.definition(ye.className),PropertyName:ye.propertyName,"CallExpression/MemberExpression/PropertyName":ye.function(ye.propertyName),Comment:ye.lineComment,Number:ye.number,String:ye.string,FormatString:ye.special(ye.string),Escape:ye.escape,UpdateOp:ye.updateOperator,"ArithOp!":ye.arithmeticOperator,BitOp:ye.bitwiseOperator,CompareOp:ye.compareOperator,AssignOp:ye.definitionOperator,Ellipsis:ye.punctuation,At:ye.meta,"( )":ye.paren,"[ ]":ye.squareBracket,"{ }":ye.brace,".":ye.derefOperator,", ;":ye.separator}),y0e={__proto__:null,await:44,or:54,and:56,in:60,not:62,is:64,if:70,else:72,lambda:76,yield:94,from:96,async:102,for:104,None:162,True:164,False:164,del:178,pass:182,break:186,continue:190,return:194,raise:202,import:206,as:208,global:212,nonlocal:214,assert:218,type:223,elif:236,while:240,try:246,except:248,finally:250,with:254,def:258,class:268,match:279,case:285},b0e=lp.deserialize({version:14,states:"##jO`QeOOP$}OSOOO&WQtO'#HUOOQS'#Co'#CoOOQS'#Cp'#CpO'vQdO'#CnO*UQtO'#HTOOQS'#HU'#HUOOQS'#DU'#DUOOQS'#HT'#HTO*rQdO'#D_O+VQdO'#DfO+gQdO'#DjO+zOWO'#DuO,VOWO'#DvO.[QtO'#GuOOQS'#Gu'#GuO'vQdO'#GtO0ZQtO'#GtOOQS'#Eb'#EbO0rQdO'#EcOOQS'#Gs'#GsO0|QdO'#GrOOQV'#Gr'#GrO1XQdO'#FYOOQS'#G^'#G^O1^QdO'#FXOOQV'#IS'#ISOOQV'#Gq'#GqOOQV'#Fq'#FqQ`QeOOO'vQdO'#CqO1lQdO'#C}O1sQdO'#DRO2RQdO'#HYO2cQtO'#EVO'vQdO'#EWOOQS'#EY'#EYOOQS'#E['#E[OOQS'#E^'#E^O2wQdO'#E`O3_QdO'#EdO3rQdO'#EfO3zQtO'#EfO1XQdO'#EiO0rQdO'#ElO1XQdO'#EnO0rQdO'#EtO0rQdO'#EwO4VQdO'#EyO4^QdO'#FOO4iQdO'#EzO0rQdO'#FOO1XQdO'#FQO1XQdO'#FVO4nQdO'#F[P4uOdO'#GpPOOO)CBd)CBdOOQS'#Ce'#CeOOQS'#Cf'#CfOOQS'#Cg'#CgOOQS'#Ch'#ChOOQS'#Ci'#CiOOQS'#Cj'#CjOOQS'#Cl'#ClO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO5TQdO'#DoOOQS,5:Y,5:YO5hQdO'#HdOOQS,5:],5:]O5uQ!fO,5:]O5zQtO,59YO1lQdO,59bO1lQdO,59bO1lQdO,59bO8jQdO,59bO8oQdO,59bO8vQdO,59jO8}QdO'#HTO:TQdO'#HSOOQS'#HS'#HSOOQS'#D['#D[O:lQdO,59aO'vQdO,59aO:zQdO,59aOOQS,59y,59yO;PQdO,5:RO'vQdO,5:ROOQS,5:Q,5:QO;_QdO,5:QO;dQdO,5:XO'vQdO,5:XO'vQdO,5:VOOQS,5:U,5:UO;uQdO,5:UO;zQdO,5:WOOOW'#Fy'#FyOOOOQS'#Ds'#DsOOQS1G/w1G/wOOQS1G.|1G.|O!/[QtO1G.|O!/cQtO1G.|O1lQdO1G.|O!0OQdO1G/UOOQS'#DZ'#DZO0rQdO,59tOOQS1G.{1G.{O!0VQdO1G/eO!0gQdO1G/eO!0oQdO1G/fO'vQdO'#H[O!0tQdO'#H[O!0yQtO1G.{O!1ZQdO,59iO!2aQdO,5=zO!2qQdO,5=zO!2yQdO1G/mO!3OQtO1G/mOOQS1G/l1G/lO!3`QdO,5=uO!4VQdO,5=uO0rQdO1G/qO!4tQdO1G/sO!4yQtO1G/sO!5ZQtO1G/qOOQS1G/p1G/pOOQS1G/r1G/rOOOW-E9w-E9wOOQS1G/{1G/{O!5kQdO'#HxO0rQdO'#HxO!5|QdO,5>cOOOW-E9x-E9xOOQS1G/|1G/|OOQS-E9{-E9{O!6[Q#xO1G2zO!6{QtO1G2zO'vQdO,5kOOQS1G1`1G1`O!8RQdO1G1`OOQS'#DV'#DVO0rQdO,5=qOOQS,5=q,5=qO!8WQdO'#FrO!8cQdO,59oO!8kQdO1G/XO!8uQtO,5=uOOQS1G3`1G3`OOQS,5:m,5:mO!9fQdO'#GtOOQS,5jO!;ZQdO,5>jO1XQdO,5>jO!;lQdO,5>iOOQS-E:R-E:RO!;qQdO1G0lO!;|QdO1G0lO!lO!lO!hO!=VQdO,5>hO!=hQdO'#EpO0rQdO1G0tO!=sQdO1G0tO!=xQgO1G0zO!AvQgO1G0}O!EqQdO,5>oO!E{QdO,5>oO!FTQtO,5>oO0rQdO1G1PO!F_QdO1G1PO4iQdO1G1UO!!vQdO1G1WOOQV,5;a,5;aO!FdQfO,5;aO!FiQgO1G1QO!JjQdO'#GZO4iQdO1G1QO4iQdO1G1QO!JzQdO,5>pO!KXQdO,5>pO1XQdO,5>pOOQV1G1U1G1UO!KaQdO'#FSO!KrQ!fO1G1WO!KzQdO1G1WOOQV1G1]1G1]O4iQdO1G1]O!LPQdO1G1]O!LXQdO'#F^OOQV1G1b1G1bO!#ZQtO1G1bPOOO1G2v1G2vP!L^OSO1G2vOOQS,5=},5=}OOQS'#Dp'#DpO0rQdO,5=}O!LfQdO,5=|O!LyQdO,5=|OOQS1G/u1G/uO!MRQdO,5>PO!McQdO,5>PO!MkQdO,5>PO!NOQdO,5>PO!N`QdO,5>POOQS1G3j1G3jOOQS7+$h7+$hO!8kQdO7+$pO#!RQdO1G.|O#!YQdO1G.|OOQS1G/`1G/`OOQS,5<`,5<`O'vQdO,5<`OOQS7+%P7+%PO#!aQdO7+%POOQS-E9r-E9rOOQS7+%Q7+%QO#!qQdO,5=vO'vQdO,5=vOOQS7+$g7+$gO#!vQdO7+%PO##OQdO7+%QO##TQdO1G3fOOQS7+%X7+%XO##eQdO1G3fO##mQdO7+%XOOQS,5<_,5<_O'vQdO,5<_O##rQdO1G3aOOQS-E9q-E9qO#$iQdO7+%]OOQS7+%_7+%_O#$wQdO1G3aO#%fQdO7+%_O#%kQdO1G3gO#%{QdO1G3gO#&TQdO7+%]O#&YQdO,5>dO#&sQdO,5>dO#&sQdO,5>dOOQS'#Dx'#DxO#'UO&jO'#DzO#'aO`O'#HyOOOW1G3}1G3}O#'fQdO1G3}O#'nQdO1G3}O#'yQ#xO7+(fO#(jQtO1G2UP#)TQdO'#GOOOQS,5nQdO,5sQdO1G4OOOQS-E9y-E9yO#?^QdO1G4OO<[QdO'#H{OOOO'#D{'#D{OOOO'#F|'#F|O#?oO&jO,5:fOOOW,5>e,5>eOOOW7+)i7+)iO#?zQdO7+)iO#@SQdO1G2zO#@mQdO1G2zP'vQdO'#FuO0rQdO<mO#BQQdO,5>mOOQS1G0v1G0vOOQS<rO#KgQdO,5>rO#KrQdO,5>rO#K}QdO,5>qO#L`QdO,5>qOOQS1G1Y1G1YOOQS,5;p,5;pOOQV<VAN>VO$ oQdO<cAN>cO0rQdO1G1|O$!PQtO1G1|P$!ZQdO'#FvOOQS1G2R1G2RP$!hQdO'#F{O$!uQdO7+)jO$#`QdO,5>gOOOO-E9z-E9zOOOW<tO$4{QdO,5>tO1XQdO,5vO$)nQdO,5>vOOQS1G1p1G1pOOQS,5<[,5<[OOQU7+'P7+'PO$+zQdO1G/iO$)nQdO,5wO$8zQdO,5>wOOQS1G1s1G1sOOQS7+'S7+'SP$)nQdO'#GdO$9SQdO1G4bO$9^QdO1G4bO$9fQdO1G4bOOQS7+%T7+%TO$9tQdO1G1tO$:SQtO'#FaO$:ZQdO,5<}OOQS,5<},5<}O$:iQdO1G4cOOQS-E:a-E:aO$)nQdO,5<|O$:pQdO,5<|O$:uQdO7+)|OOQS-E:`-E:`O$;PQdO7+)|O$)nQdO,5S~O%cOS%^OSSOS%]PQ~OPdOVaOfoOhYOopOs!POvqO!PrO!Q{O!T!SO!U!RO!XZO!][O!h`O!r`O!s`O!t`O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#l!QO#o!TO#s!UO#u!VO#z!WO#}hO$P!XO%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~O%]!YO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%j![O%k!]O%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aO~Ok%xXl%xXm%xXn%xXo%xXp%xXs%xXz%xX{%xX!x%xX#g%xX%[%xX%_%xX%z%xXg%xX!T%xX!U%xX%{%xX!W%xX![%xX!Q%xX#[%xXt%xX!m%xX~P%SOfoOhYO!XZO!][O!h`O!r`O!s`O!t`O%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~Oz%wX{%wX#g%wX%[%wX%_%wX%z%wX~Ok!pOl!qOm!oOn!oOo!rOp!sOs!tO!x%wX~P)pOV!zOg!|Oo0cOv0qO!PrO~P'vOV#OOo0cOv0qO!W#PO~P'vOV#SOa#TOo0cOv0qO![#UO~P'vOQ#XO%`#XO%a#ZO~OQ#^OR#[O%`#^O%a#`O~OV%iX_%iXa%iXh%iXk%iXl%iXm%iXn%iXo%iXp%iXs%iXz%iX!X%iX!f%iX%j%iX%k%iX%l%iX%m%iX%n%iX%o%iX%p%iX%q%iX%r%iX%s%iXg%iX!T%iX!U%iX~O&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O{%iX!x%iX#g%iX%[%iX%_%iX%z%iX%{%iX!W%iX![%iX!Q%iX#[%iXt%iX!m%iX~P,eOz#dO{%hX!x%hX#g%hX%[%hX%_%hX%z%hX~Oo0cOv0qO~P'vO#g#gO%[#iO%_#iO~O%uWO~O!T#nO#u!VO#z!WO#}hO~OopO~P'vOV#sOa#tO%uWO{wP~OV#xOo0cOv0qO!Q#yO~P'vO{#{O!x$QO%z#|O#g!yX%[!yX%_!yX~OV#xOo0cOv0qO#g#SX%[#SX%_#SX~P'vOo0cOv0qO#g#WX%[#WX%_#WX~P'vOh$WO%uWO~O!f$YO!r$YO%uWO~OV$eO~P'vO!U$gO#s$hO#u$iO~O{$jO~OV$qO~P'vOS$sO%[$rO%_$rO%c$tO~OV$}Oa$}Og%POo0cOv0qO~P'vOo0cOv0qO{%SO~P'vO&Y%UO~Oa!bOh!iO!X!kO!f!mOVba_bakbalbambanbaobapbasbazba{ba!xba#gba%[ba%_ba%jba%kba%lba%mba%nba%oba%pba%qba%rba%sba%zbagba!Tba!Uba%{ba!Wba![ba!Qba#[batba!mba~On%ZO~Oo%ZO~P'vOo0cO~P'vOk0eOl0fOm0dOn0dOo0mOp0nOs0rOg%wX!T%wX!U%wX%{%wX!W%wX![%wX!Q%wX#[%wX!m%wX~P)pO%{%]Og%vXz%vX!T%vX!U%vX!W%vX{%vX~Og%_Oz%`O!T%dO!U%cO~Og%_O~Oz%gO!T%dO!U%cO!W&SX~O!W%kO~Oz%lO{%nO!T%dO!U%cO![%}X~O![%rO~O![%sO~OQ#XO%`#XO%a%uO~OV%wOo0cOv0qO!PrO~P'vOQ#^OR#[O%`#^O%a%zO~OV!qa_!qaa!qah!qak!qal!qam!qan!qao!qap!qas!qaz!qa{!qa!X!qa!f!qa!x!qa#g!qa%[!qa%_!qa%j!qa%k!qa%l!qa%m!qa%n!qa%o!qa%p!qa%q!qa%r!qa%s!qa%z!qag!qa!T!qa!U!qa%{!qa!W!qa![!qa!Q!qa#[!qat!qa!m!qa~P#yOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P%SOV&OOopOvqO{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P'vOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#g$zX%[$zX%_$zX~P'vO#g#gO%[&TO%_&TO~O!f&UOh&sX%[&sXz&sX#[&sX#g&sX%_&sX#Z&sXg&sX~Oh!iO%[&WO~Okealeameaneaoeapeaseazea{ea!xea#gea%[ea%_ea%zeagea!Tea!Uea%{ea!Wea![ea!Qea#[eatea!mea~P%SOsqazqa{qa#gqa%[qa%_qa%zqa~Ok!pOl!qOm!oOn!oOo!rOp!sO!xqa~PEcO%z&YOz%yX{%yX~O%uWOz%yX{%yX~Oz&]O{wX~O{&_O~Oz%lO#g%}X%[%}X%_%}Xg%}X{%}X![%}X!m%}X%z%}X~OV0lOo0cOv0qO!PrO~P'vO%z#|O#gUa%[Ua%_Ua~Oz&hO#g&PX%[&PX%_&PXn&PX~P%SOz&kO!Q&jO#g#Wa%[#Wa%_#Wa~Oz&lO#[&nO#g&rX%[&rX%_&rXg&rX~O!f$YO!r$YO#Z&qO%uWO~O#Z&qO~Oz&sO#g&tX%[&tX%_&tX~Oz&uO#g&pX%[&pX%_&pX{&pX~O!X&wO%z&xO~Oz&|On&wX~P%SOn'PO~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO%['UO~P'vOt'YO#p'WO#q'XOP#naV#naf#nah#nao#nas#nav#na!P#na!Q#na!T#na!U#na!X#na!]#na!h#na!r#na!s#na!t#na!{#na!}#na#P#na#R#na#T#na#X#na#Z#na#^#na#_#na#a#na#c#na#l#na#o#na#s#na#u#na#z#na#}#na$P#na%X#na%o#na%p#na%t#na%u#na&Z#na&[#na&]#na&^#na&_#na&`#na&a#na&b#na&c#na&d#na&e#na&f#na&g#na&h#na&i#na&j#na%Z#na%_#na~Oz'ZO#[']O{&xX~Oh'_O!X&wO~Oh!iO{$jO!X&wO~O{'eO~P%SO%['hO%_'hO~OS'iO%['hO%_'hO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%k!]O~P!#uO%kWi~P!#uOV!aO_!aOa!bOh!iO!X!kO!f!mO%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%m!_O%n!_O~P!&pO%mWi%nWi~P!&pOa!bOh!iO!X!kO!f!mOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%mWi%nWi%oWi%pWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~OV!aO_!aO%q!aO%r!aO%s!aO~P!)nOVWi_Wi%qWi%rWi%sWi~P!)nO!T%dO!U%cOg&VXz&VX~O%z'kO%{'kO~P,eOz'mOg&UX~Og'oO~Oz'pO{'rO!W&XX~Oo0cOv0qOz'pO{'sO!W&XX~P'vO!W'uO~Om!oOn!oOo!rOp!sOkjisjizji{ji!xji#gji%[ji%_ji%zji~Ol!qO~P!.aOlji~P!.aOk0eOl0fOm0dOn0dOo0mOp0nO~Ot'wO~P!/jOV'|Og'}Oo0cOv0qO~P'vOg'}Oz(OO~Og(QO~O!U(SO~Og(TOz(OO!T%dO!U%cO~P%SOk0eOl0fOm0dOn0dOo0mOp0nOgqa!Tqa!Uqa%{qa!Wqa![qa!Qqa#[qatqa!mqa~PEcOV'|Oo0cOv0qO!W&Sa~P'vOz(WO!W&Sa~O!W(XO~Oz(WO!T%dO!U%cO!W&Sa~P%SOV(]Oo0cOv0qO![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~P'vOz(^O![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~O![(aO~Oz(^O!T%dO!U%cO![%}a~P%SOz(dO!T%dO!U%cO![&Ta~P%SOz(gO{&lX![&lX!m&lX%z&lX~O{(kO![(mO!m(nO%z(jO~OV&OOopOvqO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~P'vOz(pO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~O!f&UOh&sa%[&saz&sa#[&sa#g&sa%_&sa#Z&sag&sa~O%[(uO~OV#sOa#tO%uWO~Oz&]O{wa~OopOvqO~P'vOz(^O#g%}a%[%}a%_%}ag%}a{%}a![%}a!m%}a%z%}a~P%SOz(zO#g%hX%[%hX%_%hX%z%hX~O%z#|O#gUi%[Ui%_Ui~O#g&Pa%[&Pa%_&Pan&Pa~P'vOz(}O#g&Pa%[&Pa%_&Pan&Pa~O%uWO#g&ra%[&ra%_&rag&ra~Oz)SO#g&ra%[&ra%_&rag&ra~Og)VO~OV)WOh$WO%uWO~O#Z)XO~O%uWO#g&ta%[&ta%_&ta~Oz)ZO#g&ta%[&ta%_&ta~Oo0cOv0qO#g&pa%[&pa%_&pa{&pa~P'vOz)^O#g&pa%[&pa%_&pa{&pa~OV)`Oa)`O%uWO~O%z)eO~Ot)hO#j)gOP#hiV#hif#hih#hio#his#hiv#hi!P#hi!Q#hi!T#hi!U#hi!X#hi!]#hi!h#hi!r#hi!s#hi!t#hi!{#hi!}#hi#P#hi#R#hi#T#hi#X#hi#Z#hi#^#hi#_#hi#a#hi#c#hi#l#hi#o#hi#s#hi#u#hi#z#hi#}#hi$P#hi%X#hi%o#hi%p#hi%t#hi%u#hi&Z#hi&[#hi&]#hi&^#hi&_#hi&`#hi&a#hi&b#hi&c#hi&d#hi&e#hi&f#hi&g#hi&h#hi&i#hi&j#hi%Z#hi%_#hi~Ot)iOP#kiV#kif#kih#kio#kis#kiv#ki!P#ki!Q#ki!T#ki!U#ki!X#ki!]#ki!h#ki!r#ki!s#ki!t#ki!{#ki!}#ki#P#ki#R#ki#T#ki#X#ki#Z#ki#^#ki#_#ki#a#ki#c#ki#l#ki#o#ki#s#ki#u#ki#z#ki#}#ki$P#ki%X#ki%o#ki%p#ki%t#ki%u#ki&Z#ki&[#ki&]#ki&^#ki&_#ki&`#ki&a#ki&b#ki&c#ki&d#ki&e#ki&f#ki&g#ki&h#ki&i#ki&j#ki%Z#ki%_#ki~OV)kOn&wa~P'vOz)lOn&wa~Oz)lOn&wa~P%SOn)pO~O%Y)tO~Ot)wO#p'WO#q)vOP#niV#nif#nih#nio#nis#niv#ni!P#ni!Q#ni!T#ni!U#ni!X#ni!]#ni!h#ni!r#ni!s#ni!t#ni!{#ni!}#ni#P#ni#R#ni#T#ni#X#ni#Z#ni#^#ni#_#ni#a#ni#c#ni#l#ni#o#ni#s#ni#u#ni#z#ni#}#ni$P#ni%X#ni%o#ni%p#ni%t#ni%u#ni&Z#ni&[#ni&]#ni&^#ni&_#ni&`#ni&a#ni&b#ni&c#ni&d#ni&e#ni&f#ni&g#ni&h#ni&i#ni&j#ni%Z#ni%_#ni~OV)zOo0cOv0qO{$jO~P'vOo0cOv0qO{&xa~P'vOz*OO{&xa~OV*SOa*TOg*WO%q*UO%uWO~O{$jO&{*YO~Oh'_O~Oh!iO{$jO~O%[*_O~O%[*aO%_*aO~OV$}Oa$}Oo0cOv0qOg&Ua~P'vOz*dOg&Ua~Oo0cOv0qO{*gO!W&Xa~P'vOz*hO!W&Xa~Oo0cOv0qOz*hO{*kO!W&Xa~P'vOo0cOv0qOz*hO!W&Xa~P'vOz*hO{*kO!W&Xa~Om0dOn0dOo0mOp0nOgjikjisjizji!Tji!Uji%{ji!Wji{ji![ji#gji%[ji%_ji!Qji#[jitji!mji%zji~Ol0fO~P!NkOlji~P!NkOV'|Og*pOo0cOv0qO~P'vOn*rO~Og*pOz*tO~Og*uO~OV'|Oo0cOv0qO!W&Si~P'vOz*vO!W&Si~O!W*wO~OV(]Oo0cOv0qO![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~P'vOz*zO!T%dO!U%cO![&Ti~Oz*}O![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~O![+OO~Oa+QOo0cOv0qO![&Ti~P'vOz*zO![&Ti~O![+SO~OV+UOo0cOv0qO{&la![&la!m&la%z&la~P'vOz+VO{&la![&la!m&la%z&la~O!]+YO&n+[O![!nX~O![+^O~O{(kO![+_O~O{(kO![+_O!m+`O~OV&OOopOvqO{%hq!x%hq#g%hq%[%hq%_%hq%z%hq~P'vOz$ri{$ri!x$ri#g$ri%[$ri%_$ri%z$ri~P%SOV&OOopOvqO~P'vOV&OOo0cOv0qO#g%ha%[%ha%_%ha%z%ha~P'vOz+aO#g%ha%[%ha%_%ha%z%ha~Oz$ia#g$ia%[$ia%_$ian$ia~P%SO#g&Pi%[&Pi%_&Pin&Pi~P'vOz+dO#g#Wq%[#Wq%_#Wq~O#[+eOz$va#g$va%[$va%_$vag$va~O%uWO#g&ri%[&ri%_&rig&ri~Oz+gO#g&ri%[&ri%_&rig&ri~OV+iOh$WO%uWO~O%uWO#g&ti%[&ti%_&ti~Oo0cOv0qO#g&pi%[&pi%_&pi{&pi~P'vO{#{Oz#eX!W#eX~Oz+mO!W&uX~O!W+oO~Ot+rO#j)gOP#hqV#hqf#hqh#hqo#hqs#hqv#hq!P#hq!Q#hq!T#hq!U#hq!X#hq!]#hq!h#hq!r#hq!s#hq!t#hq!{#hq!}#hq#P#hq#R#hq#T#hq#X#hq#Z#hq#^#hq#_#hq#a#hq#c#hq#l#hq#o#hq#s#hq#u#hq#z#hq#}#hq$P#hq%X#hq%o#hq%p#hq%t#hq%u#hq&Z#hq&[#hq&]#hq&^#hq&_#hq&`#hq&a#hq&b#hq&c#hq&d#hq&e#hq&f#hq&g#hq&h#hq&i#hq&j#hq%Z#hq%_#hq~On$|az$|a~P%SOV)kOn&wi~P'vOz+yOn&wi~Oz,TO{$jO#[,TO~O#q,VOP#nqV#nqf#nqh#nqo#nqs#nqv#nq!P#nq!Q#nq!T#nq!U#nq!X#nq!]#nq!h#nq!r#nq!s#nq!t#nq!{#nq!}#nq#P#nq#R#nq#T#nq#X#nq#Z#nq#^#nq#_#nq#a#nq#c#nq#l#nq#o#nq#s#nq#u#nq#z#nq#}#nq$P#nq%X#nq%o#nq%p#nq%t#nq%u#nq&Z#nq&[#nq&]#nq&^#nq&_#nq&`#nq&a#nq&b#nq&c#nq&d#nq&e#nq&f#nq&g#nq&h#nq&i#nq&j#nq%Z#nq%_#nq~O#[,WOz%Oa{%Oa~Oo0cOv0qO{&xi~P'vOz,YO{&xi~O{#{O%z,[Og&zXz&zX~O%uWOg&zXz&zX~Oz,`Og&yX~Og,bO~O%Y,eO~O!T%dO!U%cOg&Viz&Vi~OV$}Oa$}Oo0cOv0qOg&Ui~P'vO{,hOz$la!W$la~Oo0cOv0qO{,iOz$la!W$la~P'vOo0cOv0qO{*gO!W&Xi~P'vOz,lO!W&Xi~Oo0cOv0qOz,lO!W&Xi~P'vOz,lO{,oO!W&Xi~Og$hiz$hi!W$hi~P%SOV'|Oo0cOv0qO~P'vOn,qO~OV'|Og,rOo0cOv0qO~P'vOV'|Oo0cOv0qO!W&Sq~P'vOz$gi![$gi#g$gi%[$gi%_$gig$gi{$gi!m$gi%z$gi~P%SOV(]Oo0cOv0qO~P'vOa+QOo0cOv0qO![&Tq~P'vOz,sO![&Tq~O![,tO~OV(]Oo0cOv0qO![%}q#g%}q%[%}q%_%}qg%}q{%}q!m%}q%z%}q~P'vO{,uO~OV+UOo0cOv0qO{&li![&li!m&li%z&li~P'vOz,zO{&li![&li!m&li%z&li~O!]+YO&n+[O![!na~O{(kO![,}O~OV&OOo0cOv0qO#g%hi%[%hi%_%hi%z%hi~P'vOz-OO#g%hi%[%hi%_%hi%z%hi~O%uWO#g&rq%[&rq%_&rqg&rq~Oz-RO#g&rq%[&rq%_&rqg&rq~OV)`Oa)`O%uWO!W&ua~Oz-TO!W&ua~On$|iz$|i~P%SOV)kO~P'vOV)kOn&wq~P'vOt-XOP#myV#myf#myh#myo#mys#myv#my!P#my!Q#my!T#my!U#my!X#my!]#my!h#my!r#my!s#my!t#my!{#my!}#my#P#my#R#my#T#my#X#my#Z#my#^#my#_#my#a#my#c#my#l#my#o#my#s#my#u#my#z#my#}#my$P#my%X#my%o#my%p#my%t#my%u#my&Z#my&[#my&]#my&^#my&_#my&`#my&a#my&b#my&c#my&d#my&e#my&f#my&g#my&h#my&i#my&j#my%Z#my%_#my~O%Z-]O%_-]O~P`O#q-^OP#nyV#nyf#nyh#nyo#nys#nyv#ny!P#ny!Q#ny!T#ny!U#ny!X#ny!]#ny!h#ny!r#ny!s#ny!t#ny!{#ny!}#ny#P#ny#R#ny#T#ny#X#ny#Z#ny#^#ny#_#ny#a#ny#c#ny#l#ny#o#ny#s#ny#u#ny#z#ny#}#ny$P#ny%X#ny%o#ny%p#ny%t#ny%u#ny&Z#ny&[#ny&]#ny&^#ny&_#ny&`#ny&a#ny&b#ny&c#ny&d#ny&e#ny&f#ny&g#ny&h#ny&i#ny&j#ny%Z#ny%_#ny~Oz-aO{$jO#[-aO~Oo0cOv0qO{&xq~P'vOz-dO{&xq~O%z,[Og&zaz&za~O{#{Og&zaz&za~OV*SOa*TO%q*UO%uWOg&ya~Oz-hOg&ya~O$S-lO~OV$}Oa$}Oo0cOv0qO~P'vOo0cOv0qO{-mOz$li!W$li~P'vOo0cOv0qOz$li!W$li~P'vO{-mOz$li!W$li~Oo0cOv0qO{*gO~P'vOo0cOv0qO{*gO!W&Xq~P'vOz-pO!W&Xq~Oo0cOv0qOz-pO!W&Xq~P'vOs-sO!T%dO!U%cOg&Oq!W&Oq![&Oqz&Oq~P!/jOa+QOo0cOv0qO![&Ty~P'vOz$ji![$ji~P%SOa+QOo0cOv0qO~P'vOV+UOo0cOv0qO~P'vOV+UOo0cOv0qO{&lq![&lq!m&lq%z&lq~P'vO{(kO![-xO!m-yO%z-wO~OV&OOo0cOv0qO#g%hq%[%hq%_%hq%z%hq~P'vO%uWO#g&ry%[&ry%_&ryg&ry~OV)`Oa)`O%uWO!W&ui~Ot-}OP#m!RV#m!Rf#m!Rh#m!Ro#m!Rs#m!Rv#m!R!P#m!R!Q#m!R!T#m!R!U#m!R!X#m!R!]#m!R!h#m!R!r#m!R!s#m!R!t#m!R!{#m!R!}#m!R#P#m!R#R#m!R#T#m!R#X#m!R#Z#m!R#^#m!R#_#m!R#a#m!R#c#m!R#l#m!R#o#m!R#s#m!R#u#m!R#z#m!R#}#m!R$P#m!R%X#m!R%o#m!R%p#m!R%t#m!R%u#m!R&Z#m!R&[#m!R&]#m!R&^#m!R&_#m!R&`#m!R&a#m!R&b#m!R&c#m!R&d#m!R&e#m!R&f#m!R&g#m!R&h#m!R&i#m!R&j#m!R%Z#m!R%_#m!R~Oo0cOv0qO{&xy~P'vOV*SOa*TO%q*UO%uWOg&yi~O$S-lO%Z.VO%_.VO~OV.aOh._O!X.^O!].`O!h.YO!s.[O!t.[O%p.XO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O~Oo0cOv0qOz$lq!W$lq~P'vO{.fOz$lq!W$lq~Oo0cOv0qO{*gO!W&Xy~P'vOz.gO!W&Xy~Oo0cOv.kO~P'vOs-sO!T%dO!U%cOg&Oy!W&Oy![&Oyz&Oy~P!/jO{(kO![.nO~O{(kO![.nO!m.oO~OV*SOa*TO%q*UO%uWO~Oh.tO!f.rOz$TX#[$TX%j$TXg$TX~Os$TX{$TX!W$TX![$TX~P$-bO%o.vO%p.vOs$UXz$UX{$UX#[$UX%j$UX!W$UXg$UX![$UX~O!h.xO~Oz.|O#[/OO%j.yOs&|X{&|X!W&|Xg&|X~Oa/RO~P$)zOh.tOs&}Xz&}X{&}X#[&}X%j&}X!W&}Xg&}X![&}X~Os/VO{$jO~Oo0cOv0qOz$ly!W$ly~P'vOo0cOv0qO{*gO!W&X!R~P'vOz/ZO!W&X!R~Og&RXs&RX!T&RX!U&RX!W&RX![&RXz&RX~P!/jOs-sO!T%dO!U%cOg&Qa!W&Qa![&Qaz&Qa~O{(kO![/^O~O!f.rOh$[as$[az$[a{$[a#[$[a%j$[a!W$[ag$[a![$[a~O!h/eO~O%o.vO%p.vOs$Uaz$Ua{$Ua#[$Ua%j$Ua!W$Uag$Ua![$Ua~O%j.yOs$Yaz$Ya{$Ya#[$Ya!W$Yag$Ya![$Ya~Os&|a{&|a!W&|ag&|a~P$)nOz/jOs&|a{&|a!W&|ag&|a~O!W/mO~Og/mO~O{/oO~O![/pO~Oo0cOv0qO{*gO!W&X!Z~P'vO{/sO~O%z/tO~P$-bOz/uO#[/OO%j.yOg'PX~Oz/uOg'PX~Og/wO~O!h/xO~O#[/OOs%Saz%Sa{%Sa%j%Sa!W%Sag%Sa![%Sa~O#[/OO%j.yOs%Waz%Wa{%Wa!W%Wag%Wa~Os&|i{&|i!W&|ig&|i~P$)nOz/zO#[/OO%j.yO!['Oa~Og'Pa~P$)nOz0SOg'Pa~Oa0UO!['Oi~P$)zOz0WO!['Oi~Oz0WO#[/OO%j.yO!['Oi~O#[/OO%j.yOg$biz$bi~O%z0ZO~P$-bO#[/OO%j.yOg%Vaz%Va~Og'Pi~P$)nO{0^O~Oa0UO!['Oq~P$)zOz0`O!['Oq~O#[/OO%j.yOz%Ui![%Ui~Oa0UO~P$)zOa0UO!['Oy~P$)zO#[/OO%j.yOg$ciz$ci~O#[/OO%j.yOz%Uq![%Uq~Oz+aO#g%ha%[%ha%_%ha%z%ha~P%SOV&OOo0cOv0qO~P'vOn0hO~Oo0hO~P'vO{0iO~Ot0jO~P!/jO&]&Z&j&h&i&g&f&d&e&c&b&`&a&_&^&[%u~",goto:"!=j'QPPPPPP'RP'Z*s+[+t,_,y-fP.SP'Z.r.r'ZPPP'Z2[PPPPPP2[5PPP5PP7b7k=sPP=v>h>kPP'Z'ZPP>zPP'Z'ZPP'Z'Z'Z'Z'Z?O?w'ZP?zP@QDXGuGyPG|HWH['ZPPPH_Hk'RP'R'RP'RP'RP'RP'RP'R'R'RP'RPP'RPP'RP'RPHqH}IVPI^IdPI^PI^I^PPPI^PKrPK{LVL]KrPI^LfPI^PLmLsPLwM]MzNeLwLwNkNxLwLwLwLw! ^! d! g! l! o! y!!P!!]!!o!!u!#P!#V!#s!#y!$P!$Z!$a!$g!$y!%T!%Z!%a!%k!%q!%w!%}!&T!&Z!&e!&k!&u!&{!'U!'[!'k!'s!'}!(UPPPPPPPPPPP!([!(_!(e!(n!(x!)TPPPPPPPPPPPP!-u!/Z!3^!6oPP!6w!7W!7a!8Y!8P!8c!8i!8l!8o!8r!8z!9jPPPPPPPPPPPPPPPPP!9m!9q!9wP!:]!:a!:m!:v!;S!;j!;m!;p!;v!;|!_![!]Do!]!^Es!^!_FZ!_!`Gk!`!aHX!a!b%T!b!cIf!c!dJU!d!eK^!e!hJU!h!i!#f!i!tJU!t!u!,|!u!wJU!w!x!.t!x!}JU!}#O!0S#O#P&o#P#Q!0j#Q#R!1Q#R#SJU#S#T%T#T#UJU#U#VK^#V#YJU#Y#Z!#f#Z#fJU#f#g!,|#g#iJU#i#j!.t#j#oJU#o#p!1n#p#q!1s#q#r!2a#r#s!2f#s$g%T$g;'SJU;'S;=`KW<%lOJU`%YT&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T`%lP;=`<%l%To%v]&n`%c_OX%TXY%oY[%T[]%o]p%Tpq%oq#O%T#O#P&o#P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To&tX&n`OY%TYZ%oZ]%T]^%o^#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc'f[&n`O!_%T!_!`([!`#T%T#T#U(r#U#f%T#f#g(r#g#h(r#h#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(cTmR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(yT!mR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk)aV&n`&[ZOr%Trs)vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk){V&n`Or%Trs*bs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk*iT&n`&^ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To+PZS_&n`OY*xYZ%TZ]*x]^%T^#o*x#o#p+r#p#q*x#q#r+r#r;'S*x;'S;=`,^<%lO*x_+wTS_OY+rZ]+r^;'S+r;'S;=`,W<%lO+r_,ZP;=`<%l+ro,aP;=`<%l*xj,kV%rQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-XT!xY&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-oV%lQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.]V&n`&ZZOw%Twx.rx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.wV&n`Ow%Twx/^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/eT&n`&]ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/{ThZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc0cTgR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk0yXVZ&n`Oz%Tz{1f{!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk1mVaR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk2ZV%oZ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc2wTzR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To3_W%pZ&n`O!_%T!_!`-Q!`!a3w!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Td4OT&{S&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk4fX!fQ&n`O!O%T!O!P5R!P!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5WV&n`O!O%T!O!P5m!P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5tT!rZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti6[a!hX&n`O!Q%T!Q![6T![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S6T#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti7fZ&n`O{%T{|8X|}%T}!O8X!O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8^V&n`O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8z]!hX&n`O!Q%T!Q![8s![!l%T!l!m9s!m#R%T#R#S8s#S#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti9zT!hX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk:bX%qR&n`O!P%T!P!Q:}!Q!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj;UV%sQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti;ro!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!d%T!d!e?q!e!g%T!g!h7a!h!l%T!l!m9s!m!q%T!q!rA]!r!z%T!z!{Bq!{#R%T#R#S>_#S#U%T#U#V?q#V#X%T#X#Y7a#Y#^%T#^#_9s#_#c%T#c#dA]#d#l%T#l#mBq#m#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti=xV&n`O!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti>fc!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S>_#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti?vY&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti@mY!hX&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiAbX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBUX!hX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBv]&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiCv]!hX&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToDvV{_&n`O!_%T!_!`E]!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TcEdT%{R&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkEzT#gZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkFbXmR&n`O!^%T!^!_F}!_!`([!`!a([!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjGUV%mQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkGrV%zZ&n`O!_%T!_!`([!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkH`WmR&n`O!_%T!_!`([!`!aHx!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjIPV%nQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkIoV_Q#}P&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToJ_]&n`&YS%uZO!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoKZP;=`<%lJUoKge&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!tJU!t!uLx!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#gLx#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoMRa&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUkN_V&n`&`ZOr%TrsNts#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkNyV&n`Or%Trs! `s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! gT&n`&bZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! }V&n`&_ZOw%Twx!!dx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!!iV&n`Ow%Twx!#Ox#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!#VT&n`&aZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!#oe&n`&YS%uZOr%Trs!%Qsw%Twx!&px!Q%T!Q![JU![!c%T!c!tJU!t!u!(`!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#g!(`#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!%XV&n`&dZOr%Trs!%ns#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!%sV&n`Or%Trs!&Ys#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&aT&n`&fZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&wV&n`&cZOw%Twx!'^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!'cV&n`Ow%Twx!'xx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!(PT&n`&eZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!(ia&n`&YS%uZOr%Trs!)nsw%Twx!+^x!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!)uV&n`&hZOr%Trs!*[s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*aV&n`Or%Trs!*vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*}T&n`&jZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!+eV&n`&gZOw%Twx!+zx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,PV&n`Ow%Twx!,fx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,mT&n`&iZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!-Vi&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!dJU!d!eLx!e!hJU!h!i!(`!i!}JU!}#R%T#R#SJU#S#T%T#T#UJU#U#VLx#V#YJU#Y#Z!(`#Z#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUo!.}a&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!0ZT!XZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc!0qT!WR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj!1XV%kQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!1sO!]~k!1zV%jR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!2fO![~i!2mT%tX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T",tokenizers:[p0e,d0e,u0e,g0e,0,1,2,3,4],topRules:{Script:[0,5]},specialized:[{term:221,get:t=>y0e[t]||-1}],tokenPrec:7668}),wA=new Ice,NH=new Set(["Script","Body","FunctionDefinition","ClassDefinition","LambdaExpression","ForStatement","MatchClause"]);function T1(t){return(e,n,r)=>{if(r)return!1;let s=e.node.getChild("VariableName");return s&&n(s,t),!0}}const w0e={FunctionDefinition:T1("function"),ClassDefinition:T1("class"),ForStatement(t,e,n){if(n){for(let r=t.node.firstChild;r;r=r.nextSibling)if(r.name=="VariableName")e(r,"variable");else if(r.name=="in")break}},ImportStatement(t,e){var n,r;let{node:s}=t,i=((n=s.firstChild)===null||n===void 0?void 0:n.name)=="from";for(let a=s.getChild("import");a;a=a.nextSibling)a.name=="VariableName"&&((r=a.nextSibling)===null||r===void 0?void 0:r.name)!="as"&&e(a,i?"variable":"namespace")},AssignStatement(t,e){for(let n=t.node.firstChild;n;n=n.nextSibling)if(n.name=="VariableName")e(n,"variable");else if(n.name==":"||n.name=="AssignOp")break},ParamList(t,e){for(let n=null,r=t.node.firstChild;r;r=r.nextSibling)r.name=="VariableName"&&(!n||!/\*|AssignOp/.test(n.name))&&e(r,"variable"),n=r},CapturePattern:T1("variable"),AsPattern:T1("variable"),__proto__:null};function CH(t,e){let n=wA.get(e);if(n)return n;let r=[],s=!0;function i(a,l){let c=t.sliceString(a.from,a.to);r.push({label:c,type:l})}return e.cursor(hs.IncludeAnonymous).iterate(a=>{if(a.name){let l=w0e[a.name];if(l&&l(a,i,s)||!s&&NH.has(a.name))return!1;s=!1}else if(a.to-a.from>8192){for(let l of CH(t,a.node))r.push(l);return!1}}),wA.set(e,r),r}const SA=/^[\w\xa1-\uffff][\w\d\xa1-\uffff]*$/,TH=["String","FormatString","Comment","PropertyName"];function S0e(t){let e=Ss(t.state).resolveInner(t.pos,-1);if(TH.indexOf(e.name)>-1)return null;let n=e.name=="VariableName"||e.to-e.from<20&&SA.test(t.state.sliceDoc(e.from,e.to));if(!n&&!t.explicit)return null;let r=[];for(let s=e;s;s=s.parent)NH.has(s.name)&&(r=r.concat(CH(t.state.doc,s)));return{options:r,from:n?e.from:t.pos,validFor:SA}}const k0e=["__annotations__","__builtins__","__debug__","__doc__","__import__","__name__","__loader__","__package__","__spec__","False","None","True"].map(t=>({label:t,type:"constant"})).concat(["ArithmeticError","AssertionError","AttributeError","BaseException","BlockingIOError","BrokenPipeError","BufferError","BytesWarning","ChildProcessError","ConnectionAbortedError","ConnectionError","ConnectionRefusedError","ConnectionResetError","DeprecationWarning","EOFError","Ellipsis","EncodingWarning","EnvironmentError","Exception","FileExistsError","FileNotFoundError","FloatingPointError","FutureWarning","GeneratorExit","IOError","ImportError","ImportWarning","IndentationError","IndexError","InterruptedError","IsADirectoryError","KeyError","KeyboardInterrupt","LookupError","MemoryError","ModuleNotFoundError","NameError","NotADirectoryError","NotImplemented","NotImplementedError","OSError","OverflowError","PendingDeprecationWarning","PermissionError","ProcessLookupError","RecursionError","ReferenceError","ResourceWarning","RuntimeError","RuntimeWarning","StopAsyncIteration","StopIteration","SyntaxError","SyntaxWarning","SystemError","SystemExit","TabError","TimeoutError","TypeError","UnboundLocalError","UnicodeDecodeError","UnicodeEncodeError","UnicodeError","UnicodeTranslateError","UnicodeWarning","UserWarning","ValueError","Warning","ZeroDivisionError"].map(t=>({label:t,type:"type"}))).concat(["bool","bytearray","bytes","classmethod","complex","float","frozenset","int","list","map","memoryview","object","range","set","staticmethod","str","super","tuple","type"].map(t=>({label:t,type:"class"}))).concat(["abs","aiter","all","anext","any","ascii","bin","breakpoint","callable","chr","compile","delattr","dict","dir","divmod","enumerate","eval","exec","exit","filter","format","getattr","globals","hasattr","hash","help","hex","id","input","isinstance","issubclass","iter","len","license","locals","max","min","next","oct","open","ord","pow","print","property","quit","repr","reversed","round","setattr","slice","sorted","sum","vars","zip"].map(t=>({label:t,type:"function"}))),O0e=[wl("def ${name}(${params}):\n ${}",{label:"def",detail:"function",type:"keyword"}),wl("for ${name} in ${collection}:\n ${}",{label:"for",detail:"loop",type:"keyword"}),wl("while ${}:\n ${}",{label:"while",detail:"loop",type:"keyword"}),wl("try:\n ${}\nexcept ${error}:\n ${}",{label:"try",detail:"/ except block",type:"keyword"}),wl(`if \${}: -`,{label:"if",detail:"block",type:"keyword"}),vl("if ${}:\n ${}\nelse:\n ${}",{label:"if",detail:"/ else block",type:"keyword"}),vl("class ${name}:\n def __init__(self, ${params}):\n ${}",{label:"class",detail:"definition",type:"keyword"}),vl("import ${module}",{label:"import",detail:"statement",type:"keyword"}),vl("from ${module} import ${names}",{label:"from",detail:"import",type:"keyword"})],w0e=khe(OH,Z$(y0e.concat(b0e)));function dS(t){let{node:e,pos:n}=t,r=t.lineIndent(n,-1),s=null;for(;;){let i=e.childBefore(n);if(i)if(i.name=="Comment")n=i.from;else if(i.name=="Body"||i.name=="MatchBody")t.baseIndentFor(i)+t.unit<=r&&(s=i),e=i;else if(i.name=="MatchClause")e=i;else if(i.type.is("Statement"))e=i;else break;else break}return s}function hS(t,e){let n=t.baseIndentFor(e),r=t.lineAt(t.pos,-1),s=r.from+r.text.length;return/^\s*($|#)/.test(r.text)&&t.node.ton?null:n+t.unit}const fS=X0.define({name:"python",parser:g0e.configure({props:[mb.add({Body:t=>{var e;let n=/^\s*(#|$)/.test(t.textAfter)&&dS(t)||t.node;return(e=hS(t,n))!==null&&e!==void 0?e:t.continue()},MatchBody:t=>{var e;let n=dS(t);return(e=hS(t,n||t.node))!==null&&e!==void 0?e:t.continue()},IfStatement:t=>/^\s*(else:|elif )/.test(t.textAfter)?t.baseIndent:t.continue(),"ForStatement WhileStatement":t=>/^\s*else:/.test(t.textAfter)?t.baseIndent:t.continue(),TryStatement:t=>/^\s*(except[ :]|finally:|else:)/.test(t.textAfter)?t.baseIndent:t.continue(),MatchStatement:t=>/^\s*case /.test(t.textAfter)?t.baseIndent+t.unit:t.continue(),"TupleExpression ComprehensionExpression ParamList ArgList ParenthesizedExpression":X4({closing:")"}),"DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression":X4({closing:"}"}),"ArrayExpression ArrayComprehensionExpression":X4({closing:"]"}),MemberExpression:t=>t.baseIndent+t.unit,"String FormatString":()=>null,Script:t=>{var e;let n=dS(t);return(e=n&&hS(t,n))!==null&&e!==void 0?e:t.continue()}}),b6.add({"ArrayExpression DictionaryExpression SetExpression TupleExpression":Qq,Body:(t,e)=>({from:t.from+1,to:t.to-(t.to==e.doc.length?0:1)}),"String FormatString":(t,e)=>({from:e.doc.lineAt(t.from).to,to:t.to})})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"'''",'"""'],stringPrefixes:["f","fr","rf","r","u","b","br","rb","F","FR","RF","R","U","B","BR","RB"]},commentTokens:{line:"#"},indentOnInput:/^\s*([\}\]\)]|else:|elif |except |finally:|case\s+[^:]*:?)$/}});function S0e(){return new qq(fS,[fS.data.of({autocomplete:v0e}),fS.data.of({autocomplete:w0e})])}const k0e=x6({String:ve.string,Number:ve.number,"True False":ve.bool,PropertyName:ve.propertyName,Null:ve.null,", :":ve.separator,"[ ]":ve.squareBracket,"{ }":ve.brace}),O0e=sp.deserialize({version:14,states:"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l",stateData:"#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O",goto:"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R",nodeNames:"⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array",maxTerm:25,nodeProps:[["isolate",-2,6,11,""],["openedBy",7,"{",14,"["],["closedBy",8,"}",15,"]"]],propSources:[k0e],skippedNodes:[0],repeatNodeCount:2,tokenData:"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~",tokenizers:[0],topRules:{JsonText:[0,1]},tokenPrec:0}),j0e=()=>t=>{try{JSON.parse(t.state.doc.toString())}catch(e){if(!(e instanceof SyntaxError))throw e;const n=N0e(e,t.state.doc);return[{from:n,message:e.message,severity:"error",to:n}]}return[]};function N0e(t,e){let n;return(n=t.message.match(/at position (\d+)/))?Math.min(+n[1],e.length):(n=t.message.match(/at line (\d+) column (\d+)/))?Math.min(e.line(+n[1]).from+ +n[2]-1,e.length):0}const C0e=X0.define({name:"json",parser:O0e.configure({props:[mb.add({Object:x_({except:/^\s*\}/}),Array:x_({except:/^\s*\]/})}),b6.add({"Object Array":Qq})]}),languageData:{closeBrackets:{brackets:["[","{",'"']},indentOnInput:/^\s*[\}\]]$/}});function T0e(){return new qq(C0e)}const E0e={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(t,e){let n;if(!e.inString&&(n=t.match(/^('''|"""|'|")/))&&(e.stringType=n[0],e.inString=!0),t.sol()&&!e.inString&&e.inArray===0&&(e.lhs=!0),e.inString){for(;e.inString;)if(t.match(e.stringType))e.inString=!1;else if(t.peek()==="\\")t.next(),t.next();else{if(t.eol())break;t.match(/^.[^\\\"\']*/)}return e.lhs?"property":"string"}else{if(e.inArray&&t.peek()==="]")return t.next(),e.inArray--,"bracket";if(e.lhs&&t.peek()==="["&&t.skipTo("]"))return t.next(),t.peek()==="]"&&t.next(),"atom";if(t.peek()==="#")return t.skipToEnd(),"comment";if(t.eatSpace())return null;if(e.lhs&&t.eatWhile(function(r){return r!="="&&r!=" "}))return"property";if(e.lhs&&t.peek()==="=")return t.next(),e.lhs=!1,null;if(!e.lhs&&t.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!e.lhs&&(t.match("true")||t.match("false")))return"atom";if(!e.lhs&&t.peek()==="[")return e.inArray++,t.next(),"bracket";if(!e.lhs&&t.match(/^\-?\d+(?:\.\d+)?/))return"number";t.eatSpace()||t.next()}return null},languageData:{commentTokens:{line:"#"}}},_0e={python:[S0e()],json:[T0e(),j0e()],toml:[w6.define(E0e)],text:[]};function A0e({value:t,onChange:e,language:n="text",readOnly:r=!1,height:s="400px",minHeight:i,maxHeight:a,placeholder:l,theme:c="dark",className:d=""}){const[h,m]=b.useState(!1);if(b.useEffect(()=>{m(!0)},[]),!h)return o.jsx("div",{className:`rounded-md border bg-muted animate-pulse ${d}`,style:{height:s,minHeight:i,maxHeight:a}});const g=[..._0e[n]||[],Ze.lineWrapping];return r&&g.push(Ze.editable.of(!1)),o.jsx("div",{className:`rounded-md overflow-hidden border ${d}`,children:o.jsx(mH,{value:t,height:s,minHeight:i,maxHeight:a,theme:c==="dark"?fH:void 0,extensions:g,onChange:e,placeholder:l,basicSetup:{lineNumbers:!0,highlightActiveLineGutter:!0,highlightSpecialChars:!0,history:!0,foldGutter:!0,drawSelection:!0,dropCursor:!0,allowMultipleSelections:!0,indentOnInput:!0,syntaxHighlighting:!0,bracketMatching:!0,closeBrackets:!0,autocompletion:!0,rectangularSelection:!0,crosshairCursor:!0,highlightActiveLine:!0,highlightSelectionMatches:!0,closeBracketsKeymap:!0,defaultKeymap:!0,searchKeymap:!0,historyKeymap:!0,foldKeymap:!0,completionKeymap:!0,lintKeymap:!0}})})}function M0e(){const[t,e]=b.useState(!0),[n,r]=b.useState(!1),[s,i]=b.useState(!1),[a,l]=b.useState(!1),[c,d]=b.useState(!1),[h,m]=b.useState(!1),[g,x]=b.useState("visual"),[y,w]=b.useState(""),[S,k]=b.useState(!1),{toast:j}=as(),[N,T]=b.useState(null),[E,_]=b.useState(null),[A,L]=b.useState(null),[P,B]=b.useState(null),[$,U]=b.useState(null),[te,z]=b.useState(null),[Q,F]=b.useState(null),[Y,J]=b.useState(null),[X,R]=b.useState(null),[ie,G]=b.useState(null),[I,V]=b.useState(null),[ee,ne]=b.useState(null),[W,se]=b.useState(null),[re,oe]=b.useState(null),[Te,We]=b.useState(null),[Ye,Je]=b.useState(null),[Oe,Ve]=b.useState(null),[Ue,He]=b.useState(null),Ot=b.useRef(null),xt=b.useRef(!0),kn=b.useRef({}),It=b.useCallback(async()=>{try{const Fe=await bae();w(Fe),k(!1)}catch(Fe){j({variant:"destructive",title:"加载失败",description:Fe instanceof Error?Fe.message:"加载源代码失败"})}},[j]),Yt=b.useCallback(async()=>{try{e(!0);const Fe=await iE();kn.current=Fe,T(Fe.bot),_(Fe.personality);const rt=Fe.chat;rt.talk_value_rules||(rt.talk_value_rules=[]),L(rt),B(Fe.expression),U(Fe.emoji),z(Fe.memory),F(Fe.tool),J(Fe.mood),R(Fe.voice),G(Fe.lpmm_knowledge),V(Fe.keyword_reaction),ne(Fe.response_post_process),se(Fe.chinese_typo),oe(Fe.response_splitter),We(Fe.log),Je(Fe.debug),Ve(Fe.maim_message),He(Fe.telemetry),l(!1),xt.current=!1,await It()}catch(Fe){console.error("加载配置失败:",Fe),j({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}finally{e(!1)}},[j,It]);b.useEffect(()=>{Yt()},[Yt]);const _t=b.useCallback(async(Fe,rt)=>{if(!xt.current)try{i(!0),await Sae(Fe,rt),l(!1)}catch(tn){console.error(`自动保存 ${Fe} 失败:`,tn),l(!0)}finally{i(!1)}},[]),mt=b.useCallback((Fe,rt)=>{xt.current||(l(!0),Ot.current&&clearTimeout(Ot.current),Ot.current=setTimeout(()=>{_t(Fe,rt)},2e3))},[_t]);b.useEffect(()=>{N&&!xt.current&&mt("bot",N)},[N,mt]),b.useEffect(()=>{E&&!xt.current&&mt("personality",E)},[E,mt]),b.useEffect(()=>{A&&!xt.current&&mt("chat",A)},[A,mt]),b.useEffect(()=>{P&&!xt.current&&mt("expression",P)},[P,mt]),b.useEffect(()=>{$&&!xt.current&&mt("emoji",$)},[$,mt]),b.useEffect(()=>{te&&!xt.current&&mt("memory",te)},[te,mt]),b.useEffect(()=>{Q&&!xt.current&&mt("tool",Q)},[Q,mt]),b.useEffect(()=>{Y&&!xt.current&&mt("mood",Y)},[Y,mt]),b.useEffect(()=>{X&&!xt.current&&mt("voice",X)},[X,mt]),b.useEffect(()=>{ie&&!xt.current&&mt("lpmm_knowledge",ie)},[ie,mt]),b.useEffect(()=>{I&&!xt.current&&mt("keyword_reaction",I)},[I,mt]),b.useEffect(()=>{ee&&!xt.current&&mt("response_post_process",ee)},[ee,mt]),b.useEffect(()=>{W&&!xt.current&&mt("chinese_typo",W)},[W,mt]),b.useEffect(()=>{re&&!xt.current&&mt("response_splitter",re)},[re,mt]),b.useEffect(()=>{Te&&!xt.current&&mt("log",Te)},[Te,mt]),b.useEffect(()=>{Ye&&!xt.current&&mt("debug",Ye)},[Ye,mt]),b.useEffect(()=>{Oe&&!xt.current&&mt("maim_message",Oe)},[Oe,mt]),b.useEffect(()=>{Ue&&!xt.current&&mt("telemetry",Ue)},[Ue,mt]);const Ne=async()=>{try{r(!0),await wae(y),l(!1),k(!1),j({title:"保存成功",description:"配置已保存"}),await Yt()}catch(Fe){k(!0),j({variant:"destructive",title:"保存失败",description:Fe instanceof Error?Fe.message:"保存配置失败"})}finally{r(!1)}},Ie=async Fe=>{if(a){j({variant:"destructive",title:"切换失败",description:"请先保存当前更改"});return}if(x(Fe),Fe==="source")await It();else try{const rt=await iE();kn.current=rt,T(rt.bot),_(rt.personality);const tn=rt.chat;tn.talk_value_rules||(tn.talk_value_rules=[]),L(tn),B(rt.expression),U(rt.emoji),z(rt.memory),F(rt.tool),J(rt.mood),R(rt.voice),G(rt.lpmm_knowledge),V(rt.keyword_reaction),ne(rt.response_post_process),se(rt.chinese_typo),oe(rt.response_splitter),We(rt.log),Je(rt.debug),Ve(rt.maim_message),He(rt.telemetry),l(!1)}catch(rt){console.error("加载配置失败:",rt),j({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}},st=async()=>{try{r(!0),Ot.current&&clearTimeout(Ot.current);const Fe={...kn.current,bot:N,personality:E,chat:A,expression:P,emoji:$,memory:te,tool:Q,mood:Y,voice:X,lpmm_knowledge:ie,keyword_reaction:I,response_post_process:ee,chinese_typo:W,response_splitter:re,log:Te,debug:Ye,maim_message:Oe,telemetry:Ue};await aE(Fe),l(!1),j({title:"保存成功",description:"麦麦主程序配置已保存"})}catch(Fe){console.error("保存配置失败:",Fe),j({title:"保存失败",description:Fe.message,variant:"destructive"})}finally{r(!1)}},yt=async()=>{try{d(!0),ib().catch(()=>{}),m(!0)}catch(Fe){console.error("重启失败:",Fe),m(!1),j({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),d(!1)}},Pt=async()=>{try{r(!0),Ot.current&&clearTimeout(Ot.current);const Fe={...kn.current,bot:N,personality:E,chat:A,expression:P,emoji:$,memory:te,tool:Q,mood:Y,voice:X,lpmm_knowledge:ie,keyword_reaction:I,response_post_process:ee,chinese_typo:W,response_splitter:re,log:Te,debug:Ye,maim_message:Oe,telemetry:Ue};await aE(Fe),l(!1),j({title:"保存成功",description:"配置已保存,即将重启麦麦..."}),await new Promise(rt=>setTimeout(rt,500)),await yt()}catch(Fe){console.error("保存失败:",Fe),j({title:"保存失败",description:Fe.message,variant:"destructive"})}finally{r(!1)}},Mt=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},zn=()=>{m(!1),d(!1),j({title:"重启失败",description:"服务器未能在预期时间内恢复,请手动检查",variant:"destructive"})};return t?o.jsx(gn,{className:"h-full",children:o.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:o.jsx("div",{className:"flex items-center justify-center h-64",children:o.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):o.jsx(gn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦主程序配置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的核心功能和行为设置"})]}),o.jsxs("div",{className:"flex gap-2 w-full sm:w-auto items-center",children:[o.jsx(ja,{value:g,onValueChange:Fe=>Ie(Fe),className:"w-auto",children:o.jsxs(Wi,{className:"h-9",children:[o.jsxs(Lt,{value:"visual",className:"text-xs sm:text-sm px-2 sm:px-3",children:[o.jsx(Wee,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"可视化"]}),o.jsxs(Lt,{value:"source",className:"text-xs sm:text-sm px-2 sm:px-3",children:[o.jsx(Gee,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"源代码"]})]})}),o.jsxs(de,{onClick:g==="visual"?st:Ne,disabled:n||s||!a||c,size:"sm",variant:"outline",className:"flex-1 sm:flex-none",children:[o.jsx(Gy,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),n?"保存中...":s?"自动保存中...":a?"保存配置":"已保存"]}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs(de,{disabled:n||s||c,size:"sm",className:"flex-1 sm:flex-none",children:[o.jsx(Aj,{className:"mr-2 h-4 w-4"}),c?"重启中...":a?"保存并重启":"重启麦麦"]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认重启麦麦?"}),o.jsx(_n,{className:"space-y-3",asChild:!0,children:o.jsxs("div",{children:[o.jsx("p",{children:a?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),o.jsxs(ga,{className:"border-yellow-500/50 bg-yellow-500/10",children:[o.jsx(Oa,{className:"h-4 w-4 text-yellow-600"}),o.jsxs(xa,{className:"text-yellow-900 dark:text-yellow-100",children:[o.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",o.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",o.jsxs(Dr,{children:[o.jsx(Of,{asChild:!0,children:o.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[o.jsx(Wy,{className:"h-3 w-3"}),"如何结束程序?"]})}),o.jsxs(Sr,{className:"max-w-2xl",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"如何结束使用重启功能后的麦麦程序"}),o.jsx(ss,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),o.jsxs(ja,{defaultValue:"windows",className:"w-full",children:[o.jsxs(Wi,{className:"grid w-full grid-cols-3",children:[o.jsx(Lt,{value:"windows",children:"Windows"}),o.jsx(Lt,{value:"macos",children:"macOS"}),o.jsx(Lt,{value:"linux",children:"Linux"})]}),o.jsxs(un,{value:"windows",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),o.jsxs("li",{children:['在"进程"或"详细信息"标签页中找到 ',o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),o.jsx("li",{children:'右键点击并选择"结束任务"'})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),o.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),o.jsxs(un,{value:"macos",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"}),' 打开 Spotlight,搜索"活动监视器"']}),o.jsxs("li",{children:["在进程列表中找到 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),o.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]})]}),o.jsxs(un,{value:"linux",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),o.jsx("p",{children:'pkill -9 -f "bot.py"'}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["在终端输入 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),o.jsx(ws,{children:o.jsx(Gj,{asChild:!0,children:o.jsx(de,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:a?Pt:yt,children:a?"保存并重启":"确认重启"})]})]})]})]})]}),o.jsxs(ga,{children:[o.jsx(Oa,{className:"h-4 w-4"}),o.jsxs(xa,{children:["配置更新后需要",o.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),g==="source"&&o.jsxs("div",{className:"space-y-4",children:[o.jsxs(ga,{children:[o.jsx(Oa,{className:"h-4 w-4"}),o.jsxs(xa,{children:[o.jsx("strong",{children:"源代码模式(高级功能):"}),"直接编辑 TOML 配置文件。此功能仅适用于熟悉 TOML 语法的高级用户。保存时会在后端验证格式,只有格式完全正确才能保存。",S&&o.jsx("span",{className:"text-destructive font-semibold ml-2",children:"⚠️ 上次保存失败,请检查 TOML 格式"})]})]}),o.jsx(A0e,{value:y,onChange:Fe=>{w(Fe),l(!0),S&&k(!1)},language:"toml",theme:"dark",height:"calc(100vh - 280px)",minHeight:"500px",placeholder:"TOML 配置内容"})]}),g==="visual"&&o.jsx(o.Fragment,{children:o.jsxs(ja,{defaultValue:"bot",className:"w-full",children:[o.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:o.jsxs(Wi,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5 lg:grid-cols-10",children:[o.jsx(Lt,{value:"bot",className:"flex-shrink-0",children:"基本信息"}),o.jsx(Lt,{value:"personality",className:"flex-shrink-0",children:"人格"}),o.jsx(Lt,{value:"chat",className:"flex-shrink-0",children:"聊天"}),o.jsx(Lt,{value:"expression",className:"flex-shrink-0",children:"表达"}),o.jsx(Lt,{value:"features",className:"flex-shrink-0",children:"功能"}),o.jsx(Lt,{value:"processing",className:"flex-shrink-0",children:"处理"}),o.jsx(Lt,{value:"mood",className:"flex-shrink-0",children:"情绪"}),o.jsx(Lt,{value:"voice",className:"flex-shrink-0",children:"语音"}),o.jsx(Lt,{value:"lpmm",className:"flex-shrink-0",children:"知识库"}),o.jsx(Lt,{value:"other",className:"flex-shrink-0",children:"其他"})]})}),o.jsx(un,{value:"bot",className:"space-y-4",children:N&&o.jsx(R0e,{config:N,onChange:T})}),o.jsx(un,{value:"personality",className:"space-y-4",children:E&&o.jsx(D0e,{config:E,onChange:_})}),o.jsx(un,{value:"chat",className:"space-y-4",children:A&&o.jsx(P0e,{config:A,onChange:L})}),o.jsx(un,{value:"expression",className:"space-y-4",children:P&&o.jsx(I0e,{config:P,onChange:B})}),o.jsx(un,{value:"features",className:"space-y-4",children:$&&te&&Q&&o.jsx(L0e,{emojiConfig:$,memoryConfig:te,toolConfig:Q,onEmojiChange:U,onMemoryChange:z,onToolChange:F})}),o.jsx(un,{value:"processing",className:"space-y-4",children:I&&ee&&W&&re&&o.jsx(B0e,{keywordReactionConfig:I,responsePostProcessConfig:ee,chineseTypoConfig:W,responseSplitterConfig:re,onKeywordReactionChange:V,onResponsePostProcessChange:ne,onChineseTypoChange:se,onResponseSplitterChange:oe})}),o.jsx(un,{value:"mood",className:"space-y-4",children:Y&&o.jsx(F0e,{config:Y,onChange:J})}),o.jsx(un,{value:"voice",className:"space-y-4",children:X&&o.jsx(q0e,{config:X,onChange:R})}),o.jsx(un,{value:"lpmm",className:"space-y-4",children:ie&&o.jsx($0e,{config:ie,onChange:G})}),o.jsxs(un,{value:"other",className:"space-y-4",children:[Te&&o.jsx(H0e,{config:Te,onChange:We}),Ye&&o.jsx(Q0e,{config:Ye,onChange:Je}),Oe&&o.jsx(V0e,{config:Oe,onChange:Ve}),Ue&&o.jsx(U0e,{config:Ue,onChange:He})]})]})}),h&&o.jsx(Kj,{onRestartComplete:Mt,onRestartFailed:zn})]})})}function R0e({config:t,onChange:e}){const n=()=>{e({...t,platforms:[...t.platforms,""]})},r=c=>{e({...t,platforms:t.platforms.filter((d,h)=>h!==c)})},s=(c,d)=>{const h=[...t.platforms];h[c]=d,e({...t,platforms:h})},i=()=>{e({...t,alias_names:[...t.alias_names,""]})},a=c=>{e({...t,alias_names:t.alias_names.filter((d,h)=>h!==c)})},l=(c,d)=>{const h=[...t.alias_names];h[c]=d,e({...t,alias_names:h})};return o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"基本信息"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"platform",children:"平台"}),o.jsx(ze,{id:"platform",value:t.platform,onChange:c=>e({...t,platform:c.target.value}),placeholder:"qq"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"qq_account",children:"QQ账号"}),o.jsx(ze,{id:"qq_account",value:t.qq_account,onChange:c=>e({...t,qq_account:c.target.value}),placeholder:"123456789"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"nickname",children:"昵称"}),o.jsx(ze,{id:"nickname",value:t.nickname,onChange:c=>e({...t,nickname:c.target.value}),placeholder:"麦麦"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{children:"其他平台账号"}),o.jsxs(de,{onClick:n,size:"sm",variant:"outline",children:[o.jsx(Ls,{className:"h-4 w-4 mr-1"}),"添加"]})]}),o.jsxs("div",{className:"space-y-2",children:[t.platforms.map((c,d)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{value:c,onChange:h=>s(d,h.target.value),placeholder:"wx:114514"}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(de,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除平台账号 "',c||"(空)",'" 吗?此操作无法撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>r(d),children:"删除"})]})]})]})]},d)),t.platforms.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无其他平台账号"})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{children:"别名"}),o.jsxs(de,{onClick:i,size:"sm",variant:"outline",children:[o.jsx(Ls,{className:"h-4 w-4 mr-1"}),"添加"]})]}),o.jsxs("div",{className:"space-y-2",children:[t.alias_names.map((c,d)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{value:c,onChange:h=>l(d,h.target.value),placeholder:"小麦"}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(de,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除别名 "',c||"(空)",'" 吗?此操作无法撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>a(d),children:"删除"})]})]})]})]},d)),t.alias_names.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无别名"})]})]})]})]})})}function D0e({config:t,onChange:e}){const n=()=>{e({...t,states:[...t.states,""]})},r=i=>{e({...t,states:t.states.filter((a,l)=>l!==i)})},s=(i,a)=>{const l=[...t.states];l[i]=a,e({...t,states:l})};return o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"人格设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"personality",children:"人格特质"}),o.jsx(Mr,{id:"personality",value:t.personality,onChange:i=>e({...t,personality:i.target.value}),placeholder:"描述人格特质和身份特征(建议120字以内)",rows:3}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"建议120字以内,描述人格特质和身份特征"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"reply_style",children:"表达风格"}),o.jsx(Mr,{id:"reply_style",value:t.reply_style,onChange:i=>e({...t,reply_style:i.target.value}),placeholder:"描述说话的表达风格和习惯",rows:3})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"interest",children:"兴趣"}),o.jsx(Mr,{id:"interest",value:t.interest,onChange:i=>e({...t,interest:i.target.value}),placeholder:"会影响麦麦对什么话题进行回复",rows:2})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"plan_style",children:"说话规则与行为风格"}),o.jsx(Mr,{id:"plan_style",value:t.plan_style,onChange:i=>e({...t,plan_style:i.target.value}),placeholder:"麦麦的说话规则和行为风格",rows:5})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"visual_style",children:"识图规则"}),o.jsx(Mr,{id:"visual_style",value:t.visual_style,onChange:i=>e({...t,visual_style:i.target.value}),placeholder:"识图时的处理规则",rows:3})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"private_plan_style",children:"私聊规则"}),o.jsx(Mr,{id:"private_plan_style",value:t.private_plan_style,onChange:i=>e({...t,private_plan_style:i.target.value}),placeholder:"私聊的说话规则和行为风格",rows:4})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{children:"状态列表(人格多样性)"}),o.jsxs(de,{onClick:n,size:"sm",variant:"outline",children:[o.jsx(Ls,{className:"h-4 w-4 mr-1"}),"添加状态"]})]}),o.jsx("div",{className:"space-y-2",children:t.states.map((i,a)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Mr,{value:i,onChange:l=>s(a,l.target.value),placeholder:"描述一个人格状态",rows:2}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(de,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsx(_n,{children:"确定要删除这个人格状态吗?此操作无法撤销。"})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>r(a),children:"删除"})]})]})]})]},a))})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"state_probability",children:"状态替换概率"}),o.jsx(ze,{id:"state_probability",type:"number",step:"0.1",min:"0",max:"1",value:t.state_probability,onChange:i=>e({...t,state_probability:parseFloat(i.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"每次构建人格时替换 personality 的概率(0.0-1.0)"})]})]})]})})}function P0e({config:t,onChange:e}){const n=()=>{e({...t,talk_value_rules:[...t.talk_value_rules,{target:"",time:"00:00-23:59",value:1}]})},r=l=>{e({...t,talk_value_rules:t.talk_value_rules.filter((c,d)=>d!==l)})},s=(l,c,d)=>{const h=[...t.talk_value_rules];h[l]={...h[l],[c]:d},e({...t,talk_value_rules:h})},i=({value:l,onChange:c})=>{const[d,h]=b.useState("00"),[m,g]=b.useState("00"),[x,y]=b.useState("23"),[w,S]=b.useState("59");b.useEffect(()=>{const j=l.split("-");if(j.length===2){const[N,T]=j,[E,_]=N.split(":"),[A,L]=T.split(":");E&&h(E.padStart(2,"0")),_&&g(_.padStart(2,"0")),A&&y(A.padStart(2,"0")),L&&S(L.padStart(2,"0"))}},[l]);const k=(j,N,T,E)=>{const _=`${j}:${N}-${T}:${E}`;c(_)};return o.jsxs(zo,{children:[o.jsx(Io,{asChild:!0,children:o.jsxs(de,{variant:"outline",className:"w-full justify-start font-mono text-sm",children:[o.jsx(_h,{className:"h-4 w-4 mr-2"}),l||"选择时间段"]})}),o.jsx(Xa,{className:"w-80",children:o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"font-medium text-sm mb-3",children:"开始时间"}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-xs",children:"小时"}),o.jsxs(Vt,{value:d,onValueChange:j=>{h(j),k(j,m,x,w)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:Array.from({length:24},(j,N)=>N).map(j=>o.jsx(De,{value:j.toString().padStart(2,"0"),children:j.toString().padStart(2,"0")},j))})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-xs",children:"分钟"}),o.jsxs(Vt,{value:m,onValueChange:j=>{g(j),k(d,j,x,w)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:Array.from({length:60},(j,N)=>N).map(j=>o.jsx(De,{value:j.toString().padStart(2,"0"),children:j.toString().padStart(2,"0")},j))})]})]})]})]}),o.jsxs("div",{children:[o.jsx("h4",{className:"font-medium text-sm mb-3",children:"结束时间"}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-xs",children:"小时"}),o.jsxs(Vt,{value:x,onValueChange:j=>{y(j),k(d,m,j,w)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:Array.from({length:24},(j,N)=>N).map(j=>o.jsx(De,{value:j.toString().padStart(2,"0"),children:j.toString().padStart(2,"0")},j))})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-xs",children:"分钟"}),o.jsxs(Vt,{value:w,onValueChange:j=>{S(j),k(d,m,x,j)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:Array.from({length:60},(j,N)=>N).map(j=>o.jsx(De,{value:j.toString().padStart(2,"0"),children:j.toString().padStart(2,"0")},j))})]})]})]})]})]})})]})},a=({rule:l})=>{const c=`{ target = "${l.target}", time = "${l.time}", value = ${l.value.toFixed(1)} }`;return o.jsxs(zo,{children:[o.jsx(Io,{asChild:!0,children:o.jsxs(de,{variant:"outline",size:"sm",children:[o.jsx(Ea,{className:"h-4 w-4 mr-1"}),"预览"]})}),o.jsx(Xa,{className:"w-96",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),o.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:c}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"聊天设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"talk_value",children:"聊天频率(基础值)"}),o.jsx(ze,{id:"talk_value",type:"number",step:"0.1",min:"0",max:"1",value:t.talk_value,onChange:l=>e({...t,talk_value:parseFloat(l.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"越小越沉默,范围 0-1"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"mentioned_bot_reply",checked:t.mentioned_bot_reply,onCheckedChange:l=>e({...t,mentioned_bot_reply:l})}),o.jsx(he,{htmlFor:"mentioned_bot_reply",className:"cursor-pointer",children:"启用提及必回复"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"max_context_size",children:"上下文长度"}),o.jsx(ze,{id:"max_context_size",type:"number",min:"1",value:t.max_context_size,onChange:l=>e({...t,max_context_size:parseInt(l.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"planner_smooth",children:"规划器平滑"}),o.jsx(ze,{id:"planner_smooth",type:"number",step:"1",min:"0",value:t.planner_smooth,onChange:l=>e({...t,planner_smooth:parseFloat(l.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"增大数值会减小 planner 负荷,推荐 1-5,0 为关闭"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"enable_talk_value_rules",checked:t.enable_talk_value_rules,onCheckedChange:l=>e({...t,enable_talk_value_rules:l})}),o.jsx(he,{htmlFor:"enable_talk_value_rules",className:"cursor-pointer",children:"启用动态发言频率规则"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"include_planner_reasoning",checked:t.include_planner_reasoning,onCheckedChange:l=>e({...t,include_planner_reasoning:l})}),o.jsx(he,{htmlFor:"include_planner_reasoning",className:"cursor-pointer",children:"将 planner 推理加入 replyer"})]})]})]}),t.enable_talk_value_rules&&o.jsxs("div",{className:"border-t pt-6",children:[o.jsxs("div",{className:"flex items-center justify-between mb-4",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"text-base font-semibold",children:"动态发言频率规则"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"按时段或聊天流ID调整发言频率,优先匹配具体聊天,再匹配全局规则"})]}),o.jsxs(de,{onClick:n,size:"sm",children:[o.jsx(Ls,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),t.talk_value_rules&&t.talk_value_rules.length>0?o.jsx("div",{className:"space-y-4",children:t.talk_value_rules.map((l,c)=>o.jsxs("div",{className:"rounded-lg border p-4 bg-muted/50 space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium text-muted-foreground",children:["规则 #",c+1]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(a,{rule:l}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(de,{variant:"ghost",size:"sm",children:o.jsx(Sn,{className:"h-4 w-4 text-destructive"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除规则 #",c+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>r(c),children:"删除"})]})]})]})]})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"配置类型"}),o.jsxs(Vt,{value:l.target===""?"global":"specific",onValueChange:d=>{d==="global"?s(c,"target",""):s(c,"target","qq::group")},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"global",children:"全局配置"}),o.jsx(De,{value:"specific",children:"详细配置"})]})]})]}),l.target!==""&&(()=>{const d=l.target.split(":"),h=d[0]||"qq",m=d[1]||"",g=d[2]||"group";return o.jsxs("div",{className:"grid gap-4 p-4 rounded-lg bg-muted/50",children:[o.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"平台"}),o.jsxs(Vt,{value:h,onValueChange:x=>{s(c,"target",`${x}:${m}:${g}`)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"qq",children:"QQ"}),o.jsx(De,{value:"wx",children:"微信"})]})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"群 ID"}),o.jsx(ze,{value:m,onChange:x=>{s(c,"target",`${h}:${x.target.value}:${g}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"类型"}),o.jsxs(Vt,{value:g,onValueChange:x=>{s(c,"target",`${h}:${m}:${x}`)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"group",children:"群组(group)"}),o.jsx(De,{value:"private",children:"私聊(private)"})]})]})]})]}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",l.target||"(未设置)"]})]})})(),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"时间段 (Time)"}),o.jsx(i,{value:l.time,onChange:d=>s(c,"time",d)}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"支持跨夜区间,例如 23:00-02:00"})]}),o.jsxs("div",{className:"grid gap-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{htmlFor:`rule-value-${c}`,className:"text-xs font-medium",children:"发言频率值 (Value)"}),o.jsx(ze,{id:`rule-value-${c}`,type:"number",step:"0.01",min:"0.01",max:"1",value:l.value,onChange:d=>{const h=parseFloat(d.target.value);isNaN(h)||s(c,"value",Math.max(.01,Math.min(1,h)))},className:"w-20 h-8 text-xs"})]}),o.jsx(Bp,{value:[l.value],onValueChange:d=>s(c,"value",d[0]),min:.01,max:1,step:.01,className:"w-full"}),o.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[o.jsx("span",{children:"0.01 (极少发言)"}),o.jsx("span",{children:"0.5"}),o.jsx("span",{children:"1.0 (正常)"})]})]})]})]},c))}):o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:o.jsx("p",{className:"text-sm",children:'暂无规则,点击"添加规则"按钮创建'})}),o.jsxs("div",{className:"mt-4 p-4 bg-blue-50 dark:bg-blue-950/20 border border-blue-200 dark:border-blue-800 rounded-lg",children:[o.jsx("h5",{className:"text-sm font-semibold text-blue-900 dark:text-blue-100 mb-2",children:"📝 规则说明"}),o.jsxs("ul",{className:"text-xs text-blue-800 dark:text-blue-200 space-y-1",children:[o.jsxs("li",{children:["• ",o.jsx("strong",{children:"Target 为空"}),":全局规则,对所有聊天生效"]}),o.jsxs("li",{children:["• ",o.jsx("strong",{children:"Target 指定"}),":仅对特定聊天流生效(格式:platform:id:type)"]}),o.jsxs("li",{children:["• ",o.jsx("strong",{children:"优先级"}),":先匹配具体聊天流规则,再匹配全局规则"]}),o.jsxs("li",{children:["• ",o.jsx("strong",{children:"时间支持跨夜"}),":例如 23:00-02:00 表示晚上11点到次日凌晨2点"]}),o.jsxs("li",{children:["• ",o.jsx("strong",{children:"数值范围"}),":建议 0-1,0 表示完全沉默,1 表示正常发言"]})]})]})]})]})}function z0e({member:t,groupIndex:e,memberIndex:n,availableChatIds:r,onUpdate:s,onRemove:i}){const a=r.includes(t)||t==="*",[l,c]=b.useState(!a);return o.jsxs("div",{className:"flex gap-2",children:[o.jsx("div",{className:"flex-1 flex gap-2",children:l?o.jsxs(o.Fragment,{children:[o.jsx(ze,{value:t,onChange:d=>s(e,n,d.target.value),placeholder:'输入 "*" 或 "qq:123456:group"',className:"flex-1"}),r.length>0&&o.jsx(de,{size:"sm",variant:"outline",onClick:()=>c(!1),title:"切换到下拉选择",children:"下拉"})]}):o.jsxs(o.Fragment,{children:[o.jsxs(Vt,{value:t,onValueChange:d=>s(e,n,d),children:[o.jsx($t,{className:"flex-1",children:o.jsx(Ut,{placeholder:"选择聊天流"})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"*",children:"* (全局共享)"}),r.map((d,h)=>o.jsx(De,{value:d,children:d},h))]})]}),o.jsx(de,{size:"sm",variant:"outline",onClick:()=>c(!0),title:"切换到手动输入",children:"输入"})]})}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(de,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除组成员 "',t||"(空)",'" 吗?此操作无法撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>i(e,n),children:"删除"})]})]})]})]})}function I0e({config:t,onChange:e}){const n=()=>{e({...t,learning_list:[...t.learning_list,["","enable","enable","1.0"]]})},r=m=>{e({...t,learning_list:t.learning_list.filter((g,x)=>x!==m)})},s=(m,g,x)=>{const y=[...t.learning_list];y[m][g]=x,e({...t,learning_list:y})},i=({rule:m})=>{const g=`["${m[0]}", "${m[1]}", "${m[2]}", "${m[3]}"]`;return o.jsxs(zo,{children:[o.jsx(Io,{asChild:!0,children:o.jsxs(de,{variant:"outline",size:"sm",children:[o.jsx(Ea,{className:"h-4 w-4 mr-1"}),"预览"]})}),o.jsx(Xa,{className:"w-96",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),o.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:g}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},a=()=>{e({...t,expression_groups:[...t.expression_groups,[]]})},l=m=>{e({...t,expression_groups:t.expression_groups.filter((g,x)=>x!==m)})},c=m=>{const g=[...t.expression_groups];g[m]=[...g[m],""],e({...t,expression_groups:g})},d=(m,g)=>{const x=[...t.expression_groups];x[m]=x[m].filter((y,w)=>w!==g),e({...t,expression_groups:x})},h=(m,g,x)=>{const y=[...t.expression_groups];y[m][g]=x,e({...t,expression_groups:y})};return o.jsxs("div",{className:"space-y-6",children:[o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center justify-between mb-4",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold",children:"表达学习配置"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置麦麦如何学习和使用表达方式"})]}),o.jsxs(de,{onClick:n,size:"sm",variant:"outline",children:[o.jsx(Ls,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),o.jsxs("div",{className:"space-y-4",children:[t.learning_list.map((m,g)=>{const x=t.learning_list.some((N,T)=>T!==g&&N[0]===""),y=m[0]==="",w=m[0].split(":"),S=w[0]||"qq",k=w[1]||"",j=w[2]||"group";return o.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium",children:["规则 ",g+1," ",y&&"(全局配置)"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(i,{rule:m}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(de,{size:"sm",variant:"ghost",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除学习规则 ",g+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>r(g),children:"删除"})]})]})]})]})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"配置类型"}),o.jsxs(Vt,{value:y?"global":"specific",onValueChange:N=>{N==="global"?s(g,0,""):s(g,0,"qq::group")},disabled:x&&!y,children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"global",children:"全局配置"}),o.jsx(De,{value:"specific",disabled:x&&!y,children:"详细配置"})]})]}),x&&!y&&o.jsx("p",{className:"text-xs text-amber-600",children:"已存在全局配置,无法创建新的全局配置"})]}),!y&&o.jsxs("div",{className:"grid gap-4 p-4 rounded-lg bg-muted/50",children:[o.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"平台"}),o.jsxs(Vt,{value:S,onValueChange:N=>{s(g,0,`${N}:${k}:${j}`)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"qq",children:"QQ"}),o.jsx(De,{value:"wx",children:"微信"})]})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"群 ID"}),o.jsx(ze,{value:k,onChange:N=>{s(g,0,`${S}:${N.target.value}:${j}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"类型"}),o.jsxs(Vt,{value:j,onValueChange:N=>{s(g,0,`${S}:${k}:${N}`)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"group",children:"群组(group)"}),o.jsx(De,{value:"private",children:"私聊(private)"})]})]})]})]}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",m[0]||"(未设置)"]})]}),o.jsx("div",{className:"grid gap-2",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-xs font-medium",children:"使用学到的表达"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦使用从聊天中学到的表达方式"})]}),o.jsx(Bt,{checked:m[1]==="enable",onCheckedChange:N=>s(g,1,N?"enable":"disable")})]})}),o.jsx("div",{className:"grid gap-2",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-xs font-medium",children:"学习表达"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦从聊天中学习新的表达方式"})]}),o.jsx(Bt,{checked:m[2]==="enable",onCheckedChange:N=>s(g,2,N?"enable":"disable")})]})}),o.jsxs("div",{className:"grid gap-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{className:"text-xs font-medium",children:"学习强度"}),o.jsx(ze,{type:"number",step:"0.1",min:"0",max:"5",value:m[3],onChange:N=>{const T=parseFloat(N.target.value);isNaN(T)||s(g,3,Math.max(0,Math.min(5,T)).toFixed(1))},className:"w-20 h-8 text-xs"})]}),o.jsx(Bp,{value:[parseFloat(m[3])||1],onValueChange:N=>s(g,3,N[0].toFixed(1)),min:0,max:5,step:.1,className:"w-full"}),o.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[o.jsx("span",{children:"0 (不学习)"}),o.jsx("span",{children:"2.5"}),o.jsx("span",{children:"5.0 (快速学习)"})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"影响学习频率,最短学习间隔 = 300/学习强度(秒)"})]})]})]},g)}),t.learning_list.length===0&&o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无学习规则,点击"添加规则"开始配置'})]})]})}),o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center justify-between mb-4",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold",children:"表达共享组配置"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置不同聊天流之间如何共享学到的表达方式"})]}),o.jsxs(de,{onClick:a,size:"sm",variant:"outline",children:[o.jsx(Ls,{className:"h-4 w-4 mr-1"}),"添加共享组"]})]}),o.jsxs("div",{className:"space-y-4",children:[t.expression_groups.map((m,g)=>{const x=t.learning_list.map(y=>y[0]).filter(y=>y!=="");return o.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium",children:["共享组 ",g+1,m.length===1&&m[0]==="*"&&"(全局共享)"]}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx(de,{onClick:()=>c(g),size:"sm",variant:"outline",children:o.jsx(Ls,{className:"h-4 w-4"})}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(de,{size:"sm",variant:"ghost",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除共享组 ",g+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>l(g),children:"删除"})]})]})]})]})]}),o.jsx("div",{className:"space-y-2",children:m.map((y,w)=>o.jsx(z0e,{member:y,groupIndex:g,memberIndex:w,availableChatIds:x,onUpdate:h,onRemove:d},`${g}-${w}`))}),o.jsx("p",{className:"text-xs text-muted-foreground",children:'提示:可以从下拉框选择已配置的聊天流,或手动输入。输入 "*" 启用全局共享'})]},g)}),t.expression_groups.length===0&&o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无共享组,点击"添加共享组"开始配置'})]})]})})]})}function L0e({emojiConfig:t,memoryConfig:e,toolConfig:n,onEmojiChange:r,onMemoryChange:s,onToolChange:i}){return o.jsxs("div",{className:"space-y-6",children:[o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"工具设置"}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"enable_tool",checked:n.enable_tool,onCheckedChange:a=>i({...n,enable_tool:a})}),o.jsx(he,{htmlFor:"enable_tool",className:"cursor-pointer",children:"启用工具系统"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"允许麦麦使用各种工具来增强功能"})]})}),o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"记忆设置"}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"max_agent_iterations",children:"记忆思考深度"}),o.jsx(ze,{id:"max_agent_iterations",type:"number",min:"1",value:e.max_agent_iterations,onChange:a=>s({...e,max_agent_iterations:parseInt(a.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"最低为 1(不深入思考)"})]})]})}),o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"表情包设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"emoji_chance",children:"表情包激活概率"}),o.jsx(ze,{id:"emoji_chance",type:"number",step:"0.1",min:"0",max:"1",value:t.emoji_chance,onChange:a=>r({...t,emoji_chance:parseFloat(a.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"范围 0-1,越大越容易发送表情包"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"max_reg_num",children:"最大注册数量"}),o.jsx(ze,{id:"max_reg_num",type:"number",min:"1",value:t.max_reg_num,onChange:a=>r({...t,max_reg_num:parseInt(a.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦最多可以注册的表情包数量"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),o.jsx(ze,{id:"check_interval",type:"number",min:"1",value:t.check_interval,onChange:a=>r({...t,check_interval:parseInt(a.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包(注册、破损、删除)的时间间隔"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"do_replace",checked:t.do_replace,onCheckedChange:a=>r({...t,do_replace:a})}),o.jsx(he,{htmlFor:"do_replace",className:"cursor-pointer",children:"达到最大数量时替换表情包"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"steal_emoji",checked:t.steal_emoji,onCheckedChange:a=>r({...t,steal_emoji:a})}),o.jsx(he,{htmlFor:"steal_emoji",className:"cursor-pointer",children:"偷取表情包"})]}),o.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"允许麦麦将看到的表情包据为己有"}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"content_filtration",checked:t.content_filtration,onCheckedChange:a=>r({...t,content_filtration:a})}),o.jsx(he,{htmlFor:"content_filtration",className:"cursor-pointer",children:"启用表情包过滤"})]}),t.content_filtration&&o.jsxs("div",{className:"grid gap-2 pl-6 border-l-2 border-primary/20",children:[o.jsx(he,{htmlFor:"filtration_prompt",children:"过滤要求"}),o.jsx(ze,{id:"filtration_prompt",value:t.filtration_prompt,onChange:a=>r({...t,filtration_prompt:a.target.value}),placeholder:"符合公序良俗"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"只有符合此要求的表情包才会被保存"})]})]})]})})]})}function B0e({keywordReactionConfig:t,responsePostProcessConfig:e,chineseTypoConfig:n,responseSplitterConfig:r,onKeywordReactionChange:s,onResponsePostProcessChange:i,onChineseTypoChange:a,onResponseSplitterChange:l}){const c=()=>{s({...t,regex_rules:[...t.regex_rules,{regex:[""],reaction:""}]})},d=T=>{s({...t,regex_rules:t.regex_rules.filter((E,_)=>_!==T)})},h=(T,E,_)=>{const A=[...t.regex_rules];E==="regex"&&typeof _=="string"?A[T]={...A[T],regex:[_]}:E==="reaction"&&typeof _=="string"&&(A[T]={...A[T],reaction:_}),s({...t,regex_rules:A})},m=({regex:T,reaction:E,onRegexChange:_,onReactionChange:A})=>{const[L,P]=b.useState(!1),[B,$]=b.useState(""),[U,te]=b.useState(null),[z,Q]=b.useState(""),[F,Y]=b.useState({}),[J,X]=b.useState(""),R=b.useRef(null),[ie,G]=b.useState("build"),I=W=>W.replace(/\(\?P<([^>]+)>/g,"(?<$1>"),V=(W,se=0)=>{const re=R.current;if(!re)return;const oe=re.selectionStart||0,Te=re.selectionEnd||0,We=T.substring(0,oe)+W+T.substring(Te);_(We),setTimeout(()=>{const Ye=oe+W.length+se;re.setSelectionRange(Ye,Ye),re.focus()},0)};b.useEffect(()=>{if(!T||!B){te(null),Y({}),X(E),Q("");return}try{const W=I(T),se=new RegExp(W,"g"),re=B.match(se);te(re),Q("");const Te=new RegExp(W).exec(B);if(Te&&Te.groups){Y(Te.groups);let We=E;Object.entries(Te.groups).forEach(([Ye,Je])=>{We=We.replace(new RegExp(`\\[${Ye}\\]`,"g"),Je||"")}),X(We)}else Y({}),X(E)}catch(W){Q(W.message),te(null),Y({}),X(E)}},[T,B,E]);const ee=()=>{if(!B||!U||U.length===0)return o.jsx("span",{className:"text-muted-foreground",children:B||"请输入测试文本"});try{const W=I(T),se=new RegExp(W,"g");let re=0;const oe=[];let Te;for(;(Te=se.exec(B))!==null;)Te.index>re&&oe.push(o.jsx("span",{children:B.substring(re,Te.index)},`text-${re}`)),oe.push(o.jsx("span",{className:"bg-yellow-200 dark:bg-yellow-900 font-semibold",children:Te[0]},`match-${Te.index}`)),re=Te.index+Te[0].length;return re)",desc:"Python风格命名捕获组",moveCursor:-1},{label:"非捕获组",pattern:"(?:)",desc:"分组但不保存匹配结果",moveCursor:-1}]},{category:"字符类",items:[{label:"字符集",pattern:"[]",desc:"匹配括号内的任意字符",moveCursor:-1},{label:"排除字符",pattern:"[^]",desc:"匹配不在括号内的字符",moveCursor:-1},{label:"范围",pattern:"[a-z]",desc:"匹配a到z的字符"},{label:"中文字符",pattern:"[\\u4e00-\\u9fa5]",desc:"匹配中文汉字"}]},{category:"常用模板",items:[{label:"捕获词语",pattern:"(?P\\S+)",desc:"捕获一个词语"},{label:"捕获句子",pattern:"(?P.+)",desc:"捕获整个句子"},{label:"捕获数字",pattern:"(?P\\d+)",desc:"捕获一个或多个数字"},{label:"可选词语",pattern:"(?:词语1|词语2)",desc:"匹配多个可选项之一"}]}];return o.jsxs(Dr,{open:L,onOpenChange:P,children:[o.jsx(Of,{asChild:!0,children:o.jsxs(de,{variant:"outline",size:"sm",children:[o.jsx(Pv,{className:"h-4 w-4 mr-1"}),"正则编辑器"]})}),o.jsxs(Sr,{className:"max-w-[95vw] sm:max-w-[900px] max-h-[90vh]",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"正则表达式编辑器"}),o.jsx(ss,{className:"text-sm",children:"使用可视化工具构建正则表达式,并实时测试效果"})]}),o.jsx(gn,{className:"max-h-[calc(90vh-120px)]",children:o.jsxs(ja,{value:ie,onValueChange:W=>G(W),className:"w-full",children:[o.jsxs(Wi,{className:"grid w-full grid-cols-2",children:[o.jsx(Lt,{value:"build",children:"🔧 构建器"}),o.jsx(Lt,{value:"test",children:"🧪 测试器"})]}),o.jsxs(un,{value:"build",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{className:"text-sm font-medium",children:"正则表达式"}),o.jsx(ze,{ref:R,value:T,onChange:W=>_(W.target.value),className:"font-mono text-sm",placeholder:"点击下方按钮构建正则表达式..."})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{className:"text-sm font-medium",children:"Reaction 内容"}),o.jsx(Mr,{value:E,onChange:W=>A(W.target.value),placeholder:"使用 [捕获组名] 引用捕获的内容...",rows:3,className:"text-sm"})]}),o.jsxs("div",{className:"space-y-4 border-t pt-4",children:[ne.map(W=>o.jsxs("div",{className:"space-y-2",children:[o.jsx("h5",{className:"text-xs font-semibold text-primary",children:W.category}),o.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:W.items.map(se=>o.jsx(de,{variant:"outline",size:"sm",className:"justify-start h-auto py-2 px-3",onClick:()=>V(se.pattern,se.moveCursor||0),children:o.jsxs("div",{className:"flex flex-col items-start w-full",children:[o.jsxs("div",{className:"flex items-center gap-2 w-full",children:[o.jsx("span",{className:"text-xs font-medium",children:se.label}),o.jsx("code",{className:"ml-auto text-xs bg-muted px-1.5 py-0.5 rounded font-mono",children:se.pattern})]}),o.jsx("span",{className:"text-xs text-muted-foreground mt-0.5",children:se.desc})]})},se.label))})]},W.category)),o.jsxs("div",{className:"space-y-2 border-t pt-4",children:[o.jsx("h5",{className:"text-xs font-semibold text-primary",children:"完整示例模板"}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(de,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>_("^(?P\\S{1,20})是这样的$"),children:o.jsxs("div",{className:"flex flex-col items-start w-full",children:[o.jsxs("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:["^(?P\\S","{1,20}",")是这样的$"]}),o.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「某事物是这样的」并捕获事物名称"})]})}),o.jsx(de,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>_("(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"),children:o.jsxs("div",{className:"flex flex-col items-start w-full",children:[o.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"}),o.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「我没要求你做某事」并捕获具体行为"})]})}),o.jsx(de,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>_("(?P.+?)(?:是|为什么|怎么)"),children:o.jsxs("div",{className:"flex flex-col items-start w-full",children:[o.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?P.+?)(?:是|为什么|怎么)"}),o.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"捕获问题主题词"})]})})]})]})]}),o.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[o.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 使用提示"}),o.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[o.jsx("li",{children:"点击输入框设置光标位置,然后点击按钮插入模式"}),o.jsxs("li",{children:["命名捕获组格式:",o.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"(?P<名称>模式)"})]}),o.jsxs("li",{children:["在 reaction 中使用 ",o.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"[名称]"})," 引用捕获的内容"]}),o.jsx("li",{children:"切换到测试器标签页验证正则表达式效果"})]})]})]}),o.jsxs(un,{value:"test",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{className:"text-sm font-medium",children:"当前正则表达式"}),o.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:T||"(未设置)"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"test-text",className:"text-sm font-medium",children:"测试文本"}),o.jsx(Mr,{id:"test-text",value:B,onChange:W=>$(W.target.value),placeholder:`在此输入要测试的文本... -例如:打游戏是这样的`,className:"min-h-[100px] text-sm"})]}),z&&o.jsxs("div",{className:"rounded-md bg-destructive/10 border border-destructive/20 p-3",children:[o.jsx("p",{className:"text-sm text-destructive font-medium",children:"正则表达式错误"}),o.jsx("p",{className:"text-xs text-destructive/80 mt-1",children:z})]}),!z&&B&&o.jsxs("div",{className:"space-y-3",children:[o.jsx("div",{className:"flex items-center gap-2",children:U&&U.length>0?o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-green-500"}),o.jsxs("span",{className:"text-sm font-medium text-green-600 dark:text-green-400",children:["匹配成功 (",U.length," 处)"]})]}):o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-gray-400"}),o.jsx("span",{className:"text-sm font-medium text-muted-foreground",children:"无匹配"})]})}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{className:"text-sm font-medium",children:"匹配高亮"}),o.jsx(gn,{className:"h-40 rounded-md bg-muted p-3",children:o.jsx("div",{className:"text-sm break-words",children:ee()})})]}),Object.keys(F).length>0&&o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{className:"text-sm font-medium",children:"命名捕获组"}),o.jsx(gn,{className:"h-32 rounded-md border p-3",children:o.jsx("div",{className:"space-y-2",children:Object.entries(F).map(([W,se])=>o.jsxs("div",{className:"flex items-start gap-2 text-sm",children:[o.jsxs("span",{className:"font-mono font-semibold text-primary min-w-[80px]",children:["[",W,"]"]}),o.jsx("span",{className:"text-muted-foreground",children:"="}),o.jsx("span",{className:"font-mono bg-muted px-2 py-0.5 rounded",children:se})]},W))})})]}),Object.keys(F).length>0&&E&&o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{className:"text-sm font-medium",children:"Reaction 替换预览"}),o.jsx(gn,{className:"h-48 rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3",children:o.jsx("div",{className:"text-sm break-words",children:J})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"reaction 中的 [name] 已被替换为对应的捕获组值"})]})]}),o.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[o.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 测试说明"}),o.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[o.jsx("li",{children:"匹配的文本会以黄色背景高亮显示"}),o.jsx("li",{children:"命名捕获组的值会显示在下方列表中"}),o.jsx("li",{children:"Reaction 替换预览显示最终生成的反应内容"}),o.jsx("li",{children:"如需修改正则,切换回构建器标签页"})]})]})]})]})})]})]})},g=()=>{s({...t,keyword_rules:[...t.keyword_rules,{keywords:[],reaction:""}]})},x=T=>{s({...t,keyword_rules:t.keyword_rules.filter((E,_)=>_!==T)})},y=(T,E,_)=>{const A=[...t.keyword_rules];typeof _=="string"&&(A[T]={...A[T],reaction:_}),s({...t,keyword_rules:A})},w=T=>{const E=[...t.keyword_rules];E[T]={...E[T],keywords:[...E[T].keywords||[],""]},s({...t,keyword_rules:E})},S=(T,E)=>{const _=[...t.keyword_rules];_[T]={..._[T],keywords:(_[T].keywords||[]).filter((A,L)=>L!==E)},s({...t,keyword_rules:_})},k=(T,E,_)=>{const A=[...t.keyword_rules],L=[...A[T].keywords||[]];L[E]=_,A[T]={...A[T],keywords:L},s({...t,keyword_rules:A})},j=({rule:T})=>{const E=`{ regex = [${(T.regex||[]).map(_=>`"${_}"`).join(", ")}], reaction = "${T.reaction}" }`;return o.jsxs(zo,{children:[o.jsx(Io,{asChild:!0,children:o.jsxs(de,{variant:"outline",size:"sm",children:[o.jsx(Ea,{className:"h-4 w-4 mr-1"}),"预览"]})}),o.jsx(Xa,{className:"w-[95vw] sm:w-[500px]",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),o.jsx(gn,{className:"h-60 rounded-md bg-muted p-3",children:o.jsx("pre",{className:"font-mono text-xs break-all",children:E})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},N=({rule:T})=>{const E=`[[keyword_reaction.keyword_rules]] +`,{label:"if",detail:"block",type:"keyword"}),wl("if ${}:\n ${}\nelse:\n ${}",{label:"if",detail:"/ else block",type:"keyword"}),wl("class ${name}:\n def __init__(self, ${params}):\n ${}",{label:"class",detail:"definition",type:"keyword"}),wl("import ${module}",{label:"import",detail:"statement",type:"keyword"}),wl("from ${module} import ${names}",{label:"from",detail:"import",type:"keyword"})],j0e=Che(TH,nH(k0e.concat(O0e)));function pS(t){let{node:e,pos:n}=t,r=t.lineIndent(n,-1),s=null;for(;;){let i=e.childBefore(n);if(i)if(i.name=="Comment")n=i.from;else if(i.name=="Body"||i.name=="MatchBody")t.baseIndentFor(i)+t.unit<=r&&(s=i),e=i;else if(i.name=="MatchClause")e=i;else if(i.type.is("Statement"))e=i;else break;else break}return s}function gS(t,e){let n=t.baseIndentFor(e),r=t.lineAt(t.pos,-1),s=r.from+r.text.length;return/^\s*($|#)/.test(r.text)&&t.node.ton?null:n+t.unit}const xS=J0.define({name:"python",parser:b0e.configure({props:[vb.add({Body:t=>{var e;let n=/^\s*(#|$)/.test(t.textAfter)&&pS(t)||t.node;return(e=gS(t,n))!==null&&e!==void 0?e:t.continue()},MatchBody:t=>{var e;let n=pS(t);return(e=gS(t,n||t.node))!==null&&e!==void 0?e:t.continue()},IfStatement:t=>/^\s*(else:|elif )/.test(t.textAfter)?t.baseIndent:t.continue(),"ForStatement WhileStatement":t=>/^\s*else:/.test(t.textAfter)?t.baseIndent:t.continue(),TryStatement:t=>/^\s*(except[ :]|finally:|else:)/.test(t.textAfter)?t.baseIndent:t.continue(),MatchStatement:t=>/^\s*case /.test(t.textAfter)?t.baseIndent+t.unit:t.continue(),"TupleExpression ComprehensionExpression ParamList ArgList ParenthesizedExpression":J4({closing:")"}),"DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression":J4({closing:"}"}),"ArrayExpression ArrayComprehensionExpression":J4({closing:"]"}),MemberExpression:t=>t.baseIndent+t.unit,"String FormatString":()=>null,Script:t=>{var e;let n=pS(t);return(e=n&&gS(t,n))!==null&&e!==void 0?e:t.continue()}}),N6.add({"ArrayExpression DictionaryExpression SetExpression TupleExpression":Gq,Body:(t,e)=>({from:t.from+1,to:t.to-(t.to==e.doc.length?0:1)}),"String FormatString":(t,e)=>({from:e.doc.lineAt(t.from).to,to:t.to})})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"'''",'"""'],stringPrefixes:["f","fr","rf","r","u","b","br","rb","F","FR","RF","R","U","B","BR","RB"]},commentTokens:{line:"#"},indentOnInput:/^\s*([\}\]\)]|else:|elif |except |finally:|case\s+[^:]*:?)$/}});function N0e(){return new Vq(xS,[xS.data.of({autocomplete:S0e}),xS.data.of({autocomplete:j0e})])}const C0e=k6({String:ye.string,Number:ye.number,"True False":ye.bool,PropertyName:ye.propertyName,Null:ye.null,", :":ye.separator,"[ ]":ye.squareBracket,"{ }":ye.brace}),T0e=lp.deserialize({version:14,states:"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l",stateData:"#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O",goto:"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R",nodeNames:"⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array",maxTerm:25,nodeProps:[["isolate",-2,6,11,""],["openedBy",7,"{",14,"["],["closedBy",8,"}",15,"]"]],propSources:[C0e],skippedNodes:[0],repeatNodeCount:2,tokenData:"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~",tokenizers:[0],topRules:{JsonText:[0,1]},tokenPrec:0}),E0e=()=>t=>{try{JSON.parse(t.state.doc.toString())}catch(e){if(!(e instanceof SyntaxError))throw e;const n=_0e(e,t.state.doc);return[{from:n,message:e.message,severity:"error",to:n}]}return[]};function _0e(t,e){let n;return(n=t.message.match(/at position (\d+)/))?Math.min(+n[1],e.length):(n=t.message.match(/at line (\d+) column (\d+)/))?Math.min(e.line(+n[1]).from+ +n[2]-1,e.length):0}const A0e=J0.define({name:"json",parser:T0e.configure({props:[vb.add({Object:k_({except:/^\s*\}/}),Array:k_({except:/^\s*\]/})}),N6.add({"Object Array":Gq})]}),languageData:{closeBrackets:{brackets:["[","{",'"']},indentOnInput:/^\s*[\}\]]$/}});function M0e(){return new Vq(A0e)}const R0e={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(t,e){let n;if(!e.inString&&(n=t.match(/^('''|"""|'|")/))&&(e.stringType=n[0],e.inString=!0),t.sol()&&!e.inString&&e.inArray===0&&(e.lhs=!0),e.inString){for(;e.inString;)if(t.match(e.stringType))e.inString=!1;else if(t.peek()==="\\")t.next(),t.next();else{if(t.eol())break;t.match(/^.[^\\\"\']*/)}return e.lhs?"property":"string"}else{if(e.inArray&&t.peek()==="]")return t.next(),e.inArray--,"bracket";if(e.lhs&&t.peek()==="["&&t.skipTo("]"))return t.next(),t.peek()==="]"&&t.next(),"atom";if(t.peek()==="#")return t.skipToEnd(),"comment";if(t.eatSpace())return null;if(e.lhs&&t.eatWhile(function(r){return r!="="&&r!=" "}))return"property";if(e.lhs&&t.peek()==="=")return t.next(),e.lhs=!1,null;if(!e.lhs&&t.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!e.lhs&&(t.match("true")||t.match("false")))return"atom";if(!e.lhs&&t.peek()==="[")return e.inArray++,t.next(),"bracket";if(!e.lhs&&t.match(/^\-?\d+(?:\.\d+)?/))return"number";t.eatSpace()||t.next()}return null},languageData:{commentTokens:{line:"#"}}},D0e={python:[N0e()],json:[M0e(),E0e()],toml:[C6.define(R0e)],text:[]};function P0e({value:t,onChange:e,language:n="text",readOnly:r=!1,height:s="400px",minHeight:i,maxHeight:a,placeholder:l,theme:c="dark",className:d=""}){const[h,m]=b.useState(!1);if(b.useEffect(()=>{m(!0)},[]),!h)return o.jsx("div",{className:`rounded-md border bg-muted animate-pulse ${d}`,style:{height:s,minHeight:i,maxHeight:a}});const g=[...D0e[n]||[],Ze.lineWrapping];return r&&g.push(Ze.editable.of(!1)),o.jsx("div",{className:`rounded-md overflow-hidden border ${d}`,children:o.jsx(vH,{value:t,height:s,minHeight:i,maxHeight:a,theme:c==="dark"?xH:void 0,extensions:g,onChange:e,placeholder:l,basicSetup:{lineNumbers:!0,highlightActiveLineGutter:!0,highlightSpecialChars:!0,history:!0,foldGutter:!0,drawSelection:!0,dropCursor:!0,allowMultipleSelections:!0,indentOnInput:!0,syntaxHighlighting:!0,bracketMatching:!0,closeBrackets:!0,autocompletion:!0,rectangularSelection:!0,crosshairCursor:!0,highlightActiveLine:!0,highlightSelectionMatches:!0,closeBracketsKeymap:!0,defaultKeymap:!0,searchKeymap:!0,historyKeymap:!0,foldKeymap:!0,completionKeymap:!0,lintKeymap:!0}})})}function z0e(){const[t,e]=b.useState(!0),[n,r]=b.useState(!1),[s,i]=b.useState(!1),[a,l]=b.useState(!1),[c,d]=b.useState(!1),[h,m]=b.useState(!1),[g,x]=b.useState("visual"),[y,w]=b.useState(""),[S,k]=b.useState(!1),{toast:j}=Lr(),[N,T]=b.useState(null),[E,_]=b.useState(null),[A,D]=b.useState(null),[q,B]=b.useState(null),[H,W]=b.useState(null),[ee,I]=b.useState(null),[V,L]=b.useState(null),[$,K]=b.useState(null),[Y,R]=b.useState(null),[ie,X]=b.useState(null),[z,U]=b.useState(null),[te,ne]=b.useState(null),[G,se]=b.useState(null),[re,ae]=b.useState(null),[_e,Be]=b.useState(null),[Ye,Je]=b.useState(null),[Oe,Ve]=b.useState(null),[Ue,$e]=b.useState(null),jt=b.useRef(null),vt=b.useRef(!0),$n=b.useRef({}),qt=b.useCallback(async()=>{try{const We=await kae();w(We),k(!1)}catch(We){j({variant:"destructive",title:"加载失败",description:We instanceof Error?We.message:"加载源代码失败"})}},[j]),un=b.useCallback(async()=>{try{e(!0);const We=await dE();$n.current=We,T(We.bot),_(We.personality);const ot=We.chat;ot.talk_value_rules||(ot.talk_value_rules=[]),D(ot),B(We.expression),W(We.emoji),I(We.memory),L(We.tool),K(We.mood),R(We.voice),X(We.lpmm_knowledge),U(We.keyword_reaction),ne(We.response_post_process),se(We.chinese_typo),ae(We.response_splitter),Be(We.log),Je(We.debug),Ve(We.maim_message),$e(We.telemetry),l(!1),vt.current=!1,await qt()}catch(We){console.error("加载配置失败:",We),j({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}finally{e(!1)}},[j,qt]);b.useEffect(()=>{un()},[un]);const Mt=b.useCallback(async(We,ot)=>{if(!vt.current)try{i(!0),await jae(We,ot),l(!1)}catch(dn){console.error(`自动保存 ${We} 失败:`,dn),l(!0)}finally{i(!1)}},[]),ct=b.useCallback((We,ot)=>{vt.current||(l(!0),jt.current&&clearTimeout(jt.current),jt.current=setTimeout(()=>{Mt(We,ot)},2e3))},[Mt]);b.useEffect(()=>{N&&!vt.current&&ct("bot",N)},[N,ct]),b.useEffect(()=>{E&&!vt.current&&ct("personality",E)},[E,ct]),b.useEffect(()=>{A&&!vt.current&&ct("chat",A)},[A,ct]),b.useEffect(()=>{q&&!vt.current&&ct("expression",q)},[q,ct]),b.useEffect(()=>{H&&!vt.current&&ct("emoji",H)},[H,ct]),b.useEffect(()=>{ee&&!vt.current&&ct("memory",ee)},[ee,ct]),b.useEffect(()=>{V&&!vt.current&&ct("tool",V)},[V,ct]),b.useEffect(()=>{$&&!vt.current&&ct("mood",$)},[$,ct]),b.useEffect(()=>{Y&&!vt.current&&ct("voice",Y)},[Y,ct]),b.useEffect(()=>{ie&&!vt.current&&ct("lpmm_knowledge",ie)},[ie,ct]),b.useEffect(()=>{z&&!vt.current&&ct("keyword_reaction",z)},[z,ct]),b.useEffect(()=>{te&&!vt.current&&ct("response_post_process",te)},[te,ct]),b.useEffect(()=>{G&&!vt.current&&ct("chinese_typo",G)},[G,ct]),b.useEffect(()=>{re&&!vt.current&&ct("response_splitter",re)},[re,ct]),b.useEffect(()=>{_e&&!vt.current&&ct("log",_e)},[_e,ct]),b.useEffect(()=>{Ye&&!vt.current&&ct("debug",Ye)},[Ye,ct]),b.useEffect(()=>{Oe&&!vt.current&&ct("maim_message",Oe)},[Oe,ct]),b.useEffect(()=>{Ue&&!vt.current&&ct("telemetry",Ue)},[Ue,ct]);const Ne=async()=>{try{r(!0),await Oae(y),l(!1),k(!1),j({title:"保存成功",description:"配置已保存"}),await un()}catch(We){k(!0),j({variant:"destructive",title:"保存失败",description:We instanceof Error?We.message:"保存配置失败"})}finally{r(!1)}},ze=async We=>{if(a){j({variant:"destructive",title:"切换失败",description:"请先保存当前更改"});return}if(x(We),We==="source")await qt();else try{const ot=await dE();$n.current=ot,T(ot.bot),_(ot.personality);const dn=ot.chat;dn.talk_value_rules||(dn.talk_value_rules=[]),D(dn),B(ot.expression),W(ot.emoji),I(ot.memory),L(ot.tool),K(ot.mood),R(ot.voice),X(ot.lpmm_knowledge),U(ot.keyword_reaction),ne(ot.response_post_process),se(ot.chinese_typo),ae(ot.response_splitter),Be(ot.log),Je(ot.debug),Ve(ot.maim_message),$e(ot.telemetry),l(!1)}catch(ot){console.error("加载配置失败:",ot),j({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}},rt=async()=>{try{r(!0),jt.current&&clearTimeout(jt.current);const We={...$n.current,bot:N,personality:E,chat:A,expression:q,emoji:H,memory:ee,tool:V,mood:$,voice:Y,lpmm_knowledge:ie,keyword_reaction:z,response_post_process:te,chinese_typo:G,response_splitter:re,log:_e,debug:Ye,maim_message:Oe,telemetry:Ue};await hE(We),l(!1),j({title:"保存成功",description:"麦麦主程序配置已保存"})}catch(We){console.error("保存配置失败:",We),j({title:"保存失败",description:We.message,variant:"destructive"})}finally{r(!1)}},bt=async()=>{try{d(!0),cb().catch(()=>{}),m(!0)}catch(We){console.error("重启失败:",We),m(!1),j({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),d(!1)}},zt=async()=>{try{r(!0),jt.current&&clearTimeout(jt.current);const We={...$n.current,bot:N,personality:E,chat:A,expression:q,emoji:H,memory:ee,tool:V,mood:$,voice:Y,lpmm_knowledge:ie,keyword_reaction:z,response_post_process:te,chinese_typo:G,response_splitter:re,log:_e,debug:Ye,maim_message:Oe,telemetry:Ue};await hE(We),l(!1),j({title:"保存成功",description:"配置已保存,即将重启麦麦..."}),await new Promise(ot=>setTimeout(ot,500)),await bt()}catch(We){console.error("保存失败:",We),j({title:"保存失败",description:We.message,variant:"destructive"})}finally{r(!1)}},Rt=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},Hn=()=>{m(!1),d(!1),j({title:"重启失败",description:"服务器未能在预期时间内恢复,请手动检查",variant:"destructive"})};return t?o.jsx(pn,{className:"h-full",children:o.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:o.jsx("div",{className:"flex items-center justify-center h-64",children:o.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):o.jsx(pn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦主程序配置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的核心功能和行为设置"})]}),o.jsxs("div",{className:"flex gap-2 w-full sm:w-auto items-center",children:[o.jsx(Yi,{value:g,onValueChange:We=>ze(We),className:"w-auto",children:o.jsxs(ji,{className:"h-9",children:[o.jsxs(Bt,{value:"visual",className:"text-xs sm:text-sm px-2 sm:px-3",children:[o.jsx(Xee,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"可视化"]}),o.jsxs(Bt,{value:"source",className:"text-xs sm:text-sm px-2 sm:px-3",children:[o.jsx(Yee,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"源代码"]})]})}),o.jsxs(ue,{onClick:g==="visual"?rt:Ne,disabled:n||s||!a||c,size:"sm",variant:"outline",className:"flex-1 sm:flex-none",children:[o.jsx(zp,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),n?"保存中...":s?"自动保存中...":a?"保存配置":"已保存"]}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsxs(ue,{disabled:n||s||c,size:"sm",className:"flex-1 sm:flex-none",children:[o.jsx(Dp,{className:"mr-2 h-4 w-4"}),c?"重启中...":a?"保存并重启":"重启麦麦"]})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认重启麦麦?"}),o.jsx(zn,{className:"space-y-3",asChild:!0,children:o.jsxs("div",{children:[o.jsx("p",{children:a?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),o.jsxs(ba,{className:"border-yellow-500/50 bg-yellow-500/10",children:[o.jsx(Xi,{className:"h-4 w-4 text-yellow-600"}),o.jsxs(wa,{className:"text-yellow-900 dark:text-yellow-100",children:[o.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",o.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",o.jsxs(Er,{children:[o.jsx(Of,{asChild:!0,children:o.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[o.jsx(Zy,{className:"h-3 w-3"}),"如何结束程序?"]})}),o.jsxs(wr,{className:"max-w-2xl",children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"如何结束使用重启功能后的麦麦程序"}),o.jsx(Xr,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),o.jsxs(Yi,{defaultValue:"windows",className:"w-full",children:[o.jsxs(ji,{className:"grid w-full grid-cols-3",children:[o.jsx(Bt,{value:"windows",children:"Windows"}),o.jsx(Bt,{value:"macos",children:"macOS"}),o.jsx(Bt,{value:"linux",children:"Linux"})]}),o.jsxs(ln,{value:"windows",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),o.jsxs("li",{children:['在"进程"或"详细信息"标签页中找到 ',o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),o.jsx("li",{children:'右键点击并选择"结束任务"'})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),o.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),o.jsxs(ln,{value:"macos",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"}),' 打开 Spotlight,搜索"活动监视器"']}),o.jsxs("li",{children:["在进程列表中找到 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),o.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]})]}),o.jsxs(ln,{value:"linux",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),o.jsx("p",{children:'pkill -9 -f "bot.py"'}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["在终端输入 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),o.jsx(fs,{children:o.jsx(e6,{asChild:!0,children:o.jsx(ue,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:a?zt:bt,children:a?"保存并重启":"确认重启"})]})]})]})]})]}),o.jsxs(ba,{children:[o.jsx(Xi,{className:"h-4 w-4"}),o.jsxs(wa,{children:["配置更新后需要",o.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),g==="source"&&o.jsxs("div",{className:"space-y-4",children:[o.jsxs(ba,{children:[o.jsx(Xi,{className:"h-4 w-4"}),o.jsxs(wa,{children:[o.jsx("strong",{children:"源代码模式(高级功能):"}),"直接编辑 TOML 配置文件。此功能仅适用于熟悉 TOML 语法的高级用户。保存时会在后端验证格式,只有格式完全正确才能保存。",S&&o.jsx("span",{className:"text-destructive font-semibold ml-2",children:"⚠️ 上次保存失败,请检查 TOML 格式"})]})]}),o.jsx(P0e,{value:y,onChange:We=>{w(We),l(!0),S&&k(!1)},language:"toml",theme:"dark",height:"calc(100vh - 280px)",minHeight:"500px",placeholder:"TOML 配置内容"})]}),g==="visual"&&o.jsx(o.Fragment,{children:o.jsxs(Yi,{defaultValue:"bot",className:"w-full",children:[o.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:o.jsxs(ji,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5 lg:grid-cols-10",children:[o.jsx(Bt,{value:"bot",className:"flex-shrink-0",children:"基本信息"}),o.jsx(Bt,{value:"personality",className:"flex-shrink-0",children:"人格"}),o.jsx(Bt,{value:"chat",className:"flex-shrink-0",children:"聊天"}),o.jsx(Bt,{value:"expression",className:"flex-shrink-0",children:"表达"}),o.jsx(Bt,{value:"features",className:"flex-shrink-0",children:"功能"}),o.jsx(Bt,{value:"processing",className:"flex-shrink-0",children:"处理"}),o.jsx(Bt,{value:"mood",className:"flex-shrink-0",children:"情绪"}),o.jsx(Bt,{value:"voice",className:"flex-shrink-0",children:"语音"}),o.jsx(Bt,{value:"lpmm",className:"flex-shrink-0",children:"知识库"}),o.jsx(Bt,{value:"other",className:"flex-shrink-0",children:"其他"})]})}),o.jsx(ln,{value:"bot",className:"space-y-4",children:N&&o.jsx(I0e,{config:N,onChange:T})}),o.jsx(ln,{value:"personality",className:"space-y-4",children:E&&o.jsx(L0e,{config:E,onChange:_})}),o.jsx(ln,{value:"chat",className:"space-y-4",children:A&&o.jsx(B0e,{config:A,onChange:D})}),o.jsx(ln,{value:"expression",className:"space-y-4",children:q&&o.jsx(q0e,{config:q,onChange:B})}),o.jsx(ln,{value:"features",className:"space-y-4",children:H&&ee&&V&&o.jsx($0e,{emojiConfig:H,memoryConfig:ee,toolConfig:V,onEmojiChange:W,onMemoryChange:I,onToolChange:L})}),o.jsx(ln,{value:"processing",className:"space-y-4",children:z&&te&&G&&re&&o.jsx(H0e,{keywordReactionConfig:z,responsePostProcessConfig:te,chineseTypoConfig:G,responseSplitterConfig:re,onKeywordReactionChange:U,onResponsePostProcessChange:ne,onChineseTypoChange:se,onResponseSplitterChange:ae})}),o.jsx(ln,{value:"mood",className:"space-y-4",children:$&&o.jsx(Q0e,{config:$,onChange:K})}),o.jsx(ln,{value:"voice",className:"space-y-4",children:Y&&o.jsx(V0e,{config:Y,onChange:R})}),o.jsx(ln,{value:"lpmm",className:"space-y-4",children:ie&&o.jsx(U0e,{config:ie,onChange:X})}),o.jsxs(ln,{value:"other",className:"space-y-4",children:[_e&&o.jsx(W0e,{config:_e,onChange:Be}),Ye&&o.jsx(G0e,{config:Ye,onChange:Je}),Oe&&o.jsx(X0e,{config:Oe,onChange:Ve}),Ue&&o.jsx(Y0e,{config:Ue,onChange:$e})]})]})}),h&&o.jsx(r6,{onRestartComplete:Rt,onRestartFailed:Hn})]})})}function I0e({config:t,onChange:e}){const n=()=>{e({...t,platforms:[...t.platforms,""]})},r=c=>{e({...t,platforms:t.platforms.filter((d,h)=>h!==c)})},s=(c,d)=>{const h=[...t.platforms];h[c]=d,e({...t,platforms:h})},i=()=>{e({...t,alias_names:[...t.alias_names,""]})},a=c=>{e({...t,alias_names:t.alias_names.filter((d,h)=>h!==c)})},l=(c,d)=>{const h=[...t.alias_names];h[c]=d,e({...t,alias_names:h})};return o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"基本信息"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"platform",children:"平台"}),o.jsx(Pe,{id:"platform",value:t.platform,onChange:c=>e({...t,platform:c.target.value}),placeholder:"qq"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"qq_account",children:"QQ账号"}),o.jsx(Pe,{id:"qq_account",value:t.qq_account,onChange:c=>e({...t,qq_account:c.target.value}),placeholder:"123456789"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"nickname",children:"昵称"}),o.jsx(Pe,{id:"nickname",value:t.nickname,onChange:c=>e({...t,nickname:c.target.value}),placeholder:"麦麦"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{children:"其他平台账号"}),o.jsxs(ue,{onClick:n,size:"sm",variant:"outline",children:[o.jsx(Is,{className:"h-4 w-4 mr-1"}),"添加"]})]}),o.jsxs("div",{className:"space-y-2",children:[t.platforms.map((c,d)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Pe,{value:c,onChange:h=>s(d,h.target.value),placeholder:"wx:114514"}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsx(ue,{size:"icon",variant:"outline",children:o.jsx(Cn,{className:"h-4 w-4"})})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:['确定要删除平台账号 "',c||"(空)",'" 吗?此操作无法撤销。']})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>r(d),children:"删除"})]})]})]})]},d)),t.platforms.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无其他平台账号"})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{children:"别名"}),o.jsxs(ue,{onClick:i,size:"sm",variant:"outline",children:[o.jsx(Is,{className:"h-4 w-4 mr-1"}),"添加"]})]}),o.jsxs("div",{className:"space-y-2",children:[t.alias_names.map((c,d)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Pe,{value:c,onChange:h=>l(d,h.target.value),placeholder:"小麦"}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsx(ue,{size:"icon",variant:"outline",children:o.jsx(Cn,{className:"h-4 w-4"})})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:['确定要删除别名 "',c||"(空)",'" 吗?此操作无法撤销。']})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>a(d),children:"删除"})]})]})]})]},d)),t.alias_names.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无别名"})]})]})]})]})})}function L0e({config:t,onChange:e}){const n=()=>{e({...t,states:[...t.states,""]})},r=i=>{e({...t,states:t.states.filter((a,l)=>l!==i)})},s=(i,a)=>{const l=[...t.states];l[i]=a,e({...t,states:l})};return o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"人格设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"personality",children:"人格特质"}),o.jsx(Nr,{id:"personality",value:t.personality,onChange:i=>e({...t,personality:i.target.value}),placeholder:"描述人格特质和身份特征(建议120字以内)",rows:3}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"建议120字以内,描述人格特质和身份特征"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"reply_style",children:"表达风格"}),o.jsx(Nr,{id:"reply_style",value:t.reply_style,onChange:i=>e({...t,reply_style:i.target.value}),placeholder:"描述说话的表达风格和习惯",rows:3})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"interest",children:"兴趣"}),o.jsx(Nr,{id:"interest",value:t.interest,onChange:i=>e({...t,interest:i.target.value}),placeholder:"会影响麦麦对什么话题进行回复",rows:2})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"plan_style",children:"说话规则与行为风格"}),o.jsx(Nr,{id:"plan_style",value:t.plan_style,onChange:i=>e({...t,plan_style:i.target.value}),placeholder:"麦麦的说话规则和行为风格",rows:5})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"visual_style",children:"识图规则"}),o.jsx(Nr,{id:"visual_style",value:t.visual_style,onChange:i=>e({...t,visual_style:i.target.value}),placeholder:"识图时的处理规则",rows:3})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"private_plan_style",children:"私聊规则"}),o.jsx(Nr,{id:"private_plan_style",value:t.private_plan_style,onChange:i=>e({...t,private_plan_style:i.target.value}),placeholder:"私聊的说话规则和行为风格",rows:4})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{children:"状态列表(人格多样性)"}),o.jsxs(ue,{onClick:n,size:"sm",variant:"outline",children:[o.jsx(Is,{className:"h-4 w-4 mr-1"}),"添加状态"]})]}),o.jsx("div",{className:"space-y-2",children:t.states.map((i,a)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Nr,{value:i,onChange:l=>s(a,l.target.value),placeholder:"描述一个人格状态",rows:2}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsx(ue,{size:"icon",variant:"outline",children:o.jsx(Cn,{className:"h-4 w-4"})})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsx(zn,{children:"确定要删除这个人格状态吗?此操作无法撤销。"})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>r(a),children:"删除"})]})]})]})]},a))})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"state_probability",children:"状态替换概率"}),o.jsx(Pe,{id:"state_probability",type:"number",step:"0.1",min:"0",max:"1",value:t.state_probability,onChange:i=>e({...t,state_probability:parseFloat(i.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"每次构建人格时替换 personality 的概率(0.0-1.0)"})]})]})]})})}function B0e({config:t,onChange:e}){const n=()=>{e({...t,talk_value_rules:[...t.talk_value_rules,{target:"",time:"00:00-23:59",value:1}]})},r=l=>{e({...t,talk_value_rules:t.talk_value_rules.filter((c,d)=>d!==l)})},s=(l,c,d)=>{const h=[...t.talk_value_rules];h[l]={...h[l],[c]:d},e({...t,talk_value_rules:h})},i=({value:l,onChange:c})=>{const[d,h]=b.useState("00"),[m,g]=b.useState("00"),[x,y]=b.useState("23"),[w,S]=b.useState("59");b.useEffect(()=>{const j=l.split("-");if(j.length===2){const[N,T]=j,[E,_]=N.split(":"),[A,D]=T.split(":");E&&h(E.padStart(2,"0")),_&&g(_.padStart(2,"0")),A&&y(A.padStart(2,"0")),D&&S(D.padStart(2,"0"))}},[l]);const k=(j,N,T,E)=>{const _=`${j}:${N}-${T}:${E}`;c(_)};return o.jsxs(Bo,{children:[o.jsx(Fo,{asChild:!0,children:o.jsxs(ue,{variant:"outline",className:"w-full justify-start font-mono text-sm",children:[o.jsx(Mh,{className:"h-4 w-4 mr-2"}),l||"选择时间段"]})}),o.jsx(Ka,{className:"w-80",children:o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"font-medium text-sm mb-3",children:"开始时间"}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-xs",children:"小时"}),o.jsxs(Vt,{value:d,onValueChange:j=>{h(j),k(j,m,x,w)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:Array.from({length:24},(j,N)=>N).map(j=>o.jsx(De,{value:j.toString().padStart(2,"0"),children:j.toString().padStart(2,"0")},j))})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-xs",children:"分钟"}),o.jsxs(Vt,{value:m,onValueChange:j=>{g(j),k(d,j,x,w)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:Array.from({length:60},(j,N)=>N).map(j=>o.jsx(De,{value:j.toString().padStart(2,"0"),children:j.toString().padStart(2,"0")},j))})]})]})]})]}),o.jsxs("div",{children:[o.jsx("h4",{className:"font-medium text-sm mb-3",children:"结束时间"}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-xs",children:"小时"}),o.jsxs(Vt,{value:x,onValueChange:j=>{y(j),k(d,m,j,w)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:Array.from({length:24},(j,N)=>N).map(j=>o.jsx(De,{value:j.toString().padStart(2,"0"),children:j.toString().padStart(2,"0")},j))})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-xs",children:"分钟"}),o.jsxs(Vt,{value:w,onValueChange:j=>{S(j),k(d,m,x,j)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:Array.from({length:60},(j,N)=>N).map(j=>o.jsx(De,{value:j.toString().padStart(2,"0"),children:j.toString().padStart(2,"0")},j))})]})]})]})]})]})})]})},a=({rule:l})=>{const c=`{ target = "${l.target}", time = "${l.time}", value = ${l.value.toFixed(1)} }`;return o.jsxs(Bo,{children:[o.jsx(Fo,{asChild:!0,children:o.jsxs(ue,{variant:"outline",size:"sm",children:[o.jsx(Ji,{className:"h-4 w-4 mr-1"}),"预览"]})}),o.jsx(Ka,{className:"w-96",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),o.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:c}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"聊天设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"talk_value",children:"聊天频率(基础值)"}),o.jsx(Pe,{id:"talk_value",type:"number",step:"0.1",min:"0",max:"1",value:t.talk_value,onChange:l=>e({...t,talk_value:parseFloat(l.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"越小越沉默,范围 0-1"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"mentioned_bot_reply",checked:t.mentioned_bot_reply,onCheckedChange:l=>e({...t,mentioned_bot_reply:l})}),o.jsx(he,{htmlFor:"mentioned_bot_reply",className:"cursor-pointer",children:"启用提及必回复"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"max_context_size",children:"上下文长度"}),o.jsx(Pe,{id:"max_context_size",type:"number",min:"1",value:t.max_context_size,onChange:l=>e({...t,max_context_size:parseInt(l.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"planner_smooth",children:"规划器平滑"}),o.jsx(Pe,{id:"planner_smooth",type:"number",step:"1",min:"0",value:t.planner_smooth,onChange:l=>e({...t,planner_smooth:parseFloat(l.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"增大数值会减小 planner 负荷,推荐 1-5,0 为关闭"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"enable_talk_value_rules",checked:t.enable_talk_value_rules,onCheckedChange:l=>e({...t,enable_talk_value_rules:l})}),o.jsx(he,{htmlFor:"enable_talk_value_rules",className:"cursor-pointer",children:"启用动态发言频率规则"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"include_planner_reasoning",checked:t.include_planner_reasoning,onCheckedChange:l=>e({...t,include_planner_reasoning:l})}),o.jsx(he,{htmlFor:"include_planner_reasoning",className:"cursor-pointer",children:"将 planner 推理加入 replyer"})]})]})]}),t.enable_talk_value_rules&&o.jsxs("div",{className:"border-t pt-6",children:[o.jsxs("div",{className:"flex items-center justify-between mb-4",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"text-base font-semibold",children:"动态发言频率规则"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"按时段或聊天流ID调整发言频率,优先匹配具体聊天,再匹配全局规则"})]}),o.jsxs(ue,{onClick:n,size:"sm",children:[o.jsx(Is,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),t.talk_value_rules&&t.talk_value_rules.length>0?o.jsx("div",{className:"space-y-4",children:t.talk_value_rules.map((l,c)=>o.jsxs("div",{className:"rounded-lg border p-4 bg-muted/50 space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium text-muted-foreground",children:["规则 #",c+1]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(a,{rule:l}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsx(ue,{variant:"ghost",size:"sm",children:o.jsx(Cn,{className:"h-4 w-4 text-destructive"})})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:["确定要删除规则 #",c+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>r(c),children:"删除"})]})]})]})]})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"配置类型"}),o.jsxs(Vt,{value:l.target===""?"global":"specific",onValueChange:d=>{d==="global"?s(c,"target",""):s(c,"target","qq::group")},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"global",children:"全局配置"}),o.jsx(De,{value:"specific",children:"详细配置"})]})]})]}),l.target!==""&&(()=>{const d=l.target.split(":"),h=d[0]||"qq",m=d[1]||"",g=d[2]||"group";return o.jsxs("div",{className:"grid gap-4 p-4 rounded-lg bg-muted/50",children:[o.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"平台"}),o.jsxs(Vt,{value:h,onValueChange:x=>{s(c,"target",`${x}:${m}:${g}`)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"qq",children:"QQ"}),o.jsx(De,{value:"wx",children:"微信"})]})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"群 ID"}),o.jsx(Pe,{value:m,onChange:x=>{s(c,"target",`${h}:${x.target.value}:${g}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"类型"}),o.jsxs(Vt,{value:g,onValueChange:x=>{s(c,"target",`${h}:${m}:${x}`)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"group",children:"群组(group)"}),o.jsx(De,{value:"private",children:"私聊(private)"})]})]})]})]}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",l.target||"(未设置)"]})]})})(),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"时间段 (Time)"}),o.jsx(i,{value:l.time,onChange:d=>s(c,"time",d)}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"支持跨夜区间,例如 23:00-02:00"})]}),o.jsxs("div",{className:"grid gap-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{htmlFor:`rule-value-${c}`,className:"text-xs font-medium",children:"发言频率值 (Value)"}),o.jsx(Pe,{id:`rule-value-${c}`,type:"number",step:"0.01",min:"0.01",max:"1",value:l.value,onChange:d=>{const h=parseFloat(d.target.value);isNaN(h)||s(c,"value",Math.max(.01,Math.min(1,h)))},className:"w-20 h-8 text-xs"})]}),o.jsx(Nf,{value:[l.value],onValueChange:d=>s(c,"value",d[0]),min:.01,max:1,step:.01,className:"w-full"}),o.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[o.jsx("span",{children:"0.01 (极少发言)"}),o.jsx("span",{children:"0.5"}),o.jsx("span",{children:"1.0 (正常)"})]})]})]})]},c))}):o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:o.jsx("p",{className:"text-sm",children:'暂无规则,点击"添加规则"按钮创建'})}),o.jsxs("div",{className:"mt-4 p-4 bg-blue-50 dark:bg-blue-950/20 border border-blue-200 dark:border-blue-800 rounded-lg",children:[o.jsx("h5",{className:"text-sm font-semibold text-blue-900 dark:text-blue-100 mb-2",children:"📝 规则说明"}),o.jsxs("ul",{className:"text-xs text-blue-800 dark:text-blue-200 space-y-1",children:[o.jsxs("li",{children:["• ",o.jsx("strong",{children:"Target 为空"}),":全局规则,对所有聊天生效"]}),o.jsxs("li",{children:["• ",o.jsx("strong",{children:"Target 指定"}),":仅对特定聊天流生效(格式:platform:id:type)"]}),o.jsxs("li",{children:["• ",o.jsx("strong",{children:"优先级"}),":先匹配具体聊天流规则,再匹配全局规则"]}),o.jsxs("li",{children:["• ",o.jsx("strong",{children:"时间支持跨夜"}),":例如 23:00-02:00 表示晚上11点到次日凌晨2点"]}),o.jsxs("li",{children:["• ",o.jsx("strong",{children:"数值范围"}),":建议 0-1,0 表示完全沉默,1 表示正常发言"]})]})]})]})]})}function F0e({member:t,groupIndex:e,memberIndex:n,availableChatIds:r,onUpdate:s,onRemove:i}){const a=r.includes(t)||t==="*",[l,c]=b.useState(!a);return o.jsxs("div",{className:"flex gap-2",children:[o.jsx("div",{className:"flex-1 flex gap-2",children:l?o.jsxs(o.Fragment,{children:[o.jsx(Pe,{value:t,onChange:d=>s(e,n,d.target.value),placeholder:'输入 "*" 或 "qq:123456:group"',className:"flex-1"}),r.length>0&&o.jsx(ue,{size:"sm",variant:"outline",onClick:()=>c(!1),title:"切换到下拉选择",children:"下拉"})]}):o.jsxs(o.Fragment,{children:[o.jsxs(Vt,{value:t,onValueChange:d=>s(e,n,d),children:[o.jsx($t,{className:"flex-1",children:o.jsx(Ut,{placeholder:"选择聊天流"})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"*",children:"* (全局共享)"}),r.map((d,h)=>o.jsx(De,{value:d,children:d},h))]})]}),o.jsx(ue,{size:"sm",variant:"outline",onClick:()=>c(!0),title:"切换到手动输入",children:"输入"})]})}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsx(ue,{size:"icon",variant:"outline",children:o.jsx(Cn,{className:"h-4 w-4"})})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:['确定要删除组成员 "',t||"(空)",'" 吗?此操作无法撤销。']})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>i(e,n),children:"删除"})]})]})]})]})}function q0e({config:t,onChange:e}){const n=()=>{e({...t,learning_list:[...t.learning_list,["","enable","enable","1.0"]]})},r=m=>{e({...t,learning_list:t.learning_list.filter((g,x)=>x!==m)})},s=(m,g,x)=>{const y=[...t.learning_list];y[m][g]=x,e({...t,learning_list:y})},i=({rule:m})=>{const g=`["${m[0]}", "${m[1]}", "${m[2]}", "${m[3]}"]`;return o.jsxs(Bo,{children:[o.jsx(Fo,{asChild:!0,children:o.jsxs(ue,{variant:"outline",size:"sm",children:[o.jsx(Ji,{className:"h-4 w-4 mr-1"}),"预览"]})}),o.jsx(Ka,{className:"w-96",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),o.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:g}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},a=()=>{e({...t,expression_groups:[...t.expression_groups,[]]})},l=m=>{e({...t,expression_groups:t.expression_groups.filter((g,x)=>x!==m)})},c=m=>{const g=[...t.expression_groups];g[m]=[...g[m],""],e({...t,expression_groups:g})},d=(m,g)=>{const x=[...t.expression_groups];x[m]=x[m].filter((y,w)=>w!==g),e({...t,expression_groups:x})},h=(m,g,x)=>{const y=[...t.expression_groups];y[m][g]=x,e({...t,expression_groups:y})};return o.jsxs("div",{className:"space-y-6",children:[o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center justify-between mb-4",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold",children:"表达学习配置"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置麦麦如何学习和使用表达方式"})]}),o.jsxs(ue,{onClick:n,size:"sm",variant:"outline",children:[o.jsx(Is,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),o.jsxs("div",{className:"space-y-4",children:[t.learning_list.map((m,g)=>{const x=t.learning_list.some((N,T)=>T!==g&&N[0]===""),y=m[0]==="",w=m[0].split(":"),S=w[0]||"qq",k=w[1]||"",j=w[2]||"group";return o.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium",children:["规则 ",g+1," ",y&&"(全局配置)"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(i,{rule:m}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsx(ue,{size:"sm",variant:"ghost",children:o.jsx(Cn,{className:"h-4 w-4"})})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:["确定要删除学习规则 ",g+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>r(g),children:"删除"})]})]})]})]})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"配置类型"}),o.jsxs(Vt,{value:y?"global":"specific",onValueChange:N=>{N==="global"?s(g,0,""):s(g,0,"qq::group")},disabled:x&&!y,children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"global",children:"全局配置"}),o.jsx(De,{value:"specific",disabled:x&&!y,children:"详细配置"})]})]}),x&&!y&&o.jsx("p",{className:"text-xs text-amber-600",children:"已存在全局配置,无法创建新的全局配置"})]}),!y&&o.jsxs("div",{className:"grid gap-4 p-4 rounded-lg bg-muted/50",children:[o.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"平台"}),o.jsxs(Vt,{value:S,onValueChange:N=>{s(g,0,`${N}:${k}:${j}`)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"qq",children:"QQ"}),o.jsx(De,{value:"wx",children:"微信"})]})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"群 ID"}),o.jsx(Pe,{value:k,onChange:N=>{s(g,0,`${S}:${N.target.value}:${j}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"类型"}),o.jsxs(Vt,{value:j,onValueChange:N=>{s(g,0,`${S}:${k}:${N}`)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"group",children:"群组(group)"}),o.jsx(De,{value:"private",children:"私聊(private)"})]})]})]})]}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",m[0]||"(未设置)"]})]}),o.jsx("div",{className:"grid gap-2",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-xs font-medium",children:"使用学到的表达"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦使用从聊天中学到的表达方式"})]}),o.jsx(Ft,{checked:m[1]==="enable",onCheckedChange:N=>s(g,1,N?"enable":"disable")})]})}),o.jsx("div",{className:"grid gap-2",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-xs font-medium",children:"学习表达"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦从聊天中学习新的表达方式"})]}),o.jsx(Ft,{checked:m[2]==="enable",onCheckedChange:N=>s(g,2,N?"enable":"disable")})]})}),o.jsxs("div",{className:"grid gap-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{className:"text-xs font-medium",children:"学习强度"}),o.jsx(Pe,{type:"number",step:"0.1",min:"0",max:"5",value:m[3],onChange:N=>{const T=parseFloat(N.target.value);isNaN(T)||s(g,3,Math.max(0,Math.min(5,T)).toFixed(1))},className:"w-20 h-8 text-xs"})]}),o.jsx(Nf,{value:[parseFloat(m[3])||1],onValueChange:N=>s(g,3,N[0].toFixed(1)),min:0,max:5,step:.1,className:"w-full"}),o.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[o.jsx("span",{children:"0 (不学习)"}),o.jsx("span",{children:"2.5"}),o.jsx("span",{children:"5.0 (快速学习)"})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"影响学习频率,最短学习间隔 = 300/学习强度(秒)"})]})]})]},g)}),t.learning_list.length===0&&o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无学习规则,点击"添加规则"开始配置'})]})]})}),o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center justify-between mb-4",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold",children:"表达共享组配置"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置不同聊天流之间如何共享学到的表达方式"})]}),o.jsxs(ue,{onClick:a,size:"sm",variant:"outline",children:[o.jsx(Is,{className:"h-4 w-4 mr-1"}),"添加共享组"]})]}),o.jsxs("div",{className:"space-y-4",children:[t.expression_groups.map((m,g)=>{const x=t.learning_list.map(y=>y[0]).filter(y=>y!=="");return o.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium",children:["共享组 ",g+1,m.length===1&&m[0]==="*"&&"(全局共享)"]}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ue,{onClick:()=>c(g),size:"sm",variant:"outline",children:o.jsx(Is,{className:"h-4 w-4"})}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsx(ue,{size:"sm",variant:"ghost",children:o.jsx(Cn,{className:"h-4 w-4"})})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:["确定要删除共享组 ",g+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>l(g),children:"删除"})]})]})]})]})]}),o.jsx("div",{className:"space-y-2",children:m.map((y,w)=>o.jsx(F0e,{member:y,groupIndex:g,memberIndex:w,availableChatIds:x,onUpdate:h,onRemove:d},`${g}-${w}`))}),o.jsx("p",{className:"text-xs text-muted-foreground",children:'提示:可以从下拉框选择已配置的聊天流,或手动输入。输入 "*" 启用全局共享'})]},g)}),t.expression_groups.length===0&&o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无共享组,点击"添加共享组"开始配置'})]})]})})]})}function $0e({emojiConfig:t,memoryConfig:e,toolConfig:n,onEmojiChange:r,onMemoryChange:s,onToolChange:i}){return o.jsxs("div",{className:"space-y-6",children:[o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"工具设置"}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"enable_tool",checked:n.enable_tool,onCheckedChange:a=>i({...n,enable_tool:a})}),o.jsx(he,{htmlFor:"enable_tool",className:"cursor-pointer",children:"启用工具系统"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"允许麦麦使用各种工具来增强功能"})]})}),o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"记忆设置"}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"max_agent_iterations",children:"记忆思考深度"}),o.jsx(Pe,{id:"max_agent_iterations",type:"number",min:"1",value:e.max_agent_iterations,onChange:a=>s({...e,max_agent_iterations:parseInt(a.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"最低为 1(不深入思考)"})]})]})}),o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"表情包设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"emoji_chance",children:"表情包激活概率"}),o.jsx(Pe,{id:"emoji_chance",type:"number",step:"0.1",min:"0",max:"1",value:t.emoji_chance,onChange:a=>r({...t,emoji_chance:parseFloat(a.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"范围 0-1,越大越容易发送表情包"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"max_reg_num",children:"最大注册数量"}),o.jsx(Pe,{id:"max_reg_num",type:"number",min:"1",value:t.max_reg_num,onChange:a=>r({...t,max_reg_num:parseInt(a.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦最多可以注册的表情包数量"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),o.jsx(Pe,{id:"check_interval",type:"number",min:"1",value:t.check_interval,onChange:a=>r({...t,check_interval:parseInt(a.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包(注册、破损、删除)的时间间隔"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"do_replace",checked:t.do_replace,onCheckedChange:a=>r({...t,do_replace:a})}),o.jsx(he,{htmlFor:"do_replace",className:"cursor-pointer",children:"达到最大数量时替换表情包"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"steal_emoji",checked:t.steal_emoji,onCheckedChange:a=>r({...t,steal_emoji:a})}),o.jsx(he,{htmlFor:"steal_emoji",className:"cursor-pointer",children:"偷取表情包"})]}),o.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"允许麦麦将看到的表情包据为己有"}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"content_filtration",checked:t.content_filtration,onCheckedChange:a=>r({...t,content_filtration:a})}),o.jsx(he,{htmlFor:"content_filtration",className:"cursor-pointer",children:"启用表情包过滤"})]}),t.content_filtration&&o.jsxs("div",{className:"grid gap-2 pl-6 border-l-2 border-primary/20",children:[o.jsx(he,{htmlFor:"filtration_prompt",children:"过滤要求"}),o.jsx(Pe,{id:"filtration_prompt",value:t.filtration_prompt,onChange:a=>r({...t,filtration_prompt:a.target.value}),placeholder:"符合公序良俗"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"只有符合此要求的表情包才会被保存"})]})]})]})})]})}function H0e({keywordReactionConfig:t,responsePostProcessConfig:e,chineseTypoConfig:n,responseSplitterConfig:r,onKeywordReactionChange:s,onResponsePostProcessChange:i,onChineseTypoChange:a,onResponseSplitterChange:l}){const c=()=>{s({...t,regex_rules:[...t.regex_rules,{regex:[""],reaction:""}]})},d=T=>{s({...t,regex_rules:t.regex_rules.filter((E,_)=>_!==T)})},h=(T,E,_)=>{const A=[...t.regex_rules];E==="regex"&&typeof _=="string"?A[T]={...A[T],regex:[_]}:E==="reaction"&&typeof _=="string"&&(A[T]={...A[T],reaction:_}),s({...t,regex_rules:A})},m=({regex:T,reaction:E,onRegexChange:_,onReactionChange:A})=>{const[D,q]=b.useState(!1),[B,H]=b.useState(""),[W,ee]=b.useState(null),[I,V]=b.useState(""),[L,$]=b.useState({}),[K,Y]=b.useState(""),R=b.useRef(null),[ie,X]=b.useState("build"),z=G=>G.replace(/\(\?P<([^>]+)>/g,"(?<$1>"),U=(G,se=0)=>{const re=R.current;if(!re)return;const ae=re.selectionStart||0,_e=re.selectionEnd||0,Be=T.substring(0,ae)+G+T.substring(_e);_(Be),setTimeout(()=>{const Ye=ae+G.length+se;re.setSelectionRange(Ye,Ye),re.focus()},0)};b.useEffect(()=>{if(!T||!B){ee(null),$({}),Y(E),V("");return}try{const G=z(T),se=new RegExp(G,"g"),re=B.match(se);ee(re),V("");const _e=new RegExp(G).exec(B);if(_e&&_e.groups){$(_e.groups);let Be=E;Object.entries(_e.groups).forEach(([Ye,Je])=>{Be=Be.replace(new RegExp(`\\[${Ye}\\]`,"g"),Je||"")}),Y(Be)}else $({}),Y(E)}catch(G){V(G.message),ee(null),$({}),Y(E)}},[T,B,E]);const te=()=>{if(!B||!W||W.length===0)return o.jsx("span",{className:"text-muted-foreground",children:B||"请输入测试文本"});try{const G=z(T),se=new RegExp(G,"g");let re=0;const ae=[];let _e;for(;(_e=se.exec(B))!==null;)_e.index>re&&ae.push(o.jsx("span",{children:B.substring(re,_e.index)},`text-${re}`)),ae.push(o.jsx("span",{className:"bg-yellow-200 dark:bg-yellow-900 font-semibold",children:_e[0]},`match-${_e.index}`)),re=_e.index+_e[0].length;return re)",desc:"Python风格命名捕获组",moveCursor:-1},{label:"非捕获组",pattern:"(?:)",desc:"分组但不保存匹配结果",moveCursor:-1}]},{category:"字符类",items:[{label:"字符集",pattern:"[]",desc:"匹配括号内的任意字符",moveCursor:-1},{label:"排除字符",pattern:"[^]",desc:"匹配不在括号内的字符",moveCursor:-1},{label:"范围",pattern:"[a-z]",desc:"匹配a到z的字符"},{label:"中文字符",pattern:"[\\u4e00-\\u9fa5]",desc:"匹配中文汉字"}]},{category:"常用模板",items:[{label:"捕获词语",pattern:"(?P\\S+)",desc:"捕获一个词语"},{label:"捕获句子",pattern:"(?P.+)",desc:"捕获整个句子"},{label:"捕获数字",pattern:"(?P\\d+)",desc:"捕获一个或多个数字"},{label:"可选词语",pattern:"(?:词语1|词语2)",desc:"匹配多个可选项之一"}]}];return o.jsxs(Er,{open:D,onOpenChange:q,children:[o.jsx(Of,{asChild:!0,children:o.jsxs(ue,{variant:"outline",size:"sm",children:[o.jsx(Fv,{className:"h-4 w-4 mr-1"}),"正则编辑器"]})}),o.jsxs(wr,{className:"max-w-[95vw] sm:max-w-[900px] max-h-[90vh]",children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"正则表达式编辑器"}),o.jsx(Xr,{className:"text-sm",children:"使用可视化工具构建正则表达式,并实时测试效果"})]}),o.jsx(pn,{className:"max-h-[calc(90vh-120px)]",children:o.jsxs(Yi,{value:ie,onValueChange:G=>X(G),className:"w-full",children:[o.jsxs(ji,{className:"grid w-full grid-cols-2",children:[o.jsx(Bt,{value:"build",children:"🔧 构建器"}),o.jsx(Bt,{value:"test",children:"🧪 测试器"})]}),o.jsxs(ln,{value:"build",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{className:"text-sm font-medium",children:"正则表达式"}),o.jsx(Pe,{ref:R,value:T,onChange:G=>_(G.target.value),className:"font-mono text-sm",placeholder:"点击下方按钮构建正则表达式..."})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{className:"text-sm font-medium",children:"Reaction 内容"}),o.jsx(Nr,{value:E,onChange:G=>A(G.target.value),placeholder:"使用 [捕获组名] 引用捕获的内容...",rows:3,className:"text-sm"})]}),o.jsxs("div",{className:"space-y-4 border-t pt-4",children:[ne.map(G=>o.jsxs("div",{className:"space-y-2",children:[o.jsx("h5",{className:"text-xs font-semibold text-primary",children:G.category}),o.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:G.items.map(se=>o.jsx(ue,{variant:"outline",size:"sm",className:"justify-start h-auto py-2 px-3",onClick:()=>U(se.pattern,se.moveCursor||0),children:o.jsxs("div",{className:"flex flex-col items-start w-full",children:[o.jsxs("div",{className:"flex items-center gap-2 w-full",children:[o.jsx("span",{className:"text-xs font-medium",children:se.label}),o.jsx("code",{className:"ml-auto text-xs bg-muted px-1.5 py-0.5 rounded font-mono",children:se.pattern})]}),o.jsx("span",{className:"text-xs text-muted-foreground mt-0.5",children:se.desc})]})},se.label))})]},G.category)),o.jsxs("div",{className:"space-y-2 border-t pt-4",children:[o.jsx("h5",{className:"text-xs font-semibold text-primary",children:"完整示例模板"}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(ue,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>_("^(?P\\S{1,20})是这样的$"),children:o.jsxs("div",{className:"flex flex-col items-start w-full",children:[o.jsxs("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:["^(?P\\S","{1,20}",")是这样的$"]}),o.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「某事物是这样的」并捕获事物名称"})]})}),o.jsx(ue,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>_("(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"),children:o.jsxs("div",{className:"flex flex-col items-start w-full",children:[o.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"}),o.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「我没要求你做某事」并捕获具体行为"})]})}),o.jsx(ue,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>_("(?P.+?)(?:是|为什么|怎么)"),children:o.jsxs("div",{className:"flex flex-col items-start w-full",children:[o.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?P.+?)(?:是|为什么|怎么)"}),o.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"捕获问题主题词"})]})})]})]})]}),o.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[o.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 使用提示"}),o.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[o.jsx("li",{children:"点击输入框设置光标位置,然后点击按钮插入模式"}),o.jsxs("li",{children:["命名捕获组格式:",o.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"(?P<名称>模式)"})]}),o.jsxs("li",{children:["在 reaction 中使用 ",o.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"[名称]"})," 引用捕获的内容"]}),o.jsx("li",{children:"切换到测试器标签页验证正则表达式效果"})]})]})]}),o.jsxs(ln,{value:"test",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{className:"text-sm font-medium",children:"当前正则表达式"}),o.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:T||"(未设置)"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"test-text",className:"text-sm font-medium",children:"测试文本"}),o.jsx(Nr,{id:"test-text",value:B,onChange:G=>H(G.target.value),placeholder:`在此输入要测试的文本... +例如:打游戏是这样的`,className:"min-h-[100px] text-sm"})]}),I&&o.jsxs("div",{className:"rounded-md bg-destructive/10 border border-destructive/20 p-3",children:[o.jsx("p",{className:"text-sm text-destructive font-medium",children:"正则表达式错误"}),o.jsx("p",{className:"text-xs text-destructive/80 mt-1",children:I})]}),!I&&B&&o.jsxs("div",{className:"space-y-3",children:[o.jsx("div",{className:"flex items-center gap-2",children:W&&W.length>0?o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-green-500"}),o.jsxs("span",{className:"text-sm font-medium text-green-600 dark:text-green-400",children:["匹配成功 (",W.length," 处)"]})]}):o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-gray-400"}),o.jsx("span",{className:"text-sm font-medium text-muted-foreground",children:"无匹配"})]})}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{className:"text-sm font-medium",children:"匹配高亮"}),o.jsx(pn,{className:"h-40 rounded-md bg-muted p-3",children:o.jsx("div",{className:"text-sm break-words",children:te()})})]}),Object.keys(L).length>0&&o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{className:"text-sm font-medium",children:"命名捕获组"}),o.jsx(pn,{className:"h-32 rounded-md border p-3",children:o.jsx("div",{className:"space-y-2",children:Object.entries(L).map(([G,se])=>o.jsxs("div",{className:"flex items-start gap-2 text-sm",children:[o.jsxs("span",{className:"font-mono font-semibold text-primary min-w-[80px]",children:["[",G,"]"]}),o.jsx("span",{className:"text-muted-foreground",children:"="}),o.jsx("span",{className:"font-mono bg-muted px-2 py-0.5 rounded",children:se})]},G))})})]}),Object.keys(L).length>0&&E&&o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{className:"text-sm font-medium",children:"Reaction 替换预览"}),o.jsx(pn,{className:"h-48 rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3",children:o.jsx("div",{className:"text-sm break-words",children:K})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"reaction 中的 [name] 已被替换为对应的捕获组值"})]})]}),o.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[o.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 测试说明"}),o.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[o.jsx("li",{children:"匹配的文本会以黄色背景高亮显示"}),o.jsx("li",{children:"命名捕获组的值会显示在下方列表中"}),o.jsx("li",{children:"Reaction 替换预览显示最终生成的反应内容"}),o.jsx("li",{children:"如需修改正则,切换回构建器标签页"})]})]})]})]})})]})]})},g=()=>{s({...t,keyword_rules:[...t.keyword_rules,{keywords:[],reaction:""}]})},x=T=>{s({...t,keyword_rules:t.keyword_rules.filter((E,_)=>_!==T)})},y=(T,E,_)=>{const A=[...t.keyword_rules];typeof _=="string"&&(A[T]={...A[T],reaction:_}),s({...t,keyword_rules:A})},w=T=>{const E=[...t.keyword_rules];E[T]={...E[T],keywords:[...E[T].keywords||[],""]},s({...t,keyword_rules:E})},S=(T,E)=>{const _=[...t.keyword_rules];_[T]={..._[T],keywords:(_[T].keywords||[]).filter((A,D)=>D!==E)},s({...t,keyword_rules:_})},k=(T,E,_)=>{const A=[...t.keyword_rules],D=[...A[T].keywords||[]];D[E]=_,A[T]={...A[T],keywords:D},s({...t,keyword_rules:A})},j=({rule:T})=>{const E=`{ regex = [${(T.regex||[]).map(_=>`"${_}"`).join(", ")}], reaction = "${T.reaction}" }`;return o.jsxs(Bo,{children:[o.jsx(Fo,{asChild:!0,children:o.jsxs(ue,{variant:"outline",size:"sm",children:[o.jsx(Ji,{className:"h-4 w-4 mr-1"}),"预览"]})}),o.jsx(Ka,{className:"w-[95vw] sm:w-[500px]",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),o.jsx(pn,{className:"h-60 rounded-md bg-muted p-3",children:o.jsx("pre",{className:"font-mono text-xs break-all",children:E})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},N=({rule:T})=>{const E=`[[keyword_reaction.keyword_rules]] keywords = [${(T.keywords||[]).map(_=>`"${_}"`).join(", ")}] -reaction = "${T.reaction}"`;return o.jsxs(zo,{children:[o.jsx(Io,{asChild:!0,children:o.jsxs(de,{variant:"outline",size:"sm",children:[o.jsx(Ea,{className:"h-4 w-4 mr-1"}),"预览"]})}),o.jsx(Xa,{className:"w-[95vw] sm:w-[500px]",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),o.jsx(gn,{className:"h-60 rounded-md bg-muted p-3",children:o.jsx("pre",{className:"font-mono text-xs whitespace-pre-wrap break-all",children:E})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"关键词反应配置"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"配置触发特定反应的关键词和正则表达式规则"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"text-base font-semibold",children:"正则表达式规则"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用正则表达式匹配消息内容"})]}),o.jsxs(de,{onClick:c,size:"sm",variant:"outline",children:[o.jsx(Ls,{className:"h-4 w-4 mr-1"}),"添加正则规则"]})]}),o.jsxs("div",{className:"space-y-3",children:[t.regex_rules.map((T,E)=>o.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium",children:["正则规则 ",E+1]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(m,{regex:T.regex&&T.regex[0]||"",reaction:T.reaction,onRegexChange:_=>h(E,"regex",_),onReactionChange:_=>h(E,"reaction",_)}),o.jsx(j,{rule:T}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(de,{size:"sm",variant:"ghost",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除正则规则 ",E+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>d(E),children:"删除"})]})]})]})]})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"正则表达式(Python 语法)"}),o.jsx(ze,{value:T.regex&&T.regex[0]||"",onChange:_=>h(E,"regex",_.target.value),placeholder:"例如:^(?P\\\\S{1,20})是这样的$ (点击正则编辑器按钮可视化构建)",className:"font-mono text-sm"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:'支持命名捕获组 (?Ppattern),可在 reaction 中使用 [name] 引用。点击"正则编辑器"可视化构建和测试!'})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"反应内容"}),o.jsx(Mr,{value:T.reaction,onChange:_=>h(E,"reaction",_.target.value),placeholder:`触发后麦麦的反应... -可以使用 [捕获组名] 来引用正则表达式中的内容`,rows:3,className:"text-sm"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"使用 [捕获组名] 引用正则表达式中的命名捕获组,例如 [n] 会被替换为捕获的内容"})]})]})]},E)),t.regex_rules.length===0&&o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无正则规则,点击"添加正则规则"开始配置'})]})]}),o.jsxs("div",{className:"space-y-4 border-t pt-6",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"text-base font-semibold",children:"关键词规则"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用关键词列表匹配消息内容"})]}),o.jsxs(de,{onClick:g,size:"sm",variant:"outline",children:[o.jsx(Ls,{className:"h-4 w-4 mr-1"}),"添加关键词规则"]})]}),o.jsxs("div",{className:"space-y-3",children:[t.keyword_rules.map((T,E)=>o.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium",children:["关键词规则 ",E+1]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(N,{rule:T}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(de,{size:"sm",variant:"ghost",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除关键词规则 ",E+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>x(E),children:"删除"})]})]})]})]})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{className:"text-xs font-medium",children:"关键词列表"}),o.jsxs(de,{onClick:()=>w(E),size:"sm",variant:"ghost",children:[o.jsx(Ls,{className:"h-3 w-3 mr-1"}),"添加关键词"]})]}),o.jsxs("div",{className:"space-y-2",children:[(T.keywords||[]).map((_,A)=>o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{value:_,onChange:L=>k(E,A,L.target.value),placeholder:"关键词",className:"flex-1"}),o.jsx(de,{onClick:()=>S(E,A),size:"sm",variant:"ghost",children:o.jsx(Sn,{className:"h-4 w-4"})})]},A)),(!T.keywords||T.keywords.length===0)&&o.jsx("p",{className:"text-xs text-muted-foreground text-center py-2",children:'暂无关键词,点击"添加关键词"开始配置'})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"反应内容"}),o.jsx(Mr,{value:T.reaction,onChange:_=>y(E,"reaction",_.target.value),placeholder:"触发后麦麦的反应...",rows:3,className:"text-sm"})]})]})]},E)),t.keyword_rules.length===0&&o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无关键词规则,点击"添加关键词规则"开始配置'})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"回复后处理配置"}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"enable_response_post_process",checked:e.enable_response_post_process,onCheckedChange:T=>i({...e,enable_response_post_process:T})}),o.jsx(he,{htmlFor:"enable_response_post_process",className:"cursor-pointer",children:"启用回复后处理"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"包括错别字生成器和回复分割器"})]}),e.enable_response_post_process&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"border-t pt-6 space-y-4",children:o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[o.jsx(Bt,{id:"enable_chinese_typo",checked:n.enable,onCheckedChange:T=>a({...n,enable:T})}),o.jsx(he,{htmlFor:"enable_chinese_typo",className:"cursor-pointer font-semibold",children:"中文错别字生成器"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"为回复添加随机错别字,让麦麦的回复更自然"}),n.enable&&o.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"error_rate",className:"text-xs font-medium",children:"单字替换概率"}),o.jsx(ze,{id:"error_rate",type:"number",step:"0.001",min:"0",max:"1",value:n.error_rate,onChange:T=>a({...n,error_rate:parseFloat(T.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"min_freq",className:"text-xs font-medium",children:"最小字频阈值"}),o.jsx(ze,{id:"min_freq",type:"number",min:"0",value:n.min_freq,onChange:T=>a({...n,min_freq:parseInt(T.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"tone_error_rate",className:"text-xs font-medium",children:"声调错误概率"}),o.jsx(ze,{id:"tone_error_rate",type:"number",step:"0.01",min:"0",max:"1",value:n.tone_error_rate,onChange:T=>a({...n,tone_error_rate:parseFloat(T.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"word_replace_rate",className:"text-xs font-medium",children:"整词替换概率"}),o.jsx(ze,{id:"word_replace_rate",type:"number",step:"0.001",min:"0",max:"1",value:n.word_replace_rate,onChange:T=>a({...n,word_replace_rate:parseFloat(T.target.value)})})]})]})]})}),o.jsx("div",{className:"border-t pt-6 space-y-4",children:o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[o.jsx(Bt,{id:"enable_response_splitter",checked:r.enable,onCheckedChange:T=>l({...r,enable:T})}),o.jsx(he,{htmlFor:"enable_response_splitter",className:"cursor-pointer font-semibold",children:"回复分割器"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"控制回复的长度和句子数量"}),r.enable&&o.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"max_length",className:"text-xs font-medium",children:"最大长度"}),o.jsx(ze,{id:"max_length",type:"number",min:"1",value:r.max_length,onChange:T=>l({...r,max_length:parseInt(T.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大字符数"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"max_sentence_num",className:"text-xs font-medium",children:"最大句子数"}),o.jsx(ze,{id:"max_sentence_num",type:"number",min:"1",value:r.max_sentence_num,onChange:T=>l({...r,max_sentence_num:parseInt(T.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大句子数量"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"enable_kaomoji_protection",checked:r.enable_kaomoji_protection,onCheckedChange:T=>l({...r,enable_kaomoji_protection:T})}),o.jsx(he,{htmlFor:"enable_kaomoji_protection",className:"cursor-pointer",children:"启用颜文字保护"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"enable_overflow_return_all",checked:r.enable_overflow_return_all,onCheckedChange:T=>l({...r,enable_overflow_return_all:T})}),o.jsx(he,{htmlFor:"enable_overflow_return_all",className:"cursor-pointer",children:"超出时一次性返回全部"})]}),o.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"当句子数量超出限制时,合并后一次性返回所有内容"})]})]})})]})]})]})}function F0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"情绪设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{checked:t.enable_mood,onCheckedChange:n=>e({...t,enable_mood:n})}),o.jsx(he,{className:"cursor-pointer",children:"启用情绪系统"})]}),t.enable_mood&&o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"情绪更新阈值"}),o.jsx(ze,{type:"number",min:"1",value:t.mood_update_threshold,onChange:n=>e({...t,mood_update_threshold:parseInt(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"越高,更新越慢"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"情感特征"}),o.jsx(Mr,{value:t.emotion_style,onChange:n=>e({...t,emotion_style:n.target.value}),placeholder:"影响情绪的变化情况",rows:2})]})]})]})]})}function q0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"语音设置"}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{checked:t.enable_asr,onCheckedChange:n=>e({...t,enable_asr:n})}),o.jsx(he,{className:"cursor-pointer",children:"启用语音识别"})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"启用后麦麦可以识别语音消息,需要配置语音识别模型"})]})}function $0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{checked:t.enable,onCheckedChange:n=>e({...t,enable:n})}),o.jsx(he,{className:"cursor-pointer",children:"启用 LPMM 知识库"})]}),t.enable&&o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"LPMM 模式"}),o.jsxs(Vt,{value:t.lpmm_mode,onValueChange:n=>e({...t,lpmm_mode:n}),children:[o.jsx($t,{children:o.jsx(Ut,{placeholder:"选择 LPMM 模式"})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"classic",children:"经典模式"}),o.jsx(De,{value:"agent",children:"Agent 模式"})]})]})]}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"同义词搜索 TopK"}),o.jsx(ze,{type:"number",min:"1",value:t.rag_synonym_search_top_k,onChange:n=>e({...t,rag_synonym_search_top_k:parseInt(n.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"同义词阈值"}),o.jsx(ze,{type:"number",step:"0.1",min:"0",max:"1",value:t.rag_synonym_threshold,onChange:n=>e({...t,rag_synonym_threshold:parseFloat(n.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"实体提取线程数"}),o.jsx(ze,{type:"number",min:"1",value:t.info_extraction_workers,onChange:n=>e({...t,info_extraction_workers:parseInt(n.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"嵌入向量维度"}),o.jsx(ze,{type:"number",min:"1",value:t.embedding_dimension,onChange:n=>e({...t,embedding_dimension:parseInt(n.target.value)})})]})]})]})]})]})}function H0e({config:t,onChange:e}){const[n,r]=b.useState(""),[s,i]=b.useState("WARNING"),a=()=>{n&&!t.suppress_libraries.includes(n)&&(e({...t,suppress_libraries:[...t.suppress_libraries,n]}),r(""))},l=x=>{e({...t,suppress_libraries:t.suppress_libraries.filter(y=>y!==x)})},c=()=>{n&&!t.library_log_levels[n]&&(e({...t,library_log_levels:{...t.library_log_levels,[n]:s}}),r(""),i("WARNING"))},d=x=>{const y={...t.library_log_levels};delete y[x],e({...t,library_log_levels:y})},h=["DEBUG","INFO","WARNING","ERROR","CRITICAL"],m=["FULL","compact","lite"],g=["none","title","full"];return o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"日志配置"}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"日期格式"}),o.jsx(ze,{value:t.date_style,onChange:x=>e({...t,date_style:x.target.value}),placeholder:"例如: m-d H:i:s"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"m=月, d=日, H=时, i=分, s=秒"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"日志级别样式"}),o.jsxs(Vt,{value:t.log_level_style,onValueChange:x=>e({...t,log_level_style:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:m.map(x=>o.jsx(De,{value:x,children:x},x))})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"日志文本颜色"}),o.jsxs(Vt,{value:t.color_text,onValueChange:x=>e({...t,color_text:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:g.map(x=>o.jsx(De,{value:x,children:x},x))})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"全局日志级别"}),o.jsxs(Vt,{value:t.log_level,onValueChange:x=>e({...t,log_level:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:h.map(x=>o.jsx(De,{value:x,children:x},x))})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"控制台日志级别"}),o.jsxs(Vt,{value:t.console_log_level,onValueChange:x=>e({...t,console_log_level:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:h.map(x=>o.jsx(De,{value:x,children:x},x))})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"文件日志级别"}),o.jsxs(Vt,{value:t.file_log_level,onValueChange:x=>e({...t,file_log_level:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:h.map(x=>o.jsx(De,{value:x,children:x},x))})]})]})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"mb-2 block",children:"完全屏蔽的库"}),o.jsxs("div",{className:"flex gap-2 mb-2",children:[o.jsx(ze,{value:n,onChange:x=>r(x.target.value),placeholder:"输入库名",className:"flex-1",onKeyDown:x=>{x.key==="Enter"&&(x.preventDefault(),a())}}),o.jsx(de,{onClick:a,size:"sm",className:"flex-shrink-0",children:o.jsx(Ls,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),o.jsx("div",{className:"flex flex-wrap gap-2",children:t.suppress_libraries.map(x=>o.jsxs("div",{className:"flex items-center gap-1 bg-secondary px-3 py-1 rounded-md",children:[o.jsx("span",{className:"text-sm",children:x}),o.jsx(de,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0",onClick:()=>l(x),children:o.jsx(Sn,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},x))})]}),o.jsxs("div",{children:[o.jsx(he,{className:"mb-2 block",children:"特定库的日志级别"}),o.jsxs("div",{className:"flex gap-2 mb-2",children:[o.jsx(ze,{value:n,onChange:x=>r(x.target.value),placeholder:"输入库名",className:"flex-1"}),o.jsxs(Vt,{value:s,onValueChange:i,children:[o.jsx($t,{className:"w-32",children:o.jsx(Ut,{})}),o.jsx(Ht,{children:h.map(x=>o.jsx(De,{value:x,children:x},x))})]}),o.jsx(de,{onClick:c,size:"sm",children:o.jsx(Ls,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),o.jsx("div",{className:"space-y-2",children:Object.entries(t.library_log_levels).map(([x,y])=>o.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[o.jsx("span",{className:"text-sm font-medium",children:x}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"text-sm text-muted-foreground",children:y}),o.jsx(de,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>d(x),children:o.jsx(Sn,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]})]},x))})]})]})}function Q0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"调试配置"}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示 Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否在日志中显示提示词"})]}),o.jsx(Bt,{checked:t.show_prompt,onCheckedChange:n=>e({...t,show_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示回复器 Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的提示词"})]}),o.jsx(Bt,{checked:t.show_replyer_prompt,onCheckedChange:n=>e({...t,show_replyer_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示回复器推理"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的推理过程"})]}),o.jsx(Bt,{checked:t.show_replyer_reasoning,onCheckedChange:n=>e({...t,show_replyer_reasoning:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示 Jargon Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示术语相关的提示词"})]}),o.jsx(Bt,{checked:t.show_jargon_prompt,onCheckedChange:n=>e({...t,show_jargon_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示记忆检索 Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示记忆检索相关的提示词"})]}),o.jsx(Bt,{checked:t.show_memory_prompt,onCheckedChange:n=>e({...t,show_memory_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示 Planner Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 Planner 的提示词和原始返回结果"})]}),o.jsx(Bt,{checked:t.show_planner_prompt,onCheckedChange:n=>e({...t,show_planner_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示 LPMM 相关文段"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 LPMM 知识库找到的相关文段日志"})]}),o.jsx(Bt,{checked:t.show_lpmm_paragraph,onCheckedChange:n=>e({...t,show_lpmm_paragraph:n})})]})]})]})}function V0e({config:t,onChange:e}){const[n,r]=b.useState(""),s=()=>{n&&!t.auth_token.includes(n)&&(e({...t,auth_token:[...t.auth_token,n]}),r(""))},i=a=>{e({...t,auth_token:t.auth_token.filter((l,c)=>c!==a)})};return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"MaimMessage 服务配置"}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"启用自定义服务器"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否使用自定义的 MaimMessage 服务器"})]}),o.jsx(Bt,{checked:t.use_custom,onCheckedChange:a=>e({...t,use_custom:a})})]}),t.use_custom&&o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"主机地址"}),o.jsx(ze,{value:t.host,onChange:a=>e({...t,host:a.target.value}),placeholder:"127.0.0.1"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"端口号"}),o.jsx(ze,{type:"number",value:t.port,onChange:a=>e({...t,port:parseInt(a.target.value)}),placeholder:"8090"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"连接模式"}),o.jsxs(Vt,{value:t.mode,onValueChange:a=>e({...t,mode:a}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"ws",children:"WebSocket (ws)"}),o.jsx(De,{value:"tcp",children:"TCP"})]})]})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{checked:t.use_wss,onCheckedChange:a=>e({...t,use_wss:a}),disabled:t.mode!=="ws"}),o.jsx(he,{children:"使用 WSS 安全连接"})]})]}),t.use_wss&&t.mode==="ws"&&o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"SSL 证书文件路径"}),o.jsx(ze,{value:t.cert_file,onChange:a=>e({...t,cert_file:a.target.value}),placeholder:"cert.pem"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"SSL 密钥文件路径"}),o.jsx(ze,{value:t.key_file,onChange:a=>e({...t,key_file:a.target.value}),placeholder:"key.pem"})]})]})]})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"mb-2 block",children:"认证令牌"}),o.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:"用于 API 验证,为空则不启用验证"}),o.jsxs("div",{className:"flex gap-2 mb-2",children:[o.jsx(ze,{value:n,onChange:a=>r(a.target.value),placeholder:"输入认证令牌",onKeyDown:a=>{a.key==="Enter"&&(a.preventDefault(),s())}}),o.jsx(de,{onClick:s,size:"sm",children:o.jsx(Ls,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),o.jsx("div",{className:"space-y-2",children:t.auth_token.map((a,l)=>o.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[o.jsx("span",{className:"text-sm font-mono",children:a}),o.jsx(de,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>i(l),children:o.jsx(Sn,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},l))})]})]})}function U0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"统计信息"}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"启用统计信息发送"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"发送匿名统计信息,帮助我们了解全球有多少只麦麦在运行"})]}),o.jsx(Bt,{checked:t.enable,onCheckedChange:n=>e({...t,enable:n})})]})]})}const _f=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{className:"relative w-full overflow-auto",children:o.jsx("table",{ref:n,className:xe("w-full caption-bottom text-sm",t),...e})}));_f.displayName="Table";const Af=b.forwardRef(({className:t,...e},n)=>o.jsx("thead",{ref:n,className:xe("[&_tr]:border-b",t),...e}));Af.displayName="TableHeader";const Mf=b.forwardRef(({className:t,...e},n)=>o.jsx("tbody",{ref:n,className:xe("[&_tr:last-child]:border-0",t),...e}));Mf.displayName="TableBody";const W0e=b.forwardRef(({className:t,...e},n)=>o.jsx("tfoot",{ref:n,className:xe("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",t),...e}));W0e.displayName="TableFooter";const Is=b.forwardRef(({className:t,...e},n)=>o.jsx("tr",{ref:n,className:xe("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",t),...e}));Is.displayName="TableRow";const pn=b.forwardRef(({className:t,...e},n)=>o.jsx("th",{ref:n,className:xe("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...e}));pn.displayName="TableHead";const Gt=b.forwardRef(({className:t,...e},n)=>o.jsx("td",{ref:n,className:xe("px-4 py-3 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...e}));Gt.displayName="TableCell";const G0e=b.forwardRef(({className:t,...e},n)=>o.jsx("caption",{ref:n,className:xe("mt-4 text-sm text-muted-foreground",t),...e}));G0e.displayName="TableCaption";var xA=1,X0e=.9,Y0e=.8,K0e=.17,mS=.1,pS=.999,Z0e=.9999,J0e=.99,epe=/[\\\/_+.#"@\[\(\{&]/,tpe=/[\\\/_+.#"@\[\(\{&]/g,npe=/[\s-]/,jH=/[\s-]/g;function pO(t,e,n,r,s,i,a){if(i===e.length)return s===t.length?xA:J0e;var l=`${s},${i}`;if(a[l]!==void 0)return a[l];for(var c=r.charAt(i),d=n.indexOf(c,s),h=0,m,g,x,y;d>=0;)m=pO(t,e,n,r,d+1,i+1,a),m>h&&(d===s?m*=xA:epe.test(t.charAt(d-1))?(m*=Y0e,x=t.slice(s,d-1).match(tpe),x&&s>0&&(m*=Math.pow(pS,x.length))):npe.test(t.charAt(d-1))?(m*=X0e,y=t.slice(s,d-1).match(jH),y&&s>0&&(m*=Math.pow(pS,y.length))):(m*=K0e,s>0&&(m*=Math.pow(pS,d-s))),t.charAt(d)!==e.charAt(i)&&(m*=Z0e)),(mm&&(m=g*mS)),m>h&&(h=m),d=n.indexOf(c,d+1);return a[l]=h,h}function vA(t){return t.toLowerCase().replace(jH," ")}function rpe(t,e,n){return t=n&&n.length>0?`${t+" "+n.join(" ")}`:t,pO(t,e,vA(t),vA(e),0,0,{})}var spe=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],cu=spe.reduce((t,e)=>{const n=Fy(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...l}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(c,{...l,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),Qm='[cmdk-group=""]',gS='[cmdk-group-items=""]',ipe='[cmdk-group-heading=""]',NH='[cmdk-item=""]',yA=`${NH}:not([aria-disabled="true"])`,gO="cmdk-item-select",wh="data-value",ape=(t,e,n)=>rpe(t,e,n),CH=b.createContext(void 0),Jp=()=>b.useContext(CH),TH=b.createContext(void 0),q6=()=>b.useContext(TH),EH=b.createContext(void 0),_H=b.forwardRef((t,e)=>{let n=Sh(()=>{var G,I;return{search:"",value:(I=(G=t.value)!=null?G:t.defaultValue)!=null?I:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),r=Sh(()=>new Set),s=Sh(()=>new Map),i=Sh(()=>new Map),a=Sh(()=>new Set),l=AH(t),{label:c,children:d,value:h,onValueChange:m,filter:g,shouldFilter:x,loop:y,disablePointerSelection:w=!1,vimBindings:S=!0,...k}=t,j=Ui(),N=Ui(),T=Ui(),E=b.useRef(null),_=xpe();dd(()=>{if(h!==void 0){let G=h.trim();n.current.value=G,A.emit()}},[h]),dd(()=>{_(6,te)},[]);let A=b.useMemo(()=>({subscribe:G=>(a.current.add(G),()=>a.current.delete(G)),snapshot:()=>n.current,setState:(G,I,V)=>{var ee,ne,W,se;if(!Object.is(n.current[G],I)){if(n.current[G]=I,G==="search")U(),B(),_(1,$);else if(G==="value"){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let re=document.getElementById(T);re?re.focus():(ee=document.getElementById(j))==null||ee.focus()}if(_(7,()=>{var re;n.current.selectedItemId=(re=z())==null?void 0:re.id,A.emit()}),V||_(5,te),((ne=l.current)==null?void 0:ne.value)!==void 0){let re=I??"";(se=(W=l.current).onValueChange)==null||se.call(W,re);return}}A.emit()}},emit:()=>{a.current.forEach(G=>G())}}),[]),L=b.useMemo(()=>({value:(G,I,V)=>{var ee;I!==((ee=i.current.get(G))==null?void 0:ee.value)&&(i.current.set(G,{value:I,keywords:V}),n.current.filtered.items.set(G,P(I,V)),_(2,()=>{B(),A.emit()}))},item:(G,I)=>(r.current.add(G),I&&(s.current.has(I)?s.current.get(I).add(G):s.current.set(I,new Set([G]))),_(3,()=>{U(),B(),n.current.value||$(),A.emit()}),()=>{i.current.delete(G),r.current.delete(G),n.current.filtered.items.delete(G);let V=z();_(4,()=>{U(),V?.getAttribute("id")===G&&$(),A.emit()})}),group:G=>(s.current.has(G)||s.current.set(G,new Set),()=>{i.current.delete(G),s.current.delete(G)}),filter:()=>l.current.shouldFilter,label:c||t["aria-label"],getDisablePointerSelection:()=>l.current.disablePointerSelection,listId:j,inputId:T,labelId:N,listInnerRef:E}),[]);function P(G,I){var V,ee;let ne=(ee=(V=l.current)==null?void 0:V.filter)!=null?ee:ape;return G?ne(G,n.current.search,I):0}function B(){if(!n.current.search||l.current.shouldFilter===!1)return;let G=n.current.filtered.items,I=[];n.current.filtered.groups.forEach(ee=>{let ne=s.current.get(ee),W=0;ne.forEach(se=>{let re=G.get(se);W=Math.max(re,W)}),I.push([ee,W])});let V=E.current;Q().sort((ee,ne)=>{var W,se;let re=ee.getAttribute("id"),oe=ne.getAttribute("id");return((W=G.get(oe))!=null?W:0)-((se=G.get(re))!=null?se:0)}).forEach(ee=>{let ne=ee.closest(gS);ne?ne.appendChild(ee.parentElement===ne?ee:ee.closest(`${gS} > *`)):V.appendChild(ee.parentElement===V?ee:ee.closest(`${gS} > *`))}),I.sort((ee,ne)=>ne[1]-ee[1]).forEach(ee=>{var ne;let W=(ne=E.current)==null?void 0:ne.querySelector(`${Qm}[${wh}="${encodeURIComponent(ee[0])}"]`);W?.parentElement.appendChild(W)})}function $(){let G=Q().find(V=>V.getAttribute("aria-disabled")!=="true"),I=G?.getAttribute(wh);A.setState("value",I||void 0)}function U(){var G,I,V,ee;if(!n.current.search||l.current.shouldFilter===!1){n.current.filtered.count=r.current.size;return}n.current.filtered.groups=new Set;let ne=0;for(let W of r.current){let se=(I=(G=i.current.get(W))==null?void 0:G.value)!=null?I:"",re=(ee=(V=i.current.get(W))==null?void 0:V.keywords)!=null?ee:[],oe=P(se,re);n.current.filtered.items.set(W,oe),oe>0&&ne++}for(let[W,se]of s.current)for(let re of se)if(n.current.filtered.items.get(re)>0){n.current.filtered.groups.add(W);break}n.current.filtered.count=ne}function te(){var G,I,V;let ee=z();ee&&(((G=ee.parentElement)==null?void 0:G.firstChild)===ee&&((V=(I=ee.closest(Qm))==null?void 0:I.querySelector(ipe))==null||V.scrollIntoView({block:"nearest"})),ee.scrollIntoView({block:"nearest"}))}function z(){var G;return(G=E.current)==null?void 0:G.querySelector(`${NH}[aria-selected="true"]`)}function Q(){var G;return Array.from(((G=E.current)==null?void 0:G.querySelectorAll(yA))||[])}function F(G){let I=Q()[G];I&&A.setState("value",I.getAttribute(wh))}function Y(G){var I;let V=z(),ee=Q(),ne=ee.findIndex(se=>se===V),W=ee[ne+G];(I=l.current)!=null&&I.loop&&(W=ne+G<0?ee[ee.length-1]:ne+G===ee.length?ee[0]:ee[ne+G]),W&&A.setState("value",W.getAttribute(wh))}function J(G){let I=z(),V=I?.closest(Qm),ee;for(;V&&!ee;)V=G>0?ppe(V,Qm):gpe(V,Qm),ee=V?.querySelector(yA);ee?A.setState("value",ee.getAttribute(wh)):Y(G)}let X=()=>F(Q().length-1),R=G=>{G.preventDefault(),G.metaKey?X():G.altKey?J(1):Y(1)},ie=G=>{G.preventDefault(),G.metaKey?F(0):G.altKey?J(-1):Y(-1)};return b.createElement(cu.div,{ref:e,tabIndex:-1,...k,"cmdk-root":"",onKeyDown:G=>{var I;(I=k.onKeyDown)==null||I.call(k,G);let V=G.nativeEvent.isComposing||G.keyCode===229;if(!(G.defaultPrevented||V))switch(G.key){case"n":case"j":{S&&G.ctrlKey&&R(G);break}case"ArrowDown":{R(G);break}case"p":case"k":{S&&G.ctrlKey&&ie(G);break}case"ArrowUp":{ie(G);break}case"Home":{G.preventDefault(),F(0);break}case"End":{G.preventDefault(),X();break}case"Enter":{G.preventDefault();let ee=z();if(ee){let ne=new Event(gO);ee.dispatchEvent(ne)}}}}},b.createElement("label",{"cmdk-label":"",htmlFor:L.inputId,id:L.labelId,style:ype},c),kb(t,G=>b.createElement(TH.Provider,{value:A},b.createElement(CH.Provider,{value:L},G))))}),ope=b.forwardRef((t,e)=>{var n,r;let s=Ui(),i=b.useRef(null),a=b.useContext(EH),l=Jp(),c=AH(t),d=(r=(n=c.current)==null?void 0:n.forceMount)!=null?r:a?.forceMount;dd(()=>{if(!d)return l.item(s,a?.id)},[d]);let h=MH(s,i,[t.value,t.children,i],t.keywords),m=q6(),g=Zc(_=>_.value&&_.value===h.current),x=Zc(_=>d||l.filter()===!1?!0:_.search?_.filtered.items.get(s)>0:!0);b.useEffect(()=>{let _=i.current;if(!(!_||t.disabled))return _.addEventListener(gO,y),()=>_.removeEventListener(gO,y)},[x,t.onSelect,t.disabled]);function y(){var _,A;w(),(A=(_=c.current).onSelect)==null||A.call(_,h.current)}function w(){m.setState("value",h.current,!0)}if(!x)return null;let{disabled:S,value:k,onSelect:j,forceMount:N,keywords:T,...E}=t;return b.createElement(cu.div,{ref:Qc(i,e),...E,id:s,"cmdk-item":"",role:"option","aria-disabled":!!S,"aria-selected":!!g,"data-disabled":!!S,"data-selected":!!g,onPointerMove:S||l.getDisablePointerSelection()?void 0:w,onClick:S?void 0:y},t.children)}),lpe=b.forwardRef((t,e)=>{let{heading:n,children:r,forceMount:s,...i}=t,a=Ui(),l=b.useRef(null),c=b.useRef(null),d=Ui(),h=Jp(),m=Zc(x=>s||h.filter()===!1?!0:x.search?x.filtered.groups.has(a):!0);dd(()=>h.group(a),[]),MH(a,l,[t.value,t.heading,c]);let g=b.useMemo(()=>({id:a,forceMount:s}),[s]);return b.createElement(cu.div,{ref:Qc(l,e),...i,"cmdk-group":"",role:"presentation",hidden:m?void 0:!0},n&&b.createElement("div",{ref:c,"cmdk-group-heading":"","aria-hidden":!0,id:d},n),kb(t,x=>b.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":n?d:void 0},b.createElement(EH.Provider,{value:g},x))))}),cpe=b.forwardRef((t,e)=>{let{alwaysRender:n,...r}=t,s=b.useRef(null),i=Zc(a=>!a.search);return!n&&!i?null:b.createElement(cu.div,{ref:Qc(s,e),...r,"cmdk-separator":"",role:"separator"})}),upe=b.forwardRef((t,e)=>{let{onValueChange:n,...r}=t,s=t.value!=null,i=q6(),a=Zc(d=>d.search),l=Zc(d=>d.selectedItemId),c=Jp();return b.useEffect(()=>{t.value!=null&&i.setState("search",t.value)},[t.value]),b.createElement(cu.input,{ref:e,...r,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":c.listId,"aria-labelledby":c.labelId,"aria-activedescendant":l,id:c.inputId,type:"text",value:s?t.value:a,onChange:d=>{s||i.setState("search",d.target.value),n?.(d.target.value)}})}),dpe=b.forwardRef((t,e)=>{let{children:n,label:r="Suggestions",...s}=t,i=b.useRef(null),a=b.useRef(null),l=Zc(d=>d.selectedItemId),c=Jp();return b.useEffect(()=>{if(a.current&&i.current){let d=a.current,h=i.current,m,g=new ResizeObserver(()=>{m=requestAnimationFrame(()=>{let x=d.offsetHeight;h.style.setProperty("--cmdk-list-height",x.toFixed(1)+"px")})});return g.observe(d),()=>{cancelAnimationFrame(m),g.unobserve(d)}}},[]),b.createElement(cu.div,{ref:Qc(i,e),...s,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":l,"aria-label":r,id:c.listId},kb(t,d=>b.createElement("div",{ref:Qc(a,c.listInnerRef),"cmdk-list-sizer":""},d)))}),hpe=b.forwardRef((t,e)=>{let{open:n,onOpenChange:r,overlayClassName:s,contentClassName:i,container:a,...l}=t;return b.createElement(Nj,{open:n,onOpenChange:r},b.createElement(kj,{container:a},b.createElement(qy,{"cmdk-overlay":"",className:s}),b.createElement($y,{"aria-label":t.label,"cmdk-dialog":"",className:i},b.createElement(_H,{ref:e,...l}))))}),fpe=b.forwardRef((t,e)=>Zc(n=>n.filtered.count===0)?b.createElement(cu.div,{ref:e,...t,"cmdk-empty":"",role:"presentation"}):null),mpe=b.forwardRef((t,e)=>{let{progress:n,children:r,label:s="Loading...",...i}=t;return b.createElement(cu.div,{ref:e,...i,"cmdk-loading":"",role:"progressbar","aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":s},kb(t,a=>b.createElement("div",{"aria-hidden":!0},a)))}),Ci=Object.assign(_H,{List:dpe,Item:ope,Input:upe,Group:lpe,Separator:cpe,Dialog:hpe,Empty:fpe,Loading:mpe});function ppe(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return n;n=n.nextElementSibling}}function gpe(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return n;n=n.previousElementSibling}}function AH(t){let e=b.useRef(t);return dd(()=>{e.current=t}),e}var dd=typeof window>"u"?b.useEffect:b.useLayoutEffect;function Sh(t){let e=b.useRef();return e.current===void 0&&(e.current=t()),e}function Zc(t){let e=q6(),n=()=>t(e.snapshot());return b.useSyncExternalStore(e.subscribe,n,n)}function MH(t,e,n,r=[]){let s=b.useRef(),i=Jp();return dd(()=>{var a;let l=(()=>{var d;for(let h of n){if(typeof h=="string")return h.trim();if(typeof h=="object"&&"current"in h)return h.current?(d=h.current.textContent)==null?void 0:d.trim():s.current}})(),c=r.map(d=>d.trim());i.value(t,l,c),(a=e.current)==null||a.setAttribute(wh,l),s.current=l}),s}var xpe=()=>{let[t,e]=b.useState(),n=Sh(()=>new Map);return dd(()=>{n.current.forEach(r=>r()),n.current=new Map},[t]),(r,s)=>{n.current.set(r,s),e({})}};function vpe(t){let e=t.type;return typeof e=="function"?e(t.props):"render"in e?e.render(t.props):t}function kb({asChild:t,children:e},n){return t&&b.isValidElement(e)?b.cloneElement(vpe(e),{ref:e.ref},n(e.props.children)):n(e)}var ype={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};const Ob=b.forwardRef(({className:t,...e},n)=>o.jsx(Ci,{ref:n,className:xe("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",t),...e}));Ob.displayName=Ci.displayName;const jb=b.forwardRef(({className:t,...e},n)=>o.jsxs("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[o.jsx(Ni,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),o.jsx(Ci.Input,{ref:n,className:xe("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",t),...e})]}));jb.displayName=Ci.Input.displayName;const Nb=b.forwardRef(({className:t,...e},n)=>o.jsx(Ci.List,{ref:n,className:xe("max-h-[300px] overflow-y-auto overflow-x-hidden",t),...e}));Nb.displayName=Ci.List.displayName;const Cb=b.forwardRef((t,e)=>o.jsx(Ci.Empty,{ref:e,className:"py-6 text-center text-sm",...t}));Cb.displayName=Ci.Empty.displayName;const ap=b.forwardRef(({className:t,...e},n)=>o.jsx(Ci.Group,{ref:n,className:xe("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",t),...e}));ap.displayName=Ci.Group.displayName;const bpe=b.forwardRef(({className:t,...e},n)=>o.jsx(Ci.Separator,{ref:n,className:xe("-mx-1 h-px bg-border",t),...e}));bpe.displayName=Ci.Separator.displayName;const op=b.forwardRef(({className:t,...e},n)=>o.jsx(Ci.Item,{ref:n,className:xe("relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",t),...e}));op.displayName=Ci.Item.displayName;const Oi=b.forwardRef(({className:t,...e},n)=>o.jsx(gI,{ref:n,className:xe("grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",t),...e,children:o.jsx(Ree,{className:xe("grid place-content-center text-current"),children:o.jsx(Ro,{className:"h-4 w-4"})})}));Oi.displayName=gI.displayName;const RH=b.createContext(null),DH="maibot-completed-tours";function wpe(){try{const t=localStorage.getItem(DH);return t?new Set(JSON.parse(t)):new Set}catch{return new Set}}function bA(t){localStorage.setItem(DH,JSON.stringify([...t]))}function Spe({children:t}){const[e,n]=b.useState({activeTourId:null,stepIndex:0,isRunning:!1}),r=b.useRef(new Map),[,s]=b.useState(0),[i,a]=b.useState(wpe),l=b.useCallback((N,T)=>{r.current.set(N,T),s(E=>E+1)},[]),c=b.useCallback(N=>{r.current.delete(N),n(T=>T.activeTourId===N?{...T,activeTourId:null,isRunning:!1,stepIndex:0}:T)},[]),d=b.useCallback((N,T=0)=>{r.current.has(N)&&n({activeTourId:N,stepIndex:T,isRunning:!0})},[]),h=b.useCallback(()=>{n(N=>({...N,isRunning:!1}))},[]),m=b.useCallback(N=>{n(T=>({...T,stepIndex:N}))},[]),g=b.useCallback(()=>{n(N=>({...N,stepIndex:N.stepIndex+1}))},[]),x=b.useCallback(()=>{n(N=>({...N,stepIndex:Math.max(0,N.stepIndex-1)}))},[]),y=b.useCallback(()=>e.activeTourId?r.current.get(e.activeTourId)||[]:[],[e.activeTourId]),w=b.useCallback(N=>{a(T=>{const E=new Set(T);return E.add(N),bA(E),E})},[]),S=b.useCallback(N=>{const{action:T,index:E,status:_,type:A}=N,L=["finished","skipped"];if(T==="close"){n(P=>({...P,isRunning:!1,stepIndex:0}));return}L.includes(_)?n(P=>(_==="finished"&&P.activeTourId&&setTimeout(()=>w(P.activeTourId),0),{...P,isRunning:!1,stepIndex:0})):A==="step:after"&&(T==="next"?n(P=>({...P,stepIndex:E+1})):T==="prev"&&n(P=>({...P,stepIndex:E-1})))},[w]),k=b.useCallback(N=>i.has(N),[i]),j=b.useCallback(N=>{a(T=>{const E=new Set(T);return E.delete(N),bA(E),E})},[]);return o.jsx(RH.Provider,{value:{state:e,tours:r.current,registerTour:l,unregisterTour:c,startTour:d,stopTour:h,goToStep:m,nextStep:g,prevStep:x,getCurrentSteps:y,handleJoyrideCallback:S,isTourCompleted:k,markTourCompleted:w,resetTourCompleted:j},children:t})}function PH(t){return e=>typeof e===t}var kpe=PH("function"),Ope=t=>t===null,wA=t=>Object.prototype.toString.call(t).slice(8,-1)==="RegExp",SA=t=>!jpe(t)&&!Ope(t)&&(kpe(t)||typeof t=="object"),jpe=PH("undefined");function Npe(t,e){const{length:n}=t;if(n!==e.length)return!1;for(let r=n;r--!==0;)if(!ei(t[r],e[r]))return!1;return!0}function Cpe(t,e){if(t.byteLength!==e.byteLength)return!1;const n=new DataView(t.buffer),r=new DataView(e.buffer);let s=t.byteLength;for(;s--;)if(n.getUint8(s)!==r.getUint8(s))return!1;return!0}function Tpe(t,e){if(t.size!==e.size)return!1;for(const n of t.entries())if(!e.has(n[0]))return!1;for(const n of t.entries())if(!ei(n[1],e.get(n[0])))return!1;return!0}function Epe(t,e){if(t.size!==e.size)return!1;for(const n of t.entries())if(!e.has(n[0]))return!1;return!0}function ei(t,e){if(t===e)return!0;if(t&&SA(t)&&e&&SA(e)){if(t.constructor!==e.constructor)return!1;if(Array.isArray(t)&&Array.isArray(e))return Npe(t,e);if(t instanceof Map&&e instanceof Map)return Tpe(t,e);if(t instanceof Set&&e instanceof Set)return Epe(t,e);if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(e))return Cpe(t,e);if(wA(t)&&wA(e))return t.source===e.source&&t.flags===e.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===e.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===e.toString();const n=Object.keys(t),r=Object.keys(e);if(n.length!==r.length)return!1;for(let s=n.length;s--!==0;)if(!Object.prototype.hasOwnProperty.call(e,n[s]))return!1;for(let s=n.length;s--!==0;){const i=n[s];if(!(i==="_owner"&&t.$$typeof)&&!ei(t[i],e[i]))return!1}return!0}return Number.isNaN(t)&&Number.isNaN(e)?!0:t===e}var _pe=["Array","ArrayBuffer","AsyncFunction","AsyncGenerator","AsyncGeneratorFunction","Date","Error","Function","Generator","GeneratorFunction","HTMLElement","Map","Object","Promise","RegExp","Set","WeakMap","WeakSet"],Ape=["bigint","boolean","null","number","string","symbol","undefined"];function Tb(t){const e=Object.prototype.toString.call(t).slice(8,-1);if(/HTML\w+Element/.test(e))return"HTMLElement";if(Mpe(e))return e}function ro(t){return e=>Tb(e)===t}function Mpe(t){return _pe.includes(t)}function Rf(t){return e=>typeof e===t}function Rpe(t){return Ape.includes(t)}var Dpe=["innerHTML","ownerDocument","style","attributes","nodeValue"];function ct(t){if(t===null)return"null";switch(typeof t){case"bigint":return"bigint";case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"symbol":return"symbol";case"undefined":return"undefined"}if(ct.array(t))return"Array";if(ct.plainFunction(t))return"Function";const e=Tb(t);return e||"Object"}ct.array=Array.isArray;ct.arrayOf=(t,e)=>!ct.array(t)&&!ct.function(e)?!1:t.every(n=>e(n));ct.asyncGeneratorFunction=t=>Tb(t)==="AsyncGeneratorFunction";ct.asyncFunction=ro("AsyncFunction");ct.bigint=Rf("bigint");ct.boolean=t=>t===!0||t===!1;ct.date=ro("Date");ct.defined=t=>!ct.undefined(t);ct.domElement=t=>ct.object(t)&&!ct.plainObject(t)&&t.nodeType===1&&ct.string(t.nodeName)&&Dpe.every(e=>e in t);ct.empty=t=>ct.string(t)&&t.length===0||ct.array(t)&&t.length===0||ct.object(t)&&!ct.map(t)&&!ct.set(t)&&Object.keys(t).length===0||ct.set(t)&&t.size===0||ct.map(t)&&t.size===0;ct.error=ro("Error");ct.function=Rf("function");ct.generator=t=>ct.iterable(t)&&ct.function(t.next)&&ct.function(t.throw);ct.generatorFunction=ro("GeneratorFunction");ct.instanceOf=(t,e)=>!t||!e?!1:Object.getPrototypeOf(t)===e.prototype;ct.iterable=t=>!ct.nullOrUndefined(t)&&ct.function(t[Symbol.iterator]);ct.map=ro("Map");ct.nan=t=>Number.isNaN(t);ct.null=t=>t===null;ct.nullOrUndefined=t=>ct.null(t)||ct.undefined(t);ct.number=t=>Rf("number")(t)&&!ct.nan(t);ct.numericString=t=>ct.string(t)&&t.length>0&&!Number.isNaN(Number(t));ct.object=t=>!ct.nullOrUndefined(t)&&(ct.function(t)||typeof t=="object");ct.oneOf=(t,e)=>ct.array(t)?t.indexOf(e)>-1:!1;ct.plainFunction=ro("Function");ct.plainObject=t=>{if(Tb(t)!=="Object")return!1;const e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};ct.primitive=t=>ct.null(t)||Rpe(typeof t);ct.promise=ro("Promise");ct.propertyOf=(t,e,n)=>{if(!ct.object(t)||!e)return!1;const r=t[e];return ct.function(n)?n(r):ct.defined(r)};ct.regexp=ro("RegExp");ct.set=ro("Set");ct.string=Rf("string");ct.symbol=Rf("symbol");ct.undefined=Rf("undefined");ct.weakMap=ro("WeakMap");ct.weakSet=ro("WeakSet");var ft=ct;function Ppe(...t){return t.every(e=>ft.string(e)||ft.array(e)||ft.plainObject(e))}function zpe(t,e,n){return zH(t,e)?[t,e].every(ft.array)?!t.some(CA(n))&&e.some(CA(n)):[t,e].every(ft.plainObject)?!Object.entries(t).some(NA(n))&&Object.entries(e).some(NA(n)):e===n:!1}function kA(t,e,n){const{actual:r,key:s,previous:i,type:a}=n,l=To(t,s),c=To(e,s);let d=[l,c].every(ft.number)&&(a==="increased"?lc);return ft.undefined(r)||(d=d&&c===r),ft.undefined(i)||(d=d&&l===i),d}function OA(t,e,n){const{key:r,type:s,value:i}=n,a=To(t,r),l=To(e,r),c=s==="added"?a:l,d=s==="added"?l:a;if(!ft.nullOrUndefined(i)){if(ft.defined(c)){if(ft.array(c)||ft.plainObject(c))return zpe(c,d,i)}else return ei(d,i);return!1}return[a,l].every(ft.array)?!d.every($6(c)):[a,l].every(ft.plainObject)?Ipe(Object.keys(c),Object.keys(d)):![a,l].every(h=>ft.primitive(h)&&ft.defined(h))&&(s==="added"?!ft.defined(a)&&ft.defined(l):ft.defined(a)&&!ft.defined(l))}function jA(t,e,{key:n}={}){let r=To(t,n),s=To(e,n);if(!zH(r,s))throw new TypeError("Inputs have different types");if(!Ppe(r,s))throw new TypeError("Inputs don't have length");return[r,s].every(ft.plainObject)&&(r=Object.keys(r),s=Object.keys(s)),[r,s]}function NA(t){return([e,n])=>ft.array(t)?ei(t,n)||t.some(r=>ei(r,n)||ft.array(n)&&$6(n)(r)):ft.plainObject(t)&&t[e]?!!t[e]&&ei(t[e],n):ei(t,n)}function Ipe(t,e){return e.some(n=>!t.includes(n))}function CA(t){return e=>ft.array(t)?t.some(n=>ei(n,e)||ft.array(e)&&$6(e)(n)):ei(t,e)}function Vm(t,e){return ft.array(t)?t.some(n=>ei(n,e)):ei(t,e)}function $6(t){return e=>t.some(n=>ei(n,e))}function zH(...t){return t.every(ft.array)||t.every(ft.number)||t.every(ft.plainObject)||t.every(ft.string)}function To(t,e){return ft.plainObject(t)||ft.array(t)?ft.string(e)?e.split(".").reduce((r,s)=>r&&r[s],t):ft.number(e)?t[e]:t:t}function uy(t,e){if([t,e].some(ft.nullOrUndefined))throw new Error("Missing required parameters");if(![t,e].every(h=>ft.plainObject(h)||ft.array(h)))throw new Error("Expected plain objects or array");return{added:(h,m)=>{try{return OA(t,e,{key:h,type:"added",value:m})}catch{return!1}},changed:(h,m,g)=>{try{const x=To(t,h),y=To(e,h),w=ft.defined(m),S=ft.defined(g);if(w||S){const k=S?Vm(g,x):!Vm(m,x),j=Vm(m,y);return k&&j}return[x,y].every(ft.array)||[x,y].every(ft.plainObject)?!ei(x,y):x!==y}catch{return!1}},changedFrom:(h,m,g)=>{if(!ft.defined(h))return!1;try{const x=To(t,h),y=To(e,h),w=ft.defined(g);return Vm(m,x)&&(w?Vm(g,y):!w)}catch{return!1}},decreased:(h,m,g)=>{if(!ft.defined(h))return!1;try{return kA(t,e,{key:h,actual:m,previous:g,type:"decreased"})}catch{return!1}},emptied:h=>{try{const[m,g]=jA(t,e,{key:h});return!!m.length&&!g.length}catch{return!1}},filled:h=>{try{const[m,g]=jA(t,e,{key:h});return!m.length&&!!g.length}catch{return!1}},increased:(h,m,g)=>{if(!ft.defined(h))return!1;try{return kA(t,e,{key:h,actual:m,previous:g,type:"increased"})}catch{return!1}},removed:(h,m)=>{try{return OA(t,e,{key:h,type:"removed",value:m})}catch{return!1}}}}var xS,TA;function Lpe(){if(TA)return xS;TA=1;var t=new Error("Element already at target scroll position"),e=new Error("Scroll cancelled"),n=Math.min,r=Date.now;xS={left:s("scrollLeft"),top:s("scrollTop")};function s(l){return function(d,h,m,g){m=m||{},typeof m=="function"&&(g=m,m={}),typeof g!="function"&&(g=a);var x=r(),y=d[l],w=m.ease||i,S=isNaN(m.duration)?350:+m.duration,k=!1;return y===h?g(t,d[l]):requestAnimationFrame(N),j;function j(){k=!0}function N(T){if(k)return g(e,d[l]);var E=r(),_=n(1,(E-x)/S),A=w(_);d[l]=A*(h-y)+y,_<1?requestAnimationFrame(N):requestAnimationFrame(function(){g(null,d[l])})}}}function i(l){return .5*(1-Math.cos(Math.PI*l))}function a(){}return xS}var Bpe=Lpe();const Fpe=gd(Bpe);var yv={exports:{}},qpe=yv.exports,EA;function $pe(){return EA||(EA=1,(function(t){(function(e,n){t.exports?t.exports=n():e.Scrollparent=n()})(qpe,function(){function e(r){var s=getComputedStyle(r,null).getPropertyValue("overflow");return s.indexOf("scroll")>-1||s.indexOf("auto")>-1}function n(r){if(r instanceof HTMLElement||r instanceof SVGElement){for(var s=r.parentNode;s.parentNode;){if(e(s))return s;s=s.parentNode}return document.scrollingElement||document.documentElement}}return n})})(yv)),yv.exports}var Hpe=$pe();const IH=gd(Hpe);var vS,_A;function Qpe(){if(_A)return vS;_A=1;var t=function(r){return Object.prototype.hasOwnProperty.call(r,"props")},e=function(r,s){return r+n(s)},n=function(r){return r===null||typeof r=="boolean"||typeof r>"u"?"":typeof r=="number"?r.toString():typeof r=="string"?r:Array.isArray(r)?r.reduce(e,""):t(r)&&Object.prototype.hasOwnProperty.call(r.props,"children")?n(r.props.children):""};return n.default=n,vS=n,vS}var Vpe=Qpe();const AA=gd(Vpe);var yS,MA;function Upe(){if(MA)return yS;MA=1;var t=function(j){return e(j)&&!n(j)};function e(k){return!!k&&typeof k=="object"}function n(k){var j=Object.prototype.toString.call(k);return j==="[object RegExp]"||j==="[object Date]"||i(k)}var r=typeof Symbol=="function"&&Symbol.for,s=r?Symbol.for("react.element"):60103;function i(k){return k.$$typeof===s}function a(k){return Array.isArray(k)?[]:{}}function l(k,j){return j.clone!==!1&&j.isMergeableObject(k)?w(a(k),k,j):k}function c(k,j,N){return k.concat(j).map(function(T){return l(T,N)})}function d(k,j){if(!j.customMerge)return w;var N=j.customMerge(k);return typeof N=="function"?N:w}function h(k){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(k).filter(function(j){return Object.propertyIsEnumerable.call(k,j)}):[]}function m(k){return Object.keys(k).concat(h(k))}function g(k,j){try{return j in k}catch{return!1}}function x(k,j){return g(k,j)&&!(Object.hasOwnProperty.call(k,j)&&Object.propertyIsEnumerable.call(k,j))}function y(k,j,N){var T={};return N.isMergeableObject(k)&&m(k).forEach(function(E){T[E]=l(k[E],N)}),m(j).forEach(function(E){x(k,E)||(g(k,E)&&N.isMergeableObject(j[E])?T[E]=d(E,N)(k[E],j[E],N):T[E]=l(j[E],N))}),T}function w(k,j,N){N=N||{},N.arrayMerge=N.arrayMerge||c,N.isMergeableObject=N.isMergeableObject||t,N.cloneUnlessOtherwiseSpecified=l;var T=Array.isArray(j),E=Array.isArray(k),_=T===E;return _?T?N.arrayMerge(k,j,N):y(k,j,N):l(j,N)}w.all=function(j,N){if(!Array.isArray(j))throw new Error("first argument should be an array");return j.reduce(function(T,E){return w(T,E,N)},{})};var S=w;return yS=S,yS}var Wpe=Upe();const Va=gd(Wpe);var eg=typeof window<"u"&&typeof document<"u"&&typeof navigator<"u",Gpe=(function(){for(var t=["Edge","Trident","Firefox"],e=0;e=0)return 1;return 0})();function Xpe(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then(function(){e=!1,t()}))}}function Ype(t){var e=!1;return function(){e||(e=!0,setTimeout(function(){e=!1,t()},Gpe))}}var Kpe=eg&&window.Promise,Zpe=Kpe?Xpe:Ype;function LH(t){var e={};return t&&e.toString.call(t)==="[object Function]"}function bd(t,e){if(t.nodeType!==1)return[];var n=t.ownerDocument.defaultView,r=n.getComputedStyle(t,null);return e?r[e]:r}function H6(t){return t.nodeName==="HTML"?t:t.parentNode||t.host}function tg(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=bd(t),n=e.overflow,r=e.overflowX,s=e.overflowY;return/(auto|scroll|overlay)/.test(n+s+r)?t:tg(H6(t))}function BH(t){return t&&t.referenceNode?t.referenceNode:t}var RA=eg&&!!(window.MSInputMethodContext&&document.documentMode),DA=eg&&/MSIE 10/.test(navigator.userAgent);function Df(t){return t===11?RA:t===10?DA:RA||DA}function lf(t){if(!t)return document.documentElement;for(var e=Df(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var r=n&&n.nodeName;return!r||r==="BODY"||r==="HTML"?t?t.ownerDocument.documentElement:document.documentElement:["TH","TD","TABLE"].indexOf(n.nodeName)!==-1&&bd(n,"position")==="static"?lf(n):n}function Jpe(t){var e=t.nodeName;return e==="BODY"?!1:e==="HTML"||lf(t.firstElementChild)===t}function xO(t){return t.parentNode!==null?xO(t.parentNode):t}function dy(t,e){if(!t||!t.nodeType||!e||!e.nodeType)return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,r=n?t:e,s=n?e:t,i=document.createRange();i.setStart(r,0),i.setEnd(s,0);var a=i.commonAncestorContainer;if(t!==a&&e!==a||r.contains(s))return Jpe(a)?a:lf(a);var l=xO(t);return l.host?dy(l.host,e):dy(t,xO(e).host)}function cf(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"top",n=e==="top"?"scrollTop":"scrollLeft",r=t.nodeName;if(r==="BODY"||r==="HTML"){var s=t.ownerDocument.documentElement,i=t.ownerDocument.scrollingElement||s;return i[n]}return t[n]}function ege(t,e){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,r=cf(e,"top"),s=cf(e,"left"),i=n?-1:1;return t.top+=r*i,t.bottom+=r*i,t.left+=s*i,t.right+=s*i,t}function PA(t,e){var n=e==="x"?"Left":"Top",r=n==="Left"?"Right":"Bottom";return parseFloat(t["border"+n+"Width"])+parseFloat(t["border"+r+"Width"])}function zA(t,e,n,r){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],Df(10)?parseInt(n["offset"+t])+parseInt(r["margin"+(t==="Height"?"Top":"Left")])+parseInt(r["margin"+(t==="Height"?"Bottom":"Right")]):0)}function FH(t){var e=t.body,n=t.documentElement,r=Df(10)&&getComputedStyle(n);return{height:zA("Height",e,n,r),width:zA("Width",e,n,r)}}var tge=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},nge=(function(){function t(e,n){for(var r=0;r2&&arguments[2]!==void 0?arguments[2]:!1,r=Df(10),s=e.nodeName==="HTML",i=vO(t),a=vO(e),l=tg(t),c=bd(e),d=parseFloat(c.borderTopWidth),h=parseFloat(c.borderLeftWidth);n&&s&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var m=Jc({top:i.top-a.top-d,left:i.left-a.left-h,width:i.width,height:i.height});if(m.marginTop=0,m.marginLeft=0,!r&&s){var g=parseFloat(c.marginTop),x=parseFloat(c.marginLeft);m.top-=d-g,m.bottom-=d-g,m.left-=h-x,m.right-=h-x,m.marginTop=g,m.marginLeft=x}return(r&&!n?e.contains(l):e===l&&l.nodeName!=="BODY")&&(m=ege(m,e)),m}function rge(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=t.ownerDocument.documentElement,r=Q6(t,n),s=Math.max(n.clientWidth,window.innerWidth||0),i=Math.max(n.clientHeight,window.innerHeight||0),a=e?0:cf(n),l=e?0:cf(n,"left"),c={top:a-r.top+r.marginTop,left:l-r.left+r.marginLeft,width:s,height:i};return Jc(c)}function qH(t){var e=t.nodeName;if(e==="BODY"||e==="HTML")return!1;if(bd(t,"position")==="fixed")return!0;var n=H6(t);return n?qH(n):!1}function $H(t){if(!t||!t.parentElement||Df())return document.documentElement;for(var e=t.parentElement;e&&bd(e,"transform")==="none";)e=e.parentElement;return e||document.documentElement}function V6(t,e,n,r){var s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1,i={top:0,left:0},a=s?$H(t):dy(t,BH(e));if(r==="viewport")i=rge(a,s);else{var l=void 0;r==="scrollParent"?(l=tg(H6(e)),l.nodeName==="BODY"&&(l=t.ownerDocument.documentElement)):r==="window"?l=t.ownerDocument.documentElement:l=r;var c=Q6(l,a,s);if(l.nodeName==="HTML"&&!qH(a)){var d=FH(t.ownerDocument),h=d.height,m=d.width;i.top+=c.top-c.marginTop,i.bottom=h+c.top,i.left+=c.left-c.marginLeft,i.right=m+c.left}else i=c}n=n||0;var g=typeof n=="number";return i.left+=g?n:n.left||0,i.top+=g?n:n.top||0,i.right-=g?n:n.right||0,i.bottom-=g?n:n.bottom||0,i}function sge(t){var e=t.width,n=t.height;return e*n}function HH(t,e,n,r,s){var i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0;if(t.indexOf("auto")===-1)return t;var a=V6(n,r,i,s),l={top:{width:a.width,height:e.top-a.top},right:{width:a.right-e.right,height:a.height},bottom:{width:a.width,height:a.bottom-e.bottom},left:{width:e.left-a.left,height:a.height}},c=Object.keys(l).map(function(g){return wa({key:g},l[g],{area:sge(l[g])})}).sort(function(g,x){return x.area-g.area}),d=c.filter(function(g){var x=g.width,y=g.height;return x>=n.clientWidth&&y>=n.clientHeight}),h=d.length>0?d[0].key:c[0].key,m=t.split("-")[1];return h+(m?"-"+m:"")}function QH(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,s=r?$H(e):dy(e,BH(n));return Q6(n,s,r)}function VH(t){var e=t.ownerDocument.defaultView,n=e.getComputedStyle(t),r=parseFloat(n.marginTop||0)+parseFloat(n.marginBottom||0),s=parseFloat(n.marginLeft||0)+parseFloat(n.marginRight||0),i={width:t.offsetWidth+s,height:t.offsetHeight+r};return i}function hy(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,function(n){return e[n]})}function UH(t,e,n){n=n.split("-")[0];var r=VH(t),s={width:r.width,height:r.height},i=["right","left"].indexOf(n)!==-1,a=i?"top":"left",l=i?"left":"top",c=i?"height":"width",d=i?"width":"height";return s[a]=e[a]+e[c]/2-r[c]/2,n===l?s[l]=e[l]-r[d]:s[l]=e[hy(l)],s}function ng(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function ige(t,e,n){if(Array.prototype.findIndex)return t.findIndex(function(s){return s[e]===n});var r=ng(t,function(s){return s[e]===n});return t.indexOf(r)}function WH(t,e,n){var r=n===void 0?t:t.slice(0,ige(t,"name",n));return r.forEach(function(s){s.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var i=s.function||s.fn;s.enabled&&LH(i)&&(e.offsets.popper=Jc(e.offsets.popper),e.offsets.reference=Jc(e.offsets.reference),e=i(e,s))}),e}function age(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=QH(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=HH(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=UH(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=WH(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}function GH(t,e){return t.some(function(n){var r=n.name,s=n.enabled;return s&&r===e})}function U6(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),r=0;ra[x]&&(t.offsets.popper[m]+=l[m]+y-a[x]),t.offsets.popper=Jc(t.offsets.popper);var w=l[m]+l[d]/2-y/2,S=bd(t.instance.popper),k=parseFloat(S["margin"+h]),j=parseFloat(S["border"+h+"Width"]),N=w-t.offsets.popper[m]-k-j;return N=Math.max(Math.min(a[d]-y,N),0),t.arrowElement=r,t.offsets.arrow=(n={},uf(n,m,Math.round(N)),uf(n,g,""),n),t}function yge(t){return t==="end"?"start":t==="start"?"end":t}var ZH=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],bS=ZH.slice(3);function IA(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=bS.indexOf(t),r=bS.slice(n+1).concat(bS.slice(0,n));return e?r.reverse():r}var wS={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function bge(t,e){if(GH(t.instance.modifiers,"inner")||t.flipped&&t.placement===t.originalPlacement)return t;var n=V6(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),r=t.placement.split("-")[0],s=hy(r),i=t.placement.split("-")[1]||"",a=[];switch(e.behavior){case wS.FLIP:a=[r,s];break;case wS.CLOCKWISE:a=IA(r);break;case wS.COUNTERCLOCKWISE:a=IA(r,!0);break;default:a=e.behavior}return a.forEach(function(l,c){if(r!==l||a.length===c+1)return t;r=t.placement.split("-")[0],s=hy(r);var d=t.offsets.popper,h=t.offsets.reference,m=Math.floor,g=r==="left"&&m(d.right)>m(h.left)||r==="right"&&m(d.left)m(h.top)||r==="bottom"&&m(d.top)m(n.right),w=m(d.top)m(n.bottom),k=r==="left"&&x||r==="right"&&y||r==="top"&&w||r==="bottom"&&S,j=["top","bottom"].indexOf(r)!==-1,N=!!e.flipVariations&&(j&&i==="start"&&x||j&&i==="end"&&y||!j&&i==="start"&&w||!j&&i==="end"&&S),T=!!e.flipVariationsByContent&&(j&&i==="start"&&y||j&&i==="end"&&x||!j&&i==="start"&&S||!j&&i==="end"&&w),E=N||T;(g||k||E)&&(t.flipped=!0,(g||k)&&(r=a[c+1]),E&&(i=yge(i)),t.placement=r+(i?"-"+i:""),t.offsets.popper=wa({},t.offsets.popper,UH(t.instance.popper,t.offsets.reference,t.placement)),t=WH(t.instance.modifiers,t,"flip"))}),t}function wge(t){var e=t.offsets,n=e.popper,r=e.reference,s=t.placement.split("-")[0],i=Math.floor,a=["top","bottom"].indexOf(s)!==-1,l=a?"right":"bottom",c=a?"left":"top",d=a?"width":"height";return n[l]i(r[l])&&(t.offsets.popper[c]=i(r[l])),t}function Sge(t,e,n,r){var s=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),i=+s[1],a=s[2];if(!i)return t;if(a.indexOf("%")===0){var l=void 0;switch(a){case"%p":l=n;break;case"%":case"%r":default:l=r}var c=Jc(l);return c[e]/100*i}else if(a==="vh"||a==="vw"){var d=void 0;return a==="vh"?d=Math.max(document.documentElement.clientHeight,window.innerHeight||0):d=Math.max(document.documentElement.clientWidth,window.innerWidth||0),d/100*i}else return i}function kge(t,e,n,r){var s=[0,0],i=["right","left"].indexOf(r)!==-1,a=t.split(/(\+|\-)/).map(function(h){return h.trim()}),l=a.indexOf(ng(a,function(h){return h.search(/,|\s/)!==-1}));a[l]&&a[l].indexOf(",")===-1&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var c=/\s*,\s*|\s+/,d=l!==-1?[a.slice(0,l).concat([a[l].split(c)[0]]),[a[l].split(c)[1]].concat(a.slice(l+1))]:[a];return d=d.map(function(h,m){var g=(m===1?!i:i)?"height":"width",x=!1;return h.reduce(function(y,w){return y[y.length-1]===""&&["+","-"].indexOf(w)!==-1?(y[y.length-1]=w,x=!0,y):x?(y[y.length-1]+=w,x=!1,y):y.concat(w)},[]).map(function(y){return Sge(y,g,e,n)})}),d.forEach(function(h,m){h.forEach(function(g,x){W6(g)&&(s[m]+=g*(h[x-1]==="-"?-1:1))})}),s}function Oge(t,e){var n=e.offset,r=t.placement,s=t.offsets,i=s.popper,a=s.reference,l=r.split("-")[0],c=void 0;return W6(+n)?c=[+n,0]:c=kge(n,i,a,l),l==="left"?(i.top+=c[0],i.left-=c[1]):l==="right"?(i.top+=c[0],i.left+=c[1]):l==="top"?(i.left+=c[0],i.top-=c[1]):l==="bottom"&&(i.left+=c[0],i.top+=c[1]),t.popper=i,t}function jge(t,e){var n=e.boundariesElement||lf(t.instance.popper);t.instance.reference===n&&(n=lf(n));var r=U6("transform"),s=t.instance.popper.style,i=s.top,a=s.left,l=s[r];s.top="",s.left="",s[r]="";var c=V6(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);s.top=i,s.left=a,s[r]=l,e.boundaries=c;var d=e.priority,h=t.offsets.popper,m={primary:function(x){var y=h[x];return h[x]c[x]&&!e.escapeWithReference&&(w=Math.min(h[y],c[x]-(x==="right"?h.width:h.height))),uf({},y,w)}};return d.forEach(function(g){var x=["left","top"].indexOf(g)!==-1?"primary":"secondary";h=wa({},h,m[x](g))}),t.offsets.popper=h,t}function Nge(t){var e=t.placement,n=e.split("-")[0],r=e.split("-")[1];if(r){var s=t.offsets,i=s.reference,a=s.popper,l=["bottom","top"].indexOf(n)!==-1,c=l?"left":"top",d=l?"width":"height",h={start:uf({},c,i[c]),end:uf({},c,i[c]+i[d]-a[d])};t.offsets.popper=wa({},a,h[r])}return t}function Cge(t){if(!KH(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=ng(t.instance.modifiers,function(r){return r.name==="preventOverflow"}).boundaries;if(e.bottomn.right||e.top>n.bottom||e.right2&&arguments[2]!==void 0?arguments[2]:{};tge(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(r.update)},this.update=Zpe(this.update.bind(this)),this.options=wa({},t.Defaults,s),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(wa({},t.Defaults.modifiers,s.modifiers)).forEach(function(a){r.options.modifiers[a]=wa({},t.Defaults.modifiers[a]||{},s.modifiers?s.modifiers[a]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(a){return wa({name:a},r.options.modifiers[a])}).sort(function(a,l){return a.order-l.order}),this.modifiers.forEach(function(a){a.enabled&&LH(a.onLoad)&&a.onLoad(r.reference,r.popper,r.options,a,r.state)}),this.update();var i=this.options.eventsEnabled;i&&this.enableEventListeners(),this.state.eventsEnabled=i}return nge(t,[{key:"update",value:function(){return age.call(this)}},{key:"destroy",value:function(){return oge.call(this)}},{key:"enableEventListeners",value:function(){return cge.call(this)}},{key:"disableEventListeners",value:function(){return dge.call(this)}}]),t})();lp.Utils=(typeof window<"u"?window:global).PopperUtils;lp.placements=ZH;lp.Defaults=_ge;var Age=["innerHTML","ownerDocument","style","attributes","nodeValue"],Mge=["Array","ArrayBuffer","AsyncFunction","AsyncGenerator","AsyncGeneratorFunction","Date","Error","Function","Generator","GeneratorFunction","HTMLElement","Map","Object","Promise","RegExp","Set","WeakMap","WeakSet"],Rge=["bigint","boolean","null","number","string","symbol","undefined"];function Eb(t){var e=Object.prototype.toString.call(t).slice(8,-1);if(/HTML\w+Element/.test(e))return"HTMLElement";if(Dge(e))return e}function so(t){return function(e){return Eb(e)===t}}function Dge(t){return Mge.includes(t)}function Pf(t){return function(e){return typeof e===t}}function Pge(t){return Rge.includes(t)}function _e(t){if(t===null)return"null";switch(typeof t){case"bigint":return"bigint";case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"symbol":return"symbol";case"undefined":return"undefined"}if(_e.array(t))return"Array";if(_e.plainFunction(t))return"Function";var e=Eb(t);return e||"Object"}_e.array=Array.isArray;_e.arrayOf=function(t,e){return!_e.array(t)&&!_e.function(e)?!1:t.every(function(n){return e(n)})};_e.asyncGeneratorFunction=function(t){return Eb(t)==="AsyncGeneratorFunction"};_e.asyncFunction=so("AsyncFunction");_e.bigint=Pf("bigint");_e.boolean=function(t){return t===!0||t===!1};_e.date=so("Date");_e.defined=function(t){return!_e.undefined(t)};_e.domElement=function(t){return _e.object(t)&&!_e.plainObject(t)&&t.nodeType===1&&_e.string(t.nodeName)&&Age.every(function(e){return e in t})};_e.empty=function(t){return _e.string(t)&&t.length===0||_e.array(t)&&t.length===0||_e.object(t)&&!_e.map(t)&&!_e.set(t)&&Object.keys(t).length===0||_e.set(t)&&t.size===0||_e.map(t)&&t.size===0};_e.error=so("Error");_e.function=Pf("function");_e.generator=function(t){return _e.iterable(t)&&_e.function(t.next)&&_e.function(t.throw)};_e.generatorFunction=so("GeneratorFunction");_e.instanceOf=function(t,e){return!t||!e?!1:Object.getPrototypeOf(t)===e.prototype};_e.iterable=function(t){return!_e.nullOrUndefined(t)&&_e.function(t[Symbol.iterator])};_e.map=so("Map");_e.nan=function(t){return Number.isNaN(t)};_e.null=function(t){return t===null};_e.nullOrUndefined=function(t){return _e.null(t)||_e.undefined(t)};_e.number=function(t){return Pf("number")(t)&&!_e.nan(t)};_e.numericString=function(t){return _e.string(t)&&t.length>0&&!Number.isNaN(Number(t))};_e.object=function(t){return!_e.nullOrUndefined(t)&&(_e.function(t)||typeof t=="object")};_e.oneOf=function(t,e){return _e.array(t)?t.indexOf(e)>-1:!1};_e.plainFunction=so("Function");_e.plainObject=function(t){if(Eb(t)!=="Object")return!1;var e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};_e.primitive=function(t){return _e.null(t)||Pge(typeof t)};_e.promise=so("Promise");_e.propertyOf=function(t,e,n){if(!_e.object(t)||!e)return!1;var r=t[e];return _e.function(n)?n(r):_e.defined(r)};_e.regexp=so("RegExp");_e.set=so("Set");_e.string=Pf("string");_e.symbol=Pf("symbol");_e.undefined=Pf("undefined");_e.weakMap=so("WeakMap");_e.weakSet=so("WeakSet");function JH(t){return function(e){return typeof e===t}}var zge=JH("function"),Ige=function(t){return t===null},LA=function(t){return Object.prototype.toString.call(t).slice(8,-1)==="RegExp"},BA=function(t){return!Lge(t)&&!Ige(t)&&(zge(t)||typeof t=="object")},Lge=JH("undefined"),bO=function(t){var e=typeof Symbol=="function"&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")};function Bge(t,e){var n=t.length;if(n!==e.length)return!1;for(var r=n;r--!==0;)if(!bi(t[r],e[r]))return!1;return!0}function Fge(t,e){if(t.byteLength!==e.byteLength)return!1;for(var n=new DataView(t.buffer),r=new DataView(e.buffer),s=t.byteLength;s--;)if(n.getUint8(s)!==r.getUint8(s))return!1;return!0}function qge(t,e){var n,r,s,i;if(t.size!==e.size)return!1;try{for(var a=bO(t.entries()),l=a.next();!l.done;l=a.next()){var c=l.value;if(!e.has(c[0]))return!1}}catch(m){n={error:m}}finally{try{l&&!l.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}try{for(var d=bO(t.entries()),h=d.next();!h.done;h=d.next()){var c=h.value;if(!bi(c[1],e.get(c[0])))return!1}}catch(m){s={error:m}}finally{try{h&&!h.done&&(i=d.return)&&i.call(d)}finally{if(s)throw s.error}}return!0}function $ge(t,e){var n,r;if(t.size!==e.size)return!1;try{for(var s=bO(t.entries()),i=s.next();!i.done;i=s.next()){var a=i.value;if(!e.has(a[0]))return!1}}catch(l){n={error:l}}finally{try{i&&!i.done&&(r=s.return)&&r.call(s)}finally{if(n)throw n.error}}return!0}function bi(t,e){if(t===e)return!0;if(t&&BA(t)&&e&&BA(e)){if(t.constructor!==e.constructor)return!1;if(Array.isArray(t)&&Array.isArray(e))return Bge(t,e);if(t instanceof Map&&e instanceof Map)return qge(t,e);if(t instanceof Set&&e instanceof Set)return $ge(t,e);if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(e))return Fge(t,e);if(LA(t)&&LA(e))return t.source===e.source&&t.flags===e.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===e.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===e.toString();var n=Object.keys(t),r=Object.keys(e);if(n.length!==r.length)return!1;for(var s=n.length;s--!==0;)if(!Object.prototype.hasOwnProperty.call(e,n[s]))return!1;for(var s=n.length;s--!==0;){var i=n[s];if(!(i==="_owner"&&t.$$typeof)&&!bi(t[i],e[i]))return!1}return!0}return Number.isNaN(t)&&Number.isNaN(e)?!0:t===e}function Hge(){for(var t=[],e=0;ec);return _e.undefined(r)||(d=d&&c===r),_e.undefined(i)||(d=d&&l===i),d}function qA(t,e,n){var r=n.key,s=n.type,i=n.value,a=Eo(t,r),l=Eo(e,r),c=s==="added"?a:l,d=s==="added"?l:a;if(!_e.nullOrUndefined(i)){if(_e.defined(c)){if(_e.array(c)||_e.plainObject(c))return Qge(c,d,i)}else return bi(d,i);return!1}return[a,l].every(_e.array)?!d.every(G6(c)):[a,l].every(_e.plainObject)?Vge(Object.keys(c),Object.keys(d)):![a,l].every(function(h){return _e.primitive(h)&&_e.defined(h)})&&(s==="added"?!_e.defined(a)&&_e.defined(l):_e.defined(a)&&!_e.defined(l))}function $A(t,e,n){var r=n===void 0?{}:n,s=r.key,i=Eo(t,s),a=Eo(e,s);if(!eQ(i,a))throw new TypeError("Inputs have different types");if(!Hge(i,a))throw new TypeError("Inputs don't have length");return[i,a].every(_e.plainObject)&&(i=Object.keys(i),a=Object.keys(a)),[i,a]}function HA(t){return function(e){var n=e[0],r=e[1];return _e.array(t)?bi(t,r)||t.some(function(s){return bi(s,r)||_e.array(r)&&G6(r)(s)}):_e.plainObject(t)&&t[n]?!!t[n]&&bi(t[n],r):bi(t,r)}}function Vge(t,e){return e.some(function(n){return!t.includes(n)})}function QA(t){return function(e){return _e.array(t)?t.some(function(n){return bi(n,e)||_e.array(e)&&G6(e)(n)}):bi(t,e)}}function Um(t,e){return _e.array(t)?t.some(function(n){return bi(n,e)}):bi(t,e)}function G6(t){return function(e){return t.some(function(n){return bi(n,e)})}}function eQ(){for(var t=[],e=0;e"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Xge(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i=0)&&(n[s]=t[s]);return n}function tQ(t,e){if(t==null)return{};var n=Xge(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function Nl(t){if(t===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function Yge(t,e){if(e&&(typeof e=="object"||typeof e=="function"))return e;if(e!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return Nl(t)}function ag(t){var e=Gge();return function(){var r=fy(t),s;if(e){var i=fy(this).constructor;s=Reflect.construct(r,arguments,i)}else s=r.apply(this,arguments);return Yge(this,s)}}function Kge(t,e){if(typeof t!="object"||t===null)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function nQ(t){var e=Kge(t,"string");return typeof e=="symbol"?e:String(e)}var Zge={flip:{padding:20},preventOverflow:{padding:10}},Jge="The typeValidator argument must be a function with the signature function(props, propName, componentName).",exe="The error message is optional, but must be a string if provided.";function txe(t,e,n,r){return typeof t=="boolean"?t:typeof t=="function"?t(e,n,r):t?!!t:!1}function nxe(t,e){return Object.hasOwnProperty.call(t,e)}function rxe(t,e,n,r){return new Error("Required ".concat(t[e]," `").concat(e,"` was not specified in `").concat(n,"`."))}function sxe(t,e){if(typeof t!="function")throw new TypeError(Jge);if(e&&typeof e!="string")throw new TypeError(exe)}function UA(t,e,n){return sxe(t,n),function(r,s,i){for(var a=arguments.length,l=new Array(a>3?a-3:0),c=3;c3&&arguments[3]!==void 0?arguments[3]:!1;t.addEventListener(e,n,r)}function axe(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;t.removeEventListener(e,n,r)}function oxe(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,s;s=function(a){n(a),axe(t,e,s)},ixe(t,e,s,r)}function WA(){}var rQ=(function(t){ig(n,t);var e=ag(n);function n(){return rg(this,n),e.apply(this,arguments)}return sg(n,[{key:"componentDidMount",value:function(){vo()&&(this.node||this.appendNode(),Wm||this.renderPortal())}},{key:"componentDidUpdate",value:function(){vo()&&(Wm||this.renderPortal())}},{key:"componentWillUnmount",value:function(){!vo()||!this.node||(Wm||J1.unmountComponentAtNode(this.node),this.node&&this.node.parentNode===document.body&&(document.body.removeChild(this.node),this.node=void 0))}},{key:"appendNode",value:function(){var s=this.props,i=s.id,a=s.zIndex;this.node||(this.node=document.createElement("div"),i&&(this.node.id=i),a&&(this.node.style.zIndex=a),document.body.appendChild(this.node))}},{key:"renderPortal",value:function(){if(!vo())return null;var s=this.props,i=s.children,a=s.setRef;if(this.node||this.appendNode(),Wm)return J1.createPortal(i,this.node);var l=J1.unstable_renderSubtreeIntoContainer(this,i.length>1?ae.createElement("div",null,i):i[0],this.node);return a(l),null}},{key:"renderReact16",value:function(){var s=this.props,i=s.hasChildren,a=s.placement,l=s.target;return i?this.renderPortal():l||a==="center"?this.renderPortal():null}},{key:"render",value:function(){return Wm?this.renderReact16():null}}]),n})(ae.Component);qs(rQ,"propTypes",{children:Ge.oneOfType([Ge.element,Ge.array]),hasChildren:Ge.bool,id:Ge.oneOfType([Ge.string,Ge.number]),placement:Ge.string,setRef:Ge.func.isRequired,target:Ge.oneOfType([Ge.object,Ge.string]),zIndex:Ge.number});var sQ=(function(t){ig(n,t);var e=ag(n);function n(){return rg(this,n),e.apply(this,arguments)}return sg(n,[{key:"parentStyle",get:function(){var s=this.props,i=s.placement,a=s.styles,l=a.arrow.length,c={pointerEvents:"none",position:"absolute",width:"100%"};return i.startsWith("top")?(c.bottom=0,c.left=0,c.right=0,c.height=l):i.startsWith("bottom")?(c.left=0,c.right=0,c.top=0,c.height=l):i.startsWith("left")?(c.right=0,c.top=0,c.bottom=0):i.startsWith("right")&&(c.left=0,c.top=0),c}},{key:"render",value:function(){var s=this.props,i=s.placement,a=s.setArrowRef,l=s.styles,c=l.arrow,d=c.color,h=c.display,m=c.length,g=c.margin,x=c.position,y=c.spread,w={display:h,position:x},S,k=y,j=m;return i.startsWith("top")?(S="0,0 ".concat(k/2,",").concat(j," ").concat(k,",0"),w.bottom=0,w.marginLeft=g,w.marginRight=g):i.startsWith("bottom")?(S="".concat(k,",").concat(j," ").concat(k/2,",0 0,").concat(j),w.top=0,w.marginLeft=g,w.marginRight=g):i.startsWith("left")?(j=y,k=m,S="0,0 ".concat(k,",").concat(j/2," 0,").concat(j),w.right=0,w.marginTop=g,w.marginBottom=g):i.startsWith("right")&&(j=y,k=m,S="".concat(k,",").concat(j," ").concat(k,",0 0,").concat(j/2),w.left=0,w.marginTop=g,w.marginBottom=g),ae.createElement("div",{className:"__floater__arrow",style:this.parentStyle},ae.createElement("span",{ref:a,style:w},ae.createElement("svg",{width:k,height:j,version:"1.1",xmlns:"http://www.w3.org/2000/svg"},ae.createElement("polygon",{points:S,fill:d}))))}}]),n})(ae.Component);qs(sQ,"propTypes",{placement:Ge.string.isRequired,setArrowRef:Ge.func.isRequired,styles:Ge.object.isRequired});var lxe=["color","height","width"];function iQ(t){var e=t.handleClick,n=t.styles,r=n.color,s=n.height,i=n.width,a=tQ(n,lxe);return ae.createElement("button",{"aria-label":"close",onClick:e,style:a,type:"button"},ae.createElement("svg",{width:"".concat(i,"px"),height:"".concat(s,"px"),viewBox:"0 0 18 18",version:"1.1",xmlns:"http://www.w3.org/2000/svg",preserveAspectRatio:"xMidYMid"},ae.createElement("g",null,ae.createElement("path",{d:"M8.13911129,9.00268191 L0.171521827,17.0258467 C-0.0498027049,17.248715 -0.0498027049,17.6098394 0.171521827,17.8327545 C0.28204354,17.9443526 0.427188206,17.9998706 0.572051765,17.9998706 C0.71714958,17.9998706 0.862013139,17.9443526 0.972581703,17.8327545 L9.0000937,9.74924618 L17.0276057,17.8327545 C17.1384085,17.9443526 17.2832721,17.9998706 17.4281356,17.9998706 C17.5729992,17.9998706 17.718097,17.9443526 17.8286656,17.8327545 C18.0499901,17.6098862 18.0499901,17.2487618 17.8286656,17.0258467 L9.86135722,9.00268191 L17.8340066,0.973848225 C18.0553311,0.750979934 18.0553311,0.389855532 17.8340066,0.16694039 C17.6126821,-0.0556467968 17.254037,-0.0556467968 17.0329467,0.16694039 L9.00042166,8.25611765 L0.967006424,0.167268345 C0.745681892,-0.0553188426 0.387317931,-0.0553188426 0.165993399,0.167268345 C-0.0553311331,0.390136635 -0.0553311331,0.751261038 0.165993399,0.974176179 L8.13920499,9.00268191 L8.13911129,9.00268191 Z",fill:r}))))}iQ.propTypes={handleClick:Ge.func.isRequired,styles:Ge.object.isRequired};function aQ(t){var e=t.content,n=t.footer,r=t.handleClick,s=t.open,i=t.positionWrapper,a=t.showCloseButton,l=t.title,c=t.styles,d={content:ae.isValidElement(e)?e:ae.createElement("div",{className:"__floater__content",style:c.content},e)};return l&&(d.title=ae.isValidElement(l)?l:ae.createElement("div",{className:"__floater__title",style:c.title},l)),n&&(d.footer=ae.isValidElement(n)?n:ae.createElement("div",{className:"__floater__footer",style:c.footer},n)),(a||i)&&!_e.boolean(s)&&(d.close=ae.createElement(iQ,{styles:c.close,handleClick:r})),ae.createElement("div",{className:"__floater__container",style:c.container},d.close,d.title,d.content,d.footer)}aQ.propTypes={content:Ge.node.isRequired,footer:Ge.node,handleClick:Ge.func.isRequired,open:Ge.bool,positionWrapper:Ge.bool.isRequired,showCloseButton:Ge.bool.isRequired,styles:Ge.object.isRequired,title:Ge.node};var oQ=(function(t){ig(n,t);var e=ag(n);function n(){return rg(this,n),e.apply(this,arguments)}return sg(n,[{key:"style",get:function(){var s=this.props,i=s.disableAnimation,a=s.component,l=s.placement,c=s.hideArrow,d=s.status,h=s.styles,m=h.arrow.length,g=h.floater,x=h.floaterCentered,y=h.floaterClosing,w=h.floaterOpening,S=h.floaterWithAnimation,k=h.floaterWithComponent,j={};return c||(l.startsWith("top")?j.padding="0 0 ".concat(m,"px"):l.startsWith("bottom")?j.padding="".concat(m,"px 0 0"):l.startsWith("left")?j.padding="0 ".concat(m,"px 0 0"):l.startsWith("right")&&(j.padding="0 0 0 ".concat(m,"px"))),[On.OPENING,On.OPEN].indexOf(d)!==-1&&(j=br(br({},j),w)),d===On.CLOSING&&(j=br(br({},j),y)),d===On.OPEN&&!i&&(j=br(br({},j),S)),l==="center"&&(j=br(br({},j),x)),a&&(j=br(br({},j),k)),br(br({},g),j)}},{key:"render",value:function(){var s=this.props,i=s.component,a=s.handleClick,l=s.hideArrow,c=s.setFloaterRef,d=s.status,h={},m=["__floater"];return i?ae.isValidElement(i)?h.content=ae.cloneElement(i,{closeFn:a}):h.content=i({closeFn:a}):h.content=ae.createElement(aQ,this.props),d===On.OPEN&&m.push("__floater__open"),l||(h.arrow=ae.createElement(sQ,this.props)),ae.createElement("div",{ref:c,className:m.join(" "),style:this.style},ae.createElement("div",{className:"__floater__body"},h.content,h.arrow))}}]),n})(ae.Component);qs(oQ,"propTypes",{component:Ge.oneOfType([Ge.func,Ge.element]),content:Ge.node,disableAnimation:Ge.bool.isRequired,footer:Ge.node,handleClick:Ge.func.isRequired,hideArrow:Ge.bool.isRequired,open:Ge.bool,placement:Ge.string.isRequired,positionWrapper:Ge.bool.isRequired,setArrowRef:Ge.func.isRequired,setFloaterRef:Ge.func.isRequired,showCloseButton:Ge.bool,status:Ge.string.isRequired,styles:Ge.object.isRequired,title:Ge.node});var lQ=(function(t){ig(n,t);var e=ag(n);function n(){return rg(this,n),e.apply(this,arguments)}return sg(n,[{key:"render",value:function(){var s=this.props,i=s.children,a=s.handleClick,l=s.handleMouseEnter,c=s.handleMouseLeave,d=s.setChildRef,h=s.setWrapperRef,m=s.style,g=s.styles,x;if(i)if(ae.Children.count(i)===1)if(!ae.isValidElement(i))x=ae.createElement("span",null,i);else{var y=_e.function(i.type)?"innerRef":"ref";x=ae.cloneElement(ae.Children.only(i),qs({},y,d))}else x=i;return x?ae.createElement("span",{ref:h,style:br(br({},g),m),onClick:a,onMouseEnter:l,onMouseLeave:c},x):null}}]),n})(ae.Component);qs(lQ,"propTypes",{children:Ge.node,handleClick:Ge.func.isRequired,handleMouseEnter:Ge.func.isRequired,handleMouseLeave:Ge.func.isRequired,setChildRef:Ge.func.isRequired,setWrapperRef:Ge.func.isRequired,style:Ge.object,styles:Ge.object.isRequired});var cxe={zIndex:100};function uxe(t){var e=Va(cxe,t.options||{});return{wrapper:{cursor:"help",display:"inline-flex",flexDirection:"column",zIndex:e.zIndex},wrapperPosition:{left:-1e3,position:"absolute",top:-1e3,visibility:"hidden"},floater:{display:"inline-block",filter:"drop-shadow(0 0 3px rgba(0, 0, 0, 0.3))",maxWidth:300,opacity:0,position:"relative",transition:"opacity 0.3s",visibility:"hidden",zIndex:e.zIndex},floaterOpening:{opacity:1,visibility:"visible"},floaterWithAnimation:{opacity:1,transition:"opacity 0.3s, transform 0.2s",visibility:"visible"},floaterWithComponent:{maxWidth:"100%"},floaterClosing:{opacity:0,visibility:"visible"},floaterCentered:{left:"50%",position:"fixed",top:"50%",transform:"translate(-50%, -50%)"},container:{backgroundColor:"#fff",color:"#666",minHeight:60,minWidth:200,padding:20,position:"relative",zIndex:10},title:{borderBottom:"1px solid #555",color:"#555",fontSize:18,marginBottom:5,paddingBottom:6,paddingRight:18},content:{fontSize:15},close:{backgroundColor:"transparent",border:0,borderRadius:0,color:"#555",fontSize:0,height:15,outline:"none",padding:10,position:"absolute",right:0,top:0,width:15,WebkitAppearance:"none"},footer:{borderTop:"1px solid #ccc",fontSize:13,marginTop:10,paddingTop:5},arrow:{color:"#fff",display:"inline-flex",length:16,margin:8,position:"absolute",spread:32},options:e}}var dxe=["arrow","flip","offset"],hxe=["position","top","right","bottom","left"],X6=(function(t){ig(n,t);var e=ag(n);function n(r){var s;return rg(this,n),s=e.call(this,r),qs(Nl(s),"setArrowRef",function(i){s.arrowRef=i}),qs(Nl(s),"setChildRef",function(i){s.childRef=i}),qs(Nl(s),"setFloaterRef",function(i){s.floaterRef=i}),qs(Nl(s),"setWrapperRef",function(i){s.wrapperRef=i}),qs(Nl(s),"handleTransitionEnd",function(){var i=s.state.status,a=s.props.callback;s.wrapperPopper&&s.wrapperPopper.instance.update(),s.setState({status:i===On.OPENING?On.OPEN:On.IDLE},function(){var l=s.state.status;a(l===On.OPEN?"open":"close",s.props)})}),qs(Nl(s),"handleClick",function(){var i=s.props,a=i.event,l=i.open;if(!_e.boolean(l)){var c=s.state,d=c.positionWrapper,h=c.status;(s.event==="click"||s.event==="hover"&&d)&&(O1({title:"click",data:[{event:a,status:h===On.OPEN?"closing":"opening"}],debug:s.debug}),s.toggle())}}),qs(Nl(s),"handleMouseEnter",function(){var i=s.props,a=i.event,l=i.open;if(!(_e.boolean(l)||SS())){var c=s.state.status;s.event==="hover"&&c===On.IDLE&&(O1({title:"mouseEnter",data:[{key:"originalEvent",value:a}],debug:s.debug}),clearTimeout(s.eventDelayTimeout),s.toggle())}}),qs(Nl(s),"handleMouseLeave",function(){var i=s.props,a=i.event,l=i.eventDelay,c=i.open;if(!(_e.boolean(c)||SS())){var d=s.state,h=d.status,m=d.positionWrapper;s.event==="hover"&&(O1({title:"mouseLeave",data:[{key:"originalEvent",value:a}],debug:s.debug}),l?[On.OPENING,On.OPEN].indexOf(h)!==-1&&!m&&!s.eventDelayTimeout&&(s.eventDelayTimeout=setTimeout(function(){delete s.eventDelayTimeout,s.toggle()},l*1e3)):s.toggle(On.IDLE))}}),s.state={currentPlacement:r.placement,needsUpdate:!1,positionWrapper:r.wrapperOptions.position&&!!r.target,status:On.INIT,statusWrapper:On.INIT},s._isMounted=!1,s.hasMounted=!1,vo()&&window.addEventListener("load",function(){s.popper&&s.popper.instance.update(),s.wrapperPopper&&s.wrapperPopper.instance.update()}),s}return sg(n,[{key:"componentDidMount",value:function(){if(vo()){var s=this.state.positionWrapper,i=this.props,a=i.children,l=i.open,c=i.target;this._isMounted=!0,O1({title:"init",data:{hasChildren:!!a,hasTarget:!!c,isControlled:_e.boolean(l),positionWrapper:s,target:this.target,floater:this.floaterRef},debug:this.debug}),this.hasMounted||(this.initPopper(),this.hasMounted=!0),!a&&c&&_e.boolean(l)}}},{key:"componentDidUpdate",value:function(s,i){if(vo()){var a=this.props,l=a.autoOpen,c=a.open,d=a.target,h=a.wrapperOptions,m=Uge(i,this.state),g=m.changedFrom,x=m.changed;if(s.open!==c){var y;_e.boolean(c)&&(y=c?On.OPENING:On.CLOSING),this.toggle(y)}(s.wrapperOptions.position!==h.position||s.target!==d)&&this.changeWrapperPosition(this.props),x("status",On.IDLE)&&c?this.toggle(On.OPEN):g("status",On.INIT,On.IDLE)&&l&&this.toggle(On.OPEN),this.popper&&x("status",On.OPENING)&&this.popper.instance.update(),this.floaterRef&&(x("status",On.OPENING)||x("status",On.CLOSING))&&oxe(this.floaterRef,"transitionend",this.handleTransitionEnd),x("needsUpdate",!0)&&this.rebuildPopper()}}},{key:"componentWillUnmount",value:function(){vo()&&(this._isMounted=!1,this.popper&&this.popper.instance.destroy(),this.wrapperPopper&&this.wrapperPopper.instance.destroy())}},{key:"initPopper",value:function(){var s=this,i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.target,a=this.state.positionWrapper,l=this.props,c=l.disableFlip,d=l.getPopper,h=l.hideArrow,m=l.offset,g=l.placement,x=l.wrapperOptions,y=g==="top"||g==="bottom"?"flip":["right","bottom-end","top-end","left","top-start","bottom-start"];if(g==="center")this.setState({status:On.IDLE});else if(i&&this.floaterRef){var w=this.options,S=w.arrow,k=w.flip,j=w.offset,N=tQ(w,dxe);new lp(i,this.floaterRef,{placement:g,modifiers:br({arrow:br({enabled:!h,element:this.arrowRef},S),flip:br({enabled:!c,behavior:y},k),offset:br({offset:"0, ".concat(m,"px")},j)},N),onCreate:function(_){var A;if(s.popper=_,!((A=s.floaterRef)!==null&&A!==void 0&&A.isConnected)){s.setState({needsUpdate:!0});return}d(_,"floater"),s._isMounted&&s.setState({currentPlacement:_.placement,status:On.IDLE}),g!==_.placement&&setTimeout(function(){_.instance.update()},1)},onUpdate:function(_){s.popper=_;var A=s.state.currentPlacement;s._isMounted&&_.placement!==A&&s.setState({currentPlacement:_.placement})}})}if(a){var T=_e.undefined(x.offset)?0:x.offset;new lp(this.target,this.wrapperRef,{placement:x.placement||g,modifiers:{arrow:{enabled:!1},offset:{offset:"0, ".concat(T,"px")},flip:{enabled:!1}},onCreate:function(_){s.wrapperPopper=_,s._isMounted&&s.setState({statusWrapper:On.IDLE}),d(_,"wrapper"),g!==_.placement&&setTimeout(function(){_.instance.update()},1)}})}}},{key:"rebuildPopper",value:function(){var s=this;this.floaterRefInterval=setInterval(function(){var i;(i=s.floaterRef)!==null&&i!==void 0&&i.isConnected&&(clearInterval(s.floaterRefInterval),s.setState({needsUpdate:!1}),s.initPopper())},50)}},{key:"changeWrapperPosition",value:function(s){var i=s.target,a=s.wrapperOptions;this.setState({positionWrapper:a.position&&!!i})}},{key:"toggle",value:function(s){var i=this.state.status,a=i===On.OPEN?On.CLOSING:On.OPENING;_e.undefined(s)||(a=s),this.setState({status:a})}},{key:"debug",get:function(){var s=this.props.debug;return s||vo()&&"ReactFloaterDebug"in window&&!!window.ReactFloaterDebug}},{key:"event",get:function(){var s=this.props,i=s.disableHoverToClick,a=s.event;return a==="hover"&&SS()&&!i?"click":a}},{key:"options",get:function(){var s=this.props.options;return Va(Zge,s||{})}},{key:"styles",get:function(){var s=this,i=this.state,a=i.status,l=i.positionWrapper,c=i.statusWrapper,d=this.props.styles,h=Va(uxe(d),d);if(l){var m;[On.IDLE].indexOf(a)===-1||[On.IDLE].indexOf(c)===-1?m=h.wrapperPosition:m=this.wrapperPopper.styles,h.wrapper=br(br({},h.wrapper),m)}if(this.target){var g=window.getComputedStyle(this.target);this.wrapperStyles?h.wrapper=br(br({},h.wrapper),this.wrapperStyles):["relative","static"].indexOf(g.position)===-1&&(this.wrapperStyles={},l||(hxe.forEach(function(x){s.wrapperStyles[x]=g[x]}),h.wrapper=br(br({},h.wrapper),this.wrapperStyles),this.target.style.position="relative",this.target.style.top="auto",this.target.style.right="auto",this.target.style.bottom="auto",this.target.style.left="auto"))}return h}},{key:"target",get:function(){if(!vo())return null;var s=this.props.target;return s?_e.domElement(s)?s:document.querySelector(s):this.childRef||this.wrapperRef}},{key:"render",value:function(){var s=this.state,i=s.currentPlacement,a=s.positionWrapper,l=s.status,c=this.props,d=c.children,h=c.component,m=c.content,g=c.disableAnimation,x=c.footer,y=c.hideArrow,w=c.id,S=c.open,k=c.showCloseButton,j=c.style,N=c.target,T=c.title,E=ae.createElement(lQ,{handleClick:this.handleClick,handleMouseEnter:this.handleMouseEnter,handleMouseLeave:this.handleMouseLeave,setChildRef:this.setChildRef,setWrapperRef:this.setWrapperRef,style:j,styles:this.styles.wrapper},d),_={};return a?_.wrapperInPortal=E:_.wrapperAsChildren=E,ae.createElement("span",null,ae.createElement(rQ,{hasChildren:!!d,id:w,placement:i,setRef:this.setFloaterRef,target:N,zIndex:this.styles.options.zIndex},ae.createElement(oQ,{component:h,content:m,disableAnimation:g,footer:x,handleClick:this.handleClick,hideArrow:y||i==="center",open:S,placement:i,positionWrapper:a,setArrowRef:this.setArrowRef,setFloaterRef:this.setFloaterRef,showCloseButton:k,status:l,styles:this.styles,title:T}),_.wrapperInPortal),_.wrapperAsChildren)}}]),n})(ae.Component);qs(X6,"propTypes",{autoOpen:Ge.bool,callback:Ge.func,children:Ge.node,component:UA(Ge.oneOfType([Ge.func,Ge.element]),function(t){return!t.content}),content:UA(Ge.node,function(t){return!t.component}),debug:Ge.bool,disableAnimation:Ge.bool,disableFlip:Ge.bool,disableHoverToClick:Ge.bool,event:Ge.oneOf(["hover","click"]),eventDelay:Ge.number,footer:Ge.node,getPopper:Ge.func,hideArrow:Ge.bool,id:Ge.oneOfType([Ge.string,Ge.number]),offset:Ge.number,open:Ge.bool,options:Ge.object,placement:Ge.oneOf(["top","top-start","top-end","bottom","bottom-start","bottom-end","left","left-start","left-end","right","right-start","right-end","auto","center"]),showCloseButton:Ge.bool,style:Ge.object,styles:Ge.object,target:Ge.oneOfType([Ge.object,Ge.string]),title:Ge.node,wrapperOptions:Ge.shape({offset:Ge.number,placement:Ge.oneOf(["top","top-start","top-end","bottom","bottom-start","bottom-end","left","left-start","left-end","right","right-start","right-end","auto"]),position:Ge.bool})});qs(X6,"defaultProps",{autoOpen:!1,callback:WA,debug:!1,disableAnimation:!1,disableFlip:!1,disableHoverToClick:!1,event:"click",eventDelay:.4,getPopper:WA,hideArrow:!1,offset:15,placement:"bottom",showCloseButton:!1,styles:{},target:null,wrapperOptions:{position:!1}});var fxe=Object.defineProperty,mxe=(t,e,n)=>e in t?fxe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,gt=(t,e,n)=>mxe(t,typeof e!="symbol"?e+"":e,n),Qn={INIT:"init",START:"start",STOP:"stop",RESET:"reset",PREV:"prev",NEXT:"next",GO:"go",CLOSE:"close",SKIP:"skip",UPDATE:"update"},Qa={TOUR_START:"tour:start",STEP_BEFORE:"step:before",BEACON:"beacon",TOOLTIP:"tooltip",STEP_AFTER:"step:after",TOUR_END:"tour:end",TOUR_STATUS:"tour:status",TARGET_NOT_FOUND:"error:target_not_found"},Qt={INIT:"init",READY:"ready",BEACON:"beacon",TOOLTIP:"tooltip",COMPLETE:"complete",ERROR:"error"},mn={IDLE:"idle",READY:"ready",WAITING:"waiting",RUNNING:"running",PAUSED:"paused",SKIPPED:"skipped",FINISHED:"finished"};function Ic(){var t;return!!(typeof window<"u"&&((t=window.document)!=null&&t.createElement))}function cQ(t){return t?t.getBoundingClientRect():null}function pxe(t=!1){const{body:e,documentElement:n}=document;if(!e||!n)return 0;if(t){const r=[e.scrollHeight,e.offsetHeight,n.clientHeight,n.scrollHeight,n.offsetHeight].sort((i,a)=>i-a),s=Math.floor(r.length/2);return r.length%2===0?(r[s-1]+r[s])/2:r[s]}return Math.max(e.scrollHeight,e.offsetHeight,n.clientHeight,n.scrollHeight,n.offsetHeight)}function Ml(t){if(typeof t=="string")try{return document.querySelector(t)}catch{return null}return t}function gxe(t){return!t||t.nodeType!==1?null:getComputedStyle(t)}function cp(t,e,n){if(!t)return Uu();const r=IH(t);if(r){if(r.isSameNode(Uu()))return n?document:Uu();if(!(r.scrollHeight>r.offsetHeight)&&!e)return r.style.overflow="initial",Uu()}return r}function _b(t,e){if(!t)return!1;const n=cp(t,e);return n?!n.isSameNode(Uu()):!1}function xxe(t){return t.offsetParent!==document.body}function df(t,e="fixed"){if(!t||!(t instanceof HTMLElement))return!1;const{nodeName:n}=t,r=gxe(t);return n==="BODY"||n==="HTML"?!1:r&&r.position===e?!0:t.parentNode?df(t.parentNode,e):!1}function vxe(t){var e;if(!t)return!1;let n=t;for(;n&&n!==document.body;){if(n instanceof HTMLElement){const{display:r,visibility:s}=getComputedStyle(n);if(r==="none"||s==="hidden")return!1}n=(e=n.parentElement)!=null?e:null}return!0}function yxe(t,e,n){var r,s,i;const a=cQ(t),l=cp(t,n),c=_b(t,n),d=df(t);let h=0,m=(r=a?.top)!=null?r:0;if(c&&d){const g=(s=t?.offsetTop)!=null?s:0,x=(i=l?.scrollTop)!=null?i:0;m=g-x}else l instanceof HTMLElement&&(h=l.scrollTop,!c&&!df(t)&&(m+=h),l.isSameNode(Uu())||(m+=Uu().scrollTop));return Math.floor(m-e)}function bxe(t,e,n){var r;if(!t)return 0;const{offsetTop:s=0,scrollTop:i=0}=(r=IH(t))!=null?r:{};let a=t.getBoundingClientRect().top+i;s&&(_b(t,n)||xxe(t))&&(a-=s);const l=Math.floor(a-e);return l<0?0:l}function Uu(){var t;return(t=document.scrollingElement)!=null?t:document.documentElement}function wxe(t,e){const{duration:n,element:r}=e;return new Promise((s,i)=>{const{scrollTop:a}=r,l=t>a?t-a:a-t;Fpe.top(r,t,{duration:l<100?50:n},c=>c&&c.message!=="Element already at target scroll position"?i(c):s())})}var Gm=pa.createPortal!==void 0;function uQ(t=navigator.userAgent){let e=t;return typeof window>"u"?e="node":document.documentMode?e="ie":/Edge/.test(t)?e="edge":window.opera||t.includes(" OPR/")?e="opera":typeof window.InstallTrigger<"u"?e="firefox":window.chrome?e="chrome":/(Version\/([\d._]+).*Safari|CriOS|FxiOS| Mobile\/)/.test(t)&&(e="safari"),e}function bv(t){return Object.prototype.toString.call(t).slice(8,-1).toLowerCase()}function yo(t,e={}){const{defaultValue:n,step:r,steps:s}=e;let i=AA(t);if(i)(i.includes("{step}")||i.includes("{steps}"))&&r&&s&&(i=i.replace("{step}",r.toString()).replace("{steps}",s.toString()));else if(b.isValidElement(t)&&!Object.values(t.props).length&&bv(t.type)==="function"){const a=t.type({});i=yo(a,e)}else i=AA(n);return i}function Sxe(t,e){return!ft.plainObject(t)||!ft.array(e)?!1:Object.keys(t).every(n=>e.includes(n))}function kxe(t){const e=/^#?([\da-f])([\da-f])([\da-f])$/i,n=t.replace(e,(s,i,a,l)=>i+i+a+a+l+l),r=/^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i.exec(n);return r?[parseInt(r[1],16),parseInt(r[2],16),parseInt(r[3],16)]:[]}function GA(t){return t.disableBeacon||t.placement==="center"}function XA(){return!["chrome","safari","firefox","opera"].includes(uQ())}function hd({data:t,debug:e=!1,title:n,warn:r=!1}){const s=r?console.warn||console.error:console.log;e&&(n&&t?(console.groupCollapsed(`%creact-joyride: ${n}`,"color: #ff0044; font-weight: bold; font-size: 12px;"),Array.isArray(t)?t.forEach(i=>{ft.plainObject(i)&&i.key?s.apply(console,[i.key,i.value]):s.apply(console,[i])}):s.apply(console,[t]),console.groupEnd()):console.error("Missing title or data props"))}function Oxe(t){return Object.keys(t)}function dQ(t,...e){if(!ft.plainObject(t))throw new TypeError("Expected an object");const n={};for(const r in t)({}).hasOwnProperty.call(t,r)&&(e.includes(r)||(n[r]=t[r]));return n}function jxe(t,...e){if(!ft.plainObject(t))throw new TypeError("Expected an object");if(!e.length)return t;const n={};for(const r in t)({}).hasOwnProperty.call(t,r)&&e.includes(r)&&(n[r]=t[r]);return n}function SO(t,e,n){const r=i=>i.replace("{step}",String(e)).replace("{steps}",String(n));if(bv(t)==="string")return r(t);if(!b.isValidElement(t))return t;const{children:s}=t.props;if(bv(s)==="string"&&s.includes("{step}"))return b.cloneElement(t,{children:r(s)});if(Array.isArray(s))return b.cloneElement(t,{children:s.map(i=>typeof i=="string"?r(i):SO(i,e,n))});if(bv(t.type)==="function"&&!Object.values(t.props).length){const i=t.type({});return SO(i,e,n)}return t}function Nxe(t){const{isFirstStep:e,lifecycle:n,previousLifecycle:r,scrollToFirstStep:s,step:i,target:a}=t;return!i.disableScrolling&&(!e||s||n===Qt.TOOLTIP)&&i.placement!=="center"&&(!i.isFixed||!df(a))&&r!==n&&[Qt.BEACON,Qt.TOOLTIP].includes(n)}var Cxe={options:{preventOverflow:{boundariesElement:"scrollParent"}},wrapperOptions:{offset:-18,position:!0}},hQ={back:"Back",close:"Close",last:"Last",next:"Next",nextLabelWithProgress:"Next (Step {step} of {steps})",open:"Open the dialog",skip:"Skip"},Txe={event:"click",placement:"bottom",offset:10,disableBeacon:!1,disableCloseOnEsc:!1,disableOverlay:!1,disableOverlayClose:!1,disableScrollParentFix:!1,disableScrolling:!1,hideBackButton:!1,hideCloseButton:!1,hideFooter:!1,isFixed:!1,locale:hQ,showProgress:!1,showSkipButton:!1,spotlightClicks:!1,spotlightPadding:10},Exe={continuous:!1,debug:!1,disableCloseOnEsc:!1,disableOverlay:!1,disableOverlayClose:!1,disableScrolling:!1,disableScrollParentFix:!1,getHelpers:void 0,hideBackButton:!1,run:!0,scrollOffset:20,scrollDuration:300,scrollToFirstStep:!1,showSkipButton:!1,showProgress:!1,spotlightClicks:!1,spotlightPadding:10,steps:[]},_xe={arrowColor:"#fff",backgroundColor:"#fff",beaconSize:36,overlayColor:"rgba(0, 0, 0, 0.5)",primaryColor:"#f04",spotlightShadow:"0 0 15px rgba(0, 0, 0, 0.5)",textColor:"#333",width:380,zIndex:100},Xm={backgroundColor:"transparent",border:0,borderRadius:0,color:"#555",cursor:"pointer",fontSize:16,lineHeight:1,padding:8,WebkitAppearance:"none"},YA={borderRadius:4,position:"absolute"};function Axe(t,e){var n,r,s,i,a;const{floaterProps:l,styles:c}=t,d=Va((n=e.floaterProps)!=null?n:{},l??{}),h=Va(c??{},(r=e.styles)!=null?r:{}),m=Va(_xe,h.options||{}),g=e.placement==="center"||e.disableBeacon;let{width:x}=m;window.innerWidth>480&&(x=380),"width"in m&&(x=typeof m.width=="number"&&window.innerWidthfQ(n,e)):(hd({title:"validateSteps",data:"steps must be an array",warn:!0,debug:e}),!1)}var mQ={action:"init",controlled:!1,index:0,lifecycle:Qt.INIT,origin:null,size:0,status:mn.IDLE},ZA=Oxe(dQ(mQ,"controlled","size")),Rxe=class{constructor(t){gt(this,"beaconPopper"),gt(this,"tooltipPopper"),gt(this,"data",new Map),gt(this,"listener"),gt(this,"store",new Map),gt(this,"addListener",s=>{this.listener=s}),gt(this,"setSteps",s=>{const{size:i,status:a}=this.getState(),l={size:s.length,status:a};this.data.set("steps",s),a===mn.WAITING&&!i&&s.length&&(l.status=mn.RUNNING),this.setState(l)}),gt(this,"getPopper",s=>s==="beacon"?this.beaconPopper:this.tooltipPopper),gt(this,"setPopper",(s,i)=>{s==="beacon"?this.beaconPopper=i:this.tooltipPopper=i}),gt(this,"cleanupPoppers",()=>{this.beaconPopper=null,this.tooltipPopper=null}),gt(this,"close",(s=null)=>{const{index:i,status:a}=this.getState();a===mn.RUNNING&&this.setState({...this.getNextState({action:Qn.CLOSE,index:i+1,origin:s})})}),gt(this,"go",s=>{const{controlled:i,status:a}=this.getState();if(i||a!==mn.RUNNING)return;const l=this.getSteps()[s];this.setState({...this.getNextState({action:Qn.GO,index:s}),status:l?a:mn.FINISHED})}),gt(this,"info",()=>this.getState()),gt(this,"next",()=>{const{index:s,status:i}=this.getState();i===mn.RUNNING&&this.setState(this.getNextState({action:Qn.NEXT,index:s+1}))}),gt(this,"open",()=>{const{status:s}=this.getState();s===mn.RUNNING&&this.setState({...this.getNextState({action:Qn.UPDATE,lifecycle:Qt.TOOLTIP})})}),gt(this,"prev",()=>{const{index:s,status:i}=this.getState();i===mn.RUNNING&&this.setState({...this.getNextState({action:Qn.PREV,index:s-1})})}),gt(this,"reset",(s=!1)=>{const{controlled:i}=this.getState();i||this.setState({...this.getNextState({action:Qn.RESET,index:0}),status:s?mn.RUNNING:mn.READY})}),gt(this,"skip",()=>{const{status:s}=this.getState();s===mn.RUNNING&&this.setState({action:Qn.SKIP,lifecycle:Qt.INIT,status:mn.SKIPPED})}),gt(this,"start",s=>{const{index:i,size:a}=this.getState();this.setState({...this.getNextState({action:Qn.START,index:ft.number(s)?s:i},!0),status:a?mn.RUNNING:mn.WAITING})}),gt(this,"stop",(s=!1)=>{const{index:i,status:a}=this.getState();[mn.FINISHED,mn.SKIPPED].includes(a)||this.setState({...this.getNextState({action:Qn.STOP,index:i+(s?1:0)}),status:mn.PAUSED})}),gt(this,"update",s=>{var i,a;if(!Sxe(s,ZA))throw new Error(`State is not valid. Valid keys: ${ZA.join(", ")}`);this.setState({...this.getNextState({...this.getState(),...s,action:(i=s.action)!=null?i:Qn.UPDATE,origin:(a=s.origin)!=null?a:null},!0)})});const{continuous:e=!1,stepIndex:n,steps:r=[]}=t??{};this.setState({action:Qn.INIT,controlled:ft.number(n),continuous:e,index:ft.number(n)?n:0,lifecycle:Qt.INIT,origin:null,status:r.length?mn.READY:mn.IDLE},!0),this.beaconPopper=null,this.tooltipPopper=null,this.listener=null,this.setSteps(r)}getState(){return this.store.size?{action:this.store.get("action")||"",controlled:this.store.get("controlled")||!1,index:parseInt(this.store.get("index"),10),lifecycle:this.store.get("lifecycle")||"",origin:this.store.get("origin")||null,size:this.store.get("size")||0,status:this.store.get("status")||""}:{...mQ}}getNextState(t,e=!1){var n,r,s,i,a;const{action:l,controlled:c,index:d,size:h,status:m}=this.getState(),g=ft.number(t.index)?t.index:d,x=c&&!e?d:Math.min(Math.max(g,0),h);return{action:(n=t.action)!=null?n:l,controlled:c,index:x,lifecycle:(r=t.lifecycle)!=null?r:Qt.INIT,origin:(s=t.origin)!=null?s:null,size:(i=t.size)!=null?i:h,status:x===h?mn.FINISHED:(a=t.status)!=null?a:m}}getSteps(){const t=this.data.get("steps");return Array.isArray(t)?t:[]}hasUpdatedState(t){const e=JSON.stringify(t),n=JSON.stringify(this.getState());return e!==n}setState(t,e=!1){const n=this.getState(),{action:r,index:s,lifecycle:i,origin:a=null,size:l,status:c}={...n,...t};this.store.set("action",r),this.store.set("index",s),this.store.set("lifecycle",i),this.store.set("origin",a),this.store.set("size",l),this.store.set("status",c),e&&(this.store.set("controlled",t.controlled),this.store.set("continuous",t.continuous)),this.listener&&this.hasUpdatedState(n)&&this.listener(this.getState())}getHelpers(){return{close:this.close,go:this.go,info:this.info,next:this.next,open:this.open,prev:this.prev,reset:this.reset,skip:this.skip}}};function Dxe(t){return new Rxe(t)}function Pxe({styles:t}){return b.createElement("div",{key:"JoyrideSpotlight",className:"react-joyride__spotlight","data-test-id":"spotlight",style:t})}var zxe=Pxe,Ixe=class extends b.Component{constructor(){super(...arguments),gt(this,"isActive",!1),gt(this,"resizeTimeout"),gt(this,"scrollTimeout"),gt(this,"scrollParent"),gt(this,"state",{isScrolling:!1,mouseOverSpotlight:!1,showSpotlight:!0}),gt(this,"hideSpotlight",()=>{const{continuous:t,disableOverlay:e,lifecycle:n}=this.props,r=[Qt.INIT,Qt.BEACON,Qt.COMPLETE,Qt.ERROR];return e||(t?r.includes(n):n!==Qt.TOOLTIP)}),gt(this,"handleMouseMove",t=>{const{mouseOverSpotlight:e}=this.state,{height:n,left:r,position:s,top:i,width:a}=this.spotlightStyles,l=s==="fixed"?t.clientY:t.pageY,c=s==="fixed"?t.clientX:t.pageX,d=l>=i&&l<=i+n,m=c>=r&&c<=r+a&&d;m!==e&&this.updateState({mouseOverSpotlight:m})}),gt(this,"handleScroll",()=>{const{target:t}=this.props,e=Ml(t);if(this.scrollParent!==document){const{isScrolling:n}=this.state;n||this.updateState({isScrolling:!0,showSpotlight:!1}),clearTimeout(this.scrollTimeout),this.scrollTimeout=window.setTimeout(()=>{this.updateState({isScrolling:!1,showSpotlight:!0})},50)}else df(e,"sticky")&&this.updateState({})}),gt(this,"handleResize",()=>{clearTimeout(this.resizeTimeout),this.resizeTimeout=window.setTimeout(()=>{this.isActive&&this.forceUpdate()},100)})}componentDidMount(){const{debug:t,disableScrolling:e,disableScrollParentFix:n=!1,target:r}=this.props,s=Ml(r);this.scrollParent=cp(s??document.body,n,!0),this.isActive=!0,window.addEventListener("resize",this.handleResize)}componentDidUpdate(t){var e;const{disableScrollParentFix:n,lifecycle:r,spotlightClicks:s,target:i}=this.props,{changed:a}=uy(t,this.props);if(a("target")||a("disableScrollParentFix")){const l=Ml(i);this.scrollParent=cp(l??document.body,n,!0)}a("lifecycle",Qt.TOOLTIP)&&((e=this.scrollParent)==null||e.addEventListener("scroll",this.handleScroll,{passive:!0}),setTimeout(()=>{const{isScrolling:l}=this.state;l||this.updateState({showSpotlight:!0})},100)),(a("spotlightClicks")||a("disableOverlay")||a("lifecycle"))&&(s&&r===Qt.TOOLTIP?window.addEventListener("mousemove",this.handleMouseMove,!1):r!==Qt.TOOLTIP&&window.removeEventListener("mousemove",this.handleMouseMove))}componentWillUnmount(){var t;this.isActive=!1,window.removeEventListener("mousemove",this.handleMouseMove),window.removeEventListener("resize",this.handleResize),clearTimeout(this.resizeTimeout),clearTimeout(this.scrollTimeout),(t=this.scrollParent)==null||t.removeEventListener("scroll",this.handleScroll)}get overlayStyles(){const{mouseOverSpotlight:t}=this.state,{disableOverlayClose:e,placement:n,styles:r}=this.props;let s=r.overlay;return XA()&&(s=n==="center"?r.overlayLegacyCenter:r.overlayLegacy),{cursor:e?"default":"pointer",height:pxe(),pointerEvents:t?"none":"auto",...s}}get spotlightStyles(){var t,e,n;const{showSpotlight:r}=this.state,{disableScrollParentFix:s=!1,spotlightClicks:i,spotlightPadding:a=0,styles:l,target:c}=this.props,d=Ml(c),h=cQ(d),m=df(d),g=yxe(d,a,s);return{...XA()?l.spotlightLegacy:l.spotlight,height:Math.round(((t=h?.height)!=null?t:0)+a*2),left:Math.round(((e=h?.left)!=null?e:0)-a),opacity:r?1:0,pointerEvents:i?"none":"auto",position:m?"fixed":"absolute",top:g,transition:"opacity 0.2s",width:Math.round(((n=h?.width)!=null?n:0)+a*2)}}updateState(t){this.isActive&&this.setState(e=>({...e,...t}))}render(){const{showSpotlight:t}=this.state,{onClickOverlay:e,placement:n}=this.props,{hideSpotlight:r,overlayStyles:s,spotlightStyles:i}=this;if(r())return null;let a=n!=="center"&&t&&b.createElement(zxe,{styles:i});if(uQ()==="safari"){const{mixBlendMode:l,zIndex:c,...d}=s;a=b.createElement("div",{style:{...d}},a),delete s.backgroundColor}return b.createElement("div",{className:"react-joyride__overlay","data-test-id":"overlay",onClick:e,role:"presentation",style:s},a)}},Lxe=class extends b.Component{constructor(){super(...arguments),gt(this,"node",null)}componentDidMount(){const{id:t}=this.props;Ic()&&(this.node=document.createElement("div"),this.node.id=t,document.body.appendChild(this.node),Gm||this.renderReact15())}componentDidUpdate(){Ic()&&(Gm||this.renderReact15())}componentWillUnmount(){!Ic()||!this.node||(Gm||pa.unmountComponentAtNode(this.node),this.node.parentNode===document.body&&(document.body.removeChild(this.node),this.node=null))}renderReact15(){if(!Ic())return;const{children:t}=this.props;this.node&&pa.unstable_renderSubtreeIntoContainer(this,t,this.node)}renderReact16(){if(!Ic()||!Gm)return null;const{children:t}=this.props;return this.node?pa.createPortal(t,this.node):null}render(){return Gm?this.renderReact16():null}},Bxe=class{constructor(t,e){if(gt(this,"element"),gt(this,"options"),gt(this,"canBeTabbed",n=>{const{tabIndex:r}=n;return r===null||r<0?!1:this.canHaveFocus(n)}),gt(this,"canHaveFocus",n=>{const r=/input|select|textarea|button|object/,s=n.nodeName.toLowerCase();return(r.test(s)&&!n.getAttribute("disabled")||s==="a"&&!!n.getAttribute("href"))&&this.isVisible(n)}),gt(this,"findValidTabElements",()=>[].slice.call(this.element.querySelectorAll("*"),0).filter(this.canBeTabbed)),gt(this,"handleKeyDown",n=>{const{code:r="Tab"}=this.options;n.code===r&&this.interceptTab(n)}),gt(this,"interceptTab",n=>{n.preventDefault();const r=this.findValidTabElements(),{shiftKey:s}=n;if(!r.length)return;let i=document.activeElement?r.indexOf(document.activeElement):0;i===-1||!s&&i+1===r.length?i=0:s&&i===0?i=r.length-1:i+=s?-1:1,r[i].focus()}),gt(this,"isHidden",n=>{const r=n.offsetWidth<=0&&n.offsetHeight<=0,s=window.getComputedStyle(n);return r&&!n.innerHTML?!0:r&&s.getPropertyValue("overflow")!=="visible"||s.getPropertyValue("display")==="none"}),gt(this,"isVisible",n=>{let r=n;for(;r;)if(r instanceof HTMLElement){if(r===document.body)break;if(this.isHidden(r))return!1;r=r.parentNode}return!0}),gt(this,"removeScope",()=>{window.removeEventListener("keydown",this.handleKeyDown)}),gt(this,"checkFocus",n=>{document.activeElement!==n&&(n.focus(),window.requestAnimationFrame(()=>this.checkFocus(n)))}),gt(this,"setFocus",()=>{const{selector:n}=this.options;if(!n)return;const r=this.element.querySelector(n);r&&window.requestAnimationFrame(()=>this.checkFocus(r))}),!(t instanceof HTMLElement))throw new TypeError("Invalid parameter: element must be an HTMLElement");this.element=t,this.options=e,window.addEventListener("keydown",this.handleKeyDown,!1),this.setFocus()}},Fxe=class extends b.Component{constructor(t){if(super(t),gt(this,"beacon",null),gt(this,"setBeaconRef",s=>{this.beacon=s}),t.beaconComponent)return;const e=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.id="joyride-beacon-animation",t.nonce&&n.setAttribute("nonce",t.nonce),n.appendChild(document.createTextNode(` +reaction = "${T.reaction}"`;return o.jsxs(Bo,{children:[o.jsx(Fo,{asChild:!0,children:o.jsxs(ue,{variant:"outline",size:"sm",children:[o.jsx(Ji,{className:"h-4 w-4 mr-1"}),"预览"]})}),o.jsx(Ka,{className:"w-[95vw] sm:w-[500px]",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),o.jsx(pn,{className:"h-60 rounded-md bg-muted p-3",children:o.jsx("pre",{className:"font-mono text-xs whitespace-pre-wrap break-all",children:E})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"关键词反应配置"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"配置触发特定反应的关键词和正则表达式规则"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"text-base font-semibold",children:"正则表达式规则"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用正则表达式匹配消息内容"})]}),o.jsxs(ue,{onClick:c,size:"sm",variant:"outline",children:[o.jsx(Is,{className:"h-4 w-4 mr-1"}),"添加正则规则"]})]}),o.jsxs("div",{className:"space-y-3",children:[t.regex_rules.map((T,E)=>o.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium",children:["正则规则 ",E+1]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(m,{regex:T.regex&&T.regex[0]||"",reaction:T.reaction,onRegexChange:_=>h(E,"regex",_),onReactionChange:_=>h(E,"reaction",_)}),o.jsx(j,{rule:T}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsx(ue,{size:"sm",variant:"ghost",children:o.jsx(Cn,{className:"h-4 w-4"})})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:["确定要删除正则规则 ",E+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>d(E),children:"删除"})]})]})]})]})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"正则表达式(Python 语法)"}),o.jsx(Pe,{value:T.regex&&T.regex[0]||"",onChange:_=>h(E,"regex",_.target.value),placeholder:"例如:^(?P\\\\S{1,20})是这样的$ (点击正则编辑器按钮可视化构建)",className:"font-mono text-sm"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:'支持命名捕获组 (?Ppattern),可在 reaction 中使用 [name] 引用。点击"正则编辑器"可视化构建和测试!'})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"反应内容"}),o.jsx(Nr,{value:T.reaction,onChange:_=>h(E,"reaction",_.target.value),placeholder:`触发后麦麦的反应... +可以使用 [捕获组名] 来引用正则表达式中的内容`,rows:3,className:"text-sm"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"使用 [捕获组名] 引用正则表达式中的命名捕获组,例如 [n] 会被替换为捕获的内容"})]})]})]},E)),t.regex_rules.length===0&&o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无正则规则,点击"添加正则规则"开始配置'})]})]}),o.jsxs("div",{className:"space-y-4 border-t pt-6",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"text-base font-semibold",children:"关键词规则"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用关键词列表匹配消息内容"})]}),o.jsxs(ue,{onClick:g,size:"sm",variant:"outline",children:[o.jsx(Is,{className:"h-4 w-4 mr-1"}),"添加关键词规则"]})]}),o.jsxs("div",{className:"space-y-3",children:[t.keyword_rules.map((T,E)=>o.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium",children:["关键词规则 ",E+1]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(N,{rule:T}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsx(ue,{size:"sm",variant:"ghost",children:o.jsx(Cn,{className:"h-4 w-4"})})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:["确定要删除关键词规则 ",E+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>x(E),children:"删除"})]})]})]})]})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{className:"text-xs font-medium",children:"关键词列表"}),o.jsxs(ue,{onClick:()=>w(E),size:"sm",variant:"ghost",children:[o.jsx(Is,{className:"h-3 w-3 mr-1"}),"添加关键词"]})]}),o.jsxs("div",{className:"space-y-2",children:[(T.keywords||[]).map((_,A)=>o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Pe,{value:_,onChange:D=>k(E,A,D.target.value),placeholder:"关键词",className:"flex-1"}),o.jsx(ue,{onClick:()=>S(E,A),size:"sm",variant:"ghost",children:o.jsx(Cn,{className:"h-4 w-4"})})]},A)),(!T.keywords||T.keywords.length===0)&&o.jsx("p",{className:"text-xs text-muted-foreground text-center py-2",children:'暂无关键词,点击"添加关键词"开始配置'})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"反应内容"}),o.jsx(Nr,{value:T.reaction,onChange:_=>y(E,"reaction",_.target.value),placeholder:"触发后麦麦的反应...",rows:3,className:"text-sm"})]})]})]},E)),t.keyword_rules.length===0&&o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无关键词规则,点击"添加关键词规则"开始配置'})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"回复后处理配置"}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"enable_response_post_process",checked:e.enable_response_post_process,onCheckedChange:T=>i({...e,enable_response_post_process:T})}),o.jsx(he,{htmlFor:"enable_response_post_process",className:"cursor-pointer",children:"启用回复后处理"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"包括错别字生成器和回复分割器"})]}),e.enable_response_post_process&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"border-t pt-6 space-y-4",children:o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[o.jsx(Ft,{id:"enable_chinese_typo",checked:n.enable,onCheckedChange:T=>a({...n,enable:T})}),o.jsx(he,{htmlFor:"enable_chinese_typo",className:"cursor-pointer font-semibold",children:"中文错别字生成器"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"为回复添加随机错别字,让麦麦的回复更自然"}),n.enable&&o.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"error_rate",className:"text-xs font-medium",children:"单字替换概率"}),o.jsx(Pe,{id:"error_rate",type:"number",step:"0.001",min:"0",max:"1",value:n.error_rate,onChange:T=>a({...n,error_rate:parseFloat(T.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"min_freq",className:"text-xs font-medium",children:"最小字频阈值"}),o.jsx(Pe,{id:"min_freq",type:"number",min:"0",value:n.min_freq,onChange:T=>a({...n,min_freq:parseInt(T.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"tone_error_rate",className:"text-xs font-medium",children:"声调错误概率"}),o.jsx(Pe,{id:"tone_error_rate",type:"number",step:"0.01",min:"0",max:"1",value:n.tone_error_rate,onChange:T=>a({...n,tone_error_rate:parseFloat(T.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"word_replace_rate",className:"text-xs font-medium",children:"整词替换概率"}),o.jsx(Pe,{id:"word_replace_rate",type:"number",step:"0.001",min:"0",max:"1",value:n.word_replace_rate,onChange:T=>a({...n,word_replace_rate:parseFloat(T.target.value)})})]})]})]})}),o.jsx("div",{className:"border-t pt-6 space-y-4",children:o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[o.jsx(Ft,{id:"enable_response_splitter",checked:r.enable,onCheckedChange:T=>l({...r,enable:T})}),o.jsx(he,{htmlFor:"enable_response_splitter",className:"cursor-pointer font-semibold",children:"回复分割器"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"控制回复的长度和句子数量"}),r.enable&&o.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"max_length",className:"text-xs font-medium",children:"最大长度"}),o.jsx(Pe,{id:"max_length",type:"number",min:"1",value:r.max_length,onChange:T=>l({...r,max_length:parseInt(T.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大字符数"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"max_sentence_num",className:"text-xs font-medium",children:"最大句子数"}),o.jsx(Pe,{id:"max_sentence_num",type:"number",min:"1",value:r.max_sentence_num,onChange:T=>l({...r,max_sentence_num:parseInt(T.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大句子数量"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"enable_kaomoji_protection",checked:r.enable_kaomoji_protection,onCheckedChange:T=>l({...r,enable_kaomoji_protection:T})}),o.jsx(he,{htmlFor:"enable_kaomoji_protection",className:"cursor-pointer",children:"启用颜文字保护"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"enable_overflow_return_all",checked:r.enable_overflow_return_all,onCheckedChange:T=>l({...r,enable_overflow_return_all:T})}),o.jsx(he,{htmlFor:"enable_overflow_return_all",className:"cursor-pointer",children:"超出时一次性返回全部"})]}),o.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"当句子数量超出限制时,合并后一次性返回所有内容"})]})]})})]})]})]})}function Q0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"情绪设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{checked:t.enable_mood,onCheckedChange:n=>e({...t,enable_mood:n})}),o.jsx(he,{className:"cursor-pointer",children:"启用情绪系统"})]}),t.enable_mood&&o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"情绪更新阈值"}),o.jsx(Pe,{type:"number",min:"1",value:t.mood_update_threshold,onChange:n=>e({...t,mood_update_threshold:parseInt(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"越高,更新越慢"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"情感特征"}),o.jsx(Nr,{value:t.emotion_style,onChange:n=>e({...t,emotion_style:n.target.value}),placeholder:"影响情绪的变化情况",rows:2})]})]})]})]})}function V0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"语音设置"}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{checked:t.enable_asr,onCheckedChange:n=>e({...t,enable_asr:n})}),o.jsx(he,{className:"cursor-pointer",children:"启用语音识别"})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"启用后麦麦可以识别语音消息,需要配置语音识别模型"})]})}function U0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{checked:t.enable,onCheckedChange:n=>e({...t,enable:n})}),o.jsx(he,{className:"cursor-pointer",children:"启用 LPMM 知识库"})]}),t.enable&&o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"LPMM 模式"}),o.jsxs(Vt,{value:t.lpmm_mode,onValueChange:n=>e({...t,lpmm_mode:n}),children:[o.jsx($t,{children:o.jsx(Ut,{placeholder:"选择 LPMM 模式"})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"classic",children:"经典模式"}),o.jsx(De,{value:"agent",children:"Agent 模式"})]})]})]}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"同义词搜索 TopK"}),o.jsx(Pe,{type:"number",min:"1",value:t.rag_synonym_search_top_k,onChange:n=>e({...t,rag_synonym_search_top_k:parseInt(n.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"同义词阈值"}),o.jsx(Pe,{type:"number",step:"0.1",min:"0",max:"1",value:t.rag_synonym_threshold,onChange:n=>e({...t,rag_synonym_threshold:parseFloat(n.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"实体提取线程数"}),o.jsx(Pe,{type:"number",min:"1",value:t.info_extraction_workers,onChange:n=>e({...t,info_extraction_workers:parseInt(n.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"嵌入向量维度"}),o.jsx(Pe,{type:"number",min:"1",value:t.embedding_dimension,onChange:n=>e({...t,embedding_dimension:parseInt(n.target.value)})})]})]})]})]})]})}function W0e({config:t,onChange:e}){const[n,r]=b.useState(""),[s,i]=b.useState("WARNING"),a=()=>{n&&!t.suppress_libraries.includes(n)&&(e({...t,suppress_libraries:[...t.suppress_libraries,n]}),r(""))},l=x=>{e({...t,suppress_libraries:t.suppress_libraries.filter(y=>y!==x)})},c=()=>{n&&!t.library_log_levels[n]&&(e({...t,library_log_levels:{...t.library_log_levels,[n]:s}}),r(""),i("WARNING"))},d=x=>{const y={...t.library_log_levels};delete y[x],e({...t,library_log_levels:y})},h=["DEBUG","INFO","WARNING","ERROR","CRITICAL"],m=["FULL","compact","lite"],g=["none","title","full"];return o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"日志配置"}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"日期格式"}),o.jsx(Pe,{value:t.date_style,onChange:x=>e({...t,date_style:x.target.value}),placeholder:"例如: m-d H:i:s"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"m=月, d=日, H=时, i=分, s=秒"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"日志级别样式"}),o.jsxs(Vt,{value:t.log_level_style,onValueChange:x=>e({...t,log_level_style:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:m.map(x=>o.jsx(De,{value:x,children:x},x))})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"日志文本颜色"}),o.jsxs(Vt,{value:t.color_text,onValueChange:x=>e({...t,color_text:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:g.map(x=>o.jsx(De,{value:x,children:x},x))})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"全局日志级别"}),o.jsxs(Vt,{value:t.log_level,onValueChange:x=>e({...t,log_level:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:h.map(x=>o.jsx(De,{value:x,children:x},x))})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"控制台日志级别"}),o.jsxs(Vt,{value:t.console_log_level,onValueChange:x=>e({...t,console_log_level:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:h.map(x=>o.jsx(De,{value:x,children:x},x))})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"文件日志级别"}),o.jsxs(Vt,{value:t.file_log_level,onValueChange:x=>e({...t,file_log_level:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:h.map(x=>o.jsx(De,{value:x,children:x},x))})]})]})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"mb-2 block",children:"完全屏蔽的库"}),o.jsxs("div",{className:"flex gap-2 mb-2",children:[o.jsx(Pe,{value:n,onChange:x=>r(x.target.value),placeholder:"输入库名",className:"flex-1",onKeyDown:x=>{x.key==="Enter"&&(x.preventDefault(),a())}}),o.jsx(ue,{onClick:a,size:"sm",className:"flex-shrink-0",children:o.jsx(Is,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),o.jsx("div",{className:"flex flex-wrap gap-2",children:t.suppress_libraries.map(x=>o.jsxs("div",{className:"flex items-center gap-1 bg-secondary px-3 py-1 rounded-md",children:[o.jsx("span",{className:"text-sm",children:x}),o.jsx(ue,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0",onClick:()=>l(x),children:o.jsx(Cn,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},x))})]}),o.jsxs("div",{children:[o.jsx(he,{className:"mb-2 block",children:"特定库的日志级别"}),o.jsxs("div",{className:"flex gap-2 mb-2",children:[o.jsx(Pe,{value:n,onChange:x=>r(x.target.value),placeholder:"输入库名",className:"flex-1"}),o.jsxs(Vt,{value:s,onValueChange:i,children:[o.jsx($t,{className:"w-32",children:o.jsx(Ut,{})}),o.jsx(Ht,{children:h.map(x=>o.jsx(De,{value:x,children:x},x))})]}),o.jsx(ue,{onClick:c,size:"sm",children:o.jsx(Is,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),o.jsx("div",{className:"space-y-2",children:Object.entries(t.library_log_levels).map(([x,y])=>o.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[o.jsx("span",{className:"text-sm font-medium",children:x}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"text-sm text-muted-foreground",children:y}),o.jsx(ue,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>d(x),children:o.jsx(Cn,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]})]},x))})]})]})}function G0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"调试配置"}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示 Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否在日志中显示提示词"})]}),o.jsx(Ft,{checked:t.show_prompt,onCheckedChange:n=>e({...t,show_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示回复器 Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的提示词"})]}),o.jsx(Ft,{checked:t.show_replyer_prompt,onCheckedChange:n=>e({...t,show_replyer_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示回复器推理"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的推理过程"})]}),o.jsx(Ft,{checked:t.show_replyer_reasoning,onCheckedChange:n=>e({...t,show_replyer_reasoning:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示 Jargon Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示术语相关的提示词"})]}),o.jsx(Ft,{checked:t.show_jargon_prompt,onCheckedChange:n=>e({...t,show_jargon_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示记忆检索 Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示记忆检索相关的提示词"})]}),o.jsx(Ft,{checked:t.show_memory_prompt,onCheckedChange:n=>e({...t,show_memory_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示 Planner Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 Planner 的提示词和原始返回结果"})]}),o.jsx(Ft,{checked:t.show_planner_prompt,onCheckedChange:n=>e({...t,show_planner_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示 LPMM 相关文段"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 LPMM 知识库找到的相关文段日志"})]}),o.jsx(Ft,{checked:t.show_lpmm_paragraph,onCheckedChange:n=>e({...t,show_lpmm_paragraph:n})})]})]})]})}function X0e({config:t,onChange:e}){const[n,r]=b.useState(""),s=()=>{n&&!t.auth_token.includes(n)&&(e({...t,auth_token:[...t.auth_token,n]}),r(""))},i=a=>{e({...t,auth_token:t.auth_token.filter((l,c)=>c!==a)})};return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"MaimMessage 服务配置"}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"启用自定义服务器"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否使用自定义的 MaimMessage 服务器"})]}),o.jsx(Ft,{checked:t.use_custom,onCheckedChange:a=>e({...t,use_custom:a})})]}),t.use_custom&&o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"主机地址"}),o.jsx(Pe,{value:t.host,onChange:a=>e({...t,host:a.target.value}),placeholder:"127.0.0.1"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"端口号"}),o.jsx(Pe,{type:"number",value:t.port,onChange:a=>e({...t,port:parseInt(a.target.value)}),placeholder:"8090"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"连接模式"}),o.jsxs(Vt,{value:t.mode,onValueChange:a=>e({...t,mode:a}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"ws",children:"WebSocket (ws)"}),o.jsx(De,{value:"tcp",children:"TCP"})]})]})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{checked:t.use_wss,onCheckedChange:a=>e({...t,use_wss:a}),disabled:t.mode!=="ws"}),o.jsx(he,{children:"使用 WSS 安全连接"})]})]}),t.use_wss&&t.mode==="ws"&&o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"SSL 证书文件路径"}),o.jsx(Pe,{value:t.cert_file,onChange:a=>e({...t,cert_file:a.target.value}),placeholder:"cert.pem"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"SSL 密钥文件路径"}),o.jsx(Pe,{value:t.key_file,onChange:a=>e({...t,key_file:a.target.value}),placeholder:"key.pem"})]})]})]})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"mb-2 block",children:"认证令牌"}),o.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:"用于 API 验证,为空则不启用验证"}),o.jsxs("div",{className:"flex gap-2 mb-2",children:[o.jsx(Pe,{value:n,onChange:a=>r(a.target.value),placeholder:"输入认证令牌",onKeyDown:a=>{a.key==="Enter"&&(a.preventDefault(),s())}}),o.jsx(ue,{onClick:s,size:"sm",children:o.jsx(Is,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),o.jsx("div",{className:"space-y-2",children:t.auth_token.map((a,l)=>o.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[o.jsx("span",{className:"text-sm font-mono",children:a}),o.jsx(ue,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>i(l),children:o.jsx(Cn,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},l))})]})]})}function Y0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"统计信息"}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"启用统计信息发送"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"发送匿名统计信息,帮助我们了解全球有多少只麦麦在运行"})]}),o.jsx(Ft,{checked:t.enable,onCheckedChange:n=>e({...t,enable:n})})]})]})}const Af=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{className:"relative w-full overflow-auto",children:o.jsx("table",{ref:n,className:xe("w-full caption-bottom text-sm",t),...e})}));Af.displayName="Table";const Mf=b.forwardRef(({className:t,...e},n)=>o.jsx("thead",{ref:n,className:xe("[&_tr]:border-b",t),...e}));Mf.displayName="TableHeader";const Rf=b.forwardRef(({className:t,...e},n)=>o.jsx("tbody",{ref:n,className:xe("[&_tr:last-child]:border-0",t),...e}));Rf.displayName="TableBody";const K0e=b.forwardRef(({className:t,...e},n)=>o.jsx("tfoot",{ref:n,className:xe("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",t),...e}));K0e.displayName="TableFooter";const zs=b.forwardRef(({className:t,...e},n)=>o.jsx("tr",{ref:n,className:xe("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",t),...e}));zs.displayName="TableRow";const mn=b.forwardRef(({className:t,...e},n)=>o.jsx("th",{ref:n,className:xe("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...e}));mn.displayName="TableHead";const Yt=b.forwardRef(({className:t,...e},n)=>o.jsx("td",{ref:n,className:xe("px-4 py-3 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...e}));Yt.displayName="TableCell";const Z0e=b.forwardRef(({className:t,...e},n)=>o.jsx("caption",{ref:n,className:xe("mt-4 text-sm text-muted-foreground",t),...e}));Z0e.displayName="TableCaption";var kA=1,J0e=.9,epe=.8,tpe=.17,vS=.1,yS=.999,npe=.9999,rpe=.99,spe=/[\\\/_+.#"@\[\(\{&]/,ipe=/[\\\/_+.#"@\[\(\{&]/g,ape=/[\s-]/,EH=/[\s-]/g;function vO(t,e,n,r,s,i,a){if(i===e.length)return s===t.length?kA:rpe;var l=`${s},${i}`;if(a[l]!==void 0)return a[l];for(var c=r.charAt(i),d=n.indexOf(c,s),h=0,m,g,x,y;d>=0;)m=vO(t,e,n,r,d+1,i+1,a),m>h&&(d===s?m*=kA:spe.test(t.charAt(d-1))?(m*=epe,x=t.slice(s,d-1).match(ipe),x&&s>0&&(m*=Math.pow(yS,x.length))):ape.test(t.charAt(d-1))?(m*=J0e,y=t.slice(s,d-1).match(EH),y&&s>0&&(m*=Math.pow(yS,y.length))):(m*=tpe,s>0&&(m*=Math.pow(yS,d-s))),t.charAt(d)!==e.charAt(i)&&(m*=npe)),(mm&&(m=g*vS)),m>h&&(h=m),d=n.indexOf(c,d+1);return a[l]=h,h}function OA(t){return t.toLowerCase().replace(EH," ")}function ope(t,e,n){return t=n&&n.length>0?`${t+" "+n.join(" ")}`:t,vO(t,e,OA(t),OA(e),0,0,{})}var lpe=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],hu=lpe.reduce((t,e)=>{const n=Vy(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...l}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(c,{...l,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),Vm='[cmdk-group=""]',bS='[cmdk-group-items=""]',cpe='[cmdk-group-heading=""]',_H='[cmdk-item=""]',jA=`${_H}:not([aria-disabled="true"])`,yO="cmdk-item-select",kh="data-value",upe=(t,e,n)=>ope(t,e,n),AH=b.createContext(void 0),sg=()=>b.useContext(AH),MH=b.createContext(void 0),W6=()=>b.useContext(MH),RH=b.createContext(void 0),DH=b.forwardRef((t,e)=>{let n=Oh(()=>{var X,z;return{search:"",value:(z=(X=t.value)!=null?X:t.defaultValue)!=null?z:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),r=Oh(()=>new Set),s=Oh(()=>new Map),i=Oh(()=>new Map),a=Oh(()=>new Set),l=PH(t),{label:c,children:d,value:h,onValueChange:m,filter:g,shouldFilter:x,loop:y,disablePointerSelection:w=!1,vimBindings:S=!0,...k}=t,j=Gi(),N=Gi(),T=Gi(),E=b.useRef(null),_=wpe();md(()=>{if(h!==void 0){let X=h.trim();n.current.value=X,A.emit()}},[h]),md(()=>{_(6,ee)},[]);let A=b.useMemo(()=>({subscribe:X=>(a.current.add(X),()=>a.current.delete(X)),snapshot:()=>n.current,setState:(X,z,U)=>{var te,ne,G,se;if(!Object.is(n.current[X],z)){if(n.current[X]=z,X==="search")W(),B(),_(1,H);else if(X==="value"){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let re=document.getElementById(T);re?re.focus():(te=document.getElementById(j))==null||te.focus()}if(_(7,()=>{var re;n.current.selectedItemId=(re=I())==null?void 0:re.id,A.emit()}),U||_(5,ee),((ne=l.current)==null?void 0:ne.value)!==void 0){let re=z??"";(se=(G=l.current).onValueChange)==null||se.call(G,re);return}}A.emit()}},emit:()=>{a.current.forEach(X=>X())}}),[]),D=b.useMemo(()=>({value:(X,z,U)=>{var te;z!==((te=i.current.get(X))==null?void 0:te.value)&&(i.current.set(X,{value:z,keywords:U}),n.current.filtered.items.set(X,q(z,U)),_(2,()=>{B(),A.emit()}))},item:(X,z)=>(r.current.add(X),z&&(s.current.has(z)?s.current.get(z).add(X):s.current.set(z,new Set([X]))),_(3,()=>{W(),B(),n.current.value||H(),A.emit()}),()=>{i.current.delete(X),r.current.delete(X),n.current.filtered.items.delete(X);let U=I();_(4,()=>{W(),U?.getAttribute("id")===X&&H(),A.emit()})}),group:X=>(s.current.has(X)||s.current.set(X,new Set),()=>{i.current.delete(X),s.current.delete(X)}),filter:()=>l.current.shouldFilter,label:c||t["aria-label"],getDisablePointerSelection:()=>l.current.disablePointerSelection,listId:j,inputId:T,labelId:N,listInnerRef:E}),[]);function q(X,z){var U,te;let ne=(te=(U=l.current)==null?void 0:U.filter)!=null?te:upe;return X?ne(X,n.current.search,z):0}function B(){if(!n.current.search||l.current.shouldFilter===!1)return;let X=n.current.filtered.items,z=[];n.current.filtered.groups.forEach(te=>{let ne=s.current.get(te),G=0;ne.forEach(se=>{let re=X.get(se);G=Math.max(re,G)}),z.push([te,G])});let U=E.current;V().sort((te,ne)=>{var G,se;let re=te.getAttribute("id"),ae=ne.getAttribute("id");return((G=X.get(ae))!=null?G:0)-((se=X.get(re))!=null?se:0)}).forEach(te=>{let ne=te.closest(bS);ne?ne.appendChild(te.parentElement===ne?te:te.closest(`${bS} > *`)):U.appendChild(te.parentElement===U?te:te.closest(`${bS} > *`))}),z.sort((te,ne)=>ne[1]-te[1]).forEach(te=>{var ne;let G=(ne=E.current)==null?void 0:ne.querySelector(`${Vm}[${kh}="${encodeURIComponent(te[0])}"]`);G?.parentElement.appendChild(G)})}function H(){let X=V().find(U=>U.getAttribute("aria-disabled")!=="true"),z=X?.getAttribute(kh);A.setState("value",z||void 0)}function W(){var X,z,U,te;if(!n.current.search||l.current.shouldFilter===!1){n.current.filtered.count=r.current.size;return}n.current.filtered.groups=new Set;let ne=0;for(let G of r.current){let se=(z=(X=i.current.get(G))==null?void 0:X.value)!=null?z:"",re=(te=(U=i.current.get(G))==null?void 0:U.keywords)!=null?te:[],ae=q(se,re);n.current.filtered.items.set(G,ae),ae>0&&ne++}for(let[G,se]of s.current)for(let re of se)if(n.current.filtered.items.get(re)>0){n.current.filtered.groups.add(G);break}n.current.filtered.count=ne}function ee(){var X,z,U;let te=I();te&&(((X=te.parentElement)==null?void 0:X.firstChild)===te&&((U=(z=te.closest(Vm))==null?void 0:z.querySelector(cpe))==null||U.scrollIntoView({block:"nearest"})),te.scrollIntoView({block:"nearest"}))}function I(){var X;return(X=E.current)==null?void 0:X.querySelector(`${_H}[aria-selected="true"]`)}function V(){var X;return Array.from(((X=E.current)==null?void 0:X.querySelectorAll(jA))||[])}function L(X){let z=V()[X];z&&A.setState("value",z.getAttribute(kh))}function $(X){var z;let U=I(),te=V(),ne=te.findIndex(se=>se===U),G=te[ne+X];(z=l.current)!=null&&z.loop&&(G=ne+X<0?te[te.length-1]:ne+X===te.length?te[0]:te[ne+X]),G&&A.setState("value",G.getAttribute(kh))}function K(X){let z=I(),U=z?.closest(Vm),te;for(;U&&!te;)U=X>0?ype(U,Vm):bpe(U,Vm),te=U?.querySelector(jA);te?A.setState("value",te.getAttribute(kh)):$(X)}let Y=()=>L(V().length-1),R=X=>{X.preventDefault(),X.metaKey?Y():X.altKey?K(1):$(1)},ie=X=>{X.preventDefault(),X.metaKey?L(0):X.altKey?K(-1):$(-1)};return b.createElement(hu.div,{ref:e,tabIndex:-1,...k,"cmdk-root":"",onKeyDown:X=>{var z;(z=k.onKeyDown)==null||z.call(k,X);let U=X.nativeEvent.isComposing||X.keyCode===229;if(!(X.defaultPrevented||U))switch(X.key){case"n":case"j":{S&&X.ctrlKey&&R(X);break}case"ArrowDown":{R(X);break}case"p":case"k":{S&&X.ctrlKey&&ie(X);break}case"ArrowUp":{ie(X);break}case"Home":{X.preventDefault(),L(0);break}case"End":{X.preventDefault(),Y();break}case"Enter":{X.preventDefault();let te=I();if(te){let ne=new Event(yO);te.dispatchEvent(ne)}}}}},b.createElement("label",{"cmdk-label":"",htmlFor:D.inputId,id:D.labelId,style:kpe},c),Cb(t,X=>b.createElement(MH.Provider,{value:A},b.createElement(AH.Provider,{value:D},X))))}),dpe=b.forwardRef((t,e)=>{var n,r;let s=Gi(),i=b.useRef(null),a=b.useContext(RH),l=sg(),c=PH(t),d=(r=(n=c.current)==null?void 0:n.forceMount)!=null?r:a?.forceMount;md(()=>{if(!d)return l.item(s,a?.id)},[d]);let h=zH(s,i,[t.value,t.children,i],t.keywords),m=W6(),g=tu(_=>_.value&&_.value===h.current),x=tu(_=>d||l.filter()===!1?!0:_.search?_.filtered.items.get(s)>0:!0);b.useEffect(()=>{let _=i.current;if(!(!_||t.disabled))return _.addEventListener(yO,y),()=>_.removeEventListener(yO,y)},[x,t.onSelect,t.disabled]);function y(){var _,A;w(),(A=(_=c.current).onSelect)==null||A.call(_,h.current)}function w(){m.setState("value",h.current,!0)}if(!x)return null;let{disabled:S,value:k,onSelect:j,forceMount:N,keywords:T,...E}=t;return b.createElement(hu.div,{ref:Gc(i,e),...E,id:s,"cmdk-item":"",role:"option","aria-disabled":!!S,"aria-selected":!!g,"data-disabled":!!S,"data-selected":!!g,onPointerMove:S||l.getDisablePointerSelection()?void 0:w,onClick:S?void 0:y},t.children)}),hpe=b.forwardRef((t,e)=>{let{heading:n,children:r,forceMount:s,...i}=t,a=Gi(),l=b.useRef(null),c=b.useRef(null),d=Gi(),h=sg(),m=tu(x=>s||h.filter()===!1?!0:x.search?x.filtered.groups.has(a):!0);md(()=>h.group(a),[]),zH(a,l,[t.value,t.heading,c]);let g=b.useMemo(()=>({id:a,forceMount:s}),[s]);return b.createElement(hu.div,{ref:Gc(l,e),...i,"cmdk-group":"",role:"presentation",hidden:m?void 0:!0},n&&b.createElement("div",{ref:c,"cmdk-group-heading":"","aria-hidden":!0,id:d},n),Cb(t,x=>b.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":n?d:void 0},b.createElement(RH.Provider,{value:g},x))))}),fpe=b.forwardRef((t,e)=>{let{alwaysRender:n,...r}=t,s=b.useRef(null),i=tu(a=>!a.search);return!n&&!i?null:b.createElement(hu.div,{ref:Gc(s,e),...r,"cmdk-separator":"",role:"separator"})}),mpe=b.forwardRef((t,e)=>{let{onValueChange:n,...r}=t,s=t.value!=null,i=W6(),a=tu(d=>d.search),l=tu(d=>d.selectedItemId),c=sg();return b.useEffect(()=>{t.value!=null&&i.setState("search",t.value)},[t.value]),b.createElement(hu.input,{ref:e,...r,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":c.listId,"aria-labelledby":c.labelId,"aria-activedescendant":l,id:c.inputId,type:"text",value:s?t.value:a,onChange:d=>{s||i.setState("search",d.target.value),n?.(d.target.value)}})}),ppe=b.forwardRef((t,e)=>{let{children:n,label:r="Suggestions",...s}=t,i=b.useRef(null),a=b.useRef(null),l=tu(d=>d.selectedItemId),c=sg();return b.useEffect(()=>{if(a.current&&i.current){let d=a.current,h=i.current,m,g=new ResizeObserver(()=>{m=requestAnimationFrame(()=>{let x=d.offsetHeight;h.style.setProperty("--cmdk-list-height",x.toFixed(1)+"px")})});return g.observe(d),()=>{cancelAnimationFrame(m),g.unobserve(d)}}},[]),b.createElement(hu.div,{ref:Gc(i,e),...s,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":l,"aria-label":r,id:c.listId},Cb(t,d=>b.createElement("div",{ref:Gc(a,c.listInnerRef),"cmdk-list-sizer":""},d)))}),gpe=b.forwardRef((t,e)=>{let{open:n,onOpenChange:r,overlayClassName:s,contentClassName:i,container:a,...l}=t;return b.createElement(Mj,{open:n,onOpenChange:r},b.createElement(Ej,{container:a},b.createElement(Uy,{"cmdk-overlay":"",className:s}),b.createElement(Wy,{"aria-label":t.label,"cmdk-dialog":"",className:i},b.createElement(DH,{ref:e,...l}))))}),xpe=b.forwardRef((t,e)=>tu(n=>n.filtered.count===0)?b.createElement(hu.div,{ref:e,...t,"cmdk-empty":"",role:"presentation"}):null),vpe=b.forwardRef((t,e)=>{let{progress:n,children:r,label:s="Loading...",...i}=t;return b.createElement(hu.div,{ref:e,...i,"cmdk-loading":"",role:"progressbar","aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":s},Cb(t,a=>b.createElement("div",{"aria-hidden":!0},a)))}),Ei=Object.assign(DH,{List:ppe,Item:dpe,Input:mpe,Group:hpe,Separator:fpe,Dialog:gpe,Empty:xpe,Loading:vpe});function ype(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return n;n=n.nextElementSibling}}function bpe(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return n;n=n.previousElementSibling}}function PH(t){let e=b.useRef(t);return md(()=>{e.current=t}),e}var md=typeof window>"u"?b.useEffect:b.useLayoutEffect;function Oh(t){let e=b.useRef();return e.current===void 0&&(e.current=t()),e}function tu(t){let e=W6(),n=()=>t(e.snapshot());return b.useSyncExternalStore(e.subscribe,n,n)}function zH(t,e,n,r=[]){let s=b.useRef(),i=sg();return md(()=>{var a;let l=(()=>{var d;for(let h of n){if(typeof h=="string")return h.trim();if(typeof h=="object"&&"current"in h)return h.current?(d=h.current.textContent)==null?void 0:d.trim():s.current}})(),c=r.map(d=>d.trim());i.value(t,l,c),(a=e.current)==null||a.setAttribute(kh,l),s.current=l}),s}var wpe=()=>{let[t,e]=b.useState(),n=Oh(()=>new Map);return md(()=>{n.current.forEach(r=>r()),n.current=new Map},[t]),(r,s)=>{n.current.set(r,s),e({})}};function Spe(t){let e=t.type;return typeof e=="function"?e(t.props):"render"in e?e.render(t.props):t}function Cb({asChild:t,children:e},n){return t&&b.isValidElement(e)?b.cloneElement(Spe(e),{ref:e.ref},n(e.props.children)):n(e)}var kpe={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};const Tb=b.forwardRef(({className:t,...e},n)=>o.jsx(Ei,{ref:n,className:xe("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",t),...e}));Tb.displayName=Ei.displayName;const Eb=b.forwardRef(({className:t,...e},n)=>o.jsxs("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[o.jsx(ii,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),o.jsx(Ei.Input,{ref:n,className:xe("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",t),...e})]}));Eb.displayName=Ei.Input.displayName;const _b=b.forwardRef(({className:t,...e},n)=>o.jsx(Ei.List,{ref:n,className:xe("max-h-[300px] overflow-y-auto overflow-x-hidden",t),...e}));_b.displayName=Ei.List.displayName;const Ab=b.forwardRef((t,e)=>o.jsx(Ei.Empty,{ref:e,className:"py-6 text-center text-sm",...t}));Ab.displayName=Ei.Empty.displayName;const up=b.forwardRef(({className:t,...e},n)=>o.jsx(Ei.Group,{ref:n,className:xe("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",t),...e}));up.displayName=Ei.Group.displayName;const Ope=b.forwardRef(({className:t,...e},n)=>o.jsx(Ei.Separator,{ref:n,className:xe("-mx-1 h-px bg-border",t),...e}));Ope.displayName=Ei.Separator.displayName;const dp=b.forwardRef(({className:t,...e},n)=>o.jsx(Ei.Item,{ref:n,className:xe("relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",t),...e}));dp.displayName=Ei.Item.displayName;const Ci=b.forwardRef(({className:t,...e},n)=>o.jsx(bI,{ref:n,className:xe("grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",t),...e,children:o.jsx(zee,{className:xe("grid place-content-center text-current"),children:o.jsx(zo,{className:"h-4 w-4"})})}));Ci.displayName=bI.displayName;const IH=b.createContext(null),LH="maibot-completed-tours";function jpe(){try{const t=localStorage.getItem(LH);return t?new Set(JSON.parse(t)):new Set}catch{return new Set}}function NA(t){localStorage.setItem(LH,JSON.stringify([...t]))}function Npe({children:t}){const[e,n]=b.useState({activeTourId:null,stepIndex:0,isRunning:!1}),r=b.useRef(new Map),[,s]=b.useState(0),[i,a]=b.useState(jpe),l=b.useCallback((N,T)=>{r.current.set(N,T),s(E=>E+1)},[]),c=b.useCallback(N=>{r.current.delete(N),n(T=>T.activeTourId===N?{...T,activeTourId:null,isRunning:!1,stepIndex:0}:T)},[]),d=b.useCallback((N,T=0)=>{r.current.has(N)&&n({activeTourId:N,stepIndex:T,isRunning:!0})},[]),h=b.useCallback(()=>{n(N=>({...N,isRunning:!1}))},[]),m=b.useCallback(N=>{n(T=>({...T,stepIndex:N}))},[]),g=b.useCallback(()=>{n(N=>({...N,stepIndex:N.stepIndex+1}))},[]),x=b.useCallback(()=>{n(N=>({...N,stepIndex:Math.max(0,N.stepIndex-1)}))},[]),y=b.useCallback(()=>e.activeTourId?r.current.get(e.activeTourId)||[]:[],[e.activeTourId]),w=b.useCallback(N=>{a(T=>{const E=new Set(T);return E.add(N),NA(E),E})},[]),S=b.useCallback(N=>{const{action:T,index:E,status:_,type:A}=N,D=["finished","skipped"];if(T==="close"){n(q=>({...q,isRunning:!1,stepIndex:0}));return}D.includes(_)?n(q=>(_==="finished"&&q.activeTourId&&setTimeout(()=>w(q.activeTourId),0),{...q,isRunning:!1,stepIndex:0})):A==="step:after"&&(T==="next"?n(q=>({...q,stepIndex:E+1})):T==="prev"&&n(q=>({...q,stepIndex:E-1})))},[w]),k=b.useCallback(N=>i.has(N),[i]),j=b.useCallback(N=>{a(T=>{const E=new Set(T);return E.delete(N),NA(E),E})},[]);return o.jsx(IH.Provider,{value:{state:e,tours:r.current,registerTour:l,unregisterTour:c,startTour:d,stopTour:h,goToStep:m,nextStep:g,prevStep:x,getCurrentSteps:y,handleJoyrideCallback:S,isTourCompleted:k,markTourCompleted:w,resetTourCompleted:j},children:t})}function BH(t){return e=>typeof e===t}var Cpe=BH("function"),Tpe=t=>t===null,CA=t=>Object.prototype.toString.call(t).slice(8,-1)==="RegExp",TA=t=>!Epe(t)&&!Tpe(t)&&(Cpe(t)||typeof t=="object"),Epe=BH("undefined");function _pe(t,e){const{length:n}=t;if(n!==e.length)return!1;for(let r=n;r--!==0;)if(!ti(t[r],e[r]))return!1;return!0}function Ape(t,e){if(t.byteLength!==e.byteLength)return!1;const n=new DataView(t.buffer),r=new DataView(e.buffer);let s=t.byteLength;for(;s--;)if(n.getUint8(s)!==r.getUint8(s))return!1;return!0}function Mpe(t,e){if(t.size!==e.size)return!1;for(const n of t.entries())if(!e.has(n[0]))return!1;for(const n of t.entries())if(!ti(n[1],e.get(n[0])))return!1;return!0}function Rpe(t,e){if(t.size!==e.size)return!1;for(const n of t.entries())if(!e.has(n[0]))return!1;return!0}function ti(t,e){if(t===e)return!0;if(t&&TA(t)&&e&&TA(e)){if(t.constructor!==e.constructor)return!1;if(Array.isArray(t)&&Array.isArray(e))return _pe(t,e);if(t instanceof Map&&e instanceof Map)return Mpe(t,e);if(t instanceof Set&&e instanceof Set)return Rpe(t,e);if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(e))return Ape(t,e);if(CA(t)&&CA(e))return t.source===e.source&&t.flags===e.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===e.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===e.toString();const n=Object.keys(t),r=Object.keys(e);if(n.length!==r.length)return!1;for(let s=n.length;s--!==0;)if(!Object.prototype.hasOwnProperty.call(e,n[s]))return!1;for(let s=n.length;s--!==0;){const i=n[s];if(!(i==="_owner"&&t.$$typeof)&&!ti(t[i],e[i]))return!1}return!0}return Number.isNaN(t)&&Number.isNaN(e)?!0:t===e}var Dpe=["Array","ArrayBuffer","AsyncFunction","AsyncGenerator","AsyncGeneratorFunction","Date","Error","Function","Generator","GeneratorFunction","HTMLElement","Map","Object","Promise","RegExp","Set","WeakMap","WeakSet"],Ppe=["bigint","boolean","null","number","string","symbol","undefined"];function Mb(t){const e=Object.prototype.toString.call(t).slice(8,-1);if(/HTML\w+Element/.test(e))return"HTMLElement";if(zpe(e))return e}function io(t){return e=>Mb(e)===t}function zpe(t){return Dpe.includes(t)}function Df(t){return e=>typeof e===t}function Ipe(t){return Ppe.includes(t)}var Lpe=["innerHTML","ownerDocument","style","attributes","nodeValue"];function at(t){if(t===null)return"null";switch(typeof t){case"bigint":return"bigint";case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"symbol":return"symbol";case"undefined":return"undefined"}if(at.array(t))return"Array";if(at.plainFunction(t))return"Function";const e=Mb(t);return e||"Object"}at.array=Array.isArray;at.arrayOf=(t,e)=>!at.array(t)&&!at.function(e)?!1:t.every(n=>e(n));at.asyncGeneratorFunction=t=>Mb(t)==="AsyncGeneratorFunction";at.asyncFunction=io("AsyncFunction");at.bigint=Df("bigint");at.boolean=t=>t===!0||t===!1;at.date=io("Date");at.defined=t=>!at.undefined(t);at.domElement=t=>at.object(t)&&!at.plainObject(t)&&t.nodeType===1&&at.string(t.nodeName)&&Lpe.every(e=>e in t);at.empty=t=>at.string(t)&&t.length===0||at.array(t)&&t.length===0||at.object(t)&&!at.map(t)&&!at.set(t)&&Object.keys(t).length===0||at.set(t)&&t.size===0||at.map(t)&&t.size===0;at.error=io("Error");at.function=Df("function");at.generator=t=>at.iterable(t)&&at.function(t.next)&&at.function(t.throw);at.generatorFunction=io("GeneratorFunction");at.instanceOf=(t,e)=>!t||!e?!1:Object.getPrototypeOf(t)===e.prototype;at.iterable=t=>!at.nullOrUndefined(t)&&at.function(t[Symbol.iterator]);at.map=io("Map");at.nan=t=>Number.isNaN(t);at.null=t=>t===null;at.nullOrUndefined=t=>at.null(t)||at.undefined(t);at.number=t=>Df("number")(t)&&!at.nan(t);at.numericString=t=>at.string(t)&&t.length>0&&!Number.isNaN(Number(t));at.object=t=>!at.nullOrUndefined(t)&&(at.function(t)||typeof t=="object");at.oneOf=(t,e)=>at.array(t)?t.indexOf(e)>-1:!1;at.plainFunction=io("Function");at.plainObject=t=>{if(Mb(t)!=="Object")return!1;const e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};at.primitive=t=>at.null(t)||Ipe(typeof t);at.promise=io("Promise");at.propertyOf=(t,e,n)=>{if(!at.object(t)||!e)return!1;const r=t[e];return at.function(n)?n(r):at.defined(r)};at.regexp=io("RegExp");at.set=io("Set");at.string=Df("string");at.symbol=Df("symbol");at.undefined=Df("undefined");at.weakMap=io("WeakMap");at.weakSet=io("WeakSet");var pt=at;function Bpe(...t){return t.every(e=>pt.string(e)||pt.array(e)||pt.plainObject(e))}function Fpe(t,e,n){return FH(t,e)?[t,e].every(pt.array)?!t.some(RA(n))&&e.some(RA(n)):[t,e].every(pt.plainObject)?!Object.entries(t).some(MA(n))&&Object.entries(e).some(MA(n)):e===n:!1}function EA(t,e,n){const{actual:r,key:s,previous:i,type:a}=n,l=_o(t,s),c=_o(e,s);let d=[l,c].every(pt.number)&&(a==="increased"?lc);return pt.undefined(r)||(d=d&&c===r),pt.undefined(i)||(d=d&&l===i),d}function _A(t,e,n){const{key:r,type:s,value:i}=n,a=_o(t,r),l=_o(e,r),c=s==="added"?a:l,d=s==="added"?l:a;if(!pt.nullOrUndefined(i)){if(pt.defined(c)){if(pt.array(c)||pt.plainObject(c))return Fpe(c,d,i)}else return ti(d,i);return!1}return[a,l].every(pt.array)?!d.every(G6(c)):[a,l].every(pt.plainObject)?qpe(Object.keys(c),Object.keys(d)):![a,l].every(h=>pt.primitive(h)&&pt.defined(h))&&(s==="added"?!pt.defined(a)&&pt.defined(l):pt.defined(a)&&!pt.defined(l))}function AA(t,e,{key:n}={}){let r=_o(t,n),s=_o(e,n);if(!FH(r,s))throw new TypeError("Inputs have different types");if(!Bpe(r,s))throw new TypeError("Inputs don't have length");return[r,s].every(pt.plainObject)&&(r=Object.keys(r),s=Object.keys(s)),[r,s]}function MA(t){return([e,n])=>pt.array(t)?ti(t,n)||t.some(r=>ti(r,n)||pt.array(n)&&G6(n)(r)):pt.plainObject(t)&&t[e]?!!t[e]&&ti(t[e],n):ti(t,n)}function qpe(t,e){return e.some(n=>!t.includes(n))}function RA(t){return e=>pt.array(t)?t.some(n=>ti(n,e)||pt.array(e)&&G6(e)(n)):ti(t,e)}function Um(t,e){return pt.array(t)?t.some(n=>ti(n,e)):ti(t,e)}function G6(t){return e=>t.some(n=>ti(n,e))}function FH(...t){return t.every(pt.array)||t.every(pt.number)||t.every(pt.plainObject)||t.every(pt.string)}function _o(t,e){return pt.plainObject(t)||pt.array(t)?pt.string(e)?e.split(".").reduce((r,s)=>r&&r[s],t):pt.number(e)?t[e]:t:t}function py(t,e){if([t,e].some(pt.nullOrUndefined))throw new Error("Missing required parameters");if(![t,e].every(h=>pt.plainObject(h)||pt.array(h)))throw new Error("Expected plain objects or array");return{added:(h,m)=>{try{return _A(t,e,{key:h,type:"added",value:m})}catch{return!1}},changed:(h,m,g)=>{try{const x=_o(t,h),y=_o(e,h),w=pt.defined(m),S=pt.defined(g);if(w||S){const k=S?Um(g,x):!Um(m,x),j=Um(m,y);return k&&j}return[x,y].every(pt.array)||[x,y].every(pt.plainObject)?!ti(x,y):x!==y}catch{return!1}},changedFrom:(h,m,g)=>{if(!pt.defined(h))return!1;try{const x=_o(t,h),y=_o(e,h),w=pt.defined(g);return Um(m,x)&&(w?Um(g,y):!w)}catch{return!1}},decreased:(h,m,g)=>{if(!pt.defined(h))return!1;try{return EA(t,e,{key:h,actual:m,previous:g,type:"decreased"})}catch{return!1}},emptied:h=>{try{const[m,g]=AA(t,e,{key:h});return!!m.length&&!g.length}catch{return!1}},filled:h=>{try{const[m,g]=AA(t,e,{key:h});return!m.length&&!!g.length}catch{return!1}},increased:(h,m,g)=>{if(!pt.defined(h))return!1;try{return EA(t,e,{key:h,actual:m,previous:g,type:"increased"})}catch{return!1}},removed:(h,m)=>{try{return _A(t,e,{key:h,type:"removed",value:m})}catch{return!1}}}}var wS,DA;function $pe(){if(DA)return wS;DA=1;var t=new Error("Element already at target scroll position"),e=new Error("Scroll cancelled"),n=Math.min,r=Date.now;wS={left:s("scrollLeft"),top:s("scrollTop")};function s(l){return function(d,h,m,g){m=m||{},typeof m=="function"&&(g=m,m={}),typeof g!="function"&&(g=a);var x=r(),y=d[l],w=m.ease||i,S=isNaN(m.duration)?350:+m.duration,k=!1;return y===h?g(t,d[l]):requestAnimationFrame(N),j;function j(){k=!0}function N(T){if(k)return g(e,d[l]);var E=r(),_=n(1,(E-x)/S),A=w(_);d[l]=A*(h-y)+y,_<1?requestAnimationFrame(N):requestAnimationFrame(function(){g(null,d[l])})}}}function i(l){return .5*(1-Math.cos(Math.PI*l))}function a(){}return wS}var Hpe=$pe();const Qpe=yd(Hpe);var Ov={exports:{}},Vpe=Ov.exports,PA;function Upe(){return PA||(PA=1,(function(t){(function(e,n){t.exports?t.exports=n():e.Scrollparent=n()})(Vpe,function(){function e(r){var s=getComputedStyle(r,null).getPropertyValue("overflow");return s.indexOf("scroll")>-1||s.indexOf("auto")>-1}function n(r){if(r instanceof HTMLElement||r instanceof SVGElement){for(var s=r.parentNode;s.parentNode;){if(e(s))return s;s=s.parentNode}return document.scrollingElement||document.documentElement}}return n})})(Ov)),Ov.exports}var Wpe=Upe();const qH=yd(Wpe);var SS,zA;function Gpe(){if(zA)return SS;zA=1;var t=function(r){return Object.prototype.hasOwnProperty.call(r,"props")},e=function(r,s){return r+n(s)},n=function(r){return r===null||typeof r=="boolean"||typeof r>"u"?"":typeof r=="number"?r.toString():typeof r=="string"?r:Array.isArray(r)?r.reduce(e,""):t(r)&&Object.prototype.hasOwnProperty.call(r.props,"children")?n(r.props.children):""};return n.default=n,SS=n,SS}var Xpe=Gpe();const IA=yd(Xpe);var kS,LA;function Ype(){if(LA)return kS;LA=1;var t=function(j){return e(j)&&!n(j)};function e(k){return!!k&&typeof k=="object"}function n(k){var j=Object.prototype.toString.call(k);return j==="[object RegExp]"||j==="[object Date]"||i(k)}var r=typeof Symbol=="function"&&Symbol.for,s=r?Symbol.for("react.element"):60103;function i(k){return k.$$typeof===s}function a(k){return Array.isArray(k)?[]:{}}function l(k,j){return j.clone!==!1&&j.isMergeableObject(k)?w(a(k),k,j):k}function c(k,j,N){return k.concat(j).map(function(T){return l(T,N)})}function d(k,j){if(!j.customMerge)return w;var N=j.customMerge(k);return typeof N=="function"?N:w}function h(k){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(k).filter(function(j){return Object.propertyIsEnumerable.call(k,j)}):[]}function m(k){return Object.keys(k).concat(h(k))}function g(k,j){try{return j in k}catch{return!1}}function x(k,j){return g(k,j)&&!(Object.hasOwnProperty.call(k,j)&&Object.propertyIsEnumerable.call(k,j))}function y(k,j,N){var T={};return N.isMergeableObject(k)&&m(k).forEach(function(E){T[E]=l(k[E],N)}),m(j).forEach(function(E){x(k,E)||(g(k,E)&&N.isMergeableObject(j[E])?T[E]=d(E,N)(k[E],j[E],N):T[E]=l(j[E],N))}),T}function w(k,j,N){N=N||{},N.arrayMerge=N.arrayMerge||c,N.isMergeableObject=N.isMergeableObject||t,N.cloneUnlessOtherwiseSpecified=l;var T=Array.isArray(j),E=Array.isArray(k),_=T===E;return _?T?N.arrayMerge(k,j,N):y(k,j,N):l(j,N)}w.all=function(j,N){if(!Array.isArray(j))throw new Error("first argument should be an array");return j.reduce(function(T,E){return w(T,E,N)},{})};var S=w;return kS=S,kS}var Kpe=Ype();const Ua=yd(Kpe);var ig=typeof window<"u"&&typeof document<"u"&&typeof navigator<"u",Zpe=(function(){for(var t=["Edge","Trident","Firefox"],e=0;e=0)return 1;return 0})();function Jpe(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then(function(){e=!1,t()}))}}function ege(t){var e=!1;return function(){e||(e=!0,setTimeout(function(){e=!1,t()},Zpe))}}var tge=ig&&window.Promise,nge=tge?Jpe:ege;function $H(t){var e={};return t&&e.toString.call(t)==="[object Function]"}function Sd(t,e){if(t.nodeType!==1)return[];var n=t.ownerDocument.defaultView,r=n.getComputedStyle(t,null);return e?r[e]:r}function X6(t){return t.nodeName==="HTML"?t:t.parentNode||t.host}function ag(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=Sd(t),n=e.overflow,r=e.overflowX,s=e.overflowY;return/(auto|scroll|overlay)/.test(n+s+r)?t:ag(X6(t))}function HH(t){return t&&t.referenceNode?t.referenceNode:t}var BA=ig&&!!(window.MSInputMethodContext&&document.documentMode),FA=ig&&/MSIE 10/.test(navigator.userAgent);function Pf(t){return t===11?BA:t===10?FA:BA||FA}function lf(t){if(!t)return document.documentElement;for(var e=Pf(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var r=n&&n.nodeName;return!r||r==="BODY"||r==="HTML"?t?t.ownerDocument.documentElement:document.documentElement:["TH","TD","TABLE"].indexOf(n.nodeName)!==-1&&Sd(n,"position")==="static"?lf(n):n}function rge(t){var e=t.nodeName;return e==="BODY"?!1:e==="HTML"||lf(t.firstElementChild)===t}function bO(t){return t.parentNode!==null?bO(t.parentNode):t}function gy(t,e){if(!t||!t.nodeType||!e||!e.nodeType)return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,r=n?t:e,s=n?e:t,i=document.createRange();i.setStart(r,0),i.setEnd(s,0);var a=i.commonAncestorContainer;if(t!==a&&e!==a||r.contains(s))return rge(a)?a:lf(a);var l=bO(t);return l.host?gy(l.host,e):gy(t,bO(e).host)}function cf(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"top",n=e==="top"?"scrollTop":"scrollLeft",r=t.nodeName;if(r==="BODY"||r==="HTML"){var s=t.ownerDocument.documentElement,i=t.ownerDocument.scrollingElement||s;return i[n]}return t[n]}function sge(t,e){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,r=cf(e,"top"),s=cf(e,"left"),i=n?-1:1;return t.top+=r*i,t.bottom+=r*i,t.left+=s*i,t.right+=s*i,t}function qA(t,e){var n=e==="x"?"Left":"Top",r=n==="Left"?"Right":"Bottom";return parseFloat(t["border"+n+"Width"])+parseFloat(t["border"+r+"Width"])}function $A(t,e,n,r){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],Pf(10)?parseInt(n["offset"+t])+parseInt(r["margin"+(t==="Height"?"Top":"Left")])+parseInt(r["margin"+(t==="Height"?"Bottom":"Right")]):0)}function QH(t){var e=t.body,n=t.documentElement,r=Pf(10)&&getComputedStyle(n);return{height:$A("Height",e,n,r),width:$A("Width",e,n,r)}}var ige=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},age=(function(){function t(e,n){for(var r=0;r2&&arguments[2]!==void 0?arguments[2]:!1,r=Pf(10),s=e.nodeName==="HTML",i=wO(t),a=wO(e),l=ag(t),c=Sd(e),d=parseFloat(c.borderTopWidth),h=parseFloat(c.borderLeftWidth);n&&s&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var m=nu({top:i.top-a.top-d,left:i.left-a.left-h,width:i.width,height:i.height});if(m.marginTop=0,m.marginLeft=0,!r&&s){var g=parseFloat(c.marginTop),x=parseFloat(c.marginLeft);m.top-=d-g,m.bottom-=d-g,m.left-=h-x,m.right-=h-x,m.marginTop=g,m.marginLeft=x}return(r&&!n?e.contains(l):e===l&&l.nodeName!=="BODY")&&(m=sge(m,e)),m}function oge(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=t.ownerDocument.documentElement,r=Y6(t,n),s=Math.max(n.clientWidth,window.innerWidth||0),i=Math.max(n.clientHeight,window.innerHeight||0),a=e?0:cf(n),l=e?0:cf(n,"left"),c={top:a-r.top+r.marginTop,left:l-r.left+r.marginLeft,width:s,height:i};return nu(c)}function VH(t){var e=t.nodeName;if(e==="BODY"||e==="HTML")return!1;if(Sd(t,"position")==="fixed")return!0;var n=X6(t);return n?VH(n):!1}function UH(t){if(!t||!t.parentElement||Pf())return document.documentElement;for(var e=t.parentElement;e&&Sd(e,"transform")==="none";)e=e.parentElement;return e||document.documentElement}function K6(t,e,n,r){var s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1,i={top:0,left:0},a=s?UH(t):gy(t,HH(e));if(r==="viewport")i=oge(a,s);else{var l=void 0;r==="scrollParent"?(l=ag(X6(e)),l.nodeName==="BODY"&&(l=t.ownerDocument.documentElement)):r==="window"?l=t.ownerDocument.documentElement:l=r;var c=Y6(l,a,s);if(l.nodeName==="HTML"&&!VH(a)){var d=QH(t.ownerDocument),h=d.height,m=d.width;i.top+=c.top-c.marginTop,i.bottom=h+c.top,i.left+=c.left-c.marginLeft,i.right=m+c.left}else i=c}n=n||0;var g=typeof n=="number";return i.left+=g?n:n.left||0,i.top+=g?n:n.top||0,i.right-=g?n:n.right||0,i.bottom-=g?n:n.bottom||0,i}function lge(t){var e=t.width,n=t.height;return e*n}function WH(t,e,n,r,s){var i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0;if(t.indexOf("auto")===-1)return t;var a=K6(n,r,i,s),l={top:{width:a.width,height:e.top-a.top},right:{width:a.right-e.right,height:a.height},bottom:{width:a.width,height:a.bottom-e.bottom},left:{width:e.left-a.left,height:a.height}},c=Object.keys(l).map(function(g){return ja({key:g},l[g],{area:lge(l[g])})}).sort(function(g,x){return x.area-g.area}),d=c.filter(function(g){var x=g.width,y=g.height;return x>=n.clientWidth&&y>=n.clientHeight}),h=d.length>0?d[0].key:c[0].key,m=t.split("-")[1];return h+(m?"-"+m:"")}function GH(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,s=r?UH(e):gy(e,HH(n));return Y6(n,s,r)}function XH(t){var e=t.ownerDocument.defaultView,n=e.getComputedStyle(t),r=parseFloat(n.marginTop||0)+parseFloat(n.marginBottom||0),s=parseFloat(n.marginLeft||0)+parseFloat(n.marginRight||0),i={width:t.offsetWidth+s,height:t.offsetHeight+r};return i}function xy(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,function(n){return e[n]})}function YH(t,e,n){n=n.split("-")[0];var r=XH(t),s={width:r.width,height:r.height},i=["right","left"].indexOf(n)!==-1,a=i?"top":"left",l=i?"left":"top",c=i?"height":"width",d=i?"width":"height";return s[a]=e[a]+e[c]/2-r[c]/2,n===l?s[l]=e[l]-r[d]:s[l]=e[xy(l)],s}function og(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function cge(t,e,n){if(Array.prototype.findIndex)return t.findIndex(function(s){return s[e]===n});var r=og(t,function(s){return s[e]===n});return t.indexOf(r)}function KH(t,e,n){var r=n===void 0?t:t.slice(0,cge(t,"name",n));return r.forEach(function(s){s.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var i=s.function||s.fn;s.enabled&&$H(i)&&(e.offsets.popper=nu(e.offsets.popper),e.offsets.reference=nu(e.offsets.reference),e=i(e,s))}),e}function uge(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=GH(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=WH(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=YH(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=KH(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}function ZH(t,e){return t.some(function(n){var r=n.name,s=n.enabled;return s&&r===e})}function Z6(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),r=0;ra[x]&&(t.offsets.popper[m]+=l[m]+y-a[x]),t.offsets.popper=nu(t.offsets.popper);var w=l[m]+l[d]/2-y/2,S=Sd(t.instance.popper),k=parseFloat(S["margin"+h]),j=parseFloat(S["border"+h+"Width"]),N=w-t.offsets.popper[m]-k-j;return N=Math.max(Math.min(a[d]-y,N),0),t.arrowElement=r,t.offsets.arrow=(n={},uf(n,m,Math.round(N)),uf(n,g,""),n),t}function kge(t){return t==="end"?"start":t==="start"?"end":t}var nQ=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],OS=nQ.slice(3);function HA(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=OS.indexOf(t),r=OS.slice(n+1).concat(OS.slice(0,n));return e?r.reverse():r}var jS={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function Oge(t,e){if(ZH(t.instance.modifiers,"inner")||t.flipped&&t.placement===t.originalPlacement)return t;var n=K6(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),r=t.placement.split("-")[0],s=xy(r),i=t.placement.split("-")[1]||"",a=[];switch(e.behavior){case jS.FLIP:a=[r,s];break;case jS.CLOCKWISE:a=HA(r);break;case jS.COUNTERCLOCKWISE:a=HA(r,!0);break;default:a=e.behavior}return a.forEach(function(l,c){if(r!==l||a.length===c+1)return t;r=t.placement.split("-")[0],s=xy(r);var d=t.offsets.popper,h=t.offsets.reference,m=Math.floor,g=r==="left"&&m(d.right)>m(h.left)||r==="right"&&m(d.left)m(h.top)||r==="bottom"&&m(d.top)m(n.right),w=m(d.top)m(n.bottom),k=r==="left"&&x||r==="right"&&y||r==="top"&&w||r==="bottom"&&S,j=["top","bottom"].indexOf(r)!==-1,N=!!e.flipVariations&&(j&&i==="start"&&x||j&&i==="end"&&y||!j&&i==="start"&&w||!j&&i==="end"&&S),T=!!e.flipVariationsByContent&&(j&&i==="start"&&y||j&&i==="end"&&x||!j&&i==="start"&&S||!j&&i==="end"&&w),E=N||T;(g||k||E)&&(t.flipped=!0,(g||k)&&(r=a[c+1]),E&&(i=kge(i)),t.placement=r+(i?"-"+i:""),t.offsets.popper=ja({},t.offsets.popper,YH(t.instance.popper,t.offsets.reference,t.placement)),t=KH(t.instance.modifiers,t,"flip"))}),t}function jge(t){var e=t.offsets,n=e.popper,r=e.reference,s=t.placement.split("-")[0],i=Math.floor,a=["top","bottom"].indexOf(s)!==-1,l=a?"right":"bottom",c=a?"left":"top",d=a?"width":"height";return n[l]i(r[l])&&(t.offsets.popper[c]=i(r[l])),t}function Nge(t,e,n,r){var s=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),i=+s[1],a=s[2];if(!i)return t;if(a.indexOf("%")===0){var l=void 0;switch(a){case"%p":l=n;break;case"%":case"%r":default:l=r}var c=nu(l);return c[e]/100*i}else if(a==="vh"||a==="vw"){var d=void 0;return a==="vh"?d=Math.max(document.documentElement.clientHeight,window.innerHeight||0):d=Math.max(document.documentElement.clientWidth,window.innerWidth||0),d/100*i}else return i}function Cge(t,e,n,r){var s=[0,0],i=["right","left"].indexOf(r)!==-1,a=t.split(/(\+|\-)/).map(function(h){return h.trim()}),l=a.indexOf(og(a,function(h){return h.search(/,|\s/)!==-1}));a[l]&&a[l].indexOf(",")===-1&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var c=/\s*,\s*|\s+/,d=l!==-1?[a.slice(0,l).concat([a[l].split(c)[0]]),[a[l].split(c)[1]].concat(a.slice(l+1))]:[a];return d=d.map(function(h,m){var g=(m===1?!i:i)?"height":"width",x=!1;return h.reduce(function(y,w){return y[y.length-1]===""&&["+","-"].indexOf(w)!==-1?(y[y.length-1]=w,x=!0,y):x?(y[y.length-1]+=w,x=!1,y):y.concat(w)},[]).map(function(y){return Nge(y,g,e,n)})}),d.forEach(function(h,m){h.forEach(function(g,x){J6(g)&&(s[m]+=g*(h[x-1]==="-"?-1:1))})}),s}function Tge(t,e){var n=e.offset,r=t.placement,s=t.offsets,i=s.popper,a=s.reference,l=r.split("-")[0],c=void 0;return J6(+n)?c=[+n,0]:c=Cge(n,i,a,l),l==="left"?(i.top+=c[0],i.left-=c[1]):l==="right"?(i.top+=c[0],i.left+=c[1]):l==="top"?(i.left+=c[0],i.top-=c[1]):l==="bottom"&&(i.left+=c[0],i.top+=c[1]),t.popper=i,t}function Ege(t,e){var n=e.boundariesElement||lf(t.instance.popper);t.instance.reference===n&&(n=lf(n));var r=Z6("transform"),s=t.instance.popper.style,i=s.top,a=s.left,l=s[r];s.top="",s.left="",s[r]="";var c=K6(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);s.top=i,s.left=a,s[r]=l,e.boundaries=c;var d=e.priority,h=t.offsets.popper,m={primary:function(x){var y=h[x];return h[x]c[x]&&!e.escapeWithReference&&(w=Math.min(h[y],c[x]-(x==="right"?h.width:h.height))),uf({},y,w)}};return d.forEach(function(g){var x=["left","top"].indexOf(g)!==-1?"primary":"secondary";h=ja({},h,m[x](g))}),t.offsets.popper=h,t}function _ge(t){var e=t.placement,n=e.split("-")[0],r=e.split("-")[1];if(r){var s=t.offsets,i=s.reference,a=s.popper,l=["bottom","top"].indexOf(n)!==-1,c=l?"left":"top",d=l?"width":"height",h={start:uf({},c,i[c]),end:uf({},c,i[c]+i[d]-a[d])};t.offsets.popper=ja({},a,h[r])}return t}function Age(t){if(!tQ(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=og(t.instance.modifiers,function(r){return r.name==="preventOverflow"}).boundaries;if(e.bottomn.right||e.top>n.bottom||e.right2&&arguments[2]!==void 0?arguments[2]:{};ige(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(r.update)},this.update=nge(this.update.bind(this)),this.options=ja({},t.Defaults,s),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(ja({},t.Defaults.modifiers,s.modifiers)).forEach(function(a){r.options.modifiers[a]=ja({},t.Defaults.modifiers[a]||{},s.modifiers?s.modifiers[a]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(a){return ja({name:a},r.options.modifiers[a])}).sort(function(a,l){return a.order-l.order}),this.modifiers.forEach(function(a){a.enabled&&$H(a.onLoad)&&a.onLoad(r.reference,r.popper,r.options,a,r.state)}),this.update();var i=this.options.eventsEnabled;i&&this.enableEventListeners(),this.state.eventsEnabled=i}return age(t,[{key:"update",value:function(){return uge.call(this)}},{key:"destroy",value:function(){return dge.call(this)}},{key:"enableEventListeners",value:function(){return fge.call(this)}},{key:"disableEventListeners",value:function(){return pge.call(this)}}]),t})();hp.Utils=(typeof window<"u"?window:global).PopperUtils;hp.placements=nQ;hp.Defaults=Dge;var Pge=["innerHTML","ownerDocument","style","attributes","nodeValue"],zge=["Array","ArrayBuffer","AsyncFunction","AsyncGenerator","AsyncGeneratorFunction","Date","Error","Function","Generator","GeneratorFunction","HTMLElement","Map","Object","Promise","RegExp","Set","WeakMap","WeakSet"],Ige=["bigint","boolean","null","number","string","symbol","undefined"];function Rb(t){var e=Object.prototype.toString.call(t).slice(8,-1);if(/HTML\w+Element/.test(e))return"HTMLElement";if(Lge(e))return e}function ao(t){return function(e){return Rb(e)===t}}function Lge(t){return zge.includes(t)}function zf(t){return function(e){return typeof e===t}}function Bge(t){return Ige.includes(t)}function Ee(t){if(t===null)return"null";switch(typeof t){case"bigint":return"bigint";case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"symbol":return"symbol";case"undefined":return"undefined"}if(Ee.array(t))return"Array";if(Ee.plainFunction(t))return"Function";var e=Rb(t);return e||"Object"}Ee.array=Array.isArray;Ee.arrayOf=function(t,e){return!Ee.array(t)&&!Ee.function(e)?!1:t.every(function(n){return e(n)})};Ee.asyncGeneratorFunction=function(t){return Rb(t)==="AsyncGeneratorFunction"};Ee.asyncFunction=ao("AsyncFunction");Ee.bigint=zf("bigint");Ee.boolean=function(t){return t===!0||t===!1};Ee.date=ao("Date");Ee.defined=function(t){return!Ee.undefined(t)};Ee.domElement=function(t){return Ee.object(t)&&!Ee.plainObject(t)&&t.nodeType===1&&Ee.string(t.nodeName)&&Pge.every(function(e){return e in t})};Ee.empty=function(t){return Ee.string(t)&&t.length===0||Ee.array(t)&&t.length===0||Ee.object(t)&&!Ee.map(t)&&!Ee.set(t)&&Object.keys(t).length===0||Ee.set(t)&&t.size===0||Ee.map(t)&&t.size===0};Ee.error=ao("Error");Ee.function=zf("function");Ee.generator=function(t){return Ee.iterable(t)&&Ee.function(t.next)&&Ee.function(t.throw)};Ee.generatorFunction=ao("GeneratorFunction");Ee.instanceOf=function(t,e){return!t||!e?!1:Object.getPrototypeOf(t)===e.prototype};Ee.iterable=function(t){return!Ee.nullOrUndefined(t)&&Ee.function(t[Symbol.iterator])};Ee.map=ao("Map");Ee.nan=function(t){return Number.isNaN(t)};Ee.null=function(t){return t===null};Ee.nullOrUndefined=function(t){return Ee.null(t)||Ee.undefined(t)};Ee.number=function(t){return zf("number")(t)&&!Ee.nan(t)};Ee.numericString=function(t){return Ee.string(t)&&t.length>0&&!Number.isNaN(Number(t))};Ee.object=function(t){return!Ee.nullOrUndefined(t)&&(Ee.function(t)||typeof t=="object")};Ee.oneOf=function(t,e){return Ee.array(t)?t.indexOf(e)>-1:!1};Ee.plainFunction=ao("Function");Ee.plainObject=function(t){if(Rb(t)!=="Object")return!1;var e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};Ee.primitive=function(t){return Ee.null(t)||Bge(typeof t)};Ee.promise=ao("Promise");Ee.propertyOf=function(t,e,n){if(!Ee.object(t)||!e)return!1;var r=t[e];return Ee.function(n)?n(r):Ee.defined(r)};Ee.regexp=ao("RegExp");Ee.set=ao("Set");Ee.string=zf("string");Ee.symbol=zf("symbol");Ee.undefined=zf("undefined");Ee.weakMap=ao("WeakMap");Ee.weakSet=ao("WeakSet");function rQ(t){return function(e){return typeof e===t}}var Fge=rQ("function"),qge=function(t){return t===null},QA=function(t){return Object.prototype.toString.call(t).slice(8,-1)==="RegExp"},VA=function(t){return!$ge(t)&&!qge(t)&&(Fge(t)||typeof t=="object")},$ge=rQ("undefined"),kO=function(t){var e=typeof Symbol=="function"&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")};function Hge(t,e){var n=t.length;if(n!==e.length)return!1;for(var r=n;r--!==0;)if(!Si(t[r],e[r]))return!1;return!0}function Qge(t,e){if(t.byteLength!==e.byteLength)return!1;for(var n=new DataView(t.buffer),r=new DataView(e.buffer),s=t.byteLength;s--;)if(n.getUint8(s)!==r.getUint8(s))return!1;return!0}function Vge(t,e){var n,r,s,i;if(t.size!==e.size)return!1;try{for(var a=kO(t.entries()),l=a.next();!l.done;l=a.next()){var c=l.value;if(!e.has(c[0]))return!1}}catch(m){n={error:m}}finally{try{l&&!l.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}try{for(var d=kO(t.entries()),h=d.next();!h.done;h=d.next()){var c=h.value;if(!Si(c[1],e.get(c[0])))return!1}}catch(m){s={error:m}}finally{try{h&&!h.done&&(i=d.return)&&i.call(d)}finally{if(s)throw s.error}}return!0}function Uge(t,e){var n,r;if(t.size!==e.size)return!1;try{for(var s=kO(t.entries()),i=s.next();!i.done;i=s.next()){var a=i.value;if(!e.has(a[0]))return!1}}catch(l){n={error:l}}finally{try{i&&!i.done&&(r=s.return)&&r.call(s)}finally{if(n)throw n.error}}return!0}function Si(t,e){if(t===e)return!0;if(t&&VA(t)&&e&&VA(e)){if(t.constructor!==e.constructor)return!1;if(Array.isArray(t)&&Array.isArray(e))return Hge(t,e);if(t instanceof Map&&e instanceof Map)return Vge(t,e);if(t instanceof Set&&e instanceof Set)return Uge(t,e);if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(e))return Qge(t,e);if(QA(t)&&QA(e))return t.source===e.source&&t.flags===e.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===e.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===e.toString();var n=Object.keys(t),r=Object.keys(e);if(n.length!==r.length)return!1;for(var s=n.length;s--!==0;)if(!Object.prototype.hasOwnProperty.call(e,n[s]))return!1;for(var s=n.length;s--!==0;){var i=n[s];if(!(i==="_owner"&&t.$$typeof)&&!Si(t[i],e[i]))return!1}return!0}return Number.isNaN(t)&&Number.isNaN(e)?!0:t===e}function Wge(){for(var t=[],e=0;ec);return Ee.undefined(r)||(d=d&&c===r),Ee.undefined(i)||(d=d&&l===i),d}function WA(t,e,n){var r=n.key,s=n.type,i=n.value,a=Ao(t,r),l=Ao(e,r),c=s==="added"?a:l,d=s==="added"?l:a;if(!Ee.nullOrUndefined(i)){if(Ee.defined(c)){if(Ee.array(c)||Ee.plainObject(c))return Gge(c,d,i)}else return Si(d,i);return!1}return[a,l].every(Ee.array)?!d.every(eN(c)):[a,l].every(Ee.plainObject)?Xge(Object.keys(c),Object.keys(d)):![a,l].every(function(h){return Ee.primitive(h)&&Ee.defined(h)})&&(s==="added"?!Ee.defined(a)&&Ee.defined(l):Ee.defined(a)&&!Ee.defined(l))}function GA(t,e,n){var r=n===void 0?{}:n,s=r.key,i=Ao(t,s),a=Ao(e,s);if(!sQ(i,a))throw new TypeError("Inputs have different types");if(!Wge(i,a))throw new TypeError("Inputs don't have length");return[i,a].every(Ee.plainObject)&&(i=Object.keys(i),a=Object.keys(a)),[i,a]}function XA(t){return function(e){var n=e[0],r=e[1];return Ee.array(t)?Si(t,r)||t.some(function(s){return Si(s,r)||Ee.array(r)&&eN(r)(s)}):Ee.plainObject(t)&&t[n]?!!t[n]&&Si(t[n],r):Si(t,r)}}function Xge(t,e){return e.some(function(n){return!t.includes(n)})}function YA(t){return function(e){return Ee.array(t)?t.some(function(n){return Si(n,e)||Ee.array(e)&&eN(e)(n)}):Si(t,e)}}function Wm(t,e){return Ee.array(t)?t.some(function(n){return Si(n,e)}):Si(t,e)}function eN(t){return function(e){return t.some(function(n){return Si(n,e)})}}function sQ(){for(var t=[],e=0;e"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Jge(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i=0)&&(n[s]=t[s]);return n}function iQ(t,e){if(t==null)return{};var n=Jge(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function El(t){if(t===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function exe(t,e){if(e&&(typeof e=="object"||typeof e=="function"))return e;if(e!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return El(t)}function dg(t){var e=Zge();return function(){var r=vy(t),s;if(e){var i=vy(this).constructor;s=Reflect.construct(r,arguments,i)}else s=r.apply(this,arguments);return exe(this,s)}}function txe(t,e){if(typeof t!="object"||t===null)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function aQ(t){var e=txe(t,"string");return typeof e=="symbol"?e:String(e)}var nxe={flip:{padding:20},preventOverflow:{padding:10}},rxe="The typeValidator argument must be a function with the signature function(props, propName, componentName).",sxe="The error message is optional, but must be a string if provided.";function ixe(t,e,n,r){return typeof t=="boolean"?t:typeof t=="function"?t(e,n,r):t?!!t:!1}function axe(t,e){return Object.hasOwnProperty.call(t,e)}function oxe(t,e,n,r){return new Error("Required ".concat(t[e]," `").concat(e,"` was not specified in `").concat(n,"`."))}function lxe(t,e){if(typeof t!="function")throw new TypeError(rxe);if(e&&typeof e!="string")throw new TypeError(sxe)}function ZA(t,e,n){return lxe(t,n),function(r,s,i){for(var a=arguments.length,l=new Array(a>3?a-3:0),c=3;c3&&arguments[3]!==void 0?arguments[3]:!1;t.addEventListener(e,n,r)}function uxe(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;t.removeEventListener(e,n,r)}function dxe(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,s;s=function(a){n(a),uxe(t,e,s)},cxe(t,e,s,r)}function JA(){}var oQ=(function(t){ug(n,t);var e=dg(n);function n(){return lg(this,n),e.apply(this,arguments)}return cg(n,[{key:"componentDidMount",value:function(){bo()&&(this.node||this.appendNode(),Gm||this.renderPortal())}},{key:"componentDidUpdate",value:function(){bo()&&(Gm||this.renderPortal())}},{key:"componentWillUnmount",value:function(){!bo()||!this.node||(Gm||sv.unmountComponentAtNode(this.node),this.node&&this.node.parentNode===document.body&&(document.body.removeChild(this.node),this.node=void 0))}},{key:"appendNode",value:function(){var s=this.props,i=s.id,a=s.zIndex;this.node||(this.node=document.createElement("div"),i&&(this.node.id=i),a&&(this.node.style.zIndex=a),document.body.appendChild(this.node))}},{key:"renderPortal",value:function(){if(!bo())return null;var s=this.props,i=s.children,a=s.setRef;if(this.node||this.appendNode(),Gm)return sv.createPortal(i,this.node);var l=sv.unstable_renderSubtreeIntoContainer(this,i.length>1?oe.createElement("div",null,i):i[0],this.node);return a(l),null}},{key:"renderReact16",value:function(){var s=this.props,i=s.hasChildren,a=s.placement,l=s.target;return i?this.renderPortal():l||a==="center"?this.renderPortal():null}},{key:"render",value:function(){return Gm?this.renderReact16():null}}]),n})(oe.Component);Fs(oQ,"propTypes",{children:Ge.oneOfType([Ge.element,Ge.array]),hasChildren:Ge.bool,id:Ge.oneOfType([Ge.string,Ge.number]),placement:Ge.string,setRef:Ge.func.isRequired,target:Ge.oneOfType([Ge.object,Ge.string]),zIndex:Ge.number});var lQ=(function(t){ug(n,t);var e=dg(n);function n(){return lg(this,n),e.apply(this,arguments)}return cg(n,[{key:"parentStyle",get:function(){var s=this.props,i=s.placement,a=s.styles,l=a.arrow.length,c={pointerEvents:"none",position:"absolute",width:"100%"};return i.startsWith("top")?(c.bottom=0,c.left=0,c.right=0,c.height=l):i.startsWith("bottom")?(c.left=0,c.right=0,c.top=0,c.height=l):i.startsWith("left")?(c.right=0,c.top=0,c.bottom=0):i.startsWith("right")&&(c.left=0,c.top=0),c}},{key:"render",value:function(){var s=this.props,i=s.placement,a=s.setArrowRef,l=s.styles,c=l.arrow,d=c.color,h=c.display,m=c.length,g=c.margin,x=c.position,y=c.spread,w={display:h,position:x},S,k=y,j=m;return i.startsWith("top")?(S="0,0 ".concat(k/2,",").concat(j," ").concat(k,",0"),w.bottom=0,w.marginLeft=g,w.marginRight=g):i.startsWith("bottom")?(S="".concat(k,",").concat(j," ").concat(k/2,",0 0,").concat(j),w.top=0,w.marginLeft=g,w.marginRight=g):i.startsWith("left")?(j=y,k=m,S="0,0 ".concat(k,",").concat(j/2," 0,").concat(j),w.right=0,w.marginTop=g,w.marginBottom=g):i.startsWith("right")&&(j=y,k=m,S="".concat(k,",").concat(j," ").concat(k,",0 0,").concat(j/2),w.left=0,w.marginTop=g,w.marginBottom=g),oe.createElement("div",{className:"__floater__arrow",style:this.parentStyle},oe.createElement("span",{ref:a,style:w},oe.createElement("svg",{width:k,height:j,version:"1.1",xmlns:"http://www.w3.org/2000/svg"},oe.createElement("polygon",{points:S,fill:d}))))}}]),n})(oe.Component);Fs(lQ,"propTypes",{placement:Ge.string.isRequired,setArrowRef:Ge.func.isRequired,styles:Ge.object.isRequired});var hxe=["color","height","width"];function cQ(t){var e=t.handleClick,n=t.styles,r=n.color,s=n.height,i=n.width,a=iQ(n,hxe);return oe.createElement("button",{"aria-label":"close",onClick:e,style:a,type:"button"},oe.createElement("svg",{width:"".concat(i,"px"),height:"".concat(s,"px"),viewBox:"0 0 18 18",version:"1.1",xmlns:"http://www.w3.org/2000/svg",preserveAspectRatio:"xMidYMid"},oe.createElement("g",null,oe.createElement("path",{d:"M8.13911129,9.00268191 L0.171521827,17.0258467 C-0.0498027049,17.248715 -0.0498027049,17.6098394 0.171521827,17.8327545 C0.28204354,17.9443526 0.427188206,17.9998706 0.572051765,17.9998706 C0.71714958,17.9998706 0.862013139,17.9443526 0.972581703,17.8327545 L9.0000937,9.74924618 L17.0276057,17.8327545 C17.1384085,17.9443526 17.2832721,17.9998706 17.4281356,17.9998706 C17.5729992,17.9998706 17.718097,17.9443526 17.8286656,17.8327545 C18.0499901,17.6098862 18.0499901,17.2487618 17.8286656,17.0258467 L9.86135722,9.00268191 L17.8340066,0.973848225 C18.0553311,0.750979934 18.0553311,0.389855532 17.8340066,0.16694039 C17.6126821,-0.0556467968 17.254037,-0.0556467968 17.0329467,0.16694039 L9.00042166,8.25611765 L0.967006424,0.167268345 C0.745681892,-0.0553188426 0.387317931,-0.0553188426 0.165993399,0.167268345 C-0.0553311331,0.390136635 -0.0553311331,0.751261038 0.165993399,0.974176179 L8.13920499,9.00268191 L8.13911129,9.00268191 Z",fill:r}))))}cQ.propTypes={handleClick:Ge.func.isRequired,styles:Ge.object.isRequired};function uQ(t){var e=t.content,n=t.footer,r=t.handleClick,s=t.open,i=t.positionWrapper,a=t.showCloseButton,l=t.title,c=t.styles,d={content:oe.isValidElement(e)?e:oe.createElement("div",{className:"__floater__content",style:c.content},e)};return l&&(d.title=oe.isValidElement(l)?l:oe.createElement("div",{className:"__floater__title",style:c.title},l)),n&&(d.footer=oe.isValidElement(n)?n:oe.createElement("div",{className:"__floater__footer",style:c.footer},n)),(a||i)&&!Ee.boolean(s)&&(d.close=oe.createElement(cQ,{styles:c.close,handleClick:r})),oe.createElement("div",{className:"__floater__container",style:c.container},d.close,d.title,d.content,d.footer)}uQ.propTypes={content:Ge.node.isRequired,footer:Ge.node,handleClick:Ge.func.isRequired,open:Ge.bool,positionWrapper:Ge.bool.isRequired,showCloseButton:Ge.bool.isRequired,styles:Ge.object.isRequired,title:Ge.node};var dQ=(function(t){ug(n,t);var e=dg(n);function n(){return lg(this,n),e.apply(this,arguments)}return cg(n,[{key:"style",get:function(){var s=this.props,i=s.disableAnimation,a=s.component,l=s.placement,c=s.hideArrow,d=s.status,h=s.styles,m=h.arrow.length,g=h.floater,x=h.floaterCentered,y=h.floaterClosing,w=h.floaterOpening,S=h.floaterWithAnimation,k=h.floaterWithComponent,j={};return c||(l.startsWith("top")?j.padding="0 0 ".concat(m,"px"):l.startsWith("bottom")?j.padding="".concat(m,"px 0 0"):l.startsWith("left")?j.padding="0 ".concat(m,"px 0 0"):l.startsWith("right")&&(j.padding="0 0 0 ".concat(m,"px"))),[Tn.OPENING,Tn.OPEN].indexOf(d)!==-1&&(j=jr(jr({},j),w)),d===Tn.CLOSING&&(j=jr(jr({},j),y)),d===Tn.OPEN&&!i&&(j=jr(jr({},j),S)),l==="center"&&(j=jr(jr({},j),x)),a&&(j=jr(jr({},j),k)),jr(jr({},g),j)}},{key:"render",value:function(){var s=this.props,i=s.component,a=s.handleClick,l=s.hideArrow,c=s.setFloaterRef,d=s.status,h={},m=["__floater"];return i?oe.isValidElement(i)?h.content=oe.cloneElement(i,{closeFn:a}):h.content=i({closeFn:a}):h.content=oe.createElement(uQ,this.props),d===Tn.OPEN&&m.push("__floater__open"),l||(h.arrow=oe.createElement(lQ,this.props)),oe.createElement("div",{ref:c,className:m.join(" "),style:this.style},oe.createElement("div",{className:"__floater__body"},h.content,h.arrow))}}]),n})(oe.Component);Fs(dQ,"propTypes",{component:Ge.oneOfType([Ge.func,Ge.element]),content:Ge.node,disableAnimation:Ge.bool.isRequired,footer:Ge.node,handleClick:Ge.func.isRequired,hideArrow:Ge.bool.isRequired,open:Ge.bool,placement:Ge.string.isRequired,positionWrapper:Ge.bool.isRequired,setArrowRef:Ge.func.isRequired,setFloaterRef:Ge.func.isRequired,showCloseButton:Ge.bool,status:Ge.string.isRequired,styles:Ge.object.isRequired,title:Ge.node});var hQ=(function(t){ug(n,t);var e=dg(n);function n(){return lg(this,n),e.apply(this,arguments)}return cg(n,[{key:"render",value:function(){var s=this.props,i=s.children,a=s.handleClick,l=s.handleMouseEnter,c=s.handleMouseLeave,d=s.setChildRef,h=s.setWrapperRef,m=s.style,g=s.styles,x;if(i)if(oe.Children.count(i)===1)if(!oe.isValidElement(i))x=oe.createElement("span",null,i);else{var y=Ee.function(i.type)?"innerRef":"ref";x=oe.cloneElement(oe.Children.only(i),Fs({},y,d))}else x=i;return x?oe.createElement("span",{ref:h,style:jr(jr({},g),m),onClick:a,onMouseEnter:l,onMouseLeave:c},x):null}}]),n})(oe.Component);Fs(hQ,"propTypes",{children:Ge.node,handleClick:Ge.func.isRequired,handleMouseEnter:Ge.func.isRequired,handleMouseLeave:Ge.func.isRequired,setChildRef:Ge.func.isRequired,setWrapperRef:Ge.func.isRequired,style:Ge.object,styles:Ge.object.isRequired});var fxe={zIndex:100};function mxe(t){var e=Ua(fxe,t.options||{});return{wrapper:{cursor:"help",display:"inline-flex",flexDirection:"column",zIndex:e.zIndex},wrapperPosition:{left:-1e3,position:"absolute",top:-1e3,visibility:"hidden"},floater:{display:"inline-block",filter:"drop-shadow(0 0 3px rgba(0, 0, 0, 0.3))",maxWidth:300,opacity:0,position:"relative",transition:"opacity 0.3s",visibility:"hidden",zIndex:e.zIndex},floaterOpening:{opacity:1,visibility:"visible"},floaterWithAnimation:{opacity:1,transition:"opacity 0.3s, transform 0.2s",visibility:"visible"},floaterWithComponent:{maxWidth:"100%"},floaterClosing:{opacity:0,visibility:"visible"},floaterCentered:{left:"50%",position:"fixed",top:"50%",transform:"translate(-50%, -50%)"},container:{backgroundColor:"#fff",color:"#666",minHeight:60,minWidth:200,padding:20,position:"relative",zIndex:10},title:{borderBottom:"1px solid #555",color:"#555",fontSize:18,marginBottom:5,paddingBottom:6,paddingRight:18},content:{fontSize:15},close:{backgroundColor:"transparent",border:0,borderRadius:0,color:"#555",fontSize:0,height:15,outline:"none",padding:10,position:"absolute",right:0,top:0,width:15,WebkitAppearance:"none"},footer:{borderTop:"1px solid #ccc",fontSize:13,marginTop:10,paddingTop:5},arrow:{color:"#fff",display:"inline-flex",length:16,margin:8,position:"absolute",spread:32},options:e}}var pxe=["arrow","flip","offset"],gxe=["position","top","right","bottom","left"],tN=(function(t){ug(n,t);var e=dg(n);function n(r){var s;return lg(this,n),s=e.call(this,r),Fs(El(s),"setArrowRef",function(i){s.arrowRef=i}),Fs(El(s),"setChildRef",function(i){s.childRef=i}),Fs(El(s),"setFloaterRef",function(i){s.floaterRef=i}),Fs(El(s),"setWrapperRef",function(i){s.wrapperRef=i}),Fs(El(s),"handleTransitionEnd",function(){var i=s.state.status,a=s.props.callback;s.wrapperPopper&&s.wrapperPopper.instance.update(),s.setState({status:i===Tn.OPENING?Tn.OPEN:Tn.IDLE},function(){var l=s.state.status;a(l===Tn.OPEN?"open":"close",s.props)})}),Fs(El(s),"handleClick",function(){var i=s.props,a=i.event,l=i.open;if(!Ee.boolean(l)){var c=s.state,d=c.positionWrapper,h=c.status;(s.event==="click"||s.event==="hover"&&d)&&(E1({title:"click",data:[{event:a,status:h===Tn.OPEN?"closing":"opening"}],debug:s.debug}),s.toggle())}}),Fs(El(s),"handleMouseEnter",function(){var i=s.props,a=i.event,l=i.open;if(!(Ee.boolean(l)||NS())){var c=s.state.status;s.event==="hover"&&c===Tn.IDLE&&(E1({title:"mouseEnter",data:[{key:"originalEvent",value:a}],debug:s.debug}),clearTimeout(s.eventDelayTimeout),s.toggle())}}),Fs(El(s),"handleMouseLeave",function(){var i=s.props,a=i.event,l=i.eventDelay,c=i.open;if(!(Ee.boolean(c)||NS())){var d=s.state,h=d.status,m=d.positionWrapper;s.event==="hover"&&(E1({title:"mouseLeave",data:[{key:"originalEvent",value:a}],debug:s.debug}),l?[Tn.OPENING,Tn.OPEN].indexOf(h)!==-1&&!m&&!s.eventDelayTimeout&&(s.eventDelayTimeout=setTimeout(function(){delete s.eventDelayTimeout,s.toggle()},l*1e3)):s.toggle(Tn.IDLE))}}),s.state={currentPlacement:r.placement,needsUpdate:!1,positionWrapper:r.wrapperOptions.position&&!!r.target,status:Tn.INIT,statusWrapper:Tn.INIT},s._isMounted=!1,s.hasMounted=!1,bo()&&window.addEventListener("load",function(){s.popper&&s.popper.instance.update(),s.wrapperPopper&&s.wrapperPopper.instance.update()}),s}return cg(n,[{key:"componentDidMount",value:function(){if(bo()){var s=this.state.positionWrapper,i=this.props,a=i.children,l=i.open,c=i.target;this._isMounted=!0,E1({title:"init",data:{hasChildren:!!a,hasTarget:!!c,isControlled:Ee.boolean(l),positionWrapper:s,target:this.target,floater:this.floaterRef},debug:this.debug}),this.hasMounted||(this.initPopper(),this.hasMounted=!0),!a&&c&&Ee.boolean(l)}}},{key:"componentDidUpdate",value:function(s,i){if(bo()){var a=this.props,l=a.autoOpen,c=a.open,d=a.target,h=a.wrapperOptions,m=Yge(i,this.state),g=m.changedFrom,x=m.changed;if(s.open!==c){var y;Ee.boolean(c)&&(y=c?Tn.OPENING:Tn.CLOSING),this.toggle(y)}(s.wrapperOptions.position!==h.position||s.target!==d)&&this.changeWrapperPosition(this.props),x("status",Tn.IDLE)&&c?this.toggle(Tn.OPEN):g("status",Tn.INIT,Tn.IDLE)&&l&&this.toggle(Tn.OPEN),this.popper&&x("status",Tn.OPENING)&&this.popper.instance.update(),this.floaterRef&&(x("status",Tn.OPENING)||x("status",Tn.CLOSING))&&dxe(this.floaterRef,"transitionend",this.handleTransitionEnd),x("needsUpdate",!0)&&this.rebuildPopper()}}},{key:"componentWillUnmount",value:function(){bo()&&(this._isMounted=!1,this.popper&&this.popper.instance.destroy(),this.wrapperPopper&&this.wrapperPopper.instance.destroy())}},{key:"initPopper",value:function(){var s=this,i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.target,a=this.state.positionWrapper,l=this.props,c=l.disableFlip,d=l.getPopper,h=l.hideArrow,m=l.offset,g=l.placement,x=l.wrapperOptions,y=g==="top"||g==="bottom"?"flip":["right","bottom-end","top-end","left","top-start","bottom-start"];if(g==="center")this.setState({status:Tn.IDLE});else if(i&&this.floaterRef){var w=this.options,S=w.arrow,k=w.flip,j=w.offset,N=iQ(w,pxe);new hp(i,this.floaterRef,{placement:g,modifiers:jr({arrow:jr({enabled:!h,element:this.arrowRef},S),flip:jr({enabled:!c,behavior:y},k),offset:jr({offset:"0, ".concat(m,"px")},j)},N),onCreate:function(_){var A;if(s.popper=_,!((A=s.floaterRef)!==null&&A!==void 0&&A.isConnected)){s.setState({needsUpdate:!0});return}d(_,"floater"),s._isMounted&&s.setState({currentPlacement:_.placement,status:Tn.IDLE}),g!==_.placement&&setTimeout(function(){_.instance.update()},1)},onUpdate:function(_){s.popper=_;var A=s.state.currentPlacement;s._isMounted&&_.placement!==A&&s.setState({currentPlacement:_.placement})}})}if(a){var T=Ee.undefined(x.offset)?0:x.offset;new hp(this.target,this.wrapperRef,{placement:x.placement||g,modifiers:{arrow:{enabled:!1},offset:{offset:"0, ".concat(T,"px")},flip:{enabled:!1}},onCreate:function(_){s.wrapperPopper=_,s._isMounted&&s.setState({statusWrapper:Tn.IDLE}),d(_,"wrapper"),g!==_.placement&&setTimeout(function(){_.instance.update()},1)}})}}},{key:"rebuildPopper",value:function(){var s=this;this.floaterRefInterval=setInterval(function(){var i;(i=s.floaterRef)!==null&&i!==void 0&&i.isConnected&&(clearInterval(s.floaterRefInterval),s.setState({needsUpdate:!1}),s.initPopper())},50)}},{key:"changeWrapperPosition",value:function(s){var i=s.target,a=s.wrapperOptions;this.setState({positionWrapper:a.position&&!!i})}},{key:"toggle",value:function(s){var i=this.state.status,a=i===Tn.OPEN?Tn.CLOSING:Tn.OPENING;Ee.undefined(s)||(a=s),this.setState({status:a})}},{key:"debug",get:function(){var s=this.props.debug;return s||bo()&&"ReactFloaterDebug"in window&&!!window.ReactFloaterDebug}},{key:"event",get:function(){var s=this.props,i=s.disableHoverToClick,a=s.event;return a==="hover"&&NS()&&!i?"click":a}},{key:"options",get:function(){var s=this.props.options;return Ua(nxe,s||{})}},{key:"styles",get:function(){var s=this,i=this.state,a=i.status,l=i.positionWrapper,c=i.statusWrapper,d=this.props.styles,h=Ua(mxe(d),d);if(l){var m;[Tn.IDLE].indexOf(a)===-1||[Tn.IDLE].indexOf(c)===-1?m=h.wrapperPosition:m=this.wrapperPopper.styles,h.wrapper=jr(jr({},h.wrapper),m)}if(this.target){var g=window.getComputedStyle(this.target);this.wrapperStyles?h.wrapper=jr(jr({},h.wrapper),this.wrapperStyles):["relative","static"].indexOf(g.position)===-1&&(this.wrapperStyles={},l||(gxe.forEach(function(x){s.wrapperStyles[x]=g[x]}),h.wrapper=jr(jr({},h.wrapper),this.wrapperStyles),this.target.style.position="relative",this.target.style.top="auto",this.target.style.right="auto",this.target.style.bottom="auto",this.target.style.left="auto"))}return h}},{key:"target",get:function(){if(!bo())return null;var s=this.props.target;return s?Ee.domElement(s)?s:document.querySelector(s):this.childRef||this.wrapperRef}},{key:"render",value:function(){var s=this.state,i=s.currentPlacement,a=s.positionWrapper,l=s.status,c=this.props,d=c.children,h=c.component,m=c.content,g=c.disableAnimation,x=c.footer,y=c.hideArrow,w=c.id,S=c.open,k=c.showCloseButton,j=c.style,N=c.target,T=c.title,E=oe.createElement(hQ,{handleClick:this.handleClick,handleMouseEnter:this.handleMouseEnter,handleMouseLeave:this.handleMouseLeave,setChildRef:this.setChildRef,setWrapperRef:this.setWrapperRef,style:j,styles:this.styles.wrapper},d),_={};return a?_.wrapperInPortal=E:_.wrapperAsChildren=E,oe.createElement("span",null,oe.createElement(oQ,{hasChildren:!!d,id:w,placement:i,setRef:this.setFloaterRef,target:N,zIndex:this.styles.options.zIndex},oe.createElement(dQ,{component:h,content:m,disableAnimation:g,footer:x,handleClick:this.handleClick,hideArrow:y||i==="center",open:S,placement:i,positionWrapper:a,setArrowRef:this.setArrowRef,setFloaterRef:this.setFloaterRef,showCloseButton:k,status:l,styles:this.styles,title:T}),_.wrapperInPortal),_.wrapperAsChildren)}}]),n})(oe.Component);Fs(tN,"propTypes",{autoOpen:Ge.bool,callback:Ge.func,children:Ge.node,component:ZA(Ge.oneOfType([Ge.func,Ge.element]),function(t){return!t.content}),content:ZA(Ge.node,function(t){return!t.component}),debug:Ge.bool,disableAnimation:Ge.bool,disableFlip:Ge.bool,disableHoverToClick:Ge.bool,event:Ge.oneOf(["hover","click"]),eventDelay:Ge.number,footer:Ge.node,getPopper:Ge.func,hideArrow:Ge.bool,id:Ge.oneOfType([Ge.string,Ge.number]),offset:Ge.number,open:Ge.bool,options:Ge.object,placement:Ge.oneOf(["top","top-start","top-end","bottom","bottom-start","bottom-end","left","left-start","left-end","right","right-start","right-end","auto","center"]),showCloseButton:Ge.bool,style:Ge.object,styles:Ge.object,target:Ge.oneOfType([Ge.object,Ge.string]),title:Ge.node,wrapperOptions:Ge.shape({offset:Ge.number,placement:Ge.oneOf(["top","top-start","top-end","bottom","bottom-start","bottom-end","left","left-start","left-end","right","right-start","right-end","auto"]),position:Ge.bool})});Fs(tN,"defaultProps",{autoOpen:!1,callback:JA,debug:!1,disableAnimation:!1,disableFlip:!1,disableHoverToClick:!1,event:"click",eventDelay:.4,getPopper:JA,hideArrow:!1,offset:15,placement:"bottom",showCloseButton:!1,styles:{},target:null,wrapperOptions:{position:!1}});var xxe=Object.defineProperty,vxe=(t,e,n)=>e in t?xxe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,xt=(t,e,n)=>vxe(t,typeof e!="symbol"?e+"":e,n),Yn={INIT:"init",START:"start",STOP:"stop",RESET:"reset",PREV:"prev",NEXT:"next",GO:"go",CLOSE:"close",SKIP:"skip",UPDATE:"update"},Va={TOUR_START:"tour:start",STEP_BEFORE:"step:before",BEACON:"beacon",TOOLTIP:"tooltip",STEP_AFTER:"step:after",TOUR_END:"tour:end",TOUR_STATUS:"tour:status",TARGET_NOT_FOUND:"error:target_not_found"},Xt={INIT:"init",READY:"ready",BEACON:"beacon",TOOLTIP:"tooltip",COMPLETE:"complete",ERROR:"error"},wn={IDLE:"idle",READY:"ready",WAITING:"waiting",RUNNING:"running",PAUSED:"paused",SKIPPED:"skipped",FINISHED:"finished"};function Fc(){var t;return!!(typeof window<"u"&&((t=window.document)!=null&&t.createElement))}function fQ(t){return t?t.getBoundingClientRect():null}function yxe(t=!1){const{body:e,documentElement:n}=document;if(!e||!n)return 0;if(t){const r=[e.scrollHeight,e.offsetHeight,n.clientHeight,n.scrollHeight,n.offsetHeight].sort((i,a)=>i-a),s=Math.floor(r.length/2);return r.length%2===0?(r[s-1]+r[s])/2:r[s]}return Math.max(e.scrollHeight,e.offsetHeight,n.clientHeight,n.scrollHeight,n.offsetHeight)}function Pl(t){if(typeof t=="string")try{return document.querySelector(t)}catch{return null}return t}function bxe(t){return!t||t.nodeType!==1?null:getComputedStyle(t)}function fp(t,e,n){if(!t)return Xu();const r=qH(t);if(r){if(r.isSameNode(Xu()))return n?document:Xu();if(!(r.scrollHeight>r.offsetHeight)&&!e)return r.style.overflow="initial",Xu()}return r}function Db(t,e){if(!t)return!1;const n=fp(t,e);return n?!n.isSameNode(Xu()):!1}function wxe(t){return t.offsetParent!==document.body}function df(t,e="fixed"){if(!t||!(t instanceof HTMLElement))return!1;const{nodeName:n}=t,r=bxe(t);return n==="BODY"||n==="HTML"?!1:r&&r.position===e?!0:t.parentNode?df(t.parentNode,e):!1}function Sxe(t){var e;if(!t)return!1;let n=t;for(;n&&n!==document.body;){if(n instanceof HTMLElement){const{display:r,visibility:s}=getComputedStyle(n);if(r==="none"||s==="hidden")return!1}n=(e=n.parentElement)!=null?e:null}return!0}function kxe(t,e,n){var r,s,i;const a=fQ(t),l=fp(t,n),c=Db(t,n),d=df(t);let h=0,m=(r=a?.top)!=null?r:0;if(c&&d){const g=(s=t?.offsetTop)!=null?s:0,x=(i=l?.scrollTop)!=null?i:0;m=g-x}else l instanceof HTMLElement&&(h=l.scrollTop,!c&&!df(t)&&(m+=h),l.isSameNode(Xu())||(m+=Xu().scrollTop));return Math.floor(m-e)}function Oxe(t,e,n){var r;if(!t)return 0;const{offsetTop:s=0,scrollTop:i=0}=(r=qH(t))!=null?r:{};let a=t.getBoundingClientRect().top+i;s&&(Db(t,n)||wxe(t))&&(a-=s);const l=Math.floor(a-e);return l<0?0:l}function Xu(){var t;return(t=document.scrollingElement)!=null?t:document.documentElement}function jxe(t,e){const{duration:n,element:r}=e;return new Promise((s,i)=>{const{scrollTop:a}=r,l=t>a?t-a:a-t;Qpe.top(r,t,{duration:l<100?50:n},c=>c&&c.message!=="Element already at target scroll position"?i(c):s())})}var Xm=ya.createPortal!==void 0;function mQ(t=navigator.userAgent){let e=t;return typeof window>"u"?e="node":document.documentMode?e="ie":/Edge/.test(t)?e="edge":window.opera||t.includes(" OPR/")?e="opera":typeof window.InstallTrigger<"u"?e="firefox":window.chrome?e="chrome":/(Version\/([\d._]+).*Safari|CriOS|FxiOS| Mobile\/)/.test(t)&&(e="safari"),e}function jv(t){return Object.prototype.toString.call(t).slice(8,-1).toLowerCase()}function wo(t,e={}){const{defaultValue:n,step:r,steps:s}=e;let i=IA(t);if(i)(i.includes("{step}")||i.includes("{steps}"))&&r&&s&&(i=i.replace("{step}",r.toString()).replace("{steps}",s.toString()));else if(b.isValidElement(t)&&!Object.values(t.props).length&&jv(t.type)==="function"){const a=t.type({});i=wo(a,e)}else i=IA(n);return i}function Nxe(t,e){return!pt.plainObject(t)||!pt.array(e)?!1:Object.keys(t).every(n=>e.includes(n))}function Cxe(t){const e=/^#?([\da-f])([\da-f])([\da-f])$/i,n=t.replace(e,(s,i,a,l)=>i+i+a+a+l+l),r=/^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i.exec(n);return r?[parseInt(r[1],16),parseInt(r[2],16),parseInt(r[3],16)]:[]}function eM(t){return t.disableBeacon||t.placement==="center"}function tM(){return!["chrome","safari","firefox","opera"].includes(mQ())}function pd({data:t,debug:e=!1,title:n,warn:r=!1}){const s=r?console.warn||console.error:console.log;e&&(n&&t?(console.groupCollapsed(`%creact-joyride: ${n}`,"color: #ff0044; font-weight: bold; font-size: 12px;"),Array.isArray(t)?t.forEach(i=>{pt.plainObject(i)&&i.key?s.apply(console,[i.key,i.value]):s.apply(console,[i])}):s.apply(console,[t]),console.groupEnd()):console.error("Missing title or data props"))}function Txe(t){return Object.keys(t)}function pQ(t,...e){if(!pt.plainObject(t))throw new TypeError("Expected an object");const n={};for(const r in t)({}).hasOwnProperty.call(t,r)&&(e.includes(r)||(n[r]=t[r]));return n}function Exe(t,...e){if(!pt.plainObject(t))throw new TypeError("Expected an object");if(!e.length)return t;const n={};for(const r in t)({}).hasOwnProperty.call(t,r)&&e.includes(r)&&(n[r]=t[r]);return n}function jO(t,e,n){const r=i=>i.replace("{step}",String(e)).replace("{steps}",String(n));if(jv(t)==="string")return r(t);if(!b.isValidElement(t))return t;const{children:s}=t.props;if(jv(s)==="string"&&s.includes("{step}"))return b.cloneElement(t,{children:r(s)});if(Array.isArray(s))return b.cloneElement(t,{children:s.map(i=>typeof i=="string"?r(i):jO(i,e,n))});if(jv(t.type)==="function"&&!Object.values(t.props).length){const i=t.type({});return jO(i,e,n)}return t}function _xe(t){const{isFirstStep:e,lifecycle:n,previousLifecycle:r,scrollToFirstStep:s,step:i,target:a}=t;return!i.disableScrolling&&(!e||s||n===Xt.TOOLTIP)&&i.placement!=="center"&&(!i.isFixed||!df(a))&&r!==n&&[Xt.BEACON,Xt.TOOLTIP].includes(n)}var Axe={options:{preventOverflow:{boundariesElement:"scrollParent"}},wrapperOptions:{offset:-18,position:!0}},gQ={back:"Back",close:"Close",last:"Last",next:"Next",nextLabelWithProgress:"Next (Step {step} of {steps})",open:"Open the dialog",skip:"Skip"},Mxe={event:"click",placement:"bottom",offset:10,disableBeacon:!1,disableCloseOnEsc:!1,disableOverlay:!1,disableOverlayClose:!1,disableScrollParentFix:!1,disableScrolling:!1,hideBackButton:!1,hideCloseButton:!1,hideFooter:!1,isFixed:!1,locale:gQ,showProgress:!1,showSkipButton:!1,spotlightClicks:!1,spotlightPadding:10},Rxe={continuous:!1,debug:!1,disableCloseOnEsc:!1,disableOverlay:!1,disableOverlayClose:!1,disableScrolling:!1,disableScrollParentFix:!1,getHelpers:void 0,hideBackButton:!1,run:!0,scrollOffset:20,scrollDuration:300,scrollToFirstStep:!1,showSkipButton:!1,showProgress:!1,spotlightClicks:!1,spotlightPadding:10,steps:[]},Dxe={arrowColor:"#fff",backgroundColor:"#fff",beaconSize:36,overlayColor:"rgba(0, 0, 0, 0.5)",primaryColor:"#f04",spotlightShadow:"0 0 15px rgba(0, 0, 0, 0.5)",textColor:"#333",width:380,zIndex:100},Ym={backgroundColor:"transparent",border:0,borderRadius:0,color:"#555",cursor:"pointer",fontSize:16,lineHeight:1,padding:8,WebkitAppearance:"none"},nM={borderRadius:4,position:"absolute"};function Pxe(t,e){var n,r,s,i,a;const{floaterProps:l,styles:c}=t,d=Ua((n=e.floaterProps)!=null?n:{},l??{}),h=Ua(c??{},(r=e.styles)!=null?r:{}),m=Ua(Dxe,h.options||{}),g=e.placement==="center"||e.disableBeacon;let{width:x}=m;window.innerWidth>480&&(x=380),"width"in m&&(x=typeof m.width=="number"&&window.innerWidthxQ(n,e)):(pd({title:"validateSteps",data:"steps must be an array",warn:!0,debug:e}),!1)}var vQ={action:"init",controlled:!1,index:0,lifecycle:Xt.INIT,origin:null,size:0,status:wn.IDLE},sM=Txe(pQ(vQ,"controlled","size")),Ixe=class{constructor(t){xt(this,"beaconPopper"),xt(this,"tooltipPopper"),xt(this,"data",new Map),xt(this,"listener"),xt(this,"store",new Map),xt(this,"addListener",s=>{this.listener=s}),xt(this,"setSteps",s=>{const{size:i,status:a}=this.getState(),l={size:s.length,status:a};this.data.set("steps",s),a===wn.WAITING&&!i&&s.length&&(l.status=wn.RUNNING),this.setState(l)}),xt(this,"getPopper",s=>s==="beacon"?this.beaconPopper:this.tooltipPopper),xt(this,"setPopper",(s,i)=>{s==="beacon"?this.beaconPopper=i:this.tooltipPopper=i}),xt(this,"cleanupPoppers",()=>{this.beaconPopper=null,this.tooltipPopper=null}),xt(this,"close",(s=null)=>{const{index:i,status:a}=this.getState();a===wn.RUNNING&&this.setState({...this.getNextState({action:Yn.CLOSE,index:i+1,origin:s})})}),xt(this,"go",s=>{const{controlled:i,status:a}=this.getState();if(i||a!==wn.RUNNING)return;const l=this.getSteps()[s];this.setState({...this.getNextState({action:Yn.GO,index:s}),status:l?a:wn.FINISHED})}),xt(this,"info",()=>this.getState()),xt(this,"next",()=>{const{index:s,status:i}=this.getState();i===wn.RUNNING&&this.setState(this.getNextState({action:Yn.NEXT,index:s+1}))}),xt(this,"open",()=>{const{status:s}=this.getState();s===wn.RUNNING&&this.setState({...this.getNextState({action:Yn.UPDATE,lifecycle:Xt.TOOLTIP})})}),xt(this,"prev",()=>{const{index:s,status:i}=this.getState();i===wn.RUNNING&&this.setState({...this.getNextState({action:Yn.PREV,index:s-1})})}),xt(this,"reset",(s=!1)=>{const{controlled:i}=this.getState();i||this.setState({...this.getNextState({action:Yn.RESET,index:0}),status:s?wn.RUNNING:wn.READY})}),xt(this,"skip",()=>{const{status:s}=this.getState();s===wn.RUNNING&&this.setState({action:Yn.SKIP,lifecycle:Xt.INIT,status:wn.SKIPPED})}),xt(this,"start",s=>{const{index:i,size:a}=this.getState();this.setState({...this.getNextState({action:Yn.START,index:pt.number(s)?s:i},!0),status:a?wn.RUNNING:wn.WAITING})}),xt(this,"stop",(s=!1)=>{const{index:i,status:a}=this.getState();[wn.FINISHED,wn.SKIPPED].includes(a)||this.setState({...this.getNextState({action:Yn.STOP,index:i+(s?1:0)}),status:wn.PAUSED})}),xt(this,"update",s=>{var i,a;if(!Nxe(s,sM))throw new Error(`State is not valid. Valid keys: ${sM.join(", ")}`);this.setState({...this.getNextState({...this.getState(),...s,action:(i=s.action)!=null?i:Yn.UPDATE,origin:(a=s.origin)!=null?a:null},!0)})});const{continuous:e=!1,stepIndex:n,steps:r=[]}=t??{};this.setState({action:Yn.INIT,controlled:pt.number(n),continuous:e,index:pt.number(n)?n:0,lifecycle:Xt.INIT,origin:null,status:r.length?wn.READY:wn.IDLE},!0),this.beaconPopper=null,this.tooltipPopper=null,this.listener=null,this.setSteps(r)}getState(){return this.store.size?{action:this.store.get("action")||"",controlled:this.store.get("controlled")||!1,index:parseInt(this.store.get("index"),10),lifecycle:this.store.get("lifecycle")||"",origin:this.store.get("origin")||null,size:this.store.get("size")||0,status:this.store.get("status")||""}:{...vQ}}getNextState(t,e=!1){var n,r,s,i,a;const{action:l,controlled:c,index:d,size:h,status:m}=this.getState(),g=pt.number(t.index)?t.index:d,x=c&&!e?d:Math.min(Math.max(g,0),h);return{action:(n=t.action)!=null?n:l,controlled:c,index:x,lifecycle:(r=t.lifecycle)!=null?r:Xt.INIT,origin:(s=t.origin)!=null?s:null,size:(i=t.size)!=null?i:h,status:x===h?wn.FINISHED:(a=t.status)!=null?a:m}}getSteps(){const t=this.data.get("steps");return Array.isArray(t)?t:[]}hasUpdatedState(t){const e=JSON.stringify(t),n=JSON.stringify(this.getState());return e!==n}setState(t,e=!1){const n=this.getState(),{action:r,index:s,lifecycle:i,origin:a=null,size:l,status:c}={...n,...t};this.store.set("action",r),this.store.set("index",s),this.store.set("lifecycle",i),this.store.set("origin",a),this.store.set("size",l),this.store.set("status",c),e&&(this.store.set("controlled",t.controlled),this.store.set("continuous",t.continuous)),this.listener&&this.hasUpdatedState(n)&&this.listener(this.getState())}getHelpers(){return{close:this.close,go:this.go,info:this.info,next:this.next,open:this.open,prev:this.prev,reset:this.reset,skip:this.skip}}};function Lxe(t){return new Ixe(t)}function Bxe({styles:t}){return b.createElement("div",{key:"JoyrideSpotlight",className:"react-joyride__spotlight","data-test-id":"spotlight",style:t})}var Fxe=Bxe,qxe=class extends b.Component{constructor(){super(...arguments),xt(this,"isActive",!1),xt(this,"resizeTimeout"),xt(this,"scrollTimeout"),xt(this,"scrollParent"),xt(this,"state",{isScrolling:!1,mouseOverSpotlight:!1,showSpotlight:!0}),xt(this,"hideSpotlight",()=>{const{continuous:t,disableOverlay:e,lifecycle:n}=this.props,r=[Xt.INIT,Xt.BEACON,Xt.COMPLETE,Xt.ERROR];return e||(t?r.includes(n):n!==Xt.TOOLTIP)}),xt(this,"handleMouseMove",t=>{const{mouseOverSpotlight:e}=this.state,{height:n,left:r,position:s,top:i,width:a}=this.spotlightStyles,l=s==="fixed"?t.clientY:t.pageY,c=s==="fixed"?t.clientX:t.pageX,d=l>=i&&l<=i+n,m=c>=r&&c<=r+a&&d;m!==e&&this.updateState({mouseOverSpotlight:m})}),xt(this,"handleScroll",()=>{const{target:t}=this.props,e=Pl(t);if(this.scrollParent!==document){const{isScrolling:n}=this.state;n||this.updateState({isScrolling:!0,showSpotlight:!1}),clearTimeout(this.scrollTimeout),this.scrollTimeout=window.setTimeout(()=>{this.updateState({isScrolling:!1,showSpotlight:!0})},50)}else df(e,"sticky")&&this.updateState({})}),xt(this,"handleResize",()=>{clearTimeout(this.resizeTimeout),this.resizeTimeout=window.setTimeout(()=>{this.isActive&&this.forceUpdate()},100)})}componentDidMount(){const{debug:t,disableScrolling:e,disableScrollParentFix:n=!1,target:r}=this.props,s=Pl(r);this.scrollParent=fp(s??document.body,n,!0),this.isActive=!0,window.addEventListener("resize",this.handleResize)}componentDidUpdate(t){var e;const{disableScrollParentFix:n,lifecycle:r,spotlightClicks:s,target:i}=this.props,{changed:a}=py(t,this.props);if(a("target")||a("disableScrollParentFix")){const l=Pl(i);this.scrollParent=fp(l??document.body,n,!0)}a("lifecycle",Xt.TOOLTIP)&&((e=this.scrollParent)==null||e.addEventListener("scroll",this.handleScroll,{passive:!0}),setTimeout(()=>{const{isScrolling:l}=this.state;l||this.updateState({showSpotlight:!0})},100)),(a("spotlightClicks")||a("disableOverlay")||a("lifecycle"))&&(s&&r===Xt.TOOLTIP?window.addEventListener("mousemove",this.handleMouseMove,!1):r!==Xt.TOOLTIP&&window.removeEventListener("mousemove",this.handleMouseMove))}componentWillUnmount(){var t;this.isActive=!1,window.removeEventListener("mousemove",this.handleMouseMove),window.removeEventListener("resize",this.handleResize),clearTimeout(this.resizeTimeout),clearTimeout(this.scrollTimeout),(t=this.scrollParent)==null||t.removeEventListener("scroll",this.handleScroll)}get overlayStyles(){const{mouseOverSpotlight:t}=this.state,{disableOverlayClose:e,placement:n,styles:r}=this.props;let s=r.overlay;return tM()&&(s=n==="center"?r.overlayLegacyCenter:r.overlayLegacy),{cursor:e?"default":"pointer",height:yxe(),pointerEvents:t?"none":"auto",...s}}get spotlightStyles(){var t,e,n;const{showSpotlight:r}=this.state,{disableScrollParentFix:s=!1,spotlightClicks:i,spotlightPadding:a=0,styles:l,target:c}=this.props,d=Pl(c),h=fQ(d),m=df(d),g=kxe(d,a,s);return{...tM()?l.spotlightLegacy:l.spotlight,height:Math.round(((t=h?.height)!=null?t:0)+a*2),left:Math.round(((e=h?.left)!=null?e:0)-a),opacity:r?1:0,pointerEvents:i?"none":"auto",position:m?"fixed":"absolute",top:g,transition:"opacity 0.2s",width:Math.round(((n=h?.width)!=null?n:0)+a*2)}}updateState(t){this.isActive&&this.setState(e=>({...e,...t}))}render(){const{showSpotlight:t}=this.state,{onClickOverlay:e,placement:n}=this.props,{hideSpotlight:r,overlayStyles:s,spotlightStyles:i}=this;if(r())return null;let a=n!=="center"&&t&&b.createElement(Fxe,{styles:i});if(mQ()==="safari"){const{mixBlendMode:l,zIndex:c,...d}=s;a=b.createElement("div",{style:{...d}},a),delete s.backgroundColor}return b.createElement("div",{className:"react-joyride__overlay","data-test-id":"overlay",onClick:e,role:"presentation",style:s},a)}},$xe=class extends b.Component{constructor(){super(...arguments),xt(this,"node",null)}componentDidMount(){const{id:t}=this.props;Fc()&&(this.node=document.createElement("div"),this.node.id=t,document.body.appendChild(this.node),Xm||this.renderReact15())}componentDidUpdate(){Fc()&&(Xm||this.renderReact15())}componentWillUnmount(){!Fc()||!this.node||(Xm||ya.unmountComponentAtNode(this.node),this.node.parentNode===document.body&&(document.body.removeChild(this.node),this.node=null))}renderReact15(){if(!Fc())return;const{children:t}=this.props;this.node&&ya.unstable_renderSubtreeIntoContainer(this,t,this.node)}renderReact16(){if(!Fc()||!Xm)return null;const{children:t}=this.props;return this.node?ya.createPortal(t,this.node):null}render(){return Xm?this.renderReact16():null}},Hxe=class{constructor(t,e){if(xt(this,"element"),xt(this,"options"),xt(this,"canBeTabbed",n=>{const{tabIndex:r}=n;return r===null||r<0?!1:this.canHaveFocus(n)}),xt(this,"canHaveFocus",n=>{const r=/input|select|textarea|button|object/,s=n.nodeName.toLowerCase();return(r.test(s)&&!n.getAttribute("disabled")||s==="a"&&!!n.getAttribute("href"))&&this.isVisible(n)}),xt(this,"findValidTabElements",()=>[].slice.call(this.element.querySelectorAll("*"),0).filter(this.canBeTabbed)),xt(this,"handleKeyDown",n=>{const{code:r="Tab"}=this.options;n.code===r&&this.interceptTab(n)}),xt(this,"interceptTab",n=>{n.preventDefault();const r=this.findValidTabElements(),{shiftKey:s}=n;if(!r.length)return;let i=document.activeElement?r.indexOf(document.activeElement):0;i===-1||!s&&i+1===r.length?i=0:s&&i===0?i=r.length-1:i+=s?-1:1,r[i].focus()}),xt(this,"isHidden",n=>{const r=n.offsetWidth<=0&&n.offsetHeight<=0,s=window.getComputedStyle(n);return r&&!n.innerHTML?!0:r&&s.getPropertyValue("overflow")!=="visible"||s.getPropertyValue("display")==="none"}),xt(this,"isVisible",n=>{let r=n;for(;r;)if(r instanceof HTMLElement){if(r===document.body)break;if(this.isHidden(r))return!1;r=r.parentNode}return!0}),xt(this,"removeScope",()=>{window.removeEventListener("keydown",this.handleKeyDown)}),xt(this,"checkFocus",n=>{document.activeElement!==n&&(n.focus(),window.requestAnimationFrame(()=>this.checkFocus(n)))}),xt(this,"setFocus",()=>{const{selector:n}=this.options;if(!n)return;const r=this.element.querySelector(n);r&&window.requestAnimationFrame(()=>this.checkFocus(r))}),!(t instanceof HTMLElement))throw new TypeError("Invalid parameter: element must be an HTMLElement");this.element=t,this.options=e,window.addEventListener("keydown",this.handleKeyDown,!1),this.setFocus()}},Qxe=class extends b.Component{constructor(t){if(super(t),xt(this,"beacon",null),xt(this,"setBeaconRef",s=>{this.beacon=s}),t.beaconComponent)return;const e=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.id="joyride-beacon-animation",t.nonce&&n.setAttribute("nonce",t.nonce),n.appendChild(document.createTextNode(` @keyframes joyride-beacon-inner { 20% { opacity: 0.9; @@ -85,45 +85,45 @@ reaction = "${T.reaction}"`;return o.jsxs(zo,{children:[o.jsx(Io,{asChild:!0,chi transform: scale(1); } } - `)),e.appendChild(n)}componentDidMount(){const{shouldFocus:t}=this.props;setTimeout(()=>{ft.domElement(this.beacon)&&t&&this.beacon.focus()},0)}componentWillUnmount(){const t=document.getElementById("joyride-beacon-animation");t?.parentNode&&t.parentNode.removeChild(t)}render(){const{beaconComponent:t,continuous:e,index:n,isLastStep:r,locale:s,onClickOrHover:i,size:a,step:l,styles:c}=this.props,d=yo(s.open),h={"aria-label":d,onClick:i,onMouseEnter:i,ref:this.setBeaconRef,title:d};let m;if(t){const g=t;m=b.createElement(g,{continuous:e,index:n,isLastStep:r,size:a,step:l,...h})}else m=b.createElement("button",{key:"JoyrideBeacon",className:"react-joyride__beacon","data-test-id":"button-beacon",style:c.beacon,type:"button",...h},b.createElement("span",{style:c.beaconInner}),b.createElement("span",{style:c.beaconOuter}));return m}};function qxe({styles:t,...e}){const{color:n,height:r,width:s,...i}=t;return ae.createElement("button",{style:i,type:"button",...e},ae.createElement("svg",{height:typeof r=="number"?`${r}px`:r,preserveAspectRatio:"xMidYMid",version:"1.1",viewBox:"0 0 18 18",width:typeof s=="number"?`${s}px`:s,xmlns:"http://www.w3.org/2000/svg"},ae.createElement("g",null,ae.createElement("path",{d:"M8.13911129,9.00268191 L0.171521827,17.0258467 C-0.0498027049,17.248715 -0.0498027049,17.6098394 0.171521827,17.8327545 C0.28204354,17.9443526 0.427188206,17.9998706 0.572051765,17.9998706 C0.71714958,17.9998706 0.862013139,17.9443526 0.972581703,17.8327545 L9.0000937,9.74924618 L17.0276057,17.8327545 C17.1384085,17.9443526 17.2832721,17.9998706 17.4281356,17.9998706 C17.5729992,17.9998706 17.718097,17.9443526 17.8286656,17.8327545 C18.0499901,17.6098862 18.0499901,17.2487618 17.8286656,17.0258467 L9.86135722,9.00268191 L17.8340066,0.973848225 C18.0553311,0.750979934 18.0553311,0.389855532 17.8340066,0.16694039 C17.6126821,-0.0556467968 17.254037,-0.0556467968 17.0329467,0.16694039 L9.00042166,8.25611765 L0.967006424,0.167268345 C0.745681892,-0.0553188426 0.387317931,-0.0553188426 0.165993399,0.167268345 C-0.0553311331,0.390136635 -0.0553311331,0.751261038 0.165993399,0.974176179 L8.13920499,9.00268191 L8.13911129,9.00268191 Z",fill:n}))))}var $xe=qxe;function Hxe(t){const{backProps:e,closeProps:n,index:r,isLastStep:s,primaryProps:i,skipProps:a,step:l,tooltipProps:c}=t,{content:d,hideBackButton:h,hideCloseButton:m,hideFooter:g,showSkipButton:x,styles:y,title:w}=l,S={};return S.primary=b.createElement("button",{"data-test-id":"button-primary",style:y.buttonNext,type:"button",...i}),x&&!s&&(S.skip=b.createElement("button",{"aria-live":"off","data-test-id":"button-skip",style:y.buttonSkip,type:"button",...a})),!h&&r>0&&(S.back=b.createElement("button",{"data-test-id":"button-back",style:y.buttonBack,type:"button",...e})),S.close=!m&&b.createElement($xe,{"data-test-id":"button-close",styles:y.buttonClose,...n}),b.createElement("div",{key:"JoyrideTooltip","aria-label":yo(w??d),className:"react-joyride__tooltip",style:y.tooltip,...c},b.createElement("div",{style:y.tooltipContainer},w&&b.createElement("h1",{"aria-label":yo(w),style:y.tooltipTitle},w),b.createElement("div",{style:y.tooltipContent},d)),!g&&b.createElement("div",{style:y.tooltipFooter},b.createElement("div",{style:y.tooltipFooterSpacer},S.skip),S.back,S.primary),S.close)}var Qxe=Hxe,Vxe=class extends b.Component{constructor(){super(...arguments),gt(this,"handleClickBack",t=>{t.preventDefault();const{helpers:e}=this.props;e.prev()}),gt(this,"handleClickClose",t=>{t.preventDefault();const{helpers:e}=this.props;e.close("button_close")}),gt(this,"handleClickPrimary",t=>{t.preventDefault();const{continuous:e,helpers:n}=this.props;if(!e){n.close("button_primary");return}n.next()}),gt(this,"handleClickSkip",t=>{t.preventDefault();const{helpers:e}=this.props;e.skip()}),gt(this,"getElementsProps",()=>{const{continuous:t,index:e,isLastStep:n,setTooltipRef:r,size:s,step:i}=this.props,{back:a,close:l,last:c,next:d,nextLabelWithProgress:h,skip:m}=i.locale,g=yo(a),x=yo(l),y=yo(c),w=yo(d),S=yo(m);let k=l,j=x;if(t){if(k=d,j=w,i.showProgress&&!n){const N=yo(h,{step:e+1,steps:s});k=SO(h,e+1,s),j=N}n&&(k=c,j=y)}return{backProps:{"aria-label":g,children:a,"data-action":"back",onClick:this.handleClickBack,role:"button",title:g},closeProps:{"aria-label":x,children:l,"data-action":"close",onClick:this.handleClickClose,role:"button",title:x},primaryProps:{"aria-label":j,children:k,"data-action":"primary",onClick:this.handleClickPrimary,role:"button",title:j},skipProps:{"aria-label":S,children:m,"data-action":"skip",onClick:this.handleClickSkip,role:"button",title:S},tooltipProps:{"aria-modal":!0,ref:r,role:"alertdialog"}}})}render(){const{continuous:t,index:e,isLastStep:n,setTooltipRef:r,size:s,step:i}=this.props,{beaconComponent:a,tooltipComponent:l,...c}=i;let d;if(l){const h={...this.getElementsProps(),continuous:t,index:e,isLastStep:n,size:s,step:c,setTooltipRef:r},m=l;d=b.createElement(m,{...h})}else d=b.createElement(Qxe,{...this.getElementsProps(),continuous:t,index:e,isLastStep:n,size:s,step:i});return d}},Uxe=class extends b.Component{constructor(){super(...arguments),gt(this,"scope",null),gt(this,"tooltip",null),gt(this,"handleClickHoverBeacon",t=>{const{step:e,store:n}=this.props;t.type==="mouseenter"&&e.event!=="hover"||n.update({lifecycle:Qt.TOOLTIP})}),gt(this,"setTooltipRef",t=>{this.tooltip=t}),gt(this,"setPopper",(t,e)=>{var n;const{action:r,lifecycle:s,step:i,store:a}=this.props;e==="wrapper"?a.setPopper("beacon",t):a.setPopper("tooltip",t),a.getPopper("beacon")&&(a.getPopper("tooltip")||i.placement==="center")&&s===Qt.INIT&&a.update({action:r,lifecycle:Qt.READY}),(n=i.floaterProps)!=null&&n.getPopper&&i.floaterProps.getPopper(t,e)}),gt(this,"renderTooltip",t=>{const{continuous:e,helpers:n,index:r,size:s,step:i}=this.props;return b.createElement(Vxe,{continuous:e,helpers:n,index:r,isLastStep:r+1===s,setTooltipRef:this.setTooltipRef,size:s,step:i,...t})})}componentDidMount(){const{debug:t,index:e}=this.props;hd({title:`step:${e}`,data:[{key:"props",value:this.props}],debug:t})}componentDidUpdate(t){var e;const{action:n,callback:r,continuous:s,controlled:i,debug:a,helpers:l,index:c,lifecycle:d,shouldScroll:h,status:m,step:g,store:x}=this.props,{changed:y,changedFrom:w}=uy(t,this.props),S=l.info(),k=s&&n!==Qn.CLOSE&&(c>0||n===Qn.PREV),j=y("action")||y("index")||y("lifecycle")||y("status"),N=w("lifecycle",[Qt.TOOLTIP,Qt.INIT],Qt.INIT),T=y("action",[Qn.NEXT,Qn.PREV,Qn.SKIP,Qn.CLOSE]),E=i&&c===t.index;if(T&&(N||E)&&r({...S,index:t.index,lifecycle:Qt.COMPLETE,step:t.step,type:Qa.STEP_AFTER}),g.placement==="center"&&m===mn.RUNNING&&y("index")&&n!==Qn.START&&d===Qt.INIT&&x.update({lifecycle:Qt.READY}),j){const _=Ml(g.target),A=!!_;A&&vxe(_)?(w("status",mn.READY,mn.RUNNING)||w("lifecycle",Qt.INIT,Qt.READY))&&r({...S,step:g,type:Qa.STEP_BEFORE}):(console.warn(A?"Target not visible":"Target not mounted",g),r({...S,type:Qa.TARGET_NOT_FOUND,step:g}),i||x.update({index:c+(n===Qn.PREV?-1:1)}))}w("lifecycle",Qt.INIT,Qt.READY)&&x.update({lifecycle:GA(g)||k?Qt.TOOLTIP:Qt.BEACON}),y("index")&&hd({title:`step:${d}`,data:[{key:"props",value:this.props}],debug:a}),y("lifecycle",Qt.BEACON)&&r({...S,step:g,type:Qa.BEACON}),y("lifecycle",Qt.TOOLTIP)&&(r({...S,step:g,type:Qa.TOOLTIP}),h&&this.tooltip&&(this.scope=new Bxe(this.tooltip,{selector:"[data-action=primary]"}),this.scope.setFocus())),w("lifecycle",[Qt.TOOLTIP,Qt.INIT],Qt.INIT)&&((e=this.scope)==null||e.removeScope(),x.cleanupPoppers())}componentWillUnmount(){var t;(t=this.scope)==null||t.removeScope()}get open(){const{lifecycle:t,step:e}=this.props;return GA(e)||t===Qt.TOOLTIP}render(){const{continuous:t,debug:e,index:n,nonce:r,shouldScroll:s,size:i,step:a}=this.props,l=Ml(a.target);return!fQ(a)||!ft.domElement(l)?null:b.createElement("div",{key:`JoyrideStep-${n}`,className:"react-joyride__step"},b.createElement(X6,{...a.floaterProps,component:this.renderTooltip,debug:e,getPopper:this.setPopper,id:`react-joyride-step-${n}`,open:this.open,placement:a.placement,target:a.target},b.createElement(Fxe,{beaconComponent:a.beaconComponent,continuous:t,index:n,isLastStep:n+1===i,locale:a.locale,nonce:r,onClickOrHover:this.handleClickHoverBeacon,shouldFocus:s,size:i,step:a,styles:a.styles})))}},pQ=class extends b.Component{constructor(t){super(t),gt(this,"helpers"),gt(this,"store"),gt(this,"callback",a=>{const{callback:l}=this.props;ft.function(l)&&l(a)}),gt(this,"handleKeyboard",a=>{const{index:l,lifecycle:c}=this.state,{steps:d}=this.props,h=d[l];c===Qt.TOOLTIP&&a.code==="Escape"&&h&&!h.disableCloseOnEsc&&this.store.close("keyboard")}),gt(this,"handleClickOverlay",()=>{const{index:a}=this.state,{steps:l}=this.props;ah(this.props,l[a]).disableOverlayClose||this.helpers.close("overlay")}),gt(this,"syncState",a=>{this.setState(a)});const{debug:e,getHelpers:n,run:r=!0,stepIndex:s}=t;this.store=Dxe({...t,controlled:r&&ft.number(s)}),this.helpers=this.store.getHelpers();const{addListener:i}=this.store;hd({title:"init",data:[{key:"props",value:this.props},{key:"state",value:this.state}],debug:e}),i(this.syncState),n&&n(this.helpers),this.state=this.store.getState()}componentDidMount(){if(!Ic())return;const{debug:t,disableCloseOnEsc:e,run:n,steps:r}=this.props,{start:s}=this.store;KA(r,t)&&n&&s(),e||document.body.addEventListener("keydown",this.handleKeyboard,{passive:!0})}componentDidUpdate(t,e){if(!Ic())return;const{action:n,controlled:r,index:s,status:i}=this.state,{debug:a,run:l,stepIndex:c,steps:d}=this.props,{stepIndex:h,steps:m}=t,{reset:g,setSteps:x,start:y,stop:w,update:S}=this.store,{changed:k}=uy(t,this.props),{changed:j,changedFrom:N}=uy(e,this.state),T=ah(this.props,d[s]),E=!ei(m,d),_=ft.number(c)&&k("stepIndex"),A=Ml(T.target);if(E&&(KA(d,a)?x(d):console.warn("Steps are not valid",d)),k("run")&&(l?y(c):w()),_){let B=ft.number(h)&&h=0?w:0,r===mn.RUNNING&&wxe(w,{element:y,duration:a}).then(()=>{setTimeout(()=>{var j;(j=this.store.getPopper("tooltip"))==null||j.instance.update()},10)})}}render(){if(!Ic())return null;const{index:t,lifecycle:e,status:n}=this.state,{continuous:r=!1,debug:s=!1,nonce:i,scrollToFirstStep:a=!1,steps:l}=this.props,c=n===mn.RUNNING,d={};if(c&&l[t]){const h=ah(this.props,l[t]);d.step=b.createElement(Uxe,{...this.state,callback:this.callback,continuous:r,debug:s,helpers:this.helpers,nonce:i,shouldScroll:!h.disableScrolling&&(t!==0||a),step:h,store:this.store}),d.overlay=b.createElement(Lxe,{id:"react-joyride-portal"},b.createElement(Ixe,{...h,continuous:r,debug:s,lifecycle:e,onClickOverlay:this.handleClickOverlay}))}return b.createElement("div",{className:"react-joyride"},d.step,d.overlay)}};gt(pQ,"defaultProps",Exe);var Wxe=pQ;function Y6(){const t=b.useContext(RH);if(!t)throw new Error("useTour must be used within a TourProvider");return t}const Gxe={options:{zIndex:1e4,primaryColor:"hsl(var(--primary))",textColor:"hsl(var(--foreground))",backgroundColor:"hsl(var(--background))",arrowColor:"hsl(var(--background))",overlayColor:"rgba(0, 0, 0, 0.5)"},tooltip:{borderRadius:"var(--radius)",padding:"1rem"},tooltipContainer:{textAlign:"left"},tooltipTitle:{fontSize:"1rem",fontWeight:600,marginBottom:"0.5rem"},tooltipContent:{fontSize:"0.875rem",padding:"0.5rem 0"},buttonNext:{backgroundColor:"hsl(var(--primary))",color:"hsl(var(--primary-foreground))",borderRadius:"calc(var(--radius) - 2px)",fontSize:"0.875rem",padding:"0.5rem 1rem"},buttonBack:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem",marginRight:"0.5rem"},buttonSkip:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem"},buttonClose:{color:"hsl(var(--muted-foreground))"},spotlight:{borderRadius:"var(--radius)"}},Xxe={back:"上一步",close:"关闭",last:"完成",next:"下一步",nextLabelWithProgress:"下一步 ({step}/{steps})",open:"打开对话框",skip:"跳过"};function Yxe(){const{state:t,getCurrentSteps:e,handleJoyrideCallback:n}=Y6(),r=e(),[s,i]=b.useState(!1),a=b.useRef(t.stepIndex),l=b.useRef(null);b.useEffect(()=>{a.current!==t.stepIndex&&(i(!1),a.current=t.stepIndex)},[t.stepIndex]),b.useEffect(()=>{if(!t.isRunning||r.length===0){i(!1);return}const h=r[t.stepIndex];if(!h){i(!1);return}const m=h.target;if(m==="body"){i(!0);return}i(!1);const g=setTimeout(()=>{const x=()=>{const k=document.querySelector(m);if(k){const j=k.getBoundingClientRect();if(j.width>0&&j.height>0)return!0}return!1};if(x()){setTimeout(()=>i(!0),100);return}const y=setInterval(()=>{x()&&(clearInterval(y),setTimeout(()=>i(!0),100))},100),w=setTimeout(()=>{clearInterval(y),i(!0)},5e3),S=()=>{clearInterval(y),clearTimeout(w)};l.current=S},150);return()=>{clearTimeout(g),l.current&&(l.current(),l.current=null)}},[t.isRunning,t.stepIndex,r]);const c=b.useRef(null);if(b.useEffect(()=>{let h=document.getElementById("tour-portal-container");return h||(h=document.createElement("div"),h.id="tour-portal-container",h.style.cssText="position: fixed; top: 0; left: 0; z-index: 99999; pointer-events: none;",document.body.appendChild(h)),c.current=h,()=>{}},[]),!t.isRunning||r.length===0||!s)return null;const d=o.jsx(Wxe,{steps:r,stepIndex:t.stepIndex,run:t.isRunning,continuous:!0,showSkipButton:!0,showProgress:!0,disableOverlayClose:!0,disableScrolling:!1,disableScrollParentFix:!1,callback:n,styles:Gxe,locale:Xxe,scrollOffset:80,scrollToFirstStep:!0,floaterProps:{styles:{floater:{zIndex:99999}},disableAnimation:!0}},`tour-step-${t.stepIndex}`);return c.current?pa.createPortal(d,c.current):d}const _l="model-assignment-tour",gQ=[{target:"body",content:"本引导旨在帮助你配置模型提供商和对应的模型,并为麦麦的各个组件分配合适的模型。",placement:"center",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="sidebar-model-provider"]',content:'第一步,你需要配置模型提供商。模型提供商决定了你要使用谁家的模型,无论是单一厂商(如 DeepSeek),还是模型平台(如 Siliconflow),都可以在这里进行配置。点击"下一步"进入配置页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-provider-button"]',content:'点击"添加提供商"按钮,开始配置你的模型提供商。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="provider-dialog"]',content:"在这里,你可以选择你想要配置的模型提供商,填写相关信息后保存即可。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-name-input"]',content:"这里的名称是你为这个模型提供商起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-apikey-input"]',content:"这里需要填写你从模型提供商那里获取的 API 密钥,用于验证和调用模型服务。对于不同的提供商,获取 API 密钥的方式可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-url-input"]',content:"这里需要填写模型提供商的 API 访问地址,确保填写正确以便系统能够连接到模型服务。对于不同的提供商,API 地址可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-template-select"]',content:"当然,如果你不知道如何填写这些信息,很多模型提供商在这里都提供了预设的模板供你选择,选择对应的模板后,相关信息会自动填充。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-save-button"]',content:"填写完所有信息后,点击保存按钮,模型提供商就配置完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-cancel-button"]',content:"因为这次咱们什么都没有填写,所以点击取消按钮退出吧。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="sidebar-model-management"]',content:'配置好模型提供商后,接下来我们需要为麦麦添加模型并分配功能。点击"下一步"进入模型管理页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-model-button"]',content:'在为麦麦的组件分配模型之前,首先需要添加你想要分配的模型,点击"添加模型"按钮开始添加。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="model-dialog"]',content:"在这里,你可以选择你之前配置好的模型提供商,然后选择对应的模型来添加。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-name-input"]',content:"这里的模型名称是你为这个模型起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-provider-select"]',content:"在这里选择你之前配置好的模型提供商,这样系统才能知道你要添加哪个提供商的模型。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-identifier-input"]',content:"这里需要填写你想要添加的模型的标识符,不同的模型提供商可能有不同的标识符格式,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-save-button"]',content:"填写完所有信息后,点击保存按钮,模型就添加完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-cancel-button"]',content:"当然,因为这次咱们什么都没有填写,所以直接点击取消按钮退出吧,等你准备好了再来添加模型。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="tasks-tab-trigger"]',content:'最后一步,添加好模型后,切换到"为模型分配功能"标签页,为麦麦的各个组件分配合适的模型。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="task-model-select"]',content:"在这里,你可以为每个组件选择一个或多个合适的模型,选择完成后配置会自动保存。恭喜你完成了模型配置的学习!",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1}],xQ={0:"/config/model",1:"/config/model",2:"/config/modelProvider",3:"/config/modelProvider",4:"/config/modelProvider",5:"/config/modelProvider",6:"/config/modelProvider",7:"/config/modelProvider",8:"/config/modelProvider",9:"/config/modelProvider",10:"/config/modelProvider",11:"/config/model",12:"/config/model",13:"/config/model",14:"/config/model",15:"/config/model",16:"/config/model",17:"/config/model",18:"/config/model",19:"/config/model"},d0=[{id:"siliconflow",name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",client_type:"openai",display_name:"硅基流动 (SiliconFlow)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"deepseek",name:"DeepSeek",base_url:"https://api.deepseek.com",client_type:"openai",display_name:"DeepSeek",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"rinkoai",name:"RinkoAI",base_url:"https://rinkoai.com/v1",client_type:"openai",display_name:"RinkoAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"zhipu",name:"ZhipuAI",base_url:"https://open.bigmodel.cn/api/paas/v4",client_type:"openai",display_name:"智谱 AI (ZhipuAI / GLM)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"moonshot",name:"Moonshot",base_url:"https://api.moonshot.cn/v1",client_type:"openai",display_name:"月之暗面 (Moonshot / Kimi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"doubao",name:"Doubao",base_url:"https://ark.cn-beijing.volces.com/api/v3",client_type:"openai",display_name:"字节豆包 (Doubao)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"alibaba",name:"Alibaba",base_url:"https://dashscope.aliyuncs.com/compatible-mode/v1",client_type:"openai",display_name:"阿里云百炼 (Alibaba Qwen)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"baichuan",name:"Baichuan",base_url:"https://api.baichuan-ai.com/v1",client_type:"openai",display_name:"百川智能 (Baichuan)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"minimax",name:"MiniMax",base_url:"https://api.minimax.chat/v1",client_type:"openai",display_name:"MiniMax (海螺 AI)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"stepfun",name:"StepFun",base_url:"https://api.stepfun.com/v1",client_type:"openai",display_name:"阶跃星辰 (StepFun)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"lingyi",name:"Lingyi",base_url:"https://api.lingyiwanwu.com/v1",client_type:"openai",display_name:"零一万物 (Lingyi / Yi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"openai",name:"OpenAI",base_url:"https://api.openai.com/v1",client_type:"openai",display_name:"OpenAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"xai",name:"xAI",base_url:"https://api.x.ai/v1",client_type:"openai",display_name:"xAI (Grok)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"anthropic",name:"Anthropic",base_url:"https://api.anthropic.com/v1",client_type:"openai",display_name:"Anthropic (Claude)"},{id:"gemini",name:"Gemini",base_url:"https://generativelanguage.googleapis.com/v1beta",client_type:"gemini",display_name:"Google Gemini",modelFetcher:{endpoint:"/models",parser:"gemini"}},{id:"cohere",name:"Cohere",base_url:"https://api.cohere.ai/v1",client_type:"openai",display_name:"Cohere"},{id:"groq",name:"Groq",base_url:"https://api.groq.com/openai/v1",client_type:"openai",display_name:"Groq",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"together",name:"Together AI",base_url:"https://api.together.xyz/v1",client_type:"openai",display_name:"Together AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"fireworks",name:"Fireworks",base_url:"https://api.fireworks.ai/inference/v1",client_type:"openai",display_name:"Fireworks AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"mistral",name:"Mistral",base_url:"https://api.mistral.ai/v1",client_type:"openai",display_name:"Mistral AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"perplexity",name:"Perplexity",base_url:"https://api.perplexity.ai",client_type:"openai",display_name:"Perplexity AI"},{id:"custom",name:"",base_url:"",client_type:"openai",display_name:"自定义"}];function JA(t){return t?t.replace(/\/+$/,"").toLowerCase():""}function Kxe(t){if(!t)return null;const e=JA(t);return d0.find(n=>n.id!=="custom"&&JA(n.base_url)===e)||null}function Zxe(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[s,i]=b.useState(!1),[a,l]=b.useState(!1),[c,d]=b.useState(!1),[h,m]=b.useState(!1),[g,x]=b.useState(!1),[y,w]=b.useState(!1),[S,k]=b.useState(null),[j,N]=b.useState(null),[T,E]=b.useState("custom"),[_,A]=b.useState(!1),[L,P]=b.useState(!1),[B,$]=b.useState(null),[U,te]=b.useState(!1),[z,Q]=b.useState(""),[F,Y]=b.useState(new Set),[J,X]=b.useState(!1),[R,ie]=b.useState(1),[G,I]=b.useState(20),[V,ee]=b.useState(""),{toast:ne}=as(),W=Zi(),{state:se,goToStep:re,registerTour:oe}=Y6(),Te=b.useRef(null),We=b.useRef(!0);b.useEffect(()=>{oe(_l,gQ)},[oe]),b.useEffect(()=>{if(se.activeTourId===_l&&se.isRunning){const ke=xQ[se.stepIndex];ke&&!window.location.pathname.endsWith(ke.replace("/config/",""))&&W({to:ke})}},[se.stepIndex,se.activeTourId,se.isRunning,W]);const Ye=b.useRef(se.stepIndex);b.useEffect(()=>{if(se.activeTourId===_l&&se.isRunning){const ke=Ye.current,Pe=se.stepIndex;ke>=3&&ke<=9&&Pe<3&&w(!1),Ye.current=Pe}},[se.stepIndex,se.activeTourId,se.isRunning]),b.useEffect(()=>{if(se.activeTourId!==_l||!se.isRunning)return;const ke=Pe=>{const it=Pe.target,ot=se.stepIndex;ot===2&&it.closest('[data-tour="add-provider-button"]')?setTimeout(()=>re(3),300):ot===9&&it.closest('[data-tour="provider-cancel-button"]')&&setTimeout(()=>re(10),300)};return document.addEventListener("click",ke,!0),()=>document.removeEventListener("click",ke,!0)},[se,re]),b.useEffect(()=>{Je()},[]);const Je=async()=>{try{r(!0);const ke=await Rh();e(ke.api_providers||[]),d(!1),We.current=!1}catch(ke){console.error("加载配置失败:",ke)}finally{r(!1)}},Oe=async()=>{try{m(!0),ib().catch(()=>{}),x(!0)}catch(ke){console.error("重启失败:",ke),x(!1),ne({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),m(!1)}},Ve=async()=>{try{i(!0),Te.current&&clearTimeout(Te.current);const ke=await Rh();ke.api_providers=t,await qv(ke),d(!1),ne({title:"保存成功",description:"正在重启麦麦..."}),await Oe()}catch(ke){console.error("保存配置失败:",ke),ne({title:"保存失败",description:ke.message,variant:"destructive"}),i(!1)}},Ue=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},He=()=>{x(!1),m(!1),ne({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},Ot=b.useCallback(async ke=>{if(!We.current)try{l(!0),await xk("api_providers",ke),d(!1)}catch(Pe){console.error("自动保存失败:",Pe),d(!0)}finally{l(!1)}},[]);b.useEffect(()=>{if(!We.current)return d(!0),Te.current&&clearTimeout(Te.current),Te.current=setTimeout(()=>{Ot(t)},2e3),()=>{Te.current&&clearTimeout(Te.current)}},[t,Ot]);const xt=async()=>{try{i(!0),Te.current&&clearTimeout(Te.current);const ke=await Rh();ke.api_providers=t,await qv(ke),d(!1),ne({title:"保存成功",description:"模型提供商配置已保存"})}catch(ke){console.error("保存配置失败:",ke),ne({title:"保存失败",description:ke.message,variant:"destructive"})}finally{i(!1)}},kn=(ke,Pe)=>{if(ke){const it=d0.find(ot=>ot.base_url===ke.base_url&&ot.client_type===ke.client_type);E(it?.id||"custom"),k(ke)}else E("custom"),k({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10});N(Pe),te(!1),w(!0)},It=ke=>{E(ke),A(!1);const Pe=d0.find(it=>it.id===ke);Pe&&Pe.id!=="custom"?k(it=>({...it,name:Pe.name,base_url:Pe.base_url,client_type:Pe.client_type})):Pe?.id==="custom"&&k(it=>({...it,name:"",base_url:"",client_type:"openai"}))},Yt=b.useMemo(()=>T!=="custom",[T]),_t=async()=>{if(S?.api_key)try{await navigator.clipboard.writeText(S.api_key),ne({title:"复制成功",description:"API Key 已复制到剪贴板"})}catch{ne({title:"复制失败",description:"无法访问剪贴板",variant:"destructive"})}},mt=()=>{if(!S)return;const ke={...S,max_retry:S.max_retry??2,timeout:S.timeout??30,retry_interval:S.retry_interval??10};if(j!==null){const Pe=[...t];Pe[j]=ke,e(Pe)}else e([...t,ke]);w(!1),k(null),N(null)},Ne=ke=>{if(!ke&&S){const Pe={...S,max_retry:S.max_retry??2,timeout:S.timeout??30,retry_interval:S.retry_interval??10};k(Pe)}w(ke)},Ie=ke=>{$(ke),P(!0)},st=()=>{if(B!==null){const ke=t.filter((Pe,it)=>it!==B);e(ke),ne({title:"删除成功",description:"提供商已从列表中移除"})}P(!1),$(null)},yt=ke=>{const Pe=new Set(F);Pe.has(ke)?Pe.delete(ke):Pe.add(ke),Y(Pe)},Pt=()=>{if(F.size===Fe.length)Y(new Set);else{const ke=Fe.map((Pe,it)=>t.findIndex(ot=>ot===Fe[it]));Y(new Set(ke))}},Mt=()=>{if(F.size===0){ne({title:"提示",description:"请先选择要删除的提供商",variant:"default"});return}X(!0)},zn=()=>{const ke=t.filter((Pe,it)=>!F.has(it));e(ke),Y(new Set),X(!1),ne({title:"批量删除成功",description:`已删除 ${F.size} 个提供商`})},Fe=t.filter(ke=>{if(!z)return!0;const Pe=z.toLowerCase();return ke.name.toLowerCase().includes(Pe)||ke.base_url.toLowerCase().includes(Pe)||ke.client_type.toLowerCase().includes(Pe)}),rt=Math.ceil(Fe.length/G),tn=Fe.slice((R-1)*G,R*G),Rt=()=>{const ke=parseInt(V);ke>=1&&ke<=rt&&(ie(ke),ee(""))};return n?o.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:o.jsx("div",{className:"flex items-center justify-center h-64",children:o.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})}):o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"AI模型厂商配置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理 AI 模型厂商的 API 配置"})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[F.size>0&&o.jsxs(de,{onClick:Mt,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[o.jsx(Sn,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",F.size,")"]}),o.jsxs(de,{onClick:()=>kn(null,null),size:"sm",className:"w-full sm:w-auto","data-tour":"add-provider-button",children:[o.jsx(Ls,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加提供商"]}),o.jsxs(de,{onClick:xt,disabled:s||a||!c||h,size:"sm",variant:"outline",className:"w-full sm:w-auto sm:min-w-[120px]",children:[o.jsx(Gy,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),s?"保存中...":a?"自动保存中...":c?"保存配置":"已保存"]}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs(de,{disabled:s||a||h,size:"sm",className:"w-full sm:w-auto sm:min-w-[120px]",children:[o.jsx(Aj,{className:"mr-2 h-4 w-4"}),h?"重启中...":c?"保存并重启":"重启麦麦"]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认重启麦麦?"}),o.jsx(_n,{className:"space-y-3",asChild:!0,children:o.jsxs("div",{children:[o.jsx("p",{children:c?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),o.jsxs(ga,{className:"border-yellow-500/50 bg-yellow-500/10",children:[o.jsx(Oa,{className:"h-4 w-4 text-yellow-600"}),o.jsxs(xa,{className:"text-yellow-900 dark:text-yellow-100",children:[o.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",o.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",o.jsxs(Dr,{children:[o.jsx(Of,{asChild:!0,children:o.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[o.jsx(Wy,{className:"h-3 w-3"}),"如何结束程序?"]})}),o.jsxs(Sr,{className:"max-w-2xl",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"如何结束使用重启功能后的麦麦程序"}),o.jsx(ss,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),o.jsxs(ja,{defaultValue:"windows",className:"w-full",children:[o.jsxs(Wi,{className:"grid w-full grid-cols-3",children:[o.jsx(Lt,{value:"windows",children:"Windows"}),o.jsx(Lt,{value:"macos",children:"macOS"}),o.jsx(Lt,{value:"linux",children:"Linux"})]}),o.jsxs(un,{value:"windows",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),o.jsxs("li",{children:["在“进程”或“详细信息”标签页中找到 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),o.jsx("li",{children:"右键点击并选择“结束任务”"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),o.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),o.jsxs(un,{value:"macos",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"})," 打开 Spotlight,搜索“活动监视器”"]}),o.jsxs("li",{children:["在进程列表中找到 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),o.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]})]}),o.jsxs(un,{value:"linux",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),o.jsx("p",{children:'pkill -9 -f "bot.py"'}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["在终端输入 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),o.jsx(ws,{children:o.jsx(Gj,{asChild:!0,children:o.jsx(de,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:c?Ve:Oe,children:c?"保存并重启":"确认重启"})]})]})]})]})]}),o.jsxs(ga,{children:[o.jsx(Oa,{className:"h-4 w-4"}),o.jsxs(xa,{children:["配置更新后需要",o.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),o.jsxs(gn,{className:"h-[calc(100vh-260px)]",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2 mb-4",children:[o.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[o.jsx(Ni,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(ze,{placeholder:"搜索提供商名称、URL 或类型...",value:z,onChange:ke=>Q(ke.target.value),className:"pl-9"})]}),z&&o.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",Fe.length," 个结果"]})]}),o.jsx("div",{className:"md:hidden space-y-3",children:Fe.length===0?o.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:z?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'}):tn.map((ke,Pe)=>{const it=t.findIndex(ot=>ot===ke);return o.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-start justify-between gap-2",children:[o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("h3",{className:"font-semibold text-base truncate",children:ke.name}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1 break-all",children:ke.base_url})]}),o.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[o.jsxs(de,{variant:"default",size:"sm",onClick:()=>kn(ke,it),children:[o.jsx(Yu,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),o.jsxs(de,{size:"sm",onClick:()=>Ie(it),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Sn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"客户端类型"}),o.jsx("p",{className:"font-medium",children:ke.client_type})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"最大重试"}),o.jsx("p",{className:"font-medium",children:ke.max_retry})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"超时(秒)"}),o.jsx("p",{className:"font-medium",children:ke.timeout})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"重试间隔(秒)"}),o.jsx("p",{className:"font-medium",children:ke.retry_interval})]})]})]},Pe)})}),o.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:o.jsx("div",{className:"overflow-x-auto",children:o.jsxs(_f,{children:[o.jsx(Af,{children:o.jsxs(Is,{children:[o.jsx(pn,{className:"w-12",children:o.jsx(Oi,{checked:F.size===Fe.length&&Fe.length>0,onCheckedChange:Pt})}),o.jsx(pn,{children:"名称"}),o.jsx(pn,{children:"基础URL"}),o.jsx(pn,{children:"客户端类型"}),o.jsx(pn,{className:"text-right",children:"最大重试"}),o.jsx(pn,{className:"text-right",children:"超时(秒)"}),o.jsx(pn,{className:"text-right",children:"重试间隔(秒)"}),o.jsx(pn,{className:"text-right",children:"操作"})]})}),o.jsx(Mf,{children:tn.length===0?o.jsx(Is,{children:o.jsx(Gt,{colSpan:8,className:"text-center text-muted-foreground py-8",children:z?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'})}):tn.map((ke,Pe)=>{const it=t.findIndex(ot=>ot===ke);return o.jsxs(Is,{children:[o.jsx(Gt,{children:o.jsx(Oi,{checked:F.has(it),onCheckedChange:()=>yt(it)})}),o.jsx(Gt,{className:"font-medium",children:ke.name}),o.jsx(Gt,{className:"max-w-xs truncate",title:ke.base_url,children:ke.base_url}),o.jsx(Gt,{children:ke.client_type}),o.jsx(Gt,{className:"text-right",children:ke.max_retry}),o.jsx(Gt,{className:"text-right",children:ke.timeout}),o.jsx(Gt,{className:"text-right",children:ke.retry_interval}),o.jsx(Gt,{className:"text-right",children:o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsxs(de,{variant:"default",size:"sm",onClick:()=>kn(ke,it),children:[o.jsx(Yu,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),o.jsxs(de,{size:"sm",onClick:()=>Ie(it),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Sn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},Pe)})})]})})}),Fe.length>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{htmlFor:"page-size-provider",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:G.toString(),onValueChange:ke=>{I(parseInt(ke)),ie(1),Y(new Set)},children:[o.jsx($t,{id:"page-size-provider",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"10",children:"10"}),o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"50",children:"50"}),o.jsx(De,{value:"100",children:"100"})]})]}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(R-1)*G+1," 到"," ",Math.min(R*G,Fe.length)," 条,共 ",Fe.length," 条"]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(de,{variant:"outline",size:"sm",onClick:()=>ie(1),disabled:R===1,className:"hidden sm:flex",children:o.jsx(Ap,{className:"h-4 w-4"})}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>ie(ke=>Math.max(1,ke-1)),disabled:R===1,children:[o.jsx(vd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{type:"number",value:V,onChange:ke=>ee(ke.target.value),onKeyDown:ke=>ke.key==="Enter"&&Rt(),placeholder:R.toString(),className:"w-16 h-8 text-center",min:1,max:rt}),o.jsx(de,{variant:"outline",size:"sm",onClick:Rt,disabled:!V,className:"h-8",children:"跳转"})]}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>ie(ke=>ke+1),disabled:R>=rt,children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(yd,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(de,{variant:"outline",size:"sm",onClick:()=>ie(rt),disabled:R>=rt,className:"hidden sm:flex",children:o.jsx(Mp,{className:"h-4 w-4"})})]})]})]}),o.jsx(Dr,{open:y,onOpenChange:Ne,children:o.jsxs(Sr,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"provider-dialog",preventOutsideClose:se.isRunning,children:[o.jsxs(kr,{children:[o.jsx(Or,{children:j!==null?"编辑提供商":"添加提供商"}),o.jsx(ss,{children:"配置 API 提供商的连接信息和参数"})]}),o.jsxs("form",{onSubmit:ke=>{ke.preventDefault(),mt()},autoComplete:"off",children:[o.jsxs("div",{className:"grid gap-4 py-4",children:[o.jsxs("div",{className:"grid gap-2","data-tour":"provider-template-select",children:[o.jsx(he,{htmlFor:"template",children:"提供商模板"}),o.jsxs(zo,{open:_,onOpenChange:A,children:[o.jsx(Io,{asChild:!0,children:o.jsxs(de,{variant:"outline",role:"combobox","aria-expanded":_,className:"w-full justify-between",children:[T?d0.find(ke=>ke.id===T)?.display_name:"选择提供商模板...",o.jsx(Mj,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),o.jsx(Xa,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:o.jsxs(Ob,{children:[o.jsx(jb,{placeholder:"搜索提供商模板..."}),o.jsx(gn,{className:"h-[300px]",children:o.jsxs(Nb,{className:"max-h-none overflow-visible",children:[o.jsx(Cb,{children:"未找到匹配的模板"}),o.jsx(ap,{children:d0.map(ke=>o.jsxs(op,{value:ke.display_name,onSelect:()=>It(ke.id),children:[o.jsx(Ro,{className:`mr-2 h-4 w-4 ${T===ke.id?"opacity-100":"opacity-0"}`}),ke.display_name]},ke.id))})]})})]})})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"选择预设模板可自动填充 URL 和客户端类型,支持搜索"})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"provider-name-input",children:[o.jsx(he,{htmlFor:"name",children:"名称 *"}),o.jsx(ze,{id:"name",value:S?.name||"",onChange:ke=>k(Pe=>Pe?{...Pe,name:ke.target.value}:null),placeholder:"例如: DeepSeek, SiliconFlow"})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"provider-url-input",children:[o.jsx(he,{htmlFor:"base_url",children:"基础 URL *"}),o.jsx(ze,{id:"base_url",value:S?.base_url||"",onChange:ke=>k(Pe=>Pe?{...Pe,base_url:ke.target.value}:null),placeholder:"https://api.example.com/v1",disabled:Yt,className:Yt?"bg-muted cursor-not-allowed":""}),Yt&&o.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时 URL 不可编辑,切换到"自定义"以手动配置'})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"provider-apikey-input",children:[o.jsx(he,{htmlFor:"api_key",children:"API Key *"}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{id:"api_key",type:U?"text":"password",value:S?.api_key||"",onChange:ke=>k(Pe=>Pe?{...Pe,api_key:ke.target.value}:null),placeholder:"sk-...",className:"flex-1"}),o.jsx(de,{type:"button",variant:"outline",size:"icon",onClick:()=>te(!U),title:U?"隐藏密钥":"显示密钥",children:U?o.jsx(Rv,{className:"h-4 w-4"}):o.jsx(Ea,{className:"h-4 w-4"})}),o.jsx(de,{type:"button",variant:"outline",size:"icon",onClick:_t,title:"复制密钥",children:o.jsx(Mv,{className:"h-4 w-4"})})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"client_type",children:"客户端类型"}),o.jsxs(Vt,{value:S?.client_type||"openai",onValueChange:ke=>k(Pe=>Pe?{...Pe,client_type:ke}:null),disabled:Yt,children:[o.jsx($t,{id:"client_type",className:Yt?"bg-muted cursor-not-allowed":"",children:o.jsx(Ut,{placeholder:"选择客户端类型"})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"openai",children:"OpenAI"}),o.jsx(De,{value:"gemini",children:"Gemini"})]})]}),Yt&&o.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时客户端类型不可编辑,切换到"自定义"以手动配置'})]}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"max_retry",children:"最大重试"}),o.jsx(ze,{id:"max_retry",type:"number",min:"0",value:S?.max_retry??"",onChange:ke=>{const Pe=ke.target.value===""?null:parseInt(ke.target.value);k(it=>it?{...it,max_retry:Pe}:null)},placeholder:"默认: 2"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"timeout",children:"超时(秒)"}),o.jsx(ze,{id:"timeout",type:"number",min:"1",value:S?.timeout??"",onChange:ke=>{const Pe=ke.target.value===""?null:parseInt(ke.target.value);k(it=>it?{...it,timeout:Pe}:null)},placeholder:"默认: 30"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"retry_interval",children:"重试间隔(秒)"}),o.jsx(ze,{id:"retry_interval",type:"number",min:"1",value:S?.retry_interval??"",onChange:ke=>{const Pe=ke.target.value===""?null:parseInt(ke.target.value);k(it=>it?{...it,retry_interval:Pe}:null)},placeholder:"默认: 10"})]})]})]}),o.jsxs(ws,{children:[o.jsx(de,{type:"button",variant:"outline",onClick:()=>w(!1),"data-tour":"provider-cancel-button",children:"取消"}),o.jsx(de,{type:"submit","data-tour":"provider-save-button",children:"保存"})]})]})]})}),o.jsx(Dn,{open:L,onOpenChange:P,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除提供商 "',B!==null?t[B]?.name:"",'" 吗? 此操作无法撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:st,children:"删除"})]})]})}),o.jsx(Dn,{open:J,onOpenChange:X,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认批量删除"}),o.jsxs(_n,{children:["确定要删除选中的 ",F.size," 个提供商吗? 此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:zn,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),g&&o.jsx(Kj,{onRestartComplete:Ue,onRestartFailed:He})]})}function Jxe(){for(var t=arguments.length,e=new Array(t),n=0;nr=>{e.forEach(s=>s(r))},e)}const Ab=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function zf(t){const e=Object.prototype.toString.call(t);return e==="[object Window]"||e==="[object global]"}function K6(t){return"nodeType"in t}function Ti(t){var e,n;return t?zf(t)?t:K6(t)&&(e=(n=t.ownerDocument)==null?void 0:n.defaultView)!=null?e:window:window}function Z6(t){const{Document:e}=Ti(t);return t instanceof e}function og(t){return zf(t)?!1:t instanceof Ti(t).HTMLElement}function vQ(t){return t instanceof Ti(t).SVGElement}function If(t){return t?zf(t)?t.document:K6(t)?Z6(t)?t:og(t)||vQ(t)?t.ownerDocument:document:document:document}const Bo=Ab?b.useLayoutEffect:b.useEffect;function J6(t){const e=b.useRef(t);return Bo(()=>{e.current=t}),b.useCallback(function(){for(var n=arguments.length,r=new Array(n),s=0;s{t.current=setInterval(r,s)},[]),n=b.useCallback(()=>{t.current!==null&&(clearInterval(t.current),t.current=null)},[]);return[e,n]}function up(t,e){e===void 0&&(e=[t]);const n=b.useRef(t);return Bo(()=>{n.current!==t&&(n.current=t)},e),n}function lg(t,e){const n=b.useRef();return b.useMemo(()=>{const r=t(n.current);return n.current=r,r},[...e])}function my(t){const e=J6(t),n=b.useRef(null),r=b.useCallback(s=>{s!==n.current&&e?.(s,n.current),n.current=s},[]);return[n,r]}function kO(t){const e=b.useRef();return b.useEffect(()=>{e.current=t},[t]),e.current}let kS={};function cg(t,e){return b.useMemo(()=>{if(e)return e;const n=kS[t]==null?0:kS[t]+1;return kS[t]=n,t+"-"+n},[t,e])}function yQ(t){return function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),s=1;s{const l=Object.entries(a);for(const[c,d]of l){const h=i[c];h!=null&&(i[c]=h+t*d)}return i},{...e})}}const Fh=yQ(1),dp=yQ(-1);function t1e(t){return"clientX"in t&&"clientY"in t}function eN(t){if(!t)return!1;const{KeyboardEvent:e}=Ti(t.target);return e&&t instanceof e}function n1e(t){if(!t)return!1;const{TouchEvent:e}=Ti(t.target);return e&&t instanceof e}function OO(t){if(n1e(t)){if(t.touches&&t.touches.length){const{clientX:e,clientY:n}=t.touches[0];return{x:e,y:n}}else if(t.changedTouches&&t.changedTouches.length){const{clientX:e,clientY:n}=t.changedTouches[0];return{x:e,y:n}}}return t1e(t)?{x:t.clientX,y:t.clientY}:null}const hp=Object.freeze({Translate:{toString(t){if(!t)return;const{x:e,y:n}=t;return"translate3d("+(e?Math.round(e):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(t){if(!t)return;const{scaleX:e,scaleY:n}=t;return"scaleX("+e+") scaleY("+n+")"}},Transform:{toString(t){if(t)return[hp.Translate.toString(t),hp.Scale.toString(t)].join(" ")}},Transition:{toString(t){let{property:e,duration:n,easing:r}=t;return e+" "+n+"ms "+r}}}),eM="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function r1e(t){return t.matches(eM)?t:t.querySelector(eM)}const s1e={display:"none"};function i1e(t){let{id:e,value:n}=t;return ae.createElement("div",{id:e,style:s1e},n)}function a1e(t){let{id:e,announcement:n,ariaLiveType:r="assertive"}=t;const s={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return ae.createElement("div",{id:e,style:s,role:"status","aria-live":r,"aria-atomic":!0},n)}function o1e(){const[t,e]=b.useState("");return{announce:b.useCallback(r=>{r!=null&&e(r)},[]),announcement:t}}const bQ=b.createContext(null);function l1e(t){const e=b.useContext(bQ);b.useEffect(()=>{if(!e)throw new Error("useDndMonitor must be used within a children of ");return e(t)},[t,e])}function c1e(){const[t]=b.useState(()=>new Set),e=b.useCallback(r=>(t.add(r),()=>t.delete(r)),[t]);return[b.useCallback(r=>{let{type:s,event:i}=r;t.forEach(a=>{var l;return(l=a[s])==null?void 0:l.call(a,i)})},[t]),e]}const u1e={draggable:` + `)),e.appendChild(n)}componentDidMount(){const{shouldFocus:t}=this.props;setTimeout(()=>{pt.domElement(this.beacon)&&t&&this.beacon.focus()},0)}componentWillUnmount(){const t=document.getElementById("joyride-beacon-animation");t?.parentNode&&t.parentNode.removeChild(t)}render(){const{beaconComponent:t,continuous:e,index:n,isLastStep:r,locale:s,onClickOrHover:i,size:a,step:l,styles:c}=this.props,d=wo(s.open),h={"aria-label":d,onClick:i,onMouseEnter:i,ref:this.setBeaconRef,title:d};let m;if(t){const g=t;m=b.createElement(g,{continuous:e,index:n,isLastStep:r,size:a,step:l,...h})}else m=b.createElement("button",{key:"JoyrideBeacon",className:"react-joyride__beacon","data-test-id":"button-beacon",style:c.beacon,type:"button",...h},b.createElement("span",{style:c.beaconInner}),b.createElement("span",{style:c.beaconOuter}));return m}};function Vxe({styles:t,...e}){const{color:n,height:r,width:s,...i}=t;return oe.createElement("button",{style:i,type:"button",...e},oe.createElement("svg",{height:typeof r=="number"?`${r}px`:r,preserveAspectRatio:"xMidYMid",version:"1.1",viewBox:"0 0 18 18",width:typeof s=="number"?`${s}px`:s,xmlns:"http://www.w3.org/2000/svg"},oe.createElement("g",null,oe.createElement("path",{d:"M8.13911129,9.00268191 L0.171521827,17.0258467 C-0.0498027049,17.248715 -0.0498027049,17.6098394 0.171521827,17.8327545 C0.28204354,17.9443526 0.427188206,17.9998706 0.572051765,17.9998706 C0.71714958,17.9998706 0.862013139,17.9443526 0.972581703,17.8327545 L9.0000937,9.74924618 L17.0276057,17.8327545 C17.1384085,17.9443526 17.2832721,17.9998706 17.4281356,17.9998706 C17.5729992,17.9998706 17.718097,17.9443526 17.8286656,17.8327545 C18.0499901,17.6098862 18.0499901,17.2487618 17.8286656,17.0258467 L9.86135722,9.00268191 L17.8340066,0.973848225 C18.0553311,0.750979934 18.0553311,0.389855532 17.8340066,0.16694039 C17.6126821,-0.0556467968 17.254037,-0.0556467968 17.0329467,0.16694039 L9.00042166,8.25611765 L0.967006424,0.167268345 C0.745681892,-0.0553188426 0.387317931,-0.0553188426 0.165993399,0.167268345 C-0.0553311331,0.390136635 -0.0553311331,0.751261038 0.165993399,0.974176179 L8.13920499,9.00268191 L8.13911129,9.00268191 Z",fill:n}))))}var Uxe=Vxe;function Wxe(t){const{backProps:e,closeProps:n,index:r,isLastStep:s,primaryProps:i,skipProps:a,step:l,tooltipProps:c}=t,{content:d,hideBackButton:h,hideCloseButton:m,hideFooter:g,showSkipButton:x,styles:y,title:w}=l,S={};return S.primary=b.createElement("button",{"data-test-id":"button-primary",style:y.buttonNext,type:"button",...i}),x&&!s&&(S.skip=b.createElement("button",{"aria-live":"off","data-test-id":"button-skip",style:y.buttonSkip,type:"button",...a})),!h&&r>0&&(S.back=b.createElement("button",{"data-test-id":"button-back",style:y.buttonBack,type:"button",...e})),S.close=!m&&b.createElement(Uxe,{"data-test-id":"button-close",styles:y.buttonClose,...n}),b.createElement("div",{key:"JoyrideTooltip","aria-label":wo(w??d),className:"react-joyride__tooltip",style:y.tooltip,...c},b.createElement("div",{style:y.tooltipContainer},w&&b.createElement("h1",{"aria-label":wo(w),style:y.tooltipTitle},w),b.createElement("div",{style:y.tooltipContent},d)),!g&&b.createElement("div",{style:y.tooltipFooter},b.createElement("div",{style:y.tooltipFooterSpacer},S.skip),S.back,S.primary),S.close)}var Gxe=Wxe,Xxe=class extends b.Component{constructor(){super(...arguments),xt(this,"handleClickBack",t=>{t.preventDefault();const{helpers:e}=this.props;e.prev()}),xt(this,"handleClickClose",t=>{t.preventDefault();const{helpers:e}=this.props;e.close("button_close")}),xt(this,"handleClickPrimary",t=>{t.preventDefault();const{continuous:e,helpers:n}=this.props;if(!e){n.close("button_primary");return}n.next()}),xt(this,"handleClickSkip",t=>{t.preventDefault();const{helpers:e}=this.props;e.skip()}),xt(this,"getElementsProps",()=>{const{continuous:t,index:e,isLastStep:n,setTooltipRef:r,size:s,step:i}=this.props,{back:a,close:l,last:c,next:d,nextLabelWithProgress:h,skip:m}=i.locale,g=wo(a),x=wo(l),y=wo(c),w=wo(d),S=wo(m);let k=l,j=x;if(t){if(k=d,j=w,i.showProgress&&!n){const N=wo(h,{step:e+1,steps:s});k=jO(h,e+1,s),j=N}n&&(k=c,j=y)}return{backProps:{"aria-label":g,children:a,"data-action":"back",onClick:this.handleClickBack,role:"button",title:g},closeProps:{"aria-label":x,children:l,"data-action":"close",onClick:this.handleClickClose,role:"button",title:x},primaryProps:{"aria-label":j,children:k,"data-action":"primary",onClick:this.handleClickPrimary,role:"button",title:j},skipProps:{"aria-label":S,children:m,"data-action":"skip",onClick:this.handleClickSkip,role:"button",title:S},tooltipProps:{"aria-modal":!0,ref:r,role:"alertdialog"}}})}render(){const{continuous:t,index:e,isLastStep:n,setTooltipRef:r,size:s,step:i}=this.props,{beaconComponent:a,tooltipComponent:l,...c}=i;let d;if(l){const h={...this.getElementsProps(),continuous:t,index:e,isLastStep:n,size:s,step:c,setTooltipRef:r},m=l;d=b.createElement(m,{...h})}else d=b.createElement(Gxe,{...this.getElementsProps(),continuous:t,index:e,isLastStep:n,size:s,step:i});return d}},Yxe=class extends b.Component{constructor(){super(...arguments),xt(this,"scope",null),xt(this,"tooltip",null),xt(this,"handleClickHoverBeacon",t=>{const{step:e,store:n}=this.props;t.type==="mouseenter"&&e.event!=="hover"||n.update({lifecycle:Xt.TOOLTIP})}),xt(this,"setTooltipRef",t=>{this.tooltip=t}),xt(this,"setPopper",(t,e)=>{var n;const{action:r,lifecycle:s,step:i,store:a}=this.props;e==="wrapper"?a.setPopper("beacon",t):a.setPopper("tooltip",t),a.getPopper("beacon")&&(a.getPopper("tooltip")||i.placement==="center")&&s===Xt.INIT&&a.update({action:r,lifecycle:Xt.READY}),(n=i.floaterProps)!=null&&n.getPopper&&i.floaterProps.getPopper(t,e)}),xt(this,"renderTooltip",t=>{const{continuous:e,helpers:n,index:r,size:s,step:i}=this.props;return b.createElement(Xxe,{continuous:e,helpers:n,index:r,isLastStep:r+1===s,setTooltipRef:this.setTooltipRef,size:s,step:i,...t})})}componentDidMount(){const{debug:t,index:e}=this.props;pd({title:`step:${e}`,data:[{key:"props",value:this.props}],debug:t})}componentDidUpdate(t){var e;const{action:n,callback:r,continuous:s,controlled:i,debug:a,helpers:l,index:c,lifecycle:d,shouldScroll:h,status:m,step:g,store:x}=this.props,{changed:y,changedFrom:w}=py(t,this.props),S=l.info(),k=s&&n!==Yn.CLOSE&&(c>0||n===Yn.PREV),j=y("action")||y("index")||y("lifecycle")||y("status"),N=w("lifecycle",[Xt.TOOLTIP,Xt.INIT],Xt.INIT),T=y("action",[Yn.NEXT,Yn.PREV,Yn.SKIP,Yn.CLOSE]),E=i&&c===t.index;if(T&&(N||E)&&r({...S,index:t.index,lifecycle:Xt.COMPLETE,step:t.step,type:Va.STEP_AFTER}),g.placement==="center"&&m===wn.RUNNING&&y("index")&&n!==Yn.START&&d===Xt.INIT&&x.update({lifecycle:Xt.READY}),j){const _=Pl(g.target),A=!!_;A&&Sxe(_)?(w("status",wn.READY,wn.RUNNING)||w("lifecycle",Xt.INIT,Xt.READY))&&r({...S,step:g,type:Va.STEP_BEFORE}):(console.warn(A?"Target not visible":"Target not mounted",g),r({...S,type:Va.TARGET_NOT_FOUND,step:g}),i||x.update({index:c+(n===Yn.PREV?-1:1)}))}w("lifecycle",Xt.INIT,Xt.READY)&&x.update({lifecycle:eM(g)||k?Xt.TOOLTIP:Xt.BEACON}),y("index")&&pd({title:`step:${d}`,data:[{key:"props",value:this.props}],debug:a}),y("lifecycle",Xt.BEACON)&&r({...S,step:g,type:Va.BEACON}),y("lifecycle",Xt.TOOLTIP)&&(r({...S,step:g,type:Va.TOOLTIP}),h&&this.tooltip&&(this.scope=new Hxe(this.tooltip,{selector:"[data-action=primary]"}),this.scope.setFocus())),w("lifecycle",[Xt.TOOLTIP,Xt.INIT],Xt.INIT)&&((e=this.scope)==null||e.removeScope(),x.cleanupPoppers())}componentWillUnmount(){var t;(t=this.scope)==null||t.removeScope()}get open(){const{lifecycle:t,step:e}=this.props;return eM(e)||t===Xt.TOOLTIP}render(){const{continuous:t,debug:e,index:n,nonce:r,shouldScroll:s,size:i,step:a}=this.props,l=Pl(a.target);return!xQ(a)||!pt.domElement(l)?null:b.createElement("div",{key:`JoyrideStep-${n}`,className:"react-joyride__step"},b.createElement(tN,{...a.floaterProps,component:this.renderTooltip,debug:e,getPopper:this.setPopper,id:`react-joyride-step-${n}`,open:this.open,placement:a.placement,target:a.target},b.createElement(Qxe,{beaconComponent:a.beaconComponent,continuous:t,index:n,isLastStep:n+1===i,locale:a.locale,nonce:r,onClickOrHover:this.handleClickHoverBeacon,shouldFocus:s,size:i,step:a,styles:a.styles})))}},yQ=class extends b.Component{constructor(t){super(t),xt(this,"helpers"),xt(this,"store"),xt(this,"callback",a=>{const{callback:l}=this.props;pt.function(l)&&l(a)}),xt(this,"handleKeyboard",a=>{const{index:l,lifecycle:c}=this.state,{steps:d}=this.props,h=d[l];c===Xt.TOOLTIP&&a.code==="Escape"&&h&&!h.disableCloseOnEsc&&this.store.close("keyboard")}),xt(this,"handleClickOverlay",()=>{const{index:a}=this.state,{steps:l}=this.props;lh(this.props,l[a]).disableOverlayClose||this.helpers.close("overlay")}),xt(this,"syncState",a=>{this.setState(a)});const{debug:e,getHelpers:n,run:r=!0,stepIndex:s}=t;this.store=Lxe({...t,controlled:r&&pt.number(s)}),this.helpers=this.store.getHelpers();const{addListener:i}=this.store;pd({title:"init",data:[{key:"props",value:this.props},{key:"state",value:this.state}],debug:e}),i(this.syncState),n&&n(this.helpers),this.state=this.store.getState()}componentDidMount(){if(!Fc())return;const{debug:t,disableCloseOnEsc:e,run:n,steps:r}=this.props,{start:s}=this.store;rM(r,t)&&n&&s(),e||document.body.addEventListener("keydown",this.handleKeyboard,{passive:!0})}componentDidUpdate(t,e){if(!Fc())return;const{action:n,controlled:r,index:s,status:i}=this.state,{debug:a,run:l,stepIndex:c,steps:d}=this.props,{stepIndex:h,steps:m}=t,{reset:g,setSteps:x,start:y,stop:w,update:S}=this.store,{changed:k}=py(t,this.props),{changed:j,changedFrom:N}=py(e,this.state),T=lh(this.props,d[s]),E=!ti(m,d),_=pt.number(c)&&k("stepIndex"),A=Pl(T.target);if(E&&(rM(d,a)?x(d):console.warn("Steps are not valid",d)),k("run")&&(l?y(c):w()),_){let B=pt.number(h)&&h=0?w:0,r===wn.RUNNING&&jxe(w,{element:y,duration:a}).then(()=>{setTimeout(()=>{var j;(j=this.store.getPopper("tooltip"))==null||j.instance.update()},10)})}}render(){if(!Fc())return null;const{index:t,lifecycle:e,status:n}=this.state,{continuous:r=!1,debug:s=!1,nonce:i,scrollToFirstStep:a=!1,steps:l}=this.props,c=n===wn.RUNNING,d={};if(c&&l[t]){const h=lh(this.props,l[t]);d.step=b.createElement(Yxe,{...this.state,callback:this.callback,continuous:r,debug:s,helpers:this.helpers,nonce:i,shouldScroll:!h.disableScrolling&&(t!==0||a),step:h,store:this.store}),d.overlay=b.createElement($xe,{id:"react-joyride-portal"},b.createElement(qxe,{...h,continuous:r,debug:s,lifecycle:e,onClickOverlay:this.handleClickOverlay}))}return b.createElement("div",{className:"react-joyride"},d.step,d.overlay)}};xt(yQ,"defaultProps",Rxe);var Kxe=yQ;function nN(){const t=b.useContext(IH);if(!t)throw new Error("useTour must be used within a TourProvider");return t}const Zxe={options:{zIndex:1e4,primaryColor:"hsl(var(--primary))",textColor:"hsl(var(--foreground))",backgroundColor:"hsl(var(--background))",arrowColor:"hsl(var(--background))",overlayColor:"rgba(0, 0, 0, 0.5)"},tooltip:{borderRadius:"var(--radius)",padding:"1rem"},tooltipContainer:{textAlign:"left"},tooltipTitle:{fontSize:"1rem",fontWeight:600,marginBottom:"0.5rem"},tooltipContent:{fontSize:"0.875rem",padding:"0.5rem 0"},buttonNext:{backgroundColor:"hsl(var(--primary))",color:"hsl(var(--primary-foreground))",borderRadius:"calc(var(--radius) - 2px)",fontSize:"0.875rem",padding:"0.5rem 1rem"},buttonBack:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem",marginRight:"0.5rem"},buttonSkip:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem"},buttonClose:{color:"hsl(var(--muted-foreground))"},spotlight:{borderRadius:"var(--radius)"}},Jxe={back:"上一步",close:"关闭",last:"完成",next:"下一步",nextLabelWithProgress:"下一步 ({step}/{steps})",open:"打开对话框",skip:"跳过"};function e1e(){const{state:t,getCurrentSteps:e,handleJoyrideCallback:n}=nN(),r=e(),[s,i]=b.useState(!1),a=b.useRef(t.stepIndex),l=b.useRef(null);b.useEffect(()=>{a.current!==t.stepIndex&&(i(!1),a.current=t.stepIndex)},[t.stepIndex]),b.useEffect(()=>{if(!t.isRunning||r.length===0){i(!1);return}const h=r[t.stepIndex];if(!h){i(!1);return}const m=h.target;if(m==="body"){i(!0);return}i(!1);const g=setTimeout(()=>{const x=()=>{const k=document.querySelector(m);if(k){const j=k.getBoundingClientRect();if(j.width>0&&j.height>0)return!0}return!1};if(x()){setTimeout(()=>i(!0),100);return}const y=setInterval(()=>{x()&&(clearInterval(y),setTimeout(()=>i(!0),100))},100),w=setTimeout(()=>{clearInterval(y),i(!0)},5e3),S=()=>{clearInterval(y),clearTimeout(w)};l.current=S},150);return()=>{clearTimeout(g),l.current&&(l.current(),l.current=null)}},[t.isRunning,t.stepIndex,r]);const c=b.useRef(null);if(b.useEffect(()=>{let h=document.getElementById("tour-portal-container");return h||(h=document.createElement("div"),h.id="tour-portal-container",h.style.cssText="position: fixed; top: 0; left: 0; z-index: 99999; pointer-events: none;",document.body.appendChild(h)),c.current=h,()=>{}},[]),!t.isRunning||r.length===0||!s)return null;const d=o.jsx(Kxe,{steps:r,stepIndex:t.stepIndex,run:t.isRunning,continuous:!0,showSkipButton:!0,showProgress:!0,disableOverlayClose:!0,disableScrolling:!1,disableScrollParentFix:!1,callback:n,styles:Zxe,locale:Jxe,scrollOffset:80,scrollToFirstStep:!0,floaterProps:{styles:{floater:{zIndex:99999}},disableAnimation:!0}},`tour-step-${t.stepIndex}`);return c.current?ya.createPortal(d,c.current):d}const Rl="model-assignment-tour",bQ=[{target:"body",content:"本引导旨在帮助你配置模型提供商和对应的模型,并为麦麦的各个组件分配合适的模型。",placement:"center",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="sidebar-model-provider"]',content:'第一步,你需要配置模型提供商。模型提供商决定了你要使用谁家的模型,无论是单一厂商(如 DeepSeek),还是模型平台(如 Siliconflow),都可以在这里进行配置。点击"下一步"进入配置页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-provider-button"]',content:'点击"添加提供商"按钮,开始配置你的模型提供商。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="provider-dialog"]',content:"在这里,你可以选择你想要配置的模型提供商,填写相关信息后保存即可。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-name-input"]',content:"这里的名称是你为这个模型提供商起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-apikey-input"]',content:"这里需要填写你从模型提供商那里获取的 API 密钥,用于验证和调用模型服务。对于不同的提供商,获取 API 密钥的方式可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-url-input"]',content:"这里需要填写模型提供商的 API 访问地址,确保填写正确以便系统能够连接到模型服务。对于不同的提供商,API 地址可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-template-select"]',content:"当然,如果你不知道如何填写这些信息,很多模型提供商在这里都提供了预设的模板供你选择,选择对应的模板后,相关信息会自动填充。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-save-button"]',content:"填写完所有信息后,点击保存按钮,模型提供商就配置完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-cancel-button"]',content:"因为这次咱们什么都没有填写,所以点击取消按钮退出吧。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="sidebar-model-management"]',content:'配置好模型提供商后,接下来我们需要为麦麦添加模型并分配功能。点击"下一步"进入模型管理页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-model-button"]',content:'在为麦麦的组件分配模型之前,首先需要添加你想要分配的模型,点击"添加模型"按钮开始添加。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="model-dialog"]',content:"在这里,你可以选择你之前配置好的模型提供商,然后选择对应的模型来添加。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-name-input"]',content:"这里的模型名称是你为这个模型起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-provider-select"]',content:"在这里选择你之前配置好的模型提供商,这样系统才能知道你要添加哪个提供商的模型。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-identifier-input"]',content:"这里需要填写你想要添加的模型的标识符,不同的模型提供商可能有不同的标识符格式,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-save-button"]',content:"填写完所有信息后,点击保存按钮,模型就添加完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-cancel-button"]',content:"当然,因为这次咱们什么都没有填写,所以直接点击取消按钮退出吧,等你准备好了再来添加模型。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="tasks-tab-trigger"]',content:'最后一步,添加好模型后,切换到"为模型分配功能"标签页,为麦麦的各个组件分配合适的模型。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="task-model-select"]',content:"在这里,你可以为每个组件选择一个或多个合适的模型,选择完成后配置会自动保存。恭喜你完成了模型配置的学习!",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1}],wQ={0:"/config/model",1:"/config/model",2:"/config/modelProvider",3:"/config/modelProvider",4:"/config/modelProvider",5:"/config/modelProvider",6:"/config/modelProvider",7:"/config/modelProvider",8:"/config/modelProvider",9:"/config/modelProvider",10:"/config/modelProvider",11:"/config/model",12:"/config/model",13:"/config/model",14:"/config/model",15:"/config/model",16:"/config/model",17:"/config/model",18:"/config/model",19:"/config/model"},h0=[{id:"siliconflow",name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",client_type:"openai",display_name:"硅基流动 (SiliconFlow)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"deepseek",name:"DeepSeek",base_url:"https://api.deepseek.com",client_type:"openai",display_name:"DeepSeek",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"rinkoai",name:"RinkoAI",base_url:"https://rinkoai.com/v1",client_type:"openai",display_name:"RinkoAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"zhipu",name:"ZhipuAI",base_url:"https://open.bigmodel.cn/api/paas/v4",client_type:"openai",display_name:"智谱 AI (ZhipuAI / GLM)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"moonshot",name:"Moonshot",base_url:"https://api.moonshot.cn/v1",client_type:"openai",display_name:"月之暗面 (Moonshot / Kimi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"doubao",name:"Doubao",base_url:"https://ark.cn-beijing.volces.com/api/v3",client_type:"openai",display_name:"字节豆包 (Doubao)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"alibaba",name:"Alibaba",base_url:"https://dashscope.aliyuncs.com/compatible-mode/v1",client_type:"openai",display_name:"阿里云百炼 (Alibaba Qwen)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"baichuan",name:"Baichuan",base_url:"https://api.baichuan-ai.com/v1",client_type:"openai",display_name:"百川智能 (Baichuan)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"minimax",name:"MiniMax",base_url:"https://api.minimax.chat/v1",client_type:"openai",display_name:"MiniMax (海螺 AI)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"stepfun",name:"StepFun",base_url:"https://api.stepfun.com/v1",client_type:"openai",display_name:"阶跃星辰 (StepFun)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"lingyi",name:"Lingyi",base_url:"https://api.lingyiwanwu.com/v1",client_type:"openai",display_name:"零一万物 (Lingyi / Yi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"openai",name:"OpenAI",base_url:"https://api.openai.com/v1",client_type:"openai",display_name:"OpenAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"xai",name:"xAI",base_url:"https://api.x.ai/v1",client_type:"openai",display_name:"xAI (Grok)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"anthropic",name:"Anthropic",base_url:"https://api.anthropic.com/v1",client_type:"openai",display_name:"Anthropic (Claude)"},{id:"gemini",name:"Gemini",base_url:"https://generativelanguage.googleapis.com/v1beta",client_type:"gemini",display_name:"Google Gemini",modelFetcher:{endpoint:"/models",parser:"gemini"}},{id:"cohere",name:"Cohere",base_url:"https://api.cohere.ai/v1",client_type:"openai",display_name:"Cohere"},{id:"groq",name:"Groq",base_url:"https://api.groq.com/openai/v1",client_type:"openai",display_name:"Groq",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"together",name:"Together AI",base_url:"https://api.together.xyz/v1",client_type:"openai",display_name:"Together AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"fireworks",name:"Fireworks",base_url:"https://api.fireworks.ai/inference/v1",client_type:"openai",display_name:"Fireworks AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"mistral",name:"Mistral",base_url:"https://api.mistral.ai/v1",client_type:"openai",display_name:"Mistral AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"perplexity",name:"Perplexity",base_url:"https://api.perplexity.ai",client_type:"openai",display_name:"Perplexity AI"},{id:"custom",name:"",base_url:"",client_type:"openai",display_name:"自定义"}];function iM(t){return t?t.replace(/\/+$/,"").toLowerCase():""}function t1e(t){if(!t)return null;const e=iM(t);return h0.find(n=>n.id!=="custom"&&iM(n.base_url)===e)||null}function n1e(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[s,i]=b.useState(!1),[a,l]=b.useState(!1),[c,d]=b.useState(!1),[h,m]=b.useState(!1),[g,x]=b.useState(!1),[y,w]=b.useState(!1),[S,k]=b.useState(null),[j,N]=b.useState(null),[T,E]=b.useState("custom"),[_,A]=b.useState(!1),[D,q]=b.useState(!1),[B,H]=b.useState(null),[W,ee]=b.useState(!1),[I,V]=b.useState(""),[L,$]=b.useState(new Set),[K,Y]=b.useState(!1),[R,ie]=b.useState(1),[X,z]=b.useState(20),[U,te]=b.useState(""),[ne,G]=b.useState(new Set),[se,re]=b.useState(new Map),{toast:ae}=Lr(),_e=na(),{state:Be,goToStep:Ye,registerTour:Je}=nN(),Oe=b.useRef(null),Ve=b.useRef(!0);b.useEffect(()=>{Je(Rl,bQ)},[Je]),b.useEffect(()=>{if(Be.activeTourId===Rl&&Be.isRunning){const ve=wQ[Be.stepIndex];ve&&!window.location.pathname.endsWith(ve.replace("/config/",""))&&_e({to:ve})}},[Be.stepIndex,Be.activeTourId,Be.isRunning,_e]);const Ue=b.useRef(Be.stepIndex);b.useEffect(()=>{if(Be.activeTourId===Rl&&Be.isRunning){const ve=Ue.current,He=Be.stepIndex;ve>=3&&ve<=9&&He<3&&w(!1),Ue.current=He}},[Be.stepIndex,Be.activeTourId,Be.isRunning]),b.useEffect(()=>{if(Be.activeTourId!==Rl||!Be.isRunning)return;const ve=He=>{const ht=He.target,vn=Be.stepIndex;vn===2&&ht.closest('[data-tour="add-provider-button"]')?setTimeout(()=>Ye(3),300):vn===9&&ht.closest('[data-tour="provider-cancel-button"]')&&setTimeout(()=>Ye(10),300)};return document.addEventListener("click",ve,!0),()=>document.removeEventListener("click",ve,!0)},[Be,Ye]),b.useEffect(()=>{$e()},[]);const $e=async()=>{try{r(!0);const ve=await Dh();e(ve.api_providers||[]),d(!1),Ve.current=!1}catch(ve){console.error("加载配置失败:",ve)}finally{r(!1)}},jt=async()=>{try{m(!0),cb().catch(()=>{}),x(!0)}catch(ve){console.error("重启失败:",ve),x(!1),ae({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),m(!1)}},vt=async()=>{try{i(!0),Oe.current&&clearTimeout(Oe.current);const ve=await Dh();ve.api_providers=t,await Uv(ve),d(!1),ae({title:"保存成功",description:"正在重启麦麦..."}),await jt()}catch(ve){console.error("保存配置失败:",ve),ae({title:"保存失败",description:ve.message,variant:"destructive"}),i(!1)}},$n=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},qt=()=>{x(!1),m(!1),ae({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},un=b.useCallback(async ve=>{if(!Ve.current)try{l(!0),await bk("api_providers",ve),d(!1)}catch(He){console.error("自动保存失败:",He),d(!0)}finally{l(!1)}},[]);b.useEffect(()=>{if(!Ve.current)return d(!0),Oe.current&&clearTimeout(Oe.current),Oe.current=setTimeout(()=>{un(t)},2e3),()=>{Oe.current&&clearTimeout(Oe.current)}},[t,un]);const Mt=async()=>{try{i(!0),Oe.current&&clearTimeout(Oe.current);const ve=await Dh();ve.api_providers=t,await Uv(ve),d(!1),ae({title:"保存成功",description:"模型提供商配置已保存"})}catch(ve){console.error("保存配置失败:",ve),ae({title:"保存失败",description:ve.message,variant:"destructive"})}finally{i(!1)}},ct=(ve,He)=>{if(ve){const ht=h0.find(vn=>vn.base_url===ve.base_url&&vn.client_type===ve.client_type);E(ht?.id||"custom"),k(ve)}else E("custom"),k({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10});N(He),ee(!1),w(!0)},Ne=ve=>{E(ve),A(!1);const He=h0.find(ht=>ht.id===ve);He&&He.id!=="custom"?k(ht=>({...ht,name:He.name,base_url:He.base_url,client_type:He.client_type})):He?.id==="custom"&&k(ht=>({...ht,name:"",base_url:"",client_type:"openai"}))},ze=b.useMemo(()=>T!=="custom",[T]),rt=async()=>{if(S?.api_key)try{await navigator.clipboard.writeText(S.api_key),ae({title:"复制成功",description:"API Key 已复制到剪贴板"})}catch{ae({title:"复制失败",description:"无法访问剪贴板",variant:"destructive"})}},bt=()=>{if(!S)return;const ve={...S,max_retry:S.max_retry??2,timeout:S.timeout??30,retry_interval:S.retry_interval??10};if(j!==null){const He=[...t];He[j]=ve,e(He)}else e([...t,ve]);w(!1),k(null),N(null)},zt=ve=>{if(!ve&&S){const He={...S,max_retry:S.max_retry??2,timeout:S.timeout??30,retry_interval:S.retry_interval??10};k(He)}w(ve)},Rt=ve=>{H(ve),q(!0)},Hn=()=>{if(B!==null){const ve=t.filter((He,ht)=>ht!==B);e(ve),ae({title:"删除成功",description:"提供商已从列表中移除"})}q(!1),H(null)},We=ve=>{const He=new Set(L);He.has(ve)?He.delete(ve):He.add(ve),$(He)},ot=()=>{if(L.size===xn.length)$(new Set);else{const ve=xn.map((He,ht)=>t.findIndex(vn=>vn===xn[ht]));$(new Set(ve))}},dn=()=>{if(L.size===0){ae({title:"提示",description:"请先选择要删除的提供商",variant:"default"});return}Y(!0)},Pt=()=>{const ve=t.filter((He,ht)=>!L.has(ht));e(ve),$(new Set),Y(!1),ae({title:"批量删除成功",description:`已删除 ${L.size} 个提供商`})},xn=t.filter(ve=>{if(!I)return!0;const He=I.toLowerCase();return ve.name.toLowerCase().includes(He)||ve.base_url.toLowerCase().includes(He)||ve.client_type.toLowerCase().includes(He)}),dt=Math.ceil(xn.length/X),rn=xn.slice((R-1)*X,R*X),wt=()=>{const ve=parseInt(U);ve>=1&&ve<=dt&&(ie(ve),te(""))},Wt=async ve=>{G(He=>new Set(He).add(ve));try{const He=await Cae(ve);re(ht=>new Map(ht).set(ve,He)),He.network_ok?He.api_key_valid===!0?ae({title:"连接正常",description:`${ve} 网络连接正常,API Key 有效 (${He.latency_ms}ms)`}):He.api_key_valid===!1?ae({title:"连接正常但 Key 无效",description:`${ve} 网络连接正常,但 API Key 无效或已过期`,variant:"destructive"}):ae({title:"网络连接正常",description:`${ve} 可以访问 (${He.latency_ms}ms)`}):ae({title:"连接失败",description:He.error||"无法连接到提供商",variant:"destructive"})}catch(He){ae({title:"测试失败",description:He.message,variant:"destructive"})}finally{G(He=>{const ht=new Set(He);return ht.delete(ve),ht})}},Gt=async()=>{for(const ve of t)await Wt(ve.name)},lt=ve=>{const He=ne.has(ve),ht=se.get(ve);return He?o.jsxs(tn,{variant:"secondary",className:"gap-1",children:[o.jsx(Us,{className:"h-3 w-3 animate-spin"}),"测试中"]}):ht?ht.network_ok?ht.api_key_valid===!0?o.jsxs(tn,{className:"gap-1 bg-green-600 hover:bg-green-700",children:[o.jsx(Ya,{className:"h-3 w-3"}),"正常"]}):ht.api_key_valid===!1?o.jsxs(tn,{variant:"destructive",className:"gap-1",children:[o.jsx(Lo,{className:"h-3 w-3"}),"Key无效"]}):o.jsxs(tn,{className:"gap-1 bg-blue-600 hover:bg-blue-700",children:[o.jsx(Ya,{className:"h-3 w-3"}),"可访问"]}):o.jsxs(tn,{variant:"destructive",className:"gap-1",children:[o.jsx(OI,{className:"h-3 w-3"}),"离线"]}):null};return n?o.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:o.jsx("div",{className:"flex items-center justify-center h-64",children:o.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})}):o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"AI模型厂商配置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理 AI 模型厂商的 API 配置"})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[L.size>0&&o.jsxs(ue,{onClick:dn,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[o.jsx(Cn,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",L.size,")"]}),o.jsxs(ue,{onClick:Gt,size:"sm",variant:"outline",className:"w-full sm:w-auto",disabled:t.length===0||ne.size>0,children:[o.jsx(Zu,{className:"mr-2 h-4 w-4"}),ne.size>0?`测试中 (${ne.size})`:"测试全部"]}),o.jsxs(ue,{onClick:()=>ct(null,null),size:"sm",className:"w-full sm:w-auto","data-tour":"add-provider-button",children:[o.jsx(Is,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加提供商"]}),o.jsxs(ue,{onClick:Mt,disabled:s||a||!c||h,size:"sm",variant:"outline",className:"w-full sm:w-auto sm:min-w-[120px]",children:[o.jsx(zp,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),s?"保存中...":a?"自动保存中...":c?"保存配置":"已保存"]}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsxs(ue,{disabled:s||a||h,size:"sm",className:"w-full sm:w-auto sm:min-w-[120px]",children:[o.jsx(Dp,{className:"mr-2 h-4 w-4"}),h?"重启中...":c?"保存并重启":"重启麦麦"]})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认重启麦麦?"}),o.jsx(zn,{className:"space-y-3",asChild:!0,children:o.jsxs("div",{children:[o.jsx("p",{children:c?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),o.jsxs(ba,{className:"border-yellow-500/50 bg-yellow-500/10",children:[o.jsx(Xi,{className:"h-4 w-4 text-yellow-600"}),o.jsxs(wa,{className:"text-yellow-900 dark:text-yellow-100",children:[o.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",o.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",o.jsxs(Er,{children:[o.jsx(Of,{asChild:!0,children:o.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[o.jsx(Zy,{className:"h-3 w-3"}),"如何结束程序?"]})}),o.jsxs(wr,{className:"max-w-2xl",children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"如何结束使用重启功能后的麦麦程序"}),o.jsx(Xr,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),o.jsxs(Yi,{defaultValue:"windows",className:"w-full",children:[o.jsxs(ji,{className:"grid w-full grid-cols-3",children:[o.jsx(Bt,{value:"windows",children:"Windows"}),o.jsx(Bt,{value:"macos",children:"macOS"}),o.jsx(Bt,{value:"linux",children:"Linux"})]}),o.jsxs(ln,{value:"windows",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),o.jsxs("li",{children:["在“进程”或“详细信息”标签页中找到 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),o.jsx("li",{children:"右键点击并选择“结束任务”"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),o.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),o.jsxs(ln,{value:"macos",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"})," 打开 Spotlight,搜索“活动监视器”"]}),o.jsxs("li",{children:["在进程列表中找到 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),o.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]})]}),o.jsxs(ln,{value:"linux",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),o.jsx("p",{children:'pkill -9 -f "bot.py"'}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["在终端输入 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),o.jsx(fs,{children:o.jsx(e6,{asChild:!0,children:o.jsx(ue,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:c?vt:jt,children:c?"保存并重启":"确认重启"})]})]})]})]})]}),o.jsxs(ba,{children:[o.jsx(Xi,{className:"h-4 w-4"}),o.jsxs(wa,{children:["配置更新后需要",o.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),o.jsxs(pn,{className:"h-[calc(100vh-260px)]",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2 mb-4",children:[o.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[o.jsx(ii,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(Pe,{placeholder:"搜索提供商名称、URL 或类型...",value:I,onChange:ve=>V(ve.target.value),className:"pl-9"})]}),I&&o.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",xn.length," 个结果"]})]}),o.jsx("div",{className:"md:hidden space-y-3",children:xn.length===0?o.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:I?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'}):rn.map((ve,He)=>{const ht=t.findIndex(vn=>vn===ve);return o.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-start justify-between gap-2",children:[o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[o.jsx("h3",{className:"font-semibold text-base truncate",children:ve.name}),lt(ve.name)]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1 break-all",children:ve.base_url})]}),o.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>Wt(ve.name),disabled:ne.has(ve.name),title:"测试连接",children:ne.has(ve.name)?o.jsx(Us,{className:"h-4 w-4 animate-spin"}):o.jsx(Zu,{className:"h-4 w-4"})}),o.jsx(ue,{variant:"default",size:"sm",onClick:()=>ct(ve,ht),children:o.jsx(Ju,{className:"h-4 w-4",strokeWidth:2,fill:"none"})}),o.jsx(ue,{size:"sm",onClick:()=>Rt(ht),className:"bg-red-600 hover:bg-red-700 text-white",children:o.jsx(Cn,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"客户端类型"}),o.jsx("p",{className:"font-medium",children:ve.client_type})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"最大重试"}),o.jsx("p",{className:"font-medium",children:ve.max_retry})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"超时(秒)"}),o.jsx("p",{className:"font-medium",children:ve.timeout})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"重试间隔(秒)"}),o.jsx("p",{className:"font-medium",children:ve.retry_interval})]})]})]},He)})}),o.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:o.jsx("div",{className:"overflow-x-auto",children:o.jsxs(Af,{children:[o.jsx(Mf,{children:o.jsxs(zs,{children:[o.jsx(mn,{className:"w-12",children:o.jsx(Ci,{checked:L.size===xn.length&&xn.length>0,onCheckedChange:ot})}),o.jsx(mn,{children:"状态"}),o.jsx(mn,{children:"名称"}),o.jsx(mn,{children:"基础URL"}),o.jsx(mn,{children:"客户端类型"}),o.jsx(mn,{className:"text-right",children:"最大重试"}),o.jsx(mn,{className:"text-right",children:"超时(秒)"}),o.jsx(mn,{className:"text-right",children:"重试间隔(秒)"}),o.jsx(mn,{className:"text-right",children:"操作"})]})}),o.jsx(Rf,{children:rn.length===0?o.jsx(zs,{children:o.jsx(Yt,{colSpan:9,className:"text-center text-muted-foreground py-8",children:I?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'})}):rn.map((ve,He)=>{const ht=t.findIndex(vn=>vn===ve);return o.jsxs(zs,{children:[o.jsx(Yt,{children:o.jsx(Ci,{checked:L.has(ht),onCheckedChange:()=>We(ht)})}),o.jsx(Yt,{children:lt(ve.name)||o.jsx(tn,{variant:"outline",className:"text-muted-foreground",children:"未测试"})}),o.jsx(Yt,{className:"font-medium",children:ve.name}),o.jsx(Yt,{className:"max-w-xs truncate",title:ve.base_url,children:ve.base_url}),o.jsx(Yt,{children:ve.client_type}),o.jsx(Yt,{className:"text-right",children:ve.max_retry}),o.jsx(Yt,{className:"text-right",children:ve.timeout}),o.jsx(Yt,{className:"text-right",children:ve.retry_interval}),o.jsx(Yt,{className:"text-right",children:o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>Wt(ve.name),disabled:ne.has(ve.name),title:"测试连接",children:ne.has(ve.name)?o.jsx(Us,{className:"h-4 w-4 animate-spin"}):o.jsx(Zu,{className:"h-4 w-4"})}),o.jsxs(ue,{variant:"default",size:"sm",onClick:()=>ct(ve,ht),children:[o.jsx(Ju,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),o.jsxs(ue,{size:"sm",onClick:()=>Rt(ht),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Cn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},He)})})]})})}),xn.length>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{htmlFor:"page-size-provider",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:X.toString(),onValueChange:ve=>{z(parseInt(ve)),ie(1),$(new Set)},children:[o.jsx($t,{id:"page-size-provider",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"10",children:"10"}),o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"50",children:"50"}),o.jsx(De,{value:"100",children:"100"})]})]}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(R-1)*X+1," 到"," ",Math.min(R*X,xn.length)," 条,共 ",xn.length," 条"]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>ie(1),disabled:R===1,className:"hidden sm:flex",children:o.jsx(Ip,{className:"h-4 w-4"})}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>ie(ve=>Math.max(1,ve-1)),disabled:R===1,children:[o.jsx(wd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Pe,{type:"number",value:U,onChange:ve=>te(ve.target.value),onKeyDown:ve=>ve.key==="Enter"&&wt(),placeholder:R.toString(),className:"w-16 h-8 text-center",min:1,max:dt}),o.jsx(ue,{variant:"outline",size:"sm",onClick:wt,disabled:!U,className:"h-8",children:"跳转"})]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>ie(ve=>ve+1),disabled:R>=dt,children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(Zl,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>ie(dt),disabled:R>=dt,className:"hidden sm:flex",children:o.jsx(Lp,{className:"h-4 w-4"})})]})]})]}),o.jsx(Er,{open:y,onOpenChange:zt,children:o.jsxs(wr,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"provider-dialog",preventOutsideClose:Be.isRunning,children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:j!==null?"编辑提供商":"添加提供商"}),o.jsx(Xr,{children:"配置 API 提供商的连接信息和参数"})]}),o.jsxs("form",{onSubmit:ve=>{ve.preventDefault(),bt()},autoComplete:"off",children:[o.jsxs("div",{className:"grid gap-4 py-4",children:[o.jsxs("div",{className:"grid gap-2","data-tour":"provider-template-select",children:[o.jsx(he,{htmlFor:"template",children:"提供商模板"}),o.jsxs(Bo,{open:_,onOpenChange:A,children:[o.jsx(Fo,{asChild:!0,children:o.jsxs(ue,{variant:"outline",role:"combobox","aria-expanded":_,className:"w-full justify-between",children:[T?h0.find(ve=>ve.id===T)?.display_name:"选择提供商模板...",o.jsx(Lj,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),o.jsx(Ka,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:o.jsxs(Tb,{children:[o.jsx(Eb,{placeholder:"搜索提供商模板..."}),o.jsx(pn,{className:"h-[300px]",children:o.jsxs(_b,{className:"max-h-none overflow-visible",children:[o.jsx(Ab,{children:"未找到匹配的模板"}),o.jsx(up,{children:h0.map(ve=>o.jsxs(dp,{value:ve.display_name,onSelect:()=>Ne(ve.id),children:[o.jsx(zo,{className:`mr-2 h-4 w-4 ${T===ve.id?"opacity-100":"opacity-0"}`}),ve.display_name]},ve.id))})]})})]})})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"选择预设模板可自动填充 URL 和客户端类型,支持搜索"})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"provider-name-input",children:[o.jsx(he,{htmlFor:"name",children:"名称 *"}),o.jsx(Pe,{id:"name",value:S?.name||"",onChange:ve=>k(He=>He?{...He,name:ve.target.value}:null),placeholder:"例如: DeepSeek, SiliconFlow"})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"provider-url-input",children:[o.jsx(he,{htmlFor:"base_url",children:"基础 URL *"}),o.jsx(Pe,{id:"base_url",value:S?.base_url||"",onChange:ve=>k(He=>He?{...He,base_url:ve.target.value}:null),placeholder:"https://api.example.com/v1",disabled:ze,className:ze?"bg-muted cursor-not-allowed":""}),ze&&o.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时 URL 不可编辑,切换到"自定义"以手动配置'})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"provider-apikey-input",children:[o.jsx(he,{htmlFor:"api_key",children:"API Key *"}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Pe,{id:"api_key",type:W?"text":"password",value:S?.api_key||"",onChange:ve=>k(He=>He?{...He,api_key:ve.target.value}:null),placeholder:"sk-...",className:"flex-1"}),o.jsx(ue,{type:"button",variant:"outline",size:"icon",onClick:()=>ee(!W),title:W?"隐藏密钥":"显示密钥",children:W?o.jsx(I0,{className:"h-4 w-4"}):o.jsx(Ji,{className:"h-4 w-4"})}),o.jsx(ue,{type:"button",variant:"outline",size:"icon",onClick:rt,title:"复制密钥",children:o.jsx(Iv,{className:"h-4 w-4"})})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"client_type",children:"客户端类型"}),o.jsxs(Vt,{value:S?.client_type||"openai",onValueChange:ve=>k(He=>He?{...He,client_type:ve}:null),disabled:ze,children:[o.jsx($t,{id:"client_type",className:ze?"bg-muted cursor-not-allowed":"",children:o.jsx(Ut,{placeholder:"选择客户端类型"})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"openai",children:"OpenAI"}),o.jsx(De,{value:"gemini",children:"Gemini"})]})]}),ze&&o.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时客户端类型不可编辑,切换到"自定义"以手动配置'})]}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"max_retry",children:"最大重试"}),o.jsx(Pe,{id:"max_retry",type:"number",min:"0",value:S?.max_retry??"",onChange:ve=>{const He=ve.target.value===""?null:parseInt(ve.target.value);k(ht=>ht?{...ht,max_retry:He}:null)},placeholder:"默认: 2"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"timeout",children:"超时(秒)"}),o.jsx(Pe,{id:"timeout",type:"number",min:"1",value:S?.timeout??"",onChange:ve=>{const He=ve.target.value===""?null:parseInt(ve.target.value);k(ht=>ht?{...ht,timeout:He}:null)},placeholder:"默认: 30"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"retry_interval",children:"重试间隔(秒)"}),o.jsx(Pe,{id:"retry_interval",type:"number",min:"1",value:S?.retry_interval??"",onChange:ve=>{const He=ve.target.value===""?null:parseInt(ve.target.value);k(ht=>ht?{...ht,retry_interval:He}:null)},placeholder:"默认: 10"})]})]})]}),o.jsxs(fs,{children:[o.jsx(ue,{type:"button",variant:"outline",onClick:()=>w(!1),"data-tour":"provider-cancel-button",children:"取消"}),o.jsx(ue,{type:"submit","data-tour":"provider-save-button",children:"保存"})]})]})]})}),o.jsx(Fn,{open:D,onOpenChange:q,children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:['确定要删除提供商 "',B!==null?t[B]?.name:"",'" 吗? 此操作无法撤销。']})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:Hn,children:"删除"})]})]})}),o.jsx(Fn,{open:K,onOpenChange:Y,children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认批量删除"}),o.jsxs(zn,{children:["确定要删除选中的 ",L.size," 个提供商吗? 此操作无法撤销。"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:Pt,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),g&&o.jsx(r6,{onRestartComplete:$n,onRestartFailed:qt})]})}function r1e(){for(var t=arguments.length,e=new Array(t),n=0;nr=>{e.forEach(s=>s(r))},e)}const Pb=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function If(t){const e=Object.prototype.toString.call(t);return e==="[object Window]"||e==="[object global]"}function rN(t){return"nodeType"in t}function _i(t){var e,n;return t?If(t)?t:rN(t)&&(e=(n=t.ownerDocument)==null?void 0:n.defaultView)!=null?e:window:window}function sN(t){const{Document:e}=_i(t);return t instanceof e}function hg(t){return If(t)?!1:t instanceof _i(t).HTMLElement}function SQ(t){return t instanceof _i(t).SVGElement}function Lf(t){return t?If(t)?t.document:rN(t)?sN(t)?t:hg(t)||SQ(t)?t.ownerDocument:document:document:document}const $o=Pb?b.useLayoutEffect:b.useEffect;function iN(t){const e=b.useRef(t);return $o(()=>{e.current=t}),b.useCallback(function(){for(var n=arguments.length,r=new Array(n),s=0;s{t.current=setInterval(r,s)},[]),n=b.useCallback(()=>{t.current!==null&&(clearInterval(t.current),t.current=null)},[]);return[e,n]}function mp(t,e){e===void 0&&(e=[t]);const n=b.useRef(t);return $o(()=>{n.current!==t&&(n.current=t)},e),n}function fg(t,e){const n=b.useRef();return b.useMemo(()=>{const r=t(n.current);return n.current=r,r},[...e])}function yy(t){const e=iN(t),n=b.useRef(null),r=b.useCallback(s=>{s!==n.current&&e?.(s,n.current),n.current=s},[]);return[n,r]}function NO(t){const e=b.useRef();return b.useEffect(()=>{e.current=t},[t]),e.current}let CS={};function mg(t,e){return b.useMemo(()=>{if(e)return e;const n=CS[t]==null?0:CS[t]+1;return CS[t]=n,t+"-"+n},[t,e])}function kQ(t){return function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),s=1;s{const l=Object.entries(a);for(const[c,d]of l){const h=i[c];h!=null&&(i[c]=h+t*d)}return i},{...e})}}const qh=kQ(1),pp=kQ(-1);function i1e(t){return"clientX"in t&&"clientY"in t}function aN(t){if(!t)return!1;const{KeyboardEvent:e}=_i(t.target);return e&&t instanceof e}function a1e(t){if(!t)return!1;const{TouchEvent:e}=_i(t.target);return e&&t instanceof e}function CO(t){if(a1e(t)){if(t.touches&&t.touches.length){const{clientX:e,clientY:n}=t.touches[0];return{x:e,y:n}}else if(t.changedTouches&&t.changedTouches.length){const{clientX:e,clientY:n}=t.changedTouches[0];return{x:e,y:n}}}return i1e(t)?{x:t.clientX,y:t.clientY}:null}const gp=Object.freeze({Translate:{toString(t){if(!t)return;const{x:e,y:n}=t;return"translate3d("+(e?Math.round(e):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(t){if(!t)return;const{scaleX:e,scaleY:n}=t;return"scaleX("+e+") scaleY("+n+")"}},Transform:{toString(t){if(t)return[gp.Translate.toString(t),gp.Scale.toString(t)].join(" ")}},Transition:{toString(t){let{property:e,duration:n,easing:r}=t;return e+" "+n+"ms "+r}}}),aM="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function o1e(t){return t.matches(aM)?t:t.querySelector(aM)}const l1e={display:"none"};function c1e(t){let{id:e,value:n}=t;return oe.createElement("div",{id:e,style:l1e},n)}function u1e(t){let{id:e,announcement:n,ariaLiveType:r="assertive"}=t;const s={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return oe.createElement("div",{id:e,style:s,role:"status","aria-live":r,"aria-atomic":!0},n)}function d1e(){const[t,e]=b.useState("");return{announce:b.useCallback(r=>{r!=null&&e(r)},[]),announcement:t}}const OQ=b.createContext(null);function h1e(t){const e=b.useContext(OQ);b.useEffect(()=>{if(!e)throw new Error("useDndMonitor must be used within a children of ");return e(t)},[t,e])}function f1e(){const[t]=b.useState(()=>new Set),e=b.useCallback(r=>(t.add(r),()=>t.delete(r)),[t]);return[b.useCallback(r=>{let{type:s,event:i}=r;t.forEach(a=>{var l;return(l=a[s])==null?void 0:l.call(a,i)})},[t]),e]}const m1e={draggable:` To pick up a draggable item, press the space bar. While dragging, use the arrow keys to move the item. Press space again to drop the item in its new position, or press escape to cancel. - `},d1e={onDragStart(t){let{active:e}=t;return"Picked up draggable item "+e.id+"."},onDragOver(t){let{active:e,over:n}=t;return n?"Draggable item "+e.id+" was moved over droppable area "+n.id+".":"Draggable item "+e.id+" is no longer over a droppable area."},onDragEnd(t){let{active:e,over:n}=t;return n?"Draggable item "+e.id+" was dropped over droppable area "+n.id:"Draggable item "+e.id+" was dropped."},onDragCancel(t){let{active:e}=t;return"Dragging was cancelled. Draggable item "+e.id+" was dropped."}};function h1e(t){let{announcements:e=d1e,container:n,hiddenTextDescribedById:r,screenReaderInstructions:s=u1e}=t;const{announce:i,announcement:a}=o1e(),l=cg("DndLiveRegion"),[c,d]=b.useState(!1);if(b.useEffect(()=>{d(!0)},[]),l1e(b.useMemo(()=>({onDragStart(m){let{active:g}=m;i(e.onDragStart({active:g}))},onDragMove(m){let{active:g,over:x}=m;e.onDragMove&&i(e.onDragMove({active:g,over:x}))},onDragOver(m){let{active:g,over:x}=m;i(e.onDragOver({active:g,over:x}))},onDragEnd(m){let{active:g,over:x}=m;i(e.onDragEnd({active:g,over:x}))},onDragCancel(m){let{active:g,over:x}=m;i(e.onDragCancel({active:g,over:x}))}}),[i,e])),!c)return null;const h=ae.createElement(ae.Fragment,null,ae.createElement(i1e,{id:r,value:s.draggable}),ae.createElement(a1e,{id:l,announcement:a}));return n?pa.createPortal(h,n):h}var ds;(function(t){t.DragStart="dragStart",t.DragMove="dragMove",t.DragEnd="dragEnd",t.DragCancel="dragCancel",t.DragOver="dragOver",t.RegisterDroppable="registerDroppable",t.SetDroppableDisabled="setDroppableDisabled",t.UnregisterDroppable="unregisterDroppable"})(ds||(ds={}));function py(){}function tM(t,e){return b.useMemo(()=>({sensor:t,options:e??{}}),[t,e])}function f1e(){for(var t=arguments.length,e=new Array(t),n=0;n[...e].filter(r=>r!=null),[...e])}const Za=Object.freeze({x:0,y:0});function wQ(t,e){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function SQ(t,e){let{data:{value:n}}=t,{data:{value:r}}=e;return n-r}function m1e(t,e){let{data:{value:n}}=t,{data:{value:r}}=e;return r-n}function nM(t){let{left:e,top:n,height:r,width:s}=t;return[{x:e,y:n},{x:e+s,y:n},{x:e,y:n+r},{x:e+s,y:n+r}]}function kQ(t,e){if(!t||t.length===0)return null;const[n]=t;return n[e]}function rM(t,e,n){return e===void 0&&(e=t.left),n===void 0&&(n=t.top),{x:e+t.width*.5,y:n+t.height*.5}}const p1e=t=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=rM(e,e.left,e.top),i=[];for(const a of r){const{id:l}=a,c=n.get(l);if(c){const d=wQ(rM(c),s);i.push({id:l,data:{droppableContainer:a,value:d}})}}return i.sort(SQ)},g1e=t=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=nM(e),i=[];for(const a of r){const{id:l}=a,c=n.get(l);if(c){const d=nM(c),h=s.reduce((g,x,y)=>g+wQ(d[y],x),0),m=Number((h/4).toFixed(4));i.push({id:l,data:{droppableContainer:a,value:m}})}}return i.sort(SQ)};function x1e(t,e){const n=Math.max(e.top,t.top),r=Math.max(e.left,t.left),s=Math.min(e.left+e.width,t.left+t.width),i=Math.min(e.top+e.height,t.top+t.height),a=s-r,l=i-n;if(r{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=[];for(const i of r){const{id:a}=i,l=n.get(a);if(l){const c=x1e(l,e);c>0&&s.push({id:a,data:{droppableContainer:i,value:c}})}}return s.sort(m1e)};function y1e(t,e,n){return{...t,scaleX:e&&n?e.width/n.width:1,scaleY:e&&n?e.height/n.height:1}}function OQ(t,e){return t&&e?{x:t.left-e.left,y:t.top-e.top}:Za}function b1e(t){return function(n){for(var r=arguments.length,s=new Array(r>1?r-1:0),i=1;i({...a,top:a.top+t*l.y,bottom:a.bottom+t*l.y,left:a.left+t*l.x,right:a.right+t*l.x}),{...n})}}const w1e=b1e(1);function S1e(t){if(t.startsWith("matrix3d(")){const e=t.slice(9,-1).split(/, /);return{x:+e[12],y:+e[13],scaleX:+e[0],scaleY:+e[5]}}else if(t.startsWith("matrix(")){const e=t.slice(7,-1).split(/, /);return{x:+e[4],y:+e[5],scaleX:+e[0],scaleY:+e[3]}}return null}function k1e(t,e,n){const r=S1e(e);if(!r)return t;const{scaleX:s,scaleY:i,x:a,y:l}=r,c=t.left-a-(1-s)*parseFloat(n),d=t.top-l-(1-i)*parseFloat(n.slice(n.indexOf(" ")+1)),h=s?t.width/s:t.width,m=i?t.height/i:t.height;return{width:h,height:m,top:d,right:c+h,bottom:d+m,left:c}}const O1e={ignoreTransform:!1};function Lf(t,e){e===void 0&&(e=O1e);let n=t.getBoundingClientRect();if(e.ignoreTransform){const{transform:d,transformOrigin:h}=Ti(t).getComputedStyle(t);d&&(n=k1e(n,d,h))}const{top:r,left:s,width:i,height:a,bottom:l,right:c}=n;return{top:r,left:s,width:i,height:a,bottom:l,right:c}}function sM(t){return Lf(t,{ignoreTransform:!0})}function j1e(t){const e=t.innerWidth,n=t.innerHeight;return{top:0,left:0,right:e,bottom:n,width:e,height:n}}function N1e(t,e){return e===void 0&&(e=Ti(t).getComputedStyle(t)),e.position==="fixed"}function C1e(t,e){e===void 0&&(e=Ti(t).getComputedStyle(t));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(s=>{const i=e[s];return typeof i=="string"?n.test(i):!1})}function Mb(t,e){const n=[];function r(s){if(e!=null&&n.length>=e||!s)return n;if(Z6(s)&&s.scrollingElement!=null&&!n.includes(s.scrollingElement))return n.push(s.scrollingElement),n;if(!og(s)||vQ(s)||n.includes(s))return n;const i=Ti(t).getComputedStyle(s);return s!==t&&C1e(s,i)&&n.push(s),N1e(s,i)?n:r(s.parentNode)}return t?r(t):n}function jQ(t){const[e]=Mb(t,1);return e??null}function OS(t){return!Ab||!t?null:zf(t)?t:K6(t)?Z6(t)||t===If(t).scrollingElement?window:og(t)?t:null:null}function NQ(t){return zf(t)?t.scrollX:t.scrollLeft}function CQ(t){return zf(t)?t.scrollY:t.scrollTop}function jO(t){return{x:NQ(t),y:CQ(t)}}var ys;(function(t){t[t.Forward=1]="Forward",t[t.Backward=-1]="Backward"})(ys||(ys={}));function TQ(t){return!Ab||!t?!1:t===document.scrollingElement}function EQ(t){const e={x:0,y:0},n=TQ(t)?{height:window.innerHeight,width:window.innerWidth}:{height:t.clientHeight,width:t.clientWidth},r={x:t.scrollWidth-n.width,y:t.scrollHeight-n.height},s=t.scrollTop<=e.y,i=t.scrollLeft<=e.x,a=t.scrollTop>=r.y,l=t.scrollLeft>=r.x;return{isTop:s,isLeft:i,isBottom:a,isRight:l,maxScroll:r,minScroll:e}}const T1e={x:.2,y:.2};function E1e(t,e,n,r,s){let{top:i,left:a,right:l,bottom:c}=n;r===void 0&&(r=10),s===void 0&&(s=T1e);const{isTop:d,isBottom:h,isLeft:m,isRight:g}=EQ(t),x={x:0,y:0},y={x:0,y:0},w={height:e.height*s.y,width:e.width*s.x};return!d&&i<=e.top+w.height?(x.y=ys.Backward,y.y=r*Math.abs((e.top+w.height-i)/w.height)):!h&&c>=e.bottom-w.height&&(x.y=ys.Forward,y.y=r*Math.abs((e.bottom-w.height-c)/w.height)),!g&&l>=e.right-w.width?(x.x=ys.Forward,y.x=r*Math.abs((e.right-w.width-l)/w.width)):!m&&a<=e.left+w.width&&(x.x=ys.Backward,y.x=r*Math.abs((e.left+w.width-a)/w.width)),{direction:x,speed:y}}function _1e(t){if(t===document.scrollingElement){const{innerWidth:i,innerHeight:a}=window;return{top:0,left:0,right:i,bottom:a,width:i,height:a}}const{top:e,left:n,right:r,bottom:s}=t.getBoundingClientRect();return{top:e,left:n,right:r,bottom:s,width:t.clientWidth,height:t.clientHeight}}function _Q(t){return t.reduce((e,n)=>Fh(e,jO(n)),Za)}function A1e(t){return t.reduce((e,n)=>e+NQ(n),0)}function M1e(t){return t.reduce((e,n)=>e+CQ(n),0)}function R1e(t,e){if(e===void 0&&(e=Lf),!t)return;const{top:n,left:r,bottom:s,right:i}=e(t);jQ(t)&&(s<=0||i<=0||n>=window.innerHeight||r>=window.innerWidth)&&t.scrollIntoView({block:"center",inline:"center"})}const D1e=[["x",["left","right"],A1e],["y",["top","bottom"],M1e]];class tN{constructor(e,n){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=Mb(n),s=_Q(r);this.rect={...e},this.width=e.width,this.height=e.height;for(const[i,a,l]of D1e)for(const c of a)Object.defineProperty(this,c,{get:()=>{const d=l(r),h=s[i]-d;return this.rect[c]+h},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class C0{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(n=>{var r;return(r=this.target)==null?void 0:r.removeEventListener(...n)})},this.target=e}add(e,n,r){var s;(s=this.target)==null||s.addEventListener(e,n,r),this.listeners.push([e,n,r])}}function P1e(t){const{EventTarget:e}=Ti(t);return t instanceof e?t:If(t)}function jS(t,e){const n=Math.abs(t.x),r=Math.abs(t.y);return typeof e=="number"?Math.sqrt(n**2+r**2)>e:"x"in e&&"y"in e?n>e.x&&r>e.y:"x"in e?n>e.x:"y"in e?r>e.y:!1}var da;(function(t){t.Click="click",t.DragStart="dragstart",t.Keydown="keydown",t.ContextMenu="contextmenu",t.Resize="resize",t.SelectionChange="selectionchange",t.VisibilityChange="visibilitychange"})(da||(da={}));function iM(t){t.preventDefault()}function z1e(t){t.stopPropagation()}var bn;(function(t){t.Space="Space",t.Down="ArrowDown",t.Right="ArrowRight",t.Left="ArrowLeft",t.Up="ArrowUp",t.Esc="Escape",t.Enter="Enter",t.Tab="Tab"})(bn||(bn={}));const AQ={start:[bn.Space,bn.Enter],cancel:[bn.Esc],end:[bn.Space,bn.Enter,bn.Tab]},I1e=(t,e)=>{let{currentCoordinates:n}=e;switch(t.code){case bn.Right:return{...n,x:n.x+25};case bn.Left:return{...n,x:n.x-25};case bn.Down:return{...n,y:n.y+25};case bn.Up:return{...n,y:n.y-25}}};class nN{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;const{event:{target:n}}=e;this.props=e,this.listeners=new C0(If(n)),this.windowListeners=new C0(Ti(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(da.Resize,this.handleCancel),this.windowListeners.add(da.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(da.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:e,onStart:n}=this.props,r=e.node.current;r&&R1e(r),n(Za)}handleKeyDown(e){if(eN(e)){const{active:n,context:r,options:s}=this.props,{keyboardCodes:i=AQ,coordinateGetter:a=I1e,scrollBehavior:l="smooth"}=s,{code:c}=e;if(i.end.includes(c)){this.handleEnd(e);return}if(i.cancel.includes(c)){this.handleCancel(e);return}const{collisionRect:d}=r.current,h=d?{x:d.left,y:d.top}:Za;this.referenceCoordinates||(this.referenceCoordinates=h);const m=a(e,{active:n,context:r.current,currentCoordinates:h});if(m){const g=dp(m,h),x={x:0,y:0},{scrollableAncestors:y}=r.current;for(const w of y){const S=e.code,{isTop:k,isRight:j,isLeft:N,isBottom:T,maxScroll:E,minScroll:_}=EQ(w),A=_1e(w),L={x:Math.min(S===bn.Right?A.right-A.width/2:A.right,Math.max(S===bn.Right?A.left:A.left+A.width/2,m.x)),y:Math.min(S===bn.Down?A.bottom-A.height/2:A.bottom,Math.max(S===bn.Down?A.top:A.top+A.height/2,m.y))},P=S===bn.Right&&!j||S===bn.Left&&!N,B=S===bn.Down&&!T||S===bn.Up&&!k;if(P&&L.x!==m.x){const $=w.scrollLeft+g.x,U=S===bn.Right&&$<=E.x||S===bn.Left&&$>=_.x;if(U&&!g.y){w.scrollTo({left:$,behavior:l});return}U?x.x=w.scrollLeft-$:x.x=S===bn.Right?w.scrollLeft-E.x:w.scrollLeft-_.x,x.x&&w.scrollBy({left:-x.x,behavior:l});break}else if(B&&L.y!==m.y){const $=w.scrollTop+g.y,U=S===bn.Down&&$<=E.y||S===bn.Up&&$>=_.y;if(U&&!g.x){w.scrollTo({top:$,behavior:l});return}U?x.y=w.scrollTop-$:x.y=S===bn.Down?w.scrollTop-E.y:w.scrollTop-_.y,x.y&&w.scrollBy({top:-x.y,behavior:l});break}}this.handleMove(e,Fh(dp(m,this.referenceCoordinates),x))}}}handleMove(e,n){const{onMove:r}=this.props;e.preventDefault(),r(n)}handleEnd(e){const{onEnd:n}=this.props;e.preventDefault(),this.detach(),n()}handleCancel(e){const{onCancel:n}=this.props;e.preventDefault(),this.detach(),n()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}nN.activators=[{eventName:"onKeyDown",handler:(t,e,n)=>{let{keyboardCodes:r=AQ,onActivation:s}=e,{active:i}=n;const{code:a}=t.nativeEvent;if(r.start.includes(a)){const l=i.activatorNode.current;return l&&t.target!==l?!1:(t.preventDefault(),s?.({event:t.nativeEvent}),!0)}return!1}}];function aM(t){return!!(t&&"distance"in t)}function oM(t){return!!(t&&"delay"in t)}class rN{constructor(e,n,r){var s;r===void 0&&(r=P1e(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=n;const{event:i}=e,{target:a}=i;this.props=e,this.events=n,this.document=If(a),this.documentListeners=new C0(this.document),this.listeners=new C0(r),this.windowListeners=new C0(Ti(a)),this.initialCoordinates=(s=OO(i))!=null?s:Za,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:e,props:{options:{activationConstraint:n,bypassActivationConstraint:r}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(da.Resize,this.handleCancel),this.windowListeners.add(da.DragStart,iM),this.windowListeners.add(da.VisibilityChange,this.handleCancel),this.windowListeners.add(da.ContextMenu,iM),this.documentListeners.add(da.Keydown,this.handleKeydown),n){if(r!=null&&r({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(oM(n)){this.timeoutId=setTimeout(this.handleStart,n.delay),this.handlePending(n);return}if(aM(n)){this.handlePending(n);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,n){const{active:r,onPending:s}=this.props;s(r,e,this.initialCoordinates,n)}handleStart(){const{initialCoordinates:e}=this,{onStart:n}=this.props;e&&(this.activated=!0,this.documentListeners.add(da.Click,z1e,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(da.SelectionChange,this.removeTextSelection),n(e))}handleMove(e){var n;const{activated:r,initialCoordinates:s,props:i}=this,{onMove:a,options:{activationConstraint:l}}=i;if(!s)return;const c=(n=OO(e))!=null?n:Za,d=dp(s,c);if(!r&&l){if(aM(l)){if(l.tolerance!=null&&jS(d,l.tolerance))return this.handleCancel();if(jS(d,l.distance))return this.handleStart()}if(oM(l)&&jS(d,l.tolerance))return this.handleCancel();this.handlePending(l,d);return}e.cancelable&&e.preventDefault(),a(c)}handleEnd(){const{onAbort:e,onEnd:n}=this.props;this.detach(),this.activated||e(this.props.active),n()}handleCancel(){const{onAbort:e,onCancel:n}=this.props;this.detach(),this.activated||e(this.props.active),n()}handleKeydown(e){e.code===bn.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}}const L1e={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class sN extends rN{constructor(e){const{event:n}=e,r=If(n.target);super(e,L1e,r)}}sN.activators=[{eventName:"onPointerDown",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];const B1e={move:{name:"mousemove"},end:{name:"mouseup"}};var NO;(function(t){t[t.RightClick=2]="RightClick"})(NO||(NO={}));class F1e extends rN{constructor(e){super(e,B1e,If(e.event.target))}}F1e.activators=[{eventName:"onMouseDown",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;return n.button===NO.RightClick?!1:(r?.({event:n}),!0)}}];const NS={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class q1e extends rN{constructor(e){super(e,NS)}static setup(){return window.addEventListener(NS.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(NS.move.name,e)};function e(){}}}q1e.activators=[{eventName:"onTouchStart",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;const{touches:s}=n;return s.length>1?!1:(r?.({event:n}),!0)}}];var T0;(function(t){t[t.Pointer=0]="Pointer",t[t.DraggableRect=1]="DraggableRect"})(T0||(T0={}));var gy;(function(t){t[t.TreeOrder=0]="TreeOrder",t[t.ReversedTreeOrder=1]="ReversedTreeOrder"})(gy||(gy={}));function $1e(t){let{acceleration:e,activator:n=T0.Pointer,canScroll:r,draggingRect:s,enabled:i,interval:a=5,order:l=gy.TreeOrder,pointerCoordinates:c,scrollableAncestors:d,scrollableAncestorRects:h,delta:m,threshold:g}=t;const x=Q1e({delta:m,disabled:!i}),[y,w]=e1e(),S=b.useRef({x:0,y:0}),k=b.useRef({x:0,y:0}),j=b.useMemo(()=>{switch(n){case T0.Pointer:return c?{top:c.y,bottom:c.y,left:c.x,right:c.x}:null;case T0.DraggableRect:return s}},[n,s,c]),N=b.useRef(null),T=b.useCallback(()=>{const _=N.current;if(!_)return;const A=S.current.x*k.current.x,L=S.current.y*k.current.y;_.scrollBy(A,L)},[]),E=b.useMemo(()=>l===gy.TreeOrder?[...d].reverse():d,[l,d]);b.useEffect(()=>{if(!i||!d.length||!j){w();return}for(const _ of E){if(r?.(_)===!1)continue;const A=d.indexOf(_),L=h[A];if(!L)continue;const{direction:P,speed:B}=E1e(_,L,j,e,g);for(const $ of["x","y"])x[$][P[$]]||(B[$]=0,P[$]=0);if(B.x>0||B.y>0){w(),N.current=_,y(T,a),S.current=B,k.current=P;return}}S.current={x:0,y:0},k.current={x:0,y:0},w()},[e,T,r,w,i,a,JSON.stringify(j),JSON.stringify(x),y,d,E,h,JSON.stringify(g)])}const H1e={x:{[ys.Backward]:!1,[ys.Forward]:!1},y:{[ys.Backward]:!1,[ys.Forward]:!1}};function Q1e(t){let{delta:e,disabled:n}=t;const r=kO(e);return lg(s=>{if(n||!r||!s)return H1e;const i={x:Math.sign(e.x-r.x),y:Math.sign(e.y-r.y)};return{x:{[ys.Backward]:s.x[ys.Backward]||i.x===-1,[ys.Forward]:s.x[ys.Forward]||i.x===1},y:{[ys.Backward]:s.y[ys.Backward]||i.y===-1,[ys.Forward]:s.y[ys.Forward]||i.y===1}}},[n,e,r])}function V1e(t,e){const n=e!=null?t.get(e):void 0,r=n?n.node.current:null;return lg(s=>{var i;return e==null?null:(i=r??s)!=null?i:null},[r,e])}function U1e(t,e){return b.useMemo(()=>t.reduce((n,r)=>{const{sensor:s}=r,i=s.activators.map(a=>({eventName:a.eventName,handler:e(a.handler,r)}));return[...n,...i]},[]),[t,e])}var fp;(function(t){t[t.Always=0]="Always",t[t.BeforeDragging=1]="BeforeDragging",t[t.WhileDragging=2]="WhileDragging"})(fp||(fp={}));var CO;(function(t){t.Optimized="optimized"})(CO||(CO={}));const lM=new Map;function W1e(t,e){let{dragging:n,dependencies:r,config:s}=e;const[i,a]=b.useState(null),{frequency:l,measure:c,strategy:d}=s,h=b.useRef(t),m=S(),g=up(m),x=b.useCallback(function(k){k===void 0&&(k=[]),!g.current&&a(j=>j===null?k:j.concat(k.filter(N=>!j.includes(N))))},[g]),y=b.useRef(null),w=lg(k=>{if(m&&!n)return lM;if(!k||k===lM||h.current!==t||i!=null){const j=new Map;for(let N of t){if(!N)continue;if(i&&i.length>0&&!i.includes(N.id)&&N.rect.current){j.set(N.id,N.rect.current);continue}const T=N.node.current,E=T?new tN(c(T),T):null;N.rect.current=E,E&&j.set(N.id,E)}return j}return k},[t,i,n,m,c]);return b.useEffect(()=>{h.current=t},[t]),b.useEffect(()=>{m||x()},[n,m]),b.useEffect(()=>{i&&i.length>0&&a(null)},[JSON.stringify(i)]),b.useEffect(()=>{m||typeof l!="number"||y.current!==null||(y.current=setTimeout(()=>{x(),y.current=null},l))},[l,m,x,...r]),{droppableRects:w,measureDroppableContainers:x,measuringScheduled:i!=null};function S(){switch(d){case fp.Always:return!1;case fp.BeforeDragging:return n;default:return!n}}}function MQ(t,e){return lg(n=>t?n||(typeof e=="function"?e(t):t):null,[e,t])}function G1e(t,e){return MQ(t,e)}function X1e(t){let{callback:e,disabled:n}=t;const r=J6(e),s=b.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:i}=window;return new i(r)},[r,n]);return b.useEffect(()=>()=>s?.disconnect(),[s]),s}function Rb(t){let{callback:e,disabled:n}=t;const r=J6(e),s=b.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:i}=window;return new i(r)},[n]);return b.useEffect(()=>()=>s?.disconnect(),[s]),s}function Y1e(t){return new tN(Lf(t),t)}function cM(t,e,n){e===void 0&&(e=Y1e);const[r,s]=b.useState(null);function i(){s(c=>{if(!t)return null;if(t.isConnected===!1){var d;return(d=c??n)!=null?d:null}const h=e(t);return JSON.stringify(c)===JSON.stringify(h)?c:h})}const a=X1e({callback(c){if(t)for(const d of c){const{type:h,target:m}=d;if(h==="childList"&&m instanceof HTMLElement&&m.contains(t)){i();break}}}}),l=Rb({callback:i});return Bo(()=>{i(),t?(l?.observe(t),a?.observe(document.body,{childList:!0,subtree:!0})):(l?.disconnect(),a?.disconnect())},[t]),r}function K1e(t){const e=MQ(t);return OQ(t,e)}const uM=[];function Z1e(t){const e=b.useRef(t),n=lg(r=>t?r&&r!==uM&&t&&e.current&&t.parentNode===e.current.parentNode?r:Mb(t):uM,[t]);return b.useEffect(()=>{e.current=t},[t]),n}function J1e(t){const[e,n]=b.useState(null),r=b.useRef(t),s=b.useCallback(i=>{const a=OS(i.target);a&&n(l=>l?(l.set(a,jO(a)),new Map(l)):null)},[]);return b.useEffect(()=>{const i=r.current;if(t!==i){a(i);const l=t.map(c=>{const d=OS(c);return d?(d.addEventListener("scroll",s,{passive:!0}),[d,jO(d)]):null}).filter(c=>c!=null);n(l.length?new Map(l):null),r.current=t}return()=>{a(t),a(i)};function a(l){l.forEach(c=>{const d=OS(c);d?.removeEventListener("scroll",s)})}},[s,t]),b.useMemo(()=>t.length?e?Array.from(e.values()).reduce((i,a)=>Fh(i,a),Za):_Q(t):Za,[t,e])}function dM(t,e){e===void 0&&(e=[]);const n=b.useRef(null);return b.useEffect(()=>{n.current=null},e),b.useEffect(()=>{const r=t!==Za;r&&!n.current&&(n.current=t),!r&&n.current&&(n.current=null)},[t]),n.current?dp(t,n.current):Za}function eve(t){b.useEffect(()=>{if(!Ab)return;const e=t.map(n=>{let{sensor:r}=n;return r.setup==null?void 0:r.setup()});return()=>{for(const n of e)n?.()}},t.map(e=>{let{sensor:n}=e;return n}))}function tve(t,e){return b.useMemo(()=>t.reduce((n,r)=>{let{eventName:s,handler:i}=r;return n[s]=a=>{i(a,e)},n},{}),[t,e])}function RQ(t){return b.useMemo(()=>t?j1e(t):null,[t])}const hM=[];function nve(t,e){e===void 0&&(e=Lf);const[n]=t,r=RQ(n?Ti(n):null),[s,i]=b.useState(hM);function a(){i(()=>t.length?t.map(c=>TQ(c)?r:new tN(e(c),c)):hM)}const l=Rb({callback:a});return Bo(()=>{l?.disconnect(),a(),t.forEach(c=>l?.observe(c))},[t]),s}function rve(t){if(!t)return null;if(t.children.length>1)return t;const e=t.children[0];return og(e)?e:t}function sve(t){let{measure:e}=t;const[n,r]=b.useState(null),s=b.useCallback(d=>{for(const{target:h}of d)if(og(h)){r(m=>{const g=e(h);return m?{...m,width:g.width,height:g.height}:g});break}},[e]),i=Rb({callback:s}),a=b.useCallback(d=>{const h=rve(d);i?.disconnect(),h&&i?.observe(h),r(h?e(h):null)},[e,i]),[l,c]=my(a);return b.useMemo(()=>({nodeRef:l,rect:n,setRef:c}),[n,l,c])}const ive=[{sensor:sN,options:{}},{sensor:nN,options:{}}],ave={current:{}},wv={draggable:{measure:sM},droppable:{measure:sM,strategy:fp.WhileDragging,frequency:CO.Optimized},dragOverlay:{measure:Lf}};class E0 extends Map{get(e){var n;return e!=null&&(n=super.get(e))!=null?n:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:n}=e;return!n})}getNodeFor(e){var n,r;return(n=(r=this.get(e))==null?void 0:r.node.current)!=null?n:void 0}}const ove={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new E0,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:py},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:wv,measureDroppableContainers:py,windowRect:null,measuringScheduled:!1},lve={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:py,draggableNodes:new Map,over:null,measureDroppableContainers:py},Db=b.createContext(lve),DQ=b.createContext(ove);function cve(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new E0}}}function uve(t,e){switch(e.type){case ds.DragStart:return{...t,draggable:{...t.draggable,initialCoordinates:e.initialCoordinates,active:e.active}};case ds.DragMove:return t.draggable.active==null?t:{...t,draggable:{...t.draggable,translate:{x:e.coordinates.x-t.draggable.initialCoordinates.x,y:e.coordinates.y-t.draggable.initialCoordinates.y}}};case ds.DragEnd:case ds.DragCancel:return{...t,draggable:{...t.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case ds.RegisterDroppable:{const{element:n}=e,{id:r}=n,s=new E0(t.droppable.containers);return s.set(r,n),{...t,droppable:{...t.droppable,containers:s}}}case ds.SetDroppableDisabled:{const{id:n,key:r,disabled:s}=e,i=t.droppable.containers.get(n);if(!i||r!==i.key)return t;const a=new E0(t.droppable.containers);return a.set(n,{...i,disabled:s}),{...t,droppable:{...t.droppable,containers:a}}}case ds.UnregisterDroppable:{const{id:n,key:r}=e,s=t.droppable.containers.get(n);if(!s||r!==s.key)return t;const i=new E0(t.droppable.containers);return i.delete(n),{...t,droppable:{...t.droppable,containers:i}}}default:return t}}function dve(t){let{disabled:e}=t;const{active:n,activatorEvent:r,draggableNodes:s}=b.useContext(Db),i=kO(r),a=kO(n?.id);return b.useEffect(()=>{if(!e&&!r&&i&&a!=null){if(!eN(i)||document.activeElement===i.target)return;const l=s.get(a);if(!l)return;const{activatorNode:c,node:d}=l;if(!c.current&&!d.current)return;requestAnimationFrame(()=>{for(const h of[c.current,d.current]){if(!h)continue;const m=r1e(h);if(m){m.focus();break}}})}},[r,e,s,a,i]),null}function hve(t,e){let{transform:n,...r}=e;return t!=null&&t.length?t.reduce((s,i)=>i({transform:s,...r}),n):n}function fve(t){return b.useMemo(()=>({draggable:{...wv.draggable,...t?.draggable},droppable:{...wv.droppable,...t?.droppable},dragOverlay:{...wv.dragOverlay,...t?.dragOverlay}}),[t?.draggable,t?.droppable,t?.dragOverlay])}function mve(t){let{activeNode:e,measure:n,initialRect:r,config:s=!0}=t;const i=b.useRef(!1),{x:a,y:l}=typeof s=="boolean"?{x:s,y:s}:s;Bo(()=>{if(!a&&!l||!e){i.current=!1;return}if(i.current||!r)return;const d=e?.node.current;if(!d||d.isConnected===!1)return;const h=n(d),m=OQ(h,r);if(a||(m.x=0),l||(m.y=0),i.current=!0,Math.abs(m.x)>0||Math.abs(m.y)>0){const g=jQ(d);g&&g.scrollBy({top:m.y,left:m.x})}},[e,a,l,r,n])}const PQ=b.createContext({...Za,scaleX:1,scaleY:1});var Dc;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.Initializing=1]="Initializing",t[t.Initialized=2]="Initialized"})(Dc||(Dc={}));const pve=b.memo(function(e){var n,r,s,i;let{id:a,accessibility:l,autoScroll:c=!0,children:d,sensors:h=ive,collisionDetection:m=v1e,measuring:g,modifiers:x,...y}=e;const w=b.useReducer(uve,void 0,cve),[S,k]=w,[j,N]=c1e(),[T,E]=b.useState(Dc.Uninitialized),_=T===Dc.Initialized,{draggable:{active:A,nodes:L,translate:P},droppable:{containers:B}}=S,$=A!=null?L.get(A):null,U=b.useRef({initial:null,translated:null}),te=b.useMemo(()=>{var Kt;return A!=null?{id:A,data:(Kt=$?.data)!=null?Kt:ave,rect:U}:null},[A,$]),z=b.useRef(null),[Q,F]=b.useState(null),[Y,J]=b.useState(null),X=up(y,Object.values(y)),R=cg("DndDescribedBy",a),ie=b.useMemo(()=>B.getEnabled(),[B]),G=fve(g),{droppableRects:I,measureDroppableContainers:V,measuringScheduled:ee}=W1e(ie,{dragging:_,dependencies:[P.x,P.y],config:G.droppable}),ne=V1e(L,A),W=b.useMemo(()=>Y?OO(Y):null,[Y]),se=nn(),re=G1e(ne,G.draggable.measure);mve({activeNode:A!=null?L.get(A):null,config:se.layoutShiftCompensation,initialRect:re,measure:G.draggable.measure});const oe=cM(ne,G.draggable.measure,re),Te=cM(ne?ne.parentElement:null),We=b.useRef({activatorEvent:null,active:null,activeNode:ne,collisionRect:null,collisions:null,droppableRects:I,draggableNodes:L,draggingNode:null,draggingNodeRect:null,droppableContainers:B,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),Ye=B.getNodeFor((n=We.current.over)==null?void 0:n.id),Je=sve({measure:G.dragOverlay.measure}),Oe=(r=Je.nodeRef.current)!=null?r:ne,Ve=_?(s=Je.rect)!=null?s:oe:null,Ue=!!(Je.nodeRef.current&&Je.rect),He=K1e(Ue?null:oe),Ot=RQ(Oe?Ti(Oe):null),xt=Z1e(_?Ye??ne:null),kn=nve(xt),It=hve(x,{transform:{x:P.x-He.x,y:P.y-He.y,scaleX:1,scaleY:1},activatorEvent:Y,active:te,activeNodeRect:oe,containerNodeRect:Te,draggingNodeRect:Ve,over:We.current.over,overlayNodeRect:Je.rect,scrollableAncestors:xt,scrollableAncestorRects:kn,windowRect:Ot}),Yt=W?Fh(W,P):null,_t=J1e(xt),mt=dM(_t),Ne=dM(_t,[oe]),Ie=Fh(It,mt),st=Ve?w1e(Ve,It):null,yt=te&&st?m({active:te,collisionRect:st,droppableRects:I,droppableContainers:ie,pointerCoordinates:Yt}):null,Pt=kQ(yt,"id"),[Mt,zn]=b.useState(null),Fe=Ue?It:Fh(It,Ne),rt=y1e(Fe,(i=Mt?.rect)!=null?i:null,oe),tn=b.useRef(null),Rt=b.useCallback((Kt,pt)=>{let{sensor:xr,options:Ur}=pt;if(z.current==null)return;const Wr=L.get(z.current);if(!Wr)return;const vr=Kt.nativeEvent,In=new xr({active:z.current,activeNode:Wr,event:vr,options:Ur,context:We,onAbort(nr){if(!L.get(nr))return;const{onDragAbort:xs}=X.current,js={id:nr};xs?.(js),j({type:"onDragAbort",event:js})},onPending(nr,gs,xs,js){if(!L.get(nr))return;const{onDragPending:Le}=X.current,Ct={id:nr,constraint:gs,initialCoordinates:xs,offset:js};Le?.(Ct),j({type:"onDragPending",event:Ct})},onStart(nr){const gs=z.current;if(gs==null)return;const xs=L.get(gs);if(!xs)return;const{onDragStart:js}=X.current,ge={activatorEvent:vr,active:{id:gs,data:xs.data,rect:U}};pa.unstable_batchedUpdates(()=>{js?.(ge),E(Dc.Initializing),k({type:ds.DragStart,initialCoordinates:nr,active:gs}),j({type:"onDragStart",event:ge}),F(tn.current),J(vr)})},onMove(nr){k({type:ds.DragMove,coordinates:nr})},onEnd:cr(ds.DragEnd),onCancel:cr(ds.DragCancel)});tn.current=In;function cr(nr){return async function(){const{active:xs,collisions:js,over:ge,scrollAdjustedTranslate:Le}=We.current;let Ct=null;if(xs&&Le){const{cancelDrop:vn}=X.current;Ct={activatorEvent:vr,active:xs,collisions:js,delta:Le,over:ge},nr===ds.DragEnd&&typeof vn=="function"&&await Promise.resolve(vn(Ct))&&(nr=ds.DragCancel)}z.current=null,pa.unstable_batchedUpdates(()=>{k({type:nr}),E(Dc.Uninitialized),zn(null),F(null),J(null),tn.current=null;const vn=nr===ds.DragEnd?"onDragEnd":"onDragCancel";if(Ct){const Fr=X.current[vn];Fr?.(Ct),j({type:vn,event:Ct})}})}}},[L]),ke=b.useCallback((Kt,pt)=>(xr,Ur)=>{const Wr=xr.nativeEvent,vr=L.get(Ur);if(z.current!==null||!vr||Wr.dndKit||Wr.defaultPrevented)return;const In={active:vr};Kt(xr,pt.options,In)===!0&&(Wr.dndKit={capturedBy:pt.sensor},z.current=Ur,Rt(xr,pt))},[L,Rt]),Pe=U1e(h,ke);eve(h),Bo(()=>{oe&&T===Dc.Initializing&&E(Dc.Initialized)},[oe,T]),b.useEffect(()=>{const{onDragMove:Kt}=X.current,{active:pt,activatorEvent:xr,collisions:Ur,over:Wr}=We.current;if(!pt||!xr)return;const vr={active:pt,activatorEvent:xr,collisions:Ur,delta:{x:Ie.x,y:Ie.y},over:Wr};pa.unstable_batchedUpdates(()=>{Kt?.(vr),j({type:"onDragMove",event:vr})})},[Ie.x,Ie.y]),b.useEffect(()=>{const{active:Kt,activatorEvent:pt,collisions:xr,droppableContainers:Ur,scrollAdjustedTranslate:Wr}=We.current;if(!Kt||z.current==null||!pt||!Wr)return;const{onDragOver:vr}=X.current,In=Ur.get(Pt),cr=In&&In.rect.current?{id:In.id,rect:In.rect.current,data:In.data,disabled:In.disabled}:null,nr={active:Kt,activatorEvent:pt,collisions:xr,delta:{x:Wr.x,y:Wr.y},over:cr};pa.unstable_batchedUpdates(()=>{zn(cr),vr?.(nr),j({type:"onDragOver",event:nr})})},[Pt]),Bo(()=>{We.current={activatorEvent:Y,active:te,activeNode:ne,collisionRect:st,collisions:yt,droppableRects:I,draggableNodes:L,draggingNode:Oe,draggingNodeRect:Ve,droppableContainers:B,over:Mt,scrollableAncestors:xt,scrollAdjustedTranslate:Ie},U.current={initial:Ve,translated:st}},[te,ne,yt,st,L,Oe,Ve,I,B,Mt,xt,Ie]),$1e({...se,delta:P,draggingRect:st,pointerCoordinates:Yt,scrollableAncestors:xt,scrollableAncestorRects:kn});const it=b.useMemo(()=>({active:te,activeNode:ne,activeNodeRect:oe,activatorEvent:Y,collisions:yt,containerNodeRect:Te,dragOverlay:Je,draggableNodes:L,droppableContainers:B,droppableRects:I,over:Mt,measureDroppableContainers:V,scrollableAncestors:xt,scrollableAncestorRects:kn,measuringConfiguration:G,measuringScheduled:ee,windowRect:Ot}),[te,ne,oe,Y,yt,Te,Je,L,B,I,Mt,V,xt,kn,G,ee,Ot]),ot=b.useMemo(()=>({activatorEvent:Y,activators:Pe,active:te,activeNodeRect:oe,ariaDescribedById:{draggable:R},dispatch:k,draggableNodes:L,over:Mt,measureDroppableContainers:V}),[Y,Pe,te,oe,k,R,L,Mt,V]);return ae.createElement(bQ.Provider,{value:N},ae.createElement(Db.Provider,{value:ot},ae.createElement(DQ.Provider,{value:it},ae.createElement(PQ.Provider,{value:rt},d)),ae.createElement(dve,{disabled:l?.restoreFocus===!1})),ae.createElement(h1e,{...l,hiddenTextDescribedById:R}));function nn(){const Kt=Q?.autoScrollEnabled===!1,pt=typeof c=="object"?c.enabled===!1:c===!1,xr=_&&!Kt&&!pt;return typeof c=="object"?{...c,enabled:xr}:{enabled:xr}}}),gve=b.createContext(null),fM="button",xve="Draggable";function vve(t){let{id:e,data:n,disabled:r=!1,attributes:s}=t;const i=cg(xve),{activators:a,activatorEvent:l,active:c,activeNodeRect:d,ariaDescribedById:h,draggableNodes:m,over:g}=b.useContext(Db),{role:x=fM,roleDescription:y="draggable",tabIndex:w=0}=s??{},S=c?.id===e,k=b.useContext(S?PQ:gve),[j,N]=my(),[T,E]=my(),_=tve(a,e),A=up(n);Bo(()=>(m.set(e,{id:e,key:i,node:j,activatorNode:T,data:A}),()=>{const P=m.get(e);P&&P.key===i&&m.delete(e)}),[m,e]);const L=b.useMemo(()=>({role:x,tabIndex:w,"aria-disabled":r,"aria-pressed":S&&x===fM?!0:void 0,"aria-roledescription":y,"aria-describedby":h.draggable}),[r,x,w,S,y,h.draggable]);return{active:c,activatorEvent:l,activeNodeRect:d,attributes:L,isDragging:S,listeners:r?void 0:_,node:j,over:g,setNodeRef:N,setActivatorNodeRef:E,transform:k}}function yve(){return b.useContext(DQ)}const bve="Droppable",wve={timeout:25};function Sve(t){let{data:e,disabled:n=!1,id:r,resizeObserverConfig:s}=t;const i=cg(bve),{active:a,dispatch:l,over:c,measureDroppableContainers:d}=b.useContext(Db),h=b.useRef({disabled:n}),m=b.useRef(!1),g=b.useRef(null),x=b.useRef(null),{disabled:y,updateMeasurementsFor:w,timeout:S}={...wve,...s},k=up(w??r),j=b.useCallback(()=>{if(!m.current){m.current=!0;return}x.current!=null&&clearTimeout(x.current),x.current=setTimeout(()=>{d(Array.isArray(k.current)?k.current:[k.current]),x.current=null},S)},[S]),N=Rb({callback:j,disabled:y||!a}),T=b.useCallback((L,P)=>{N&&(P&&(N.unobserve(P),m.current=!1),L&&N.observe(L))},[N]),[E,_]=my(T),A=up(e);return b.useEffect(()=>{!N||!E.current||(N.disconnect(),m.current=!1,N.observe(E.current))},[E,N]),b.useEffect(()=>(l({type:ds.RegisterDroppable,element:{id:r,key:i,disabled:n,node:E,rect:g,data:A}}),()=>l({type:ds.UnregisterDroppable,key:i,id:r})),[r]),b.useEffect(()=>{n!==h.current.disabled&&(l({type:ds.SetDroppableDisabled,id:r,key:i,disabled:n}),h.current.disabled=n)},[r,i,n,l]),{active:a,rect:g,isOver:c?.id===r,node:E,over:c,setNodeRef:_}}function iN(t,e,n){const r=t.slice();return r.splice(n<0?r.length+n:n,0,r.splice(e,1)[0]),r}function kve(t,e){return t.reduce((n,r,s)=>{const i=e.get(r);return i&&(n[s]=i),n},Array(t.length))}function j1(t){return t!==null&&t>=0}function Ove(t,e){if(t===e)return!0;if(t.length!==e.length)return!1;for(let n=0;n{var e;let{rects:n,activeNodeRect:r,activeIndex:s,overIndex:i,index:a}=t;const l=(e=n[s])!=null?e:r;if(!l)return null;const c=Cve(n,a,s);if(a===s){const d=n[i];return d?{x:ss&&a<=i?{x:-l.width-c,y:0,...N1}:a=i?{x:l.width+c,y:0,...N1}:{x:0,y:0,...N1}};function Cve(t,e,n){const r=t[e],s=t[e-1],i=t[e+1];return!r||!s&&!i?0:n{let{rects:e,activeIndex:n,overIndex:r,index:s}=t;const i=iN(e,r,n),a=e[s],l=i[s];return!l||!a?null:{x:l.left-a.left,y:l.top-a.top,scaleX:l.width/a.width,scaleY:l.height/a.height}},IQ="Sortable",LQ=ae.createContext({activeIndex:-1,containerId:IQ,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:zQ,disabled:{draggable:!1,droppable:!1}});function Tve(t){let{children:e,id:n,items:r,strategy:s=zQ,disabled:i=!1}=t;const{active:a,dragOverlay:l,droppableRects:c,over:d,measureDroppableContainers:h}=yve(),m=cg(IQ,n),g=l.rect!==null,x=b.useMemo(()=>r.map(_=>typeof _=="object"&&"id"in _?_.id:_),[r]),y=a!=null,w=a?x.indexOf(a.id):-1,S=d?x.indexOf(d.id):-1,k=b.useRef(x),j=!Ove(x,k.current),N=S!==-1&&w===-1||j,T=jve(i);Bo(()=>{j&&y&&h(x)},[j,x,y,h]),b.useEffect(()=>{k.current=x},[x]);const E=b.useMemo(()=>({activeIndex:w,containerId:m,disabled:T,disableTransforms:N,items:x,overIndex:S,useDragOverlay:g,sortedRects:kve(x,c),strategy:s}),[w,m,T.draggable,T.droppable,N,x,S,c,g,s]);return ae.createElement(LQ.Provider,{value:E},e)}const Eve=t=>{let{id:e,items:n,activeIndex:r,overIndex:s}=t;return iN(n,r,s).indexOf(e)},_ve=t=>{let{containerId:e,isSorting:n,wasDragging:r,index:s,items:i,newIndex:a,previousItems:l,previousContainerId:c,transition:d}=t;return!d||!r||l!==i&&s===a?!1:n?!0:a!==s&&e===c},Ave={duration:200,easing:"ease"},BQ="transform",Mve=hp.Transition.toString({property:BQ,duration:0,easing:"linear"}),Rve={roleDescription:"sortable"};function Dve(t){let{disabled:e,index:n,node:r,rect:s}=t;const[i,a]=b.useState(null),l=b.useRef(n);return Bo(()=>{if(!e&&n!==l.current&&r.current){const c=s.current;if(c){const d=Lf(r.current,{ignoreTransform:!0}),h={x:c.left-d.left,y:c.top-d.top,scaleX:c.width/d.width,scaleY:c.height/d.height};(h.x||h.y)&&a(h)}}n!==l.current&&(l.current=n)},[e,n,r,s]),b.useEffect(()=>{i&&a(null)},[i]),i}function Pve(t){let{animateLayoutChanges:e=_ve,attributes:n,disabled:r,data:s,getNewIndex:i=Eve,id:a,strategy:l,resizeObserverConfig:c,transition:d=Ave}=t;const{items:h,containerId:m,activeIndex:g,disabled:x,disableTransforms:y,sortedRects:w,overIndex:S,useDragOverlay:k,strategy:j}=b.useContext(LQ),N=zve(r,x),T=h.indexOf(a),E=b.useMemo(()=>({sortable:{containerId:m,index:T,items:h},...s}),[m,s,T,h]),_=b.useMemo(()=>h.slice(h.indexOf(a)),[h,a]),{rect:A,node:L,isOver:P,setNodeRef:B}=Sve({id:a,data:E,disabled:N.droppable,resizeObserverConfig:{updateMeasurementsFor:_,...c}}),{active:$,activatorEvent:U,activeNodeRect:te,attributes:z,setNodeRef:Q,listeners:F,isDragging:Y,over:J,setActivatorNodeRef:X,transform:R}=vve({id:a,data:E,attributes:{...Rve,...n},disabled:N.draggable}),ie=Jxe(B,Q),G=!!$,I=G&&!y&&j1(g)&&j1(S),V=!k&&Y,ee=V&&I?R:null,W=I?ee??(l??j)({rects:w,activeNodeRect:te,activeIndex:g,overIndex:S,index:T}):null,se=j1(g)&&j1(S)?i({id:a,items:h,activeIndex:g,overIndex:S}):T,re=$?.id,oe=b.useRef({activeId:re,items:h,newIndex:se,containerId:m}),Te=h!==oe.current.items,We=e({active:$,containerId:m,isDragging:Y,isSorting:G,id:a,index:T,items:h,newIndex:oe.current.newIndex,previousItems:oe.current.items,previousContainerId:oe.current.containerId,transition:d,wasDragging:oe.current.activeId!=null}),Ye=Dve({disabled:!We,index:T,node:L,rect:A});return b.useEffect(()=>{G&&oe.current.newIndex!==se&&(oe.current.newIndex=se),m!==oe.current.containerId&&(oe.current.containerId=m),h!==oe.current.items&&(oe.current.items=h)},[G,se,m,h]),b.useEffect(()=>{if(re===oe.current.activeId)return;if(re!=null&&oe.current.activeId==null){oe.current.activeId=re;return}const Oe=setTimeout(()=>{oe.current.activeId=re},50);return()=>clearTimeout(Oe)},[re]),{active:$,activeIndex:g,attributes:z,data:E,rect:A,index:T,newIndex:se,items:h,isOver:P,isSorting:G,isDragging:Y,listeners:F,node:L,overIndex:S,over:J,setNodeRef:ie,setActivatorNodeRef:X,setDroppableNodeRef:B,setDraggableNodeRef:Q,transform:Ye??W,transition:Je()};function Je(){if(Ye||Te&&oe.current.newIndex===T)return Mve;if(!(V&&!eN(U)||!d)&&(G||We))return hp.Transition.toString({...d,property:BQ})}}function zve(t,e){var n,r;return typeof t=="boolean"?{draggable:t,droppable:!1}:{draggable:(n=t?.draggable)!=null?n:e.draggable,droppable:(r=t?.droppable)!=null?r:e.droppable}}function xy(t){if(!t)return!1;const e=t.data.current;return!!(e&&"sortable"in e&&typeof e.sortable=="object"&&"containerId"in e.sortable&&"items"in e.sortable&&"index"in e.sortable)}const Ive=[bn.Down,bn.Right,bn.Up,bn.Left],Lve=(t,e)=>{let{context:{active:n,collisionRect:r,droppableRects:s,droppableContainers:i,over:a,scrollableAncestors:l}}=e;if(Ive.includes(t.code)){if(t.preventDefault(),!n||!r)return;const c=[];i.getEnabled().forEach(m=>{if(!m||m!=null&&m.disabled)return;const g=s.get(m.id);if(g)switch(t.code){case bn.Down:r.topg.top&&c.push(m);break;case bn.Left:r.left>g.left&&c.push(m);break;case bn.Right:r.left1&&(h=d[1].id),h!=null){const m=i.get(n.id),g=i.get(h),x=g?s.get(g.id):null,y=g?.node.current;if(y&&x&&m&&g){const S=Mb(y).some((_,A)=>l[A]!==_),k=FQ(m,g),j=Bve(m,g),N=S||!k?{x:0,y:0}:{x:j?r.width-x.width:0,y:j?r.height-x.height:0},T={x:x.left,y:x.top};return N.x&&N.y?T:dp(T,N)}}}};function FQ(t,e){return!xy(t)||!xy(e)?!1:t.data.current.sortable.containerId===e.data.current.sortable.containerId}function Bve(t,e){return!xy(t)||!xy(e)||!FQ(t,e)?!1:t.data.current.sortable.index{h.stopPropagation(),n(t)}})]})})}function qve({options:t,selected:e,onChange:n,placeholder:r="选择选项...",emptyText:s="未找到选项",className:i}){const[a,l]=b.useState(!1),c=f1e(tM(sN,{activationConstraint:{distance:8}}),tM(nN,{coordinateGetter:Lve})),d=g=>{e.includes(g)?n(e.filter(x=>x!==g)):n([...e,g])},h=g=>{n(e.filter(x=>x!==g))},m=g=>{const{active:x,over:y}=g;if(y&&x.id!==y.id){const w=e.indexOf(x.id),S=e.indexOf(y.id);n(iN(e,w,S))}};return o.jsxs(zo,{open:a,onOpenChange:l,children:[o.jsx(Io,{asChild:!0,children:o.jsxs(de,{variant:"outline",role:"combobox","aria-expanded":a,className:xe("w-full justify-between min-h-10 h-auto",i),children:[o.jsx(pve,{sensors:c,collisionDetection:p1e,onDragEnd:m,children:o.jsx(Tve,{items:e,strategy:Nve,children:o.jsx("div",{className:"flex gap-1 flex-wrap flex-1",children:e.length===0?o.jsx("span",{className:"text-muted-foreground",children:r}):e.map(g=>{const x=t.find(y=>y.value===g);return o.jsx(Fve,{value:g,label:x?.label||g,onRemove:h},g)})})})}),o.jsx(Mj,{className:"ml-2 h-4 w-4 shrink-0 opacity-50",strokeWidth:2,fill:"none"})]})}),o.jsx(Xa,{className:"w-full p-0",align:"start",children:o.jsxs(Ob,{children:[o.jsx(jb,{placeholder:"搜索...",className:"h-9"}),o.jsxs(Nb,{children:[o.jsx(Cb,{children:s}),o.jsx(ap,{children:t.map(g=>{const x=e.includes(g.value);return o.jsxs(op,{value:g.value,onSelect:()=>d(g.value),children:[o.jsx("div",{className:xe("mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary",x?"bg-primary text-primary-foreground":"opacity-50 [&_svg]:invisible"),children:o.jsx(Ro,{className:"h-3 w-3",strokeWidth:2,fill:"none"})}),o.jsx("span",{children:g.label})]},g.value)})})]})]})})]})}const mM=new Map,$ve=300*1e3;function Hve(){const[t,e]=b.useState([]),[n,r]=b.useState([]),[s,i]=b.useState([]),[a,l]=b.useState([]),[c,d]=b.useState(null),[h,m]=b.useState(!0),[g,x]=b.useState(!1),[y,w]=b.useState(!1),[S,k]=b.useState(!1),[j,N]=b.useState(!1),[T,E]=b.useState(!1),[_,A]=b.useState(!1),[L,P]=b.useState(null),[B,$]=b.useState(null),[U,te]=b.useState(!1),[z,Q]=b.useState(null),[F,Y]=b.useState(""),[J,X]=b.useState(new Set),[R,ie]=b.useState(!1),[G,I]=b.useState(1),[V,ee]=b.useState(20),[ne,W]=b.useState(""),[se,re]=b.useState([]),[oe,Te]=b.useState(!1),[We,Ye]=b.useState(null),[Je,Oe]=b.useState(!1),[Ve,Ue]=b.useState(null),{toast:He}=as(),Ot=Zi(),{registerTour:xt,startTour:kn,state:It,goToStep:Yt}=Y6(),_t=b.useRef(null),mt=b.useRef(null),Ne=b.useRef(!0);b.useEffect(()=>{xt(_l,gQ)},[xt]),b.useEffect(()=>{if(It.activeTourId===_l&&It.isRunning){const ge=xQ[It.stepIndex];ge&&!window.location.pathname.endsWith(ge.replace("/config/",""))&&Ot({to:ge})}},[It.stepIndex,It.activeTourId,It.isRunning,Ot]);const Ie=b.useRef(It.stepIndex);b.useEffect(()=>{if(It.activeTourId===_l&&It.isRunning){const ge=Ie.current,Le=It.stepIndex;ge>=12&&ge<=17&&Le<12&&A(!1),Ie.current=Le}},[It.stepIndex,It.activeTourId,It.isRunning]),b.useEffect(()=>{if(It.activeTourId!==_l||!It.isRunning)return;const ge=Le=>{const Ct=Le.target,vn=It.stepIndex;vn===2&&Ct.closest('[data-tour="add-provider-button"]')?setTimeout(()=>Yt(3),300):vn===9&&Ct.closest('[data-tour="provider-cancel-button"]')?setTimeout(()=>Yt(10),300):vn===11&&Ct.closest('[data-tour="add-model-button"]')?setTimeout(()=>Yt(12),300):vn===17&&Ct.closest('[data-tour="model-cancel-button"]')?setTimeout(()=>Yt(18),300):vn===18&&Ct.closest('[data-tour="tasks-tab-trigger"]')&&setTimeout(()=>Yt(19),300)};return document.addEventListener("click",ge,!0),()=>document.removeEventListener("click",ge,!0)},[It,Yt]);const st=()=>{kn(_l)};b.useEffect(()=>{yt()},[]);const yt=async()=>{try{m(!0);const ge=await Rh(),Le=ge.models||[];e(Le),l(Le.map(vn=>vn.name));const Ct=ge.api_providers||[];r(Ct.map(vn=>vn.name)),i(Ct),d(ge.model_task_config||null),k(!1),Ne.current=!1}catch(ge){console.error("加载配置失败:",ge)}finally{m(!1)}},Pt=b.useCallback(ge=>s.find(Le=>Le.name===ge),[s]),Mt=b.useCallback(async(ge,Le=!1)=>{const Ct=Pt(ge);if(!Ct?.base_url){re([]),Ue(null),Ye('提供商配置不完整,请先在"模型提供商配置"中配置');return}if(!Ct.api_key){re([]),Ue(null),Ye('该提供商未配置 API Key,请先在"模型提供商配置"中填写');return}const vn=Kxe(Ct.base_url);if(Ue(vn),!vn?.modelFetcher){re([]),Ye(null);return}const Fr=`${ge}:${Ct.base_url}`,Cr=mM.get(Fr);if(!Le&&Cr&&Date.now()-Cr.timestamp<$ve){re(Cr.models),Ye(null);return}Te(!0),Ye(null);try{const Tr=await kae(ge,vn.modelFetcher.parser,vn.modelFetcher.endpoint);re(Tr),mM.set(Fr,{models:Tr,timestamp:Date.now()})}catch(Tr){console.error("获取模型列表失败:",Tr);const Ns=Tr.message||"获取模型列表失败";Ns.includes("无效")||Ns.includes("过期")||Ns.includes("API Key")?Ye('API Key 无效或已过期,请检查"模型提供商配置"中的密钥'):Ns.includes("权限")?Ye("没有权限获取模型列表,请检查 API Key 权限"):Ns.includes("timeout")||Ns.includes("超时")?Ye("请求超时,请检查网络连接后重试"):Ns.includes("不支持")?Ye("该提供商不支持自动获取模型列表,请手动输入"):Ye(Ns),re([])}finally{Te(!1)}},[Pt]);b.useEffect(()=>{_&&L?.api_provider&&Mt(L.api_provider)},[_,L?.api_provider,Mt]);const zn=async()=>{try{N(!0),ib().catch(()=>{}),E(!0)}catch(ge){console.error("重启失败:",ge),E(!1),He({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),N(!1)}},Fe=async()=>{try{x(!0),_t.current&&clearTimeout(_t.current),mt.current&&clearTimeout(mt.current);const ge=await Rh();ge.models=t,ge.model_task_config=c,await qv(ge),k(!1),He({title:"保存成功",description:"正在重启麦麦..."}),await zn()}catch(ge){console.error("保存配置失败:",ge),He({title:"保存失败",description:ge.message,variant:"destructive"}),x(!1)}},rt=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},tn=()=>{E(!1),N(!1),He({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},Rt=b.useCallback(async ge=>{if(!Ne.current)try{w(!0),await xk("models",ge),k(!1)}catch(Le){console.error("自动保存模型列表失败:",Le),k(!0)}finally{w(!1)}},[]),ke=b.useCallback(async ge=>{if(!Ne.current)try{w(!0),await xk("model_task_config",ge),k(!1)}catch(Le){console.error("自动保存任务配置失败:",Le),k(!0)}finally{w(!1)}},[]);b.useEffect(()=>{if(!Ne.current)return k(!0),_t.current&&clearTimeout(_t.current),_t.current=setTimeout(()=>{Rt(t)},2e3),()=>{_t.current&&clearTimeout(_t.current)}},[t,Rt]),b.useEffect(()=>{if(!(Ne.current||!c))return k(!0),mt.current&&clearTimeout(mt.current),mt.current=setTimeout(()=>{ke(c)},2e3),()=>{mt.current&&clearTimeout(mt.current)}},[c,ke]);const Pe=async()=>{try{x(!0),_t.current&&clearTimeout(_t.current),mt.current&&clearTimeout(mt.current);const ge=await Rh();ge.models=t,ge.model_task_config=c,await qv(ge),k(!1),He({title:"保存成功",description:"模型配置已保存"}),await yt()}catch(ge){console.error("保存配置失败:",ge),He({title:"保存失败",description:ge.message,variant:"destructive"})}finally{x(!1)}},it=(ge,Le)=>{P(ge||{model_identifier:"",name:"",api_provider:n[0]||"",price_in:0,price_out:0,force_stream_mode:!1,extra_params:{}}),$(Le),A(!0)},ot=()=>{if(!L)return;const ge={...L,price_in:L.price_in??0,price_out:L.price_out??0};let Le;B!==null?(Le=[...t],Le[B]=ge):Le=[...t,ge],e(Le),l(Le.map(Ct=>Ct.name)),A(!1),P(null),$(null)},nn=ge=>{if(!ge&&L){const Le={...L,price_in:L.price_in??0,price_out:L.price_out??0};P(Le)}A(ge)},Kt=ge=>{Q(ge),te(!0)},pt=()=>{if(z!==null){const ge=t.filter((Le,Ct)=>Ct!==z);e(ge),l(ge.map(Le=>Le.name)),He({title:"删除成功",description:"模型已从列表中移除"})}te(!1),Q(null)},xr=ge=>{const Le=new Set(J);Le.has(ge)?Le.delete(ge):Le.add(ge),X(Le)},Ur=()=>{if(J.size===cr.length)X(new Set);else{const ge=cr.map((Le,Ct)=>t.findIndex(vn=>vn===cr[Ct]));X(new Set(ge))}},Wr=()=>{if(J.size===0){He({title:"提示",description:"请先选择要删除的模型",variant:"default"});return}ie(!0)},vr=()=>{const ge=t.filter((Le,Ct)=>!J.has(Ct));e(ge),l(ge.map(Le=>Le.name)),X(new Set),ie(!1),He({title:"批量删除成功",description:`已删除 ${J.size} 个模型`})},In=(ge,Le,Ct)=>{c&&d({...c,[ge]:{...c[ge],[Le]:Ct}})},cr=t.filter(ge=>{if(!F)return!0;const Le=F.toLowerCase();return ge.name.toLowerCase().includes(Le)||ge.model_identifier.toLowerCase().includes(Le)||ge.api_provider.toLowerCase().includes(Le)}),nr=Math.ceil(cr.length/V),gs=cr.slice((G-1)*V,G*V),xs=()=>{const ge=parseInt(ne);ge>=1&&ge<=nr&&(I(ge),W(""))},js=ge=>c?[c.utils?.model_list||[],c.utils_small?.model_list||[],c.tool_use?.model_list||[],c.replyer?.model_list||[],c.planner?.model_list||[],c.vlm?.model_list||[],c.voice?.model_list||[],c.embedding?.model_list||[],c.lpmm_entity_extract?.model_list||[],c.lpmm_rdf_build?.model_list||[],c.lpmm_qa?.model_list||[]].some(Ct=>Ct.includes(ge)):!1;return h?o.jsx(gn,{className:"h-full",children:o.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:o.jsx("div",{className:"flex items-center justify-center h-64",children:o.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):o.jsx(gn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"模型管理与分配"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"添加模型并为模型分配功能"})]}),o.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[o.jsxs(de,{onClick:Pe,disabled:g||y||!S||j,size:"sm",variant:"outline",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[o.jsx(Gy,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),g?"保存中...":y?"自动保存中...":S?"保存配置":"已保存"]}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsxs(de,{disabled:g||y||j,size:"sm",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[o.jsx(Aj,{className:"mr-2 h-4 w-4"}),j?"重启中...":S?"保存并重启":"重启麦麦"]})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认重启麦麦?"}),o.jsx(_n,{className:"space-y-3",asChild:!0,children:o.jsxs("div",{children:[o.jsx("p",{children:S?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),o.jsxs(ga,{className:"border-yellow-500/50 bg-yellow-500/10",children:[o.jsx(Oa,{className:"h-4 w-4 text-yellow-600"}),o.jsxs(xa,{className:"text-yellow-900 dark:text-yellow-100",children:[o.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",o.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",o.jsxs(Dr,{children:[o.jsx(Of,{asChild:!0,children:o.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[o.jsx(Wy,{className:"h-3 w-3"}),"如何结束程序?"]})}),o.jsxs(Sr,{className:"max-w-2xl",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"如何结束使用重启功能后的麦麦程序"}),o.jsx(ss,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),o.jsxs(ja,{defaultValue:"windows",className:"w-full",children:[o.jsxs(Wi,{className:"grid w-full grid-cols-3",children:[o.jsx(Lt,{value:"windows",children:"Windows"}),o.jsx(Lt,{value:"macos",children:"macOS"}),o.jsx(Lt,{value:"linux",children:"Linux"})]}),o.jsxs(un,{value:"windows",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),o.jsxs("li",{children:['在"进程"或"详细信息"标签页中找到 ',o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),o.jsx("li",{children:'右键点击并选择"结束任务"'})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),o.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),o.jsxs(un,{value:"macos",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"}),' 打开 Spotlight,搜索"活动监视器"']}),o.jsxs("li",{children:["在进程列表中找到 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),o.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]})]}),o.jsxs(un,{value:"linux",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),o.jsx("p",{children:'pkill -9 -f "bot.py"'}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["在终端输入 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),o.jsx(ws,{children:o.jsx(Gj,{asChild:!0,children:o.jsx(de,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:S?Fe:zn,children:S?"保存并重启":"确认重启"})]})]})]})]})]}),o.jsxs(ga,{children:[o.jsx(Oa,{className:"h-4 w-4"}),o.jsxs(xa,{children:["配置更新后需要",o.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),o.jsxs(ga,{className:"hidden lg:flex border-primary/30 bg-primary/5 cursor-pointer hover:bg-primary/10 transition-colors",onClick:st,children:[o.jsx(Yee,{className:"h-4 w-4 text-primary"}),o.jsxs(xa,{className:"flex items-center justify-between",children:[o.jsxs("span",{children:[o.jsx("strong",{className:"text-primary",children:"新手引导:"}),"不知道如何配置模型?点击这里开始学习如何为麦麦的组件分配模型。"]}),o.jsx(de,{variant:"outline",size:"sm",className:"ml-4 shrink-0",children:"开始引导"})]})]}),o.jsxs(ja,{defaultValue:"models",className:"w-full",children:[o.jsxs(Wi,{className:"grid w-full max-w-full sm:max-w-md grid-cols-2",children:[o.jsx(Lt,{value:"models",children:"添加模型"}),o.jsx(Lt,{value:"tasks","data-tour":"tasks-tab-trigger",children:"为模型分配功能"})]}),o.jsxs(un,{value:"models",className:"space-y-4 mt-0",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-2",children:[o.jsx("p",{className:"text-sm text-muted-foreground",children:"配置可用的模型列表"}),o.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[J.size>0&&o.jsxs(de,{onClick:Wr,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[o.jsx(Sn,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",J.size,")"]}),o.jsxs(de,{onClick:()=>it(null,null),size:"sm",variant:"outline",className:"w-full sm:w-auto","data-tour":"add-model-button",children:[o.jsx(Ls,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加模型"]})]})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2",children:[o.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[o.jsx(Ni,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(ze,{placeholder:"搜索模型名称、标识符或提供商...",value:F,onChange:ge=>Y(ge.target.value),className:"pl-9"})]}),F&&o.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",cr.length," 个结果"]})]}),o.jsx("div",{className:"md:hidden space-y-3",children:gs.length===0?o.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:F?"未找到匹配的模型":"暂无模型配置"}):gs.map((ge,Le)=>{const Ct=t.findIndex(Fr=>Fr===ge),vn=js(ge.name);return o.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-start justify-between gap-2",children:[o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[o.jsx("h3",{className:"font-semibold text-base",children:ge.name}),o.jsx(Xn,{variant:vn?"default":"secondary",className:vn?"bg-green-600 hover:bg-green-700":"",children:vn?"已使用":"未使用"})]}),o.jsx("p",{className:"text-xs text-muted-foreground break-all",title:ge.model_identifier,children:ge.model_identifier})]}),o.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[o.jsxs(de,{variant:"default",size:"sm",onClick:()=>it(ge,Ct),children:[o.jsx(Yu,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),o.jsxs(de,{size:"sm",onClick:()=>Kt(Ct),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Sn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"提供商"}),o.jsx("p",{className:"font-medium",children:ge.api_provider})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"强制流式"}),o.jsx("p",{className:"font-medium",children:ge.force_stream_mode?"是":"否"})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"输入价格"}),o.jsxs("p",{className:"font-medium",children:["¥",ge.price_in,"/M"]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"输出价格"}),o.jsxs("p",{className:"font-medium",children:["¥",ge.price_out,"/M"]})]})]})]},Le)})}),o.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:o.jsx("div",{className:"overflow-x-auto",children:o.jsxs(_f,{children:[o.jsx(Af,{children:o.jsxs(Is,{children:[o.jsx(pn,{className:"w-12",children:o.jsx(Oi,{checked:J.size===cr.length&&cr.length>0,onCheckedChange:Ur})}),o.jsx(pn,{className:"w-24",children:"使用状态"}),o.jsx(pn,{children:"模型名称"}),o.jsx(pn,{children:"模型标识符"}),o.jsx(pn,{children:"提供商"}),o.jsx(pn,{className:"text-right",children:"输入价格"}),o.jsx(pn,{className:"text-right",children:"输出价格"}),o.jsx(pn,{className:"text-center",children:"强制流式"}),o.jsx(pn,{className:"text-right",children:"操作"})]})}),o.jsx(Mf,{children:gs.length===0?o.jsx(Is,{children:o.jsx(Gt,{colSpan:9,className:"text-center text-muted-foreground py-8",children:F?"未找到匹配的模型":"暂无模型配置"})}):gs.map((ge,Le)=>{const Ct=t.findIndex(Fr=>Fr===ge),vn=js(ge.name);return o.jsxs(Is,{children:[o.jsx(Gt,{children:o.jsx(Oi,{checked:J.has(Ct),onCheckedChange:()=>xr(Ct)})}),o.jsx(Gt,{children:o.jsx(Xn,{variant:vn?"default":"secondary",className:vn?"bg-green-600 hover:bg-green-700":"",children:vn?"已使用":"未使用"})}),o.jsx(Gt,{className:"font-medium",children:ge.name}),o.jsx(Gt,{className:"max-w-xs truncate",title:ge.model_identifier,children:ge.model_identifier}),o.jsx(Gt,{children:ge.api_provider}),o.jsxs(Gt,{className:"text-right",children:["¥",ge.price_in,"/M"]}),o.jsxs(Gt,{className:"text-right",children:["¥",ge.price_out,"/M"]}),o.jsx(Gt,{className:"text-center",children:ge.force_stream_mode?"是":"否"}),o.jsx(Gt,{className:"text-right",children:o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsxs(de,{variant:"default",size:"sm",onClick:()=>it(ge,Ct),children:[o.jsx(Yu,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),o.jsxs(de,{size:"sm",onClick:()=>Kt(Ct),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Sn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},Le)})})]})})}),cr.length>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{htmlFor:"page-size-model",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:V.toString(),onValueChange:ge=>{ee(parseInt(ge)),I(1),X(new Set)},children:[o.jsx($t,{id:"page-size-model",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"10",children:"10"}),o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"50",children:"50"}),o.jsx(De,{value:"100",children:"100"})]})]}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(G-1)*V+1," 到"," ",Math.min(G*V,cr.length)," 条,共 ",cr.length," 条"]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(de,{variant:"outline",size:"sm",onClick:()=>I(1),disabled:G===1,className:"hidden sm:flex",children:o.jsx(Ap,{className:"h-4 w-4"})}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>I(ge=>Math.max(1,ge-1)),disabled:G===1,children:[o.jsx(vd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{type:"number",value:ne,onChange:ge=>W(ge.target.value),onKeyDown:ge=>ge.key==="Enter"&&xs(),placeholder:G.toString(),className:"w-16 h-8 text-center",min:1,max:nr}),o.jsx(de,{variant:"outline",size:"sm",onClick:xs,disabled:!ne,className:"h-8",children:"跳转"})]}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>I(ge=>ge+1),disabled:G>=nr,children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(yd,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(de,{variant:"outline",size:"sm",onClick:()=>I(nr),disabled:G>=nr,className:"hidden sm:flex",children:o.jsx(Mp,{className:"h-4 w-4"})})]})]})]}),o.jsxs(un,{value:"tasks",className:"space-y-6 mt-0",children:[o.jsx("p",{className:"text-sm text-muted-foreground",children:"为不同的任务配置使用的模型和参数"}),c&&o.jsxs("div",{className:"grid gap-4 sm:gap-6",children:[o.jsx(Fa,{title:"组件模型 (utils)",description:"用于表情包、取名、关系、情绪变化等组件",taskConfig:c.utils,modelNames:a,onChange:(ge,Le)=>In("utils",ge,Le),dataTour:"task-model-select"}),o.jsx(Fa,{title:"组件小模型 (utils_small)",description:"消耗量较大的组件,建议使用速度较快的小模型",taskConfig:c.utils_small,modelNames:a,onChange:(ge,Le)=>In("utils_small",ge,Le)}),o.jsx(Fa,{title:"工具调用模型 (tool_use)",description:"需要使用支持工具调用的模型",taskConfig:c.tool_use,modelNames:a,onChange:(ge,Le)=>In("tool_use",ge,Le)}),o.jsx(Fa,{title:"首要回复模型 (replyer)",description:"用于表达器和表达方式学习",taskConfig:c.replyer,modelNames:a,onChange:(ge,Le)=>In("replyer",ge,Le)}),o.jsx(Fa,{title:"决策模型 (planner)",description:"负责决定麦麦该什么时候回复",taskConfig:c.planner,modelNames:a,onChange:(ge,Le)=>In("planner",ge,Le)}),o.jsx(Fa,{title:"图像识别模型 (vlm)",description:"视觉语言模型",taskConfig:c.vlm,modelNames:a,onChange:(ge,Le)=>In("vlm",ge,Le),hideTemperature:!0}),o.jsx(Fa,{title:"语音识别模型 (voice)",description:"语音转文字",taskConfig:c.voice,modelNames:a,onChange:(ge,Le)=>In("voice",ge,Le),hideTemperature:!0,hideMaxTokens:!0}),o.jsx(Fa,{title:"嵌入模型 (embedding)",description:"用于向量化",taskConfig:c.embedding,modelNames:a,onChange:(ge,Le)=>In("embedding",ge,Le),hideTemperature:!0,hideMaxTokens:!0}),o.jsxs("div",{className:"space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库模型"}),o.jsx(Fa,{title:"实体提取模型 (lpmm_entity_extract)",description:"从文本中提取实体",taskConfig:c.lpmm_entity_extract,modelNames:a,onChange:(ge,Le)=>In("lpmm_entity_extract",ge,Le)}),o.jsx(Fa,{title:"RDF 构建模型 (lpmm_rdf_build)",description:"构建知识图谱",taskConfig:c.lpmm_rdf_build,modelNames:a,onChange:(ge,Le)=>In("lpmm_rdf_build",ge,Le)}),o.jsx(Fa,{title:"问答模型 (lpmm_qa)",description:"知识库问答",taskConfig:c.lpmm_qa,modelNames:a,onChange:(ge,Le)=>In("lpmm_qa",ge,Le)})]})]})]})]}),o.jsx(Dr,{open:_,onOpenChange:nn,children:o.jsxs(Sr,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"model-dialog",preventOutsideClose:It.isRunning,children:[o.jsxs(kr,{children:[o.jsx(Or,{children:B!==null?"编辑模型":"添加模型"}),o.jsx(ss,{children:"配置模型的基本信息和参数"})]}),o.jsxs("div",{className:"grid gap-4 py-4",children:[o.jsxs("div",{className:"grid gap-2","data-tour":"model-name-input",children:[o.jsx(he,{htmlFor:"model_name",children:"模型名称 *"}),o.jsx(ze,{id:"model_name",value:L?.name||"",onChange:ge=>P(Le=>Le?{...Le,name:ge.target.value}:null),placeholder:"例如: qwen3-30b"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"用于在任务配置中引用此模型"})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"model-provider-select",children:[o.jsx(he,{htmlFor:"api_provider",children:"API 提供商 *"}),o.jsxs(Vt,{value:L?.api_provider||"",onValueChange:ge=>{P(Le=>Le?{...Le,api_provider:ge}:null),re([]),Ye(null)},children:[o.jsx($t,{id:"api_provider",children:o.jsx(Ut,{placeholder:"选择提供商"})}),o.jsx(Ht,{children:n.map(ge=>o.jsx(De,{value:ge,children:ge},ge))})]})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"model-identifier-input",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{htmlFor:"model_identifier",children:"模型标识符 *"}),Ve?.modelFetcher&&o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Xn,{variant:"secondary",className:"text-xs",children:Ve.display_name}),o.jsx(de,{variant:"ghost",size:"sm",className:"h-6 px-2",onClick:()=>L?.api_provider&&Mt(L.api_provider,!0),disabled:oe,children:oe?o.jsx(Po,{className:"h-3 w-3 animate-spin"}):o.jsx(Ps,{className:"h-3 w-3"})})]})]}),Ve?.modelFetcher?o.jsxs(zo,{open:Je,onOpenChange:Oe,children:[o.jsx(Io,{asChild:!0,children:o.jsxs(de,{variant:"outline",role:"combobox","aria-expanded":Je,className:"w-full justify-between font-normal",disabled:oe||!!We,children:[oe?o.jsxs("span",{className:"flex items-center gap-2 text-muted-foreground",children:[o.jsx(Po,{className:"h-4 w-4 animate-spin"}),"正在获取模型列表..."]}):We?o.jsx("span",{className:"text-muted-foreground text-sm",children:"点击下方输入框手动填写"}):L?.model_identifier?o.jsx("span",{className:"truncate",children:L.model_identifier}):o.jsx("span",{className:"text-muted-foreground",children:"搜索或选择模型..."}),o.jsx(Mj,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),o.jsx(Xa,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:o.jsxs(Ob,{children:[o.jsx(jb,{placeholder:"搜索模型..."}),o.jsx(gn,{className:"h-[300px]",children:o.jsxs(Nb,{className:"max-h-none overflow-visible",children:[o.jsx(Cb,{children:We?o.jsxs("div",{className:"py-4 px-2 text-center space-y-2",children:[o.jsx("p",{className:"text-sm text-destructive",children:We}),!We.includes("API Key")&&o.jsx(de,{variant:"link",size:"sm",onClick:()=>L?.api_provider&&Mt(L.api_provider,!0),children:"重试"})]}):"未找到匹配的模型"}),o.jsx(ap,{heading:"可用模型",children:se.map(ge=>o.jsxs(op,{value:ge.id,onSelect:()=>{P(Le=>Le?{...Le,model_identifier:ge.id}:null),Oe(!1)},children:[o.jsx(Ro,{className:`mr-2 h-4 w-4 ${L?.model_identifier===ge.id?"opacity-100":"opacity-0"}`}),o.jsxs("div",{className:"flex flex-col",children:[o.jsx("span",{children:ge.id}),ge.name!==ge.id&&o.jsx("span",{className:"text-xs text-muted-foreground",children:ge.name})]})]},ge.id))}),o.jsx(ap,{heading:"手动输入",children:o.jsxs(op,{value:"__manual_input__",onSelect:()=>{Oe(!1)},children:[o.jsx(Yu,{className:"mr-2 h-4 w-4"}),"手动输入模型标识符..."]})})]})})]})})]}):o.jsx(ze,{id:"model_identifier",value:L?.model_identifier||"",onChange:ge=>P(Le=>Le?{...Le,model_identifier:ge.target.value}:null),placeholder:"Qwen/Qwen3-30B-A3B-Instruct-2507"}),We&&Ve?.modelFetcher&&o.jsxs(ga,{variant:"destructive",className:"mt-2 py-2",children:[o.jsx(Oa,{className:"h-4 w-4"}),o.jsx(xa,{className:"text-xs",children:We})]}),Ve?.modelFetcher&&o.jsx(ze,{value:L?.model_identifier||"",onChange:ge=>P(Le=>Le?{...Le,model_identifier:ge.target.value}:null),placeholder:"或手动输入模型标识符",className:"mt-2"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:We?'请手动输入模型标识符,或前往"模型提供商配置"检查 API Key':Ve?.modelFetcher?`已识别为 ${Ve.display_name},支持自动获取模型列表`:"API 提供商提供的模型 ID"})]}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"price_in",children:"输入价格 (¥/M token)"}),o.jsx(ze,{id:"price_in",type:"number",step:"0.1",min:"0",value:L?.price_in??"",onChange:ge=>{const Le=ge.target.value===""?null:parseFloat(ge.target.value);P(Ct=>Ct?{...Ct,price_in:Le}:null)},placeholder:"默认: 0"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"price_out",children:"输出价格 (¥/M token)"}),o.jsx(ze,{id:"price_out",type:"number",step:"0.1",min:"0",value:L?.price_out??"",onChange:ge=>{const Le=ge.target.value===""?null:parseFloat(ge.target.value);P(Ct=>Ct?{...Ct,price_out:Le}:null)},placeholder:"默认: 0"})]})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"force_stream_mode",checked:L?.force_stream_mode||!1,onCheckedChange:ge=>P(Le=>Le?{...Le,force_stream_mode:ge}:null)}),o.jsx(he,{htmlFor:"force_stream_mode",className:"cursor-pointer",children:"强制流式输出模式"})]})]}),o.jsxs(ws,{children:[o.jsx(de,{variant:"outline",onClick:()=>A(!1),"data-tour":"model-cancel-button",children:"取消"}),o.jsx(de,{onClick:ot,"data-tour":"model-save-button",children:"保存"})]})]})}),o.jsx(Dn,{open:U,onOpenChange:te,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除模型 "',z!==null?t[z]?.name:"",'" 吗? 此操作无法撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:pt,children:"删除"})]})]})}),o.jsx(Dn,{open:R,onOpenChange:ie,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认批量删除"}),o.jsxs(_n,{children:["确定要删除选中的 ",J.size," 个模型吗? 此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:vr,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),T&&o.jsx(Kj,{onRestartComplete:rt,onRestartFailed:tn})]})})}function Fa({title:t,description:e,taskConfig:n,modelNames:r,onChange:s,hideTemperature:i=!1,hideMaxTokens:a=!1,dataTour:l}){const c=d=>{s("model_list",d)};return o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"font-semibold text-base sm:text-lg",children:t}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:e})]}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2","data-tour":l,children:[o.jsx(he,{children:"模型列表"}),o.jsx(qve,{options:r.map(d=>({label:d,value:d})),selected:n.model_list||[],onChange:c,placeholder:"选择模型...",emptyText:"暂无可用模型"})]}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[!i&&o.jsxs("div",{className:"grid gap-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{children:"温度"}),o.jsx(ze,{type:"number",step:"0.1",min:"0",max:"1",value:n.temperature??.3,onChange:d=>{const h=parseFloat(d.target.value);!isNaN(h)&&h>=0&&h<=1&&s("temperature",h)},className:"w-20 h-8 text-sm"})]}),o.jsx(Bp,{value:[n.temperature??.3],onValueChange:d=>s("temperature",d[0]),min:0,max:1,step:.1,className:"w-full"})]}),!a&&o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"最大 Token"}),o.jsx(ze,{type:"number",step:"1",min:"1",value:n.max_tokens??1024,onChange:d=>s("max_tokens",parseInt(d.target.value))})]})]})]})]})}const Pb="/api/webui/config";async function Qve(){const e=await(await St(`${Pb}/adapter-config/path`)).json();return!e.success||!e.path?null:{path:e.path,lastModified:e.lastModified}}async function pM(t){const n=await(await St(`${Pb}/adapter-config/path`,{method:"POST",headers:Dt(),body:JSON.stringify({path:t})})).json();if(!n.success)throw new Error(n.message||"保存路径失败")}async function gM(t){const n=await(await St(`${Pb}/adapter-config?path=${encodeURIComponent(t)}`)).json();if(!n.success)throw new Error("读取配置文件失败");return n.content}async function xM(t,e){const r=await(await St(`${Pb}/adapter-config`,{method:"POST",headers:Dt(),body:JSON.stringify({path:t,content:e})})).json();if(!r.success)throw new Error(r.message||"保存配置失败")}const Fi={inner:{version:"0.1.2"},nickname:{nickname:""},napcat_server:{host:"localhost",port:8095,token:"",heartbeat_interval:30},maibot_server:{host:"localhost",port:8e3},chat:{group_list_type:"whitelist",group_list:[],private_list_type:"whitelist",private_list:[],ban_user_id:[],ban_qq_bot:!1,enable_poke:!0},voice:{use_tts:!1},debug:{level:"INFO"}},CS={oneclick:{name:"一键包",description:"使用一键包部署的适配器配置",path:"../MaiBot-Napcat-Adapter/config.toml",icon:Gh},docker:{name:"Docker",description:"Docker Compose 部署的适配器配置",path:"/MaiMBot/adapters-config/config.toml",icon:Kee}};function Vve(){const[t,e]=b.useState("upload"),[n,r]=b.useState(null),[s,i]=b.useState(""),[a,l]=b.useState(""),[c,d]=b.useState("oneclick"),[h,m]=b.useState(""),[g,x]=b.useState(!1),[y,w]=b.useState(!1),[S,k]=b.useState(!1),[j,N]=b.useState(!1),[T,E]=b.useState(null),_=b.useRef(null),{toast:A}=as(),L=b.useRef(null),P=W=>{if(!W.trim())return{valid:!1,error:"路径不能为空"};if(!W.toLowerCase().endsWith(".toml"))return{valid:!1,error:"文件必须是 .toml 格式"};const se=/^([a-zA-Z]:\\|\\\\[^\\]+\\[^\\]+\\).+\.toml$/i,re=/^(\/|~\/).+\.toml$/i,oe=/^(\.{1,2}[\\/]|[^:\\/]).+\.toml$/i,Te=se.test(W),We=re.test(W),Ye=oe.test(W);return!Te&&!We&&!Ye?{valid:!1,error:"路径格式错误"}:/[<>"|?*\x00-\x1F]/.test(W)?{valid:!1,error:"路径包含非法字符"}:{valid:!0,error:""}},B=W=>{if(l(W),W.trim()){const se=P(W);m(se.error)}else m("")},$=b.useCallback(async W=>{const se=CS[W];w(!0);try{const re=await gM(se.path),oe=G(re);r(oe),d(W),l(se.path),await pM(se.path),A({title:"加载成功",description:`已从${se.name}预设加载配置`})}catch(re){console.error("加载预设配置失败:",re),A({title:"加载失败",description:re instanceof Error?re.message:"无法读取预设配置文件",variant:"destructive"})}finally{w(!1)}},[A]),U=b.useCallback(async W=>{const se=P(W);if(!se.valid){m(se.error),A({title:"路径无效",description:se.error,variant:"destructive"});return}m(""),w(!0);try{const re=await gM(W),oe=G(re);r(oe),l(W),await pM(W),A({title:"加载成功",description:"已从配置文件加载"})}catch(re){console.error("加载配置失败:",re),A({title:"加载失败",description:re instanceof Error?re.message:"无法读取配置文件",variant:"destructive"})}finally{w(!1)}},[A]);b.useEffect(()=>{(async()=>{try{const se=await Qve();if(se&&se.path){l(se.path);const re=Object.entries(CS).find(([,oe])=>oe.path===se.path);re?(e("preset"),d(re[0]),await $(re[0])):(e("path"),await U(se.path))}}catch(se){console.error("加载保存的路径失败:",se)}})()},[U,$]);const te=b.useCallback(W=>{t!=="path"&&t!=="preset"||!a||(L.current&&clearTimeout(L.current),L.current=setTimeout(async()=>{x(!0);try{const se=I(W);await xM(a,se),A({title:"自动保存成功",description:"配置已保存到文件"})}catch(se){console.error("自动保存失败:",se),A({title:"自动保存失败",description:se instanceof Error?se.message:"保存配置失败",variant:"destructive"})}finally{x(!1)}},1e3))},[t,a,A]),z=async()=>{if(!n||!a)return;const W=P(a);if(!W.valid){A({title:"保存失败",description:W.error,variant:"destructive"});return}x(!0);try{const se=I(n);await xM(a,se),A({title:"保存成功",description:"配置已保存到文件"})}catch(se){console.error("保存失败:",se),A({title:"保存失败",description:se instanceof Error?se.message:"保存配置失败",variant:"destructive"})}finally{x(!1)}},Q=async()=>{a&&await U(a)},F=W=>{if(W!==t){if(n){E(W),k(!0);return}Y(W)}},Y=W=>{r(null),i(""),m(""),e(W),W==="preset"&&$("oneclick"),A({title:"已切换模式",description:{upload:"现在可以上传配置文件",path:"现在可以指定配置文件路径",preset:"现在可以使用预设配置"}[W]})},J=()=>{T&&(Y(T),E(null)),k(!1)},X=()=>{if(n){N(!0);return}R()},R=()=>{l(""),r(null),m(""),A({title:"已清空",description:"路径和配置已清空"})},ie=()=>{R(),N(!1)},G=W=>{const se=JSON.parse(JSON.stringify(Fi)),re=W.split(` -`);let oe="";for(const Te of re){const We=Te.trim();if(!We||We.startsWith("#"))continue;const Ye=We.match(/^\[(\w+)\]/);if(Ye){oe=Ye[1];continue}const Je=We.match(/^(\w+)\s*=\s*(.+)$/);if(Je&&oe){const[,Oe,Ve]=Je;let Ue=Ve.trim();const He=Ue.match(/^("[^"]*")/);if(He)Ue=He[1];else{const xt=Ue.indexOf("#");xt!==-1&&(Ue=Ue.substring(0,xt).trim())}let Ot;if(Ue==="true")Ot=!0;else if(Ue==="false")Ot=!1;else if(Ue.startsWith("[")&&Ue.endsWith("]")){const xt=Ue.slice(1,-1).trim();if(xt){const kn=xt.split(",").map(Yt=>{const _t=Yt.trim();return isNaN(Number(_t))?_t.replace(/"/g,""):Number(_t)}),It=typeof kn[0];Ot=kn.every(Yt=>typeof Yt===It)?kn:kn.filter(Yt=>typeof Yt=="number")}else Ot=[]}else Ue.startsWith('"')&&Ue.endsWith('"')?Ot=Ue.slice(1,-1):isNaN(Number(Ue))?Ot=Ue.replace(/"/g,""):Ot=Number(Ue);if(oe in se){const xt=se[oe];xt[Oe]=Ot}}}return se},I=W=>{const se=[],re=(oe,Te)=>oe===""||oe===null||oe===void 0?Te:oe;return se.push("[inner]"),se.push(`version = "${re(W.inner.version,Fi.inner.version)}" # 版本号`),se.push("# 请勿修改版本号,除非你知道自己在做什么"),se.push(""),se.push("[nickname] # 现在没用"),se.push(`nickname = "${re(W.nickname.nickname,Fi.nickname.nickname)}"`),se.push(""),se.push("[napcat_server] # Napcat连接的ws服务设置"),se.push(`host = "${re(W.napcat_server.host,Fi.napcat_server.host)}" # Napcat设定的主机地址`),se.push(`port = ${re(W.napcat_server.port||0,Fi.napcat_server.port)} # Napcat设定的端口`),se.push(`token = "${re(W.napcat_server.token,Fi.napcat_server.token)}" # Napcat设定的访问令牌,若无则留空`),se.push(`heartbeat_interval = ${re(W.napcat_server.heartbeat_interval||0,Fi.napcat_server.heartbeat_interval)} # 与Napcat设置的心跳相同(按秒计)`),se.push(""),se.push("[maibot_server] # 连接麦麦的ws服务设置"),se.push(`host = "${re(W.maibot_server.host,Fi.maibot_server.host)}" # 麦麦在.env文件中设置的主机地址,即HOST字段`),se.push(`port = ${re(W.maibot_server.port||0,Fi.maibot_server.port)} # 麦麦在.env文件中设置的端口,即PORT字段`),se.push(""),se.push("[chat] # 黑白名单功能"),se.push(`group_list_type = "${re(W.chat.group_list_type,Fi.chat.group_list_type)}" # 群组名单类型,可选为:whitelist, blacklist`),se.push(`group_list = [${W.chat.group_list.join(", ")}] # 群组名单`),se.push("# 当group_list_type为whitelist时,只有群组名单中的群组可以聊天"),se.push("# 当group_list_type为blacklist时,群组名单中的任何群组无法聊天"),se.push(`private_list_type = "${re(W.chat.private_list_type,Fi.chat.private_list_type)}" # 私聊名单类型,可选为:whitelist, blacklist`),se.push(`private_list = [${W.chat.private_list.join(", ")}] # 私聊名单`),se.push("# 当private_list_type为whitelist时,只有私聊名单中的用户可以聊天"),se.push("# 当private_list_type为blacklist时,私聊名单中的任何用户无法聊天"),se.push(`ban_user_id = [${W.chat.ban_user_id.join(", ")}] # 全局禁止名单(全局禁止名单中的用户无法进行任何聊天)`),se.push(`ban_qq_bot = ${W.chat.ban_qq_bot} # 是否屏蔽QQ官方机器人`),se.push(`enable_poke = ${W.chat.enable_poke} # 是否启用戳一戳功能`),se.push(""),se.push("[voice] # 发送语音设置"),se.push(`use_tts = ${W.voice.use_tts} # 是否使用tts语音(请确保你配置了tts并有对应的adapter)`),se.push(""),se.push("[debug]"),se.push(`level = "${re(W.debug.level,Fi.debug.level)}" # 日志等级(DEBUG, INFO, WARNING, ERROR, CRITICAL)`),se.join(` -`)},V=W=>{const se=W.target.files?.[0];if(!se)return;const re=new FileReader;re.onload=oe=>{try{const Te=oe.target?.result,We=G(Te);r(We),i(se.name),A({title:"上传成功",description:`已加载配置文件:${se.name}`})}catch(Te){console.error("解析配置文件失败:",Te),A({title:"解析失败",description:"配置文件格式错误,请检查文件内容",variant:"destructive"})}},re.readAsText(se)},ee=()=>{if(!n)return;const W=I(n),se=new Blob([W],{type:"text/plain;charset=utf-8"}),re=URL.createObjectURL(se),oe=document.createElement("a");oe.href=re,oe.download=s||"config.toml",document.body.appendChild(oe),oe.click(),document.body.removeChild(oe),URL.revokeObjectURL(re),A({title:"下载成功",description:"配置文件已下载,请手动覆盖并重启适配器"})},ne=()=>{r(JSON.parse(JSON.stringify(Fi))),i("config.toml"),A({title:"已加载默认配置",description:"可以开始编辑配置"})};return o.jsx(gn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦适配器配置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的 QQ 适配器的配置文件"})]})}),o.jsxs("div",{className:"flex items-start gap-2 p-3 rounded-lg border border-amber-500/50 bg-amber-500/10 text-amber-700 dark:text-amber-400",children:[o.jsx(Uc,{className:"h-4 w-4 mt-0.5 flex-shrink-0"}),o.jsx("p",{className:"text-sm",children:"适配器配置保存之后使用 WebUI 的重启功能适配器并不会重启,需要手动重启适配器。"})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"工作模式"}),o.jsx(ts,{children:"选择配置文件的管理方式"})]}),o.jsxs(Gn,{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3 md:gap-4",children:[o.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${t==="preset"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>F("preset"),children:o.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[o.jsx(Gh,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"min-w-0",children:[o.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"预设模式"}),o.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"使用预设的部署配置"})]})]})}),o.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${t==="upload"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>F("upload"),children:o.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[o.jsx(b9,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"min-w-0",children:[o.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"上传文件模式"}),o.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"上传配置文件,编辑后下载并手动覆盖"})]})]})}),o.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${t==="path"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>F("path"),children:o.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[o.jsx(Zee,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"min-w-0",children:[o.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"指定路径模式"}),o.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"指定配置文件路径,自动加载和保存"})]})]})})]}),t==="preset"&&o.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[o.jsx(he,{className:"text-sm md:text-base",children:"选择部署方式"}),o.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:Object.entries(CS).map(([W,se])=>{const re=se.icon,oe=c===W;return o.jsx("div",{className:`border-2 rounded-lg p-3 cursor-pointer transition-all ${oe?"border-primary bg-primary/5":"border-muted hover:border-primary/50"}`,onClick:()=>{d(W),$(W)},children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(re,{className:"h-5 w-5 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"min-w-0 flex-1",children:[o.jsx("h4",{className:"font-semibold text-sm",children:se.name}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:se.description}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1 font-mono break-all",children:se.path})]})]})},W)})})]}),t==="path"&&o.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"config-path",className:"text-sm md:text-base",children:"配置文件路径"}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[o.jsxs("div",{className:"flex-1 space-y-1",children:[o.jsx(ze,{id:"config-path",value:a,onChange:W=>B(W.target.value),placeholder:"例: C:\\Adapter\\config.toml",className:`text-sm ${h?"border-destructive":""}`}),h&&o.jsx("p",{className:"text-xs text-destructive",children:h})]}),o.jsx(de,{onClick:()=>U(a),disabled:y||!a||!!h,className:"w-full sm:w-auto",children:y?o.jsxs(o.Fragment,{children:[o.jsx(Ps,{className:"h-4 w-4 animate-spin mr-2"}),o.jsx("span",{className:"sm:hidden",children:"加载中..."})]}):o.jsxs(o.Fragment,{children:[o.jsx("span",{className:"sm:hidden",children:"加载配置"}),o.jsx("span",{className:"hidden sm:inline",children:"加载"})]})})]})]}),o.jsxs("details",{className:"rounded-lg bg-muted/50 p-3 group",children:[o.jsxs("summary",{className:"text-xs font-medium cursor-pointer select-none list-none flex items-center justify-between",children:[o.jsx("span",{children:"路径格式说明"}),o.jsx("svg",{className:"h-4 w-4 transition-transform group-open:rotate-180",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:o.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),o.jsxs("div",{className:"mt-2 space-y-2 text-xs text-muted-foreground",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx("div",{className:"flex items-center gap-2",children:o.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Windows"})}),o.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[o.jsx("div",{children:"C:\\Adapter\\config.toml"}),o.jsx("div",{className:"hidden sm:block",children:"D:\\MaiBot\\adapter\\config.toml"}),o.jsx("div",{className:"hidden sm:block",children:"\\\\server\\share\\config.toml"})]})]}),o.jsxs("div",{className:"space-y-1",children:[o.jsx("div",{className:"flex items-center gap-2",children:o.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Linux"})}),o.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[o.jsx("div",{children:"/opt/adapter/config.toml"}),o.jsx("div",{className:"hidden sm:block",children:"/home/user/adapter/config.toml"}),o.jsx("div",{className:"hidden sm:block",children:"~/adapter/config.toml"})]})]}),o.jsx("p",{className:"pt-1 border-t text-[10px] md:text-xs",children:"💡 配置会自动保存到指定文件,修改后 1 秒自动保存"})]})]})]})]})]}),o.jsxs(ga,{children:[o.jsx(Oa,{className:"h-4 w-4"}),o.jsx(xa,{children:t==="preset"?o.jsxs(o.Fragment,{children:[o.jsx("strong",{children:"预设模式:"}),"选择预设的部署方式,配置会自动加载,修改后 1 秒自动保存",g&&" (正在保存...)"]}):t==="upload"?o.jsxs(o.Fragment,{children:[o.jsx("strong",{children:"上传文件模式:"}),"上传配置文件 → 在线编辑 → 下载文件 → 手动覆盖并重启适配器"]}):o.jsxs(o.Fragment,{children:[o.jsx("strong",{children:"指定路径模式:"}),"指定配置文件路径后,配置会自动加载,修改后 1 秒自动保存",g&&" (正在保存...)"]})})]}),t==="upload"&&!n&&o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 w-full",children:[o.jsx("input",{ref:_,type:"file",accept:".toml",className:"hidden",onChange:V}),o.jsxs(de,{onClick:()=>_.current?.click(),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[o.jsx(b9,{className:"mr-2 h-4 w-4"}),"上传配置"]}),o.jsxs(de,{onClick:ne,size:"sm",className:"w-full sm:w-auto",children:[o.jsx(zl,{className:"mr-2 h-4 w-4"}),"使用默认配置"]})]}),t==="upload"&&n&&o.jsx("div",{className:"flex gap-2",children:o.jsxs(de,{onClick:ee,size:"sm",className:"w-full sm:w-auto",children:[o.jsx(Ku,{className:"mr-2 h-4 w-4"}),"下载配置"]})}),(t==="preset"||t==="path")&&n&&o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[o.jsxs(de,{onClick:z,size:"sm",disabled:g||!!h,className:"w-full sm:w-auto",children:[o.jsx(Gy,{className:"mr-2 h-4 w-4"}),g?"保存中...":"立即保存"]}),o.jsxs(de,{onClick:Q,size:"sm",variant:"outline",disabled:y,className:"w-full sm:w-auto",children:[o.jsx(Ps,{className:`mr-2 h-4 w-4 ${y?"animate-spin":""}`}),"刷新"]}),t==="path"&&o.jsxs(de,{onClick:X,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[o.jsx(Sn,{className:"mr-2 h-4 w-4"}),"清空路径"]})]}),n?o.jsxs(ja,{defaultValue:"napcat",className:"w-full",children:[o.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:o.jsxs(Wi,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5",children:[o.jsxs(Lt,{value:"napcat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[o.jsx("span",{className:"hidden sm:inline",children:"Napcat 连接"}),o.jsx("span",{className:"sm:hidden",children:"Napcat"})]}),o.jsxs(Lt,{value:"maibot",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[o.jsx("span",{className:"hidden sm:inline",children:"麦麦连接"}),o.jsx("span",{className:"sm:hidden",children:"麦麦"})]}),o.jsxs(Lt,{value:"chat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[o.jsx("span",{className:"hidden sm:inline",children:"聊天控制"}),o.jsx("span",{className:"sm:hidden",children:"聊天"})]}),o.jsxs(Lt,{value:"voice",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[o.jsx("span",{className:"hidden sm:inline",children:"语音设置"}),o.jsx("span",{className:"sm:hidden",children:"语音"})]}),o.jsx(Lt,{value:"debug",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:"调试"})]})}),o.jsx(un,{value:"napcat",className:"space-y-4",children:o.jsx(Uve,{config:n,onChange:W=>{r(W),te(W)}})}),o.jsx(un,{value:"maibot",className:"space-y-4",children:o.jsx(Wve,{config:n,onChange:W=>{r(W),te(W)}})}),o.jsx(un,{value:"chat",className:"space-y-4",children:o.jsx(Gve,{config:n,onChange:W=>{r(W),te(W)}})}),o.jsx(un,{value:"voice",className:"space-y-4",children:o.jsx(Xve,{config:n,onChange:W=>{r(W),te(W)}})}),o.jsx(un,{value:"debug",className:"space-y-4",children:o.jsx(Yve,{config:n,onChange:W=>{r(W),te(W)}})})]}):o.jsx("div",{className:"rounded-lg border bg-card p-6 md:p-12",children:o.jsxs("div",{className:"text-center space-y-3 md:space-y-4",children:[o.jsx(zl,{className:"h-12 w-12 md:h-16 md:w-16 mx-auto text-muted-foreground"}),o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold",children:"尚未加载配置"}),o.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-2 px-4",children:t==="preset"?"请选择预设的部署方式":t==="upload"?"请上传现有配置文件,或使用默认配置开始编辑":"请指定配置文件路径并点击加载按钮"})]})]})}),o.jsx(Dn,{open:S,onOpenChange:k,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认切换模式"}),o.jsxs(_n,{children:["切换模式将清空当前配置,确定要继续吗?",o.jsx("br",{}),o.jsx("span",{className:"text-destructive font-medium",children:"请确保已保存重要配置"})]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{onClick:()=>{k(!1),E(null)},children:"取消"}),o.jsx(An,{onClick:J,children:"确认切换"})]})]})}),o.jsx(Dn,{open:j,onOpenChange:N,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认清空路径"}),o.jsxs(_n,{children:["清空路径将清除当前配置,确定要继续吗?",o.jsx("br",{}),o.jsx("span",{className:"text-muted-foreground text-sm",children:"此操作不会删除配置文件,只是清除界面中的配置"})]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{onClick:()=>N(!1),children:"取消"}),o.jsx(An,{onClick:ie,className:"bg-destructive hover:bg-destructive/90",children:"确认清空"})]})]})})]})})}function Uve({config:t,onChange:e}){return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"Napcat WebSocket 服务设置"}),o.jsxs("div",{className:"grid gap-3 md:gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"napcat-host",className:"text-sm md:text-base",children:"主机地址"}),o.jsx(ze,{id:"napcat-host",value:t.napcat_server.host,onChange:n=>e({...t,napcat_server:{...t.napcat_server,host:n.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的主机地址"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"napcat-port",className:"text-sm md:text-base",children:"端口"}),o.jsx(ze,{id:"napcat-port",type:"number",value:t.napcat_server.port||"",onChange:n=>e({...t,napcat_server:{...t.napcat_server,port:n.target.value?parseInt(n.target.value):0}}),placeholder:"8095",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的端口(留空使用默认值 8095)"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"napcat-token",className:"text-sm md:text-base",children:"访问令牌(Token)"}),o.jsx(ze,{id:"napcat-token",type:"password",value:t.napcat_server.token,onChange:n=>e({...t,napcat_server:{...t.napcat_server,token:n.target.value}}),placeholder:"留空表示无需令牌",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的访问令牌,若无则留空"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"napcat-heartbeat",className:"text-sm md:text-base",children:"心跳间隔(秒)"}),o.jsx(ze,{id:"napcat-heartbeat",type:"number",value:t.napcat_server.heartbeat_interval||"",onChange:n=>e({...t,napcat_server:{...t.napcat_server,heartbeat_interval:n.target.value?parseInt(n.target.value):0}}),placeholder:"30",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"与 Napcat 设置的心跳间隔保持一致(留空使用默认值 30)"})]})]})]})})}function Wve({config:t,onChange:e}){return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"麦麦 WebSocket 服务设置"}),o.jsxs("div",{className:"grid gap-3 md:gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"maibot-host",className:"text-sm md:text-base",children:"主机地址"}),o.jsx(ze,{id:"maibot-host",value:t.maibot_server.host,onChange:n=>e({...t,maibot_server:{...t.maibot_server,host:n.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 HOST 字段"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"maibot-port",className:"text-sm md:text-base",children:"端口"}),o.jsx(ze,{id:"maibot-port",type:"number",value:t.maibot_server.port||"",onChange:n=>e({...t,maibot_server:{...t.maibot_server,port:n.target.value?parseInt(n.target.value):0}}),placeholder:"8000",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 PORT 字段(留空使用默认值 8000)"})]})]})]})})}function Gve({config:t,onChange:e}){const n=i=>{const a={...t};i==="group"?a.chat.group_list=[...a.chat.group_list,0]:i==="private"?a.chat.private_list=[...a.chat.private_list,0]:a.chat.ban_user_id=[...a.chat.ban_user_id,0],e(a)},r=(i,a)=>{const l={...t};i==="group"?l.chat.group_list=l.chat.group_list.filter((c,d)=>d!==a):i==="private"?l.chat.private_list=l.chat.private_list.filter((c,d)=>d!==a):l.chat.ban_user_id=l.chat.ban_user_id.filter((c,d)=>d!==a),e(l)},s=(i,a,l)=>{const c={...t};i==="group"?c.chat.group_list[a]=l:i==="private"?c.chat.private_list[a]=l:c.chat.ban_user_id[a]=l,e(c)};return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"聊天黑白名单功能"}),o.jsxs("div",{className:"grid gap-4 md:gap-6",children:[o.jsxs("div",{className:"space-y-3 md:space-y-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-sm md:text-base",children:"群组名单类型"}),o.jsxs(Vt,{value:t.chat.group_list_type,onValueChange:i=>e({...t,chat:{...t.chat,group_list_type:i}}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),o.jsx(De,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[o.jsx(he,{className:"text-sm md:text-base",children:"群组列表"}),o.jsxs(de,{onClick:()=>n("group"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[o.jsx(zl,{className:"mr-1 h-4 w-4"}),"添加群号"]})]}),t.chat.group_list.map((i,a)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{type:"number",value:i,onChange:l=>s("group",a,parseInt(l.target.value)||0),placeholder:"输入群号",className:"text-sm md:text-base"}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(de,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除群号 ",i," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>r("group",a),children:"删除"})]})]})]})]},a)),t.chat.group_list.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无群组"})]})]}),o.jsxs("div",{className:"space-y-3 md:space-y-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-sm md:text-base",children:"私聊名单类型"}),o.jsxs(Vt,{value:t.chat.private_list_type,onValueChange:i=>e({...t,chat:{...t.chat,private_list_type:i}}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),o.jsx(De,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[o.jsx(he,{className:"text-sm md:text-base",children:"私聊列表"}),o.jsxs(de,{onClick:()=>n("private"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[o.jsx(zl,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),t.chat.private_list.map((i,a)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{type:"number",value:i,onChange:l=>s("private",a,parseInt(l.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(de,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要删除用户 ",i," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>r("private",a),children:"删除"})]})]})]})]},a)),t.chat.private_list.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无用户"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-sm md:text-base",children:"全局禁止名单"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"名单中的用户无法进行任何聊天"})]}),o.jsxs(de,{onClick:()=>n("ban"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[o.jsx(zl,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),t.chat.ban_user_id.map((i,a)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{type:"number",value:i,onChange:l=>s("ban",a,parseInt(l.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),o.jsxs(Dn,{children:[o.jsx(rs,{asChild:!0,children:o.jsx(de,{size:"icon",variant:"outline",children:o.jsx(Sn,{className:"h-4 w-4"})})}),o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:["确定要从全局禁止名单中删除用户 ",i," 吗?此操作无法撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>r("ban",a),children:"删除"})]})]})]})]},a)),t.chat.ban_user_id.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无禁止用户"})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-sm md:text-base",children:"屏蔽QQ官方机器人"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否屏蔽来自QQ官方机器人的消息"})]}),o.jsx(Bt,{checked:t.chat.ban_qq_bot,onCheckedChange:i=>e({...t,chat:{...t.chat,ban_qq_bot:i}})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-sm md:text-base",children:"启用戳一戳功能"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否响应戳一戳消息"})]}),o.jsx(Bt,{checked:t.chat.enable_poke,onCheckedChange:i=>e({...t,chat:{...t.chat,enable_poke:i}})})]})]})]})})}function Xve({config:t,onChange:e}){return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"发送语音设置"}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-sm md:text-base",children:"使用 TTS 语音"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"请确保已配置 TTS 并有对应的适配器"})]}),o.jsx(Bt,{checked:t.voice.use_tts,onCheckedChange:n=>e({...t,voice:{use_tts:n}})})]})]})})}function Yve({config:t,onChange:e}){return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"调试设置"}),o.jsx("div",{className:"grid gap-3 md:gap-4",children:o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-sm md:text-base",children:"日志等级"}),o.jsxs(Vt,{value:t.debug.level,onValueChange:n=>e({...t,debug:{level:n}}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"DEBUG",children:"DEBUG(调试)"}),o.jsx(De,{value:"INFO",children:"INFO(信息)"}),o.jsx(De,{value:"WARNING",children:"WARNING(警告)"}),o.jsx(De,{value:"ERROR",children:"ERROR(错误)"}),o.jsx(De,{value:"CRITICAL",children:"CRITICAL(严重)"})]})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"设置适配器的日志输出等级"})]})})]})})}function vM(t){const e=[],n=String(t||"");let r=n.indexOf(","),s=0,i=!1;for(;!i;){r===-1&&(r=n.length,i=!0);const a=n.slice(s,r).trim();(a||!i)&&e.push(a),s=r+1,r=n.indexOf(",",s)}return e}function Kve(t,e){const n={};return(t[t.length-1]===""?[...t,""]:t).join((n.padRight?" ":"")+","+(n.padLeft===!1?"":" ")).trim()}const Zve=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,Jve=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,eye={};function yM(t,e){return(eye.jsx?Jve:Zve).test(t)}const tye=/[ \t\n\f\r]/g;function nye(t){return typeof t=="object"?t.type==="text"?bM(t.value):!1:bM(t)}function bM(t){return t.replace(tye,"")===""}class ug{constructor(e,n,r){this.normal=n,this.property=e,r&&(this.space=r)}}ug.prototype.normal={};ug.prototype.property={};ug.prototype.space=void 0;function qQ(t,e){const n={},r={};for(const s of t)Object.assign(n,s.property),Object.assign(r,s.normal);return new ug(n,r,e)}function mp(t){return t.toLowerCase()}class Ei{constructor(e,n){this.attribute=n,this.property=e}}Ei.prototype.attribute="";Ei.prototype.booleanish=!1;Ei.prototype.boolean=!1;Ei.prototype.commaOrSpaceSeparated=!1;Ei.prototype.commaSeparated=!1;Ei.prototype.defined=!1;Ei.prototype.mustUseProperty=!1;Ei.prototype.number=!1;Ei.prototype.overloadedBoolean=!1;Ei.prototype.property="";Ei.prototype.spaceSeparated=!1;Ei.prototype.space=void 0;let rye=0;const Jt=wd(),Jr=wd(),TO=wd(),Qe=wd(),ur=wd(),qh=wd(),qi=wd();function wd(){return 2**++rye}const EO=Object.freeze(Object.defineProperty({__proto__:null,boolean:Jt,booleanish:Jr,commaOrSpaceSeparated:qi,commaSeparated:qh,number:Qe,overloadedBoolean:TO,spaceSeparated:ur},Symbol.toStringTag,{value:"Module"})),TS=Object.keys(EO);class aN extends Ei{constructor(e,n,r,s){let i=-1;if(super(e,n),wM(this,"space",s),typeof r=="number")for(;++i4&&n.slice(0,4)==="data"&&lye.test(e)){if(e.charAt(4)==="-"){const i=e.slice(5).replace(SM,uye);r="data"+i.charAt(0).toUpperCase()+i.slice(1)}else{const i=e.slice(4);if(!SM.test(i)){let a=i.replace(oye,cye);a.charAt(0)!=="-"&&(a="-"+a),e="data"+a}}s=aN}return new s(r,e)}function cye(t){return"-"+t.toLowerCase()}function uye(t){return t.charAt(1).toUpperCase()}const XQ=qQ([$Q,sye,VQ,UQ,WQ],"html"),zb=qQ([$Q,iye,VQ,UQ,WQ],"svg");function kM(t){const e=String(t||"").trim();return e?e.split(/[ \t\n\r\f]+/g):[]}function dye(t){return t.join(" ").trim()}var oh={},ES,OM;function hye(){if(OM)return ES;OM=1;var t=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,e=/\n/g,n=/^\s*/,r=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,s=/^:\s*/,i=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,a=/^[;\s]*/,l=/^\s+|\s+$/g,c=` -`,d="/",h="*",m="",g="comment",x="declaration";function y(S,k){if(typeof S!="string")throw new TypeError("First argument must be a string");if(!S)return[];k=k||{};var j=1,N=1;function T(z){var Q=z.match(e);Q&&(j+=Q.length);var F=z.lastIndexOf(c);N=~F?z.length-F:N+z.length}function E(){var z={line:j,column:N};return function(Q){return Q.position=new _(z),P(),Q}}function _(z){this.start=z,this.end={line:j,column:N},this.source=k.source}_.prototype.content=S;function A(z){var Q=new Error(k.source+":"+j+":"+N+": "+z);if(Q.reason=z,Q.filename=k.source,Q.line=j,Q.column=N,Q.source=S,!k.silent)throw Q}function L(z){var Q=z.exec(S);if(Q){var F=Q[0];return T(F),S=S.slice(F.length),Q}}function P(){L(n)}function B(z){var Q;for(z=z||[];Q=$();)Q!==!1&&z.push(Q);return z}function $(){var z=E();if(!(d!=S.charAt(0)||h!=S.charAt(1))){for(var Q=2;m!=S.charAt(Q)&&(h!=S.charAt(Q)||d!=S.charAt(Q+1));)++Q;if(Q+=2,m===S.charAt(Q-1))return A("End of comment missing");var F=S.slice(2,Q-2);return N+=2,T(F),S=S.slice(Q),N+=2,z({type:g,comment:F})}}function U(){var z=E(),Q=L(r);if(Q){if($(),!L(s))return A("property missing ':'");var F=L(i),Y=z({type:x,property:w(Q[0].replace(t,m)),value:F?w(F[0].replace(t,m)):m});return L(a),Y}}function te(){var z=[];B(z);for(var Q;Q=U();)Q!==!1&&(z.push(Q),B(z));return z}return P(),te()}function w(S){return S?S.replace(l,m):m}return ES=y,ES}var jM;function fye(){if(jM)return oh;jM=1;var t=oh&&oh.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(oh,"__esModule",{value:!0}),oh.default=n;const e=t(hye());function n(r,s){let i=null;if(!r||typeof r!="string")return i;const a=(0,e.default)(r),l=typeof s=="function";return a.forEach(c=>{if(c.type!=="declaration")return;const{property:d,value:h}=c;l?s(d,h,c):h&&(i=i||{},i[d]=h)}),i}return oh}var Ym={},NM;function mye(){if(NM)return Ym;NM=1,Object.defineProperty(Ym,"__esModule",{value:!0}),Ym.camelCase=void 0;var t=/^--[a-zA-Z0-9_-]+$/,e=/-([a-z])/g,n=/^[^-]+$/,r=/^-(webkit|moz|ms|o|khtml)-/,s=/^-(ms)-/,i=function(d){return!d||n.test(d)||t.test(d)},a=function(d,h){return h.toUpperCase()},l=function(d,h){return"".concat(h,"-")},c=function(d,h){return h===void 0&&(h={}),i(d)?d:(d=d.toLowerCase(),h.reactCompat?d=d.replace(s,l):d=d.replace(r,l),d.replace(e,a))};return Ym.camelCase=c,Ym}var Km,CM;function pye(){if(CM)return Km;CM=1;var t=Km&&Km.__importDefault||function(s){return s&&s.__esModule?s:{default:s}},e=t(fye()),n=mye();function r(s,i){var a={};return!s||typeof s!="string"||(0,e.default)(s,function(l,c){l&&c&&(a[(0,n.camelCase)(l,i)]=c)}),a}return r.default=r,Km=r,Km}var gye=pye();const xye=gd(gye),YQ=KQ("end"),oN=KQ("start");function KQ(t){return e;function e(n){const r=n&&n.position&&n.position[t]||{};if(typeof r.line=="number"&&r.line>0&&typeof r.column=="number"&&r.column>0)return{line:r.line,column:r.column,offset:typeof r.offset=="number"&&r.offset>-1?r.offset:void 0}}}function vye(t){const e=oN(t),n=YQ(t);if(e&&n)return{start:e,end:n}}function _0(t){return!t||typeof t!="object"?"":"position"in t||"type"in t?TM(t.position):"start"in t||"end"in t?TM(t):"line"in t||"column"in t?_O(t):""}function _O(t){return EM(t&&t.line)+":"+EM(t&&t.column)}function TM(t){return _O(t&&t.start)+"-"+_O(t&&t.end)}function EM(t){return t&&typeof t=="number"?t:1}class Ws extends Error{constructor(e,n,r){super(),typeof n=="string"&&(r=n,n=void 0);let s="",i={},a=!1;if(n&&("line"in n&&"column"in n?i={place:n}:"start"in n&&"end"in n?i={place:n}:"type"in n?i={ancestors:[n],place:n.position}:i={...n}),typeof e=="string"?s=e:!i.cause&&e&&(a=!0,s=e.message,i.cause=e),!i.ruleId&&!i.source&&typeof r=="string"){const c=r.indexOf(":");c===-1?i.ruleId=r:(i.source=r.slice(0,c),i.ruleId=r.slice(c+1))}if(!i.place&&i.ancestors&&i.ancestors){const c=i.ancestors[i.ancestors.length-1];c&&(i.place=c.position)}const l=i.place&&"start"in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=l?l.column:void 0,this.fatal=void 0,this.file="",this.message=s,this.line=l?l.line:void 0,this.name=_0(i.place)||"1:1",this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=a&&i.cause&&typeof i.cause.stack=="string"?i.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}Ws.prototype.file="";Ws.prototype.name="";Ws.prototype.reason="";Ws.prototype.message="";Ws.prototype.stack="";Ws.prototype.column=void 0;Ws.prototype.line=void 0;Ws.prototype.ancestors=void 0;Ws.prototype.cause=void 0;Ws.prototype.fatal=void 0;Ws.prototype.place=void 0;Ws.prototype.ruleId=void 0;Ws.prototype.source=void 0;const lN={}.hasOwnProperty,yye=new Map,bye=/[A-Z]/g,wye=new Set(["table","tbody","thead","tfoot","tr"]),Sye=new Set(["td","th"]),ZQ="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function kye(t,e){if(!e||e.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const n=e.filePath||void 0;let r;if(e.development){if(typeof e.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");r=Aye(n,e.jsxDEV)}else{if(typeof e.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof e.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");r=_ye(n,e.jsx,e.jsxs)}const s={Fragment:e.Fragment,ancestors:[],components:e.components||{},create:r,elementAttributeNameCase:e.elementAttributeNameCase||"react",evaluater:e.createEvaluater?e.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:e.ignoreInvalidStyle||!1,passKeys:e.passKeys!==!1,passNode:e.passNode||!1,schema:e.space==="svg"?zb:XQ,stylePropertyNameCase:e.stylePropertyNameCase||"dom",tableCellAlignToStyle:e.tableCellAlignToStyle!==!1},i=JQ(s,t,void 0);return i&&typeof i!="string"?i:s.create(t,s.Fragment,{children:i||void 0},void 0)}function JQ(t,e,n){if(e.type==="element")return Oye(t,e,n);if(e.type==="mdxFlowExpression"||e.type==="mdxTextExpression")return jye(t,e);if(e.type==="mdxJsxFlowElement"||e.type==="mdxJsxTextElement")return Cye(t,e,n);if(e.type==="mdxjsEsm")return Nye(t,e);if(e.type==="root")return Tye(t,e,n);if(e.type==="text")return Eye(t,e)}function Oye(t,e,n){const r=t.schema;let s=r;e.tagName.toLowerCase()==="svg"&&r.space==="html"&&(s=zb,t.schema=s),t.ancestors.push(e);const i=tV(t,e.tagName,!1),a=Mye(t,e);let l=uN(t,e);return wye.has(e.tagName)&&(l=l.filter(function(c){return typeof c=="string"?!nye(c):!0})),eV(t,a,i,e),cN(a,l),t.ancestors.pop(),t.schema=r,t.create(e,i,a,n)}function jye(t,e){if(e.data&&e.data.estree&&t.evaluater){const r=e.data.estree.body[0];return r.type,t.evaluater.evaluateExpression(r.expression)}pp(t,e.position)}function Nye(t,e){if(e.data&&e.data.estree&&t.evaluater)return t.evaluater.evaluateProgram(e.data.estree);pp(t,e.position)}function Cye(t,e,n){const r=t.schema;let s=r;e.name==="svg"&&r.space==="html"&&(s=zb,t.schema=s),t.ancestors.push(e);const i=e.name===null?t.Fragment:tV(t,e.name,!0),a=Rye(t,e),l=uN(t,e);return eV(t,a,i,e),cN(a,l),t.ancestors.pop(),t.schema=r,t.create(e,i,a,n)}function Tye(t,e,n){const r={};return cN(r,uN(t,e)),t.create(e,t.Fragment,r,n)}function Eye(t,e){return e.value}function eV(t,e,n,r){typeof n!="string"&&n!==t.Fragment&&t.passNode&&(e.node=r)}function cN(t,e){if(e.length>0){const n=e.length>1?e:e[0];n&&(t.children=n)}}function _ye(t,e,n){return r;function r(s,i,a,l){const d=Array.isArray(a.children)?n:e;return l?d(i,a,l):d(i,a)}}function Aye(t,e){return n;function n(r,s,i,a){const l=Array.isArray(i.children),c=oN(r);return e(s,i,a,l,{columnNumber:c?c.column-1:void 0,fileName:t,lineNumber:c?c.line:void 0},void 0)}}function Mye(t,e){const n={};let r,s;for(s in e.properties)if(s!=="children"&&lN.call(e.properties,s)){const i=Dye(t,s,e.properties[s]);if(i){const[a,l]=i;t.tableCellAlignToStyle&&a==="align"&&typeof l=="string"&&Sye.has(e.tagName)?r=l:n[a]=l}}if(r){const i=n.style||(n.style={});i[t.stylePropertyNameCase==="css"?"text-align":"textAlign"]=r}return n}function Rye(t,e){const n={};for(const r of e.attributes)if(r.type==="mdxJsxExpressionAttribute")if(r.data&&r.data.estree&&t.evaluater){const i=r.data.estree.body[0];i.type;const a=i.expression;a.type;const l=a.properties[0];l.type,Object.assign(n,t.evaluater.evaluateExpression(l.argument))}else pp(t,e.position);else{const s=r.name;let i;if(r.value&&typeof r.value=="object")if(r.value.data&&r.value.data.estree&&t.evaluater){const l=r.value.data.estree.body[0];l.type,i=t.evaluater.evaluateExpression(l.expression)}else pp(t,e.position);else i=r.value===null?!0:r.value;n[s]=i}return n}function uN(t,e){const n=[];let r=-1;const s=t.passKeys?new Map:yye;for(;++rs?0:s+e:e=e>s?s:e,n=n>0?n:0,r.length<1e4)a=Array.from(r),a.unshift(e,n),t.splice(...a);else for(n&&t.splice(e,n);i0?(Gi(t,t.length,0,e),t):e}const MM={}.hasOwnProperty;function rV(t){const e={};let n=-1;for(;++n13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)===65535||(n&65535)===65534||n>1114111?"�":String.fromCodePoint(n)}function Ga(t){return t.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const Js=uu(/[A-Za-z]/),Vs=uu(/[\dA-Za-z]/),Hye=uu(/[#-'*+\--9=?A-Z^-~]/);function vy(t){return t!==null&&(t<32||t===127)}const AO=uu(/\d/),Qye=uu(/[\dA-Fa-f]/),Vye=uu(/[!-/:-@[-`{-~]/);function bt(t){return t!==null&&t<-2}function or(t){return t!==null&&(t<0||t===32)}function dn(t){return t===-2||t===-1||t===32}const Ib=uu(new RegExp("\\p{P}|\\p{S}","u")),fd=uu(/\s/);function uu(t){return e;function e(n){return n!==null&&n>-1&&t.test(String.fromCharCode(n))}}function Ff(t){const e=[];let n=-1,r=0,s=0;for(;++n55295&&i<57344){const l=t.charCodeAt(n+1);i<56320&&l>56319&&l<57344?(a=String.fromCharCode(i,l),s=1):a="�"}else a=String.fromCharCode(i);a&&(e.push(t.slice(r,n),encodeURIComponent(a)),r=n+s+1,a=""),s&&(n+=s,s=0)}return e.join("")+t.slice(r)}function on(t,e,n,r){const s=r?r-1:Number.POSITIVE_INFINITY;let i=0;return a;function a(c){return dn(c)?(t.enter(n),l(c)):e(c)}function l(c){return dn(c)&&i++a))return;const A=e.events.length;let L=A,P,B;for(;L--;)if(e.events[L][0]==="exit"&&e.events[L][1].type==="chunkFlow"){if(P){B=e.events[L][1].end;break}P=!0}for(k(r),_=A;_N;){const E=n[T];e.containerState=E[1],E[0].exit.call(e,t)}n.length=N}function j(){s.write([null]),i=void 0,s=void 0,e.containerState._closeFlow=void 0}}function Yye(t,e,n){return on(t,t.attempt(this.parser.constructs.document,e,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function hf(t){if(t===null||or(t)||fd(t))return 1;if(Ib(t))return 2}function Lb(t,e,n){const r=[];let s=-1;for(;++s1&&t[n][1].end.offset-t[n][1].start.offset>1?2:1;const m={...t[r][1].end},g={...t[n][1].start};DM(m,-c),DM(g,c),a={type:c>1?"strongSequence":"emphasisSequence",start:m,end:{...t[r][1].end}},l={type:c>1?"strongSequence":"emphasisSequence",start:{...t[n][1].start},end:g},i={type:c>1?"strongText":"emphasisText",start:{...t[r][1].end},end:{...t[n][1].start}},s={type:c>1?"strong":"emphasis",start:{...a.start},end:{...l.end}},t[r][1].end={...a.start},t[n][1].start={...l.end},d=[],t[r][1].end.offset-t[r][1].start.offset&&(d=fa(d,[["enter",t[r][1],e],["exit",t[r][1],e]])),d=fa(d,[["enter",s,e],["enter",a,e],["exit",a,e],["enter",i,e]]),d=fa(d,Lb(e.parser.constructs.insideSpan.null,t.slice(r+1,n),e)),d=fa(d,[["exit",i,e],["enter",l,e],["exit",l,e],["exit",s,e]]),t[n][1].end.offset-t[n][1].start.offset?(h=2,d=fa(d,[["enter",t[n][1],e],["exit",t[n][1],e]])):h=0,Gi(t,r-1,n-r+3,d),n=r+d.length-h-2;break}}for(n=-1;++n0&&dn(_)?on(t,j,"linePrefix",i+1)(_):j(_)}function j(_){return _===null||bt(_)?t.check(PM,w,T)(_):(t.enter("codeFlowValue"),N(_))}function N(_){return _===null||bt(_)?(t.exit("codeFlowValue"),j(_)):(t.consume(_),N)}function T(_){return t.exit("codeFenced"),e(_)}function E(_,A,L){let P=0;return B;function B(Q){return _.enter("lineEnding"),_.consume(Q),_.exit("lineEnding"),$}function $(Q){return _.enter("codeFencedFence"),dn(Q)?on(_,U,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(Q):U(Q)}function U(Q){return Q===l?(_.enter("codeFencedFenceSequence"),te(Q)):L(Q)}function te(Q){return Q===l?(P++,_.consume(Q),te):P>=a?(_.exit("codeFencedFenceSequence"),dn(Q)?on(_,z,"whitespace")(Q):z(Q)):L(Q)}function z(Q){return Q===null||bt(Q)?(_.exit("codeFencedFence"),A(Q)):L(Q)}}}function lbe(t,e,n){const r=this;return s;function s(a){return a===null?n(a):(t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),i)}function i(a){return r.parser.lazy[r.now().line]?n(a):e(a)}}const AS={name:"codeIndented",tokenize:ube},cbe={partial:!0,tokenize:dbe};function ube(t,e,n){const r=this;return s;function s(d){return t.enter("codeIndented"),on(t,i,"linePrefix",5)(d)}function i(d){const h=r.events[r.events.length-1];return h&&h[1].type==="linePrefix"&&h[2].sliceSerialize(h[1],!0).length>=4?a(d):n(d)}function a(d){return d===null?c(d):bt(d)?t.attempt(cbe,a,c)(d):(t.enter("codeFlowValue"),l(d))}function l(d){return d===null||bt(d)?(t.exit("codeFlowValue"),a(d)):(t.consume(d),l)}function c(d){return t.exit("codeIndented"),e(d)}}function dbe(t,e,n){const r=this;return s;function s(a){return r.parser.lazy[r.now().line]?n(a):bt(a)?(t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),s):on(t,i,"linePrefix",5)(a)}function i(a){const l=r.events[r.events.length-1];return l&&l[1].type==="linePrefix"&&l[2].sliceSerialize(l[1],!0).length>=4?e(a):bt(a)?s(a):n(a)}}const hbe={name:"codeText",previous:mbe,resolve:fbe,tokenize:pbe};function fbe(t){let e=t.length-4,n=3,r,s;if((t[n][1].type==="lineEnding"||t[n][1].type==="space")&&(t[e][1].type==="lineEnding"||t[e][1].type==="space")){for(r=n;++r=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return ethis.left.length?this.right.slice(this.right.length-r+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-r+this.left.length).reverse())}splice(e,n,r){const s=n||0;this.setCursor(Math.trunc(e));const i=this.right.splice(this.right.length-s,Number.POSITIVE_INFINITY);return r&&Zm(this.left,r),i.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(e){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(e)}pushMany(e){this.setCursor(Number.POSITIVE_INFINITY),Zm(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),Zm(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0))if(e=4?e(a):t.interrupt(r.parser.constructs.flow,n,e)(a)}}function cV(t,e,n,r,s,i,a,l,c){const d=c||Number.POSITIVE_INFINITY;let h=0;return m;function m(k){return k===60?(t.enter(r),t.enter(s),t.enter(i),t.consume(k),t.exit(i),g):k===null||k===32||k===41||vy(k)?n(k):(t.enter(r),t.enter(a),t.enter(l),t.enter("chunkString",{contentType:"string"}),w(k))}function g(k){return k===62?(t.enter(i),t.consume(k),t.exit(i),t.exit(s),t.exit(r),e):(t.enter(l),t.enter("chunkString",{contentType:"string"}),x(k))}function x(k){return k===62?(t.exit("chunkString"),t.exit(l),g(k)):k===null||k===60||bt(k)?n(k):(t.consume(k),k===92?y:x)}function y(k){return k===60||k===62||k===92?(t.consume(k),x):x(k)}function w(k){return!h&&(k===null||k===41||or(k))?(t.exit("chunkString"),t.exit(l),t.exit(a),t.exit(r),e(k)):h999||x===null||x===91||x===93&&!c||x===94&&!l&&"_hiddenFootnoteSupport"in a.parser.constructs?n(x):x===93?(t.exit(i),t.enter(s),t.consume(x),t.exit(s),t.exit(r),e):bt(x)?(t.enter("lineEnding"),t.consume(x),t.exit("lineEnding"),h):(t.enter("chunkString",{contentType:"string"}),m(x))}function m(x){return x===null||x===91||x===93||bt(x)||l++>999?(t.exit("chunkString"),h(x)):(t.consume(x),c||(c=!dn(x)),x===92?g:m)}function g(x){return x===91||x===92||x===93?(t.consume(x),l++,m):m(x)}}function dV(t,e,n,r,s,i){let a;return l;function l(g){return g===34||g===39||g===40?(t.enter(r),t.enter(s),t.consume(g),t.exit(s),a=g===40?41:g,c):n(g)}function c(g){return g===a?(t.enter(s),t.consume(g),t.exit(s),t.exit(r),e):(t.enter(i),d(g))}function d(g){return g===a?(t.exit(i),c(a)):g===null?n(g):bt(g)?(t.enter("lineEnding"),t.consume(g),t.exit("lineEnding"),on(t,d,"linePrefix")):(t.enter("chunkString",{contentType:"string"}),h(g))}function h(g){return g===a||g===null||bt(g)?(t.exit("chunkString"),d(g)):(t.consume(g),g===92?m:h)}function m(g){return g===a||g===92?(t.consume(g),h):h(g)}}function A0(t,e){let n;return r;function r(s){return bt(s)?(t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),n=!0,r):dn(s)?on(t,r,n?"linePrefix":"lineSuffix")(s):e(s)}}const kbe={name:"definition",tokenize:jbe},Obe={partial:!0,tokenize:Nbe};function jbe(t,e,n){const r=this;let s;return i;function i(x){return t.enter("definition"),a(x)}function a(x){return uV.call(r,t,l,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(x)}function l(x){return s=Ga(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),x===58?(t.enter("definitionMarker"),t.consume(x),t.exit("definitionMarker"),c):n(x)}function c(x){return or(x)?A0(t,d)(x):d(x)}function d(x){return cV(t,h,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(x)}function h(x){return t.attempt(Obe,m,m)(x)}function m(x){return dn(x)?on(t,g,"whitespace")(x):g(x)}function g(x){return x===null||bt(x)?(t.exit("definition"),r.parser.defined.push(s),e(x)):n(x)}}function Nbe(t,e,n){return r;function r(l){return or(l)?A0(t,s)(l):n(l)}function s(l){return dV(t,i,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(l)}function i(l){return dn(l)?on(t,a,"whitespace")(l):a(l)}function a(l){return l===null||bt(l)?e(l):n(l)}}const Cbe={name:"hardBreakEscape",tokenize:Tbe};function Tbe(t,e,n){return r;function r(i){return t.enter("hardBreakEscape"),t.consume(i),s}function s(i){return bt(i)?(t.exit("hardBreakEscape"),e(i)):n(i)}}const Ebe={name:"headingAtx",resolve:_be,tokenize:Abe};function _be(t,e){let n=t.length-2,r=3,s,i;return t[r][1].type==="whitespace"&&(r+=2),n-2>r&&t[n][1].type==="whitespace"&&(n-=2),t[n][1].type==="atxHeadingSequence"&&(r===n-1||n-4>r&&t[n-2][1].type==="whitespace")&&(n-=r+1===n?2:4),n>r&&(s={type:"atxHeadingText",start:t[r][1].start,end:t[n][1].end},i={type:"chunkText",start:t[r][1].start,end:t[n][1].end,contentType:"text"},Gi(t,r,n-r+1,[["enter",s,e],["enter",i,e],["exit",i,e],["exit",s,e]])),t}function Abe(t,e,n){let r=0;return s;function s(h){return t.enter("atxHeading"),i(h)}function i(h){return t.enter("atxHeadingSequence"),a(h)}function a(h){return h===35&&r++<6?(t.consume(h),a):h===null||or(h)?(t.exit("atxHeadingSequence"),l(h)):n(h)}function l(h){return h===35?(t.enter("atxHeadingSequence"),c(h)):h===null||bt(h)?(t.exit("atxHeading"),e(h)):dn(h)?on(t,l,"whitespace")(h):(t.enter("atxHeadingText"),d(h))}function c(h){return h===35?(t.consume(h),c):(t.exit("atxHeadingSequence"),l(h))}function d(h){return h===null||h===35||or(h)?(t.exit("atxHeadingText"),l(h)):(t.consume(h),d)}}const Mbe=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],IM=["pre","script","style","textarea"],Rbe={concrete:!0,name:"htmlFlow",resolveTo:zbe,tokenize:Ibe},Dbe={partial:!0,tokenize:Bbe},Pbe={partial:!0,tokenize:Lbe};function zbe(t){let e=t.length;for(;e--&&!(t[e][0]==="enter"&&t[e][1].type==="htmlFlow"););return e>1&&t[e-2][1].type==="linePrefix"&&(t[e][1].start=t[e-2][1].start,t[e+1][1].start=t[e-2][1].start,t.splice(e-2,2)),t}function Ibe(t,e,n){const r=this;let s,i,a,l,c;return d;function d(I){return h(I)}function h(I){return t.enter("htmlFlow"),t.enter("htmlFlowData"),t.consume(I),m}function m(I){return I===33?(t.consume(I),g):I===47?(t.consume(I),i=!0,w):I===63?(t.consume(I),s=3,r.interrupt?e:R):Js(I)?(t.consume(I),a=String.fromCharCode(I),S):n(I)}function g(I){return I===45?(t.consume(I),s=2,x):I===91?(t.consume(I),s=5,l=0,y):Js(I)?(t.consume(I),s=4,r.interrupt?e:R):n(I)}function x(I){return I===45?(t.consume(I),r.interrupt?e:R):n(I)}function y(I){const V="CDATA[";return I===V.charCodeAt(l++)?(t.consume(I),l===V.length?r.interrupt?e:U:y):n(I)}function w(I){return Js(I)?(t.consume(I),a=String.fromCharCode(I),S):n(I)}function S(I){if(I===null||I===47||I===62||or(I)){const V=I===47,ee=a.toLowerCase();return!V&&!i&&IM.includes(ee)?(s=1,r.interrupt?e(I):U(I)):Mbe.includes(a.toLowerCase())?(s=6,V?(t.consume(I),k):r.interrupt?e(I):U(I)):(s=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(I):i?j(I):N(I))}return I===45||Vs(I)?(t.consume(I),a+=String.fromCharCode(I),S):n(I)}function k(I){return I===62?(t.consume(I),r.interrupt?e:U):n(I)}function j(I){return dn(I)?(t.consume(I),j):B(I)}function N(I){return I===47?(t.consume(I),B):I===58||I===95||Js(I)?(t.consume(I),T):dn(I)?(t.consume(I),N):B(I)}function T(I){return I===45||I===46||I===58||I===95||Vs(I)?(t.consume(I),T):E(I)}function E(I){return I===61?(t.consume(I),_):dn(I)?(t.consume(I),E):N(I)}function _(I){return I===null||I===60||I===61||I===62||I===96?n(I):I===34||I===39?(t.consume(I),c=I,A):dn(I)?(t.consume(I),_):L(I)}function A(I){return I===c?(t.consume(I),c=null,P):I===null||bt(I)?n(I):(t.consume(I),A)}function L(I){return I===null||I===34||I===39||I===47||I===60||I===61||I===62||I===96||or(I)?E(I):(t.consume(I),L)}function P(I){return I===47||I===62||dn(I)?N(I):n(I)}function B(I){return I===62?(t.consume(I),$):n(I)}function $(I){return I===null||bt(I)?U(I):dn(I)?(t.consume(I),$):n(I)}function U(I){return I===45&&s===2?(t.consume(I),F):I===60&&s===1?(t.consume(I),Y):I===62&&s===4?(t.consume(I),ie):I===63&&s===3?(t.consume(I),R):I===93&&s===5?(t.consume(I),X):bt(I)&&(s===6||s===7)?(t.exit("htmlFlowData"),t.check(Dbe,G,te)(I)):I===null||bt(I)?(t.exit("htmlFlowData"),te(I)):(t.consume(I),U)}function te(I){return t.check(Pbe,z,G)(I)}function z(I){return t.enter("lineEnding"),t.consume(I),t.exit("lineEnding"),Q}function Q(I){return I===null||bt(I)?te(I):(t.enter("htmlFlowData"),U(I))}function F(I){return I===45?(t.consume(I),R):U(I)}function Y(I){return I===47?(t.consume(I),a="",J):U(I)}function J(I){if(I===62){const V=a.toLowerCase();return IM.includes(V)?(t.consume(I),ie):U(I)}return Js(I)&&a.length<8?(t.consume(I),a+=String.fromCharCode(I),J):U(I)}function X(I){return I===93?(t.consume(I),R):U(I)}function R(I){return I===62?(t.consume(I),ie):I===45&&s===2?(t.consume(I),R):U(I)}function ie(I){return I===null||bt(I)?(t.exit("htmlFlowData"),G(I)):(t.consume(I),ie)}function G(I){return t.exit("htmlFlow"),e(I)}}function Lbe(t,e,n){const r=this;return s;function s(a){return bt(a)?(t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),i):n(a)}function i(a){return r.parser.lazy[r.now().line]?n(a):e(a)}}function Bbe(t,e,n){return r;function r(s){return t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),t.attempt(dg,e,n)}}const Fbe={name:"htmlText",tokenize:qbe};function qbe(t,e,n){const r=this;let s,i,a;return l;function l(R){return t.enter("htmlText"),t.enter("htmlTextData"),t.consume(R),c}function c(R){return R===33?(t.consume(R),d):R===47?(t.consume(R),E):R===63?(t.consume(R),N):Js(R)?(t.consume(R),L):n(R)}function d(R){return R===45?(t.consume(R),h):R===91?(t.consume(R),i=0,y):Js(R)?(t.consume(R),j):n(R)}function h(R){return R===45?(t.consume(R),x):n(R)}function m(R){return R===null?n(R):R===45?(t.consume(R),g):bt(R)?(a=m,Y(R)):(t.consume(R),m)}function g(R){return R===45?(t.consume(R),x):m(R)}function x(R){return R===62?F(R):R===45?g(R):m(R)}function y(R){const ie="CDATA[";return R===ie.charCodeAt(i++)?(t.consume(R),i===ie.length?w:y):n(R)}function w(R){return R===null?n(R):R===93?(t.consume(R),S):bt(R)?(a=w,Y(R)):(t.consume(R),w)}function S(R){return R===93?(t.consume(R),k):w(R)}function k(R){return R===62?F(R):R===93?(t.consume(R),k):w(R)}function j(R){return R===null||R===62?F(R):bt(R)?(a=j,Y(R)):(t.consume(R),j)}function N(R){return R===null?n(R):R===63?(t.consume(R),T):bt(R)?(a=N,Y(R)):(t.consume(R),N)}function T(R){return R===62?F(R):N(R)}function E(R){return Js(R)?(t.consume(R),_):n(R)}function _(R){return R===45||Vs(R)?(t.consume(R),_):A(R)}function A(R){return bt(R)?(a=A,Y(R)):dn(R)?(t.consume(R),A):F(R)}function L(R){return R===45||Vs(R)?(t.consume(R),L):R===47||R===62||or(R)?P(R):n(R)}function P(R){return R===47?(t.consume(R),F):R===58||R===95||Js(R)?(t.consume(R),B):bt(R)?(a=P,Y(R)):dn(R)?(t.consume(R),P):F(R)}function B(R){return R===45||R===46||R===58||R===95||Vs(R)?(t.consume(R),B):$(R)}function $(R){return R===61?(t.consume(R),U):bt(R)?(a=$,Y(R)):dn(R)?(t.consume(R),$):P(R)}function U(R){return R===null||R===60||R===61||R===62||R===96?n(R):R===34||R===39?(t.consume(R),s=R,te):bt(R)?(a=U,Y(R)):dn(R)?(t.consume(R),U):(t.consume(R),z)}function te(R){return R===s?(t.consume(R),s=void 0,Q):R===null?n(R):bt(R)?(a=te,Y(R)):(t.consume(R),te)}function z(R){return R===null||R===34||R===39||R===60||R===61||R===96?n(R):R===47||R===62||or(R)?P(R):(t.consume(R),z)}function Q(R){return R===47||R===62||or(R)?P(R):n(R)}function F(R){return R===62?(t.consume(R),t.exit("htmlTextData"),t.exit("htmlText"),e):n(R)}function Y(R){return t.exit("htmlTextData"),t.enter("lineEnding"),t.consume(R),t.exit("lineEnding"),J}function J(R){return dn(R)?on(t,X,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(R):X(R)}function X(R){return t.enter("htmlTextData"),a(R)}}const fN={name:"labelEnd",resolveAll:Vbe,resolveTo:Ube,tokenize:Wbe},$be={tokenize:Gbe},Hbe={tokenize:Xbe},Qbe={tokenize:Ybe};function Vbe(t){let e=-1;const n=[];for(;++e=3&&(d===null||bt(d))?(t.exit("thematicBreak"),e(d)):n(d)}function c(d){return d===s?(t.consume(d),r++,c):(t.exit("thematicBreakSequence"),dn(d)?on(t,l,"whitespace")(d):l(d))}}const fi={continuation:{tokenize:awe},exit:lwe,name:"list",tokenize:iwe},rwe={partial:!0,tokenize:cwe},swe={partial:!0,tokenize:owe};function iwe(t,e,n){const r=this,s=r.events[r.events.length-1];let i=s&&s[1].type==="linePrefix"?s[2].sliceSerialize(s[1],!0).length:0,a=0;return l;function l(x){const y=r.containerState.type||(x===42||x===43||x===45?"listUnordered":"listOrdered");if(y==="listUnordered"?!r.containerState.marker||x===r.containerState.marker:AO(x)){if(r.containerState.type||(r.containerState.type=y,t.enter(y,{_container:!0})),y==="listUnordered")return t.enter("listItemPrefix"),x===42||x===45?t.check(Sv,n,d)(x):d(x);if(!r.interrupt||x===49)return t.enter("listItemPrefix"),t.enter("listItemValue"),c(x)}return n(x)}function c(x){return AO(x)&&++a<10?(t.consume(x),c):(!r.interrupt||a<2)&&(r.containerState.marker?x===r.containerState.marker:x===41||x===46)?(t.exit("listItemValue"),d(x)):n(x)}function d(x){return t.enter("listItemMarker"),t.consume(x),t.exit("listItemMarker"),r.containerState.marker=r.containerState.marker||x,t.check(dg,r.interrupt?n:h,t.attempt(rwe,g,m))}function h(x){return r.containerState.initialBlankLine=!0,i++,g(x)}function m(x){return dn(x)?(t.enter("listItemPrefixWhitespace"),t.consume(x),t.exit("listItemPrefixWhitespace"),g):n(x)}function g(x){return r.containerState.size=i+r.sliceSerialize(t.exit("listItemPrefix"),!0).length,e(x)}}function awe(t,e,n){const r=this;return r.containerState._closeFlow=void 0,t.check(dg,s,i);function s(l){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,on(t,e,"listItemIndent",r.containerState.size+1)(l)}function i(l){return r.containerState.furtherBlankLines||!dn(l)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,a(l)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,t.attempt(swe,e,a)(l))}function a(l){return r.containerState._closeFlow=!0,r.interrupt=void 0,on(t,t.attempt(fi,e,n),"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(l)}}function owe(t,e,n){const r=this;return on(t,s,"listItemIndent",r.containerState.size+1);function s(i){const a=r.events[r.events.length-1];return a&&a[1].type==="listItemIndent"&&a[2].sliceSerialize(a[1],!0).length===r.containerState.size?e(i):n(i)}}function lwe(t){t.exit(this.containerState.type)}function cwe(t,e,n){const r=this;return on(t,s,"listItemPrefixWhitespace",r.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function s(i){const a=r.events[r.events.length-1];return!dn(i)&&a&&a[1].type==="listItemPrefixWhitespace"?e(i):n(i)}}const LM={name:"setextUnderline",resolveTo:uwe,tokenize:dwe};function uwe(t,e){let n=t.length,r,s,i;for(;n--;)if(t[n][0]==="enter"){if(t[n][1].type==="content"){r=n;break}t[n][1].type==="paragraph"&&(s=n)}else t[n][1].type==="content"&&t.splice(n,1),!i&&t[n][1].type==="definition"&&(i=n);const a={type:"setextHeading",start:{...t[r][1].start},end:{...t[t.length-1][1].end}};return t[s][1].type="setextHeadingText",i?(t.splice(s,0,["enter",a,e]),t.splice(i+1,0,["exit",t[r][1],e]),t[r][1].end={...t[i][1].end}):t[r][1]=a,t.push(["exit",a,e]),t}function dwe(t,e,n){const r=this;let s;return i;function i(d){let h=r.events.length,m;for(;h--;)if(r.events[h][1].type!=="lineEnding"&&r.events[h][1].type!=="linePrefix"&&r.events[h][1].type!=="content"){m=r.events[h][1].type==="paragraph";break}return!r.parser.lazy[r.now().line]&&(r.interrupt||m)?(t.enter("setextHeadingLine"),s=d,a(d)):n(d)}function a(d){return t.enter("setextHeadingLineSequence"),l(d)}function l(d){return d===s?(t.consume(d),l):(t.exit("setextHeadingLineSequence"),dn(d)?on(t,c,"lineSuffix")(d):c(d))}function c(d){return d===null||bt(d)?(t.exit("setextHeadingLine"),e(d)):n(d)}}const hwe={tokenize:fwe};function fwe(t){const e=this,n=t.attempt(dg,r,t.attempt(this.parser.constructs.flowInitial,s,on(t,t.attempt(this.parser.constructs.flow,s,t.attempt(vbe,s)),"linePrefix")));return n;function r(i){if(i===null){t.consume(i);return}return t.enter("lineEndingBlank"),t.consume(i),t.exit("lineEndingBlank"),e.currentConstruct=void 0,n}function s(i){if(i===null){t.consume(i);return}return t.enter("lineEnding"),t.consume(i),t.exit("lineEnding"),e.currentConstruct=void 0,n}}const mwe={resolveAll:fV()},pwe=hV("string"),gwe=hV("text");function hV(t){return{resolveAll:fV(t==="text"?xwe:void 0),tokenize:e};function e(n){const r=this,s=this.parser.constructs[t],i=n.attempt(s,a,l);return a;function a(h){return d(h)?i(h):l(h)}function l(h){if(h===null){n.consume(h);return}return n.enter("data"),n.consume(h),c}function c(h){return d(h)?(n.exit("data"),i(h)):(n.consume(h),c)}function d(h){if(h===null)return!0;const m=s[h];let g=-1;if(m)for(;++g-1){const l=a[0];typeof l=="string"?a[0]=l.slice(r):a.shift()}i>0&&a.push(t[s].slice(0,i))}return a}function _we(t,e){let n=-1;const r=[];let s;for(;++n{d(!0)},[]),h1e(b.useMemo(()=>({onDragStart(m){let{active:g}=m;i(e.onDragStart({active:g}))},onDragMove(m){let{active:g,over:x}=m;e.onDragMove&&i(e.onDragMove({active:g,over:x}))},onDragOver(m){let{active:g,over:x}=m;i(e.onDragOver({active:g,over:x}))},onDragEnd(m){let{active:g,over:x}=m;i(e.onDragEnd({active:g,over:x}))},onDragCancel(m){let{active:g,over:x}=m;i(e.onDragCancel({active:g,over:x}))}}),[i,e])),!c)return null;const h=oe.createElement(oe.Fragment,null,oe.createElement(c1e,{id:r,value:s.draggable}),oe.createElement(u1e,{id:l,announcement:a}));return n?ya.createPortal(h,n):h}var ds;(function(t){t.DragStart="dragStart",t.DragMove="dragMove",t.DragEnd="dragEnd",t.DragCancel="dragCancel",t.DragOver="dragOver",t.RegisterDroppable="registerDroppable",t.SetDroppableDisabled="setDroppableDisabled",t.UnregisterDroppable="unregisterDroppable"})(ds||(ds={}));function by(){}function oM(t,e){return b.useMemo(()=>({sensor:t,options:e??{}}),[t,e])}function x1e(){for(var t=arguments.length,e=new Array(t),n=0;n[...e].filter(r=>r!=null),[...e])}const eo=Object.freeze({x:0,y:0});function jQ(t,e){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function NQ(t,e){let{data:{value:n}}=t,{data:{value:r}}=e;return n-r}function v1e(t,e){let{data:{value:n}}=t,{data:{value:r}}=e;return r-n}function lM(t){let{left:e,top:n,height:r,width:s}=t;return[{x:e,y:n},{x:e+s,y:n},{x:e,y:n+r},{x:e+s,y:n+r}]}function CQ(t,e){if(!t||t.length===0)return null;const[n]=t;return n[e]}function cM(t,e,n){return e===void 0&&(e=t.left),n===void 0&&(n=t.top),{x:e+t.width*.5,y:n+t.height*.5}}const y1e=t=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=cM(e,e.left,e.top),i=[];for(const a of r){const{id:l}=a,c=n.get(l);if(c){const d=jQ(cM(c),s);i.push({id:l,data:{droppableContainer:a,value:d}})}}return i.sort(NQ)},b1e=t=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=lM(e),i=[];for(const a of r){const{id:l}=a,c=n.get(l);if(c){const d=lM(c),h=s.reduce((g,x,y)=>g+jQ(d[y],x),0),m=Number((h/4).toFixed(4));i.push({id:l,data:{droppableContainer:a,value:m}})}}return i.sort(NQ)};function w1e(t,e){const n=Math.max(e.top,t.top),r=Math.max(e.left,t.left),s=Math.min(e.left+e.width,t.left+t.width),i=Math.min(e.top+e.height,t.top+t.height),a=s-r,l=i-n;if(r{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=[];for(const i of r){const{id:a}=i,l=n.get(a);if(l){const c=w1e(l,e);c>0&&s.push({id:a,data:{droppableContainer:i,value:c}})}}return s.sort(v1e)};function k1e(t,e,n){return{...t,scaleX:e&&n?e.width/n.width:1,scaleY:e&&n?e.height/n.height:1}}function TQ(t,e){return t&&e?{x:t.left-e.left,y:t.top-e.top}:eo}function O1e(t){return function(n){for(var r=arguments.length,s=new Array(r>1?r-1:0),i=1;i({...a,top:a.top+t*l.y,bottom:a.bottom+t*l.y,left:a.left+t*l.x,right:a.right+t*l.x}),{...n})}}const j1e=O1e(1);function N1e(t){if(t.startsWith("matrix3d(")){const e=t.slice(9,-1).split(/, /);return{x:+e[12],y:+e[13],scaleX:+e[0],scaleY:+e[5]}}else if(t.startsWith("matrix(")){const e=t.slice(7,-1).split(/, /);return{x:+e[4],y:+e[5],scaleX:+e[0],scaleY:+e[3]}}return null}function C1e(t,e,n){const r=N1e(e);if(!r)return t;const{scaleX:s,scaleY:i,x:a,y:l}=r,c=t.left-a-(1-s)*parseFloat(n),d=t.top-l-(1-i)*parseFloat(n.slice(n.indexOf(" ")+1)),h=s?t.width/s:t.width,m=i?t.height/i:t.height;return{width:h,height:m,top:d,right:c+h,bottom:d+m,left:c}}const T1e={ignoreTransform:!1};function Bf(t,e){e===void 0&&(e=T1e);let n=t.getBoundingClientRect();if(e.ignoreTransform){const{transform:d,transformOrigin:h}=_i(t).getComputedStyle(t);d&&(n=C1e(n,d,h))}const{top:r,left:s,width:i,height:a,bottom:l,right:c}=n;return{top:r,left:s,width:i,height:a,bottom:l,right:c}}function uM(t){return Bf(t,{ignoreTransform:!0})}function E1e(t){const e=t.innerWidth,n=t.innerHeight;return{top:0,left:0,right:e,bottom:n,width:e,height:n}}function _1e(t,e){return e===void 0&&(e=_i(t).getComputedStyle(t)),e.position==="fixed"}function A1e(t,e){e===void 0&&(e=_i(t).getComputedStyle(t));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(s=>{const i=e[s];return typeof i=="string"?n.test(i):!1})}function zb(t,e){const n=[];function r(s){if(e!=null&&n.length>=e||!s)return n;if(sN(s)&&s.scrollingElement!=null&&!n.includes(s.scrollingElement))return n.push(s.scrollingElement),n;if(!hg(s)||SQ(s)||n.includes(s))return n;const i=_i(t).getComputedStyle(s);return s!==t&&A1e(s,i)&&n.push(s),_1e(s,i)?n:r(s.parentNode)}return t?r(t):n}function EQ(t){const[e]=zb(t,1);return e??null}function TS(t){return!Pb||!t?null:If(t)?t:rN(t)?sN(t)||t===Lf(t).scrollingElement?window:hg(t)?t:null:null}function _Q(t){return If(t)?t.scrollX:t.scrollLeft}function AQ(t){return If(t)?t.scrollY:t.scrollTop}function TO(t){return{x:_Q(t),y:AQ(t)}}var bs;(function(t){t[t.Forward=1]="Forward",t[t.Backward=-1]="Backward"})(bs||(bs={}));function MQ(t){return!Pb||!t?!1:t===document.scrollingElement}function RQ(t){const e={x:0,y:0},n=MQ(t)?{height:window.innerHeight,width:window.innerWidth}:{height:t.clientHeight,width:t.clientWidth},r={x:t.scrollWidth-n.width,y:t.scrollHeight-n.height},s=t.scrollTop<=e.y,i=t.scrollLeft<=e.x,a=t.scrollTop>=r.y,l=t.scrollLeft>=r.x;return{isTop:s,isLeft:i,isBottom:a,isRight:l,maxScroll:r,minScroll:e}}const M1e={x:.2,y:.2};function R1e(t,e,n,r,s){let{top:i,left:a,right:l,bottom:c}=n;r===void 0&&(r=10),s===void 0&&(s=M1e);const{isTop:d,isBottom:h,isLeft:m,isRight:g}=RQ(t),x={x:0,y:0},y={x:0,y:0},w={height:e.height*s.y,width:e.width*s.x};return!d&&i<=e.top+w.height?(x.y=bs.Backward,y.y=r*Math.abs((e.top+w.height-i)/w.height)):!h&&c>=e.bottom-w.height&&(x.y=bs.Forward,y.y=r*Math.abs((e.bottom-w.height-c)/w.height)),!g&&l>=e.right-w.width?(x.x=bs.Forward,y.x=r*Math.abs((e.right-w.width-l)/w.width)):!m&&a<=e.left+w.width&&(x.x=bs.Backward,y.x=r*Math.abs((e.left+w.width-a)/w.width)),{direction:x,speed:y}}function D1e(t){if(t===document.scrollingElement){const{innerWidth:i,innerHeight:a}=window;return{top:0,left:0,right:i,bottom:a,width:i,height:a}}const{top:e,left:n,right:r,bottom:s}=t.getBoundingClientRect();return{top:e,left:n,right:r,bottom:s,width:t.clientWidth,height:t.clientHeight}}function DQ(t){return t.reduce((e,n)=>qh(e,TO(n)),eo)}function P1e(t){return t.reduce((e,n)=>e+_Q(n),0)}function z1e(t){return t.reduce((e,n)=>e+AQ(n),0)}function I1e(t,e){if(e===void 0&&(e=Bf),!t)return;const{top:n,left:r,bottom:s,right:i}=e(t);EQ(t)&&(s<=0||i<=0||n>=window.innerHeight||r>=window.innerWidth)&&t.scrollIntoView({block:"center",inline:"center"})}const L1e=[["x",["left","right"],P1e],["y",["top","bottom"],z1e]];class oN{constructor(e,n){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=zb(n),s=DQ(r);this.rect={...e},this.width=e.width,this.height=e.height;for(const[i,a,l]of L1e)for(const c of a)Object.defineProperty(this,c,{get:()=>{const d=l(r),h=s[i]-d;return this.rect[c]+h},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class _0{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(n=>{var r;return(r=this.target)==null?void 0:r.removeEventListener(...n)})},this.target=e}add(e,n,r){var s;(s=this.target)==null||s.addEventListener(e,n,r),this.listeners.push([e,n,r])}}function B1e(t){const{EventTarget:e}=_i(t);return t instanceof e?t:Lf(t)}function ES(t,e){const n=Math.abs(t.x),r=Math.abs(t.y);return typeof e=="number"?Math.sqrt(n**2+r**2)>e:"x"in e&&"y"in e?n>e.x&&r>e.y:"x"in e?n>e.x:"y"in e?r>e.y:!1}var pa;(function(t){t.Click="click",t.DragStart="dragstart",t.Keydown="keydown",t.ContextMenu="contextmenu",t.Resize="resize",t.SelectionChange="selectionchange",t.VisibilityChange="visibilitychange"})(pa||(pa={}));function dM(t){t.preventDefault()}function F1e(t){t.stopPropagation()}var jn;(function(t){t.Space="Space",t.Down="ArrowDown",t.Right="ArrowRight",t.Left="ArrowLeft",t.Up="ArrowUp",t.Esc="Escape",t.Enter="Enter",t.Tab="Tab"})(jn||(jn={}));const PQ={start:[jn.Space,jn.Enter],cancel:[jn.Esc],end:[jn.Space,jn.Enter,jn.Tab]},q1e=(t,e)=>{let{currentCoordinates:n}=e;switch(t.code){case jn.Right:return{...n,x:n.x+25};case jn.Left:return{...n,x:n.x-25};case jn.Down:return{...n,y:n.y+25};case jn.Up:return{...n,y:n.y-25}}};class lN{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;const{event:{target:n}}=e;this.props=e,this.listeners=new _0(Lf(n)),this.windowListeners=new _0(_i(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(pa.Resize,this.handleCancel),this.windowListeners.add(pa.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(pa.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:e,onStart:n}=this.props,r=e.node.current;r&&I1e(r),n(eo)}handleKeyDown(e){if(aN(e)){const{active:n,context:r,options:s}=this.props,{keyboardCodes:i=PQ,coordinateGetter:a=q1e,scrollBehavior:l="smooth"}=s,{code:c}=e;if(i.end.includes(c)){this.handleEnd(e);return}if(i.cancel.includes(c)){this.handleCancel(e);return}const{collisionRect:d}=r.current,h=d?{x:d.left,y:d.top}:eo;this.referenceCoordinates||(this.referenceCoordinates=h);const m=a(e,{active:n,context:r.current,currentCoordinates:h});if(m){const g=pp(m,h),x={x:0,y:0},{scrollableAncestors:y}=r.current;for(const w of y){const S=e.code,{isTop:k,isRight:j,isLeft:N,isBottom:T,maxScroll:E,minScroll:_}=RQ(w),A=D1e(w),D={x:Math.min(S===jn.Right?A.right-A.width/2:A.right,Math.max(S===jn.Right?A.left:A.left+A.width/2,m.x)),y:Math.min(S===jn.Down?A.bottom-A.height/2:A.bottom,Math.max(S===jn.Down?A.top:A.top+A.height/2,m.y))},q=S===jn.Right&&!j||S===jn.Left&&!N,B=S===jn.Down&&!T||S===jn.Up&&!k;if(q&&D.x!==m.x){const H=w.scrollLeft+g.x,W=S===jn.Right&&H<=E.x||S===jn.Left&&H>=_.x;if(W&&!g.y){w.scrollTo({left:H,behavior:l});return}W?x.x=w.scrollLeft-H:x.x=S===jn.Right?w.scrollLeft-E.x:w.scrollLeft-_.x,x.x&&w.scrollBy({left:-x.x,behavior:l});break}else if(B&&D.y!==m.y){const H=w.scrollTop+g.y,W=S===jn.Down&&H<=E.y||S===jn.Up&&H>=_.y;if(W&&!g.x){w.scrollTo({top:H,behavior:l});return}W?x.y=w.scrollTop-H:x.y=S===jn.Down?w.scrollTop-E.y:w.scrollTop-_.y,x.y&&w.scrollBy({top:-x.y,behavior:l});break}}this.handleMove(e,qh(pp(m,this.referenceCoordinates),x))}}}handleMove(e,n){const{onMove:r}=this.props;e.preventDefault(),r(n)}handleEnd(e){const{onEnd:n}=this.props;e.preventDefault(),this.detach(),n()}handleCancel(e){const{onCancel:n}=this.props;e.preventDefault(),this.detach(),n()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}lN.activators=[{eventName:"onKeyDown",handler:(t,e,n)=>{let{keyboardCodes:r=PQ,onActivation:s}=e,{active:i}=n;const{code:a}=t.nativeEvent;if(r.start.includes(a)){const l=i.activatorNode.current;return l&&t.target!==l?!1:(t.preventDefault(),s?.({event:t.nativeEvent}),!0)}return!1}}];function hM(t){return!!(t&&"distance"in t)}function fM(t){return!!(t&&"delay"in t)}class cN{constructor(e,n,r){var s;r===void 0&&(r=B1e(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=n;const{event:i}=e,{target:a}=i;this.props=e,this.events=n,this.document=Lf(a),this.documentListeners=new _0(this.document),this.listeners=new _0(r),this.windowListeners=new _0(_i(a)),this.initialCoordinates=(s=CO(i))!=null?s:eo,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:e,props:{options:{activationConstraint:n,bypassActivationConstraint:r}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(pa.Resize,this.handleCancel),this.windowListeners.add(pa.DragStart,dM),this.windowListeners.add(pa.VisibilityChange,this.handleCancel),this.windowListeners.add(pa.ContextMenu,dM),this.documentListeners.add(pa.Keydown,this.handleKeydown),n){if(r!=null&&r({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(fM(n)){this.timeoutId=setTimeout(this.handleStart,n.delay),this.handlePending(n);return}if(hM(n)){this.handlePending(n);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,n){const{active:r,onPending:s}=this.props;s(r,e,this.initialCoordinates,n)}handleStart(){const{initialCoordinates:e}=this,{onStart:n}=this.props;e&&(this.activated=!0,this.documentListeners.add(pa.Click,F1e,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(pa.SelectionChange,this.removeTextSelection),n(e))}handleMove(e){var n;const{activated:r,initialCoordinates:s,props:i}=this,{onMove:a,options:{activationConstraint:l}}=i;if(!s)return;const c=(n=CO(e))!=null?n:eo,d=pp(s,c);if(!r&&l){if(hM(l)){if(l.tolerance!=null&&ES(d,l.tolerance))return this.handleCancel();if(ES(d,l.distance))return this.handleStart()}if(fM(l)&&ES(d,l.tolerance))return this.handleCancel();this.handlePending(l,d);return}e.cancelable&&e.preventDefault(),a(c)}handleEnd(){const{onAbort:e,onEnd:n}=this.props;this.detach(),this.activated||e(this.props.active),n()}handleCancel(){const{onAbort:e,onCancel:n}=this.props;this.detach(),this.activated||e(this.props.active),n()}handleKeydown(e){e.code===jn.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}}const $1e={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class uN extends cN{constructor(e){const{event:n}=e,r=Lf(n.target);super(e,$1e,r)}}uN.activators=[{eventName:"onPointerDown",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];const H1e={move:{name:"mousemove"},end:{name:"mouseup"}};var EO;(function(t){t[t.RightClick=2]="RightClick"})(EO||(EO={}));class Q1e extends cN{constructor(e){super(e,H1e,Lf(e.event.target))}}Q1e.activators=[{eventName:"onMouseDown",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;return n.button===EO.RightClick?!1:(r?.({event:n}),!0)}}];const _S={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class V1e extends cN{constructor(e){super(e,_S)}static setup(){return window.addEventListener(_S.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(_S.move.name,e)};function e(){}}}V1e.activators=[{eventName:"onTouchStart",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;const{touches:s}=n;return s.length>1?!1:(r?.({event:n}),!0)}}];var A0;(function(t){t[t.Pointer=0]="Pointer",t[t.DraggableRect=1]="DraggableRect"})(A0||(A0={}));var wy;(function(t){t[t.TreeOrder=0]="TreeOrder",t[t.ReversedTreeOrder=1]="ReversedTreeOrder"})(wy||(wy={}));function U1e(t){let{acceleration:e,activator:n=A0.Pointer,canScroll:r,draggingRect:s,enabled:i,interval:a=5,order:l=wy.TreeOrder,pointerCoordinates:c,scrollableAncestors:d,scrollableAncestorRects:h,delta:m,threshold:g}=t;const x=G1e({delta:m,disabled:!i}),[y,w]=s1e(),S=b.useRef({x:0,y:0}),k=b.useRef({x:0,y:0}),j=b.useMemo(()=>{switch(n){case A0.Pointer:return c?{top:c.y,bottom:c.y,left:c.x,right:c.x}:null;case A0.DraggableRect:return s}},[n,s,c]),N=b.useRef(null),T=b.useCallback(()=>{const _=N.current;if(!_)return;const A=S.current.x*k.current.x,D=S.current.y*k.current.y;_.scrollBy(A,D)},[]),E=b.useMemo(()=>l===wy.TreeOrder?[...d].reverse():d,[l,d]);b.useEffect(()=>{if(!i||!d.length||!j){w();return}for(const _ of E){if(r?.(_)===!1)continue;const A=d.indexOf(_),D=h[A];if(!D)continue;const{direction:q,speed:B}=R1e(_,D,j,e,g);for(const H of["x","y"])x[H][q[H]]||(B[H]=0,q[H]=0);if(B.x>0||B.y>0){w(),N.current=_,y(T,a),S.current=B,k.current=q;return}}S.current={x:0,y:0},k.current={x:0,y:0},w()},[e,T,r,w,i,a,JSON.stringify(j),JSON.stringify(x),y,d,E,h,JSON.stringify(g)])}const W1e={x:{[bs.Backward]:!1,[bs.Forward]:!1},y:{[bs.Backward]:!1,[bs.Forward]:!1}};function G1e(t){let{delta:e,disabled:n}=t;const r=NO(e);return fg(s=>{if(n||!r||!s)return W1e;const i={x:Math.sign(e.x-r.x),y:Math.sign(e.y-r.y)};return{x:{[bs.Backward]:s.x[bs.Backward]||i.x===-1,[bs.Forward]:s.x[bs.Forward]||i.x===1},y:{[bs.Backward]:s.y[bs.Backward]||i.y===-1,[bs.Forward]:s.y[bs.Forward]||i.y===1}}},[n,e,r])}function X1e(t,e){const n=e!=null?t.get(e):void 0,r=n?n.node.current:null;return fg(s=>{var i;return e==null?null:(i=r??s)!=null?i:null},[r,e])}function Y1e(t,e){return b.useMemo(()=>t.reduce((n,r)=>{const{sensor:s}=r,i=s.activators.map(a=>({eventName:a.eventName,handler:e(a.handler,r)}));return[...n,...i]},[]),[t,e])}var xp;(function(t){t[t.Always=0]="Always",t[t.BeforeDragging=1]="BeforeDragging",t[t.WhileDragging=2]="WhileDragging"})(xp||(xp={}));var _O;(function(t){t.Optimized="optimized"})(_O||(_O={}));const mM=new Map;function K1e(t,e){let{dragging:n,dependencies:r,config:s}=e;const[i,a]=b.useState(null),{frequency:l,measure:c,strategy:d}=s,h=b.useRef(t),m=S(),g=mp(m),x=b.useCallback(function(k){k===void 0&&(k=[]),!g.current&&a(j=>j===null?k:j.concat(k.filter(N=>!j.includes(N))))},[g]),y=b.useRef(null),w=fg(k=>{if(m&&!n)return mM;if(!k||k===mM||h.current!==t||i!=null){const j=new Map;for(let N of t){if(!N)continue;if(i&&i.length>0&&!i.includes(N.id)&&N.rect.current){j.set(N.id,N.rect.current);continue}const T=N.node.current,E=T?new oN(c(T),T):null;N.rect.current=E,E&&j.set(N.id,E)}return j}return k},[t,i,n,m,c]);return b.useEffect(()=>{h.current=t},[t]),b.useEffect(()=>{m||x()},[n,m]),b.useEffect(()=>{i&&i.length>0&&a(null)},[JSON.stringify(i)]),b.useEffect(()=>{m||typeof l!="number"||y.current!==null||(y.current=setTimeout(()=>{x(),y.current=null},l))},[l,m,x,...r]),{droppableRects:w,measureDroppableContainers:x,measuringScheduled:i!=null};function S(){switch(d){case xp.Always:return!1;case xp.BeforeDragging:return n;default:return!n}}}function zQ(t,e){return fg(n=>t?n||(typeof e=="function"?e(t):t):null,[e,t])}function Z1e(t,e){return zQ(t,e)}function J1e(t){let{callback:e,disabled:n}=t;const r=iN(e),s=b.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:i}=window;return new i(r)},[r,n]);return b.useEffect(()=>()=>s?.disconnect(),[s]),s}function Ib(t){let{callback:e,disabled:n}=t;const r=iN(e),s=b.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:i}=window;return new i(r)},[n]);return b.useEffect(()=>()=>s?.disconnect(),[s]),s}function eve(t){return new oN(Bf(t),t)}function pM(t,e,n){e===void 0&&(e=eve);const[r,s]=b.useState(null);function i(){s(c=>{if(!t)return null;if(t.isConnected===!1){var d;return(d=c??n)!=null?d:null}const h=e(t);return JSON.stringify(c)===JSON.stringify(h)?c:h})}const a=J1e({callback(c){if(t)for(const d of c){const{type:h,target:m}=d;if(h==="childList"&&m instanceof HTMLElement&&m.contains(t)){i();break}}}}),l=Ib({callback:i});return $o(()=>{i(),t?(l?.observe(t),a?.observe(document.body,{childList:!0,subtree:!0})):(l?.disconnect(),a?.disconnect())},[t]),r}function tve(t){const e=zQ(t);return TQ(t,e)}const gM=[];function nve(t){const e=b.useRef(t),n=fg(r=>t?r&&r!==gM&&t&&e.current&&t.parentNode===e.current.parentNode?r:zb(t):gM,[t]);return b.useEffect(()=>{e.current=t},[t]),n}function rve(t){const[e,n]=b.useState(null),r=b.useRef(t),s=b.useCallback(i=>{const a=TS(i.target);a&&n(l=>l?(l.set(a,TO(a)),new Map(l)):null)},[]);return b.useEffect(()=>{const i=r.current;if(t!==i){a(i);const l=t.map(c=>{const d=TS(c);return d?(d.addEventListener("scroll",s,{passive:!0}),[d,TO(d)]):null}).filter(c=>c!=null);n(l.length?new Map(l):null),r.current=t}return()=>{a(t),a(i)};function a(l){l.forEach(c=>{const d=TS(c);d?.removeEventListener("scroll",s)})}},[s,t]),b.useMemo(()=>t.length?e?Array.from(e.values()).reduce((i,a)=>qh(i,a),eo):DQ(t):eo,[t,e])}function xM(t,e){e===void 0&&(e=[]);const n=b.useRef(null);return b.useEffect(()=>{n.current=null},e),b.useEffect(()=>{const r=t!==eo;r&&!n.current&&(n.current=t),!r&&n.current&&(n.current=null)},[t]),n.current?pp(t,n.current):eo}function sve(t){b.useEffect(()=>{if(!Pb)return;const e=t.map(n=>{let{sensor:r}=n;return r.setup==null?void 0:r.setup()});return()=>{for(const n of e)n?.()}},t.map(e=>{let{sensor:n}=e;return n}))}function ive(t,e){return b.useMemo(()=>t.reduce((n,r)=>{let{eventName:s,handler:i}=r;return n[s]=a=>{i(a,e)},n},{}),[t,e])}function IQ(t){return b.useMemo(()=>t?E1e(t):null,[t])}const vM=[];function ave(t,e){e===void 0&&(e=Bf);const[n]=t,r=IQ(n?_i(n):null),[s,i]=b.useState(vM);function a(){i(()=>t.length?t.map(c=>MQ(c)?r:new oN(e(c),c)):vM)}const l=Ib({callback:a});return $o(()=>{l?.disconnect(),a(),t.forEach(c=>l?.observe(c))},[t]),s}function ove(t){if(!t)return null;if(t.children.length>1)return t;const e=t.children[0];return hg(e)?e:t}function lve(t){let{measure:e}=t;const[n,r]=b.useState(null),s=b.useCallback(d=>{for(const{target:h}of d)if(hg(h)){r(m=>{const g=e(h);return m?{...m,width:g.width,height:g.height}:g});break}},[e]),i=Ib({callback:s}),a=b.useCallback(d=>{const h=ove(d);i?.disconnect(),h&&i?.observe(h),r(h?e(h):null)},[e,i]),[l,c]=yy(a);return b.useMemo(()=>({nodeRef:l,rect:n,setRef:c}),[n,l,c])}const cve=[{sensor:uN,options:{}},{sensor:lN,options:{}}],uve={current:{}},Nv={draggable:{measure:uM},droppable:{measure:uM,strategy:xp.WhileDragging,frequency:_O.Optimized},dragOverlay:{measure:Bf}};class M0 extends Map{get(e){var n;return e!=null&&(n=super.get(e))!=null?n:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:n}=e;return!n})}getNodeFor(e){var n,r;return(n=(r=this.get(e))==null?void 0:r.node.current)!=null?n:void 0}}const dve={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new M0,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:by},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:Nv,measureDroppableContainers:by,windowRect:null,measuringScheduled:!1},hve={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:by,draggableNodes:new Map,over:null,measureDroppableContainers:by},Lb=b.createContext(hve),LQ=b.createContext(dve);function fve(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new M0}}}function mve(t,e){switch(e.type){case ds.DragStart:return{...t,draggable:{...t.draggable,initialCoordinates:e.initialCoordinates,active:e.active}};case ds.DragMove:return t.draggable.active==null?t:{...t,draggable:{...t.draggable,translate:{x:e.coordinates.x-t.draggable.initialCoordinates.x,y:e.coordinates.y-t.draggable.initialCoordinates.y}}};case ds.DragEnd:case ds.DragCancel:return{...t,draggable:{...t.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case ds.RegisterDroppable:{const{element:n}=e,{id:r}=n,s=new M0(t.droppable.containers);return s.set(r,n),{...t,droppable:{...t.droppable,containers:s}}}case ds.SetDroppableDisabled:{const{id:n,key:r,disabled:s}=e,i=t.droppable.containers.get(n);if(!i||r!==i.key)return t;const a=new M0(t.droppable.containers);return a.set(n,{...i,disabled:s}),{...t,droppable:{...t.droppable,containers:a}}}case ds.UnregisterDroppable:{const{id:n,key:r}=e,s=t.droppable.containers.get(n);if(!s||r!==s.key)return t;const i=new M0(t.droppable.containers);return i.delete(n),{...t,droppable:{...t.droppable,containers:i}}}default:return t}}function pve(t){let{disabled:e}=t;const{active:n,activatorEvent:r,draggableNodes:s}=b.useContext(Lb),i=NO(r),a=NO(n?.id);return b.useEffect(()=>{if(!e&&!r&&i&&a!=null){if(!aN(i)||document.activeElement===i.target)return;const l=s.get(a);if(!l)return;const{activatorNode:c,node:d}=l;if(!c.current&&!d.current)return;requestAnimationFrame(()=>{for(const h of[c.current,d.current]){if(!h)continue;const m=o1e(h);if(m){m.focus();break}}})}},[r,e,s,a,i]),null}function gve(t,e){let{transform:n,...r}=e;return t!=null&&t.length?t.reduce((s,i)=>i({transform:s,...r}),n):n}function xve(t){return b.useMemo(()=>({draggable:{...Nv.draggable,...t?.draggable},droppable:{...Nv.droppable,...t?.droppable},dragOverlay:{...Nv.dragOverlay,...t?.dragOverlay}}),[t?.draggable,t?.droppable,t?.dragOverlay])}function vve(t){let{activeNode:e,measure:n,initialRect:r,config:s=!0}=t;const i=b.useRef(!1),{x:a,y:l}=typeof s=="boolean"?{x:s,y:s}:s;$o(()=>{if(!a&&!l||!e){i.current=!1;return}if(i.current||!r)return;const d=e?.node.current;if(!d||d.isConnected===!1)return;const h=n(d),m=TQ(h,r);if(a||(m.x=0),l||(m.y=0),i.current=!0,Math.abs(m.x)>0||Math.abs(m.y)>0){const g=EQ(d);g&&g.scrollBy({top:m.y,left:m.x})}},[e,a,l,r,n])}const BQ=b.createContext({...eo,scaleX:1,scaleY:1});var Ic;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.Initializing=1]="Initializing",t[t.Initialized=2]="Initialized"})(Ic||(Ic={}));const yve=b.memo(function(e){var n,r,s,i;let{id:a,accessibility:l,autoScroll:c=!0,children:d,sensors:h=cve,collisionDetection:m=S1e,measuring:g,modifiers:x,...y}=e;const w=b.useReducer(mve,void 0,fve),[S,k]=w,[j,N]=f1e(),[T,E]=b.useState(Ic.Uninitialized),_=T===Ic.Initialized,{draggable:{active:A,nodes:D,translate:q},droppable:{containers:B}}=S,H=A!=null?D.get(A):null,W=b.useRef({initial:null,translated:null}),ee=b.useMemo(()=>{var Gt;return A!=null?{id:A,data:(Gt=H?.data)!=null?Gt:uve,rect:W}:null},[A,H]),I=b.useRef(null),[V,L]=b.useState(null),[$,K]=b.useState(null),Y=mp(y,Object.values(y)),R=mg("DndDescribedBy",a),ie=b.useMemo(()=>B.getEnabled(),[B]),X=xve(g),{droppableRects:z,measureDroppableContainers:U,measuringScheduled:te}=K1e(ie,{dragging:_,dependencies:[q.x,q.y],config:X.droppable}),ne=X1e(D,A),G=b.useMemo(()=>$?CO($):null,[$]),se=Wt(),re=Z1e(ne,X.draggable.measure);vve({activeNode:A!=null?D.get(A):null,config:se.layoutShiftCompensation,initialRect:re,measure:X.draggable.measure});const ae=pM(ne,X.draggable.measure,re),_e=pM(ne?ne.parentElement:null),Be=b.useRef({activatorEvent:null,active:null,activeNode:ne,collisionRect:null,collisions:null,droppableRects:z,draggableNodes:D,draggingNode:null,draggingNodeRect:null,droppableContainers:B,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),Ye=B.getNodeFor((n=Be.current.over)==null?void 0:n.id),Je=lve({measure:X.dragOverlay.measure}),Oe=(r=Je.nodeRef.current)!=null?r:ne,Ve=_?(s=Je.rect)!=null?s:ae:null,Ue=!!(Je.nodeRef.current&&Je.rect),$e=tve(Ue?null:ae),jt=IQ(Oe?_i(Oe):null),vt=nve(_?Ye??ne:null),$n=ave(vt),qt=gve(x,{transform:{x:q.x-$e.x,y:q.y-$e.y,scaleX:1,scaleY:1},activatorEvent:$,active:ee,activeNodeRect:ae,containerNodeRect:_e,draggingNodeRect:Ve,over:Be.current.over,overlayNodeRect:Je.rect,scrollableAncestors:vt,scrollableAncestorRects:$n,windowRect:jt}),un=G?qh(G,q):null,Mt=rve(vt),ct=xM(Mt),Ne=xM(Mt,[ae]),ze=qh(qt,ct),rt=Ve?j1e(Ve,qt):null,bt=ee&&rt?m({active:ee,collisionRect:rt,droppableRects:z,droppableContainers:ie,pointerCoordinates:un}):null,zt=CQ(bt,"id"),[Rt,Hn]=b.useState(null),We=Ue?qt:qh(qt,Ne),ot=k1e(We,(i=Rt?.rect)!=null?i:null,ae),dn=b.useRef(null),Pt=b.useCallback((Gt,lt)=>{let{sensor:ve,options:He}=lt;if(I.current==null)return;const ht=D.get(I.current);if(!ht)return;const vn=Gt.nativeEvent,Qn=new ve({active:I.current,activeNode:ht,event:vn,options:He,context:Be,onAbort(ar){if(!D.get(ar))return;const{onDragAbort:vs}=Y.current,js={id:ar};vs?.(js),j({type:"onDragAbort",event:js})},onPending(ar,xs,vs,js){if(!D.get(ar))return;const{onDragPending:Ie}=Y.current,Et={id:ar,constraint:xs,initialCoordinates:vs,offset:js};Ie?.(Et),j({type:"onDragPending",event:Et})},onStart(ar){const xs=I.current;if(xs==null)return;const vs=D.get(xs);if(!vs)return;const{onDragStart:js}=Y.current,ge={activatorEvent:vn,active:{id:xs,data:vs.data,rect:W}};ya.unstable_batchedUpdates(()=>{js?.(ge),E(Ic.Initializing),k({type:ds.DragStart,initialCoordinates:ar,active:xs}),j({type:"onDragStart",event:ge}),L(dn.current),K(vn)})},onMove(ar){k({type:ds.DragMove,coordinates:ar})},onEnd:fr(ds.DragEnd),onCancel:fr(ds.DragCancel)});dn.current=Qn;function fr(ar){return async function(){const{active:vs,collisions:js,over:ge,scrollAdjustedTranslate:Ie}=Be.current;let Et=null;if(vs&&Ie){const{cancelDrop:kn}=Y.current;Et={activatorEvent:vn,active:vs,collisions:js,delta:Ie,over:ge},ar===ds.DragEnd&&typeof kn=="function"&&await Promise.resolve(kn(Et))&&(ar=ds.DragCancel)}I.current=null,ya.unstable_batchedUpdates(()=>{k({type:ar}),E(Ic.Uninitialized),Hn(null),L(null),K(null),dn.current=null;const kn=ar===ds.DragEnd?"onDragEnd":"onDragCancel";if(Et){const Hr=Y.current[kn];Hr?.(Et),j({type:kn,event:Et})}})}}},[D]),xn=b.useCallback((Gt,lt)=>(ve,He)=>{const ht=ve.nativeEvent,vn=D.get(He);if(I.current!==null||!vn||ht.dndKit||ht.defaultPrevented)return;const Qn={active:vn};Gt(ve,lt.options,Qn)===!0&&(ht.dndKit={capturedBy:lt.sensor},I.current=He,Pt(ve,lt))},[D,Pt]),dt=Y1e(h,xn);sve(h),$o(()=>{ae&&T===Ic.Initializing&&E(Ic.Initialized)},[ae,T]),b.useEffect(()=>{const{onDragMove:Gt}=Y.current,{active:lt,activatorEvent:ve,collisions:He,over:ht}=Be.current;if(!lt||!ve)return;const vn={active:lt,activatorEvent:ve,collisions:He,delta:{x:ze.x,y:ze.y},over:ht};ya.unstable_batchedUpdates(()=>{Gt?.(vn),j({type:"onDragMove",event:vn})})},[ze.x,ze.y]),b.useEffect(()=>{const{active:Gt,activatorEvent:lt,collisions:ve,droppableContainers:He,scrollAdjustedTranslate:ht}=Be.current;if(!Gt||I.current==null||!lt||!ht)return;const{onDragOver:vn}=Y.current,Qn=He.get(zt),fr=Qn&&Qn.rect.current?{id:Qn.id,rect:Qn.rect.current,data:Qn.data,disabled:Qn.disabled}:null,ar={active:Gt,activatorEvent:lt,collisions:ve,delta:{x:ht.x,y:ht.y},over:fr};ya.unstable_batchedUpdates(()=>{Hn(fr),vn?.(ar),j({type:"onDragOver",event:ar})})},[zt]),$o(()=>{Be.current={activatorEvent:$,active:ee,activeNode:ne,collisionRect:rt,collisions:bt,droppableRects:z,draggableNodes:D,draggingNode:Oe,draggingNodeRect:Ve,droppableContainers:B,over:Rt,scrollableAncestors:vt,scrollAdjustedTranslate:ze},W.current={initial:Ve,translated:rt}},[ee,ne,bt,rt,D,Oe,Ve,z,B,Rt,vt,ze]),U1e({...se,delta:q,draggingRect:rt,pointerCoordinates:un,scrollableAncestors:vt,scrollableAncestorRects:$n});const rn=b.useMemo(()=>({active:ee,activeNode:ne,activeNodeRect:ae,activatorEvent:$,collisions:bt,containerNodeRect:_e,dragOverlay:Je,draggableNodes:D,droppableContainers:B,droppableRects:z,over:Rt,measureDroppableContainers:U,scrollableAncestors:vt,scrollableAncestorRects:$n,measuringConfiguration:X,measuringScheduled:te,windowRect:jt}),[ee,ne,ae,$,bt,_e,Je,D,B,z,Rt,U,vt,$n,X,te,jt]),wt=b.useMemo(()=>({activatorEvent:$,activators:dt,active:ee,activeNodeRect:ae,ariaDescribedById:{draggable:R},dispatch:k,draggableNodes:D,over:Rt,measureDroppableContainers:U}),[$,dt,ee,ae,k,R,D,Rt,U]);return oe.createElement(OQ.Provider,{value:N},oe.createElement(Lb.Provider,{value:wt},oe.createElement(LQ.Provider,{value:rn},oe.createElement(BQ.Provider,{value:ot},d)),oe.createElement(pve,{disabled:l?.restoreFocus===!1})),oe.createElement(g1e,{...l,hiddenTextDescribedById:R}));function Wt(){const Gt=V?.autoScrollEnabled===!1,lt=typeof c=="object"?c.enabled===!1:c===!1,ve=_&&!Gt&&!lt;return typeof c=="object"?{...c,enabled:ve}:{enabled:ve}}}),bve=b.createContext(null),yM="button",wve="Draggable";function Sve(t){let{id:e,data:n,disabled:r=!1,attributes:s}=t;const i=mg(wve),{activators:a,activatorEvent:l,active:c,activeNodeRect:d,ariaDescribedById:h,draggableNodes:m,over:g}=b.useContext(Lb),{role:x=yM,roleDescription:y="draggable",tabIndex:w=0}=s??{},S=c?.id===e,k=b.useContext(S?BQ:bve),[j,N]=yy(),[T,E]=yy(),_=ive(a,e),A=mp(n);$o(()=>(m.set(e,{id:e,key:i,node:j,activatorNode:T,data:A}),()=>{const q=m.get(e);q&&q.key===i&&m.delete(e)}),[m,e]);const D=b.useMemo(()=>({role:x,tabIndex:w,"aria-disabled":r,"aria-pressed":S&&x===yM?!0:void 0,"aria-roledescription":y,"aria-describedby":h.draggable}),[r,x,w,S,y,h.draggable]);return{active:c,activatorEvent:l,activeNodeRect:d,attributes:D,isDragging:S,listeners:r?void 0:_,node:j,over:g,setNodeRef:N,setActivatorNodeRef:E,transform:k}}function kve(){return b.useContext(LQ)}const Ove="Droppable",jve={timeout:25};function Nve(t){let{data:e,disabled:n=!1,id:r,resizeObserverConfig:s}=t;const i=mg(Ove),{active:a,dispatch:l,over:c,measureDroppableContainers:d}=b.useContext(Lb),h=b.useRef({disabled:n}),m=b.useRef(!1),g=b.useRef(null),x=b.useRef(null),{disabled:y,updateMeasurementsFor:w,timeout:S}={...jve,...s},k=mp(w??r),j=b.useCallback(()=>{if(!m.current){m.current=!0;return}x.current!=null&&clearTimeout(x.current),x.current=setTimeout(()=>{d(Array.isArray(k.current)?k.current:[k.current]),x.current=null},S)},[S]),N=Ib({callback:j,disabled:y||!a}),T=b.useCallback((D,q)=>{N&&(q&&(N.unobserve(q),m.current=!1),D&&N.observe(D))},[N]),[E,_]=yy(T),A=mp(e);return b.useEffect(()=>{!N||!E.current||(N.disconnect(),m.current=!1,N.observe(E.current))},[E,N]),b.useEffect(()=>(l({type:ds.RegisterDroppable,element:{id:r,key:i,disabled:n,node:E,rect:g,data:A}}),()=>l({type:ds.UnregisterDroppable,key:i,id:r})),[r]),b.useEffect(()=>{n!==h.current.disabled&&(l({type:ds.SetDroppableDisabled,id:r,key:i,disabled:n}),h.current.disabled=n)},[r,i,n,l]),{active:a,rect:g,isOver:c?.id===r,node:E,over:c,setNodeRef:_}}function dN(t,e,n){const r=t.slice();return r.splice(n<0?r.length+n:n,0,r.splice(e,1)[0]),r}function Cve(t,e){return t.reduce((n,r,s)=>{const i=e.get(r);return i&&(n[s]=i),n},Array(t.length))}function _1(t){return t!==null&&t>=0}function Tve(t,e){if(t===e)return!0;if(t.length!==e.length)return!1;for(let n=0;n{var e;let{rects:n,activeNodeRect:r,activeIndex:s,overIndex:i,index:a}=t;const l=(e=n[s])!=null?e:r;if(!l)return null;const c=Ave(n,a,s);if(a===s){const d=n[i];return d?{x:ss&&a<=i?{x:-l.width-c,y:0,...A1}:a=i?{x:l.width+c,y:0,...A1}:{x:0,y:0,...A1}};function Ave(t,e,n){const r=t[e],s=t[e-1],i=t[e+1];return!r||!s&&!i?0:n{let{rects:e,activeIndex:n,overIndex:r,index:s}=t;const i=dN(e,r,n),a=e[s],l=i[s];return!l||!a?null:{x:l.left-a.left,y:l.top-a.top,scaleX:l.width/a.width,scaleY:l.height/a.height}},qQ="Sortable",$Q=oe.createContext({activeIndex:-1,containerId:qQ,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:FQ,disabled:{draggable:!1,droppable:!1}});function Mve(t){let{children:e,id:n,items:r,strategy:s=FQ,disabled:i=!1}=t;const{active:a,dragOverlay:l,droppableRects:c,over:d,measureDroppableContainers:h}=kve(),m=mg(qQ,n),g=l.rect!==null,x=b.useMemo(()=>r.map(_=>typeof _=="object"&&"id"in _?_.id:_),[r]),y=a!=null,w=a?x.indexOf(a.id):-1,S=d?x.indexOf(d.id):-1,k=b.useRef(x),j=!Tve(x,k.current),N=S!==-1&&w===-1||j,T=Eve(i);$o(()=>{j&&y&&h(x)},[j,x,y,h]),b.useEffect(()=>{k.current=x},[x]);const E=b.useMemo(()=>({activeIndex:w,containerId:m,disabled:T,disableTransforms:N,items:x,overIndex:S,useDragOverlay:g,sortedRects:Cve(x,c),strategy:s}),[w,m,T.draggable,T.droppable,N,x,S,c,g,s]);return oe.createElement($Q.Provider,{value:E},e)}const Rve=t=>{let{id:e,items:n,activeIndex:r,overIndex:s}=t;return dN(n,r,s).indexOf(e)},Dve=t=>{let{containerId:e,isSorting:n,wasDragging:r,index:s,items:i,newIndex:a,previousItems:l,previousContainerId:c,transition:d}=t;return!d||!r||l!==i&&s===a?!1:n?!0:a!==s&&e===c},Pve={duration:200,easing:"ease"},HQ="transform",zve=gp.Transition.toString({property:HQ,duration:0,easing:"linear"}),Ive={roleDescription:"sortable"};function Lve(t){let{disabled:e,index:n,node:r,rect:s}=t;const[i,a]=b.useState(null),l=b.useRef(n);return $o(()=>{if(!e&&n!==l.current&&r.current){const c=s.current;if(c){const d=Bf(r.current,{ignoreTransform:!0}),h={x:c.left-d.left,y:c.top-d.top,scaleX:c.width/d.width,scaleY:c.height/d.height};(h.x||h.y)&&a(h)}}n!==l.current&&(l.current=n)},[e,n,r,s]),b.useEffect(()=>{i&&a(null)},[i]),i}function Bve(t){let{animateLayoutChanges:e=Dve,attributes:n,disabled:r,data:s,getNewIndex:i=Rve,id:a,strategy:l,resizeObserverConfig:c,transition:d=Pve}=t;const{items:h,containerId:m,activeIndex:g,disabled:x,disableTransforms:y,sortedRects:w,overIndex:S,useDragOverlay:k,strategy:j}=b.useContext($Q),N=Fve(r,x),T=h.indexOf(a),E=b.useMemo(()=>({sortable:{containerId:m,index:T,items:h},...s}),[m,s,T,h]),_=b.useMemo(()=>h.slice(h.indexOf(a)),[h,a]),{rect:A,node:D,isOver:q,setNodeRef:B}=Nve({id:a,data:E,disabled:N.droppable,resizeObserverConfig:{updateMeasurementsFor:_,...c}}),{active:H,activatorEvent:W,activeNodeRect:ee,attributes:I,setNodeRef:V,listeners:L,isDragging:$,over:K,setActivatorNodeRef:Y,transform:R}=Sve({id:a,data:E,attributes:{...Ive,...n},disabled:N.draggable}),ie=r1e(B,V),X=!!H,z=X&&!y&&_1(g)&&_1(S),U=!k&&$,te=U&&z?R:null,G=z?te??(l??j)({rects:w,activeNodeRect:ee,activeIndex:g,overIndex:S,index:T}):null,se=_1(g)&&_1(S)?i({id:a,items:h,activeIndex:g,overIndex:S}):T,re=H?.id,ae=b.useRef({activeId:re,items:h,newIndex:se,containerId:m}),_e=h!==ae.current.items,Be=e({active:H,containerId:m,isDragging:$,isSorting:X,id:a,index:T,items:h,newIndex:ae.current.newIndex,previousItems:ae.current.items,previousContainerId:ae.current.containerId,transition:d,wasDragging:ae.current.activeId!=null}),Ye=Lve({disabled:!Be,index:T,node:D,rect:A});return b.useEffect(()=>{X&&ae.current.newIndex!==se&&(ae.current.newIndex=se),m!==ae.current.containerId&&(ae.current.containerId=m),h!==ae.current.items&&(ae.current.items=h)},[X,se,m,h]),b.useEffect(()=>{if(re===ae.current.activeId)return;if(re!=null&&ae.current.activeId==null){ae.current.activeId=re;return}const Oe=setTimeout(()=>{ae.current.activeId=re},50);return()=>clearTimeout(Oe)},[re]),{active:H,activeIndex:g,attributes:I,data:E,rect:A,index:T,newIndex:se,items:h,isOver:q,isSorting:X,isDragging:$,listeners:L,node:D,overIndex:S,over:K,setNodeRef:ie,setActivatorNodeRef:Y,setDroppableNodeRef:B,setDraggableNodeRef:V,transform:Ye??G,transition:Je()};function Je(){if(Ye||_e&&ae.current.newIndex===T)return zve;if(!(U&&!aN(W)||!d)&&(X||Be))return gp.Transition.toString({...d,property:HQ})}}function Fve(t,e){var n,r;return typeof t=="boolean"?{draggable:t,droppable:!1}:{draggable:(n=t?.draggable)!=null?n:e.draggable,droppable:(r=t?.droppable)!=null?r:e.droppable}}function Sy(t){if(!t)return!1;const e=t.data.current;return!!(e&&"sortable"in e&&typeof e.sortable=="object"&&"containerId"in e.sortable&&"items"in e.sortable&&"index"in e.sortable)}const qve=[jn.Down,jn.Right,jn.Up,jn.Left],$ve=(t,e)=>{let{context:{active:n,collisionRect:r,droppableRects:s,droppableContainers:i,over:a,scrollableAncestors:l}}=e;if(qve.includes(t.code)){if(t.preventDefault(),!n||!r)return;const c=[];i.getEnabled().forEach(m=>{if(!m||m!=null&&m.disabled)return;const g=s.get(m.id);if(g)switch(t.code){case jn.Down:r.topg.top&&c.push(m);break;case jn.Left:r.left>g.left&&c.push(m);break;case jn.Right:r.left1&&(h=d[1].id),h!=null){const m=i.get(n.id),g=i.get(h),x=g?s.get(g.id):null,y=g?.node.current;if(y&&x&&m&&g){const S=zb(y).some((_,A)=>l[A]!==_),k=QQ(m,g),j=Hve(m,g),N=S||!k?{x:0,y:0}:{x:j?r.width-x.width:0,y:j?r.height-x.height:0},T={x:x.left,y:x.top};return N.x&&N.y?T:pp(T,N)}}}};function QQ(t,e){return!Sy(t)||!Sy(e)?!1:t.data.current.sortable.containerId===e.data.current.sortable.containerId}function Hve(t,e){return!Sy(t)||!Sy(e)||!QQ(t,e)?!1:t.data.current.sortable.index{h.stopPropagation(),n(t)}})]})})}function Vve({options:t,selected:e,onChange:n,placeholder:r="选择选项...",emptyText:s="未找到选项",className:i}){const[a,l]=b.useState(!1),c=x1e(oM(uN,{activationConstraint:{distance:8}}),oM(lN,{coordinateGetter:$ve})),d=g=>{e.includes(g)?n(e.filter(x=>x!==g)):n([...e,g])},h=g=>{n(e.filter(x=>x!==g))},m=g=>{const{active:x,over:y}=g;if(y&&x.id!==y.id){const w=e.indexOf(x.id),S=e.indexOf(y.id);n(dN(e,w,S))}};return o.jsxs(Bo,{open:a,onOpenChange:l,children:[o.jsx(Fo,{asChild:!0,children:o.jsxs(ue,{variant:"outline",role:"combobox","aria-expanded":a,className:xe("w-full justify-between min-h-10 h-auto",i),children:[o.jsx(yve,{sensors:c,collisionDetection:y1e,onDragEnd:m,children:o.jsx(Mve,{items:e,strategy:_ve,children:o.jsx("div",{className:"flex gap-1 flex-wrap flex-1",children:e.length===0?o.jsx("span",{className:"text-muted-foreground",children:r}):e.map(g=>{const x=t.find(y=>y.value===g);return o.jsx(Qve,{value:g,label:x?.label||g,onRemove:h},g)})})})}),o.jsx(Lj,{className:"ml-2 h-4 w-4 shrink-0 opacity-50",strokeWidth:2,fill:"none"})]})}),o.jsx(Ka,{className:"w-full p-0",align:"start",children:o.jsxs(Tb,{children:[o.jsx(Eb,{placeholder:"搜索...",className:"h-9"}),o.jsxs(_b,{children:[o.jsx(Ab,{children:s}),o.jsx(up,{children:t.map(g=>{const x=e.includes(g.value);return o.jsxs(dp,{value:g.value,onSelect:()=>d(g.value),children:[o.jsx("div",{className:xe("mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary",x?"bg-primary text-primary-foreground":"opacity-50 [&_svg]:invisible"),children:o.jsx(zo,{className:"h-3 w-3",strokeWidth:2,fill:"none"})}),o.jsx("span",{children:g.label})]},g.value)})})]})]})})]})}const bM=new Map,Uve=300*1e3;function Wve(){const[t,e]=b.useState([]),[n,r]=b.useState([]),[s,i]=b.useState([]),[a,l]=b.useState([]),[c,d]=b.useState(null),[h,m]=b.useState(!0),[g,x]=b.useState(!1),[y,w]=b.useState(!1),[S,k]=b.useState(!1),[j,N]=b.useState(!1),[T,E]=b.useState(!1),[_,A]=b.useState(!1),[D,q]=b.useState(null),[B,H]=b.useState(null),[W,ee]=b.useState(!1),[I,V]=b.useState(null),[L,$]=b.useState(""),[K,Y]=b.useState(new Set),[R,ie]=b.useState(!1),[X,z]=b.useState(1),[U,te]=b.useState(20),[ne,G]=b.useState(""),[se,re]=b.useState([]),[ae,_e]=b.useState(!1),[Be,Ye]=b.useState(null),[Je,Oe]=b.useState(!1),[Ve,Ue]=b.useState(null),{toast:$e}=Lr(),jt=na(),{registerTour:vt,startTour:$n,state:qt,goToStep:un}=nN(),Mt=b.useRef(null),ct=b.useRef(null),Ne=b.useRef(!0);b.useEffect(()=>{vt(Rl,bQ)},[vt]),b.useEffect(()=>{if(qt.activeTourId===Rl&&qt.isRunning){const ge=wQ[qt.stepIndex];ge&&!window.location.pathname.endsWith(ge.replace("/config/",""))&&jt({to:ge})}},[qt.stepIndex,qt.activeTourId,qt.isRunning,jt]);const ze=b.useRef(qt.stepIndex);b.useEffect(()=>{if(qt.activeTourId===Rl&&qt.isRunning){const ge=ze.current,Ie=qt.stepIndex;ge>=12&&ge<=17&&Ie<12&&A(!1),ze.current=Ie}},[qt.stepIndex,qt.activeTourId,qt.isRunning]),b.useEffect(()=>{if(qt.activeTourId!==Rl||!qt.isRunning)return;const ge=Ie=>{const Et=Ie.target,kn=qt.stepIndex;kn===2&&Et.closest('[data-tour="add-provider-button"]')?setTimeout(()=>un(3),300):kn===9&&Et.closest('[data-tour="provider-cancel-button"]')?setTimeout(()=>un(10),300):kn===11&&Et.closest('[data-tour="add-model-button"]')?setTimeout(()=>un(12),300):kn===17&&Et.closest('[data-tour="model-cancel-button"]')?setTimeout(()=>un(18),300):kn===18&&Et.closest('[data-tour="tasks-tab-trigger"]')&&setTimeout(()=>un(19),300)};return document.addEventListener("click",ge,!0),()=>document.removeEventListener("click",ge,!0)},[qt,un]);const rt=()=>{$n(Rl)};b.useEffect(()=>{bt()},[]);const bt=async()=>{try{m(!0);const ge=await Dh(),Ie=ge.models||[];e(Ie),l(Ie.map(kn=>kn.name));const Et=ge.api_providers||[];r(Et.map(kn=>kn.name)),i(Et),d(ge.model_task_config||null),k(!1),Ne.current=!1}catch(ge){console.error("加载配置失败:",ge)}finally{m(!1)}},zt=b.useCallback(ge=>s.find(Ie=>Ie.name===ge),[s]),Rt=b.useCallback(async(ge,Ie=!1)=>{const Et=zt(ge);if(!Et?.base_url){re([]),Ue(null),Ye('提供商配置不完整,请先在"模型提供商配置"中配置');return}if(!Et.api_key){re([]),Ue(null),Ye('该提供商未配置 API Key,请先在"模型提供商配置"中填写');return}const kn=t1e(Et.base_url);if(Ue(kn),!kn?.modelFetcher){re([]),Ye(null);return}const Hr=`${ge}:${Et.base_url}`,Mr=bM.get(Hr);if(!Ie&&Mr&&Date.now()-Mr.timestamp{_&&D?.api_provider&&Rt(D.api_provider)},[_,D?.api_provider,Rt]);const Hn=async()=>{try{N(!0),cb().catch(()=>{}),E(!0)}catch(ge){console.error("重启失败:",ge),E(!1),$e({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),N(!1)}},We=async()=>{try{x(!0),Mt.current&&clearTimeout(Mt.current),ct.current&&clearTimeout(ct.current);const ge=await Dh();ge.models=t,ge.model_task_config=c,await Uv(ge),k(!1),$e({title:"保存成功",description:"正在重启麦麦..."}),await Hn()}catch(ge){console.error("保存配置失败:",ge),$e({title:"保存失败",description:ge.message,variant:"destructive"}),x(!1)}},ot=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},dn=()=>{E(!1),N(!1),$e({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},Pt=b.useCallback(async ge=>{if(!Ne.current)try{w(!0),await bk("models",ge),k(!1)}catch(Ie){console.error("自动保存模型列表失败:",Ie),k(!0)}finally{w(!1)}},[]),xn=b.useCallback(async ge=>{if(!Ne.current)try{w(!0),await bk("model_task_config",ge),k(!1)}catch(Ie){console.error("自动保存任务配置失败:",Ie),k(!0)}finally{w(!1)}},[]);b.useEffect(()=>{if(!Ne.current)return k(!0),Mt.current&&clearTimeout(Mt.current),Mt.current=setTimeout(()=>{Pt(t)},2e3),()=>{Mt.current&&clearTimeout(Mt.current)}},[t,Pt]),b.useEffect(()=>{if(!(Ne.current||!c))return k(!0),ct.current&&clearTimeout(ct.current),ct.current=setTimeout(()=>{xn(c)},2e3),()=>{ct.current&&clearTimeout(ct.current)}},[c,xn]);const dt=async()=>{try{x(!0),Mt.current&&clearTimeout(Mt.current),ct.current&&clearTimeout(ct.current);const ge=await Dh();ge.models=t,ge.model_task_config=c,await Uv(ge),k(!1),$e({title:"保存成功",description:"模型配置已保存"}),await bt()}catch(ge){console.error("保存配置失败:",ge),$e({title:"保存失败",description:ge.message,variant:"destructive"})}finally{x(!1)}},rn=(ge,Ie)=>{q(ge||{model_identifier:"",name:"",api_provider:n[0]||"",price_in:0,price_out:0,force_stream_mode:!1,extra_params:{}}),H(Ie),A(!0)},wt=()=>{if(!D)return;const ge={...D,price_in:D.price_in??0,price_out:D.price_out??0};let Ie;B!==null?(Ie=[...t],Ie[B]=ge):Ie=[...t,ge],e(Ie),l(Ie.map(Et=>Et.name)),A(!1),q(null),H(null)},Wt=ge=>{if(!ge&&D){const Ie={...D,price_in:D.price_in??0,price_out:D.price_out??0};q(Ie)}A(ge)},Gt=ge=>{V(ge),ee(!0)},lt=()=>{if(I!==null){const ge=t.filter((Ie,Et)=>Et!==I);e(ge),l(ge.map(Ie=>Ie.name)),$e({title:"删除成功",description:"模型已从列表中移除"})}ee(!1),V(null)},ve=ge=>{const Ie=new Set(K);Ie.has(ge)?Ie.delete(ge):Ie.add(ge),Y(Ie)},He=()=>{if(K.size===fr.length)Y(new Set);else{const ge=fr.map((Ie,Et)=>t.findIndex(kn=>kn===fr[Et]));Y(new Set(ge))}},ht=()=>{if(K.size===0){$e({title:"提示",description:"请先选择要删除的模型",variant:"default"});return}ie(!0)},vn=()=>{const ge=t.filter((Ie,Et)=>!K.has(Et));e(ge),l(ge.map(Ie=>Ie.name)),Y(new Set),ie(!1),$e({title:"批量删除成功",description:`已删除 ${K.size} 个模型`})},Qn=(ge,Ie,Et)=>{c&&d({...c,[ge]:{...c[ge],[Ie]:Et}})},fr=t.filter(ge=>{if(!L)return!0;const Ie=L.toLowerCase();return ge.name.toLowerCase().includes(Ie)||ge.model_identifier.toLowerCase().includes(Ie)||ge.api_provider.toLowerCase().includes(Ie)}),ar=Math.ceil(fr.length/U),xs=fr.slice((X-1)*U,X*U),vs=()=>{const ge=parseInt(ne);ge>=1&&ge<=ar&&(z(ge),G(""))},js=ge=>c?[c.utils?.model_list||[],c.utils_small?.model_list||[],c.tool_use?.model_list||[],c.replyer?.model_list||[],c.planner?.model_list||[],c.vlm?.model_list||[],c.voice?.model_list||[],c.embedding?.model_list||[],c.lpmm_entity_extract?.model_list||[],c.lpmm_rdf_build?.model_list||[],c.lpmm_qa?.model_list||[]].some(Et=>Et.includes(ge)):!1;return h?o.jsx(pn,{className:"h-full",children:o.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:o.jsx("div",{className:"flex items-center justify-center h-64",children:o.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):o.jsx(pn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"模型管理与分配"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"添加模型并为模型分配功能"})]}),o.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[o.jsxs(ue,{onClick:dt,disabled:g||y||!S||j,size:"sm",variant:"outline",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[o.jsx(zp,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),g?"保存中...":y?"自动保存中...":S?"保存配置":"已保存"]}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsxs(ue,{disabled:g||y||j,size:"sm",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[o.jsx(Dp,{className:"mr-2 h-4 w-4"}),j?"重启中...":S?"保存并重启":"重启麦麦"]})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认重启麦麦?"}),o.jsx(zn,{className:"space-y-3",asChild:!0,children:o.jsxs("div",{children:[o.jsx("p",{children:S?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),o.jsxs(ba,{className:"border-yellow-500/50 bg-yellow-500/10",children:[o.jsx(Xi,{className:"h-4 w-4 text-yellow-600"}),o.jsxs(wa,{className:"text-yellow-900 dark:text-yellow-100",children:[o.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",o.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",o.jsxs(Er,{children:[o.jsx(Of,{asChild:!0,children:o.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[o.jsx(Zy,{className:"h-3 w-3"}),"如何结束程序?"]})}),o.jsxs(wr,{className:"max-w-2xl",children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"如何结束使用重启功能后的麦麦程序"}),o.jsx(Xr,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),o.jsxs(Yi,{defaultValue:"windows",className:"w-full",children:[o.jsxs(ji,{className:"grid w-full grid-cols-3",children:[o.jsx(Bt,{value:"windows",children:"Windows"}),o.jsx(Bt,{value:"macos",children:"macOS"}),o.jsx(Bt,{value:"linux",children:"Linux"})]}),o.jsxs(ln,{value:"windows",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),o.jsxs("li",{children:['在"进程"或"详细信息"标签页中找到 ',o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),o.jsx("li",{children:'右键点击并选择"结束任务"'})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),o.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),o.jsxs(ln,{value:"macos",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"}),' 打开 Spotlight,搜索"活动监视器"']}),o.jsxs("li",{children:["在进程列表中找到 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),o.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]})]}),o.jsxs(ln,{value:"linux",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),o.jsx("p",{children:'pkill -9 -f "bot.py"'}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["在终端输入 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),o.jsx(fs,{children:o.jsx(e6,{asChild:!0,children:o.jsx(ue,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:S?We:Hn,children:S?"保存并重启":"确认重启"})]})]})]})]})]}),o.jsxs(ba,{children:[o.jsx(Xi,{className:"h-4 w-4"}),o.jsxs(wa,{children:["配置更新后需要",o.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),o.jsxs(ba,{className:"hidden lg:flex border-primary/30 bg-primary/5 cursor-pointer hover:bg-primary/10 transition-colors",onClick:rt,children:[o.jsx(Zee,{className:"h-4 w-4 text-primary"}),o.jsxs(wa,{className:"flex items-center justify-between",children:[o.jsxs("span",{children:[o.jsx("strong",{className:"text-primary",children:"新手引导:"}),"不知道如何配置模型?点击这里开始学习如何为麦麦的组件分配模型。"]}),o.jsx(ue,{variant:"outline",size:"sm",className:"ml-4 shrink-0",children:"开始引导"})]})]}),o.jsxs(Yi,{defaultValue:"models",className:"w-full",children:[o.jsxs(ji,{className:"grid w-full max-w-full sm:max-w-md grid-cols-2",children:[o.jsx(Bt,{value:"models",children:"添加模型"}),o.jsx(Bt,{value:"tasks","data-tour":"tasks-tab-trigger",children:"为模型分配功能"})]}),o.jsxs(ln,{value:"models",className:"space-y-4 mt-0",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-2",children:[o.jsx("p",{className:"text-sm text-muted-foreground",children:"配置可用的模型列表"}),o.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[K.size>0&&o.jsxs(ue,{onClick:ht,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[o.jsx(Cn,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",K.size,")"]}),o.jsxs(ue,{onClick:()=>rn(null,null),size:"sm",variant:"outline",className:"w-full sm:w-auto","data-tour":"add-model-button",children:[o.jsx(Is,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加模型"]})]})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2",children:[o.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[o.jsx(ii,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(Pe,{placeholder:"搜索模型名称、标识符或提供商...",value:L,onChange:ge=>$(ge.target.value),className:"pl-9"})]}),L&&o.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",fr.length," 个结果"]})]}),o.jsx("div",{className:"md:hidden space-y-3",children:xs.length===0?o.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:L?"未找到匹配的模型":"暂无模型配置"}):xs.map((ge,Ie)=>{const Et=t.findIndex(Hr=>Hr===ge),kn=js(ge.name);return o.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-start justify-between gap-2",children:[o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[o.jsx("h3",{className:"font-semibold text-base",children:ge.name}),o.jsx(tn,{variant:kn?"default":"secondary",className:kn?"bg-green-600 hover:bg-green-700":"",children:kn?"已使用":"未使用"})]}),o.jsx("p",{className:"text-xs text-muted-foreground break-all",title:ge.model_identifier,children:ge.model_identifier})]}),o.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[o.jsxs(ue,{variant:"default",size:"sm",onClick:()=>rn(ge,Et),children:[o.jsx(Ju,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),o.jsxs(ue,{size:"sm",onClick:()=>Gt(Et),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Cn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"提供商"}),o.jsx("p",{className:"font-medium",children:ge.api_provider})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"强制流式"}),o.jsx("p",{className:"font-medium",children:ge.force_stream_mode?"是":"否"})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"输入价格"}),o.jsxs("p",{className:"font-medium",children:["¥",ge.price_in,"/M"]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"输出价格"}),o.jsxs("p",{className:"font-medium",children:["¥",ge.price_out,"/M"]})]})]})]},Ie)})}),o.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:o.jsx("div",{className:"overflow-x-auto",children:o.jsxs(Af,{children:[o.jsx(Mf,{children:o.jsxs(zs,{children:[o.jsx(mn,{className:"w-12",children:o.jsx(Ci,{checked:K.size===fr.length&&fr.length>0,onCheckedChange:He})}),o.jsx(mn,{className:"w-24",children:"使用状态"}),o.jsx(mn,{children:"模型名称"}),o.jsx(mn,{children:"模型标识符"}),o.jsx(mn,{children:"提供商"}),o.jsx(mn,{className:"text-right",children:"输入价格"}),o.jsx(mn,{className:"text-right",children:"输出价格"}),o.jsx(mn,{className:"text-center",children:"强制流式"}),o.jsx(mn,{className:"text-right",children:"操作"})]})}),o.jsx(Rf,{children:xs.length===0?o.jsx(zs,{children:o.jsx(Yt,{colSpan:9,className:"text-center text-muted-foreground py-8",children:L?"未找到匹配的模型":"暂无模型配置"})}):xs.map((ge,Ie)=>{const Et=t.findIndex(Hr=>Hr===ge),kn=js(ge.name);return o.jsxs(zs,{children:[o.jsx(Yt,{children:o.jsx(Ci,{checked:K.has(Et),onCheckedChange:()=>ve(Et)})}),o.jsx(Yt,{children:o.jsx(tn,{variant:kn?"default":"secondary",className:kn?"bg-green-600 hover:bg-green-700":"",children:kn?"已使用":"未使用"})}),o.jsx(Yt,{className:"font-medium",children:ge.name}),o.jsx(Yt,{className:"max-w-xs truncate",title:ge.model_identifier,children:ge.model_identifier}),o.jsx(Yt,{children:ge.api_provider}),o.jsxs(Yt,{className:"text-right",children:["¥",ge.price_in,"/M"]}),o.jsxs(Yt,{className:"text-right",children:["¥",ge.price_out,"/M"]}),o.jsx(Yt,{className:"text-center",children:ge.force_stream_mode?"是":"否"}),o.jsx(Yt,{className:"text-right",children:o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsxs(ue,{variant:"default",size:"sm",onClick:()=>rn(ge,Et),children:[o.jsx(Ju,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),o.jsxs(ue,{size:"sm",onClick:()=>Gt(Et),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Cn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},Ie)})})]})})}),fr.length>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{htmlFor:"page-size-model",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:U.toString(),onValueChange:ge=>{te(parseInt(ge)),z(1),Y(new Set)},children:[o.jsx($t,{id:"page-size-model",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"10",children:"10"}),o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"50",children:"50"}),o.jsx(De,{value:"100",children:"100"})]})]}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(X-1)*U+1," 到"," ",Math.min(X*U,fr.length)," 条,共 ",fr.length," 条"]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>z(1),disabled:X===1,className:"hidden sm:flex",children:o.jsx(Ip,{className:"h-4 w-4"})}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>z(ge=>Math.max(1,ge-1)),disabled:X===1,children:[o.jsx(wd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Pe,{type:"number",value:ne,onChange:ge=>G(ge.target.value),onKeyDown:ge=>ge.key==="Enter"&&vs(),placeholder:X.toString(),className:"w-16 h-8 text-center",min:1,max:ar}),o.jsx(ue,{variant:"outline",size:"sm",onClick:vs,disabled:!ne,className:"h-8",children:"跳转"})]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>z(ge=>ge+1),disabled:X>=ar,children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(Zl,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>z(ar),disabled:X>=ar,className:"hidden sm:flex",children:o.jsx(Lp,{className:"h-4 w-4"})})]})]})]}),o.jsxs(ln,{value:"tasks",className:"space-y-6 mt-0",children:[o.jsx("p",{className:"text-sm text-muted-foreground",children:"为不同的任务配置使用的模型和参数"}),c&&o.jsxs("div",{className:"grid gap-4 sm:gap-6",children:[o.jsx(qa,{title:"组件模型 (utils)",description:"用于表情包、取名、关系、情绪变化等组件",taskConfig:c.utils,modelNames:a,onChange:(ge,Ie)=>Qn("utils",ge,Ie),dataTour:"task-model-select"}),o.jsx(qa,{title:"组件小模型 (utils_small)",description:"消耗量较大的组件,建议使用速度较快的小模型",taskConfig:c.utils_small,modelNames:a,onChange:(ge,Ie)=>Qn("utils_small",ge,Ie)}),o.jsx(qa,{title:"工具调用模型 (tool_use)",description:"需要使用支持工具调用的模型",taskConfig:c.tool_use,modelNames:a,onChange:(ge,Ie)=>Qn("tool_use",ge,Ie)}),o.jsx(qa,{title:"首要回复模型 (replyer)",description:"用于表达器和表达方式学习",taskConfig:c.replyer,modelNames:a,onChange:(ge,Ie)=>Qn("replyer",ge,Ie)}),o.jsx(qa,{title:"决策模型 (planner)",description:"负责决定麦麦该什么时候回复",taskConfig:c.planner,modelNames:a,onChange:(ge,Ie)=>Qn("planner",ge,Ie)}),o.jsx(qa,{title:"图像识别模型 (vlm)",description:"视觉语言模型",taskConfig:c.vlm,modelNames:a,onChange:(ge,Ie)=>Qn("vlm",ge,Ie),hideTemperature:!0}),o.jsx(qa,{title:"语音识别模型 (voice)",description:"语音转文字",taskConfig:c.voice,modelNames:a,onChange:(ge,Ie)=>Qn("voice",ge,Ie),hideTemperature:!0,hideMaxTokens:!0}),o.jsx(qa,{title:"嵌入模型 (embedding)",description:"用于向量化",taskConfig:c.embedding,modelNames:a,onChange:(ge,Ie)=>Qn("embedding",ge,Ie),hideTemperature:!0,hideMaxTokens:!0}),o.jsxs("div",{className:"space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库模型"}),o.jsx(qa,{title:"实体提取模型 (lpmm_entity_extract)",description:"从文本中提取实体",taskConfig:c.lpmm_entity_extract,modelNames:a,onChange:(ge,Ie)=>Qn("lpmm_entity_extract",ge,Ie)}),o.jsx(qa,{title:"RDF 构建模型 (lpmm_rdf_build)",description:"构建知识图谱",taskConfig:c.lpmm_rdf_build,modelNames:a,onChange:(ge,Ie)=>Qn("lpmm_rdf_build",ge,Ie)}),o.jsx(qa,{title:"问答模型 (lpmm_qa)",description:"知识库问答",taskConfig:c.lpmm_qa,modelNames:a,onChange:(ge,Ie)=>Qn("lpmm_qa",ge,Ie)})]})]})]})]}),o.jsx(Er,{open:_,onOpenChange:Wt,children:o.jsxs(wr,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"model-dialog",preventOutsideClose:qt.isRunning,children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:B!==null?"编辑模型":"添加模型"}),o.jsx(Xr,{children:"配置模型的基本信息和参数"})]}),o.jsxs("div",{className:"grid gap-4 py-4",children:[o.jsxs("div",{className:"grid gap-2","data-tour":"model-name-input",children:[o.jsx(he,{htmlFor:"model_name",children:"模型名称 *"}),o.jsx(Pe,{id:"model_name",value:D?.name||"",onChange:ge=>q(Ie=>Ie?{...Ie,name:ge.target.value}:null),placeholder:"例如: qwen3-30b"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"用于在任务配置中引用此模型"})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"model-provider-select",children:[o.jsx(he,{htmlFor:"api_provider",children:"API 提供商 *"}),o.jsxs(Vt,{value:D?.api_provider||"",onValueChange:ge=>{q(Ie=>Ie?{...Ie,api_provider:ge}:null),re([]),Ye(null)},children:[o.jsx($t,{id:"api_provider",children:o.jsx(Ut,{placeholder:"选择提供商"})}),o.jsx(Ht,{children:n.map(ge=>o.jsx(De,{value:ge,children:ge},ge))})]})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"model-identifier-input",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{htmlFor:"model_identifier",children:"模型标识符 *"}),Ve?.modelFetcher&&o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(tn,{variant:"secondary",className:"text-xs",children:Ve.display_name}),o.jsx(ue,{variant:"ghost",size:"sm",className:"h-6 px-2",onClick:()=>D?.api_provider&&Rt(D.api_provider,!0),disabled:ae,children:ae?o.jsx(Us,{className:"h-3 w-3 animate-spin"}):o.jsx(Qs,{className:"h-3 w-3"})})]})]}),Ve?.modelFetcher?o.jsxs(Bo,{open:Je,onOpenChange:Oe,children:[o.jsx(Fo,{asChild:!0,children:o.jsxs(ue,{variant:"outline",role:"combobox","aria-expanded":Je,className:"w-full justify-between font-normal",disabled:ae||!!Be,children:[ae?o.jsxs("span",{className:"flex items-center gap-2 text-muted-foreground",children:[o.jsx(Us,{className:"h-4 w-4 animate-spin"}),"正在获取模型列表..."]}):Be?o.jsx("span",{className:"text-muted-foreground text-sm",children:"点击下方输入框手动填写"}):D?.model_identifier?o.jsx("span",{className:"truncate",children:D.model_identifier}):o.jsx("span",{className:"text-muted-foreground",children:"搜索或选择模型..."}),o.jsx(Lj,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),o.jsx(Ka,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:o.jsxs(Tb,{children:[o.jsx(Eb,{placeholder:"搜索模型..."}),o.jsx(pn,{className:"h-[300px]",children:o.jsxs(_b,{className:"max-h-none overflow-visible",children:[o.jsx(Ab,{children:Be?o.jsxs("div",{className:"py-4 px-2 text-center space-y-2",children:[o.jsx("p",{className:"text-sm text-destructive",children:Be}),!Be.includes("API Key")&&o.jsx(ue,{variant:"link",size:"sm",onClick:()=>D?.api_provider&&Rt(D.api_provider,!0),children:"重试"})]}):"未找到匹配的模型"}),o.jsx(up,{heading:"可用模型",children:se.map(ge=>o.jsxs(dp,{value:ge.id,onSelect:()=>{q(Ie=>Ie?{...Ie,model_identifier:ge.id}:null),Oe(!1)},children:[o.jsx(zo,{className:`mr-2 h-4 w-4 ${D?.model_identifier===ge.id?"opacity-100":"opacity-0"}`}),o.jsxs("div",{className:"flex flex-col",children:[o.jsx("span",{children:ge.id}),ge.name!==ge.id&&o.jsx("span",{className:"text-xs text-muted-foreground",children:ge.name})]})]},ge.id))}),o.jsx(up,{heading:"手动输入",children:o.jsxs(dp,{value:"__manual_input__",onSelect:()=>{Oe(!1)},children:[o.jsx(Ju,{className:"mr-2 h-4 w-4"}),"手动输入模型标识符..."]})})]})})]})})]}):o.jsx(Pe,{id:"model_identifier",value:D?.model_identifier||"",onChange:ge=>q(Ie=>Ie?{...Ie,model_identifier:ge.target.value}:null),placeholder:"Qwen/Qwen3-30B-A3B-Instruct-2507"}),Be&&Ve?.modelFetcher&&o.jsxs(ba,{variant:"destructive",className:"mt-2 py-2",children:[o.jsx(Xi,{className:"h-4 w-4"}),o.jsx(wa,{className:"text-xs",children:Be})]}),Ve?.modelFetcher&&o.jsx(Pe,{value:D?.model_identifier||"",onChange:ge=>q(Ie=>Ie?{...Ie,model_identifier:ge.target.value}:null),placeholder:"或手动输入模型标识符",className:"mt-2"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:Be?'请手动输入模型标识符,或前往"模型提供商配置"检查 API Key':Ve?.modelFetcher?`已识别为 ${Ve.display_name},支持自动获取模型列表`:"API 提供商提供的模型 ID"})]}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"price_in",children:"输入价格 (¥/M token)"}),o.jsx(Pe,{id:"price_in",type:"number",step:"0.1",min:"0",value:D?.price_in??"",onChange:ge=>{const Ie=ge.target.value===""?null:parseFloat(ge.target.value);q(Et=>Et?{...Et,price_in:Ie}:null)},placeholder:"默认: 0"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"price_out",children:"输出价格 (¥/M token)"}),o.jsx(Pe,{id:"price_out",type:"number",step:"0.1",min:"0",value:D?.price_out??"",onChange:ge=>{const Ie=ge.target.value===""?null:parseFloat(ge.target.value);q(Et=>Et?{...Et,price_out:Ie}:null)},placeholder:"默认: 0"})]})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"force_stream_mode",checked:D?.force_stream_mode||!1,onCheckedChange:ge=>q(Ie=>Ie?{...Ie,force_stream_mode:ge}:null)}),o.jsx(he,{htmlFor:"force_stream_mode",className:"cursor-pointer",children:"强制流式输出模式"})]})]}),o.jsxs(fs,{children:[o.jsx(ue,{variant:"outline",onClick:()=>A(!1),"data-tour":"model-cancel-button",children:"取消"}),o.jsx(ue,{onClick:wt,"data-tour":"model-save-button",children:"保存"})]})]})}),o.jsx(Fn,{open:W,onOpenChange:ee,children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:['确定要删除模型 "',I!==null?t[I]?.name:"",'" 吗? 此操作无法撤销。']})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:lt,children:"删除"})]})]})}),o.jsx(Fn,{open:R,onOpenChange:ie,children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认批量删除"}),o.jsxs(zn,{children:["确定要删除选中的 ",K.size," 个模型吗? 此操作无法撤销。"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:vn,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),T&&o.jsx(r6,{onRestartComplete:ot,onRestartFailed:dn})]})})}function qa({title:t,description:e,taskConfig:n,modelNames:r,onChange:s,hideTemperature:i=!1,hideMaxTokens:a=!1,dataTour:l}){const c=d=>{s("model_list",d)};return o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"font-semibold text-base sm:text-lg",children:t}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:e})]}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2","data-tour":l,children:[o.jsx(he,{children:"模型列表"}),o.jsx(Vve,{options:r.map(d=>({label:d,value:d})),selected:n.model_list||[],onChange:c,placeholder:"选择模型...",emptyText:"暂无可用模型"})]}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[!i&&o.jsxs("div",{className:"grid gap-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{children:"温度"}),o.jsx(Pe,{type:"number",step:"0.1",min:"0",max:"1",value:n.temperature??.3,onChange:d=>{const h=parseFloat(d.target.value);!isNaN(h)&&h>=0&&h<=1&&s("temperature",h)},className:"w-20 h-8 text-sm"})]}),o.jsx(Nf,{value:[n.temperature??.3],onValueChange:d=>s("temperature",d[0]),min:0,max:1,step:.1,className:"w-full"})]}),!a&&o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"最大 Token"}),o.jsx(Pe,{type:"number",step:"1",min:"1",value:n.max_tokens??1024,onChange:d=>s("max_tokens",parseInt(d.target.value))})]})]})]})]})}const Bb="/api/webui/config";async function Gve(){const e=await(await gt(`${Bb}/adapter-config/path`)).json();return!e.success||!e.path?null:{path:e.path,lastModified:e.lastModified}}async function wM(t){const n=await(await gt(`${Bb}/adapter-config/path`,{method:"POST",headers:Tt(),body:JSON.stringify({path:t})})).json();if(!n.success)throw new Error(n.message||"保存路径失败")}async function SM(t){const n=await(await gt(`${Bb}/adapter-config?path=${encodeURIComponent(t)}`)).json();if(!n.success)throw new Error("读取配置文件失败");return n.content}async function kM(t,e){const r=await(await gt(`${Bb}/adapter-config`,{method:"POST",headers:Tt(),body:JSON.stringify({path:t,content:e})})).json();if(!r.success)throw new Error(r.message||"保存配置失败")}const $i={inner:{version:"0.1.2"},nickname:{nickname:""},napcat_server:{host:"localhost",port:8095,token:"",heartbeat_interval:30},maibot_server:{host:"localhost",port:8e3},chat:{group_list_type:"whitelist",group_list:[],private_list_type:"whitelist",private_list:[],ban_user_id:[],ban_qq_bot:!1,enable_poke:!0},voice:{use_tts:!1},debug:{level:"INFO"}},AS={oneclick:{name:"一键包",description:"使用一键包部署的适配器配置",path:"../MaiBot-Napcat-Adapter/config.toml",icon:ed},docker:{name:"Docker",description:"Docker Compose 部署的适配器配置",path:"/MaiMBot/adapters-config/config.toml",icon:Jee}};function Xve(){const[t,e]=b.useState("upload"),[n,r]=b.useState(null),[s,i]=b.useState(""),[a,l]=b.useState(""),[c,d]=b.useState("oneclick"),[h,m]=b.useState(""),[g,x]=b.useState(!1),[y,w]=b.useState(!1),[S,k]=b.useState(!1),[j,N]=b.useState(!1),[T,E]=b.useState(null),_=b.useRef(null),{toast:A}=Lr(),D=b.useRef(null),q=G=>{if(!G.trim())return{valid:!1,error:"路径不能为空"};if(!G.toLowerCase().endsWith(".toml"))return{valid:!1,error:"文件必须是 .toml 格式"};const se=/^([a-zA-Z]:\\|\\\\[^\\]+\\[^\\]+\\).+\.toml$/i,re=/^(\/|~\/).+\.toml$/i,ae=/^(\.{1,2}[\\/]|[^:\\/]).+\.toml$/i,_e=se.test(G),Be=re.test(G),Ye=ae.test(G);return!_e&&!Be&&!Ye?{valid:!1,error:"路径格式错误"}:/[<>"|?*\x00-\x1F]/.test(G)?{valid:!1,error:"路径包含非法字符"}:{valid:!0,error:""}},B=G=>{if(l(G),G.trim()){const se=q(G);m(se.error)}else m("")},H=b.useCallback(async G=>{const se=AS[G];w(!0);try{const re=await SM(se.path),ae=X(re);r(ae),d(G),l(se.path),await wM(se.path),A({title:"加载成功",description:`已从${se.name}预设加载配置`})}catch(re){console.error("加载预设配置失败:",re),A({title:"加载失败",description:re instanceof Error?re.message:"无法读取预设配置文件",variant:"destructive"})}finally{w(!1)}},[A]),W=b.useCallback(async G=>{const se=q(G);if(!se.valid){m(se.error),A({title:"路径无效",description:se.error,variant:"destructive"});return}m(""),w(!0);try{const re=await SM(G),ae=X(re);r(ae),l(G),await wM(G),A({title:"加载成功",description:"已从配置文件加载"})}catch(re){console.error("加载配置失败:",re),A({title:"加载失败",description:re instanceof Error?re.message:"无法读取配置文件",variant:"destructive"})}finally{w(!1)}},[A]);b.useEffect(()=>{(async()=>{try{const se=await Gve();if(se&&se.path){l(se.path);const re=Object.entries(AS).find(([,ae])=>ae.path===se.path);re?(e("preset"),d(re[0]),await H(re[0])):(e("path"),await W(se.path))}}catch(se){console.error("加载保存的路径失败:",se)}})()},[W,H]);const ee=b.useCallback(G=>{t!=="path"&&t!=="preset"||!a||(D.current&&clearTimeout(D.current),D.current=setTimeout(async()=>{x(!0);try{const se=z(G);await kM(a,se),A({title:"自动保存成功",description:"配置已保存到文件"})}catch(se){console.error("自动保存失败:",se),A({title:"自动保存失败",description:se instanceof Error?se.message:"保存配置失败",variant:"destructive"})}finally{x(!1)}},1e3))},[t,a,A]),I=async()=>{if(!n||!a)return;const G=q(a);if(!G.valid){A({title:"保存失败",description:G.error,variant:"destructive"});return}x(!0);try{const se=z(n);await kM(a,se),A({title:"保存成功",description:"配置已保存到文件"})}catch(se){console.error("保存失败:",se),A({title:"保存失败",description:se instanceof Error?se.message:"保存配置失败",variant:"destructive"})}finally{x(!1)}},V=async()=>{a&&await W(a)},L=G=>{if(G!==t){if(n){E(G),k(!0);return}$(G)}},$=G=>{r(null),i(""),m(""),e(G),G==="preset"&&H("oneclick"),A({title:"已切换模式",description:{upload:"现在可以上传配置文件",path:"现在可以指定配置文件路径",preset:"现在可以使用预设配置"}[G]})},K=()=>{T&&($(T),E(null)),k(!1)},Y=()=>{if(n){N(!0);return}R()},R=()=>{l(""),r(null),m(""),A({title:"已清空",description:"路径和配置已清空"})},ie=()=>{R(),N(!1)},X=G=>{const se=JSON.parse(JSON.stringify($i)),re=G.split(` +`);let ae="";for(const _e of re){const Be=_e.trim();if(!Be||Be.startsWith("#"))continue;const Ye=Be.match(/^\[(\w+)\]/);if(Ye){ae=Ye[1];continue}const Je=Be.match(/^(\w+)\s*=\s*(.+)$/);if(Je&&ae){const[,Oe,Ve]=Je;let Ue=Ve.trim();const $e=Ue.match(/^("[^"]*")/);if($e)Ue=$e[1];else{const vt=Ue.indexOf("#");vt!==-1&&(Ue=Ue.substring(0,vt).trim())}let jt;if(Ue==="true")jt=!0;else if(Ue==="false")jt=!1;else if(Ue.startsWith("[")&&Ue.endsWith("]")){const vt=Ue.slice(1,-1).trim();if(vt){const $n=vt.split(",").map(un=>{const Mt=un.trim();return isNaN(Number(Mt))?Mt.replace(/"/g,""):Number(Mt)}),qt=typeof $n[0];jt=$n.every(un=>typeof un===qt)?$n:$n.filter(un=>typeof un=="number")}else jt=[]}else Ue.startsWith('"')&&Ue.endsWith('"')?jt=Ue.slice(1,-1):isNaN(Number(Ue))?jt=Ue.replace(/"/g,""):jt=Number(Ue);if(ae in se){const vt=se[ae];vt[Oe]=jt}}}return se},z=G=>{const se=[],re=(ae,_e)=>ae===""||ae===null||ae===void 0?_e:ae;return se.push("[inner]"),se.push(`version = "${re(G.inner.version,$i.inner.version)}" # 版本号`),se.push("# 请勿修改版本号,除非你知道自己在做什么"),se.push(""),se.push("[nickname] # 现在没用"),se.push(`nickname = "${re(G.nickname.nickname,$i.nickname.nickname)}"`),se.push(""),se.push("[napcat_server] # Napcat连接的ws服务设置"),se.push(`host = "${re(G.napcat_server.host,$i.napcat_server.host)}" # Napcat设定的主机地址`),se.push(`port = ${re(G.napcat_server.port||0,$i.napcat_server.port)} # Napcat设定的端口`),se.push(`token = "${re(G.napcat_server.token,$i.napcat_server.token)}" # Napcat设定的访问令牌,若无则留空`),se.push(`heartbeat_interval = ${re(G.napcat_server.heartbeat_interval||0,$i.napcat_server.heartbeat_interval)} # 与Napcat设置的心跳相同(按秒计)`),se.push(""),se.push("[maibot_server] # 连接麦麦的ws服务设置"),se.push(`host = "${re(G.maibot_server.host,$i.maibot_server.host)}" # 麦麦在.env文件中设置的主机地址,即HOST字段`),se.push(`port = ${re(G.maibot_server.port||0,$i.maibot_server.port)} # 麦麦在.env文件中设置的端口,即PORT字段`),se.push(""),se.push("[chat] # 黑白名单功能"),se.push(`group_list_type = "${re(G.chat.group_list_type,$i.chat.group_list_type)}" # 群组名单类型,可选为:whitelist, blacklist`),se.push(`group_list = [${G.chat.group_list.join(", ")}] # 群组名单`),se.push("# 当group_list_type为whitelist时,只有群组名单中的群组可以聊天"),se.push("# 当group_list_type为blacklist时,群组名单中的任何群组无法聊天"),se.push(`private_list_type = "${re(G.chat.private_list_type,$i.chat.private_list_type)}" # 私聊名单类型,可选为:whitelist, blacklist`),se.push(`private_list = [${G.chat.private_list.join(", ")}] # 私聊名单`),se.push("# 当private_list_type为whitelist时,只有私聊名单中的用户可以聊天"),se.push("# 当private_list_type为blacklist时,私聊名单中的任何用户无法聊天"),se.push(`ban_user_id = [${G.chat.ban_user_id.join(", ")}] # 全局禁止名单(全局禁止名单中的用户无法进行任何聊天)`),se.push(`ban_qq_bot = ${G.chat.ban_qq_bot} # 是否屏蔽QQ官方机器人`),se.push(`enable_poke = ${G.chat.enable_poke} # 是否启用戳一戳功能`),se.push(""),se.push("[voice] # 发送语音设置"),se.push(`use_tts = ${G.voice.use_tts} # 是否使用tts语音(请确保你配置了tts并有对应的adapter)`),se.push(""),se.push("[debug]"),se.push(`level = "${re(G.debug.level,$i.debug.level)}" # 日志等级(DEBUG, INFO, WARNING, ERROR, CRITICAL)`),se.join(` +`)},U=G=>{const se=G.target.files?.[0];if(!se)return;const re=new FileReader;re.onload=ae=>{try{const _e=ae.target?.result,Be=X(_e);r(Be),i(se.name),A({title:"上传成功",description:`已加载配置文件:${se.name}`})}catch(_e){console.error("解析配置文件失败:",_e),A({title:"解析失败",description:"配置文件格式错误,请检查文件内容",variant:"destructive"})}},re.readAsText(se)},te=()=>{if(!n)return;const G=z(n),se=new Blob([G],{type:"text/plain;charset=utf-8"}),re=URL.createObjectURL(se),ae=document.createElement("a");ae.href=re,ae.download=s||"config.toml",document.body.appendChild(ae),ae.click(),document.body.removeChild(ae),URL.revokeObjectURL(re),A({title:"下载成功",description:"配置文件已下载,请手动覆盖并重启适配器"})},ne=()=>{r(JSON.parse(JSON.stringify($i))),i("config.toml"),A({title:"已加载默认配置",description:"可以开始编辑配置"})};return o.jsx(pn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦适配器配置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的 QQ 适配器的配置文件"})]})}),o.jsxs("div",{className:"flex items-start gap-2 p-3 rounded-lg border border-amber-500/50 bg-amber-500/10 text-amber-700 dark:text-amber-400",children:[o.jsx(Lo,{className:"h-4 w-4 mt-0.5 flex-shrink-0"}),o.jsx("p",{className:"text-sm",children:"适配器配置保存之后使用 WebUI 的重启功能适配器并不会重启,需要手动重启适配器。"})]}),o.jsxs(Lt,{children:[o.jsxs(En,{children:[o.jsx(_n,{children:"工作模式"}),o.jsx(Wr,{children:"选择配置文件的管理方式"})]}),o.jsxs(Xn,{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3 md:gap-4",children:[o.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${t==="preset"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>L("preset"),children:o.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[o.jsx(ed,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"min-w-0",children:[o.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"预设模式"}),o.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"使用预设的部署配置"})]})]})}),o.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${t==="upload"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>L("upload"),children:o.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[o.jsx(N9,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"min-w-0",children:[o.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"上传文件模式"}),o.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"上传配置文件,编辑后下载并手动覆盖"})]})]})}),o.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${t==="path"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>L("path"),children:o.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[o.jsx(ete,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"min-w-0",children:[o.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"指定路径模式"}),o.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"指定配置文件路径,自动加载和保存"})]})]})})]}),t==="preset"&&o.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[o.jsx(he,{className:"text-sm md:text-base",children:"选择部署方式"}),o.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:Object.entries(AS).map(([G,se])=>{const re=se.icon,ae=c===G;return o.jsx("div",{className:`border-2 rounded-lg p-3 cursor-pointer transition-all ${ae?"border-primary bg-primary/5":"border-muted hover:border-primary/50"}`,onClick:()=>{d(G),H(G)},children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(re,{className:"h-5 w-5 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"min-w-0 flex-1",children:[o.jsx("h4",{className:"font-semibold text-sm",children:se.name}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:se.description}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1 font-mono break-all",children:se.path})]})]})},G)})})]}),t==="path"&&o.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"config-path",className:"text-sm md:text-base",children:"配置文件路径"}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[o.jsxs("div",{className:"flex-1 space-y-1",children:[o.jsx(Pe,{id:"config-path",value:a,onChange:G=>B(G.target.value),placeholder:"例: C:\\Adapter\\config.toml",className:`text-sm ${h?"border-destructive":""}`}),h&&o.jsx("p",{className:"text-xs text-destructive",children:h})]}),o.jsx(ue,{onClick:()=>W(a),disabled:y||!a||!!h,className:"w-full sm:w-auto",children:y?o.jsxs(o.Fragment,{children:[o.jsx(Qs,{className:"h-4 w-4 animate-spin mr-2"}),o.jsx("span",{className:"sm:hidden",children:"加载中..."})]}):o.jsxs(o.Fragment,{children:[o.jsx("span",{className:"sm:hidden",children:"加载配置"}),o.jsx("span",{className:"hidden sm:inline",children:"加载"})]})})]})]}),o.jsxs("details",{className:"rounded-lg bg-muted/50 p-3 group",children:[o.jsxs("summary",{className:"text-xs font-medium cursor-pointer select-none list-none flex items-center justify-between",children:[o.jsx("span",{children:"路径格式说明"}),o.jsx("svg",{className:"h-4 w-4 transition-transform group-open:rotate-180",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:o.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),o.jsxs("div",{className:"mt-2 space-y-2 text-xs text-muted-foreground",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx("div",{className:"flex items-center gap-2",children:o.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Windows"})}),o.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[o.jsx("div",{children:"C:\\Adapter\\config.toml"}),o.jsx("div",{className:"hidden sm:block",children:"D:\\MaiBot\\adapter\\config.toml"}),o.jsx("div",{className:"hidden sm:block",children:"\\\\server\\share\\config.toml"})]})]}),o.jsxs("div",{className:"space-y-1",children:[o.jsx("div",{className:"flex items-center gap-2",children:o.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Linux"})}),o.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[o.jsx("div",{children:"/opt/adapter/config.toml"}),o.jsx("div",{className:"hidden sm:block",children:"/home/user/adapter/config.toml"}),o.jsx("div",{className:"hidden sm:block",children:"~/adapter/config.toml"})]})]}),o.jsx("p",{className:"pt-1 border-t text-[10px] md:text-xs",children:"💡 配置会自动保存到指定文件,修改后 1 秒自动保存"})]})]})]})]})]}),o.jsxs(ba,{children:[o.jsx(Xi,{className:"h-4 w-4"}),o.jsx(wa,{children:t==="preset"?o.jsxs(o.Fragment,{children:[o.jsx("strong",{children:"预设模式:"}),"选择预设的部署方式,配置会自动加载,修改后 1 秒自动保存",g&&" (正在保存...)"]}):t==="upload"?o.jsxs(o.Fragment,{children:[o.jsx("strong",{children:"上传文件模式:"}),"上传配置文件 → 在线编辑 → 下载文件 → 手动覆盖并重启适配器"]}):o.jsxs(o.Fragment,{children:[o.jsx("strong",{children:"指定路径模式:"}),"指定配置文件路径后,配置会自动加载,修改后 1 秒自动保存",g&&" (正在保存...)"]})})]}),t==="upload"&&!n&&o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 w-full",children:[o.jsx("input",{ref:_,type:"file",accept:".toml",className:"hidden",onChange:U}),o.jsxs(ue,{onClick:()=>_.current?.click(),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[o.jsx(N9,{className:"mr-2 h-4 w-4"}),"上传配置"]}),o.jsxs(ue,{onClick:ne,size:"sm",className:"w-full sm:w-auto",children:[o.jsx(Po,{className:"mr-2 h-4 w-4"}),"使用默认配置"]})]}),t==="upload"&&n&&o.jsx("div",{className:"flex gap-2",children:o.jsxs(ue,{onClick:te,size:"sm",className:"w-full sm:w-auto",children:[o.jsx(td,{className:"mr-2 h-4 w-4"}),"下载配置"]})}),(t==="preset"||t==="path")&&n&&o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[o.jsxs(ue,{onClick:I,size:"sm",disabled:g||!!h,className:"w-full sm:w-auto",children:[o.jsx(zp,{className:"mr-2 h-4 w-4"}),g?"保存中...":"立即保存"]}),o.jsxs(ue,{onClick:V,size:"sm",variant:"outline",disabled:y,className:"w-full sm:w-auto",children:[o.jsx(Qs,{className:`mr-2 h-4 w-4 ${y?"animate-spin":""}`}),"刷新"]}),t==="path"&&o.jsxs(ue,{onClick:Y,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[o.jsx(Cn,{className:"mr-2 h-4 w-4"}),"清空路径"]})]}),n?o.jsxs(Yi,{defaultValue:"napcat",className:"w-full",children:[o.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:o.jsxs(ji,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5",children:[o.jsxs(Bt,{value:"napcat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[o.jsx("span",{className:"hidden sm:inline",children:"Napcat 连接"}),o.jsx("span",{className:"sm:hidden",children:"Napcat"})]}),o.jsxs(Bt,{value:"maibot",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[o.jsx("span",{className:"hidden sm:inline",children:"麦麦连接"}),o.jsx("span",{className:"sm:hidden",children:"麦麦"})]}),o.jsxs(Bt,{value:"chat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[o.jsx("span",{className:"hidden sm:inline",children:"聊天控制"}),o.jsx("span",{className:"sm:hidden",children:"聊天"})]}),o.jsxs(Bt,{value:"voice",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[o.jsx("span",{className:"hidden sm:inline",children:"语音设置"}),o.jsx("span",{className:"sm:hidden",children:"语音"})]}),o.jsx(Bt,{value:"debug",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:"调试"})]})}),o.jsx(ln,{value:"napcat",className:"space-y-4",children:o.jsx(Yve,{config:n,onChange:G=>{r(G),ee(G)}})}),o.jsx(ln,{value:"maibot",className:"space-y-4",children:o.jsx(Kve,{config:n,onChange:G=>{r(G),ee(G)}})}),o.jsx(ln,{value:"chat",className:"space-y-4",children:o.jsx(Zve,{config:n,onChange:G=>{r(G),ee(G)}})}),o.jsx(ln,{value:"voice",className:"space-y-4",children:o.jsx(Jve,{config:n,onChange:G=>{r(G),ee(G)}})}),o.jsx(ln,{value:"debug",className:"space-y-4",children:o.jsx(eye,{config:n,onChange:G=>{r(G),ee(G)}})})]}):o.jsx("div",{className:"rounded-lg border bg-card p-6 md:p-12",children:o.jsxs("div",{className:"text-center space-y-3 md:space-y-4",children:[o.jsx(Po,{className:"h-12 w-12 md:h-16 md:w-16 mx-auto text-muted-foreground"}),o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold",children:"尚未加载配置"}),o.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-2 px-4",children:t==="preset"?"请选择预设的部署方式":t==="upload"?"请上传现有配置文件,或使用默认配置开始编辑":"请指定配置文件路径并点击加载按钮"})]})]})}),o.jsx(Fn,{open:S,onOpenChange:k,children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认切换模式"}),o.jsxs(zn,{children:["切换模式将清空当前配置,确定要继续吗?",o.jsx("br",{}),o.jsx("span",{className:"text-destructive font-medium",children:"请确保已保存重要配置"})]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{onClick:()=>{k(!1),E(null)},children:"取消"}),o.jsx(In,{onClick:K,children:"确认切换"})]})]})}),o.jsx(Fn,{open:j,onOpenChange:N,children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认清空路径"}),o.jsxs(zn,{children:["清空路径将清除当前配置,确定要继续吗?",o.jsx("br",{}),o.jsx("span",{className:"text-muted-foreground text-sm",children:"此操作不会删除配置文件,只是清除界面中的配置"})]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{onClick:()=>N(!1),children:"取消"}),o.jsx(In,{onClick:ie,className:"bg-destructive hover:bg-destructive/90",children:"确认清空"})]})]})})]})})}function Yve({config:t,onChange:e}){return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"Napcat WebSocket 服务设置"}),o.jsxs("div",{className:"grid gap-3 md:gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"napcat-host",className:"text-sm md:text-base",children:"主机地址"}),o.jsx(Pe,{id:"napcat-host",value:t.napcat_server.host,onChange:n=>e({...t,napcat_server:{...t.napcat_server,host:n.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的主机地址"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"napcat-port",className:"text-sm md:text-base",children:"端口"}),o.jsx(Pe,{id:"napcat-port",type:"number",value:t.napcat_server.port||"",onChange:n=>e({...t,napcat_server:{...t.napcat_server,port:n.target.value?parseInt(n.target.value):0}}),placeholder:"8095",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的端口(留空使用默认值 8095)"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"napcat-token",className:"text-sm md:text-base",children:"访问令牌(Token)"}),o.jsx(Pe,{id:"napcat-token",type:"password",value:t.napcat_server.token,onChange:n=>e({...t,napcat_server:{...t.napcat_server,token:n.target.value}}),placeholder:"留空表示无需令牌",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的访问令牌,若无则留空"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"napcat-heartbeat",className:"text-sm md:text-base",children:"心跳间隔(秒)"}),o.jsx(Pe,{id:"napcat-heartbeat",type:"number",value:t.napcat_server.heartbeat_interval||"",onChange:n=>e({...t,napcat_server:{...t.napcat_server,heartbeat_interval:n.target.value?parseInt(n.target.value):0}}),placeholder:"30",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"与 Napcat 设置的心跳间隔保持一致(留空使用默认值 30)"})]})]})]})})}function Kve({config:t,onChange:e}){return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"麦麦 WebSocket 服务设置"}),o.jsxs("div",{className:"grid gap-3 md:gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"maibot-host",className:"text-sm md:text-base",children:"主机地址"}),o.jsx(Pe,{id:"maibot-host",value:t.maibot_server.host,onChange:n=>e({...t,maibot_server:{...t.maibot_server,host:n.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 HOST 字段"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"maibot-port",className:"text-sm md:text-base",children:"端口"}),o.jsx(Pe,{id:"maibot-port",type:"number",value:t.maibot_server.port||"",onChange:n=>e({...t,maibot_server:{...t.maibot_server,port:n.target.value?parseInt(n.target.value):0}}),placeholder:"8000",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 PORT 字段(留空使用默认值 8000)"})]})]})]})})}function Zve({config:t,onChange:e}){const n=i=>{const a={...t};i==="group"?a.chat.group_list=[...a.chat.group_list,0]:i==="private"?a.chat.private_list=[...a.chat.private_list,0]:a.chat.ban_user_id=[...a.chat.ban_user_id,0],e(a)},r=(i,a)=>{const l={...t};i==="group"?l.chat.group_list=l.chat.group_list.filter((c,d)=>d!==a):i==="private"?l.chat.private_list=l.chat.private_list.filter((c,d)=>d!==a):l.chat.ban_user_id=l.chat.ban_user_id.filter((c,d)=>d!==a),e(l)},s=(i,a,l)=>{const c={...t};i==="group"?c.chat.group_list[a]=l:i==="private"?c.chat.private_list[a]=l:c.chat.ban_user_id[a]=l,e(c)};return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"聊天黑白名单功能"}),o.jsxs("div",{className:"grid gap-4 md:gap-6",children:[o.jsxs("div",{className:"space-y-3 md:space-y-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-sm md:text-base",children:"群组名单类型"}),o.jsxs(Vt,{value:t.chat.group_list_type,onValueChange:i=>e({...t,chat:{...t.chat,group_list_type:i}}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),o.jsx(De,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[o.jsx(he,{className:"text-sm md:text-base",children:"群组列表"}),o.jsxs(ue,{onClick:()=>n("group"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[o.jsx(Po,{className:"mr-1 h-4 w-4"}),"添加群号"]})]}),t.chat.group_list.map((i,a)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Pe,{type:"number",value:i,onChange:l=>s("group",a,parseInt(l.target.value)||0),placeholder:"输入群号",className:"text-sm md:text-base"}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsx(ue,{size:"icon",variant:"outline",children:o.jsx(Cn,{className:"h-4 w-4"})})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:["确定要删除群号 ",i," 吗?此操作无法撤销。"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>r("group",a),children:"删除"})]})]})]})]},a)),t.chat.group_list.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无群组"})]})]}),o.jsxs("div",{className:"space-y-3 md:space-y-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-sm md:text-base",children:"私聊名单类型"}),o.jsxs(Vt,{value:t.chat.private_list_type,onValueChange:i=>e({...t,chat:{...t.chat,private_list_type:i}}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),o.jsx(De,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[o.jsx(he,{className:"text-sm md:text-base",children:"私聊列表"}),o.jsxs(ue,{onClick:()=>n("private"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[o.jsx(Po,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),t.chat.private_list.map((i,a)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Pe,{type:"number",value:i,onChange:l=>s("private",a,parseInt(l.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsx(ue,{size:"icon",variant:"outline",children:o.jsx(Cn,{className:"h-4 w-4"})})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:["确定要删除用户 ",i," 吗?此操作无法撤销。"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>r("private",a),children:"删除"})]})]})]})]},a)),t.chat.private_list.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无用户"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-sm md:text-base",children:"全局禁止名单"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"名单中的用户无法进行任何聊天"})]}),o.jsxs(ue,{onClick:()=>n("ban"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[o.jsx(Po,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),t.chat.ban_user_id.map((i,a)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Pe,{type:"number",value:i,onChange:l=>s("ban",a,parseInt(l.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsx(ue,{size:"icon",variant:"outline",children:o.jsx(Cn,{className:"h-4 w-4"})})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:["确定要从全局禁止名单中删除用户 ",i," 吗?此操作无法撤销。"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>r("ban",a),children:"删除"})]})]})]})]},a)),t.chat.ban_user_id.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无禁止用户"})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-sm md:text-base",children:"屏蔽QQ官方机器人"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否屏蔽来自QQ官方机器人的消息"})]}),o.jsx(Ft,{checked:t.chat.ban_qq_bot,onCheckedChange:i=>e({...t,chat:{...t.chat,ban_qq_bot:i}})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-sm md:text-base",children:"启用戳一戳功能"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否响应戳一戳消息"})]}),o.jsx(Ft,{checked:t.chat.enable_poke,onCheckedChange:i=>e({...t,chat:{...t.chat,enable_poke:i}})})]})]})]})})}function Jve({config:t,onChange:e}){return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"发送语音设置"}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-sm md:text-base",children:"使用 TTS 语音"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"请确保已配置 TTS 并有对应的适配器"})]}),o.jsx(Ft,{checked:t.voice.use_tts,onCheckedChange:n=>e({...t,voice:{use_tts:n}})})]})]})})}function eye({config:t,onChange:e}){return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"调试设置"}),o.jsx("div",{className:"grid gap-3 md:gap-4",children:o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-sm md:text-base",children:"日志等级"}),o.jsxs(Vt,{value:t.debug.level,onValueChange:n=>e({...t,debug:{level:n}}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"DEBUG",children:"DEBUG(调试)"}),o.jsx(De,{value:"INFO",children:"INFO(信息)"}),o.jsx(De,{value:"WARNING",children:"WARNING(警告)"}),o.jsx(De,{value:"ERROR",children:"ERROR(错误)"}),o.jsx(De,{value:"CRITICAL",children:"CRITICAL(严重)"})]})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"设置适配器的日志输出等级"})]})})]})})}function OM(t){const e=[],n=String(t||"");let r=n.indexOf(","),s=0,i=!1;for(;!i;){r===-1&&(r=n.length,i=!0);const a=n.slice(s,r).trim();(a||!i)&&e.push(a),s=r+1,r=n.indexOf(",",s)}return e}function tye(t,e){const n={};return(t[t.length-1]===""?[...t,""]:t).join((n.padRight?" ":"")+","+(n.padLeft===!1?"":" ")).trim()}const nye=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,rye=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,sye={};function jM(t,e){return(sye.jsx?rye:nye).test(t)}const iye=/[ \t\n\f\r]/g;function aye(t){return typeof t=="object"?t.type==="text"?NM(t.value):!1:NM(t)}function NM(t){return t.replace(iye,"")===""}class pg{constructor(e,n,r){this.normal=n,this.property=e,r&&(this.space=r)}}pg.prototype.normal={};pg.prototype.property={};pg.prototype.space=void 0;function VQ(t,e){const n={},r={};for(const s of t)Object.assign(n,s.property),Object.assign(r,s.normal);return new pg(n,r,e)}function vp(t){return t.toLowerCase()}class Ai{constructor(e,n){this.attribute=n,this.property=e}}Ai.prototype.attribute="";Ai.prototype.booleanish=!1;Ai.prototype.boolean=!1;Ai.prototype.commaOrSpaceSeparated=!1;Ai.prototype.commaSeparated=!1;Ai.prototype.defined=!1;Ai.prototype.mustUseProperty=!1;Ai.prototype.number=!1;Ai.prototype.overloadedBoolean=!1;Ai.prototype.property="";Ai.prototype.spaceSeparated=!1;Ai.prototype.space=void 0;let oye=0;const en=kd(),ns=kd(),AO=kd(),Qe=kd(),mr=kd(),$h=kd(),Hi=kd();function kd(){return 2**++oye}const MO=Object.freeze(Object.defineProperty({__proto__:null,boolean:en,booleanish:ns,commaOrSpaceSeparated:Hi,commaSeparated:$h,number:Qe,overloadedBoolean:AO,spaceSeparated:mr},Symbol.toStringTag,{value:"Module"})),MS=Object.keys(MO);class hN extends Ai{constructor(e,n,r,s){let i=-1;if(super(e,n),CM(this,"space",s),typeof r=="number")for(;++i4&&n.slice(0,4)==="data"&&hye.test(e)){if(e.charAt(4)==="-"){const i=e.slice(5).replace(TM,mye);r="data"+i.charAt(0).toUpperCase()+i.slice(1)}else{const i=e.slice(4);if(!TM.test(i)){let a=i.replace(dye,fye);a.charAt(0)!=="-"&&(a="-"+a),e="data"+a}}s=hN}return new s(r,e)}function fye(t){return"-"+t.toLowerCase()}function mye(t){return t.charAt(1).toUpperCase()}const JQ=VQ([UQ,lye,XQ,YQ,KQ],"html"),Fb=VQ([UQ,cye,XQ,YQ,KQ],"svg");function EM(t){const e=String(t||"").trim();return e?e.split(/[ \t\n\r\f]+/g):[]}function pye(t){return t.join(" ").trim()}var ch={},RS,_M;function gye(){if(_M)return RS;_M=1;var t=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,e=/\n/g,n=/^\s*/,r=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,s=/^:\s*/,i=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,a=/^[;\s]*/,l=/^\s+|\s+$/g,c=` +`,d="/",h="*",m="",g="comment",x="declaration";function y(S,k){if(typeof S!="string")throw new TypeError("First argument must be a string");if(!S)return[];k=k||{};var j=1,N=1;function T(I){var V=I.match(e);V&&(j+=V.length);var L=I.lastIndexOf(c);N=~L?I.length-L:N+I.length}function E(){var I={line:j,column:N};return function(V){return V.position=new _(I),q(),V}}function _(I){this.start=I,this.end={line:j,column:N},this.source=k.source}_.prototype.content=S;function A(I){var V=new Error(k.source+":"+j+":"+N+": "+I);if(V.reason=I,V.filename=k.source,V.line=j,V.column=N,V.source=S,!k.silent)throw V}function D(I){var V=I.exec(S);if(V){var L=V[0];return T(L),S=S.slice(L.length),V}}function q(){D(n)}function B(I){var V;for(I=I||[];V=H();)V!==!1&&I.push(V);return I}function H(){var I=E();if(!(d!=S.charAt(0)||h!=S.charAt(1))){for(var V=2;m!=S.charAt(V)&&(h!=S.charAt(V)||d!=S.charAt(V+1));)++V;if(V+=2,m===S.charAt(V-1))return A("End of comment missing");var L=S.slice(2,V-2);return N+=2,T(L),S=S.slice(V),N+=2,I({type:g,comment:L})}}function W(){var I=E(),V=D(r);if(V){if(H(),!D(s))return A("property missing ':'");var L=D(i),$=I({type:x,property:w(V[0].replace(t,m)),value:L?w(L[0].replace(t,m)):m});return D(a),$}}function ee(){var I=[];B(I);for(var V;V=W();)V!==!1&&(I.push(V),B(I));return I}return q(),ee()}function w(S){return S?S.replace(l,m):m}return RS=y,RS}var AM;function xye(){if(AM)return ch;AM=1;var t=ch&&ch.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(ch,"__esModule",{value:!0}),ch.default=n;const e=t(gye());function n(r,s){let i=null;if(!r||typeof r!="string")return i;const a=(0,e.default)(r),l=typeof s=="function";return a.forEach(c=>{if(c.type!=="declaration")return;const{property:d,value:h}=c;l?s(d,h,c):h&&(i=i||{},i[d]=h)}),i}return ch}var Km={},MM;function vye(){if(MM)return Km;MM=1,Object.defineProperty(Km,"__esModule",{value:!0}),Km.camelCase=void 0;var t=/^--[a-zA-Z0-9_-]+$/,e=/-([a-z])/g,n=/^[^-]+$/,r=/^-(webkit|moz|ms|o|khtml)-/,s=/^-(ms)-/,i=function(d){return!d||n.test(d)||t.test(d)},a=function(d,h){return h.toUpperCase()},l=function(d,h){return"".concat(h,"-")},c=function(d,h){return h===void 0&&(h={}),i(d)?d:(d=d.toLowerCase(),h.reactCompat?d=d.replace(s,l):d=d.replace(r,l),d.replace(e,a))};return Km.camelCase=c,Km}var Zm,RM;function yye(){if(RM)return Zm;RM=1;var t=Zm&&Zm.__importDefault||function(s){return s&&s.__esModule?s:{default:s}},e=t(xye()),n=vye();function r(s,i){var a={};return!s||typeof s!="string"||(0,e.default)(s,function(l,c){l&&c&&(a[(0,n.camelCase)(l,i)]=c)}),a}return r.default=r,Zm=r,Zm}var bye=yye();const wye=yd(bye),eV=tV("end"),fN=tV("start");function tV(t){return e;function e(n){const r=n&&n.position&&n.position[t]||{};if(typeof r.line=="number"&&r.line>0&&typeof r.column=="number"&&r.column>0)return{line:r.line,column:r.column,offset:typeof r.offset=="number"&&r.offset>-1?r.offset:void 0}}}function Sye(t){const e=fN(t),n=eV(t);if(e&&n)return{start:e,end:n}}function R0(t){return!t||typeof t!="object"?"":"position"in t||"type"in t?DM(t.position):"start"in t||"end"in t?DM(t):"line"in t||"column"in t?RO(t):""}function RO(t){return PM(t&&t.line)+":"+PM(t&&t.column)}function DM(t){return RO(t&&t.start)+"-"+RO(t&&t.end)}function PM(t){return t&&typeof t=="number"?t:1}class Gs extends Error{constructor(e,n,r){super(),typeof n=="string"&&(r=n,n=void 0);let s="",i={},a=!1;if(n&&("line"in n&&"column"in n?i={place:n}:"start"in n&&"end"in n?i={place:n}:"type"in n?i={ancestors:[n],place:n.position}:i={...n}),typeof e=="string"?s=e:!i.cause&&e&&(a=!0,s=e.message,i.cause=e),!i.ruleId&&!i.source&&typeof r=="string"){const c=r.indexOf(":");c===-1?i.ruleId=r:(i.source=r.slice(0,c),i.ruleId=r.slice(c+1))}if(!i.place&&i.ancestors&&i.ancestors){const c=i.ancestors[i.ancestors.length-1];c&&(i.place=c.position)}const l=i.place&&"start"in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=l?l.column:void 0,this.fatal=void 0,this.file="",this.message=s,this.line=l?l.line:void 0,this.name=R0(i.place)||"1:1",this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=a&&i.cause&&typeof i.cause.stack=="string"?i.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}Gs.prototype.file="";Gs.prototype.name="";Gs.prototype.reason="";Gs.prototype.message="";Gs.prototype.stack="";Gs.prototype.column=void 0;Gs.prototype.line=void 0;Gs.prototype.ancestors=void 0;Gs.prototype.cause=void 0;Gs.prototype.fatal=void 0;Gs.prototype.place=void 0;Gs.prototype.ruleId=void 0;Gs.prototype.source=void 0;const mN={}.hasOwnProperty,kye=new Map,Oye=/[A-Z]/g,jye=new Set(["table","tbody","thead","tfoot","tr"]),Nye=new Set(["td","th"]),nV="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function Cye(t,e){if(!e||e.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const n=e.filePath||void 0;let r;if(e.development){if(typeof e.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");r=Pye(n,e.jsxDEV)}else{if(typeof e.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof e.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");r=Dye(n,e.jsx,e.jsxs)}const s={Fragment:e.Fragment,ancestors:[],components:e.components||{},create:r,elementAttributeNameCase:e.elementAttributeNameCase||"react",evaluater:e.createEvaluater?e.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:e.ignoreInvalidStyle||!1,passKeys:e.passKeys!==!1,passNode:e.passNode||!1,schema:e.space==="svg"?Fb:JQ,stylePropertyNameCase:e.stylePropertyNameCase||"dom",tableCellAlignToStyle:e.tableCellAlignToStyle!==!1},i=rV(s,t,void 0);return i&&typeof i!="string"?i:s.create(t,s.Fragment,{children:i||void 0},void 0)}function rV(t,e,n){if(e.type==="element")return Tye(t,e,n);if(e.type==="mdxFlowExpression"||e.type==="mdxTextExpression")return Eye(t,e);if(e.type==="mdxJsxFlowElement"||e.type==="mdxJsxTextElement")return Aye(t,e,n);if(e.type==="mdxjsEsm")return _ye(t,e);if(e.type==="root")return Mye(t,e,n);if(e.type==="text")return Rye(t,e)}function Tye(t,e,n){const r=t.schema;let s=r;e.tagName.toLowerCase()==="svg"&&r.space==="html"&&(s=Fb,t.schema=s),t.ancestors.push(e);const i=iV(t,e.tagName,!1),a=zye(t,e);let l=gN(t,e);return jye.has(e.tagName)&&(l=l.filter(function(c){return typeof c=="string"?!aye(c):!0})),sV(t,a,i,e),pN(a,l),t.ancestors.pop(),t.schema=r,t.create(e,i,a,n)}function Eye(t,e){if(e.data&&e.data.estree&&t.evaluater){const r=e.data.estree.body[0];return r.type,t.evaluater.evaluateExpression(r.expression)}yp(t,e.position)}function _ye(t,e){if(e.data&&e.data.estree&&t.evaluater)return t.evaluater.evaluateProgram(e.data.estree);yp(t,e.position)}function Aye(t,e,n){const r=t.schema;let s=r;e.name==="svg"&&r.space==="html"&&(s=Fb,t.schema=s),t.ancestors.push(e);const i=e.name===null?t.Fragment:iV(t,e.name,!0),a=Iye(t,e),l=gN(t,e);return sV(t,a,i,e),pN(a,l),t.ancestors.pop(),t.schema=r,t.create(e,i,a,n)}function Mye(t,e,n){const r={};return pN(r,gN(t,e)),t.create(e,t.Fragment,r,n)}function Rye(t,e){return e.value}function sV(t,e,n,r){typeof n!="string"&&n!==t.Fragment&&t.passNode&&(e.node=r)}function pN(t,e){if(e.length>0){const n=e.length>1?e:e[0];n&&(t.children=n)}}function Dye(t,e,n){return r;function r(s,i,a,l){const d=Array.isArray(a.children)?n:e;return l?d(i,a,l):d(i,a)}}function Pye(t,e){return n;function n(r,s,i,a){const l=Array.isArray(i.children),c=fN(r);return e(s,i,a,l,{columnNumber:c?c.column-1:void 0,fileName:t,lineNumber:c?c.line:void 0},void 0)}}function zye(t,e){const n={};let r,s;for(s in e.properties)if(s!=="children"&&mN.call(e.properties,s)){const i=Lye(t,s,e.properties[s]);if(i){const[a,l]=i;t.tableCellAlignToStyle&&a==="align"&&typeof l=="string"&&Nye.has(e.tagName)?r=l:n[a]=l}}if(r){const i=n.style||(n.style={});i[t.stylePropertyNameCase==="css"?"text-align":"textAlign"]=r}return n}function Iye(t,e){const n={};for(const r of e.attributes)if(r.type==="mdxJsxExpressionAttribute")if(r.data&&r.data.estree&&t.evaluater){const i=r.data.estree.body[0];i.type;const a=i.expression;a.type;const l=a.properties[0];l.type,Object.assign(n,t.evaluater.evaluateExpression(l.argument))}else yp(t,e.position);else{const s=r.name;let i;if(r.value&&typeof r.value=="object")if(r.value.data&&r.value.data.estree&&t.evaluater){const l=r.value.data.estree.body[0];l.type,i=t.evaluater.evaluateExpression(l.expression)}else yp(t,e.position);else i=r.value===null?!0:r.value;n[s]=i}return n}function gN(t,e){const n=[];let r=-1;const s=t.passKeys?new Map:kye;for(;++rs?0:s+e:e=e>s?s:e,n=n>0?n:0,r.length<1e4)a=Array.from(r),a.unshift(e,n),t.splice(...a);else for(n&&t.splice(e,n);i0?(Ki(t,t.length,0,e),t):e}const LM={}.hasOwnProperty;function oV(t){const e={};let n=-1;for(;++n13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)===65535||(n&65535)===65534||n>1114111?"�":String.fromCodePoint(n)}function Xa(t){return t.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const ei=fu(/[A-Za-z]/),Vs=fu(/[\dA-Za-z]/),Wye=fu(/[#-'*+\--9=?A-Z^-~]/);function ky(t){return t!==null&&(t<32||t===127)}const DO=fu(/\d/),Gye=fu(/[\dA-Fa-f]/),Xye=fu(/[!-/:-@[-`{-~]/);function St(t){return t!==null&&t<-2}function dr(t){return t!==null&&(t<0||t===32)}function gn(t){return t===-2||t===-1||t===32}const qb=fu(new RegExp("\\p{P}|\\p{S}","u")),gd=fu(/\s/);function fu(t){return e;function e(n){return n!==null&&n>-1&&t.test(String.fromCharCode(n))}}function qf(t){const e=[];let n=-1,r=0,s=0;for(;++n55295&&i<57344){const l=t.charCodeAt(n+1);i<56320&&l>56319&&l<57344?(a=String.fromCharCode(i,l),s=1):a="�"}else a=String.fromCharCode(i);a&&(e.push(t.slice(r,n),encodeURIComponent(a)),r=n+s+1,a=""),s&&(n+=s,s=0)}return e.join("")+t.slice(r)}function cn(t,e,n,r){const s=r?r-1:Number.POSITIVE_INFINITY;let i=0;return a;function a(c){return gn(c)?(t.enter(n),l(c)):e(c)}function l(c){return gn(c)&&i++a))return;const A=e.events.length;let D=A,q,B;for(;D--;)if(e.events[D][0]==="exit"&&e.events[D][1].type==="chunkFlow"){if(q){B=e.events[D][1].end;break}q=!0}for(k(r),_=A;_N;){const E=n[T];e.containerState=E[1],E[0].exit.call(e,t)}n.length=N}function j(){s.write([null]),i=void 0,s=void 0,e.containerState._closeFlow=void 0}}function ebe(t,e,n){return cn(t,t.attempt(this.parser.constructs.document,e,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function hf(t){if(t===null||dr(t)||gd(t))return 1;if(qb(t))return 2}function $b(t,e,n){const r=[];let s=-1;for(;++s1&&t[n][1].end.offset-t[n][1].start.offset>1?2:1;const m={...t[r][1].end},g={...t[n][1].start};FM(m,-c),FM(g,c),a={type:c>1?"strongSequence":"emphasisSequence",start:m,end:{...t[r][1].end}},l={type:c>1?"strongSequence":"emphasisSequence",start:{...t[n][1].start},end:g},i={type:c>1?"strongText":"emphasisText",start:{...t[r][1].end},end:{...t[n][1].start}},s={type:c>1?"strong":"emphasis",start:{...a.start},end:{...l.end}},t[r][1].end={...a.start},t[n][1].start={...l.end},d=[],t[r][1].end.offset-t[r][1].start.offset&&(d=xa(d,[["enter",t[r][1],e],["exit",t[r][1],e]])),d=xa(d,[["enter",s,e],["enter",a,e],["exit",a,e],["enter",i,e]]),d=xa(d,$b(e.parser.constructs.insideSpan.null,t.slice(r+1,n),e)),d=xa(d,[["exit",i,e],["enter",l,e],["exit",l,e],["exit",s,e]]),t[n][1].end.offset-t[n][1].start.offset?(h=2,d=xa(d,[["enter",t[n][1],e],["exit",t[n][1],e]])):h=0,Ki(t,r-1,n-r+3,d),n=r+d.length-h-2;break}}for(n=-1;++n0&&gn(_)?cn(t,j,"linePrefix",i+1)(_):j(_)}function j(_){return _===null||St(_)?t.check(qM,w,T)(_):(t.enter("codeFlowValue"),N(_))}function N(_){return _===null||St(_)?(t.exit("codeFlowValue"),j(_)):(t.consume(_),N)}function T(_){return t.exit("codeFenced"),e(_)}function E(_,A,D){let q=0;return B;function B(V){return _.enter("lineEnding"),_.consume(V),_.exit("lineEnding"),H}function H(V){return _.enter("codeFencedFence"),gn(V)?cn(_,W,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(V):W(V)}function W(V){return V===l?(_.enter("codeFencedFenceSequence"),ee(V)):D(V)}function ee(V){return V===l?(q++,_.consume(V),ee):q>=a?(_.exit("codeFencedFenceSequence"),gn(V)?cn(_,I,"whitespace")(V):I(V)):D(V)}function I(V){return V===null||St(V)?(_.exit("codeFencedFence"),A(V)):D(V)}}}function hbe(t,e,n){const r=this;return s;function s(a){return a===null?n(a):(t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),i)}function i(a){return r.parser.lazy[r.now().line]?n(a):e(a)}}const PS={name:"codeIndented",tokenize:mbe},fbe={partial:!0,tokenize:pbe};function mbe(t,e,n){const r=this;return s;function s(d){return t.enter("codeIndented"),cn(t,i,"linePrefix",5)(d)}function i(d){const h=r.events[r.events.length-1];return h&&h[1].type==="linePrefix"&&h[2].sliceSerialize(h[1],!0).length>=4?a(d):n(d)}function a(d){return d===null?c(d):St(d)?t.attempt(fbe,a,c)(d):(t.enter("codeFlowValue"),l(d))}function l(d){return d===null||St(d)?(t.exit("codeFlowValue"),a(d)):(t.consume(d),l)}function c(d){return t.exit("codeIndented"),e(d)}}function pbe(t,e,n){const r=this;return s;function s(a){return r.parser.lazy[r.now().line]?n(a):St(a)?(t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),s):cn(t,i,"linePrefix",5)(a)}function i(a){const l=r.events[r.events.length-1];return l&&l[1].type==="linePrefix"&&l[2].sliceSerialize(l[1],!0).length>=4?e(a):St(a)?s(a):n(a)}}const gbe={name:"codeText",previous:vbe,resolve:xbe,tokenize:ybe};function xbe(t){let e=t.length-4,n=3,r,s;if((t[n][1].type==="lineEnding"||t[n][1].type==="space")&&(t[e][1].type==="lineEnding"||t[e][1].type==="space")){for(r=n;++r=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return ethis.left.length?this.right.slice(this.right.length-r+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-r+this.left.length).reverse())}splice(e,n,r){const s=n||0;this.setCursor(Math.trunc(e));const i=this.right.splice(this.right.length-s,Number.POSITIVE_INFINITY);return r&&Jm(this.left,r),i.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(e){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(e)}pushMany(e){this.setCursor(Number.POSITIVE_INFINITY),Jm(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),Jm(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0))if(e=4?e(a):t.interrupt(r.parser.constructs.flow,n,e)(a)}}function fV(t,e,n,r,s,i,a,l,c){const d=c||Number.POSITIVE_INFINITY;let h=0;return m;function m(k){return k===60?(t.enter(r),t.enter(s),t.enter(i),t.consume(k),t.exit(i),g):k===null||k===32||k===41||ky(k)?n(k):(t.enter(r),t.enter(a),t.enter(l),t.enter("chunkString",{contentType:"string"}),w(k))}function g(k){return k===62?(t.enter(i),t.consume(k),t.exit(i),t.exit(s),t.exit(r),e):(t.enter(l),t.enter("chunkString",{contentType:"string"}),x(k))}function x(k){return k===62?(t.exit("chunkString"),t.exit(l),g(k)):k===null||k===60||St(k)?n(k):(t.consume(k),k===92?y:x)}function y(k){return k===60||k===62||k===92?(t.consume(k),x):x(k)}function w(k){return!h&&(k===null||k===41||dr(k))?(t.exit("chunkString"),t.exit(l),t.exit(a),t.exit(r),e(k)):h999||x===null||x===91||x===93&&!c||x===94&&!l&&"_hiddenFootnoteSupport"in a.parser.constructs?n(x):x===93?(t.exit(i),t.enter(s),t.consume(x),t.exit(s),t.exit(r),e):St(x)?(t.enter("lineEnding"),t.consume(x),t.exit("lineEnding"),h):(t.enter("chunkString",{contentType:"string"}),m(x))}function m(x){return x===null||x===91||x===93||St(x)||l++>999?(t.exit("chunkString"),h(x)):(t.consume(x),c||(c=!gn(x)),x===92?g:m)}function g(x){return x===91||x===92||x===93?(t.consume(x),l++,m):m(x)}}function pV(t,e,n,r,s,i){let a;return l;function l(g){return g===34||g===39||g===40?(t.enter(r),t.enter(s),t.consume(g),t.exit(s),a=g===40?41:g,c):n(g)}function c(g){return g===a?(t.enter(s),t.consume(g),t.exit(s),t.exit(r),e):(t.enter(i),d(g))}function d(g){return g===a?(t.exit(i),c(a)):g===null?n(g):St(g)?(t.enter("lineEnding"),t.consume(g),t.exit("lineEnding"),cn(t,d,"linePrefix")):(t.enter("chunkString",{contentType:"string"}),h(g))}function h(g){return g===a||g===null||St(g)?(t.exit("chunkString"),d(g)):(t.consume(g),g===92?m:h)}function m(g){return g===a||g===92?(t.consume(g),h):h(g)}}function D0(t,e){let n;return r;function r(s){return St(s)?(t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),n=!0,r):gn(s)?cn(t,r,n?"linePrefix":"lineSuffix")(s):e(s)}}const Cbe={name:"definition",tokenize:Ebe},Tbe={partial:!0,tokenize:_be};function Ebe(t,e,n){const r=this;let s;return i;function i(x){return t.enter("definition"),a(x)}function a(x){return mV.call(r,t,l,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(x)}function l(x){return s=Xa(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),x===58?(t.enter("definitionMarker"),t.consume(x),t.exit("definitionMarker"),c):n(x)}function c(x){return dr(x)?D0(t,d)(x):d(x)}function d(x){return fV(t,h,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(x)}function h(x){return t.attempt(Tbe,m,m)(x)}function m(x){return gn(x)?cn(t,g,"whitespace")(x):g(x)}function g(x){return x===null||St(x)?(t.exit("definition"),r.parser.defined.push(s),e(x)):n(x)}}function _be(t,e,n){return r;function r(l){return dr(l)?D0(t,s)(l):n(l)}function s(l){return pV(t,i,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(l)}function i(l){return gn(l)?cn(t,a,"whitespace")(l):a(l)}function a(l){return l===null||St(l)?e(l):n(l)}}const Abe={name:"hardBreakEscape",tokenize:Mbe};function Mbe(t,e,n){return r;function r(i){return t.enter("hardBreakEscape"),t.consume(i),s}function s(i){return St(i)?(t.exit("hardBreakEscape"),e(i)):n(i)}}const Rbe={name:"headingAtx",resolve:Dbe,tokenize:Pbe};function Dbe(t,e){let n=t.length-2,r=3,s,i;return t[r][1].type==="whitespace"&&(r+=2),n-2>r&&t[n][1].type==="whitespace"&&(n-=2),t[n][1].type==="atxHeadingSequence"&&(r===n-1||n-4>r&&t[n-2][1].type==="whitespace")&&(n-=r+1===n?2:4),n>r&&(s={type:"atxHeadingText",start:t[r][1].start,end:t[n][1].end},i={type:"chunkText",start:t[r][1].start,end:t[n][1].end,contentType:"text"},Ki(t,r,n-r+1,[["enter",s,e],["enter",i,e],["exit",i,e],["exit",s,e]])),t}function Pbe(t,e,n){let r=0;return s;function s(h){return t.enter("atxHeading"),i(h)}function i(h){return t.enter("atxHeadingSequence"),a(h)}function a(h){return h===35&&r++<6?(t.consume(h),a):h===null||dr(h)?(t.exit("atxHeadingSequence"),l(h)):n(h)}function l(h){return h===35?(t.enter("atxHeadingSequence"),c(h)):h===null||St(h)?(t.exit("atxHeading"),e(h)):gn(h)?cn(t,l,"whitespace")(h):(t.enter("atxHeadingText"),d(h))}function c(h){return h===35?(t.consume(h),c):(t.exit("atxHeadingSequence"),l(h))}function d(h){return h===null||h===35||dr(h)?(t.exit("atxHeadingText"),l(h)):(t.consume(h),d)}}const zbe=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],HM=["pre","script","style","textarea"],Ibe={concrete:!0,name:"htmlFlow",resolveTo:Fbe,tokenize:qbe},Lbe={partial:!0,tokenize:Hbe},Bbe={partial:!0,tokenize:$be};function Fbe(t){let e=t.length;for(;e--&&!(t[e][0]==="enter"&&t[e][1].type==="htmlFlow"););return e>1&&t[e-2][1].type==="linePrefix"&&(t[e][1].start=t[e-2][1].start,t[e+1][1].start=t[e-2][1].start,t.splice(e-2,2)),t}function qbe(t,e,n){const r=this;let s,i,a,l,c;return d;function d(z){return h(z)}function h(z){return t.enter("htmlFlow"),t.enter("htmlFlowData"),t.consume(z),m}function m(z){return z===33?(t.consume(z),g):z===47?(t.consume(z),i=!0,w):z===63?(t.consume(z),s=3,r.interrupt?e:R):ei(z)?(t.consume(z),a=String.fromCharCode(z),S):n(z)}function g(z){return z===45?(t.consume(z),s=2,x):z===91?(t.consume(z),s=5,l=0,y):ei(z)?(t.consume(z),s=4,r.interrupt?e:R):n(z)}function x(z){return z===45?(t.consume(z),r.interrupt?e:R):n(z)}function y(z){const U="CDATA[";return z===U.charCodeAt(l++)?(t.consume(z),l===U.length?r.interrupt?e:W:y):n(z)}function w(z){return ei(z)?(t.consume(z),a=String.fromCharCode(z),S):n(z)}function S(z){if(z===null||z===47||z===62||dr(z)){const U=z===47,te=a.toLowerCase();return!U&&!i&&HM.includes(te)?(s=1,r.interrupt?e(z):W(z)):zbe.includes(a.toLowerCase())?(s=6,U?(t.consume(z),k):r.interrupt?e(z):W(z)):(s=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(z):i?j(z):N(z))}return z===45||Vs(z)?(t.consume(z),a+=String.fromCharCode(z),S):n(z)}function k(z){return z===62?(t.consume(z),r.interrupt?e:W):n(z)}function j(z){return gn(z)?(t.consume(z),j):B(z)}function N(z){return z===47?(t.consume(z),B):z===58||z===95||ei(z)?(t.consume(z),T):gn(z)?(t.consume(z),N):B(z)}function T(z){return z===45||z===46||z===58||z===95||Vs(z)?(t.consume(z),T):E(z)}function E(z){return z===61?(t.consume(z),_):gn(z)?(t.consume(z),E):N(z)}function _(z){return z===null||z===60||z===61||z===62||z===96?n(z):z===34||z===39?(t.consume(z),c=z,A):gn(z)?(t.consume(z),_):D(z)}function A(z){return z===c?(t.consume(z),c=null,q):z===null||St(z)?n(z):(t.consume(z),A)}function D(z){return z===null||z===34||z===39||z===47||z===60||z===61||z===62||z===96||dr(z)?E(z):(t.consume(z),D)}function q(z){return z===47||z===62||gn(z)?N(z):n(z)}function B(z){return z===62?(t.consume(z),H):n(z)}function H(z){return z===null||St(z)?W(z):gn(z)?(t.consume(z),H):n(z)}function W(z){return z===45&&s===2?(t.consume(z),L):z===60&&s===1?(t.consume(z),$):z===62&&s===4?(t.consume(z),ie):z===63&&s===3?(t.consume(z),R):z===93&&s===5?(t.consume(z),Y):St(z)&&(s===6||s===7)?(t.exit("htmlFlowData"),t.check(Lbe,X,ee)(z)):z===null||St(z)?(t.exit("htmlFlowData"),ee(z)):(t.consume(z),W)}function ee(z){return t.check(Bbe,I,X)(z)}function I(z){return t.enter("lineEnding"),t.consume(z),t.exit("lineEnding"),V}function V(z){return z===null||St(z)?ee(z):(t.enter("htmlFlowData"),W(z))}function L(z){return z===45?(t.consume(z),R):W(z)}function $(z){return z===47?(t.consume(z),a="",K):W(z)}function K(z){if(z===62){const U=a.toLowerCase();return HM.includes(U)?(t.consume(z),ie):W(z)}return ei(z)&&a.length<8?(t.consume(z),a+=String.fromCharCode(z),K):W(z)}function Y(z){return z===93?(t.consume(z),R):W(z)}function R(z){return z===62?(t.consume(z),ie):z===45&&s===2?(t.consume(z),R):W(z)}function ie(z){return z===null||St(z)?(t.exit("htmlFlowData"),X(z)):(t.consume(z),ie)}function X(z){return t.exit("htmlFlow"),e(z)}}function $be(t,e,n){const r=this;return s;function s(a){return St(a)?(t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),i):n(a)}function i(a){return r.parser.lazy[r.now().line]?n(a):e(a)}}function Hbe(t,e,n){return r;function r(s){return t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),t.attempt(gg,e,n)}}const Qbe={name:"htmlText",tokenize:Vbe};function Vbe(t,e,n){const r=this;let s,i,a;return l;function l(R){return t.enter("htmlText"),t.enter("htmlTextData"),t.consume(R),c}function c(R){return R===33?(t.consume(R),d):R===47?(t.consume(R),E):R===63?(t.consume(R),N):ei(R)?(t.consume(R),D):n(R)}function d(R){return R===45?(t.consume(R),h):R===91?(t.consume(R),i=0,y):ei(R)?(t.consume(R),j):n(R)}function h(R){return R===45?(t.consume(R),x):n(R)}function m(R){return R===null?n(R):R===45?(t.consume(R),g):St(R)?(a=m,$(R)):(t.consume(R),m)}function g(R){return R===45?(t.consume(R),x):m(R)}function x(R){return R===62?L(R):R===45?g(R):m(R)}function y(R){const ie="CDATA[";return R===ie.charCodeAt(i++)?(t.consume(R),i===ie.length?w:y):n(R)}function w(R){return R===null?n(R):R===93?(t.consume(R),S):St(R)?(a=w,$(R)):(t.consume(R),w)}function S(R){return R===93?(t.consume(R),k):w(R)}function k(R){return R===62?L(R):R===93?(t.consume(R),k):w(R)}function j(R){return R===null||R===62?L(R):St(R)?(a=j,$(R)):(t.consume(R),j)}function N(R){return R===null?n(R):R===63?(t.consume(R),T):St(R)?(a=N,$(R)):(t.consume(R),N)}function T(R){return R===62?L(R):N(R)}function E(R){return ei(R)?(t.consume(R),_):n(R)}function _(R){return R===45||Vs(R)?(t.consume(R),_):A(R)}function A(R){return St(R)?(a=A,$(R)):gn(R)?(t.consume(R),A):L(R)}function D(R){return R===45||Vs(R)?(t.consume(R),D):R===47||R===62||dr(R)?q(R):n(R)}function q(R){return R===47?(t.consume(R),L):R===58||R===95||ei(R)?(t.consume(R),B):St(R)?(a=q,$(R)):gn(R)?(t.consume(R),q):L(R)}function B(R){return R===45||R===46||R===58||R===95||Vs(R)?(t.consume(R),B):H(R)}function H(R){return R===61?(t.consume(R),W):St(R)?(a=H,$(R)):gn(R)?(t.consume(R),H):q(R)}function W(R){return R===null||R===60||R===61||R===62||R===96?n(R):R===34||R===39?(t.consume(R),s=R,ee):St(R)?(a=W,$(R)):gn(R)?(t.consume(R),W):(t.consume(R),I)}function ee(R){return R===s?(t.consume(R),s=void 0,V):R===null?n(R):St(R)?(a=ee,$(R)):(t.consume(R),ee)}function I(R){return R===null||R===34||R===39||R===60||R===61||R===96?n(R):R===47||R===62||dr(R)?q(R):(t.consume(R),I)}function V(R){return R===47||R===62||dr(R)?q(R):n(R)}function L(R){return R===62?(t.consume(R),t.exit("htmlTextData"),t.exit("htmlText"),e):n(R)}function $(R){return t.exit("htmlTextData"),t.enter("lineEnding"),t.consume(R),t.exit("lineEnding"),K}function K(R){return gn(R)?cn(t,Y,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(R):Y(R)}function Y(R){return t.enter("htmlTextData"),a(R)}}const yN={name:"labelEnd",resolveAll:Xbe,resolveTo:Ybe,tokenize:Kbe},Ube={tokenize:Zbe},Wbe={tokenize:Jbe},Gbe={tokenize:ewe};function Xbe(t){let e=-1;const n=[];for(;++e=3&&(d===null||St(d))?(t.exit("thematicBreak"),e(d)):n(d)}function c(d){return d===s?(t.consume(d),r++,c):(t.exit("thematicBreakSequence"),gn(d)?cn(t,l,"whitespace")(d):l(d))}}const pi={continuation:{tokenize:uwe},exit:hwe,name:"list",tokenize:cwe},owe={partial:!0,tokenize:fwe},lwe={partial:!0,tokenize:dwe};function cwe(t,e,n){const r=this,s=r.events[r.events.length-1];let i=s&&s[1].type==="linePrefix"?s[2].sliceSerialize(s[1],!0).length:0,a=0;return l;function l(x){const y=r.containerState.type||(x===42||x===43||x===45?"listUnordered":"listOrdered");if(y==="listUnordered"?!r.containerState.marker||x===r.containerState.marker:DO(x)){if(r.containerState.type||(r.containerState.type=y,t.enter(y,{_container:!0})),y==="listUnordered")return t.enter("listItemPrefix"),x===42||x===45?t.check(Cv,n,d)(x):d(x);if(!r.interrupt||x===49)return t.enter("listItemPrefix"),t.enter("listItemValue"),c(x)}return n(x)}function c(x){return DO(x)&&++a<10?(t.consume(x),c):(!r.interrupt||a<2)&&(r.containerState.marker?x===r.containerState.marker:x===41||x===46)?(t.exit("listItemValue"),d(x)):n(x)}function d(x){return t.enter("listItemMarker"),t.consume(x),t.exit("listItemMarker"),r.containerState.marker=r.containerState.marker||x,t.check(gg,r.interrupt?n:h,t.attempt(owe,g,m))}function h(x){return r.containerState.initialBlankLine=!0,i++,g(x)}function m(x){return gn(x)?(t.enter("listItemPrefixWhitespace"),t.consume(x),t.exit("listItemPrefixWhitespace"),g):n(x)}function g(x){return r.containerState.size=i+r.sliceSerialize(t.exit("listItemPrefix"),!0).length,e(x)}}function uwe(t,e,n){const r=this;return r.containerState._closeFlow=void 0,t.check(gg,s,i);function s(l){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,cn(t,e,"listItemIndent",r.containerState.size+1)(l)}function i(l){return r.containerState.furtherBlankLines||!gn(l)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,a(l)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,t.attempt(lwe,e,a)(l))}function a(l){return r.containerState._closeFlow=!0,r.interrupt=void 0,cn(t,t.attempt(pi,e,n),"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(l)}}function dwe(t,e,n){const r=this;return cn(t,s,"listItemIndent",r.containerState.size+1);function s(i){const a=r.events[r.events.length-1];return a&&a[1].type==="listItemIndent"&&a[2].sliceSerialize(a[1],!0).length===r.containerState.size?e(i):n(i)}}function hwe(t){t.exit(this.containerState.type)}function fwe(t,e,n){const r=this;return cn(t,s,"listItemPrefixWhitespace",r.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function s(i){const a=r.events[r.events.length-1];return!gn(i)&&a&&a[1].type==="listItemPrefixWhitespace"?e(i):n(i)}}const QM={name:"setextUnderline",resolveTo:mwe,tokenize:pwe};function mwe(t,e){let n=t.length,r,s,i;for(;n--;)if(t[n][0]==="enter"){if(t[n][1].type==="content"){r=n;break}t[n][1].type==="paragraph"&&(s=n)}else t[n][1].type==="content"&&t.splice(n,1),!i&&t[n][1].type==="definition"&&(i=n);const a={type:"setextHeading",start:{...t[r][1].start},end:{...t[t.length-1][1].end}};return t[s][1].type="setextHeadingText",i?(t.splice(s,0,["enter",a,e]),t.splice(i+1,0,["exit",t[r][1],e]),t[r][1].end={...t[i][1].end}):t[r][1]=a,t.push(["exit",a,e]),t}function pwe(t,e,n){const r=this;let s;return i;function i(d){let h=r.events.length,m;for(;h--;)if(r.events[h][1].type!=="lineEnding"&&r.events[h][1].type!=="linePrefix"&&r.events[h][1].type!=="content"){m=r.events[h][1].type==="paragraph";break}return!r.parser.lazy[r.now().line]&&(r.interrupt||m)?(t.enter("setextHeadingLine"),s=d,a(d)):n(d)}function a(d){return t.enter("setextHeadingLineSequence"),l(d)}function l(d){return d===s?(t.consume(d),l):(t.exit("setextHeadingLineSequence"),gn(d)?cn(t,c,"lineSuffix")(d):c(d))}function c(d){return d===null||St(d)?(t.exit("setextHeadingLine"),e(d)):n(d)}}const gwe={tokenize:xwe};function xwe(t){const e=this,n=t.attempt(gg,r,t.attempt(this.parser.constructs.flowInitial,s,cn(t,t.attempt(this.parser.constructs.flow,s,t.attempt(Sbe,s)),"linePrefix")));return n;function r(i){if(i===null){t.consume(i);return}return t.enter("lineEndingBlank"),t.consume(i),t.exit("lineEndingBlank"),e.currentConstruct=void 0,n}function s(i){if(i===null){t.consume(i);return}return t.enter("lineEnding"),t.consume(i),t.exit("lineEnding"),e.currentConstruct=void 0,n}}const vwe={resolveAll:xV()},ywe=gV("string"),bwe=gV("text");function gV(t){return{resolveAll:xV(t==="text"?wwe:void 0),tokenize:e};function e(n){const r=this,s=this.parser.constructs[t],i=n.attempt(s,a,l);return a;function a(h){return d(h)?i(h):l(h)}function l(h){if(h===null){n.consume(h);return}return n.enter("data"),n.consume(h),c}function c(h){return d(h)?(n.exit("data"),i(h)):(n.consume(h),c)}function d(h){if(h===null)return!0;const m=s[h];let g=-1;if(m)for(;++g-1){const l=a[0];typeof l=="string"?a[0]=l.slice(r):a.shift()}i>0&&a.push(t[s].slice(0,i))}return a}function Dwe(t,e){let n=-1;const r=[];let s;for(;++n0){const Mt=st.tokenStack[st.tokenStack.length-1];(Mt[1]||FM).call(st,void 0,Mt[0])}for(Ie.position={start:Nc(Ne.length>0?Ne[0][1].start:{line:1,column:1,offset:0}),end:Nc(Ne.length>0?Ne[Ne.length-2][1].end:{line:1,column:1,offset:0})},Pt=-1;++Pt1?"-"+l:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(a)}]};t.patch(e,c);const d={type:"element",tagName:"sup",properties:{},children:[c]};return t.patch(e,d),t.applyData(e,d)}function Wwe(t,e){const n={type:"element",tagName:"h"+e.depth,properties:{},children:t.all(e)};return t.patch(e,n),t.applyData(e,n)}function Gwe(t,e){if(t.options.allowDangerousHtml){const n={type:"raw",value:e.value};return t.patch(e,n),t.applyData(e,n)}}function gV(t,e){const n=e.referenceType;let r="]";if(n==="collapsed"?r+="[]":n==="full"&&(r+="["+(e.label||e.identifier)+"]"),e.type==="imageReference")return[{type:"text",value:"!["+e.alt+r}];const s=t.all(e),i=s[0];i&&i.type==="text"?i.value="["+i.value:s.unshift({type:"text",value:"["});const a=s[s.length-1];return a&&a.type==="text"?a.value+=r:s.push({type:"text",value:r}),s}function Xwe(t,e){const n=String(e.identifier).toUpperCase(),r=t.definitionById.get(n);if(!r)return gV(t,e);const s={src:Ff(r.url||""),alt:e.alt};r.title!==null&&r.title!==void 0&&(s.title=r.title);const i={type:"element",tagName:"img",properties:s,children:[]};return t.patch(e,i),t.applyData(e,i)}function Ywe(t,e){const n={src:Ff(e.url)};e.alt!==null&&e.alt!==void 0&&(n.alt=e.alt),e.title!==null&&e.title!==void 0&&(n.title=e.title);const r={type:"element",tagName:"img",properties:n,children:[]};return t.patch(e,r),t.applyData(e,r)}function Kwe(t,e){const n={type:"text",value:e.value.replace(/\r?\n|\r/g," ")};t.patch(e,n);const r={type:"element",tagName:"code",properties:{},children:[n]};return t.patch(e,r),t.applyData(e,r)}function Zwe(t,e){const n=String(e.identifier).toUpperCase(),r=t.definitionById.get(n);if(!r)return gV(t,e);const s={href:Ff(r.url||"")};r.title!==null&&r.title!==void 0&&(s.title=r.title);const i={type:"element",tagName:"a",properties:s,children:t.all(e)};return t.patch(e,i),t.applyData(e,i)}function Jwe(t,e){const n={href:Ff(e.url)};e.title!==null&&e.title!==void 0&&(n.title=e.title);const r={type:"element",tagName:"a",properties:n,children:t.all(e)};return t.patch(e,r),t.applyData(e,r)}function e2e(t,e,n){const r=t.all(e),s=n?t2e(n):xV(e),i={},a=[];if(typeof e.checked=="boolean"){const h=r[0];let m;h&&h.type==="element"&&h.tagName==="p"?m=h:(m={type:"element",tagName:"p",properties:{},children:[]},r.unshift(m)),m.children.length>0&&m.children.unshift({type:"text",value:" "}),m.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:e.checked,disabled:!0},children:[]}),i.className=["task-list-item"]}let l=-1;for(;++l0){const Rt=rt.tokenStack[rt.tokenStack.length-1];(Rt[1]||UM).call(rt,void 0,Rt[0])}for(ze.position={start:Ec(Ne.length>0?Ne[0][1].start:{line:1,column:1,offset:0}),end:Ec(Ne.length>0?Ne[Ne.length-2][1].end:{line:1,column:1,offset:0})},zt=-1;++zt1?"-"+l:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(a)}]};t.patch(e,c);const d={type:"element",tagName:"sup",properties:{},children:[c]};return t.patch(e,d),t.applyData(e,d)}function Kwe(t,e){const n={type:"element",tagName:"h"+e.depth,properties:{},children:t.all(e)};return t.patch(e,n),t.applyData(e,n)}function Zwe(t,e){if(t.options.allowDangerousHtml){const n={type:"raw",value:e.value};return t.patch(e,n),t.applyData(e,n)}}function bV(t,e){const n=e.referenceType;let r="]";if(n==="collapsed"?r+="[]":n==="full"&&(r+="["+(e.label||e.identifier)+"]"),e.type==="imageReference")return[{type:"text",value:"!["+e.alt+r}];const s=t.all(e),i=s[0];i&&i.type==="text"?i.value="["+i.value:s.unshift({type:"text",value:"["});const a=s[s.length-1];return a&&a.type==="text"?a.value+=r:s.push({type:"text",value:r}),s}function Jwe(t,e){const n=String(e.identifier).toUpperCase(),r=t.definitionById.get(n);if(!r)return bV(t,e);const s={src:qf(r.url||""),alt:e.alt};r.title!==null&&r.title!==void 0&&(s.title=r.title);const i={type:"element",tagName:"img",properties:s,children:[]};return t.patch(e,i),t.applyData(e,i)}function e2e(t,e){const n={src:qf(e.url)};e.alt!==null&&e.alt!==void 0&&(n.alt=e.alt),e.title!==null&&e.title!==void 0&&(n.title=e.title);const r={type:"element",tagName:"img",properties:n,children:[]};return t.patch(e,r),t.applyData(e,r)}function t2e(t,e){const n={type:"text",value:e.value.replace(/\r?\n|\r/g," ")};t.patch(e,n);const r={type:"element",tagName:"code",properties:{},children:[n]};return t.patch(e,r),t.applyData(e,r)}function n2e(t,e){const n=String(e.identifier).toUpperCase(),r=t.definitionById.get(n);if(!r)return bV(t,e);const s={href:qf(r.url||"")};r.title!==null&&r.title!==void 0&&(s.title=r.title);const i={type:"element",tagName:"a",properties:s,children:t.all(e)};return t.patch(e,i),t.applyData(e,i)}function r2e(t,e){const n={href:qf(e.url)};e.title!==null&&e.title!==void 0&&(n.title=e.title);const r={type:"element",tagName:"a",properties:n,children:t.all(e)};return t.patch(e,r),t.applyData(e,r)}function s2e(t,e,n){const r=t.all(e),s=n?i2e(n):wV(e),i={},a=[];if(typeof e.checked=="boolean"){const h=r[0];let m;h&&h.type==="element"&&h.tagName==="p"?m=h:(m={type:"element",tagName:"p",properties:{},children:[]},r.unshift(m)),m.children.length>0&&m.children.unshift({type:"text",value:" "}),m.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:e.checked,disabled:!0},children:[]}),i.className=["task-list-item"]}let l=-1;for(;++l1}function n2e(t,e){const n={},r=t.all(e);let s=-1;for(typeof e.start=="number"&&e.start!==1&&(n.start=e.start);++s0){const a={type:"element",tagName:"tbody",properties:{},children:t.wrap(n,!0)},l=oN(e.children[1]),c=YQ(e.children[e.children.length-1]);l&&c&&(a.position={start:l,end:c}),s.push(a)}const i={type:"element",tagName:"table",properties:{},children:t.wrap(s,!0)};return t.patch(e,i),t.applyData(e,i)}function o2e(t,e,n){const r=n?n.children:void 0,i=(r?r.indexOf(e):1)===0?"th":"td",a=n&&n.type==="table"?n.align:void 0,l=a?a.length:e.children.length;let c=-1;const d=[];for(;++c0,!0),r[0]),s=r.index+r[0].length,r=n.exec(e);return i.push(HM(e.slice(s),s>0,!1)),i.join("")}function HM(t,e,n){let r=0,s=t.length;if(e){let i=t.codePointAt(r);for(;i===qM||i===$M;)r++,i=t.codePointAt(r)}if(n){let i=t.codePointAt(s-1);for(;i===qM||i===$M;)s--,i=t.codePointAt(s-1)}return s>r?t.slice(r,s):""}function u2e(t,e){const n={type:"text",value:c2e(String(e.value))};return t.patch(e,n),t.applyData(e,n)}function d2e(t,e){const n={type:"element",tagName:"hr",properties:{},children:[]};return t.patch(e,n),t.applyData(e,n)}const h2e={blockquote:qwe,break:$we,code:Hwe,delete:Qwe,emphasis:Vwe,footnoteReference:Uwe,heading:Wwe,html:Gwe,imageReference:Xwe,image:Ywe,inlineCode:Kwe,linkReference:Zwe,link:Jwe,listItem:e2e,list:n2e,paragraph:r2e,root:s2e,strong:i2e,table:a2e,tableCell:l2e,tableRow:o2e,text:u2e,thematicBreak:d2e,toml:C1,yaml:C1,definition:C1,footnoteDefinition:C1};function C1(){}const vV=-1,Bb=0,M0=1,yy=2,mN=3,pN=4,gN=5,xN=6,yV=7,bV=8,QM=typeof self=="object"?self:globalThis,f2e=(t,e)=>{const n=(s,i)=>(t.set(i,s),s),r=s=>{if(t.has(s))return t.get(s);const[i,a]=e[s];switch(i){case Bb:case vV:return n(a,s);case M0:{const l=n([],s);for(const c of a)l.push(r(c));return l}case yy:{const l=n({},s);for(const[c,d]of a)l[r(c)]=r(d);return l}case mN:return n(new Date(a),s);case pN:{const{source:l,flags:c}=a;return n(new RegExp(l,c),s)}case gN:{const l=n(new Map,s);for(const[c,d]of a)l.set(r(c),r(d));return l}case xN:{const l=n(new Set,s);for(const c of a)l.add(r(c));return l}case yV:{const{name:l,message:c}=a;return n(new QM[l](c),s)}case bV:return n(BigInt(a),s);case"BigInt":return n(Object(BigInt(a)),s);case"ArrayBuffer":return n(new Uint8Array(a).buffer,a);case"DataView":{const{buffer:l}=new Uint8Array(a);return n(new DataView(l),a)}}return n(new QM[i](a),s)};return r},VM=t=>f2e(new Map,t)(0),lh="",{toString:m2e}={},{keys:p2e}=Object,Jm=t=>{const e=typeof t;if(e!=="object"||!t)return[Bb,e];const n=m2e.call(t).slice(8,-1);switch(n){case"Array":return[M0,lh];case"Object":return[yy,lh];case"Date":return[mN,lh];case"RegExp":return[pN,lh];case"Map":return[gN,lh];case"Set":return[xN,lh];case"DataView":return[M0,n]}return n.includes("Array")?[M0,n]:n.includes("Error")?[yV,n]:[yy,n]},T1=([t,e])=>t===Bb&&(e==="function"||e==="symbol"),g2e=(t,e,n,r)=>{const s=(a,l)=>{const c=r.push(a)-1;return n.set(l,c),c},i=a=>{if(n.has(a))return n.get(a);let[l,c]=Jm(a);switch(l){case Bb:{let h=a;switch(c){case"bigint":l=bV,h=a.toString();break;case"function":case"symbol":if(t)throw new TypeError("unable to serialize "+c);h=null;break;case"undefined":return s([vV],a)}return s([l,h],a)}case M0:{if(c){let g=a;return c==="DataView"?g=new Uint8Array(a.buffer):c==="ArrayBuffer"&&(g=new Uint8Array(a)),s([c,[...g]],a)}const h=[],m=s([l,h],a);for(const g of a)h.push(i(g));return m}case yy:{if(c)switch(c){case"BigInt":return s([c,a.toString()],a);case"Boolean":case"Number":case"String":return s([c,a.valueOf()],a)}if(e&&"toJSON"in a)return i(a.toJSON());const h=[],m=s([l,h],a);for(const g of p2e(a))(t||!T1(Jm(a[g])))&&h.push([i(g),i(a[g])]);return m}case mN:return s([l,a.toISOString()],a);case pN:{const{source:h,flags:m}=a;return s([l,{source:h,flags:m}],a)}case gN:{const h=[],m=s([l,h],a);for(const[g,x]of a)(t||!(T1(Jm(g))||T1(Jm(x))))&&h.push([i(g),i(x)]);return m}case xN:{const h=[],m=s([l,h],a);for(const g of a)(t||!T1(Jm(g)))&&h.push(i(g));return m}}const{message:d}=a;return s([l,{name:c,message:d}],a)};return i},UM=(t,{json:e,lossy:n}={})=>{const r=[];return g2e(!(e||n),!!e,new Map,r)(t),r},by=typeof structuredClone=="function"?(t,e)=>e&&("json"in e||"lossy"in e)?VM(UM(t,e)):structuredClone(t):(t,e)=>VM(UM(t,e));function x2e(t,e){const n=[{type:"text",value:"↩"}];return e>1&&n.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(e)}]}),n}function v2e(t,e){return"Back to reference "+(t+1)+(e>1?"-"+e:"")}function y2e(t){const e=typeof t.options.clobberPrefix=="string"?t.options.clobberPrefix:"user-content-",n=t.options.footnoteBackContent||x2e,r=t.options.footnoteBackLabel||v2e,s=t.options.footnoteLabel||"Footnotes",i=t.options.footnoteLabelTagName||"h2",a=t.options.footnoteLabelProperties||{className:["sr-only"]},l=[];let c=-1;for(;++c0&&y.push({type:"text",value:" "});let j=typeof n=="string"?n:n(c,x);typeof j=="string"&&(j={type:"text",value:j}),y.push({type:"element",tagName:"a",properties:{href:"#"+e+"fnref-"+g+(x>1?"-"+x:""),dataFootnoteBackref:"",ariaLabel:typeof r=="string"?r:r(c,x),className:["data-footnote-backref"]},children:Array.isArray(j)?j:[j]})}const S=h[h.length-1];if(S&&S.type==="element"&&S.tagName==="p"){const j=S.children[S.children.length-1];j&&j.type==="text"?j.value+=" ":S.children.push({type:"text",value:" "}),S.children.push(...y)}else h.push(...y);const k={type:"element",tagName:"li",properties:{id:e+"fn-"+g},children:t.wrap(h,!0)};t.patch(d,k),l.push(k)}if(l.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:i,properties:{...by(a),id:"footnote-label"},children:[{type:"text",value:s}]},{type:"text",value:` +`});const d={type:"element",tagName:"li",properties:i,children:a};return t.patch(e,d),t.applyData(e,d)}function i2e(t){let e=!1;if(t.type==="list"){e=t.spread||!1;const n=t.children;let r=-1;for(;!e&&++r1}function a2e(t,e){const n={},r=t.all(e);let s=-1;for(typeof e.start=="number"&&e.start!==1&&(n.start=e.start);++s0){const a={type:"element",tagName:"tbody",properties:{},children:t.wrap(n,!0)},l=fN(e.children[1]),c=eV(e.children[e.children.length-1]);l&&c&&(a.position={start:l,end:c}),s.push(a)}const i={type:"element",tagName:"table",properties:{},children:t.wrap(s,!0)};return t.patch(e,i),t.applyData(e,i)}function d2e(t,e,n){const r=n?n.children:void 0,i=(r?r.indexOf(e):1)===0?"th":"td",a=n&&n.type==="table"?n.align:void 0,l=a?a.length:e.children.length;let c=-1;const d=[];for(;++c0,!0),r[0]),s=r.index+r[0].length,r=n.exec(e);return i.push(XM(e.slice(s),s>0,!1)),i.join("")}function XM(t,e,n){let r=0,s=t.length;if(e){let i=t.codePointAt(r);for(;i===WM||i===GM;)r++,i=t.codePointAt(r)}if(n){let i=t.codePointAt(s-1);for(;i===WM||i===GM;)s--,i=t.codePointAt(s-1)}return s>r?t.slice(r,s):""}function m2e(t,e){const n={type:"text",value:f2e(String(e.value))};return t.patch(e,n),t.applyData(e,n)}function p2e(t,e){const n={type:"element",tagName:"hr",properties:{},children:[]};return t.patch(e,n),t.applyData(e,n)}const g2e={blockquote:Vwe,break:Uwe,code:Wwe,delete:Gwe,emphasis:Xwe,footnoteReference:Ywe,heading:Kwe,html:Zwe,imageReference:Jwe,image:e2e,inlineCode:t2e,linkReference:n2e,link:r2e,listItem:s2e,list:a2e,paragraph:o2e,root:l2e,strong:c2e,table:u2e,tableCell:h2e,tableRow:d2e,text:m2e,thematicBreak:p2e,toml:M1,yaml:M1,definition:M1,footnoteDefinition:M1};function M1(){}const SV=-1,Hb=0,P0=1,Oy=2,bN=3,wN=4,SN=5,kN=6,kV=7,OV=8,YM=typeof self=="object"?self:globalThis,x2e=(t,e)=>{const n=(s,i)=>(t.set(i,s),s),r=s=>{if(t.has(s))return t.get(s);const[i,a]=e[s];switch(i){case Hb:case SV:return n(a,s);case P0:{const l=n([],s);for(const c of a)l.push(r(c));return l}case Oy:{const l=n({},s);for(const[c,d]of a)l[r(c)]=r(d);return l}case bN:return n(new Date(a),s);case wN:{const{source:l,flags:c}=a;return n(new RegExp(l,c),s)}case SN:{const l=n(new Map,s);for(const[c,d]of a)l.set(r(c),r(d));return l}case kN:{const l=n(new Set,s);for(const c of a)l.add(r(c));return l}case kV:{const{name:l,message:c}=a;return n(new YM[l](c),s)}case OV:return n(BigInt(a),s);case"BigInt":return n(Object(BigInt(a)),s);case"ArrayBuffer":return n(new Uint8Array(a).buffer,a);case"DataView":{const{buffer:l}=new Uint8Array(a);return n(new DataView(l),a)}}return n(new YM[i](a),s)};return r},KM=t=>x2e(new Map,t)(0),uh="",{toString:v2e}={},{keys:y2e}=Object,e0=t=>{const e=typeof t;if(e!=="object"||!t)return[Hb,e];const n=v2e.call(t).slice(8,-1);switch(n){case"Array":return[P0,uh];case"Object":return[Oy,uh];case"Date":return[bN,uh];case"RegExp":return[wN,uh];case"Map":return[SN,uh];case"Set":return[kN,uh];case"DataView":return[P0,n]}return n.includes("Array")?[P0,n]:n.includes("Error")?[kV,n]:[Oy,n]},R1=([t,e])=>t===Hb&&(e==="function"||e==="symbol"),b2e=(t,e,n,r)=>{const s=(a,l)=>{const c=r.push(a)-1;return n.set(l,c),c},i=a=>{if(n.has(a))return n.get(a);let[l,c]=e0(a);switch(l){case Hb:{let h=a;switch(c){case"bigint":l=OV,h=a.toString();break;case"function":case"symbol":if(t)throw new TypeError("unable to serialize "+c);h=null;break;case"undefined":return s([SV],a)}return s([l,h],a)}case P0:{if(c){let g=a;return c==="DataView"?g=new Uint8Array(a.buffer):c==="ArrayBuffer"&&(g=new Uint8Array(a)),s([c,[...g]],a)}const h=[],m=s([l,h],a);for(const g of a)h.push(i(g));return m}case Oy:{if(c)switch(c){case"BigInt":return s([c,a.toString()],a);case"Boolean":case"Number":case"String":return s([c,a.valueOf()],a)}if(e&&"toJSON"in a)return i(a.toJSON());const h=[],m=s([l,h],a);for(const g of y2e(a))(t||!R1(e0(a[g])))&&h.push([i(g),i(a[g])]);return m}case bN:return s([l,a.toISOString()],a);case wN:{const{source:h,flags:m}=a;return s([l,{source:h,flags:m}],a)}case SN:{const h=[],m=s([l,h],a);for(const[g,x]of a)(t||!(R1(e0(g))||R1(e0(x))))&&h.push([i(g),i(x)]);return m}case kN:{const h=[],m=s([l,h],a);for(const g of a)(t||!R1(e0(g)))&&h.push(i(g));return m}}const{message:d}=a;return s([l,{name:c,message:d}],a)};return i},ZM=(t,{json:e,lossy:n}={})=>{const r=[];return b2e(!(e||n),!!e,new Map,r)(t),r},jy=typeof structuredClone=="function"?(t,e)=>e&&("json"in e||"lossy"in e)?KM(ZM(t,e)):structuredClone(t):(t,e)=>KM(ZM(t,e));function w2e(t,e){const n=[{type:"text",value:"↩"}];return e>1&&n.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(e)}]}),n}function S2e(t,e){return"Back to reference "+(t+1)+(e>1?"-"+e:"")}function k2e(t){const e=typeof t.options.clobberPrefix=="string"?t.options.clobberPrefix:"user-content-",n=t.options.footnoteBackContent||w2e,r=t.options.footnoteBackLabel||S2e,s=t.options.footnoteLabel||"Footnotes",i=t.options.footnoteLabelTagName||"h2",a=t.options.footnoteLabelProperties||{className:["sr-only"]},l=[];let c=-1;for(;++c0&&y.push({type:"text",value:" "});let j=typeof n=="string"?n:n(c,x);typeof j=="string"&&(j={type:"text",value:j}),y.push({type:"element",tagName:"a",properties:{href:"#"+e+"fnref-"+g+(x>1?"-"+x:""),dataFootnoteBackref:"",ariaLabel:typeof r=="string"?r:r(c,x),className:["data-footnote-backref"]},children:Array.isArray(j)?j:[j]})}const S=h[h.length-1];if(S&&S.type==="element"&&S.tagName==="p"){const j=S.children[S.children.length-1];j&&j.type==="text"?j.value+=" ":S.children.push({type:"text",value:" "}),S.children.push(...y)}else h.push(...y);const k={type:"element",tagName:"li",properties:{id:e+"fn-"+g},children:t.wrap(h,!0)};t.patch(d,k),l.push(k)}if(l.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:i,properties:{...jy(a),id:"footnote-label"},children:[{type:"text",value:s}]},{type:"text",value:` `},{type:"element",tagName:"ol",properties:{},children:t.wrap(l,!0)},{type:"text",value:` -`}]}}const hg=(function(t){if(t==null)return k2e;if(typeof t=="function")return Fb(t);if(typeof t=="object")return Array.isArray(t)?b2e(t):w2e(t);if(typeof t=="string")return S2e(t);throw new Error("Expected function, string, or object as test")});function b2e(t){const e=[];let n=-1;for(;++n":""))+")"})}return g;function g(){let x=wV,y,w,S;if((!e||i(c,d,h[h.length-1]||void 0))&&(x=N2e(n(c,h)),x[0]===RO))return x;if("children"in c&&c.children){const k=c;if(k.children&&x[0]!==SV)for(w=(r?k.children.length:-1)+a,S=h.concat(k);w>-1&&w":""))+")"})}return g;function g(){let x=jV,y,w,S;if((!e||i(c,d,h[h.length-1]||void 0))&&(x=_2e(n(c,h)),x[0]===zO))return x;if("children"in c&&c.children){const k=c;if(k.children&&x[0]!==NV)for(w=(r?k.children.length:-1)+a,S=h.concat(k);w>-1&&w0&&n.push({type:"text",value:` -`}),n}function WM(t){let e=0,n=t.charCodeAt(e);for(;n===9||n===32;)e++,n=t.charCodeAt(e);return t.slice(e)}function GM(t,e){const n=T2e(t,e),r=n.one(t,void 0),s=y2e(n),i=Array.isArray(r)?{type:"root",children:r}:r||{type:"root",children:[]};return s&&i.children.push({type:"text",value:` -`},s),i}function R2e(t,e){return t&&"run"in t?async function(n,r){const s=GM(n,{file:r,...e});await t.run(s,r)}:function(n,r){return GM(n,{file:r,...t||e})}}function XM(t){if(t)throw t}var RS,YM;function D2e(){if(YM)return RS;YM=1;var t=Object.prototype.hasOwnProperty,e=Object.prototype.toString,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,s=function(d){return typeof Array.isArray=="function"?Array.isArray(d):e.call(d)==="[object Array]"},i=function(d){if(!d||e.call(d)!=="[object Object]")return!1;var h=t.call(d,"constructor"),m=d.constructor&&d.constructor.prototype&&t.call(d.constructor.prototype,"isPrototypeOf");if(d.constructor&&!h&&!m)return!1;var g;for(g in d);return typeof g>"u"||t.call(d,g)},a=function(d,h){n&&h.name==="__proto__"?n(d,h.name,{enumerable:!0,configurable:!0,value:h.newValue,writable:!0}):d[h.name]=h.newValue},l=function(d,h){if(h==="__proto__")if(t.call(d,h)){if(r)return r(d,h).value}else return;return d[h]};return RS=function c(){var d,h,m,g,x,y,w=arguments[0],S=1,k=arguments.length,j=!1;for(typeof w=="boolean"&&(j=w,w=arguments[1]||{},S=2),(w==null||typeof w!="object"&&typeof w!="function")&&(w={});Sa.length;let c;l&&a.push(s);try{c=t.apply(this,a)}catch(d){const h=d;if(l&&n)throw h;return s(h)}l||(c&&c.then&&typeof c.then=="function"?c.then(i,s):c instanceof Error?s(c):i(c))}function s(a,...l){n||(n=!0,e(a,...l))}function i(a){s(null,a)}}const go={basename:L2e,dirname:B2e,extname:F2e,join:q2e,sep:"/"};function L2e(t,e){if(e!==void 0&&typeof e!="string")throw new TypeError('"ext" argument must be a string');fg(t);let n=0,r=-1,s=t.length,i;if(e===void 0||e.length===0||e.length>t.length){for(;s--;)if(t.codePointAt(s)===47){if(i){n=s+1;break}}else r<0&&(i=!0,r=s+1);return r<0?"":t.slice(n,r)}if(e===t)return"";let a=-1,l=e.length-1;for(;s--;)if(t.codePointAt(s)===47){if(i){n=s+1;break}}else a<0&&(i=!0,a=s+1),l>-1&&(t.codePointAt(s)===e.codePointAt(l--)?l<0&&(r=s):(l=-1,r=a));return n===r?r=a:r<0&&(r=t.length),t.slice(n,r)}function B2e(t){if(fg(t),t.length===0)return".";let e=-1,n=t.length,r;for(;--n;)if(t.codePointAt(n)===47){if(r){e=n;break}}else r||(r=!0);return e<0?t.codePointAt(0)===47?"/":".":e===1&&t.codePointAt(0)===47?"//":t.slice(0,e)}function F2e(t){fg(t);let e=t.length,n=-1,r=0,s=-1,i=0,a;for(;e--;){const l=t.codePointAt(e);if(l===47){if(a){r=e+1;break}continue}n<0&&(a=!0,n=e+1),l===46?s<0?s=e:i!==1&&(i=1):s>-1&&(i=-1)}return s<0||n<0||i===0||i===1&&s===n-1&&s===r+1?"":t.slice(s,n)}function q2e(...t){let e=-1,n;for(;++e0&&t.codePointAt(t.length-1)===47&&(n+="/"),e?"/"+n:n}function H2e(t,e){let n="",r=0,s=-1,i=0,a=-1,l,c;for(;++a<=t.length;){if(a2){if(c=n.lastIndexOf("/"),c!==n.length-1){c<0?(n="",r=0):(n=n.slice(0,c),r=n.length-1-n.lastIndexOf("/")),s=a,i=0;continue}}else if(n.length>0){n="",r=0,s=a,i=0;continue}}e&&(n=n.length>0?n+"/..":"..",r=2)}else n.length>0?n+="/"+t.slice(s+1,a):n=t.slice(s+1,a),r=a-s-1;s=a,i=0}else l===46&&i>-1?i++:i=-1}return n}function fg(t){if(typeof t!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(t))}const Q2e={cwd:V2e};function V2e(){return"/"}function zO(t){return!!(t!==null&&typeof t=="object"&&"href"in t&&t.href&&"protocol"in t&&t.protocol&&t.auth===void 0)}function U2e(t){if(typeof t=="string")t=new URL(t);else if(!zO(t)){const e=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+t+"`");throw e.code="ERR_INVALID_ARG_TYPE",e}if(t.protocol!=="file:"){const e=new TypeError("The URL must be of scheme file");throw e.code="ERR_INVALID_URL_SCHEME",e}return W2e(t)}function W2e(t){if(t.hostname!==""){const r=new TypeError('File URL host must be "localhost" or empty on darwin');throw r.code="ERR_INVALID_FILE_URL_HOST",r}const e=t.pathname;let n=-1;for(;++n0){let[x,...y]=h;const w=r[g][1];PO(w)&&PO(x)&&(x=DS(!0,w,x)),r[g]=[d,x,...y]}}}}const K2e=new bN().freeze();function LS(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `parser`")}function BS(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `compiler`")}function FS(t,e){if(e)throw new Error("Cannot call `"+t+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function ZM(t){if(!PO(t)||typeof t.type!="string")throw new TypeError("Expected node, got `"+t+"`")}function JM(t,e,n){if(!n)throw new Error("`"+t+"` finished async. Use `"+e+"` instead")}function E1(t){return Z2e(t)?t:new kV(t)}function Z2e(t){return!!(t&&typeof t=="object"&&"message"in t&&"messages"in t)}function J2e(t){return typeof t=="string"||e4e(t)}function e4e(t){return!!(t&&typeof t=="object"&&"byteLength"in t&&"byteOffset"in t)}const t4e="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",eR=[],tR={allowDangerousHtml:!0},n4e=/^(https?|ircs?|mailto|xmpp)$/i,r4e=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function s4e(t){const e=i4e(t),n=a4e(t);return o4e(e.runSync(e.parse(n),n),t)}function i4e(t){const e=t.rehypePlugins||eR,n=t.remarkPlugins||eR,r=t.remarkRehypeOptions?{...t.remarkRehypeOptions,...tR}:tR;return K2e().use(Fwe).use(n).use(R2e,r).use(e)}function a4e(t){const e=t.children||"",n=new kV;return typeof e=="string"&&(n.value=e),n}function o4e(t,e){const n=e.allowedElements,r=e.allowElement,s=e.components,i=e.disallowedElements,a=e.skipHtml,l=e.unwrapDisallowed,c=e.urlTransform||l4e;for(const h of r4e)Object.hasOwn(e,h.from)&&(""+h.from+(h.to?"use `"+h.to+"` instead":"remove it")+t4e+h.id,void 0);return yN(t,d),kye(t,{Fragment:o.Fragment,components:s,ignoreInvalidStyle:!0,jsx:o.jsx,jsxs:o.jsxs,passKeys:!0,passNode:!0});function d(h,m,g){if(h.type==="raw"&&g&&typeof m=="number")return a?g.children.splice(m,1):g.children[m]={type:"text",value:h.value},m;if(h.type==="element"){let x;for(x in _S)if(Object.hasOwn(_S,x)&&Object.hasOwn(h.properties,x)){const y=h.properties[x],w=_S[x];(w===null||w.includes(h.tagName))&&(h.properties[x]=c(String(y||""),x,h))}}if(h.type==="element"){let x=n?!n.includes(h.tagName):i?i.includes(h.tagName):!1;if(!x&&r&&typeof m=="number"&&(x=!r(h,m,g)),x&&g&&typeof m=="number")return l&&h.children?g.children.splice(m,1,...h.children):g.children.splice(m,1),m}}}function l4e(t){const e=t.indexOf(":"),n=t.indexOf("?"),r=t.indexOf("#"),s=t.indexOf("/");return e===-1||s!==-1&&e>s||n!==-1&&e>n||r!==-1&&e>r||n4e.test(t.slice(0,e))?t:""}function nR(t,e){const n=String(t);if(typeof e!="string")throw new TypeError("Expected character");let r=0,s=n.indexOf(e);for(;s!==-1;)r++,s=n.indexOf(e,s+e.length);return r}function c4e(t){if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function u4e(t,e,n){const s=hg((n||{}).ignore||[]),i=d4e(e);let a=-1;for(;++a0?{type:"text",value:_}:void 0),_===!1?g.lastIndex=T+1:(y!==T&&j.push({type:"text",value:d.value.slice(y,T)}),Array.isArray(_)?j.push(..._):_&&j.push(_),y=T+N[0].length,k=!0),!g.global)break;N=g.exec(d.value)}return k?(y?\]}]+$/.exec(t);if(!e)return[t,void 0];t=t.slice(0,e.index);let n=e[0],r=n.indexOf(")");const s=nR(t,"(");let i=nR(t,")");for(;r!==-1&&s>i;)t+=n.slice(0,r+1),n=n.slice(r+1),r=n.indexOf(")"),i++;return[t,n]}function OV(t,e){const n=t.input.charCodeAt(t.index-1);return(t.index===0||fd(n)||Ib(n))&&(!e||n!==47)}jV.peek=D4e;function N4e(){this.buffer()}function C4e(t){this.enter({type:"footnoteReference",identifier:"",label:""},t)}function T4e(){this.buffer()}function E4e(t){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},t)}function _4e(t){const e=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=Ga(this.sliceSerialize(t)).toLowerCase(),n.label=e}function A4e(t){this.exit(t)}function M4e(t){const e=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=Ga(this.sliceSerialize(t)).toLowerCase(),n.label=e}function R4e(t){this.exit(t)}function D4e(){return"["}function jV(t,e,n,r){const s=n.createTracker(r);let i=s.move("[^");const a=n.enter("footnoteReference"),l=n.enter("reference");return i+=s.move(n.safe(n.associationId(t),{after:"]",before:i})),l(),a(),i+=s.move("]"),i}function P4e(){return{enter:{gfmFootnoteCallString:N4e,gfmFootnoteCall:C4e,gfmFootnoteDefinitionLabelString:T4e,gfmFootnoteDefinition:E4e},exit:{gfmFootnoteCallString:_4e,gfmFootnoteCall:A4e,gfmFootnoteDefinitionLabelString:M4e,gfmFootnoteDefinition:R4e}}}function z4e(t){let e=!1;return t&&t.firstLineBlank&&(e=!0),{handlers:{footnoteDefinition:n,footnoteReference:jV},unsafe:[{character:"[",inConstruct:["label","phrasing","reference"]}]};function n(r,s,i,a){const l=i.createTracker(a);let c=l.move("[^");const d=i.enter("footnoteDefinition"),h=i.enter("label");return c+=l.move(i.safe(i.associationId(r),{before:c,after:"]"})),h(),c+=l.move("]:"),r.children&&r.children.length>0&&(l.shift(4),c+=l.move((e?` -`:" ")+i.indentLines(i.containerFlow(r,l.current()),e?NV:I4e))),d(),c}}function I4e(t,e,n){return e===0?t:NV(t,e,n)}function NV(t,e,n){return(n?"":" ")+t}const L4e=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"];CV.peek=H4e;function B4e(){return{canContainEols:["delete"],enter:{strikethrough:q4e},exit:{strikethrough:$4e}}}function F4e(){return{unsafe:[{character:"~",inConstruct:"phrasing",notInConstruct:L4e}],handlers:{delete:CV}}}function q4e(t){this.enter({type:"delete",children:[]},t)}function $4e(t){this.exit(t)}function CV(t,e,n,r){const s=n.createTracker(r),i=n.enter("strikethrough");let a=s.move("~~");return a+=n.containerPhrasing(t,{...s.current(),before:a,after:"~"}),a+=s.move("~~"),i(),a}function H4e(){return"~"}function Q4e(t){return t.length}function V4e(t,e){const n=e||{},r=(n.align||[]).concat(),s=n.stringLength||Q4e,i=[],a=[],l=[],c=[];let d=0,h=-1;for(;++hd&&(d=t[h].length);++kc[k])&&(c[k]=N)}w.push(j)}a[h]=w,l[h]=S}let m=-1;if(typeof r=="object"&&"length"in r)for(;++mc[m]&&(c[m]=j),x[m]=j),g[m]=N}a.splice(1,0,g),l.splice(1,0,x),h=-1;const y=[];for(;++h "),i.shift(2);const a=n.indentLines(n.containerFlow(t,i.current()),G4e);return s(),a}function G4e(t,e,n){return">"+(n?"":" ")+t}function X4e(t,e){return sR(t,e.inConstruct,!0)&&!sR(t,e.notInConstruct,!1)}function sR(t,e,n){if(typeof e=="string"&&(e=[e]),!e||e.length===0)return n;let r=-1;for(;++ra&&(a=i):i=1,s=r+e.length,r=n.indexOf(e,s);return a}function Y4e(t,e){return!!(e.options.fences===!1&&t.value&&!t.lang&&/[^ \r\n]/.test(t.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(t.value))}function K4e(t){const e=t.options.fence||"`";if(e!=="`"&&e!=="~")throw new Error("Cannot serialize code with `"+e+"` for `options.fence`, expected `` ` `` or `~`");return e}function Z4e(t,e,n,r){const s=K4e(n),i=t.value||"",a=s==="`"?"GraveAccent":"Tilde";if(Y4e(t,n)){const m=n.enter("codeIndented"),g=n.indentLines(i,J4e);return m(),g}const l=n.createTracker(r),c=s.repeat(Math.max(TV(i,s)+1,3)),d=n.enter("codeFenced");let h=l.move(c);if(t.lang){const m=n.enter(`codeFencedLang${a}`);h+=l.move(n.safe(t.lang,{before:h,after:" ",encode:["`"],...l.current()})),m()}if(t.lang&&t.meta){const m=n.enter(`codeFencedMeta${a}`);h+=l.move(" "),h+=l.move(n.safe(t.meta,{before:h,after:` +`}),n}function JM(t){let e=0,n=t.charCodeAt(e);for(;n===9||n===32;)e++,n=t.charCodeAt(e);return t.slice(e)}function eR(t,e){const n=M2e(t,e),r=n.one(t,void 0),s=k2e(n),i=Array.isArray(r)?{type:"root",children:r}:r||{type:"root",children:[]};return s&&i.children.push({type:"text",value:` +`},s),i}function I2e(t,e){return t&&"run"in t?async function(n,r){const s=eR(n,{file:r,...e});await t.run(s,r)}:function(n,r){return eR(n,{file:r,...t||e})}}function tR(t){if(t)throw t}var IS,nR;function L2e(){if(nR)return IS;nR=1;var t=Object.prototype.hasOwnProperty,e=Object.prototype.toString,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,s=function(d){return typeof Array.isArray=="function"?Array.isArray(d):e.call(d)==="[object Array]"},i=function(d){if(!d||e.call(d)!=="[object Object]")return!1;var h=t.call(d,"constructor"),m=d.constructor&&d.constructor.prototype&&t.call(d.constructor.prototype,"isPrototypeOf");if(d.constructor&&!h&&!m)return!1;var g;for(g in d);return typeof g>"u"||t.call(d,g)},a=function(d,h){n&&h.name==="__proto__"?n(d,h.name,{enumerable:!0,configurable:!0,value:h.newValue,writable:!0}):d[h.name]=h.newValue},l=function(d,h){if(h==="__proto__")if(t.call(d,h)){if(r)return r(d,h).value}else return;return d[h]};return IS=function c(){var d,h,m,g,x,y,w=arguments[0],S=1,k=arguments.length,j=!1;for(typeof w=="boolean"&&(j=w,w=arguments[1]||{},S=2),(w==null||typeof w!="object"&&typeof w!="function")&&(w={});Sa.length;let c;l&&a.push(s);try{c=t.apply(this,a)}catch(d){const h=d;if(l&&n)throw h;return s(h)}l||(c&&c.then&&typeof c.then=="function"?c.then(i,s):c instanceof Error?s(c):i(c))}function s(a,...l){n||(n=!0,e(a,...l))}function i(a){s(null,a)}}const vo={basename:$2e,dirname:H2e,extname:Q2e,join:V2e,sep:"/"};function $2e(t,e){if(e!==void 0&&typeof e!="string")throw new TypeError('"ext" argument must be a string');vg(t);let n=0,r=-1,s=t.length,i;if(e===void 0||e.length===0||e.length>t.length){for(;s--;)if(t.codePointAt(s)===47){if(i){n=s+1;break}}else r<0&&(i=!0,r=s+1);return r<0?"":t.slice(n,r)}if(e===t)return"";let a=-1,l=e.length-1;for(;s--;)if(t.codePointAt(s)===47){if(i){n=s+1;break}}else a<0&&(i=!0,a=s+1),l>-1&&(t.codePointAt(s)===e.codePointAt(l--)?l<0&&(r=s):(l=-1,r=a));return n===r?r=a:r<0&&(r=t.length),t.slice(n,r)}function H2e(t){if(vg(t),t.length===0)return".";let e=-1,n=t.length,r;for(;--n;)if(t.codePointAt(n)===47){if(r){e=n;break}}else r||(r=!0);return e<0?t.codePointAt(0)===47?"/":".":e===1&&t.codePointAt(0)===47?"//":t.slice(0,e)}function Q2e(t){vg(t);let e=t.length,n=-1,r=0,s=-1,i=0,a;for(;e--;){const l=t.codePointAt(e);if(l===47){if(a){r=e+1;break}continue}n<0&&(a=!0,n=e+1),l===46?s<0?s=e:i!==1&&(i=1):s>-1&&(i=-1)}return s<0||n<0||i===0||i===1&&s===n-1&&s===r+1?"":t.slice(s,n)}function V2e(...t){let e=-1,n;for(;++e0&&t.codePointAt(t.length-1)===47&&(n+="/"),e?"/"+n:n}function W2e(t,e){let n="",r=0,s=-1,i=0,a=-1,l,c;for(;++a<=t.length;){if(a2){if(c=n.lastIndexOf("/"),c!==n.length-1){c<0?(n="",r=0):(n=n.slice(0,c),r=n.length-1-n.lastIndexOf("/")),s=a,i=0;continue}}else if(n.length>0){n="",r=0,s=a,i=0;continue}}e&&(n=n.length>0?n+"/..":"..",r=2)}else n.length>0?n+="/"+t.slice(s+1,a):n=t.slice(s+1,a),r=a-s-1;s=a,i=0}else l===46&&i>-1?i++:i=-1}return n}function vg(t){if(typeof t!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(t))}const G2e={cwd:X2e};function X2e(){return"/"}function BO(t){return!!(t!==null&&typeof t=="object"&&"href"in t&&t.href&&"protocol"in t&&t.protocol&&t.auth===void 0)}function Y2e(t){if(typeof t=="string")t=new URL(t);else if(!BO(t)){const e=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+t+"`");throw e.code="ERR_INVALID_ARG_TYPE",e}if(t.protocol!=="file:"){const e=new TypeError("The URL must be of scheme file");throw e.code="ERR_INVALID_URL_SCHEME",e}return K2e(t)}function K2e(t){if(t.hostname!==""){const r=new TypeError('File URL host must be "localhost" or empty on darwin');throw r.code="ERR_INVALID_FILE_URL_HOST",r}const e=t.pathname;let n=-1;for(;++n0){let[x,...y]=h;const w=r[g][1];LO(w)&&LO(x)&&(x=LS(!0,w,x)),r[g]=[d,x,...y]}}}}const t4e=new NN().freeze();function $S(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `parser`")}function HS(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `compiler`")}function QS(t,e){if(e)throw new Error("Cannot call `"+t+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function sR(t){if(!LO(t)||typeof t.type!="string")throw new TypeError("Expected node, got `"+t+"`")}function iR(t,e,n){if(!n)throw new Error("`"+t+"` finished async. Use `"+e+"` instead")}function D1(t){return n4e(t)?t:new CV(t)}function n4e(t){return!!(t&&typeof t=="object"&&"message"in t&&"messages"in t)}function r4e(t){return typeof t=="string"||s4e(t)}function s4e(t){return!!(t&&typeof t=="object"&&"byteLength"in t&&"byteOffset"in t)}const i4e="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",aR=[],oR={allowDangerousHtml:!0},a4e=/^(https?|ircs?|mailto|xmpp)$/i,o4e=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function l4e(t){const e=c4e(t),n=u4e(t);return d4e(e.runSync(e.parse(n),n),t)}function c4e(t){const e=t.rehypePlugins||aR,n=t.remarkPlugins||aR,r=t.remarkRehypeOptions?{...t.remarkRehypeOptions,...oR}:oR;return t4e().use(Qwe).use(n).use(I2e,r).use(e)}function u4e(t){const e=t.children||"",n=new CV;return typeof e=="string"&&(n.value=e),n}function d4e(t,e){const n=e.allowedElements,r=e.allowElement,s=e.components,i=e.disallowedElements,a=e.skipHtml,l=e.unwrapDisallowed,c=e.urlTransform||h4e;for(const h of o4e)Object.hasOwn(e,h.from)&&(""+h.from+(h.to?"use `"+h.to+"` instead":"remove it")+i4e+h.id,void 0);return jN(t,d),Cye(t,{Fragment:o.Fragment,components:s,ignoreInvalidStyle:!0,jsx:o.jsx,jsxs:o.jsxs,passKeys:!0,passNode:!0});function d(h,m,g){if(h.type==="raw"&&g&&typeof m=="number")return a?g.children.splice(m,1):g.children[m]={type:"text",value:h.value},m;if(h.type==="element"){let x;for(x in DS)if(Object.hasOwn(DS,x)&&Object.hasOwn(h.properties,x)){const y=h.properties[x],w=DS[x];(w===null||w.includes(h.tagName))&&(h.properties[x]=c(String(y||""),x,h))}}if(h.type==="element"){let x=n?!n.includes(h.tagName):i?i.includes(h.tagName):!1;if(!x&&r&&typeof m=="number"&&(x=!r(h,m,g)),x&&g&&typeof m=="number")return l&&h.children?g.children.splice(m,1,...h.children):g.children.splice(m,1),m}}}function h4e(t){const e=t.indexOf(":"),n=t.indexOf("?"),r=t.indexOf("#"),s=t.indexOf("/");return e===-1||s!==-1&&e>s||n!==-1&&e>n||r!==-1&&e>r||a4e.test(t.slice(0,e))?t:""}function lR(t,e){const n=String(t);if(typeof e!="string")throw new TypeError("Expected character");let r=0,s=n.indexOf(e);for(;s!==-1;)r++,s=n.indexOf(e,s+e.length);return r}function f4e(t){if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function m4e(t,e,n){const s=xg((n||{}).ignore||[]),i=p4e(e);let a=-1;for(;++a0?{type:"text",value:_}:void 0),_===!1?g.lastIndex=T+1:(y!==T&&j.push({type:"text",value:d.value.slice(y,T)}),Array.isArray(_)?j.push(..._):_&&j.push(_),y=T+N[0].length,k=!0),!g.global)break;N=g.exec(d.value)}return k?(y?\]}]+$/.exec(t);if(!e)return[t,void 0];t=t.slice(0,e.index);let n=e[0],r=n.indexOf(")");const s=lR(t,"(");let i=lR(t,")");for(;r!==-1&&s>i;)t+=n.slice(0,r+1),n=n.slice(r+1),r=n.indexOf(")"),i++;return[t,n]}function TV(t,e){const n=t.input.charCodeAt(t.index-1);return(t.index===0||gd(n)||qb(n))&&(!e||n!==47)}EV.peek=L4e;function _4e(){this.buffer()}function A4e(t){this.enter({type:"footnoteReference",identifier:"",label:""},t)}function M4e(){this.buffer()}function R4e(t){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},t)}function D4e(t){const e=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=Xa(this.sliceSerialize(t)).toLowerCase(),n.label=e}function P4e(t){this.exit(t)}function z4e(t){const e=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=Xa(this.sliceSerialize(t)).toLowerCase(),n.label=e}function I4e(t){this.exit(t)}function L4e(){return"["}function EV(t,e,n,r){const s=n.createTracker(r);let i=s.move("[^");const a=n.enter("footnoteReference"),l=n.enter("reference");return i+=s.move(n.safe(n.associationId(t),{after:"]",before:i})),l(),a(),i+=s.move("]"),i}function B4e(){return{enter:{gfmFootnoteCallString:_4e,gfmFootnoteCall:A4e,gfmFootnoteDefinitionLabelString:M4e,gfmFootnoteDefinition:R4e},exit:{gfmFootnoteCallString:D4e,gfmFootnoteCall:P4e,gfmFootnoteDefinitionLabelString:z4e,gfmFootnoteDefinition:I4e}}}function F4e(t){let e=!1;return t&&t.firstLineBlank&&(e=!0),{handlers:{footnoteDefinition:n,footnoteReference:EV},unsafe:[{character:"[",inConstruct:["label","phrasing","reference"]}]};function n(r,s,i,a){const l=i.createTracker(a);let c=l.move("[^");const d=i.enter("footnoteDefinition"),h=i.enter("label");return c+=l.move(i.safe(i.associationId(r),{before:c,after:"]"})),h(),c+=l.move("]:"),r.children&&r.children.length>0&&(l.shift(4),c+=l.move((e?` +`:" ")+i.indentLines(i.containerFlow(r,l.current()),e?_V:q4e))),d(),c}}function q4e(t,e,n){return e===0?t:_V(t,e,n)}function _V(t,e,n){return(n?"":" ")+t}const $4e=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"];AV.peek=W4e;function H4e(){return{canContainEols:["delete"],enter:{strikethrough:V4e},exit:{strikethrough:U4e}}}function Q4e(){return{unsafe:[{character:"~",inConstruct:"phrasing",notInConstruct:$4e}],handlers:{delete:AV}}}function V4e(t){this.enter({type:"delete",children:[]},t)}function U4e(t){this.exit(t)}function AV(t,e,n,r){const s=n.createTracker(r),i=n.enter("strikethrough");let a=s.move("~~");return a+=n.containerPhrasing(t,{...s.current(),before:a,after:"~"}),a+=s.move("~~"),i(),a}function W4e(){return"~"}function G4e(t){return t.length}function X4e(t,e){const n=e||{},r=(n.align||[]).concat(),s=n.stringLength||G4e,i=[],a=[],l=[],c=[];let d=0,h=-1;for(;++hd&&(d=t[h].length);++kc[k])&&(c[k]=N)}w.push(j)}a[h]=w,l[h]=S}let m=-1;if(typeof r=="object"&&"length"in r)for(;++mc[m]&&(c[m]=j),x[m]=j),g[m]=N}a.splice(1,0,g),l.splice(1,0,x),h=-1;const y=[];for(;++h "),i.shift(2);const a=n.indentLines(n.containerFlow(t,i.current()),Z4e);return s(),a}function Z4e(t,e,n){return">"+(n?"":" ")+t}function J4e(t,e){return uR(t,e.inConstruct,!0)&&!uR(t,e.notInConstruct,!1)}function uR(t,e,n){if(typeof e=="string"&&(e=[e]),!e||e.length===0)return n;let r=-1;for(;++ra&&(a=i):i=1,s=r+e.length,r=n.indexOf(e,s);return a}function eSe(t,e){return!!(e.options.fences===!1&&t.value&&!t.lang&&/[^ \r\n]/.test(t.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(t.value))}function tSe(t){const e=t.options.fence||"`";if(e!=="`"&&e!=="~")throw new Error("Cannot serialize code with `"+e+"` for `options.fence`, expected `` ` `` or `~`");return e}function nSe(t,e,n,r){const s=tSe(n),i=t.value||"",a=s==="`"?"GraveAccent":"Tilde";if(eSe(t,n)){const m=n.enter("codeIndented"),g=n.indentLines(i,rSe);return m(),g}const l=n.createTracker(r),c=s.repeat(Math.max(MV(i,s)+1,3)),d=n.enter("codeFenced");let h=l.move(c);if(t.lang){const m=n.enter(`codeFencedLang${a}`);h+=l.move(n.safe(t.lang,{before:h,after:" ",encode:["`"],...l.current()})),m()}if(t.lang&&t.meta){const m=n.enter(`codeFencedMeta${a}`);h+=l.move(" "),h+=l.move(n.safe(t.meta,{before:h,after:` `,encode:["`"],...l.current()})),m()}return h+=l.move(` `),i&&(h+=l.move(i+` -`)),h+=l.move(c),d(),h}function J4e(t,e,n){return(n?"":" ")+t}function wN(t){const e=t.options.quote||'"';if(e!=='"'&&e!=="'")throw new Error("Cannot serialize title with `"+e+"` for `options.quote`, expected `\"`, or `'`");return e}function eSe(t,e,n,r){const s=wN(n),i=s==='"'?"Quote":"Apostrophe",a=n.enter("definition");let l=n.enter("label");const c=n.createTracker(r);let d=c.move("[");return d+=c.move(n.safe(n.associationId(t),{before:d,after:"]",...c.current()})),d+=c.move("]: "),l(),!t.url||/[\0- \u007F]/.test(t.url)?(l=n.enter("destinationLiteral"),d+=c.move("<"),d+=c.move(n.safe(t.url,{before:d,after:">",...c.current()})),d+=c.move(">")):(l=n.enter("destinationRaw"),d+=c.move(n.safe(t.url,{before:d,after:t.title?" ":` -`,...c.current()}))),l(),t.title&&(l=n.enter(`title${i}`),d+=c.move(" "+s),d+=c.move(n.safe(t.title,{before:d,after:s,...c.current()})),d+=c.move(s),l()),a(),d}function tSe(t){const e=t.options.emphasis||"*";if(e!=="*"&&e!=="_")throw new Error("Cannot serialize emphasis with `"+e+"` for `options.emphasis`, expected `*`, or `_`");return e}function gp(t){return"&#x"+t.toString(16).toUpperCase()+";"}function wy(t,e,n){const r=hf(t),s=hf(e);return r===void 0?s===void 0?n==="_"?{inside:!0,outside:!0}:{inside:!1,outside:!1}:s===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:r===1?s===void 0?{inside:!1,outside:!1}:s===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:s===void 0?{inside:!1,outside:!1}:s===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}EV.peek=nSe;function EV(t,e,n,r){const s=tSe(n),i=n.enter("emphasis"),a=n.createTracker(r),l=a.move(s);let c=a.move(n.containerPhrasing(t,{after:s,before:l,...a.current()}));const d=c.charCodeAt(0),h=wy(r.before.charCodeAt(r.before.length-1),d,s);h.inside&&(c=gp(d)+c.slice(1));const m=c.charCodeAt(c.length-1),g=wy(r.after.charCodeAt(0),m,s);g.inside&&(c=c.slice(0,-1)+gp(m));const x=a.move(s);return i(),n.attentionEncodeSurroundingInfo={after:g.outside,before:h.outside},l+c+x}function nSe(t,e,n){return n.options.emphasis||"*"}function rSe(t,e){let n=!1;return yN(t,function(r){if("value"in r&&/\r?\n|\r/.test(r.value)||r.type==="break")return n=!0,RO}),!!((!t.depth||t.depth<3)&&dN(t)&&(e.options.setext||n))}function sSe(t,e,n,r){const s=Math.max(Math.min(6,t.depth||1),1),i=n.createTracker(r);if(rSe(t,n)){const h=n.enter("headingSetext"),m=n.enter("phrasing"),g=n.containerPhrasing(t,{...i.current(),before:` +`)),h+=l.move(c),d(),h}function rSe(t,e,n){return(n?"":" ")+t}function CN(t){const e=t.options.quote||'"';if(e!=='"'&&e!=="'")throw new Error("Cannot serialize title with `"+e+"` for `options.quote`, expected `\"`, or `'`");return e}function sSe(t,e,n,r){const s=CN(n),i=s==='"'?"Quote":"Apostrophe",a=n.enter("definition");let l=n.enter("label");const c=n.createTracker(r);let d=c.move("[");return d+=c.move(n.safe(n.associationId(t),{before:d,after:"]",...c.current()})),d+=c.move("]: "),l(),!t.url||/[\0- \u007F]/.test(t.url)?(l=n.enter("destinationLiteral"),d+=c.move("<"),d+=c.move(n.safe(t.url,{before:d,after:">",...c.current()})),d+=c.move(">")):(l=n.enter("destinationRaw"),d+=c.move(n.safe(t.url,{before:d,after:t.title?" ":` +`,...c.current()}))),l(),t.title&&(l=n.enter(`title${i}`),d+=c.move(" "+s),d+=c.move(n.safe(t.title,{before:d,after:s,...c.current()})),d+=c.move(s),l()),a(),d}function iSe(t){const e=t.options.emphasis||"*";if(e!=="*"&&e!=="_")throw new Error("Cannot serialize emphasis with `"+e+"` for `options.emphasis`, expected `*`, or `_`");return e}function bp(t){return"&#x"+t.toString(16).toUpperCase()+";"}function Ny(t,e,n){const r=hf(t),s=hf(e);return r===void 0?s===void 0?n==="_"?{inside:!0,outside:!0}:{inside:!1,outside:!1}:s===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:r===1?s===void 0?{inside:!1,outside:!1}:s===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:s===void 0?{inside:!1,outside:!1}:s===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}RV.peek=aSe;function RV(t,e,n,r){const s=iSe(n),i=n.enter("emphasis"),a=n.createTracker(r),l=a.move(s);let c=a.move(n.containerPhrasing(t,{after:s,before:l,...a.current()}));const d=c.charCodeAt(0),h=Ny(r.before.charCodeAt(r.before.length-1),d,s);h.inside&&(c=bp(d)+c.slice(1));const m=c.charCodeAt(c.length-1),g=Ny(r.after.charCodeAt(0),m,s);g.inside&&(c=c.slice(0,-1)+bp(m));const x=a.move(s);return i(),n.attentionEncodeSurroundingInfo={after:g.outside,before:h.outside},l+c+x}function aSe(t,e,n){return n.options.emphasis||"*"}function oSe(t,e){let n=!1;return jN(t,function(r){if("value"in r&&/\r?\n|\r/.test(r.value)||r.type==="break")return n=!0,zO}),!!((!t.depth||t.depth<3)&&xN(t)&&(e.options.setext||n))}function lSe(t,e,n,r){const s=Math.max(Math.min(6,t.depth||1),1),i=n.createTracker(r);if(oSe(t,n)){const h=n.enter("headingSetext"),m=n.enter("phrasing"),g=n.containerPhrasing(t,{...i.current(),before:` `,after:` `});return m(),h(),g+` `+(s===1?"=":"-").repeat(g.length-(Math.max(g.lastIndexOf("\r"),g.lastIndexOf(` `))+1))}const a="#".repeat(s),l=n.enter("headingAtx"),c=n.enter("phrasing");i.move(a+" ");let d=n.containerPhrasing(t,{before:"# ",after:` -`,...i.current()});return/^[\t ]/.test(d)&&(d=gp(d.charCodeAt(0))+d.slice(1)),d=d?a+" "+d:a,n.options.closeAtx&&(d+=" "+a),c(),l(),d}_V.peek=iSe;function _V(t){return t.value||""}function iSe(){return"<"}AV.peek=aSe;function AV(t,e,n,r){const s=wN(n),i=s==='"'?"Quote":"Apostrophe",a=n.enter("image");let l=n.enter("label");const c=n.createTracker(r);let d=c.move("![");return d+=c.move(n.safe(t.alt,{before:d,after:"]",...c.current()})),d+=c.move("]("),l(),!t.url&&t.title||/[\0- \u007F]/.test(t.url)?(l=n.enter("destinationLiteral"),d+=c.move("<"),d+=c.move(n.safe(t.url,{before:d,after:">",...c.current()})),d+=c.move(">")):(l=n.enter("destinationRaw"),d+=c.move(n.safe(t.url,{before:d,after:t.title?" ":")",...c.current()}))),l(),t.title&&(l=n.enter(`title${i}`),d+=c.move(" "+s),d+=c.move(n.safe(t.title,{before:d,after:s,...c.current()})),d+=c.move(s),l()),d+=c.move(")"),a(),d}function aSe(){return"!"}MV.peek=oSe;function MV(t,e,n,r){const s=t.referenceType,i=n.enter("imageReference");let a=n.enter("label");const l=n.createTracker(r);let c=l.move("![");const d=n.safe(t.alt,{before:c,after:"]",...l.current()});c+=l.move(d+"]["),a();const h=n.stack;n.stack=[],a=n.enter("reference");const m=n.safe(n.associationId(t),{before:c,after:"]",...l.current()});return a(),n.stack=h,i(),s==="full"||!d||d!==m?c+=l.move(m+"]"):s==="shortcut"?c=c.slice(0,-1):c+=l.move("]"),c}function oSe(){return"!"}RV.peek=lSe;function RV(t,e,n){let r=t.value||"",s="`",i=-1;for(;new RegExp("(^|[^`])"+s+"([^`]|$)").test(r);)s+="`";for(/[^ \r\n]/.test(r)&&(/^[ \r\n]/.test(r)&&/[ \r\n]$/.test(r)||/^`|`$/.test(r))&&(r=" "+r+" ");++i\u007F]/.test(t.url))}PV.peek=cSe;function PV(t,e,n,r){const s=wN(n),i=s==='"'?"Quote":"Apostrophe",a=n.createTracker(r);let l,c;if(DV(t,n)){const h=n.stack;n.stack=[],l=n.enter("autolink");let m=a.move("<");return m+=a.move(n.containerPhrasing(t,{before:m,after:">",...a.current()})),m+=a.move(">"),l(),n.stack=h,m}l=n.enter("link"),c=n.enter("label");let d=a.move("[");return d+=a.move(n.containerPhrasing(t,{before:d,after:"](",...a.current()})),d+=a.move("]("),c(),!t.url&&t.title||/[\0- \u007F]/.test(t.url)?(c=n.enter("destinationLiteral"),d+=a.move("<"),d+=a.move(n.safe(t.url,{before:d,after:">",...a.current()})),d+=a.move(">")):(c=n.enter("destinationRaw"),d+=a.move(n.safe(t.url,{before:d,after:t.title?" ":")",...a.current()}))),c(),t.title&&(c=n.enter(`title${i}`),d+=a.move(" "+s),d+=a.move(n.safe(t.title,{before:d,after:s,...a.current()})),d+=a.move(s),c()),d+=a.move(")"),l(),d}function cSe(t,e,n){return DV(t,n)?"<":"["}zV.peek=uSe;function zV(t,e,n,r){const s=t.referenceType,i=n.enter("linkReference");let a=n.enter("label");const l=n.createTracker(r);let c=l.move("[");const d=n.containerPhrasing(t,{before:c,after:"]",...l.current()});c+=l.move(d+"]["),a();const h=n.stack;n.stack=[],a=n.enter("reference");const m=n.safe(n.associationId(t),{before:c,after:"]",...l.current()});return a(),n.stack=h,i(),s==="full"||!d||d!==m?c+=l.move(m+"]"):s==="shortcut"?c=c.slice(0,-1):c+=l.move("]"),c}function uSe(){return"["}function SN(t){const e=t.options.bullet||"*";if(e!=="*"&&e!=="+"&&e!=="-")throw new Error("Cannot serialize items with `"+e+"` for `options.bullet`, expected `*`, `+`, or `-`");return e}function dSe(t){const e=SN(t),n=t.options.bulletOther;if(!n)return e==="*"?"-":"*";if(n!=="*"&&n!=="+"&&n!=="-")throw new Error("Cannot serialize items with `"+n+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(n===e)throw new Error("Expected `bullet` (`"+e+"`) and `bulletOther` (`"+n+"`) to be different");return n}function hSe(t){const e=t.options.bulletOrdered||".";if(e!=="."&&e!==")")throw new Error("Cannot serialize items with `"+e+"` for `options.bulletOrdered`, expected `.` or `)`");return e}function IV(t){const e=t.options.rule||"*";if(e!=="*"&&e!=="-"&&e!=="_")throw new Error("Cannot serialize rules with `"+e+"` for `options.rule`, expected `*`, `-`, or `_`");return e}function fSe(t,e,n,r){const s=n.enter("list"),i=n.bulletCurrent;let a=t.ordered?hSe(n):SN(n);const l=t.ordered?a==="."?")":".":dSe(n);let c=e&&n.bulletLastUsed?a===n.bulletLastUsed:!1;if(!t.ordered){const h=t.children?t.children[0]:void 0;if((a==="*"||a==="-")&&h&&(!h.children||!h.children[0])&&n.stack[n.stack.length-1]==="list"&&n.stack[n.stack.length-2]==="listItem"&&n.stack[n.stack.length-3]==="list"&&n.stack[n.stack.length-4]==="listItem"&&n.indexStack[n.indexStack.length-1]===0&&n.indexStack[n.indexStack.length-2]===0&&n.indexStack[n.indexStack.length-3]===0&&(c=!0),IV(n)===a&&h){let m=-1;for(;++m-1?e.start:1)+(n.options.incrementListMarker===!1?0:e.children.indexOf(t))+i);let a=i.length+1;(s==="tab"||s==="mixed"&&(e&&e.type==="list"&&e.spread||t.spread))&&(a=Math.ceil(a/4)*4);const l=n.createTracker(r);l.move(i+" ".repeat(a-i.length)),l.shift(a);const c=n.enter("listItem"),d=n.indentLines(n.containerFlow(t,l.current()),h);return c(),d;function h(m,g,x){return g?(x?"":" ".repeat(a))+m:(x?i:i+" ".repeat(a-i.length))+m}}function gSe(t,e,n,r){const s=n.enter("paragraph"),i=n.enter("phrasing"),a=n.containerPhrasing(t,r);return i(),s(),a}const xSe=hg(["break","delete","emphasis","footnote","footnoteReference","image","imageReference","inlineCode","inlineMath","link","linkReference","mdxJsxTextElement","mdxTextExpression","strong","text","textDirective"]);function vSe(t,e,n,r){return(t.children.some(function(a){return xSe(a)})?n.containerPhrasing:n.containerFlow).call(n,t,r)}function ySe(t){const e=t.options.strong||"*";if(e!=="*"&&e!=="_")throw new Error("Cannot serialize strong with `"+e+"` for `options.strong`, expected `*`, or `_`");return e}LV.peek=bSe;function LV(t,e,n,r){const s=ySe(n),i=n.enter("strong"),a=n.createTracker(r),l=a.move(s+s);let c=a.move(n.containerPhrasing(t,{after:s,before:l,...a.current()}));const d=c.charCodeAt(0),h=wy(r.before.charCodeAt(r.before.length-1),d,s);h.inside&&(c=gp(d)+c.slice(1));const m=c.charCodeAt(c.length-1),g=wy(r.after.charCodeAt(0),m,s);g.inside&&(c=c.slice(0,-1)+gp(m));const x=a.move(s+s);return i(),n.attentionEncodeSurroundingInfo={after:g.outside,before:h.outside},l+c+x}function bSe(t,e,n){return n.options.strong||"*"}function wSe(t,e,n,r){return n.safe(t.value,r)}function SSe(t){const e=t.options.ruleRepetition||3;if(e<3)throw new Error("Cannot serialize rules with repetition `"+e+"` for `options.ruleRepetition`, expected `3` or more");return e}function kSe(t,e,n){const r=(IV(n)+(n.options.ruleSpaces?" ":"")).repeat(SSe(n));return n.options.ruleSpaces?r.slice(0,-1):r}const BV={blockquote:W4e,break:iR,code:Z4e,definition:eSe,emphasis:EV,hardBreak:iR,heading:sSe,html:_V,image:AV,imageReference:MV,inlineCode:RV,link:PV,linkReference:zV,list:fSe,listItem:pSe,paragraph:gSe,root:vSe,strong:LV,text:wSe,thematicBreak:kSe};function OSe(){return{enter:{table:jSe,tableData:aR,tableHeader:aR,tableRow:CSe},exit:{codeText:TSe,table:NSe,tableData:QS,tableHeader:QS,tableRow:QS}}}function jSe(t){const e=t._align;this.enter({type:"table",align:e.map(function(n){return n==="none"?null:n}),children:[]},t),this.data.inTable=!0}function NSe(t){this.exit(t),this.data.inTable=void 0}function CSe(t){this.enter({type:"tableRow",children:[]},t)}function QS(t){this.exit(t)}function aR(t){this.enter({type:"tableCell",children:[]},t)}function TSe(t){let e=this.resume();this.data.inTable&&(e=e.replace(/\\([\\|])/g,ESe));const n=this.stack[this.stack.length-1];n.type,n.value=e,this.exit(t)}function ESe(t,e){return e==="|"?e:t}function _Se(t){const e=t||{},n=e.tableCellPadding,r=e.tablePipeAlign,s=e.stringLength,i=n?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:` +`,...i.current()});return/^[\t ]/.test(d)&&(d=bp(d.charCodeAt(0))+d.slice(1)),d=d?a+" "+d:a,n.options.closeAtx&&(d+=" "+a),c(),l(),d}DV.peek=cSe;function DV(t){return t.value||""}function cSe(){return"<"}PV.peek=uSe;function PV(t,e,n,r){const s=CN(n),i=s==='"'?"Quote":"Apostrophe",a=n.enter("image");let l=n.enter("label");const c=n.createTracker(r);let d=c.move("![");return d+=c.move(n.safe(t.alt,{before:d,after:"]",...c.current()})),d+=c.move("]("),l(),!t.url&&t.title||/[\0- \u007F]/.test(t.url)?(l=n.enter("destinationLiteral"),d+=c.move("<"),d+=c.move(n.safe(t.url,{before:d,after:">",...c.current()})),d+=c.move(">")):(l=n.enter("destinationRaw"),d+=c.move(n.safe(t.url,{before:d,after:t.title?" ":")",...c.current()}))),l(),t.title&&(l=n.enter(`title${i}`),d+=c.move(" "+s),d+=c.move(n.safe(t.title,{before:d,after:s,...c.current()})),d+=c.move(s),l()),d+=c.move(")"),a(),d}function uSe(){return"!"}zV.peek=dSe;function zV(t,e,n,r){const s=t.referenceType,i=n.enter("imageReference");let a=n.enter("label");const l=n.createTracker(r);let c=l.move("![");const d=n.safe(t.alt,{before:c,after:"]",...l.current()});c+=l.move(d+"]["),a();const h=n.stack;n.stack=[],a=n.enter("reference");const m=n.safe(n.associationId(t),{before:c,after:"]",...l.current()});return a(),n.stack=h,i(),s==="full"||!d||d!==m?c+=l.move(m+"]"):s==="shortcut"?c=c.slice(0,-1):c+=l.move("]"),c}function dSe(){return"!"}IV.peek=hSe;function IV(t,e,n){let r=t.value||"",s="`",i=-1;for(;new RegExp("(^|[^`])"+s+"([^`]|$)").test(r);)s+="`";for(/[^ \r\n]/.test(r)&&(/^[ \r\n]/.test(r)&&/[ \r\n]$/.test(r)||/^`|`$/.test(r))&&(r=" "+r+" ");++i\u007F]/.test(t.url))}BV.peek=fSe;function BV(t,e,n,r){const s=CN(n),i=s==='"'?"Quote":"Apostrophe",a=n.createTracker(r);let l,c;if(LV(t,n)){const h=n.stack;n.stack=[],l=n.enter("autolink");let m=a.move("<");return m+=a.move(n.containerPhrasing(t,{before:m,after:">",...a.current()})),m+=a.move(">"),l(),n.stack=h,m}l=n.enter("link"),c=n.enter("label");let d=a.move("[");return d+=a.move(n.containerPhrasing(t,{before:d,after:"](",...a.current()})),d+=a.move("]("),c(),!t.url&&t.title||/[\0- \u007F]/.test(t.url)?(c=n.enter("destinationLiteral"),d+=a.move("<"),d+=a.move(n.safe(t.url,{before:d,after:">",...a.current()})),d+=a.move(">")):(c=n.enter("destinationRaw"),d+=a.move(n.safe(t.url,{before:d,after:t.title?" ":")",...a.current()}))),c(),t.title&&(c=n.enter(`title${i}`),d+=a.move(" "+s),d+=a.move(n.safe(t.title,{before:d,after:s,...a.current()})),d+=a.move(s),c()),d+=a.move(")"),l(),d}function fSe(t,e,n){return LV(t,n)?"<":"["}FV.peek=mSe;function FV(t,e,n,r){const s=t.referenceType,i=n.enter("linkReference");let a=n.enter("label");const l=n.createTracker(r);let c=l.move("[");const d=n.containerPhrasing(t,{before:c,after:"]",...l.current()});c+=l.move(d+"]["),a();const h=n.stack;n.stack=[],a=n.enter("reference");const m=n.safe(n.associationId(t),{before:c,after:"]",...l.current()});return a(),n.stack=h,i(),s==="full"||!d||d!==m?c+=l.move(m+"]"):s==="shortcut"?c=c.slice(0,-1):c+=l.move("]"),c}function mSe(){return"["}function TN(t){const e=t.options.bullet||"*";if(e!=="*"&&e!=="+"&&e!=="-")throw new Error("Cannot serialize items with `"+e+"` for `options.bullet`, expected `*`, `+`, or `-`");return e}function pSe(t){const e=TN(t),n=t.options.bulletOther;if(!n)return e==="*"?"-":"*";if(n!=="*"&&n!=="+"&&n!=="-")throw new Error("Cannot serialize items with `"+n+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(n===e)throw new Error("Expected `bullet` (`"+e+"`) and `bulletOther` (`"+n+"`) to be different");return n}function gSe(t){const e=t.options.bulletOrdered||".";if(e!=="."&&e!==")")throw new Error("Cannot serialize items with `"+e+"` for `options.bulletOrdered`, expected `.` or `)`");return e}function qV(t){const e=t.options.rule||"*";if(e!=="*"&&e!=="-"&&e!=="_")throw new Error("Cannot serialize rules with `"+e+"` for `options.rule`, expected `*`, `-`, or `_`");return e}function xSe(t,e,n,r){const s=n.enter("list"),i=n.bulletCurrent;let a=t.ordered?gSe(n):TN(n);const l=t.ordered?a==="."?")":".":pSe(n);let c=e&&n.bulletLastUsed?a===n.bulletLastUsed:!1;if(!t.ordered){const h=t.children?t.children[0]:void 0;if((a==="*"||a==="-")&&h&&(!h.children||!h.children[0])&&n.stack[n.stack.length-1]==="list"&&n.stack[n.stack.length-2]==="listItem"&&n.stack[n.stack.length-3]==="list"&&n.stack[n.stack.length-4]==="listItem"&&n.indexStack[n.indexStack.length-1]===0&&n.indexStack[n.indexStack.length-2]===0&&n.indexStack[n.indexStack.length-3]===0&&(c=!0),qV(n)===a&&h){let m=-1;for(;++m-1?e.start:1)+(n.options.incrementListMarker===!1?0:e.children.indexOf(t))+i);let a=i.length+1;(s==="tab"||s==="mixed"&&(e&&e.type==="list"&&e.spread||t.spread))&&(a=Math.ceil(a/4)*4);const l=n.createTracker(r);l.move(i+" ".repeat(a-i.length)),l.shift(a);const c=n.enter("listItem"),d=n.indentLines(n.containerFlow(t,l.current()),h);return c(),d;function h(m,g,x){return g?(x?"":" ".repeat(a))+m:(x?i:i+" ".repeat(a-i.length))+m}}function bSe(t,e,n,r){const s=n.enter("paragraph"),i=n.enter("phrasing"),a=n.containerPhrasing(t,r);return i(),s(),a}const wSe=xg(["break","delete","emphasis","footnote","footnoteReference","image","imageReference","inlineCode","inlineMath","link","linkReference","mdxJsxTextElement","mdxTextExpression","strong","text","textDirective"]);function SSe(t,e,n,r){return(t.children.some(function(a){return wSe(a)})?n.containerPhrasing:n.containerFlow).call(n,t,r)}function kSe(t){const e=t.options.strong||"*";if(e!=="*"&&e!=="_")throw new Error("Cannot serialize strong with `"+e+"` for `options.strong`, expected `*`, or `_`");return e}$V.peek=OSe;function $V(t,e,n,r){const s=kSe(n),i=n.enter("strong"),a=n.createTracker(r),l=a.move(s+s);let c=a.move(n.containerPhrasing(t,{after:s,before:l,...a.current()}));const d=c.charCodeAt(0),h=Ny(r.before.charCodeAt(r.before.length-1),d,s);h.inside&&(c=bp(d)+c.slice(1));const m=c.charCodeAt(c.length-1),g=Ny(r.after.charCodeAt(0),m,s);g.inside&&(c=c.slice(0,-1)+bp(m));const x=a.move(s+s);return i(),n.attentionEncodeSurroundingInfo={after:g.outside,before:h.outside},l+c+x}function OSe(t,e,n){return n.options.strong||"*"}function jSe(t,e,n,r){return n.safe(t.value,r)}function NSe(t){const e=t.options.ruleRepetition||3;if(e<3)throw new Error("Cannot serialize rules with repetition `"+e+"` for `options.ruleRepetition`, expected `3` or more");return e}function CSe(t,e,n){const r=(qV(n)+(n.options.ruleSpaces?" ":"")).repeat(NSe(n));return n.options.ruleSpaces?r.slice(0,-1):r}const HV={blockquote:K4e,break:dR,code:nSe,definition:sSe,emphasis:RV,hardBreak:dR,heading:lSe,html:DV,image:PV,imageReference:zV,inlineCode:IV,link:BV,linkReference:FV,list:xSe,listItem:ySe,paragraph:bSe,root:SSe,strong:$V,text:jSe,thematicBreak:CSe};function TSe(){return{enter:{table:ESe,tableData:hR,tableHeader:hR,tableRow:ASe},exit:{codeText:MSe,table:_Se,tableData:GS,tableHeader:GS,tableRow:GS}}}function ESe(t){const e=t._align;this.enter({type:"table",align:e.map(function(n){return n==="none"?null:n}),children:[]},t),this.data.inTable=!0}function _Se(t){this.exit(t),this.data.inTable=void 0}function ASe(t){this.enter({type:"tableRow",children:[]},t)}function GS(t){this.exit(t)}function hR(t){this.enter({type:"tableCell",children:[]},t)}function MSe(t){let e=this.resume();this.data.inTable&&(e=e.replace(/\\([\\|])/g,RSe));const n=this.stack[this.stack.length-1];n.type,n.value=e,this.exit(t)}function RSe(t,e){return e==="|"?e:t}function DSe(t){const e=t||{},n=e.tableCellPadding,r=e.tablePipeAlign,s=e.stringLength,i=n?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:` `,inConstruct:"tableCell"},{atBreak:!0,character:"|",after:"[ :-]"},{character:"|",inConstruct:"tableCell"},{atBreak:!0,character:":",after:"-"},{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{inlineCode:g,table:a,tableCell:c,tableRow:l}};function a(x,y,w,S){return d(h(x,w,S),x.align)}function l(x,y,w,S){const k=m(x,w,S),j=d([k]);return j.slice(0,j.indexOf(` -`))}function c(x,y,w,S){const k=w.enter("tableCell"),j=w.enter("phrasing"),N=w.containerPhrasing(x,{...S,before:i,after:i});return j(),k(),N}function d(x,y){return V4e(x,{align:y,alignDelimiters:r,padding:n,stringLength:s})}function h(x,y,w){const S=x.children;let k=-1;const j=[],N=y.enter("table");for(;++k0&&!n&&(t[t.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}const GSe={tokenize:n5e,partial:!0};function XSe(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:JSe,continuation:{tokenize:e5e},exit:t5e}},text:{91:{name:"gfmFootnoteCall",tokenize:ZSe},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:YSe,resolveTo:KSe}}}}function YSe(t,e,n){const r=this;let s=r.events.length;const i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let a;for(;s--;){const c=r.events[s][1];if(c.type==="labelImage"){a=c;break}if(c.type==="gfmFootnoteCall"||c.type==="labelLink"||c.type==="label"||c.type==="image"||c.type==="link")break}return l;function l(c){if(!a||!a._balanced)return n(c);const d=Ga(r.sliceSerialize({start:a.end,end:r.now()}));return d.codePointAt(0)!==94||!i.includes(d.slice(1))?n(c):(t.enter("gfmFootnoteCallLabelMarker"),t.consume(c),t.exit("gfmFootnoteCallLabelMarker"),e(c))}}function KSe(t,e){let n=t.length;for(;n--;)if(t[n][1].type==="labelImage"&&t[n][0]==="enter"){t[n][1];break}t[n+1][1].type="data",t[n+3][1].type="gfmFootnoteCallLabelMarker";const r={type:"gfmFootnoteCall",start:Object.assign({},t[n+3][1].start),end:Object.assign({},t[t.length-1][1].end)},s={type:"gfmFootnoteCallMarker",start:Object.assign({},t[n+3][1].end),end:Object.assign({},t[n+3][1].end)};s.end.column++,s.end.offset++,s.end._bufferIndex++;const i={type:"gfmFootnoteCallString",start:Object.assign({},s.end),end:Object.assign({},t[t.length-1][1].start)},a={type:"chunkString",contentType:"string",start:Object.assign({},i.start),end:Object.assign({},i.end)},l=[t[n+1],t[n+2],["enter",r,e],t[n+3],t[n+4],["enter",s,e],["exit",s,e],["enter",i,e],["enter",a,e],["exit",a,e],["exit",i,e],t[t.length-2],t[t.length-1],["exit",r,e]];return t.splice(n,t.length-n+1,...l),t}function ZSe(t,e,n){const r=this,s=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let i=0,a;return l;function l(m){return t.enter("gfmFootnoteCall"),t.enter("gfmFootnoteCallLabelMarker"),t.consume(m),t.exit("gfmFootnoteCallLabelMarker"),c}function c(m){return m!==94?n(m):(t.enter("gfmFootnoteCallMarker"),t.consume(m),t.exit("gfmFootnoteCallMarker"),t.enter("gfmFootnoteCallString"),t.enter("chunkString").contentType="string",d)}function d(m){if(i>999||m===93&&!a||m===null||m===91||or(m))return n(m);if(m===93){t.exit("chunkString");const g=t.exit("gfmFootnoteCallString");return s.includes(Ga(r.sliceSerialize(g)))?(t.enter("gfmFootnoteCallLabelMarker"),t.consume(m),t.exit("gfmFootnoteCallLabelMarker"),t.exit("gfmFootnoteCall"),e):n(m)}return or(m)||(a=!0),i++,t.consume(m),m===92?h:d}function h(m){return m===91||m===92||m===93?(t.consume(m),i++,d):d(m)}}function JSe(t,e,n){const r=this,s=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let i,a=0,l;return c;function c(y){return t.enter("gfmFootnoteDefinition")._container=!0,t.enter("gfmFootnoteDefinitionLabel"),t.enter("gfmFootnoteDefinitionLabelMarker"),t.consume(y),t.exit("gfmFootnoteDefinitionLabelMarker"),d}function d(y){return y===94?(t.enter("gfmFootnoteDefinitionMarker"),t.consume(y),t.exit("gfmFootnoteDefinitionMarker"),t.enter("gfmFootnoteDefinitionLabelString"),t.enter("chunkString").contentType="string",h):n(y)}function h(y){if(a>999||y===93&&!l||y===null||y===91||or(y))return n(y);if(y===93){t.exit("chunkString");const w=t.exit("gfmFootnoteDefinitionLabelString");return i=Ga(r.sliceSerialize(w)),t.enter("gfmFootnoteDefinitionLabelMarker"),t.consume(y),t.exit("gfmFootnoteDefinitionLabelMarker"),t.exit("gfmFootnoteDefinitionLabel"),g}return or(y)||(l=!0),a++,t.consume(y),y===92?m:h}function m(y){return y===91||y===92||y===93?(t.consume(y),a++,h):h(y)}function g(y){return y===58?(t.enter("definitionMarker"),t.consume(y),t.exit("definitionMarker"),s.includes(i)||s.push(i),on(t,x,"gfmFootnoteDefinitionWhitespace")):n(y)}function x(y){return e(y)}}function e5e(t,e,n){return t.check(dg,e,t.attempt(GSe,e,n))}function t5e(t){t.exit("gfmFootnoteDefinition")}function n5e(t,e,n){const r=this;return on(t,s,"gfmFootnoteDefinitionIndent",5);function s(i){const a=r.events[r.events.length-1];return a&&a[1].type==="gfmFootnoteDefinitionIndent"&&a[2].sliceSerialize(a[1],!0).length===4?e(i):n(i)}}function r5e(t){let n=(t||{}).singleTilde;const r={name:"strikethrough",tokenize:i,resolveAll:s};return n==null&&(n=!0),{text:{126:r},insideSpan:{null:[r]},attentionMarkers:{null:[126]}};function s(a,l){let c=-1;for(;++c1?c(y):(a.consume(y),m++,x);if(m<2&&!n)return c(y);const S=a.exit("strikethroughSequenceTemporary"),k=hf(y);return S._open=!k||k===2&&!!w,S._close=!w||w===2&&!!k,l(y)}}}class s5e{constructor(){this.map=[]}add(e,n,r){i5e(this,e,n,r)}consume(e){if(this.map.sort(function(i,a){return i[0]-a[0]}),this.map.length===0)return;let n=this.map.length;const r=[];for(;n>0;)n-=1,r.push(e.slice(this.map[n][0]+this.map[n][1]),this.map[n][2]),e.length=this.map[n][0];r.push(e.slice()),e.length=0;let s=r.pop();for(;s;){for(const i of s)e.push(i);s=r.pop()}this.map.length=0}}function i5e(t,e,n,r){let s=0;if(!(n===0&&r.length===0)){for(;s-1;){const z=r.events[$][1].type;if(z==="lineEnding"||z==="linePrefix")$--;else break}const U=$>-1?r.events[$][1].type:null,te=U==="tableHead"||U==="tableRow"?_:c;return te===_&&r.parser.lazy[r.now().line]?n(B):te(B)}function c(B){return t.enter("tableHead"),t.enter("tableRow"),d(B)}function d(B){return B===124||(a=!0,i+=1),h(B)}function h(B){return B===null?n(B):bt(B)?i>1?(i=0,r.interrupt=!0,t.exit("tableRow"),t.enter("lineEnding"),t.consume(B),t.exit("lineEnding"),x):n(B):dn(B)?on(t,h,"whitespace")(B):(i+=1,a&&(a=!1,s+=1),B===124?(t.enter("tableCellDivider"),t.consume(B),t.exit("tableCellDivider"),a=!0,h):(t.enter("data"),m(B)))}function m(B){return B===null||B===124||or(B)?(t.exit("data"),h(B)):(t.consume(B),B===92?g:m)}function g(B){return B===92||B===124?(t.consume(B),m):m(B)}function x(B){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(B):(t.enter("tableDelimiterRow"),a=!1,dn(B)?on(t,y,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(B):y(B))}function y(B){return B===45||B===58?S(B):B===124?(a=!0,t.enter("tableCellDivider"),t.consume(B),t.exit("tableCellDivider"),w):E(B)}function w(B){return dn(B)?on(t,S,"whitespace")(B):S(B)}function S(B){return B===58?(i+=1,a=!0,t.enter("tableDelimiterMarker"),t.consume(B),t.exit("tableDelimiterMarker"),k):B===45?(i+=1,k(B)):B===null||bt(B)?T(B):E(B)}function k(B){return B===45?(t.enter("tableDelimiterFiller"),j(B)):E(B)}function j(B){return B===45?(t.consume(B),j):B===58?(a=!0,t.exit("tableDelimiterFiller"),t.enter("tableDelimiterMarker"),t.consume(B),t.exit("tableDelimiterMarker"),N):(t.exit("tableDelimiterFiller"),N(B))}function N(B){return dn(B)?on(t,T,"whitespace")(B):T(B)}function T(B){return B===124?y(B):B===null||bt(B)?!a||s!==i?E(B):(t.exit("tableDelimiterRow"),t.exit("tableHead"),e(B)):E(B)}function E(B){return n(B)}function _(B){return t.enter("tableRow"),A(B)}function A(B){return B===124?(t.enter("tableCellDivider"),t.consume(B),t.exit("tableCellDivider"),A):B===null||bt(B)?(t.exit("tableRow"),e(B)):dn(B)?on(t,A,"whitespace")(B):(t.enter("data"),L(B))}function L(B){return B===null||B===124||or(B)?(t.exit("data"),A(B)):(t.consume(B),B===92?P:L)}function P(B){return B===92||B===124?(t.consume(B),L):L(B)}}function c5e(t,e){let n=-1,r=!0,s=0,i=[0,0,0,0],a=[0,0,0,0],l=!1,c=0,d,h,m;const g=new s5e;for(;++nn[2]+1){const y=n[2]+1,w=n[3]-n[2]-1;t.add(y,w,[])}}t.add(n[3]+1,0,[["exit",m,e]])}return s!==void 0&&(i.end=Object.assign({},kh(e.events,s)),t.add(s,0,[["exit",i,e]]),i=void 0),i}function lR(t,e,n,r,s){const i=[],a=kh(e.events,n);s&&(s.end=Object.assign({},a),i.push(["exit",s,e])),r.end=Object.assign({},a),i.push(["exit",r,e]),t.add(n+1,0,i)}function kh(t,e){const n=t[e],r=n[0]==="enter"?"start":"end";return n[1][r]}const u5e={name:"tasklistCheck",tokenize:h5e};function d5e(){return{text:{91:u5e}}}function h5e(t,e,n){const r=this;return s;function s(c){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(c):(t.enter("taskListCheck"),t.enter("taskListCheckMarker"),t.consume(c),t.exit("taskListCheckMarker"),i)}function i(c){return or(c)?(t.enter("taskListCheckValueUnchecked"),t.consume(c),t.exit("taskListCheckValueUnchecked"),a):c===88||c===120?(t.enter("taskListCheckValueChecked"),t.consume(c),t.exit("taskListCheckValueChecked"),a):n(c)}function a(c){return c===93?(t.enter("taskListCheckMarker"),t.consume(c),t.exit("taskListCheckMarker"),t.exit("taskListCheck"),l):n(c)}function l(c){return bt(c)?e(c):dn(c)?t.check({tokenize:f5e},e,n)(c):n(c)}}function f5e(t,e,n){return on(t,r,"whitespace");function r(s){return s===null?n(s):e(s)}}function m5e(t){return rV([BSe(),XSe(),r5e(t),o5e(),d5e()])}const p5e={};function g5e(t){const e=this,n=t||p5e,r=e.data(),s=r.micromarkExtensions||(r.micromarkExtensions=[]),i=r.fromMarkdownExtensions||(r.fromMarkdownExtensions=[]),a=r.toMarkdownExtensions||(r.toMarkdownExtensions=[]);s.push(m5e(n)),i.push(PSe()),a.push(zSe(n))}function x5e(){return{enter:{mathFlow:t,mathFlowFenceMeta:e,mathText:i},exit:{mathFlow:s,mathFlowFence:r,mathFlowFenceMeta:n,mathFlowValue:l,mathText:a,mathTextData:l}};function t(c){const d={type:"element",tagName:"code",properties:{className:["language-math","math-display"]},children:[]};this.enter({type:"math",meta:null,value:"",data:{hName:"pre",hChildren:[d]}},c)}function e(){this.buffer()}function n(){const c=this.resume(),d=this.stack[this.stack.length-1];d.type,d.meta=c}function r(){this.data.mathFlowInside||(this.buffer(),this.data.mathFlowInside=!0)}function s(c){const d=this.resume().replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),h=this.stack[this.stack.length-1];h.type,this.exit(c),h.value=d;const m=h.data.hChildren[0];m.type,m.tagName,m.children.push({type:"text",value:d}),this.data.mathFlowInside=void 0}function i(c){this.enter({type:"inlineMath",value:"",data:{hName:"code",hProperties:{className:["language-math","math-inline"]},hChildren:[]}},c),this.buffer()}function a(c){const d=this.resume(),h=this.stack[this.stack.length-1];h.type,this.exit(c),h.value=d,h.data.hChildren.push({type:"text",value:d})}function l(c){this.config.enter.data.call(this,c),this.config.exit.data.call(this,c)}}function v5e(t){let e=(t||{}).singleDollarTextMath;return e==null&&(e=!0),r.peek=s,{unsafe:[{character:"\r",inConstruct:"mathFlowMeta"},{character:` -`,inConstruct:"mathFlowMeta"},{character:"$",after:e?void 0:"\\$",inConstruct:"phrasing"},{character:"$",inConstruct:"mathFlowMeta"},{atBreak:!0,character:"$",after:"\\$"}],handlers:{math:n,inlineMath:r}};function n(i,a,l,c){const d=i.value||"",h=l.createTracker(c),m="$".repeat(Math.max(TV(d,"$")+1,2)),g=l.enter("mathFlow");let x=h.move(m);if(i.meta){const y=l.enter("mathFlowMeta");x+=h.move(l.safe(i.meta,{after:` +`))}function c(x,y,w,S){const k=w.enter("tableCell"),j=w.enter("phrasing"),N=w.containerPhrasing(x,{...S,before:i,after:i});return j(),k(),N}function d(x,y){return X4e(x,{align:y,alignDelimiters:r,padding:n,stringLength:s})}function h(x,y,w){const S=x.children;let k=-1;const j=[],N=y.enter("table");for(;++k0&&!n&&(t[t.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}const ZSe={tokenize:a5e,partial:!0};function JSe(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:r5e,continuation:{tokenize:s5e},exit:i5e}},text:{91:{name:"gfmFootnoteCall",tokenize:n5e},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:e5e,resolveTo:t5e}}}}function e5e(t,e,n){const r=this;let s=r.events.length;const i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let a;for(;s--;){const c=r.events[s][1];if(c.type==="labelImage"){a=c;break}if(c.type==="gfmFootnoteCall"||c.type==="labelLink"||c.type==="label"||c.type==="image"||c.type==="link")break}return l;function l(c){if(!a||!a._balanced)return n(c);const d=Xa(r.sliceSerialize({start:a.end,end:r.now()}));return d.codePointAt(0)!==94||!i.includes(d.slice(1))?n(c):(t.enter("gfmFootnoteCallLabelMarker"),t.consume(c),t.exit("gfmFootnoteCallLabelMarker"),e(c))}}function t5e(t,e){let n=t.length;for(;n--;)if(t[n][1].type==="labelImage"&&t[n][0]==="enter"){t[n][1];break}t[n+1][1].type="data",t[n+3][1].type="gfmFootnoteCallLabelMarker";const r={type:"gfmFootnoteCall",start:Object.assign({},t[n+3][1].start),end:Object.assign({},t[t.length-1][1].end)},s={type:"gfmFootnoteCallMarker",start:Object.assign({},t[n+3][1].end),end:Object.assign({},t[n+3][1].end)};s.end.column++,s.end.offset++,s.end._bufferIndex++;const i={type:"gfmFootnoteCallString",start:Object.assign({},s.end),end:Object.assign({},t[t.length-1][1].start)},a={type:"chunkString",contentType:"string",start:Object.assign({},i.start),end:Object.assign({},i.end)},l=[t[n+1],t[n+2],["enter",r,e],t[n+3],t[n+4],["enter",s,e],["exit",s,e],["enter",i,e],["enter",a,e],["exit",a,e],["exit",i,e],t[t.length-2],t[t.length-1],["exit",r,e]];return t.splice(n,t.length-n+1,...l),t}function n5e(t,e,n){const r=this,s=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let i=0,a;return l;function l(m){return t.enter("gfmFootnoteCall"),t.enter("gfmFootnoteCallLabelMarker"),t.consume(m),t.exit("gfmFootnoteCallLabelMarker"),c}function c(m){return m!==94?n(m):(t.enter("gfmFootnoteCallMarker"),t.consume(m),t.exit("gfmFootnoteCallMarker"),t.enter("gfmFootnoteCallString"),t.enter("chunkString").contentType="string",d)}function d(m){if(i>999||m===93&&!a||m===null||m===91||dr(m))return n(m);if(m===93){t.exit("chunkString");const g=t.exit("gfmFootnoteCallString");return s.includes(Xa(r.sliceSerialize(g)))?(t.enter("gfmFootnoteCallLabelMarker"),t.consume(m),t.exit("gfmFootnoteCallLabelMarker"),t.exit("gfmFootnoteCall"),e):n(m)}return dr(m)||(a=!0),i++,t.consume(m),m===92?h:d}function h(m){return m===91||m===92||m===93?(t.consume(m),i++,d):d(m)}}function r5e(t,e,n){const r=this,s=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let i,a=0,l;return c;function c(y){return t.enter("gfmFootnoteDefinition")._container=!0,t.enter("gfmFootnoteDefinitionLabel"),t.enter("gfmFootnoteDefinitionLabelMarker"),t.consume(y),t.exit("gfmFootnoteDefinitionLabelMarker"),d}function d(y){return y===94?(t.enter("gfmFootnoteDefinitionMarker"),t.consume(y),t.exit("gfmFootnoteDefinitionMarker"),t.enter("gfmFootnoteDefinitionLabelString"),t.enter("chunkString").contentType="string",h):n(y)}function h(y){if(a>999||y===93&&!l||y===null||y===91||dr(y))return n(y);if(y===93){t.exit("chunkString");const w=t.exit("gfmFootnoteDefinitionLabelString");return i=Xa(r.sliceSerialize(w)),t.enter("gfmFootnoteDefinitionLabelMarker"),t.consume(y),t.exit("gfmFootnoteDefinitionLabelMarker"),t.exit("gfmFootnoteDefinitionLabel"),g}return dr(y)||(l=!0),a++,t.consume(y),y===92?m:h}function m(y){return y===91||y===92||y===93?(t.consume(y),a++,h):h(y)}function g(y){return y===58?(t.enter("definitionMarker"),t.consume(y),t.exit("definitionMarker"),s.includes(i)||s.push(i),cn(t,x,"gfmFootnoteDefinitionWhitespace")):n(y)}function x(y){return e(y)}}function s5e(t,e,n){return t.check(gg,e,t.attempt(ZSe,e,n))}function i5e(t){t.exit("gfmFootnoteDefinition")}function a5e(t,e,n){const r=this;return cn(t,s,"gfmFootnoteDefinitionIndent",5);function s(i){const a=r.events[r.events.length-1];return a&&a[1].type==="gfmFootnoteDefinitionIndent"&&a[2].sliceSerialize(a[1],!0).length===4?e(i):n(i)}}function o5e(t){let n=(t||{}).singleTilde;const r={name:"strikethrough",tokenize:i,resolveAll:s};return n==null&&(n=!0),{text:{126:r},insideSpan:{null:[r]},attentionMarkers:{null:[126]}};function s(a,l){let c=-1;for(;++c1?c(y):(a.consume(y),m++,x);if(m<2&&!n)return c(y);const S=a.exit("strikethroughSequenceTemporary"),k=hf(y);return S._open=!k||k===2&&!!w,S._close=!w||w===2&&!!k,l(y)}}}class l5e{constructor(){this.map=[]}add(e,n,r){c5e(this,e,n,r)}consume(e){if(this.map.sort(function(i,a){return i[0]-a[0]}),this.map.length===0)return;let n=this.map.length;const r=[];for(;n>0;)n-=1,r.push(e.slice(this.map[n][0]+this.map[n][1]),this.map[n][2]),e.length=this.map[n][0];r.push(e.slice()),e.length=0;let s=r.pop();for(;s;){for(const i of s)e.push(i);s=r.pop()}this.map.length=0}}function c5e(t,e,n,r){let s=0;if(!(n===0&&r.length===0)){for(;s-1;){const I=r.events[H][1].type;if(I==="lineEnding"||I==="linePrefix")H--;else break}const W=H>-1?r.events[H][1].type:null,ee=W==="tableHead"||W==="tableRow"?_:c;return ee===_&&r.parser.lazy[r.now().line]?n(B):ee(B)}function c(B){return t.enter("tableHead"),t.enter("tableRow"),d(B)}function d(B){return B===124||(a=!0,i+=1),h(B)}function h(B){return B===null?n(B):St(B)?i>1?(i=0,r.interrupt=!0,t.exit("tableRow"),t.enter("lineEnding"),t.consume(B),t.exit("lineEnding"),x):n(B):gn(B)?cn(t,h,"whitespace")(B):(i+=1,a&&(a=!1,s+=1),B===124?(t.enter("tableCellDivider"),t.consume(B),t.exit("tableCellDivider"),a=!0,h):(t.enter("data"),m(B)))}function m(B){return B===null||B===124||dr(B)?(t.exit("data"),h(B)):(t.consume(B),B===92?g:m)}function g(B){return B===92||B===124?(t.consume(B),m):m(B)}function x(B){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(B):(t.enter("tableDelimiterRow"),a=!1,gn(B)?cn(t,y,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(B):y(B))}function y(B){return B===45||B===58?S(B):B===124?(a=!0,t.enter("tableCellDivider"),t.consume(B),t.exit("tableCellDivider"),w):E(B)}function w(B){return gn(B)?cn(t,S,"whitespace")(B):S(B)}function S(B){return B===58?(i+=1,a=!0,t.enter("tableDelimiterMarker"),t.consume(B),t.exit("tableDelimiterMarker"),k):B===45?(i+=1,k(B)):B===null||St(B)?T(B):E(B)}function k(B){return B===45?(t.enter("tableDelimiterFiller"),j(B)):E(B)}function j(B){return B===45?(t.consume(B),j):B===58?(a=!0,t.exit("tableDelimiterFiller"),t.enter("tableDelimiterMarker"),t.consume(B),t.exit("tableDelimiterMarker"),N):(t.exit("tableDelimiterFiller"),N(B))}function N(B){return gn(B)?cn(t,T,"whitespace")(B):T(B)}function T(B){return B===124?y(B):B===null||St(B)?!a||s!==i?E(B):(t.exit("tableDelimiterRow"),t.exit("tableHead"),e(B)):E(B)}function E(B){return n(B)}function _(B){return t.enter("tableRow"),A(B)}function A(B){return B===124?(t.enter("tableCellDivider"),t.consume(B),t.exit("tableCellDivider"),A):B===null||St(B)?(t.exit("tableRow"),e(B)):gn(B)?cn(t,A,"whitespace")(B):(t.enter("data"),D(B))}function D(B){return B===null||B===124||dr(B)?(t.exit("data"),A(B)):(t.consume(B),B===92?q:D)}function q(B){return B===92||B===124?(t.consume(B),D):D(B)}}function f5e(t,e){let n=-1,r=!0,s=0,i=[0,0,0,0],a=[0,0,0,0],l=!1,c=0,d,h,m;const g=new l5e;for(;++nn[2]+1){const y=n[2]+1,w=n[3]-n[2]-1;t.add(y,w,[])}}t.add(n[3]+1,0,[["exit",m,e]])}return s!==void 0&&(i.end=Object.assign({},jh(e.events,s)),t.add(s,0,[["exit",i,e]]),i=void 0),i}function mR(t,e,n,r,s){const i=[],a=jh(e.events,n);s&&(s.end=Object.assign({},a),i.push(["exit",s,e])),r.end=Object.assign({},a),i.push(["exit",r,e]),t.add(n+1,0,i)}function jh(t,e){const n=t[e],r=n[0]==="enter"?"start":"end";return n[1][r]}const m5e={name:"tasklistCheck",tokenize:g5e};function p5e(){return{text:{91:m5e}}}function g5e(t,e,n){const r=this;return s;function s(c){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(c):(t.enter("taskListCheck"),t.enter("taskListCheckMarker"),t.consume(c),t.exit("taskListCheckMarker"),i)}function i(c){return dr(c)?(t.enter("taskListCheckValueUnchecked"),t.consume(c),t.exit("taskListCheckValueUnchecked"),a):c===88||c===120?(t.enter("taskListCheckValueChecked"),t.consume(c),t.exit("taskListCheckValueChecked"),a):n(c)}function a(c){return c===93?(t.enter("taskListCheckMarker"),t.consume(c),t.exit("taskListCheckMarker"),t.exit("taskListCheck"),l):n(c)}function l(c){return St(c)?e(c):gn(c)?t.check({tokenize:x5e},e,n)(c):n(c)}}function x5e(t,e,n){return cn(t,r,"whitespace");function r(s){return s===null?n(s):e(s)}}function v5e(t){return oV([HSe(),JSe(),o5e(t),d5e(),p5e()])}const y5e={};function b5e(t){const e=this,n=t||y5e,r=e.data(),s=r.micromarkExtensions||(r.micromarkExtensions=[]),i=r.fromMarkdownExtensions||(r.fromMarkdownExtensions=[]),a=r.toMarkdownExtensions||(r.toMarkdownExtensions=[]);s.push(v5e(n)),i.push(BSe()),a.push(FSe(n))}function w5e(){return{enter:{mathFlow:t,mathFlowFenceMeta:e,mathText:i},exit:{mathFlow:s,mathFlowFence:r,mathFlowFenceMeta:n,mathFlowValue:l,mathText:a,mathTextData:l}};function t(c){const d={type:"element",tagName:"code",properties:{className:["language-math","math-display"]},children:[]};this.enter({type:"math",meta:null,value:"",data:{hName:"pre",hChildren:[d]}},c)}function e(){this.buffer()}function n(){const c=this.resume(),d=this.stack[this.stack.length-1];d.type,d.meta=c}function r(){this.data.mathFlowInside||(this.buffer(),this.data.mathFlowInside=!0)}function s(c){const d=this.resume().replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),h=this.stack[this.stack.length-1];h.type,this.exit(c),h.value=d;const m=h.data.hChildren[0];m.type,m.tagName,m.children.push({type:"text",value:d}),this.data.mathFlowInside=void 0}function i(c){this.enter({type:"inlineMath",value:"",data:{hName:"code",hProperties:{className:["language-math","math-inline"]},hChildren:[]}},c),this.buffer()}function a(c){const d=this.resume(),h=this.stack[this.stack.length-1];h.type,this.exit(c),h.value=d,h.data.hChildren.push({type:"text",value:d})}function l(c){this.config.enter.data.call(this,c),this.config.exit.data.call(this,c)}}function S5e(t){let e=(t||{}).singleDollarTextMath;return e==null&&(e=!0),r.peek=s,{unsafe:[{character:"\r",inConstruct:"mathFlowMeta"},{character:` +`,inConstruct:"mathFlowMeta"},{character:"$",after:e?void 0:"\\$",inConstruct:"phrasing"},{character:"$",inConstruct:"mathFlowMeta"},{atBreak:!0,character:"$",after:"\\$"}],handlers:{math:n,inlineMath:r}};function n(i,a,l,c){const d=i.value||"",h=l.createTracker(c),m="$".repeat(Math.max(MV(d,"$")+1,2)),g=l.enter("mathFlow");let x=h.move(m);if(i.meta){const y=l.enter("mathFlowMeta");x+=h.move(l.safe(i.meta,{after:` `,before:x,encode:["$"],...h.current()})),y()}return x+=h.move(` `),d&&(x+=h.move(d+` -`)),x+=h.move(m),g(),x}function r(i,a,l){let c=i.value||"",d=1;for(e||d++;new RegExp("(^|[^$])"+"\\$".repeat(d)+"([^$]|$)").test(c);)d++;const h="$".repeat(d);/[^ \r\n]/.test(c)&&(/^[ \r\n]/.test(c)&&/[ \r\n]$/.test(c)||/^\$|\$$/.test(c))&&(c=" "+c+" ");let m=-1;for(;++m15?d="…"+l.slice(s-15,s):d=l.slice(0,s);var h;i+15":">","<":"<",'"':""","'":"'"},_5e=/[&><"']/g;function A5e(t){return String(t).replace(_5e,e=>E5e[e])}var GV=function t(e){return e.type==="ordgroup"||e.type==="color"?e.body.length===1?t(e.body[0]):e:e.type==="font"?t(e.body):e},M5e=function(e){var n=GV(e);return n.type==="mathord"||n.type==="textord"||n.type==="atom"},R5e=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e},D5e=function(e){var n=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return n?n[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(n[1])?null:n[1].toLowerCase():"_relative"},$n={deflt:N5e,escape:A5e,hyphenate:T5e,getBaseElem:GV,isCharacterBox:M5e,protocolFromUrl:D5e},kv={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:t=>"#"+t},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(t,e)=>(e.push(t),e)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:t=>Math.max(0,t),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:t=>Math.max(0,t),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:t=>Math.max(0,t),cli:"-e, --max-expand ",cliProcessor:t=>t==="Infinity"?1/0:parseInt(t)},globalGroup:{type:"boolean",cli:!1}};function P5e(t){if(t.default)return t.default;var e=t.type,n=Array.isArray(e)?e[0]:e;if(typeof n!="string")return n.enum[0];switch(n){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}class ON{constructor(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{};for(var n in kv)if(kv.hasOwnProperty(n)){var r=kv[n];this[n]=e[n]!==void 0?r.processor?r.processor(e[n]):e[n]:P5e(r)}}reportNonstrict(e,n,r){var s=this.strict;if(typeof s=="function"&&(s=s(e,n,r)),!(!s||s==="ignore")){if(s===!0||s==="error")throw new $e("LaTeX-incompatible input and strict mode is set to 'error': "+(n+" ["+e+"]"),r);s==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(n+" ["+e+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+s+"': "+n+" ["+e+"]"))}}useStrictBehavior(e,n,r){var s=this.strict;if(typeof s=="function")try{s=s(e,n,r)}catch{s="error"}return!s||s==="ignore"?!1:s===!0||s==="error"?!0:s==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(n+" ["+e+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+s+"': "+n+" ["+e+"]")),!1)}isTrusted(e){if(e.url&&!e.protocol){var n=$n.protocolFromUrl(e.url);if(n==null)return!1;e.protocol=n}var r=typeof this.trust=="function"?this.trust(e):this.trust;return!!r}}class Cc{constructor(e,n,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=n,this.cramped=r}sup(){return bo[z5e[this.id]]}sub(){return bo[I5e[this.id]]}fracNum(){return bo[L5e[this.id]]}fracDen(){return bo[B5e[this.id]]}cramp(){return bo[F5e[this.id]]}text(){return bo[q5e[this.id]]}isTight(){return this.size>=2}}var jN=0,Sy=1,$h=2,Ll=3,xp=4,Sa=5,ff=6,ti=7,bo=[new Cc(jN,0,!1),new Cc(Sy,0,!0),new Cc($h,1,!1),new Cc(Ll,1,!0),new Cc(xp,2,!1),new Cc(Sa,2,!0),new Cc(ff,3,!1),new Cc(ti,3,!0)],z5e=[xp,Sa,xp,Sa,ff,ti,ff,ti],I5e=[Sa,Sa,Sa,Sa,ti,ti,ti,ti],L5e=[$h,Ll,xp,Sa,ff,ti,ff,ti],B5e=[Ll,Ll,Sa,Sa,ti,ti,ti,ti],F5e=[Sy,Sy,Ll,Ll,Sa,Sa,ti,ti],q5e=[jN,Sy,$h,Ll,$h,Ll,$h,Ll],Et={DISPLAY:bo[jN],TEXT:bo[$h],SCRIPT:bo[xp],SCRIPTSCRIPT:bo[ff]},LO=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];function $5e(t){for(var e=0;e=s[0]&&t<=s[1])return n.name}return null}var Ov=[];LO.forEach(t=>t.blocks.forEach(e=>Ov.push(...e)));function XV(t){for(var e=0;e=Ov[e]&&t<=Ov[e+1])return!0;return!1}var ch=80,H5e=function(e,n){return"M95,"+(622+e+n)+` +`)),x+=h.move(m),g(),x}function r(i,a,l){let c=i.value||"",d=1;for(e||d++;new RegExp("(^|[^$])"+"\\$".repeat(d)+"([^$]|$)").test(c);)d++;const h="$".repeat(d);/[^ \r\n]/.test(c)&&(/^[ \r\n]/.test(c)&&/[ \r\n]$/.test(c)||/^\$|\$$/.test(c))&&(c=" "+c+" ");let m=-1;for(;++m15?d="…"+l.slice(s-15,s):d=l.slice(0,s);var h;i+15":">","<":"<",'"':""","'":"'"},D5e=/[&><"']/g;function P5e(t){return String(t).replace(D5e,e=>R5e[e])}var ZV=function t(e){return e.type==="ordgroup"||e.type==="color"?e.body.length===1?t(e.body[0]):e:e.type==="font"?t(e.body):e},z5e=function(e){var n=ZV(e);return n.type==="mathord"||n.type==="textord"||n.type==="atom"},I5e=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e},L5e=function(e){var n=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return n?n[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(n[1])?null:n[1].toLowerCase():"_relative"},Wn={deflt:_5e,escape:P5e,hyphenate:M5e,getBaseElem:ZV,isCharacterBox:z5e,protocolFromUrl:L5e},Tv={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:t=>"#"+t},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(t,e)=>(e.push(t),e)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:t=>Math.max(0,t),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:t=>Math.max(0,t),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:t=>Math.max(0,t),cli:"-e, --max-expand ",cliProcessor:t=>t==="Infinity"?1/0:parseInt(t)},globalGroup:{type:"boolean",cli:!1}};function B5e(t){if(t.default)return t.default;var e=t.type,n=Array.isArray(e)?e[0]:e;if(typeof n!="string")return n.enum[0];switch(n){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}class _N{constructor(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{};for(var n in Tv)if(Tv.hasOwnProperty(n)){var r=Tv[n];this[n]=e[n]!==void 0?r.processor?r.processor(e[n]):e[n]:B5e(r)}}reportNonstrict(e,n,r){var s=this.strict;if(typeof s=="function"&&(s=s(e,n,r)),!(!s||s==="ignore")){if(s===!0||s==="error")throw new qe("LaTeX-incompatible input and strict mode is set to 'error': "+(n+" ["+e+"]"),r);s==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(n+" ["+e+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+s+"': "+n+" ["+e+"]"))}}useStrictBehavior(e,n,r){var s=this.strict;if(typeof s=="function")try{s=s(e,n,r)}catch{s="error"}return!s||s==="ignore"?!1:s===!0||s==="error"?!0:s==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(n+" ["+e+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+s+"': "+n+" ["+e+"]")),!1)}isTrusted(e){if(e.url&&!e.protocol){var n=Wn.protocolFromUrl(e.url);if(n==null)return!1;e.protocol=n}var r=typeof this.trust=="function"?this.trust(e):this.trust;return!!r}}class _c{constructor(e,n,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=n,this.cramped=r}sup(){return So[F5e[this.id]]}sub(){return So[q5e[this.id]]}fracNum(){return So[$5e[this.id]]}fracDen(){return So[H5e[this.id]]}cramp(){return So[Q5e[this.id]]}text(){return So[V5e[this.id]]}isTight(){return this.size>=2}}var AN=0,Cy=1,Hh=2,Fl=3,wp=4,Na=5,ff=6,ni=7,So=[new _c(AN,0,!1),new _c(Cy,0,!0),new _c(Hh,1,!1),new _c(Fl,1,!0),new _c(wp,2,!1),new _c(Na,2,!0),new _c(ff,3,!1),new _c(ni,3,!0)],F5e=[wp,Na,wp,Na,ff,ni,ff,ni],q5e=[Na,Na,Na,Na,ni,ni,ni,ni],$5e=[Hh,Fl,wp,Na,ff,ni,ff,ni],H5e=[Fl,Fl,Na,Na,ni,ni,ni,ni],Q5e=[Cy,Cy,Fl,Fl,Na,Na,ni,ni],V5e=[AN,Cy,Hh,Fl,Hh,Fl,Hh,Fl],At={DISPLAY:So[AN],TEXT:So[Hh],SCRIPT:So[wp],SCRIPTSCRIPT:So[ff]},qO=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];function U5e(t){for(var e=0;e=s[0]&&t<=s[1])return n.name}return null}var Ev=[];qO.forEach(t=>t.blocks.forEach(e=>Ev.push(...e)));function JV(t){for(var e=0;e=Ev[e]&&t<=Ev[e+1])return!0;return!1}var dh=80,W5e=function(e,n){return"M95,"+(622+e+n)+` c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 @@ -134,7 +134,7 @@ c5.3,-9.3,12,-14,20,-14 H400000v`+(40+e)+`H845.2724 s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z -M`+(834+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},Q5e=function(e,n){return"M263,"+(601+e+n)+`c0.7,0,18,39.7,52,119 +M`+(834+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},G5e=function(e,n){return"M263,"+(601+e+n)+`c0.7,0,18,39.7,52,119 c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 c340,-704.7,510.7,-1060.3,512,-1067 l`+e/2.084+" -"+e+` @@ -144,7 +144,7 @@ s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5, c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z -M`+(1001+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},V5e=function(e,n){return"M983 "+(10+e+n)+` +M`+(1001+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},X5e=function(e,n){return"M983 "+(10+e+n)+` l`+e/3.13+" -"+e+` c4,-6.7,10,-10,18,-10 H400000v`+(40+e)+` H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 @@ -153,7 +153,7 @@ c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 c53.7,-170.3,84.5,-266.8,92.5,-289.5z -M`+(1001+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},U5e=function(e,n){return"M424,"+(2398+e+n)+` +M`+(1001+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},Y5e=function(e,n){return"M424,"+(2398+e+n)+` c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 @@ -163,18 +163,18 @@ v`+(40+e)+`H1014.6 s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 c-2,6,-10,9,-24,9 c-8,0,-12,-0.7,-12,-2z M`+(1001+e)+" "+n+` -h400000v`+(40+e)+"h-400000z"},W5e=function(e,n){return"M473,"+(2713+e+n)+` +h400000v`+(40+e)+"h-400000z"},K5e=function(e,n){return"M473,"+(2713+e+n)+` c339.3,-1799.3,509.3,-2700,510,-2702 l`+e/5.298+" -"+e+` c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+e)+`H1017.7 s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, -606zM`+(1001+e)+" "+n+"h400000v"+(40+e)+"H1017.7z"},G5e=function(e){var n=e/2;return"M400000 "+e+" H0 L"+n+" 0 l65 45 L145 "+(e-80)+" H400000z"},X5e=function(e,n,r){var s=r-54-n-e;return"M702 "+(e+n)+"H400000"+(40+e)+` +606zM`+(1001+e)+" "+n+"h400000v"+(40+e)+"H1017.7z"},Z5e=function(e){var n=e/2;return"M400000 "+e+" H0 L"+n+" 0 l65 45 L145 "+(e-80)+" H400000z"},J5e=function(e,n,r){var s=r-54-n-e;return"M702 "+(e+n)+"H400000"+(40+e)+` H742v`+s+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 -219 661 l218 661zM702 `+n+"H400000v"+(40+e)+"H742z"},Y5e=function(e,n,r){n=1e3*n;var s="";switch(e){case"sqrtMain":s=H5e(n,ch);break;case"sqrtSize1":s=Q5e(n,ch);break;case"sqrtSize2":s=V5e(n,ch);break;case"sqrtSize3":s=U5e(n,ch);break;case"sqrtSize4":s=W5e(n,ch);break;case"sqrtTall":s=X5e(n,ch,r)}return s},K5e=function(e,n){switch(e){case"⎜":return"M291 0 H417 V"+n+" H291z M291 0 H417 V"+n+" H291z";case"∣":return"M145 0 H188 V"+n+" H145z M145 0 H188 V"+n+" H145z";case"∥":return"M145 0 H188 V"+n+" H145z M145 0 H188 V"+n+" H145z"+("M367 0 H410 V"+n+" H367z M367 0 H410 V"+n+" H367z");case"⎟":return"M457 0 H583 V"+n+" H457z M457 0 H583 V"+n+" H457z";case"⎢":return"M319 0 H403 V"+n+" H319z M319 0 H403 V"+n+" H319z";case"⎥":return"M263 0 H347 V"+n+" H263z M263 0 H347 V"+n+" H263z";case"⎪":return"M384 0 H504 V"+n+" H384z M384 0 H504 V"+n+" H384z";case"⏐":return"M312 0 H355 V"+n+" H312z M312 0 H355 V"+n+" H312z";case"‖":return"M257 0 H300 V"+n+" H257z M257 0 H300 V"+n+" H257z"+("M478 0 H521 V"+n+" H478z M478 0 H521 V"+n+" H478z");default:return""}},uR={doubleleftarrow:`M262 157 +219 661 l218 661zM702 `+n+"H400000v"+(40+e)+"H742z"},e3e=function(e,n,r){n=1e3*n;var s="";switch(e){case"sqrtMain":s=W5e(n,dh);break;case"sqrtSize1":s=G5e(n,dh);break;case"sqrtSize2":s=X5e(n,dh);break;case"sqrtSize3":s=Y5e(n,dh);break;case"sqrtSize4":s=K5e(n,dh);break;case"sqrtTall":s=J5e(n,dh,r)}return s},t3e=function(e,n){switch(e){case"⎜":return"M291 0 H417 V"+n+" H291z M291 0 H417 V"+n+" H291z";case"∣":return"M145 0 H188 V"+n+" H145z M145 0 H188 V"+n+" H145z";case"∥":return"M145 0 H188 V"+n+" H145z M145 0 H188 V"+n+" H145z"+("M367 0 H410 V"+n+" H367z M367 0 H410 V"+n+" H367z");case"⎟":return"M457 0 H583 V"+n+" H457z M457 0 H583 V"+n+" H457z";case"⎢":return"M319 0 H403 V"+n+" H319z M319 0 H403 V"+n+" H319z";case"⎥":return"M263 0 H347 V"+n+" H263z M263 0 H347 V"+n+" H263z";case"⎪":return"M384 0 H504 V"+n+" H384z M384 0 H504 V"+n+" H384z";case"⏐":return"M312 0 H355 V"+n+" H312z M312 0 H355 V"+n+" H312z";case"‖":return"M257 0 H300 V"+n+" H257z M257 0 H300 V"+n+" H257z"+("M478 0 H521 V"+n+" H478z M478 0 H521 V"+n+" H478z");default:return""}},gR={doubleleftarrow:`M262 157 l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 @@ -349,7 +349,7 @@ M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z` c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, -231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z -M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},Z5e=function(e,n){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+n+` v1759 h347 v-84 +M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},n3e=function(e,n){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+n+` v1759 h347 v-84 H403z M403 1759 V0 H319 V1759 v`+n+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+n+` v1759 H0 v84 H347z M347 1759 V0 H263 V1759 v`+n+" v1759 h84z";case"vert":return"M145 15 v585 v"+n+` v585 c2.667,10,9.667,15,21,15 c10,0,16.667,-5,20,-15 v-585 v`+-n+` v-585 c-2.667,-10,-9.667,-15,-21,-15 @@ -377,21 +377,21 @@ c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6 c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 l0,-`+(n+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, --470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}};class mg{constructor(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return this.classes.includes(e)}toNode(){for(var e=document.createDocumentFragment(),n=0;nn.toText();return this.children.map(e).join("")}}var _o={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},A1={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},dR={Å:"A",Ð:"D",Þ:"o",å:"a",ð:"d",þ:"o",А:"A",Б:"B",В:"B",Г:"F",Д:"A",Е:"E",Ж:"K",З:"3",И:"N",Й:"N",К:"K",Л:"N",М:"M",Н:"H",О:"O",П:"N",Р:"P",С:"C",Т:"T",У:"y",Ф:"O",Х:"X",Ц:"U",Ч:"h",Ш:"W",Щ:"W",Ъ:"B",Ы:"X",Ь:"B",Э:"3",Ю:"X",Я:"R",а:"a",б:"b",в:"a",г:"r",д:"y",е:"e",ж:"m",з:"e",и:"n",й:"n",к:"n",л:"n",м:"m",н:"n",о:"o",п:"n",р:"p",с:"c",т:"o",у:"y",ф:"b",х:"x",ц:"n",ч:"n",ш:"w",щ:"w",ъ:"a",ы:"m",ь:"a",э:"e",ю:"m",я:"r"};function J5e(t,e){_o[t]=e}function NN(t,e,n){if(!_o[e])throw new Error("Font metrics not found for font: "+e+".");var r=t.charCodeAt(0),s=_o[e][r];if(!s&&t[0]in dR&&(r=dR[t[0]].charCodeAt(0),s=_o[e][r]),!s&&n==="text"&&XV(r)&&(s=_o[e][77]),s)return{depth:s[0],height:s[1],italic:s[2],skew:s[3],width:s[4]}}var VS={};function e3e(t){var e;if(t>=5?e=0:t>=3?e=1:e=2,!VS[e]){var n=VS[e]={cssEmPerMu:A1.quad[e]/18};for(var r in A1)A1.hasOwnProperty(r)&&(n[r]=A1[r][e])}return VS[e]}var t3e=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],hR=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],fR=function(e,n){return n.size<2?e:t3e[e-1][n.size-1]};class Tl{constructor(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||Tl.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=hR[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var n={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);return new Tl(n)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:fR(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:hR[e-1]})}havingBaseStyle(e){e=e||this.style.text();var n=fR(Tl.BASESIZE,e);return this.size===n&&this.textSize===Tl.BASESIZE&&this.style===e?this:this.extend({style:e,size:n})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==Tl.BASESIZE?["sizing","reset-size"+this.size,"size"+Tl.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=e3e(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}Tl.BASESIZE=6;var BO={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},n3e={ex:!0,em:!0,mu:!0},YV=function(e){return typeof e!="string"&&(e=e.unit),e in BO||e in n3e||e==="ex"},Rr=function(e,n){var r;if(e.unit in BO)r=BO[e.unit]/n.fontMetrics().ptPerEm/n.sizeMultiplier;else if(e.unit==="mu")r=n.fontMetrics().cssEmPerMu;else{var s;if(n.style.isTight()?s=n.havingStyle(n.style.text()):s=n,e.unit==="ex")r=s.fontMetrics().xHeight;else if(e.unit==="em")r=s.fontMetrics().quad;else throw new $e("Invalid unit: '"+e.unit+"'");s!==n&&(r*=s.sizeMultiplier/n.sizeMultiplier)}return Math.min(e.number*r,n.maxSize)},Xe=function(e){return+e.toFixed(4)+"em"},eu=function(e){return e.filter(n=>n).join(" ")},KV=function(e,n,r){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},n){n.style.isTight()&&this.classes.push("mtight");var s=n.getColor();s&&(this.style.color=s)}},ZV=function(e){var n=document.createElement(e);n.className=eu(this.classes);for(var r in this.style)this.style.hasOwnProperty(r)&&(n.style[r]=this.style[r]);for(var s in this.attributes)this.attributes.hasOwnProperty(s)&&n.setAttribute(s,this.attributes[s]);for(var i=0;i/=\x00-\x1f]/,JV=function(e){var n="<"+e;this.classes.length&&(n+=' class="'+$n.escape(eu(this.classes))+'"');var r="";for(var s in this.style)this.style.hasOwnProperty(s)&&(r+=$n.hyphenate(s)+":"+this.style[s]+";");r&&(n+=' style="'+$n.escape(r)+'"');for(var i in this.attributes)if(this.attributes.hasOwnProperty(i)){if(r3e.test(i))throw new $e("Invalid attribute name '"+i+"'");n+=" "+i+'="'+$n.escape(this.attributes[i])+'"'}n+=">";for(var a=0;a",n};class pg{constructor(e,n,r,s){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,KV.call(this,e,r,s),this.children=n||[]}setAttribute(e,n){this.attributes[e]=n}hasClass(e){return this.classes.includes(e)}toNode(){return ZV.call(this,"span")}toMarkup(){return JV.call(this,"span")}}class CN{constructor(e,n,r,s){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,KV.call(this,n,s),this.children=r||[],this.setAttribute("href",e)}setAttribute(e,n){this.attributes[e]=n}hasClass(e){return this.classes.includes(e)}toNode(){return ZV.call(this,"a")}toMarkup(){return JV.call(this,"a")}}class s3e{constructor(e,n,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=n,this.src=e,this.classes=["mord"],this.style=r}hasClass(e){return this.classes.includes(e)}toNode(){var e=document.createElement("img");e.src=this.src,e.alt=this.alt,e.className="mord";for(var n in this.style)this.style.hasOwnProperty(n)&&(e.style[n]=this.style[n]);return e}toMarkup(){var e=''+$n.escape(this.alt)+'0&&(n=document.createElement("span"),n.style.marginRight=Xe(this.italic)),this.classes.length>0&&(n=n||document.createElement("span"),n.className=eu(this.classes));for(var r in this.style)this.style.hasOwnProperty(r)&&(n=n||document.createElement("span"),n.style[r]=this.style[r]);return n?(n.appendChild(e),n):e}toMarkup(){var e=!1,n="0&&(r+="margin-right:"+this.italic+"em;");for(var s in this.style)this.style.hasOwnProperty(s)&&(r+=$n.hyphenate(s)+":"+this.style[s]+";");r&&(e=!0,n+=' style="'+$n.escape(r)+'"');var i=$n.escape(this.text);return e?(n+=">",n+=i,n+="",n):i}}class Ql{constructor(e,n){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=n||{}}toNode(){var e="http://www.w3.org/2000/svg",n=document.createElementNS(e,"svg");for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&n.setAttribute(r,this.attributes[r]);for(var s=0;s':''}}class FO{constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e="http://www.w3.org/2000/svg",n=document.createElementNS(e,"line");for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&n.setAttribute(r,this.attributes[r]);return n}toMarkup(){var e=" but got "+String(t)+".")}var o3e={bin:1,close:1,inner:1,open:1,punct:1,rel:1},l3e={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},dr={math:{},text:{}};function M(t,e,n,r,s,i){dr[t][s]={font:e,group:n,replace:r},i&&r&&(dr[t][r]=dr[t][s])}var D="math",Be="text",H="main",le="ams",jr="accent-token",lt="bin",ai="close",qf="inner",Tt="mathord",os="op-token",Ji="open",qb="punct",ce="rel",Zl="spacing",me="textord";M(D,H,ce,"≡","\\equiv",!0);M(D,H,ce,"≺","\\prec",!0);M(D,H,ce,"≻","\\succ",!0);M(D,H,ce,"∼","\\sim",!0);M(D,H,ce,"⊥","\\perp");M(D,H,ce,"⪯","\\preceq",!0);M(D,H,ce,"⪰","\\succeq",!0);M(D,H,ce,"≃","\\simeq",!0);M(D,H,ce,"∣","\\mid",!0);M(D,H,ce,"≪","\\ll",!0);M(D,H,ce,"≫","\\gg",!0);M(D,H,ce,"≍","\\asymp",!0);M(D,H,ce,"∥","\\parallel");M(D,H,ce,"⋈","\\bowtie",!0);M(D,H,ce,"⌣","\\smile",!0);M(D,H,ce,"⊑","\\sqsubseteq",!0);M(D,H,ce,"⊒","\\sqsupseteq",!0);M(D,H,ce,"≐","\\doteq",!0);M(D,H,ce,"⌢","\\frown",!0);M(D,H,ce,"∋","\\ni",!0);M(D,H,ce,"∝","\\propto",!0);M(D,H,ce,"⊢","\\vdash",!0);M(D,H,ce,"⊣","\\dashv",!0);M(D,H,ce,"∋","\\owns");M(D,H,qb,".","\\ldotp");M(D,H,qb,"⋅","\\cdotp");M(D,H,me,"#","\\#");M(Be,H,me,"#","\\#");M(D,H,me,"&","\\&");M(Be,H,me,"&","\\&");M(D,H,me,"ℵ","\\aleph",!0);M(D,H,me,"∀","\\forall",!0);M(D,H,me,"ℏ","\\hbar",!0);M(D,H,me,"∃","\\exists",!0);M(D,H,me,"∇","\\nabla",!0);M(D,H,me,"♭","\\flat",!0);M(D,H,me,"ℓ","\\ell",!0);M(D,H,me,"♮","\\natural",!0);M(D,H,me,"♣","\\clubsuit",!0);M(D,H,me,"℘","\\wp",!0);M(D,H,me,"♯","\\sharp",!0);M(D,H,me,"♢","\\diamondsuit",!0);M(D,H,me,"ℜ","\\Re",!0);M(D,H,me,"♡","\\heartsuit",!0);M(D,H,me,"ℑ","\\Im",!0);M(D,H,me,"♠","\\spadesuit",!0);M(D,H,me,"§","\\S",!0);M(Be,H,me,"§","\\S");M(D,H,me,"¶","\\P",!0);M(Be,H,me,"¶","\\P");M(D,H,me,"†","\\dag");M(Be,H,me,"†","\\dag");M(Be,H,me,"†","\\textdagger");M(D,H,me,"‡","\\ddag");M(Be,H,me,"‡","\\ddag");M(Be,H,me,"‡","\\textdaggerdbl");M(D,H,ai,"⎱","\\rmoustache",!0);M(D,H,Ji,"⎰","\\lmoustache",!0);M(D,H,ai,"⟯","\\rgroup",!0);M(D,H,Ji,"⟮","\\lgroup",!0);M(D,H,lt,"∓","\\mp",!0);M(D,H,lt,"⊖","\\ominus",!0);M(D,H,lt,"⊎","\\uplus",!0);M(D,H,lt,"⊓","\\sqcap",!0);M(D,H,lt,"∗","\\ast");M(D,H,lt,"⊔","\\sqcup",!0);M(D,H,lt,"◯","\\bigcirc",!0);M(D,H,lt,"∙","\\bullet",!0);M(D,H,lt,"‡","\\ddagger");M(D,H,lt,"≀","\\wr",!0);M(D,H,lt,"⨿","\\amalg");M(D,H,lt,"&","\\And");M(D,H,ce,"⟵","\\longleftarrow",!0);M(D,H,ce,"⇐","\\Leftarrow",!0);M(D,H,ce,"⟸","\\Longleftarrow",!0);M(D,H,ce,"⟶","\\longrightarrow",!0);M(D,H,ce,"⇒","\\Rightarrow",!0);M(D,H,ce,"⟹","\\Longrightarrow",!0);M(D,H,ce,"↔","\\leftrightarrow",!0);M(D,H,ce,"⟷","\\longleftrightarrow",!0);M(D,H,ce,"⇔","\\Leftrightarrow",!0);M(D,H,ce,"⟺","\\Longleftrightarrow",!0);M(D,H,ce,"↦","\\mapsto",!0);M(D,H,ce,"⟼","\\longmapsto",!0);M(D,H,ce,"↗","\\nearrow",!0);M(D,H,ce,"↩","\\hookleftarrow",!0);M(D,H,ce,"↪","\\hookrightarrow",!0);M(D,H,ce,"↘","\\searrow",!0);M(D,H,ce,"↼","\\leftharpoonup",!0);M(D,H,ce,"⇀","\\rightharpoonup",!0);M(D,H,ce,"↙","\\swarrow",!0);M(D,H,ce,"↽","\\leftharpoondown",!0);M(D,H,ce,"⇁","\\rightharpoondown",!0);M(D,H,ce,"↖","\\nwarrow",!0);M(D,H,ce,"⇌","\\rightleftharpoons",!0);M(D,le,ce,"≮","\\nless",!0);M(D,le,ce,"","\\@nleqslant");M(D,le,ce,"","\\@nleqq");M(D,le,ce,"⪇","\\lneq",!0);M(D,le,ce,"≨","\\lneqq",!0);M(D,le,ce,"","\\@lvertneqq");M(D,le,ce,"⋦","\\lnsim",!0);M(D,le,ce,"⪉","\\lnapprox",!0);M(D,le,ce,"⊀","\\nprec",!0);M(D,le,ce,"⋠","\\npreceq",!0);M(D,le,ce,"⋨","\\precnsim",!0);M(D,le,ce,"⪹","\\precnapprox",!0);M(D,le,ce,"≁","\\nsim",!0);M(D,le,ce,"","\\@nshortmid");M(D,le,ce,"∤","\\nmid",!0);M(D,le,ce,"⊬","\\nvdash",!0);M(D,le,ce,"⊭","\\nvDash",!0);M(D,le,ce,"⋪","\\ntriangleleft");M(D,le,ce,"⋬","\\ntrianglelefteq",!0);M(D,le,ce,"⊊","\\subsetneq",!0);M(D,le,ce,"","\\@varsubsetneq");M(D,le,ce,"⫋","\\subsetneqq",!0);M(D,le,ce,"","\\@varsubsetneqq");M(D,le,ce,"≯","\\ngtr",!0);M(D,le,ce,"","\\@ngeqslant");M(D,le,ce,"","\\@ngeqq");M(D,le,ce,"⪈","\\gneq",!0);M(D,le,ce,"≩","\\gneqq",!0);M(D,le,ce,"","\\@gvertneqq");M(D,le,ce,"⋧","\\gnsim",!0);M(D,le,ce,"⪊","\\gnapprox",!0);M(D,le,ce,"⊁","\\nsucc",!0);M(D,le,ce,"⋡","\\nsucceq",!0);M(D,le,ce,"⋩","\\succnsim",!0);M(D,le,ce,"⪺","\\succnapprox",!0);M(D,le,ce,"≆","\\ncong",!0);M(D,le,ce,"","\\@nshortparallel");M(D,le,ce,"∦","\\nparallel",!0);M(D,le,ce,"⊯","\\nVDash",!0);M(D,le,ce,"⋫","\\ntriangleright");M(D,le,ce,"⋭","\\ntrianglerighteq",!0);M(D,le,ce,"","\\@nsupseteqq");M(D,le,ce,"⊋","\\supsetneq",!0);M(D,le,ce,"","\\@varsupsetneq");M(D,le,ce,"⫌","\\supsetneqq",!0);M(D,le,ce,"","\\@varsupsetneqq");M(D,le,ce,"⊮","\\nVdash",!0);M(D,le,ce,"⪵","\\precneqq",!0);M(D,le,ce,"⪶","\\succneqq",!0);M(D,le,ce,"","\\@nsubseteqq");M(D,le,lt,"⊴","\\unlhd");M(D,le,lt,"⊵","\\unrhd");M(D,le,ce,"↚","\\nleftarrow",!0);M(D,le,ce,"↛","\\nrightarrow",!0);M(D,le,ce,"⇍","\\nLeftarrow",!0);M(D,le,ce,"⇏","\\nRightarrow",!0);M(D,le,ce,"↮","\\nleftrightarrow",!0);M(D,le,ce,"⇎","\\nLeftrightarrow",!0);M(D,le,ce,"△","\\vartriangle");M(D,le,me,"ℏ","\\hslash");M(D,le,me,"▽","\\triangledown");M(D,le,me,"◊","\\lozenge");M(D,le,me,"Ⓢ","\\circledS");M(D,le,me,"®","\\circledR");M(Be,le,me,"®","\\circledR");M(D,le,me,"∡","\\measuredangle",!0);M(D,le,me,"∄","\\nexists");M(D,le,me,"℧","\\mho");M(D,le,me,"Ⅎ","\\Finv",!0);M(D,le,me,"⅁","\\Game",!0);M(D,le,me,"‵","\\backprime");M(D,le,me,"▲","\\blacktriangle");M(D,le,me,"▼","\\blacktriangledown");M(D,le,me,"■","\\blacksquare");M(D,le,me,"⧫","\\blacklozenge");M(D,le,me,"★","\\bigstar");M(D,le,me,"∢","\\sphericalangle",!0);M(D,le,me,"∁","\\complement",!0);M(D,le,me,"ð","\\eth",!0);M(Be,H,me,"ð","ð");M(D,le,me,"╱","\\diagup");M(D,le,me,"╲","\\diagdown");M(D,le,me,"□","\\square");M(D,le,me,"□","\\Box");M(D,le,me,"◊","\\Diamond");M(D,le,me,"¥","\\yen",!0);M(Be,le,me,"¥","\\yen",!0);M(D,le,me,"✓","\\checkmark",!0);M(Be,le,me,"✓","\\checkmark");M(D,le,me,"ℶ","\\beth",!0);M(D,le,me,"ℸ","\\daleth",!0);M(D,le,me,"ℷ","\\gimel",!0);M(D,le,me,"ϝ","\\digamma",!0);M(D,le,me,"ϰ","\\varkappa");M(D,le,Ji,"┌","\\@ulcorner",!0);M(D,le,ai,"┐","\\@urcorner",!0);M(D,le,Ji,"└","\\@llcorner",!0);M(D,le,ai,"┘","\\@lrcorner",!0);M(D,le,ce,"≦","\\leqq",!0);M(D,le,ce,"⩽","\\leqslant",!0);M(D,le,ce,"⪕","\\eqslantless",!0);M(D,le,ce,"≲","\\lesssim",!0);M(D,le,ce,"⪅","\\lessapprox",!0);M(D,le,ce,"≊","\\approxeq",!0);M(D,le,lt,"⋖","\\lessdot");M(D,le,ce,"⋘","\\lll",!0);M(D,le,ce,"≶","\\lessgtr",!0);M(D,le,ce,"⋚","\\lesseqgtr",!0);M(D,le,ce,"⪋","\\lesseqqgtr",!0);M(D,le,ce,"≑","\\doteqdot");M(D,le,ce,"≓","\\risingdotseq",!0);M(D,le,ce,"≒","\\fallingdotseq",!0);M(D,le,ce,"∽","\\backsim",!0);M(D,le,ce,"⋍","\\backsimeq",!0);M(D,le,ce,"⫅","\\subseteqq",!0);M(D,le,ce,"⋐","\\Subset",!0);M(D,le,ce,"⊏","\\sqsubset",!0);M(D,le,ce,"≼","\\preccurlyeq",!0);M(D,le,ce,"⋞","\\curlyeqprec",!0);M(D,le,ce,"≾","\\precsim",!0);M(D,le,ce,"⪷","\\precapprox",!0);M(D,le,ce,"⊲","\\vartriangleleft");M(D,le,ce,"⊴","\\trianglelefteq");M(D,le,ce,"⊨","\\vDash",!0);M(D,le,ce,"⊪","\\Vvdash",!0);M(D,le,ce,"⌣","\\smallsmile");M(D,le,ce,"⌢","\\smallfrown");M(D,le,ce,"≏","\\bumpeq",!0);M(D,le,ce,"≎","\\Bumpeq",!0);M(D,le,ce,"≧","\\geqq",!0);M(D,le,ce,"⩾","\\geqslant",!0);M(D,le,ce,"⪖","\\eqslantgtr",!0);M(D,le,ce,"≳","\\gtrsim",!0);M(D,le,ce,"⪆","\\gtrapprox",!0);M(D,le,lt,"⋗","\\gtrdot");M(D,le,ce,"⋙","\\ggg",!0);M(D,le,ce,"≷","\\gtrless",!0);M(D,le,ce,"⋛","\\gtreqless",!0);M(D,le,ce,"⪌","\\gtreqqless",!0);M(D,le,ce,"≖","\\eqcirc",!0);M(D,le,ce,"≗","\\circeq",!0);M(D,le,ce,"≜","\\triangleq",!0);M(D,le,ce,"∼","\\thicksim");M(D,le,ce,"≈","\\thickapprox");M(D,le,ce,"⫆","\\supseteqq",!0);M(D,le,ce,"⋑","\\Supset",!0);M(D,le,ce,"⊐","\\sqsupset",!0);M(D,le,ce,"≽","\\succcurlyeq",!0);M(D,le,ce,"⋟","\\curlyeqsucc",!0);M(D,le,ce,"≿","\\succsim",!0);M(D,le,ce,"⪸","\\succapprox",!0);M(D,le,ce,"⊳","\\vartriangleright");M(D,le,ce,"⊵","\\trianglerighteq");M(D,le,ce,"⊩","\\Vdash",!0);M(D,le,ce,"∣","\\shortmid");M(D,le,ce,"∥","\\shortparallel");M(D,le,ce,"≬","\\between",!0);M(D,le,ce,"⋔","\\pitchfork",!0);M(D,le,ce,"∝","\\varpropto");M(D,le,ce,"◀","\\blacktriangleleft");M(D,le,ce,"∴","\\therefore",!0);M(D,le,ce,"∍","\\backepsilon");M(D,le,ce,"▶","\\blacktriangleright");M(D,le,ce,"∵","\\because",!0);M(D,le,ce,"⋘","\\llless");M(D,le,ce,"⋙","\\gggtr");M(D,le,lt,"⊲","\\lhd");M(D,le,lt,"⊳","\\rhd");M(D,le,ce,"≂","\\eqsim",!0);M(D,H,ce,"⋈","\\Join");M(D,le,ce,"≑","\\Doteq",!0);M(D,le,lt,"∔","\\dotplus",!0);M(D,le,lt,"∖","\\smallsetminus");M(D,le,lt,"⋒","\\Cap",!0);M(D,le,lt,"⋓","\\Cup",!0);M(D,le,lt,"⩞","\\doublebarwedge",!0);M(D,le,lt,"⊟","\\boxminus",!0);M(D,le,lt,"⊞","\\boxplus",!0);M(D,le,lt,"⋇","\\divideontimes",!0);M(D,le,lt,"⋉","\\ltimes",!0);M(D,le,lt,"⋊","\\rtimes",!0);M(D,le,lt,"⋋","\\leftthreetimes",!0);M(D,le,lt,"⋌","\\rightthreetimes",!0);M(D,le,lt,"⋏","\\curlywedge",!0);M(D,le,lt,"⋎","\\curlyvee",!0);M(D,le,lt,"⊝","\\circleddash",!0);M(D,le,lt,"⊛","\\circledast",!0);M(D,le,lt,"⋅","\\centerdot");M(D,le,lt,"⊺","\\intercal",!0);M(D,le,lt,"⋒","\\doublecap");M(D,le,lt,"⋓","\\doublecup");M(D,le,lt,"⊠","\\boxtimes",!0);M(D,le,ce,"⇢","\\dashrightarrow",!0);M(D,le,ce,"⇠","\\dashleftarrow",!0);M(D,le,ce,"⇇","\\leftleftarrows",!0);M(D,le,ce,"⇆","\\leftrightarrows",!0);M(D,le,ce,"⇚","\\Lleftarrow",!0);M(D,le,ce,"↞","\\twoheadleftarrow",!0);M(D,le,ce,"↢","\\leftarrowtail",!0);M(D,le,ce,"↫","\\looparrowleft",!0);M(D,le,ce,"⇋","\\leftrightharpoons",!0);M(D,le,ce,"↶","\\curvearrowleft",!0);M(D,le,ce,"↺","\\circlearrowleft",!0);M(D,le,ce,"↰","\\Lsh",!0);M(D,le,ce,"⇈","\\upuparrows",!0);M(D,le,ce,"↿","\\upharpoonleft",!0);M(D,le,ce,"⇃","\\downharpoonleft",!0);M(D,H,ce,"⊶","\\origof",!0);M(D,H,ce,"⊷","\\imageof",!0);M(D,le,ce,"⊸","\\multimap",!0);M(D,le,ce,"↭","\\leftrightsquigarrow",!0);M(D,le,ce,"⇉","\\rightrightarrows",!0);M(D,le,ce,"⇄","\\rightleftarrows",!0);M(D,le,ce,"↠","\\twoheadrightarrow",!0);M(D,le,ce,"↣","\\rightarrowtail",!0);M(D,le,ce,"↬","\\looparrowright",!0);M(D,le,ce,"↷","\\curvearrowright",!0);M(D,le,ce,"↻","\\circlearrowright",!0);M(D,le,ce,"↱","\\Rsh",!0);M(D,le,ce,"⇊","\\downdownarrows",!0);M(D,le,ce,"↾","\\upharpoonright",!0);M(D,le,ce,"⇂","\\downharpoonright",!0);M(D,le,ce,"⇝","\\rightsquigarrow",!0);M(D,le,ce,"⇝","\\leadsto");M(D,le,ce,"⇛","\\Rrightarrow",!0);M(D,le,ce,"↾","\\restriction");M(D,H,me,"‘","`");M(D,H,me,"$","\\$");M(Be,H,me,"$","\\$");M(Be,H,me,"$","\\textdollar");M(D,H,me,"%","\\%");M(Be,H,me,"%","\\%");M(D,H,me,"_","\\_");M(Be,H,me,"_","\\_");M(Be,H,me,"_","\\textunderscore");M(D,H,me,"∠","\\angle",!0);M(D,H,me,"∞","\\infty",!0);M(D,H,me,"′","\\prime");M(D,H,me,"△","\\triangle");M(D,H,me,"Γ","\\Gamma",!0);M(D,H,me,"Δ","\\Delta",!0);M(D,H,me,"Θ","\\Theta",!0);M(D,H,me,"Λ","\\Lambda",!0);M(D,H,me,"Ξ","\\Xi",!0);M(D,H,me,"Π","\\Pi",!0);M(D,H,me,"Σ","\\Sigma",!0);M(D,H,me,"Υ","\\Upsilon",!0);M(D,H,me,"Φ","\\Phi",!0);M(D,H,me,"Ψ","\\Psi",!0);M(D,H,me,"Ω","\\Omega",!0);M(D,H,me,"A","Α");M(D,H,me,"B","Β");M(D,H,me,"E","Ε");M(D,H,me,"Z","Ζ");M(D,H,me,"H","Η");M(D,H,me,"I","Ι");M(D,H,me,"K","Κ");M(D,H,me,"M","Μ");M(D,H,me,"N","Ν");M(D,H,me,"O","Ο");M(D,H,me,"P","Ρ");M(D,H,me,"T","Τ");M(D,H,me,"X","Χ");M(D,H,me,"¬","\\neg",!0);M(D,H,me,"¬","\\lnot");M(D,H,me,"⊤","\\top");M(D,H,me,"⊥","\\bot");M(D,H,me,"∅","\\emptyset");M(D,le,me,"∅","\\varnothing");M(D,H,Tt,"α","\\alpha",!0);M(D,H,Tt,"β","\\beta",!0);M(D,H,Tt,"γ","\\gamma",!0);M(D,H,Tt,"δ","\\delta",!0);M(D,H,Tt,"ϵ","\\epsilon",!0);M(D,H,Tt,"ζ","\\zeta",!0);M(D,H,Tt,"η","\\eta",!0);M(D,H,Tt,"θ","\\theta",!0);M(D,H,Tt,"ι","\\iota",!0);M(D,H,Tt,"κ","\\kappa",!0);M(D,H,Tt,"λ","\\lambda",!0);M(D,H,Tt,"μ","\\mu",!0);M(D,H,Tt,"ν","\\nu",!0);M(D,H,Tt,"ξ","\\xi",!0);M(D,H,Tt,"ο","\\omicron",!0);M(D,H,Tt,"π","\\pi",!0);M(D,H,Tt,"ρ","\\rho",!0);M(D,H,Tt,"σ","\\sigma",!0);M(D,H,Tt,"τ","\\tau",!0);M(D,H,Tt,"υ","\\upsilon",!0);M(D,H,Tt,"ϕ","\\phi",!0);M(D,H,Tt,"χ","\\chi",!0);M(D,H,Tt,"ψ","\\psi",!0);M(D,H,Tt,"ω","\\omega",!0);M(D,H,Tt,"ε","\\varepsilon",!0);M(D,H,Tt,"ϑ","\\vartheta",!0);M(D,H,Tt,"ϖ","\\varpi",!0);M(D,H,Tt,"ϱ","\\varrho",!0);M(D,H,Tt,"ς","\\varsigma",!0);M(D,H,Tt,"φ","\\varphi",!0);M(D,H,lt,"∗","*",!0);M(D,H,lt,"+","+");M(D,H,lt,"−","-",!0);M(D,H,lt,"⋅","\\cdot",!0);M(D,H,lt,"∘","\\circ",!0);M(D,H,lt,"÷","\\div",!0);M(D,H,lt,"±","\\pm",!0);M(D,H,lt,"×","\\times",!0);M(D,H,lt,"∩","\\cap",!0);M(D,H,lt,"∪","\\cup",!0);M(D,H,lt,"∖","\\setminus",!0);M(D,H,lt,"∧","\\land");M(D,H,lt,"∨","\\lor");M(D,H,lt,"∧","\\wedge",!0);M(D,H,lt,"∨","\\vee",!0);M(D,H,me,"√","\\surd");M(D,H,Ji,"⟨","\\langle",!0);M(D,H,Ji,"∣","\\lvert");M(D,H,Ji,"∥","\\lVert");M(D,H,ai,"?","?");M(D,H,ai,"!","!");M(D,H,ai,"⟩","\\rangle",!0);M(D,H,ai,"∣","\\rvert");M(D,H,ai,"∥","\\rVert");M(D,H,ce,"=","=");M(D,H,ce,":",":");M(D,H,ce,"≈","\\approx",!0);M(D,H,ce,"≅","\\cong",!0);M(D,H,ce,"≥","\\ge");M(D,H,ce,"≥","\\geq",!0);M(D,H,ce,"←","\\gets");M(D,H,ce,">","\\gt",!0);M(D,H,ce,"∈","\\in",!0);M(D,H,ce,"","\\@not");M(D,H,ce,"⊂","\\subset",!0);M(D,H,ce,"⊃","\\supset",!0);M(D,H,ce,"⊆","\\subseteq",!0);M(D,H,ce,"⊇","\\supseteq",!0);M(D,le,ce,"⊈","\\nsubseteq",!0);M(D,le,ce,"⊉","\\nsupseteq",!0);M(D,H,ce,"⊨","\\models");M(D,H,ce,"←","\\leftarrow",!0);M(D,H,ce,"≤","\\le");M(D,H,ce,"≤","\\leq",!0);M(D,H,ce,"<","\\lt",!0);M(D,H,ce,"→","\\rightarrow",!0);M(D,H,ce,"→","\\to");M(D,le,ce,"≱","\\ngeq",!0);M(D,le,ce,"≰","\\nleq",!0);M(D,H,Zl," ","\\ ");M(D,H,Zl," ","\\space");M(D,H,Zl," ","\\nobreakspace");M(Be,H,Zl," ","\\ ");M(Be,H,Zl," "," ");M(Be,H,Zl," ","\\space");M(Be,H,Zl," ","\\nobreakspace");M(D,H,Zl,null,"\\nobreak");M(D,H,Zl,null,"\\allowbreak");M(D,H,qb,",",",");M(D,H,qb,";",";");M(D,le,lt,"⊼","\\barwedge",!0);M(D,le,lt,"⊻","\\veebar",!0);M(D,H,lt,"⊙","\\odot",!0);M(D,H,lt,"⊕","\\oplus",!0);M(D,H,lt,"⊗","\\otimes",!0);M(D,H,me,"∂","\\partial",!0);M(D,H,lt,"⊘","\\oslash",!0);M(D,le,lt,"⊚","\\circledcirc",!0);M(D,le,lt,"⊡","\\boxdot",!0);M(D,H,lt,"△","\\bigtriangleup");M(D,H,lt,"▽","\\bigtriangledown");M(D,H,lt,"†","\\dagger");M(D,H,lt,"⋄","\\diamond");M(D,H,lt,"⋆","\\star");M(D,H,lt,"◃","\\triangleleft");M(D,H,lt,"▹","\\triangleright");M(D,H,Ji,"{","\\{");M(Be,H,me,"{","\\{");M(Be,H,me,"{","\\textbraceleft");M(D,H,ai,"}","\\}");M(Be,H,me,"}","\\}");M(Be,H,me,"}","\\textbraceright");M(D,H,Ji,"{","\\lbrace");M(D,H,ai,"}","\\rbrace");M(D,H,Ji,"[","\\lbrack",!0);M(Be,H,me,"[","\\lbrack",!0);M(D,H,ai,"]","\\rbrack",!0);M(Be,H,me,"]","\\rbrack",!0);M(D,H,Ji,"(","\\lparen",!0);M(D,H,ai,")","\\rparen",!0);M(Be,H,me,"<","\\textless",!0);M(Be,H,me,">","\\textgreater",!0);M(D,H,Ji,"⌊","\\lfloor",!0);M(D,H,ai,"⌋","\\rfloor",!0);M(D,H,Ji,"⌈","\\lceil",!0);M(D,H,ai,"⌉","\\rceil",!0);M(D,H,me,"\\","\\backslash");M(D,H,me,"∣","|");M(D,H,me,"∣","\\vert");M(Be,H,me,"|","\\textbar",!0);M(D,H,me,"∥","\\|");M(D,H,me,"∥","\\Vert");M(Be,H,me,"∥","\\textbardbl");M(Be,H,me,"~","\\textasciitilde");M(Be,H,me,"\\","\\textbackslash");M(Be,H,me,"^","\\textasciicircum");M(D,H,ce,"↑","\\uparrow",!0);M(D,H,ce,"⇑","\\Uparrow",!0);M(D,H,ce,"↓","\\downarrow",!0);M(D,H,ce,"⇓","\\Downarrow",!0);M(D,H,ce,"↕","\\updownarrow",!0);M(D,H,ce,"⇕","\\Updownarrow",!0);M(D,H,os,"∐","\\coprod");M(D,H,os,"⋁","\\bigvee");M(D,H,os,"⋀","\\bigwedge");M(D,H,os,"⨄","\\biguplus");M(D,H,os,"⋂","\\bigcap");M(D,H,os,"⋃","\\bigcup");M(D,H,os,"∫","\\int");M(D,H,os,"∫","\\intop");M(D,H,os,"∬","\\iint");M(D,H,os,"∭","\\iiint");M(D,H,os,"∏","\\prod");M(D,H,os,"∑","\\sum");M(D,H,os,"⨂","\\bigotimes");M(D,H,os,"⨁","\\bigoplus");M(D,H,os,"⨀","\\bigodot");M(D,H,os,"∮","\\oint");M(D,H,os,"∯","\\oiint");M(D,H,os,"∰","\\oiiint");M(D,H,os,"⨆","\\bigsqcup");M(D,H,os,"∫","\\smallint");M(Be,H,qf,"…","\\textellipsis");M(D,H,qf,"…","\\mathellipsis");M(Be,H,qf,"…","\\ldots",!0);M(D,H,qf,"…","\\ldots",!0);M(D,H,qf,"⋯","\\@cdots",!0);M(D,H,qf,"⋱","\\ddots",!0);M(D,H,me,"⋮","\\varvdots");M(Be,H,me,"⋮","\\varvdots");M(D,H,jr,"ˊ","\\acute");M(D,H,jr,"ˋ","\\grave");M(D,H,jr,"¨","\\ddot");M(D,H,jr,"~","\\tilde");M(D,H,jr,"ˉ","\\bar");M(D,H,jr,"˘","\\breve");M(D,H,jr,"ˇ","\\check");M(D,H,jr,"^","\\hat");M(D,H,jr,"⃗","\\vec");M(D,H,jr,"˙","\\dot");M(D,H,jr,"˚","\\mathring");M(D,H,Tt,"","\\@imath");M(D,H,Tt,"","\\@jmath");M(D,H,me,"ı","ı");M(D,H,me,"ȷ","ȷ");M(Be,H,me,"ı","\\i",!0);M(Be,H,me,"ȷ","\\j",!0);M(Be,H,me,"ß","\\ss",!0);M(Be,H,me,"æ","\\ae",!0);M(Be,H,me,"œ","\\oe",!0);M(Be,H,me,"ø","\\o",!0);M(Be,H,me,"Æ","\\AE",!0);M(Be,H,me,"Œ","\\OE",!0);M(Be,H,me,"Ø","\\O",!0);M(Be,H,jr,"ˊ","\\'");M(Be,H,jr,"ˋ","\\`");M(Be,H,jr,"ˆ","\\^");M(Be,H,jr,"˜","\\~");M(Be,H,jr,"ˉ","\\=");M(Be,H,jr,"˘","\\u");M(Be,H,jr,"˙","\\.");M(Be,H,jr,"¸","\\c");M(Be,H,jr,"˚","\\r");M(Be,H,jr,"ˇ","\\v");M(Be,H,jr,"¨",'\\"');M(Be,H,jr,"˝","\\H");M(Be,H,jr,"◯","\\textcircled");var eU={"--":!0,"---":!0,"``":!0,"''":!0};M(Be,H,me,"–","--",!0);M(Be,H,me,"–","\\textendash");M(Be,H,me,"—","---",!0);M(Be,H,me,"—","\\textemdash");M(Be,H,me,"‘","`",!0);M(Be,H,me,"‘","\\textquoteleft");M(Be,H,me,"’","'",!0);M(Be,H,me,"’","\\textquoteright");M(Be,H,me,"“","``",!0);M(Be,H,me,"“","\\textquotedblleft");M(Be,H,me,"”","''",!0);M(Be,H,me,"”","\\textquotedblright");M(D,H,me,"°","\\degree",!0);M(Be,H,me,"°","\\degree");M(Be,H,me,"°","\\textdegree",!0);M(D,H,me,"£","\\pounds");M(D,H,me,"£","\\mathsterling",!0);M(Be,H,me,"£","\\pounds");M(Be,H,me,"£","\\textsterling",!0);M(D,le,me,"✠","\\maltese");M(Be,le,me,"✠","\\maltese");var pR='0123456789/@."';for(var US=0;US0)return $a(i,d,s,n,a.concat(h));if(c){var m,g;if(c==="boldsymbol"){var x=d3e(i,s,n,a,r);m=x.fontName,g=[x.fontClass]}else l?(m=rU[c].fontName,g=[c]):(m=P1(c,n.fontWeight,n.fontShape),g=[c,n.fontWeight,n.fontShape]);if($b(i,m,s).metrics)return $a(i,m,s,n,a.concat(g));if(eU.hasOwnProperty(i)&&m.slice(0,10)==="Typewriter"){for(var y=[],w=0;w{if(eu(t.classes)!==eu(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;if(t.classes.length===1){var n=t.classes[0];if(n==="mbin"||n==="mord")return!1}for(var r in t.style)if(t.style.hasOwnProperty(r)&&t.style[r]!==e.style[r])return!1;for(var s in e.style)if(e.style.hasOwnProperty(s)&&t.style[s]!==e.style[s])return!1;return!0},m3e=t=>{for(var e=0;en&&(n=a.height),a.depth>r&&(r=a.depth),a.maxFontSize>s&&(s=a.maxFontSize)}e.height=n,e.depth=r,e.maxFontSize=s},mi=function(e,n,r,s){var i=new pg(e,n,r,s);return TN(i),i},tU=(t,e,n,r)=>new pg(t,e,n,r),p3e=function(e,n,r){var s=mi([e],[],n);return s.height=Math.max(r||n.fontMetrics().defaultRuleThickness,n.minRuleThickness),s.style.borderBottomWidth=Xe(s.height),s.maxFontSize=1,s},g3e=function(e,n,r,s){var i=new CN(e,n,r,s);return TN(i),i},nU=function(e){var n=new mg(e);return TN(n),n},x3e=function(e,n){return e instanceof mg?mi([],[e],n):e},v3e=function(e){if(e.positionType==="individualShift"){for(var n=e.children,r=[n[0]],s=-n[0].shift-n[0].elem.depth,i=s,a=1;a{var n=mi(["mspace"],[],e),r=Rr(t,e);return n.style.marginRight=Xe(r),n},P1=function(e,n,r){var s="";switch(e){case"amsrm":s="AMS";break;case"textrm":s="Main";break;case"textsf":s="SansSerif";break;case"texttt":s="Typewriter";break;default:s=e}var i;return n==="textbf"&&r==="textit"?i="BoldItalic":n==="textbf"?i="Bold":n==="textit"?i="Italic":i="Regular",s+"-"+i},rU={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},sU={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},w3e=function(e,n){var[r,s,i]=sU[e],a=new tu(r),l=new Ql([a],{width:Xe(s),height:Xe(i),style:"width:"+Xe(s),viewBox:"0 0 "+1e3*s+" "+1e3*i,preserveAspectRatio:"xMinYMin"}),c=tU(["overlay"],[l],n);return c.height=i,c.style.height=Xe(i),c.style.width=Xe(s),c},be={fontMap:rU,makeSymbol:$a,mathsym:u3e,makeSpan:mi,makeSvgSpan:tU,makeLineSpan:p3e,makeAnchor:g3e,makeFragment:nU,wrapFragment:x3e,makeVList:y3e,makeOrd:h3e,makeGlue:b3e,staticSvg:w3e,svgData:sU,tryCombineChars:m3e},_r={number:3,unit:"mu"},zu={number:4,unit:"mu"},yl={number:5,unit:"mu"},S3e={mord:{mop:_r,mbin:zu,mrel:yl,minner:_r},mop:{mord:_r,mop:_r,mrel:yl,minner:_r},mbin:{mord:zu,mop:zu,mopen:zu,minner:zu},mrel:{mord:yl,mop:yl,mopen:yl,minner:yl},mopen:{},mclose:{mop:_r,mbin:zu,mrel:yl,minner:_r},mpunct:{mord:_r,mop:_r,mrel:yl,mopen:_r,mclose:_r,mpunct:_r,minner:_r},minner:{mord:_r,mop:_r,mbin:zu,mrel:yl,mopen:_r,mpunct:_r,minner:_r}},k3e={mord:{mop:_r},mop:{mord:_r,mop:_r},mbin:{},mrel:{},mopen:{},mclose:{mop:_r},mpunct:{},minner:{mop:_r}},iU={},Oy={},jy={};function tt(t){for(var{type:e,names:n,props:r,handler:s,htmlBuilder:i,mathmlBuilder:a}=t,l={type:e,numArgs:r.numArgs,argTypes:r.argTypes,allowedInArgument:!!r.allowedInArgument,allowedInText:!!r.allowedInText,allowedInMath:r.allowedInMath===void 0?!0:r.allowedInMath,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,primitive:!!r.primitive,handler:s},c=0;c{var S=w.classes[0],k=y.classes[0];S==="mbin"&&j3e.includes(k)?w.classes[0]="mord":k==="mbin"&&O3e.includes(S)&&(y.classes[0]="mord")},{node:m},g,x),bR(i,(y,w)=>{var S=$O(w),k=$O(y),j=S&&k?y.hasClass("mtight")?k3e[S][k]:S3e[S][k]:null;if(j)return be.makeGlue(j,d)},{node:m},g,x),i},bR=function t(e,n,r,s,i){s&&e.push(s);for(var a=0;ag=>{e.splice(m+1,0,g),a++})(a)}s&&e.pop()},aU=function(e){return e instanceof mg||e instanceof CN||e instanceof pg&&e.hasClass("enclosing")?e:null},T3e=function t(e,n){var r=aU(e);if(r){var s=r.children;if(s.length){if(n==="right")return t(s[s.length-1],"right");if(n==="left")return t(s[0],"left")}}return e},$O=function(e,n){return e?(n&&(e=T3e(e,n)),C3e[e.classes[0]]||null):null},vp=function(e,n){var r=["nulldelimiter"].concat(e.baseSizingClasses());return Vl(n.concat(r))},Pn=function(e,n,r){if(!e)return Vl();if(Oy[e.type]){var s=Oy[e.type](e,n);if(r&&n.size!==r.size){s=Vl(n.sizingClasses(r),[s],n);var i=n.sizeMultiplier/r.sizeMultiplier;s.height*=i,s.depth*=i}return s}else throw new $e("Got group of unknown type: '"+e.type+"'")};function z1(t,e){var n=Vl(["base"],t,e),r=Vl(["strut"]);return r.style.height=Xe(n.height+n.depth),n.depth&&(r.style.verticalAlign=Xe(-n.depth)),n.children.unshift(r),n}function HO(t,e){var n=null;t.length===1&&t[0].type==="tag"&&(n=t[0].tag,t=t[0].body);var r=fs(t,e,"root"),s;r.length===2&&r[1].hasClass("tag")&&(s=r.pop());for(var i=[],a=[],l=0;l0&&(i.push(z1(a,e)),a=[]),i.push(r[l]));a.length>0&&i.push(z1(a,e));var d;n?(d=z1(fs(n,e,!0)),d.classes=["tag"],i.push(d)):s&&i.push(s);var h=Vl(["katex-html"],i);if(h.setAttribute("aria-hidden","true"),d){var m=d.children[0];m.style.height=Xe(h.height+h.depth),h.depth&&(m.style.verticalAlign=Xe(-h.depth))}return h}function oU(t){return new mg(t)}class Qi{constructor(e,n,r){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=n||[],this.classes=r||[]}setAttribute(e,n){this.attributes[e]=n}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&e.setAttribute(n,this.attributes[n]);this.classes.length>0&&(e.className=eu(this.classes));for(var r=0;r0&&(e+=' class ="'+$n.escape(eu(this.classes))+'"'),e+=">";for(var r=0;r",e}toText(){return this.children.map(e=>e.toText()).join("")}}class Ao{constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return $n.escape(this.toText())}toText(){return this.text}}class E3e{constructor(e){this.width=void 0,this.character=void 0,this.width=e,e>=.05555&&e<=.05556?this.character=" ":e>=.1666&&e<=.1667?this.character=" ":e>=.2222&&e<=.2223?this.character=" ":e>=.2777&&e<=.2778?this.character="  ":e>=-.05556&&e<=-.05555?this.character=" ⁣":e>=-.1667&&e<=-.1666?this.character=" ⁣":e>=-.2223&&e<=-.2222?this.character=" ⁣":e>=-.2778&&e<=-.2777?this.character=" ⁣":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",Xe(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}}var qe={MathNode:Qi,TextNode:Ao,SpaceNode:E3e,newDocumentFragment:oU},Ma=function(e,n,r){return dr[n][e]&&dr[n][e].replace&&e.charCodeAt(0)!==55349&&!(eU.hasOwnProperty(e)&&r&&(r.fontFamily&&r.fontFamily.slice(4,6)==="tt"||r.font&&r.font.slice(4,6)==="tt"))&&(e=dr[n][e].replace),new qe.TextNode(e)},EN=function(e){return e.length===1?e[0]:new qe.MathNode("mrow",e)},_N=function(e,n){if(n.fontFamily==="texttt")return"monospace";if(n.fontFamily==="textsf")return n.fontShape==="textit"&&n.fontWeight==="textbf"?"sans-serif-bold-italic":n.fontShape==="textit"?"sans-serif-italic":n.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(n.fontShape==="textit"&&n.fontWeight==="textbf")return"bold-italic";if(n.fontShape==="textit")return"italic";if(n.fontWeight==="textbf")return"bold";var r=n.font;if(!r||r==="mathnormal")return null;var s=e.mode;if(r==="mathit")return"italic";if(r==="boldsymbol")return e.type==="textord"?"bold":"bold-italic";if(r==="mathbf")return"bold";if(r==="mathbb")return"double-struck";if(r==="mathsfit")return"sans-serif-italic";if(r==="mathfrak")return"fraktur";if(r==="mathscr"||r==="mathcal")return"script";if(r==="mathsf")return"sans-serif";if(r==="mathtt")return"monospace";var i=e.text;if(["\\imath","\\jmath"].includes(i))return null;dr[s][i]&&dr[s][i].replace&&(i=dr[s][i].replace);var a=be.fontMap[r].fontName;return NN(i,a,s)?be.fontMap[r].variant:null};function YS(t){if(!t)return!1;if(t.type==="mi"&&t.children.length===1){var e=t.children[0];return e instanceof Ao&&e.text==="."}else if(t.type==="mo"&&t.children.length===1&&t.getAttribute("separator")==="true"&&t.getAttribute("lspace")==="0em"&&t.getAttribute("rspace")==="0em"){var n=t.children[0];return n instanceof Ao&&n.text===","}else return!1}var _i=function(e,n,r){if(e.length===1){var s=lr(e[0],n);return r&&s instanceof Qi&&s.type==="mo"&&(s.setAttribute("lspace","0em"),s.setAttribute("rspace","0em")),[s]}for(var i=[],a,l=0;l=1&&(a.type==="mn"||YS(a))){var d=c.children[0];d instanceof Qi&&d.type==="mn"&&(d.children=[...a.children,...d.children],i.pop())}else if(a.type==="mi"&&a.children.length===1){var h=a.children[0];if(h instanceof Ao&&h.text==="̸"&&(c.type==="mo"||c.type==="mi"||c.type==="mn")){var m=c.children[0];m instanceof Ao&&m.text.length>0&&(m.text=m.text.slice(0,1)+"̸"+m.text.slice(1),i.pop())}}}i.push(c),a=c}return i},nu=function(e,n,r){return EN(_i(e,n,r))},lr=function(e,n){if(!e)return new qe.MathNode("mrow");if(jy[e.type]){var r=jy[e.type](e,n);return r}else throw new $e("Got group of unknown type: '"+e.type+"'")};function wR(t,e,n,r,s){var i=_i(t,n),a;i.length===1&&i[0]instanceof Qi&&["mrow","mtable"].includes(i[0].type)?a=i[0]:a=new qe.MathNode("mrow",i);var l=new qe.MathNode("annotation",[new qe.TextNode(e)]);l.setAttribute("encoding","application/x-tex");var c=new qe.MathNode("semantics",[a,l]),d=new qe.MathNode("math",[c]);d.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),r&&d.setAttribute("display","block");var h=s?"katex":"katex-mathml";return be.makeSpan([h],[d])}var lU=function(e){return new Tl({style:e.displayMode?Et.DISPLAY:Et.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},cU=function(e,n){if(n.displayMode){var r=["katex-display"];n.leqno&&r.push("leqno"),n.fleqn&&r.push("fleqn"),e=be.makeSpan(r,[e])}return e},_3e=function(e,n,r){var s=lU(r),i;if(r.output==="mathml")return wR(e,n,s,r.displayMode,!0);if(r.output==="html"){var a=HO(e,s);i=be.makeSpan(["katex"],[a])}else{var l=wR(e,n,s,r.displayMode,!1),c=HO(e,s);i=be.makeSpan(["katex"],[l,c])}return cU(i,r)},A3e=function(e,n,r){var s=lU(r),i=HO(e,s),a=be.makeSpan(["katex"],[i]);return cU(a,r)},M3e={widehat:"^",widecheck:"ˇ",widetilde:"~",utilde:"~",overleftarrow:"←",underleftarrow:"←",xleftarrow:"←",overrightarrow:"→",underrightarrow:"→",xrightarrow:"→",underbrace:"⏟",overbrace:"⏞",overgroup:"⏠",undergroup:"⏡",overleftrightarrow:"↔",underleftrightarrow:"↔",xleftrightarrow:"↔",Overrightarrow:"⇒",xRightarrow:"⇒",overleftharpoon:"↼",xleftharpoonup:"↼",overrightharpoon:"⇀",xrightharpoonup:"⇀",xLeftarrow:"⇐",xLeftrightarrow:"⇔",xhookleftarrow:"↩",xhookrightarrow:"↪",xmapsto:"↦",xrightharpoondown:"⇁",xleftharpoondown:"↽",xrightleftharpoons:"⇌",xleftrightharpoons:"⇋",xtwoheadleftarrow:"↞",xtwoheadrightarrow:"↠",xlongequal:"=",xtofrom:"⇄",xrightleftarrows:"⇄",xrightequilibrium:"⇌",xleftequilibrium:"⇋","\\cdrightarrow":"→","\\cdleftarrow":"←","\\cdlongequal":"="},R3e=function(e){var n=new qe.MathNode("mo",[new qe.TextNode(M3e[e.replace(/^\\/,"")])]);return n.setAttribute("stretchy","true"),n},D3e={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},P3e=function(e){return e.type==="ordgroup"?e.body.length:1},z3e=function(e,n){function r(){var l=4e5,c=e.label.slice(1);if(["widehat","widecheck","widetilde","utilde"].includes(c)){var d=e,h=P3e(d.base),m,g,x;if(h>5)c==="widehat"||c==="widecheck"?(m=420,l=2364,x=.42,g=c+"4"):(m=312,l=2340,x=.34,g="tilde4");else{var y=[1,1,2,2,3,3][h];c==="widehat"||c==="widecheck"?(l=[0,1062,2364,2364,2364][y],m=[0,239,300,360,420][y],x=[0,.24,.3,.3,.36,.42][y],g=c+y):(l=[0,600,1033,2339,2340][y],m=[0,260,286,306,312][y],x=[0,.26,.286,.3,.306,.34][y],g="tilde"+y)}var w=new tu(g),S=new Ql([w],{width:"100%",height:Xe(x),viewBox:"0 0 "+l+" "+m,preserveAspectRatio:"none"});return{span:be.makeSvgSpan([],[S],n),minWidth:0,height:x}}else{var k=[],j=D3e[c],[N,T,E]=j,_=E/1e3,A=N.length,L,P;if(A===1){var B=j[3];L=["hide-tail"],P=[B]}else if(A===2)L=["halfarrow-left","halfarrow-right"],P=["xMinYMin","xMaxYMin"];else if(A===3)L=["brace-left","brace-center","brace-right"],P=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support - `+A+" children.");for(var $=0;$0&&(s.style.minWidth=Xe(i)),s},I3e=function(e,n,r,s,i){var a,l=e.height+e.depth+r+s;if(/fbox|color|angl/.test(n)){if(a=be.makeSpan(["stretchy",n],[],i),n==="fbox"){var c=i.color&&i.getColor();c&&(a.style.borderColor=c)}}else{var d=[];/^[bx]cancel$/.test(n)&&d.push(new FO({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(n)&&d.push(new FO({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new Ql(d,{width:"100%",height:Xe(l)});a=be.makeSvgSpan([],[h],i)}return a.height=l,a.style.height=Xe(l),a},Ul={encloseSpan:I3e,mathMLnode:R3e,svgSpan:z3e};function en(t,e){if(!t||t.type!==e)throw new Error("Expected node of type "+e+", but got "+(t?"node of type "+t.type:String(t)));return t}function AN(t){var e=Hb(t);if(!e)throw new Error("Expected node of symbol group type, but got "+(t?"node of type "+t.type:String(t)));return e}function Hb(t){return t&&(t.type==="atom"||l3e.hasOwnProperty(t.type))?t:null}var MN=(t,e)=>{var n,r,s;t&&t.type==="supsub"?(r=en(t.base,"accent"),n=r.base,t.base=n,s=a3e(Pn(t,e)),t.base=r):(r=en(t,"accent"),n=r.base);var i=Pn(n,e.havingCrampedStyle()),a=r.isShifty&&$n.isCharacterBox(n),l=0;if(a){var c=$n.getBaseElem(n),d=Pn(c,e.havingCrampedStyle());l=mR(d).skew}var h=r.label==="\\c",m=h?i.height+i.depth:Math.min(i.height,e.fontMetrics().xHeight),g;if(r.isStretchy)g=Ul.svgSpan(r,e),g=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:g,wrapperClasses:["svg-align"],wrapperStyle:l>0?{width:"calc(100% - "+Xe(2*l)+")",marginLeft:Xe(2*l)}:void 0}]},e);else{var x,y;r.label==="\\vec"?(x=be.staticSvg("vec",e),y=be.svgData.vec[1]):(x=be.makeOrd({mode:r.mode,text:r.label},e,"textord"),x=mR(x),x.italic=0,y=x.width,h&&(m+=x.depth)),g=be.makeSpan(["accent-body"],[x]);var w=r.label==="\\textcircled";w&&(g.classes.push("accent-full"),m=i.height);var S=l;w||(S-=y/2),g.style.left=Xe(S),r.label==="\\textcircled"&&(g.style.top=".2em"),g=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-m},{type:"elem",elem:g}]},e)}var k=be.makeSpan(["mord","accent"],[g],e);return s?(s.children[0]=k,s.height=Math.max(k.height,s.height),s.classes[0]="mord",s):k},uU=(t,e)=>{var n=t.isStretchy?Ul.mathMLnode(t.label):new qe.MathNode("mo",[Ma(t.label,t.mode)]),r=new qe.MathNode("mover",[lr(t.base,e),n]);return r.setAttribute("accent","true"),r},L3e=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(t=>"\\"+t).join("|"));tt({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(t,e)=>{var n=Ny(e[0]),r=!L3e.test(t.funcName),s=!r||t.funcName==="\\widehat"||t.funcName==="\\widetilde"||t.funcName==="\\widecheck";return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:r,isShifty:s,base:n}},htmlBuilder:MN,mathmlBuilder:uU});tt({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(t,e)=>{var n=e[0],r=t.parser.mode;return r==="math"&&(t.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+t.funcName+" works only in text mode"),r="text"),{type:"accent",mode:r,label:t.funcName,isStretchy:!1,isShifty:!0,base:n}},htmlBuilder:MN,mathmlBuilder:uU});tt({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0];return{type:"accentUnder",mode:n.mode,label:r,base:s}},htmlBuilder:(t,e)=>{var n=Pn(t.base,e),r=Ul.svgSpan(t,e),s=t.label==="\\utilde"?.12:0,i=be.makeVList({positionType:"top",positionData:n.height,children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:s},{type:"elem",elem:n}]},e);return be.makeSpan(["mord","accentunder"],[i],e)},mathmlBuilder:(t,e)=>{var n=Ul.mathMLnode(t.label),r=new qe.MathNode("munder",[lr(t.base,e),n]);return r.setAttribute("accentunder","true"),r}});var I1=t=>{var e=new qe.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e};tt({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,n){var{parser:r,funcName:s}=t;return{type:"xArrow",mode:r.mode,label:s,body:e[0],below:n[0]}},htmlBuilder(t,e){var n=e.style,r=e.havingStyle(n.sup()),s=be.wrapFragment(Pn(t.body,r,e),e),i=t.label.slice(0,2)==="\\x"?"x":"cd";s.classes.push(i+"-arrow-pad");var a;t.below&&(r=e.havingStyle(n.sub()),a=be.wrapFragment(Pn(t.below,r,e),e),a.classes.push(i+"-arrow-pad"));var l=Ul.svgSpan(t,e),c=-e.fontMetrics().axisHeight+.5*l.height,d=-e.fontMetrics().axisHeight-.5*l.height-.111;(s.depth>.25||t.label==="\\xleftequilibrium")&&(d-=s.depth);var h;if(a){var m=-e.fontMetrics().axisHeight+a.height+.5*l.height+.111;h=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:d},{type:"elem",elem:l,shift:c},{type:"elem",elem:a,shift:m}]},e)}else h=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:d},{type:"elem",elem:l,shift:c}]},e);return h.children[0].children[0].children[1].classes.push("svg-align"),be.makeSpan(["mrel","x-arrow"],[h],e)},mathmlBuilder(t,e){var n=Ul.mathMLnode(t.label);n.setAttribute("minsize",t.label.charAt(0)==="x"?"1.75em":"3.0em");var r;if(t.body){var s=I1(lr(t.body,e));if(t.below){var i=I1(lr(t.below,e));r=new qe.MathNode("munderover",[n,i,s])}else r=new qe.MathNode("mover",[n,s])}else if(t.below){var a=I1(lr(t.below,e));r=new qe.MathNode("munder",[n,a])}else r=I1(),r=new qe.MathNode("mover",[n,r]);return r}});var B3e=be.makeSpan;function dU(t,e){var n=fs(t.body,e,!0);return B3e([t.mclass],n,e)}function hU(t,e){var n,r=_i(t.body,e);return t.mclass==="minner"?n=new qe.MathNode("mpadded",r):t.mclass==="mord"?t.isCharacterBox?(n=r[0],n.type="mi"):n=new qe.MathNode("mi",r):(t.isCharacterBox?(n=r[0],n.type="mo"):n=new qe.MathNode("mo",r),t.mclass==="mbin"?(n.attributes.lspace="0.22em",n.attributes.rspace="0.22em"):t.mclass==="mpunct"?(n.attributes.lspace="0em",n.attributes.rspace="0.17em"):t.mclass==="mopen"||t.mclass==="mclose"?(n.attributes.lspace="0em",n.attributes.rspace="0em"):t.mclass==="minner"&&(n.attributes.lspace="0.0556em",n.attributes.width="+0.1111em")),n}tt({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];return{type:"mclass",mode:n.mode,mclass:"m"+r.slice(5),body:Qr(s),isCharacterBox:$n.isCharacterBox(s)}},htmlBuilder:dU,mathmlBuilder:hU});var Qb=t=>{var e=t.type==="ordgroup"&&t.body.length?t.body[0]:t;return e.type==="atom"&&(e.family==="bin"||e.family==="rel")?"m"+e.family:"mord"};tt({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(t,e){var{parser:n}=t;return{type:"mclass",mode:n.mode,mclass:Qb(e[0]),body:Qr(e[1]),isCharacterBox:$n.isCharacterBox(e[1])}}});tt({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(t,e){var{parser:n,funcName:r}=t,s=e[1],i=e[0],a;r!=="\\stackrel"?a=Qb(s):a="mrel";var l={type:"op",mode:s.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:r!=="\\stackrel",body:Qr(s)},c={type:"supsub",mode:i.mode,base:l,sup:r==="\\underset"?null:i,sub:r==="\\underset"?i:null};return{type:"mclass",mode:n.mode,mclass:a,body:[c],isCharacterBox:$n.isCharacterBox(c)}},htmlBuilder:dU,mathmlBuilder:hU});tt({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"pmb",mode:n.mode,mclass:Qb(e[0]),body:Qr(e[0])}},htmlBuilder(t,e){var n=fs(t.body,e,!0),r=be.makeSpan([t.mclass],n,e);return r.style.textShadow="0.02em 0.01em 0.04px",r},mathmlBuilder(t,e){var n=_i(t.body,e),r=new qe.MathNode("mstyle",n);return r.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),r}});var F3e={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},SR=()=>({type:"styling",body:[],mode:"math",style:"display"}),kR=t=>t.type==="textord"&&t.text==="@",q3e=(t,e)=>(t.type==="mathord"||t.type==="atom")&&t.text===e;function $3e(t,e,n){var r=F3e[t];switch(r){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return n.callFunction(r,[e[0]],[e[1]]);case"\\uparrow":case"\\downarrow":{var s=n.callFunction("\\\\cdleft",[e[0]],[]),i={type:"atom",text:r,mode:"math",family:"rel"},a=n.callFunction("\\Big",[i],[]),l=n.callFunction("\\\\cdright",[e[1]],[]),c={type:"ordgroup",mode:"math",body:[s,a,l]};return n.callFunction("\\\\cdparent",[c],[])}case"\\\\cdlongequal":return n.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var d={type:"textord",text:"\\Vert",mode:"math"};return n.callFunction("\\Big",[d],[])}default:return{type:"textord",text:" ",mode:"math"}}}function H3e(t){var e=[];for(t.gullet.beginGroup(),t.gullet.macros.set("\\cr","\\\\\\relax"),t.gullet.beginGroup();;){e.push(t.parseExpression(!1,"\\\\")),t.gullet.endGroup(),t.gullet.beginGroup();var n=t.fetch().text;if(n==="&"||n==="\\\\")t.consume();else if(n==="\\end"){e[e.length-1].length===0&&e.pop();break}else throw new $e("Expected \\\\ or \\cr or \\end",t.nextToken)}for(var r=[],s=[r],i=0;i-1))if("<>AV".indexOf(d)>-1)for(var m=0;m<2;m++){for(var g=!0,x=c+1;xAV=|." after @',a[c]);var y=$3e(d,h,t),w={type:"styling",body:[y],mode:"math",style:"display"};r.push(w),l=SR()}i%2===0?r.push(l):r.shift(),r=[],s.push(r)}t.gullet.endGroup(),t.gullet.endGroup();var S=new Array(s[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:s,arraystretch:1,addJot:!0,rowGaps:[null],cols:S,colSeparationType:"CD",hLinesBeforeRow:new Array(s.length+1).fill([])}}tt({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:r}=t;return{type:"cdlabel",mode:n.mode,side:r.slice(4),label:e[0]}},htmlBuilder(t,e){var n=e.havingStyle(e.style.sup()),r=be.wrapFragment(Pn(t.label,n,e),e);return r.classes.push("cd-label-"+t.side),r.style.bottom=Xe(.8-r.depth),r.height=0,r.depth=0,r},mathmlBuilder(t,e){var n=new qe.MathNode("mrow",[lr(t.label,e)]);return n=new qe.MathNode("mpadded",[n]),n.setAttribute("width","0"),t.side==="left"&&n.setAttribute("lspace","-1width"),n.setAttribute("voffset","0.7em"),n=new qe.MathNode("mstyle",[n]),n.setAttribute("displaystyle","false"),n.setAttribute("scriptlevel","1"),n}});tt({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(t,e){var{parser:n}=t;return{type:"cdlabelparent",mode:n.mode,fragment:e[0]}},htmlBuilder(t,e){var n=be.wrapFragment(Pn(t.fragment,e),e);return n.classes.push("cd-vert-arrow"),n},mathmlBuilder(t,e){return new qe.MathNode("mrow",[lr(t.fragment,e)])}});tt({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(t,e){for(var{parser:n}=t,r=en(e[0],"ordgroup"),s=r.body,i="",a=0;a=1114111)throw new $e("\\@char with invalid code point "+i);return c<=65535?d=String.fromCharCode(c):(c-=65536,d=String.fromCharCode((c>>10)+55296,(c&1023)+56320)),{type:"textord",mode:n.mode,text:d}}});var fU=(t,e)=>{var n=fs(t.body,e.withColor(t.color),!1);return be.makeFragment(n)},mU=(t,e)=>{var n=_i(t.body,e.withColor(t.color)),r=new qe.MathNode("mstyle",n);return r.setAttribute("mathcolor",t.color),r};tt({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(t,e){var{parser:n}=t,r=en(e[0],"color-token").color,s=e[1];return{type:"color",mode:n.mode,color:r,body:Qr(s)}},htmlBuilder:fU,mathmlBuilder:mU});tt({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(t,e){var{parser:n,breakOnTokenText:r}=t,s=en(e[0],"color-token").color;n.gullet.macros.set("\\current@color",s);var i=n.parseExpression(!0,r);return{type:"color",mode:n.mode,color:s,body:i}},htmlBuilder:fU,mathmlBuilder:mU});tt({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(t,e,n){var{parser:r}=t,s=r.gullet.future().text==="["?r.parseSizeGroup(!0):null,i=!r.settings.displayMode||!r.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:r.mode,newLine:i,size:s&&en(s,"size").value}},htmlBuilder(t,e){var n=be.makeSpan(["mspace"],[],e);return t.newLine&&(n.classes.push("newline"),t.size&&(n.style.marginTop=Xe(Rr(t.size,e)))),n},mathmlBuilder(t,e){var n=new qe.MathNode("mspace");return t.newLine&&(n.setAttribute("linebreak","newline"),t.size&&n.setAttribute("height",Xe(Rr(t.size,e)))),n}});var QO={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},pU=t=>{var e=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new $e("Expected a control sequence",t);return e},Q3e=t=>{var e=t.gullet.popToken();return e.text==="="&&(e=t.gullet.popToken(),e.text===" "&&(e=t.gullet.popToken())),e},gU=(t,e,n,r)=>{var s=t.gullet.macros.get(n.text);s==null&&(n.noexpand=!0,s={tokens:[n],numArgs:0,unexpandable:!t.gullet.isExpandable(n.text)}),t.gullet.macros.set(e,s,r)};tt({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(t){var{parser:e,funcName:n}=t;e.consumeSpaces();var r=e.fetch();if(QO[r.text])return(n==="\\global"||n==="\\\\globallong")&&(r.text=QO[r.text]),en(e.parseFunction(),"internal");throw new $e("Invalid token after macro prefix",r)}});tt({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,r=e.gullet.popToken(),s=r.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(s))throw new $e("Expected a control sequence",r);for(var i=0,a,l=[[]];e.gullet.future().text!=="{";)if(r=e.gullet.popToken(),r.text==="#"){if(e.gullet.future().text==="{"){a=e.gullet.future(),l[i].push("{");break}if(r=e.gullet.popToken(),!/^[1-9]$/.test(r.text))throw new $e('Invalid argument number "'+r.text+'"');if(parseInt(r.text)!==i+1)throw new $e('Argument number "'+r.text+'" out of order');i++,l.push([])}else{if(r.text==="EOF")throw new $e("Expected a macro definition");l[i].push(r.text)}var{tokens:c}=e.gullet.consumeArg();return a&&c.unshift(a),(n==="\\edef"||n==="\\xdef")&&(c=e.gullet.expandTokens(c),c.reverse()),e.gullet.macros.set(s,{tokens:c,numArgs:i,delimiters:l},n===QO[n]),{type:"internal",mode:e.mode}}});tt({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,r=pU(e.gullet.popToken());e.gullet.consumeSpaces();var s=Q3e(e);return gU(e,r,s,n==="\\\\globallet"),{type:"internal",mode:e.mode}}});tt({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,r=pU(e.gullet.popToken()),s=e.gullet.popToken(),i=e.gullet.popToken();return gU(e,r,i,n==="\\\\globalfuture"),e.gullet.pushToken(i),e.gullet.pushToken(s),{type:"internal",mode:e.mode}}});var h0=function(e,n,r){var s=dr.math[e]&&dr.math[e].replace,i=NN(s||e,n,r);if(!i)throw new Error("Unsupported symbol "+e+" and font size "+n+".");return i},RN=function(e,n,r,s){var i=r.havingBaseStyle(n),a=be.makeSpan(s.concat(i.sizingClasses(r)),[e],r),l=i.sizeMultiplier/r.sizeMultiplier;return a.height*=l,a.depth*=l,a.maxFontSize=i.sizeMultiplier,a},xU=function(e,n,r){var s=n.havingBaseStyle(r),i=(1-n.sizeMultiplier/s.sizeMultiplier)*n.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=Xe(i),e.height-=i,e.depth+=i},V3e=function(e,n,r,s,i,a){var l=be.makeSymbol(e,"Main-Regular",i,s),c=RN(l,n,s,a);return r&&xU(c,s,n),c},U3e=function(e,n,r,s){return be.makeSymbol(e,"Size"+n+"-Regular",r,s)},vU=function(e,n,r,s,i,a){var l=U3e(e,n,i,s),c=RN(be.makeSpan(["delimsizing","size"+n],[l],s),Et.TEXT,s,a);return r&&xU(c,s,Et.TEXT),c},KS=function(e,n,r){var s;n==="Size1-Regular"?s="delim-size1":s="delim-size4";var i=be.makeSpan(["delimsizinginner",s],[be.makeSpan([],[be.makeSymbol(e,n,r)])]);return{type:"elem",elem:i}},ZS=function(e,n,r){var s=_o["Size4-Regular"][e.charCodeAt(0)]?_o["Size4-Regular"][e.charCodeAt(0)][4]:_o["Size1-Regular"][e.charCodeAt(0)][4],i=new tu("inner",K5e(e,Math.round(1e3*n))),a=new Ql([i],{width:Xe(s),height:Xe(n),style:"width:"+Xe(s),viewBox:"0 0 "+1e3*s+" "+Math.round(1e3*n),preserveAspectRatio:"xMinYMin"}),l=be.makeSvgSpan([],[a],r);return l.height=n,l.style.height=Xe(n),l.style.width=Xe(s),{type:"elem",elem:l}},VO=.008,L1={type:"kern",size:-1*VO},W3e=["|","\\lvert","\\rvert","\\vert"],G3e=["\\|","\\lVert","\\rVert","\\Vert"],yU=function(e,n,r,s,i,a){var l,c,d,h,m="",g=0;l=d=h=e,c=null;var x="Size1-Regular";e==="\\uparrow"?d=h="⏐":e==="\\Uparrow"?d=h="‖":e==="\\downarrow"?l=d="⏐":e==="\\Downarrow"?l=d="‖":e==="\\updownarrow"?(l="\\uparrow",d="⏐",h="\\downarrow"):e==="\\Updownarrow"?(l="\\Uparrow",d="‖",h="\\Downarrow"):W3e.includes(e)?(d="∣",m="vert",g=333):G3e.includes(e)?(d="∥",m="doublevert",g=556):e==="["||e==="\\lbrack"?(l="⎡",d="⎢",h="⎣",x="Size4-Regular",m="lbrack",g=667):e==="]"||e==="\\rbrack"?(l="⎤",d="⎥",h="⎦",x="Size4-Regular",m="rbrack",g=667):e==="\\lfloor"||e==="⌊"?(d=l="⎢",h="⎣",x="Size4-Regular",m="lfloor",g=667):e==="\\lceil"||e==="⌈"?(l="⎡",d=h="⎢",x="Size4-Regular",m="lceil",g=667):e==="\\rfloor"||e==="⌋"?(d=l="⎥",h="⎦",x="Size4-Regular",m="rfloor",g=667):e==="\\rceil"||e==="⌉"?(l="⎤",d=h="⎥",x="Size4-Regular",m="rceil",g=667):e==="("||e==="\\lparen"?(l="⎛",d="⎜",h="⎝",x="Size4-Regular",m="lparen",g=875):e===")"||e==="\\rparen"?(l="⎞",d="⎟",h="⎠",x="Size4-Regular",m="rparen",g=875):e==="\\{"||e==="\\lbrace"?(l="⎧",c="⎨",h="⎩",d="⎪",x="Size4-Regular"):e==="\\}"||e==="\\rbrace"?(l="⎫",c="⎬",h="⎭",d="⎪",x="Size4-Regular"):e==="\\lgroup"||e==="⟮"?(l="⎧",h="⎩",d="⎪",x="Size4-Regular"):e==="\\rgroup"||e==="⟯"?(l="⎫",h="⎭",d="⎪",x="Size4-Regular"):e==="\\lmoustache"||e==="⎰"?(l="⎧",h="⎭",d="⎪",x="Size4-Regular"):(e==="\\rmoustache"||e==="⎱")&&(l="⎫",h="⎩",d="⎪",x="Size4-Regular");var y=h0(l,x,i),w=y.height+y.depth,S=h0(d,x,i),k=S.height+S.depth,j=h0(h,x,i),N=j.height+j.depth,T=0,E=1;if(c!==null){var _=h0(c,x,i);T=_.height+_.depth,E=2}var A=w+N+T,L=Math.max(0,Math.ceil((n-A)/(E*k))),P=A+L*E*k,B=s.fontMetrics().axisHeight;r&&(B*=s.sizeMultiplier);var $=P/2-B,U=[];if(m.length>0){var te=P-w-N,z=Math.round(P*1e3),Q=Z5e(m,Math.round(te*1e3)),F=new tu(m,Q),Y=(g/1e3).toFixed(3)+"em",J=(z/1e3).toFixed(3)+"em",X=new Ql([F],{width:Y,height:J,viewBox:"0 0 "+g+" "+z}),R=be.makeSvgSpan([],[X],s);R.height=z/1e3,R.style.width=Y,R.style.height=J,U.push({type:"elem",elem:R})}else{if(U.push(KS(h,x,i)),U.push(L1),c===null){var ie=P-w-N+2*VO;U.push(ZS(d,ie,s))}else{var G=(P-w-N-T)/2+2*VO;U.push(ZS(d,G,s)),U.push(L1),U.push(KS(c,x,i)),U.push(L1),U.push(ZS(d,G,s))}U.push(L1),U.push(KS(l,x,i))}var I=s.havingBaseStyle(Et.TEXT),V=be.makeVList({positionType:"bottom",positionData:$,children:U},I);return RN(be.makeSpan(["delimsizing","mult"],[V],I),Et.TEXT,s,a)},JS=80,e5=.08,t5=function(e,n,r,s,i){var a=Y5e(e,s,r),l=new tu(e,a),c=new Ql([l],{width:"400em",height:Xe(n),viewBox:"0 0 400000 "+r,preserveAspectRatio:"xMinYMin slice"});return be.makeSvgSpan(["hide-tail"],[c],i)},X3e=function(e,n){var r=n.havingBaseSizing(),s=kU("\\surd",e*r.sizeMultiplier,SU,r),i=r.sizeMultiplier,a=Math.max(0,n.minRuleThickness-n.fontMetrics().sqrtRuleThickness),l,c=0,d=0,h=0,m;return s.type==="small"?(h=1e3+1e3*a+JS,e<1?i=1:e<1.4&&(i=.7),c=(1+a+e5)/i,d=(1+a)/i,l=t5("sqrtMain",c,h,a,n),l.style.minWidth="0.853em",m=.833/i):s.type==="large"?(h=(1e3+JS)*R0[s.size],d=(R0[s.size]+a)/i,c=(R0[s.size]+a+e5)/i,l=t5("sqrtSize"+s.size,c,h,a,n),l.style.minWidth="1.02em",m=1/i):(c=e+a+e5,d=e+a,h=Math.floor(1e3*e+a)+JS,l=t5("sqrtTall",c,h,a,n),l.style.minWidth="0.742em",m=1.056),l.height=d,l.style.height=Xe(c),{span:l,advanceWidth:m,ruleWidth:(n.fontMetrics().sqrtRuleThickness+a)*i}},bU=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"],Y3e=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"],wU=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],R0=[0,1.2,1.8,2.4,3],K3e=function(e,n,r,s,i){if(e==="<"||e==="\\lt"||e==="⟨"?e="\\langle":(e===">"||e==="\\gt"||e==="⟩")&&(e="\\rangle"),bU.includes(e)||wU.includes(e))return vU(e,n,!1,r,s,i);if(Y3e.includes(e))return yU(e,R0[n],!1,r,s,i);throw new $e("Illegal delimiter: '"+e+"'")},Z3e=[{type:"small",style:Et.SCRIPTSCRIPT},{type:"small",style:Et.SCRIPT},{type:"small",style:Et.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],J3e=[{type:"small",style:Et.SCRIPTSCRIPT},{type:"small",style:Et.SCRIPT},{type:"small",style:Et.TEXT},{type:"stack"}],SU=[{type:"small",style:Et.SCRIPTSCRIPT},{type:"small",style:Et.SCRIPT},{type:"small",style:Et.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],eke=function(e){if(e.type==="small")return"Main-Regular";if(e.type==="large")return"Size"+e.size+"-Regular";if(e.type==="stack")return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},kU=function(e,n,r,s){for(var i=Math.min(2,3-s.style.size),a=i;an)return r[a]}return r[r.length-1]},OU=function(e,n,r,s,i,a){e==="<"||e==="\\lt"||e==="⟨"?e="\\langle":(e===">"||e==="\\gt"||e==="⟩")&&(e="\\rangle");var l;wU.includes(e)?l=Z3e:bU.includes(e)?l=SU:l=J3e;var c=kU(e,n,l,s);return c.type==="small"?V3e(e,c.style,r,s,i,a):c.type==="large"?vU(e,c.size,r,s,i,a):yU(e,n,r,s,i,a)},tke=function(e,n,r,s,i,a){var l=s.fontMetrics().axisHeight*s.sizeMultiplier,c=901,d=5/s.fontMetrics().ptPerEm,h=Math.max(n-l,r+l),m=Math.max(h/500*c,2*h-d);return OU(e,m,!0,s,i,a)},Bl={sqrtImage:X3e,sizedDelim:K3e,sizeToMaxHeight:R0,customSizedDelim:OU,leftRightDelim:tke},OR={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},nke=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function Vb(t,e){var n=Hb(t);if(n&&nke.includes(n.text))return n;throw n?new $e("Invalid delimiter '"+n.text+"' after '"+e.funcName+"'",t):new $e("Invalid delimiter type '"+t.type+"'",t)}tt({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(t,e)=>{var n=Vb(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:OR[t.funcName].size,mclass:OR[t.funcName].mclass,delim:n.text}},htmlBuilder:(t,e)=>t.delim==="."?be.makeSpan([t.mclass]):Bl.sizedDelim(t.delim,t.size,e,t.mode,[t.mclass]),mathmlBuilder:t=>{var e=[];t.delim!=="."&&e.push(Ma(t.delim,t.mode));var n=new qe.MathNode("mo",e);t.mclass==="mopen"||t.mclass==="mclose"?n.setAttribute("fence","true"):n.setAttribute("fence","false"),n.setAttribute("stretchy","true");var r=Xe(Bl.sizeToMaxHeight[t.size]);return n.setAttribute("minsize",r),n.setAttribute("maxsize",r),n}});function jR(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}tt({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=t.parser.gullet.macros.get("\\current@color");if(n&&typeof n!="string")throw new $e("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:Vb(e[0],t).text,color:n}}});tt({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=Vb(e[0],t),r=t.parser;++r.leftrightDepth;var s=r.parseExpression(!1);--r.leftrightDepth,r.expect("\\right",!1);var i=en(r.parseFunction(),"leftright-right");return{type:"leftright",mode:r.mode,body:s,left:n.text,right:i.delim,rightColor:i.color}},htmlBuilder:(t,e)=>{jR(t);for(var n=fs(t.body,e,!0,["mopen","mclose"]),r=0,s=0,i=!1,a=0;a{jR(t);var n=_i(t.body,e);if(t.left!=="."){var r=new qe.MathNode("mo",[Ma(t.left,t.mode)]);r.setAttribute("fence","true"),n.unshift(r)}if(t.right!=="."){var s=new qe.MathNode("mo",[Ma(t.right,t.mode)]);s.setAttribute("fence","true"),t.rightColor&&s.setAttribute("mathcolor",t.rightColor),n.push(s)}return EN(n)}});tt({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=Vb(e[0],t);if(!t.parser.leftrightDepth)throw new $e("\\middle without preceding \\left",n);return{type:"middle",mode:t.parser.mode,delim:n.text}},htmlBuilder:(t,e)=>{var n;if(t.delim===".")n=vp(e,[]);else{n=Bl.sizedDelim(t.delim,1,e,t.mode,[]);var r={delim:t.delim,options:e};n.isMiddle=r}return n},mathmlBuilder:(t,e)=>{var n=t.delim==="\\vert"||t.delim==="|"?Ma("|","text"):Ma(t.delim,t.mode),r=new qe.MathNode("mo",[n]);return r.setAttribute("fence","true"),r.setAttribute("lspace","0.05em"),r.setAttribute("rspace","0.05em"),r}});var DN=(t,e)=>{var n=be.wrapFragment(Pn(t.body,e),e),r=t.label.slice(1),s=e.sizeMultiplier,i,a=0,l=$n.isCharacterBox(t.body);if(r==="sout")i=be.makeSpan(["stretchy","sout"]),i.height=e.fontMetrics().defaultRuleThickness/s,a=-.5*e.fontMetrics().xHeight;else if(r==="phase"){var c=Rr({number:.6,unit:"pt"},e),d=Rr({number:.35,unit:"ex"},e),h=e.havingBaseSizing();s=s/h.sizeMultiplier;var m=n.height+n.depth+c+d;n.style.paddingLeft=Xe(m/2+c);var g=Math.floor(1e3*m*s),x=G5e(g),y=new Ql([new tu("phase",x)],{width:"400em",height:Xe(g/1e3),viewBox:"0 0 400000 "+g,preserveAspectRatio:"xMinYMin slice"});i=be.makeSvgSpan(["hide-tail"],[y],e),i.style.height=Xe(m),a=n.depth+c+d}else{/cancel/.test(r)?l||n.classes.push("cancel-pad"):r==="angl"?n.classes.push("anglpad"):n.classes.push("boxpad");var w=0,S=0,k=0;/box/.test(r)?(k=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),w=e.fontMetrics().fboxsep+(r==="colorbox"?0:k),S=w):r==="angl"?(k=Math.max(e.fontMetrics().defaultRuleThickness,e.minRuleThickness),w=4*k,S=Math.max(0,.25-n.depth)):(w=l?.2:0,S=w),i=Ul.encloseSpan(n,r,w,S,e),/fbox|boxed|fcolorbox/.test(r)?(i.style.borderStyle="solid",i.style.borderWidth=Xe(k)):r==="angl"&&k!==.049&&(i.style.borderTopWidth=Xe(k),i.style.borderRightWidth=Xe(k)),a=n.depth+S,t.backgroundColor&&(i.style.backgroundColor=t.backgroundColor,t.borderColor&&(i.style.borderColor=t.borderColor))}var j;if(t.backgroundColor)j=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:a},{type:"elem",elem:n,shift:0}]},e);else{var N=/cancel|phase/.test(r)?["svg-align"]:[];j=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:0},{type:"elem",elem:i,shift:a,wrapperClasses:N}]},e)}return/cancel/.test(r)&&(j.height=n.height,j.depth=n.depth),/cancel/.test(r)&&!l?be.makeSpan(["mord","cancel-lap"],[j],e):be.makeSpan(["mord"],[j],e)},PN=(t,e)=>{var n=0,r=new qe.MathNode(t.label.indexOf("colorbox")>-1?"mpadded":"menclose",[lr(t.body,e)]);switch(t.label){case"\\cancel":r.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":r.setAttribute("notation","downdiagonalstrike");break;case"\\phase":r.setAttribute("notation","phasorangle");break;case"\\sout":r.setAttribute("notation","horizontalstrike");break;case"\\fbox":r.setAttribute("notation","box");break;case"\\angl":r.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(n=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,r.setAttribute("width","+"+2*n+"pt"),r.setAttribute("height","+"+2*n+"pt"),r.setAttribute("lspace",n+"pt"),r.setAttribute("voffset",n+"pt"),t.label==="\\fcolorbox"){var s=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);r.setAttribute("style","border: "+s+"em solid "+String(t.borderColor))}break;case"\\xcancel":r.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return t.backgroundColor&&r.setAttribute("mathbackground",t.backgroundColor),r};tt({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(t,e,n){var{parser:r,funcName:s}=t,i=en(e[0],"color-token").color,a=e[1];return{type:"enclose",mode:r.mode,label:s,backgroundColor:i,body:a}},htmlBuilder:DN,mathmlBuilder:PN});tt({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(t,e,n){var{parser:r,funcName:s}=t,i=en(e[0],"color-token").color,a=en(e[1],"color-token").color,l=e[2];return{type:"enclose",mode:r.mode,label:s,backgroundColor:a,borderColor:i,body:l}},htmlBuilder:DN,mathmlBuilder:PN});tt({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"enclose",mode:n.mode,label:"\\fbox",body:e[0]}}});tt({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];return{type:"enclose",mode:n.mode,label:r,body:s}},htmlBuilder:DN,mathmlBuilder:PN});tt({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(t,e){var{parser:n}=t;return{type:"enclose",mode:n.mode,label:"\\angl",body:e[0]}}});var jU={};function Vo(t){for(var{type:e,names:n,props:r,handler:s,htmlBuilder:i,mathmlBuilder:a}=t,l={type:e,numArgs:r.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:s},c=0;c{var e=t.parser.settings;if(!e.displayMode)throw new $e("{"+t.envName+"} can be used only in display mode.")};function zN(t){if(t.indexOf("ed")===-1)return t.indexOf("*")===-1}function du(t,e,n){var{hskipBeforeAndAfter:r,addJot:s,cols:i,arraystretch:a,colSeparationType:l,autoTag:c,singleRow:d,emptySingleRow:h,maxNumCols:m,leqno:g}=e;if(t.gullet.beginGroup(),d||t.gullet.macros.set("\\cr","\\\\\\relax"),!a){var x=t.gullet.expandMacroAsText("\\arraystretch");if(x==null)a=1;else if(a=parseFloat(x),!a||a<0)throw new $e("Invalid \\arraystretch: "+x)}t.gullet.beginGroup();var y=[],w=[y],S=[],k=[],j=c!=null?[]:void 0;function N(){c&&t.gullet.macros.set("\\@eqnsw","1",!0)}function T(){j&&(t.gullet.macros.get("\\df@tag")?(j.push(t.subparse([new Xi("\\df@tag")])),t.gullet.macros.set("\\df@tag",void 0,!0)):j.push(!!c&&t.gullet.macros.get("\\@eqnsw")==="1"))}for(N(),k.push(NR(t));;){var E=t.parseExpression(!1,d?"\\end":"\\\\");t.gullet.endGroup(),t.gullet.beginGroup(),E={type:"ordgroup",mode:t.mode,body:E},n&&(E={type:"styling",mode:t.mode,style:n,body:[E]}),y.push(E);var _=t.fetch().text;if(_==="&"){if(m&&y.length===m){if(d||l)throw new $e("Too many tab characters: &",t.nextToken);t.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}t.consume()}else if(_==="\\end"){T(),y.length===1&&E.type==="styling"&&E.body[0].body.length===0&&(w.length>1||!h)&&w.pop(),k.length0&&(N+=.25),d.push({pos:N,isDashed:He[Ot]})}for(T(a[0]),r=0;r0&&($+=j,A<$&&(A=$),$=0)),e.addJot&&(A+=w),L.height=_,L.depth=A,N+=_,L.pos=N,N+=A+$,c[r]=L,T(a[r+1])}var U=N/2+n.fontMetrics().axisHeight,te=e.cols||[],z=[],Q,F,Y=[];if(e.tags&&e.tags.some(He=>He))for(r=0;r=l)){var W=void 0;(s>0||e.hskipBeforeAndAfter)&&(W=$n.deflt(G.pregap,g),W!==0&&(Q=be.makeSpan(["arraycolsep"],[]),Q.style.width=Xe(W),z.push(Q)));var se=[];for(r=0;r0){for(var We=be.makeLineSpan("hline",n,h),Ye=be.makeLineSpan("hdashline",n,h),Je=[{type:"elem",elem:c,shift:0}];d.length>0;){var Oe=d.pop(),Ve=Oe.pos-U;Oe.isDashed?Je.push({type:"elem",elem:Ye,shift:Ve}):Je.push({type:"elem",elem:We,shift:Ve})}c=be.makeVList({positionType:"individualShift",children:Je},n)}if(Y.length===0)return be.makeSpan(["mord"],[c],n);var Ue=be.makeVList({positionType:"individualShift",children:Y},n);return Ue=be.makeSpan(["tag"],[Ue],n),be.makeFragment([c,Ue])},rke={c:"center ",l:"left ",r:"right "},Wo=function(e,n){for(var r=[],s=new qe.MathNode("mtd",[],["mtr-glue"]),i=new qe.MathNode("mtd",[],["mml-eqn-num"]),a=0;a0){var y=e.cols,w="",S=!1,k=0,j=y.length;y[0].type==="separator"&&(g+="top ",k=1),y[y.length-1].type==="separator"&&(g+="bottom ",j-=1);for(var N=k;N0?"left ":"",g+=L[L.length-1].length>0?"right ":"";for(var P=1;P-1?"alignat":"align",i=e.envName==="split",a=du(e.parser,{cols:r,addJot:!0,autoTag:i?void 0:zN(e.envName),emptySingleRow:!0,colSeparationType:s,maxNumCols:i?2:void 0,leqno:e.parser.settings.leqno},"display"),l,c=0,d={type:"ordgroup",mode:e.mode,body:[]};if(n[0]&&n[0].type==="ordgroup"){for(var h="",m=0;m0&&x&&(S=1),r[y]={type:"align",align:w,pregap:S,postgap:0}}return a.colSeparationType=x?"align":"alignat",a};Vo({type:"array",names:["array","darray"],props:{numArgs:1},handler(t,e){var n=Hb(e[0]),r=n?[e[0]]:en(e[0],"ordgroup").body,s=r.map(function(a){var l=AN(a),c=l.text;if("lcr".indexOf(c)!==-1)return{type:"align",align:c};if(c==="|")return{type:"separator",separator:"|"};if(c===":")return{type:"separator",separator:":"};throw new $e("Unknown column alignment: "+c,a)}),i={cols:s,hskipBeforeAndAfter:!0,maxNumCols:s.length};return du(t.parser,i,IN(t.envName))},htmlBuilder:Uo,mathmlBuilder:Wo});Vo({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName.replace("*","")],n="c",r={hskipBeforeAndAfter:!1,cols:[{type:"align",align:n}]};if(t.envName.charAt(t.envName.length-1)==="*"){var s=t.parser;if(s.consumeSpaces(),s.fetch().text==="["){if(s.consume(),s.consumeSpaces(),n=s.fetch().text,"lcr".indexOf(n)===-1)throw new $e("Expected l or c or r",s.nextToken);s.consume(),s.consumeSpaces(),s.expect("]"),s.consume(),r.cols=[{type:"align",align:n}]}}var i=du(t.parser,r,IN(t.envName)),a=Math.max(0,...i.body.map(l=>l.length));return i.cols=new Array(a).fill({type:"align",align:n}),e?{type:"leftright",mode:t.mode,body:[i],left:e[0],right:e[1],rightColor:void 0}:i},htmlBuilder:Uo,mathmlBuilder:Wo});Vo({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(t){var e={arraystretch:.5},n=du(t.parser,e,"script");return n.colSeparationType="small",n},htmlBuilder:Uo,mathmlBuilder:Wo});Vo({type:"array",names:["subarray"],props:{numArgs:1},handler(t,e){var n=Hb(e[0]),r=n?[e[0]]:en(e[0],"ordgroup").body,s=r.map(function(a){var l=AN(a),c=l.text;if("lc".indexOf(c)!==-1)return{type:"align",align:c};throw new $e("Unknown column alignment: "+c,a)});if(s.length>1)throw new $e("{subarray} can contain only one column");var i={cols:s,hskipBeforeAndAfter:!1,arraystretch:.5};if(i=du(t.parser,i,"script"),i.body.length>0&&i.body[0].length>1)throw new $e("{subarray} can contain only one column");return i},htmlBuilder:Uo,mathmlBuilder:Wo});Vo({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(t){var e={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},n=du(t.parser,e,IN(t.envName));return{type:"leftright",mode:t.mode,body:[n],left:t.envName.indexOf("r")>-1?".":"\\{",right:t.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:Uo,mathmlBuilder:Wo});Vo({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:CU,htmlBuilder:Uo,mathmlBuilder:Wo});Vo({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(t){["gather","gather*"].includes(t.envName)&&Ub(t);var e={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:zN(t.envName),emptySingleRow:!0,leqno:t.parser.settings.leqno};return du(t.parser,e,"display")},htmlBuilder:Uo,mathmlBuilder:Wo});Vo({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:CU,htmlBuilder:Uo,mathmlBuilder:Wo});Vo({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(t){Ub(t);var e={autoTag:zN(t.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:t.parser.settings.leqno};return du(t.parser,e,"display")},htmlBuilder:Uo,mathmlBuilder:Wo});Vo({type:"array",names:["CD"],props:{numArgs:0},handler(t){return Ub(t),H3e(t.parser)},htmlBuilder:Uo,mathmlBuilder:Wo});Z("\\nonumber","\\gdef\\@eqnsw{0}");Z("\\notag","\\nonumber");tt({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(t,e){throw new $e(t.funcName+" valid only within array environment")}});var CR=jU;tt({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];if(s.type!=="ordgroup")throw new $e("Invalid environment name",s);for(var i="",a=0;a{var n=t.font,r=e.withFont(n);return Pn(t.body,r)},EU=(t,e)=>{var n=t.font,r=e.withFont(n);return lr(t.body,r)},TR={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};tt({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=Ny(e[0]),i=r;return i in TR&&(i=TR[i]),{type:"font",mode:n.mode,font:i.slice(1),body:s}},htmlBuilder:TU,mathmlBuilder:EU});tt({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(t,e)=>{var{parser:n}=t,r=e[0],s=$n.isCharacterBox(r);return{type:"mclass",mode:n.mode,mclass:Qb(r),body:[{type:"font",mode:n.mode,font:"boldsymbol",body:r}],isCharacterBox:s}}});tt({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(t,e)=>{var{parser:n,funcName:r,breakOnTokenText:s}=t,{mode:i}=n,a=n.parseExpression(!0,s),l="math"+r.slice(1);return{type:"font",mode:i,font:l,body:{type:"ordgroup",mode:n.mode,body:a}}},htmlBuilder:TU,mathmlBuilder:EU});var _U=(t,e)=>{var n=e;return t==="display"?n=n.id>=Et.SCRIPT.id?n.text():Et.DISPLAY:t==="text"&&n.size===Et.DISPLAY.size?n=Et.TEXT:t==="script"?n=Et.SCRIPT:t==="scriptscript"&&(n=Et.SCRIPTSCRIPT),n},LN=(t,e)=>{var n=_U(t.size,e.style),r=n.fracNum(),s=n.fracDen(),i;i=e.havingStyle(r);var a=Pn(t.numer,i,e);if(t.continued){var l=8.5/e.fontMetrics().ptPerEm,c=3.5/e.fontMetrics().ptPerEm;a.height=a.height0?y=3*g:y=7*g,w=e.fontMetrics().denom1):(m>0?(x=e.fontMetrics().num2,y=g):(x=e.fontMetrics().num3,y=3*g),w=e.fontMetrics().denom2);var S;if(h){var j=e.fontMetrics().axisHeight;x-a.depth-(j+.5*m){var n=new qe.MathNode("mfrac",[lr(t.numer,e),lr(t.denom,e)]);if(!t.hasBarLine)n.setAttribute("linethickness","0px");else if(t.barSize){var r=Rr(t.barSize,e);n.setAttribute("linethickness",Xe(r))}var s=_U(t.size,e.style);if(s.size!==e.style.size){n=new qe.MathNode("mstyle",[n]);var i=s.size===Et.DISPLAY.size?"true":"false";n.setAttribute("displaystyle",i),n.setAttribute("scriptlevel","0")}if(t.leftDelim!=null||t.rightDelim!=null){var a=[];if(t.leftDelim!=null){var l=new qe.MathNode("mo",[new qe.TextNode(t.leftDelim.replace("\\",""))]);l.setAttribute("fence","true"),a.push(l)}if(a.push(n),t.rightDelim!=null){var c=new qe.MathNode("mo",[new qe.TextNode(t.rightDelim.replace("\\",""))]);c.setAttribute("fence","true"),a.push(c)}return EN(a)}return n};tt({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0],i=e[1],a,l=null,c=null,d="auto";switch(r){case"\\dfrac":case"\\frac":case"\\tfrac":a=!0;break;case"\\\\atopfrac":a=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":a=!1,l="(",c=")";break;case"\\\\bracefrac":a=!1,l="\\{",c="\\}";break;case"\\\\brackfrac":a=!1,l="[",c="]";break;default:throw new Error("Unrecognized genfrac command")}switch(r){case"\\dfrac":case"\\dbinom":d="display";break;case"\\tfrac":case"\\tbinom":d="text";break}return{type:"genfrac",mode:n.mode,continued:!1,numer:s,denom:i,hasBarLine:a,leftDelim:l,rightDelim:c,size:d,barSize:null}},htmlBuilder:LN,mathmlBuilder:BN});tt({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0],i=e[1];return{type:"genfrac",mode:n.mode,continued:!0,numer:s,denom:i,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}}});tt({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(t){var{parser:e,funcName:n,token:r}=t,s;switch(n){case"\\over":s="\\frac";break;case"\\choose":s="\\binom";break;case"\\atop":s="\\\\atopfrac";break;case"\\brace":s="\\\\bracefrac";break;case"\\brack":s="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:s,token:r}}});var ER=["display","text","script","scriptscript"],_R=function(e){var n=null;return e.length>0&&(n=e,n=n==="."?null:n),n};tt({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(t,e){var{parser:n}=t,r=e[4],s=e[5],i=Ny(e[0]),a=i.type==="atom"&&i.family==="open"?_R(i.text):null,l=Ny(e[1]),c=l.type==="atom"&&l.family==="close"?_R(l.text):null,d=en(e[2],"size"),h,m=null;d.isBlank?h=!0:(m=d.value,h=m.number>0);var g="auto",x=e[3];if(x.type==="ordgroup"){if(x.body.length>0){var y=en(x.body[0],"textord");g=ER[Number(y.text)]}}else x=en(x,"textord"),g=ER[Number(x.text)];return{type:"genfrac",mode:n.mode,numer:r,denom:s,continued:!1,hasBarLine:h,barSize:m,leftDelim:a,rightDelim:c,size:g}},htmlBuilder:LN,mathmlBuilder:BN});tt({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(t,e){var{parser:n,funcName:r,token:s}=t;return{type:"infix",mode:n.mode,replaceWith:"\\\\abovefrac",size:en(e[0],"size").value,token:s}}});tt({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0],i=R5e(en(e[1],"infix").size),a=e[2],l=i.number>0;return{type:"genfrac",mode:n.mode,numer:s,denom:a,continued:!1,hasBarLine:l,barSize:i,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:LN,mathmlBuilder:BN});var AU=(t,e)=>{var n=e.style,r,s;t.type==="supsub"?(r=t.sup?Pn(t.sup,e.havingStyle(n.sup()),e):Pn(t.sub,e.havingStyle(n.sub()),e),s=en(t.base,"horizBrace")):s=en(t,"horizBrace");var i=Pn(s.base,e.havingBaseStyle(Et.DISPLAY)),a=Ul.svgSpan(s,e),l;if(s.isOver?(l=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:.1},{type:"elem",elem:a}]},e),l.children[0].children[0].children[1].classes.push("svg-align")):(l=be.makeVList({positionType:"bottom",positionData:i.depth+.1+a.height,children:[{type:"elem",elem:a},{type:"kern",size:.1},{type:"elem",elem:i}]},e),l.children[0].children[0].children[0].classes.push("svg-align")),r){var c=be.makeSpan(["mord",s.isOver?"mover":"munder"],[l],e);s.isOver?l=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:c},{type:"kern",size:.2},{type:"elem",elem:r}]},e):l=be.makeVList({positionType:"bottom",positionData:c.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:c}]},e)}return be.makeSpan(["mord",s.isOver?"mover":"munder"],[l],e)},ske=(t,e)=>{var n=Ul.mathMLnode(t.label);return new qe.MathNode(t.isOver?"mover":"munder",[lr(t.base,e),n])};tt({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:r}=t;return{type:"horizBrace",mode:n.mode,label:r,isOver:/^\\over/.test(r),base:e[0]}},htmlBuilder:AU,mathmlBuilder:ske});tt({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[1],s=en(e[0],"url").url;return n.settings.isTrusted({command:"\\href",url:s})?{type:"href",mode:n.mode,href:s,body:Qr(r)}:n.formatUnsupportedCmd("\\href")},htmlBuilder:(t,e)=>{var n=fs(t.body,e,!1);return be.makeAnchor(t.href,[],n,e)},mathmlBuilder:(t,e)=>{var n=nu(t.body,e);return n instanceof Qi||(n=new Qi("mrow",[n])),n.setAttribute("href",t.href),n}});tt({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=en(e[0],"url").url;if(!n.settings.isTrusted({command:"\\url",url:r}))return n.formatUnsupportedCmd("\\url");for(var s=[],i=0;i{var{parser:n,funcName:r,token:s}=t,i=en(e[0],"raw").string,a=e[1];n.settings.strict&&n.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var l,c={};switch(r){case"\\htmlClass":c.class=i,l={command:"\\htmlClass",class:i};break;case"\\htmlId":c.id=i,l={command:"\\htmlId",id:i};break;case"\\htmlStyle":c.style=i,l={command:"\\htmlStyle",style:i};break;case"\\htmlData":{for(var d=i.split(","),h=0;h{var n=fs(t.body,e,!1),r=["enclosing"];t.attributes.class&&r.push(...t.attributes.class.trim().split(/\s+/));var s=be.makeSpan(r,n,e);for(var i in t.attributes)i!=="class"&&t.attributes.hasOwnProperty(i)&&s.setAttribute(i,t.attributes[i]);return s},mathmlBuilder:(t,e)=>nu(t.body,e)});tt({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t;return{type:"htmlmathml",mode:n.mode,html:Qr(e[0]),mathml:Qr(e[1])}},htmlBuilder:(t,e)=>{var n=fs(t.html,e,!1);return be.makeFragment(n)},mathmlBuilder:(t,e)=>nu(t.mathml,e)});var n5=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var n=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!n)throw new $e("Invalid size: '"+e+"' in \\includegraphics");var r={number:+(n[1]+n[2]),unit:n[3]};if(!YV(r))throw new $e("Invalid unit: '"+r.unit+"' in \\includegraphics.");return r};tt({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(t,e,n)=>{var{parser:r}=t,s={number:0,unit:"em"},i={number:.9,unit:"em"},a={number:0,unit:"em"},l="";if(n[0])for(var c=en(n[0],"raw").string,d=c.split(","),h=0;h{var n=Rr(t.height,e),r=0;t.totalheight.number>0&&(r=Rr(t.totalheight,e)-n);var s=0;t.width.number>0&&(s=Rr(t.width,e));var i={height:Xe(n+r)};s>0&&(i.width=Xe(s)),r>0&&(i.verticalAlign=Xe(-r));var a=new s3e(t.src,t.alt,i);return a.height=n,a.depth=r,a},mathmlBuilder:(t,e)=>{var n=new qe.MathNode("mglyph",[]);n.setAttribute("alt",t.alt);var r=Rr(t.height,e),s=0;if(t.totalheight.number>0&&(s=Rr(t.totalheight,e)-r,n.setAttribute("valign",Xe(-s))),n.setAttribute("height",Xe(r+s)),t.width.number>0){var i=Rr(t.width,e);n.setAttribute("width",Xe(i))}return n.setAttribute("src",t.src),n}});tt({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(t,e){var{parser:n,funcName:r}=t,s=en(e[0],"size");if(n.settings.strict){var i=r[1]==="m",a=s.value.unit==="mu";i?(a||n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" supports only mu units, "+("not "+s.value.unit+" units")),n.mode!=="math"&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" works only in math mode")):a&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" doesn't support mu units")}return{type:"kern",mode:n.mode,dimension:s.value}},htmlBuilder(t,e){return be.makeGlue(t.dimension,e)},mathmlBuilder(t,e){var n=Rr(t.dimension,e);return new qe.SpaceNode(n)}});tt({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0];return{type:"lap",mode:n.mode,alignment:r.slice(5),body:s}},htmlBuilder:(t,e)=>{var n;t.alignment==="clap"?(n=be.makeSpan([],[Pn(t.body,e)]),n=be.makeSpan(["inner"],[n],e)):n=be.makeSpan(["inner"],[Pn(t.body,e)]);var r=be.makeSpan(["fix"],[]),s=be.makeSpan([t.alignment],[n,r],e),i=be.makeSpan(["strut"]);return i.style.height=Xe(s.height+s.depth),s.depth&&(i.style.verticalAlign=Xe(-s.depth)),s.children.unshift(i),s=be.makeSpan(["thinbox"],[s],e),be.makeSpan(["mord","vbox"],[s],e)},mathmlBuilder:(t,e)=>{var n=new qe.MathNode("mpadded",[lr(t.body,e)]);if(t.alignment!=="rlap"){var r=t.alignment==="llap"?"-1":"-0.5";n.setAttribute("lspace",r+"width")}return n.setAttribute("width","0px"),n}});tt({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){var{funcName:n,parser:r}=t,s=r.mode;r.switchMode("math");var i=n==="\\("?"\\)":"$",a=r.parseExpression(!1,i);return r.expect(i),r.switchMode(s),{type:"styling",mode:r.mode,style:"text",body:a}}});tt({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){throw new $e("Mismatched "+t.funcName)}});var AR=(t,e)=>{switch(e.style.size){case Et.DISPLAY.size:return t.display;case Et.TEXT.size:return t.text;case Et.SCRIPT.size:return t.script;case Et.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}};tt({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(t,e)=>{var{parser:n}=t;return{type:"mathchoice",mode:n.mode,display:Qr(e[0]),text:Qr(e[1]),script:Qr(e[2]),scriptscript:Qr(e[3])}},htmlBuilder:(t,e)=>{var n=AR(t,e),r=fs(n,e,!1);return be.makeFragment(r)},mathmlBuilder:(t,e)=>{var n=AR(t,e);return nu(n,e)}});var MU=(t,e,n,r,s,i,a)=>{t=be.makeSpan([],[t]);var l=n&&$n.isCharacterBox(n),c,d;if(e){var h=Pn(e,r.havingStyle(s.sup()),r);d={elem:h,kern:Math.max(r.fontMetrics().bigOpSpacing1,r.fontMetrics().bigOpSpacing3-h.depth)}}if(n){var m=Pn(n,r.havingStyle(s.sub()),r);c={elem:m,kern:Math.max(r.fontMetrics().bigOpSpacing2,r.fontMetrics().bigOpSpacing4-m.height)}}var g;if(d&&c){var x=r.fontMetrics().bigOpSpacing5+c.elem.height+c.elem.depth+c.kern+t.depth+a;g=be.makeVList({positionType:"bottom",positionData:x,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:c.elem,marginLeft:Xe(-i)},{type:"kern",size:c.kern},{type:"elem",elem:t},{type:"kern",size:d.kern},{type:"elem",elem:d.elem,marginLeft:Xe(i)},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else if(c){var y=t.height-a;g=be.makeVList({positionType:"top",positionData:y,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:c.elem,marginLeft:Xe(-i)},{type:"kern",size:c.kern},{type:"elem",elem:t}]},r)}else if(d){var w=t.depth+a;g=be.makeVList({positionType:"bottom",positionData:w,children:[{type:"elem",elem:t},{type:"kern",size:d.kern},{type:"elem",elem:d.elem,marginLeft:Xe(i)},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else return t;var S=[g];if(c&&i!==0&&!l){var k=be.makeSpan(["mspace"],[],r);k.style.marginRight=Xe(i),S.unshift(k)}return be.makeSpan(["mop","op-limits"],S,r)},RU=["\\smallint"],$f=(t,e)=>{var n,r,s=!1,i;t.type==="supsub"?(n=t.sup,r=t.sub,i=en(t.base,"op"),s=!0):i=en(t,"op");var a=e.style,l=!1;a.size===Et.DISPLAY.size&&i.symbol&&!RU.includes(i.name)&&(l=!0);var c;if(i.symbol){var d=l?"Size2-Regular":"Size1-Regular",h="";if((i.name==="\\oiint"||i.name==="\\oiiint")&&(h=i.name.slice(1),i.name=h==="oiint"?"\\iint":"\\iiint"),c=be.makeSymbol(i.name,d,"math",e,["mop","op-symbol",l?"large-op":"small-op"]),h.length>0){var m=c.italic,g=be.staticSvg(h+"Size"+(l?"2":"1"),e);c=be.makeVList({positionType:"individualShift",children:[{type:"elem",elem:c,shift:0},{type:"elem",elem:g,shift:l?.08:0}]},e),i.name="\\"+h,c.classes.unshift("mop"),c.italic=m}}else if(i.body){var x=fs(i.body,e,!0);x.length===1&&x[0]instanceof Aa?(c=x[0],c.classes[0]="mop"):c=be.makeSpan(["mop"],x,e)}else{for(var y=[],w=1;w{var n;if(t.symbol)n=new Qi("mo",[Ma(t.name,t.mode)]),RU.includes(t.name)&&n.setAttribute("largeop","false");else if(t.body)n=new Qi("mo",_i(t.body,e));else{n=new Qi("mi",[new Ao(t.name.slice(1))]);var r=new Qi("mo",[Ma("⁡","text")]);t.parentIsSupSub?n=new Qi("mrow",[n,r]):n=oU([n,r])}return n},ike={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"};tt({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=r;return s.length===1&&(s=ike[s]),{type:"op",mode:n.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:s}},htmlBuilder:$f,mathmlBuilder:gg});tt({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"op",mode:n.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:Qr(r)}},htmlBuilder:$f,mathmlBuilder:gg});var ake={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"};tt({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(t){var{parser:e,funcName:n}=t;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:$f,mathmlBuilder:gg});tt({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(t){var{parser:e,funcName:n}=t;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:$f,mathmlBuilder:gg});tt({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],props:{numArgs:0},handler(t){var{parser:e,funcName:n}=t,r=n;return r.length===1&&(r=ake[r]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:r}},htmlBuilder:$f,mathmlBuilder:gg});var DU=(t,e)=>{var n,r,s=!1,i;t.type==="supsub"?(n=t.sup,r=t.sub,i=en(t.base,"operatorname"),s=!0):i=en(t,"operatorname");var a;if(i.body.length>0){for(var l=i.body.map(m=>{var g=m.text;return typeof g=="string"?{type:"textord",mode:m.mode,text:g}:m}),c=fs(l,e.withFont("mathrm"),!0),d=0;d{for(var n=_i(t.body,e.withFont("mathrm")),r=!0,s=0;sh.toText()).join("");n=[new qe.TextNode(l)]}var c=new qe.MathNode("mi",n);c.setAttribute("mathvariant","normal");var d=new qe.MathNode("mo",[Ma("⁡","text")]);return t.parentIsSupSub?new qe.MathNode("mrow",[c,d]):qe.newDocumentFragment([c,d])};tt({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0];return{type:"operatorname",mode:n.mode,body:Qr(s),alwaysHandleSupSub:r==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},htmlBuilder:DU,mathmlBuilder:oke});Z("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");Sd({type:"ordgroup",htmlBuilder(t,e){return t.semisimple?be.makeFragment(fs(t.body,e,!1)):be.makeSpan(["mord"],fs(t.body,e,!0),e)},mathmlBuilder(t,e){return nu(t.body,e,!0)}});tt({type:"overline",names:["\\overline"],props:{numArgs:1},handler(t,e){var{parser:n}=t,r=e[0];return{type:"overline",mode:n.mode,body:r}},htmlBuilder(t,e){var n=Pn(t.body,e.havingCrampedStyle()),r=be.makeLineSpan("overline-line",e),s=e.fontMetrics().defaultRuleThickness,i=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n},{type:"kern",size:3*s},{type:"elem",elem:r},{type:"kern",size:s}]},e);return be.makeSpan(["mord","overline"],[i],e)},mathmlBuilder(t,e){var n=new qe.MathNode("mo",[new qe.TextNode("‾")]);n.setAttribute("stretchy","true");var r=new qe.MathNode("mover",[lr(t.body,e),n]);return r.setAttribute("accent","true"),r}});tt({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"phantom",mode:n.mode,body:Qr(r)}},htmlBuilder:(t,e)=>{var n=fs(t.body,e.withPhantom(),!1);return be.makeFragment(n)},mathmlBuilder:(t,e)=>{var n=_i(t.body,e);return new qe.MathNode("mphantom",n)}});tt({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"hphantom",mode:n.mode,body:r}},htmlBuilder:(t,e)=>{var n=be.makeSpan([],[Pn(t.body,e.withPhantom())]);if(n.height=0,n.depth=0,n.children)for(var r=0;r{var n=_i(Qr(t.body),e),r=new qe.MathNode("mphantom",n),s=new qe.MathNode("mpadded",[r]);return s.setAttribute("height","0px"),s.setAttribute("depth","0px"),s}});tt({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"vphantom",mode:n.mode,body:r}},htmlBuilder:(t,e)=>{var n=be.makeSpan(["inner"],[Pn(t.body,e.withPhantom())]),r=be.makeSpan(["fix"],[]);return be.makeSpan(["mord","rlap"],[n,r],e)},mathmlBuilder:(t,e)=>{var n=_i(Qr(t.body),e),r=new qe.MathNode("mphantom",n),s=new qe.MathNode("mpadded",[r]);return s.setAttribute("width","0px"),s}});tt({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(t,e){var{parser:n}=t,r=en(e[0],"size").value,s=e[1];return{type:"raisebox",mode:n.mode,dy:r,body:s}},htmlBuilder(t,e){var n=Pn(t.body,e),r=Rr(t.dy,e);return be.makeVList({positionType:"shift",positionData:-r,children:[{type:"elem",elem:n}]},e)},mathmlBuilder(t,e){var n=new qe.MathNode("mpadded",[lr(t.body,e)]),r=t.dy.number+t.dy.unit;return n.setAttribute("voffset",r),n}});tt({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(t){var{parser:e}=t;return{type:"internal",mode:e.mode}}});tt({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(t,e,n){var{parser:r}=t,s=n[0],i=en(e[0],"size"),a=en(e[1],"size");return{type:"rule",mode:r.mode,shift:s&&en(s,"size").value,width:i.value,height:a.value}},htmlBuilder(t,e){var n=be.makeSpan(["mord","rule"],[],e),r=Rr(t.width,e),s=Rr(t.height,e),i=t.shift?Rr(t.shift,e):0;return n.style.borderRightWidth=Xe(r),n.style.borderTopWidth=Xe(s),n.style.bottom=Xe(i),n.width=r,n.height=s+i,n.depth=-i,n.maxFontSize=s*1.125*e.sizeMultiplier,n},mathmlBuilder(t,e){var n=Rr(t.width,e),r=Rr(t.height,e),s=t.shift?Rr(t.shift,e):0,i=e.color&&e.getColor()||"black",a=new qe.MathNode("mspace");a.setAttribute("mathbackground",i),a.setAttribute("width",Xe(n)),a.setAttribute("height",Xe(r));var l=new qe.MathNode("mpadded",[a]);return s>=0?l.setAttribute("height",Xe(s)):(l.setAttribute("height",Xe(s)),l.setAttribute("depth",Xe(-s))),l.setAttribute("voffset",Xe(s)),l}});function PU(t,e,n){for(var r=fs(t,e,!1),s=e.sizeMultiplier/n.sizeMultiplier,i=0;i{var n=e.havingSize(t.size);return PU(t.body,n,e)};tt({type:"sizing",names:MR,props:{numArgs:0,allowedInText:!0},handler:(t,e)=>{var{breakOnTokenText:n,funcName:r,parser:s}=t,i=s.parseExpression(!1,n);return{type:"sizing",mode:s.mode,size:MR.indexOf(r)+1,body:i}},htmlBuilder:lke,mathmlBuilder:(t,e)=>{var n=e.havingSize(t.size),r=_i(t.body,n),s=new qe.MathNode("mstyle",r);return s.setAttribute("mathsize",Xe(n.sizeMultiplier)),s}});tt({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(t,e,n)=>{var{parser:r}=t,s=!1,i=!1,a=n[0]&&en(n[0],"ordgroup");if(a)for(var l="",c=0;c{var n=be.makeSpan([],[Pn(t.body,e)]);if(!t.smashHeight&&!t.smashDepth)return n;if(t.smashHeight&&(n.height=0,n.children))for(var r=0;r{var n=new qe.MathNode("mpadded",[lr(t.body,e)]);return t.smashHeight&&n.setAttribute("height","0px"),t.smashDepth&&n.setAttribute("depth","0px"),n}});tt({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,n){var{parser:r}=t,s=n[0],i=e[0];return{type:"sqrt",mode:r.mode,body:i,index:s}},htmlBuilder(t,e){var n=Pn(t.body,e.havingCrampedStyle());n.height===0&&(n.height=e.fontMetrics().xHeight),n=be.wrapFragment(n,e);var r=e.fontMetrics(),s=r.defaultRuleThickness,i=s;e.style.idn.height+n.depth+a&&(a=(a+m-n.height-n.depth)/2);var g=c.height-n.height-a-d;n.style.paddingLeft=Xe(h);var x=be.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:-(n.height+g)},{type:"elem",elem:c},{type:"kern",size:d}]},e);if(t.index){var y=e.havingStyle(Et.SCRIPTSCRIPT),w=Pn(t.index,y,e),S=.6*(x.height-x.depth),k=be.makeVList({positionType:"shift",positionData:-S,children:[{type:"elem",elem:w}]},e),j=be.makeSpan(["root"],[k]);return be.makeSpan(["mord","sqrt"],[j,x],e)}else return be.makeSpan(["mord","sqrt"],[x],e)},mathmlBuilder(t,e){var{body:n,index:r}=t;return r?new qe.MathNode("mroot",[lr(n,e),lr(r,e)]):new qe.MathNode("msqrt",[lr(n,e)])}});var RR={display:Et.DISPLAY,text:Et.TEXT,script:Et.SCRIPT,scriptscript:Et.SCRIPTSCRIPT};tt({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t,e){var{breakOnTokenText:n,funcName:r,parser:s}=t,i=s.parseExpression(!0,n),a=r.slice(1,r.length-5);return{type:"styling",mode:s.mode,style:a,body:i}},htmlBuilder(t,e){var n=RR[t.style],r=e.havingStyle(n).withFont("");return PU(t.body,r,e)},mathmlBuilder(t,e){var n=RR[t.style],r=e.havingStyle(n),s=_i(t.body,r),i=new qe.MathNode("mstyle",s),a={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},l=a[t.style];return i.setAttribute("scriptlevel",l[0]),i.setAttribute("displaystyle",l[1]),i}});var cke=function(e,n){var r=e.base;if(r)if(r.type==="op"){var s=r.limits&&(n.style.size===Et.DISPLAY.size||r.alwaysHandleSupSub);return s?$f:null}else if(r.type==="operatorname"){var i=r.alwaysHandleSupSub&&(n.style.size===Et.DISPLAY.size||r.limits);return i?DU:null}else{if(r.type==="accent")return $n.isCharacterBox(r.base)?MN:null;if(r.type==="horizBrace"){var a=!e.sub;return a===r.isOver?AU:null}else return null}else return null};Sd({type:"supsub",htmlBuilder(t,e){var n=cke(t,e);if(n)return n(t,e);var{base:r,sup:s,sub:i}=t,a=Pn(r,e),l,c,d=e.fontMetrics(),h=0,m=0,g=r&&$n.isCharacterBox(r);if(s){var x=e.havingStyle(e.style.sup());l=Pn(s,x,e),g||(h=a.height-x.fontMetrics().supDrop*x.sizeMultiplier/e.sizeMultiplier)}if(i){var y=e.havingStyle(e.style.sub());c=Pn(i,y,e),g||(m=a.depth+y.fontMetrics().subDrop*y.sizeMultiplier/e.sizeMultiplier)}var w;e.style===Et.DISPLAY?w=d.sup1:e.style.cramped?w=d.sup3:w=d.sup2;var S=e.sizeMultiplier,k=Xe(.5/d.ptPerEm/S),j=null;if(c){var N=t.base&&t.base.type==="op"&&t.base.name&&(t.base.name==="\\oiint"||t.base.name==="\\oiiint");(a instanceof Aa||N)&&(j=Xe(-a.italic))}var T;if(l&&c){h=Math.max(h,w,l.depth+.25*d.xHeight),m=Math.max(m,d.sub2);var E=d.defaultRuleThickness,_=4*E;if(h-l.depth-(c.height-m)<_){m=_-(h-l.depth)+c.height;var A=.8*d.xHeight-(h-l.depth);A>0&&(h+=A,m-=A)}var L=[{type:"elem",elem:c,shift:m,marginRight:k,marginLeft:j},{type:"elem",elem:l,shift:-h,marginRight:k}];T=be.makeVList({positionType:"individualShift",children:L},e)}else if(c){m=Math.max(m,d.sub1,c.height-.8*d.xHeight);var P=[{type:"elem",elem:c,marginLeft:j,marginRight:k}];T=be.makeVList({positionType:"shift",positionData:m,children:P},e)}else if(l)h=Math.max(h,w,l.depth+.25*d.xHeight),T=be.makeVList({positionType:"shift",positionData:-h,children:[{type:"elem",elem:l,marginRight:k}]},e);else throw new Error("supsub must have either sup or sub.");var B=$O(a,"right")||"mord";return be.makeSpan([B],[a,be.makeSpan(["msupsub"],[T])],e)},mathmlBuilder(t,e){var n=!1,r,s;t.base&&t.base.type==="horizBrace"&&(s=!!t.sup,s===t.base.isOver&&(n=!0,r=t.base.isOver)),t.base&&(t.base.type==="op"||t.base.type==="operatorname")&&(t.base.parentIsSupSub=!0);var i=[lr(t.base,e)];t.sub&&i.push(lr(t.sub,e)),t.sup&&i.push(lr(t.sup,e));var a;if(n)a=r?"mover":"munder";else if(t.sub)if(t.sup){var d=t.base;d&&d.type==="op"&&d.limits&&e.style===Et.DISPLAY||d&&d.type==="operatorname"&&d.alwaysHandleSupSub&&(e.style===Et.DISPLAY||d.limits)?a="munderover":a="msubsup"}else{var c=t.base;c&&c.type==="op"&&c.limits&&(e.style===Et.DISPLAY||c.alwaysHandleSupSub)||c&&c.type==="operatorname"&&c.alwaysHandleSupSub&&(c.limits||e.style===Et.DISPLAY)?a="munder":a="msub"}else{var l=t.base;l&&l.type==="op"&&l.limits&&(e.style===Et.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||e.style===Et.DISPLAY)?a="mover":a="msup"}return new qe.MathNode(a,i)}});Sd({type:"atom",htmlBuilder(t,e){return be.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder(t,e){var n=new qe.MathNode("mo",[Ma(t.text,t.mode)]);if(t.family==="bin"){var r=_N(t,e);r==="bold-italic"&&n.setAttribute("mathvariant",r)}else t.family==="punct"?n.setAttribute("separator","true"):(t.family==="open"||t.family==="close")&&n.setAttribute("stretchy","false");return n}});var zU={mi:"italic",mn:"normal",mtext:"normal"};Sd({type:"mathord",htmlBuilder(t,e){return be.makeOrd(t,e,"mathord")},mathmlBuilder(t,e){var n=new qe.MathNode("mi",[Ma(t.text,t.mode,e)]),r=_N(t,e)||"italic";return r!==zU[n.type]&&n.setAttribute("mathvariant",r),n}});Sd({type:"textord",htmlBuilder(t,e){return be.makeOrd(t,e,"textord")},mathmlBuilder(t,e){var n=Ma(t.text,t.mode,e),r=_N(t,e)||"normal",s;return t.mode==="text"?s=new qe.MathNode("mtext",[n]):/[0-9]/.test(t.text)?s=new qe.MathNode("mn",[n]):t.text==="\\prime"?s=new qe.MathNode("mo",[n]):s=new qe.MathNode("mi",[n]),r!==zU[s.type]&&s.setAttribute("mathvariant",r),s}});var r5={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},s5={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};Sd({type:"spacing",htmlBuilder(t,e){if(s5.hasOwnProperty(t.text)){var n=s5[t.text].className||"";if(t.mode==="text"){var r=be.makeOrd(t,e,"textord");return r.classes.push(n),r}else return be.makeSpan(["mspace",n],[be.mathsym(t.text,t.mode,e)],e)}else{if(r5.hasOwnProperty(t.text))return be.makeSpan(["mspace",r5[t.text]],[],e);throw new $e('Unknown type of space "'+t.text+'"')}},mathmlBuilder(t,e){var n;if(s5.hasOwnProperty(t.text))n=new qe.MathNode("mtext",[new qe.TextNode(" ")]);else{if(r5.hasOwnProperty(t.text))return new qe.MathNode("mspace");throw new $e('Unknown type of space "'+t.text+'"')}return n}});var DR=()=>{var t=new qe.MathNode("mtd",[]);return t.setAttribute("width","50%"),t};Sd({type:"tag",mathmlBuilder(t,e){var n=new qe.MathNode("mtable",[new qe.MathNode("mtr",[DR(),new qe.MathNode("mtd",[nu(t.body,e)]),DR(),new qe.MathNode("mtd",[nu(t.tag,e)])])]);return n.setAttribute("width","100%"),n}});var PR={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},zR={"\\textbf":"textbf","\\textmd":"textmd"},uke={"\\textit":"textit","\\textup":"textup"},IR=(t,e)=>{var n=t.font;if(n){if(PR[n])return e.withTextFontFamily(PR[n]);if(zR[n])return e.withTextFontWeight(zR[n]);if(n==="\\emph")return e.fontShape==="textit"?e.withTextFontShape("textup"):e.withTextFontShape("textit")}else return e;return e.withTextFontShape(uke[n])};tt({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];return{type:"text",mode:n.mode,body:Qr(s),font:r}},htmlBuilder(t,e){var n=IR(t,e),r=fs(t.body,n,!0);return be.makeSpan(["mord","text"],r,n)},mathmlBuilder(t,e){var n=IR(t,e);return nu(t.body,n)}});tt({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"underline",mode:n.mode,body:e[0]}},htmlBuilder(t,e){var n=Pn(t.body,e),r=be.makeLineSpan("underline-line",e),s=e.fontMetrics().defaultRuleThickness,i=be.makeVList({positionType:"top",positionData:n.height,children:[{type:"kern",size:s},{type:"elem",elem:r},{type:"kern",size:3*s},{type:"elem",elem:n}]},e);return be.makeSpan(["mord","underline"],[i],e)},mathmlBuilder(t,e){var n=new qe.MathNode("mo",[new qe.TextNode("‾")]);n.setAttribute("stretchy","true");var r=new qe.MathNode("munder",[lr(t.body,e),n]);return r.setAttribute("accentunder","true"),r}});tt({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(t,e){var{parser:n}=t;return{type:"vcenter",mode:n.mode,body:e[0]}},htmlBuilder(t,e){var n=Pn(t.body,e),r=e.fontMetrics().axisHeight,s=.5*(n.height-r-(n.depth+r));return be.makeVList({positionType:"shift",positionData:s,children:[{type:"elem",elem:n}]},e)},mathmlBuilder(t,e){return new qe.MathNode("mpadded",[lr(t.body,e)],["vcenter"])}});tt({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,e,n){throw new $e("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(t,e){for(var n=LR(t),r=[],s=e.havingStyle(e.style.text()),i=0;it.body.replace(/ /g,t.star?"␣":" "),qc=iU,IU=`[ \r - ]`,dke="\\\\[a-zA-Z@]+",hke="\\\\[^\uD800-\uDFFF]",fke="("+dke+")"+IU+"*",mke=`\\\\( +-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}};class yg{constructor(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return this.classes.includes(e)}toNode(){for(var e=document.createDocumentFragment(),n=0;nn.toText();return this.children.map(e).join("")}}var Mo={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},z1={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},xR={Å:"A",Ð:"D",Þ:"o",å:"a",ð:"d",þ:"o",А:"A",Б:"B",В:"B",Г:"F",Д:"A",Е:"E",Ж:"K",З:"3",И:"N",Й:"N",К:"K",Л:"N",М:"M",Н:"H",О:"O",П:"N",Р:"P",С:"C",Т:"T",У:"y",Ф:"O",Х:"X",Ц:"U",Ч:"h",Ш:"W",Щ:"W",Ъ:"B",Ы:"X",Ь:"B",Э:"3",Ю:"X",Я:"R",а:"a",б:"b",в:"a",г:"r",д:"y",е:"e",ж:"m",з:"e",и:"n",й:"n",к:"n",л:"n",м:"m",н:"n",о:"o",п:"n",р:"p",с:"c",т:"o",у:"y",ф:"b",х:"x",ц:"n",ч:"n",ш:"w",щ:"w",ъ:"a",ы:"m",ь:"a",э:"e",ю:"m",я:"r"};function r3e(t,e){Mo[t]=e}function MN(t,e,n){if(!Mo[e])throw new Error("Font metrics not found for font: "+e+".");var r=t.charCodeAt(0),s=Mo[e][r];if(!s&&t[0]in xR&&(r=xR[t[0]].charCodeAt(0),s=Mo[e][r]),!s&&n==="text"&&JV(r)&&(s=Mo[e][77]),s)return{depth:s[0],height:s[1],italic:s[2],skew:s[3],width:s[4]}}var XS={};function s3e(t){var e;if(t>=5?e=0:t>=3?e=1:e=2,!XS[e]){var n=XS[e]={cssEmPerMu:z1.quad[e]/18};for(var r in z1)z1.hasOwnProperty(r)&&(n[r]=z1[r][e])}return XS[e]}var i3e=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],vR=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],yR=function(e,n){return n.size<2?e:i3e[e-1][n.size-1]};class Al{constructor(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||Al.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=vR[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var n={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);return new Al(n)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:yR(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:vR[e-1]})}havingBaseStyle(e){e=e||this.style.text();var n=yR(Al.BASESIZE,e);return this.size===n&&this.textSize===Al.BASESIZE&&this.style===e?this:this.extend({style:e,size:n})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==Al.BASESIZE?["sizing","reset-size"+this.size,"size"+Al.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=s3e(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}Al.BASESIZE=6;var $O={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},a3e={ex:!0,em:!0,mu:!0},eU=function(e){return typeof e!="string"&&(e=e.unit),e in $O||e in a3e||e==="ex"},Ir=function(e,n){var r;if(e.unit in $O)r=$O[e.unit]/n.fontMetrics().ptPerEm/n.sizeMultiplier;else if(e.unit==="mu")r=n.fontMetrics().cssEmPerMu;else{var s;if(n.style.isTight()?s=n.havingStyle(n.style.text()):s=n,e.unit==="ex")r=s.fontMetrics().xHeight;else if(e.unit==="em")r=s.fontMetrics().quad;else throw new qe("Invalid unit: '"+e.unit+"'");s!==n&&(r*=s.sizeMultiplier/n.sizeMultiplier)}return Math.min(e.number*r,n.maxSize)},Xe=function(e){return+e.toFixed(4)+"em"},ru=function(e){return e.filter(n=>n).join(" ")},tU=function(e,n,r){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},n){n.style.isTight()&&this.classes.push("mtight");var s=n.getColor();s&&(this.style.color=s)}},nU=function(e){var n=document.createElement(e);n.className=ru(this.classes);for(var r in this.style)this.style.hasOwnProperty(r)&&(n.style[r]=this.style[r]);for(var s in this.attributes)this.attributes.hasOwnProperty(s)&&n.setAttribute(s,this.attributes[s]);for(var i=0;i/=\x00-\x1f]/,rU=function(e){var n="<"+e;this.classes.length&&(n+=' class="'+Wn.escape(ru(this.classes))+'"');var r="";for(var s in this.style)this.style.hasOwnProperty(s)&&(r+=Wn.hyphenate(s)+":"+this.style[s]+";");r&&(n+=' style="'+Wn.escape(r)+'"');for(var i in this.attributes)if(this.attributes.hasOwnProperty(i)){if(o3e.test(i))throw new qe("Invalid attribute name '"+i+"'");n+=" "+i+'="'+Wn.escape(this.attributes[i])+'"'}n+=">";for(var a=0;a",n};class bg{constructor(e,n,r,s){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,tU.call(this,e,r,s),this.children=n||[]}setAttribute(e,n){this.attributes[e]=n}hasClass(e){return this.classes.includes(e)}toNode(){return nU.call(this,"span")}toMarkup(){return rU.call(this,"span")}}class RN{constructor(e,n,r,s){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,tU.call(this,n,s),this.children=r||[],this.setAttribute("href",e)}setAttribute(e,n){this.attributes[e]=n}hasClass(e){return this.classes.includes(e)}toNode(){return nU.call(this,"a")}toMarkup(){return rU.call(this,"a")}}class l3e{constructor(e,n,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=n,this.src=e,this.classes=["mord"],this.style=r}hasClass(e){return this.classes.includes(e)}toNode(){var e=document.createElement("img");e.src=this.src,e.alt=this.alt,e.className="mord";for(var n in this.style)this.style.hasOwnProperty(n)&&(e.style[n]=this.style[n]);return e}toMarkup(){var e=''+Wn.escape(this.alt)+'0&&(n=document.createElement("span"),n.style.marginRight=Xe(this.italic)),this.classes.length>0&&(n=n||document.createElement("span"),n.className=ru(this.classes));for(var r in this.style)this.style.hasOwnProperty(r)&&(n=n||document.createElement("span"),n.style[r]=this.style[r]);return n?(n.appendChild(e),n):e}toMarkup(){var e=!1,n="0&&(r+="margin-right:"+this.italic+"em;");for(var s in this.style)this.style.hasOwnProperty(s)&&(r+=Wn.hyphenate(s)+":"+this.style[s]+";");r&&(e=!0,n+=' style="'+Wn.escape(r)+'"');var i=Wn.escape(this.text);return e?(n+=">",n+=i,n+="",n):i}}class Ul{constructor(e,n){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=n||{}}toNode(){var e="http://www.w3.org/2000/svg",n=document.createElementNS(e,"svg");for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&n.setAttribute(r,this.attributes[r]);for(var s=0;s':''}}class HO{constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e="http://www.w3.org/2000/svg",n=document.createElementNS(e,"line");for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&n.setAttribute(r,this.attributes[r]);return n}toMarkup(){var e=" but got "+String(t)+".")}var d3e={bin:1,close:1,inner:1,open:1,punct:1,rel:1},h3e={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},pr={math:{},text:{}};function M(t,e,n,r,s,i){pr[t][s]={font:e,group:n,replace:r},i&&r&&(pr[t][r]=pr[t][s])}var P="math",Le="text",Q="main",le="ams",_r="accent-token",it="bin",li="close",$f="inner",_t="mathord",os="op-token",ra="open",Vb="punct",ce="rel",tc="spacing",me="textord";M(P,Q,ce,"≡","\\equiv",!0);M(P,Q,ce,"≺","\\prec",!0);M(P,Q,ce,"≻","\\succ",!0);M(P,Q,ce,"∼","\\sim",!0);M(P,Q,ce,"⊥","\\perp");M(P,Q,ce,"⪯","\\preceq",!0);M(P,Q,ce,"⪰","\\succeq",!0);M(P,Q,ce,"≃","\\simeq",!0);M(P,Q,ce,"∣","\\mid",!0);M(P,Q,ce,"≪","\\ll",!0);M(P,Q,ce,"≫","\\gg",!0);M(P,Q,ce,"≍","\\asymp",!0);M(P,Q,ce,"∥","\\parallel");M(P,Q,ce,"⋈","\\bowtie",!0);M(P,Q,ce,"⌣","\\smile",!0);M(P,Q,ce,"⊑","\\sqsubseteq",!0);M(P,Q,ce,"⊒","\\sqsupseteq",!0);M(P,Q,ce,"≐","\\doteq",!0);M(P,Q,ce,"⌢","\\frown",!0);M(P,Q,ce,"∋","\\ni",!0);M(P,Q,ce,"∝","\\propto",!0);M(P,Q,ce,"⊢","\\vdash",!0);M(P,Q,ce,"⊣","\\dashv",!0);M(P,Q,ce,"∋","\\owns");M(P,Q,Vb,".","\\ldotp");M(P,Q,Vb,"⋅","\\cdotp");M(P,Q,me,"#","\\#");M(Le,Q,me,"#","\\#");M(P,Q,me,"&","\\&");M(Le,Q,me,"&","\\&");M(P,Q,me,"ℵ","\\aleph",!0);M(P,Q,me,"∀","\\forall",!0);M(P,Q,me,"ℏ","\\hbar",!0);M(P,Q,me,"∃","\\exists",!0);M(P,Q,me,"∇","\\nabla",!0);M(P,Q,me,"♭","\\flat",!0);M(P,Q,me,"ℓ","\\ell",!0);M(P,Q,me,"♮","\\natural",!0);M(P,Q,me,"♣","\\clubsuit",!0);M(P,Q,me,"℘","\\wp",!0);M(P,Q,me,"♯","\\sharp",!0);M(P,Q,me,"♢","\\diamondsuit",!0);M(P,Q,me,"ℜ","\\Re",!0);M(P,Q,me,"♡","\\heartsuit",!0);M(P,Q,me,"ℑ","\\Im",!0);M(P,Q,me,"♠","\\spadesuit",!0);M(P,Q,me,"§","\\S",!0);M(Le,Q,me,"§","\\S");M(P,Q,me,"¶","\\P",!0);M(Le,Q,me,"¶","\\P");M(P,Q,me,"†","\\dag");M(Le,Q,me,"†","\\dag");M(Le,Q,me,"†","\\textdagger");M(P,Q,me,"‡","\\ddag");M(Le,Q,me,"‡","\\ddag");M(Le,Q,me,"‡","\\textdaggerdbl");M(P,Q,li,"⎱","\\rmoustache",!0);M(P,Q,ra,"⎰","\\lmoustache",!0);M(P,Q,li,"⟯","\\rgroup",!0);M(P,Q,ra,"⟮","\\lgroup",!0);M(P,Q,it,"∓","\\mp",!0);M(P,Q,it,"⊖","\\ominus",!0);M(P,Q,it,"⊎","\\uplus",!0);M(P,Q,it,"⊓","\\sqcap",!0);M(P,Q,it,"∗","\\ast");M(P,Q,it,"⊔","\\sqcup",!0);M(P,Q,it,"◯","\\bigcirc",!0);M(P,Q,it,"∙","\\bullet",!0);M(P,Q,it,"‡","\\ddagger");M(P,Q,it,"≀","\\wr",!0);M(P,Q,it,"⨿","\\amalg");M(P,Q,it,"&","\\And");M(P,Q,ce,"⟵","\\longleftarrow",!0);M(P,Q,ce,"⇐","\\Leftarrow",!0);M(P,Q,ce,"⟸","\\Longleftarrow",!0);M(P,Q,ce,"⟶","\\longrightarrow",!0);M(P,Q,ce,"⇒","\\Rightarrow",!0);M(P,Q,ce,"⟹","\\Longrightarrow",!0);M(P,Q,ce,"↔","\\leftrightarrow",!0);M(P,Q,ce,"⟷","\\longleftrightarrow",!0);M(P,Q,ce,"⇔","\\Leftrightarrow",!0);M(P,Q,ce,"⟺","\\Longleftrightarrow",!0);M(P,Q,ce,"↦","\\mapsto",!0);M(P,Q,ce,"⟼","\\longmapsto",!0);M(P,Q,ce,"↗","\\nearrow",!0);M(P,Q,ce,"↩","\\hookleftarrow",!0);M(P,Q,ce,"↪","\\hookrightarrow",!0);M(P,Q,ce,"↘","\\searrow",!0);M(P,Q,ce,"↼","\\leftharpoonup",!0);M(P,Q,ce,"⇀","\\rightharpoonup",!0);M(P,Q,ce,"↙","\\swarrow",!0);M(P,Q,ce,"↽","\\leftharpoondown",!0);M(P,Q,ce,"⇁","\\rightharpoondown",!0);M(P,Q,ce,"↖","\\nwarrow",!0);M(P,Q,ce,"⇌","\\rightleftharpoons",!0);M(P,le,ce,"≮","\\nless",!0);M(P,le,ce,"","\\@nleqslant");M(P,le,ce,"","\\@nleqq");M(P,le,ce,"⪇","\\lneq",!0);M(P,le,ce,"≨","\\lneqq",!0);M(P,le,ce,"","\\@lvertneqq");M(P,le,ce,"⋦","\\lnsim",!0);M(P,le,ce,"⪉","\\lnapprox",!0);M(P,le,ce,"⊀","\\nprec",!0);M(P,le,ce,"⋠","\\npreceq",!0);M(P,le,ce,"⋨","\\precnsim",!0);M(P,le,ce,"⪹","\\precnapprox",!0);M(P,le,ce,"≁","\\nsim",!0);M(P,le,ce,"","\\@nshortmid");M(P,le,ce,"∤","\\nmid",!0);M(P,le,ce,"⊬","\\nvdash",!0);M(P,le,ce,"⊭","\\nvDash",!0);M(P,le,ce,"⋪","\\ntriangleleft");M(P,le,ce,"⋬","\\ntrianglelefteq",!0);M(P,le,ce,"⊊","\\subsetneq",!0);M(P,le,ce,"","\\@varsubsetneq");M(P,le,ce,"⫋","\\subsetneqq",!0);M(P,le,ce,"","\\@varsubsetneqq");M(P,le,ce,"≯","\\ngtr",!0);M(P,le,ce,"","\\@ngeqslant");M(P,le,ce,"","\\@ngeqq");M(P,le,ce,"⪈","\\gneq",!0);M(P,le,ce,"≩","\\gneqq",!0);M(P,le,ce,"","\\@gvertneqq");M(P,le,ce,"⋧","\\gnsim",!0);M(P,le,ce,"⪊","\\gnapprox",!0);M(P,le,ce,"⊁","\\nsucc",!0);M(P,le,ce,"⋡","\\nsucceq",!0);M(P,le,ce,"⋩","\\succnsim",!0);M(P,le,ce,"⪺","\\succnapprox",!0);M(P,le,ce,"≆","\\ncong",!0);M(P,le,ce,"","\\@nshortparallel");M(P,le,ce,"∦","\\nparallel",!0);M(P,le,ce,"⊯","\\nVDash",!0);M(P,le,ce,"⋫","\\ntriangleright");M(P,le,ce,"⋭","\\ntrianglerighteq",!0);M(P,le,ce,"","\\@nsupseteqq");M(P,le,ce,"⊋","\\supsetneq",!0);M(P,le,ce,"","\\@varsupsetneq");M(P,le,ce,"⫌","\\supsetneqq",!0);M(P,le,ce,"","\\@varsupsetneqq");M(P,le,ce,"⊮","\\nVdash",!0);M(P,le,ce,"⪵","\\precneqq",!0);M(P,le,ce,"⪶","\\succneqq",!0);M(P,le,ce,"","\\@nsubseteqq");M(P,le,it,"⊴","\\unlhd");M(P,le,it,"⊵","\\unrhd");M(P,le,ce,"↚","\\nleftarrow",!0);M(P,le,ce,"↛","\\nrightarrow",!0);M(P,le,ce,"⇍","\\nLeftarrow",!0);M(P,le,ce,"⇏","\\nRightarrow",!0);M(P,le,ce,"↮","\\nleftrightarrow",!0);M(P,le,ce,"⇎","\\nLeftrightarrow",!0);M(P,le,ce,"△","\\vartriangle");M(P,le,me,"ℏ","\\hslash");M(P,le,me,"▽","\\triangledown");M(P,le,me,"◊","\\lozenge");M(P,le,me,"Ⓢ","\\circledS");M(P,le,me,"®","\\circledR");M(Le,le,me,"®","\\circledR");M(P,le,me,"∡","\\measuredangle",!0);M(P,le,me,"∄","\\nexists");M(P,le,me,"℧","\\mho");M(P,le,me,"Ⅎ","\\Finv",!0);M(P,le,me,"⅁","\\Game",!0);M(P,le,me,"‵","\\backprime");M(P,le,me,"▲","\\blacktriangle");M(P,le,me,"▼","\\blacktriangledown");M(P,le,me,"■","\\blacksquare");M(P,le,me,"⧫","\\blacklozenge");M(P,le,me,"★","\\bigstar");M(P,le,me,"∢","\\sphericalangle",!0);M(P,le,me,"∁","\\complement",!0);M(P,le,me,"ð","\\eth",!0);M(Le,Q,me,"ð","ð");M(P,le,me,"╱","\\diagup");M(P,le,me,"╲","\\diagdown");M(P,le,me,"□","\\square");M(P,le,me,"□","\\Box");M(P,le,me,"◊","\\Diamond");M(P,le,me,"¥","\\yen",!0);M(Le,le,me,"¥","\\yen",!0);M(P,le,me,"✓","\\checkmark",!0);M(Le,le,me,"✓","\\checkmark");M(P,le,me,"ℶ","\\beth",!0);M(P,le,me,"ℸ","\\daleth",!0);M(P,le,me,"ℷ","\\gimel",!0);M(P,le,me,"ϝ","\\digamma",!0);M(P,le,me,"ϰ","\\varkappa");M(P,le,ra,"┌","\\@ulcorner",!0);M(P,le,li,"┐","\\@urcorner",!0);M(P,le,ra,"└","\\@llcorner",!0);M(P,le,li,"┘","\\@lrcorner",!0);M(P,le,ce,"≦","\\leqq",!0);M(P,le,ce,"⩽","\\leqslant",!0);M(P,le,ce,"⪕","\\eqslantless",!0);M(P,le,ce,"≲","\\lesssim",!0);M(P,le,ce,"⪅","\\lessapprox",!0);M(P,le,ce,"≊","\\approxeq",!0);M(P,le,it,"⋖","\\lessdot");M(P,le,ce,"⋘","\\lll",!0);M(P,le,ce,"≶","\\lessgtr",!0);M(P,le,ce,"⋚","\\lesseqgtr",!0);M(P,le,ce,"⪋","\\lesseqqgtr",!0);M(P,le,ce,"≑","\\doteqdot");M(P,le,ce,"≓","\\risingdotseq",!0);M(P,le,ce,"≒","\\fallingdotseq",!0);M(P,le,ce,"∽","\\backsim",!0);M(P,le,ce,"⋍","\\backsimeq",!0);M(P,le,ce,"⫅","\\subseteqq",!0);M(P,le,ce,"⋐","\\Subset",!0);M(P,le,ce,"⊏","\\sqsubset",!0);M(P,le,ce,"≼","\\preccurlyeq",!0);M(P,le,ce,"⋞","\\curlyeqprec",!0);M(P,le,ce,"≾","\\precsim",!0);M(P,le,ce,"⪷","\\precapprox",!0);M(P,le,ce,"⊲","\\vartriangleleft");M(P,le,ce,"⊴","\\trianglelefteq");M(P,le,ce,"⊨","\\vDash",!0);M(P,le,ce,"⊪","\\Vvdash",!0);M(P,le,ce,"⌣","\\smallsmile");M(P,le,ce,"⌢","\\smallfrown");M(P,le,ce,"≏","\\bumpeq",!0);M(P,le,ce,"≎","\\Bumpeq",!0);M(P,le,ce,"≧","\\geqq",!0);M(P,le,ce,"⩾","\\geqslant",!0);M(P,le,ce,"⪖","\\eqslantgtr",!0);M(P,le,ce,"≳","\\gtrsim",!0);M(P,le,ce,"⪆","\\gtrapprox",!0);M(P,le,it,"⋗","\\gtrdot");M(P,le,ce,"⋙","\\ggg",!0);M(P,le,ce,"≷","\\gtrless",!0);M(P,le,ce,"⋛","\\gtreqless",!0);M(P,le,ce,"⪌","\\gtreqqless",!0);M(P,le,ce,"≖","\\eqcirc",!0);M(P,le,ce,"≗","\\circeq",!0);M(P,le,ce,"≜","\\triangleq",!0);M(P,le,ce,"∼","\\thicksim");M(P,le,ce,"≈","\\thickapprox");M(P,le,ce,"⫆","\\supseteqq",!0);M(P,le,ce,"⋑","\\Supset",!0);M(P,le,ce,"⊐","\\sqsupset",!0);M(P,le,ce,"≽","\\succcurlyeq",!0);M(P,le,ce,"⋟","\\curlyeqsucc",!0);M(P,le,ce,"≿","\\succsim",!0);M(P,le,ce,"⪸","\\succapprox",!0);M(P,le,ce,"⊳","\\vartriangleright");M(P,le,ce,"⊵","\\trianglerighteq");M(P,le,ce,"⊩","\\Vdash",!0);M(P,le,ce,"∣","\\shortmid");M(P,le,ce,"∥","\\shortparallel");M(P,le,ce,"≬","\\between",!0);M(P,le,ce,"⋔","\\pitchfork",!0);M(P,le,ce,"∝","\\varpropto");M(P,le,ce,"◀","\\blacktriangleleft");M(P,le,ce,"∴","\\therefore",!0);M(P,le,ce,"∍","\\backepsilon");M(P,le,ce,"▶","\\blacktriangleright");M(P,le,ce,"∵","\\because",!0);M(P,le,ce,"⋘","\\llless");M(P,le,ce,"⋙","\\gggtr");M(P,le,it,"⊲","\\lhd");M(P,le,it,"⊳","\\rhd");M(P,le,ce,"≂","\\eqsim",!0);M(P,Q,ce,"⋈","\\Join");M(P,le,ce,"≑","\\Doteq",!0);M(P,le,it,"∔","\\dotplus",!0);M(P,le,it,"∖","\\smallsetminus");M(P,le,it,"⋒","\\Cap",!0);M(P,le,it,"⋓","\\Cup",!0);M(P,le,it,"⩞","\\doublebarwedge",!0);M(P,le,it,"⊟","\\boxminus",!0);M(P,le,it,"⊞","\\boxplus",!0);M(P,le,it,"⋇","\\divideontimes",!0);M(P,le,it,"⋉","\\ltimes",!0);M(P,le,it,"⋊","\\rtimes",!0);M(P,le,it,"⋋","\\leftthreetimes",!0);M(P,le,it,"⋌","\\rightthreetimes",!0);M(P,le,it,"⋏","\\curlywedge",!0);M(P,le,it,"⋎","\\curlyvee",!0);M(P,le,it,"⊝","\\circleddash",!0);M(P,le,it,"⊛","\\circledast",!0);M(P,le,it,"⋅","\\centerdot");M(P,le,it,"⊺","\\intercal",!0);M(P,le,it,"⋒","\\doublecap");M(P,le,it,"⋓","\\doublecup");M(P,le,it,"⊠","\\boxtimes",!0);M(P,le,ce,"⇢","\\dashrightarrow",!0);M(P,le,ce,"⇠","\\dashleftarrow",!0);M(P,le,ce,"⇇","\\leftleftarrows",!0);M(P,le,ce,"⇆","\\leftrightarrows",!0);M(P,le,ce,"⇚","\\Lleftarrow",!0);M(P,le,ce,"↞","\\twoheadleftarrow",!0);M(P,le,ce,"↢","\\leftarrowtail",!0);M(P,le,ce,"↫","\\looparrowleft",!0);M(P,le,ce,"⇋","\\leftrightharpoons",!0);M(P,le,ce,"↶","\\curvearrowleft",!0);M(P,le,ce,"↺","\\circlearrowleft",!0);M(P,le,ce,"↰","\\Lsh",!0);M(P,le,ce,"⇈","\\upuparrows",!0);M(P,le,ce,"↿","\\upharpoonleft",!0);M(P,le,ce,"⇃","\\downharpoonleft",!0);M(P,Q,ce,"⊶","\\origof",!0);M(P,Q,ce,"⊷","\\imageof",!0);M(P,le,ce,"⊸","\\multimap",!0);M(P,le,ce,"↭","\\leftrightsquigarrow",!0);M(P,le,ce,"⇉","\\rightrightarrows",!0);M(P,le,ce,"⇄","\\rightleftarrows",!0);M(P,le,ce,"↠","\\twoheadrightarrow",!0);M(P,le,ce,"↣","\\rightarrowtail",!0);M(P,le,ce,"↬","\\looparrowright",!0);M(P,le,ce,"↷","\\curvearrowright",!0);M(P,le,ce,"↻","\\circlearrowright",!0);M(P,le,ce,"↱","\\Rsh",!0);M(P,le,ce,"⇊","\\downdownarrows",!0);M(P,le,ce,"↾","\\upharpoonright",!0);M(P,le,ce,"⇂","\\downharpoonright",!0);M(P,le,ce,"⇝","\\rightsquigarrow",!0);M(P,le,ce,"⇝","\\leadsto");M(P,le,ce,"⇛","\\Rrightarrow",!0);M(P,le,ce,"↾","\\restriction");M(P,Q,me,"‘","`");M(P,Q,me,"$","\\$");M(Le,Q,me,"$","\\$");M(Le,Q,me,"$","\\textdollar");M(P,Q,me,"%","\\%");M(Le,Q,me,"%","\\%");M(P,Q,me,"_","\\_");M(Le,Q,me,"_","\\_");M(Le,Q,me,"_","\\textunderscore");M(P,Q,me,"∠","\\angle",!0);M(P,Q,me,"∞","\\infty",!0);M(P,Q,me,"′","\\prime");M(P,Q,me,"△","\\triangle");M(P,Q,me,"Γ","\\Gamma",!0);M(P,Q,me,"Δ","\\Delta",!0);M(P,Q,me,"Θ","\\Theta",!0);M(P,Q,me,"Λ","\\Lambda",!0);M(P,Q,me,"Ξ","\\Xi",!0);M(P,Q,me,"Π","\\Pi",!0);M(P,Q,me,"Σ","\\Sigma",!0);M(P,Q,me,"Υ","\\Upsilon",!0);M(P,Q,me,"Φ","\\Phi",!0);M(P,Q,me,"Ψ","\\Psi",!0);M(P,Q,me,"Ω","\\Omega",!0);M(P,Q,me,"A","Α");M(P,Q,me,"B","Β");M(P,Q,me,"E","Ε");M(P,Q,me,"Z","Ζ");M(P,Q,me,"H","Η");M(P,Q,me,"I","Ι");M(P,Q,me,"K","Κ");M(P,Q,me,"M","Μ");M(P,Q,me,"N","Ν");M(P,Q,me,"O","Ο");M(P,Q,me,"P","Ρ");M(P,Q,me,"T","Τ");M(P,Q,me,"X","Χ");M(P,Q,me,"¬","\\neg",!0);M(P,Q,me,"¬","\\lnot");M(P,Q,me,"⊤","\\top");M(P,Q,me,"⊥","\\bot");M(P,Q,me,"∅","\\emptyset");M(P,le,me,"∅","\\varnothing");M(P,Q,_t,"α","\\alpha",!0);M(P,Q,_t,"β","\\beta",!0);M(P,Q,_t,"γ","\\gamma",!0);M(P,Q,_t,"δ","\\delta",!0);M(P,Q,_t,"ϵ","\\epsilon",!0);M(P,Q,_t,"ζ","\\zeta",!0);M(P,Q,_t,"η","\\eta",!0);M(P,Q,_t,"θ","\\theta",!0);M(P,Q,_t,"ι","\\iota",!0);M(P,Q,_t,"κ","\\kappa",!0);M(P,Q,_t,"λ","\\lambda",!0);M(P,Q,_t,"μ","\\mu",!0);M(P,Q,_t,"ν","\\nu",!0);M(P,Q,_t,"ξ","\\xi",!0);M(P,Q,_t,"ο","\\omicron",!0);M(P,Q,_t,"π","\\pi",!0);M(P,Q,_t,"ρ","\\rho",!0);M(P,Q,_t,"σ","\\sigma",!0);M(P,Q,_t,"τ","\\tau",!0);M(P,Q,_t,"υ","\\upsilon",!0);M(P,Q,_t,"ϕ","\\phi",!0);M(P,Q,_t,"χ","\\chi",!0);M(P,Q,_t,"ψ","\\psi",!0);M(P,Q,_t,"ω","\\omega",!0);M(P,Q,_t,"ε","\\varepsilon",!0);M(P,Q,_t,"ϑ","\\vartheta",!0);M(P,Q,_t,"ϖ","\\varpi",!0);M(P,Q,_t,"ϱ","\\varrho",!0);M(P,Q,_t,"ς","\\varsigma",!0);M(P,Q,_t,"φ","\\varphi",!0);M(P,Q,it,"∗","*",!0);M(P,Q,it,"+","+");M(P,Q,it,"−","-",!0);M(P,Q,it,"⋅","\\cdot",!0);M(P,Q,it,"∘","\\circ",!0);M(P,Q,it,"÷","\\div",!0);M(P,Q,it,"±","\\pm",!0);M(P,Q,it,"×","\\times",!0);M(P,Q,it,"∩","\\cap",!0);M(P,Q,it,"∪","\\cup",!0);M(P,Q,it,"∖","\\setminus",!0);M(P,Q,it,"∧","\\land");M(P,Q,it,"∨","\\lor");M(P,Q,it,"∧","\\wedge",!0);M(P,Q,it,"∨","\\vee",!0);M(P,Q,me,"√","\\surd");M(P,Q,ra,"⟨","\\langle",!0);M(P,Q,ra,"∣","\\lvert");M(P,Q,ra,"∥","\\lVert");M(P,Q,li,"?","?");M(P,Q,li,"!","!");M(P,Q,li,"⟩","\\rangle",!0);M(P,Q,li,"∣","\\rvert");M(P,Q,li,"∥","\\rVert");M(P,Q,ce,"=","=");M(P,Q,ce,":",":");M(P,Q,ce,"≈","\\approx",!0);M(P,Q,ce,"≅","\\cong",!0);M(P,Q,ce,"≥","\\ge");M(P,Q,ce,"≥","\\geq",!0);M(P,Q,ce,"←","\\gets");M(P,Q,ce,">","\\gt",!0);M(P,Q,ce,"∈","\\in",!0);M(P,Q,ce,"","\\@not");M(P,Q,ce,"⊂","\\subset",!0);M(P,Q,ce,"⊃","\\supset",!0);M(P,Q,ce,"⊆","\\subseteq",!0);M(P,Q,ce,"⊇","\\supseteq",!0);M(P,le,ce,"⊈","\\nsubseteq",!0);M(P,le,ce,"⊉","\\nsupseteq",!0);M(P,Q,ce,"⊨","\\models");M(P,Q,ce,"←","\\leftarrow",!0);M(P,Q,ce,"≤","\\le");M(P,Q,ce,"≤","\\leq",!0);M(P,Q,ce,"<","\\lt",!0);M(P,Q,ce,"→","\\rightarrow",!0);M(P,Q,ce,"→","\\to");M(P,le,ce,"≱","\\ngeq",!0);M(P,le,ce,"≰","\\nleq",!0);M(P,Q,tc," ","\\ ");M(P,Q,tc," ","\\space");M(P,Q,tc," ","\\nobreakspace");M(Le,Q,tc," ","\\ ");M(Le,Q,tc," "," ");M(Le,Q,tc," ","\\space");M(Le,Q,tc," ","\\nobreakspace");M(P,Q,tc,null,"\\nobreak");M(P,Q,tc,null,"\\allowbreak");M(P,Q,Vb,",",",");M(P,Q,Vb,";",";");M(P,le,it,"⊼","\\barwedge",!0);M(P,le,it,"⊻","\\veebar",!0);M(P,Q,it,"⊙","\\odot",!0);M(P,Q,it,"⊕","\\oplus",!0);M(P,Q,it,"⊗","\\otimes",!0);M(P,Q,me,"∂","\\partial",!0);M(P,Q,it,"⊘","\\oslash",!0);M(P,le,it,"⊚","\\circledcirc",!0);M(P,le,it,"⊡","\\boxdot",!0);M(P,Q,it,"△","\\bigtriangleup");M(P,Q,it,"▽","\\bigtriangledown");M(P,Q,it,"†","\\dagger");M(P,Q,it,"⋄","\\diamond");M(P,Q,it,"⋆","\\star");M(P,Q,it,"◃","\\triangleleft");M(P,Q,it,"▹","\\triangleright");M(P,Q,ra,"{","\\{");M(Le,Q,me,"{","\\{");M(Le,Q,me,"{","\\textbraceleft");M(P,Q,li,"}","\\}");M(Le,Q,me,"}","\\}");M(Le,Q,me,"}","\\textbraceright");M(P,Q,ra,"{","\\lbrace");M(P,Q,li,"}","\\rbrace");M(P,Q,ra,"[","\\lbrack",!0);M(Le,Q,me,"[","\\lbrack",!0);M(P,Q,li,"]","\\rbrack",!0);M(Le,Q,me,"]","\\rbrack",!0);M(P,Q,ra,"(","\\lparen",!0);M(P,Q,li,")","\\rparen",!0);M(Le,Q,me,"<","\\textless",!0);M(Le,Q,me,">","\\textgreater",!0);M(P,Q,ra,"⌊","\\lfloor",!0);M(P,Q,li,"⌋","\\rfloor",!0);M(P,Q,ra,"⌈","\\lceil",!0);M(P,Q,li,"⌉","\\rceil",!0);M(P,Q,me,"\\","\\backslash");M(P,Q,me,"∣","|");M(P,Q,me,"∣","\\vert");M(Le,Q,me,"|","\\textbar",!0);M(P,Q,me,"∥","\\|");M(P,Q,me,"∥","\\Vert");M(Le,Q,me,"∥","\\textbardbl");M(Le,Q,me,"~","\\textasciitilde");M(Le,Q,me,"\\","\\textbackslash");M(Le,Q,me,"^","\\textasciicircum");M(P,Q,ce,"↑","\\uparrow",!0);M(P,Q,ce,"⇑","\\Uparrow",!0);M(P,Q,ce,"↓","\\downarrow",!0);M(P,Q,ce,"⇓","\\Downarrow",!0);M(P,Q,ce,"↕","\\updownarrow",!0);M(P,Q,ce,"⇕","\\Updownarrow",!0);M(P,Q,os,"∐","\\coprod");M(P,Q,os,"⋁","\\bigvee");M(P,Q,os,"⋀","\\bigwedge");M(P,Q,os,"⨄","\\biguplus");M(P,Q,os,"⋂","\\bigcap");M(P,Q,os,"⋃","\\bigcup");M(P,Q,os,"∫","\\int");M(P,Q,os,"∫","\\intop");M(P,Q,os,"∬","\\iint");M(P,Q,os,"∭","\\iiint");M(P,Q,os,"∏","\\prod");M(P,Q,os,"∑","\\sum");M(P,Q,os,"⨂","\\bigotimes");M(P,Q,os,"⨁","\\bigoplus");M(P,Q,os,"⨀","\\bigodot");M(P,Q,os,"∮","\\oint");M(P,Q,os,"∯","\\oiint");M(P,Q,os,"∰","\\oiiint");M(P,Q,os,"⨆","\\bigsqcup");M(P,Q,os,"∫","\\smallint");M(Le,Q,$f,"…","\\textellipsis");M(P,Q,$f,"…","\\mathellipsis");M(Le,Q,$f,"…","\\ldots",!0);M(P,Q,$f,"…","\\ldots",!0);M(P,Q,$f,"⋯","\\@cdots",!0);M(P,Q,$f,"⋱","\\ddots",!0);M(P,Q,me,"⋮","\\varvdots");M(Le,Q,me,"⋮","\\varvdots");M(P,Q,_r,"ˊ","\\acute");M(P,Q,_r,"ˋ","\\grave");M(P,Q,_r,"¨","\\ddot");M(P,Q,_r,"~","\\tilde");M(P,Q,_r,"ˉ","\\bar");M(P,Q,_r,"˘","\\breve");M(P,Q,_r,"ˇ","\\check");M(P,Q,_r,"^","\\hat");M(P,Q,_r,"⃗","\\vec");M(P,Q,_r,"˙","\\dot");M(P,Q,_r,"˚","\\mathring");M(P,Q,_t,"","\\@imath");M(P,Q,_t,"","\\@jmath");M(P,Q,me,"ı","ı");M(P,Q,me,"ȷ","ȷ");M(Le,Q,me,"ı","\\i",!0);M(Le,Q,me,"ȷ","\\j",!0);M(Le,Q,me,"ß","\\ss",!0);M(Le,Q,me,"æ","\\ae",!0);M(Le,Q,me,"œ","\\oe",!0);M(Le,Q,me,"ø","\\o",!0);M(Le,Q,me,"Æ","\\AE",!0);M(Le,Q,me,"Œ","\\OE",!0);M(Le,Q,me,"Ø","\\O",!0);M(Le,Q,_r,"ˊ","\\'");M(Le,Q,_r,"ˋ","\\`");M(Le,Q,_r,"ˆ","\\^");M(Le,Q,_r,"˜","\\~");M(Le,Q,_r,"ˉ","\\=");M(Le,Q,_r,"˘","\\u");M(Le,Q,_r,"˙","\\.");M(Le,Q,_r,"¸","\\c");M(Le,Q,_r,"˚","\\r");M(Le,Q,_r,"ˇ","\\v");M(Le,Q,_r,"¨",'\\"');M(Le,Q,_r,"˝","\\H");M(Le,Q,_r,"◯","\\textcircled");var sU={"--":!0,"---":!0,"``":!0,"''":!0};M(Le,Q,me,"–","--",!0);M(Le,Q,me,"–","\\textendash");M(Le,Q,me,"—","---",!0);M(Le,Q,me,"—","\\textemdash");M(Le,Q,me,"‘","`",!0);M(Le,Q,me,"‘","\\textquoteleft");M(Le,Q,me,"’","'",!0);M(Le,Q,me,"’","\\textquoteright");M(Le,Q,me,"“","``",!0);M(Le,Q,me,"“","\\textquotedblleft");M(Le,Q,me,"”","''",!0);M(Le,Q,me,"”","\\textquotedblright");M(P,Q,me,"°","\\degree",!0);M(Le,Q,me,"°","\\degree");M(Le,Q,me,"°","\\textdegree",!0);M(P,Q,me,"£","\\pounds");M(P,Q,me,"£","\\mathsterling",!0);M(Le,Q,me,"£","\\pounds");M(Le,Q,me,"£","\\textsterling",!0);M(P,le,me,"✠","\\maltese");M(Le,le,me,"✠","\\maltese");var wR='0123456789/@."';for(var YS=0;YS0)return Ha(i,d,s,n,a.concat(h));if(c){var m,g;if(c==="boldsymbol"){var x=p3e(i,s,n,a,r);m=x.fontName,g=[x.fontClass]}else l?(m=oU[c].fontName,g=[c]):(m=F1(c,n.fontWeight,n.fontShape),g=[c,n.fontWeight,n.fontShape]);if(Ub(i,m,s).metrics)return Ha(i,m,s,n,a.concat(g));if(sU.hasOwnProperty(i)&&m.slice(0,10)==="Typewriter"){for(var y=[],w=0;w{if(ru(t.classes)!==ru(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;if(t.classes.length===1){var n=t.classes[0];if(n==="mbin"||n==="mord")return!1}for(var r in t.style)if(t.style.hasOwnProperty(r)&&t.style[r]!==e.style[r])return!1;for(var s in e.style)if(e.style.hasOwnProperty(s)&&t.style[s]!==e.style[s])return!1;return!0},v3e=t=>{for(var e=0;en&&(n=a.height),a.depth>r&&(r=a.depth),a.maxFontSize>s&&(s=a.maxFontSize)}e.height=n,e.depth=r,e.maxFontSize=s},gi=function(e,n,r,s){var i=new bg(e,n,r,s);return DN(i),i},iU=(t,e,n,r)=>new bg(t,e,n,r),y3e=function(e,n,r){var s=gi([e],[],n);return s.height=Math.max(r||n.fontMetrics().defaultRuleThickness,n.minRuleThickness),s.style.borderBottomWidth=Xe(s.height),s.maxFontSize=1,s},b3e=function(e,n,r,s){var i=new RN(e,n,r,s);return DN(i),i},aU=function(e){var n=new yg(e);return DN(n),n},w3e=function(e,n){return e instanceof yg?gi([],[e],n):e},S3e=function(e){if(e.positionType==="individualShift"){for(var n=e.children,r=[n[0]],s=-n[0].shift-n[0].elem.depth,i=s,a=1;a{var n=gi(["mspace"],[],e),r=Ir(t,e);return n.style.marginRight=Xe(r),n},F1=function(e,n,r){var s="";switch(e){case"amsrm":s="AMS";break;case"textrm":s="Main";break;case"textsf":s="SansSerif";break;case"texttt":s="Typewriter";break;default:s=e}var i;return n==="textbf"&&r==="textit"?i="BoldItalic":n==="textbf"?i="Bold":n==="textit"?i="Italic":i="Regular",s+"-"+i},oU={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},lU={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},j3e=function(e,n){var[r,s,i]=lU[e],a=new su(r),l=new Ul([a],{width:Xe(s),height:Xe(i),style:"width:"+Xe(s),viewBox:"0 0 "+1e3*s+" "+1e3*i,preserveAspectRatio:"xMinYMin"}),c=iU(["overlay"],[l],n);return c.height=i,c.style.height=Xe(i),c.style.width=Xe(s),c},we={fontMap:oU,makeSymbol:Ha,mathsym:m3e,makeSpan:gi,makeSvgSpan:iU,makeLineSpan:y3e,makeAnchor:b3e,makeFragment:aU,wrapFragment:w3e,makeVList:k3e,makeOrd:g3e,makeGlue:O3e,staticSvg:j3e,svgData:lU,tryCombineChars:v3e},Pr={number:3,unit:"mu"},Bu={number:4,unit:"mu"},Sl={number:5,unit:"mu"},N3e={mord:{mop:Pr,mbin:Bu,mrel:Sl,minner:Pr},mop:{mord:Pr,mop:Pr,mrel:Sl,minner:Pr},mbin:{mord:Bu,mop:Bu,mopen:Bu,minner:Bu},mrel:{mord:Sl,mop:Sl,mopen:Sl,minner:Sl},mopen:{},mclose:{mop:Pr,mbin:Bu,mrel:Sl,minner:Pr},mpunct:{mord:Pr,mop:Pr,mrel:Sl,mopen:Pr,mclose:Pr,mpunct:Pr,minner:Pr},minner:{mord:Pr,mop:Pr,mbin:Bu,mrel:Sl,mopen:Pr,mpunct:Pr,minner:Pr}},C3e={mord:{mop:Pr},mop:{mord:Pr,mop:Pr},mbin:{},mrel:{},mopen:{},mclose:{mop:Pr},mpunct:{},minner:{mop:Pr}},cU={},Ey={},_y={};function tt(t){for(var{type:e,names:n,props:r,handler:s,htmlBuilder:i,mathmlBuilder:a}=t,l={type:e,numArgs:r.numArgs,argTypes:r.argTypes,allowedInArgument:!!r.allowedInArgument,allowedInText:!!r.allowedInText,allowedInMath:r.allowedInMath===void 0?!0:r.allowedInMath,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,primitive:!!r.primitive,handler:s},c=0;c{var S=w.classes[0],k=y.classes[0];S==="mbin"&&E3e.includes(k)?w.classes[0]="mord":k==="mbin"&&T3e.includes(S)&&(y.classes[0]="mord")},{node:m},g,x),NR(i,(y,w)=>{var S=VO(w),k=VO(y),j=S&&k?y.hasClass("mtight")?C3e[S][k]:N3e[S][k]:null;if(j)return we.makeGlue(j,d)},{node:m},g,x),i},NR=function t(e,n,r,s,i){s&&e.push(s);for(var a=0;ag=>{e.splice(m+1,0,g),a++})(a)}s&&e.pop()},uU=function(e){return e instanceof yg||e instanceof RN||e instanceof bg&&e.hasClass("enclosing")?e:null},M3e=function t(e,n){var r=uU(e);if(r){var s=r.children;if(s.length){if(n==="right")return t(s[s.length-1],"right");if(n==="left")return t(s[0],"left")}}return e},VO=function(e,n){return e?(n&&(e=M3e(e,n)),A3e[e.classes[0]]||null):null},Sp=function(e,n){var r=["nulldelimiter"].concat(e.baseSizingClasses());return Wl(n.concat(r))},qn=function(e,n,r){if(!e)return Wl();if(Ey[e.type]){var s=Ey[e.type](e,n);if(r&&n.size!==r.size){s=Wl(n.sizingClasses(r),[s],n);var i=n.sizeMultiplier/r.sizeMultiplier;s.height*=i,s.depth*=i}return s}else throw new qe("Got group of unknown type: '"+e.type+"'")};function q1(t,e){var n=Wl(["base"],t,e),r=Wl(["strut"]);return r.style.height=Xe(n.height+n.depth),n.depth&&(r.style.verticalAlign=Xe(-n.depth)),n.children.unshift(r),n}function UO(t,e){var n=null;t.length===1&&t[0].type==="tag"&&(n=t[0].tag,t=t[0].body);var r=ms(t,e,"root"),s;r.length===2&&r[1].hasClass("tag")&&(s=r.pop());for(var i=[],a=[],l=0;l0&&(i.push(q1(a,e)),a=[]),i.push(r[l]));a.length>0&&i.push(q1(a,e));var d;n?(d=q1(ms(n,e,!0)),d.classes=["tag"],i.push(d)):s&&i.push(s);var h=Wl(["katex-html"],i);if(h.setAttribute("aria-hidden","true"),d){var m=d.children[0];m.style.height=Xe(h.height+h.depth),h.depth&&(m.style.verticalAlign=Xe(-h.depth))}return h}function dU(t){return new yg(t)}class Ui{constructor(e,n,r){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=n||[],this.classes=r||[]}setAttribute(e,n){this.attributes[e]=n}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&e.setAttribute(n,this.attributes[n]);this.classes.length>0&&(e.className=ru(this.classes));for(var r=0;r0&&(e+=' class ="'+Wn.escape(ru(this.classes))+'"'),e+=">";for(var r=0;r",e}toText(){return this.children.map(e=>e.toText()).join("")}}class Ro{constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return Wn.escape(this.toText())}toText(){return this.text}}class R3e{constructor(e){this.width=void 0,this.character=void 0,this.width=e,e>=.05555&&e<=.05556?this.character=" ":e>=.1666&&e<=.1667?this.character=" ":e>=.2222&&e<=.2223?this.character=" ":e>=.2777&&e<=.2778?this.character="  ":e>=-.05556&&e<=-.05555?this.character=" ⁣":e>=-.1667&&e<=-.1666?this.character=" ⁣":e>=-.2223&&e<=-.2222?this.character=" ⁣":e>=-.2778&&e<=-.2777?this.character=" ⁣":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",Xe(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}}var Fe={MathNode:Ui,TextNode:Ro,SpaceNode:R3e,newDocumentFragment:dU},Ra=function(e,n,r){return pr[n][e]&&pr[n][e].replace&&e.charCodeAt(0)!==55349&&!(sU.hasOwnProperty(e)&&r&&(r.fontFamily&&r.fontFamily.slice(4,6)==="tt"||r.font&&r.font.slice(4,6)==="tt"))&&(e=pr[n][e].replace),new Fe.TextNode(e)},PN=function(e){return e.length===1?e[0]:new Fe.MathNode("mrow",e)},zN=function(e,n){if(n.fontFamily==="texttt")return"monospace";if(n.fontFamily==="textsf")return n.fontShape==="textit"&&n.fontWeight==="textbf"?"sans-serif-bold-italic":n.fontShape==="textit"?"sans-serif-italic":n.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(n.fontShape==="textit"&&n.fontWeight==="textbf")return"bold-italic";if(n.fontShape==="textit")return"italic";if(n.fontWeight==="textbf")return"bold";var r=n.font;if(!r||r==="mathnormal")return null;var s=e.mode;if(r==="mathit")return"italic";if(r==="boldsymbol")return e.type==="textord"?"bold":"bold-italic";if(r==="mathbf")return"bold";if(r==="mathbb")return"double-struck";if(r==="mathsfit")return"sans-serif-italic";if(r==="mathfrak")return"fraktur";if(r==="mathscr"||r==="mathcal")return"script";if(r==="mathsf")return"sans-serif";if(r==="mathtt")return"monospace";var i=e.text;if(["\\imath","\\jmath"].includes(i))return null;pr[s][i]&&pr[s][i].replace&&(i=pr[s][i].replace);var a=we.fontMap[r].fontName;return MN(i,a,s)?we.fontMap[r].variant:null};function e5(t){if(!t)return!1;if(t.type==="mi"&&t.children.length===1){var e=t.children[0];return e instanceof Ro&&e.text==="."}else if(t.type==="mo"&&t.children.length===1&&t.getAttribute("separator")==="true"&&t.getAttribute("lspace")==="0em"&&t.getAttribute("rspace")==="0em"){var n=t.children[0];return n instanceof Ro&&n.text===","}else return!1}var Mi=function(e,n,r){if(e.length===1){var s=hr(e[0],n);return r&&s instanceof Ui&&s.type==="mo"&&(s.setAttribute("lspace","0em"),s.setAttribute("rspace","0em")),[s]}for(var i=[],a,l=0;l=1&&(a.type==="mn"||e5(a))){var d=c.children[0];d instanceof Ui&&d.type==="mn"&&(d.children=[...a.children,...d.children],i.pop())}else if(a.type==="mi"&&a.children.length===1){var h=a.children[0];if(h instanceof Ro&&h.text==="̸"&&(c.type==="mo"||c.type==="mi"||c.type==="mn")){var m=c.children[0];m instanceof Ro&&m.text.length>0&&(m.text=m.text.slice(0,1)+"̸"+m.text.slice(1),i.pop())}}}i.push(c),a=c}return i},iu=function(e,n,r){return PN(Mi(e,n,r))},hr=function(e,n){if(!e)return new Fe.MathNode("mrow");if(_y[e.type]){var r=_y[e.type](e,n);return r}else throw new qe("Got group of unknown type: '"+e.type+"'")};function CR(t,e,n,r,s){var i=Mi(t,n),a;i.length===1&&i[0]instanceof Ui&&["mrow","mtable"].includes(i[0].type)?a=i[0]:a=new Fe.MathNode("mrow",i);var l=new Fe.MathNode("annotation",[new Fe.TextNode(e)]);l.setAttribute("encoding","application/x-tex");var c=new Fe.MathNode("semantics",[a,l]),d=new Fe.MathNode("math",[c]);d.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),r&&d.setAttribute("display","block");var h=s?"katex":"katex-mathml";return we.makeSpan([h],[d])}var hU=function(e){return new Al({style:e.displayMode?At.DISPLAY:At.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},fU=function(e,n){if(n.displayMode){var r=["katex-display"];n.leqno&&r.push("leqno"),n.fleqn&&r.push("fleqn"),e=we.makeSpan(r,[e])}return e},D3e=function(e,n,r){var s=hU(r),i;if(r.output==="mathml")return CR(e,n,s,r.displayMode,!0);if(r.output==="html"){var a=UO(e,s);i=we.makeSpan(["katex"],[a])}else{var l=CR(e,n,s,r.displayMode,!1),c=UO(e,s);i=we.makeSpan(["katex"],[l,c])}return fU(i,r)},P3e=function(e,n,r){var s=hU(r),i=UO(e,s),a=we.makeSpan(["katex"],[i]);return fU(a,r)},z3e={widehat:"^",widecheck:"ˇ",widetilde:"~",utilde:"~",overleftarrow:"←",underleftarrow:"←",xleftarrow:"←",overrightarrow:"→",underrightarrow:"→",xrightarrow:"→",underbrace:"⏟",overbrace:"⏞",overgroup:"⏠",undergroup:"⏡",overleftrightarrow:"↔",underleftrightarrow:"↔",xleftrightarrow:"↔",Overrightarrow:"⇒",xRightarrow:"⇒",overleftharpoon:"↼",xleftharpoonup:"↼",overrightharpoon:"⇀",xrightharpoonup:"⇀",xLeftarrow:"⇐",xLeftrightarrow:"⇔",xhookleftarrow:"↩",xhookrightarrow:"↪",xmapsto:"↦",xrightharpoondown:"⇁",xleftharpoondown:"↽",xrightleftharpoons:"⇌",xleftrightharpoons:"⇋",xtwoheadleftarrow:"↞",xtwoheadrightarrow:"↠",xlongequal:"=",xtofrom:"⇄",xrightleftarrows:"⇄",xrightequilibrium:"⇌",xleftequilibrium:"⇋","\\cdrightarrow":"→","\\cdleftarrow":"←","\\cdlongequal":"="},I3e=function(e){var n=new Fe.MathNode("mo",[new Fe.TextNode(z3e[e.replace(/^\\/,"")])]);return n.setAttribute("stretchy","true"),n},L3e={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},B3e=function(e){return e.type==="ordgroup"?e.body.length:1},F3e=function(e,n){function r(){var l=4e5,c=e.label.slice(1);if(["widehat","widecheck","widetilde","utilde"].includes(c)){var d=e,h=B3e(d.base),m,g,x;if(h>5)c==="widehat"||c==="widecheck"?(m=420,l=2364,x=.42,g=c+"4"):(m=312,l=2340,x=.34,g="tilde4");else{var y=[1,1,2,2,3,3][h];c==="widehat"||c==="widecheck"?(l=[0,1062,2364,2364,2364][y],m=[0,239,300,360,420][y],x=[0,.24,.3,.3,.36,.42][y],g=c+y):(l=[0,600,1033,2339,2340][y],m=[0,260,286,306,312][y],x=[0,.26,.286,.3,.306,.34][y],g="tilde"+y)}var w=new su(g),S=new Ul([w],{width:"100%",height:Xe(x),viewBox:"0 0 "+l+" "+m,preserveAspectRatio:"none"});return{span:we.makeSvgSpan([],[S],n),minWidth:0,height:x}}else{var k=[],j=L3e[c],[N,T,E]=j,_=E/1e3,A=N.length,D,q;if(A===1){var B=j[3];D=["hide-tail"],q=[B]}else if(A===2)D=["halfarrow-left","halfarrow-right"],q=["xMinYMin","xMaxYMin"];else if(A===3)D=["brace-left","brace-center","brace-right"],q=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support + `+A+" children.");for(var H=0;H0&&(s.style.minWidth=Xe(i)),s},q3e=function(e,n,r,s,i){var a,l=e.height+e.depth+r+s;if(/fbox|color|angl/.test(n)){if(a=we.makeSpan(["stretchy",n],[],i),n==="fbox"){var c=i.color&&i.getColor();c&&(a.style.borderColor=c)}}else{var d=[];/^[bx]cancel$/.test(n)&&d.push(new HO({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(n)&&d.push(new HO({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new Ul(d,{width:"100%",height:Xe(l)});a=we.makeSvgSpan([],[h],i)}return a.height=l,a.style.height=Xe(l),a},Gl={encloseSpan:q3e,mathMLnode:I3e,svgSpan:F3e};function nn(t,e){if(!t||t.type!==e)throw new Error("Expected node of type "+e+", but got "+(t?"node of type "+t.type:String(t)));return t}function IN(t){var e=Wb(t);if(!e)throw new Error("Expected node of symbol group type, but got "+(t?"node of type "+t.type:String(t)));return e}function Wb(t){return t&&(t.type==="atom"||h3e.hasOwnProperty(t.type))?t:null}var LN=(t,e)=>{var n,r,s;t&&t.type==="supsub"?(r=nn(t.base,"accent"),n=r.base,t.base=n,s=u3e(qn(t,e)),t.base=r):(r=nn(t,"accent"),n=r.base);var i=qn(n,e.havingCrampedStyle()),a=r.isShifty&&Wn.isCharacterBox(n),l=0;if(a){var c=Wn.getBaseElem(n),d=qn(c,e.havingCrampedStyle());l=bR(d).skew}var h=r.label==="\\c",m=h?i.height+i.depth:Math.min(i.height,e.fontMetrics().xHeight),g;if(r.isStretchy)g=Gl.svgSpan(r,e),g=we.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:g,wrapperClasses:["svg-align"],wrapperStyle:l>0?{width:"calc(100% - "+Xe(2*l)+")",marginLeft:Xe(2*l)}:void 0}]},e);else{var x,y;r.label==="\\vec"?(x=we.staticSvg("vec",e),y=we.svgData.vec[1]):(x=we.makeOrd({mode:r.mode,text:r.label},e,"textord"),x=bR(x),x.italic=0,y=x.width,h&&(m+=x.depth)),g=we.makeSpan(["accent-body"],[x]);var w=r.label==="\\textcircled";w&&(g.classes.push("accent-full"),m=i.height);var S=l;w||(S-=y/2),g.style.left=Xe(S),r.label==="\\textcircled"&&(g.style.top=".2em"),g=we.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-m},{type:"elem",elem:g}]},e)}var k=we.makeSpan(["mord","accent"],[g],e);return s?(s.children[0]=k,s.height=Math.max(k.height,s.height),s.classes[0]="mord",s):k},mU=(t,e)=>{var n=t.isStretchy?Gl.mathMLnode(t.label):new Fe.MathNode("mo",[Ra(t.label,t.mode)]),r=new Fe.MathNode("mover",[hr(t.base,e),n]);return r.setAttribute("accent","true"),r},$3e=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(t=>"\\"+t).join("|"));tt({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(t,e)=>{var n=Ay(e[0]),r=!$3e.test(t.funcName),s=!r||t.funcName==="\\widehat"||t.funcName==="\\widetilde"||t.funcName==="\\widecheck";return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:r,isShifty:s,base:n}},htmlBuilder:LN,mathmlBuilder:mU});tt({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(t,e)=>{var n=e[0],r=t.parser.mode;return r==="math"&&(t.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+t.funcName+" works only in text mode"),r="text"),{type:"accent",mode:r,label:t.funcName,isStretchy:!1,isShifty:!0,base:n}},htmlBuilder:LN,mathmlBuilder:mU});tt({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0];return{type:"accentUnder",mode:n.mode,label:r,base:s}},htmlBuilder:(t,e)=>{var n=qn(t.base,e),r=Gl.svgSpan(t,e),s=t.label==="\\utilde"?.12:0,i=we.makeVList({positionType:"top",positionData:n.height,children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:s},{type:"elem",elem:n}]},e);return we.makeSpan(["mord","accentunder"],[i],e)},mathmlBuilder:(t,e)=>{var n=Gl.mathMLnode(t.label),r=new Fe.MathNode("munder",[hr(t.base,e),n]);return r.setAttribute("accentunder","true"),r}});var $1=t=>{var e=new Fe.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e};tt({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,n){var{parser:r,funcName:s}=t;return{type:"xArrow",mode:r.mode,label:s,body:e[0],below:n[0]}},htmlBuilder(t,e){var n=e.style,r=e.havingStyle(n.sup()),s=we.wrapFragment(qn(t.body,r,e),e),i=t.label.slice(0,2)==="\\x"?"x":"cd";s.classes.push(i+"-arrow-pad");var a;t.below&&(r=e.havingStyle(n.sub()),a=we.wrapFragment(qn(t.below,r,e),e),a.classes.push(i+"-arrow-pad"));var l=Gl.svgSpan(t,e),c=-e.fontMetrics().axisHeight+.5*l.height,d=-e.fontMetrics().axisHeight-.5*l.height-.111;(s.depth>.25||t.label==="\\xleftequilibrium")&&(d-=s.depth);var h;if(a){var m=-e.fontMetrics().axisHeight+a.height+.5*l.height+.111;h=we.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:d},{type:"elem",elem:l,shift:c},{type:"elem",elem:a,shift:m}]},e)}else h=we.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:d},{type:"elem",elem:l,shift:c}]},e);return h.children[0].children[0].children[1].classes.push("svg-align"),we.makeSpan(["mrel","x-arrow"],[h],e)},mathmlBuilder(t,e){var n=Gl.mathMLnode(t.label);n.setAttribute("minsize",t.label.charAt(0)==="x"?"1.75em":"3.0em");var r;if(t.body){var s=$1(hr(t.body,e));if(t.below){var i=$1(hr(t.below,e));r=new Fe.MathNode("munderover",[n,i,s])}else r=new Fe.MathNode("mover",[n,s])}else if(t.below){var a=$1(hr(t.below,e));r=new Fe.MathNode("munder",[n,a])}else r=$1(),r=new Fe.MathNode("mover",[n,r]);return r}});var H3e=we.makeSpan;function pU(t,e){var n=ms(t.body,e,!0);return H3e([t.mclass],n,e)}function gU(t,e){var n,r=Mi(t.body,e);return t.mclass==="minner"?n=new Fe.MathNode("mpadded",r):t.mclass==="mord"?t.isCharacterBox?(n=r[0],n.type="mi"):n=new Fe.MathNode("mi",r):(t.isCharacterBox?(n=r[0],n.type="mo"):n=new Fe.MathNode("mo",r),t.mclass==="mbin"?(n.attributes.lspace="0.22em",n.attributes.rspace="0.22em"):t.mclass==="mpunct"?(n.attributes.lspace="0em",n.attributes.rspace="0.17em"):t.mclass==="mopen"||t.mclass==="mclose"?(n.attributes.lspace="0em",n.attributes.rspace="0em"):t.mclass==="minner"&&(n.attributes.lspace="0.0556em",n.attributes.width="+0.1111em")),n}tt({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];return{type:"mclass",mode:n.mode,mclass:"m"+r.slice(5),body:Gr(s),isCharacterBox:Wn.isCharacterBox(s)}},htmlBuilder:pU,mathmlBuilder:gU});var Gb=t=>{var e=t.type==="ordgroup"&&t.body.length?t.body[0]:t;return e.type==="atom"&&(e.family==="bin"||e.family==="rel")?"m"+e.family:"mord"};tt({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(t,e){var{parser:n}=t;return{type:"mclass",mode:n.mode,mclass:Gb(e[0]),body:Gr(e[1]),isCharacterBox:Wn.isCharacterBox(e[1])}}});tt({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(t,e){var{parser:n,funcName:r}=t,s=e[1],i=e[0],a;r!=="\\stackrel"?a=Gb(s):a="mrel";var l={type:"op",mode:s.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:r!=="\\stackrel",body:Gr(s)},c={type:"supsub",mode:i.mode,base:l,sup:r==="\\underset"?null:i,sub:r==="\\underset"?i:null};return{type:"mclass",mode:n.mode,mclass:a,body:[c],isCharacterBox:Wn.isCharacterBox(c)}},htmlBuilder:pU,mathmlBuilder:gU});tt({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"pmb",mode:n.mode,mclass:Gb(e[0]),body:Gr(e[0])}},htmlBuilder(t,e){var n=ms(t.body,e,!0),r=we.makeSpan([t.mclass],n,e);return r.style.textShadow="0.02em 0.01em 0.04px",r},mathmlBuilder(t,e){var n=Mi(t.body,e),r=new Fe.MathNode("mstyle",n);return r.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),r}});var Q3e={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},TR=()=>({type:"styling",body:[],mode:"math",style:"display"}),ER=t=>t.type==="textord"&&t.text==="@",V3e=(t,e)=>(t.type==="mathord"||t.type==="atom")&&t.text===e;function U3e(t,e,n){var r=Q3e[t];switch(r){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return n.callFunction(r,[e[0]],[e[1]]);case"\\uparrow":case"\\downarrow":{var s=n.callFunction("\\\\cdleft",[e[0]],[]),i={type:"atom",text:r,mode:"math",family:"rel"},a=n.callFunction("\\Big",[i],[]),l=n.callFunction("\\\\cdright",[e[1]],[]),c={type:"ordgroup",mode:"math",body:[s,a,l]};return n.callFunction("\\\\cdparent",[c],[])}case"\\\\cdlongequal":return n.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var d={type:"textord",text:"\\Vert",mode:"math"};return n.callFunction("\\Big",[d],[])}default:return{type:"textord",text:" ",mode:"math"}}}function W3e(t){var e=[];for(t.gullet.beginGroup(),t.gullet.macros.set("\\cr","\\\\\\relax"),t.gullet.beginGroup();;){e.push(t.parseExpression(!1,"\\\\")),t.gullet.endGroup(),t.gullet.beginGroup();var n=t.fetch().text;if(n==="&"||n==="\\\\")t.consume();else if(n==="\\end"){e[e.length-1].length===0&&e.pop();break}else throw new qe("Expected \\\\ or \\cr or \\end",t.nextToken)}for(var r=[],s=[r],i=0;i-1))if("<>AV".indexOf(d)>-1)for(var m=0;m<2;m++){for(var g=!0,x=c+1;xAV=|." after @',a[c]);var y=U3e(d,h,t),w={type:"styling",body:[y],mode:"math",style:"display"};r.push(w),l=TR()}i%2===0?r.push(l):r.shift(),r=[],s.push(r)}t.gullet.endGroup(),t.gullet.endGroup();var S=new Array(s[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:s,arraystretch:1,addJot:!0,rowGaps:[null],cols:S,colSeparationType:"CD",hLinesBeforeRow:new Array(s.length+1).fill([])}}tt({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:r}=t;return{type:"cdlabel",mode:n.mode,side:r.slice(4),label:e[0]}},htmlBuilder(t,e){var n=e.havingStyle(e.style.sup()),r=we.wrapFragment(qn(t.label,n,e),e);return r.classes.push("cd-label-"+t.side),r.style.bottom=Xe(.8-r.depth),r.height=0,r.depth=0,r},mathmlBuilder(t,e){var n=new Fe.MathNode("mrow",[hr(t.label,e)]);return n=new Fe.MathNode("mpadded",[n]),n.setAttribute("width","0"),t.side==="left"&&n.setAttribute("lspace","-1width"),n.setAttribute("voffset","0.7em"),n=new Fe.MathNode("mstyle",[n]),n.setAttribute("displaystyle","false"),n.setAttribute("scriptlevel","1"),n}});tt({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(t,e){var{parser:n}=t;return{type:"cdlabelparent",mode:n.mode,fragment:e[0]}},htmlBuilder(t,e){var n=we.wrapFragment(qn(t.fragment,e),e);return n.classes.push("cd-vert-arrow"),n},mathmlBuilder(t,e){return new Fe.MathNode("mrow",[hr(t.fragment,e)])}});tt({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(t,e){for(var{parser:n}=t,r=nn(e[0],"ordgroup"),s=r.body,i="",a=0;a=1114111)throw new qe("\\@char with invalid code point "+i);return c<=65535?d=String.fromCharCode(c):(c-=65536,d=String.fromCharCode((c>>10)+55296,(c&1023)+56320)),{type:"textord",mode:n.mode,text:d}}});var xU=(t,e)=>{var n=ms(t.body,e.withColor(t.color),!1);return we.makeFragment(n)},vU=(t,e)=>{var n=Mi(t.body,e.withColor(t.color)),r=new Fe.MathNode("mstyle",n);return r.setAttribute("mathcolor",t.color),r};tt({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(t,e){var{parser:n}=t,r=nn(e[0],"color-token").color,s=e[1];return{type:"color",mode:n.mode,color:r,body:Gr(s)}},htmlBuilder:xU,mathmlBuilder:vU});tt({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(t,e){var{parser:n,breakOnTokenText:r}=t,s=nn(e[0],"color-token").color;n.gullet.macros.set("\\current@color",s);var i=n.parseExpression(!0,r);return{type:"color",mode:n.mode,color:s,body:i}},htmlBuilder:xU,mathmlBuilder:vU});tt({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(t,e,n){var{parser:r}=t,s=r.gullet.future().text==="["?r.parseSizeGroup(!0):null,i=!r.settings.displayMode||!r.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:r.mode,newLine:i,size:s&&nn(s,"size").value}},htmlBuilder(t,e){var n=we.makeSpan(["mspace"],[],e);return t.newLine&&(n.classes.push("newline"),t.size&&(n.style.marginTop=Xe(Ir(t.size,e)))),n},mathmlBuilder(t,e){var n=new Fe.MathNode("mspace");return t.newLine&&(n.setAttribute("linebreak","newline"),t.size&&n.setAttribute("height",Xe(Ir(t.size,e)))),n}});var WO={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},yU=t=>{var e=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new qe("Expected a control sequence",t);return e},G3e=t=>{var e=t.gullet.popToken();return e.text==="="&&(e=t.gullet.popToken(),e.text===" "&&(e=t.gullet.popToken())),e},bU=(t,e,n,r)=>{var s=t.gullet.macros.get(n.text);s==null&&(n.noexpand=!0,s={tokens:[n],numArgs:0,unexpandable:!t.gullet.isExpandable(n.text)}),t.gullet.macros.set(e,s,r)};tt({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(t){var{parser:e,funcName:n}=t;e.consumeSpaces();var r=e.fetch();if(WO[r.text])return(n==="\\global"||n==="\\\\globallong")&&(r.text=WO[r.text]),nn(e.parseFunction(),"internal");throw new qe("Invalid token after macro prefix",r)}});tt({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,r=e.gullet.popToken(),s=r.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(s))throw new qe("Expected a control sequence",r);for(var i=0,a,l=[[]];e.gullet.future().text!=="{";)if(r=e.gullet.popToken(),r.text==="#"){if(e.gullet.future().text==="{"){a=e.gullet.future(),l[i].push("{");break}if(r=e.gullet.popToken(),!/^[1-9]$/.test(r.text))throw new qe('Invalid argument number "'+r.text+'"');if(parseInt(r.text)!==i+1)throw new qe('Argument number "'+r.text+'" out of order');i++,l.push([])}else{if(r.text==="EOF")throw new qe("Expected a macro definition");l[i].push(r.text)}var{tokens:c}=e.gullet.consumeArg();return a&&c.unshift(a),(n==="\\edef"||n==="\\xdef")&&(c=e.gullet.expandTokens(c),c.reverse()),e.gullet.macros.set(s,{tokens:c,numArgs:i,delimiters:l},n===WO[n]),{type:"internal",mode:e.mode}}});tt({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,r=yU(e.gullet.popToken());e.gullet.consumeSpaces();var s=G3e(e);return bU(e,r,s,n==="\\\\globallet"),{type:"internal",mode:e.mode}}});tt({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,r=yU(e.gullet.popToken()),s=e.gullet.popToken(),i=e.gullet.popToken();return bU(e,r,i,n==="\\\\globalfuture"),e.gullet.pushToken(i),e.gullet.pushToken(s),{type:"internal",mode:e.mode}}});var f0=function(e,n,r){var s=pr.math[e]&&pr.math[e].replace,i=MN(s||e,n,r);if(!i)throw new Error("Unsupported symbol "+e+" and font size "+n+".");return i},BN=function(e,n,r,s){var i=r.havingBaseStyle(n),a=we.makeSpan(s.concat(i.sizingClasses(r)),[e],r),l=i.sizeMultiplier/r.sizeMultiplier;return a.height*=l,a.depth*=l,a.maxFontSize=i.sizeMultiplier,a},wU=function(e,n,r){var s=n.havingBaseStyle(r),i=(1-n.sizeMultiplier/s.sizeMultiplier)*n.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=Xe(i),e.height-=i,e.depth+=i},X3e=function(e,n,r,s,i,a){var l=we.makeSymbol(e,"Main-Regular",i,s),c=BN(l,n,s,a);return r&&wU(c,s,n),c},Y3e=function(e,n,r,s){return we.makeSymbol(e,"Size"+n+"-Regular",r,s)},SU=function(e,n,r,s,i,a){var l=Y3e(e,n,i,s),c=BN(we.makeSpan(["delimsizing","size"+n],[l],s),At.TEXT,s,a);return r&&wU(c,s,At.TEXT),c},t5=function(e,n,r){var s;n==="Size1-Regular"?s="delim-size1":s="delim-size4";var i=we.makeSpan(["delimsizinginner",s],[we.makeSpan([],[we.makeSymbol(e,n,r)])]);return{type:"elem",elem:i}},n5=function(e,n,r){var s=Mo["Size4-Regular"][e.charCodeAt(0)]?Mo["Size4-Regular"][e.charCodeAt(0)][4]:Mo["Size1-Regular"][e.charCodeAt(0)][4],i=new su("inner",t3e(e,Math.round(1e3*n))),a=new Ul([i],{width:Xe(s),height:Xe(n),style:"width:"+Xe(s),viewBox:"0 0 "+1e3*s+" "+Math.round(1e3*n),preserveAspectRatio:"xMinYMin"}),l=we.makeSvgSpan([],[a],r);return l.height=n,l.style.height=Xe(n),l.style.width=Xe(s),{type:"elem",elem:l}},GO=.008,H1={type:"kern",size:-1*GO},K3e=["|","\\lvert","\\rvert","\\vert"],Z3e=["\\|","\\lVert","\\rVert","\\Vert"],kU=function(e,n,r,s,i,a){var l,c,d,h,m="",g=0;l=d=h=e,c=null;var x="Size1-Regular";e==="\\uparrow"?d=h="⏐":e==="\\Uparrow"?d=h="‖":e==="\\downarrow"?l=d="⏐":e==="\\Downarrow"?l=d="‖":e==="\\updownarrow"?(l="\\uparrow",d="⏐",h="\\downarrow"):e==="\\Updownarrow"?(l="\\Uparrow",d="‖",h="\\Downarrow"):K3e.includes(e)?(d="∣",m="vert",g=333):Z3e.includes(e)?(d="∥",m="doublevert",g=556):e==="["||e==="\\lbrack"?(l="⎡",d="⎢",h="⎣",x="Size4-Regular",m="lbrack",g=667):e==="]"||e==="\\rbrack"?(l="⎤",d="⎥",h="⎦",x="Size4-Regular",m="rbrack",g=667):e==="\\lfloor"||e==="⌊"?(d=l="⎢",h="⎣",x="Size4-Regular",m="lfloor",g=667):e==="\\lceil"||e==="⌈"?(l="⎡",d=h="⎢",x="Size4-Regular",m="lceil",g=667):e==="\\rfloor"||e==="⌋"?(d=l="⎥",h="⎦",x="Size4-Regular",m="rfloor",g=667):e==="\\rceil"||e==="⌉"?(l="⎤",d=h="⎥",x="Size4-Regular",m="rceil",g=667):e==="("||e==="\\lparen"?(l="⎛",d="⎜",h="⎝",x="Size4-Regular",m="lparen",g=875):e===")"||e==="\\rparen"?(l="⎞",d="⎟",h="⎠",x="Size4-Regular",m="rparen",g=875):e==="\\{"||e==="\\lbrace"?(l="⎧",c="⎨",h="⎩",d="⎪",x="Size4-Regular"):e==="\\}"||e==="\\rbrace"?(l="⎫",c="⎬",h="⎭",d="⎪",x="Size4-Regular"):e==="\\lgroup"||e==="⟮"?(l="⎧",h="⎩",d="⎪",x="Size4-Regular"):e==="\\rgroup"||e==="⟯"?(l="⎫",h="⎭",d="⎪",x="Size4-Regular"):e==="\\lmoustache"||e==="⎰"?(l="⎧",h="⎭",d="⎪",x="Size4-Regular"):(e==="\\rmoustache"||e==="⎱")&&(l="⎫",h="⎩",d="⎪",x="Size4-Regular");var y=f0(l,x,i),w=y.height+y.depth,S=f0(d,x,i),k=S.height+S.depth,j=f0(h,x,i),N=j.height+j.depth,T=0,E=1;if(c!==null){var _=f0(c,x,i);T=_.height+_.depth,E=2}var A=w+N+T,D=Math.max(0,Math.ceil((n-A)/(E*k))),q=A+D*E*k,B=s.fontMetrics().axisHeight;r&&(B*=s.sizeMultiplier);var H=q/2-B,W=[];if(m.length>0){var ee=q-w-N,I=Math.round(q*1e3),V=n3e(m,Math.round(ee*1e3)),L=new su(m,V),$=(g/1e3).toFixed(3)+"em",K=(I/1e3).toFixed(3)+"em",Y=new Ul([L],{width:$,height:K,viewBox:"0 0 "+g+" "+I}),R=we.makeSvgSpan([],[Y],s);R.height=I/1e3,R.style.width=$,R.style.height=K,W.push({type:"elem",elem:R})}else{if(W.push(t5(h,x,i)),W.push(H1),c===null){var ie=q-w-N+2*GO;W.push(n5(d,ie,s))}else{var X=(q-w-N-T)/2+2*GO;W.push(n5(d,X,s)),W.push(H1),W.push(t5(c,x,i)),W.push(H1),W.push(n5(d,X,s))}W.push(H1),W.push(t5(l,x,i))}var z=s.havingBaseStyle(At.TEXT),U=we.makeVList({positionType:"bottom",positionData:H,children:W},z);return BN(we.makeSpan(["delimsizing","mult"],[U],z),At.TEXT,s,a)},r5=80,s5=.08,i5=function(e,n,r,s,i){var a=e3e(e,s,r),l=new su(e,a),c=new Ul([l],{width:"400em",height:Xe(n),viewBox:"0 0 400000 "+r,preserveAspectRatio:"xMinYMin slice"});return we.makeSvgSpan(["hide-tail"],[c],i)},J3e=function(e,n){var r=n.havingBaseSizing(),s=CU("\\surd",e*r.sizeMultiplier,NU,r),i=r.sizeMultiplier,a=Math.max(0,n.minRuleThickness-n.fontMetrics().sqrtRuleThickness),l,c=0,d=0,h=0,m;return s.type==="small"?(h=1e3+1e3*a+r5,e<1?i=1:e<1.4&&(i=.7),c=(1+a+s5)/i,d=(1+a)/i,l=i5("sqrtMain",c,h,a,n),l.style.minWidth="0.853em",m=.833/i):s.type==="large"?(h=(1e3+r5)*z0[s.size],d=(z0[s.size]+a)/i,c=(z0[s.size]+a+s5)/i,l=i5("sqrtSize"+s.size,c,h,a,n),l.style.minWidth="1.02em",m=1/i):(c=e+a+s5,d=e+a,h=Math.floor(1e3*e+a)+r5,l=i5("sqrtTall",c,h,a,n),l.style.minWidth="0.742em",m=1.056),l.height=d,l.style.height=Xe(c),{span:l,advanceWidth:m,ruleWidth:(n.fontMetrics().sqrtRuleThickness+a)*i}},OU=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"],eke=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"],jU=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],z0=[0,1.2,1.8,2.4,3],tke=function(e,n,r,s,i){if(e==="<"||e==="\\lt"||e==="⟨"?e="\\langle":(e===">"||e==="\\gt"||e==="⟩")&&(e="\\rangle"),OU.includes(e)||jU.includes(e))return SU(e,n,!1,r,s,i);if(eke.includes(e))return kU(e,z0[n],!1,r,s,i);throw new qe("Illegal delimiter: '"+e+"'")},nke=[{type:"small",style:At.SCRIPTSCRIPT},{type:"small",style:At.SCRIPT},{type:"small",style:At.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],rke=[{type:"small",style:At.SCRIPTSCRIPT},{type:"small",style:At.SCRIPT},{type:"small",style:At.TEXT},{type:"stack"}],NU=[{type:"small",style:At.SCRIPTSCRIPT},{type:"small",style:At.SCRIPT},{type:"small",style:At.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],ske=function(e){if(e.type==="small")return"Main-Regular";if(e.type==="large")return"Size"+e.size+"-Regular";if(e.type==="stack")return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},CU=function(e,n,r,s){for(var i=Math.min(2,3-s.style.size),a=i;an)return r[a]}return r[r.length-1]},TU=function(e,n,r,s,i,a){e==="<"||e==="\\lt"||e==="⟨"?e="\\langle":(e===">"||e==="\\gt"||e==="⟩")&&(e="\\rangle");var l;jU.includes(e)?l=nke:OU.includes(e)?l=NU:l=rke;var c=CU(e,n,l,s);return c.type==="small"?X3e(e,c.style,r,s,i,a):c.type==="large"?SU(e,c.size,r,s,i,a):kU(e,n,r,s,i,a)},ike=function(e,n,r,s,i,a){var l=s.fontMetrics().axisHeight*s.sizeMultiplier,c=901,d=5/s.fontMetrics().ptPerEm,h=Math.max(n-l,r+l),m=Math.max(h/500*c,2*h-d);return TU(e,m,!0,s,i,a)},ql={sqrtImage:J3e,sizedDelim:tke,sizeToMaxHeight:z0,customSizedDelim:TU,leftRightDelim:ike},_R={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},ake=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function Xb(t,e){var n=Wb(t);if(n&&ake.includes(n.text))return n;throw n?new qe("Invalid delimiter '"+n.text+"' after '"+e.funcName+"'",t):new qe("Invalid delimiter type '"+t.type+"'",t)}tt({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(t,e)=>{var n=Xb(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:_R[t.funcName].size,mclass:_R[t.funcName].mclass,delim:n.text}},htmlBuilder:(t,e)=>t.delim==="."?we.makeSpan([t.mclass]):ql.sizedDelim(t.delim,t.size,e,t.mode,[t.mclass]),mathmlBuilder:t=>{var e=[];t.delim!=="."&&e.push(Ra(t.delim,t.mode));var n=new Fe.MathNode("mo",e);t.mclass==="mopen"||t.mclass==="mclose"?n.setAttribute("fence","true"):n.setAttribute("fence","false"),n.setAttribute("stretchy","true");var r=Xe(ql.sizeToMaxHeight[t.size]);return n.setAttribute("minsize",r),n.setAttribute("maxsize",r),n}});function AR(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}tt({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=t.parser.gullet.macros.get("\\current@color");if(n&&typeof n!="string")throw new qe("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:Xb(e[0],t).text,color:n}}});tt({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=Xb(e[0],t),r=t.parser;++r.leftrightDepth;var s=r.parseExpression(!1);--r.leftrightDepth,r.expect("\\right",!1);var i=nn(r.parseFunction(),"leftright-right");return{type:"leftright",mode:r.mode,body:s,left:n.text,right:i.delim,rightColor:i.color}},htmlBuilder:(t,e)=>{AR(t);for(var n=ms(t.body,e,!0,["mopen","mclose"]),r=0,s=0,i=!1,a=0;a{AR(t);var n=Mi(t.body,e);if(t.left!=="."){var r=new Fe.MathNode("mo",[Ra(t.left,t.mode)]);r.setAttribute("fence","true"),n.unshift(r)}if(t.right!=="."){var s=new Fe.MathNode("mo",[Ra(t.right,t.mode)]);s.setAttribute("fence","true"),t.rightColor&&s.setAttribute("mathcolor",t.rightColor),n.push(s)}return PN(n)}});tt({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=Xb(e[0],t);if(!t.parser.leftrightDepth)throw new qe("\\middle without preceding \\left",n);return{type:"middle",mode:t.parser.mode,delim:n.text}},htmlBuilder:(t,e)=>{var n;if(t.delim===".")n=Sp(e,[]);else{n=ql.sizedDelim(t.delim,1,e,t.mode,[]);var r={delim:t.delim,options:e};n.isMiddle=r}return n},mathmlBuilder:(t,e)=>{var n=t.delim==="\\vert"||t.delim==="|"?Ra("|","text"):Ra(t.delim,t.mode),r=new Fe.MathNode("mo",[n]);return r.setAttribute("fence","true"),r.setAttribute("lspace","0.05em"),r.setAttribute("rspace","0.05em"),r}});var FN=(t,e)=>{var n=we.wrapFragment(qn(t.body,e),e),r=t.label.slice(1),s=e.sizeMultiplier,i,a=0,l=Wn.isCharacterBox(t.body);if(r==="sout")i=we.makeSpan(["stretchy","sout"]),i.height=e.fontMetrics().defaultRuleThickness/s,a=-.5*e.fontMetrics().xHeight;else if(r==="phase"){var c=Ir({number:.6,unit:"pt"},e),d=Ir({number:.35,unit:"ex"},e),h=e.havingBaseSizing();s=s/h.sizeMultiplier;var m=n.height+n.depth+c+d;n.style.paddingLeft=Xe(m/2+c);var g=Math.floor(1e3*m*s),x=Z5e(g),y=new Ul([new su("phase",x)],{width:"400em",height:Xe(g/1e3),viewBox:"0 0 400000 "+g,preserveAspectRatio:"xMinYMin slice"});i=we.makeSvgSpan(["hide-tail"],[y],e),i.style.height=Xe(m),a=n.depth+c+d}else{/cancel/.test(r)?l||n.classes.push("cancel-pad"):r==="angl"?n.classes.push("anglpad"):n.classes.push("boxpad");var w=0,S=0,k=0;/box/.test(r)?(k=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),w=e.fontMetrics().fboxsep+(r==="colorbox"?0:k),S=w):r==="angl"?(k=Math.max(e.fontMetrics().defaultRuleThickness,e.minRuleThickness),w=4*k,S=Math.max(0,.25-n.depth)):(w=l?.2:0,S=w),i=Gl.encloseSpan(n,r,w,S,e),/fbox|boxed|fcolorbox/.test(r)?(i.style.borderStyle="solid",i.style.borderWidth=Xe(k)):r==="angl"&&k!==.049&&(i.style.borderTopWidth=Xe(k),i.style.borderRightWidth=Xe(k)),a=n.depth+S,t.backgroundColor&&(i.style.backgroundColor=t.backgroundColor,t.borderColor&&(i.style.borderColor=t.borderColor))}var j;if(t.backgroundColor)j=we.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:a},{type:"elem",elem:n,shift:0}]},e);else{var N=/cancel|phase/.test(r)?["svg-align"]:[];j=we.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:0},{type:"elem",elem:i,shift:a,wrapperClasses:N}]},e)}return/cancel/.test(r)&&(j.height=n.height,j.depth=n.depth),/cancel/.test(r)&&!l?we.makeSpan(["mord","cancel-lap"],[j],e):we.makeSpan(["mord"],[j],e)},qN=(t,e)=>{var n=0,r=new Fe.MathNode(t.label.indexOf("colorbox")>-1?"mpadded":"menclose",[hr(t.body,e)]);switch(t.label){case"\\cancel":r.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":r.setAttribute("notation","downdiagonalstrike");break;case"\\phase":r.setAttribute("notation","phasorangle");break;case"\\sout":r.setAttribute("notation","horizontalstrike");break;case"\\fbox":r.setAttribute("notation","box");break;case"\\angl":r.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(n=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,r.setAttribute("width","+"+2*n+"pt"),r.setAttribute("height","+"+2*n+"pt"),r.setAttribute("lspace",n+"pt"),r.setAttribute("voffset",n+"pt"),t.label==="\\fcolorbox"){var s=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);r.setAttribute("style","border: "+s+"em solid "+String(t.borderColor))}break;case"\\xcancel":r.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return t.backgroundColor&&r.setAttribute("mathbackground",t.backgroundColor),r};tt({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(t,e,n){var{parser:r,funcName:s}=t,i=nn(e[0],"color-token").color,a=e[1];return{type:"enclose",mode:r.mode,label:s,backgroundColor:i,body:a}},htmlBuilder:FN,mathmlBuilder:qN});tt({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(t,e,n){var{parser:r,funcName:s}=t,i=nn(e[0],"color-token").color,a=nn(e[1],"color-token").color,l=e[2];return{type:"enclose",mode:r.mode,label:s,backgroundColor:a,borderColor:i,body:l}},htmlBuilder:FN,mathmlBuilder:qN});tt({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"enclose",mode:n.mode,label:"\\fbox",body:e[0]}}});tt({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];return{type:"enclose",mode:n.mode,label:r,body:s}},htmlBuilder:FN,mathmlBuilder:qN});tt({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(t,e){var{parser:n}=t;return{type:"enclose",mode:n.mode,label:"\\angl",body:e[0]}}});var EU={};function Go(t){for(var{type:e,names:n,props:r,handler:s,htmlBuilder:i,mathmlBuilder:a}=t,l={type:e,numArgs:r.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:s},c=0;c{var e=t.parser.settings;if(!e.displayMode)throw new qe("{"+t.envName+"} can be used only in display mode.")};function $N(t){if(t.indexOf("ed")===-1)return t.indexOf("*")===-1}function mu(t,e,n){var{hskipBeforeAndAfter:r,addJot:s,cols:i,arraystretch:a,colSeparationType:l,autoTag:c,singleRow:d,emptySingleRow:h,maxNumCols:m,leqno:g}=e;if(t.gullet.beginGroup(),d||t.gullet.macros.set("\\cr","\\\\\\relax"),!a){var x=t.gullet.expandMacroAsText("\\arraystretch");if(x==null)a=1;else if(a=parseFloat(x),!a||a<0)throw new qe("Invalid \\arraystretch: "+x)}t.gullet.beginGroup();var y=[],w=[y],S=[],k=[],j=c!=null?[]:void 0;function N(){c&&t.gullet.macros.set("\\@eqnsw","1",!0)}function T(){j&&(t.gullet.macros.get("\\df@tag")?(j.push(t.subparse([new Zi("\\df@tag")])),t.gullet.macros.set("\\df@tag",void 0,!0)):j.push(!!c&&t.gullet.macros.get("\\@eqnsw")==="1"))}for(N(),k.push(MR(t));;){var E=t.parseExpression(!1,d?"\\end":"\\\\");t.gullet.endGroup(),t.gullet.beginGroup(),E={type:"ordgroup",mode:t.mode,body:E},n&&(E={type:"styling",mode:t.mode,style:n,body:[E]}),y.push(E);var _=t.fetch().text;if(_==="&"){if(m&&y.length===m){if(d||l)throw new qe("Too many tab characters: &",t.nextToken);t.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}t.consume()}else if(_==="\\end"){T(),y.length===1&&E.type==="styling"&&E.body[0].body.length===0&&(w.length>1||!h)&&w.pop(),k.length0&&(N+=.25),d.push({pos:N,isDashed:$e[jt]})}for(T(a[0]),r=0;r0&&(H+=j,A$e))for(r=0;r=l)){var G=void 0;(s>0||e.hskipBeforeAndAfter)&&(G=Wn.deflt(X.pregap,g),G!==0&&(V=we.makeSpan(["arraycolsep"],[]),V.style.width=Xe(G),I.push(V)));var se=[];for(r=0;r0){for(var Be=we.makeLineSpan("hline",n,h),Ye=we.makeLineSpan("hdashline",n,h),Je=[{type:"elem",elem:c,shift:0}];d.length>0;){var Oe=d.pop(),Ve=Oe.pos-W;Oe.isDashed?Je.push({type:"elem",elem:Ye,shift:Ve}):Je.push({type:"elem",elem:Be,shift:Ve})}c=we.makeVList({positionType:"individualShift",children:Je},n)}if($.length===0)return we.makeSpan(["mord"],[c],n);var Ue=we.makeVList({positionType:"individualShift",children:$},n);return Ue=we.makeSpan(["tag"],[Ue],n),we.makeFragment([c,Ue])},oke={c:"center ",l:"left ",r:"right "},Yo=function(e,n){for(var r=[],s=new Fe.MathNode("mtd",[],["mtr-glue"]),i=new Fe.MathNode("mtd",[],["mml-eqn-num"]),a=0;a0){var y=e.cols,w="",S=!1,k=0,j=y.length;y[0].type==="separator"&&(g+="top ",k=1),y[y.length-1].type==="separator"&&(g+="bottom ",j-=1);for(var N=k;N0?"left ":"",g+=D[D.length-1].length>0?"right ":"";for(var q=1;q-1?"alignat":"align",i=e.envName==="split",a=mu(e.parser,{cols:r,addJot:!0,autoTag:i?void 0:$N(e.envName),emptySingleRow:!0,colSeparationType:s,maxNumCols:i?2:void 0,leqno:e.parser.settings.leqno},"display"),l,c=0,d={type:"ordgroup",mode:e.mode,body:[]};if(n[0]&&n[0].type==="ordgroup"){for(var h="",m=0;m0&&x&&(S=1),r[y]={type:"align",align:w,pregap:S,postgap:0}}return a.colSeparationType=x?"align":"alignat",a};Go({type:"array",names:["array","darray"],props:{numArgs:1},handler(t,e){var n=Wb(e[0]),r=n?[e[0]]:nn(e[0],"ordgroup").body,s=r.map(function(a){var l=IN(a),c=l.text;if("lcr".indexOf(c)!==-1)return{type:"align",align:c};if(c==="|")return{type:"separator",separator:"|"};if(c===":")return{type:"separator",separator:":"};throw new qe("Unknown column alignment: "+c,a)}),i={cols:s,hskipBeforeAndAfter:!0,maxNumCols:s.length};return mu(t.parser,i,HN(t.envName))},htmlBuilder:Xo,mathmlBuilder:Yo});Go({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName.replace("*","")],n="c",r={hskipBeforeAndAfter:!1,cols:[{type:"align",align:n}]};if(t.envName.charAt(t.envName.length-1)==="*"){var s=t.parser;if(s.consumeSpaces(),s.fetch().text==="["){if(s.consume(),s.consumeSpaces(),n=s.fetch().text,"lcr".indexOf(n)===-1)throw new qe("Expected l or c or r",s.nextToken);s.consume(),s.consumeSpaces(),s.expect("]"),s.consume(),r.cols=[{type:"align",align:n}]}}var i=mu(t.parser,r,HN(t.envName)),a=Math.max(0,...i.body.map(l=>l.length));return i.cols=new Array(a).fill({type:"align",align:n}),e?{type:"leftright",mode:t.mode,body:[i],left:e[0],right:e[1],rightColor:void 0}:i},htmlBuilder:Xo,mathmlBuilder:Yo});Go({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(t){var e={arraystretch:.5},n=mu(t.parser,e,"script");return n.colSeparationType="small",n},htmlBuilder:Xo,mathmlBuilder:Yo});Go({type:"array",names:["subarray"],props:{numArgs:1},handler(t,e){var n=Wb(e[0]),r=n?[e[0]]:nn(e[0],"ordgroup").body,s=r.map(function(a){var l=IN(a),c=l.text;if("lc".indexOf(c)!==-1)return{type:"align",align:c};throw new qe("Unknown column alignment: "+c,a)});if(s.length>1)throw new qe("{subarray} can contain only one column");var i={cols:s,hskipBeforeAndAfter:!1,arraystretch:.5};if(i=mu(t.parser,i,"script"),i.body.length>0&&i.body[0].length>1)throw new qe("{subarray} can contain only one column");return i},htmlBuilder:Xo,mathmlBuilder:Yo});Go({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(t){var e={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},n=mu(t.parser,e,HN(t.envName));return{type:"leftright",mode:t.mode,body:[n],left:t.envName.indexOf("r")>-1?".":"\\{",right:t.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:Xo,mathmlBuilder:Yo});Go({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:AU,htmlBuilder:Xo,mathmlBuilder:Yo});Go({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(t){["gather","gather*"].includes(t.envName)&&Yb(t);var e={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:$N(t.envName),emptySingleRow:!0,leqno:t.parser.settings.leqno};return mu(t.parser,e,"display")},htmlBuilder:Xo,mathmlBuilder:Yo});Go({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:AU,htmlBuilder:Xo,mathmlBuilder:Yo});Go({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(t){Yb(t);var e={autoTag:$N(t.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:t.parser.settings.leqno};return mu(t.parser,e,"display")},htmlBuilder:Xo,mathmlBuilder:Yo});Go({type:"array",names:["CD"],props:{numArgs:0},handler(t){return Yb(t),W3e(t.parser)},htmlBuilder:Xo,mathmlBuilder:Yo});J("\\nonumber","\\gdef\\@eqnsw{0}");J("\\notag","\\nonumber");tt({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(t,e){throw new qe(t.funcName+" valid only within array environment")}});var RR=EU;tt({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];if(s.type!=="ordgroup")throw new qe("Invalid environment name",s);for(var i="",a=0;a{var n=t.font,r=e.withFont(n);return qn(t.body,r)},RU=(t,e)=>{var n=t.font,r=e.withFont(n);return hr(t.body,r)},DR={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};tt({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=Ay(e[0]),i=r;return i in DR&&(i=DR[i]),{type:"font",mode:n.mode,font:i.slice(1),body:s}},htmlBuilder:MU,mathmlBuilder:RU});tt({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(t,e)=>{var{parser:n}=t,r=e[0],s=Wn.isCharacterBox(r);return{type:"mclass",mode:n.mode,mclass:Gb(r),body:[{type:"font",mode:n.mode,font:"boldsymbol",body:r}],isCharacterBox:s}}});tt({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(t,e)=>{var{parser:n,funcName:r,breakOnTokenText:s}=t,{mode:i}=n,a=n.parseExpression(!0,s),l="math"+r.slice(1);return{type:"font",mode:i,font:l,body:{type:"ordgroup",mode:n.mode,body:a}}},htmlBuilder:MU,mathmlBuilder:RU});var DU=(t,e)=>{var n=e;return t==="display"?n=n.id>=At.SCRIPT.id?n.text():At.DISPLAY:t==="text"&&n.size===At.DISPLAY.size?n=At.TEXT:t==="script"?n=At.SCRIPT:t==="scriptscript"&&(n=At.SCRIPTSCRIPT),n},QN=(t,e)=>{var n=DU(t.size,e.style),r=n.fracNum(),s=n.fracDen(),i;i=e.havingStyle(r);var a=qn(t.numer,i,e);if(t.continued){var l=8.5/e.fontMetrics().ptPerEm,c=3.5/e.fontMetrics().ptPerEm;a.height=a.height0?y=3*g:y=7*g,w=e.fontMetrics().denom1):(m>0?(x=e.fontMetrics().num2,y=g):(x=e.fontMetrics().num3,y=3*g),w=e.fontMetrics().denom2);var S;if(h){var j=e.fontMetrics().axisHeight;x-a.depth-(j+.5*m){var n=new Fe.MathNode("mfrac",[hr(t.numer,e),hr(t.denom,e)]);if(!t.hasBarLine)n.setAttribute("linethickness","0px");else if(t.barSize){var r=Ir(t.barSize,e);n.setAttribute("linethickness",Xe(r))}var s=DU(t.size,e.style);if(s.size!==e.style.size){n=new Fe.MathNode("mstyle",[n]);var i=s.size===At.DISPLAY.size?"true":"false";n.setAttribute("displaystyle",i),n.setAttribute("scriptlevel","0")}if(t.leftDelim!=null||t.rightDelim!=null){var a=[];if(t.leftDelim!=null){var l=new Fe.MathNode("mo",[new Fe.TextNode(t.leftDelim.replace("\\",""))]);l.setAttribute("fence","true"),a.push(l)}if(a.push(n),t.rightDelim!=null){var c=new Fe.MathNode("mo",[new Fe.TextNode(t.rightDelim.replace("\\",""))]);c.setAttribute("fence","true"),a.push(c)}return PN(a)}return n};tt({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0],i=e[1],a,l=null,c=null,d="auto";switch(r){case"\\dfrac":case"\\frac":case"\\tfrac":a=!0;break;case"\\\\atopfrac":a=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":a=!1,l="(",c=")";break;case"\\\\bracefrac":a=!1,l="\\{",c="\\}";break;case"\\\\brackfrac":a=!1,l="[",c="]";break;default:throw new Error("Unrecognized genfrac command")}switch(r){case"\\dfrac":case"\\dbinom":d="display";break;case"\\tfrac":case"\\tbinom":d="text";break}return{type:"genfrac",mode:n.mode,continued:!1,numer:s,denom:i,hasBarLine:a,leftDelim:l,rightDelim:c,size:d,barSize:null}},htmlBuilder:QN,mathmlBuilder:VN});tt({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0],i=e[1];return{type:"genfrac",mode:n.mode,continued:!0,numer:s,denom:i,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}}});tt({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(t){var{parser:e,funcName:n,token:r}=t,s;switch(n){case"\\over":s="\\frac";break;case"\\choose":s="\\binom";break;case"\\atop":s="\\\\atopfrac";break;case"\\brace":s="\\\\bracefrac";break;case"\\brack":s="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:s,token:r}}});var PR=["display","text","script","scriptscript"],zR=function(e){var n=null;return e.length>0&&(n=e,n=n==="."?null:n),n};tt({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(t,e){var{parser:n}=t,r=e[4],s=e[5],i=Ay(e[0]),a=i.type==="atom"&&i.family==="open"?zR(i.text):null,l=Ay(e[1]),c=l.type==="atom"&&l.family==="close"?zR(l.text):null,d=nn(e[2],"size"),h,m=null;d.isBlank?h=!0:(m=d.value,h=m.number>0);var g="auto",x=e[3];if(x.type==="ordgroup"){if(x.body.length>0){var y=nn(x.body[0],"textord");g=PR[Number(y.text)]}}else x=nn(x,"textord"),g=PR[Number(x.text)];return{type:"genfrac",mode:n.mode,numer:r,denom:s,continued:!1,hasBarLine:h,barSize:m,leftDelim:a,rightDelim:c,size:g}},htmlBuilder:QN,mathmlBuilder:VN});tt({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(t,e){var{parser:n,funcName:r,token:s}=t;return{type:"infix",mode:n.mode,replaceWith:"\\\\abovefrac",size:nn(e[0],"size").value,token:s}}});tt({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0],i=I5e(nn(e[1],"infix").size),a=e[2],l=i.number>0;return{type:"genfrac",mode:n.mode,numer:s,denom:a,continued:!1,hasBarLine:l,barSize:i,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:QN,mathmlBuilder:VN});var PU=(t,e)=>{var n=e.style,r,s;t.type==="supsub"?(r=t.sup?qn(t.sup,e.havingStyle(n.sup()),e):qn(t.sub,e.havingStyle(n.sub()),e),s=nn(t.base,"horizBrace")):s=nn(t,"horizBrace");var i=qn(s.base,e.havingBaseStyle(At.DISPLAY)),a=Gl.svgSpan(s,e),l;if(s.isOver?(l=we.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:.1},{type:"elem",elem:a}]},e),l.children[0].children[0].children[1].classes.push("svg-align")):(l=we.makeVList({positionType:"bottom",positionData:i.depth+.1+a.height,children:[{type:"elem",elem:a},{type:"kern",size:.1},{type:"elem",elem:i}]},e),l.children[0].children[0].children[0].classes.push("svg-align")),r){var c=we.makeSpan(["mord",s.isOver?"mover":"munder"],[l],e);s.isOver?l=we.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:c},{type:"kern",size:.2},{type:"elem",elem:r}]},e):l=we.makeVList({positionType:"bottom",positionData:c.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:c}]},e)}return we.makeSpan(["mord",s.isOver?"mover":"munder"],[l],e)},lke=(t,e)=>{var n=Gl.mathMLnode(t.label);return new Fe.MathNode(t.isOver?"mover":"munder",[hr(t.base,e),n])};tt({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:r}=t;return{type:"horizBrace",mode:n.mode,label:r,isOver:/^\\over/.test(r),base:e[0]}},htmlBuilder:PU,mathmlBuilder:lke});tt({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[1],s=nn(e[0],"url").url;return n.settings.isTrusted({command:"\\href",url:s})?{type:"href",mode:n.mode,href:s,body:Gr(r)}:n.formatUnsupportedCmd("\\href")},htmlBuilder:(t,e)=>{var n=ms(t.body,e,!1);return we.makeAnchor(t.href,[],n,e)},mathmlBuilder:(t,e)=>{var n=iu(t.body,e);return n instanceof Ui||(n=new Ui("mrow",[n])),n.setAttribute("href",t.href),n}});tt({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=nn(e[0],"url").url;if(!n.settings.isTrusted({command:"\\url",url:r}))return n.formatUnsupportedCmd("\\url");for(var s=[],i=0;i{var{parser:n,funcName:r,token:s}=t,i=nn(e[0],"raw").string,a=e[1];n.settings.strict&&n.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var l,c={};switch(r){case"\\htmlClass":c.class=i,l={command:"\\htmlClass",class:i};break;case"\\htmlId":c.id=i,l={command:"\\htmlId",id:i};break;case"\\htmlStyle":c.style=i,l={command:"\\htmlStyle",style:i};break;case"\\htmlData":{for(var d=i.split(","),h=0;h{var n=ms(t.body,e,!1),r=["enclosing"];t.attributes.class&&r.push(...t.attributes.class.trim().split(/\s+/));var s=we.makeSpan(r,n,e);for(var i in t.attributes)i!=="class"&&t.attributes.hasOwnProperty(i)&&s.setAttribute(i,t.attributes[i]);return s},mathmlBuilder:(t,e)=>iu(t.body,e)});tt({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t;return{type:"htmlmathml",mode:n.mode,html:Gr(e[0]),mathml:Gr(e[1])}},htmlBuilder:(t,e)=>{var n=ms(t.html,e,!1);return we.makeFragment(n)},mathmlBuilder:(t,e)=>iu(t.mathml,e)});var a5=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var n=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!n)throw new qe("Invalid size: '"+e+"' in \\includegraphics");var r={number:+(n[1]+n[2]),unit:n[3]};if(!eU(r))throw new qe("Invalid unit: '"+r.unit+"' in \\includegraphics.");return r};tt({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(t,e,n)=>{var{parser:r}=t,s={number:0,unit:"em"},i={number:.9,unit:"em"},a={number:0,unit:"em"},l="";if(n[0])for(var c=nn(n[0],"raw").string,d=c.split(","),h=0;h{var n=Ir(t.height,e),r=0;t.totalheight.number>0&&(r=Ir(t.totalheight,e)-n);var s=0;t.width.number>0&&(s=Ir(t.width,e));var i={height:Xe(n+r)};s>0&&(i.width=Xe(s)),r>0&&(i.verticalAlign=Xe(-r));var a=new l3e(t.src,t.alt,i);return a.height=n,a.depth=r,a},mathmlBuilder:(t,e)=>{var n=new Fe.MathNode("mglyph",[]);n.setAttribute("alt",t.alt);var r=Ir(t.height,e),s=0;if(t.totalheight.number>0&&(s=Ir(t.totalheight,e)-r,n.setAttribute("valign",Xe(-s))),n.setAttribute("height",Xe(r+s)),t.width.number>0){var i=Ir(t.width,e);n.setAttribute("width",Xe(i))}return n.setAttribute("src",t.src),n}});tt({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(t,e){var{parser:n,funcName:r}=t,s=nn(e[0],"size");if(n.settings.strict){var i=r[1]==="m",a=s.value.unit==="mu";i?(a||n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" supports only mu units, "+("not "+s.value.unit+" units")),n.mode!=="math"&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" works only in math mode")):a&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" doesn't support mu units")}return{type:"kern",mode:n.mode,dimension:s.value}},htmlBuilder(t,e){return we.makeGlue(t.dimension,e)},mathmlBuilder(t,e){var n=Ir(t.dimension,e);return new Fe.SpaceNode(n)}});tt({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0];return{type:"lap",mode:n.mode,alignment:r.slice(5),body:s}},htmlBuilder:(t,e)=>{var n;t.alignment==="clap"?(n=we.makeSpan([],[qn(t.body,e)]),n=we.makeSpan(["inner"],[n],e)):n=we.makeSpan(["inner"],[qn(t.body,e)]);var r=we.makeSpan(["fix"],[]),s=we.makeSpan([t.alignment],[n,r],e),i=we.makeSpan(["strut"]);return i.style.height=Xe(s.height+s.depth),s.depth&&(i.style.verticalAlign=Xe(-s.depth)),s.children.unshift(i),s=we.makeSpan(["thinbox"],[s],e),we.makeSpan(["mord","vbox"],[s],e)},mathmlBuilder:(t,e)=>{var n=new Fe.MathNode("mpadded",[hr(t.body,e)]);if(t.alignment!=="rlap"){var r=t.alignment==="llap"?"-1":"-0.5";n.setAttribute("lspace",r+"width")}return n.setAttribute("width","0px"),n}});tt({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){var{funcName:n,parser:r}=t,s=r.mode;r.switchMode("math");var i=n==="\\("?"\\)":"$",a=r.parseExpression(!1,i);return r.expect(i),r.switchMode(s),{type:"styling",mode:r.mode,style:"text",body:a}}});tt({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){throw new qe("Mismatched "+t.funcName)}});var IR=(t,e)=>{switch(e.style.size){case At.DISPLAY.size:return t.display;case At.TEXT.size:return t.text;case At.SCRIPT.size:return t.script;case At.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}};tt({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(t,e)=>{var{parser:n}=t;return{type:"mathchoice",mode:n.mode,display:Gr(e[0]),text:Gr(e[1]),script:Gr(e[2]),scriptscript:Gr(e[3])}},htmlBuilder:(t,e)=>{var n=IR(t,e),r=ms(n,e,!1);return we.makeFragment(r)},mathmlBuilder:(t,e)=>{var n=IR(t,e);return iu(n,e)}});var zU=(t,e,n,r,s,i,a)=>{t=we.makeSpan([],[t]);var l=n&&Wn.isCharacterBox(n),c,d;if(e){var h=qn(e,r.havingStyle(s.sup()),r);d={elem:h,kern:Math.max(r.fontMetrics().bigOpSpacing1,r.fontMetrics().bigOpSpacing3-h.depth)}}if(n){var m=qn(n,r.havingStyle(s.sub()),r);c={elem:m,kern:Math.max(r.fontMetrics().bigOpSpacing2,r.fontMetrics().bigOpSpacing4-m.height)}}var g;if(d&&c){var x=r.fontMetrics().bigOpSpacing5+c.elem.height+c.elem.depth+c.kern+t.depth+a;g=we.makeVList({positionType:"bottom",positionData:x,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:c.elem,marginLeft:Xe(-i)},{type:"kern",size:c.kern},{type:"elem",elem:t},{type:"kern",size:d.kern},{type:"elem",elem:d.elem,marginLeft:Xe(i)},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else if(c){var y=t.height-a;g=we.makeVList({positionType:"top",positionData:y,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:c.elem,marginLeft:Xe(-i)},{type:"kern",size:c.kern},{type:"elem",elem:t}]},r)}else if(d){var w=t.depth+a;g=we.makeVList({positionType:"bottom",positionData:w,children:[{type:"elem",elem:t},{type:"kern",size:d.kern},{type:"elem",elem:d.elem,marginLeft:Xe(i)},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else return t;var S=[g];if(c&&i!==0&&!l){var k=we.makeSpan(["mspace"],[],r);k.style.marginRight=Xe(i),S.unshift(k)}return we.makeSpan(["mop","op-limits"],S,r)},IU=["\\smallint"],Hf=(t,e)=>{var n,r,s=!1,i;t.type==="supsub"?(n=t.sup,r=t.sub,i=nn(t.base,"op"),s=!0):i=nn(t,"op");var a=e.style,l=!1;a.size===At.DISPLAY.size&&i.symbol&&!IU.includes(i.name)&&(l=!0);var c;if(i.symbol){var d=l?"Size2-Regular":"Size1-Regular",h="";if((i.name==="\\oiint"||i.name==="\\oiiint")&&(h=i.name.slice(1),i.name=h==="oiint"?"\\iint":"\\iiint"),c=we.makeSymbol(i.name,d,"math",e,["mop","op-symbol",l?"large-op":"small-op"]),h.length>0){var m=c.italic,g=we.staticSvg(h+"Size"+(l?"2":"1"),e);c=we.makeVList({positionType:"individualShift",children:[{type:"elem",elem:c,shift:0},{type:"elem",elem:g,shift:l?.08:0}]},e),i.name="\\"+h,c.classes.unshift("mop"),c.italic=m}}else if(i.body){var x=ms(i.body,e,!0);x.length===1&&x[0]instanceof Ma?(c=x[0],c.classes[0]="mop"):c=we.makeSpan(["mop"],x,e)}else{for(var y=[],w=1;w{var n;if(t.symbol)n=new Ui("mo",[Ra(t.name,t.mode)]),IU.includes(t.name)&&n.setAttribute("largeop","false");else if(t.body)n=new Ui("mo",Mi(t.body,e));else{n=new Ui("mi",[new Ro(t.name.slice(1))]);var r=new Ui("mo",[Ra("⁡","text")]);t.parentIsSupSub?n=new Ui("mrow",[n,r]):n=dU([n,r])}return n},cke={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"};tt({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=r;return s.length===1&&(s=cke[s]),{type:"op",mode:n.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:s}},htmlBuilder:Hf,mathmlBuilder:wg});tt({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"op",mode:n.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:Gr(r)}},htmlBuilder:Hf,mathmlBuilder:wg});var uke={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"};tt({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(t){var{parser:e,funcName:n}=t;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:Hf,mathmlBuilder:wg});tt({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(t){var{parser:e,funcName:n}=t;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:Hf,mathmlBuilder:wg});tt({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],props:{numArgs:0},handler(t){var{parser:e,funcName:n}=t,r=n;return r.length===1&&(r=uke[r]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:r}},htmlBuilder:Hf,mathmlBuilder:wg});var LU=(t,e)=>{var n,r,s=!1,i;t.type==="supsub"?(n=t.sup,r=t.sub,i=nn(t.base,"operatorname"),s=!0):i=nn(t,"operatorname");var a;if(i.body.length>0){for(var l=i.body.map(m=>{var g=m.text;return typeof g=="string"?{type:"textord",mode:m.mode,text:g}:m}),c=ms(l,e.withFont("mathrm"),!0),d=0;d{for(var n=Mi(t.body,e.withFont("mathrm")),r=!0,s=0;sh.toText()).join("");n=[new Fe.TextNode(l)]}var c=new Fe.MathNode("mi",n);c.setAttribute("mathvariant","normal");var d=new Fe.MathNode("mo",[Ra("⁡","text")]);return t.parentIsSupSub?new Fe.MathNode("mrow",[c,d]):Fe.newDocumentFragment([c,d])};tt({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0];return{type:"operatorname",mode:n.mode,body:Gr(s),alwaysHandleSupSub:r==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},htmlBuilder:LU,mathmlBuilder:dke});J("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");Od({type:"ordgroup",htmlBuilder(t,e){return t.semisimple?we.makeFragment(ms(t.body,e,!1)):we.makeSpan(["mord"],ms(t.body,e,!0),e)},mathmlBuilder(t,e){return iu(t.body,e,!0)}});tt({type:"overline",names:["\\overline"],props:{numArgs:1},handler(t,e){var{parser:n}=t,r=e[0];return{type:"overline",mode:n.mode,body:r}},htmlBuilder(t,e){var n=qn(t.body,e.havingCrampedStyle()),r=we.makeLineSpan("overline-line",e),s=e.fontMetrics().defaultRuleThickness,i=we.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n},{type:"kern",size:3*s},{type:"elem",elem:r},{type:"kern",size:s}]},e);return we.makeSpan(["mord","overline"],[i],e)},mathmlBuilder(t,e){var n=new Fe.MathNode("mo",[new Fe.TextNode("‾")]);n.setAttribute("stretchy","true");var r=new Fe.MathNode("mover",[hr(t.body,e),n]);return r.setAttribute("accent","true"),r}});tt({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"phantom",mode:n.mode,body:Gr(r)}},htmlBuilder:(t,e)=>{var n=ms(t.body,e.withPhantom(),!1);return we.makeFragment(n)},mathmlBuilder:(t,e)=>{var n=Mi(t.body,e);return new Fe.MathNode("mphantom",n)}});tt({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"hphantom",mode:n.mode,body:r}},htmlBuilder:(t,e)=>{var n=we.makeSpan([],[qn(t.body,e.withPhantom())]);if(n.height=0,n.depth=0,n.children)for(var r=0;r{var n=Mi(Gr(t.body),e),r=new Fe.MathNode("mphantom",n),s=new Fe.MathNode("mpadded",[r]);return s.setAttribute("height","0px"),s.setAttribute("depth","0px"),s}});tt({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"vphantom",mode:n.mode,body:r}},htmlBuilder:(t,e)=>{var n=we.makeSpan(["inner"],[qn(t.body,e.withPhantom())]),r=we.makeSpan(["fix"],[]);return we.makeSpan(["mord","rlap"],[n,r],e)},mathmlBuilder:(t,e)=>{var n=Mi(Gr(t.body),e),r=new Fe.MathNode("mphantom",n),s=new Fe.MathNode("mpadded",[r]);return s.setAttribute("width","0px"),s}});tt({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(t,e){var{parser:n}=t,r=nn(e[0],"size").value,s=e[1];return{type:"raisebox",mode:n.mode,dy:r,body:s}},htmlBuilder(t,e){var n=qn(t.body,e),r=Ir(t.dy,e);return we.makeVList({positionType:"shift",positionData:-r,children:[{type:"elem",elem:n}]},e)},mathmlBuilder(t,e){var n=new Fe.MathNode("mpadded",[hr(t.body,e)]),r=t.dy.number+t.dy.unit;return n.setAttribute("voffset",r),n}});tt({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(t){var{parser:e}=t;return{type:"internal",mode:e.mode}}});tt({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(t,e,n){var{parser:r}=t,s=n[0],i=nn(e[0],"size"),a=nn(e[1],"size");return{type:"rule",mode:r.mode,shift:s&&nn(s,"size").value,width:i.value,height:a.value}},htmlBuilder(t,e){var n=we.makeSpan(["mord","rule"],[],e),r=Ir(t.width,e),s=Ir(t.height,e),i=t.shift?Ir(t.shift,e):0;return n.style.borderRightWidth=Xe(r),n.style.borderTopWidth=Xe(s),n.style.bottom=Xe(i),n.width=r,n.height=s+i,n.depth=-i,n.maxFontSize=s*1.125*e.sizeMultiplier,n},mathmlBuilder(t,e){var n=Ir(t.width,e),r=Ir(t.height,e),s=t.shift?Ir(t.shift,e):0,i=e.color&&e.getColor()||"black",a=new Fe.MathNode("mspace");a.setAttribute("mathbackground",i),a.setAttribute("width",Xe(n)),a.setAttribute("height",Xe(r));var l=new Fe.MathNode("mpadded",[a]);return s>=0?l.setAttribute("height",Xe(s)):(l.setAttribute("height",Xe(s)),l.setAttribute("depth",Xe(-s))),l.setAttribute("voffset",Xe(s)),l}});function BU(t,e,n){for(var r=ms(t,e,!1),s=e.sizeMultiplier/n.sizeMultiplier,i=0;i{var n=e.havingSize(t.size);return BU(t.body,n,e)};tt({type:"sizing",names:LR,props:{numArgs:0,allowedInText:!0},handler:(t,e)=>{var{breakOnTokenText:n,funcName:r,parser:s}=t,i=s.parseExpression(!1,n);return{type:"sizing",mode:s.mode,size:LR.indexOf(r)+1,body:i}},htmlBuilder:hke,mathmlBuilder:(t,e)=>{var n=e.havingSize(t.size),r=Mi(t.body,n),s=new Fe.MathNode("mstyle",r);return s.setAttribute("mathsize",Xe(n.sizeMultiplier)),s}});tt({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(t,e,n)=>{var{parser:r}=t,s=!1,i=!1,a=n[0]&&nn(n[0],"ordgroup");if(a)for(var l="",c=0;c{var n=we.makeSpan([],[qn(t.body,e)]);if(!t.smashHeight&&!t.smashDepth)return n;if(t.smashHeight&&(n.height=0,n.children))for(var r=0;r{var n=new Fe.MathNode("mpadded",[hr(t.body,e)]);return t.smashHeight&&n.setAttribute("height","0px"),t.smashDepth&&n.setAttribute("depth","0px"),n}});tt({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,n){var{parser:r}=t,s=n[0],i=e[0];return{type:"sqrt",mode:r.mode,body:i,index:s}},htmlBuilder(t,e){var n=qn(t.body,e.havingCrampedStyle());n.height===0&&(n.height=e.fontMetrics().xHeight),n=we.wrapFragment(n,e);var r=e.fontMetrics(),s=r.defaultRuleThickness,i=s;e.style.idn.height+n.depth+a&&(a=(a+m-n.height-n.depth)/2);var g=c.height-n.height-a-d;n.style.paddingLeft=Xe(h);var x=we.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:-(n.height+g)},{type:"elem",elem:c},{type:"kern",size:d}]},e);if(t.index){var y=e.havingStyle(At.SCRIPTSCRIPT),w=qn(t.index,y,e),S=.6*(x.height-x.depth),k=we.makeVList({positionType:"shift",positionData:-S,children:[{type:"elem",elem:w}]},e),j=we.makeSpan(["root"],[k]);return we.makeSpan(["mord","sqrt"],[j,x],e)}else return we.makeSpan(["mord","sqrt"],[x],e)},mathmlBuilder(t,e){var{body:n,index:r}=t;return r?new Fe.MathNode("mroot",[hr(n,e),hr(r,e)]):new Fe.MathNode("msqrt",[hr(n,e)])}});var BR={display:At.DISPLAY,text:At.TEXT,script:At.SCRIPT,scriptscript:At.SCRIPTSCRIPT};tt({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t,e){var{breakOnTokenText:n,funcName:r,parser:s}=t,i=s.parseExpression(!0,n),a=r.slice(1,r.length-5);return{type:"styling",mode:s.mode,style:a,body:i}},htmlBuilder(t,e){var n=BR[t.style],r=e.havingStyle(n).withFont("");return BU(t.body,r,e)},mathmlBuilder(t,e){var n=BR[t.style],r=e.havingStyle(n),s=Mi(t.body,r),i=new Fe.MathNode("mstyle",s),a={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},l=a[t.style];return i.setAttribute("scriptlevel",l[0]),i.setAttribute("displaystyle",l[1]),i}});var fke=function(e,n){var r=e.base;if(r)if(r.type==="op"){var s=r.limits&&(n.style.size===At.DISPLAY.size||r.alwaysHandleSupSub);return s?Hf:null}else if(r.type==="operatorname"){var i=r.alwaysHandleSupSub&&(n.style.size===At.DISPLAY.size||r.limits);return i?LU:null}else{if(r.type==="accent")return Wn.isCharacterBox(r.base)?LN:null;if(r.type==="horizBrace"){var a=!e.sub;return a===r.isOver?PU:null}else return null}else return null};Od({type:"supsub",htmlBuilder(t,e){var n=fke(t,e);if(n)return n(t,e);var{base:r,sup:s,sub:i}=t,a=qn(r,e),l,c,d=e.fontMetrics(),h=0,m=0,g=r&&Wn.isCharacterBox(r);if(s){var x=e.havingStyle(e.style.sup());l=qn(s,x,e),g||(h=a.height-x.fontMetrics().supDrop*x.sizeMultiplier/e.sizeMultiplier)}if(i){var y=e.havingStyle(e.style.sub());c=qn(i,y,e),g||(m=a.depth+y.fontMetrics().subDrop*y.sizeMultiplier/e.sizeMultiplier)}var w;e.style===At.DISPLAY?w=d.sup1:e.style.cramped?w=d.sup3:w=d.sup2;var S=e.sizeMultiplier,k=Xe(.5/d.ptPerEm/S),j=null;if(c){var N=t.base&&t.base.type==="op"&&t.base.name&&(t.base.name==="\\oiint"||t.base.name==="\\oiiint");(a instanceof Ma||N)&&(j=Xe(-a.italic))}var T;if(l&&c){h=Math.max(h,w,l.depth+.25*d.xHeight),m=Math.max(m,d.sub2);var E=d.defaultRuleThickness,_=4*E;if(h-l.depth-(c.height-m)<_){m=_-(h-l.depth)+c.height;var A=.8*d.xHeight-(h-l.depth);A>0&&(h+=A,m-=A)}var D=[{type:"elem",elem:c,shift:m,marginRight:k,marginLeft:j},{type:"elem",elem:l,shift:-h,marginRight:k}];T=we.makeVList({positionType:"individualShift",children:D},e)}else if(c){m=Math.max(m,d.sub1,c.height-.8*d.xHeight);var q=[{type:"elem",elem:c,marginLeft:j,marginRight:k}];T=we.makeVList({positionType:"shift",positionData:m,children:q},e)}else if(l)h=Math.max(h,w,l.depth+.25*d.xHeight),T=we.makeVList({positionType:"shift",positionData:-h,children:[{type:"elem",elem:l,marginRight:k}]},e);else throw new Error("supsub must have either sup or sub.");var B=VO(a,"right")||"mord";return we.makeSpan([B],[a,we.makeSpan(["msupsub"],[T])],e)},mathmlBuilder(t,e){var n=!1,r,s;t.base&&t.base.type==="horizBrace"&&(s=!!t.sup,s===t.base.isOver&&(n=!0,r=t.base.isOver)),t.base&&(t.base.type==="op"||t.base.type==="operatorname")&&(t.base.parentIsSupSub=!0);var i=[hr(t.base,e)];t.sub&&i.push(hr(t.sub,e)),t.sup&&i.push(hr(t.sup,e));var a;if(n)a=r?"mover":"munder";else if(t.sub)if(t.sup){var d=t.base;d&&d.type==="op"&&d.limits&&e.style===At.DISPLAY||d&&d.type==="operatorname"&&d.alwaysHandleSupSub&&(e.style===At.DISPLAY||d.limits)?a="munderover":a="msubsup"}else{var c=t.base;c&&c.type==="op"&&c.limits&&(e.style===At.DISPLAY||c.alwaysHandleSupSub)||c&&c.type==="operatorname"&&c.alwaysHandleSupSub&&(c.limits||e.style===At.DISPLAY)?a="munder":a="msub"}else{var l=t.base;l&&l.type==="op"&&l.limits&&(e.style===At.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||e.style===At.DISPLAY)?a="mover":a="msup"}return new Fe.MathNode(a,i)}});Od({type:"atom",htmlBuilder(t,e){return we.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder(t,e){var n=new Fe.MathNode("mo",[Ra(t.text,t.mode)]);if(t.family==="bin"){var r=zN(t,e);r==="bold-italic"&&n.setAttribute("mathvariant",r)}else t.family==="punct"?n.setAttribute("separator","true"):(t.family==="open"||t.family==="close")&&n.setAttribute("stretchy","false");return n}});var FU={mi:"italic",mn:"normal",mtext:"normal"};Od({type:"mathord",htmlBuilder(t,e){return we.makeOrd(t,e,"mathord")},mathmlBuilder(t,e){var n=new Fe.MathNode("mi",[Ra(t.text,t.mode,e)]),r=zN(t,e)||"italic";return r!==FU[n.type]&&n.setAttribute("mathvariant",r),n}});Od({type:"textord",htmlBuilder(t,e){return we.makeOrd(t,e,"textord")},mathmlBuilder(t,e){var n=Ra(t.text,t.mode,e),r=zN(t,e)||"normal",s;return t.mode==="text"?s=new Fe.MathNode("mtext",[n]):/[0-9]/.test(t.text)?s=new Fe.MathNode("mn",[n]):t.text==="\\prime"?s=new Fe.MathNode("mo",[n]):s=new Fe.MathNode("mi",[n]),r!==FU[s.type]&&s.setAttribute("mathvariant",r),s}});var o5={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},l5={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};Od({type:"spacing",htmlBuilder(t,e){if(l5.hasOwnProperty(t.text)){var n=l5[t.text].className||"";if(t.mode==="text"){var r=we.makeOrd(t,e,"textord");return r.classes.push(n),r}else return we.makeSpan(["mspace",n],[we.mathsym(t.text,t.mode,e)],e)}else{if(o5.hasOwnProperty(t.text))return we.makeSpan(["mspace",o5[t.text]],[],e);throw new qe('Unknown type of space "'+t.text+'"')}},mathmlBuilder(t,e){var n;if(l5.hasOwnProperty(t.text))n=new Fe.MathNode("mtext",[new Fe.TextNode(" ")]);else{if(o5.hasOwnProperty(t.text))return new Fe.MathNode("mspace");throw new qe('Unknown type of space "'+t.text+'"')}return n}});var FR=()=>{var t=new Fe.MathNode("mtd",[]);return t.setAttribute("width","50%"),t};Od({type:"tag",mathmlBuilder(t,e){var n=new Fe.MathNode("mtable",[new Fe.MathNode("mtr",[FR(),new Fe.MathNode("mtd",[iu(t.body,e)]),FR(),new Fe.MathNode("mtd",[iu(t.tag,e)])])]);return n.setAttribute("width","100%"),n}});var qR={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},$R={"\\textbf":"textbf","\\textmd":"textmd"},mke={"\\textit":"textit","\\textup":"textup"},HR=(t,e)=>{var n=t.font;if(n){if(qR[n])return e.withTextFontFamily(qR[n]);if($R[n])return e.withTextFontWeight($R[n]);if(n==="\\emph")return e.fontShape==="textit"?e.withTextFontShape("textup"):e.withTextFontShape("textit")}else return e;return e.withTextFontShape(mke[n])};tt({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];return{type:"text",mode:n.mode,body:Gr(s),font:r}},htmlBuilder(t,e){var n=HR(t,e),r=ms(t.body,n,!0);return we.makeSpan(["mord","text"],r,n)},mathmlBuilder(t,e){var n=HR(t,e);return iu(t.body,n)}});tt({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"underline",mode:n.mode,body:e[0]}},htmlBuilder(t,e){var n=qn(t.body,e),r=we.makeLineSpan("underline-line",e),s=e.fontMetrics().defaultRuleThickness,i=we.makeVList({positionType:"top",positionData:n.height,children:[{type:"kern",size:s},{type:"elem",elem:r},{type:"kern",size:3*s},{type:"elem",elem:n}]},e);return we.makeSpan(["mord","underline"],[i],e)},mathmlBuilder(t,e){var n=new Fe.MathNode("mo",[new Fe.TextNode("‾")]);n.setAttribute("stretchy","true");var r=new Fe.MathNode("munder",[hr(t.body,e),n]);return r.setAttribute("accentunder","true"),r}});tt({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(t,e){var{parser:n}=t;return{type:"vcenter",mode:n.mode,body:e[0]}},htmlBuilder(t,e){var n=qn(t.body,e),r=e.fontMetrics().axisHeight,s=.5*(n.height-r-(n.depth+r));return we.makeVList({positionType:"shift",positionData:s,children:[{type:"elem",elem:n}]},e)},mathmlBuilder(t,e){return new Fe.MathNode("mpadded",[hr(t.body,e)],["vcenter"])}});tt({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,e,n){throw new qe("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(t,e){for(var n=QR(t),r=[],s=e.havingStyle(e.style.text()),i=0;it.body.replace(/ /g,t.star?"␣":" "),Qc=cU,qU=`[ \r + ]`,pke="\\\\[a-zA-Z@]+",gke="\\\\[^\uD800-\uDFFF]",xke="("+pke+")"+qU+"*",vke=`\\\\( |[ \r ]+ -?)[ \r ]*`,UO="[̀-ͯ]",pke=new RegExp(UO+"+$"),gke="("+IU+"+)|"+(mke+"|")+"([!-\\[\\]-‧‪-퟿豈-￿]"+(UO+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(UO+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+fke)+("|"+hke+")");class BR{constructor(e,n){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=n,this.tokenRegex=new RegExp(gke,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,n){this.catcodes[e]=n}lex(){var e=this.input,n=this.tokenRegex.lastIndex;if(n===e.length)return new Xi("EOF",new pi(this,n,n));var r=this.tokenRegex.exec(e);if(r===null||r.index!==n)throw new $e("Unexpected character: '"+e[n]+"'",new Xi(e[n],new pi(this,n,n+1)));var s=r[6]||r[3]||(r[2]?"\\ ":" ");if(this.catcodes[s]===14){var i=e.indexOf(` -`,this.tokenRegex.lastIndex);return i===-1?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=i+1,this.lex()}return new Xi(s,new pi(this,n,this.tokenRegex.lastIndex))}}class xke{constructor(e,n){e===void 0&&(e={}),n===void 0&&(n={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=n,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new $e("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var n in e)e.hasOwnProperty(n)&&(e[n]==null?delete this.current[n]:this.current[n]=e[n])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,n,r){if(r===void 0&&(r=!1),r){for(var s=0;s0&&(this.undefStack[this.undefStack.length-1][e]=n)}else{var i=this.undefStack[this.undefStack.length-1];i&&!i.hasOwnProperty(e)&&(i[e]=this.current[e])}n==null?delete this.current[e]:this.current[e]=n}}var vke=NU;Z("\\noexpand",function(t){var e=t.popToken();return t.isExpandable(e.text)&&(e.noexpand=!0,e.treatAsRelax=!0),{tokens:[e],numArgs:0}});Z("\\expandafter",function(t){var e=t.popToken();return t.expandOnce(!0),{tokens:[e],numArgs:0}});Z("\\@firstoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[0],numArgs:0}});Z("\\@secondoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[1],numArgs:0}});Z("\\@ifnextchar",function(t){var e=t.consumeArgs(3);t.consumeSpaces();var n=t.future();return e[0].length===1&&e[0][0].text===n.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}});Z("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");Z("\\TextOrMath",function(t){var e=t.consumeArgs(2);return t.mode==="text"?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});var FR={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};Z("\\char",function(t){var e=t.popToken(),n,r="";if(e.text==="'")n=8,e=t.popToken();else if(e.text==='"')n=16,e=t.popToken();else if(e.text==="`")if(e=t.popToken(),e.text[0]==="\\")r=e.text.charCodeAt(1);else{if(e.text==="EOF")throw new $e("\\char` missing argument");r=e.text.charCodeAt(0)}else n=10;if(n){if(r=FR[e.text],r==null||r>=n)throw new $e("Invalid base-"+n+" digit "+e.text);for(var s;(s=FR[t.future().text])!=null&&s{var s=t.consumeArg().tokens;if(s.length!==1)throw new $e("\\newcommand's first argument must be a macro name");var i=s[0].text,a=t.isDefined(i);if(a&&!e)throw new $e("\\newcommand{"+i+"} attempting to redefine "+(i+"; use \\renewcommand"));if(!a&&!n)throw new $e("\\renewcommand{"+i+"} when command "+i+" does not yet exist; use \\newcommand");var l=0;if(s=t.consumeArg().tokens,s.length===1&&s[0].text==="["){for(var c="",d=t.expandNextToken();d.text!=="]"&&d.text!=="EOF";)c+=d.text,d=t.expandNextToken();if(!c.match(/^\s*[0-9]+\s*$/))throw new $e("Invalid number of arguments: "+c);l=parseInt(c),s=t.consumeArg().tokens}return a&&r||t.macros.set(i,{tokens:s,numArgs:l}),""};Z("\\newcommand",t=>FN(t,!1,!0,!1));Z("\\renewcommand",t=>FN(t,!0,!1,!1));Z("\\providecommand",t=>FN(t,!0,!0,!0));Z("\\message",t=>{var e=t.consumeArgs(1)[0];return console.log(e.reverse().map(n=>n.text).join("")),""});Z("\\errmessage",t=>{var e=t.consumeArgs(1)[0];return console.error(e.reverse().map(n=>n.text).join("")),""});Z("\\show",t=>{var e=t.popToken(),n=e.text;return console.log(e,t.macros.get(n),qc[n],dr.math[n],dr.text[n]),""});Z("\\bgroup","{");Z("\\egroup","}");Z("~","\\nobreakspace");Z("\\lq","`");Z("\\rq","'");Z("\\aa","\\r a");Z("\\AA","\\r A");Z("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}");Z("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");Z("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}");Z("ℬ","\\mathscr{B}");Z("ℰ","\\mathscr{E}");Z("ℱ","\\mathscr{F}");Z("ℋ","\\mathscr{H}");Z("ℐ","\\mathscr{I}");Z("ℒ","\\mathscr{L}");Z("ℳ","\\mathscr{M}");Z("ℛ","\\mathscr{R}");Z("ℭ","\\mathfrak{C}");Z("ℌ","\\mathfrak{H}");Z("ℨ","\\mathfrak{Z}");Z("\\Bbbk","\\Bbb{k}");Z("·","\\cdotp");Z("\\llap","\\mathllap{\\textrm{#1}}");Z("\\rlap","\\mathrlap{\\textrm{#1}}");Z("\\clap","\\mathclap{\\textrm{#1}}");Z("\\mathstrut","\\vphantom{(}");Z("\\underbar","\\underline{\\text{#1}}");Z("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');Z("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}");Z("\\ne","\\neq");Z("≠","\\neq");Z("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}");Z("∉","\\notin");Z("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}");Z("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}");Z("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}");Z("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}");Z("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}");Z("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}");Z("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}");Z("⟂","\\perp");Z("‼","\\mathclose{!\\mkern-0.8mu!}");Z("∌","\\notni");Z("⌜","\\ulcorner");Z("⌝","\\urcorner");Z("⌞","\\llcorner");Z("⌟","\\lrcorner");Z("©","\\copyright");Z("®","\\textregistered");Z("️","\\textregistered");Z("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');Z("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');Z("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');Z("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');Z("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");Z("⋮","\\vdots");Z("\\varGamma","\\mathit{\\Gamma}");Z("\\varDelta","\\mathit{\\Delta}");Z("\\varTheta","\\mathit{\\Theta}");Z("\\varLambda","\\mathit{\\Lambda}");Z("\\varXi","\\mathit{\\Xi}");Z("\\varPi","\\mathit{\\Pi}");Z("\\varSigma","\\mathit{\\Sigma}");Z("\\varUpsilon","\\mathit{\\Upsilon}");Z("\\varPhi","\\mathit{\\Phi}");Z("\\varPsi","\\mathit{\\Psi}");Z("\\varOmega","\\mathit{\\Omega}");Z("\\substack","\\begin{subarray}{c}#1\\end{subarray}");Z("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");Z("\\boxed","\\fbox{$\\displaystyle{#1}$}");Z("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");Z("\\implies","\\DOTSB\\;\\Longrightarrow\\;");Z("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");Z("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");Z("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var qR={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};Z("\\dots",function(t){var e="\\dotso",n=t.expandAfterFuture().text;return n in qR?e=qR[n]:(n.slice(0,4)==="\\not"||n in dr.math&&["bin","rel"].includes(dr.math[n].group))&&(e="\\dotsb"),e});var qN={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};Z("\\dotso",function(t){var e=t.future().text;return e in qN?"\\ldots\\,":"\\ldots"});Z("\\dotsc",function(t){var e=t.future().text;return e in qN&&e!==","?"\\ldots\\,":"\\ldots"});Z("\\cdots",function(t){var e=t.future().text;return e in qN?"\\@cdots\\,":"\\@cdots"});Z("\\dotsb","\\cdots");Z("\\dotsm","\\cdots");Z("\\dotsi","\\!\\cdots");Z("\\dotsx","\\ldots\\,");Z("\\DOTSI","\\relax");Z("\\DOTSB","\\relax");Z("\\DOTSX","\\relax");Z("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");Z("\\,","\\tmspace+{3mu}{.1667em}");Z("\\thinspace","\\,");Z("\\>","\\mskip{4mu}");Z("\\:","\\tmspace+{4mu}{.2222em}");Z("\\medspace","\\:");Z("\\;","\\tmspace+{5mu}{.2777em}");Z("\\thickspace","\\;");Z("\\!","\\tmspace-{3mu}{.1667em}");Z("\\negthinspace","\\!");Z("\\negmedspace","\\tmspace-{4mu}{.2222em}");Z("\\negthickspace","\\tmspace-{5mu}{.277em}");Z("\\enspace","\\kern.5em ");Z("\\enskip","\\hskip.5em\\relax");Z("\\quad","\\hskip1em\\relax");Z("\\qquad","\\hskip2em\\relax");Z("\\tag","\\@ifstar\\tag@literal\\tag@paren");Z("\\tag@paren","\\tag@literal{({#1})}");Z("\\tag@literal",t=>{if(t.macros.get("\\df@tag"))throw new $e("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});Z("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");Z("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");Z("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");Z("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");Z("\\newline","\\\\\\relax");Z("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var LU=Xe(_o["Main-Regular"][84][1]-.7*_o["Main-Regular"][65][1]);Z("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+LU+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");Z("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+LU+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");Z("\\hspace","\\@ifstar\\@hspacer\\@hspace");Z("\\@hspace","\\hskip #1\\relax");Z("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");Z("\\ordinarycolon",":");Z("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");Z("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');Z("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');Z("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');Z("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');Z("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');Z("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');Z("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');Z("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');Z("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');Z("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');Z("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');Z("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');Z("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');Z("∷","\\dblcolon");Z("∹","\\eqcolon");Z("≔","\\coloneqq");Z("≕","\\eqqcolon");Z("⩴","\\Coloneqq");Z("\\ratio","\\vcentcolon");Z("\\coloncolon","\\dblcolon");Z("\\colonequals","\\coloneqq");Z("\\coloncolonequals","\\Coloneqq");Z("\\equalscolon","\\eqqcolon");Z("\\equalscoloncolon","\\Eqqcolon");Z("\\colonminus","\\coloneq");Z("\\coloncolonminus","\\Coloneq");Z("\\minuscolon","\\eqcolon");Z("\\minuscoloncolon","\\Eqcolon");Z("\\coloncolonapprox","\\Colonapprox");Z("\\coloncolonsim","\\Colonsim");Z("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");Z("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");Z("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");Z("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");Z("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}");Z("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");Z("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");Z("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");Z("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");Z("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");Z("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");Z("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");Z("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");Z("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}");Z("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}");Z("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}");Z("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}");Z("\\nleqq","\\html@mathml{\\@nleqq}{≰}");Z("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}");Z("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}");Z("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}");Z("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}");Z("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}");Z("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}");Z("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}");Z("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}");Z("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}");Z("\\imath","\\html@mathml{\\@imath}{ı}");Z("\\jmath","\\html@mathml{\\@jmath}{ȷ}");Z("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}");Z("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}");Z("⟦","\\llbracket");Z("⟧","\\rrbracket");Z("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}");Z("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}");Z("⦃","\\lBrace");Z("⦄","\\rBrace");Z("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}");Z("⦵","\\minuso");Z("\\darr","\\downarrow");Z("\\dArr","\\Downarrow");Z("\\Darr","\\Downarrow");Z("\\lang","\\langle");Z("\\rang","\\rangle");Z("\\uarr","\\uparrow");Z("\\uArr","\\Uparrow");Z("\\Uarr","\\Uparrow");Z("\\N","\\mathbb{N}");Z("\\R","\\mathbb{R}");Z("\\Z","\\mathbb{Z}");Z("\\alef","\\aleph");Z("\\alefsym","\\aleph");Z("\\Alpha","\\mathrm{A}");Z("\\Beta","\\mathrm{B}");Z("\\bull","\\bullet");Z("\\Chi","\\mathrm{X}");Z("\\clubs","\\clubsuit");Z("\\cnums","\\mathbb{C}");Z("\\Complex","\\mathbb{C}");Z("\\Dagger","\\ddagger");Z("\\diamonds","\\diamondsuit");Z("\\empty","\\emptyset");Z("\\Epsilon","\\mathrm{E}");Z("\\Eta","\\mathrm{H}");Z("\\exist","\\exists");Z("\\harr","\\leftrightarrow");Z("\\hArr","\\Leftrightarrow");Z("\\Harr","\\Leftrightarrow");Z("\\hearts","\\heartsuit");Z("\\image","\\Im");Z("\\infin","\\infty");Z("\\Iota","\\mathrm{I}");Z("\\isin","\\in");Z("\\Kappa","\\mathrm{K}");Z("\\larr","\\leftarrow");Z("\\lArr","\\Leftarrow");Z("\\Larr","\\Leftarrow");Z("\\lrarr","\\leftrightarrow");Z("\\lrArr","\\Leftrightarrow");Z("\\Lrarr","\\Leftrightarrow");Z("\\Mu","\\mathrm{M}");Z("\\natnums","\\mathbb{N}");Z("\\Nu","\\mathrm{N}");Z("\\Omicron","\\mathrm{O}");Z("\\plusmn","\\pm");Z("\\rarr","\\rightarrow");Z("\\rArr","\\Rightarrow");Z("\\Rarr","\\Rightarrow");Z("\\real","\\Re");Z("\\reals","\\mathbb{R}");Z("\\Reals","\\mathbb{R}");Z("\\Rho","\\mathrm{P}");Z("\\sdot","\\cdot");Z("\\sect","\\S");Z("\\spades","\\spadesuit");Z("\\sub","\\subset");Z("\\sube","\\subseteq");Z("\\supe","\\supseteq");Z("\\Tau","\\mathrm{T}");Z("\\thetasym","\\vartheta");Z("\\weierp","\\wp");Z("\\Zeta","\\mathrm{Z}");Z("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");Z("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");Z("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");Z("\\bra","\\mathinner{\\langle{#1}|}");Z("\\ket","\\mathinner{|{#1}\\rangle}");Z("\\braket","\\mathinner{\\langle{#1}\\rangle}");Z("\\Bra","\\left\\langle#1\\right|");Z("\\Ket","\\left|#1\\right\\rangle");var BU=t=>e=>{var n=e.consumeArg().tokens,r=e.consumeArg().tokens,s=e.consumeArg().tokens,i=e.consumeArg().tokens,a=e.macros.get("|"),l=e.macros.get("\\|");e.macros.beginGroup();var c=m=>g=>{t&&(g.macros.set("|",a),s.length&&g.macros.set("\\|",l));var x=m;if(!m&&s.length){var y=g.future();y.text==="|"&&(g.popToken(),x=!0)}return{tokens:x?s:r,numArgs:0}};e.macros.set("|",c(!1)),s.length&&e.macros.set("\\|",c(!0));var d=e.consumeArg().tokens,h=e.expandTokens([...i,...d,...n]);return e.macros.endGroup(),{tokens:h.reverse(),numArgs:0}};Z("\\bra@ket",BU(!1));Z("\\bra@set",BU(!0));Z("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");Z("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");Z("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");Z("\\angln","{\\angl n}");Z("\\blue","\\textcolor{##6495ed}{#1}");Z("\\orange","\\textcolor{##ffa500}{#1}");Z("\\pink","\\textcolor{##ff00af}{#1}");Z("\\red","\\textcolor{##df0030}{#1}");Z("\\green","\\textcolor{##28ae7b}{#1}");Z("\\gray","\\textcolor{gray}{#1}");Z("\\purple","\\textcolor{##9d38bd}{#1}");Z("\\blueA","\\textcolor{##ccfaff}{#1}");Z("\\blueB","\\textcolor{##80f6ff}{#1}");Z("\\blueC","\\textcolor{##63d9ea}{#1}");Z("\\blueD","\\textcolor{##11accd}{#1}");Z("\\blueE","\\textcolor{##0c7f99}{#1}");Z("\\tealA","\\textcolor{##94fff5}{#1}");Z("\\tealB","\\textcolor{##26edd5}{#1}");Z("\\tealC","\\textcolor{##01d1c1}{#1}");Z("\\tealD","\\textcolor{##01a995}{#1}");Z("\\tealE","\\textcolor{##208170}{#1}");Z("\\greenA","\\textcolor{##b6ffb0}{#1}");Z("\\greenB","\\textcolor{##8af281}{#1}");Z("\\greenC","\\textcolor{##74cf70}{#1}");Z("\\greenD","\\textcolor{##1fab54}{#1}");Z("\\greenE","\\textcolor{##0d923f}{#1}");Z("\\goldA","\\textcolor{##ffd0a9}{#1}");Z("\\goldB","\\textcolor{##ffbb71}{#1}");Z("\\goldC","\\textcolor{##ff9c39}{#1}");Z("\\goldD","\\textcolor{##e07d10}{#1}");Z("\\goldE","\\textcolor{##a75a05}{#1}");Z("\\redA","\\textcolor{##fca9a9}{#1}");Z("\\redB","\\textcolor{##ff8482}{#1}");Z("\\redC","\\textcolor{##f9685d}{#1}");Z("\\redD","\\textcolor{##e84d39}{#1}");Z("\\redE","\\textcolor{##bc2612}{#1}");Z("\\maroonA","\\textcolor{##ffbde0}{#1}");Z("\\maroonB","\\textcolor{##ff92c6}{#1}");Z("\\maroonC","\\textcolor{##ed5fa6}{#1}");Z("\\maroonD","\\textcolor{##ca337c}{#1}");Z("\\maroonE","\\textcolor{##9e034e}{#1}");Z("\\purpleA","\\textcolor{##ddd7ff}{#1}");Z("\\purpleB","\\textcolor{##c6b9fc}{#1}");Z("\\purpleC","\\textcolor{##aa87ff}{#1}");Z("\\purpleD","\\textcolor{##7854ab}{#1}");Z("\\purpleE","\\textcolor{##543b78}{#1}");Z("\\mintA","\\textcolor{##f5f9e8}{#1}");Z("\\mintB","\\textcolor{##edf2df}{#1}");Z("\\mintC","\\textcolor{##e0e5cc}{#1}");Z("\\grayA","\\textcolor{##f6f7f7}{#1}");Z("\\grayB","\\textcolor{##f0f1f2}{#1}");Z("\\grayC","\\textcolor{##e3e5e6}{#1}");Z("\\grayD","\\textcolor{##d6d8da}{#1}");Z("\\grayE","\\textcolor{##babec2}{#1}");Z("\\grayF","\\textcolor{##888d93}{#1}");Z("\\grayG","\\textcolor{##626569}{#1}");Z("\\grayH","\\textcolor{##3b3e40}{#1}");Z("\\grayI","\\textcolor{##21242c}{#1}");Z("\\kaBlue","\\textcolor{##314453}{#1}");Z("\\kaGreen","\\textcolor{##71B307}{#1}");var FU={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class yke{constructor(e,n,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=n,this.expansionCount=0,this.feed(e),this.macros=new xke(vke,n.macros),this.mode=r,this.stack=[]}feed(e){this.lexer=new BR(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var n,r,s;if(e){if(this.consumeSpaces(),this.future().text!=="[")return null;n=this.popToken(),{tokens:s,end:r}=this.consumeArg(["]"])}else({tokens:s,start:n,end:r}=this.consumeArg());return this.pushToken(new Xi("EOF",r.loc)),this.pushTokens(s),new Xi("",pi.range(n,r))}consumeSpaces(){for(;;){var e=this.future();if(e.text===" ")this.stack.pop();else break}}consumeArg(e){var n=[],r=e&&e.length>0;r||this.consumeSpaces();var s=this.future(),i,a=0,l=0;do{if(i=this.popToken(),n.push(i),i.text==="{")++a;else if(i.text==="}"){if(--a,a===-1)throw new $e("Extra }",i)}else if(i.text==="EOF")throw new $e("Unexpected end of input in a macro argument, expected '"+(e&&r?e[l]:"}")+"'",i);if(e&&r)if((a===0||a===1&&e[l]==="{")&&i.text===e[l]){if(++l,l===e.length){n.splice(-l,l);break}}else l=0}while(a!==0||r);return s.text==="{"&&n[n.length-1].text==="}"&&(n.pop(),n.shift()),n.reverse(),{tokens:n,start:s,end:i}}consumeArgs(e,n){if(n){if(n.length!==e+1)throw new $e("The length of delimiters doesn't match the number of args!");for(var r=n[0],s=0;sthis.settings.maxExpand)throw new $e("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var n=this.popToken(),r=n.text,s=n.noexpand?null:this._getExpansion(r);if(s==null||e&&s.unexpandable){if(e&&s==null&&r[0]==="\\"&&!this.isDefined(r))throw new $e("Undefined control sequence: "+r);return this.pushToken(n),!1}this.countExpansion(1);var i=s.tokens,a=this.consumeArgs(s.numArgs,s.delimiters);if(s.numArgs){i=i.slice();for(var l=i.length-1;l>=0;--l){var c=i[l];if(c.text==="#"){if(l===0)throw new $e("Incomplete placeholder at end of macro body",c);if(c=i[--l],c.text==="#")i.splice(l+1,1);else if(/^[1-9]$/.test(c.text))i.splice(l,2,...a[+c.text-1]);else throw new $e("Not a valid argument number",c)}}}return this.pushTokens(i),i.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new Xi(e)]):void 0}expandTokens(e){var n=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;)if(this.expandOnce(!0)===!1){var s=this.stack.pop();s.treatAsRelax&&(s.noexpand=!1,s.treatAsRelax=!1),n.push(s)}return this.countExpansion(n.length),n}expandMacroAsText(e){var n=this.expandMacro(e);return n&&n.map(r=>r.text).join("")}_getExpansion(e){var n=this.macros.get(e);if(n==null)return n;if(e.length===1){var r=this.lexer.catcodes[e];if(r!=null&&r!==13)return}var s=typeof n=="function"?n(this):n;if(typeof s=="string"){var i=0;if(s.indexOf("#")!==-1)for(var a=s.replace(/##/g,"");a.indexOf("#"+(i+1))!==-1;)++i;for(var l=new BR(s,this.settings),c=[],d=l.lex();d.text!=="EOF";)c.push(d),d=l.lex();c.reverse();var h={tokens:c,numArgs:i};return h}return s}isDefined(e){return this.macros.has(e)||qc.hasOwnProperty(e)||dr.math.hasOwnProperty(e)||dr.text.hasOwnProperty(e)||FU.hasOwnProperty(e)}isExpandable(e){var n=this.macros.get(e);return n!=null?typeof n=="string"||typeof n=="function"||!n.unexpandable:qc.hasOwnProperty(e)&&!qc[e].primitive}}var $R=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,B1=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g",ʰ:"h","ⁱ":"i",ʲ:"j","ᵏ":"k",ˡ:"l","ᵐ":"m",ⁿ:"n","ᵒ":"o","ᵖ":"p",ʳ:"r",ˢ:"s","ᵗ":"t","ᵘ":"u","ᵛ":"v",ʷ:"w",ˣ:"x",ʸ:"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),i5={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},HR={á:"á",à:"à",ä:"ä",ǟ:"ǟ",ã:"ã",ā:"ā",ă:"ă",ắ:"ắ",ằ:"ằ",ẵ:"ẵ",ǎ:"ǎ",â:"â",ấ:"ấ",ầ:"ầ",ẫ:"ẫ",ȧ:"ȧ",ǡ:"ǡ",å:"å",ǻ:"ǻ",ḃ:"ḃ",ć:"ć",ḉ:"ḉ",č:"č",ĉ:"ĉ",ċ:"ċ",ç:"ç",ď:"ď",ḋ:"ḋ",ḑ:"ḑ",é:"é",è:"è",ë:"ë",ẽ:"ẽ",ē:"ē",ḗ:"ḗ",ḕ:"ḕ",ĕ:"ĕ",ḝ:"ḝ",ě:"ě",ê:"ê",ế:"ế",ề:"ề",ễ:"ễ",ė:"ė",ȩ:"ȩ",ḟ:"ḟ",ǵ:"ǵ",ḡ:"ḡ",ğ:"ğ",ǧ:"ǧ",ĝ:"ĝ",ġ:"ġ",ģ:"ģ",ḧ:"ḧ",ȟ:"ȟ",ĥ:"ĥ",ḣ:"ḣ",ḩ:"ḩ",í:"í",ì:"ì",ï:"ï",ḯ:"ḯ",ĩ:"ĩ",ī:"ī",ĭ:"ĭ",ǐ:"ǐ",î:"î",ǰ:"ǰ",ĵ:"ĵ",ḱ:"ḱ",ǩ:"ǩ",ķ:"ķ",ĺ:"ĺ",ľ:"ľ",ļ:"ļ",ḿ:"ḿ",ṁ:"ṁ",ń:"ń",ǹ:"ǹ",ñ:"ñ",ň:"ň",ṅ:"ṅ",ņ:"ņ",ó:"ó",ò:"ò",ö:"ö",ȫ:"ȫ",õ:"õ",ṍ:"ṍ",ṏ:"ṏ",ȭ:"ȭ",ō:"ō",ṓ:"ṓ",ṑ:"ṑ",ŏ:"ŏ",ǒ:"ǒ",ô:"ô",ố:"ố",ồ:"ồ",ỗ:"ỗ",ȯ:"ȯ",ȱ:"ȱ",ő:"ő",ṕ:"ṕ",ṗ:"ṗ",ŕ:"ŕ",ř:"ř",ṙ:"ṙ",ŗ:"ŗ",ś:"ś",ṥ:"ṥ",š:"š",ṧ:"ṧ",ŝ:"ŝ",ṡ:"ṡ",ş:"ş",ẗ:"ẗ",ť:"ť",ṫ:"ṫ",ţ:"ţ",ú:"ú",ù:"ù",ü:"ü",ǘ:"ǘ",ǜ:"ǜ",ǖ:"ǖ",ǚ:"ǚ",ũ:"ũ",ṹ:"ṹ",ū:"ū",ṻ:"ṻ",ŭ:"ŭ",ǔ:"ǔ",û:"û",ů:"ů",ű:"ű",ṽ:"ṽ",ẃ:"ẃ",ẁ:"ẁ",ẅ:"ẅ",ŵ:"ŵ",ẇ:"ẇ",ẘ:"ẘ",ẍ:"ẍ",ẋ:"ẋ",ý:"ý",ỳ:"ỳ",ÿ:"ÿ",ỹ:"ỹ",ȳ:"ȳ",ŷ:"ŷ",ẏ:"ẏ",ẙ:"ẙ",ź:"ź",ž:"ž",ẑ:"ẑ",ż:"ż",Á:"Á",À:"À",Ä:"Ä",Ǟ:"Ǟ",Ã:"Ã",Ā:"Ā",Ă:"Ă",Ắ:"Ắ",Ằ:"Ằ",Ẵ:"Ẵ",Ǎ:"Ǎ",Â:"Â",Ấ:"Ấ",Ầ:"Ầ",Ẫ:"Ẫ",Ȧ:"Ȧ",Ǡ:"Ǡ",Å:"Å",Ǻ:"Ǻ",Ḃ:"Ḃ",Ć:"Ć",Ḉ:"Ḉ",Č:"Č",Ĉ:"Ĉ",Ċ:"Ċ",Ç:"Ç",Ď:"Ď",Ḋ:"Ḋ",Ḑ:"Ḑ",É:"É",È:"È",Ë:"Ë",Ẽ:"Ẽ",Ē:"Ē",Ḗ:"Ḗ",Ḕ:"Ḕ",Ĕ:"Ĕ",Ḝ:"Ḝ",Ě:"Ě",Ê:"Ê",Ế:"Ế",Ề:"Ề",Ễ:"Ễ",Ė:"Ė",Ȩ:"Ȩ",Ḟ:"Ḟ",Ǵ:"Ǵ",Ḡ:"Ḡ",Ğ:"Ğ",Ǧ:"Ǧ",Ĝ:"Ĝ",Ġ:"Ġ",Ģ:"Ģ",Ḧ:"Ḧ",Ȟ:"Ȟ",Ĥ:"Ĥ",Ḣ:"Ḣ",Ḩ:"Ḩ",Í:"Í",Ì:"Ì",Ï:"Ï",Ḯ:"Ḯ",Ĩ:"Ĩ",Ī:"Ī",Ĭ:"Ĭ",Ǐ:"Ǐ",Î:"Î",İ:"İ",Ĵ:"Ĵ",Ḱ:"Ḱ",Ǩ:"Ǩ",Ķ:"Ķ",Ĺ:"Ĺ",Ľ:"Ľ",Ļ:"Ļ",Ḿ:"Ḿ",Ṁ:"Ṁ",Ń:"Ń",Ǹ:"Ǹ",Ñ:"Ñ",Ň:"Ň",Ṅ:"Ṅ",Ņ:"Ņ",Ó:"Ó",Ò:"Ò",Ö:"Ö",Ȫ:"Ȫ",Õ:"Õ",Ṍ:"Ṍ",Ṏ:"Ṏ",Ȭ:"Ȭ",Ō:"Ō",Ṓ:"Ṓ",Ṑ:"Ṑ",Ŏ:"Ŏ",Ǒ:"Ǒ",Ô:"Ô",Ố:"Ố",Ồ:"Ồ",Ỗ:"Ỗ",Ȯ:"Ȯ",Ȱ:"Ȱ",Ő:"Ő",Ṕ:"Ṕ",Ṗ:"Ṗ",Ŕ:"Ŕ",Ř:"Ř",Ṙ:"Ṙ",Ŗ:"Ŗ",Ś:"Ś",Ṥ:"Ṥ",Š:"Š",Ṧ:"Ṧ",Ŝ:"Ŝ",Ṡ:"Ṡ",Ş:"Ş",Ť:"Ť",Ṫ:"Ṫ",Ţ:"Ţ",Ú:"Ú",Ù:"Ù",Ü:"Ü",Ǘ:"Ǘ",Ǜ:"Ǜ",Ǖ:"Ǖ",Ǚ:"Ǚ",Ũ:"Ũ",Ṹ:"Ṹ",Ū:"Ū",Ṻ:"Ṻ",Ŭ:"Ŭ",Ǔ:"Ǔ",Û:"Û",Ů:"Ů",Ű:"Ű",Ṽ:"Ṽ",Ẃ:"Ẃ",Ẁ:"Ẁ",Ẅ:"Ẅ",Ŵ:"Ŵ",Ẇ:"Ẇ",Ẍ:"Ẍ",Ẋ:"Ẋ",Ý:"Ý",Ỳ:"Ỳ",Ÿ:"Ÿ",Ỹ:"Ỹ",Ȳ:"Ȳ",Ŷ:"Ŷ",Ẏ:"Ẏ",Ź:"Ź",Ž:"Ž",Ẑ:"Ẑ",Ż:"Ż",ά:"ά",ὰ:"ὰ",ᾱ:"ᾱ",ᾰ:"ᾰ",έ:"έ",ὲ:"ὲ",ή:"ή",ὴ:"ὴ",ί:"ί",ὶ:"ὶ",ϊ:"ϊ",ΐ:"ΐ",ῒ:"ῒ",ῑ:"ῑ",ῐ:"ῐ",ό:"ό",ὸ:"ὸ",ύ:"ύ",ὺ:"ὺ",ϋ:"ϋ",ΰ:"ΰ",ῢ:"ῢ",ῡ:"ῡ",ῠ:"ῠ",ώ:"ώ",ὼ:"ὼ",Ύ:"Ύ",Ὺ:"Ὺ",Ϋ:"Ϋ",Ῡ:"Ῡ",Ῠ:"Ῠ",Ώ:"Ώ",Ὼ:"Ὼ"};class Wb{constructor(e,n){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new yke(e,n,this.mode),this.settings=n,this.leftrightDepth=0}expect(e,n){if(n===void 0&&(n=!0),this.fetch().text!==e)throw new $e("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());n&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var n=this.nextToken;this.consume(),this.gullet.pushToken(new Xi("}")),this.gullet.pushTokens(e);var r=this.parseExpression(!1);return this.expect("}"),this.nextToken=n,r}parseExpression(e,n){for(var r=[];;){this.mode==="math"&&this.consumeSpaces();var s=this.fetch();if(Wb.endOfExpression.indexOf(s.text)!==-1||n&&s.text===n||e&&qc[s.text]&&qc[s.text].infix)break;var i=this.parseAtom(n);if(i){if(i.type==="internal")continue}else break;r.push(i)}return this.mode==="text"&&this.formLigatures(r),this.handleInfixNodes(r)}handleInfixNodes(e){for(var n=-1,r,s=0;s=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+n[0]+'" used in math mode',e);var l=dr[this.mode][n].group,c=pi.range(e),d;if(o3e.hasOwnProperty(l)){var h=l;d={type:"atom",mode:this.mode,family:h,loc:c,text:n}}else d={type:l,mode:this.mode,loc:c,text:n};a=d}else if(n.charCodeAt(0)>=128)this.settings.strict&&(XV(n.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+n[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+n[0]+'"'+(" ("+n.charCodeAt(0)+")"),e)),a={type:"textord",mode:"text",loc:pi.range(e),text:n};else return null;if(this.consume(),i)for(var m=0;md&&(d=h):h&&(d!==void 0&&d>-1&&c.push(` -`.repeat(d)||" "),d=-1,c.push(h))}return c.join("")}function WU(t,e,n){return t.type==="element"?Yke(t,e,n):t.type==="text"?n.whitespace==="normal"?GU(t,n):Kke(t):[]}function Yke(t,e,n){const r=XU(t,n),s=t.children||[];let i=-1,a=[];if(Gke(t))return a;let l,c;for(GO(t)||ZR(t)&&GR(e,t,ZR)?c=` -`:Wke(t)?(l=2,c=2):UU(t)&&(l=1,c=1);++i{try{i(!0);const Oe=await oOe({page:a,page_size:h,is_registered:g==="all"?void 0:g==="registered",is_banned:y==="all"?void 0:y==="banned",format:S==="all"?void 0:S,sort_by:j,sort_order:T});e(Oe.data),d(Oe.total)}catch(Oe){const Ve=Oe instanceof Error?Oe.message:"加载表情包列表失败";G({title:"错误",description:Ve,variant:"destructive"})}finally{i(!1)}},[a,h,g,y,S,j,T,G]),V=async()=>{try{const Oe=await dOe();r(Oe.data)}catch(Oe){console.error("加载统计数据失败:",Oe)}};b.useEffect(()=>{I()},[I]),b.useEffect(()=>{V()},[]);const ee=async Oe=>{try{const Ve=await lOe(Oe.id);A(Ve.data),P(!0)}catch(Ve){const Ue=Ve instanceof Error?Ve.message:"加载详情失败";G({title:"错误",description:Ue,variant:"destructive"})}},ne=Oe=>{A(Oe),$(!0)},W=Oe=>{A(Oe),te(!0)},se=async()=>{if(_)try{await uOe(_.id),G({title:"成功",description:"表情包已删除"}),te(!1),A(null),I(),V()}catch(Oe){const Ve=Oe instanceof Error?Oe.message:"删除失败";G({title:"错误",description:Ve,variant:"destructive"})}},re=async Oe=>{try{await hOe(Oe.id),G({title:"成功",description:"表情包已注册"}),I(),V()}catch(Ve){const Ue=Ve instanceof Error?Ve.message:"注册失败";G({title:"错误",description:Ue,variant:"destructive"})}},oe=async Oe=>{try{await fOe(Oe.id),G({title:"成功",description:"表情包已封禁"}),I(),V()}catch(Ve){const Ue=Ve instanceof Error?Ve.message:"封禁失败";G({title:"错误",description:Ue,variant:"destructive"})}},Te=Oe=>{const Ve=new Set(z);Ve.has(Oe)?Ve.delete(Oe):Ve.add(Oe),Q(Ve)},We=async()=>{try{const Oe=await mOe(Array.from(z));G({title:"批量删除完成",description:Oe.message}),Q(new Set),Y(!1),I(),V()}catch(Oe){G({title:"批量删除失败",description:Oe instanceof Error?Oe.message:"批量删除失败",variant:"destructive"})}},Ye=()=>{const Oe=parseInt(J),Ve=Math.ceil(c/h);Oe>=1&&Oe<=Ve?(l(Oe),X("")):G({title:"无效的页码",description:`请输入1-${Ve}之间的页码`,variant:"destructive"})},Je=n?.formats?Object.keys(n.formats):[];return o.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[o.jsxs("div",{className:"mb-4 sm:mb-6",children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"表情包管理"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理麦麦的表情包资源"})]}),o.jsx(gn,{className:"flex-1",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[n&&o.jsxs("div",{className:"grid gap-4 grid-cols-2 lg:grid-cols-4",children:[o.jsx(qt,{children:o.jsxs(Fn,{className:"pb-2",children:[o.jsx(ts,{children:"总数"}),o.jsx(qn,{className:"text-2xl",children:n.total})]})}),o.jsx(qt,{children:o.jsxs(Fn,{className:"pb-2",children:[o.jsx(ts,{children:"已注册"}),o.jsx(qn,{className:"text-2xl text-green-600",children:n.registered})]})}),o.jsx(qt,{children:o.jsxs(Fn,{className:"pb-2",children:[o.jsx(ts,{children:"已封禁"}),o.jsx(qn,{className:"text-2xl text-red-600",children:n.banned})]})}),o.jsx(qt,{children:o.jsxs(Fn,{className:"pb-2",children:[o.jsx(ts,{children:"未注册"}),o.jsx(qn,{className:"text-2xl text-gray-600",children:n.unregistered})]})})]}),o.jsxs(qt,{children:[o.jsx(Fn,{children:o.jsxs(qn,{className:"flex items-center gap-2",children:[o.jsx(sk,{className:"h-5 w-5"}),"筛选和排序"]})}),o.jsxs(Gn,{className:"space-y-4",children:[o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:"排序方式"}),o.jsxs(Vt,{value:`${j}-${T}`,onValueChange:Oe=>{const[Ve,Ue]=Oe.split("-");N(Ve),E(Ue),l(1)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"usage_count-desc",children:"使用次数 (多→少)"}),o.jsx(De,{value:"usage_count-asc",children:"使用次数 (少→多)"}),o.jsx(De,{value:"register_time-desc",children:"注册时间 (新→旧)"}),o.jsx(De,{value:"register_time-asc",children:"注册时间 (旧→新)"}),o.jsx(De,{value:"record_time-desc",children:"记录时间 (新→旧)"}),o.jsx(De,{value:"record_time-asc",children:"记录时间 (旧→新)"}),o.jsx(De,{value:"last_used_time-desc",children:"最后使用 (新→旧)"}),o.jsx(De,{value:"last_used_time-asc",children:"最后使用 (旧→新)"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:"注册状态"}),o.jsxs(Vt,{value:g,onValueChange:Oe=>{x(Oe),l(1)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部"}),o.jsx(De,{value:"registered",children:"已注册"}),o.jsx(De,{value:"unregistered",children:"未注册"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:"封禁状态"}),o.jsxs(Vt,{value:y,onValueChange:Oe=>{w(Oe),l(1)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部"}),o.jsx(De,{value:"banned",children:"已封禁"}),o.jsx(De,{value:"unbanned",children:"未封禁"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:"格式"}),o.jsxs(Vt,{value:S,onValueChange:Oe=>{k(Oe),l(1)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部"}),Je.map(Oe=>o.jsxs(De,{value:Oe,children:[Oe.toUpperCase()," (",n?.formats[Oe],")"]},Oe))]})]})]})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 pt-4 border-t",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[z.size>0&&o.jsxs("span",{className:"text-sm text-muted-foreground",children:["已选择 ",z.size," 个表情包"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{className:"text-sm whitespace-nowrap",children:"卡片大小"}),o.jsxs(Vt,{value:R,onValueChange:Oe=>ie(Oe),children:[o.jsx($t,{className:"w-24",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"small",children:"小"}),o.jsx(De,{value:"medium",children:"中"}),o.jsx(De,{value:"large",children:"大"})]})]})]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{htmlFor:"emoji-page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:h.toString(),onValueChange:Oe=>{m(parseInt(Oe)),l(1),Q(new Set)},children:[o.jsx($t,{id:"emoji-page-size",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"40",children:"40"}),o.jsx(De,{value:"60",children:"60"}),o.jsx(De,{value:"100",children:"100"})]})]}),z.size>0&&o.jsxs(o.Fragment,{children:[o.jsx(de,{variant:"outline",size:"sm",onClick:()=>Q(new Set),children:"取消选择"}),o.jsxs(de,{variant:"destructive",size:"sm",onClick:()=>Y(!0),children:[o.jsx(Sn,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]}),o.jsx("div",{className:"flex justify-end pt-4 border-t",children:o.jsxs(de,{variant:"outline",size:"sm",onClick:I,disabled:s,children:[o.jsx(Ps,{className:`h-4 w-4 mr-2 ${s?"animate-spin":""}`}),"刷新"]})})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"表情包列表"}),o.jsxs(ts,{children:["共 ",c," 个表情包,当前第 ",a," 页"]})]}),o.jsxs(Gn,{children:[t.length===0?o.jsx("div",{className:"text-center py-12 text-muted-foreground",children:"暂无数据"}):o.jsx("div",{className:`grid gap-3 ${R==="small"?"grid-cols-3 sm:grid-cols-4 md:grid-cols-6 lg:grid-cols-8 xl:grid-cols-10":R==="medium"?"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 xl:grid-cols-8":"grid-cols-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5"}`,children:t.map(Oe=>o.jsxs("div",{className:`group relative rounded-lg border bg-card overflow-hidden hover:ring-2 hover:ring-primary transition-all cursor-pointer ${z.has(Oe.id)?"ring-2 ring-primary bg-primary/5":""}`,onClick:()=>Te(Oe.id),children:[o.jsx("div",{className:`absolute top-1 left-1 z-10 transition-opacity ${z.has(Oe.id)?"opacity-100":"opacity-0 group-hover:opacity-100"}`,children:o.jsx("div",{className:`w-5 h-5 rounded-full border-2 flex items-center justify-center ${z.has(Oe.id)?"bg-primary border-primary text-primary-foreground":"bg-background/80 border-muted-foreground/50"}`,children:z.has(Oe.id)&&o.jsx(Vc,{className:"h-3 w-3"})})}),o.jsxs("div",{className:"absolute top-1 right-1 z-10 flex flex-col gap-0.5",children:[Oe.is_registered&&o.jsx(Xn,{variant:"default",className:"bg-green-600 text-[10px] px-1 py-0",children:"已注册"}),Oe.is_banned&&o.jsx(Xn,{variant:"destructive",className:"text-[10px] px-1 py-0",children:"已封禁"})]}),o.jsx("div",{className:`aspect-square bg-muted flex items-center justify-center overflow-hidden ${R==="small"?"p-1":R==="medium"?"p-2":"p-3"}`,children:o.jsx("img",{src:YU(Oe.id),alt:"表情包",className:"w-full h-full object-contain",loading:"lazy",onError:Ve=>{const Ue=Ve.target;Ue.style.display="none";const He=Ue.parentElement;He&&(He.innerHTML='')}})}),o.jsxs("div",{className:`border-t bg-card ${R==="small"?"p-1":"p-2"}`,children:[o.jsxs("div",{className:"flex items-center justify-between gap-1 text-xs text-muted-foreground mb-1",children:[o.jsx(Xn,{variant:"outline",className:"text-[10px] px-1 py-0",children:Oe.format.toUpperCase()}),o.jsxs("span",{className:"font-mono",children:[Oe.usage_count,"次"]})]}),o.jsxs("div",{className:`flex gap-1 justify-center opacity-0 group-hover:opacity-100 transition-opacity ${R==="small"?"flex-wrap":""}`,children:[o.jsx(de,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:Ve=>{Ve.stopPropagation(),ne(Oe)},title:"编辑",children:o.jsx(z0,{className:"h-3 w-3"})}),o.jsx(de,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:Ve=>{Ve.stopPropagation(),ee(Oe)},title:"详情",children:o.jsx(Oa,{className:"h-3 w-3"})}),!Oe.is_registered&&o.jsx(de,{variant:"ghost",size:"icon",className:"h-6 w-6 text-green-600 hover:text-green-700",onClick:Ve=>{Ve.stopPropagation(),re(Oe)},title:"注册",children:o.jsx(Vc,{className:"h-3 w-3"})}),!Oe.is_banned&&o.jsx(de,{variant:"ghost",size:"icon",className:"h-6 w-6 text-orange-600 hover:text-orange-700",onClick:Ve=>{Ve.stopPropagation(),oe(Oe)},title:"封禁",children:o.jsx(Jee,{className:"h-3 w-3"})}),o.jsx(de,{variant:"ghost",size:"icon",className:"h-6 w-6 text-red-600 hover:text-red-700",onClick:Ve=>{Ve.stopPropagation(),W(Oe)},title:"删除",children:o.jsx(Sn,{className:"h-3 w-3"})})]})]})]},Oe.id))}),c>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[o.jsxs("div",{className:"text-sm text-muted-foreground",children:["显示 ",(a-1)*h+1," 到"," ",Math.min(a*h,c)," 条,共 ",c," 条"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(de,{variant:"outline",size:"sm",onClick:()=>l(1),disabled:a===1,className:"hidden sm:flex",children:o.jsx(Ap,{className:"h-4 w-4"})}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>l(Oe=>Math.max(1,Oe-1)),disabled:a===1,children:[o.jsx(vd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{type:"number",value:J,onChange:Oe=>X(Oe.target.value),onKeyDown:Oe=>Oe.key==="Enter"&&Ye(),placeholder:a.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(c/h)}),o.jsx(de,{variant:"outline",size:"sm",onClick:Ye,disabled:!J,className:"h-8",children:"跳转"})]}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>l(Oe=>Oe+1),disabled:a>=Math.ceil(c/h),children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(yd,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(de,{variant:"outline",size:"sm",onClick:()=>l(Math.ceil(c/h)),disabled:a>=Math.ceil(c/h),className:"hidden sm:flex",children:o.jsx(Mp,{className:"h-4 w-4"})})]})]})]})]}),o.jsx(gOe,{emoji:_,open:L,onOpenChange:P}),o.jsx(xOe,{emoji:_,open:B,onOpenChange:$,onSuccess:()=>{I(),V()}})]})}),o.jsx(Dn,{open:F,onOpenChange:Y,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认批量删除"}),o.jsxs(_n,{children:["你确定要删除选中的 ",z.size," 个表情包吗?此操作不可撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:We,children:"确认删除"})]})]})}),o.jsx(Dr,{open:U,onOpenChange:te,children:o.jsxs(Sr,{children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"确认删除"}),o.jsx(ss,{children:"确定要删除这个表情包吗?此操作无法撤销。"})]}),o.jsxs(ws,{children:[o.jsx(de,{variant:"outline",onClick:()=>te(!1),children:"取消"}),o.jsx(de,{variant:"destructive",onClick:se,children:"删除"})]})]})})]})}function gOe({emoji:t,open:e,onOpenChange:n}){if(!t)return null;const r=s=>s?new Date(s*1e3).toLocaleString("zh-CN"):"-";return o.jsx(Dr,{open:e,onOpenChange:n,children:o.jsxs(Sr,{className:"max-w-2xl max-h-[90vh]",children:[o.jsx(kr,{children:o.jsx(Or,{children:"表情包详情"})}),o.jsx(gn,{className:"max-h-[calc(90vh-8rem)] pr-4",children:o.jsxs("div",{className:"space-y-4",children:[o.jsx("div",{className:"flex justify-center",children:o.jsx("div",{className:"w-32 h-32 bg-muted rounded-lg flex items-center justify-center overflow-hidden",children:o.jsx("img",{src:YU(t.id),alt:t.description||"表情包",className:"w-full h-full object-cover",onError:s=>{const i=s.target;i.style.display="none";const a=i.parentElement;a&&(a.innerHTML='')}})})}),o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"ID"}),o.jsx("div",{className:"mt-1 font-mono",children:t.id})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"格式"}),o.jsx("div",{className:"mt-1",children:o.jsx(Xn,{variant:"outline",children:t.format.toUpperCase()})})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"文件路径"}),o.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:t.full_path})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"哈希值"}),o.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:t.emoji_hash})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"描述"}),t.description?o.jsx("div",{className:"mt-1 rounded-lg border bg-muted/50 p-3",children:o.jsx(aOe,{className:"prose-sm",children:t.description})}):o.jsx("div",{className:"mt-1 text-sm text-muted-foreground",children:"-"})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"情绪"}),o.jsx("div",{className:"mt-1",children:t.emotion?o.jsx("span",{className:"text-sm",children:t.emotion}):o.jsx("span",{className:"text-sm text-muted-foreground",children:"-"})})]}),o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"状态"}),o.jsxs("div",{className:"mt-2 flex gap-2",children:[t.is_registered&&o.jsx(Xn,{variant:"default",className:"bg-green-600",children:"已注册"}),t.is_banned&&o.jsx(Xn,{variant:"destructive",children:"已封禁"}),!t.is_registered&&!t.is_banned&&o.jsx(Xn,{variant:"outline",children:"未注册"})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"使用次数"}),o.jsx("div",{className:"mt-1 font-mono text-lg",children:t.usage_count})]})]}),o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"记录时间"}),o.jsx("div",{className:"mt-1 text-sm",children:r(t.record_time)})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"注册时间"}),o.jsx("div",{className:"mt-1 text-sm",children:r(t.register_time)})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"最后使用"}),o.jsx("div",{className:"mt-1 text-sm",children:r(t.last_used_time)})]})]})})]})})}function xOe({emoji:t,open:e,onOpenChange:n,onSuccess:r}){const[s,i]=b.useState(""),[a,l]=b.useState(!1),[c,d]=b.useState(!1),[h,m]=b.useState(!1),{toast:g}=as();b.useEffect(()=>{t&&(i(t.emotion||""),l(t.is_registered),d(t.is_banned))},[t]);const x=async()=>{if(t)try{m(!0);const y=s.split(/[,,]/).map(w=>w.trim()).filter(Boolean).join(",");await cOe(t.id,{emotion:y||void 0,is_registered:a,is_banned:c}),g({title:"成功",description:"表情包信息已更新"}),n(!1),r()}catch(y){const w=y instanceof Error?y.message:"保存失败";g({title:"错误",description:w,variant:"destructive"})}finally{m(!1)}};return t?o.jsx(Dr,{open:e,onOpenChange:n,children:o.jsxs(Sr,{className:"max-w-2xl",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"编辑表情包"}),o.jsx(ss,{children:"修改表情包的情绪和状态信息"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{children:[o.jsx(he,{children:"情绪"}),o.jsx(Mr,{value:s,onChange:y=>i(y.target.value),placeholder:"输入情绪描述...",rows:2,className:"mt-1"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"输入情绪相关的文本描述"})]}),o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Oi,{id:"is_registered",checked:a,onCheckedChange:y=>{y===!0?(l(!0),d(!1)):l(!1)}}),o.jsx(he,{htmlFor:"is_registered",className:"cursor-pointer",children:"已注册"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Oi,{id:"is_banned",checked:c,onCheckedChange:y=>{y===!0?(d(!0),l(!1)):d(!1)}}),o.jsx(he,{htmlFor:"is_banned",className:"cursor-pointer",children:"已封禁"})]})]})]}),o.jsxs(ws,{children:[o.jsx(de,{variant:"outline",onClick:()=>n(!1),children:"取消"}),o.jsx(de,{onClick:x,disabled:h,children:h?"保存中...":"保存"})]})]})}):null}const hu="/api/webui/expression";async function vOe(){const t=await St(`${hu}/chats`,{headers:Dt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取聊天列表失败")}return t.json()}async function yOe(t){const e=new URLSearchParams;t.page&&e.append("page",t.page.toString()),t.page_size&&e.append("page_size",t.page_size.toString()),t.search&&e.append("search",t.search),t.chat_id&&e.append("chat_id",t.chat_id);const n=await St(`${hu}/list?${e}`,{headers:Dt()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取表达方式列表失败")}return n.json()}async function bOe(t){const e=await St(`${hu}/${t}`,{headers:Dt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"获取表达方式详情失败")}return e.json()}async function wOe(t){const e=await St(`${hu}/`,{method:"POST",headers:Dt(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"创建表达方式失败")}return e.json()}async function SOe(t,e){const n=await St(`${hu}/${t}`,{method:"PATCH",headers:Dt(),body:JSON.stringify(e)});if(!n.ok){const r=await n.json();throw new Error(r.detail||"更新表达方式失败")}return n.json()}async function kOe(t){const e=await St(`${hu}/${t}`,{method:"DELETE",headers:Dt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"删除表达方式失败")}return e.json()}async function OOe(t){const e=await St(`${hu}/batch/delete`,{method:"POST",headers:Dt(),body:JSON.stringify({ids:t})});if(!e.ok){const n=await e.json();throw new Error(n.detail||"批量删除表达方式失败")}return e.json()}async function jOe(){const t=await St(`${hu}/stats/summary`,{headers:Dt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取统计数据失败")}return t.json()}function NOe(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[s,i]=b.useState(0),[a,l]=b.useState(1),[c,d]=b.useState(20),[h,m]=b.useState(""),[g,x]=b.useState(null),[y,w]=b.useState(!1),[S,k]=b.useState(!1),[j,N]=b.useState(!1),[T,E]=b.useState(null),[_,A]=b.useState(new Set),[L,P]=b.useState(!1),[B,$]=b.useState(""),[U,te]=b.useState({total:0,recent_7days:0,chat_count:0,top_chats:{}}),[z,Q]=b.useState([]),[F,Y]=b.useState(new Map),{toast:J}=as(),X=async()=>{try{r(!0);const oe=await yOe({page:a,page_size:c,search:h||void 0});e(oe.data),i(oe.total)}catch(oe){J({title:"加载失败",description:oe instanceof Error?oe.message:"无法加载表达方式",variant:"destructive"})}finally{r(!1)}},R=async()=>{try{const oe=await jOe();oe?.data&&te(oe.data)}catch(oe){console.error("加载统计数据失败:",oe)}},ie=async()=>{try{const oe=await vOe();if(oe?.data){Q(oe.data);const Te=new Map;oe.data.forEach(We=>{Te.set(We.chat_id,We.chat_name)}),Y(Te)}}catch(oe){console.error("加载聊天列表失败:",oe)}},G=oe=>F.get(oe)||oe;b.useEffect(()=>{X(),R(),ie()},[a,c,h]);const I=async oe=>{try{const Te=await bOe(oe.id);x(Te.data),w(!0)}catch(Te){J({title:"加载详情失败",description:Te instanceof Error?Te.message:"无法加载表达方式详情",variant:"destructive"})}},V=oe=>{x(oe),k(!0)},ee=async oe=>{try{await kOe(oe.id),J({title:"删除成功",description:`已删除表达方式: ${oe.situation}`}),E(null),X(),R()}catch(Te){J({title:"删除失败",description:Te instanceof Error?Te.message:"无法删除表达方式",variant:"destructive"})}},ne=oe=>{const Te=new Set(_);Te.has(oe)?Te.delete(oe):Te.add(oe),A(Te)},W=()=>{_.size===t.length&&t.length>0?A(new Set):A(new Set(t.map(oe=>oe.id)))},se=async()=>{try{await OOe(Array.from(_)),J({title:"批量删除成功",description:`已删除 ${_.size} 个表达方式`}),A(new Set),P(!1),X(),R()}catch(oe){J({title:"批量删除失败",description:oe instanceof Error?oe.message:"无法批量删除表达方式",variant:"destructive"})}},re=()=>{const oe=parseInt(B),Te=Math.ceil(s/c);oe>=1&&oe<=Te?(l(oe),$("")):J({title:"无效的页码",description:`请输入1-${Te}之间的页码`,variant:"destructive"})};return o.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[o.jsx("div",{className:"mb-4 sm:mb-6",children:o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[o.jsx(Wh,{className:"h-8 w-8",strokeWidth:2}),"表达方式管理"]}),o.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦的表达方式和话术模板"})]}),o.jsxs(de,{onClick:()=>N(!0),className:"gap-2",children:[o.jsx(Ls,{className:"h-4 w-4"}),"新增表达方式"]})]})}),o.jsx(gn,{className:"flex-1",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"总数量"}),o.jsx("div",{className:"text-2xl font-bold mt-1",children:U.total})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"近7天新增"}),o.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:U.recent_7days})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"关联聊天数"}),o.jsx("div",{className:"text-2xl font-bold mt-1 text-blue-600",children:U.chat_count})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx(he,{htmlFor:"search",children:"搜索"}),o.jsx("div",{className:"flex flex-col sm:flex-row gap-2 mt-1.5",children:o.jsxs("div",{className:"flex-1 relative",children:[o.jsx(Ni,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),o.jsx(ze,{id:"search",placeholder:"搜索情境、风格或上下文...",value:h,onChange:oe=>m(oe.target.value),className:"pl-9"})]})}),o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[o.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:_.size>0&&o.jsxs("span",{children:["已选择 ",_.size," 个表达方式"]})}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:c.toString(),onValueChange:oe=>{d(parseInt(oe)),l(1),A(new Set)},children:[o.jsx($t,{id:"page-size",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"10",children:"10"}),o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"50",children:"50"}),o.jsx(De,{value:"100",children:"100"})]})]}),_.size>0&&o.jsxs(o.Fragment,{children:[o.jsx(de,{variant:"outline",size:"sm",onClick:()=>A(new Set),children:"取消选择"}),o.jsxs(de,{variant:"destructive",size:"sm",onClick:()=>P(!0),children:[o.jsx(Sn,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card",children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(_f,{children:[o.jsx(Af,{children:o.jsxs(Is,{children:[o.jsx(pn,{className:"w-12",children:o.jsx(Oi,{checked:_.size===t.length&&t.length>0,onCheckedChange:W})}),o.jsx(pn,{children:"情境"}),o.jsx(pn,{children:"风格"}),o.jsx(pn,{children:"聊天"}),o.jsx(pn,{className:"text-right",children:"操作"})]})}),o.jsx(Mf,{children:n?o.jsx(Is,{children:o.jsx(Gt,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):t.length===0?o.jsx(Is,{children:o.jsx(Gt,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):t.map(oe=>o.jsxs(Is,{children:[o.jsx(Gt,{children:o.jsx(Oi,{checked:_.has(oe.id),onCheckedChange:()=>ne(oe.id)})}),o.jsx(Gt,{className:"font-medium max-w-xs truncate",children:oe.situation}),o.jsx(Gt,{className:"max-w-xs truncate",children:oe.style}),o.jsx(Gt,{className:"max-w-[200px] truncate",title:G(oe.chat_id),style:{wordBreak:"keep-all"},children:o.jsx("span",{className:"whitespace-nowrap overflow-hidden text-ellipsis block",children:G(oe.chat_id)})}),o.jsx(Gt,{className:"text-right",children:o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsxs(de,{variant:"default",size:"sm",onClick:()=>V(oe),children:[o.jsx(z0,{className:"h-4 w-4 mr-1"}),"编辑"]}),o.jsx(de,{variant:"outline",size:"icon",className:"h-8 w-8",onClick:()=>I(oe),title:"查看详情",children:o.jsx(Ea,{className:"h-4 w-4"})}),o.jsxs(de,{size:"sm",onClick:()=>E(oe),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Sn,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},oe.id))})]})}),o.jsx("div",{className:"md:hidden space-y-3 p-4",children:n?o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):t.length===0?o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):t.map(oe=>o.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Oi,{checked:_.has(oe.id),onCheckedChange:()=>ne(oe.id),className:"mt-1"}),o.jsxs("div",{className:"min-w-0 flex-1 overflow-hidden space-y-2",children:[o.jsxs("div",{children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"情境"}),o.jsx("h3",{className:"font-semibold text-sm line-clamp-2 w-full break-all",title:oe.situation,children:oe.situation})]}),o.jsxs("div",{children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"风格"}),o.jsx("p",{className:"text-sm line-clamp-2 w-full break-all",title:oe.style,children:oe.style})]})]})]}),o.jsxs("div",{className:"text-sm",children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"聊天"}),o.jsx("p",{className:"text-sm truncate",title:G(oe.chat_id),style:{wordBreak:"keep-all"},children:G(oe.chat_id)})]}),o.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>V(oe),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[o.jsx(z0,{className:"h-3 w-3 mr-1"}),"编辑"]}),o.jsx(de,{variant:"outline",size:"sm",onClick:()=>I(oe),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:o.jsx(Ea,{className:"h-3 w-3"})}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>E(oe),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[o.jsx(Sn,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},oe.id))}),s>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[o.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",s," 条记录,第 ",a," / ",Math.ceil(s/c)," 页"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(de,{variant:"outline",size:"sm",onClick:()=>l(1),disabled:a===1,className:"hidden sm:flex",children:o.jsx(Ap,{className:"h-4 w-4"})}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>l(a-1),disabled:a===1,children:[o.jsx(vd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{type:"number",value:B,onChange:oe=>$(oe.target.value),onKeyDown:oe=>oe.key==="Enter"&&re(),placeholder:a.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(s/c)}),o.jsx(de,{variant:"outline",size:"sm",onClick:re,disabled:!B,className:"h-8",children:"跳转"})]}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>l(a+1),disabled:a>=Math.ceil(s/c),children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(yd,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(de,{variant:"outline",size:"sm",onClick:()=>l(Math.ceil(s/c)),disabled:a>=Math.ceil(s/c),className:"hidden sm:flex",children:o.jsx(Mp,{className:"h-4 w-4"})})]})]})]})]})}),o.jsx(COe,{expression:g,open:y,onOpenChange:w,chatNameMap:F}),o.jsx(TOe,{open:j,onOpenChange:N,chatList:z,onSuccess:()=>{X(),R(),N(!1)}}),o.jsx(EOe,{expression:g,open:S,onOpenChange:k,chatList:z,onSuccess:()=>{X(),R(),k(!1)}}),o.jsx(Dn,{open:!!T,onOpenChange:()=>E(null),children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除表达方式 "',T?.situation,'" 吗? 此操作不可撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>T&&ee(T),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),o.jsx(_Oe,{open:L,onOpenChange:P,onConfirm:se,count:_.size})]})}function COe({expression:t,open:e,onOpenChange:n,chatNameMap:r}){if(!t)return null;const s=a=>a?new Date(a*1e3).toLocaleString("zh-CN"):"-",i=a=>r.get(a)||a;return o.jsx(Dr,{open:e,onOpenChange:n,children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"表达方式详情"}),o.jsx(ss,{children:"查看表达方式的完整信息"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsx(e0,{label:"情境",value:t.situation}),o.jsx(e0,{label:"风格",value:t.style}),o.jsx(e0,{label:"聊天",value:i(t.chat_id)}),o.jsx(e0,{icon:ik,label:"记录ID",value:t.id.toString(),mono:!0})]}),o.jsx("div",{className:"grid grid-cols-2 gap-4",children:o.jsx(e0,{icon:_h,label:"创建时间",value:s(t.create_date)})})]}),o.jsx(ws,{children:o.jsx(de,{onClick:()=>n(!1),children:"关闭"})})]})})}function e0({icon:t,label:e,value:n,mono:r=!1}){return o.jsxs("div",{className:"space-y-1",children:[o.jsxs(he,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[t&&o.jsx(t,{className:"h-3 w-3"}),e]}),o.jsx("div",{className:xe("text-sm",r&&"font-mono",!n&&"text-muted-foreground"),children:n||"-"})]})}function TOe({open:t,onOpenChange:e,chatList:n,onSuccess:r}){const[s,i]=b.useState({situation:"",style:"",chat_id:""}),[a,l]=b.useState(!1),{toast:c}=as(),d=async()=>{if(!s.situation||!s.style||!s.chat_id){c({title:"验证失败",description:"请填写必填字段:情境、风格和聊天",variant:"destructive"});return}try{l(!0),await wOe(s),c({title:"创建成功",description:"表达方式已创建"}),i({situation:"",style:"",chat_id:""}),r()}catch(h){c({title:"创建失败",description:h instanceof Error?h.message:"无法创建表达方式",variant:"destructive"})}finally{l(!1)}};return o.jsx(Dr,{open:t,onOpenChange:e,children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"新增表达方式"}),o.jsx(ss,{children:"创建新的表达方式记录"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsxs(he,{htmlFor:"situation",children:["情境 ",o.jsx("span",{className:"text-destructive",children:"*"})]}),o.jsx(ze,{id:"situation",value:s.situation,onChange:h=>i({...s,situation:h.target.value}),placeholder:"描述使用场景"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs(he,{htmlFor:"style",children:["风格 ",o.jsx("span",{className:"text-destructive",children:"*"})]}),o.jsx(ze,{id:"style",value:s.style,onChange:h=>i({...s,style:h.target.value}),placeholder:"描述表达风格"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs(he,{htmlFor:"chat_id",children:["聊天 ",o.jsx("span",{className:"text-destructive",children:"*"})]}),o.jsxs(Vt,{value:s.chat_id,onValueChange:h=>i({...s,chat_id:h}),children:[o.jsx($t,{children:o.jsx(Ut,{placeholder:"选择关联的聊天"})}),o.jsx(Ht,{children:n.map(h=>o.jsx(De,{value:h.chat_id,children:o.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[h.chat_name,h.is_group&&o.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},h.chat_id))})]})]})]}),o.jsxs(ws,{children:[o.jsx(de,{variant:"outline",onClick:()=>e(!1),children:"取消"}),o.jsx(de,{onClick:d,disabled:a,children:a?"创建中...":"创建"})]})]})})}function EOe({expression:t,open:e,onOpenChange:n,chatList:r,onSuccess:s}){const[i,a]=b.useState({}),[l,c]=b.useState(!1),{toast:d}=as();b.useEffect(()=>{t&&a({situation:t.situation,style:t.style,chat_id:t.chat_id})},[t]);const h=async()=>{if(t)try{c(!0),await SOe(t.id,i),d({title:"保存成功",description:"表达方式已更新"}),s()}catch(m){d({title:"保存失败",description:m instanceof Error?m.message:"无法更新表达方式",variant:"destructive"})}finally{c(!1)}};return t?o.jsx(Dr,{open:e,onOpenChange:n,children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"编辑表达方式"}),o.jsx(ss,{children:"修改表达方式的信息"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit_situation",children:"情境"}),o.jsx(ze,{id:"edit_situation",value:i.situation||"",onChange:m=>a({...i,situation:m.target.value}),placeholder:"描述使用场景"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit_style",children:"风格"}),o.jsx(ze,{id:"edit_style",value:i.style||"",onChange:m=>a({...i,style:m.target.value}),placeholder:"描述表达风格"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit_chat_id",children:"聊天"}),o.jsxs(Vt,{value:i.chat_id||"",onValueChange:m=>a({...i,chat_id:m}),children:[o.jsx($t,{children:o.jsx(Ut,{placeholder:"选择关联的聊天"})}),o.jsx(Ht,{children:r.map(m=>o.jsx(De,{value:m.chat_id,children:o.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[m.chat_name,m.is_group&&o.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},m.chat_id))})]})]})]}),o.jsxs(ws,{children:[o.jsx(de,{variant:"outline",onClick:()=>n(!1),children:"取消"}),o.jsx(de,{onClick:h,disabled:l,children:l?"保存中...":"保存"})]})]})}):null}function _Oe({open:t,onOpenChange:e,onConfirm:n,count:r}){return o.jsx(Dn,{open:t,onOpenChange:e,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认批量删除"}),o.jsxs(_n,{children:["您即将删除 ",r," 个表达方式,此操作无法撤销。确定要继续吗?"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:n,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认删除"})]})]})})}const Hf="/api/webui/person";async function AOe(t){const e=new URLSearchParams;t.page&&e.append("page",t.page.toString()),t.page_size&&e.append("page_size",t.page_size.toString()),t.search&&e.append("search",t.search),t.is_known!==void 0&&e.append("is_known",t.is_known.toString()),t.platform&&e.append("platform",t.platform);const n=await St(`${Hf}/list?${e}`,{headers:Dt()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取人物列表失败")}return n.json()}async function MOe(t){const e=await St(`${Hf}/${t}`,{headers:Dt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"获取人物详情失败")}return e.json()}async function ROe(t,e){const n=await St(`${Hf}/${t}`,{method:"PATCH",headers:Dt(),body:JSON.stringify(e)});if(!n.ok){const r=await n.json();throw new Error(r.detail||"更新人物信息失败")}return n.json()}async function DOe(t){const e=await St(`${Hf}/${t}`,{method:"DELETE",headers:Dt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"删除人物信息失败")}return e.json()}async function POe(){const t=await St(`${Hf}/stats/summary`,{headers:Dt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取统计数据失败")}return t.json()}async function zOe(t){const e=await St(`${Hf}/batch/delete`,{method:"POST",headers:Dt(),body:JSON.stringify({person_ids:t})});if(!e.ok){const n=await e.json();throw new Error(n.detail||"批量删除失败")}return e.json()}function IOe(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[s,i]=b.useState(0),[a,l]=b.useState(1),[c,d]=b.useState(20),[h,m]=b.useState(""),[g,x]=b.useState(void 0),[y,w]=b.useState(void 0),[S,k]=b.useState(null),[j,N]=b.useState(!1),[T,E]=b.useState(!1),[_,A]=b.useState(null),[L,P]=b.useState({total:0,known:0,unknown:0,platforms:{}}),[B,$]=b.useState(new Set),[U,te]=b.useState(!1),[z,Q]=b.useState(""),{toast:F}=as(),Y=async()=>{try{r(!0);const re=await AOe({page:a,page_size:c,search:h||void 0,is_known:g,platform:y});e(re.data),i(re.total)}catch(re){F({title:"加载失败",description:re instanceof Error?re.message:"无法加载人物信息",variant:"destructive"})}finally{r(!1)}},J=async()=>{try{const re=await POe();re?.data&&P(re.data)}catch(re){console.error("加载统计数据失败:",re)}};b.useEffect(()=>{Y(),J()},[a,c,h,g,y]);const X=async re=>{try{const oe=await MOe(re.person_id);k(oe.data),N(!0)}catch(oe){F({title:"加载详情失败",description:oe instanceof Error?oe.message:"无法加载人物详情",variant:"destructive"})}},R=re=>{k(re),E(!0)},ie=async re=>{try{await DOe(re.person_id),F({title:"删除成功",description:`已删除人物信息: ${re.person_name||re.nickname||re.user_id}`}),A(null),Y(),J()}catch(oe){F({title:"删除失败",description:oe instanceof Error?oe.message:"无法删除人物信息",variant:"destructive"})}},G=b.useMemo(()=>Object.keys(L.platforms),[L.platforms]),I=re=>{const oe=new Set(B);oe.has(re)?oe.delete(re):oe.add(re),$(oe)},V=()=>{B.size===t.length&&t.length>0?$(new Set):$(new Set(t.map(re=>re.person_id)))},ee=()=>{if(B.size===0){F({title:"未选择任何人物",description:"请先选择要删除的人物",variant:"destructive"});return}te(!0)},ne=async()=>{try{const re=await zOe(Array.from(B));F({title:"批量删除完成",description:re.message}),$(new Set),te(!1),Y(),J()}catch(re){F({title:"批量删除失败",description:re instanceof Error?re.message:"批量删除失败",variant:"destructive"})}},W=()=>{const re=parseInt(z),oe=Math.ceil(s/c);re>=1&&re<=oe?(l(re),Q("")):F({title:"无效的页码",description:`请输入1-${oe}之间的页码`,variant:"destructive"})},se=re=>re?new Date(re*1e3).toLocaleString("zh-CN"):"-";return o.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[o.jsx("div",{className:"mb-4 sm:mb-6",children:o.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:o.jsxs("div",{children:[o.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[o.jsx(ete,{className:"h-8 w-8",strokeWidth:2}),"人物信息管理"]}),o.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦认识的所有人物信息"})]})})}),o.jsx(gn,{className:"flex-1",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"总人数"}),o.jsx("div",{className:"text-2xl font-bold mt-1",children:L.total})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"已认识"}),o.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:L.known})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"未认识"}),o.jsx("div",{className:"text-2xl font-bold mt-1 text-muted-foreground",children:L.unknown})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-4 gap-4",children:[o.jsxs("div",{className:"sm:col-span-2",children:[o.jsx(he,{htmlFor:"search",children:"搜索"}),o.jsxs("div",{className:"relative mt-1.5",children:[o.jsx(Ni,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),o.jsx(ze,{id:"search",placeholder:"搜索名称、昵称或用户ID...",value:h,onChange:re=>m(re.target.value),className:"pl-9"})]})]}),o.jsxs("div",{children:[o.jsx(he,{htmlFor:"filter-known",children:"认识状态"}),o.jsxs(Vt,{value:g===void 0?"all":g.toString(),onValueChange:re=>{x(re==="all"?void 0:re==="true"),l(1)},children:[o.jsx($t,{id:"filter-known",className:"mt-1.5",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部"}),o.jsx(De,{value:"true",children:"已认识"}),o.jsx(De,{value:"false",children:"未认识"})]})]})]}),o.jsxs("div",{children:[o.jsx(he,{htmlFor:"filter-platform",children:"平台"}),o.jsxs(Vt,{value:y||"all",onValueChange:re=>{w(re==="all"?void 0:re),l(1)},children:[o.jsx($t,{id:"filter-platform",className:"mt-1.5",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部平台"}),G.map(re=>o.jsxs(De,{value:re,children:[re," (",L.platforms[re],")"]},re))]})]})]})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[o.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:B.size>0&&o.jsxs("span",{children:["已选择 ",B.size," 个人物"]})}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:c.toString(),onValueChange:re=>{d(parseInt(re)),l(1),$(new Set)},children:[o.jsx($t,{id:"page-size",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"10",children:"10"}),o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"50",children:"50"}),o.jsx(De,{value:"100",children:"100"})]})]}),B.size>0&&o.jsxs(o.Fragment,{children:[o.jsx(de,{variant:"outline",size:"sm",onClick:()=>$(new Set),children:"取消选择"}),o.jsxs(de,{variant:"destructive",size:"sm",onClick:ee,children:[o.jsx(Sn,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card",children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(_f,{children:[o.jsx(Af,{children:o.jsxs(Is,{children:[o.jsx(pn,{className:"w-12",children:o.jsx(Oi,{checked:t.length>0&&B.size===t.length,onCheckedChange:V,"aria-label":"全选"})}),o.jsx(pn,{children:"状态"}),o.jsx(pn,{children:"名称"}),o.jsx(pn,{children:"昵称"}),o.jsx(pn,{children:"平台"}),o.jsx(pn,{children:"用户ID"}),o.jsx(pn,{children:"最后更新"}),o.jsx(pn,{className:"text-right",children:"操作"})]})}),o.jsx(Mf,{children:n?o.jsx(Is,{children:o.jsx(Gt,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):t.length===0?o.jsx(Is,{children:o.jsx(Gt,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):t.map(re=>o.jsxs(Is,{children:[o.jsx(Gt,{children:o.jsx(Oi,{checked:B.has(re.person_id),onCheckedChange:()=>I(re.person_id),"aria-label":`选择 ${re.person_name||re.nickname||re.user_id}`})}),o.jsx(Gt,{children:o.jsx("div",{className:xe("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium",re.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:re.is_known?"已认识":"未认识"})}),o.jsx(Gt,{className:"font-medium",children:re.person_name||o.jsx("span",{className:"text-muted-foreground",children:"-"})}),o.jsx(Gt,{children:re.nickname||"-"}),o.jsx(Gt,{children:re.platform}),o.jsx(Gt,{className:"font-mono text-sm",children:re.user_id}),o.jsx(Gt,{className:"text-sm text-muted-foreground",children:se(re.last_know)}),o.jsx(Gt,{className:"text-right",children:o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsxs(de,{variant:"default",size:"sm",onClick:()=>X(re),children:[o.jsx(Ea,{className:"h-4 w-4 mr-1"}),"详情"]}),o.jsxs(de,{variant:"default",size:"sm",onClick:()=>R(re),children:[o.jsx(z0,{className:"h-4 w-4 mr-1"}),"编辑"]}),o.jsxs(de,{size:"sm",onClick:()=>A(re),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Sn,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},re.id))})]})}),o.jsx("div",{className:"md:hidden space-y-3 p-4",children:n?o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):t.length===0?o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):t.map(re=>o.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Oi,{checked:B.has(re.person_id),onCheckedChange:()=>I(re.person_id),className:"mt-1"}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("div",{className:xe("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium mb-2",re.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:re.is_known?"已认识":"未认识"}),o.jsx("h3",{className:"font-semibold text-sm line-clamp-1 w-full break-all",children:re.person_name||o.jsx("span",{className:"text-muted-foreground",children:"未命名"})}),re.nickname&&o.jsxs("p",{className:"text-xs text-muted-foreground mt-1 line-clamp-1 w-full break-all",children:["昵称: ",re.nickname]})]})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[o.jsxs("div",{children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"平台"}),o.jsx("p",{className:"font-medium text-xs",children:re.platform})]}),o.jsxs("div",{children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"用户ID"}),o.jsx("p",{className:"font-mono text-xs truncate",title:re.user_id,children:re.user_id})]}),o.jsxs("div",{className:"col-span-2",children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"最后更新"}),o.jsx("p",{className:"text-xs",children:se(re.last_know)})]})]}),o.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>X(re),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[o.jsx(Ea,{className:"h-3 w-3 mr-1"}),"查看"]}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>R(re),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[o.jsx(z0,{className:"h-3 w-3 mr-1"}),"编辑"]}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>A(re),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[o.jsx(Sn,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},re.id))}),s>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[o.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",s," 条记录,第 ",a," / ",Math.ceil(s/c)," 页"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(de,{variant:"outline",size:"sm",onClick:()=>l(1),disabled:a===1,className:"hidden sm:flex",children:o.jsx(Ap,{className:"h-4 w-4"})}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>l(a-1),disabled:a===1,children:[o.jsx(vd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{type:"number",value:z,onChange:re=>Q(re.target.value),onKeyDown:re=>re.key==="Enter"&&W(),placeholder:a.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(s/c)}),o.jsx(de,{variant:"outline",size:"sm",onClick:W,disabled:!z,className:"h-8",children:"跳转"})]}),o.jsxs(de,{variant:"outline",size:"sm",onClick:()=>l(a+1),disabled:a>=Math.ceil(s/c),children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(yd,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(de,{variant:"outline",size:"sm",onClick:()=>l(Math.ceil(s/c)),disabled:a>=Math.ceil(s/c),className:"hidden sm:flex",children:o.jsx(Mp,{className:"h-4 w-4"})})]})]})]})]})}),o.jsx(LOe,{person:S,open:j,onOpenChange:N}),o.jsx(BOe,{person:S,open:T,onOpenChange:E,onSuccess:()=>{Y(),J(),E(!1)}}),o.jsx(Dn,{open:!!_,onOpenChange:()=>A(null),children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认删除"}),o.jsxs(_n,{children:['确定要删除人物信息 "',_?.person_name||_?.nickname||_?.user_id,'" 吗? 此操作不可撤销。']})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:()=>_&&ie(_),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),o.jsx(Dn,{open:U,onOpenChange:te,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"确认批量删除"}),o.jsxs(_n,{children:["确定要删除选中的 ",B.size," 个人物信息吗? 此操作不可撤销。"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{children:"取消"}),o.jsx(An,{onClick:ne,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})})]})}function LOe({person:t,open:e,onOpenChange:n}){if(!t)return null;const r=s=>s?new Date(s*1e3).toLocaleString("zh-CN"):"-";return o.jsx(Dr,{open:e,onOpenChange:n,children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"人物详情"}),o.jsxs(ss,{children:["查看 ",t.person_name||t.nickname||t.user_id," 的完整信息"]})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsx(bl,{icon:Dv,label:"人物名称",value:t.person_name}),o.jsx(bl,{icon:Wh,label:"昵称",value:t.nickname}),o.jsx(bl,{icon:ik,label:"用户ID",value:t.user_id,mono:!0}),o.jsx(bl,{icon:ik,label:"人物ID",value:t.person_id,mono:!0}),o.jsx(bl,{label:"平台",value:t.platform}),o.jsx(bl,{label:"状态",value:t.is_known?"已认识":"未认识"})]}),t.name_reason&&o.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[o.jsx(he,{className:"text-xs text-muted-foreground",children:"名称设定原因"}),o.jsx("p",{className:"mt-1 text-sm",children:t.name_reason})]}),t.memory_points&&o.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[o.jsx(he,{className:"text-xs text-muted-foreground",children:"个人印象"}),o.jsx("p",{className:"mt-1 text-sm whitespace-pre-wrap",children:t.memory_points})]}),t.group_nick_name&&t.group_nick_name.length>0&&o.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[o.jsx(he,{className:"text-xs text-muted-foreground",children:"群昵称"}),o.jsx("div",{className:"mt-2 space-y-1",children:t.group_nick_name.map((s,i)=>o.jsxs("div",{className:"text-sm flex items-center gap-2",children:[o.jsx("span",{className:"font-mono text-xs text-muted-foreground",children:s.group_id}),o.jsx("span",{children:"→"}),o.jsx("span",{children:s.group_nick_name})]},i))})]}),o.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[o.jsx(bl,{icon:_h,label:"认识时间",value:r(t.know_times)}),o.jsx(bl,{icon:_h,label:"首次记录",value:r(t.know_since)}),o.jsx(bl,{icon:_h,label:"最后更新",value:r(t.last_know)})]})]}),o.jsx(ws,{children:o.jsx(de,{onClick:()=>n(!1),children:"关闭"})})]})})}function bl({icon:t,label:e,value:n,mono:r=!1}){return o.jsxs("div",{className:"space-y-1",children:[o.jsxs(he,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[t&&o.jsx(t,{className:"h-3 w-3"}),e]}),o.jsx("div",{className:xe("text-sm",r&&"font-mono",!n&&"text-muted-foreground"),children:n||"-"})]})}function BOe({person:t,open:e,onOpenChange:n,onSuccess:r}){const[s,i]=b.useState({}),[a,l]=b.useState(!1),{toast:c}=as();b.useEffect(()=>{t&&i({person_name:t.person_name||"",name_reason:t.name_reason||"",nickname:t.nickname||"",memory_points:t.memory_points||"",is_known:t.is_known})},[t]);const d=async()=>{if(t)try{l(!0),await ROe(t.person_id,s),c({title:"保存成功",description:"人物信息已更新"}),r()}catch(h){c({title:"保存失败",description:h instanceof Error?h.message:"无法更新人物信息",variant:"destructive"})}finally{l(!1)}};return t?o.jsx(Dr,{open:e,onOpenChange:n,children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"编辑人物信息"}),o.jsxs(ss,{children:["修改 ",t.person_name||t.nickname||t.user_id," 的信息"]})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"person_name",children:"人物名称"}),o.jsx(ze,{id:"person_name",value:s.person_name||"",onChange:h=>i({...s,person_name:h.target.value}),placeholder:"为这个人设置一个名称"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"nickname",children:"昵称"}),o.jsx(ze,{id:"nickname",value:s.nickname||"",onChange:h=>i({...s,nickname:h.target.value}),placeholder:"昵称"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"name_reason",children:"名称设定原因"}),o.jsx(Mr,{id:"name_reason",value:s.name_reason||"",onChange:h=>i({...s,name_reason:h.target.value}),placeholder:"为什么这样称呼这个人?",rows:2})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"memory_points",children:"个人印象"}),o.jsx(Mr,{id:"memory_points",value:s.memory_points||"",onChange:h=>i({...s,memory_points:h.target.value}),placeholder:"对这个人的印象和记忆点...",rows:4})]}),o.jsxs("div",{className:"flex items-center justify-between rounded-lg border p-3",children:[o.jsxs("div",{children:[o.jsx(he,{htmlFor:"is_known",className:"text-base font-medium",children:"已认识"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"标记是否已经认识这个人"})]}),o.jsx(Bt,{id:"is_known",checked:s.is_known,onCheckedChange:h=>i({...s,is_known:h})})]})]}),o.jsxs(ws,{children:[o.jsx(de,{variant:"outline",onClick:()=>n(!1),children:"取消"}),o.jsx(de,{onClick:d,disabled:a,children:a?"保存中...":"保存"})]})]})}):null}function Bs(t){if(typeof t=="string"||typeof t=="number")return""+t;let e="";if(Array.isArray(t))for(let n=0,r;n{let e;const n=new Set,r=(h,m)=>{const g=typeof h=="function"?h(e):h;if(!Object.is(g,e)){const x=e;e=m??(typeof g!="object"||g===null)?g:Object.assign({},e,g),n.forEach(y=>y(e,x))}},s=()=>e,c={setState:r,getState:s,getInitialState:()=>d,subscribe:h=>(n.add(h),()=>n.delete(h)),destroy:()=>{(FOe?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},d=e=t(r,s,c);return c},qOe=t=>t?JR(t):JR,{useDebugValue:$Oe}=ae,{useSyncExternalStoreWithSelector:HOe}=pJ,QOe=t=>t;function KU(t,e=QOe,n){const r=HOe(t.subscribe,t.getState,t.getServerState||t.getInitialState,e,n);return $Oe(r),r}const eD=(t,e)=>{const n=qOe(t),r=(s,i=e)=>KU(n,s,i);return Object.assign(r,n),r},VOe=(t,e)=>t?eD(t,e):eD;function ks(t,e){if(Object.is(t,e))return!0;if(typeof t!="object"||t===null||typeof e!="object"||e===null)return!1;if(t instanceof Map&&e instanceof Map){if(t.size!==e.size)return!1;for(const[r,s]of t)if(!Object.is(s,e.get(r)))return!1;return!0}if(t instanceof Set&&e instanceof Set){if(t.size!==e.size)return!1;for(const r of t)if(!e.has(r))return!1;return!0}const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!1;for(const r of n)if(!Object.prototype.hasOwnProperty.call(e,r)||!Object.is(t[r],e[r]))return!1;return!0}var UOe={value:()=>{}};function Gb(){for(var t=0,e=arguments.length,n={},r;t=0&&(r=n.slice(s+1),n=n.slice(0,s)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}jv.prototype=Gb.prototype={constructor:jv,on:function(t,e){var n=this._,r=WOe(t+"",n),s,i=-1,a=r.length;if(arguments.length<2){for(;++i0)for(var n=new Array(s),r=0,s,i;r=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),nD.hasOwnProperty(e)?{space:nD[e],local:t}:t}function XOe(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===XO&&e.documentElement.namespaceURI===XO?e.createElement(t):e.createElementNS(n,t)}}function YOe(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function ZU(t){var e=Xb(t);return(e.local?YOe:XOe)(e)}function KOe(){}function VN(t){return t==null?KOe:function(){return this.querySelector(t)}}function ZOe(t){typeof t!="function"&&(t=VN(t));for(var e=this._groups,n=e.length,r=new Array(n),s=0;s=N&&(N=j+1);!(E=S[N])&&++N=0;)(a=r[s])&&(i&&a.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(a,i),i=a);return this}function kje(t){t||(t=Oje);function e(m,g){return m&&g?t(m.__data__,g.__data__):!m-!g}for(var n=this._groups,r=n.length,s=new Array(r),i=0;ie?1:t>=e?0:NaN}function jje(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function Nje(){return Array.from(this)}function Cje(){for(var t=this._groups,e=0,n=t.length;e1?this.each((e==null?Lje:typeof e=="function"?Fje:Bje)(t,e,n??"")):mf(this.node(),t)}function mf(t,e){return t.style.getPropertyValue(e)||rW(t).getComputedStyle(t,null).getPropertyValue(e)}function $je(t){return function(){delete this[t]}}function Hje(t,e){return function(){this[t]=e}}function Qje(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}function Vje(t,e){return arguments.length>1?this.each((e==null?$je:typeof e=="function"?Qje:Hje)(t,e)):this.node()[t]}function sW(t){return t.trim().split(/^|\s+/)}function UN(t){return t.classList||new iW(t)}function iW(t){this._node=t,this._names=sW(t.getAttribute("class")||"")}iW.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function aW(t,e){for(var n=UN(t),r=-1,s=e.length;++r=0&&(n=e.slice(r+1),e=e.slice(0,r)),{type:e,name:n}})}function y6e(t){return function(){var e=this.__on;if(e){for(var n=0,r=-1,s=e.length,i;n()=>t;function YO(t,{sourceEvent:e,subject:n,target:r,identifier:s,active:i,x:a,y:l,dx:c,dy:d,dispatch:h}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:s,enumerable:!0,configurable:!0},active:{value:i,enumerable:!0,configurable:!0},x:{value:a,enumerable:!0,configurable:!0},y:{value:l,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:d,enumerable:!0,configurable:!0},_:{value:h}})}YO.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};function E6e(t){return!t.ctrlKey&&!t.button}function _6e(){return this.parentNode}function A6e(t,e){return e??{x:t.x,y:t.y}}function M6e(){return navigator.maxTouchPoints||"ontouchstart"in this}function R6e(){var t=E6e,e=_6e,n=A6e,r=M6e,s={},i=Gb("start","drag","end"),a=0,l,c,d,h,m=0;function g(T){T.on("mousedown.drag",x).filter(r).on("touchstart.drag",S).on("touchmove.drag",k,T6e).on("touchend.drag touchcancel.drag",j).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function x(T,E){if(!(h||!t.call(this,T,E))){var _=N(this,e.call(this,T,E),T,E,"mouse");_&&(ma(T.view).on("mousemove.drag",y,yp).on("mouseup.drag",w,yp),uW(T.view),o5(T),d=!1,l=T.clientX,c=T.clientY,_("start",T))}}function y(T){if(Hh(T),!d){var E=T.clientX-l,_=T.clientY-c;d=E*E+_*_>m}s.mouse("drag",T)}function w(T){ma(T.view).on("mousemove.drag mouseup.drag",null),dW(T.view,d),Hh(T),s.mouse("end",T)}function S(T,E){if(t.call(this,T,E)){var _=T.changedTouches,A=e.call(this,T,E),L=_.length,P,B;for(P=0;P=0&&t._call.call(void 0,e),t=t._next;--pf}function rD(){md=(Ey=bp.now())+Yb,pf=f0=0;try{P6e()}finally{pf=0,I6e(),md=0}}function z6e(){var t=bp.now(),e=t-Ey;e>hW&&(Yb-=e,Ey=t)}function I6e(){for(var t,e=Ty,n,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Ty=n);m0=t,KO(r)}function KO(t){if(!pf){f0&&(f0=clearTimeout(f0));var e=t-md;e>24?(t<1/0&&(f0=setTimeout(rD,t-bp.now()-Yb)),t0&&(t0=clearInterval(t0))):(t0||(Ey=bp.now(),t0=setInterval(z6e,hW)),pf=1,fW(rD))}}function sD(t,e,n){var r=new _y;return e=e==null?0:+e,r.restart(s=>{r.stop(),t(s+e)},e,n),r}var L6e=Gb("start","end","cancel","interrupt"),B6e=[],pW=0,iD=1,ZO=2,Nv=3,aD=4,JO=5,Cv=6;function Kb(t,e,n,r,s,i){var a=t.__transition;if(!a)t.__transition={};else if(n in a)return;F6e(t,n,{name:e,index:r,group:s,on:L6e,tween:B6e,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:pW})}function GN(t,e){var n=io(t,e);if(n.state>pW)throw new Error("too late; already scheduled");return n}function Go(t,e){var n=io(t,e);if(n.state>Nv)throw new Error("too late; already running");return n}function io(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function F6e(t,e,n){var r=t.__transition,s;r[e]=n,n.timer=mW(i,0,n.time);function i(d){n.state=iD,n.timer.restart(a,n.delay,n.time),n.delay<=d&&a(d-n.delay)}function a(d){var h,m,g,x;if(n.state!==iD)return c();for(h in r)if(x=r[h],x.name===n.name){if(x.state===Nv)return sD(a);x.state===aD?(x.state=Cv,x.timer.stop(),x.on.call("interrupt",t,t.__data__,x.index,x.group),delete r[h]):+hZO&&r.state=0&&(e=e.slice(0,n)),!e||e==="start"})}function gNe(t,e,n){var r,s,i=pNe(e)?GN:Go;return function(){var a=i(this,t),l=a.on;l!==r&&(s=(r=l).copy()).on(e,n),a.on=s}}function xNe(t,e){var n=this._id;return arguments.length<2?io(this.node(),n).on.on(t):this.each(gNe(n,t,e))}function vNe(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}function yNe(){return this.on("end.remove",vNe(this._id))}function bNe(t){var e=this._name,n=this._id;typeof t!="function"&&(t=VN(t));for(var r=this._groups,s=r.length,i=new Array(s),a=0;a()=>t;function VNe(t,{sourceEvent:e,target:n,transform:r,dispatch:s}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:s}})}function Rl(t,e,n){this.k=t,this.x=e,this.y=n}Rl.prototype={constructor:Rl,scale:function(t){return t===1?this:new Rl(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new Rl(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Fl=new Rl(1,0,0);Rl.prototype;function l5(t){t.stopImmediatePropagation()}function n0(t){t.preventDefault(),t.stopImmediatePropagation()}function UNe(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function WNe(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]):[[0,0],[t.clientWidth,t.clientHeight]]}function oD(){return this.__zoom||Fl}function GNe(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function XNe(){return navigator.maxTouchPoints||"ontouchstart"in this}function YNe(t,e,n){var r=t.invertX(e[0][0])-n[0][0],s=t.invertX(e[1][0])-n[1][0],i=t.invertY(e[0][1])-n[0][1],a=t.invertY(e[1][1])-n[1][1];return t.translate(s>r?(r+s)/2:Math.min(0,r)||Math.max(0,s),a>i?(i+a)/2:Math.min(0,i)||Math.max(0,a))}function yW(){var t=UNe,e=WNe,n=YNe,r=GNe,s=XNe,i=[0,1/0],a=[[-1/0,-1/0],[1/0,1/0]],l=250,c=BJ,d=Gb("start","zoom","end"),h,m,g,x=500,y=150,w=0,S=10;function k(z){z.property("__zoom",oD).on("wheel.zoom",L,{passive:!1}).on("mousedown.zoom",P).on("dblclick.zoom",B).filter(s).on("touchstart.zoom",$).on("touchmove.zoom",U).on("touchend.zoom touchcancel.zoom",te).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}k.transform=function(z,Q,F,Y){var J=z.selection?z.selection():z;J.property("__zoom",oD),z!==J?E(z,Q,F,Y):J.interrupt().each(function(){_(this,arguments).event(Y).start().zoom(null,typeof Q=="function"?Q.apply(this,arguments):Q).end()})},k.scaleBy=function(z,Q,F,Y){k.scaleTo(z,function(){var J=this.__zoom.k,X=typeof Q=="function"?Q.apply(this,arguments):Q;return J*X},F,Y)},k.scaleTo=function(z,Q,F,Y){k.transform(z,function(){var J=e.apply(this,arguments),X=this.__zoom,R=F==null?T(J):typeof F=="function"?F.apply(this,arguments):F,ie=X.invert(R),G=typeof Q=="function"?Q.apply(this,arguments):Q;return n(N(j(X,G),R,ie),J,a)},F,Y)},k.translateBy=function(z,Q,F,Y){k.transform(z,function(){return n(this.__zoom.translate(typeof Q=="function"?Q.apply(this,arguments):Q,typeof F=="function"?F.apply(this,arguments):F),e.apply(this,arguments),a)},null,Y)},k.translateTo=function(z,Q,F,Y,J){k.transform(z,function(){var X=e.apply(this,arguments),R=this.__zoom,ie=Y==null?T(X):typeof Y=="function"?Y.apply(this,arguments):Y;return n(Fl.translate(ie[0],ie[1]).scale(R.k).translate(typeof Q=="function"?-Q.apply(this,arguments):-Q,typeof F=="function"?-F.apply(this,arguments):-F),X,a)},Y,J)};function j(z,Q){return Q=Math.max(i[0],Math.min(i[1],Q)),Q===z.k?z:new Rl(Q,z.x,z.y)}function N(z,Q,F){var Y=Q[0]-F[0]*z.k,J=Q[1]-F[1]*z.k;return Y===z.x&&J===z.y?z:new Rl(z.k,Y,J)}function T(z){return[(+z[0][0]+ +z[1][0])/2,(+z[0][1]+ +z[1][1])/2]}function E(z,Q,F,Y){z.on("start.zoom",function(){_(this,arguments).event(Y).start()}).on("interrupt.zoom end.zoom",function(){_(this,arguments).event(Y).end()}).tween("zoom",function(){var J=this,X=arguments,R=_(J,X).event(Y),ie=e.apply(J,X),G=F==null?T(ie):typeof F=="function"?F.apply(J,X):F,I=Math.max(ie[1][0]-ie[0][0],ie[1][1]-ie[0][1]),V=J.__zoom,ee=typeof Q=="function"?Q.apply(J,X):Q,ne=c(V.invert(G).concat(I/V.k),ee.invert(G).concat(I/ee.k));return function(W){if(W===1)W=ee;else{var se=ne(W),re=I/se[2];W=new Rl(re,G[0]-se[0]*re,G[1]-se[1]*re)}R.zoom(null,W)}})}function _(z,Q,F){return!F&&z.__zooming||new A(z,Q)}function A(z,Q){this.that=z,this.args=Q,this.active=0,this.sourceEvent=null,this.extent=e.apply(z,Q),this.taps=0}A.prototype={event:function(z){return z&&(this.sourceEvent=z),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(z,Q){return this.mouse&&z!=="mouse"&&(this.mouse[1]=Q.invert(this.mouse[0])),this.touch0&&z!=="touch"&&(this.touch0[1]=Q.invert(this.touch0[0])),this.touch1&&z!=="touch"&&(this.touch1[1]=Q.invert(this.touch1[0])),this.that.__zoom=Q,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(z){var Q=ma(this.that).datum();d.call(z,this.that,new VNe(z,{sourceEvent:this.sourceEvent,target:k,transform:this.that.__zoom,dispatch:d}),Q)}};function L(z,...Q){if(!t.apply(this,arguments))return;var F=_(this,Q).event(z),Y=this.__zoom,J=Math.max(i[0],Math.min(i[1],Y.k*Math.pow(2,r.apply(this,arguments)))),X=Ha(z);if(F.wheel)(F.mouse[0][0]!==X[0]||F.mouse[0][1]!==X[1])&&(F.mouse[1]=Y.invert(F.mouse[0]=X)),clearTimeout(F.wheel);else{if(Y.k===J)return;F.mouse=[X,Y.invert(X)],Tv(this),F.start()}n0(z),F.wheel=setTimeout(R,y),F.zoom("mouse",n(N(j(Y,J),F.mouse[0],F.mouse[1]),F.extent,a));function R(){F.wheel=null,F.end()}}function P(z,...Q){if(g||!t.apply(this,arguments))return;var F=z.currentTarget,Y=_(this,Q,!0).event(z),J=ma(z.view).on("mousemove.zoom",G,!0).on("mouseup.zoom",I,!0),X=Ha(z,F),R=z.clientX,ie=z.clientY;uW(z.view),l5(z),Y.mouse=[X,this.__zoom.invert(X)],Tv(this),Y.start();function G(V){if(n0(V),!Y.moved){var ee=V.clientX-R,ne=V.clientY-ie;Y.moved=ee*ee+ne*ne>w}Y.event(V).zoom("mouse",n(N(Y.that.__zoom,Y.mouse[0]=Ha(V,F),Y.mouse[1]),Y.extent,a))}function I(V){J.on("mousemove.zoom mouseup.zoom",null),dW(V.view,Y.moved),n0(V),Y.event(V).end()}}function B(z,...Q){if(t.apply(this,arguments)){var F=this.__zoom,Y=Ha(z.changedTouches?z.changedTouches[0]:z,this),J=F.invert(Y),X=F.k*(z.shiftKey?.5:2),R=n(N(j(F,X),Y,J),e.apply(this,Q),a);n0(z),l>0?ma(this).transition().duration(l).call(E,R,Y,z):ma(this).call(k.transform,R,Y,z)}}function $(z,...Q){if(t.apply(this,arguments)){var F=z.touches,Y=F.length,J=_(this,Q,z.changedTouches.length===Y).event(z),X,R,ie,G;for(l5(z),R=0;R"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:t=>`Node type "${t}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:t=>`The old edge with id=${t} does not exist.`,error009:t=>`Marker type "${t}" doesn't exist.`,error008:(t,e)=>`Couldn't create edge for ${t?"target":"source"} handle id: "${t?e.targetHandle:e.sourceHandle}", edge id: ${e.id}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:t=>`Edge type "${t}" not found. Using fallback type "default".`,error012:t=>`Node with id "${t}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`},bW=Gl.error001();function hr(t,e){const n=b.useContext(Zb);if(n===null)throw new Error(bW);return KU(n,t,e)}const ps=()=>{const t=b.useContext(Zb);if(t===null)throw new Error(bW);return b.useMemo(()=>({getState:t.getState,setState:t.setState,subscribe:t.subscribe,destroy:t.destroy}),[t])},ZNe=t=>t.userSelectionActive?"none":"all";function Jb({position:t,children:e,className:n,style:r,...s}){const i=hr(ZNe),a=`${t}`.split("-");return ae.createElement("div",{className:Bs(["react-flow__panel",n,...a]),style:{...r,pointerEvents:i},...s},e)}function JNe({proOptions:t,position:e="bottom-right"}){return t?.hideAttribution?null:ae.createElement(Jb,{position:e,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://reactflow.dev/pro"},ae.createElement("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution"},"React Flow"))}const e7e=({x:t,y:e,label:n,labelStyle:r={},labelShowBg:s=!0,labelBgStyle:i={},labelBgPadding:a=[2,4],labelBgBorderRadius:l=2,children:c,className:d,...h})=>{const m=b.useRef(null),[g,x]=b.useState({x:0,y:0,width:0,height:0}),y=Bs(["react-flow__edge-textwrapper",d]);return b.useEffect(()=>{if(m.current){const w=m.current.getBBox();x({x:w.x,y:w.y,width:w.width,height:w.height})}},[n]),typeof n>"u"||!n?null:ae.createElement("g",{transform:`translate(${t-g.width/2} ${e-g.height/2})`,className:y,visibility:g.width?"visible":"hidden",...h},s&&ae.createElement("rect",{width:g.width+2*a[0],x:-a[0],y:-a[1],height:g.height+2*a[1],className:"react-flow__edge-textbg",style:i,rx:l,ry:l}),ae.createElement("text",{className:"react-flow__edge-text",y:g.height/2,dy:"0.3em",ref:m,style:r},n),c)};var t7e=b.memo(e7e);const YN=t=>({width:t.offsetWidth,height:t.offsetHeight}),gf=(t,e=0,n=1)=>Math.min(Math.max(t,e),n),KN=(t={x:0,y:0},e)=>({x:gf(t.x,e[0][0],e[1][0]),y:gf(t.y,e[0][1],e[1][1])}),lD=(t,e,n)=>tn?-gf(Math.abs(t-n),1,50)/50:0,wW=(t,e)=>{const n=lD(t.x,35,e.width-35)*20,r=lD(t.y,35,e.height-35)*20;return[n,r]},SW=t=>t.getRootNode?.()||window?.document,kW=(t,e)=>({x:Math.min(t.x,e.x),y:Math.min(t.y,e.y),x2:Math.max(t.x2,e.x2),y2:Math.max(t.y2,e.y2)}),wp=({x:t,y:e,width:n,height:r})=>({x:t,y:e,x2:t+n,y2:e+r}),OW=({x:t,y:e,x2:n,y2:r})=>({x:t,y:e,width:n-t,height:r-e}),cD=t=>({...t.positionAbsolute||{x:0,y:0},width:t.width||0,height:t.height||0}),n7e=(t,e)=>OW(kW(wp(t),wp(e))),ej=(t,e)=>{const n=Math.max(0,Math.min(t.x+t.width,e.x+e.width)-Math.max(t.x,e.x)),r=Math.max(0,Math.min(t.y+t.height,e.y+e.height)-Math.max(t.y,e.y));return Math.ceil(n*r)},r7e=t=>ka(t.width)&&ka(t.height)&&ka(t.x)&&ka(t.y),ka=t=>!isNaN(t)&&isFinite(t),Lr=Symbol.for("internals"),jW=["Enter"," ","Escape"],s7e=(t,e)=>{},i7e=t=>"nativeEvent"in t;function tj(t){const n=(i7e(t)?t.nativeEvent:t).composedPath?.()?.[0]||t.target;return["INPUT","SELECT","TEXTAREA"].includes(n?.nodeName)||n?.hasAttribute("contenteditable")||!!n?.closest(".nokey")}const NW=t=>"clientX"in t,Hc=(t,e)=>{const n=NW(t),r=n?t.clientX:t.touches?.[0].clientX,s=n?t.clientY:t.touches?.[0].clientY;return{x:r-(e?.left??0),y:s-(e?.top??0)}},Ay=()=>typeof navigator<"u"&&navigator?.userAgent?.indexOf("Mac")>=0,vg=({id:t,path:e,labelX:n,labelY:r,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d,style:h,markerEnd:m,markerStart:g,interactionWidth:x=20})=>ae.createElement(ae.Fragment,null,ae.createElement("path",{id:t,style:h,d:e,fill:"none",className:"react-flow__edge-path",markerEnd:m,markerStart:g}),x&&ae.createElement("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:x,className:"react-flow__edge-interaction"}),s&&ka(n)&&ka(r)?ae.createElement(t7e,{x:n,y:r,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d}):null);vg.displayName="BaseEdge";function r0(t,e,n){return n===void 0?n:r=>{const s=e().edges.find(i=>i.id===t);s&&n(r,{...s})}}function CW({sourceX:t,sourceY:e,targetX:n,targetY:r}){const s=Math.abs(n-t)/2,i=n{const[S,k,j]=EW({sourceX:t,sourceY:e,sourcePosition:s,targetX:n,targetY:r,targetPosition:i});return ae.createElement(vg,{path:S,labelX:k,labelY:j,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:m,style:g,markerEnd:x,markerStart:y,interactionWidth:w})});ZN.displayName="SimpleBezierEdge";const dD={[wt.Left]:{x:-1,y:0},[wt.Right]:{x:1,y:0},[wt.Top]:{x:0,y:-1},[wt.Bottom]:{x:0,y:1}},a7e=({source:t,sourcePosition:e=wt.Bottom,target:n})=>e===wt.Left||e===wt.Right?t.xMath.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2));function o7e({source:t,sourcePosition:e=wt.Bottom,target:n,targetPosition:r=wt.Top,center:s,offset:i}){const a=dD[e],l=dD[r],c={x:t.x+a.x*i,y:t.y+a.y*i},d={x:n.x+l.x*i,y:n.y+l.y*i},h=a7e({source:c,sourcePosition:e,target:d}),m=h.x!==0?"x":"y",g=h[m];let x=[],y,w;const S={x:0,y:0},k={x:0,y:0},[j,N,T,E]=CW({sourceX:t.x,sourceY:t.y,targetX:n.x,targetY:n.y});if(a[m]*l[m]===-1){y=s.x??j,w=s.y??N;const A=[{x:y,y:c.y},{x:y,y:d.y}],L=[{x:c.x,y:w},{x:d.x,y:w}];a[m]===g?x=m==="x"?A:L:x=m==="x"?L:A}else{const A=[{x:c.x,y:d.y}],L=[{x:d.x,y:c.y}];if(m==="x"?x=a.x===g?L:A:x=a.y===g?A:L,e===r){const te=Math.abs(t[m]-n[m]);if(te<=i){const z=Math.min(i-1,i-te);a[m]===g?S[m]=(c[m]>t[m]?-1:1)*z:k[m]=(d[m]>n[m]?-1:1)*z}}if(e!==r){const te=m==="x"?"y":"x",z=a[m]===l[te],Q=c[te]>d[te],F=c[te]=U?(y=(P.x+B.x)/2,w=x[0].y):(y=x[0].x,w=(P.y+B.y)/2)}return[[t,{x:c.x+S.x,y:c.y+S.y},...x,{x:d.x+k.x,y:d.y+k.y},n],y,w,T,E]}function l7e(t,e,n,r){const s=Math.min(hD(t,e)/2,hD(e,n)/2,r),{x:i,y:a}=e;if(t.x===i&&i===n.x||t.y===a&&a===n.y)return`L${i} ${a}`;if(t.y===a){const d=t.x{let N="";return j>0&&j{const[k,j,N]=nj({sourceX:t,sourceY:e,sourcePosition:m,targetX:n,targetY:r,targetPosition:g,borderRadius:w?.borderRadius,offset:w?.offset});return ae.createElement(vg,{path:k,labelX:j,labelY:N,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d,style:h,markerEnd:x,markerStart:y,interactionWidth:S})});ew.displayName="SmoothStepEdge";const JN=b.memo(t=>ae.createElement(ew,{...t,pathOptions:b.useMemo(()=>({borderRadius:0,offset:t.pathOptions?.offset}),[t.pathOptions?.offset])}));JN.displayName="StepEdge";function c7e({sourceX:t,sourceY:e,targetX:n,targetY:r}){const[s,i,a,l]=CW({sourceX:t,sourceY:e,targetX:n,targetY:r});return[`M ${t},${e}L ${n},${r}`,s,i,a,l]}const e7=b.memo(({sourceX:t,sourceY:e,targetX:n,targetY:r,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d,style:h,markerEnd:m,markerStart:g,interactionWidth:x})=>{const[y,w,S]=c7e({sourceX:t,sourceY:e,targetX:n,targetY:r});return ae.createElement(vg,{path:y,labelX:w,labelY:S,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d,style:h,markerEnd:m,markerStart:g,interactionWidth:x})});e7.displayName="StraightEdge";function $1(t,e){return t>=0?.5*t:e*25*Math.sqrt(-t)}function fD({pos:t,x1:e,y1:n,x2:r,y2:s,c:i}){switch(t){case wt.Left:return[e-$1(e-r,i),n];case wt.Right:return[e+$1(r-e,i),n];case wt.Top:return[e,n-$1(n-s,i)];case wt.Bottom:return[e,n+$1(s-n,i)]}}function _W({sourceX:t,sourceY:e,sourcePosition:n=wt.Bottom,targetX:r,targetY:s,targetPosition:i=wt.Top,curvature:a=.25}){const[l,c]=fD({pos:n,x1:t,y1:e,x2:r,y2:s,c:a}),[d,h]=fD({pos:i,x1:r,y1:s,x2:t,y2:e,c:a}),[m,g,x,y]=TW({sourceX:t,sourceY:e,targetX:r,targetY:s,sourceControlX:l,sourceControlY:c,targetControlX:d,targetControlY:h});return[`M${t},${e} C${l},${c} ${d},${h} ${r},${s}`,m,g,x,y]}const Ry=b.memo(({sourceX:t,sourceY:e,targetX:n,targetY:r,sourcePosition:s=wt.Bottom,targetPosition:i=wt.Top,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:m,style:g,markerEnd:x,markerStart:y,pathOptions:w,interactionWidth:S})=>{const[k,j,N]=_W({sourceX:t,sourceY:e,sourcePosition:s,targetX:n,targetY:r,targetPosition:i,curvature:w?.curvature});return ae.createElement(vg,{path:k,labelX:j,labelY:N,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:m,style:g,markerEnd:x,markerStart:y,interactionWidth:S})});Ry.displayName="BezierEdge";const t7=b.createContext(null),u7e=t7.Provider;t7.Consumer;const d7e=()=>b.useContext(t7),h7e=t=>"id"in t&&"source"in t&&"target"in t,f7e=({source:t,sourceHandle:e,target:n,targetHandle:r})=>`reactflow__edge-${t}${e||""}-${n}${r||""}`,rj=(t,e)=>typeof t>"u"?"":typeof t=="string"?t:`${e?`${e}__`:""}${Object.keys(t).sort().map(r=>`${r}=${t[r]}`).join("&")}`,m7e=(t,e)=>e.some(n=>n.source===t.source&&n.target===t.target&&(n.sourceHandle===t.sourceHandle||!n.sourceHandle&&!t.sourceHandle)&&(n.targetHandle===t.targetHandle||!n.targetHandle&&!t.targetHandle)),p7e=(t,e)=>{if(!t.source||!t.target)return e;let n;return h7e(t)?n={...t}:n={...t,id:f7e(t)},m7e(n,e)?e:e.concat(n)},sj=({x:t,y:e},[n,r,s],i,[a,l])=>{const c={x:(t-n)/s,y:(e-r)/s};return i?{x:a*Math.round(c.x/a),y:l*Math.round(c.y/l)}:c},AW=({x:t,y:e},[n,r,s])=>({x:t*s+n,y:e*s+r}),td=(t,e=[0,0])=>{if(!t)return{x:0,y:0,positionAbsolute:{x:0,y:0}};const n=(t.width??0)*e[0],r=(t.height??0)*e[1],s={x:t.position.x-n,y:t.position.y-r};return{...s,positionAbsolute:t.positionAbsolute?{x:t.positionAbsolute.x-n,y:t.positionAbsolute.y-r}:s}},tw=(t,e=[0,0])=>{if(t.length===0)return{x:0,y:0,width:0,height:0};const n=t.reduce((r,s)=>{const{x:i,y:a}=td(s,e).positionAbsolute;return kW(r,wp({x:i,y:a,width:s.width||0,height:s.height||0}))},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return OW(n)},MW=(t,e,[n,r,s]=[0,0,1],i=!1,a=!1,l=[0,0])=>{const c={x:(e.x-n)/s,y:(e.y-r)/s,width:e.width/s,height:e.height/s},d=[];return t.forEach(h=>{const{width:m,height:g,selectable:x=!0,hidden:y=!1}=h;if(a&&!x||y)return!1;const{positionAbsolute:w}=td(h,l),S={x:w.x,y:w.y,width:m||0,height:g||0},k=ej(c,S),j=typeof m>"u"||typeof g>"u"||m===null||g===null,N=i&&k>0,T=(m||0)*(g||0);(j||N||k>=T||h.dragging)&&d.push(h)}),d},RW=(t,e)=>{const n=t.map(r=>r.id);return e.filter(r=>n.includes(r.source)||n.includes(r.target))},DW=(t,e,n,r,s,i=.1)=>{const a=e/(t.width*(1+i)),l=n/(t.height*(1+i)),c=Math.min(a,l),d=gf(c,r,s),h=t.x+t.width/2,m=t.y+t.height/2,g=e/2-h*d,x=n/2-m*d;return{x:g,y:x,zoom:d}},Lu=(t,e=0)=>t.transition().duration(e);function mD(t,e,n,r){return(e[n]||[]).reduce((s,i)=>(`${t.id}-${i.id}-${n}`!==r&&s.push({id:i.id||null,type:n,nodeId:t.id,x:(t.positionAbsolute?.x??0)+i.x+i.width/2,y:(t.positionAbsolute?.y??0)+i.y+i.height/2}),s),[])}function g7e(t,e,n,r,s,i){const{x:a,y:l}=Hc(t),d=e.elementsFromPoint(a,l).find(y=>y.classList.contains("react-flow__handle"));if(d){const y=d.getAttribute("data-nodeid");if(y){const w=n7(void 0,d),S=d.getAttribute("data-handleid"),k=i({nodeId:y,id:S,type:w});if(k){const j=s.find(N=>N.nodeId===y&&N.type===w&&N.id===S);return{handle:{id:S,type:w,nodeId:y,x:j?.x||n.x,y:j?.y||n.y},validHandleResult:k}}}}let h=[],m=1/0;if(s.forEach(y=>{const w=Math.sqrt((y.x-n.x)**2+(y.y-n.y)**2);if(w<=r){const S=i(y);w<=m&&(wy.isValid),x=h.some(({handle:y})=>y.type==="target");return h.find(({handle:y,validHandleResult:w})=>x?y.type==="target":g?w.isValid:!0)||h[0]}const x7e={source:null,target:null,sourceHandle:null,targetHandle:null},PW=()=>({handleDomNode:null,isValid:!1,connection:x7e,endHandle:null});function zW(t,e,n,r,s,i,a){const l=s==="target",c=a.querySelector(`.react-flow__handle[data-id="${t?.nodeId}-${t?.id}-${t?.type}"]`),d={...PW(),handleDomNode:c};if(c){const h=n7(void 0,c),m=c.getAttribute("data-nodeid"),g=c.getAttribute("data-handleid"),x=c.classList.contains("connectable"),y=c.classList.contains("connectableend"),w={source:l?m:n,sourceHandle:l?g:r,target:l?n:m,targetHandle:l?r:g};d.connection=w,x&&y&&(e===pd.Strict?l&&h==="source"||!l&&h==="target":m!==n||g!==r)&&(d.endHandle={nodeId:m,handleId:g,type:h},d.isValid=i(w))}return d}function v7e({nodes:t,nodeId:e,handleId:n,handleType:r}){return t.reduce((s,i)=>{if(i[Lr]){const{handleBounds:a}=i[Lr];let l=[],c=[];a&&(l=mD(i,a,"source",`${e}-${n}-${r}`),c=mD(i,a,"target",`${e}-${n}-${r}`)),s.push(...l,...c)}return s},[])}function n7(t,e){return t||(e?.classList.contains("target")?"target":e?.classList.contains("source")?"source":null)}function c5(t){t?.classList.remove("valid","connecting","react-flow__handle-valid","react-flow__handle-connecting")}function y7e(t,e){let n=null;return e?n="valid":t&&!e&&(n="invalid"),n}function IW({event:t,handleId:e,nodeId:n,onConnect:r,isTarget:s,getState:i,setState:a,isValidConnection:l,edgeUpdaterType:c,onReconnectEnd:d}){const h=SW(t.target),{connectionMode:m,domNode:g,autoPanOnConnect:x,connectionRadius:y,onConnectStart:w,panBy:S,getNodes:k,cancelConnection:j}=i();let N=0,T;const{x:E,y:_}=Hc(t),A=h?.elementFromPoint(E,_),L=n7(c,A),P=g?.getBoundingClientRect();if(!P||!L)return;let B,$=Hc(t,P),U=!1,te=null,z=!1,Q=null;const F=v7e({nodes:k(),nodeId:n,handleId:e,handleType:L}),Y=()=>{if(!x)return;const[R,ie]=wW($,P);S({x:R,y:ie}),N=requestAnimationFrame(Y)};a({connectionPosition:$,connectionStatus:null,connectionNodeId:n,connectionHandleId:e,connectionHandleType:L,connectionStartHandle:{nodeId:n,handleId:e,type:L},connectionEndHandle:null}),w?.(t,{nodeId:n,handleId:e,handleType:L});function J(R){const{transform:ie}=i();$=Hc(R,P);const{handle:G,validHandleResult:I}=g7e(R,h,sj($,ie,!1,[1,1]),y,F,V=>zW(V,m,n,e,s?"target":"source",l,h));if(T=G,U||(Y(),U=!0),Q=I.handleDomNode,te=I.connection,z=I.isValid,a({connectionPosition:T&&z?AW({x:T.x,y:T.y},ie):$,connectionStatus:y7e(!!T,z),connectionEndHandle:I.endHandle}),!T&&!z&&!Q)return c5(B);te.source!==te.target&&Q&&(c5(B),B=Q,Q.classList.add("connecting","react-flow__handle-connecting"),Q.classList.toggle("valid",z),Q.classList.toggle("react-flow__handle-valid",z))}function X(R){(T||Q)&&te&&z&&r?.(te),i().onConnectEnd?.(R),c&&d?.(R),c5(B),j(),cancelAnimationFrame(N),U=!1,z=!1,te=null,Q=null,h.removeEventListener("mousemove",J),h.removeEventListener("mouseup",X),h.removeEventListener("touchmove",J),h.removeEventListener("touchend",X)}h.addEventListener("mousemove",J),h.addEventListener("mouseup",X),h.addEventListener("touchmove",J),h.addEventListener("touchend",X)}const pD=()=>!0,b7e=t=>({connectionStartHandle:t.connectionStartHandle,connectOnClick:t.connectOnClick,noPanClassName:t.noPanClassName}),w7e=(t,e,n)=>r=>{const{connectionStartHandle:s,connectionEndHandle:i,connectionClickStartHandle:a}=r;return{connecting:s?.nodeId===t&&s?.handleId===e&&s?.type===n||i?.nodeId===t&&i?.handleId===e&&i?.type===n,clickConnecting:a?.nodeId===t&&a?.handleId===e&&a?.type===n}},LW=b.forwardRef(({type:t="source",position:e=wt.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:s=!0,isConnectableEnd:i=!0,id:a,onConnect:l,children:c,className:d,onMouseDown:h,onTouchStart:m,...g},x)=>{const y=a||null,w=t==="target",S=ps(),k=d7e(),{connectOnClick:j,noPanClassName:N}=hr(b7e,ks),{connecting:T,clickConnecting:E}=hr(w7e(k,y,t),ks);k||S.getState().onError?.("010",Gl.error010());const _=P=>{const{defaultEdgeOptions:B,onConnect:$,hasDefaultEdges:U}=S.getState(),te={...B,...P};if(U){const{edges:z,setEdges:Q}=S.getState();Q(p7e(te,z))}$?.(te),l?.(te)},A=P=>{if(!k)return;const B=NW(P);s&&(B&&P.button===0||!B)&&IW({event:P,handleId:y,nodeId:k,onConnect:_,isTarget:w,getState:S.getState,setState:S.setState,isValidConnection:n||S.getState().isValidConnection||pD}),B?h?.(P):m?.(P)},L=P=>{const{onClickConnectStart:B,onClickConnectEnd:$,connectionClickStartHandle:U,connectionMode:te,isValidConnection:z}=S.getState();if(!k||!U&&!s)return;if(!U){B?.(P,{nodeId:k,handleId:y,handleType:t}),S.setState({connectionClickStartHandle:{nodeId:k,type:t,handleId:y}});return}const Q=SW(P.target),F=n||z||pD,{connection:Y,isValid:J}=zW({nodeId:k,id:y,type:t},te,U.nodeId,U.handleId||null,U.type,F,Q);J&&_(Y),$?.(P),S.setState({connectionClickStartHandle:null})};return ae.createElement("div",{"data-handleid":y,"data-nodeid":k,"data-handlepos":e,"data-id":`${k}-${y}-${t}`,className:Bs(["react-flow__handle",`react-flow__handle-${e}`,"nodrag",N,d,{source:!w,target:w,connectable:r,connectablestart:s,connectableend:i,connecting:E,connectionindicator:r&&(s&&!T||i&&T)}]),onMouseDown:A,onTouchStart:A,onClick:j?L:void 0,ref:x,...g},c)});LW.displayName="Handle";var ru=b.memo(LW);const BW=({data:t,isConnectable:e,targetPosition:n=wt.Top,sourcePosition:r=wt.Bottom})=>ae.createElement(ae.Fragment,null,ae.createElement(ru,{type:"target",position:n,isConnectable:e}),t?.label,ae.createElement(ru,{type:"source",position:r,isConnectable:e}));BW.displayName="DefaultNode";var ij=b.memo(BW);const FW=({data:t,isConnectable:e,sourcePosition:n=wt.Bottom})=>ae.createElement(ae.Fragment,null,t?.label,ae.createElement(ru,{type:"source",position:n,isConnectable:e}));FW.displayName="InputNode";var qW=b.memo(FW);const $W=({data:t,isConnectable:e,targetPosition:n=wt.Top})=>ae.createElement(ae.Fragment,null,ae.createElement(ru,{type:"target",position:n,isConnectable:e}),t?.label);$W.displayName="OutputNode";var HW=b.memo($W);const r7=()=>null;r7.displayName="GroupNode";const S7e=t=>({selectedNodes:t.getNodes().filter(e=>e.selected),selectedEdges:t.edges.filter(e=>e.selected).map(e=>({...e}))}),H1=t=>t.id;function k7e(t,e){return ks(t.selectedNodes.map(H1),e.selectedNodes.map(H1))&&ks(t.selectedEdges.map(H1),e.selectedEdges.map(H1))}const QW=b.memo(({onSelectionChange:t})=>{const e=ps(),{selectedNodes:n,selectedEdges:r}=hr(S7e,k7e);return b.useEffect(()=>{const s={nodes:n,edges:r};t?.(s),e.getState().onSelectionChange.forEach(i=>i(s))},[n,r,t]),null});QW.displayName="SelectionListener";const O7e=t=>!!t.onSelectionChange;function j7e({onSelectionChange:t}){const e=hr(O7e);return t||e?ae.createElement(QW,{onSelectionChange:t}):null}const N7e=t=>({setNodes:t.setNodes,setEdges:t.setEdges,setDefaultNodesAndEdges:t.setDefaultNodesAndEdges,setMinZoom:t.setMinZoom,setMaxZoom:t.setMaxZoom,setTranslateExtent:t.setTranslateExtent,setNodeExtent:t.setNodeExtent,reset:t.reset});function uh(t,e){b.useEffect(()=>{typeof t<"u"&&e(t)},[t])}function an(t,e,n){b.useEffect(()=>{typeof e<"u"&&n({[t]:e})},[e])}const C7e=({nodes:t,edges:e,defaultNodes:n,defaultEdges:r,onConnect:s,onConnectStart:i,onConnectEnd:a,onClickConnectStart:l,onClickConnectEnd:c,nodesDraggable:d,nodesConnectable:h,nodesFocusable:m,edgesFocusable:g,edgesUpdatable:x,elevateNodesOnSelect:y,minZoom:w,maxZoom:S,nodeExtent:k,onNodesChange:j,onEdgesChange:N,elementsSelectable:T,connectionMode:E,snapGrid:_,snapToGrid:A,translateExtent:L,connectOnClick:P,defaultEdgeOptions:B,fitView:$,fitViewOptions:U,onNodesDelete:te,onEdgesDelete:z,onNodeDrag:Q,onNodeDragStart:F,onNodeDragStop:Y,onSelectionDrag:J,onSelectionDragStart:X,onSelectionDragStop:R,noPanClassName:ie,nodeOrigin:G,rfId:I,autoPanOnConnect:V,autoPanOnNodeDrag:ee,onError:ne,connectionRadius:W,isValidConnection:se,nodeDragThreshold:re})=>{const{setNodes:oe,setEdges:Te,setDefaultNodesAndEdges:We,setMinZoom:Ye,setMaxZoom:Je,setTranslateExtent:Oe,setNodeExtent:Ve,reset:Ue}=hr(N7e,ks),He=ps();return b.useEffect(()=>{const Ot=r?.map(xt=>({...xt,...B}));return We(n,Ot),()=>{Ue()}},[]),an("defaultEdgeOptions",B,He.setState),an("connectionMode",E,He.setState),an("onConnect",s,He.setState),an("onConnectStart",i,He.setState),an("onConnectEnd",a,He.setState),an("onClickConnectStart",l,He.setState),an("onClickConnectEnd",c,He.setState),an("nodesDraggable",d,He.setState),an("nodesConnectable",h,He.setState),an("nodesFocusable",m,He.setState),an("edgesFocusable",g,He.setState),an("edgesUpdatable",x,He.setState),an("elementsSelectable",T,He.setState),an("elevateNodesOnSelect",y,He.setState),an("snapToGrid",A,He.setState),an("snapGrid",_,He.setState),an("onNodesChange",j,He.setState),an("onEdgesChange",N,He.setState),an("connectOnClick",P,He.setState),an("fitViewOnInit",$,He.setState),an("fitViewOnInitOptions",U,He.setState),an("onNodesDelete",te,He.setState),an("onEdgesDelete",z,He.setState),an("onNodeDrag",Q,He.setState),an("onNodeDragStart",F,He.setState),an("onNodeDragStop",Y,He.setState),an("onSelectionDrag",J,He.setState),an("onSelectionDragStart",X,He.setState),an("onSelectionDragStop",R,He.setState),an("noPanClassName",ie,He.setState),an("nodeOrigin",G,He.setState),an("rfId",I,He.setState),an("autoPanOnConnect",V,He.setState),an("autoPanOnNodeDrag",ee,He.setState),an("onError",ne,He.setState),an("connectionRadius",W,He.setState),an("isValidConnection",se,He.setState),an("nodeDragThreshold",re,He.setState),uh(t,oe),uh(e,Te),uh(w,Ye),uh(S,Je),uh(L,Oe),uh(k,Ve),null},gD={display:"none"},T7e={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},VW="react-flow__node-desc",UW="react-flow__edge-desc",E7e="react-flow__aria-live",_7e=t=>t.ariaLiveMessage;function A7e({rfId:t}){const e=hr(_7e);return ae.createElement("div",{id:`${E7e}-${t}`,"aria-live":"assertive","aria-atomic":"true",style:T7e},e)}function M7e({rfId:t,disableKeyboardA11y:e}){return ae.createElement(ae.Fragment,null,ae.createElement("div",{id:`${VW}-${t}`,style:gD},"Press enter or space to select a node.",!e&&"You can then use the arrow keys to move the node around."," Press delete to remove it and escape to cancel."," "),ae.createElement("div",{id:`${UW}-${t}`,style:gD},"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."),!e&&ae.createElement(A7e,{rfId:t}))}var kp=(t=null,e={actInsideInputWithModifier:!0})=>{const[n,r]=b.useState(!1),s=b.useRef(!1),i=b.useRef(new Set([])),[a,l]=b.useMemo(()=>{if(t!==null){const d=(Array.isArray(t)?t:[t]).filter(m=>typeof m=="string").map(m=>m.split("+")),h=d.reduce((m,g)=>m.concat(...g),[]);return[d,h]}return[[],[]]},[t]);return b.useEffect(()=>{const c=typeof document<"u"?document:null,d=e?.target||c;if(t!==null){const h=x=>{if(s.current=x.ctrlKey||x.metaKey||x.shiftKey,(!s.current||s.current&&!e.actInsideInputWithModifier)&&tj(x))return!1;const w=vD(x.code,l);i.current.add(x[w]),xD(a,i.current,!1)&&(x.preventDefault(),r(!0))},m=x=>{if((!s.current||s.current&&!e.actInsideInputWithModifier)&&tj(x))return!1;const w=vD(x.code,l);xD(a,i.current,!0)?(r(!1),i.current.clear()):i.current.delete(x[w]),x.key==="Meta"&&i.current.clear(),s.current=!1},g=()=>{i.current.clear(),r(!1)};return d?.addEventListener("keydown",h),d?.addEventListener("keyup",m),window.addEventListener("blur",g),()=>{d?.removeEventListener("keydown",h),d?.removeEventListener("keyup",m),window.removeEventListener("blur",g)}}},[t,r]),n};function xD(t,e,n){return t.filter(r=>n||r.length===e.size).some(r=>r.every(s=>e.has(s)))}function vD(t,e){return e.includes(t)?"code":"key"}function WW(t,e,n,r){const s=t.parentNode||t.parentId;if(!s)return n;const i=e.get(s),a=td(i,r);return WW(i,e,{x:(n.x??0)+a.x,y:(n.y??0)+a.y,z:(i[Lr]?.z??0)>(n.z??0)?i[Lr]?.z??0:n.z??0},r)}function GW(t,e,n){t.forEach(r=>{const s=r.parentNode||r.parentId;if(s&&!t.has(s))throw new Error(`Parent node ${s} not found`);if(s||n?.[r.id]){const{x:i,y:a,z:l}=WW(r,t,{...r.position,z:r[Lr]?.z??0},e);r.positionAbsolute={x:i,y:a},r[Lr].z=l,n?.[r.id]&&(r[Lr].isParent=!0)}})}function u5(t,e,n,r){const s=new Map,i={},a=r?1e3:0;return t.forEach(l=>{const c=(ka(l.zIndex)?l.zIndex:0)+(l.selected?a:0),d=e.get(l.id),h={...l,positionAbsolute:{x:l.position.x,y:l.position.y}},m=l.parentNode||l.parentId;m&&(i[m]=!0);const g=d?.type&&d?.type!==l.type;Object.defineProperty(h,Lr,{enumerable:!1,value:{handleBounds:g?void 0:d?.[Lr]?.handleBounds,z:c}}),s.set(l.id,h)}),GW(s,n,i),s}function XW(t,e={}){const{getNodes:n,width:r,height:s,minZoom:i,maxZoom:a,d3Zoom:l,d3Selection:c,fitViewOnInitDone:d,fitViewOnInit:h,nodeOrigin:m}=t(),g=e.initial&&!d&&h;if(l&&c&&(g||!e.initial)){const y=n().filter(S=>{const k=e.includeHiddenNodes?S.width&&S.height:!S.hidden;return e.nodes?.length?k&&e.nodes.some(j=>j.id===S.id):k}),w=y.every(S=>S.width&&S.height);if(y.length>0&&w){const S=tw(y,m),{x:k,y:j,zoom:N}=DW(S,r,s,e.minZoom??i,e.maxZoom??a,e.padding??.1),T=Fl.translate(k,j).scale(N);return typeof e.duration=="number"&&e.duration>0?l.transform(Lu(c,e.duration),T):l.transform(c,T),!0}}return!1}function R7e(t,e){return t.forEach(n=>{const r=e.get(n.id);r&&e.set(r.id,{...r,[Lr]:r[Lr],selected:n.selected})}),new Map(e)}function D7e(t,e){return e.map(n=>{const r=t.find(s=>s.id===n.id);return r&&(n.selected=r.selected),n})}function Q1({changedNodes:t,changedEdges:e,get:n,set:r}){const{nodeInternals:s,edges:i,onNodesChange:a,onEdgesChange:l,hasDefaultNodes:c,hasDefaultEdges:d}=n();t?.length&&(c&&r({nodeInternals:R7e(t,s)}),a?.(t)),e?.length&&(d&&r({edges:D7e(e,i)}),l?.(e))}const dh=()=>{},P7e={zoomIn:dh,zoomOut:dh,zoomTo:dh,getZoom:()=>1,setViewport:dh,getViewport:()=>({x:0,y:0,zoom:1}),fitView:()=>!1,setCenter:dh,fitBounds:dh,project:t=>t,screenToFlowPosition:t=>t,flowToScreenPosition:t=>t,viewportInitialized:!1},z7e=t=>({d3Zoom:t.d3Zoom,d3Selection:t.d3Selection}),I7e=()=>{const t=ps(),{d3Zoom:e,d3Selection:n}=hr(z7e,ks);return b.useMemo(()=>n&&e?{zoomIn:s=>e.scaleBy(Lu(n,s?.duration),1.2),zoomOut:s=>e.scaleBy(Lu(n,s?.duration),1/1.2),zoomTo:(s,i)=>e.scaleTo(Lu(n,i?.duration),s),getZoom:()=>t.getState().transform[2],setViewport:(s,i)=>{const[a,l,c]=t.getState().transform,d=Fl.translate(s.x??a,s.y??l).scale(s.zoom??c);e.transform(Lu(n,i?.duration),d)},getViewport:()=>{const[s,i,a]=t.getState().transform;return{x:s,y:i,zoom:a}},fitView:s=>XW(t.getState,s),setCenter:(s,i,a)=>{const{width:l,height:c,maxZoom:d}=t.getState(),h=typeof a?.zoom<"u"?a.zoom:d,m=l/2-s*h,g=c/2-i*h,x=Fl.translate(m,g).scale(h);e.transform(Lu(n,a?.duration),x)},fitBounds:(s,i)=>{const{width:a,height:l,minZoom:c,maxZoom:d}=t.getState(),{x:h,y:m,zoom:g}=DW(s,a,l,c,d,i?.padding??.1),x=Fl.translate(h,m).scale(g);e.transform(Lu(n,i?.duration),x)},project:s=>{const{transform:i,snapToGrid:a,snapGrid:l}=t.getState();return console.warn("[DEPRECATED] `project` is deprecated. Instead use `screenToFlowPosition`. There is no need to subtract the react flow bounds anymore! https://reactflow.dev/api-reference/types/react-flow-instance#screen-to-flow-position"),sj(s,i,a,l)},screenToFlowPosition:s=>{const{transform:i,snapToGrid:a,snapGrid:l,domNode:c}=t.getState();if(!c)return s;const{x:d,y:h}=c.getBoundingClientRect(),m={x:s.x-d,y:s.y-h};return sj(m,i,a,l)},flowToScreenPosition:s=>{const{transform:i,domNode:a}=t.getState();if(!a)return s;const{x:l,y:c}=a.getBoundingClientRect(),d=AW(s,i);return{x:d.x+l,y:d.y+c}},viewportInitialized:!0}:P7e,[e,n])};function s7(){const t=I7e(),e=ps(),n=b.useCallback(()=>e.getState().getNodes().map(w=>({...w})),[]),r=b.useCallback(w=>e.getState().nodeInternals.get(w),[]),s=b.useCallback(()=>{const{edges:w=[]}=e.getState();return w.map(S=>({...S}))},[]),i=b.useCallback(w=>{const{edges:S=[]}=e.getState();return S.find(k=>k.id===w)},[]),a=b.useCallback(w=>{const{getNodes:S,setNodes:k,hasDefaultNodes:j,onNodesChange:N}=e.getState(),T=S(),E=typeof w=="function"?w(T):w;if(j)k(E);else if(N){const _=E.length===0?T.map(A=>({type:"remove",id:A.id})):E.map(A=>({item:A,type:"reset"}));N(_)}},[]),l=b.useCallback(w=>{const{edges:S=[],setEdges:k,hasDefaultEdges:j,onEdgesChange:N}=e.getState(),T=typeof w=="function"?w(S):w;if(j)k(T);else if(N){const E=T.length===0?S.map(_=>({type:"remove",id:_.id})):T.map(_=>({item:_,type:"reset"}));N(E)}},[]),c=b.useCallback(w=>{const S=Array.isArray(w)?w:[w],{getNodes:k,setNodes:j,hasDefaultNodes:N,onNodesChange:T}=e.getState();if(N){const _=[...k(),...S];j(_)}else if(T){const E=S.map(_=>({item:_,type:"add"}));T(E)}},[]),d=b.useCallback(w=>{const S=Array.isArray(w)?w:[w],{edges:k=[],setEdges:j,hasDefaultEdges:N,onEdgesChange:T}=e.getState();if(N)j([...k,...S]);else if(T){const E=S.map(_=>({item:_,type:"add"}));T(E)}},[]),h=b.useCallback(()=>{const{getNodes:w,edges:S=[],transform:k}=e.getState(),[j,N,T]=k;return{nodes:w().map(E=>({...E})),edges:S.map(E=>({...E})),viewport:{x:j,y:N,zoom:T}}},[]),m=b.useCallback(({nodes:w,edges:S})=>{const{nodeInternals:k,getNodes:j,edges:N,hasDefaultNodes:T,hasDefaultEdges:E,onNodesDelete:_,onEdgesDelete:A,onNodesChange:L,onEdgesChange:P}=e.getState(),B=(w||[]).map(Q=>Q.id),$=(S||[]).map(Q=>Q.id),U=j().reduce((Q,F)=>{const Y=F.parentNode||F.parentId,J=!B.includes(F.id)&&Y&&Q.find(R=>R.id===Y);return(typeof F.deletable=="boolean"?F.deletable:!0)&&(B.includes(F.id)||J)&&Q.push(F),Q},[]),te=N.filter(Q=>typeof Q.deletable=="boolean"?Q.deletable:!0),z=te.filter(Q=>$.includes(Q.id));if(U||z){const Q=RW(U,te),F=[...z,...Q],Y=F.reduce((J,X)=>(J.includes(X.id)||J.push(X.id),J),[]);if((E||T)&&(E&&e.setState({edges:N.filter(J=>!Y.includes(J.id))}),T&&(U.forEach(J=>{k.delete(J.id)}),e.setState({nodeInternals:new Map(k)}))),Y.length>0&&(A?.(F),P&&P(Y.map(J=>({id:J,type:"remove"})))),U.length>0&&(_?.(U),L)){const J=U.map(X=>({id:X.id,type:"remove"}));L(J)}}},[]),g=b.useCallback(w=>{const S=r7e(w),k=S?null:e.getState().nodeInternals.get(w.id);return!S&&!k?[null,null,S]:[S?w:cD(k),k,S]},[]),x=b.useCallback((w,S=!0,k)=>{const[j,N,T]=g(w);return j?(k||e.getState().getNodes()).filter(E=>{if(!T&&(E.id===N.id||!E.positionAbsolute))return!1;const _=cD(E),A=ej(_,j);return S&&A>0||A>=j.width*j.height}):[]},[]),y=b.useCallback((w,S,k=!0)=>{const[j]=g(w);if(!j)return!1;const N=ej(j,S);return k&&N>0||N>=j.width*j.height},[]);return b.useMemo(()=>({...t,getNodes:n,getNode:r,getEdges:s,getEdge:i,setNodes:a,setEdges:l,addNodes:c,addEdges:d,toObject:h,deleteElements:m,getIntersectingNodes:x,isNodeIntersecting:y}),[t,n,r,s,i,a,l,c,d,h,m,x,y])}const L7e={actInsideInputWithModifier:!1};var B7e=({deleteKeyCode:t,multiSelectionKeyCode:e})=>{const n=ps(),{deleteElements:r}=s7(),s=kp(t,L7e),i=kp(e);b.useEffect(()=>{if(s){const{edges:a,getNodes:l}=n.getState(),c=l().filter(h=>h.selected),d=a.filter(h=>h.selected);r({nodes:c,edges:d}),n.setState({nodesSelectionActive:!1})}},[s]),b.useEffect(()=>{n.setState({multiSelectionActive:i})},[i])};function F7e(t){const e=ps();b.useEffect(()=>{let n;const r=()=>{if(!t.current)return;const s=YN(t.current);(s.height===0||s.width===0)&&e.getState().onError?.("004",Gl.error004()),e.setState({width:s.width||500,height:s.height||500})};return r(),window.addEventListener("resize",r),t.current&&(n=new ResizeObserver(()=>r()),n.observe(t.current)),()=>{window.removeEventListener("resize",r),n&&t.current&&n.unobserve(t.current)}},[])}const i7={position:"absolute",width:"100%",height:"100%",top:0,left:0},q7e=(t,e)=>t.x!==e.x||t.y!==e.y||t.zoom!==e.k,V1=t=>({x:t.x,y:t.y,zoom:t.k}),hh=(t,e)=>t.target.closest(`.${e}`),yD=(t,e)=>e===2&&Array.isArray(t)&&t.includes(2),bD=t=>{const e=t.ctrlKey&&Ay()?10:1;return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*e},$7e=t=>({d3Zoom:t.d3Zoom,d3Selection:t.d3Selection,d3ZoomHandler:t.d3ZoomHandler,userSelectionActive:t.userSelectionActive}),H7e=({onMove:t,onMoveStart:e,onMoveEnd:n,onPaneContextMenu:r,zoomOnScroll:s=!0,zoomOnPinch:i=!0,panOnScroll:a=!1,panOnScrollSpeed:l=.5,panOnScrollMode:c=Wu.Free,zoomOnDoubleClick:d=!0,elementsSelectable:h,panOnDrag:m=!0,defaultViewport:g,translateExtent:x,minZoom:y,maxZoom:w,zoomActivationKeyCode:S,preventScrolling:k=!0,children:j,noWheelClassName:N,noPanClassName:T})=>{const E=b.useRef(),_=ps(),A=b.useRef(!1),L=b.useRef(!1),P=b.useRef(null),B=b.useRef({x:0,y:0,zoom:0}),{d3Zoom:$,d3Selection:U,d3ZoomHandler:te,userSelectionActive:z}=hr($7e,ks),Q=kp(S),F=b.useRef(0),Y=b.useRef(!1),J=b.useRef();return F7e(P),b.useEffect(()=>{if(P.current){const X=P.current.getBoundingClientRect(),R=yW().scaleExtent([y,w]).translateExtent(x),ie=ma(P.current).call(R),G=Fl.translate(g.x,g.y).scale(gf(g.zoom,y,w)),I=[[0,0],[X.width,X.height]],V=R.constrain()(G,I,x);R.transform(ie,V),R.wheelDelta(bD),_.setState({d3Zoom:R,d3Selection:ie,d3ZoomHandler:ie.on("wheel.zoom"),transform:[V.x,V.y,V.k],domNode:P.current.closest(".react-flow")})}},[]),b.useEffect(()=>{U&&$&&(a&&!Q&&!z?U.on("wheel.zoom",X=>{if(hh(X,N))return!1;X.preventDefault(),X.stopImmediatePropagation();const R=U.property("__zoom").k||1;if(X.ctrlKey&&i){const se=Ha(X),re=bD(X),oe=R*Math.pow(2,re);$.scaleTo(U,oe,se,X);return}const ie=X.deltaMode===1?20:1;let G=c===Wu.Vertical?0:X.deltaX*ie,I=c===Wu.Horizontal?0:X.deltaY*ie;!Ay()&&X.shiftKey&&c!==Wu.Vertical&&(G=X.deltaY*ie,I=0),$.translateBy(U,-(G/R)*l,-(I/R)*l,{internal:!0});const V=V1(U.property("__zoom")),{onViewportChangeStart:ee,onViewportChange:ne,onViewportChangeEnd:W}=_.getState();clearTimeout(J.current),Y.current||(Y.current=!0,e?.(X,V),ee?.(V)),Y.current&&(t?.(X,V),ne?.(V),J.current=setTimeout(()=>{n?.(X,V),W?.(V),Y.current=!1},150))},{passive:!1}):typeof te<"u"&&U.on("wheel.zoom",function(X,R){if(!k&&X.type==="wheel"&&!X.ctrlKey||hh(X,N))return null;X.preventDefault(),te.call(this,X,R)},{passive:!1}))},[z,a,c,U,$,te,Q,i,k,N,e,t,n]),b.useEffect(()=>{$&&$.on("start",X=>{if(!X.sourceEvent||X.sourceEvent.internal)return null;F.current=X.sourceEvent?.button;const{onViewportChangeStart:R}=_.getState(),ie=V1(X.transform);A.current=!0,B.current=ie,X.sourceEvent?.type==="mousedown"&&_.setState({paneDragging:!0}),R?.(ie),e?.(X.sourceEvent,ie)})},[$,e]),b.useEffect(()=>{$&&(z&&!A.current?$.on("zoom",null):z||$.on("zoom",X=>{const{onViewportChange:R}=_.getState();if(_.setState({transform:[X.transform.x,X.transform.y,X.transform.k]}),L.current=!!(r&&yD(m,F.current??0)),(t||R)&&!X.sourceEvent?.internal){const ie=V1(X.transform);R?.(ie),t?.(X.sourceEvent,ie)}}))},[z,$,t,m,r]),b.useEffect(()=>{$&&$.on("end",X=>{if(!X.sourceEvent||X.sourceEvent.internal)return null;const{onViewportChangeEnd:R}=_.getState();if(A.current=!1,_.setState({paneDragging:!1}),r&&yD(m,F.current??0)&&!L.current&&r(X.sourceEvent),L.current=!1,(n||R)&&q7e(B.current,X.transform)){const ie=V1(X.transform);B.current=ie,clearTimeout(E.current),E.current=setTimeout(()=>{R?.(ie),n?.(X.sourceEvent,ie)},a?150:0)}})},[$,a,m,n,r]),b.useEffect(()=>{$&&$.filter(X=>{const R=Q||s,ie=i&&X.ctrlKey;if((m===!0||Array.isArray(m)&&m.includes(1))&&X.button===1&&X.type==="mousedown"&&(hh(X,"react-flow__node")||hh(X,"react-flow__edge")))return!0;if(!m&&!R&&!a&&!d&&!i||z||!d&&X.type==="dblclick"||hh(X,N)&&X.type==="wheel"||hh(X,T)&&(X.type!=="wheel"||a&&X.type==="wheel"&&!Q)||!i&&X.ctrlKey&&X.type==="wheel"||!R&&!a&&!ie&&X.type==="wheel"||!m&&(X.type==="mousedown"||X.type==="touchstart")||Array.isArray(m)&&!m.includes(X.button)&&X.type==="mousedown")return!1;const G=Array.isArray(m)&&m.includes(X.button)||!X.button||X.button<=1;return(!X.ctrlKey||X.type==="wheel")&&G})},[z,$,s,i,a,d,m,h,Q]),ae.createElement("div",{className:"react-flow__renderer",ref:P,style:i7},j)},Q7e=t=>({userSelectionActive:t.userSelectionActive,userSelectionRect:t.userSelectionRect});function V7e(){const{userSelectionActive:t,userSelectionRect:e}=hr(Q7e,ks);return t&&e?ae.createElement("div",{className:"react-flow__selection react-flow__container",style:{width:e.width,height:e.height,transform:`translate(${e.x}px, ${e.y}px)`}}):null}function wD(t,e){const n=e.parentNode||e.parentId,r=t.find(s=>s.id===n);if(r){const s=e.position.x+e.width-r.width,i=e.position.y+e.height-r.height;if(s>0||i>0||e.position.x<0||e.position.y<0){if(r.style={...r.style},r.style.width=r.style.width??r.width,r.style.height=r.style.height??r.height,s>0&&(r.style.width+=s),i>0&&(r.style.height+=i),e.position.x<0){const a=Math.abs(e.position.x);r.position.x=r.position.x-a,r.style.width+=a,e.position.x=0}if(e.position.y<0){const a=Math.abs(e.position.y);r.position.y=r.position.y-a,r.style.height+=a,e.position.y=0}r.width=r.style.width,r.height=r.style.height}}}function YW(t,e){if(t.some(r=>r.type==="reset"))return t.filter(r=>r.type==="reset").map(r=>r.item);const n=t.filter(r=>r.type==="add").map(r=>r.item);return e.reduce((r,s)=>{const i=t.filter(l=>l.id===s.id);if(i.length===0)return r.push(s),r;const a={...s};for(const l of i)if(l)switch(l.type){case"select":{a.selected=l.selected;break}case"position":{typeof l.position<"u"&&(a.position=l.position),typeof l.positionAbsolute<"u"&&(a.positionAbsolute=l.positionAbsolute),typeof l.dragging<"u"&&(a.dragging=l.dragging),a.expandParent&&wD(r,a);break}case"dimensions":{typeof l.dimensions<"u"&&(a.width=l.dimensions.width,a.height=l.dimensions.height),typeof l.updateStyle<"u"&&(a.style={...a.style||{},...l.dimensions}),typeof l.resizing=="boolean"&&(a.resizing=l.resizing),a.expandParent&&wD(r,a);break}case"remove":return r}return r.push(a),r},n)}function KW(t,e){return YW(t,e)}function U7e(t,e){return YW(t,e)}const Pc=(t,e)=>({id:t,type:"select",selected:e});function Eh(t,e){return t.reduce((n,r)=>{const s=e.includes(r.id);return!r.selected&&s?(r.selected=!0,n.push(Pc(r.id,!0))):r.selected&&!s&&(r.selected=!1,n.push(Pc(r.id,!1))),n},[])}const d5=(t,e)=>n=>{n.target===e.current&&t?.(n)},W7e=t=>({userSelectionActive:t.userSelectionActive,elementsSelectable:t.elementsSelectable,dragging:t.paneDragging}),ZW=b.memo(({isSelecting:t,selectionMode:e=Sp.Full,panOnDrag:n,onSelectionStart:r,onSelectionEnd:s,onPaneClick:i,onPaneContextMenu:a,onPaneScroll:l,onPaneMouseEnter:c,onPaneMouseMove:d,onPaneMouseLeave:h,children:m})=>{const g=b.useRef(null),x=ps(),y=b.useRef(0),w=b.useRef(0),S=b.useRef(),{userSelectionActive:k,elementsSelectable:j,dragging:N}=hr(W7e,ks),T=()=>{x.setState({userSelectionActive:!1,userSelectionRect:null}),y.current=0,w.current=0},E=te=>{i?.(te),x.getState().resetSelectedElements(),x.setState({nodesSelectionActive:!1})},_=te=>{if(Array.isArray(n)&&n?.includes(2)){te.preventDefault();return}a?.(te)},A=l?te=>l(te):void 0,L=te=>{const{resetSelectedElements:z,domNode:Q}=x.getState();if(S.current=Q?.getBoundingClientRect(),!j||!t||te.button!==0||te.target!==g.current||!S.current)return;const{x:F,y:Y}=Hc(te,S.current);z(),x.setState({userSelectionRect:{width:0,height:0,startX:F,startY:Y,x:F,y:Y}}),r?.(te)},P=te=>{const{userSelectionRect:z,nodeInternals:Q,edges:F,transform:Y,onNodesChange:J,onEdgesChange:X,nodeOrigin:R,getNodes:ie}=x.getState();if(!t||!S.current||!z)return;x.setState({userSelectionActive:!0,nodesSelectionActive:!1});const G=Hc(te,S.current),I=z.startX??0,V=z.startY??0,ee={...z,x:G.xoe.id),re=W.map(oe=>oe.id);if(y.current!==re.length){y.current=re.length;const oe=Eh(ne,re);oe.length&&J?.(oe)}if(w.current!==se.length){w.current=se.length;const oe=Eh(F,se);oe.length&&X?.(oe)}x.setState({userSelectionRect:ee})},B=te=>{if(te.button!==0)return;const{userSelectionRect:z}=x.getState();!k&&z&&te.target===g.current&&E?.(te),x.setState({nodesSelectionActive:y.current>0}),T(),s?.(te)},$=te=>{k&&(x.setState({nodesSelectionActive:y.current>0}),s?.(te)),T()},U=j&&(t||k);return ae.createElement("div",{className:Bs(["react-flow__pane",{dragging:N,selection:t}]),onClick:U?void 0:d5(E,g),onContextMenu:d5(_,g),onWheel:d5(A,g),onMouseEnter:U?void 0:c,onMouseDown:U?L:void 0,onMouseMove:U?P:d,onMouseUp:U?B:void 0,onMouseLeave:U?$:h,ref:g,style:i7},m,ae.createElement(V7e,null))});ZW.displayName="Pane";function JW(t,e){const n=t.parentNode||t.parentId;if(!n)return!1;const r=e.get(n);return r?r.selected?!0:JW(r,e):!1}function SD(t,e,n){let r=t;do{if(r?.matches(e))return!0;if(r===n.current)return!1;r=r.parentElement}while(r);return!1}function G7e(t,e,n,r){return Array.from(t.values()).filter(s=>(s.selected||s.id===r)&&(!s.parentNode||s.parentId||!JW(s,t))&&(s.draggable||e&&typeof s.draggable>"u")).map(s=>({id:s.id,position:s.position||{x:0,y:0},positionAbsolute:s.positionAbsolute||{x:0,y:0},distance:{x:n.x-(s.positionAbsolute?.x??0),y:n.y-(s.positionAbsolute?.y??0)},delta:{x:0,y:0},extent:s.extent,parentNode:s.parentNode||s.parentId,parentId:s.parentNode||s.parentId,width:s.width,height:s.height,expandParent:s.expandParent}))}function X7e(t,e){return!e||e==="parent"?e:[e[0],[e[1][0]-(t.width||0),e[1][1]-(t.height||0)]]}function eG(t,e,n,r,s=[0,0],i){const a=X7e(t,t.extent||r);let l=a;const c=t.parentNode||t.parentId;if(t.extent==="parent"&&!t.expandParent)if(c&&t.width&&t.height){const m=n.get(c),{x:g,y:x}=td(m,s).positionAbsolute;l=m&&ka(g)&&ka(x)&&ka(m.width)&&ka(m.height)?[[g+t.width*s[0],x+t.height*s[1]],[g+m.width-t.width+t.width*s[0],x+m.height-t.height+t.height*s[1]]]:l}else i?.("005",Gl.error005()),l=a;else if(t.extent&&c&&t.extent!=="parent"){const m=n.get(c),{x:g,y:x}=td(m,s).positionAbsolute;l=[[t.extent[0][0]+g,t.extent[0][1]+x],[t.extent[1][0]+g,t.extent[1][1]+x]]}let d={x:0,y:0};if(c){const m=n.get(c);d=td(m,s).positionAbsolute}const h=l&&l!=="parent"?KN(e,l):e;return{position:{x:h.x-d.x,y:h.y-d.y},positionAbsolute:h}}function h5({nodeId:t,dragItems:e,nodeInternals:n}){const r=e.map(s=>({...n.get(s.id),position:s.position,positionAbsolute:s.positionAbsolute}));return[t?r.find(s=>s.id===t):r[0],r]}const kD=(t,e,n,r)=>{const s=e.querySelectorAll(t);if(!s||!s.length)return null;const i=Array.from(s),a=e.getBoundingClientRect(),l={x:a.width*r[0],y:a.height*r[1]};return i.map(c=>{const d=c.getBoundingClientRect();return{id:c.getAttribute("data-handleid"),position:c.getAttribute("data-handlepos"),x:(d.left-a.left-l.x)/n,y:(d.top-a.top-l.y)/n,...YN(c)}})};function s0(t,e,n){return n===void 0?n:r=>{const s=e().nodeInternals.get(t);s&&n(r,{...s})}}function aj({id:t,store:e,unselect:n=!1,nodeRef:r}){const{addSelectedNodes:s,unselectNodesAndEdges:i,multiSelectionActive:a,nodeInternals:l,onError:c}=e.getState(),d=l.get(t);if(!d){c?.("012",Gl.error012(t));return}e.setState({nodesSelectionActive:!1}),d.selected?(n||d.selected&&a)&&(i({nodes:[d],edges:[]}),requestAnimationFrame(()=>r?.current?.blur())):s([t])}function Y7e(){const t=ps();return b.useCallback(({sourceEvent:n})=>{const{transform:r,snapGrid:s,snapToGrid:i}=t.getState(),a=n.touches?n.touches[0].clientX:n.clientX,l=n.touches?n.touches[0].clientY:n.clientY,c={x:(a-r[0])/r[2],y:(l-r[1])/r[2]};return{xSnapped:i?s[0]*Math.round(c.x/s[0]):c.x,ySnapped:i?s[1]*Math.round(c.y/s[1]):c.y,...c}},[])}function f5(t){return(e,n,r)=>t?.(e,r)}function tG({nodeRef:t,disabled:e=!1,noDragClassName:n,handleSelector:r,nodeId:s,isSelectable:i,selectNodesOnDrag:a}){const l=ps(),[c,d]=b.useState(!1),h=b.useRef([]),m=b.useRef({x:null,y:null}),g=b.useRef(0),x=b.useRef(null),y=b.useRef({x:0,y:0}),w=b.useRef(null),S=b.useRef(!1),k=b.useRef(!1),j=b.useRef(!1),N=Y7e();return b.useEffect(()=>{if(t?.current){const T=ma(t.current),E=({x:L,y:P})=>{const{nodeInternals:B,onNodeDrag:$,onSelectionDrag:U,updateNodePositions:te,nodeExtent:z,snapGrid:Q,snapToGrid:F,nodeOrigin:Y,onError:J}=l.getState();m.current={x:L,y:P};let X=!1,R={x:0,y:0,x2:0,y2:0};if(h.current.length>1&&z){const G=tw(h.current,Y);R=wp(G)}if(h.current=h.current.map(G=>{const I={x:L-G.distance.x,y:P-G.distance.y};F&&(I.x=Q[0]*Math.round(I.x/Q[0]),I.y=Q[1]*Math.round(I.y/Q[1]));const V=[[z[0][0],z[0][1]],[z[1][0],z[1][1]]];h.current.length>1&&z&&!G.extent&&(V[0][0]=G.positionAbsolute.x-R.x+z[0][0],V[1][0]=G.positionAbsolute.x+(G.width??0)-R.x2+z[1][0],V[0][1]=G.positionAbsolute.y-R.y+z[0][1],V[1][1]=G.positionAbsolute.y+(G.height??0)-R.y2+z[1][1]);const ee=eG(G,I,B,V,Y,J);return X=X||G.position.x!==ee.position.x||G.position.y!==ee.position.y,G.position=ee.position,G.positionAbsolute=ee.positionAbsolute,G}),!X)return;te(h.current,!0,!0),d(!0);const ie=s?$:f5(U);if(ie&&w.current){const[G,I]=h5({nodeId:s,dragItems:h.current,nodeInternals:B});ie(w.current,G,I)}},_=()=>{if(!x.current)return;const[L,P]=wW(y.current,x.current);if(L!==0||P!==0){const{transform:B,panBy:$}=l.getState();m.current.x=(m.current.x??0)-L/B[2],m.current.y=(m.current.y??0)-P/B[2],$({x:L,y:P})&&E(m.current)}g.current=requestAnimationFrame(_)},A=L=>{const{nodeInternals:P,multiSelectionActive:B,nodesDraggable:$,unselectNodesAndEdges:U,onNodeDragStart:te,onSelectionDragStart:z}=l.getState();k.current=!0;const Q=s?te:f5(z);(!a||!i)&&!B&&s&&(P.get(s)?.selected||U()),s&&i&&a&&aj({id:s,store:l,nodeRef:t});const F=N(L);if(m.current=F,h.current=G7e(P,$,F,s),Q&&h.current){const[Y,J]=h5({nodeId:s,dragItems:h.current,nodeInternals:P});Q(L.sourceEvent,Y,J)}};if(e)T.on(".drag",null);else{const L=R6e().on("start",P=>{const{domNode:B,nodeDragThreshold:$}=l.getState();$===0&&A(P),j.current=!1;const U=N(P);m.current=U,x.current=B?.getBoundingClientRect()||null,y.current=Hc(P.sourceEvent,x.current)}).on("drag",P=>{const B=N(P),{autoPanOnNodeDrag:$,nodeDragThreshold:U}=l.getState();if(P.sourceEvent.type==="touchmove"&&P.sourceEvent.touches.length>1&&(j.current=!0),!j.current){if(!S.current&&k.current&&$&&(S.current=!0,_()),!k.current){const te=B.xSnapped-(m?.current?.x??0),z=B.ySnapped-(m?.current?.y??0);Math.sqrt(te*te+z*z)>U&&A(P)}(m.current.x!==B.xSnapped||m.current.y!==B.ySnapped)&&h.current&&k.current&&(w.current=P.sourceEvent,y.current=Hc(P.sourceEvent,x.current),E(B))}}).on("end",P=>{if(!(!k.current||j.current)&&(d(!1),S.current=!1,k.current=!1,cancelAnimationFrame(g.current),h.current)){const{updateNodePositions:B,nodeInternals:$,onNodeDragStop:U,onSelectionDragStop:te}=l.getState(),z=s?U:f5(te);if(B(h.current,!1,!1),z){const[Q,F]=h5({nodeId:s,dragItems:h.current,nodeInternals:$});z(P.sourceEvent,Q,F)}}}).filter(P=>{const B=P.target;return!P.button&&(!n||!SD(B,`.${n}`,t))&&(!r||SD(B,r,t))});return T.call(L),()=>{T.on(".drag",null)}}}},[t,e,n,r,i,l,s,a,N]),c}function nG(){const t=ps();return b.useCallback(n=>{const{nodeInternals:r,nodeExtent:s,updateNodePositions:i,getNodes:a,snapToGrid:l,snapGrid:c,onError:d,nodesDraggable:h}=t.getState(),m=a().filter(j=>j.selected&&(j.draggable||h&&typeof j.draggable>"u")),g=l?c[0]:5,x=l?c[1]:5,y=n.isShiftPressed?4:1,w=n.x*g*y,S=n.y*x*y,k=m.map(j=>{if(j.positionAbsolute){const N={x:j.positionAbsolute.x+w,y:j.positionAbsolute.y+S};l&&(N.x=c[0]*Math.round(N.x/c[0]),N.y=c[1]*Math.round(N.y/c[1]));const{positionAbsolute:T,position:E}=eG(j,N,r,s,void 0,d);j.position=E,j.positionAbsolute=T}return j});i(k,!0,!1)},[])}const Qh={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}};var i0=t=>{const e=({id:n,type:r,data:s,xPos:i,yPos:a,xPosOrigin:l,yPosOrigin:c,selected:d,onClick:h,onMouseEnter:m,onMouseMove:g,onMouseLeave:x,onContextMenu:y,onDoubleClick:w,style:S,className:k,isDraggable:j,isSelectable:N,isConnectable:T,isFocusable:E,selectNodesOnDrag:_,sourcePosition:A,targetPosition:L,hidden:P,resizeObserver:B,dragHandle:$,zIndex:U,isParent:te,noDragClassName:z,noPanClassName:Q,initialized:F,disableKeyboardA11y:Y,ariaLabel:J,rfId:X,hasHandleBounds:R})=>{const ie=ps(),G=b.useRef(null),I=b.useRef(null),V=b.useRef(A),ee=b.useRef(L),ne=b.useRef(r),W=N||j||h||m||g||x,se=nG(),re=s0(n,ie.getState,m),oe=s0(n,ie.getState,g),Te=s0(n,ie.getState,x),We=s0(n,ie.getState,y),Ye=s0(n,ie.getState,w),Je=Ue=>{const{nodeDragThreshold:He}=ie.getState();if(N&&(!_||!j||He>0)&&aj({id:n,store:ie,nodeRef:G}),h){const Ot=ie.getState().nodeInternals.get(n);Ot&&h(Ue,{...Ot})}},Oe=Ue=>{if(!tj(Ue)&&!Y)if(jW.includes(Ue.key)&&N){const He=Ue.key==="Escape";aj({id:n,store:ie,unselect:He,nodeRef:G})}else j&&d&&Object.prototype.hasOwnProperty.call(Qh,Ue.key)&&(ie.setState({ariaLiveMessage:`Moved selected node ${Ue.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~i}, y: ${~~a}`}),se({x:Qh[Ue.key].x,y:Qh[Ue.key].y,isShiftPressed:Ue.shiftKey}))};b.useEffect(()=>()=>{I.current&&(B?.unobserve(I.current),I.current=null)},[]),b.useEffect(()=>{if(G.current&&!P){const Ue=G.current;(!F||!R||I.current!==Ue)&&(I.current&&B?.unobserve(I.current),B?.observe(Ue),I.current=Ue)}},[P,F,R]),b.useEffect(()=>{const Ue=ne.current!==r,He=V.current!==A,Ot=ee.current!==L;G.current&&(Ue||He||Ot)&&(Ue&&(ne.current=r),He&&(V.current=A),Ot&&(ee.current=L),ie.getState().updateNodeDimensions([{id:n,nodeElement:G.current,forceUpdate:!0}]))},[n,r,A,L]);const Ve=tG({nodeRef:G,disabled:P||!j,noDragClassName:z,handleSelector:$,nodeId:n,isSelectable:N,selectNodesOnDrag:_});return P?null:ae.createElement("div",{className:Bs(["react-flow__node",`react-flow__node-${r}`,{[Q]:j},k,{selected:d,selectable:N,parent:te,dragging:Ve}]),ref:G,style:{zIndex:U,transform:`translate(${l}px,${c}px)`,pointerEvents:W?"all":"none",visibility:F?"visible":"hidden",...S},"data-id":n,"data-testid":`rf__node-${n}`,onMouseEnter:re,onMouseMove:oe,onMouseLeave:Te,onContextMenu:We,onClick:Je,onDoubleClick:Ye,onKeyDown:E?Oe:void 0,tabIndex:E?0:void 0,role:E?"button":void 0,"aria-describedby":Y?void 0:`${VW}-${X}`,"aria-label":J},ae.createElement(u7e,{value:n},ae.createElement(t,{id:n,data:s,type:r,xPos:i,yPos:a,selected:d,isConnectable:T,sourcePosition:A,targetPosition:L,dragging:Ve,dragHandle:$,zIndex:U})))};return e.displayName="NodeWrapper",b.memo(e)};const K7e=t=>{const e=t.getNodes().filter(n=>n.selected);return{...tw(e,t.nodeOrigin),transformString:`translate(${t.transform[0]}px,${t.transform[1]}px) scale(${t.transform[2]})`,userSelectionActive:t.userSelectionActive}};function Z7e({onSelectionContextMenu:t,noPanClassName:e,disableKeyboardA11y:n}){const r=ps(),{width:s,height:i,x:a,y:l,transformString:c,userSelectionActive:d}=hr(K7e,ks),h=nG(),m=b.useRef(null);if(b.useEffect(()=>{n||m.current?.focus({preventScroll:!0})},[n]),tG({nodeRef:m}),d||!s||!i)return null;const g=t?y=>{const w=r.getState().getNodes().filter(S=>S.selected);t(y,w)}:void 0,x=y=>{Object.prototype.hasOwnProperty.call(Qh,y.key)&&h({x:Qh[y.key].x,y:Qh[y.key].y,isShiftPressed:y.shiftKey})};return ae.createElement("div",{className:Bs(["react-flow__nodesselection","react-flow__container",e]),style:{transform:c}},ae.createElement("div",{ref:m,className:"react-flow__nodesselection-rect",onContextMenu:g,tabIndex:n?void 0:-1,onKeyDown:n?void 0:x,style:{width:s,height:i,top:l,left:a}}))}var J7e=b.memo(Z7e);const eCe=t=>t.nodesSelectionActive,rG=({children:t,onPaneClick:e,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:s,onPaneContextMenu:i,onPaneScroll:a,deleteKeyCode:l,onMove:c,onMoveStart:d,onMoveEnd:h,selectionKeyCode:m,selectionOnDrag:g,selectionMode:x,onSelectionStart:y,onSelectionEnd:w,multiSelectionKeyCode:S,panActivationKeyCode:k,zoomActivationKeyCode:j,elementsSelectable:N,zoomOnScroll:T,zoomOnPinch:E,panOnScroll:_,panOnScrollSpeed:A,panOnScrollMode:L,zoomOnDoubleClick:P,panOnDrag:B,defaultViewport:$,translateExtent:U,minZoom:te,maxZoom:z,preventScrolling:Q,onSelectionContextMenu:F,noWheelClassName:Y,noPanClassName:J,disableKeyboardA11y:X})=>{const R=hr(eCe),ie=kp(m),G=kp(k),I=G||B,V=G||_,ee=ie||g&&I!==!0;return B7e({deleteKeyCode:l,multiSelectionKeyCode:S}),ae.createElement(H7e,{onMove:c,onMoveStart:d,onMoveEnd:h,onPaneContextMenu:i,elementsSelectable:N,zoomOnScroll:T,zoomOnPinch:E,panOnScroll:V,panOnScrollSpeed:A,panOnScrollMode:L,zoomOnDoubleClick:P,panOnDrag:!ie&&I,defaultViewport:$,translateExtent:U,minZoom:te,maxZoom:z,zoomActivationKeyCode:j,preventScrolling:Q,noWheelClassName:Y,noPanClassName:J},ae.createElement(ZW,{onSelectionStart:y,onSelectionEnd:w,onPaneClick:e,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:s,onPaneContextMenu:i,onPaneScroll:a,panOnDrag:I,isSelecting:!!ee,selectionMode:x},t,R&&ae.createElement(J7e,{onSelectionContextMenu:F,noPanClassName:J,disableKeyboardA11y:X})))};rG.displayName="FlowRenderer";var tCe=b.memo(rG);function nCe(t){return hr(b.useCallback(n=>t?MW(n.nodeInternals,{x:0,y:0,width:n.width,height:n.height},n.transform,!0):n.getNodes(),[t]))}function rCe(t){const e={input:i0(t.input||qW),default:i0(t.default||ij),output:i0(t.output||HW),group:i0(t.group||r7)},n={},r=Object.keys(t).filter(s=>!["input","default","output","group"].includes(s)).reduce((s,i)=>(s[i]=i0(t[i]||ij),s),n);return{...e,...r}}const sCe=({x:t,y:e,width:n,height:r,origin:s})=>!n||!r?{x:t,y:e}:s[0]<0||s[1]<0||s[0]>1||s[1]>1?{x:t,y:e}:{x:t-n*s[0],y:e-r*s[1]},iCe=t=>({nodesDraggable:t.nodesDraggable,nodesConnectable:t.nodesConnectable,nodesFocusable:t.nodesFocusable,elementsSelectable:t.elementsSelectable,updateNodeDimensions:t.updateNodeDimensions,onError:t.onError}),sG=t=>{const{nodesDraggable:e,nodesConnectable:n,nodesFocusable:r,elementsSelectable:s,updateNodeDimensions:i,onError:a}=hr(iCe,ks),l=nCe(t.onlyRenderVisibleElements),c=b.useRef(),d=b.useMemo(()=>{if(typeof ResizeObserver>"u")return null;const h=new ResizeObserver(m=>{const g=m.map(x=>({id:x.target.getAttribute("data-id"),nodeElement:x.target,forceUpdate:!0}));i(g)});return c.current=h,h},[]);return b.useEffect(()=>()=>{c?.current?.disconnect()},[]),ae.createElement("div",{className:"react-flow__nodes",style:i7},l.map(h=>{let m=h.type||"default";t.nodeTypes[m]||(a?.("003",Gl.error003(m)),m="default");const g=t.nodeTypes[m]||t.nodeTypes.default,x=!!(h.draggable||e&&typeof h.draggable>"u"),y=!!(h.selectable||s&&typeof h.selectable>"u"),w=!!(h.connectable||n&&typeof h.connectable>"u"),S=!!(h.focusable||r&&typeof h.focusable>"u"),k=t.nodeExtent?KN(h.positionAbsolute,t.nodeExtent):h.positionAbsolute,j=k?.x??0,N=k?.y??0,T=sCe({x:j,y:N,width:h.width??0,height:h.height??0,origin:t.nodeOrigin});return ae.createElement(g,{key:h.id,id:h.id,className:h.className,style:h.style,type:m,data:h.data,sourcePosition:h.sourcePosition||wt.Bottom,targetPosition:h.targetPosition||wt.Top,hidden:h.hidden,xPos:j,yPos:N,xPosOrigin:T.x,yPosOrigin:T.y,selectNodesOnDrag:t.selectNodesOnDrag,onClick:t.onNodeClick,onMouseEnter:t.onNodeMouseEnter,onMouseMove:t.onNodeMouseMove,onMouseLeave:t.onNodeMouseLeave,onContextMenu:t.onNodeContextMenu,onDoubleClick:t.onNodeDoubleClick,selected:!!h.selected,isDraggable:x,isSelectable:y,isConnectable:w,isFocusable:S,resizeObserver:d,dragHandle:h.dragHandle,zIndex:h[Lr]?.z??0,isParent:!!h[Lr]?.isParent,noDragClassName:t.noDragClassName,noPanClassName:t.noPanClassName,initialized:!!h.width&&!!h.height,rfId:t.rfId,disableKeyboardA11y:t.disableKeyboardA11y,ariaLabel:h.ariaLabel,hasHandleBounds:!!h[Lr]?.handleBounds})}))};sG.displayName="NodeRenderer";var aCe=b.memo(sG);const oCe=(t,e,n)=>n===wt.Left?t-e:n===wt.Right?t+e:t,lCe=(t,e,n)=>n===wt.Top?t-e:n===wt.Bottom?t+e:t,OD="react-flow__edgeupdater",jD=({position:t,centerX:e,centerY:n,radius:r=10,onMouseDown:s,onMouseEnter:i,onMouseOut:a,type:l})=>ae.createElement("circle",{onMouseDown:s,onMouseEnter:i,onMouseOut:a,className:Bs([OD,`${OD}-${l}`]),cx:oCe(e,r,t),cy:lCe(n,r,t),r,stroke:"transparent",fill:"transparent"}),cCe=()=>!0;var fh=t=>{const e=({id:n,className:r,type:s,data:i,onClick:a,onEdgeDoubleClick:l,selected:c,animated:d,label:h,labelStyle:m,labelShowBg:g,labelBgStyle:x,labelBgPadding:y,labelBgBorderRadius:w,style:S,source:k,target:j,sourceX:N,sourceY:T,targetX:E,targetY:_,sourcePosition:A,targetPosition:L,elementsSelectable:P,hidden:B,sourceHandleId:$,targetHandleId:U,onContextMenu:te,onMouseEnter:z,onMouseMove:Q,onMouseLeave:F,reconnectRadius:Y,onReconnect:J,onReconnectStart:X,onReconnectEnd:R,markerEnd:ie,markerStart:G,rfId:I,ariaLabel:V,isFocusable:ee,isReconnectable:ne,pathOptions:W,interactionWidth:se,disableKeyboardA11y:re})=>{const oe=b.useRef(null),[Te,We]=b.useState(!1),[Ye,Je]=b.useState(!1),Oe=ps(),Ve=b.useMemo(()=>`url('#${rj(G,I)}')`,[G,I]),Ue=b.useMemo(()=>`url('#${rj(ie,I)}')`,[ie,I]);if(B)return null;const He=Mt=>{const{edges:zn,addSelectedEdges:Fe,unselectNodesAndEdges:rt,multiSelectionActive:tn}=Oe.getState(),Rt=zn.find(ke=>ke.id===n);Rt&&(P&&(Oe.setState({nodesSelectionActive:!1}),Rt.selected&&tn?(rt({nodes:[],edges:[Rt]}),oe.current?.blur()):Fe([n])),a&&a(Mt,Rt))},Ot=r0(n,Oe.getState,l),xt=r0(n,Oe.getState,te),kn=r0(n,Oe.getState,z),It=r0(n,Oe.getState,Q),Yt=r0(n,Oe.getState,F),_t=(Mt,zn)=>{if(Mt.button!==0)return;const{edges:Fe,isValidConnection:rt}=Oe.getState(),tn=zn?j:k,Rt=(zn?U:$)||null,ke=zn?"target":"source",Pe=rt||cCe,it=zn,ot=Fe.find(pt=>pt.id===n);Je(!0),X?.(Mt,ot,ke);const nn=pt=>{Je(!1),R?.(pt,ot,ke)};IW({event:Mt,handleId:Rt,nodeId:tn,onConnect:pt=>J?.(ot,pt),isTarget:it,getState:Oe.getState,setState:Oe.setState,isValidConnection:Pe,edgeUpdaterType:ke,onReconnectEnd:nn})},mt=Mt=>_t(Mt,!0),Ne=Mt=>_t(Mt,!1),Ie=()=>We(!0),st=()=>We(!1),yt=!P&&!a,Pt=Mt=>{if(!re&&jW.includes(Mt.key)&&P){const{unselectNodesAndEdges:zn,addSelectedEdges:Fe,edges:rt}=Oe.getState();Mt.key==="Escape"?(oe.current?.blur(),zn({edges:[rt.find(Rt=>Rt.id===n)]})):Fe([n])}};return ae.createElement("g",{className:Bs(["react-flow__edge",`react-flow__edge-${s}`,r,{selected:c,animated:d,inactive:yt,updating:Te}]),onClick:He,onDoubleClick:Ot,onContextMenu:xt,onMouseEnter:kn,onMouseMove:It,onMouseLeave:Yt,onKeyDown:ee?Pt:void 0,tabIndex:ee?0:void 0,role:ee?"button":"img","data-testid":`rf__edge-${n}`,"aria-label":V===null?void 0:V||`Edge from ${k} to ${j}`,"aria-describedby":ee?`${UW}-${I}`:void 0,ref:oe},!Ye&&ae.createElement(t,{id:n,source:k,target:j,selected:c,animated:d,label:h,labelStyle:m,labelShowBg:g,labelBgStyle:x,labelBgPadding:y,labelBgBorderRadius:w,data:i,style:S,sourceX:N,sourceY:T,targetX:E,targetY:_,sourcePosition:A,targetPosition:L,sourceHandleId:$,targetHandleId:U,markerStart:Ve,markerEnd:Ue,pathOptions:W,interactionWidth:se}),ne&&ae.createElement(ae.Fragment,null,(ne==="source"||ne===!0)&&ae.createElement(jD,{position:A,centerX:N,centerY:T,radius:Y,onMouseDown:mt,onMouseEnter:Ie,onMouseOut:st,type:"source"}),(ne==="target"||ne===!0)&&ae.createElement(jD,{position:L,centerX:E,centerY:_,radius:Y,onMouseDown:Ne,onMouseEnter:Ie,onMouseOut:st,type:"target"})))};return e.displayName="EdgeWrapper",b.memo(e)};function uCe(t){const e={default:fh(t.default||Ry),straight:fh(t.bezier||e7),step:fh(t.step||JN),smoothstep:fh(t.step||ew),simplebezier:fh(t.simplebezier||ZN)},n={},r=Object.keys(t).filter(s=>!["default","bezier"].includes(s)).reduce((s,i)=>(s[i]=fh(t[i]||Ry),s),n);return{...e,...r}}function ND(t,e,n=null){const r=(n?.x||0)+e.x,s=(n?.y||0)+e.y,i=n?.width||e.width,a=n?.height||e.height;switch(t){case wt.Top:return{x:r+i/2,y:s};case wt.Right:return{x:r+i,y:s+a/2};case wt.Bottom:return{x:r+i/2,y:s+a};case wt.Left:return{x:r,y:s+a/2}}}function CD(t,e){return t?t.length===1||!e?t[0]:e&&t.find(n=>n.id===e)||null:null}const dCe=(t,e,n,r,s,i)=>{const a=ND(n,t,e),l=ND(i,r,s);return{sourceX:a.x,sourceY:a.y,targetX:l.x,targetY:l.y}};function hCe({sourcePos:t,targetPos:e,sourceWidth:n,sourceHeight:r,targetWidth:s,targetHeight:i,width:a,height:l,transform:c}){const d={x:Math.min(t.x,e.x),y:Math.min(t.y,e.y),x2:Math.max(t.x+n,e.x+s),y2:Math.max(t.y+r,e.y+i)};d.x===d.x2&&(d.x2+=1),d.y===d.y2&&(d.y2+=1);const h=wp({x:(0-c[0])/c[2],y:(0-c[1])/c[2],width:a/c[2],height:l/c[2]}),m=Math.max(0,Math.min(h.x2,d.x2)-Math.max(h.x,d.x)),g=Math.max(0,Math.min(h.y2,d.y2)-Math.max(h.y,d.y));return Math.ceil(m*g)>0}function TD(t){const e=t?.[Lr]?.handleBounds||null,n=e&&t?.width&&t?.height&&typeof t?.positionAbsolute?.x<"u"&&typeof t?.positionAbsolute?.y<"u";return[{x:t?.positionAbsolute?.x||0,y:t?.positionAbsolute?.y||0,width:t?.width||0,height:t?.height||0},e,!!n]}const fCe=[{level:0,isMaxLevel:!0,edges:[]}];function mCe(t,e,n=!1){let r=-1;const s=t.reduce((a,l)=>{const c=ka(l.zIndex);let d=c?l.zIndex:0;if(n){const h=e.get(l.target),m=e.get(l.source),g=l.selected||h?.selected||m?.selected,x=Math.max(m?.[Lr]?.z||0,h?.[Lr]?.z||0,1e3);d=(c?l.zIndex:0)+(g?x:0)}return a[d]?a[d].push(l):a[d]=[l],r=d>r?d:r,a},{}),i=Object.entries(s).map(([a,l])=>{const c=+a;return{edges:l,level:c,isMaxLevel:c===r}});return i.length===0?fCe:i}function pCe(t,e,n){const r=hr(b.useCallback(s=>t?s.edges.filter(i=>{const a=e.get(i.source),l=e.get(i.target);return a?.width&&a?.height&&l?.width&&l?.height&&hCe({sourcePos:a.positionAbsolute||{x:0,y:0},targetPos:l.positionAbsolute||{x:0,y:0},sourceWidth:a.width,sourceHeight:a.height,targetWidth:l.width,targetHeight:l.height,width:s.width,height:s.height,transform:s.transform})}):s.edges,[t,e]));return mCe(r,e,n)}const gCe=({color:t="none",strokeWidth:e=1})=>ae.createElement("polyline",{style:{stroke:t,strokeWidth:e},strokeLinecap:"round",strokeLinejoin:"round",fill:"none",points:"-5,-4 0,0 -5,4"}),xCe=({color:t="none",strokeWidth:e=1})=>ae.createElement("polyline",{style:{stroke:t,fill:t,strokeWidth:e},strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"}),ED={[My.Arrow]:gCe,[My.ArrowClosed]:xCe};function vCe(t){const e=ps();return b.useMemo(()=>Object.prototype.hasOwnProperty.call(ED,t)?ED[t]:(e.getState().onError?.("009",Gl.error009(t)),null),[t])}const yCe=({id:t,type:e,color:n,width:r=12.5,height:s=12.5,markerUnits:i="strokeWidth",strokeWidth:a,orient:l="auto-start-reverse"})=>{const c=vCe(e);return c?ae.createElement("marker",{className:"react-flow__arrowhead",id:t,markerWidth:`${r}`,markerHeight:`${s}`,viewBox:"-10 -10 20 20",markerUnits:i,orient:l,refX:"0",refY:"0"},ae.createElement(c,{color:n,strokeWidth:a})):null},bCe=({defaultColor:t,rfId:e})=>n=>{const r=[];return n.edges.reduce((s,i)=>([i.markerStart,i.markerEnd].forEach(a=>{if(a&&typeof a=="object"){const l=rj(a,e);r.includes(l)||(s.push({id:l,color:a.color||t,...a}),r.push(l))}}),s),[]).sort((s,i)=>s.id.localeCompare(i.id))},iG=({defaultColor:t,rfId:e})=>{const n=hr(b.useCallback(bCe({defaultColor:t,rfId:e}),[t,e]),(r,s)=>!(r.length!==s.length||r.some((i,a)=>i.id!==s[a].id)));return ae.createElement("defs",null,n.map(r=>ae.createElement(yCe,{id:r.id,key:r.id,type:r.type,color:r.color,width:r.width,height:r.height,markerUnits:r.markerUnits,strokeWidth:r.strokeWidth,orient:r.orient})))};iG.displayName="MarkerDefinitions";var wCe=b.memo(iG);const SCe=t=>({nodesConnectable:t.nodesConnectable,edgesFocusable:t.edgesFocusable,edgesUpdatable:t.edgesUpdatable,elementsSelectable:t.elementsSelectable,width:t.width,height:t.height,connectionMode:t.connectionMode,nodeInternals:t.nodeInternals,onError:t.onError}),aG=({defaultMarkerColor:t,onlyRenderVisibleElements:e,elevateEdgesOnSelect:n,rfId:r,edgeTypes:s,noPanClassName:i,onEdgeContextMenu:a,onEdgeMouseEnter:l,onEdgeMouseMove:c,onEdgeMouseLeave:d,onEdgeClick:h,onEdgeDoubleClick:m,onReconnect:g,onReconnectStart:x,onReconnectEnd:y,reconnectRadius:w,children:S,disableKeyboardA11y:k})=>{const{edgesFocusable:j,edgesUpdatable:N,elementsSelectable:T,width:E,height:_,connectionMode:A,nodeInternals:L,onError:P}=hr(SCe,ks),B=pCe(e,L,n);return E?ae.createElement(ae.Fragment,null,B.map(({level:$,edges:U,isMaxLevel:te})=>ae.createElement("svg",{key:$,style:{zIndex:$},width:E,height:_,className:"react-flow__edges react-flow__container"},te&&ae.createElement(wCe,{defaultColor:t,rfId:r}),ae.createElement("g",null,U.map(z=>{const[Q,F,Y]=TD(L.get(z.source)),[J,X,R]=TD(L.get(z.target));if(!Y||!R)return null;let ie=z.type||"default";s[ie]||(P?.("011",Gl.error011(ie)),ie="default");const G=s[ie]||s.default,I=A===pd.Strict?X.target:(X.target??[]).concat(X.source??[]),V=CD(F.source,z.sourceHandle),ee=CD(I,z.targetHandle),ne=V?.position||wt.Bottom,W=ee?.position||wt.Top,se=!!(z.focusable||j&&typeof z.focusable>"u"),re=z.reconnectable||z.updatable,oe=typeof g<"u"&&(re||N&&typeof re>"u");if(!V||!ee)return P?.("008",Gl.error008(V,z)),null;const{sourceX:Te,sourceY:We,targetX:Ye,targetY:Je}=dCe(Q,V,ne,J,ee,W);return ae.createElement(G,{key:z.id,id:z.id,className:Bs([z.className,i]),type:ie,data:z.data,selected:!!z.selected,animated:!!z.animated,hidden:!!z.hidden,label:z.label,labelStyle:z.labelStyle,labelShowBg:z.labelShowBg,labelBgStyle:z.labelBgStyle,labelBgPadding:z.labelBgPadding,labelBgBorderRadius:z.labelBgBorderRadius,style:z.style,source:z.source,target:z.target,sourceHandleId:z.sourceHandle,targetHandleId:z.targetHandle,markerEnd:z.markerEnd,markerStart:z.markerStart,sourceX:Te,sourceY:We,targetX:Ye,targetY:Je,sourcePosition:ne,targetPosition:W,elementsSelectable:T,onContextMenu:a,onMouseEnter:l,onMouseMove:c,onMouseLeave:d,onClick:h,onEdgeDoubleClick:m,onReconnect:g,onReconnectStart:x,onReconnectEnd:y,reconnectRadius:w,rfId:r,ariaLabel:z.ariaLabel,isFocusable:se,isReconnectable:oe,pathOptions:"pathOptions"in z?z.pathOptions:void 0,interactionWidth:z.interactionWidth,disableKeyboardA11y:k})})))),S):null};aG.displayName="EdgeRenderer";var kCe=b.memo(aG);const OCe=t=>`translate(${t.transform[0]}px,${t.transform[1]}px) scale(${t.transform[2]})`;function jCe({children:t}){const e=hr(OCe);return ae.createElement("div",{className:"react-flow__viewport react-flow__container",style:{transform:e}},t)}function NCe(t){const e=s7(),n=b.useRef(!1);b.useEffect(()=>{!n.current&&e.viewportInitialized&&t&&(setTimeout(()=>t(e),1),n.current=!0)},[t,e.viewportInitialized])}const CCe={[wt.Left]:wt.Right,[wt.Right]:wt.Left,[wt.Top]:wt.Bottom,[wt.Bottom]:wt.Top},oG=({nodeId:t,handleType:e,style:n,type:r=Lc.Bezier,CustomComponent:s,connectionStatus:i})=>{const{fromNode:a,handleId:l,toX:c,toY:d,connectionMode:h}=hr(b.useCallback(_=>({fromNode:_.nodeInternals.get(t),handleId:_.connectionHandleId,toX:(_.connectionPosition.x-_.transform[0])/_.transform[2],toY:(_.connectionPosition.y-_.transform[1])/_.transform[2],connectionMode:_.connectionMode}),[t]),ks),m=a?.[Lr]?.handleBounds;let g=m?.[e];if(h===pd.Loose&&(g=g||m?.[e==="source"?"target":"source"]),!a||!g)return null;const x=l?g.find(_=>_.id===l):g[0],y=x?x.x+x.width/2:(a.width??0)/2,w=x?x.y+x.height/2:a.height??0,S=(a.positionAbsolute?.x??0)+y,k=(a.positionAbsolute?.y??0)+w,j=x?.position,N=j?CCe[j]:null;if(!j||!N)return null;if(s)return ae.createElement(s,{connectionLineType:r,connectionLineStyle:n,fromNode:a,fromHandle:x,fromX:S,fromY:k,toX:c,toY:d,fromPosition:j,toPosition:N,connectionStatus:i});let T="";const E={sourceX:S,sourceY:k,sourcePosition:j,targetX:c,targetY:d,targetPosition:N};return r===Lc.Bezier?[T]=_W(E):r===Lc.Step?[T]=nj({...E,borderRadius:0}):r===Lc.SmoothStep?[T]=nj(E):r===Lc.SimpleBezier?[T]=EW(E):T=`M${S},${k} ${c},${d}`,ae.createElement("path",{d:T,fill:"none",className:"react-flow__connection-path",style:n})};oG.displayName="ConnectionLine";const TCe=t=>({nodeId:t.connectionNodeId,handleType:t.connectionHandleType,nodesConnectable:t.nodesConnectable,connectionStatus:t.connectionStatus,width:t.width,height:t.height});function ECe({containerStyle:t,style:e,type:n,component:r}){const{nodeId:s,handleType:i,nodesConnectable:a,width:l,height:c,connectionStatus:d}=hr(TCe,ks);return!(s&&i&&l&&a)?null:ae.createElement("svg",{style:t,width:l,height:c,className:"react-flow__edges react-flow__connectionline react-flow__container"},ae.createElement("g",{className:Bs(["react-flow__connection",d])},ae.createElement(oG,{nodeId:s,handleType:i,style:e,type:n,CustomComponent:r,connectionStatus:d})))}function _D(t,e){return b.useRef(null),ps(),b.useMemo(()=>e(t),[t])}const lG=({nodeTypes:t,edgeTypes:e,onMove:n,onMoveStart:r,onMoveEnd:s,onInit:i,onNodeClick:a,onEdgeClick:l,onNodeDoubleClick:c,onEdgeDoubleClick:d,onNodeMouseEnter:h,onNodeMouseMove:m,onNodeMouseLeave:g,onNodeContextMenu:x,onSelectionContextMenu:y,onSelectionStart:w,onSelectionEnd:S,connectionLineType:k,connectionLineStyle:j,connectionLineComponent:N,connectionLineContainerStyle:T,selectionKeyCode:E,selectionOnDrag:_,selectionMode:A,multiSelectionKeyCode:L,panActivationKeyCode:P,zoomActivationKeyCode:B,deleteKeyCode:$,onlyRenderVisibleElements:U,elementsSelectable:te,selectNodesOnDrag:z,defaultViewport:Q,translateExtent:F,minZoom:Y,maxZoom:J,preventScrolling:X,defaultMarkerColor:R,zoomOnScroll:ie,zoomOnPinch:G,panOnScroll:I,panOnScrollSpeed:V,panOnScrollMode:ee,zoomOnDoubleClick:ne,panOnDrag:W,onPaneClick:se,onPaneMouseEnter:re,onPaneMouseMove:oe,onPaneMouseLeave:Te,onPaneScroll:We,onPaneContextMenu:Ye,onEdgeContextMenu:Je,onEdgeMouseEnter:Oe,onEdgeMouseMove:Ve,onEdgeMouseLeave:Ue,onReconnect:He,onReconnectStart:Ot,onReconnectEnd:xt,reconnectRadius:kn,noDragClassName:It,noWheelClassName:Yt,noPanClassName:_t,elevateEdgesOnSelect:mt,disableKeyboardA11y:Ne,nodeOrigin:Ie,nodeExtent:st,rfId:yt})=>{const Pt=_D(t,rCe),Mt=_D(e,uCe);return NCe(i),ae.createElement(tCe,{onPaneClick:se,onPaneMouseEnter:re,onPaneMouseMove:oe,onPaneMouseLeave:Te,onPaneContextMenu:Ye,onPaneScroll:We,deleteKeyCode:$,selectionKeyCode:E,selectionOnDrag:_,selectionMode:A,onSelectionStart:w,onSelectionEnd:S,multiSelectionKeyCode:L,panActivationKeyCode:P,zoomActivationKeyCode:B,elementsSelectable:te,onMove:n,onMoveStart:r,onMoveEnd:s,zoomOnScroll:ie,zoomOnPinch:G,zoomOnDoubleClick:ne,panOnScroll:I,panOnScrollSpeed:V,panOnScrollMode:ee,panOnDrag:W,defaultViewport:Q,translateExtent:F,minZoom:Y,maxZoom:J,onSelectionContextMenu:y,preventScrolling:X,noDragClassName:It,noWheelClassName:Yt,noPanClassName:_t,disableKeyboardA11y:Ne},ae.createElement(jCe,null,ae.createElement(kCe,{edgeTypes:Mt,onEdgeClick:l,onEdgeDoubleClick:d,onlyRenderVisibleElements:U,onEdgeContextMenu:Je,onEdgeMouseEnter:Oe,onEdgeMouseMove:Ve,onEdgeMouseLeave:Ue,onReconnect:He,onReconnectStart:Ot,onReconnectEnd:xt,reconnectRadius:kn,defaultMarkerColor:R,noPanClassName:_t,elevateEdgesOnSelect:!!mt,disableKeyboardA11y:Ne,rfId:yt},ae.createElement(ECe,{style:j,type:k,component:N,containerStyle:T})),ae.createElement("div",{className:"react-flow__edgelabel-renderer"}),ae.createElement(aCe,{nodeTypes:Pt,onNodeClick:a,onNodeDoubleClick:c,onNodeMouseEnter:h,onNodeMouseMove:m,onNodeMouseLeave:g,onNodeContextMenu:x,selectNodesOnDrag:z,onlyRenderVisibleElements:U,noPanClassName:_t,noDragClassName:It,disableKeyboardA11y:Ne,nodeOrigin:Ie,nodeExtent:st,rfId:yt})))};lG.displayName="GraphView";var _Ce=b.memo(lG);const oj=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],Ec={rfId:"1",width:0,height:0,transform:[0,0,1],nodeInternals:new Map,edges:[],onNodesChange:null,onEdgesChange:null,hasDefaultNodes:!1,hasDefaultEdges:!1,d3Zoom:null,d3Selection:null,d3ZoomHandler:void 0,minZoom:.5,maxZoom:2,translateExtent:oj,nodeExtent:oj,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionNodeId:null,connectionHandleId:null,connectionHandleType:"source",connectionPosition:{x:0,y:0},connectionStatus:null,connectionMode:pd.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:[0,0],nodeDragThreshold:0,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesUpdatable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,fitViewOnInit:!1,fitViewOnInitDone:!1,fitViewOnInitOptions:void 0,onSelectionChange:[],multiSelectionActive:!1,connectionStartHandle:null,connectionEndHandle:null,connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,connectionRadius:20,onError:s7e,isValidConnection:void 0},ACe=()=>VOe((t,e)=>({...Ec,setNodes:n=>{const{nodeInternals:r,nodeOrigin:s,elevateNodesOnSelect:i}=e();t({nodeInternals:u5(n,r,s,i)})},getNodes:()=>Array.from(e().nodeInternals.values()),setEdges:n=>{const{defaultEdgeOptions:r={}}=e();t({edges:n.map(s=>({...r,...s}))})},setDefaultNodesAndEdges:(n,r)=>{const s=typeof n<"u",i=typeof r<"u",a=s?u5(n,new Map,e().nodeOrigin,e().elevateNodesOnSelect):new Map;t({nodeInternals:a,edges:i?r:[],hasDefaultNodes:s,hasDefaultEdges:i})},updateNodeDimensions:n=>{const{onNodesChange:r,nodeInternals:s,fitViewOnInit:i,fitViewOnInitDone:a,fitViewOnInitOptions:l,domNode:c,nodeOrigin:d}=e(),h=c?.querySelector(".react-flow__viewport");if(!h)return;const m=window.getComputedStyle(h),{m22:g}=new window.DOMMatrixReadOnly(m.transform),x=n.reduce((w,S)=>{const k=s.get(S.id);if(k?.hidden)s.set(k.id,{...k,[Lr]:{...k[Lr],handleBounds:void 0}});else if(k){const j=YN(S.nodeElement);!!(j.width&&j.height&&(k.width!==j.width||k.height!==j.height||S.forceUpdate))&&(s.set(k.id,{...k,[Lr]:{...k[Lr],handleBounds:{source:kD(".source",S.nodeElement,g,d),target:kD(".target",S.nodeElement,g,d)}},...j}),w.push({id:k.id,type:"dimensions",dimensions:j}))}return w},[]);GW(s,d);const y=a||i&&!a&&XW(e,{initial:!0,...l});t({nodeInternals:new Map(s),fitViewOnInitDone:y}),x?.length>0&&r?.(x)},updateNodePositions:(n,r=!0,s=!1)=>{const{triggerNodeChanges:i}=e(),a=n.map(l=>{const c={id:l.id,type:"position",dragging:s};return r&&(c.positionAbsolute=l.positionAbsolute,c.position=l.position),c});i(a)},triggerNodeChanges:n=>{const{onNodesChange:r,nodeInternals:s,hasDefaultNodes:i,nodeOrigin:a,getNodes:l,elevateNodesOnSelect:c}=e();if(n?.length){if(i){const d=KW(n,l()),h=u5(d,s,a,c);t({nodeInternals:h})}r?.(n)}},addSelectedNodes:n=>{const{multiSelectionActive:r,edges:s,getNodes:i}=e();let a,l=null;r?a=n.map(c=>Pc(c,!0)):(a=Eh(i(),n),l=Eh(s,[])),Q1({changedNodes:a,changedEdges:l,get:e,set:t})},addSelectedEdges:n=>{const{multiSelectionActive:r,edges:s,getNodes:i}=e();let a,l=null;r?a=n.map(c=>Pc(c,!0)):(a=Eh(s,n),l=Eh(i(),[])),Q1({changedNodes:l,changedEdges:a,get:e,set:t})},unselectNodesAndEdges:({nodes:n,edges:r}={})=>{const{edges:s,getNodes:i}=e(),a=n||i(),l=r||s,c=a.map(h=>(h.selected=!1,Pc(h.id,!1))),d=l.map(h=>Pc(h.id,!1));Q1({changedNodes:c,changedEdges:d,get:e,set:t})},setMinZoom:n=>{const{d3Zoom:r,maxZoom:s}=e();r?.scaleExtent([n,s]),t({minZoom:n})},setMaxZoom:n=>{const{d3Zoom:r,minZoom:s}=e();r?.scaleExtent([s,n]),t({maxZoom:n})},setTranslateExtent:n=>{e().d3Zoom?.translateExtent(n),t({translateExtent:n})},resetSelectedElements:()=>{const{edges:n,getNodes:r}=e(),i=r().filter(l=>l.selected).map(l=>Pc(l.id,!1)),a=n.filter(l=>l.selected).map(l=>Pc(l.id,!1));Q1({changedNodes:i,changedEdges:a,get:e,set:t})},setNodeExtent:n=>{const{nodeInternals:r}=e();r.forEach(s=>{s.positionAbsolute=KN(s.position,n)}),t({nodeExtent:n,nodeInternals:new Map(r)})},panBy:n=>{const{transform:r,width:s,height:i,d3Zoom:a,d3Selection:l,translateExtent:c}=e();if(!a||!l||!n.x&&!n.y)return!1;const d=Fl.translate(r[0]+n.x,r[1]+n.y).scale(r[2]),h=[[0,0],[s,i]],m=a?.constrain()(d,h,c);return a.transform(l,m),r[0]!==m.x||r[1]!==m.y||r[2]!==m.k},cancelConnection:()=>t({connectionNodeId:Ec.connectionNodeId,connectionHandleId:Ec.connectionHandleId,connectionHandleType:Ec.connectionHandleType,connectionStatus:Ec.connectionStatus,connectionStartHandle:Ec.connectionStartHandle,connectionEndHandle:Ec.connectionEndHandle}),reset:()=>t({...Ec})}),Object.is),cG=({children:t})=>{const e=b.useRef(null);return e.current||(e.current=ACe()),ae.createElement(KNe,{value:e.current},t)};cG.displayName="ReactFlowProvider";const uG=({children:t})=>b.useContext(Zb)?ae.createElement(ae.Fragment,null,t):ae.createElement(cG,null,t);uG.displayName="ReactFlowWrapper";const MCe={input:qW,default:ij,output:HW,group:r7},RCe={default:Ry,straight:e7,step:JN,smoothstep:ew,simplebezier:ZN},DCe=[0,0],PCe=[15,15],zCe={x:0,y:0,zoom:1},ICe={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0},dG=b.forwardRef(({nodes:t,edges:e,defaultNodes:n,defaultEdges:r,className:s,nodeTypes:i=MCe,edgeTypes:a=RCe,onNodeClick:l,onEdgeClick:c,onInit:d,onMove:h,onMoveStart:m,onMoveEnd:g,onConnect:x,onConnectStart:y,onConnectEnd:w,onClickConnectStart:S,onClickConnectEnd:k,onNodeMouseEnter:j,onNodeMouseMove:N,onNodeMouseLeave:T,onNodeContextMenu:E,onNodeDoubleClick:_,onNodeDragStart:A,onNodeDrag:L,onNodeDragStop:P,onNodesDelete:B,onEdgesDelete:$,onSelectionChange:U,onSelectionDragStart:te,onSelectionDrag:z,onSelectionDragStop:Q,onSelectionContextMenu:F,onSelectionStart:Y,onSelectionEnd:J,connectionMode:X=pd.Strict,connectionLineType:R=Lc.Bezier,connectionLineStyle:ie,connectionLineComponent:G,connectionLineContainerStyle:I,deleteKeyCode:V="Backspace",selectionKeyCode:ee="Shift",selectionOnDrag:ne=!1,selectionMode:W=Sp.Full,panActivationKeyCode:se="Space",multiSelectionKeyCode:re=Ay()?"Meta":"Control",zoomActivationKeyCode:oe=Ay()?"Meta":"Control",snapToGrid:Te=!1,snapGrid:We=PCe,onlyRenderVisibleElements:Ye=!1,selectNodesOnDrag:Je=!0,nodesDraggable:Oe,nodesConnectable:Ve,nodesFocusable:Ue,nodeOrigin:He=DCe,edgesFocusable:Ot,edgesUpdatable:xt,elementsSelectable:kn,defaultViewport:It=zCe,minZoom:Yt=.5,maxZoom:_t=2,translateExtent:mt=oj,preventScrolling:Ne=!0,nodeExtent:Ie,defaultMarkerColor:st="#b1b1b7",zoomOnScroll:yt=!0,zoomOnPinch:Pt=!0,panOnScroll:Mt=!1,panOnScrollSpeed:zn=.5,panOnScrollMode:Fe=Wu.Free,zoomOnDoubleClick:rt=!0,panOnDrag:tn=!0,onPaneClick:Rt,onPaneMouseEnter:ke,onPaneMouseMove:Pe,onPaneMouseLeave:it,onPaneScroll:ot,onPaneContextMenu:nn,children:Kt,onEdgeContextMenu:pt,onEdgeDoubleClick:xr,onEdgeMouseEnter:Ur,onEdgeMouseMove:Wr,onEdgeMouseLeave:vr,onEdgeUpdate:In,onEdgeUpdateStart:cr,onEdgeUpdateEnd:nr,onReconnect:gs,onReconnectStart:xs,onReconnectEnd:js,reconnectRadius:ge=10,edgeUpdaterRadius:Le=10,onNodesChange:Ct,onEdgesChange:vn,noDragClassName:Fr="nodrag",noWheelClassName:Cr="nowheel",noPanClassName:Tr="nopan",fitView:Ns=!1,fitViewOptions:Qf,connectOnClick:lw=!0,attributionPosition:cw,proOptions:Eg,defaultEdgeOptions:mu,elevateNodesOnSelect:Vf=!0,elevateEdgesOnSelect:ec=!1,disableKeyboardA11y:Yo=!1,autoPanOnConnect:pu=!0,autoPanOnNodeDrag:tc=!0,connectionRadius:Gr=20,isValidConnection:_g,onError:Ag,style:Ko,id:Zo,nodeDragThreshold:uw,...Mg},Rg)=>{const Uf=Zo||"1";return ae.createElement("div",{...Mg,style:{...Ko,...ICe},ref:Rg,className:Bs(["react-flow",s]),"data-testid":"rf__wrapper",id:Zo},ae.createElement(uG,null,ae.createElement(_Ce,{onInit:d,onMove:h,onMoveStart:m,onMoveEnd:g,onNodeClick:l,onEdgeClick:c,onNodeMouseEnter:j,onNodeMouseMove:N,onNodeMouseLeave:T,onNodeContextMenu:E,onNodeDoubleClick:_,nodeTypes:i,edgeTypes:a,connectionLineType:R,connectionLineStyle:ie,connectionLineComponent:G,connectionLineContainerStyle:I,selectionKeyCode:ee,selectionOnDrag:ne,selectionMode:W,deleteKeyCode:V,multiSelectionKeyCode:re,panActivationKeyCode:se,zoomActivationKeyCode:oe,onlyRenderVisibleElements:Ye,selectNodesOnDrag:Je,defaultViewport:It,translateExtent:mt,minZoom:Yt,maxZoom:_t,preventScrolling:Ne,zoomOnScroll:yt,zoomOnPinch:Pt,zoomOnDoubleClick:rt,panOnScroll:Mt,panOnScrollSpeed:zn,panOnScrollMode:Fe,panOnDrag:tn,onPaneClick:Rt,onPaneMouseEnter:ke,onPaneMouseMove:Pe,onPaneMouseLeave:it,onPaneScroll:ot,onPaneContextMenu:nn,onSelectionContextMenu:F,onSelectionStart:Y,onSelectionEnd:J,onEdgeContextMenu:pt,onEdgeDoubleClick:xr,onEdgeMouseEnter:Ur,onEdgeMouseMove:Wr,onEdgeMouseLeave:vr,onReconnect:gs??In,onReconnectStart:xs??cr,onReconnectEnd:js??nr,reconnectRadius:ge??Le,defaultMarkerColor:st,noDragClassName:Fr,noWheelClassName:Cr,noPanClassName:Tr,elevateEdgesOnSelect:ec,rfId:Uf,disableKeyboardA11y:Yo,nodeOrigin:He,nodeExtent:Ie}),ae.createElement(C7e,{nodes:t,edges:e,defaultNodes:n,defaultEdges:r,onConnect:x,onConnectStart:y,onConnectEnd:w,onClickConnectStart:S,onClickConnectEnd:k,nodesDraggable:Oe,nodesConnectable:Ve,nodesFocusable:Ue,edgesFocusable:Ot,edgesUpdatable:xt,elementsSelectable:kn,elevateNodesOnSelect:Vf,minZoom:Yt,maxZoom:_t,nodeExtent:Ie,onNodesChange:Ct,onEdgesChange:vn,snapToGrid:Te,snapGrid:We,connectionMode:X,translateExtent:mt,connectOnClick:lw,defaultEdgeOptions:mu,fitView:Ns,fitViewOptions:Qf,onNodesDelete:B,onEdgesDelete:$,onNodeDragStart:A,onNodeDrag:L,onNodeDragStop:P,onSelectionDrag:z,onSelectionDragStart:te,onSelectionDragStop:Q,noPanClassName:Tr,nodeOrigin:He,rfId:Uf,autoPanOnConnect:pu,autoPanOnNodeDrag:tc,onError:Ag,connectionRadius:Gr,isValidConnection:_g,nodeDragThreshold:uw}),ae.createElement(j7e,{onSelectionChange:U}),Kt,ae.createElement(JNe,{proOptions:Eg,position:cw}),ae.createElement(M7e,{rfId:Uf,disableKeyboardA11y:Yo})))});dG.displayName="ReactFlow";function hG(t){return e=>{const[n,r]=b.useState(e),s=b.useCallback(i=>r(a=>t(i,a)),[]);return[n,r,s]}}const LCe=hG(KW),BCe=hG(U7e),fG=({id:t,x:e,y:n,width:r,height:s,style:i,color:a,strokeColor:l,strokeWidth:c,className:d,borderRadius:h,shapeRendering:m,onClick:g,selected:x})=>{const{background:y,backgroundColor:w}=i||{},S=a||y||w;return ae.createElement("rect",{className:Bs(["react-flow__minimap-node",{selected:x},d]),x:e,y:n,rx:h,ry:h,width:r,height:s,fill:S,stroke:l,strokeWidth:c,shapeRendering:m,onClick:g?k=>g(k,t):void 0})};fG.displayName="MiniMapNode";var FCe=b.memo(fG);const qCe=t=>t.nodeOrigin,$Ce=t=>t.getNodes().filter(e=>!e.hidden&&e.width&&e.height),m5=t=>t instanceof Function?t:()=>t;function HCe({nodeStrokeColor:t="transparent",nodeColor:e="#e2e2e2",nodeClassName:n="",nodeBorderRadius:r=5,nodeStrokeWidth:s=2,nodeComponent:i=FCe,onClick:a}){const l=hr($Ce,ks),c=hr(qCe),d=m5(e),h=m5(t),m=m5(n),g=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return ae.createElement(ae.Fragment,null,l.map(x=>{const{x:y,y:w}=td(x,c).positionAbsolute;return ae.createElement(i,{key:x.id,x:y,y:w,width:x.width,height:x.height,style:x.style,selected:x.selected,className:m(x),color:d(x),borderRadius:r,strokeColor:h(x),strokeWidth:s,shapeRendering:g,onClick:a,id:x.id})}))}var QCe=b.memo(HCe);const VCe=200,UCe=150,WCe=t=>{const e=t.getNodes(),n={x:-t.transform[0]/t.transform[2],y:-t.transform[1]/t.transform[2],width:t.width/t.transform[2],height:t.height/t.transform[2]};return{viewBB:n,boundingRect:e.length>0?n7e(tw(e,t.nodeOrigin),n):n,rfId:t.rfId}},GCe="react-flow__minimap-desc";function mG({style:t,className:e,nodeStrokeColor:n="transparent",nodeColor:r="#e2e2e2",nodeClassName:s="",nodeBorderRadius:i=5,nodeStrokeWidth:a=2,nodeComponent:l,maskColor:c="rgb(240, 240, 240, 0.6)",maskStrokeColor:d="none",maskStrokeWidth:h=1,position:m="bottom-right",onClick:g,onNodeClick:x,pannable:y=!1,zoomable:w=!1,ariaLabel:S="React Flow mini map",inversePan:k=!1,zoomStep:j=10,offsetScale:N=5}){const T=ps(),E=b.useRef(null),{boundingRect:_,viewBB:A,rfId:L}=hr(WCe,ks),P=t?.width??VCe,B=t?.height??UCe,$=_.width/P,U=_.height/B,te=Math.max($,U),z=te*P,Q=te*B,F=N*te,Y=_.x-(z-_.width)/2-F,J=_.y-(Q-_.height)/2-F,X=z+F*2,R=Q+F*2,ie=`${GCe}-${L}`,G=b.useRef(0);G.current=te,b.useEffect(()=>{if(E.current){const ee=ma(E.current),ne=re=>{const{transform:oe,d3Selection:Te,d3Zoom:We}=T.getState();if(re.sourceEvent.type!=="wheel"||!Te||!We)return;const Ye=-re.sourceEvent.deltaY*(re.sourceEvent.deltaMode===1?.05:re.sourceEvent.deltaMode?1:.002)*j,Je=oe[2]*Math.pow(2,Ye);We.scaleTo(Te,Je)},W=re=>{const{transform:oe,d3Selection:Te,d3Zoom:We,translateExtent:Ye,width:Je,height:Oe}=T.getState();if(re.sourceEvent.type!=="mousemove"||!Te||!We)return;const Ve=G.current*Math.max(1,oe[2])*(k?-1:1),Ue={x:oe[0]-re.sourceEvent.movementX*Ve,y:oe[1]-re.sourceEvent.movementY*Ve},He=[[0,0],[Je,Oe]],Ot=Fl.translate(Ue.x,Ue.y).scale(oe[2]),xt=We.constrain()(Ot,He,Ye);We.transform(Te,xt)},se=yW().on("zoom",y?W:null).on("zoom.wheel",w?ne:null);return ee.call(se),()=>{ee.on("zoom",null)}}},[y,w,k,j]);const I=g?ee=>{const ne=Ha(ee);g(ee,{x:ne[0],y:ne[1]})}:void 0,V=x?(ee,ne)=>{const W=T.getState().nodeInternals.get(ne);x(ee,W)}:void 0;return ae.createElement(Jb,{position:m,style:t,className:Bs(["react-flow__minimap",e]),"data-testid":"rf__minimap"},ae.createElement("svg",{width:P,height:B,viewBox:`${Y} ${J} ${X} ${R}`,role:"img","aria-labelledby":ie,ref:E,onClick:I},S&&ae.createElement("title",{id:ie},S),ae.createElement(QCe,{onClick:V,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:i,nodeClassName:s,nodeStrokeWidth:a,nodeComponent:l}),ae.createElement("path",{className:"react-flow__minimap-mask",d:`M${Y-F},${J-F}h${X+F*2}v${R+F*2}h${-X-F*2}z - M${A.x},${A.y}h${A.width}v${A.height}h${-A.width}z`,fill:c,fillRule:"evenodd",stroke:d,strokeWidth:h,pointerEvents:"none"})))}mG.displayName="MiniMap";var XCe=b.memo(mG);function YCe(){return ae.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32"},ae.createElement("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"}))}function KCe(){return ae.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5"},ae.createElement("path",{d:"M0 0h32v4.2H0z"}))}function ZCe(){return ae.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30"},ae.createElement("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"}))}function JCe(){return ae.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},ae.createElement("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"}))}function e8e(){return ae.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},ae.createElement("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"}))}const p0=({children:t,className:e,...n})=>ae.createElement("button",{type:"button",className:Bs(["react-flow__controls-button",e]),...n},t);p0.displayName="ControlButton";const t8e=t=>({isInteractive:t.nodesDraggable||t.nodesConnectable||t.elementsSelectable,minZoomReached:t.transform[2]<=t.minZoom,maxZoomReached:t.transform[2]>=t.maxZoom}),pG=({style:t,showZoom:e=!0,showFitView:n=!0,showInteractive:r=!0,fitViewOptions:s,onZoomIn:i,onZoomOut:a,onFitView:l,onInteractiveChange:c,className:d,children:h,position:m="bottom-left"})=>{const g=ps(),[x,y]=b.useState(!1),{isInteractive:w,minZoomReached:S,maxZoomReached:k}=hr(t8e,ks),{zoomIn:j,zoomOut:N,fitView:T}=s7();if(b.useEffect(()=>{y(!0)},[]),!x)return null;const E=()=>{j(),i?.()},_=()=>{N(),a?.()},A=()=>{T(s),l?.()},L=()=>{g.setState({nodesDraggable:!w,nodesConnectable:!w,elementsSelectable:!w}),c?.(!w)};return ae.createElement(Jb,{className:Bs(["react-flow__controls",d]),position:m,style:t,"data-testid":"rf__controls"},e&&ae.createElement(ae.Fragment,null,ae.createElement(p0,{onClick:E,className:"react-flow__controls-zoomin",title:"zoom in","aria-label":"zoom in",disabled:k},ae.createElement(YCe,null)),ae.createElement(p0,{onClick:_,className:"react-flow__controls-zoomout",title:"zoom out","aria-label":"zoom out",disabled:S},ae.createElement(KCe,null))),n&&ae.createElement(p0,{className:"react-flow__controls-fitview",onClick:A,title:"fit view","aria-label":"fit view"},ae.createElement(ZCe,null)),r&&ae.createElement(p0,{className:"react-flow__controls-interactive",onClick:L,title:"toggle interactivity","aria-label":"toggle interactivity"},w?ae.createElement(e8e,null):ae.createElement(JCe,null)),h)};pG.displayName="Controls";var n8e=b.memo(pG),Ca;(function(t){t.Lines="lines",t.Dots="dots",t.Cross="cross"})(Ca||(Ca={}));function r8e({color:t,dimensions:e,lineWidth:n}){return ae.createElement("path",{stroke:t,strokeWidth:n,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`})}function s8e({color:t,radius:e}){return ae.createElement("circle",{cx:e,cy:e,r:e,fill:t})}const i8e={[Ca.Dots]:"#91919a",[Ca.Lines]:"#eee",[Ca.Cross]:"#e2e2e2"},a8e={[Ca.Dots]:1,[Ca.Lines]:1,[Ca.Cross]:6},o8e=t=>({transform:t.transform,patternId:`pattern-${t.rfId}`});function gG({id:t,variant:e=Ca.Dots,gap:n=20,size:r,lineWidth:s=1,offset:i=2,color:a,style:l,className:c}){const d=b.useRef(null),{transform:h,patternId:m}=hr(o8e,ks),g=a||i8e[e],x=r||a8e[e],y=e===Ca.Dots,w=e===Ca.Cross,S=Array.isArray(n)?n:[n,n],k=[S[0]*h[2]||1,S[1]*h[2]||1],j=x*h[2],N=w?[j,j]:k,T=y?[j/i,j/i]:[N[0]/i,N[1]/i];return ae.createElement("svg",{className:Bs(["react-flow__background",c]),style:{...l,position:"absolute",width:"100%",height:"100%",top:0,left:0},ref:d,"data-testid":"rf__background"},ae.createElement("pattern",{id:m+t,x:h[0]%k[0],y:h[1]%k[1],width:k[0],height:k[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${T[0]},-${T[1]})`},y?ae.createElement(s8e,{color:g,radius:j/i}):ae.createElement(r8e,{dimensions:N,color:g,lineWidth:s})),ae.createElement("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${m+t})`}))}gG.displayName="Background";var l8e=b.memo(gG);function a7(t){throw new Error('Could not dynamically require "'+t+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var p5,AD;function c8e(){if(AD)return p5;AD=1;var t=qz(),e=4;function n(r){return t(r,e)}return p5=n,p5}var g5,MD;function xG(){if(MD)return g5;MD=1;var t=FJ();function e(n){return typeof n=="function"?n:t}return g5=e,g5}var x5,RD;function vG(){if(RD)return x5;RD=1;var t=$z(),e=pj(),n=xG(),r=xd();function s(i,a){var l=r(i)?t:e;return l(i,n(a))}return x5=s,x5}var v5,DD;function yG(){return DD||(DD=1,v5=vG()),v5}var y5,PD;function u8e(){if(PD)return y5;PD=1;var t=pj();function e(n,r){var s=[];return t(n,function(i,a,l){r(i,a,l)&&s.push(i)}),s}return y5=e,y5}var b5,zD;function bG(){if(zD)return b5;zD=1;var t=qJ(),e=u8e(),n=gj(),r=xd();function s(i,a){var l=r(i)?t:e;return l(i,n(a,3))}return b5=s,b5}var w5,ID;function d8e(){if(ID)return w5;ID=1;var t=Object.prototype,e=t.hasOwnProperty;function n(r,s){return r!=null&&e.call(r,s)}return w5=n,w5}var S5,LD;function wG(){if(LD)return S5;LD=1;var t=d8e(),e=$J();function n(r,s){return r!=null&&e(r,s,t)}return S5=n,S5}var k5,BD;function h8e(){if(BD)return k5;BD=1;var t=Hz(),e=Qz(),n=Vz(),r=xd(),s=xj(),i=vj(),a=HJ(),l=yj(),c="[object Map]",d="[object Set]",h=Object.prototype,m=h.hasOwnProperty;function g(x){if(x==null)return!0;if(s(x)&&(r(x)||typeof x=="string"||typeof x.splice=="function"||i(x)||l(x)||n(x)))return!x.length;var y=e(x);if(y==c||y==d)return!x.size;if(a(x))return!t(x).length;for(var w in x)if(m.call(x,w))return!1;return!0}return k5=g,k5}var O5,FD;function SG(){if(FD)return O5;FD=1;function t(e){return e===void 0}return O5=t,O5}var j5,qD;function f8e(){if(qD)return j5;qD=1;function t(e,n,r,s){var i=-1,a=e==null?0:e.length;for(s&&a&&(r=e[++i]);++i1?x.setNode(y,m):x.setNode(y)}),this},s.prototype.setNode=function(h,m){return t.has(this._nodes,h)?(arguments.length>1&&(this._nodes[h]=m),this):(this._nodes[h]=arguments.length>1?m:this._defaultNodeLabelFn(h),this._isCompound&&(this._parent[h]=n,this._children[h]={},this._children[n][h]=!0),this._in[h]={},this._preds[h]={},this._out[h]={},this._sucs[h]={},++this._nodeCount,this)},s.prototype.node=function(h){return this._nodes[h]},s.prototype.hasNode=function(h){return t.has(this._nodes,h)},s.prototype.removeNode=function(h){var m=this;if(t.has(this._nodes,h)){var g=function(x){m.removeEdge(m._edgeObjs[x])};delete this._nodes[h],this._isCompound&&(this._removeFromParentsChildList(h),delete this._parent[h],t.each(this.children(h),function(x){m.setParent(x)}),delete this._children[h]),t.each(t.keys(this._in[h]),g),delete this._in[h],delete this._preds[h],t.each(t.keys(this._out[h]),g),delete this._out[h],delete this._sucs[h],--this._nodeCount}return this},s.prototype.setParent=function(h,m){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(t.isUndefined(m))m=n;else{m+="";for(var g=m;!t.isUndefined(g);g=this.parent(g))if(g===h)throw new Error("Setting "+m+" as parent of "+h+" would create a cycle");this.setNode(m)}return this.setNode(h),this._removeFromParentsChildList(h),this._parent[h]=m,this._children[m][h]=!0,this},s.prototype._removeFromParentsChildList=function(h){delete this._children[this._parent[h]][h]},s.prototype.parent=function(h){if(this._isCompound){var m=this._parent[h];if(m!==n)return m}},s.prototype.children=function(h){if(t.isUndefined(h)&&(h=n),this._isCompound){var m=this._children[h];if(m)return t.keys(m)}else{if(h===n)return this.nodes();if(this.hasNode(h))return[]}},s.prototype.predecessors=function(h){var m=this._preds[h];if(m)return t.keys(m)},s.prototype.successors=function(h){var m=this._sucs[h];if(m)return t.keys(m)},s.prototype.neighbors=function(h){var m=this.predecessors(h);if(m)return t.union(m,this.successors(h))},s.prototype.isLeaf=function(h){var m;return this.isDirected()?m=this.successors(h):m=this.neighbors(h),m.length===0},s.prototype.filterNodes=function(h){var m=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});m.setGraph(this.graph());var g=this;t.each(this._nodes,function(w,S){h(S)&&m.setNode(S,w)}),t.each(this._edgeObjs,function(w){m.hasNode(w.v)&&m.hasNode(w.w)&&m.setEdge(w,g.edge(w))});var x={};function y(w){var S=g.parent(w);return S===void 0||m.hasNode(S)?(x[w]=S,S):S in x?x[S]:y(S)}return this._isCompound&&t.each(m.nodes(),function(w){m.setParent(w,y(w))}),m},s.prototype.setDefaultEdgeLabel=function(h){return t.isFunction(h)||(h=t.constant(h)),this._defaultEdgeLabelFn=h,this},s.prototype.edgeCount=function(){return this._edgeCount},s.prototype.edges=function(){return t.values(this._edgeObjs)},s.prototype.setPath=function(h,m){var g=this,x=arguments;return t.reduce(h,function(y,w){return x.length>1?g.setEdge(y,w,m):g.setEdge(y,w),w}),this},s.prototype.setEdge=function(){var h,m,g,x,y=!1,w=arguments[0];typeof w=="object"&&w!==null&&"v"in w?(h=w.v,m=w.w,g=w.name,arguments.length===2&&(x=arguments[1],y=!0)):(h=w,m=arguments[1],g=arguments[3],arguments.length>2&&(x=arguments[2],y=!0)),h=""+h,m=""+m,t.isUndefined(g)||(g=""+g);var S=l(this._isDirected,h,m,g);if(t.has(this._edgeLabels,S))return y&&(this._edgeLabels[S]=x),this;if(!t.isUndefined(g)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(h),this.setNode(m),this._edgeLabels[S]=y?x:this._defaultEdgeLabelFn(h,m,g);var k=c(this._isDirected,h,m,g);return h=k.v,m=k.w,Object.freeze(k),this._edgeObjs[S]=k,i(this._preds[m],h),i(this._sucs[h],m),this._in[m][S]=k,this._out[h][S]=k,this._edgeCount++,this},s.prototype.edge=function(h,m,g){var x=arguments.length===1?d(this._isDirected,arguments[0]):l(this._isDirected,h,m,g);return this._edgeLabels[x]},s.prototype.hasEdge=function(h,m,g){var x=arguments.length===1?d(this._isDirected,arguments[0]):l(this._isDirected,h,m,g);return t.has(this._edgeLabels,x)},s.prototype.removeEdge=function(h,m,g){var x=arguments.length===1?d(this._isDirected,arguments[0]):l(this._isDirected,h,m,g),y=this._edgeObjs[x];return y&&(h=y.v,m=y.w,delete this._edgeLabels[x],delete this._edgeObjs[x],a(this._preds[m],h),a(this._sucs[h],m),delete this._in[m][x],delete this._out[h][x],this._edgeCount--),this},s.prototype.inEdges=function(h,m){var g=this._in[h];if(g){var x=t.values(g);return m?t.filter(x,function(y){return y.v===m}):x}},s.prototype.outEdges=function(h,m){var g=this._out[h];if(g){var x=t.values(g);return m?t.filter(x,function(y){return y.w===m}):x}},s.prototype.nodeEdges=function(h,m){var g=this.inEdges(h,m);if(g)return g.concat(this.outEdges(h,m))};function i(h,m){h[m]?h[m]++:h[m]=1}function a(h,m){--h[m]||delete h[m]}function l(h,m,g,x){var y=""+m,w=""+g;if(!h&&y>w){var S=y;y=w,w=S}return y+r+w+r+(t.isUndefined(x)?e:x)}function c(h,m,g,x){var y=""+m,w=""+g;if(!h&&y>w){var S=y;y=w,w=S}var k={v:y,w};return x&&(k.name=x),k}function d(h,m){return l(h,m.v,m.w,m.name)}return L5}var B5,tP;function S8e(){return tP||(tP=1,B5="2.1.8"),B5}var F5,nP;function k8e(){return nP||(nP=1,F5={Graph:o7(),version:S8e()}),F5}var q5,rP;function O8e(){if(rP)return q5;rP=1;var t=za(),e=o7();q5={write:n,read:i};function n(a){var l={options:{directed:a.isDirected(),multigraph:a.isMultigraph(),compound:a.isCompound()},nodes:r(a),edges:s(a)};return t.isUndefined(a.graph())||(l.value=t.clone(a.graph())),l}function r(a){return t.map(a.nodes(),function(l){var c=a.node(l),d=a.parent(l),h={v:l};return t.isUndefined(c)||(h.value=c),t.isUndefined(d)||(h.parent=d),h})}function s(a){return t.map(a.edges(),function(l){var c=a.edge(l),d={v:l.v,w:l.w};return t.isUndefined(l.name)||(d.name=l.name),t.isUndefined(c)||(d.value=c),d})}function i(a){var l=new e(a.options).setGraph(a.value);return t.each(a.nodes,function(c){l.setNode(c.v,c.value),c.parent&&l.setParent(c.v,c.parent)}),t.each(a.edges,function(c){l.setEdge({v:c.v,w:c.w,name:c.name},c.value)}),l}return q5}var $5,sP;function j8e(){if(sP)return $5;sP=1;var t=za();$5=e;function e(n){var r={},s=[],i;function a(l){t.has(r,l)||(r[l]=!0,i.push(l),t.each(n.successors(l),a),t.each(n.predecessors(l),a))}return t.each(n.nodes(),function(l){i=[],a(l),i.length&&s.push(i)}),s}return $5}var H5,iP;function NG(){if(iP)return H5;iP=1;var t=za();H5=e;function e(){this._arr=[],this._keyIndices={}}return e.prototype.size=function(){return this._arr.length},e.prototype.keys=function(){return this._arr.map(function(n){return n.key})},e.prototype.has=function(n){return t.has(this._keyIndices,n)},e.prototype.priority=function(n){var r=this._keyIndices[n];if(r!==void 0)return this._arr[r].priority},e.prototype.min=function(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key},e.prototype.add=function(n,r){var s=this._keyIndices;if(n=String(n),!t.has(s,n)){var i=this._arr,a=i.length;return s[n]=a,i.push({key:n,priority:r}),this._decrease(a),!0}return!1},e.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var n=this._arr.pop();return delete this._keyIndices[n.key],this._heapify(0),n.key},e.prototype.decrease=function(n,r){var s=this._keyIndices[n];if(r>this._arr[s].priority)throw new Error("New priority is greater than current priority. Key: "+n+" Old: "+this._arr[s].priority+" New: "+r);this._arr[s].priority=r,this._decrease(s)},e.prototype._heapify=function(n){var r=this._arr,s=2*n,i=s+1,a=n;s>1,!(r[i].priority0&&(m=h.removeMin(),g=d[m],g.distance!==Number.POSITIVE_INFINITY);)c(m).forEach(x);return d}return Q5}var V5,oP;function N8e(){if(oP)return V5;oP=1;var t=CG(),e=za();V5=n;function n(r,s,i){return e.transform(r.nodes(),function(a,l){a[l]=t(r,l,s,i)},{})}return V5}var U5,lP;function TG(){if(lP)return U5;lP=1;var t=za();U5=e;function e(n){var r=0,s=[],i={},a=[];function l(c){var d=i[c]={onStack:!0,lowlink:r,index:r++};if(s.push(c),n.successors(c).forEach(function(g){t.has(i,g)?i[g].onStack&&(d.lowlink=Math.min(d.lowlink,i[g].index)):(l(g),d.lowlink=Math.min(d.lowlink,i[g].lowlink))}),d.lowlink===d.index){var h=[],m;do m=s.pop(),i[m].onStack=!1,h.push(m);while(c!==m);a.push(h)}}return n.nodes().forEach(function(c){t.has(i,c)||l(c)}),a}return U5}var W5,cP;function C8e(){if(cP)return W5;cP=1;var t=za(),e=TG();W5=n;function n(r){return t.filter(e(r),function(s){return s.length>1||s.length===1&&r.hasEdge(s[0],s[0])})}return W5}var G5,uP;function T8e(){if(uP)return G5;uP=1;var t=za();G5=n;var e=t.constant(1);function n(s,i,a){return r(s,i||e,a||function(l){return s.outEdges(l)})}function r(s,i,a){var l={},c=s.nodes();return c.forEach(function(d){l[d]={},l[d][d]={distance:0},c.forEach(function(h){d!==h&&(l[d][h]={distance:Number.POSITIVE_INFINITY})}),a(d).forEach(function(h){var m=h.v===d?h.w:h.v,g=i(h);l[d][m]={distance:g,predecessor:d}})}),c.forEach(function(d){var h=l[d];c.forEach(function(m){var g=l[m];c.forEach(function(x){var y=g[d],w=h[x],S=g[x],k=y.distance+w.distance;k0;){if(d=c.removeMin(),t.has(l,d))a.setEdge(d,l[d]);else{if(m)throw new Error("Input graph is not connected: "+s);m=!0}s.nodeEdges(d).forEach(h)}return a}return e3}var t3,xP;function R8e(){return xP||(xP=1,t3={components:j8e(),dijkstra:CG(),dijkstraAll:N8e(),findCycles:C8e(),floydWarshall:T8e(),isAcyclic:E8e(),postorder:_8e(),preorder:A8e(),prim:M8e(),tarjan:TG(),topsort:EG()}),t3}var n3,vP;function D8e(){if(vP)return n3;vP=1;var t=k8e();return n3={Graph:t.Graph,json:O8e(),alg:R8e(),version:t.version},n3}var r3,yP;function Ja(){if(yP)return r3;yP=1;var t;if(typeof a7=="function")try{t=D8e()}catch{}return t||(t=window.graphlib),r3=t,r3}var s3,bP;function P8e(){if(bP)return s3;bP=1;var t=qz(),e=1,n=4;function r(s){return t(s,e|n)}return s3=r,s3}var i3,wP;function z8e(){if(wP)return i3;wP=1;var t=wj(),e=Yz(),n=Xz(),r=Ly(),s=Object.prototype,i=s.hasOwnProperty,a=t(function(l,c){l=Object(l);var d=-1,h=c.length,m=h>2?c[2]:void 0;for(m&&n(c[0],c[1],m)&&(h=1);++d1?i[l-1]:void 0,d=l>2?i[2]:void 0;for(c=r.length>3&&typeof c=="function"?(l--,c):void 0,d&&e(i[0],i[1],d)&&(c=l<3?void 0:c,l=1),s=Object(s);++a0;--S)if(w=h[S].dequeue(),w){g=g.concat(a(d,h,m,w,!0));break}}}return g}function a(d,h,m,g,x){var y=x?[]:void 0;return t.forEach(d.inEdges(g.v),function(w){var S=d.edge(w),k=d.node(w.v);x&&y.push({v:w.v,w:w.w}),k.out-=S,c(h,m,k)}),t.forEach(d.outEdges(g.v),function(w){var S=d.edge(w),k=w.w,j=d.node(k);j.in-=S,c(h,m,j)}),d.removeNode(g.v),y}function l(d,h){var m=new e,g=0,x=0;t.forEach(d.nodes(),function(S){m.setNode(S,{v:S,in:0,out:0})}),t.forEach(d.edges(),function(S){var k=m.edge(S.v,S.w)||0,j=h(S),N=k+j;m.setEdge(S.v,S.w,N),x=Math.max(x,m.node(S.v).out+=j),g=Math.max(g,m.node(S.w).in+=j)});var y=t.range(x+g+3).map(function(){return new n}),w=g+1;return t.forEach(m.nodes(),function(S){c(y,w,m.node(S))}),{graph:m,buckets:y,zeroIdx:w}}function c(d,h,m){m.out?m.in?d[m.out-m.in+h].enqueue(m):d[d.length-1].enqueue(m):d[0].enqueue(m)}return k3}var O3,FP;function Z8e(){if(FP)return O3;FP=1;var t=Nr(),e=K8e();O3={run:n,undo:s};function n(i){var a=i.graph().acyclicer==="greedy"?e(i,l(i)):r(i);t.forEach(a,function(c){var d=i.edge(c);i.removeEdge(c),d.forwardName=c.name,d.reversed=!0,i.setEdge(c.w,c.v,d,t.uniqueId("rev"))});function l(c){return function(d){return c.edge(d).weight}}}function r(i){var a=[],l={},c={};function d(h){t.has(c,h)||(c[h]=!0,l[h]=!0,t.forEach(i.outEdges(h),function(m){t.has(l,m.w)?a.push(m):d(m.w)}),delete l[h])}return t.forEach(i.nodes(),d),a}function s(i){t.forEach(i.edges(),function(a){var l=i.edge(a);if(l.reversed){i.removeEdge(a);var c=l.forwardName;delete l.reversed,delete l.forwardName,i.setEdge(a.w,a.v,l,c)}})}return O3}var j3,qP;function ji(){if(qP)return j3;qP=1;var t=Nr(),e=Ja().Graph;j3={addDummyNode:n,simplify:r,asNonCompoundGraph:s,successorWeights:i,predecessorWeights:a,intersectRect:l,buildLayerMatrix:c,normalizeRanks:d,removeEmptyRanks:h,addBorderNode:m,maxRank:g,partition:x,time:y,notime:w};function n(S,k,j,N){var T;do T=t.uniqueId(N);while(S.hasNode(T));return j.dummy=k,S.setNode(T,j),T}function r(S){var k=new e().setGraph(S.graph());return t.forEach(S.nodes(),function(j){k.setNode(j,S.node(j))}),t.forEach(S.edges(),function(j){var N=k.edge(j.v,j.w)||{weight:0,minlen:1},T=S.edge(j);k.setEdge(j.v,j.w,{weight:N.weight+T.weight,minlen:Math.max(N.minlen,T.minlen)})}),k}function s(S){var k=new e({multigraph:S.isMultigraph()}).setGraph(S.graph());return t.forEach(S.nodes(),function(j){S.children(j).length||k.setNode(j,S.node(j))}),t.forEach(S.edges(),function(j){k.setEdge(j,S.edge(j))}),k}function i(S){var k=t.map(S.nodes(),function(j){var N={};return t.forEach(S.outEdges(j),function(T){N[T.w]=(N[T.w]||0)+S.edge(T).weight}),N});return t.zipObject(S.nodes(),k)}function a(S){var k=t.map(S.nodes(),function(j){var N={};return t.forEach(S.inEdges(j),function(T){N[T.v]=(N[T.v]||0)+S.edge(T).weight}),N});return t.zipObject(S.nodes(),k)}function l(S,k){var j=S.x,N=S.y,T=k.x-j,E=k.y-N,_=S.width/2,A=S.height/2;if(!T&&!E)throw new Error("Not possible to find intersection inside of the rectangle");var L,P;return Math.abs(E)*_>Math.abs(T)*A?(E<0&&(A=-A),L=A*T/E,P=A):(T<0&&(_=-_),L=_,P=_*E/T),{x:j+L,y:N+P}}function c(S){var k=t.map(t.range(g(S)+1),function(){return[]});return t.forEach(S.nodes(),function(j){var N=S.node(j),T=N.rank;t.isUndefined(T)||(k[T][N.order]=j)}),k}function d(S){var k=t.min(t.map(S.nodes(),function(j){return S.node(j).rank}));t.forEach(S.nodes(),function(j){var N=S.node(j);t.has(N,"rank")&&(N.rank-=k)})}function h(S){var k=t.min(t.map(S.nodes(),function(E){return S.node(E).rank})),j=[];t.forEach(S.nodes(),function(E){var _=S.node(E).rank-k;j[_]||(j[_]=[]),j[_].push(E)});var N=0,T=S.graph().nodeRankFactor;t.forEach(j,function(E,_){t.isUndefined(E)&&_%T!==0?--N:N&&t.forEach(E,function(A){S.node(A).rank+=N})})}function m(S,k,j,N){var T={width:0,height:0};return arguments.length>=4&&(T.rank=j,T.order=N),n(S,"border",T,k)}function g(S){return t.max(t.map(S.nodes(),function(k){var j=S.node(k).rank;if(!t.isUndefined(j))return j}))}function x(S,k){var j={lhs:[],rhs:[]};return t.forEach(S,function(N){k(N)?j.lhs.push(N):j.rhs.push(N)}),j}function y(S,k){var j=t.now();try{return k()}finally{console.log(S+" time: "+(t.now()-j)+"ms")}}function w(S,k){return k()}return j3}var N3,$P;function J8e(){if($P)return N3;$P=1;var t=Nr(),e=ji();N3={run:n,undo:s};function n(i){i.graph().dummyChains=[],t.forEach(i.edges(),function(a){r(i,a)})}function r(i,a){var l=a.v,c=i.node(l).rank,d=a.w,h=i.node(d).rank,m=a.name,g=i.edge(a),x=g.labelRank;if(h!==c+1){i.removeEdge(a);var y,w,S;for(S=0,++c;cP.lim&&(B=P,$=!0);var U=t.filter(T.edges(),function(te){return $===j(N,N.node(te.v),B)&&$!==j(N,N.node(te.w),B)});return t.minBy(U,function(te){return n(T,te)})}function w(N,T,E,_){var A=E.v,L=E.w;N.removeEdge(A,L),N.setEdge(_.v,_.w,{}),m(N),c(N,T),S(N,T)}function S(N,T){var E=t.find(N.nodes(),function(A){return!T.node(A).parent}),_=s(N,E);_=_.slice(1),t.forEach(_,function(A){var L=N.node(A).parent,P=T.edge(A,L),B=!1;P||(P=T.edge(L,A),B=!0),T.node(A).rank=T.node(L).rank+(B?P.minlen:-P.minlen)})}function k(N,T,E){return N.hasEdge(T,E)}function j(N,T,E){return E.low<=T.lim&&T.lim<=E.lim}return E3}var _3,UP;function tTe(){if(UP)return _3;UP=1;var t=Dy(),e=t.longestPath,n=RG(),r=eTe();_3=s;function s(c){switch(c.graph().ranker){case"network-simplex":l(c);break;case"tight-tree":a(c);break;case"longest-path":i(c);break;default:l(c)}}var i=e;function a(c){e(c),n(c)}function l(c){r(c)}return _3}var A3,WP;function nTe(){if(WP)return A3;WP=1;var t=Nr();A3=e;function e(s){var i=r(s);t.forEach(s.graph().dummyChains,function(a){for(var l=s.node(a),c=l.edgeObj,d=n(s,i,c.v,c.w),h=d.path,m=d.lca,g=0,x=h[g],y=!0;a!==c.w;){if(l=s.node(a),y){for(;(x=h[g])!==m&&s.node(x).maxRankh||m>i[g].lim));for(x=g,g=l;(g=s.parent(g))!==x;)d.push(g);return{path:c.concat(d.reverse()),lca:x}}function r(s){var i={},a=0;function l(c){var d=a;t.forEach(s.children(c),l),i[c]={low:d,lim:a++}}return t.forEach(s.children(),l),i}return A3}var M3,GP;function rTe(){if(GP)return M3;GP=1;var t=Nr(),e=ji();M3={run:n,cleanup:a};function n(l){var c=e.addDummyNode(l,"root",{},"_root"),d=s(l),h=t.max(t.values(d))-1,m=2*h+1;l.graph().nestingRoot=c,t.forEach(l.edges(),function(x){l.edge(x).minlen*=m});var g=i(l)+1;t.forEach(l.children(),function(x){r(l,c,m,g,h,d,x)}),l.graph().nodeRankFactor=m}function r(l,c,d,h,m,g,x){var y=l.children(x);if(!y.length){x!==c&&l.setEdge(c,x,{weight:0,minlen:d});return}var w=e.addBorderNode(l,"_bt"),S=e.addBorderNode(l,"_bb"),k=l.node(x);l.setParent(w,x),k.borderTop=w,l.setParent(S,x),k.borderBottom=S,t.forEach(y,function(j){r(l,c,d,h,m,g,j);var N=l.node(j),T=N.borderTop?N.borderTop:j,E=N.borderBottom?N.borderBottom:j,_=N.borderTop?h:2*h,A=T!==E?1:m-g[x]+1;l.setEdge(w,T,{weight:_,minlen:A,nestingEdge:!0}),l.setEdge(E,S,{weight:_,minlen:A,nestingEdge:!0})}),l.parent(x)||l.setEdge(c,w,{weight:0,minlen:m+g[x]})}function s(l){var c={};function d(h,m){var g=l.children(h);g&&g.length&&t.forEach(g,function(x){d(x,m+1)}),c[h]=m}return t.forEach(l.children(),function(h){d(h,1)}),c}function i(l){return t.reduce(l.edges(),function(c,d){return c+l.edge(d).weight},0)}function a(l){var c=l.graph();l.removeNode(c.nestingRoot),delete c.nestingRoot,t.forEach(l.edges(),function(d){var h=l.edge(d);h.nestingEdge&&l.removeEdge(d)})}return M3}var R3,XP;function sTe(){if(XP)return R3;XP=1;var t=Nr(),e=ji();R3=n;function n(s){function i(a){var l=s.children(a),c=s.node(a);if(l.length&&t.forEach(l,i),t.has(c,"minRank")){c.borderLeft=[],c.borderRight=[];for(var d=c.minRank,h=c.maxRank+1;d0;)x%2&&(y+=h[x+1]),x=x-1>>1,h[x]+=g.weight;m+=g.weight*y})),m}return z3}var I3,JP;function lTe(){if(JP)return I3;JP=1;var t=Nr();I3=e;function e(n,r){return t.map(r,function(s){var i=n.inEdges(s);if(i.length){var a=t.reduce(i,function(l,c){var d=n.edge(c),h=n.node(c.v);return{sum:l.sum+d.weight*h.order,weight:l.weight+d.weight}},{sum:0,weight:0});return{v:s,barycenter:a.sum/a.weight,weight:a.weight}}else return{v:s}})}return I3}var L3,ez;function cTe(){if(ez)return L3;ez=1;var t=Nr();L3=e;function e(s,i){var a={};t.forEach(s,function(c,d){var h=a[c.v]={indegree:0,in:[],out:[],vs:[c.v],i:d};t.isUndefined(c.barycenter)||(h.barycenter=c.barycenter,h.weight=c.weight)}),t.forEach(i.edges(),function(c){var d=a[c.v],h=a[c.w];!t.isUndefined(d)&&!t.isUndefined(h)&&(h.indegree++,d.out.push(a[c.w]))});var l=t.filter(a,function(c){return!c.indegree});return n(l)}function n(s){var i=[];function a(d){return function(h){h.merged||(t.isUndefined(h.barycenter)||t.isUndefined(d.barycenter)||h.barycenter>=d.barycenter)&&r(d,h)}}function l(d){return function(h){h.in.push(d),--h.indegree===0&&s.push(h)}}for(;s.length;){var c=s.pop();i.push(c),t.forEach(c.in.reverse(),a(c)),t.forEach(c.out,l(c))}return t.map(t.filter(i,function(d){return!d.merged}),function(d){return t.pick(d,["vs","i","barycenter","weight"])})}function r(s,i){var a=0,l=0;s.weight&&(a+=s.barycenter*s.weight,l+=s.weight),i.weight&&(a+=i.barycenter*i.weight,l+=i.weight),s.vs=i.vs.concat(s.vs),s.barycenter=a/l,s.weight=l,s.i=Math.min(i.i,s.i),i.merged=!0}return L3}var B3,tz;function uTe(){if(tz)return B3;tz=1;var t=Nr(),e=ji();B3=n;function n(i,a){var l=e.partition(i,function(w){return t.has(w,"barycenter")}),c=l.lhs,d=t.sortBy(l.rhs,function(w){return-w.i}),h=[],m=0,g=0,x=0;c.sort(s(!!a)),x=r(h,d,x),t.forEach(c,function(w){x+=w.vs.length,h.push(w.vs),m+=w.barycenter*w.weight,g+=w.weight,x=r(h,d,x)});var y={vs:t.flatten(h,!0)};return g&&(y.barycenter=m/g,y.weight=g),y}function r(i,a,l){for(var c;a.length&&(c=t.last(a)).i<=l;)a.pop(),i.push(c.vs),l++;return l}function s(i){return function(a,l){return a.barycenterl.barycenter?1:i?l.i-a.i:a.i-l.i}}return B3}var F3,nz;function dTe(){if(nz)return F3;nz=1;var t=Nr(),e=lTe(),n=cTe(),r=uTe();F3=s;function s(l,c,d,h){var m=l.children(c),g=l.node(c),x=g?g.borderLeft:void 0,y=g?g.borderRight:void 0,w={};x&&(m=t.filter(m,function(E){return E!==x&&E!==y}));var S=e(l,m);t.forEach(S,function(E){if(l.children(E.v).length){var _=s(l,E.v,d,h);w[E.v]=_,t.has(_,"barycenter")&&a(E,_)}});var k=n(S,d);i(k,w);var j=r(k,h);if(x&&(j.vs=t.flatten([x,j.vs,y],!0),l.predecessors(x).length)){var N=l.node(l.predecessors(x)[0]),T=l.node(l.predecessors(y)[0]);t.has(j,"barycenter")||(j.barycenter=0,j.weight=0),j.barycenter=(j.barycenter*j.weight+N.order+T.order)/(j.weight+2),j.weight+=2}return j}function i(l,c){t.forEach(l,function(d){d.vs=t.flatten(d.vs.map(function(h){return c[h]?c[h].vs:h}),!0)})}function a(l,c){t.isUndefined(l.barycenter)?(l.barycenter=c.barycenter,l.weight=c.weight):(l.barycenter=(l.barycenter*l.weight+c.barycenter*c.weight)/(l.weight+c.weight),l.weight+=c.weight)}return F3}var q3,rz;function hTe(){if(rz)return q3;rz=1;var t=Nr(),e=Ja().Graph;q3=n;function n(s,i,a){var l=r(s),c=new e({compound:!0}).setGraph({root:l}).setDefaultNodeLabel(function(d){return s.node(d)});return t.forEach(s.nodes(),function(d){var h=s.node(d),m=s.parent(d);(h.rank===i||h.minRank<=i&&i<=h.maxRank)&&(c.setNode(d),c.setParent(d,m||l),t.forEach(s[a](d),function(g){var x=g.v===d?g.w:g.v,y=c.edge(x,d),w=t.isUndefined(y)?0:y.weight;c.setEdge(x,d,{weight:s.edge(g).weight+w})}),t.has(h,"minRank")&&c.setNode(d,{borderLeft:h.borderLeft[i],borderRight:h.borderRight[i]}))}),c}function r(s){for(var i;s.hasNode(i=t.uniqueId("_root")););return i}return q3}var $3,sz;function fTe(){if(sz)return $3;sz=1;var t=Nr();$3=e;function e(n,r,s){var i={},a;t.forEach(s,function(l){for(var c=n.parent(l),d,h;c;){if(d=n.parent(c),d?(h=i[d],i[d]=c):(h=a,a=c),h&&h!==c){r.setEdge(h,c);return}c=d}})}return $3}var H3,iz;function mTe(){if(iz)return H3;iz=1;var t=Nr(),e=aTe(),n=oTe(),r=dTe(),s=hTe(),i=fTe(),a=Ja().Graph,l=ji();H3=c;function c(g){var x=l.maxRank(g),y=d(g,t.range(1,x+1),"inEdges"),w=d(g,t.range(x-1,-1,-1),"outEdges"),S=e(g);m(g,S);for(var k=Number.POSITIVE_INFINITY,j,N=0,T=0;T<4;++N,++T){h(N%2?y:w,N%4>=2),S=l.buildLayerMatrix(g);var E=n(g,S);EB)&&a(N,te,$)})})}function E(_,A){var L=-1,P,B=0;return t.forEach(A,function($,U){if(k.node($).dummy==="border"){var te=k.predecessors($);te.length&&(P=k.node(te[0]).order,T(A,B,U,L,P),B=U,L=P)}T(A,B,A.length,P,_.length)}),A}return t.reduce(j,E),N}function i(k,j){if(k.node(j).dummy)return t.find(k.predecessors(j),function(N){return k.node(N).dummy})}function a(k,j,N){if(j>N){var T=j;j=N,N=T}var E=k[j];E||(k[j]=E={}),E[N]=!0}function l(k,j,N){if(j>N){var T=j;j=N,N=T}return t.has(k[j],N)}function c(k,j,N,T){var E={},_={},A={};return t.forEach(j,function(L){t.forEach(L,function(P,B){E[P]=P,_[P]=P,A[P]=B})}),t.forEach(j,function(L){var P=-1;t.forEach(L,function(B){var $=T(B);if($.length){$=t.sortBy($,function(F){return A[F]});for(var U=($.length-1)/2,te=Math.floor(U),z=Math.ceil(U);te<=z;++te){var Q=$[te];_[B]===B&&Po.jsxs("div",{className:"px-4 py-2 shadow-md rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700 min-w-[120px]",children:[o.jsx(ru,{type:"target",position:wt.Top}),o.jsx("div",{className:"font-semibold text-white text-sm truncate max-w-[200px]",title:t.content,children:t.label}),o.jsx(ru,{type:"source",position:wt.Bottom})]}));DG.displayName="EntityNode";const PG=b.memo(({data:t})=>o.jsxs("div",{className:"px-3 py-2 shadow-md rounded-md bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700 min-w-[100px]",children:[o.jsx(ru,{type:"target",position:wt.Top}),o.jsx("div",{className:"font-medium text-white text-xs truncate max-w-[150px]",title:t.content,children:t.label}),o.jsx(ru,{type:"source",position:wt.Bottom})]}));PG.displayName="ParagraphNode";const jTe={entity:DG,paragraph:PG};function NTe(t,e){const n=new hz.graphlib.Graph;n.setDefaultEdgeLabel(()=>({})),n.setGraph({rankdir:"TB",ranksep:100,nodesep:80});const r=[],s=[];return t.forEach(i=>{n.setNode(i.id,{width:150,height:50})}),e.forEach(i=>{n.setEdge(i.source,i.target)}),hz.layout(n),t.forEach(i=>{const a=n.node(i.id);r.push({id:i.id,type:i.type,position:{x:a.x-75,y:a.y-25},data:{label:i.content.slice(0,20)+(i.content.length>20?"...":""),content:i.content}})}),e.forEach((i,a)=>{const l={id:`edge-${a}`,source:i.source,target:i.target,animated:t.length<=200&&i.weight>5,style:{strokeWidth:Math.min(i.weight/2,5),opacity:.6}};i.weight>10&&t.length<100&&(l.label=`${i.weight.toFixed(0)}`),s.push(l)}),{nodes:r,edges:s}}function CTe(){const t=Zi(),[e,n]=b.useState(!1),[r,s]=b.useState(null),[i,a]=b.useState(""),[l,c]=b.useState("all"),[d,h]=b.useState(50),[m,g]=b.useState("50"),[x,y]=b.useState(!1),[w,S]=b.useState(!0),[k,j]=b.useState(!1),[N,T]=b.useState(!1),[E,_,A]=LCe([]),[L,P,B]=BCe([]),[$,U]=b.useState(0),[te,z]=b.useState(null),[Q,F]=b.useState(null),{toast:Y}=as(),J=b.useCallback(ne=>ne.type==="entity"?"#6366f1":ne.type==="paragraph"?"#10b981":"#6b7280",[]),X=b.useCallback(async(ne=!1)=>{try{if(!ne&&d>200){T(!0);return}n(!0);const[W,se]=await Promise.all([STe(d,l),kTe()]);if(s(se),W.nodes.length===0){Y({title:"提示",description:"知识库为空,请先导入知识数据"}),_([]),P([]);return}const{nodes:re,edges:oe}=NTe(W.nodes,W.edges);_(re),P(oe),U(re.length),se&&se.total_nodes>d&&Y({title:"提示",description:`知识图谱包含 ${se.total_nodes} 个节点,当前显示 ${re.length} 个`}),Y({title:"加载成功",description:`已加载 ${re.length} 个节点,${oe.length} 条边`})}catch(W){console.error("加载知识图谱失败:",W),Y({title:"加载失败",description:W instanceof Error?W.message:"未知错误",variant:"destructive"})}finally{n(!1)}},[d,l,Y]),R=b.useCallback(async()=>{if(!i.trim()){Y({title:"提示",description:"请输入搜索关键词"});return}try{const ne=await OTe(i);if(ne.length===0){Y({title:"未找到",description:"没有找到匹配的节点"});return}const W=new Set(ne.map(se=>se.id));_(se=>se.map(re=>({...re,style:{...re.style,opacity:W.has(re.id)?1:.3,filter:W.has(re.id)?"brightness(1.2)":"brightness(0.8)"}}))),Y({title:"搜索完成",description:`找到 ${ne.length} 个匹配节点`})}catch(ne){console.error("搜索失败:",ne),Y({title:"搜索失败",description:ne instanceof Error?ne.message:"未知错误",variant:"destructive"})}},[i,Y]),ie=b.useCallback(()=>{_(ne=>ne.map(W=>({...W,style:{...W.style,opacity:1,filter:"brightness(1)"}})))},[]),G=b.useCallback(()=>{S(!1),j(!0),X()},[X]),I=b.useCallback(()=>{T(!1),setTimeout(()=>{X(!0)},0)},[X]),V=b.useCallback((ne,W)=>{E.find(re=>re.id===W.id)&&z({id:W.id,type:W.type,content:W.data.content})},[E]);b.useEffect(()=>{w||k&&X()},[d,l,w,k]);const ee=b.useCallback((ne,W)=>{const se=E.find(Te=>Te.id===W.source),re=E.find(Te=>Te.id===W.target),oe=L.find(Te=>Te.id===W.id);se&&re&&oe&&F({source:{id:se.id,type:se.type,content:se.data.content},target:{id:re.id,type:re.type,content:re.data.content},edge:{source:W.source,target:W.target,weight:parseFloat(W.label||"0")}})},[E,L]);return o.jsxs("div",{className:"h-full flex flex-col",children:[o.jsxs("div",{className:"flex-shrink-0 p-4 border-b bg-background",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦知识库图谱"}),o.jsx("p",{className:"text-muted-foreground mt-1",children:"可视化知识实体与关系网络"})]}),r&&o.jsxs("div",{className:"flex gap-2 flex-wrap",children:[o.jsxs(Xn,{variant:"outline",className:"gap-1",children:[o.jsx(ek,{className:"h-3 w-3"}),"节点: ",r.total_nodes]}),o.jsxs(Xn,{variant:"outline",className:"gap-1",children:[o.jsx(SI,{className:"h-3 w-3"}),"边: ",r.total_edges]}),o.jsxs(Xn,{variant:"outline",className:"gap-1",children:[o.jsx(Oa,{className:"h-3 w-3"}),"实体: ",r.entity_nodes]}),o.jsxs(Xn,{variant:"outline",className:"gap-1",children:[o.jsx(zl,{className:"h-3 w-3"}),"段落: ",r.paragraph_nodes]})]})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 mt-4",children:[o.jsxs("div",{className:"flex-1 flex gap-2",children:[o.jsx(ze,{placeholder:"搜索节点内容...",value:i,onChange:ne=>a(ne.target.value),onKeyDown:ne=>ne.key==="Enter"&&R(),className:"flex-1"}),o.jsx(de,{onClick:R,size:"sm",children:o.jsx(Ni,{className:"h-4 w-4"})}),o.jsx(de,{onClick:ie,variant:"outline",size:"sm",children:"重置"})]}),o.jsxs("div",{className:"flex gap-2",children:[o.jsxs(Vt,{value:l,onValueChange:ne=>c(ne),children:[o.jsx($t,{className:"w-[120px]",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部节点"}),o.jsx(De,{value:"entity",children:"仅实体"}),o.jsx(De,{value:"paragraph",children:"仅段落"})]})]}),o.jsxs(Vt,{value:d===1e4?"all":x?"custom":d.toString(),onValueChange:ne=>{ne==="custom"?(y(!0),g(d.toString())):ne==="all"?(y(!1),h(1e4)):(y(!1),h(Number(ne)))},children:[o.jsx($t,{className:"w-[120px]",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"50",children:"50 节点"}),o.jsx(De,{value:"100",children:"100 节点"}),o.jsx(De,{value:"200",children:"200 节点"}),o.jsx(De,{value:"500",children:"500 节点"}),o.jsx(De,{value:"1000",children:"1000 节点"}),o.jsx(De,{value:"all",children:"全部 (最多10000)"}),o.jsx(De,{value:"custom",children:"自定义..."})]})]}),x&&o.jsx(ze,{type:"number",min:"50",value:m,onChange:ne=>g(ne.target.value),onBlur:()=>{const ne=parseInt(m);!isNaN(ne)&&ne>=50?h(ne):(g("50"),h(50))},onKeyDown:ne=>{if(ne.key==="Enter"){const W=parseInt(m);!isNaN(W)&&W>=50?h(W):(g("50"),h(50))}},placeholder:"最少50个",className:"w-[120px]"}),o.jsx(de,{onClick:()=>X(),variant:"outline",size:"sm",disabled:e,children:o.jsx(Ps,{className:xe("h-4 w-4",e&&"animate-spin")})})]})]})]}),o.jsx("div",{className:"flex-1 relative",children:e?o.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:o.jsxs("div",{className:"text-center",children:[o.jsx(Ps,{className:"h-8 w-8 animate-spin mx-auto mb-2 text-muted-foreground"}),o.jsx("p",{className:"text-muted-foreground",children:"加载知识图谱中..."})]})}):E.length===0?o.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:o.jsxs("div",{className:"text-center",children:[o.jsx(ek,{className:"h-12 w-12 mx-auto mb-4 text-muted-foreground"}),o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"知识库为空"}),o.jsx("p",{className:"text-muted-foreground",children:"请先导入知识数据"})]})}):o.jsxs(dG,{nodes:E,edges:L,onNodesChange:A,onEdgesChange:B,onNodeClick:V,onEdgeClick:ee,nodeTypes:jTe,fitView:!0,minZoom:.05,maxZoom:1.5,defaultViewport:{x:0,y:0,zoom:.5},elevateNodesOnSelect:$<=500,nodesDraggable:$<=1e3,attributionPosition:"bottom-left",children:[o.jsx(l8e,{variant:Ca.Dots,gap:12,size:1}),o.jsx(n8e,{}),$<=500&&o.jsx(XCe,{nodeColor:J,nodeBorderRadius:8,pannable:!0,zoomable:!0}),o.jsxs(Jb,{position:"top-right",className:"bg-background/95 backdrop-blur-sm rounded-lg border p-3 shadow-lg",children:[o.jsx("div",{className:"text-sm font-semibold mb-2",children:"图例"}),o.jsxs("div",{className:"space-y-2 text-xs",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700"}),o.jsx("span",{children:"实体节点"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700"}),o.jsx("span",{children:"段落节点"})]}),$>200&&o.jsxs("div",{className:"mt-2 pt-2 border-t text-yellow-600 dark:text-yellow-500",children:[o.jsx("div",{className:"font-semibold",children:"性能模式"}),o.jsx("div",{children:"已禁用动画"}),$>500&&o.jsx("div",{children:"已禁用缩略图"})]})]})]})]})}),o.jsx(Dr,{open:!!te,onOpenChange:ne=>!ne&&z(null),children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsx(kr,{children:o.jsx(Or,{children:"节点详情"})}),te&&o.jsxs("div",{className:"space-y-4",children:[o.jsx("div",{className:"grid grid-cols-2 gap-4",children:o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"类型"}),o.jsx("div",{className:"mt-1",children:o.jsx(Xn,{variant:te.type==="entity"?"default":"secondary",children:te.type==="entity"?"🏷️ 实体":"📄 段落"})})]})}),o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"ID"}),o.jsx("code",{className:"mt-1 block p-2 bg-muted rounded text-xs break-all",children:te.id})]}),o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"内容"}),o.jsx(gn,{className:"mt-1 h-40 p-3 bg-muted rounded",children:o.jsx("p",{className:"text-sm whitespace-pre-wrap",children:te.content})})]})]})]})}),o.jsx(Dr,{open:!!Q,onOpenChange:ne=>!ne&&F(null),children:o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-hidden flex flex-col",children:[o.jsx(kr,{children:o.jsx(Or,{children:"边详情"})}),Q&&o.jsx(gn,{className:"flex-1 pr-4",children:o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-blue-50 dark:bg-blue-950 rounded border-2 border-blue-200 dark:border-blue-800",children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"源节点"}),o.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:Q.source.content}),o.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[Q.source.id.slice(0,40),"..."]})]}),o.jsx("div",{className:"text-2xl text-muted-foreground flex-shrink-0",children:"→"}),o.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-green-50 dark:bg-green-950 rounded border-2 border-green-200 dark:border-green-800",children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"目标节点"}),o.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:Q.target.content}),o.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[Q.target.id.slice(0,40),"..."]})]})]}),o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"权重"}),o.jsx("div",{className:"mt-1",children:o.jsx(Xn,{variant:"outline",className:"text-base font-mono",children:Q.edge.weight.toFixed(4)})})]})]})})]})}),o.jsx(Dn,{open:w,onOpenChange:S,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"加载知识图谱"}),o.jsxs(_n,{children:["知识图谱的动态展示会消耗较多系统资源。",o.jsx("br",{}),"确定要加载知识图谱吗?"]})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{onClick:()=>t({to:"/"}),children:"取消 (返回首页)"}),o.jsx(An,{onClick:G,children:"确认加载"})]})]})}),o.jsx(Dn,{open:N,onOpenChange:T,children:o.jsxs(Nn,{children:[o.jsxs(Cn,{children:[o.jsx(En,{children:"⚠️ 节点数量较多"}),o.jsx(_n,{asChild:!0,children:o.jsxs("div",{children:[o.jsxs("p",{children:["您正在尝试加载 ",o.jsx("strong",{className:"text-orange-600",children:d>=1e4?"全部 (最多10000个)":d})," 个节点。"]}),o.jsx("p",{className:"mt-4",children:"节点数量过多可能导致:"}),o.jsxs("ul",{className:"list-disc list-inside mt-2 space-y-1",children:[o.jsx("li",{children:"页面加载时间较长"}),o.jsx("li",{children:"浏览器卡顿或崩溃"}),o.jsx("li",{children:"系统资源占用过高"})]}),o.jsx("p",{className:"mt-4",children:"建议先选择较少的节点数量 (50-200 个)。"})]})})]}),o.jsxs(Tn,{children:[o.jsx(Mn,{onClick:()=>{T(!1),d>200&&(h(50),y(!1))},children:"取消"}),o.jsx(An,{onClick:I,className:"bg-orange-600 hover:bg-orange-700",children:"我了解风险,继续加载"})]})]})})]})}function mh(t,e,n){let r=n.initialDeps??[],s;function i(){var a,l,c,d;let h;n.key&&((a=n.debug)!=null&&a.call(n))&&(h=Date.now());const m=t();if(!(m.length!==r.length||m.some((y,w)=>r[w]!==y)))return s;r=m;let x;if(n.key&&((l=n.debug)!=null&&l.call(n))&&(x=Date.now()),s=e(...m),n.key&&((c=n.debug)!=null&&c.call(n))){const y=Math.round((Date.now()-h)*100)/100,w=Math.round((Date.now()-x)*100)/100,S=w/16,k=(j,N)=>{for(j=String(j);j.length0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,n,r){if(r===void 0&&(r=!1),r){for(var s=0;s0&&(this.undefStack[this.undefStack.length-1][e]=n)}else{var i=this.undefStack[this.undefStack.length-1];i&&!i.hasOwnProperty(e)&&(i[e]=this.current[e])}n==null?delete this.current[e]:this.current[e]=n}}var Ske=_U;J("\\noexpand",function(t){var e=t.popToken();return t.isExpandable(e.text)&&(e.noexpand=!0,e.treatAsRelax=!0),{tokens:[e],numArgs:0}});J("\\expandafter",function(t){var e=t.popToken();return t.expandOnce(!0),{tokens:[e],numArgs:0}});J("\\@firstoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[0],numArgs:0}});J("\\@secondoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[1],numArgs:0}});J("\\@ifnextchar",function(t){var e=t.consumeArgs(3);t.consumeSpaces();var n=t.future();return e[0].length===1&&e[0][0].text===n.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}});J("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");J("\\TextOrMath",function(t){var e=t.consumeArgs(2);return t.mode==="text"?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});var UR={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};J("\\char",function(t){var e=t.popToken(),n,r="";if(e.text==="'")n=8,e=t.popToken();else if(e.text==='"')n=16,e=t.popToken();else if(e.text==="`")if(e=t.popToken(),e.text[0]==="\\")r=e.text.charCodeAt(1);else{if(e.text==="EOF")throw new qe("\\char` missing argument");r=e.text.charCodeAt(0)}else n=10;if(n){if(r=UR[e.text],r==null||r>=n)throw new qe("Invalid base-"+n+" digit "+e.text);for(var s;(s=UR[t.future().text])!=null&&s{var s=t.consumeArg().tokens;if(s.length!==1)throw new qe("\\newcommand's first argument must be a macro name");var i=s[0].text,a=t.isDefined(i);if(a&&!e)throw new qe("\\newcommand{"+i+"} attempting to redefine "+(i+"; use \\renewcommand"));if(!a&&!n)throw new qe("\\renewcommand{"+i+"} when command "+i+" does not yet exist; use \\newcommand");var l=0;if(s=t.consumeArg().tokens,s.length===1&&s[0].text==="["){for(var c="",d=t.expandNextToken();d.text!=="]"&&d.text!=="EOF";)c+=d.text,d=t.expandNextToken();if(!c.match(/^\s*[0-9]+\s*$/))throw new qe("Invalid number of arguments: "+c);l=parseInt(c),s=t.consumeArg().tokens}return a&&r||t.macros.set(i,{tokens:s,numArgs:l}),""};J("\\newcommand",t=>UN(t,!1,!0,!1));J("\\renewcommand",t=>UN(t,!0,!1,!1));J("\\providecommand",t=>UN(t,!0,!0,!0));J("\\message",t=>{var e=t.consumeArgs(1)[0];return console.log(e.reverse().map(n=>n.text).join("")),""});J("\\errmessage",t=>{var e=t.consumeArgs(1)[0];return console.error(e.reverse().map(n=>n.text).join("")),""});J("\\show",t=>{var e=t.popToken(),n=e.text;return console.log(e,t.macros.get(n),Qc[n],pr.math[n],pr.text[n]),""});J("\\bgroup","{");J("\\egroup","}");J("~","\\nobreakspace");J("\\lq","`");J("\\rq","'");J("\\aa","\\r a");J("\\AA","\\r A");J("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}");J("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");J("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}");J("ℬ","\\mathscr{B}");J("ℰ","\\mathscr{E}");J("ℱ","\\mathscr{F}");J("ℋ","\\mathscr{H}");J("ℐ","\\mathscr{I}");J("ℒ","\\mathscr{L}");J("ℳ","\\mathscr{M}");J("ℛ","\\mathscr{R}");J("ℭ","\\mathfrak{C}");J("ℌ","\\mathfrak{H}");J("ℨ","\\mathfrak{Z}");J("\\Bbbk","\\Bbb{k}");J("·","\\cdotp");J("\\llap","\\mathllap{\\textrm{#1}}");J("\\rlap","\\mathrlap{\\textrm{#1}}");J("\\clap","\\mathclap{\\textrm{#1}}");J("\\mathstrut","\\vphantom{(}");J("\\underbar","\\underline{\\text{#1}}");J("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');J("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}");J("\\ne","\\neq");J("≠","\\neq");J("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}");J("∉","\\notin");J("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}");J("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}");J("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}");J("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}");J("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}");J("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}");J("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}");J("⟂","\\perp");J("‼","\\mathclose{!\\mkern-0.8mu!}");J("∌","\\notni");J("⌜","\\ulcorner");J("⌝","\\urcorner");J("⌞","\\llcorner");J("⌟","\\lrcorner");J("©","\\copyright");J("®","\\textregistered");J("️","\\textregistered");J("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');J("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');J("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');J("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');J("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");J("⋮","\\vdots");J("\\varGamma","\\mathit{\\Gamma}");J("\\varDelta","\\mathit{\\Delta}");J("\\varTheta","\\mathit{\\Theta}");J("\\varLambda","\\mathit{\\Lambda}");J("\\varXi","\\mathit{\\Xi}");J("\\varPi","\\mathit{\\Pi}");J("\\varSigma","\\mathit{\\Sigma}");J("\\varUpsilon","\\mathit{\\Upsilon}");J("\\varPhi","\\mathit{\\Phi}");J("\\varPsi","\\mathit{\\Psi}");J("\\varOmega","\\mathit{\\Omega}");J("\\substack","\\begin{subarray}{c}#1\\end{subarray}");J("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");J("\\boxed","\\fbox{$\\displaystyle{#1}$}");J("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");J("\\implies","\\DOTSB\\;\\Longrightarrow\\;");J("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");J("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");J("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var WR={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};J("\\dots",function(t){var e="\\dotso",n=t.expandAfterFuture().text;return n in WR?e=WR[n]:(n.slice(0,4)==="\\not"||n in pr.math&&["bin","rel"].includes(pr.math[n].group))&&(e="\\dotsb"),e});var WN={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};J("\\dotso",function(t){var e=t.future().text;return e in WN?"\\ldots\\,":"\\ldots"});J("\\dotsc",function(t){var e=t.future().text;return e in WN&&e!==","?"\\ldots\\,":"\\ldots"});J("\\cdots",function(t){var e=t.future().text;return e in WN?"\\@cdots\\,":"\\@cdots"});J("\\dotsb","\\cdots");J("\\dotsm","\\cdots");J("\\dotsi","\\!\\cdots");J("\\dotsx","\\ldots\\,");J("\\DOTSI","\\relax");J("\\DOTSB","\\relax");J("\\DOTSX","\\relax");J("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");J("\\,","\\tmspace+{3mu}{.1667em}");J("\\thinspace","\\,");J("\\>","\\mskip{4mu}");J("\\:","\\tmspace+{4mu}{.2222em}");J("\\medspace","\\:");J("\\;","\\tmspace+{5mu}{.2777em}");J("\\thickspace","\\;");J("\\!","\\tmspace-{3mu}{.1667em}");J("\\negthinspace","\\!");J("\\negmedspace","\\tmspace-{4mu}{.2222em}");J("\\negthickspace","\\tmspace-{5mu}{.277em}");J("\\enspace","\\kern.5em ");J("\\enskip","\\hskip.5em\\relax");J("\\quad","\\hskip1em\\relax");J("\\qquad","\\hskip2em\\relax");J("\\tag","\\@ifstar\\tag@literal\\tag@paren");J("\\tag@paren","\\tag@literal{({#1})}");J("\\tag@literal",t=>{if(t.macros.get("\\df@tag"))throw new qe("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});J("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");J("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");J("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");J("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");J("\\newline","\\\\\\relax");J("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var $U=Xe(Mo["Main-Regular"][84][1]-.7*Mo["Main-Regular"][65][1]);J("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+$U+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");J("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+$U+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");J("\\hspace","\\@ifstar\\@hspacer\\@hspace");J("\\@hspace","\\hskip #1\\relax");J("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");J("\\ordinarycolon",":");J("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");J("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');J("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');J("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');J("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');J("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');J("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');J("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');J("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');J("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');J("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');J("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');J("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');J("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');J("∷","\\dblcolon");J("∹","\\eqcolon");J("≔","\\coloneqq");J("≕","\\eqqcolon");J("⩴","\\Coloneqq");J("\\ratio","\\vcentcolon");J("\\coloncolon","\\dblcolon");J("\\colonequals","\\coloneqq");J("\\coloncolonequals","\\Coloneqq");J("\\equalscolon","\\eqqcolon");J("\\equalscoloncolon","\\Eqqcolon");J("\\colonminus","\\coloneq");J("\\coloncolonminus","\\Coloneq");J("\\minuscolon","\\eqcolon");J("\\minuscoloncolon","\\Eqcolon");J("\\coloncolonapprox","\\Colonapprox");J("\\coloncolonsim","\\Colonsim");J("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");J("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");J("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");J("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");J("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}");J("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");J("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");J("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");J("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");J("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");J("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");J("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");J("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");J("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}");J("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}");J("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}");J("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}");J("\\nleqq","\\html@mathml{\\@nleqq}{≰}");J("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}");J("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}");J("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}");J("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}");J("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}");J("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}");J("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}");J("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}");J("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}");J("\\imath","\\html@mathml{\\@imath}{ı}");J("\\jmath","\\html@mathml{\\@jmath}{ȷ}");J("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}");J("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}");J("⟦","\\llbracket");J("⟧","\\rrbracket");J("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}");J("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}");J("⦃","\\lBrace");J("⦄","\\rBrace");J("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}");J("⦵","\\minuso");J("\\darr","\\downarrow");J("\\dArr","\\Downarrow");J("\\Darr","\\Downarrow");J("\\lang","\\langle");J("\\rang","\\rangle");J("\\uarr","\\uparrow");J("\\uArr","\\Uparrow");J("\\Uarr","\\Uparrow");J("\\N","\\mathbb{N}");J("\\R","\\mathbb{R}");J("\\Z","\\mathbb{Z}");J("\\alef","\\aleph");J("\\alefsym","\\aleph");J("\\Alpha","\\mathrm{A}");J("\\Beta","\\mathrm{B}");J("\\bull","\\bullet");J("\\Chi","\\mathrm{X}");J("\\clubs","\\clubsuit");J("\\cnums","\\mathbb{C}");J("\\Complex","\\mathbb{C}");J("\\Dagger","\\ddagger");J("\\diamonds","\\diamondsuit");J("\\empty","\\emptyset");J("\\Epsilon","\\mathrm{E}");J("\\Eta","\\mathrm{H}");J("\\exist","\\exists");J("\\harr","\\leftrightarrow");J("\\hArr","\\Leftrightarrow");J("\\Harr","\\Leftrightarrow");J("\\hearts","\\heartsuit");J("\\image","\\Im");J("\\infin","\\infty");J("\\Iota","\\mathrm{I}");J("\\isin","\\in");J("\\Kappa","\\mathrm{K}");J("\\larr","\\leftarrow");J("\\lArr","\\Leftarrow");J("\\Larr","\\Leftarrow");J("\\lrarr","\\leftrightarrow");J("\\lrArr","\\Leftrightarrow");J("\\Lrarr","\\Leftrightarrow");J("\\Mu","\\mathrm{M}");J("\\natnums","\\mathbb{N}");J("\\Nu","\\mathrm{N}");J("\\Omicron","\\mathrm{O}");J("\\plusmn","\\pm");J("\\rarr","\\rightarrow");J("\\rArr","\\Rightarrow");J("\\Rarr","\\Rightarrow");J("\\real","\\Re");J("\\reals","\\mathbb{R}");J("\\Reals","\\mathbb{R}");J("\\Rho","\\mathrm{P}");J("\\sdot","\\cdot");J("\\sect","\\S");J("\\spades","\\spadesuit");J("\\sub","\\subset");J("\\sube","\\subseteq");J("\\supe","\\supseteq");J("\\Tau","\\mathrm{T}");J("\\thetasym","\\vartheta");J("\\weierp","\\wp");J("\\Zeta","\\mathrm{Z}");J("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");J("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");J("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");J("\\bra","\\mathinner{\\langle{#1}|}");J("\\ket","\\mathinner{|{#1}\\rangle}");J("\\braket","\\mathinner{\\langle{#1}\\rangle}");J("\\Bra","\\left\\langle#1\\right|");J("\\Ket","\\left|#1\\right\\rangle");var HU=t=>e=>{var n=e.consumeArg().tokens,r=e.consumeArg().tokens,s=e.consumeArg().tokens,i=e.consumeArg().tokens,a=e.macros.get("|"),l=e.macros.get("\\|");e.macros.beginGroup();var c=m=>g=>{t&&(g.macros.set("|",a),s.length&&g.macros.set("\\|",l));var x=m;if(!m&&s.length){var y=g.future();y.text==="|"&&(g.popToken(),x=!0)}return{tokens:x?s:r,numArgs:0}};e.macros.set("|",c(!1)),s.length&&e.macros.set("\\|",c(!0));var d=e.consumeArg().tokens,h=e.expandTokens([...i,...d,...n]);return e.macros.endGroup(),{tokens:h.reverse(),numArgs:0}};J("\\bra@ket",HU(!1));J("\\bra@set",HU(!0));J("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");J("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");J("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");J("\\angln","{\\angl n}");J("\\blue","\\textcolor{##6495ed}{#1}");J("\\orange","\\textcolor{##ffa500}{#1}");J("\\pink","\\textcolor{##ff00af}{#1}");J("\\red","\\textcolor{##df0030}{#1}");J("\\green","\\textcolor{##28ae7b}{#1}");J("\\gray","\\textcolor{gray}{#1}");J("\\purple","\\textcolor{##9d38bd}{#1}");J("\\blueA","\\textcolor{##ccfaff}{#1}");J("\\blueB","\\textcolor{##80f6ff}{#1}");J("\\blueC","\\textcolor{##63d9ea}{#1}");J("\\blueD","\\textcolor{##11accd}{#1}");J("\\blueE","\\textcolor{##0c7f99}{#1}");J("\\tealA","\\textcolor{##94fff5}{#1}");J("\\tealB","\\textcolor{##26edd5}{#1}");J("\\tealC","\\textcolor{##01d1c1}{#1}");J("\\tealD","\\textcolor{##01a995}{#1}");J("\\tealE","\\textcolor{##208170}{#1}");J("\\greenA","\\textcolor{##b6ffb0}{#1}");J("\\greenB","\\textcolor{##8af281}{#1}");J("\\greenC","\\textcolor{##74cf70}{#1}");J("\\greenD","\\textcolor{##1fab54}{#1}");J("\\greenE","\\textcolor{##0d923f}{#1}");J("\\goldA","\\textcolor{##ffd0a9}{#1}");J("\\goldB","\\textcolor{##ffbb71}{#1}");J("\\goldC","\\textcolor{##ff9c39}{#1}");J("\\goldD","\\textcolor{##e07d10}{#1}");J("\\goldE","\\textcolor{##a75a05}{#1}");J("\\redA","\\textcolor{##fca9a9}{#1}");J("\\redB","\\textcolor{##ff8482}{#1}");J("\\redC","\\textcolor{##f9685d}{#1}");J("\\redD","\\textcolor{##e84d39}{#1}");J("\\redE","\\textcolor{##bc2612}{#1}");J("\\maroonA","\\textcolor{##ffbde0}{#1}");J("\\maroonB","\\textcolor{##ff92c6}{#1}");J("\\maroonC","\\textcolor{##ed5fa6}{#1}");J("\\maroonD","\\textcolor{##ca337c}{#1}");J("\\maroonE","\\textcolor{##9e034e}{#1}");J("\\purpleA","\\textcolor{##ddd7ff}{#1}");J("\\purpleB","\\textcolor{##c6b9fc}{#1}");J("\\purpleC","\\textcolor{##aa87ff}{#1}");J("\\purpleD","\\textcolor{##7854ab}{#1}");J("\\purpleE","\\textcolor{##543b78}{#1}");J("\\mintA","\\textcolor{##f5f9e8}{#1}");J("\\mintB","\\textcolor{##edf2df}{#1}");J("\\mintC","\\textcolor{##e0e5cc}{#1}");J("\\grayA","\\textcolor{##f6f7f7}{#1}");J("\\grayB","\\textcolor{##f0f1f2}{#1}");J("\\grayC","\\textcolor{##e3e5e6}{#1}");J("\\grayD","\\textcolor{##d6d8da}{#1}");J("\\grayE","\\textcolor{##babec2}{#1}");J("\\grayF","\\textcolor{##888d93}{#1}");J("\\grayG","\\textcolor{##626569}{#1}");J("\\grayH","\\textcolor{##3b3e40}{#1}");J("\\grayI","\\textcolor{##21242c}{#1}");J("\\kaBlue","\\textcolor{##314453}{#1}");J("\\kaGreen","\\textcolor{##71B307}{#1}");var QU={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class kke{constructor(e,n,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=n,this.expansionCount=0,this.feed(e),this.macros=new wke(Ske,n.macros),this.mode=r,this.stack=[]}feed(e){this.lexer=new VR(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var n,r,s;if(e){if(this.consumeSpaces(),this.future().text!=="[")return null;n=this.popToken(),{tokens:s,end:r}=this.consumeArg(["]"])}else({tokens:s,start:n,end:r}=this.consumeArg());return this.pushToken(new Zi("EOF",r.loc)),this.pushTokens(s),new Zi("",xi.range(n,r))}consumeSpaces(){for(;;){var e=this.future();if(e.text===" ")this.stack.pop();else break}}consumeArg(e){var n=[],r=e&&e.length>0;r||this.consumeSpaces();var s=this.future(),i,a=0,l=0;do{if(i=this.popToken(),n.push(i),i.text==="{")++a;else if(i.text==="}"){if(--a,a===-1)throw new qe("Extra }",i)}else if(i.text==="EOF")throw new qe("Unexpected end of input in a macro argument, expected '"+(e&&r?e[l]:"}")+"'",i);if(e&&r)if((a===0||a===1&&e[l]==="{")&&i.text===e[l]){if(++l,l===e.length){n.splice(-l,l);break}}else l=0}while(a!==0||r);return s.text==="{"&&n[n.length-1].text==="}"&&(n.pop(),n.shift()),n.reverse(),{tokens:n,start:s,end:i}}consumeArgs(e,n){if(n){if(n.length!==e+1)throw new qe("The length of delimiters doesn't match the number of args!");for(var r=n[0],s=0;sthis.settings.maxExpand)throw new qe("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var n=this.popToken(),r=n.text,s=n.noexpand?null:this._getExpansion(r);if(s==null||e&&s.unexpandable){if(e&&s==null&&r[0]==="\\"&&!this.isDefined(r))throw new qe("Undefined control sequence: "+r);return this.pushToken(n),!1}this.countExpansion(1);var i=s.tokens,a=this.consumeArgs(s.numArgs,s.delimiters);if(s.numArgs){i=i.slice();for(var l=i.length-1;l>=0;--l){var c=i[l];if(c.text==="#"){if(l===0)throw new qe("Incomplete placeholder at end of macro body",c);if(c=i[--l],c.text==="#")i.splice(l+1,1);else if(/^[1-9]$/.test(c.text))i.splice(l,2,...a[+c.text-1]);else throw new qe("Not a valid argument number",c)}}}return this.pushTokens(i),i.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new Zi(e)]):void 0}expandTokens(e){var n=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;)if(this.expandOnce(!0)===!1){var s=this.stack.pop();s.treatAsRelax&&(s.noexpand=!1,s.treatAsRelax=!1),n.push(s)}return this.countExpansion(n.length),n}expandMacroAsText(e){var n=this.expandMacro(e);return n&&n.map(r=>r.text).join("")}_getExpansion(e){var n=this.macros.get(e);if(n==null)return n;if(e.length===1){var r=this.lexer.catcodes[e];if(r!=null&&r!==13)return}var s=typeof n=="function"?n(this):n;if(typeof s=="string"){var i=0;if(s.indexOf("#")!==-1)for(var a=s.replace(/##/g,"");a.indexOf("#"+(i+1))!==-1;)++i;for(var l=new VR(s,this.settings),c=[],d=l.lex();d.text!=="EOF";)c.push(d),d=l.lex();c.reverse();var h={tokens:c,numArgs:i};return h}return s}isDefined(e){return this.macros.has(e)||Qc.hasOwnProperty(e)||pr.math.hasOwnProperty(e)||pr.text.hasOwnProperty(e)||QU.hasOwnProperty(e)}isExpandable(e){var n=this.macros.get(e);return n!=null?typeof n=="string"||typeof n=="function"||!n.unexpandable:Qc.hasOwnProperty(e)&&!Qc[e].primitive}}var GR=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,Q1=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g",ʰ:"h","ⁱ":"i",ʲ:"j","ᵏ":"k",ˡ:"l","ᵐ":"m",ⁿ:"n","ᵒ":"o","ᵖ":"p",ʳ:"r",ˢ:"s","ᵗ":"t","ᵘ":"u","ᵛ":"v",ʷ:"w",ˣ:"x",ʸ:"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),c5={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},XR={á:"á",à:"à",ä:"ä",ǟ:"ǟ",ã:"ã",ā:"ā",ă:"ă",ắ:"ắ",ằ:"ằ",ẵ:"ẵ",ǎ:"ǎ",â:"â",ấ:"ấ",ầ:"ầ",ẫ:"ẫ",ȧ:"ȧ",ǡ:"ǡ",å:"å",ǻ:"ǻ",ḃ:"ḃ",ć:"ć",ḉ:"ḉ",č:"č",ĉ:"ĉ",ċ:"ċ",ç:"ç",ď:"ď",ḋ:"ḋ",ḑ:"ḑ",é:"é",è:"è",ë:"ë",ẽ:"ẽ",ē:"ē",ḗ:"ḗ",ḕ:"ḕ",ĕ:"ĕ",ḝ:"ḝ",ě:"ě",ê:"ê",ế:"ế",ề:"ề",ễ:"ễ",ė:"ė",ȩ:"ȩ",ḟ:"ḟ",ǵ:"ǵ",ḡ:"ḡ",ğ:"ğ",ǧ:"ǧ",ĝ:"ĝ",ġ:"ġ",ģ:"ģ",ḧ:"ḧ",ȟ:"ȟ",ĥ:"ĥ",ḣ:"ḣ",ḩ:"ḩ",í:"í",ì:"ì",ï:"ï",ḯ:"ḯ",ĩ:"ĩ",ī:"ī",ĭ:"ĭ",ǐ:"ǐ",î:"î",ǰ:"ǰ",ĵ:"ĵ",ḱ:"ḱ",ǩ:"ǩ",ķ:"ķ",ĺ:"ĺ",ľ:"ľ",ļ:"ļ",ḿ:"ḿ",ṁ:"ṁ",ń:"ń",ǹ:"ǹ",ñ:"ñ",ň:"ň",ṅ:"ṅ",ņ:"ņ",ó:"ó",ò:"ò",ö:"ö",ȫ:"ȫ",õ:"õ",ṍ:"ṍ",ṏ:"ṏ",ȭ:"ȭ",ō:"ō",ṓ:"ṓ",ṑ:"ṑ",ŏ:"ŏ",ǒ:"ǒ",ô:"ô",ố:"ố",ồ:"ồ",ỗ:"ỗ",ȯ:"ȯ",ȱ:"ȱ",ő:"ő",ṕ:"ṕ",ṗ:"ṗ",ŕ:"ŕ",ř:"ř",ṙ:"ṙ",ŗ:"ŗ",ś:"ś",ṥ:"ṥ",š:"š",ṧ:"ṧ",ŝ:"ŝ",ṡ:"ṡ",ş:"ş",ẗ:"ẗ",ť:"ť",ṫ:"ṫ",ţ:"ţ",ú:"ú",ù:"ù",ü:"ü",ǘ:"ǘ",ǜ:"ǜ",ǖ:"ǖ",ǚ:"ǚ",ũ:"ũ",ṹ:"ṹ",ū:"ū",ṻ:"ṻ",ŭ:"ŭ",ǔ:"ǔ",û:"û",ů:"ů",ű:"ű",ṽ:"ṽ",ẃ:"ẃ",ẁ:"ẁ",ẅ:"ẅ",ŵ:"ŵ",ẇ:"ẇ",ẘ:"ẘ",ẍ:"ẍ",ẋ:"ẋ",ý:"ý",ỳ:"ỳ",ÿ:"ÿ",ỹ:"ỹ",ȳ:"ȳ",ŷ:"ŷ",ẏ:"ẏ",ẙ:"ẙ",ź:"ź",ž:"ž",ẑ:"ẑ",ż:"ż",Á:"Á",À:"À",Ä:"Ä",Ǟ:"Ǟ",Ã:"Ã",Ā:"Ā",Ă:"Ă",Ắ:"Ắ",Ằ:"Ằ",Ẵ:"Ẵ",Ǎ:"Ǎ",Â:"Â",Ấ:"Ấ",Ầ:"Ầ",Ẫ:"Ẫ",Ȧ:"Ȧ",Ǡ:"Ǡ",Å:"Å",Ǻ:"Ǻ",Ḃ:"Ḃ",Ć:"Ć",Ḉ:"Ḉ",Č:"Č",Ĉ:"Ĉ",Ċ:"Ċ",Ç:"Ç",Ď:"Ď",Ḋ:"Ḋ",Ḑ:"Ḑ",É:"É",È:"È",Ë:"Ë",Ẽ:"Ẽ",Ē:"Ē",Ḗ:"Ḗ",Ḕ:"Ḕ",Ĕ:"Ĕ",Ḝ:"Ḝ",Ě:"Ě",Ê:"Ê",Ế:"Ế",Ề:"Ề",Ễ:"Ễ",Ė:"Ė",Ȩ:"Ȩ",Ḟ:"Ḟ",Ǵ:"Ǵ",Ḡ:"Ḡ",Ğ:"Ğ",Ǧ:"Ǧ",Ĝ:"Ĝ",Ġ:"Ġ",Ģ:"Ģ",Ḧ:"Ḧ",Ȟ:"Ȟ",Ĥ:"Ĥ",Ḣ:"Ḣ",Ḩ:"Ḩ",Í:"Í",Ì:"Ì",Ï:"Ï",Ḯ:"Ḯ",Ĩ:"Ĩ",Ī:"Ī",Ĭ:"Ĭ",Ǐ:"Ǐ",Î:"Î",İ:"İ",Ĵ:"Ĵ",Ḱ:"Ḱ",Ǩ:"Ǩ",Ķ:"Ķ",Ĺ:"Ĺ",Ľ:"Ľ",Ļ:"Ļ",Ḿ:"Ḿ",Ṁ:"Ṁ",Ń:"Ń",Ǹ:"Ǹ",Ñ:"Ñ",Ň:"Ň",Ṅ:"Ṅ",Ņ:"Ņ",Ó:"Ó",Ò:"Ò",Ö:"Ö",Ȫ:"Ȫ",Õ:"Õ",Ṍ:"Ṍ",Ṏ:"Ṏ",Ȭ:"Ȭ",Ō:"Ō",Ṓ:"Ṓ",Ṑ:"Ṑ",Ŏ:"Ŏ",Ǒ:"Ǒ",Ô:"Ô",Ố:"Ố",Ồ:"Ồ",Ỗ:"Ỗ",Ȯ:"Ȯ",Ȱ:"Ȱ",Ő:"Ő",Ṕ:"Ṕ",Ṗ:"Ṗ",Ŕ:"Ŕ",Ř:"Ř",Ṙ:"Ṙ",Ŗ:"Ŗ",Ś:"Ś",Ṥ:"Ṥ",Š:"Š",Ṧ:"Ṧ",Ŝ:"Ŝ",Ṡ:"Ṡ",Ş:"Ş",Ť:"Ť",Ṫ:"Ṫ",Ţ:"Ţ",Ú:"Ú",Ù:"Ù",Ü:"Ü",Ǘ:"Ǘ",Ǜ:"Ǜ",Ǖ:"Ǖ",Ǚ:"Ǚ",Ũ:"Ũ",Ṹ:"Ṹ",Ū:"Ū",Ṻ:"Ṻ",Ŭ:"Ŭ",Ǔ:"Ǔ",Û:"Û",Ů:"Ů",Ű:"Ű",Ṽ:"Ṽ",Ẃ:"Ẃ",Ẁ:"Ẁ",Ẅ:"Ẅ",Ŵ:"Ŵ",Ẇ:"Ẇ",Ẍ:"Ẍ",Ẋ:"Ẋ",Ý:"Ý",Ỳ:"Ỳ",Ÿ:"Ÿ",Ỹ:"Ỹ",Ȳ:"Ȳ",Ŷ:"Ŷ",Ẏ:"Ẏ",Ź:"Ź",Ž:"Ž",Ẑ:"Ẑ",Ż:"Ż",ά:"ά",ὰ:"ὰ",ᾱ:"ᾱ",ᾰ:"ᾰ",έ:"έ",ὲ:"ὲ",ή:"ή",ὴ:"ὴ",ί:"ί",ὶ:"ὶ",ϊ:"ϊ",ΐ:"ΐ",ῒ:"ῒ",ῑ:"ῑ",ῐ:"ῐ",ό:"ό",ὸ:"ὸ",ύ:"ύ",ὺ:"ὺ",ϋ:"ϋ",ΰ:"ΰ",ῢ:"ῢ",ῡ:"ῡ",ῠ:"ῠ",ώ:"ώ",ὼ:"ὼ",Ύ:"Ύ",Ὺ:"Ὺ",Ϋ:"Ϋ",Ῡ:"Ῡ",Ῠ:"Ῠ",Ώ:"Ώ",Ὼ:"Ὼ"};class Kb{constructor(e,n){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new kke(e,n,this.mode),this.settings=n,this.leftrightDepth=0}expect(e,n){if(n===void 0&&(n=!0),this.fetch().text!==e)throw new qe("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());n&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var n=this.nextToken;this.consume(),this.gullet.pushToken(new Zi("}")),this.gullet.pushTokens(e);var r=this.parseExpression(!1);return this.expect("}"),this.nextToken=n,r}parseExpression(e,n){for(var r=[];;){this.mode==="math"&&this.consumeSpaces();var s=this.fetch();if(Kb.endOfExpression.indexOf(s.text)!==-1||n&&s.text===n||e&&Qc[s.text]&&Qc[s.text].infix)break;var i=this.parseAtom(n);if(i){if(i.type==="internal")continue}else break;r.push(i)}return this.mode==="text"&&this.formLigatures(r),this.handleInfixNodes(r)}handleInfixNodes(e){for(var n=-1,r,s=0;s=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+n[0]+'" used in math mode',e);var l=pr[this.mode][n].group,c=xi.range(e),d;if(d3e.hasOwnProperty(l)){var h=l;d={type:"atom",mode:this.mode,family:h,loc:c,text:n}}else d={type:l,mode:this.mode,loc:c,text:n};a=d}else if(n.charCodeAt(0)>=128)this.settings.strict&&(JV(n.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+n[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+n[0]+'"'+(" ("+n.charCodeAt(0)+")"),e)),a={type:"textord",mode:"text",loc:xi.range(e),text:n};else return null;if(this.consume(),i)for(var m=0;md&&(d=h):h&&(d!==void 0&&d>-1&&c.push(` +`.repeat(d)||" "),d=-1,c.push(h))}return c.join("")}function KU(t,e,n){return t.type==="element"?eOe(t,e,n):t.type==="text"?n.whitespace==="normal"?ZU(t,n):tOe(t):[]}function eOe(t,e,n){const r=JU(t,n),s=t.children||[];let i=-1,a=[];if(Zke(t))return a;let l,c;for(KO(t)||sD(t)&&eD(e,t,sD)?c=` +`:Kke(t)?(l=2,c=2):YU(t)&&(l=1,c=1);++i{try{i(!0);const Oe=await dOe({page:a,page_size:h,is_registered:g==="all"?void 0:g==="registered",is_banned:y==="all"?void 0:y==="banned",format:S==="all"?void 0:S,sort_by:j,sort_order:T});e(Oe.data),d(Oe.total)}catch(Oe){const Ve=Oe instanceof Error?Oe.message:"加载表情包列表失败";X({title:"错误",description:Ve,variant:"destructive"})}finally{i(!1)}},[a,h,g,y,S,j,T,X]),U=async()=>{try{const Oe=await pOe();r(Oe.data)}catch(Oe){console.error("加载统计数据失败:",Oe)}};b.useEffect(()=>{z()},[z]),b.useEffect(()=>{U()},[]);const te=async Oe=>{try{const Ve=await hOe(Oe.id);A(Ve.data),q(!0)}catch(Ve){const Ue=Ve instanceof Error?Ve.message:"加载详情失败";X({title:"错误",description:Ue,variant:"destructive"})}},ne=Oe=>{A(Oe),H(!0)},G=Oe=>{A(Oe),ee(!0)},se=async()=>{if(_)try{await mOe(_.id),X({title:"成功",description:"表情包已删除"}),ee(!1),A(null),z(),U()}catch(Oe){const Ve=Oe instanceof Error?Oe.message:"删除失败";X({title:"错误",description:Ve,variant:"destructive"})}},re=async Oe=>{try{await gOe(Oe.id),X({title:"成功",description:"表情包已注册"}),z(),U()}catch(Ve){const Ue=Ve instanceof Error?Ve.message:"注册失败";X({title:"错误",description:Ue,variant:"destructive"})}},ae=async Oe=>{try{await xOe(Oe.id),X({title:"成功",description:"表情包已封禁"}),z(),U()}catch(Ve){const Ue=Ve instanceof Error?Ve.message:"封禁失败";X({title:"错误",description:Ue,variant:"destructive"})}},_e=Oe=>{const Ve=new Set(I);Ve.has(Oe)?Ve.delete(Oe):Ve.add(Oe),V(Ve)},Be=async()=>{try{const Oe=await vOe(Array.from(I));X({title:"批量删除完成",description:Oe.message}),V(new Set),$(!1),z(),U()}catch(Oe){X({title:"批量删除失败",description:Oe instanceof Error?Oe.message:"批量删除失败",variant:"destructive"})}},Ye=()=>{const Oe=parseInt(K),Ve=Math.ceil(c/h);Oe>=1&&Oe<=Ve?(l(Oe),Y("")):X({title:"无效的页码",description:`请输入1-${Ve}之间的页码`,variant:"destructive"})},Je=n?.formats?Object.keys(n.formats):[];return o.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[o.jsxs("div",{className:"mb-4 sm:mb-6",children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"表情包管理"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理麦麦的表情包资源"})]}),o.jsx(pn,{className:"flex-1",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[n&&o.jsxs("div",{className:"grid gap-4 grid-cols-2 lg:grid-cols-4",children:[o.jsx(Lt,{children:o.jsxs(En,{className:"pb-2",children:[o.jsx(Wr,{children:"总数"}),o.jsx(_n,{className:"text-2xl",children:n.total})]})}),o.jsx(Lt,{children:o.jsxs(En,{className:"pb-2",children:[o.jsx(Wr,{children:"已注册"}),o.jsx(_n,{className:"text-2xl text-green-600",children:n.registered})]})}),o.jsx(Lt,{children:o.jsxs(En,{className:"pb-2",children:[o.jsx(Wr,{children:"已封禁"}),o.jsx(_n,{className:"text-2xl text-red-600",children:n.banned})]})}),o.jsx(Lt,{children:o.jsxs(En,{className:"pb-2",children:[o.jsx(Wr,{children:"未注册"}),o.jsx(_n,{className:"text-2xl text-gray-600",children:n.unregistered})]})})]}),o.jsxs(Lt,{children:[o.jsx(En,{children:o.jsxs(_n,{className:"flex items-center gap-2",children:[o.jsx(ok,{className:"h-5 w-5"}),"筛选和排序"]})}),o.jsxs(Xn,{className:"space-y-4",children:[o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:"排序方式"}),o.jsxs(Vt,{value:`${j}-${T}`,onValueChange:Oe=>{const[Ve,Ue]=Oe.split("-");N(Ve),E(Ue),l(1)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"usage_count-desc",children:"使用次数 (多→少)"}),o.jsx(De,{value:"usage_count-asc",children:"使用次数 (少→多)"}),o.jsx(De,{value:"register_time-desc",children:"注册时间 (新→旧)"}),o.jsx(De,{value:"register_time-asc",children:"注册时间 (旧→新)"}),o.jsx(De,{value:"record_time-desc",children:"记录时间 (新→旧)"}),o.jsx(De,{value:"record_time-asc",children:"记录时间 (旧→新)"}),o.jsx(De,{value:"last_used_time-desc",children:"最后使用 (新→旧)"}),o.jsx(De,{value:"last_used_time-asc",children:"最后使用 (旧→新)"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:"注册状态"}),o.jsxs(Vt,{value:g,onValueChange:Oe=>{x(Oe),l(1)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部"}),o.jsx(De,{value:"registered",children:"已注册"}),o.jsx(De,{value:"unregistered",children:"未注册"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:"封禁状态"}),o.jsxs(Vt,{value:y,onValueChange:Oe=>{w(Oe),l(1)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部"}),o.jsx(De,{value:"banned",children:"已封禁"}),o.jsx(De,{value:"unbanned",children:"未封禁"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:"格式"}),o.jsxs(Vt,{value:S,onValueChange:Oe=>{k(Oe),l(1)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部"}),Je.map(Oe=>o.jsxs(De,{value:Oe,children:[Oe.toUpperCase()," (",n?.formats[Oe],")"]},Oe))]})]})]})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 pt-4 border-t",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[I.size>0&&o.jsxs("span",{className:"text-sm text-muted-foreground",children:["已选择 ",I.size," 个表情包"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{className:"text-sm whitespace-nowrap",children:"卡片大小"}),o.jsxs(Vt,{value:R,onValueChange:Oe=>ie(Oe),children:[o.jsx($t,{className:"w-24",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"small",children:"小"}),o.jsx(De,{value:"medium",children:"中"}),o.jsx(De,{value:"large",children:"大"})]})]})]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{htmlFor:"emoji-page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:h.toString(),onValueChange:Oe=>{m(parseInt(Oe)),l(1),V(new Set)},children:[o.jsx($t,{id:"emoji-page-size",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"40",children:"40"}),o.jsx(De,{value:"60",children:"60"}),o.jsx(De,{value:"100",children:"100"})]})]}),I.size>0&&o.jsxs(o.Fragment,{children:[o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>V(new Set),children:"取消选择"}),o.jsxs(ue,{variant:"destructive",size:"sm",onClick:()=>$(!0),children:[o.jsx(Cn,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]}),o.jsx("div",{className:"flex justify-end pt-4 border-t",children:o.jsxs(ue,{variant:"outline",size:"sm",onClick:z,disabled:s,children:[o.jsx(Qs,{className:`h-4 w-4 mr-2 ${s?"animate-spin":""}`}),"刷新"]})})]})]}),o.jsxs(Lt,{children:[o.jsxs(En,{children:[o.jsx(_n,{children:"表情包列表"}),o.jsxs(Wr,{children:["共 ",c," 个表情包,当前第 ",a," 页"]})]}),o.jsxs(Xn,{children:[t.length===0?o.jsx("div",{className:"text-center py-12 text-muted-foreground",children:"暂无数据"}):o.jsx("div",{className:`grid gap-3 ${R==="small"?"grid-cols-3 sm:grid-cols-4 md:grid-cols-6 lg:grid-cols-8 xl:grid-cols-10":R==="medium"?"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 xl:grid-cols-8":"grid-cols-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5"}`,children:t.map(Oe=>o.jsxs("div",{className:`group relative rounded-lg border bg-card overflow-hidden hover:ring-2 hover:ring-primary transition-all cursor-pointer ${I.has(Oe.id)?"ring-2 ring-primary bg-primary/5":""}`,onClick:()=>_e(Oe.id),children:[o.jsx("div",{className:`absolute top-1 left-1 z-10 transition-opacity ${I.has(Oe.id)?"opacity-100":"opacity-0 group-hover:opacity-100"}`,children:o.jsx("div",{className:`w-5 h-5 rounded-full border-2 flex items-center justify-center ${I.has(Oe.id)?"bg-primary border-primary text-primary-foreground":"bg-background/80 border-muted-foreground/50"}`,children:I.has(Oe.id)&&o.jsx(Ya,{className:"h-3 w-3"})})}),o.jsxs("div",{className:"absolute top-1 right-1 z-10 flex flex-col gap-0.5",children:[Oe.is_registered&&o.jsx(tn,{variant:"default",className:"bg-green-600 text-[10px] px-1 py-0",children:"已注册"}),Oe.is_banned&&o.jsx(tn,{variant:"destructive",className:"text-[10px] px-1 py-0",children:"已封禁"})]}),o.jsx("div",{className:`aspect-square bg-muted flex items-center justify-center overflow-hidden ${R==="small"?"p-1":R==="medium"?"p-2":"p-3"}`,children:o.jsx("img",{src:eW(Oe.id),alt:"表情包",className:"w-full h-full object-contain",loading:"lazy",onError:Ve=>{const Ue=Ve.target;Ue.style.display="none";const $e=Ue.parentElement;$e&&($e.innerHTML='')}})}),o.jsxs("div",{className:`border-t bg-card ${R==="small"?"p-1":"p-2"}`,children:[o.jsxs("div",{className:"flex items-center justify-between gap-1 text-xs text-muted-foreground mb-1",children:[o.jsx(tn,{variant:"outline",className:"text-[10px] px-1 py-0",children:Oe.format.toUpperCase()}),o.jsxs("span",{className:"font-mono",children:[Oe.usage_count,"次"]})]}),o.jsxs("div",{className:`flex gap-1 justify-center opacity-0 group-hover:opacity-100 transition-opacity ${R==="small"?"flex-wrap":""}`,children:[o.jsx(ue,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:Ve=>{Ve.stopPropagation(),ne(Oe)},title:"编辑",children:o.jsx(F0,{className:"h-3 w-3"})}),o.jsx(ue,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:Ve=>{Ve.stopPropagation(),te(Oe)},title:"详情",children:o.jsx(Xi,{className:"h-3 w-3"})}),!Oe.is_registered&&o.jsx(ue,{variant:"ghost",size:"icon",className:"h-6 w-6 text-green-600 hover:text-green-700",onClick:Ve=>{Ve.stopPropagation(),re(Oe)},title:"注册",children:o.jsx(Ya,{className:"h-3 w-3"})}),!Oe.is_banned&&o.jsx(ue,{variant:"ghost",size:"icon",className:"h-6 w-6 text-orange-600 hover:text-orange-700",onClick:Ve=>{Ve.stopPropagation(),ae(Oe)},title:"封禁",children:o.jsx(tte,{className:"h-3 w-3"})}),o.jsx(ue,{variant:"ghost",size:"icon",className:"h-6 w-6 text-red-600 hover:text-red-700",onClick:Ve=>{Ve.stopPropagation(),G(Oe)},title:"删除",children:o.jsx(Cn,{className:"h-3 w-3"})})]})]})]},Oe.id))}),c>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[o.jsxs("div",{className:"text-sm text-muted-foreground",children:["显示 ",(a-1)*h+1," 到"," ",Math.min(a*h,c)," 条,共 ",c," 条"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>l(1),disabled:a===1,className:"hidden sm:flex",children:o.jsx(Ip,{className:"h-4 w-4"})}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>l(Oe=>Math.max(1,Oe-1)),disabled:a===1,children:[o.jsx(wd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Pe,{type:"number",value:K,onChange:Oe=>Y(Oe.target.value),onKeyDown:Oe=>Oe.key==="Enter"&&Ye(),placeholder:a.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(c/h)}),o.jsx(ue,{variant:"outline",size:"sm",onClick:Ye,disabled:!K,className:"h-8",children:"跳转"})]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>l(Oe=>Oe+1),disabled:a>=Math.ceil(c/h),children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(Zl,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>l(Math.ceil(c/h)),disabled:a>=Math.ceil(c/h),className:"hidden sm:flex",children:o.jsx(Lp,{className:"h-4 w-4"})})]})]})]})]}),o.jsx(bOe,{emoji:_,open:D,onOpenChange:q}),o.jsx(wOe,{emoji:_,open:B,onOpenChange:H,onSuccess:()=>{z(),U()}})]})}),o.jsx(Fn,{open:L,onOpenChange:$,children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认批量删除"}),o.jsxs(zn,{children:["你确定要删除选中的 ",I.size," 个表情包吗?此操作不可撤销。"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:Be,children:"确认删除"})]})]})}),o.jsx(Er,{open:W,onOpenChange:ee,children:o.jsxs(wr,{children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"确认删除"}),o.jsx(Xr,{children:"确定要删除这个表情包吗?此操作无法撤销。"})]}),o.jsxs(fs,{children:[o.jsx(ue,{variant:"outline",onClick:()=>ee(!1),children:"取消"}),o.jsx(ue,{variant:"destructive",onClick:se,children:"删除"})]})]})})]})}function bOe({emoji:t,open:e,onOpenChange:n}){if(!t)return null;const r=s=>s?new Date(s*1e3).toLocaleString("zh-CN"):"-";return o.jsx(Er,{open:e,onOpenChange:n,children:o.jsxs(wr,{className:"max-w-2xl max-h-[90vh]",children:[o.jsx(Sr,{children:o.jsx(kr,{children:"表情包详情"})}),o.jsx(pn,{className:"max-h-[calc(90vh-8rem)] pr-4",children:o.jsxs("div",{className:"space-y-4",children:[o.jsx("div",{className:"flex justify-center",children:o.jsx("div",{className:"w-32 h-32 bg-muted rounded-lg flex items-center justify-center overflow-hidden",children:o.jsx("img",{src:eW(t.id),alt:t.description||"表情包",className:"w-full h-full object-cover",onError:s=>{const i=s.target;i.style.display="none";const a=i.parentElement;a&&(a.innerHTML='')}})})}),o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"ID"}),o.jsx("div",{className:"mt-1 font-mono",children:t.id})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"格式"}),o.jsx("div",{className:"mt-1",children:o.jsx(tn,{variant:"outline",children:t.format.toUpperCase()})})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"文件路径"}),o.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:t.full_path})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"哈希值"}),o.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:t.emoji_hash})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"描述"}),t.description?o.jsx("div",{className:"mt-1 rounded-lg border bg-muted/50 p-3",children:o.jsx(uOe,{className:"prose-sm",children:t.description})}):o.jsx("div",{className:"mt-1 text-sm text-muted-foreground",children:"-"})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"情绪"}),o.jsx("div",{className:"mt-1",children:t.emotion?o.jsx("span",{className:"text-sm",children:t.emotion}):o.jsx("span",{className:"text-sm text-muted-foreground",children:"-"})})]}),o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"状态"}),o.jsxs("div",{className:"mt-2 flex gap-2",children:[t.is_registered&&o.jsx(tn,{variant:"default",className:"bg-green-600",children:"已注册"}),t.is_banned&&o.jsx(tn,{variant:"destructive",children:"已封禁"}),!t.is_registered&&!t.is_banned&&o.jsx(tn,{variant:"outline",children:"未注册"})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"使用次数"}),o.jsx("div",{className:"mt-1 font-mono text-lg",children:t.usage_count})]})]}),o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"记录时间"}),o.jsx("div",{className:"mt-1 text-sm",children:r(t.record_time)})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"注册时间"}),o.jsx("div",{className:"mt-1 text-sm",children:r(t.register_time)})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"最后使用"}),o.jsx("div",{className:"mt-1 text-sm",children:r(t.last_used_time)})]})]})})]})})}function wOe({emoji:t,open:e,onOpenChange:n,onSuccess:r}){const[s,i]=b.useState(""),[a,l]=b.useState(!1),[c,d]=b.useState(!1),[h,m]=b.useState(!1),{toast:g}=Lr();b.useEffect(()=>{t&&(i(t.emotion||""),l(t.is_registered),d(t.is_banned))},[t]);const x=async()=>{if(t)try{m(!0);const y=s.split(/[,,]/).map(w=>w.trim()).filter(Boolean).join(",");await fOe(t.id,{emotion:y||void 0,is_registered:a,is_banned:c}),g({title:"成功",description:"表情包信息已更新"}),n(!1),r()}catch(y){const w=y instanceof Error?y.message:"保存失败";g({title:"错误",description:w,variant:"destructive"})}finally{m(!1)}};return t?o.jsx(Er,{open:e,onOpenChange:n,children:o.jsxs(wr,{className:"max-w-2xl",children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"编辑表情包"}),o.jsx(Xr,{children:"修改表情包的情绪和状态信息"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{children:[o.jsx(he,{children:"情绪"}),o.jsx(Nr,{value:s,onChange:y=>i(y.target.value),placeholder:"输入情绪描述...",rows:2,className:"mt-1"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"输入情绪相关的文本描述"})]}),o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ci,{id:"is_registered",checked:a,onCheckedChange:y=>{y===!0?(l(!0),d(!1)):l(!1)}}),o.jsx(he,{htmlFor:"is_registered",className:"cursor-pointer",children:"已注册"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ci,{id:"is_banned",checked:c,onCheckedChange:y=>{y===!0?(d(!0),l(!1)):d(!1)}}),o.jsx(he,{htmlFor:"is_banned",className:"cursor-pointer",children:"已封禁"})]})]})]}),o.jsxs(fs,{children:[o.jsx(ue,{variant:"outline",onClick:()=>n(!1),children:"取消"}),o.jsx(ue,{onClick:x,disabled:h,children:h?"保存中...":"保存"})]})]})}):null}const pu="/api/webui/expression";async function SOe(){const t=await gt(`${pu}/chats`,{headers:Tt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取聊天列表失败")}return t.json()}async function kOe(t){const e=new URLSearchParams;t.page&&e.append("page",t.page.toString()),t.page_size&&e.append("page_size",t.page_size.toString()),t.search&&e.append("search",t.search),t.chat_id&&e.append("chat_id",t.chat_id);const n=await gt(`${pu}/list?${e}`,{headers:Tt()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取表达方式列表失败")}return n.json()}async function OOe(t){const e=await gt(`${pu}/${t}`,{headers:Tt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"获取表达方式详情失败")}return e.json()}async function jOe(t){const e=await gt(`${pu}/`,{method:"POST",headers:Tt(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"创建表达方式失败")}return e.json()}async function NOe(t,e){const n=await gt(`${pu}/${t}`,{method:"PATCH",headers:Tt(),body:JSON.stringify(e)});if(!n.ok){const r=await n.json();throw new Error(r.detail||"更新表达方式失败")}return n.json()}async function COe(t){const e=await gt(`${pu}/${t}`,{method:"DELETE",headers:Tt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"删除表达方式失败")}return e.json()}async function TOe(t){const e=await gt(`${pu}/batch/delete`,{method:"POST",headers:Tt(),body:JSON.stringify({ids:t})});if(!e.ok){const n=await e.json();throw new Error(n.detail||"批量删除表达方式失败")}return e.json()}async function EOe(){const t=await gt(`${pu}/stats/summary`,{headers:Tt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取统计数据失败")}return t.json()}function _Oe(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[s,i]=b.useState(0),[a,l]=b.useState(1),[c,d]=b.useState(20),[h,m]=b.useState(""),[g,x]=b.useState(null),[y,w]=b.useState(!1),[S,k]=b.useState(!1),[j,N]=b.useState(!1),[T,E]=b.useState(null),[_,A]=b.useState(new Set),[D,q]=b.useState(!1),[B,H]=b.useState(""),[W,ee]=b.useState({total:0,recent_7days:0,chat_count:0,top_chats:{}}),[I,V]=b.useState([]),[L,$]=b.useState(new Map),{toast:K}=Lr(),Y=async()=>{try{r(!0);const ae=await kOe({page:a,page_size:c,search:h||void 0});e(ae.data),i(ae.total)}catch(ae){K({title:"加载失败",description:ae instanceof Error?ae.message:"无法加载表达方式",variant:"destructive"})}finally{r(!1)}},R=async()=>{try{const ae=await EOe();ae?.data&&ee(ae.data)}catch(ae){console.error("加载统计数据失败:",ae)}},ie=async()=>{try{const ae=await SOe();if(ae?.data){V(ae.data);const _e=new Map;ae.data.forEach(Be=>{_e.set(Be.chat_id,Be.chat_name)}),$(_e)}}catch(ae){console.error("加载聊天列表失败:",ae)}},X=ae=>L.get(ae)||ae;b.useEffect(()=>{Y(),R(),ie()},[a,c,h]);const z=async ae=>{try{const _e=await OOe(ae.id);x(_e.data),w(!0)}catch(_e){K({title:"加载详情失败",description:_e instanceof Error?_e.message:"无法加载表达方式详情",variant:"destructive"})}},U=ae=>{x(ae),k(!0)},te=async ae=>{try{await COe(ae.id),K({title:"删除成功",description:`已删除表达方式: ${ae.situation}`}),E(null),Y(),R()}catch(_e){K({title:"删除失败",description:_e instanceof Error?_e.message:"无法删除表达方式",variant:"destructive"})}},ne=ae=>{const _e=new Set(_);_e.has(ae)?_e.delete(ae):_e.add(ae),A(_e)},G=()=>{_.size===t.length&&t.length>0?A(new Set):A(new Set(t.map(ae=>ae.id)))},se=async()=>{try{await TOe(Array.from(_)),K({title:"批量删除成功",description:`已删除 ${_.size} 个表达方式`}),A(new Set),q(!1),Y(),R()}catch(ae){K({title:"批量删除失败",description:ae instanceof Error?ae.message:"无法批量删除表达方式",variant:"destructive"})}},re=()=>{const ae=parseInt(B),_e=Math.ceil(s/c);ae>=1&&ae<=_e?(l(ae),H("")):K({title:"无效的页码",description:`请输入1-${_e}之间的页码`,variant:"destructive"})};return o.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[o.jsx("div",{className:"mb-4 sm:mb-6",children:o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[o.jsx(Gh,{className:"h-8 w-8",strokeWidth:2}),"表达方式管理"]}),o.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦的表达方式和话术模板"})]}),o.jsxs(ue,{onClick:()=>N(!0),className:"gap-2",children:[o.jsx(Is,{className:"h-4 w-4"}),"新增表达方式"]})]})}),o.jsx(pn,{className:"flex-1",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"总数量"}),o.jsx("div",{className:"text-2xl font-bold mt-1",children:W.total})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"近7天新增"}),o.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:W.recent_7days})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"关联聊天数"}),o.jsx("div",{className:"text-2xl font-bold mt-1 text-blue-600",children:W.chat_count})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx(he,{htmlFor:"search",children:"搜索"}),o.jsx("div",{className:"flex flex-col sm:flex-row gap-2 mt-1.5",children:o.jsxs("div",{className:"flex-1 relative",children:[o.jsx(ii,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),o.jsx(Pe,{id:"search",placeholder:"搜索情境、风格或上下文...",value:h,onChange:ae=>m(ae.target.value),className:"pl-9"})]})}),o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[o.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:_.size>0&&o.jsxs("span",{children:["已选择 ",_.size," 个表达方式"]})}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:c.toString(),onValueChange:ae=>{d(parseInt(ae)),l(1),A(new Set)},children:[o.jsx($t,{id:"page-size",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"10",children:"10"}),o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"50",children:"50"}),o.jsx(De,{value:"100",children:"100"})]})]}),_.size>0&&o.jsxs(o.Fragment,{children:[o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>A(new Set),children:"取消选择"}),o.jsxs(ue,{variant:"destructive",size:"sm",onClick:()=>q(!0),children:[o.jsx(Cn,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card",children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(Af,{children:[o.jsx(Mf,{children:o.jsxs(zs,{children:[o.jsx(mn,{className:"w-12",children:o.jsx(Ci,{checked:_.size===t.length&&t.length>0,onCheckedChange:G})}),o.jsx(mn,{children:"情境"}),o.jsx(mn,{children:"风格"}),o.jsx(mn,{children:"聊天"}),o.jsx(mn,{className:"text-right",children:"操作"})]})}),o.jsx(Rf,{children:n?o.jsx(zs,{children:o.jsx(Yt,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):t.length===0?o.jsx(zs,{children:o.jsx(Yt,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):t.map(ae=>o.jsxs(zs,{children:[o.jsx(Yt,{children:o.jsx(Ci,{checked:_.has(ae.id),onCheckedChange:()=>ne(ae.id)})}),o.jsx(Yt,{className:"font-medium max-w-xs truncate",children:ae.situation}),o.jsx(Yt,{className:"max-w-xs truncate",children:ae.style}),o.jsx(Yt,{className:"max-w-[200px] truncate",title:X(ae.chat_id),style:{wordBreak:"keep-all"},children:o.jsx("span",{className:"whitespace-nowrap overflow-hidden text-ellipsis block",children:X(ae.chat_id)})}),o.jsx(Yt,{className:"text-right",children:o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsxs(ue,{variant:"default",size:"sm",onClick:()=>U(ae),children:[o.jsx(F0,{className:"h-4 w-4 mr-1"}),"编辑"]}),o.jsx(ue,{variant:"outline",size:"icon",className:"h-8 w-8",onClick:()=>z(ae),title:"查看详情",children:o.jsx(Ji,{className:"h-4 w-4"})}),o.jsxs(ue,{size:"sm",onClick:()=>E(ae),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Cn,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},ae.id))})]})}),o.jsx("div",{className:"md:hidden space-y-3 p-4",children:n?o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):t.length===0?o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):t.map(ae=>o.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Ci,{checked:_.has(ae.id),onCheckedChange:()=>ne(ae.id),className:"mt-1"}),o.jsxs("div",{className:"min-w-0 flex-1 overflow-hidden space-y-2",children:[o.jsxs("div",{children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"情境"}),o.jsx("h3",{className:"font-semibold text-sm line-clamp-2 w-full break-all",title:ae.situation,children:ae.situation})]}),o.jsxs("div",{children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"风格"}),o.jsx("p",{className:"text-sm line-clamp-2 w-full break-all",title:ae.style,children:ae.style})]})]})]}),o.jsxs("div",{className:"text-sm",children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"聊天"}),o.jsx("p",{className:"text-sm truncate",title:X(ae.chat_id),style:{wordBreak:"keep-all"},children:X(ae.chat_id)})]}),o.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>U(ae),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[o.jsx(F0,{className:"h-3 w-3 mr-1"}),"编辑"]}),o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>z(ae),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:o.jsx(Ji,{className:"h-3 w-3"})}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>E(ae),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[o.jsx(Cn,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},ae.id))}),s>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[o.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",s," 条记录,第 ",a," / ",Math.ceil(s/c)," 页"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>l(1),disabled:a===1,className:"hidden sm:flex",children:o.jsx(Ip,{className:"h-4 w-4"})}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>l(a-1),disabled:a===1,children:[o.jsx(wd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Pe,{type:"number",value:B,onChange:ae=>H(ae.target.value),onKeyDown:ae=>ae.key==="Enter"&&re(),placeholder:a.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(s/c)}),o.jsx(ue,{variant:"outline",size:"sm",onClick:re,disabled:!B,className:"h-8",children:"跳转"})]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>l(a+1),disabled:a>=Math.ceil(s/c),children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(Zl,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>l(Math.ceil(s/c)),disabled:a>=Math.ceil(s/c),className:"hidden sm:flex",children:o.jsx(Lp,{className:"h-4 w-4"})})]})]})]})]})}),o.jsx(AOe,{expression:g,open:y,onOpenChange:w,chatNameMap:L}),o.jsx(MOe,{open:j,onOpenChange:N,chatList:I,onSuccess:()=>{Y(),R(),N(!1)}}),o.jsx(ROe,{expression:g,open:S,onOpenChange:k,chatList:I,onSuccess:()=>{Y(),R(),k(!1)}}),o.jsx(Fn,{open:!!T,onOpenChange:()=>E(null),children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:['确定要删除表达方式 "',T?.situation,'" 吗? 此操作不可撤销。']})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>T&&te(T),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),o.jsx(DOe,{open:D,onOpenChange:q,onConfirm:se,count:_.size})]})}function AOe({expression:t,open:e,onOpenChange:n,chatNameMap:r}){if(!t)return null;const s=a=>a?new Date(a*1e3).toLocaleString("zh-CN"):"-",i=a=>r.get(a)||a;return o.jsx(Er,{open:e,onOpenChange:n,children:o.jsxs(wr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"表达方式详情"}),o.jsx(Xr,{children:"查看表达方式的完整信息"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsx(t0,{label:"情境",value:t.situation}),o.jsx(t0,{label:"风格",value:t.style}),o.jsx(t0,{label:"聊天",value:i(t.chat_id)}),o.jsx(t0,{icon:lk,label:"记录ID",value:t.id.toString(),mono:!0})]}),o.jsx("div",{className:"grid grid-cols-2 gap-4",children:o.jsx(t0,{icon:Mh,label:"创建时间",value:s(t.create_date)})})]}),o.jsx(fs,{children:o.jsx(ue,{onClick:()=>n(!1),children:"关闭"})})]})})}function t0({icon:t,label:e,value:n,mono:r=!1}){return o.jsxs("div",{className:"space-y-1",children:[o.jsxs(he,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[t&&o.jsx(t,{className:"h-3 w-3"}),e]}),o.jsx("div",{className:xe("text-sm",r&&"font-mono",!n&&"text-muted-foreground"),children:n||"-"})]})}function MOe({open:t,onOpenChange:e,chatList:n,onSuccess:r}){const[s,i]=b.useState({situation:"",style:"",chat_id:""}),[a,l]=b.useState(!1),{toast:c}=Lr(),d=async()=>{if(!s.situation||!s.style||!s.chat_id){c({title:"验证失败",description:"请填写必填字段:情境、风格和聊天",variant:"destructive"});return}try{l(!0),await jOe(s),c({title:"创建成功",description:"表达方式已创建"}),i({situation:"",style:"",chat_id:""}),r()}catch(h){c({title:"创建失败",description:h instanceof Error?h.message:"无法创建表达方式",variant:"destructive"})}finally{l(!1)}};return o.jsx(Er,{open:t,onOpenChange:e,children:o.jsxs(wr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"新增表达方式"}),o.jsx(Xr,{children:"创建新的表达方式记录"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsxs(he,{htmlFor:"situation",children:["情境 ",o.jsx("span",{className:"text-destructive",children:"*"})]}),o.jsx(Pe,{id:"situation",value:s.situation,onChange:h=>i({...s,situation:h.target.value}),placeholder:"描述使用场景"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs(he,{htmlFor:"style",children:["风格 ",o.jsx("span",{className:"text-destructive",children:"*"})]}),o.jsx(Pe,{id:"style",value:s.style,onChange:h=>i({...s,style:h.target.value}),placeholder:"描述表达风格"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs(he,{htmlFor:"chat_id",children:["聊天 ",o.jsx("span",{className:"text-destructive",children:"*"})]}),o.jsxs(Vt,{value:s.chat_id,onValueChange:h=>i({...s,chat_id:h}),children:[o.jsx($t,{children:o.jsx(Ut,{placeholder:"选择关联的聊天"})}),o.jsx(Ht,{children:n.map(h=>o.jsx(De,{value:h.chat_id,children:o.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[h.chat_name,h.is_group&&o.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},h.chat_id))})]})]})]}),o.jsxs(fs,{children:[o.jsx(ue,{variant:"outline",onClick:()=>e(!1),children:"取消"}),o.jsx(ue,{onClick:d,disabled:a,children:a?"创建中...":"创建"})]})]})})}function ROe({expression:t,open:e,onOpenChange:n,chatList:r,onSuccess:s}){const[i,a]=b.useState({}),[l,c]=b.useState(!1),{toast:d}=Lr();b.useEffect(()=>{t&&a({situation:t.situation,style:t.style,chat_id:t.chat_id})},[t]);const h=async()=>{if(t)try{c(!0),await NOe(t.id,i),d({title:"保存成功",description:"表达方式已更新"}),s()}catch(m){d({title:"保存失败",description:m instanceof Error?m.message:"无法更新表达方式",variant:"destructive"})}finally{c(!1)}};return t?o.jsx(Er,{open:e,onOpenChange:n,children:o.jsxs(wr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"编辑表达方式"}),o.jsx(Xr,{children:"修改表达方式的信息"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit_situation",children:"情境"}),o.jsx(Pe,{id:"edit_situation",value:i.situation||"",onChange:m=>a({...i,situation:m.target.value}),placeholder:"描述使用场景"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit_style",children:"风格"}),o.jsx(Pe,{id:"edit_style",value:i.style||"",onChange:m=>a({...i,style:m.target.value}),placeholder:"描述表达风格"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit_chat_id",children:"聊天"}),o.jsxs(Vt,{value:i.chat_id||"",onValueChange:m=>a({...i,chat_id:m}),children:[o.jsx($t,{children:o.jsx(Ut,{placeholder:"选择关联的聊天"})}),o.jsx(Ht,{children:r.map(m=>o.jsx(De,{value:m.chat_id,children:o.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[m.chat_name,m.is_group&&o.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},m.chat_id))})]})]})]}),o.jsxs(fs,{children:[o.jsx(ue,{variant:"outline",onClick:()=>n(!1),children:"取消"}),o.jsx(ue,{onClick:h,disabled:l,children:l?"保存中...":"保存"})]})]})}):null}function DOe({open:t,onOpenChange:e,onConfirm:n,count:r}){return o.jsx(Fn,{open:t,onOpenChange:e,children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认批量删除"}),o.jsxs(zn,{children:["您即将删除 ",r," 个表达方式,此操作无法撤销。确定要继续吗?"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:n,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认删除"})]})]})})}const Qf="/api/webui/person";async function POe(t){const e=new URLSearchParams;t.page&&e.append("page",t.page.toString()),t.page_size&&e.append("page_size",t.page_size.toString()),t.search&&e.append("search",t.search),t.is_known!==void 0&&e.append("is_known",t.is_known.toString()),t.platform&&e.append("platform",t.platform);const n=await gt(`${Qf}/list?${e}`,{headers:Tt()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取人物列表失败")}return n.json()}async function zOe(t){const e=await gt(`${Qf}/${t}`,{headers:Tt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"获取人物详情失败")}return e.json()}async function IOe(t,e){const n=await gt(`${Qf}/${t}`,{method:"PATCH",headers:Tt(),body:JSON.stringify(e)});if(!n.ok){const r=await n.json();throw new Error(r.detail||"更新人物信息失败")}return n.json()}async function LOe(t){const e=await gt(`${Qf}/${t}`,{method:"DELETE",headers:Tt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"删除人物信息失败")}return e.json()}async function BOe(){const t=await gt(`${Qf}/stats/summary`,{headers:Tt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取统计数据失败")}return t.json()}async function FOe(t){const e=await gt(`${Qf}/batch/delete`,{method:"POST",headers:Tt(),body:JSON.stringify({person_ids:t})});if(!e.ok){const n=await e.json();throw new Error(n.detail||"批量删除失败")}return e.json()}function qOe(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[s,i]=b.useState(0),[a,l]=b.useState(1),[c,d]=b.useState(20),[h,m]=b.useState(""),[g,x]=b.useState(void 0),[y,w]=b.useState(void 0),[S,k]=b.useState(null),[j,N]=b.useState(!1),[T,E]=b.useState(!1),[_,A]=b.useState(null),[D,q]=b.useState({total:0,known:0,unknown:0,platforms:{}}),[B,H]=b.useState(new Set),[W,ee]=b.useState(!1),[I,V]=b.useState(""),{toast:L}=Lr(),$=async()=>{try{r(!0);const re=await POe({page:a,page_size:c,search:h||void 0,is_known:g,platform:y});e(re.data),i(re.total)}catch(re){L({title:"加载失败",description:re instanceof Error?re.message:"无法加载人物信息",variant:"destructive"})}finally{r(!1)}},K=async()=>{try{const re=await BOe();re?.data&&q(re.data)}catch(re){console.error("加载统计数据失败:",re)}};b.useEffect(()=>{$(),K()},[a,c,h,g,y]);const Y=async re=>{try{const ae=await zOe(re.person_id);k(ae.data),N(!0)}catch(ae){L({title:"加载详情失败",description:ae instanceof Error?ae.message:"无法加载人物详情",variant:"destructive"})}},R=re=>{k(re),E(!0)},ie=async re=>{try{await LOe(re.person_id),L({title:"删除成功",description:`已删除人物信息: ${re.person_name||re.nickname||re.user_id}`}),A(null),$(),K()}catch(ae){L({title:"删除失败",description:ae instanceof Error?ae.message:"无法删除人物信息",variant:"destructive"})}},X=b.useMemo(()=>Object.keys(D.platforms),[D.platforms]),z=re=>{const ae=new Set(B);ae.has(re)?ae.delete(re):ae.add(re),H(ae)},U=()=>{B.size===t.length&&t.length>0?H(new Set):H(new Set(t.map(re=>re.person_id)))},te=()=>{if(B.size===0){L({title:"未选择任何人物",description:"请先选择要删除的人物",variant:"destructive"});return}ee(!0)},ne=async()=>{try{const re=await FOe(Array.from(B));L({title:"批量删除完成",description:re.message}),H(new Set),ee(!1),$(),K()}catch(re){L({title:"批量删除失败",description:re instanceof Error?re.message:"批量删除失败",variant:"destructive"})}},G=()=>{const re=parseInt(I),ae=Math.ceil(s/c);re>=1&&re<=ae?(l(re),V("")):L({title:"无效的页码",description:`请输入1-${ae}之间的页码`,variant:"destructive"})},se=re=>re?new Date(re*1e3).toLocaleString("zh-CN"):"-";return o.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[o.jsx("div",{className:"mb-4 sm:mb-6",children:o.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:o.jsxs("div",{children:[o.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[o.jsx(nte,{className:"h-8 w-8",strokeWidth:2}),"人物信息管理"]}),o.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦认识的所有人物信息"})]})})}),o.jsx(pn,{className:"flex-1",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"总人数"}),o.jsx("div",{className:"text-2xl font-bold mt-1",children:D.total})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"已认识"}),o.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:D.known})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"未认识"}),o.jsx("div",{className:"text-2xl font-bold mt-1 text-muted-foreground",children:D.unknown})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-4 gap-4",children:[o.jsxs("div",{className:"sm:col-span-2",children:[o.jsx(he,{htmlFor:"search",children:"搜索"}),o.jsxs("div",{className:"relative mt-1.5",children:[o.jsx(ii,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),o.jsx(Pe,{id:"search",placeholder:"搜索名称、昵称或用户ID...",value:h,onChange:re=>m(re.target.value),className:"pl-9"})]})]}),o.jsxs("div",{children:[o.jsx(he,{htmlFor:"filter-known",children:"认识状态"}),o.jsxs(Vt,{value:g===void 0?"all":g.toString(),onValueChange:re=>{x(re==="all"?void 0:re==="true"),l(1)},children:[o.jsx($t,{id:"filter-known",className:"mt-1.5",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部"}),o.jsx(De,{value:"true",children:"已认识"}),o.jsx(De,{value:"false",children:"未认识"})]})]})]}),o.jsxs("div",{children:[o.jsx(he,{htmlFor:"filter-platform",children:"平台"}),o.jsxs(Vt,{value:y||"all",onValueChange:re=>{w(re==="all"?void 0:re),l(1)},children:[o.jsx($t,{id:"filter-platform",className:"mt-1.5",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部平台"}),X.map(re=>o.jsxs(De,{value:re,children:[re," (",D.platforms[re],")"]},re))]})]})]})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[o.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:B.size>0&&o.jsxs("span",{children:["已选择 ",B.size," 个人物"]})}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:c.toString(),onValueChange:re=>{d(parseInt(re)),l(1),H(new Set)},children:[o.jsx($t,{id:"page-size",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"10",children:"10"}),o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"50",children:"50"}),o.jsx(De,{value:"100",children:"100"})]})]}),B.size>0&&o.jsxs(o.Fragment,{children:[o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>H(new Set),children:"取消选择"}),o.jsxs(ue,{variant:"destructive",size:"sm",onClick:te,children:[o.jsx(Cn,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card",children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(Af,{children:[o.jsx(Mf,{children:o.jsxs(zs,{children:[o.jsx(mn,{className:"w-12",children:o.jsx(Ci,{checked:t.length>0&&B.size===t.length,onCheckedChange:U,"aria-label":"全选"})}),o.jsx(mn,{children:"状态"}),o.jsx(mn,{children:"名称"}),o.jsx(mn,{children:"昵称"}),o.jsx(mn,{children:"平台"}),o.jsx(mn,{children:"用户ID"}),o.jsx(mn,{children:"最后更新"}),o.jsx(mn,{className:"text-right",children:"操作"})]})}),o.jsx(Rf,{children:n?o.jsx(zs,{children:o.jsx(Yt,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):t.length===0?o.jsx(zs,{children:o.jsx(Yt,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):t.map(re=>o.jsxs(zs,{children:[o.jsx(Yt,{children:o.jsx(Ci,{checked:B.has(re.person_id),onCheckedChange:()=>z(re.person_id),"aria-label":`选择 ${re.person_name||re.nickname||re.user_id}`})}),o.jsx(Yt,{children:o.jsx("div",{className:xe("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium",re.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:re.is_known?"已认识":"未认识"})}),o.jsx(Yt,{className:"font-medium",children:re.person_name||o.jsx("span",{className:"text-muted-foreground",children:"-"})}),o.jsx(Yt,{children:re.nickname||"-"}),o.jsx(Yt,{children:re.platform}),o.jsx(Yt,{className:"font-mono text-sm",children:re.user_id}),o.jsx(Yt,{className:"text-sm text-muted-foreground",children:se(re.last_know)}),o.jsx(Yt,{className:"text-right",children:o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsxs(ue,{variant:"default",size:"sm",onClick:()=>Y(re),children:[o.jsx(Ji,{className:"h-4 w-4 mr-1"}),"详情"]}),o.jsxs(ue,{variant:"default",size:"sm",onClick:()=>R(re),children:[o.jsx(F0,{className:"h-4 w-4 mr-1"}),"编辑"]}),o.jsxs(ue,{size:"sm",onClick:()=>A(re),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Cn,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},re.id))})]})}),o.jsx("div",{className:"md:hidden space-y-3 p-4",children:n?o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):t.length===0?o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):t.map(re=>o.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Ci,{checked:B.has(re.person_id),onCheckedChange:()=>z(re.person_id),className:"mt-1"}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("div",{className:xe("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium mb-2",re.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:re.is_known?"已认识":"未认识"}),o.jsx("h3",{className:"font-semibold text-sm line-clamp-1 w-full break-all",children:re.person_name||o.jsx("span",{className:"text-muted-foreground",children:"未命名"})}),re.nickname&&o.jsxs("p",{className:"text-xs text-muted-foreground mt-1 line-clamp-1 w-full break-all",children:["昵称: ",re.nickname]})]})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[o.jsxs("div",{children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"平台"}),o.jsx("p",{className:"font-medium text-xs",children:re.platform})]}),o.jsxs("div",{children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"用户ID"}),o.jsx("p",{className:"font-mono text-xs truncate",title:re.user_id,children:re.user_id})]}),o.jsxs("div",{className:"col-span-2",children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"最后更新"}),o.jsx("p",{className:"text-xs",children:se(re.last_know)})]})]}),o.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>Y(re),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[o.jsx(Ji,{className:"h-3 w-3 mr-1"}),"查看"]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>R(re),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[o.jsx(F0,{className:"h-3 w-3 mr-1"}),"编辑"]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>A(re),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[o.jsx(Cn,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},re.id))}),s>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[o.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",s," 条记录,第 ",a," / ",Math.ceil(s/c)," 页"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>l(1),disabled:a===1,className:"hidden sm:flex",children:o.jsx(Ip,{className:"h-4 w-4"})}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>l(a-1),disabled:a===1,children:[o.jsx(wd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Pe,{type:"number",value:I,onChange:re=>V(re.target.value),onKeyDown:re=>re.key==="Enter"&&G(),placeholder:a.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(s/c)}),o.jsx(ue,{variant:"outline",size:"sm",onClick:G,disabled:!I,className:"h-8",children:"跳转"})]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>l(a+1),disabled:a>=Math.ceil(s/c),children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(Zl,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>l(Math.ceil(s/c)),disabled:a>=Math.ceil(s/c),className:"hidden sm:flex",children:o.jsx(Lp,{className:"h-4 w-4"})})]})]})]})]})}),o.jsx($Oe,{person:S,open:j,onOpenChange:N}),o.jsx(HOe,{person:S,open:T,onOpenChange:E,onSuccess:()=>{$(),K(),E(!1)}}),o.jsx(Fn,{open:!!_,onOpenChange:()=>A(null),children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:['确定要删除人物信息 "',_?.person_name||_?.nickname||_?.user_id,'" 吗? 此操作不可撤销。']})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>_&&ie(_),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),o.jsx(Fn,{open:W,onOpenChange:ee,children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认批量删除"}),o.jsxs(zn,{children:["确定要删除选中的 ",B.size," 个人物信息吗? 此操作不可撤销。"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:ne,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})})]})}function $Oe({person:t,open:e,onOpenChange:n}){if(!t)return null;const r=s=>s?new Date(s*1e3).toLocaleString("zh-CN"):"-";return o.jsx(Er,{open:e,onOpenChange:n,children:o.jsxs(wr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"人物详情"}),o.jsxs(Xr,{children:["查看 ",t.person_name||t.nickname||t.user_id," 的完整信息"]})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsx(kl,{icon:Lv,label:"人物名称",value:t.person_name}),o.jsx(kl,{icon:Gh,label:"昵称",value:t.nickname}),o.jsx(kl,{icon:lk,label:"用户ID",value:t.user_id,mono:!0}),o.jsx(kl,{icon:lk,label:"人物ID",value:t.person_id,mono:!0}),o.jsx(kl,{label:"平台",value:t.platform}),o.jsx(kl,{label:"状态",value:t.is_known?"已认识":"未认识"})]}),t.name_reason&&o.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[o.jsx(he,{className:"text-xs text-muted-foreground",children:"名称设定原因"}),o.jsx("p",{className:"mt-1 text-sm",children:t.name_reason})]}),t.memory_points&&o.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[o.jsx(he,{className:"text-xs text-muted-foreground",children:"个人印象"}),o.jsx("p",{className:"mt-1 text-sm whitespace-pre-wrap",children:t.memory_points})]}),t.group_nick_name&&t.group_nick_name.length>0&&o.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[o.jsx(he,{className:"text-xs text-muted-foreground",children:"群昵称"}),o.jsx("div",{className:"mt-2 space-y-1",children:t.group_nick_name.map((s,i)=>o.jsxs("div",{className:"text-sm flex items-center gap-2",children:[o.jsx("span",{className:"font-mono text-xs text-muted-foreground",children:s.group_id}),o.jsx("span",{children:"→"}),o.jsx("span",{children:s.group_nick_name})]},i))})]}),o.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[o.jsx(kl,{icon:Mh,label:"认识时间",value:r(t.know_times)}),o.jsx(kl,{icon:Mh,label:"首次记录",value:r(t.know_since)}),o.jsx(kl,{icon:Mh,label:"最后更新",value:r(t.last_know)})]})]}),o.jsx(fs,{children:o.jsx(ue,{onClick:()=>n(!1),children:"关闭"})})]})})}function kl({icon:t,label:e,value:n,mono:r=!1}){return o.jsxs("div",{className:"space-y-1",children:[o.jsxs(he,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[t&&o.jsx(t,{className:"h-3 w-3"}),e]}),o.jsx("div",{className:xe("text-sm",r&&"font-mono",!n&&"text-muted-foreground"),children:n||"-"})]})}function HOe({person:t,open:e,onOpenChange:n,onSuccess:r}){const[s,i]=b.useState({}),[a,l]=b.useState(!1),{toast:c}=Lr();b.useEffect(()=>{t&&i({person_name:t.person_name||"",name_reason:t.name_reason||"",nickname:t.nickname||"",memory_points:t.memory_points||"",is_known:t.is_known})},[t]);const d=async()=>{if(t)try{l(!0),await IOe(t.person_id,s),c({title:"保存成功",description:"人物信息已更新"}),r()}catch(h){c({title:"保存失败",description:h instanceof Error?h.message:"无法更新人物信息",variant:"destructive"})}finally{l(!1)}};return t?o.jsx(Er,{open:e,onOpenChange:n,children:o.jsxs(wr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"编辑人物信息"}),o.jsxs(Xr,{children:["修改 ",t.person_name||t.nickname||t.user_id," 的信息"]})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"person_name",children:"人物名称"}),o.jsx(Pe,{id:"person_name",value:s.person_name||"",onChange:h=>i({...s,person_name:h.target.value}),placeholder:"为这个人设置一个名称"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"nickname",children:"昵称"}),o.jsx(Pe,{id:"nickname",value:s.nickname||"",onChange:h=>i({...s,nickname:h.target.value}),placeholder:"昵称"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"name_reason",children:"名称设定原因"}),o.jsx(Nr,{id:"name_reason",value:s.name_reason||"",onChange:h=>i({...s,name_reason:h.target.value}),placeholder:"为什么这样称呼这个人?",rows:2})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"memory_points",children:"个人印象"}),o.jsx(Nr,{id:"memory_points",value:s.memory_points||"",onChange:h=>i({...s,memory_points:h.target.value}),placeholder:"对这个人的印象和记忆点...",rows:4})]}),o.jsxs("div",{className:"flex items-center justify-between rounded-lg border p-3",children:[o.jsxs("div",{children:[o.jsx(he,{htmlFor:"is_known",className:"text-base font-medium",children:"已认识"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"标记是否已经认识这个人"})]}),o.jsx(Ft,{id:"is_known",checked:s.is_known,onCheckedChange:h=>i({...s,is_known:h})})]})]}),o.jsxs(fs,{children:[o.jsx(ue,{variant:"outline",onClick:()=>n(!1),children:"取消"}),o.jsx(ue,{onClick:d,disabled:a,children:a?"保存中...":"保存"})]})]})}):null}function Ls(t){if(typeof t=="string"||typeof t=="number")return""+t;let e="";if(Array.isArray(t))for(let n=0,r;n{let e;const n=new Set,r=(h,m)=>{const g=typeof h=="function"?h(e):h;if(!Object.is(g,e)){const x=e;e=m??(typeof g!="object"||g===null)?g:Object.assign({},e,g),n.forEach(y=>y(e,x))}},s=()=>e,c={setState:r,getState:s,getInitialState:()=>d,subscribe:h=>(n.add(h),()=>n.delete(h)),destroy:()=>{(QOe?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},d=e=t(r,s,c);return c},VOe=t=>t?iD(t):iD,{useDebugValue:UOe}=oe,{useSyncExternalStoreWithSelector:WOe}=yJ,GOe=t=>t;function tW(t,e=GOe,n){const r=WOe(t.subscribe,t.getState,t.getServerState||t.getInitialState,e,n);return UOe(r),r}const aD=(t,e)=>{const n=VOe(t),r=(s,i=e)=>tW(n,s,i);return Object.assign(r,n),r},XOe=(t,e)=>t?aD(t,e):aD;function ks(t,e){if(Object.is(t,e))return!0;if(typeof t!="object"||t===null||typeof e!="object"||e===null)return!1;if(t instanceof Map&&e instanceof Map){if(t.size!==e.size)return!1;for(const[r,s]of t)if(!Object.is(s,e.get(r)))return!1;return!0}if(t instanceof Set&&e instanceof Set){if(t.size!==e.size)return!1;for(const r of t)if(!e.has(r))return!1;return!0}const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!1;for(const r of n)if(!Object.prototype.hasOwnProperty.call(e,r)||!Object.is(t[r],e[r]))return!1;return!0}var YOe={value:()=>{}};function Zb(){for(var t=0,e=arguments.length,n={},r;t=0&&(r=n.slice(s+1),n=n.slice(0,s)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}_v.prototype=Zb.prototype={constructor:_v,on:function(t,e){var n=this._,r=KOe(t+"",n),s,i=-1,a=r.length;if(arguments.length<2){for(;++i0)for(var n=new Array(s),r=0,s,i;r=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),lD.hasOwnProperty(e)?{space:lD[e],local:t}:t}function JOe(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===ZO&&e.documentElement.namespaceURI===ZO?e.createElement(t):e.createElementNS(n,t)}}function eje(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function nW(t){var e=Jb(t);return(e.local?eje:JOe)(e)}function tje(){}function KN(t){return t==null?tje:function(){return this.querySelector(t)}}function nje(t){typeof t!="function"&&(t=KN(t));for(var e=this._groups,n=e.length,r=new Array(n),s=0;s=N&&(N=j+1);!(E=S[N])&&++N=0;)(a=r[s])&&(i&&a.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(a,i),i=a);return this}function Cje(t){t||(t=Tje);function e(m,g){return m&&g?t(m.__data__,g.__data__):!m-!g}for(var n=this._groups,r=n.length,s=new Array(r),i=0;ie?1:t>=e?0:NaN}function Eje(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function _je(){return Array.from(this)}function Aje(){for(var t=this._groups,e=0,n=t.length;e1?this.each((e==null?$je:typeof e=="function"?Qje:Hje)(t,e,n??"")):mf(this.node(),t)}function mf(t,e){return t.style.getPropertyValue(e)||oW(t).getComputedStyle(t,null).getPropertyValue(e)}function Uje(t){return function(){delete this[t]}}function Wje(t,e){return function(){this[t]=e}}function Gje(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}function Xje(t,e){return arguments.length>1?this.each((e==null?Uje:typeof e=="function"?Gje:Wje)(t,e)):this.node()[t]}function lW(t){return t.trim().split(/^|\s+/)}function ZN(t){return t.classList||new cW(t)}function cW(t){this._node=t,this._names=lW(t.getAttribute("class")||"")}cW.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function uW(t,e){for(var n=ZN(t),r=-1,s=e.length;++r=0&&(n=e.slice(r+1),e=e.slice(0,r)),{type:e,name:n}})}function k6e(t){return function(){var e=this.__on;if(e){for(var n=0,r=-1,s=e.length,i;n()=>t;function JO(t,{sourceEvent:e,subject:n,target:r,identifier:s,active:i,x:a,y:l,dx:c,dy:d,dispatch:h}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:s,enumerable:!0,configurable:!0},active:{value:i,enumerable:!0,configurable:!0},x:{value:a,enumerable:!0,configurable:!0},y:{value:l,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:d,enumerable:!0,configurable:!0},_:{value:h}})}JO.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};function R6e(t){return!t.ctrlKey&&!t.button}function D6e(){return this.parentNode}function P6e(t,e){return e??{x:t.x,y:t.y}}function z6e(){return navigator.maxTouchPoints||"ontouchstart"in this}function I6e(){var t=R6e,e=D6e,n=P6e,r=z6e,s={},i=Zb("start","drag","end"),a=0,l,c,d,h,m=0;function g(T){T.on("mousedown.drag",x).filter(r).on("touchstart.drag",S).on("touchmove.drag",k,M6e).on("touchend.drag touchcancel.drag",j).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function x(T,E){if(!(h||!t.call(this,T,E))){var _=N(this,e.call(this,T,E),T,E,"mouse");_&&(va(T.view).on("mousemove.drag",y,kp).on("mouseup.drag",w,kp),mW(T.view),d5(T),d=!1,l=T.clientX,c=T.clientY,_("start",T))}}function y(T){if(Qh(T),!d){var E=T.clientX-l,_=T.clientY-c;d=E*E+_*_>m}s.mouse("drag",T)}function w(T){va(T.view).on("mousemove.drag mouseup.drag",null),pW(T.view,d),Qh(T),s.mouse("end",T)}function S(T,E){if(t.call(this,T,E)){var _=T.changedTouches,A=e.call(this,T,E),D=_.length,q,B;for(q=0;q=0&&t._call.call(void 0,e),t=t._next;--pf}function cD(){xd=(Dy=Op.now())+ew,pf=m0=0;try{B6e()}finally{pf=0,q6e(),xd=0}}function F6e(){var t=Op.now(),e=t-Dy;e>gW&&(ew-=e,Dy=t)}function q6e(){for(var t,e=Ry,n,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Ry=n);p0=t,ej(r)}function ej(t){if(!pf){m0&&(m0=clearTimeout(m0));var e=t-xd;e>24?(t<1/0&&(m0=setTimeout(cD,t-Op.now()-ew)),n0&&(n0=clearInterval(n0))):(n0||(Dy=Op.now(),n0=setInterval(F6e,gW)),pf=1,xW(cD))}}function uD(t,e,n){var r=new Py;return e=e==null?0:+e,r.restart(s=>{r.stop(),t(s+e)},e,n),r}var $6e=Zb("start","end","cancel","interrupt"),H6e=[],yW=0,dD=1,tj=2,Av=3,hD=4,nj=5,Mv=6;function tw(t,e,n,r,s,i){var a=t.__transition;if(!a)t.__transition={};else if(n in a)return;Q6e(t,n,{name:e,index:r,group:s,on:$6e,tween:H6e,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:yW})}function e7(t,e){var n=oo(t,e);if(n.state>yW)throw new Error("too late; already scheduled");return n}function Ko(t,e){var n=oo(t,e);if(n.state>Av)throw new Error("too late; already running");return n}function oo(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function Q6e(t,e,n){var r=t.__transition,s;r[e]=n,n.timer=vW(i,0,n.time);function i(d){n.state=dD,n.timer.restart(a,n.delay,n.time),n.delay<=d&&a(d-n.delay)}function a(d){var h,m,g,x;if(n.state!==dD)return c();for(h in r)if(x=r[h],x.name===n.name){if(x.state===Av)return uD(a);x.state===hD?(x.state=Mv,x.timer.stop(),x.on.call("interrupt",t,t.__data__,x.index,x.group),delete r[h]):+htj&&r.state=0&&(e=e.slice(0,n)),!e||e==="start"})}function bNe(t,e,n){var r,s,i=yNe(e)?e7:Ko;return function(){var a=i(this,t),l=a.on;l!==r&&(s=(r=l).copy()).on(e,n),a.on=s}}function wNe(t,e){var n=this._id;return arguments.length<2?oo(this.node(),n).on.on(t):this.each(bNe(n,t,e))}function SNe(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}function kNe(){return this.on("end.remove",SNe(this._id))}function ONe(t){var e=this._name,n=this._id;typeof t!="function"&&(t=KN(t));for(var r=this._groups,s=r.length,i=new Array(s),a=0;a()=>t;function XNe(t,{sourceEvent:e,target:n,transform:r,dispatch:s}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:s}})}function zl(t,e,n){this.k=t,this.x=e,this.y=n}zl.prototype={constructor:zl,scale:function(t){return t===1?this:new zl(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new zl(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var $l=new zl(1,0,0);zl.prototype;function h5(t){t.stopImmediatePropagation()}function r0(t){t.preventDefault(),t.stopImmediatePropagation()}function YNe(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function KNe(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]):[[0,0],[t.clientWidth,t.clientHeight]]}function fD(){return this.__zoom||$l}function ZNe(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function JNe(){return navigator.maxTouchPoints||"ontouchstart"in this}function e7e(t,e,n){var r=t.invertX(e[0][0])-n[0][0],s=t.invertX(e[1][0])-n[1][0],i=t.invertY(e[0][1])-n[0][1],a=t.invertY(e[1][1])-n[1][1];return t.translate(s>r?(r+s)/2:Math.min(0,r)||Math.max(0,s),a>i?(i+a)/2:Math.min(0,i)||Math.max(0,a))}function kW(){var t=YNe,e=KNe,n=e7e,r=ZNe,s=JNe,i=[0,1/0],a=[[-1/0,-1/0],[1/0,1/0]],l=250,c=$J,d=Zb("start","zoom","end"),h,m,g,x=500,y=150,w=0,S=10;function k(I){I.property("__zoom",fD).on("wheel.zoom",D,{passive:!1}).on("mousedown.zoom",q).on("dblclick.zoom",B).filter(s).on("touchstart.zoom",H).on("touchmove.zoom",W).on("touchend.zoom touchcancel.zoom",ee).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}k.transform=function(I,V,L,$){var K=I.selection?I.selection():I;K.property("__zoom",fD),I!==K?E(I,V,L,$):K.interrupt().each(function(){_(this,arguments).event($).start().zoom(null,typeof V=="function"?V.apply(this,arguments):V).end()})},k.scaleBy=function(I,V,L,$){k.scaleTo(I,function(){var K=this.__zoom.k,Y=typeof V=="function"?V.apply(this,arguments):V;return K*Y},L,$)},k.scaleTo=function(I,V,L,$){k.transform(I,function(){var K=e.apply(this,arguments),Y=this.__zoom,R=L==null?T(K):typeof L=="function"?L.apply(this,arguments):L,ie=Y.invert(R),X=typeof V=="function"?V.apply(this,arguments):V;return n(N(j(Y,X),R,ie),K,a)},L,$)},k.translateBy=function(I,V,L,$){k.transform(I,function(){return n(this.__zoom.translate(typeof V=="function"?V.apply(this,arguments):V,typeof L=="function"?L.apply(this,arguments):L),e.apply(this,arguments),a)},null,$)},k.translateTo=function(I,V,L,$,K){k.transform(I,function(){var Y=e.apply(this,arguments),R=this.__zoom,ie=$==null?T(Y):typeof $=="function"?$.apply(this,arguments):$;return n($l.translate(ie[0],ie[1]).scale(R.k).translate(typeof V=="function"?-V.apply(this,arguments):-V,typeof L=="function"?-L.apply(this,arguments):-L),Y,a)},$,K)};function j(I,V){return V=Math.max(i[0],Math.min(i[1],V)),V===I.k?I:new zl(V,I.x,I.y)}function N(I,V,L){var $=V[0]-L[0]*I.k,K=V[1]-L[1]*I.k;return $===I.x&&K===I.y?I:new zl(I.k,$,K)}function T(I){return[(+I[0][0]+ +I[1][0])/2,(+I[0][1]+ +I[1][1])/2]}function E(I,V,L,$){I.on("start.zoom",function(){_(this,arguments).event($).start()}).on("interrupt.zoom end.zoom",function(){_(this,arguments).event($).end()}).tween("zoom",function(){var K=this,Y=arguments,R=_(K,Y).event($),ie=e.apply(K,Y),X=L==null?T(ie):typeof L=="function"?L.apply(K,Y):L,z=Math.max(ie[1][0]-ie[0][0],ie[1][1]-ie[0][1]),U=K.__zoom,te=typeof V=="function"?V.apply(K,Y):V,ne=c(U.invert(X).concat(z/U.k),te.invert(X).concat(z/te.k));return function(G){if(G===1)G=te;else{var se=ne(G),re=z/se[2];G=new zl(re,X[0]-se[0]*re,X[1]-se[1]*re)}R.zoom(null,G)}})}function _(I,V,L){return!L&&I.__zooming||new A(I,V)}function A(I,V){this.that=I,this.args=V,this.active=0,this.sourceEvent=null,this.extent=e.apply(I,V),this.taps=0}A.prototype={event:function(I){return I&&(this.sourceEvent=I),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(I,V){return this.mouse&&I!=="mouse"&&(this.mouse[1]=V.invert(this.mouse[0])),this.touch0&&I!=="touch"&&(this.touch0[1]=V.invert(this.touch0[0])),this.touch1&&I!=="touch"&&(this.touch1[1]=V.invert(this.touch1[0])),this.that.__zoom=V,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(I){var V=va(this.that).datum();d.call(I,this.that,new XNe(I,{sourceEvent:this.sourceEvent,target:k,transform:this.that.__zoom,dispatch:d}),V)}};function D(I,...V){if(!t.apply(this,arguments))return;var L=_(this,V).event(I),$=this.__zoom,K=Math.max(i[0],Math.min(i[1],$.k*Math.pow(2,r.apply(this,arguments)))),Y=Qa(I);if(L.wheel)(L.mouse[0][0]!==Y[0]||L.mouse[0][1]!==Y[1])&&(L.mouse[1]=$.invert(L.mouse[0]=Y)),clearTimeout(L.wheel);else{if($.k===K)return;L.mouse=[Y,$.invert(Y)],Rv(this),L.start()}r0(I),L.wheel=setTimeout(R,y),L.zoom("mouse",n(N(j($,K),L.mouse[0],L.mouse[1]),L.extent,a));function R(){L.wheel=null,L.end()}}function q(I,...V){if(g||!t.apply(this,arguments))return;var L=I.currentTarget,$=_(this,V,!0).event(I),K=va(I.view).on("mousemove.zoom",X,!0).on("mouseup.zoom",z,!0),Y=Qa(I,L),R=I.clientX,ie=I.clientY;mW(I.view),h5(I),$.mouse=[Y,this.__zoom.invert(Y)],Rv(this),$.start();function X(U){if(r0(U),!$.moved){var te=U.clientX-R,ne=U.clientY-ie;$.moved=te*te+ne*ne>w}$.event(U).zoom("mouse",n(N($.that.__zoom,$.mouse[0]=Qa(U,L),$.mouse[1]),$.extent,a))}function z(U){K.on("mousemove.zoom mouseup.zoom",null),pW(U.view,$.moved),r0(U),$.event(U).end()}}function B(I,...V){if(t.apply(this,arguments)){var L=this.__zoom,$=Qa(I.changedTouches?I.changedTouches[0]:I,this),K=L.invert($),Y=L.k*(I.shiftKey?.5:2),R=n(N(j(L,Y),$,K),e.apply(this,V),a);r0(I),l>0?va(this).transition().duration(l).call(E,R,$,I):va(this).call(k.transform,R,$,I)}}function H(I,...V){if(t.apply(this,arguments)){var L=I.touches,$=L.length,K=_(this,V,I.changedTouches.length===$).event(I),Y,R,ie,X;for(h5(I),R=0;R<$;++R)ie=L[R],X=Qa(ie,this),X=[X,this.__zoom.invert(X),ie.identifier],K.touch0?!K.touch1&&K.touch0[2]!==X[2]&&(K.touch1=X,K.taps=0):(K.touch0=X,Y=!0,K.taps=1+!!h);h&&(h=clearTimeout(h)),Y&&(K.taps<2&&(m=X[0],h=setTimeout(function(){h=null},x)),Rv(this),K.start())}}function W(I,...V){if(this.__zooming){var L=_(this,V).event(I),$=I.changedTouches,K=$.length,Y,R,ie,X;for(r0(I),Y=0;Y"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:t=>`Node type "${t}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:t=>`The old edge with id=${t} does not exist.`,error009:t=>`Marker type "${t}" doesn't exist.`,error008:(t,e)=>`Couldn't create edge for ${t?"target":"source"} handle id: "${t?e.targetHandle:e.sourceHandle}", edge id: ${e.id}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:t=>`Edge type "${t}" not found. Using fallback type "default".`,error012:t=>`Node with id "${t}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`},OW=Yl.error001();function gr(t,e){const n=b.useContext(nw);if(n===null)throw new Error(OW);return tW(n,t,e)}const gs=()=>{const t=b.useContext(nw);if(t===null)throw new Error(OW);return b.useMemo(()=>({getState:t.getState,setState:t.setState,subscribe:t.subscribe,destroy:t.destroy}),[t])},n7e=t=>t.userSelectionActive?"none":"all";function rw({position:t,children:e,className:n,style:r,...s}){const i=gr(n7e),a=`${t}`.split("-");return oe.createElement("div",{className:Ls(["react-flow__panel",n,...a]),style:{...r,pointerEvents:i},...s},e)}function r7e({proOptions:t,position:e="bottom-right"}){return t?.hideAttribution?null:oe.createElement(rw,{position:e,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://reactflow.dev/pro"},oe.createElement("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution"},"React Flow"))}const s7e=({x:t,y:e,label:n,labelStyle:r={},labelShowBg:s=!0,labelBgStyle:i={},labelBgPadding:a=[2,4],labelBgBorderRadius:l=2,children:c,className:d,...h})=>{const m=b.useRef(null),[g,x]=b.useState({x:0,y:0,width:0,height:0}),y=Ls(["react-flow__edge-textwrapper",d]);return b.useEffect(()=>{if(m.current){const w=m.current.getBBox();x({x:w.x,y:w.y,width:w.width,height:w.height})}},[n]),typeof n>"u"||!n?null:oe.createElement("g",{transform:`translate(${t-g.width/2} ${e-g.height/2})`,className:y,visibility:g.width?"visible":"hidden",...h},s&&oe.createElement("rect",{width:g.width+2*a[0],x:-a[0],y:-a[1],height:g.height+2*a[1],className:"react-flow__edge-textbg",style:i,rx:l,ry:l}),oe.createElement("text",{className:"react-flow__edge-text",y:g.height/2,dy:"0.3em",ref:m,style:r},n),c)};var i7e=b.memo(s7e);const n7=t=>({width:t.offsetWidth,height:t.offsetHeight}),gf=(t,e=0,n=1)=>Math.min(Math.max(t,e),n),r7=(t={x:0,y:0},e)=>({x:gf(t.x,e[0][0],e[1][0]),y:gf(t.y,e[0][1],e[1][1])}),mD=(t,e,n)=>tn?-gf(Math.abs(t-n),1,50)/50:0,jW=(t,e)=>{const n=mD(t.x,35,e.width-35)*20,r=mD(t.y,35,e.height-35)*20;return[n,r]},NW=t=>t.getRootNode?.()||window?.document,CW=(t,e)=>({x:Math.min(t.x,e.x),y:Math.min(t.y,e.y),x2:Math.max(t.x2,e.x2),y2:Math.max(t.y2,e.y2)}),jp=({x:t,y:e,width:n,height:r})=>({x:t,y:e,x2:t+n,y2:e+r}),TW=({x:t,y:e,x2:n,y2:r})=>({x:t,y:e,width:n-t,height:r-e}),pD=t=>({...t.positionAbsolute||{x:0,y:0},width:t.width||0,height:t.height||0}),a7e=(t,e)=>TW(CW(jp(t),jp(e))),rj=(t,e)=>{const n=Math.max(0,Math.min(t.x+t.width,e.x+e.width)-Math.max(t.x,e.x)),r=Math.max(0,Math.min(t.y+t.height,e.y+e.height)-Math.max(t.y,e.y));return Math.ceil(n*r)},o7e=t=>Ca(t.width)&&Ca(t.height)&&Ca(t.x)&&Ca(t.y),Ca=t=>!isNaN(t)&&isFinite(t),$r=Symbol.for("internals"),EW=["Enter"," ","Escape"],l7e=(t,e)=>{},c7e=t=>"nativeEvent"in t;function sj(t){const n=(c7e(t)?t.nativeEvent:t).composedPath?.()?.[0]||t.target;return["INPUT","SELECT","TEXTAREA"].includes(n?.nodeName)||n?.hasAttribute("contenteditable")||!!n?.closest(".nokey")}const _W=t=>"clientX"in t,Wc=(t,e)=>{const n=_W(t),r=n?t.clientX:t.touches?.[0].clientX,s=n?t.clientY:t.touches?.[0].clientY;return{x:r-(e?.left??0),y:s-(e?.top??0)}},zy=()=>typeof navigator<"u"&&navigator?.userAgent?.indexOf("Mac")>=0,kg=({id:t,path:e,labelX:n,labelY:r,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d,style:h,markerEnd:m,markerStart:g,interactionWidth:x=20})=>oe.createElement(oe.Fragment,null,oe.createElement("path",{id:t,style:h,d:e,fill:"none",className:"react-flow__edge-path",markerEnd:m,markerStart:g}),x&&oe.createElement("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:x,className:"react-flow__edge-interaction"}),s&&Ca(n)&&Ca(r)?oe.createElement(i7e,{x:n,y:r,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d}):null);kg.displayName="BaseEdge";function s0(t,e,n){return n===void 0?n:r=>{const s=e().edges.find(i=>i.id===t);s&&n(r,{...s})}}function AW({sourceX:t,sourceY:e,targetX:n,targetY:r}){const s=Math.abs(n-t)/2,i=n{const[S,k,j]=RW({sourceX:t,sourceY:e,sourcePosition:s,targetX:n,targetY:r,targetPosition:i});return oe.createElement(kg,{path:S,labelX:k,labelY:j,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:m,style:g,markerEnd:x,markerStart:y,interactionWidth:w})});s7.displayName="SimpleBezierEdge";const xD={[kt.Left]:{x:-1,y:0},[kt.Right]:{x:1,y:0},[kt.Top]:{x:0,y:-1},[kt.Bottom]:{x:0,y:1}},u7e=({source:t,sourcePosition:e=kt.Bottom,target:n})=>e===kt.Left||e===kt.Right?t.xMath.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2));function d7e({source:t,sourcePosition:e=kt.Bottom,target:n,targetPosition:r=kt.Top,center:s,offset:i}){const a=xD[e],l=xD[r],c={x:t.x+a.x*i,y:t.y+a.y*i},d={x:n.x+l.x*i,y:n.y+l.y*i},h=u7e({source:c,sourcePosition:e,target:d}),m=h.x!==0?"x":"y",g=h[m];let x=[],y,w;const S={x:0,y:0},k={x:0,y:0},[j,N,T,E]=AW({sourceX:t.x,sourceY:t.y,targetX:n.x,targetY:n.y});if(a[m]*l[m]===-1){y=s.x??j,w=s.y??N;const A=[{x:y,y:c.y},{x:y,y:d.y}],D=[{x:c.x,y:w},{x:d.x,y:w}];a[m]===g?x=m==="x"?A:D:x=m==="x"?D:A}else{const A=[{x:c.x,y:d.y}],D=[{x:d.x,y:c.y}];if(m==="x"?x=a.x===g?D:A:x=a.y===g?A:D,e===r){const ee=Math.abs(t[m]-n[m]);if(ee<=i){const I=Math.min(i-1,i-ee);a[m]===g?S[m]=(c[m]>t[m]?-1:1)*I:k[m]=(d[m]>n[m]?-1:1)*I}}if(e!==r){const ee=m==="x"?"y":"x",I=a[m]===l[ee],V=c[ee]>d[ee],L=c[ee]=W?(y=(q.x+B.x)/2,w=x[0].y):(y=x[0].x,w=(q.y+B.y)/2)}return[[t,{x:c.x+S.x,y:c.y+S.y},...x,{x:d.x+k.x,y:d.y+k.y},n],y,w,T,E]}function h7e(t,e,n,r){const s=Math.min(vD(t,e)/2,vD(e,n)/2,r),{x:i,y:a}=e;if(t.x===i&&i===n.x||t.y===a&&a===n.y)return`L${i} ${a}`;if(t.y===a){const d=t.x{let N="";return j>0&&j{const[k,j,N]=ij({sourceX:t,sourceY:e,sourcePosition:m,targetX:n,targetY:r,targetPosition:g,borderRadius:w?.borderRadius,offset:w?.offset});return oe.createElement(kg,{path:k,labelX:j,labelY:N,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d,style:h,markerEnd:x,markerStart:y,interactionWidth:S})});sw.displayName="SmoothStepEdge";const i7=b.memo(t=>oe.createElement(sw,{...t,pathOptions:b.useMemo(()=>({borderRadius:0,offset:t.pathOptions?.offset}),[t.pathOptions?.offset])}));i7.displayName="StepEdge";function f7e({sourceX:t,sourceY:e,targetX:n,targetY:r}){const[s,i,a,l]=AW({sourceX:t,sourceY:e,targetX:n,targetY:r});return[`M ${t},${e}L ${n},${r}`,s,i,a,l]}const a7=b.memo(({sourceX:t,sourceY:e,targetX:n,targetY:r,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d,style:h,markerEnd:m,markerStart:g,interactionWidth:x})=>{const[y,w,S]=f7e({sourceX:t,sourceY:e,targetX:n,targetY:r});return oe.createElement(kg,{path:y,labelX:w,labelY:S,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d,style:h,markerEnd:m,markerStart:g,interactionWidth:x})});a7.displayName="StraightEdge";function W1(t,e){return t>=0?.5*t:e*25*Math.sqrt(-t)}function yD({pos:t,x1:e,y1:n,x2:r,y2:s,c:i}){switch(t){case kt.Left:return[e-W1(e-r,i),n];case kt.Right:return[e+W1(r-e,i),n];case kt.Top:return[e,n-W1(n-s,i)];case kt.Bottom:return[e,n+W1(s-n,i)]}}function DW({sourceX:t,sourceY:e,sourcePosition:n=kt.Bottom,targetX:r,targetY:s,targetPosition:i=kt.Top,curvature:a=.25}){const[l,c]=yD({pos:n,x1:t,y1:e,x2:r,y2:s,c:a}),[d,h]=yD({pos:i,x1:r,y1:s,x2:t,y2:e,c:a}),[m,g,x,y]=MW({sourceX:t,sourceY:e,targetX:r,targetY:s,sourceControlX:l,sourceControlY:c,targetControlX:d,targetControlY:h});return[`M${t},${e} C${l},${c} ${d},${h} ${r},${s}`,m,g,x,y]}const Ly=b.memo(({sourceX:t,sourceY:e,targetX:n,targetY:r,sourcePosition:s=kt.Bottom,targetPosition:i=kt.Top,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:m,style:g,markerEnd:x,markerStart:y,pathOptions:w,interactionWidth:S})=>{const[k,j,N]=DW({sourceX:t,sourceY:e,sourcePosition:s,targetX:n,targetY:r,targetPosition:i,curvature:w?.curvature});return oe.createElement(kg,{path:k,labelX:j,labelY:N,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:m,style:g,markerEnd:x,markerStart:y,interactionWidth:S})});Ly.displayName="BezierEdge";const o7=b.createContext(null),m7e=o7.Provider;o7.Consumer;const p7e=()=>b.useContext(o7),g7e=t=>"id"in t&&"source"in t&&"target"in t,x7e=({source:t,sourceHandle:e,target:n,targetHandle:r})=>`reactflow__edge-${t}${e||""}-${n}${r||""}`,aj=(t,e)=>typeof t>"u"?"":typeof t=="string"?t:`${e?`${e}__`:""}${Object.keys(t).sort().map(r=>`${r}=${t[r]}`).join("&")}`,v7e=(t,e)=>e.some(n=>n.source===t.source&&n.target===t.target&&(n.sourceHandle===t.sourceHandle||!n.sourceHandle&&!t.sourceHandle)&&(n.targetHandle===t.targetHandle||!n.targetHandle&&!t.targetHandle)),y7e=(t,e)=>{if(!t.source||!t.target)return e;let n;return g7e(t)?n={...t}:n={...t,id:x7e(t)},v7e(n,e)?e:e.concat(n)},oj=({x:t,y:e},[n,r,s],i,[a,l])=>{const c={x:(t-n)/s,y:(e-r)/s};return i?{x:a*Math.round(c.x/a),y:l*Math.round(c.y/l)}:c},PW=({x:t,y:e},[n,r,s])=>({x:t*s+n,y:e*s+r}),id=(t,e=[0,0])=>{if(!t)return{x:0,y:0,positionAbsolute:{x:0,y:0}};const n=(t.width??0)*e[0],r=(t.height??0)*e[1],s={x:t.position.x-n,y:t.position.y-r};return{...s,positionAbsolute:t.positionAbsolute?{x:t.positionAbsolute.x-n,y:t.positionAbsolute.y-r}:s}},iw=(t,e=[0,0])=>{if(t.length===0)return{x:0,y:0,width:0,height:0};const n=t.reduce((r,s)=>{const{x:i,y:a}=id(s,e).positionAbsolute;return CW(r,jp({x:i,y:a,width:s.width||0,height:s.height||0}))},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return TW(n)},zW=(t,e,[n,r,s]=[0,0,1],i=!1,a=!1,l=[0,0])=>{const c={x:(e.x-n)/s,y:(e.y-r)/s,width:e.width/s,height:e.height/s},d=[];return t.forEach(h=>{const{width:m,height:g,selectable:x=!0,hidden:y=!1}=h;if(a&&!x||y)return!1;const{positionAbsolute:w}=id(h,l),S={x:w.x,y:w.y,width:m||0,height:g||0},k=rj(c,S),j=typeof m>"u"||typeof g>"u"||m===null||g===null,N=i&&k>0,T=(m||0)*(g||0);(j||N||k>=T||h.dragging)&&d.push(h)}),d},IW=(t,e)=>{const n=t.map(r=>r.id);return e.filter(r=>n.includes(r.source)||n.includes(r.target))},LW=(t,e,n,r,s,i=.1)=>{const a=e/(t.width*(1+i)),l=n/(t.height*(1+i)),c=Math.min(a,l),d=gf(c,r,s),h=t.x+t.width/2,m=t.y+t.height/2,g=e/2-h*d,x=n/2-m*d;return{x:g,y:x,zoom:d}},qu=(t,e=0)=>t.transition().duration(e);function bD(t,e,n,r){return(e[n]||[]).reduce((s,i)=>(`${t.id}-${i.id}-${n}`!==r&&s.push({id:i.id||null,type:n,nodeId:t.id,x:(t.positionAbsolute?.x??0)+i.x+i.width/2,y:(t.positionAbsolute?.y??0)+i.y+i.height/2}),s),[])}function b7e(t,e,n,r,s,i){const{x:a,y:l}=Wc(t),d=e.elementsFromPoint(a,l).find(y=>y.classList.contains("react-flow__handle"));if(d){const y=d.getAttribute("data-nodeid");if(y){const w=l7(void 0,d),S=d.getAttribute("data-handleid"),k=i({nodeId:y,id:S,type:w});if(k){const j=s.find(N=>N.nodeId===y&&N.type===w&&N.id===S);return{handle:{id:S,type:w,nodeId:y,x:j?.x||n.x,y:j?.y||n.y},validHandleResult:k}}}}let h=[],m=1/0;if(s.forEach(y=>{const w=Math.sqrt((y.x-n.x)**2+(y.y-n.y)**2);if(w<=r){const S=i(y);w<=m&&(wy.isValid),x=h.some(({handle:y})=>y.type==="target");return h.find(({handle:y,validHandleResult:w})=>x?y.type==="target":g?w.isValid:!0)||h[0]}const w7e={source:null,target:null,sourceHandle:null,targetHandle:null},BW=()=>({handleDomNode:null,isValid:!1,connection:w7e,endHandle:null});function FW(t,e,n,r,s,i,a){const l=s==="target",c=a.querySelector(`.react-flow__handle[data-id="${t?.nodeId}-${t?.id}-${t?.type}"]`),d={...BW(),handleDomNode:c};if(c){const h=l7(void 0,c),m=c.getAttribute("data-nodeid"),g=c.getAttribute("data-handleid"),x=c.classList.contains("connectable"),y=c.classList.contains("connectableend"),w={source:l?m:n,sourceHandle:l?g:r,target:l?n:m,targetHandle:l?r:g};d.connection=w,x&&y&&(e===vd.Strict?l&&h==="source"||!l&&h==="target":m!==n||g!==r)&&(d.endHandle={nodeId:m,handleId:g,type:h},d.isValid=i(w))}return d}function S7e({nodes:t,nodeId:e,handleId:n,handleType:r}){return t.reduce((s,i)=>{if(i[$r]){const{handleBounds:a}=i[$r];let l=[],c=[];a&&(l=bD(i,a,"source",`${e}-${n}-${r}`),c=bD(i,a,"target",`${e}-${n}-${r}`)),s.push(...l,...c)}return s},[])}function l7(t,e){return t||(e?.classList.contains("target")?"target":e?.classList.contains("source")?"source":null)}function f5(t){t?.classList.remove("valid","connecting","react-flow__handle-valid","react-flow__handle-connecting")}function k7e(t,e){let n=null;return e?n="valid":t&&!e&&(n="invalid"),n}function qW({event:t,handleId:e,nodeId:n,onConnect:r,isTarget:s,getState:i,setState:a,isValidConnection:l,edgeUpdaterType:c,onReconnectEnd:d}){const h=NW(t.target),{connectionMode:m,domNode:g,autoPanOnConnect:x,connectionRadius:y,onConnectStart:w,panBy:S,getNodes:k,cancelConnection:j}=i();let N=0,T;const{x:E,y:_}=Wc(t),A=h?.elementFromPoint(E,_),D=l7(c,A),q=g?.getBoundingClientRect();if(!q||!D)return;let B,H=Wc(t,q),W=!1,ee=null,I=!1,V=null;const L=S7e({nodes:k(),nodeId:n,handleId:e,handleType:D}),$=()=>{if(!x)return;const[R,ie]=jW(H,q);S({x:R,y:ie}),N=requestAnimationFrame($)};a({connectionPosition:H,connectionStatus:null,connectionNodeId:n,connectionHandleId:e,connectionHandleType:D,connectionStartHandle:{nodeId:n,handleId:e,type:D},connectionEndHandle:null}),w?.(t,{nodeId:n,handleId:e,handleType:D});function K(R){const{transform:ie}=i();H=Wc(R,q);const{handle:X,validHandleResult:z}=b7e(R,h,oj(H,ie,!1,[1,1]),y,L,U=>FW(U,m,n,e,s?"target":"source",l,h));if(T=X,W||($(),W=!0),V=z.handleDomNode,ee=z.connection,I=z.isValid,a({connectionPosition:T&&I?PW({x:T.x,y:T.y},ie):H,connectionStatus:k7e(!!T,I),connectionEndHandle:z.endHandle}),!T&&!I&&!V)return f5(B);ee.source!==ee.target&&V&&(f5(B),B=V,V.classList.add("connecting","react-flow__handle-connecting"),V.classList.toggle("valid",I),V.classList.toggle("react-flow__handle-valid",I))}function Y(R){(T||V)&&ee&&I&&r?.(ee),i().onConnectEnd?.(R),c&&d?.(R),f5(B),j(),cancelAnimationFrame(N),W=!1,I=!1,ee=null,V=null,h.removeEventListener("mousemove",K),h.removeEventListener("mouseup",Y),h.removeEventListener("touchmove",K),h.removeEventListener("touchend",Y)}h.addEventListener("mousemove",K),h.addEventListener("mouseup",Y),h.addEventListener("touchmove",K),h.addEventListener("touchend",Y)}const wD=()=>!0,O7e=t=>({connectionStartHandle:t.connectionStartHandle,connectOnClick:t.connectOnClick,noPanClassName:t.noPanClassName}),j7e=(t,e,n)=>r=>{const{connectionStartHandle:s,connectionEndHandle:i,connectionClickStartHandle:a}=r;return{connecting:s?.nodeId===t&&s?.handleId===e&&s?.type===n||i?.nodeId===t&&i?.handleId===e&&i?.type===n,clickConnecting:a?.nodeId===t&&a?.handleId===e&&a?.type===n}},$W=b.forwardRef(({type:t="source",position:e=kt.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:s=!0,isConnectableEnd:i=!0,id:a,onConnect:l,children:c,className:d,onMouseDown:h,onTouchStart:m,...g},x)=>{const y=a||null,w=t==="target",S=gs(),k=p7e(),{connectOnClick:j,noPanClassName:N}=gr(O7e,ks),{connecting:T,clickConnecting:E}=gr(j7e(k,y,t),ks);k||S.getState().onError?.("010",Yl.error010());const _=q=>{const{defaultEdgeOptions:B,onConnect:H,hasDefaultEdges:W}=S.getState(),ee={...B,...q};if(W){const{edges:I,setEdges:V}=S.getState();V(y7e(ee,I))}H?.(ee),l?.(ee)},A=q=>{if(!k)return;const B=_W(q);s&&(B&&q.button===0||!B)&&qW({event:q,handleId:y,nodeId:k,onConnect:_,isTarget:w,getState:S.getState,setState:S.setState,isValidConnection:n||S.getState().isValidConnection||wD}),B?h?.(q):m?.(q)},D=q=>{const{onClickConnectStart:B,onClickConnectEnd:H,connectionClickStartHandle:W,connectionMode:ee,isValidConnection:I}=S.getState();if(!k||!W&&!s)return;if(!W){B?.(q,{nodeId:k,handleId:y,handleType:t}),S.setState({connectionClickStartHandle:{nodeId:k,type:t,handleId:y}});return}const V=NW(q.target),L=n||I||wD,{connection:$,isValid:K}=FW({nodeId:k,id:y,type:t},ee,W.nodeId,W.handleId||null,W.type,L,V);K&&_($),H?.(q),S.setState({connectionClickStartHandle:null})};return oe.createElement("div",{"data-handleid":y,"data-nodeid":k,"data-handlepos":e,"data-id":`${k}-${y}-${t}`,className:Ls(["react-flow__handle",`react-flow__handle-${e}`,"nodrag",N,d,{source:!w,target:w,connectable:r,connectablestart:s,connectableend:i,connecting:E,connectionindicator:r&&(s&&!T||i&&T)}]),onMouseDown:A,onTouchStart:A,onClick:j?D:void 0,ref:x,...g},c)});$W.displayName="Handle";var au=b.memo($W);const HW=({data:t,isConnectable:e,targetPosition:n=kt.Top,sourcePosition:r=kt.Bottom})=>oe.createElement(oe.Fragment,null,oe.createElement(au,{type:"target",position:n,isConnectable:e}),t?.label,oe.createElement(au,{type:"source",position:r,isConnectable:e}));HW.displayName="DefaultNode";var lj=b.memo(HW);const QW=({data:t,isConnectable:e,sourcePosition:n=kt.Bottom})=>oe.createElement(oe.Fragment,null,t?.label,oe.createElement(au,{type:"source",position:n,isConnectable:e}));QW.displayName="InputNode";var VW=b.memo(QW);const UW=({data:t,isConnectable:e,targetPosition:n=kt.Top})=>oe.createElement(oe.Fragment,null,oe.createElement(au,{type:"target",position:n,isConnectable:e}),t?.label);UW.displayName="OutputNode";var WW=b.memo(UW);const c7=()=>null;c7.displayName="GroupNode";const N7e=t=>({selectedNodes:t.getNodes().filter(e=>e.selected),selectedEdges:t.edges.filter(e=>e.selected).map(e=>({...e}))}),G1=t=>t.id;function C7e(t,e){return ks(t.selectedNodes.map(G1),e.selectedNodes.map(G1))&&ks(t.selectedEdges.map(G1),e.selectedEdges.map(G1))}const GW=b.memo(({onSelectionChange:t})=>{const e=gs(),{selectedNodes:n,selectedEdges:r}=gr(N7e,C7e);return b.useEffect(()=>{const s={nodes:n,edges:r};t?.(s),e.getState().onSelectionChange.forEach(i=>i(s))},[n,r,t]),null});GW.displayName="SelectionListener";const T7e=t=>!!t.onSelectionChange;function E7e({onSelectionChange:t}){const e=gr(T7e);return t||e?oe.createElement(GW,{onSelectionChange:t}):null}const _7e=t=>({setNodes:t.setNodes,setEdges:t.setEdges,setDefaultNodesAndEdges:t.setDefaultNodesAndEdges,setMinZoom:t.setMinZoom,setMaxZoom:t.setMaxZoom,setTranslateExtent:t.setTranslateExtent,setNodeExtent:t.setNodeExtent,reset:t.reset});function hh(t,e){b.useEffect(()=>{typeof t<"u"&&e(t)},[t])}function on(t,e,n){b.useEffect(()=>{typeof e<"u"&&n({[t]:e})},[e])}const A7e=({nodes:t,edges:e,defaultNodes:n,defaultEdges:r,onConnect:s,onConnectStart:i,onConnectEnd:a,onClickConnectStart:l,onClickConnectEnd:c,nodesDraggable:d,nodesConnectable:h,nodesFocusable:m,edgesFocusable:g,edgesUpdatable:x,elevateNodesOnSelect:y,minZoom:w,maxZoom:S,nodeExtent:k,onNodesChange:j,onEdgesChange:N,elementsSelectable:T,connectionMode:E,snapGrid:_,snapToGrid:A,translateExtent:D,connectOnClick:q,defaultEdgeOptions:B,fitView:H,fitViewOptions:W,onNodesDelete:ee,onEdgesDelete:I,onNodeDrag:V,onNodeDragStart:L,onNodeDragStop:$,onSelectionDrag:K,onSelectionDragStart:Y,onSelectionDragStop:R,noPanClassName:ie,nodeOrigin:X,rfId:z,autoPanOnConnect:U,autoPanOnNodeDrag:te,onError:ne,connectionRadius:G,isValidConnection:se,nodeDragThreshold:re})=>{const{setNodes:ae,setEdges:_e,setDefaultNodesAndEdges:Be,setMinZoom:Ye,setMaxZoom:Je,setTranslateExtent:Oe,setNodeExtent:Ve,reset:Ue}=gr(_7e,ks),$e=gs();return b.useEffect(()=>{const jt=r?.map(vt=>({...vt,...B}));return Be(n,jt),()=>{Ue()}},[]),on("defaultEdgeOptions",B,$e.setState),on("connectionMode",E,$e.setState),on("onConnect",s,$e.setState),on("onConnectStart",i,$e.setState),on("onConnectEnd",a,$e.setState),on("onClickConnectStart",l,$e.setState),on("onClickConnectEnd",c,$e.setState),on("nodesDraggable",d,$e.setState),on("nodesConnectable",h,$e.setState),on("nodesFocusable",m,$e.setState),on("edgesFocusable",g,$e.setState),on("edgesUpdatable",x,$e.setState),on("elementsSelectable",T,$e.setState),on("elevateNodesOnSelect",y,$e.setState),on("snapToGrid",A,$e.setState),on("snapGrid",_,$e.setState),on("onNodesChange",j,$e.setState),on("onEdgesChange",N,$e.setState),on("connectOnClick",q,$e.setState),on("fitViewOnInit",H,$e.setState),on("fitViewOnInitOptions",W,$e.setState),on("onNodesDelete",ee,$e.setState),on("onEdgesDelete",I,$e.setState),on("onNodeDrag",V,$e.setState),on("onNodeDragStart",L,$e.setState),on("onNodeDragStop",$,$e.setState),on("onSelectionDrag",K,$e.setState),on("onSelectionDragStart",Y,$e.setState),on("onSelectionDragStop",R,$e.setState),on("noPanClassName",ie,$e.setState),on("nodeOrigin",X,$e.setState),on("rfId",z,$e.setState),on("autoPanOnConnect",U,$e.setState),on("autoPanOnNodeDrag",te,$e.setState),on("onError",ne,$e.setState),on("connectionRadius",G,$e.setState),on("isValidConnection",se,$e.setState),on("nodeDragThreshold",re,$e.setState),hh(t,ae),hh(e,_e),hh(w,Ye),hh(S,Je),hh(D,Oe),hh(k,Ve),null},SD={display:"none"},M7e={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},XW="react-flow__node-desc",YW="react-flow__edge-desc",R7e="react-flow__aria-live",D7e=t=>t.ariaLiveMessage;function P7e({rfId:t}){const e=gr(D7e);return oe.createElement("div",{id:`${R7e}-${t}`,"aria-live":"assertive","aria-atomic":"true",style:M7e},e)}function z7e({rfId:t,disableKeyboardA11y:e}){return oe.createElement(oe.Fragment,null,oe.createElement("div",{id:`${XW}-${t}`,style:SD},"Press enter or space to select a node.",!e&&"You can then use the arrow keys to move the node around."," Press delete to remove it and escape to cancel."," "),oe.createElement("div",{id:`${YW}-${t}`,style:SD},"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."),!e&&oe.createElement(P7e,{rfId:t}))}var Cp=(t=null,e={actInsideInputWithModifier:!0})=>{const[n,r]=b.useState(!1),s=b.useRef(!1),i=b.useRef(new Set([])),[a,l]=b.useMemo(()=>{if(t!==null){const d=(Array.isArray(t)?t:[t]).filter(m=>typeof m=="string").map(m=>m.split("+")),h=d.reduce((m,g)=>m.concat(...g),[]);return[d,h]}return[[],[]]},[t]);return b.useEffect(()=>{const c=typeof document<"u"?document:null,d=e?.target||c;if(t!==null){const h=x=>{if(s.current=x.ctrlKey||x.metaKey||x.shiftKey,(!s.current||s.current&&!e.actInsideInputWithModifier)&&sj(x))return!1;const w=OD(x.code,l);i.current.add(x[w]),kD(a,i.current,!1)&&(x.preventDefault(),r(!0))},m=x=>{if((!s.current||s.current&&!e.actInsideInputWithModifier)&&sj(x))return!1;const w=OD(x.code,l);kD(a,i.current,!0)?(r(!1),i.current.clear()):i.current.delete(x[w]),x.key==="Meta"&&i.current.clear(),s.current=!1},g=()=>{i.current.clear(),r(!1)};return d?.addEventListener("keydown",h),d?.addEventListener("keyup",m),window.addEventListener("blur",g),()=>{d?.removeEventListener("keydown",h),d?.removeEventListener("keyup",m),window.removeEventListener("blur",g)}}},[t,r]),n};function kD(t,e,n){return t.filter(r=>n||r.length===e.size).some(r=>r.every(s=>e.has(s)))}function OD(t,e){return e.includes(t)?"code":"key"}function KW(t,e,n,r){const s=t.parentNode||t.parentId;if(!s)return n;const i=e.get(s),a=id(i,r);return KW(i,e,{x:(n.x??0)+a.x,y:(n.y??0)+a.y,z:(i[$r]?.z??0)>(n.z??0)?i[$r]?.z??0:n.z??0},r)}function ZW(t,e,n){t.forEach(r=>{const s=r.parentNode||r.parentId;if(s&&!t.has(s))throw new Error(`Parent node ${s} not found`);if(s||n?.[r.id]){const{x:i,y:a,z:l}=KW(r,t,{...r.position,z:r[$r]?.z??0},e);r.positionAbsolute={x:i,y:a},r[$r].z=l,n?.[r.id]&&(r[$r].isParent=!0)}})}function m5(t,e,n,r){const s=new Map,i={},a=r?1e3:0;return t.forEach(l=>{const c=(Ca(l.zIndex)?l.zIndex:0)+(l.selected?a:0),d=e.get(l.id),h={...l,positionAbsolute:{x:l.position.x,y:l.position.y}},m=l.parentNode||l.parentId;m&&(i[m]=!0);const g=d?.type&&d?.type!==l.type;Object.defineProperty(h,$r,{enumerable:!1,value:{handleBounds:g?void 0:d?.[$r]?.handleBounds,z:c}}),s.set(l.id,h)}),ZW(s,n,i),s}function JW(t,e={}){const{getNodes:n,width:r,height:s,minZoom:i,maxZoom:a,d3Zoom:l,d3Selection:c,fitViewOnInitDone:d,fitViewOnInit:h,nodeOrigin:m}=t(),g=e.initial&&!d&&h;if(l&&c&&(g||!e.initial)){const y=n().filter(S=>{const k=e.includeHiddenNodes?S.width&&S.height:!S.hidden;return e.nodes?.length?k&&e.nodes.some(j=>j.id===S.id):k}),w=y.every(S=>S.width&&S.height);if(y.length>0&&w){const S=iw(y,m),{x:k,y:j,zoom:N}=LW(S,r,s,e.minZoom??i,e.maxZoom??a,e.padding??.1),T=$l.translate(k,j).scale(N);return typeof e.duration=="number"&&e.duration>0?l.transform(qu(c,e.duration),T):l.transform(c,T),!0}}return!1}function I7e(t,e){return t.forEach(n=>{const r=e.get(n.id);r&&e.set(r.id,{...r,[$r]:r[$r],selected:n.selected})}),new Map(e)}function L7e(t,e){return e.map(n=>{const r=t.find(s=>s.id===n.id);return r&&(n.selected=r.selected),n})}function X1({changedNodes:t,changedEdges:e,get:n,set:r}){const{nodeInternals:s,edges:i,onNodesChange:a,onEdgesChange:l,hasDefaultNodes:c,hasDefaultEdges:d}=n();t?.length&&(c&&r({nodeInternals:I7e(t,s)}),a?.(t)),e?.length&&(d&&r({edges:L7e(e,i)}),l?.(e))}const fh=()=>{},B7e={zoomIn:fh,zoomOut:fh,zoomTo:fh,getZoom:()=>1,setViewport:fh,getViewport:()=>({x:0,y:0,zoom:1}),fitView:()=>!1,setCenter:fh,fitBounds:fh,project:t=>t,screenToFlowPosition:t=>t,flowToScreenPosition:t=>t,viewportInitialized:!1},F7e=t=>({d3Zoom:t.d3Zoom,d3Selection:t.d3Selection}),q7e=()=>{const t=gs(),{d3Zoom:e,d3Selection:n}=gr(F7e,ks);return b.useMemo(()=>n&&e?{zoomIn:s=>e.scaleBy(qu(n,s?.duration),1.2),zoomOut:s=>e.scaleBy(qu(n,s?.duration),1/1.2),zoomTo:(s,i)=>e.scaleTo(qu(n,i?.duration),s),getZoom:()=>t.getState().transform[2],setViewport:(s,i)=>{const[a,l,c]=t.getState().transform,d=$l.translate(s.x??a,s.y??l).scale(s.zoom??c);e.transform(qu(n,i?.duration),d)},getViewport:()=>{const[s,i,a]=t.getState().transform;return{x:s,y:i,zoom:a}},fitView:s=>JW(t.getState,s),setCenter:(s,i,a)=>{const{width:l,height:c,maxZoom:d}=t.getState(),h=typeof a?.zoom<"u"?a.zoom:d,m=l/2-s*h,g=c/2-i*h,x=$l.translate(m,g).scale(h);e.transform(qu(n,a?.duration),x)},fitBounds:(s,i)=>{const{width:a,height:l,minZoom:c,maxZoom:d}=t.getState(),{x:h,y:m,zoom:g}=LW(s,a,l,c,d,i?.padding??.1),x=$l.translate(h,m).scale(g);e.transform(qu(n,i?.duration),x)},project:s=>{const{transform:i,snapToGrid:a,snapGrid:l}=t.getState();return console.warn("[DEPRECATED] `project` is deprecated. Instead use `screenToFlowPosition`. There is no need to subtract the react flow bounds anymore! https://reactflow.dev/api-reference/types/react-flow-instance#screen-to-flow-position"),oj(s,i,a,l)},screenToFlowPosition:s=>{const{transform:i,snapToGrid:a,snapGrid:l,domNode:c}=t.getState();if(!c)return s;const{x:d,y:h}=c.getBoundingClientRect(),m={x:s.x-d,y:s.y-h};return oj(m,i,a,l)},flowToScreenPosition:s=>{const{transform:i,domNode:a}=t.getState();if(!a)return s;const{x:l,y:c}=a.getBoundingClientRect(),d=PW(s,i);return{x:d.x+l,y:d.y+c}},viewportInitialized:!0}:B7e,[e,n])};function u7(){const t=q7e(),e=gs(),n=b.useCallback(()=>e.getState().getNodes().map(w=>({...w})),[]),r=b.useCallback(w=>e.getState().nodeInternals.get(w),[]),s=b.useCallback(()=>{const{edges:w=[]}=e.getState();return w.map(S=>({...S}))},[]),i=b.useCallback(w=>{const{edges:S=[]}=e.getState();return S.find(k=>k.id===w)},[]),a=b.useCallback(w=>{const{getNodes:S,setNodes:k,hasDefaultNodes:j,onNodesChange:N}=e.getState(),T=S(),E=typeof w=="function"?w(T):w;if(j)k(E);else if(N){const _=E.length===0?T.map(A=>({type:"remove",id:A.id})):E.map(A=>({item:A,type:"reset"}));N(_)}},[]),l=b.useCallback(w=>{const{edges:S=[],setEdges:k,hasDefaultEdges:j,onEdgesChange:N}=e.getState(),T=typeof w=="function"?w(S):w;if(j)k(T);else if(N){const E=T.length===0?S.map(_=>({type:"remove",id:_.id})):T.map(_=>({item:_,type:"reset"}));N(E)}},[]),c=b.useCallback(w=>{const S=Array.isArray(w)?w:[w],{getNodes:k,setNodes:j,hasDefaultNodes:N,onNodesChange:T}=e.getState();if(N){const _=[...k(),...S];j(_)}else if(T){const E=S.map(_=>({item:_,type:"add"}));T(E)}},[]),d=b.useCallback(w=>{const S=Array.isArray(w)?w:[w],{edges:k=[],setEdges:j,hasDefaultEdges:N,onEdgesChange:T}=e.getState();if(N)j([...k,...S]);else if(T){const E=S.map(_=>({item:_,type:"add"}));T(E)}},[]),h=b.useCallback(()=>{const{getNodes:w,edges:S=[],transform:k}=e.getState(),[j,N,T]=k;return{nodes:w().map(E=>({...E})),edges:S.map(E=>({...E})),viewport:{x:j,y:N,zoom:T}}},[]),m=b.useCallback(({nodes:w,edges:S})=>{const{nodeInternals:k,getNodes:j,edges:N,hasDefaultNodes:T,hasDefaultEdges:E,onNodesDelete:_,onEdgesDelete:A,onNodesChange:D,onEdgesChange:q}=e.getState(),B=(w||[]).map(V=>V.id),H=(S||[]).map(V=>V.id),W=j().reduce((V,L)=>{const $=L.parentNode||L.parentId,K=!B.includes(L.id)&&$&&V.find(R=>R.id===$);return(typeof L.deletable=="boolean"?L.deletable:!0)&&(B.includes(L.id)||K)&&V.push(L),V},[]),ee=N.filter(V=>typeof V.deletable=="boolean"?V.deletable:!0),I=ee.filter(V=>H.includes(V.id));if(W||I){const V=IW(W,ee),L=[...I,...V],$=L.reduce((K,Y)=>(K.includes(Y.id)||K.push(Y.id),K),[]);if((E||T)&&(E&&e.setState({edges:N.filter(K=>!$.includes(K.id))}),T&&(W.forEach(K=>{k.delete(K.id)}),e.setState({nodeInternals:new Map(k)}))),$.length>0&&(A?.(L),q&&q($.map(K=>({id:K,type:"remove"})))),W.length>0&&(_?.(W),D)){const K=W.map(Y=>({id:Y.id,type:"remove"}));D(K)}}},[]),g=b.useCallback(w=>{const S=o7e(w),k=S?null:e.getState().nodeInternals.get(w.id);return!S&&!k?[null,null,S]:[S?w:pD(k),k,S]},[]),x=b.useCallback((w,S=!0,k)=>{const[j,N,T]=g(w);return j?(k||e.getState().getNodes()).filter(E=>{if(!T&&(E.id===N.id||!E.positionAbsolute))return!1;const _=pD(E),A=rj(_,j);return S&&A>0||A>=j.width*j.height}):[]},[]),y=b.useCallback((w,S,k=!0)=>{const[j]=g(w);if(!j)return!1;const N=rj(j,S);return k&&N>0||N>=j.width*j.height},[]);return b.useMemo(()=>({...t,getNodes:n,getNode:r,getEdges:s,getEdge:i,setNodes:a,setEdges:l,addNodes:c,addEdges:d,toObject:h,deleteElements:m,getIntersectingNodes:x,isNodeIntersecting:y}),[t,n,r,s,i,a,l,c,d,h,m,x,y])}const $7e={actInsideInputWithModifier:!1};var H7e=({deleteKeyCode:t,multiSelectionKeyCode:e})=>{const n=gs(),{deleteElements:r}=u7(),s=Cp(t,$7e),i=Cp(e);b.useEffect(()=>{if(s){const{edges:a,getNodes:l}=n.getState(),c=l().filter(h=>h.selected),d=a.filter(h=>h.selected);r({nodes:c,edges:d}),n.setState({nodesSelectionActive:!1})}},[s]),b.useEffect(()=>{n.setState({multiSelectionActive:i})},[i])};function Q7e(t){const e=gs();b.useEffect(()=>{let n;const r=()=>{if(!t.current)return;const s=n7(t.current);(s.height===0||s.width===0)&&e.getState().onError?.("004",Yl.error004()),e.setState({width:s.width||500,height:s.height||500})};return r(),window.addEventListener("resize",r),t.current&&(n=new ResizeObserver(()=>r()),n.observe(t.current)),()=>{window.removeEventListener("resize",r),n&&t.current&&n.unobserve(t.current)}},[])}const d7={position:"absolute",width:"100%",height:"100%",top:0,left:0},V7e=(t,e)=>t.x!==e.x||t.y!==e.y||t.zoom!==e.k,Y1=t=>({x:t.x,y:t.y,zoom:t.k}),mh=(t,e)=>t.target.closest(`.${e}`),jD=(t,e)=>e===2&&Array.isArray(t)&&t.includes(2),ND=t=>{const e=t.ctrlKey&&zy()?10:1;return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*e},U7e=t=>({d3Zoom:t.d3Zoom,d3Selection:t.d3Selection,d3ZoomHandler:t.d3ZoomHandler,userSelectionActive:t.userSelectionActive}),W7e=({onMove:t,onMoveStart:e,onMoveEnd:n,onPaneContextMenu:r,zoomOnScroll:s=!0,zoomOnPinch:i=!0,panOnScroll:a=!1,panOnScrollSpeed:l=.5,panOnScrollMode:c=Yu.Free,zoomOnDoubleClick:d=!0,elementsSelectable:h,panOnDrag:m=!0,defaultViewport:g,translateExtent:x,minZoom:y,maxZoom:w,zoomActivationKeyCode:S,preventScrolling:k=!0,children:j,noWheelClassName:N,noPanClassName:T})=>{const E=b.useRef(),_=gs(),A=b.useRef(!1),D=b.useRef(!1),q=b.useRef(null),B=b.useRef({x:0,y:0,zoom:0}),{d3Zoom:H,d3Selection:W,d3ZoomHandler:ee,userSelectionActive:I}=gr(U7e,ks),V=Cp(S),L=b.useRef(0),$=b.useRef(!1),K=b.useRef();return Q7e(q),b.useEffect(()=>{if(q.current){const Y=q.current.getBoundingClientRect(),R=kW().scaleExtent([y,w]).translateExtent(x),ie=va(q.current).call(R),X=$l.translate(g.x,g.y).scale(gf(g.zoom,y,w)),z=[[0,0],[Y.width,Y.height]],U=R.constrain()(X,z,x);R.transform(ie,U),R.wheelDelta(ND),_.setState({d3Zoom:R,d3Selection:ie,d3ZoomHandler:ie.on("wheel.zoom"),transform:[U.x,U.y,U.k],domNode:q.current.closest(".react-flow")})}},[]),b.useEffect(()=>{W&&H&&(a&&!V&&!I?W.on("wheel.zoom",Y=>{if(mh(Y,N))return!1;Y.preventDefault(),Y.stopImmediatePropagation();const R=W.property("__zoom").k||1;if(Y.ctrlKey&&i){const se=Qa(Y),re=ND(Y),ae=R*Math.pow(2,re);H.scaleTo(W,ae,se,Y);return}const ie=Y.deltaMode===1?20:1;let X=c===Yu.Vertical?0:Y.deltaX*ie,z=c===Yu.Horizontal?0:Y.deltaY*ie;!zy()&&Y.shiftKey&&c!==Yu.Vertical&&(X=Y.deltaY*ie,z=0),H.translateBy(W,-(X/R)*l,-(z/R)*l,{internal:!0});const U=Y1(W.property("__zoom")),{onViewportChangeStart:te,onViewportChange:ne,onViewportChangeEnd:G}=_.getState();clearTimeout(K.current),$.current||($.current=!0,e?.(Y,U),te?.(U)),$.current&&(t?.(Y,U),ne?.(U),K.current=setTimeout(()=>{n?.(Y,U),G?.(U),$.current=!1},150))},{passive:!1}):typeof ee<"u"&&W.on("wheel.zoom",function(Y,R){if(!k&&Y.type==="wheel"&&!Y.ctrlKey||mh(Y,N))return null;Y.preventDefault(),ee.call(this,Y,R)},{passive:!1}))},[I,a,c,W,H,ee,V,i,k,N,e,t,n]),b.useEffect(()=>{H&&H.on("start",Y=>{if(!Y.sourceEvent||Y.sourceEvent.internal)return null;L.current=Y.sourceEvent?.button;const{onViewportChangeStart:R}=_.getState(),ie=Y1(Y.transform);A.current=!0,B.current=ie,Y.sourceEvent?.type==="mousedown"&&_.setState({paneDragging:!0}),R?.(ie),e?.(Y.sourceEvent,ie)})},[H,e]),b.useEffect(()=>{H&&(I&&!A.current?H.on("zoom",null):I||H.on("zoom",Y=>{const{onViewportChange:R}=_.getState();if(_.setState({transform:[Y.transform.x,Y.transform.y,Y.transform.k]}),D.current=!!(r&&jD(m,L.current??0)),(t||R)&&!Y.sourceEvent?.internal){const ie=Y1(Y.transform);R?.(ie),t?.(Y.sourceEvent,ie)}}))},[I,H,t,m,r]),b.useEffect(()=>{H&&H.on("end",Y=>{if(!Y.sourceEvent||Y.sourceEvent.internal)return null;const{onViewportChangeEnd:R}=_.getState();if(A.current=!1,_.setState({paneDragging:!1}),r&&jD(m,L.current??0)&&!D.current&&r(Y.sourceEvent),D.current=!1,(n||R)&&V7e(B.current,Y.transform)){const ie=Y1(Y.transform);B.current=ie,clearTimeout(E.current),E.current=setTimeout(()=>{R?.(ie),n?.(Y.sourceEvent,ie)},a?150:0)}})},[H,a,m,n,r]),b.useEffect(()=>{H&&H.filter(Y=>{const R=V||s,ie=i&&Y.ctrlKey;if((m===!0||Array.isArray(m)&&m.includes(1))&&Y.button===1&&Y.type==="mousedown"&&(mh(Y,"react-flow__node")||mh(Y,"react-flow__edge")))return!0;if(!m&&!R&&!a&&!d&&!i||I||!d&&Y.type==="dblclick"||mh(Y,N)&&Y.type==="wheel"||mh(Y,T)&&(Y.type!=="wheel"||a&&Y.type==="wheel"&&!V)||!i&&Y.ctrlKey&&Y.type==="wheel"||!R&&!a&&!ie&&Y.type==="wheel"||!m&&(Y.type==="mousedown"||Y.type==="touchstart")||Array.isArray(m)&&!m.includes(Y.button)&&Y.type==="mousedown")return!1;const X=Array.isArray(m)&&m.includes(Y.button)||!Y.button||Y.button<=1;return(!Y.ctrlKey||Y.type==="wheel")&&X})},[I,H,s,i,a,d,m,h,V]),oe.createElement("div",{className:"react-flow__renderer",ref:q,style:d7},j)},G7e=t=>({userSelectionActive:t.userSelectionActive,userSelectionRect:t.userSelectionRect});function X7e(){const{userSelectionActive:t,userSelectionRect:e}=gr(G7e,ks);return t&&e?oe.createElement("div",{className:"react-flow__selection react-flow__container",style:{width:e.width,height:e.height,transform:`translate(${e.x}px, ${e.y}px)`}}):null}function CD(t,e){const n=e.parentNode||e.parentId,r=t.find(s=>s.id===n);if(r){const s=e.position.x+e.width-r.width,i=e.position.y+e.height-r.height;if(s>0||i>0||e.position.x<0||e.position.y<0){if(r.style={...r.style},r.style.width=r.style.width??r.width,r.style.height=r.style.height??r.height,s>0&&(r.style.width+=s),i>0&&(r.style.height+=i),e.position.x<0){const a=Math.abs(e.position.x);r.position.x=r.position.x-a,r.style.width+=a,e.position.x=0}if(e.position.y<0){const a=Math.abs(e.position.y);r.position.y=r.position.y-a,r.style.height+=a,e.position.y=0}r.width=r.style.width,r.height=r.style.height}}}function eG(t,e){if(t.some(r=>r.type==="reset"))return t.filter(r=>r.type==="reset").map(r=>r.item);const n=t.filter(r=>r.type==="add").map(r=>r.item);return e.reduce((r,s)=>{const i=t.filter(l=>l.id===s.id);if(i.length===0)return r.push(s),r;const a={...s};for(const l of i)if(l)switch(l.type){case"select":{a.selected=l.selected;break}case"position":{typeof l.position<"u"&&(a.position=l.position),typeof l.positionAbsolute<"u"&&(a.positionAbsolute=l.positionAbsolute),typeof l.dragging<"u"&&(a.dragging=l.dragging),a.expandParent&&CD(r,a);break}case"dimensions":{typeof l.dimensions<"u"&&(a.width=l.dimensions.width,a.height=l.dimensions.height),typeof l.updateStyle<"u"&&(a.style={...a.style||{},...l.dimensions}),typeof l.resizing=="boolean"&&(a.resizing=l.resizing),a.expandParent&&CD(r,a);break}case"remove":return r}return r.push(a),r},n)}function tG(t,e){return eG(t,e)}function Y7e(t,e){return eG(t,e)}const Lc=(t,e)=>({id:t,type:"select",selected:e});function Ah(t,e){return t.reduce((n,r)=>{const s=e.includes(r.id);return!r.selected&&s?(r.selected=!0,n.push(Lc(r.id,!0))):r.selected&&!s&&(r.selected=!1,n.push(Lc(r.id,!1))),n},[])}const p5=(t,e)=>n=>{n.target===e.current&&t?.(n)},K7e=t=>({userSelectionActive:t.userSelectionActive,elementsSelectable:t.elementsSelectable,dragging:t.paneDragging}),nG=b.memo(({isSelecting:t,selectionMode:e=Np.Full,panOnDrag:n,onSelectionStart:r,onSelectionEnd:s,onPaneClick:i,onPaneContextMenu:a,onPaneScroll:l,onPaneMouseEnter:c,onPaneMouseMove:d,onPaneMouseLeave:h,children:m})=>{const g=b.useRef(null),x=gs(),y=b.useRef(0),w=b.useRef(0),S=b.useRef(),{userSelectionActive:k,elementsSelectable:j,dragging:N}=gr(K7e,ks),T=()=>{x.setState({userSelectionActive:!1,userSelectionRect:null}),y.current=0,w.current=0},E=ee=>{i?.(ee),x.getState().resetSelectedElements(),x.setState({nodesSelectionActive:!1})},_=ee=>{if(Array.isArray(n)&&n?.includes(2)){ee.preventDefault();return}a?.(ee)},A=l?ee=>l(ee):void 0,D=ee=>{const{resetSelectedElements:I,domNode:V}=x.getState();if(S.current=V?.getBoundingClientRect(),!j||!t||ee.button!==0||ee.target!==g.current||!S.current)return;const{x:L,y:$}=Wc(ee,S.current);I(),x.setState({userSelectionRect:{width:0,height:0,startX:L,startY:$,x:L,y:$}}),r?.(ee)},q=ee=>{const{userSelectionRect:I,nodeInternals:V,edges:L,transform:$,onNodesChange:K,onEdgesChange:Y,nodeOrigin:R,getNodes:ie}=x.getState();if(!t||!S.current||!I)return;x.setState({userSelectionActive:!0,nodesSelectionActive:!1});const X=Wc(ee,S.current),z=I.startX??0,U=I.startY??0,te={...I,x:X.xae.id),re=G.map(ae=>ae.id);if(y.current!==re.length){y.current=re.length;const ae=Ah(ne,re);ae.length&&K?.(ae)}if(w.current!==se.length){w.current=se.length;const ae=Ah(L,se);ae.length&&Y?.(ae)}x.setState({userSelectionRect:te})},B=ee=>{if(ee.button!==0)return;const{userSelectionRect:I}=x.getState();!k&&I&&ee.target===g.current&&E?.(ee),x.setState({nodesSelectionActive:y.current>0}),T(),s?.(ee)},H=ee=>{k&&(x.setState({nodesSelectionActive:y.current>0}),s?.(ee)),T()},W=j&&(t||k);return oe.createElement("div",{className:Ls(["react-flow__pane",{dragging:N,selection:t}]),onClick:W?void 0:p5(E,g),onContextMenu:p5(_,g),onWheel:p5(A,g),onMouseEnter:W?void 0:c,onMouseDown:W?D:void 0,onMouseMove:W?q:d,onMouseUp:W?B:void 0,onMouseLeave:W?H:h,ref:g,style:d7},m,oe.createElement(X7e,null))});nG.displayName="Pane";function rG(t,e){const n=t.parentNode||t.parentId;if(!n)return!1;const r=e.get(n);return r?r.selected?!0:rG(r,e):!1}function TD(t,e,n){let r=t;do{if(r?.matches(e))return!0;if(r===n.current)return!1;r=r.parentElement}while(r);return!1}function Z7e(t,e,n,r){return Array.from(t.values()).filter(s=>(s.selected||s.id===r)&&(!s.parentNode||s.parentId||!rG(s,t))&&(s.draggable||e&&typeof s.draggable>"u")).map(s=>({id:s.id,position:s.position||{x:0,y:0},positionAbsolute:s.positionAbsolute||{x:0,y:0},distance:{x:n.x-(s.positionAbsolute?.x??0),y:n.y-(s.positionAbsolute?.y??0)},delta:{x:0,y:0},extent:s.extent,parentNode:s.parentNode||s.parentId,parentId:s.parentNode||s.parentId,width:s.width,height:s.height,expandParent:s.expandParent}))}function J7e(t,e){return!e||e==="parent"?e:[e[0],[e[1][0]-(t.width||0),e[1][1]-(t.height||0)]]}function sG(t,e,n,r,s=[0,0],i){const a=J7e(t,t.extent||r);let l=a;const c=t.parentNode||t.parentId;if(t.extent==="parent"&&!t.expandParent)if(c&&t.width&&t.height){const m=n.get(c),{x:g,y:x}=id(m,s).positionAbsolute;l=m&&Ca(g)&&Ca(x)&&Ca(m.width)&&Ca(m.height)?[[g+t.width*s[0],x+t.height*s[1]],[g+m.width-t.width+t.width*s[0],x+m.height-t.height+t.height*s[1]]]:l}else i?.("005",Yl.error005()),l=a;else if(t.extent&&c&&t.extent!=="parent"){const m=n.get(c),{x:g,y:x}=id(m,s).positionAbsolute;l=[[t.extent[0][0]+g,t.extent[0][1]+x],[t.extent[1][0]+g,t.extent[1][1]+x]]}let d={x:0,y:0};if(c){const m=n.get(c);d=id(m,s).positionAbsolute}const h=l&&l!=="parent"?r7(e,l):e;return{position:{x:h.x-d.x,y:h.y-d.y},positionAbsolute:h}}function g5({nodeId:t,dragItems:e,nodeInternals:n}){const r=e.map(s=>({...n.get(s.id),position:s.position,positionAbsolute:s.positionAbsolute}));return[t?r.find(s=>s.id===t):r[0],r]}const ED=(t,e,n,r)=>{const s=e.querySelectorAll(t);if(!s||!s.length)return null;const i=Array.from(s),a=e.getBoundingClientRect(),l={x:a.width*r[0],y:a.height*r[1]};return i.map(c=>{const d=c.getBoundingClientRect();return{id:c.getAttribute("data-handleid"),position:c.getAttribute("data-handlepos"),x:(d.left-a.left-l.x)/n,y:(d.top-a.top-l.y)/n,...n7(c)}})};function i0(t,e,n){return n===void 0?n:r=>{const s=e().nodeInternals.get(t);s&&n(r,{...s})}}function cj({id:t,store:e,unselect:n=!1,nodeRef:r}){const{addSelectedNodes:s,unselectNodesAndEdges:i,multiSelectionActive:a,nodeInternals:l,onError:c}=e.getState(),d=l.get(t);if(!d){c?.("012",Yl.error012(t));return}e.setState({nodesSelectionActive:!1}),d.selected?(n||d.selected&&a)&&(i({nodes:[d],edges:[]}),requestAnimationFrame(()=>r?.current?.blur())):s([t])}function eCe(){const t=gs();return b.useCallback(({sourceEvent:n})=>{const{transform:r,snapGrid:s,snapToGrid:i}=t.getState(),a=n.touches?n.touches[0].clientX:n.clientX,l=n.touches?n.touches[0].clientY:n.clientY,c={x:(a-r[0])/r[2],y:(l-r[1])/r[2]};return{xSnapped:i?s[0]*Math.round(c.x/s[0]):c.x,ySnapped:i?s[1]*Math.round(c.y/s[1]):c.y,...c}},[])}function x5(t){return(e,n,r)=>t?.(e,r)}function iG({nodeRef:t,disabled:e=!1,noDragClassName:n,handleSelector:r,nodeId:s,isSelectable:i,selectNodesOnDrag:a}){const l=gs(),[c,d]=b.useState(!1),h=b.useRef([]),m=b.useRef({x:null,y:null}),g=b.useRef(0),x=b.useRef(null),y=b.useRef({x:0,y:0}),w=b.useRef(null),S=b.useRef(!1),k=b.useRef(!1),j=b.useRef(!1),N=eCe();return b.useEffect(()=>{if(t?.current){const T=va(t.current),E=({x:D,y:q})=>{const{nodeInternals:B,onNodeDrag:H,onSelectionDrag:W,updateNodePositions:ee,nodeExtent:I,snapGrid:V,snapToGrid:L,nodeOrigin:$,onError:K}=l.getState();m.current={x:D,y:q};let Y=!1,R={x:0,y:0,x2:0,y2:0};if(h.current.length>1&&I){const X=iw(h.current,$);R=jp(X)}if(h.current=h.current.map(X=>{const z={x:D-X.distance.x,y:q-X.distance.y};L&&(z.x=V[0]*Math.round(z.x/V[0]),z.y=V[1]*Math.round(z.y/V[1]));const U=[[I[0][0],I[0][1]],[I[1][0],I[1][1]]];h.current.length>1&&I&&!X.extent&&(U[0][0]=X.positionAbsolute.x-R.x+I[0][0],U[1][0]=X.positionAbsolute.x+(X.width??0)-R.x2+I[1][0],U[0][1]=X.positionAbsolute.y-R.y+I[0][1],U[1][1]=X.positionAbsolute.y+(X.height??0)-R.y2+I[1][1]);const te=sG(X,z,B,U,$,K);return Y=Y||X.position.x!==te.position.x||X.position.y!==te.position.y,X.position=te.position,X.positionAbsolute=te.positionAbsolute,X}),!Y)return;ee(h.current,!0,!0),d(!0);const ie=s?H:x5(W);if(ie&&w.current){const[X,z]=g5({nodeId:s,dragItems:h.current,nodeInternals:B});ie(w.current,X,z)}},_=()=>{if(!x.current)return;const[D,q]=jW(y.current,x.current);if(D!==0||q!==0){const{transform:B,panBy:H}=l.getState();m.current.x=(m.current.x??0)-D/B[2],m.current.y=(m.current.y??0)-q/B[2],H({x:D,y:q})&&E(m.current)}g.current=requestAnimationFrame(_)},A=D=>{const{nodeInternals:q,multiSelectionActive:B,nodesDraggable:H,unselectNodesAndEdges:W,onNodeDragStart:ee,onSelectionDragStart:I}=l.getState();k.current=!0;const V=s?ee:x5(I);(!a||!i)&&!B&&s&&(q.get(s)?.selected||W()),s&&i&&a&&cj({id:s,store:l,nodeRef:t});const L=N(D);if(m.current=L,h.current=Z7e(q,H,L,s),V&&h.current){const[$,K]=g5({nodeId:s,dragItems:h.current,nodeInternals:q});V(D.sourceEvent,$,K)}};if(e)T.on(".drag",null);else{const D=I6e().on("start",q=>{const{domNode:B,nodeDragThreshold:H}=l.getState();H===0&&A(q),j.current=!1;const W=N(q);m.current=W,x.current=B?.getBoundingClientRect()||null,y.current=Wc(q.sourceEvent,x.current)}).on("drag",q=>{const B=N(q),{autoPanOnNodeDrag:H,nodeDragThreshold:W}=l.getState();if(q.sourceEvent.type==="touchmove"&&q.sourceEvent.touches.length>1&&(j.current=!0),!j.current){if(!S.current&&k.current&&H&&(S.current=!0,_()),!k.current){const ee=B.xSnapped-(m?.current?.x??0),I=B.ySnapped-(m?.current?.y??0);Math.sqrt(ee*ee+I*I)>W&&A(q)}(m.current.x!==B.xSnapped||m.current.y!==B.ySnapped)&&h.current&&k.current&&(w.current=q.sourceEvent,y.current=Wc(q.sourceEvent,x.current),E(B))}}).on("end",q=>{if(!(!k.current||j.current)&&(d(!1),S.current=!1,k.current=!1,cancelAnimationFrame(g.current),h.current)){const{updateNodePositions:B,nodeInternals:H,onNodeDragStop:W,onSelectionDragStop:ee}=l.getState(),I=s?W:x5(ee);if(B(h.current,!1,!1),I){const[V,L]=g5({nodeId:s,dragItems:h.current,nodeInternals:H});I(q.sourceEvent,V,L)}}}).filter(q=>{const B=q.target;return!q.button&&(!n||!TD(B,`.${n}`,t))&&(!r||TD(B,r,t))});return T.call(D),()=>{T.on(".drag",null)}}}},[t,e,n,r,i,l,s,a,N]),c}function aG(){const t=gs();return b.useCallback(n=>{const{nodeInternals:r,nodeExtent:s,updateNodePositions:i,getNodes:a,snapToGrid:l,snapGrid:c,onError:d,nodesDraggable:h}=t.getState(),m=a().filter(j=>j.selected&&(j.draggable||h&&typeof j.draggable>"u")),g=l?c[0]:5,x=l?c[1]:5,y=n.isShiftPressed?4:1,w=n.x*g*y,S=n.y*x*y,k=m.map(j=>{if(j.positionAbsolute){const N={x:j.positionAbsolute.x+w,y:j.positionAbsolute.y+S};l&&(N.x=c[0]*Math.round(N.x/c[0]),N.y=c[1]*Math.round(N.y/c[1]));const{positionAbsolute:T,position:E}=sG(j,N,r,s,void 0,d);j.position=E,j.positionAbsolute=T}return j});i(k,!0,!1)},[])}const Vh={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}};var a0=t=>{const e=({id:n,type:r,data:s,xPos:i,yPos:a,xPosOrigin:l,yPosOrigin:c,selected:d,onClick:h,onMouseEnter:m,onMouseMove:g,onMouseLeave:x,onContextMenu:y,onDoubleClick:w,style:S,className:k,isDraggable:j,isSelectable:N,isConnectable:T,isFocusable:E,selectNodesOnDrag:_,sourcePosition:A,targetPosition:D,hidden:q,resizeObserver:B,dragHandle:H,zIndex:W,isParent:ee,noDragClassName:I,noPanClassName:V,initialized:L,disableKeyboardA11y:$,ariaLabel:K,rfId:Y,hasHandleBounds:R})=>{const ie=gs(),X=b.useRef(null),z=b.useRef(null),U=b.useRef(A),te=b.useRef(D),ne=b.useRef(r),G=N||j||h||m||g||x,se=aG(),re=i0(n,ie.getState,m),ae=i0(n,ie.getState,g),_e=i0(n,ie.getState,x),Be=i0(n,ie.getState,y),Ye=i0(n,ie.getState,w),Je=Ue=>{const{nodeDragThreshold:$e}=ie.getState();if(N&&(!_||!j||$e>0)&&cj({id:n,store:ie,nodeRef:X}),h){const jt=ie.getState().nodeInternals.get(n);jt&&h(Ue,{...jt})}},Oe=Ue=>{if(!sj(Ue)&&!$)if(EW.includes(Ue.key)&&N){const $e=Ue.key==="Escape";cj({id:n,store:ie,unselect:$e,nodeRef:X})}else j&&d&&Object.prototype.hasOwnProperty.call(Vh,Ue.key)&&(ie.setState({ariaLiveMessage:`Moved selected node ${Ue.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~i}, y: ${~~a}`}),se({x:Vh[Ue.key].x,y:Vh[Ue.key].y,isShiftPressed:Ue.shiftKey}))};b.useEffect(()=>()=>{z.current&&(B?.unobserve(z.current),z.current=null)},[]),b.useEffect(()=>{if(X.current&&!q){const Ue=X.current;(!L||!R||z.current!==Ue)&&(z.current&&B?.unobserve(z.current),B?.observe(Ue),z.current=Ue)}},[q,L,R]),b.useEffect(()=>{const Ue=ne.current!==r,$e=U.current!==A,jt=te.current!==D;X.current&&(Ue||$e||jt)&&(Ue&&(ne.current=r),$e&&(U.current=A),jt&&(te.current=D),ie.getState().updateNodeDimensions([{id:n,nodeElement:X.current,forceUpdate:!0}]))},[n,r,A,D]);const Ve=iG({nodeRef:X,disabled:q||!j,noDragClassName:I,handleSelector:H,nodeId:n,isSelectable:N,selectNodesOnDrag:_});return q?null:oe.createElement("div",{className:Ls(["react-flow__node",`react-flow__node-${r}`,{[V]:j},k,{selected:d,selectable:N,parent:ee,dragging:Ve}]),ref:X,style:{zIndex:W,transform:`translate(${l}px,${c}px)`,pointerEvents:G?"all":"none",visibility:L?"visible":"hidden",...S},"data-id":n,"data-testid":`rf__node-${n}`,onMouseEnter:re,onMouseMove:ae,onMouseLeave:_e,onContextMenu:Be,onClick:Je,onDoubleClick:Ye,onKeyDown:E?Oe:void 0,tabIndex:E?0:void 0,role:E?"button":void 0,"aria-describedby":$?void 0:`${XW}-${Y}`,"aria-label":K},oe.createElement(m7e,{value:n},oe.createElement(t,{id:n,data:s,type:r,xPos:i,yPos:a,selected:d,isConnectable:T,sourcePosition:A,targetPosition:D,dragging:Ve,dragHandle:H,zIndex:W})))};return e.displayName="NodeWrapper",b.memo(e)};const tCe=t=>{const e=t.getNodes().filter(n=>n.selected);return{...iw(e,t.nodeOrigin),transformString:`translate(${t.transform[0]}px,${t.transform[1]}px) scale(${t.transform[2]})`,userSelectionActive:t.userSelectionActive}};function nCe({onSelectionContextMenu:t,noPanClassName:e,disableKeyboardA11y:n}){const r=gs(),{width:s,height:i,x:a,y:l,transformString:c,userSelectionActive:d}=gr(tCe,ks),h=aG(),m=b.useRef(null);if(b.useEffect(()=>{n||m.current?.focus({preventScroll:!0})},[n]),iG({nodeRef:m}),d||!s||!i)return null;const g=t?y=>{const w=r.getState().getNodes().filter(S=>S.selected);t(y,w)}:void 0,x=y=>{Object.prototype.hasOwnProperty.call(Vh,y.key)&&h({x:Vh[y.key].x,y:Vh[y.key].y,isShiftPressed:y.shiftKey})};return oe.createElement("div",{className:Ls(["react-flow__nodesselection","react-flow__container",e]),style:{transform:c}},oe.createElement("div",{ref:m,className:"react-flow__nodesselection-rect",onContextMenu:g,tabIndex:n?void 0:-1,onKeyDown:n?void 0:x,style:{width:s,height:i,top:l,left:a}}))}var rCe=b.memo(nCe);const sCe=t=>t.nodesSelectionActive,oG=({children:t,onPaneClick:e,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:s,onPaneContextMenu:i,onPaneScroll:a,deleteKeyCode:l,onMove:c,onMoveStart:d,onMoveEnd:h,selectionKeyCode:m,selectionOnDrag:g,selectionMode:x,onSelectionStart:y,onSelectionEnd:w,multiSelectionKeyCode:S,panActivationKeyCode:k,zoomActivationKeyCode:j,elementsSelectable:N,zoomOnScroll:T,zoomOnPinch:E,panOnScroll:_,panOnScrollSpeed:A,panOnScrollMode:D,zoomOnDoubleClick:q,panOnDrag:B,defaultViewport:H,translateExtent:W,minZoom:ee,maxZoom:I,preventScrolling:V,onSelectionContextMenu:L,noWheelClassName:$,noPanClassName:K,disableKeyboardA11y:Y})=>{const R=gr(sCe),ie=Cp(m),X=Cp(k),z=X||B,U=X||_,te=ie||g&&z!==!0;return H7e({deleteKeyCode:l,multiSelectionKeyCode:S}),oe.createElement(W7e,{onMove:c,onMoveStart:d,onMoveEnd:h,onPaneContextMenu:i,elementsSelectable:N,zoomOnScroll:T,zoomOnPinch:E,panOnScroll:U,panOnScrollSpeed:A,panOnScrollMode:D,zoomOnDoubleClick:q,panOnDrag:!ie&&z,defaultViewport:H,translateExtent:W,minZoom:ee,maxZoom:I,zoomActivationKeyCode:j,preventScrolling:V,noWheelClassName:$,noPanClassName:K},oe.createElement(nG,{onSelectionStart:y,onSelectionEnd:w,onPaneClick:e,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:s,onPaneContextMenu:i,onPaneScroll:a,panOnDrag:z,isSelecting:!!te,selectionMode:x},t,R&&oe.createElement(rCe,{onSelectionContextMenu:L,noPanClassName:K,disableKeyboardA11y:Y})))};oG.displayName="FlowRenderer";var iCe=b.memo(oG);function aCe(t){return gr(b.useCallback(n=>t?zW(n.nodeInternals,{x:0,y:0,width:n.width,height:n.height},n.transform,!0):n.getNodes(),[t]))}function oCe(t){const e={input:a0(t.input||VW),default:a0(t.default||lj),output:a0(t.output||WW),group:a0(t.group||c7)},n={},r=Object.keys(t).filter(s=>!["input","default","output","group"].includes(s)).reduce((s,i)=>(s[i]=a0(t[i]||lj),s),n);return{...e,...r}}const lCe=({x:t,y:e,width:n,height:r,origin:s})=>!n||!r?{x:t,y:e}:s[0]<0||s[1]<0||s[0]>1||s[1]>1?{x:t,y:e}:{x:t-n*s[0],y:e-r*s[1]},cCe=t=>({nodesDraggable:t.nodesDraggable,nodesConnectable:t.nodesConnectable,nodesFocusable:t.nodesFocusable,elementsSelectable:t.elementsSelectable,updateNodeDimensions:t.updateNodeDimensions,onError:t.onError}),lG=t=>{const{nodesDraggable:e,nodesConnectable:n,nodesFocusable:r,elementsSelectable:s,updateNodeDimensions:i,onError:a}=gr(cCe,ks),l=aCe(t.onlyRenderVisibleElements),c=b.useRef(),d=b.useMemo(()=>{if(typeof ResizeObserver>"u")return null;const h=new ResizeObserver(m=>{const g=m.map(x=>({id:x.target.getAttribute("data-id"),nodeElement:x.target,forceUpdate:!0}));i(g)});return c.current=h,h},[]);return b.useEffect(()=>()=>{c?.current?.disconnect()},[]),oe.createElement("div",{className:"react-flow__nodes",style:d7},l.map(h=>{let m=h.type||"default";t.nodeTypes[m]||(a?.("003",Yl.error003(m)),m="default");const g=t.nodeTypes[m]||t.nodeTypes.default,x=!!(h.draggable||e&&typeof h.draggable>"u"),y=!!(h.selectable||s&&typeof h.selectable>"u"),w=!!(h.connectable||n&&typeof h.connectable>"u"),S=!!(h.focusable||r&&typeof h.focusable>"u"),k=t.nodeExtent?r7(h.positionAbsolute,t.nodeExtent):h.positionAbsolute,j=k?.x??0,N=k?.y??0,T=lCe({x:j,y:N,width:h.width??0,height:h.height??0,origin:t.nodeOrigin});return oe.createElement(g,{key:h.id,id:h.id,className:h.className,style:h.style,type:m,data:h.data,sourcePosition:h.sourcePosition||kt.Bottom,targetPosition:h.targetPosition||kt.Top,hidden:h.hidden,xPos:j,yPos:N,xPosOrigin:T.x,yPosOrigin:T.y,selectNodesOnDrag:t.selectNodesOnDrag,onClick:t.onNodeClick,onMouseEnter:t.onNodeMouseEnter,onMouseMove:t.onNodeMouseMove,onMouseLeave:t.onNodeMouseLeave,onContextMenu:t.onNodeContextMenu,onDoubleClick:t.onNodeDoubleClick,selected:!!h.selected,isDraggable:x,isSelectable:y,isConnectable:w,isFocusable:S,resizeObserver:d,dragHandle:h.dragHandle,zIndex:h[$r]?.z??0,isParent:!!h[$r]?.isParent,noDragClassName:t.noDragClassName,noPanClassName:t.noPanClassName,initialized:!!h.width&&!!h.height,rfId:t.rfId,disableKeyboardA11y:t.disableKeyboardA11y,ariaLabel:h.ariaLabel,hasHandleBounds:!!h[$r]?.handleBounds})}))};lG.displayName="NodeRenderer";var uCe=b.memo(lG);const dCe=(t,e,n)=>n===kt.Left?t-e:n===kt.Right?t+e:t,hCe=(t,e,n)=>n===kt.Top?t-e:n===kt.Bottom?t+e:t,_D="react-flow__edgeupdater",AD=({position:t,centerX:e,centerY:n,radius:r=10,onMouseDown:s,onMouseEnter:i,onMouseOut:a,type:l})=>oe.createElement("circle",{onMouseDown:s,onMouseEnter:i,onMouseOut:a,className:Ls([_D,`${_D}-${l}`]),cx:dCe(e,r,t),cy:hCe(n,r,t),r,stroke:"transparent",fill:"transparent"}),fCe=()=>!0;var ph=t=>{const e=({id:n,className:r,type:s,data:i,onClick:a,onEdgeDoubleClick:l,selected:c,animated:d,label:h,labelStyle:m,labelShowBg:g,labelBgStyle:x,labelBgPadding:y,labelBgBorderRadius:w,style:S,source:k,target:j,sourceX:N,sourceY:T,targetX:E,targetY:_,sourcePosition:A,targetPosition:D,elementsSelectable:q,hidden:B,sourceHandleId:H,targetHandleId:W,onContextMenu:ee,onMouseEnter:I,onMouseMove:V,onMouseLeave:L,reconnectRadius:$,onReconnect:K,onReconnectStart:Y,onReconnectEnd:R,markerEnd:ie,markerStart:X,rfId:z,ariaLabel:U,isFocusable:te,isReconnectable:ne,pathOptions:G,interactionWidth:se,disableKeyboardA11y:re})=>{const ae=b.useRef(null),[_e,Be]=b.useState(!1),[Ye,Je]=b.useState(!1),Oe=gs(),Ve=b.useMemo(()=>`url('#${aj(X,z)}')`,[X,z]),Ue=b.useMemo(()=>`url('#${aj(ie,z)}')`,[ie,z]);if(B)return null;const $e=Rt=>{const{edges:Hn,addSelectedEdges:We,unselectNodesAndEdges:ot,multiSelectionActive:dn}=Oe.getState(),Pt=Hn.find(xn=>xn.id===n);Pt&&(q&&(Oe.setState({nodesSelectionActive:!1}),Pt.selected&&dn?(ot({nodes:[],edges:[Pt]}),ae.current?.blur()):We([n])),a&&a(Rt,Pt))},jt=s0(n,Oe.getState,l),vt=s0(n,Oe.getState,ee),$n=s0(n,Oe.getState,I),qt=s0(n,Oe.getState,V),un=s0(n,Oe.getState,L),Mt=(Rt,Hn)=>{if(Rt.button!==0)return;const{edges:We,isValidConnection:ot}=Oe.getState(),dn=Hn?j:k,Pt=(Hn?W:H)||null,xn=Hn?"target":"source",dt=ot||fCe,rn=Hn,wt=We.find(lt=>lt.id===n);Je(!0),Y?.(Rt,wt,xn);const Wt=lt=>{Je(!1),R?.(lt,wt,xn)};qW({event:Rt,handleId:Pt,nodeId:dn,onConnect:lt=>K?.(wt,lt),isTarget:rn,getState:Oe.getState,setState:Oe.setState,isValidConnection:dt,edgeUpdaterType:xn,onReconnectEnd:Wt})},ct=Rt=>Mt(Rt,!0),Ne=Rt=>Mt(Rt,!1),ze=()=>Be(!0),rt=()=>Be(!1),bt=!q&&!a,zt=Rt=>{if(!re&&EW.includes(Rt.key)&&q){const{unselectNodesAndEdges:Hn,addSelectedEdges:We,edges:ot}=Oe.getState();Rt.key==="Escape"?(ae.current?.blur(),Hn({edges:[ot.find(Pt=>Pt.id===n)]})):We([n])}};return oe.createElement("g",{className:Ls(["react-flow__edge",`react-flow__edge-${s}`,r,{selected:c,animated:d,inactive:bt,updating:_e}]),onClick:$e,onDoubleClick:jt,onContextMenu:vt,onMouseEnter:$n,onMouseMove:qt,onMouseLeave:un,onKeyDown:te?zt:void 0,tabIndex:te?0:void 0,role:te?"button":"img","data-testid":`rf__edge-${n}`,"aria-label":U===null?void 0:U||`Edge from ${k} to ${j}`,"aria-describedby":te?`${YW}-${z}`:void 0,ref:ae},!Ye&&oe.createElement(t,{id:n,source:k,target:j,selected:c,animated:d,label:h,labelStyle:m,labelShowBg:g,labelBgStyle:x,labelBgPadding:y,labelBgBorderRadius:w,data:i,style:S,sourceX:N,sourceY:T,targetX:E,targetY:_,sourcePosition:A,targetPosition:D,sourceHandleId:H,targetHandleId:W,markerStart:Ve,markerEnd:Ue,pathOptions:G,interactionWidth:se}),ne&&oe.createElement(oe.Fragment,null,(ne==="source"||ne===!0)&&oe.createElement(AD,{position:A,centerX:N,centerY:T,radius:$,onMouseDown:ct,onMouseEnter:ze,onMouseOut:rt,type:"source"}),(ne==="target"||ne===!0)&&oe.createElement(AD,{position:D,centerX:E,centerY:_,radius:$,onMouseDown:Ne,onMouseEnter:ze,onMouseOut:rt,type:"target"})))};return e.displayName="EdgeWrapper",b.memo(e)};function mCe(t){const e={default:ph(t.default||Ly),straight:ph(t.bezier||a7),step:ph(t.step||i7),smoothstep:ph(t.step||sw),simplebezier:ph(t.simplebezier||s7)},n={},r=Object.keys(t).filter(s=>!["default","bezier"].includes(s)).reduce((s,i)=>(s[i]=ph(t[i]||Ly),s),n);return{...e,...r}}function MD(t,e,n=null){const r=(n?.x||0)+e.x,s=(n?.y||0)+e.y,i=n?.width||e.width,a=n?.height||e.height;switch(t){case kt.Top:return{x:r+i/2,y:s};case kt.Right:return{x:r+i,y:s+a/2};case kt.Bottom:return{x:r+i/2,y:s+a};case kt.Left:return{x:r,y:s+a/2}}}function RD(t,e){return t?t.length===1||!e?t[0]:e&&t.find(n=>n.id===e)||null:null}const pCe=(t,e,n,r,s,i)=>{const a=MD(n,t,e),l=MD(i,r,s);return{sourceX:a.x,sourceY:a.y,targetX:l.x,targetY:l.y}};function gCe({sourcePos:t,targetPos:e,sourceWidth:n,sourceHeight:r,targetWidth:s,targetHeight:i,width:a,height:l,transform:c}){const d={x:Math.min(t.x,e.x),y:Math.min(t.y,e.y),x2:Math.max(t.x+n,e.x+s),y2:Math.max(t.y+r,e.y+i)};d.x===d.x2&&(d.x2+=1),d.y===d.y2&&(d.y2+=1);const h=jp({x:(0-c[0])/c[2],y:(0-c[1])/c[2],width:a/c[2],height:l/c[2]}),m=Math.max(0,Math.min(h.x2,d.x2)-Math.max(h.x,d.x)),g=Math.max(0,Math.min(h.y2,d.y2)-Math.max(h.y,d.y));return Math.ceil(m*g)>0}function DD(t){const e=t?.[$r]?.handleBounds||null,n=e&&t?.width&&t?.height&&typeof t?.positionAbsolute?.x<"u"&&typeof t?.positionAbsolute?.y<"u";return[{x:t?.positionAbsolute?.x||0,y:t?.positionAbsolute?.y||0,width:t?.width||0,height:t?.height||0},e,!!n]}const xCe=[{level:0,isMaxLevel:!0,edges:[]}];function vCe(t,e,n=!1){let r=-1;const s=t.reduce((a,l)=>{const c=Ca(l.zIndex);let d=c?l.zIndex:0;if(n){const h=e.get(l.target),m=e.get(l.source),g=l.selected||h?.selected||m?.selected,x=Math.max(m?.[$r]?.z||0,h?.[$r]?.z||0,1e3);d=(c?l.zIndex:0)+(g?x:0)}return a[d]?a[d].push(l):a[d]=[l],r=d>r?d:r,a},{}),i=Object.entries(s).map(([a,l])=>{const c=+a;return{edges:l,level:c,isMaxLevel:c===r}});return i.length===0?xCe:i}function yCe(t,e,n){const r=gr(b.useCallback(s=>t?s.edges.filter(i=>{const a=e.get(i.source),l=e.get(i.target);return a?.width&&a?.height&&l?.width&&l?.height&&gCe({sourcePos:a.positionAbsolute||{x:0,y:0},targetPos:l.positionAbsolute||{x:0,y:0},sourceWidth:a.width,sourceHeight:a.height,targetWidth:l.width,targetHeight:l.height,width:s.width,height:s.height,transform:s.transform})}):s.edges,[t,e]));return vCe(r,e,n)}const bCe=({color:t="none",strokeWidth:e=1})=>oe.createElement("polyline",{style:{stroke:t,strokeWidth:e},strokeLinecap:"round",strokeLinejoin:"round",fill:"none",points:"-5,-4 0,0 -5,4"}),wCe=({color:t="none",strokeWidth:e=1})=>oe.createElement("polyline",{style:{stroke:t,fill:t,strokeWidth:e},strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"}),PD={[Iy.Arrow]:bCe,[Iy.ArrowClosed]:wCe};function SCe(t){const e=gs();return b.useMemo(()=>Object.prototype.hasOwnProperty.call(PD,t)?PD[t]:(e.getState().onError?.("009",Yl.error009(t)),null),[t])}const kCe=({id:t,type:e,color:n,width:r=12.5,height:s=12.5,markerUnits:i="strokeWidth",strokeWidth:a,orient:l="auto-start-reverse"})=>{const c=SCe(e);return c?oe.createElement("marker",{className:"react-flow__arrowhead",id:t,markerWidth:`${r}`,markerHeight:`${s}`,viewBox:"-10 -10 20 20",markerUnits:i,orient:l,refX:"0",refY:"0"},oe.createElement(c,{color:n,strokeWidth:a})):null},OCe=({defaultColor:t,rfId:e})=>n=>{const r=[];return n.edges.reduce((s,i)=>([i.markerStart,i.markerEnd].forEach(a=>{if(a&&typeof a=="object"){const l=aj(a,e);r.includes(l)||(s.push({id:l,color:a.color||t,...a}),r.push(l))}}),s),[]).sort((s,i)=>s.id.localeCompare(i.id))},cG=({defaultColor:t,rfId:e})=>{const n=gr(b.useCallback(OCe({defaultColor:t,rfId:e}),[t,e]),(r,s)=>!(r.length!==s.length||r.some((i,a)=>i.id!==s[a].id)));return oe.createElement("defs",null,n.map(r=>oe.createElement(kCe,{id:r.id,key:r.id,type:r.type,color:r.color,width:r.width,height:r.height,markerUnits:r.markerUnits,strokeWidth:r.strokeWidth,orient:r.orient})))};cG.displayName="MarkerDefinitions";var jCe=b.memo(cG);const NCe=t=>({nodesConnectable:t.nodesConnectable,edgesFocusable:t.edgesFocusable,edgesUpdatable:t.edgesUpdatable,elementsSelectable:t.elementsSelectable,width:t.width,height:t.height,connectionMode:t.connectionMode,nodeInternals:t.nodeInternals,onError:t.onError}),uG=({defaultMarkerColor:t,onlyRenderVisibleElements:e,elevateEdgesOnSelect:n,rfId:r,edgeTypes:s,noPanClassName:i,onEdgeContextMenu:a,onEdgeMouseEnter:l,onEdgeMouseMove:c,onEdgeMouseLeave:d,onEdgeClick:h,onEdgeDoubleClick:m,onReconnect:g,onReconnectStart:x,onReconnectEnd:y,reconnectRadius:w,children:S,disableKeyboardA11y:k})=>{const{edgesFocusable:j,edgesUpdatable:N,elementsSelectable:T,width:E,height:_,connectionMode:A,nodeInternals:D,onError:q}=gr(NCe,ks),B=yCe(e,D,n);return E?oe.createElement(oe.Fragment,null,B.map(({level:H,edges:W,isMaxLevel:ee})=>oe.createElement("svg",{key:H,style:{zIndex:H},width:E,height:_,className:"react-flow__edges react-flow__container"},ee&&oe.createElement(jCe,{defaultColor:t,rfId:r}),oe.createElement("g",null,W.map(I=>{const[V,L,$]=DD(D.get(I.source)),[K,Y,R]=DD(D.get(I.target));if(!$||!R)return null;let ie=I.type||"default";s[ie]||(q?.("011",Yl.error011(ie)),ie="default");const X=s[ie]||s.default,z=A===vd.Strict?Y.target:(Y.target??[]).concat(Y.source??[]),U=RD(L.source,I.sourceHandle),te=RD(z,I.targetHandle),ne=U?.position||kt.Bottom,G=te?.position||kt.Top,se=!!(I.focusable||j&&typeof I.focusable>"u"),re=I.reconnectable||I.updatable,ae=typeof g<"u"&&(re||N&&typeof re>"u");if(!U||!te)return q?.("008",Yl.error008(U,I)),null;const{sourceX:_e,sourceY:Be,targetX:Ye,targetY:Je}=pCe(V,U,ne,K,te,G);return oe.createElement(X,{key:I.id,id:I.id,className:Ls([I.className,i]),type:ie,data:I.data,selected:!!I.selected,animated:!!I.animated,hidden:!!I.hidden,label:I.label,labelStyle:I.labelStyle,labelShowBg:I.labelShowBg,labelBgStyle:I.labelBgStyle,labelBgPadding:I.labelBgPadding,labelBgBorderRadius:I.labelBgBorderRadius,style:I.style,source:I.source,target:I.target,sourceHandleId:I.sourceHandle,targetHandleId:I.targetHandle,markerEnd:I.markerEnd,markerStart:I.markerStart,sourceX:_e,sourceY:Be,targetX:Ye,targetY:Je,sourcePosition:ne,targetPosition:G,elementsSelectable:T,onContextMenu:a,onMouseEnter:l,onMouseMove:c,onMouseLeave:d,onClick:h,onEdgeDoubleClick:m,onReconnect:g,onReconnectStart:x,onReconnectEnd:y,reconnectRadius:w,rfId:r,ariaLabel:I.ariaLabel,isFocusable:se,isReconnectable:ae,pathOptions:"pathOptions"in I?I.pathOptions:void 0,interactionWidth:I.interactionWidth,disableKeyboardA11y:k})})))),S):null};uG.displayName="EdgeRenderer";var CCe=b.memo(uG);const TCe=t=>`translate(${t.transform[0]}px,${t.transform[1]}px) scale(${t.transform[2]})`;function ECe({children:t}){const e=gr(TCe);return oe.createElement("div",{className:"react-flow__viewport react-flow__container",style:{transform:e}},t)}function _Ce(t){const e=u7(),n=b.useRef(!1);b.useEffect(()=>{!n.current&&e.viewportInitialized&&t&&(setTimeout(()=>t(e),1),n.current=!0)},[t,e.viewportInitialized])}const ACe={[kt.Left]:kt.Right,[kt.Right]:kt.Left,[kt.Top]:kt.Bottom,[kt.Bottom]:kt.Top},dG=({nodeId:t,handleType:e,style:n,type:r=qc.Bezier,CustomComponent:s,connectionStatus:i})=>{const{fromNode:a,handleId:l,toX:c,toY:d,connectionMode:h}=gr(b.useCallback(_=>({fromNode:_.nodeInternals.get(t),handleId:_.connectionHandleId,toX:(_.connectionPosition.x-_.transform[0])/_.transform[2],toY:(_.connectionPosition.y-_.transform[1])/_.transform[2],connectionMode:_.connectionMode}),[t]),ks),m=a?.[$r]?.handleBounds;let g=m?.[e];if(h===vd.Loose&&(g=g||m?.[e==="source"?"target":"source"]),!a||!g)return null;const x=l?g.find(_=>_.id===l):g[0],y=x?x.x+x.width/2:(a.width??0)/2,w=x?x.y+x.height/2:a.height??0,S=(a.positionAbsolute?.x??0)+y,k=(a.positionAbsolute?.y??0)+w,j=x?.position,N=j?ACe[j]:null;if(!j||!N)return null;if(s)return oe.createElement(s,{connectionLineType:r,connectionLineStyle:n,fromNode:a,fromHandle:x,fromX:S,fromY:k,toX:c,toY:d,fromPosition:j,toPosition:N,connectionStatus:i});let T="";const E={sourceX:S,sourceY:k,sourcePosition:j,targetX:c,targetY:d,targetPosition:N};return r===qc.Bezier?[T]=DW(E):r===qc.Step?[T]=ij({...E,borderRadius:0}):r===qc.SmoothStep?[T]=ij(E):r===qc.SimpleBezier?[T]=RW(E):T=`M${S},${k} ${c},${d}`,oe.createElement("path",{d:T,fill:"none",className:"react-flow__connection-path",style:n})};dG.displayName="ConnectionLine";const MCe=t=>({nodeId:t.connectionNodeId,handleType:t.connectionHandleType,nodesConnectable:t.nodesConnectable,connectionStatus:t.connectionStatus,width:t.width,height:t.height});function RCe({containerStyle:t,style:e,type:n,component:r}){const{nodeId:s,handleType:i,nodesConnectable:a,width:l,height:c,connectionStatus:d}=gr(MCe,ks);return!(s&&i&&l&&a)?null:oe.createElement("svg",{style:t,width:l,height:c,className:"react-flow__edges react-flow__connectionline react-flow__container"},oe.createElement("g",{className:Ls(["react-flow__connection",d])},oe.createElement(dG,{nodeId:s,handleType:i,style:e,type:n,CustomComponent:r,connectionStatus:d})))}function zD(t,e){return b.useRef(null),gs(),b.useMemo(()=>e(t),[t])}const hG=({nodeTypes:t,edgeTypes:e,onMove:n,onMoveStart:r,onMoveEnd:s,onInit:i,onNodeClick:a,onEdgeClick:l,onNodeDoubleClick:c,onEdgeDoubleClick:d,onNodeMouseEnter:h,onNodeMouseMove:m,onNodeMouseLeave:g,onNodeContextMenu:x,onSelectionContextMenu:y,onSelectionStart:w,onSelectionEnd:S,connectionLineType:k,connectionLineStyle:j,connectionLineComponent:N,connectionLineContainerStyle:T,selectionKeyCode:E,selectionOnDrag:_,selectionMode:A,multiSelectionKeyCode:D,panActivationKeyCode:q,zoomActivationKeyCode:B,deleteKeyCode:H,onlyRenderVisibleElements:W,elementsSelectable:ee,selectNodesOnDrag:I,defaultViewport:V,translateExtent:L,minZoom:$,maxZoom:K,preventScrolling:Y,defaultMarkerColor:R,zoomOnScroll:ie,zoomOnPinch:X,panOnScroll:z,panOnScrollSpeed:U,panOnScrollMode:te,zoomOnDoubleClick:ne,panOnDrag:G,onPaneClick:se,onPaneMouseEnter:re,onPaneMouseMove:ae,onPaneMouseLeave:_e,onPaneScroll:Be,onPaneContextMenu:Ye,onEdgeContextMenu:Je,onEdgeMouseEnter:Oe,onEdgeMouseMove:Ve,onEdgeMouseLeave:Ue,onReconnect:$e,onReconnectStart:jt,onReconnectEnd:vt,reconnectRadius:$n,noDragClassName:qt,noWheelClassName:un,noPanClassName:Mt,elevateEdgesOnSelect:ct,disableKeyboardA11y:Ne,nodeOrigin:ze,nodeExtent:rt,rfId:bt})=>{const zt=zD(t,oCe),Rt=zD(e,mCe);return _Ce(i),oe.createElement(iCe,{onPaneClick:se,onPaneMouseEnter:re,onPaneMouseMove:ae,onPaneMouseLeave:_e,onPaneContextMenu:Ye,onPaneScroll:Be,deleteKeyCode:H,selectionKeyCode:E,selectionOnDrag:_,selectionMode:A,onSelectionStart:w,onSelectionEnd:S,multiSelectionKeyCode:D,panActivationKeyCode:q,zoomActivationKeyCode:B,elementsSelectable:ee,onMove:n,onMoveStart:r,onMoveEnd:s,zoomOnScroll:ie,zoomOnPinch:X,zoomOnDoubleClick:ne,panOnScroll:z,panOnScrollSpeed:U,panOnScrollMode:te,panOnDrag:G,defaultViewport:V,translateExtent:L,minZoom:$,maxZoom:K,onSelectionContextMenu:y,preventScrolling:Y,noDragClassName:qt,noWheelClassName:un,noPanClassName:Mt,disableKeyboardA11y:Ne},oe.createElement(ECe,null,oe.createElement(CCe,{edgeTypes:Rt,onEdgeClick:l,onEdgeDoubleClick:d,onlyRenderVisibleElements:W,onEdgeContextMenu:Je,onEdgeMouseEnter:Oe,onEdgeMouseMove:Ve,onEdgeMouseLeave:Ue,onReconnect:$e,onReconnectStart:jt,onReconnectEnd:vt,reconnectRadius:$n,defaultMarkerColor:R,noPanClassName:Mt,elevateEdgesOnSelect:!!ct,disableKeyboardA11y:Ne,rfId:bt},oe.createElement(RCe,{style:j,type:k,component:N,containerStyle:T})),oe.createElement("div",{className:"react-flow__edgelabel-renderer"}),oe.createElement(uCe,{nodeTypes:zt,onNodeClick:a,onNodeDoubleClick:c,onNodeMouseEnter:h,onNodeMouseMove:m,onNodeMouseLeave:g,onNodeContextMenu:x,selectNodesOnDrag:I,onlyRenderVisibleElements:W,noPanClassName:Mt,noDragClassName:qt,disableKeyboardA11y:Ne,nodeOrigin:ze,nodeExtent:rt,rfId:bt})))};hG.displayName="GraphView";var DCe=b.memo(hG);const uj=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],Mc={rfId:"1",width:0,height:0,transform:[0,0,1],nodeInternals:new Map,edges:[],onNodesChange:null,onEdgesChange:null,hasDefaultNodes:!1,hasDefaultEdges:!1,d3Zoom:null,d3Selection:null,d3ZoomHandler:void 0,minZoom:.5,maxZoom:2,translateExtent:uj,nodeExtent:uj,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionNodeId:null,connectionHandleId:null,connectionHandleType:"source",connectionPosition:{x:0,y:0},connectionStatus:null,connectionMode:vd.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:[0,0],nodeDragThreshold:0,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesUpdatable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,fitViewOnInit:!1,fitViewOnInitDone:!1,fitViewOnInitOptions:void 0,onSelectionChange:[],multiSelectionActive:!1,connectionStartHandle:null,connectionEndHandle:null,connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,connectionRadius:20,onError:l7e,isValidConnection:void 0},PCe=()=>XOe((t,e)=>({...Mc,setNodes:n=>{const{nodeInternals:r,nodeOrigin:s,elevateNodesOnSelect:i}=e();t({nodeInternals:m5(n,r,s,i)})},getNodes:()=>Array.from(e().nodeInternals.values()),setEdges:n=>{const{defaultEdgeOptions:r={}}=e();t({edges:n.map(s=>({...r,...s}))})},setDefaultNodesAndEdges:(n,r)=>{const s=typeof n<"u",i=typeof r<"u",a=s?m5(n,new Map,e().nodeOrigin,e().elevateNodesOnSelect):new Map;t({nodeInternals:a,edges:i?r:[],hasDefaultNodes:s,hasDefaultEdges:i})},updateNodeDimensions:n=>{const{onNodesChange:r,nodeInternals:s,fitViewOnInit:i,fitViewOnInitDone:a,fitViewOnInitOptions:l,domNode:c,nodeOrigin:d}=e(),h=c?.querySelector(".react-flow__viewport");if(!h)return;const m=window.getComputedStyle(h),{m22:g}=new window.DOMMatrixReadOnly(m.transform),x=n.reduce((w,S)=>{const k=s.get(S.id);if(k?.hidden)s.set(k.id,{...k,[$r]:{...k[$r],handleBounds:void 0}});else if(k){const j=n7(S.nodeElement);!!(j.width&&j.height&&(k.width!==j.width||k.height!==j.height||S.forceUpdate))&&(s.set(k.id,{...k,[$r]:{...k[$r],handleBounds:{source:ED(".source",S.nodeElement,g,d),target:ED(".target",S.nodeElement,g,d)}},...j}),w.push({id:k.id,type:"dimensions",dimensions:j}))}return w},[]);ZW(s,d);const y=a||i&&!a&&JW(e,{initial:!0,...l});t({nodeInternals:new Map(s),fitViewOnInitDone:y}),x?.length>0&&r?.(x)},updateNodePositions:(n,r=!0,s=!1)=>{const{triggerNodeChanges:i}=e(),a=n.map(l=>{const c={id:l.id,type:"position",dragging:s};return r&&(c.positionAbsolute=l.positionAbsolute,c.position=l.position),c});i(a)},triggerNodeChanges:n=>{const{onNodesChange:r,nodeInternals:s,hasDefaultNodes:i,nodeOrigin:a,getNodes:l,elevateNodesOnSelect:c}=e();if(n?.length){if(i){const d=tG(n,l()),h=m5(d,s,a,c);t({nodeInternals:h})}r?.(n)}},addSelectedNodes:n=>{const{multiSelectionActive:r,edges:s,getNodes:i}=e();let a,l=null;r?a=n.map(c=>Lc(c,!0)):(a=Ah(i(),n),l=Ah(s,[])),X1({changedNodes:a,changedEdges:l,get:e,set:t})},addSelectedEdges:n=>{const{multiSelectionActive:r,edges:s,getNodes:i}=e();let a,l=null;r?a=n.map(c=>Lc(c,!0)):(a=Ah(s,n),l=Ah(i(),[])),X1({changedNodes:l,changedEdges:a,get:e,set:t})},unselectNodesAndEdges:({nodes:n,edges:r}={})=>{const{edges:s,getNodes:i}=e(),a=n||i(),l=r||s,c=a.map(h=>(h.selected=!1,Lc(h.id,!1))),d=l.map(h=>Lc(h.id,!1));X1({changedNodes:c,changedEdges:d,get:e,set:t})},setMinZoom:n=>{const{d3Zoom:r,maxZoom:s}=e();r?.scaleExtent([n,s]),t({minZoom:n})},setMaxZoom:n=>{const{d3Zoom:r,minZoom:s}=e();r?.scaleExtent([s,n]),t({maxZoom:n})},setTranslateExtent:n=>{e().d3Zoom?.translateExtent(n),t({translateExtent:n})},resetSelectedElements:()=>{const{edges:n,getNodes:r}=e(),i=r().filter(l=>l.selected).map(l=>Lc(l.id,!1)),a=n.filter(l=>l.selected).map(l=>Lc(l.id,!1));X1({changedNodes:i,changedEdges:a,get:e,set:t})},setNodeExtent:n=>{const{nodeInternals:r}=e();r.forEach(s=>{s.positionAbsolute=r7(s.position,n)}),t({nodeExtent:n,nodeInternals:new Map(r)})},panBy:n=>{const{transform:r,width:s,height:i,d3Zoom:a,d3Selection:l,translateExtent:c}=e();if(!a||!l||!n.x&&!n.y)return!1;const d=$l.translate(r[0]+n.x,r[1]+n.y).scale(r[2]),h=[[0,0],[s,i]],m=a?.constrain()(d,h,c);return a.transform(l,m),r[0]!==m.x||r[1]!==m.y||r[2]!==m.k},cancelConnection:()=>t({connectionNodeId:Mc.connectionNodeId,connectionHandleId:Mc.connectionHandleId,connectionHandleType:Mc.connectionHandleType,connectionStatus:Mc.connectionStatus,connectionStartHandle:Mc.connectionStartHandle,connectionEndHandle:Mc.connectionEndHandle}),reset:()=>t({...Mc})}),Object.is),fG=({children:t})=>{const e=b.useRef(null);return e.current||(e.current=PCe()),oe.createElement(t7e,{value:e.current},t)};fG.displayName="ReactFlowProvider";const mG=({children:t})=>b.useContext(nw)?oe.createElement(oe.Fragment,null,t):oe.createElement(fG,null,t);mG.displayName="ReactFlowWrapper";const zCe={input:VW,default:lj,output:WW,group:c7},ICe={default:Ly,straight:a7,step:i7,smoothstep:sw,simplebezier:s7},LCe=[0,0],BCe=[15,15],FCe={x:0,y:0,zoom:1},qCe={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0},pG=b.forwardRef(({nodes:t,edges:e,defaultNodes:n,defaultEdges:r,className:s,nodeTypes:i=zCe,edgeTypes:a=ICe,onNodeClick:l,onEdgeClick:c,onInit:d,onMove:h,onMoveStart:m,onMoveEnd:g,onConnect:x,onConnectStart:y,onConnectEnd:w,onClickConnectStart:S,onClickConnectEnd:k,onNodeMouseEnter:j,onNodeMouseMove:N,onNodeMouseLeave:T,onNodeContextMenu:E,onNodeDoubleClick:_,onNodeDragStart:A,onNodeDrag:D,onNodeDragStop:q,onNodesDelete:B,onEdgesDelete:H,onSelectionChange:W,onSelectionDragStart:ee,onSelectionDrag:I,onSelectionDragStop:V,onSelectionContextMenu:L,onSelectionStart:$,onSelectionEnd:K,connectionMode:Y=vd.Strict,connectionLineType:R=qc.Bezier,connectionLineStyle:ie,connectionLineComponent:X,connectionLineContainerStyle:z,deleteKeyCode:U="Backspace",selectionKeyCode:te="Shift",selectionOnDrag:ne=!1,selectionMode:G=Np.Full,panActivationKeyCode:se="Space",multiSelectionKeyCode:re=zy()?"Meta":"Control",zoomActivationKeyCode:ae=zy()?"Meta":"Control",snapToGrid:_e=!1,snapGrid:Be=BCe,onlyRenderVisibleElements:Ye=!1,selectNodesOnDrag:Je=!0,nodesDraggable:Oe,nodesConnectable:Ve,nodesFocusable:Ue,nodeOrigin:$e=LCe,edgesFocusable:jt,edgesUpdatable:vt,elementsSelectable:$n,defaultViewport:qt=FCe,minZoom:un=.5,maxZoom:Mt=2,translateExtent:ct=uj,preventScrolling:Ne=!0,nodeExtent:ze,defaultMarkerColor:rt="#b1b1b7",zoomOnScroll:bt=!0,zoomOnPinch:zt=!0,panOnScroll:Rt=!1,panOnScrollSpeed:Hn=.5,panOnScrollMode:We=Yu.Free,zoomOnDoubleClick:ot=!0,panOnDrag:dn=!0,onPaneClick:Pt,onPaneMouseEnter:xn,onPaneMouseMove:dt,onPaneMouseLeave:rn,onPaneScroll:wt,onPaneContextMenu:Wt,children:Gt,onEdgeContextMenu:lt,onEdgeDoubleClick:ve,onEdgeMouseEnter:He,onEdgeMouseMove:ht,onEdgeMouseLeave:vn,onEdgeUpdate:Qn,onEdgeUpdateStart:fr,onEdgeUpdateEnd:ar,onReconnect:xs,onReconnectStart:vs,onReconnectEnd:js,reconnectRadius:ge=10,edgeUpdaterRadius:Ie=10,onNodesChange:Et,onEdgesChange:kn,noDragClassName:Hr="nodrag",noWheelClassName:Mr="nowheel",noPanClassName:Rr="nopan",fitView:Ns=!1,fitViewOptions:Vf,connectOnClick:hw=!0,attributionPosition:fw,proOptions:Dg,defaultEdgeOptions:xu,elevateNodesOnSelect:Uf=!0,elevateEdgesOnSelect:rc=!1,disableKeyboardA11y:Jo=!1,autoPanOnConnect:vu=!0,autoPanOnNodeDrag:sc=!0,connectionRadius:Kr=20,isValidConnection:Pg,onError:zg,style:el,id:tl,nodeDragThreshold:mw,...Ig},Lg)=>{const Wf=tl||"1";return oe.createElement("div",{...Ig,style:{...el,...qCe},ref:Lg,className:Ls(["react-flow",s]),"data-testid":"rf__wrapper",id:tl},oe.createElement(mG,null,oe.createElement(DCe,{onInit:d,onMove:h,onMoveStart:m,onMoveEnd:g,onNodeClick:l,onEdgeClick:c,onNodeMouseEnter:j,onNodeMouseMove:N,onNodeMouseLeave:T,onNodeContextMenu:E,onNodeDoubleClick:_,nodeTypes:i,edgeTypes:a,connectionLineType:R,connectionLineStyle:ie,connectionLineComponent:X,connectionLineContainerStyle:z,selectionKeyCode:te,selectionOnDrag:ne,selectionMode:G,deleteKeyCode:U,multiSelectionKeyCode:re,panActivationKeyCode:se,zoomActivationKeyCode:ae,onlyRenderVisibleElements:Ye,selectNodesOnDrag:Je,defaultViewport:qt,translateExtent:ct,minZoom:un,maxZoom:Mt,preventScrolling:Ne,zoomOnScroll:bt,zoomOnPinch:zt,zoomOnDoubleClick:ot,panOnScroll:Rt,panOnScrollSpeed:Hn,panOnScrollMode:We,panOnDrag:dn,onPaneClick:Pt,onPaneMouseEnter:xn,onPaneMouseMove:dt,onPaneMouseLeave:rn,onPaneScroll:wt,onPaneContextMenu:Wt,onSelectionContextMenu:L,onSelectionStart:$,onSelectionEnd:K,onEdgeContextMenu:lt,onEdgeDoubleClick:ve,onEdgeMouseEnter:He,onEdgeMouseMove:ht,onEdgeMouseLeave:vn,onReconnect:xs??Qn,onReconnectStart:vs??fr,onReconnectEnd:js??ar,reconnectRadius:ge??Ie,defaultMarkerColor:rt,noDragClassName:Hr,noWheelClassName:Mr,noPanClassName:Rr,elevateEdgesOnSelect:rc,rfId:Wf,disableKeyboardA11y:Jo,nodeOrigin:$e,nodeExtent:ze}),oe.createElement(A7e,{nodes:t,edges:e,defaultNodes:n,defaultEdges:r,onConnect:x,onConnectStart:y,onConnectEnd:w,onClickConnectStart:S,onClickConnectEnd:k,nodesDraggable:Oe,nodesConnectable:Ve,nodesFocusable:Ue,edgesFocusable:jt,edgesUpdatable:vt,elementsSelectable:$n,elevateNodesOnSelect:Uf,minZoom:un,maxZoom:Mt,nodeExtent:ze,onNodesChange:Et,onEdgesChange:kn,snapToGrid:_e,snapGrid:Be,connectionMode:Y,translateExtent:ct,connectOnClick:hw,defaultEdgeOptions:xu,fitView:Ns,fitViewOptions:Vf,onNodesDelete:B,onEdgesDelete:H,onNodeDragStart:A,onNodeDrag:D,onNodeDragStop:q,onSelectionDrag:I,onSelectionDragStart:ee,onSelectionDragStop:V,noPanClassName:Rr,nodeOrigin:$e,rfId:Wf,autoPanOnConnect:vu,autoPanOnNodeDrag:sc,onError:zg,connectionRadius:Kr,isValidConnection:Pg,nodeDragThreshold:mw}),oe.createElement(E7e,{onSelectionChange:W}),Gt,oe.createElement(r7e,{proOptions:Dg,position:fw}),oe.createElement(z7e,{rfId:Wf,disableKeyboardA11y:Jo})))});pG.displayName="ReactFlow";function gG(t){return e=>{const[n,r]=b.useState(e),s=b.useCallback(i=>r(a=>t(i,a)),[]);return[n,r,s]}}const $Ce=gG(tG),HCe=gG(Y7e),xG=({id:t,x:e,y:n,width:r,height:s,style:i,color:a,strokeColor:l,strokeWidth:c,className:d,borderRadius:h,shapeRendering:m,onClick:g,selected:x})=>{const{background:y,backgroundColor:w}=i||{},S=a||y||w;return oe.createElement("rect",{className:Ls(["react-flow__minimap-node",{selected:x},d]),x:e,y:n,rx:h,ry:h,width:r,height:s,fill:S,stroke:l,strokeWidth:c,shapeRendering:m,onClick:g?k=>g(k,t):void 0})};xG.displayName="MiniMapNode";var QCe=b.memo(xG);const VCe=t=>t.nodeOrigin,UCe=t=>t.getNodes().filter(e=>!e.hidden&&e.width&&e.height),v5=t=>t instanceof Function?t:()=>t;function WCe({nodeStrokeColor:t="transparent",nodeColor:e="#e2e2e2",nodeClassName:n="",nodeBorderRadius:r=5,nodeStrokeWidth:s=2,nodeComponent:i=QCe,onClick:a}){const l=gr(UCe,ks),c=gr(VCe),d=v5(e),h=v5(t),m=v5(n),g=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return oe.createElement(oe.Fragment,null,l.map(x=>{const{x:y,y:w}=id(x,c).positionAbsolute;return oe.createElement(i,{key:x.id,x:y,y:w,width:x.width,height:x.height,style:x.style,selected:x.selected,className:m(x),color:d(x),borderRadius:r,strokeColor:h(x),strokeWidth:s,shapeRendering:g,onClick:a,id:x.id})}))}var GCe=b.memo(WCe);const XCe=200,YCe=150,KCe=t=>{const e=t.getNodes(),n={x:-t.transform[0]/t.transform[2],y:-t.transform[1]/t.transform[2],width:t.width/t.transform[2],height:t.height/t.transform[2]};return{viewBB:n,boundingRect:e.length>0?a7e(iw(e,t.nodeOrigin),n):n,rfId:t.rfId}},ZCe="react-flow__minimap-desc";function vG({style:t,className:e,nodeStrokeColor:n="transparent",nodeColor:r="#e2e2e2",nodeClassName:s="",nodeBorderRadius:i=5,nodeStrokeWidth:a=2,nodeComponent:l,maskColor:c="rgb(240, 240, 240, 0.6)",maskStrokeColor:d="none",maskStrokeWidth:h=1,position:m="bottom-right",onClick:g,onNodeClick:x,pannable:y=!1,zoomable:w=!1,ariaLabel:S="React Flow mini map",inversePan:k=!1,zoomStep:j=10,offsetScale:N=5}){const T=gs(),E=b.useRef(null),{boundingRect:_,viewBB:A,rfId:D}=gr(KCe,ks),q=t?.width??XCe,B=t?.height??YCe,H=_.width/q,W=_.height/B,ee=Math.max(H,W),I=ee*q,V=ee*B,L=N*ee,$=_.x-(I-_.width)/2-L,K=_.y-(V-_.height)/2-L,Y=I+L*2,R=V+L*2,ie=`${ZCe}-${D}`,X=b.useRef(0);X.current=ee,b.useEffect(()=>{if(E.current){const te=va(E.current),ne=re=>{const{transform:ae,d3Selection:_e,d3Zoom:Be}=T.getState();if(re.sourceEvent.type!=="wheel"||!_e||!Be)return;const Ye=-re.sourceEvent.deltaY*(re.sourceEvent.deltaMode===1?.05:re.sourceEvent.deltaMode?1:.002)*j,Je=ae[2]*Math.pow(2,Ye);Be.scaleTo(_e,Je)},G=re=>{const{transform:ae,d3Selection:_e,d3Zoom:Be,translateExtent:Ye,width:Je,height:Oe}=T.getState();if(re.sourceEvent.type!=="mousemove"||!_e||!Be)return;const Ve=X.current*Math.max(1,ae[2])*(k?-1:1),Ue={x:ae[0]-re.sourceEvent.movementX*Ve,y:ae[1]-re.sourceEvent.movementY*Ve},$e=[[0,0],[Je,Oe]],jt=$l.translate(Ue.x,Ue.y).scale(ae[2]),vt=Be.constrain()(jt,$e,Ye);Be.transform(_e,vt)},se=kW().on("zoom",y?G:null).on("zoom.wheel",w?ne:null);return te.call(se),()=>{te.on("zoom",null)}}},[y,w,k,j]);const z=g?te=>{const ne=Qa(te);g(te,{x:ne[0],y:ne[1]})}:void 0,U=x?(te,ne)=>{const G=T.getState().nodeInternals.get(ne);x(te,G)}:void 0;return oe.createElement(rw,{position:m,style:t,className:Ls(["react-flow__minimap",e]),"data-testid":"rf__minimap"},oe.createElement("svg",{width:q,height:B,viewBox:`${$} ${K} ${Y} ${R}`,role:"img","aria-labelledby":ie,ref:E,onClick:z},S&&oe.createElement("title",{id:ie},S),oe.createElement(GCe,{onClick:U,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:i,nodeClassName:s,nodeStrokeWidth:a,nodeComponent:l}),oe.createElement("path",{className:"react-flow__minimap-mask",d:`M${$-L},${K-L}h${Y+L*2}v${R+L*2}h${-Y-L*2}z + M${A.x},${A.y}h${A.width}v${A.height}h${-A.width}z`,fill:c,fillRule:"evenodd",stroke:d,strokeWidth:h,pointerEvents:"none"})))}vG.displayName="MiniMap";var JCe=b.memo(vG);function e8e(){return oe.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32"},oe.createElement("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"}))}function t8e(){return oe.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5"},oe.createElement("path",{d:"M0 0h32v4.2H0z"}))}function n8e(){return oe.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30"},oe.createElement("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"}))}function r8e(){return oe.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},oe.createElement("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"}))}function s8e(){return oe.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},oe.createElement("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"}))}const g0=({children:t,className:e,...n})=>oe.createElement("button",{type:"button",className:Ls(["react-flow__controls-button",e]),...n},t);g0.displayName="ControlButton";const i8e=t=>({isInteractive:t.nodesDraggable||t.nodesConnectable||t.elementsSelectable,minZoomReached:t.transform[2]<=t.minZoom,maxZoomReached:t.transform[2]>=t.maxZoom}),yG=({style:t,showZoom:e=!0,showFitView:n=!0,showInteractive:r=!0,fitViewOptions:s,onZoomIn:i,onZoomOut:a,onFitView:l,onInteractiveChange:c,className:d,children:h,position:m="bottom-left"})=>{const g=gs(),[x,y]=b.useState(!1),{isInteractive:w,minZoomReached:S,maxZoomReached:k}=gr(i8e,ks),{zoomIn:j,zoomOut:N,fitView:T}=u7();if(b.useEffect(()=>{y(!0)},[]),!x)return null;const E=()=>{j(),i?.()},_=()=>{N(),a?.()},A=()=>{T(s),l?.()},D=()=>{g.setState({nodesDraggable:!w,nodesConnectable:!w,elementsSelectable:!w}),c?.(!w)};return oe.createElement(rw,{className:Ls(["react-flow__controls",d]),position:m,style:t,"data-testid":"rf__controls"},e&&oe.createElement(oe.Fragment,null,oe.createElement(g0,{onClick:E,className:"react-flow__controls-zoomin",title:"zoom in","aria-label":"zoom in",disabled:k},oe.createElement(e8e,null)),oe.createElement(g0,{onClick:_,className:"react-flow__controls-zoomout",title:"zoom out","aria-label":"zoom out",disabled:S},oe.createElement(t8e,null))),n&&oe.createElement(g0,{className:"react-flow__controls-fitview",onClick:A,title:"fit view","aria-label":"fit view"},oe.createElement(n8e,null)),r&&oe.createElement(g0,{className:"react-flow__controls-interactive",onClick:D,title:"toggle interactivity","aria-label":"toggle interactivity"},w?oe.createElement(s8e,null):oe.createElement(r8e,null)),h)};yG.displayName="Controls";var a8e=b.memo(yG),Ea;(function(t){t.Lines="lines",t.Dots="dots",t.Cross="cross"})(Ea||(Ea={}));function o8e({color:t,dimensions:e,lineWidth:n}){return oe.createElement("path",{stroke:t,strokeWidth:n,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`})}function l8e({color:t,radius:e}){return oe.createElement("circle",{cx:e,cy:e,r:e,fill:t})}const c8e={[Ea.Dots]:"#91919a",[Ea.Lines]:"#eee",[Ea.Cross]:"#e2e2e2"},u8e={[Ea.Dots]:1,[Ea.Lines]:1,[Ea.Cross]:6},d8e=t=>({transform:t.transform,patternId:`pattern-${t.rfId}`});function bG({id:t,variant:e=Ea.Dots,gap:n=20,size:r,lineWidth:s=1,offset:i=2,color:a,style:l,className:c}){const d=b.useRef(null),{transform:h,patternId:m}=gr(d8e,ks),g=a||c8e[e],x=r||u8e[e],y=e===Ea.Dots,w=e===Ea.Cross,S=Array.isArray(n)?n:[n,n],k=[S[0]*h[2]||1,S[1]*h[2]||1],j=x*h[2],N=w?[j,j]:k,T=y?[j/i,j/i]:[N[0]/i,N[1]/i];return oe.createElement("svg",{className:Ls(["react-flow__background",c]),style:{...l,position:"absolute",width:"100%",height:"100%",top:0,left:0},ref:d,"data-testid":"rf__background"},oe.createElement("pattern",{id:m+t,x:h[0]%k[0],y:h[1]%k[1],width:k[0],height:k[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${T[0]},-${T[1]})`},y?oe.createElement(l8e,{color:g,radius:j/i}):oe.createElement(o8e,{dimensions:N,color:g,lineWidth:s})),oe.createElement("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${m+t})`}))}bG.displayName="Background";var h8e=b.memo(bG);function h7(t){throw new Error('Could not dynamically require "'+t+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var y5,ID;function f8e(){if(ID)return y5;ID=1;var t=Vz(),e=4;function n(r){return t(r,e)}return y5=n,y5}var b5,LD;function wG(){if(LD)return b5;LD=1;var t=HJ();function e(n){return typeof n=="function"?n:t}return b5=e,b5}var w5,BD;function SG(){if(BD)return w5;BD=1;var t=Uz(),e=wj(),n=wG(),r=bd();function s(i,a){var l=r(i)?t:e;return l(i,n(a))}return w5=s,w5}var S5,FD;function kG(){return FD||(FD=1,S5=SG()),S5}var k5,qD;function m8e(){if(qD)return k5;qD=1;var t=wj();function e(n,r){var s=[];return t(n,function(i,a,l){r(i,a,l)&&s.push(i)}),s}return k5=e,k5}var O5,$D;function OG(){if($D)return O5;$D=1;var t=QJ(),e=m8e(),n=Sj(),r=bd();function s(i,a){var l=r(i)?t:e;return l(i,n(a,3))}return O5=s,O5}var j5,HD;function p8e(){if(HD)return j5;HD=1;var t=Object.prototype,e=t.hasOwnProperty;function n(r,s){return r!=null&&e.call(r,s)}return j5=n,j5}var N5,QD;function jG(){if(QD)return N5;QD=1;var t=p8e(),e=VJ();function n(r,s){return r!=null&&e(r,s,t)}return N5=n,N5}var C5,VD;function g8e(){if(VD)return C5;VD=1;var t=Wz(),e=Gz(),n=Xz(),r=bd(),s=kj(),i=Oj(),a=UJ(),l=jj(),c="[object Map]",d="[object Set]",h=Object.prototype,m=h.hasOwnProperty;function g(x){if(x==null)return!0;if(s(x)&&(r(x)||typeof x=="string"||typeof x.splice=="function"||i(x)||l(x)||n(x)))return!x.length;var y=e(x);if(y==c||y==d)return!x.size;if(a(x))return!t(x).length;for(var w in x)if(m.call(x,w))return!1;return!0}return C5=g,C5}var T5,UD;function NG(){if(UD)return T5;UD=1;function t(e){return e===void 0}return T5=t,T5}var E5,WD;function x8e(){if(WD)return E5;WD=1;function t(e,n,r,s){var i=-1,a=e==null?0:e.length;for(s&&a&&(r=e[++i]);++i1?x.setNode(y,m):x.setNode(y)}),this},s.prototype.setNode=function(h,m){return t.has(this._nodes,h)?(arguments.length>1&&(this._nodes[h]=m),this):(this._nodes[h]=arguments.length>1?m:this._defaultNodeLabelFn(h),this._isCompound&&(this._parent[h]=n,this._children[h]={},this._children[n][h]=!0),this._in[h]={},this._preds[h]={},this._out[h]={},this._sucs[h]={},++this._nodeCount,this)},s.prototype.node=function(h){return this._nodes[h]},s.prototype.hasNode=function(h){return t.has(this._nodes,h)},s.prototype.removeNode=function(h){var m=this;if(t.has(this._nodes,h)){var g=function(x){m.removeEdge(m._edgeObjs[x])};delete this._nodes[h],this._isCompound&&(this._removeFromParentsChildList(h),delete this._parent[h],t.each(this.children(h),function(x){m.setParent(x)}),delete this._children[h]),t.each(t.keys(this._in[h]),g),delete this._in[h],delete this._preds[h],t.each(t.keys(this._out[h]),g),delete this._out[h],delete this._sucs[h],--this._nodeCount}return this},s.prototype.setParent=function(h,m){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(t.isUndefined(m))m=n;else{m+="";for(var g=m;!t.isUndefined(g);g=this.parent(g))if(g===h)throw new Error("Setting "+m+" as parent of "+h+" would create a cycle");this.setNode(m)}return this.setNode(h),this._removeFromParentsChildList(h),this._parent[h]=m,this._children[m][h]=!0,this},s.prototype._removeFromParentsChildList=function(h){delete this._children[this._parent[h]][h]},s.prototype.parent=function(h){if(this._isCompound){var m=this._parent[h];if(m!==n)return m}},s.prototype.children=function(h){if(t.isUndefined(h)&&(h=n),this._isCompound){var m=this._children[h];if(m)return t.keys(m)}else{if(h===n)return this.nodes();if(this.hasNode(h))return[]}},s.prototype.predecessors=function(h){var m=this._preds[h];if(m)return t.keys(m)},s.prototype.successors=function(h){var m=this._sucs[h];if(m)return t.keys(m)},s.prototype.neighbors=function(h){var m=this.predecessors(h);if(m)return t.union(m,this.successors(h))},s.prototype.isLeaf=function(h){var m;return this.isDirected()?m=this.successors(h):m=this.neighbors(h),m.length===0},s.prototype.filterNodes=function(h){var m=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});m.setGraph(this.graph());var g=this;t.each(this._nodes,function(w,S){h(S)&&m.setNode(S,w)}),t.each(this._edgeObjs,function(w){m.hasNode(w.v)&&m.hasNode(w.w)&&m.setEdge(w,g.edge(w))});var x={};function y(w){var S=g.parent(w);return S===void 0||m.hasNode(S)?(x[w]=S,S):S in x?x[S]:y(S)}return this._isCompound&&t.each(m.nodes(),function(w){m.setParent(w,y(w))}),m},s.prototype.setDefaultEdgeLabel=function(h){return t.isFunction(h)||(h=t.constant(h)),this._defaultEdgeLabelFn=h,this},s.prototype.edgeCount=function(){return this._edgeCount},s.prototype.edges=function(){return t.values(this._edgeObjs)},s.prototype.setPath=function(h,m){var g=this,x=arguments;return t.reduce(h,function(y,w){return x.length>1?g.setEdge(y,w,m):g.setEdge(y,w),w}),this},s.prototype.setEdge=function(){var h,m,g,x,y=!1,w=arguments[0];typeof w=="object"&&w!==null&&"v"in w?(h=w.v,m=w.w,g=w.name,arguments.length===2&&(x=arguments[1],y=!0)):(h=w,m=arguments[1],g=arguments[3],arguments.length>2&&(x=arguments[2],y=!0)),h=""+h,m=""+m,t.isUndefined(g)||(g=""+g);var S=l(this._isDirected,h,m,g);if(t.has(this._edgeLabels,S))return y&&(this._edgeLabels[S]=x),this;if(!t.isUndefined(g)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(h),this.setNode(m),this._edgeLabels[S]=y?x:this._defaultEdgeLabelFn(h,m,g);var k=c(this._isDirected,h,m,g);return h=k.v,m=k.w,Object.freeze(k),this._edgeObjs[S]=k,i(this._preds[m],h),i(this._sucs[h],m),this._in[m][S]=k,this._out[h][S]=k,this._edgeCount++,this},s.prototype.edge=function(h,m,g){var x=arguments.length===1?d(this._isDirected,arguments[0]):l(this._isDirected,h,m,g);return this._edgeLabels[x]},s.prototype.hasEdge=function(h,m,g){var x=arguments.length===1?d(this._isDirected,arguments[0]):l(this._isDirected,h,m,g);return t.has(this._edgeLabels,x)},s.prototype.removeEdge=function(h,m,g){var x=arguments.length===1?d(this._isDirected,arguments[0]):l(this._isDirected,h,m,g),y=this._edgeObjs[x];return y&&(h=y.v,m=y.w,delete this._edgeLabels[x],delete this._edgeObjs[x],a(this._preds[m],h),a(this._sucs[h],m),delete this._in[m][x],delete this._out[h][x],this._edgeCount--),this},s.prototype.inEdges=function(h,m){var g=this._in[h];if(g){var x=t.values(g);return m?t.filter(x,function(y){return y.v===m}):x}},s.prototype.outEdges=function(h,m){var g=this._out[h];if(g){var x=t.values(g);return m?t.filter(x,function(y){return y.w===m}):x}},s.prototype.nodeEdges=function(h,m){var g=this.inEdges(h,m);if(g)return g.concat(this.outEdges(h,m))};function i(h,m){h[m]?h[m]++:h[m]=1}function a(h,m){--h[m]||delete h[m]}function l(h,m,g,x){var y=""+m,w=""+g;if(!h&&y>w){var S=y;y=w,w=S}return y+r+w+r+(t.isUndefined(x)?e:x)}function c(h,m,g,x){var y=""+m,w=""+g;if(!h&&y>w){var S=y;y=w,w=S}var k={v:y,w};return x&&(k.name=x),k}function d(h,m){return l(h,m.v,m.w,m.name)}return $5}var H5,oP;function N8e(){return oP||(oP=1,H5="2.1.8"),H5}var Q5,lP;function C8e(){return lP||(lP=1,Q5={Graph:f7(),version:N8e()}),Q5}var V5,cP;function T8e(){if(cP)return V5;cP=1;var t=Ia(),e=f7();V5={write:n,read:i};function n(a){var l={options:{directed:a.isDirected(),multigraph:a.isMultigraph(),compound:a.isCompound()},nodes:r(a),edges:s(a)};return t.isUndefined(a.graph())||(l.value=t.clone(a.graph())),l}function r(a){return t.map(a.nodes(),function(l){var c=a.node(l),d=a.parent(l),h={v:l};return t.isUndefined(c)||(h.value=c),t.isUndefined(d)||(h.parent=d),h})}function s(a){return t.map(a.edges(),function(l){var c=a.edge(l),d={v:l.v,w:l.w};return t.isUndefined(l.name)||(d.name=l.name),t.isUndefined(c)||(d.value=c),d})}function i(a){var l=new e(a.options).setGraph(a.value);return t.each(a.nodes,function(c){l.setNode(c.v,c.value),c.parent&&l.setParent(c.v,c.parent)}),t.each(a.edges,function(c){l.setEdge({v:c.v,w:c.w,name:c.name},c.value)}),l}return V5}var U5,uP;function E8e(){if(uP)return U5;uP=1;var t=Ia();U5=e;function e(n){var r={},s=[],i;function a(l){t.has(r,l)||(r[l]=!0,i.push(l),t.each(n.successors(l),a),t.each(n.predecessors(l),a))}return t.each(n.nodes(),function(l){i=[],a(l),i.length&&s.push(i)}),s}return U5}var W5,dP;function _G(){if(dP)return W5;dP=1;var t=Ia();W5=e;function e(){this._arr=[],this._keyIndices={}}return e.prototype.size=function(){return this._arr.length},e.prototype.keys=function(){return this._arr.map(function(n){return n.key})},e.prototype.has=function(n){return t.has(this._keyIndices,n)},e.prototype.priority=function(n){var r=this._keyIndices[n];if(r!==void 0)return this._arr[r].priority},e.prototype.min=function(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key},e.prototype.add=function(n,r){var s=this._keyIndices;if(n=String(n),!t.has(s,n)){var i=this._arr,a=i.length;return s[n]=a,i.push({key:n,priority:r}),this._decrease(a),!0}return!1},e.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var n=this._arr.pop();return delete this._keyIndices[n.key],this._heapify(0),n.key},e.prototype.decrease=function(n,r){var s=this._keyIndices[n];if(r>this._arr[s].priority)throw new Error("New priority is greater than current priority. Key: "+n+" Old: "+this._arr[s].priority+" New: "+r);this._arr[s].priority=r,this._decrease(s)},e.prototype._heapify=function(n){var r=this._arr,s=2*n,i=s+1,a=n;s>1,!(r[i].priority0&&(m=h.removeMin(),g=d[m],g.distance!==Number.POSITIVE_INFINITY);)c(m).forEach(x);return d}return G5}var X5,fP;function _8e(){if(fP)return X5;fP=1;var t=AG(),e=Ia();X5=n;function n(r,s,i){return e.transform(r.nodes(),function(a,l){a[l]=t(r,l,s,i)},{})}return X5}var Y5,mP;function MG(){if(mP)return Y5;mP=1;var t=Ia();Y5=e;function e(n){var r=0,s=[],i={},a=[];function l(c){var d=i[c]={onStack:!0,lowlink:r,index:r++};if(s.push(c),n.successors(c).forEach(function(g){t.has(i,g)?i[g].onStack&&(d.lowlink=Math.min(d.lowlink,i[g].index)):(l(g),d.lowlink=Math.min(d.lowlink,i[g].lowlink))}),d.lowlink===d.index){var h=[],m;do m=s.pop(),i[m].onStack=!1,h.push(m);while(c!==m);a.push(h)}}return n.nodes().forEach(function(c){t.has(i,c)||l(c)}),a}return Y5}var K5,pP;function A8e(){if(pP)return K5;pP=1;var t=Ia(),e=MG();K5=n;function n(r){return t.filter(e(r),function(s){return s.length>1||s.length===1&&r.hasEdge(s[0],s[0])})}return K5}var Z5,gP;function M8e(){if(gP)return Z5;gP=1;var t=Ia();Z5=n;var e=t.constant(1);function n(s,i,a){return r(s,i||e,a||function(l){return s.outEdges(l)})}function r(s,i,a){var l={},c=s.nodes();return c.forEach(function(d){l[d]={},l[d][d]={distance:0},c.forEach(function(h){d!==h&&(l[d][h]={distance:Number.POSITIVE_INFINITY})}),a(d).forEach(function(h){var m=h.v===d?h.w:h.v,g=i(h);l[d][m]={distance:g,predecessor:d}})}),c.forEach(function(d){var h=l[d];c.forEach(function(m){var g=l[m];c.forEach(function(x){var y=g[d],w=h[x],S=g[x],k=y.distance+w.distance;k0;){if(d=c.removeMin(),t.has(l,d))a.setEdge(d,l[d]);else{if(m)throw new Error("Input graph is not connected: "+s);m=!0}s.nodeEdges(d).forEach(h)}return a}return s3}var i3,kP;function I8e(){return kP||(kP=1,i3={components:E8e(),dijkstra:AG(),dijkstraAll:_8e(),findCycles:A8e(),floydWarshall:M8e(),isAcyclic:R8e(),postorder:D8e(),preorder:P8e(),prim:z8e(),tarjan:MG(),topsort:RG()}),i3}var a3,OP;function L8e(){if(OP)return a3;OP=1;var t=C8e();return a3={Graph:t.Graph,json:T8e(),alg:I8e(),version:t.version},a3}var o3,jP;function to(){if(jP)return o3;jP=1;var t;if(typeof h7=="function")try{t=L8e()}catch{}return t||(t=window.graphlib),o3=t,o3}var l3,NP;function B8e(){if(NP)return l3;NP=1;var t=Vz(),e=1,n=4;function r(s){return t(s,e|n)}return l3=r,l3}var c3,CP;function F8e(){if(CP)return c3;CP=1;var t=Cj(),e=eI(),n=Jz(),r=Hy(),s=Object.prototype,i=s.hasOwnProperty,a=t(function(l,c){l=Object(l);var d=-1,h=c.length,m=h>2?c[2]:void 0;for(m&&n(c[0],c[1],m)&&(h=1);++d1?i[l-1]:void 0,d=l>2?i[2]:void 0;for(c=r.length>3&&typeof c=="function"?(l--,c):void 0,d&&e(i[0],i[1],d)&&(c=l<3?void 0:c,l=1),s=Object(s);++a0;--S)if(w=h[S].dequeue(),w){g=g.concat(a(d,h,m,w,!0));break}}}return g}function a(d,h,m,g,x){var y=x?[]:void 0;return t.forEach(d.inEdges(g.v),function(w){var S=d.edge(w),k=d.node(w.v);x&&y.push({v:w.v,w:w.w}),k.out-=S,c(h,m,k)}),t.forEach(d.outEdges(g.v),function(w){var S=d.edge(w),k=w.w,j=d.node(k);j.in-=S,c(h,m,j)}),d.removeNode(g.v),y}function l(d,h){var m=new e,g=0,x=0;t.forEach(d.nodes(),function(S){m.setNode(S,{v:S,in:0,out:0})}),t.forEach(d.edges(),function(S){var k=m.edge(S.v,S.w)||0,j=h(S),N=k+j;m.setEdge(S.v,S.w,N),x=Math.max(x,m.node(S.v).out+=j),g=Math.max(g,m.node(S.w).in+=j)});var y=t.range(x+g+3).map(function(){return new n}),w=g+1;return t.forEach(m.nodes(),function(S){c(y,w,m.node(S))}),{graph:m,buckets:y,zeroIdx:w}}function c(d,h,m){m.out?m.in?d[m.out-m.in+h].enqueue(m):d[d.length-1].enqueue(m):d[0].enqueue(m)}return C3}var T3,UP;function nTe(){if(UP)return T3;UP=1;var t=Ar(),e=tTe();T3={run:n,undo:s};function n(i){var a=i.graph().acyclicer==="greedy"?e(i,l(i)):r(i);t.forEach(a,function(c){var d=i.edge(c);i.removeEdge(c),d.forwardName=c.name,d.reversed=!0,i.setEdge(c.w,c.v,d,t.uniqueId("rev"))});function l(c){return function(d){return c.edge(d).weight}}}function r(i){var a=[],l={},c={};function d(h){t.has(c,h)||(c[h]=!0,l[h]=!0,t.forEach(i.outEdges(h),function(m){t.has(l,m.w)?a.push(m):d(m.w)}),delete l[h])}return t.forEach(i.nodes(),d),a}function s(i){t.forEach(i.edges(),function(a){var l=i.edge(a);if(l.reversed){i.removeEdge(a);var c=l.forwardName;delete l.reversed,delete l.forwardName,i.setEdge(a.w,a.v,l,c)}})}return T3}var E3,WP;function Ti(){if(WP)return E3;WP=1;var t=Ar(),e=to().Graph;E3={addDummyNode:n,simplify:r,asNonCompoundGraph:s,successorWeights:i,predecessorWeights:a,intersectRect:l,buildLayerMatrix:c,normalizeRanks:d,removeEmptyRanks:h,addBorderNode:m,maxRank:g,partition:x,time:y,notime:w};function n(S,k,j,N){var T;do T=t.uniqueId(N);while(S.hasNode(T));return j.dummy=k,S.setNode(T,j),T}function r(S){var k=new e().setGraph(S.graph());return t.forEach(S.nodes(),function(j){k.setNode(j,S.node(j))}),t.forEach(S.edges(),function(j){var N=k.edge(j.v,j.w)||{weight:0,minlen:1},T=S.edge(j);k.setEdge(j.v,j.w,{weight:N.weight+T.weight,minlen:Math.max(N.minlen,T.minlen)})}),k}function s(S){var k=new e({multigraph:S.isMultigraph()}).setGraph(S.graph());return t.forEach(S.nodes(),function(j){S.children(j).length||k.setNode(j,S.node(j))}),t.forEach(S.edges(),function(j){k.setEdge(j,S.edge(j))}),k}function i(S){var k=t.map(S.nodes(),function(j){var N={};return t.forEach(S.outEdges(j),function(T){N[T.w]=(N[T.w]||0)+S.edge(T).weight}),N});return t.zipObject(S.nodes(),k)}function a(S){var k=t.map(S.nodes(),function(j){var N={};return t.forEach(S.inEdges(j),function(T){N[T.v]=(N[T.v]||0)+S.edge(T).weight}),N});return t.zipObject(S.nodes(),k)}function l(S,k){var j=S.x,N=S.y,T=k.x-j,E=k.y-N,_=S.width/2,A=S.height/2;if(!T&&!E)throw new Error("Not possible to find intersection inside of the rectangle");var D,q;return Math.abs(E)*_>Math.abs(T)*A?(E<0&&(A=-A),D=A*T/E,q=A):(T<0&&(_=-_),D=_,q=_*E/T),{x:j+D,y:N+q}}function c(S){var k=t.map(t.range(g(S)+1),function(){return[]});return t.forEach(S.nodes(),function(j){var N=S.node(j),T=N.rank;t.isUndefined(T)||(k[T][N.order]=j)}),k}function d(S){var k=t.min(t.map(S.nodes(),function(j){return S.node(j).rank}));t.forEach(S.nodes(),function(j){var N=S.node(j);t.has(N,"rank")&&(N.rank-=k)})}function h(S){var k=t.min(t.map(S.nodes(),function(E){return S.node(E).rank})),j=[];t.forEach(S.nodes(),function(E){var _=S.node(E).rank-k;j[_]||(j[_]=[]),j[_].push(E)});var N=0,T=S.graph().nodeRankFactor;t.forEach(j,function(E,_){t.isUndefined(E)&&_%T!==0?--N:N&&t.forEach(E,function(A){S.node(A).rank+=N})})}function m(S,k,j,N){var T={width:0,height:0};return arguments.length>=4&&(T.rank=j,T.order=N),n(S,"border",T,k)}function g(S){return t.max(t.map(S.nodes(),function(k){var j=S.node(k).rank;if(!t.isUndefined(j))return j}))}function x(S,k){var j={lhs:[],rhs:[]};return t.forEach(S,function(N){k(N)?j.lhs.push(N):j.rhs.push(N)}),j}function y(S,k){var j=t.now();try{return k()}finally{console.log(S+" time: "+(t.now()-j)+"ms")}}function w(S,k){return k()}return E3}var _3,GP;function rTe(){if(GP)return _3;GP=1;var t=Ar(),e=Ti();_3={run:n,undo:s};function n(i){i.graph().dummyChains=[],t.forEach(i.edges(),function(a){r(i,a)})}function r(i,a){var l=a.v,c=i.node(l).rank,d=a.w,h=i.node(d).rank,m=a.name,g=i.edge(a),x=g.labelRank;if(h!==c+1){i.removeEdge(a);var y,w,S;for(S=0,++c;cq.lim&&(B=q,H=!0);var W=t.filter(T.edges(),function(ee){return H===j(N,N.node(ee.v),B)&&H!==j(N,N.node(ee.w),B)});return t.minBy(W,function(ee){return n(T,ee)})}function w(N,T,E,_){var A=E.v,D=E.w;N.removeEdge(A,D),N.setEdge(_.v,_.w,{}),m(N),c(N,T),S(N,T)}function S(N,T){var E=t.find(N.nodes(),function(A){return!T.node(A).parent}),_=s(N,E);_=_.slice(1),t.forEach(_,function(A){var D=N.node(A).parent,q=T.edge(A,D),B=!1;q||(q=T.edge(D,A),B=!0),T.node(A).rank=T.node(D).rank+(B?q.minlen:-q.minlen)})}function k(N,T,E){return N.hasEdge(T,E)}function j(N,T,E){return E.low<=T.lim&&T.lim<=E.lim}return R3}var D3,ZP;function iTe(){if(ZP)return D3;ZP=1;var t=By(),e=t.longestPath,n=IG(),r=sTe();D3=s;function s(c){switch(c.graph().ranker){case"network-simplex":l(c);break;case"tight-tree":a(c);break;case"longest-path":i(c);break;default:l(c)}}var i=e;function a(c){e(c),n(c)}function l(c){r(c)}return D3}var P3,JP;function aTe(){if(JP)return P3;JP=1;var t=Ar();P3=e;function e(s){var i=r(s);t.forEach(s.graph().dummyChains,function(a){for(var l=s.node(a),c=l.edgeObj,d=n(s,i,c.v,c.w),h=d.path,m=d.lca,g=0,x=h[g],y=!0;a!==c.w;){if(l=s.node(a),y){for(;(x=h[g])!==m&&s.node(x).maxRankh||m>i[g].lim));for(x=g,g=l;(g=s.parent(g))!==x;)d.push(g);return{path:c.concat(d.reverse()),lca:x}}function r(s){var i={},a=0;function l(c){var d=a;t.forEach(s.children(c),l),i[c]={low:d,lim:a++}}return t.forEach(s.children(),l),i}return P3}var z3,ez;function oTe(){if(ez)return z3;ez=1;var t=Ar(),e=Ti();z3={run:n,cleanup:a};function n(l){var c=e.addDummyNode(l,"root",{},"_root"),d=s(l),h=t.max(t.values(d))-1,m=2*h+1;l.graph().nestingRoot=c,t.forEach(l.edges(),function(x){l.edge(x).minlen*=m});var g=i(l)+1;t.forEach(l.children(),function(x){r(l,c,m,g,h,d,x)}),l.graph().nodeRankFactor=m}function r(l,c,d,h,m,g,x){var y=l.children(x);if(!y.length){x!==c&&l.setEdge(c,x,{weight:0,minlen:d});return}var w=e.addBorderNode(l,"_bt"),S=e.addBorderNode(l,"_bb"),k=l.node(x);l.setParent(w,x),k.borderTop=w,l.setParent(S,x),k.borderBottom=S,t.forEach(y,function(j){r(l,c,d,h,m,g,j);var N=l.node(j),T=N.borderTop?N.borderTop:j,E=N.borderBottom?N.borderBottom:j,_=N.borderTop?h:2*h,A=T!==E?1:m-g[x]+1;l.setEdge(w,T,{weight:_,minlen:A,nestingEdge:!0}),l.setEdge(E,S,{weight:_,minlen:A,nestingEdge:!0})}),l.parent(x)||l.setEdge(c,w,{weight:0,minlen:m+g[x]})}function s(l){var c={};function d(h,m){var g=l.children(h);g&&g.length&&t.forEach(g,function(x){d(x,m+1)}),c[h]=m}return t.forEach(l.children(),function(h){d(h,1)}),c}function i(l){return t.reduce(l.edges(),function(c,d){return c+l.edge(d).weight},0)}function a(l){var c=l.graph();l.removeNode(c.nestingRoot),delete c.nestingRoot,t.forEach(l.edges(),function(d){var h=l.edge(d);h.nestingEdge&&l.removeEdge(d)})}return z3}var I3,tz;function lTe(){if(tz)return I3;tz=1;var t=Ar(),e=Ti();I3=n;function n(s){function i(a){var l=s.children(a),c=s.node(a);if(l.length&&t.forEach(l,i),t.has(c,"minRank")){c.borderLeft=[],c.borderRight=[];for(var d=c.minRank,h=c.maxRank+1;d0;)x%2&&(y+=h[x+1]),x=x-1>>1,h[x]+=g.weight;m+=g.weight*y})),m}return F3}var q3,iz;function hTe(){if(iz)return q3;iz=1;var t=Ar();q3=e;function e(n,r){return t.map(r,function(s){var i=n.inEdges(s);if(i.length){var a=t.reduce(i,function(l,c){var d=n.edge(c),h=n.node(c.v);return{sum:l.sum+d.weight*h.order,weight:l.weight+d.weight}},{sum:0,weight:0});return{v:s,barycenter:a.sum/a.weight,weight:a.weight}}else return{v:s}})}return q3}var $3,az;function fTe(){if(az)return $3;az=1;var t=Ar();$3=e;function e(s,i){var a={};t.forEach(s,function(c,d){var h=a[c.v]={indegree:0,in:[],out:[],vs:[c.v],i:d};t.isUndefined(c.barycenter)||(h.barycenter=c.barycenter,h.weight=c.weight)}),t.forEach(i.edges(),function(c){var d=a[c.v],h=a[c.w];!t.isUndefined(d)&&!t.isUndefined(h)&&(h.indegree++,d.out.push(a[c.w]))});var l=t.filter(a,function(c){return!c.indegree});return n(l)}function n(s){var i=[];function a(d){return function(h){h.merged||(t.isUndefined(h.barycenter)||t.isUndefined(d.barycenter)||h.barycenter>=d.barycenter)&&r(d,h)}}function l(d){return function(h){h.in.push(d),--h.indegree===0&&s.push(h)}}for(;s.length;){var c=s.pop();i.push(c),t.forEach(c.in.reverse(),a(c)),t.forEach(c.out,l(c))}return t.map(t.filter(i,function(d){return!d.merged}),function(d){return t.pick(d,["vs","i","barycenter","weight"])})}function r(s,i){var a=0,l=0;s.weight&&(a+=s.barycenter*s.weight,l+=s.weight),i.weight&&(a+=i.barycenter*i.weight,l+=i.weight),s.vs=i.vs.concat(s.vs),s.barycenter=a/l,s.weight=l,s.i=Math.min(i.i,s.i),i.merged=!0}return $3}var H3,oz;function mTe(){if(oz)return H3;oz=1;var t=Ar(),e=Ti();H3=n;function n(i,a){var l=e.partition(i,function(w){return t.has(w,"barycenter")}),c=l.lhs,d=t.sortBy(l.rhs,function(w){return-w.i}),h=[],m=0,g=0,x=0;c.sort(s(!!a)),x=r(h,d,x),t.forEach(c,function(w){x+=w.vs.length,h.push(w.vs),m+=w.barycenter*w.weight,g+=w.weight,x=r(h,d,x)});var y={vs:t.flatten(h,!0)};return g&&(y.barycenter=m/g,y.weight=g),y}function r(i,a,l){for(var c;a.length&&(c=t.last(a)).i<=l;)a.pop(),i.push(c.vs),l++;return l}function s(i){return function(a,l){return a.barycenterl.barycenter?1:i?l.i-a.i:a.i-l.i}}return H3}var Q3,lz;function pTe(){if(lz)return Q3;lz=1;var t=Ar(),e=hTe(),n=fTe(),r=mTe();Q3=s;function s(l,c,d,h){var m=l.children(c),g=l.node(c),x=g?g.borderLeft:void 0,y=g?g.borderRight:void 0,w={};x&&(m=t.filter(m,function(E){return E!==x&&E!==y}));var S=e(l,m);t.forEach(S,function(E){if(l.children(E.v).length){var _=s(l,E.v,d,h);w[E.v]=_,t.has(_,"barycenter")&&a(E,_)}});var k=n(S,d);i(k,w);var j=r(k,h);if(x&&(j.vs=t.flatten([x,j.vs,y],!0),l.predecessors(x).length)){var N=l.node(l.predecessors(x)[0]),T=l.node(l.predecessors(y)[0]);t.has(j,"barycenter")||(j.barycenter=0,j.weight=0),j.barycenter=(j.barycenter*j.weight+N.order+T.order)/(j.weight+2),j.weight+=2}return j}function i(l,c){t.forEach(l,function(d){d.vs=t.flatten(d.vs.map(function(h){return c[h]?c[h].vs:h}),!0)})}function a(l,c){t.isUndefined(l.barycenter)?(l.barycenter=c.barycenter,l.weight=c.weight):(l.barycenter=(l.barycenter*l.weight+c.barycenter*c.weight)/(l.weight+c.weight),l.weight+=c.weight)}return Q3}var V3,cz;function gTe(){if(cz)return V3;cz=1;var t=Ar(),e=to().Graph;V3=n;function n(s,i,a){var l=r(s),c=new e({compound:!0}).setGraph({root:l}).setDefaultNodeLabel(function(d){return s.node(d)});return t.forEach(s.nodes(),function(d){var h=s.node(d),m=s.parent(d);(h.rank===i||h.minRank<=i&&i<=h.maxRank)&&(c.setNode(d),c.setParent(d,m||l),t.forEach(s[a](d),function(g){var x=g.v===d?g.w:g.v,y=c.edge(x,d),w=t.isUndefined(y)?0:y.weight;c.setEdge(x,d,{weight:s.edge(g).weight+w})}),t.has(h,"minRank")&&c.setNode(d,{borderLeft:h.borderLeft[i],borderRight:h.borderRight[i]}))}),c}function r(s){for(var i;s.hasNode(i=t.uniqueId("_root")););return i}return V3}var U3,uz;function xTe(){if(uz)return U3;uz=1;var t=Ar();U3=e;function e(n,r,s){var i={},a;t.forEach(s,function(l){for(var c=n.parent(l),d,h;c;){if(d=n.parent(c),d?(h=i[d],i[d]=c):(h=a,a=c),h&&h!==c){r.setEdge(h,c);return}c=d}})}return U3}var W3,dz;function vTe(){if(dz)return W3;dz=1;var t=Ar(),e=uTe(),n=dTe(),r=pTe(),s=gTe(),i=xTe(),a=to().Graph,l=Ti();W3=c;function c(g){var x=l.maxRank(g),y=d(g,t.range(1,x+1),"inEdges"),w=d(g,t.range(x-1,-1,-1),"outEdges"),S=e(g);m(g,S);for(var k=Number.POSITIVE_INFINITY,j,N=0,T=0;T<4;++N,++T){h(N%2?y:w,N%4>=2),S=l.buildLayerMatrix(g);var E=n(g,S);EB)&&a(N,ee,H)})})}function E(_,A){var D=-1,q,B=0;return t.forEach(A,function(H,W){if(k.node(H).dummy==="border"){var ee=k.predecessors(H);ee.length&&(q=k.node(ee[0]).order,T(A,B,W,D,q),B=W,D=q)}T(A,B,A.length,q,_.length)}),A}return t.reduce(j,E),N}function i(k,j){if(k.node(j).dummy)return t.find(k.predecessors(j),function(N){return k.node(N).dummy})}function a(k,j,N){if(j>N){var T=j;j=N,N=T}var E=k[j];E||(k[j]=E={}),E[N]=!0}function l(k,j,N){if(j>N){var T=j;j=N,N=T}return t.has(k[j],N)}function c(k,j,N,T){var E={},_={},A={};return t.forEach(j,function(D){t.forEach(D,function(q,B){E[q]=q,_[q]=q,A[q]=B})}),t.forEach(j,function(D){var q=-1;t.forEach(D,function(B){var H=T(B);if(H.length){H=t.sortBy(H,function(L){return A[L]});for(var W=(H.length-1)/2,ee=Math.floor(W),I=Math.ceil(W);ee<=I;++ee){var V=H[ee];_[B]===B&&qo.jsxs("div",{className:"px-4 py-2 shadow-md rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700 min-w-[120px]",children:[o.jsx(au,{type:"target",position:kt.Top}),o.jsx("div",{className:"font-semibold text-white text-sm truncate max-w-[200px]",title:t.content,children:t.label}),o.jsx(au,{type:"source",position:kt.Bottom})]}));LG.displayName="EntityNode";const BG=b.memo(({data:t})=>o.jsxs("div",{className:"px-3 py-2 shadow-md rounded-md bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700 min-w-[100px]",children:[o.jsx(au,{type:"target",position:kt.Top}),o.jsx("div",{className:"font-medium text-white text-xs truncate max-w-[150px]",title:t.content,children:t.label}),o.jsx(au,{type:"source",position:kt.Bottom})]}));BG.displayName="ParagraphNode";const ETe={entity:LG,paragraph:BG};function _Te(t,e){const n=new vz.graphlib.Graph;n.setDefaultEdgeLabel(()=>({})),n.setGraph({rankdir:"TB",ranksep:100,nodesep:80});const r=[],s=[];return t.forEach(i=>{n.setNode(i.id,{width:150,height:50})}),e.forEach(i=>{n.setEdge(i.source,i.target)}),vz.layout(n),t.forEach(i=>{const a=n.node(i.id);r.push({id:i.id,type:i.type,position:{x:a.x-75,y:a.y-25},data:{label:i.content.slice(0,20)+(i.content.length>20?"...":""),content:i.content}})}),e.forEach((i,a)=>{const l={id:`edge-${a}`,source:i.source,target:i.target,animated:t.length<=200&&i.weight>5,style:{strokeWidth:Math.min(i.weight/2,5),opacity:.6}};i.weight>10&&t.length<100&&(l.label=`${i.weight.toFixed(0)}`),s.push(l)}),{nodes:r,edges:s}}function ATe(){const t=na(),[e,n]=b.useState(!1),[r,s]=b.useState(null),[i,a]=b.useState(""),[l,c]=b.useState("all"),[d,h]=b.useState(50),[m,g]=b.useState("50"),[x,y]=b.useState(!1),[w,S]=b.useState(!0),[k,j]=b.useState(!1),[N,T]=b.useState(!1),[E,_,A]=$Ce([]),[D,q,B]=HCe([]),[H,W]=b.useState(0),[ee,I]=b.useState(null),[V,L]=b.useState(null),{toast:$}=Lr(),K=b.useCallback(ne=>ne.type==="entity"?"#6366f1":ne.type==="paragraph"?"#10b981":"#6b7280",[]),Y=b.useCallback(async(ne=!1)=>{try{if(!ne&&d>200){T(!0);return}n(!0);const[G,se]=await Promise.all([NTe(d,l),CTe()]);if(s(se),G.nodes.length===0){$({title:"提示",description:"知识库为空,请先导入知识数据"}),_([]),q([]);return}const{nodes:re,edges:ae}=_Te(G.nodes,G.edges);_(re),q(ae),W(re.length),se&&se.total_nodes>d&&$({title:"提示",description:`知识图谱包含 ${se.total_nodes} 个节点,当前显示 ${re.length} 个`}),$({title:"加载成功",description:`已加载 ${re.length} 个节点,${ae.length} 条边`})}catch(G){console.error("加载知识图谱失败:",G),$({title:"加载失败",description:G instanceof Error?G.message:"未知错误",variant:"destructive"})}finally{n(!1)}},[d,l,$]),R=b.useCallback(async()=>{if(!i.trim()){$({title:"提示",description:"请输入搜索关键词"});return}try{const ne=await TTe(i);if(ne.length===0){$({title:"未找到",description:"没有找到匹配的节点"});return}const G=new Set(ne.map(se=>se.id));_(se=>se.map(re=>({...re,style:{...re.style,opacity:G.has(re.id)?1:.3,filter:G.has(re.id)?"brightness(1.2)":"brightness(0.8)"}}))),$({title:"搜索完成",description:`找到 ${ne.length} 个匹配节点`})}catch(ne){console.error("搜索失败:",ne),$({title:"搜索失败",description:ne instanceof Error?ne.message:"未知错误",variant:"destructive"})}},[i,$]),ie=b.useCallback(()=>{_(ne=>ne.map(G=>({...G,style:{...G.style,opacity:1,filter:"brightness(1)"}})))},[]),X=b.useCallback(()=>{S(!1),j(!0),Y()},[Y]),z=b.useCallback(()=>{T(!1),setTimeout(()=>{Y(!0)},0)},[Y]),U=b.useCallback((ne,G)=>{E.find(re=>re.id===G.id)&&I({id:G.id,type:G.type,content:G.data.content})},[E]);b.useEffect(()=>{w||k&&Y()},[d,l,w,k]);const te=b.useCallback((ne,G)=>{const se=E.find(_e=>_e.id===G.source),re=E.find(_e=>_e.id===G.target),ae=D.find(_e=>_e.id===G.id);se&&re&&ae&&L({source:{id:se.id,type:se.type,content:se.data.content},target:{id:re.id,type:re.type,content:re.data.content},edge:{source:G.source,target:G.target,weight:parseFloat(G.label||"0")}})},[E,D]);return o.jsxs("div",{className:"h-full flex flex-col",children:[o.jsxs("div",{className:"flex-shrink-0 p-4 border-b bg-background",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦知识库图谱"}),o.jsx("p",{className:"text-muted-foreground mt-1",children:"可视化知识实体与关系网络"})]}),r&&o.jsxs("div",{className:"flex gap-2 flex-wrap",children:[o.jsxs(tn,{variant:"outline",className:"gap-1",children:[o.jsx(sk,{className:"h-3 w-3"}),"节点: ",r.total_nodes]}),o.jsxs(tn,{variant:"outline",className:"gap-1",children:[o.jsx(NI,{className:"h-3 w-3"}),"边: ",r.total_edges]}),o.jsxs(tn,{variant:"outline",className:"gap-1",children:[o.jsx(Xi,{className:"h-3 w-3"}),"实体: ",r.entity_nodes]}),o.jsxs(tn,{variant:"outline",className:"gap-1",children:[o.jsx(Po,{className:"h-3 w-3"}),"段落: ",r.paragraph_nodes]})]})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 mt-4",children:[o.jsxs("div",{className:"flex-1 flex gap-2",children:[o.jsx(Pe,{placeholder:"搜索节点内容...",value:i,onChange:ne=>a(ne.target.value),onKeyDown:ne=>ne.key==="Enter"&&R(),className:"flex-1"}),o.jsx(ue,{onClick:R,size:"sm",children:o.jsx(ii,{className:"h-4 w-4"})}),o.jsx(ue,{onClick:ie,variant:"outline",size:"sm",children:"重置"})]}),o.jsxs("div",{className:"flex gap-2",children:[o.jsxs(Vt,{value:l,onValueChange:ne=>c(ne),children:[o.jsx($t,{className:"w-[120px]",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部节点"}),o.jsx(De,{value:"entity",children:"仅实体"}),o.jsx(De,{value:"paragraph",children:"仅段落"})]})]}),o.jsxs(Vt,{value:d===1e4?"all":x?"custom":d.toString(),onValueChange:ne=>{ne==="custom"?(y(!0),g(d.toString())):ne==="all"?(y(!1),h(1e4)):(y(!1),h(Number(ne)))},children:[o.jsx($t,{className:"w-[120px]",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"50",children:"50 节点"}),o.jsx(De,{value:"100",children:"100 节点"}),o.jsx(De,{value:"200",children:"200 节点"}),o.jsx(De,{value:"500",children:"500 节点"}),o.jsx(De,{value:"1000",children:"1000 节点"}),o.jsx(De,{value:"all",children:"全部 (最多10000)"}),o.jsx(De,{value:"custom",children:"自定义..."})]})]}),x&&o.jsx(Pe,{type:"number",min:"50",value:m,onChange:ne=>g(ne.target.value),onBlur:()=>{const ne=parseInt(m);!isNaN(ne)&&ne>=50?h(ne):(g("50"),h(50))},onKeyDown:ne=>{if(ne.key==="Enter"){const G=parseInt(m);!isNaN(G)&&G>=50?h(G):(g("50"),h(50))}},placeholder:"最少50个",className:"w-[120px]"}),o.jsx(ue,{onClick:()=>Y(),variant:"outline",size:"sm",disabled:e,children:o.jsx(Qs,{className:xe("h-4 w-4",e&&"animate-spin")})})]})]})]}),o.jsx("div",{className:"flex-1 relative",children:e?o.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:o.jsxs("div",{className:"text-center",children:[o.jsx(Qs,{className:"h-8 w-8 animate-spin mx-auto mb-2 text-muted-foreground"}),o.jsx("p",{className:"text-muted-foreground",children:"加载知识图谱中..."})]})}):E.length===0?o.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:o.jsxs("div",{className:"text-center",children:[o.jsx(sk,{className:"h-12 w-12 mx-auto mb-4 text-muted-foreground"}),o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"知识库为空"}),o.jsx("p",{className:"text-muted-foreground",children:"请先导入知识数据"})]})}):o.jsxs(pG,{nodes:E,edges:D,onNodesChange:A,onEdgesChange:B,onNodeClick:U,onEdgeClick:te,nodeTypes:ETe,fitView:!0,minZoom:.05,maxZoom:1.5,defaultViewport:{x:0,y:0,zoom:.5},elevateNodesOnSelect:H<=500,nodesDraggable:H<=1e3,attributionPosition:"bottom-left",children:[o.jsx(h8e,{variant:Ea.Dots,gap:12,size:1}),o.jsx(a8e,{}),H<=500&&o.jsx(JCe,{nodeColor:K,nodeBorderRadius:8,pannable:!0,zoomable:!0}),o.jsxs(rw,{position:"top-right",className:"bg-background/95 backdrop-blur-sm rounded-lg border p-3 shadow-lg",children:[o.jsx("div",{className:"text-sm font-semibold mb-2",children:"图例"}),o.jsxs("div",{className:"space-y-2 text-xs",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700"}),o.jsx("span",{children:"实体节点"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700"}),o.jsx("span",{children:"段落节点"})]}),H>200&&o.jsxs("div",{className:"mt-2 pt-2 border-t text-yellow-600 dark:text-yellow-500",children:[o.jsx("div",{className:"font-semibold",children:"性能模式"}),o.jsx("div",{children:"已禁用动画"}),H>500&&o.jsx("div",{children:"已禁用缩略图"})]})]})]})]})}),o.jsx(Er,{open:!!ee,onOpenChange:ne=>!ne&&I(null),children:o.jsxs(wr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsx(Sr,{children:o.jsx(kr,{children:"节点详情"})}),ee&&o.jsxs("div",{className:"space-y-4",children:[o.jsx("div",{className:"grid grid-cols-2 gap-4",children:o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"类型"}),o.jsx("div",{className:"mt-1",children:o.jsx(tn,{variant:ee.type==="entity"?"default":"secondary",children:ee.type==="entity"?"🏷️ 实体":"📄 段落"})})]})}),o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"ID"}),o.jsx("code",{className:"mt-1 block p-2 bg-muted rounded text-xs break-all",children:ee.id})]}),o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"内容"}),o.jsx(pn,{className:"mt-1 h-40 p-3 bg-muted rounded",children:o.jsx("p",{className:"text-sm whitespace-pre-wrap",children:ee.content})})]})]})]})}),o.jsx(Er,{open:!!V,onOpenChange:ne=>!ne&&L(null),children:o.jsxs(wr,{className:"max-w-2xl max-h-[80vh] overflow-hidden flex flex-col",children:[o.jsx(Sr,{children:o.jsx(kr,{children:"边详情"})}),V&&o.jsx(pn,{className:"flex-1 pr-4",children:o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-blue-50 dark:bg-blue-950 rounded border-2 border-blue-200 dark:border-blue-800",children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"源节点"}),o.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:V.source.content}),o.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[V.source.id.slice(0,40),"..."]})]}),o.jsx("div",{className:"text-2xl text-muted-foreground flex-shrink-0",children:"→"}),o.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-green-50 dark:bg-green-950 rounded border-2 border-green-200 dark:border-green-800",children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"目标节点"}),o.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:V.target.content}),o.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[V.target.id.slice(0,40),"..."]})]})]}),o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"权重"}),o.jsx("div",{className:"mt-1",children:o.jsx(tn,{variant:"outline",className:"text-base font-mono",children:V.edge.weight.toFixed(4)})})]})]})})]})}),o.jsx(Fn,{open:w,onOpenChange:S,children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"加载知识图谱"}),o.jsxs(zn,{children:["知识图谱的动态展示会消耗较多系统资源。",o.jsx("br",{}),"确定要加载知识图谱吗?"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{onClick:()=>t({to:"/"}),children:"取消 (返回首页)"}),o.jsx(In,{onClick:X,children:"确认加载"})]})]})}),o.jsx(Fn,{open:N,onOpenChange:T,children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"⚠️ 节点数量较多"}),o.jsx(zn,{asChild:!0,children:o.jsxs("div",{children:[o.jsxs("p",{children:["您正在尝试加载 ",o.jsx("strong",{className:"text-orange-600",children:d>=1e4?"全部 (最多10000个)":d})," 个节点。"]}),o.jsx("p",{className:"mt-4",children:"节点数量过多可能导致:"}),o.jsxs("ul",{className:"list-disc list-inside mt-2 space-y-1",children:[o.jsx("li",{children:"页面加载时间较长"}),o.jsx("li",{children:"浏览器卡顿或崩溃"}),o.jsx("li",{children:"系统资源占用过高"})]}),o.jsx("p",{className:"mt-4",children:"建议先选择较少的节点数量 (50-200 个)。"})]})})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{onClick:()=>{T(!1),d>200&&(h(50),y(!1))},children:"取消"}),o.jsx(In,{onClick:z,className:"bg-orange-600 hover:bg-orange-700",children:"我了解风险,继续加载"})]})]})})]})}function gh(t,e,n){let r=n.initialDeps??[],s;function i(){var a,l,c,d;let h;n.key&&((a=n.debug)!=null&&a.call(n))&&(h=Date.now());const m=t();if(!(m.length!==r.length||m.some((y,w)=>r[w]!==y)))return s;r=m;let x;if(n.key&&((l=n.debug)!=null&&l.call(n))&&(x=Date.now()),s=e(...m),n.key&&((c=n.debug)!=null&&c.call(n))){const y=Math.round((Date.now()-h)*100)/100,w=Math.round((Date.now()-x)*100)/100,S=w/16,k=(j,N)=>{for(j=String(j);j.length{r=a},i}function fz(t,e){if(t===void 0)throw new Error("Unexpected undefined");return t}const TTe=(t,e)=>Math.abs(t-e)<1.01,ETe=(t,e,n)=>{let r;return function(...s){t.clearTimeout(r),r=t.setTimeout(()=>e.apply(this,s),n)}},mz=t=>{const{offsetWidth:e,offsetHeight:n}=t;return{width:e,height:n}},_Te=t=>t,ATe=t=>{const e=Math.max(t.startIndex-t.overscan,0),n=Math.min(t.endIndex+t.overscan,t.count-1),r=[];for(let s=e;s<=n;s++)r.push(s);return r},MTe=(t,e)=>{const n=t.scrollElement;if(!n)return;const r=t.targetWindow;if(!r)return;const s=a=>{const{width:l,height:c}=a;e({width:Math.round(l),height:Math.round(c)})};if(s(mz(n)),!r.ResizeObserver)return()=>{};const i=new r.ResizeObserver(a=>{const l=()=>{const c=a[0];if(c?.borderBoxSize){const d=c.borderBoxSize[0];if(d){s({width:d.inlineSize,height:d.blockSize});return}}s(mz(n))};t.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(l):l()});return i.observe(n,{box:"border-box"}),()=>{i.unobserve(n)}},pz={passive:!0},gz=typeof window>"u"?!0:"onscrollend"in window,RTe=(t,e)=>{const n=t.scrollElement;if(!n)return;const r=t.targetWindow;if(!r)return;let s=0;const i=t.options.useScrollendEvent&&gz?()=>{}:ETe(r,()=>{e(s,!1)},t.options.isScrollingResetDelay),a=h=>()=>{const{horizontal:m,isRtl:g}=t.options;s=m?n.scrollLeft*(g&&-1||1):n.scrollTop,i(),e(s,h)},l=a(!0),c=a(!1);c(),n.addEventListener("scroll",l,pz);const d=t.options.useScrollendEvent&&gz;return d&&n.addEventListener("scrollend",c,pz),()=>{n.removeEventListener("scroll",l),d&&n.removeEventListener("scrollend",c)}},DTe=(t,e,n)=>{if(e?.borderBoxSize){const r=e.borderBoxSize[0];if(r)return Math.round(r[n.options.horizontal?"inlineSize":"blockSize"])}return t[n.options.horizontal?"offsetWidth":"offsetHeight"]},PTe=(t,{adjustments:e=0,behavior:n},r)=>{var s,i;const a=t+e;(i=(s=r.scrollElement)==null?void 0:s.scrollTo)==null||i.call(s,{[r.options.horizontal?"left":"top"]:a,behavior:n})};class zTe{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.measurementsCache=[],this.itemSizeCache=new Map,this.pendingMeasuredCacheIndexes=[],this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.observer=(()=>{let n=null;const r=()=>n||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:n=new this.targetWindow.ResizeObserver(s=>{s.forEach(i=>{const a=()=>{this._measureElement(i.target,i)};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(a):a()})}));return{disconnect:()=>{var s;(s=r())==null||s.disconnect(),n=null},observe:s=>{var i;return(i=r())==null?void 0:i.observe(s,{box:"border-box"})},unobserve:s=>{var i;return(i=r())==null?void 0:i.unobserve(s)}}})(),this.range=null,this.setOptions=n=>{Object.entries(n).forEach(([r,s])=>{typeof s>"u"&&delete n[r]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:_Te,rangeExtractor:ATe,onChange:()=>{},measureElement:DTe,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,...n}},this.notify=n=>{var r,s;(s=(r=this.options).onChange)==null||s.call(r,this,n)},this.maybeNotify=mh(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),n=>{this.notify(n)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(n=>n()),this.unsubs=[],this.observer.disconnect(),this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var n;const r=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==r){if(this.cleanup(),!r){this.maybeNotify();return}this.scrollElement=r,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((n=this.scrollElement)==null?void 0:n.window)??null,this.elementsCache.forEach(s=>{this.observer.observe(s)}),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0}),this.unsubs.push(this.options.observeElementRect(this,s=>{this.scrollRect=s,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(s,i)=>{this.scrollAdjustments=0,this.scrollDirection=i?this.getScrollOffset()this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(n,r)=>{const s=new Map,i=new Map;for(let a=r-1;a>=0;a--){const l=n[a];if(s.has(l.lane))continue;const c=i.get(l.lane);if(c==null||l.end>c.end?i.set(l.lane,l):l.enda.end===l.end?a.index-l.index:a.end-l.end)[0]:void 0},this.getMeasurementOptions=mh(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled],(n,r,s,i,a)=>(this.pendingMeasuredCacheIndexes=[],{count:n,paddingStart:r,scrollMargin:s,getItemKey:i,enabled:a}),{key:!1}),this.getMeasurements=mh(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:n,paddingStart:r,scrollMargin:s,getItemKey:i,enabled:a},l)=>{if(!a)return this.measurementsCache=[],this.itemSizeCache.clear(),[];this.measurementsCache.length===0&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(h=>{this.itemSizeCache.set(h.key,h.size)}));const c=this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[];const d=this.measurementsCache.slice(0,c);for(let h=c;hthis.options.debug}),this.calculateRange=mh(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(n,r,s,i)=>this.range=n.length>0&&r>0?ITe({measurements:n,outerSize:r,scrollOffset:s,lanes:i}):null,{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=mh(()=>{let n=null,r=null;const s=this.calculateRange();return s&&(n=s.startIndex,r=s.endIndex),this.maybeNotify.updateDeps([this.isScrolling,n,r]),[this.options.rangeExtractor,this.options.overscan,this.options.count,n,r]},(n,r,s,i,a)=>i===null||a===null?[]:n({startIndex:i,endIndex:a,overscan:r,count:s}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=n=>{const r=this.options.indexAttribute,s=n.getAttribute(r);return s?parseInt(s,10):(console.warn(`Missing attribute name '${r}={index}' on measured element.`),-1)},this._measureElement=(n,r)=>{const s=this.indexFromElement(n),i=this.measurementsCache[s];if(!i)return;const a=i.key,l=this.elementsCache.get(a);l!==n&&(l&&this.observer.unobserve(l),this.observer.observe(n),this.elementsCache.set(a,n)),n.isConnected&&this.resizeItem(s,this.options.measureElement(n,r,this))},this.resizeItem=(n,r)=>{const s=this.measurementsCache[n];if(!s)return;const i=this.itemSizeCache.get(s.key)??s.size,a=r-i;a!==0&&((this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(s,a,this):s.start{if(!n){this.elementsCache.forEach((r,s)=>{r.isConnected||(this.observer.unobserve(r),this.elementsCache.delete(s))});return}this._measureElement(n,void 0)},this.getVirtualItems=mh(()=>[this.getVirtualIndexes(),this.getMeasurements()],(n,r)=>{const s=[];for(let i=0,a=n.length;ithis.options.debug}),this.getVirtualItemForOffset=n=>{const r=this.getMeasurements();if(r.length!==0)return fz(r[zG(0,r.length-1,s=>fz(r[s]).start,n)])},this.getOffsetForAlignment=(n,r,s=0)=>{const i=this.getSize(),a=this.getScrollOffset();r==="auto"&&(r=n>=a+i?"end":"start"),r==="center"?n+=(s-i)/2:r==="end"&&(n-=i);const l=this.getTotalSize()+this.options.scrollMargin-i;return Math.max(Math.min(l,n),0)},this.getOffsetForIndex=(n,r="auto")=>{n=Math.max(0,Math.min(n,this.options.count-1));const s=this.measurementsCache[n];if(!s)return;const i=this.getSize(),a=this.getScrollOffset();if(r==="auto")if(s.end>=a+i-this.options.scrollPaddingEnd)r="end";else if(s.start<=a+this.options.scrollPaddingStart)r="start";else return[a,r];const l=r==="end"?s.end+this.options.scrollPaddingEnd:s.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(l,r,s.size),r]},this.isDynamicMode=()=>this.elementsCache.size>0,this.scrollToOffset=(n,{align:r="start",behavior:s}={})=>{s==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getOffsetForAlignment(n,r),{adjustments:void 0,behavior:s})},this.scrollToIndex=(n,{align:r="auto",behavior:s}={})=>{s==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),n=Math.max(0,Math.min(n,this.options.count-1));let i=0;const a=10,l=d=>{if(!this.targetWindow)return;const h=this.getOffsetForIndex(n,d);if(!h){console.warn("Failed to get offset for index:",n);return}const[m,g]=h;this._scrollToOffset(m,{adjustments:void 0,behavior:s}),this.targetWindow.requestAnimationFrame(()=>{const x=this.getScrollOffset(),y=this.getOffsetForIndex(n,g);if(!y){console.warn("Failed to get offset for index:",n);return}TTe(y[0],x)||c(g)})},c=d=>{this.targetWindow&&(i++,il(d)):console.warn(`Failed to scroll to index ${n} after ${a} attempts.`))};l(r)},this.scrollBy=(n,{behavior:r}={})=>{r==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getScrollOffset()+n,{adjustments:void 0,behavior:r})},this.getTotalSize=()=>{var n;const r=this.getMeasurements();let s;if(r.length===0)s=this.options.paddingStart;else if(this.options.lanes===1)s=((n=r[r.length-1])==null?void 0:n.end)??0;else{const i=Array(this.options.lanes).fill(null);let a=r.length-1;for(;a>=0&&i.some(l=>l===null);){const l=r[a];i[l.lane]===null&&(i[l.lane]=l.end),a--}s=Math.max(...i.filter(l=>l!==null))}return Math.max(s-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(n,{adjustments:r,behavior:s})=>{this.options.scrollToFn(n,{behavior:s,adjustments:r},this)},this.measure=()=>{this.itemSizeCache=new Map,this.notify(!1)},this.setOptions(e)}}const zG=(t,e,n,r)=>{for(;t<=e;){const s=(t+e)/2|0,i=n(s);if(ir)e=s-1;else return s}return t>0?t-1:0};function ITe({measurements:t,outerSize:e,scrollOffset:n,lanes:r}){const s=t.length-1,i=c=>t[c].start;if(t.length<=r)return{startIndex:0,endIndex:s};let a=zG(0,s,i,n),l=a;if(r===1)for(;l1){const c=Array(r).fill(0);for(;lh=0&&d.some(h=>h>=n);){const h=t[a];d[h.lane]=h.start,a--}a=Math.max(0,a-a%r),l=Math.min(s,l+(r-1-l%r))}return{startIndex:a,endIndex:l}}const xz=typeof document<"u"?b.useLayoutEffect:b.useEffect;function LTe(t){const e=b.useReducer(()=>({}),{})[1],n={...t,onChange:(s,i)=>{var a;i?pa.flushSync(e):e(),(a=t.onChange)==null||a.call(t,s,i)}},[r]=b.useState(()=>new zTe(n));return r.setOptions(n),xz(()=>r._didMount(),[]),xz(()=>r._willUpdate()),r}function BTe(t){return LTe({observeElementRect:MTe,observeElementOffset:RTe,scrollToFn:PTe,...t})}function FTe(t,e,n="long"){return new Intl.DateTimeFormat("en-US",{hour:"numeric",timeZone:t,timeZoneName:n}).format(e).split(/\s/g).slice(2).join(" ")}const qTe={},g0={};function Gu(t,e){try{const r=(qTe[t]||=new Intl.DateTimeFormat("en-US",{timeZone:t,timeZoneName:"longOffset"}).format)(e).split("GMT")[1];return r in g0?g0[r]:vz(r,r.split(":"))}catch{if(t in g0)return g0[t];const n=t?.match($Te);return n?vz(t,n.slice(1)):NaN}}const $Te=/([+-]\d\d):?(\d\d)?/;function vz(t,e){const n=+(e[0]||0),r=+(e[1]||0),s=+(e[2]||0)/60;return g0[t]=n*60+r>0?n*60+r+s:n*60-r-s}class Mo extends Date{constructor(...e){super(),e.length>1&&typeof e[e.length-1]=="string"&&(this.timeZone=e.pop()),this.internal=new Date,isNaN(Gu(this.timeZone,this))?this.setTime(NaN):e.length?typeof e[0]=="number"&&(e.length===1||e.length===2&&typeof e[1]!="number")?this.setTime(e[0]):typeof e[0]=="string"?this.setTime(+new Date(e[0])):e[0]instanceof Date?this.setTime(+e[0]):(this.setTime(+new Date(...e)),IG(this),lj(this)):this.setTime(Date.now())}static tz(e,...n){return n.length?new Mo(...n,e):new Mo(Date.now(),e)}withTimeZone(e){return new Mo(+this,e)}getTimezoneOffset(){const e=-Gu(this.timeZone,this);return e>0?Math.floor(e):Math.ceil(e)}setTime(e){return Date.prototype.setTime.apply(this,arguments),lj(this),+this}[Symbol.for("constructDateFrom")](e){return new Mo(+new Date(e),this.timeZone)}}const yz=/^(get|set)(?!UTC)/;Object.getOwnPropertyNames(Date.prototype).forEach(t=>{if(!yz.test(t))return;const e=t.replace(yz,"$1UTC");Mo.prototype[e]&&(t.startsWith("get")?Mo.prototype[t]=function(){return this.internal[e]()}:(Mo.prototype[t]=function(){return Date.prototype[e].apply(this.internal,arguments),HTe(this),+this},Mo.prototype[e]=function(){return Date.prototype[e].apply(this,arguments),lj(this),+this}))});function lj(t){t.internal.setTime(+t),t.internal.setUTCSeconds(t.internal.getUTCSeconds()-Math.round(-Gu(t.timeZone,t)*60))}function HTe(t){Date.prototype.setFullYear.call(t,t.internal.getUTCFullYear(),t.internal.getUTCMonth(),t.internal.getUTCDate()),Date.prototype.setHours.call(t,t.internal.getUTCHours(),t.internal.getUTCMinutes(),t.internal.getUTCSeconds(),t.internal.getUTCMilliseconds()),IG(t)}function IG(t){const e=Gu(t.timeZone,t),n=e>0?Math.floor(e):Math.ceil(e),r=new Date(+t);r.setUTCHours(r.getUTCHours()-1);const s=-new Date(+t).getTimezoneOffset(),i=-new Date(+r).getTimezoneOffset(),a=s-i,l=Date.prototype.getHours.apply(t)!==t.internal.getUTCHours();a&&l&&t.internal.setUTCMinutes(t.internal.getUTCMinutes()+a);const c=s-n;c&&Date.prototype.setUTCMinutes.call(t,Date.prototype.getUTCMinutes.call(t)+c);const d=new Date(+t);d.setUTCSeconds(0);const h=s>0?d.getSeconds():(d.getSeconds()-60)%60,m=Math.round(-(Gu(t.timeZone,t)*60))%60;(m||h)&&(t.internal.setUTCSeconds(t.internal.getUTCSeconds()+m),Date.prototype.setUTCSeconds.call(t,Date.prototype.getUTCSeconds.call(t)+m+h));const g=Gu(t.timeZone,t),x=g>0?Math.floor(g):Math.ceil(g),w=-new Date(+t).getTimezoneOffset()-x,S=x!==n,k=w-c;if(S&&k){Date.prototype.setUTCMinutes.call(t,Date.prototype.getUTCMinutes.call(t)+k);const j=Gu(t.timeZone,t),N=j>0?Math.floor(j):Math.ceil(j),T=x-N;T&&(t.internal.setUTCMinutes(t.internal.getUTCMinutes()+T),Date.prototype.setUTCMinutes.call(t,Date.prototype.getUTCMinutes.call(t)+T))}}class Fs extends Mo{static tz(e,...n){return n.length?new Fs(...n,e):new Fs(Date.now(),e)}toISOString(){const[e,n,r]=this.tzComponents(),s=`${e}${n}:${r}`;return this.internal.toISOString().slice(0,-1)+s}toString(){return`${this.toDateString()} ${this.toTimeString()}`}toDateString(){const[e,n,r,s]=this.internal.toUTCString().split(" ");return`${e?.slice(0,-1)} ${r} ${n} ${s}`}toTimeString(){const e=this.internal.toUTCString().split(" ")[4],[n,r,s]=this.tzComponents();return`${e} GMT${n}${r}${s} (${FTe(this.timeZone,this)})`}toLocaleString(e,n){return Date.prototype.toLocaleString.call(this,e,{...n,timeZone:n?.timeZone||this.timeZone})}toLocaleDateString(e,n){return Date.prototype.toLocaleDateString.call(this,e,{...n,timeZone:n?.timeZone||this.timeZone})}toLocaleTimeString(e,n){return Date.prototype.toLocaleTimeString.call(this,e,{...n,timeZone:n?.timeZone||this.timeZone})}tzComponents(){const e=this.getTimezoneOffset(),n=e>0?"-":"+",r=String(Math.floor(Math.abs(e)/60)).padStart(2,"0"),s=String(Math.abs(e)%60).padStart(2,"0");return[n,r,s]}withTimeZone(e){return new Fs(+this,e)}[Symbol.for("constructDateFrom")](e){return new Fs(+new Date(e),this.timeZone)}}const LG=6048e5,QTe=864e5,bz=Symbol.for("constructDateFrom");function is(t,e){return typeof t=="function"?t(e):t&&typeof t=="object"&&bz in t?t[bz](e):t instanceof Date?new t.constructor(e):new Date(e)}function tr(t,e){return is(e||t,t)}function BG(t,e,n){const r=tr(t,n?.in);return isNaN(e)?is(t,NaN):(e&&r.setDate(r.getDate()+e),r)}function FG(t,e,n){const r=tr(t,n?.in);if(isNaN(e))return is(t,NaN);if(!e)return r;const s=r.getDate(),i=is(t,r.getTime());i.setMonth(r.getMonth()+e+1,0);const a=i.getDate();return s>=a?i:(r.setFullYear(i.getFullYear(),i.getMonth(),s),r)}let VTe={};function yg(){return VTe}function su(t,e){const n=yg(),r=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,s=tr(t,e?.in),i=s.getDay(),a=(i=i.getTime()?r+1:n.getTime()>=l.getTime()?r:r-1}function wz(t){const e=tr(t),n=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return n.setUTCFullYear(e.getFullYear()),+t-+n}function Od(t,...e){const n=is.bind(null,t||e.find(r=>typeof r=="object"));return e.map(n)}function jp(t,e){const n=tr(t,e?.in);return n.setHours(0,0,0,0),n}function $G(t,e,n){const[r,s]=Od(n?.in,t,e),i=jp(r),a=jp(s),l=+i-wz(i),c=+a-wz(a);return Math.round((l-c)/QTe)}function UTe(t,e){const n=qG(t,e),r=is(t,0);return r.setFullYear(n,0,4),r.setHours(0,0,0,0),Op(r)}function WTe(t,e,n){return BG(t,e*7,n)}function GTe(t,e,n){return FG(t,e*12,n)}function XTe(t,e){let n,r=e?.in;return t.forEach(s=>{!r&&typeof s=="object"&&(r=is.bind(null,s));const i=tr(s,r);(!n||n{!r&&typeof s=="object"&&(r=is.bind(null,s));const i=tr(s,r);(!n||n>i||isNaN(+i))&&(n=i)}),is(r,n||NaN)}function KTe(t,e,n){const[r,s]=Od(n?.in,t,e);return+jp(r)==+jp(s)}function HG(t){return t instanceof Date||typeof t=="object"&&Object.prototype.toString.call(t)==="[object Date]"}function ZTe(t){return!(!HG(t)&&typeof t!="number"||isNaN(+tr(t)))}function JTe(t,e,n){const[r,s]=Od(n?.in,t,e),i=r.getFullYear()-s.getFullYear(),a=r.getMonth()-s.getMonth();return i*12+a}function e9e(t,e){const n=tr(t,e?.in),r=n.getMonth();return n.setFullYear(n.getFullYear(),r+1,0),n.setHours(23,59,59,999),n}function QG(t,e){const[n,r]=Od(t,e.start,e.end);return{start:n,end:r}}function t9e(t,e){const{start:n,end:r}=QG(e?.in,t);let s=+n>+r;const i=s?+n:+r,a=s?r:n;a.setHours(0,0,0,0),a.setDate(1);let l=1;const c=[];for(;+a<=i;)c.push(is(n,a)),a.setMonth(a.getMonth()+l);return s?c.reverse():c}function n9e(t,e){const n=tr(t,e?.in);return n.setDate(1),n.setHours(0,0,0,0),n}function r9e(t,e){const n=tr(t,e?.in),r=n.getFullYear();return n.setFullYear(r+1,0,0),n.setHours(23,59,59,999),n}function VG(t,e){const n=tr(t,e?.in);return n.setFullYear(n.getFullYear(),0,1),n.setHours(0,0,0,0),n}function s9e(t,e){const{start:n,end:r}=QG(e?.in,t);let s=+n>+r;const i=s?+n:+r,a=s?r:n;a.setHours(0,0,0,0),a.setMonth(0,1);let l=1;const c=[];for(;+a<=i;)c.push(is(n,a)),a.setFullYear(a.getFullYear()+l);return s?c.reverse():c}function UG(t,e){const n=yg(),r=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,s=tr(t,e?.in),i=s.getDay(),a=(i{let r;const s=a9e[t];return typeof s=="string"?r=s:e===1?r=s.one:r=s.other.replace("{{count}}",e.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"in "+r:r+" ago":r};function Vh(t){return(e={})=>{const n=e.width?String(e.width):t.defaultWidth;return t.formats[n]||t.formats[t.defaultWidth]}}const l9e={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},c9e={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},u9e={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},d9e={date:Vh({formats:l9e,defaultWidth:"full"}),time:Vh({formats:c9e,defaultWidth:"full"}),dateTime:Vh({formats:u9e,defaultWidth:"full"})},h9e={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},f9e=(t,e,n,r)=>h9e[t];function ko(t){return(e,n)=>{const r=n?.context?String(n.context):"standalone";let s;if(r==="formatting"&&t.formattingValues){const a=t.defaultFormattingWidth||t.defaultWidth,l=n?.width?String(n.width):a;s=t.formattingValues[l]||t.formattingValues[a]}else{const a=t.defaultWidth,l=n?.width?String(n.width):t.defaultWidth;s=t.values[l]||t.values[a]}const i=t.argumentCallback?t.argumentCallback(e):e;return s[i]}}const m9e={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},p9e={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},g9e={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},x9e={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},v9e={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},y9e={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},b9e=(t,e)=>{const n=Number(t),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},w9e={ordinalNumber:b9e,era:ko({values:m9e,defaultWidth:"wide"}),quarter:ko({values:p9e,defaultWidth:"wide",argumentCallback:t=>t-1}),month:ko({values:g9e,defaultWidth:"wide"}),day:ko({values:x9e,defaultWidth:"wide"}),dayPeriod:ko({values:v9e,defaultWidth:"wide",formattingValues:y9e,defaultFormattingWidth:"wide"})};function Oo(t){return(e,n={})=>{const r=n.width,s=r&&t.matchPatterns[r]||t.matchPatterns[t.defaultMatchWidth],i=e.match(s);if(!i)return null;const a=i[0],l=r&&t.parsePatterns[r]||t.parsePatterns[t.defaultParseWidth],c=Array.isArray(l)?k9e(l,m=>m.test(a)):S9e(l,m=>m.test(a));let d;d=t.valueCallback?t.valueCallback(c):c,d=n.valueCallback?n.valueCallback(d):d;const h=e.slice(a.length);return{value:d,rest:h}}}function S9e(t,e){for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&e(t[n]))return n}function k9e(t,e){for(let n=0;n{const r=e.match(t.matchPattern);if(!r)return null;const s=r[0],i=e.match(t.parsePattern);if(!i)return null;let a=t.valueCallback?t.valueCallback(i[0]):i[0];a=n.valueCallback?n.valueCallback(a):a;const l=e.slice(s.length);return{value:a,rest:l}}}const O9e=/^(\d+)(th|st|nd|rd)?/i,j9e=/\d+/i,N9e={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},C9e={any:[/^b/i,/^(a|c)/i]},T9e={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},E9e={any:[/1/i,/2/i,/3/i,/4/i]},_9e={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},A9e={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},M9e={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},R9e={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},D9e={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},P9e={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},z9e={ordinalNumber:WG({matchPattern:O9e,parsePattern:j9e,valueCallback:t=>parseInt(t,10)}),era:Oo({matchPatterns:N9e,defaultMatchWidth:"wide",parsePatterns:C9e,defaultParseWidth:"any"}),quarter:Oo({matchPatterns:T9e,defaultMatchWidth:"wide",parsePatterns:E9e,defaultParseWidth:"any",valueCallback:t=>t+1}),month:Oo({matchPatterns:_9e,defaultMatchWidth:"wide",parsePatterns:A9e,defaultParseWidth:"any"}),day:Oo({matchPatterns:M9e,defaultMatchWidth:"wide",parsePatterns:R9e,defaultParseWidth:"any"}),dayPeriod:Oo({matchPatterns:D9e,defaultMatchWidth:"any",parsePatterns:P9e,defaultParseWidth:"any"})},c7={code:"en-US",formatDistance:o9e,formatLong:d9e,formatRelative:f9e,localize:w9e,match:z9e,options:{weekStartsOn:0,firstWeekContainsDate:1}};function I9e(t,e){const n=tr(t,e?.in);return $G(n,VG(n))+1}function GG(t,e){const n=tr(t,e?.in),r=+Op(n)-+UTe(n);return Math.round(r/LG)+1}function XG(t,e){const n=tr(t,e?.in),r=n.getFullYear(),s=yg(),i=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??s.firstWeekContainsDate??s.locale?.options?.firstWeekContainsDate??1,a=is(e?.in||t,0);a.setFullYear(r+1,0,i),a.setHours(0,0,0,0);const l=su(a,e),c=is(e?.in||t,0);c.setFullYear(r,0,i),c.setHours(0,0,0,0);const d=su(c,e);return+n>=+l?r+1:+n>=+d?r:r-1}function L9e(t,e){const n=yg(),r=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,s=XG(t,e),i=is(e?.in||t,0);return i.setFullYear(s,0,r),i.setHours(0,0,0,0),su(i,e)}function YG(t,e){const n=tr(t,e?.in),r=+su(n,e)-+L9e(n,e);return Math.round(r/LG)+1}function Wn(t,e){const n=t<0?"-":"",r=Math.abs(t).toString().padStart(e,"0");return n+r}const _c={y(t,e){const n=t.getFullYear(),r=n>0?n:1-n;return Wn(e==="yy"?r%100:r,e.length)},M(t,e){const n=t.getMonth();return e==="M"?String(n+1):Wn(n+1,2)},d(t,e){return Wn(t.getDate(),e.length)},a(t,e){const n=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];case"aaaa":default:return n==="am"?"a.m.":"p.m."}},h(t,e){return Wn(t.getHours()%12||12,e.length)},H(t,e){return Wn(t.getHours(),e.length)},m(t,e){return Wn(t.getMinutes(),e.length)},s(t,e){return Wn(t.getSeconds(),e.length)},S(t,e){const n=e.length,r=t.getMilliseconds(),s=Math.trunc(r*Math.pow(10,n-3));return Wn(s,e.length)}},ph={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},Sz={G:function(t,e,n){const r=t.getFullYear()>0?1:0;switch(e){case"G":case"GG":case"GGG":return n.era(r,{width:"abbreviated"});case"GGGGG":return n.era(r,{width:"narrow"});case"GGGG":default:return n.era(r,{width:"wide"})}},y:function(t,e,n){if(e==="yo"){const r=t.getFullYear(),s=r>0?r:1-r;return n.ordinalNumber(s,{unit:"year"})}return _c.y(t,e)},Y:function(t,e,n,r){const s=XG(t,r),i=s>0?s:1-s;if(e==="YY"){const a=i%100;return Wn(a,2)}return e==="Yo"?n.ordinalNumber(i,{unit:"year"}):Wn(i,e.length)},R:function(t,e){const n=qG(t);return Wn(n,e.length)},u:function(t,e){const n=t.getFullYear();return Wn(n,e.length)},Q:function(t,e,n){const r=Math.ceil((t.getMonth()+1)/3);switch(e){case"Q":return String(r);case"QQ":return Wn(r,2);case"Qo":return n.ordinalNumber(r,{unit:"quarter"});case"QQQ":return n.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(r,{width:"narrow",context:"formatting"});case"QQQQ":default:return n.quarter(r,{width:"wide",context:"formatting"})}},q:function(t,e,n){const r=Math.ceil((t.getMonth()+1)/3);switch(e){case"q":return String(r);case"qq":return Wn(r,2);case"qo":return n.ordinalNumber(r,{unit:"quarter"});case"qqq":return n.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(r,{width:"narrow",context:"standalone"});case"qqqq":default:return n.quarter(r,{width:"wide",context:"standalone"})}},M:function(t,e,n){const r=t.getMonth();switch(e){case"M":case"MM":return _c.M(t,e);case"Mo":return n.ordinalNumber(r+1,{unit:"month"});case"MMM":return n.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(r,{width:"narrow",context:"formatting"});case"MMMM":default:return n.month(r,{width:"wide",context:"formatting"})}},L:function(t,e,n){const r=t.getMonth();switch(e){case"L":return String(r+1);case"LL":return Wn(r+1,2);case"Lo":return n.ordinalNumber(r+1,{unit:"month"});case"LLL":return n.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(r,{width:"narrow",context:"standalone"});case"LLLL":default:return n.month(r,{width:"wide",context:"standalone"})}},w:function(t,e,n,r){const s=YG(t,r);return e==="wo"?n.ordinalNumber(s,{unit:"week"}):Wn(s,e.length)},I:function(t,e,n){const r=GG(t);return e==="Io"?n.ordinalNumber(r,{unit:"week"}):Wn(r,e.length)},d:function(t,e,n){return e==="do"?n.ordinalNumber(t.getDate(),{unit:"date"}):_c.d(t,e)},D:function(t,e,n){const r=I9e(t);return e==="Do"?n.ordinalNumber(r,{unit:"dayOfYear"}):Wn(r,e.length)},E:function(t,e,n){const r=t.getDay();switch(e){case"E":case"EE":case"EEE":return n.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(r,{width:"short",context:"formatting"});case"EEEE":default:return n.day(r,{width:"wide",context:"formatting"})}},e:function(t,e,n,r){const s=t.getDay(),i=(s-r.weekStartsOn+8)%7||7;switch(e){case"e":return String(i);case"ee":return Wn(i,2);case"eo":return n.ordinalNumber(i,{unit:"day"});case"eee":return n.day(s,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(s,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(s,{width:"short",context:"formatting"});case"eeee":default:return n.day(s,{width:"wide",context:"formatting"})}},c:function(t,e,n,r){const s=t.getDay(),i=(s-r.weekStartsOn+8)%7||7;switch(e){case"c":return String(i);case"cc":return Wn(i,e.length);case"co":return n.ordinalNumber(i,{unit:"day"});case"ccc":return n.day(s,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(s,{width:"narrow",context:"standalone"});case"cccccc":return n.day(s,{width:"short",context:"standalone"});case"cccc":default:return n.day(s,{width:"wide",context:"standalone"})}},i:function(t,e,n){const r=t.getDay(),s=r===0?7:r;switch(e){case"i":return String(s);case"ii":return Wn(s,e.length);case"io":return n.ordinalNumber(s,{unit:"day"});case"iii":return n.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(r,{width:"short",context:"formatting"});case"iiii":default:return n.day(r,{width:"wide",context:"formatting"})}},a:function(t,e,n){const s=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"aaaa":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},b:function(t,e,n){const r=t.getHours();let s;switch(r===12?s=ph.noon:r===0?s=ph.midnight:s=r/12>=1?"pm":"am",e){case"b":case"bb":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"bbbb":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},B:function(t,e,n){const r=t.getHours();let s;switch(r>=17?s=ph.evening:r>=12?s=ph.afternoon:r>=4?s=ph.morning:s=ph.night,e){case"B":case"BB":case"BBB":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"BBBB":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},h:function(t,e,n){if(e==="ho"){let r=t.getHours()%12;return r===0&&(r=12),n.ordinalNumber(r,{unit:"hour"})}return _c.h(t,e)},H:function(t,e,n){return e==="Ho"?n.ordinalNumber(t.getHours(),{unit:"hour"}):_c.H(t,e)},K:function(t,e,n){const r=t.getHours()%12;return e==="Ko"?n.ordinalNumber(r,{unit:"hour"}):Wn(r,e.length)},k:function(t,e,n){let r=t.getHours();return r===0&&(r=24),e==="ko"?n.ordinalNumber(r,{unit:"hour"}):Wn(r,e.length)},m:function(t,e,n){return e==="mo"?n.ordinalNumber(t.getMinutes(),{unit:"minute"}):_c.m(t,e)},s:function(t,e,n){return e==="so"?n.ordinalNumber(t.getSeconds(),{unit:"second"}):_c.s(t,e)},S:function(t,e){return _c.S(t,e)},X:function(t,e,n){const r=t.getTimezoneOffset();if(r===0)return"Z";switch(e){case"X":return Oz(r);case"XXXX":case"XX":return Bu(r);case"XXXXX":case"XXX":default:return Bu(r,":")}},x:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"x":return Oz(r);case"xxxx":case"xx":return Bu(r);case"xxxxx":case"xxx":default:return Bu(r,":")}},O:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"O":case"OO":case"OOO":return"GMT"+kz(r,":");case"OOOO":default:return"GMT"+Bu(r,":")}},z:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"z":case"zz":case"zzz":return"GMT"+kz(r,":");case"zzzz":default:return"GMT"+Bu(r,":")}},t:function(t,e,n){const r=Math.trunc(+t/1e3);return Wn(r,e.length)},T:function(t,e,n){return Wn(+t,e.length)}};function kz(t,e=""){const n=t>0?"-":"+",r=Math.abs(t),s=Math.trunc(r/60),i=r%60;return i===0?n+String(s):n+String(s)+e+Wn(i,2)}function Oz(t,e){return t%60===0?(t>0?"-":"+")+Wn(Math.abs(t)/60,2):Bu(t,e)}function Bu(t,e=""){const n=t>0?"-":"+",r=Math.abs(t),s=Wn(Math.trunc(r/60),2),i=Wn(r%60,2);return n+s+e+i}const jz=(t,e)=>{switch(t){case"P":return e.date({width:"short"});case"PP":return e.date({width:"medium"});case"PPP":return e.date({width:"long"});case"PPPP":default:return e.date({width:"full"})}},KG=(t,e)=>{switch(t){case"p":return e.time({width:"short"});case"pp":return e.time({width:"medium"});case"ppp":return e.time({width:"long"});case"pppp":default:return e.time({width:"full"})}},B9e=(t,e)=>{const n=t.match(/(P+)(p+)?/)||[],r=n[1],s=n[2];if(!s)return jz(t,e);let i;switch(r){case"P":i=e.dateTime({width:"short"});break;case"PP":i=e.dateTime({width:"medium"});break;case"PPP":i=e.dateTime({width:"long"});break;case"PPPP":default:i=e.dateTime({width:"full"});break}return i.replace("{{date}}",jz(r,e)).replace("{{time}}",KG(s,e))},F9e={p:KG,P:B9e},q9e=/^D+$/,$9e=/^Y+$/,H9e=["D","DD","YY","YYYY"];function Q9e(t){return q9e.test(t)}function V9e(t){return $9e.test(t)}function U9e(t,e,n){const r=W9e(t,e,n);if(console.warn(r),H9e.includes(t))throw new RangeError(r)}function W9e(t,e,n){const r=t[0]==="Y"?"years":"days of the month";return`Use \`${t.toLowerCase()}\` instead of \`${t}\` (in \`${e}\`) for formatting ${r} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}const G9e=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,X9e=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,Y9e=/^'([^]*?)'?$/,K9e=/''/g,Z9e=/[a-zA-Z]/;function Ev(t,e,n){const r=yg(),s=n?.locale??r.locale??c7,i=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,a=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,l=tr(t,n?.in);if(!ZTe(l))throw new RangeError("Invalid time value");let c=e.match(X9e).map(h=>{const m=h[0];if(m==="p"||m==="P"){const g=F9e[m];return g(h,s.formatLong)}return h}).join("").match(G9e).map(h=>{if(h==="''")return{isToken:!1,value:"'"};const m=h[0];if(m==="'")return{isToken:!1,value:J9e(h)};if(Sz[m])return{isToken:!0,value:h};if(m.match(Z9e))throw new RangeError("Format string contains an unescaped latin alphabet character `"+m+"`");return{isToken:!1,value:h}});s.localize.preprocessor&&(c=s.localize.preprocessor(l,c));const d={firstWeekContainsDate:i,weekStartsOn:a,locale:s};return c.map(h=>{if(!h.isToken)return h.value;const m=h.value;(!n?.useAdditionalWeekYearTokens&&V9e(m)||!n?.useAdditionalDayOfYearTokens&&Q9e(m))&&U9e(m,e,String(t));const g=Sz[m[0]];return g(l,m,s.localize,d)}).join("")}function J9e(t){const e=t.match(Y9e);return e?e[1].replace(K9e,"'"):t}function eEe(t,e){const n=tr(t,e?.in),r=n.getFullYear(),s=n.getMonth(),i=is(n,0);return i.setFullYear(r,s+1,0),i.setHours(0,0,0,0),i.getDate()}function tEe(t,e){return tr(t,e?.in).getMonth()}function nEe(t,e){return tr(t,e?.in).getFullYear()}function rEe(t,e){return+tr(t)>+tr(e)}function sEe(t,e){return+tr(t)<+tr(e)}function iEe(t,e,n){const[r,s]=Od(n?.in,t,e);return+su(r,n)==+su(s,n)}function aEe(t,e,n){const[r,s]=Od(n?.in,t,e);return r.getFullYear()===s.getFullYear()&&r.getMonth()===s.getMonth()}function oEe(t,e,n){const[r,s]=Od(n?.in,t,e);return r.getFullYear()===s.getFullYear()}function lEe(t,e,n){const r=tr(t,n?.in),s=r.getFullYear(),i=r.getDate(),a=is(t,0);a.setFullYear(s,e,15),a.setHours(0,0,0,0);const l=eEe(a);return r.setMonth(e,Math.min(i,l)),r}function cEe(t,e,n){const r=tr(t,n?.in);return isNaN(+r)?is(t,NaN):(r.setFullYear(e),r)}const Nz=5,uEe=4;function dEe(t,e){const n=e.startOfMonth(t),r=n.getDay()>0?n.getDay():7,s=e.addDays(t,-r+1),i=e.addDays(s,Nz*7-1);return e.getMonth(t)===e.getMonth(i)?Nz:uEe}function ZG(t,e){const n=e.startOfMonth(t),r=n.getDay();return r===1?n:r===0?e.addDays(n,-6):e.addDays(n,-1*(r-1))}function hEe(t,e){const n=ZG(t,e),r=dEe(t,e);return e.addDays(n,r*7-1)}class Ki{constructor(e,n){this.Date=Date,this.today=()=>this.overrides?.today?this.overrides.today():this.options.timeZone?Fs.tz(this.options.timeZone):new this.Date,this.newDate=(r,s,i)=>this.overrides?.newDate?this.overrides.newDate(r,s,i):this.options.timeZone?new Fs(r,s,i,this.options.timeZone):new Date(r,s,i),this.addDays=(r,s)=>this.overrides?.addDays?this.overrides.addDays(r,s):BG(r,s),this.addMonths=(r,s)=>this.overrides?.addMonths?this.overrides.addMonths(r,s):FG(r,s),this.addWeeks=(r,s)=>this.overrides?.addWeeks?this.overrides.addWeeks(r,s):WTe(r,s),this.addYears=(r,s)=>this.overrides?.addYears?this.overrides.addYears(r,s):GTe(r,s),this.differenceInCalendarDays=(r,s)=>this.overrides?.differenceInCalendarDays?this.overrides.differenceInCalendarDays(r,s):$G(r,s),this.differenceInCalendarMonths=(r,s)=>this.overrides?.differenceInCalendarMonths?this.overrides.differenceInCalendarMonths(r,s):JTe(r,s),this.eachMonthOfInterval=r=>this.overrides?.eachMonthOfInterval?this.overrides.eachMonthOfInterval(r):t9e(r),this.eachYearOfInterval=r=>{const s=this.overrides?.eachYearOfInterval?this.overrides.eachYearOfInterval(r):s9e(r),i=new Set(s.map(l=>this.getYear(l)));if(i.size===s.length)return s;const a=[];return i.forEach(l=>{a.push(new Date(l,0,1))}),a},this.endOfBroadcastWeek=r=>this.overrides?.endOfBroadcastWeek?this.overrides.endOfBroadcastWeek(r):hEe(r,this),this.endOfISOWeek=r=>this.overrides?.endOfISOWeek?this.overrides.endOfISOWeek(r):i9e(r),this.endOfMonth=r=>this.overrides?.endOfMonth?this.overrides.endOfMonth(r):e9e(r),this.endOfWeek=(r,s)=>this.overrides?.endOfWeek?this.overrides.endOfWeek(r,s):UG(r,this.options),this.endOfYear=r=>this.overrides?.endOfYear?this.overrides.endOfYear(r):r9e(r),this.format=(r,s,i)=>{const a=this.overrides?.format?this.overrides.format(r,s,this.options):Ev(r,s,this.options);return this.options.numerals&&this.options.numerals!=="latn"?this.replaceDigits(a):a},this.getISOWeek=r=>this.overrides?.getISOWeek?this.overrides.getISOWeek(r):GG(r),this.getMonth=(r,s)=>this.overrides?.getMonth?this.overrides.getMonth(r,this.options):tEe(r,this.options),this.getYear=(r,s)=>this.overrides?.getYear?this.overrides.getYear(r,this.options):nEe(r,this.options),this.getWeek=(r,s)=>this.overrides?.getWeek?this.overrides.getWeek(r,this.options):YG(r,this.options),this.isAfter=(r,s)=>this.overrides?.isAfter?this.overrides.isAfter(r,s):rEe(r,s),this.isBefore=(r,s)=>this.overrides?.isBefore?this.overrides.isBefore(r,s):sEe(r,s),this.isDate=r=>this.overrides?.isDate?this.overrides.isDate(r):HG(r),this.isSameDay=(r,s)=>this.overrides?.isSameDay?this.overrides.isSameDay(r,s):KTe(r,s),this.isSameMonth=(r,s)=>this.overrides?.isSameMonth?this.overrides.isSameMonth(r,s):aEe(r,s),this.isSameYear=(r,s)=>this.overrides?.isSameYear?this.overrides.isSameYear(r,s):oEe(r,s),this.max=r=>this.overrides?.max?this.overrides.max(r):XTe(r),this.min=r=>this.overrides?.min?this.overrides.min(r):YTe(r),this.setMonth=(r,s)=>this.overrides?.setMonth?this.overrides.setMonth(r,s):lEe(r,s),this.setYear=(r,s)=>this.overrides?.setYear?this.overrides.setYear(r,s):cEe(r,s),this.startOfBroadcastWeek=(r,s)=>this.overrides?.startOfBroadcastWeek?this.overrides.startOfBroadcastWeek(r,this):ZG(r,this),this.startOfDay=r=>this.overrides?.startOfDay?this.overrides.startOfDay(r):jp(r),this.startOfISOWeek=r=>this.overrides?.startOfISOWeek?this.overrides.startOfISOWeek(r):Op(r),this.startOfMonth=r=>this.overrides?.startOfMonth?this.overrides.startOfMonth(r):n9e(r),this.startOfWeek=(r,s)=>this.overrides?.startOfWeek?this.overrides.startOfWeek(r,this.options):su(r,this.options),this.startOfYear=r=>this.overrides?.startOfYear?this.overrides.startOfYear(r):VG(r),this.options={locale:c7,...e},this.overrides=n}getDigitMap(){const{numerals:e="latn"}=this.options,n=new Intl.NumberFormat("en-US",{numberingSystem:e}),r={};for(let s=0;s<10;s++)r[s.toString()]=n.format(s);return r}replaceDigits(e){const n=this.getDigitMap();return e.replace(/\d/g,r=>n[r]||r)}formatNumber(e){return this.replaceDigits(e.toString())}getMonthYearOrder(){const e=this.options.locale?.code;return e&&Ki.yearFirstLocales.has(e)?"year-first":"month-first"}formatMonthYear(e){const{locale:n,timeZone:r,numerals:s}=this.options,i=n?.code;if(i&&Ki.yearFirstLocales.has(i))try{return new Intl.DateTimeFormat(i,{month:"long",year:"numeric",timeZone:r,numberingSystem:s}).format(e)}catch{}const a=this.getMonthYearOrder()==="year-first"?"y LLLL":"LLLL y";return this.format(e,a)}}Ki.yearFirstLocales=new Set(["eu","hu","ja","ja-Hira","ja-JP","ko","ko-KR","lt","lt-LT","lv","lv-LV","mn","mn-MN","zh","zh-CN","zh-HK","zh-TW"]);const Xo=new Ki;class JG{constructor(e,n,r=Xo){this.date=e,this.displayMonth=n,this.outside=!!(n&&!r.isSameMonth(e,n)),this.dateLib=r}isEqualTo(e){return this.dateLib.isSameDay(e.date,this.date)&&this.dateLib.isSameMonth(e.displayMonth,this.displayMonth)}}class fEe{constructor(e,n){this.date=e,this.weeks=n}}class mEe{constructor(e,n){this.days=n,this.weekNumber=e}}function pEe(t){return ae.createElement("button",{...t})}function gEe(t){return ae.createElement("span",{...t})}function xEe(t){const{size:e=24,orientation:n="left",className:r}=t;return ae.createElement("svg",{className:r,width:e,height:e,viewBox:"0 0 24 24"},n==="up"&&ae.createElement("polygon",{points:"6.77 17 12.5 11.43 18.24 17 20 15.28 12.5 8 5 15.28"}),n==="down"&&ae.createElement("polygon",{points:"6.77 8 12.5 13.57 18.24 8 20 9.72 12.5 17 5 9.72"}),n==="left"&&ae.createElement("polygon",{points:"16 18.112 9.81111111 12 16 5.87733333 14.0888889 4 6 12 14.0888889 20"}),n==="right"&&ae.createElement("polygon",{points:"8 18.112 14.18888889 12 8 5.87733333 9.91111111 4 18 12 9.91111111 20"}))}function vEe(t){const{day:e,modifiers:n,...r}=t;return ae.createElement("td",{...r})}function yEe(t){const{day:e,modifiers:n,...r}=t,s=ae.useRef(null);return ae.useEffect(()=>{n.focused&&s.current?.focus()},[n.focused]),ae.createElement("button",{ref:s,...r})}var jt;(function(t){t.Root="root",t.Chevron="chevron",t.Day="day",t.DayButton="day_button",t.CaptionLabel="caption_label",t.Dropdowns="dropdowns",t.Dropdown="dropdown",t.DropdownRoot="dropdown_root",t.Footer="footer",t.MonthGrid="month_grid",t.MonthCaption="month_caption",t.MonthsDropdown="months_dropdown",t.Month="month",t.Months="months",t.Nav="nav",t.NextMonthButton="button_next",t.PreviousMonthButton="button_previous",t.Week="week",t.Weeks="weeks",t.Weekday="weekday",t.Weekdays="weekdays",t.WeekNumber="week_number",t.WeekNumberHeader="week_number_header",t.YearsDropdown="years_dropdown"})(jt||(jt={}));var Ar;(function(t){t.disabled="disabled",t.hidden="hidden",t.outside="outside",t.focused="focused",t.today="today"})(Ar||(Ar={}));var Ua;(function(t){t.range_end="range_end",t.range_middle="range_middle",t.range_start="range_start",t.selected="selected"})(Ua||(Ua={}));var Hi;(function(t){t.weeks_before_enter="weeks_before_enter",t.weeks_before_exit="weeks_before_exit",t.weeks_after_enter="weeks_after_enter",t.weeks_after_exit="weeks_after_exit",t.caption_after_enter="caption_after_enter",t.caption_after_exit="caption_after_exit",t.caption_before_enter="caption_before_enter",t.caption_before_exit="caption_before_exit"})(Hi||(Hi={}));function bEe(t){const{options:e,className:n,components:r,classNames:s,...i}=t,a=[s[jt.Dropdown],n].join(" "),l=e?.find(({value:c})=>c===i.value);return ae.createElement("span",{"data-disabled":i.disabled,className:s[jt.DropdownRoot]},ae.createElement(r.Select,{className:a,...i},e?.map(({value:c,label:d,disabled:h})=>ae.createElement(r.Option,{key:c,value:c,disabled:h},d))),ae.createElement("span",{className:s[jt.CaptionLabel],"aria-hidden":!0},l?.label,ae.createElement(r.Chevron,{orientation:"down",size:18,className:s[jt.Chevron]})))}function wEe(t){return ae.createElement("div",{...t})}function SEe(t){return ae.createElement("div",{...t})}function kEe(t){const{calendarMonth:e,displayIndex:n,...r}=t;return ae.createElement("div",{...r},t.children)}function OEe(t){const{calendarMonth:e,displayIndex:n,...r}=t;return ae.createElement("div",{...r})}function jEe(t){return ae.createElement("table",{...t})}function NEe(t){return ae.createElement("div",{...t})}const eX=b.createContext(void 0);function bg(){const t=b.useContext(eX);if(t===void 0)throw new Error("useDayPicker() must be used within a custom component.");return t}function CEe(t){const{components:e}=bg();return ae.createElement(e.Dropdown,{...t})}function TEe(t){const{onPreviousClick:e,onNextClick:n,previousMonth:r,nextMonth:s,...i}=t,{components:a,classNames:l,labels:{labelPrevious:c,labelNext:d}}=bg(),h=b.useCallback(g=>{s&&n?.(g)},[s,n]),m=b.useCallback(g=>{r&&e?.(g)},[r,e]);return ae.createElement("nav",{...i},ae.createElement(a.PreviousMonthButton,{type:"button",className:l[jt.PreviousMonthButton],tabIndex:r?void 0:-1,"aria-disabled":r?void 0:!0,"aria-label":c(r),onClick:m},ae.createElement(a.Chevron,{disabled:r?void 0:!0,className:l[jt.Chevron],orientation:"left"})),ae.createElement(a.NextMonthButton,{type:"button",className:l[jt.NextMonthButton],tabIndex:s?void 0:-1,"aria-disabled":s?void 0:!0,"aria-label":d(s),onClick:h},ae.createElement(a.Chevron,{disabled:s?void 0:!0,orientation:"right",className:l[jt.Chevron]})))}function EEe(t){const{components:e}=bg();return ae.createElement(e.Button,{...t})}function _Ee(t){return ae.createElement("option",{...t})}function AEe(t){const{components:e}=bg();return ae.createElement(e.Button,{...t})}function MEe(t){const{rootRef:e,...n}=t;return ae.createElement("div",{...n,ref:e})}function REe(t){return ae.createElement("select",{...t})}function DEe(t){const{week:e,...n}=t;return ae.createElement("tr",{...n})}function PEe(t){return ae.createElement("th",{...t})}function zEe(t){return ae.createElement("thead",{"aria-hidden":!0},ae.createElement("tr",{...t}))}function IEe(t){const{week:e,...n}=t;return ae.createElement("th",{...n})}function LEe(t){return ae.createElement("th",{...t})}function BEe(t){return ae.createElement("tbody",{...t})}function FEe(t){const{components:e}=bg();return ae.createElement(e.Dropdown,{...t})}const qEe=Object.freeze(Object.defineProperty({__proto__:null,Button:pEe,CaptionLabel:gEe,Chevron:xEe,Day:vEe,DayButton:yEe,Dropdown:bEe,DropdownNav:wEe,Footer:SEe,Month:kEe,MonthCaption:OEe,MonthGrid:jEe,Months:NEe,MonthsDropdown:CEe,Nav:TEe,NextMonthButton:EEe,Option:_Ee,PreviousMonthButton:AEe,Root:MEe,Select:REe,Week:DEe,WeekNumber:IEe,WeekNumberHeader:LEe,Weekday:PEe,Weekdays:zEe,Weeks:BEe,YearsDropdown:FEe},Symbol.toStringTag,{value:"Module"}));function Dl(t,e,n=!1,r=Xo){let{from:s,to:i}=t;const{differenceInCalendarDays:a,isSameDay:l}=r;return s&&i?(a(i,s)<0&&([s,i]=[i,s]),a(e,s)>=(n?1:0)&&a(i,e)>=(n?1:0)):!n&&i?l(i,e):!n&&s?l(s,e):!1}function tX(t){return!!(t&&typeof t=="object"&&"before"in t&&"after"in t)}function u7(t){return!!(t&&typeof t=="object"&&"from"in t)}function nX(t){return!!(t&&typeof t=="object"&&"after"in t)}function rX(t){return!!(t&&typeof t=="object"&&"before"in t)}function sX(t){return!!(t&&typeof t=="object"&&"dayOfWeek"in t)}function iX(t,e){return Array.isArray(t)&&t.every(e.isDate)}function Pl(t,e,n=Xo){const r=Array.isArray(e)?e:[e],{isSameDay:s,differenceInCalendarDays:i,isAfter:a}=n;return r.some(l=>{if(typeof l=="boolean")return l;if(n.isDate(l))return s(t,l);if(iX(l,n))return l.includes(t);if(u7(l))return Dl(l,t,!1,n);if(sX(l))return Array.isArray(l.dayOfWeek)?l.dayOfWeek.includes(t.getDay()):l.dayOfWeek===t.getDay();if(tX(l)){const c=i(l.before,t),d=i(l.after,t),h=c>0,m=d<0;return a(l.before,l.after)?m&&h:h||m}return nX(l)?i(t,l.after)>0:rX(l)?i(l.before,t)>0:typeof l=="function"?l(t):!1})}function $Ee(t,e,n,r,s){const{disabled:i,hidden:a,modifiers:l,showOutsideDays:c,broadcastCalendar:d,today:h}=e,{isSameDay:m,isSameMonth:g,startOfMonth:x,isBefore:y,endOfMonth:w,isAfter:S}=s,k=n&&x(n),j=r&&w(r),N={[Ar.focused]:[],[Ar.outside]:[],[Ar.disabled]:[],[Ar.hidden]:[],[Ar.today]:[]},T={};for(const E of t){const{date:_,displayMonth:A}=E,L=!!(A&&!g(_,A)),P=!!(k&&y(_,k)),B=!!(j&&S(_,j)),$=!!(i&&Pl(_,i,s)),U=!!(a&&Pl(_,a,s))||P||B||!d&&!c&&L||d&&c===!1&&L,te=m(_,h??s.today());L&&N.outside.push(E),$&&N.disabled.push(E),U&&N.hidden.push(E),te&&N.today.push(E),l&&Object.keys(l).forEach(z=>{const Q=l?.[z];Q&&Pl(_,Q,s)&&(T[z]?T[z].push(E):T[z]=[E])})}return E=>{const _={[Ar.focused]:!1,[Ar.disabled]:!1,[Ar.hidden]:!1,[Ar.outside]:!1,[Ar.today]:!1},A={};for(const L in N){const P=N[L];_[L]=P.some(B=>B===E)}for(const L in T)A[L]=T[L].some(P=>P===E);return{..._,...A}}}function HEe(t,e,n={}){return Object.entries(t).filter(([,s])=>s===!0).reduce((s,[i])=>(n[i]?s.push(n[i]):e[Ar[i]]?s.push(e[Ar[i]]):e[Ua[i]]&&s.push(e[Ua[i]]),s),[e[jt.Day]])}function QEe(t){return{...qEe,...t}}function VEe(t){const e={"data-mode":t.mode??void 0,"data-required":"required"in t?t.required:void 0,"data-multiple-months":t.numberOfMonths&&t.numberOfMonths>1||void 0,"data-week-numbers":t.showWeekNumber||void 0,"data-broadcast-calendar":t.broadcastCalendar||void 0,"data-nav-layout":t.navLayout||void 0};return Object.entries(t).forEach(([n,r])=>{n.startsWith("data-")&&(e[n]=r)}),e}function d7(){const t={};for(const e in jt)t[jt[e]]=`rdp-${jt[e]}`;for(const e in Ar)t[Ar[e]]=`rdp-${Ar[e]}`;for(const e in Ua)t[Ua[e]]=`rdp-${Ua[e]}`;for(const e in Hi)t[Hi[e]]=`rdp-${Hi[e]}`;return t}function aX(t,e,n){return(n??new Ki(e)).formatMonthYear(t)}const UEe=aX;function WEe(t,e,n){return(n??new Ki(e)).format(t,"d")}function GEe(t,e=Xo){return e.format(t,"LLLL")}function XEe(t,e,n){return(n??new Ki(e)).format(t,"cccccc")}function YEe(t,e=Xo){return t<10?e.formatNumber(`0${t.toLocaleString()}`):e.formatNumber(`${t.toLocaleString()}`)}function KEe(){return""}function oX(t,e=Xo){return e.format(t,"yyyy")}const ZEe=oX,JEe=Object.freeze(Object.defineProperty({__proto__:null,formatCaption:aX,formatDay:WEe,formatMonthCaption:UEe,formatMonthDropdown:GEe,formatWeekNumber:YEe,formatWeekNumberHeader:KEe,formatWeekdayName:XEe,formatYearCaption:ZEe,formatYearDropdown:oX},Symbol.toStringTag,{value:"Module"}));function e_e(t){return t?.formatMonthCaption&&!t.formatCaption&&(t.formatCaption=t.formatMonthCaption),t?.formatYearCaption&&!t.formatYearDropdown&&(t.formatYearDropdown=t.formatYearCaption),{...JEe,...t}}function t_e(t,e,n,r,s){const{startOfMonth:i,startOfYear:a,endOfYear:l,eachMonthOfInterval:c,getMonth:d}=s;return c({start:a(t),end:l(t)}).map(g=>{const x=r.formatMonthDropdown(g,s),y=d(g),w=e&&gi(n)||!1;return{value:y,label:x,disabled:w}})}function n_e(t,e={},n={}){let r={...e?.[jt.Day]};return Object.entries(t).filter(([,s])=>s===!0).forEach(([s])=>{r={...r,...n?.[s]}}),r}function r_e(t,e,n){const r=t.today(),s=e?t.startOfISOWeek(r):t.startOfWeek(r),i=[];for(let a=0;a<7;a++){const l=t.addDays(s,a);i.push(l)}return i}function s_e(t,e,n,r,s=!1){if(!t||!e)return;const{startOfYear:i,endOfYear:a,eachYearOfInterval:l,getYear:c}=r,d=i(t),h=a(e),m=l({start:d,end:h});return s&&m.reverse(),m.map(g=>{const x=n.formatYearDropdown(g,r);return{value:c(g),label:x,disabled:!1}})}function lX(t,e,n,r){let s=(r??new Ki(n)).format(t,"PPPP");return e.today&&(s=`Today, ${s}`),e.selected&&(s=`${s}, selected`),s}const i_e=lX;function cX(t,e,n){return(n??new Ki(e)).formatMonthYear(t)}const a_e=cX;function o_e(t,e,n,r){let s=(r??new Ki(n)).format(t,"PPPP");return e?.today&&(s=`Today, ${s}`),s}function l_e(t){return"Choose the Month"}function c_e(){return""}function u_e(t){return"Go to the Next Month"}function d_e(t){return"Go to the Previous Month"}function h_e(t,e,n){return(n??new Ki(e)).format(t,"cccc")}function f_e(t,e){return`Week ${t}`}function m_e(t){return"Week Number"}function p_e(t){return"Choose the Year"}const g_e=Object.freeze(Object.defineProperty({__proto__:null,labelCaption:a_e,labelDay:i_e,labelDayButton:lX,labelGrid:cX,labelGridcell:o_e,labelMonthDropdown:l_e,labelNav:c_e,labelNext:u_e,labelPrevious:d_e,labelWeekNumber:f_e,labelWeekNumberHeader:m_e,labelWeekday:h_e,labelYearDropdown:p_e},Symbol.toStringTag,{value:"Module"})),wg=t=>t instanceof HTMLElement?t:null,Y3=t=>[...t.querySelectorAll("[data-animated-month]")??[]],x_e=t=>wg(t.querySelector("[data-animated-month]")),K3=t=>wg(t.querySelector("[data-animated-caption]")),Z3=t=>wg(t.querySelector("[data-animated-weeks]")),v_e=t=>wg(t.querySelector("[data-animated-nav]")),y_e=t=>wg(t.querySelector("[data-animated-weekdays]"));function b_e(t,e,{classNames:n,months:r,focused:s,dateLib:i}){const a=b.useRef(null),l=b.useRef(r),c=b.useRef(!1);b.useLayoutEffect(()=>{const d=l.current;if(l.current=r,!e||!t.current||!(t.current instanceof HTMLElement)||r.length===0||d.length===0||r.length!==d.length)return;const h=i.isSameMonth(r[0].date,d[0].date),m=i.isAfter(r[0].date,d[0].date),g=m?n[Hi.caption_after_enter]:n[Hi.caption_before_enter],x=m?n[Hi.weeks_after_enter]:n[Hi.weeks_before_enter],y=a.current,w=t.current.cloneNode(!0);if(w instanceof HTMLElement?(Y3(w).forEach(N=>{if(!(N instanceof HTMLElement))return;const T=x_e(N);T&&N.contains(T)&&N.removeChild(T);const E=K3(N);E&&E.classList.remove(g);const _=Z3(N);_&&_.classList.remove(x)}),a.current=w):a.current=null,c.current||h||s)return;const S=y instanceof HTMLElement?Y3(y):[],k=Y3(t.current);if(k?.every(j=>j instanceof HTMLElement)&&S&&S.every(j=>j instanceof HTMLElement)){c.current=!0,t.current.style.isolation="isolate";const j=v_e(t.current);j&&(j.style.zIndex="1"),k.forEach((N,T)=>{const E=S[T];if(!E)return;N.style.position="relative",N.style.overflow="hidden";const _=K3(N);_&&_.classList.add(g);const A=Z3(N);A&&A.classList.add(x);const L=()=>{c.current=!1,t.current&&(t.current.style.isolation=""),j&&(j.style.zIndex=""),_&&_.classList.remove(g),A&&A.classList.remove(x),N.style.position="",N.style.overflow="",N.contains(E)&&N.removeChild(E)};E.style.pointerEvents="none",E.style.position="absolute",E.style.overflow="hidden",E.setAttribute("aria-hidden","true");const P=y_e(E);P&&(P.style.opacity="0");const B=K3(E);B&&(B.classList.add(m?n[Hi.caption_before_exit]:n[Hi.caption_after_exit]),B.addEventListener("animationend",L));const $=Z3(E);$&&$.classList.add(m?n[Hi.weeks_before_exit]:n[Hi.weeks_after_exit]),N.insertBefore(E,N.firstChild)})}})}function w_e(t,e,n,r){const s=t[0],i=t[t.length-1],{ISOWeek:a,fixedWeeks:l,broadcastCalendar:c}=n??{},{addDays:d,differenceInCalendarDays:h,differenceInCalendarMonths:m,endOfBroadcastWeek:g,endOfISOWeek:x,endOfMonth:y,endOfWeek:w,isAfter:S,startOfBroadcastWeek:k,startOfISOWeek:j,startOfWeek:N}=r,T=c?k(s,r):a?j(s):N(s),E=c?g(i):a?x(y(i)):w(y(i)),_=h(E,T),A=m(i,s)+1,L=[];for(let $=0;$<=_;$++){const U=d(T,$);if(e&&S(U,e))break;L.push(U)}const B=(c?35:42)*A;if(l&&L.length{const s=r.weeks.reduce((i,a)=>i.concat(a.days.slice()),e.slice());return n.concat(s.slice())},e.slice())}function k_e(t,e,n,r){const{numberOfMonths:s=1}=n,i=[];for(let a=0;ae)break;i.push(l)}return i}function Cz(t,e,n,r){const{month:s,defaultMonth:i,today:a=r.today(),numberOfMonths:l=1}=t;let c=s||i||a;const{differenceInCalendarMonths:d,addMonths:h,startOfMonth:m}=r;if(n&&d(n,c){const k=n.broadcastCalendar?m(S,r):n.ISOWeek?g(S):x(S),j=n.broadcastCalendar?i(S):n.ISOWeek?a(l(S)):c(l(S)),N=e.filter(A=>A>=k&&A<=j),T=n.broadcastCalendar?35:42;if(n.fixedWeeks&&N.length{const P=T-N.length;return L>j&&L<=s(j,P)});N.push(...A)}const E=N.reduce((A,L)=>{const P=n.ISOWeek?d(L):h(L),B=A.find(U=>U.weekNumber===P),$=new JG(L,S,r);return B?B.days.push($):A.push(new mEe(P,[$])),A},[]),_=new fEe(S,E);return w.push(_),w},[]);return n.reverseMonths?y.reverse():y}function j_e(t,e){let{startMonth:n,endMonth:r}=t;const{startOfYear:s,startOfDay:i,startOfMonth:a,endOfMonth:l,addYears:c,endOfYear:d,newDate:h,today:m}=e,{fromYear:g,toYear:x,fromMonth:y,toMonth:w}=t;!n&&y&&(n=y),!n&&g&&(n=e.newDate(g,0,1)),!r&&w&&(r=w),!r&&x&&(r=h(x,11,31));const S=t.captionLayout==="dropdown"||t.captionLayout==="dropdown-years";return n?n=a(n):g?n=h(g,0,1):!n&&S&&(n=s(c(t.today??m(),-100))),r?r=l(r):x?r=h(x,11,31):!r&&S&&(r=d(t.today??m())),[n&&i(n),r&&i(r)]}function N_e(t,e,n,r){if(n.disableNavigation)return;const{pagedNavigation:s,numberOfMonths:i=1}=n,{startOfMonth:a,addMonths:l,differenceInCalendarMonths:c}=r,d=s?i:1,h=a(t);if(!e)return l(h,d);if(!(c(e,t)n.concat(r.weeks.slice()),e.slice())}function nw(t,e){const[n,r]=b.useState(t);return[e===void 0?n:e,r]}function E_e(t,e){const[n,r]=j_e(t,e),{startOfMonth:s,endOfMonth:i}=e,a=Cz(t,n,r,e),[l,c]=nw(a,t.month?a:void 0);b.useEffect(()=>{const _=Cz(t,n,r,e);c(_)},[t.timeZone]);const d=k_e(l,r,t,e),h=w_e(d,t.endMonth?i(t.endMonth):void 0,t,e),m=O_e(d,h,t,e),g=T_e(m),x=S_e(m),y=C_e(l,n,t,e),w=N_e(l,r,t,e),{disableNavigation:S,onMonthChange:k}=t,j=_=>g.some(A=>A.days.some(L=>L.isEqualTo(_))),N=_=>{if(S)return;let A=s(_);n&&As(r)&&(A=s(r)),c(A),k?.(A)};return{months:m,weeks:g,days:x,navStart:n,navEnd:r,previousMonth:y,nextMonth:w,goToMonth:N,goToDay:_=>{j(_)||N(_.date)}}}var xo;(function(t){t[t.Today=0]="Today",t[t.Selected=1]="Selected",t[t.LastFocused=2]="LastFocused",t[t.FocusedModifier=3]="FocusedModifier"})(xo||(xo={}));function Tz(t){return!t[Ar.disabled]&&!t[Ar.hidden]&&!t[Ar.outside]}function __e(t,e,n,r){let s,i=-1;for(const a of t){const l=e(a);Tz(l)&&(l[Ar.focused]&&iTz(e(a)))),s}function A_e(t,e,n,r,s,i,a){const{ISOWeek:l,broadcastCalendar:c}=i,{addDays:d,addMonths:h,addWeeks:m,addYears:g,endOfBroadcastWeek:x,endOfISOWeek:y,endOfWeek:w,max:S,min:k,startOfBroadcastWeek:j,startOfISOWeek:N,startOfWeek:T}=a;let _={day:d,week:m,month:h,year:g,startOfWeek:A=>c?j(A,a):l?N(A):T(A),endOfWeek:A=>c?x(A):l?y(A):w(A)}[t](n,e==="after"?1:-1);return e==="before"&&r?_=S([r,_]):e==="after"&&s&&(_=k([s,_])),_}function uX(t,e,n,r,s,i,a,l=0){if(l>365)return;const c=A_e(t,e,n.date,r,s,i,a),d=!!(i.disabled&&Pl(c,i.disabled,a)),h=!!(i.hidden&&Pl(c,i.hidden,a)),m=c,g=new JG(c,m,a);return!d&&!h?g:uX(t,e,g,r,s,i,a,l+1)}function M_e(t,e,n,r,s){const{autoFocus:i}=t,[a,l]=b.useState(),c=__e(e.days,n,r||(()=>!1),a),[d,h]=b.useState(i?c:void 0);return{isFocusTarget:w=>!!c?.isEqualTo(w),setFocused:h,focused:d,blur:()=>{l(d),h(void 0)},moveFocus:(w,S)=>{if(!d)return;const k=uX(w,S,d,e.navStart,e.navEnd,t,s);k&&(t.disableNavigation&&!e.days.some(N=>N.isEqualTo(k))||(e.goToDay(k),h(k)))}}}function R_e(t,e){const{selected:n,required:r,onSelect:s}=t,[i,a]=nw(n,s?n:void 0),l=s?n:i,{isSameDay:c}=e,d=x=>l?.some(y=>c(y,x))??!1,{min:h,max:m}=t;return{selected:l,select:(x,y,w)=>{let S=[...l??[]];if(d(x)){if(l?.length===h||r&&l?.length===1)return;S=l?.filter(k=>!c(k,x))}else l?.length===m?S=[x]:S=[...S,x];return s||a(S),s?.(S,x,y,w),S},isSelected:d}}function D_e(t,e,n=0,r=0,s=!1,i=Xo){const{from:a,to:l}=e||{},{isSameDay:c,isAfter:d,isBefore:h}=i;let m;if(!a&&!l)m={from:t,to:n>0?void 0:t};else if(a&&!l)c(a,t)?n===0?m={from:a,to:t}:s?m={from:a,to:void 0}:m=void 0:h(t,a)?m={from:t,to:a}:m={from:a,to:t};else if(a&&l)if(c(a,t)&&c(l,t))s?m={from:a,to:l}:m=void 0;else if(c(a,t))m={from:a,to:n>0?void 0:t};else if(c(l,t))m={from:t,to:n>0?void 0:t};else if(h(t,a))m={from:t,to:l};else if(d(t,a))m={from:a,to:t};else if(d(t,l))m={from:a,to:t};else throw new Error("Invalid range");if(m?.from&&m?.to){const g=i.differenceInCalendarDays(m.to,m.from);r>0&&g>r?m={from:t,to:void 0}:n>1&&gtypeof l!="function").some(l=>typeof l=="boolean"?l:n.isDate(l)?Dl(t,l,!1,n):iX(l,n)?l.some(c=>Dl(t,c,!1,n)):u7(l)?l.from&&l.to?Ez(t,{from:l.from,to:l.to},n):!1:sX(l)?P_e(t,l.dayOfWeek,n):tX(l)?n.isAfter(l.before,l.after)?Ez(t,{from:n.addDays(l.after,1),to:n.addDays(l.before,-1)},n):Pl(t.from,l,n)||Pl(t.to,l,n):nX(l)||rX(l)?Pl(t.from,l,n)||Pl(t.to,l,n):!1))return!0;const a=r.filter(l=>typeof l=="function");if(a.length){let l=t.from;const c=n.differenceInCalendarDays(t.to,t.from);for(let d=0;d<=c;d++){if(a.some(h=>h(l)))return!0;l=n.addDays(l,1)}}return!1}function I_e(t,e){const{disabled:n,excludeDisabled:r,selected:s,required:i,onSelect:a}=t,[l,c]=nw(s,a?s:void 0),d=a?s:l;return{selected:d,select:(g,x,y)=>{const{min:w,max:S}=t,k=g?D_e(g,d,w,S,i,e):void 0;return r&&n&&k?.from&&k.to&&z_e({from:k.from,to:k.to},n,e)&&(k.from=g,k.to=void 0),a||c(k),a?.(k,g,x,y),k},isSelected:g=>d&&Dl(d,g,!1,e)}}function L_e(t,e){const{selected:n,required:r,onSelect:s}=t,[i,a]=nw(n,s?n:void 0),l=s?n:i,{isSameDay:c}=e;return{selected:l,select:(m,g,x)=>{let y=m;return!r&&l&&l&&c(m,l)&&(y=void 0),s||a(y),s?.(y,m,g,x),y},isSelected:m=>l?c(l,m):!1}}function B_e(t,e){const n=L_e(t,e),r=R_e(t,e),s=I_e(t,e);switch(t.mode){case"single":return n;case"multiple":return r;case"range":return s;default:return}}function F_e(t){let e=t;e.timeZone&&(e={...t},e.today&&(e.today=new Fs(e.today,e.timeZone)),e.month&&(e.month=new Fs(e.month,e.timeZone)),e.defaultMonth&&(e.defaultMonth=new Fs(e.defaultMonth,e.timeZone)),e.startMonth&&(e.startMonth=new Fs(e.startMonth,e.timeZone)),e.endMonth&&(e.endMonth=new Fs(e.endMonth,e.timeZone)),e.mode==="single"&&e.selected?e.selected=new Fs(e.selected,e.timeZone):e.mode==="multiple"&&e.selected?e.selected=e.selected?.map(Pe=>new Fs(Pe,e.timeZone)):e.mode==="range"&&e.selected&&(e.selected={from:e.selected.from?new Fs(e.selected.from,e.timeZone):void 0,to:e.selected.to?new Fs(e.selected.to,e.timeZone):void 0}));const{components:n,formatters:r,labels:s,dateLib:i,locale:a,classNames:l}=b.useMemo(()=>{const Pe={...c7,...e.locale};return{dateLib:new Ki({locale:Pe,weekStartsOn:e.broadcastCalendar?1:e.weekStartsOn,firstWeekContainsDate:e.firstWeekContainsDate,useAdditionalWeekYearTokens:e.useAdditionalWeekYearTokens,useAdditionalDayOfYearTokens:e.useAdditionalDayOfYearTokens,timeZone:e.timeZone,numerals:e.numerals},e.dateLib),components:QEe(e.components),formatters:e_e(e.formatters),labels:{...g_e,...e.labels},locale:Pe,classNames:{...d7(),...e.classNames}}},[e.locale,e.broadcastCalendar,e.weekStartsOn,e.firstWeekContainsDate,e.useAdditionalWeekYearTokens,e.useAdditionalDayOfYearTokens,e.timeZone,e.numerals,e.dateLib,e.components,e.formatters,e.labels,e.classNames]),{captionLayout:c,mode:d,navLayout:h,numberOfMonths:m=1,onDayBlur:g,onDayClick:x,onDayFocus:y,onDayKeyDown:w,onDayMouseEnter:S,onDayMouseLeave:k,onNextClick:j,onPrevClick:N,showWeekNumber:T,styles:E}=e,{formatCaption:_,formatDay:A,formatMonthDropdown:L,formatWeekNumber:P,formatWeekNumberHeader:B,formatWeekdayName:$,formatYearDropdown:U}=r,te=E_e(e,i),{days:z,months:Q,navStart:F,navEnd:Y,previousMonth:J,nextMonth:X,goToMonth:R}=te,ie=$Ee(z,e,F,Y,i),{isSelected:G,select:I,selected:V}=B_e(e,i)??{},{blur:ee,focused:ne,isFocusTarget:W,moveFocus:se,setFocused:re}=M_e(e,te,ie,G??(()=>!1),i),{labelDayButton:oe,labelGridcell:Te,labelGrid:We,labelMonthDropdown:Ye,labelNav:Je,labelPrevious:Oe,labelNext:Ve,labelWeekday:Ue,labelWeekNumber:He,labelWeekNumberHeader:Ot,labelYearDropdown:xt}=s,kn=b.useMemo(()=>r_e(i,e.ISOWeek),[i,e.ISOWeek]),It=d!==void 0||x!==void 0,Yt=b.useCallback(()=>{J&&(R(J),N?.(J))},[J,R,N]),_t=b.useCallback(()=>{X&&(R(X),j?.(X))},[R,X,j]),mt=b.useCallback((Pe,it)=>ot=>{ot.preventDefault(),ot.stopPropagation(),re(Pe),I?.(Pe.date,it,ot),x?.(Pe.date,it,ot)},[I,x,re]),Ne=b.useCallback((Pe,it)=>ot=>{re(Pe),y?.(Pe.date,it,ot)},[y,re]),Ie=b.useCallback((Pe,it)=>ot=>{ee(),g?.(Pe.date,it,ot)},[ee,g]),st=b.useCallback((Pe,it)=>ot=>{const nn={ArrowLeft:[ot.shiftKey?"month":"day",e.dir==="rtl"?"after":"before"],ArrowRight:[ot.shiftKey?"month":"day",e.dir==="rtl"?"before":"after"],ArrowDown:[ot.shiftKey?"year":"week","after"],ArrowUp:[ot.shiftKey?"year":"week","before"],PageUp:[ot.shiftKey?"year":"month","before"],PageDown:[ot.shiftKey?"year":"month","after"],Home:["startOfWeek","before"],End:["endOfWeek","after"]};if(nn[ot.key]){ot.preventDefault(),ot.stopPropagation();const[Kt,pt]=nn[ot.key];se(Kt,pt)}w?.(Pe.date,it,ot)},[se,w,e.dir]),yt=b.useCallback((Pe,it)=>ot=>{S?.(Pe.date,it,ot)},[S]),Pt=b.useCallback((Pe,it)=>ot=>{k?.(Pe.date,it,ot)},[k]),Mt=b.useCallback(Pe=>it=>{const ot=Number(it.target.value),nn=i.setMonth(i.startOfMonth(Pe),ot);R(nn)},[i,R]),zn=b.useCallback(Pe=>it=>{const ot=Number(it.target.value),nn=i.setYear(i.startOfMonth(Pe),ot);R(nn)},[i,R]),{className:Fe,style:rt}=b.useMemo(()=>({className:[l[jt.Root],e.className].filter(Boolean).join(" "),style:{...E?.[jt.Root],...e.style}}),[l,e.className,e.style,E]),tn=VEe(e),Rt=b.useRef(null);b_e(Rt,!!e.animate,{classNames:l,months:Q,focused:ne,dateLib:i});const ke={dayPickerProps:e,selected:V,select:I,isSelected:G,months:Q,nextMonth:X,previousMonth:J,goToMonth:R,getModifiers:ie,components:n,classNames:l,styles:E,labels:s,formatters:r};return ae.createElement(eX.Provider,{value:ke},ae.createElement(n.Root,{rootRef:e.animate?Rt:void 0,className:Fe,style:rt,dir:e.dir,id:e.id,lang:e.lang,nonce:e.nonce,title:e.title,role:e.role,"aria-label":e["aria-label"],"aria-labelledby":e["aria-labelledby"],...tn},ae.createElement(n.Months,{className:l[jt.Months],style:E?.[jt.Months]},!e.hideNavigation&&!h&&ae.createElement(n.Nav,{"data-animated-nav":e.animate?"true":void 0,className:l[jt.Nav],style:E?.[jt.Nav],"aria-label":Je(),onPreviousClick:Yt,onNextClick:_t,previousMonth:J,nextMonth:X}),Q.map((Pe,it)=>ae.createElement(n.Month,{"data-animated-month":e.animate?"true":void 0,className:l[jt.Month],style:E?.[jt.Month],key:it,displayIndex:it,calendarMonth:Pe},h==="around"&&!e.hideNavigation&&it===0&&ae.createElement(n.PreviousMonthButton,{type:"button",className:l[jt.PreviousMonthButton],tabIndex:J?void 0:-1,"aria-disabled":J?void 0:!0,"aria-label":Oe(J),onClick:Yt,"data-animated-button":e.animate?"true":void 0},ae.createElement(n.Chevron,{disabled:J?void 0:!0,className:l[jt.Chevron],orientation:e.dir==="rtl"?"right":"left"})),ae.createElement(n.MonthCaption,{"data-animated-caption":e.animate?"true":void 0,className:l[jt.MonthCaption],style:E?.[jt.MonthCaption],calendarMonth:Pe,displayIndex:it},c?.startsWith("dropdown")?ae.createElement(n.DropdownNav,{className:l[jt.Dropdowns],style:E?.[jt.Dropdowns]},(()=>{const ot=c==="dropdown"||c==="dropdown-months"?ae.createElement(n.MonthsDropdown,{key:"month",className:l[jt.MonthsDropdown],"aria-label":Ye(),classNames:l,components:n,disabled:!!e.disableNavigation,onChange:Mt(Pe.date),options:t_e(Pe.date,F,Y,r,i),style:E?.[jt.Dropdown],value:i.getMonth(Pe.date)}):ae.createElement("span",{key:"month"},L(Pe.date,i)),nn=c==="dropdown"||c==="dropdown-years"?ae.createElement(n.YearsDropdown,{key:"year",className:l[jt.YearsDropdown],"aria-label":xt(i.options),classNames:l,components:n,disabled:!!e.disableNavigation,onChange:zn(Pe.date),options:s_e(F,Y,r,i,!!e.reverseYears),style:E?.[jt.Dropdown],value:i.getYear(Pe.date)}):ae.createElement("span",{key:"year"},U(Pe.date,i));return i.getMonthYearOrder()==="year-first"?[nn,ot]:[ot,nn]})(),ae.createElement("span",{role:"status","aria-live":"polite",style:{border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",width:"1px",whiteSpace:"nowrap",wordWrap:"normal"}},_(Pe.date,i.options,i))):ae.createElement(n.CaptionLabel,{className:l[jt.CaptionLabel],role:"status","aria-live":"polite"},_(Pe.date,i.options,i))),h==="around"&&!e.hideNavigation&&it===m-1&&ae.createElement(n.NextMonthButton,{type:"button",className:l[jt.NextMonthButton],tabIndex:X?void 0:-1,"aria-disabled":X?void 0:!0,"aria-label":Ve(X),onClick:_t,"data-animated-button":e.animate?"true":void 0},ae.createElement(n.Chevron,{disabled:X?void 0:!0,className:l[jt.Chevron],orientation:e.dir==="rtl"?"left":"right"})),it===m-1&&h==="after"&&!e.hideNavigation&&ae.createElement(n.Nav,{"data-animated-nav":e.animate?"true":void 0,className:l[jt.Nav],style:E?.[jt.Nav],"aria-label":Je(),onPreviousClick:Yt,onNextClick:_t,previousMonth:J,nextMonth:X}),ae.createElement(n.MonthGrid,{role:"grid","aria-multiselectable":d==="multiple"||d==="range","aria-label":We(Pe.date,i.options,i)||void 0,className:l[jt.MonthGrid],style:E?.[jt.MonthGrid]},!e.hideWeekdays&&ae.createElement(n.Weekdays,{"data-animated-weekdays":e.animate?"true":void 0,className:l[jt.Weekdays],style:E?.[jt.Weekdays]},T&&ae.createElement(n.WeekNumberHeader,{"aria-label":Ot(i.options),className:l[jt.WeekNumberHeader],style:E?.[jt.WeekNumberHeader],scope:"col"},B()),kn.map(ot=>ae.createElement(n.Weekday,{"aria-label":Ue(ot,i.options,i),className:l[jt.Weekday],key:String(ot),style:E?.[jt.Weekday],scope:"col"},$(ot,i.options,i)))),ae.createElement(n.Weeks,{"data-animated-weeks":e.animate?"true":void 0,className:l[jt.Weeks],style:E?.[jt.Weeks]},Pe.weeks.map(ot=>ae.createElement(n.Week,{className:l[jt.Week],key:ot.weekNumber,style:E?.[jt.Week],week:ot},T&&ae.createElement(n.WeekNumber,{week:ot,style:E?.[jt.WeekNumber],"aria-label":He(ot.weekNumber,{locale:a}),className:l[jt.WeekNumber],scope:"row",role:"rowheader"},P(ot.weekNumber,i)),ot.days.map(nn=>{const{date:Kt}=nn,pt=ie(nn);if(pt[Ar.focused]=!pt.hidden&&!!ne?.isEqualTo(nn),pt[Ua.selected]=G?.(Kt)||pt.selected,u7(V)){const{from:vr,to:In}=V;pt[Ua.range_start]=!!(vr&&In&&i.isSameDay(Kt,vr)),pt[Ua.range_end]=!!(vr&&In&&i.isSameDay(Kt,In)),pt[Ua.range_middle]=Dl(V,Kt,!0,i)}const xr=n_e(pt,E,e.modifiersStyles),Ur=HEe(pt,l,e.modifiersClassNames),Wr=!It&&!pt.hidden?Te(Kt,pt,i.options,i):void 0;return ae.createElement(n.Day,{key:`${i.format(Kt,"yyyy-MM-dd")}_${i.format(nn.displayMonth,"yyyy-MM")}`,day:nn,modifiers:pt,className:Ur.join(" "),style:xr,role:"gridcell","aria-selected":pt.selected||void 0,"aria-label":Wr,"data-day":i.format(Kt,"yyyy-MM-dd"),"data-month":nn.outside?i.format(Kt,"yyyy-MM"):void 0,"data-selected":pt.selected||void 0,"data-disabled":pt.disabled||void 0,"data-hidden":pt.hidden||void 0,"data-outside":nn.outside||void 0,"data-focused":pt.focused||void 0,"data-today":pt.today||void 0},!pt.hidden&&It?ae.createElement(n.DayButton,{className:l[jt.DayButton],style:E?.[jt.DayButton],type:"button",day:nn,modifiers:pt,disabled:pt.disabled||void 0,tabIndex:W(nn)?0:-1,"aria-label":oe(Kt,pt,i.options,i),onClick:mt(nn,pt),onBlur:Ie(nn,pt),onFocus:Ne(nn,pt),onKeyDown:st(nn,pt),onMouseEnter:yt(nn,pt),onMouseLeave:Pt(nn,pt)},A(Kt,i.options,i)):!pt.hidden&&A(nn.date,i.options,i))})))))))),e.footer&&ae.createElement(n.Footer,{className:l[jt.Footer],style:E?.[jt.Footer],role:"status","aria-live":"polite"},e.footer)))}function _z({className:t,classNames:e,showOutsideDays:n=!0,captionLayout:r="label",buttonVariant:s="ghost",formatters:i,components:a,...l}){const c=d7();return o.jsx(F_e,{showOutsideDays:n,className:xe("bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,t),captionLayout:r,formatters:{formatMonthDropdown:d=>d.toLocaleString("default",{month:"short"}),...i},classNames:{root:xe("w-fit",c.root),months:xe("relative flex flex-col gap-4 md:flex-row",c.months),month:xe("flex w-full flex-col gap-4",c.month),nav:xe("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",c.nav),button_previous:xe(I0({variant:s}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",c.button_previous),button_next:xe(I0({variant:s}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",c.button_next),month_caption:xe("flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]",c.month_caption),dropdowns:xe("flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium",c.dropdowns),dropdown_root:xe("has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border",c.dropdown_root),dropdown:xe("bg-popover absolute inset-0 opacity-0",c.dropdown),caption_label:xe("select-none font-medium",r==="label"?"text-sm":"[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5",c.caption_label),table:"w-full border-collapse",weekdays:xe("flex",c.weekdays),weekday:xe("text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal",c.weekday),week:xe("mt-2 flex w-full",c.week),week_number_header:xe("w-[--cell-size] select-none",c.week_number_header),week_number:xe("text-muted-foreground select-none text-[0.8rem]",c.week_number),day:xe("group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md",c.day),range_start:xe("bg-accent rounded-l-md",c.range_start),range_middle:xe("rounded-none",c.range_middle),range_end:xe("bg-accent rounded-r-md",c.range_end),today:xe("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",c.today),outside:xe("text-muted-foreground aria-selected:text-muted-foreground",c.outside),disabled:xe("text-muted-foreground opacity-50",c.disabled),hidden:xe("invisible",c.hidden),...e},components:{Root:({className:d,rootRef:h,...m})=>o.jsx("div",{"data-slot":"calendar",ref:h,className:xe(d),...m}),Chevron:({className:d,orientation:h,...m})=>h==="left"?o.jsx(vd,{className:xe("size-4",d),...m}):h==="right"?o.jsx(yd,{className:xe("size-4",d),...m}):o.jsx(nd,{className:xe("size-4",d),...m}),DayButton:q_e,WeekNumber:({children:d,...h})=>o.jsx("td",{...h,children:o.jsx("div",{className:"flex size-[--cell-size] items-center justify-center text-center",children:d})}),...a},...l})}function q_e({className:t,day:e,modifiers:n,...r}){const s=d7(),i=b.useRef(null);return b.useEffect(()=>{n.focused&&i.current?.focus()},[n.focused]),o.jsx(de,{ref:i,variant:"ghost",size:"icon","data-day":e.date.toLocaleDateString(),"data-selected-single":n.selected&&!n.range_start&&!n.range_end&&!n.range_middle,"data-range-start":n.range_start,"data-range-end":n.range_end,"data-range-middle":n.range_middle,className:xe("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70",s.day,t),...r})}class $_e{ws=null;reconnectTimeout=null;reconnectAttempts=0;maxReconnectAttempts=10;heartbeatInterval=null;logCallbacks=new Set;connectionCallbacks=new Set;isConnected=!1;logCache=[];maxCacheSize=1e3;getWebSocketUrl(){{const e=window.location.protocol==="https:"?"wss:":"ws:",n=window.location.host;return`${e}//${n}/ws/logs`}}connect(){if(this.ws?.readyState===WebSocket.OPEN||this.ws?.readyState===WebSocket.CONNECTING)return;const e=this.getWebSocketUrl();try{this.ws=new WebSocket(e),this.ws.onopen=()=>{this.isConnected=!0,this.reconnectAttempts=0,this.notifyConnection(!0),this.startHeartbeat()},this.ws.onmessage=n=>{try{if(n.data==="pong")return;const r=JSON.parse(n.data);this.notifyLog(r)}catch(r){console.error("解析日志消息失败:",r)}},this.ws.onerror=n=>{console.error("❌ WebSocket 错误:",n),this.isConnected=!1,this.notifyConnection(!1)},this.ws.onclose=()=>{this.isConnected=!1,this.notifyConnection(!1),this.stopHeartbeat(),this.attemptReconnect()}}catch(n){console.error("创建 WebSocket 连接失败:",n),this.attemptReconnect()}}attemptReconnect(){if(this.reconnectAttempts>=this.maxReconnectAttempts)return;this.reconnectAttempts+=1;const e=Math.min(1e3*this.reconnectAttempts,1e4);this.reconnectTimeout=window.setTimeout(()=>{this.connect()},e)}startHeartbeat(){this.heartbeatInterval=window.setInterval(()=>{this.ws?.readyState===WebSocket.OPEN&&this.ws.send("ping")},3e4)}stopHeartbeat(){this.heartbeatInterval!==null&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}disconnect(){this.reconnectTimeout!==null&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.stopHeartbeat(),this.ws&&(this.ws.close(),this.ws=null),this.isConnected=!1,this.reconnectAttempts=0}onLog(e){return this.logCallbacks.add(e),()=>this.logCallbacks.delete(e)}onConnectionChange(e){return this.connectionCallbacks.add(e),e(this.isConnected),()=>this.connectionCallbacks.delete(e)}notifyLog(e){this.logCache.some(r=>r.id===e.id)||(this.logCache.push(e),this.logCache.length>this.maxCacheSize&&(this.logCache=this.logCache.slice(-this.maxCacheSize)),this.logCallbacks.forEach(r=>{try{r(e)}catch(s){console.error("日志回调执行失败:",s)}}))}notifyConnection(e){this.connectionCallbacks.forEach(n=>{try{n(e)}catch(r){console.error("连接状态回调执行失败:",r)}})}getAllLogs(){return[...this.logCache]}clearLogs(){this.logCache=[]}getConnectionStatus(){return this.isConnected}}const Oh=new $_e;typeof window<"u"&&Oh.connect();const H_e={lessThanXSeconds:{one:"不到 1 秒",other:"不到 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分钟",lessThanXMinutes:{one:"不到 1 分钟",other:"不到 {{count}} 分钟"},xMinutes:{one:"1 分钟",other:"{{count}} 分钟"},xHours:{one:"1 小时",other:"{{count}} 小时"},aboutXHours:{one:"大约 1 小时",other:"大约 {{count}} 小时"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大约 1 个星期",other:"大约 {{count}} 个星期"},xWeeks:{one:"1 个星期",other:"{{count}} 个星期"},aboutXMonths:{one:"大约 1 个月",other:"大约 {{count}} 个月"},xMonths:{one:"1 个月",other:"{{count}} 个月"},aboutXYears:{one:"大约 1 年",other:"大约 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超过 1 年",other:"超过 {{count}} 年"},almostXYears:{one:"将近 1 年",other:"将近 {{count}} 年"}},Q_e=(t,e,n)=>{let r;const s=H_e[t];return typeof s=="string"?r=s:e===1?r=s.one:r=s.other.replace("{{count}}",String(e)),n?.addSuffix?n.comparison&&n.comparison>0?r+"内":r+"前":r},V_e={full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},U_e={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},W_e={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},G_e={date:Vh({formats:V_e,defaultWidth:"full"}),time:Vh({formats:U_e,defaultWidth:"full"}),dateTime:Vh({formats:W_e,defaultWidth:"full"})};function Az(t,e,n){const r="eeee p";return iEe(t,e,n)?r:t.getTime()>e.getTime()?"'下个'"+r:"'上个'"+r}const X_e={lastWeek:Az,yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:Az,other:"PP p"},Y_e=(t,e,n,r)=>{const s=X_e[t];return typeof s=="function"?s(e,n,r):s},K_e={narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},Z_e={narrow:["1","2","3","4"],abbreviated:["第一季","第二季","第三季","第四季"],wide:["第一季度","第二季度","第三季度","第四季度"]},J_e={narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},eAe={narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["周日","周一","周二","周三","周四","周五","周六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},tAe={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},nAe={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},rAe=(t,e)=>{const n=Number(t);switch(e?.unit){case"date":return n.toString()+"日";case"hour":return n.toString()+"时";case"minute":return n.toString()+"分";case"second":return n.toString()+"秒";default:return"第 "+n.toString()}},sAe={ordinalNumber:rAe,era:ko({values:K_e,defaultWidth:"wide"}),quarter:ko({values:Z_e,defaultWidth:"wide",argumentCallback:t=>t-1}),month:ko({values:J_e,defaultWidth:"wide"}),day:ko({values:eAe,defaultWidth:"wide"}),dayPeriod:ko({values:tAe,defaultWidth:"wide",formattingValues:nAe,defaultFormattingWidth:"wide"})},iAe=/^(第\s*)?\d+(日|时|分|秒)?/i,aAe=/\d+/i,oAe={narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},lAe={any:[/^(前)/i,/^(公元)/i]},cAe={narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻钟/i},uAe={any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},dAe={narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},hAe={narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},fAe={narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^周[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},mAe={any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},pAe={any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i},gAe={any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},xAe={ordinalNumber:WG({matchPattern:iAe,parsePattern:aAe,valueCallback:t=>parseInt(t,10)}),era:Oo({matchPatterns:oAe,defaultMatchWidth:"wide",parsePatterns:lAe,defaultParseWidth:"any"}),quarter:Oo({matchPatterns:cAe,defaultMatchWidth:"wide",parsePatterns:uAe,defaultParseWidth:"any",valueCallback:t=>t+1}),month:Oo({matchPatterns:dAe,defaultMatchWidth:"wide",parsePatterns:hAe,defaultParseWidth:"any"}),day:Oo({matchPatterns:fAe,defaultMatchWidth:"wide",parsePatterns:mAe,defaultParseWidth:"any"}),dayPeriod:Oo({matchPatterns:pAe,defaultMatchWidth:"any",parsePatterns:gAe,defaultParseWidth:"any"})},U1={code:"zh-CN",formatDistance:Q_e,formatLong:G_e,formatRelative:Y_e,localize:sAe,match:xAe,options:{weekStartsOn:1,firstWeekContainsDate:4}},W1={xs:{label:"小",rowHeight:28,class:"text-[10px] sm:text-xs"},sm:{label:"中",rowHeight:36,class:"text-xs sm:text-sm"},base:{label:"大",rowHeight:44,class:"text-sm sm:text-base"}};function vAe(){const[t,e]=b.useState([]),[n,r]=b.useState(""),[s,i]=b.useState("all"),[a,l]=b.useState("all"),[c,d]=b.useState(void 0),[h,m]=b.useState(void 0),[g,x]=b.useState(!0),[y,w]=b.useState(!1),[S,k]=b.useState("xs"),[j,N]=b.useState(4),T=b.useRef(null);b.useEffect(()=>{const F=Oh.getAllLogs();e(F);const Y=Oh.onLog(()=>{e(Oh.getAllLogs())}),J=Oh.onConnectionChange(X=>{w(X)});return()=>{Y(),J()}},[]);const E=b.useMemo(()=>{const F=new Set(t.map(Y=>Y.module));return Array.from(F).sort()},[t]),_=F=>{switch(F){case"DEBUG":return"text-muted-foreground";case"INFO":return"text-blue-500 dark:text-blue-400";case"WARNING":return"text-yellow-600 dark:text-yellow-500";case"ERROR":return"text-red-600 dark:text-red-500";case"CRITICAL":return"text-red-700 dark:text-red-400 font-bold";default:return"text-foreground"}},A=F=>{switch(F){case"DEBUG":return"bg-gray-800/30 dark:bg-gray-800/50";case"INFO":return"bg-blue-900/20 dark:bg-blue-500/20";case"WARNING":return"bg-yellow-900/20 dark:bg-yellow-500/20";case"ERROR":return"bg-red-900/20 dark:bg-red-500/20";case"CRITICAL":return"bg-red-900/30 dark:bg-red-600/30";default:return"bg-gray-800/20 dark:bg-gray-800/30"}},L=()=>{window.location.reload()},P=()=>{Oh.clearLogs(),e([])},B=()=>{const F=te.map(R=>`${R.timestamp} [${R.level.padEnd(8)}] [${R.module}] ${R.message}`).join(` -`),Y=new Blob([F],{type:"text/plain;charset=utf-8"}),J=URL.createObjectURL(Y),X=document.createElement("a");X.href=J,X.download=`logs-${Ev(new Date,"yyyy-MM-dd-HHmmss")}.txt`,X.click(),URL.revokeObjectURL(J)},$=()=>{x(!g)},U=()=>{d(void 0),m(void 0)},te=b.useMemo(()=>t.filter(F=>{const Y=n===""||F.message.toLowerCase().includes(n.toLowerCase())||F.module.toLowerCase().includes(n.toLowerCase()),J=s==="all"||F.level===s,X=a==="all"||F.module===a;let R=!0;if(c||h){const ie=new Date(F.timestamp);if(c){const G=new Date(c);G.setHours(0,0,0,0),R=R&&ie>=G}if(h){const G=new Date(h);G.setHours(23,59,59,999),R=R&&ie<=G}}return Y&&J&&X&&R}),[t,n,s,a,c,h]),z=W1[S].rowHeight+j,Q=BTe({count:te.length,getScrollElement:()=>T.current,estimateSize:()=>z,overscan:15});return b.useEffect(()=>{g&&te.length>0&&Q.scrollToIndex(te.length-1,{align:"end",behavior:"auto"})},[te.length,g,Q]),o.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[o.jsxs("div",{className:"flex-shrink-0 space-y-4 p-3 sm:p-4 lg:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-3",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-xl sm:text-2xl lg:text-3xl font-bold",children:"日志查看器"}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:"实时查看和分析麦麦运行日志"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("div",{className:xe("h-2.5 w-2.5 sm:h-3 sm:w-3 rounded-full",y?"bg-green-500 animate-pulse":"bg-red-500")}),o.jsx("span",{className:"text-xs sm:text-sm text-muted-foreground",children:y?"已连接":"未连接"})]})]}),o.jsx(qt,{className:"p-3 sm:p-4",children:o.jsxs("div",{className:"flex flex-col gap-3 sm:gap-4",children:[o.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:gap-4",children:[o.jsxs("div",{className:"flex-1 relative",children:[o.jsx(Ni,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(ze,{placeholder:"搜索日志...",value:n,onChange:F=>r(F.target.value),className:"pl-9 h-9 text-sm"})]}),o.jsxs(Vt,{value:s,onValueChange:i,children:[o.jsxs($t,{className:"w-full sm:w-[140px] lg:w-[180px] h-9 text-sm",children:[o.jsx(sk,{className:"h-4 w-4 mr-2"}),o.jsx(Ut,{placeholder:"级别"})]}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部级别"}),o.jsx(De,{value:"DEBUG",children:"DEBUG"}),o.jsx(De,{value:"INFO",children:"INFO"}),o.jsx(De,{value:"WARNING",children:"WARNING"}),o.jsx(De,{value:"ERROR",children:"ERROR"}),o.jsx(De,{value:"CRITICAL",children:"CRITICAL"})]})]}),o.jsxs(Vt,{value:a,onValueChange:l,children:[o.jsxs($t,{className:"w-full sm:w-[160px] lg:w-[200px] h-9 text-sm",children:[o.jsx(sk,{className:"h-4 w-4 mr-2"}),o.jsx(Ut,{placeholder:"模块"})]}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部模块"}),E.map(F=>o.jsx(De,{value:F,children:F},F))]})]})]}),o.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:gap-4",children:[o.jsxs(zo,{children:[o.jsx(Io,{asChild:!0,children:o.jsxs(de,{variant:"outline",size:"sm",className:xe("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!c&&"text-muted-foreground"),children:[o.jsx(w9,{className:"mr-2 h-4 w-4"}),o.jsx("span",{className:"text-xs sm:text-sm",children:c?Ev(c,"PPP",{locale:U1}):"开始日期"})]})}),o.jsx(Xa,{className:"w-auto p-0",align:"start",children:o.jsx(_z,{mode:"single",selected:c,onSelect:d,initialFocus:!0,locale:U1})})]}),o.jsxs(zo,{children:[o.jsx(Io,{asChild:!0,children:o.jsxs(de,{variant:"outline",size:"sm",className:xe("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!h&&"text-muted-foreground"),children:[o.jsx(w9,{className:"mr-2 h-4 w-4"}),o.jsx("span",{className:"text-xs sm:text-sm",children:h?Ev(h,"PPP",{locale:U1}):"结束日期"})]})}),o.jsx(Xa,{className:"w-auto p-0",align:"start",children:o.jsx(_z,{mode:"single",selected:h,onSelect:m,initialFocus:!0,locale:U1})})]}),(c||h)&&o.jsxs(de,{variant:"outline",size:"sm",onClick:U,className:"w-full sm:w-auto h-9",children:[o.jsx(_p,{className:"h-4 w-4 sm:mr-2"}),o.jsx("span",{className:"hidden sm:inline text-sm",children:"清除时间筛选"}),o.jsx("span",{className:"sm:hidden text-sm",children:"清除"})]})]}),o.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center",children:[o.jsxs("div",{className:"flex gap-2 flex-wrap",children:[o.jsxs(de,{variant:g?"default":"outline",size:"sm",onClick:$,className:"flex-1 sm:flex-none h-9",children:[g?o.jsx(tte,{className:"h-4 w-4"}):o.jsx(nte,{className:"h-4 w-4"}),o.jsx("span",{className:"ml-2 text-sm",children:g?"自动滚动":"已暂停"})]}),o.jsxs(de,{variant:"outline",size:"sm",onClick:L,className:"flex-1 sm:flex-none h-9",children:[o.jsx(Ps,{className:"h-4 w-4"}),o.jsx("span",{className:"ml-2 text-sm",children:"刷新"})]}),o.jsxs(de,{variant:"outline",size:"sm",onClick:P,className:"flex-1 sm:flex-none h-9",children:[o.jsx(Sn,{className:"h-4 w-4"}),o.jsx("span",{className:"ml-2 text-sm",children:"清空"})]}),o.jsxs(de,{variant:"outline",size:"sm",onClick:B,className:"flex-1 sm:flex-none h-9",children:[o.jsx(Ku,{className:"h-4 w-4"}),o.jsx("span",{className:"ml-2 text-sm",children:"导出"})]})]}),o.jsx("div",{className:"flex-1 hidden sm:block"}),o.jsxs("div",{className:"text-xs sm:text-sm text-muted-foreground flex items-center justify-center sm:justify-end",children:[o.jsxs("span",{className:"font-mono",children:[te.length," / ",t.length]}),o.jsx("span",{className:"ml-1",children:"条日志"})]})]}),o.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-6 pt-2 border-t border-border/50",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[o.jsx(rte,{className:"h-4 w-4"}),o.jsx("span",{children:"字号"})]}),o.jsx("div",{className:"flex gap-1",children:Object.keys(W1).map(F=>o.jsx(de,{variant:S===F?"default":"outline",size:"sm",onClick:()=>k(F),className:"h-7 px-3 text-xs",children:W1[F].label},F))})]}),o.jsxs("div",{className:"flex items-center gap-3 flex-1 max-w-xs",children:[o.jsx("span",{className:"text-sm text-muted-foreground whitespace-nowrap",children:"行距"}),o.jsx(Bp,{value:[j],onValueChange:([F])=>N(F),min:0,max:12,step:2,className:"flex-1"}),o.jsxs("span",{className:"text-xs text-muted-foreground w-8",children:[j,"px"]})]})]})]})})]}),o.jsx("div",{className:"flex-1 min-h-0 px-3 sm:px-4 lg:px-6 pb-3 sm:pb-4 lg:pb-6",children:o.jsx(qt,{className:"bg-black dark:bg-gray-950 border-gray-800 dark:border-gray-900 h-full",children:o.jsx(gn,{viewportRef:T,className:"h-full",children:o.jsx("div",{className:xe("p-2 sm:p-3 font-mono relative",W1[S].class),style:{height:`${Q.getTotalSize()}px`},children:te.length===0?o.jsx("div",{className:"text-gray-500 dark:text-gray-600 text-center py-8 text-sm",children:"暂无日志数据"}):Q.getVirtualItems().map(F=>{const Y=te[F.index];return o.jsxs("div",{"data-index":F.index,ref:Q.measureElement,className:xe("absolute top-0 left-0 w-full px-2 sm:px-3 rounded hover:bg-white/5 transition-colors group",A(Y.level)),style:{transform:`translateY(${F.start}px)`,paddingTop:`${j/2}px`,paddingBottom:`${j/2}px`},children:[o.jsxs("div",{className:"flex flex-col gap-0.5 sm:hidden",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"text-gray-500 dark:text-gray-600",children:Y.timestamp}),o.jsxs("span",{className:xe("font-semibold",_(Y.level)),children:["[",Y.level,"]"]})]}),o.jsx("div",{className:"text-cyan-400 dark:text-cyan-500 truncate",children:Y.module}),o.jsx("div",{className:"text-gray-300 dark:text-gray-400 whitespace-pre-wrap break-words",children:Y.message})]}),o.jsxs("div",{className:"hidden sm:flex gap-2 items-start",children:[o.jsx("span",{className:"text-gray-500 dark:text-gray-600 flex-shrink-0 w-[130px] lg:w-[160px]",children:Y.timestamp}),o.jsxs("span",{className:xe("flex-shrink-0 w-[65px] lg:w-[75px] font-semibold",_(Y.level)),children:["[",Y.level,"]"]}),o.jsx("span",{className:"text-cyan-400 dark:text-cyan-500 flex-shrink-0 w-[100px] lg:w-[130px] truncate",children:Y.module}),o.jsx("span",{className:"text-gray-300 dark:text-gray-400 flex-1 whitespace-pre-wrap break-words",children:Y.message})]})]},F.key)})})})})})]})}const yAe="Mai-with-u",bAe="plugin-repo",wAe="main",SAe="plugin_details.json";async function kAe(){try{const t=await St("/api/webui/plugins/fetch-raw",{method:"POST",headers:Dt(),body:JSON.stringify({owner:yAe,repo:bAe,branch:wAe,file_path:SAe})});if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);const e=await t.json();if(!e.success||!e.data)throw new Error(e.error||"获取插件列表失败");return JSON.parse(e.data).filter(s=>!s?.id||!s?.manifest?(console.warn("跳过无效插件数据:",s),!1):!s.manifest.name||!s.manifest.version?(console.warn("跳过缺少必需字段的插件:",s.id),!1):!0).map(s=>({id:s.id,manifest:{manifest_version:s.manifest.manifest_version||1,name:s.manifest.name,version:s.manifest.version,description:s.manifest.description||"",author:s.manifest.author||{name:"Unknown"},license:s.manifest.license||"Unknown",host_application:s.manifest.host_application||{min_version:"0.0.0"},homepage_url:s.manifest.homepage_url,repository_url:s.manifest.repository_url,keywords:s.manifest.keywords||[],categories:s.manifest.categories||[],default_locale:s.manifest.default_locale||"zh-CN",locales_path:s.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!1,published_at:new Date().toISOString(),updated_at:new Date().toISOString()}))}catch(t){throw console.error("Failed to fetch plugin list:",t),t}}async function OAe(){try{const t=await St("/api/webui/plugins/git-status");if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);return await t.json()}catch(t){return console.error("Failed to check Git status:",t),{installed:!1,error:"无法检测 Git 安装状态"}}}async function jAe(){try{const t=await St("/api/webui/plugins/version");if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);return await t.json()}catch(t){return console.error("Failed to get Maimai version:",t),{version:"0.0.0",version_major:0,version_minor:0,version_patch:0}}}function NAe(t,e,n){const r=t.split(".").map(l=>parseInt(l)||0),s=r[0]||0,i=r[1]||0,a=r[2]||0;if(n.version_majorparseInt(m)||0),c=l[0]||0,d=l[1]||0,h=l[2]||0;if(n.version_major>c||n.version_major===c&&n.version_minor>d||n.version_major===c&&n.version_minor===d&&n.version_patch>h)return!1}return!0}function CAe(t,e){const n=window.location.protocol==="https:"?"wss:":"ws:",r=window.location.host,s=new WebSocket(`${n}//${r}/api/webui/ws/plugin-progress`);return s.onopen=()=>{console.log("Plugin progress WebSocket connected");const i=setInterval(()=>{s.readyState===WebSocket.OPEN?s.send("ping"):clearInterval(i)},3e4)},s.onmessage=i=>{try{if(i.data==="pong")return;const a=JSON.parse(i.data);t(a)}catch(a){console.error("Failed to parse progress data:",a)}},s.onerror=i=>{console.error("Plugin progress WebSocket error:",i),e?.(i)},s.onclose=()=>{console.log("Plugin progress WebSocket disconnected")},s}async function G1(){try{const t=await St("/api/webui/plugins/installed",{headers:Dt()});if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);const e=await t.json();if(!e.success)throw new Error(e.message||"获取已安装插件列表失败");return e.plugins||[]}catch(t){return console.error("Failed to get installed plugins:",t),[]}}function X1(t,e){return e.some(n=>n.id===t)}function Y1(t,e){const n=e.find(r=>r.id===t);if(n)return n.manifest?.version||n.version}async function TAe(t,e,n="main"){const r=await St("/api/webui/plugins/install",{method:"POST",headers:Dt(),body:JSON.stringify({plugin_id:t,repository_url:e,branch:n})});if(!r.ok){const s=await r.json();throw new Error(s.detail||"安装失败")}return await r.json()}async function EAe(t){const e=await St("/api/webui/plugins/uninstall",{method:"POST",headers:Dt(),body:JSON.stringify({plugin_id:t})});if(!e.ok){const n=await e.json();throw new Error(n.detail||"卸载失败")}return await e.json()}async function _Ae(t,e,n="main"){const r=await St("/api/webui/plugins/update",{method:"POST",headers:Dt(),body:JSON.stringify({plugin_id:t,repository_url:e,branch:n})});if(!r.ok){const s=await r.json();throw new Error(s.detail||"更新失败")}return await r.json()}const Sg="https://maibot-plugin-stats.maibot-webui.workers.dev";async function dX(t){try{const e=await fetch(`${Sg}/stats/${t}`);return e.ok?await e.json():(console.error("Failed to fetch plugin stats:",e.statusText),null)}catch(e){return console.error("Error fetching plugin stats:",e),null}}async function AAe(t,e){try{const n=e||h7(),r=await fetch(`${Sg}/stats/like`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t,user_id:n})}),s=await r.json();return r.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:r.ok?{success:!0,...s}:{success:!1,error:s.error||"点赞失败"}}catch(n){return console.error("Error liking plugin:",n),{success:!1,error:"网络错误"}}}async function MAe(t,e){try{const n=e||h7(),r=await fetch(`${Sg}/stats/dislike`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t,user_id:n})}),s=await r.json();return r.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:r.ok?{success:!0,...s}:{success:!1,error:s.error||"点踩失败"}}catch(n){return console.error("Error disliking plugin:",n),{success:!1,error:"网络错误"}}}async function RAe(t,e,n,r){if(e<1||e>5)return{success:!1,error:"评分必须在 1-5 之间"};try{const s=r||h7(),i=await fetch(`${Sg}/stats/rate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t,rating:e,comment:n,user_id:s})}),a=await i.json();return i.status===429?{success:!1,error:"每天最多评分 3 次"}:i.ok?{success:!0,...a}:{success:!1,error:a.error||"评分失败"}}catch(s){return console.error("Error rating plugin:",s),{success:!1,error:"网络错误"}}}async function DAe(t){try{const e=await fetch(`${Sg}/stats/download`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t})}),n=await e.json();return e.status===429?(console.warn("Download recording rate limited"),{success:!0}):e.ok?{success:!0,...n}:(console.error("Failed to record download:",n.error),{success:!1,error:n.error})}catch(e){return console.error("Error recording download:",e),{success:!1,error:"网络错误"}}}function PAe(){const t=navigator,e=[navigator.userAgent,navigator.language,navigator.languages?.join(",")||"",navigator.platform,navigator.hardwareConcurrency||0,screen.width,screen.height,screen.colorDepth,screen.pixelDepth,new Date().getTimezoneOffset(),Intl.DateTimeFormat().resolvedOptions().timeZone,navigator.maxTouchPoints||0,t.deviceMemory||0].join("|");let n=0;for(let r=0;r{i(!0);const k=await dX(t);k&&r(k),i(!1)};b.useEffect(()=>{x()},[t]);const y=async()=>{const k=await AAe(t);k.success?(g({title:"已点赞",description:"感谢你的支持!"}),x()):g({title:"点赞失败",description:k.error||"未知错误",variant:"destructive"})},w=async()=>{const k=await MAe(t);k.success?(g({title:"已反馈",description:"感谢你的反馈!"}),x()):g({title:"操作失败",description:k.error||"未知错误",variant:"destructive"})},S=async()=>{if(a===0){g({title:"请选择评分",description:"至少选择 1 颗星",variant:"destructive"});return}const k=await RAe(t,a,c||void 0);k.success?(g({title:"评分成功",description:"感谢你的评价!"}),m(!1),l(0),d(""),x()):g({title:"评分失败",description:k.error||"未知错误",variant:"destructive"})};return s?o.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(Ku,{className:"h-4 w-4"}),o.jsx("span",{children:"-"})]}),o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(Ac,{className:"h-4 w-4"}),o.jsx("span",{children:"-"})]})]}):n?e?o.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[o.jsxs("div",{className:"flex items-center gap-1",title:`下载量: ${n.downloads.toLocaleString()}`,children:[o.jsx(Ku,{className:"h-4 w-4"}),o.jsx("span",{children:n.downloads.toLocaleString()})]}),o.jsxs("div",{className:"flex items-center gap-1",title:`评分: ${n.rating.toFixed(1)} (${n.rating_count} 条评价)`,children:[o.jsx(Ac,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),o.jsx("span",{children:n.rating.toFixed(1)})]}),o.jsxs("div",{className:"flex items-center gap-1",title:`点赞数: ${n.likes}`,children:[o.jsx(y4,{className:"h-4 w-4"}),o.jsx("span",{children:n.likes})]})]}):o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-4",children:[o.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[o.jsx(Ku,{className:"h-5 w-5 text-muted-foreground mb-1"}),o.jsx("span",{className:"text-2xl font-bold",children:n.downloads.toLocaleString()}),o.jsx("span",{className:"text-xs text-muted-foreground",children:"下载量"})]}),o.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[o.jsx(Ac,{className:"h-5 w-5 text-yellow-400 mb-1 fill-yellow-400"}),o.jsx("span",{className:"text-2xl font-bold",children:n.rating.toFixed(1)}),o.jsxs("span",{className:"text-xs text-muted-foreground",children:[n.rating_count," 条评价"]})]}),o.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[o.jsx(y4,{className:"h-5 w-5 text-green-500 mb-1"}),o.jsx("span",{className:"text-2xl font-bold",children:n.likes}),o.jsx("span",{className:"text-xs text-muted-foreground",children:"点赞"})]}),o.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[o.jsx(S9,{className:"h-5 w-5 text-red-500 mb-1"}),o.jsx("span",{className:"text-2xl font-bold",children:n.dislikes}),o.jsx("span",{className:"text-xs text-muted-foreground",children:"点踩"})]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsxs(de,{variant:"outline",size:"sm",onClick:y,children:[o.jsx(y4,{className:"h-4 w-4 mr-1"}),"点赞"]}),o.jsxs(de,{variant:"outline",size:"sm",onClick:w,children:[o.jsx(S9,{className:"h-4 w-4 mr-1"}),"点踩"]}),o.jsxs(Dr,{open:h,onOpenChange:m,children:[o.jsx(Of,{asChild:!0,children:o.jsxs(de,{variant:"default",size:"sm",children:[o.jsx(Ac,{className:"h-4 w-4 mr-1"}),"评分"]})}),o.jsxs(Sr,{children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"为插件评分"}),o.jsx(ss,{children:"分享你的使用体验,帮助其他用户"})]}),o.jsxs("div",{className:"space-y-4 py-4",children:[o.jsxs("div",{className:"flex flex-col items-center gap-2",children:[o.jsx("div",{className:"flex gap-2",children:[1,2,3,4,5].map(k=>o.jsx("button",{onClick:()=>l(k),className:"focus:outline-none",children:o.jsx(Ac,{className:`h-8 w-8 transition-colors ${k<=a?"fill-yellow-400 text-yellow-400":"text-muted-foreground hover:text-yellow-300"}`})},k))}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:[a===0&&"点击星星进行评分",a===1&&"很差",a===2&&"一般",a===3&&"还行",a===4&&"不错",a===5&&"非常好"]})]}),o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium mb-2 block",children:"评论(可选)"}),o.jsx(Mr,{value:c,onChange:k=>d(k.target.value),placeholder:"分享你的使用体验...",rows:4,maxLength:500}),o.jsxs("div",{className:"text-xs text-muted-foreground mt-1 text-right",children:[c.length," / 500"]})]})]}),o.jsxs(ws,{children:[o.jsx(de,{variant:"outline",onClick:()=>m(!1),children:"取消"}),o.jsx(de,{onClick:S,disabled:a===0,children:"提交评分"})]})]})]})]}),n.recent_ratings&&n.recent_ratings.length>0&&o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"text-sm font-semibold",children:"最近评价"}),o.jsx("div",{className:"space-y-3",children:n.recent_ratings.map((k,j)=>o.jsxs("div",{className:"p-3 rounded-lg border bg-muted/50",children:[o.jsxs("div",{className:"flex items-center justify-between mb-2",children:[o.jsx("div",{className:"flex gap-1",children:[1,2,3,4,5].map(N=>o.jsx(Ac,{className:`h-3 w-3 ${N<=k.rating?"fill-yellow-400 text-yellow-400":"text-muted-foreground"}`},N))}),o.jsx("span",{className:"text-xs text-muted-foreground",children:new Date(k.created_at).toLocaleDateString()})]}),k.comment&&o.jsx("p",{className:"text-sm text-muted-foreground",children:k.comment})]},j))})]})]}):null}const Mz={"Group Management":"群组管理","Entertainment & Interaction":"娱乐互动","Utility Tools":"实用工具","Content Generation":"内容生成",Multimedia:"多媒体","External Integration":"外部集成","Data Analysis & Insights":"数据分析与洞察",Other:"其他"};function IAe(){const t=Zi(),[e,n]=b.useState(null),[r,s]=b.useState(""),[i,a]=b.useState("all"),[l,c]=b.useState("all"),[d,h]=b.useState(!0),[m,g]=b.useState([]),[x,y]=b.useState(!0),[w,S]=b.useState(null),[k,j]=b.useState(null),[N,T]=b.useState(null),[E,_]=b.useState(null),[,A]=b.useState([]),[L,P]=b.useState({}),{toast:B}=as(),$=async R=>{const ie=R.map(async V=>{try{const ee=await dX(V.id);return{id:V.id,stats:ee}}catch(ee){return console.warn(`Failed to load stats for ${V.id}:`,ee),{id:V.id,stats:null}}}),G=await Promise.all(ie),I={};G.forEach(({id:V,stats:ee})=>{ee&&(I[V]=ee)}),P(I)};b.useEffect(()=>{let R=null,ie=!1;return(async()=>{if(R=CAe(I=>{ie||(T(I),I.stage==="success"?setTimeout(()=>{ie||T(null)},2e3):I.stage==="error"&&(y(!1),S(I.error||"加载失败")))},I=>{console.error("WebSocket error:",I),ie||B({title:"WebSocket 连接失败",description:"无法实时显示加载进度",variant:"destructive"})}),await new Promise(I=>{if(!R){I();return}const V=()=>{R&&R.readyState===WebSocket.OPEN?(console.log("WebSocket connected, starting to load plugins"),I()):R&&R.readyState===WebSocket.CLOSED?(console.warn("WebSocket closed before loading plugins"),I()):setTimeout(V,100)};V()}),!ie){const I=await OAe();j(I),I.installed||B({title:"Git 未安装",description:I.error||"请先安装 Git 才能使用插件安装功能",variant:"destructive"})}if(!ie){const I=await jAe();_(I)}if(!ie)try{y(!0),S(null);const I=await kAe();if(!ie){const V=await G1();A(V);const ee=I.map(ne=>{const W=X1(ne.id,V),se=Y1(ne.id,V);return{...ne,installed:W,installed_version:se}});for(const ne of V)!ee.some(se=>se.id===ne.id)&&ne.manifest&&ee.push({id:ne.id,manifest:{manifest_version:ne.manifest.manifest_version||1,name:ne.manifest.name,version:ne.manifest.version,description:ne.manifest.description||"",author:ne.manifest.author,license:ne.manifest.license||"Unknown",host_application:ne.manifest.host_application,homepage_url:ne.manifest.homepage_url,repository_url:ne.manifest.repository_url,keywords:ne.manifest.keywords||[],categories:ne.manifest.categories||[],default_locale:ne.manifest.default_locale||"zh-CN",locales_path:ne.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!0,installed_version:ne.manifest.version,published_at:new Date().toISOString(),updated_at:new Date().toISOString()});g(ee),$(ee)}}catch(I){if(!ie){const V=I instanceof Error?I.message:"加载插件列表失败";S(V),B({title:"加载失败",description:V,variant:"destructive"})}}finally{ie||y(!1)}})(),()=>{ie=!0,R&&R.close()}},[B]);const U=R=>{if(!R.installed&&E&&!te(R))return o.jsxs(Xn,{variant:"destructive",className:"gap-1",children:[o.jsx(Uc,{className:"h-3 w-3"}),"不兼容"]});if(R.installed){const ie=R.installed_version?.trim(),G=R.manifest.version?.trim();if(ie!==G){const I=ie?.split(".").map(Number)||[0,0,0],V=G?.split(".").map(Number)||[0,0,0];for(let ee=0;ee<3;ee++){if((V[ee]||0)>(I[ee]||0))return o.jsxs(Xn,{variant:"outline",className:"gap-1 text-orange-600 border-orange-600",children:[o.jsx(Uc,{className:"h-3 w-3"}),"可更新"]});if((V[ee]||0)<(I[ee]||0))break}}return o.jsxs(Xn,{variant:"default",className:"gap-1",children:[o.jsx(Vc,{className:"h-3 w-3"}),"已安装"]})}return null},te=R=>!E||!R.manifest?.host_application?!0:NAe(R.manifest.host_application.min_version,R.manifest.host_application.max_version,E),z=R=>{if(!R.installed||!R.installed_version||!R.manifest?.version)return!1;const ie=R.installed_version.trim(),G=R.manifest.version.trim();if(ie===G)return!1;const I=ie.split(".").map(Number),V=G.split(".").map(Number);for(let ee=0;ee<3;ee++){if((V[ee]||0)>(I[ee]||0))return!0;if((V[ee]||0)<(I[ee]||0))return!1}return!1},Q=m.filter(R=>{if(!R.manifest)return console.warn("[过滤] 跳过无 manifest 的插件:",R.id),!1;const ie=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(ee=>ee.toLowerCase().includes(r.toLowerCase())),G=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i);let I=!0;l==="installed"?I=R.installed===!0:l==="updates"&&(I=R.installed===!0&&z(R));const V=!d||!E||te(R);return ie&&G&&I&&V}),F=()=>{n(null)},Y=async R=>{if(!k?.installed){B({title:"无法安装",description:"Git 未安装",variant:"destructive"});return}if(E&&!te(R)){B({title:"无法安装",description:"插件与当前麦麦版本不兼容",variant:"destructive"});return}try{await TAe(R.id,R.manifest.repository_url||"","main"),DAe(R.id).catch(G=>{console.warn("Failed to record download:",G)}),B({title:"安装成功",description:`${R.manifest.name} 已成功安装`});const ie=await G1();A(ie),g(G=>G.map(I=>{if(I.id===R.id){const V=X1(I.id,ie),ee=Y1(I.id,ie);return{...I,installed:V,installed_version:ee}}return I}))}catch(ie){B({title:"安装失败",description:ie instanceof Error?ie.message:"未知错误",variant:"destructive"})}},J=async R=>{try{await EAe(R.id),B({title:"卸载成功",description:`${R.manifest.name} 已成功卸载`});const ie=await G1();A(ie),g(G=>G.map(I=>{if(I.id===R.id){const V=X1(I.id,ie),ee=Y1(I.id,ie);return{...I,installed:V,installed_version:ee}}return I}))}catch(ie){B({title:"卸载失败",description:ie instanceof Error?ie.message:"未知错误",variant:"destructive"})}},X=async R=>{if(!k?.installed){B({title:"无法更新",description:"Git 未安装",variant:"destructive"});return}try{const ie=await _Ae(R.id,R.manifest.repository_url||"","main");B({title:"更新成功",description:`${R.manifest.name} 已从 ${ie.old_version} 更新到 ${ie.new_version}`});const G=await G1();A(G),g(I=>I.map(V=>{if(V.id===R.id){const ee=X1(V.id,G),ne=Y1(V.id,G);return{...V,installed:ee,installed_version:ne}}return V}))}catch(ie){B({title:"更新失败",description:ie instanceof Error?ie.message:"未知错误",variant:"destructive"})}};return o.jsx(gn,{className:"h-full",children:o.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件市场"}),o.jsx("p",{className:"text-muted-foreground mt-2",children:"浏览和管理麦麦的插件"})]}),o.jsxs(de,{onClick:()=>t({to:"/plugin-mirrors"}),children:[o.jsx(ste,{className:"h-4 w-4 mr-2"}),"配置镜像源"]})]}),k&&!k.installed&&o.jsxs(qt,{className:"border-orange-600 bg-orange-50 dark:bg-orange-950/20",children:[o.jsx(Fn,{children:o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx(Wa,{className:"h-5 w-5 text-orange-600"}),o.jsxs("div",{children:[o.jsx(qn,{className:"text-lg text-orange-900 dark:text-orange-100",children:"Git 未安装"}),o.jsx(ts,{className:"text-orange-800 dark:text-orange-200",children:k.error||"请先安装 Git 才能使用插件安装功能"})]})]})}),o.jsx(Gn,{children:o.jsxs("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:["您可以从 ",o.jsx("a",{href:"https://git-scm.com/downloads",target:"_blank",rel:"noopener noreferrer",className:"underline font-medium",children:"git-scm.com"})," 下载并安装 Git。 安装完成后,请重启麦麦应用。"]})})]}),o.jsx(qt,{className:"p-4",children:o.jsxs("div",{className:"flex flex-col gap-4",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[o.jsxs("div",{className:"flex-1 relative",children:[o.jsx(Ni,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(ze,{placeholder:"搜索插件...",value:r,onChange:R=>s(R.target.value),className:"pl-9"})]}),o.jsxs(Vt,{value:i,onValueChange:a,children:[o.jsx($t,{className:"w-full sm:w-[200px]",children:o.jsx(Ut,{placeholder:"选择分类"})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部分类"}),o.jsx(De,{value:"Group Management",children:"群组管理"}),o.jsx(De,{value:"Entertainment & Interaction",children:"娱乐互动"}),o.jsx(De,{value:"Utility Tools",children:"实用工具"}),o.jsx(De,{value:"Content Generation",children:"内容生成"}),o.jsx(De,{value:"Multimedia",children:"多媒体"}),o.jsx(De,{value:"External Integration",children:"外部集成"}),o.jsx(De,{value:"Data Analysis & Insights",children:"数据分析与洞察"}),o.jsx(De,{value:"Other",children:"其他"})]})]})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Oi,{id:"compatible-only",checked:d,onCheckedChange:R=>h(R===!0)}),o.jsx("label",{htmlFor:"compatible-only",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer",children:"只显示兼容当前版本的插件"})]})]})}),o.jsx(ja,{value:l,onValueChange:c,className:"w-full",children:o.jsxs(Wi,{className:"grid w-full grid-cols-3",children:[o.jsxs(Lt,{value:"all",children:["全部插件 (",m.filter(R=>{if(!R.manifest)return!1;const ie=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(V=>V.toLowerCase().includes(r.toLowerCase())),G=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i),I=!d||!E||te(R);return ie&&G&&I}).length,")"]}),o.jsxs(Lt,{value:"installed",children:["已安装 (",m.filter(R=>{if(!R.manifest)return!1;const ie=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(V=>V.toLowerCase().includes(r.toLowerCase())),G=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i),I=!d||!E||te(R);return R.installed&&ie&&G&&I}).length,")"]}),o.jsxs(Lt,{value:"updates",children:["可更新 (",m.filter(R=>{if(!R.manifest)return!1;const ie=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(V=>V.toLowerCase().includes(r.toLowerCase())),G=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i),I=!d||!E||te(R);return R.installed&&z(R)&&ie&&G&&I}).length,")"]})]})}),N&&N.stage==="loading"&&o.jsx(qt,{className:"p-4",children:o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Po,{className:"h-4 w-4 animate-spin"}),o.jsxs("span",{className:"text-sm font-medium",children:[N.operation==="fetch"&&"加载插件列表",N.operation==="install"&&`安装插件${N.plugin_id?`: ${N.plugin_id}`:""}`,N.operation==="uninstall"&&`卸载插件${N.plugin_id?`: ${N.plugin_id}`:""}`,N.operation==="update"&&`更新插件${N.plugin_id?`: ${N.plugin_id}`:""}`]})]}),o.jsxs("span",{className:"text-sm font-medium",children:[N.progress,"%"]})]}),o.jsx(Lp,{value:N.progress,className:"h-2"}),o.jsx("div",{className:"text-xs text-muted-foreground",children:N.message}),N.operation==="fetch"&&N.total_plugins>0&&o.jsxs("div",{className:"text-xs text-muted-foreground text-center",children:["已加载 ",N.loaded_plugins," / ",N.total_plugins," 个插件"]})]})}),N&&N.stage==="error"&&N.error&&o.jsx(qt,{className:"border-destructive bg-destructive/10",children:o.jsx(Fn,{children:o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx(Wa,{className:"h-5 w-5 text-destructive"}),o.jsxs("div",{children:[o.jsx(qn,{className:"text-lg text-destructive",children:"加载失败"}),o.jsx(ts,{className:"text-destructive/80",children:N.error})]})]})})}),x?o.jsxs("div",{className:"flex items-center justify-center py-12",children:[o.jsx(Po,{className:"h-8 w-8 animate-spin text-muted-foreground"}),o.jsx("span",{className:"ml-3 text-muted-foreground",children:"加载插件列表中..."})]}):w?o.jsx(qt,{className:"p-6",children:o.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[o.jsx(Wa,{className:"h-12 w-12 text-destructive mb-4"}),o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),o.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:w}),o.jsx(de,{onClick:()=>window.location.reload(),children:"重新加载"})]})}):Q.length===0?o.jsx(qt,{className:"p-6",children:o.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[o.jsx(Ni,{className:"h-12 w-12 text-muted-foreground mb-4"}),o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"未找到插件"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:r||i!=="all"?"尝试调整搜索条件或筛选器":"暂无可用插件"})]})}):o.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:Q.map(R=>o.jsxs(qt,{className:"flex flex-col hover:shadow-lg transition-shadow h-full",children:[o.jsxs(Fn,{children:[o.jsxs("div",{className:"flex items-start justify-between gap-2",children:[o.jsx(qn,{className:"text-xl",children:R.manifest?.name||R.id}),o.jsxs("div",{className:"flex flex-col gap-1",children:[R.manifest?.categories&&R.manifest.categories[0]&&o.jsx(Xn,{variant:"secondary",className:"text-xs whitespace-nowrap",children:Mz[R.manifest.categories[0]]||R.manifest.categories[0]}),U(R)]})]}),o.jsx(ts,{className:"line-clamp-2",children:R.manifest?.description||"无描述"})]}),o.jsx(Gn,{className:"flex-1",children:o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(Ku,{className:"h-4 w-4"}),o.jsx("span",{children:(L[R.id]?.downloads??R.downloads??0).toLocaleString()})]}),o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(Ac,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),o.jsx("span",{children:(L[R.id]?.rating??R.rating??0).toFixed(1)})]})]}),o.jsxs("div",{className:"flex flex-wrap gap-2",children:[R.manifest?.keywords&&R.manifest.keywords.slice(0,3).map(ie=>o.jsx(Xn,{variant:"outline",className:"text-xs",children:ie},ie)),R.manifest?.keywords&&R.manifest.keywords.length>3&&o.jsxs(Xn,{variant:"outline",className:"text-xs",children:["+",R.manifest.keywords.length-3]})]}),o.jsxs("div",{className:"text-xs text-muted-foreground pt-2 border-t space-y-1",children:[o.jsxs("div",{children:["v",R.manifest?.version||"unknown"," · ",R.manifest?.author?.name||"Unknown"]}),R.manifest?.host_application&&o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx("span",{children:"支持:"}),o.jsxs("span",{className:"font-medium",children:[R.manifest.host_application.min_version,R.manifest.host_application.max_version?` - ${R.manifest.host_application.max_version}`:" - 最新版本"]})]})]})]})}),o.jsx(lL,{className:"pt-4",children:o.jsxs("div",{className:"flex items-center justify-end gap-2 w-full",children:[o.jsx(de,{variant:"outline",size:"sm",onClick:()=>n(R),children:"查看详情"}),R.installed?z(R)?o.jsxs(de,{size:"sm",disabled:!k?.installed,title:k?.installed?void 0:"Git 未安装",onClick:()=>X(R),children:[o.jsx(Ps,{className:"h-4 w-4 mr-1"}),"更新"]}):o.jsxs(de,{variant:"destructive",size:"sm",disabled:!k?.installed,title:k?.installed?void 0:"Git 未安装",onClick:()=>J(R),children:[o.jsx(Sn,{className:"h-4 w-4 mr-1"}),"卸载"]}):o.jsxs(de,{size:"sm",disabled:!k?.installed||N?.operation==="install"||E!==null&&!te(R),title:k?.installed?E!==null&&!te(R)?`不兼容当前版本 (需要 ${R.manifest?.host_application?.min_version||"未知"}${R.manifest?.host_application?.max_version?` - ${R.manifest.host_application.max_version}`:"+"},当前 ${E?.version})`:void 0:"Git 未安装",onClick:()=>Y(R),children:[o.jsx(Ku,{className:"h-4 w-4 mr-1"}),N?.operation==="install"&&N?.plugin_id===R.id?"安装中...":"安装"]})]})})]},R.id))}),o.jsx(Dr,{open:e!==null,onOpenChange:F,children:e&&e.manifest&&o.jsxs(Sr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsx(kr,{children:o.jsxs("div",{className:"flex items-start justify-between gap-4",children:[o.jsxs("div",{className:"space-y-2 flex-1",children:[o.jsx(Or,{className:"text-2xl",children:e.manifest.name}),o.jsxs(ss,{children:["作者: ",e.manifest.author?.name||"Unknown",e.manifest.author?.url&&o.jsx("a",{href:e.manifest.author.url,target:"_blank",rel:"noopener noreferrer",className:"ml-2 text-primary hover:underline",children:o.jsx(Ah,{className:"h-3 w-3 inline"})})]})]}),o.jsxs("div",{className:"flex flex-col gap-2",children:[e.manifest.categories&&e.manifest.categories[0]&&o.jsx(Xn,{variant:"secondary",children:Mz[e.manifest.categories[0]]||e.manifest.categories[0]}),U(e)]})]})}),o.jsxs("div",{className:"space-y-6",children:[o.jsx(zAe,{pluginId:e.id}),o.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-4",children:[o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:"版本"}),o.jsxs("p",{className:"text-sm text-muted-foreground",children:["v",e.manifest?.version||"unknown"]}),e.installed&&e.installed_version&&o.jsxs("p",{className:"text-xs text-muted-foreground",children:["已安装: v",e.installed_version]})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:"下载量"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:(L[e.id]?.downloads??e.downloads??0).toLocaleString()})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:"评分"}),o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(Ac,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:[(L[e.id]?.rating??e.rating??0).toFixed(1)," (",L[e.id]?.rating_count??e.review_count??0,")"]})]})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:"许可证"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:e.manifest.license||"Unknown"})]}),o.jsxs("div",{className:"col-span-2",children:[o.jsx("p",{className:"text-sm font-medium",children:"支持版本"}),o.jsxs("p",{className:"text-sm text-muted-foreground",children:[e.manifest.host_application?.min_version||"未知",e.manifest.host_application?.max_version?` - ${e.manifest.host_application.max_version}`:" - 最新版本"]})]})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium mb-2",children:"关键词"}),o.jsx("div",{className:"flex flex-wrap gap-2",children:e.manifest.keywords&&e.manifest.keywords.map(R=>o.jsx(Xn,{variant:"outline",children:R},R))})]}),e.detailed_description&&o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium mb-2",children:"详细说明"}),o.jsx("p",{className:"text-sm text-muted-foreground whitespace-pre-line",children:e.detailed_description})]}),!e.detailed_description&&o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium mb-2",children:"说明"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:e.manifest.description||"无描述"})]}),o.jsxs("div",{className:"space-y-2",children:[e.manifest.homepage_url&&o.jsxs("div",{className:"text-sm",children:[o.jsx("span",{className:"font-medium",children:"主页: "}),o.jsx("a",{href:e.manifest.homepage_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:e.manifest.homepage_url})]}),e.manifest.repository_url&&o.jsxs("div",{className:"text-sm",children:[o.jsx("span",{className:"font-medium",children:"仓库: "}),o.jsx("a",{href:e.manifest.repository_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:e.manifest.repository_url})]})]})]}),o.jsxs(ws,{children:[e.manifest.homepage_url&&o.jsxs(de,{onClick:()=>window.open(e.manifest.homepage_url,"_blank"),children:[o.jsx(Ah,{className:"h-4 w-4 mr-2"}),"访问主页"]}),e.manifest.repository_url&&o.jsxs(de,{variant:"outline",onClick:()=>window.open(e.manifest.repository_url,"_blank"),children:[o.jsx(Ah,{className:"h-4 w-4 mr-2"}),"查看仓库"]})]})]})})]})})}function LAe(){return o.jsx(gn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件配置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理和配置已安装的插件"})]}),o.jsxs("div",{className:"flex gap-2",children:[o.jsxs(de,{variant:"outline",size:"sm",children:[o.jsx(Ps,{className:"h-4 w-4 mr-2"}),"刷新"]}),o.jsxs(de,{size:"sm",children:[o.jsx(Xu,{className:"h-4 w-4 mr-2"}),"全局设置"]})]})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-4",children:[o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"已安装插件"}),o.jsx(Gh,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:"0"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"正在加载..."})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"已启用"}),o.jsx(Vc,{className:"h-4 w-4 text-green-600"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:"0"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"运行中的插件"})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"已禁用"}),o.jsx(Uc,{className:"h-4 w-4 text-orange-600"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:"0"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"未激活的插件"})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(qn,{className:"text-sm font-medium",children:"可更新"}),o.jsx(Ps,{className:"h-4 w-4 text-blue-600"})]}),o.jsxs(Gn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:"0"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"有新版本可用"})]})]})]}),o.jsxs(qt,{children:[o.jsxs(Fn,{children:[o.jsx(qn,{children:"已安装的插件"}),o.jsx(ts,{children:"查看和管理已安装插件的配置"})]}),o.jsx(Gn,{children:o.jsxs("div",{className:"flex flex-col items-center justify-center py-12 space-y-4",children:[o.jsx(Gh,{className:"h-16 w-16 text-muted-foreground/50"}),o.jsxs("div",{className:"text-center space-y-2",children:[o.jsx("p",{className:"text-lg font-medium text-muted-foreground",children:"插件配置功能开发中"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"即将支持插件的启用/禁用、参数配置等功能"})]}),o.jsx("div",{className:"flex gap-2",children:o.jsx(de,{variant:"outline",asChild:!0,children:o.jsxs("a",{href:"/plugins",children:[o.jsx(Ah,{className:"h-4 w-4 mr-2"}),"前往插件市场"]})})})]})})]}),o.jsx(qt,{className:"border-blue-200 bg-blue-50 dark:bg-blue-950/20 dark:border-blue-900",children:o.jsx(Gn,{className:"pt-6",children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Uc,{className:"h-5 w-5 text-blue-600 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"space-y-1",children:[o.jsx("p",{className:"text-sm font-medium text-blue-900 dark:text-blue-100",children:"开发进行中"}),o.jsxs("p",{className:"text-sm text-blue-800 dark:text-blue-200",children:["插件配置功能正在积极开发中。目前您可以通过",o.jsx("strong",{children:"插件市场"}),"安装和卸载插件,完整的配置管理功能即将推出。"]})]})]})})})]})})}function BAe(){const t=Zi(),{toast:e}=as(),[n,r]=b.useState([]),[s,i]=b.useState(!0),[a,l]=b.useState(null),[c,d]=b.useState(null),[h,m]=b.useState(!1),[g,x]=b.useState(!1),[y,w]=b.useState({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),S=b.useCallback(async()=>{try{i(!0),l(null);const A=localStorage.getItem("access-token"),L=await fetch("/api/webui/plugins/mirrors",{headers:{Authorization:`Bearer ${A}`}});if(!L.ok)throw new Error("获取镜像源列表失败");const P=await L.json();r(P.mirrors||[])}catch(A){const L=A instanceof Error?A.message:"加载镜像源失败";l(L),e({title:"加载失败",description:L,variant:"destructive"})}finally{i(!1)}},[e]);b.useEffect(()=>{S()},[S]);const k=async()=>{try{const A=localStorage.getItem("access-token"),L=await fetch("/api/webui/plugins/mirrors",{method:"POST",headers:{Authorization:`Bearer ${A}`,"Content-Type":"application/json"},body:JSON.stringify(y)});if(!L.ok){const P=await L.json();throw new Error(P.detail||"添加镜像源失败")}e({title:"添加成功",description:"镜像源已添加"}),m(!1),w({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),S()}catch(A){e({title:"添加失败",description:A instanceof Error?A.message:"未知错误",variant:"destructive"})}},j=async()=>{if(c)try{const A=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${c.id}`,{method:"PUT",headers:{Authorization:`Bearer ${A}`,"Content-Type":"application/json"},body:JSON.stringify({name:y.name,raw_prefix:y.raw_prefix,clone_prefix:y.clone_prefix,enabled:y.enabled,priority:y.priority})})).ok)throw new Error("更新镜像源失败");e({title:"更新成功",description:"镜像源已更新"}),x(!1),d(null),S()}catch(A){e({title:"更新失败",description:A instanceof Error?A.message:"未知错误",variant:"destructive"})}},N=async A=>{if(confirm("确定要删除这个镜像源吗?"))try{const L=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${A}`,{method:"DELETE",headers:{Authorization:`Bearer ${L}`}})).ok)throw new Error("删除镜像源失败");e({title:"删除成功",description:"镜像源已删除"}),S()}catch(L){e({title:"删除失败",description:L instanceof Error?L.message:"未知错误",variant:"destructive"})}},T=async A=>{try{const L=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${A.id}`,{method:"PUT",headers:{Authorization:`Bearer ${L}`,"Content-Type":"application/json"},body:JSON.stringify({enabled:!A.enabled})})).ok)throw new Error("更新状态失败");S()}catch(L){e({title:"更新失败",description:L instanceof Error?L.message:"未知错误",variant:"destructive"})}},E=A=>{d(A),w({id:A.id,name:A.name,raw_prefix:A.raw_prefix,clone_prefix:A.clone_prefix,enabled:A.enabled,priority:A.priority}),x(!0)},_=async(A,L)=>{const P=L==="up"?A.priority-1:A.priority+1;if(!(P<1))try{const B=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${A.id}`,{method:"PUT",headers:{Authorization:`Bearer ${B}`,"Content-Type":"application/json"},body:JSON.stringify({priority:P})})).ok)throw new Error("更新优先级失败");S()}catch(B){e({title:"更新失败",description:B instanceof Error?B.message:"未知错误",variant:"destructive"})}};return o.jsx(gn,{className:"h-full",children:o.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsx(de,{variant:"ghost",size:"icon",onClick:()=>t({to:"/plugins"}),children:o.jsx(wI,{className:"h-5 w-5"})}),o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"镜像源配置"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理 Git 克隆和文件下载的镜像源"})]})]}),o.jsxs(de,{onClick:()=>m(!0),children:[o.jsx(Ls,{className:"h-4 w-4 mr-2"}),"添加镜像源"]})]}),s?o.jsx(qt,{className:"p-6",children:o.jsx("div",{className:"flex items-center justify-center py-8",children:o.jsx(Po,{className:"h-8 w-8 animate-spin text-primary"})})}):a?o.jsx(qt,{className:"p-6",children:o.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[o.jsx(Wa,{className:"h-12 w-12 text-destructive mb-4"}),o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),o.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:a}),o.jsx(de,{onClick:S,children:"重新加载"})]})}):o.jsxs(qt,{children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(_f,{children:[o.jsx(Af,{children:o.jsxs(Is,{children:[o.jsx(pn,{children:"状态"}),o.jsx(pn,{children:"名称"}),o.jsx(pn,{children:"ID"}),o.jsx(pn,{children:"优先级"}),o.jsx(pn,{className:"text-right",children:"操作"})]})}),o.jsx(Mf,{children:n.map(A=>o.jsxs(Is,{children:[o.jsx(Gt,{children:o.jsx(Bt,{checked:A.enabled,onCheckedChange:()=>T(A)})}),o.jsx(Gt,{children:o.jsxs("div",{children:[o.jsx("div",{className:"font-medium",children:A.name}),o.jsxs("div",{className:"text-xs text-muted-foreground mt-1",children:["Raw: ",A.raw_prefix]})]})}),o.jsx(Gt,{children:o.jsx(Xn,{variant:"outline",children:A.id})}),o.jsx(Gt,{children:o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"font-mono",children:A.priority}),o.jsxs("div",{className:"flex flex-col gap-1",children:[o.jsx(de,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>_(A,"up"),disabled:A.priority===1,children:o.jsx(P0,{className:"h-3 w-3"})}),o.jsx(de,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>_(A,"down"),children:o.jsx(nd,{className:"h-3 w-3"})})]})]})}),o.jsx(Gt,{className:"text-right",children:o.jsxs("div",{className:"flex items-center justify-end gap-2",children:[o.jsx(de,{variant:"ghost",size:"icon",onClick:()=>E(A),children:o.jsx(Yu,{className:"h-4 w-4"})}),o.jsx(de,{variant:"ghost",size:"icon",onClick:()=>N(A.id),children:o.jsx(Sn,{className:"h-4 w-4 text-destructive"})})]})})]},A.id))})]})}),o.jsx("div",{className:"md:hidden p-4 space-y-4",children:n.map(A=>o.jsx(qt,{className:"p-4",children:o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-start justify-between",children:[o.jsxs("div",{className:"flex-1",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("h3",{className:"font-semibold",children:A.name}),A.enabled&&o.jsx(Xn,{variant:"default",className:"text-xs",children:"启用"})]}),o.jsx(Xn,{variant:"outline",className:"mt-1 text-xs",children:A.id})]}),o.jsx(Bt,{checked:A.enabled,onCheckedChange:()=>T(A)})]}),o.jsxs("div",{className:"text-sm space-y-1",children:[o.jsxs("div",{className:"text-muted-foreground",children:[o.jsx("span",{className:"font-medium",children:"Raw: "}),o.jsx("span",{className:"break-all",children:A.raw_prefix})]}),o.jsxs("div",{className:"text-muted-foreground",children:[o.jsx("span",{className:"font-medium",children:"优先级: "}),o.jsx("span",{className:"font-mono",children:A.priority})]})]}),o.jsxs("div",{className:"flex items-center gap-2 pt-2 border-t",children:[o.jsxs(de,{variant:"outline",size:"sm",className:"flex-1",onClick:()=>E(A),children:[o.jsx(Yu,{className:"h-4 w-4 mr-1"}),"编辑"]}),o.jsx(de,{variant:"outline",size:"sm",onClick:()=>_(A,"up"),disabled:A.priority===1,children:o.jsx(P0,{className:"h-4 w-4"})}),o.jsx(de,{variant:"outline",size:"sm",onClick:()=>_(A,"down"),children:o.jsx(nd,{className:"h-4 w-4"})}),o.jsx(de,{variant:"destructive",size:"sm",onClick:()=>N(A.id),children:o.jsx(Sn,{className:"h-4 w-4"})})]})]})},A.id))})]}),o.jsx(Dr,{open:h,onOpenChange:m,children:o.jsxs(Sr,{className:"max-w-lg",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"添加镜像源"}),o.jsx(ss,{children:"添加新的 Git 镜像源配置"})]}),o.jsxs("div",{className:"space-y-4 py-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"add-id",children:"镜像源 ID *"}),o.jsx(ze,{id:"add-id",placeholder:"例如: my-mirror",value:y.id,onChange:A=>w({...y,id:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"add-name",children:"名称 *"}),o.jsx(ze,{id:"add-name",placeholder:"例如: 我的镜像源",value:y.name,onChange:A=>w({...y,name:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"add-raw",children:"Raw 文件前缀 *"}),o.jsx(ze,{id:"add-raw",placeholder:"https://example.com/raw",value:y.raw_prefix,onChange:A=>w({...y,raw_prefix:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"add-clone",children:"克隆前缀 *"}),o.jsx(ze,{id:"add-clone",placeholder:"https://example.com/clone",value:y.clone_prefix,onChange:A=>w({...y,clone_prefix:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"add-priority",children:"优先级"}),o.jsx(ze,{id:"add-priority",type:"number",min:"1",value:y.priority,onChange:A=>w({...y,priority:parseInt(A.target.value)||1})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"add-enabled",checked:y.enabled,onCheckedChange:A=>w({...y,enabled:A})}),o.jsx(he,{htmlFor:"add-enabled",children:"启用此镜像源"})]})]}),o.jsxs(ws,{children:[o.jsx(de,{variant:"outline",onClick:()=>m(!1),children:"取消"}),o.jsx(de,{onClick:k,children:"添加"})]})]})}),o.jsx(Dr,{open:g,onOpenChange:x,children:o.jsxs(Sr,{className:"max-w-lg",children:[o.jsxs(kr,{children:[o.jsx(Or,{children:"编辑镜像源"}),o.jsx(ss,{children:"修改镜像源配置"})]}),o.jsxs("div",{className:"space-y-4 py-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:"镜像源 ID"}),o.jsx(ze,{value:y.id,disabled:!0})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit-name",children:"名称 *"}),o.jsx(ze,{id:"edit-name",value:y.name,onChange:A=>w({...y,name:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit-raw",children:"Raw 文件前缀 *"}),o.jsx(ze,{id:"edit-raw",value:y.raw_prefix,onChange:A=>w({...y,raw_prefix:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit-clone",children:"克隆前缀 *"}),o.jsx(ze,{id:"edit-clone",value:y.clone_prefix,onChange:A=>w({...y,clone_prefix:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit-priority",children:"优先级"}),o.jsx(ze,{id:"edit-priority",type:"number",min:"1",value:y.priority,onChange:A=>w({...y,priority:parseInt(A.target.value)||1})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Bt,{id:"edit-enabled",checked:y.enabled,onCheckedChange:A=>w({...y,enabled:A})}),o.jsx(he,{htmlFor:"edit-enabled",children:"启用此镜像源"})]})]}),o.jsxs(ws,{children:[o.jsx(de,{variant:"outline",onClick:()=>x(!1),children:"取消"}),o.jsx(de,{onClick:j,children:"保存"})]})]})})]})})}function FAe(t,e=[]){let n=[];function r(i,a){const l=b.createContext(a);l.displayName=i+"Context";const c=n.length;n=[...n,a];const d=m=>{const{scope:g,children:x,...y}=m,w=g?.[t]?.[c]||l,S=b.useMemo(()=>y,Object.values(y));return o.jsx(w.Provider,{value:S,children:x})};d.displayName=i+"Provider";function h(m,g){const x=g?.[t]?.[c]||l,y=b.useContext(x);if(y)return y;if(a!==void 0)return a;throw new Error(`\`${m}\` must be used within \`${i}\``)}return[d,h]}const s=()=>{const i=n.map(a=>b.createContext(a));return function(l){const c=l?.[t]||i;return b.useMemo(()=>({[`__scope${t}`]:{...l,[t]:c}}),[l,c])}};return s.scopeName=t,[r,qAe(s,...e)]}function qAe(...t){const e=t[0];if(t.length===1)return e;const n=()=>{const r=t.map(s=>({useScope:s(),scopeName:s.scopeName}));return function(i){const a=r.reduce((l,{useScope:c,scopeName:d})=>{const m=c(i)[`__scope${d}`];return{...l,...m}},{});return b.useMemo(()=>({[`__scope${e.scopeName}`]:a}),[a])}};return n.scopeName=e.scopeName,n}var $Ae=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],f7=$Ae.reduce((t,e)=>{const n=Fy(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...l}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(c,{...l,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),HAe=gJ();function QAe(){return HAe.useSyncExternalStore(VAe,()=>!0,()=>!1)}function VAe(){return()=>{}}var m7="Avatar",[UAe]=FAe(m7),[WAe,hX]=UAe(m7),fX=b.forwardRef((t,e)=>{const{__scopeAvatar:n,...r}=t,[s,i]=b.useState("idle");return o.jsx(WAe,{scope:n,imageLoadingStatus:s,onImageLoadingStatusChange:i,children:o.jsx(f7.span,{...r,ref:e})})});fX.displayName=m7;var mX="AvatarImage",pX=b.forwardRef((t,e)=>{const{__scopeAvatar:n,src:r,onLoadingStatusChange:s=()=>{},...i}=t,a=hX(mX,n),l=GAe(r,i),c=Rs(d=>{s(d),a.onImageLoadingStatusChange(d)});return Uh(()=>{l!=="idle"&&c(l)},[l,c]),l==="loaded"?o.jsx(f7.img,{...i,ref:e,src:r}):null});pX.displayName=mX;var gX="AvatarFallback",xX=b.forwardRef((t,e)=>{const{__scopeAvatar:n,delayMs:r,...s}=t,i=hX(gX,n),[a,l]=b.useState(r===void 0);return b.useEffect(()=>{if(r!==void 0){const c=window.setTimeout(()=>l(!0),r);return()=>window.clearTimeout(c)}},[r]),a&&i.imageLoadingStatus!=="loaded"?o.jsx(f7.span,{...s,ref:e}):null});xX.displayName=gX;function Rz(t,e){return t?e?(t.src!==e&&(t.src=e),t.complete&&t.naturalWidth>0?"loaded":"loading"):"error":"idle"}function GAe(t,{referrerPolicy:e,crossOrigin:n}){const r=QAe(),s=b.useRef(null),i=r?(s.current||(s.current=new window.Image),s.current):null,[a,l]=b.useState(()=>Rz(i,t));return Uh(()=>{l(Rz(i,t))},[i,t]),Uh(()=>{const c=m=>()=>{l(m)};if(!i)return;const d=c("loaded"),h=c("error");return i.addEventListener("load",d),i.addEventListener("error",h),e&&(i.referrerPolicy=e),typeof n=="string"&&(i.crossOrigin=n),()=>{i.removeEventListener("load",d),i.removeEventListener("error",h)}},[i,n,e]),a}var vX=fX,yX=pX,bX=xX;const _v=b.forwardRef(({className:t,...e},n)=>o.jsx(vX,{ref:n,className:xe("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",t),...e}));_v.displayName=vX.displayName;const XAe=b.forwardRef(({className:t,...e},n)=>o.jsx(yX,{ref:n,className:xe("aspect-square h-full w-full",t),...e}));XAe.displayName=yX.displayName;const Av=b.forwardRef(({className:t,...e},n)=>o.jsx(bX,{ref:n,className:xe("flex h-full w-full items-center justify-center rounded-full bg-muted",t),...e}));Av.displayName=bX.displayName;function YAe(){return"webui_"+Math.random().toString(36).substr(2,9)+"_"+Date.now().toString(36)}function KAe(){const t="maibot_webui_user_id";let e=localStorage.getItem(t);return e||(e=YAe(),localStorage.setItem(t,e)),e}function ZAe(){return localStorage.getItem("maibot_webui_user_name")||"WebUI用户"}function JAe(t){localStorage.setItem("maibot_webui_user_name",t)}function eMe(){const[t,e]=b.useState([]),[n,r]=b.useState(""),[s,i]=b.useState(!1),[a,l]=b.useState(!1),[c,d]=b.useState(!1),[h,m]=b.useState(!0),[g,x]=b.useState(ZAe()),[y,w]=b.useState(!1),[S,k]=b.useState(""),[j,N]=b.useState({}),T=b.useRef(KAe()),E=b.useRef(null),_=b.useRef(null),A=b.useRef(null),L=b.useRef(0),P=b.useRef(new Set),{toast:B}=as(),$=I=>(L.current+=1,`${I}-${Date.now()}-${L.current}-${Math.random().toString(36).substr(2,9)}`),U=b.useCallback(()=>{_.current?.scrollIntoView({behavior:"smooth"})},[]);b.useEffect(()=>{U()},[t,U]);const te=b.useCallback(async()=>{m(!0);try{const I=`/api/chat/history?user_id=${T.current}&limit=50`;console.log("[Chat] 正在加载历史消息:",I);const V=await fetch(I);if(console.log("[Chat] 历史消息响应状态:",V.status,V.statusText),console.log("[Chat] 响应 Content-Type:",V.headers.get("content-type")),V.ok){const ee=await V.text();console.log("[Chat] 响应内容前100字符:",ee.substring(0,100));try{const ne=JSON.parse(ee);if(console.log("[Chat] 解析后的数据:",ne),ne.messages&&ne.messages.length>0){const W=ne.messages.map(se=>({id:se.id,type:se.type,content:se.content,timestamp:se.timestamp,sender:{name:se.sender_name||(se.is_bot?"麦麦":"WebUI用户"),user_id:se.user_id,is_bot:se.is_bot}}));e(W),console.log("[Chat] 已加载历史消息数量:",W.length),W.forEach(se=>{if(se.type==="bot"){const re=`bot-${se.content}-${Math.floor(se.timestamp*1e3)}`;P.current.add(re)}})}else console.log("[Chat] 没有历史消息")}catch(ne){console.error("[Chat] JSON 解析失败:",ne),console.error("[Chat] 原始响应内容:",ee)}}else{console.error("[Chat] 响应失败:",V.status);const ee=await V.text();console.error("[Chat] 错误响应内容:",ee.substring(0,200))}}catch(I){console.error("[Chat] 加载历史消息失败:",I)}finally{m(!1)}},[]),z=b.useCallback(()=>{if(E.current?.readyState===WebSocket.OPEN||E.current?.readyState===WebSocket.CONNECTING){console.log("WebSocket 已存在,跳过连接");return}l(!0);const V=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/api/chat/ws?user_id=${encodeURIComponent(T.current)}&user_name=${encodeURIComponent(g)}`;console.log("正在连接 WebSocket:",V);try{const ee=new WebSocket(V);E.current=ee,ee.onopen=()=>{i(!0),l(!1),console.log("WebSocket 已连接")},ee.onmessage=ne=>{try{const W=JSON.parse(ne.data);switch(W.type){case"session_info":N({session_id:W.session_id,user_id:W.user_id,user_name:W.user_name,bot_name:W.bot_name});break;case"system":e(se=>[...se,{id:$("sys"),type:"system",content:W.content||"",timestamp:W.timestamp||Date.now()/1e3}]);break;case"user_message":e(se=>[...se,{id:W.message_id||$("user"),type:"user",content:W.content||"",timestamp:W.timestamp||Date.now()/1e3,sender:W.sender}]);break;case"bot_message":{d(!1);const se=`bot-${W.content}-${Math.floor((W.timestamp||0)*1e3)}`;if(P.current.has(se)){console.log("跳过重复的机器人消息");break}if(P.current.add(se),P.current.size>100){const re=P.current.values().next().value;re&&P.current.delete(re)}e(re=>[...re,{id:$("bot"),type:"bot",content:W.content||"",timestamp:W.timestamp||Date.now()/1e3,sender:W.sender}]);break}case"typing":d(W.is_typing||!1);break;case"error":e(se=>[...se,{id:$("error"),type:"error",content:W.content||"发生错误",timestamp:W.timestamp||Date.now()/1e3}]),B({title:"错误",description:W.content,variant:"destructive"});break;case"pong":break;default:console.log("未知消息类型:",W.type)}}catch(W){console.error("解析消息失败:",W)}},ee.onclose=()=>{i(!1),l(!1),E.current=null,console.log("WebSocket 已断开"),A.current&&clearTimeout(A.current),A.current=window.setTimeout(()=>{Q.current||z()},5e3)},ee.onerror=ne=>{console.error("WebSocket 错误:",ne),l(!1)}}catch(ee){console.error("创建 WebSocket 失败:",ee),l(!1)}},[B,g]),Q=b.useRef(!1);b.useEffect(()=>{Q.current=!1,te();const I=setTimeout(()=>{Q.current||z()},100),V=setInterval(()=>{E.current?.readyState===WebSocket.OPEN&&E.current.send(JSON.stringify({type:"ping"}))},3e4);return()=>{Q.current=!0,clearTimeout(I),clearInterval(V),A.current&&(clearTimeout(A.current),A.current=null),E.current&&(E.current.close(),E.current=null)}},[z,te]);const F=b.useCallback(()=>{!n.trim()||!E.current||E.current.readyState!==WebSocket.OPEN||(E.current.send(JSON.stringify({type:"message",content:n.trim(),user_name:g})),r(""))},[n,g]),Y=I=>{I.key==="Enter"&&!I.shiftKey&&(I.preventDefault(),F())},J=()=>{k(g),w(!0)},X=()=>{const I=S.trim()||"WebUI用户";x(I),JAe(I),w(!1),E.current?.readyState===WebSocket.OPEN&&E.current.send(JSON.stringify({type:"update_nickname",user_name:I}))},R=()=>{k(""),w(!1)},ie=I=>new Date(I*1e3).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"}),G=()=>{E.current&&E.current.close(),z()};return o.jsxs("div",{className:"h-full flex flex-col",children:[o.jsx("div",{className:"shrink-0 border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:o.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:[o.jsxs("div",{className:"flex items-center justify-between gap-2",children:[o.jsxs("div",{className:"flex items-center gap-2 sm:gap-3 min-w-0",children:[o.jsx(_v,{className:"h-8 w-8 sm:h-10 sm:w-10 shrink-0",children:o.jsx(Av,{className:"bg-primary/10 text-primary",children:o.jsx(a0,{className:"h-4 w-4 sm:h-5 sm:w-5"})})}),o.jsxs("div",{className:"min-w-0",children:[o.jsx("h1",{className:"text-base sm:text-lg font-semibold truncate",children:j.bot_name||"麦麦"}),o.jsx("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:s?o.jsxs(o.Fragment,{children:[o.jsx(ite,{className:"h-3 w-3 text-green-500"}),o.jsx("span",{className:"text-green-600 dark:text-green-400",children:"已连接"})]}):a?o.jsxs(o.Fragment,{children:[o.jsx(Po,{className:"h-3 w-3 animate-spin"}),o.jsx("span",{children:"连接中..."})]}):o.jsxs(o.Fragment,{children:[o.jsx(ate,{className:"h-3 w-3 text-red-500"}),o.jsx("span",{className:"text-red-600 dark:text-red-400",children:"未连接"})]})})]})]}),o.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[h&&o.jsx(Po,{className:"h-4 w-4 animate-spin text-muted-foreground"}),o.jsx(de,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:G,disabled:a,title:"重新连接",children:o.jsx(Ps,{className:xe("h-4 w-4",a&&"animate-spin")})})]})]}),o.jsxs("div",{className:"hidden sm:flex items-center gap-2 mt-2 text-sm text-muted-foreground",children:[o.jsx(Dv,{className:"h-3 w-3"}),o.jsx("span",{children:"当前身份:"}),y?o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ze,{value:S,onChange:I=>k(I.target.value),onKeyDown:I=>{I.key==="Enter"&&X(),I.key==="Escape"&&R()},className:"h-7 w-32",placeholder:"输入昵称",autoFocus:!0}),o.jsx(de,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:X,children:"保存"}),o.jsx(de,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:R,children:"取消"})]}):o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx("span",{className:"font-medium text-foreground",children:g}),o.jsx(de,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0",onClick:J,title:"修改昵称",children:o.jsx(ote,{className:"h-3 w-3"})})]})]})]})}),o.jsx("div",{className:"flex-1 overflow-hidden",children:o.jsx(gn,{className:"h-full",children:o.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto space-y-3 sm:space-y-4",children:[t.length===0&&!h&&o.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-muted-foreground",children:[o.jsx(a0,{className:"h-12 w-12 mb-4 opacity-50"}),o.jsxs("p",{className:"text-sm",children:["开始与 ",j.bot_name||"麦麦"," 对话吧!"]})]}),t.map(I=>o.jsxs("div",{className:xe("flex gap-2 sm:gap-3",I.type==="user"&&"flex-row-reverse",I.type==="system"&&"justify-center",I.type==="error"&&"justify-center"),children:[I.type==="system"&&o.jsx("div",{className:"text-xs text-muted-foreground bg-muted/50 px-3 py-1 rounded-full max-w-[90%]",children:I.content}),I.type==="error"&&o.jsx("div",{className:"text-xs text-red-600 dark:text-red-400 bg-red-100 dark:bg-red-900/30 px-3 py-1 rounded-full max-w-[90%]",children:I.content}),(I.type==="user"||I.type==="bot")&&o.jsxs(o.Fragment,{children:[o.jsx(_v,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:o.jsx(Av,{className:xe("text-xs",I.type==="bot"?"bg-primary/10 text-primary":"bg-secondary text-secondary-foreground"),children:I.type==="bot"?o.jsx(a0,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}):o.jsx(Dv,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),o.jsxs("div",{className:xe("flex flex-col gap-1 max-w-[75%] sm:max-w-[70%]",I.type==="user"&&"items-end"),children:[o.jsxs("div",{className:"flex items-center gap-2 text-[10px] sm:text-xs text-muted-foreground",children:[o.jsx("span",{className:"hidden sm:inline",children:I.sender?.name||(I.type==="bot"?j.bot_name:g)}),o.jsx("span",{children:ie(I.timestamp)})]}),o.jsx("div",{className:xe("rounded-2xl px-3 py-2 text-sm whitespace-pre-wrap break-words",I.type==="bot"?"bg-muted rounded-tl-sm":"bg-primary text-primary-foreground rounded-tr-sm"),children:I.content})]})]})]},I.id)),c&&o.jsxs("div",{className:"flex gap-2 sm:gap-3",children:[o.jsx(_v,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:o.jsx(Av,{className:"bg-primary/10 text-primary",children:o.jsx(a0,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),o.jsx("div",{className:"bg-muted rounded-2xl rounded-tl-sm px-4 py-3",children:o.jsxs("div",{className:"flex gap-1",children:[o.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"0ms"}}),o.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"150ms"}}),o.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"300ms"}})]})})]}),o.jsx("div",{ref:_})]})})}),o.jsx("div",{className:"shrink-0 border-t bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:o.jsx("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ze,{value:n,onChange:I=>r(I.target.value),onKeyDown:Y,placeholder:s?"输入消息...":"等待连接...",disabled:!s,className:"flex-1 h-10 sm:h-10"}),o.jsx(de,{onClick:F,disabled:!s||!n.trim(),size:"icon",className:"h-10 w-10 shrink-0",children:o.jsx(lte,{className:"h-4 w-4"})})]})})})]})}const tMe=kf("pointer-events-none inline-flex select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono font-medium opacity-100",{variants:{size:{sm:"h-5 text-[10px]",default:"h-6 text-xs",lg:"h-7 text-sm"}},defaultVariants:{size:"default"}}),wX=b.forwardRef(({className:t,size:e,abbrTitle:n,children:r,...s},i)=>o.jsx("kbd",{className:xe(tMe({size:e,className:t})),ref:i,...s,children:n?o.jsx("abbr",{title:n,children:r}):r}));wX.displayName="Kbd";const nMe=[{icon:D0,title:"首页",description:"查看仪表板概览",path:"/",category:"概览"},{icon:zl,title:"麦麦主程序配置",description:"配置麦麦的核心设置",path:"/config/bot",category:"配置"},{icon:kI,title:"麦麦模型提供商配置",description:"配置模型提供商",path:"/config/modelProvider",category:"配置"},{icon:OI,title:"麦麦模型配置",description:"配置模型参数",path:"/config/model",category:"配置"},{icon:_j,title:"表情包管理",description:"管理麦麦的表情包",path:"/resource/emoji",category:"资源"},{icon:Wh,title:"表达方式管理",description:"管理麦麦的表达方式",path:"/resource/expression",category:"资源"},{icon:jI,title:"人物信息管理",description:"管理人物信息",path:"/resource/person",category:"资源"},{icon:cte,title:"统计信息",description:"查看使用统计",path:"/statistics",category:"监控"},{icon:Gh,title:"插件市场",description:"浏览和安装插件",path:"/plugins",category:"扩展"},{icon:Pv,title:"日志查看器",description:"查看系统日志",path:"/logs",category:"监控"},{icon:Xu,title:"系统设置",description:"配置系统参数",path:"/settings",category:"系统"}];function rMe({open:t,onOpenChange:e}){const[n,r]=b.useState(""),[s,i]=b.useState(0),a=Zi(),l=nMe.filter(h=>h.title.toLowerCase().includes(n.toLowerCase())||h.description.toLowerCase().includes(n.toLowerCase())||h.category.toLowerCase().includes(n.toLowerCase()));b.useEffect(()=>{t&&(r(""),i(0))},[t]);const c=b.useCallback(h=>{a({to:h}),e(!1)},[a,e]),d=b.useCallback(h=>{h.key==="ArrowDown"?(h.preventDefault(),i(m=>(m+1)%l.length)):h.key==="ArrowUp"?(h.preventDefault(),i(m=>(m-1+l.length)%l.length)):h.key==="Enter"&&l[s]&&(h.preventDefault(),c(l[s].path))},[l,s,c]);return o.jsx(Dr,{open:t,onOpenChange:e,children:o.jsxs(Sr,{className:"max-w-2xl p-0 gap-0",children:[o.jsxs(kr,{className:"px-4 pt-4 pb-0",children:[o.jsx(Or,{className:"sr-only",children:"搜索"}),o.jsxs("div",{className:"relative",children:[o.jsx(Ni,{className:"absolute left-3 top-1/2 h-5 w-5 -translate-y-1/2 text-muted-foreground"}),o.jsx(ze,{value:n,onChange:h=>{r(h.target.value),i(0)},onKeyDown:d,placeholder:"搜索页面...",className:"h-12 pl-11 text-base border-0 focus-visible:ring-0 shadow-none",autoFocus:!0})]})]}),o.jsx("div",{className:"border-t",children:o.jsx(gn,{className:"h-[400px]",children:l.length>0?o.jsx("div",{className:"p-2",children:l.map((h,m)=>{const g=h.icon;return o.jsxs("button",{onClick:()=>c(h.path),onMouseEnter:()=>i(m),className:xe("w-full flex items-center gap-3 px-3 py-2.5 rounded-md text-left transition-colors",m===s?"bg-accent text-accent-foreground":"hover:bg-accent/50"),children:[o.jsx(g,{className:"h-5 w-5 flex-shrink-0"}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("div",{className:"font-medium text-sm",children:h.title}),o.jsx("div",{className:"text-xs text-muted-foreground truncate",children:h.description})]}),o.jsx("div",{className:"text-xs text-muted-foreground px-2 py-1 bg-muted rounded",children:h.category})]},h.path)})}):o.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[o.jsx(Ni,{className:"h-12 w-12 text-muted-foreground/50 mb-4"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:n?"未找到匹配的页面":"输入关键词开始搜索"})]})})}),o.jsx("div",{className:"border-t px-4 py-3 flex items-center justify-between text-xs text-muted-foreground",children:o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsxs("span",{className:"flex items-center gap-1",children:[o.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↑"}),o.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↓"}),"导航"]}),o.jsxs("span",{className:"flex items-center gap-1",children:[o.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Enter"}),"选择"]}),o.jsxs("span",{className:"flex items-center gap-1",children:[o.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Esc"}),"关闭"]})]})})]})})}function sMe(t){const e=iMe(t),n=b.forwardRef((r,s)=>{const{children:i,...a}=r,l=b.Children.toArray(i),c=l.find(oMe);if(c){const d=c.props.children,h=l.map(m=>m===c?b.Children.count(d)>1?b.Children.only(null):b.isValidElement(d)?d.props.children:null:m);return o.jsx(e,{...a,ref:s,children:b.isValidElement(d)?b.cloneElement(d,void 0,h):null})}return o.jsx(e,{...a,ref:s,children:i})});return n.displayName=`${t}.Slot`,n}function iMe(t){const e=b.forwardRef((n,r)=>{const{children:s,...i}=n;if(b.isValidElement(s)){const a=cMe(s),l=lMe(i,s.props);return s.type!==b.Fragment&&(l.ref=r?Qc(r,a):a),b.cloneElement(s,l)}return b.Children.count(s)>1?b.Children.only(null):null});return e.displayName=`${t}.SlotClone`,e}var aMe=Symbol("radix.slottable");function oMe(t){return b.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===aMe}function lMe(t,e){const n={...e};for(const r in e){const s=t[r],i=e[r];/^on[A-Z]/.test(r)?s&&i?n[r]=(...l)=>{const c=i(...l);return s(...l),c}:s&&(n[r]=s):r==="style"?n[r]={...s,...i}:r==="className"&&(n[r]=[s,i].filter(Boolean).join(" "))}return{...t,...n}}function cMe(t){let e=Object.getOwnPropertyDescriptor(t.props,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning;return n?t.ref:(e=Object.getOwnPropertyDescriptor(t,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning,n?t.props.ref:t.props.ref||t.ref)}var cj=["Enter"," "],uMe=["ArrowDown","PageUp","Home"],SX=["ArrowUp","PageDown","End"],dMe=[...uMe,...SX],hMe={ltr:[...cj,"ArrowRight"],rtl:[...cj,"ArrowLeft"]},fMe={ltr:["ArrowLeft"],rtl:["ArrowRight"]},kg="Menu",[Np,mMe,pMe]=By(kg),[jd,kX]=Ra(kg,[pMe,vf,eb]),Og=vf(),OX=eb(),[jX,fu]=jd(kg),[gMe,jg]=jd(kg),NX=t=>{const{__scopeMenu:e,open:n=!1,children:r,dir:s,onOpenChange:i,modal:a=!0}=t,l=Og(e),[c,d]=b.useState(null),h=b.useRef(!1),m=Rs(i),g=Ep(s);return b.useEffect(()=>{const x=()=>{h.current=!0,document.addEventListener("pointerdown",y,{capture:!0,once:!0}),document.addEventListener("pointermove",y,{capture:!0,once:!0})},y=()=>h.current=!1;return document.addEventListener("keydown",x,{capture:!0}),()=>{document.removeEventListener("keydown",x,{capture:!0}),document.removeEventListener("pointerdown",y,{capture:!0}),document.removeEventListener("pointermove",y,{capture:!0})}},[]),o.jsx(Vy,{...l,children:o.jsx(jX,{scope:e,open:n,onOpenChange:m,content:c,onContentChange:d,children:o.jsx(gMe,{scope:e,onClose:b.useCallback(()=>m(!1),[m]),isUsingKeyboardRef:h,dir:g,modal:a,children:r})})})};NX.displayName=kg;var xMe="MenuAnchor",p7=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t,s=Og(n);return o.jsx(Uy,{...s,...r,ref:e})});p7.displayName=xMe;var g7="MenuPortal",[vMe,CX]=jd(g7,{forceMount:void 0}),TX=t=>{const{__scopeMenu:e,forceMount:n,children:r,container:s}=t,i=fu(g7,e);return o.jsx(vMe,{scope:e,forceMount:n,children:o.jsx(ii,{present:n||i.open,children:o.jsx(Qy,{asChild:!0,container:s,children:r})})})};TX.displayName=g7;var Ta="MenuContent",[yMe,x7]=jd(Ta),EX=b.forwardRef((t,e)=>{const n=CX(Ta,t.__scopeMenu),{forceMount:r=n.forceMount,...s}=t,i=fu(Ta,t.__scopeMenu),a=jg(Ta,t.__scopeMenu);return o.jsx(Np.Provider,{scope:t.__scopeMenu,children:o.jsx(ii,{present:r||i.open,children:o.jsx(Np.Slot,{scope:t.__scopeMenu,children:a.modal?o.jsx(bMe,{...s,ref:e}):o.jsx(wMe,{...s,ref:e})})})})}),bMe=b.forwardRef((t,e)=>{const n=fu(Ta,t.__scopeMenu),r=b.useRef(null),s=Yn(e,r);return b.useEffect(()=>{const i=r.current;if(i)return hI(i)},[]),o.jsx(v7,{...t,ref:s,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:nt(t.onFocusOutside,i=>i.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),wMe=b.forwardRef((t,e)=>{const n=fu(Ta,t.__scopeMenu);return o.jsx(v7,{...t,ref:e,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),SMe=sMe("MenuContent.ScrollLock"),v7=b.forwardRef((t,e)=>{const{__scopeMenu:n,loop:r=!1,trapFocus:s,onOpenAutoFocus:i,onCloseAutoFocus:a,disableOutsidePointerEvents:l,onEntryFocus:c,onEscapeKeyDown:d,onPointerDownOutside:h,onFocusOutside:m,onInteractOutside:g,onDismiss:x,disableOutsideScroll:y,...w}=t,S=fu(Ta,n),k=jg(Ta,n),j=Og(n),N=OX(n),T=mMe(n),[E,_]=b.useState(null),A=b.useRef(null),L=Yn(e,A,S.onContentChange),P=b.useRef(0),B=b.useRef(""),$=b.useRef(0),U=b.useRef(null),te=b.useRef("right"),z=b.useRef(0),Q=y?fI:b.Fragment,F=y?{as:SMe,allowPinchZoom:!0}:void 0,Y=X=>{const R=B.current+X,ie=T().filter(W=>!W.disabled),G=document.activeElement,I=ie.find(W=>W.ref.current===G)?.textValue,V=ie.map(W=>W.textValue),ee=DMe(V,R,I),ne=ie.find(W=>W.textValue===ee)?.ref.current;(function W(se){B.current=se,window.clearTimeout(P.current),se!==""&&(P.current=window.setTimeout(()=>W(""),1e3))})(R),ne&&setTimeout(()=>ne.focus())};b.useEffect(()=>()=>window.clearTimeout(P.current),[]),mI();const J=b.useCallback(X=>te.current===U.current?.side&&zMe(X,U.current?.area),[]);return o.jsx(yMe,{scope:n,searchRef:B,onItemEnter:b.useCallback(X=>{J(X)&&X.preventDefault()},[J]),onItemLeave:b.useCallback(X=>{J(X)||(A.current?.focus(),_(null))},[J]),onTriggerLeave:b.useCallback(X=>{J(X)&&X.preventDefault()},[J]),pointerGraceTimerRef:$,onPointerGraceIntentChange:b.useCallback(X=>{U.current=X},[]),children:o.jsx(Q,{...F,children:o.jsx(pI,{asChild:!0,trapped:s,onMountAutoFocus:nt(i,X=>{X.preventDefault(),A.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:a,children:o.jsx(Cj,{asChild:!0,disableOutsidePointerEvents:l,onEscapeKeyDown:d,onPointerDownOutside:h,onFocusOutside:m,onInteractOutside:g,onDismiss:x,children:o.jsx(mL,{asChild:!0,...N,dir:k.dir,orientation:"vertical",loop:r,currentTabStopId:E,onCurrentTabStopIdChange:_,onEntryFocus:nt(c,X=>{k.isUsingKeyboardRef.current||X.preventDefault()}),preventScrollOnEntryFocus:!0,children:o.jsx(Tj,{role:"menu","aria-orientation":"vertical","data-state":UX(S.open),"data-radix-menu-content":"",dir:k.dir,...j,...w,ref:L,style:{outline:"none",...w.style},onKeyDown:nt(w.onKeyDown,X=>{const ie=X.target.closest("[data-radix-menu-content]")===X.currentTarget,G=X.ctrlKey||X.altKey||X.metaKey,I=X.key.length===1;ie&&(X.key==="Tab"&&X.preventDefault(),!G&&I&&Y(X.key));const V=A.current;if(X.target!==V||!dMe.includes(X.key))return;X.preventDefault();const ne=T().filter(W=>!W.disabled).map(W=>W.ref.current);SX.includes(X.key)&&ne.reverse(),MMe(ne)}),onBlur:nt(t.onBlur,X=>{X.currentTarget.contains(X.target)||(window.clearTimeout(P.current),B.current="")}),onPointerMove:nt(t.onPointerMove,Cp(X=>{const R=X.target,ie=z.current!==X.clientX;if(X.currentTarget.contains(R)&&ie){const G=X.clientX>z.current?"right":"left";te.current=G,z.current=X.clientX}}))})})})})})})});EX.displayName=Ta;var kMe="MenuGroup",y7=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t;return o.jsx(xn.div,{role:"group",...r,ref:e})});y7.displayName=kMe;var OMe="MenuLabel",_X=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t;return o.jsx(xn.div,{...r,ref:e})});_X.displayName=OMe;var Py="MenuItem",Dz="menu.itemSelect",rw=b.forwardRef((t,e)=>{const{disabled:n=!1,onSelect:r,...s}=t,i=b.useRef(null),a=jg(Py,t.__scopeMenu),l=x7(Py,t.__scopeMenu),c=Yn(e,i),d=b.useRef(!1),h=()=>{const m=i.current;if(!n&&m){const g=new CustomEvent(Dz,{bubbles:!0,cancelable:!0});m.addEventListener(Dz,x=>r?.(x),{once:!0}),xI(m,g),g.defaultPrevented?d.current=!1:a.onClose()}};return o.jsx(AX,{...s,ref:c,disabled:n,onClick:nt(t.onClick,h),onPointerDown:m=>{t.onPointerDown?.(m),d.current=!0},onPointerUp:nt(t.onPointerUp,m=>{d.current||m.currentTarget?.click()}),onKeyDown:nt(t.onKeyDown,m=>{const g=l.searchRef.current!=="";n||g&&m.key===" "||cj.includes(m.key)&&(m.currentTarget.click(),m.preventDefault())})})});rw.displayName=Py;var AX=b.forwardRef((t,e)=>{const{__scopeMenu:n,disabled:r=!1,textValue:s,...i}=t,a=x7(Py,n),l=OX(n),c=b.useRef(null),d=Yn(e,c),[h,m]=b.useState(!1),[g,x]=b.useState("");return b.useEffect(()=>{const y=c.current;y&&x((y.textContent??"").trim())},[i.children]),o.jsx(Np.ItemSlot,{scope:n,disabled:r,textValue:s??g,children:o.jsx(pL,{asChild:!0,...l,focusable:!r,children:o.jsx(xn.div,{role:"menuitem","data-highlighted":h?"":void 0,"aria-disabled":r||void 0,"data-disabled":r?"":void 0,...i,ref:d,onPointerMove:nt(t.onPointerMove,Cp(y=>{r?a.onItemLeave(y):(a.onItemEnter(y),y.defaultPrevented||y.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:nt(t.onPointerLeave,Cp(y=>a.onItemLeave(y))),onFocus:nt(t.onFocus,()=>m(!0)),onBlur:nt(t.onBlur,()=>m(!1))})})})}),jMe="MenuCheckboxItem",MX=b.forwardRef((t,e)=>{const{checked:n=!1,onCheckedChange:r,...s}=t;return o.jsx(IX,{scope:t.__scopeMenu,checked:n,children:o.jsx(rw,{role:"menuitemcheckbox","aria-checked":zy(n)?"mixed":n,...s,ref:e,"data-state":S7(n),onSelect:nt(s.onSelect,()=>r?.(zy(n)?!0:!n),{checkForDefaultPrevented:!1})})})});MX.displayName=jMe;var RX="MenuRadioGroup",[NMe,CMe]=jd(RX,{value:void 0,onValueChange:()=>{}}),DX=b.forwardRef((t,e)=>{const{value:n,onValueChange:r,...s}=t,i=Rs(r);return o.jsx(NMe,{scope:t.__scopeMenu,value:n,onValueChange:i,children:o.jsx(y7,{...s,ref:e})})});DX.displayName=RX;var PX="MenuRadioItem",zX=b.forwardRef((t,e)=>{const{value:n,...r}=t,s=CMe(PX,t.__scopeMenu),i=n===s.value;return o.jsx(IX,{scope:t.__scopeMenu,checked:i,children:o.jsx(rw,{role:"menuitemradio","aria-checked":i,...r,ref:e,"data-state":S7(i),onSelect:nt(r.onSelect,()=>s.onValueChange?.(n),{checkForDefaultPrevented:!1})})})});zX.displayName=PX;var b7="MenuItemIndicator",[IX,TMe]=jd(b7,{checked:!1}),LX=b.forwardRef((t,e)=>{const{__scopeMenu:n,forceMount:r,...s}=t,i=TMe(b7,n);return o.jsx(ii,{present:r||zy(i.checked)||i.checked===!0,children:o.jsx(xn.span,{...s,ref:e,"data-state":S7(i.checked)})})});LX.displayName=b7;var EMe="MenuSeparator",BX=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t;return o.jsx(xn.div,{role:"separator","aria-orientation":"horizontal",...r,ref:e})});BX.displayName=EMe;var _Me="MenuArrow",FX=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t,s=Og(n);return o.jsx(Ej,{...s,...r,ref:e})});FX.displayName=_Me;var w7="MenuSub",[AMe,qX]=jd(w7),$X=t=>{const{__scopeMenu:e,children:n,open:r=!1,onOpenChange:s}=t,i=fu(w7,e),a=Og(e),[l,c]=b.useState(null),[d,h]=b.useState(null),m=Rs(s);return b.useEffect(()=>(i.open===!1&&m(!1),()=>m(!1)),[i.open,m]),o.jsx(Vy,{...a,children:o.jsx(jX,{scope:e,open:r,onOpenChange:m,content:d,onContentChange:h,children:o.jsx(AMe,{scope:e,contentId:Ui(),triggerId:Ui(),trigger:l,onTriggerChange:c,children:n})})})};$X.displayName=w7;var x0="MenuSubTrigger",HX=b.forwardRef((t,e)=>{const n=fu(x0,t.__scopeMenu),r=jg(x0,t.__scopeMenu),s=qX(x0,t.__scopeMenu),i=x7(x0,t.__scopeMenu),a=b.useRef(null),{pointerGraceTimerRef:l,onPointerGraceIntentChange:c}=i,d={__scopeMenu:t.__scopeMenu},h=b.useCallback(()=>{a.current&&window.clearTimeout(a.current),a.current=null},[]);return b.useEffect(()=>h,[h]),b.useEffect(()=>{const m=l.current;return()=>{window.clearTimeout(m),c(null)}},[l,c]),o.jsx(p7,{asChild:!0,...d,children:o.jsx(AX,{id:s.triggerId,"aria-haspopup":"menu","aria-expanded":n.open,"aria-controls":s.contentId,"data-state":UX(n.open),...t,ref:Qc(e,s.onTriggerChange),onClick:m=>{t.onClick?.(m),!(t.disabled||m.defaultPrevented)&&(m.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:nt(t.onPointerMove,Cp(m=>{i.onItemEnter(m),!m.defaultPrevented&&!t.disabled&&!n.open&&!a.current&&(i.onPointerGraceIntentChange(null),a.current=window.setTimeout(()=>{n.onOpenChange(!0),h()},100))})),onPointerLeave:nt(t.onPointerLeave,Cp(m=>{h();const g=n.content?.getBoundingClientRect();if(g){const x=n.content?.dataset.side,y=x==="right",w=y?-5:5,S=g[y?"left":"right"],k=g[y?"right":"left"];i.onPointerGraceIntentChange({area:[{x:m.clientX+w,y:m.clientY},{x:S,y:g.top},{x:k,y:g.top},{x:k,y:g.bottom},{x:S,y:g.bottom}],side:x}),window.clearTimeout(l.current),l.current=window.setTimeout(()=>i.onPointerGraceIntentChange(null),300)}else{if(i.onTriggerLeave(m),m.defaultPrevented)return;i.onPointerGraceIntentChange(null)}})),onKeyDown:nt(t.onKeyDown,m=>{const g=i.searchRef.current!=="";t.disabled||g&&m.key===" "||hMe[r.dir].includes(m.key)&&(n.onOpenChange(!0),n.content?.focus(),m.preventDefault())})})})});HX.displayName=x0;var QX="MenuSubContent",VX=b.forwardRef((t,e)=>{const n=CX(Ta,t.__scopeMenu),{forceMount:r=n.forceMount,...s}=t,i=fu(Ta,t.__scopeMenu),a=jg(Ta,t.__scopeMenu),l=qX(QX,t.__scopeMenu),c=b.useRef(null),d=Yn(e,c);return o.jsx(Np.Provider,{scope:t.__scopeMenu,children:o.jsx(ii,{present:r||i.open,children:o.jsx(Np.Slot,{scope:t.__scopeMenu,children:o.jsx(v7,{id:l.contentId,"aria-labelledby":l.triggerId,...s,ref:d,align:"start",side:a.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:h=>{a.isUsingKeyboardRef.current&&c.current?.focus(),h.preventDefault()},onCloseAutoFocus:h=>h.preventDefault(),onFocusOutside:nt(t.onFocusOutside,h=>{h.target!==l.trigger&&i.onOpenChange(!1)}),onEscapeKeyDown:nt(t.onEscapeKeyDown,h=>{a.onClose(),h.preventDefault()}),onKeyDown:nt(t.onKeyDown,h=>{const m=h.currentTarget.contains(h.target),g=fMe[a.dir].includes(h.key);m&&g&&(i.onOpenChange(!1),l.trigger?.focus(),h.preventDefault())})})})})})});VX.displayName=QX;function UX(t){return t?"open":"closed"}function zy(t){return t==="indeterminate"}function S7(t){return zy(t)?"indeterminate":t?"checked":"unchecked"}function MMe(t){const e=document.activeElement;for(const n of t)if(n===e||(n.focus(),document.activeElement!==e))return}function RMe(t,e){return t.map((n,r)=>t[(e+r)%t.length])}function DMe(t,e,n){const s=e.length>1&&Array.from(e).every(d=>d===e[0])?e[0]:e,i=n?t.indexOf(n):-1;let a=RMe(t,Math.max(i,0));s.length===1&&(a=a.filter(d=>d!==n));const c=a.find(d=>d.toLowerCase().startsWith(s.toLowerCase()));return c!==n?c:void 0}function PMe(t,e){const{x:n,y:r}=t;let s=!1;for(let i=0,a=e.length-1;ir!=g>r&&n<(m-d)*(r-h)/(g-h)+d&&(s=!s)}return s}function zMe(t,e){if(!e)return!1;const n={x:t.clientX,y:t.clientY};return PMe(n,e)}function Cp(t){return e=>e.pointerType==="mouse"?t(e):void 0}var IMe=NX,LMe=p7,BMe=TX,FMe=EX,qMe=y7,$Me=_X,HMe=rw,QMe=MX,VMe=DX,UMe=zX,WMe=LX,GMe=BX,XMe=FX,YMe=$X,KMe=HX,ZMe=VX,k7="ContextMenu",[JMe]=Ra(k7,[kX]),Gs=kX(),[eRe,WX]=JMe(k7),GX=t=>{const{__scopeContextMenu:e,children:n,onOpenChange:r,dir:s,modal:i=!0}=t,[a,l]=b.useState(!1),c=Gs(e),d=Rs(r),h=b.useCallback(m=>{l(m),d(m)},[d]);return o.jsx(eRe,{scope:e,open:a,onOpenChange:h,modal:i,children:o.jsx(IMe,{...c,dir:s,open:a,onOpenChange:h,modal:i,children:n})})};GX.displayName=k7;var XX="ContextMenuTrigger",YX=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,disabled:r=!1,...s}=t,i=WX(XX,n),a=Gs(n),l=b.useRef({x:0,y:0}),c=b.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...l.current})}),d=b.useRef(0),h=b.useCallback(()=>window.clearTimeout(d.current),[]),m=g=>{l.current={x:g.clientX,y:g.clientY},i.onOpenChange(!0)};return b.useEffect(()=>h,[h]),b.useEffect(()=>void(r&&h()),[r,h]),o.jsxs(o.Fragment,{children:[o.jsx(LMe,{...a,virtualRef:c}),o.jsx(xn.span,{"data-state":i.open?"open":"closed","data-disabled":r?"":void 0,...s,ref:e,style:{WebkitTouchCallout:"none",...t.style},onContextMenu:r?t.onContextMenu:nt(t.onContextMenu,g=>{h(),m(g),g.preventDefault()}),onPointerDown:r?t.onPointerDown:nt(t.onPointerDown,K1(g=>{h(),d.current=window.setTimeout(()=>m(g),700)})),onPointerMove:r?t.onPointerMove:nt(t.onPointerMove,K1(h)),onPointerCancel:r?t.onPointerCancel:nt(t.onPointerCancel,K1(h)),onPointerUp:r?t.onPointerUp:nt(t.onPointerUp,K1(h))})]})});YX.displayName=XX;var tRe="ContextMenuPortal",KX=t=>{const{__scopeContextMenu:e,...n}=t,r=Gs(e);return o.jsx(BMe,{...r,...n})};KX.displayName=tRe;var ZX="ContextMenuContent",JX=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=WX(ZX,n),i=Gs(n),a=b.useRef(!1);return o.jsx(FMe,{...i,...r,ref:e,side:"right",sideOffset:2,align:"start",onCloseAutoFocus:l=>{t.onCloseAutoFocus?.(l),!l.defaultPrevented&&a.current&&l.preventDefault(),a.current=!1},onInteractOutside:l=>{t.onInteractOutside?.(l),!l.defaultPrevented&&!s.modal&&(a.current=!0)},style:{...t.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});JX.displayName=ZX;var nRe="ContextMenuGroup",rRe=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(qMe,{...s,...r,ref:e})});rRe.displayName=nRe;var sRe="ContextMenuLabel",eY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx($Me,{...s,...r,ref:e})});eY.displayName=sRe;var iRe="ContextMenuItem",tY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(HMe,{...s,...r,ref:e})});tY.displayName=iRe;var aRe="ContextMenuCheckboxItem",nY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(QMe,{...s,...r,ref:e})});nY.displayName=aRe;var oRe="ContextMenuRadioGroup",lRe=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(VMe,{...s,...r,ref:e})});lRe.displayName=oRe;var cRe="ContextMenuRadioItem",rY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(UMe,{...s,...r,ref:e})});rY.displayName=cRe;var uRe="ContextMenuItemIndicator",sY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(WMe,{...s,...r,ref:e})});sY.displayName=uRe;var dRe="ContextMenuSeparator",iY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(GMe,{...s,...r,ref:e})});iY.displayName=dRe;var hRe="ContextMenuArrow",fRe=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(XMe,{...s,...r,ref:e})});fRe.displayName=hRe;var aY="ContextMenuSub",oY=t=>{const{__scopeContextMenu:e,children:n,onOpenChange:r,open:s,defaultOpen:i}=t,a=Gs(e),[l,c]=Xl({prop:s,defaultProp:i??!1,onChange:r,caller:aY});return o.jsx(YMe,{...a,open:l,onOpenChange:c,children:n})};oY.displayName=aY;var mRe="ContextMenuSubTrigger",lY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(KMe,{...s,...r,ref:e})});lY.displayName=mRe;var pRe="ContextMenuSubContent",cY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Gs(n);return o.jsx(ZMe,{...s,...r,ref:e,style:{...t.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});cY.displayName=pRe;function K1(t){return e=>e.pointerType!=="mouse"?t(e):void 0}var gRe=GX,xRe=YX,vRe=KX,uY=JX,dY=eY,hY=tY,fY=nY,mY=rY,pY=sY,gY=iY,yRe=oY,xY=lY,vY=cY;const bRe=gRe,wRe=xRe,SRe=yRe,yY=b.forwardRef(({className:t,inset:e,children:n,...r},s)=>o.jsxs(xY,{ref:s,className:xe("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",e&&"pl-8",t),...r,children:[n,o.jsx(yd,{className:"ml-auto h-4 w-4"})]}));yY.displayName=xY.displayName;const bY=b.forwardRef(({className:t,...e},n)=>o.jsx(vY,{ref:n,className:xe("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]",t),...e}));bY.displayName=vY.displayName;const wY=b.forwardRef(({className:t,...e},n)=>o.jsx(vRe,{children:o.jsx(uY,{ref:n,className:xe("z-50 max-h-[--radix-context-menu-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]",t),...e})}));wY.displayName=uY.displayName;const qa=b.forwardRef(({className:t,inset:e,...n},r)=>o.jsx(hY,{ref:r,className:xe("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e&&"pl-8",t),...n}));qa.displayName=hY.displayName;const kRe=b.forwardRef(({className:t,children:e,checked:n,...r},s)=>o.jsxs(fY,{ref:s,className:xe("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),checked:n,...r,children:[o.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:o.jsx(pY,{children:o.jsx(Ro,{className:"h-4 w-4"})})}),e]}));kRe.displayName=fY.displayName;const ORe=b.forwardRef(({className:t,children:e,...n},r)=>o.jsxs(mY,{ref:r,className:xe("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),...n,children:[o.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:o.jsx(pY,{children:o.jsx(ute,{className:"h-2 w-2 fill-current"})})}),e]}));ORe.displayName=mY.displayName;const jRe=b.forwardRef(({className:t,inset:e,...n},r)=>o.jsx(dY,{ref:r,className:xe("px-2 py-1.5 text-sm font-semibold text-foreground",e&&"pl-8",t),...n}));jRe.displayName=dY.displayName;const v0=b.forwardRef(({className:t,...e},n)=>o.jsx(gY,{ref:n,className:xe("-mx-1 my-1 h-px bg-border",t),...e}));v0.displayName=gY.displayName;const jh=({className:t,...e})=>o.jsx("span",{className:xe("ml-auto text-xs tracking-widest text-muted-foreground",t),...e});jh.displayName="ContextMenuShortcut";var NRe=Symbol("radix.slottable");function CRe(t){const e=({children:n})=>o.jsx(o.Fragment,{children:n});return e.displayName=`${t}.Slottable`,e.__radixId=NRe,e}var[sw]=Ra("Tooltip",[vf]),iw=vf(),SY="TooltipProvider",TRe=700,uj="tooltip.open",[ERe,O7]=sw(SY),kY=t=>{const{__scopeTooltip:e,delayDuration:n=TRe,skipDelayDuration:r=300,disableHoverableContent:s=!1,children:i}=t,a=b.useRef(!0),l=b.useRef(!1),c=b.useRef(0);return b.useEffect(()=>{const d=c.current;return()=>window.clearTimeout(d)},[]),o.jsx(ERe,{scope:e,isOpenDelayedRef:a,delayDuration:n,onOpen:b.useCallback(()=>{window.clearTimeout(c.current),a.current=!1},[]),onClose:b.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>a.current=!0,r)},[r]),isPointerInTransitRef:l,onPointerInTransitChange:b.useCallback(d=>{l.current=d},[]),disableHoverableContent:s,children:i})};kY.displayName=SY;var Tp="Tooltip",[_Re,Ng]=sw(Tp),OY=t=>{const{__scopeTooltip:e,children:n,open:r,defaultOpen:s,onOpenChange:i,disableHoverableContent:a,delayDuration:l}=t,c=O7(Tp,t.__scopeTooltip),d=iw(e),[h,m]=b.useState(null),g=Ui(),x=b.useRef(0),y=a??c.disableHoverableContent,w=l??c.delayDuration,S=b.useRef(!1),[k,j]=Xl({prop:r,defaultProp:s??!1,onChange:A=>{A?(c.onOpen(),document.dispatchEvent(new CustomEvent(uj))):c.onClose(),i?.(A)},caller:Tp}),N=b.useMemo(()=>k?S.current?"delayed-open":"instant-open":"closed",[k]),T=b.useCallback(()=>{window.clearTimeout(x.current),x.current=0,S.current=!1,j(!0)},[j]),E=b.useCallback(()=>{window.clearTimeout(x.current),x.current=0,j(!1)},[j]),_=b.useCallback(()=>{window.clearTimeout(x.current),x.current=window.setTimeout(()=>{S.current=!0,j(!0),x.current=0},w)},[w,j]);return b.useEffect(()=>()=>{x.current&&(window.clearTimeout(x.current),x.current=0)},[]),o.jsx(Vy,{...d,children:o.jsx(_Re,{scope:e,contentId:g,open:k,stateAttribute:N,trigger:h,onTriggerChange:m,onTriggerEnter:b.useCallback(()=>{c.isOpenDelayedRef.current?_():T()},[c.isOpenDelayedRef,_,T]),onTriggerLeave:b.useCallback(()=>{y?E():(window.clearTimeout(x.current),x.current=0)},[E,y]),onOpen:T,onClose:E,disableHoverableContent:y,children:n})})};OY.displayName=Tp;var dj="TooltipTrigger",jY=b.forwardRef((t,e)=>{const{__scopeTooltip:n,...r}=t,s=Ng(dj,n),i=O7(dj,n),a=iw(n),l=b.useRef(null),c=Yn(e,l,s.onTriggerChange),d=b.useRef(!1),h=b.useRef(!1),m=b.useCallback(()=>d.current=!1,[]);return b.useEffect(()=>()=>document.removeEventListener("pointerup",m),[m]),o.jsx(Uy,{asChild:!0,...a,children:o.jsx(xn.button,{"aria-describedby":s.open?s.contentId:void 0,"data-state":s.stateAttribute,...r,ref:c,onPointerMove:nt(t.onPointerMove,g=>{g.pointerType!=="touch"&&!h.current&&!i.isPointerInTransitRef.current&&(s.onTriggerEnter(),h.current=!0)}),onPointerLeave:nt(t.onPointerLeave,()=>{s.onTriggerLeave(),h.current=!1}),onPointerDown:nt(t.onPointerDown,()=>{s.open&&s.onClose(),d.current=!0,document.addEventListener("pointerup",m,{once:!0})}),onFocus:nt(t.onFocus,()=>{d.current||s.onOpen()}),onBlur:nt(t.onBlur,s.onClose),onClick:nt(t.onClick,s.onClose)})})});jY.displayName=dj;var j7="TooltipPortal",[ARe,MRe]=sw(j7,{forceMount:void 0}),NY=t=>{const{__scopeTooltip:e,forceMount:n,children:r,container:s}=t,i=Ng(j7,e);return o.jsx(ARe,{scope:e,forceMount:n,children:o.jsx(ii,{present:n||i.open,children:o.jsx(Qy,{asChild:!0,container:s,children:r})})})};NY.displayName=j7;var xf="TooltipContent",CY=b.forwardRef((t,e)=>{const n=MRe(xf,t.__scopeTooltip),{forceMount:r=n.forceMount,side:s="top",...i}=t,a=Ng(xf,t.__scopeTooltip);return o.jsx(ii,{present:r||a.open,children:a.disableHoverableContent?o.jsx(TY,{side:s,...i,ref:e}):o.jsx(RRe,{side:s,...i,ref:e})})}),RRe=b.forwardRef((t,e)=>{const n=Ng(xf,t.__scopeTooltip),r=O7(xf,t.__scopeTooltip),s=b.useRef(null),i=Yn(e,s),[a,l]=b.useState(null),{trigger:c,onClose:d}=n,h=s.current,{onPointerInTransitChange:m}=r,g=b.useCallback(()=>{l(null),m(!1)},[m]),x=b.useCallback((y,w)=>{const S=y.currentTarget,k={x:y.clientX,y:y.clientY},j=LRe(k,S.getBoundingClientRect()),N=BRe(k,j),T=FRe(w.getBoundingClientRect()),E=$Re([...N,...T]);l(E),m(!0)},[m]);return b.useEffect(()=>()=>g(),[g]),b.useEffect(()=>{if(c&&h){const y=S=>x(S,h),w=S=>x(S,c);return c.addEventListener("pointerleave",y),h.addEventListener("pointerleave",w),()=>{c.removeEventListener("pointerleave",y),h.removeEventListener("pointerleave",w)}}},[c,h,x,g]),b.useEffect(()=>{if(a){const y=w=>{const S=w.target,k={x:w.clientX,y:w.clientY},j=c?.contains(S)||h?.contains(S),N=!qRe(k,a);j?g():N&&(g(),d())};return document.addEventListener("pointermove",y),()=>document.removeEventListener("pointermove",y)}},[c,h,a,d,g]),o.jsx(TY,{...t,ref:i})}),[DRe,PRe]=sw(Tp,{isInside:!1}),zRe=CRe("TooltipContent"),TY=b.forwardRef((t,e)=>{const{__scopeTooltip:n,children:r,"aria-label":s,onEscapeKeyDown:i,onPointerDownOutside:a,...l}=t,c=Ng(xf,n),d=iw(n),{onClose:h}=c;return b.useEffect(()=>(document.addEventListener(uj,h),()=>document.removeEventListener(uj,h)),[h]),b.useEffect(()=>{if(c.trigger){const m=g=>{g.target?.contains(c.trigger)&&h()};return window.addEventListener("scroll",m,{capture:!0}),()=>window.removeEventListener("scroll",m,{capture:!0})}},[c.trigger,h]),o.jsx(Cj,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:i,onPointerDownOutside:a,onFocusOutside:m=>m.preventDefault(),onDismiss:h,children:o.jsxs(Tj,{"data-state":c.stateAttribute,...d,...l,ref:e,style:{...l.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[o.jsx(zRe,{children:r}),o.jsx(DRe,{scope:n,isInside:!0,children:o.jsx(Dee,{id:c.contentId,role:"tooltip",children:s||r})})]})})});CY.displayName=xf;var EY="TooltipArrow",IRe=b.forwardRef((t,e)=>{const{__scopeTooltip:n,...r}=t,s=iw(n);return PRe(EY,n).isInside?null:o.jsx(Ej,{...s,...r,ref:e})});IRe.displayName=EY;function LRe(t,e){const n=Math.abs(e.top-t.y),r=Math.abs(e.bottom-t.y),s=Math.abs(e.right-t.x),i=Math.abs(e.left-t.x);switch(Math.min(n,r,s,i)){case i:return"left";case s:return"right";case n:return"top";case r:return"bottom";default:throw new Error("unreachable")}}function BRe(t,e,n=5){const r=[];switch(e){case"top":r.push({x:t.x-n,y:t.y+n},{x:t.x+n,y:t.y+n});break;case"bottom":r.push({x:t.x-n,y:t.y-n},{x:t.x+n,y:t.y-n});break;case"left":r.push({x:t.x+n,y:t.y-n},{x:t.x+n,y:t.y+n});break;case"right":r.push({x:t.x-n,y:t.y-n},{x:t.x-n,y:t.y+n});break}return r}function FRe(t){const{top:e,right:n,bottom:r,left:s}=t;return[{x:s,y:e},{x:n,y:e},{x:n,y:r},{x:s,y:r}]}function qRe(t,e){const{x:n,y:r}=t;let s=!1;for(let i=0,a=e.length-1;ir!=g>r&&n<(m-d)*(r-h)/(g-h)+d&&(s=!s)}return s}function $Re(t){const e=t.slice();return e.sort((n,r)=>n.xr.x?1:n.yr.y?1:0),HRe(e)}function HRe(t){if(t.length<=1)return t.slice();const e=[];for(let r=0;r=2;){const i=e[e.length-1],a=e[e.length-2];if((i.x-a.x)*(s.y-a.y)>=(i.y-a.y)*(s.x-a.x))e.pop();else break}e.push(s)}e.pop();const n=[];for(let r=t.length-1;r>=0;r--){const s=t[r];for(;n.length>=2;){const i=n[n.length-1],a=n[n.length-2];if((i.x-a.x)*(s.y-a.y)>=(i.y-a.y)*(s.x-a.x))n.pop();else break}n.push(s)}return n.pop(),e.length===1&&n.length===1&&e[0].x===n[0].x&&e[0].y===n[0].y?e:e.concat(n)}var QRe=kY,VRe=OY,URe=jY,WRe=NY,_Y=CY;const GRe=QRe,XRe=VRe,YRe=URe,AY=b.forwardRef(({className:t,sideOffset:e=4,...n},r)=>o.jsx(WRe,{children:o.jsx(_Y,{ref:r,sideOffset:e,className:xe("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",t),...n})}));AY.displayName=_Y.displayName;function KRe({children:t}){uie();const[e,n]=b.useState(!0),[r,s]=b.useState(!1),[i,a]=b.useState(!1),{theme:l,setTheme:c}=Vj(),d=xJ(),h=Zi();b.useEffect(()=>{const w=S=>{(S.metaKey||S.ctrlKey)&&S.key==="k"&&(S.preventDefault(),a(!0))};return window.addEventListener("keydown",w),()=>window.removeEventListener("keydown",w)},[]);const m=[{title:"概览",items:[{icon:D0,label:"首页",path:"/"}]},{title:"麦麦配置编辑",items:[{icon:zl,label:"麦麦主程序配置",path:"/config/bot"},{icon:kI,label:"AI模型厂商配置",path:"/config/modelProvider",tourId:"sidebar-model-provider"},{icon:OI,label:"模型管理与分配",path:"/config/model",tourId:"sidebar-model-management"},{icon:k9,label:"麦麦适配器配置",path:"/config/adapter"}]},{title:"麦麦资源管理",items:[{icon:_j,label:"表情包管理",path:"/resource/emoji"},{icon:Wh,label:"表达方式管理",path:"/resource/expression"},{icon:jI,label:"人物信息管理",path:"/resource/person"},{icon:SI,label:"知识库图谱可视化",path:"/resource/knowledge-graph"}]},{title:"扩展与监控",items:[{icon:Gh,label:"插件市场",path:"/plugins"},{icon:k9,label:"插件配置",path:"/plugin-config"},{icon:Pv,label:"日志查看器",path:"/logs"},{icon:Wh,label:"本地聊天室",path:"/chat"}]},{title:"系统",items:[{icon:Xu,label:"系统设置",path:"/settings"}]}],x=l==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":l,y=()=>{localStorage.removeItem("access-token"),h({to:"/auth"})};return o.jsx(GRe,{delayDuration:300,children:o.jsxs("div",{className:"flex h-screen overflow-hidden",children:[o.jsxs("aside",{className:xe("fixed inset-y-0 left-0 z-50 flex flex-col border-r bg-card transition-all duration-300 lg:relative lg:z-0","w-64 lg:w-auto",e?"lg:w-64":"lg:w-16",r?"translate-x-0":"-translate-x-full lg:translate-x-0"),children:[o.jsx("div",{className:"flex h-16 items-center border-b px-4",children:o.jsxs("div",{className:xe("relative flex items-center justify-center flex-1 transition-all overflow-hidden","lg:flex-1",!e&&"lg:flex-none lg:w-8"),children:[o.jsxs("div",{className:xe("flex items-baseline gap-2",!e&&"lg:hidden"),children:[o.jsx("span",{className:"font-bold text-xl text-primary-gradient whitespace-nowrap",children:"MaiBot WebUI"}),o.jsx("span",{className:"text-xs text-primary/60 whitespace-nowrap",children:Fse()})]}),!e&&o.jsx("span",{className:"hidden lg:block font-bold text-primary-gradient text-2xl",children:"M"})]})}),o.jsx(gn,{className:xe("flex-1 overflow-x-hidden",!e&&"lg:w-16"),children:o.jsx("nav",{className:xe("p-4",!e&&"lg:p-2 lg:w-16"),children:o.jsx("ul",{className:xe("space-y-6",!e&&"lg:space-y-3 lg:w-full"),children:m.map((w,S)=>o.jsxs("li",{children:[o.jsx("div",{className:xe("px-3 h-[1.25rem]","mb-2",!e&&"lg:mb-1 lg:invisible"),children:o.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground/60 whitespace-nowrap",children:w.title})}),!e&&S>0&&o.jsx("div",{className:"hidden lg:block mb-2 border-t border-border"}),o.jsx("ul",{className:"space-y-1",children:w.items.map(k=>{const j=d({to:k.path}),N=k.icon,T=o.jsxs(o.Fragment,{children:[j&&o.jsx("div",{className:"absolute left-0 top-1/2 h-8 w-1 -translate-y-1/2 rounded-r-full bg-primary transition-opacity duration-300"}),o.jsxs("div",{className:xe("flex items-center transition-all duration-300",e?"gap-3":"gap-3 lg:gap-0"),children:[o.jsx(N,{className:xe("h-5 w-5 flex-shrink-0",j&&"text-primary"),strokeWidth:2,fill:"none"}),o.jsx("span",{className:xe("text-sm font-medium whitespace-nowrap transition-all duration-300",j&&"font-semibold",e?"opacity-100 max-w-[200px]":"opacity-100 max-w-[200px] lg:opacity-0 lg:max-w-0 lg:overflow-hidden"),children:k.label})]})]});return o.jsx("li",{className:"relative",children:o.jsxs(XRe,{children:[o.jsx(YRe,{asChild:!0,children:o.jsx(vJ,{to:k.path,"data-tour":k.tourId,className:xe("relative flex items-center rounded-lg py-2 transition-all duration-300","hover:bg-accent hover:text-accent-foreground",j?"bg-accent text-foreground":"text-muted-foreground hover:text-foreground",e?"px-3":"px-3 lg:px-0 lg:justify-center lg:w-12 lg:mx-auto"),onClick:()=>s(!1),children:T})}),!e&&o.jsx(AY,{side:"right",className:"hidden lg:block",children:o.jsx("p",{children:k.label})})]})},k.path)})})]},w.title))})})})]}),r&&o.jsx("div",{className:"fixed inset-0 z-40 bg-black/50 lg:hidden",onClick:()=>s(!1)}),o.jsxs("div",{className:"flex flex-1 flex-col overflow-hidden",children:[o.jsxs("header",{className:"flex h-16 items-center justify-between border-b bg-card/80 backdrop-blur-md px-4 sticky top-0 z-10",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsx("button",{onClick:()=>s(!r),className:"rounded-lg p-2 hover:bg-accent lg:hidden",children:o.jsx(dte,{className:"h-5 w-5"})}),o.jsx("button",{onClick:()=>n(!e),className:"hidden rounded-lg p-2 hover:bg-accent lg:block",title:e?"收起侧边栏":"展开侧边栏",children:o.jsx(vd,{className:xe("h-5 w-5 transition-transform",!e&&"rotate-180")})})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsxs("button",{onClick:()=>a(!0),className:"relative hidden md:flex items-center w-64 h-9 pl-9 pr-16 bg-background/50 border rounded-md hover:bg-accent/50 transition-colors text-left",children:[o.jsx(Ni,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),o.jsx("span",{className:"text-sm text-muted-foreground",children:"搜索..."}),o.jsxs(wX,{size:"sm",className:"absolute right-2 top-1/2 -translate-y-1/2",children:[o.jsx("span",{className:"text-xs",children:"⌘"}),"K"]})]}),o.jsx(rMe,{open:i,onOpenChange:a}),o.jsxs(de,{variant:"ghost",size:"sm",onClick:()=>window.open("https://docs.mai-mai.org","_blank"),className:"gap-2",title:"查看麦麦文档",children:[o.jsx(hte,{className:"h-4 w-4"}),o.jsx("span",{className:"hidden sm:inline",children:"麦麦文档"})]}),o.jsx("button",{onClick:w=>{jse(x==="dark"?"light":"dark",c,w)},className:"rounded-lg p-2 hover:bg-accent",title:x==="dark"?"切换到浅色模式":"切换到深色模式",children:x==="dark"?o.jsx(nk,{className:"h-5 w-5"}):o.jsx(rk,{className:"h-5 w-5"})}),o.jsx("div",{className:"h-6 w-px bg-border"}),o.jsxs(de,{variant:"ghost",size:"sm",onClick:y,className:"gap-2",title:"登出系统",children:[o.jsx(O9,{className:"h-4 w-4"}),o.jsx("span",{className:"hidden sm:inline",children:"登出"})]})]})]}),o.jsxs(bRe,{children:[o.jsx(wRe,{asChild:!0,children:o.jsx("main",{className:"flex-1 overflow-hidden bg-background",children:t})}),o.jsxs(wY,{className:"w-64",children:[o.jsxs(qa,{onClick:()=>h({to:"/"}),children:[o.jsx(D0,{className:"mr-2 h-4 w-4"}),"首页"]}),o.jsxs(qa,{onClick:()=>h({to:"/settings"}),children:[o.jsx(Xu,{className:"mr-2 h-4 w-4"}),"系统设置"]}),o.jsxs(qa,{onClick:()=>h({to:"/logs"}),children:[o.jsx(Pv,{className:"mr-2 h-4 w-4"}),"日志查看器"]}),o.jsx(v0,{}),o.jsxs(SRe,{children:[o.jsxs(yY,{children:[o.jsx(yI,{className:"mr-2 h-4 w-4"}),"切换主题"]}),o.jsxs(bY,{className:"w-48",children:[o.jsxs(qa,{onClick:()=>c("light"),disabled:l==="light",children:[o.jsx(nk,{className:"mr-2 h-4 w-4"}),"浅色",l==="light"&&o.jsx(jh,{children:"✓"})]}),o.jsxs(qa,{onClick:()=>c("dark"),disabled:l==="dark",children:[o.jsx(rk,{className:"mr-2 h-4 w-4"}),"深色",l==="dark"&&o.jsx(jh,{children:"✓"})]}),o.jsxs(qa,{onClick:()=>c("system"),disabled:l==="system",children:[o.jsx(Xu,{className:"mr-2 h-4 w-4"}),"跟随系统",l==="system"&&o.jsx(jh,{children:"✓"})]})]})]}),o.jsx(v0,{}),o.jsxs(qa,{onClick:()=>window.location.reload(),children:[o.jsx(fte,{className:"mr-2 h-4 w-4"}),"刷新页面",o.jsx(jh,{children:"⌘R"})]}),o.jsxs(qa,{onClick:()=>a(!0),children:[o.jsx(Ni,{className:"mr-2 h-4 w-4"}),"搜索",o.jsx(jh,{children:"⌘K"})]}),o.jsx(v0,{}),o.jsxs(qa,{onClick:()=>window.open("https://docs.mai-mai.org","_blank"),children:[o.jsx(Ah,{className:"mr-2 h-4 w-4"}),"麦麦文档"]}),o.jsx(v0,{}),o.jsxs(qa,{onClick:y,className:"text-destructive focus:text-destructive",children:[o.jsx(O9,{className:"mr-2 h-4 w-4"}),"登出系统"]})]})]})]})]})})}var aw="Collapsible",[ZRe]=Ra(aw),[JRe,N7]=ZRe(aw),MY=b.forwardRef((t,e)=>{const{__scopeCollapsible:n,open:r,defaultOpen:s,disabled:i,onOpenChange:a,...l}=t,[c,d]=Xl({prop:r,defaultProp:s??!1,onChange:a,caller:aw});return o.jsx(JRe,{scope:n,disabled:i,contentId:Ui(),open:c,onOpenToggle:b.useCallback(()=>d(h=>!h),[d]),children:o.jsx(xn.div,{"data-state":T7(c),"data-disabled":i?"":void 0,...l,ref:e})})});MY.displayName=aw;var RY="CollapsibleTrigger",DY=b.forwardRef((t,e)=>{const{__scopeCollapsible:n,...r}=t,s=N7(RY,n);return o.jsx(xn.button,{type:"button","aria-controls":s.contentId,"aria-expanded":s.open||!1,"data-state":T7(s.open),"data-disabled":s.disabled?"":void 0,disabled:s.disabled,...r,ref:e,onClick:nt(t.onClick,s.onOpenToggle)})});DY.displayName=RY;var C7="CollapsibleContent",PY=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=N7(C7,t.__scopeCollapsible);return o.jsx(ii,{present:n||s.open,children:({present:i})=>o.jsx(eDe,{...r,ref:e,present:i})})});PY.displayName=C7;var eDe=b.forwardRef((t,e)=>{const{__scopeCollapsible:n,present:r,children:s,...i}=t,a=N7(C7,n),[l,c]=b.useState(r),d=b.useRef(null),h=Yn(e,d),m=b.useRef(0),g=m.current,x=b.useRef(0),y=x.current,w=a.open||l,S=b.useRef(w),k=b.useRef(void 0);return b.useEffect(()=>{const j=requestAnimationFrame(()=>S.current=!1);return()=>cancelAnimationFrame(j)},[]),Uh(()=>{const j=d.current;if(j){k.current=k.current||{transitionDuration:j.style.transitionDuration,animationName:j.style.animationName},j.style.transitionDuration="0s",j.style.animationName="none";const N=j.getBoundingClientRect();m.current=N.height,x.current=N.width,S.current||(j.style.transitionDuration=k.current.transitionDuration,j.style.animationName=k.current.animationName),c(r)}},[a.open,r]),o.jsx(xn.div,{"data-state":T7(a.open),"data-disabled":a.disabled?"":void 0,id:a.contentId,hidden:!w,...i,ref:h,style:{"--radix-collapsible-content-height":g?`${g}px`:void 0,"--radix-collapsible-content-width":y?`${y}px`:void 0,...t.style},children:w&&s})});function T7(t){return t?"open":"closed"}var tDe=MY;const Pz=tDe,zz=DY,Iz=PY;function nDe(t){const e=t.split(` -`).slice(1),n=[];for(const r of e){const s=r.trim();if(!s.startsWith("at "))continue;const i=s.match(/at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?$/);i?n.push({functionName:i[1]||"",fileName:i[2],lineNumber:i[3],columnNumber:i[4],raw:s}):n.push({functionName:"",fileName:"",lineNumber:"",columnNumber:"",raw:s})}return n}function rDe({error:t,errorInfo:e}){const[n,r]=b.useState(!0),[s,i]=b.useState(!1),[a,l]=b.useState(!1),c=t.stack?nDe(t.stack):[],d=async()=>{const h=` + color: hsl(${Math.max(0,Math.min(120-120*S,120))}deg 100% 31%);`,n?.key)}return(d=n?.onChange)==null||d.call(n,s),s}return i.updateDeps=a=>{r=a},i}function yz(t,e){if(t===void 0)throw new Error("Unexpected undefined");return t}const MTe=(t,e)=>Math.abs(t-e)<1.01,RTe=(t,e,n)=>{let r;return function(...s){t.clearTimeout(r),r=t.setTimeout(()=>e.apply(this,s),n)}},bz=t=>{const{offsetWidth:e,offsetHeight:n}=t;return{width:e,height:n}},DTe=t=>t,PTe=t=>{const e=Math.max(t.startIndex-t.overscan,0),n=Math.min(t.endIndex+t.overscan,t.count-1),r=[];for(let s=e;s<=n;s++)r.push(s);return r},zTe=(t,e)=>{const n=t.scrollElement;if(!n)return;const r=t.targetWindow;if(!r)return;const s=a=>{const{width:l,height:c}=a;e({width:Math.round(l),height:Math.round(c)})};if(s(bz(n)),!r.ResizeObserver)return()=>{};const i=new r.ResizeObserver(a=>{const l=()=>{const c=a[0];if(c?.borderBoxSize){const d=c.borderBoxSize[0];if(d){s({width:d.inlineSize,height:d.blockSize});return}}s(bz(n))};t.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(l):l()});return i.observe(n,{box:"border-box"}),()=>{i.unobserve(n)}},wz={passive:!0},Sz=typeof window>"u"?!0:"onscrollend"in window,ITe=(t,e)=>{const n=t.scrollElement;if(!n)return;const r=t.targetWindow;if(!r)return;let s=0;const i=t.options.useScrollendEvent&&Sz?()=>{}:RTe(r,()=>{e(s,!1)},t.options.isScrollingResetDelay),a=h=>()=>{const{horizontal:m,isRtl:g}=t.options;s=m?n.scrollLeft*(g&&-1||1):n.scrollTop,i(),e(s,h)},l=a(!0),c=a(!1);c(),n.addEventListener("scroll",l,wz);const d=t.options.useScrollendEvent&&Sz;return d&&n.addEventListener("scrollend",c,wz),()=>{n.removeEventListener("scroll",l),d&&n.removeEventListener("scrollend",c)}},LTe=(t,e,n)=>{if(e?.borderBoxSize){const r=e.borderBoxSize[0];if(r)return Math.round(r[n.options.horizontal?"inlineSize":"blockSize"])}return t[n.options.horizontal?"offsetWidth":"offsetHeight"]},BTe=(t,{adjustments:e=0,behavior:n},r)=>{var s,i;const a=t+e;(i=(s=r.scrollElement)==null?void 0:s.scrollTo)==null||i.call(s,{[r.options.horizontal?"left":"top"]:a,behavior:n})};class FTe{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.measurementsCache=[],this.itemSizeCache=new Map,this.pendingMeasuredCacheIndexes=[],this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.observer=(()=>{let n=null;const r=()=>n||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:n=new this.targetWindow.ResizeObserver(s=>{s.forEach(i=>{const a=()=>{this._measureElement(i.target,i)};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(a):a()})}));return{disconnect:()=>{var s;(s=r())==null||s.disconnect(),n=null},observe:s=>{var i;return(i=r())==null?void 0:i.observe(s,{box:"border-box"})},unobserve:s=>{var i;return(i=r())==null?void 0:i.unobserve(s)}}})(),this.range=null,this.setOptions=n=>{Object.entries(n).forEach(([r,s])=>{typeof s>"u"&&delete n[r]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:DTe,rangeExtractor:PTe,onChange:()=>{},measureElement:LTe,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,...n}},this.notify=n=>{var r,s;(s=(r=this.options).onChange)==null||s.call(r,this,n)},this.maybeNotify=gh(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),n=>{this.notify(n)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(n=>n()),this.unsubs=[],this.observer.disconnect(),this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var n;const r=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==r){if(this.cleanup(),!r){this.maybeNotify();return}this.scrollElement=r,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((n=this.scrollElement)==null?void 0:n.window)??null,this.elementsCache.forEach(s=>{this.observer.observe(s)}),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0}),this.unsubs.push(this.options.observeElementRect(this,s=>{this.scrollRect=s,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(s,i)=>{this.scrollAdjustments=0,this.scrollDirection=i?this.getScrollOffset()this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(n,r)=>{const s=new Map,i=new Map;for(let a=r-1;a>=0;a--){const l=n[a];if(s.has(l.lane))continue;const c=i.get(l.lane);if(c==null||l.end>c.end?i.set(l.lane,l):l.enda.end===l.end?a.index-l.index:a.end-l.end)[0]:void 0},this.getMeasurementOptions=gh(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled],(n,r,s,i,a)=>(this.pendingMeasuredCacheIndexes=[],{count:n,paddingStart:r,scrollMargin:s,getItemKey:i,enabled:a}),{key:!1}),this.getMeasurements=gh(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:n,paddingStart:r,scrollMargin:s,getItemKey:i,enabled:a},l)=>{if(!a)return this.measurementsCache=[],this.itemSizeCache.clear(),[];this.measurementsCache.length===0&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(h=>{this.itemSizeCache.set(h.key,h.size)}));const c=this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[];const d=this.measurementsCache.slice(0,c);for(let h=c;hthis.options.debug}),this.calculateRange=gh(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(n,r,s,i)=>this.range=n.length>0&&r>0?qTe({measurements:n,outerSize:r,scrollOffset:s,lanes:i}):null,{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=gh(()=>{let n=null,r=null;const s=this.calculateRange();return s&&(n=s.startIndex,r=s.endIndex),this.maybeNotify.updateDeps([this.isScrolling,n,r]),[this.options.rangeExtractor,this.options.overscan,this.options.count,n,r]},(n,r,s,i,a)=>i===null||a===null?[]:n({startIndex:i,endIndex:a,overscan:r,count:s}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=n=>{const r=this.options.indexAttribute,s=n.getAttribute(r);return s?parseInt(s,10):(console.warn(`Missing attribute name '${r}={index}' on measured element.`),-1)},this._measureElement=(n,r)=>{const s=this.indexFromElement(n),i=this.measurementsCache[s];if(!i)return;const a=i.key,l=this.elementsCache.get(a);l!==n&&(l&&this.observer.unobserve(l),this.observer.observe(n),this.elementsCache.set(a,n)),n.isConnected&&this.resizeItem(s,this.options.measureElement(n,r,this))},this.resizeItem=(n,r)=>{const s=this.measurementsCache[n];if(!s)return;const i=this.itemSizeCache.get(s.key)??s.size,a=r-i;a!==0&&((this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(s,a,this):s.start{if(!n){this.elementsCache.forEach((r,s)=>{r.isConnected||(this.observer.unobserve(r),this.elementsCache.delete(s))});return}this._measureElement(n,void 0)},this.getVirtualItems=gh(()=>[this.getVirtualIndexes(),this.getMeasurements()],(n,r)=>{const s=[];for(let i=0,a=n.length;ithis.options.debug}),this.getVirtualItemForOffset=n=>{const r=this.getMeasurements();if(r.length!==0)return yz(r[FG(0,r.length-1,s=>yz(r[s]).start,n)])},this.getOffsetForAlignment=(n,r,s=0)=>{const i=this.getSize(),a=this.getScrollOffset();r==="auto"&&(r=n>=a+i?"end":"start"),r==="center"?n+=(s-i)/2:r==="end"&&(n-=i);const l=this.getTotalSize()+this.options.scrollMargin-i;return Math.max(Math.min(l,n),0)},this.getOffsetForIndex=(n,r="auto")=>{n=Math.max(0,Math.min(n,this.options.count-1));const s=this.measurementsCache[n];if(!s)return;const i=this.getSize(),a=this.getScrollOffset();if(r==="auto")if(s.end>=a+i-this.options.scrollPaddingEnd)r="end";else if(s.start<=a+this.options.scrollPaddingStart)r="start";else return[a,r];const l=r==="end"?s.end+this.options.scrollPaddingEnd:s.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(l,r,s.size),r]},this.isDynamicMode=()=>this.elementsCache.size>0,this.scrollToOffset=(n,{align:r="start",behavior:s}={})=>{s==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getOffsetForAlignment(n,r),{adjustments:void 0,behavior:s})},this.scrollToIndex=(n,{align:r="auto",behavior:s}={})=>{s==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),n=Math.max(0,Math.min(n,this.options.count-1));let i=0;const a=10,l=d=>{if(!this.targetWindow)return;const h=this.getOffsetForIndex(n,d);if(!h){console.warn("Failed to get offset for index:",n);return}const[m,g]=h;this._scrollToOffset(m,{adjustments:void 0,behavior:s}),this.targetWindow.requestAnimationFrame(()=>{const x=this.getScrollOffset(),y=this.getOffsetForIndex(n,g);if(!y){console.warn("Failed to get offset for index:",n);return}MTe(y[0],x)||c(g)})},c=d=>{this.targetWindow&&(i++,il(d)):console.warn(`Failed to scroll to index ${n} after ${a} attempts.`))};l(r)},this.scrollBy=(n,{behavior:r}={})=>{r==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getScrollOffset()+n,{adjustments:void 0,behavior:r})},this.getTotalSize=()=>{var n;const r=this.getMeasurements();let s;if(r.length===0)s=this.options.paddingStart;else if(this.options.lanes===1)s=((n=r[r.length-1])==null?void 0:n.end)??0;else{const i=Array(this.options.lanes).fill(null);let a=r.length-1;for(;a>=0&&i.some(l=>l===null);){const l=r[a];i[l.lane]===null&&(i[l.lane]=l.end),a--}s=Math.max(...i.filter(l=>l!==null))}return Math.max(s-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(n,{adjustments:r,behavior:s})=>{this.options.scrollToFn(n,{behavior:s,adjustments:r},this)},this.measure=()=>{this.itemSizeCache=new Map,this.notify(!1)},this.setOptions(e)}}const FG=(t,e,n,r)=>{for(;t<=e;){const s=(t+e)/2|0,i=n(s);if(ir)e=s-1;else return s}return t>0?t-1:0};function qTe({measurements:t,outerSize:e,scrollOffset:n,lanes:r}){const s=t.length-1,i=c=>t[c].start;if(t.length<=r)return{startIndex:0,endIndex:s};let a=FG(0,s,i,n),l=a;if(r===1)for(;l1){const c=Array(r).fill(0);for(;lh=0&&d.some(h=>h>=n);){const h=t[a];d[h.lane]=h.start,a--}a=Math.max(0,a-a%r),l=Math.min(s,l+(r-1-l%r))}return{startIndex:a,endIndex:l}}const kz=typeof document<"u"?b.useLayoutEffect:b.useEffect;function $Te(t){const e=b.useReducer(()=>({}),{})[1],n={...t,onChange:(s,i)=>{var a;i?ya.flushSync(e):e(),(a=t.onChange)==null||a.call(t,s,i)}},[r]=b.useState(()=>new FTe(n));return r.setOptions(n),kz(()=>r._didMount(),[]),kz(()=>r._willUpdate()),r}function HTe(t){return $Te({observeElementRect:zTe,observeElementOffset:ITe,scrollToFn:BTe,...t})}function QTe(t,e,n="long"){return new Intl.DateTimeFormat("en-US",{hour:"numeric",timeZone:t,timeZoneName:n}).format(e).split(/\s/g).slice(2).join(" ")}const VTe={},x0={};function Ku(t,e){try{const r=(VTe[t]||=new Intl.DateTimeFormat("en-US",{timeZone:t,timeZoneName:"longOffset"}).format)(e).split("GMT")[1];return r in x0?x0[r]:Oz(r,r.split(":"))}catch{if(t in x0)return x0[t];const n=t?.match(UTe);return n?Oz(t,n.slice(1)):NaN}}const UTe=/([+-]\d\d):?(\d\d)?/;function Oz(t,e){const n=+(e[0]||0),r=+(e[1]||0),s=+(e[2]||0)/60;return x0[t]=n*60+r>0?n*60+r+s:n*60-r-s}class Do extends Date{constructor(...e){super(),e.length>1&&typeof e[e.length-1]=="string"&&(this.timeZone=e.pop()),this.internal=new Date,isNaN(Ku(this.timeZone,this))?this.setTime(NaN):e.length?typeof e[0]=="number"&&(e.length===1||e.length===2&&typeof e[1]!="number")?this.setTime(e[0]):typeof e[0]=="string"?this.setTime(+new Date(e[0])):e[0]instanceof Date?this.setTime(+e[0]):(this.setTime(+new Date(...e)),qG(this),dj(this)):this.setTime(Date.now())}static tz(e,...n){return n.length?new Do(...n,e):new Do(Date.now(),e)}withTimeZone(e){return new Do(+this,e)}getTimezoneOffset(){const e=-Ku(this.timeZone,this);return e>0?Math.floor(e):Math.ceil(e)}setTime(e){return Date.prototype.setTime.apply(this,arguments),dj(this),+this}[Symbol.for("constructDateFrom")](e){return new Do(+new Date(e),this.timeZone)}}const jz=/^(get|set)(?!UTC)/;Object.getOwnPropertyNames(Date.prototype).forEach(t=>{if(!jz.test(t))return;const e=t.replace(jz,"$1UTC");Do.prototype[e]&&(t.startsWith("get")?Do.prototype[t]=function(){return this.internal[e]()}:(Do.prototype[t]=function(){return Date.prototype[e].apply(this.internal,arguments),WTe(this),+this},Do.prototype[e]=function(){return Date.prototype[e].apply(this,arguments),dj(this),+this}))});function dj(t){t.internal.setTime(+t),t.internal.setUTCSeconds(t.internal.getUTCSeconds()-Math.round(-Ku(t.timeZone,t)*60))}function WTe(t){Date.prototype.setFullYear.call(t,t.internal.getUTCFullYear(),t.internal.getUTCMonth(),t.internal.getUTCDate()),Date.prototype.setHours.call(t,t.internal.getUTCHours(),t.internal.getUTCMinutes(),t.internal.getUTCSeconds(),t.internal.getUTCMilliseconds()),qG(t)}function qG(t){const e=Ku(t.timeZone,t),n=e>0?Math.floor(e):Math.ceil(e),r=new Date(+t);r.setUTCHours(r.getUTCHours()-1);const s=-new Date(+t).getTimezoneOffset(),i=-new Date(+r).getTimezoneOffset(),a=s-i,l=Date.prototype.getHours.apply(t)!==t.internal.getUTCHours();a&&l&&t.internal.setUTCMinutes(t.internal.getUTCMinutes()+a);const c=s-n;c&&Date.prototype.setUTCMinutes.call(t,Date.prototype.getUTCMinutes.call(t)+c);const d=new Date(+t);d.setUTCSeconds(0);const h=s>0?d.getSeconds():(d.getSeconds()-60)%60,m=Math.round(-(Ku(t.timeZone,t)*60))%60;(m||h)&&(t.internal.setUTCSeconds(t.internal.getUTCSeconds()+m),Date.prototype.setUTCSeconds.call(t,Date.prototype.getUTCSeconds.call(t)+m+h));const g=Ku(t.timeZone,t),x=g>0?Math.floor(g):Math.ceil(g),w=-new Date(+t).getTimezoneOffset()-x,S=x!==n,k=w-c;if(S&&k){Date.prototype.setUTCMinutes.call(t,Date.prototype.getUTCMinutes.call(t)+k);const j=Ku(t.timeZone,t),N=j>0?Math.floor(j):Math.ceil(j),T=x-N;T&&(t.internal.setUTCMinutes(t.internal.getUTCMinutes()+T),Date.prototype.setUTCMinutes.call(t,Date.prototype.getUTCMinutes.call(t)+T))}}class Bs extends Do{static tz(e,...n){return n.length?new Bs(...n,e):new Bs(Date.now(),e)}toISOString(){const[e,n,r]=this.tzComponents(),s=`${e}${n}:${r}`;return this.internal.toISOString().slice(0,-1)+s}toString(){return`${this.toDateString()} ${this.toTimeString()}`}toDateString(){const[e,n,r,s]=this.internal.toUTCString().split(" ");return`${e?.slice(0,-1)} ${r} ${n} ${s}`}toTimeString(){const e=this.internal.toUTCString().split(" ")[4],[n,r,s]=this.tzComponents();return`${e} GMT${n}${r}${s} (${QTe(this.timeZone,this)})`}toLocaleString(e,n){return Date.prototype.toLocaleString.call(this,e,{...n,timeZone:n?.timeZone||this.timeZone})}toLocaleDateString(e,n){return Date.prototype.toLocaleDateString.call(this,e,{...n,timeZone:n?.timeZone||this.timeZone})}toLocaleTimeString(e,n){return Date.prototype.toLocaleTimeString.call(this,e,{...n,timeZone:n?.timeZone||this.timeZone})}tzComponents(){const e=this.getTimezoneOffset(),n=e>0?"-":"+",r=String(Math.floor(Math.abs(e)/60)).padStart(2,"0"),s=String(Math.abs(e)%60).padStart(2,"0");return[n,r,s]}withTimeZone(e){return new Bs(+this,e)}[Symbol.for("constructDateFrom")](e){return new Bs(+new Date(e),this.timeZone)}}const $G=6048e5,GTe=864e5,Nz=Symbol.for("constructDateFrom");function as(t,e){return typeof t=="function"?t(e):t&&typeof t=="object"&&Nz in t?t[Nz](e):t instanceof Date?new t.constructor(e):new Date(e)}function ir(t,e){return as(e||t,t)}function HG(t,e,n){const r=ir(t,n?.in);return isNaN(e)?as(t,NaN):(e&&r.setDate(r.getDate()+e),r)}function QG(t,e,n){const r=ir(t,n?.in);if(isNaN(e))return as(t,NaN);if(!e)return r;const s=r.getDate(),i=as(t,r.getTime());i.setMonth(r.getMonth()+e+1,0);const a=i.getDate();return s>=a?i:(r.setFullYear(i.getFullYear(),i.getMonth(),s),r)}let XTe={};function Og(){return XTe}function ou(t,e){const n=Og(),r=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,s=ir(t,e?.in),i=s.getDay(),a=(i=i.getTime()?r+1:n.getTime()>=l.getTime()?r:r-1}function Cz(t){const e=ir(t),n=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return n.setUTCFullYear(e.getFullYear()),+t-+n}function Nd(t,...e){const n=as.bind(null,t||e.find(r=>typeof r=="object"));return e.map(n)}function Ep(t,e){const n=ir(t,e?.in);return n.setHours(0,0,0,0),n}function UG(t,e,n){const[r,s]=Nd(n?.in,t,e),i=Ep(r),a=Ep(s),l=+i-Cz(i),c=+a-Cz(a);return Math.round((l-c)/GTe)}function YTe(t,e){const n=VG(t,e),r=as(t,0);return r.setFullYear(n,0,4),r.setHours(0,0,0,0),Tp(r)}function KTe(t,e,n){return HG(t,e*7,n)}function ZTe(t,e,n){return QG(t,e*12,n)}function JTe(t,e){let n,r=e?.in;return t.forEach(s=>{!r&&typeof s=="object"&&(r=as.bind(null,s));const i=ir(s,r);(!n||n{!r&&typeof s=="object"&&(r=as.bind(null,s));const i=ir(s,r);(!n||n>i||isNaN(+i))&&(n=i)}),as(r,n||NaN)}function t9e(t,e,n){const[r,s]=Nd(n?.in,t,e);return+Ep(r)==+Ep(s)}function WG(t){return t instanceof Date||typeof t=="object"&&Object.prototype.toString.call(t)==="[object Date]"}function n9e(t){return!(!WG(t)&&typeof t!="number"||isNaN(+ir(t)))}function r9e(t,e,n){const[r,s]=Nd(n?.in,t,e),i=r.getFullYear()-s.getFullYear(),a=r.getMonth()-s.getMonth();return i*12+a}function s9e(t,e){const n=ir(t,e?.in),r=n.getMonth();return n.setFullYear(n.getFullYear(),r+1,0),n.setHours(23,59,59,999),n}function GG(t,e){const[n,r]=Nd(t,e.start,e.end);return{start:n,end:r}}function i9e(t,e){const{start:n,end:r}=GG(e?.in,t);let s=+n>+r;const i=s?+n:+r,a=s?r:n;a.setHours(0,0,0,0),a.setDate(1);let l=1;const c=[];for(;+a<=i;)c.push(as(n,a)),a.setMonth(a.getMonth()+l);return s?c.reverse():c}function a9e(t,e){const n=ir(t,e?.in);return n.setDate(1),n.setHours(0,0,0,0),n}function o9e(t,e){const n=ir(t,e?.in),r=n.getFullYear();return n.setFullYear(r+1,0,0),n.setHours(23,59,59,999),n}function XG(t,e){const n=ir(t,e?.in);return n.setFullYear(n.getFullYear(),0,1),n.setHours(0,0,0,0),n}function l9e(t,e){const{start:n,end:r}=GG(e?.in,t);let s=+n>+r;const i=s?+n:+r,a=s?r:n;a.setHours(0,0,0,0),a.setMonth(0,1);let l=1;const c=[];for(;+a<=i;)c.push(as(n,a)),a.setFullYear(a.getFullYear()+l);return s?c.reverse():c}function YG(t,e){const n=Og(),r=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,s=ir(t,e?.in),i=s.getDay(),a=(i{let r;const s=u9e[t];return typeof s=="string"?r=s:e===1?r=s.one:r=s.other.replace("{{count}}",e.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"in "+r:r+" ago":r};function Uh(t){return(e={})=>{const n=e.width?String(e.width):t.defaultWidth;return t.formats[n]||t.formats[t.defaultWidth]}}const h9e={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},f9e={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},m9e={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},p9e={date:Uh({formats:h9e,defaultWidth:"full"}),time:Uh({formats:f9e,defaultWidth:"full"}),dateTime:Uh({formats:m9e,defaultWidth:"full"})},g9e={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},x9e=(t,e,n,r)=>g9e[t];function jo(t){return(e,n)=>{const r=n?.context?String(n.context):"standalone";let s;if(r==="formatting"&&t.formattingValues){const a=t.defaultFormattingWidth||t.defaultWidth,l=n?.width?String(n.width):a;s=t.formattingValues[l]||t.formattingValues[a]}else{const a=t.defaultWidth,l=n?.width?String(n.width):t.defaultWidth;s=t.values[l]||t.values[a]}const i=t.argumentCallback?t.argumentCallback(e):e;return s[i]}}const v9e={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},y9e={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},b9e={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},w9e={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},S9e={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},k9e={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},O9e=(t,e)=>{const n=Number(t),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},j9e={ordinalNumber:O9e,era:jo({values:v9e,defaultWidth:"wide"}),quarter:jo({values:y9e,defaultWidth:"wide",argumentCallback:t=>t-1}),month:jo({values:b9e,defaultWidth:"wide"}),day:jo({values:w9e,defaultWidth:"wide"}),dayPeriod:jo({values:S9e,defaultWidth:"wide",formattingValues:k9e,defaultFormattingWidth:"wide"})};function No(t){return(e,n={})=>{const r=n.width,s=r&&t.matchPatterns[r]||t.matchPatterns[t.defaultMatchWidth],i=e.match(s);if(!i)return null;const a=i[0],l=r&&t.parsePatterns[r]||t.parsePatterns[t.defaultParseWidth],c=Array.isArray(l)?C9e(l,m=>m.test(a)):N9e(l,m=>m.test(a));let d;d=t.valueCallback?t.valueCallback(c):c,d=n.valueCallback?n.valueCallback(d):d;const h=e.slice(a.length);return{value:d,rest:h}}}function N9e(t,e){for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&e(t[n]))return n}function C9e(t,e){for(let n=0;n{const r=e.match(t.matchPattern);if(!r)return null;const s=r[0],i=e.match(t.parsePattern);if(!i)return null;let a=t.valueCallback?t.valueCallback(i[0]):i[0];a=n.valueCallback?n.valueCallback(a):a;const l=e.slice(s.length);return{value:a,rest:l}}}const T9e=/^(\d+)(th|st|nd|rd)?/i,E9e=/\d+/i,_9e={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},A9e={any:[/^b/i,/^(a|c)/i]},M9e={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},R9e={any:[/1/i,/2/i,/3/i,/4/i]},D9e={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},P9e={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},z9e={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},I9e={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},L9e={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},B9e={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},F9e={ordinalNumber:KG({matchPattern:T9e,parsePattern:E9e,valueCallback:t=>parseInt(t,10)}),era:No({matchPatterns:_9e,defaultMatchWidth:"wide",parsePatterns:A9e,defaultParseWidth:"any"}),quarter:No({matchPatterns:M9e,defaultMatchWidth:"wide",parsePatterns:R9e,defaultParseWidth:"any",valueCallback:t=>t+1}),month:No({matchPatterns:D9e,defaultMatchWidth:"wide",parsePatterns:P9e,defaultParseWidth:"any"}),day:No({matchPatterns:z9e,defaultMatchWidth:"wide",parsePatterns:I9e,defaultParseWidth:"any"}),dayPeriod:No({matchPatterns:L9e,defaultMatchWidth:"any",parsePatterns:B9e,defaultParseWidth:"any"})},p7={code:"en-US",formatDistance:d9e,formatLong:p9e,formatRelative:x9e,localize:j9e,match:F9e,options:{weekStartsOn:0,firstWeekContainsDate:1}};function q9e(t,e){const n=ir(t,e?.in);return UG(n,XG(n))+1}function ZG(t,e){const n=ir(t,e?.in),r=+Tp(n)-+YTe(n);return Math.round(r/$G)+1}function JG(t,e){const n=ir(t,e?.in),r=n.getFullYear(),s=Og(),i=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??s.firstWeekContainsDate??s.locale?.options?.firstWeekContainsDate??1,a=as(e?.in||t,0);a.setFullYear(r+1,0,i),a.setHours(0,0,0,0);const l=ou(a,e),c=as(e?.in||t,0);c.setFullYear(r,0,i),c.setHours(0,0,0,0);const d=ou(c,e);return+n>=+l?r+1:+n>=+d?r:r-1}function $9e(t,e){const n=Og(),r=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,s=JG(t,e),i=as(e?.in||t,0);return i.setFullYear(s,0,r),i.setHours(0,0,0,0),ou(i,e)}function eX(t,e){const n=ir(t,e?.in),r=+ou(n,e)-+$9e(n,e);return Math.round(r/$G)+1}function Jn(t,e){const n=t<0?"-":"",r=Math.abs(t).toString().padStart(e,"0");return n+r}const Rc={y(t,e){const n=t.getFullYear(),r=n>0?n:1-n;return Jn(e==="yy"?r%100:r,e.length)},M(t,e){const n=t.getMonth();return e==="M"?String(n+1):Jn(n+1,2)},d(t,e){return Jn(t.getDate(),e.length)},a(t,e){const n=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];case"aaaa":default:return n==="am"?"a.m.":"p.m."}},h(t,e){return Jn(t.getHours()%12||12,e.length)},H(t,e){return Jn(t.getHours(),e.length)},m(t,e){return Jn(t.getMinutes(),e.length)},s(t,e){return Jn(t.getSeconds(),e.length)},S(t,e){const n=e.length,r=t.getMilliseconds(),s=Math.trunc(r*Math.pow(10,n-3));return Jn(s,e.length)}},xh={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},Tz={G:function(t,e,n){const r=t.getFullYear()>0?1:0;switch(e){case"G":case"GG":case"GGG":return n.era(r,{width:"abbreviated"});case"GGGGG":return n.era(r,{width:"narrow"});case"GGGG":default:return n.era(r,{width:"wide"})}},y:function(t,e,n){if(e==="yo"){const r=t.getFullYear(),s=r>0?r:1-r;return n.ordinalNumber(s,{unit:"year"})}return Rc.y(t,e)},Y:function(t,e,n,r){const s=JG(t,r),i=s>0?s:1-s;if(e==="YY"){const a=i%100;return Jn(a,2)}return e==="Yo"?n.ordinalNumber(i,{unit:"year"}):Jn(i,e.length)},R:function(t,e){const n=VG(t);return Jn(n,e.length)},u:function(t,e){const n=t.getFullYear();return Jn(n,e.length)},Q:function(t,e,n){const r=Math.ceil((t.getMonth()+1)/3);switch(e){case"Q":return String(r);case"QQ":return Jn(r,2);case"Qo":return n.ordinalNumber(r,{unit:"quarter"});case"QQQ":return n.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(r,{width:"narrow",context:"formatting"});case"QQQQ":default:return n.quarter(r,{width:"wide",context:"formatting"})}},q:function(t,e,n){const r=Math.ceil((t.getMonth()+1)/3);switch(e){case"q":return String(r);case"qq":return Jn(r,2);case"qo":return n.ordinalNumber(r,{unit:"quarter"});case"qqq":return n.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(r,{width:"narrow",context:"standalone"});case"qqqq":default:return n.quarter(r,{width:"wide",context:"standalone"})}},M:function(t,e,n){const r=t.getMonth();switch(e){case"M":case"MM":return Rc.M(t,e);case"Mo":return n.ordinalNumber(r+1,{unit:"month"});case"MMM":return n.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(r,{width:"narrow",context:"formatting"});case"MMMM":default:return n.month(r,{width:"wide",context:"formatting"})}},L:function(t,e,n){const r=t.getMonth();switch(e){case"L":return String(r+1);case"LL":return Jn(r+1,2);case"Lo":return n.ordinalNumber(r+1,{unit:"month"});case"LLL":return n.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(r,{width:"narrow",context:"standalone"});case"LLLL":default:return n.month(r,{width:"wide",context:"standalone"})}},w:function(t,e,n,r){const s=eX(t,r);return e==="wo"?n.ordinalNumber(s,{unit:"week"}):Jn(s,e.length)},I:function(t,e,n){const r=ZG(t);return e==="Io"?n.ordinalNumber(r,{unit:"week"}):Jn(r,e.length)},d:function(t,e,n){return e==="do"?n.ordinalNumber(t.getDate(),{unit:"date"}):Rc.d(t,e)},D:function(t,e,n){const r=q9e(t);return e==="Do"?n.ordinalNumber(r,{unit:"dayOfYear"}):Jn(r,e.length)},E:function(t,e,n){const r=t.getDay();switch(e){case"E":case"EE":case"EEE":return n.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(r,{width:"short",context:"formatting"});case"EEEE":default:return n.day(r,{width:"wide",context:"formatting"})}},e:function(t,e,n,r){const s=t.getDay(),i=(s-r.weekStartsOn+8)%7||7;switch(e){case"e":return String(i);case"ee":return Jn(i,2);case"eo":return n.ordinalNumber(i,{unit:"day"});case"eee":return n.day(s,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(s,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(s,{width:"short",context:"formatting"});case"eeee":default:return n.day(s,{width:"wide",context:"formatting"})}},c:function(t,e,n,r){const s=t.getDay(),i=(s-r.weekStartsOn+8)%7||7;switch(e){case"c":return String(i);case"cc":return Jn(i,e.length);case"co":return n.ordinalNumber(i,{unit:"day"});case"ccc":return n.day(s,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(s,{width:"narrow",context:"standalone"});case"cccccc":return n.day(s,{width:"short",context:"standalone"});case"cccc":default:return n.day(s,{width:"wide",context:"standalone"})}},i:function(t,e,n){const r=t.getDay(),s=r===0?7:r;switch(e){case"i":return String(s);case"ii":return Jn(s,e.length);case"io":return n.ordinalNumber(s,{unit:"day"});case"iii":return n.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(r,{width:"short",context:"formatting"});case"iiii":default:return n.day(r,{width:"wide",context:"formatting"})}},a:function(t,e,n){const s=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"aaaa":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},b:function(t,e,n){const r=t.getHours();let s;switch(r===12?s=xh.noon:r===0?s=xh.midnight:s=r/12>=1?"pm":"am",e){case"b":case"bb":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"bbbb":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},B:function(t,e,n){const r=t.getHours();let s;switch(r>=17?s=xh.evening:r>=12?s=xh.afternoon:r>=4?s=xh.morning:s=xh.night,e){case"B":case"BB":case"BBB":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"BBBB":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},h:function(t,e,n){if(e==="ho"){let r=t.getHours()%12;return r===0&&(r=12),n.ordinalNumber(r,{unit:"hour"})}return Rc.h(t,e)},H:function(t,e,n){return e==="Ho"?n.ordinalNumber(t.getHours(),{unit:"hour"}):Rc.H(t,e)},K:function(t,e,n){const r=t.getHours()%12;return e==="Ko"?n.ordinalNumber(r,{unit:"hour"}):Jn(r,e.length)},k:function(t,e,n){let r=t.getHours();return r===0&&(r=24),e==="ko"?n.ordinalNumber(r,{unit:"hour"}):Jn(r,e.length)},m:function(t,e,n){return e==="mo"?n.ordinalNumber(t.getMinutes(),{unit:"minute"}):Rc.m(t,e)},s:function(t,e,n){return e==="so"?n.ordinalNumber(t.getSeconds(),{unit:"second"}):Rc.s(t,e)},S:function(t,e){return Rc.S(t,e)},X:function(t,e,n){const r=t.getTimezoneOffset();if(r===0)return"Z";switch(e){case"X":return _z(r);case"XXXX":case"XX":return $u(r);case"XXXXX":case"XXX":default:return $u(r,":")}},x:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"x":return _z(r);case"xxxx":case"xx":return $u(r);case"xxxxx":case"xxx":default:return $u(r,":")}},O:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"O":case"OO":case"OOO":return"GMT"+Ez(r,":");case"OOOO":default:return"GMT"+$u(r,":")}},z:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"z":case"zz":case"zzz":return"GMT"+Ez(r,":");case"zzzz":default:return"GMT"+$u(r,":")}},t:function(t,e,n){const r=Math.trunc(+t/1e3);return Jn(r,e.length)},T:function(t,e,n){return Jn(+t,e.length)}};function Ez(t,e=""){const n=t>0?"-":"+",r=Math.abs(t),s=Math.trunc(r/60),i=r%60;return i===0?n+String(s):n+String(s)+e+Jn(i,2)}function _z(t,e){return t%60===0?(t>0?"-":"+")+Jn(Math.abs(t)/60,2):$u(t,e)}function $u(t,e=""){const n=t>0?"-":"+",r=Math.abs(t),s=Jn(Math.trunc(r/60),2),i=Jn(r%60,2);return n+s+e+i}const Az=(t,e)=>{switch(t){case"P":return e.date({width:"short"});case"PP":return e.date({width:"medium"});case"PPP":return e.date({width:"long"});case"PPPP":default:return e.date({width:"full"})}},tX=(t,e)=>{switch(t){case"p":return e.time({width:"short"});case"pp":return e.time({width:"medium"});case"ppp":return e.time({width:"long"});case"pppp":default:return e.time({width:"full"})}},H9e=(t,e)=>{const n=t.match(/(P+)(p+)?/)||[],r=n[1],s=n[2];if(!s)return Az(t,e);let i;switch(r){case"P":i=e.dateTime({width:"short"});break;case"PP":i=e.dateTime({width:"medium"});break;case"PPP":i=e.dateTime({width:"long"});break;case"PPPP":default:i=e.dateTime({width:"full"});break}return i.replace("{{date}}",Az(r,e)).replace("{{time}}",tX(s,e))},Q9e={p:tX,P:H9e},V9e=/^D+$/,U9e=/^Y+$/,W9e=["D","DD","YY","YYYY"];function G9e(t){return V9e.test(t)}function X9e(t){return U9e.test(t)}function Y9e(t,e,n){const r=K9e(t,e,n);if(console.warn(r),W9e.includes(t))throw new RangeError(r)}function K9e(t,e,n){const r=t[0]==="Y"?"years":"days of the month";return`Use \`${t.toLowerCase()}\` instead of \`${t}\` (in \`${e}\`) for formatting ${r} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}const Z9e=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,J9e=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,eEe=/^'([^]*?)'?$/,tEe=/''/g,nEe=/[a-zA-Z]/;function Dv(t,e,n){const r=Og(),s=n?.locale??r.locale??p7,i=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,a=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,l=ir(t,n?.in);if(!n9e(l))throw new RangeError("Invalid time value");let c=e.match(J9e).map(h=>{const m=h[0];if(m==="p"||m==="P"){const g=Q9e[m];return g(h,s.formatLong)}return h}).join("").match(Z9e).map(h=>{if(h==="''")return{isToken:!1,value:"'"};const m=h[0];if(m==="'")return{isToken:!1,value:rEe(h)};if(Tz[m])return{isToken:!0,value:h};if(m.match(nEe))throw new RangeError("Format string contains an unescaped latin alphabet character `"+m+"`");return{isToken:!1,value:h}});s.localize.preprocessor&&(c=s.localize.preprocessor(l,c));const d={firstWeekContainsDate:i,weekStartsOn:a,locale:s};return c.map(h=>{if(!h.isToken)return h.value;const m=h.value;(!n?.useAdditionalWeekYearTokens&&X9e(m)||!n?.useAdditionalDayOfYearTokens&&G9e(m))&&Y9e(m,e,String(t));const g=Tz[m[0]];return g(l,m,s.localize,d)}).join("")}function rEe(t){const e=t.match(eEe);return e?e[1].replace(tEe,"'"):t}function sEe(t,e){const n=ir(t,e?.in),r=n.getFullYear(),s=n.getMonth(),i=as(n,0);return i.setFullYear(r,s+1,0),i.setHours(0,0,0,0),i.getDate()}function iEe(t,e){return ir(t,e?.in).getMonth()}function aEe(t,e){return ir(t,e?.in).getFullYear()}function oEe(t,e){return+ir(t)>+ir(e)}function lEe(t,e){return+ir(t)<+ir(e)}function cEe(t,e,n){const[r,s]=Nd(n?.in,t,e);return+ou(r,n)==+ou(s,n)}function uEe(t,e,n){const[r,s]=Nd(n?.in,t,e);return r.getFullYear()===s.getFullYear()&&r.getMonth()===s.getMonth()}function dEe(t,e,n){const[r,s]=Nd(n?.in,t,e);return r.getFullYear()===s.getFullYear()}function hEe(t,e,n){const r=ir(t,n?.in),s=r.getFullYear(),i=r.getDate(),a=as(t,0);a.setFullYear(s,e,15),a.setHours(0,0,0,0);const l=sEe(a);return r.setMonth(e,Math.min(i,l)),r}function fEe(t,e,n){const r=ir(t,n?.in);return isNaN(+r)?as(t,NaN):(r.setFullYear(e),r)}const Mz=5,mEe=4;function pEe(t,e){const n=e.startOfMonth(t),r=n.getDay()>0?n.getDay():7,s=e.addDays(t,-r+1),i=e.addDays(s,Mz*7-1);return e.getMonth(t)===e.getMonth(i)?Mz:mEe}function nX(t,e){const n=e.startOfMonth(t),r=n.getDay();return r===1?n:r===0?e.addDays(n,-6):e.addDays(n,-1*(r-1))}function gEe(t,e){const n=nX(t,e),r=pEe(t,e);return e.addDays(n,r*7-1)}class ta{constructor(e,n){this.Date=Date,this.today=()=>this.overrides?.today?this.overrides.today():this.options.timeZone?Bs.tz(this.options.timeZone):new this.Date,this.newDate=(r,s,i)=>this.overrides?.newDate?this.overrides.newDate(r,s,i):this.options.timeZone?new Bs(r,s,i,this.options.timeZone):new Date(r,s,i),this.addDays=(r,s)=>this.overrides?.addDays?this.overrides.addDays(r,s):HG(r,s),this.addMonths=(r,s)=>this.overrides?.addMonths?this.overrides.addMonths(r,s):QG(r,s),this.addWeeks=(r,s)=>this.overrides?.addWeeks?this.overrides.addWeeks(r,s):KTe(r,s),this.addYears=(r,s)=>this.overrides?.addYears?this.overrides.addYears(r,s):ZTe(r,s),this.differenceInCalendarDays=(r,s)=>this.overrides?.differenceInCalendarDays?this.overrides.differenceInCalendarDays(r,s):UG(r,s),this.differenceInCalendarMonths=(r,s)=>this.overrides?.differenceInCalendarMonths?this.overrides.differenceInCalendarMonths(r,s):r9e(r,s),this.eachMonthOfInterval=r=>this.overrides?.eachMonthOfInterval?this.overrides.eachMonthOfInterval(r):i9e(r),this.eachYearOfInterval=r=>{const s=this.overrides?.eachYearOfInterval?this.overrides.eachYearOfInterval(r):l9e(r),i=new Set(s.map(l=>this.getYear(l)));if(i.size===s.length)return s;const a=[];return i.forEach(l=>{a.push(new Date(l,0,1))}),a},this.endOfBroadcastWeek=r=>this.overrides?.endOfBroadcastWeek?this.overrides.endOfBroadcastWeek(r):gEe(r,this),this.endOfISOWeek=r=>this.overrides?.endOfISOWeek?this.overrides.endOfISOWeek(r):c9e(r),this.endOfMonth=r=>this.overrides?.endOfMonth?this.overrides.endOfMonth(r):s9e(r),this.endOfWeek=(r,s)=>this.overrides?.endOfWeek?this.overrides.endOfWeek(r,s):YG(r,this.options),this.endOfYear=r=>this.overrides?.endOfYear?this.overrides.endOfYear(r):o9e(r),this.format=(r,s,i)=>{const a=this.overrides?.format?this.overrides.format(r,s,this.options):Dv(r,s,this.options);return this.options.numerals&&this.options.numerals!=="latn"?this.replaceDigits(a):a},this.getISOWeek=r=>this.overrides?.getISOWeek?this.overrides.getISOWeek(r):ZG(r),this.getMonth=(r,s)=>this.overrides?.getMonth?this.overrides.getMonth(r,this.options):iEe(r,this.options),this.getYear=(r,s)=>this.overrides?.getYear?this.overrides.getYear(r,this.options):aEe(r,this.options),this.getWeek=(r,s)=>this.overrides?.getWeek?this.overrides.getWeek(r,this.options):eX(r,this.options),this.isAfter=(r,s)=>this.overrides?.isAfter?this.overrides.isAfter(r,s):oEe(r,s),this.isBefore=(r,s)=>this.overrides?.isBefore?this.overrides.isBefore(r,s):lEe(r,s),this.isDate=r=>this.overrides?.isDate?this.overrides.isDate(r):WG(r),this.isSameDay=(r,s)=>this.overrides?.isSameDay?this.overrides.isSameDay(r,s):t9e(r,s),this.isSameMonth=(r,s)=>this.overrides?.isSameMonth?this.overrides.isSameMonth(r,s):uEe(r,s),this.isSameYear=(r,s)=>this.overrides?.isSameYear?this.overrides.isSameYear(r,s):dEe(r,s),this.max=r=>this.overrides?.max?this.overrides.max(r):JTe(r),this.min=r=>this.overrides?.min?this.overrides.min(r):e9e(r),this.setMonth=(r,s)=>this.overrides?.setMonth?this.overrides.setMonth(r,s):hEe(r,s),this.setYear=(r,s)=>this.overrides?.setYear?this.overrides.setYear(r,s):fEe(r,s),this.startOfBroadcastWeek=(r,s)=>this.overrides?.startOfBroadcastWeek?this.overrides.startOfBroadcastWeek(r,this):nX(r,this),this.startOfDay=r=>this.overrides?.startOfDay?this.overrides.startOfDay(r):Ep(r),this.startOfISOWeek=r=>this.overrides?.startOfISOWeek?this.overrides.startOfISOWeek(r):Tp(r),this.startOfMonth=r=>this.overrides?.startOfMonth?this.overrides.startOfMonth(r):a9e(r),this.startOfWeek=(r,s)=>this.overrides?.startOfWeek?this.overrides.startOfWeek(r,this.options):ou(r,this.options),this.startOfYear=r=>this.overrides?.startOfYear?this.overrides.startOfYear(r):XG(r),this.options={locale:p7,...e},this.overrides=n}getDigitMap(){const{numerals:e="latn"}=this.options,n=new Intl.NumberFormat("en-US",{numberingSystem:e}),r={};for(let s=0;s<10;s++)r[s.toString()]=n.format(s);return r}replaceDigits(e){const n=this.getDigitMap();return e.replace(/\d/g,r=>n[r]||r)}formatNumber(e){return this.replaceDigits(e.toString())}getMonthYearOrder(){const e=this.options.locale?.code;return e&&ta.yearFirstLocales.has(e)?"year-first":"month-first"}formatMonthYear(e){const{locale:n,timeZone:r,numerals:s}=this.options,i=n?.code;if(i&&ta.yearFirstLocales.has(i))try{return new Intl.DateTimeFormat(i,{month:"long",year:"numeric",timeZone:r,numberingSystem:s}).format(e)}catch{}const a=this.getMonthYearOrder()==="year-first"?"y LLLL":"LLLL y";return this.format(e,a)}}ta.yearFirstLocales=new Set(["eu","hu","ja","ja-Hira","ja-JP","ko","ko-KR","lt","lt-LT","lv","lv-LV","mn","mn-MN","zh","zh-CN","zh-HK","zh-TW"]);const Zo=new ta;class rX{constructor(e,n,r=Zo){this.date=e,this.displayMonth=n,this.outside=!!(n&&!r.isSameMonth(e,n)),this.dateLib=r}isEqualTo(e){return this.dateLib.isSameDay(e.date,this.date)&&this.dateLib.isSameMonth(e.displayMonth,this.displayMonth)}}class xEe{constructor(e,n){this.date=e,this.weeks=n}}class vEe{constructor(e,n){this.days=n,this.weekNumber=e}}function yEe(t){return oe.createElement("button",{...t})}function bEe(t){return oe.createElement("span",{...t})}function wEe(t){const{size:e=24,orientation:n="left",className:r}=t;return oe.createElement("svg",{className:r,width:e,height:e,viewBox:"0 0 24 24"},n==="up"&&oe.createElement("polygon",{points:"6.77 17 12.5 11.43 18.24 17 20 15.28 12.5 8 5 15.28"}),n==="down"&&oe.createElement("polygon",{points:"6.77 8 12.5 13.57 18.24 8 20 9.72 12.5 17 5 9.72"}),n==="left"&&oe.createElement("polygon",{points:"16 18.112 9.81111111 12 16 5.87733333 14.0888889 4 6 12 14.0888889 20"}),n==="right"&&oe.createElement("polygon",{points:"8 18.112 14.18888889 12 8 5.87733333 9.91111111 4 18 12 9.91111111 20"}))}function SEe(t){const{day:e,modifiers:n,...r}=t;return oe.createElement("td",{...r})}function kEe(t){const{day:e,modifiers:n,...r}=t,s=oe.useRef(null);return oe.useEffect(()=>{n.focused&&s.current?.focus()},[n.focused]),oe.createElement("button",{ref:s,...r})}var Nt;(function(t){t.Root="root",t.Chevron="chevron",t.Day="day",t.DayButton="day_button",t.CaptionLabel="caption_label",t.Dropdowns="dropdowns",t.Dropdown="dropdown",t.DropdownRoot="dropdown_root",t.Footer="footer",t.MonthGrid="month_grid",t.MonthCaption="month_caption",t.MonthsDropdown="months_dropdown",t.Month="month",t.Months="months",t.Nav="nav",t.NextMonthButton="button_next",t.PreviousMonthButton="button_previous",t.Week="week",t.Weeks="weeks",t.Weekday="weekday",t.Weekdays="weekdays",t.WeekNumber="week_number",t.WeekNumberHeader="week_number_header",t.YearsDropdown="years_dropdown"})(Nt||(Nt={}));var zr;(function(t){t.disabled="disabled",t.hidden="hidden",t.outside="outside",t.focused="focused",t.today="today"})(zr||(zr={}));var Wa;(function(t){t.range_end="range_end",t.range_middle="range_middle",t.range_start="range_start",t.selected="selected"})(Wa||(Wa={}));var Vi;(function(t){t.weeks_before_enter="weeks_before_enter",t.weeks_before_exit="weeks_before_exit",t.weeks_after_enter="weeks_after_enter",t.weeks_after_exit="weeks_after_exit",t.caption_after_enter="caption_after_enter",t.caption_after_exit="caption_after_exit",t.caption_before_enter="caption_before_enter",t.caption_before_exit="caption_before_exit"})(Vi||(Vi={}));function OEe(t){const{options:e,className:n,components:r,classNames:s,...i}=t,a=[s[Nt.Dropdown],n].join(" "),l=e?.find(({value:c})=>c===i.value);return oe.createElement("span",{"data-disabled":i.disabled,className:s[Nt.DropdownRoot]},oe.createElement(r.Select,{className:a,...i},e?.map(({value:c,label:d,disabled:h})=>oe.createElement(r.Option,{key:c,value:c,disabled:h},d))),oe.createElement("span",{className:s[Nt.CaptionLabel],"aria-hidden":!0},l?.label,oe.createElement(r.Chevron,{orientation:"down",size:18,className:s[Nt.Chevron]})))}function jEe(t){return oe.createElement("div",{...t})}function NEe(t){return oe.createElement("div",{...t})}function CEe(t){const{calendarMonth:e,displayIndex:n,...r}=t;return oe.createElement("div",{...r},t.children)}function TEe(t){const{calendarMonth:e,displayIndex:n,...r}=t;return oe.createElement("div",{...r})}function EEe(t){return oe.createElement("table",{...t})}function _Ee(t){return oe.createElement("div",{...t})}const sX=b.createContext(void 0);function jg(){const t=b.useContext(sX);if(t===void 0)throw new Error("useDayPicker() must be used within a custom component.");return t}function AEe(t){const{components:e}=jg();return oe.createElement(e.Dropdown,{...t})}function MEe(t){const{onPreviousClick:e,onNextClick:n,previousMonth:r,nextMonth:s,...i}=t,{components:a,classNames:l,labels:{labelPrevious:c,labelNext:d}}=jg(),h=b.useCallback(g=>{s&&n?.(g)},[s,n]),m=b.useCallback(g=>{r&&e?.(g)},[r,e]);return oe.createElement("nav",{...i},oe.createElement(a.PreviousMonthButton,{type:"button",className:l[Nt.PreviousMonthButton],tabIndex:r?void 0:-1,"aria-disabled":r?void 0:!0,"aria-label":c(r),onClick:m},oe.createElement(a.Chevron,{disabled:r?void 0:!0,className:l[Nt.Chevron],orientation:"left"})),oe.createElement(a.NextMonthButton,{type:"button",className:l[Nt.NextMonthButton],tabIndex:s?void 0:-1,"aria-disabled":s?void 0:!0,"aria-label":d(s),onClick:h},oe.createElement(a.Chevron,{disabled:s?void 0:!0,orientation:"right",className:l[Nt.Chevron]})))}function REe(t){const{components:e}=jg();return oe.createElement(e.Button,{...t})}function DEe(t){return oe.createElement("option",{...t})}function PEe(t){const{components:e}=jg();return oe.createElement(e.Button,{...t})}function zEe(t){const{rootRef:e,...n}=t;return oe.createElement("div",{...n,ref:e})}function IEe(t){return oe.createElement("select",{...t})}function LEe(t){const{week:e,...n}=t;return oe.createElement("tr",{...n})}function BEe(t){return oe.createElement("th",{...t})}function FEe(t){return oe.createElement("thead",{"aria-hidden":!0},oe.createElement("tr",{...t}))}function qEe(t){const{week:e,...n}=t;return oe.createElement("th",{...n})}function $Ee(t){return oe.createElement("th",{...t})}function HEe(t){return oe.createElement("tbody",{...t})}function QEe(t){const{components:e}=jg();return oe.createElement(e.Dropdown,{...t})}const VEe=Object.freeze(Object.defineProperty({__proto__:null,Button:yEe,CaptionLabel:bEe,Chevron:wEe,Day:SEe,DayButton:kEe,Dropdown:OEe,DropdownNav:jEe,Footer:NEe,Month:CEe,MonthCaption:TEe,MonthGrid:EEe,Months:_Ee,MonthsDropdown:AEe,Nav:MEe,NextMonthButton:REe,Option:DEe,PreviousMonthButton:PEe,Root:zEe,Select:IEe,Week:LEe,WeekNumber:qEe,WeekNumberHeader:$Ee,Weekday:BEe,Weekdays:FEe,Weeks:HEe,YearsDropdown:QEe},Symbol.toStringTag,{value:"Module"}));function Il(t,e,n=!1,r=Zo){let{from:s,to:i}=t;const{differenceInCalendarDays:a,isSameDay:l}=r;return s&&i?(a(i,s)<0&&([s,i]=[i,s]),a(e,s)>=(n?1:0)&&a(i,e)>=(n?1:0)):!n&&i?l(i,e):!n&&s?l(s,e):!1}function iX(t){return!!(t&&typeof t=="object"&&"before"in t&&"after"in t)}function g7(t){return!!(t&&typeof t=="object"&&"from"in t)}function aX(t){return!!(t&&typeof t=="object"&&"after"in t)}function oX(t){return!!(t&&typeof t=="object"&&"before"in t)}function lX(t){return!!(t&&typeof t=="object"&&"dayOfWeek"in t)}function cX(t,e){return Array.isArray(t)&&t.every(e.isDate)}function Ll(t,e,n=Zo){const r=Array.isArray(e)?e:[e],{isSameDay:s,differenceInCalendarDays:i,isAfter:a}=n;return r.some(l=>{if(typeof l=="boolean")return l;if(n.isDate(l))return s(t,l);if(cX(l,n))return l.includes(t);if(g7(l))return Il(l,t,!1,n);if(lX(l))return Array.isArray(l.dayOfWeek)?l.dayOfWeek.includes(t.getDay()):l.dayOfWeek===t.getDay();if(iX(l)){const c=i(l.before,t),d=i(l.after,t),h=c>0,m=d<0;return a(l.before,l.after)?m&&h:h||m}return aX(l)?i(t,l.after)>0:oX(l)?i(l.before,t)>0:typeof l=="function"?l(t):!1})}function UEe(t,e,n,r,s){const{disabled:i,hidden:a,modifiers:l,showOutsideDays:c,broadcastCalendar:d,today:h}=e,{isSameDay:m,isSameMonth:g,startOfMonth:x,isBefore:y,endOfMonth:w,isAfter:S}=s,k=n&&x(n),j=r&&w(r),N={[zr.focused]:[],[zr.outside]:[],[zr.disabled]:[],[zr.hidden]:[],[zr.today]:[]},T={};for(const E of t){const{date:_,displayMonth:A}=E,D=!!(A&&!g(_,A)),q=!!(k&&y(_,k)),B=!!(j&&S(_,j)),H=!!(i&&Ll(_,i,s)),W=!!(a&&Ll(_,a,s))||q||B||!d&&!c&&D||d&&c===!1&&D,ee=m(_,h??s.today());D&&N.outside.push(E),H&&N.disabled.push(E),W&&N.hidden.push(E),ee&&N.today.push(E),l&&Object.keys(l).forEach(I=>{const V=l?.[I];V&&Ll(_,V,s)&&(T[I]?T[I].push(E):T[I]=[E])})}return E=>{const _={[zr.focused]:!1,[zr.disabled]:!1,[zr.hidden]:!1,[zr.outside]:!1,[zr.today]:!1},A={};for(const D in N){const q=N[D];_[D]=q.some(B=>B===E)}for(const D in T)A[D]=T[D].some(q=>q===E);return{..._,...A}}}function WEe(t,e,n={}){return Object.entries(t).filter(([,s])=>s===!0).reduce((s,[i])=>(n[i]?s.push(n[i]):e[zr[i]]?s.push(e[zr[i]]):e[Wa[i]]&&s.push(e[Wa[i]]),s),[e[Nt.Day]])}function GEe(t){return{...VEe,...t}}function XEe(t){const e={"data-mode":t.mode??void 0,"data-required":"required"in t?t.required:void 0,"data-multiple-months":t.numberOfMonths&&t.numberOfMonths>1||void 0,"data-week-numbers":t.showWeekNumber||void 0,"data-broadcast-calendar":t.broadcastCalendar||void 0,"data-nav-layout":t.navLayout||void 0};return Object.entries(t).forEach(([n,r])=>{n.startsWith("data-")&&(e[n]=r)}),e}function x7(){const t={};for(const e in Nt)t[Nt[e]]=`rdp-${Nt[e]}`;for(const e in zr)t[zr[e]]=`rdp-${zr[e]}`;for(const e in Wa)t[Wa[e]]=`rdp-${Wa[e]}`;for(const e in Vi)t[Vi[e]]=`rdp-${Vi[e]}`;return t}function uX(t,e,n){return(n??new ta(e)).formatMonthYear(t)}const YEe=uX;function KEe(t,e,n){return(n??new ta(e)).format(t,"d")}function ZEe(t,e=Zo){return e.format(t,"LLLL")}function JEe(t,e,n){return(n??new ta(e)).format(t,"cccccc")}function e_e(t,e=Zo){return t<10?e.formatNumber(`0${t.toLocaleString()}`):e.formatNumber(`${t.toLocaleString()}`)}function t_e(){return""}function dX(t,e=Zo){return e.format(t,"yyyy")}const n_e=dX,r_e=Object.freeze(Object.defineProperty({__proto__:null,formatCaption:uX,formatDay:KEe,formatMonthCaption:YEe,formatMonthDropdown:ZEe,formatWeekNumber:e_e,formatWeekNumberHeader:t_e,formatWeekdayName:JEe,formatYearCaption:n_e,formatYearDropdown:dX},Symbol.toStringTag,{value:"Module"}));function s_e(t){return t?.formatMonthCaption&&!t.formatCaption&&(t.formatCaption=t.formatMonthCaption),t?.formatYearCaption&&!t.formatYearDropdown&&(t.formatYearDropdown=t.formatYearCaption),{...r_e,...t}}function i_e(t,e,n,r,s){const{startOfMonth:i,startOfYear:a,endOfYear:l,eachMonthOfInterval:c,getMonth:d}=s;return c({start:a(t),end:l(t)}).map(g=>{const x=r.formatMonthDropdown(g,s),y=d(g),w=e&&gi(n)||!1;return{value:y,label:x,disabled:w}})}function a_e(t,e={},n={}){let r={...e?.[Nt.Day]};return Object.entries(t).filter(([,s])=>s===!0).forEach(([s])=>{r={...r,...n?.[s]}}),r}function o_e(t,e,n){const r=t.today(),s=e?t.startOfISOWeek(r):t.startOfWeek(r),i=[];for(let a=0;a<7;a++){const l=t.addDays(s,a);i.push(l)}return i}function l_e(t,e,n,r,s=!1){if(!t||!e)return;const{startOfYear:i,endOfYear:a,eachYearOfInterval:l,getYear:c}=r,d=i(t),h=a(e),m=l({start:d,end:h});return s&&m.reverse(),m.map(g=>{const x=n.formatYearDropdown(g,r);return{value:c(g),label:x,disabled:!1}})}function hX(t,e,n,r){let s=(r??new ta(n)).format(t,"PPPP");return e.today&&(s=`Today, ${s}`),e.selected&&(s=`${s}, selected`),s}const c_e=hX;function fX(t,e,n){return(n??new ta(e)).formatMonthYear(t)}const u_e=fX;function d_e(t,e,n,r){let s=(r??new ta(n)).format(t,"PPPP");return e?.today&&(s=`Today, ${s}`),s}function h_e(t){return"Choose the Month"}function f_e(){return""}function m_e(t){return"Go to the Next Month"}function p_e(t){return"Go to the Previous Month"}function g_e(t,e,n){return(n??new ta(e)).format(t,"cccc")}function x_e(t,e){return`Week ${t}`}function v_e(t){return"Week Number"}function y_e(t){return"Choose the Year"}const b_e=Object.freeze(Object.defineProperty({__proto__:null,labelCaption:u_e,labelDay:c_e,labelDayButton:hX,labelGrid:fX,labelGridcell:d_e,labelMonthDropdown:h_e,labelNav:f_e,labelNext:m_e,labelPrevious:p_e,labelWeekNumber:x_e,labelWeekNumberHeader:v_e,labelWeekday:g_e,labelYearDropdown:y_e},Symbol.toStringTag,{value:"Module"})),Ng=t=>t instanceof HTMLElement?t:null,ek=t=>[...t.querySelectorAll("[data-animated-month]")??[]],w_e=t=>Ng(t.querySelector("[data-animated-month]")),tk=t=>Ng(t.querySelector("[data-animated-caption]")),nk=t=>Ng(t.querySelector("[data-animated-weeks]")),S_e=t=>Ng(t.querySelector("[data-animated-nav]")),k_e=t=>Ng(t.querySelector("[data-animated-weekdays]"));function O_e(t,e,{classNames:n,months:r,focused:s,dateLib:i}){const a=b.useRef(null),l=b.useRef(r),c=b.useRef(!1);b.useLayoutEffect(()=>{const d=l.current;if(l.current=r,!e||!t.current||!(t.current instanceof HTMLElement)||r.length===0||d.length===0||r.length!==d.length)return;const h=i.isSameMonth(r[0].date,d[0].date),m=i.isAfter(r[0].date,d[0].date),g=m?n[Vi.caption_after_enter]:n[Vi.caption_before_enter],x=m?n[Vi.weeks_after_enter]:n[Vi.weeks_before_enter],y=a.current,w=t.current.cloneNode(!0);if(w instanceof HTMLElement?(ek(w).forEach(N=>{if(!(N instanceof HTMLElement))return;const T=w_e(N);T&&N.contains(T)&&N.removeChild(T);const E=tk(N);E&&E.classList.remove(g);const _=nk(N);_&&_.classList.remove(x)}),a.current=w):a.current=null,c.current||h||s)return;const S=y instanceof HTMLElement?ek(y):[],k=ek(t.current);if(k?.every(j=>j instanceof HTMLElement)&&S&&S.every(j=>j instanceof HTMLElement)){c.current=!0,t.current.style.isolation="isolate";const j=S_e(t.current);j&&(j.style.zIndex="1"),k.forEach((N,T)=>{const E=S[T];if(!E)return;N.style.position="relative",N.style.overflow="hidden";const _=tk(N);_&&_.classList.add(g);const A=nk(N);A&&A.classList.add(x);const D=()=>{c.current=!1,t.current&&(t.current.style.isolation=""),j&&(j.style.zIndex=""),_&&_.classList.remove(g),A&&A.classList.remove(x),N.style.position="",N.style.overflow="",N.contains(E)&&N.removeChild(E)};E.style.pointerEvents="none",E.style.position="absolute",E.style.overflow="hidden",E.setAttribute("aria-hidden","true");const q=k_e(E);q&&(q.style.opacity="0");const B=tk(E);B&&(B.classList.add(m?n[Vi.caption_before_exit]:n[Vi.caption_after_exit]),B.addEventListener("animationend",D));const H=nk(E);H&&H.classList.add(m?n[Vi.weeks_before_exit]:n[Vi.weeks_after_exit]),N.insertBefore(E,N.firstChild)})}})}function j_e(t,e,n,r){const s=t[0],i=t[t.length-1],{ISOWeek:a,fixedWeeks:l,broadcastCalendar:c}=n??{},{addDays:d,differenceInCalendarDays:h,differenceInCalendarMonths:m,endOfBroadcastWeek:g,endOfISOWeek:x,endOfMonth:y,endOfWeek:w,isAfter:S,startOfBroadcastWeek:k,startOfISOWeek:j,startOfWeek:N}=r,T=c?k(s,r):a?j(s):N(s),E=c?g(i):a?x(y(i)):w(y(i)),_=h(E,T),A=m(i,s)+1,D=[];for(let H=0;H<=_;H++){const W=d(T,H);if(e&&S(W,e))break;D.push(W)}const B=(c?35:42)*A;if(l&&D.length{const s=r.weeks.reduce((i,a)=>i.concat(a.days.slice()),e.slice());return n.concat(s.slice())},e.slice())}function C_e(t,e,n,r){const{numberOfMonths:s=1}=n,i=[];for(let a=0;ae)break;i.push(l)}return i}function Rz(t,e,n,r){const{month:s,defaultMonth:i,today:a=r.today(),numberOfMonths:l=1}=t;let c=s||i||a;const{differenceInCalendarMonths:d,addMonths:h,startOfMonth:m}=r;if(n&&d(n,c){const k=n.broadcastCalendar?m(S,r):n.ISOWeek?g(S):x(S),j=n.broadcastCalendar?i(S):n.ISOWeek?a(l(S)):c(l(S)),N=e.filter(A=>A>=k&&A<=j),T=n.broadcastCalendar?35:42;if(n.fixedWeeks&&N.length{const q=T-N.length;return D>j&&D<=s(j,q)});N.push(...A)}const E=N.reduce((A,D)=>{const q=n.ISOWeek?d(D):h(D),B=A.find(W=>W.weekNumber===q),H=new rX(D,S,r);return B?B.days.push(H):A.push(new vEe(q,[H])),A},[]),_=new xEe(S,E);return w.push(_),w},[]);return n.reverseMonths?y.reverse():y}function E_e(t,e){let{startMonth:n,endMonth:r}=t;const{startOfYear:s,startOfDay:i,startOfMonth:a,endOfMonth:l,addYears:c,endOfYear:d,newDate:h,today:m}=e,{fromYear:g,toYear:x,fromMonth:y,toMonth:w}=t;!n&&y&&(n=y),!n&&g&&(n=e.newDate(g,0,1)),!r&&w&&(r=w),!r&&x&&(r=h(x,11,31));const S=t.captionLayout==="dropdown"||t.captionLayout==="dropdown-years";return n?n=a(n):g?n=h(g,0,1):!n&&S&&(n=s(c(t.today??m(),-100))),r?r=l(r):x?r=h(x,11,31):!r&&S&&(r=d(t.today??m())),[n&&i(n),r&&i(r)]}function __e(t,e,n,r){if(n.disableNavigation)return;const{pagedNavigation:s,numberOfMonths:i=1}=n,{startOfMonth:a,addMonths:l,differenceInCalendarMonths:c}=r,d=s?i:1,h=a(t);if(!e)return l(h,d);if(!(c(e,t)n.concat(r.weeks.slice()),e.slice())}function aw(t,e){const[n,r]=b.useState(t);return[e===void 0?n:e,r]}function R_e(t,e){const[n,r]=E_e(t,e),{startOfMonth:s,endOfMonth:i}=e,a=Rz(t,n,r,e),[l,c]=aw(a,t.month?a:void 0);b.useEffect(()=>{const _=Rz(t,n,r,e);c(_)},[t.timeZone]);const d=C_e(l,r,t,e),h=j_e(d,t.endMonth?i(t.endMonth):void 0,t,e),m=T_e(d,h,t,e),g=M_e(m),x=N_e(m),y=A_e(l,n,t,e),w=__e(l,r,t,e),{disableNavigation:S,onMonthChange:k}=t,j=_=>g.some(A=>A.days.some(D=>D.isEqualTo(_))),N=_=>{if(S)return;let A=s(_);n&&As(r)&&(A=s(r)),c(A),k?.(A)};return{months:m,weeks:g,days:x,navStart:n,navEnd:r,previousMonth:y,nextMonth:w,goToMonth:N,goToDay:_=>{j(_)||N(_.date)}}}var yo;(function(t){t[t.Today=0]="Today",t[t.Selected=1]="Selected",t[t.LastFocused=2]="LastFocused",t[t.FocusedModifier=3]="FocusedModifier"})(yo||(yo={}));function Dz(t){return!t[zr.disabled]&&!t[zr.hidden]&&!t[zr.outside]}function D_e(t,e,n,r){let s,i=-1;for(const a of t){const l=e(a);Dz(l)&&(l[zr.focused]&&iDz(e(a)))),s}function P_e(t,e,n,r,s,i,a){const{ISOWeek:l,broadcastCalendar:c}=i,{addDays:d,addMonths:h,addWeeks:m,addYears:g,endOfBroadcastWeek:x,endOfISOWeek:y,endOfWeek:w,max:S,min:k,startOfBroadcastWeek:j,startOfISOWeek:N,startOfWeek:T}=a;let _={day:d,week:m,month:h,year:g,startOfWeek:A=>c?j(A,a):l?N(A):T(A),endOfWeek:A=>c?x(A):l?y(A):w(A)}[t](n,e==="after"?1:-1);return e==="before"&&r?_=S([r,_]):e==="after"&&s&&(_=k([s,_])),_}function mX(t,e,n,r,s,i,a,l=0){if(l>365)return;const c=P_e(t,e,n.date,r,s,i,a),d=!!(i.disabled&&Ll(c,i.disabled,a)),h=!!(i.hidden&&Ll(c,i.hidden,a)),m=c,g=new rX(c,m,a);return!d&&!h?g:mX(t,e,g,r,s,i,a,l+1)}function z_e(t,e,n,r,s){const{autoFocus:i}=t,[a,l]=b.useState(),c=D_e(e.days,n,r||(()=>!1),a),[d,h]=b.useState(i?c:void 0);return{isFocusTarget:w=>!!c?.isEqualTo(w),setFocused:h,focused:d,blur:()=>{l(d),h(void 0)},moveFocus:(w,S)=>{if(!d)return;const k=mX(w,S,d,e.navStart,e.navEnd,t,s);k&&(t.disableNavigation&&!e.days.some(N=>N.isEqualTo(k))||(e.goToDay(k),h(k)))}}}function I_e(t,e){const{selected:n,required:r,onSelect:s}=t,[i,a]=aw(n,s?n:void 0),l=s?n:i,{isSameDay:c}=e,d=x=>l?.some(y=>c(y,x))??!1,{min:h,max:m}=t;return{selected:l,select:(x,y,w)=>{let S=[...l??[]];if(d(x)){if(l?.length===h||r&&l?.length===1)return;S=l?.filter(k=>!c(k,x))}else l?.length===m?S=[x]:S=[...S,x];return s||a(S),s?.(S,x,y,w),S},isSelected:d}}function L_e(t,e,n=0,r=0,s=!1,i=Zo){const{from:a,to:l}=e||{},{isSameDay:c,isAfter:d,isBefore:h}=i;let m;if(!a&&!l)m={from:t,to:n>0?void 0:t};else if(a&&!l)c(a,t)?n===0?m={from:a,to:t}:s?m={from:a,to:void 0}:m=void 0:h(t,a)?m={from:t,to:a}:m={from:a,to:t};else if(a&&l)if(c(a,t)&&c(l,t))s?m={from:a,to:l}:m=void 0;else if(c(a,t))m={from:a,to:n>0?void 0:t};else if(c(l,t))m={from:t,to:n>0?void 0:t};else if(h(t,a))m={from:t,to:l};else if(d(t,a))m={from:a,to:t};else if(d(t,l))m={from:a,to:t};else throw new Error("Invalid range");if(m?.from&&m?.to){const g=i.differenceInCalendarDays(m.to,m.from);r>0&&g>r?m={from:t,to:void 0}:n>1&&gtypeof l!="function").some(l=>typeof l=="boolean"?l:n.isDate(l)?Il(t,l,!1,n):cX(l,n)?l.some(c=>Il(t,c,!1,n)):g7(l)?l.from&&l.to?Pz(t,{from:l.from,to:l.to},n):!1:lX(l)?B_e(t,l.dayOfWeek,n):iX(l)?n.isAfter(l.before,l.after)?Pz(t,{from:n.addDays(l.after,1),to:n.addDays(l.before,-1)},n):Ll(t.from,l,n)||Ll(t.to,l,n):aX(l)||oX(l)?Ll(t.from,l,n)||Ll(t.to,l,n):!1))return!0;const a=r.filter(l=>typeof l=="function");if(a.length){let l=t.from;const c=n.differenceInCalendarDays(t.to,t.from);for(let d=0;d<=c;d++){if(a.some(h=>h(l)))return!0;l=n.addDays(l,1)}}return!1}function q_e(t,e){const{disabled:n,excludeDisabled:r,selected:s,required:i,onSelect:a}=t,[l,c]=aw(s,a?s:void 0),d=a?s:l;return{selected:d,select:(g,x,y)=>{const{min:w,max:S}=t,k=g?L_e(g,d,w,S,i,e):void 0;return r&&n&&k?.from&&k.to&&F_e({from:k.from,to:k.to},n,e)&&(k.from=g,k.to=void 0),a||c(k),a?.(k,g,x,y),k},isSelected:g=>d&&Il(d,g,!1,e)}}function $_e(t,e){const{selected:n,required:r,onSelect:s}=t,[i,a]=aw(n,s?n:void 0),l=s?n:i,{isSameDay:c}=e;return{selected:l,select:(m,g,x)=>{let y=m;return!r&&l&&l&&c(m,l)&&(y=void 0),s||a(y),s?.(y,m,g,x),y},isSelected:m=>l?c(l,m):!1}}function H_e(t,e){const n=$_e(t,e),r=I_e(t,e),s=q_e(t,e);switch(t.mode){case"single":return n;case"multiple":return r;case"range":return s;default:return}}function Q_e(t){let e=t;e.timeZone&&(e={...t},e.today&&(e.today=new Bs(e.today,e.timeZone)),e.month&&(e.month=new Bs(e.month,e.timeZone)),e.defaultMonth&&(e.defaultMonth=new Bs(e.defaultMonth,e.timeZone)),e.startMonth&&(e.startMonth=new Bs(e.startMonth,e.timeZone)),e.endMonth&&(e.endMonth=new Bs(e.endMonth,e.timeZone)),e.mode==="single"&&e.selected?e.selected=new Bs(e.selected,e.timeZone):e.mode==="multiple"&&e.selected?e.selected=e.selected?.map(dt=>new Bs(dt,e.timeZone)):e.mode==="range"&&e.selected&&(e.selected={from:e.selected.from?new Bs(e.selected.from,e.timeZone):void 0,to:e.selected.to?new Bs(e.selected.to,e.timeZone):void 0}));const{components:n,formatters:r,labels:s,dateLib:i,locale:a,classNames:l}=b.useMemo(()=>{const dt={...p7,...e.locale};return{dateLib:new ta({locale:dt,weekStartsOn:e.broadcastCalendar?1:e.weekStartsOn,firstWeekContainsDate:e.firstWeekContainsDate,useAdditionalWeekYearTokens:e.useAdditionalWeekYearTokens,useAdditionalDayOfYearTokens:e.useAdditionalDayOfYearTokens,timeZone:e.timeZone,numerals:e.numerals},e.dateLib),components:GEe(e.components),formatters:s_e(e.formatters),labels:{...b_e,...e.labels},locale:dt,classNames:{...x7(),...e.classNames}}},[e.locale,e.broadcastCalendar,e.weekStartsOn,e.firstWeekContainsDate,e.useAdditionalWeekYearTokens,e.useAdditionalDayOfYearTokens,e.timeZone,e.numerals,e.dateLib,e.components,e.formatters,e.labels,e.classNames]),{captionLayout:c,mode:d,navLayout:h,numberOfMonths:m=1,onDayBlur:g,onDayClick:x,onDayFocus:y,onDayKeyDown:w,onDayMouseEnter:S,onDayMouseLeave:k,onNextClick:j,onPrevClick:N,showWeekNumber:T,styles:E}=e,{formatCaption:_,formatDay:A,formatMonthDropdown:D,formatWeekNumber:q,formatWeekNumberHeader:B,formatWeekdayName:H,formatYearDropdown:W}=r,ee=R_e(e,i),{days:I,months:V,navStart:L,navEnd:$,previousMonth:K,nextMonth:Y,goToMonth:R}=ee,ie=UEe(I,e,L,$,i),{isSelected:X,select:z,selected:U}=H_e(e,i)??{},{blur:te,focused:ne,isFocusTarget:G,moveFocus:se,setFocused:re}=z_e(e,ee,ie,X??(()=>!1),i),{labelDayButton:ae,labelGridcell:_e,labelGrid:Be,labelMonthDropdown:Ye,labelNav:Je,labelPrevious:Oe,labelNext:Ve,labelWeekday:Ue,labelWeekNumber:$e,labelWeekNumberHeader:jt,labelYearDropdown:vt}=s,$n=b.useMemo(()=>o_e(i,e.ISOWeek),[i,e.ISOWeek]),qt=d!==void 0||x!==void 0,un=b.useCallback(()=>{K&&(R(K),N?.(K))},[K,R,N]),Mt=b.useCallback(()=>{Y&&(R(Y),j?.(Y))},[R,Y,j]),ct=b.useCallback((dt,rn)=>wt=>{wt.preventDefault(),wt.stopPropagation(),re(dt),z?.(dt.date,rn,wt),x?.(dt.date,rn,wt)},[z,x,re]),Ne=b.useCallback((dt,rn)=>wt=>{re(dt),y?.(dt.date,rn,wt)},[y,re]),ze=b.useCallback((dt,rn)=>wt=>{te(),g?.(dt.date,rn,wt)},[te,g]),rt=b.useCallback((dt,rn)=>wt=>{const Wt={ArrowLeft:[wt.shiftKey?"month":"day",e.dir==="rtl"?"after":"before"],ArrowRight:[wt.shiftKey?"month":"day",e.dir==="rtl"?"before":"after"],ArrowDown:[wt.shiftKey?"year":"week","after"],ArrowUp:[wt.shiftKey?"year":"week","before"],PageUp:[wt.shiftKey?"year":"month","before"],PageDown:[wt.shiftKey?"year":"month","after"],Home:["startOfWeek","before"],End:["endOfWeek","after"]};if(Wt[wt.key]){wt.preventDefault(),wt.stopPropagation();const[Gt,lt]=Wt[wt.key];se(Gt,lt)}w?.(dt.date,rn,wt)},[se,w,e.dir]),bt=b.useCallback((dt,rn)=>wt=>{S?.(dt.date,rn,wt)},[S]),zt=b.useCallback((dt,rn)=>wt=>{k?.(dt.date,rn,wt)},[k]),Rt=b.useCallback(dt=>rn=>{const wt=Number(rn.target.value),Wt=i.setMonth(i.startOfMonth(dt),wt);R(Wt)},[i,R]),Hn=b.useCallback(dt=>rn=>{const wt=Number(rn.target.value),Wt=i.setYear(i.startOfMonth(dt),wt);R(Wt)},[i,R]),{className:We,style:ot}=b.useMemo(()=>({className:[l[Nt.Root],e.className].filter(Boolean).join(" "),style:{...E?.[Nt.Root],...e.style}}),[l,e.className,e.style,E]),dn=XEe(e),Pt=b.useRef(null);O_e(Pt,!!e.animate,{classNames:l,months:V,focused:ne,dateLib:i});const xn={dayPickerProps:e,selected:U,select:z,isSelected:X,months:V,nextMonth:Y,previousMonth:K,goToMonth:R,getModifiers:ie,components:n,classNames:l,styles:E,labels:s,formatters:r};return oe.createElement(sX.Provider,{value:xn},oe.createElement(n.Root,{rootRef:e.animate?Pt:void 0,className:We,style:ot,dir:e.dir,id:e.id,lang:e.lang,nonce:e.nonce,title:e.title,role:e.role,"aria-label":e["aria-label"],"aria-labelledby":e["aria-labelledby"],...dn},oe.createElement(n.Months,{className:l[Nt.Months],style:E?.[Nt.Months]},!e.hideNavigation&&!h&&oe.createElement(n.Nav,{"data-animated-nav":e.animate?"true":void 0,className:l[Nt.Nav],style:E?.[Nt.Nav],"aria-label":Je(),onPreviousClick:un,onNextClick:Mt,previousMonth:K,nextMonth:Y}),V.map((dt,rn)=>oe.createElement(n.Month,{"data-animated-month":e.animate?"true":void 0,className:l[Nt.Month],style:E?.[Nt.Month],key:rn,displayIndex:rn,calendarMonth:dt},h==="around"&&!e.hideNavigation&&rn===0&&oe.createElement(n.PreviousMonthButton,{type:"button",className:l[Nt.PreviousMonthButton],tabIndex:K?void 0:-1,"aria-disabled":K?void 0:!0,"aria-label":Oe(K),onClick:un,"data-animated-button":e.animate?"true":void 0},oe.createElement(n.Chevron,{disabled:K?void 0:!0,className:l[Nt.Chevron],orientation:e.dir==="rtl"?"right":"left"})),oe.createElement(n.MonthCaption,{"data-animated-caption":e.animate?"true":void 0,className:l[Nt.MonthCaption],style:E?.[Nt.MonthCaption],calendarMonth:dt,displayIndex:rn},c?.startsWith("dropdown")?oe.createElement(n.DropdownNav,{className:l[Nt.Dropdowns],style:E?.[Nt.Dropdowns]},(()=>{const wt=c==="dropdown"||c==="dropdown-months"?oe.createElement(n.MonthsDropdown,{key:"month",className:l[Nt.MonthsDropdown],"aria-label":Ye(),classNames:l,components:n,disabled:!!e.disableNavigation,onChange:Rt(dt.date),options:i_e(dt.date,L,$,r,i),style:E?.[Nt.Dropdown],value:i.getMonth(dt.date)}):oe.createElement("span",{key:"month"},D(dt.date,i)),Wt=c==="dropdown"||c==="dropdown-years"?oe.createElement(n.YearsDropdown,{key:"year",className:l[Nt.YearsDropdown],"aria-label":vt(i.options),classNames:l,components:n,disabled:!!e.disableNavigation,onChange:Hn(dt.date),options:l_e(L,$,r,i,!!e.reverseYears),style:E?.[Nt.Dropdown],value:i.getYear(dt.date)}):oe.createElement("span",{key:"year"},W(dt.date,i));return i.getMonthYearOrder()==="year-first"?[Wt,wt]:[wt,Wt]})(),oe.createElement("span",{role:"status","aria-live":"polite",style:{border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",width:"1px",whiteSpace:"nowrap",wordWrap:"normal"}},_(dt.date,i.options,i))):oe.createElement(n.CaptionLabel,{className:l[Nt.CaptionLabel],role:"status","aria-live":"polite"},_(dt.date,i.options,i))),h==="around"&&!e.hideNavigation&&rn===m-1&&oe.createElement(n.NextMonthButton,{type:"button",className:l[Nt.NextMonthButton],tabIndex:Y?void 0:-1,"aria-disabled":Y?void 0:!0,"aria-label":Ve(Y),onClick:Mt,"data-animated-button":e.animate?"true":void 0},oe.createElement(n.Chevron,{disabled:Y?void 0:!0,className:l[Nt.Chevron],orientation:e.dir==="rtl"?"left":"right"})),rn===m-1&&h==="after"&&!e.hideNavigation&&oe.createElement(n.Nav,{"data-animated-nav":e.animate?"true":void 0,className:l[Nt.Nav],style:E?.[Nt.Nav],"aria-label":Je(),onPreviousClick:un,onNextClick:Mt,previousMonth:K,nextMonth:Y}),oe.createElement(n.MonthGrid,{role:"grid","aria-multiselectable":d==="multiple"||d==="range","aria-label":Be(dt.date,i.options,i)||void 0,className:l[Nt.MonthGrid],style:E?.[Nt.MonthGrid]},!e.hideWeekdays&&oe.createElement(n.Weekdays,{"data-animated-weekdays":e.animate?"true":void 0,className:l[Nt.Weekdays],style:E?.[Nt.Weekdays]},T&&oe.createElement(n.WeekNumberHeader,{"aria-label":jt(i.options),className:l[Nt.WeekNumberHeader],style:E?.[Nt.WeekNumberHeader],scope:"col"},B()),$n.map(wt=>oe.createElement(n.Weekday,{"aria-label":Ue(wt,i.options,i),className:l[Nt.Weekday],key:String(wt),style:E?.[Nt.Weekday],scope:"col"},H(wt,i.options,i)))),oe.createElement(n.Weeks,{"data-animated-weeks":e.animate?"true":void 0,className:l[Nt.Weeks],style:E?.[Nt.Weeks]},dt.weeks.map(wt=>oe.createElement(n.Week,{className:l[Nt.Week],key:wt.weekNumber,style:E?.[Nt.Week],week:wt},T&&oe.createElement(n.WeekNumber,{week:wt,style:E?.[Nt.WeekNumber],"aria-label":$e(wt.weekNumber,{locale:a}),className:l[Nt.WeekNumber],scope:"row",role:"rowheader"},q(wt.weekNumber,i)),wt.days.map(Wt=>{const{date:Gt}=Wt,lt=ie(Wt);if(lt[zr.focused]=!lt.hidden&&!!ne?.isEqualTo(Wt),lt[Wa.selected]=X?.(Gt)||lt.selected,g7(U)){const{from:vn,to:Qn}=U;lt[Wa.range_start]=!!(vn&&Qn&&i.isSameDay(Gt,vn)),lt[Wa.range_end]=!!(vn&&Qn&&i.isSameDay(Gt,Qn)),lt[Wa.range_middle]=Il(U,Gt,!0,i)}const ve=a_e(lt,E,e.modifiersStyles),He=WEe(lt,l,e.modifiersClassNames),ht=!qt&&!lt.hidden?_e(Gt,lt,i.options,i):void 0;return oe.createElement(n.Day,{key:`${i.format(Gt,"yyyy-MM-dd")}_${i.format(Wt.displayMonth,"yyyy-MM")}`,day:Wt,modifiers:lt,className:He.join(" "),style:ve,role:"gridcell","aria-selected":lt.selected||void 0,"aria-label":ht,"data-day":i.format(Gt,"yyyy-MM-dd"),"data-month":Wt.outside?i.format(Gt,"yyyy-MM"):void 0,"data-selected":lt.selected||void 0,"data-disabled":lt.disabled||void 0,"data-hidden":lt.hidden||void 0,"data-outside":Wt.outside||void 0,"data-focused":lt.focused||void 0,"data-today":lt.today||void 0},!lt.hidden&&qt?oe.createElement(n.DayButton,{className:l[Nt.DayButton],style:E?.[Nt.DayButton],type:"button",day:Wt,modifiers:lt,disabled:lt.disabled||void 0,tabIndex:G(Wt)?0:-1,"aria-label":ae(Gt,lt,i.options,i),onClick:ct(Wt,lt),onBlur:ze(Wt,lt),onFocus:Ne(Wt,lt),onKeyDown:rt(Wt,lt),onMouseEnter:bt(Wt,lt),onMouseLeave:zt(Wt,lt)},A(Gt,i.options,i)):!lt.hidden&&A(Wt.date,i.options,i))})))))))),e.footer&&oe.createElement(n.Footer,{className:l[Nt.Footer],style:E?.[Nt.Footer],role:"status","aria-live":"polite"},e.footer)))}function zz({className:t,classNames:e,showOutsideDays:n=!0,captionLayout:r="label",buttonVariant:s="ghost",formatters:i,components:a,...l}){const c=x7();return o.jsx(Q_e,{showOutsideDays:n,className:xe("bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,t),captionLayout:r,formatters:{formatMonthDropdown:d=>d.toLocaleString("default",{month:"short"}),...i},classNames:{root:xe("w-fit",c.root),months:xe("relative flex flex-col gap-4 md:flex-row",c.months),month:xe("flex w-full flex-col gap-4",c.month),nav:xe("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",c.nav),button_previous:xe(q0({variant:s}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",c.button_previous),button_next:xe(q0({variant:s}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",c.button_next),month_caption:xe("flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]",c.month_caption),dropdowns:xe("flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium",c.dropdowns),dropdown_root:xe("has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border",c.dropdown_root),dropdown:xe("bg-popover absolute inset-0 opacity-0",c.dropdown),caption_label:xe("select-none font-medium",r==="label"?"text-sm":"[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5",c.caption_label),table:"w-full border-collapse",weekdays:xe("flex",c.weekdays),weekday:xe("text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal",c.weekday),week:xe("mt-2 flex w-full",c.week),week_number_header:xe("w-[--cell-size] select-none",c.week_number_header),week_number:xe("text-muted-foreground select-none text-[0.8rem]",c.week_number),day:xe("group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md",c.day),range_start:xe("bg-accent rounded-l-md",c.range_start),range_middle:xe("rounded-none",c.range_middle),range_end:xe("bg-accent rounded-r-md",c.range_end),today:xe("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",c.today),outside:xe("text-muted-foreground aria-selected:text-muted-foreground",c.outside),disabled:xe("text-muted-foreground opacity-50",c.disabled),hidden:xe("invisible",c.hidden),...e},components:{Root:({className:d,rootRef:h,...m})=>o.jsx("div",{"data-slot":"calendar",ref:h,className:xe(d),...m}),Chevron:({className:d,orientation:h,...m})=>h==="left"?o.jsx(wd,{className:xe("size-4",d),...m}):h==="right"?o.jsx(Zl,{className:xe("size-4",d),...m}):o.jsx(Xc,{className:xe("size-4",d),...m}),DayButton:V_e,WeekNumber:({children:d,...h})=>o.jsx("td",{...h,children:o.jsx("div",{className:"flex size-[--cell-size] items-center justify-center text-center",children:d})}),...a},...l})}function V_e({className:t,day:e,modifiers:n,...r}){const s=x7(),i=b.useRef(null);return b.useEffect(()=>{n.focused&&i.current?.focus()},[n.focused]),o.jsx(ue,{ref:i,variant:"ghost",size:"icon","data-day":e.date.toLocaleDateString(),"data-selected-single":n.selected&&!n.range_start&&!n.range_end&&!n.range_middle,"data-range-start":n.range_start,"data-range-end":n.range_end,"data-range-middle":n.range_middle,className:xe("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70",s.day,t),...r})}class U_e{ws=null;reconnectTimeout=null;reconnectAttempts=0;maxReconnectAttempts=10;heartbeatInterval=null;logCallbacks=new Set;connectionCallbacks=new Set;isConnected=!1;logCache=[];maxCacheSize=1e3;getWebSocketUrl(){{const e=window.location.protocol==="https:"?"wss:":"ws:",n=window.location.host;return`${e}//${n}/ws/logs`}}connect(){if(this.ws?.readyState===WebSocket.OPEN||this.ws?.readyState===WebSocket.CONNECTING)return;const e=this.getWebSocketUrl();try{this.ws=new WebSocket(e),this.ws.onopen=()=>{this.isConnected=!0,this.reconnectAttempts=0,this.notifyConnection(!0),this.startHeartbeat()},this.ws.onmessage=n=>{try{if(n.data==="pong")return;const r=JSON.parse(n.data);this.notifyLog(r)}catch(r){console.error("解析日志消息失败:",r)}},this.ws.onerror=n=>{console.error("❌ WebSocket 错误:",n),this.isConnected=!1,this.notifyConnection(!1)},this.ws.onclose=()=>{this.isConnected=!1,this.notifyConnection(!1),this.stopHeartbeat(),this.attemptReconnect()}}catch(n){console.error("创建 WebSocket 连接失败:",n),this.attemptReconnect()}}attemptReconnect(){if(this.reconnectAttempts>=this.maxReconnectAttempts)return;this.reconnectAttempts+=1;const e=Math.min(1e3*this.reconnectAttempts,1e4);this.reconnectTimeout=window.setTimeout(()=>{this.connect()},e)}startHeartbeat(){this.heartbeatInterval=window.setInterval(()=>{this.ws?.readyState===WebSocket.OPEN&&this.ws.send("ping")},3e4)}stopHeartbeat(){this.heartbeatInterval!==null&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}disconnect(){this.reconnectTimeout!==null&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.stopHeartbeat(),this.ws&&(this.ws.close(),this.ws=null),this.isConnected=!1,this.reconnectAttempts=0}onLog(e){return this.logCallbacks.add(e),()=>this.logCallbacks.delete(e)}onConnectionChange(e){return this.connectionCallbacks.add(e),e(this.isConnected),()=>this.connectionCallbacks.delete(e)}notifyLog(e){this.logCache.some(r=>r.id===e.id)||(this.logCache.push(e),this.logCache.length>this.maxCacheSize&&(this.logCache=this.logCache.slice(-this.maxCacheSize)),this.logCallbacks.forEach(r=>{try{r(e)}catch(s){console.error("日志回调执行失败:",s)}}))}notifyConnection(e){this.connectionCallbacks.forEach(n=>{try{n(e)}catch(r){console.error("连接状态回调执行失败:",r)}})}getAllLogs(){return[...this.logCache]}clearLogs(){this.logCache=[]}getConnectionStatus(){return this.isConnected}}const Nh=new U_e;typeof window<"u"&&Nh.connect();const W_e={lessThanXSeconds:{one:"不到 1 秒",other:"不到 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分钟",lessThanXMinutes:{one:"不到 1 分钟",other:"不到 {{count}} 分钟"},xMinutes:{one:"1 分钟",other:"{{count}} 分钟"},xHours:{one:"1 小时",other:"{{count}} 小时"},aboutXHours:{one:"大约 1 小时",other:"大约 {{count}} 小时"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大约 1 个星期",other:"大约 {{count}} 个星期"},xWeeks:{one:"1 个星期",other:"{{count}} 个星期"},aboutXMonths:{one:"大约 1 个月",other:"大约 {{count}} 个月"},xMonths:{one:"1 个月",other:"{{count}} 个月"},aboutXYears:{one:"大约 1 年",other:"大约 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超过 1 年",other:"超过 {{count}} 年"},almostXYears:{one:"将近 1 年",other:"将近 {{count}} 年"}},G_e=(t,e,n)=>{let r;const s=W_e[t];return typeof s=="string"?r=s:e===1?r=s.one:r=s.other.replace("{{count}}",String(e)),n?.addSuffix?n.comparison&&n.comparison>0?r+"内":r+"前":r},X_e={full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},Y_e={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},K_e={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},Z_e={date:Uh({formats:X_e,defaultWidth:"full"}),time:Uh({formats:Y_e,defaultWidth:"full"}),dateTime:Uh({formats:K_e,defaultWidth:"full"})};function Iz(t,e,n){const r="eeee p";return cEe(t,e,n)?r:t.getTime()>e.getTime()?"'下个'"+r:"'上个'"+r}const J_e={lastWeek:Iz,yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:Iz,other:"PP p"},eAe=(t,e,n,r)=>{const s=J_e[t];return typeof s=="function"?s(e,n,r):s},tAe={narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},nAe={narrow:["1","2","3","4"],abbreviated:["第一季","第二季","第三季","第四季"],wide:["第一季度","第二季度","第三季度","第四季度"]},rAe={narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},sAe={narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["周日","周一","周二","周三","周四","周五","周六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},iAe={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},aAe={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},oAe=(t,e)=>{const n=Number(t);switch(e?.unit){case"date":return n.toString()+"日";case"hour":return n.toString()+"时";case"minute":return n.toString()+"分";case"second":return n.toString()+"秒";default:return"第 "+n.toString()}},lAe={ordinalNumber:oAe,era:jo({values:tAe,defaultWidth:"wide"}),quarter:jo({values:nAe,defaultWidth:"wide",argumentCallback:t=>t-1}),month:jo({values:rAe,defaultWidth:"wide"}),day:jo({values:sAe,defaultWidth:"wide"}),dayPeriod:jo({values:iAe,defaultWidth:"wide",formattingValues:aAe,defaultFormattingWidth:"wide"})},cAe=/^(第\s*)?\d+(日|时|分|秒)?/i,uAe=/\d+/i,dAe={narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},hAe={any:[/^(前)/i,/^(公元)/i]},fAe={narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻钟/i},mAe={any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},pAe={narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},gAe={narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},xAe={narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^周[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},vAe={any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},yAe={any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i},bAe={any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},wAe={ordinalNumber:KG({matchPattern:cAe,parsePattern:uAe,valueCallback:t=>parseInt(t,10)}),era:No({matchPatterns:dAe,defaultMatchWidth:"wide",parsePatterns:hAe,defaultParseWidth:"any"}),quarter:No({matchPatterns:fAe,defaultMatchWidth:"wide",parsePatterns:mAe,defaultParseWidth:"any",valueCallback:t=>t+1}),month:No({matchPatterns:pAe,defaultMatchWidth:"wide",parsePatterns:gAe,defaultParseWidth:"any"}),day:No({matchPatterns:xAe,defaultMatchWidth:"wide",parsePatterns:vAe,defaultParseWidth:"any"}),dayPeriod:No({matchPatterns:yAe,defaultMatchWidth:"any",parsePatterns:bAe,defaultParseWidth:"any"})},K1={code:"zh-CN",formatDistance:G_e,formatLong:Z_e,formatRelative:eAe,localize:lAe,match:wAe,options:{weekStartsOn:1,firstWeekContainsDate:4}},Z1={xs:{label:"小",rowHeight:28,class:"text-[10px] sm:text-xs"},sm:{label:"中",rowHeight:36,class:"text-xs sm:text-sm"},base:{label:"大",rowHeight:44,class:"text-sm sm:text-base"}};function SAe(){const[t,e]=b.useState([]),[n,r]=b.useState(""),[s,i]=b.useState("all"),[a,l]=b.useState("all"),[c,d]=b.useState(void 0),[h,m]=b.useState(void 0),[g,x]=b.useState(!0),[y,w]=b.useState(!1),[S,k]=b.useState("xs"),[j,N]=b.useState(4),T=b.useRef(null);b.useEffect(()=>{const L=Nh.getAllLogs();e(L);const $=Nh.onLog(()=>{e(Nh.getAllLogs())}),K=Nh.onConnectionChange(Y=>{w(Y)});return()=>{$(),K()}},[]);const E=b.useMemo(()=>{const L=new Set(t.map($=>$.module));return Array.from(L).sort()},[t]),_=L=>{switch(L){case"DEBUG":return"text-muted-foreground";case"INFO":return"text-blue-500 dark:text-blue-400";case"WARNING":return"text-yellow-600 dark:text-yellow-500";case"ERROR":return"text-red-600 dark:text-red-500";case"CRITICAL":return"text-red-700 dark:text-red-400 font-bold";default:return"text-foreground"}},A=L=>{switch(L){case"DEBUG":return"bg-gray-800/30 dark:bg-gray-800/50";case"INFO":return"bg-blue-900/20 dark:bg-blue-500/20";case"WARNING":return"bg-yellow-900/20 dark:bg-yellow-500/20";case"ERROR":return"bg-red-900/20 dark:bg-red-500/20";case"CRITICAL":return"bg-red-900/30 dark:bg-red-600/30";default:return"bg-gray-800/20 dark:bg-gray-800/30"}},D=()=>{window.location.reload()},q=()=>{Nh.clearLogs(),e([])},B=()=>{const L=ee.map(R=>`${R.timestamp} [${R.level.padEnd(8)}] [${R.module}] ${R.message}`).join(` +`),$=new Blob([L],{type:"text/plain;charset=utf-8"}),K=URL.createObjectURL($),Y=document.createElement("a");Y.href=K,Y.download=`logs-${Dv(new Date,"yyyy-MM-dd-HHmmss")}.txt`,Y.click(),URL.revokeObjectURL(K)},H=()=>{x(!g)},W=()=>{d(void 0),m(void 0)},ee=b.useMemo(()=>t.filter(L=>{const $=n===""||L.message.toLowerCase().includes(n.toLowerCase())||L.module.toLowerCase().includes(n.toLowerCase()),K=s==="all"||L.level===s,Y=a==="all"||L.module===a;let R=!0;if(c||h){const ie=new Date(L.timestamp);if(c){const X=new Date(c);X.setHours(0,0,0,0),R=R&&ie>=X}if(h){const X=new Date(h);X.setHours(23,59,59,999),R=R&&ie<=X}}return $&&K&&Y&&R}),[t,n,s,a,c,h]),I=Z1[S].rowHeight+j,V=HTe({count:ee.length,getScrollElement:()=>T.current,estimateSize:()=>I,overscan:15});return b.useEffect(()=>{g&&ee.length>0&&V.scrollToIndex(ee.length-1,{align:"end",behavior:"auto"})},[ee.length,g,V]),o.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[o.jsxs("div",{className:"flex-shrink-0 space-y-4 p-3 sm:p-4 lg:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-3",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-xl sm:text-2xl lg:text-3xl font-bold",children:"日志查看器"}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:"实时查看和分析麦麦运行日志"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("div",{className:xe("h-2.5 w-2.5 sm:h-3 sm:w-3 rounded-full",y?"bg-green-500 animate-pulse":"bg-red-500")}),o.jsx("span",{className:"text-xs sm:text-sm text-muted-foreground",children:y?"已连接":"未连接"})]})]}),o.jsx(Lt,{className:"p-3 sm:p-4",children:o.jsxs("div",{className:"flex flex-col gap-3 sm:gap-4",children:[o.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:gap-4",children:[o.jsxs("div",{className:"flex-1 relative",children:[o.jsx(ii,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(Pe,{placeholder:"搜索日志...",value:n,onChange:L=>r(L.target.value),className:"pl-9 h-9 text-sm"})]}),o.jsxs(Vt,{value:s,onValueChange:i,children:[o.jsxs($t,{className:"w-full sm:w-[140px] lg:w-[180px] h-9 text-sm",children:[o.jsx(ok,{className:"h-4 w-4 mr-2"}),o.jsx(Ut,{placeholder:"级别"})]}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部级别"}),o.jsx(De,{value:"DEBUG",children:"DEBUG"}),o.jsx(De,{value:"INFO",children:"INFO"}),o.jsx(De,{value:"WARNING",children:"WARNING"}),o.jsx(De,{value:"ERROR",children:"ERROR"}),o.jsx(De,{value:"CRITICAL",children:"CRITICAL"})]})]}),o.jsxs(Vt,{value:a,onValueChange:l,children:[o.jsxs($t,{className:"w-full sm:w-[160px] lg:w-[200px] h-9 text-sm",children:[o.jsx(ok,{className:"h-4 w-4 mr-2"}),o.jsx(Ut,{placeholder:"模块"})]}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部模块"}),E.map(L=>o.jsx(De,{value:L,children:L},L))]})]})]}),o.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:gap-4",children:[o.jsxs(Bo,{children:[o.jsx(Fo,{asChild:!0,children:o.jsxs(ue,{variant:"outline",size:"sm",className:xe("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!c&&"text-muted-foreground"),children:[o.jsx(C9,{className:"mr-2 h-4 w-4"}),o.jsx("span",{className:"text-xs sm:text-sm",children:c?Dv(c,"PPP",{locale:K1}):"开始日期"})]})}),o.jsx(Ka,{className:"w-auto p-0",align:"start",children:o.jsx(zz,{mode:"single",selected:c,onSelect:d,initialFocus:!0,locale:K1})})]}),o.jsxs(Bo,{children:[o.jsx(Fo,{asChild:!0,children:o.jsxs(ue,{variant:"outline",size:"sm",className:xe("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!h&&"text-muted-foreground"),children:[o.jsx(C9,{className:"mr-2 h-4 w-4"}),o.jsx("span",{className:"text-xs sm:text-sm",children:h?Dv(h,"PPP",{locale:K1}):"结束日期"})]})}),o.jsx(Ka,{className:"w-auto p-0",align:"start",children:o.jsx(zz,{mode:"single",selected:h,onSelect:m,initialFocus:!0,locale:K1})})]}),(c||h)&&o.jsxs(ue,{variant:"outline",size:"sm",onClick:W,className:"w-full sm:w-auto h-9",children:[o.jsx(Pp,{className:"h-4 w-4 sm:mr-2"}),o.jsx("span",{className:"hidden sm:inline text-sm",children:"清除时间筛选"}),o.jsx("span",{className:"sm:hidden text-sm",children:"清除"})]})]}),o.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center",children:[o.jsxs("div",{className:"flex gap-2 flex-wrap",children:[o.jsxs(ue,{variant:g?"default":"outline",size:"sm",onClick:H,className:"flex-1 sm:flex-none h-9",children:[g?o.jsx(rte,{className:"h-4 w-4"}):o.jsx(ste,{className:"h-4 w-4"}),o.jsx("span",{className:"ml-2 text-sm",children:g?"自动滚动":"已暂停"})]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:D,className:"flex-1 sm:flex-none h-9",children:[o.jsx(Qs,{className:"h-4 w-4"}),o.jsx("span",{className:"ml-2 text-sm",children:"刷新"})]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:q,className:"flex-1 sm:flex-none h-9",children:[o.jsx(Cn,{className:"h-4 w-4"}),o.jsx("span",{className:"ml-2 text-sm",children:"清空"})]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:B,className:"flex-1 sm:flex-none h-9",children:[o.jsx(td,{className:"h-4 w-4"}),o.jsx("span",{className:"ml-2 text-sm",children:"导出"})]})]}),o.jsx("div",{className:"flex-1 hidden sm:block"}),o.jsxs("div",{className:"text-xs sm:text-sm text-muted-foreground flex items-center justify-center sm:justify-end",children:[o.jsxs("span",{className:"font-mono",children:[ee.length," / ",t.length]}),o.jsx("span",{className:"ml-1",children:"条日志"})]})]}),o.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-6 pt-2 border-t border-border/50",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[o.jsx(ite,{className:"h-4 w-4"}),o.jsx("span",{children:"字号"})]}),o.jsx("div",{className:"flex gap-1",children:Object.keys(Z1).map(L=>o.jsx(ue,{variant:S===L?"default":"outline",size:"sm",onClick:()=>k(L),className:"h-7 px-3 text-xs",children:Z1[L].label},L))})]}),o.jsxs("div",{className:"flex items-center gap-3 flex-1 max-w-xs",children:[o.jsx("span",{className:"text-sm text-muted-foreground whitespace-nowrap",children:"行距"}),o.jsx(Nf,{value:[j],onValueChange:([L])=>N(L),min:0,max:12,step:2,className:"flex-1"}),o.jsxs("span",{className:"text-xs text-muted-foreground w-8",children:[j,"px"]})]})]})]})})]}),o.jsx("div",{className:"flex-1 min-h-0 px-3 sm:px-4 lg:px-6 pb-3 sm:pb-4 lg:pb-6",children:o.jsx(Lt,{className:"bg-black dark:bg-gray-950 border-gray-800 dark:border-gray-900 h-full",children:o.jsx(pn,{viewportRef:T,className:"h-full",children:o.jsx("div",{className:xe("p-2 sm:p-3 font-mono relative",Z1[S].class),style:{height:`${V.getTotalSize()}px`},children:ee.length===0?o.jsx("div",{className:"text-gray-500 dark:text-gray-600 text-center py-8 text-sm",children:"暂无日志数据"}):V.getVirtualItems().map(L=>{const $=ee[L.index];return o.jsxs("div",{"data-index":L.index,ref:V.measureElement,className:xe("absolute top-0 left-0 w-full px-2 sm:px-3 rounded hover:bg-white/5 transition-colors group",A($.level)),style:{transform:`translateY(${L.start}px)`,paddingTop:`${j/2}px`,paddingBottom:`${j/2}px`},children:[o.jsxs("div",{className:"flex flex-col gap-0.5 sm:hidden",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"text-gray-500 dark:text-gray-600",children:$.timestamp}),o.jsxs("span",{className:xe("font-semibold",_($.level)),children:["[",$.level,"]"]})]}),o.jsx("div",{className:"text-cyan-400 dark:text-cyan-500 truncate",children:$.module}),o.jsx("div",{className:"text-gray-300 dark:text-gray-400 whitespace-pre-wrap break-words",children:$.message})]}),o.jsxs("div",{className:"hidden sm:flex gap-2 items-start",children:[o.jsx("span",{className:"text-gray-500 dark:text-gray-600 flex-shrink-0 w-[130px] lg:w-[160px]",children:$.timestamp}),o.jsxs("span",{className:xe("flex-shrink-0 w-[65px] lg:w-[75px] font-semibold",_($.level)),children:["[",$.level,"]"]}),o.jsx("span",{className:"text-cyan-400 dark:text-cyan-500 flex-shrink-0 w-[100px] lg:w-[130px] truncate",children:$.module}),o.jsx("span",{className:"text-gray-300 dark:text-gray-400 flex-1 whitespace-pre-wrap break-words",children:$.message})]})]},L.key)})})})})})]})}const kAe="Mai-with-u",OAe="plugin-repo",jAe="main",NAe="plugin_details.json";async function CAe(){try{const t=await gt("/api/webui/plugins/fetch-raw",{method:"POST",headers:Tt(),body:JSON.stringify({owner:kAe,repo:OAe,branch:jAe,file_path:NAe})});if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);const e=await t.json();if(!e.success||!e.data)throw new Error(e.error||"获取插件列表失败");return JSON.parse(e.data).filter(s=>!s?.id||!s?.manifest?(console.warn("跳过无效插件数据:",s),!1):!s.manifest.name||!s.manifest.version?(console.warn("跳过缺少必需字段的插件:",s.id),!1):!0).map(s=>({id:s.id,manifest:{manifest_version:s.manifest.manifest_version||1,name:s.manifest.name,version:s.manifest.version,description:s.manifest.description||"",author:s.manifest.author||{name:"Unknown"},license:s.manifest.license||"Unknown",host_application:s.manifest.host_application||{min_version:"0.0.0"},homepage_url:s.manifest.homepage_url,repository_url:s.manifest.repository_url,keywords:s.manifest.keywords||[],categories:s.manifest.categories||[],default_locale:s.manifest.default_locale||"zh-CN",locales_path:s.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!1,published_at:new Date().toISOString(),updated_at:new Date().toISOString()}))}catch(t){throw console.error("Failed to fetch plugin list:",t),t}}async function TAe(){try{const t=await gt("/api/webui/plugins/git-status");if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);return await t.json()}catch(t){return console.error("Failed to check Git status:",t),{installed:!1,error:"无法检测 Git 安装状态"}}}async function EAe(){try{const t=await gt("/api/webui/plugins/version");if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);return await t.json()}catch(t){return console.error("Failed to get Maimai version:",t),{version:"0.0.0",version_major:0,version_minor:0,version_patch:0}}}function _Ae(t,e,n){const r=t.split(".").map(l=>parseInt(l)||0),s=r[0]||0,i=r[1]||0,a=r[2]||0;if(n.version_majorparseInt(m)||0),c=l[0]||0,d=l[1]||0,h=l[2]||0;if(n.version_major>c||n.version_major===c&&n.version_minor>d||n.version_major===c&&n.version_minor===d&&n.version_patch>h)return!1}return!0}function AAe(t,e){const n=window.location.protocol==="https:"?"wss:":"ws:",r=window.location.host,s=new WebSocket(`${n}//${r}/api/webui/ws/plugin-progress`);return s.onopen=()=>{console.log("Plugin progress WebSocket connected");const i=setInterval(()=>{s.readyState===WebSocket.OPEN?s.send("ping"):clearInterval(i)},3e4)},s.onmessage=i=>{try{if(i.data==="pong")return;const a=JSON.parse(i.data);t(a)}catch(a){console.error("Failed to parse progress data:",a)}},s.onerror=i=>{console.error("Plugin progress WebSocket error:",i),e?.(i)},s.onclose=()=>{console.log("Plugin progress WebSocket disconnected")},s}async function v0(){try{const t=await gt("/api/webui/plugins/installed",{headers:Tt()});if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);const e=await t.json();if(!e.success)throw new Error(e.message||"获取已安装插件列表失败");return e.plugins||[]}catch(t){return console.error("Failed to get installed plugins:",t),[]}}function J1(t,e){return e.some(n=>n.id===t)}function ev(t,e){const n=e.find(r=>r.id===t);if(n)return n.manifest?.version||n.version}async function MAe(t,e,n="main"){const r=await gt("/api/webui/plugins/install",{method:"POST",headers:Tt(),body:JSON.stringify({plugin_id:t,repository_url:e,branch:n})});if(!r.ok){const s=await r.json();throw new Error(s.detail||"安装失败")}return await r.json()}async function RAe(t){const e=await gt("/api/webui/plugins/uninstall",{method:"POST",headers:Tt(),body:JSON.stringify({plugin_id:t})});if(!e.ok){const n=await e.json();throw new Error(n.detail||"卸载失败")}return await e.json()}async function DAe(t,e,n="main"){const r=await gt("/api/webui/plugins/update",{method:"POST",headers:Tt(),body:JSON.stringify({plugin_id:t,repository_url:e,branch:n})});if(!r.ok){const s=await r.json();throw new Error(s.detail||"更新失败")}return await r.json()}async function PAe(t){const e=await gt(`/api/webui/plugins/config/${t}/schema`,{headers:Tt()});if(!e.ok){const r=await e.json();throw new Error(r.detail||"获取配置 Schema 失败")}const n=await e.json();if(!n.success)throw new Error(n.message||"获取配置 Schema 失败");return n.schema}async function zAe(t){const e=await gt(`/api/webui/plugins/config/${t}`,{headers:Tt()});if(!e.ok){const r=await e.json();throw new Error(r.detail||"获取配置失败")}const n=await e.json();if(!n.success)throw new Error(n.message||"获取配置失败");return n.config}async function IAe(t,e){const n=await gt(`/api/webui/plugins/config/${t}`,{method:"PUT",headers:Tt(),body:JSON.stringify({config:e})});if(!n.ok){const r=await n.json();throw new Error(r.detail||"保存配置失败")}return await n.json()}async function LAe(t){const e=await gt(`/api/webui/plugins/config/${t}/reset`,{method:"POST",headers:Tt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"重置配置失败")}return await e.json()}async function BAe(t){const e=await gt(`/api/webui/plugins/config/${t}/toggle`,{method:"POST",headers:Tt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"切换状态失败")}return await e.json()}const Cg="https://maibot-plugin-stats.maibot-webui.workers.dev";async function pX(t){try{const e=await fetch(`${Cg}/stats/${t}`);return e.ok?await e.json():(console.error("Failed to fetch plugin stats:",e.statusText),null)}catch(e){return console.error("Error fetching plugin stats:",e),null}}async function FAe(t,e){try{const n=e||v7(),r=await fetch(`${Cg}/stats/like`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t,user_id:n})}),s=await r.json();return r.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:r.ok?{success:!0,...s}:{success:!1,error:s.error||"点赞失败"}}catch(n){return console.error("Error liking plugin:",n),{success:!1,error:"网络错误"}}}async function qAe(t,e){try{const n=e||v7(),r=await fetch(`${Cg}/stats/dislike`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t,user_id:n})}),s=await r.json();return r.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:r.ok?{success:!0,...s}:{success:!1,error:s.error||"点踩失败"}}catch(n){return console.error("Error disliking plugin:",n),{success:!1,error:"网络错误"}}}async function $Ae(t,e,n,r){if(e<1||e>5)return{success:!1,error:"评分必须在 1-5 之间"};try{const s=r||v7(),i=await fetch(`${Cg}/stats/rate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t,rating:e,comment:n,user_id:s})}),a=await i.json();return i.status===429?{success:!1,error:"每天最多评分 3 次"}:i.ok?{success:!0,...a}:{success:!1,error:a.error||"评分失败"}}catch(s){return console.error("Error rating plugin:",s),{success:!1,error:"网络错误"}}}async function HAe(t){try{const e=await fetch(`${Cg}/stats/download`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t})}),n=await e.json();return e.status===429?(console.warn("Download recording rate limited"),{success:!0}):e.ok?{success:!0,...n}:(console.error("Failed to record download:",n.error),{success:!1,error:n.error})}catch(e){return console.error("Error recording download:",e),{success:!1,error:"网络错误"}}}function QAe(){const t=navigator,e=[navigator.userAgent,navigator.language,navigator.languages?.join(",")||"",navigator.platform,navigator.hardwareConcurrency||0,screen.width,screen.height,screen.colorDepth,screen.pixelDepth,new Date().getTimezoneOffset(),Intl.DateTimeFormat().resolvedOptions().timeZone,navigator.maxTouchPoints||0,t.deviceMemory||0].join("|");let n=0;for(let r=0;r{i(!0);const k=await pX(t);k&&r(k),i(!1)};b.useEffect(()=>{x()},[t]);const y=async()=>{const k=await FAe(t);k.success?(g({title:"已点赞",description:"感谢你的支持!"}),x()):g({title:"点赞失败",description:k.error||"未知错误",variant:"destructive"})},w=async()=>{const k=await qAe(t);k.success?(g({title:"已反馈",description:"感谢你的反馈!"}),x()):g({title:"操作失败",description:k.error||"未知错误",variant:"destructive"})},S=async()=>{if(a===0){g({title:"请选择评分",description:"至少选择 1 颗星",variant:"destructive"});return}const k=await $Ae(t,a,c||void 0);k.success?(g({title:"评分成功",description:"感谢你的评价!"}),m(!1),l(0),d(""),x()):g({title:"评分失败",description:k.error||"未知错误",variant:"destructive"})};return s?o.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(td,{className:"h-4 w-4"}),o.jsx("span",{children:"-"})]}),o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(Dc,{className:"h-4 w-4"}),o.jsx("span",{children:"-"})]})]}):n?e?o.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[o.jsxs("div",{className:"flex items-center gap-1",title:`下载量: ${n.downloads.toLocaleString()}`,children:[o.jsx(td,{className:"h-4 w-4"}),o.jsx("span",{children:n.downloads.toLocaleString()})]}),o.jsxs("div",{className:"flex items-center gap-1",title:`评分: ${n.rating.toFixed(1)} (${n.rating_count} 条评价)`,children:[o.jsx(Dc,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),o.jsx("span",{children:n.rating.toFixed(1)})]}),o.jsxs("div",{className:"flex items-center gap-1",title:`点赞数: ${n.likes}`,children:[o.jsx(k4,{className:"h-4 w-4"}),o.jsx("span",{children:n.likes})]})]}):o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-4",children:[o.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[o.jsx(td,{className:"h-5 w-5 text-muted-foreground mb-1"}),o.jsx("span",{className:"text-2xl font-bold",children:n.downloads.toLocaleString()}),o.jsx("span",{className:"text-xs text-muted-foreground",children:"下载量"})]}),o.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[o.jsx(Dc,{className:"h-5 w-5 text-yellow-400 mb-1 fill-yellow-400"}),o.jsx("span",{className:"text-2xl font-bold",children:n.rating.toFixed(1)}),o.jsxs("span",{className:"text-xs text-muted-foreground",children:[n.rating_count," 条评价"]})]}),o.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[o.jsx(k4,{className:"h-5 w-5 text-green-500 mb-1"}),o.jsx("span",{className:"text-2xl font-bold",children:n.likes}),o.jsx("span",{className:"text-xs text-muted-foreground",children:"点赞"})]}),o.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[o.jsx(T9,{className:"h-5 w-5 text-red-500 mb-1"}),o.jsx("span",{className:"text-2xl font-bold",children:n.dislikes}),o.jsx("span",{className:"text-xs text-muted-foreground",children:"点踩"})]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsxs(ue,{variant:"outline",size:"sm",onClick:y,children:[o.jsx(k4,{className:"h-4 w-4 mr-1"}),"点赞"]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:w,children:[o.jsx(T9,{className:"h-4 w-4 mr-1"}),"点踩"]}),o.jsxs(Er,{open:h,onOpenChange:m,children:[o.jsx(Of,{asChild:!0,children:o.jsxs(ue,{variant:"default",size:"sm",children:[o.jsx(Dc,{className:"h-4 w-4 mr-1"}),"评分"]})}),o.jsxs(wr,{children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"为插件评分"}),o.jsx(Xr,{children:"分享你的使用体验,帮助其他用户"})]}),o.jsxs("div",{className:"space-y-4 py-4",children:[o.jsxs("div",{className:"flex flex-col items-center gap-2",children:[o.jsx("div",{className:"flex gap-2",children:[1,2,3,4,5].map(k=>o.jsx("button",{onClick:()=>l(k),className:"focus:outline-none",children:o.jsx(Dc,{className:`h-8 w-8 transition-colors ${k<=a?"fill-yellow-400 text-yellow-400":"text-muted-foreground hover:text-yellow-300"}`})},k))}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:[a===0&&"点击星星进行评分",a===1&&"很差",a===2&&"一般",a===3&&"还行",a===4&&"不错",a===5&&"非常好"]})]}),o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium mb-2 block",children:"评论(可选)"}),o.jsx(Nr,{value:c,onChange:k=>d(k.target.value),placeholder:"分享你的使用体验...",rows:4,maxLength:500}),o.jsxs("div",{className:"text-xs text-muted-foreground mt-1 text-right",children:[c.length," / 500"]})]})]}),o.jsxs(fs,{children:[o.jsx(ue,{variant:"outline",onClick:()=>m(!1),children:"取消"}),o.jsx(ue,{onClick:S,disabled:a===0,children:"提交评分"})]})]})]})]}),n.recent_ratings&&n.recent_ratings.length>0&&o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"text-sm font-semibold",children:"最近评价"}),o.jsx("div",{className:"space-y-3",children:n.recent_ratings.map((k,j)=>o.jsxs("div",{className:"p-3 rounded-lg border bg-muted/50",children:[o.jsxs("div",{className:"flex items-center justify-between mb-2",children:[o.jsx("div",{className:"flex gap-1",children:[1,2,3,4,5].map(N=>o.jsx(Dc,{className:`h-3 w-3 ${N<=k.rating?"fill-yellow-400 text-yellow-400":"text-muted-foreground"}`},N))}),o.jsx("span",{className:"text-xs text-muted-foreground",children:new Date(k.created_at).toLocaleDateString()})]}),k.comment&&o.jsx("p",{className:"text-sm text-muted-foreground",children:k.comment})]},j))})]})]}):null}const Lz={"Group Management":"群组管理","Entertainment & Interaction":"娱乐互动","Utility Tools":"实用工具","Content Generation":"内容生成",Multimedia:"多媒体","External Integration":"外部集成","Data Analysis & Insights":"数据分析与洞察",Other:"其他"};function UAe(){const t=na(),[e,n]=b.useState(null),[r,s]=b.useState(""),[i,a]=b.useState("all"),[l,c]=b.useState("all"),[d,h]=b.useState(!0),[m,g]=b.useState([]),[x,y]=b.useState(!0),[w,S]=b.useState(null),[k,j]=b.useState(null),[N,T]=b.useState(null),[E,_]=b.useState(null),[,A]=b.useState([]),[D,q]=b.useState({}),{toast:B}=Lr(),H=async R=>{const ie=R.map(async U=>{try{const te=await pX(U.id);return{id:U.id,stats:te}}catch(te){return console.warn(`Failed to load stats for ${U.id}:`,te),{id:U.id,stats:null}}}),X=await Promise.all(ie),z={};X.forEach(({id:U,stats:te})=>{te&&(z[U]=te)}),q(z)};b.useEffect(()=>{let R=null,ie=!1;return(async()=>{if(R=AAe(z=>{ie||(T(z),z.stage==="success"?setTimeout(()=>{ie||T(null)},2e3):z.stage==="error"&&(y(!1),S(z.error||"加载失败")))},z=>{console.error("WebSocket error:",z),ie||B({title:"WebSocket 连接失败",description:"无法实时显示加载进度",variant:"destructive"})}),await new Promise(z=>{if(!R){z();return}const U=()=>{R&&R.readyState===WebSocket.OPEN?(console.log("WebSocket connected, starting to load plugins"),z()):R&&R.readyState===WebSocket.CLOSED?(console.warn("WebSocket closed before loading plugins"),z()):setTimeout(U,100)};U()}),!ie){const z=await TAe();j(z),z.installed||B({title:"Git 未安装",description:z.error||"请先安装 Git 才能使用插件安装功能",variant:"destructive"})}if(!ie){const z=await EAe();_(z)}if(!ie)try{y(!0),S(null);const z=await CAe();if(!ie){const U=await v0();A(U);const te=z.map(ne=>{const G=J1(ne.id,U),se=ev(ne.id,U);return{...ne,installed:G,installed_version:se}});for(const ne of U)!te.some(se=>se.id===ne.id)&&ne.manifest&&te.push({id:ne.id,manifest:{manifest_version:ne.manifest.manifest_version||1,name:ne.manifest.name,version:ne.manifest.version,description:ne.manifest.description||"",author:ne.manifest.author,license:ne.manifest.license||"Unknown",host_application:ne.manifest.host_application,homepage_url:ne.manifest.homepage_url,repository_url:ne.manifest.repository_url,keywords:ne.manifest.keywords||[],categories:ne.manifest.categories||[],default_locale:ne.manifest.default_locale||"zh-CN",locales_path:ne.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!0,installed_version:ne.manifest.version,published_at:new Date().toISOString(),updated_at:new Date().toISOString()});g(te),H(te)}}catch(z){if(!ie){const U=z instanceof Error?z.message:"加载插件列表失败";S(U),B({title:"加载失败",description:U,variant:"destructive"})}}finally{ie||y(!1)}})(),()=>{ie=!0,R&&R.close()}},[B]);const W=R=>{if(!R.installed&&E&&!ee(R))return o.jsxs(tn,{variant:"destructive",className:"gap-1",children:[o.jsx(Lo,{className:"h-3 w-3"}),"不兼容"]});if(R.installed){const ie=R.installed_version?.trim(),X=R.manifest.version?.trim();if(ie!==X){const z=ie?.split(".").map(Number)||[0,0,0],U=X?.split(".").map(Number)||[0,0,0];for(let te=0;te<3;te++){if((U[te]||0)>(z[te]||0))return o.jsxs(tn,{variant:"outline",className:"gap-1 text-orange-600 border-orange-600",children:[o.jsx(Lo,{className:"h-3 w-3"}),"可更新"]});if((U[te]||0)<(z[te]||0))break}}return o.jsxs(tn,{variant:"default",className:"gap-1",children:[o.jsx(Ya,{className:"h-3 w-3"}),"已安装"]})}return null},ee=R=>!E||!R.manifest?.host_application?!0:_Ae(R.manifest.host_application.min_version,R.manifest.host_application.max_version,E),I=R=>{if(!R.installed||!R.installed_version||!R.manifest?.version)return!1;const ie=R.installed_version.trim(),X=R.manifest.version.trim();if(ie===X)return!1;const z=ie.split(".").map(Number),U=X.split(".").map(Number);for(let te=0;te<3;te++){if((U[te]||0)>(z[te]||0))return!0;if((U[te]||0)<(z[te]||0))return!1}return!1},V=m.filter(R=>{if(!R.manifest)return console.warn("[过滤] 跳过无 manifest 的插件:",R.id),!1;const ie=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(te=>te.toLowerCase().includes(r.toLowerCase())),X=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i);let z=!0;l==="installed"?z=R.installed===!0:l==="updates"&&(z=R.installed===!0&&I(R));const U=!d||!E||ee(R);return ie&&X&&z&&U}),L=()=>{n(null)},$=async R=>{if(!k?.installed){B({title:"无法安装",description:"Git 未安装",variant:"destructive"});return}if(E&&!ee(R)){B({title:"无法安装",description:"插件与当前麦麦版本不兼容",variant:"destructive"});return}try{await MAe(R.id,R.manifest.repository_url||"","main"),HAe(R.id).catch(X=>{console.warn("Failed to record download:",X)}),B({title:"安装成功",description:`${R.manifest.name} 已成功安装`});const ie=await v0();A(ie),g(X=>X.map(z=>{if(z.id===R.id){const U=J1(z.id,ie),te=ev(z.id,ie);return{...z,installed:U,installed_version:te}}return z}))}catch(ie){B({title:"安装失败",description:ie instanceof Error?ie.message:"未知错误",variant:"destructive"})}},K=async R=>{try{await RAe(R.id),B({title:"卸载成功",description:`${R.manifest.name} 已成功卸载`});const ie=await v0();A(ie),g(X=>X.map(z=>{if(z.id===R.id){const U=J1(z.id,ie),te=ev(z.id,ie);return{...z,installed:U,installed_version:te}}return z}))}catch(ie){B({title:"卸载失败",description:ie instanceof Error?ie.message:"未知错误",variant:"destructive"})}},Y=async R=>{if(!k?.installed){B({title:"无法更新",description:"Git 未安装",variant:"destructive"});return}try{const ie=await DAe(R.id,R.manifest.repository_url||"","main");B({title:"更新成功",description:`${R.manifest.name} 已从 ${ie.old_version} 更新到 ${ie.new_version}`});const X=await v0();A(X),g(z=>z.map(U=>{if(U.id===R.id){const te=J1(U.id,X),ne=ev(U.id,X);return{...U,installed:te,installed_version:ne}}return U}))}catch(ie){B({title:"更新失败",description:ie instanceof Error?ie.message:"未知错误",variant:"destructive"})}};return o.jsx(pn,{className:"h-full",children:o.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件市场"}),o.jsx("p",{className:"text-muted-foreground mt-2",children:"浏览和管理麦麦的插件"})]}),o.jsxs(ue,{onClick:()=>t({to:"/plugin-mirrors"}),children:[o.jsx(ate,{className:"h-4 w-4 mr-2"}),"配置镜像源"]})]}),k&&!k.installed&&o.jsxs(Lt,{className:"border-orange-600 bg-orange-50 dark:bg-orange-950/20",children:[o.jsx(En,{children:o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx(Ga,{className:"h-5 w-5 text-orange-600"}),o.jsxs("div",{children:[o.jsx(_n,{className:"text-lg text-orange-900 dark:text-orange-100",children:"Git 未安装"}),o.jsx(Wr,{className:"text-orange-800 dark:text-orange-200",children:k.error||"请先安装 Git 才能使用插件安装功能"})]})]})}),o.jsx(Xn,{children:o.jsxs("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:["您可以从 ",o.jsx("a",{href:"https://git-scm.com/downloads",target:"_blank",rel:"noopener noreferrer",className:"underline font-medium",children:"git-scm.com"})," 下载并安装 Git。 安装完成后,请重启麦麦应用。"]})})]}),o.jsx(Lt,{className:"p-4",children:o.jsxs("div",{className:"flex flex-col gap-4",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[o.jsxs("div",{className:"flex-1 relative",children:[o.jsx(ii,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(Pe,{placeholder:"搜索插件...",value:r,onChange:R=>s(R.target.value),className:"pl-9"})]}),o.jsxs(Vt,{value:i,onValueChange:a,children:[o.jsx($t,{className:"w-full sm:w-[200px]",children:o.jsx(Ut,{placeholder:"选择分类"})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部分类"}),o.jsx(De,{value:"Group Management",children:"群组管理"}),o.jsx(De,{value:"Entertainment & Interaction",children:"娱乐互动"}),o.jsx(De,{value:"Utility Tools",children:"实用工具"}),o.jsx(De,{value:"Content Generation",children:"内容生成"}),o.jsx(De,{value:"Multimedia",children:"多媒体"}),o.jsx(De,{value:"External Integration",children:"外部集成"}),o.jsx(De,{value:"Data Analysis & Insights",children:"数据分析与洞察"}),o.jsx(De,{value:"Other",children:"其他"})]})]})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ci,{id:"compatible-only",checked:d,onCheckedChange:R=>h(R===!0)}),o.jsx("label",{htmlFor:"compatible-only",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer",children:"只显示兼容当前版本的插件"})]})]})}),o.jsx(Yi,{value:l,onValueChange:c,className:"w-full",children:o.jsxs(ji,{className:"grid w-full grid-cols-3",children:[o.jsxs(Bt,{value:"all",children:["全部插件 (",m.filter(R=>{if(!R.manifest)return!1;const ie=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(U=>U.toLowerCase().includes(r.toLowerCase())),X=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i),z=!d||!E||ee(R);return ie&&X&&z}).length,")"]}),o.jsxs(Bt,{value:"installed",children:["已安装 (",m.filter(R=>{if(!R.manifest)return!1;const ie=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(U=>U.toLowerCase().includes(r.toLowerCase())),X=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i),z=!d||!E||ee(R);return R.installed&&ie&&X&&z}).length,")"]}),o.jsxs(Bt,{value:"updates",children:["可更新 (",m.filter(R=>{if(!R.manifest)return!1;const ie=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(U=>U.toLowerCase().includes(r.toLowerCase())),X=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i),z=!d||!E||ee(R);return R.installed&&I(R)&&ie&&X&&z}).length,")"]})]})}),N&&N.stage==="loading"&&o.jsx(Lt,{className:"p-4",children:o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Us,{className:"h-4 w-4 animate-spin"}),o.jsxs("span",{className:"text-sm font-medium",children:[N.operation==="fetch"&&"加载插件列表",N.operation==="install"&&`安装插件${N.plugin_id?`: ${N.plugin_id}`:""}`,N.operation==="uninstall"&&`卸载插件${N.plugin_id?`: ${N.plugin_id}`:""}`,N.operation==="update"&&`更新插件${N.plugin_id?`: ${N.plugin_id}`:""}`]})]}),o.jsxs("span",{className:"text-sm font-medium",children:[N.progress,"%"]})]}),o.jsx(Qp,{value:N.progress,className:"h-2"}),o.jsx("div",{className:"text-xs text-muted-foreground",children:N.message}),N.operation==="fetch"&&N.total_plugins>0&&o.jsxs("div",{className:"text-xs text-muted-foreground text-center",children:["已加载 ",N.loaded_plugins," / ",N.total_plugins," 个插件"]})]})}),N&&N.stage==="error"&&N.error&&o.jsx(Lt,{className:"border-destructive bg-destructive/10",children:o.jsx(En,{children:o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx(Ga,{className:"h-5 w-5 text-destructive"}),o.jsxs("div",{children:[o.jsx(_n,{className:"text-lg text-destructive",children:"加载失败"}),o.jsx(Wr,{className:"text-destructive/80",children:N.error})]})]})})}),x?o.jsxs("div",{className:"flex items-center justify-center py-12",children:[o.jsx(Us,{className:"h-8 w-8 animate-spin text-muted-foreground"}),o.jsx("span",{className:"ml-3 text-muted-foreground",children:"加载插件列表中..."})]}):w?o.jsx(Lt,{className:"p-6",children:o.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[o.jsx(Ga,{className:"h-12 w-12 text-destructive mb-4"}),o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),o.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:w}),o.jsx(ue,{onClick:()=>window.location.reload(),children:"重新加载"})]})}):V.length===0?o.jsx(Lt,{className:"p-6",children:o.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[o.jsx(ii,{className:"h-12 w-12 text-muted-foreground mb-4"}),o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"未找到插件"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:r||i!=="all"?"尝试调整搜索条件或筛选器":"暂无可用插件"})]})}):o.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:V.map(R=>o.jsxs(Lt,{className:"flex flex-col hover:shadow-lg transition-shadow h-full",children:[o.jsxs(En,{children:[o.jsxs("div",{className:"flex items-start justify-between gap-2",children:[o.jsx(_n,{className:"text-xl",children:R.manifest?.name||R.id}),o.jsxs("div",{className:"flex flex-col gap-1",children:[R.manifest?.categories&&R.manifest.categories[0]&&o.jsx(tn,{variant:"secondary",className:"text-xs whitespace-nowrap",children:Lz[R.manifest.categories[0]]||R.manifest.categories[0]}),W(R)]})]}),o.jsx(Wr,{className:"line-clamp-2",children:R.manifest?.description||"无描述"})]}),o.jsx(Xn,{className:"flex-1",children:o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(td,{className:"h-4 w-4"}),o.jsx("span",{children:(D[R.id]?.downloads??R.downloads??0).toLocaleString()})]}),o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(Dc,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),o.jsx("span",{children:(D[R.id]?.rating??R.rating??0).toFixed(1)})]})]}),o.jsxs("div",{className:"flex flex-wrap gap-2",children:[R.manifest?.keywords&&R.manifest.keywords.slice(0,3).map(ie=>o.jsx(tn,{variant:"outline",className:"text-xs",children:ie},ie)),R.manifest?.keywords&&R.manifest.keywords.length>3&&o.jsxs(tn,{variant:"outline",className:"text-xs",children:["+",R.manifest.keywords.length-3]})]}),o.jsxs("div",{className:"text-xs text-muted-foreground pt-2 border-t space-y-1",children:[o.jsxs("div",{children:["v",R.manifest?.version||"unknown"," · ",R.manifest?.author?.name||"Unknown"]}),R.manifest?.host_application&&o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx("span",{children:"支持:"}),o.jsxs("span",{className:"font-medium",children:[R.manifest.host_application.min_version,R.manifest.host_application.max_version?` - ${R.manifest.host_application.max_version}`:" - 最新版本"]})]})]})]})}),o.jsx(hL,{className:"pt-4",children:o.jsxs("div",{className:"flex items-center justify-end gap-2 w-full",children:[o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>n(R),children:"查看详情"}),R.installed?I(R)?o.jsxs(ue,{size:"sm",disabled:!k?.installed,title:k?.installed?void 0:"Git 未安装",onClick:()=>Y(R),children:[o.jsx(Qs,{className:"h-4 w-4 mr-1"}),"更新"]}):o.jsxs(ue,{variant:"destructive",size:"sm",disabled:!k?.installed,title:k?.installed?void 0:"Git 未安装",onClick:()=>K(R),children:[o.jsx(Cn,{className:"h-4 w-4 mr-1"}),"卸载"]}):o.jsxs(ue,{size:"sm",disabled:!k?.installed||N?.operation==="install"||E!==null&&!ee(R),title:k?.installed?E!==null&&!ee(R)?`不兼容当前版本 (需要 ${R.manifest?.host_application?.min_version||"未知"}${R.manifest?.host_application?.max_version?` - ${R.manifest.host_application.max_version}`:"+"},当前 ${E?.version})`:void 0:"Git 未安装",onClick:()=>$(R),children:[o.jsx(td,{className:"h-4 w-4 mr-1"}),N?.operation==="install"&&N?.plugin_id===R.id?"安装中...":"安装"]})]})})]},R.id))}),o.jsx(Er,{open:e!==null,onOpenChange:L,children:e&&e.manifest&&o.jsxs(wr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsx(Sr,{children:o.jsxs("div",{className:"flex items-start justify-between gap-4",children:[o.jsxs("div",{className:"space-y-2 flex-1",children:[o.jsx(kr,{className:"text-2xl",children:e.manifest.name}),o.jsxs(Xr,{children:["作者: ",e.manifest.author?.name||"Unknown",e.manifest.author?.url&&o.jsx("a",{href:e.manifest.author.url,target:"_blank",rel:"noopener noreferrer",className:"ml-2 text-primary hover:underline",children:o.jsx(w0,{className:"h-3 w-3 inline"})})]})]}),o.jsxs("div",{className:"flex flex-col gap-2",children:[e.manifest.categories&&e.manifest.categories[0]&&o.jsx(tn,{variant:"secondary",children:Lz[e.manifest.categories[0]]||e.manifest.categories[0]}),W(e)]})]})}),o.jsxs("div",{className:"space-y-6",children:[o.jsx(VAe,{pluginId:e.id}),o.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-4",children:[o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:"版本"}),o.jsxs("p",{className:"text-sm text-muted-foreground",children:["v",e.manifest?.version||"unknown"]}),e.installed&&e.installed_version&&o.jsxs("p",{className:"text-xs text-muted-foreground",children:["已安装: v",e.installed_version]})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:"下载量"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:(D[e.id]?.downloads??e.downloads??0).toLocaleString()})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:"评分"}),o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(Dc,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:[(D[e.id]?.rating??e.rating??0).toFixed(1)," (",D[e.id]?.rating_count??e.review_count??0,")"]})]})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:"许可证"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:e.manifest.license||"Unknown"})]}),o.jsxs("div",{className:"col-span-2",children:[o.jsx("p",{className:"text-sm font-medium",children:"支持版本"}),o.jsxs("p",{className:"text-sm text-muted-foreground",children:[e.manifest.host_application?.min_version||"未知",e.manifest.host_application?.max_version?` - ${e.manifest.host_application.max_version}`:" - 最新版本"]})]})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium mb-2",children:"关键词"}),o.jsx("div",{className:"flex flex-wrap gap-2",children:e.manifest.keywords&&e.manifest.keywords.map(R=>o.jsx(tn,{variant:"outline",children:R},R))})]}),e.detailed_description&&o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium mb-2",children:"详细说明"}),o.jsx("p",{className:"text-sm text-muted-foreground whitespace-pre-line",children:e.detailed_description})]}),!e.detailed_description&&o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium mb-2",children:"说明"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:e.manifest.description||"无描述"})]}),o.jsxs("div",{className:"space-y-2",children:[e.manifest.homepage_url&&o.jsxs("div",{className:"text-sm",children:[o.jsx("span",{className:"font-medium",children:"主页: "}),o.jsx("a",{href:e.manifest.homepage_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:e.manifest.homepage_url})]}),e.manifest.repository_url&&o.jsxs("div",{className:"text-sm",children:[o.jsx("span",{className:"font-medium",children:"仓库: "}),o.jsx("a",{href:e.manifest.repository_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:e.manifest.repository_url})]})]})]}),o.jsxs(fs,{children:[e.manifest.homepage_url&&o.jsxs(ue,{onClick:()=>window.open(e.manifest.homepage_url,"_blank"),children:[o.jsx(w0,{className:"h-4 w-4 mr-2"}),"访问主页"]}),e.manifest.repository_url&&o.jsxs(ue,{variant:"outline",onClick:()=>window.open(e.manifest.repository_url,"_blank"),children:[o.jsx(w0,{className:"h-4 w-4 mr-2"}),"查看仓库"]})]})]})})]})})}var ow="Collapsible",[WAe]=Da(ow),[GAe,y7]=WAe(ow),gX=b.forwardRef((t,e)=>{const{__scopeCollapsible:n,open:r,defaultOpen:s,disabled:i,onOpenChange:a,...l}=t,[c,d]=Kl({prop:r,defaultProp:s??!1,onChange:a,caller:ow});return o.jsx(GAe,{scope:n,disabled:i,contentId:Gi(),open:c,onOpenToggle:b.useCallback(()=>d(h=>!h),[d]),children:o.jsx(Sn.div,{"data-state":w7(c),"data-disabled":i?"":void 0,...l,ref:e})})});gX.displayName=ow;var xX="CollapsibleTrigger",vX=b.forwardRef((t,e)=>{const{__scopeCollapsible:n,...r}=t,s=y7(xX,n);return o.jsx(Sn.button,{type:"button","aria-controls":s.contentId,"aria-expanded":s.open||!1,"data-state":w7(s.open),"data-disabled":s.disabled?"":void 0,disabled:s.disabled,...r,ref:e,onClick:nt(t.onClick,s.onOpenToggle)})});vX.displayName=xX;var b7="CollapsibleContent",yX=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=y7(b7,t.__scopeCollapsible);return o.jsx(oi,{present:n||s.open,children:({present:i})=>o.jsx(XAe,{...r,ref:e,present:i})})});yX.displayName=b7;var XAe=b.forwardRef((t,e)=>{const{__scopeCollapsible:n,present:r,children:s,...i}=t,a=y7(b7,n),[l,c]=b.useState(r),d=b.useRef(null),h=er(e,d),m=b.useRef(0),g=m.current,x=b.useRef(0),y=x.current,w=a.open||l,S=b.useRef(w),k=b.useRef(void 0);return b.useEffect(()=>{const j=requestAnimationFrame(()=>S.current=!1);return()=>cancelAnimationFrame(j)},[]),Wh(()=>{const j=d.current;if(j){k.current=k.current||{transitionDuration:j.style.transitionDuration,animationName:j.style.animationName},j.style.transitionDuration="0s",j.style.animationName="none";const N=j.getBoundingClientRect();m.current=N.height,x.current=N.width,S.current||(j.style.transitionDuration=k.current.transitionDuration,j.style.animationName=k.current.animationName),c(r)}},[a.open,r]),o.jsx(Sn.div,{"data-state":w7(a.open),"data-disabled":a.disabled?"":void 0,id:a.contentId,hidden:!w,...i,ref:h,style:{"--radix-collapsible-content-height":g?`${g}px`:void 0,"--radix-collapsible-content-width":y?`${y}px`:void 0,...t.style},children:w&&s})});function w7(t){return t?"open":"closed"}var YAe=gX;const hj=YAe,fj=vX,mj=yX;function KAe({field:t,value:e,onChange:n}){const[r,s]=b.useState(!1);switch(t.ui_type){case"switch":return o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:t.label}),t.hint&&o.jsx("p",{className:"text-xs text-muted-foreground",children:t.hint})]}),o.jsx(Ft,{checked:!!e,onCheckedChange:n,disabled:t.disabled})]});case"number":return o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:t.label}),o.jsx(Pe,{type:"number",value:e??t.default,onChange:i=>n(parseFloat(i.target.value)||0),min:t.min,max:t.max,step:t.step??1,placeholder:t.placeholder,disabled:t.disabled}),t.hint&&o.jsx("p",{className:"text-xs text-muted-foreground",children:t.hint})]});case"slider":return o.jsxs("div",{className:"space-y-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{children:t.label}),o.jsx("span",{className:"text-sm text-muted-foreground",children:e??t.default})]}),o.jsx(Nf,{value:[e??t.default],onValueChange:i=>n(i[0]),min:t.min??0,max:t.max??100,step:t.step??1,disabled:t.disabled}),t.hint&&o.jsx("p",{className:"text-xs text-muted-foreground",children:t.hint})]});case"select":return o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:t.label}),o.jsxs(Vt,{value:String(e??t.default),onValueChange:n,disabled:t.disabled,children:[o.jsx($t,{children:o.jsx(Ut,{placeholder:t.placeholder??"请选择"})}),o.jsx(Ht,{children:t.choices?.map(i=>o.jsx(De,{value:String(i),children:String(i)},String(i)))})]}),t.hint&&o.jsx("p",{className:"text-xs text-muted-foreground",children:t.hint})]});case"textarea":return o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:t.label}),o.jsx(Nr,{value:e??t.default,onChange:i=>n(i.target.value),placeholder:t.placeholder,rows:t.rows??3,disabled:t.disabled}),t.hint&&o.jsx("p",{className:"text-xs text-muted-foreground",children:t.hint})]});case"password":return o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:t.label}),o.jsxs("div",{className:"relative",children:[o.jsx(Pe,{type:r?"text":"password",value:e??"",onChange:i=>n(i.target.value),placeholder:t.placeholder,disabled:t.disabled,className:"pr-10"}),o.jsx(ue,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-3",onClick:()=>s(!r),children:r?o.jsx(I0,{className:"h-4 w-4"}):o.jsx(Ji,{className:"h-4 w-4"})})]}),t.hint&&o.jsx("p",{className:"text-xs text-muted-foreground",children:t.hint})]});case"text":default:return o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:t.label}),o.jsx(Pe,{type:"text",value:e??t.default??"",onChange:i=>n(i.target.value),placeholder:t.placeholder,maxLength:t.max_length,disabled:t.disabled}),t.hint&&o.jsx("p",{className:"text-xs text-muted-foreground",children:t.hint})]})}}function Bz({section:t,config:e,onChange:n}){const[r,s]=b.useState(!t.collapsed),i=Object.entries(t.fields).filter(([,a])=>!a.hidden).sort(([,a],[,l])=>a.order-l.order);return o.jsx(hj,{open:r,onOpenChange:s,children:o.jsxs(Lt,{children:[o.jsx(fj,{asChild:!0,children:o.jsxs(En,{className:"cursor-pointer hover:bg-muted/50 transition-colors",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[r?o.jsx(Xc,{className:"h-4 w-4 text-muted-foreground"}):o.jsx(Zl,{className:"h-4 w-4 text-muted-foreground"}),o.jsx(_n,{className:"text-lg",children:t.title})]}),o.jsxs(tn,{variant:"secondary",className:"text-xs",children:[i.length," 项"]})]}),t.description&&o.jsx(Wr,{className:"ml-6",children:t.description})]})}),o.jsx(mj,{children:o.jsx(Xn,{className:"space-y-4 pt-0",children:i.map(([a,l])=>o.jsx(KAe,{field:l,value:e[t.name]?.[a],onChange:c=>n(t.name,a,c),sectionName:t.name},a))})})]})})}function ZAe({plugin:t,onBack:e}){const{toast:n}=Lr(),[r,s]=b.useState(null),[i,a]=b.useState({}),[l,c]=b.useState({}),[d,h]=b.useState(!0),[m,g]=b.useState(!1),[x,y]=b.useState(!1),[w,S]=b.useState(!1),k=b.useCallback(async()=>{h(!0);try{const[D,q]=await Promise.all([PAe(t.id),zAe(t.id)]);s(D),a(q),c(JSON.parse(JSON.stringify(q)))}catch(D){n({title:"加载配置失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}finally{h(!1)}},[t.id,n]);b.useEffect(()=>{k()},[k]),b.useEffect(()=>{y(JSON.stringify(i)!==JSON.stringify(l))},[i,l]);const j=(D,q,B)=>{a(H=>({...H,[D]:{...H[D]||{},[q]:B}}))},N=async()=>{g(!0);try{await IAe(t.id,i),c(JSON.parse(JSON.stringify(i))),n({title:"配置已保存",description:"更改将在插件重新加载后生效"})}catch(D){n({title:"保存失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}finally{g(!1)}},T=async()=>{try{await LAe(t.id),n({title:"配置已重置",description:"下次加载插件时将使用默认配置"}),S(!1),k()}catch(D){n({title:"重置失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}},E=async()=>{try{const D=await BAe(t.id);n({title:D.message,description:D.note}),k()}catch(D){n({title:"切换状态失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}};if(d)return o.jsx("div",{className:"flex items-center justify-center h-64",children:o.jsx(Us,{className:"h-8 w-8 animate-spin text-muted-foreground"})});if(!r)return o.jsxs("div",{className:"flex flex-col items-center justify-center h-64 space-y-4",children:[o.jsx(Lo,{className:"h-12 w-12 text-muted-foreground"}),o.jsx("p",{className:"text-muted-foreground",children:"无法加载配置"}),o.jsxs(ue,{onClick:e,variant:"outline",children:[o.jsx(Bv,{className:"h-4 w-4 mr-2"}),"返回"]})]});const _=Object.values(r.sections).sort((D,q)=>D.order-q.order),A=i.plugin?.enabled!==!1;return o.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(ue,{variant:"ghost",size:"icon",onClick:e,children:o.jsx(Bv,{className:"h-5 w-5"})}),o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:r.plugin_info.name||t.manifest.name}),o.jsxs("div",{className:"flex items-center gap-2 mt-1",children:[o.jsx(tn,{variant:A?"default":"secondary",children:A?"已启用":"已禁用"}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:["v",r.plugin_info.version||t.manifest.version]})]})]})]}),o.jsxs("div",{className:"flex gap-2 ml-10 sm:ml-0",children:[o.jsxs(ue,{variant:"outline",size:"sm",onClick:E,children:[o.jsx(Dp,{className:"h-4 w-4 mr-2"}),A?"禁用":"启用"]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>S(!0),children:[o.jsx(zj,{className:"h-4 w-4 mr-2"}),"重置"]}),o.jsxs(ue,{size:"sm",onClick:N,disabled:!x||m,children:[m?o.jsx(Us,{className:"h-4 w-4 mr-2 animate-spin"}):o.jsx(zp,{className:"h-4 w-4 mr-2"}),"保存"]})]})]}),x&&o.jsx(Lt,{className:"border-orange-200 bg-orange-50 dark:bg-orange-950/20 dark:border-orange-900",children:o.jsx(Xn,{className:"py-3",children:o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Xi,{className:"h-4 w-4 text-orange-600"}),o.jsx("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:"有未保存的更改"})]})})}),r.layout.type==="tabs"&&r.layout.tabs.length>0?o.jsxs(Yi,{defaultValue:r.layout.tabs[0]?.id,children:[o.jsx(ji,{children:r.layout.tabs.map(D=>o.jsxs(Bt,{value:D.id,children:[D.title,D.badge&&o.jsx(tn,{variant:"secondary",className:"ml-2 text-xs",children:D.badge})]},D.id))}),r.layout.tabs.map(D=>o.jsx(ln,{value:D.id,className:"space-y-4 mt-4",children:D.sections.map(q=>{const B=r.sections[q];return B?o.jsx(Bz,{section:B,config:i,onChange:j},q):null})},D.id))]}):o.jsx("div",{className:"space-y-4",children:_.map(D=>o.jsx(Bz,{section:D,config:i,onChange:j},D.name))}),o.jsx(Er,{open:w,onOpenChange:S,children:o.jsxs(wr,{children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"确认重置配置"}),o.jsx(Xr,{children:"这将删除当前配置文件,下次加载插件时将使用默认配置。此操作不可撤销。"})]}),o.jsxs(fs,{children:[o.jsx(ue,{variant:"outline",onClick:()=>S(!1),children:"取消"}),o.jsx(ue,{variant:"destructive",onClick:T,children:"确认重置"})]})]})})]})}function JAe(){const{toast:t}=Lr(),[e,n]=b.useState([]),[r,s]=b.useState(!0),[i,a]=b.useState(""),[l,c]=b.useState(null),d=async()=>{s(!0);try{const x=await v0();n(x)}catch(x){t({title:"加载插件列表失败",description:x instanceof Error?x.message:"未知错误",variant:"destructive"})}finally{s(!1)}};b.useEffect(()=>{d()},[]);const h=e.filter(x=>{const y=i.toLowerCase();return x.id.toLowerCase().includes(y)||x.manifest.name.toLowerCase().includes(y)||x.manifest.description?.toLowerCase().includes(y)}),m=e.length,g=0;return l?o.jsx(pn,{className:"h-full",children:o.jsx("div",{className:"p-4 sm:p-6",children:o.jsx(ZAe,{plugin:l,onBack:()=>c(null)})})}):o.jsx(pn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件配置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理和配置已安装的插件"})]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:d,children:[o.jsx(Qs,{className:`h-4 w-4 mr-2 ${r?"animate-spin":""}`}),"刷新"]})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-3",children:[o.jsxs(Lt,{children:[o.jsxs(En,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(_n,{className:"text-sm font-medium",children:"已安装插件"}),o.jsx(ed,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Xn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:e.length}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:r?"正在加载...":"个插件"})]})]}),o.jsxs(Lt,{children:[o.jsxs(En,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(_n,{className:"text-sm font-medium",children:"已启用"}),o.jsx(Ya,{className:"h-4 w-4 text-green-600"})]}),o.jsxs(Xn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:m}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"运行中的插件"})]})]}),o.jsxs(Lt,{children:[o.jsxs(En,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(_n,{className:"text-sm font-medium",children:"已禁用"}),o.jsx(Lo,{className:"h-4 w-4 text-orange-600"})]}),o.jsxs(Xn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:g}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"未激活的插件"})]})]})]}),o.jsxs("div",{className:"relative",children:[o.jsx(ii,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(Pe,{placeholder:"搜索插件...",value:i,onChange:x=>a(x.target.value),className:"pl-9"})]}),o.jsxs(Lt,{children:[o.jsxs(En,{children:[o.jsx(_n,{children:"已安装的插件"}),o.jsx(Wr,{children:"点击插件查看和编辑配置"})]}),o.jsx(Xn,{children:r?o.jsx("div",{className:"flex items-center justify-center py-12",children:o.jsx(Us,{className:"h-8 w-8 animate-spin text-muted-foreground"})}):h.length===0?o.jsxs("div",{className:"flex flex-col items-center justify-center py-12 space-y-4",children:[o.jsx(ed,{className:"h-16 w-16 text-muted-foreground/50"}),o.jsxs("div",{className:"text-center space-y-2",children:[o.jsx("p",{className:"text-lg font-medium text-muted-foreground",children:i?"没有找到匹配的插件":"暂无已安装的插件"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:i?"尝试其他搜索关键词":"前往插件市场安装插件"})]})]}):o.jsx("div",{className:"space-y-2",children:h.map(x=>o.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg border hover:bg-muted/50 cursor-pointer transition-colors",onClick:()=>c(x),children:[o.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[o.jsx("div",{className:"h-10 w-10 rounded-lg bg-primary/10 flex items-center justify-center flex-shrink-0",children:o.jsx(ed,{className:"h-5 w-5 text-primary"})}),o.jsxs("div",{className:"min-w-0",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("h3",{className:"font-medium truncate",children:x.manifest.name}),o.jsxs(tn,{variant:"secondary",className:"text-xs flex-shrink-0",children:["v",x.manifest.version]})]}),o.jsx("p",{className:"text-sm text-muted-foreground truncate",children:x.manifest.description||"暂无描述"})]})]}),o.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[o.jsx(ue,{variant:"ghost",size:"sm",children:o.jsx(Vc,{className:"h-4 w-4"})}),o.jsx(Zl,{className:"h-4 w-4 text-muted-foreground"})]})]},x.id))})})]})]})})}function eMe(){const t=na(),{toast:e}=Lr(),[n,r]=b.useState([]),[s,i]=b.useState(!0),[a,l]=b.useState(null),[c,d]=b.useState(null),[h,m]=b.useState(!1),[g,x]=b.useState(!1),[y,w]=b.useState({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),S=b.useCallback(async()=>{try{i(!0),l(null);const A=localStorage.getItem("access-token"),D=await fetch("/api/webui/plugins/mirrors",{headers:{Authorization:`Bearer ${A}`}});if(!D.ok)throw new Error("获取镜像源列表失败");const q=await D.json();r(q.mirrors||[])}catch(A){const D=A instanceof Error?A.message:"加载镜像源失败";l(D),e({title:"加载失败",description:D,variant:"destructive"})}finally{i(!1)}},[e]);b.useEffect(()=>{S()},[S]);const k=async()=>{try{const A=localStorage.getItem("access-token"),D=await fetch("/api/webui/plugins/mirrors",{method:"POST",headers:{Authorization:`Bearer ${A}`,"Content-Type":"application/json"},body:JSON.stringify(y)});if(!D.ok){const q=await D.json();throw new Error(q.detail||"添加镜像源失败")}e({title:"添加成功",description:"镜像源已添加"}),m(!1),w({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),S()}catch(A){e({title:"添加失败",description:A instanceof Error?A.message:"未知错误",variant:"destructive"})}},j=async()=>{if(c)try{const A=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${c.id}`,{method:"PUT",headers:{Authorization:`Bearer ${A}`,"Content-Type":"application/json"},body:JSON.stringify({name:y.name,raw_prefix:y.raw_prefix,clone_prefix:y.clone_prefix,enabled:y.enabled,priority:y.priority})})).ok)throw new Error("更新镜像源失败");e({title:"更新成功",description:"镜像源已更新"}),x(!1),d(null),S()}catch(A){e({title:"更新失败",description:A instanceof Error?A.message:"未知错误",variant:"destructive"})}},N=async A=>{if(confirm("确定要删除这个镜像源吗?"))try{const D=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${A}`,{method:"DELETE",headers:{Authorization:`Bearer ${D}`}})).ok)throw new Error("删除镜像源失败");e({title:"删除成功",description:"镜像源已删除"}),S()}catch(D){e({title:"删除失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}},T=async A=>{try{const D=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${A.id}`,{method:"PUT",headers:{Authorization:`Bearer ${D}`,"Content-Type":"application/json"},body:JSON.stringify({enabled:!A.enabled})})).ok)throw new Error("更新状态失败");S()}catch(D){e({title:"更新失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}},E=A=>{d(A),w({id:A.id,name:A.name,raw_prefix:A.raw_prefix,clone_prefix:A.clone_prefix,enabled:A.enabled,priority:A.priority}),x(!0)},_=async(A,D)=>{const q=D==="up"?A.priority-1:A.priority+1;if(!(q<1))try{const B=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${A.id}`,{method:"PUT",headers:{Authorization:`Bearer ${B}`,"Content-Type":"application/json"},body:JSON.stringify({priority:q})})).ok)throw new Error("更新优先级失败");S()}catch(B){e({title:"更新失败",description:B instanceof Error?B.message:"未知错误",variant:"destructive"})}};return o.jsx(pn,{className:"h-full",children:o.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsx(ue,{variant:"ghost",size:"icon",onClick:()=>t({to:"/plugins"}),children:o.jsx(Bv,{className:"h-5 w-5"})}),o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"镜像源配置"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理 Git 克隆和文件下载的镜像源"})]})]}),o.jsxs(ue,{onClick:()=>m(!0),children:[o.jsx(Is,{className:"h-4 w-4 mr-2"}),"添加镜像源"]})]}),s?o.jsx(Lt,{className:"p-6",children:o.jsx("div",{className:"flex items-center justify-center py-8",children:o.jsx(Us,{className:"h-8 w-8 animate-spin text-primary"})})}):a?o.jsx(Lt,{className:"p-6",children:o.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[o.jsx(Ga,{className:"h-12 w-12 text-destructive mb-4"}),o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),o.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:a}),o.jsx(ue,{onClick:S,children:"重新加载"})]})}):o.jsxs(Lt,{children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(Af,{children:[o.jsx(Mf,{children:o.jsxs(zs,{children:[o.jsx(mn,{children:"状态"}),o.jsx(mn,{children:"名称"}),o.jsx(mn,{children:"ID"}),o.jsx(mn,{children:"优先级"}),o.jsx(mn,{className:"text-right",children:"操作"})]})}),o.jsx(Rf,{children:n.map(A=>o.jsxs(zs,{children:[o.jsx(Yt,{children:o.jsx(Ft,{checked:A.enabled,onCheckedChange:()=>T(A)})}),o.jsx(Yt,{children:o.jsxs("div",{children:[o.jsx("div",{className:"font-medium",children:A.name}),o.jsxs("div",{className:"text-xs text-muted-foreground mt-1",children:["Raw: ",A.raw_prefix]})]})}),o.jsx(Yt,{children:o.jsx(tn,{variant:"outline",children:A.id})}),o.jsx(Yt,{children:o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"font-mono",children:A.priority}),o.jsxs("div",{className:"flex flex-col gap-1",children:[o.jsx(ue,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>_(A,"up"),disabled:A.priority===1,children:o.jsx(B0,{className:"h-3 w-3"})}),o.jsx(ue,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>_(A,"down"),children:o.jsx(Xc,{className:"h-3 w-3"})})]})]})}),o.jsx(Yt,{className:"text-right",children:o.jsxs("div",{className:"flex items-center justify-end gap-2",children:[o.jsx(ue,{variant:"ghost",size:"icon",onClick:()=>E(A),children:o.jsx(Ju,{className:"h-4 w-4"})}),o.jsx(ue,{variant:"ghost",size:"icon",onClick:()=>N(A.id),children:o.jsx(Cn,{className:"h-4 w-4 text-destructive"})})]})})]},A.id))})]})}),o.jsx("div",{className:"md:hidden p-4 space-y-4",children:n.map(A=>o.jsx(Lt,{className:"p-4",children:o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-start justify-between",children:[o.jsxs("div",{className:"flex-1",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("h3",{className:"font-semibold",children:A.name}),A.enabled&&o.jsx(tn,{variant:"default",className:"text-xs",children:"启用"})]}),o.jsx(tn,{variant:"outline",className:"mt-1 text-xs",children:A.id})]}),o.jsx(Ft,{checked:A.enabled,onCheckedChange:()=>T(A)})]}),o.jsxs("div",{className:"text-sm space-y-1",children:[o.jsxs("div",{className:"text-muted-foreground",children:[o.jsx("span",{className:"font-medium",children:"Raw: "}),o.jsx("span",{className:"break-all",children:A.raw_prefix})]}),o.jsxs("div",{className:"text-muted-foreground",children:[o.jsx("span",{className:"font-medium",children:"优先级: "}),o.jsx("span",{className:"font-mono",children:A.priority})]})]}),o.jsxs("div",{className:"flex items-center gap-2 pt-2 border-t",children:[o.jsxs(ue,{variant:"outline",size:"sm",className:"flex-1",onClick:()=>E(A),children:[o.jsx(Ju,{className:"h-4 w-4 mr-1"}),"编辑"]}),o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>_(A,"up"),disabled:A.priority===1,children:o.jsx(B0,{className:"h-4 w-4"})}),o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>_(A,"down"),children:o.jsx(Xc,{className:"h-4 w-4"})}),o.jsx(ue,{variant:"destructive",size:"sm",onClick:()=>N(A.id),children:o.jsx(Cn,{className:"h-4 w-4"})})]})]})},A.id))})]}),o.jsx(Er,{open:h,onOpenChange:m,children:o.jsxs(wr,{className:"max-w-lg",children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"添加镜像源"}),o.jsx(Xr,{children:"添加新的 Git 镜像源配置"})]}),o.jsxs("div",{className:"space-y-4 py-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"add-id",children:"镜像源 ID *"}),o.jsx(Pe,{id:"add-id",placeholder:"例如: my-mirror",value:y.id,onChange:A=>w({...y,id:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"add-name",children:"名称 *"}),o.jsx(Pe,{id:"add-name",placeholder:"例如: 我的镜像源",value:y.name,onChange:A=>w({...y,name:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"add-raw",children:"Raw 文件前缀 *"}),o.jsx(Pe,{id:"add-raw",placeholder:"https://example.com/raw",value:y.raw_prefix,onChange:A=>w({...y,raw_prefix:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"add-clone",children:"克隆前缀 *"}),o.jsx(Pe,{id:"add-clone",placeholder:"https://example.com/clone",value:y.clone_prefix,onChange:A=>w({...y,clone_prefix:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"add-priority",children:"优先级"}),o.jsx(Pe,{id:"add-priority",type:"number",min:"1",value:y.priority,onChange:A=>w({...y,priority:parseInt(A.target.value)||1})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"add-enabled",checked:y.enabled,onCheckedChange:A=>w({...y,enabled:A})}),o.jsx(he,{htmlFor:"add-enabled",children:"启用此镜像源"})]})]}),o.jsxs(fs,{children:[o.jsx(ue,{variant:"outline",onClick:()=>m(!1),children:"取消"}),o.jsx(ue,{onClick:k,children:"添加"})]})]})}),o.jsx(Er,{open:g,onOpenChange:x,children:o.jsxs(wr,{className:"max-w-lg",children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"编辑镜像源"}),o.jsx(Xr,{children:"修改镜像源配置"})]}),o.jsxs("div",{className:"space-y-4 py-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:"镜像源 ID"}),o.jsx(Pe,{value:y.id,disabled:!0})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit-name",children:"名称 *"}),o.jsx(Pe,{id:"edit-name",value:y.name,onChange:A=>w({...y,name:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit-raw",children:"Raw 文件前缀 *"}),o.jsx(Pe,{id:"edit-raw",value:y.raw_prefix,onChange:A=>w({...y,raw_prefix:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit-clone",children:"克隆前缀 *"}),o.jsx(Pe,{id:"edit-clone",value:y.clone_prefix,onChange:A=>w({...y,clone_prefix:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit-priority",children:"优先级"}),o.jsx(Pe,{id:"edit-priority",type:"number",min:"1",value:y.priority,onChange:A=>w({...y,priority:parseInt(A.target.value)||1})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"edit-enabled",checked:y.enabled,onCheckedChange:A=>w({...y,enabled:A})}),o.jsx(he,{htmlFor:"edit-enabled",children:"启用此镜像源"})]})]}),o.jsxs(fs,{children:[o.jsx(ue,{variant:"outline",onClick:()=>x(!1),children:"取消"}),o.jsx(ue,{onClick:j,children:"保存"})]})]})})]})})}function tMe(t,e=[]){let n=[];function r(i,a){const l=b.createContext(a);l.displayName=i+"Context";const c=n.length;n=[...n,a];const d=m=>{const{scope:g,children:x,...y}=m,w=g?.[t]?.[c]||l,S=b.useMemo(()=>y,Object.values(y));return o.jsx(w.Provider,{value:S,children:x})};d.displayName=i+"Provider";function h(m,g){const x=g?.[t]?.[c]||l,y=b.useContext(x);if(y)return y;if(a!==void 0)return a;throw new Error(`\`${m}\` must be used within \`${i}\``)}return[d,h]}const s=()=>{const i=n.map(a=>b.createContext(a));return function(l){const c=l?.[t]||i;return b.useMemo(()=>({[`__scope${t}`]:{...l,[t]:c}}),[l,c])}};return s.scopeName=t,[r,nMe(s,...e)]}function nMe(...t){const e=t[0];if(t.length===1)return e;const n=()=>{const r=t.map(s=>({useScope:s(),scopeName:s.scopeName}));return function(i){const a=r.reduce((l,{useScope:c,scopeName:d})=>{const m=c(i)[`__scope${d}`];return{...l,...m}},{});return b.useMemo(()=>({[`__scope${e.scopeName}`]:a}),[a])}};return n.scopeName=e.scopeName,n}var rMe=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],S7=rMe.reduce((t,e)=>{const n=Vy(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...l}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(c,{...l,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),sMe=bJ();function iMe(){return sMe.useSyncExternalStore(aMe,()=>!0,()=>!1)}function aMe(){return()=>{}}var k7="Avatar",[oMe]=tMe(k7),[lMe,bX]=oMe(k7),wX=b.forwardRef((t,e)=>{const{__scopeAvatar:n,...r}=t,[s,i]=b.useState("idle");return o.jsx(lMe,{scope:n,imageLoadingStatus:s,onImageLoadingStatusChange:i,children:o.jsx(S7.span,{...r,ref:e})})});wX.displayName=k7;var SX="AvatarImage",kX=b.forwardRef((t,e)=>{const{__scopeAvatar:n,src:r,onLoadingStatusChange:s=()=>{},...i}=t,a=bX(SX,n),l=cMe(r,i),c=Rs(d=>{s(d),a.onImageLoadingStatusChange(d)});return Wh(()=>{l!=="idle"&&c(l)},[l,c]),l==="loaded"?o.jsx(S7.img,{...i,ref:e,src:r}):null});kX.displayName=SX;var OX="AvatarFallback",jX=b.forwardRef((t,e)=>{const{__scopeAvatar:n,delayMs:r,...s}=t,i=bX(OX,n),[a,l]=b.useState(r===void 0);return b.useEffect(()=>{if(r!==void 0){const c=window.setTimeout(()=>l(!0),r);return()=>window.clearTimeout(c)}},[r]),a&&i.imageLoadingStatus!=="loaded"?o.jsx(S7.span,{...s,ref:e}):null});jX.displayName=OX;function Fz(t,e){return t?e?(t.src!==e&&(t.src=e),t.complete&&t.naturalWidth>0?"loaded":"loading"):"error":"idle"}function cMe(t,{referrerPolicy:e,crossOrigin:n}){const r=iMe(),s=b.useRef(null),i=r?(s.current||(s.current=new window.Image),s.current):null,[a,l]=b.useState(()=>Fz(i,t));return Wh(()=>{l(Fz(i,t))},[i,t]),Wh(()=>{const c=m=>()=>{l(m)};if(!i)return;const d=c("loaded"),h=c("error");return i.addEventListener("load",d),i.addEventListener("error",h),e&&(i.referrerPolicy=e),typeof n=="string"&&(i.crossOrigin=n),()=>{i.removeEventListener("load",d),i.removeEventListener("error",h)}},[i,n,e]),a}var NX=wX,CX=kX,TX=jX;const Pv=b.forwardRef(({className:t,...e},n)=>o.jsx(NX,{ref:n,className:xe("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",t),...e}));Pv.displayName=NX.displayName;const uMe=b.forwardRef(({className:t,...e},n)=>o.jsx(CX,{ref:n,className:xe("aspect-square h-full w-full",t),...e}));uMe.displayName=CX.displayName;const zv=b.forwardRef(({className:t,...e},n)=>o.jsx(TX,{ref:n,className:xe("flex h-full w-full items-center justify-center rounded-full bg-muted",t),...e}));zv.displayName=TX.displayName;function dMe(){return"webui_"+Math.random().toString(36).substr(2,9)+"_"+Date.now().toString(36)}function hMe(){const t="maibot_webui_user_id";let e=localStorage.getItem(t);return e||(e=dMe(),localStorage.setItem(t,e)),e}function fMe(){return localStorage.getItem("maibot_webui_user_name")||"WebUI用户"}function mMe(t){localStorage.setItem("maibot_webui_user_name",t)}function pMe(){const[t,e]=b.useState([]),[n,r]=b.useState(""),[s,i]=b.useState(!1),[a,l]=b.useState(!1),[c,d]=b.useState(!1),[h,m]=b.useState(!0),[g,x]=b.useState(fMe()),[y,w]=b.useState(!1),[S,k]=b.useState(""),[j,N]=b.useState({}),T=b.useRef(hMe()),E=b.useRef(null),_=b.useRef(null),A=b.useRef(null),D=b.useRef(0),q=b.useRef(new Set),{toast:B}=Lr(),H=z=>(D.current+=1,`${z}-${Date.now()}-${D.current}-${Math.random().toString(36).substr(2,9)}`),W=b.useCallback(()=>{_.current?.scrollIntoView({behavior:"smooth"})},[]);b.useEffect(()=>{W()},[t,W]);const ee=b.useCallback(async()=>{m(!0);try{const z=`/api/chat/history?user_id=${T.current}&limit=50`;console.log("[Chat] 正在加载历史消息:",z);const U=await fetch(z);if(console.log("[Chat] 历史消息响应状态:",U.status,U.statusText),console.log("[Chat] 响应 Content-Type:",U.headers.get("content-type")),U.ok){const te=await U.text();console.log("[Chat] 响应内容前100字符:",te.substring(0,100));try{const ne=JSON.parse(te);if(console.log("[Chat] 解析后的数据:",ne),ne.messages&&ne.messages.length>0){const G=ne.messages.map(se=>({id:se.id,type:se.type,content:se.content,timestamp:se.timestamp,sender:{name:se.sender_name||(se.is_bot?"麦麦":"WebUI用户"),user_id:se.user_id,is_bot:se.is_bot}}));e(G),console.log("[Chat] 已加载历史消息数量:",G.length),G.forEach(se=>{if(se.type==="bot"){const re=`bot-${se.content}-${Math.floor(se.timestamp*1e3)}`;q.current.add(re)}})}else console.log("[Chat] 没有历史消息")}catch(ne){console.error("[Chat] JSON 解析失败:",ne),console.error("[Chat] 原始响应内容:",te)}}else{console.error("[Chat] 响应失败:",U.status);const te=await U.text();console.error("[Chat] 错误响应内容:",te.substring(0,200))}}catch(z){console.error("[Chat] 加载历史消息失败:",z)}finally{m(!1)}},[]),I=b.useCallback(()=>{if(E.current?.readyState===WebSocket.OPEN||E.current?.readyState===WebSocket.CONNECTING){console.log("WebSocket 已存在,跳过连接");return}l(!0);const U=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/api/chat/ws?user_id=${encodeURIComponent(T.current)}&user_name=${encodeURIComponent(g)}`;console.log("正在连接 WebSocket:",U);try{const te=new WebSocket(U);E.current=te,te.onopen=()=>{i(!0),l(!1),console.log("WebSocket 已连接")},te.onmessage=ne=>{try{const G=JSON.parse(ne.data);switch(G.type){case"session_info":N({session_id:G.session_id,user_id:G.user_id,user_name:G.user_name,bot_name:G.bot_name});break;case"system":e(se=>[...se,{id:H("sys"),type:"system",content:G.content||"",timestamp:G.timestamp||Date.now()/1e3}]);break;case"user_message":e(se=>[...se,{id:G.message_id||H("user"),type:"user",content:G.content||"",timestamp:G.timestamp||Date.now()/1e3,sender:G.sender}]);break;case"bot_message":{d(!1);const se=`bot-${G.content}-${Math.floor((G.timestamp||0)*1e3)}`;if(q.current.has(se)){console.log("跳过重复的机器人消息");break}if(q.current.add(se),q.current.size>100){const re=q.current.values().next().value;re&&q.current.delete(re)}e(re=>[...re,{id:H("bot"),type:"bot",content:G.content||"",timestamp:G.timestamp||Date.now()/1e3,sender:G.sender}]);break}case"typing":d(G.is_typing||!1);break;case"error":e(se=>[...se,{id:H("error"),type:"error",content:G.content||"发生错误",timestamp:G.timestamp||Date.now()/1e3}]),B({title:"错误",description:G.content,variant:"destructive"});break;case"pong":break;default:console.log("未知消息类型:",G.type)}}catch(G){console.error("解析消息失败:",G)}},te.onclose=()=>{i(!1),l(!1),E.current=null,console.log("WebSocket 已断开"),A.current&&clearTimeout(A.current),A.current=window.setTimeout(()=>{V.current||I()},5e3)},te.onerror=ne=>{console.error("WebSocket 错误:",ne),l(!1)}}catch(te){console.error("创建 WebSocket 失败:",te),l(!1)}},[B,g]),V=b.useRef(!1);b.useEffect(()=>{V.current=!1,ee();const z=setTimeout(()=>{V.current||I()},100),U=setInterval(()=>{E.current?.readyState===WebSocket.OPEN&&E.current.send(JSON.stringify({type:"ping"}))},3e4);return()=>{V.current=!0,clearTimeout(z),clearInterval(U),A.current&&(clearTimeout(A.current),A.current=null),E.current&&(E.current.close(),E.current=null)}},[I,ee]);const L=b.useCallback(()=>{!n.trim()||!E.current||E.current.readyState!==WebSocket.OPEN||(E.current.send(JSON.stringify({type:"message",content:n.trim(),user_name:g})),r(""))},[n,g]),$=z=>{z.key==="Enter"&&!z.shiftKey&&(z.preventDefault(),L())},K=()=>{k(g),w(!0)},Y=()=>{const z=S.trim()||"WebUI用户";x(z),mMe(z),w(!1),E.current?.readyState===WebSocket.OPEN&&E.current.send(JSON.stringify({type:"update_nickname",user_name:z}))},R=()=>{k(""),w(!1)},ie=z=>new Date(z*1e3).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"}),X=()=>{E.current&&E.current.close(),I()};return o.jsxs("div",{className:"h-full flex flex-col",children:[o.jsx("div",{className:"shrink-0 border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:o.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:[o.jsxs("div",{className:"flex items-center justify-between gap-2",children:[o.jsxs("div",{className:"flex items-center gap-2 sm:gap-3 min-w-0",children:[o.jsx(Pv,{className:"h-8 w-8 sm:h-10 sm:w-10 shrink-0",children:o.jsx(zv,{className:"bg-primary/10 text-primary",children:o.jsx(o0,{className:"h-4 w-4 sm:h-5 sm:w-5"})})}),o.jsxs("div",{className:"min-w-0",children:[o.jsx("h1",{className:"text-base sm:text-lg font-semibold truncate",children:j.bot_name||"麦麦"}),o.jsx("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:s?o.jsxs(o.Fragment,{children:[o.jsx(ote,{className:"h-3 w-3 text-green-500"}),o.jsx("span",{className:"text-green-600 dark:text-green-400",children:"已连接"})]}):a?o.jsxs(o.Fragment,{children:[o.jsx(Us,{className:"h-3 w-3 animate-spin"}),o.jsx("span",{children:"连接中..."})]}):o.jsxs(o.Fragment,{children:[o.jsx(lte,{className:"h-3 w-3 text-red-500"}),o.jsx("span",{className:"text-red-600 dark:text-red-400",children:"未连接"})]})})]})]}),o.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[h&&o.jsx(Us,{className:"h-4 w-4 animate-spin text-muted-foreground"}),o.jsx(ue,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:X,disabled:a,title:"重新连接",children:o.jsx(Qs,{className:xe("h-4 w-4",a&&"animate-spin")})})]})]}),o.jsxs("div",{className:"hidden sm:flex items-center gap-2 mt-2 text-sm text-muted-foreground",children:[o.jsx(Lv,{className:"h-3 w-3"}),o.jsx("span",{children:"当前身份:"}),y?o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Pe,{value:S,onChange:z=>k(z.target.value),onKeyDown:z=>{z.key==="Enter"&&Y(),z.key==="Escape"&&R()},className:"h-7 w-32",placeholder:"输入昵称",autoFocus:!0}),o.jsx(ue,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:Y,children:"保存"}),o.jsx(ue,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:R,children:"取消"})]}):o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx("span",{className:"font-medium text-foreground",children:g}),o.jsx(ue,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0",onClick:K,title:"修改昵称",children:o.jsx(cte,{className:"h-3 w-3"})})]})]})]})}),o.jsx("div",{className:"flex-1 overflow-hidden",children:o.jsx(pn,{className:"h-full",children:o.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto space-y-3 sm:space-y-4",children:[t.length===0&&!h&&o.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-muted-foreground",children:[o.jsx(o0,{className:"h-12 w-12 mb-4 opacity-50"}),o.jsxs("p",{className:"text-sm",children:["开始与 ",j.bot_name||"麦麦"," 对话吧!"]})]}),t.map(z=>o.jsxs("div",{className:xe("flex gap-2 sm:gap-3",z.type==="user"&&"flex-row-reverse",z.type==="system"&&"justify-center",z.type==="error"&&"justify-center"),children:[z.type==="system"&&o.jsx("div",{className:"text-xs text-muted-foreground bg-muted/50 px-3 py-1 rounded-full max-w-[90%]",children:z.content}),z.type==="error"&&o.jsx("div",{className:"text-xs text-red-600 dark:text-red-400 bg-red-100 dark:bg-red-900/30 px-3 py-1 rounded-full max-w-[90%]",children:z.content}),(z.type==="user"||z.type==="bot")&&o.jsxs(o.Fragment,{children:[o.jsx(Pv,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:o.jsx(zv,{className:xe("text-xs",z.type==="bot"?"bg-primary/10 text-primary":"bg-secondary text-secondary-foreground"),children:z.type==="bot"?o.jsx(o0,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}):o.jsx(Lv,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),o.jsxs("div",{className:xe("flex flex-col gap-1 max-w-[75%] sm:max-w-[70%]",z.type==="user"&&"items-end"),children:[o.jsxs("div",{className:"flex items-center gap-2 text-[10px] sm:text-xs text-muted-foreground",children:[o.jsx("span",{className:"hidden sm:inline",children:z.sender?.name||(z.type==="bot"?j.bot_name:g)}),o.jsx("span",{children:ie(z.timestamp)})]}),o.jsx("div",{className:xe("rounded-2xl px-3 py-2 text-sm whitespace-pre-wrap break-words",z.type==="bot"?"bg-muted rounded-tl-sm":"bg-primary text-primary-foreground rounded-tr-sm"),children:z.content})]})]})]},z.id)),c&&o.jsxs("div",{className:"flex gap-2 sm:gap-3",children:[o.jsx(Pv,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:o.jsx(zv,{className:"bg-primary/10 text-primary",children:o.jsx(o0,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),o.jsx("div",{className:"bg-muted rounded-2xl rounded-tl-sm px-4 py-3",children:o.jsxs("div",{className:"flex gap-1",children:[o.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"0ms"}}),o.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"150ms"}}),o.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"300ms"}})]})})]}),o.jsx("div",{ref:_})]})})}),o.jsx("div",{className:"shrink-0 border-t bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:o.jsx("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Pe,{value:n,onChange:z=>r(z.target.value),onKeyDown:$,placeholder:s?"输入消息...":"等待连接...",disabled:!s,className:"flex-1 h-10 sm:h-10"}),o.jsx(ue,{onClick:L,disabled:!s||!n.trim(),size:"icon",className:"h-10 w-10 shrink-0",children:o.jsx(ute,{className:"h-4 w-4"})})]})})})]})}const gMe=kf("pointer-events-none inline-flex select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono font-medium opacity-100",{variants:{size:{sm:"h-5 text-[10px]",default:"h-6 text-xs",lg:"h-7 text-sm"}},defaultVariants:{size:"default"}}),EX=b.forwardRef(({className:t,size:e,abbrTitle:n,children:r,...s},i)=>o.jsx("kbd",{className:xe(gMe({size:e,className:t})),ref:i,...s,children:n?o.jsx("abbr",{title:n,children:r}):r}));EX.displayName="Kbd";const xMe=[{icon:L0,title:"首页",description:"查看仪表板概览",path:"/",category:"概览"},{icon:Po,title:"麦麦主程序配置",description:"配置麦麦的核心设置",path:"/config/bot",category:"配置"},{icon:CI,title:"麦麦模型提供商配置",description:"配置模型提供商",path:"/config/modelProvider",category:"配置"},{icon:TI,title:"麦麦模型配置",description:"配置模型参数",path:"/config/model",category:"配置"},{icon:Ij,title:"表情包管理",description:"管理麦麦的表情包",path:"/resource/emoji",category:"资源"},{icon:Gh,title:"表达方式管理",description:"管理麦麦的表达方式",path:"/resource/expression",category:"资源"},{icon:EI,title:"人物信息管理",description:"管理人物信息",path:"/resource/person",category:"资源"},{icon:dte,title:"统计信息",description:"查看使用统计",path:"/statistics",category:"监控"},{icon:ed,title:"插件市场",description:"浏览和安装插件",path:"/plugins",category:"扩展"},{icon:Fv,title:"日志查看器",description:"查看系统日志",path:"/logs",category:"监控"},{icon:Vc,title:"系统设置",description:"配置系统参数",path:"/settings",category:"系统"}];function vMe({open:t,onOpenChange:e}){const[n,r]=b.useState(""),[s,i]=b.useState(0),a=na(),l=xMe.filter(h=>h.title.toLowerCase().includes(n.toLowerCase())||h.description.toLowerCase().includes(n.toLowerCase())||h.category.toLowerCase().includes(n.toLowerCase()));b.useEffect(()=>{t&&(r(""),i(0))},[t]);const c=b.useCallback(h=>{a({to:h}),e(!1)},[a,e]),d=b.useCallback(h=>{h.key==="ArrowDown"?(h.preventDefault(),i(m=>(m+1)%l.length)):h.key==="ArrowUp"?(h.preventDefault(),i(m=>(m-1+l.length)%l.length)):h.key==="Enter"&&l[s]&&(h.preventDefault(),c(l[s].path))},[l,s,c]);return o.jsx(Er,{open:t,onOpenChange:e,children:o.jsxs(wr,{className:"max-w-2xl p-0 gap-0",children:[o.jsxs(Sr,{className:"px-4 pt-4 pb-0",children:[o.jsx(kr,{className:"sr-only",children:"搜索"}),o.jsxs("div",{className:"relative",children:[o.jsx(ii,{className:"absolute left-3 top-1/2 h-5 w-5 -translate-y-1/2 text-muted-foreground"}),o.jsx(Pe,{value:n,onChange:h=>{r(h.target.value),i(0)},onKeyDown:d,placeholder:"搜索页面...",className:"h-12 pl-11 text-base border-0 focus-visible:ring-0 shadow-none",autoFocus:!0})]})]}),o.jsx("div",{className:"border-t",children:o.jsx(pn,{className:"h-[400px]",children:l.length>0?o.jsx("div",{className:"p-2",children:l.map((h,m)=>{const g=h.icon;return o.jsxs("button",{onClick:()=>c(h.path),onMouseEnter:()=>i(m),className:xe("w-full flex items-center gap-3 px-3 py-2.5 rounded-md text-left transition-colors",m===s?"bg-accent text-accent-foreground":"hover:bg-accent/50"),children:[o.jsx(g,{className:"h-5 w-5 flex-shrink-0"}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("div",{className:"font-medium text-sm",children:h.title}),o.jsx("div",{className:"text-xs text-muted-foreground truncate",children:h.description})]}),o.jsx("div",{className:"text-xs text-muted-foreground px-2 py-1 bg-muted rounded",children:h.category})]},h.path)})}):o.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[o.jsx(ii,{className:"h-12 w-12 text-muted-foreground/50 mb-4"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:n?"未找到匹配的页面":"输入关键词开始搜索"})]})})}),o.jsx("div",{className:"border-t px-4 py-3 flex items-center justify-between text-xs text-muted-foreground",children:o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsxs("span",{className:"flex items-center gap-1",children:[o.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↑"}),o.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↓"}),"导航"]}),o.jsxs("span",{className:"flex items-center gap-1",children:[o.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Enter"}),"选择"]}),o.jsxs("span",{className:"flex items-center gap-1",children:[o.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Esc"}),"关闭"]})]})})]})})}function yMe(t){const e=bMe(t),n=b.forwardRef((r,s)=>{const{children:i,...a}=r,l=b.Children.toArray(i),c=l.find(SMe);if(c){const d=c.props.children,h=l.map(m=>m===c?b.Children.count(d)>1?b.Children.only(null):b.isValidElement(d)?d.props.children:null:m);return o.jsx(e,{...a,ref:s,children:b.isValidElement(d)?b.cloneElement(d,void 0,h):null})}return o.jsx(e,{...a,ref:s,children:i})});return n.displayName=`${t}.Slot`,n}function bMe(t){const e=b.forwardRef((n,r)=>{const{children:s,...i}=n;if(b.isValidElement(s)){const a=OMe(s),l=kMe(i,s.props);return s.type!==b.Fragment&&(l.ref=r?Gc(r,a):a),b.cloneElement(s,l)}return b.Children.count(s)>1?b.Children.only(null):null});return e.displayName=`${t}.SlotClone`,e}var wMe=Symbol("radix.slottable");function SMe(t){return b.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===wMe}function kMe(t,e){const n={...e};for(const r in e){const s=t[r],i=e[r];/^on[A-Z]/.test(r)?s&&i?n[r]=(...l)=>{const c=i(...l);return s(...l),c}:s&&(n[r]=s):r==="style"?n[r]={...s,...i}:r==="className"&&(n[r]=[s,i].filter(Boolean).join(" "))}return{...t,...n}}function OMe(t){let e=Object.getOwnPropertyDescriptor(t.props,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning;return n?t.ref:(e=Object.getOwnPropertyDescriptor(t,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning,n?t.props.ref:t.props.ref||t.ref)}var pj=["Enter"," "],jMe=["ArrowDown","PageUp","Home"],_X=["ArrowUp","PageDown","End"],NMe=[...jMe,..._X],CMe={ltr:[...pj,"ArrowRight"],rtl:[...pj,"ArrowLeft"]},TMe={ltr:["ArrowLeft"],rtl:["ArrowRight"]},Tg="Menu",[_p,EMe,_Me]=Qy(Tg),[Cd,AX]=Da(Tg,[_Me,vf,sb]),Eg=vf(),MX=sb(),[RX,gu]=Cd(Tg),[AMe,_g]=Cd(Tg),DX=t=>{const{__scopeMenu:e,open:n=!1,children:r,dir:s,onOpenChange:i,modal:a=!0}=t,l=Eg(e),[c,d]=b.useState(null),h=b.useRef(!1),m=Rs(i),g=Rp(s);return b.useEffect(()=>{const x=()=>{h.current=!0,document.addEventListener("pointerdown",y,{capture:!0,once:!0}),document.addEventListener("pointermove",y,{capture:!0,once:!0})},y=()=>h.current=!1;return document.addEventListener("keydown",x,{capture:!0}),()=>{document.removeEventListener("keydown",x,{capture:!0}),document.removeEventListener("pointerdown",y,{capture:!0}),document.removeEventListener("pointermove",y,{capture:!0})}},[]),o.jsx(Yy,{...l,children:o.jsx(RX,{scope:e,open:n,onOpenChange:m,content:c,onContentChange:d,children:o.jsx(AMe,{scope:e,onClose:b.useCallback(()=>m(!1),[m]),isUsingKeyboardRef:h,dir:g,modal:a,children:r})})})};DX.displayName=Tg;var MMe="MenuAnchor",O7=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t,s=Eg(n);return o.jsx(Ky,{...s,...r,ref:e})});O7.displayName=MMe;var j7="MenuPortal",[RMe,PX]=Cd(j7,{forceMount:void 0}),zX=t=>{const{__scopeMenu:e,forceMount:n,children:r,container:s}=t,i=gu(j7,e);return o.jsx(RMe,{scope:e,forceMount:n,children:o.jsx(oi,{present:n||i.open,children:o.jsx(Xy,{asChild:!0,container:s,children:r})})})};zX.displayName=j7;var _a="MenuContent",[DMe,N7]=Cd(_a),IX=b.forwardRef((t,e)=>{const n=PX(_a,t.__scopeMenu),{forceMount:r=n.forceMount,...s}=t,i=gu(_a,t.__scopeMenu),a=_g(_a,t.__scopeMenu);return o.jsx(_p.Provider,{scope:t.__scopeMenu,children:o.jsx(oi,{present:r||i.open,children:o.jsx(_p.Slot,{scope:t.__scopeMenu,children:a.modal?o.jsx(PMe,{...s,ref:e}):o.jsx(zMe,{...s,ref:e})})})})}),PMe=b.forwardRef((t,e)=>{const n=gu(_a,t.__scopeMenu),r=b.useRef(null),s=er(e,r);return b.useEffect(()=>{const i=r.current;if(i)return gI(i)},[]),o.jsx(C7,{...t,ref:s,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:nt(t.onFocusOutside,i=>i.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),zMe=b.forwardRef((t,e)=>{const n=gu(_a,t.__scopeMenu);return o.jsx(C7,{...t,ref:e,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),IMe=yMe("MenuContent.ScrollLock"),C7=b.forwardRef((t,e)=>{const{__scopeMenu:n,loop:r=!1,trapFocus:s,onOpenAutoFocus:i,onCloseAutoFocus:a,disableOutsidePointerEvents:l,onEntryFocus:c,onEscapeKeyDown:d,onPointerDownOutside:h,onFocusOutside:m,onInteractOutside:g,onDismiss:x,disableOutsideScroll:y,...w}=t,S=gu(_a,n),k=_g(_a,n),j=Eg(n),N=MX(n),T=EMe(n),[E,_]=b.useState(null),A=b.useRef(null),D=er(e,A,S.onContentChange),q=b.useRef(0),B=b.useRef(""),H=b.useRef(0),W=b.useRef(null),ee=b.useRef("right"),I=b.useRef(0),V=y?xI:b.Fragment,L=y?{as:IMe,allowPinchZoom:!0}:void 0,$=Y=>{const R=B.current+Y,ie=T().filter(G=>!G.disabled),X=document.activeElement,z=ie.find(G=>G.ref.current===X)?.textValue,U=ie.map(G=>G.textValue),te=XMe(U,R,z),ne=ie.find(G=>G.textValue===te)?.ref.current;(function G(se){B.current=se,window.clearTimeout(q.current),se!==""&&(q.current=window.setTimeout(()=>G(""),1e3))})(R),ne&&setTimeout(()=>ne.focus())};b.useEffect(()=>()=>window.clearTimeout(q.current),[]),vI();const K=b.useCallback(Y=>ee.current===W.current?.side&&KMe(Y,W.current?.area),[]);return o.jsx(DMe,{scope:n,searchRef:B,onItemEnter:b.useCallback(Y=>{K(Y)&&Y.preventDefault()},[K]),onItemLeave:b.useCallback(Y=>{K(Y)||(A.current?.focus(),_(null))},[K]),onTriggerLeave:b.useCallback(Y=>{K(Y)&&Y.preventDefault()},[K]),pointerGraceTimerRef:H,onPointerGraceIntentChange:b.useCallback(Y=>{W.current=Y},[]),children:o.jsx(V,{...L,children:o.jsx(yI,{asChild:!0,trapped:s,onMountAutoFocus:nt(i,Y=>{Y.preventDefault(),A.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:a,children:o.jsx(Rj,{asChild:!0,disableOutsidePointerEvents:l,onEscapeKeyDown:d,onPointerDownOutside:h,onFocusOutside:m,onInteractOutside:g,onDismiss:x,children:o.jsx(vL,{asChild:!0,...N,dir:k.dir,orientation:"vertical",loop:r,currentTabStopId:E,onCurrentTabStopIdChange:_,onEntryFocus:nt(c,Y=>{k.isUsingKeyboardRef.current||Y.preventDefault()}),preventScrollOnEntryFocus:!0,children:o.jsx(Dj,{role:"menu","aria-orientation":"vertical","data-state":eY(S.open),"data-radix-menu-content":"",dir:k.dir,...j,...w,ref:D,style:{outline:"none",...w.style},onKeyDown:nt(w.onKeyDown,Y=>{const ie=Y.target.closest("[data-radix-menu-content]")===Y.currentTarget,X=Y.ctrlKey||Y.altKey||Y.metaKey,z=Y.key.length===1;ie&&(Y.key==="Tab"&&Y.preventDefault(),!X&&z&&$(Y.key));const U=A.current;if(Y.target!==U||!NMe.includes(Y.key))return;Y.preventDefault();const ne=T().filter(G=>!G.disabled).map(G=>G.ref.current);_X.includes(Y.key)&&ne.reverse(),WMe(ne)}),onBlur:nt(t.onBlur,Y=>{Y.currentTarget.contains(Y.target)||(window.clearTimeout(q.current),B.current="")}),onPointerMove:nt(t.onPointerMove,Ap(Y=>{const R=Y.target,ie=I.current!==Y.clientX;if(Y.currentTarget.contains(R)&&ie){const X=Y.clientX>I.current?"right":"left";ee.current=X,I.current=Y.clientX}}))})})})})})})});IX.displayName=_a;var LMe="MenuGroup",T7=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t;return o.jsx(Sn.div,{role:"group",...r,ref:e})});T7.displayName=LMe;var BMe="MenuLabel",LX=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t;return o.jsx(Sn.div,{...r,ref:e})});LX.displayName=BMe;var Fy="MenuItem",qz="menu.itemSelect",lw=b.forwardRef((t,e)=>{const{disabled:n=!1,onSelect:r,...s}=t,i=b.useRef(null),a=_g(Fy,t.__scopeMenu),l=N7(Fy,t.__scopeMenu),c=er(e,i),d=b.useRef(!1),h=()=>{const m=i.current;if(!n&&m){const g=new CustomEvent(qz,{bubbles:!0,cancelable:!0});m.addEventListener(qz,x=>r?.(x),{once:!0}),wI(m,g),g.defaultPrevented?d.current=!1:a.onClose()}};return o.jsx(BX,{...s,ref:c,disabled:n,onClick:nt(t.onClick,h),onPointerDown:m=>{t.onPointerDown?.(m),d.current=!0},onPointerUp:nt(t.onPointerUp,m=>{d.current||m.currentTarget?.click()}),onKeyDown:nt(t.onKeyDown,m=>{const g=l.searchRef.current!=="";n||g&&m.key===" "||pj.includes(m.key)&&(m.currentTarget.click(),m.preventDefault())})})});lw.displayName=Fy;var BX=b.forwardRef((t,e)=>{const{__scopeMenu:n,disabled:r=!1,textValue:s,...i}=t,a=N7(Fy,n),l=MX(n),c=b.useRef(null),d=er(e,c),[h,m]=b.useState(!1),[g,x]=b.useState("");return b.useEffect(()=>{const y=c.current;y&&x((y.textContent??"").trim())},[i.children]),o.jsx(_p.ItemSlot,{scope:n,disabled:r,textValue:s??g,children:o.jsx(yL,{asChild:!0,...l,focusable:!r,children:o.jsx(Sn.div,{role:"menuitem","data-highlighted":h?"":void 0,"aria-disabled":r||void 0,"data-disabled":r?"":void 0,...i,ref:d,onPointerMove:nt(t.onPointerMove,Ap(y=>{r?a.onItemLeave(y):(a.onItemEnter(y),y.defaultPrevented||y.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:nt(t.onPointerLeave,Ap(y=>a.onItemLeave(y))),onFocus:nt(t.onFocus,()=>m(!0)),onBlur:nt(t.onBlur,()=>m(!1))})})})}),FMe="MenuCheckboxItem",FX=b.forwardRef((t,e)=>{const{checked:n=!1,onCheckedChange:r,...s}=t;return o.jsx(VX,{scope:t.__scopeMenu,checked:n,children:o.jsx(lw,{role:"menuitemcheckbox","aria-checked":qy(n)?"mixed":n,...s,ref:e,"data-state":A7(n),onSelect:nt(s.onSelect,()=>r?.(qy(n)?!0:!n),{checkForDefaultPrevented:!1})})})});FX.displayName=FMe;var qX="MenuRadioGroup",[qMe,$Me]=Cd(qX,{value:void 0,onValueChange:()=>{}}),$X=b.forwardRef((t,e)=>{const{value:n,onValueChange:r,...s}=t,i=Rs(r);return o.jsx(qMe,{scope:t.__scopeMenu,value:n,onValueChange:i,children:o.jsx(T7,{...s,ref:e})})});$X.displayName=qX;var HX="MenuRadioItem",QX=b.forwardRef((t,e)=>{const{value:n,...r}=t,s=$Me(HX,t.__scopeMenu),i=n===s.value;return o.jsx(VX,{scope:t.__scopeMenu,checked:i,children:o.jsx(lw,{role:"menuitemradio","aria-checked":i,...r,ref:e,"data-state":A7(i),onSelect:nt(r.onSelect,()=>s.onValueChange?.(n),{checkForDefaultPrevented:!1})})})});QX.displayName=HX;var E7="MenuItemIndicator",[VX,HMe]=Cd(E7,{checked:!1}),UX=b.forwardRef((t,e)=>{const{__scopeMenu:n,forceMount:r,...s}=t,i=HMe(E7,n);return o.jsx(oi,{present:r||qy(i.checked)||i.checked===!0,children:o.jsx(Sn.span,{...s,ref:e,"data-state":A7(i.checked)})})});UX.displayName=E7;var QMe="MenuSeparator",WX=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t;return o.jsx(Sn.div,{role:"separator","aria-orientation":"horizontal",...r,ref:e})});WX.displayName=QMe;var VMe="MenuArrow",GX=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t,s=Eg(n);return o.jsx(Pj,{...s,...r,ref:e})});GX.displayName=VMe;var _7="MenuSub",[UMe,XX]=Cd(_7),YX=t=>{const{__scopeMenu:e,children:n,open:r=!1,onOpenChange:s}=t,i=gu(_7,e),a=Eg(e),[l,c]=b.useState(null),[d,h]=b.useState(null),m=Rs(s);return b.useEffect(()=>(i.open===!1&&m(!1),()=>m(!1)),[i.open,m]),o.jsx(Yy,{...a,children:o.jsx(RX,{scope:e,open:r,onOpenChange:m,content:d,onContentChange:h,children:o.jsx(UMe,{scope:e,contentId:Gi(),triggerId:Gi(),trigger:l,onTriggerChange:c,children:n})})})};YX.displayName=_7;var y0="MenuSubTrigger",KX=b.forwardRef((t,e)=>{const n=gu(y0,t.__scopeMenu),r=_g(y0,t.__scopeMenu),s=XX(y0,t.__scopeMenu),i=N7(y0,t.__scopeMenu),a=b.useRef(null),{pointerGraceTimerRef:l,onPointerGraceIntentChange:c}=i,d={__scopeMenu:t.__scopeMenu},h=b.useCallback(()=>{a.current&&window.clearTimeout(a.current),a.current=null},[]);return b.useEffect(()=>h,[h]),b.useEffect(()=>{const m=l.current;return()=>{window.clearTimeout(m),c(null)}},[l,c]),o.jsx(O7,{asChild:!0,...d,children:o.jsx(BX,{id:s.triggerId,"aria-haspopup":"menu","aria-expanded":n.open,"aria-controls":s.contentId,"data-state":eY(n.open),...t,ref:Gc(e,s.onTriggerChange),onClick:m=>{t.onClick?.(m),!(t.disabled||m.defaultPrevented)&&(m.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:nt(t.onPointerMove,Ap(m=>{i.onItemEnter(m),!m.defaultPrevented&&!t.disabled&&!n.open&&!a.current&&(i.onPointerGraceIntentChange(null),a.current=window.setTimeout(()=>{n.onOpenChange(!0),h()},100))})),onPointerLeave:nt(t.onPointerLeave,Ap(m=>{h();const g=n.content?.getBoundingClientRect();if(g){const x=n.content?.dataset.side,y=x==="right",w=y?-5:5,S=g[y?"left":"right"],k=g[y?"right":"left"];i.onPointerGraceIntentChange({area:[{x:m.clientX+w,y:m.clientY},{x:S,y:g.top},{x:k,y:g.top},{x:k,y:g.bottom},{x:S,y:g.bottom}],side:x}),window.clearTimeout(l.current),l.current=window.setTimeout(()=>i.onPointerGraceIntentChange(null),300)}else{if(i.onTriggerLeave(m),m.defaultPrevented)return;i.onPointerGraceIntentChange(null)}})),onKeyDown:nt(t.onKeyDown,m=>{const g=i.searchRef.current!=="";t.disabled||g&&m.key===" "||CMe[r.dir].includes(m.key)&&(n.onOpenChange(!0),n.content?.focus(),m.preventDefault())})})})});KX.displayName=y0;var ZX="MenuSubContent",JX=b.forwardRef((t,e)=>{const n=PX(_a,t.__scopeMenu),{forceMount:r=n.forceMount,...s}=t,i=gu(_a,t.__scopeMenu),a=_g(_a,t.__scopeMenu),l=XX(ZX,t.__scopeMenu),c=b.useRef(null),d=er(e,c);return o.jsx(_p.Provider,{scope:t.__scopeMenu,children:o.jsx(oi,{present:r||i.open,children:o.jsx(_p.Slot,{scope:t.__scopeMenu,children:o.jsx(C7,{id:l.contentId,"aria-labelledby":l.triggerId,...s,ref:d,align:"start",side:a.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:h=>{a.isUsingKeyboardRef.current&&c.current?.focus(),h.preventDefault()},onCloseAutoFocus:h=>h.preventDefault(),onFocusOutside:nt(t.onFocusOutside,h=>{h.target!==l.trigger&&i.onOpenChange(!1)}),onEscapeKeyDown:nt(t.onEscapeKeyDown,h=>{a.onClose(),h.preventDefault()}),onKeyDown:nt(t.onKeyDown,h=>{const m=h.currentTarget.contains(h.target),g=TMe[a.dir].includes(h.key);m&&g&&(i.onOpenChange(!1),l.trigger?.focus(),h.preventDefault())})})})})})});JX.displayName=ZX;function eY(t){return t?"open":"closed"}function qy(t){return t==="indeterminate"}function A7(t){return qy(t)?"indeterminate":t?"checked":"unchecked"}function WMe(t){const e=document.activeElement;for(const n of t)if(n===e||(n.focus(),document.activeElement!==e))return}function GMe(t,e){return t.map((n,r)=>t[(e+r)%t.length])}function XMe(t,e,n){const s=e.length>1&&Array.from(e).every(d=>d===e[0])?e[0]:e,i=n?t.indexOf(n):-1;let a=GMe(t,Math.max(i,0));s.length===1&&(a=a.filter(d=>d!==n));const c=a.find(d=>d.toLowerCase().startsWith(s.toLowerCase()));return c!==n?c:void 0}function YMe(t,e){const{x:n,y:r}=t;let s=!1;for(let i=0,a=e.length-1;ir!=g>r&&n<(m-d)*(r-h)/(g-h)+d&&(s=!s)}return s}function KMe(t,e){if(!e)return!1;const n={x:t.clientX,y:t.clientY};return YMe(n,e)}function Ap(t){return e=>e.pointerType==="mouse"?t(e):void 0}var ZMe=DX,JMe=O7,eRe=zX,tRe=IX,nRe=T7,rRe=LX,sRe=lw,iRe=FX,aRe=$X,oRe=QX,lRe=UX,cRe=WX,uRe=GX,dRe=YX,hRe=KX,fRe=JX,M7="ContextMenu",[mRe]=Da(M7,[AX]),Xs=AX(),[pRe,tY]=mRe(M7),nY=t=>{const{__scopeContextMenu:e,children:n,onOpenChange:r,dir:s,modal:i=!0}=t,[a,l]=b.useState(!1),c=Xs(e),d=Rs(r),h=b.useCallback(m=>{l(m),d(m)},[d]);return o.jsx(pRe,{scope:e,open:a,onOpenChange:h,modal:i,children:o.jsx(ZMe,{...c,dir:s,open:a,onOpenChange:h,modal:i,children:n})})};nY.displayName=M7;var rY="ContextMenuTrigger",sY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,disabled:r=!1,...s}=t,i=tY(rY,n),a=Xs(n),l=b.useRef({x:0,y:0}),c=b.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...l.current})}),d=b.useRef(0),h=b.useCallback(()=>window.clearTimeout(d.current),[]),m=g=>{l.current={x:g.clientX,y:g.clientY},i.onOpenChange(!0)};return b.useEffect(()=>h,[h]),b.useEffect(()=>void(r&&h()),[r,h]),o.jsxs(o.Fragment,{children:[o.jsx(JMe,{...a,virtualRef:c}),o.jsx(Sn.span,{"data-state":i.open?"open":"closed","data-disabled":r?"":void 0,...s,ref:e,style:{WebkitTouchCallout:"none",...t.style},onContextMenu:r?t.onContextMenu:nt(t.onContextMenu,g=>{h(),m(g),g.preventDefault()}),onPointerDown:r?t.onPointerDown:nt(t.onPointerDown,tv(g=>{h(),d.current=window.setTimeout(()=>m(g),700)})),onPointerMove:r?t.onPointerMove:nt(t.onPointerMove,tv(h)),onPointerCancel:r?t.onPointerCancel:nt(t.onPointerCancel,tv(h)),onPointerUp:r?t.onPointerUp:nt(t.onPointerUp,tv(h))})]})});sY.displayName=rY;var gRe="ContextMenuPortal",iY=t=>{const{__scopeContextMenu:e,...n}=t,r=Xs(e);return o.jsx(eRe,{...r,...n})};iY.displayName=gRe;var aY="ContextMenuContent",oY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=tY(aY,n),i=Xs(n),a=b.useRef(!1);return o.jsx(tRe,{...i,...r,ref:e,side:"right",sideOffset:2,align:"start",onCloseAutoFocus:l=>{t.onCloseAutoFocus?.(l),!l.defaultPrevented&&a.current&&l.preventDefault(),a.current=!1},onInteractOutside:l=>{t.onInteractOutside?.(l),!l.defaultPrevented&&!s.modal&&(a.current=!0)},style:{...t.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});oY.displayName=aY;var xRe="ContextMenuGroup",vRe=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Xs(n);return o.jsx(nRe,{...s,...r,ref:e})});vRe.displayName=xRe;var yRe="ContextMenuLabel",lY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Xs(n);return o.jsx(rRe,{...s,...r,ref:e})});lY.displayName=yRe;var bRe="ContextMenuItem",cY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Xs(n);return o.jsx(sRe,{...s,...r,ref:e})});cY.displayName=bRe;var wRe="ContextMenuCheckboxItem",uY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Xs(n);return o.jsx(iRe,{...s,...r,ref:e})});uY.displayName=wRe;var SRe="ContextMenuRadioGroup",kRe=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Xs(n);return o.jsx(aRe,{...s,...r,ref:e})});kRe.displayName=SRe;var ORe="ContextMenuRadioItem",dY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Xs(n);return o.jsx(oRe,{...s,...r,ref:e})});dY.displayName=ORe;var jRe="ContextMenuItemIndicator",hY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Xs(n);return o.jsx(lRe,{...s,...r,ref:e})});hY.displayName=jRe;var NRe="ContextMenuSeparator",fY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Xs(n);return o.jsx(cRe,{...s,...r,ref:e})});fY.displayName=NRe;var CRe="ContextMenuArrow",TRe=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Xs(n);return o.jsx(uRe,{...s,...r,ref:e})});TRe.displayName=CRe;var mY="ContextMenuSub",pY=t=>{const{__scopeContextMenu:e,children:n,onOpenChange:r,open:s,defaultOpen:i}=t,a=Xs(e),[l,c]=Kl({prop:s,defaultProp:i??!1,onChange:r,caller:mY});return o.jsx(dRe,{...a,open:l,onOpenChange:c,children:n})};pY.displayName=mY;var ERe="ContextMenuSubTrigger",gY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Xs(n);return o.jsx(hRe,{...s,...r,ref:e})});gY.displayName=ERe;var _Re="ContextMenuSubContent",xY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Xs(n);return o.jsx(fRe,{...s,...r,ref:e,style:{...t.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});xY.displayName=_Re;function tv(t){return e=>e.pointerType!=="mouse"?t(e):void 0}var ARe=nY,MRe=sY,RRe=iY,vY=oY,yY=lY,bY=cY,wY=uY,SY=dY,kY=hY,OY=fY,DRe=pY,jY=gY,NY=xY;const PRe=ARe,zRe=MRe,IRe=DRe,CY=b.forwardRef(({className:t,inset:e,children:n,...r},s)=>o.jsxs(jY,{ref:s,className:xe("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",e&&"pl-8",t),...r,children:[n,o.jsx(Zl,{className:"ml-auto h-4 w-4"})]}));CY.displayName=jY.displayName;const TY=b.forwardRef(({className:t,...e},n)=>o.jsx(NY,{ref:n,className:xe("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]",t),...e}));TY.displayName=NY.displayName;const EY=b.forwardRef(({className:t,...e},n)=>o.jsx(RRe,{children:o.jsx(vY,{ref:n,className:xe("z-50 max-h-[--radix-context-menu-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]",t),...e})}));EY.displayName=vY.displayName;const $a=b.forwardRef(({className:t,inset:e,...n},r)=>o.jsx(bY,{ref:r,className:xe("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e&&"pl-8",t),...n}));$a.displayName=bY.displayName;const LRe=b.forwardRef(({className:t,children:e,checked:n,...r},s)=>o.jsxs(wY,{ref:s,className:xe("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),checked:n,...r,children:[o.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:o.jsx(kY,{children:o.jsx(zo,{className:"h-4 w-4"})})}),e]}));LRe.displayName=wY.displayName;const BRe=b.forwardRef(({className:t,children:e,...n},r)=>o.jsxs(SY,{ref:r,className:xe("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),...n,children:[o.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:o.jsx(kY,{children:o.jsx(hte,{className:"h-2 w-2 fill-current"})})}),e]}));BRe.displayName=SY.displayName;const FRe=b.forwardRef(({className:t,inset:e,...n},r)=>o.jsx(yY,{ref:r,className:xe("px-2 py-1.5 text-sm font-semibold text-foreground",e&&"pl-8",t),...n}));FRe.displayName=yY.displayName;const b0=b.forwardRef(({className:t,...e},n)=>o.jsx(OY,{ref:n,className:xe("-mx-1 my-1 h-px bg-border",t),...e}));b0.displayName=OY.displayName;const Ch=({className:t,...e})=>o.jsx("span",{className:xe("ml-auto text-xs tracking-widest text-muted-foreground",t),...e});Ch.displayName="ContextMenuShortcut";var qRe=Symbol("radix.slottable");function $Re(t){const e=({children:n})=>o.jsx(o.Fragment,{children:n});return e.displayName=`${t}.Slottable`,e.__radixId=qRe,e}var[cw]=Da("Tooltip",[vf]),uw=vf(),_Y="TooltipProvider",HRe=700,gj="tooltip.open",[QRe,R7]=cw(_Y),AY=t=>{const{__scopeTooltip:e,delayDuration:n=HRe,skipDelayDuration:r=300,disableHoverableContent:s=!1,children:i}=t,a=b.useRef(!0),l=b.useRef(!1),c=b.useRef(0);return b.useEffect(()=>{const d=c.current;return()=>window.clearTimeout(d)},[]),o.jsx(QRe,{scope:e,isOpenDelayedRef:a,delayDuration:n,onOpen:b.useCallback(()=>{window.clearTimeout(c.current),a.current=!1},[]),onClose:b.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>a.current=!0,r)},[r]),isPointerInTransitRef:l,onPointerInTransitChange:b.useCallback(d=>{l.current=d},[]),disableHoverableContent:s,children:i})};AY.displayName=_Y;var Mp="Tooltip",[VRe,Ag]=cw(Mp),MY=t=>{const{__scopeTooltip:e,children:n,open:r,defaultOpen:s,onOpenChange:i,disableHoverableContent:a,delayDuration:l}=t,c=R7(Mp,t.__scopeTooltip),d=uw(e),[h,m]=b.useState(null),g=Gi(),x=b.useRef(0),y=a??c.disableHoverableContent,w=l??c.delayDuration,S=b.useRef(!1),[k,j]=Kl({prop:r,defaultProp:s??!1,onChange:A=>{A?(c.onOpen(),document.dispatchEvent(new CustomEvent(gj))):c.onClose(),i?.(A)},caller:Mp}),N=b.useMemo(()=>k?S.current?"delayed-open":"instant-open":"closed",[k]),T=b.useCallback(()=>{window.clearTimeout(x.current),x.current=0,S.current=!1,j(!0)},[j]),E=b.useCallback(()=>{window.clearTimeout(x.current),x.current=0,j(!1)},[j]),_=b.useCallback(()=>{window.clearTimeout(x.current),x.current=window.setTimeout(()=>{S.current=!0,j(!0),x.current=0},w)},[w,j]);return b.useEffect(()=>()=>{x.current&&(window.clearTimeout(x.current),x.current=0)},[]),o.jsx(Yy,{...d,children:o.jsx(VRe,{scope:e,contentId:g,open:k,stateAttribute:N,trigger:h,onTriggerChange:m,onTriggerEnter:b.useCallback(()=>{c.isOpenDelayedRef.current?_():T()},[c.isOpenDelayedRef,_,T]),onTriggerLeave:b.useCallback(()=>{y?E():(window.clearTimeout(x.current),x.current=0)},[E,y]),onOpen:T,onClose:E,disableHoverableContent:y,children:n})})};MY.displayName=Mp;var xj="TooltipTrigger",RY=b.forwardRef((t,e)=>{const{__scopeTooltip:n,...r}=t,s=Ag(xj,n),i=R7(xj,n),a=uw(n),l=b.useRef(null),c=er(e,l,s.onTriggerChange),d=b.useRef(!1),h=b.useRef(!1),m=b.useCallback(()=>d.current=!1,[]);return b.useEffect(()=>()=>document.removeEventListener("pointerup",m),[m]),o.jsx(Ky,{asChild:!0,...a,children:o.jsx(Sn.button,{"aria-describedby":s.open?s.contentId:void 0,"data-state":s.stateAttribute,...r,ref:c,onPointerMove:nt(t.onPointerMove,g=>{g.pointerType!=="touch"&&!h.current&&!i.isPointerInTransitRef.current&&(s.onTriggerEnter(),h.current=!0)}),onPointerLeave:nt(t.onPointerLeave,()=>{s.onTriggerLeave(),h.current=!1}),onPointerDown:nt(t.onPointerDown,()=>{s.open&&s.onClose(),d.current=!0,document.addEventListener("pointerup",m,{once:!0})}),onFocus:nt(t.onFocus,()=>{d.current||s.onOpen()}),onBlur:nt(t.onBlur,s.onClose),onClick:nt(t.onClick,s.onClose)})})});RY.displayName=xj;var D7="TooltipPortal",[URe,WRe]=cw(D7,{forceMount:void 0}),DY=t=>{const{__scopeTooltip:e,forceMount:n,children:r,container:s}=t,i=Ag(D7,e);return o.jsx(URe,{scope:e,forceMount:n,children:o.jsx(oi,{present:n||i.open,children:o.jsx(Xy,{asChild:!0,container:s,children:r})})})};DY.displayName=D7;var xf="TooltipContent",PY=b.forwardRef((t,e)=>{const n=WRe(xf,t.__scopeTooltip),{forceMount:r=n.forceMount,side:s="top",...i}=t,a=Ag(xf,t.__scopeTooltip);return o.jsx(oi,{present:r||a.open,children:a.disableHoverableContent?o.jsx(zY,{side:s,...i,ref:e}):o.jsx(GRe,{side:s,...i,ref:e})})}),GRe=b.forwardRef((t,e)=>{const n=Ag(xf,t.__scopeTooltip),r=R7(xf,t.__scopeTooltip),s=b.useRef(null),i=er(e,s),[a,l]=b.useState(null),{trigger:c,onClose:d}=n,h=s.current,{onPointerInTransitChange:m}=r,g=b.useCallback(()=>{l(null),m(!1)},[m]),x=b.useCallback((y,w)=>{const S=y.currentTarget,k={x:y.clientX,y:y.clientY},j=JRe(k,S.getBoundingClientRect()),N=eDe(k,j),T=tDe(w.getBoundingClientRect()),E=rDe([...N,...T]);l(E),m(!0)},[m]);return b.useEffect(()=>()=>g(),[g]),b.useEffect(()=>{if(c&&h){const y=S=>x(S,h),w=S=>x(S,c);return c.addEventListener("pointerleave",y),h.addEventListener("pointerleave",w),()=>{c.removeEventListener("pointerleave",y),h.removeEventListener("pointerleave",w)}}},[c,h,x,g]),b.useEffect(()=>{if(a){const y=w=>{const S=w.target,k={x:w.clientX,y:w.clientY},j=c?.contains(S)||h?.contains(S),N=!nDe(k,a);j?g():N&&(g(),d())};return document.addEventListener("pointermove",y),()=>document.removeEventListener("pointermove",y)}},[c,h,a,d,g]),o.jsx(zY,{...t,ref:i})}),[XRe,YRe]=cw(Mp,{isInside:!1}),KRe=$Re("TooltipContent"),zY=b.forwardRef((t,e)=>{const{__scopeTooltip:n,children:r,"aria-label":s,onEscapeKeyDown:i,onPointerDownOutside:a,...l}=t,c=Ag(xf,n),d=uw(n),{onClose:h}=c;return b.useEffect(()=>(document.addEventListener(gj,h),()=>document.removeEventListener(gj,h)),[h]),b.useEffect(()=>{if(c.trigger){const m=g=>{g.target?.contains(c.trigger)&&h()};return window.addEventListener("scroll",m,{capture:!0}),()=>window.removeEventListener("scroll",m,{capture:!0})}},[c.trigger,h]),o.jsx(Rj,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:i,onPointerDownOutside:a,onFocusOutside:m=>m.preventDefault(),onDismiss:h,children:o.jsxs(Dj,{"data-state":c.stateAttribute,...d,...l,ref:e,style:{...l.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[o.jsx(KRe,{children:r}),o.jsx(XRe,{scope:n,isInside:!0,children:o.jsx(Iee,{id:c.contentId,role:"tooltip",children:s||r})})]})})});PY.displayName=xf;var IY="TooltipArrow",ZRe=b.forwardRef((t,e)=>{const{__scopeTooltip:n,...r}=t,s=uw(n);return YRe(IY,n).isInside?null:o.jsx(Pj,{...s,...r,ref:e})});ZRe.displayName=IY;function JRe(t,e){const n=Math.abs(e.top-t.y),r=Math.abs(e.bottom-t.y),s=Math.abs(e.right-t.x),i=Math.abs(e.left-t.x);switch(Math.min(n,r,s,i)){case i:return"left";case s:return"right";case n:return"top";case r:return"bottom";default:throw new Error("unreachable")}}function eDe(t,e,n=5){const r=[];switch(e){case"top":r.push({x:t.x-n,y:t.y+n},{x:t.x+n,y:t.y+n});break;case"bottom":r.push({x:t.x-n,y:t.y-n},{x:t.x+n,y:t.y-n});break;case"left":r.push({x:t.x+n,y:t.y-n},{x:t.x+n,y:t.y+n});break;case"right":r.push({x:t.x-n,y:t.y-n},{x:t.x-n,y:t.y+n});break}return r}function tDe(t){const{top:e,right:n,bottom:r,left:s}=t;return[{x:s,y:e},{x:n,y:e},{x:n,y:r},{x:s,y:r}]}function nDe(t,e){const{x:n,y:r}=t;let s=!1;for(let i=0,a=e.length-1;ir!=g>r&&n<(m-d)*(r-h)/(g-h)+d&&(s=!s)}return s}function rDe(t){const e=t.slice();return e.sort((n,r)=>n.xr.x?1:n.yr.y?1:0),sDe(e)}function sDe(t){if(t.length<=1)return t.slice();const e=[];for(let r=0;r=2;){const i=e[e.length-1],a=e[e.length-2];if((i.x-a.x)*(s.y-a.y)>=(i.y-a.y)*(s.x-a.x))e.pop();else break}e.push(s)}e.pop();const n=[];for(let r=t.length-1;r>=0;r--){const s=t[r];for(;n.length>=2;){const i=n[n.length-1],a=n[n.length-2];if((i.x-a.x)*(s.y-a.y)>=(i.y-a.y)*(s.x-a.x))n.pop();else break}n.push(s)}return n.pop(),e.length===1&&n.length===1&&e[0].x===n[0].x&&e[0].y===n[0].y?e:e.concat(n)}var iDe=AY,aDe=MY,oDe=RY,lDe=DY,LY=PY;const cDe=iDe,uDe=aDe,dDe=oDe,BY=b.forwardRef(({className:t,sideOffset:e=4,...n},r)=>o.jsx(lDe,{children:o.jsx(LY,{ref:r,sideOffset:e,className:xe("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",t),...n})}));BY.displayName=LY.displayName;function hDe({children:t}){mie();const[e,n]=b.useState(!0),[r,s]=b.useState(!1),[i,a]=b.useState(!1),{theme:l,setTheme:c}=Kj(),d=wJ(),h=na();b.useEffect(()=>{const w=S=>{(S.metaKey||S.ctrlKey)&&S.key==="k"&&(S.preventDefault(),a(!0))};return window.addEventListener("keydown",w),()=>window.removeEventListener("keydown",w)},[]);const m=[{title:"概览",items:[{icon:L0,label:"首页",path:"/"}]},{title:"麦麦配置编辑",items:[{icon:Po,label:"麦麦主程序配置",path:"/config/bot"},{icon:CI,label:"AI模型厂商配置",path:"/config/modelProvider",tourId:"sidebar-model-provider"},{icon:TI,label:"模型管理与分配",path:"/config/model",tourId:"sidebar-model-management"},{icon:E9,label:"麦麦适配器配置",path:"/config/adapter"}]},{title:"麦麦资源管理",items:[{icon:Ij,label:"表情包管理",path:"/resource/emoji"},{icon:Gh,label:"表达方式管理",path:"/resource/expression"},{icon:EI,label:"人物信息管理",path:"/resource/person"},{icon:NI,label:"知识库图谱可视化",path:"/resource/knowledge-graph"}]},{title:"扩展与监控",items:[{icon:ed,label:"插件市场",path:"/plugins"},{icon:E9,label:"插件配置",path:"/plugin-config"},{icon:Fv,label:"日志查看器",path:"/logs"},{icon:Gh,label:"本地聊天室",path:"/chat"}]},{title:"系统",items:[{icon:Vc,label:"系统设置",path:"/settings"}]}],x=l==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":l,y=()=>{localStorage.removeItem("access-token"),h({to:"/auth"})};return o.jsx(cDe,{delayDuration:300,children:o.jsxs("div",{className:"flex h-screen overflow-hidden",children:[o.jsxs("aside",{className:xe("fixed inset-y-0 left-0 z-50 flex flex-col border-r bg-card transition-all duration-300 lg:relative lg:z-0","w-64 lg:w-auto",e?"lg:w-64":"lg:w-16",r?"translate-x-0":"-translate-x-full lg:translate-x-0"),children:[o.jsx("div",{className:"flex h-16 items-center border-b px-4",children:o.jsxs("div",{className:xe("relative flex items-center justify-center flex-1 transition-all overflow-hidden","lg:flex-1",!e&&"lg:flex-none lg:w-8"),children:[o.jsxs("div",{className:xe("flex items-baseline gap-2",!e&&"lg:hidden"),children:[o.jsx("span",{className:"font-bold text-xl text-primary-gradient whitespace-nowrap",children:"MaiBot WebUI"}),o.jsx("span",{className:"text-xs text-primary/60 whitespace-nowrap",children:Qse()})]}),!e&&o.jsx("span",{className:"hidden lg:block font-bold text-primary-gradient text-2xl",children:"M"})]})}),o.jsx(pn,{className:xe("flex-1 overflow-x-hidden",!e&&"lg:w-16"),children:o.jsx("nav",{className:xe("p-4",!e&&"lg:p-2 lg:w-16"),children:o.jsx("ul",{className:xe("space-y-6",!e&&"lg:space-y-3 lg:w-full"),children:m.map((w,S)=>o.jsxs("li",{children:[o.jsx("div",{className:xe("px-3 h-[1.25rem]","mb-2",!e&&"lg:mb-1 lg:invisible"),children:o.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground/60 whitespace-nowrap",children:w.title})}),!e&&S>0&&o.jsx("div",{className:"hidden lg:block mb-2 border-t border-border"}),o.jsx("ul",{className:"space-y-1",children:w.items.map(k=>{const j=d({to:k.path}),N=k.icon,T=o.jsxs(o.Fragment,{children:[j&&o.jsx("div",{className:"absolute left-0 top-1/2 h-8 w-1 -translate-y-1/2 rounded-r-full bg-primary transition-opacity duration-300"}),o.jsxs("div",{className:xe("flex items-center transition-all duration-300",e?"gap-3":"gap-3 lg:gap-0"),children:[o.jsx(N,{className:xe("h-5 w-5 flex-shrink-0",j&&"text-primary"),strokeWidth:2,fill:"none"}),o.jsx("span",{className:xe("text-sm font-medium whitespace-nowrap transition-all duration-300",j&&"font-semibold",e?"opacity-100 max-w-[200px]":"opacity-100 max-w-[200px] lg:opacity-0 lg:max-w-0 lg:overflow-hidden"),children:k.label})]})]});return o.jsx("li",{className:"relative",children:o.jsxs(uDe,{children:[o.jsx(dDe,{asChild:!0,children:o.jsx(rv,{to:k.path,"data-tour":k.tourId,className:xe("relative flex items-center rounded-lg py-2 transition-all duration-300","hover:bg-accent hover:text-accent-foreground",j?"bg-accent text-foreground":"text-muted-foreground hover:text-foreground",e?"px-3":"px-3 lg:px-0 lg:justify-center lg:w-12 lg:mx-auto"),onClick:()=>s(!1),children:T})}),!e&&o.jsx(BY,{side:"right",className:"hidden lg:block",children:o.jsx("p",{children:k.label})})]})},k.path)})})]},w.title))})})})]}),r&&o.jsx("div",{className:"fixed inset-0 z-40 bg-black/50 lg:hidden",onClick:()=>s(!1)}),o.jsxs("div",{className:"flex flex-1 flex-col overflow-hidden",children:[o.jsxs("header",{className:"flex h-16 items-center justify-between border-b bg-card/80 backdrop-blur-md px-4 sticky top-0 z-10",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsx("button",{onClick:()=>s(!r),className:"rounded-lg p-2 hover:bg-accent lg:hidden",children:o.jsx(fte,{className:"h-5 w-5"})}),o.jsx("button",{onClick:()=>n(!e),className:"hidden rounded-lg p-2 hover:bg-accent lg:block",title:e?"收起侧边栏":"展开侧边栏",children:o.jsx(wd,{className:xe("h-5 w-5 transition-transform",!e&&"rotate-180")})})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsxs("button",{onClick:()=>a(!0),className:"relative hidden md:flex items-center w-64 h-9 pl-9 pr-16 bg-background/50 border rounded-md hover:bg-accent/50 transition-colors text-left",children:[o.jsx(ii,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),o.jsx("span",{className:"text-sm text-muted-foreground",children:"搜索..."}),o.jsxs(EX,{size:"sm",className:"absolute right-2 top-1/2 -translate-y-1/2",children:[o.jsx("span",{className:"text-xs",children:"⌘"}),"K"]})]}),o.jsx(vMe,{open:i,onOpenChange:a}),o.jsxs(ue,{variant:"ghost",size:"sm",onClick:()=>window.open("https://docs.mai-mai.org","_blank"),className:"gap-2",title:"查看麦麦文档",children:[o.jsx(mte,{className:"h-4 w-4"}),o.jsx("span",{className:"hidden sm:inline",children:"麦麦文档"})]}),o.jsx("button",{onClick:w=>{Dse(x==="dark"?"light":"dark",c,w)},className:"rounded-lg p-2 hover:bg-accent",title:x==="dark"?"切换到浅色模式":"切换到深色模式",children:x==="dark"?o.jsx(ik,{className:"h-5 w-5"}):o.jsx(ak,{className:"h-5 w-5"})}),o.jsx("div",{className:"h-6 w-px bg-border"}),o.jsxs(ue,{variant:"ghost",size:"sm",onClick:y,className:"gap-2",title:"登出系统",children:[o.jsx(_9,{className:"h-4 w-4"}),o.jsx("span",{className:"hidden sm:inline",children:"登出"})]})]})]}),o.jsxs(PRe,{children:[o.jsx(zRe,{asChild:!0,children:o.jsx("main",{className:"flex-1 overflow-hidden bg-background",children:t})}),o.jsxs(EY,{className:"w-64",children:[o.jsxs($a,{onClick:()=>h({to:"/"}),children:[o.jsx(L0,{className:"mr-2 h-4 w-4"}),"首页"]}),o.jsxs($a,{onClick:()=>h({to:"/settings"}),children:[o.jsx(Vc,{className:"mr-2 h-4 w-4"}),"系统设置"]}),o.jsxs($a,{onClick:()=>h({to:"/logs"}),children:[o.jsx(Fv,{className:"mr-2 h-4 w-4"}),"日志查看器"]}),o.jsx(b0,{}),o.jsxs(IRe,{children:[o.jsxs(CY,{children:[o.jsx(kI,{className:"mr-2 h-4 w-4"}),"切换主题"]}),o.jsxs(TY,{className:"w-48",children:[o.jsxs($a,{onClick:()=>c("light"),disabled:l==="light",children:[o.jsx(ik,{className:"mr-2 h-4 w-4"}),"浅色",l==="light"&&o.jsx(Ch,{children:"✓"})]}),o.jsxs($a,{onClick:()=>c("dark"),disabled:l==="dark",children:[o.jsx(ak,{className:"mr-2 h-4 w-4"}),"深色",l==="dark"&&o.jsx(Ch,{children:"✓"})]}),o.jsxs($a,{onClick:()=>c("system"),disabled:l==="system",children:[o.jsx(Vc,{className:"mr-2 h-4 w-4"}),"跟随系统",l==="system"&&o.jsx(Ch,{children:"✓"})]})]})]}),o.jsx(b0,{}),o.jsxs($a,{onClick:()=>window.location.reload(),children:[o.jsx(pte,{className:"mr-2 h-4 w-4"}),"刷新页面",o.jsx(Ch,{children:"⌘R"})]}),o.jsxs($a,{onClick:()=>a(!0),children:[o.jsx(ii,{className:"mr-2 h-4 w-4"}),"搜索",o.jsx(Ch,{children:"⌘K"})]}),o.jsx(b0,{}),o.jsxs($a,{onClick:()=>window.open("https://docs.mai-mai.org","_blank"),children:[o.jsx(w0,{className:"mr-2 h-4 w-4"}),"麦麦文档"]}),o.jsx(b0,{}),o.jsxs($a,{onClick:y,className:"text-destructive focus:text-destructive",children:[o.jsx(_9,{className:"mr-2 h-4 w-4"}),"登出系统"]})]})]})]})]})})}function fDe(t){const e=t.split(` +`).slice(1),n=[];for(const r of e){const s=r.trim();if(!s.startsWith("at "))continue;const i=s.match(/at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?$/);i?n.push({functionName:i[1]||"",fileName:i[2],lineNumber:i[3],columnNumber:i[4],raw:s}):n.push({functionName:"",fileName:"",lineNumber:"",columnNumber:"",raw:s})}return n}function mDe({error:t,errorInfo:e}){const[n,r]=b.useState(!0),[s,i]=b.useState(!1),[a,l]=b.useState(!1),c=t.stack?fDe(t.stack):[],d=async()=>{const h=` Error: ${t.name} Message: ${t.message} @@ -404,4 +404,4 @@ ${e?.componentStack||"No component stack available"} URL: ${window.location.href} User Agent: ${navigator.userAgent} Time: ${new Date().toISOString()} - `.trim();try{await navigator.clipboard.writeText(h),l(!0),setTimeout(()=>l(!1),2e3)}catch(m){console.error("Failed to copy:",m)}};return o.jsxs("div",{className:"space-y-4",children:[o.jsxs(ga,{variant:"destructive",className:"border-red-500/50 bg-red-500/10",children:[o.jsx(Wa,{className:"h-4 w-4"}),o.jsxs(xa,{className:"font-mono text-sm",children:[o.jsxs("span",{className:"font-semibold",children:[t.name,":"]})," ",t.message]})]}),c.length>0&&o.jsxs(Pz,{open:n,onOpenChange:r,children:[o.jsx(zz,{asChild:!0,children:o.jsxs(de,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[o.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[o.jsx(mte,{className:"h-4 w-4"}),"Stack Trace (",c.length," frames)"]}),n?o.jsx(P0,{className:"h-4 w-4"}):o.jsx(nd,{className:"h-4 w-4"})]})}),o.jsx(Iz,{children:o.jsx(gn,{className:"h-[280px] rounded-md border bg-muted/30",children:o.jsx("div",{className:"p-3 space-y-1",children:c.map((h,m)=>o.jsx("div",{className:"font-mono text-xs p-2 rounded hover:bg-muted/50 transition-colors",children:o.jsxs("div",{className:"flex items-start gap-2",children:[o.jsxs("span",{className:"text-muted-foreground w-6 text-right flex-shrink-0",children:[m+1,"."]}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("span",{className:"text-primary font-medium",children:h.functionName}),h.fileName&&o.jsxs("div",{className:"text-muted-foreground mt-0.5 break-all",children:[h.fileName,h.lineNumber&&o.jsxs("span",{className:"text-yellow-600 dark:text-yellow-400",children:[":",h.lineNumber,":",h.columnNumber]})]})]})]})},m))})})})]}),e?.componentStack&&o.jsxs(Pz,{open:s,onOpenChange:i,children:[o.jsx(zz,{asChild:!0,children:o.jsxs(de,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[o.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[o.jsx(Wa,{className:"h-4 w-4"}),"Component Stack"]}),s?o.jsx(P0,{className:"h-4 w-4"}):o.jsx(nd,{className:"h-4 w-4"})]})}),o.jsx(Iz,{children:o.jsx(gn,{className:"h-[200px] rounded-md border bg-muted/30",children:o.jsx("pre",{className:"p-3 font-mono text-xs whitespace-pre-wrap text-muted-foreground",children:e.componentStack})})})]}),o.jsx(de,{variant:"outline",size:"sm",onClick:d,className:"w-full",children:a?o.jsxs(o.Fragment,{children:[o.jsx(Ro,{className:"mr-2 h-4 w-4 text-green-500"}),"已复制到剪贴板"]}):o.jsxs(o.Fragment,{children:[o.jsx(Mv,{className:"mr-2 h-4 w-4"}),"复制错误信息"]})})]})}function zY({error:t,errorInfo:e}){const n=()=>{window.location.href="/"},r=()=>{window.location.reload()};return o.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background p-4",children:o.jsxs(qt,{className:"w-full max-w-2xl shadow-lg",children:[o.jsxs(Fn,{className:"text-center pb-2",children:[o.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30 mb-4",children:o.jsx(Wa,{className:"h-8 w-8 text-red-600 dark:text-red-400"})}),o.jsx(qn,{className:"text-2xl font-bold",children:"页面出现了问题"}),o.jsx(ts,{className:"text-base mt-2",children:"应用程序遇到了意外错误。您可以尝试刷新页面或返回首页。"})]}),o.jsxs(Gn,{className:"space-y-4",children:[o.jsx(rDe,{error:t,errorInfo:e}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 pt-2",children:[o.jsxs(de,{onClick:r,className:"flex-1",children:[o.jsx(Ps,{className:"mr-2 h-4 w-4"}),"刷新页面"]}),o.jsxs(de,{onClick:n,variant:"outline",className:"flex-1",children:[o.jsx(D0,{className:"mr-2 h-4 w-4"}),"返回首页"]})]}),o.jsx("p",{className:"text-xs text-center text-muted-foreground pt-2",children:"如果问题持续存在,请将错误信息复制并反馈给开发者"})]})]})})}class sDe extends b.Component{constructor(e){super(e),this.state={hasError:!1,error:null,errorInfo:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,n){console.error("ErrorBoundary caught an error:",e,n),this.setState({errorInfo:n})}handleReset=()=>{this.setState({hasError:!1,error:null,errorInfo:null})};render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback:o.jsx(zY,{error:this.state.error,errorInfo:this.state.errorInfo}):this.props.children}}function IY({error:t}){return o.jsx(zY,{error:t,errorInfo:null})}const Cg=yJ({component:()=>o.jsxs(o.Fragment,{children:[o.jsx(Bz,{}),!1]}),beforeLoad:()=>{if(window.location.pathname==="/"&&!CB())throw wJ({to:"/auth"})}}),iDe=ms({getParentRoute:()=>Cg,path:"/auth",component:die}),aDe=ms({getParentRoute:()=>Cg,path:"/setup",component:Die}),Xs=ms({getParentRoute:()=>Cg,id:"protected",component:()=>o.jsx(KRe,{children:o.jsx(Bz,{})}),errorComponent:({error:t})=>o.jsx(IY,{error:t})}),oDe=ms({getParentRoute:()=>Xs,path:"/",component:kse}),lDe=ms({getParentRoute:()=>Xs,path:"/config/bot",component:M0e}),cDe=ms({getParentRoute:()=>Xs,path:"/config/modelProvider",component:Zxe}),uDe=ms({getParentRoute:()=>Xs,path:"/config/model",component:Hve}),dDe=ms({getParentRoute:()=>Xs,path:"/config/adapter",component:Vve}),hDe=ms({getParentRoute:()=>Xs,path:"/resource/emoji",component:pOe}),fDe=ms({getParentRoute:()=>Xs,path:"/resource/expression",component:NOe}),mDe=ms({getParentRoute:()=>Xs,path:"/resource/person",component:IOe}),pDe=ms({getParentRoute:()=>Xs,path:"/resource/knowledge-graph",component:CTe}),gDe=ms({getParentRoute:()=>Xs,path:"/logs",component:vAe}),xDe=ms({getParentRoute:()=>Xs,path:"/chat",component:eMe}),vDe=ms({getParentRoute:()=>Xs,path:"/plugins",component:IAe}),yDe=ms({getParentRoute:()=>Xs,path:"/plugin-config",component:LAe}),bDe=ms({getParentRoute:()=>Xs,path:"/plugin-mirrors",component:BAe}),wDe=ms({getParentRoute:()=>Xs,path:"/settings",component:rie}),SDe=ms({getParentRoute:()=>Cg,path:"*",component:_B}),kDe=Cg.addChildren([iDe,aDe,Xs.addChildren([oDe,lDe,cDe,uDe,dDe,hDe,fDe,mDe,pDe,vDe,yDe,bDe,gDe,xDe,wDe]),SDe]),ODe=bJ({routeTree:kDe,defaultNotFoundComponent:_B,defaultErrorComponent:({error:t})=>o.jsx(IY,{error:t})});function jDe({children:t,defaultTheme:e="system",storageKey:n="ui-theme",...r}){const[s,i]=b.useState(()=>localStorage.getItem(n)||e);b.useEffect(()=>{const l=window.document.documentElement;if(l.classList.remove("light","dark"),s==="system"){const c=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";l.classList.add(c);return}l.classList.add(s)},[s]),b.useEffect(()=>{const l=localStorage.getItem("accent-color");if(l){const c=document.documentElement,h={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[l];h&&(c.style.setProperty("--primary",h.hsl),h.gradient?(c.style.setProperty("--primary-gradient",h.gradient),c.classList.add("has-gradient")):(c.style.removeProperty("--primary-gradient"),c.classList.remove("has-gradient")))}},[]);const a={theme:s,setTheme:l=>{localStorage.setItem(n,l),i(l)}};return o.jsx(KL.Provider,{...r,value:a,children:t})}function NDe({children:t,defaultEnabled:e=!0,defaultWavesEnabled:n=!0,storageKey:r="enable-animations",wavesStorageKey:s="enable-waves-background"}){const[i,a]=b.useState(()=>{const h=localStorage.getItem(r);return h!==null?h==="true":e}),[l,c]=b.useState(()=>{const h=localStorage.getItem(s);return h!==null?h==="true":n});b.useEffect(()=>{const h=document.documentElement;i?h.classList.remove("no-animations"):h.classList.add("no-animations"),localStorage.setItem(r,String(i))},[i,r]),b.useEffect(()=>{localStorage.setItem(s,String(l))},[l,s]);const d={enableAnimations:i,setEnableAnimations:a,enableWavesBackground:l,setEnableWavesBackground:c};return o.jsx(ZL.Provider,{value:d,children:t})}var E7="ToastProvider",[_7,CDe,TDe]=By("Toast"),[LY]=Ra("Toast",[TDe]),[EDe,ow]=LY(E7),BY=t=>{const{__scopeToast:e,label:n="Notification",duration:r=5e3,swipeDirection:s="right",swipeThreshold:i=50,children:a}=t,[l,c]=b.useState(null),[d,h]=b.useState(0),m=b.useRef(!1),g=b.useRef(!1);return n.trim()||console.error(`Invalid prop \`label\` supplied to \`${E7}\`. Expected non-empty \`string\`.`),o.jsx(_7.Provider,{scope:e,children:o.jsx(EDe,{scope:e,label:n,duration:r,swipeDirection:s,swipeThreshold:i,toastCount:d,viewport:l,onViewportChange:c,onToastAdd:b.useCallback(()=>h(x=>x+1),[]),onToastRemove:b.useCallback(()=>h(x=>x-1),[]),isFocusedToastEscapeKeyDownRef:m,isClosePausedRef:g,children:a})})};BY.displayName=E7;var FY="ToastViewport",_De=["F8"],hj="toast.viewportPause",fj="toast.viewportResume",qY=b.forwardRef((t,e)=>{const{__scopeToast:n,hotkey:r=_De,label:s="Notifications ({hotkey})",...i}=t,a=ow(FY,n),l=CDe(n),c=b.useRef(null),d=b.useRef(null),h=b.useRef(null),m=b.useRef(null),g=Yn(e,m,a.onViewportChange),x=r.join("+").replace(/Key/g,"").replace(/Digit/g,""),y=a.toastCount>0;b.useEffect(()=>{const S=k=>{r.length!==0&&r.every(N=>k[N]||k.code===N)&&m.current?.focus()};return document.addEventListener("keydown",S),()=>document.removeEventListener("keydown",S)},[r]),b.useEffect(()=>{const S=c.current,k=m.current;if(y&&S&&k){const j=()=>{if(!a.isClosePausedRef.current){const _=new CustomEvent(hj);k.dispatchEvent(_),a.isClosePausedRef.current=!0}},N=()=>{if(a.isClosePausedRef.current){const _=new CustomEvent(fj);k.dispatchEvent(_),a.isClosePausedRef.current=!1}},T=_=>{!S.contains(_.relatedTarget)&&N()},E=()=>{S.contains(document.activeElement)||N()};return S.addEventListener("focusin",j),S.addEventListener("focusout",T),S.addEventListener("pointermove",j),S.addEventListener("pointerleave",E),window.addEventListener("blur",j),window.addEventListener("focus",N),()=>{S.removeEventListener("focusin",j),S.removeEventListener("focusout",T),S.removeEventListener("pointermove",j),S.removeEventListener("pointerleave",E),window.removeEventListener("blur",j),window.removeEventListener("focus",N)}}},[y,a.isClosePausedRef]);const w=b.useCallback(({tabbingDirection:S})=>{const j=l().map(N=>{const T=N.ref.current,E=[T,...HDe(T)];return S==="forwards"?E:E.reverse()});return(S==="forwards"?j.reverse():j).flat()},[l]);return b.useEffect(()=>{const S=m.current;if(S){const k=j=>{const N=j.altKey||j.ctrlKey||j.metaKey;if(j.key==="Tab"&&!N){const E=document.activeElement,_=j.shiftKey;if(j.target===S&&_){d.current?.focus();return}const P=w({tabbingDirection:_?"backwards":"forwards"}),B=P.findIndex($=>$===E);J3(P.slice(B+1))?j.preventDefault():_?d.current?.focus():h.current?.focus()}};return S.addEventListener("keydown",k),()=>S.removeEventListener("keydown",k)}},[l,w]),o.jsxs(Pee,{ref:c,role:"region","aria-label":s.replace("{hotkey}",x),tabIndex:-1,style:{pointerEvents:y?void 0:"none"},children:[y&&o.jsx(mj,{ref:d,onFocusFromOutsideViewport:()=>{const S=w({tabbingDirection:"forwards"});J3(S)}}),o.jsx(_7.Slot,{scope:n,children:o.jsx(xn.ol,{tabIndex:-1,...i,ref:g})}),y&&o.jsx(mj,{ref:h,onFocusFromOutsideViewport:()=>{const S=w({tabbingDirection:"backwards"});J3(S)}})]})});qY.displayName=FY;var $Y="ToastFocusProxy",mj=b.forwardRef((t,e)=>{const{__scopeToast:n,onFocusFromOutsideViewport:r,...s}=t,i=ow($Y,n);return o.jsx(vI,{tabIndex:0,...s,ref:e,style:{position:"fixed"},onFocus:a=>{const l=a.relatedTarget;!i.viewport?.contains(l)&&r()}})});mj.displayName=$Y;var Tg="Toast",ADe="toast.swipeStart",MDe="toast.swipeMove",RDe="toast.swipeCancel",DDe="toast.swipeEnd",HY=b.forwardRef((t,e)=>{const{forceMount:n,open:r,defaultOpen:s,onOpenChange:i,...a}=t,[l,c]=Xl({prop:r,defaultProp:s??!0,onChange:i,caller:Tg});return o.jsx(ii,{present:n||l,children:o.jsx(IDe,{open:l,...a,ref:e,onClose:()=>c(!1),onPause:Rs(t.onPause),onResume:Rs(t.onResume),onSwipeStart:nt(t.onSwipeStart,d=>{d.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:nt(t.onSwipeMove,d=>{const{x:h,y:m}=d.detail.delta;d.currentTarget.setAttribute("data-swipe","move"),d.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${h}px`),d.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${m}px`)}),onSwipeCancel:nt(t.onSwipeCancel,d=>{d.currentTarget.setAttribute("data-swipe","cancel"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),d.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),d.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:nt(t.onSwipeEnd,d=>{const{x:h,y:m}=d.detail.delta;d.currentTarget.setAttribute("data-swipe","end"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),d.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${h}px`),d.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${m}px`),c(!1)})})})});HY.displayName=Tg;var[PDe,zDe]=LY(Tg,{onClose(){}}),IDe=b.forwardRef((t,e)=>{const{__scopeToast:n,type:r="foreground",duration:s,open:i,onClose:a,onEscapeKeyDown:l,onPause:c,onResume:d,onSwipeStart:h,onSwipeMove:m,onSwipeCancel:g,onSwipeEnd:x,...y}=t,w=ow(Tg,n),[S,k]=b.useState(null),j=Yn(e,z=>k(z)),N=b.useRef(null),T=b.useRef(null),E=s||w.duration,_=b.useRef(0),A=b.useRef(E),L=b.useRef(0),{onToastAdd:P,onToastRemove:B}=w,$=Rs(()=>{S?.contains(document.activeElement)&&w.viewport?.focus(),a()}),U=b.useCallback(z=>{!z||z===1/0||(window.clearTimeout(L.current),_.current=new Date().getTime(),L.current=window.setTimeout($,z))},[$]);b.useEffect(()=>{const z=w.viewport;if(z){const Q=()=>{U(A.current),d?.()},F=()=>{const Y=new Date().getTime()-_.current;A.current=A.current-Y,window.clearTimeout(L.current),c?.()};return z.addEventListener(hj,F),z.addEventListener(fj,Q),()=>{z.removeEventListener(hj,F),z.removeEventListener(fj,Q)}}},[w.viewport,E,c,d,U]),b.useEffect(()=>{i&&!w.isClosePausedRef.current&&U(E)},[i,E,w.isClosePausedRef,U]),b.useEffect(()=>(P(),()=>B()),[P,B]);const te=b.useMemo(()=>S?YY(S):null,[S]);return w.viewport?o.jsxs(o.Fragment,{children:[te&&o.jsx(LDe,{__scopeToast:n,role:"status","aria-live":r==="foreground"?"assertive":"polite",children:te}),o.jsx(PDe,{scope:n,onClose:$,children:pa.createPortal(o.jsx(_7.ItemSlot,{scope:n,children:o.jsx(zee,{asChild:!0,onEscapeKeyDown:nt(l,()=>{w.isFocusedToastEscapeKeyDownRef.current||$(),w.isFocusedToastEscapeKeyDownRef.current=!1}),children:o.jsx(xn.li,{tabIndex:0,"data-state":i?"open":"closed","data-swipe-direction":w.swipeDirection,...y,ref:j,style:{userSelect:"none",touchAction:"none",...t.style},onKeyDown:nt(t.onKeyDown,z=>{z.key==="Escape"&&(l?.(z.nativeEvent),z.nativeEvent.defaultPrevented||(w.isFocusedToastEscapeKeyDownRef.current=!0,$()))}),onPointerDown:nt(t.onPointerDown,z=>{z.button===0&&(N.current={x:z.clientX,y:z.clientY})}),onPointerMove:nt(t.onPointerMove,z=>{if(!N.current)return;const Q=z.clientX-N.current.x,F=z.clientY-N.current.y,Y=!!T.current,J=["left","right"].includes(w.swipeDirection),X=["left","up"].includes(w.swipeDirection)?Math.min:Math.max,R=J?X(0,Q):0,ie=J?0:X(0,F),G=z.pointerType==="touch"?10:2,I={x:R,y:ie},V={originalEvent:z,delta:I};Y?(T.current=I,Z1(MDe,m,V,{discrete:!1})):Lz(I,w.swipeDirection,G)?(T.current=I,Z1(ADe,h,V,{discrete:!1}),z.target.setPointerCapture(z.pointerId)):(Math.abs(Q)>G||Math.abs(F)>G)&&(N.current=null)}),onPointerUp:nt(t.onPointerUp,z=>{const Q=T.current,F=z.target;if(F.hasPointerCapture(z.pointerId)&&F.releasePointerCapture(z.pointerId),T.current=null,N.current=null,Q){const Y=z.currentTarget,J={originalEvent:z,delta:Q};Lz(Q,w.swipeDirection,w.swipeThreshold)?Z1(DDe,x,J,{discrete:!0}):Z1(RDe,g,J,{discrete:!0}),Y.addEventListener("click",X=>X.preventDefault(),{once:!0})}})})})}),w.viewport)})]}):null}),LDe=t=>{const{__scopeToast:e,children:n,...r}=t,s=ow(Tg,e),[i,a]=b.useState(!1),[l,c]=b.useState(!1);return qDe(()=>a(!0)),b.useEffect(()=>{const d=window.setTimeout(()=>c(!0),1e3);return()=>window.clearTimeout(d)},[]),l?null:o.jsx(Qy,{asChild:!0,children:o.jsx(vI,{...r,children:i&&o.jsxs(o.Fragment,{children:[s.label," ",n]})})})},BDe="ToastTitle",QY=b.forwardRef((t,e)=>{const{__scopeToast:n,...r}=t;return o.jsx(xn.div,{...r,ref:e})});QY.displayName=BDe;var FDe="ToastDescription",VY=b.forwardRef((t,e)=>{const{__scopeToast:n,...r}=t;return o.jsx(xn.div,{...r,ref:e})});VY.displayName=FDe;var UY="ToastAction",WY=b.forwardRef((t,e)=>{const{altText:n,...r}=t;return n.trim()?o.jsx(XY,{altText:n,asChild:!0,children:o.jsx(A7,{...r,ref:e})}):(console.error(`Invalid prop \`altText\` supplied to \`${UY}\`. Expected non-empty \`string\`.`),null)});WY.displayName=UY;var GY="ToastClose",A7=b.forwardRef((t,e)=>{const{__scopeToast:n,...r}=t,s=zDe(GY,n);return o.jsx(XY,{asChild:!0,children:o.jsx(xn.button,{type:"button",...r,ref:e,onClick:nt(t.onClick,s.onClose)})})});A7.displayName=GY;var XY=b.forwardRef((t,e)=>{const{__scopeToast:n,altText:r,...s}=t;return o.jsx(xn.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":r||void 0,...s,ref:e})});function YY(t){const e=[];return Array.from(t.childNodes).forEach(r=>{if(r.nodeType===r.TEXT_NODE&&r.textContent&&e.push(r.textContent),$De(r)){const s=r.ariaHidden||r.hidden||r.style.display==="none",i=r.dataset.radixToastAnnounceExclude==="";if(!s)if(i){const a=r.dataset.radixToastAnnounceAlt;a&&e.push(a)}else e.push(...YY(r))}}),e}function Z1(t,e,n,{discrete:r}){const s=n.originalEvent.currentTarget,i=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:n});e&&s.addEventListener(t,e,{once:!0}),r?xI(s,i):s.dispatchEvent(i)}var Lz=(t,e,n=0)=>{const r=Math.abs(t.x),s=Math.abs(t.y),i=r>s;return e==="left"||e==="right"?i&&r>n:!i&&s>n};function qDe(t=()=>{}){const e=Rs(t);Uh(()=>{let n=0,r=0;return n=window.requestAnimationFrame(()=>r=window.requestAnimationFrame(e)),()=>{window.cancelAnimationFrame(n),window.cancelAnimationFrame(r)}},[e])}function $De(t){return t.nodeType===t.ELEMENT_NODE}function HDe(t){const e=[],n=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const s=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||s?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)e.push(n.currentNode);return e}function J3(t){const e=document.activeElement;return t.some(n=>n===e?!0:(n.focus(),document.activeElement!==e))}var QDe=BY,KY=qY,ZY=HY,JY=QY,eK=VY,tK=WY,nK=A7;const VDe=QDe,rK=b.forwardRef(({className:t,...e},n)=>o.jsx(KY,{ref:n,className:xe("fixed bottom-0 right-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:max-w-[420px] gap-2",t),...e}));rK.displayName=KY.displayName;const UDe=kf("group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-slide-in-from-right data-[state=open]:animate-fade-in data-[state=closed]:animate-slide-out-to-right data-[state=closed]:animate-fade-out data-[swipe=end]:animate-slide-out-to-right",{variants:{variant:{default:"border bg-primary/5 text-foreground backdrop-blur-sm",destructive:"destructive group border-destructive bg-destructive/10 text-destructive-foreground backdrop-blur-sm"}},defaultVariants:{variant:"default"}}),sK=b.forwardRef(({className:t,variant:e,...n},r)=>o.jsx(ZY,{ref:r,className:xe(UDe({variant:e}),t),...n}));sK.displayName=ZY.displayName;const WDe=b.forwardRef(({className:t,...e},n)=>o.jsx(tK,{ref:n,className:xe("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",t),...e}));WDe.displayName=tK.displayName;const iK=b.forwardRef(({className:t,...e},n)=>o.jsx(nK,{ref:n,className:xe("absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",t),"toast-close":"",...e,children:o.jsx(_p,{className:"h-4 w-4"})}));iK.displayName=nK.displayName;const aK=b.forwardRef(({className:t,...e},n)=>o.jsx(JY,{ref:n,className:xe("text-sm font-semibold [&+div]:text-xs",t),...e}));aK.displayName=JY.displayName;const oK=b.forwardRef(({className:t,...e},n)=>o.jsx(eK,{ref:n,className:xe("text-sm opacity-90",t),...e}));oK.displayName=eK.displayName;function GDe(){const{toasts:t}=as();return o.jsxs(VDe,{children:[t.map(function({id:e,title:n,description:r,action:s,...i}){return o.jsxs(sK,{...i,children:[o.jsxs("div",{className:"grid gap-1",children:[n&&o.jsx(aK,{children:n}),r&&o.jsx(oK,{children:r})]}),s,o.jsx(iK,{})]},e)}),o.jsx(rK,{})]})}yte.createRoot(document.getElementById("root")).render(o.jsx(b.StrictMode,{children:o.jsx(sDe,{children:o.jsx(jDe,{defaultTheme:"system",children:o.jsx(NDe,{children:o.jsxs(Spe,{children:[o.jsx(SJ,{router:ODe}),o.jsx(Yxe,{}),o.jsx(GDe,{})]})})})})})); + `.trim();try{await navigator.clipboard.writeText(h),l(!0),setTimeout(()=>l(!1),2e3)}catch(m){console.error("Failed to copy:",m)}};return o.jsxs("div",{className:"space-y-4",children:[o.jsxs(ba,{variant:"destructive",className:"border-red-500/50 bg-red-500/10",children:[o.jsx(Ga,{className:"h-4 w-4"}),o.jsxs(wa,{className:"font-mono text-sm",children:[o.jsxs("span",{className:"font-semibold",children:[t.name,":"]})," ",t.message]})]}),c.length>0&&o.jsxs(hj,{open:n,onOpenChange:r,children:[o.jsx(fj,{asChild:!0,children:o.jsxs(ue,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[o.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[o.jsx(gte,{className:"h-4 w-4"}),"Stack Trace (",c.length," frames)"]}),n?o.jsx(B0,{className:"h-4 w-4"}):o.jsx(Xc,{className:"h-4 w-4"})]})}),o.jsx(mj,{children:o.jsx(pn,{className:"h-[280px] rounded-md border bg-muted/30",children:o.jsx("div",{className:"p-3 space-y-1",children:c.map((h,m)=>o.jsx("div",{className:"font-mono text-xs p-2 rounded hover:bg-muted/50 transition-colors",children:o.jsxs("div",{className:"flex items-start gap-2",children:[o.jsxs("span",{className:"text-muted-foreground w-6 text-right flex-shrink-0",children:[m+1,"."]}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("span",{className:"text-primary font-medium",children:h.functionName}),h.fileName&&o.jsxs("div",{className:"text-muted-foreground mt-0.5 break-all",children:[h.fileName,h.lineNumber&&o.jsxs("span",{className:"text-yellow-600 dark:text-yellow-400",children:[":",h.lineNumber,":",h.columnNumber]})]})]})]})},m))})})})]}),e?.componentStack&&o.jsxs(hj,{open:s,onOpenChange:i,children:[o.jsx(fj,{asChild:!0,children:o.jsxs(ue,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[o.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[o.jsx(Ga,{className:"h-4 w-4"}),"Component Stack"]}),s?o.jsx(B0,{className:"h-4 w-4"}):o.jsx(Xc,{className:"h-4 w-4"})]})}),o.jsx(mj,{children:o.jsx(pn,{className:"h-[200px] rounded-md border bg-muted/30",children:o.jsx("pre",{className:"p-3 font-mono text-xs whitespace-pre-wrap text-muted-foreground",children:e.componentStack})})})]}),o.jsx(ue,{variant:"outline",size:"sm",onClick:d,className:"w-full",children:a?o.jsxs(o.Fragment,{children:[o.jsx(zo,{className:"mr-2 h-4 w-4 text-green-500"}),"已复制到剪贴板"]}):o.jsxs(o.Fragment,{children:[o.jsx(Iv,{className:"mr-2 h-4 w-4"}),"复制错误信息"]})})]})}function FY({error:t,errorInfo:e}){const n=()=>{window.location.href="/"},r=()=>{window.location.reload()};return o.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background p-4",children:o.jsxs(Lt,{className:"w-full max-w-2xl shadow-lg",children:[o.jsxs(En,{className:"text-center pb-2",children:[o.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30 mb-4",children:o.jsx(Ga,{className:"h-8 w-8 text-red-600 dark:text-red-400"})}),o.jsx(_n,{className:"text-2xl font-bold",children:"页面出现了问题"}),o.jsx(Wr,{className:"text-base mt-2",children:"应用程序遇到了意外错误。您可以尝试刷新页面或返回首页。"})]}),o.jsxs(Xn,{className:"space-y-4",children:[o.jsx(mDe,{error:t,errorInfo:e}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 pt-2",children:[o.jsxs(ue,{onClick:r,className:"flex-1",children:[o.jsx(Qs,{className:"mr-2 h-4 w-4"}),"刷新页面"]}),o.jsxs(ue,{onClick:n,variant:"outline",className:"flex-1",children:[o.jsx(L0,{className:"mr-2 h-4 w-4"}),"返回首页"]})]}),o.jsx("p",{className:"text-xs text-center text-muted-foreground pt-2",children:"如果问题持续存在,请将错误信息复制并反馈给开发者"})]})]})})}class pDe extends b.Component{constructor(e){super(e),this.state={hasError:!1,error:null,errorInfo:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,n){console.error("ErrorBoundary caught an error:",e,n),this.setState({errorInfo:n})}handleReset=()=>{this.setState({hasError:!1,error:null,errorInfo:null})};render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback:o.jsx(FY,{error:this.state.error,errorInfo:this.state.errorInfo}):this.props.children}}function qY({error:t}){return o.jsx(FY,{error:t,errorInfo:null})}const Mg=SJ({component:()=>o.jsxs(o.Fragment,{children:[o.jsx(Hz,{}),!1]}),beforeLoad:()=>{if(window.location.pathname==="/"&&!AB())throw OJ({to:"/auth"})}}),gDe=ps({getParentRoute:()=>Mg,path:"/auth",component:pie}),xDe=ps({getParentRoute:()=>Mg,path:"/setup",component:Iie}),Ys=ps({getParentRoute:()=>Mg,id:"protected",component:()=>o.jsx(hDe,{children:o.jsx(Hz,{})}),errorComponent:({error:t})=>o.jsx(qY,{error:t})}),vDe=ps({getParentRoute:()=>Ys,path:"/",component:Mse}),yDe=ps({getParentRoute:()=>Ys,path:"/config/bot",component:z0e}),bDe=ps({getParentRoute:()=>Ys,path:"/config/modelProvider",component:n1e}),wDe=ps({getParentRoute:()=>Ys,path:"/config/model",component:Wve}),SDe=ps({getParentRoute:()=>Ys,path:"/config/adapter",component:Xve}),kDe=ps({getParentRoute:()=>Ys,path:"/resource/emoji",component:yOe}),ODe=ps({getParentRoute:()=>Ys,path:"/resource/expression",component:_Oe}),jDe=ps({getParentRoute:()=>Ys,path:"/resource/person",component:qOe}),NDe=ps({getParentRoute:()=>Ys,path:"/resource/knowledge-graph",component:ATe}),CDe=ps({getParentRoute:()=>Ys,path:"/logs",component:SAe}),TDe=ps({getParentRoute:()=>Ys,path:"/chat",component:pMe}),EDe=ps({getParentRoute:()=>Ys,path:"/plugins",component:UAe}),_De=ps({getParentRoute:()=>Ys,path:"/plugin-config",component:JAe}),ADe=ps({getParentRoute:()=>Ys,path:"/plugin-mirrors",component:eMe}),MDe=ps({getParentRoute:()=>Ys,path:"/settings",component:oie}),RDe=ps({getParentRoute:()=>Mg,path:"*",component:DB}),DDe=Mg.addChildren([gDe,xDe,Ys.addChildren([vDe,yDe,bDe,wDe,SDe,kDe,ODe,jDe,NDe,EDe,_De,ADe,CDe,TDe,MDe]),RDe]),PDe=kJ({routeTree:DDe,defaultNotFoundComponent:DB,defaultErrorComponent:({error:t})=>o.jsx(qY,{error:t})});function zDe({children:t,defaultTheme:e="system",storageKey:n="ui-theme",...r}){const[s,i]=b.useState(()=>localStorage.getItem(n)||e);b.useEffect(()=>{const l=window.document.documentElement;if(l.classList.remove("light","dark"),s==="system"){const c=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";l.classList.add(c);return}l.classList.add(s)},[s]),b.useEffect(()=>{const l=localStorage.getItem("accent-color");if(l){const c=document.documentElement,h={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[l];h&&(c.style.setProperty("--primary",h.hsl),h.gradient?(c.style.setProperty("--primary-gradient",h.gradient),c.classList.add("has-gradient")):(c.style.removeProperty("--primary-gradient"),c.classList.remove("has-gradient")))}},[]);const a={theme:s,setTheme:l=>{localStorage.setItem(n,l),i(l)}};return o.jsx(tB.Provider,{...r,value:a,children:t})}function IDe({children:t,defaultEnabled:e=!0,defaultWavesEnabled:n=!0,storageKey:r="enable-animations",wavesStorageKey:s="enable-waves-background"}){const[i,a]=b.useState(()=>{const h=localStorage.getItem(r);return h!==null?h==="true":e}),[l,c]=b.useState(()=>{const h=localStorage.getItem(s);return h!==null?h==="true":n});b.useEffect(()=>{const h=document.documentElement;i?h.classList.remove("no-animations"):h.classList.add("no-animations"),localStorage.setItem(r,String(i))},[i,r]),b.useEffect(()=>{localStorage.setItem(s,String(l))},[l,s]);const d={enableAnimations:i,setEnableAnimations:a,enableWavesBackground:l,setEnableWavesBackground:c};return o.jsx(nB.Provider,{value:d,children:t})}var P7="ToastProvider",[z7,LDe,BDe]=Qy("Toast"),[$Y]=Da("Toast",[BDe]),[FDe,dw]=$Y(P7),HY=t=>{const{__scopeToast:e,label:n="Notification",duration:r=5e3,swipeDirection:s="right",swipeThreshold:i=50,children:a}=t,[l,c]=b.useState(null),[d,h]=b.useState(0),m=b.useRef(!1),g=b.useRef(!1);return n.trim()||console.error(`Invalid prop \`label\` supplied to \`${P7}\`. Expected non-empty \`string\`.`),o.jsx(z7.Provider,{scope:e,children:o.jsx(FDe,{scope:e,label:n,duration:r,swipeDirection:s,swipeThreshold:i,toastCount:d,viewport:l,onViewportChange:c,onToastAdd:b.useCallback(()=>h(x=>x+1),[]),onToastRemove:b.useCallback(()=>h(x=>x-1),[]),isFocusedToastEscapeKeyDownRef:m,isClosePausedRef:g,children:a})})};HY.displayName=P7;var QY="ToastViewport",qDe=["F8"],vj="toast.viewportPause",yj="toast.viewportResume",VY=b.forwardRef((t,e)=>{const{__scopeToast:n,hotkey:r=qDe,label:s="Notifications ({hotkey})",...i}=t,a=dw(QY,n),l=LDe(n),c=b.useRef(null),d=b.useRef(null),h=b.useRef(null),m=b.useRef(null),g=er(e,m,a.onViewportChange),x=r.join("+").replace(/Key/g,"").replace(/Digit/g,""),y=a.toastCount>0;b.useEffect(()=>{const S=k=>{r.length!==0&&r.every(N=>k[N]||k.code===N)&&m.current?.focus()};return document.addEventListener("keydown",S),()=>document.removeEventListener("keydown",S)},[r]),b.useEffect(()=>{const S=c.current,k=m.current;if(y&&S&&k){const j=()=>{if(!a.isClosePausedRef.current){const _=new CustomEvent(vj);k.dispatchEvent(_),a.isClosePausedRef.current=!0}},N=()=>{if(a.isClosePausedRef.current){const _=new CustomEvent(yj);k.dispatchEvent(_),a.isClosePausedRef.current=!1}},T=_=>{!S.contains(_.relatedTarget)&&N()},E=()=>{S.contains(document.activeElement)||N()};return S.addEventListener("focusin",j),S.addEventListener("focusout",T),S.addEventListener("pointermove",j),S.addEventListener("pointerleave",E),window.addEventListener("blur",j),window.addEventListener("focus",N),()=>{S.removeEventListener("focusin",j),S.removeEventListener("focusout",T),S.removeEventListener("pointermove",j),S.removeEventListener("pointerleave",E),window.removeEventListener("blur",j),window.removeEventListener("focus",N)}}},[y,a.isClosePausedRef]);const w=b.useCallback(({tabbingDirection:S})=>{const j=l().map(N=>{const T=N.ref.current,E=[T,...ePe(T)];return S==="forwards"?E:E.reverse()});return(S==="forwards"?j.reverse():j).flat()},[l]);return b.useEffect(()=>{const S=m.current;if(S){const k=j=>{const N=j.altKey||j.ctrlKey||j.metaKey;if(j.key==="Tab"&&!N){const E=document.activeElement,_=j.shiftKey;if(j.target===S&&_){d.current?.focus();return}const q=w({tabbingDirection:_?"backwards":"forwards"}),B=q.findIndex(H=>H===E);rk(q.slice(B+1))?j.preventDefault():_?d.current?.focus():h.current?.focus()}};return S.addEventListener("keydown",k),()=>S.removeEventListener("keydown",k)}},[l,w]),o.jsxs(Lee,{ref:c,role:"region","aria-label":s.replace("{hotkey}",x),tabIndex:-1,style:{pointerEvents:y?void 0:"none"},children:[y&&o.jsx(bj,{ref:d,onFocusFromOutsideViewport:()=>{const S=w({tabbingDirection:"forwards"});rk(S)}}),o.jsx(z7.Slot,{scope:n,children:o.jsx(Sn.ol,{tabIndex:-1,...i,ref:g})}),y&&o.jsx(bj,{ref:h,onFocusFromOutsideViewport:()=>{const S=w({tabbingDirection:"backwards"});rk(S)}})]})});VY.displayName=QY;var UY="ToastFocusProxy",bj=b.forwardRef((t,e)=>{const{__scopeToast:n,onFocusFromOutsideViewport:r,...s}=t,i=dw(UY,n);return o.jsx(SI,{tabIndex:0,...s,ref:e,style:{position:"fixed"},onFocus:a=>{const l=a.relatedTarget;!i.viewport?.contains(l)&&r()}})});bj.displayName=UY;var Rg="Toast",$De="toast.swipeStart",HDe="toast.swipeMove",QDe="toast.swipeCancel",VDe="toast.swipeEnd",WY=b.forwardRef((t,e)=>{const{forceMount:n,open:r,defaultOpen:s,onOpenChange:i,...a}=t,[l,c]=Kl({prop:r,defaultProp:s??!0,onChange:i,caller:Rg});return o.jsx(oi,{present:n||l,children:o.jsx(GDe,{open:l,...a,ref:e,onClose:()=>c(!1),onPause:Rs(t.onPause),onResume:Rs(t.onResume),onSwipeStart:nt(t.onSwipeStart,d=>{d.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:nt(t.onSwipeMove,d=>{const{x:h,y:m}=d.detail.delta;d.currentTarget.setAttribute("data-swipe","move"),d.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${h}px`),d.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${m}px`)}),onSwipeCancel:nt(t.onSwipeCancel,d=>{d.currentTarget.setAttribute("data-swipe","cancel"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),d.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),d.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:nt(t.onSwipeEnd,d=>{const{x:h,y:m}=d.detail.delta;d.currentTarget.setAttribute("data-swipe","end"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),d.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${h}px`),d.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${m}px`),c(!1)})})})});WY.displayName=Rg;var[UDe,WDe]=$Y(Rg,{onClose(){}}),GDe=b.forwardRef((t,e)=>{const{__scopeToast:n,type:r="foreground",duration:s,open:i,onClose:a,onEscapeKeyDown:l,onPause:c,onResume:d,onSwipeStart:h,onSwipeMove:m,onSwipeCancel:g,onSwipeEnd:x,...y}=t,w=dw(Rg,n),[S,k]=b.useState(null),j=er(e,I=>k(I)),N=b.useRef(null),T=b.useRef(null),E=s||w.duration,_=b.useRef(0),A=b.useRef(E),D=b.useRef(0),{onToastAdd:q,onToastRemove:B}=w,H=Rs(()=>{S?.contains(document.activeElement)&&w.viewport?.focus(),a()}),W=b.useCallback(I=>{!I||I===1/0||(window.clearTimeout(D.current),_.current=new Date().getTime(),D.current=window.setTimeout(H,I))},[H]);b.useEffect(()=>{const I=w.viewport;if(I){const V=()=>{W(A.current),d?.()},L=()=>{const $=new Date().getTime()-_.current;A.current=A.current-$,window.clearTimeout(D.current),c?.()};return I.addEventListener(vj,L),I.addEventListener(yj,V),()=>{I.removeEventListener(vj,L),I.removeEventListener(yj,V)}}},[w.viewport,E,c,d,W]),b.useEffect(()=>{i&&!w.isClosePausedRef.current&&W(E)},[i,E,w.isClosePausedRef,W]),b.useEffect(()=>(q(),()=>B()),[q,B]);const ee=b.useMemo(()=>S?eK(S):null,[S]);return w.viewport?o.jsxs(o.Fragment,{children:[ee&&o.jsx(XDe,{__scopeToast:n,role:"status","aria-live":r==="foreground"?"assertive":"polite",children:ee}),o.jsx(UDe,{scope:n,onClose:H,children:ya.createPortal(o.jsx(z7.ItemSlot,{scope:n,children:o.jsx(Bee,{asChild:!0,onEscapeKeyDown:nt(l,()=>{w.isFocusedToastEscapeKeyDownRef.current||H(),w.isFocusedToastEscapeKeyDownRef.current=!1}),children:o.jsx(Sn.li,{tabIndex:0,"data-state":i?"open":"closed","data-swipe-direction":w.swipeDirection,...y,ref:j,style:{userSelect:"none",touchAction:"none",...t.style},onKeyDown:nt(t.onKeyDown,I=>{I.key==="Escape"&&(l?.(I.nativeEvent),I.nativeEvent.defaultPrevented||(w.isFocusedToastEscapeKeyDownRef.current=!0,H()))}),onPointerDown:nt(t.onPointerDown,I=>{I.button===0&&(N.current={x:I.clientX,y:I.clientY})}),onPointerMove:nt(t.onPointerMove,I=>{if(!N.current)return;const V=I.clientX-N.current.x,L=I.clientY-N.current.y,$=!!T.current,K=["left","right"].includes(w.swipeDirection),Y=["left","up"].includes(w.swipeDirection)?Math.min:Math.max,R=K?Y(0,V):0,ie=K?0:Y(0,L),X=I.pointerType==="touch"?10:2,z={x:R,y:ie},U={originalEvent:I,delta:z};$?(T.current=z,nv(HDe,m,U,{discrete:!1})):$z(z,w.swipeDirection,X)?(T.current=z,nv($De,h,U,{discrete:!1}),I.target.setPointerCapture(I.pointerId)):(Math.abs(V)>X||Math.abs(L)>X)&&(N.current=null)}),onPointerUp:nt(t.onPointerUp,I=>{const V=T.current,L=I.target;if(L.hasPointerCapture(I.pointerId)&&L.releasePointerCapture(I.pointerId),T.current=null,N.current=null,V){const $=I.currentTarget,K={originalEvent:I,delta:V};$z(V,w.swipeDirection,w.swipeThreshold)?nv(VDe,x,K,{discrete:!0}):nv(QDe,g,K,{discrete:!0}),$.addEventListener("click",Y=>Y.preventDefault(),{once:!0})}})})})}),w.viewport)})]}):null}),XDe=t=>{const{__scopeToast:e,children:n,...r}=t,s=dw(Rg,e),[i,a]=b.useState(!1),[l,c]=b.useState(!1);return ZDe(()=>a(!0)),b.useEffect(()=>{const d=window.setTimeout(()=>c(!0),1e3);return()=>window.clearTimeout(d)},[]),l?null:o.jsx(Xy,{asChild:!0,children:o.jsx(SI,{...r,children:i&&o.jsxs(o.Fragment,{children:[s.label," ",n]})})})},YDe="ToastTitle",GY=b.forwardRef((t,e)=>{const{__scopeToast:n,...r}=t;return o.jsx(Sn.div,{...r,ref:e})});GY.displayName=YDe;var KDe="ToastDescription",XY=b.forwardRef((t,e)=>{const{__scopeToast:n,...r}=t;return o.jsx(Sn.div,{...r,ref:e})});XY.displayName=KDe;var YY="ToastAction",KY=b.forwardRef((t,e)=>{const{altText:n,...r}=t;return n.trim()?o.jsx(JY,{altText:n,asChild:!0,children:o.jsx(I7,{...r,ref:e})}):(console.error(`Invalid prop \`altText\` supplied to \`${YY}\`. Expected non-empty \`string\`.`),null)});KY.displayName=YY;var ZY="ToastClose",I7=b.forwardRef((t,e)=>{const{__scopeToast:n,...r}=t,s=WDe(ZY,n);return o.jsx(JY,{asChild:!0,children:o.jsx(Sn.button,{type:"button",...r,ref:e,onClick:nt(t.onClick,s.onClose)})})});I7.displayName=ZY;var JY=b.forwardRef((t,e)=>{const{__scopeToast:n,altText:r,...s}=t;return o.jsx(Sn.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":r||void 0,...s,ref:e})});function eK(t){const e=[];return Array.from(t.childNodes).forEach(r=>{if(r.nodeType===r.TEXT_NODE&&r.textContent&&e.push(r.textContent),JDe(r)){const s=r.ariaHidden||r.hidden||r.style.display==="none",i=r.dataset.radixToastAnnounceExclude==="";if(!s)if(i){const a=r.dataset.radixToastAnnounceAlt;a&&e.push(a)}else e.push(...eK(r))}}),e}function nv(t,e,n,{discrete:r}){const s=n.originalEvent.currentTarget,i=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:n});e&&s.addEventListener(t,e,{once:!0}),r?wI(s,i):s.dispatchEvent(i)}var $z=(t,e,n=0)=>{const r=Math.abs(t.x),s=Math.abs(t.y),i=r>s;return e==="left"||e==="right"?i&&r>n:!i&&s>n};function ZDe(t=()=>{}){const e=Rs(t);Wh(()=>{let n=0,r=0;return n=window.requestAnimationFrame(()=>r=window.requestAnimationFrame(e)),()=>{window.cancelAnimationFrame(n),window.cancelAnimationFrame(r)}},[e])}function JDe(t){return t.nodeType===t.ELEMENT_NODE}function ePe(t){const e=[],n=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const s=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||s?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)e.push(n.currentNode);return e}function rk(t){const e=document.activeElement;return t.some(n=>n===e?!0:(n.focus(),document.activeElement!==e))}var tPe=HY,tK=VY,nK=WY,rK=GY,sK=XY,iK=KY,aK=I7;const nPe=tPe,oK=b.forwardRef(({className:t,...e},n)=>o.jsx(tK,{ref:n,className:xe("fixed bottom-0 right-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:max-w-[420px] gap-2",t),...e}));oK.displayName=tK.displayName;const rPe=kf("group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-slide-in-from-right data-[state=open]:animate-fade-in data-[state=closed]:animate-slide-out-to-right data-[state=closed]:animate-fade-out data-[swipe=end]:animate-slide-out-to-right",{variants:{variant:{default:"border bg-primary/5 text-foreground backdrop-blur-sm",destructive:"destructive group border-destructive bg-destructive/10 text-destructive-foreground backdrop-blur-sm"}},defaultVariants:{variant:"default"}}),lK=b.forwardRef(({className:t,variant:e,...n},r)=>o.jsx(nK,{ref:r,className:xe(rPe({variant:e}),t),...n}));lK.displayName=nK.displayName;const sPe=b.forwardRef(({className:t,...e},n)=>o.jsx(iK,{ref:n,className:xe("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",t),...e}));sPe.displayName=iK.displayName;const cK=b.forwardRef(({className:t,...e},n)=>o.jsx(aK,{ref:n,className:xe("absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",t),"toast-close":"",...e,children:o.jsx(Pp,{className:"h-4 w-4"})}));cK.displayName=aK.displayName;const uK=b.forwardRef(({className:t,...e},n)=>o.jsx(rK,{ref:n,className:xe("text-sm font-semibold [&+div]:text-xs",t),...e}));uK.displayName=rK.displayName;const dK=b.forwardRef(({className:t,...e},n)=>o.jsx(sK,{ref:n,className:xe("text-sm opacity-90",t),...e}));dK.displayName=sK.displayName;function iPe(){const{toasts:t}=Lr();return o.jsxs(nPe,{children:[t.map(function({id:e,title:n,description:r,action:s,...i}){return o.jsxs(lK,{...i,children:[o.jsxs("div",{className:"grid gap-1",children:[n&&o.jsx(uK,{children:n}),r&&o.jsx(dK,{children:r})]}),s,o.jsx(cK,{})]},e)}),o.jsx(oK,{})]})}wte.createRoot(document.getElementById("root")).render(o.jsx(b.StrictMode,{children:o.jsx(pDe,{children:o.jsx(zDe,{defaultTheme:"system",children:o.jsx(IDe,{children:o.jsxs(Npe,{children:[o.jsx(jJ,{router:PDe}),o.jsx(e1e,{}),o.jsx(iPe,{})]})})})})})); diff --git a/webui/dist/assets/index-Rqzi5c1P.css b/webui/dist/assets/index-Rqzi5c1P.css deleted file mode 100644 index fe11943e..00000000 --- a/webui/dist/assets/index-Rqzi5c1P.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 0 0% 100%;--foreground: 222.2 84% 4.9%;--card: 0 0% 100%;--card-foreground: 222.2 84% 4.9%;--popover: 0 0% 100%;--popover-foreground: 222.2 84% 4.9%;--primary: 221.2 83.2% 53.3%;--primary-foreground: 210 40% 98%;--primary-gradient: none;--secondary: 210 40% 96.1%;--secondary-foreground: 222.2 47.4% 11.2%;--muted: 210 40% 96.1%;--muted-foreground: 215.4 16.3% 46.9%;--accent: 210 40% 96.1%;--accent-foreground: 222.2 47.4% 11.2%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 210 40% 98%;--border: 214.3 31.8% 91.4%;--input: 214.3 31.8% 91.4%;--ring: 221.2 83.2% 53.3%;--radius: .5rem;--chart-1: 221.2 83.2% 53.3%;--chart-2: 160 60% 45%;--chart-3: 30 80% 55%;--chart-4: 280 65% 60%;--chart-5: 340 75% 55%}.dark{--background: 222.2 84% 4.9%;--foreground: 210 40% 98%;--card: 222.2 84% 4.9%;--card-foreground: 210 40% 98%;--popover: 222.2 84% 4.9%;--popover-foreground: 210 40% 98%;--primary: 217.2 91.2% 59.8%;--primary-foreground: 222.2 47.4% 11.2%;--primary-gradient: none;--secondary: 217.2 32.6% 17.5%;--secondary-foreground: 210 40% 98%;--muted: 217.2 32.6% 17.5%;--muted-foreground: 215 20.2% 65.1%;--accent: 217.2 32.6% 17.5%;--accent-foreground: 210 40% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 210 40% 98%;--border: 217.2 32.6% 17.5%;--input: 217.2 32.6% 17.5%;--ring: 224.3 76.3% 48%;--chart-1: 217.2 91.2% 59.8%;--chart-2: 160 60% 50%;--chart-3: 30 80% 60%;--chart-4: 280 65% 65%;--chart-5: 340 75% 60%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-1\/4{bottom:25%}.bottom-4{bottom:1rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.left-1\/4{left:25%}.left-2{left:.5rem}.left-2\.5{left:.625rem}.left-3{left:.75rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-1\.5{right:.375rem}.right-1\/4{right:25%}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-1\/4{top:25%}.top-2{top:.5rem}.top-2\.5{top:.625rem}.top-3{top:.75rem}.top-4{top:1rem}.top-\[50\%\]{top:50%}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.order-1{order:1}.order-2{order:2}.col-span-2{grid-column:span 2 / span 2}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-mt-2{margin-top:-.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-auto{aspect-ratio:auto}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:16 / 9}.size-4{width:1rem;height:1rem}.size-\[--cell-size\]{width:var(--cell-size);height:var(--cell-size)}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[--cell-size\]{height:var(--cell-size)}.h-\[1\.25rem\]{height:1.25rem}.h-\[1px\]{height:1px}.h-\[200px\]{height:200px}.h-\[250px\]{height:250px}.h-\[280px\]{height:280px}.h-\[300px\]{height:300px}.h-\[400px\]{height:400px}.h-\[calc\(100vh-200px\)\]{height:calc(100vh - 200px)}.h-\[calc\(100vh-240px\)\]{height:calc(100vh - 240px)}.h-\[calc\(100vh-260px\)\]{height:calc(100vh - 260px)}.h-\[calc\(100vh-4rem\)\]{height:calc(100vh - 4rem)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\[--radix-context-menu-content-available-height\]{max-height:var(--radix-context-menu-content-available-height)}.max-h-\[--radix-select-content-available-height\]{max-height:var(--radix-select-content-available-height)}.max-h-\[300px\]{max-height:300px}.max-h-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[calc\(90vh-120px\)\]{max-height:calc(90vh - 120px)}.max-h-\[calc\(90vh-8rem\)\]{max-height:calc(90vh - 8rem)}.max-h-none{max-height:none}.max-h-screen{max-height:100vh}.min-h-0{min-height:0px}.min-h-10{min-height:2.5rem}.min-h-\[100px\]{min-height:100px}.min-h-\[300px\]{min-height:300px}.min-h-\[60px\]{min-height:60px}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[--cell-size\]{width:var(--cell-size)}.w-\[100px\]{width:100px}.w-\[120px\]{width:120px}.w-\[130px\]{width:130px}.w-\[1px\]{width:1px}.w-\[65px\]{width:65px}.w-\[95vw\]{width:95vw}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[--cell-size\]{min-width:var(--cell-size)}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[80px\]{min-width:80px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-\[150px\]{max-width:150px}.max-w-\[200px\]{max-width:200px}.max-w-\[60px\]{max-width:60px}.max-w-\[75\%\]{max-width:75%}.max-w-\[90\%\]{max-width:90%}.max-w-\[95vw\]{max-width:95vw}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\[--radix-context-menu-content-transform-origin\]{transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\[--radix-popover-content-transform-origin\]{transform-origin:var(--radix-popover-content-transform-origin)}.origin-\[--radix-select-content-transform-origin\]{transform-origin:var(--radix-select-content-transform-origin)}.origin-\[--radix-tooltip-content-transform-origin\]{transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.rounded-tr-sm{border-top-right-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-\[1\.5px\]{border-width:1.5px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[--color-border\]{border-color:var(--color-border)}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-500\/50{border-color:#f59e0b80}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-700{--tw-border-opacity: 1;border-color:rgb(29 78 216 / var(--tw-border-opacity, 1))}.border-border{border-color:hsl(var(--border))}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-current{border-color:currentColor}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-green-700{--tw-border-opacity: 1;border-color:rgb(21 128 61 / var(--tw-border-opacity, 1))}.border-input{border-color:hsl(var(--input))}.border-muted{border-color:hsl(var(--muted))}.border-muted-foreground\/30{border-color:hsl(var(--muted-foreground) / .3)}.border-muted-foreground\/50{border-color:hsl(var(--muted-foreground) / .5)}.border-orange-600{--tw-border-opacity: 1;border-color:rgb(234 88 12 / var(--tw-border-opacity, 1))}.border-primary{border-color:hsl(var(--primary))}.border-primary\/20{border-color:hsl(var(--primary) / .2)}.border-primary\/30{border-color:hsl(var(--primary) / .3)}.border-primary\/50{border-color:hsl(var(--primary) / .5)}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-red-500\/50{border-color:#ef444480}.border-transparent{border-color:transparent}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-yellow-500\/50{border-color:#eab30880}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\[--color-bg\]{background-color:var(--color-bg)}.bg-accent{background-color:hsl(var(--accent))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-background{background-color:hsl(var(--background))}.bg-background\/50{background-color:hsl(var(--background) / .5)}.bg-background\/80{background-color:hsl(var(--background) / .8)}.bg-background\/95{background-color:hsl(var(--background) / .95)}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-black\/50{background-color:#00000080}.bg-black\/80{background-color:#000c}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-900\/20{background-color:#1e3a8a33}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-card\/80{background-color:hsl(var(--card) / .8)}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-800\/20{background-color:#1f293733}.bg-gray-800\/30{background-color:#1f29374d}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground\/50{background-color:hsl(var(--muted-foreground) / .5)}.bg-muted\/20{background-color:hsl(var(--muted) / .2)}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-orange-600{--tw-bg-opacity: 1;background-color:rgb(234 88 12 / var(--tw-bg-opacity, 1))}.bg-pink-500{--tw-bg-opacity: 1;background-color:rgb(236 72 153 / var(--tw-bg-opacity, 1))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/20{background-color:hsl(var(--primary) / .2)}.bg-primary\/5{background-color:hsl(var(--primary) / .05)}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(168 85 247 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-red-900\/20{background-color:#7f1d1d33}.bg-red-900\/30{background-color:#7f1d1d4d}.bg-secondary{background-color:hsl(var(--secondary))}.bg-secondary\/5{background-color:hsl(var(--secondary) / .05)}.bg-slate-200{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity, 1))}.bg-slate-300{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity, 1))}.bg-slate-400{--tw-bg-opacity: 1;background-color:rgb(148 163 184 / var(--tw-bg-opacity, 1))}.bg-slate-700{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-200{--tw-bg-opacity: 1;background-color:rgb(254 240 138 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-yellow-500\/10{background-color:#eab3081a}.bg-yellow-500\/5{background-color:#eab3080d}.bg-yellow-900\/20{background-color:#713f1233}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-blue-500{--tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-500{--tw-gradient-from: #22c55e var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 197 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-500{--tw-gradient-from: #f97316 var(--tw-gradient-from-position);--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-primary\/5{--tw-gradient-from: hsl(var(--primary) / .05) var(--tw-gradient-from-position);--tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-500{--tw-gradient-from: #a855f7 var(--tw-gradient-from-position);--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-500{--tw-gradient-from: #ef4444 var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 68 68 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-200{--tw-gradient-from: #e2e8f0 var(--tw-gradient-from-position);--tw-gradient-to: rgb(226 232 240 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-300{--tw-gradient-from: #cbd5e1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(203 213 225 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-400{--tw-gradient-from: #94a3b8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(148 163 184 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-background{--tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), hsl(var(--background)) var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-blue-600{--tw-gradient-to: #2563eb var(--tw-gradient-to-position)}.to-cyan-500{--tw-gradient-to: #06b6d4 var(--tw-gradient-to-position)}.to-emerald-500{--tw-gradient-to: #10b981 var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to: #16a34a var(--tw-gradient-to-position)}.to-orange-500{--tw-gradient-to: #f97316 var(--tw-gradient-to-position)}.to-pink-500{--tw-gradient-to: #ec4899 var(--tw-gradient-to-position)}.to-primary\/10{--tw-gradient-to: hsl(var(--primary) / .1) var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to: #a855f7 var(--tw-gradient-to-position)}.to-secondary\/5{--tw-gradient-to: hsl(var(--secondary) / .05) var(--tw-gradient-to-position)}.to-slate-700{--tw-gradient-to: #334155 var(--tw-gradient-to-position)}.to-slate-800{--tw-gradient-to: #1e293b var(--tw-gradient-to-position)}.to-slate-900{--tw-gradient-to: #0f172a var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.fill-yellow-400{fill:#facc15}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[1px\]{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[--cell-size\]{padding-left:var(--cell-size);padding-right:var(--cell-size)}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pl-10{padding-left:2.5rem}.pl-11{padding-left:2.75rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-1{padding-right:.25rem}.pr-10{padding-right:2.5rem}.pr-16{padding-right:4rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.text-\[150px\]{font-size:150px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/50{color:hsl(var(--foreground) / .5)}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/50{color:hsl(var(--muted-foreground) / .5)}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-800{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.text-orange-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary\/10{color:hsl(var(--primary) / .1)}.text-primary\/30{color:hsl(var(--primary) / .3)}.text-primary\/60{color:hsl(var(--primary) / .6)}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.text-yellow-900{--tw-text-opacity: 1;color:rgb(113 63 18 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-primary{--tw-ring-color: hsl(var(--primary))}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur-3xl{--tw-blur: blur(64px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.text-primary-gradient{color:hsl(var(--primary))}.has-gradient .text-primary-gradient{background:var(--primary-gradient);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.\[--cell-size\:2rem\]{--cell-size: 2rem}.no-animations *,.no-animations *:before,.no-animations *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.no-animations *:hover{transition-duration:.01ms!important}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:999}.__floater{z-index:99999!important;pointer-events:auto!important}.react-joyride__overlay,.react-joyride__spotlight{z-index:99998!important}.react-joyride__tooltip{pointer-events:auto!important}#tour-portal-container *{pointer-events:auto}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:border-primary\/50:hover{border-color:hsl(var(--primary) / .5)}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent) / .5)}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-orange-700:hover{--tw-bg-opacity: 1;background-color:rgb(194 65 12 / var(--tw-bg-opacity, 1))}.hover\:bg-primary\/10:hover{background-color:hsl(var(--primary) / .1)}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-secondary:hover{background-color:hsl(var(--secondary))}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-secondary\/90:hover{background-color:hsl(var(--secondary) / .9)}.hover\:bg-transparent:hover{background-color:transparent}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-green-700:hover{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.hover\:text-orange-700:hover{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.hover\:text-primary\/80:hover{color:hsl(var(--primary) / .8)}.hover\:text-red-700:hover{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.hover\:text-yellow-300:hover{--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.hover\:text-yellow-800:hover{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:ring-2:hover{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.hover\:ring-primary:hover{--tw-ring-color: hsl(var(--primary))}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-gray-100:focus{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-red-500:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.active\:cursor-grabbing:active{cursor:grabbing}.active\:border-primary\/70:active{border-color:hsl(var(--primary) / .7)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group[open] .group-open\:rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:opacity-100{opacity:1}.group.destructive .group-\[\.destructive\]\:border-muted\/40{border-color:hsl(var(--muted) / .4)}.group.destructive .group-\[\.destructive\]\:text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:hover\:text-red-50:hover{--tw-text-opacity: 1;color:rgb(254 242 242 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-red-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(248 113 113 / var(--tw-ring-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-offset-red-600:focus{--tw-ring-offset-color: #dc2626}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-selected\:text-muted-foreground[aria-selected=true]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true],.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked],.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x: var(--radix-toast-swipe-end-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x: var(--radix-toast-swipe-move-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes fade-out{0%{opacity:1}to{opacity:0}}.data-\[state\=closed\]\:animate-fade-out[data-state=closed]{animation:fade-out .15s ease-in}.data-\[state\=closed\]\:animate-slide-out-to-right[data-state=closed]{animation:slide-out-to-right .2s ease-in}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.data-\[state\=open\]\:animate-fade-in[data-state=open]{animation:fade-in .2s ease-out}@keyframes slide-in-from-right{0%{transform:translate(100%)}to{transform:translate(0)}}.data-\[state\=open\]\:animate-slide-in-from-right[data-state=open]{animation:slide-in-from-right .3s ease-out}@keyframes slide-out-to-right{0%{transform:translate(0)}to{transform:translate(100%)}}.data-\[swipe\=end\]\:animate-slide-out-to-right[data-swipe=end]{animation:slide-out-to-right .2s ease-in}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) - 2px)}.data-\[selected\=true\]\:rounded-none[data-selected=true]{border-radius:0}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:hsl(var(--primary))}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:hsl(var(--accent))}.data-\[range-start\=true\]\:bg-primary[data-range-start=true],.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:hsl(var(--primary))}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:hsl(var(--primary-foreground))}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:hsl(var(--accent-foreground))}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true],.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:hsl(var(--primary-foreground))}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:opacity-50[data-disabled=true],.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.data-\[state\=active\]\:duration-300[data-state=active]{transition-duration:.3s}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:relative{position:relative}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:z-10{z-index:10}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:border-ring{border-color:hsl(var(--ring))}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-\[3px\]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}@supports (backdrop-filter: var(--tw)){.supports-\[backdrop-filter\]\:bg-background\/60{background-color:hsl(var(--background) / .6)}}.dark\:border-amber-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(146 64 14 / var(--tw-border-opacity, 1))}.dark\:border-blue-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity, 1))}.dark\:border-blue-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 58 138 / var(--tw-border-opacity, 1))}.dark\:border-gray-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(17 24 39 / var(--tw-border-opacity, 1))}.dark\:border-green-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(22 101 52 / var(--tw-border-opacity, 1))}.dark\:border-yellow-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(113 63 18 / var(--tw-border-opacity, 1))}.dark\:bg-amber-950\/30:is(.dark *){background-color:#451a034d}.dark\:bg-blue-500\/20:is(.dark *){background-color:#3b82f633}.dark\:bg-blue-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 37 84 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950\/20:is(.dark *){background-color:#17255433}.dark\:bg-blue-950\/30:is(.dark *){background-color:#1725544d}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800\/30:is(.dark *){background-color:#1f29374d}.dark\:bg-gray-800\/50:is(.dark *){background-color:#1f293780}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(3 7 18 / var(--tw-bg-opacity, 1))}.dark\:bg-green-900\/30:is(.dark *){background-color:#14532d4d}.dark\:bg-green-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(5 46 22 / var(--tw-bg-opacity, 1))}.dark\:bg-orange-950\/20:is(.dark *){background-color:#43140733}.dark\:bg-red-500\/20:is(.dark *){background-color:#ef444433}.dark\:bg-red-600\/30:is(.dark *){background-color:#dc26264d}.dark\:bg-red-900\/30:is(.dark *){background-color:#7f1d1d4d}.dark\:bg-red-950\/50:is(.dark *){background-color:#450a0a80}.dark\:bg-yellow-500\/20:is(.dark *){background-color:#eab30833}.dark\:bg-yellow-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1))}.dark\:bg-yellow-950\/30:is(.dark *){background-color:#4220064d}.dark\:text-amber-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 243 199 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-blue-100:is(.dark *){--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-200:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-cyan-500:is(.dark *){--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-orange-100:is(.dark *){--tw-text-opacity: 1;color:rgb(255 237 213 / var(--tw-text-opacity, 1))}.dark\:text-orange-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 215 170 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-red-500:is(.dark *){--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.dark\:text-yellow-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 249 195 / var(--tw-text-opacity, 1))}.dark\:text-yellow-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.dark\:text-yellow-400:is(.dark *){--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.dark\:text-yellow-500:is(.dark *){--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:hover\:text-yellow-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:focus\:bg-gray-800:focus:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}@media(min-width:640px){.sm\:right-2{right:.5rem}.sm\:right-3{right:.75rem}.sm\:top-2{top:.5rem}.sm\:top-3{top:.75rem}.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:mb-3{margin-bottom:.75rem}.sm\:mb-4{margin-bottom:1rem}.sm\:mb-6{margin-bottom:1.5rem}.sm\:ml-1{margin-left:.25rem}.sm\:mr-1{margin-right:.25rem}.sm\:mr-2{margin-right:.5rem}.sm\:mt-0{margin-top:0}.sm\:mt-2{margin-top:.5rem}.sm\:mt-3{margin-top:.75rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-12{height:3rem}.sm\:h-2{height:.5rem}.sm\:h-24{height:6rem}.sm\:h-3{height:.75rem}.sm\:h-4{height:1rem}.sm\:h-5{height:1.25rem}.sm\:h-8{height:2rem}.sm\:h-\[300px\]{height:300px}.sm\:h-\[400px\]{height:400px}.sm\:h-\[500px\]{height:500px}.sm\:h-\[calc\(100vh-280px\)\]{height:calc(100vh - 280px)}.sm\:w-10{width:2.5rem}.sm\:w-2{width:.5rem}.sm\:w-24{width:6rem}.sm\:w-3{width:.75rem}.sm\:w-4{width:1rem}.sm\:w-5{width:1.25rem}.sm\:w-8{width:2rem}.sm\:w-\[140px\]{width:140px}.sm\:w-\[160px\]{width:160px}.sm\:w-\[200px\]{width:200px}.sm\:w-\[500px\]{width:500px}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:min-w-\[120px\]{min-width:120px}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-\[420px\]{max-width:420px}.sm\:max-w-\[70\%\]{max-width:70%}.sm\:max-w-\[900px\]{max-width:900px}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:flex-1{flex:1 1 0%}.sm\:flex-none{flex:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-0{gap:0px}.sm\:gap-1{gap:.25rem}.sm\:gap-2{gap:.5rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:gap-6{gap:1.5rem}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.sm\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.sm\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.sm\:space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-\[200px\]{font-size:200px}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:768px){.md\:top-4{top:1rem}.md\:mb-4{margin-bottom:1rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-8{margin-bottom:2rem}.md\:mt-8{margin-top:2rem}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-16{height:4rem}.md\:h-4{height:1rem}.md\:h-5{height:1.25rem}.md\:h-8{height:2rem}.md\:h-96{height:24rem}.md\:h-\[500px\]{height:500px}.md\:min-h-\[400px\]{min-height:400px}.md\:w-16{width:4rem}.md\:w-4{width:1rem}.md\:w-5{width:1.25rem}.md\:w-8{width:2rem}.md\:w-96{width:24rem}.md\:max-w-none{max-width:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:gap-2{gap:.5rem}.md\:gap-3{gap:.75rem}.md\:gap-4{gap:1rem}.md\:gap-6{gap:1.5rem}.md\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.md\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.md\:whitespace-normal{white-space:normal}.md\:p-12{padding:3rem}.md\:p-4{padding:1rem}.md\:p-6{padding:1.5rem}.md\:p-8{padding:2rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:1024px){.lg\:invisible{visibility:hidden}.lg\:relative{position:relative}.lg\:z-0{z-index:0}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:mb-1{margin-bottom:.25rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-12{width:3rem}.lg\:w-16{width:4rem}.lg\:w-64{width:16rem}.lg\:w-8{width:2rem}.lg\:w-\[130px\]{width:130px}.lg\:w-\[160px\]{width:160px}.lg\:w-\[180px\]{width:180px}.lg\:w-\[200px\]{width:200px}.lg\:w-\[240px\]{width:240px}.lg\:w-\[75px\]{width:75px}.lg\:w-auto{width:auto}.lg\:w-full{width:100%}.lg\:max-w-0{max-width:0px}.lg\:flex-1{flex:1 1 0%}.lg\:flex-none{flex:none}.lg\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:justify-center{justify-content:center}.lg\:gap-0{gap:0px}.lg\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.lg\:overflow-hidden{overflow:hidden}.lg\:p-2{padding:.5rem}.lg\:p-6{padding:1.5rem}.lg\:px-0{padding-left:0;padding-right:0}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:pb-6{padding-bottom:1.5rem}.lg\:text-3xl{font-size:1.875rem;line-height:2.25rem}.lg\:opacity-0{opacity:0}}@media(min-width:1280px){.xl\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}}.\[\&\+div\]\:text-xs+div{font-size:.75rem;line-height:1rem}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>span\]\:text-xs>span{font-size:.75rem;line-height:1rem}.\[\&\>span\]\:opacity-70>span{opacity:.7}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y: -3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-4>svg{top:1rem}.\[\&\>svg\]\:size-3\.5>svg{width:.875rem;height:.875rem}.\[\&\>svg\]\:h-2\.5>svg{height:.625rem}.\[\&\>svg\]\:h-3>svg{height:.75rem}.\[\&\>svg\]\:w-2\.5>svg{width:.625rem}.\[\&\>svg\]\:w-3>svg{width:.75rem}.\[\&\>svg\]\:text-foreground>svg{color:hsl(var(--foreground))}.\[\&\>svg\]\:text-muted-foreground>svg{color:hsl(var(--muted-foreground))}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:1.75rem}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:hsl(var(--muted-foreground))}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:hsl(var(--border) / .5)}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:hsl(var(--border))}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-layer\]\:outline-none .recharts-layer{outline:2px solid transparent;outline-offset:2px}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector,.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:hsl(var(--muted))}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-sector\]\:outline-none .recharts-sector,.\[\&_\.recharts-surface\]\:outline-none .recharts-surface{outline:2px solid transparent;outline-offset:2px}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:1.25rem}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:invisible svg{visibility:hidden}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent,[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:transparent}@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(/assets/KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(/assets/KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(/assets/KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(/assets/KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(/assets/KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(/assets/KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.25"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:grab}.react-flow__node.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%} diff --git a/webui/dist/assets/index-_a_MShLH.css b/webui/dist/assets/index-_a_MShLH.css new file mode 100644 index 00000000..6cfb460f --- /dev/null +++ b/webui/dist/assets/index-_a_MShLH.css @@ -0,0 +1 @@ +*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 0 0% 100%;--foreground: 222.2 84% 4.9%;--card: 0 0% 100%;--card-foreground: 222.2 84% 4.9%;--popover: 0 0% 100%;--popover-foreground: 222.2 84% 4.9%;--primary: 221.2 83.2% 53.3%;--primary-foreground: 210 40% 98%;--primary-gradient: none;--secondary: 210 40% 96.1%;--secondary-foreground: 222.2 47.4% 11.2%;--muted: 210 40% 96.1%;--muted-foreground: 215.4 16.3% 46.9%;--accent: 210 40% 96.1%;--accent-foreground: 222.2 47.4% 11.2%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 210 40% 98%;--border: 214.3 31.8% 91.4%;--input: 214.3 31.8% 91.4%;--ring: 221.2 83.2% 53.3%;--radius: .5rem;--chart-1: 221.2 83.2% 53.3%;--chart-2: 160 60% 45%;--chart-3: 30 80% 55%;--chart-4: 280 65% 60%;--chart-5: 340 75% 55%}.dark{--background: 222.2 84% 4.9%;--foreground: 210 40% 98%;--card: 222.2 84% 4.9%;--card-foreground: 210 40% 98%;--popover: 222.2 84% 4.9%;--popover-foreground: 210 40% 98%;--primary: 217.2 91.2% 59.8%;--primary-foreground: 222.2 47.4% 11.2%;--primary-gradient: none;--secondary: 217.2 32.6% 17.5%;--secondary-foreground: 210 40% 98%;--muted: 217.2 32.6% 17.5%;--muted-foreground: 215 20.2% 65.1%;--accent: 217.2 32.6% 17.5%;--accent-foreground: 210 40% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 210 40% 98%;--border: 217.2 32.6% 17.5%;--input: 217.2 32.6% 17.5%;--ring: 224.3 76.3% 48%;--chart-1: 217.2 91.2% 59.8%;--chart-2: 160 60% 50%;--chart-3: 30 80% 60%;--chart-4: 280 65% 65%;--chart-5: 340 75% 60%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-1\/4{bottom:25%}.bottom-4{bottom:1rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.left-1\/4{left:25%}.left-2{left:.5rem}.left-2\.5{left:.625rem}.left-3{left:.75rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-1\.5{right:.375rem}.right-1\/4{right:25%}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-1\/4{top:25%}.top-2{top:.5rem}.top-2\.5{top:.625rem}.top-3{top:.75rem}.top-4{top:1rem}.top-\[50\%\]{top:50%}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.order-1{order:1}.order-2{order:2}.col-span-2{grid-column:span 2 / span 2}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-mt-2{margin-top:-.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-10{margin-left:2.5rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-auto{aspect-ratio:auto}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:16 / 9}.size-4{width:1rem;height:1rem}.size-\[--cell-size\]{width:var(--cell-size);height:var(--cell-size)}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[--cell-size\]{height:var(--cell-size)}.h-\[1\.25rem\]{height:1.25rem}.h-\[1px\]{height:1px}.h-\[200px\]{height:200px}.h-\[250px\]{height:250px}.h-\[280px\]{height:280px}.h-\[300px\]{height:300px}.h-\[400px\]{height:400px}.h-\[calc\(100vh-200px\)\]{height:calc(100vh - 200px)}.h-\[calc\(100vh-240px\)\]{height:calc(100vh - 240px)}.h-\[calc\(100vh-260px\)\]{height:calc(100vh - 260px)}.h-\[calc\(100vh-4rem\)\]{height:calc(100vh - 4rem)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\[--radix-context-menu-content-available-height\]{max-height:var(--radix-context-menu-content-available-height)}.max-h-\[--radix-select-content-available-height\]{max-height:var(--radix-select-content-available-height)}.max-h-\[300px\]{max-height:300px}.max-h-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[calc\(90vh-120px\)\]{max-height:calc(90vh - 120px)}.max-h-\[calc\(90vh-8rem\)\]{max-height:calc(90vh - 8rem)}.max-h-none{max-height:none}.max-h-screen{max-height:100vh}.min-h-0{min-height:0px}.min-h-10{min-height:2.5rem}.min-h-\[100px\]{min-height:100px}.min-h-\[300px\]{min-height:300px}.min-h-\[60px\]{min-height:60px}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[--cell-size\]{width:var(--cell-size)}.w-\[100px\]{width:100px}.w-\[120px\]{width:120px}.w-\[130px\]{width:130px}.w-\[1px\]{width:1px}.w-\[65px\]{width:65px}.w-\[95vw\]{width:95vw}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[--cell-size\]{min-width:var(--cell-size)}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[80px\]{min-width:80px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-\[150px\]{max-width:150px}.max-w-\[200px\]{max-width:200px}.max-w-\[60px\]{max-width:60px}.max-w-\[75\%\]{max-width:75%}.max-w-\[90\%\]{max-width:90%}.max-w-\[95vw\]{max-width:95vw}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\[--radix-context-menu-content-transform-origin\]{transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\[--radix-popover-content-transform-origin\]{transform-origin:var(--radix-popover-content-transform-origin)}.origin-\[--radix-select-content-transform-origin\]{transform-origin:var(--radix-select-content-transform-origin)}.origin-\[--radix-tooltip-content-transform-origin\]{transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.rounded-tr-sm{border-top-right-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-\[1\.5px\]{border-width:1.5px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[--color-border\]{border-color:var(--color-border)}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-500\/50{border-color:#f59e0b80}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-700{--tw-border-opacity: 1;border-color:rgb(29 78 216 / var(--tw-border-opacity, 1))}.border-border{border-color:hsl(var(--border))}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-current{border-color:currentColor}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-green-300{--tw-border-opacity: 1;border-color:rgb(134 239 172 / var(--tw-border-opacity, 1))}.border-green-700{--tw-border-opacity: 1;border-color:rgb(21 128 61 / var(--tw-border-opacity, 1))}.border-input{border-color:hsl(var(--input))}.border-muted{border-color:hsl(var(--muted))}.border-muted-foreground\/30{border-color:hsl(var(--muted-foreground) / .3)}.border-muted-foreground\/50{border-color:hsl(var(--muted-foreground) / .5)}.border-orange-200{--tw-border-opacity: 1;border-color:rgb(254 215 170 / var(--tw-border-opacity, 1))}.border-orange-600{--tw-border-opacity: 1;border-color:rgb(234 88 12 / var(--tw-border-opacity, 1))}.border-primary{border-color:hsl(var(--primary))}.border-primary\/20{border-color:hsl(var(--primary) / .2)}.border-primary\/30{border-color:hsl(var(--primary) / .3)}.border-primary\/50{border-color:hsl(var(--primary) / .5)}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-red-500\/50{border-color:#ef444480}.border-transparent{border-color:transparent}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-yellow-500\/50{border-color:#eab30880}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\[--color-bg\]{background-color:var(--color-bg)}.bg-accent{background-color:hsl(var(--accent))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-background{background-color:hsl(var(--background))}.bg-background\/50{background-color:hsl(var(--background) / .5)}.bg-background\/80{background-color:hsl(var(--background) / .8)}.bg-background\/95{background-color:hsl(var(--background) / .95)}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-black\/50{background-color:#00000080}.bg-black\/80{background-color:#000c}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-blue-900\/20{background-color:#1e3a8a33}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-card\/80{background-color:hsl(var(--card) / .8)}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-800\/20{background-color:#1f293733}.bg-gray-800\/30{background-color:#1f29374d}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground\/50{background-color:hsl(var(--muted-foreground) / .5)}.bg-muted\/20{background-color:hsl(var(--muted) / .2)}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-orange-600{--tw-bg-opacity: 1;background-color:rgb(234 88 12 / var(--tw-bg-opacity, 1))}.bg-pink-500{--tw-bg-opacity: 1;background-color:rgb(236 72 153 / var(--tw-bg-opacity, 1))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/20{background-color:hsl(var(--primary) / .2)}.bg-primary\/5{background-color:hsl(var(--primary) / .05)}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(168 85 247 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-red-900\/20{background-color:#7f1d1d33}.bg-red-900\/30{background-color:#7f1d1d4d}.bg-secondary{background-color:hsl(var(--secondary))}.bg-secondary\/5{background-color:hsl(var(--secondary) / .05)}.bg-slate-200{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity, 1))}.bg-slate-300{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity, 1))}.bg-slate-400{--tw-bg-opacity: 1;background-color:rgb(148 163 184 / var(--tw-bg-opacity, 1))}.bg-slate-700{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-200{--tw-bg-opacity: 1;background-color:rgb(254 240 138 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-yellow-500\/10{background-color:#eab3081a}.bg-yellow-500\/5{background-color:#eab3080d}.bg-yellow-900\/20{background-color:#713f1233}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-blue-500{--tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-500{--tw-gradient-from: #22c55e var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 197 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-500{--tw-gradient-from: #f97316 var(--tw-gradient-from-position);--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-primary\/5{--tw-gradient-from: hsl(var(--primary) / .05) var(--tw-gradient-from-position);--tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-500{--tw-gradient-from: #a855f7 var(--tw-gradient-from-position);--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-500{--tw-gradient-from: #ef4444 var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 68 68 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-200{--tw-gradient-from: #e2e8f0 var(--tw-gradient-from-position);--tw-gradient-to: rgb(226 232 240 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-300{--tw-gradient-from: #cbd5e1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(203 213 225 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-400{--tw-gradient-from: #94a3b8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(148 163 184 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-background{--tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), hsl(var(--background)) var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-blue-600{--tw-gradient-to: #2563eb var(--tw-gradient-to-position)}.to-cyan-500{--tw-gradient-to: #06b6d4 var(--tw-gradient-to-position)}.to-emerald-500{--tw-gradient-to: #10b981 var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to: #16a34a var(--tw-gradient-to-position)}.to-orange-500{--tw-gradient-to: #f97316 var(--tw-gradient-to-position)}.to-pink-500{--tw-gradient-to: #ec4899 var(--tw-gradient-to-position)}.to-primary\/10{--tw-gradient-to: hsl(var(--primary) / .1) var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to: #a855f7 var(--tw-gradient-to-position)}.to-secondary\/5{--tw-gradient-to: hsl(var(--secondary) / .05) var(--tw-gradient-to-position)}.to-slate-700{--tw-gradient-to: #334155 var(--tw-gradient-to-position)}.to-slate-800{--tw-gradient-to: #1e293b var(--tw-gradient-to-position)}.to-slate-900{--tw-gradient-to: #0f172a var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.fill-yellow-400{fill:#facc15}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[1px\]{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[--cell-size\]{padding-left:var(--cell-size);padding-right:var(--cell-size)}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pl-10{padding-left:2.5rem}.pl-11{padding-left:2.75rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-1{padding-right:.25rem}.pr-10{padding-right:2.5rem}.pr-16{padding-right:4rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.text-\[150px\]{font-size:150px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/50{color:hsl(var(--foreground) / .5)}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/50{color:hsl(var(--muted-foreground) / .5)}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-800{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.text-orange-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary\/10{color:hsl(var(--primary) / .1)}.text-primary\/30{color:hsl(var(--primary) / .3)}.text-primary\/60{color:hsl(var(--primary) / .6)}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.text-yellow-900{--tw-text-opacity: 1;color:rgb(113 63 18 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-primary{--tw-ring-color: hsl(var(--primary))}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur-3xl{--tw-blur: blur(64px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.text-primary-gradient{color:hsl(var(--primary))}.has-gradient .text-primary-gradient{background:var(--primary-gradient);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.\[--cell-size\:2rem\]{--cell-size: 2rem}.no-animations *,.no-animations *:before,.no-animations *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.no-animations *:hover{transition-duration:.01ms!important}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:999}.__floater{z-index:99999!important;pointer-events:auto!important}.react-joyride__overlay,.react-joyride__spotlight{z-index:99998!important}.react-joyride__tooltip{pointer-events:auto!important}#tour-portal-container *{pointer-events:auto}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:border-primary\/50:hover{border-color:hsl(var(--primary) / .5)}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent) / .5)}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-orange-700:hover{--tw-bg-opacity: 1;background-color:rgb(194 65 12 / var(--tw-bg-opacity, 1))}.hover\:bg-primary\/10:hover{background-color:hsl(var(--primary) / .1)}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-secondary:hover{background-color:hsl(var(--secondary))}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-secondary\/90:hover{background-color:hsl(var(--secondary) / .9)}.hover\:bg-transparent:hover{background-color:transparent}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-green-700:hover{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.hover\:text-orange-700:hover{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.hover\:text-primary\/80:hover{color:hsl(var(--primary) / .8)}.hover\:text-red-700:hover{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.hover\:text-yellow-300:hover{--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.hover\:text-yellow-800:hover{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:ring-2:hover{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.hover\:ring-primary:hover{--tw-ring-color: hsl(var(--primary))}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-gray-100:focus{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-red-500:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.active\:cursor-grabbing:active{cursor:grabbing}.active\:border-primary\/70:active{border-color:hsl(var(--primary) / .7)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group[open] .group-open\:rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:opacity-100{opacity:1}.group.destructive .group-\[\.destructive\]\:border-muted\/40{border-color:hsl(var(--muted) / .4)}.group.destructive .group-\[\.destructive\]\:text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:hover\:text-red-50:hover{--tw-text-opacity: 1;color:rgb(254 242 242 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-red-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(248 113 113 / var(--tw-ring-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-offset-red-600:focus{--tw-ring-offset-color: #dc2626}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-selected\:text-muted-foreground[aria-selected=true]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true],.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked],.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x: var(--radix-toast-swipe-end-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x: var(--radix-toast-swipe-move-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes fade-out{0%{opacity:1}to{opacity:0}}.data-\[state\=closed\]\:animate-fade-out[data-state=closed]{animation:fade-out .15s ease-in}.data-\[state\=closed\]\:animate-slide-out-to-right[data-state=closed]{animation:slide-out-to-right .2s ease-in}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.data-\[state\=open\]\:animate-fade-in[data-state=open]{animation:fade-in .2s ease-out}@keyframes slide-in-from-right{0%{transform:translate(100%)}to{transform:translate(0)}}.data-\[state\=open\]\:animate-slide-in-from-right[data-state=open]{animation:slide-in-from-right .3s ease-out}@keyframes slide-out-to-right{0%{transform:translate(0)}to{transform:translate(100%)}}.data-\[swipe\=end\]\:animate-slide-out-to-right[data-swipe=end]{animation:slide-out-to-right .2s ease-in}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) - 2px)}.data-\[selected\=true\]\:rounded-none[data-selected=true]{border-radius:0}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:hsl(var(--primary))}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:hsl(var(--accent))}.data-\[range-start\=true\]\:bg-primary[data-range-start=true],.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:hsl(var(--primary))}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:hsl(var(--primary-foreground))}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:hsl(var(--accent-foreground))}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true],.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:hsl(var(--primary-foreground))}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:opacity-50[data-disabled=true],.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.data-\[state\=active\]\:duration-300[data-state=active]{transition-duration:.3s}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:relative{position:relative}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:z-10{z-index:10}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:border-ring{border-color:hsl(var(--ring))}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-\[3px\]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}@supports (backdrop-filter: var(--tw)){.supports-\[backdrop-filter\]\:bg-background\/60{background-color:hsl(var(--background) / .6)}}.dark\:border-amber-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(146 64 14 / var(--tw-border-opacity, 1))}.dark\:border-blue-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity, 1))}.dark\:border-gray-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(17 24 39 / var(--tw-border-opacity, 1))}.dark\:border-green-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(22 101 52 / var(--tw-border-opacity, 1))}.dark\:border-orange-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(124 45 18 / var(--tw-border-opacity, 1))}.dark\:border-yellow-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(113 63 18 / var(--tw-border-opacity, 1))}.dark\:bg-amber-950\/30:is(.dark *){background-color:#451a034d}.dark\:bg-blue-500\/20:is(.dark *){background-color:#3b82f633}.dark\:bg-blue-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 37 84 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950\/20:is(.dark *){background-color:#17255433}.dark\:bg-blue-950\/30:is(.dark *){background-color:#1725544d}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800\/30:is(.dark *){background-color:#1f29374d}.dark\:bg-gray-800\/50:is(.dark *){background-color:#1f293780}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(3 7 18 / var(--tw-bg-opacity, 1))}.dark\:bg-green-900\/30:is(.dark *){background-color:#14532d4d}.dark\:bg-green-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(5 46 22 / var(--tw-bg-opacity, 1))}.dark\:bg-orange-950\/20:is(.dark *){background-color:#43140733}.dark\:bg-red-500\/20:is(.dark *){background-color:#ef444433}.dark\:bg-red-600\/30:is(.dark *){background-color:#dc26264d}.dark\:bg-red-900\/30:is(.dark *){background-color:#7f1d1d4d}.dark\:bg-red-950\/50:is(.dark *){background-color:#450a0a80}.dark\:bg-yellow-500\/20:is(.dark *){background-color:#eab30833}.dark\:bg-yellow-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1))}.dark\:bg-yellow-950\/30:is(.dark *){background-color:#4220064d}.dark\:text-amber-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 243 199 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-blue-100:is(.dark *){--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-200:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-cyan-500:is(.dark *){--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-orange-100:is(.dark *){--tw-text-opacity: 1;color:rgb(255 237 213 / var(--tw-text-opacity, 1))}.dark\:text-orange-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 215 170 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-red-500:is(.dark *){--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.dark\:text-yellow-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 249 195 / var(--tw-text-opacity, 1))}.dark\:text-yellow-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.dark\:text-yellow-400:is(.dark *){--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.dark\:text-yellow-500:is(.dark *){--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:hover\:text-yellow-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:focus\:bg-gray-800:focus:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}@media(min-width:640px){.sm\:right-2{right:.5rem}.sm\:right-3{right:.75rem}.sm\:top-2{top:.5rem}.sm\:top-3{top:.75rem}.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:mb-3{margin-bottom:.75rem}.sm\:mb-4{margin-bottom:1rem}.sm\:mb-6{margin-bottom:1.5rem}.sm\:ml-0{margin-left:0}.sm\:ml-1{margin-left:.25rem}.sm\:mr-1{margin-right:.25rem}.sm\:mr-2{margin-right:.5rem}.sm\:mt-0{margin-top:0}.sm\:mt-2{margin-top:.5rem}.sm\:mt-3{margin-top:.75rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-12{height:3rem}.sm\:h-2{height:.5rem}.sm\:h-24{height:6rem}.sm\:h-3{height:.75rem}.sm\:h-4{height:1rem}.sm\:h-5{height:1.25rem}.sm\:h-8{height:2rem}.sm\:h-\[300px\]{height:300px}.sm\:h-\[400px\]{height:400px}.sm\:h-\[500px\]{height:500px}.sm\:h-\[calc\(100vh-280px\)\]{height:calc(100vh - 280px)}.sm\:w-10{width:2.5rem}.sm\:w-2{width:.5rem}.sm\:w-24{width:6rem}.sm\:w-3{width:.75rem}.sm\:w-4{width:1rem}.sm\:w-5{width:1.25rem}.sm\:w-8{width:2rem}.sm\:w-\[140px\]{width:140px}.sm\:w-\[160px\]{width:160px}.sm\:w-\[200px\]{width:200px}.sm\:w-\[500px\]{width:500px}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:min-w-\[120px\]{min-width:120px}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-\[420px\]{max-width:420px}.sm\:max-w-\[70\%\]{max-width:70%}.sm\:max-w-\[900px\]{max-width:900px}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:flex-1{flex:1 1 0%}.sm\:flex-none{flex:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-0{gap:0px}.sm\:gap-1{gap:.25rem}.sm\:gap-2{gap:.5rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:gap-6{gap:1.5rem}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.sm\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.sm\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.sm\:space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-\[200px\]{font-size:200px}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:768px){.md\:top-4{top:1rem}.md\:mb-4{margin-bottom:1rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-8{margin-bottom:2rem}.md\:mt-8{margin-top:2rem}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-16{height:4rem}.md\:h-4{height:1rem}.md\:h-5{height:1.25rem}.md\:h-8{height:2rem}.md\:h-96{height:24rem}.md\:h-\[500px\]{height:500px}.md\:min-h-\[400px\]{min-height:400px}.md\:w-16{width:4rem}.md\:w-4{width:1rem}.md\:w-5{width:1.25rem}.md\:w-8{width:2rem}.md\:w-96{width:24rem}.md\:max-w-none{max-width:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:gap-2{gap:.5rem}.md\:gap-3{gap:.75rem}.md\:gap-4{gap:1rem}.md\:gap-6{gap:1.5rem}.md\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.md\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.md\:whitespace-normal{white-space:normal}.md\:p-12{padding:3rem}.md\:p-4{padding:1rem}.md\:p-6{padding:1.5rem}.md\:p-8{padding:2rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:1024px){.lg\:invisible{visibility:hidden}.lg\:relative{position:relative}.lg\:z-0{z-index:0}.lg\:col-span-1{grid-column:span 1 / span 1}.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:mb-1{margin-bottom:.25rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-12{width:3rem}.lg\:w-16{width:4rem}.lg\:w-64{width:16rem}.lg\:w-8{width:2rem}.lg\:w-\[130px\]{width:130px}.lg\:w-\[160px\]{width:160px}.lg\:w-\[180px\]{width:180px}.lg\:w-\[200px\]{width:200px}.lg\:w-\[240px\]{width:240px}.lg\:w-\[75px\]{width:75px}.lg\:w-auto{width:auto}.lg\:w-full{width:100%}.lg\:max-w-0{max-width:0px}.lg\:flex-1{flex:1 1 0%}.lg\:flex-none{flex:none}.lg\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:justify-center{justify-content:center}.lg\:gap-0{gap:0px}.lg\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.lg\:overflow-hidden{overflow:hidden}.lg\:p-2{padding:.5rem}.lg\:p-6{padding:1.5rem}.lg\:px-0{padding-left:0;padding-right:0}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:pb-6{padding-bottom:1.5rem}.lg\:text-3xl{font-size:1.875rem;line-height:2.25rem}.lg\:opacity-0{opacity:0}}@media(min-width:1280px){.xl\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}}.\[\&\+div\]\:text-xs+div{font-size:.75rem;line-height:1rem}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>span\]\:text-xs>span{font-size:.75rem;line-height:1rem}.\[\&\>span\]\:opacity-70>span{opacity:.7}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y: -3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-4>svg{top:1rem}.\[\&\>svg\]\:size-3\.5>svg{width:.875rem;height:.875rem}.\[\&\>svg\]\:h-2\.5>svg{height:.625rem}.\[\&\>svg\]\:h-3>svg{height:.75rem}.\[\&\>svg\]\:w-2\.5>svg{width:.625rem}.\[\&\>svg\]\:w-3>svg{width:.75rem}.\[\&\>svg\]\:text-foreground>svg{color:hsl(var(--foreground))}.\[\&\>svg\]\:text-muted-foreground>svg{color:hsl(var(--muted-foreground))}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:1.75rem}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:hsl(var(--muted-foreground))}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:hsl(var(--border) / .5)}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:hsl(var(--border))}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-layer\]\:outline-none .recharts-layer{outline:2px solid transparent;outline-offset:2px}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector,.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:hsl(var(--muted))}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-sector\]\:outline-none .recharts-sector,.\[\&_\.recharts-surface\]\:outline-none .recharts-surface{outline:2px solid transparent;outline-offset:2px}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:1.25rem}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:invisible svg{visibility:hidden}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent,[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:transparent}@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(/assets/KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(/assets/KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(/assets/KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(/assets/KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(/assets/KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(/assets/KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.25"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:grab}.react-flow__node.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%} diff --git a/webui/dist/index.html b/webui/dist/index.html index 2dc900c9..059f7ffb 100644 --- a/webui/dist/index.html +++ b/webui/dist/index.html @@ -7,13 +7,13 @@ MaiBot Dashboard - + - - + +
From 17279c432622ec2ea3aa33b83640b5025a48a01a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Sat, 29 Nov 2025 02:12:49 +0800 Subject: [PATCH 11/61] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=A1=A8?= =?UTF-8?q?=E6=83=85=E5=8C=85=E4=B8=8A=E4=BC=A0=E5=92=8C=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E7=B1=BB=E5=9E=8B=E9=AA=8C=E8=AF=81=E5=92=8C?= =?UTF-8?q?=E5=93=88=E5=B8=8C=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/webui/emoji_routes.py | 281 +++++++++++++++++++++++++++++++++++++- 1 file changed, 280 insertions(+), 1 deletion(-) diff --git a/src/webui/emoji_routes.py b/src/webui/emoji_routes.py index 35eaed04..e2aa6875 100644 --- a/src/webui/emoji_routes.py +++ b/src/webui/emoji_routes.py @@ -1,6 +1,6 @@ """表情包管理 API 路由""" -from fastapi import APIRouter, HTTPException, Header, Query +from fastapi import APIRouter, HTTPException, Header, Query, UploadFile, File, Form from fastapi.responses import FileResponse from pydantic import BaseModel from typing import Optional, List @@ -10,6 +10,10 @@ from .token_manager import get_token_manager import json import time import os +import hashlib +import base64 +from PIL import Image +import io logger = get_logger("webui.emoji") @@ -572,3 +576,278 @@ async def batch_delete_emojis(request: BatchDeleteRequest, authorization: Option except Exception as e: logger.exception(f"批量删除表情包失败: {e}") raise HTTPException(status_code=500, detail=f"批量删除失败: {str(e)}") from e + + +# 表情包存储目录 +EMOJI_REGISTERED_DIR = os.path.join("data", "emoji_registed") + + +class EmojiUploadResponse(BaseModel): + """表情包上传响应""" + + success: bool + message: str + data: Optional[EmojiResponse] = None + + +@router.post("/upload", response_model=EmojiUploadResponse) +async def upload_emoji( + file: UploadFile = File(..., description="表情包图片文件"), + description: str = Form("", description="表情包描述"), + emotion: str = Form("", description="情感标签,多个用逗号分隔"), + is_registered: bool = Form(True, description="是否直接注册"), + authorization: Optional[str] = Header(None), +): + """ + 上传并注册表情包 + + Args: + file: 表情包图片文件 (支持 jpg, jpeg, png, gif, webp) + description: 表情包描述 + emotion: 情感标签,多个用逗号分隔 + is_registered: 是否直接注册,默认为 True + authorization: Authorization header + + Returns: + 上传结果和表情包信息 + """ + try: + verify_auth_token(authorization) + + # 验证文件类型 + if not file.content_type: + raise HTTPException(status_code=400, detail="无法识别文件类型") + + allowed_types = ["image/jpeg", "image/png", "image/gif", "image/webp"] + if file.content_type not in allowed_types: + raise HTTPException( + status_code=400, + detail=f"不支持的文件类型: {file.content_type},支持: {', '.join(allowed_types)}", + ) + + # 读取文件内容 + file_content = await file.read() + + if not file_content: + raise HTTPException(status_code=400, detail="文件内容为空") + + # 验证图片并获取格式 + try: + with Image.open(io.BytesIO(file_content)) as img: + img_format = img.format.lower() if img.format else "png" + # 验证图片可以正常打开 + img.verify() + except Exception as e: + raise HTTPException(status_code=400, detail=f"无效的图片文件: {str(e)}") from e + + # 重新打开图片(verify后需要重新打开) + with Image.open(io.BytesIO(file_content)) as img: + img_format = img.format.lower() if img.format else "png" + + # 计算文件哈希 + emoji_hash = hashlib.md5(file_content).hexdigest() + + # 检查是否已存在相同哈希的表情包 + existing_emoji = Emoji.get_or_none(Emoji.emoji_hash == emoji_hash) + if existing_emoji: + raise HTTPException( + status_code=409, + detail=f"已存在相同的表情包 (ID: {existing_emoji.id})", + ) + + # 确保目录存在 + os.makedirs(EMOJI_REGISTERED_DIR, exist_ok=True) + + # 生成文件名 + timestamp = int(time.time()) + filename = f"emoji_{timestamp}_{emoji_hash[:8]}.{img_format}" + full_path = os.path.join(EMOJI_REGISTERED_DIR, filename) + + # 如果文件已存在,添加随机后缀 + counter = 1 + while os.path.exists(full_path): + filename = f"emoji_{timestamp}_{emoji_hash[:8]}_{counter}.{img_format}" + full_path = os.path.join(EMOJI_REGISTERED_DIR, filename) + counter += 1 + + # 保存文件 + with open(full_path, "wb") as f: + f.write(file_content) + + logger.info(f"表情包文件已保存: {full_path}") + + # 处理情感标签 + emotion_str = ",".join(e.strip() for e in emotion.split(",") if e.strip()) if emotion else "" + + # 创建数据库记录 + current_time = time.time() + emoji = Emoji.create( + full_path=full_path, + format=img_format, + emoji_hash=emoji_hash, + description=description, + emotion=emotion_str, + query_count=0, + is_registered=is_registered, + is_banned=False, + record_time=current_time, + register_time=current_time if is_registered else None, + usage_count=0, + last_used_time=None, + ) + + logger.info(f"表情包已上传并注册: ID={emoji.id}, hash={emoji_hash}") + + return EmojiUploadResponse( + success=True, + message="表情包上传成功" + ("并已注册" if is_registered else ""), + data=emoji_to_response(emoji), + ) + + except HTTPException: + raise + except Exception as e: + logger.exception(f"上传表情包失败: {e}") + raise HTTPException(status_code=500, detail=f"上传失败: {str(e)}") from e + + +@router.post("/batch/upload") +async def batch_upload_emoji( + files: List[UploadFile] = File(..., description="多个表情包图片文件"), + emotion: str = Form("", description="情感标签,多个用逗号分隔"), + is_registered: bool = Form(True, description="是否直接注册"), + authorization: Optional[str] = Header(None), +): + """ + 批量上传表情包 + + Args: + files: 多个表情包图片文件 + emotion: 共用的情感标签 + is_registered: 是否直接注册 + authorization: Authorization header + + Returns: + 批量上传结果 + """ + try: + verify_auth_token(authorization) + + results = { + "success": True, + "total": len(files), + "uploaded": 0, + "failed": 0, + "details": [], + } + + allowed_types = ["image/jpeg", "image/png", "image/gif", "image/webp"] + os.makedirs(EMOJI_REGISTERED_DIR, exist_ok=True) + + for file in files: + try: + # 验证文件类型 + if file.content_type not in allowed_types: + results["failed"] += 1 + results["details"].append({ + "filename": file.filename, + "success": False, + "error": f"不支持的文件类型: {file.content_type}", + }) + continue + + # 读取文件内容 + file_content = await file.read() + + if not file_content: + results["failed"] += 1 + results["details"].append({ + "filename": file.filename, + "success": False, + "error": "文件内容为空", + }) + continue + + # 验证图片 + try: + with Image.open(io.BytesIO(file_content)) as img: + img_format = img.format.lower() if img.format else "png" + except Exception as e: + results["failed"] += 1 + results["details"].append({ + "filename": file.filename, + "success": False, + "error": f"无效的图片: {str(e)}", + }) + continue + + # 计算哈希 + emoji_hash = hashlib.md5(file_content).hexdigest() + + # 检查重复 + if Emoji.get_or_none(Emoji.emoji_hash == emoji_hash): + results["failed"] += 1 + results["details"].append({ + "filename": file.filename, + "success": False, + "error": "已存在相同的表情包", + }) + continue + + # 生成文件名并保存 + timestamp = int(time.time()) + filename = f"emoji_{timestamp}_{emoji_hash[:8]}.{img_format}" + full_path = os.path.join(EMOJI_REGISTERED_DIR, filename) + + counter = 1 + while os.path.exists(full_path): + filename = f"emoji_{timestamp}_{emoji_hash[:8]}_{counter}.{img_format}" + full_path = os.path.join(EMOJI_REGISTERED_DIR, filename) + counter += 1 + + with open(full_path, "wb") as f: + f.write(file_content) + + # 处理情感标签 + emotion_str = ",".join(e.strip() for e in emotion.split(",") if e.strip()) if emotion else "" + + # 创建数据库记录 + current_time = time.time() + emoji = Emoji.create( + full_path=full_path, + format=img_format, + emoji_hash=emoji_hash, + description="", # 批量上传暂不设置描述 + emotion=emotion_str, + query_count=0, + is_registered=is_registered, + is_banned=False, + record_time=current_time, + register_time=current_time if is_registered else None, + usage_count=0, + last_used_time=None, + ) + + results["uploaded"] += 1 + results["details"].append({ + "filename": file.filename, + "success": True, + "id": emoji.id, + }) + + except Exception as e: + results["failed"] += 1 + results["details"].append({ + "filename": file.filename, + "success": False, + "error": str(e), + }) + + results["message"] = f"成功上传 {results['uploaded']} 个,失败 {results['failed']} 个" + return results + + except HTTPException: + raise + except Exception as e: + logger.exception(f"批量上传表情包失败: {e}") + raise HTTPException(status_code=500, detail=f"批量上传失败: {str(e)}") from e \ No newline at end of file From ccda410ab44b6a08ee5bb914116e5b7000f196d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Sat, 29 Nov 2025 13:13:25 +0800 Subject: [PATCH 12/61] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=20requirements?= =?UTF-8?q?.txt=EF=BC=8C=E6=B7=BB=E5=8A=A0=20python-multipart=20=E4=BE=9D?= =?UTF-8?q?=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 8a0d22c2..56c944e8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -17,6 +17,7 @@ pyarrow>=20.0.0 pydantic>=2.11.7 pypinyin>=0.54.0 python-dotenv>=1.1.1 +python-multipart>=0.0.20 quick-algo>=0.1.3 rich>=14.0.0 ruff>=0.12.2 From d7932595e86635a7d946d71a3d2452dc40e03d11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Sat, 29 Nov 2025 14:24:10 +0800 Subject: [PATCH 13/61] =?UTF-8?q?feat:=20=E4=BD=BF=E7=94=A8=20tomlkit=20?= =?UTF-8?q?=E6=9B=BF=E6=8D=A2=20toml=EF=BC=8C=E5=A2=9E=E5=BC=BA=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=96=87=E4=BB=B6=E7=9A=84=E8=AF=BB=E5=8F=96=E5=92=8C?= =?UTF-8?q?=E5=86=99=E5=85=A5=E5=8A=9F=E8=83=BD=EF=BC=8C=E4=BF=9D=E7=95=99?= =?UTF-8?q?=E6=B3=A8=E9=87=8A=E5=92=8C=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/webui/config_routes.py | 4 ++-- src/webui/plugin_routes.py | 41 ++++++++++++++++++++++++-------------- 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/src/webui/config_routes.py b/src/webui/config_routes.py index c4fca2d0..392f2d98 100644 --- a/src/webui/config_routes.py +++ b/src/webui/config_routes.py @@ -586,8 +586,8 @@ async def save_adapter_config(data: dict[str, str] = Body(...)): # 验证 TOML 格式 try: - import toml - toml.loads(content) + import tomlkit + tomlkit.loads(content) except Exception as e: raise HTTPException(status_code=400, detail=f"TOML 格式错误: {str(e)}") diff --git a/src/webui/plugin_routes.py b/src/webui/plugin_routes.py index 5c49483e..7480d65f 100644 --- a/src/webui/plugin_routes.py +++ b/src/webui/plugin_routes.py @@ -1235,8 +1235,9 @@ async def get_plugin_config_schema( config_path = plugin_path / "config.toml" current_config = {} if config_path.exists(): - import toml - current_config = toml.load(config_path) + import tomlkit + with open(config_path, "r", encoding="utf-8") as f: + current_config = tomlkit.load(f) # 构建基础 schema(无法获取完整的 ConfigField 信息) schema = { @@ -1342,10 +1343,11 @@ async def get_plugin_config( if not config_path.exists(): return {"success": True, "config": {}, "message": "配置文件不存在"} - import toml - config = toml.load(config_path) + import tomlkit + with open(config_path, "r", encoding="utf-8") as f: + config = tomlkit.load(f) - return {"success": True, "config": config} + return {"success": True, "config": dict(config)} except HTTPException: raise @@ -1405,10 +1407,18 @@ async def update_plugin_config( shutil.copy(config_path, backup_path) logger.info(f"已备份配置文件: {backup_path}") - # 写入新配置 - import toml + # 写入新配置(使用 tomlkit 保留注释) + import tomlkit + # 先读取原配置以保留注释和格式 + existing_doc = tomlkit.document() + if config_path.exists(): + with open(config_path, "r", encoding="utf-8") as f: + existing_doc = tomlkit.load(f) + # 更新值 + for key, value in request.config.items(): + existing_doc[key] = value with open(config_path, "w", encoding="utf-8") as f: - toml.dump(request.config, f) + tomlkit.dump(existing_doc, f) logger.info(f"已更新插件配置: {plugin_id}") @@ -1530,24 +1540,25 @@ async def toggle_plugin( config_path = plugin_path / "config.toml" - import toml + import tomlkit - # 读取当前配置 - config = {} + # 读取当前配置(保留注释和格式) + config = tomlkit.document() if config_path.exists(): - config = toml.load(config_path) + with open(config_path, "r", encoding="utf-8") as f: + config = tomlkit.load(f) # 切换 enabled 状态 if "plugin" not in config: - config["plugin"] = {} + config["plugin"] = tomlkit.table() current_enabled = config["plugin"].get("enabled", True) new_enabled = not current_enabled config["plugin"]["enabled"] = new_enabled - # 写入配置 + # 写入配置(保留注释) with open(config_path, "w", encoding="utf-8") as f: - toml.dump(config, f) + tomlkit.dump(config, f) status = "启用" if new_enabled else "禁用" logger.info(f"已{status}插件: {plugin_id}") From 3935ce817ea14dd648c2e0c66d17cf8dafbaa037 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Sat, 29 Nov 2025 14:38:42 +0800 Subject: [PATCH 14/61] Ruff Fix & format --- bot.py | 7 +- src/chat/brain_chat/brain_chat.py | 5 +- src/chat/heart_flow/heartFC_chat.py | 7 +- .../message_receive/uni_message_sender.py | 31 +-- src/chat/planner_actions/planner.py | 33 ++- src/chat/utils/chat_message_builder.py | 2 +- src/chat/utils/utils_image.py | 16 +- src/express/expression_learner.py | 6 +- src/express/expression_reflector.py | 81 +++---- src/express/reflect_tracker.py | 68 +++--- .../chat_history_summarizer.py | 20 +- src/jargon/jargon_explainer.py | 37 ++-- src/jargon/jargon_miner.py | 28 ++- src/jargon/jargon_utils.py | 26 +-- src/llm_models/utils_model.py | 6 +- src/main.py | 4 +- src/memory_system/memory_retrieval.py | 9 +- .../retrieval_tools/query_chat_history.py | 16 +- src/plugin_system/base/config_types.py | 55 ++--- src/plugin_system/base/plugin_base.py | 24 +- src/webui/chat_routes.py | 207 ++++++++++-------- src/webui/config_routes.py | 90 ++++---- src/webui/config_schema.py | 12 +- src/webui/emoji_routes.py | 99 +++++---- src/webui/git_mirror_service.py | 4 +- src/webui/knowledge_routes.py | 182 +++++++-------- src/webui/model_routes.py | 113 +++++----- src/webui/plugin_routes.py | 148 ++++++------- src/webui/routers/system.py | 4 +- src/webui/webui_server.py | 14 +- test_edge.py | 8 +- 31 files changed, 678 insertions(+), 684 deletions(-) diff --git a/bot.py b/bot.py index b47ccfc2..cecffde6 100644 --- a/bot.py +++ b/bot.py @@ -78,6 +78,7 @@ async def graceful_shutdown(): # sourcery skip: use-named-expression # 关闭 WebUI 服务器 try: from src.webui.webui_server import get_webui_server + webui_server = get_webui_server() if webui_server and webui_server._server: await webui_server.shutdown() @@ -236,15 +237,15 @@ if __name__ == "__main__": except KeyboardInterrupt: logger.warning("收到中断信号,正在优雅关闭...") - + # 取消主任务 - if 'main_tasks' in locals() and main_tasks and not main_tasks.done(): + if "main_tasks" in locals() and main_tasks and not main_tasks.done(): main_tasks.cancel() try: loop.run_until_complete(main_tasks) except asyncio.CancelledError: pass - + # 执行优雅关闭 if loop and not loop.is_closed(): try: diff --git a/src/chat/brain_chat/brain_chat.py b/src/chat/brain_chat/brain_chat.py index 6eede670..8702248f 100644 --- a/src/chat/brain_chat/brain_chat.py +++ b/src/chat/brain_chat/brain_chat.py @@ -235,13 +235,13 @@ class BrainChatting: if recent_messages_list is None: recent_messages_list = [] _reply_text = "" # 初始化reply_text变量,避免UnboundLocalError - + # ------------------------------------------------------------------------- # ReflectTracker Check # 在每次回复前检查一次上下文,看是否有反思问题得到了解答 # ------------------------------------------------------------------------- from src.express.reflect_tracker import reflect_tracker_manager - + tracker = reflect_tracker_manager.get_tracker(self.stream_id) if tracker: resolved = await tracker.trigger_tracker() @@ -254,6 +254,7 @@ class BrainChatting: # 检查是否需要提问表达反思 # ------------------------------------------------------------------------- from src.express.expression_reflector import expression_reflector_manager + reflector = expression_reflector_manager.get_or_create_reflector(self.stream_id) asyncio.create_task(reflector.check_and_ask()) diff --git a/src/chat/heart_flow/heartFC_chat.py b/src/chat/heart_flow/heartFC_chat.py index bb9c6d76..1af21a4f 100644 --- a/src/chat/heart_flow/heartFC_chat.py +++ b/src/chat/heart_flow/heartFC_chat.py @@ -400,7 +400,7 @@ class HeartFChatting: # ReflectTracker Check # 在每次回复前检查一次上下文,看是否有反思问题得到了解答 # ------------------------------------------------------------------------- - + reflector = expression_reflector_manager.get_or_create_reflector(self.stream_id) await reflector.check_and_ask() tracker = reflect_tracker_manager.get_tracker(self.stream_id) @@ -410,7 +410,6 @@ class HeartFChatting: reflect_tracker_manager.remove_tracker(self.stream_id) logger.info(f"{self.log_prefix} ReflectTracker resolved and removed.") - start_time = time.time() async with global_prompt_manager.async_message_scope(self.chat_stream.context.get_template_name()): asyncio.create_task(self.expression_learner.trigger_learning_for_chat()) @@ -427,7 +426,9 @@ class HeartFChatting: # asyncio.create_task(self.chat_history_summarizer.process()) cycle_timers, thinking_id = self.start_cycle() - logger.info(f"{self.log_prefix} 开始第{self._cycle_counter}次思考(频率: {global_config.chat.get_talk_value(self.stream_id)})") + logger.info( + f"{self.log_prefix} 开始第{self._cycle_counter}次思考(频率: {global_config.chat.get_talk_value(self.stream_id)})" + ) # 第一步:动作检查 available_actions: Dict[str, ActionInfo] = {} diff --git a/src/chat/message_receive/uni_message_sender.py b/src/chat/message_receive/uni_message_sender.py index 343084eb..13ff3641 100644 --- a/src/chat/message_receive/uni_message_sender.py +++ b/src/chat/message_receive/uni_message_sender.py @@ -25,6 +25,7 @@ def get_webui_chat_broadcaster(): if _webui_chat_broadcaster is None: try: from src.webui.chat_routes import chat_manager, WEBUI_CHAT_PLATFORM + _webui_chat_broadcaster = (chat_manager, WEBUI_CHAT_PLATFORM) except ImportError: _webui_chat_broadcaster = (None, None) @@ -43,26 +44,28 @@ async def _send_message(message: MessageSending, show_log=True) -> bool: # WebUI 聊天室消息,通过 WebSocket 广播 import time from src.config.config import global_config - - await chat_manager.broadcast({ - "type": "bot_message", - "content": message.processed_plain_text, - "message_type": "text", - "timestamp": time.time(), - "sender": { - "name": global_config.bot.nickname, - "avatar": None, - "is_bot": True, + + await chat_manager.broadcast( + { + "type": "bot_message", + "content": message.processed_plain_text, + "message_type": "text", + "timestamp": time.time(), + "sender": { + "name": global_config.bot.nickname, + "avatar": None, + "is_bot": True, + }, } - }) - + ) + # 注意:机器人消息会由 MessageStorage.store_message 自动保存到数据库 # 无需手动保存 - + if show_log: logger.info(f"已将消息 '{message_preview}' 发往 WebUI 聊天室") return True - + # 直接调用API发送消息 await get_global_api().send_message(message) if show_log: diff --git a/src/chat/planner_actions/planner.py b/src/chat/planner_actions/planner.py index d7c7c792..5c498e30 100644 --- a/src/chat/planner_actions/planner.py +++ b/src/chat/planner_actions/planner.py @@ -181,8 +181,12 @@ class ActionPlanner: found_ids = set(matches) missing_ids = found_ids - available_ids if missing_ids: - logger.info(f"{self.log_prefix}planner理由中引用的消息ID不在当前上下文中: {missing_ids}, 可用ID: {list(available_ids)[:10]}...") - logger.info(f"{self.log_prefix}planner理由替换: 找到{len(matches)}个消息ID引用,其中{len(found_ids & available_ids)}个在上下文中") + logger.info( + f"{self.log_prefix}planner理由中引用的消息ID不在当前上下文中: {missing_ids}, 可用ID: {list(available_ids)[:10]}..." + ) + logger.info( + f"{self.log_prefix}planner理由替换: 找到{len(matches)}个消息ID引用,其中{len(found_ids & available_ids)}个在上下文中" + ) def _replace(match: re.Match[str]) -> str: msg_id = match.group(0) @@ -234,17 +238,11 @@ class ActionPlanner: target_message = message_id_list[-1][1] logger.debug(f"{self.log_prefix}动作'{action}'缺少target_message_id,使用最新消息作为target_message") - if ( - action != "no_reply" - and target_message is not None - and self._is_message_from_self(target_message) - ): + if action != "no_reply" and target_message is not None and self._is_message_from_self(target_message): logger.info( f"{self.log_prefix}Planner选择了自己的消息 {target_message_id or target_message.message_id} 作为目标,强制使用 no_reply" ) - reasoning = ( - f"目标消息 {target_message_id or target_message.message_id} 来自机器人自身,违反不回复自身消息规则。原始理由: {reasoning}" - ) + reasoning = f"目标消息 {target_message_id or target_message.message_id} 来自机器人自身,违反不回复自身消息规则。原始理由: {reasoning}" action = "no_reply" target_message = None @@ -295,10 +293,9 @@ class ActionPlanner: def _is_message_from_self(self, message: "DatabaseMessages") -> bool: """判断消息是否由机器人自身发送""" try: - return ( - str(message.user_info.user_id) == str(global_config.bot.qq_account) - and (message.user_info.platform or "") == (global_config.bot.platform or "") - ) + return str(message.user_info.user_id) == str(global_config.bot.qq_account) and ( + message.user_info.platform or "" + ) == (global_config.bot.platform or "") except AttributeError: logger.warning(f"{self.log_prefix}检测消息发送者失败,缺少必要字段") return False @@ -780,20 +777,20 @@ class ActionPlanner: json_content_start = json_start_pos + 7 # ```json的长度 # 提取从```json之后到内容结尾的所有内容 incomplete_json_str = content[json_content_start:].strip() - + # 提取JSON之前的内容作为推理文本 if json_start_pos > 0: reasoning_content = content[:json_start_pos].strip() reasoning_content = re.sub(r"^//\s*", "", reasoning_content, flags=re.MULTILINE) reasoning_content = reasoning_content.strip() - + if incomplete_json_str: try: # 清理可能的注释和格式问题 json_str = re.sub(r"//.*?\n", "\n", incomplete_json_str) json_str = re.sub(r"/\*.*?\*/", "", json_str, flags=re.DOTALL) json_str = json_str.strip() - + if json_str: # 尝试按行分割,每行可能是一个JSON对象 lines = [line.strip() for line in json_str.split("\n") if line.strip()] @@ -808,7 +805,7 @@ class ActionPlanner: json_objects.append(item) except json.JSONDecodeError: pass - + # 如果按行解析没有成功,尝试将整个块作为一个JSON对象或数组 if not json_objects: try: diff --git a/src/chat/utils/chat_message_builder.py b/src/chat/utils/chat_message_builder.py index b45a53b3..5592e6cf 100644 --- a/src/chat/utils/chat_message_builder.py +++ b/src/chat/utils/chat_message_builder.py @@ -959,7 +959,7 @@ async def build_anonymous_messages(messages: List[DatabaseMessages], show_ids: b header = f"[{i + 1}] {anon_name}说 " else: header = f"{anon_name}说 " - + output_lines.append(header) stripped_line = content.strip() if stripped_line: diff --git a/src/chat/utils/utils_image.py b/src/chat/utils/utils_image.py index 99b00204..a244fecb 100644 --- a/src/chat/utils/utils_image.py +++ b/src/chat/utils/utils_image.py @@ -130,12 +130,10 @@ class ImageManager: try: # 清理Images表中type为emoji的记录 deleted_images = Images.delete().where(Images.type == "emoji").execute() - + # 清理ImageDescriptions表中type为emoji的记录 - deleted_descriptions = ( - ImageDescriptions.delete().where(ImageDescriptions.type == "emoji").execute() - ) - + deleted_descriptions = ImageDescriptions.delete().where(ImageDescriptions.type == "emoji").execute() + total_deleted = deleted_images + deleted_descriptions if total_deleted > 0: logger.info( @@ -194,10 +192,14 @@ class ImageManager: if cache_record: # 优先使用情感标签,如果没有则使用详细描述 if cache_record.emotion_tags: - logger.info(f"[缓存命中] 使用EmojiDescriptionCache表中的情感标签: {cache_record.emotion_tags[:50]}...") + logger.info( + f"[缓存命中] 使用EmojiDescriptionCache表中的情感标签: {cache_record.emotion_tags[:50]}..." + ) return f"[表情包:{cache_record.emotion_tags}]" elif cache_record.description: - logger.info(f"[缓存命中] 使用EmojiDescriptionCache表中的描述: {cache_record.description[:50]}...") + logger.info( + f"[缓存命中] 使用EmojiDescriptionCache表中的描述: {cache_record.description[:50]}..." + ) return f"[表情包:{cache_record.description}]" except Exception as e: logger.debug(f"查询EmojiDescriptionCache时出错: {e}") diff --git a/src/express/expression_learner.py b/src/express/expression_learner.py index 60aa609a..76cc8408 100644 --- a/src/express/expression_learner.py +++ b/src/express/expression_learner.py @@ -226,19 +226,19 @@ class ExpressionLearner: match_responses = [] try: response = response.strip() - + # 尝试提取JSON代码块(如果存在) json_pattern = r"```json\s*(.*?)\s*```" matches = re.findall(json_pattern, response, re.DOTALL) if matches: response = matches[0].strip() - + # 移除可能的markdown代码块标记(如果没有找到```json,但可能有```) if not matches: response = re.sub(r"^```\s*", "", response, flags=re.MULTILINE) response = re.sub(r"```\s*$", "", response, flags=re.MULTILINE) response = response.strip() - + # 检查是否已经是标准JSON数组格式 if response.startswith("[") and response.endswith("]"): match_responses = json.loads(response) diff --git a/src/express/expression_reflector.py b/src/express/expression_reflector.py index ecd6a822..0418b435 100644 --- a/src/express/expression_reflector.py +++ b/src/express/expression_reflector.py @@ -13,21 +13,21 @@ logger = get_logger("expression_reflector") class ExpressionReflector: """表达反思器,管理单个聊天流的表达反思提问""" - + def __init__(self, chat_id: str): self.chat_id = chat_id self.last_ask_time: float = 0.0 - + async def check_and_ask(self) -> bool: """ 检查是否需要提问表达反思,如果需要则提问 - + Returns: bool: 是否执行了提问 """ try: logger.debug(f"[Expression Reflection] 开始检查是否需要提问 (stream_id: {self.chat_id})") - + if not global_config.expression.reflect: logger.debug(f"[Expression Reflection] 表达反思功能未启用,跳过") return False @@ -48,7 +48,7 @@ class ExpressionReflector: allow_reflect_chat_ids.append(parsed_chat_id) else: logger.warning(f"[Expression Reflection] 无法解析 allow_reflect 配置项: {stream_config}") - + if self.chat_id not in allow_reflect_chat_ids: logger.info(f"[Expression Reflection] 当前聊天流 {self.chat_id} 不在允许列表中,跳过") return False @@ -56,17 +56,21 @@ class ExpressionReflector: # 检查上一次提问时间 current_time = time.time() time_since_last_ask = current_time - self.last_ask_time - + # 5-10分钟间隔,随机选择 min_interval = 10 * 60 # 5分钟 max_interval = 15 * 60 # 10分钟 interval = random.uniform(min_interval, max_interval) - - logger.info(f"[Expression Reflection] 上次提问时间: {self.last_ask_time:.2f}, 当前时间: {current_time:.2f}, 已过时间: {time_since_last_ask:.2f}秒 ({time_since_last_ask/60:.2f}分钟), 需要间隔: {interval:.2f}秒 ({interval/60:.2f}分钟)") - + + logger.info( + f"[Expression Reflection] 上次提问时间: {self.last_ask_time:.2f}, 当前时间: {current_time:.2f}, 已过时间: {time_since_last_ask:.2f}秒 ({time_since_last_ask / 60:.2f}分钟), 需要间隔: {interval:.2f}秒 ({interval / 60:.2f}分钟)" + ) + if time_since_last_ask < interval: remaining_time = interval - time_since_last_ask - logger.info(f"[Expression Reflection] 距离上次提问时间不足,还需等待 {remaining_time:.2f}秒 ({remaining_time/60:.2f}分钟),跳过") + logger.info( + f"[Expression Reflection] 距离上次提问时间不足,还需等待 {remaining_time:.2f}秒 ({remaining_time / 60:.2f}分钟),跳过" + ) return False # 检查是否已经有针对该 Operator 的 Tracker 在运行 @@ -78,21 +82,22 @@ class ExpressionReflector: # 获取未检查的表达 try: logger.info(f"[Expression Reflection] 查询未检查且未拒绝的表达") - expressions = (Expression - .select() - .where((Expression.checked == False) & (Expression.rejected == False)) - .limit(50)) - + expressions = ( + Expression.select().where((Expression.checked == False) & (Expression.rejected == False)).limit(50) + ) + expr_list = list(expressions) logger.info(f"[Expression Reflection] 找到 {len(expr_list)} 个候选表达") - + if not expr_list: logger.info(f"[Expression Reflection] 没有可用的表达,跳过") return False target_expr: Expression = random.choice(expr_list) - logger.info(f"[Expression Reflection] 随机选择了表达 ID: {target_expr.id}, Situation: {target_expr.situation}, Style: {target_expr.style}") - + logger.info( + f"[Expression Reflection] 随机选择了表达 ID: {target_expr.id}, Situation: {target_expr.situation}, Style: {target_expr.style}" + ) + # 生成询问文本 ask_text = _generate_ask_text(target_expr) if not ask_text: @@ -102,31 +107,33 @@ class ExpressionReflector: logger.info(f"[Expression Reflection] 准备向 Operator {operator_config} 发送提问") # 发送给 Operator await _send_to_operator(operator_config, ask_text, target_expr) - + # 更新上一次提问时间 self.last_ask_time = current_time logger.info(f"[Expression Reflection] 提问成功,已更新上次提问时间为 {current_time:.2f}") - + return True - + except Exception as e: logger.error(f"[Expression Reflection] 检查或提问过程中出错: {e}") import traceback + logger.error(traceback.format_exc()) return False except Exception as e: logger.error(f"[Expression Reflection] 检查或提问过程中出错: {e}") import traceback + logger.error(traceback.format_exc()) return False class ExpressionReflectorManager: """表达反思管理器,管理多个聊天流的表达反思实例""" - + def __init__(self): self.reflectors: Dict[str, ExpressionReflector] = {} - + def get_or_create_reflector(self, chat_id: str) -> ExpressionReflector: """获取或创建指定聊天流的表达反思实例""" if chat_id not in self.reflectors: @@ -141,6 +148,7 @@ expression_reflector_manager = ExpressionReflectorManager() async def _check_tracker_exists(operator_config: str) -> bool: """检查指定 Operator 是否已有活跃的 Tracker""" from src.express.reflect_tracker import reflect_tracker_manager + chat_manager = get_chat_manager() chat_stream = None @@ -150,12 +158,12 @@ async def _check_tracker_exists(operator_config: str) -> bool: platform = parts[0] id_str = parts[1] stream_type = parts[2] - + user_info = None group_info = None - + from maim_message import UserInfo, GroupInfo - + if stream_type == "group": group_info = GroupInfo(group_id=id_str, platform=platform) user_info = UserInfo(user_id="system", user_nickname="System", platform=platform) @@ -203,12 +211,12 @@ async def _send_to_operator(operator_config: str, text: str, expr: Expression): platform = parts[0] id_str = parts[1] stream_type = parts[2] - + user_info = None group_info = None - + from maim_message import UserInfo, GroupInfo - + if stream_type == "group": group_info = GroupInfo(group_id=id_str, platform=platform) user_info = UserInfo(user_id="system", user_nickname="System", platform=platform) @@ -232,20 +240,13 @@ async def _send_to_operator(operator_config: str, text: str, expr: Expression): return stream_id = chat_stream.stream_id - + # 注册 Tracker from src.express.reflect_tracker import ReflectTracker, reflect_tracker_manager - + tracker = ReflectTracker(chat_stream=chat_stream, expression=expr, created_time=time.time()) reflect_tracker_manager.add_tracker(stream_id, tracker) - + # 发送消息 - await send_api.text_to_stream( - text=text, - stream_id=stream_id, - typing=True - ) + await send_api.text_to_stream(text=text, stream_id=stream_id, typing=True) logger.info(f"Sent expression reflect query to operator {operator_config} for expr {expr.id}") - - - diff --git a/src/express/reflect_tracker.py b/src/express/reflect_tracker.py index 7984e299..8973eaf4 100644 --- a/src/express/reflect_tracker.py +++ b/src/express/reflect_tracker.py @@ -17,21 +17,20 @@ if TYPE_CHECKING: logger = get_logger("reflect_tracker") + class ReflectTracker: def __init__(self, chat_stream: ChatStream, expression: Expression, created_time: float): self.chat_stream = chat_stream self.expression = expression self.created_time = created_time # self.message_count = 0 # Replaced by checking message list length - self.last_check_msg_count = 0 + self.last_check_msg_count = 0 self.max_message_count = 30 self.max_duration = 15 * 60 # 15 minutes - + # LLM for judging response - self.judge_model = LLMRequest( - model_set=model_config.model_task_config.utils, request_type="reflect.tracker" - ) - + self.judge_model = LLMRequest(model_set=model_config.model_task_config.utils, request_type="reflect.tracker") + self._init_prompts() def _init_prompts(self): @@ -72,16 +71,16 @@ class ReflectTracker: if time.time() - self.created_time > self.max_duration: logger.info(f"ReflectTracker for expr {self.expression.id} timed out (duration).") return True - + # Fetch messages since creation msg_list = get_raw_msg_by_timestamp_with_chat( chat_id=self.chat_stream.stream_id, timestamp_start=self.created_time, timestamp_end=time.time(), ) - + current_msg_count = len(msg_list) - + # Check message limit if current_msg_count > self.max_message_count: logger.info(f"ReflectTracker for expr {self.expression.id} timed out (message count).") @@ -90,9 +89,9 @@ class ReflectTracker: # If no new messages since last check, skip if current_msg_count <= self.last_check_msg_count: return False - + self.last_check_msg_count = current_msg_count - + # Build context block # Use simple readable format context_block = build_readable_messages( @@ -109,78 +108,83 @@ class ReflectTracker: "reflect_judge_prompt", situation=self.expression.situation, style=self.expression.style, - context_block=context_block + context_block=context_block, ) - + logger.info(f"ReflectTracker LLM Prompt: {prompt}") - + response, _ = await self.judge_model.generate_response_async(prompt, temperature=0.1) - + logger.info(f"ReflectTracker LLM Response: {response}") - + # Parse JSON import json import re from json_repair import repair_json - + json_pattern = r"```json\s*(.*?)\s*```" matches = re.findall(json_pattern, response, re.DOTALL) if not matches: # Try to parse raw response if no code block matches = [response] - + json_obj = json.loads(repair_json(matches[0])) - + judgment = json_obj.get("judgment") - + if judgment == "Approve": self.expression.checked = True self.expression.rejected = False self.expression.save() logger.info(f"Expression {self.expression.id} approved by operator.") return True - + elif judgment == "Reject": self.expression.checked = True corrected_situation = json_obj.get("corrected_situation") corrected_style = json_obj.get("corrected_style") - + # 检查是否有更新 has_update = bool(corrected_situation or corrected_style) - + if corrected_situation: self.expression.situation = corrected_situation if corrected_style: self.expression.style = corrected_style - + # 如果拒绝但未更新,标记为 rejected=1 if not has_update: self.expression.rejected = True else: self.expression.rejected = False - + self.expression.save() - + if has_update: - logger.info(f"Expression {self.expression.id} rejected and updated by operator. New situation: {corrected_situation}, New style: {corrected_style}") + logger.info( + f"Expression {self.expression.id} rejected and updated by operator. New situation: {corrected_situation}, New style: {corrected_style}" + ) else: - logger.info(f"Expression {self.expression.id} rejected but no correction provided, marked as rejected=1.") + logger.info( + f"Expression {self.expression.id} rejected but no correction provided, marked as rejected=1." + ) return True - + elif judgment == "Ignore": logger.info(f"ReflectTracker for expr {self.expression.id} judged as Ignore.") return False - + except Exception as e: logger.error(f"Error in ReflectTracker check: {e}") return False return False + # Global manager for trackers class ReflectTrackerManager: def __init__(self): - self.trackers: Dict[str, ReflectTracker] = {} # chat_id -> tracker + self.trackers: Dict[str, ReflectTracker] = {} # chat_id -> tracker def add_tracker(self, chat_id: str, tracker: ReflectTracker): self.trackers[chat_id] = tracker @@ -192,5 +196,5 @@ class ReflectTrackerManager: if chat_id in self.trackers: del self.trackers[chat_id] -reflect_tracker_manager = ReflectTrackerManager() +reflect_tracker_manager = ReflectTrackerManager() diff --git a/src/hippo_memorizer/chat_history_summarizer.py b/src/hippo_memorizer/chat_history_summarizer.py index 3f1b62e0..840f349d 100644 --- a/src/hippo_memorizer/chat_history_summarizer.py +++ b/src/hippo_memorizer/chat_history_summarizer.py @@ -315,7 +315,9 @@ class ChatHistorySummarizer: before_count = len(self.current_batch.messages) self.current_batch.messages.extend(new_messages) self.current_batch.end_time = current_time - logger.info(f"{self.log_prefix} 更新聊天检查批次: {before_count} -> {len(self.current_batch.messages)} 条消息") + logger.info( + f"{self.log_prefix} 更新聊天检查批次: {before_count} -> {len(self.current_batch.messages)} 条消息" + ) # 更新批次后持久化 self._persist_topic_cache() else: @@ -361,9 +363,7 @@ class ChatHistorySummarizer: else: time_str = f"{time_since_last_check / 3600:.1f}小时" - logger.info( - f"{self.log_prefix} 批次状态检查 | 消息数: {message_count} | 距上次检查: {time_str}" - ) + logger.info(f"{self.log_prefix} 批次状态检查 | 消息数: {message_count} | 距上次检查: {time_str}") # 检查“话题检查”触发条件 should_check = False @@ -413,7 +413,7 @@ class ChatHistorySummarizer: # 说明 bot 没有参与这段对话,不应该记录 bot_user_id = str(global_config.bot.qq_account) has_bot_message = False - + for msg in messages: if msg.user_info.user_id == bot_user_id: has_bot_message = True @@ -426,7 +426,9 @@ class ChatHistorySummarizer: return # 2. 构造编号后的消息字符串和参与者信息 - numbered_lines, index_to_msg_str, index_to_msg_text, index_to_participants = self._build_numbered_messages_for_llm(messages) + numbered_lines, index_to_msg_str, index_to_msg_text, index_to_participants = ( + self._build_numbered_messages_for_llm(messages) + ) # 3. 调用 LLM 识别话题,并得到 topic -> indices existing_topics = list(self.topic_cache.keys()) @@ -588,9 +590,7 @@ class ChatHistorySummarizer: if not numbered_lines: return False, {} - history_topics_block = ( - "\n".join(f"- {t}" for t in existing_topics) if existing_topics else "(当前无历史话题)" - ) + history_topics_block = "\n".join(f"- {t}" for t in existing_topics) if existing_topics else "(当前无历史话题)" messages_block = "\n".join(numbered_lines) prompt = await global_prompt_manager.format_prompt( @@ -607,6 +607,7 @@ class ChatHistorySummarizer: ) import re + logger.info(f"{self.log_prefix} 话题识别LLM Prompt: {prompt}") logger.info(f"{self.log_prefix} 话题识别LLM Response: {response}") @@ -895,4 +896,3 @@ class ChatHistorySummarizer: init_prompt() - diff --git a/src/jargon/jargon_explainer.py b/src/jargon/jargon_explainer.py index 251af098..67a008b5 100644 --- a/src/jargon/jargon_explainer.py +++ b/src/jargon/jargon_explainer.py @@ -44,9 +44,7 @@ class JargonExplainer: request_type="jargon.explain", ) - def match_jargon_from_messages( - self, messages: List[Any] - ) -> List[Dict[str, str]]: + def match_jargon_from_messages(self, messages: List[Any]) -> List[Dict[str, str]]: """ 通过直接匹配数据库中的jargon字符串来提取黑话 @@ -57,7 +55,7 @@ class JargonExplainer: List[Dict[str, str]]: 提取到的黑话列表,每个元素包含content """ start_time = time.time() - + if not messages: return [] @@ -67,8 +65,10 @@ class JargonExplainer: # 跳过机器人自己的消息 if is_bot_message(msg): continue - - msg_text = (getattr(msg, "display_message", None) or getattr(msg, "processed_plain_text", None) or "").strip() + + msg_text = ( + getattr(msg, "display_message", None) or getattr(msg, "processed_plain_text", None) or "" + ).strip() if msg_text: message_texts.append(msg_text) @@ -79,9 +79,7 @@ class JargonExplainer: combined_text = " ".join(message_texts) # 查询所有有meaning的jargon记录 - query = Jargon.select().where( - (Jargon.meaning.is_null(False)) & (Jargon.meaning != "") - ) + query = Jargon.select().where((Jargon.meaning.is_null(False)) & (Jargon.meaning != "")) # 根据all_global配置决定查询逻辑 if global_config.jargon.all_global: @@ -98,7 +96,7 @@ class JargonExplainer: # 执行查询并匹配 matched_jargon: Dict[str, Dict[str, str]] = {} query_time = time.time() - + for jargon in query: content = jargon.content or "" if not content or not content.strip(): @@ -123,13 +121,13 @@ class JargonExplainer: pattern = re.escape(content) # 使用单词边界或中文字符边界来匹配,避免部分匹配 # 对于中文,使用Unicode字符类;对于英文,使用单词边界 - if re.search(r'[\u4e00-\u9fff]', content): + if re.search(r"[\u4e00-\u9fff]", content): # 包含中文,使用更宽松的匹配 search_pattern = pattern else: # 纯英文/数字,使用单词边界 - search_pattern = r'\b' + pattern + r'\b' - + search_pattern = r"\b" + pattern + r"\b" + if re.search(search_pattern, combined_text, re.IGNORECASE): # 找到匹配,记录(去重) if content not in matched_jargon: @@ -139,7 +137,7 @@ class JargonExplainer: total_time = match_time - start_time query_duration = query_time - start_time match_duration = match_time - query_time - + logger.info( f"黑话匹配完成: 查询耗时 {query_duration:.3f}s, 匹配耗时 {match_duration:.3f}s, " f"总耗时 {total_time:.3f}s, 匹配到 {len(matched_jargon)} 个黑话" @@ -147,9 +145,7 @@ class JargonExplainer: return list(matched_jargon.values()) - async def explain_jargon( - self, messages: List[Any], chat_context: str - ) -> Optional[str]: + async def explain_jargon(self, messages: List[Any], chat_context: str) -> Optional[str]: """ 解释上下文中的黑话 @@ -183,7 +179,7 @@ class JargonExplainer: jargon_explanations: List[str] = [] for entry in jargon_list: content = entry["content"] - + # 根据是否开启全局黑话,决定查询方式 if global_config.jargon.all_global: # 开启全局黑话:查询所有is_global=True的记录 @@ -239,9 +235,7 @@ class JargonExplainer: return summary -async def explain_jargon_in_context( - chat_id: str, messages: List[Any], chat_context: str -) -> Optional[str]: +async def explain_jargon_in_context(chat_id: str, messages: List[Any], chat_context: str) -> Optional[str]: """ 解释上下文中的黑话(便捷函数) @@ -255,4 +249,3 @@ async def explain_jargon_in_context( """ explainer = JargonExplainer(chat_id) return await explainer.explain_jargon(messages, chat_context) - diff --git a/src/jargon/jargon_miner.py b/src/jargon/jargon_miner.py index 0e25af57..77cb15ce 100644 --- a/src/jargon/jargon_miner.py +++ b/src/jargon/jargon_miner.py @@ -17,20 +17,18 @@ from src.chat.utils.chat_message_builder import ( ) from src.chat.utils.prompt_builder import Prompt, global_prompt_manager from src.jargon.jargon_utils import ( - is_bot_message, - build_context_paragraph, - contains_bot_self_name, - parse_chat_id_list, + is_bot_message, + build_context_paragraph, + contains_bot_self_name, + parse_chat_id_list, chat_id_list_contains, - update_chat_id_list + update_chat_id_list, ) logger = get_logger("jargon") - - def _init_prompt() -> None: prompt_str = """ **聊天内容,其中的{bot_name}的发言内容是你自己的发言,[msg_id] 是消息ID** @@ -126,7 +124,6 @@ _init_prompt() _init_inference_prompts() - def _should_infer_meaning(jargon_obj: Jargon) -> bool: """ 判断是否需要进行含义推断 @@ -211,7 +208,9 @@ class JargonMiner: processed_pairs = set() for idx, msg in enumerate(messages): - msg_text = (getattr(msg, "display_message", None) or getattr(msg, "processed_plain_text", None) or "").strip() + msg_text = ( + getattr(msg, "display_message", None) or getattr(msg, "processed_plain_text", None) or "" + ).strip() if not msg_text or is_bot_message(msg): continue @@ -270,7 +269,7 @@ class JargonMiner: prompt1 = await global_prompt_manager.format_prompt( "jargon_inference_with_context_prompt", content=content, - bot_name = global_config.bot.nickname, + bot_name=global_config.bot.nickname, raw_content_list=raw_content_text, ) @@ -588,7 +587,6 @@ class JargonMiner: content = entry["content"] raw_content_list = entry["raw_content"] # 已经是列表 - try: # 查询所有content匹配的记录 query = Jargon.select().where(Jargon.content == content) @@ -782,15 +780,15 @@ def search_jargon( # 如果记录是is_global=True,或者chat_id列表包含目标chat_id,则包含 if not jargon.is_global and not chat_id_list_contains(chat_id_list, chat_id): continue - + # 只返回有meaning的记录 if not jargon.meaning or jargon.meaning.strip() == "": continue - + results.append({"content": jargon.content or "", "meaning": jargon.meaning or ""}) - + # 达到限制数量后停止 if len(results) >= limit: break - return results \ No newline at end of file + return results diff --git a/src/jargon/jargon_utils.py b/src/jargon/jargon_utils.py index f17889f4..56fe13ad 100644 --- a/src/jargon/jargon_utils.py +++ b/src/jargon/jargon_utils.py @@ -13,19 +13,20 @@ from src.chat.utils.utils import parse_platform_accounts logger = get_logger("jargon") + def parse_chat_id_list(chat_id_value: Any) -> List[List[Any]]: """ 解析chat_id字段,兼容旧格式(字符串)和新格式(JSON列表) - + Args: chat_id_value: 可能是字符串(旧格式)或JSON字符串(新格式) - + Returns: List[List[Any]]: 格式为 [[chat_id, count], ...] 的列表 """ if not chat_id_value: return [] - + # 如果是字符串,尝试解析为JSON if isinstance(chat_id_value, str): # 尝试解析JSON @@ -54,12 +55,12 @@ def parse_chat_id_list(chat_id_value: Any) -> List[List[Any]]: def update_chat_id_list(chat_id_list: List[List[Any]], target_chat_id: str, increment: int = 1) -> List[List[Any]]: """ 更新chat_id列表,如果target_chat_id已存在则增加计数,否则添加新条目 - + Args: chat_id_list: 当前的chat_id列表,格式为 [[chat_id, count], ...] target_chat_id: 要更新或添加的chat_id increment: 增加的计数,默认为1 - + Returns: List[List[Any]]: 更新后的chat_id列表 """ @@ -74,22 +75,22 @@ def update_chat_id_list(chat_id_list: List[List[Any]], target_chat_id: str, incr item.append(increment) found = True break - + if not found: # 未找到,添加新条目 chat_id_list.append([target_chat_id, increment]) - + return chat_id_list def chat_id_list_contains(chat_id_list: List[List[Any]], target_chat_id: str) -> bool: """ 检查chat_id列表中是否包含指定的chat_id - + Args: chat_id_list: chat_id列表,格式为 [[chat_id, count], ...] target_chat_id: 要查找的chat_id - + Returns: bool: 如果包含则返回True """ @@ -168,10 +169,7 @@ def is_bot_message(msg: Any) -> bool: .strip() .lower() ) - user_id = ( - str(getattr(msg, "user_id", "") or getattr(getattr(msg, "user_info", None), "user_id", "") or "") - .strip() - ) + user_id = str(getattr(msg, "user_id", "") or getattr(getattr(msg, "user_info", None), "user_id", "") or "").strip() if not platform or not user_id: return False @@ -196,4 +194,4 @@ def is_bot_message(msg: Any) -> bool: bot_accounts[plat] = account bot_account = bot_accounts.get(platform) - return bool(bot_account and user_id == bot_account) \ No newline at end of file + return bool(bot_account and user_id == bot_account) diff --git a/src/llm_models/utils_model.py b/src/llm_models/utils_model.py index 74bbffaf..4f1725fd 100644 --- a/src/llm_models/utils_model.py +++ b/src/llm_models/utils_model.py @@ -338,8 +338,10 @@ class LLMRequest: if e.__cause__: original_error_type = type(e.__cause__).__name__ original_error_msg = str(e.__cause__) - original_error_info = f"\n 底层异常类型: {original_error_type}\n 底层异常信息: {original_error_msg}" - + original_error_info = ( + f"\n 底层异常类型: {original_error_type}\n 底层异常信息: {original_error_msg}" + ) + retry_remain -= 1 if retry_remain <= 0: logger.error(f"模型 '{model_info.name}' 在网络错误重试用尽后仍然失败。{original_error_info}") diff --git a/src/main.py b/src/main.py index 02702f2c..23e34d61 100644 --- a/src/main.py +++ b/src/main.py @@ -56,7 +56,7 @@ class MainSystem: from src.webui.webui_server import get_webui_server self.webui_server = get_webui_server() - + if webui_mode == "development": logger.info("📝 WebUI 开发模式已启用") logger.info("🌐 后端 API 将运行在 http://0.0.0.0:8001") @@ -66,7 +66,7 @@ class MainSystem: logger.info("✅ WebUI 生产模式已启用") logger.info(f"🌐 WebUI 将运行在 http://0.0.0.0:8001") logger.info("💡 请确保已构建前端: cd MaiBot-Dashboard && bun run build") - + except Exception as e: logger.error(f"❌ 初始化 WebUI 服务器失败: {e}") diff --git a/src/memory_system/memory_retrieval.py b/src/memory_system/memory_retrieval.py index 5820c206..a4de5f26 100644 --- a/src/memory_system/memory_retrieval.py +++ b/src/memory_system/memory_retrieval.py @@ -296,7 +296,6 @@ def _match_jargon_from_text(chat_text: str, chat_id: str) -> List[str]: if not content: continue - if not global_config.jargon.all_global and not jargon.is_global: chat_id_list = parse_chat_id_list(jargon.chat_id) if not chat_id_list_contains(chat_id_list, chat_id): @@ -586,9 +585,7 @@ async def _react_agent_solve_question( step["actions"].append({"action_type": "found_answer", "action_params": {"answer": found_answer_content}}) step["observations"] = ["从LLM输出内容中检测到found_answer"] thinking_steps.append(step) - logger.info( - f"ReAct Agent 第 {iteration + 1} 次迭代 找到关于问题{question}的答案: {found_answer_content}" - ) + logger.info(f"ReAct Agent 第 {iteration + 1} 次迭代 找到关于问题{question}的答案: {found_answer_content}") return True, found_answer_content, thinking_steps, False if not_enough_info_reason: @@ -1016,9 +1013,7 @@ async def build_memory_retrieval_prompt( if question_results: retrieved_memory = "\n\n".join(question_results) - logger.info( - f"记忆检索成功,耗时: {(end_time - start_time):.3f}秒,包含 {len(question_results)} 条记忆" - ) + logger.info(f"记忆检索成功,耗时: {(end_time - start_time):.3f}秒,包含 {len(question_results)} 条记忆") return f"你回忆起了以下信息:\n{retrieved_memory}\n如果与回复内容相关,可以参考这些回忆的信息。\n" else: logger.debug("所有问题均未找到答案") diff --git a/src/memory_system/retrieval_tools/query_chat_history.py b/src/memory_system/retrieval_tools/query_chat_history.py index f5216de9..d7131505 100644 --- a/src/memory_system/retrieval_tools/query_chat_history.py +++ b/src/memory_system/retrieval_tools/query_chat_history.py @@ -54,7 +54,9 @@ async def search_chat_history( if record.participants: try: participants_data = ( - json.loads(record.participants) if isinstance(record.participants, str) else record.participants + json.loads(record.participants) + if isinstance(record.participants, str) + else record.participants ) if isinstance(participants_data, list): participants_list = [str(p).lower() for p in participants_data] @@ -156,9 +158,7 @@ async def search_chat_history( # 添加关键词 if record.keywords: try: - keywords_data = ( - json.loads(record.keywords) if isinstance(record.keywords, str) else record.keywords - ) + keywords_data = json.loads(record.keywords) if isinstance(record.keywords, str) else record.keywords if isinstance(keywords_data, list) and keywords_data: keywords_str = "、".join([str(k) for k in keywords_data]) result_parts.append(f"关键词:{keywords_str}") @@ -208,9 +208,7 @@ async def get_chat_history_detail(chat_id: str, memory_ids: str) -> str: return "未提供有效的记忆ID" # 查询记录 - query = ChatHistory.select().where( - (ChatHistory.chat_id == chat_id) & (ChatHistory.id.in_(id_list)) - ) + query = ChatHistory.select().where((ChatHistory.chat_id == chat_id) & (ChatHistory.id.in_(id_list))) records = list(query.order_by(ChatHistory.start_time.desc())) if not records: @@ -256,9 +254,7 @@ async def get_chat_history_detail(chat_id: str, memory_ids: str) -> str: # 添加关键词 if record.keywords: try: - keywords_data = ( - json.loads(record.keywords) if isinstance(record.keywords, str) else record.keywords - ) + keywords_data = json.loads(record.keywords) if isinstance(record.keywords, str) else record.keywords if isinstance(keywords_data, list) and keywords_data: keywords_str = "、".join([str(k) for k in keywords_data]) result_parts.append(f"关键词:{keywords_str}") diff --git a/src/plugin_system/base/config_types.py b/src/plugin_system/base/config_types.py index ef0f656c..5979ca54 100644 --- a/src/plugin_system/base/config_types.py +++ b/src/plugin_system/base/config_types.py @@ -12,12 +12,12 @@ from dataclasses import dataclass, field class ConfigField: """ 配置字段定义 - + 用于定义插件配置项的元数据,支持类型验证、UI 渲染等功能。 - + 基础示例: ConfigField(type=str, default="", description="API密钥") - + 完整示例: ConfigField( type=str, @@ -73,9 +73,9 @@ class ConfigField: def get_ui_type(self) -> str: """ 获取 UI 控件类型 - + 如果指定了 input_type 则直接返回,否则根据 type 和 choices 自动推断。 - + Returns: 控件类型字符串 """ @@ -103,7 +103,7 @@ class ConfigField: def to_dict(self) -> Dict[str, Any]: """ 转换为可序列化的字典(用于 API 传输) - + Returns: 包含所有配置信息的字典 """ @@ -139,9 +139,9 @@ class ConfigField: class ConfigSection: """ 配置节定义 - + 用于描述配置文件中一个 section 的元数据。 - + 示例: ConfigSection( title="API配置", @@ -150,6 +150,7 @@ class ConfigSection: order=1 ) """ + title: str # 显示标题 description: Optional[str] = None # 详细描述 icon: Optional[str] = None # 图标名称 @@ -171,9 +172,9 @@ class ConfigSection: class ConfigTab: """ 配置标签页定义 - + 用于将多个 section 组织到一个标签页中。 - + 示例: ConfigTab( id="general", @@ -182,6 +183,7 @@ class ConfigTab: sections=["plugin", "api"] ) """ + id: str # 标签页 ID title: str # 显示标题 sections: List[str] = field(default_factory=list) # 包含的 section 名称列表 @@ -201,18 +203,18 @@ class ConfigTab: } -@dataclass +@dataclass class ConfigLayout: """ 配置页面布局定义 - + 用于定义插件配置页面的整体布局结构。 - + 布局类型: - "auto": 自动布局,sections 作为折叠面板显示 - "tabs": 标签页布局 - "pages": 分页布局(左侧导航 + 右侧内容) - + 简单示例(标签页布局): ConfigLayout( type="tabs", @@ -222,9 +224,10 @@ class ConfigLayout: ] ) """ + type: str = "auto" # 布局类型: auto, tabs, pages tabs: List[ConfigTab] = field(default_factory=list) # 标签页列表 - + def to_dict(self) -> Dict[str, Any]: """转换为可序列化的字典""" return { @@ -234,37 +237,27 @@ class ConfigLayout: def section_meta( - title: str, - description: Optional[str] = None, - icon: Optional[str] = None, - collapsed: bool = False, - order: int = 0 + title: str, description: Optional[str] = None, icon: Optional[str] = None, collapsed: bool = False, order: int = 0 ) -> Union[str, ConfigSection]: """ 便捷函数:创建 section 元数据 - + 可以在 config_section_descriptions 中使用,提供比纯字符串更丰富的信息。 - + Args: title: 显示标题 description: 详细描述 icon: 图标名称 collapsed: 默认是否折叠 order: 排序权重 - + Returns: ConfigSection 实例 - + 示例: config_section_descriptions = { "api": section_meta("API配置", icon="cloud", order=1), "debug": section_meta("调试设置", collapsed=True, order=99), } """ - return ConfigSection( - title=title, - description=description, - icon=icon, - collapsed=collapsed, - order=order - ) + return ConfigSection(title=title, description=description, icon=icon, collapsed=collapsed, order=order) diff --git a/src/plugin_system/base/plugin_base.py b/src/plugin_system/base/plugin_base.py index 1fe99b8a..30d33ec2 100644 --- a/src/plugin_system/base/plugin_base.py +++ b/src/plugin_system/base/plugin_base.py @@ -574,14 +574,14 @@ class PluginBase(ABC): def get_webui_config_schema(self) -> Dict[str, Any]: """ 获取 WebUI 配置 Schema - + 返回完整的配置 schema,包含: - 插件基本信息 - 所有 section 及其字段定义 - 布局配置 - + 用于 WebUI 动态生成配置表单。 - + Returns: Dict: 完整的配置 schema """ @@ -596,12 +596,12 @@ class PluginBase(ABC): "sections": {}, "layout": None, } - + # 处理 sections for section_name, fields in self.config_schema.items(): if not isinstance(fields, dict): continue - + section_data = { "name": section_name, "title": section_name, @@ -611,7 +611,7 @@ class PluginBase(ABC): "order": 0, "fields": {}, } - + # 获取 section 元数据 section_meta = self.config_section_descriptions.get(section_name) if section_meta: @@ -625,16 +625,16 @@ class PluginBase(ABC): section_data["order"] = section_meta.order elif isinstance(section_meta, dict): section_data.update(section_meta) - + # 处理字段 for field_name, field_def in fields.items(): if isinstance(field_def, ConfigField): field_data = field_def.to_dict() field_data["name"] = field_name section_data["fields"][field_name] = field_data - + schema["sections"][section_name] = section_data - + # 处理布局 if self.config_layout: schema["layout"] = self.config_layout.to_dict() @@ -644,15 +644,15 @@ class PluginBase(ABC): "type": "auto", "tabs": [], } - + return schema def get_current_config_values(self) -> Dict[str, Any]: """ 获取当前配置值 - + 返回插件当前的配置值(已从配置文件加载)。 - + Returns: Dict: 当前配置值 """ diff --git a/src/webui/chat_routes.py b/src/webui/chat_routes.py index 0bab8cae..f0403d09 100644 --- a/src/webui/chat_routes.py +++ b/src/webui/chat_routes.py @@ -25,6 +25,7 @@ WEBUI_USER_ID_PREFIX = "webui_user_" class ChatHistoryMessage(BaseModel): """聊天历史消息""" + id: str type: str # 'user' | 'bot' | 'system' content: str @@ -36,17 +37,17 @@ class ChatHistoryMessage(BaseModel): class ChatHistoryManager: """聊天历史管理器 - 使用 SQLite 数据库存储""" - + def __init__(self, max_messages: int = 200): self.max_messages = max_messages - + def _message_to_dict(self, msg: Messages) -> Dict[str, Any]: """将数据库消息转换为前端格式""" # 判断是否是机器人消息 # WebUI 用户的 user_id 以 "webui_" 开头,其他都是机器人消息 user_id = msg.user_id or "" is_bot = not user_id.startswith("webui_") and not user_id.startswith(WEBUI_USER_ID_PREFIX) - + return { "id": msg.message_id, "type": "bot" if is_bot else "user", @@ -56,7 +57,7 @@ class ChatHistoryManager: "sender_id": "bot" if is_bot else user_id, "is_bot": is_bot, } - + def get_history(self, limit: int = 50) -> List[Dict[str, Any]]: """从数据库获取最近的历史记录""" try: @@ -67,25 +68,21 @@ class ChatHistoryManager: .order_by(Messages.time.desc()) .limit(limit) ) - + # 转换为列表并反转(使最旧的消息在前) result = [self._message_to_dict(msg) for msg in messages] result.reverse() - + logger.debug(f"从数据库加载了 {len(result)} 条聊天记录") return result except Exception as e: logger.error(f"从数据库加载聊天记录失败: {e}") return [] - + def clear_history(self) -> int: """清空 WebUI 聊天历史记录""" try: - deleted = ( - Messages.delete() - .where(Messages.chat_info_group_id == WEBUI_CHAT_GROUP_ID) - .execute() - ) + deleted = Messages.delete().where(Messages.chat_info_group_id == WEBUI_CHAT_GROUP_ID).execute() logger.info(f"已清空 {deleted} 条 WebUI 聊天记录") return deleted except Exception as e: @@ -100,31 +97,31 @@ chat_history = ChatHistoryManager() # 存储 WebSocket 连接 class ChatConnectionManager: """聊天连接管理器""" - + def __init__(self): self.active_connections: Dict[str, WebSocket] = {} self.user_sessions: Dict[str, str] = {} # user_id -> session_id 映射 - + async def connect(self, websocket: WebSocket, session_id: str, user_id: str): await websocket.accept() self.active_connections[session_id] = websocket self.user_sessions[user_id] = session_id logger.info(f"WebUI 聊天会话已连接: session={session_id}, user={user_id}") - + def disconnect(self, session_id: str, user_id: str): if session_id in self.active_connections: del self.active_connections[session_id] if user_id in self.user_sessions and self.user_sessions[user_id] == session_id: del self.user_sessions[user_id] logger.info(f"WebUI 聊天会话已断开: session={session_id}") - + async def send_message(self, session_id: str, message: dict): if session_id in self.active_connections: try: await self.active_connections[session_id].send_json(message) except Exception as e: logger.error(f"发送消息失败: {e}") - + async def broadcast(self, message: dict): """广播消息给所有连接""" for session_id in list(self.active_connections.keys()): @@ -135,16 +132,12 @@ chat_manager = ChatConnectionManager() def create_message_data( - content: str, - user_id: str, - user_name: str, - message_id: Optional[str] = None, - is_at_bot: bool = True + content: str, user_id: str, user_name: str, message_id: Optional[str] = None, is_at_bot: bool = True ) -> Dict[str, Any]: """创建符合麦麦消息格式的消息数据""" if message_id is None: message_id = str(uuid.uuid4()) - + return { "message_info": { "platform": WEBUI_CHAT_PLATFORM, @@ -163,7 +156,7 @@ def create_message_data( }, "additional_config": { "at_bot": is_at_bot, - } + }, }, "message_segment": { "type": "seglist", @@ -175,8 +168,8 @@ def create_message_data( { "type": "mention_bot", "data": "1.0", - } - ] + }, + ], }, "raw_message": content, "processed_plain_text": content, @@ -186,10 +179,10 @@ def create_message_data( @router.get("/history") async def get_chat_history( limit: int = Query(default=50, ge=1, le=200), - user_id: Optional[str] = Query(default=None) # 保留参数兼容性,但不用于过滤 + user_id: Optional[str] = Query(default=None), # 保留参数兼容性,但不用于过滤 ): """获取聊天历史记录 - + 所有 WebUI 用户共享同一个聊天室,因此返回所有历史记录 """ history = chat_history.get_history(limit) @@ -217,76 +210,87 @@ async def websocket_chat( user_name: Optional[str] = Query(default="WebUI用户"), ): """WebSocket 聊天端点 - + Args: user_id: 用户唯一标识(由前端生成并持久化) user_name: 用户显示昵称(可修改) """ # 生成会话 ID(每次连接都是新的) session_id = str(uuid.uuid4()) - + # 如果没有提供 user_id,生成一个新的 if not user_id: user_id = f"{WEBUI_USER_ID_PREFIX}{uuid.uuid4().hex[:16]}" elif not user_id.startswith(WEBUI_USER_ID_PREFIX): # 确保 user_id 有正确的前缀 user_id = f"{WEBUI_USER_ID_PREFIX}{user_id}" - + await chat_manager.connect(websocket, session_id, user_id) - + try: # 发送会话信息(包含用户 ID,前端需要保存) - await chat_manager.send_message(session_id, { - "type": "session_info", - "session_id": session_id, - "user_id": user_id, - "user_name": user_name, - "bot_name": global_config.bot.nickname, - }) - + await chat_manager.send_message( + session_id, + { + "type": "session_info", + "session_id": session_id, + "user_id": user_id, + "user_name": user_name, + "bot_name": global_config.bot.nickname, + }, + ) + # 发送历史记录 history = chat_history.get_history(50) if history: - await chat_manager.send_message(session_id, { - "type": "history", - "messages": history, - }) - + await chat_manager.send_message( + session_id, + { + "type": "history", + "messages": history, + }, + ) + # 发送欢迎消息(不保存到历史) - await chat_manager.send_message(session_id, { - "type": "system", - "content": f"已连接到本地聊天室,可以开始与 {global_config.bot.nickname} 对话了!", - "timestamp": time.time(), - }) - + await chat_manager.send_message( + session_id, + { + "type": "system", + "content": f"已连接到本地聊天室,可以开始与 {global_config.bot.nickname} 对话了!", + "timestamp": time.time(), + }, + ) + while True: data = await websocket.receive_json() - + if data.get("type") == "message": content = data.get("content", "").strip() if not content: continue - + # 用户可以更新昵称 current_user_name = data.get("user_name", user_name) - + message_id = str(uuid.uuid4()) timestamp = time.time() - + # 广播用户消息给所有连接(包括发送者) # 注意:用户消息会在 chat_bot.message_process 中自动保存到数据库 - await chat_manager.broadcast({ - "type": "user_message", - "content": content, - "message_id": message_id, - "timestamp": timestamp, - "sender": { - "name": current_user_name, - "user_id": user_id, - "is_bot": False, + await chat_manager.broadcast( + { + "type": "user_message", + "content": content, + "message_id": message_id, + "timestamp": timestamp, + "sender": { + "name": current_user_name, + "user_id": user_id, + "is_bot": False, + }, } - }) - + ) + # 创建麦麦消息格式 message_data = create_message_data( content=content, @@ -295,46 +299,59 @@ async def websocket_chat( message_id=message_id, is_at_bot=True, ) - + try: # 显示正在输入状态 - await chat_manager.broadcast({ - "type": "typing", - "is_typing": True, - }) - + await chat_manager.broadcast( + { + "type": "typing", + "is_typing": True, + } + ) + # 调用麦麦的消息处理 await chat_bot.message_process(message_data) - + except Exception as e: logger.error(f"处理消息时出错: {e}") - await chat_manager.send_message(session_id, { - "type": "error", - "content": f"处理消息时出错: {str(e)}", - "timestamp": time.time(), - }) + await chat_manager.send_message( + session_id, + { + "type": "error", + "content": f"处理消息时出错: {str(e)}", + "timestamp": time.time(), + }, + ) finally: - await chat_manager.broadcast({ - "type": "typing", - "is_typing": False, - }) - + await chat_manager.broadcast( + { + "type": "typing", + "is_typing": False, + } + ) + elif data.get("type") == "ping": - await chat_manager.send_message(session_id, { - "type": "pong", - "timestamp": time.time(), - }) - + await chat_manager.send_message( + session_id, + { + "type": "pong", + "timestamp": time.time(), + }, + ) + elif data.get("type") == "update_nickname": # 允许用户更新昵称 if new_name := data.get("user_name", "").strip(): current_user_name = new_name - await chat_manager.send_message(session_id, { - "type": "nickname_updated", - "user_name": current_user_name, - "timestamp": time.time(), - }) - + await chat_manager.send_message( + session_id, + { + "type": "nickname_updated", + "user_name": current_user_name, + "timestamp": time.time(), + }, + ) + except WebSocketDisconnect: logger.info(f"WebSocket 断开: session={session_id}, user={user_id}") except Exception as e: @@ -356,7 +373,7 @@ async def get_chat_info(): def get_webui_chat_broadcaster() -> tuple: """获取 WebUI 聊天广播器,供外部模块使用 - + Returns: (chat_manager, WEBUI_CHAT_PLATFORM) 元组 """ diff --git a/src/webui/config_routes.py b/src/webui/config_routes.py index 392f2d98..f26bcb09 100644 --- a/src/webui/config_routes.py +++ b/src/webui/config_routes.py @@ -5,7 +5,7 @@ import os import tomlkit from fastapi import APIRouter, HTTPException, Body -from typing import Any +from typing import Any, Annotated from src.common.logger import get_logger from src.config.config import Config, APIAdapterConfig, CONFIG_DIR, PROJECT_ROOT @@ -41,6 +41,12 @@ from src.webui.config_schema import ConfigSchemaGenerator logger = get_logger("webui") +# 模块级别的类型别名(解决 B008 ruff 错误) +ConfigBody = Annotated[dict[str, Any], Body()] +SectionBody = Annotated[Any, Body()] +RawContentBody = Annotated[str, Body(embed=True)] +PathBody = Annotated[dict[str, str], Body()] + router = APIRouter(prefix="/config", tags=["config"]) @@ -90,7 +96,7 @@ async def get_bot_config_schema(): return {"success": True, "schema": schema} except Exception as e: logger.error(f"获取配置架构失败: {e}") - raise HTTPException(status_code=500, detail=f"获取配置架构失败: {str(e)}") + raise HTTPException(status_code=500, detail=f"获取配置架构失败: {str(e)}") from e @router.get("/schema/model") @@ -101,7 +107,7 @@ async def get_model_config_schema(): return {"success": True, "schema": schema} except Exception as e: logger.error(f"获取模型配置架构失败: {e}") - raise HTTPException(status_code=500, detail=f"获取模型配置架构失败: {str(e)}") + raise HTTPException(status_code=500, detail=f"获取模型配置架构失败: {str(e)}") from e # ===== 子配置架构获取接口 ===== @@ -174,7 +180,7 @@ async def get_config_section_schema(section_name: str): return {"success": True, "schema": schema} except Exception as e: logger.error(f"获取配置节架构失败: {e}") - raise HTTPException(status_code=500, detail=f"获取配置节架构失败: {str(e)}") + raise HTTPException(status_code=500, detail=f"获取配置节架构失败: {str(e)}") from e # ===== 配置读取接口 ===== @@ -196,7 +202,7 @@ async def get_bot_config(): raise except Exception as e: logger.error(f"读取配置文件失败: {e}") - raise HTTPException(status_code=500, detail=f"读取配置文件失败: {str(e)}") + raise HTTPException(status_code=500, detail=f"读取配置文件失败: {str(e)}") from e @router.get("/model") @@ -215,21 +221,21 @@ async def get_model_config(): raise except Exception as e: logger.error(f"读取配置文件失败: {e}") - raise HTTPException(status_code=500, detail=f"读取配置文件失败: {str(e)}") + raise HTTPException(status_code=500, detail=f"读取配置文件失败: {str(e)}") from e # ===== 配置更新接口 ===== @router.post("/bot") -async def update_bot_config(config_data: dict[str, Any] = Body(...)): +async def update_bot_config(config_data: ConfigBody): """更新麦麦主程序配置""" try: # 验证配置数据 try: Config.from_dict(config_data) except Exception as e: - raise HTTPException(status_code=400, detail=f"配置数据验证失败: {str(e)}") + raise HTTPException(status_code=400, detail=f"配置数据验证失败: {str(e)}") from e # 保存配置文件 config_path = os.path.join(CONFIG_DIR, "bot_config.toml") @@ -242,18 +248,18 @@ async def update_bot_config(config_data: dict[str, Any] = Body(...)): raise except Exception as e: logger.error(f"保存配置文件失败: {e}") - raise HTTPException(status_code=500, detail=f"保存配置文件失败: {str(e)}") + raise HTTPException(status_code=500, detail=f"保存配置文件失败: {str(e)}") from e @router.post("/model") -async def update_model_config(config_data: dict[str, Any] = Body(...)): +async def update_model_config(config_data: ConfigBody): """更新模型配置""" try: # 验证配置数据 try: APIAdapterConfig.from_dict(config_data) except Exception as e: - raise HTTPException(status_code=400, detail=f"配置数据验证失败: {str(e)}") + raise HTTPException(status_code=400, detail=f"配置数据验证失败: {str(e)}") from e # 保存配置文件 config_path = os.path.join(CONFIG_DIR, "model_config.toml") @@ -266,14 +272,14 @@ async def update_model_config(config_data: dict[str, Any] = Body(...)): raise except Exception as e: logger.error(f"保存配置文件失败: {e}") - raise HTTPException(status_code=500, detail=f"保存配置文件失败: {str(e)}") + raise HTTPException(status_code=500, detail=f"保存配置文件失败: {str(e)}") from e # ===== 配置节更新接口 ===== @router.post("/bot/section/{section_name}") -async def update_bot_config_section(section_name: str, section_data: Any = Body(...)): +async def update_bot_config_section(section_name: str, section_data: SectionBody): """更新麦麦主程序配置的指定节(保留注释和格式)""" try: # 读取现有配置 @@ -304,7 +310,7 @@ async def update_bot_config_section(section_name: str, section_data: Any = Body( try: Config.from_dict(config_data) except Exception as e: - raise HTTPException(status_code=400, detail=f"配置数据验证失败: {str(e)}") + raise HTTPException(status_code=400, detail=f"配置数据验证失败: {str(e)}") from e # 保存配置(tomlkit.dump 会保留注释) with open(config_path, "w", encoding="utf-8") as f: @@ -316,7 +322,7 @@ async def update_bot_config_section(section_name: str, section_data: Any = Body( raise except Exception as e: logger.error(f"更新配置节失败: {e}") - raise HTTPException(status_code=500, detail=f"更新配置节失败: {str(e)}") + raise HTTPException(status_code=500, detail=f"更新配置节失败: {str(e)}") from e # ===== 原始 TOML 文件操作接口 ===== @@ -338,24 +344,24 @@ async def get_bot_config_raw(): raise except Exception as e: logger.error(f"读取配置文件失败: {e}") - raise HTTPException(status_code=500, detail=f"读取配置文件失败: {str(e)}") + raise HTTPException(status_code=500, detail=f"读取配置文件失败: {str(e)}") from e @router.post("/bot/raw") -async def update_bot_config_raw(raw_content: str = Body(..., embed=True)): +async def update_bot_config_raw(raw_content: RawContentBody): """更新麦麦主程序配置(直接保存原始 TOML 内容,会先验证格式)""" try: # 验证 TOML 格式 try: config_data = tomlkit.loads(raw_content) except Exception as e: - raise HTTPException(status_code=400, detail=f"TOML 格式错误: {str(e)}") + raise HTTPException(status_code=400, detail=f"TOML 格式错误: {str(e)}") from e # 验证配置数据结构 try: Config.from_dict(config_data) except Exception as e: - raise HTTPException(status_code=400, detail=f"配置数据验证失败: {str(e)}") + raise HTTPException(status_code=400, detail=f"配置数据验证失败: {str(e)}") from e # 保存配置文件 config_path = os.path.join(CONFIG_DIR, "bot_config.toml") @@ -368,11 +374,11 @@ async def update_bot_config_raw(raw_content: str = Body(..., embed=True)): raise except Exception as e: logger.error(f"保存配置文件失败: {e}") - raise HTTPException(status_code=500, detail=f"保存配置文件失败: {str(e)}") + raise HTTPException(status_code=500, detail=f"保存配置文件失败: {str(e)}") from e @router.post("/model/section/{section_name}") -async def update_model_config_section(section_name: str, section_data: Any = Body(...)): +async def update_model_config_section(section_name: str, section_data: SectionBody): """更新模型配置的指定节(保留注释和格式)""" try: # 读取现有配置 @@ -403,7 +409,7 @@ async def update_model_config_section(section_name: str, section_data: Any = Bod try: APIAdapterConfig.from_dict(config_data) except Exception as e: - raise HTTPException(status_code=400, detail=f"配置数据验证失败: {str(e)}") + raise HTTPException(status_code=400, detail=f"配置数据验证失败: {str(e)}") from e # 保存配置(tomlkit.dump 会保留注释) with open(config_path, "w", encoding="utf-8") as f: @@ -415,7 +421,7 @@ async def update_model_config_section(section_name: str, section_data: Any = Bod raise except Exception as e: logger.error(f"更新配置节失败: {e}") - raise HTTPException(status_code=500, detail=f"更新配置节失败: {str(e)}") + raise HTTPException(status_code=500, detail=f"更新配置节失败: {str(e)}") from e # ===== 适配器配置管理接口 ===== @@ -425,11 +431,11 @@ def _normalize_adapter_path(path: str) -> str: """将路径转换为绝对路径(如果是相对路径,则相对于项目根目录)""" if not path: return path - + # 如果已经是绝对路径,直接返回 if os.path.isabs(path): return path - + # 相对路径,转换为相对于项目根目录的绝对路径 return os.path.normpath(os.path.join(PROJECT_ROOT, path)) @@ -438,17 +444,17 @@ def _to_relative_path(path: str) -> str: """尝试将绝对路径转换为相对于项目根目录的相对路径,如果无法转换则返回原路径""" if not path or not os.path.isabs(path): return path - + try: # 尝试获取相对路径 rel_path = os.path.relpath(path, PROJECT_ROOT) # 如果相对路径不是以 .. 开头(说明文件在项目目录内),则返回相对路径 - if not rel_path.startswith('..'): + if not rel_path.startswith(".."): return rel_path except (ValueError, TypeError): # 在 Windows 上,如果路径在不同驱动器,relpath 会抛出 ValueError pass - + # 无法转换为相对路径,返回绝对路径 return path @@ -463,6 +469,7 @@ async def get_adapter_config_path(): return {"success": True, "path": None} import json + with open(webui_data_path, "r", encoding="utf-8") as f: webui_data = json.load(f) @@ -472,10 +479,11 @@ async def get_adapter_config_path(): # 将路径规范化为绝对路径 abs_path = _normalize_adapter_path(adapter_config_path) - + # 检查文件是否存在并返回最后修改时间 if os.path.exists(abs_path): import datetime + mtime = os.path.getmtime(abs_path) last_modified = datetime.datetime.fromtimestamp(mtime).isoformat() # 返回相对路径(如果可能) @@ -487,11 +495,11 @@ async def get_adapter_config_path(): except Exception as e: logger.error(f"获取适配器配置路径失败: {e}") - raise HTTPException(status_code=500, detail=f"获取配置路径失败: {str(e)}") + raise HTTPException(status_code=500, detail=f"获取配置路径失败: {str(e)}") from e @router.post("/adapter-config/path") -async def save_adapter_config_path(data: dict[str, str] = Body(...)): +async def save_adapter_config_path(data: PathBody): """保存适配器配置文件路径偏好""" try: path = data.get("path") @@ -511,10 +519,10 @@ async def save_adapter_config_path(data: dict[str, str] = Body(...)): # 将路径规范化为绝对路径 abs_path = _normalize_adapter_path(path) - + # 尝试转换为相对路径保存(如果文件在项目目录内) save_path = _to_relative_path(abs_path) - + # 更新路径 webui_data["adapter_config_path"] = save_path @@ -530,7 +538,7 @@ async def save_adapter_config_path(data: dict[str, str] = Body(...)): raise except Exception as e: logger.error(f"保存适配器配置路径失败: {e}") - raise HTTPException(status_code=500, detail=f"保存路径失败: {str(e)}") + raise HTTPException(status_code=500, detail=f"保存路径失败: {str(e)}") from e @router.get("/adapter-config") @@ -542,7 +550,7 @@ async def get_adapter_config(path: str): # 将路径规范化为绝对路径 abs_path = _normalize_adapter_path(path) - + # 检查文件是否存在 if not os.path.exists(abs_path): raise HTTPException(status_code=404, detail=f"配置文件不存在: {path}") @@ -562,11 +570,11 @@ async def get_adapter_config(path: str): raise except Exception as e: logger.error(f"读取适配器配置失败: {e}") - raise HTTPException(status_code=500, detail=f"读取配置失败: {str(e)}") + raise HTTPException(status_code=500, detail=f"读取配置失败: {str(e)}") from e @router.post("/adapter-config") -async def save_adapter_config(data: dict[str, str] = Body(...)): +async def save_adapter_config(data: PathBody): """保存适配器配置到指定路径""" try: path = data.get("path") @@ -579,17 +587,16 @@ async def save_adapter_config(data: dict[str, str] = Body(...)): # 将路径规范化为绝对路径 abs_path = _normalize_adapter_path(path) - + # 检查文件扩展名 if not abs_path.endswith(".toml"): raise HTTPException(status_code=400, detail="只支持 .toml 格式的配置文件") # 验证 TOML 格式 try: - import tomlkit tomlkit.loads(content) except Exception as e: - raise HTTPException(status_code=400, detail=f"TOML 格式错误: {str(e)}") + raise HTTPException(status_code=400, detail=f"TOML 格式错误: {str(e)}") from e # 确保目录存在 dir_path = os.path.dirname(abs_path) @@ -607,5 +614,4 @@ async def save_adapter_config(data: dict[str, str] = Body(...)): raise except Exception as e: logger.error(f"保存适配器配置失败: {e}") - raise HTTPException(status_code=500, detail=f"保存配置失败: {str(e)}") - + raise HTTPException(status_code=500, detail=f"保存配置失败: {str(e)}") from e diff --git a/src/webui/config_schema.py b/src/webui/config_schema.py index c1608bc4..d160000a 100644 --- a/src/webui/config_schema.py +++ b/src/webui/config_schema.py @@ -117,7 +117,7 @@ class ConfigSchemaGenerator: if next_line.startswith('"""') or next_line.startswith("'''"): # 单行文档字符串 if next_line.count('"""') == 2 or next_line.count("'''") == 2: - description_lines.append(next_line.strip('"""').strip("'''").strip()) + description_lines.append(next_line.replace('"""', "").replace("'''", "").strip()) else: # 多行文档字符串 quote = '"""' if next_line.startswith('"""') else "'''" @@ -135,7 +135,7 @@ class ConfigSchemaGenerator: next_line = lines[i + 1].strip() if next_line.startswith('"""') or next_line.startswith("'''"): if next_line.count('"""') == 2 or next_line.count("'''") == 2: - description_lines.append(next_line.strip('"""').strip("'''").strip()) + description_lines.append(next_line.replace('"""', "").replace("'''", "").strip()) else: quote = '"""' if next_line.startswith('"""') else "'''" description_lines.append(next_line.strip(quote).strip()) @@ -199,13 +199,13 @@ class ConfigSchemaGenerator: return FieldType.ARRAY, None, items # 处理基本类型 - if field_type is bool or field_type == bool: + if field_type is bool: return FieldType.BOOLEAN, None, None - elif field_type is int or field_type == int: + elif field_type is int: return FieldType.INTEGER, None, None - elif field_type is float or field_type == float: + elif field_type is float: return FieldType.NUMBER, None, None - elif field_type is str or field_type == str: + elif field_type is str: return FieldType.STRING, None, None elif field_type is dict or origin is dict: return FieldType.OBJECT, None, None diff --git a/src/webui/emoji_routes.py b/src/webui/emoji_routes.py index e2aa6875..94f77b95 100644 --- a/src/webui/emoji_routes.py +++ b/src/webui/emoji_routes.py @@ -3,20 +3,25 @@ from fastapi import APIRouter, HTTPException, Header, Query, UploadFile, File, Form from fastapi.responses import FileResponse from pydantic import BaseModel -from typing import Optional, List +from typing import Optional, List, Annotated from src.common.logger import get_logger from src.common.database.database_model import Emoji from .token_manager import get_token_manager -import json import time import os import hashlib -import base64 from PIL import Image import io logger = get_logger("webui.emoji") +# 模块级别的类型别名(解决 B008 ruff 错误) +EmojiFile = Annotated[UploadFile, File(description="表情包图片文件")] +EmojiFiles = Annotated[List[UploadFile], File(description="多个表情包图片文件")] +DescriptionForm = Annotated[str, Form(description="表情包描述")] +EmotionForm = Annotated[str, Form(description="情感标签,多个用逗号分隔")] +IsRegisteredForm = Annotated[bool, Form(description="是否直接注册")] + # 创建路由器 router = APIRouter(prefix="/emoji", tags=["Emoji"]) @@ -592,10 +597,10 @@ class EmojiUploadResponse(BaseModel): @router.post("/upload", response_model=EmojiUploadResponse) async def upload_emoji( - file: UploadFile = File(..., description="表情包图片文件"), - description: str = Form("", description="表情包描述"), - emotion: str = Form("", description="情感标签,多个用逗号分隔"), - is_registered: bool = Form(True, description="是否直接注册"), + file: EmojiFile, + description: DescriptionForm = "", + emotion: EmotionForm = "", + is_registered: IsRegisteredForm = True, authorization: Optional[str] = Header(None), ): """ @@ -713,9 +718,9 @@ async def upload_emoji( @router.post("/batch/upload") async def batch_upload_emoji( - files: List[UploadFile] = File(..., description="多个表情包图片文件"), - emotion: str = Form("", description="情感标签,多个用逗号分隔"), - is_registered: bool = Form(True, description="是否直接注册"), + files: EmojiFiles, + emotion: EmotionForm = "", + is_registered: IsRegisteredForm = True, authorization: Optional[str] = Header(None), ): """ @@ -749,11 +754,13 @@ async def batch_upload_emoji( # 验证文件类型 if file.content_type not in allowed_types: results["failed"] += 1 - results["details"].append({ - "filename": file.filename, - "success": False, - "error": f"不支持的文件类型: {file.content_type}", - }) + results["details"].append( + { + "filename": file.filename, + "success": False, + "error": f"不支持的文件类型: {file.content_type}", + } + ) continue # 读取文件内容 @@ -761,11 +768,13 @@ async def batch_upload_emoji( if not file_content: results["failed"] += 1 - results["details"].append({ - "filename": file.filename, - "success": False, - "error": "文件内容为空", - }) + results["details"].append( + { + "filename": file.filename, + "success": False, + "error": "文件内容为空", + } + ) continue # 验证图片 @@ -774,11 +783,13 @@ async def batch_upload_emoji( img_format = img.format.lower() if img.format else "png" except Exception as e: results["failed"] += 1 - results["details"].append({ - "filename": file.filename, - "success": False, - "error": f"无效的图片: {str(e)}", - }) + results["details"].append( + { + "filename": file.filename, + "success": False, + "error": f"无效的图片: {str(e)}", + } + ) continue # 计算哈希 @@ -787,11 +798,13 @@ async def batch_upload_emoji( # 检查重复 if Emoji.get_or_none(Emoji.emoji_hash == emoji_hash): results["failed"] += 1 - results["details"].append({ - "filename": file.filename, - "success": False, - "error": "已存在相同的表情包", - }) + results["details"].append( + { + "filename": file.filename, + "success": False, + "error": "已存在相同的表情包", + } + ) continue # 生成文件名并保存 @@ -829,19 +842,23 @@ async def batch_upload_emoji( ) results["uploaded"] += 1 - results["details"].append({ - "filename": file.filename, - "success": True, - "id": emoji.id, - }) + results["details"].append( + { + "filename": file.filename, + "success": True, + "id": emoji.id, + } + ) except Exception as e: results["failed"] += 1 - results["details"].append({ - "filename": file.filename, - "success": False, - "error": str(e), - }) + results["details"].append( + { + "filename": file.filename, + "success": False, + "error": str(e), + } + ) results["message"] = f"成功上传 {results['uploaded']} 个,失败 {results['failed']} 个" return results @@ -850,4 +867,4 @@ async def batch_upload_emoji( raise except Exception as e: logger.exception(f"批量上传表情包失败: {e}") - raise HTTPException(status_code=500, detail=f"批量上传失败: {str(e)}") from e \ No newline at end of file + raise HTTPException(status_code=500, detail=f"批量上传失败: {str(e)}") from e diff --git a/src/webui/git_mirror_service.py b/src/webui/git_mirror_service.py index df00cde9..a6a9b1bc 100644 --- a/src/webui/git_mirror_service.py +++ b/src/webui/git_mirror_service.py @@ -602,9 +602,9 @@ class GitMirrorService: # 执行 git clone(在线程池中运行以避免阻塞) loop = asyncio.get_event_loop() - def run_git_clone(): + def run_git_clone(clone_cmd=cmd): return subprocess.run( - cmd, + clone_cmd, capture_output=True, text=True, timeout=300, # 5分钟超时 diff --git a/src/webui/knowledge_routes.py b/src/webui/knowledge_routes.py index 717e20ca..af4594b6 100644 --- a/src/webui/knowledge_routes.py +++ b/src/webui/knowledge_routes.py @@ -1,4 +1,5 @@ """知识库图谱可视化 API 路由""" + from typing import List, Optional from fastapi import APIRouter, Query from pydantic import BaseModel @@ -11,6 +12,7 @@ router = APIRouter(prefix="/api/webui/knowledge", tags=["knowledge"]) class KnowledgeNode(BaseModel): """知识节点""" + id: str type: str # 'entity' or 'paragraph' content: str @@ -19,6 +21,7 @@ class KnowledgeNode(BaseModel): class KnowledgeEdge(BaseModel): """知识边""" + source: str target: str weight: float @@ -28,12 +31,14 @@ class KnowledgeEdge(BaseModel): class KnowledgeGraph(BaseModel): """知识图谱""" + nodes: List[KnowledgeNode] edges: List[KnowledgeEdge] class KnowledgeStats(BaseModel): """知识库统计信息""" + total_nodes: int total_edges: int entity_nodes: int @@ -45,7 +50,7 @@ def _load_kg_manager(): """延迟加载 KGManager""" try: from src.chat.knowledge.kg_manager import KGManager - + kg_manager = KGManager() kg_manager.load_from_file() return kg_manager @@ -58,31 +63,26 @@ def _convert_graph_to_json(kg_manager) -> KnowledgeGraph: """将 DiGraph 转换为 JSON 格式""" if kg_manager is None or kg_manager.graph is None: return KnowledgeGraph(nodes=[], edges=[]) - + graph = kg_manager.graph nodes = [] edges = [] - + # 转换节点 node_list = graph.get_node_list() for node_id in node_list: try: node_data = graph[node_id] # 节点类型: "ent" -> "entity", "pg" -> "paragraph" - node_type = "entity" if ('type' in node_data and node_data['type'] == 'ent') else "paragraph" - content = node_data['content'] if 'content' in node_data else node_id - create_time = node_data['create_time'] if 'create_time' in node_data else None - - nodes.append(KnowledgeNode( - id=node_id, - type=node_type, - content=content, - create_time=create_time - )) + node_type = "entity" if ("type" in node_data and node_data["type"] == "ent") else "paragraph" + content = node_data["content"] if "content" in node_data else node_id + create_time = node_data["create_time"] if "create_time" in node_data else None + + nodes.append(KnowledgeNode(id=node_id, type=node_type, content=content, create_time=create_time)) except Exception as e: logger.warning(f"跳过节点 {node_id}: {e}") continue - + # 转换边 edge_list = graph.get_edge_list() for edge_tuple in edge_list: @@ -91,37 +91,35 @@ def _convert_graph_to_json(kg_manager) -> KnowledgeGraph: source, target = edge_tuple[0], edge_tuple[1] # 通过 graph[source, target] 获取边的属性数据 edge_data = graph[source, target] - + # edge_data 支持 [] 操作符但不支持 .get() - weight = edge_data['weight'] if 'weight' in edge_data else 1.0 - create_time = edge_data['create_time'] if 'create_time' in edge_data else None - update_time = edge_data['update_time'] if 'update_time' in edge_data else None - - edges.append(KnowledgeEdge( - source=source, - target=target, - weight=weight, - create_time=create_time, - update_time=update_time - )) + weight = edge_data["weight"] if "weight" in edge_data else 1.0 + create_time = edge_data["create_time"] if "create_time" in edge_data else None + update_time = edge_data["update_time"] if "update_time" in edge_data else None + + edges.append( + KnowledgeEdge( + source=source, target=target, weight=weight, create_time=create_time, update_time=update_time + ) + ) except Exception as e: logger.warning(f"跳过边 {edge_tuple}: {e}") continue - + return KnowledgeGraph(nodes=nodes, edges=edges) @router.get("/graph", response_model=KnowledgeGraph) async def get_knowledge_graph( limit: int = Query(100, ge=1, le=10000, description="返回的最大节点数"), - node_type: str = Query("all", description="节点类型过滤: all, entity, paragraph") + node_type: str = Query("all", description="节点类型过滤: all, entity, paragraph"), ): """获取知识图谱(限制节点数量) - + Args: limit: 返回的最大节点数,默认 100,最大 10000 node_type: 节点类型过滤 - all(全部), entity(实体), paragraph(段落) - + Returns: KnowledgeGraph: 包含指定数量节点和相关边的知识图谱 """ @@ -130,46 +128,43 @@ async def get_knowledge_graph( if kg_manager is None: logger.warning("KGManager 未初始化,返回空图谱") return KnowledgeGraph(nodes=[], edges=[]) - + graph = kg_manager.graph all_node_list = graph.get_node_list() - + # 按类型过滤节点 if node_type == "entity": - all_node_list = [n for n in all_node_list if n in graph and 'type' in graph[n] and graph[n]['type'] == 'ent'] + all_node_list = [ + n for n in all_node_list if n in graph and "type" in graph[n] and graph[n]["type"] == "ent" + ] elif node_type == "paragraph": - all_node_list = [n for n in all_node_list if n in graph and 'type' in graph[n] and graph[n]['type'] == 'pg'] - + all_node_list = [n for n in all_node_list if n in graph and "type" in graph[n] and graph[n]["type"] == "pg"] + # 限制节点数量 total_nodes = len(all_node_list) if len(all_node_list) > limit: node_list = all_node_list[:limit] else: node_list = all_node_list - + logger.info(f"总节点数: {total_nodes}, 返回节点: {len(node_list)} (limit={limit}, type={node_type})") - + # 转换节点 nodes = [] node_ids = set() for node_id in node_list: try: node_data = graph[node_id] - node_type_val = "entity" if ('type' in node_data and node_data['type'] == 'ent') else "paragraph" - content = node_data['content'] if 'content' in node_data else node_id - create_time = node_data['create_time'] if 'create_time' in node_data else None - - nodes.append(KnowledgeNode( - id=node_id, - type=node_type_val, - content=content, - create_time=create_time - )) + node_type_val = "entity" if ("type" in node_data and node_data["type"] == "ent") else "paragraph" + content = node_data["content"] if "content" in node_data else node_id + create_time = node_data["create_time"] if "create_time" in node_data else None + + nodes.append(KnowledgeNode(id=node_id, type=node_type_val, content=content, create_time=create_time)) node_ids.add(node_id) except Exception as e: logger.warning(f"跳过节点 {node_id}: {e}") continue - + # 只获取涉及当前节点集的边(保证图的完整性) edges = [] edge_list = graph.get_edge_list() @@ -179,27 +174,25 @@ async def get_knowledge_graph( # 只包含两端都在当前节点集中的边 if source not in node_ids or target not in node_ids: continue - + edge_data = graph[source, target] - weight = edge_data['weight'] if 'weight' in edge_data else 1.0 - create_time = edge_data['create_time'] if 'create_time' in edge_data else None - update_time = edge_data['update_time'] if 'update_time' in edge_data else None - - edges.append(KnowledgeEdge( - source=source, - target=target, - weight=weight, - create_time=create_time, - update_time=update_time - )) + weight = edge_data["weight"] if "weight" in edge_data else 1.0 + create_time = edge_data["create_time"] if "create_time" in edge_data else None + update_time = edge_data["update_time"] if "update_time" in edge_data else None + + edges.append( + KnowledgeEdge( + source=source, target=target, weight=weight, create_time=create_time, update_time=update_time + ) + ) except Exception as e: logger.warning(f"跳过边 {edge_tuple}: {e}") continue - + graph_data = KnowledgeGraph(nodes=nodes, edges=edges) logger.info(f"返回知识图谱: {len(nodes)} 个节点, {len(edges)} 条边") return graph_data - + except Exception as e: logger.error(f"获取知识图谱失败: {e}", exc_info=True) return KnowledgeGraph(nodes=[], edges=[]) @@ -208,71 +201,59 @@ async def get_knowledge_graph( @router.get("/stats", response_model=KnowledgeStats) async def get_knowledge_stats(): """获取知识库统计信息 - + Returns: KnowledgeStats: 统计信息 """ try: kg_manager = _load_kg_manager() if kg_manager is None or kg_manager.graph is None: - return KnowledgeStats( - total_nodes=0, - total_edges=0, - entity_nodes=0, - paragraph_nodes=0, - avg_connections=0.0 - ) - + return KnowledgeStats(total_nodes=0, total_edges=0, entity_nodes=0, paragraph_nodes=0, avg_connections=0.0) + graph = kg_manager.graph node_list = graph.get_node_list() edge_list = graph.get_edge_list() - + total_nodes = len(node_list) total_edges = len(edge_list) - + # 统计节点类型 entity_nodes = 0 paragraph_nodes = 0 for node_id in node_list: try: node_data = graph[node_id] - node_type = node_data['type'] if 'type' in node_data else 'ent' - if node_type == 'ent': + node_type = node_data["type"] if "type" in node_data else "ent" + if node_type == "ent": entity_nodes += 1 - elif node_type == 'pg': + elif node_type == "pg": paragraph_nodes += 1 except Exception: continue - + # 计算平均连接数 avg_connections = (total_edges * 2) / total_nodes if total_nodes > 0 else 0.0 - + return KnowledgeStats( total_nodes=total_nodes, total_edges=total_edges, entity_nodes=entity_nodes, paragraph_nodes=paragraph_nodes, - avg_connections=round(avg_connections, 2) + avg_connections=round(avg_connections, 2), ) - + except Exception as e: logger.error(f"获取统计信息失败: {e}", exc_info=True) - return KnowledgeStats( - total_nodes=0, - total_edges=0, - entity_nodes=0, - paragraph_nodes=0, - avg_connections=0.0 - ) + return KnowledgeStats(total_nodes=0, total_edges=0, entity_nodes=0, paragraph_nodes=0, avg_connections=0.0) @router.get("/search", response_model=List[KnowledgeNode]) async def search_knowledge_node(query: str = Query(..., min_length=1)): """搜索知识节点 - + Args: query: 搜索关键词 - + Returns: List[KnowledgeNode]: 匹配的节点列表 """ @@ -280,33 +261,28 @@ async def search_knowledge_node(query: str = Query(..., min_length=1)): kg_manager = _load_kg_manager() if kg_manager is None or kg_manager.graph is None: return [] - + graph = kg_manager.graph node_list = graph.get_node_list() results = [] query_lower = query.lower() - + # 在节点内容中搜索 for node_id in node_list: try: node_data = graph[node_id] - content = node_data['content'] if 'content' in node_data else node_id - node_type = "entity" if ('type' in node_data and node_data['type'] == 'ent') else "paragraph" - + content = node_data["content"] if "content" in node_data else node_id + node_type = "entity" if ("type" in node_data and node_data["type"] == "ent") else "paragraph" + if query_lower in content.lower() or query_lower in node_id.lower(): - create_time = node_data['create_time'] if 'create_time' in node_data else None - results.append(KnowledgeNode( - id=node_id, - type=node_type, - content=content, - create_time=create_time - )) + create_time = node_data["create_time"] if "create_time" in node_data else None + results.append(KnowledgeNode(id=node_id, type=node_type, content=content, create_time=create_time)) except Exception: continue - + logger.info(f"搜索 '{query}' 找到 {len(results)} 个节点") return results[:50] # 限制返回数量 - + except Exception as e: logger.error(f"搜索节点失败: {e}", exc_info=True) return [] diff --git a/src/webui/model_routes.py b/src/webui/model_routes.py index 871512f5..7d8310ee 100644 --- a/src/webui/model_routes.py +++ b/src/webui/model_routes.py @@ -43,25 +43,27 @@ def _normalize_url(url: str) -> str: def _parse_openai_response(data: dict) -> list[dict]: """ 解析 OpenAI 格式的模型列表响应 - + 格式: { "data": [{ "id": "gpt-4", "object": "model", ... }] } """ models = [] if "data" in data and isinstance(data["data"], list): for model in data["data"]: if isinstance(model, dict) and "id" in model: - models.append({ - "id": model["id"], - "name": model.get("name") or model["id"], - "owned_by": model.get("owned_by", ""), - }) + models.append( + { + "id": model["id"], + "name": model.get("name") or model["id"], + "owned_by": model.get("owned_by", ""), + } + ) return models def _parse_gemini_response(data: dict) -> list[dict]: """ 解析 Gemini 格式的模型列表响应 - + 格式: { "models": [{ "name": "models/gemini-pro", "displayName": "Gemini Pro", ... }] } """ models = [] @@ -72,11 +74,13 @@ def _parse_gemini_response(data: dict) -> list[dict]: model_id = model["name"] if model_id.startswith("models/"): model_id = model_id[7:] # 去掉 "models/" 前缀 - models.append({ - "id": model_id, - "name": model.get("displayName") or model_id, - "owned_by": "google", - }) + models.append( + { + "id": model_id, + "name": model.get("displayName") or model_id, + "owned_by": "google", + } + ) return models @@ -89,55 +93,54 @@ async def _fetch_models_from_provider( ) -> list[dict]: """ 从提供商 API 获取模型列表 - + Args: base_url: 提供商的基础 URL api_key: API 密钥 endpoint: 获取模型列表的端点 parser: 响应解析器类型 ('openai' | 'gemini') client_type: 客户端类型 ('openai' | 'gemini') - + Returns: 模型列表 """ url = f"{_normalize_url(base_url)}{endpoint}" - + # 根据客户端类型设置请求头 headers = {} params = {} - + if client_type == "gemini": # Gemini 使用 URL 参数传递 API Key params["key"] = api_key else: # OpenAI 兼容格式使用 Authorization 头 headers["Authorization"] = f"Bearer {api_key}" - + try: async with httpx.AsyncClient(timeout=30.0) as client: response = await client.get(url, headers=headers, params=params) response.raise_for_status() data = response.json() - except httpx.TimeoutException: - raise HTTPException(status_code=504, detail="请求超时,请稍后重试") + except httpx.TimeoutException as e: + raise HTTPException(status_code=504, detail="请求超时,请稍后重试") from e except httpx.HTTPStatusError as e: # 注意:使用 502 Bad Gateway 而不是原始的 401/403, # 因为前端的 fetchWithAuth 会把 401 当作 WebUI 认证失败处理 if e.response.status_code == 401: - raise HTTPException(status_code=502, detail="API Key 无效或已过期") + raise HTTPException(status_code=502, detail="API Key 无效或已过期") from e elif e.response.status_code == 403: - raise HTTPException(status_code=502, detail="没有权限访问模型列表,请检查 API Key 权限") + raise HTTPException(status_code=502, detail="没有权限访问模型列表,请检查 API Key 权限") from e elif e.response.status_code == 404: - raise HTTPException(status_code=502, detail="该提供商不支持获取模型列表") + raise HTTPException(status_code=502, detail="该提供商不支持获取模型列表") from e else: raise HTTPException( - status_code=502, - detail=f"上游服务请求失败 ({e.response.status_code}): {e.response.text[:200]}" - ) + status_code=502, detail=f"上游服务请求失败 ({e.response.status_code}): {e.response.text[:200]}" + ) from e except Exception as e: logger.error(f"获取模型列表失败: {e}") - raise HTTPException(status_code=500, detail=f"获取模型列表失败: {str(e)}") - + raise HTTPException(status_code=500, detail=f"获取模型列表失败: {str(e)}") from e + # 根据解析器类型解析响应 if parser == "openai": return _parse_openai_response(data) @@ -150,26 +153,26 @@ async def _fetch_models_from_provider( def _get_provider_config(provider_name: str) -> Optional[dict]: """ 从 model_config.toml 获取指定提供商的配置 - + Args: provider_name: 提供商名称 - + Returns: 提供商配置,如果未找到则返回 None """ config_path = os.path.join(CONFIG_DIR, "model_config.toml") if not os.path.exists(config_path): return None - + try: with open(config_path, "r", encoding="utf-8") as f: config_data = tomlkit.load(f) - + providers = config_data.get("api_providers", []) for provider in providers: if provider.get("name") == provider_name: return dict(provider) - + return None except Exception as e: logger.error(f"读取提供商配置失败: {e}") @@ -184,23 +187,23 @@ async def get_provider_models( ): """ 获取指定提供商的可用模型列表 - + 通过提供商名称查找配置,然后请求对应的模型列表端点 """ # 获取提供商配置 provider_config = _get_provider_config(provider_name) if not provider_config: raise HTTPException(status_code=404, detail=f"未找到提供商: {provider_name}") - + base_url = provider_config.get("base_url") api_key = provider_config.get("api_key") client_type = provider_config.get("client_type", "openai") - + if not base_url: raise HTTPException(status_code=400, detail="提供商配置缺少 base_url") if not api_key: raise HTTPException(status_code=400, detail="提供商配置缺少 api_key") - + # 获取模型列表 models = await _fetch_models_from_provider( base_url=base_url, @@ -209,7 +212,7 @@ async def get_provider_models( parser=parser, client_type=client_type, ) - + return { "success": True, "models": models, @@ -236,7 +239,7 @@ async def get_models_by_url( parser=parser, client_type=client_type, ) - + return { "success": True, "models": models, @@ -251,11 +254,11 @@ async def test_provider_connection( ): """ 测试提供商连接状态 - + 分两步测试: 1. 网络连通性测试:向 base_url 发送请求,检查是否能连接 2. API Key 验证(可选):如果提供了 api_key,尝试获取模型列表验证 Key 是否有效 - + 返回: - network_ok: 网络是否连通 - api_key_valid: API Key 是否有效(仅在提供 api_key 时返回) @@ -263,11 +266,11 @@ async def test_provider_connection( - error: 错误信息(如果有) """ import time - + base_url = _normalize_url(base_url) if not base_url: raise HTTPException(status_code=400, detail="base_url 不能为空") - + result = { "network_ok": False, "api_key_valid": None, @@ -275,7 +278,7 @@ async def test_provider_connection( "error": None, "http_status": None, } - + # 第一步:测试网络连通性 try: start_time = time.time() @@ -283,11 +286,11 @@ async def test_provider_connection( # 尝试 GET 请求 base_url(不需要 API Key) response = await client.get(base_url) latency = (time.time() - start_time) * 1000 - + result["network_ok"] = True result["latency_ms"] = round(latency, 2) result["http_status"] = response.status_code - + except httpx.ConnectError as e: result["error"] = f"连接失败:无法连接到服务器 ({str(e)})" return result @@ -300,7 +303,7 @@ async def test_provider_connection( except Exception as e: result["error"] = f"未知错误:{str(e)}" return result - + # 第二步:如果提供了 API Key,验证其有效性 if api_key: try: @@ -313,7 +316,7 @@ async def test_provider_connection( # 尝试获取模型列表 models_url = f"{base_url}/models" response = await client.get(models_url, headers=headers) - + if response.status_code == 200: result["api_key_valid"] = True elif response.status_code in (401, 403): @@ -322,12 +325,12 @@ async def test_provider_connection( else: # 其他状态码,可能是端点不支持,但 Key 可能是有效的 result["api_key_valid"] = None - + except Exception as e: # API Key 验证失败不影响网络连通性结果 logger.warning(f"API Key 验证失败: {e}") result["api_key_valid"] = None - + return result @@ -342,10 +345,10 @@ async def test_provider_connection_by_name( model_config_path = os.path.join(CONFIG_DIR, "model_config.toml") if not os.path.exists(model_config_path): raise HTTPException(status_code=404, detail="配置文件不存在") - + with open(model_config_path, "r", encoding="utf-8") as f: config = tomlkit.load(f) - + # 查找提供商 providers = config.get("api_providers", []) provider = None @@ -353,15 +356,15 @@ async def test_provider_connection_by_name( if p.get("name") == provider_name: provider = p break - + if not provider: raise HTTPException(status_code=404, detail=f"未找到提供商: {provider_name}") - + base_url = provider.get("base_url", "") api_key = provider.get("api_key", "") - + if not base_url: raise HTTPException(status_code=400, detail="提供商配置缺少 base_url") - + # 调用测试接口 return await test_provider_connection(base_url=base_url, api_key=api_key if api_key else None) diff --git a/src/webui/plugin_routes.py b/src/webui/plugin_routes.py index 7480d65f..1236b02e 100644 --- a/src/webui/plugin_routes.py +++ b/src/webui/plugin_routes.py @@ -31,8 +31,9 @@ def parse_version(version_str: str) -> tuple[int, int, int]: """ # 移除 snapshot、dev、alpha、beta 等后缀(支持 - 和 . 分隔符) import re + # 匹配 -snapshot.X, .snapshot, -dev, .dev, -alpha, .alpha, -beta, .beta 等后缀 - base_version = re.split(r'[-.](?:snapshot|dev|alpha|beta|rc)', version_str, flags=re.IGNORECASE)[0] + base_version = re.split(r"[-.](?:snapshot|dev|alpha|beta|rc)", version_str, flags=re.IGNORECASE)[0] parts = base_version.split(".") if len(parts) < 3: @@ -613,7 +614,7 @@ async def install_plugin(request: InstallPluginRequest, authorization: Optional[ for field in required_fields: if field not in manifest: raise ValueError(f"缺少必需字段: {field}") - + # 将插件 ID 写入 manifest(用于后续准确识别) # 这样即使文件夹名称改变,也能通过 manifest 准确识别插件 manifest["id"] = request.plugin_id @@ -705,7 +706,7 @@ async def uninstall_plugin( plugin_path = plugins_dir / folder_name # 旧格式:点 old_format_path = plugins_dir / request.plugin_id - + # 优先使用新格式,如果不存在则尝试旧格式 if not plugin_path.exists(): if old_format_path.exists(): @@ -839,7 +840,7 @@ async def update_plugin(request: UpdatePluginRequest, authorization: Optional[st plugin_path = plugins_dir / folder_name # 旧格式:点 old_format_path = plugins_dir / request.plugin_id - + # 优先使用新格式,如果不存在则尝试旧格式 if not plugin_path.exists(): if old_format_path.exists(): @@ -1092,21 +1093,21 @@ async def get_installed_plugins(authorization: Optional[str] = Header(None)) -> # 尝试从 author.name 和 repository_url 构建标准 ID author_name = None repo_name = None - + # 获取作者名 if "author" in manifest: if isinstance(manifest["author"], dict) and "name" in manifest["author"]: author_name = manifest["author"]["name"] elif isinstance(manifest["author"], str): author_name = manifest["author"] - + # 从 repository_url 获取仓库名 if "repository_url" in manifest: repo_url = manifest["repository_url"].rstrip("/") if repo_url.endswith(".git"): repo_url = repo_url[:-4] repo_name = repo_url.split("/")[-1] - + # 构建 ID if author_name and repo_name: # 标准格式: Author.RepoName @@ -1122,7 +1123,7 @@ async def get_installed_plugins(authorization: Optional[str] = Header(None)) -> else: # 直接使用文件夹名 plugin_id = folder_name - + # 将推断的 ID 写入 manifest(方便下次识别) logger.info(f"为插件 {folder_name} 自动生成 ID: {plugin_id}") manifest["id"] = plugin_id @@ -1167,12 +1168,10 @@ class UpdatePluginConfigRequest(BaseModel): @router.get("/config/{plugin_id}/schema") -async def get_plugin_config_schema( - plugin_id: str, authorization: Optional[str] = Header(None) -) -> Dict[str, Any]: +async def get_plugin_config_schema(plugin_id: str, authorization: Optional[str] = Header(None)) -> Dict[str, Any]: """ 获取插件配置 Schema - + 返回插件的完整配置 schema,包含所有 section、字段定义和布局信息。 用于前端动态生成配置表单。 """ @@ -1187,10 +1186,10 @@ async def get_plugin_config_schema( try: # 尝试从已加载的插件中获取 from src.plugin_system.core.plugin_manager import plugin_manager - + # 查找插件实例 plugin_instance = None - + # 遍历所有已加载的插件 for loaded_plugin_name in plugin_manager.list_loaded_plugins(): instance = plugin_manager.get_plugin_instance(loaded_plugin_name) @@ -1204,17 +1203,17 @@ async def get_plugin_config_schema( if manifest_id == plugin_id: plugin_instance = instance break - - if plugin_instance and hasattr(plugin_instance, 'get_webui_config_schema'): + + if plugin_instance and hasattr(plugin_instance, "get_webui_config_schema"): # 从插件实例获取 schema schema = plugin_instance.get_webui_config_schema() return {"success": True, "schema": schema} - + # 如果插件未加载,尝试从文件系统读取 # 查找插件目录 plugins_dir = Path("plugins") plugin_path = None - + for p in plugins_dir.iterdir(): if p.is_dir(): manifest_path = p / "_manifest.json" @@ -1227,18 +1226,19 @@ async def get_plugin_config_schema( break except Exception: continue - + if not plugin_path: raise HTTPException(status_code=404, detail=f"未找到插件: {plugin_id}") - + # 读取配置文件获取当前配置 config_path = plugin_path / "config.toml" current_config = {} if config_path.exists(): import tomlkit + with open(config_path, "r", encoding="utf-8") as f: current_config = tomlkit.load(f) - + # 构建基础 schema(无法获取完整的 ConfigField 信息) schema = { "plugin_id": plugin_id, @@ -1252,7 +1252,7 @@ async def get_plugin_config_schema( "layout": {"type": "auto", "tabs": []}, "_note": "插件未加载,仅返回当前配置结构", } - + # 从当前配置推断 schema for section_name, section_data in current_config.items(): if isinstance(section_data, dict): @@ -1277,7 +1277,7 @@ async def get_plugin_config_schema( ui_type = "list" elif isinstance(field_value, dict): ui_type = "json" - + schema["sections"][section_name]["fields"][field_name] = { "name": field_name, "type": field_type, @@ -1290,7 +1290,7 @@ async def get_plugin_config_schema( "disabled": False, "order": 0, } - + return {"success": True, "schema": schema} except HTTPException: @@ -1301,12 +1301,10 @@ async def get_plugin_config_schema( @router.get("/config/{plugin_id}") -async def get_plugin_config( - plugin_id: str, authorization: Optional[str] = Header(None) -) -> Dict[str, Any]: +async def get_plugin_config(plugin_id: str, authorization: Optional[str] = Header(None)) -> Dict[str, Any]: """ 获取插件当前配置值 - + 返回插件的当前配置值。 """ # Token 验证 @@ -1321,7 +1319,7 @@ async def get_plugin_config( # 查找插件目录 plugins_dir = Path("plugins") plugin_path = None - + for p in plugins_dir.iterdir(): if p.is_dir(): manifest_path = p / "_manifest.json" @@ -1334,19 +1332,20 @@ async def get_plugin_config( break except Exception: continue - + if not plugin_path: raise HTTPException(status_code=404, detail=f"未找到插件: {plugin_id}") - + # 读取配置文件 config_path = plugin_path / "config.toml" if not config_path.exists(): return {"success": True, "config": {}, "message": "配置文件不存在"} - + import tomlkit + with open(config_path, "r", encoding="utf-8") as f: config = tomlkit.load(f) - + return {"success": True, "config": dict(config)} except HTTPException: @@ -1358,13 +1357,11 @@ async def get_plugin_config( @router.put("/config/{plugin_id}") async def update_plugin_config( - plugin_id: str, - request: UpdatePluginConfigRequest, - authorization: Optional[str] = Header(None) + plugin_id: str, request: UpdatePluginConfigRequest, authorization: Optional[str] = Header(None) ) -> Dict[str, Any]: """ 更新插件配置 - + 保存新的配置值到插件的配置文件。 """ # Token 验证 @@ -1379,7 +1376,7 @@ async def update_plugin_config( # 查找插件目录 plugins_dir = Path("plugins") plugin_path = None - + for p in plugins_dir.iterdir(): if p.is_dir(): manifest_path = p / "_manifest.json" @@ -1392,23 +1389,25 @@ async def update_plugin_config( break except Exception: continue - + if not plugin_path: raise HTTPException(status_code=404, detail=f"未找到插件: {plugin_id}") - + config_path = plugin_path / "config.toml" - + # 备份旧配置 import shutil import datetime + if config_path.exists(): backup_name = f"config.toml.backup.{datetime.datetime.now().strftime('%Y%m%d%H%M%S')}" backup_path = plugin_path / backup_name shutil.copy(config_path, backup_path) logger.info(f"已备份配置文件: {backup_path}") - + # 写入新配置(使用 tomlkit 保留注释) import tomlkit + # 先读取原配置以保留注释和格式 existing_doc = tomlkit.document() if config_path.exists(): @@ -1419,14 +1418,10 @@ async def update_plugin_config( existing_doc[key] = value with open(config_path, "w", encoding="utf-8") as f: tomlkit.dump(existing_doc, f) - + logger.info(f"已更新插件配置: {plugin_id}") - - return { - "success": True, - "message": "配置已保存", - "note": "配置更改将在插件重新加载后生效" - } + + return {"success": True, "message": "配置已保存", "note": "配置更改将在插件重新加载后生效"} except HTTPException: raise @@ -1436,12 +1431,10 @@ async def update_plugin_config( @router.post("/config/{plugin_id}/reset") -async def reset_plugin_config( - plugin_id: str, authorization: Optional[str] = Header(None) -) -> Dict[str, Any]: +async def reset_plugin_config(plugin_id: str, authorization: Optional[str] = Header(None)) -> Dict[str, Any]: """ 重置插件配置为默认值 - + 删除当前配置文件,下次加载插件时将使用默认配置。 """ # Token 验证 @@ -1456,7 +1449,7 @@ async def reset_plugin_config( # 查找插件目录 plugins_dir = Path("plugins") plugin_path = None - + for p in plugins_dir.iterdir(): if p.is_dir(): manifest_path = p / "_manifest.json" @@ -1469,29 +1462,26 @@ async def reset_plugin_config( break except Exception: continue - + if not plugin_path: raise HTTPException(status_code=404, detail=f"未找到插件: {plugin_id}") - + config_path = plugin_path / "config.toml" - + if not config_path.exists(): return {"success": True, "message": "配置文件不存在,无需重置"} - + # 备份并删除 import shutil import datetime + backup_name = f"config.toml.reset.{datetime.datetime.now().strftime('%Y%m%d%H%M%S')}" backup_path = plugin_path / backup_name shutil.move(config_path, backup_path) - + logger.info(f"已重置插件配置: {plugin_id},备份: {backup_path}") - - return { - "success": True, - "message": "配置已重置,下次加载插件时将使用默认配置", - "backup": str(backup_path) - } + + return {"success": True, "message": "配置已重置,下次加载插件时将使用默认配置", "backup": str(backup_path)} except HTTPException: raise @@ -1501,12 +1491,10 @@ async def reset_plugin_config( @router.post("/config/{plugin_id}/toggle") -async def toggle_plugin( - plugin_id: str, authorization: Optional[str] = Header(None) -) -> Dict[str, Any]: +async def toggle_plugin(plugin_id: str, authorization: Optional[str] = Header(None)) -> Dict[str, Any]: """ 切换插件启用状态 - + 切换插件配置中的 enabled 字段。 """ # Token 验证 @@ -1521,7 +1509,7 @@ async def toggle_plugin( # 查找插件目录 plugins_dir = Path("plugins") plugin_path = None - + for p in plugins_dir.iterdir(): if p.is_dir(): manifest_path = p / "_manifest.json" @@ -1534,40 +1522,40 @@ async def toggle_plugin( break except Exception: continue - + if not plugin_path: raise HTTPException(status_code=404, detail=f"未找到插件: {plugin_id}") - + config_path = plugin_path / "config.toml" - + import tomlkit - + # 读取当前配置(保留注释和格式) config = tomlkit.document() if config_path.exists(): with open(config_path, "r", encoding="utf-8") as f: config = tomlkit.load(f) - + # 切换 enabled 状态 if "plugin" not in config: config["plugin"] = tomlkit.table() - + current_enabled = config["plugin"].get("enabled", True) new_enabled = not current_enabled config["plugin"]["enabled"] = new_enabled - + # 写入配置(保留注释) with open(config_path, "w", encoding="utf-8") as f: tomlkit.dump(config, f) - + status = "启用" if new_enabled else "禁用" logger.info(f"已{status}插件: {plugin_id}") - + return { "success": True, "enabled": new_enabled, "message": f"插件已{status}", - "note": "状态更改将在下次加载插件时生效" + "note": "状态更改将在下次加载插件时生效", } except HTTPException: diff --git a/src/webui/routers/system.py b/src/webui/routers/system.py index f826dc30..b78540b5 100644 --- a/src/webui/routers/system.py +++ b/src/webui/routers/system.py @@ -43,7 +43,7 @@ async def restart_maibot(): 注意:此操作会使麦麦暂时离线。 """ import asyncio - + try: # 记录重启操作 print(f"[{datetime.now()}] WebUI 触发重启操作") @@ -54,7 +54,7 @@ async def restart_maibot(): python = sys.executable args = [python] + sys.argv os.execv(python, args) - + # 创建后台任务执行重启 asyncio.create_task(delayed_restart()) diff --git a/src/webui/webui_server.py b/src/webui/webui_server.py index 2c0a4c48..5997c3ba 100644 --- a/src/webui/webui_server.py +++ b/src/webui/webui_server.py @@ -20,10 +20,10 @@ class WebUIServer: self.port = port self.app = FastAPI(title="MaiBot WebUI") self._server = None - + # 显示 Access Token self._show_access_token() - + # 重要:先注册 API 路由,再设置静态文件 self._register_api_routes() self._setup_static_files() @@ -32,7 +32,7 @@ class WebUIServer: """显示 WebUI Access Token""" try: from src.webui.token_manager import get_token_manager - + token_manager = get_token_manager() current_token = token_manager.get_token() logger.info(f"🔑 WebUI Access Token: {current_token}") @@ -69,7 +69,7 @@ class WebUIServer: # 如果是根路径,直接返回 index.html if not full_path or full_path == "/": return FileResponse(static_path / "index.html", media_type="text/html") - + # 检查是否是静态文件 file_path = static_path / full_path if file_path.is_file() and file_path.exists(): @@ -88,13 +88,15 @@ class WebUIServer: # 导入所有 WebUI 路由 from src.webui.routes import router as webui_router from src.webui.logs_ws import router as logs_router - + logger.info("开始导入 knowledge_routes...") from src.webui.knowledge_routes import router as knowledge_router + logger.info("knowledge_routes 导入成功") - + # 导入本地聊天室路由 from src.webui.chat_routes import router as chat_router + logger.info("chat_routes 导入成功") # 注册路由 diff --git a/test_edge.py b/test_edge.py index a7ee8f05..7981bb30 100644 --- a/test_edge.py +++ b/test_edge.py @@ -8,23 +8,23 @@ if edges: e = edges[0] print(f"Edge tuple: {e}") print(f"Edge tuple type: {type(e)}") - + edge_data = kg.graph[e[0], e[1]] print(f"\nEdge data type: {type(edge_data)}") print(f"Edge data: {edge_data}") print(f"Has 'get' method: {hasattr(edge_data, 'get')}") print(f"Is dict: {isinstance(edge_data, dict)}") - + # 尝试不同的访问方式 try: print(f"\nUsing []: {edge_data['weight']}") except Exception as e: print(f"Using [] failed: {e}") - + try: print(f"Using .get(): {edge_data.get('weight')}") except Exception as e: print(f"Using .get() failed: {e}") - + # 查看所有属性 print(f"\nDir: {[x for x in dir(edge_data) if not x.startswith('_')]}") From 163d527f3c101d93aa7e30d58231f44e7a315ccd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Sat, 29 Nov 2025 14:39:32 +0800 Subject: [PATCH 15/61] Ruff fix x2 --- src/express/expression_reflector.py | 10 +++++----- src/express/reflect_tracker.py | 5 ++--- src/jargon/jargon_utils.py | 2 -- src/main.py | 2 +- src/plugin_system/base/config_types.py | 2 +- 5 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/express/expression_reflector.py b/src/express/expression_reflector.py index 0418b435..4600e239 100644 --- a/src/express/expression_reflector.py +++ b/src/express/expression_reflector.py @@ -29,12 +29,12 @@ class ExpressionReflector: logger.debug(f"[Expression Reflection] 开始检查是否需要提问 (stream_id: {self.chat_id})") if not global_config.expression.reflect: - logger.debug(f"[Expression Reflection] 表达反思功能未启用,跳过") + logger.debug("[Expression Reflection] 表达反思功能未启用,跳过") return False operator_config = global_config.expression.reflect_operator_id if not operator_config: - logger.debug(f"[Expression Reflection] Operator ID 未配置,跳过") + logger.debug("[Expression Reflection] Operator ID 未配置,跳过") return False # 检查是否在允许列表中 @@ -81,7 +81,7 @@ class ExpressionReflector: # 获取未检查的表达 try: - logger.info(f"[Expression Reflection] 查询未检查且未拒绝的表达") + logger.info("[Expression Reflection] 查询未检查且未拒绝的表达") expressions = ( Expression.select().where((Expression.checked == False) & (Expression.rejected == False)).limit(50) ) @@ -90,7 +90,7 @@ class ExpressionReflector: logger.info(f"[Expression Reflection] 找到 {len(expr_list)} 个候选表达") if not expr_list: - logger.info(f"[Expression Reflection] 没有可用的表达,跳过") + logger.info("[Expression Reflection] 没有可用的表达,跳过") return False target_expr: Expression = random.choice(expr_list) @@ -101,7 +101,7 @@ class ExpressionReflector: # 生成询问文本 ask_text = _generate_ask_text(target_expr) if not ask_text: - logger.warning(f"[Expression Reflection] 生成询问文本失败,跳过") + logger.warning("[Expression Reflection] 生成询问文本失败,跳过") return False logger.info(f"[Expression Reflection] 准备向 Operator {operator_config} 发送提问") diff --git a/src/express/reflect_tracker.py b/src/express/reflect_tracker.py index 8973eaf4..c792679d 100644 --- a/src/express/reflect_tracker.py +++ b/src/express/reflect_tracker.py @@ -4,16 +4,15 @@ from src.common.logger import get_logger from src.common.database.database_model import Expression from src.llm_models.utils_model import LLMRequest from src.chat.utils.prompt_builder import Prompt, global_prompt_manager -from src.config.config import model_config, global_config +from src.config.config import model_config from src.chat.message_receive.chat_stream import ChatStream from src.chat.utils.chat_message_builder import ( get_raw_msg_by_timestamp_with_chat, build_readable_messages, ) -from datetime import datetime if TYPE_CHECKING: - from src.common.data_models.database_data_model import DatabaseMessages + pass logger = get_logger("reflect_tracker") diff --git a/src/jargon/jargon_utils.py b/src/jargon/jargon_utils.py index 56fe13ad..f42d807b 100644 --- a/src/jargon/jargon_utils.py +++ b/src/jargon/jargon_utils.py @@ -2,11 +2,9 @@ import json from typing import List, Dict, Optional, Any from src.common.logger import get_logger -from src.common.database.database_model import Jargon from src.config.config import global_config from src.chat.utils.chat_message_builder import ( build_readable_messages, - build_readable_messages_with_id, ) from src.chat.utils.utils import parse_platform_accounts diff --git a/src/main.py b/src/main.py index 23e34d61..3bcc9695 100644 --- a/src/main.py +++ b/src/main.py @@ -64,7 +64,7 @@ class MainSystem: logger.info("💡 前端将运行在 http://localhost:7999") else: logger.info("✅ WebUI 生产模式已启用") - logger.info(f"🌐 WebUI 将运行在 http://0.0.0.0:8001") + logger.info("🌐 WebUI 将运行在 http://0.0.0.0:8001") logger.info("💡 请确保已构建前端: cd MaiBot-Dashboard && bun run build") except Exception as e: diff --git a/src/plugin_system/base/config_types.py b/src/plugin_system/base/config_types.py index 5979ca54..1b174e22 100644 --- a/src/plugin_system/base/config_types.py +++ b/src/plugin_system/base/config_types.py @@ -4,7 +4,7 @@ 提供插件配置的类型定义,支持 WebUI 可视化配置编辑。 """ -from typing import Any, Optional, List, Dict, Union, Callable +from typing import Any, Optional, List, Dict, Union from dataclasses import dataclass, field From ed68f969c1e4b7de016bcc4e8b3861f26b08d8d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Sat, 29 Nov 2025 14:43:22 +0800 Subject: [PATCH 16/61] Ruff fix x3 final fix --- src/express/express_utils.py | 2 +- src/express/expression_reflector.py | 2 +- src/express/expression_selector.py | 2 +- src/plugin_system/base/config_types.py | 8 ++++---- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/express/express_utils.py b/src/express/express_utils.py index e900baa1..b0702e30 100644 --- a/src/express/express_utils.py +++ b/src/express/express_utils.py @@ -97,7 +97,7 @@ def _compute_weights(population: List[Dict]) -> List[float]: # 如果checked,权重乘以3 weights = [] - for base_weight, checked in zip(base_weights, checked_flags): + for base_weight, checked in zip(base_weights, checked_flags, strict=False): if checked: weights.append(base_weight * 3.0) else: diff --git a/src/express/expression_reflector.py b/src/express/expression_reflector.py index 4600e239..dc651e55 100644 --- a/src/express/expression_reflector.py +++ b/src/express/expression_reflector.py @@ -83,7 +83,7 @@ class ExpressionReflector: try: logger.info("[Expression Reflection] 查询未检查且未拒绝的表达") expressions = ( - Expression.select().where((Expression.checked == False) & (Expression.rejected == False)).limit(50) + Expression.select().where((~Expression.checked) & (~Expression.rejected)).limit(50) ) expr_list = list(expressions) diff --git a/src/express/expression_selector.py b/src/express/expression_selector.py index 65d84f93..7ac5ef88 100644 --- a/src/express/expression_selector.py +++ b/src/express/expression_selector.py @@ -128,7 +128,7 @@ class ExpressionSelector: # 优化:一次性查询所有相关chat_id的表达方式,排除 rejected=1 的表达 style_query = Expression.select().where( - (Expression.chat_id.in_(related_chat_ids)) & (Expression.rejected == False) + (Expression.chat_id.in_(related_chat_ids)) & (~Expression.rejected) ) style_exprs = [ diff --git a/src/plugin_system/base/config_types.py b/src/plugin_system/base/config_types.py index 1b174e22..c8537ace 100644 --- a/src/plugin_system/base/config_types.py +++ b/src/plugin_system/base/config_types.py @@ -83,19 +83,19 @@ class ConfigField: return self.input_type # 根据 type 和 choices 自动推断 - if self.type == bool: + if self.type is bool: return "switch" elif self.type in (int, float): if self.min is not None and self.max is not None: return "slider" return "number" - elif self.type == str: + elif self.type is str: if self.choices: return "select" return "text" - elif self.type == list: + elif self.type is list: return "list" - elif self.type == dict: + elif self.type is dict: return "json" else: return "text" From 26639e7ae5c95b7ae9c81d4d8db76ca0596e0b7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Sat, 29 Nov 2025 14:47:57 +0800 Subject: [PATCH 17/61] Enable push trigger for Ruff workflow Uncomment push trigger for main and dev branches --- .github/workflows/ruff.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ruff.yml b/.github/workflows/ruff.yml index 3d2e7d1f..09f76079 100644 --- a/.github/workflows/ruff.yml +++ b/.github/workflows/ruff.yml @@ -1,10 +1,10 @@ name: Ruff on: - # push: - # branches: - # - main - # - dev + push: + branches: + - main + - dev # - dev-refactor # 例如:匹配所有以 feature/ 开头的分支 # # 添加你希望触发此 workflow 的其他分支 workflow_dispatch: # 允许手动触发工作流 From 6a8a4176a049739e806390ac40a1e4a8a322b674 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Sat, 29 Nov 2025 14:54:15 +0800 Subject: [PATCH 18/61] Disable push triggers in ruff.yml Comment out push triggers for main and dev branches. --- .github/workflows/ruff.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ruff.yml b/.github/workflows/ruff.yml index 09f76079..3d2e7d1f 100644 --- a/.github/workflows/ruff.yml +++ b/.github/workflows/ruff.yml @@ -1,10 +1,10 @@ name: Ruff on: - push: - branches: - - main - - dev + # push: + # branches: + # - main + # - dev # - dev-refactor # 例如:匹配所有以 feature/ 开头的分支 # # 添加你希望触发此 workflow 的其他分支 workflow_dispatch: # 允许手动触发工作流 From a0870a8392081451a2eeeeb1c853810e7923336b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Sat, 29 Nov 2025 14:57:42 +0800 Subject: [PATCH 19/61] =?UTF-8?q?=E7=A6=81=E7=94=A8=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E7=9A=84=E6=80=9D=E8=80=83=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- template/model_config_template.toml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/template/model_config_template.toml b/template/model_config_template.toml index e7c93352..07e2af18 100644 --- a/template/model_config_template.toml +++ b/template/model_config_template.toml @@ -64,7 +64,7 @@ api_provider = "SiliconFlow" price_in = 2.0 price_out = 3.0 [models.extra_params] # 可选的额外参数配置 -enable_thinking = true # 不启用思考 +enable_thinking = true # 启用思考 [[models]] model_identifier = "Qwen/Qwen3-Next-80B-A3B-Instruct" @@ -89,8 +89,7 @@ api_provider = "SiliconFlow" price_in = 3.5 price_out = 14.0 [models.extra_params] # 可选的额外参数配置 -enable_thinking = true # 不启用思考 - +enable_thinking = true # 启用思考 [[models]] model_identifier = "deepseek-ai/DeepSeek-R1" From f68b9aa1096de81a21b0eaca6e600e85b4641b8b Mon Sep 17 00:00:00 2001 From: Ronifue Date: Sat, 29 Nov 2025 15:53:33 +0800 Subject: [PATCH 20/61] =?UTF-8?q?feat:=20=E5=AF=B9=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=96=E5=A4=84=E7=90=86=E7=9A=84toml=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96=EF=BC=8C=E4=BB=A5=E5=8F=8A=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E9=80=9A=E7=9F=A5=E6=B6=88=E6=81=AF=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E7=9A=84=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../heart_flow/heartflow_message_processor.py | 5 ++ src/chat/message_receive/storage.py | 5 ++ src/common/toml_utils.py | 70 +++++++++++++++++++ src/config/config.py | 7 +- src/webui/config_routes.py | 21 +++--- src/webui/plugin_routes.py | 9 ++- 6 files changed, 97 insertions(+), 20 deletions(-) create mode 100644 src/common/toml_utils.py diff --git a/src/chat/heart_flow/heartflow_message_processor.py b/src/chat/heart_flow/heartflow_message_processor.py index d0e1f9c9..09a3a94d 100644 --- a/src/chat/heart_flow/heartflow_message_processor.py +++ b/src/chat/heart_flow/heartflow_message_processor.py @@ -39,6 +39,11 @@ class HeartFCMessageReceiver: message_data: 原始消息字符串 """ try: + # 通知消息不处理 + if message.is_notify: + logger.debug("通知消息,跳过处理") + return + # 1. 消息解析与初始化 userinfo = message.message_info.user_info chat = message.chat_stream diff --git a/src/chat/message_receive/storage.py b/src/chat/message_receive/storage.py index 8d85d166..b70f30ff 100644 --- a/src/chat/message_receive/storage.py +++ b/src/chat/message_receive/storage.py @@ -33,6 +33,11 @@ class MessageStorage: async def store_message(message: Union[MessageSending, MessageRecv], chat_stream: ChatStream) -> None: """存储消息到数据库""" try: + # 通知消息不存储 + if isinstance(message, MessageRecv) and message.is_notify: + logger.debug("通知消息,跳过存储") + return + pattern = r".*?|.*?|.*?" # print(message) diff --git a/src/common/toml_utils.py b/src/common/toml_utils.py new file mode 100644 index 00000000..c5a0824a --- /dev/null +++ b/src/common/toml_utils.py @@ -0,0 +1,70 @@ +""" +TOML 工具函数 + +提供 TOML 文件的格式化保存功能,确保数组等元素以美观的多行格式输出。 +""" + +from typing import Any +import tomlkit +from tomlkit.items import AoT, Table, Array + + +def _format_toml_value(obj: Any, threshold: int, depth: int = 0) -> Any: + """递归格式化 TOML 值,将数组转换为多行格式""" + # 处理 AoT (Array of Tables) - 保持原样,递归处理内部 + if isinstance(obj, AoT): + for item in obj: + _format_toml_value(item, threshold, depth) + return obj + + # 处理字典类型 (dict 或 Table) + if isinstance(obj, (dict, Table)): + for k, v in obj.items(): + obj[k] = _format_toml_value(v, threshold, depth) + return obj + + # 处理列表类型 (list 或 Array) + if isinstance(obj, (list, Array)): + # 如果包含字典/表,视为 AoT 的列表形式或内联表数组,保持结构递归处理 + if obj and isinstance(obj[0], (dict, Table)): + for i, item in enumerate(obj): + # 原地修改或递归处理 + if isinstance(obj, list): + obj[i] = _format_toml_value(item, threshold, depth) + else: + _format_toml_value(item, threshold, depth) + return obj + + # 决定是否多行:仅在顶层且长度超过阈值时 + should_multiline = (depth == 0 and len(obj) > threshold) + + # 如果已经是 tomlkit Array,原地修改以保留注释 + if isinstance(obj, Array): + obj.multiline(should_multiline) + for i, item in enumerate(obj): + obj[i] = _format_toml_value(item, threshold, depth + 1) + return obj + + # 普通 list:转换为 tomlkit 数组 + arr = tomlkit.array() + arr.multiline(should_multiline) + + for item in obj: + arr.append(_format_toml_value(item, threshold, depth + 1)) + return arr + + # 其他基本类型直接返回 + return obj + + +def save_toml_with_format(data: Any, file_path: str, multiline_threshold: int = 1) -> None: + """格式化 TOML 数据并保存到文件""" + formatted = _format_toml_value(data, multiline_threshold) if multiline_threshold >= 0 else data + with open(file_path, "w", encoding="utf-8") as f: + tomlkit.dump(formatted, f) + + +def format_toml_string(data: Any, multiline_threshold: int = 1) -> str: + """格式化 TOML 数据并返回字符串""" + formatted = _format_toml_value(data, multiline_threshold) if multiline_threshold >= 0 else data + return tomlkit.dumps(formatted) diff --git a/src/config/config.py b/src/config/config.py index 1eca07fb..3f5db816 100644 --- a/src/config/config.py +++ b/src/config/config.py @@ -11,6 +11,7 @@ from rich.traceback import install from typing import List, Optional from src.common.logger import get_logger +from src.common.toml_utils import format_toml_string from src.config.config_base import ConfigBase from src.config.official_configs import ( BotConfig, @@ -252,7 +253,7 @@ def _update_config_generic(config_name: str, template_name: str): # 如果配置有更新,立即保存到文件 if config_updated: with open(old_config_path, "w", encoding="utf-8") as f: - f.write(tomlkit.dumps(old_config)) + f.write(format_toml_string(old_config)) logger.info(f"已保存更新后的{config_name}配置文件") else: logger.info(f"未检测到{config_name}模板默认值变动") @@ -313,9 +314,9 @@ def _update_config_generic(config_name: str, template_name: str): logger.info(f"开始合并{config_name}新旧配置...") _update_dict(new_config, old_config) - # 保存更新后的配置(保留注释和格式) + # 保存更新后的配置(保留注释和格式,数组多行格式化) with open(new_config_path, "w", encoding="utf-8") as f: - f.write(tomlkit.dumps(new_config)) + f.write(format_toml_string(new_config)) logger.info(f"{config_name}配置文件更新完成,建议检查新配置文件中的内容,以免丢失重要信息") diff --git a/src/webui/config_routes.py b/src/webui/config_routes.py index f26bcb09..5e54c8f7 100644 --- a/src/webui/config_routes.py +++ b/src/webui/config_routes.py @@ -8,6 +8,7 @@ from fastapi import APIRouter, HTTPException, Body from typing import Any, Annotated from src.common.logger import get_logger +from src.common.toml_utils import save_toml_with_format from src.config.config import Config, APIAdapterConfig, CONFIG_DIR, PROJECT_ROOT from src.config.official_configs import ( BotConfig, @@ -237,10 +238,9 @@ async def update_bot_config(config_data: ConfigBody): except Exception as e: raise HTTPException(status_code=400, detail=f"配置数据验证失败: {str(e)}") from e - # 保存配置文件 + # 保存配置文件(格式化数组为多行) config_path = os.path.join(CONFIG_DIR, "bot_config.toml") - with open(config_path, "w", encoding="utf-8") as f: - tomlkit.dump(config_data, f) + save_toml_with_format(config_data, config_path) logger.info("麦麦主程序配置已更新") return {"success": True, "message": "配置已保存"} @@ -261,10 +261,9 @@ async def update_model_config(config_data: ConfigBody): except Exception as e: raise HTTPException(status_code=400, detail=f"配置数据验证失败: {str(e)}") from e - # 保存配置文件 + # 保存配置文件(格式化数组为多行) config_path = os.path.join(CONFIG_DIR, "model_config.toml") - with open(config_path, "w", encoding="utf-8") as f: - tomlkit.dump(config_data, f) + save_toml_with_format(config_data, config_path) logger.info("模型配置已更新") return {"success": True, "message": "配置已保存"} @@ -312,9 +311,8 @@ async def update_bot_config_section(section_name: str, section_data: SectionBody except Exception as e: raise HTTPException(status_code=400, detail=f"配置数据验证失败: {str(e)}") from e - # 保存配置(tomlkit.dump 会保留注释) - with open(config_path, "w", encoding="utf-8") as f: - tomlkit.dump(config_data, f) + # 保存配置(格式化数组为多行,保留注释) + save_toml_with_format(config_data, config_path) logger.info(f"配置节 '{section_name}' 已更新(保留注释)") return {"success": True, "message": f"配置节 '{section_name}' 已保存"} @@ -411,9 +409,8 @@ async def update_model_config_section(section_name: str, section_data: SectionBo except Exception as e: raise HTTPException(status_code=400, detail=f"配置数据验证失败: {str(e)}") from e - # 保存配置(tomlkit.dump 会保留注释) - with open(config_path, "w", encoding="utf-8") as f: - tomlkit.dump(config_data, f) + # 保存配置(格式化数组为多行,保留注释) + save_toml_with_format(config_data, config_path) logger.info(f"配置节 '{section_name}' 已更新(保留注释)") return {"success": True, "message": f"配置节 '{section_name}' 已保存"} diff --git a/src/webui/plugin_routes.py b/src/webui/plugin_routes.py index 1236b02e..bf4784df 100644 --- a/src/webui/plugin_routes.py +++ b/src/webui/plugin_routes.py @@ -4,6 +4,7 @@ from typing import Optional, List, Dict, Any from pathlib import Path import json from src.common.logger import get_logger +from src.common.toml_utils import save_toml_with_format from src.config.config import MMC_VERSION from .git_mirror_service import get_git_mirror_service, set_update_progress_callback from .token_manager import get_token_manager @@ -1416,8 +1417,7 @@ async def update_plugin_config( # 更新值 for key, value in request.config.items(): existing_doc[key] = value - with open(config_path, "w", encoding="utf-8") as f: - tomlkit.dump(existing_doc, f) + save_toml_with_format(existing_doc, str(config_path)) logger.info(f"已更新插件配置: {plugin_id}") @@ -1544,9 +1544,8 @@ async def toggle_plugin(plugin_id: str, authorization: Optional[str] = Header(No new_enabled = not current_enabled config["plugin"]["enabled"] = new_enabled - # 写入配置(保留注释) - with open(config_path, "w", encoding="utf-8") as f: - tomlkit.dump(config, f) + # 写入配置(保留注释,格式化数组) + save_toml_with_format(config, str(config_path)) status = "启用" if new_enabled else "禁用" logger.info(f"已{status}插件: {plugin_id}") From 08c0b5929e015f9721c57c3d1051ca29e1296d8c Mon Sep 17 00:00:00 2001 From: Ronifue Date: Sat, 29 Nov 2025 16:16:31 +0800 Subject: [PATCH 21/61] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=E4=B8=80?= =?UTF-8?q?=E4=B8=AAMaibot=E9=81=87=E4=B8=8D=E5=88=B0=E4=BD=86=E6=98=AF?= =?UTF-8?q?=E4=B8=8D=E8=83=BD=E6=B6=B5=E7=9B=96Toml=E6=95=B4=E4=B8=AA?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/toml_utils.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/common/toml_utils.py b/src/common/toml_utils.py index c5a0824a..0c34f6ab 100644 --- a/src/common/toml_utils.py +++ b/src/common/toml_utils.py @@ -25,14 +25,11 @@ def _format_toml_value(obj: Any, threshold: int, depth: int = 0) -> Any: # 处理列表类型 (list 或 Array) if isinstance(obj, (list, Array)): - # 如果包含字典/表,视为 AoT 的列表形式或内联表数组,保持结构递归处理 - if obj and isinstance(obj[0], (dict, Table)): + # 如果是纯 list (非 tomlkit Array) 且包含字典/表,视为 AoT 的列表形式 + # 保持结构递归处理,避免转换为 Inline Table Array (因为 Inline Table 必须单行,复杂对象不友好) + if isinstance(obj, list) and not isinstance(obj, Array) and obj and isinstance(obj[0], (dict, Table)): for i, item in enumerate(obj): - # 原地修改或递归处理 - if isinstance(obj, list): - obj[i] = _format_toml_value(item, threshold, depth) - else: - _format_toml_value(item, threshold, depth) + obj[i] = _format_toml_value(item, threshold, depth) return obj # 决定是否多行:仅在顶层且长度超过阈值时 @@ -67,4 +64,4 @@ def save_toml_with_format(data: Any, file_path: str, multiline_threshold: int = def format_toml_string(data: Any, multiline_threshold: int = 1) -> str: """格式化 TOML 数据并返回字符串""" formatted = _format_toml_value(data, multiline_threshold) if multiline_threshold >= 0 else data - return tomlkit.dumps(formatted) + return tomlkit.dumps(formatted) \ No newline at end of file From 71edeb6be5e3d9db9750daf8752091ff696c14e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Sat, 29 Nov 2025 17:53:58 +0800 Subject: [PATCH 22/61] WebUI 6d7893532be0e517db84fbdd0c2cc5a0f53b17c4 --- ...{charts-Cdq_Jxe7.js => charts-Dhri-zxi.js} | 70 +-- webui/dist/assets/codemirror-BHeANvwm.js | 16 + webui/dist/assets/dnd-Dyi3CnuX.js | 5 + webui/dist/assets/icons-Bw5y5Hqz.js | 1 + webui/dist/assets/icons-CqUsKJFR.js | 1 - webui/dist/assets/index-CUrrfy9B.css | 1 + webui/dist/assets/index-CnFGj4Iv.js | 407 ------------------ webui/dist/assets/index-DuV8F13p.js | 52 +++ webui/dist/assets/index-_a_MShLH.css | 1 - webui/dist/assets/markdown-A1ShuLvG.js | 295 +++++++++++++ webui/dist/assets/misc-Ii-X5qWA.js | 27 ++ webui/dist/assets/radix-core-BlBHu_Lw.js | 45 ++ webui/dist/assets/radix-extra-Cw1azsjZ.js | 12 + webui/dist/assets/reactflow-B3n3_Vkw.js | 2 + webui/dist/assets/router-CWhjJi2n.js | 5 + webui/dist/assets/router-DQNkr8RI.js | 2 - webui/dist/assets/ui-vendor-BgfqR_Xz.js | 45 -- webui/dist/assets/uppy-DSH7n_-V.js | 11 + webui/dist/assets/utils-CCeOswSm.js | 6 + webui/dist/index.html | 20 +- 20 files changed, 527 insertions(+), 497 deletions(-) rename webui/dist/assets/{charts-Cdq_Jxe7.js => charts-Dhri-zxi.js} (66%) create mode 100644 webui/dist/assets/codemirror-BHeANvwm.js create mode 100644 webui/dist/assets/dnd-Dyi3CnuX.js create mode 100644 webui/dist/assets/icons-Bw5y5Hqz.js delete mode 100644 webui/dist/assets/icons-CqUsKJFR.js create mode 100644 webui/dist/assets/index-CUrrfy9B.css delete mode 100644 webui/dist/assets/index-CnFGj4Iv.js create mode 100644 webui/dist/assets/index-DuV8F13p.js delete mode 100644 webui/dist/assets/index-_a_MShLH.css create mode 100644 webui/dist/assets/markdown-A1ShuLvG.js create mode 100644 webui/dist/assets/misc-Ii-X5qWA.js create mode 100644 webui/dist/assets/radix-core-BlBHu_Lw.js create mode 100644 webui/dist/assets/radix-extra-Cw1azsjZ.js create mode 100644 webui/dist/assets/reactflow-B3n3_Vkw.js create mode 100644 webui/dist/assets/router-CWhjJi2n.js delete mode 100644 webui/dist/assets/router-DQNkr8RI.js delete mode 100644 webui/dist/assets/ui-vendor-BgfqR_Xz.js create mode 100644 webui/dist/assets/uppy-DSH7n_-V.js create mode 100644 webui/dist/assets/utils-CCeOswSm.js diff --git a/webui/dist/assets/charts-Cdq_Jxe7.js b/webui/dist/assets/charts-Dhri-zxi.js similarity index 66% rename from webui/dist/assets/charts-Cdq_Jxe7.js rename to webui/dist/assets/charts-Dhri-zxi.js index 2a290019..28ac978e 100644 --- a/webui/dist/assets/charts-Cdq_Jxe7.js +++ b/webui/dist/assets/charts-Dhri-zxi.js @@ -1,49 +1,49 @@ -import{r as N,R as S,i as or}from"./router-DQNkr8RI.js";import{c as Ai,g as ce}from"./react-vendor-Dtc2IqVY.js";function wx(e){var t,r,n="";if(typeof e=="string"||typeof e=="number")n+=e;else if(typeof e=="object")if(Array.isArray(e)){var i=e.length;for(t=0;t-1}return ru=t,ru}var nu,wd;function h1(){if(wd)return nu;wd=1;var e=La();function t(r,n){var i=this.__data__,a=e(i,r);return a<0?(++this.size,i.push([r,n])):i[a][1]=n,this}return nu=t,nu}var iu,Od;function Ba(){if(Od)return iu;Od=1;var e=c1(),t=s1(),r=l1(),n=f1(),i=h1();function a(o){var u=-1,c=o==null?0:o.length;for(this.clear();++u0?1:-1},er=function(t){return ur(t)&&t.indexOf("%")===t.length-1},q=function(t){return R1(t)&&!gi(t)},D1=function(t){return J(t)},Se=function(t){return q(t)||ur(t)},N1=0,un=function(t){var r=++N1;return"".concat(t||"").concat(r)},Le=function(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(!q(t)&&!ur(t))return n;var a;if(er(t)){var o=t.indexOf("%");a=r*parseFloat(t.slice(0,o))/100}else a=+t;return gi(a)&&(a=n),i&&a>r&&(a=r),a},qt=function(t){if(!t)return null;var r=Object.keys(t);return r&&r.length?t[r[0]]:null},q1=function(t){if(!Array.isArray(t))return!1;for(var r=t.length,n={},i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function K1(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function nf(e){"@babel/helpers - typeof";return nf=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},nf(e)}var Yd={click:"onClick",mousedown:"onMouseDown",mouseup:"onMouseUp",mouseover:"onMouseOver",mousemove:"onMouseMove",mouseout:"onMouseOut",mouseenter:"onMouseEnter",mouseleave:"onMouseLeave",touchcancel:"onTouchCancel",touchend:"onTouchEnd",touchmove:"onTouchMove",touchstart:"onTouchStart",contextmenu:"onContextMenu",dblclick:"onDoubleClick"},Et=function(t){return typeof t=="string"?t:t?t.displayName||t.name||"Component":""},Zd=null,Mu=null,Ih=function e(t){if(t===Zd&&Array.isArray(Mu))return Mu;var r=[];return N.Children.forEach(t,function(n){J(n)||($1.isFragment(n)?r=r.concat(e(n.props.children)):r.push(n))}),Mu=r,Zd=t,r};function Ye(e,t){var r=[],n=[];return Array.isArray(t)?n=t.map(function(i){return Et(i)}):n=[Et(t)],Ih(e).forEach(function(i){var a=Xe(i,"type.displayName")||Xe(i,"type.name");n.indexOf(a)!==-1&&r.push(i)}),r}function He(e,t){var r=Ye(e,t);return r&&r[0]}var Jd=function(t){if(!t||!t.props)return!1;var r=t.props,n=r.width,i=r.height;return!(!q(n)||n<=0||!q(i)||i<=0)},H1=["a","altGlyph","altGlyphDef","altGlyphItem","animate","animateColor","animateMotion","animateTransform","circle","clipPath","color-profile","cursor","defs","desc","ellipse","feBlend","feColormatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","font","font-face","font-face-format","font-face-name","font-face-url","foreignObject","g","glyph","glyphRef","hkern","image","line","lineGradient","marker","mask","metadata","missing-glyph","mpath","path","pattern","polygon","polyline","radialGradient","rect","script","set","stop","style","svg","switch","symbol","text","textPath","title","tref","tspan","use","view","vkern"],G1=function(t){return t&&t.type&&ur(t.type)&&H1.indexOf(t.type)>=0},V1=function(t){return t&&nf(t)==="object"&&"clipDot"in t},X1=function(t,r,n,i){var a,o=(a=ju?.[i])!==null&&a!==void 0?a:[];return r.startsWith("data-")||!X(t)&&(i&&o.includes(r)||F1.includes(r))||n&&$h.includes(r)},K=function(t,r,n){if(!t||typeof t=="function"||typeof t=="boolean")return null;var i=t;if(N.isValidElement(t)&&(i=t.props),!on(i))return null;var a={};return Object.keys(i).forEach(function(o){var u;X1((u=i)===null||u===void 0?void 0:u[o],o,r,n)&&(a[o]=i[o])}),a},af=function e(t,r){if(t===r)return!0;var n=N.Children.count(t);if(n!==N.Children.count(r))return!1;if(n===0)return!0;if(n===1)return Qd(Array.isArray(t)?t[0]:t,Array.isArray(r)?r[0]:r);for(var i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function eA(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function uf(e){var t=e.children,r=e.width,n=e.height,i=e.viewBox,a=e.className,o=e.style,u=e.title,c=e.desc,s=Q1(e,J1),f=i||{width:r,height:n,x:0,y:0},l=te("recharts-surface",a);return S.createElement("svg",of({},K(s,!0,"svg"),{className:l,width:r,height:n,style:o,viewBox:"".concat(f.x," ").concat(f.y," ").concat(f.width," ").concat(f.height)}),S.createElement("title",null,u),S.createElement("desc",null,c),t)}var tA=["children","className"];function cf(){return cf=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function nA(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}var ne=S.forwardRef(function(e,t){var r=e.children,n=e.className,i=rA(e,tA),a=te("recharts-layer",n);return S.createElement("g",cf({className:a},K(i,!0),{ref:t}),r)}),st=function(t,r){for(var n=arguments.length,i=new Array(n>2?n-2:0),a=2;aa?0:a+r),n=n>a?a:n,n<0&&(n+=a),a=r>n?0:n-r>>>0,r>>>=0;for(var o=Array(a);++i=a?r:e(r,n,i)}return Iu=t,Iu}var Cu,nv;function jx(){if(nv)return Cu;nv=1;var e="\\ud800-\\udfff",t="\\u0300-\\u036f",r="\\ufe20-\\ufe2f",n="\\u20d0-\\u20ff",i=t+r+n,a="\\ufe0e\\ufe0f",o="\\u200d",u=RegExp("["+o+e+i+a+"]");function c(s){return u.test(s)}return Cu=c,Cu}var ku,iv;function oA(){if(iv)return ku;iv=1;function e(t){return t.split("")}return ku=e,ku}var Ru,av;function uA(){if(av)return Ru;av=1;var e="\\ud800-\\udfff",t="\\u0300-\\u036f",r="\\ufe20-\\ufe2f",n="\\u20d0-\\u20ff",i=t+r+n,a="\\ufe0e\\ufe0f",o="["+e+"]",u="["+i+"]",c="\\ud83c[\\udffb-\\udfff]",s="(?:"+u+"|"+c+")",f="[^"+e+"]",l="(?:\\ud83c[\\udde6-\\uddff]){2}",h="[\\ud800-\\udbff][\\udc00-\\udfff]",p="\\u200d",y=s+"?",v="["+a+"]?",d="(?:"+p+"(?:"+[f,l,h].join("|")+")"+v+y+")*",m=v+y+d,x="(?:"+[f+u+"?",u,l,h,o].join("|")+")",w=RegExp(c+"(?="+c+")|"+x+m,"g");function O(g){return g.match(w)||[]}return Ru=O,Ru}var Du,ov;function cA(){if(ov)return Du;ov=1;var e=oA(),t=jx(),r=uA();function n(i){return t(i)?r(i):e(i)}return Du=n,Du}var Nu,uv;function sA(){if(uv)return Nu;uv=1;var e=aA(),t=jx(),r=cA(),n=Sx();function i(a){return function(o){o=n(o);var u=t(o)?r(o):void 0,c=u?u[0]:o.charAt(0),s=u?e(u,1).join(""):o.slice(1);return c[a]()+s}}return Nu=i,Nu}var qu,cv;function lA(){if(cv)return qu;cv=1;var e=sA(),t=e("toUpperCase");return qu=t,qu}var fA=lA();const Wa=ce(fA);function he(e){return function(){return e}}const Mx=Math.cos,Ui=Math.sin,pt=Math.sqrt,Wi=Math.PI,za=2*Wi,sf=Math.PI,lf=2*sf,Zt=1e-6,hA=lf-Zt;function $x(e){this._+=e[0];for(let t=1,r=e.length;t=0))throw new Error(`invalid digits: ${e}`);if(t>15)return $x;const r=10**t;return function(n){this._+=n[0];for(let i=1,a=n.length;iZt)if(!(Math.abs(l*c-s*f)>Zt)||!a)this._append`L${this._x1=t},${this._y1=r}`;else{let p=n-o,y=i-u,v=c*c+s*s,d=p*p+y*y,m=Math.sqrt(v),x=Math.sqrt(h),w=a*Math.tan((sf-Math.acos((v+h-d)/(2*m*x)))/2),O=w/x,g=w/m;Math.abs(O-1)>Zt&&this._append`L${t+O*f},${r+O*l}`,this._append`A${a},${a},0,0,${+(l*p>f*y)},${this._x1=t+g*c},${this._y1=r+g*s}`}}arc(t,r,n,i,a,o){if(t=+t,r=+r,n=+n,o=!!o,n<0)throw new Error(`negative radius: ${n}`);let u=n*Math.cos(i),c=n*Math.sin(i),s=t+u,f=r+c,l=1^o,h=o?i-a:a-i;this._x1===null?this._append`M${s},${f}`:(Math.abs(this._x1-s)>Zt||Math.abs(this._y1-f)>Zt)&&this._append`L${s},${f}`,n&&(h<0&&(h=h%lf+lf),h>hA?this._append`A${n},${n},0,1,${l},${t-u},${r-c}A${n},${n},0,1,${l},${this._x1=s},${this._y1=f}`:h>Zt&&this._append`A${n},${n},0,${+(h>=sf)},${l},${this._x1=t+n*Math.cos(a)},${this._y1=r+n*Math.sin(a)}`)}rect(t,r,n,i){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}}function Ch(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{const n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);t=n}return e},()=>new dA(t)}function kh(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function Ix(e){this._context=e}Ix.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function Ka(e){return new Ix(e)}function Cx(e){return e[0]}function kx(e){return e[1]}function Rx(e,t){var r=he(!0),n=null,i=Ka,a=null,o=Ch(u);e=typeof e=="function"?e:e===void 0?Cx:he(e),t=typeof t=="function"?t:t===void 0?kx:he(t);function u(c){var s,f=(c=kh(c)).length,l,h=!1,p;for(n==null&&(a=i(p=o())),s=0;s<=f;++s)!(s=p;--y)u.point(w[y],O[y]);u.lineEnd(),u.areaEnd()}m&&(w[h]=+e(d,h,l),O[h]=+t(d,h,l),u.point(n?+n(d,h,l):w[h],r?+r(d,h,l):O[h]))}if(x)return u=null,x+""||null}function f(){return Rx().defined(i).curve(o).context(a)}return s.x=function(l){return arguments.length?(e=typeof l=="function"?l:he(+l),n=null,s):e},s.x0=function(l){return arguments.length?(e=typeof l=="function"?l:he(+l),s):e},s.x1=function(l){return arguments.length?(n=l==null?null:typeof l=="function"?l:he(+l),s):n},s.y=function(l){return arguments.length?(t=typeof l=="function"?l:he(+l),r=null,s):t},s.y0=function(l){return arguments.length?(t=typeof l=="function"?l:he(+l),s):t},s.y1=function(l){return arguments.length?(r=l==null?null:typeof l=="function"?l:he(+l),s):r},s.lineX0=s.lineY0=function(){return f().x(e).y(t)},s.lineY1=function(){return f().x(e).y(r)},s.lineX1=function(){return f().x(n).y(t)},s.defined=function(l){return arguments.length?(i=typeof l=="function"?l:he(!!l),s):i},s.curve=function(l){return arguments.length?(o=l,a!=null&&(u=o(a)),s):o},s.context=function(l){return arguments.length?(l==null?a=u=null:u=o(a=l),s):a},s}class Dx{constructor(t,r){this._context=t,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(t,r){switch(t=+t,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(t,r):this._context.moveTo(t,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,r,t,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,t,this._y0,t,r);break}}this._x0=t,this._y0=r}}function vA(e){return new Dx(e,!0)}function yA(e){return new Dx(e,!1)}const Rh={draw(e,t){const r=pt(t/Wi);e.moveTo(r,0),e.arc(0,0,r,0,za)}},gA={draw(e,t){const r=pt(t/5)/2;e.moveTo(-3*r,-r),e.lineTo(-r,-r),e.lineTo(-r,-3*r),e.lineTo(r,-3*r),e.lineTo(r,-r),e.lineTo(3*r,-r),e.lineTo(3*r,r),e.lineTo(r,r),e.lineTo(r,3*r),e.lineTo(-r,3*r),e.lineTo(-r,r),e.lineTo(-3*r,r),e.closePath()}},Nx=pt(1/3),mA=Nx*2,bA={draw(e,t){const r=pt(t/mA),n=r*Nx;e.moveTo(0,-r),e.lineTo(n,0),e.lineTo(0,r),e.lineTo(-n,0),e.closePath()}},xA={draw(e,t){const r=pt(t),n=-r/2;e.rect(n,n,r,r)}},wA=.8908130915292852,qx=Ui(Wi/10)/Ui(7*Wi/10),OA=Ui(za/10)*qx,_A=-Mx(za/10)*qx,AA={draw(e,t){const r=pt(t*wA),n=OA*r,i=_A*r;e.moveTo(0,-r),e.lineTo(n,i);for(let a=1;a<5;++a){const o=za*a/5,u=Mx(o),c=Ui(o);e.lineTo(c*r,-u*r),e.lineTo(u*n-c*i,c*n+u*i)}e.closePath()}},Lu=pt(3),SA={draw(e,t){const r=-pt(t/(Lu*3));e.moveTo(0,r*2),e.lineTo(-Lu*r,-r),e.lineTo(Lu*r,-r),e.closePath()}},Je=-.5,Qe=pt(3)/2,ff=1/pt(12),PA=(ff/2+1)*3,TA={draw(e,t){const r=pt(t/PA),n=r/2,i=r*ff,a=n,o=r*ff+r,u=-a,c=o;e.moveTo(n,i),e.lineTo(a,o),e.lineTo(u,c),e.lineTo(Je*n-Qe*i,Qe*n+Je*i),e.lineTo(Je*a-Qe*o,Qe*a+Je*o),e.lineTo(Je*u-Qe*c,Qe*u+Je*c),e.lineTo(Je*n+Qe*i,Je*i-Qe*n),e.lineTo(Je*a+Qe*o,Je*o-Qe*a),e.lineTo(Je*u+Qe*c,Je*c-Qe*u),e.closePath()}};function EA(e,t){let r=null,n=Ch(i);e=typeof e=="function"?e:he(e||Rh),t=typeof t=="function"?t:he(t===void 0?64:+t);function i(){let a;if(r||(r=a=n()),e.apply(this,arguments).draw(r,+t.apply(this,arguments)),a)return r=null,a+""||null}return i.type=function(a){return arguments.length?(e=typeof a=="function"?a:he(a),i):e},i.size=function(a){return arguments.length?(t=typeof a=="function"?a:he(+a),i):t},i.context=function(a){return arguments.length?(r=a??null,i):r},i}function zi(){}function Ki(e,t,r){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+r)/6)}function Lx(e){this._context=e}Lx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Ki(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Ki(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function jA(e){return new Lx(e)}function Bx(e){this._context=e}Bx.prototype={areaStart:zi,areaEnd:zi,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:Ki(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function MA(e){return new Bx(e)}function Fx(e){this._context=e}Fx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+e)/6,n=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:Ki(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function $A(e){return new Fx(e)}function Ux(e){this._context=e}Ux.prototype={areaStart:zi,areaEnd:zi,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};function IA(e){return new Ux(e)}function sv(e){return e<0?-1:1}function lv(e,t,r){var n=e._x1-e._x0,i=t-e._x1,a=(e._y1-e._y0)/(n||i<0&&-0),o=(r-e._y1)/(i||n<0&&-0),u=(a*i+o*n)/(n+i);return(sv(a)+sv(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(u))||0}function fv(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function Bu(e,t,r){var n=e._x0,i=e._y0,a=e._x1,o=e._y1,u=(a-n)/3;e._context.bezierCurveTo(n+u,i+u*t,a-u,o-u*r,a,o)}function Hi(e){this._context=e}Hi.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Bu(this,this._t0,fv(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,Bu(this,fv(this,r=lv(this,e,t)),r);break;default:Bu(this,this._t0,r=lv(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};function Wx(e){this._context=new zx(e)}(Wx.prototype=Object.create(Hi.prototype)).point=function(e,t){Hi.prototype.point.call(this,t,e)};function zx(e){this._context=e}zx.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,r,n,i,a){this._context.bezierCurveTo(t,e,n,r,a,i)}};function CA(e){return new Hi(e)}function kA(e){return new Wx(e)}function Kx(e){this._context=e}Kx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,r=e.length;if(r)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),r===2)this._context.lineTo(e[1],t[1]);else for(var n=hv(e),i=hv(t),a=0,o=1;o=0;--t)i[t]=(o[t]-i[t+1])/a[t];for(a[r-1]=(e[r]+i[r-1])/2,t=0;t=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}break}}this._x=e,this._y=t}};function DA(e){return new Ha(e,.5)}function NA(e){return new Ha(e,0)}function qA(e){return new Ha(e,1)}function Ir(e,t){if((o=e.length)>1)for(var r=1,n,i,a=e[t[0]],o,u=a.length;r=0;)r[t]=t;return r}function LA(e,t){return e[t]}function BA(e){const t=[];return t.key=e,t}function FA(){var e=he([]),t=hf,r=Ir,n=LA;function i(a){var o=Array.from(e.apply(this,arguments),BA),u,c=o.length,s=-1,f;for(const l of a)for(u=0,++s;u0){for(var r,n,i=0,a=e[0].length,o;i0){for(var r=0,n=e[t[0]],i,a=n.length;r0)||!((a=(i=e[t[0]]).length)>0))){for(var r=0,n=1,i,a,o;n=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function YA(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}var Hx={symbolCircle:Rh,symbolCross:gA,symbolDiamond:bA,symbolSquare:xA,symbolStar:AA,symbolTriangle:SA,symbolWye:TA},ZA=Math.PI/180,JA=function(t){var r="symbol".concat(Wa(t));return Hx[r]||Rh},QA=function(t,r,n){if(r==="area")return t;switch(n){case"cross":return 5*t*t/9;case"diamond":return .5*t*t/Math.sqrt(3);case"square":return t*t;case"star":{var i=18*ZA;return 1.25*t*t*(Math.tan(i)-Math.tan(i*2)*Math.pow(Math.tan(i),2))}case"triangle":return Math.sqrt(3)*t*t/4;case"wye":return(21-10*Math.sqrt(3))*t*t/8;default:return Math.PI*t*t/4}},eS=function(t,r){Hx["symbol".concat(Wa(t))]=r},Dh=function(t){var r=t.type,n=r===void 0?"circle":r,i=t.size,a=i===void 0?64:i,o=t.sizeType,u=o===void 0?"area":o,c=XA(t,KA),s=dv(dv({},c),{},{type:n,size:a,sizeType:u}),f=function(){var d=JA(n),m=EA().type(d).size(QA(a,u,n));return m()},l=s.className,h=s.cx,p=s.cy,y=K(s,!0);return h===+h&&p===+p&&a===+a?S.createElement("path",pf({},y,{className:te("recharts-symbols",l),transform:"translate(".concat(h,", ").concat(p,")"),d:f()})):null};Dh.registerSymbol=eS;function Cr(e){"@babel/helpers - typeof";return Cr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Cr(e)}function df(){return df=Object.assign?Object.assign.bind():function(e){for(var t=1;t-1}return ru=t,ru}var nu,wd;function f1(){if(wd)return nu;wd=1;var e=La();function t(r,n){var i=this.__data__,a=e(i,r);return a<0?(++this.size,i.push([r,n])):i[a][1]=n,this}return nu=t,nu}var iu,Od;function Ba(){if(Od)return iu;Od=1;var e=u1(),t=c1(),r=s1(),n=l1(),i=f1();function a(o){var u=-1,c=o==null?0:o.length;for(this.clear();++u0?1:-1},er=function(t){return ur(t)&&t.indexOf("%")===t.length-1},q=function(t){return k1(t)&&!gi(t)},R1=function(t){return J(t)},Se=function(t){return q(t)||ur(t)},D1=0,un=function(t){var r=++D1;return"".concat(t||"").concat(r)},Le=function(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(!q(t)&&!ur(t))return n;var a;if(er(t)){var o=t.indexOf("%");a=r*parseFloat(t.slice(0,o))/100}else a=+t;return gi(a)&&(a=n),i&&a>r&&(a=r),a},qt=function(t){if(!t)return null;var r=Object.keys(t);return r&&r.length?t[r[0]]:null},N1=function(t){if(!Array.isArray(t))return!1;for(var r=t.length,n={},i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function z1(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function nf(e){"@babel/helpers - typeof";return nf=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},nf(e)}var Yd={click:"onClick",mousedown:"onMouseDown",mouseup:"onMouseUp",mouseover:"onMouseOver",mousemove:"onMouseMove",mouseout:"onMouseOut",mouseenter:"onMouseEnter",mouseleave:"onMouseLeave",touchcancel:"onTouchCancel",touchend:"onTouchEnd",touchmove:"onTouchMove",touchstart:"onTouchStart",contextmenu:"onContextMenu",dblclick:"onDoubleClick"},Et=function(t){return typeof t=="string"?t:t?t.displayName||t.name||"Component":""},Zd=null,Mu=null,Ih=function e(t){if(t===Zd&&Array.isArray(Mu))return Mu;var r=[];return N.Children.forEach(t,function(n){J(n)||(M1.isFragment(n)?r=r.concat(e(n.props.children)):r.push(n))}),Mu=r,Zd=t,r};function Ye(e,t){var r=[],n=[];return Array.isArray(t)?n=t.map(function(i){return Et(i)}):n=[Et(t)],Ih(e).forEach(function(i){var a=Xe(i,"type.displayName")||Xe(i,"type.name");n.indexOf(a)!==-1&&r.push(i)}),r}function He(e,t){var r=Ye(e,t);return r&&r[0]}var Jd=function(t){if(!t||!t.props)return!1;var r=t.props,n=r.width,i=r.height;return!(!q(n)||n<=0||!q(i)||i<=0)},K1=["a","altGlyph","altGlyphDef","altGlyphItem","animate","animateColor","animateMotion","animateTransform","circle","clipPath","color-profile","cursor","defs","desc","ellipse","feBlend","feColormatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence","filter","font","font-face","font-face-format","font-face-name","font-face-url","foreignObject","g","glyph","glyphRef","hkern","image","line","lineGradient","marker","mask","metadata","missing-glyph","mpath","path","pattern","polygon","polyline","radialGradient","rect","script","set","stop","style","svg","switch","symbol","text","textPath","title","tref","tspan","use","view","vkern"],H1=function(t){return t&&t.type&&ur(t.type)&&K1.indexOf(t.type)>=0},G1=function(t){return t&&nf(t)==="object"&&"clipDot"in t},V1=function(t,r,n,i){var a,o=(a=ju?.[i])!==null&&a!==void 0?a:[];return r.startsWith("data-")||!X(t)&&(i&&o.includes(r)||B1.includes(r))||n&&$h.includes(r)},K=function(t,r,n){if(!t||typeof t=="function"||typeof t=="boolean")return null;var i=t;if(N.isValidElement(t)&&(i=t.props),!on(i))return null;var a={};return Object.keys(i).forEach(function(o){var u;V1((u=i)===null||u===void 0?void 0:u[o],o,r,n)&&(a[o]=i[o])}),a},af=function e(t,r){if(t===r)return!0;var n=N.Children.count(t);if(n!==N.Children.count(r))return!1;if(n===0)return!0;if(n===1)return Qd(Array.isArray(t)?t[0]:t,Array.isArray(r)?r[0]:r);for(var i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Q1(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function uf(e){var t=e.children,r=e.width,n=e.height,i=e.viewBox,a=e.className,o=e.style,u=e.title,c=e.desc,s=J1(e,Z1),f=i||{width:r,height:n,x:0,y:0},l=te("recharts-surface",a);return S.createElement("svg",of({},K(s,!0,"svg"),{className:l,width:r,height:n,style:o,viewBox:"".concat(f.x," ").concat(f.y," ").concat(f.width," ").concat(f.height)}),S.createElement("title",null,u),S.createElement("desc",null,c),t)}var eA=["children","className"];function cf(){return cf=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function rA(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}var ne=S.forwardRef(function(e,t){var r=e.children,n=e.className,i=tA(e,eA),a=te("recharts-layer",n);return S.createElement("g",cf({className:a},K(i,!0),{ref:t}),r)}),st=function(t,r){for(var n=arguments.length,i=new Array(n>2?n-2:0),a=2;aa?0:a+r),n=n>a?a:n,n<0&&(n+=a),a=r>n?0:n-r>>>0,r>>>=0;for(var o=Array(a);++i=a?r:e(r,n,i)}return Iu=t,Iu}var Cu,nv;function Ex(){if(nv)return Cu;nv=1;var e="\\ud800-\\udfff",t="\\u0300-\\u036f",r="\\ufe20-\\ufe2f",n="\\u20d0-\\u20ff",i=t+r+n,a="\\ufe0e\\ufe0f",o="\\u200d",u=RegExp("["+o+e+i+a+"]");function c(s){return u.test(s)}return Cu=c,Cu}var ku,iv;function aA(){if(iv)return ku;iv=1;function e(t){return t.split("")}return ku=e,ku}var Ru,av;function oA(){if(av)return Ru;av=1;var e="\\ud800-\\udfff",t="\\u0300-\\u036f",r="\\ufe20-\\ufe2f",n="\\u20d0-\\u20ff",i=t+r+n,a="\\ufe0e\\ufe0f",o="["+e+"]",u="["+i+"]",c="\\ud83c[\\udffb-\\udfff]",s="(?:"+u+"|"+c+")",f="[^"+e+"]",l="(?:\\ud83c[\\udde6-\\uddff]){2}",h="[\\ud800-\\udbff][\\udc00-\\udfff]",p="\\u200d",y=s+"?",v="["+a+"]?",d="(?:"+p+"(?:"+[f,l,h].join("|")+")"+v+y+")*",m=v+y+d,x="(?:"+[f+u+"?",u,l,h,o].join("|")+")",w=RegExp(c+"(?="+c+")|"+x+m,"g");function O(g){return g.match(w)||[]}return Ru=O,Ru}var Du,ov;function uA(){if(ov)return Du;ov=1;var e=aA(),t=Ex(),r=oA();function n(i){return t(i)?r(i):e(i)}return Du=n,Du}var Nu,uv;function cA(){if(uv)return Nu;uv=1;var e=iA(),t=Ex(),r=uA(),n=Ax();function i(a){return function(o){o=n(o);var u=t(o)?r(o):void 0,c=u?u[0]:o.charAt(0),s=u?e(u,1).join(""):o.slice(1);return c[a]()+s}}return Nu=i,Nu}var qu,cv;function sA(){if(cv)return qu;cv=1;var e=cA(),t=e("toUpperCase");return qu=t,qu}var lA=sA();const Wa=ce(lA);function he(e){return function(){return e}}const jx=Math.cos,Ui=Math.sin,pt=Math.sqrt,Wi=Math.PI,za=2*Wi,sf=Math.PI,lf=2*sf,Zt=1e-6,fA=lf-Zt;function Mx(e){this._+=e[0];for(let t=1,r=e.length;t=0))throw new Error(`invalid digits: ${e}`);if(t>15)return Mx;const r=10**t;return function(n){this._+=n[0];for(let i=1,a=n.length;iZt)if(!(Math.abs(l*c-s*f)>Zt)||!a)this._append`L${this._x1=t},${this._y1=r}`;else{let p=n-o,y=i-u,v=c*c+s*s,d=p*p+y*y,m=Math.sqrt(v),x=Math.sqrt(h),w=a*Math.tan((sf-Math.acos((v+h-d)/(2*m*x)))/2),O=w/x,g=w/m;Math.abs(O-1)>Zt&&this._append`L${t+O*f},${r+O*l}`,this._append`A${a},${a},0,0,${+(l*p>f*y)},${this._x1=t+g*c},${this._y1=r+g*s}`}}arc(t,r,n,i,a,o){if(t=+t,r=+r,n=+n,o=!!o,n<0)throw new Error(`negative radius: ${n}`);let u=n*Math.cos(i),c=n*Math.sin(i),s=t+u,f=r+c,l=1^o,h=o?i-a:a-i;this._x1===null?this._append`M${s},${f}`:(Math.abs(this._x1-s)>Zt||Math.abs(this._y1-f)>Zt)&&this._append`L${s},${f}`,n&&(h<0&&(h=h%lf+lf),h>fA?this._append`A${n},${n},0,1,${l},${t-u},${r-c}A${n},${n},0,1,${l},${this._x1=s},${this._y1=f}`:h>Zt&&this._append`A${n},${n},0,${+(h>=sf)},${l},${this._x1=t+n*Math.cos(a)},${this._y1=r+n*Math.sin(a)}`)}rect(t,r,n,i){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+r}h${n=+n}v${+i}h${-n}Z`}toString(){return this._}}function Ch(e){let t=3;return e.digits=function(r){if(!arguments.length)return t;if(r==null)t=null;else{const n=Math.floor(r);if(!(n>=0))throw new RangeError(`invalid digits: ${r}`);t=n}return e},()=>new pA(t)}function kh(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function $x(e){this._context=e}$x.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function Ka(e){return new $x(e)}function Ix(e){return e[0]}function Cx(e){return e[1]}function kx(e,t){var r=he(!0),n=null,i=Ka,a=null,o=Ch(u);e=typeof e=="function"?e:e===void 0?Ix:he(e),t=typeof t=="function"?t:t===void 0?Cx:he(t);function u(c){var s,f=(c=kh(c)).length,l,h=!1,p;for(n==null&&(a=i(p=o())),s=0;s<=f;++s)!(s=p;--y)u.point(w[y],O[y]);u.lineEnd(),u.areaEnd()}m&&(w[h]=+e(d,h,l),O[h]=+t(d,h,l),u.point(n?+n(d,h,l):w[h],r?+r(d,h,l):O[h]))}if(x)return u=null,x+""||null}function f(){return kx().defined(i).curve(o).context(a)}return s.x=function(l){return arguments.length?(e=typeof l=="function"?l:he(+l),n=null,s):e},s.x0=function(l){return arguments.length?(e=typeof l=="function"?l:he(+l),s):e},s.x1=function(l){return arguments.length?(n=l==null?null:typeof l=="function"?l:he(+l),s):n},s.y=function(l){return arguments.length?(t=typeof l=="function"?l:he(+l),r=null,s):t},s.y0=function(l){return arguments.length?(t=typeof l=="function"?l:he(+l),s):t},s.y1=function(l){return arguments.length?(r=l==null?null:typeof l=="function"?l:he(+l),s):r},s.lineX0=s.lineY0=function(){return f().x(e).y(t)},s.lineY1=function(){return f().x(e).y(r)},s.lineX1=function(){return f().x(n).y(t)},s.defined=function(l){return arguments.length?(i=typeof l=="function"?l:he(!!l),s):i},s.curve=function(l){return arguments.length?(o=l,a!=null&&(u=o(a)),s):o},s.context=function(l){return arguments.length?(l==null?a=u=null:u=o(a=l),s):a},s}class Rx{constructor(t,r){this._context=t,this._x=r}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(t,r){switch(t=+t,r=+r,this._point){case 0:{this._point=1,this._line?this._context.lineTo(t,r):this._context.moveTo(t,r);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,r,t,r):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+r)/2,t,this._y0,t,r);break}}this._x0=t,this._y0=r}}function dA(e){return new Rx(e,!0)}function vA(e){return new Rx(e,!1)}const Rh={draw(e,t){const r=pt(t/Wi);e.moveTo(r,0),e.arc(0,0,r,0,za)}},yA={draw(e,t){const r=pt(t/5)/2;e.moveTo(-3*r,-r),e.lineTo(-r,-r),e.lineTo(-r,-3*r),e.lineTo(r,-3*r),e.lineTo(r,-r),e.lineTo(3*r,-r),e.lineTo(3*r,r),e.lineTo(r,r),e.lineTo(r,3*r),e.lineTo(-r,3*r),e.lineTo(-r,r),e.lineTo(-3*r,r),e.closePath()}},Dx=pt(1/3),gA=Dx*2,mA={draw(e,t){const r=pt(t/gA),n=r*Dx;e.moveTo(0,-r),e.lineTo(n,0),e.lineTo(0,r),e.lineTo(-n,0),e.closePath()}},bA={draw(e,t){const r=pt(t),n=-r/2;e.rect(n,n,r,r)}},xA=.8908130915292852,Nx=Ui(Wi/10)/Ui(7*Wi/10),wA=Ui(za/10)*Nx,OA=-jx(za/10)*Nx,_A={draw(e,t){const r=pt(t*xA),n=wA*r,i=OA*r;e.moveTo(0,-r),e.lineTo(n,i);for(let a=1;a<5;++a){const o=za*a/5,u=jx(o),c=Ui(o);e.lineTo(c*r,-u*r),e.lineTo(u*n-c*i,c*n+u*i)}e.closePath()}},Lu=pt(3),AA={draw(e,t){const r=-pt(t/(Lu*3));e.moveTo(0,r*2),e.lineTo(-Lu*r,-r),e.lineTo(Lu*r,-r),e.closePath()}},Je=-.5,Qe=pt(3)/2,ff=1/pt(12),SA=(ff/2+1)*3,PA={draw(e,t){const r=pt(t/SA),n=r/2,i=r*ff,a=n,o=r*ff+r,u=-a,c=o;e.moveTo(n,i),e.lineTo(a,o),e.lineTo(u,c),e.lineTo(Je*n-Qe*i,Qe*n+Je*i),e.lineTo(Je*a-Qe*o,Qe*a+Je*o),e.lineTo(Je*u-Qe*c,Qe*u+Je*c),e.lineTo(Je*n+Qe*i,Je*i-Qe*n),e.lineTo(Je*a+Qe*o,Je*o-Qe*a),e.lineTo(Je*u+Qe*c,Je*c-Qe*u),e.closePath()}};function TA(e,t){let r=null,n=Ch(i);e=typeof e=="function"?e:he(e||Rh),t=typeof t=="function"?t:he(t===void 0?64:+t);function i(){let a;if(r||(r=a=n()),e.apply(this,arguments).draw(r,+t.apply(this,arguments)),a)return r=null,a+""||null}return i.type=function(a){return arguments.length?(e=typeof a=="function"?a:he(a),i):e},i.size=function(a){return arguments.length?(t=typeof a=="function"?a:he(+a),i):t},i.context=function(a){return arguments.length?(r=a??null,i):r},i}function zi(){}function Ki(e,t,r){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+r)/6)}function qx(e){this._context=e}qx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Ki(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Ki(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function EA(e){return new qx(e)}function Lx(e){this._context=e}Lx.prototype={areaStart:zi,areaEnd:zi,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:{this._context.moveTo(this._x2,this._y2),this._context.closePath();break}case 2:{this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break}case 3:{this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:Ki(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function jA(e){return new Lx(e)}function Bx(e){this._context=e}Bx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+e)/6,n=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(r,n):this._context.moveTo(r,n);break;case 3:this._point=4;default:Ki(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function MA(e){return new Bx(e)}function Fx(e){this._context=e}Fx.prototype={areaStart:zi,areaEnd:zi,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};function $A(e){return new Fx(e)}function sv(e){return e<0?-1:1}function lv(e,t,r){var n=e._x1-e._x0,i=t-e._x1,a=(e._y1-e._y0)/(n||i<0&&-0),o=(r-e._y1)/(i||n<0&&-0),u=(a*i+o*n)/(n+i);return(sv(a)+sv(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(u))||0}function fv(e,t){var r=e._x1-e._x0;return r?(3*(e._y1-e._y0)/r-t)/2:t}function Bu(e,t,r){var n=e._x0,i=e._y0,a=e._x1,o=e._y1,u=(a-n)/3;e._context.bezierCurveTo(n+u,i+u*t,a-u,o-u*r,a,o)}function Hi(e){this._context=e}Hi.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:Bu(this,this._t0,fv(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var r=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,Bu(this,fv(this,r=lv(this,e,t)),r);break;default:Bu(this,this._t0,r=lv(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=r}}};function Ux(e){this._context=new Wx(e)}(Ux.prototype=Object.create(Hi.prototype)).point=function(e,t){Hi.prototype.point.call(this,t,e)};function Wx(e){this._context=e}Wx.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,r,n,i,a){this._context.bezierCurveTo(t,e,n,r,a,i)}};function IA(e){return new Hi(e)}function CA(e){return new Ux(e)}function zx(e){this._context=e}zx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,r=e.length;if(r)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),r===2)this._context.lineTo(e[1],t[1]);else for(var n=hv(e),i=hv(t),a=0,o=1;o=0;--t)i[t]=(o[t]-i[t+1])/a[t];for(a[r-1]=(e[r]+i[r-1])/2,t=0;t=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var r=this._x*(1-this._t)+e*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,t)}break}}this._x=e,this._y=t}};function RA(e){return new Ha(e,.5)}function DA(e){return new Ha(e,0)}function NA(e){return new Ha(e,1)}function Ir(e,t){if((o=e.length)>1)for(var r=1,n,i,a=e[t[0]],o,u=a.length;r=0;)r[t]=t;return r}function qA(e,t){return e[t]}function LA(e){const t=[];return t.key=e,t}function BA(){var e=he([]),t=hf,r=Ir,n=qA;function i(a){var o=Array.from(e.apply(this,arguments),LA),u,c=o.length,s=-1,f;for(const l of a)for(u=0,++s;u0){for(var r,n,i=0,a=e[0].length,o;i0){for(var r=0,n=e[t[0]],i,a=n.length;r0)||!((a=(i=e[t[0]]).length)>0))){for(var r=0,n=1,i,a,o;n=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function XA(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}var Kx={symbolCircle:Rh,symbolCross:yA,symbolDiamond:mA,symbolSquare:bA,symbolStar:_A,symbolTriangle:AA,symbolWye:PA},YA=Math.PI/180,ZA=function(t){var r="symbol".concat(Wa(t));return Kx[r]||Rh},JA=function(t,r,n){if(r==="area")return t;switch(n){case"cross":return 5*t*t/9;case"diamond":return .5*t*t/Math.sqrt(3);case"square":return t*t;case"star":{var i=18*YA;return 1.25*t*t*(Math.tan(i)-Math.tan(i*2)*Math.pow(Math.tan(i),2))}case"triangle":return Math.sqrt(3)*t*t/4;case"wye":return(21-10*Math.sqrt(3))*t*t/8;default:return Math.PI*t*t/4}},QA=function(t,r){Kx["symbol".concat(Wa(t))]=r},Dh=function(t){var r=t.type,n=r===void 0?"circle":r,i=t.size,a=i===void 0?64:i,o=t.sizeType,u=o===void 0?"area":o,c=VA(t,zA),s=dv(dv({},c),{},{type:n,size:a,sizeType:u}),f=function(){var d=ZA(n),m=TA().type(d).size(JA(a,u,n));return m()},l=s.className,h=s.cx,p=s.cy,y=K(s,!0);return h===+h&&p===+p&&a===+a?S.createElement("path",pf({},y,{className:te("recharts-symbols",l),transform:"translate(".concat(h,", ").concat(p,")"),d:f()})):null};Dh.registerSymbol=QA;function Cr(e){"@babel/helpers - typeof";return Cr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Cr(e)}function df(){return df=Object.assign?Object.assign.bind():function(e){for(var t=1;t`);var x=p.inactive?s:p.color;return S.createElement("li",df({className:d,style:l,key:"legend-item-".concat(y)},cr(n.props,p,y)),S.createElement(uf,{width:o,height:o,viewBox:f,style:h},n.renderIcon(p)),S.createElement("span",{className:"recharts-legend-item-text",style:{color:x}},v?v(m,p,y):m))})}},{key:"render",value:function(){var n=this.props,i=n.payload,a=n.layout,o=n.align;if(!i||!i.length)return null;var u={padding:0,margin:0,textAlign:a==="horizontal"?o:"left"};return S.createElement("ul",{className:"recharts-default-legend",style:u},this.renderItems())}}])})(N.PureComponent);Nn(Nh,"displayName","Legend");Nn(Nh,"defaultProps",{iconSize:14,layout:"horizontal",align:"center",verticalAlign:"middle",inactiveColor:"#ccc"});var Fu,yv;function lS(){if(yv)return Fu;yv=1;var e=Ba();function t(){this.__data__=new e,this.size=0}return Fu=t,Fu}var Uu,gv;function fS(){if(gv)return Uu;gv=1;function e(t){var r=this.__data__,n=r.delete(t);return this.size=r.size,n}return Uu=e,Uu}var Wu,mv;function hS(){if(mv)return Wu;mv=1;function e(t){return this.__data__.get(t)}return Wu=e,Wu}var zu,bv;function pS(){if(bv)return zu;bv=1;function e(t){return this.__data__.has(t)}return zu=e,zu}var Ku,xv;function dS(){if(xv)return Ku;xv=1;var e=Ba(),t=Th(),r=Eh(),n=200;function i(a,o){var u=this.__data__;if(u instanceof e){var c=u.__data__;if(!t||c.lengthp))return!1;var v=l.get(o),d=l.get(u);if(v&&d)return v==u&&d==o;var m=-1,x=!0,w=c&i?new e:void 0;for(l.set(o,u),l.set(u,o);++m-1&&n%1==0&&n-1&&r%1==0&&r<=e}return pc=t,pc}var dc,zv;function _S(){if(zv)return dc;zv=1;var e=kt(),t=Kh(),r=ft(),n="[object Arguments]",i="[object Array]",a="[object Boolean]",o="[object Date]",u="[object Error]",c="[object Function]",s="[object Map]",f="[object Number]",l="[object Object]",h="[object RegExp]",p="[object Set]",y="[object String]",v="[object WeakMap]",d="[object ArrayBuffer]",m="[object DataView]",x="[object Float32Array]",w="[object Float64Array]",O="[object Int8Array]",g="[object Int16Array]",b="[object Int32Array]",_="[object Uint8Array]",A="[object Uint8ClampedArray]",P="[object Uint16Array]",j="[object Uint32Array]",T={};T[x]=T[w]=T[O]=T[g]=T[b]=T[_]=T[A]=T[P]=T[j]=!0,T[n]=T[i]=T[d]=T[a]=T[m]=T[o]=T[u]=T[c]=T[s]=T[f]=T[l]=T[h]=T[p]=T[y]=T[v]=!1;function E(M){return r(M)&&t(M.length)&&!!T[e(M)]}return dc=E,dc}var vc,Kv;function Ga(){if(Kv)return vc;Kv=1;function e(t){return function(r){return t(r)}}return vc=e,vc}var Pn={exports:{}};Pn.exports;var Hv;function Hh(){return Hv||(Hv=1,(function(e,t){var r=Ox(),n=t&&!t.nodeType&&t,i=n&&!0&&e&&!e.nodeType&&e,a=i&&i.exports===n,o=a&&r.process,u=(function(){try{var c=i&&i.require&&i.require("util").types;return c||o&&o.binding&&o.binding("util")}catch{}})();e.exports=u})(Pn,Pn.exports)),Pn.exports}var yc,Gv;function rw(){if(Gv)return yc;Gv=1;var e=_S(),t=Ga(),r=Hh(),n=r&&r.isTypedArray,i=n?t(n):e;return yc=i,yc}var gc,Vv;function nw(){if(Vv)return gc;Vv=1;var e=xS(),t=Uh(),r=Fe(),n=Wh(),i=zh(),a=rw(),o=Object.prototype,u=o.hasOwnProperty;function c(s,f){var l=r(s),h=!l&&t(s),p=!l&&!h&&n(s),y=!l&&!h&&!p&&a(s),v=l||h||p||y,d=v?e(s.length,String):[],m=d.length;for(var x in s)(f||u.call(s,x))&&!(v&&(x=="length"||p&&(x=="offset"||x=="parent")||y&&(x=="buffer"||x=="byteLength"||x=="byteOffset")||i(x,m)))&&d.push(x);return d}return gc=c,gc}var mc,Xv;function Gh(){if(Xv)return mc;Xv=1;var e=Object.prototype;function t(r){var n=r&&r.constructor,i=typeof n=="function"&&n.prototype||e;return r===i}return mc=t,mc}var bc,Yv;function iw(){if(Yv)return bc;Yv=1;function e(t,r){return function(n){return t(r(n))}}return bc=e,bc}var xc,Zv;function AS(){if(Zv)return xc;Zv=1;var e=iw(),t=e(Object.keys,Object);return xc=t,xc}var wc,Jv;function SS(){if(Jv)return wc;Jv=1;var e=Gh(),t=AS(),r=Object.prototype,n=r.hasOwnProperty;function i(a){if(!e(a))return t(a);var o=[];for(var u in Object(a))n.call(a,u)&&u!="constructor"&&o.push(u);return o}return wc=i,wc}var Oc,Qv;function cn(){if(Qv)return Oc;Qv=1;var e=Ph(),t=Kh();function r(n){return n!=null&&t(n.length)&&!e(n)}return Oc=r,Oc}var _c,ey;function sn(){if(ey)return _c;ey=1;var e=nw(),t=SS(),r=cn();function n(i){return r(i)?e(i):t(i)}return _c=n,_c}var Ac,ty;function aw(){if(ty)return Ac;ty=1;var e=ew(),t=Fh(),r=sn();function n(i){return e(i,r,t)}return Ac=n,Ac}var Sc,ry;function PS(){if(ry)return Sc;ry=1;var e=aw(),t=1,r=Object.prototype,n=r.hasOwnProperty;function i(a,o,u,c,s,f){var l=u&t,h=e(a),p=h.length,y=e(o),v=y.length;if(p!=v&&!l)return!1;for(var d=p;d--;){var m=h[d];if(!(l?m in o:n.call(o,m)))return!1}var x=f.get(a),w=f.get(o);if(x&&w)return x==o&&w==a;var O=!0;f.set(a,o),f.set(o,a);for(var g=l;++d-1}return Zc=t,Zc}var Jc,jy;function KS(){if(jy)return Jc;jy=1;function e(t,r,n){for(var i=-1,a=t==null?0:t.length;++i=o){var m=s?null:i(c);if(m)return a(m);y=!1,h=n,d=new e}else d=s?[]:v;e:for(;++l=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function oP(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function uP(e){return e.value}function cP(e,t){if(S.isValidElement(e))return S.cloneElement(e,t);if(typeof e=="function")return S.createElement(e,t);t.ref;var r=aP(t,ZS);return S.createElement(Nh,r)}var Ny=1,jr=(function(e){function t(){var r;JS(this,t);for(var n=arguments.length,i=new Array(n),a=0;aNy||Math.abs(i.height-this.lastBoundingBox.height)>Ny)&&(this.lastBoundingBox.width=i.width,this.lastBoundingBox.height=i.height,n&&n(i)):(this.lastBoundingBox.width!==-1||this.lastBoundingBox.height!==-1)&&(this.lastBoundingBox.width=-1,this.lastBoundingBox.height=-1,n&&n(null))}},{key:"getBBoxSnapshot",value:function(){return this.lastBoundingBox.width>=0&&this.lastBoundingBox.height>=0?Ot({},this.lastBoundingBox):{width:0,height:0}}},{key:"getDefaultPosition",value:function(n){var i=this.props,a=i.layout,o=i.align,u=i.verticalAlign,c=i.margin,s=i.chartWidth,f=i.chartHeight,l,h;if(!n||(n.left===void 0||n.left===null)&&(n.right===void 0||n.right===null))if(o==="center"&&a==="vertical"){var p=this.getBBoxSnapshot();l={left:((s||0)-p.width)/2}}else l=o==="right"?{right:c&&c.right||0}:{left:c&&c.left||0};if(!n||(n.top===void 0||n.top===null)&&(n.bottom===void 0||n.bottom===null))if(u==="middle"){var y=this.getBBoxSnapshot();h={top:((f||0)-y.height)/2}}else h=u==="bottom"?{bottom:c&&c.bottom||0}:{top:c&&c.top||0};return Ot(Ot({},l),h)}},{key:"render",value:function(){var n=this,i=this.props,a=i.content,o=i.width,u=i.height,c=i.wrapperStyle,s=i.payloadUniqBy,f=i.payload,l=Ot(Ot({position:"absolute",width:o||"auto",height:u||"auto"},this.getDefaultPosition(c)),c);return S.createElement("div",{className:"recharts-legend-wrapper",style:l,ref:function(p){n.wrapperNode=p}},cP(a,Ot(Ot({},this.props),{},{payload:lw(f,s,uP)})))}}],[{key:"getWithHeight",value:function(n,i){var a=Ot(Ot({},this.defaultProps),n.props),o=a.layout;return o==="vertical"&&q(n.props.height)?{height:n.props.height}:o==="horizontal"?{width:n.props.width||i}:null}}])})(N.PureComponent);Xa(jr,"displayName","Legend");Xa(jr,"defaultProps",{iconSize:14,layout:"horizontal",align:"center",verticalAlign:"bottom"});var ns,qy;function sP(){if(qy)return ns;qy=1;var e=nn(),t=Uh(),r=Fe(),n=e?e.isConcatSpreadable:void 0;function i(a){return r(a)||t(a)||!!(n&&a&&a[n])}return ns=i,ns}var is,Ly;function Xh(){if(Ly)return is;Ly=1;var e=Bh(),t=sP();function r(n,i,a,o,u){var c=-1,s=n.length;for(a||(a=t),u||(u=[]);++c0&&a(f)?i>1?r(f,i-1,a,o,u):e(u,f):o||(u[u.length]=f)}return u}return is=r,is}var as,By;function lP(){if(By)return as;By=1;function e(t){return function(r,n,i){for(var a=-1,o=Object(r),u=i(r),c=u.length;c--;){var s=u[t?c:++a];if(n(o[s],s,o)===!1)break}return r}}return as=e,as}var os,Fy;function fP(){if(Fy)return os;Fy=1;var e=lP(),t=e();return os=t,os}var us,Uy;function pw(){if(Uy)return us;Uy=1;var e=fP(),t=sn();function r(n,i){return n&&e(n,i,t)}return us=r,us}var cs,Wy;function hP(){if(Wy)return cs;Wy=1;var e=cn();function t(r,n){return function(i,a){if(i==null)return i;if(!e(i))return r(i,a);for(var o=i.length,u=n?o:-1,c=Object(i);(n?u--:++un||u&&c&&f&&!s&&!l||a&&c&&f||!i&&f||!o)return 1;if(!a&&!u&&!l&&r=s)return f;var l=i[a];return f*(l=="desc"?-1:1)}}return r.index-n.index}return ps=t,ps}var ds,Xy;function yP(){if(Xy)return ds;Xy=1;var e=jh(),t=Mh(),r=xt(),n=dw(),i=pP(),a=Ga(),o=vP(),u=ln(),c=Fe();function s(f,l,h){l.length?l=e(l,function(v){return c(v)?function(d){return t(d,v.length===1?v[0]:v)}:v}):l=[u];var p=-1;l=e(l,a(r));var y=n(f,function(v,d,m){var x=e(l,function(w){return w(v)});return{criteria:x,index:++p,value:v}});return i(y,function(v,d){return o(v,d,h)})}return ds=s,ds}var vs,Yy;function gP(){if(Yy)return vs;Yy=1;function e(t,r,n){switch(n.length){case 0:return t.call(r);case 1:return t.call(r,n[0]);case 2:return t.call(r,n[0],n[1]);case 3:return t.call(r,n[0],n[1],n[2])}return t.apply(r,n)}return vs=e,vs}var ys,Zy;function vw(){if(Zy)return ys;Zy=1;var e=gP(),t=Math.max;function r(n,i,a){return i=t(i===void 0?n.length-1:i,0),function(){for(var o=arguments,u=-1,c=t(o.length-i,0),s=Array(c);++u0){if(++a>=e)return arguments[0]}else a=0;return i.apply(void 0,arguments)}}return xs=n,xs}var ws,rg;function gw(){if(rg)return ws;rg=1;var e=bP(),t=xP(),r=t(e);return ws=r,ws}var Os,ng;function wP(){if(ng)return Os;ng=1;var e=ln(),t=vw(),r=gw();function n(i,a){return r(t(i,a,e),i+"")}return Os=n,Os}var _s,ig;function Ya(){if(ig)return _s;ig=1;var e=qa(),t=cn(),r=zh(),n=ht();function i(a,o,u){if(!n(u))return!1;var c=typeof o;return(c=="number"?t(u)&&r(o,u.length):c=="string"&&o in u)?e(u[o],a):!1}return _s=i,_s}var As,ag;function OP(){if(ag)return As;ag=1;var e=Xh(),t=yP(),r=wP(),n=Ya(),i=r(function(a,o){if(a==null)return[];var u=o.length;return u>1&&n(a,o[0],o[1])?o=[]:u>2&&n(o[0],o[1],o[2])&&(o=[o[0]]),t(a,e(o,1),[])});return As=i,As}var _P=OP();const Zh=ce(_P);function qn(e){"@babel/helpers - typeof";return qn=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},qn(e)}function gf(){return gf=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=t.x),"".concat(yn,"-left"),q(r)&&t&&q(t.x)&&r=t.y),"".concat(yn,"-top"),q(n)&&t&&q(t.y)&&nv?Math.max(f,c[n]):Math.max(l,c[n])}function qP(e){var t=e.translateX,r=e.translateY,n=e.useTranslate3d;return{transform:n?"translate3d(".concat(t,"px, ").concat(r,"px, 0)"):"translate(".concat(t,"px, ").concat(r,"px)")}}function LP(e){var t=e.allowEscapeViewBox,r=e.coordinate,n=e.offsetTopLeft,i=e.position,a=e.reverseDirection,o=e.tooltipBox,u=e.useTranslate3d,c=e.viewBox,s,f,l;return o.height>0&&o.width>0&&r?(f=cg({allowEscapeViewBox:t,coordinate:r,key:"x",offsetTopLeft:n,position:i,reverseDirection:a,tooltipDimension:o.width,viewBox:c,viewBoxDimension:c.width}),l=cg({allowEscapeViewBox:t,coordinate:r,key:"y",offsetTopLeft:n,position:i,reverseDirection:a,tooltipDimension:o.height,viewBox:c,viewBoxDimension:c.height}),s=qP({translateX:f,translateY:l,useTranslate3d:u})):s=DP,{cssProperties:s,cssClasses:NP({translateX:f,translateY:l,coordinate:r})}}function Rr(e){"@babel/helpers - typeof";return Rr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Rr(e)}function sg(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function lg(e){for(var t=1;tfg||Math.abs(n.height-this.state.lastBoundingBox.height)>fg)&&this.setState({lastBoundingBox:{width:n.width,height:n.height}})}else(this.state.lastBoundingBox.width!==-1||this.state.lastBoundingBox.height!==-1)&&this.setState({lastBoundingBox:{width:-1,height:-1}})}},{key:"componentDidMount",value:function(){document.addEventListener("keydown",this.handleKeyDown),this.updateBBox()}},{key:"componentWillUnmount",value:function(){document.removeEventListener("keydown",this.handleKeyDown)}},{key:"componentDidUpdate",value:function(){var n,i;this.props.active&&this.updateBBox(),this.state.dismissed&&(((n=this.props.coordinate)===null||n===void 0?void 0:n.x)!==this.state.dismissedAtCoordinate.x||((i=this.props.coordinate)===null||i===void 0?void 0:i.y)!==this.state.dismissedAtCoordinate.y)&&(this.state.dismissed=!1)}},{key:"render",value:function(){var n=this,i=this.props,a=i.active,o=i.allowEscapeViewBox,u=i.animationDuration,c=i.animationEasing,s=i.children,f=i.coordinate,l=i.hasPayload,h=i.isAnimationActive,p=i.offset,y=i.position,v=i.reverseDirection,d=i.useTranslate3d,m=i.viewBox,x=i.wrapperStyle,w=LP({allowEscapeViewBox:o,coordinate:f,offsetTopLeft:p,position:y,reverseDirection:v,tooltipBox:this.state.lastBoundingBox,useTranslate3d:d,viewBox:m}),O=w.cssClasses,g=w.cssProperties,b=lg(lg({transition:h&&a?"transform ".concat(u,"ms ").concat(c):void 0},g),{},{pointerEvents:"none",visibility:!this.state.dismissed&&a&&l?"visible":"hidden",position:"absolute",top:0,left:0},x);return S.createElement("div",{tabIndex:-1,className:O,style:b,ref:function(A){n.wrapperNode=A}},s)}}])})(N.PureComponent),XP=function(){return!(typeof window<"u"&&window.document&&window.document.createElement&&window.setTimeout)},pr={isSsr:XP()};function Dr(e){"@babel/helpers - typeof";return Dr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Dr(e)}function hg(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function pg(e){for(var t=1;t0;return S.createElement(VP,{allowEscapeViewBox:o,animationDuration:u,animationEasing:c,isAnimationActive:h,active:a,coordinate:f,hasPayload:b,offset:p,position:d,reverseDirection:m,useTranslate3d:x,viewBox:w,wrapperStyle:O},aT(s,pg(pg({},this.props),{},{payload:g})))}}])})(N.PureComponent);Jh(_t,"displayName","Tooltip");Jh(_t,"defaultProps",{accessibilityLayer:!1,allowEscapeViewBox:{x:!1,y:!1},animationDuration:400,animationEasing:"ease",contentStyle:{},coordinate:{x:0,y:0},cursor:!0,cursorStyle:{},filterNull:!0,isAnimationActive:!pr.isSsr,itemStyle:{},labelStyle:{},offset:10,reverseDirection:{x:!1,y:!1},separator:" : ",trigger:"hover",useTranslate3d:!1,viewBox:{x:0,y:0,height:0,width:0},wrapperStyle:{}});var Ps,dg;function oT(){if(dg)return Ps;dg=1;var e=lt(),t=function(){return e.Date.now()};return Ps=t,Ps}var Ts,vg;function uT(){if(vg)return Ts;vg=1;var e=/\s/;function t(r){for(var n=r.length;n--&&e.test(r.charAt(n)););return n}return Ts=t,Ts}var Es,yg;function cT(){if(yg)return Es;yg=1;var e=uT(),t=/^\s+/;function r(n){return n&&n.slice(0,e(n)+1).replace(t,"")}return Es=r,Es}var js,gg;function Ow(){if(gg)return js;gg=1;var e=cT(),t=ht(),r=an(),n=NaN,i=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,o=/^0o[0-7]+$/i,u=parseInt;function c(s){if(typeof s=="number")return s;if(r(s))return n;if(t(s)){var f=typeof s.valueOf=="function"?s.valueOf():s;s=t(f)?f+"":f}if(typeof s!="string")return s===0?s:+s;s=e(s);var l=a.test(s);return l||o.test(s)?u(s.slice(2),l?2:8):i.test(s)?n:+s}return js=c,js}var Ms,mg;function sT(){if(mg)return Ms;mg=1;var e=ht(),t=oT(),r=Ow(),n="Expected a function",i=Math.max,a=Math.min;function o(u,c,s){var f,l,h,p,y,v,d=0,m=!1,x=!1,w=!0;if(typeof u!="function")throw new TypeError(n);c=r(c)||0,e(s)&&(m=!!s.leading,x="maxWait"in s,h=x?i(r(s.maxWait)||0,c):h,w="trailing"in s?!!s.trailing:w);function O(M){var I=f,$=l;return f=l=void 0,d=M,p=u.apply($,I),p}function g(M){return d=M,y=setTimeout(A,c),m?O(M):p}function b(M){var I=M-v,$=M-d,k=c-I;return x?a(k,h-$):k}function _(M){var I=M-v,$=M-d;return v===void 0||I>=c||I<0||x&&$>=h}function A(){var M=t();if(_(M))return P(M);y=setTimeout(A,b(M))}function P(M){return y=void 0,w&&f?O(M):(f=l=void 0,p)}function j(){y!==void 0&&clearTimeout(y),d=0,f=v=l=y=void 0}function T(){return y===void 0?p:P(t())}function E(){var M=t(),I=_(M);if(f=arguments,l=this,v=M,I){if(y===void 0)return g(v);if(x)return clearTimeout(y),y=setTimeout(A,c),O(v)}return y===void 0&&(y=setTimeout(A,c)),p}return E.cancel=j,E.flush=T,E}return Ms=o,Ms}var $s,bg;function lT(){if(bg)return $s;bg=1;var e=sT(),t=ht(),r="Expected a function";function n(i,a,o){var u=!0,c=!0;if(typeof i!="function")throw new TypeError(r);return t(o)&&(u="leading"in o?!!o.leading:u,c="trailing"in o?!!o.trailing:c),e(i,a,{leading:u,maxWait:a,trailing:c})}return $s=n,$s}var fT=lT();const _w=ce(fT);function Bn(e){"@babel/helpers - typeof";return Bn=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Bn(e)}function xg(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function Ti(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&(M=_w(M,v,{trailing:!0,leading:!1}));var I=new ResizeObserver(M),$=g.current.getBoundingClientRect(),k=$.width,R=$.height;return T(k,R),I.observe(g.current),function(){I.disconnect()}},[T,v]);var E=N.useMemo(function(){var M=P.containerWidth,I=P.containerHeight;if(M<0||I<0)return null;st(er(o)||er(c),`The width(%s) and height(%s) are both fixed numbers, + A`).concat(o,",").concat(o,",0,1,1,").concat(u,",").concat(a),className:"recharts-legend-icon"});if(n.type==="rect")return S.createElement("path",{stroke:"none",fill:c,d:"M0,".concat(et/8,"h").concat(et,"v").concat(et*3/4,"h").concat(-et,"z"),className:"recharts-legend-icon"});if(S.isValidElement(n.legendIcon)){var s=eS({},n);return delete s.legendIcon,S.cloneElement(n.legendIcon,s)}return S.createElement(Dh,{fill:c,cx:a,cy:a,size:et,sizeType:"diameter",type:n.type})}},{key:"renderItems",value:function(){var n=this,i=this.props,a=i.payload,o=i.iconSize,u=i.layout,c=i.formatter,s=i.inactiveColor,f={x:0,y:0,width:et,height:et},l={display:u==="horizontal"?"inline-block":"block",marginRight:10},h={display:"inline-block",verticalAlign:"middle",marginRight:4};return a.map(function(p,y){var v=p.formatter||c,d=te(Nn(Nn({"recharts-legend-item":!0},"legend-item-".concat(y),!0),"inactive",p.inactive));if(p.type==="none")return null;var m=X(p.value)?null:p.value;st(!X(p.value),`The name property is also required when using a function for the dataKey of a chart's cartesian components. Ex: `);var x=p.inactive?s:p.color;return S.createElement("li",df({className:d,style:l,key:"legend-item-".concat(y)},cr(n.props,p,y)),S.createElement(uf,{width:o,height:o,viewBox:f,style:h},n.renderIcon(p)),S.createElement("span",{className:"recharts-legend-item-text",style:{color:x}},v?v(m,p,y):m))})}},{key:"render",value:function(){var n=this.props,i=n.payload,a=n.layout,o=n.align;if(!i||!i.length)return null;var u={padding:0,margin:0,textAlign:a==="horizontal"?o:"left"};return S.createElement("ul",{className:"recharts-default-legend",style:u},this.renderItems())}}])})(N.PureComponent);Nn(Nh,"displayName","Legend");Nn(Nh,"defaultProps",{iconSize:14,layout:"horizontal",align:"center",verticalAlign:"middle",inactiveColor:"#ccc"});var Fu,yv;function sS(){if(yv)return Fu;yv=1;var e=Ba();function t(){this.__data__=new e,this.size=0}return Fu=t,Fu}var Uu,gv;function lS(){if(gv)return Uu;gv=1;function e(t){var r=this.__data__,n=r.delete(t);return this.size=r.size,n}return Uu=e,Uu}var Wu,mv;function fS(){if(mv)return Wu;mv=1;function e(t){return this.__data__.get(t)}return Wu=e,Wu}var zu,bv;function hS(){if(bv)return zu;bv=1;function e(t){return this.__data__.has(t)}return zu=e,zu}var Ku,xv;function pS(){if(xv)return Ku;xv=1;var e=Ba(),t=Th(),r=Eh(),n=200;function i(a,o){var u=this.__data__;if(u instanceof e){var c=u.__data__;if(!t||c.lengthp))return!1;var v=l.get(o),d=l.get(u);if(v&&d)return v==u&&d==o;var m=-1,x=!0,w=c&i?new e:void 0;for(l.set(o,u),l.set(u,o);++m-1&&n%1==0&&n-1&&r%1==0&&r<=e}return pc=t,pc}var dc,zv;function OS(){if(zv)return dc;zv=1;var e=kt(),t=Kh(),r=ft(),n="[object Arguments]",i="[object Array]",a="[object Boolean]",o="[object Date]",u="[object Error]",c="[object Function]",s="[object Map]",f="[object Number]",l="[object Object]",h="[object RegExp]",p="[object Set]",y="[object String]",v="[object WeakMap]",d="[object ArrayBuffer]",m="[object DataView]",x="[object Float32Array]",w="[object Float64Array]",O="[object Int8Array]",g="[object Int16Array]",b="[object Int32Array]",_="[object Uint8Array]",A="[object Uint8ClampedArray]",P="[object Uint16Array]",j="[object Uint32Array]",T={};T[x]=T[w]=T[O]=T[g]=T[b]=T[_]=T[A]=T[P]=T[j]=!0,T[n]=T[i]=T[d]=T[a]=T[m]=T[o]=T[u]=T[c]=T[s]=T[f]=T[l]=T[h]=T[p]=T[y]=T[v]=!1;function E(M){return r(M)&&t(M.length)&&!!T[e(M)]}return dc=E,dc}var vc,Kv;function Ga(){if(Kv)return vc;Kv=1;function e(t){return function(r){return t(r)}}return vc=e,vc}var Pn={exports:{}};Pn.exports;var Hv;function Hh(){return Hv||(Hv=1,(function(e,t){var r=wx(),n=t&&!t.nodeType&&t,i=n&&!0&&e&&!e.nodeType&&e,a=i&&i.exports===n,o=a&&r.process,u=(function(){try{var c=i&&i.require&&i.require("util").types;return c||o&&o.binding&&o.binding("util")}catch{}})();e.exports=u})(Pn,Pn.exports)),Pn.exports}var yc,Gv;function tw(){if(Gv)return yc;Gv=1;var e=OS(),t=Ga(),r=Hh(),n=r&&r.isTypedArray,i=n?t(n):e;return yc=i,yc}var gc,Vv;function rw(){if(Vv)return gc;Vv=1;var e=bS(),t=Uh(),r=Fe(),n=Wh(),i=zh(),a=tw(),o=Object.prototype,u=o.hasOwnProperty;function c(s,f){var l=r(s),h=!l&&t(s),p=!l&&!h&&n(s),y=!l&&!h&&!p&&a(s),v=l||h||p||y,d=v?e(s.length,String):[],m=d.length;for(var x in s)(f||u.call(s,x))&&!(v&&(x=="length"||p&&(x=="offset"||x=="parent")||y&&(x=="buffer"||x=="byteLength"||x=="byteOffset")||i(x,m)))&&d.push(x);return d}return gc=c,gc}var mc,Xv;function Gh(){if(Xv)return mc;Xv=1;var e=Object.prototype;function t(r){var n=r&&r.constructor,i=typeof n=="function"&&n.prototype||e;return r===i}return mc=t,mc}var bc,Yv;function nw(){if(Yv)return bc;Yv=1;function e(t,r){return function(n){return t(r(n))}}return bc=e,bc}var xc,Zv;function _S(){if(Zv)return xc;Zv=1;var e=nw(),t=e(Object.keys,Object);return xc=t,xc}var wc,Jv;function AS(){if(Jv)return wc;Jv=1;var e=Gh(),t=_S(),r=Object.prototype,n=r.hasOwnProperty;function i(a){if(!e(a))return t(a);var o=[];for(var u in Object(a))n.call(a,u)&&u!="constructor"&&o.push(u);return o}return wc=i,wc}var Oc,Qv;function cn(){if(Qv)return Oc;Qv=1;var e=Ph(),t=Kh();function r(n){return n!=null&&t(n.length)&&!e(n)}return Oc=r,Oc}var _c,ey;function sn(){if(ey)return _c;ey=1;var e=rw(),t=AS(),r=cn();function n(i){return r(i)?e(i):t(i)}return _c=n,_c}var Ac,ty;function iw(){if(ty)return Ac;ty=1;var e=Qx(),t=Fh(),r=sn();function n(i){return e(i,r,t)}return Ac=n,Ac}var Sc,ry;function SS(){if(ry)return Sc;ry=1;var e=iw(),t=1,r=Object.prototype,n=r.hasOwnProperty;function i(a,o,u,c,s,f){var l=u&t,h=e(a),p=h.length,y=e(o),v=y.length;if(p!=v&&!l)return!1;for(var d=p;d--;){var m=h[d];if(!(l?m in o:n.call(o,m)))return!1}var x=f.get(a),w=f.get(o);if(x&&w)return x==o&&w==a;var O=!0;f.set(a,o),f.set(o,a);for(var g=l;++d-1}return Zc=t,Zc}var Jc,jy;function zS(){if(jy)return Jc;jy=1;function e(t,r,n){for(var i=-1,a=t==null?0:t.length;++i=o){var m=s?null:i(c);if(m)return a(m);y=!1,h=n,d=new e}else d=s?[]:v;e:for(;++l=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function aP(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function oP(e){return e.value}function uP(e,t){if(S.isValidElement(e))return S.cloneElement(e,t);if(typeof e=="function")return S.createElement(e,t);t.ref;var r=iP(t,YS);return S.createElement(Nh,r)}var Ny=1,jr=(function(e){function t(){var r;ZS(this,t);for(var n=arguments.length,i=new Array(n),a=0;aNy||Math.abs(i.height-this.lastBoundingBox.height)>Ny)&&(this.lastBoundingBox.width=i.width,this.lastBoundingBox.height=i.height,n&&n(i)):(this.lastBoundingBox.width!==-1||this.lastBoundingBox.height!==-1)&&(this.lastBoundingBox.width=-1,this.lastBoundingBox.height=-1,n&&n(null))}},{key:"getBBoxSnapshot",value:function(){return this.lastBoundingBox.width>=0&&this.lastBoundingBox.height>=0?Ot({},this.lastBoundingBox):{width:0,height:0}}},{key:"getDefaultPosition",value:function(n){var i=this.props,a=i.layout,o=i.align,u=i.verticalAlign,c=i.margin,s=i.chartWidth,f=i.chartHeight,l,h;if(!n||(n.left===void 0||n.left===null)&&(n.right===void 0||n.right===null))if(o==="center"&&a==="vertical"){var p=this.getBBoxSnapshot();l={left:((s||0)-p.width)/2}}else l=o==="right"?{right:c&&c.right||0}:{left:c&&c.left||0};if(!n||(n.top===void 0||n.top===null)&&(n.bottom===void 0||n.bottom===null))if(u==="middle"){var y=this.getBBoxSnapshot();h={top:((f||0)-y.height)/2}}else h=u==="bottom"?{bottom:c&&c.bottom||0}:{top:c&&c.top||0};return Ot(Ot({},l),h)}},{key:"render",value:function(){var n=this,i=this.props,a=i.content,o=i.width,u=i.height,c=i.wrapperStyle,s=i.payloadUniqBy,f=i.payload,l=Ot(Ot({position:"absolute",width:o||"auto",height:u||"auto"},this.getDefaultPosition(c)),c);return S.createElement("div",{className:"recharts-legend-wrapper",style:l,ref:function(p){n.wrapperNode=p}},uP(a,Ot(Ot({},this.props),{},{payload:sw(f,s,oP)})))}}],[{key:"getWithHeight",value:function(n,i){var a=Ot(Ot({},this.defaultProps),n.props),o=a.layout;return o==="vertical"&&q(n.props.height)?{height:n.props.height}:o==="horizontal"?{width:n.props.width||i}:null}}])})(N.PureComponent);Xa(jr,"displayName","Legend");Xa(jr,"defaultProps",{iconSize:14,layout:"horizontal",align:"center",verticalAlign:"bottom"});var ns,qy;function cP(){if(qy)return ns;qy=1;var e=nn(),t=Uh(),r=Fe(),n=e?e.isConcatSpreadable:void 0;function i(a){return r(a)||t(a)||!!(n&&a&&a[n])}return ns=i,ns}var is,Ly;function Xh(){if(Ly)return is;Ly=1;var e=Bh(),t=cP();function r(n,i,a,o,u){var c=-1,s=n.length;for(a||(a=t),u||(u=[]);++c0&&a(f)?i>1?r(f,i-1,a,o,u):e(u,f):o||(u[u.length]=f)}return u}return is=r,is}var as,By;function sP(){if(By)return as;By=1;function e(t){return function(r,n,i){for(var a=-1,o=Object(r),u=i(r),c=u.length;c--;){var s=u[t?c:++a];if(n(o[s],s,o)===!1)break}return r}}return as=e,as}var os,Fy;function lP(){if(Fy)return os;Fy=1;var e=sP(),t=e();return os=t,os}var us,Uy;function hw(){if(Uy)return us;Uy=1;var e=lP(),t=sn();function r(n,i){return n&&e(n,i,t)}return us=r,us}var cs,Wy;function fP(){if(Wy)return cs;Wy=1;var e=cn();function t(r,n){return function(i,a){if(i==null)return i;if(!e(i))return r(i,a);for(var o=i.length,u=n?o:-1,c=Object(i);(n?u--:++un||u&&c&&f&&!s&&!l||a&&c&&f||!i&&f||!o)return 1;if(!a&&!u&&!l&&r=s)return f;var l=i[a];return f*(l=="desc"?-1:1)}}return r.index-n.index}return ps=t,ps}var ds,Xy;function vP(){if(Xy)return ds;Xy=1;var e=jh(),t=Mh(),r=xt(),n=pw(),i=hP(),a=Ga(),o=dP(),u=ln(),c=Fe();function s(f,l,h){l.length?l=e(l,function(v){return c(v)?function(d){return t(d,v.length===1?v[0]:v)}:v}):l=[u];var p=-1;l=e(l,a(r));var y=n(f,function(v,d,m){var x=e(l,function(w){return w(v)});return{criteria:x,index:++p,value:v}});return i(y,function(v,d){return o(v,d,h)})}return ds=s,ds}var vs,Yy;function yP(){if(Yy)return vs;Yy=1;function e(t,r,n){switch(n.length){case 0:return t.call(r);case 1:return t.call(r,n[0]);case 2:return t.call(r,n[0],n[1]);case 3:return t.call(r,n[0],n[1],n[2])}return t.apply(r,n)}return vs=e,vs}var ys,Zy;function dw(){if(Zy)return ys;Zy=1;var e=yP(),t=Math.max;function r(n,i,a){return i=t(i===void 0?n.length-1:i,0),function(){for(var o=arguments,u=-1,c=t(o.length-i,0),s=Array(c);++u0){if(++a>=e)return arguments[0]}else a=0;return i.apply(void 0,arguments)}}return xs=n,xs}var ws,rg;function yw(){if(rg)return ws;rg=1;var e=mP(),t=bP(),r=t(e);return ws=r,ws}var Os,ng;function xP(){if(ng)return Os;ng=1;var e=ln(),t=dw(),r=yw();function n(i,a){return r(t(i,a,e),i+"")}return Os=n,Os}var _s,ig;function Ya(){if(ig)return _s;ig=1;var e=qa(),t=cn(),r=zh(),n=ht();function i(a,o,u){if(!n(u))return!1;var c=typeof o;return(c=="number"?t(u)&&r(o,u.length):c=="string"&&o in u)?e(u[o],a):!1}return _s=i,_s}var As,ag;function wP(){if(ag)return As;ag=1;var e=Xh(),t=vP(),r=xP(),n=Ya(),i=r(function(a,o){if(a==null)return[];var u=o.length;return u>1&&n(a,o[0],o[1])?o=[]:u>2&&n(o[0],o[1],o[2])&&(o=[o[0]]),t(a,e(o,1),[])});return As=i,As}var OP=wP();const Zh=ce(OP);function qn(e){"@babel/helpers - typeof";return qn=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},qn(e)}function gf(){return gf=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=t.x),"".concat(yn,"-left"),q(r)&&t&&q(t.x)&&r=t.y),"".concat(yn,"-top"),q(n)&&t&&q(t.y)&&nv?Math.max(f,c[n]):Math.max(l,c[n])}function NP(e){var t=e.translateX,r=e.translateY,n=e.useTranslate3d;return{transform:n?"translate3d(".concat(t,"px, ").concat(r,"px, 0)"):"translate(".concat(t,"px, ").concat(r,"px)")}}function qP(e){var t=e.allowEscapeViewBox,r=e.coordinate,n=e.offsetTopLeft,i=e.position,a=e.reverseDirection,o=e.tooltipBox,u=e.useTranslate3d,c=e.viewBox,s,f,l;return o.height>0&&o.width>0&&r?(f=cg({allowEscapeViewBox:t,coordinate:r,key:"x",offsetTopLeft:n,position:i,reverseDirection:a,tooltipDimension:o.width,viewBox:c,viewBoxDimension:c.width}),l=cg({allowEscapeViewBox:t,coordinate:r,key:"y",offsetTopLeft:n,position:i,reverseDirection:a,tooltipDimension:o.height,viewBox:c,viewBoxDimension:c.height}),s=NP({translateX:f,translateY:l,useTranslate3d:u})):s=RP,{cssProperties:s,cssClasses:DP({translateX:f,translateY:l,coordinate:r})}}function Rr(e){"@babel/helpers - typeof";return Rr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Rr(e)}function sg(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function lg(e){for(var t=1;tfg||Math.abs(n.height-this.state.lastBoundingBox.height)>fg)&&this.setState({lastBoundingBox:{width:n.width,height:n.height}})}else(this.state.lastBoundingBox.width!==-1||this.state.lastBoundingBox.height!==-1)&&this.setState({lastBoundingBox:{width:-1,height:-1}})}},{key:"componentDidMount",value:function(){document.addEventListener("keydown",this.handleKeyDown),this.updateBBox()}},{key:"componentWillUnmount",value:function(){document.removeEventListener("keydown",this.handleKeyDown)}},{key:"componentDidUpdate",value:function(){var n,i;this.props.active&&this.updateBBox(),this.state.dismissed&&(((n=this.props.coordinate)===null||n===void 0?void 0:n.x)!==this.state.dismissedAtCoordinate.x||((i=this.props.coordinate)===null||i===void 0?void 0:i.y)!==this.state.dismissedAtCoordinate.y)&&(this.state.dismissed=!1)}},{key:"render",value:function(){var n=this,i=this.props,a=i.active,o=i.allowEscapeViewBox,u=i.animationDuration,c=i.animationEasing,s=i.children,f=i.coordinate,l=i.hasPayload,h=i.isAnimationActive,p=i.offset,y=i.position,v=i.reverseDirection,d=i.useTranslate3d,m=i.viewBox,x=i.wrapperStyle,w=qP({allowEscapeViewBox:o,coordinate:f,offsetTopLeft:p,position:y,reverseDirection:v,tooltipBox:this.state.lastBoundingBox,useTranslate3d:d,viewBox:m}),O=w.cssClasses,g=w.cssProperties,b=lg(lg({transition:h&&a?"transform ".concat(u,"ms ").concat(c):void 0},g),{},{pointerEvents:"none",visibility:!this.state.dismissed&&a&&l?"visible":"hidden",position:"absolute",top:0,left:0},x);return S.createElement("div",{tabIndex:-1,className:O,style:b,ref:function(A){n.wrapperNode=A}},s)}}])})(N.PureComponent),VP=function(){return!(typeof window<"u"&&window.document&&window.document.createElement&&window.setTimeout)},pr={isSsr:VP()};function Dr(e){"@babel/helpers - typeof";return Dr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Dr(e)}function hg(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function pg(e){for(var t=1;t0;return S.createElement(GP,{allowEscapeViewBox:o,animationDuration:u,animationEasing:c,isAnimationActive:h,active:a,coordinate:f,hasPayload:b,offset:p,position:d,reverseDirection:m,useTranslate3d:x,viewBox:w,wrapperStyle:O},iT(s,pg(pg({},this.props),{},{payload:g})))}}])})(N.PureComponent);Jh(_t,"displayName","Tooltip");Jh(_t,"defaultProps",{accessibilityLayer:!1,allowEscapeViewBox:{x:!1,y:!1},animationDuration:400,animationEasing:"ease",contentStyle:{},coordinate:{x:0,y:0},cursor:!0,cursorStyle:{},filterNull:!0,isAnimationActive:!pr.isSsr,itemStyle:{},labelStyle:{},offset:10,reverseDirection:{x:!1,y:!1},separator:" : ",trigger:"hover",useTranslate3d:!1,viewBox:{x:0,y:0,height:0,width:0},wrapperStyle:{}});var Ps,dg;function aT(){if(dg)return Ps;dg=1;var e=lt(),t=function(){return e.Date.now()};return Ps=t,Ps}var Ts,vg;function oT(){if(vg)return Ts;vg=1;var e=/\s/;function t(r){for(var n=r.length;n--&&e.test(r.charAt(n)););return n}return Ts=t,Ts}var Es,yg;function uT(){if(yg)return Es;yg=1;var e=oT(),t=/^\s+/;function r(n){return n&&n.slice(0,e(n)+1).replace(t,"")}return Es=r,Es}var js,gg;function ww(){if(gg)return js;gg=1;var e=uT(),t=ht(),r=an(),n=NaN,i=/^[-+]0x[0-9a-f]+$/i,a=/^0b[01]+$/i,o=/^0o[0-7]+$/i,u=parseInt;function c(s){if(typeof s=="number")return s;if(r(s))return n;if(t(s)){var f=typeof s.valueOf=="function"?s.valueOf():s;s=t(f)?f+"":f}if(typeof s!="string")return s===0?s:+s;s=e(s);var l=a.test(s);return l||o.test(s)?u(s.slice(2),l?2:8):i.test(s)?n:+s}return js=c,js}var Ms,mg;function cT(){if(mg)return Ms;mg=1;var e=ht(),t=aT(),r=ww(),n="Expected a function",i=Math.max,a=Math.min;function o(u,c,s){var f,l,h,p,y,v,d=0,m=!1,x=!1,w=!0;if(typeof u!="function")throw new TypeError(n);c=r(c)||0,e(s)&&(m=!!s.leading,x="maxWait"in s,h=x?i(r(s.maxWait)||0,c):h,w="trailing"in s?!!s.trailing:w);function O(M){var I=f,$=l;return f=l=void 0,d=M,p=u.apply($,I),p}function g(M){return d=M,y=setTimeout(A,c),m?O(M):p}function b(M){var I=M-v,$=M-d,k=c-I;return x?a(k,h-$):k}function _(M){var I=M-v,$=M-d;return v===void 0||I>=c||I<0||x&&$>=h}function A(){var M=t();if(_(M))return P(M);y=setTimeout(A,b(M))}function P(M){return y=void 0,w&&f?O(M):(f=l=void 0,p)}function j(){y!==void 0&&clearTimeout(y),d=0,f=v=l=y=void 0}function T(){return y===void 0?p:P(t())}function E(){var M=t(),I=_(M);if(f=arguments,l=this,v=M,I){if(y===void 0)return g(v);if(x)return clearTimeout(y),y=setTimeout(A,c),O(v)}return y===void 0&&(y=setTimeout(A,c)),p}return E.cancel=j,E.flush=T,E}return Ms=o,Ms}var $s,bg;function sT(){if(bg)return $s;bg=1;var e=cT(),t=ht(),r="Expected a function";function n(i,a,o){var u=!0,c=!0;if(typeof i!="function")throw new TypeError(r);return t(o)&&(u="leading"in o?!!o.leading:u,c="trailing"in o?!!o.trailing:c),e(i,a,{leading:u,maxWait:a,trailing:c})}return $s=n,$s}var lT=sT();const Ow=ce(lT);function Bn(e){"@babel/helpers - typeof";return Bn=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Bn(e)}function xg(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function Ti(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&(M=Ow(M,v,{trailing:!0,leading:!1}));var I=new ResizeObserver(M),$=g.current.getBoundingClientRect(),k=$.width,R=$.height;return T(k,R),I.observe(g.current),function(){I.disconnect()}},[T,v]);var E=N.useMemo(function(){var M=P.containerWidth,I=P.containerHeight;if(M<0||I<0)return null;st(er(o)||er(c),`The width(%s) and height(%s) are both fixed numbers, maybe you don't need to use a ResponsiveContainer.`,o,c),st(!r||r>0,"The aspect(%s) must be greater than zero.",r);var $=er(o)?M:o,k=er(c)?I:c;r&&r>0&&($?k=$/r:k&&($=k*r),h&&k>h&&(k=h)),st($>0||k>0,`The width(%s) and height(%s) of chart should be greater than 0, please check the style of container, or the props width(%s) and height(%s), or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the - height and width.`,$,k,o,c,f,l,r);var R=!Array.isArray(p)&&Et(p.type).endsWith("Chart");return S.Children.map(p,function(L){return S.isValidElement(L)?N.cloneElement(L,Ti({width:$,height:k},R?{style:Ti({height:"100%",width:"100%",maxHeight:k,maxWidth:$},L.props.style)}:{})):L})},[r,p,c,h,l,f,P,o]);return S.createElement("div",{id:d?"".concat(d):void 0,className:te("recharts-responsive-container",m),style:Ti(Ti({},O),{},{width:o,height:c,minWidth:f,minHeight:l,maxHeight:h}),ref:g},E)}),Qh=function(t){return null};Qh.displayName="Cell";function Fn(e){"@babel/helpers - typeof";return Fn=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Fn(e)}function Og(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function wf(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:{};if(t==null||pr.isSsr)return{width:0,height:0};var n=ST(r),i=JSON.stringify({text:t,copyStyle:n});if(br.widthCache[i])return br.widthCache[i];try{var a=document.getElementById(_g);a||(a=document.createElement("span"),a.setAttribute("id",_g),a.setAttribute("aria-hidden","true"),document.body.appendChild(a));var o=wf(wf({},AT),n);Object.assign(a.style,o),a.textContent="".concat(t);var u=a.getBoundingClientRect(),c={width:u.width,height:u.height};return br.widthCache[i]=c,++br.cacheCount>_T&&(br.cacheCount=0,br.widthCache={}),c}catch{return{width:0,height:0}}},PT=function(t){return{top:t.top+window.scrollY-document.documentElement.clientTop,left:t.left+window.scrollX-document.documentElement.clientLeft}};function Un(e){"@babel/helpers - typeof";return Un=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Un(e)}function Zi(e,t){return MT(e)||jT(e,t)||ET(e,t)||TT()}function TT(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ET(e,t){if(e){if(typeof e=="string")return Ag(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Ag(e,t)}}function Ag(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function zT(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function Mg(e,t){return VT(e)||GT(e,t)||HT(e,t)||KT()}function KT(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function HT(e,t){if(e){if(typeof e=="string")return $g(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return $g(e,t)}}function $g(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&arguments[0]!==void 0?arguments[0]:[];return $.reduce(function(k,R){var L=R.word,B=R.width,z=k[k.length-1];if(z&&(i==null||a||z.width+B+nR.width?k:R})};if(!f)return p;for(var v="…",d=function($){var k=l.slice(0,$),R=Tw({breakAll:s,style:c,children:k+v}).wordsWithComputedWidth,L=h(R),B=L.length>o||y(L).width>Number(i);return[B,L]},m=0,x=l.length-1,w=0,O;m<=x&&w<=l.length-1;){var g=Math.floor((m+x)/2),b=g-1,_=d(b),A=Mg(_,2),P=A[0],j=A[1],T=d(g),E=Mg(T,1),M=E[0];if(!P&&!M&&(m=g+1),P&&M&&(x=g-1),!P&&M){O=j;break}w++}return O||p},Ig=function(t){var r=J(t)?[]:t.toString().split(Pw);return[{words:r}]},YT=function(t){var r=t.width,n=t.scaleToFit,i=t.children,a=t.style,o=t.breakAll,u=t.maxLines;if((r||n)&&!pr.isSsr){var c,s,f=Tw({breakAll:o,children:i,style:a});if(f){var l=f.wordsWithComputedWidth,h=f.spaceWidth;c=l,s=h}else return Ig(i);return XT({breakAll:o,children:i,maxLines:u,style:a},c,s,r,n)}return Ig(i)},Cg="#808080",sr=function(t){var r=t.x,n=r===void 0?0:r,i=t.y,a=i===void 0?0:i,o=t.lineHeight,u=o===void 0?"1em":o,c=t.capHeight,s=c===void 0?"0.71em":c,f=t.scaleToFit,l=f===void 0?!1:f,h=t.textAnchor,p=h===void 0?"start":h,y=t.verticalAnchor,v=y===void 0?"end":y,d=t.fill,m=d===void 0?Cg:d,x=jg(t,UT),w=N.useMemo(function(){return YT({breakAll:x.breakAll,children:x.children,maxLines:x.maxLines,scaleToFit:l,style:x.style,width:x.width})},[x.breakAll,x.children,x.maxLines,l,x.style,x.width]),O=x.dx,g=x.dy,b=x.angle,_=x.className,A=x.breakAll,P=jg(x,WT);if(!Se(n)||!Se(a))return null;var j=n+(q(O)?O:0),T=a+(q(g)?g:0),E;switch(v){case"start":E=Is("calc(".concat(s,")"));break;case"middle":E=Is("calc(".concat((w.length-1)/2," * -").concat(u," + (").concat(s," / 2))"));break;default:E=Is("calc(".concat(w.length-1," * -").concat(u,")"));break}var M=[];if(l){var I=w[0].width,$=x.width;M.push("scale(".concat((q($)?$/I:1)/I,")"))}return b&&M.push("rotate(".concat(b,", ").concat(j,", ").concat(T,")")),M.length&&(P.transform=M.join(" ")),S.createElement("text",Of({},K(P,!0),{x:j,y:T,className:te("recharts-text",_),textAnchor:p,fill:m.includes("url")?Cg:m}),w.map(function(k,R){var L=k.words.join(A?"":" ");return S.createElement("tspan",{x:j,dy:R===0?E:u,key:"".concat(L,"-").concat(R)},L)}))};function Bt(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function ZT(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function ep(e){let t,r,n;e.length!==2?(t=Bt,r=(u,c)=>Bt(e(u),c),n=(u,c)=>e(u)-c):(t=e===Bt||e===ZT?e:JT,r=e,n=e);function i(u,c,s=0,f=u.length){if(s>>1;r(u[l],c)<0?s=l+1:f=l}while(s>>1;r(u[l],c)<=0?s=l+1:f=l}while(ss&&n(u[l-1],c)>-n(u[l],c)?l-1:l}return{left:i,center:o,right:a}}function JT(){return 0}function Ew(e){return e===null?NaN:+e}function*QT(e,t){for(let r of e)r!=null&&(r=+r)>=r&&(yield r)}const eE=ep(Bt),mi=eE.right;ep(Ew).center;class kg extends Map{constructor(t,r=nE){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(const[n,i]of t)this.set(n,i)}get(t){return super.get(Rg(this,t))}has(t){return super.has(Rg(this,t))}set(t,r){return super.set(tE(this,t),r)}delete(t){return super.delete(rE(this,t))}}function Rg({_intern:e,_key:t},r){const n=t(r);return e.has(n)?e.get(n):r}function tE({_intern:e,_key:t},r){const n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function rE({_intern:e,_key:t},r){const n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function nE(e){return e!==null&&typeof e=="object"?e.valueOf():e}function iE(e=Bt){if(e===Bt)return jw;if(typeof e!="function")throw new TypeError("compare is not a function");return(t,r)=>{const n=e(t,r);return n||n===0?n:(e(r,r)===0)-(e(t,t)===0)}}function jw(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et?1:0)}const aE=Math.sqrt(50),oE=Math.sqrt(10),uE=Math.sqrt(2);function Ji(e,t,r){const n=(t-e)/Math.max(0,r),i=Math.floor(Math.log10(n)),a=n/Math.pow(10,i),o=a>=aE?10:a>=oE?5:a>=uE?2:1;let u,c,s;return i<0?(s=Math.pow(10,-i)/o,u=Math.round(e*s),c=Math.round(t*s),u/st&&--c,s=-s):(s=Math.pow(10,i)*o,u=Math.round(e/s),c=Math.round(t/s),u*st&&--c),c0))return[];if(e===t)return[e];const n=t=i))return[];const u=a-i+1,c=new Array(u);if(n)if(o<0)for(let s=0;s=n)&&(r=n);return r}function Ng(e,t){let r;for(const n of e)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);return r}function Mw(e,t,r=0,n=1/0,i){if(t=Math.floor(t),r=Math.floor(Math.max(0,r)),n=Math.floor(Math.min(e.length-1,n)),!(r<=t&&t<=n))return e;for(i=i===void 0?jw:iE(i);n>r;){if(n-r>600){const c=n-r+1,s=t-r+1,f=Math.log(c),l=.5*Math.exp(2*f/3),h=.5*Math.sqrt(f*l*(c-l)/c)*(s-c/2<0?-1:1),p=Math.max(r,Math.floor(t-s*l/c+h)),y=Math.min(n,Math.floor(t+(c-s)*l/c+h));Mw(e,t,p,y,i)}const a=e[t];let o=r,u=n;for(gn(e,r,t),i(e[n],a)>0&&gn(e,r,n);o0;)--u}i(e[r],a)===0?gn(e,r,u):(++u,gn(e,u,n)),u<=t&&(r=u+1),t<=u&&(n=u-1)}return e}function gn(e,t,r){const n=e[t];e[t]=e[r],e[r]=n}function cE(e,t,r){if(e=Float64Array.from(QT(e)),!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return Ng(e);if(t>=1)return Dg(e);var n,i=(n-1)*t,a=Math.floor(i),o=Dg(Mw(e,a).subarray(0,a+1)),u=Ng(e.subarray(a+1));return o+(u-o)*(i-a)}}function sE(e,t,r=Ew){if(!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return+r(e[0],0,e);if(t>=1)return+r(e[n-1],n-1,e);var n,i=(n-1)*t,a=Math.floor(i),o=+r(e[a],a,e),u=+r(e[a+1],a+1,e);return o+(u-o)*(i-a)}}function lE(e,t,r){e=+e,t=+t,r=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+r;for(var n=-1,i=Math.max(0,Math.ceil((t-e)/r))|0,a=new Array(i);++n>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?ji(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?ji(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=hE.exec(e))?new Ue(t[1],t[2],t[3],1):(t=pE.exec(e))?new Ue(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=dE.exec(e))?ji(t[1],t[2],t[3],t[4]):(t=vE.exec(e))?ji(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=yE.exec(e))?zg(t[1],t[2]/100,t[3]/100,1):(t=gE.exec(e))?zg(t[1],t[2]/100,t[3]/100,t[4]):qg.hasOwnProperty(e)?Fg(qg[e]):e==="transparent"?new Ue(NaN,NaN,NaN,0):null}function Fg(e){return new Ue(e>>16&255,e>>8&255,e&255,1)}function ji(e,t,r,n){return n<=0&&(e=t=r=NaN),new Ue(e,t,r,n)}function xE(e){return e instanceof bi||(e=Hn(e)),e?(e=e.rgb(),new Ue(e.r,e.g,e.b,e.opacity)):new Ue}function Tf(e,t,r,n){return arguments.length===1?xE(e):new Ue(e,t,r,n??1)}function Ue(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}rp(Ue,Tf,Iw(bi,{brighter(e){return e=e==null?Qi:Math.pow(Qi,e),new Ue(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?zn:Math.pow(zn,e),new Ue(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Ue(ir(this.r),ir(this.g),ir(this.b),ea(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ug,formatHex:Ug,formatHex8:wE,formatRgb:Wg,toString:Wg}));function Ug(){return`#${tr(this.r)}${tr(this.g)}${tr(this.b)}`}function wE(){return`#${tr(this.r)}${tr(this.g)}${tr(this.b)}${tr((isNaN(this.opacity)?1:this.opacity)*255)}`}function Wg(){const e=ea(this.opacity);return`${e===1?"rgb(":"rgba("}${ir(this.r)}, ${ir(this.g)}, ${ir(this.b)}${e===1?")":`, ${e})`}`}function ea(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function ir(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function tr(e){return e=ir(e),(e<16?"0":"")+e.toString(16)}function zg(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new ct(e,t,r,n)}function Cw(e){if(e instanceof ct)return new ct(e.h,e.s,e.l,e.opacity);if(e instanceof bi||(e=Hn(e)),!e)return new ct;if(e instanceof ct)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,i=Math.min(t,r,n),a=Math.max(t,r,n),o=NaN,u=a-i,c=(a+i)/2;return u?(t===a?o=(r-n)/u+(r0&&c<1?0:o,new ct(o,u,c,e.opacity)}function OE(e,t,r,n){return arguments.length===1?Cw(e):new ct(e,t,r,n??1)}function ct(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}rp(ct,OE,Iw(bi,{brighter(e){return e=e==null?Qi:Math.pow(Qi,e),new ct(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?zn:Math.pow(zn,e),new ct(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,i=2*r-n;return new Ue(Cs(e>=240?e-240:e+120,i,n),Cs(e,i,n),Cs(e<120?e+240:e-120,i,n),this.opacity)},clamp(){return new ct(Kg(this.h),Mi(this.s),Mi(this.l),ea(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=ea(this.opacity);return`${e===1?"hsl(":"hsla("}${Kg(this.h)}, ${Mi(this.s)*100}%, ${Mi(this.l)*100}%${e===1?")":`, ${e})`}`}}));function Kg(e){return e=(e||0)%360,e<0?e+360:e}function Mi(e){return Math.max(0,Math.min(1,e||0))}function Cs(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}const np=e=>()=>e;function _E(e,t){return function(r){return e+r*t}}function AE(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function SE(e){return(e=+e)==1?kw:function(t,r){return r-t?AE(t,r,e):np(isNaN(t)?r:t)}}function kw(e,t){var r=t-e;return r?_E(e,r):np(isNaN(e)?t:e)}const Hg=(function e(t){var r=SE(t);function n(i,a){var o=r((i=Tf(i)).r,(a=Tf(a)).r),u=r(i.g,a.g),c=r(i.b,a.b),s=kw(i.opacity,a.opacity);return function(f){return i.r=o(f),i.g=u(f),i.b=c(f),i.opacity=s(f),i+""}}return n.gamma=e,n})(1);function PE(e,t){t||(t=[]);var r=e?Math.min(t.length,e.length):0,n=t.slice(),i;return function(a){for(i=0;ir&&(a=t.slice(r,a),u[o]?u[o]+=a:u[++o]=a),(n=n[0])===(i=i[0])?u[o]?u[o]+=i:u[++o]=i:(u[++o]=null,c.push({i:o,x:dt(n,i)})),r=ks.lastIndex;return r180?f+=360:f-s>180&&(s+=360),h.push({i:l.push(i(l)+"rotate(",null,n)-2,x:dt(s,f)})):f&&l.push(i(l)+"rotate("+f+n)}function u(s,f,l,h){s!==f?h.push({i:l.push(i(l)+"skewX(",null,n)-2,x:dt(s,f)}):f&&l.push(i(l)+"skewX("+f+n)}function c(s,f,l,h,p,y){if(s!==l||f!==h){var v=p.push(i(p)+"scale(",null,",",null,")");y.push({i:v-4,x:dt(s,l)},{i:v-2,x:dt(f,h)})}else(l!==1||h!==1)&&p.push(i(p)+"scale("+l+","+h+")")}return function(s,f){var l=[],h=[];return s=e(s),f=e(f),a(s.translateX,s.translateY,f.translateX,f.translateY,l,h),o(s.rotate,f.rotate,l,h),u(s.skewX,f.skewX,l,h),c(s.scaleX,s.scaleY,f.scaleX,f.scaleY,l,h),s=f=null,function(p){for(var y=-1,v=h.length,d;++yt&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function UE(e,t,r){var n=e[0],i=e[1],a=t[0],o=t[1];return i2?WE:UE,c=s=null,l}function l(h){return h==null||isNaN(h=+h)?a:(c||(c=u(e.map(n),t,r)))(n(o(h)))}return l.invert=function(h){return o(i((s||(s=u(t,e.map(n),dt)))(h)))},l.domain=function(h){return arguments.length?(e=Array.from(h,ta),f()):e.slice()},l.range=function(h){return arguments.length?(t=Array.from(h),f()):t.slice()},l.rangeRound=function(h){return t=Array.from(h),r=ip,f()},l.clamp=function(h){return arguments.length?(o=h?!0:Be,f()):o!==Be},l.interpolate=function(h){return arguments.length?(r=h,f()):r},l.unknown=function(h){return arguments.length?(a=h,l):a},function(h,p){return n=h,i=p,f()}}function ap(){return Za()(Be,Be)}function zE(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function ra(e,t){if((r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var r,n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}function Nr(e){return e=ra(Math.abs(e)),e?e[1]:NaN}function KE(e,t){return function(r,n){for(var i=r.length,a=[],o=0,u=e[0],c=0;i>0&&u>0&&(c+u+1>n&&(u=Math.max(1,n-c)),a.push(r.substring(i-=u,i+u)),!((c+=u+1)>n));)u=e[o=(o+1)%e.length];return a.reverse().join(t)}}function HE(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var GE=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Gn(e){if(!(t=GE.exec(e)))throw new Error("invalid format: "+e);var t;return new op({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}Gn.prototype=op.prototype;function op(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}op.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function VE(e){e:for(var t=e.length,r=1,n=-1,i;r0&&(n=0);break}return n>0?e.slice(0,n)+e.slice(i+1):e}var Nw;function XE(e,t){var r=ra(e,t);if(!r)return e+"";var n=r[0],i=r[1],a=i-(Nw=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=n.length;return a===o?n:a>o?n+new Array(a-o+1).join("0"):a>0?n.slice(0,a)+"."+n.slice(a):"0."+new Array(1-a).join("0")+ra(e,Math.max(0,t+a-1))[0]}function Yg(e,t){var r=ra(e,t);if(!r)return e+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}const Zg={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:zE,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>Yg(e*100,t),r:Yg,s:XE,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function Jg(e){return e}var Qg=Array.prototype.map,em=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function YE(e){var t=e.grouping===void 0||e.thousands===void 0?Jg:KE(Qg.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",n=e.currency===void 0?"":e.currency[1]+"",i=e.decimal===void 0?".":e.decimal+"",a=e.numerals===void 0?Jg:HE(Qg.call(e.numerals,String)),o=e.percent===void 0?"%":e.percent+"",u=e.minus===void 0?"−":e.minus+"",c=e.nan===void 0?"NaN":e.nan+"";function s(l){l=Gn(l);var h=l.fill,p=l.align,y=l.sign,v=l.symbol,d=l.zero,m=l.width,x=l.comma,w=l.precision,O=l.trim,g=l.type;g==="n"?(x=!0,g="g"):Zg[g]||(w===void 0&&(w=12),O=!0,g="g"),(d||h==="0"&&p==="=")&&(d=!0,h="0",p="=");var b=v==="$"?r:v==="#"&&/[boxX]/.test(g)?"0"+g.toLowerCase():"",_=v==="$"?n:/[%p]/.test(g)?o:"",A=Zg[g],P=/[defgprs%]/.test(g);w=w===void 0?6:/[gprs]/.test(g)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function j(T){var E=b,M=_,I,$,k;if(g==="c")M=A(T)+M,T="";else{T=+T;var R=T<0||1/T<0;if(T=isNaN(T)?c:A(Math.abs(T),w),O&&(T=VE(T)),R&&+T==0&&y!=="+"&&(R=!1),E=(R?y==="("?y:u:y==="-"||y==="("?"":y)+E,M=(g==="s"?em[8+Nw/3]:"")+M+(R&&y==="("?")":""),P){for(I=-1,$=T.length;++I<$;)if(k=T.charCodeAt(I),48>k||k>57){M=(k===46?i+T.slice(I+1):T.slice(I))+M,T=T.slice(0,I);break}}}x&&!d&&(T=t(T,1/0));var L=E.length+T.length+M.length,B=L>1)+E+T+M+B.slice(L);break;default:T=B+E+T+M;break}return a(T)}return j.toString=function(){return l+""},j}function f(l,h){var p=s((l=Gn(l),l.type="f",l)),y=Math.max(-8,Math.min(8,Math.floor(Nr(h)/3)))*3,v=Math.pow(10,-y),d=em[8+y/3];return function(m){return p(v*m)+d}}return{format:s,formatPrefix:f}}var Ii,up,qw;ZE({thousands:",",grouping:[3],currency:["$",""]});function ZE(e){return Ii=YE(e),up=Ii.format,qw=Ii.formatPrefix,Ii}function JE(e){return Math.max(0,-Nr(Math.abs(e)))}function QE(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Nr(t)/3)))*3-Nr(Math.abs(e)))}function ej(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Nr(t)-Nr(e))+1}function Lw(e,t,r,n){var i=Sf(e,t,r),a;switch(n=Gn(n??",f"),n.type){case"s":{var o=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(a=QE(i,o))&&(n.precision=a),qw(n,o)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=ej(i,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=JE(i))&&(n.precision=a-(n.type==="%")*2);break}}return up(n)}function Ft(e){var t=e.domain;return e.ticks=function(r){var n=t();return _f(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var i=t();return Lw(i[0],i[i.length-1],r??10,n)},e.nice=function(r){r==null&&(r=10);var n=t(),i=0,a=n.length-1,o=n[i],u=n[a],c,s,f=10;for(u0;){if(s=Af(o,u,r),s===c)return n[i]=o,n[a]=u,t(n);if(s>0)o=Math.floor(o/s)*s,u=Math.ceil(u/s)*s;else if(s<0)o=Math.ceil(o*s)/s,u=Math.floor(u*s)/s;else break;c=s}return e},e}function na(){var e=ap();return e.copy=function(){return xi(e,na())},it.apply(e,arguments),Ft(e)}function Bw(e){var t;function r(n){return n==null||isNaN(n=+n)?t:n}return r.invert=r,r.domain=r.range=function(n){return arguments.length?(e=Array.from(n,ta),r):e.slice()},r.unknown=function(n){return arguments.length?(t=n,r):t},r.copy=function(){return Bw(e).unknown(t)},e=arguments.length?Array.from(e,ta):[0,1],Ft(r)}function Fw(e,t){e=e.slice();var r=0,n=e.length-1,i=e[r],a=e[n],o;return aMath.pow(e,t)}function aj(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function nm(e){return(t,r)=>-e(-t,r)}function cp(e){const t=e(tm,rm),r=t.domain;let n=10,i,a;function o(){return i=aj(n),a=ij(n),r()[0]<0?(i=nm(i),a=nm(a),e(tj,rj)):e(tm,rm),t}return t.base=function(u){return arguments.length?(n=+u,o()):n},t.domain=function(u){return arguments.length?(r(u),o()):r()},t.ticks=u=>{const c=r();let s=c[0],f=c[c.length-1];const l=f0){for(;h<=p;++h)for(y=1;yf)break;m.push(v)}}else for(;h<=p;++h)for(y=n-1;y>=1;--y)if(v=h>0?y/a(-h):y*a(h),!(vf)break;m.push(v)}m.length*2{if(u==null&&(u=10),c==null&&(c=n===10?"s":","),typeof c!="function"&&(!(n%1)&&(c=Gn(c)).precision==null&&(c.trim=!0),c=up(c)),u===1/0)return c;const s=Math.max(1,n*u/t.ticks().length);return f=>{let l=f/a(Math.round(i(f)));return l*nr(Fw(r(),{floor:u=>a(Math.floor(i(u))),ceil:u=>a(Math.ceil(i(u)))})),t}function Uw(){const e=cp(Za()).domain([1,10]);return e.copy=()=>xi(e,Uw()).base(e.base()),it.apply(e,arguments),e}function im(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function am(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function sp(e){var t=1,r=e(im(t),am(t));return r.constant=function(n){return arguments.length?e(im(t=+n),am(t)):t},Ft(r)}function Ww(){var e=sp(Za());return e.copy=function(){return xi(e,Ww()).constant(e.constant())},it.apply(e,arguments)}function om(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function oj(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function uj(e){return e<0?-e*e:e*e}function lp(e){var t=e(Be,Be),r=1;function n(){return r===1?e(Be,Be):r===.5?e(oj,uj):e(om(r),om(1/r))}return t.exponent=function(i){return arguments.length?(r=+i,n()):r},Ft(t)}function fp(){var e=lp(Za());return e.copy=function(){return xi(e,fp()).exponent(e.exponent())},it.apply(e,arguments),e}function cj(){return fp.apply(null,arguments).exponent(.5)}function um(e){return Math.sign(e)*e*e}function sj(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}function zw(){var e=ap(),t=[0,1],r=!1,n;function i(a){var o=sj(e(a));return isNaN(o)?n:r?Math.round(o):o}return i.invert=function(a){return e.invert(um(a))},i.domain=function(a){return arguments.length?(e.domain(a),i):e.domain()},i.range=function(a){return arguments.length?(e.range((t=Array.from(a,ta)).map(um)),i):t.slice()},i.rangeRound=function(a){return i.range(a).round(!0)},i.round=function(a){return arguments.length?(r=!!a,i):r},i.clamp=function(a){return arguments.length?(e.clamp(a),i):e.clamp()},i.unknown=function(a){return arguments.length?(n=a,i):n},i.copy=function(){return zw(e.domain(),t).round(r).clamp(e.clamp()).unknown(n)},it.apply(i,arguments),Ft(i)}function Kw(){var e=[],t=[],r=[],n;function i(){var o=0,u=Math.max(1,t.length);for(r=new Array(u-1);++o0?r[u-1]:e[0],u=r?[n[r-1],t]:[n[s-1],n[s]]},o.unknown=function(c){return arguments.length&&(a=c),o},o.thresholds=function(){return n.slice()},o.copy=function(){return Hw().domain([e,t]).range(i).unknown(a)},it.apply(Ft(o),arguments)}function Gw(){var e=[.5],t=[0,1],r,n=1;function i(a){return a!=null&&a<=a?t[mi(e,a,0,n)]:r}return i.domain=function(a){return arguments.length?(e=Array.from(a),n=Math.min(e.length,t.length-1),i):e.slice()},i.range=function(a){return arguments.length?(t=Array.from(a),n=Math.min(e.length,t.length-1),i):t.slice()},i.invertExtent=function(a){var o=t.indexOf(a);return[e[o-1],e[o]]},i.unknown=function(a){return arguments.length?(r=a,i):r},i.copy=function(){return Gw().domain(e).range(t).unknown(r)},it.apply(i,arguments)}const Rs=new Date,Ds=new Date;function Pe(e,t,r,n){function i(a){return e(a=arguments.length===0?new Date:new Date(+a)),a}return i.floor=a=>(e(a=new Date(+a)),a),i.ceil=a=>(e(a=new Date(a-1)),t(a,1),e(a),a),i.round=a=>{const o=i(a),u=i.ceil(a);return a-o(t(a=new Date(+a),o==null?1:Math.floor(o)),a),i.range=(a,o,u)=>{const c=[];if(a=i.ceil(a),u=u==null?1:Math.floor(u),!(a0))return c;let s;do c.push(s=new Date(+a)),t(a,u),e(a);while(sPe(o=>{if(o>=o)for(;e(o),!a(o);)o.setTime(o-1)},(o,u)=>{if(o>=o)if(u<0)for(;++u<=0;)for(;t(o,-1),!a(o););else for(;--u>=0;)for(;t(o,1),!a(o););}),r&&(i.count=(a,o)=>(Rs.setTime(+a),Ds.setTime(+o),e(Rs),e(Ds),Math.floor(r(Rs,Ds))),i.every=a=>(a=Math.floor(a),!isFinite(a)||!(a>0)?null:a>1?i.filter(n?o=>n(o)%a===0:o=>i.count(0,o)%a===0):i)),i}const ia=Pe(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);ia.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?Pe(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):ia);ia.range;const St=1e3,rt=St*60,Pt=rt*60,$t=Pt*24,hp=$t*7,cm=$t*30,Ns=$t*365,rr=Pe(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*St)},(e,t)=>(t-e)/St,e=>e.getUTCSeconds());rr.range;const pp=Pe(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*St)},(e,t)=>{e.setTime(+e+t*rt)},(e,t)=>(t-e)/rt,e=>e.getMinutes());pp.range;const dp=Pe(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*rt)},(e,t)=>(t-e)/rt,e=>e.getUTCMinutes());dp.range;const vp=Pe(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*St-e.getMinutes()*rt)},(e,t)=>{e.setTime(+e+t*Pt)},(e,t)=>(t-e)/Pt,e=>e.getHours());vp.range;const yp=Pe(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*Pt)},(e,t)=>(t-e)/Pt,e=>e.getUTCHours());yp.range;const wi=Pe(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*rt)/$t,e=>e.getDate()-1);wi.range;const Ja=Pe(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/$t,e=>e.getUTCDate()-1);Ja.range;const Vw=Pe(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/$t,e=>Math.floor(e/$t));Vw.range;function dr(e){return Pe(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,r)=>{t.setDate(t.getDate()+r*7)},(t,r)=>(r-t-(r.getTimezoneOffset()-t.getTimezoneOffset())*rt)/hp)}const Qa=dr(0),aa=dr(1),lj=dr(2),fj=dr(3),qr=dr(4),hj=dr(5),pj=dr(6);Qa.range;aa.range;lj.range;fj.range;qr.range;hj.range;pj.range;function vr(e){return Pe(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCDate(t.getUTCDate()+r*7)},(t,r)=>(r-t)/hp)}const eo=vr(0),oa=vr(1),dj=vr(2),vj=vr(3),Lr=vr(4),yj=vr(5),gj=vr(6);eo.range;oa.range;dj.range;vj.range;Lr.range;yj.range;gj.range;const gp=Pe(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());gp.range;const mp=Pe(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());mp.range;const It=Pe(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());It.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:Pe(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)});It.range;const Ct=Pe(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Ct.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:Pe(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)});Ct.range;function Xw(e,t,r,n,i,a){const o=[[rr,1,St],[rr,5,5*St],[rr,15,15*St],[rr,30,30*St],[a,1,rt],[a,5,5*rt],[a,15,15*rt],[a,30,30*rt],[i,1,Pt],[i,3,3*Pt],[i,6,6*Pt],[i,12,12*Pt],[n,1,$t],[n,2,2*$t],[r,1,hp],[t,1,cm],[t,3,3*cm],[e,1,Ns]];function u(s,f,l){const h=fd).right(o,h);if(p===o.length)return e.every(Sf(s/Ns,f/Ns,l));if(p===0)return ia.every(Math.max(Sf(s,f,l),1));const[y,v]=o[h/o[p-1][2]53)return null;"w"in D||(D.w=1),"Z"in D?(re=Ls(mn(D.y,0,1)),Y=re.getUTCDay(),re=Y>4||Y===0?oa.ceil(re):oa(re),re=Ja.offset(re,(D.V-1)*7),D.y=re.getUTCFullYear(),D.m=re.getUTCMonth(),D.d=re.getUTCDate()+(D.w+6)%7):(re=qs(mn(D.y,0,1)),Y=re.getDay(),re=Y>4||Y===0?aa.ceil(re):aa(re),re=wi.offset(re,(D.V-1)*7),D.y=re.getFullYear(),D.m=re.getMonth(),D.d=re.getDate()+(D.w+6)%7)}else("W"in D||"U"in D)&&("w"in D||(D.w="u"in D?D.u%7:"W"in D?1:0),Y="Z"in D?Ls(mn(D.y,0,1)).getUTCDay():qs(mn(D.y,0,1)).getDay(),D.m=0,D.d="W"in D?(D.w+6)%7+D.W*7-(Y+5)%7:D.w+D.U*7-(Y+6)%7);return"Z"in D?(D.H+=D.Z/100|0,D.M+=D.Z%100,Ls(D)):qs(D)}}function A(F,Q,ee,D){for(var ve=0,re=Q.length,Y=ee.length,ye,Z;ve=Y)return-1;if(ye=Q.charCodeAt(ve++),ye===37){if(ye=Q.charAt(ve++),Z=g[ye in sm?Q.charAt(ve++):ye],!Z||(D=Z(F,ee,D))<0)return-1}else if(ye!=ee.charCodeAt(D++))return-1}return D}function P(F,Q,ee){var D=s.exec(Q.slice(ee));return D?(F.p=f.get(D[0].toLowerCase()),ee+D[0].length):-1}function j(F,Q,ee){var D=p.exec(Q.slice(ee));return D?(F.w=y.get(D[0].toLowerCase()),ee+D[0].length):-1}function T(F,Q,ee){var D=l.exec(Q.slice(ee));return D?(F.w=h.get(D[0].toLowerCase()),ee+D[0].length):-1}function E(F,Q,ee){var D=m.exec(Q.slice(ee));return D?(F.m=x.get(D[0].toLowerCase()),ee+D[0].length):-1}function M(F,Q,ee){var D=v.exec(Q.slice(ee));return D?(F.m=d.get(D[0].toLowerCase()),ee+D[0].length):-1}function I(F,Q,ee){return A(F,t,Q,ee)}function $(F,Q,ee){return A(F,r,Q,ee)}function k(F,Q,ee){return A(F,n,Q,ee)}function R(F){return o[F.getDay()]}function L(F){return a[F.getDay()]}function B(F){return c[F.getMonth()]}function z(F){return u[F.getMonth()]}function H(F){return i[+(F.getHours()>=12)]}function U(F){return 1+~~(F.getMonth()/3)}function G(F){return o[F.getUTCDay()]}function se(F){return a[F.getUTCDay()]}function me(F){return c[F.getUTCMonth()]}function De(F){return u[F.getUTCMonth()]}function wt(F){return i[+(F.getUTCHours()>=12)]}function Ie(F){return 1+~~(F.getUTCMonth()/3)}return{format:function(F){var Q=b(F+="",w);return Q.toString=function(){return F},Q},parse:function(F){var Q=_(F+="",!1);return Q.toString=function(){return F},Q},utcFormat:function(F){var Q=b(F+="",O);return Q.toString=function(){return F},Q},utcParse:function(F){var Q=_(F+="",!0);return Q.toString=function(){return F},Q}}}var sm={"-":"",_:" ",0:"0"},Me=/^\s*\d+/,_j=/^%/,Aj=/[\\^$*+?|[\]().{}]/g;function ie(e,t,r){var n=e<0?"-":"",i=(n?-e:e)+"",a=i.length;return n+(a[t.toLowerCase(),r]))}function Pj(e,t,r){var n=Me.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function Tj(e,t,r){var n=Me.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function Ej(e,t,r){var n=Me.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function jj(e,t,r){var n=Me.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function Mj(e,t,r){var n=Me.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function lm(e,t,r){var n=Me.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function fm(e,t,r){var n=Me.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function $j(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function Ij(e,t,r){var n=Me.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function Cj(e,t,r){var n=Me.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function hm(e,t,r){var n=Me.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function kj(e,t,r){var n=Me.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function pm(e,t,r){var n=Me.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function Rj(e,t,r){var n=Me.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function Dj(e,t,r){var n=Me.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function Nj(e,t,r){var n=Me.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function qj(e,t,r){var n=Me.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function Lj(e,t,r){var n=_j.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function Bj(e,t,r){var n=Me.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function Fj(e,t,r){var n=Me.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function dm(e,t){return ie(e.getDate(),t,2)}function Uj(e,t){return ie(e.getHours(),t,2)}function Wj(e,t){return ie(e.getHours()%12||12,t,2)}function zj(e,t){return ie(1+wi.count(It(e),e),t,3)}function Yw(e,t){return ie(e.getMilliseconds(),t,3)}function Kj(e,t){return Yw(e,t)+"000"}function Hj(e,t){return ie(e.getMonth()+1,t,2)}function Gj(e,t){return ie(e.getMinutes(),t,2)}function Vj(e,t){return ie(e.getSeconds(),t,2)}function Xj(e){var t=e.getDay();return t===0?7:t}function Yj(e,t){return ie(Qa.count(It(e)-1,e),t,2)}function Zw(e){var t=e.getDay();return t>=4||t===0?qr(e):qr.ceil(e)}function Zj(e,t){return e=Zw(e),ie(qr.count(It(e),e)+(It(e).getDay()===4),t,2)}function Jj(e){return e.getDay()}function Qj(e,t){return ie(aa.count(It(e)-1,e),t,2)}function eM(e,t){return ie(e.getFullYear()%100,t,2)}function tM(e,t){return e=Zw(e),ie(e.getFullYear()%100,t,2)}function rM(e,t){return ie(e.getFullYear()%1e4,t,4)}function nM(e,t){var r=e.getDay();return e=r>=4||r===0?qr(e):qr.ceil(e),ie(e.getFullYear()%1e4,t,4)}function iM(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+ie(t/60|0,"0",2)+ie(t%60,"0",2)}function vm(e,t){return ie(e.getUTCDate(),t,2)}function aM(e,t){return ie(e.getUTCHours(),t,2)}function oM(e,t){return ie(e.getUTCHours()%12||12,t,2)}function uM(e,t){return ie(1+Ja.count(Ct(e),e),t,3)}function Jw(e,t){return ie(e.getUTCMilliseconds(),t,3)}function cM(e,t){return Jw(e,t)+"000"}function sM(e,t){return ie(e.getUTCMonth()+1,t,2)}function lM(e,t){return ie(e.getUTCMinutes(),t,2)}function fM(e,t){return ie(e.getUTCSeconds(),t,2)}function hM(e){var t=e.getUTCDay();return t===0?7:t}function pM(e,t){return ie(eo.count(Ct(e)-1,e),t,2)}function Qw(e){var t=e.getUTCDay();return t>=4||t===0?Lr(e):Lr.ceil(e)}function dM(e,t){return e=Qw(e),ie(Lr.count(Ct(e),e)+(Ct(e).getUTCDay()===4),t,2)}function vM(e){return e.getUTCDay()}function yM(e,t){return ie(oa.count(Ct(e)-1,e),t,2)}function gM(e,t){return ie(e.getUTCFullYear()%100,t,2)}function mM(e,t){return e=Qw(e),ie(e.getUTCFullYear()%100,t,2)}function bM(e,t){return ie(e.getUTCFullYear()%1e4,t,4)}function xM(e,t){var r=e.getUTCDay();return e=r>=4||r===0?Lr(e):Lr.ceil(e),ie(e.getUTCFullYear()%1e4,t,4)}function wM(){return"+0000"}function ym(){return"%"}function gm(e){return+e}function mm(e){return Math.floor(+e/1e3)}var xr,eO,tO;OM({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function OM(e){return xr=Oj(e),eO=xr.format,xr.parse,tO=xr.utcFormat,xr.utcParse,xr}function _M(e){return new Date(e)}function AM(e){return e instanceof Date?+e:+new Date(+e)}function bp(e,t,r,n,i,a,o,u,c,s){var f=ap(),l=f.invert,h=f.domain,p=s(".%L"),y=s(":%S"),v=s("%I:%M"),d=s("%I %p"),m=s("%a %d"),x=s("%b %d"),w=s("%B"),O=s("%Y");function g(b){return(c(b)t(i/(e.length-1)))},r.quantiles=function(n){return Array.from({length:n+1},(i,a)=>cE(e,a/n))},r.copy=function(){return aO(t).domain(e)},Rt.apply(r,arguments)}function ro(){var e=0,t=.5,r=1,n=1,i,a,o,u,c,s=Be,f,l=!1,h;function p(v){return isNaN(v=+v)?h:(v=.5+((v=+f(v))-a)*(n*vr}return Fs=e,Fs}var Us,Om;function jM(){if(Om)return Us;Om=1;var e=no(),t=sO(),r=ln();function n(i){return i&&i.length?e(i,r,t):void 0}return Us=n,Us}var MM=jM();const io=ce(MM);var Ws,_m;function lO(){if(_m)return Ws;_m=1;function e(t,r){return te.e^a.s<0?1:-1;for(n=a.d.length,i=e.d.length,t=0,r=ne.d[t]^a.s<0?1:-1;return n===i?0:n>i^a.s<0?1:-1};W.decimalPlaces=W.dp=function(){var e=this,t=e.d.length-1,r=(t-e.e)*de;if(t=e.d[t],t)for(;t%10==0;t/=10)r--;return r<0?0:r};W.dividedBy=W.div=function(e){return jt(this,new this.constructor(e))};W.dividedToIntegerBy=W.idiv=function(e){var t=this,r=t.constructor;return le(jt(t,new r(e),0,1),r.precision)};W.equals=W.eq=function(e){return!this.cmp(e)};W.exponent=function(){return we(this)};W.greaterThan=W.gt=function(e){return this.cmp(e)>0};W.greaterThanOrEqualTo=W.gte=function(e){return this.cmp(e)>=0};W.isInteger=W.isint=function(){return this.e>this.d.length-2};W.isNegative=W.isneg=function(){return this.s<0};W.isPositive=W.ispos=function(){return this.s>0};W.isZero=function(){return this.s===0};W.lessThan=W.lt=function(e){return this.cmp(e)<0};W.lessThanOrEqualTo=W.lte=function(e){return this.cmp(e)<1};W.logarithm=W.log=function(e){var t,r=this,n=r.constructor,i=n.precision,a=i+5;if(e===void 0)e=new n(10);else if(e=new n(e),e.s<1||e.eq(Ve))throw Error(nt+"NaN");if(r.s<1)throw Error(nt+(r.s?"NaN":"-Infinity"));return r.eq(Ve)?new n(0):(ge=!1,t=jt(Vn(r,a),Vn(e,a),a),ge=!0,le(t,i))};W.minus=W.sub=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?dO(t,e):hO(t,(e.s=-e.s,e))};W.modulo=W.mod=function(e){var t,r=this,n=r.constructor,i=n.precision;if(e=new n(e),!e.s)throw Error(nt+"NaN");return r.s?(ge=!1,t=jt(r,e,0,1).times(e),ge=!0,r.minus(t)):le(new n(r),i)};W.naturalExponential=W.exp=function(){return pO(this)};W.naturalLogarithm=W.ln=function(){return Vn(this)};W.negated=W.neg=function(){var e=new this.constructor(this);return e.s=-e.s||0,e};W.plus=W.add=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?hO(t,e):dO(t,(e.s=-e.s,e))};W.precision=W.sd=function(e){var t,r,n,i=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(ar+e);if(t=we(i)+1,n=i.d.length-1,r=n*de+1,n=i.d[n],n){for(;n%10==0;n/=10)r--;for(n=i.d[0];n>=10;n/=10)r++}return e&&t>r?t:r};W.squareRoot=W.sqrt=function(){var e,t,r,n,i,a,o,u=this,c=u.constructor;if(u.s<1){if(!u.s)return new c(0);throw Error(nt+"NaN")}for(e=we(u),ge=!1,i=Math.sqrt(+u),i==0||i==1/0?(t=vt(u.d),(t.length+e)%2==0&&(t+="0"),i=Math.sqrt(t),e=pn((e+1)/2)-(e<0||e%2),i==1/0?t="5e"+e:(t=i.toExponential(),t=t.slice(0,t.indexOf("e")+1)+e),n=new c(t)):n=new c(i.toString()),r=c.precision,i=o=r+3;;)if(a=n,n=a.plus(jt(u,a,o+2)).times(.5),vt(a.d).slice(0,o)===(t=vt(n.d)).slice(0,o)){if(t=t.slice(o-3,o+1),i==o&&t=="4999"){if(le(a,r+1,0),a.times(a).eq(u)){n=a;break}}else if(t!="9999")break;o+=4}return ge=!0,le(n,r)};W.times=W.mul=function(e){var t,r,n,i,a,o,u,c,s,f=this,l=f.constructor,h=f.d,p=(e=new l(e)).d;if(!f.s||!e.s)return new l(0);for(e.s*=f.s,r=f.e+e.e,c=h.length,s=p.length,c=0;){for(t=0,i=c+n;i>n;)u=a[i]+p[n]*h[i-n-1]+t,a[i--]=u%Ee|0,t=u/Ee|0;a[i]=(a[i]+t)%Ee|0}for(;!a[--o];)a.pop();return t?++r:a.shift(),e.d=a,e.e=r,ge?le(e,l.precision):e};W.toDecimalPlaces=W.todp=function(e,t){var r=this,n=r.constructor;return r=new n(r),e===void 0?r:(mt(e,0,hn),t===void 0?t=n.rounding:mt(t,0,8),le(r,e+we(r)+1,t))};W.toExponential=function(e,t){var r,n=this,i=n.constructor;return e===void 0?r=lr(n,!0):(mt(e,0,hn),t===void 0?t=i.rounding:mt(t,0,8),n=le(new i(n),e+1,t),r=lr(n,!0,e+1)),r};W.toFixed=function(e,t){var r,n,i=this,a=i.constructor;return e===void 0?lr(i):(mt(e,0,hn),t===void 0?t=a.rounding:mt(t,0,8),n=le(new a(i),e+we(i)+1,t),r=lr(n.abs(),!1,e+we(n)+1),i.isneg()&&!i.isZero()?"-"+r:r)};W.toInteger=W.toint=function(){var e=this,t=e.constructor;return le(new t(e),we(e)+1,t.rounding)};W.toNumber=function(){return+this};W.toPower=W.pow=function(e){var t,r,n,i,a,o,u=this,c=u.constructor,s=12,f=+(e=new c(e));if(!e.s)return new c(Ve);if(u=new c(u),!u.s){if(e.s<1)throw Error(nt+"Infinity");return u}if(u.eq(Ve))return u;if(n=c.precision,e.eq(Ve))return le(u,n);if(t=e.e,r=e.d.length-1,o=t>=r,a=u.s,o){if((r=f<0?-f:f)<=fO){for(i=new c(Ve),t=Math.ceil(n/de+4),ge=!1;r%2&&(i=i.times(u),jm(i.d,t)),r=pn(r/2),r!==0;)u=u.times(u),jm(u.d,t);return ge=!0,e.s<0?new c(Ve).div(i):le(i,n)}}else if(a<0)throw Error(nt+"NaN");return a=a<0&&e.d[Math.max(t,r)]&1?-1:1,u.s=1,ge=!1,i=e.times(Vn(u,n+s)),ge=!0,i=pO(i),i.s=a,i};W.toPrecision=function(e,t){var r,n,i=this,a=i.constructor;return e===void 0?(r=we(i),n=lr(i,r<=a.toExpNeg||r>=a.toExpPos)):(mt(e,1,hn),t===void 0?t=a.rounding:mt(t,0,8),i=le(new a(i),e,t),r=we(i),n=lr(i,e<=r||r<=a.toExpNeg,e)),n};W.toSignificantDigits=W.tosd=function(e,t){var r=this,n=r.constructor;return e===void 0?(e=n.precision,t=n.rounding):(mt(e,1,hn),t===void 0?t=n.rounding:mt(t,0,8)),le(new n(r),e,t)};W.toString=W.valueOf=W.val=W.toJSON=W[Symbol.for("nodejs.util.inspect.custom")]=function(){var e=this,t=we(e),r=e.constructor;return lr(e,t<=r.toExpNeg||t>=r.toExpPos)};function hO(e,t){var r,n,i,a,o,u,c,s,f=e.constructor,l=f.precision;if(!e.s||!t.s)return t.s||(t=new f(e)),ge?le(t,l):t;if(c=e.d,s=t.d,o=e.e,i=t.e,c=c.slice(),a=o-i,a){for(a<0?(n=c,a=-a,u=s.length):(n=s,i=o,u=c.length),o=Math.ceil(l/de),u=o>u?o+1:u+1,a>u&&(a=u,n.length=1),n.reverse();a--;)n.push(0);n.reverse()}for(u=c.length,a=s.length,u-a<0&&(a=u,n=s,s=c,c=n),r=0;a;)r=(c[--a]=c[a]+s[a]+r)/Ee|0,c[a]%=Ee;for(r&&(c.unshift(r),++i),u=c.length;c[--u]==0;)c.pop();return t.d=c,t.e=i,ge?le(t,l):t}function mt(e,t,r){if(e!==~~e||er)throw Error(ar+e)}function vt(e){var t,r,n,i=e.length-1,a="",o=e[0];if(i>0){for(a+=o,t=1;to?1:-1;else for(u=c=0;ui[u]?1:-1;break}return c}function r(n,i,a){for(var o=0;a--;)n[a]-=o,o=n[a]1;)n.shift()}return function(n,i,a,o){var u,c,s,f,l,h,p,y,v,d,m,x,w,O,g,b,_,A,P=n.constructor,j=n.s==i.s?1:-1,T=n.d,E=i.d;if(!n.s)return new P(n);if(!i.s)throw Error(nt+"Division by zero");for(c=n.e-i.e,_=E.length,g=T.length,p=new P(j),y=p.d=[],s=0;E[s]==(T[s]||0);)++s;if(E[s]>(T[s]||0)&&--c,a==null?x=a=P.precision:o?x=a+(we(n)-we(i))+1:x=a,x<0)return new P(0);if(x=x/de+2|0,s=0,_==1)for(f=0,E=E[0],x++;(s1&&(E=e(E,f),T=e(T,f),_=E.length,g=T.length),O=_,v=T.slice(0,_),d=v.length;d<_;)v[d++]=0;A=E.slice(),A.unshift(0),b=E[0],E[1]>=Ee/2&&++b;do f=0,u=t(E,v,_,d),u<0?(m=v[0],_!=d&&(m=m*Ee+(v[1]||0)),f=m/b|0,f>1?(f>=Ee&&(f=Ee-1),l=e(E,f),h=l.length,d=v.length,u=t(l,v,h,d),u==1&&(f--,r(l,_16)throw Error(Op+we(e));if(!e.s)return new f(Ve);for(ge=!1,u=l,o=new f(.03125);e.abs().gte(.1);)e=e.times(o),s+=5;for(n=Math.log(Jt(2,s))/Math.LN10*2+5|0,u+=n,r=i=a=new f(Ve),f.precision=u;;){if(i=le(i.times(e),u),r=r.times(++c),o=a.plus(jt(i,r,u)),vt(o.d).slice(0,u)===vt(a.d).slice(0,u)){for(;s--;)a=le(a.times(a),u);return f.precision=l,t==null?(ge=!0,le(a,l)):a}a=o}}function we(e){for(var t=e.e*de,r=e.d[0];r>=10;r/=10)t++;return t}function Vs(e,t,r){if(t>e.LN10.sd())throw ge=!0,r&&(e.precision=r),Error(nt+"LN10 precision limit exceeded");return le(new e(e.LN10),t)}function Nt(e){for(var t="";e--;)t+="0";return t}function Vn(e,t){var r,n,i,a,o,u,c,s,f,l=1,h=10,p=e,y=p.d,v=p.constructor,d=v.precision;if(p.s<1)throw Error(nt+(p.s?"NaN":"-Infinity"));if(p.eq(Ve))return new v(0);if(t==null?(ge=!1,s=d):s=t,p.eq(10))return t==null&&(ge=!0),Vs(v,s);if(s+=h,v.precision=s,r=vt(y),n=r.charAt(0),a=we(p),Math.abs(a)<15e14){for(;n<7&&n!=1||n==1&&r.charAt(1)>3;)p=p.times(e),r=vt(p.d),n=r.charAt(0),l++;a=we(p),n>1?(p=new v("0."+r),a++):p=new v(n+"."+r.slice(1))}else return c=Vs(v,s+2,d).times(a+""),p=Vn(new v(n+"."+r.slice(1)),s-h).plus(c),v.precision=d,t==null?(ge=!0,le(p,d)):p;for(u=o=p=jt(p.minus(Ve),p.plus(Ve),s),f=le(p.times(p),s),i=3;;){if(o=le(o.times(f),s),c=u.plus(jt(o,new v(i),s)),vt(c.d).slice(0,s)===vt(u.d).slice(0,s))return u=u.times(2),a!==0&&(u=u.plus(Vs(v,s+2,d).times(a+""))),u=jt(u,new v(l),s),v.precision=d,t==null?(ge=!0,le(u,d)):u;u=c,i+=2}}function Em(e,t){var r,n,i;for((r=t.indexOf("."))>-1&&(t=t.replace(".","")),(n=t.search(/e/i))>0?(r<0&&(r=n),r+=+t.slice(n+1),t=t.substring(0,n)):r<0&&(r=t.length),n=0;t.charCodeAt(n)===48;)++n;for(i=t.length;t.charCodeAt(i-1)===48;)--i;if(t=t.slice(n,i),t){if(i-=n,r=r-n-1,e.e=pn(r/de),e.d=[],n=(r+1)%de,r<0&&(n+=de),nua||e.e<-ua))throw Error(Op+r)}else e.s=0,e.e=0,e.d=[0];return e}function le(e,t,r){var n,i,a,o,u,c,s,f,l=e.d;for(o=1,a=l[0];a>=10;a/=10)o++;if(n=t-o,n<0)n+=de,i=t,s=l[f=0];else{if(f=Math.ceil((n+1)/de),a=l.length,f>=a)return e;for(s=a=l[f],o=1;a>=10;a/=10)o++;n%=de,i=n-de+o}if(r!==void 0&&(a=Jt(10,o-i-1),u=s/a%10|0,c=t<0||l[f+1]!==void 0||s%a,c=r<4?(u||c)&&(r==0||r==(e.s<0?3:2)):u>5||u==5&&(r==4||c||r==6&&(n>0?i>0?s/Jt(10,o-i):0:l[f-1])%10&1||r==(e.s<0?8:7))),t<1||!l[0])return c?(a=we(e),l.length=1,t=t-a-1,l[0]=Jt(10,(de-t%de)%de),e.e=pn(-t/de)||0):(l.length=1,l[0]=e.e=e.s=0),e;if(n==0?(l.length=f,a=1,f--):(l.length=f+1,a=Jt(10,de-n),l[f]=i>0?(s/Jt(10,o-i)%Jt(10,i)|0)*a:0),c)for(;;)if(f==0){(l[0]+=a)==Ee&&(l[0]=1,++e.e);break}else{if(l[f]+=a,l[f]!=Ee)break;l[f--]=0,a=1}for(n=l.length;l[--n]===0;)l.pop();if(ge&&(e.e>ua||e.e<-ua))throw Error(Op+we(e));return e}function dO(e,t){var r,n,i,a,o,u,c,s,f,l,h=e.constructor,p=h.precision;if(!e.s||!t.s)return t.s?t.s=-t.s:t=new h(e),ge?le(t,p):t;if(c=e.d,l=t.d,n=t.e,s=e.e,c=c.slice(),o=s-n,o){for(f=o<0,f?(r=c,o=-o,u=l.length):(r=l,n=s,u=c.length),i=Math.max(Math.ceil(p/de),u)+2,o>i&&(o=i,r.length=1),r.reverse(),i=o;i--;)r.push(0);r.reverse()}else{for(i=c.length,u=l.length,f=i0;--i)c[u++]=0;for(i=l.length;i>o;){if(c[--i]0?a=a.charAt(0)+"."+a.slice(1)+Nt(n):o>1&&(a=a.charAt(0)+"."+a.slice(1)),a=a+(i<0?"e":"e+")+i):i<0?(a="0."+Nt(-i-1)+a,r&&(n=r-o)>0&&(a+=Nt(n))):i>=o?(a+=Nt(i+1-o),r&&(n=r-i-1)>0&&(a=a+"."+Nt(n))):((n=i+1)0&&(i+1===o&&(a+="."),a+=Nt(n))),e.s<0?"-"+a:a}function jm(e,t){if(e.length>t)return e.length=t,!0}function vO(e){var t,r,n;function i(a){var o=this;if(!(o instanceof i))return new i(a);if(o.constructor=i,a instanceof i){o.s=a.s,o.e=a.e,o.d=(a=a.d)?a.slice():a;return}if(typeof a=="number"){if(a*0!==0)throw Error(ar+a);if(a>0)o.s=1;else if(a<0)a=-a,o.s=-1;else{o.s=0,o.e=0,o.d=[0];return}if(a===~~a&&a<1e7){o.e=0,o.d=[a];return}return Em(o,a.toString())}else if(typeof a!="string")throw Error(ar+a);if(a.charCodeAt(0)===45?(a=a.slice(1),o.s=-1):o.s=1,BM.test(a))Em(o,a);else throw Error(ar+a)}if(i.prototype=W,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.clone=vO,i.config=i.set=FM,e===void 0&&(e={}),e)for(n=["precision","rounding","toExpNeg","toExpPos","LN10"],t=0;t=i[t+1]&&n<=i[t+2])this[r]=n;else throw Error(ar+r+": "+n);if((n=e[r="LN10"])!==void 0)if(n==Math.LN10)this[r]=new this(n);else throw Error(ar+r+": "+n);return this}var _p=vO(LM);Ve=new _p(1);const ue=_p;function UM(e){return HM(e)||KM(e)||zM(e)||WM()}function WM(){throw new TypeError(`Invalid attempt to spread non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function zM(e,t){if(e){if(typeof e=="string")return $f(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return $f(e,t)}}function KM(e){if(typeof Symbol<"u"&&Symbol.iterator in Object(e))return Array.from(e)}function HM(e){if(Array.isArray(e))return $f(e)}function $f(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=t?r.apply(void 0,i):e(t-o,Mm(function(){for(var u=arguments.length,c=new Array(u),s=0;se.length)&&(t=e.length);for(var r=0,n=new Array(t);r"u"||!(Symbol.iterator in Object(e)))){var r=[],n=!0,i=!1,a=void 0;try{for(var o=e[Symbol.iterator](),u;!(n=(u=o.next()).done)&&(r.push(u.value),!(t&&r.length===t));n=!0);}catch(c){i=!0,a=c}finally{try{!n&&o.return!=null&&o.return()}finally{if(i)throw a}}return r}}function u$(e){if(Array.isArray(e))return e}function xO(e){var t=Xn(e,2),r=t[0],n=t[1],i=r,a=n;return r>n&&(i=n,a=r),[i,a]}function wO(e,t,r){if(e.lte(0))return new ue(0);var n=uo.getDigitCount(e.toNumber()),i=new ue(10).pow(n),a=e.div(i),o=n!==1?.05:.1,u=new ue(Math.ceil(a.div(o).toNumber())).add(r).mul(o),c=u.mul(i);return t?c:new ue(Math.ceil(c))}function c$(e,t,r){var n=1,i=new ue(e);if(!i.isint()&&r){var a=Math.abs(e);a<1?(n=new ue(10).pow(uo.getDigitCount(e)-1),i=new ue(Math.floor(i.div(n).toNumber())).mul(n)):a>1&&(i=new ue(Math.floor(e)))}else e===0?i=new ue(Math.floor((t-1)/2)):r||(i=new ue(Math.floor(e)));var o=Math.floor((t-1)/2),u=YM(XM(function(c){return i.add(new ue(c-o).mul(n)).toNumber()}),If);return u(0,t)}function OO(e,t,r,n){var i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0;if(!Number.isFinite((t-e)/(r-1)))return{step:new ue(0),tickMin:new ue(0),tickMax:new ue(0)};var a=wO(new ue(t).sub(e).div(r-1),n,i),o;e<=0&&t>=0?o=new ue(0):(o=new ue(e).add(t).div(2),o=o.sub(new ue(o).mod(a)));var u=Math.ceil(o.sub(e).div(a).toNumber()),c=Math.ceil(new ue(t).sub(o).div(a).toNumber()),s=u+c+1;return s>r?OO(e,t,r,n,i+1):(s0?c+(r-s):c,u=t>0?u:u+(r-s)),{step:a,tickMin:o.sub(new ue(u).mul(a)),tickMax:o.add(new ue(c).mul(a))})}function s$(e){var t=Xn(e,2),r=t[0],n=t[1],i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:6,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,o=Math.max(i,2),u=xO([r,n]),c=Xn(u,2),s=c[0],f=c[1];if(s===-1/0||f===1/0){var l=f===1/0?[s].concat(kf(If(0,i-1).map(function(){return 1/0}))):[].concat(kf(If(0,i-1).map(function(){return-1/0})),[f]);return r>n?Cf(l):l}if(s===f)return c$(s,i,a);var h=OO(s,f,o,a),p=h.step,y=h.tickMin,v=h.tickMax,d=uo.rangeStep(y,v.add(new ue(.1).mul(p)),p);return r>n?Cf(d):d}function l$(e,t){var r=Xn(e,2),n=r[0],i=r[1],a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,o=xO([n,i]),u=Xn(o,2),c=u[0],s=u[1];if(c===-1/0||s===1/0)return[n,i];if(c===s)return[c];var f=Math.max(t,2),l=wO(new ue(s).sub(c).div(f-1),a,0),h=[].concat(kf(uo.rangeStep(new ue(c),new ue(s).sub(new ue(.99).mul(l)),l)),[s]);return n>i?Cf(h):h}var f$=mO(s$),h$=mO(l$),p$=["offset","layout","width","dataKey","data","dataPointFormatter","xAxis","yAxis"];function Br(e){"@babel/helpers - typeof";return Br=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Br(e)}function ca(){return ca=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function x$(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function w$(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function O$(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&arguments[1]!==void 0?arguments[1]:[],i=arguments.length>2?arguments[2]:void 0,a=arguments.length>3?arguments[3]:void 0,o=-1,u=(r=n?.length)!==null&&r!==void 0?r:0;if(u<=1)return 0;if(a&&a.axisType==="angleAxis"&&Math.abs(Math.abs(a.range[1]-a.range[0])-360)<=1e-6)for(var c=a.range,s=0;s0?i[s-1].coordinate:i[u-1].coordinate,l=i[s].coordinate,h=s>=u-1?i[0].coordinate:i[s+1].coordinate,p=void 0;if(qe(l-f)!==qe(h-l)){var y=[];if(qe(h-l)===qe(c[1]-c[0])){p=h;var v=l+c[1]-c[0];y[0]=Math.min(v,(v+f)/2),y[1]=Math.max(v,(v+f)/2)}else{p=f;var d=h+c[1]-c[0];y[0]=Math.min(l,(d+l)/2),y[1]=Math.max(l,(d+l)/2)}var m=[Math.min(l,(p+l)/2),Math.max(l,(p+l)/2)];if(t>m[0]&&t<=m[1]||t>=y[0]&&t<=y[1]){o=i[s].index;break}}else{var x=Math.min(f,h),w=Math.max(f,h);if(t>(x+l)/2&&t<=(w+l)/2){o=i[s].index;break}}}else for(var O=0;O0&&O(n[O].coordinate+n[O-1].coordinate)/2&&t<=(n[O].coordinate+n[O+1].coordinate)/2||O===u-1&&t>(n[O].coordinate+n[O-1].coordinate)/2){o=n[O].index;break}return o},Ap=function(t){var r,n=t,i=n.type.displayName,a=(r=t.type)!==null&&r!==void 0&&r.defaultProps?be(be({},t.type.defaultProps),t.props):t.props,o=a.stroke,u=a.fill,c;switch(i){case"Line":c=o;break;case"Area":case"Radar":c=o&&o!=="none"?o:u;break;default:c=u;break}return c},L$=function(t){var r=t.barSize,n=t.totalSize,i=t.stackGroups,a=i===void 0?{}:i;if(!a)return{};for(var o={},u=Object.keys(a),c=0,s=u.length;c=0});if(m&&m.length){var x=m[0].type.defaultProps,w=x!==void 0?be(be({},x),m[0].props):m[0].props,O=w.barSize,g=w[d];o[g]||(o[g]=[]);var b=J(O)?r:O;o[g].push({item:m[0],stackList:m.slice(1),barSize:J(b)?void 0:Le(b,n,0)})}}return o},B$=function(t){var r=t.barGap,n=t.barCategoryGap,i=t.bandSize,a=t.sizeList,o=a===void 0?[]:a,u=t.maxBarSize,c=o.length;if(c<1)return null;var s=Le(r,i,0,!0),f,l=[];if(o[0].barSize===+o[0].barSize){var h=!1,p=i/c,y=o.reduce(function(O,g){return O+g.barSize||0},0);y+=(c-1)*s,y>=i&&(y-=(c-1)*s,s=0),y>=i&&p>0&&(h=!0,p*=.9,y=c*p);var v=(i-y)/2>>0,d={offset:v-s,size:0};f=o.reduce(function(O,g){var b={item:g.item,position:{offset:d.offset+d.size+s,size:h?p:g.barSize}},_=[].concat(Cm(O),[b]);return d=_[_.length-1].position,g.stackList&&g.stackList.length&&g.stackList.forEach(function(A){_.push({item:A,position:d})}),_},l)}else{var m=Le(n,i,0,!0);i-2*m-(c-1)*s<=0&&(s=0);var x=(i-2*m-(c-1)*s)/c;x>1&&(x>>=0);var w=u===+u?Math.min(x,u):x;f=o.reduce(function(O,g,b){var _=[].concat(Cm(O),[{item:g.item,position:{offset:m+(x+s)*b+(x-w)/2,size:w}}]);return g.stackList&&g.stackList.length&&g.stackList.forEach(function(A){_.push({item:A,position:_[_.length-1].position})}),_},l)}return f},F$=function(t,r,n,i){var a=n.children,o=n.width,u=n.margin,c=o-(u.left||0)-(u.right||0),s=PO({children:a,legendWidth:c});if(s){var f=i||{},l=f.width,h=f.height,p=s.align,y=s.verticalAlign,v=s.layout;if((v==="vertical"||v==="horizontal"&&y==="middle")&&p!=="center"&&q(t[p]))return be(be({},t),{},$r({},p,t[p]+(l||0)));if((v==="horizontal"||v==="vertical"&&p==="center")&&y!=="middle"&&q(t[y]))return be(be({},t),{},$r({},y,t[y]+(h||0)))}return t},U$=function(t,r,n){return J(r)?!0:t==="horizontal"?r==="yAxis":t==="vertical"||n==="x"?r==="xAxis":n==="y"?r==="yAxis":!0},TO=function(t,r,n,i,a){var o=r.props.children,u=Ye(o,_i).filter(function(s){return U$(i,a,s.props.direction)});if(u&&u.length){var c=u.map(function(s){return s.props.dataKey});return t.reduce(function(s,f){var l=Ae(f,n);if(J(l))return s;var h=Array.isArray(l)?[ao(l),io(l)]:[l,l],p=c.reduce(function(y,v){var d=Ae(f,v,0),m=h[0]-Math.abs(Array.isArray(d)?d[0]:d),x=h[1]+Math.abs(Array.isArray(d)?d[1]:d);return[Math.min(m,y[0]),Math.max(x,y[1])]},[1/0,-1/0]);return[Math.min(p[0],s[0]),Math.max(p[1],s[1])]},[1/0,-1/0])}return null},W$=function(t,r,n,i,a){var o=r.map(function(u){return TO(t,u,n,a,i)}).filter(function(u){return!J(u)});return o&&o.length?o.reduce(function(u,c){return[Math.min(u[0],c[0]),Math.max(u[1],c[1])]},[1/0,-1/0]):null},EO=function(t,r,n,i,a){var o=r.map(function(c){var s=c.props.dataKey;return n==="number"&&s&&TO(t,c,s,i)||$n(t,s,n,a)});if(n==="number")return o.reduce(function(c,s){return[Math.min(c[0],s[0]),Math.max(c[1],s[1])]},[1/0,-1/0]);var u={};return o.reduce(function(c,s){for(var f=0,l=s.length;f=2?qe(u[0]-u[1])*2*s:s,r&&(t.ticks||t.niceTicks)){var f=(t.ticks||t.niceTicks).map(function(l){var h=a?a.indexOf(l):l;return{coordinate:i(h)+s,value:l,offset:s}});return f.filter(function(l){return!gi(l.coordinate)})}return t.isCategorical&&t.categoricalDomain?t.categoricalDomain.map(function(l,h){return{coordinate:i(l)+s,value:l,index:h,offset:s}}):i.ticks&&!n?i.ticks(t.tickCount).map(function(l){return{coordinate:i(l)+s,value:l,offset:s}}):i.domain().map(function(l,h){return{coordinate:i(l)+s,value:a?a[l]:l,index:h,offset:s}})},Xs=new WeakMap,Ci=function(t,r){if(typeof r!="function")return t;Xs.has(t)||Xs.set(t,new WeakMap);var n=Xs.get(t);if(n.has(r))return n.get(r);var i=function(){t.apply(void 0,arguments),r.apply(void 0,arguments)};return n.set(r,i),i},$O=function(t,r,n){var i=t.scale,a=t.type,o=t.layout,u=t.axisType;if(i==="auto")return o==="radial"&&u==="radiusAxis"?{scale:Wn(),realScaleType:"band"}:o==="radial"&&u==="angleAxis"?{scale:na(),realScaleType:"linear"}:a==="category"&&r&&(r.indexOf("LineChart")>=0||r.indexOf("AreaChart")>=0||r.indexOf("ComposedChart")>=0&&!n)?{scale:Mn(),realScaleType:"point"}:a==="category"?{scale:Wn(),realScaleType:"band"}:{scale:na(),realScaleType:"linear"};if(ur(i)){var c="scale".concat(Wa(i));return{scale:(bm[c]||Mn)(),realScaleType:bm[c]?c:"point"}}return X(i)?{scale:i}:{scale:Mn(),realScaleType:"point"}},Rm=1e-4,IO=function(t){var r=t.domain();if(!(!r||r.length<=2)){var n=r.length,i=t.range(),a=Math.min(i[0],i[1])-Rm,o=Math.max(i[0],i[1])+Rm,u=t(r[0]),c=t(r[n-1]);(uo||co)&&t.domain([r[0],r[n-1]])}},z$=function(t,r){if(!t)return null;for(var n=0,i=t.length;ni)&&(a[1]=i),a[0]>i&&(a[0]=i),a[1]=0?(t[u][n][0]=a,t[u][n][1]=a+c,a=t[u][n][1]):(t[u][n][0]=o,t[u][n][1]=o+c,o=t[u][n][1])}},G$=function(t){var r=t.length;if(!(r<=0))for(var n=0,i=t[0].length;n=0?(t[o][n][0]=a,t[o][n][1]=a+u,a=t[o][n][1]):(t[o][n][0]=0,t[o][n][1]=0)}},V$={sign:H$,expand:UA,none:Ir,silhouette:WA,wiggle:zA,positive:G$},X$=function(t,r,n){var i=r.map(function(u){return u.props.dataKey}),a=V$[n],o=FA().keys(i).value(function(u,c){return+Ae(u,c,0)}).order(hf).offset(a);return o(t)},Y$=function(t,r,n,i,a,o){if(!t)return null;var u=o?r.reverse():r,c={},s=u.reduce(function(l,h){var p,y=(p=h.type)!==null&&p!==void 0&&p.defaultProps?be(be({},h.type.defaultProps),h.props):h.props,v=y.stackId,d=y.hide;if(d)return l;var m=y[n],x=l[m]||{hasStack:!1,stackGroups:{}};if(Se(v)){var w=x.stackGroups[v]||{numericAxisId:n,cateAxisId:i,items:[]};w.items.push(h),x.hasStack=!0,x.stackGroups[v]=w}else x.stackGroups[un("_stackId_")]={numericAxisId:n,cateAxisId:i,items:[h]};return be(be({},l),{},$r({},m,x))},c),f={};return Object.keys(s).reduce(function(l,h){var p=s[h];if(p.hasStack){var y={};p.stackGroups=Object.keys(p.stackGroups).reduce(function(v,d){var m=p.stackGroups[d];return be(be({},v),{},$r({},d,{numericAxisId:n,cateAxisId:i,items:m.items,stackedData:X$(t,m.items,a)}))},y)}return be(be({},l),{},$r({},h,p))},f)},CO=function(t,r){var n=r.realScaleType,i=r.type,a=r.tickCount,o=r.originalDomain,u=r.allowDecimals,c=n||r.scale;if(c!=="auto"&&c!=="linear")return null;if(a&&i==="number"&&o&&(o[0]==="auto"||o[1]==="auto")){var s=t.domain();if(!s.length)return null;var f=f$(s,a,u);return t.domain([ao(f),io(f)]),{niceTicks:f}}if(a&&i==="number"){var l=t.domain(),h=h$(l,a,u);return{niceTicks:h}}return null};function Dm(e){var t=e.axis,r=e.ticks,n=e.bandSize,i=e.entry,a=e.index,o=e.dataKey;if(t.type==="category"){if(!t.allowDuplicatedCategory&&t.dataKey&&!J(i[t.dataKey])){var u=Bi(r,"value",i[t.dataKey]);if(u)return u.coordinate+n/2}return r[a]?r[a].coordinate+n/2:null}var c=Ae(i,J(o)?t.dataKey:o);return J(c)?null:t.scale(c)}var Nm=function(t){var r=t.axis,n=t.ticks,i=t.offset,a=t.bandSize,o=t.entry,u=t.index;if(r.type==="category")return n[u]?n[u].coordinate+i:null;var c=Ae(o,r.dataKey,r.domain[u]);return J(c)?null:r.scale(c)-a/2+i},Z$=function(t){var r=t.numericAxis,n=r.scale.domain();if(r.type==="number"){var i=Math.min(n[0],n[1]),a=Math.max(n[0],n[1]);return i<=0&&a>=0?0:a<0?a:i}return n[0]},J$=function(t,r){var n,i=(n=t.type)!==null&&n!==void 0&&n.defaultProps?be(be({},t.type.defaultProps),t.props):t.props,a=i.stackId;if(Se(a)){var o=r[a];if(o){var u=o.items.indexOf(t);return u>=0?o.stackedData[u]:null}}return null},Q$=function(t){return t.reduce(function(r,n){return[ao(n.concat([r[0]]).filter(q)),io(n.concat([r[1]]).filter(q))]},[1/0,-1/0])},kO=function(t,r,n){return Object.keys(t).reduce(function(i,a){var o=t[a],u=o.stackedData,c=u.reduce(function(s,f){var l=Q$(f.slice(r,n+1));return[Math.min(s[0],l[0]),Math.max(s[1],l[1])]},[1/0,-1/0]);return[Math.min(c[0],i[0]),Math.max(c[1],i[1])]},[1/0,-1/0]).map(function(i){return i===1/0||i===-1/0?0:i})},qm=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,Lm=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,qf=function(t,r,n){if(X(t))return t(r,n);if(!Array.isArray(t))return r;var i=[];if(q(t[0]))i[0]=n?t[0]:Math.min(t[0],r[0]);else if(qm.test(t[0])){var a=+qm.exec(t[0])[1];i[0]=r[0]-a}else X(t[0])?i[0]=t[0](r[0]):i[0]=r[0];if(q(t[1]))i[1]=n?t[1]:Math.max(t[1],r[1]);else if(Lm.test(t[1])){var o=+Lm.exec(t[1])[1];i[1]=r[1]+o}else X(t[1])?i[1]=t[1](r[1]):i[1]=r[1];return i},la=function(t,r,n){if(t&&t.scale&&t.scale.bandwidth){var i=t.scale.bandwidth();if(!n||i>0)return i}if(t&&r&&r.length>=2){for(var a=Zh(r,function(l){return l.coordinate}),o=1/0,u=1,c=a.length;ue.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&arguments[2]!==void 0?arguments[2]:{top:0,right:0,bottom:0,left:0};return Math.min(Math.abs(t-(n.left||0)-(n.right||0)),Math.abs(r-(n.top||0)-(n.bottom||0)))/2},cI=function(t,r,n,i,a){var o=t.width,u=t.height,c=t.startAngle,s=t.endAngle,f=Le(t.cx,o,o/2),l=Le(t.cy,u,u/2),h=NO(o,u,n),p=Le(t.innerRadius,h,0),y=Le(t.outerRadius,h,h*.8),v=Object.keys(r);return v.reduce(function(d,m){var x=r[m],w=x.domain,O=x.reversed,g;if(J(x.range))i==="angleAxis"?g=[c,s]:i==="radiusAxis"&&(g=[p,y]),O&&(g=[g[1],g[0]]);else{g=x.range;var b=g,_=rI(b,2);c=_[0],s=_[1]}var A=$O(x,a),P=A.realScaleType,j=A.scale;j.domain(w).range(g),IO(j);var T=CO(j,At(At({},x),{},{realScaleType:P})),E=At(At(At({},x),T),{},{range:g,radius:y,realScaleType:P,scale:j,cx:f,cy:l,innerRadius:p,outerRadius:y,startAngle:c,endAngle:s});return At(At({},d),{},DO({},m,E))},{})},sI=function(t,r){var n=t.x,i=t.y,a=r.x,o=r.y;return Math.sqrt(Math.pow(n-a,2)+Math.pow(i-o,2))},lI=function(t,r){var n=t.x,i=t.y,a=r.cx,o=r.cy,u=sI({x:n,y:i},{x:a,y:o});if(u<=0)return{radius:u};var c=(n-a)/u,s=Math.acos(c);return i>o&&(s=2*Math.PI-s),{radius:u,angle:uI(s),angleInRadian:s}},fI=function(t){var r=t.startAngle,n=t.endAngle,i=Math.floor(r/360),a=Math.floor(n/360),o=Math.min(i,a);return{startAngle:r-o*360,endAngle:n-o*360}},hI=function(t,r){var n=r.startAngle,i=r.endAngle,a=Math.floor(n/360),o=Math.floor(i/360),u=Math.min(a,o);return t+u*360},Wm=function(t,r){var n=t.x,i=t.y,a=lI({x:n,y:i},r),o=a.radius,u=a.angle,c=r.innerRadius,s=r.outerRadius;if(os)return!1;if(o===0)return!0;var f=fI(r),l=f.startAngle,h=f.endAngle,p=u,y;if(l<=h){for(;p>h;)p-=360;for(;p=l&&p<=h}else{for(;p>l;)p-=360;for(;p=h&&p<=l}return y?At(At({},r),{},{radius:o,angle:hI(p,r)}):null},qO=function(t){return!N.isValidElement(t)&&!X(t)&&typeof t!="boolean"?t.className:""};function Qn(e){"@babel/helpers - typeof";return Qn=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Qn(e)}var pI=["offset"];function dI(e){return mI(e)||gI(e)||yI(e)||vI()}function vI(){throw new TypeError(`Invalid attempt to spread non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function yI(e,t){if(e){if(typeof e=="string")return Lf(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Lf(e,t)}}function gI(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function mI(e){if(Array.isArray(e))return Lf(e)}function Lf(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function xI(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function zm(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function _e(e){for(var t=1;t=0?1:-1,w,O;i==="insideStart"?(w=p+x*o,O=v):i==="insideEnd"?(w=y-x*o,O=!v):i==="end"&&(w=y+x*o,O=v),O=m<=0?O:!O;var g=pe(s,f,d,w),b=pe(s,f,d,w+(O?1:-1)*359),_="M".concat(g.x,",").concat(g.y,` + height and width.`,$,k,o,c,f,l,r);var R=!Array.isArray(p)&&Et(p.type).endsWith("Chart");return S.Children.map(p,function(L){return S.isValidElement(L)?N.cloneElement(L,Ti({width:$,height:k},R?{style:Ti({height:"100%",width:"100%",maxHeight:k,maxWidth:$},L.props.style)}:{})):L})},[r,p,c,h,l,f,P,o]);return S.createElement("div",{id:d?"".concat(d):void 0,className:te("recharts-responsive-container",m),style:Ti(Ti({},O),{},{width:o,height:c,minWidth:f,minHeight:l,maxHeight:h}),ref:g},E)}),Qh=function(t){return null};Qh.displayName="Cell";function Fn(e){"@babel/helpers - typeof";return Fn=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Fn(e)}function Og(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function wf(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:{};if(t==null||pr.isSsr)return{width:0,height:0};var n=AT(r),i=JSON.stringify({text:t,copyStyle:n});if(br.widthCache[i])return br.widthCache[i];try{var a=document.getElementById(_g);a||(a=document.createElement("span"),a.setAttribute("id",_g),a.setAttribute("aria-hidden","true"),document.body.appendChild(a));var o=wf(wf({},_T),n);Object.assign(a.style,o),a.textContent="".concat(t);var u=a.getBoundingClientRect(),c={width:u.width,height:u.height};return br.widthCache[i]=c,++br.cacheCount>OT&&(br.cacheCount=0,br.widthCache={}),c}catch{return{width:0,height:0}}},ST=function(t){return{top:t.top+window.scrollY-document.documentElement.clientTop,left:t.left+window.scrollX-document.documentElement.clientLeft}};function Un(e){"@babel/helpers - typeof";return Un=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Un(e)}function Zi(e,t){return jT(e)||ET(e,t)||TT(e,t)||PT()}function PT(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function TT(e,t){if(e){if(typeof e=="string")return Ag(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Ag(e,t)}}function Ag(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function WT(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function Mg(e,t){return GT(e)||HT(e,t)||KT(e,t)||zT()}function zT(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function KT(e,t){if(e){if(typeof e=="string")return $g(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return $g(e,t)}}function $g(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&arguments[0]!==void 0?arguments[0]:[];return $.reduce(function(k,R){var L=R.word,B=R.width,z=k[k.length-1];if(z&&(i==null||a||z.width+B+nR.width?k:R})};if(!f)return p;for(var v="…",d=function($){var k=l.slice(0,$),R=Pw({breakAll:s,style:c,children:k+v}).wordsWithComputedWidth,L=h(R),B=L.length>o||y(L).width>Number(i);return[B,L]},m=0,x=l.length-1,w=0,O;m<=x&&w<=l.length-1;){var g=Math.floor((m+x)/2),b=g-1,_=d(b),A=Mg(_,2),P=A[0],j=A[1],T=d(g),E=Mg(T,1),M=E[0];if(!P&&!M&&(m=g+1),P&&M&&(x=g-1),!P&&M){O=j;break}w++}return O||p},Ig=function(t){var r=J(t)?[]:t.toString().split(Sw);return[{words:r}]},XT=function(t){var r=t.width,n=t.scaleToFit,i=t.children,a=t.style,o=t.breakAll,u=t.maxLines;if((r||n)&&!pr.isSsr){var c,s,f=Pw({breakAll:o,children:i,style:a});if(f){var l=f.wordsWithComputedWidth,h=f.spaceWidth;c=l,s=h}else return Ig(i);return VT({breakAll:o,children:i,maxLines:u,style:a},c,s,r,n)}return Ig(i)},Cg="#808080",sr=function(t){var r=t.x,n=r===void 0?0:r,i=t.y,a=i===void 0?0:i,o=t.lineHeight,u=o===void 0?"1em":o,c=t.capHeight,s=c===void 0?"0.71em":c,f=t.scaleToFit,l=f===void 0?!1:f,h=t.textAnchor,p=h===void 0?"start":h,y=t.verticalAnchor,v=y===void 0?"end":y,d=t.fill,m=d===void 0?Cg:d,x=jg(t,FT),w=N.useMemo(function(){return XT({breakAll:x.breakAll,children:x.children,maxLines:x.maxLines,scaleToFit:l,style:x.style,width:x.width})},[x.breakAll,x.children,x.maxLines,l,x.style,x.width]),O=x.dx,g=x.dy,b=x.angle,_=x.className,A=x.breakAll,P=jg(x,UT);if(!Se(n)||!Se(a))return null;var j=n+(q(O)?O:0),T=a+(q(g)?g:0),E;switch(v){case"start":E=Is("calc(".concat(s,")"));break;case"middle":E=Is("calc(".concat((w.length-1)/2," * -").concat(u," + (").concat(s," / 2))"));break;default:E=Is("calc(".concat(w.length-1," * -").concat(u,")"));break}var M=[];if(l){var I=w[0].width,$=x.width;M.push("scale(".concat((q($)?$/I:1)/I,")"))}return b&&M.push("rotate(".concat(b,", ").concat(j,", ").concat(T,")")),M.length&&(P.transform=M.join(" ")),S.createElement("text",Of({},K(P,!0),{x:j,y:T,className:te("recharts-text",_),textAnchor:p,fill:m.includes("url")?Cg:m}),w.map(function(k,R){var L=k.words.join(A?"":" ");return S.createElement("tspan",{x:j,dy:R===0?E:u,key:"".concat(L,"-").concat(R)},L)}))};function Bt(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function YT(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function ep(e){let t,r,n;e.length!==2?(t=Bt,r=(u,c)=>Bt(e(u),c),n=(u,c)=>e(u)-c):(t=e===Bt||e===YT?e:ZT,r=e,n=e);function i(u,c,s=0,f=u.length){if(s>>1;r(u[l],c)<0?s=l+1:f=l}while(s>>1;r(u[l],c)<=0?s=l+1:f=l}while(ss&&n(u[l-1],c)>-n(u[l],c)?l-1:l}return{left:i,center:o,right:a}}function ZT(){return 0}function Tw(e){return e===null?NaN:+e}function*JT(e,t){for(let r of e)r!=null&&(r=+r)>=r&&(yield r)}const QT=ep(Bt),mi=QT.right;ep(Tw).center;class kg extends Map{constructor(t,r=rE){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:r}}),t!=null)for(const[n,i]of t)this.set(n,i)}get(t){return super.get(Rg(this,t))}has(t){return super.has(Rg(this,t))}set(t,r){return super.set(eE(this,t),r)}delete(t){return super.delete(tE(this,t))}}function Rg({_intern:e,_key:t},r){const n=t(r);return e.has(n)?e.get(n):r}function eE({_intern:e,_key:t},r){const n=t(r);return e.has(n)?e.get(n):(e.set(n,r),r)}function tE({_intern:e,_key:t},r){const n=t(r);return e.has(n)&&(r=e.get(n),e.delete(n)),r}function rE(e){return e!==null&&typeof e=="object"?e.valueOf():e}function nE(e=Bt){if(e===Bt)return Ew;if(typeof e!="function")throw new TypeError("compare is not a function");return(t,r)=>{const n=e(t,r);return n||n===0?n:(e(r,r)===0)-(e(t,t)===0)}}function Ew(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et?1:0)}const iE=Math.sqrt(50),aE=Math.sqrt(10),oE=Math.sqrt(2);function Ji(e,t,r){const n=(t-e)/Math.max(0,r),i=Math.floor(Math.log10(n)),a=n/Math.pow(10,i),o=a>=iE?10:a>=aE?5:a>=oE?2:1;let u,c,s;return i<0?(s=Math.pow(10,-i)/o,u=Math.round(e*s),c=Math.round(t*s),u/st&&--c,s=-s):(s=Math.pow(10,i)*o,u=Math.round(e/s),c=Math.round(t/s),u*st&&--c),c0))return[];if(e===t)return[e];const n=t=i))return[];const u=a-i+1,c=new Array(u);if(n)if(o<0)for(let s=0;s=n)&&(r=n);return r}function Ng(e,t){let r;for(const n of e)n!=null&&(r>n||r===void 0&&n>=n)&&(r=n);return r}function jw(e,t,r=0,n=1/0,i){if(t=Math.floor(t),r=Math.floor(Math.max(0,r)),n=Math.floor(Math.min(e.length-1,n)),!(r<=t&&t<=n))return e;for(i=i===void 0?Ew:nE(i);n>r;){if(n-r>600){const c=n-r+1,s=t-r+1,f=Math.log(c),l=.5*Math.exp(2*f/3),h=.5*Math.sqrt(f*l*(c-l)/c)*(s-c/2<0?-1:1),p=Math.max(r,Math.floor(t-s*l/c+h)),y=Math.min(n,Math.floor(t+(c-s)*l/c+h));jw(e,t,p,y,i)}const a=e[t];let o=r,u=n;for(gn(e,r,t),i(e[n],a)>0&&gn(e,r,n);o0;)--u}i(e[r],a)===0?gn(e,r,u):(++u,gn(e,u,n)),u<=t&&(r=u+1),t<=u&&(n=u-1)}return e}function gn(e,t,r){const n=e[t];e[t]=e[r],e[r]=n}function uE(e,t,r){if(e=Float64Array.from(JT(e)),!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return Ng(e);if(t>=1)return Dg(e);var n,i=(n-1)*t,a=Math.floor(i),o=Dg(jw(e,a).subarray(0,a+1)),u=Ng(e.subarray(a+1));return o+(u-o)*(i-a)}}function cE(e,t,r=Tw){if(!(!(n=e.length)||isNaN(t=+t))){if(t<=0||n<2)return+r(e[0],0,e);if(t>=1)return+r(e[n-1],n-1,e);var n,i=(n-1)*t,a=Math.floor(i),o=+r(e[a],a,e),u=+r(e[a+1],a+1,e);return o+(u-o)*(i-a)}}function sE(e,t,r){e=+e,t=+t,r=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+r;for(var n=-1,i=Math.max(0,Math.ceil((t-e)/r))|0,a=new Array(i);++n>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):r===8?ji(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):r===4?ji(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=fE.exec(e))?new Ue(t[1],t[2],t[3],1):(t=hE.exec(e))?new Ue(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=pE.exec(e))?ji(t[1],t[2],t[3],t[4]):(t=dE.exec(e))?ji(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=vE.exec(e))?zg(t[1],t[2]/100,t[3]/100,1):(t=yE.exec(e))?zg(t[1],t[2]/100,t[3]/100,t[4]):qg.hasOwnProperty(e)?Fg(qg[e]):e==="transparent"?new Ue(NaN,NaN,NaN,0):null}function Fg(e){return new Ue(e>>16&255,e>>8&255,e&255,1)}function ji(e,t,r,n){return n<=0&&(e=t=r=NaN),new Ue(e,t,r,n)}function bE(e){return e instanceof bi||(e=Hn(e)),e?(e=e.rgb(),new Ue(e.r,e.g,e.b,e.opacity)):new Ue}function Tf(e,t,r,n){return arguments.length===1?bE(e):new Ue(e,t,r,n??1)}function Ue(e,t,r,n){this.r=+e,this.g=+t,this.b=+r,this.opacity=+n}rp(Ue,Tf,$w(bi,{brighter(e){return e=e==null?Qi:Math.pow(Qi,e),new Ue(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?zn:Math.pow(zn,e),new Ue(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Ue(ir(this.r),ir(this.g),ir(this.b),ea(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ug,formatHex:Ug,formatHex8:xE,formatRgb:Wg,toString:Wg}));function Ug(){return`#${tr(this.r)}${tr(this.g)}${tr(this.b)}`}function xE(){return`#${tr(this.r)}${tr(this.g)}${tr(this.b)}${tr((isNaN(this.opacity)?1:this.opacity)*255)}`}function Wg(){const e=ea(this.opacity);return`${e===1?"rgb(":"rgba("}${ir(this.r)}, ${ir(this.g)}, ${ir(this.b)}${e===1?")":`, ${e})`}`}function ea(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function ir(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function tr(e){return e=ir(e),(e<16?"0":"")+e.toString(16)}function zg(e,t,r,n){return n<=0?e=t=r=NaN:r<=0||r>=1?e=t=NaN:t<=0&&(e=NaN),new ct(e,t,r,n)}function Iw(e){if(e instanceof ct)return new ct(e.h,e.s,e.l,e.opacity);if(e instanceof bi||(e=Hn(e)),!e)return new ct;if(e instanceof ct)return e;e=e.rgb();var t=e.r/255,r=e.g/255,n=e.b/255,i=Math.min(t,r,n),a=Math.max(t,r,n),o=NaN,u=a-i,c=(a+i)/2;return u?(t===a?o=(r-n)/u+(r0&&c<1?0:o,new ct(o,u,c,e.opacity)}function wE(e,t,r,n){return arguments.length===1?Iw(e):new ct(e,t,r,n??1)}function ct(e,t,r,n){this.h=+e,this.s=+t,this.l=+r,this.opacity=+n}rp(ct,wE,$w(bi,{brighter(e){return e=e==null?Qi:Math.pow(Qi,e),new ct(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?zn:Math.pow(zn,e),new ct(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,r=this.l,n=r+(r<.5?r:1-r)*t,i=2*r-n;return new Ue(Cs(e>=240?e-240:e+120,i,n),Cs(e,i,n),Cs(e<120?e+240:e-120,i,n),this.opacity)},clamp(){return new ct(Kg(this.h),Mi(this.s),Mi(this.l),ea(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const e=ea(this.opacity);return`${e===1?"hsl(":"hsla("}${Kg(this.h)}, ${Mi(this.s)*100}%, ${Mi(this.l)*100}%${e===1?")":`, ${e})`}`}}));function Kg(e){return e=(e||0)%360,e<0?e+360:e}function Mi(e){return Math.max(0,Math.min(1,e||0))}function Cs(e,t,r){return(e<60?t+(r-t)*e/60:e<180?r:e<240?t+(r-t)*(240-e)/60:t)*255}const np=e=>()=>e;function OE(e,t){return function(r){return e+r*t}}function _E(e,t,r){return e=Math.pow(e,r),t=Math.pow(t,r)-e,r=1/r,function(n){return Math.pow(e+n*t,r)}}function AE(e){return(e=+e)==1?Cw:function(t,r){return r-t?_E(t,r,e):np(isNaN(t)?r:t)}}function Cw(e,t){var r=t-e;return r?OE(e,r):np(isNaN(e)?t:e)}const Hg=(function e(t){var r=AE(t);function n(i,a){var o=r((i=Tf(i)).r,(a=Tf(a)).r),u=r(i.g,a.g),c=r(i.b,a.b),s=Cw(i.opacity,a.opacity);return function(f){return i.r=o(f),i.g=u(f),i.b=c(f),i.opacity=s(f),i+""}}return n.gamma=e,n})(1);function SE(e,t){t||(t=[]);var r=e?Math.min(t.length,e.length):0,n=t.slice(),i;return function(a){for(i=0;ir&&(a=t.slice(r,a),u[o]?u[o]+=a:u[++o]=a),(n=n[0])===(i=i[0])?u[o]?u[o]+=i:u[++o]=i:(u[++o]=null,c.push({i:o,x:dt(n,i)})),r=ks.lastIndex;return r180?f+=360:f-s>180&&(s+=360),h.push({i:l.push(i(l)+"rotate(",null,n)-2,x:dt(s,f)})):f&&l.push(i(l)+"rotate("+f+n)}function u(s,f,l,h){s!==f?h.push({i:l.push(i(l)+"skewX(",null,n)-2,x:dt(s,f)}):f&&l.push(i(l)+"skewX("+f+n)}function c(s,f,l,h,p,y){if(s!==l||f!==h){var v=p.push(i(p)+"scale(",null,",",null,")");y.push({i:v-4,x:dt(s,l)},{i:v-2,x:dt(f,h)})}else(l!==1||h!==1)&&p.push(i(p)+"scale("+l+","+h+")")}return function(s,f){var l=[],h=[];return s=e(s),f=e(f),a(s.translateX,s.translateY,f.translateX,f.translateY,l,h),o(s.rotate,f.rotate,l,h),u(s.skewX,f.skewX,l,h),c(s.scaleX,s.scaleY,f.scaleX,f.scaleY,l,h),s=f=null,function(p){for(var y=-1,v=h.length,d;++yt&&(r=e,e=t,t=r),function(n){return Math.max(e,Math.min(t,n))}}function FE(e,t,r){var n=e[0],i=e[1],a=t[0],o=t[1];return i2?UE:FE,c=s=null,l}function l(h){return h==null||isNaN(h=+h)?a:(c||(c=u(e.map(n),t,r)))(n(o(h)))}return l.invert=function(h){return o(i((s||(s=u(t,e.map(n),dt)))(h)))},l.domain=function(h){return arguments.length?(e=Array.from(h,ta),f()):e.slice()},l.range=function(h){return arguments.length?(t=Array.from(h),f()):t.slice()},l.rangeRound=function(h){return t=Array.from(h),r=ip,f()},l.clamp=function(h){return arguments.length?(o=h?!0:Be,f()):o!==Be},l.interpolate=function(h){return arguments.length?(r=h,f()):r},l.unknown=function(h){return arguments.length?(a=h,l):a},function(h,p){return n=h,i=p,f()}}function ap(){return Za()(Be,Be)}function WE(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString("en").replace(/,/g,""):e.toString(10)}function ra(e,t){if((r=(e=t?e.toExponential(t-1):e.toExponential()).indexOf("e"))<0)return null;var r,n=e.slice(0,r);return[n.length>1?n[0]+n.slice(2):n,+e.slice(r+1)]}function Nr(e){return e=ra(Math.abs(e)),e?e[1]:NaN}function zE(e,t){return function(r,n){for(var i=r.length,a=[],o=0,u=e[0],c=0;i>0&&u>0&&(c+u+1>n&&(u=Math.max(1,n-c)),a.push(r.substring(i-=u,i+u)),!((c+=u+1)>n));)u=e[o=(o+1)%e.length];return a.reverse().join(t)}}function KE(e){return function(t){return t.replace(/[0-9]/g,function(r){return e[+r]})}}var HE=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Gn(e){if(!(t=HE.exec(e)))throw new Error("invalid format: "+e);var t;return new op({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}Gn.prototype=op.prototype;function op(e){this.fill=e.fill===void 0?" ":e.fill+"",this.align=e.align===void 0?">":e.align+"",this.sign=e.sign===void 0?"-":e.sign+"",this.symbol=e.symbol===void 0?"":e.symbol+"",this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?"":e.type+""}op.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function GE(e){e:for(var t=e.length,r=1,n=-1,i;r0&&(n=0);break}return n>0?e.slice(0,n)+e.slice(i+1):e}var Dw;function VE(e,t){var r=ra(e,t);if(!r)return e+"";var n=r[0],i=r[1],a=i-(Dw=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=n.length;return a===o?n:a>o?n+new Array(a-o+1).join("0"):a>0?n.slice(0,a)+"."+n.slice(a):"0."+new Array(1-a).join("0")+ra(e,Math.max(0,t+a-1))[0]}function Yg(e,t){var r=ra(e,t);if(!r)return e+"";var n=r[0],i=r[1];return i<0?"0."+new Array(-i).join("0")+n:n.length>i+1?n.slice(0,i+1)+"."+n.slice(i+1):n+new Array(i-n.length+2).join("0")}const Zg={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+"",d:WE,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>Yg(e*100,t),r:Yg,s:VE,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function Jg(e){return e}var Qg=Array.prototype.map,em=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function XE(e){var t=e.grouping===void 0||e.thousands===void 0?Jg:zE(Qg.call(e.grouping,Number),e.thousands+""),r=e.currency===void 0?"":e.currency[0]+"",n=e.currency===void 0?"":e.currency[1]+"",i=e.decimal===void 0?".":e.decimal+"",a=e.numerals===void 0?Jg:KE(Qg.call(e.numerals,String)),o=e.percent===void 0?"%":e.percent+"",u=e.minus===void 0?"−":e.minus+"",c=e.nan===void 0?"NaN":e.nan+"";function s(l){l=Gn(l);var h=l.fill,p=l.align,y=l.sign,v=l.symbol,d=l.zero,m=l.width,x=l.comma,w=l.precision,O=l.trim,g=l.type;g==="n"?(x=!0,g="g"):Zg[g]||(w===void 0&&(w=12),O=!0,g="g"),(d||h==="0"&&p==="=")&&(d=!0,h="0",p="=");var b=v==="$"?r:v==="#"&&/[boxX]/.test(g)?"0"+g.toLowerCase():"",_=v==="$"?n:/[%p]/.test(g)?o:"",A=Zg[g],P=/[defgprs%]/.test(g);w=w===void 0?6:/[gprs]/.test(g)?Math.max(1,Math.min(21,w)):Math.max(0,Math.min(20,w));function j(T){var E=b,M=_,I,$,k;if(g==="c")M=A(T)+M,T="";else{T=+T;var R=T<0||1/T<0;if(T=isNaN(T)?c:A(Math.abs(T),w),O&&(T=GE(T)),R&&+T==0&&y!=="+"&&(R=!1),E=(R?y==="("?y:u:y==="-"||y==="("?"":y)+E,M=(g==="s"?em[8+Dw/3]:"")+M+(R&&y==="("?")":""),P){for(I=-1,$=T.length;++I<$;)if(k=T.charCodeAt(I),48>k||k>57){M=(k===46?i+T.slice(I+1):T.slice(I))+M,T=T.slice(0,I);break}}}x&&!d&&(T=t(T,1/0));var L=E.length+T.length+M.length,B=L>1)+E+T+M+B.slice(L);break;default:T=B+E+T+M;break}return a(T)}return j.toString=function(){return l+""},j}function f(l,h){var p=s((l=Gn(l),l.type="f",l)),y=Math.max(-8,Math.min(8,Math.floor(Nr(h)/3)))*3,v=Math.pow(10,-y),d=em[8+y/3];return function(m){return p(v*m)+d}}return{format:s,formatPrefix:f}}var Ii,up,Nw;YE({thousands:",",grouping:[3],currency:["$",""]});function YE(e){return Ii=XE(e),up=Ii.format,Nw=Ii.formatPrefix,Ii}function ZE(e){return Math.max(0,-Nr(Math.abs(e)))}function JE(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Nr(t)/3)))*3-Nr(Math.abs(e)))}function QE(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,Nr(t)-Nr(e))+1}function qw(e,t,r,n){var i=Sf(e,t,r),a;switch(n=Gn(n??",f"),n.type){case"s":{var o=Math.max(Math.abs(e),Math.abs(t));return n.precision==null&&!isNaN(a=JE(i,o))&&(n.precision=a),Nw(n,o)}case"":case"e":case"g":case"p":case"r":{n.precision==null&&!isNaN(a=QE(i,Math.max(Math.abs(e),Math.abs(t))))&&(n.precision=a-(n.type==="e"));break}case"f":case"%":{n.precision==null&&!isNaN(a=ZE(i))&&(n.precision=a-(n.type==="%")*2);break}}return up(n)}function Ft(e){var t=e.domain;return e.ticks=function(r){var n=t();return _f(n[0],n[n.length-1],r??10)},e.tickFormat=function(r,n){var i=t();return qw(i[0],i[i.length-1],r??10,n)},e.nice=function(r){r==null&&(r=10);var n=t(),i=0,a=n.length-1,o=n[i],u=n[a],c,s,f=10;for(u0;){if(s=Af(o,u,r),s===c)return n[i]=o,n[a]=u,t(n);if(s>0)o=Math.floor(o/s)*s,u=Math.ceil(u/s)*s;else if(s<0)o=Math.ceil(o*s)/s,u=Math.floor(u*s)/s;else break;c=s}return e},e}function na(){var e=ap();return e.copy=function(){return xi(e,na())},it.apply(e,arguments),Ft(e)}function Lw(e){var t;function r(n){return n==null||isNaN(n=+n)?t:n}return r.invert=r,r.domain=r.range=function(n){return arguments.length?(e=Array.from(n,ta),r):e.slice()},r.unknown=function(n){return arguments.length?(t=n,r):t},r.copy=function(){return Lw(e).unknown(t)},e=arguments.length?Array.from(e,ta):[0,1],Ft(r)}function Bw(e,t){e=e.slice();var r=0,n=e.length-1,i=e[r],a=e[n],o;return aMath.pow(e,t)}function ij(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function nm(e){return(t,r)=>-e(-t,r)}function cp(e){const t=e(tm,rm),r=t.domain;let n=10,i,a;function o(){return i=ij(n),a=nj(n),r()[0]<0?(i=nm(i),a=nm(a),e(ej,tj)):e(tm,rm),t}return t.base=function(u){return arguments.length?(n=+u,o()):n},t.domain=function(u){return arguments.length?(r(u),o()):r()},t.ticks=u=>{const c=r();let s=c[0],f=c[c.length-1];const l=f0){for(;h<=p;++h)for(y=1;yf)break;m.push(v)}}else for(;h<=p;++h)for(y=n-1;y>=1;--y)if(v=h>0?y/a(-h):y*a(h),!(vf)break;m.push(v)}m.length*2{if(u==null&&(u=10),c==null&&(c=n===10?"s":","),typeof c!="function"&&(!(n%1)&&(c=Gn(c)).precision==null&&(c.trim=!0),c=up(c)),u===1/0)return c;const s=Math.max(1,n*u/t.ticks().length);return f=>{let l=f/a(Math.round(i(f)));return l*nr(Bw(r(),{floor:u=>a(Math.floor(i(u))),ceil:u=>a(Math.ceil(i(u)))})),t}function Fw(){const e=cp(Za()).domain([1,10]);return e.copy=()=>xi(e,Fw()).base(e.base()),it.apply(e,arguments),e}function im(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function am(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function sp(e){var t=1,r=e(im(t),am(t));return r.constant=function(n){return arguments.length?e(im(t=+n),am(t)):t},Ft(r)}function Uw(){var e=sp(Za());return e.copy=function(){return xi(e,Uw()).constant(e.constant())},it.apply(e,arguments)}function om(e){return function(t){return t<0?-Math.pow(-t,e):Math.pow(t,e)}}function aj(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function oj(e){return e<0?-e*e:e*e}function lp(e){var t=e(Be,Be),r=1;function n(){return r===1?e(Be,Be):r===.5?e(aj,oj):e(om(r),om(1/r))}return t.exponent=function(i){return arguments.length?(r=+i,n()):r},Ft(t)}function fp(){var e=lp(Za());return e.copy=function(){return xi(e,fp()).exponent(e.exponent())},it.apply(e,arguments),e}function uj(){return fp.apply(null,arguments).exponent(.5)}function um(e){return Math.sign(e)*e*e}function cj(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}function Ww(){var e=ap(),t=[0,1],r=!1,n;function i(a){var o=cj(e(a));return isNaN(o)?n:r?Math.round(o):o}return i.invert=function(a){return e.invert(um(a))},i.domain=function(a){return arguments.length?(e.domain(a),i):e.domain()},i.range=function(a){return arguments.length?(e.range((t=Array.from(a,ta)).map(um)),i):t.slice()},i.rangeRound=function(a){return i.range(a).round(!0)},i.round=function(a){return arguments.length?(r=!!a,i):r},i.clamp=function(a){return arguments.length?(e.clamp(a),i):e.clamp()},i.unknown=function(a){return arguments.length?(n=a,i):n},i.copy=function(){return Ww(e.domain(),t).round(r).clamp(e.clamp()).unknown(n)},it.apply(i,arguments),Ft(i)}function zw(){var e=[],t=[],r=[],n;function i(){var o=0,u=Math.max(1,t.length);for(r=new Array(u-1);++o0?r[u-1]:e[0],u=r?[n[r-1],t]:[n[s-1],n[s]]},o.unknown=function(c){return arguments.length&&(a=c),o},o.thresholds=function(){return n.slice()},o.copy=function(){return Kw().domain([e,t]).range(i).unknown(a)},it.apply(Ft(o),arguments)}function Hw(){var e=[.5],t=[0,1],r,n=1;function i(a){return a!=null&&a<=a?t[mi(e,a,0,n)]:r}return i.domain=function(a){return arguments.length?(e=Array.from(a),n=Math.min(e.length,t.length-1),i):e.slice()},i.range=function(a){return arguments.length?(t=Array.from(a),n=Math.min(e.length,t.length-1),i):t.slice()},i.invertExtent=function(a){var o=t.indexOf(a);return[e[o-1],e[o]]},i.unknown=function(a){return arguments.length?(r=a,i):r},i.copy=function(){return Hw().domain(e).range(t).unknown(r)},it.apply(i,arguments)}const Rs=new Date,Ds=new Date;function Pe(e,t,r,n){function i(a){return e(a=arguments.length===0?new Date:new Date(+a)),a}return i.floor=a=>(e(a=new Date(+a)),a),i.ceil=a=>(e(a=new Date(a-1)),t(a,1),e(a),a),i.round=a=>{const o=i(a),u=i.ceil(a);return a-o(t(a=new Date(+a),o==null?1:Math.floor(o)),a),i.range=(a,o,u)=>{const c=[];if(a=i.ceil(a),u=u==null?1:Math.floor(u),!(a0))return c;let s;do c.push(s=new Date(+a)),t(a,u),e(a);while(sPe(o=>{if(o>=o)for(;e(o),!a(o);)o.setTime(o-1)},(o,u)=>{if(o>=o)if(u<0)for(;++u<=0;)for(;t(o,-1),!a(o););else for(;--u>=0;)for(;t(o,1),!a(o););}),r&&(i.count=(a,o)=>(Rs.setTime(+a),Ds.setTime(+o),e(Rs),e(Ds),Math.floor(r(Rs,Ds))),i.every=a=>(a=Math.floor(a),!isFinite(a)||!(a>0)?null:a>1?i.filter(n?o=>n(o)%a===0:o=>i.count(0,o)%a===0):i)),i}const ia=Pe(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);ia.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?Pe(t=>{t.setTime(Math.floor(t/e)*e)},(t,r)=>{t.setTime(+t+r*e)},(t,r)=>(r-t)/e):ia);ia.range;const St=1e3,rt=St*60,Pt=rt*60,$t=Pt*24,hp=$t*7,cm=$t*30,Ns=$t*365,rr=Pe(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*St)},(e,t)=>(t-e)/St,e=>e.getUTCSeconds());rr.range;const pp=Pe(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*St)},(e,t)=>{e.setTime(+e+t*rt)},(e,t)=>(t-e)/rt,e=>e.getMinutes());pp.range;const dp=Pe(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*rt)},(e,t)=>(t-e)/rt,e=>e.getUTCMinutes());dp.range;const vp=Pe(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*St-e.getMinutes()*rt)},(e,t)=>{e.setTime(+e+t*Pt)},(e,t)=>(t-e)/Pt,e=>e.getHours());vp.range;const yp=Pe(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*Pt)},(e,t)=>(t-e)/Pt,e=>e.getUTCHours());yp.range;const wi=Pe(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*rt)/$t,e=>e.getDate()-1);wi.range;const Ja=Pe(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/$t,e=>e.getUTCDate()-1);Ja.range;const Gw=Pe(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/$t,e=>Math.floor(e/$t));Gw.range;function dr(e){return Pe(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(t,r)=>{t.setDate(t.getDate()+r*7)},(t,r)=>(r-t-(r.getTimezoneOffset()-t.getTimezoneOffset())*rt)/hp)}const Qa=dr(0),aa=dr(1),sj=dr(2),lj=dr(3),qr=dr(4),fj=dr(5),hj=dr(6);Qa.range;aa.range;sj.range;lj.range;qr.range;fj.range;hj.range;function vr(e){return Pe(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCDate(t.getUTCDate()+r*7)},(t,r)=>(r-t)/hp)}const eo=vr(0),oa=vr(1),pj=vr(2),dj=vr(3),Lr=vr(4),vj=vr(5),yj=vr(6);eo.range;oa.range;pj.range;dj.range;Lr.range;vj.range;yj.range;const gp=Pe(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());gp.range;const mp=Pe(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());mp.range;const It=Pe(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());It.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:Pe(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,r)=>{t.setFullYear(t.getFullYear()+r*e)});It.range;const Ct=Pe(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Ct.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:Pe(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,r)=>{t.setUTCFullYear(t.getUTCFullYear()+r*e)});Ct.range;function Vw(e,t,r,n,i,a){const o=[[rr,1,St],[rr,5,5*St],[rr,15,15*St],[rr,30,30*St],[a,1,rt],[a,5,5*rt],[a,15,15*rt],[a,30,30*rt],[i,1,Pt],[i,3,3*Pt],[i,6,6*Pt],[i,12,12*Pt],[n,1,$t],[n,2,2*$t],[r,1,hp],[t,1,cm],[t,3,3*cm],[e,1,Ns]];function u(s,f,l){const h=fd).right(o,h);if(p===o.length)return e.every(Sf(s/Ns,f/Ns,l));if(p===0)return ia.every(Math.max(Sf(s,f,l),1));const[y,v]=o[h/o[p-1][2]53)return null;"w"in D||(D.w=1),"Z"in D?(re=Ls(mn(D.y,0,1)),Y=re.getUTCDay(),re=Y>4||Y===0?oa.ceil(re):oa(re),re=Ja.offset(re,(D.V-1)*7),D.y=re.getUTCFullYear(),D.m=re.getUTCMonth(),D.d=re.getUTCDate()+(D.w+6)%7):(re=qs(mn(D.y,0,1)),Y=re.getDay(),re=Y>4||Y===0?aa.ceil(re):aa(re),re=wi.offset(re,(D.V-1)*7),D.y=re.getFullYear(),D.m=re.getMonth(),D.d=re.getDate()+(D.w+6)%7)}else("W"in D||"U"in D)&&("w"in D||(D.w="u"in D?D.u%7:"W"in D?1:0),Y="Z"in D?Ls(mn(D.y,0,1)).getUTCDay():qs(mn(D.y,0,1)).getDay(),D.m=0,D.d="W"in D?(D.w+6)%7+D.W*7-(Y+5)%7:D.w+D.U*7-(Y+6)%7);return"Z"in D?(D.H+=D.Z/100|0,D.M+=D.Z%100,Ls(D)):qs(D)}}function A(F,Q,ee,D){for(var ve=0,re=Q.length,Y=ee.length,ye,Z;ve=Y)return-1;if(ye=Q.charCodeAt(ve++),ye===37){if(ye=Q.charAt(ve++),Z=g[ye in sm?Q.charAt(ve++):ye],!Z||(D=Z(F,ee,D))<0)return-1}else if(ye!=ee.charCodeAt(D++))return-1}return D}function P(F,Q,ee){var D=s.exec(Q.slice(ee));return D?(F.p=f.get(D[0].toLowerCase()),ee+D[0].length):-1}function j(F,Q,ee){var D=p.exec(Q.slice(ee));return D?(F.w=y.get(D[0].toLowerCase()),ee+D[0].length):-1}function T(F,Q,ee){var D=l.exec(Q.slice(ee));return D?(F.w=h.get(D[0].toLowerCase()),ee+D[0].length):-1}function E(F,Q,ee){var D=m.exec(Q.slice(ee));return D?(F.m=x.get(D[0].toLowerCase()),ee+D[0].length):-1}function M(F,Q,ee){var D=v.exec(Q.slice(ee));return D?(F.m=d.get(D[0].toLowerCase()),ee+D[0].length):-1}function I(F,Q,ee){return A(F,t,Q,ee)}function $(F,Q,ee){return A(F,r,Q,ee)}function k(F,Q,ee){return A(F,n,Q,ee)}function R(F){return o[F.getDay()]}function L(F){return a[F.getDay()]}function B(F){return c[F.getMonth()]}function z(F){return u[F.getMonth()]}function H(F){return i[+(F.getHours()>=12)]}function U(F){return 1+~~(F.getMonth()/3)}function G(F){return o[F.getUTCDay()]}function se(F){return a[F.getUTCDay()]}function me(F){return c[F.getUTCMonth()]}function De(F){return u[F.getUTCMonth()]}function wt(F){return i[+(F.getUTCHours()>=12)]}function Ie(F){return 1+~~(F.getUTCMonth()/3)}return{format:function(F){var Q=b(F+="",w);return Q.toString=function(){return F},Q},parse:function(F){var Q=_(F+="",!1);return Q.toString=function(){return F},Q},utcFormat:function(F){var Q=b(F+="",O);return Q.toString=function(){return F},Q},utcParse:function(F){var Q=_(F+="",!0);return Q.toString=function(){return F},Q}}}var sm={"-":"",_:" ",0:"0"},Me=/^\s*\d+/,Oj=/^%/,_j=/[\\^$*+?|[\]().{}]/g;function ie(e,t,r){var n=e<0?"-":"",i=(n?-e:e)+"",a=i.length;return n+(a[t.toLowerCase(),r]))}function Sj(e,t,r){var n=Me.exec(t.slice(r,r+1));return n?(e.w=+n[0],r+n[0].length):-1}function Pj(e,t,r){var n=Me.exec(t.slice(r,r+1));return n?(e.u=+n[0],r+n[0].length):-1}function Tj(e,t,r){var n=Me.exec(t.slice(r,r+2));return n?(e.U=+n[0],r+n[0].length):-1}function Ej(e,t,r){var n=Me.exec(t.slice(r,r+2));return n?(e.V=+n[0],r+n[0].length):-1}function jj(e,t,r){var n=Me.exec(t.slice(r,r+2));return n?(e.W=+n[0],r+n[0].length):-1}function lm(e,t,r){var n=Me.exec(t.slice(r,r+4));return n?(e.y=+n[0],r+n[0].length):-1}function fm(e,t,r){var n=Me.exec(t.slice(r,r+2));return n?(e.y=+n[0]+(+n[0]>68?1900:2e3),r+n[0].length):-1}function Mj(e,t,r){var n=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(r,r+6));return n?(e.Z=n[1]?0:-(n[2]+(n[3]||"00")),r+n[0].length):-1}function $j(e,t,r){var n=Me.exec(t.slice(r,r+1));return n?(e.q=n[0]*3-3,r+n[0].length):-1}function Ij(e,t,r){var n=Me.exec(t.slice(r,r+2));return n?(e.m=n[0]-1,r+n[0].length):-1}function hm(e,t,r){var n=Me.exec(t.slice(r,r+2));return n?(e.d=+n[0],r+n[0].length):-1}function Cj(e,t,r){var n=Me.exec(t.slice(r,r+3));return n?(e.m=0,e.d=+n[0],r+n[0].length):-1}function pm(e,t,r){var n=Me.exec(t.slice(r,r+2));return n?(e.H=+n[0],r+n[0].length):-1}function kj(e,t,r){var n=Me.exec(t.slice(r,r+2));return n?(e.M=+n[0],r+n[0].length):-1}function Rj(e,t,r){var n=Me.exec(t.slice(r,r+2));return n?(e.S=+n[0],r+n[0].length):-1}function Dj(e,t,r){var n=Me.exec(t.slice(r,r+3));return n?(e.L=+n[0],r+n[0].length):-1}function Nj(e,t,r){var n=Me.exec(t.slice(r,r+6));return n?(e.L=Math.floor(n[0]/1e3),r+n[0].length):-1}function qj(e,t,r){var n=Oj.exec(t.slice(r,r+1));return n?r+n[0].length:-1}function Lj(e,t,r){var n=Me.exec(t.slice(r));return n?(e.Q=+n[0],r+n[0].length):-1}function Bj(e,t,r){var n=Me.exec(t.slice(r));return n?(e.s=+n[0],r+n[0].length):-1}function dm(e,t){return ie(e.getDate(),t,2)}function Fj(e,t){return ie(e.getHours(),t,2)}function Uj(e,t){return ie(e.getHours()%12||12,t,2)}function Wj(e,t){return ie(1+wi.count(It(e),e),t,3)}function Xw(e,t){return ie(e.getMilliseconds(),t,3)}function zj(e,t){return Xw(e,t)+"000"}function Kj(e,t){return ie(e.getMonth()+1,t,2)}function Hj(e,t){return ie(e.getMinutes(),t,2)}function Gj(e,t){return ie(e.getSeconds(),t,2)}function Vj(e){var t=e.getDay();return t===0?7:t}function Xj(e,t){return ie(Qa.count(It(e)-1,e),t,2)}function Yw(e){var t=e.getDay();return t>=4||t===0?qr(e):qr.ceil(e)}function Yj(e,t){return e=Yw(e),ie(qr.count(It(e),e)+(It(e).getDay()===4),t,2)}function Zj(e){return e.getDay()}function Jj(e,t){return ie(aa.count(It(e)-1,e),t,2)}function Qj(e,t){return ie(e.getFullYear()%100,t,2)}function eM(e,t){return e=Yw(e),ie(e.getFullYear()%100,t,2)}function tM(e,t){return ie(e.getFullYear()%1e4,t,4)}function rM(e,t){var r=e.getDay();return e=r>=4||r===0?qr(e):qr.ceil(e),ie(e.getFullYear()%1e4,t,4)}function nM(e){var t=e.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+ie(t/60|0,"0",2)+ie(t%60,"0",2)}function vm(e,t){return ie(e.getUTCDate(),t,2)}function iM(e,t){return ie(e.getUTCHours(),t,2)}function aM(e,t){return ie(e.getUTCHours()%12||12,t,2)}function oM(e,t){return ie(1+Ja.count(Ct(e),e),t,3)}function Zw(e,t){return ie(e.getUTCMilliseconds(),t,3)}function uM(e,t){return Zw(e,t)+"000"}function cM(e,t){return ie(e.getUTCMonth()+1,t,2)}function sM(e,t){return ie(e.getUTCMinutes(),t,2)}function lM(e,t){return ie(e.getUTCSeconds(),t,2)}function fM(e){var t=e.getUTCDay();return t===0?7:t}function hM(e,t){return ie(eo.count(Ct(e)-1,e),t,2)}function Jw(e){var t=e.getUTCDay();return t>=4||t===0?Lr(e):Lr.ceil(e)}function pM(e,t){return e=Jw(e),ie(Lr.count(Ct(e),e)+(Ct(e).getUTCDay()===4),t,2)}function dM(e){return e.getUTCDay()}function vM(e,t){return ie(oa.count(Ct(e)-1,e),t,2)}function yM(e,t){return ie(e.getUTCFullYear()%100,t,2)}function gM(e,t){return e=Jw(e),ie(e.getUTCFullYear()%100,t,2)}function mM(e,t){return ie(e.getUTCFullYear()%1e4,t,4)}function bM(e,t){var r=e.getUTCDay();return e=r>=4||r===0?Lr(e):Lr.ceil(e),ie(e.getUTCFullYear()%1e4,t,4)}function xM(){return"+0000"}function ym(){return"%"}function gm(e){return+e}function mm(e){return Math.floor(+e/1e3)}var xr,Qw,eO;wM({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function wM(e){return xr=wj(e),Qw=xr.format,xr.parse,eO=xr.utcFormat,xr.utcParse,xr}function OM(e){return new Date(e)}function _M(e){return e instanceof Date?+e:+new Date(+e)}function bp(e,t,r,n,i,a,o,u,c,s){var f=ap(),l=f.invert,h=f.domain,p=s(".%L"),y=s(":%S"),v=s("%I:%M"),d=s("%I %p"),m=s("%a %d"),x=s("%b %d"),w=s("%B"),O=s("%Y");function g(b){return(c(b)t(i/(e.length-1)))},r.quantiles=function(n){return Array.from({length:n+1},(i,a)=>uE(e,a/n))},r.copy=function(){return iO(t).domain(e)},Rt.apply(r,arguments)}function ro(){var e=0,t=.5,r=1,n=1,i,a,o,u,c,s=Be,f,l=!1,h;function p(v){return isNaN(v=+v)?h:(v=.5+((v=+f(v))-a)*(n*vr}return Fs=e,Fs}var Us,Om;function EM(){if(Om)return Us;Om=1;var e=no(),t=cO(),r=ln();function n(i){return i&&i.length?e(i,r,t):void 0}return Us=n,Us}var jM=EM();const io=ce(jM);var Ws,_m;function sO(){if(_m)return Ws;_m=1;function e(t,r){return te.e^a.s<0?1:-1;for(n=a.d.length,i=e.d.length,t=0,r=ne.d[t]^a.s<0?1:-1;return n===i?0:n>i^a.s<0?1:-1};W.decimalPlaces=W.dp=function(){var e=this,t=e.d.length-1,r=(t-e.e)*de;if(t=e.d[t],t)for(;t%10==0;t/=10)r--;return r<0?0:r};W.dividedBy=W.div=function(e){return jt(this,new this.constructor(e))};W.dividedToIntegerBy=W.idiv=function(e){var t=this,r=t.constructor;return le(jt(t,new r(e),0,1),r.precision)};W.equals=W.eq=function(e){return!this.cmp(e)};W.exponent=function(){return we(this)};W.greaterThan=W.gt=function(e){return this.cmp(e)>0};W.greaterThanOrEqualTo=W.gte=function(e){return this.cmp(e)>=0};W.isInteger=W.isint=function(){return this.e>this.d.length-2};W.isNegative=W.isneg=function(){return this.s<0};W.isPositive=W.ispos=function(){return this.s>0};W.isZero=function(){return this.s===0};W.lessThan=W.lt=function(e){return this.cmp(e)<0};W.lessThanOrEqualTo=W.lte=function(e){return this.cmp(e)<1};W.logarithm=W.log=function(e){var t,r=this,n=r.constructor,i=n.precision,a=i+5;if(e===void 0)e=new n(10);else if(e=new n(e),e.s<1||e.eq(Ve))throw Error(nt+"NaN");if(r.s<1)throw Error(nt+(r.s?"NaN":"-Infinity"));return r.eq(Ve)?new n(0):(ge=!1,t=jt(Vn(r,a),Vn(e,a),a),ge=!0,le(t,i))};W.minus=W.sub=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?pO(t,e):fO(t,(e.s=-e.s,e))};W.modulo=W.mod=function(e){var t,r=this,n=r.constructor,i=n.precision;if(e=new n(e),!e.s)throw Error(nt+"NaN");return r.s?(ge=!1,t=jt(r,e,0,1).times(e),ge=!0,r.minus(t)):le(new n(r),i)};W.naturalExponential=W.exp=function(){return hO(this)};W.naturalLogarithm=W.ln=function(){return Vn(this)};W.negated=W.neg=function(){var e=new this.constructor(this);return e.s=-e.s||0,e};W.plus=W.add=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?fO(t,e):pO(t,(e.s=-e.s,e))};W.precision=W.sd=function(e){var t,r,n,i=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(ar+e);if(t=we(i)+1,n=i.d.length-1,r=n*de+1,n=i.d[n],n){for(;n%10==0;n/=10)r--;for(n=i.d[0];n>=10;n/=10)r++}return e&&t>r?t:r};W.squareRoot=W.sqrt=function(){var e,t,r,n,i,a,o,u=this,c=u.constructor;if(u.s<1){if(!u.s)return new c(0);throw Error(nt+"NaN")}for(e=we(u),ge=!1,i=Math.sqrt(+u),i==0||i==1/0?(t=vt(u.d),(t.length+e)%2==0&&(t+="0"),i=Math.sqrt(t),e=pn((e+1)/2)-(e<0||e%2),i==1/0?t="5e"+e:(t=i.toExponential(),t=t.slice(0,t.indexOf("e")+1)+e),n=new c(t)):n=new c(i.toString()),r=c.precision,i=o=r+3;;)if(a=n,n=a.plus(jt(u,a,o+2)).times(.5),vt(a.d).slice(0,o)===(t=vt(n.d)).slice(0,o)){if(t=t.slice(o-3,o+1),i==o&&t=="4999"){if(le(a,r+1,0),a.times(a).eq(u)){n=a;break}}else if(t!="9999")break;o+=4}return ge=!0,le(n,r)};W.times=W.mul=function(e){var t,r,n,i,a,o,u,c,s,f=this,l=f.constructor,h=f.d,p=(e=new l(e)).d;if(!f.s||!e.s)return new l(0);for(e.s*=f.s,r=f.e+e.e,c=h.length,s=p.length,c=0;){for(t=0,i=c+n;i>n;)u=a[i]+p[n]*h[i-n-1]+t,a[i--]=u%Ee|0,t=u/Ee|0;a[i]=(a[i]+t)%Ee|0}for(;!a[--o];)a.pop();return t?++r:a.shift(),e.d=a,e.e=r,ge?le(e,l.precision):e};W.toDecimalPlaces=W.todp=function(e,t){var r=this,n=r.constructor;return r=new n(r),e===void 0?r:(mt(e,0,hn),t===void 0?t=n.rounding:mt(t,0,8),le(r,e+we(r)+1,t))};W.toExponential=function(e,t){var r,n=this,i=n.constructor;return e===void 0?r=lr(n,!0):(mt(e,0,hn),t===void 0?t=i.rounding:mt(t,0,8),n=le(new i(n),e+1,t),r=lr(n,!0,e+1)),r};W.toFixed=function(e,t){var r,n,i=this,a=i.constructor;return e===void 0?lr(i):(mt(e,0,hn),t===void 0?t=a.rounding:mt(t,0,8),n=le(new a(i),e+we(i)+1,t),r=lr(n.abs(),!1,e+we(n)+1),i.isneg()&&!i.isZero()?"-"+r:r)};W.toInteger=W.toint=function(){var e=this,t=e.constructor;return le(new t(e),we(e)+1,t.rounding)};W.toNumber=function(){return+this};W.toPower=W.pow=function(e){var t,r,n,i,a,o,u=this,c=u.constructor,s=12,f=+(e=new c(e));if(!e.s)return new c(Ve);if(u=new c(u),!u.s){if(e.s<1)throw Error(nt+"Infinity");return u}if(u.eq(Ve))return u;if(n=c.precision,e.eq(Ve))return le(u,n);if(t=e.e,r=e.d.length-1,o=t>=r,a=u.s,o){if((r=f<0?-f:f)<=lO){for(i=new c(Ve),t=Math.ceil(n/de+4),ge=!1;r%2&&(i=i.times(u),jm(i.d,t)),r=pn(r/2),r!==0;)u=u.times(u),jm(u.d,t);return ge=!0,e.s<0?new c(Ve).div(i):le(i,n)}}else if(a<0)throw Error(nt+"NaN");return a=a<0&&e.d[Math.max(t,r)]&1?-1:1,u.s=1,ge=!1,i=e.times(Vn(u,n+s)),ge=!0,i=hO(i),i.s=a,i};W.toPrecision=function(e,t){var r,n,i=this,a=i.constructor;return e===void 0?(r=we(i),n=lr(i,r<=a.toExpNeg||r>=a.toExpPos)):(mt(e,1,hn),t===void 0?t=a.rounding:mt(t,0,8),i=le(new a(i),e,t),r=we(i),n=lr(i,e<=r||r<=a.toExpNeg,e)),n};W.toSignificantDigits=W.tosd=function(e,t){var r=this,n=r.constructor;return e===void 0?(e=n.precision,t=n.rounding):(mt(e,1,hn),t===void 0?t=n.rounding:mt(t,0,8)),le(new n(r),e,t)};W.toString=W.valueOf=W.val=W.toJSON=W[Symbol.for("nodejs.util.inspect.custom")]=function(){var e=this,t=we(e),r=e.constructor;return lr(e,t<=r.toExpNeg||t>=r.toExpPos)};function fO(e,t){var r,n,i,a,o,u,c,s,f=e.constructor,l=f.precision;if(!e.s||!t.s)return t.s||(t=new f(e)),ge?le(t,l):t;if(c=e.d,s=t.d,o=e.e,i=t.e,c=c.slice(),a=o-i,a){for(a<0?(n=c,a=-a,u=s.length):(n=s,i=o,u=c.length),o=Math.ceil(l/de),u=o>u?o+1:u+1,a>u&&(a=u,n.length=1),n.reverse();a--;)n.push(0);n.reverse()}for(u=c.length,a=s.length,u-a<0&&(a=u,n=s,s=c,c=n),r=0;a;)r=(c[--a]=c[a]+s[a]+r)/Ee|0,c[a]%=Ee;for(r&&(c.unshift(r),++i),u=c.length;c[--u]==0;)c.pop();return t.d=c,t.e=i,ge?le(t,l):t}function mt(e,t,r){if(e!==~~e||er)throw Error(ar+e)}function vt(e){var t,r,n,i=e.length-1,a="",o=e[0];if(i>0){for(a+=o,t=1;to?1:-1;else for(u=c=0;ui[u]?1:-1;break}return c}function r(n,i,a){for(var o=0;a--;)n[a]-=o,o=n[a]1;)n.shift()}return function(n,i,a,o){var u,c,s,f,l,h,p,y,v,d,m,x,w,O,g,b,_,A,P=n.constructor,j=n.s==i.s?1:-1,T=n.d,E=i.d;if(!n.s)return new P(n);if(!i.s)throw Error(nt+"Division by zero");for(c=n.e-i.e,_=E.length,g=T.length,p=new P(j),y=p.d=[],s=0;E[s]==(T[s]||0);)++s;if(E[s]>(T[s]||0)&&--c,a==null?x=a=P.precision:o?x=a+(we(n)-we(i))+1:x=a,x<0)return new P(0);if(x=x/de+2|0,s=0,_==1)for(f=0,E=E[0],x++;(s1&&(E=e(E,f),T=e(T,f),_=E.length,g=T.length),O=_,v=T.slice(0,_),d=v.length;d<_;)v[d++]=0;A=E.slice(),A.unshift(0),b=E[0],E[1]>=Ee/2&&++b;do f=0,u=t(E,v,_,d),u<0?(m=v[0],_!=d&&(m=m*Ee+(v[1]||0)),f=m/b|0,f>1?(f>=Ee&&(f=Ee-1),l=e(E,f),h=l.length,d=v.length,u=t(l,v,h,d),u==1&&(f--,r(l,_16)throw Error(Op+we(e));if(!e.s)return new f(Ve);for(ge=!1,u=l,o=new f(.03125);e.abs().gte(.1);)e=e.times(o),s+=5;for(n=Math.log(Jt(2,s))/Math.LN10*2+5|0,u+=n,r=i=a=new f(Ve),f.precision=u;;){if(i=le(i.times(e),u),r=r.times(++c),o=a.plus(jt(i,r,u)),vt(o.d).slice(0,u)===vt(a.d).slice(0,u)){for(;s--;)a=le(a.times(a),u);return f.precision=l,t==null?(ge=!0,le(a,l)):a}a=o}}function we(e){for(var t=e.e*de,r=e.d[0];r>=10;r/=10)t++;return t}function Vs(e,t,r){if(t>e.LN10.sd())throw ge=!0,r&&(e.precision=r),Error(nt+"LN10 precision limit exceeded");return le(new e(e.LN10),t)}function Nt(e){for(var t="";e--;)t+="0";return t}function Vn(e,t){var r,n,i,a,o,u,c,s,f,l=1,h=10,p=e,y=p.d,v=p.constructor,d=v.precision;if(p.s<1)throw Error(nt+(p.s?"NaN":"-Infinity"));if(p.eq(Ve))return new v(0);if(t==null?(ge=!1,s=d):s=t,p.eq(10))return t==null&&(ge=!0),Vs(v,s);if(s+=h,v.precision=s,r=vt(y),n=r.charAt(0),a=we(p),Math.abs(a)<15e14){for(;n<7&&n!=1||n==1&&r.charAt(1)>3;)p=p.times(e),r=vt(p.d),n=r.charAt(0),l++;a=we(p),n>1?(p=new v("0."+r),a++):p=new v(n+"."+r.slice(1))}else return c=Vs(v,s+2,d).times(a+""),p=Vn(new v(n+"."+r.slice(1)),s-h).plus(c),v.precision=d,t==null?(ge=!0,le(p,d)):p;for(u=o=p=jt(p.minus(Ve),p.plus(Ve),s),f=le(p.times(p),s),i=3;;){if(o=le(o.times(f),s),c=u.plus(jt(o,new v(i),s)),vt(c.d).slice(0,s)===vt(u.d).slice(0,s))return u=u.times(2),a!==0&&(u=u.plus(Vs(v,s+2,d).times(a+""))),u=jt(u,new v(l),s),v.precision=d,t==null?(ge=!0,le(u,d)):u;u=c,i+=2}}function Em(e,t){var r,n,i;for((r=t.indexOf("."))>-1&&(t=t.replace(".","")),(n=t.search(/e/i))>0?(r<0&&(r=n),r+=+t.slice(n+1),t=t.substring(0,n)):r<0&&(r=t.length),n=0;t.charCodeAt(n)===48;)++n;for(i=t.length;t.charCodeAt(i-1)===48;)--i;if(t=t.slice(n,i),t){if(i-=n,r=r-n-1,e.e=pn(r/de),e.d=[],n=(r+1)%de,r<0&&(n+=de),nua||e.e<-ua))throw Error(Op+r)}else e.s=0,e.e=0,e.d=[0];return e}function le(e,t,r){var n,i,a,o,u,c,s,f,l=e.d;for(o=1,a=l[0];a>=10;a/=10)o++;if(n=t-o,n<0)n+=de,i=t,s=l[f=0];else{if(f=Math.ceil((n+1)/de),a=l.length,f>=a)return e;for(s=a=l[f],o=1;a>=10;a/=10)o++;n%=de,i=n-de+o}if(r!==void 0&&(a=Jt(10,o-i-1),u=s/a%10|0,c=t<0||l[f+1]!==void 0||s%a,c=r<4?(u||c)&&(r==0||r==(e.s<0?3:2)):u>5||u==5&&(r==4||c||r==6&&(n>0?i>0?s/Jt(10,o-i):0:l[f-1])%10&1||r==(e.s<0?8:7))),t<1||!l[0])return c?(a=we(e),l.length=1,t=t-a-1,l[0]=Jt(10,(de-t%de)%de),e.e=pn(-t/de)||0):(l.length=1,l[0]=e.e=e.s=0),e;if(n==0?(l.length=f,a=1,f--):(l.length=f+1,a=Jt(10,de-n),l[f]=i>0?(s/Jt(10,o-i)%Jt(10,i)|0)*a:0),c)for(;;)if(f==0){(l[0]+=a)==Ee&&(l[0]=1,++e.e);break}else{if(l[f]+=a,l[f]!=Ee)break;l[f--]=0,a=1}for(n=l.length;l[--n]===0;)l.pop();if(ge&&(e.e>ua||e.e<-ua))throw Error(Op+we(e));return e}function pO(e,t){var r,n,i,a,o,u,c,s,f,l,h=e.constructor,p=h.precision;if(!e.s||!t.s)return t.s?t.s=-t.s:t=new h(e),ge?le(t,p):t;if(c=e.d,l=t.d,n=t.e,s=e.e,c=c.slice(),o=s-n,o){for(f=o<0,f?(r=c,o=-o,u=l.length):(r=l,n=s,u=c.length),i=Math.max(Math.ceil(p/de),u)+2,o>i&&(o=i,r.length=1),r.reverse(),i=o;i--;)r.push(0);r.reverse()}else{for(i=c.length,u=l.length,f=i0;--i)c[u++]=0;for(i=l.length;i>o;){if(c[--i]0?a=a.charAt(0)+"."+a.slice(1)+Nt(n):o>1&&(a=a.charAt(0)+"."+a.slice(1)),a=a+(i<0?"e":"e+")+i):i<0?(a="0."+Nt(-i-1)+a,r&&(n=r-o)>0&&(a+=Nt(n))):i>=o?(a+=Nt(i+1-o),r&&(n=r-i-1)>0&&(a=a+"."+Nt(n))):((n=i+1)0&&(i+1===o&&(a+="."),a+=Nt(n))),e.s<0?"-"+a:a}function jm(e,t){if(e.length>t)return e.length=t,!0}function dO(e){var t,r,n;function i(a){var o=this;if(!(o instanceof i))return new i(a);if(o.constructor=i,a instanceof i){o.s=a.s,o.e=a.e,o.d=(a=a.d)?a.slice():a;return}if(typeof a=="number"){if(a*0!==0)throw Error(ar+a);if(a>0)o.s=1;else if(a<0)a=-a,o.s=-1;else{o.s=0,o.e=0,o.d=[0];return}if(a===~~a&&a<1e7){o.e=0,o.d=[a];return}return Em(o,a.toString())}else if(typeof a!="string")throw Error(ar+a);if(a.charCodeAt(0)===45?(a=a.slice(1),o.s=-1):o.s=1,LM.test(a))Em(o,a);else throw Error(ar+a)}if(i.prototype=W,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.clone=dO,i.config=i.set=BM,e===void 0&&(e={}),e)for(n=["precision","rounding","toExpNeg","toExpPos","LN10"],t=0;t=i[t+1]&&n<=i[t+2])this[r]=n;else throw Error(ar+r+": "+n);if((n=e[r="LN10"])!==void 0)if(n==Math.LN10)this[r]=new this(n);else throw Error(ar+r+": "+n);return this}var _p=dO(qM);Ve=new _p(1);const ue=_p;function FM(e){return KM(e)||zM(e)||WM(e)||UM()}function UM(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function WM(e,t){if(e){if(typeof e=="string")return $f(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return $f(e,t)}}function zM(e){if(typeof Symbol<"u"&&Symbol.iterator in Object(e))return Array.from(e)}function KM(e){if(Array.isArray(e))return $f(e)}function $f(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=t?r.apply(void 0,i):e(t-o,Mm(function(){for(var u=arguments.length,c=new Array(u),s=0;se.length)&&(t=e.length);for(var r=0,n=new Array(t);r"u"||!(Symbol.iterator in Object(e)))){var r=[],n=!0,i=!1,a=void 0;try{for(var o=e[Symbol.iterator](),u;!(n=(u=o.next()).done)&&(r.push(u.value),!(t&&r.length===t));n=!0);}catch(c){i=!0,a=c}finally{try{!n&&o.return!=null&&o.return()}finally{if(i)throw a}}return r}}function o$(e){if(Array.isArray(e))return e}function bO(e){var t=Xn(e,2),r=t[0],n=t[1],i=r,a=n;return r>n&&(i=n,a=r),[i,a]}function xO(e,t,r){if(e.lte(0))return new ue(0);var n=uo.getDigitCount(e.toNumber()),i=new ue(10).pow(n),a=e.div(i),o=n!==1?.05:.1,u=new ue(Math.ceil(a.div(o).toNumber())).add(r).mul(o),c=u.mul(i);return t?c:new ue(Math.ceil(c))}function u$(e,t,r){var n=1,i=new ue(e);if(!i.isint()&&r){var a=Math.abs(e);a<1?(n=new ue(10).pow(uo.getDigitCount(e)-1),i=new ue(Math.floor(i.div(n).toNumber())).mul(n)):a>1&&(i=new ue(Math.floor(e)))}else e===0?i=new ue(Math.floor((t-1)/2)):r||(i=new ue(Math.floor(e)));var o=Math.floor((t-1)/2),u=XM(VM(function(c){return i.add(new ue(c-o).mul(n)).toNumber()}),If);return u(0,t)}function wO(e,t,r,n){var i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:0;if(!Number.isFinite((t-e)/(r-1)))return{step:new ue(0),tickMin:new ue(0),tickMax:new ue(0)};var a=xO(new ue(t).sub(e).div(r-1),n,i),o;e<=0&&t>=0?o=new ue(0):(o=new ue(e).add(t).div(2),o=o.sub(new ue(o).mod(a)));var u=Math.ceil(o.sub(e).div(a).toNumber()),c=Math.ceil(new ue(t).sub(o).div(a).toNumber()),s=u+c+1;return s>r?wO(e,t,r,n,i+1):(s0?c+(r-s):c,u=t>0?u:u+(r-s)),{step:a,tickMin:o.sub(new ue(u).mul(a)),tickMax:o.add(new ue(c).mul(a))})}function c$(e){var t=Xn(e,2),r=t[0],n=t[1],i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:6,a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,o=Math.max(i,2),u=bO([r,n]),c=Xn(u,2),s=c[0],f=c[1];if(s===-1/0||f===1/0){var l=f===1/0?[s].concat(kf(If(0,i-1).map(function(){return 1/0}))):[].concat(kf(If(0,i-1).map(function(){return-1/0})),[f]);return r>n?Cf(l):l}if(s===f)return u$(s,i,a);var h=wO(s,f,o,a),p=h.step,y=h.tickMin,v=h.tickMax,d=uo.rangeStep(y,v.add(new ue(.1).mul(p)),p);return r>n?Cf(d):d}function s$(e,t){var r=Xn(e,2),n=r[0],i=r[1],a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,o=bO([n,i]),u=Xn(o,2),c=u[0],s=u[1];if(c===-1/0||s===1/0)return[n,i];if(c===s)return[c];var f=Math.max(t,2),l=xO(new ue(s).sub(c).div(f-1),a,0),h=[].concat(kf(uo.rangeStep(new ue(c),new ue(s).sub(new ue(.99).mul(l)),l)),[s]);return n>i?Cf(h):h}var l$=gO(c$),f$=gO(s$),h$=["offset","layout","width","dataKey","data","dataPointFormatter","xAxis","yAxis"];function Br(e){"@babel/helpers - typeof";return Br=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Br(e)}function ca(){return ca=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function b$(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function x$(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function w$(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r1&&arguments[1]!==void 0?arguments[1]:[],i=arguments.length>2?arguments[2]:void 0,a=arguments.length>3?arguments[3]:void 0,o=-1,u=(r=n?.length)!==null&&r!==void 0?r:0;if(u<=1)return 0;if(a&&a.axisType==="angleAxis"&&Math.abs(Math.abs(a.range[1]-a.range[0])-360)<=1e-6)for(var c=a.range,s=0;s0?i[s-1].coordinate:i[u-1].coordinate,l=i[s].coordinate,h=s>=u-1?i[0].coordinate:i[s+1].coordinate,p=void 0;if(qe(l-f)!==qe(h-l)){var y=[];if(qe(h-l)===qe(c[1]-c[0])){p=h;var v=l+c[1]-c[0];y[0]=Math.min(v,(v+f)/2),y[1]=Math.max(v,(v+f)/2)}else{p=f;var d=h+c[1]-c[0];y[0]=Math.min(l,(d+l)/2),y[1]=Math.max(l,(d+l)/2)}var m=[Math.min(l,(p+l)/2),Math.max(l,(p+l)/2)];if(t>m[0]&&t<=m[1]||t>=y[0]&&t<=y[1]){o=i[s].index;break}}else{var x=Math.min(f,h),w=Math.max(f,h);if(t>(x+l)/2&&t<=(w+l)/2){o=i[s].index;break}}}else for(var O=0;O0&&O(n[O].coordinate+n[O-1].coordinate)/2&&t<=(n[O].coordinate+n[O+1].coordinate)/2||O===u-1&&t>(n[O].coordinate+n[O-1].coordinate)/2){o=n[O].index;break}return o},Ap=function(t){var r,n=t,i=n.type.displayName,a=(r=t.type)!==null&&r!==void 0&&r.defaultProps?be(be({},t.type.defaultProps),t.props):t.props,o=a.stroke,u=a.fill,c;switch(i){case"Line":c=o;break;case"Area":case"Radar":c=o&&o!=="none"?o:u;break;default:c=u;break}return c},q$=function(t){var r=t.barSize,n=t.totalSize,i=t.stackGroups,a=i===void 0?{}:i;if(!a)return{};for(var o={},u=Object.keys(a),c=0,s=u.length;c=0});if(m&&m.length){var x=m[0].type.defaultProps,w=x!==void 0?be(be({},x),m[0].props):m[0].props,O=w.barSize,g=w[d];o[g]||(o[g]=[]);var b=J(O)?r:O;o[g].push({item:m[0],stackList:m.slice(1),barSize:J(b)?void 0:Le(b,n,0)})}}return o},L$=function(t){var r=t.barGap,n=t.barCategoryGap,i=t.bandSize,a=t.sizeList,o=a===void 0?[]:a,u=t.maxBarSize,c=o.length;if(c<1)return null;var s=Le(r,i,0,!0),f,l=[];if(o[0].barSize===+o[0].barSize){var h=!1,p=i/c,y=o.reduce(function(O,g){return O+g.barSize||0},0);y+=(c-1)*s,y>=i&&(y-=(c-1)*s,s=0),y>=i&&p>0&&(h=!0,p*=.9,y=c*p);var v=(i-y)/2>>0,d={offset:v-s,size:0};f=o.reduce(function(O,g){var b={item:g.item,position:{offset:d.offset+d.size+s,size:h?p:g.barSize}},_=[].concat(Cm(O),[b]);return d=_[_.length-1].position,g.stackList&&g.stackList.length&&g.stackList.forEach(function(A){_.push({item:A,position:d})}),_},l)}else{var m=Le(n,i,0,!0);i-2*m-(c-1)*s<=0&&(s=0);var x=(i-2*m-(c-1)*s)/c;x>1&&(x>>=0);var w=u===+u?Math.min(x,u):x;f=o.reduce(function(O,g,b){var _=[].concat(Cm(O),[{item:g.item,position:{offset:m+(x+s)*b+(x-w)/2,size:w}}]);return g.stackList&&g.stackList.length&&g.stackList.forEach(function(A){_.push({item:A,position:_[_.length-1].position})}),_},l)}return f},B$=function(t,r,n,i){var a=n.children,o=n.width,u=n.margin,c=o-(u.left||0)-(u.right||0),s=SO({children:a,legendWidth:c});if(s){var f=i||{},l=f.width,h=f.height,p=s.align,y=s.verticalAlign,v=s.layout;if((v==="vertical"||v==="horizontal"&&y==="middle")&&p!=="center"&&q(t[p]))return be(be({},t),{},$r({},p,t[p]+(l||0)));if((v==="horizontal"||v==="vertical"&&p==="center")&&y!=="middle"&&q(t[y]))return be(be({},t),{},$r({},y,t[y]+(h||0)))}return t},F$=function(t,r,n){return J(r)?!0:t==="horizontal"?r==="yAxis":t==="vertical"||n==="x"?r==="xAxis":n==="y"?r==="yAxis":!0},PO=function(t,r,n,i,a){var o=r.props.children,u=Ye(o,_i).filter(function(s){return F$(i,a,s.props.direction)});if(u&&u.length){var c=u.map(function(s){return s.props.dataKey});return t.reduce(function(s,f){var l=Ae(f,n);if(J(l))return s;var h=Array.isArray(l)?[ao(l),io(l)]:[l,l],p=c.reduce(function(y,v){var d=Ae(f,v,0),m=h[0]-Math.abs(Array.isArray(d)?d[0]:d),x=h[1]+Math.abs(Array.isArray(d)?d[1]:d);return[Math.min(m,y[0]),Math.max(x,y[1])]},[1/0,-1/0]);return[Math.min(p[0],s[0]),Math.max(p[1],s[1])]},[1/0,-1/0])}return null},U$=function(t,r,n,i,a){var o=r.map(function(u){return PO(t,u,n,a,i)}).filter(function(u){return!J(u)});return o&&o.length?o.reduce(function(u,c){return[Math.min(u[0],c[0]),Math.max(u[1],c[1])]},[1/0,-1/0]):null},TO=function(t,r,n,i,a){var o=r.map(function(c){var s=c.props.dataKey;return n==="number"&&s&&PO(t,c,s,i)||$n(t,s,n,a)});if(n==="number")return o.reduce(function(c,s){return[Math.min(c[0],s[0]),Math.max(c[1],s[1])]},[1/0,-1/0]);var u={};return o.reduce(function(c,s){for(var f=0,l=s.length;f=2?qe(u[0]-u[1])*2*s:s,r&&(t.ticks||t.niceTicks)){var f=(t.ticks||t.niceTicks).map(function(l){var h=a?a.indexOf(l):l;return{coordinate:i(h)+s,value:l,offset:s}});return f.filter(function(l){return!gi(l.coordinate)})}return t.isCategorical&&t.categoricalDomain?t.categoricalDomain.map(function(l,h){return{coordinate:i(l)+s,value:l,index:h,offset:s}}):i.ticks&&!n?i.ticks(t.tickCount).map(function(l){return{coordinate:i(l)+s,value:l,offset:s}}):i.domain().map(function(l,h){return{coordinate:i(l)+s,value:a?a[l]:l,index:h,offset:s}})},Xs=new WeakMap,Ci=function(t,r){if(typeof r!="function")return t;Xs.has(t)||Xs.set(t,new WeakMap);var n=Xs.get(t);if(n.has(r))return n.get(r);var i=function(){t.apply(void 0,arguments),r.apply(void 0,arguments)};return n.set(r,i),i},MO=function(t,r,n){var i=t.scale,a=t.type,o=t.layout,u=t.axisType;if(i==="auto")return o==="radial"&&u==="radiusAxis"?{scale:Wn(),realScaleType:"band"}:o==="radial"&&u==="angleAxis"?{scale:na(),realScaleType:"linear"}:a==="category"&&r&&(r.indexOf("LineChart")>=0||r.indexOf("AreaChart")>=0||r.indexOf("ComposedChart")>=0&&!n)?{scale:Mn(),realScaleType:"point"}:a==="category"?{scale:Wn(),realScaleType:"band"}:{scale:na(),realScaleType:"linear"};if(ur(i)){var c="scale".concat(Wa(i));return{scale:(bm[c]||Mn)(),realScaleType:bm[c]?c:"point"}}return X(i)?{scale:i}:{scale:Mn(),realScaleType:"point"}},Rm=1e-4,$O=function(t){var r=t.domain();if(!(!r||r.length<=2)){var n=r.length,i=t.range(),a=Math.min(i[0],i[1])-Rm,o=Math.max(i[0],i[1])+Rm,u=t(r[0]),c=t(r[n-1]);(uo||co)&&t.domain([r[0],r[n-1]])}},W$=function(t,r){if(!t)return null;for(var n=0,i=t.length;ni)&&(a[1]=i),a[0]>i&&(a[0]=i),a[1]=0?(t[u][n][0]=a,t[u][n][1]=a+c,a=t[u][n][1]):(t[u][n][0]=o,t[u][n][1]=o+c,o=t[u][n][1])}},H$=function(t){var r=t.length;if(!(r<=0))for(var n=0,i=t[0].length;n=0?(t[o][n][0]=a,t[o][n][1]=a+u,a=t[o][n][1]):(t[o][n][0]=0,t[o][n][1]=0)}},G$={sign:K$,expand:FA,none:Ir,silhouette:UA,wiggle:WA,positive:H$},V$=function(t,r,n){var i=r.map(function(u){return u.props.dataKey}),a=G$[n],o=BA().keys(i).value(function(u,c){return+Ae(u,c,0)}).order(hf).offset(a);return o(t)},X$=function(t,r,n,i,a,o){if(!t)return null;var u=o?r.reverse():r,c={},s=u.reduce(function(l,h){var p,y=(p=h.type)!==null&&p!==void 0&&p.defaultProps?be(be({},h.type.defaultProps),h.props):h.props,v=y.stackId,d=y.hide;if(d)return l;var m=y[n],x=l[m]||{hasStack:!1,stackGroups:{}};if(Se(v)){var w=x.stackGroups[v]||{numericAxisId:n,cateAxisId:i,items:[]};w.items.push(h),x.hasStack=!0,x.stackGroups[v]=w}else x.stackGroups[un("_stackId_")]={numericAxisId:n,cateAxisId:i,items:[h]};return be(be({},l),{},$r({},m,x))},c),f={};return Object.keys(s).reduce(function(l,h){var p=s[h];if(p.hasStack){var y={};p.stackGroups=Object.keys(p.stackGroups).reduce(function(v,d){var m=p.stackGroups[d];return be(be({},v),{},$r({},d,{numericAxisId:n,cateAxisId:i,items:m.items,stackedData:V$(t,m.items,a)}))},y)}return be(be({},l),{},$r({},h,p))},f)},IO=function(t,r){var n=r.realScaleType,i=r.type,a=r.tickCount,o=r.originalDomain,u=r.allowDecimals,c=n||r.scale;if(c!=="auto"&&c!=="linear")return null;if(a&&i==="number"&&o&&(o[0]==="auto"||o[1]==="auto")){var s=t.domain();if(!s.length)return null;var f=l$(s,a,u);return t.domain([ao(f),io(f)]),{niceTicks:f}}if(a&&i==="number"){var l=t.domain(),h=f$(l,a,u);return{niceTicks:h}}return null};function Dm(e){var t=e.axis,r=e.ticks,n=e.bandSize,i=e.entry,a=e.index,o=e.dataKey;if(t.type==="category"){if(!t.allowDuplicatedCategory&&t.dataKey&&!J(i[t.dataKey])){var u=Bi(r,"value",i[t.dataKey]);if(u)return u.coordinate+n/2}return r[a]?r[a].coordinate+n/2:null}var c=Ae(i,J(o)?t.dataKey:o);return J(c)?null:t.scale(c)}var Nm=function(t){var r=t.axis,n=t.ticks,i=t.offset,a=t.bandSize,o=t.entry,u=t.index;if(r.type==="category")return n[u]?n[u].coordinate+i:null;var c=Ae(o,r.dataKey,r.domain[u]);return J(c)?null:r.scale(c)-a/2+i},Y$=function(t){var r=t.numericAxis,n=r.scale.domain();if(r.type==="number"){var i=Math.min(n[0],n[1]),a=Math.max(n[0],n[1]);return i<=0&&a>=0?0:a<0?a:i}return n[0]},Z$=function(t,r){var n,i=(n=t.type)!==null&&n!==void 0&&n.defaultProps?be(be({},t.type.defaultProps),t.props):t.props,a=i.stackId;if(Se(a)){var o=r[a];if(o){var u=o.items.indexOf(t);return u>=0?o.stackedData[u]:null}}return null},J$=function(t){return t.reduce(function(r,n){return[ao(n.concat([r[0]]).filter(q)),io(n.concat([r[1]]).filter(q))]},[1/0,-1/0])},CO=function(t,r,n){return Object.keys(t).reduce(function(i,a){var o=t[a],u=o.stackedData,c=u.reduce(function(s,f){var l=J$(f.slice(r,n+1));return[Math.min(s[0],l[0]),Math.max(s[1],l[1])]},[1/0,-1/0]);return[Math.min(c[0],i[0]),Math.max(c[1],i[1])]},[1/0,-1/0]).map(function(i){return i===1/0||i===-1/0?0:i})},qm=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,Lm=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,qf=function(t,r,n){if(X(t))return t(r,n);if(!Array.isArray(t))return r;var i=[];if(q(t[0]))i[0]=n?t[0]:Math.min(t[0],r[0]);else if(qm.test(t[0])){var a=+qm.exec(t[0])[1];i[0]=r[0]-a}else X(t[0])?i[0]=t[0](r[0]):i[0]=r[0];if(q(t[1]))i[1]=n?t[1]:Math.max(t[1],r[1]);else if(Lm.test(t[1])){var o=+Lm.exec(t[1])[1];i[1]=r[1]+o}else X(t[1])?i[1]=t[1](r[1]):i[1]=r[1];return i},la=function(t,r,n){if(t&&t.scale&&t.scale.bandwidth){var i=t.scale.bandwidth();if(!n||i>0)return i}if(t&&r&&r.length>=2){for(var a=Zh(r,function(l){return l.coordinate}),o=1/0,u=1,c=a.length;ue.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&arguments[2]!==void 0?arguments[2]:{top:0,right:0,bottom:0,left:0};return Math.min(Math.abs(t-(n.left||0)-(n.right||0)),Math.abs(r-(n.top||0)-(n.bottom||0)))/2},uI=function(t,r,n,i,a){var o=t.width,u=t.height,c=t.startAngle,s=t.endAngle,f=Le(t.cx,o,o/2),l=Le(t.cy,u,u/2),h=DO(o,u,n),p=Le(t.innerRadius,h,0),y=Le(t.outerRadius,h,h*.8),v=Object.keys(r);return v.reduce(function(d,m){var x=r[m],w=x.domain,O=x.reversed,g;if(J(x.range))i==="angleAxis"?g=[c,s]:i==="radiusAxis"&&(g=[p,y]),O&&(g=[g[1],g[0]]);else{g=x.range;var b=g,_=tI(b,2);c=_[0],s=_[1]}var A=MO(x,a),P=A.realScaleType,j=A.scale;j.domain(w).range(g),$O(j);var T=IO(j,At(At({},x),{},{realScaleType:P})),E=At(At(At({},x),T),{},{range:g,radius:y,realScaleType:P,scale:j,cx:f,cy:l,innerRadius:p,outerRadius:y,startAngle:c,endAngle:s});return At(At({},d),{},RO({},m,E))},{})},cI=function(t,r){var n=t.x,i=t.y,a=r.x,o=r.y;return Math.sqrt(Math.pow(n-a,2)+Math.pow(i-o,2))},sI=function(t,r){var n=t.x,i=t.y,a=r.cx,o=r.cy,u=cI({x:n,y:i},{x:a,y:o});if(u<=0)return{radius:u};var c=(n-a)/u,s=Math.acos(c);return i>o&&(s=2*Math.PI-s),{radius:u,angle:oI(s),angleInRadian:s}},lI=function(t){var r=t.startAngle,n=t.endAngle,i=Math.floor(r/360),a=Math.floor(n/360),o=Math.min(i,a);return{startAngle:r-o*360,endAngle:n-o*360}},fI=function(t,r){var n=r.startAngle,i=r.endAngle,a=Math.floor(n/360),o=Math.floor(i/360),u=Math.min(a,o);return t+u*360},Wm=function(t,r){var n=t.x,i=t.y,a=sI({x:n,y:i},r),o=a.radius,u=a.angle,c=r.innerRadius,s=r.outerRadius;if(os)return!1;if(o===0)return!0;var f=lI(r),l=f.startAngle,h=f.endAngle,p=u,y;if(l<=h){for(;p>h;)p-=360;for(;p=l&&p<=h}else{for(;p>l;)p-=360;for(;p=h&&p<=l}return y?At(At({},r),{},{radius:o,angle:fI(p,r)}):null},NO=function(t){return!N.isValidElement(t)&&!X(t)&&typeof t!="boolean"?t.className:""};function Qn(e){"@babel/helpers - typeof";return Qn=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Qn(e)}var hI=["offset"];function pI(e){return gI(e)||yI(e)||vI(e)||dI()}function dI(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function vI(e,t){if(e){if(typeof e=="string")return Lf(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Lf(e,t)}}function yI(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function gI(e){if(Array.isArray(e))return Lf(e)}function Lf(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function bI(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function zm(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function _e(e){for(var t=1;t=0?1:-1,w,O;i==="insideStart"?(w=p+x*o,O=v):i==="insideEnd"?(w=y-x*o,O=!v):i==="end"&&(w=y+x*o,O=v),O=m<=0?O:!O;var g=pe(s,f,d,w),b=pe(s,f,d,w+(O?1:-1)*359),_="M".concat(g.x,",").concat(g.y,` A`).concat(d,",").concat(d,",0,1,").concat(O?0:1,`, - `).concat(b.x,",").concat(b.y),A=J(t.id)?un("recharts-radial-line-"):t.id;return S.createElement("text",ei({},n,{dominantBaseline:"central",className:te("recharts-radial-bar-label",u)}),S.createElement("defs",null,S.createElement("path",{id:A,d:_})),S.createElement("textPath",{xlinkHref:"#".concat(A)},r))},TI=function(t){var r=t.viewBox,n=t.offset,i=t.position,a=r,o=a.cx,u=a.cy,c=a.innerRadius,s=a.outerRadius,f=a.startAngle,l=a.endAngle,h=(f+l)/2;if(i==="outside"){var p=pe(o,u,s+n,h),y=p.x,v=p.y;return{x:y,y:v,textAnchor:y>=o?"start":"end",verticalAnchor:"middle"}}if(i==="center")return{x:o,y:u,textAnchor:"middle",verticalAnchor:"middle"};if(i==="centerTop")return{x:o,y:u,textAnchor:"middle",verticalAnchor:"start"};if(i==="centerBottom")return{x:o,y:u,textAnchor:"middle",verticalAnchor:"end"};var d=(c+s)/2,m=pe(o,u,d,h),x=m.x,w=m.y;return{x,y:w,textAnchor:"middle",verticalAnchor:"middle"}},EI=function(t){var r=t.viewBox,n=t.parentViewBox,i=t.offset,a=t.position,o=r,u=o.x,c=o.y,s=o.width,f=o.height,l=f>=0?1:-1,h=l*i,p=l>0?"end":"start",y=l>0?"start":"end",v=s>=0?1:-1,d=v*i,m=v>0?"end":"start",x=v>0?"start":"end";if(a==="top"){var w={x:u+s/2,y:c-l*i,textAnchor:"middle",verticalAnchor:p};return _e(_e({},w),n?{height:Math.max(c-n.y,0),width:s}:{})}if(a==="bottom"){var O={x:u+s/2,y:c+f+h,textAnchor:"middle",verticalAnchor:y};return _e(_e({},O),n?{height:Math.max(n.y+n.height-(c+f),0),width:s}:{})}if(a==="left"){var g={x:u-d,y:c+f/2,textAnchor:m,verticalAnchor:"middle"};return _e(_e({},g),n?{width:Math.max(g.x-n.x,0),height:f}:{})}if(a==="right"){var b={x:u+s+d,y:c+f/2,textAnchor:x,verticalAnchor:"middle"};return _e(_e({},b),n?{width:Math.max(n.x+n.width-b.x,0),height:f}:{})}var _=n?{width:s,height:f}:{};return a==="insideLeft"?_e({x:u+d,y:c+f/2,textAnchor:x,verticalAnchor:"middle"},_):a==="insideRight"?_e({x:u+s-d,y:c+f/2,textAnchor:m,verticalAnchor:"middle"},_):a==="insideTop"?_e({x:u+s/2,y:c+h,textAnchor:"middle",verticalAnchor:y},_):a==="insideBottom"?_e({x:u+s/2,y:c+f-h,textAnchor:"middle",verticalAnchor:p},_):a==="insideTopLeft"?_e({x:u+d,y:c+h,textAnchor:x,verticalAnchor:y},_):a==="insideTopRight"?_e({x:u+s-d,y:c+h,textAnchor:m,verticalAnchor:y},_):a==="insideBottomLeft"?_e({x:u+d,y:c+f-h,textAnchor:x,verticalAnchor:p},_):a==="insideBottomRight"?_e({x:u+s-d,y:c+f-h,textAnchor:m,verticalAnchor:p},_):on(a)&&(q(a.x)||er(a.x))&&(q(a.y)||er(a.y))?_e({x:u+Le(a.x,s),y:c+Le(a.y,f),textAnchor:"end",verticalAnchor:"end"},_):_e({x:u+s/2,y:c+f/2,textAnchor:"middle",verticalAnchor:"middle"},_)},jI=function(t){return"cx"in t&&q(t.cx)};function je(e){var t=e.offset,r=t===void 0?5:t,n=bI(e,pI),i=_e({offset:r},n),a=i.viewBox,o=i.position,u=i.value,c=i.children,s=i.content,f=i.className,l=f===void 0?"":f,h=i.textBreakAll;if(!a||J(u)&&J(c)&&!N.isValidElement(s)&&!X(s))return null;if(N.isValidElement(s))return N.cloneElement(s,i);var p;if(X(s)){if(p=N.createElement(s,i),N.isValidElement(p))return p}else p=AI(i);var y=jI(a),v=K(i,!0);if(y&&(o==="insideStart"||o==="insideEnd"||o==="end"))return PI(i,p,v);var d=y?TI(i):EI(i);return S.createElement(sr,ei({className:te("recharts-label",l)},v,d,{breakAll:h}),p)}je.displayName="Label";var LO=function(t){var r=t.cx,n=t.cy,i=t.angle,a=t.startAngle,o=t.endAngle,u=t.r,c=t.radius,s=t.innerRadius,f=t.outerRadius,l=t.x,h=t.y,p=t.top,y=t.left,v=t.width,d=t.height,m=t.clockWise,x=t.labelViewBox;if(x)return x;if(q(v)&&q(d)){if(q(l)&&q(h))return{x:l,y:h,width:v,height:d};if(q(p)&&q(y))return{x:p,y,width:v,height:d}}return q(l)&&q(h)?{x:l,y:h,width:0,height:0}:q(r)&&q(n)?{cx:r,cy:n,startAngle:a||i||0,endAngle:o||i||0,innerRadius:s||0,outerRadius:f||c||u||0,clockWise:m}:t.viewBox?t.viewBox:{}},MI=function(t,r){return t?t===!0?S.createElement(je,{key:"label-implicit",viewBox:r}):Se(t)?S.createElement(je,{key:"label-implicit",viewBox:r,value:t}):N.isValidElement(t)?t.type===je?N.cloneElement(t,{key:"label-implicit",viewBox:r}):S.createElement(je,{key:"label-implicit",content:t,viewBox:r}):X(t)?S.createElement(je,{key:"label-implicit",content:t,viewBox:r}):on(t)?S.createElement(je,ei({viewBox:r},t,{key:"label-implicit"})):null:null},$I=function(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(!t||!t.children&&n&&!t.label)return null;var i=t.children,a=LO(t),o=Ye(i,je).map(function(c,s){return N.cloneElement(c,{viewBox:r||a,key:"label-".concat(s)})});if(!n)return o;var u=MI(t.label,r||a);return[u].concat(dI(o))};je.parseViewBox=LO;je.renderCallByParent=$I;var Ys,Km;function II(){if(Km)return Ys;Km=1;function e(t){var r=t==null?0:t.length;return r?t[r-1]:void 0}return Ys=e,Ys}var CI=II();const kI=ce(CI);function ti(e){"@babel/helpers - typeof";return ti=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ti(e)}var RI=["valueAccessor"],DI=["data","dataKey","clockWise","id","textBreakAll"];function NI(e){return FI(e)||BI(e)||LI(e)||qI()}function qI(){throw new TypeError(`Invalid attempt to spread non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function LI(e,t){if(e){if(typeof e=="string")return Bf(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Bf(e,t)}}function BI(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function FI(e){if(Array.isArray(e))return Bf(e)}function Bf(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function KI(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}var HI=function(t){return Array.isArray(t.value)?kI(t.value):t.value};function Mt(e){var t=e.valueAccessor,r=t===void 0?HI:t,n=Vm(e,RI),i=n.data,a=n.dataKey,o=n.clockWise,u=n.id,c=n.textBreakAll,s=Vm(n,DI);return!i||!i.length?null:S.createElement(ne,{className:"recharts-label-list"},i.map(function(f,l){var h=J(a)?r(f,l):Ae(f&&f.payload,a),p=J(u)?{}:{id:"".concat(u,"-").concat(l)};return S.createElement(je,ha({},K(f,!0),s,p,{parentViewBox:f.parentViewBox,value:h,textBreakAll:c,viewBox:je.parseViewBox(J(o)?f:Gm(Gm({},f),{},{clockWise:o})),key:"label-".concat(l),index:l}))}))}Mt.displayName="LabelList";function GI(e,t){return e?e===!0?S.createElement(Mt,{key:"labelList-implicit",data:t}):S.isValidElement(e)||X(e)?S.createElement(Mt,{key:"labelList-implicit",data:t,content:e}):on(e)?S.createElement(Mt,ha({data:t},e,{key:"labelList-implicit"})):null:null}function VI(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(!e||!e.children&&r&&!e.label)return null;var n=e.children,i=Ye(n,Mt).map(function(o,u){return N.cloneElement(o,{data:t,key:"labelList-".concat(u)})});if(!r)return i;var a=GI(e.label,t);return[a].concat(NI(i))}Mt.renderCallByParent=VI;function ri(e){"@babel/helpers - typeof";return ri=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ri(e)}function Ff(){return Ff=Object.assign?Object.assign.bind():function(e){for(var t=1;t=o?"start":"end",verticalAnchor:"middle"}}if(i==="center")return{x:o,y:u,textAnchor:"middle",verticalAnchor:"middle"};if(i==="centerTop")return{x:o,y:u,textAnchor:"middle",verticalAnchor:"start"};if(i==="centerBottom")return{x:o,y:u,textAnchor:"middle",verticalAnchor:"end"};var d=(c+s)/2,m=pe(o,u,d,h),x=m.x,w=m.y;return{x,y:w,textAnchor:"middle",verticalAnchor:"middle"}},TI=function(t){var r=t.viewBox,n=t.parentViewBox,i=t.offset,a=t.position,o=r,u=o.x,c=o.y,s=o.width,f=o.height,l=f>=0?1:-1,h=l*i,p=l>0?"end":"start",y=l>0?"start":"end",v=s>=0?1:-1,d=v*i,m=v>0?"end":"start",x=v>0?"start":"end";if(a==="top"){var w={x:u+s/2,y:c-l*i,textAnchor:"middle",verticalAnchor:p};return _e(_e({},w),n?{height:Math.max(c-n.y,0),width:s}:{})}if(a==="bottom"){var O={x:u+s/2,y:c+f+h,textAnchor:"middle",verticalAnchor:y};return _e(_e({},O),n?{height:Math.max(n.y+n.height-(c+f),0),width:s}:{})}if(a==="left"){var g={x:u-d,y:c+f/2,textAnchor:m,verticalAnchor:"middle"};return _e(_e({},g),n?{width:Math.max(g.x-n.x,0),height:f}:{})}if(a==="right"){var b={x:u+s+d,y:c+f/2,textAnchor:x,verticalAnchor:"middle"};return _e(_e({},b),n?{width:Math.max(n.x+n.width-b.x,0),height:f}:{})}var _=n?{width:s,height:f}:{};return a==="insideLeft"?_e({x:u+d,y:c+f/2,textAnchor:x,verticalAnchor:"middle"},_):a==="insideRight"?_e({x:u+s-d,y:c+f/2,textAnchor:m,verticalAnchor:"middle"},_):a==="insideTop"?_e({x:u+s/2,y:c+h,textAnchor:"middle",verticalAnchor:y},_):a==="insideBottom"?_e({x:u+s/2,y:c+f-h,textAnchor:"middle",verticalAnchor:p},_):a==="insideTopLeft"?_e({x:u+d,y:c+h,textAnchor:x,verticalAnchor:y},_):a==="insideTopRight"?_e({x:u+s-d,y:c+h,textAnchor:m,verticalAnchor:y},_):a==="insideBottomLeft"?_e({x:u+d,y:c+f-h,textAnchor:x,verticalAnchor:p},_):a==="insideBottomRight"?_e({x:u+s-d,y:c+f-h,textAnchor:m,verticalAnchor:p},_):on(a)&&(q(a.x)||er(a.x))&&(q(a.y)||er(a.y))?_e({x:u+Le(a.x,s),y:c+Le(a.y,f),textAnchor:"end",verticalAnchor:"end"},_):_e({x:u+s/2,y:c+f/2,textAnchor:"middle",verticalAnchor:"middle"},_)},EI=function(t){return"cx"in t&&q(t.cx)};function je(e){var t=e.offset,r=t===void 0?5:t,n=mI(e,hI),i=_e({offset:r},n),a=i.viewBox,o=i.position,u=i.value,c=i.children,s=i.content,f=i.className,l=f===void 0?"":f,h=i.textBreakAll;if(!a||J(u)&&J(c)&&!N.isValidElement(s)&&!X(s))return null;if(N.isValidElement(s))return N.cloneElement(s,i);var p;if(X(s)){if(p=N.createElement(s,i),N.isValidElement(p))return p}else p=_I(i);var y=EI(a),v=K(i,!0);if(y&&(o==="insideStart"||o==="insideEnd"||o==="end"))return SI(i,p,v);var d=y?PI(i):TI(i);return S.createElement(sr,ei({className:te("recharts-label",l)},v,d,{breakAll:h}),p)}je.displayName="Label";var qO=function(t){var r=t.cx,n=t.cy,i=t.angle,a=t.startAngle,o=t.endAngle,u=t.r,c=t.radius,s=t.innerRadius,f=t.outerRadius,l=t.x,h=t.y,p=t.top,y=t.left,v=t.width,d=t.height,m=t.clockWise,x=t.labelViewBox;if(x)return x;if(q(v)&&q(d)){if(q(l)&&q(h))return{x:l,y:h,width:v,height:d};if(q(p)&&q(y))return{x:p,y,width:v,height:d}}return q(l)&&q(h)?{x:l,y:h,width:0,height:0}:q(r)&&q(n)?{cx:r,cy:n,startAngle:a||i||0,endAngle:o||i||0,innerRadius:s||0,outerRadius:f||c||u||0,clockWise:m}:t.viewBox?t.viewBox:{}},jI=function(t,r){return t?t===!0?S.createElement(je,{key:"label-implicit",viewBox:r}):Se(t)?S.createElement(je,{key:"label-implicit",viewBox:r,value:t}):N.isValidElement(t)?t.type===je?N.cloneElement(t,{key:"label-implicit",viewBox:r}):S.createElement(je,{key:"label-implicit",content:t,viewBox:r}):X(t)?S.createElement(je,{key:"label-implicit",content:t,viewBox:r}):on(t)?S.createElement(je,ei({viewBox:r},t,{key:"label-implicit"})):null:null},MI=function(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(!t||!t.children&&n&&!t.label)return null;var i=t.children,a=qO(t),o=Ye(i,je).map(function(c,s){return N.cloneElement(c,{viewBox:r||a,key:"label-".concat(s)})});if(!n)return o;var u=jI(t.label,r||a);return[u].concat(pI(o))};je.parseViewBox=qO;je.renderCallByParent=MI;var Ys,Km;function $I(){if(Km)return Ys;Km=1;function e(t){var r=t==null?0:t.length;return r?t[r-1]:void 0}return Ys=e,Ys}var II=$I();const CI=ce(II);function ti(e){"@babel/helpers - typeof";return ti=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ti(e)}var kI=["valueAccessor"],RI=["data","dataKey","clockWise","id","textBreakAll"];function DI(e){return BI(e)||LI(e)||qI(e)||NI()}function NI(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function qI(e,t){if(e){if(typeof e=="string")return Bf(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Bf(e,t)}}function LI(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function BI(e){if(Array.isArray(e))return Bf(e)}function Bf(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function zI(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}var KI=function(t){return Array.isArray(t.value)?CI(t.value):t.value};function Mt(e){var t=e.valueAccessor,r=t===void 0?KI:t,n=Vm(e,kI),i=n.data,a=n.dataKey,o=n.clockWise,u=n.id,c=n.textBreakAll,s=Vm(n,RI);return!i||!i.length?null:S.createElement(ne,{className:"recharts-label-list"},i.map(function(f,l){var h=J(a)?r(f,l):Ae(f&&f.payload,a),p=J(u)?{}:{id:"".concat(u,"-").concat(l)};return S.createElement(je,ha({},K(f,!0),s,p,{parentViewBox:f.parentViewBox,value:h,textBreakAll:c,viewBox:je.parseViewBox(J(o)?f:Gm(Gm({},f),{},{clockWise:o})),key:"label-".concat(l),index:l}))}))}Mt.displayName="LabelList";function HI(e,t){return e?e===!0?S.createElement(Mt,{key:"labelList-implicit",data:t}):S.isValidElement(e)||X(e)?S.createElement(Mt,{key:"labelList-implicit",data:t,content:e}):on(e)?S.createElement(Mt,ha({data:t},e,{key:"labelList-implicit"})):null:null}function GI(e,t){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;if(!e||!e.children&&r&&!e.label)return null;var n=e.children,i=Ye(n,Mt).map(function(o,u){return N.cloneElement(o,{data:t,key:"labelList-".concat(u)})});if(!r)return i;var a=HI(e.label,t);return[a].concat(DI(i))}Mt.renderCallByParent=GI;function ri(e){"@babel/helpers - typeof";return ri=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ri(e)}function Ff(){return Ff=Object.assign?Object.assign.bind():function(e){for(var t=1;t180),",").concat(+(o>s),`, `).concat(l.x,",").concat(l.y,` `);if(i>0){var p=pe(r,n,i,o),y=pe(r,n,i,s);h+="L ".concat(y.x,",").concat(y.y,` A `).concat(i,",").concat(i,`,0, `).concat(+(Math.abs(c)>180),",").concat(+(o<=s),`, - `).concat(p.x,",").concat(p.y," Z")}else h+="L ".concat(r,",").concat(n," Z");return h},QI=function(t){var r=t.cx,n=t.cy,i=t.innerRadius,a=t.outerRadius,o=t.cornerRadius,u=t.forceCornerRadius,c=t.cornerIsExternal,s=t.startAngle,f=t.endAngle,l=qe(f-s),h=ki({cx:r,cy:n,radius:a,angle:s,sign:l,cornerRadius:o,cornerIsExternal:c}),p=h.circleTangency,y=h.lineTangency,v=h.theta,d=ki({cx:r,cy:n,radius:a,angle:f,sign:-l,cornerRadius:o,cornerIsExternal:c}),m=d.circleTangency,x=d.lineTangency,w=d.theta,O=c?Math.abs(s-f):Math.abs(s-f)-v-w;if(O<0)return u?"M ".concat(y.x,",").concat(y.y,` + `).concat(p.x,",").concat(p.y," Z")}else h+="L ".concat(r,",").concat(n," Z");return h},JI=function(t){var r=t.cx,n=t.cy,i=t.innerRadius,a=t.outerRadius,o=t.cornerRadius,u=t.forceCornerRadius,c=t.cornerIsExternal,s=t.startAngle,f=t.endAngle,l=qe(f-s),h=ki({cx:r,cy:n,radius:a,angle:s,sign:l,cornerRadius:o,cornerIsExternal:c}),p=h.circleTangency,y=h.lineTangency,v=h.theta,d=ki({cx:r,cy:n,radius:a,angle:f,sign:-l,cornerRadius:o,cornerIsExternal:c}),m=d.circleTangency,x=d.lineTangency,w=d.theta,O=c?Math.abs(s-f):Math.abs(s-f)-v-w;if(O<0)return u?"M ".concat(y.x,",").concat(y.y,` a`).concat(o,",").concat(o,",0,0,1,").concat(o*2,`,0 a`).concat(o,",").concat(o,",0,0,1,").concat(-o*2,`,0 - `):BO({cx:r,cy:n,innerRadius:i,outerRadius:a,startAngle:s,endAngle:f});var g="M ".concat(y.x,",").concat(y.y,` + `):LO({cx:r,cy:n,innerRadius:i,outerRadius:a,startAngle:s,endAngle:f});var g="M ".concat(y.x,",").concat(y.y,` A`).concat(o,",").concat(o,",0,0,").concat(+(l<0),",").concat(p.x,",").concat(p.y,` A`).concat(a,",").concat(a,",0,").concat(+(O>180),",").concat(+(l<0),",").concat(m.x,",").concat(m.y,` A`).concat(o,",").concat(o,",0,0,").concat(+(l<0),",").concat(x.x,",").concat(x.y,` `);if(i>0){var b=ki({cx:r,cy:n,radius:i,angle:s,sign:l,isExternal:!0,cornerRadius:o,cornerIsExternal:c}),_=b.circleTangency,A=b.lineTangency,P=b.theta,j=ki({cx:r,cy:n,radius:i,angle:f,sign:-l,isExternal:!0,cornerRadius:o,cornerIsExternal:c}),T=j.circleTangency,E=j.lineTangency,M=j.theta,I=c?Math.abs(s-f):Math.abs(s-f)-P-M;if(I<0&&o===0)return"".concat(g,"L").concat(r,",").concat(n,"Z");g+="L".concat(E.x,",").concat(E.y,` A`).concat(o,",").concat(o,",0,0,").concat(+(l<0),",").concat(T.x,",").concat(T.y,` A`).concat(i,",").concat(i,",0,").concat(+(I>180),",").concat(+(l>0),",").concat(_.x,",").concat(_.y,` - A`).concat(o,",").concat(o,",0,0,").concat(+(l<0),",").concat(A.x,",").concat(A.y,"Z")}else g+="L".concat(r,",").concat(n,"Z");return g},eC={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},FO=function(t){var r=Ym(Ym({},eC),t),n=r.cx,i=r.cy,a=r.innerRadius,o=r.outerRadius,u=r.cornerRadius,c=r.forceCornerRadius,s=r.cornerIsExternal,f=r.startAngle,l=r.endAngle,h=r.className;if(o0&&Math.abs(f-l)<360?d=QI({cx:n,cy:i,innerRadius:a,outerRadius:o,cornerRadius:Math.min(v,y/2),forceCornerRadius:c,cornerIsExternal:s,startAngle:f,endAngle:l}):d=BO({cx:n,cy:i,innerRadius:a,outerRadius:o,startAngle:f,endAngle:l}),S.createElement("path",Ff({},K(r,!0),{className:p,d,role:"img"}))};function ni(e){"@babel/helpers - typeof";return ni=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ni(e)}function Uf(){return Uf=Object.assign?Object.assign.bind():function(e){for(var t=1;t0;)if(!r.equals(e[n],t[n],n,n,e,t,r))return!1;return!0}function bC(e,t){return yr(e.getTime(),t.getTime())}function xC(e,t){return e.name===t.name&&e.message===t.message&&e.cause===t.cause&&e.stack===t.stack}function wC(e,t){return e===t}function ub(e,t,r){var n=e.size;if(n!==t.size)return!1;if(!n)return!0;for(var i=new Array(n),a=e.entries(),o,u,c=0;(o=a.next())&&!o.done;){for(var s=t.entries(),f=!1,l=0;(u=s.next())&&!u.done;){if(i[l]){l++;continue}var h=o.value,p=u.value;if(r.equals(h[0],p[0],c,l,e,t,r)&&r.equals(h[1],p[1],h[0],p[0],e,t,r)){f=i[l]=!0;break}l++}if(!f)return!1;c++}return!0}var OC=yr;function _C(e,t,r){var n=ob(e),i=n.length;if(ob(t).length!==i)return!1;for(;i-- >0;)if(!UO(e,t,r,n[i]))return!1;return!0}function _n(e,t,r){var n=ib(e),i=n.length;if(ib(t).length!==i)return!1;for(var a,o,u;i-- >0;)if(a=n[i],!UO(e,t,r,a)||(o=ab(e,a),u=ab(t,a),(o||u)&&(!o||!u||o.configurable!==u.configurable||o.enumerable!==u.enumerable||o.writable!==u.writable)))return!1;return!0}function AC(e,t){return yr(e.valueOf(),t.valueOf())}function SC(e,t){return e.source===t.source&&e.flags===t.flags}function cb(e,t,r){var n=e.size;if(n!==t.size)return!1;if(!n)return!0;for(var i=new Array(n),a=e.values(),o,u;(o=a.next())&&!o.done;){for(var c=t.values(),s=!1,f=0;(u=c.next())&&!u.done;){if(!i[f]&&r.equals(o.value,u.value,o.value,u.value,e,t,r)){s=i[f]=!0;break}f++}if(!s)return!1}return!0}function PC(e,t){var r=e.length;if(t.length!==r)return!1;for(;r-- >0;)if(e[r]!==t[r])return!1;return!0}function TC(e,t){return e.hostname===t.hostname&&e.pathname===t.pathname&&e.protocol===t.protocol&&e.port===t.port&&e.hash===t.hash&&e.username===t.username&&e.password===t.password}function UO(e,t,r,n){return(n===gC||n===yC||n===vC)&&(e.$$typeof||t.$$typeof)?!0:dC(t,n)&&r.equals(e[n],t[n],n,n,e,t,r)}var EC="[object Arguments]",jC="[object Boolean]",MC="[object Date]",$C="[object Error]",IC="[object Map]",CC="[object Number]",kC="[object Object]",RC="[object RegExp]",DC="[object Set]",NC="[object String]",qC="[object URL]",LC=Array.isArray,sb=typeof ArrayBuffer<"u"&&typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView:null,lb=Object.assign,BC=Object.prototype.toString.call.bind(Object.prototype.toString);function FC(e){var t=e.areArraysEqual,r=e.areDatesEqual,n=e.areErrorsEqual,i=e.areFunctionsEqual,a=e.areMapsEqual,o=e.areNumbersEqual,u=e.areObjectsEqual,c=e.arePrimitiveWrappersEqual,s=e.areRegExpsEqual,f=e.areSetsEqual,l=e.areTypedArraysEqual,h=e.areUrlsEqual,p=e.unknownTagComparators;return function(v,d,m){if(v===d)return!0;if(v==null||d==null)return!1;var x=typeof v;if(x!==typeof d)return!1;if(x!=="object")return x==="number"?o(v,d,m):x==="function"?i(v,d,m):!1;var w=v.constructor;if(w!==d.constructor)return!1;if(w===Object)return u(v,d,m);if(LC(v))return t(v,d,m);if(sb!=null&&sb(v))return l(v,d,m);if(w===Date)return r(v,d,m);if(w===RegExp)return s(v,d,m);if(w===Map)return a(v,d,m);if(w===Set)return f(v,d,m);var O=BC(v);if(O===MC)return r(v,d,m);if(O===RC)return s(v,d,m);if(O===IC)return a(v,d,m);if(O===DC)return f(v,d,m);if(O===kC)return typeof v.then!="function"&&typeof d.then!="function"&&u(v,d,m);if(O===qC)return h(v,d,m);if(O===$C)return n(v,d,m);if(O===EC)return u(v,d,m);if(O===jC||O===CC||O===NC)return c(v,d,m);if(p){var g=p[O];if(!g){var b=pC(v);b&&(g=p[b])}if(g)return g(v,d,m)}return!1}}function UC(e){var t=e.circular,r=e.createCustomConfig,n=e.strict,i={areArraysEqual:n?_n:mC,areDatesEqual:bC,areErrorsEqual:xC,areFunctionsEqual:wC,areMapsEqual:n?nb(ub,_n):ub,areNumbersEqual:OC,areObjectsEqual:n?_n:_C,arePrimitiveWrappersEqual:AC,areRegExpsEqual:SC,areSetsEqual:n?nb(cb,_n):cb,areTypedArraysEqual:n?_n:PC,areUrlsEqual:TC,unknownTagComparators:void 0};if(r&&(i=lb({},i,r(i))),t){var a=Di(i.areArraysEqual),o=Di(i.areMapsEqual),u=Di(i.areObjectsEqual),c=Di(i.areSetsEqual);i=lb({},i,{areArraysEqual:a,areMapsEqual:o,areObjectsEqual:u,areSetsEqual:c})}return i}function WC(e){return function(t,r,n,i,a,o,u){return e(t,r,u)}}function zC(e){var t=e.circular,r=e.comparator,n=e.createState,i=e.equals,a=e.strict;if(n)return function(c,s){var f=n(),l=f.cache,h=l===void 0?t?new WeakMap:void 0:l,p=f.meta;return r(c,s,{cache:h,equals:i,meta:p,strict:a})};if(t)return function(c,s){return r(c,s,{cache:new WeakMap,equals:i,meta:void 0,strict:a})};var o={cache:void 0,equals:i,meta:void 0,strict:a};return function(c,s){return r(c,s,o)}}var KC=Wt();Wt({strict:!0});Wt({circular:!0});Wt({circular:!0,strict:!0});Wt({createInternalComparator:function(){return yr}});Wt({strict:!0,createInternalComparator:function(){return yr}});Wt({circular:!0,createInternalComparator:function(){return yr}});Wt({circular:!0,createInternalComparator:function(){return yr},strict:!0});function Wt(e){e===void 0&&(e={});var t=e.circular,r=t===void 0?!1:t,n=e.createInternalComparator,i=e.createState,a=e.strict,o=a===void 0?!1:a,u=UC(e),c=FC(u),s=n?n(c):WC(c);return zC({circular:r,comparator:c,createState:i,equals:s,strict:o})}function HC(e){typeof requestAnimationFrame<"u"&&requestAnimationFrame(e)}function fb(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,r=-1,n=function i(a){r<0&&(r=a),a-r>t?(e(a),r=-1):HC(i)};requestAnimationFrame(n)}function Wf(e){"@babel/helpers - typeof";return Wf=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Wf(e)}function GC(e){return ZC(e)||YC(e)||XC(e)||VC()}function VC(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function XC(e,t){if(e){if(typeof e=="string")return hb(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return hb(e,t)}}function hb(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r1?1:m<0?0:m},v=function(m){for(var x=m>1?1:m,w=x,O=0;O<8;++O){var g=l(w)-x,b=p(w);if(Math.abs(g-x)0&&arguments[0]!==void 0?arguments[0]:{},r=t.stiff,n=r===void 0?100:r,i=t.damping,a=i===void 0?8:i,o=t.dt,u=o===void 0?17:o,c=function(f,l,h){var p=-(f-l)*n,y=h*a,v=h+(p-y)*u/1e3,d=h*u/1e3+f;return Math.abs(d-l)e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Ek(e,t){if(e==null)return{};var r={},n=Object.keys(e),i,a;for(a=0;a=0)&&(r[i]=e[i]);return r}function el(e){return Ik(e)||$k(e)||Mk(e)||jk()}function jk(){throw new TypeError(`Invalid attempt to spread non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Mk(e,t){if(e){if(typeof e=="string")return Vf(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Vf(e,t)}}function $k(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function Ik(e){if(Array.isArray(e))return Vf(e)}function Vf(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function ya(e){return ya=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(r){return r.__proto__||Object.getPrototypeOf(r)},ya(e)}var bt=(function(e){Nk(r,e);var t=qk(r);function r(n,i){var a;Ck(this,r),a=t.call(this,n,i);var o=a.props,u=o.isActive,c=o.attributeName,s=o.from,f=o.to,l=o.steps,h=o.children,p=o.duration;if(a.handleStyleChange=a.handleStyleChange.bind(Zf(a)),a.changeStyle=a.changeStyle.bind(Zf(a)),!u||p<=0)return a.state={style:{}},typeof h=="function"&&(a.state={style:f}),Yf(a);if(l&&l.length)a.state={style:l[0].style};else if(s){if(typeof h=="function")return a.state={style:s},Yf(a);a.state={style:c?Tn({},c,s):s}}else a.state={style:{}};return a}return Rk(r,[{key:"componentDidMount",value:function(){var i=this.props,a=i.isActive,o=i.canBegin;this.mounted=!0,!(!a||!o)&&this.runAnimation(this.props)}},{key:"componentDidUpdate",value:function(i){var a=this.props,o=a.isActive,u=a.canBegin,c=a.attributeName,s=a.shouldReAnimate,f=a.to,l=a.from,h=this.state.style;if(u){if(!o){var p={style:c?Tn({},c,f):f};this.state&&h&&(c&&h[c]!==f||!c&&h!==f)&&this.setState(p);return}if(!(KC(i.to,f)&&i.canBegin&&i.isActive)){var y=!i.canBegin||!i.isActive;this.manager&&this.manager.stop(),this.stopJSAnimation&&this.stopJSAnimation();var v=y||s?l:i.to;if(this.state&&h){var d={style:c?Tn({},c,v):v};(c&&h[c]!==v||!c&&h!==v)&&this.setState(d)}this.runAnimation(at(at({},this.props),{},{from:v,begin:0}))}}}},{key:"componentWillUnmount",value:function(){this.mounted=!1;var i=this.props.onAnimationEnd;this.unSubscribe&&this.unSubscribe(),this.manager&&(this.manager.stop(),this.manager=null),this.stopJSAnimation&&this.stopJSAnimation(),i&&i()}},{key:"handleStyleChange",value:function(i){this.changeStyle(i)}},{key:"changeStyle",value:function(i){this.mounted&&this.setState({style:i})}},{key:"runJSAnimation",value:function(i){var a=this,o=i.from,u=i.to,c=i.duration,s=i.easing,f=i.begin,l=i.onAnimationEnd,h=i.onAnimationStart,p=Sk(o,u,dk(s),c,this.changeStyle),y=function(){a.stopJSAnimation=p()};this.manager.start([h,f,y,c,l])}},{key:"runStepAnimation",value:function(i){var a=this,o=i.steps,u=i.begin,c=i.onAnimationStart,s=o[0],f=s.style,l=s.duration,h=l===void 0?0:l,p=function(v,d,m){if(m===0)return v;var x=d.duration,w=d.easing,O=w===void 0?"ease":w,g=d.style,b=d.properties,_=d.onAnimationEnd,A=m>0?o[m-1]:d,P=b||Object.keys(g);if(typeof O=="function"||O==="spring")return[].concat(el(v),[a.runJSAnimation.bind(a,{from:A.style,to:g,duration:x,easing:O}),x]);var j=vb(P,x,O),T=at(at(at({},A.style),g),{},{transition:j});return[].concat(el(v),[T,x,_]).filter(rk)};return this.manager.start([c].concat(el(o.reduce(p,[f,Math.max(h,u)])),[i.onAnimationEnd]))}},{key:"runAnimation",value:function(i){this.manager||(this.manager=JC());var a=i.begin,o=i.duration,u=i.attributeName,c=i.to,s=i.easing,f=i.onAnimationStart,l=i.onAnimationEnd,h=i.steps,p=i.children,y=this.manager;if(this.unSubscribe=y.subscribe(this.handleStyleChange),typeof s=="function"||typeof p=="function"||s==="spring"){this.runJSAnimation(i);return}if(h.length>1){this.runStepAnimation(i);return}var v=u?Tn({},u,c):c,d=vb(Object.keys(v),o,s);y.start([f,a,at(at({},v),{},{transition:d}),o,l])}},{key:"render",value:function(){var i=this.props,a=i.children;i.begin;var o=i.duration;i.attributeName,i.easing;var u=i.isActive;i.steps,i.from,i.to,i.canBegin,i.onAnimationEnd,i.shouldReAnimate,i.onAnimationReStart;var c=Tk(i,Pk),s=N.Children.count(a),f=this.state.style;if(typeof a=="function")return a(f);if(!u||s===0||o<=0)return a;var l=function(p){var y=p.props,v=y.style,d=v===void 0?{}:v,m=y.className,x=N.cloneElement(p,at(at({},c),{},{style:at(at({},d),f),className:m}));return x};return s===1?l(N.Children.only(a)):S.createElement("div",null,N.Children.map(a,function(h){return l(h)}))}}]),r})(N.PureComponent);bt.displayName="Animate";bt.defaultProps={begin:0,duration:1e3,from:"",to:"",attributeName:"",easing:"ease",isActive:!0,canBegin:!0,steps:[],onAnimationEnd:function(){},onAnimationStart:function(){}};bt.propTypes={from:oe.oneOfType([oe.object,oe.string]),to:oe.oneOfType([oe.object,oe.string]),attributeName:oe.string,duration:oe.number,begin:oe.number,easing:oe.oneOfType([oe.string,oe.func]),steps:oe.arrayOf(oe.shape({duration:oe.number.isRequired,style:oe.object.isRequired,easing:oe.oneOfType([oe.oneOf(["ease","ease-in","ease-out","ease-in-out","linear"]),oe.func]),properties:oe.arrayOf("string"),onAnimationEnd:oe.func})),children:oe.oneOfType([oe.node,oe.func]),isActive:oe.bool,canBegin:oe.bool,onAnimationEnd:oe.func,shouldReAnimate:oe.bool,onAnimationStart:oe.func,onAnimationReStart:oe.func};function wb(){return wb=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0?1:-1,c=n>=0?1:-1,s=i>=0&&n>=0||i<0&&n<0?1:0,f;if(o>0&&a instanceof Array){for(var l=[0,0,0,0],h=0,p=4;ho?o:a[h];f="M".concat(t,",").concat(r+u*l[0]),l[0]>0&&(f+="A ".concat(l[0],",").concat(l[0],",0,0,").concat(s,",").concat(t+c*l[0],",").concat(r)),f+="L ".concat(t+n-c*l[1],",").concat(r),l[1]>0&&(f+="A ".concat(l[1],",").concat(l[1],",0,0,").concat(s,`, + A`).concat(o,",").concat(o,",0,0,").concat(+(l<0),",").concat(A.x,",").concat(A.y,"Z")}else g+="L".concat(r,",").concat(n,"Z");return g},QI={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},BO=function(t){var r=Ym(Ym({},QI),t),n=r.cx,i=r.cy,a=r.innerRadius,o=r.outerRadius,u=r.cornerRadius,c=r.forceCornerRadius,s=r.cornerIsExternal,f=r.startAngle,l=r.endAngle,h=r.className;if(o0&&Math.abs(f-l)<360?d=JI({cx:n,cy:i,innerRadius:a,outerRadius:o,cornerRadius:Math.min(v,y/2),forceCornerRadius:c,cornerIsExternal:s,startAngle:f,endAngle:l}):d=LO({cx:n,cy:i,innerRadius:a,outerRadius:o,startAngle:f,endAngle:l}),S.createElement("path",Ff({},K(r,!0),{className:p,d,role:"img"}))};function ni(e){"@babel/helpers - typeof";return ni=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ni(e)}function Uf(){return Uf=Object.assign?Object.assign.bind():function(e){for(var t=1;t0;)if(!r.equals(e[n],t[n],n,n,e,t,r))return!1;return!0}function mC(e,t){return yr(e.getTime(),t.getTime())}function bC(e,t){return e.name===t.name&&e.message===t.message&&e.cause===t.cause&&e.stack===t.stack}function xC(e,t){return e===t}function ub(e,t,r){var n=e.size;if(n!==t.size)return!1;if(!n)return!0;for(var i=new Array(n),a=e.entries(),o,u,c=0;(o=a.next())&&!o.done;){for(var s=t.entries(),f=!1,l=0;(u=s.next())&&!u.done;){if(i[l]){l++;continue}var h=o.value,p=u.value;if(r.equals(h[0],p[0],c,l,e,t,r)&&r.equals(h[1],p[1],h[0],p[0],e,t,r)){f=i[l]=!0;break}l++}if(!f)return!1;c++}return!0}var wC=yr;function OC(e,t,r){var n=ob(e),i=n.length;if(ob(t).length!==i)return!1;for(;i-- >0;)if(!FO(e,t,r,n[i]))return!1;return!0}function _n(e,t,r){var n=ib(e),i=n.length;if(ib(t).length!==i)return!1;for(var a,o,u;i-- >0;)if(a=n[i],!FO(e,t,r,a)||(o=ab(e,a),u=ab(t,a),(o||u)&&(!o||!u||o.configurable!==u.configurable||o.enumerable!==u.enumerable||o.writable!==u.writable)))return!1;return!0}function _C(e,t){return yr(e.valueOf(),t.valueOf())}function AC(e,t){return e.source===t.source&&e.flags===t.flags}function cb(e,t,r){var n=e.size;if(n!==t.size)return!1;if(!n)return!0;for(var i=new Array(n),a=e.values(),o,u;(o=a.next())&&!o.done;){for(var c=t.values(),s=!1,f=0;(u=c.next())&&!u.done;){if(!i[f]&&r.equals(o.value,u.value,o.value,u.value,e,t,r)){s=i[f]=!0;break}f++}if(!s)return!1}return!0}function SC(e,t){var r=e.length;if(t.length!==r)return!1;for(;r-- >0;)if(e[r]!==t[r])return!1;return!0}function PC(e,t){return e.hostname===t.hostname&&e.pathname===t.pathname&&e.protocol===t.protocol&&e.port===t.port&&e.hash===t.hash&&e.username===t.username&&e.password===t.password}function FO(e,t,r,n){return(n===yC||n===vC||n===dC)&&(e.$$typeof||t.$$typeof)?!0:pC(t,n)&&r.equals(e[n],t[n],n,n,e,t,r)}var TC="[object Arguments]",EC="[object Boolean]",jC="[object Date]",MC="[object Error]",$C="[object Map]",IC="[object Number]",CC="[object Object]",kC="[object RegExp]",RC="[object Set]",DC="[object String]",NC="[object URL]",qC=Array.isArray,sb=typeof ArrayBuffer<"u"&&typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView:null,lb=Object.assign,LC=Object.prototype.toString.call.bind(Object.prototype.toString);function BC(e){var t=e.areArraysEqual,r=e.areDatesEqual,n=e.areErrorsEqual,i=e.areFunctionsEqual,a=e.areMapsEqual,o=e.areNumbersEqual,u=e.areObjectsEqual,c=e.arePrimitiveWrappersEqual,s=e.areRegExpsEqual,f=e.areSetsEqual,l=e.areTypedArraysEqual,h=e.areUrlsEqual,p=e.unknownTagComparators;return function(v,d,m){if(v===d)return!0;if(v==null||d==null)return!1;var x=typeof v;if(x!==typeof d)return!1;if(x!=="object")return x==="number"?o(v,d,m):x==="function"?i(v,d,m):!1;var w=v.constructor;if(w!==d.constructor)return!1;if(w===Object)return u(v,d,m);if(qC(v))return t(v,d,m);if(sb!=null&&sb(v))return l(v,d,m);if(w===Date)return r(v,d,m);if(w===RegExp)return s(v,d,m);if(w===Map)return a(v,d,m);if(w===Set)return f(v,d,m);var O=LC(v);if(O===jC)return r(v,d,m);if(O===kC)return s(v,d,m);if(O===$C)return a(v,d,m);if(O===RC)return f(v,d,m);if(O===CC)return typeof v.then!="function"&&typeof d.then!="function"&&u(v,d,m);if(O===NC)return h(v,d,m);if(O===MC)return n(v,d,m);if(O===TC)return u(v,d,m);if(O===EC||O===IC||O===DC)return c(v,d,m);if(p){var g=p[O];if(!g){var b=hC(v);b&&(g=p[b])}if(g)return g(v,d,m)}return!1}}function FC(e){var t=e.circular,r=e.createCustomConfig,n=e.strict,i={areArraysEqual:n?_n:gC,areDatesEqual:mC,areErrorsEqual:bC,areFunctionsEqual:xC,areMapsEqual:n?nb(ub,_n):ub,areNumbersEqual:wC,areObjectsEqual:n?_n:OC,arePrimitiveWrappersEqual:_C,areRegExpsEqual:AC,areSetsEqual:n?nb(cb,_n):cb,areTypedArraysEqual:n?_n:SC,areUrlsEqual:PC,unknownTagComparators:void 0};if(r&&(i=lb({},i,r(i))),t){var a=Di(i.areArraysEqual),o=Di(i.areMapsEqual),u=Di(i.areObjectsEqual),c=Di(i.areSetsEqual);i=lb({},i,{areArraysEqual:a,areMapsEqual:o,areObjectsEqual:u,areSetsEqual:c})}return i}function UC(e){return function(t,r,n,i,a,o,u){return e(t,r,u)}}function WC(e){var t=e.circular,r=e.comparator,n=e.createState,i=e.equals,a=e.strict;if(n)return function(c,s){var f=n(),l=f.cache,h=l===void 0?t?new WeakMap:void 0:l,p=f.meta;return r(c,s,{cache:h,equals:i,meta:p,strict:a})};if(t)return function(c,s){return r(c,s,{cache:new WeakMap,equals:i,meta:void 0,strict:a})};var o={cache:void 0,equals:i,meta:void 0,strict:a};return function(c,s){return r(c,s,o)}}var zC=Wt();Wt({strict:!0});Wt({circular:!0});Wt({circular:!0,strict:!0});Wt({createInternalComparator:function(){return yr}});Wt({strict:!0,createInternalComparator:function(){return yr}});Wt({circular:!0,createInternalComparator:function(){return yr}});Wt({circular:!0,createInternalComparator:function(){return yr},strict:!0});function Wt(e){e===void 0&&(e={});var t=e.circular,r=t===void 0?!1:t,n=e.createInternalComparator,i=e.createState,a=e.strict,o=a===void 0?!1:a,u=FC(e),c=BC(u),s=n?n(c):UC(c);return WC({circular:r,comparator:c,createState:i,equals:s,strict:o})}function KC(e){typeof requestAnimationFrame<"u"&&requestAnimationFrame(e)}function fb(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,r=-1,n=function i(a){r<0&&(r=a),a-r>t?(e(a),r=-1):KC(i)};requestAnimationFrame(n)}function Wf(e){"@babel/helpers - typeof";return Wf=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Wf(e)}function HC(e){return YC(e)||XC(e)||VC(e)||GC()}function GC(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function VC(e,t){if(e){if(typeof e=="string")return hb(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return hb(e,t)}}function hb(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r1?1:m<0?0:m},v=function(m){for(var x=m>1?1:m,w=x,O=0;O<8;++O){var g=l(w)-x,b=p(w);if(Math.abs(g-x)0&&arguments[0]!==void 0?arguments[0]:{},r=t.stiff,n=r===void 0?100:r,i=t.damping,a=i===void 0?8:i,o=t.dt,u=o===void 0?17:o,c=function(f,l,h){var p=-(f-l)*n,y=h*a,v=h+(p-y)*u/1e3,d=h*u/1e3+f;return Math.abs(d-l)e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Tk(e,t){if(e==null)return{};var r={},n=Object.keys(e),i,a;for(a=0;a=0)&&(r[i]=e[i]);return r}function el(e){return $k(e)||Mk(e)||jk(e)||Ek()}function Ek(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function jk(e,t){if(e){if(typeof e=="string")return Vf(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Vf(e,t)}}function Mk(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function $k(e){if(Array.isArray(e))return Vf(e)}function Vf(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function ya(e){return ya=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(r){return r.__proto__||Object.getPrototypeOf(r)},ya(e)}var bt=(function(e){Dk(r,e);var t=Nk(r);function r(n,i){var a;Ik(this,r),a=t.call(this,n,i);var o=a.props,u=o.isActive,c=o.attributeName,s=o.from,f=o.to,l=o.steps,h=o.children,p=o.duration;if(a.handleStyleChange=a.handleStyleChange.bind(Zf(a)),a.changeStyle=a.changeStyle.bind(Zf(a)),!u||p<=0)return a.state={style:{}},typeof h=="function"&&(a.state={style:f}),Yf(a);if(l&&l.length)a.state={style:l[0].style};else if(s){if(typeof h=="function")return a.state={style:s},Yf(a);a.state={style:c?Tn({},c,s):s}}else a.state={style:{}};return a}return kk(r,[{key:"componentDidMount",value:function(){var i=this.props,a=i.isActive,o=i.canBegin;this.mounted=!0,!(!a||!o)&&this.runAnimation(this.props)}},{key:"componentDidUpdate",value:function(i){var a=this.props,o=a.isActive,u=a.canBegin,c=a.attributeName,s=a.shouldReAnimate,f=a.to,l=a.from,h=this.state.style;if(u){if(!o){var p={style:c?Tn({},c,f):f};this.state&&h&&(c&&h[c]!==f||!c&&h!==f)&&this.setState(p);return}if(!(zC(i.to,f)&&i.canBegin&&i.isActive)){var y=!i.canBegin||!i.isActive;this.manager&&this.manager.stop(),this.stopJSAnimation&&this.stopJSAnimation();var v=y||s?l:i.to;if(this.state&&h){var d={style:c?Tn({},c,v):v};(c&&h[c]!==v||!c&&h!==v)&&this.setState(d)}this.runAnimation(at(at({},this.props),{},{from:v,begin:0}))}}}},{key:"componentWillUnmount",value:function(){this.mounted=!1;var i=this.props.onAnimationEnd;this.unSubscribe&&this.unSubscribe(),this.manager&&(this.manager.stop(),this.manager=null),this.stopJSAnimation&&this.stopJSAnimation(),i&&i()}},{key:"handleStyleChange",value:function(i){this.changeStyle(i)}},{key:"changeStyle",value:function(i){this.mounted&&this.setState({style:i})}},{key:"runJSAnimation",value:function(i){var a=this,o=i.from,u=i.to,c=i.duration,s=i.easing,f=i.begin,l=i.onAnimationEnd,h=i.onAnimationStart,p=Ak(o,u,pk(s),c,this.changeStyle),y=function(){a.stopJSAnimation=p()};this.manager.start([h,f,y,c,l])}},{key:"runStepAnimation",value:function(i){var a=this,o=i.steps,u=i.begin,c=i.onAnimationStart,s=o[0],f=s.style,l=s.duration,h=l===void 0?0:l,p=function(v,d,m){if(m===0)return v;var x=d.duration,w=d.easing,O=w===void 0?"ease":w,g=d.style,b=d.properties,_=d.onAnimationEnd,A=m>0?o[m-1]:d,P=b||Object.keys(g);if(typeof O=="function"||O==="spring")return[].concat(el(v),[a.runJSAnimation.bind(a,{from:A.style,to:g,duration:x,easing:O}),x]);var j=vb(P,x,O),T=at(at(at({},A.style),g),{},{transition:j});return[].concat(el(v),[T,x,_]).filter(tk)};return this.manager.start([c].concat(el(o.reduce(p,[f,Math.max(h,u)])),[i.onAnimationEnd]))}},{key:"runAnimation",value:function(i){this.manager||(this.manager=ZC());var a=i.begin,o=i.duration,u=i.attributeName,c=i.to,s=i.easing,f=i.onAnimationStart,l=i.onAnimationEnd,h=i.steps,p=i.children,y=this.manager;if(this.unSubscribe=y.subscribe(this.handleStyleChange),typeof s=="function"||typeof p=="function"||s==="spring"){this.runJSAnimation(i);return}if(h.length>1){this.runStepAnimation(i);return}var v=u?Tn({},u,c):c,d=vb(Object.keys(v),o,s);y.start([f,a,at(at({},v),{},{transition:d}),o,l])}},{key:"render",value:function(){var i=this.props,a=i.children;i.begin;var o=i.duration;i.attributeName,i.easing;var u=i.isActive;i.steps,i.from,i.to,i.canBegin,i.onAnimationEnd,i.shouldReAnimate,i.onAnimationReStart;var c=Pk(i,Sk),s=N.Children.count(a),f=this.state.style;if(typeof a=="function")return a(f);if(!u||s===0||o<=0)return a;var l=function(p){var y=p.props,v=y.style,d=v===void 0?{}:v,m=y.className,x=N.cloneElement(p,at(at({},c),{},{style:at(at({},d),f),className:m}));return x};return s===1?l(N.Children.only(a)):S.createElement("div",null,N.Children.map(a,function(h){return l(h)}))}}]),r})(N.PureComponent);bt.displayName="Animate";bt.defaultProps={begin:0,duration:1e3,from:"",to:"",attributeName:"",easing:"ease",isActive:!0,canBegin:!0,steps:[],onAnimationEnd:function(){},onAnimationStart:function(){}};bt.propTypes={from:oe.oneOfType([oe.object,oe.string]),to:oe.oneOfType([oe.object,oe.string]),attributeName:oe.string,duration:oe.number,begin:oe.number,easing:oe.oneOfType([oe.string,oe.func]),steps:oe.arrayOf(oe.shape({duration:oe.number.isRequired,style:oe.object.isRequired,easing:oe.oneOfType([oe.oneOf(["ease","ease-in","ease-out","ease-in-out","linear"]),oe.func]),properties:oe.arrayOf("string"),onAnimationEnd:oe.func})),children:oe.oneOfType([oe.node,oe.func]),isActive:oe.bool,canBegin:oe.bool,onAnimationEnd:oe.func,shouldReAnimate:oe.bool,onAnimationStart:oe.func,onAnimationReStart:oe.func};function wb(){return wb=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0?1:-1,c=n>=0?1:-1,s=i>=0&&n>=0||i<0&&n<0?1:0,f;if(o>0&&a instanceof Array){for(var l=[0,0,0,0],h=0,p=4;ho?o:a[h];f="M".concat(t,",").concat(r+u*l[0]),l[0]>0&&(f+="A ".concat(l[0],",").concat(l[0],",0,0,").concat(s,",").concat(t+c*l[0],",").concat(r)),f+="L ".concat(t+n-c*l[1],",").concat(r),l[1]>0&&(f+="A ".concat(l[1],",").concat(l[1],",0,0,").concat(s,`, `).concat(t+n,",").concat(r+u*l[1])),f+="L ".concat(t+n,",").concat(r+i-u*l[2]),l[2]>0&&(f+="A ".concat(l[2],",").concat(l[2],",0,0,").concat(s,`, `).concat(t+n-c*l[2],",").concat(r+i)),f+="L ".concat(t+c*l[3],",").concat(r+i),l[3]>0&&(f+="A ".concat(l[3],",").concat(l[3],",0,0,").concat(s,`, `).concat(t,",").concat(r+i-u*l[3])),f+="Z"}else if(o>0&&a===+a&&a>0){var y=Math.min(o,a);f="M ".concat(t,",").concat(r+u*y,` @@ -53,13 +53,13 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho L `).concat(t+n,",").concat(r+i-u*y,` A `).concat(y,",").concat(y,",0,0,").concat(s,",").concat(t+n-c*y,",").concat(r+i,` L `).concat(t+c*y,",").concat(r+i,` - A `).concat(y,",").concat(y,",0,0,").concat(s,",").concat(t,",").concat(r+i-u*y," Z")}else f="M ".concat(t,",").concat(r," h ").concat(n," v ").concat(i," h ").concat(-n," Z");return f},Vk=function(t,r){if(!t||!r)return!1;var n=t.x,i=t.y,a=r.x,o=r.y,u=r.width,c=r.height;if(Math.abs(u)>0&&Math.abs(c)>0){var s=Math.min(a,a+u),f=Math.max(a,a+u),l=Math.min(o,o+c),h=Math.max(o,o+c);return n>=s&&n<=f&&i>=l&&i<=h}return!1},Xk={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},Sp=function(t){var r=Ab(Ab({},Xk),t),n=N.useRef(),i=N.useState(-1),a=Bk(i,2),o=a[0],u=a[1];N.useEffect(function(){if(n.current&&n.current.getTotalLength)try{var O=n.current.getTotalLength();O&&u(O)}catch{}},[]);var c=r.x,s=r.y,f=r.width,l=r.height,h=r.radius,p=r.className,y=r.animationEasing,v=r.animationDuration,d=r.animationBegin,m=r.isAnimationActive,x=r.isUpdateAnimationActive;if(c!==+c||s!==+s||f!==+f||l!==+l||f===0||l===0)return null;var w=te("recharts-rectangle",p);return x?S.createElement(bt,{canBegin:o>0,from:{width:f,height:l,x:c,y:s},to:{width:f,height:l,x:c,y:s},duration:v,animationEasing:y,isActive:x},function(O){var g=O.width,b=O.height,_=O.x,A=O.y;return S.createElement(bt,{canBegin:o>0,from:"0px ".concat(o===-1?1:o,"px"),to:"".concat(o,"px 0px"),attributeName:"strokeDasharray",begin:d,duration:v,isActive:m,easing:y},S.createElement("path",ga({},K(r,!0),{className:w,d:Sb(_,A,g,b,h),ref:n})))}):S.createElement("path",ga({},K(r,!0),{className:w,d:Sb(c,s,f,l,h)}))},Yk=["points","className","baseLinePoints","connectNulls"];function Ar(){return Ar=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Jk(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function Pb(e){return rR(e)||tR(e)||eR(e)||Qk()}function Qk(){throw new TypeError(`Invalid attempt to spread non-iterable instance. -In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function eR(e,t){if(e){if(typeof e=="string")return Jf(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Jf(e,t)}}function tR(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function rR(e){if(Array.isArray(e))return Jf(e)}function Jf(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&arguments[0]!==void 0?arguments[0]:[],r=[[]];return t.forEach(function(n){Tb(n)?r[r.length-1].push(n):r[r.length-1].length>0&&r.push([])}),Tb(t[0])&&r[r.length-1].push(t[0]),r[r.length-1].length<=0&&(r=r.slice(0,-1)),r},Cn=function(t,r){var n=nR(t);r&&(n=[n.reduce(function(a,o){return[].concat(Pb(a),Pb(o))},[])]);var i=n.map(function(a){return a.reduce(function(o,u,c){return"".concat(o).concat(c===0?"M":"L").concat(u.x,",").concat(u.y)},"")}).join("");return n.length===1?"".concat(i,"Z"):i},iR=function(t,r,n){var i=Cn(t,n);return"".concat(i.slice(-1)==="Z"?i.slice(0,-1):i,"L").concat(Cn(r.reverse(),n).slice(1))},aR=function(t){var r=t.points,n=t.className,i=t.baseLinePoints,a=t.connectNulls,o=Zk(t,Yk);if(!r||!r.length)return null;var u=te("recharts-polygon",n);if(i&&i.length){var c=o.stroke&&o.stroke!=="none",s=iR(r,i,a);return S.createElement("g",{className:u},S.createElement("path",Ar({},K(o,!0),{fill:s.slice(-1)==="Z"?o.fill:"none",stroke:"none",d:s})),c?S.createElement("path",Ar({},K(o,!0),{fill:"none",d:Cn(r,a)})):null,c?S.createElement("path",Ar({},K(o,!0),{fill:"none",d:Cn(i,a)})):null)}var f=Cn(r,a);return S.createElement("path",Ar({},K(o,!0),{fill:f.slice(-1)==="Z"?o.fill:"none",className:u,d:f}))};function Qf(){return Qf=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function hR(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}var pR=function(t,r,n,i,a,o){return"M".concat(t,",").concat(a,"v").concat(i,"M").concat(o,",").concat(r,"h").concat(n)},dR=function(t){var r=t.x,n=r===void 0?0:r,i=t.y,a=i===void 0?0:i,o=t.top,u=o===void 0?0:o,c=t.left,s=c===void 0?0:c,f=t.width,l=f===void 0?0:f,h=t.height,p=h===void 0?0:h,y=t.className,v=fR(t,oR),d=uR({x:n,y:a,top:u,left:s,width:l,height:p},v);return!q(n)||!q(a)||!q(l)||!q(p)||!q(u)||!q(s)?null:S.createElement("path",eh({},K(d,!0),{className:te("recharts-cross",y),d:pR(n,a,l,p,u,s)}))},tl,jb;function vR(){if(jb)return tl;jb=1;var e=no(),t=sO(),r=xt();function n(i,a){return i&&i.length?e(i,r(a,2),t):void 0}return tl=n,tl}var yR=vR();const gR=ce(yR);var rl,Mb;function mR(){if(Mb)return rl;Mb=1;var e=no(),t=xt(),r=lO();function n(i,a){return i&&i.length?e(i,t(a,2),r):void 0}return rl=n,rl}var bR=mR();const xR=ce(bR);var wR=["cx","cy","angle","ticks","axisLine"],OR=["ticks","tick","angle","tickFormatter","stroke"];function Ur(e){"@babel/helpers - typeof";return Ur=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ur(e)}function kn(){return kn=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function _R(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function AR(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Cb(e,t){for(var r=0;rDb?o=i==="outer"?"start":"end":a<-Db?o=i==="outer"?"end":"start":o="middle",o}},{key:"renderAxisLine",value:function(){var n=this.props,i=n.cx,a=n.cy,o=n.radius,u=n.axisLine,c=n.axisLineType,s=Yt(Yt({},K(this.props,!1)),{},{fill:"none"},K(u,!1));if(c==="circle")return S.createElement(co,Qt({className:"recharts-polar-angle-axis-line"},s,{cx:i,cy:a,r:o}));var f=this.props.ticks,l=f.map(function(h){return pe(i,a,o,h.coordinate)});return S.createElement(aR,Qt({className:"recharts-polar-angle-axis-line"},s,{points:l}))}},{key:"renderTicks",value:function(){var n=this,i=this.props,a=i.ticks,o=i.tick,u=i.tickLine,c=i.tickFormatter,s=i.stroke,f=K(this.props,!1),l=K(o,!1),h=Yt(Yt({},f),{},{fill:"none"},K(u,!1)),p=a.map(function(y,v){var d=n.getTickLineCoord(y),m=n.getTickTextAnchor(y),x=Yt(Yt(Yt({textAnchor:m},f),{},{stroke:"none",fill:s},l),{},{index:v,payload:y,x:d.x2,y:d.y2});return S.createElement(ne,Qt({className:te("recharts-polar-angle-axis-tick",qO(o)),key:"tick-".concat(y.coordinate)},cr(n.props,y,v)),u&&S.createElement("line",Qt({className:"recharts-polar-angle-axis-tick-line"},h,d)),o&&t.renderTickItem(o,x,c?c(y.value,v):y.value))});return S.createElement(ne,{className:"recharts-polar-angle-axis-ticks"},p)}},{key:"render",value:function(){var n=this.props,i=n.ticks,a=n.radius,o=n.axisLine;return a<=0||!i||!i.length?null:S.createElement(ne,{className:te("recharts-polar-angle-axis",this.props.className)},o&&this.renderAxisLine(),this.renderTicks())}}],[{key:"renderTickItem",value:function(n,i,a){var o;return S.isValidElement(n)?o=S.cloneElement(n,i):X(n)?o=n(i):o=S.createElement(sr,Qt({},i,{className:"recharts-polar-angle-axis-tick-value"}),a),o}}])})(N.PureComponent);fo(ho,"displayName","PolarAngleAxis");fo(ho,"axisType","angleAxis");fo(ho,"defaultProps",{type:"category",angleAxisId:0,scale:"auto",cx:0,cy:0,orientation:"outer",axisLine:!0,tickLine:!0,tickSize:8,tick:!0,hide:!1,allowDuplicatedCategory:!0});var nl,Nb;function Pp(){if(Nb)return nl;Nb=1;var e=iw(),t=e(Object.getPrototypeOf,Object);return nl=t,nl}var il,qb;function LR(){if(qb)return il;qb=1;var e=kt(),t=Pp(),r=ft(),n="[object Object]",i=Function.prototype,a=Object.prototype,o=i.toString,u=a.hasOwnProperty,c=o.call(Object);function s(f){if(!r(f)||e(f)!=n)return!1;var l=t(f);if(l===null)return!0;var h=u.call(l,"constructor")&&l.constructor;return typeof h=="function"&&h instanceof h&&o.call(h)==c}return il=s,il}var BR=LR();const FR=ce(BR);var al,Lb;function UR(){if(Lb)return al;Lb=1;var e=kt(),t=ft(),r="[object Boolean]";function n(i){return i===!0||i===!1||t(i)&&e(i)==r}return al=n,al}var WR=UR();const zR=ce(WR);function ci(e){"@babel/helpers - typeof";return ci=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ci(e)}function xa(){return xa=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r0,from:{upperWidth:0,lowerWidth:0,height:h,x:c,y:s},to:{upperWidth:f,lowerWidth:l,height:h,x:c,y:s},duration:v,animationEasing:y,isActive:m},function(w){var O=w.upperWidth,g=w.lowerWidth,b=w.height,_=w.x,A=w.y;return S.createElement(bt,{canBegin:o>0,from:"0px ".concat(o===-1?1:o,"px"),to:"".concat(o,"px 0px"),attributeName:"strokeDasharray",begin:d,duration:v,easing:y},S.createElement("path",xa({},K(r,!0),{className:x,d:Wb(_,A,O,g,b),ref:n})))}):S.createElement("g",null,S.createElement("path",xa({},K(r,!0),{className:x,d:Wb(c,s,f,l,h)})))},tD=["option","shapeType","propTransformer","activeClassName","isActive"];function si(e){"@babel/helpers - typeof";return si=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},si(e)}function rD(e,t){if(e==null)return{};var r=nD(e,t),n,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function nD(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function zb(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function wa(e){for(var t=1;t0?Xe(w,"paddingAngle",0):0;if(g){var _=Ge(g.endAngle-g.startAngle,w.endAngle-w.startAngle),A=fe(fe({},w),{},{startAngle:x+b,endAngle:x+_(v)+b});d.push(A),x=A.endAngle}else{var P=w.endAngle,j=w.startAngle,T=Ge(0,P-j),E=T(v),M=fe(fe({},w),{},{startAngle:x+b,endAngle:x+E+b});d.push(M),x=M.endAngle}}),S.createElement(ne,null,n.renderSectorsStatically(d))})}},{key:"attachKeyboardHandlers",value:function(n){var i=this;n.onkeydown=function(a){if(!a.altKey)switch(a.key){case"ArrowLeft":{var o=++i.state.sectorToFocus%i.sectorRefs.length;i.sectorRefs[o].focus(),i.setState({sectorToFocus:o});break}case"ArrowRight":{var u=--i.state.sectorToFocus<0?i.sectorRefs.length-1:i.state.sectorToFocus%i.sectorRefs.length;i.sectorRefs[u].focus(),i.setState({sectorToFocus:u});break}case"Escape":{i.sectorRefs[i.state.sectorToFocus].blur(),i.setState({sectorToFocus:0});break}}}}},{key:"renderSectors",value:function(){var n=this.props,i=n.sectors,a=n.isAnimationActive,o=this.state.prevSectors;return a&&i&&i.length&&(!o||!Oi(o,i))?this.renderSectorsWithAnimation():this.renderSectorsStatically(i)}},{key:"componentDidMount",value:function(){this.pieRef&&this.attachKeyboardHandlers(this.pieRef)}},{key:"render",value:function(){var n=this,i=this.props,a=i.hide,o=i.sectors,u=i.className,c=i.label,s=i.cx,f=i.cy,l=i.innerRadius,h=i.outerRadius,p=i.isAnimationActive,y=this.state.isAnimationFinished;if(a||!o||!o.length||!q(s)||!q(f)||!q(l)||!q(h))return null;var v=te("recharts-pie",u);return S.createElement(ne,{tabIndex:this.props.rootTabIndex,className:v,ref:function(m){n.pieRef=m}},this.renderSectors(),c&&this.renderLabels(o),je.renderCallByParent(this.props,null,!1),(!p||y)&&Mt.renderCallByParent(this.props,o,!1))}}],[{key:"getDerivedStateFromProps",value:function(n,i){return i.prevIsAnimationActive!==n.isAnimationActive?{prevIsAnimationActive:n.isAnimationActive,prevAnimationId:n.animationId,curSectors:n.sectors,prevSectors:[],isAnimationFinished:!0}:n.isAnimationActive&&n.animationId!==i.prevAnimationId?{prevAnimationId:n.animationId,curSectors:n.sectors,prevSectors:i.curSectors,isAnimationFinished:!0}:n.sectors!==i.curSectors?{curSectors:n.sectors,isAnimationFinished:!0}:null}},{key:"getTextAnchor",value:function(n,i){return n>i?"start":n0&&Math.abs(c)>0){var s=Math.min(a,a+u),f=Math.max(a,a+u),l=Math.min(o,o+c),h=Math.max(o,o+c);return n>=s&&n<=f&&i>=l&&i<=h}return!1},Vk={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},Sp=function(t){var r=Ab(Ab({},Vk),t),n=N.useRef(),i=N.useState(-1),a=Lk(i,2),o=a[0],u=a[1];N.useEffect(function(){if(n.current&&n.current.getTotalLength)try{var O=n.current.getTotalLength();O&&u(O)}catch{}},[]);var c=r.x,s=r.y,f=r.width,l=r.height,h=r.radius,p=r.className,y=r.animationEasing,v=r.animationDuration,d=r.animationBegin,m=r.isAnimationActive,x=r.isUpdateAnimationActive;if(c!==+c||s!==+s||f!==+f||l!==+l||f===0||l===0)return null;var w=te("recharts-rectangle",p);return x?S.createElement(bt,{canBegin:o>0,from:{width:f,height:l,x:c,y:s},to:{width:f,height:l,x:c,y:s},duration:v,animationEasing:y,isActive:x},function(O){var g=O.width,b=O.height,_=O.x,A=O.y;return S.createElement(bt,{canBegin:o>0,from:"0px ".concat(o===-1?1:o,"px"),to:"".concat(o,"px 0px"),attributeName:"strokeDasharray",begin:d,duration:v,isActive:m,easing:y},S.createElement("path",ga({},K(r,!0),{className:w,d:Sb(_,A,g,b,h),ref:n})))}):S.createElement("path",ga({},K(r,!0),{className:w,d:Sb(c,s,f,l,h)}))},Xk=["points","className","baseLinePoints","connectNulls"];function Ar(){return Ar=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Zk(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function Pb(e){return tR(e)||eR(e)||Qk(e)||Jk()}function Jk(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Qk(e,t){if(e){if(typeof e=="string")return Jf(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if(r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set")return Array.from(e);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Jf(e,t)}}function eR(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function tR(e){if(Array.isArray(e))return Jf(e)}function Jf(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&arguments[0]!==void 0?arguments[0]:[],r=[[]];return t.forEach(function(n){Tb(n)?r[r.length-1].push(n):r[r.length-1].length>0&&r.push([])}),Tb(t[0])&&r[r.length-1].push(t[0]),r[r.length-1].length<=0&&(r=r.slice(0,-1)),r},Cn=function(t,r){var n=rR(t);r&&(n=[n.reduce(function(a,o){return[].concat(Pb(a),Pb(o))},[])]);var i=n.map(function(a){return a.reduce(function(o,u,c){return"".concat(o).concat(c===0?"M":"L").concat(u.x,",").concat(u.y)},"")}).join("");return n.length===1?"".concat(i,"Z"):i},nR=function(t,r,n){var i=Cn(t,n);return"".concat(i.slice(-1)==="Z"?i.slice(0,-1):i,"L").concat(Cn(r.reverse(),n).slice(1))},iR=function(t){var r=t.points,n=t.className,i=t.baseLinePoints,a=t.connectNulls,o=Yk(t,Xk);if(!r||!r.length)return null;var u=te("recharts-polygon",n);if(i&&i.length){var c=o.stroke&&o.stroke!=="none",s=nR(r,i,a);return S.createElement("g",{className:u},S.createElement("path",Ar({},K(o,!0),{fill:s.slice(-1)==="Z"?o.fill:"none",stroke:"none",d:s})),c?S.createElement("path",Ar({},K(o,!0),{fill:"none",d:Cn(r,a)})):null,c?S.createElement("path",Ar({},K(o,!0),{fill:"none",d:Cn(i,a)})):null)}var f=Cn(r,a);return S.createElement("path",Ar({},K(o,!0),{fill:f.slice(-1)==="Z"?o.fill:"none",className:u,d:f}))};function Qf(){return Qf=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function fR(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}var hR=function(t,r,n,i,a,o){return"M".concat(t,",").concat(a,"v").concat(i,"M").concat(o,",").concat(r,"h").concat(n)},pR=function(t){var r=t.x,n=r===void 0?0:r,i=t.y,a=i===void 0?0:i,o=t.top,u=o===void 0?0:o,c=t.left,s=c===void 0?0:c,f=t.width,l=f===void 0?0:f,h=t.height,p=h===void 0?0:h,y=t.className,v=lR(t,aR),d=oR({x:n,y:a,top:u,left:s,width:l,height:p},v);return!q(n)||!q(a)||!q(l)||!q(p)||!q(u)||!q(s)?null:S.createElement("path",eh({},K(d,!0),{className:te("recharts-cross",y),d:hR(n,a,l,p,u,s)}))},tl,jb;function dR(){if(jb)return tl;jb=1;var e=no(),t=cO(),r=xt();function n(i,a){return i&&i.length?e(i,r(a,2),t):void 0}return tl=n,tl}var vR=dR();const yR=ce(vR);var rl,Mb;function gR(){if(Mb)return rl;Mb=1;var e=no(),t=xt(),r=sO();function n(i,a){return i&&i.length?e(i,t(a,2),r):void 0}return rl=n,rl}var mR=gR();const bR=ce(mR);var xR=["cx","cy","angle","ticks","axisLine"],wR=["ticks","tick","angle","tickFormatter","stroke"];function Ur(e){"@babel/helpers - typeof";return Ur=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Ur(e)}function kn(){return kn=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function OR(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function _R(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Cb(e,t){for(var r=0;rDb?o=i==="outer"?"start":"end":a<-Db?o=i==="outer"?"end":"start":o="middle",o}},{key:"renderAxisLine",value:function(){var n=this.props,i=n.cx,a=n.cy,o=n.radius,u=n.axisLine,c=n.axisLineType,s=Yt(Yt({},K(this.props,!1)),{},{fill:"none"},K(u,!1));if(c==="circle")return S.createElement(co,Qt({className:"recharts-polar-angle-axis-line"},s,{cx:i,cy:a,r:o}));var f=this.props.ticks,l=f.map(function(h){return pe(i,a,o,h.coordinate)});return S.createElement(iR,Qt({className:"recharts-polar-angle-axis-line"},s,{points:l}))}},{key:"renderTicks",value:function(){var n=this,i=this.props,a=i.ticks,o=i.tick,u=i.tickLine,c=i.tickFormatter,s=i.stroke,f=K(this.props,!1),l=K(o,!1),h=Yt(Yt({},f),{},{fill:"none"},K(u,!1)),p=a.map(function(y,v){var d=n.getTickLineCoord(y),m=n.getTickTextAnchor(y),x=Yt(Yt(Yt({textAnchor:m},f),{},{stroke:"none",fill:s},l),{},{index:v,payload:y,x:d.x2,y:d.y2});return S.createElement(ne,Qt({className:te("recharts-polar-angle-axis-tick",NO(o)),key:"tick-".concat(y.coordinate)},cr(n.props,y,v)),u&&S.createElement("line",Qt({className:"recharts-polar-angle-axis-tick-line"},h,d)),o&&t.renderTickItem(o,x,c?c(y.value,v):y.value))});return S.createElement(ne,{className:"recharts-polar-angle-axis-ticks"},p)}},{key:"render",value:function(){var n=this.props,i=n.ticks,a=n.radius,o=n.axisLine;return a<=0||!i||!i.length?null:S.createElement(ne,{className:te("recharts-polar-angle-axis",this.props.className)},o&&this.renderAxisLine(),this.renderTicks())}}],[{key:"renderTickItem",value:function(n,i,a){var o;return S.isValidElement(n)?o=S.cloneElement(n,i):X(n)?o=n(i):o=S.createElement(sr,Qt({},i,{className:"recharts-polar-angle-axis-tick-value"}),a),o}}])})(N.PureComponent);fo(ho,"displayName","PolarAngleAxis");fo(ho,"axisType","angleAxis");fo(ho,"defaultProps",{type:"category",angleAxisId:0,scale:"auto",cx:0,cy:0,orientation:"outer",axisLine:!0,tickLine:!0,tickSize:8,tick:!0,hide:!1,allowDuplicatedCategory:!0});var nl,Nb;function Pp(){if(Nb)return nl;Nb=1;var e=nw(),t=e(Object.getPrototypeOf,Object);return nl=t,nl}var il,qb;function qR(){if(qb)return il;qb=1;var e=kt(),t=Pp(),r=ft(),n="[object Object]",i=Function.prototype,a=Object.prototype,o=i.toString,u=a.hasOwnProperty,c=o.call(Object);function s(f){if(!r(f)||e(f)!=n)return!1;var l=t(f);if(l===null)return!0;var h=u.call(l,"constructor")&&l.constructor;return typeof h=="function"&&h instanceof h&&o.call(h)==c}return il=s,il}var LR=qR();const BR=ce(LR);var al,Lb;function FR(){if(Lb)return al;Lb=1;var e=kt(),t=ft(),r="[object Boolean]";function n(i){return i===!0||i===!1||t(i)&&e(i)==r}return al=n,al}var UR=FR();const WR=ce(UR);function ci(e){"@babel/helpers - typeof";return ci=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ci(e)}function xa(){return xa=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r0,from:{upperWidth:0,lowerWidth:0,height:h,x:c,y:s},to:{upperWidth:f,lowerWidth:l,height:h,x:c,y:s},duration:v,animationEasing:y,isActive:m},function(w){var O=w.upperWidth,g=w.lowerWidth,b=w.height,_=w.x,A=w.y;return S.createElement(bt,{canBegin:o>0,from:"0px ".concat(o===-1?1:o,"px"),to:"".concat(o,"px 0px"),attributeName:"strokeDasharray",begin:d,duration:v,easing:y},S.createElement("path",xa({},K(r,!0),{className:x,d:Wb(_,A,O,g,b),ref:n})))}):S.createElement("g",null,S.createElement("path",xa({},K(r,!0),{className:x,d:Wb(c,s,f,l,h)})))},eD=["option","shapeType","propTransformer","activeClassName","isActive"];function si(e){"@babel/helpers - typeof";return si=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},si(e)}function tD(e,t){if(e==null)return{};var r=rD(e,t),n,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function rD(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function zb(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function wa(e){for(var t=1;t0?Xe(w,"paddingAngle",0):0;if(g){var _=Ge(g.endAngle-g.startAngle,w.endAngle-w.startAngle),A=fe(fe({},w),{},{startAngle:x+b,endAngle:x+_(v)+b});d.push(A),x=A.endAngle}else{var P=w.endAngle,j=w.startAngle,T=Ge(0,P-j),E=T(v),M=fe(fe({},w),{},{startAngle:x+b,endAngle:x+E+b});d.push(M),x=M.endAngle}}),S.createElement(ne,null,n.renderSectorsStatically(d))})}},{key:"attachKeyboardHandlers",value:function(n){var i=this;n.onkeydown=function(a){if(!a.altKey)switch(a.key){case"ArrowLeft":{var o=++i.state.sectorToFocus%i.sectorRefs.length;i.sectorRefs[o].focus(),i.setState({sectorToFocus:o});break}case"ArrowRight":{var u=--i.state.sectorToFocus<0?i.sectorRefs.length-1:i.state.sectorToFocus%i.sectorRefs.length;i.sectorRefs[u].focus(),i.setState({sectorToFocus:u});break}case"Escape":{i.sectorRefs[i.state.sectorToFocus].blur(),i.setState({sectorToFocus:0});break}}}}},{key:"renderSectors",value:function(){var n=this.props,i=n.sectors,a=n.isAnimationActive,o=this.state.prevSectors;return a&&i&&i.length&&(!o||!Oi(o,i))?this.renderSectorsWithAnimation():this.renderSectorsStatically(i)}},{key:"componentDidMount",value:function(){this.pieRef&&this.attachKeyboardHandlers(this.pieRef)}},{key:"render",value:function(){var n=this,i=this.props,a=i.hide,o=i.sectors,u=i.className,c=i.label,s=i.cx,f=i.cy,l=i.innerRadius,h=i.outerRadius,p=i.isAnimationActive,y=this.state.isAnimationFinished;if(a||!o||!o.length||!q(s)||!q(f)||!q(l)||!q(h))return null;var v=te("recharts-pie",u);return S.createElement(ne,{tabIndex:this.props.rootTabIndex,className:v,ref:function(m){n.pieRef=m}},this.renderSectors(),c&&this.renderLabels(o),je.renderCallByParent(this.props,null,!1),(!p||y)&&Mt.renderCallByParent(this.props,o,!1))}}],[{key:"getDerivedStateFromProps",value:function(n,i){return i.prevIsAnimationActive!==n.isAnimationActive?{prevIsAnimationActive:n.isAnimationActive,prevAnimationId:n.animationId,curSectors:n.sectors,prevSectors:[],isAnimationFinished:!0}:n.isAnimationActive&&n.animationId!==i.prevAnimationId?{prevAnimationId:n.animationId,curSectors:n.sectors,prevSectors:i.curSectors,isAnimationFinished:!0}:n.sectors!==i.curSectors?{curSectors:n.sectors,isAnimationFinished:!0}:null}},{key:"getTextAnchor",value:function(n,i){return n>i?"start":n=360?x:x-1)*c,O=d-x*p-w,g=i.reduce(function(A,P){var j=Ae(P,m,0);return A+(q(j)?j:0)},0),b;if(g>0){var _;b=i.map(function(A,P){var j=Ae(A,m,0),T=Ae(A,f,P),E=(q(j)?j:0)/g,M;P?M=_.endAngle+qe(v)*c*(j!==0?1:0):M=o;var I=M+qe(v)*((j!==0?p:0)+E*O),$=(M+I)/2,k=(y.innerRadius+y.outerRadius)/2,R=[{name:T,value:j,payload:A,dataKey:m,type:h}],L=pe(y.cx,y.cy,k,$);return _=fe(fe(fe({percent:E,cornerRadius:a,name:T,tooltipPayload:R,midAngle:$,middleRadius:k,tooltipPosition:L},A),y),{},{value:Ae(A,m),startAngle:M,endAngle:I,payload:A,paddingAngle:qe(v)*c}),_})}return fe(fe({},y),{},{sectors:b,data:i})});var ol,Vb;function AD(){if(Vb)return ol;Vb=1;var e=Math.ceil,t=Math.max;function r(n,i,a,o){for(var u=-1,c=t(e((i-n)/(a||1)),0),s=Array(c);c--;)s[o?c:++u]=n,n+=a;return s}return ol=r,ol}var ul,Xb;function r_(){if(Xb)return ul;Xb=1;var e=Ow(),t=1/0,r=17976931348623157e292;function n(i){if(!i)return i===0?i:0;if(i=e(i),i===t||i===-t){var a=i<0?-1:1;return a*r}return i===i?i:0}return ul=n,ul}var cl,Yb;function SD(){if(Yb)return cl;Yb=1;var e=AD(),t=Ya(),r=r_();function n(i){return function(a,o,u){return u&&typeof u!="number"&&t(a,o,u)&&(o=u=void 0),a=r(a),o===void 0?(o=a,a=0):o=r(o),u=u===void 0?a0&&n.handleDrag(i.changedTouches[0])}),Ke(n,"handleDragEnd",function(){n.setState({isTravellerMoving:!1,isSlideMoving:!1},function(){var i=n.props,a=i.endIndex,o=i.onDragEnd,u=i.startIndex;o?.({endIndex:a,startIndex:u})}),n.detachDragEndListener()}),Ke(n,"handleLeaveWrapper",function(){(n.state.isTravellerMoving||n.state.isSlideMoving)&&(n.leaveTimer=window.setTimeout(n.handleDragEnd,n.props.leaveTimeOut))}),Ke(n,"handleEnterSlideOrTraveller",function(){n.setState({isTextActive:!0})}),Ke(n,"handleLeaveSlideOrTraveller",function(){n.setState({isTextActive:!1})}),Ke(n,"handleSlideDragStart",function(i){var a=r0(i)?i.changedTouches[0]:i;n.setState({isTravellerMoving:!1,isSlideMoving:!0,slideMoveStartX:a.pageX}),n.attachDragEndListener()}),n.travellerDragStartHandlers={startX:n.handleTravellerDragStart.bind(n,"startX"),endX:n.handleTravellerDragStart.bind(n,"endX")},n.state={},n}return ND(t,e),CD(t,[{key:"componentWillUnmount",value:function(){this.leaveTimer&&(clearTimeout(this.leaveTimer),this.leaveTimer=null),this.detachDragEndListener()}},{key:"getIndex",value:function(n){var i=n.startX,a=n.endX,o=this.state.scaleValues,u=this.props,c=u.gap,s=u.data,f=s.length-1,l=Math.min(i,a),h=Math.max(i,a),p=t.getIndexInRange(o,l),y=t.getIndexInRange(o,h);return{startIndex:p-p%c,endIndex:y===f?f:y-y%c}}},{key:"getTextOfTick",value:function(n){var i=this.props,a=i.data,o=i.tickFormatter,u=i.dataKey,c=Ae(a[n],u,n);return X(o)?o(c,n):c}},{key:"attachDragEndListener",value:function(){window.addEventListener("mouseup",this.handleDragEnd,!0),window.addEventListener("touchend",this.handleDragEnd,!0),window.addEventListener("mousemove",this.handleDrag,!0)}},{key:"detachDragEndListener",value:function(){window.removeEventListener("mouseup",this.handleDragEnd,!0),window.removeEventListener("touchend",this.handleDragEnd,!0),window.removeEventListener("mousemove",this.handleDrag,!0)}},{key:"handleSlideDrag",value:function(n){var i=this.state,a=i.slideMoveStartX,o=i.startX,u=i.endX,c=this.props,s=c.x,f=c.width,l=c.travellerWidth,h=c.startIndex,p=c.endIndex,y=c.onChange,v=n.pageX-a;v>0?v=Math.min(v,s+f-l-u,s+f-l-o):v<0&&(v=Math.max(v,s-o,s-u));var d=this.getIndex({startX:o+v,endX:u+v});(d.startIndex!==h||d.endIndex!==p)&&y&&y(d),this.setState({startX:o+v,endX:u+v,slideMoveStartX:n.pageX})}},{key:"handleTravellerDragStart",value:function(n,i){var a=r0(i)?i.changedTouches[0]:i;this.setState({isSlideMoving:!1,isTravellerMoving:!0,movingTravellerId:n,brushMoveStartX:a.pageX}),this.attachDragEndListener()}},{key:"handleTravellerMove",value:function(n){var i=this.state,a=i.brushMoveStartX,o=i.movingTravellerId,u=i.endX,c=i.startX,s=this.state[o],f=this.props,l=f.x,h=f.width,p=f.travellerWidth,y=f.onChange,v=f.gap,d=f.data,m={startX:this.state.startX,endX:this.state.endX},x=n.pageX-a;x>0?x=Math.min(x,l+h-p-s):x<0&&(x=Math.max(x,l-s)),m[o]=s+x;var w=this.getIndex(m),O=w.startIndex,g=w.endIndex,b=function(){var A=d.length-1;return o==="startX"&&(u>c?O%v===0:g%v===0)||uc?g%v===0:O%v===0)||u>c&&g===A};this.setState(Ke(Ke({},o,s+x),"brushMoveStartX",n.pageX),function(){y&&b()&&y(w)})}},{key:"handleTravellerMoveKeyboard",value:function(n,i){var a=this,o=this.state,u=o.scaleValues,c=o.startX,s=o.endX,f=this.state[i],l=u.indexOf(f);if(l!==-1){var h=l+n;if(!(h===-1||h>=u.length)){var p=u[h];i==="startX"&&p>=s||i==="endX"&&p<=c||this.setState(Ke({},i,p),function(){a.props.onChange(a.getIndex({startX:a.state.startX,endX:a.state.endX}))})}}}},{key:"renderBackground",value:function(){var n=this.props,i=n.x,a=n.y,o=n.width,u=n.height,c=n.fill,s=n.stroke;return S.createElement("rect",{stroke:s,fill:c,x:i,y:a,width:o,height:u})}},{key:"renderPanorama",value:function(){var n=this.props,i=n.x,a=n.y,o=n.width,u=n.height,c=n.data,s=n.children,f=n.padding,l=N.Children.only(s);return l?S.cloneElement(l,{x:i,y:a,width:o,height:u,margin:f,compact:!0,data:c}):null}},{key:"renderTravellerLayer",value:function(n,i){var a,o,u=this,c=this.props,s=c.y,f=c.travellerWidth,l=c.height,h=c.traveller,p=c.ariaLabel,y=c.data,v=c.startIndex,d=c.endIndex,m=Math.max(n,this.props.x),x=ll(ll({},K(this.props,!1)),{},{x:m,y:s,width:f,height:l}),w=p||"Min value: ".concat((a=y[v])===null||a===void 0?void 0:a.name,", Max value: ").concat((o=y[d])===null||o===void 0?void 0:o.name);return S.createElement(ne,{tabIndex:0,role:"slider","aria-label":w,"aria-valuenow":n,className:"recharts-brush-traveller",onMouseEnter:this.handleEnterSlideOrTraveller,onMouseLeave:this.handleLeaveSlideOrTraveller,onMouseDown:this.travellerDragStartHandlers[i],onTouchStart:this.travellerDragStartHandlers[i],onKeyDown:function(g){["ArrowLeft","ArrowRight"].includes(g.key)&&(g.preventDefault(),g.stopPropagation(),u.handleTravellerMoveKeyboard(g.key==="ArrowRight"?1:-1,i))},onFocus:function(){u.setState({isTravellerFocused:!0})},onBlur:function(){u.setState({isTravellerFocused:!1})},style:{cursor:"col-resize"}},t.renderTraveller(h,x))}},{key:"renderSlide",value:function(n,i){var a=this.props,o=a.y,u=a.height,c=a.stroke,s=a.travellerWidth,f=Math.min(n,i)+s,l=Math.max(Math.abs(i-n)-s,0);return S.createElement("rect",{className:"recharts-brush-slide",onMouseEnter:this.handleEnterSlideOrTraveller,onMouseLeave:this.handleLeaveSlideOrTraveller,onMouseDown:this.handleSlideDragStart,onTouchStart:this.handleSlideDragStart,style:{cursor:"move"},stroke:"none",fill:c,fillOpacity:.2,x:f,y:o,width:l,height:u})}},{key:"renderText",value:function(){var n=this.props,i=n.startIndex,a=n.endIndex,o=n.y,u=n.height,c=n.travellerWidth,s=n.stroke,f=this.state,l=f.startX,h=f.endX,p=5,y={pointerEvents:"none",fill:s};return S.createElement(ne,{className:"recharts-brush-texts"},S.createElement(sr,Aa({textAnchor:"end",verticalAnchor:"middle",x:Math.min(l,h)-p,y:o+u/2},y),this.getTextOfTick(i)),S.createElement(sr,Aa({textAnchor:"start",verticalAnchor:"middle",x:Math.max(l,h)+c+p,y:o+u/2},y),this.getTextOfTick(a)))}},{key:"render",value:function(){var n=this.props,i=n.data,a=n.className,o=n.children,u=n.x,c=n.y,s=n.width,f=n.height,l=n.alwaysShowText,h=this.state,p=h.startX,y=h.endX,v=h.isTextActive,d=h.isSlideMoving,m=h.isTravellerMoving,x=h.isTravellerFocused;if(!i||!i.length||!q(u)||!q(c)||!q(s)||!q(f)||s<=0||f<=0)return null;var w=te("recharts-brush",a),O=S.Children.count(o)===1,g=$D("userSelect","none");return S.createElement(ne,{className:w,onMouseLeave:this.handleLeaveWrapper,onTouchMove:this.handleTouchMove,style:g},this.renderBackground(),O&&this.renderPanorama(),this.renderSlide(p,y),this.renderTravellerLayer(p,"startX"),this.renderTravellerLayer(y,"endX"),(v||d||m||x||l)&&this.renderText())}}],[{key:"renderDefaultTraveller",value:function(n){var i=n.x,a=n.y,o=n.width,u=n.height,c=n.stroke,s=Math.floor(a+u/2)-1;return S.createElement(S.Fragment,null,S.createElement("rect",{x:i,y:a,width:o,height:u,fill:c,stroke:"none"}),S.createElement("line",{x1:i+1,y1:s,x2:i+o-1,y2:s,fill:"none",stroke:"#fff"}),S.createElement("line",{x1:i+1,y1:s+2,x2:i+o-1,y2:s+2,fill:"none",stroke:"#fff"}))}},{key:"renderTraveller",value:function(n,i){var a;return S.isValidElement(n)?a=S.cloneElement(n,i):X(n)?a=n(i):a=t.renderDefaultTraveller(i),a}},{key:"getDerivedStateFromProps",value:function(n,i){var a=n.data,o=n.width,u=n.x,c=n.travellerWidth,s=n.updateId,f=n.startIndex,l=n.endIndex;if(a!==i.prevData||s!==i.prevUpdateId)return ll({prevData:a,prevTravellerWidth:c,prevUpdateId:s,prevX:u,prevWidth:o},a&&a.length?LD({data:a,width:o,x:u,travellerWidth:c,startIndex:f,endIndex:l}):{scale:null,scaleValues:null});if(i.scale&&(o!==i.prevWidth||u!==i.prevX||c!==i.prevTravellerWidth)){i.scale.range([u,u+o-c]);var h=i.scale.domain().map(function(p){return i.scale(p)});return{prevData:a,prevTravellerWidth:c,prevUpdateId:s,prevX:u,prevWidth:o,startX:i.scale(n.startIndex),endX:i.scale(n.endIndex),scaleValues:h}}return null}},{key:"getIndexInRange",value:function(n,i){for(var a=n.length,o=0,u=a-1;u-o>1;){var c=Math.floor((o+u)/2);n[c]>i?u=c:o=c}return i>=n[u]?u:o}}])})(N.PureComponent);Ke(Hr,"displayName","Brush");Ke(Hr,"defaultProps",{height:40,travellerWidth:5,gap:1,fill:"#fff",stroke:"#666",padding:{top:1,right:1,bottom:1,left:1},leaveTimeOut:1e3,alwaysShowText:!1});var fl,n0;function BD(){if(n0)return fl;n0=1;var e=Yh();function t(r,n){var i;return e(r,function(a,o,u){return i=n(a,o,u),!i}),!!i}return fl=t,fl}var hl,i0;function FD(){if(i0)return hl;i0=1;var e=Yx(),t=xt(),r=BD(),n=Fe(),i=Ya();function a(o,u,c){var s=n(o)?e:r;return c&&i(o,u,c)&&(u=void 0),s(o,t(u,3))}return hl=a,hl}var UD=FD();const WD=ce(UD);var gt=function(t,r){var n=t.alwaysShow,i=t.ifOverflow;return n&&(i="extendDomain"),i===r},pl,a0;function Tp(){if(a0)return pl;a0=1;var e=yw();function t(r,n,i){n=="__proto__"&&e?e(r,n,{configurable:!0,enumerable:!0,value:i,writable:!0}):r[n]=i}return pl=t,pl}var dl,o0;function zD(){if(o0)return dl;o0=1;var e=Tp(),t=pw(),r=xt();function n(i,a){var o={};return a=r(a,3),t(i,function(u,c,s){e(o,c,a(u,c,s))}),o}return dl=n,dl}var KD=zD();const HD=ce(KD);var vl,u0;function GD(){if(u0)return vl;u0=1;function e(t,r){for(var n=-1,i=t==null?0:t.length;++n=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function rN(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function nN(e,t){var r=e.x,n=e.y,i=tN(e,ZD),a="".concat(r),o=parseInt(a,10),u="".concat(n),c=parseInt(u,10),s="".concat(t.height||i.height),f=parseInt(s,10),l="".concat(t.width||i.width),h=parseInt(l,10);return An(An(An(An(An({},t),i),o?{x:o}:{}),c?{y:c}:{}),{},{height:f,width:h,name:t.name,radius:t.radius})}function f0(e){return S.createElement(QO,ah({shapeType:"rectangle",propTransformer:nN,activeClassName:"recharts-active-bar"},e))}var iN=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return function(n,i){if(typeof t=="number")return t;var a=q(n)||D1(n);return a?t(n,i):(a||or(!1),r)}},aN=["value","background"],u_;function Gr(e){"@babel/helpers - typeof";return Gr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Gr(e)}function oN(e,t){if(e==null)return{};var r=uN(e,t),n,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function uN(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function Pa(){return Pa=Object.assign?Object.assign.bind():function(e){for(var t=1;t0&&Math.abs($)0&&Math.abs(I)0&&(M=Math.min((se||0)-(I[me-1]||0),M))}),Number.isFinite(M)){var $=M/E,k=v.layout==="vertical"?n.height:n.width;if(v.padding==="gap"&&(_=$*k/2),v.padding==="no-gap"){var R=Le(t.barCategoryGap,$*k),L=$*k/2;_=L-R-(L-R)/k*R}}}i==="xAxis"?A=[n.left+(w.left||0)+(_||0),n.left+n.width-(w.right||0)-(_||0)]:i==="yAxis"?A=c==="horizontal"?[n.top+n.height-(w.bottom||0),n.top+(w.top||0)]:[n.top+(w.top||0)+(_||0),n.top+n.height-(w.bottom||0)-(_||0)]:A=v.range,g&&(A=[A[1],A[0]]);var B=$O(v,a,h),z=B.scale,H=B.realScaleType;z.domain(m).range(A),IO(z);var U=CO(z,ot(ot({},v),{},{realScaleType:H}));i==="xAxis"?(T=d==="top"&&!O||d==="bottom"&&O,P=n.left,j=l[b]-T*v.height):i==="yAxis"&&(T=d==="left"&&!O||d==="right"&&O,P=l[b]-T*v.width,j=n.top);var G=ot(ot(ot({},v),U),{},{realScaleType:H,x:P,y:j,scale:z,width:i==="xAxis"?n.width:v.width,height:i==="yAxis"?n.height:v.height});return G.bandSize=la(G,U),!v.hide&&i==="xAxis"?l[b]+=(T?-1:1)*G.height:v.hide||(l[b]+=(T?-1:1)*G.width),ot(ot({},p),{},yo({},y,G))},{})},h_=function(t,r){var n=t.x,i=t.y,a=r.x,o=r.y;return{x:Math.min(n,a),y:Math.min(i,o),width:Math.abs(a-n),height:Math.abs(o-i)}},mN=function(t){var r=t.x1,n=t.y1,i=t.x2,a=t.y2;return h_({x:r,y:n},{x:i,y:a})},p_=(function(){function e(t){vN(this,e),this.scale=t}return yN(e,[{key:"domain",get:function(){return this.scale.domain}},{key:"range",get:function(){return this.scale.range}},{key:"rangeMin",get:function(){return this.range()[0]}},{key:"rangeMax",get:function(){return this.range()[1]}},{key:"bandwidth",get:function(){return this.scale.bandwidth}},{key:"apply",value:function(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=n.bandAware,a=n.position;if(r!==void 0){if(a)switch(a){case"start":return this.scale(r);case"middle":{var o=this.bandwidth?this.bandwidth()/2:0;return this.scale(r)+o}case"end":{var u=this.bandwidth?this.bandwidth():0;return this.scale(r)+u}default:return this.scale(r)}if(i){var c=this.bandwidth?this.bandwidth()/2:0;return this.scale(r)+c}return this.scale(r)}}},{key:"isInRange",value:function(r){var n=this.range(),i=n[0],a=n[n.length-1];return i<=a?r>=i&&r<=a:r>=a&&r<=i}}],[{key:"create",value:function(r){return new e(r)}}])})();yo(p_,"EPS",1e-4);var Ep=function(t){var r=Object.keys(t).reduce(function(n,i){return ot(ot({},n),{},yo({},i,p_.create(t[i])))},{});return ot(ot({},r),{},{apply:function(i){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=a.bandAware,u=a.position;return HD(i,function(c,s){return r[s].apply(c,{bandAware:o,position:u})})},isInRange:function(i){return o_(i,function(a,o){return r[o].isInRange(a)})}})};function bN(e){return(e%180+180)%180}var xN=function(t){var r=t.width,n=t.height,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,a=bN(i),o=a*Math.PI/180,u=Math.atan(n/r),c=o>u&&o-1?c[s?a[f]:f]:void 0}}return ml=n,ml}var bl,g0;function ON(){if(g0)return bl;g0=1;var e=r_();function t(r){var n=e(r),i=n%1;return n===n?i?n-i:n:0}return bl=t,bl}var xl,m0;function _N(){if(m0)return xl;m0=1;var e=sw(),t=xt(),r=ON(),n=Math.max;function i(a,o,u){var c=a==null?0:a.length;if(!c)return-1;var s=u==null?0:r(u);return s<0&&(s=n(c+s,0)),e(a,t(o,3),s)}return xl=i,xl}var wl,b0;function AN(){if(b0)return wl;b0=1;var e=wN(),t=_N(),r=e(t);return wl=r,wl}var SN=AN();const PN=ce(SN);var TN=Ax();const EN=ce(TN);var jN=EN(function(e){return{x:e.left,y:e.top,width:e.width,height:e.height}},function(e){return["l",e.left,"t",e.top,"w",e.width,"h",e.height].join("")}),jp=N.createContext(void 0),Mp=N.createContext(void 0),d_=N.createContext(void 0),v_=N.createContext({}),y_=N.createContext(void 0),g_=N.createContext(0),m_=N.createContext(0),x0=function(t){var r=t.state,n=r.xAxisMap,i=r.yAxisMap,a=r.offset,o=t.clipPathId,u=t.children,c=t.width,s=t.height,f=jN(a);return S.createElement(jp.Provider,{value:n},S.createElement(Mp.Provider,{value:i},S.createElement(v_.Provider,{value:a},S.createElement(d_.Provider,{value:f},S.createElement(y_.Provider,{value:o},S.createElement(g_.Provider,{value:s},S.createElement(m_.Provider,{value:c},u)))))))},MN=function(){return N.useContext(y_)},b_=function(t){var r=N.useContext(jp);r==null&&or(!1);var n=r[t];return n==null&&or(!1),n},$N=function(){var t=N.useContext(jp);return qt(t)},IN=function(){var t=N.useContext(Mp),r=PN(t,function(n){return o_(n.domain,Number.isFinite)});return r||qt(t)},x_=function(t){var r=N.useContext(Mp);r==null&&or(!1);var n=r[t];return n==null&&or(!1),n},CN=function(){var t=N.useContext(d_);return t},kN=function(){return N.useContext(v_)},$p=function(){return N.useContext(m_)},Ip=function(){return N.useContext(g_)};function Vr(e){"@babel/helpers - typeof";return Vr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Vr(e)}function RN(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function DN(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);re*i)return!1;var a=r();return e*(t-e*a/2-n)>=0&&e*(t+e*a/2-i)<=0}function gq(e,t){return T_(e,t+1)}function mq(e,t,r,n,i){for(var a=(n||[]).slice(),o=t.start,u=t.end,c=0,s=1,f=o,l=function(){var y=n?.[c];if(y===void 0)return{v:T_(n,s)};var v=c,d,m=function(){return d===void 0&&(d=r(y,v)),d},x=y.coordinate,w=c===0||$a(e,x,m,f,u);w||(c=0,f=o,s+=1),w&&(f=x+e*(m()/2+i),c+=s)},h;s<=a.length;)if(h=l(),h)return h.v;return[]}function di(e){"@babel/helpers - typeof";return di=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},di(e)}function E0(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function ke(e){for(var t=1;t0?p.coordinate-d*e:p.coordinate})}else a[h]=p=ke(ke({},p),{},{tickCoord:p.coordinate});var m=$a(e,p.tickCoord,v,u,c);m&&(c=p.tickCoord-e*(v()/2+i),a[h]=ke(ke({},p),{},{isShow:!0}))},f=o-1;f>=0;f--)s(f);return a}function _q(e,t,r,n,i,a){var o=(n||[]).slice(),u=o.length,c=t.start,s=t.end;if(a){var f=n[u-1],l=r(f,u-1),h=e*(f.coordinate+e*l/2-s);o[u-1]=f=ke(ke({},f),{},{tickCoord:h>0?f.coordinate-h*e:f.coordinate});var p=$a(e,f.tickCoord,function(){return l},c,s);p&&(s=f.tickCoord-e*(l/2+i),o[u-1]=ke(ke({},f),{},{isShow:!0}))}for(var y=a?u-1:u,v=function(x){var w=o[x],O,g=function(){return O===void 0&&(O=r(w,x)),O};if(x===0){var b=e*(w.coordinate-e*g()/2-c);o[x]=w=ke(ke({},w),{},{tickCoord:b<0?w.coordinate-b*e:w.coordinate})}else o[x]=w=ke(ke({},w),{},{tickCoord:w.coordinate});var _=$a(e,w.tickCoord,g,c,s);_&&(c=w.tickCoord+e*(g()/2+i),o[x]=ke(ke({},w),{},{isShow:!0}))},d=0;d=2?qe(i[1].coordinate-i[0].coordinate):1,m=yq(a,d,p);return c==="equidistantPreserveStart"?mq(d,m,v,i,o):(c==="preserveStart"||c==="preserveStartEnd"?h=_q(d,m,v,i,o,c==="preserveStartEnd"):h=Oq(d,m,v,i,o),h.filter(function(x){return x.isShow}))}var Aq=["viewBox"],Sq=["viewBox"],Pq=["ticks"];function Zr(e){"@babel/helpers - typeof";return Zr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Zr(e)}function Pr(){return Pr=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Tq(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function Eq(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function M0(e,t){for(var r=0;r0?c(this.props):c(p)),o<=0||u<=0||!y||!y.length?null:S.createElement(ne,{className:te("recharts-cartesian-axis",s),ref:function(d){n.layerReference=d}},a&&this.renderAxisLine(),this.renderTicks(y,this.state.fontSize,this.state.letterSpacing),je.renderCallByParent(this.props))}}],[{key:"renderTickItem",value:function(n,i,a){var o,u=te(i.className,"recharts-cartesian-axis-tick-value");return S.isValidElement(n)?o=S.cloneElement(n,Oe(Oe({},i),{},{className:u})):X(n)?o=n(Oe(Oe({},i),{},{className:u})):o=S.createElement(sr,Pr({},i,{className:"recharts-cartesian-axis-tick-value"}),a),o}}])})(N.Component);Dp(vn,"displayName","CartesianAxis");Dp(vn,"defaultProps",{x:0,y:0,width:0,height:0,viewBox:{x:0,y:0,width:0,height:0},orientation:"bottom",ticks:[],stroke:"#666",tickLine:!0,axisLine:!0,tick:!0,mirror:!1,minTickGap:5,tickSize:6,tickMargin:2,interval:"preserveEnd"});var Rq=["x1","y1","x2","y2","key"],Dq=["offset"];function fr(e){"@babel/helpers - typeof";return fr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},fr(e)}function $0(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function Re(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Bq(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}var Fq=function(t){var r=t.fill;if(!r||r==="none")return null;var n=t.fillOpacity,i=t.x,a=t.y,o=t.width,u=t.height,c=t.ry;return S.createElement("rect",{x:i,y:a,ry:c,width:o,height:u,stroke:"none",fill:r,fillOpacity:n,className:"recharts-cartesian-grid-bg"})};function M_(e,t){var r;if(S.isValidElement(e))r=S.cloneElement(e,t);else if(X(e))r=e(t);else{var n=t.x1,i=t.y1,a=t.x2,o=t.y2,u=t.key,c=I0(t,Rq),s=K(c,!1);s.offset;var f=I0(s,Dq);r=S.createElement("line",nr({},f,{x1:n,y1:i,x2:a,y2:o,fill:"none",key:u}))}return r}function Uq(e){var t=e.x,r=e.width,n=e.horizontal,i=n===void 0?!0:n,a=e.horizontalPoints;if(!i||!a||!a.length)return null;var o=a.map(function(u,c){var s=Re(Re({},e),{},{x1:t,y1:u,x2:t+r,y2:u,key:"line-".concat(c),index:c});return M_(i,s)});return S.createElement("g",{className:"recharts-cartesian-grid-horizontal"},o)}function Wq(e){var t=e.y,r=e.height,n=e.vertical,i=n===void 0?!0:n,a=e.verticalPoints;if(!i||!a||!a.length)return null;var o=a.map(function(u,c){var s=Re(Re({},e),{},{x1:u,y1:t,x2:u,y2:t+r,key:"line-".concat(c),index:c});return M_(i,s)});return S.createElement("g",{className:"recharts-cartesian-grid-vertical"},o)}function zq(e){var t=e.horizontalFill,r=e.fillOpacity,n=e.x,i=e.y,a=e.width,o=e.height,u=e.horizontalPoints,c=e.horizontal,s=c===void 0?!0:c;if(!s||!t||!t.length)return null;var f=u.map(function(h){return Math.round(h+i-i)}).sort(function(h,p){return h-p});i!==f[0]&&f.unshift(0);var l=f.map(function(h,p){var y=!f[p+1],v=y?i+o-h:f[p+1]-h;if(v<=0)return null;var d=p%t.length;return S.createElement("rect",{key:"react-".concat(p),y:h,x:n,height:v,width:a,stroke:"none",fill:t[d],fillOpacity:r,className:"recharts-cartesian-grid-bg"})});return S.createElement("g",{className:"recharts-cartesian-gridstripes-horizontal"},l)}function Kq(e){var t=e.vertical,r=t===void 0?!0:t,n=e.verticalFill,i=e.fillOpacity,a=e.x,o=e.y,u=e.width,c=e.height,s=e.verticalPoints;if(!r||!n||!n.length)return null;var f=s.map(function(h){return Math.round(h+a-a)}).sort(function(h,p){return h-p});a!==f[0]&&f.unshift(0);var l=f.map(function(h,p){var y=!f[p+1],v=y?a+u-h:f[p+1]-h;if(v<=0)return null;var d=p%n.length;return S.createElement("rect",{key:"react-".concat(p),x:h,y:o,width:v,height:c,stroke:"none",fill:n[d],fillOpacity:i,className:"recharts-cartesian-grid-bg"})});return S.createElement("g",{className:"recharts-cartesian-gridstripes-vertical"},l)}var Hq=function(t,r){var n=t.xAxis,i=t.width,a=t.height,o=t.offset;return MO(Rp(Re(Re(Re({},vn.defaultProps),n),{},{ticks:Tt(n,!0),viewBox:{x:0,y:0,width:i,height:a}})),o.left,o.left+o.width,r)},Gq=function(t,r){var n=t.yAxis,i=t.width,a=t.height,o=t.offset;return MO(Rp(Re(Re(Re({},vn.defaultProps),n),{},{ticks:Tt(n,!0),viewBox:{x:0,y:0,width:i,height:a}})),o.top,o.top+o.height,r)},wr={horizontal:!0,vertical:!0,stroke:"#ccc",fill:"none",verticalFill:[],horizontalFill:[]};function Vq(e){var t,r,n,i,a,o,u=$p(),c=Ip(),s=kN(),f=Re(Re({},e),{},{stroke:(t=e.stroke)!==null&&t!==void 0?t:wr.stroke,fill:(r=e.fill)!==null&&r!==void 0?r:wr.fill,horizontal:(n=e.horizontal)!==null&&n!==void 0?n:wr.horizontal,horizontalFill:(i=e.horizontalFill)!==null&&i!==void 0?i:wr.horizontalFill,vertical:(a=e.vertical)!==null&&a!==void 0?a:wr.vertical,verticalFill:(o=e.verticalFill)!==null&&o!==void 0?o:wr.verticalFill,x:q(e.x)?e.x:s.left,y:q(e.y)?e.y:s.top,width:q(e.width)?e.width:s.width,height:q(e.height)?e.height:s.height}),l=f.x,h=f.y,p=f.width,y=f.height,v=f.syncWithTicks,d=f.horizontalValues,m=f.verticalValues,x=$N(),w=IN();if(!q(p)||p<=0||!q(y)||y<=0||!q(l)||l!==+l||!q(h)||h!==+h)return null;var O=f.verticalCoordinatesGenerator||Hq,g=f.horizontalCoordinatesGenerator||Gq,b=f.horizontalPoints,_=f.verticalPoints;if((!b||!b.length)&&X(g)){var A=d&&d.length,P=g({yAxis:w?Re(Re({},w),{},{ticks:A?d:w.ticks}):void 0,width:u,height:c,offset:s},A?!0:v);st(Array.isArray(P),"horizontalCoordinatesGenerator should return Array but instead it returned [".concat(fr(P),"]")),Array.isArray(P)&&(b=P)}if((!_||!_.length)&&X(O)){var j=m&&m.length,T=O({xAxis:x?Re(Re({},x),{},{ticks:j?m:x.ticks}):void 0,width:u,height:c,offset:s},j?!0:v);st(Array.isArray(T),"verticalCoordinatesGenerator should return Array but instead it returned [".concat(fr(T),"]")),Array.isArray(T)&&(_=T)}return S.createElement("g",{className:"recharts-cartesian-grid"},S.createElement(Fq,{fill:f.fill,fillOpacity:f.fillOpacity,x:f.x,y:f.y,width:f.width,height:f.height,ry:f.ry}),S.createElement(Uq,nr({},f,{offset:s,horizontalPoints:b,xAxis:x,yAxis:w})),S.createElement(Wq,nr({},f,{offset:s,verticalPoints:_,xAxis:x,yAxis:w})),S.createElement(zq,nr({},f,{horizontalPoints:b})),S.createElement(Kq,nr({},f,{verticalPoints:_})))}Vq.displayName="CartesianGrid";var Xq=["type","layout","connectNulls","ref"],Yq=["key"];function Jr(e){"@babel/helpers - typeof";return Jr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Jr(e)}function C0(e,t){if(e==null)return{};var r=Zq(e,t),n,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Zq(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function Rn(){return Rn=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);rl){p=[].concat(Or(c.slice(0,y)),[l-v]);break}var d=p.length%2===0?[0,h]:[h];return[].concat(Or(t.repeat(c,f)),Or(p),d).map(function(m){return"".concat(m,"px")}).join(", ")}),ut(r,"id",un("recharts-line-")),ut(r,"pathRef",function(o){r.mainCurve=o}),ut(r,"handleAnimationEnd",function(){r.setState({isAnimationFinished:!0}),r.props.onAnimationEnd&&r.props.onAnimationEnd()}),ut(r,"handleAnimationStart",function(){r.setState({isAnimationFinished:!1}),r.props.onAnimationStart&&r.props.onAnimationStart()}),r}return u2(t,e),n2(t,[{key:"componentDidMount",value:function(){if(this.props.isAnimationActive){var n=this.getTotalLength();this.setState({totalLength:n})}}},{key:"componentDidUpdate",value:function(){if(this.props.isAnimationActive){var n=this.getTotalLength();n!==this.state.totalLength&&this.setState({totalLength:n})}}},{key:"getTotalLength",value:function(){var n=this.mainCurve;try{return n&&n.getTotalLength&&n.getTotalLength()||0}catch{return 0}}},{key:"renderErrorBar",value:function(n,i){if(this.props.isAnimationActive&&!this.state.isAnimationFinished)return null;var a=this.props,o=a.points,u=a.xAxis,c=a.yAxis,s=a.layout,f=a.children,l=Ye(f,_i);if(!l)return null;var h=function(v,d){return{x:v.x,y:v.y,value:v.value,errorVal:Ae(v.payload,d)}},p={clipPath:n?"url(#clipPath-".concat(i,")"):null};return S.createElement(ne,p,l.map(function(y){return S.cloneElement(y,{key:"bar-".concat(y.props.dataKey),data:o,xAxis:u,yAxis:c,layout:s,dataPointFormatter:h})}))}},{key:"renderDots",value:function(n,i,a){var o=this.props.isAnimationActive;if(o&&!this.state.isAnimationFinished)return null;var u=this.props,c=u.dot,s=u.points,f=u.dataKey,l=K(this.props,!1),h=K(c,!0),p=s.map(function(v,d){var m=ze(ze(ze({key:"dot-".concat(d),r:3},l),h),{},{index:d,cx:v.x,cy:v.y,value:v.value,dataKey:f,payload:v.payload,points:s});return t.renderDotItem(c,m)}),y={clipPath:n?"url(#clipPath-".concat(i?"":"dots-").concat(a,")"):null};return S.createElement(ne,Rn({className:"recharts-line-dots",key:"dots"},y),p)}},{key:"renderCurveStatically",value:function(n,i,a,o){var u=this.props,c=u.type,s=u.layout,f=u.connectNulls;u.ref;var l=C0(u,Xq),h=ze(ze(ze({},K(l,!0)),{},{fill:"none",className:"recharts-line-curve",clipPath:i?"url(#clipPath-".concat(a,")"):null,points:n},o),{},{type:c,layout:s,connectNulls:f});return S.createElement(pa,Rn({},h,{pathRef:this.pathRef}))}},{key:"renderCurveWithAnimation",value:function(n,i){var a=this,o=this.props,u=o.points,c=o.strokeDasharray,s=o.isAnimationActive,f=o.animationBegin,l=o.animationDuration,h=o.animationEasing,p=o.animationId,y=o.animateNewValues,v=o.width,d=o.height,m=this.state,x=m.prevPoints,w=m.totalLength;return S.createElement(bt,{begin:f,duration:l,isActive:s,easing:h,from:{t:0},to:{t:1},key:"line-".concat(p),onAnimationEnd:this.handleAnimationEnd,onAnimationStart:this.handleAnimationStart},function(O){var g=O.t;if(x){var b=x.length/u.length,_=u.map(function(E,M){var I=Math.floor(M*b);if(x[I]){var $=x[I],k=Ge($.x,E.x),R=Ge($.y,E.y);return ze(ze({},E),{},{x:k(g),y:R(g)})}if(y){var L=Ge(v*2,E.x),B=Ge(d/2,E.y);return ze(ze({},E),{},{x:L(g),y:B(g)})}return ze(ze({},E),{},{x:E.x,y:E.y})});return a.renderCurveStatically(_,n,i)}var A=Ge(0,w),P=A(g),j;if(c){var T="".concat(c).split(/[,\s]+/gim).map(function(E){return parseFloat(E)});j=a.getStrokeDasharray(P,w,T)}else j=a.generateSimpleStrokeDasharray(w,P);return a.renderCurveStatically(u,n,i,{strokeDasharray:j})})}},{key:"renderCurve",value:function(n,i){var a=this.props,o=a.points,u=a.isAnimationActive,c=this.state,s=c.prevPoints,f=c.totalLength;return u&&o&&o.length&&(!s&&f>0||!Oi(s,o))?this.renderCurveWithAnimation(n,i):this.renderCurveStatically(o,n,i)}},{key:"render",value:function(){var n,i=this.props,a=i.hide,o=i.dot,u=i.points,c=i.className,s=i.xAxis,f=i.yAxis,l=i.top,h=i.left,p=i.width,y=i.height,v=i.isAnimationActive,d=i.id;if(a||!u||!u.length)return null;var m=this.state.isAnimationFinished,x=u.length===1,w=te("recharts-line",c),O=s&&s.allowDataOverflow,g=f&&f.allowDataOverflow,b=O||g,_=J(d)?this.id:d,A=(n=K(o,!1))!==null&&n!==void 0?n:{r:3,strokeWidth:2},P=A.r,j=P===void 0?3:P,T=A.strokeWidth,E=T===void 0?2:T,M=V1(o)?o:{},I=M.clipDot,$=I===void 0?!0:I,k=j*2+E;return S.createElement(ne,{className:w},O||g?S.createElement("defs",null,S.createElement("clipPath",{id:"clipPath-".concat(_)},S.createElement("rect",{x:O?h:h-p/2,y:g?l:l-y/2,width:O?p:p*2,height:g?y:y*2})),!$&&S.createElement("clipPath",{id:"clipPath-dots-".concat(_)},S.createElement("rect",{x:h-k/2,y:l-k/2,width:p+k,height:y+k}))):null,!x&&this.renderCurve(b,_),this.renderErrorBar(b,_),(x||o)&&this.renderDots(b,$,_),(!v||m)&&Mt.renderCallByParent(this.props,u))}}],[{key:"getDerivedStateFromProps",value:function(n,i){return n.animationId!==i.prevAnimationId?{prevAnimationId:n.animationId,curPoints:n.points,prevPoints:i.curPoints}:n.points!==i.curPoints?{curPoints:n.points}:null}},{key:"repeat",value:function(n,i){for(var a=n.length%2!==0?[].concat(Or(n),[0]):n,o=[],u=0;ue.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Z2(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function J2(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Q2(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r0?o:t&&t.length&&q(i)&&q(a)?t.slice(i,a+1):[]};function K_(e){return e==="number"?[0,"auto"]:void 0}var Ah=function(t,r,n,i){var a=t.graphicalItems,o=t.tooltipAxis,u=Ao(r,t);return n<0||!a||!a.length||n>=u.length?null:a.reduce(function(c,s){var f,l=(f=s.props.data)!==null&&f!==void 0?f:r;l&&t.dataStartIndex+t.dataEndIndex!==0&&t.dataEndIndex-t.dataStartIndex>=n&&(l=l.slice(t.dataStartIndex,t.dataEndIndex+1));var h;if(o.dataKey&&!o.allowDuplicatedCategory){var p=l===void 0?u:l;h=Bi(p,o.dataKey,i)}else h=l&&l[n]||u[n];return h?[].concat(rn(c),[RO(s,h)]):c},[])},U0=function(t,r,n,i){var a=i||{x:t.chartX,y:t.chartY},o=fL(a,n),u=t.orderedTooltipTicks,c=t.tooltipAxis,s=t.tooltipTicks,f=q$(o,u,s,c);if(f>=0&&s){var l=s[f]&&s[f].value,h=Ah(t,r,f,l),p=hL(n,u,f,a);return{activeTooltipIndex:f,activeLabel:l,activePayload:h,activeCoordinate:p}}return null},pL=function(t,r){var n=r.axes,i=r.graphicalItems,a=r.axisType,o=r.axisIdKey,u=r.stackGroups,c=r.dataStartIndex,s=r.dataEndIndex,f=t.layout,l=t.children,h=t.stackOffset,p=jO(f,a);return n.reduce(function(y,v){var d,m=v.type.defaultProps!==void 0?C(C({},v.type.defaultProps),v.props):v.props,x=m.type,w=m.dataKey,O=m.allowDataOverflow,g=m.allowDuplicatedCategory,b=m.scale,_=m.ticks,A=m.includeHidden,P=m[o];if(y[P])return y;var j=Ao(t.data,{graphicalItems:i.filter(function(U){var G,se=o in U.props?U.props[o]:(G=U.type.defaultProps)===null||G===void 0?void 0:G[o];return se===P}),dataStartIndex:c,dataEndIndex:s}),T=j.length,E,M,I;L2(m.domain,O,x)&&(E=qf(m.domain,null,O),p&&(x==="number"||b!=="auto")&&(I=$n(j,w,"category")));var $=K_(x);if(!E||E.length===0){var k,R=(k=m.domain)!==null&&k!==void 0?k:$;if(w){if(E=$n(j,w,x),x==="category"&&p){var L=q1(E);g&&L?(M=E,E=_a(0,T)):g||(E=Bm(R,E,v).reduce(function(U,G){return U.indexOf(G)>=0?U:[].concat(rn(U),[G])},[]))}else if(x==="category")g?E=E.filter(function(U){return U!==""&&!J(U)}):E=Bm(R,E,v).reduce(function(U,G){return U.indexOf(G)>=0||G===""||J(G)?U:[].concat(rn(U),[G])},[]);else if(x==="number"){var B=W$(j,i.filter(function(U){var G,se,me=o in U.props?U.props[o]:(G=U.type.defaultProps)===null||G===void 0?void 0:G[o],De="hide"in U.props?U.props.hide:(se=U.type.defaultProps)===null||se===void 0?void 0:se.hide;return me===P&&(A||!De)}),w,a,f);B&&(E=B)}p&&(x==="number"||b!=="auto")&&(I=$n(j,w,"category"))}else p?E=_a(0,T):u&&u[P]&&u[P].hasStack&&x==="number"?E=h==="expand"?[0,1]:kO(u[P].stackGroups,c,s):E=EO(j,i.filter(function(U){var G=o in U.props?U.props[o]:U.type.defaultProps[o],se="hide"in U.props?U.props.hide:U.type.defaultProps.hide;return G===P&&(A||!se)}),x,f,!0);if(x==="number")E=wh(l,E,P,a,_),R&&(E=qf(R,E,O));else if(x==="category"&&R){var z=R,H=E.every(function(U){return z.indexOf(U)>=0});H&&(E=z)}}return C(C({},y),{},V({},P,C(C({},m),{},{axisType:a,domain:E,categoricalDomain:I,duplicateDomain:M,originalDomain:(d=m.domain)!==null&&d!==void 0?d:$,isCategorical:p,layout:f})))},{})},dL=function(t,r){var n=r.graphicalItems,i=r.Axis,a=r.axisType,o=r.axisIdKey,u=r.stackGroups,c=r.dataStartIndex,s=r.dataEndIndex,f=t.layout,l=t.children,h=Ao(t.data,{graphicalItems:n,dataStartIndex:c,dataEndIndex:s}),p=h.length,y=jO(f,a),v=-1;return n.reduce(function(d,m){var x=m.type.defaultProps!==void 0?C(C({},m.type.defaultProps),m.props):m.props,w=x[o],O=K_("number");if(!d[w]){v++;var g;return y?g=_a(0,p):u&&u[w]&&u[w].hasStack?(g=kO(u[w].stackGroups,c,s),g=wh(l,g,w,a)):(g=qf(O,EO(h,n.filter(function(b){var _,A,P=o in b.props?b.props[o]:(_=b.type.defaultProps)===null||_===void 0?void 0:_[o],j="hide"in b.props?b.props.hide:(A=b.type.defaultProps)===null||A===void 0?void 0:A.hide;return P===w&&!j}),"number",f),i.defaultProps.allowDataOverflow),g=wh(l,g,w,a)),C(C({},d),{},V({},w,C(C({axisType:a},i.defaultProps),{},{hide:!0,orientation:Xe(sL,"".concat(a,".").concat(v%2),null),domain:g,originalDomain:O,isCategorical:y,layout:f})))}return d},{})},vL=function(t,r){var n=r.axisType,i=n===void 0?"xAxis":n,a=r.AxisComp,o=r.graphicalItems,u=r.stackGroups,c=r.dataStartIndex,s=r.dataEndIndex,f=t.children,l="".concat(i,"Id"),h=Ye(f,a),p={};return h&&h.length?p=pL(t,{axes:h,graphicalItems:o,axisType:i,axisIdKey:l,stackGroups:u,dataStartIndex:c,dataEndIndex:s}):o&&o.length&&(p=dL(t,{Axis:a,graphicalItems:o,axisType:i,axisIdKey:l,stackGroups:u,dataStartIndex:c,dataEndIndex:s})),p},yL=function(t){var r=qt(t),n=Tt(r,!1,!0);return{tooltipTicks:n,orderedTooltipTicks:Zh(n,function(i){return i.coordinate}),tooltipAxis:r,tooltipAxisBandSize:la(r,n)}},W0=function(t){var r=t.children,n=t.defaultShowTooltip,i=He(r,Hr),a=0,o=0;return t.data&&t.data.length!==0&&(o=t.data.length-1),i&&i.props&&(i.props.startIndex>=0&&(a=i.props.startIndex),i.props.endIndex>=0&&(o=i.props.endIndex)),{chartX:0,chartY:0,dataStartIndex:a,dataEndIndex:o,activeTooltipIndex:-1,isTooltipActive:!!n}},gL=function(t){return!t||!t.length?!1:t.some(function(r){var n=Et(r&&r.type);return n&&n.indexOf("Bar")>=0})},z0=function(t){return t==="horizontal"?{numericAxisName:"yAxis",cateAxisName:"xAxis"}:t==="vertical"?{numericAxisName:"xAxis",cateAxisName:"yAxis"}:t==="centric"?{numericAxisName:"radiusAxis",cateAxisName:"angleAxis"}:{numericAxisName:"angleAxis",cateAxisName:"radiusAxis"}},mL=function(t,r){var n=t.props,i=t.graphicalItems,a=t.xAxisMap,o=a===void 0?{}:a,u=t.yAxisMap,c=u===void 0?{}:u,s=n.width,f=n.height,l=n.children,h=n.margin||{},p=He(l,Hr),y=He(l,jr),v=Object.keys(c).reduce(function(g,b){var _=c[b],A=_.orientation;return!_.mirror&&!_.hide?C(C({},g),{},V({},A,g[A]+_.width)):g},{left:h.left||0,right:h.right||0}),d=Object.keys(o).reduce(function(g,b){var _=o[b],A=_.orientation;return!_.mirror&&!_.hide?C(C({},g),{},V({},A,Xe(g,"".concat(A))+_.height)):g},{top:h.top||0,bottom:h.bottom||0}),m=C(C({},d),v),x=m.bottom;p&&(m.bottom+=p.props.height||Hr.defaultProps.height),y&&r&&(m=F$(m,i,n,r));var w=s-m.left-m.right,O=f-m.top-m.bottom;return C(C({brushBottom:x},m),{},{width:Math.max(w,0),height:Math.max(O,0)})},bL=function(t,r){if(r==="xAxis")return t[r].width;if(r==="yAxis")return t[r].height},Np=function(t){var r=t.chartName,n=t.GraphicalChild,i=t.defaultTooltipEventType,a=i===void 0?"axis":i,o=t.validateTooltipEventTypes,u=o===void 0?["axis"]:o,c=t.axisComponents,s=t.legendContent,f=t.formatAxisMap,l=t.defaultProps,h=function(m,x){var w=x.graphicalItems,O=x.stackGroups,g=x.offset,b=x.updateId,_=x.dataStartIndex,A=x.dataEndIndex,P=m.barSize,j=m.layout,T=m.barGap,E=m.barCategoryGap,M=m.maxBarSize,I=z0(j),$=I.numericAxisName,k=I.cateAxisName,R=gL(w),L=[];return w.forEach(function(B,z){var H=Ao(m.data,{graphicalItems:[B],dataStartIndex:_,dataEndIndex:A}),U=B.type.defaultProps!==void 0?C(C({},B.type.defaultProps),B.props):B.props,G=U.dataKey,se=U.maxBarSize,me=U["".concat($,"Id")],De=U["".concat(k,"Id")],wt={},Ie=c.reduce(function(Ze,Ce){var Te=x["".concat(Ce.axisType,"Map")],Kt=U["".concat(Ce.axisType,"Id")];Te&&Te[Kt]||Ce.axisType==="zAxis"||or(!1);var Ht=Te[Kt];return C(C({},Ze),{},V(V({},Ce.axisType,Ht),"".concat(Ce.axisType,"Ticks"),Tt(Ht)))},wt),F=Ie[k],Q=Ie["".concat(k,"Ticks")],ee=O&&O[me]&&O[me].hasStack&&J$(B,O[me].stackGroups),D=Et(B.type).indexOf("Bar")>=0,ve=la(F,Q),re=[],Y=R&&L$({barSize:P,stackGroups:O,totalSize:bL(Ie,k)});if(D){var ye,Z,Ne=J(se)?M:se,We=(ye=(Z=la(F,Q,!0))!==null&&Z!==void 0?Z:Ne)!==null&&ye!==void 0?ye:0;re=B$({barGap:T,barCategoryGap:E,bandSize:We!==ve?We:ve,sizeList:Y[De],maxBarSize:Ne}),We!==ve&&(re=re.map(function(Ze){return C(C({},Ze),{},{position:C(C({},Ze.position),{},{offset:Ze.position.offset-We/2})})}))}var gr=B&&B.type&&B.type.getComposedData;gr&&L.push({props:C(C({},gr(C(C({},Ie),{},{displayedData:H,props:m,dataKey:G,item:B,bandSize:ve,barPosition:re,offset:g,stackedData:ee,layout:j,dataStartIndex:_,dataEndIndex:A}))),{},V(V(V({key:B.key||"item-".concat(z)},$,Ie[$]),k,Ie[k]),"animationId",b)),childIndex:Z1(B,m.children),item:B})}),L},p=function(m,x){var w=m.props,O=m.dataStartIndex,g=m.dataEndIndex,b=m.updateId;if(!Jd({props:w}))return null;var _=w.children,A=w.layout,P=w.stackOffset,j=w.data,T=w.reverseStackOrder,E=z0(A),M=E.numericAxisName,I=E.cateAxisName,$=Ye(_,n),k=Y$(j,$,"".concat(M,"Id"),"".concat(I,"Id"),P,T),R=c.reduce(function(U,G){var se="".concat(G.axisType,"Map");return C(C({},U),{},V({},se,vL(w,C(C({},G),{},{graphicalItems:$,stackGroups:G.axisType===M&&k,dataStartIndex:O,dataEndIndex:g}))))},{}),L=mL(C(C({},R),{},{props:w,graphicalItems:$}),x?.legendBBox);Object.keys(R).forEach(function(U){R[U]=f(w,R[U],L,U.replace("Map",""),r)});var B=R["".concat(I,"Map")],z=yL(B),H=h(w,C(C({},R),{},{dataStartIndex:O,dataEndIndex:g,updateId:b,graphicalItems:$,stackGroups:k,offset:L}));return C(C({formattedGraphicalItems:H,graphicalItems:$,offset:L,stackGroups:k},z),R)},y=(function(d){function m(x){var w,O,g;return J2(this,m),g=tL(this,m,[x]),V(g,"eventEmitterSymbol",Symbol("rechartsEventEmitter")),V(g,"accessibilityManager",new q2),V(g,"handleLegendBBoxUpdate",function(b){if(b){var _=g.state,A=_.dataStartIndex,P=_.dataEndIndex,j=_.updateId;g.setState(C({legendBBox:b},p({props:g.props,dataStartIndex:A,dataEndIndex:P,updateId:j},C(C({},g.state),{},{legendBBox:b}))))}}),V(g,"handleReceiveSyncEvent",function(b,_,A){if(g.props.syncId===b){if(A===g.eventEmitterSymbol&&typeof g.props.syncMethod!="function")return;g.applySyncEvent(_)}}),V(g,"handleBrushChange",function(b){var _=b.startIndex,A=b.endIndex;if(_!==g.state.dataStartIndex||A!==g.state.dataEndIndex){var P=g.state.updateId;g.setState(function(){return C({dataStartIndex:_,dataEndIndex:A},p({props:g.props,dataStartIndex:_,dataEndIndex:A,updateId:P},g.state))}),g.triggerSyncEvent({dataStartIndex:_,dataEndIndex:A})}}),V(g,"handleMouseEnter",function(b){var _=g.getMouseInfo(b);if(_){var A=C(C({},_),{},{isTooltipActive:!0});g.setState(A),g.triggerSyncEvent(A);var P=g.props.onMouseEnter;X(P)&&P(A,b)}}),V(g,"triggeredAfterMouseMove",function(b){var _=g.getMouseInfo(b),A=_?C(C({},_),{},{isTooltipActive:!0}):{isTooltipActive:!1};g.setState(A),g.triggerSyncEvent(A);var P=g.props.onMouseMove;X(P)&&P(A,b)}),V(g,"handleItemMouseEnter",function(b){g.setState(function(){return{isTooltipActive:!0,activeItem:b,activePayload:b.tooltipPayload,activeCoordinate:b.tooltipPosition||{x:b.cx,y:b.cy}}})}),V(g,"handleItemMouseLeave",function(){g.setState(function(){return{isTooltipActive:!1}})}),V(g,"handleMouseMove",function(b){b.persist(),g.throttleTriggeredAfterMouseMove(b)}),V(g,"handleMouseLeave",function(b){g.throttleTriggeredAfterMouseMove.cancel();var _={isTooltipActive:!1};g.setState(_),g.triggerSyncEvent(_);var A=g.props.onMouseLeave;X(A)&&A(_,b)}),V(g,"handleOuterEvent",function(b){var _=Y1(b),A=Xe(g.props,"".concat(_));if(_&&X(A)){var P,j;/.*touch.*/i.test(_)?j=g.getMouseInfo(b.changedTouches[0]):j=g.getMouseInfo(b),A((P=j)!==null&&P!==void 0?P:{},b)}}),V(g,"handleClick",function(b){var _=g.getMouseInfo(b);if(_){var A=C(C({},_),{},{isTooltipActive:!0});g.setState(A),g.triggerSyncEvent(A);var P=g.props.onClick;X(P)&&P(A,b)}}),V(g,"handleMouseDown",function(b){var _=g.props.onMouseDown;if(X(_)){var A=g.getMouseInfo(b);_(A,b)}}),V(g,"handleMouseUp",function(b){var _=g.props.onMouseUp;if(X(_)){var A=g.getMouseInfo(b);_(A,b)}}),V(g,"handleTouchMove",function(b){b.changedTouches!=null&&b.changedTouches.length>0&&g.throttleTriggeredAfterMouseMove(b.changedTouches[0])}),V(g,"handleTouchStart",function(b){b.changedTouches!=null&&b.changedTouches.length>0&&g.handleMouseDown(b.changedTouches[0])}),V(g,"handleTouchEnd",function(b){b.changedTouches!=null&&b.changedTouches.length>0&&g.handleMouseUp(b.changedTouches[0])}),V(g,"handleDoubleClick",function(b){var _=g.props.onDoubleClick;if(X(_)){var A=g.getMouseInfo(b);_(A,b)}}),V(g,"handleContextMenu",function(b){var _=g.props.onContextMenu;if(X(_)){var A=g.getMouseInfo(b);_(A,b)}}),V(g,"triggerSyncEvent",function(b){g.props.syncId!==void 0&&Al.emit(Sl,g.props.syncId,b,g.eventEmitterSymbol)}),V(g,"applySyncEvent",function(b){var _=g.props,A=_.layout,P=_.syncMethod,j=g.state.updateId,T=b.dataStartIndex,E=b.dataEndIndex;if(b.dataStartIndex!==void 0||b.dataEndIndex!==void 0)g.setState(C({dataStartIndex:T,dataEndIndex:E},p({props:g.props,dataStartIndex:T,dataEndIndex:E,updateId:j},g.state)));else if(b.activeTooltipIndex!==void 0){var M=b.chartX,I=b.chartY,$=b.activeTooltipIndex,k=g.state,R=k.offset,L=k.tooltipTicks;if(!R)return;if(typeof P=="function")$=P(L,b);else if(P==="value"){$=-1;for(var B=0;B=0){var ee,D;if(M.dataKey&&!M.allowDuplicatedCategory){var ve=typeof M.dataKey=="function"?Q:"payload.".concat(M.dataKey.toString());ee=Bi(B,ve,$),D=z&&H&&Bi(H,ve,$)}else ee=B?.[I],D=z&&H&&H[I];if(De||me){var re=b.props.activeIndex!==void 0?b.props.activeIndex:I;return[N.cloneElement(b,C(C(C({},P.props),Ie),{},{activeIndex:re})),null,null]}if(!J(ee))return[F].concat(rn(g.renderActivePoints({item:P,activePoint:ee,basePoint:D,childIndex:I,isRange:z})))}else{var Y,ye=(Y=g.getItemByXY(g.state.activeCoordinate))!==null&&Y!==void 0?Y:{graphicalItem:F},Z=ye.graphicalItem,Ne=Z.item,We=Ne===void 0?b:Ne,gr=Z.childIndex,Ze=C(C(C({},P.props),Ie),{},{activeIndex:gr});return[N.cloneElement(We,Ze),null,null]}return z?[F,null,null]:[F,null]}),V(g,"renderCustomized",function(b,_,A){return N.cloneElement(b,C(C({key:"recharts-customized-".concat(A)},g.props),g.state))}),V(g,"renderMap",{CartesianGrid:{handler:qi,once:!0},ReferenceArea:{handler:g.renderReferenceElement},ReferenceLine:{handler:qi},ReferenceDot:{handler:g.renderReferenceElement},XAxis:{handler:qi},YAxis:{handler:qi},Brush:{handler:g.renderBrush,once:!0},Bar:{handler:g.renderGraphicChild},Line:{handler:g.renderGraphicChild},Area:{handler:g.renderGraphicChild},Radar:{handler:g.renderGraphicChild},RadialBar:{handler:g.renderGraphicChild},Scatter:{handler:g.renderGraphicChild},Pie:{handler:g.renderGraphicChild},Funnel:{handler:g.renderGraphicChild},Tooltip:{handler:g.renderCursor,once:!0},PolarGrid:{handler:g.renderPolarGrid,once:!0},PolarAngleAxis:{handler:g.renderPolarAxis},PolarRadiusAxis:{handler:g.renderPolarAxis},Customized:{handler:g.renderCustomized}}),g.clipPathId="".concat((w=x.id)!==null&&w!==void 0?w:un("recharts"),"-clip"),g.throttleTriggeredAfterMouseMove=_w(g.triggeredAfterMouseMove,(O=x.throttleDelay)!==null&&O!==void 0?O:1e3/60),g.state={},g}return iL(m,d),eL(m,[{key:"componentDidMount",value:function(){var w,O;this.addListener(),this.accessibilityManager.setDetails({container:this.container,offset:{left:(w=this.props.margin.left)!==null&&w!==void 0?w:0,top:(O=this.props.margin.top)!==null&&O!==void 0?O:0},coordinateList:this.state.tooltipTicks,mouseHandlerCallback:this.triggeredAfterMouseMove,layout:this.props.layout}),this.displayDefaultTooltip()}},{key:"displayDefaultTooltip",value:function(){var w=this.props,O=w.children,g=w.data,b=w.height,_=w.layout,A=He(O,_t);if(A){var P=A.props.defaultIndex;if(!(typeof P!="number"||P<0||P>this.state.tooltipTicks.length-1)){var j=this.state.tooltipTicks[P]&&this.state.tooltipTicks[P].value,T=Ah(this.state,g,P,j),E=this.state.tooltipTicks[P].coordinate,M=(this.state.offset.top+b)/2,I=_==="horizontal",$=I?{x:E,y:M}:{y:E,x:M},k=this.state.formattedGraphicalItems.find(function(L){var B=L.item;return B.type.name==="Scatter"});k&&($=C(C({},$),k.props.points[P].tooltipPosition),T=k.props.points[P].tooltipPayload);var R={activeTooltipIndex:P,isTooltipActive:!0,activeLabel:j,activePayload:T,activeCoordinate:$};this.setState(R),this.renderCursor(A),this.accessibilityManager.setIndex(P)}}}},{key:"getSnapshotBeforeUpdate",value:function(w,O){if(!this.props.accessibilityLayer)return null;if(this.state.tooltipTicks!==O.tooltipTicks&&this.accessibilityManager.setDetails({coordinateList:this.state.tooltipTicks}),this.props.layout!==w.layout&&this.accessibilityManager.setDetails({layout:this.props.layout}),this.props.margin!==w.margin){var g,b;this.accessibilityManager.setDetails({offset:{left:(g=this.props.margin.left)!==null&&g!==void 0?g:0,top:(b=this.props.margin.top)!==null&&b!==void 0?b:0}})}return null}},{key:"componentDidUpdate",value:function(w){af([He(w.children,_t)],[He(this.props.children,_t)])||this.displayDefaultTooltip()}},{key:"componentWillUnmount",value:function(){this.removeListener(),this.throttleTriggeredAfterMouseMove.cancel()}},{key:"getTooltipEventType",value:function(){var w=He(this.props.children,_t);if(w&&typeof w.props.shared=="boolean"){var O=w.props.shared?"axis":"item";return u.indexOf(O)>=0?O:a}return a}},{key:"getMouseInfo",value:function(w){if(!this.container)return null;var O=this.container,g=O.getBoundingClientRect(),b=PT(g),_={chartX:Math.round(w.pageX-b.left),chartY:Math.round(w.pageY-b.top)},A=g.width/O.offsetWidth||1,P=this.inRange(_.chartX,_.chartY,A);if(!P)return null;var j=this.state,T=j.xAxisMap,E=j.yAxisMap,M=this.getTooltipEventType(),I=U0(this.state,this.props.data,this.props.layout,P);if(M!=="axis"&&T&&E){var $=qt(T).scale,k=qt(E).scale,R=$&&$.invert?$.invert(_.chartX):null,L=k&&k.invert?k.invert(_.chartY):null;return C(C({},_),{},{xValue:R,yValue:L},I)}return I?C(C({},_),I):null}},{key:"inRange",value:function(w,O){var g=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,b=this.props.layout,_=w/g,A=O/g;if(b==="horizontal"||b==="vertical"){var P=this.state.offset,j=_>=P.left&&_<=P.left+P.width&&A>=P.top&&A<=P.top+P.height;return j?{x:_,y:A}:null}var T=this.state,E=T.angleAxisMap,M=T.radiusAxisMap;if(E&&M){var I=qt(E);return Wm({x:_,y:A},I)}return null}},{key:"parseEventsOfWrapper",value:function(){var w=this.props.children,O=this.getTooltipEventType(),g=He(w,_t),b={};g&&O==="axis"&&(g.props.trigger==="click"?b={onClick:this.handleClick}:b={onMouseEnter:this.handleMouseEnter,onDoubleClick:this.handleDoubleClick,onMouseMove:this.handleMouseMove,onMouseLeave:this.handleMouseLeave,onTouchMove:this.handleTouchMove,onTouchStart:this.handleTouchStart,onTouchEnd:this.handleTouchEnd,onContextMenu:this.handleContextMenu});var _=Fi(this.props,this.handleOuterEvent);return C(C({},_),b)}},{key:"addListener",value:function(){Al.on(Sl,this.handleReceiveSyncEvent)}},{key:"removeListener",value:function(){Al.removeListener(Sl,this.handleReceiveSyncEvent)}},{key:"filterFormatItem",value:function(w,O,g){for(var b=this.state.formattedGraphicalItems,_=0,A=b.length;_=360?x:x-1)*c,O=d-x*p-w,g=i.reduce(function(A,P){var j=Ae(P,m,0);return A+(q(j)?j:0)},0),b;if(g>0){var _;b=i.map(function(A,P){var j=Ae(A,m,0),T=Ae(A,f,P),E=(q(j)?j:0)/g,M;P?M=_.endAngle+qe(v)*c*(j!==0?1:0):M=o;var I=M+qe(v)*((j!==0?p:0)+E*O),$=(M+I)/2,k=(y.innerRadius+y.outerRadius)/2,R=[{name:T,value:j,payload:A,dataKey:m,type:h}],L=pe(y.cx,y.cy,k,$);return _=fe(fe(fe({percent:E,cornerRadius:a,name:T,tooltipPayload:R,midAngle:$,middleRadius:k,tooltipPosition:L},A),y),{},{value:Ae(A,m),startAngle:M,endAngle:I,payload:A,paddingAngle:qe(v)*c}),_})}return fe(fe({},y),{},{sectors:b,data:i})});var ol,Vb;function _D(){if(Vb)return ol;Vb=1;var e=Math.ceil,t=Math.max;function r(n,i,a,o){for(var u=-1,c=t(e((i-n)/(a||1)),0),s=Array(c);c--;)s[o?c:++u]=n,n+=a;return s}return ol=r,ol}var ul,Xb;function t_(){if(Xb)return ul;Xb=1;var e=ww(),t=1/0,r=17976931348623157e292;function n(i){if(!i)return i===0?i:0;if(i=e(i),i===t||i===-t){var a=i<0?-1:1;return a*r}return i===i?i:0}return ul=n,ul}var cl,Yb;function AD(){if(Yb)return cl;Yb=1;var e=_D(),t=Ya(),r=t_();function n(i){return function(a,o,u){return u&&typeof u!="number"&&t(a,o,u)&&(o=u=void 0),a=r(a),o===void 0?(o=a,a=0):o=r(o),u=u===void 0?a0&&n.handleDrag(i.changedTouches[0])}),Ke(n,"handleDragEnd",function(){n.setState({isTravellerMoving:!1,isSlideMoving:!1},function(){var i=n.props,a=i.endIndex,o=i.onDragEnd,u=i.startIndex;o?.({endIndex:a,startIndex:u})}),n.detachDragEndListener()}),Ke(n,"handleLeaveWrapper",function(){(n.state.isTravellerMoving||n.state.isSlideMoving)&&(n.leaveTimer=window.setTimeout(n.handleDragEnd,n.props.leaveTimeOut))}),Ke(n,"handleEnterSlideOrTraveller",function(){n.setState({isTextActive:!0})}),Ke(n,"handleLeaveSlideOrTraveller",function(){n.setState({isTextActive:!1})}),Ke(n,"handleSlideDragStart",function(i){var a=r0(i)?i.changedTouches[0]:i;n.setState({isTravellerMoving:!1,isSlideMoving:!0,slideMoveStartX:a.pageX}),n.attachDragEndListener()}),n.travellerDragStartHandlers={startX:n.handleTravellerDragStart.bind(n,"startX"),endX:n.handleTravellerDragStart.bind(n,"endX")},n.state={},n}return DD(t,e),ID(t,[{key:"componentWillUnmount",value:function(){this.leaveTimer&&(clearTimeout(this.leaveTimer),this.leaveTimer=null),this.detachDragEndListener()}},{key:"getIndex",value:function(n){var i=n.startX,a=n.endX,o=this.state.scaleValues,u=this.props,c=u.gap,s=u.data,f=s.length-1,l=Math.min(i,a),h=Math.max(i,a),p=t.getIndexInRange(o,l),y=t.getIndexInRange(o,h);return{startIndex:p-p%c,endIndex:y===f?f:y-y%c}}},{key:"getTextOfTick",value:function(n){var i=this.props,a=i.data,o=i.tickFormatter,u=i.dataKey,c=Ae(a[n],u,n);return X(o)?o(c,n):c}},{key:"attachDragEndListener",value:function(){window.addEventListener("mouseup",this.handleDragEnd,!0),window.addEventListener("touchend",this.handleDragEnd,!0),window.addEventListener("mousemove",this.handleDrag,!0)}},{key:"detachDragEndListener",value:function(){window.removeEventListener("mouseup",this.handleDragEnd,!0),window.removeEventListener("touchend",this.handleDragEnd,!0),window.removeEventListener("mousemove",this.handleDrag,!0)}},{key:"handleSlideDrag",value:function(n){var i=this.state,a=i.slideMoveStartX,o=i.startX,u=i.endX,c=this.props,s=c.x,f=c.width,l=c.travellerWidth,h=c.startIndex,p=c.endIndex,y=c.onChange,v=n.pageX-a;v>0?v=Math.min(v,s+f-l-u,s+f-l-o):v<0&&(v=Math.max(v,s-o,s-u));var d=this.getIndex({startX:o+v,endX:u+v});(d.startIndex!==h||d.endIndex!==p)&&y&&y(d),this.setState({startX:o+v,endX:u+v,slideMoveStartX:n.pageX})}},{key:"handleTravellerDragStart",value:function(n,i){var a=r0(i)?i.changedTouches[0]:i;this.setState({isSlideMoving:!1,isTravellerMoving:!0,movingTravellerId:n,brushMoveStartX:a.pageX}),this.attachDragEndListener()}},{key:"handleTravellerMove",value:function(n){var i=this.state,a=i.brushMoveStartX,o=i.movingTravellerId,u=i.endX,c=i.startX,s=this.state[o],f=this.props,l=f.x,h=f.width,p=f.travellerWidth,y=f.onChange,v=f.gap,d=f.data,m={startX:this.state.startX,endX:this.state.endX},x=n.pageX-a;x>0?x=Math.min(x,l+h-p-s):x<0&&(x=Math.max(x,l-s)),m[o]=s+x;var w=this.getIndex(m),O=w.startIndex,g=w.endIndex,b=function(){var A=d.length-1;return o==="startX"&&(u>c?O%v===0:g%v===0)||uc?g%v===0:O%v===0)||u>c&&g===A};this.setState(Ke(Ke({},o,s+x),"brushMoveStartX",n.pageX),function(){y&&b()&&y(w)})}},{key:"handleTravellerMoveKeyboard",value:function(n,i){var a=this,o=this.state,u=o.scaleValues,c=o.startX,s=o.endX,f=this.state[i],l=u.indexOf(f);if(l!==-1){var h=l+n;if(!(h===-1||h>=u.length)){var p=u[h];i==="startX"&&p>=s||i==="endX"&&p<=c||this.setState(Ke({},i,p),function(){a.props.onChange(a.getIndex({startX:a.state.startX,endX:a.state.endX}))})}}}},{key:"renderBackground",value:function(){var n=this.props,i=n.x,a=n.y,o=n.width,u=n.height,c=n.fill,s=n.stroke;return S.createElement("rect",{stroke:s,fill:c,x:i,y:a,width:o,height:u})}},{key:"renderPanorama",value:function(){var n=this.props,i=n.x,a=n.y,o=n.width,u=n.height,c=n.data,s=n.children,f=n.padding,l=N.Children.only(s);return l?S.cloneElement(l,{x:i,y:a,width:o,height:u,margin:f,compact:!0,data:c}):null}},{key:"renderTravellerLayer",value:function(n,i){var a,o,u=this,c=this.props,s=c.y,f=c.travellerWidth,l=c.height,h=c.traveller,p=c.ariaLabel,y=c.data,v=c.startIndex,d=c.endIndex,m=Math.max(n,this.props.x),x=ll(ll({},K(this.props,!1)),{},{x:m,y:s,width:f,height:l}),w=p||"Min value: ".concat((a=y[v])===null||a===void 0?void 0:a.name,", Max value: ").concat((o=y[d])===null||o===void 0?void 0:o.name);return S.createElement(ne,{tabIndex:0,role:"slider","aria-label":w,"aria-valuenow":n,className:"recharts-brush-traveller",onMouseEnter:this.handleEnterSlideOrTraveller,onMouseLeave:this.handleLeaveSlideOrTraveller,onMouseDown:this.travellerDragStartHandlers[i],onTouchStart:this.travellerDragStartHandlers[i],onKeyDown:function(g){["ArrowLeft","ArrowRight"].includes(g.key)&&(g.preventDefault(),g.stopPropagation(),u.handleTravellerMoveKeyboard(g.key==="ArrowRight"?1:-1,i))},onFocus:function(){u.setState({isTravellerFocused:!0})},onBlur:function(){u.setState({isTravellerFocused:!1})},style:{cursor:"col-resize"}},t.renderTraveller(h,x))}},{key:"renderSlide",value:function(n,i){var a=this.props,o=a.y,u=a.height,c=a.stroke,s=a.travellerWidth,f=Math.min(n,i)+s,l=Math.max(Math.abs(i-n)-s,0);return S.createElement("rect",{className:"recharts-brush-slide",onMouseEnter:this.handleEnterSlideOrTraveller,onMouseLeave:this.handleLeaveSlideOrTraveller,onMouseDown:this.handleSlideDragStart,onTouchStart:this.handleSlideDragStart,style:{cursor:"move"},stroke:"none",fill:c,fillOpacity:.2,x:f,y:o,width:l,height:u})}},{key:"renderText",value:function(){var n=this.props,i=n.startIndex,a=n.endIndex,o=n.y,u=n.height,c=n.travellerWidth,s=n.stroke,f=this.state,l=f.startX,h=f.endX,p=5,y={pointerEvents:"none",fill:s};return S.createElement(ne,{className:"recharts-brush-texts"},S.createElement(sr,Aa({textAnchor:"end",verticalAnchor:"middle",x:Math.min(l,h)-p,y:o+u/2},y),this.getTextOfTick(i)),S.createElement(sr,Aa({textAnchor:"start",verticalAnchor:"middle",x:Math.max(l,h)+c+p,y:o+u/2},y),this.getTextOfTick(a)))}},{key:"render",value:function(){var n=this.props,i=n.data,a=n.className,o=n.children,u=n.x,c=n.y,s=n.width,f=n.height,l=n.alwaysShowText,h=this.state,p=h.startX,y=h.endX,v=h.isTextActive,d=h.isSlideMoving,m=h.isTravellerMoving,x=h.isTravellerFocused;if(!i||!i.length||!q(u)||!q(c)||!q(s)||!q(f)||s<=0||f<=0)return null;var w=te("recharts-brush",a),O=S.Children.count(o)===1,g=MD("userSelect","none");return S.createElement(ne,{className:w,onMouseLeave:this.handleLeaveWrapper,onTouchMove:this.handleTouchMove,style:g},this.renderBackground(),O&&this.renderPanorama(),this.renderSlide(p,y),this.renderTravellerLayer(p,"startX"),this.renderTravellerLayer(y,"endX"),(v||d||m||x||l)&&this.renderText())}}],[{key:"renderDefaultTraveller",value:function(n){var i=n.x,a=n.y,o=n.width,u=n.height,c=n.stroke,s=Math.floor(a+u/2)-1;return S.createElement(S.Fragment,null,S.createElement("rect",{x:i,y:a,width:o,height:u,fill:c,stroke:"none"}),S.createElement("line",{x1:i+1,y1:s,x2:i+o-1,y2:s,fill:"none",stroke:"#fff"}),S.createElement("line",{x1:i+1,y1:s+2,x2:i+o-1,y2:s+2,fill:"none",stroke:"#fff"}))}},{key:"renderTraveller",value:function(n,i){var a;return S.isValidElement(n)?a=S.cloneElement(n,i):X(n)?a=n(i):a=t.renderDefaultTraveller(i),a}},{key:"getDerivedStateFromProps",value:function(n,i){var a=n.data,o=n.width,u=n.x,c=n.travellerWidth,s=n.updateId,f=n.startIndex,l=n.endIndex;if(a!==i.prevData||s!==i.prevUpdateId)return ll({prevData:a,prevTravellerWidth:c,prevUpdateId:s,prevX:u,prevWidth:o},a&&a.length?qD({data:a,width:o,x:u,travellerWidth:c,startIndex:f,endIndex:l}):{scale:null,scaleValues:null});if(i.scale&&(o!==i.prevWidth||u!==i.prevX||c!==i.prevTravellerWidth)){i.scale.range([u,u+o-c]);var h=i.scale.domain().map(function(p){return i.scale(p)});return{prevData:a,prevTravellerWidth:c,prevUpdateId:s,prevX:u,prevWidth:o,startX:i.scale(n.startIndex),endX:i.scale(n.endIndex),scaleValues:h}}return null}},{key:"getIndexInRange",value:function(n,i){for(var a=n.length,o=0,u=a-1;u-o>1;){var c=Math.floor((o+u)/2);n[c]>i?u=c:o=c}return i>=n[u]?u:o}}])})(N.PureComponent);Ke(Hr,"displayName","Brush");Ke(Hr,"defaultProps",{height:40,travellerWidth:5,gap:1,fill:"#fff",stroke:"#666",padding:{top:1,right:1,bottom:1,left:1},leaveTimeOut:1e3,alwaysShowText:!1});var fl,n0;function LD(){if(n0)return fl;n0=1;var e=Yh();function t(r,n){var i;return e(r,function(a,o,u){return i=n(a,o,u),!i}),!!i}return fl=t,fl}var hl,i0;function BD(){if(i0)return hl;i0=1;var e=Xx(),t=xt(),r=LD(),n=Fe(),i=Ya();function a(o,u,c){var s=n(o)?e:r;return c&&i(o,u,c)&&(u=void 0),s(o,t(u,3))}return hl=a,hl}var FD=BD();const UD=ce(FD);var gt=function(t,r){var n=t.alwaysShow,i=t.ifOverflow;return n&&(i="extendDomain"),i===r},pl,a0;function Tp(){if(a0)return pl;a0=1;var e=vw();function t(r,n,i){n=="__proto__"&&e?e(r,n,{configurable:!0,enumerable:!0,value:i,writable:!0}):r[n]=i}return pl=t,pl}var dl,o0;function WD(){if(o0)return dl;o0=1;var e=Tp(),t=hw(),r=xt();function n(i,a){var o={};return a=r(a,3),t(i,function(u,c,s){e(o,c,a(u,c,s))}),o}return dl=n,dl}var zD=WD();const KD=ce(zD);var vl,u0;function HD(){if(u0)return vl;u0=1;function e(t,r){for(var n=-1,i=t==null?0:t.length;++n=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function tN(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function rN(e,t){var r=e.x,n=e.y,i=eN(e,YD),a="".concat(r),o=parseInt(a,10),u="".concat(n),c=parseInt(u,10),s="".concat(t.height||i.height),f=parseInt(s,10),l="".concat(t.width||i.width),h=parseInt(l,10);return An(An(An(An(An({},t),i),o?{x:o}:{}),c?{y:c}:{}),{},{height:f,width:h,name:t.name,radius:t.radius})}function f0(e){return S.createElement(JO,ah({shapeType:"rectangle",propTransformer:rN,activeClassName:"recharts-active-bar"},e))}var nN=function(t){var r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return function(n,i){if(typeof t=="number")return t;var a=q(n)||R1(n);return a?t(n,i):(a||or(!1),r)}},iN=["value","background"],o_;function Gr(e){"@babel/helpers - typeof";return Gr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Gr(e)}function aN(e,t){if(e==null)return{};var r=oN(e,t),n,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function oN(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function Pa(){return Pa=Object.assign?Object.assign.bind():function(e){for(var t=1;t0&&Math.abs($)0&&Math.abs(I)0&&(M=Math.min((se||0)-(I[me-1]||0),M))}),Number.isFinite(M)){var $=M/E,k=v.layout==="vertical"?n.height:n.width;if(v.padding==="gap"&&(_=$*k/2),v.padding==="no-gap"){var R=Le(t.barCategoryGap,$*k),L=$*k/2;_=L-R-(L-R)/k*R}}}i==="xAxis"?A=[n.left+(w.left||0)+(_||0),n.left+n.width-(w.right||0)-(_||0)]:i==="yAxis"?A=c==="horizontal"?[n.top+n.height-(w.bottom||0),n.top+(w.top||0)]:[n.top+(w.top||0)+(_||0),n.top+n.height-(w.bottom||0)-(_||0)]:A=v.range,g&&(A=[A[1],A[0]]);var B=MO(v,a,h),z=B.scale,H=B.realScaleType;z.domain(m).range(A),$O(z);var U=IO(z,ot(ot({},v),{},{realScaleType:H}));i==="xAxis"?(T=d==="top"&&!O||d==="bottom"&&O,P=n.left,j=l[b]-T*v.height):i==="yAxis"&&(T=d==="left"&&!O||d==="right"&&O,P=l[b]-T*v.width,j=n.top);var G=ot(ot(ot({},v),U),{},{realScaleType:H,x:P,y:j,scale:z,width:i==="xAxis"?n.width:v.width,height:i==="yAxis"?n.height:v.height});return G.bandSize=la(G,U),!v.hide&&i==="xAxis"?l[b]+=(T?-1:1)*G.height:v.hide||(l[b]+=(T?-1:1)*G.width),ot(ot({},p),{},yo({},y,G))},{})},f_=function(t,r){var n=t.x,i=t.y,a=r.x,o=r.y;return{x:Math.min(n,a),y:Math.min(i,o),width:Math.abs(a-n),height:Math.abs(o-i)}},gN=function(t){var r=t.x1,n=t.y1,i=t.x2,a=t.y2;return f_({x:r,y:n},{x:i,y:a})},h_=(function(){function e(t){dN(this,e),this.scale=t}return vN(e,[{key:"domain",get:function(){return this.scale.domain}},{key:"range",get:function(){return this.scale.range}},{key:"rangeMin",get:function(){return this.range()[0]}},{key:"rangeMax",get:function(){return this.range()[1]}},{key:"bandwidth",get:function(){return this.scale.bandwidth}},{key:"apply",value:function(r){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=n.bandAware,a=n.position;if(r!==void 0){if(a)switch(a){case"start":return this.scale(r);case"middle":{var o=this.bandwidth?this.bandwidth()/2:0;return this.scale(r)+o}case"end":{var u=this.bandwidth?this.bandwidth():0;return this.scale(r)+u}default:return this.scale(r)}if(i){var c=this.bandwidth?this.bandwidth()/2:0;return this.scale(r)+c}return this.scale(r)}}},{key:"isInRange",value:function(r){var n=this.range(),i=n[0],a=n[n.length-1];return i<=a?r>=i&&r<=a:r>=a&&r<=i}}],[{key:"create",value:function(r){return new e(r)}}])})();yo(h_,"EPS",1e-4);var Ep=function(t){var r=Object.keys(t).reduce(function(n,i){return ot(ot({},n),{},yo({},i,h_.create(t[i])))},{});return ot(ot({},r),{},{apply:function(i){var a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},o=a.bandAware,u=a.position;return KD(i,function(c,s){return r[s].apply(c,{bandAware:o,position:u})})},isInRange:function(i){return a_(i,function(a,o){return r[o].isInRange(a)})}})};function mN(e){return(e%180+180)%180}var bN=function(t){var r=t.width,n=t.height,i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,a=mN(i),o=a*Math.PI/180,u=Math.atan(n/r),c=o>u&&o-1?c[s?a[f]:f]:void 0}}return ml=n,ml}var bl,g0;function wN(){if(g0)return bl;g0=1;var e=t_();function t(r){var n=e(r),i=n%1;return n===n?i?n-i:n:0}return bl=t,bl}var xl,m0;function ON(){if(m0)return xl;m0=1;var e=cw(),t=xt(),r=wN(),n=Math.max;function i(a,o,u){var c=a==null?0:a.length;if(!c)return-1;var s=u==null?0:r(u);return s<0&&(s=n(c+s,0)),e(a,t(o,3),s)}return xl=i,xl}var wl,b0;function _N(){if(b0)return wl;b0=1;var e=xN(),t=ON(),r=e(t);return wl=r,wl}var AN=_N();const SN=ce(AN);var PN=_x();const TN=ce(PN);var EN=TN(function(e){return{x:e.left,y:e.top,width:e.width,height:e.height}},function(e){return["l",e.left,"t",e.top,"w",e.width,"h",e.height].join("")}),jp=N.createContext(void 0),Mp=N.createContext(void 0),p_=N.createContext(void 0),d_=N.createContext({}),v_=N.createContext(void 0),y_=N.createContext(0),g_=N.createContext(0),x0=function(t){var r=t.state,n=r.xAxisMap,i=r.yAxisMap,a=r.offset,o=t.clipPathId,u=t.children,c=t.width,s=t.height,f=EN(a);return S.createElement(jp.Provider,{value:n},S.createElement(Mp.Provider,{value:i},S.createElement(d_.Provider,{value:a},S.createElement(p_.Provider,{value:f},S.createElement(v_.Provider,{value:o},S.createElement(y_.Provider,{value:s},S.createElement(g_.Provider,{value:c},u)))))))},jN=function(){return N.useContext(v_)},m_=function(t){var r=N.useContext(jp);r==null&&or(!1);var n=r[t];return n==null&&or(!1),n},MN=function(){var t=N.useContext(jp);return qt(t)},$N=function(){var t=N.useContext(Mp),r=SN(t,function(n){return a_(n.domain,Number.isFinite)});return r||qt(t)},b_=function(t){var r=N.useContext(Mp);r==null&&or(!1);var n=r[t];return n==null&&or(!1),n},IN=function(){var t=N.useContext(p_);return t},CN=function(){return N.useContext(d_)},$p=function(){return N.useContext(g_)},Ip=function(){return N.useContext(y_)};function Vr(e){"@babel/helpers - typeof";return Vr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Vr(e)}function kN(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function RN(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);re*i)return!1;var a=r();return e*(t-e*a/2-n)>=0&&e*(t+e*a/2-i)<=0}function yq(e,t){return P_(e,t+1)}function gq(e,t,r,n,i){for(var a=(n||[]).slice(),o=t.start,u=t.end,c=0,s=1,f=o,l=function(){var y=n?.[c];if(y===void 0)return{v:P_(n,s)};var v=c,d,m=function(){return d===void 0&&(d=r(y,v)),d},x=y.coordinate,w=c===0||$a(e,x,m,f,u);w||(c=0,f=o,s+=1),w&&(f=x+e*(m()/2+i),c+=s)},h;s<=a.length;)if(h=l(),h)return h.v;return[]}function di(e){"@babel/helpers - typeof";return di=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},di(e)}function E0(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function ke(e){for(var t=1;t0?p.coordinate-d*e:p.coordinate})}else a[h]=p=ke(ke({},p),{},{tickCoord:p.coordinate});var m=$a(e,p.tickCoord,v,u,c);m&&(c=p.tickCoord-e*(v()/2+i),a[h]=ke(ke({},p),{},{isShow:!0}))},f=o-1;f>=0;f--)s(f);return a}function Oq(e,t,r,n,i,a){var o=(n||[]).slice(),u=o.length,c=t.start,s=t.end;if(a){var f=n[u-1],l=r(f,u-1),h=e*(f.coordinate+e*l/2-s);o[u-1]=f=ke(ke({},f),{},{tickCoord:h>0?f.coordinate-h*e:f.coordinate});var p=$a(e,f.tickCoord,function(){return l},c,s);p&&(s=f.tickCoord-e*(l/2+i),o[u-1]=ke(ke({},f),{},{isShow:!0}))}for(var y=a?u-1:u,v=function(x){var w=o[x],O,g=function(){return O===void 0&&(O=r(w,x)),O};if(x===0){var b=e*(w.coordinate-e*g()/2-c);o[x]=w=ke(ke({},w),{},{tickCoord:b<0?w.coordinate-b*e:w.coordinate})}else o[x]=w=ke(ke({},w),{},{tickCoord:w.coordinate});var _=$a(e,w.tickCoord,g,c,s);_&&(c=w.tickCoord+e*(g()/2+i),o[x]=ke(ke({},w),{},{isShow:!0}))},d=0;d=2?qe(i[1].coordinate-i[0].coordinate):1,m=vq(a,d,p);return c==="equidistantPreserveStart"?gq(d,m,v,i,o):(c==="preserveStart"||c==="preserveStartEnd"?h=Oq(d,m,v,i,o,c==="preserveStartEnd"):h=wq(d,m,v,i,o),h.filter(function(x){return x.isShow}))}var _q=["viewBox"],Aq=["viewBox"],Sq=["ticks"];function Zr(e){"@babel/helpers - typeof";return Zr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Zr(e)}function Pr(){return Pr=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Pq(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function Tq(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function M0(e,t){for(var r=0;r0?c(this.props):c(p)),o<=0||u<=0||!y||!y.length?null:S.createElement(ne,{className:te("recharts-cartesian-axis",s),ref:function(d){n.layerReference=d}},a&&this.renderAxisLine(),this.renderTicks(y,this.state.fontSize,this.state.letterSpacing),je.renderCallByParent(this.props))}}],[{key:"renderTickItem",value:function(n,i,a){var o,u=te(i.className,"recharts-cartesian-axis-tick-value");return S.isValidElement(n)?o=S.cloneElement(n,Oe(Oe({},i),{},{className:u})):X(n)?o=n(Oe(Oe({},i),{},{className:u})):o=S.createElement(sr,Pr({},i,{className:"recharts-cartesian-axis-tick-value"}),a),o}}])})(N.Component);Dp(vn,"displayName","CartesianAxis");Dp(vn,"defaultProps",{x:0,y:0,width:0,height:0,viewBox:{x:0,y:0,width:0,height:0},orientation:"bottom",ticks:[],stroke:"#666",tickLine:!0,axisLine:!0,tick:!0,mirror:!1,minTickGap:5,tickSize:6,tickMargin:2,interval:"preserveEnd"});var kq=["x1","y1","x2","y2","key"],Rq=["offset"];function fr(e){"@babel/helpers - typeof";return fr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},fr(e)}function $0(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,n)}return r}function Re(e){for(var t=1;t=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Lq(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}var Bq=function(t){var r=t.fill;if(!r||r==="none")return null;var n=t.fillOpacity,i=t.x,a=t.y,o=t.width,u=t.height,c=t.ry;return S.createElement("rect",{x:i,y:a,ry:c,width:o,height:u,stroke:"none",fill:r,fillOpacity:n,className:"recharts-cartesian-grid-bg"})};function j_(e,t){var r;if(S.isValidElement(e))r=S.cloneElement(e,t);else if(X(e))r=e(t);else{var n=t.x1,i=t.y1,a=t.x2,o=t.y2,u=t.key,c=I0(t,kq),s=K(c,!1);s.offset;var f=I0(s,Rq);r=S.createElement("line",nr({},f,{x1:n,y1:i,x2:a,y2:o,fill:"none",key:u}))}return r}function Fq(e){var t=e.x,r=e.width,n=e.horizontal,i=n===void 0?!0:n,a=e.horizontalPoints;if(!i||!a||!a.length)return null;var o=a.map(function(u,c){var s=Re(Re({},e),{},{x1:t,y1:u,x2:t+r,y2:u,key:"line-".concat(c),index:c});return j_(i,s)});return S.createElement("g",{className:"recharts-cartesian-grid-horizontal"},o)}function Uq(e){var t=e.y,r=e.height,n=e.vertical,i=n===void 0?!0:n,a=e.verticalPoints;if(!i||!a||!a.length)return null;var o=a.map(function(u,c){var s=Re(Re({},e),{},{x1:u,y1:t,x2:u,y2:t+r,key:"line-".concat(c),index:c});return j_(i,s)});return S.createElement("g",{className:"recharts-cartesian-grid-vertical"},o)}function Wq(e){var t=e.horizontalFill,r=e.fillOpacity,n=e.x,i=e.y,a=e.width,o=e.height,u=e.horizontalPoints,c=e.horizontal,s=c===void 0?!0:c;if(!s||!t||!t.length)return null;var f=u.map(function(h){return Math.round(h+i-i)}).sort(function(h,p){return h-p});i!==f[0]&&f.unshift(0);var l=f.map(function(h,p){var y=!f[p+1],v=y?i+o-h:f[p+1]-h;if(v<=0)return null;var d=p%t.length;return S.createElement("rect",{key:"react-".concat(p),y:h,x:n,height:v,width:a,stroke:"none",fill:t[d],fillOpacity:r,className:"recharts-cartesian-grid-bg"})});return S.createElement("g",{className:"recharts-cartesian-gridstripes-horizontal"},l)}function zq(e){var t=e.vertical,r=t===void 0?!0:t,n=e.verticalFill,i=e.fillOpacity,a=e.x,o=e.y,u=e.width,c=e.height,s=e.verticalPoints;if(!r||!n||!n.length)return null;var f=s.map(function(h){return Math.round(h+a-a)}).sort(function(h,p){return h-p});a!==f[0]&&f.unshift(0);var l=f.map(function(h,p){var y=!f[p+1],v=y?a+u-h:f[p+1]-h;if(v<=0)return null;var d=p%n.length;return S.createElement("rect",{key:"react-".concat(p),x:h,y:o,width:v,height:c,stroke:"none",fill:n[d],fillOpacity:i,className:"recharts-cartesian-grid-bg"})});return S.createElement("g",{className:"recharts-cartesian-gridstripes-vertical"},l)}var Kq=function(t,r){var n=t.xAxis,i=t.width,a=t.height,o=t.offset;return jO(Rp(Re(Re(Re({},vn.defaultProps),n),{},{ticks:Tt(n,!0),viewBox:{x:0,y:0,width:i,height:a}})),o.left,o.left+o.width,r)},Hq=function(t,r){var n=t.yAxis,i=t.width,a=t.height,o=t.offset;return jO(Rp(Re(Re(Re({},vn.defaultProps),n),{},{ticks:Tt(n,!0),viewBox:{x:0,y:0,width:i,height:a}})),o.top,o.top+o.height,r)},wr={horizontal:!0,vertical:!0,stroke:"#ccc",fill:"none",verticalFill:[],horizontalFill:[]};function Gq(e){var t,r,n,i,a,o,u=$p(),c=Ip(),s=CN(),f=Re(Re({},e),{},{stroke:(t=e.stroke)!==null&&t!==void 0?t:wr.stroke,fill:(r=e.fill)!==null&&r!==void 0?r:wr.fill,horizontal:(n=e.horizontal)!==null&&n!==void 0?n:wr.horizontal,horizontalFill:(i=e.horizontalFill)!==null&&i!==void 0?i:wr.horizontalFill,vertical:(a=e.vertical)!==null&&a!==void 0?a:wr.vertical,verticalFill:(o=e.verticalFill)!==null&&o!==void 0?o:wr.verticalFill,x:q(e.x)?e.x:s.left,y:q(e.y)?e.y:s.top,width:q(e.width)?e.width:s.width,height:q(e.height)?e.height:s.height}),l=f.x,h=f.y,p=f.width,y=f.height,v=f.syncWithTicks,d=f.horizontalValues,m=f.verticalValues,x=MN(),w=$N();if(!q(p)||p<=0||!q(y)||y<=0||!q(l)||l!==+l||!q(h)||h!==+h)return null;var O=f.verticalCoordinatesGenerator||Kq,g=f.horizontalCoordinatesGenerator||Hq,b=f.horizontalPoints,_=f.verticalPoints;if((!b||!b.length)&&X(g)){var A=d&&d.length,P=g({yAxis:w?Re(Re({},w),{},{ticks:A?d:w.ticks}):void 0,width:u,height:c,offset:s},A?!0:v);st(Array.isArray(P),"horizontalCoordinatesGenerator should return Array but instead it returned [".concat(fr(P),"]")),Array.isArray(P)&&(b=P)}if((!_||!_.length)&&X(O)){var j=m&&m.length,T=O({xAxis:x?Re(Re({},x),{},{ticks:j?m:x.ticks}):void 0,width:u,height:c,offset:s},j?!0:v);st(Array.isArray(T),"verticalCoordinatesGenerator should return Array but instead it returned [".concat(fr(T),"]")),Array.isArray(T)&&(_=T)}return S.createElement("g",{className:"recharts-cartesian-grid"},S.createElement(Bq,{fill:f.fill,fillOpacity:f.fillOpacity,x:f.x,y:f.y,width:f.width,height:f.height,ry:f.ry}),S.createElement(Fq,nr({},f,{offset:s,horizontalPoints:b,xAxis:x,yAxis:w})),S.createElement(Uq,nr({},f,{offset:s,verticalPoints:_,xAxis:x,yAxis:w})),S.createElement(Wq,nr({},f,{horizontalPoints:b})),S.createElement(zq,nr({},f,{verticalPoints:_})))}Gq.displayName="CartesianGrid";var Vq=["type","layout","connectNulls","ref"],Xq=["key"];function Jr(e){"@babel/helpers - typeof";return Jr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Jr(e)}function C0(e,t){if(e==null)return{};var r=Yq(e,t),n,i;if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Yq(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function Rn(){return Rn=Object.assign?Object.assign.bind():function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);rl){p=[].concat(Or(c.slice(0,y)),[l-v]);break}var d=p.length%2===0?[0,h]:[h];return[].concat(Or(t.repeat(c,f)),Or(p),d).map(function(m){return"".concat(m,"px")}).join(", ")}),ut(r,"id",un("recharts-line-")),ut(r,"pathRef",function(o){r.mainCurve=o}),ut(r,"handleAnimationEnd",function(){r.setState({isAnimationFinished:!0}),r.props.onAnimationEnd&&r.props.onAnimationEnd()}),ut(r,"handleAnimationStart",function(){r.setState({isAnimationFinished:!1}),r.props.onAnimationStart&&r.props.onAnimationStart()}),r}return o2(t,e),r2(t,[{key:"componentDidMount",value:function(){if(this.props.isAnimationActive){var n=this.getTotalLength();this.setState({totalLength:n})}}},{key:"componentDidUpdate",value:function(){if(this.props.isAnimationActive){var n=this.getTotalLength();n!==this.state.totalLength&&this.setState({totalLength:n})}}},{key:"getTotalLength",value:function(){var n=this.mainCurve;try{return n&&n.getTotalLength&&n.getTotalLength()||0}catch{return 0}}},{key:"renderErrorBar",value:function(n,i){if(this.props.isAnimationActive&&!this.state.isAnimationFinished)return null;var a=this.props,o=a.points,u=a.xAxis,c=a.yAxis,s=a.layout,f=a.children,l=Ye(f,_i);if(!l)return null;var h=function(v,d){return{x:v.x,y:v.y,value:v.value,errorVal:Ae(v.payload,d)}},p={clipPath:n?"url(#clipPath-".concat(i,")"):null};return S.createElement(ne,p,l.map(function(y){return S.cloneElement(y,{key:"bar-".concat(y.props.dataKey),data:o,xAxis:u,yAxis:c,layout:s,dataPointFormatter:h})}))}},{key:"renderDots",value:function(n,i,a){var o=this.props.isAnimationActive;if(o&&!this.state.isAnimationFinished)return null;var u=this.props,c=u.dot,s=u.points,f=u.dataKey,l=K(this.props,!1),h=K(c,!0),p=s.map(function(v,d){var m=ze(ze(ze({key:"dot-".concat(d),r:3},l),h),{},{index:d,cx:v.x,cy:v.y,value:v.value,dataKey:f,payload:v.payload,points:s});return t.renderDotItem(c,m)}),y={clipPath:n?"url(#clipPath-".concat(i?"":"dots-").concat(a,")"):null};return S.createElement(ne,Rn({className:"recharts-line-dots",key:"dots"},y),p)}},{key:"renderCurveStatically",value:function(n,i,a,o){var u=this.props,c=u.type,s=u.layout,f=u.connectNulls;u.ref;var l=C0(u,Vq),h=ze(ze(ze({},K(l,!0)),{},{fill:"none",className:"recharts-line-curve",clipPath:i?"url(#clipPath-".concat(a,")"):null,points:n},o),{},{type:c,layout:s,connectNulls:f});return S.createElement(pa,Rn({},h,{pathRef:this.pathRef}))}},{key:"renderCurveWithAnimation",value:function(n,i){var a=this,o=this.props,u=o.points,c=o.strokeDasharray,s=o.isAnimationActive,f=o.animationBegin,l=o.animationDuration,h=o.animationEasing,p=o.animationId,y=o.animateNewValues,v=o.width,d=o.height,m=this.state,x=m.prevPoints,w=m.totalLength;return S.createElement(bt,{begin:f,duration:l,isActive:s,easing:h,from:{t:0},to:{t:1},key:"line-".concat(p),onAnimationEnd:this.handleAnimationEnd,onAnimationStart:this.handleAnimationStart},function(O){var g=O.t;if(x){var b=x.length/u.length,_=u.map(function(E,M){var I=Math.floor(M*b);if(x[I]){var $=x[I],k=Ge($.x,E.x),R=Ge($.y,E.y);return ze(ze({},E),{},{x:k(g),y:R(g)})}if(y){var L=Ge(v*2,E.x),B=Ge(d/2,E.y);return ze(ze({},E),{},{x:L(g),y:B(g)})}return ze(ze({},E),{},{x:E.x,y:E.y})});return a.renderCurveStatically(_,n,i)}var A=Ge(0,w),P=A(g),j;if(c){var T="".concat(c).split(/[,\s]+/gim).map(function(E){return parseFloat(E)});j=a.getStrokeDasharray(P,w,T)}else j=a.generateSimpleStrokeDasharray(w,P);return a.renderCurveStatically(u,n,i,{strokeDasharray:j})})}},{key:"renderCurve",value:function(n,i){var a=this.props,o=a.points,u=a.isAnimationActive,c=this.state,s=c.prevPoints,f=c.totalLength;return u&&o&&o.length&&(!s&&f>0||!Oi(s,o))?this.renderCurveWithAnimation(n,i):this.renderCurveStatically(o,n,i)}},{key:"render",value:function(){var n,i=this.props,a=i.hide,o=i.dot,u=i.points,c=i.className,s=i.xAxis,f=i.yAxis,l=i.top,h=i.left,p=i.width,y=i.height,v=i.isAnimationActive,d=i.id;if(a||!u||!u.length)return null;var m=this.state.isAnimationFinished,x=u.length===1,w=te("recharts-line",c),O=s&&s.allowDataOverflow,g=f&&f.allowDataOverflow,b=O||g,_=J(d)?this.id:d,A=(n=K(o,!1))!==null&&n!==void 0?n:{r:3,strokeWidth:2},P=A.r,j=P===void 0?3:P,T=A.strokeWidth,E=T===void 0?2:T,M=G1(o)?o:{},I=M.clipDot,$=I===void 0?!0:I,k=j*2+E;return S.createElement(ne,{className:w},O||g?S.createElement("defs",null,S.createElement("clipPath",{id:"clipPath-".concat(_)},S.createElement("rect",{x:O?h:h-p/2,y:g?l:l-y/2,width:O?p:p*2,height:g?y:y*2})),!$&&S.createElement("clipPath",{id:"clipPath-dots-".concat(_)},S.createElement("rect",{x:h-k/2,y:l-k/2,width:p+k,height:y+k}))):null,!x&&this.renderCurve(b,_),this.renderErrorBar(b,_),(x||o)&&this.renderDots(b,$,_),(!v||m)&&Mt.renderCallByParent(this.props,u))}}],[{key:"getDerivedStateFromProps",value:function(n,i){return n.animationId!==i.prevAnimationId?{prevAnimationId:n.animationId,curPoints:n.points,prevPoints:i.curPoints}:n.points!==i.curPoints?{curPoints:n.points}:null}},{key:"repeat",value:function(n,i){for(var a=n.length%2!==0?[].concat(Or(n),[0]):n,o=[],u=0;ue.length)&&(t=e.length);for(var r=0,n=new Array(t);r=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}function Y2(e,t){if(e==null)return{};var r={};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){if(t.indexOf(n)>=0)continue;r[n]=e[n]}return r}function Z2(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function J2(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r0?o:t&&t.length&&q(i)&&q(a)?t.slice(i,a+1):[]};function z_(e){return e==="number"?[0,"auto"]:void 0}var Ah=function(t,r,n,i){var a=t.graphicalItems,o=t.tooltipAxis,u=Ao(r,t);return n<0||!a||!a.length||n>=u.length?null:a.reduce(function(c,s){var f,l=(f=s.props.data)!==null&&f!==void 0?f:r;l&&t.dataStartIndex+t.dataEndIndex!==0&&t.dataEndIndex-t.dataStartIndex>=n&&(l=l.slice(t.dataStartIndex,t.dataEndIndex+1));var h;if(o.dataKey&&!o.allowDuplicatedCategory){var p=l===void 0?u:l;h=Bi(p,o.dataKey,i)}else h=l&&l[n]||u[n];return h?[].concat(rn(c),[kO(s,h)]):c},[])},U0=function(t,r,n,i){var a=i||{x:t.chartX,y:t.chartY},o=lL(a,n),u=t.orderedTooltipTicks,c=t.tooltipAxis,s=t.tooltipTicks,f=N$(o,u,s,c);if(f>=0&&s){var l=s[f]&&s[f].value,h=Ah(t,r,f,l),p=fL(n,u,f,a);return{activeTooltipIndex:f,activeLabel:l,activePayload:h,activeCoordinate:p}}return null},hL=function(t,r){var n=r.axes,i=r.graphicalItems,a=r.axisType,o=r.axisIdKey,u=r.stackGroups,c=r.dataStartIndex,s=r.dataEndIndex,f=t.layout,l=t.children,h=t.stackOffset,p=EO(f,a);return n.reduce(function(y,v){var d,m=v.type.defaultProps!==void 0?C(C({},v.type.defaultProps),v.props):v.props,x=m.type,w=m.dataKey,O=m.allowDataOverflow,g=m.allowDuplicatedCategory,b=m.scale,_=m.ticks,A=m.includeHidden,P=m[o];if(y[P])return y;var j=Ao(t.data,{graphicalItems:i.filter(function(U){var G,se=o in U.props?U.props[o]:(G=U.type.defaultProps)===null||G===void 0?void 0:G[o];return se===P}),dataStartIndex:c,dataEndIndex:s}),T=j.length,E,M,I;q2(m.domain,O,x)&&(E=qf(m.domain,null,O),p&&(x==="number"||b!=="auto")&&(I=$n(j,w,"category")));var $=z_(x);if(!E||E.length===0){var k,R=(k=m.domain)!==null&&k!==void 0?k:$;if(w){if(E=$n(j,w,x),x==="category"&&p){var L=N1(E);g&&L?(M=E,E=_a(0,T)):g||(E=Bm(R,E,v).reduce(function(U,G){return U.indexOf(G)>=0?U:[].concat(rn(U),[G])},[]))}else if(x==="category")g?E=E.filter(function(U){return U!==""&&!J(U)}):E=Bm(R,E,v).reduce(function(U,G){return U.indexOf(G)>=0||G===""||J(G)?U:[].concat(rn(U),[G])},[]);else if(x==="number"){var B=U$(j,i.filter(function(U){var G,se,me=o in U.props?U.props[o]:(G=U.type.defaultProps)===null||G===void 0?void 0:G[o],De="hide"in U.props?U.props.hide:(se=U.type.defaultProps)===null||se===void 0?void 0:se.hide;return me===P&&(A||!De)}),w,a,f);B&&(E=B)}p&&(x==="number"||b!=="auto")&&(I=$n(j,w,"category"))}else p?E=_a(0,T):u&&u[P]&&u[P].hasStack&&x==="number"?E=h==="expand"?[0,1]:CO(u[P].stackGroups,c,s):E=TO(j,i.filter(function(U){var G=o in U.props?U.props[o]:U.type.defaultProps[o],se="hide"in U.props?U.props.hide:U.type.defaultProps.hide;return G===P&&(A||!se)}),x,f,!0);if(x==="number")E=wh(l,E,P,a,_),R&&(E=qf(R,E,O));else if(x==="category"&&R){var z=R,H=E.every(function(U){return z.indexOf(U)>=0});H&&(E=z)}}return C(C({},y),{},V({},P,C(C({},m),{},{axisType:a,domain:E,categoricalDomain:I,duplicateDomain:M,originalDomain:(d=m.domain)!==null&&d!==void 0?d:$,isCategorical:p,layout:f})))},{})},pL=function(t,r){var n=r.graphicalItems,i=r.Axis,a=r.axisType,o=r.axisIdKey,u=r.stackGroups,c=r.dataStartIndex,s=r.dataEndIndex,f=t.layout,l=t.children,h=Ao(t.data,{graphicalItems:n,dataStartIndex:c,dataEndIndex:s}),p=h.length,y=EO(f,a),v=-1;return n.reduce(function(d,m){var x=m.type.defaultProps!==void 0?C(C({},m.type.defaultProps),m.props):m.props,w=x[o],O=z_("number");if(!d[w]){v++;var g;return y?g=_a(0,p):u&&u[w]&&u[w].hasStack?(g=CO(u[w].stackGroups,c,s),g=wh(l,g,w,a)):(g=qf(O,TO(h,n.filter(function(b){var _,A,P=o in b.props?b.props[o]:(_=b.type.defaultProps)===null||_===void 0?void 0:_[o],j="hide"in b.props?b.props.hide:(A=b.type.defaultProps)===null||A===void 0?void 0:A.hide;return P===w&&!j}),"number",f),i.defaultProps.allowDataOverflow),g=wh(l,g,w,a)),C(C({},d),{},V({},w,C(C({axisType:a},i.defaultProps),{},{hide:!0,orientation:Xe(cL,"".concat(a,".").concat(v%2),null),domain:g,originalDomain:O,isCategorical:y,layout:f})))}return d},{})},dL=function(t,r){var n=r.axisType,i=n===void 0?"xAxis":n,a=r.AxisComp,o=r.graphicalItems,u=r.stackGroups,c=r.dataStartIndex,s=r.dataEndIndex,f=t.children,l="".concat(i,"Id"),h=Ye(f,a),p={};return h&&h.length?p=hL(t,{axes:h,graphicalItems:o,axisType:i,axisIdKey:l,stackGroups:u,dataStartIndex:c,dataEndIndex:s}):o&&o.length&&(p=pL(t,{Axis:a,graphicalItems:o,axisType:i,axisIdKey:l,stackGroups:u,dataStartIndex:c,dataEndIndex:s})),p},vL=function(t){var r=qt(t),n=Tt(r,!1,!0);return{tooltipTicks:n,orderedTooltipTicks:Zh(n,function(i){return i.coordinate}),tooltipAxis:r,tooltipAxisBandSize:la(r,n)}},W0=function(t){var r=t.children,n=t.defaultShowTooltip,i=He(r,Hr),a=0,o=0;return t.data&&t.data.length!==0&&(o=t.data.length-1),i&&i.props&&(i.props.startIndex>=0&&(a=i.props.startIndex),i.props.endIndex>=0&&(o=i.props.endIndex)),{chartX:0,chartY:0,dataStartIndex:a,dataEndIndex:o,activeTooltipIndex:-1,isTooltipActive:!!n}},yL=function(t){return!t||!t.length?!1:t.some(function(r){var n=Et(r&&r.type);return n&&n.indexOf("Bar")>=0})},z0=function(t){return t==="horizontal"?{numericAxisName:"yAxis",cateAxisName:"xAxis"}:t==="vertical"?{numericAxisName:"xAxis",cateAxisName:"yAxis"}:t==="centric"?{numericAxisName:"radiusAxis",cateAxisName:"angleAxis"}:{numericAxisName:"angleAxis",cateAxisName:"radiusAxis"}},gL=function(t,r){var n=t.props,i=t.graphicalItems,a=t.xAxisMap,o=a===void 0?{}:a,u=t.yAxisMap,c=u===void 0?{}:u,s=n.width,f=n.height,l=n.children,h=n.margin||{},p=He(l,Hr),y=He(l,jr),v=Object.keys(c).reduce(function(g,b){var _=c[b],A=_.orientation;return!_.mirror&&!_.hide?C(C({},g),{},V({},A,g[A]+_.width)):g},{left:h.left||0,right:h.right||0}),d=Object.keys(o).reduce(function(g,b){var _=o[b],A=_.orientation;return!_.mirror&&!_.hide?C(C({},g),{},V({},A,Xe(g,"".concat(A))+_.height)):g},{top:h.top||0,bottom:h.bottom||0}),m=C(C({},d),v),x=m.bottom;p&&(m.bottom+=p.props.height||Hr.defaultProps.height),y&&r&&(m=B$(m,i,n,r));var w=s-m.left-m.right,O=f-m.top-m.bottom;return C(C({brushBottom:x},m),{},{width:Math.max(w,0),height:Math.max(O,0)})},mL=function(t,r){if(r==="xAxis")return t[r].width;if(r==="yAxis")return t[r].height},Np=function(t){var r=t.chartName,n=t.GraphicalChild,i=t.defaultTooltipEventType,a=i===void 0?"axis":i,o=t.validateTooltipEventTypes,u=o===void 0?["axis"]:o,c=t.axisComponents,s=t.legendContent,f=t.formatAxisMap,l=t.defaultProps,h=function(m,x){var w=x.graphicalItems,O=x.stackGroups,g=x.offset,b=x.updateId,_=x.dataStartIndex,A=x.dataEndIndex,P=m.barSize,j=m.layout,T=m.barGap,E=m.barCategoryGap,M=m.maxBarSize,I=z0(j),$=I.numericAxisName,k=I.cateAxisName,R=yL(w),L=[];return w.forEach(function(B,z){var H=Ao(m.data,{graphicalItems:[B],dataStartIndex:_,dataEndIndex:A}),U=B.type.defaultProps!==void 0?C(C({},B.type.defaultProps),B.props):B.props,G=U.dataKey,se=U.maxBarSize,me=U["".concat($,"Id")],De=U["".concat(k,"Id")],wt={},Ie=c.reduce(function(Ze,Ce){var Te=x["".concat(Ce.axisType,"Map")],Kt=U["".concat(Ce.axisType,"Id")];Te&&Te[Kt]||Ce.axisType==="zAxis"||or(!1);var Ht=Te[Kt];return C(C({},Ze),{},V(V({},Ce.axisType,Ht),"".concat(Ce.axisType,"Ticks"),Tt(Ht)))},wt),F=Ie[k],Q=Ie["".concat(k,"Ticks")],ee=O&&O[me]&&O[me].hasStack&&Z$(B,O[me].stackGroups),D=Et(B.type).indexOf("Bar")>=0,ve=la(F,Q),re=[],Y=R&&q$({barSize:P,stackGroups:O,totalSize:mL(Ie,k)});if(D){var ye,Z,Ne=J(se)?M:se,We=(ye=(Z=la(F,Q,!0))!==null&&Z!==void 0?Z:Ne)!==null&&ye!==void 0?ye:0;re=L$({barGap:T,barCategoryGap:E,bandSize:We!==ve?We:ve,sizeList:Y[De],maxBarSize:Ne}),We!==ve&&(re=re.map(function(Ze){return C(C({},Ze),{},{position:C(C({},Ze.position),{},{offset:Ze.position.offset-We/2})})}))}var gr=B&&B.type&&B.type.getComposedData;gr&&L.push({props:C(C({},gr(C(C({},Ie),{},{displayedData:H,props:m,dataKey:G,item:B,bandSize:ve,barPosition:re,offset:g,stackedData:ee,layout:j,dataStartIndex:_,dataEndIndex:A}))),{},V(V(V({key:B.key||"item-".concat(z)},$,Ie[$]),k,Ie[k]),"animationId",b)),childIndex:Y1(B,m.children),item:B})}),L},p=function(m,x){var w=m.props,O=m.dataStartIndex,g=m.dataEndIndex,b=m.updateId;if(!Jd({props:w}))return null;var _=w.children,A=w.layout,P=w.stackOffset,j=w.data,T=w.reverseStackOrder,E=z0(A),M=E.numericAxisName,I=E.cateAxisName,$=Ye(_,n),k=X$(j,$,"".concat(M,"Id"),"".concat(I,"Id"),P,T),R=c.reduce(function(U,G){var se="".concat(G.axisType,"Map");return C(C({},U),{},V({},se,dL(w,C(C({},G),{},{graphicalItems:$,stackGroups:G.axisType===M&&k,dataStartIndex:O,dataEndIndex:g}))))},{}),L=gL(C(C({},R),{},{props:w,graphicalItems:$}),x?.legendBBox);Object.keys(R).forEach(function(U){R[U]=f(w,R[U],L,U.replace("Map",""),r)});var B=R["".concat(I,"Map")],z=vL(B),H=h(w,C(C({},R),{},{dataStartIndex:O,dataEndIndex:g,updateId:b,graphicalItems:$,stackGroups:k,offset:L}));return C(C({formattedGraphicalItems:H,graphicalItems:$,offset:L,stackGroups:k},z),R)},y=(function(d){function m(x){var w,O,g;return Z2(this,m),g=eL(this,m,[x]),V(g,"eventEmitterSymbol",Symbol("rechartsEventEmitter")),V(g,"accessibilityManager",new N2),V(g,"handleLegendBBoxUpdate",function(b){if(b){var _=g.state,A=_.dataStartIndex,P=_.dataEndIndex,j=_.updateId;g.setState(C({legendBBox:b},p({props:g.props,dataStartIndex:A,dataEndIndex:P,updateId:j},C(C({},g.state),{},{legendBBox:b}))))}}),V(g,"handleReceiveSyncEvent",function(b,_,A){if(g.props.syncId===b){if(A===g.eventEmitterSymbol&&typeof g.props.syncMethod!="function")return;g.applySyncEvent(_)}}),V(g,"handleBrushChange",function(b){var _=b.startIndex,A=b.endIndex;if(_!==g.state.dataStartIndex||A!==g.state.dataEndIndex){var P=g.state.updateId;g.setState(function(){return C({dataStartIndex:_,dataEndIndex:A},p({props:g.props,dataStartIndex:_,dataEndIndex:A,updateId:P},g.state))}),g.triggerSyncEvent({dataStartIndex:_,dataEndIndex:A})}}),V(g,"handleMouseEnter",function(b){var _=g.getMouseInfo(b);if(_){var A=C(C({},_),{},{isTooltipActive:!0});g.setState(A),g.triggerSyncEvent(A);var P=g.props.onMouseEnter;X(P)&&P(A,b)}}),V(g,"triggeredAfterMouseMove",function(b){var _=g.getMouseInfo(b),A=_?C(C({},_),{},{isTooltipActive:!0}):{isTooltipActive:!1};g.setState(A),g.triggerSyncEvent(A);var P=g.props.onMouseMove;X(P)&&P(A,b)}),V(g,"handleItemMouseEnter",function(b){g.setState(function(){return{isTooltipActive:!0,activeItem:b,activePayload:b.tooltipPayload,activeCoordinate:b.tooltipPosition||{x:b.cx,y:b.cy}}})}),V(g,"handleItemMouseLeave",function(){g.setState(function(){return{isTooltipActive:!1}})}),V(g,"handleMouseMove",function(b){b.persist(),g.throttleTriggeredAfterMouseMove(b)}),V(g,"handleMouseLeave",function(b){g.throttleTriggeredAfterMouseMove.cancel();var _={isTooltipActive:!1};g.setState(_),g.triggerSyncEvent(_);var A=g.props.onMouseLeave;X(A)&&A(_,b)}),V(g,"handleOuterEvent",function(b){var _=X1(b),A=Xe(g.props,"".concat(_));if(_&&X(A)){var P,j;/.*touch.*/i.test(_)?j=g.getMouseInfo(b.changedTouches[0]):j=g.getMouseInfo(b),A((P=j)!==null&&P!==void 0?P:{},b)}}),V(g,"handleClick",function(b){var _=g.getMouseInfo(b);if(_){var A=C(C({},_),{},{isTooltipActive:!0});g.setState(A),g.triggerSyncEvent(A);var P=g.props.onClick;X(P)&&P(A,b)}}),V(g,"handleMouseDown",function(b){var _=g.props.onMouseDown;if(X(_)){var A=g.getMouseInfo(b);_(A,b)}}),V(g,"handleMouseUp",function(b){var _=g.props.onMouseUp;if(X(_)){var A=g.getMouseInfo(b);_(A,b)}}),V(g,"handleTouchMove",function(b){b.changedTouches!=null&&b.changedTouches.length>0&&g.throttleTriggeredAfterMouseMove(b.changedTouches[0])}),V(g,"handleTouchStart",function(b){b.changedTouches!=null&&b.changedTouches.length>0&&g.handleMouseDown(b.changedTouches[0])}),V(g,"handleTouchEnd",function(b){b.changedTouches!=null&&b.changedTouches.length>0&&g.handleMouseUp(b.changedTouches[0])}),V(g,"handleDoubleClick",function(b){var _=g.props.onDoubleClick;if(X(_)){var A=g.getMouseInfo(b);_(A,b)}}),V(g,"handleContextMenu",function(b){var _=g.props.onContextMenu;if(X(_)){var A=g.getMouseInfo(b);_(A,b)}}),V(g,"triggerSyncEvent",function(b){g.props.syncId!==void 0&&Al.emit(Sl,g.props.syncId,b,g.eventEmitterSymbol)}),V(g,"applySyncEvent",function(b){var _=g.props,A=_.layout,P=_.syncMethod,j=g.state.updateId,T=b.dataStartIndex,E=b.dataEndIndex;if(b.dataStartIndex!==void 0||b.dataEndIndex!==void 0)g.setState(C({dataStartIndex:T,dataEndIndex:E},p({props:g.props,dataStartIndex:T,dataEndIndex:E,updateId:j},g.state)));else if(b.activeTooltipIndex!==void 0){var M=b.chartX,I=b.chartY,$=b.activeTooltipIndex,k=g.state,R=k.offset,L=k.tooltipTicks;if(!R)return;if(typeof P=="function")$=P(L,b);else if(P==="value"){$=-1;for(var B=0;B=0){var ee,D;if(M.dataKey&&!M.allowDuplicatedCategory){var ve=typeof M.dataKey=="function"?Q:"payload.".concat(M.dataKey.toString());ee=Bi(B,ve,$),D=z&&H&&Bi(H,ve,$)}else ee=B?.[I],D=z&&H&&H[I];if(De||me){var re=b.props.activeIndex!==void 0?b.props.activeIndex:I;return[N.cloneElement(b,C(C(C({},P.props),Ie),{},{activeIndex:re})),null,null]}if(!J(ee))return[F].concat(rn(g.renderActivePoints({item:P,activePoint:ee,basePoint:D,childIndex:I,isRange:z})))}else{var Y,ye=(Y=g.getItemByXY(g.state.activeCoordinate))!==null&&Y!==void 0?Y:{graphicalItem:F},Z=ye.graphicalItem,Ne=Z.item,We=Ne===void 0?b:Ne,gr=Z.childIndex,Ze=C(C(C({},P.props),Ie),{},{activeIndex:gr});return[N.cloneElement(We,Ze),null,null]}return z?[F,null,null]:[F,null]}),V(g,"renderCustomized",function(b,_,A){return N.cloneElement(b,C(C({key:"recharts-customized-".concat(A)},g.props),g.state))}),V(g,"renderMap",{CartesianGrid:{handler:qi,once:!0},ReferenceArea:{handler:g.renderReferenceElement},ReferenceLine:{handler:qi},ReferenceDot:{handler:g.renderReferenceElement},XAxis:{handler:qi},YAxis:{handler:qi},Brush:{handler:g.renderBrush,once:!0},Bar:{handler:g.renderGraphicChild},Line:{handler:g.renderGraphicChild},Area:{handler:g.renderGraphicChild},Radar:{handler:g.renderGraphicChild},RadialBar:{handler:g.renderGraphicChild},Scatter:{handler:g.renderGraphicChild},Pie:{handler:g.renderGraphicChild},Funnel:{handler:g.renderGraphicChild},Tooltip:{handler:g.renderCursor,once:!0},PolarGrid:{handler:g.renderPolarGrid,once:!0},PolarAngleAxis:{handler:g.renderPolarAxis},PolarRadiusAxis:{handler:g.renderPolarAxis},Customized:{handler:g.renderCustomized}}),g.clipPathId="".concat((w=x.id)!==null&&w!==void 0?w:un("recharts"),"-clip"),g.throttleTriggeredAfterMouseMove=Ow(g.triggeredAfterMouseMove,(O=x.throttleDelay)!==null&&O!==void 0?O:1e3/60),g.state={},g}return nL(m,d),Q2(m,[{key:"componentDidMount",value:function(){var w,O;this.addListener(),this.accessibilityManager.setDetails({container:this.container,offset:{left:(w=this.props.margin.left)!==null&&w!==void 0?w:0,top:(O=this.props.margin.top)!==null&&O!==void 0?O:0},coordinateList:this.state.tooltipTicks,mouseHandlerCallback:this.triggeredAfterMouseMove,layout:this.props.layout}),this.displayDefaultTooltip()}},{key:"displayDefaultTooltip",value:function(){var w=this.props,O=w.children,g=w.data,b=w.height,_=w.layout,A=He(O,_t);if(A){var P=A.props.defaultIndex;if(!(typeof P!="number"||P<0||P>this.state.tooltipTicks.length-1)){var j=this.state.tooltipTicks[P]&&this.state.tooltipTicks[P].value,T=Ah(this.state,g,P,j),E=this.state.tooltipTicks[P].coordinate,M=(this.state.offset.top+b)/2,I=_==="horizontal",$=I?{x:E,y:M}:{y:E,x:M},k=this.state.formattedGraphicalItems.find(function(L){var B=L.item;return B.type.name==="Scatter"});k&&($=C(C({},$),k.props.points[P].tooltipPosition),T=k.props.points[P].tooltipPayload);var R={activeTooltipIndex:P,isTooltipActive:!0,activeLabel:j,activePayload:T,activeCoordinate:$};this.setState(R),this.renderCursor(A),this.accessibilityManager.setIndex(P)}}}},{key:"getSnapshotBeforeUpdate",value:function(w,O){if(!this.props.accessibilityLayer)return null;if(this.state.tooltipTicks!==O.tooltipTicks&&this.accessibilityManager.setDetails({coordinateList:this.state.tooltipTicks}),this.props.layout!==w.layout&&this.accessibilityManager.setDetails({layout:this.props.layout}),this.props.margin!==w.margin){var g,b;this.accessibilityManager.setDetails({offset:{left:(g=this.props.margin.left)!==null&&g!==void 0?g:0,top:(b=this.props.margin.top)!==null&&b!==void 0?b:0}})}return null}},{key:"componentDidUpdate",value:function(w){af([He(w.children,_t)],[He(this.props.children,_t)])||this.displayDefaultTooltip()}},{key:"componentWillUnmount",value:function(){this.removeListener(),this.throttleTriggeredAfterMouseMove.cancel()}},{key:"getTooltipEventType",value:function(){var w=He(this.props.children,_t);if(w&&typeof w.props.shared=="boolean"){var O=w.props.shared?"axis":"item";return u.indexOf(O)>=0?O:a}return a}},{key:"getMouseInfo",value:function(w){if(!this.container)return null;var O=this.container,g=O.getBoundingClientRect(),b=ST(g),_={chartX:Math.round(w.pageX-b.left),chartY:Math.round(w.pageY-b.top)},A=g.width/O.offsetWidth||1,P=this.inRange(_.chartX,_.chartY,A);if(!P)return null;var j=this.state,T=j.xAxisMap,E=j.yAxisMap,M=this.getTooltipEventType(),I=U0(this.state,this.props.data,this.props.layout,P);if(M!=="axis"&&T&&E){var $=qt(T).scale,k=qt(E).scale,R=$&&$.invert?$.invert(_.chartX):null,L=k&&k.invert?k.invert(_.chartY):null;return C(C({},_),{},{xValue:R,yValue:L},I)}return I?C(C({},_),I):null}},{key:"inRange",value:function(w,O){var g=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,b=this.props.layout,_=w/g,A=O/g;if(b==="horizontal"||b==="vertical"){var P=this.state.offset,j=_>=P.left&&_<=P.left+P.width&&A>=P.top&&A<=P.top+P.height;return j?{x:_,y:A}:null}var T=this.state,E=T.angleAxisMap,M=T.radiusAxisMap;if(E&&M){var I=qt(E);return Wm({x:_,y:A},I)}return null}},{key:"parseEventsOfWrapper",value:function(){var w=this.props.children,O=this.getTooltipEventType(),g=He(w,_t),b={};g&&O==="axis"&&(g.props.trigger==="click"?b={onClick:this.handleClick}:b={onMouseEnter:this.handleMouseEnter,onDoubleClick:this.handleDoubleClick,onMouseMove:this.handleMouseMove,onMouseLeave:this.handleMouseLeave,onTouchMove:this.handleTouchMove,onTouchStart:this.handleTouchStart,onTouchEnd:this.handleTouchEnd,onContextMenu:this.handleContextMenu});var _=Fi(this.props,this.handleOuterEvent);return C(C({},_),b)}},{key:"addListener",value:function(){Al.on(Sl,this.handleReceiveSyncEvent)}},{key:"removeListener",value:function(){Al.removeListener(Sl,this.handleReceiveSyncEvent)}},{key:"filterFormatItem",value:function(w,O,g){for(var b=this.state.formattedGraphicalItems,_=0,A=b.length;_{let n="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,t=0;e>1;if(n=yh[i])e=i+1;else return!0;if(e==t)return!1}}function al(n){return n>=127462&&n<=127487}const hl=8205;function Nu(n,e,t=!0,i=!0){return(t?bh:Xu)(n,e,i)}function bh(n,e,t){if(e==n.length)return e;e&&Sh(n.charCodeAt(e))&&xh(n.charCodeAt(e-1))&&e--;let i=zs(n,e);for(e+=cl(i);e=0&&al(zs(n,o));)r++,o-=2;if(r%2==0)break;e+=2}else break}return e}function Xu(n,e,t){for(;e>0;){let i=bh(n,e-2,t);if(i=56320&&n<57344}function xh(n){return n>=55296&&n<56320}function cl(n){return n<65536?1:2}class V{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,t,i){[e,t]=li(this,e,t);let s=[];return this.decompose(0,e,s,2),i.length&&i.decompose(0,i.length,s,3),this.decompose(t,this.length,s,1),Ze.from(s,this.length-(t-e)+i.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,t=this.length){[e,t]=li(this,e,t);let i=[];return this.decompose(e,t,i,0),Ze.from(i,t-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let t=this.scanIdentical(e,1),i=this.length-this.scanIdentical(e,-1),s=new Ai(this),r=new Ai(e);for(let o=t,l=t;;){if(s.next(o),r.next(o),o=0,s.lineBreak!=r.lineBreak||s.done!=r.done||s.value!=r.value)return!1;if(l+=s.value.length,s.done||l>=i)return!0}}iter(e=1){return new Ai(this,e)}iterRange(e,t=this.length){return new kh(this,e,t)}iterLines(e,t){let i;if(e==null)i=this.iter();else{t==null&&(t=this.lines+1);let s=this.line(e).from;i=this.iterRange(s,Math.max(s,t==this.lines+1?this.length:t<=1?0:this.line(t-1).to))}return new wh(i)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?V.empty:e.length<=32?new K(e):Ze.from(K.split(e,[]))}}class K extends V{constructor(e,t=Fu(e)){super(),this.text=e,this.length=t}get lines(){return this.text.length}get children(){return null}lineInner(e,t,i,s){for(let r=0;;r++){let o=this.text[r],l=s+o.length;if((t?i:l)>=e)return new _u(s,l,i,o);s=l+1,i++}}decompose(e,t,i,s){let r=e<=0&&t>=this.length?this:new K(fl(this.text,e,t),Math.min(t,this.length)-Math.max(0,e));if(s&1){let o=i.pop(),l=Xn(r.text,o.text.slice(),0,r.length);if(l.length<=32)i.push(new K(l,o.length+r.length));else{let a=l.length>>1;i.push(new K(l.slice(0,a)),new K(l.slice(a)))}}else i.push(r)}replace(e,t,i){if(!(i instanceof K))return super.replace(e,t,i);[e,t]=li(this,e,t);let s=Xn(this.text,Xn(i.text,fl(this.text,0,e)),t),r=this.length+i.length-(t-e);return s.length<=32?new K(s,r):Ze.from(K.split(s,[]),r)}sliceString(e,t=this.length,i=` +`){[e,t]=li(this,e,t);let s="";for(let r=0,o=0;r<=t&&oe&&o&&(s+=i),er&&(s+=l.slice(Math.max(0,e-r),t-r)),r=a+1}return s}flatten(e){for(let t of this.text)e.push(t)}scanIdentical(){return 0}static split(e,t){let i=[],s=-1;for(let r of e)i.push(r),s+=r.length+1,i.length==32&&(t.push(new K(i,s)),i=[],s=-1);return s>-1&&t.push(new K(i,s)),t}}class Ze extends V{constructor(e,t){super(),this.children=e,this.length=t,this.lines=0;for(let i of e)this.lines+=i.lines}lineInner(e,t,i,s){for(let r=0;;r++){let o=this.children[r],l=s+o.length,a=i+o.lines-1;if((t?a:l)>=e)return o.lineInner(e,t,i,s);s=l+1,i=a+1}}decompose(e,t,i,s){for(let r=0,o=0;o<=t&&r=o){let h=s&((o<=e?1:0)|(a>=t?2:0));o>=e&&a<=t&&!h?i.push(l):l.decompose(e-o,t-o,i,h)}o=a+1}}replace(e,t,i){if([e,t]=li(this,e,t),i.lines=r&&t<=l){let a=o.replace(e-r,t-r,i),h=this.lines-o.lines+a.lines;if(a.lines>4&&a.lines>h>>6){let c=this.children.slice();return c[s]=a,new Ze(c,this.length-(t-e)+i.length)}return super.replace(r,l,a)}r=l+1}return super.replace(e,t,i)}sliceString(e,t=this.length,i=` +`){[e,t]=li(this,e,t);let s="";for(let r=0,o=0;re&&r&&(s+=i),eo&&(s+=l.sliceString(e-o,t-o,i)),o=a+1}return s}flatten(e){for(let t of this.children)t.flatten(e)}scanIdentical(e,t){if(!(e instanceof Ze))return 0;let i=0,[s,r,o,l]=t>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;s+=t,r+=t){if(s==o||r==l)return i;let a=this.children[s],h=e.children[r];if(a!=h)return i+a.scanIdentical(h,t);i+=a.length+1}}static from(e,t=e.reduce((i,s)=>i+s.length+1,-1)){let i=0;for(let d of e)i+=d.lines;if(i<32){let d=[];for(let p of e)p.flatten(d);return new K(d,t)}let s=Math.max(32,i>>5),r=s<<1,o=s>>1,l=[],a=0,h=-1,c=[];function f(d){let p;if(d.lines>r&&d instanceof Ze)for(let m of d.children)f(m);else d.lines>o&&(a>o||!a)?(u(),l.push(d)):d instanceof K&&a&&(p=c[c.length-1])instanceof K&&d.lines+p.lines<=32?(a+=d.lines,h+=d.length+1,c[c.length-1]=new K(p.text.concat(d.text),p.length+1+d.length)):(a+d.lines>s&&u(),a+=d.lines,h+=d.length+1,c.push(d))}function u(){a!=0&&(l.push(c.length==1?c[0]:Ze.from(c,h)),h=-1,a=c.length=0)}for(let d of e)f(d);return u(),l.length==1?l[0]:new Ze(l,t)}}V.empty=new K([""],0);function Fu(n){let e=-1;for(let t of n)e+=t.length+1;return e}function Xn(n,e,t=0,i=1e9){for(let s=0,r=0,o=!0;r=t&&(a>i&&(l=l.slice(0,i-s)),s0?1:(e instanceof K?e.text.length:e.children.length)<<1]}nextInner(e,t){for(this.done=this.lineBreak=!1;;){let i=this.nodes.length-1,s=this.nodes[i],r=this.offsets[i],o=r>>1,l=s instanceof K?s.text.length:s.children.length;if(o==(t>0?l:0)){if(i==0)return this.done=!0,this.value="",this;t>0&&this.offsets[i-1]++,this.nodes.pop(),this.offsets.pop()}else if((r&1)==(t>0?0:1)){if(this.offsets[i]+=t,e==0)return this.lineBreak=!0,this.value=` +`,this;e--}else if(s instanceof K){let a=s.text[o+(t<0?-1:0)];if(this.offsets[i]+=t,a.length>Math.max(0,e))return this.value=e==0?a:t>0?a.slice(e):a.slice(0,a.length-e),this;e-=a.length}else{let a=s.children[o+(t<0?-1:0)];e>a.length?(e-=a.length,this.offsets[i]+=t):(t<0&&this.offsets[i]--,this.nodes.push(a),this.offsets.push(t>0?1:(a instanceof K?a.text.length:a.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class kh{constructor(e,t,i){this.value="",this.done=!1,this.cursor=new Ai(e,t>i?-1:1),this.pos=t>i?e.length:0,this.from=Math.min(t,i),this.to=Math.max(t,i)}nextInner(e,t){if(t<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,t<0?this.pos-this.to:this.from-this.pos);let i=t<0?this.pos-this.from:this.to-this.pos;e>i&&(e=i),i-=e;let{value:s}=this.cursor.next(e);return this.pos+=(s.length+e)*t,this.value=s.length<=i?s:t<0?s.slice(s.length-i):s.slice(0,i),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class wh{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:t,lineBreak:i,value:s}=this.inner.next(e);return t&&this.afterBreak?(this.value="",this.afterBreak=!1):t?(this.done=!0,this.value=""):i?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol<"u"&&(V.prototype[Symbol.iterator]=function(){return this.iter()},Ai.prototype[Symbol.iterator]=kh.prototype[Symbol.iterator]=wh.prototype[Symbol.iterator]=function(){return this});class _u{constructor(e,t,i,s){this.from=e,this.to=t,this.number=i,this.text=s}get length(){return this.to-this.from}}function li(n,e,t){return e=Math.max(0,Math.min(n.length,e)),[e,Math.max(e,Math.min(n.length,t))]}function pe(n,e,t=!0,i=!0){return Nu(n,e,t,i)}function Uu(n){return n>=56320&&n<57344}function Hu(n){return n>=55296&&n<56320}function Te(n,e){let t=n.charCodeAt(e);if(!Hu(t)||e+1==n.length)return t;let i=n.charCodeAt(e+1);return Uu(i)?(t-55296<<10)+(i-56320)+65536:t}function bo(n){return n<=65535?String.fromCharCode(n):(n-=65536,String.fromCharCode((n>>10)+55296,(n&1023)+56320))}function Ye(n){return n<65536?1:2}const kr=/\r\n?|\n/;var de=(function(n){return n[n.Simple=0]="Simple",n[n.TrackDel=1]="TrackDel",n[n.TrackBefore=2]="TrackBefore",n[n.TrackAfter=3]="TrackAfter",n})(de||(de={}));class it{constructor(e){this.sections=e}get length(){let e=0;for(let t=0;te)return r+(e-s);r+=l}else{if(i!=de.Simple&&h>=e&&(i==de.TrackDel&&se||i==de.TrackBefore&&se))return null;if(h>e||h==e&&t<0&&!l)return e==s||t<0?r:r+a;r+=a}s=h}if(e>s)throw new RangeError(`Position ${e} is out of range for changeset of length ${s}`);return r}touchesRange(e,t=e){for(let i=0,s=0;i=0&&s<=t&&l>=e)return st?"cover":!0;s=l}return!1}toString(){let e="";for(let t=0;t=0?":"+s:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(t=>typeof t!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new it(e)}static create(e){return new it(e)}}class se extends it{constructor(e,t){super(e),this.inserted=t}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return wr(this,(t,i,s,r,o)=>e=e.replace(s,s+(i-t),o),!1),e}mapDesc(e,t=!1){return vr(this,e,t,!0)}invert(e){let t=this.sections.slice(),i=[];for(let s=0,r=0;s=0){t[s]=l,t[s+1]=o;let a=s>>1;for(;i.length0&&kt(i,t,r.text),r.forward(c),l+=c}let h=e[o++];for(;l>1].toJSON()))}return e}static of(e,t,i){let s=[],r=[],o=0,l=null;function a(c=!1){if(!c&&!s.length)return;ou||f<0||u>t)throw new RangeError(`Invalid change range ${f} to ${u} (in doc of length ${t})`);let p=d?typeof d=="string"?V.of(d.split(i||kr)):d:V.empty,m=p.length;if(f==u&&m==0)return;fo&&Oe(s,f-o,-1),Oe(s,u-f,m),kt(r,s,p),o=u}}return h(e),a(!l),l}static empty(e){return new se(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let t=[],i=[];for(let s=0;sl&&typeof o!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(r.length==1)t.push(r[0],0);else{for(;i.length=0&&t<=0&&t==n[s+1]?n[s]+=e:s>=0&&e==0&&n[s]==0?n[s+1]+=t:i?(n[s]+=e,n[s+1]+=t):n.push(e,t)}function kt(n,e,t){if(t.length==0)return;let i=e.length-2>>1;if(i>1])),!(t||o==n.sections.length||n.sections[o+1]<0);)l=n.sections[o++],a=n.sections[o++];e(s,h,r,c,f),s=h,r=c}}}function vr(n,e,t,i=!1){let s=[],r=i?[]:null,o=new Bi(n),l=new Bi(e);for(let a=-1;;){if(o.done&&l.len||l.done&&o.len)throw new Error("Mismatched change set lengths");if(o.ins==-1&&l.ins==-1){let h=Math.min(o.len,l.len);Oe(s,h,-1),o.forward(h),l.forward(h)}else if(l.ins>=0&&(o.ins<0||a==o.i||o.off==0&&(l.len=0&&a=0){let h=0,c=o.len;for(;c;)if(l.ins==-1){let f=Math.min(c,l.len);h+=f,c-=f,l.forward(f)}else if(l.ins==0&&l.lena||o.ins>=0&&o.len>a)&&(l||i.length>h),r.forward2(a),o.forward(a)}}}}class Bi{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return t>=e.length?V.empty:e[t]}textBit(e){let{inserted:t}=this.set,i=this.i-2>>1;return i>=t.length&&!e?V.empty:t[i].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class Wt{constructor(e,t,i){this.from=e,this.to=t,this.flags=i}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(e,t=-1){let i,s;return this.empty?i=s=e.mapPos(this.from,t):(i=e.mapPos(this.from,1),s=e.mapPos(this.to,-1)),i==this.from&&s==this.to?this:new Wt(i,s,this.flags)}extend(e,t=e){if(e<=this.anchor&&t>=this.anchor)return b.range(e,t);let i=Math.abs(e-this.anchor)>Math.abs(t-this.anchor)?e:t;return b.range(this.anchor,i)}eq(e,t=!1){return this.anchor==e.anchor&&this.head==e.head&&(!t||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return b.range(e.anchor,e.head)}static create(e,t,i){return new Wt(e,t,i)}}class b{constructor(e,t){this.ranges=e,this.mainIndex=t}map(e,t=-1){return e.empty?this:b.create(this.ranges.map(i=>i.map(e,t)),this.mainIndex)}eq(e,t=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let i=0;ie.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new b(e.ranges.map(t=>Wt.fromJSON(t)),e.main)}static single(e,t=e){return new b([b.range(e,t)],0)}static create(e,t=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let i=0,s=0;se?8:0)|r)}static normalized(e,t=0){let i=e[t];e.sort((s,r)=>s.from-r.from),t=e.indexOf(i);for(let s=1;sr.head?b.range(a,l):b.range(l,a))}}return new b(e,t)}}function Th(n,e){for(let t of n.ranges)if(t.to>e)throw new RangeError("Selection points outside of document")}let So=0;class A{constructor(e,t,i,s,r){this.combine=e,this.compareInput=t,this.compare=i,this.isStatic=s,this.id=So++,this.default=e([]),this.extensions=typeof r=="function"?r(this):r}get reader(){return this}static define(e={}){return new A(e.combine||(t=>t),e.compareInput||((t,i)=>t===i),e.compare||(e.combine?(t,i)=>t===i:xo),!!e.static,e.enables)}of(e){return new Fn([],this,0,e)}compute(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new Fn(e,this,1,t)}computeN(e,t){if(this.isStatic)throw new Error("Can't compute a static facet");return new Fn(e,this,2,t)}from(e,t){return t||(t=i=>i),this.compute([e],i=>t(i.field(e)))}}function xo(n,e){return n==e||n.length==e.length&&n.every((t,i)=>t===e[i])}class Fn{constructor(e,t,i,s){this.dependencies=e,this.facet=t,this.type=i,this.value=s,this.id=So++}dynamicSlot(e){var t;let i=this.value,s=this.facet.compareInput,r=this.id,o=e[r]>>1,l=this.type==2,a=!1,h=!1,c=[];for(let f of this.dependencies)f=="doc"?a=!0:f=="selection"?h=!0:(((t=e[f.id])!==null&&t!==void 0?t:1)&1)==0&&c.push(e[f.id]);return{create(f){return f.values[o]=i(f),1},update(f,u){if(a&&u.docChanged||h&&(u.docChanged||u.selection)||Tr(f,c)){let d=i(f);if(l?!ul(d,f.values[o],s):!s(d,f.values[o]))return f.values[o]=d,1}return 0},reconfigure:(f,u)=>{let d,p=u.config.address[r];if(p!=null){let m=ns(u,p);if(this.dependencies.every(g=>g instanceof A?u.facet(g)===f.facet(g):g instanceof he?u.field(g,!1)==f.field(g,!1):!0)||(l?ul(d=i(f),m,s):s(d=i(f),m)))return f.values[o]=m,0}else d=i(f);return f.values[o]=d,1}}}}function ul(n,e,t){if(n.length!=e.length)return!1;for(let i=0;in[a.id]),s=t.map(a=>a.type),r=i.filter(a=>!(a&1)),o=n[e.id]>>1;function l(a){let h=[];for(let c=0;ci===s),e);return e.provide&&(t.provides=e.provide(t)),t}create(e){let t=e.facet(On).find(i=>i.field==this);return(t?.create||this.createF)(e)}slot(e){let t=e[this.id]>>1;return{create:i=>(i.values[t]=this.create(i),1),update:(i,s)=>{let r=i.values[t],o=this.updateF(r,s);return this.compareF(r,o)?0:(i.values[t]=o,1)},reconfigure:(i,s)=>{let r=i.facet(On),o=s.facet(On),l;return(l=r.find(a=>a.field==this))&&l!=o.find(a=>a.field==this)?(i.values[t]=l.create(i),1):s.config.address[this.id]!=null?(i.values[t]=s.field(this),0):(i.values[t]=this.create(i),1)}}}init(e){return[this,On.of({field:this,create:e})]}get extension(){return this}}const $t={lowest:4,low:3,default:2,high:1,highest:0};function Si(n){return e=>new Ch(e,n)}const Mt={highest:Si($t.highest),high:Si($t.high),default:Si($t.default),low:Si($t.low),lowest:Si($t.lowest)};class Ch{constructor(e,t){this.inner=e,this.prec=t}}class vs{of(e){return new Cr(this,e)}reconfigure(e){return vs.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class Cr{constructor(e,t){this.compartment=e,this.inner=t}}class is{constructor(e,t,i,s,r,o){for(this.base=e,this.compartments=t,this.dynamicSlots=i,this.address=s,this.staticValues=r,this.facets=o,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,t,i){let s=[],r=Object.create(null),o=new Map;for(let u of Gu(e,t,o))u instanceof he?s.push(u):(r[u.facet.id]||(r[u.facet.id]=[])).push(u);let l=Object.create(null),a=[],h=[];for(let u of s)l[u.id]=h.length<<1,h.push(d=>u.slot(d));let c=i?.config.facets;for(let u in r){let d=r[u],p=d[0].facet,m=c&&c[u]||[];if(d.every(g=>g.type==0))if(l[p.id]=a.length<<1|1,xo(m,d))a.push(i.facet(p));else{let g=p.combine(d.map(y=>y.value));a.push(i&&p.compare(g,i.facet(p))?i.facet(p):g)}else{for(let g of d)g.type==0?(l[g.id]=a.length<<1|1,a.push(g.value)):(l[g.id]=h.length<<1,h.push(y=>g.dynamicSlot(y)));l[p.id]=h.length<<1,h.push(g=>ju(g,p,d))}}let f=h.map(u=>u(l));return new is(e,o,f,l,a,r)}}function Gu(n,e,t){let i=[[],[],[],[],[]],s=new Map;function r(o,l){let a=s.get(o);if(a!=null){if(a<=l)return;let h=i[a].indexOf(o);h>-1&&i[a].splice(h,1),o instanceof Cr&&t.delete(o.compartment)}if(s.set(o,l),Array.isArray(o))for(let h of o)r(h,l);else if(o instanceof Cr){if(t.has(o.compartment))throw new RangeError("Duplicate use of compartment in extensions");let h=e.get(o.compartment)||o.inner;t.set(o.compartment,h),r(h,l)}else if(o instanceof Ch)r(o.inner,o.prec);else if(o instanceof he)i[l].push(o),o.provides&&r(o.provides,l);else if(o instanceof Fn)i[l].push(o),o.facet.extensions&&r(o.facet.extensions,$t.default);else{let h=o.extension;if(!h)throw new Error(`Unrecognized extension value in extension set (${o}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);r(h,l)}}return r(n,$t.default),i.reduce((o,l)=>o.concat(l))}function Mi(n,e){if(e&1)return 2;let t=e>>1,i=n.status[t];if(i==4)throw new Error("Cyclic dependency between fields and/or facets");if(i&2)return i;n.status[t]=4;let s=n.computeSlot(n,n.config.dynamicSlots[t]);return n.status[t]=2|s}function ns(n,e){return e&1?n.config.staticValues[e>>1]:n.values[e>>1]}const Ph=A.define(),Pr=A.define({combine:n=>n.some(e=>e),static:!0}),Qh=A.define({combine:n=>n.length?n[0]:void 0,static:!0}),Ah=A.define(),Mh=A.define(),Rh=A.define(),Dh=A.define({combine:n=>n.length?n[0]:!1});class st{constructor(e,t){this.type=e,this.value=t}static define(){return new Zu}}class Zu{of(e){return new st(this,e)}}class Yu{constructor(e){this.map=e}of(e){return new q(this,e)}}class q{constructor(e,t){this.type=e,this.value=t}map(e){let t=this.type.map(this.value,e);return t===void 0?void 0:t==this.value?this:new q(this.type,t)}is(e){return this.type==e}static define(e={}){return new Yu(e.map||(t=>t))}static mapEffects(e,t){if(!e.length)return e;let i=[];for(let s of e){let r=s.map(t);r&&i.push(r)}return i}}q.reconfigure=q.define();q.appendConfig=q.define();class ie{constructor(e,t,i,s,r,o){this.startState=e,this.changes=t,this.selection=i,this.effects=s,this.annotations=r,this.scrollIntoView=o,this._doc=null,this._state=null,i&&Th(i,t.newLength),r.some(l=>l.type==ie.time)||(this.annotations=r.concat(ie.time.of(Date.now())))}static create(e,t,i,s,r,o){return new ie(e,t,i,s,r,o)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let t of this.annotations)if(t.type==e)return t.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let t=this.annotation(ie.userEvent);return!!(t&&(t==e||t.length>e.length&&t.slice(0,e.length)==e&&t[e.length]=="."))}}ie.time=st.define();ie.userEvent=st.define();ie.addToHistory=st.define();ie.remote=st.define();function Ku(n,e){let t=[];for(let i=0,s=0;;){let r,o;if(i=n[i]))r=n[i++],o=n[i++];else if(s=0;s--){let r=i[s](n);r instanceof ie?n=r:Array.isArray(r)&&r.length==1&&r[0]instanceof ie?n=r[0]:n=qh(e,ti(r),!1)}return n}function ed(n){let e=n.startState,t=e.facet(Rh),i=n;for(let s=t.length-1;s>=0;s--){let r=t[s](n);r&&Object.keys(r).length&&(i=Eh(i,Qr(e,r,n.changes.newLength),!0))}return i==n?n:ie.create(e,n.changes,n.selection,i.effects,i.annotations,i.scrollIntoView)}const td=[];function ti(n){return n==null?td:Array.isArray(n)?n:[n]}var Y=(function(n){return n[n.Word=0]="Word",n[n.Space=1]="Space",n[n.Other=2]="Other",n})(Y||(Y={}));const id=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let Ar;try{Ar=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function nd(n){if(Ar)return Ar.test(n);for(let e=0;e"€"&&(t.toUpperCase()!=t.toLowerCase()||id.test(t)))return!0}return!1}function sd(n){return e=>{if(!/\S/.test(e))return Y.Space;if(nd(e))return Y.Word;for(let t=0;t-1)return Y.Word;return Y.Other}}class I{constructor(e,t,i,s,r,o){this.config=e,this.doc=t,this.selection=i,this.values=s,this.status=e.statusTemplate.slice(),this.computeSlot=r,o&&(o._state=this);for(let l=0;ls.set(h,a)),t=null),s.set(l.value.compartment,l.value.extension)):l.is(q.reconfigure)?(t=null,i=l.value):l.is(q.appendConfig)&&(t=null,i=ti(i).concat(l.value));let r;t?r=e.startState.values.slice():(t=is.resolve(i,s,this),r=new I(t,this.doc,this.selection,t.dynamicSlots.map(()=>null),(a,h)=>h.reconfigure(a,this),null).values);let o=e.startState.facet(Pr)?e.newSelection:e.newSelection.asSingle();new I(t,e.newDoc,o,r,(l,a)=>a.update(l,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(t=>({changes:{from:t.from,to:t.to,insert:e},range:b.cursor(t.from+e.length)}))}changeByRange(e){let t=this.selection,i=e(t.ranges[0]),s=this.changes(i.changes),r=[i.range],o=ti(i.effects);for(let l=1;lo.spec.fromJSON(l,a)))}}return I.create({doc:e.doc,selection:b.fromJSON(e.selection),extensions:t.extensions?s.concat([t.extensions]):s})}static create(e={}){let t=is.resolve(e.extensions||[],new Map),i=e.doc instanceof V?e.doc:V.of((e.doc||"").split(t.staticFacet(I.lineSeparator)||kr)),s=e.selection?e.selection instanceof b?e.selection:b.single(e.selection.anchor,e.selection.head):b.single(0);return Th(s,i.length),t.staticFacet(Pr)||(s=s.asSingle()),new I(t,i,s,t.dynamicSlots.map(()=>null),(r,o)=>o.create(r),null)}get tabSize(){return this.facet(I.tabSize)}get lineBreak(){return this.facet(I.lineSeparator)||` +`}get readOnly(){return this.facet(Dh)}phrase(e,...t){for(let i of this.facet(I.phrases))if(Object.prototype.hasOwnProperty.call(i,e)){e=i[e];break}return t.length&&(e=e.replace(/\$(\$|\d*)/g,(i,s)=>{if(s=="$")return"$";let r=+(s||1);return!r||r>t.length?i:t[r-1]})),e}languageDataAt(e,t,i=-1){let s=[];for(let r of this.facet(Ph))for(let o of r(this,t,i))Object.prototype.hasOwnProperty.call(o,e)&&s.push(o[e]);return s}charCategorizer(e){return sd(this.languageDataAt("wordChars",e).join(""))}wordAt(e){let{text:t,from:i,length:s}=this.doc.lineAt(e),r=this.charCategorizer(e),o=e-i,l=e-i;for(;o>0;){let a=pe(t,o,!1);if(r(t.slice(a,o))!=Y.Word)break;o=a}for(;ln.length?n[0]:4});I.lineSeparator=Qh;I.readOnly=Dh;I.phrases=A.define({compare(n,e){let t=Object.keys(n),i=Object.keys(e);return t.length==i.length&&t.every(s=>n[s]==e[s])}});I.languageData=Ph;I.changeFilter=Ah;I.transactionFilter=Mh;I.transactionExtender=Rh;vs.reconfigure=q.define();function rt(n,e,t={}){let i={};for(let s of n)for(let r of Object.keys(s)){let o=s[r],l=i[r];if(l===void 0)i[r]=o;else if(!(l===o||o===void 0))if(Object.hasOwnProperty.call(t,r))i[r]=t[r](l,o);else throw new Error("Config merge conflict for field "+r)}for(let s in e)i[s]===void 0&&(i[s]=e[s]);return i}class Nt{eq(e){return this==e}range(e,t=e){return Mr.create(e,t,this)}}Nt.prototype.startSide=Nt.prototype.endSide=0;Nt.prototype.point=!1;Nt.prototype.mapMode=de.TrackDel;let Mr=class $h{constructor(e,t,i){this.from=e,this.to=t,this.value=i}static create(e,t,i){return new $h(e,t,i)}};function Rr(n,e){return n.from-e.from||n.value.startSide-e.value.startSide}class ko{constructor(e,t,i,s){this.from=e,this.to=t,this.value=i,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(e,t,i,s=0){let r=i?this.to:this.from;for(let o=s,l=r.length;;){if(o==l)return o;let a=o+l>>1,h=r[a]-e||(i?this.value[a].endSide:this.value[a].startSide)-t;if(a==o)return h>=0?o:l;h>=0?l=a:o=a+1}}between(e,t,i,s){for(let r=this.findIndex(t,-1e9,!0),o=this.findIndex(i,1e9,!1,r);rd||u==d&&h.startSide>0&&h.endSide<=0)continue;(d-u||h.endSide-h.startSide)<0||(o<0&&(o=u),h.point&&(l=Math.max(l,d-u)),i.push(h),s.push(u-o),r.push(d-o))}return{mapped:i.length?new ko(s,r,i,l):null,pos:o}}}class N{constructor(e,t,i,s){this.chunkPos=e,this.chunk=t,this.nextLayer=i,this.maxPoint=s}static create(e,t,i,s){return new N(e,t,i,s)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let t of this.chunk)e+=t.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:t=[],sort:i=!1,filterFrom:s=0,filterTo:r=this.length}=e,o=e.filter;if(t.length==0&&!o)return this;if(i&&(t=t.slice().sort(Rr)),this.isEmpty)return t.length?N.of(t):this;let l=new Bh(this,null,-1).goto(0),a=0,h=[],c=new gt;for(;l.value||a=0){let f=t[a++];c.addInner(f.from,f.to,f.value)||h.push(f)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||rl.to||r=r&&e<=r+o.length&&o.between(r,e-r,t-r,i)===!1)return}this.nextLayer.between(e,t,i)}}iter(e=0){return Wi.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,t=0){return Wi.from(e).goto(t)}static compare(e,t,i,s,r=-1){let o=e.filter(f=>f.maxPoint>0||!f.isEmpty&&f.maxPoint>=r),l=t.filter(f=>f.maxPoint>0||!f.isEmpty&&f.maxPoint>=r),a=dl(o,l,i),h=new xi(o,a,r),c=new xi(l,a,r);i.iterGaps((f,u,d)=>pl(h,f,c,u,d,s)),i.empty&&i.length==0&&pl(h,0,c,0,0,s)}static eq(e,t,i=0,s){s==null&&(s=999999999);let r=e.filter(c=>!c.isEmpty&&t.indexOf(c)<0),o=t.filter(c=>!c.isEmpty&&e.indexOf(c)<0);if(r.length!=o.length)return!1;if(!r.length)return!0;let l=dl(r,o),a=new xi(r,l,0).goto(i),h=new xi(o,l,0).goto(i);for(;;){if(a.to!=h.to||!Dr(a.active,h.active)||a.point&&(!h.point||!a.point.eq(h.point)))return!1;if(a.to>s)return!0;a.next(),h.next()}}static spans(e,t,i,s,r=-1){let o=new xi(e,null,r).goto(t),l=t,a=o.openStart;for(;;){let h=Math.min(o.to,i);if(o.point){let c=o.activeForPoint(o.to),f=o.pointFroml&&(s.span(l,h,o.active,a),a=o.openEnd(h));if(o.to>i)return a+(o.point&&o.to>i?1:0);l=o.to,o.next()}}static of(e,t=!1){let i=new gt;for(let s of e instanceof Mr?[e]:t?rd(e):e)i.add(s.from,s.to,s.value);return i.finish()}static join(e){if(!e.length)return N.empty;let t=e[e.length-1];for(let i=e.length-2;i>=0;i--)for(let s=e[i];s!=N.empty;s=s.nextLayer)t=new N(s.chunkPos,s.chunk,t,Math.max(s.maxPoint,t.maxPoint));return t}}N.empty=new N([],[],null,-1);function rd(n){if(n.length>1)for(let e=n[0],t=1;t0)return n.slice().sort(Rr);e=i}return n}N.empty.nextLayer=N.empty;class gt{finishChunk(e){this.chunks.push(new ko(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,t,i){this.addInner(e,t,i)||(this.nextLayer||(this.nextLayer=new gt)).add(e,t,i)}addInner(e,t,i){let s=e-this.lastTo||i.startSide-this.last.endSide;if(s<=0&&(e-this.lastFrom||i.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(t-this.chunkStart),this.last=i,this.lastFrom=e,this.lastTo=t,this.value.push(i),i.point&&(this.maxPoint=Math.max(this.maxPoint,t-e)),!0)}addChunk(e,t){if((e-this.lastTo||t.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,t.maxPoint),this.chunks.push(t),this.chunkPos.push(e);let i=t.value.length-1;return this.last=t.value[i],this.lastFrom=t.from[i]+e,this.lastTo=t.to[i]+e,!0}finish(){return this.finishInner(N.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let t=N.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,t}}function dl(n,e,t){let i=new Map;for(let r of n)for(let o=0;o=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=i&&s.push(new Bh(o,t,i,r));return s.length==1?s[0]:new Wi(s)}get startSide(){return this.value?this.value.startSide:0}goto(e,t=-1e9){for(let i of this.heap)i.goto(e,t);for(let i=this.heap.length>>1;i>=0;i--)Is(this.heap,i);return this.next(),this}forward(e,t){for(let i of this.heap)i.forward(e,t);for(let i=this.heap.length>>1;i>=0;i--)Is(this.heap,i);(this.to-e||this.value.endSide-t)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),Is(this.heap,0)}}}function Is(n,e){for(let t=n[e];;){let i=(e<<1)+1;if(i>=n.length)break;let s=n[i];if(i+1=0&&(s=n[i+1],i++),t.compare(s)<0)break;n[i]=t,n[e]=s,e=i}}class xi{constructor(e,t,i){this.minPoint=i,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=Wi.from(e,t,i)}goto(e,t=-1e9){return this.cursor.goto(e,t),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=t,this.openStart=-1,this.next(),this}forward(e,t){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-t)<0;)this.removeActive(this.minActive);this.cursor.forward(e,t)}removeActive(e){yn(this.active,e),yn(this.activeTo,e),yn(this.activeRank,e),this.minActive=ml(this.active,this.activeTo)}addActive(e){let t=0,{value:i,to:s,rank:r}=this.cursor;for(;t0;)t++;bn(this.active,t,i),bn(this.activeTo,t,s),bn(this.activeRank,t,r),e&&bn(e,t,this.cursor.from),this.minActive=ml(this.active,this.activeTo)}next(){let e=this.to,t=this.point;this.point=null;let i=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>e){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),i&&yn(i,s)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let r=this.cursor.value;if(!r.point)this.addActive(i),this.cursor.next();else if(t&&this.cursor.to==this.to&&this.cursor.from=0&&i[s]=0&&!(this.activeRank[i]e||this.activeTo[i]==e&&this.active[i].endSide>=this.point.endSide)&&t.push(this.active[i]);return t.reverse()}openEnd(e){let t=0;for(let i=this.activeTo.length-1;i>=0&&this.activeTo[i]>e;i--)t++;return t}}function pl(n,e,t,i,s,r){n.goto(e),t.goto(i);let o=i+s,l=i,a=i-e;for(;;){let h=n.to+a-t.to,c=h||n.endSide-t.endSide,f=c<0?n.to+a:t.to,u=Math.min(f,o);if(n.point||t.point?n.point&&t.point&&(n.point==t.point||n.point.eq(t.point))&&Dr(n.activeForPoint(n.to),t.activeForPoint(t.to))||r.comparePoint(l,u,n.point,t.point):u>l&&!Dr(n.active,t.active)&&r.compareRange(l,u,n.active,t.active),f>o)break;(h||n.openEnd!=t.openEnd)&&r.boundChange&&r.boundChange(f),l=f,c<=0&&n.next(),c>=0&&t.next()}}function Dr(n,e){if(n.length!=e.length)return!1;for(let t=0;t=e;i--)n[i+1]=n[i];n[e]=t}function ml(n,e){let t=-1,i=1e9;for(let s=0;s=e)return s;if(s==n.length)break;r+=n.charCodeAt(s)==9?t-r%t:1,s=pe(n,s)}return i===!0?-1:n.length}const qr="ͼ",gl=typeof Symbol>"u"?"__"+qr:Symbol.for(qr),$r=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),Ol=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{};class Tt{constructor(e,t){this.rules=[];let{finish:i}=t||{};function s(o){return/^@/.test(o)?[o]:o.split(/,\s*/)}function r(o,l,a,h){let c=[],f=/^@(\w+)\b/.exec(o[0]),u=f&&f[1]=="keyframes";if(f&&l==null)return a.push(o[0]+";");for(let d in l){let p=l[d];if(/&/.test(d))r(d.split(/,\s*/).map(m=>o.map(g=>m.replace(/&/,g))).reduce((m,g)=>m.concat(g)),p,a);else if(p&&typeof p=="object"){if(!f)throw new RangeError("The value of a property ("+d+") should be a primitive value.");r(s(d),p,c,u)}else p!=null&&c.push(d.replace(/_.*/,"").replace(/[A-Z]/g,m=>"-"+m.toLowerCase())+": "+p+";")}(c.length||u)&&a.push((i&&!f&&!h?o.map(i):o).join(", ")+" {"+c.join(" ")+"}")}for(let o in e)r(s(o),e[o],this.rules)}getRules(){return this.rules.join(` +`)}static newName(){let e=Ol[gl]||1;return Ol[gl]=e+1,qr+e.toString(36)}static mount(e,t,i){let s=e[$r],r=i&&i.nonce;s?r&&s.setNonce(r):s=new od(e,r),s.mount(Array.isArray(t)?t:[t],e)}}let yl=new Map;class od{constructor(e,t){let i=e.ownerDocument||e,s=i.defaultView;if(!e.head&&e.adoptedStyleSheets&&s.CSSStyleSheet){let r=yl.get(i);if(r)return e[$r]=r;this.sheet=new s.CSSStyleSheet,yl.set(i,this)}else this.styleTag=i.createElement("style"),t&&this.styleTag.setAttribute("nonce",t);this.modules=[],e[$r]=this}mount(e,t){let i=this.sheet,s=0,r=0;for(let o=0;o-1&&(this.modules.splice(a,1),r--,a=-1),a==-1){if(this.modules.splice(r++,0,l),i)for(let h=0;h",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},ld=typeof navigator<"u"&&/Mac/.test(navigator.platform),ad=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(var ue=0;ue<10;ue++)Ct[48+ue]=Ct[96+ue]=String(ue);for(var ue=1;ue<=24;ue++)Ct[ue+111]="F"+ue;for(var ue=65;ue<=90;ue++)Ct[ue]=String.fromCharCode(ue+32),Li[ue]=String.fromCharCode(ue);for(var Vs in Ct)Li.hasOwnProperty(Vs)||(Li[Vs]=Ct[Vs]);function hd(n){var e=ld&&n.metaKey&&n.shiftKey&&!n.ctrlKey&&!n.altKey||ad&&n.shiftKey&&n.key&&n.key.length==1||n.key=="Unidentified",t=!e&&n.key||(n.shiftKey?Li:Ct)[n.keyCode]||n.key||"Unidentified";return t=="Esc"&&(t="Escape"),t=="Del"&&(t="Delete"),t=="Left"&&(t="ArrowLeft"),t=="Up"&&(t="ArrowUp"),t=="Right"&&(t="ArrowRight"),t=="Down"&&(t="ArrowDown"),t}function U(){var n=arguments[0];typeof n=="string"&&(n=document.createElement(n));var e=1,t=arguments[1];if(t&&typeof t=="object"&&t.nodeType==null&&!Array.isArray(t)){for(var i in t)if(Object.prototype.hasOwnProperty.call(t,i)){var s=t[i];typeof s=="string"?n.setAttribute(i,s):s!=null&&(n[i]=s)}e++}for(;e2);var Q={mac:Sl||/Mac/.test(xe.platform),windows:/Win/.test(xe.platform),linux:/Linux|X11/.test(xe.platform),ie:Ts,ie_version:Lh?Br.documentMode||6:Lr?+Lr[1]:Wr?+Wr[1]:0,gecko:bl,gecko_version:bl?+(/Firefox\/(\d+)/.exec(xe.userAgent)||[0,0])[1]:0,chrome:!!Ns,chrome_version:Ns?+Ns[1]:0,ios:Sl,android:/Android\b/.test(xe.userAgent),webkit_version:cd?+(/\bAppleWebKit\/(\d+)/.exec(xe.userAgent)||[0,0])[1]:0,safari:zr,safari_version:zr?+(/\bVersion\/(\d+(\.\d+)?)/.exec(xe.userAgent)||[0,0])[1]:0,tabSize:Br.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function zi(n){let e;return n.nodeType==11?e=n.getSelection?n:n.ownerDocument:e=n,e.getSelection()}function Ir(n,e){return e?n==e||n.contains(e.nodeType!=1?e.parentNode:e):!1}function _n(n,e){if(!e.anchorNode)return!1;try{return Ir(n,e.anchorNode)}catch{return!1}}function ai(n){return n.nodeType==3?Ft(n,0,n.nodeValue.length).getClientRects():n.nodeType==1?n.getClientRects():[]}function Ri(n,e,t,i){return t?xl(n,e,t,i,-1)||xl(n,e,t,i,1):!1}function Xt(n){for(var e=0;;e++)if(n=n.previousSibling,!n)return e}function ss(n){return n.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(n.nodeName)}function xl(n,e,t,i,s){for(;;){if(n==t&&e==i)return!0;if(e==(s<0?0:nt(n))){if(n.nodeName=="DIV")return!1;let r=n.parentNode;if(!r||r.nodeType!=1)return!1;e=Xt(n)+(s<0?0:1),n=r}else if(n.nodeType==1){if(n=n.childNodes[e+(s<0?-1:0)],n.nodeType==1&&n.contentEditable=="false")return!1;e=s<0?nt(n):0}else return!1}}function nt(n){return n.nodeType==3?n.nodeValue.length:n.childNodes.length}function sn(n,e){let t=e?n.left:n.right;return{left:t,right:t,top:n.top,bottom:n.bottom}}function fd(n){let e=n.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:n.innerWidth,top:0,bottom:n.innerHeight}}function zh(n,e){let t=e.width/n.offsetWidth,i=e.height/n.offsetHeight;return(t>.995&&t<1.005||!isFinite(t)||Math.abs(e.width-n.offsetWidth)<1)&&(t=1),(i>.995&&i<1.005||!isFinite(i)||Math.abs(e.height-n.offsetHeight)<1)&&(i=1),{scaleX:t,scaleY:i}}function ud(n,e,t,i,s,r,o,l){let a=n.ownerDocument,h=a.defaultView||window;for(let c=n,f=!1;c&&!f;)if(c.nodeType==1){let u,d=c==a.body,p=1,m=1;if(d)u=fd(h);else{if(/^(fixed|sticky)$/.test(getComputedStyle(c).position)&&(f=!0),c.scrollHeight<=c.clientHeight&&c.scrollWidth<=c.clientWidth){c=c.assignedSlot||c.parentNode;continue}let S=c.getBoundingClientRect();({scaleX:p,scaleY:m}=zh(c,S)),u={left:S.left,right:S.left+c.clientWidth*p,top:S.top,bottom:S.top+c.clientHeight*m}}let g=0,y=0;if(s=="nearest")e.top0&&e.bottom>u.bottom+y&&(y=e.bottom-u.bottom+o)):e.bottom>u.bottom&&(y=e.bottom-u.bottom+o,t<0&&e.top-y0&&e.right>u.right+g&&(g=e.right-u.right+r)):e.right>u.right&&(g=e.right-u.right+r,t<0&&e.leftu.bottom||e.leftu.right)&&(e={left:Math.max(e.left,u.left),right:Math.min(e.right,u.right),top:Math.max(e.top,u.top),bottom:Math.min(e.bottom,u.bottom)}),c=c.assignedSlot||c.parentNode}else if(c.nodeType==11)c=c.host;else break}function dd(n){let e=n.ownerDocument,t,i;for(let s=n.parentNode;s&&!(s==e.body||t&&i);)if(s.nodeType==1)!i&&s.scrollHeight>s.clientHeight&&(i=s),!t&&s.scrollWidth>s.clientWidth&&(t=s),s=s.assignedSlot||s.parentNode;else if(s.nodeType==11)s=s.host;else break;return{x:t,y:i}}class pd{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:t,focusNode:i}=e;this.set(t,Math.min(e.anchorOffset,t?nt(t):0),i,Math.min(e.focusOffset,i?nt(i):0))}set(e,t,i,s){this.anchorNode=e,this.anchorOffset=t,this.focusNode=i,this.focusOffset=s}}let qt=null;Q.safari&&Q.safari_version>=26&&(qt=!1);function Ih(n){if(n.setActive)return n.setActive();if(qt)return n.focus(qt);let e=[];for(let t=n;t&&(e.push(t,t.scrollTop,t.scrollLeft),t!=t.ownerDocument);t=t.parentNode);if(n.focus(qt==null?{get preventScroll(){return qt={preventScroll:!0},!0}}:void 0),!qt){qt=!1;for(let t=0;tMath.max(1,n.scrollHeight-n.clientHeight-4)}function Xh(n,e){for(let t=n,i=e;;){if(t.nodeType==3&&i>0)return{node:t,offset:i};if(t.nodeType==1&&i>0){if(t.contentEditable=="false")return null;t=t.childNodes[i-1],i=nt(t)}else if(t.parentNode&&!ss(t))i=Xt(t),t=t.parentNode;else return null}}function Fh(n,e){for(let t=n,i=e;;){if(t.nodeType==3&&it)return f.domBoundsAround(e,t,h);if(u>=e&&s==-1&&(s=a,r=h),h>t&&f.dom.parentNode==this.dom){o=a,l=c;break}c=u,h=u+f.breakAfter}return{from:r,to:l<0?i+this.length:l,startDOM:(s?this.children[s-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:o=0?this.children[o].dom:null}}markDirty(e=!1){this.flags|=2,this.markParentsDirty(e)}markParentsDirty(e){for(let t=this.parent;t;t=t.parent){if(e&&(t.flags|=2),t.flags&1)return;t.flags|=1,e=!1}}setParent(e){this.parent!=e&&(this.parent=e,this.flags&7&&this.markParentsDirty(!0))}setDOM(e){this.dom!=e&&(this.dom&&(this.dom.cmView=null),this.dom=e,e.cmView=this)}get rootView(){for(let e=this;;){let t=e.parent;if(!t)return e;e=t}}replaceChildren(e,t,i=wo){this.markDirty();for(let s=e;sthis.pos||e==this.pos&&(t>0||this.i==0||this.children[this.i-1].breakAfter))return this.off=e-this.pos,this;let i=this.children[--this.i];this.pos-=i.length+i.breakAfter}}}function Uh(n,e,t,i,s,r,o,l,a){let{children:h}=n,c=h.length?h[e]:null,f=r.length?r[r.length-1]:null,u=f?f.breakAfter:o;if(!(e==i&&c&&!o&&!u&&r.length<2&&c.merge(t,s,r.length?f:null,t==0,l,a))){if(i0&&(!o&&r.length&&c.merge(t,c.length,r[0],!1,l,0)?c.breakAfter=r.shift().breakAfter:(tOd||i.flags&8)?!1:(this.text=this.text.slice(0,e)+(i?i.text:"")+this.text.slice(t),this.markDirty(),!0)}split(e){let t=new Ve(this.text.slice(e));return this.text=this.text.slice(0,e),this.markDirty(),t.flags|=this.flags&8,t}localPosFromDOM(e,t){return e==this.dom?t:t?this.text.length:0}domAtPos(e){return new ye(this.dom,e)}domBoundsAround(e,t,i){return{from:i,to:i+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(e,t){return yd(this.dom,e,t)}}class Ot extends _{constructor(e,t=[],i=0){super(),this.mark=e,this.children=t,this.length=i;for(let s of t)s.setParent(this)}setAttrs(e){if(Vh(e),this.mark.class&&(e.className=this.mark.class),this.mark.attrs)for(let t in this.mark.attrs)e.setAttribute(t,this.mark.attrs[t]);return e}canReuseDOM(e){return super.canReuseDOM(e)&&!((this.flags|e.flags)&8)}reuseDOM(e){e.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(e),this.flags|=6)}sync(e,t){this.dom?this.flags&4&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(e,t)}merge(e,t,i,s,r,o){return i&&(!(i instanceof Ot&&i.mark.eq(this.mark))||e&&r<=0||te&&t.push(i=e&&(s=r),i=a,r++}let o=this.length-e;return this.length=e,s>-1&&(this.children.length=s,this.markDirty()),new Ot(this.mark,t,o)}domAtPos(e){return jh(this,e)}coordsAt(e,t){return Zh(this,e,t)}}function yd(n,e,t){let i=n.nodeValue.length;e>i&&(e=i);let s=e,r=e,o=0;e==0&&t<0||e==i&&t>=0?Q.chrome||Q.gecko||(e?(s--,o=1):r=0)?0:l.length-1];return Q.safari&&!o&&a.width==0&&(a=Array.prototype.find.call(l,h=>h.width)||a),o?sn(a,o<0):a||null}class pt extends _{static create(e,t,i){return new pt(e,t,i)}constructor(e,t,i){super(),this.widget=e,this.length=t,this.side=i,this.prevWidget=null}split(e){let t=pt.create(this.widget,this.length-e,this.side);return this.length-=e,t}sync(e){(!this.dom||!this.widget.updateDOM(this.dom,e))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(e)),this.widget.editable||(this.dom.contentEditable="false"))}getSide(){return this.side}merge(e,t,i,s,r,o){return i&&(!(i instanceof pt)||!this.widget.compare(i.widget)||e>0&&r<=0||t0)?ye.before(this.dom):ye.after(this.dom,e==this.length)}domBoundsAround(){return null}coordsAt(e,t){let i=this.widget.coordsAt(this.dom,e,t);if(i)return i;let s=this.dom.getClientRects(),r=null;if(!s.length)return null;let o=this.side?this.side<0:e>0;for(let l=o?s.length-1:0;r=s[l],!(e>0?l==0:l==s.length-1||r.top0?ye.before(this.dom):ye.after(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(e){return this.dom.getBoundingClientRect()}get overrideDOMText(){return V.empty}get isHidden(){return!0}}Ve.prototype.children=pt.prototype.children=hi.prototype.children=wo;function jh(n,e){let t=n.dom,{children:i}=n,s=0;for(let r=0;sr&&e0;r--){let o=i[r-1];if(o.dom.parentNode==t)return o.domAtPos(o.length)}for(let r=s;r0&&e instanceof Ot&&s.length&&(i=s[s.length-1])instanceof Ot&&i.mark.eq(e.mark)?Gh(i,e.children[0],t-1):(s.push(e),e.setParent(n)),n.length+=e.length}function Zh(n,e,t){let i=null,s=-1,r=null,o=-1;function l(h,c){for(let f=0,u=0;f=c&&(d.children.length?l(d,c-u):(!r||r.isHidden&&(t>0||Sd(r,d)))&&(p>c||u==p&&d.getSide()>0)?(r=d,o=c-u):(u-1?1:0)!=s.length-(t&&s.indexOf(t)>-1?1:0))return!1;for(let r of i)if(r!=t&&(s.indexOf(r)==-1||n[r]!==e[r]))return!1;return!0}function Nr(n,e,t){let i=!1;if(e)for(let s in e)t&&s in t||(i=!0,s=="style"?n.style.cssText="":n.removeAttribute(s));if(t)for(let s in t)e&&e[s]==t[s]||(i=!0,s=="style"?n.style.cssText=t[s]:n.setAttribute(s,t[s]));return i}function xd(n){let e=Object.create(null);for(let t=0;t0?3e8:-4e8:t>0?1e8:-1e8,new Pt(e,t,t,i,e.widget||null,!1)}static replace(e){let t=!!e.block,i,s;if(e.isBlockGap)i=-5e8,s=4e8;else{let{start:r,end:o}=Yh(e,t);i=(r?t?-3e8:-1:5e8)-1,s=(o?t?2e8:1:-6e8)+1}return new Pt(e,i,s,t,e.widget||null,!0)}static line(e){return new on(e)}static set(e,t=!1){return N.of(e,t)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}}R.none=N.empty;class rn extends R{constructor(e){let{start:t,end:i}=Yh(e);super(t?-1:5e8,i?1:-6e8,null,e),this.tagName=e.tagName||"span",this.class=e.class||"",this.attrs=e.attributes||null}eq(e){var t,i;return this==e||e instanceof rn&&this.tagName==e.tagName&&(this.class||((t=this.attrs)===null||t===void 0?void 0:t.class))==(e.class||((i=e.attrs)===null||i===void 0?void 0:i.class))&&rs(this.attrs,e.attrs,"class")}range(e,t=e){if(e>=t)throw new RangeError("Mark decorations may not be empty");return super.range(e,t)}}rn.prototype.point=!1;class on extends R{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof on&&this.spec.class==e.spec.class&&rs(this.spec.attributes,e.spec.attributes)}range(e,t=e){if(t!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,t)}}on.prototype.mapMode=de.TrackBefore;on.prototype.point=!0;class Pt extends R{constructor(e,t,i,s,r,o){super(t,i,r,e),this.block=s,this.isReplace=o,this.mapMode=s?t<=0?de.TrackBefore:de.TrackAfter:de.TrackDel}get type(){return this.startSide!=this.endSide?ke.WidgetRange:this.startSide<=0?ke.WidgetBefore:ke.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof Pt&&kd(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,t=e){if(this.isReplace&&(e>t||e==t&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&t!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,t)}}Pt.prototype.point=!0;function Yh(n,e=!1){let{inclusiveStart:t,inclusiveEnd:i}=n;return t==null&&(t=n.inclusive),i==null&&(i=n.inclusive),{start:t??e,end:i??e}}function kd(n,e){return n==e||!!(n&&e&&n.compare(e))}function Un(n,e,t,i=0){let s=t.length-1;s>=0&&t[s]+i>=n?t[s]=Math.max(t[s],e):t.push(n,e)}class te extends _{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(e,t,i,s,r,o){if(i){if(!(i instanceof te))return!1;this.dom||i.transferDOM(this)}return s&&this.setDeco(i?i.attrs:null),Hh(this,e,t,i?i.children.slice():[],r,o),!0}split(e){let t=new te;if(t.breakAfter=this.breakAfter,this.length==0)return t;let{i,off:s}=this.childPos(e);s&&(t.append(this.children[i].split(s),0),this.children[i].merge(s,this.children[i].length,null,!1,0,0),i++);for(let r=i;r0&&this.children[i-1].length==0;)this.children[--i].destroy();return this.children.length=i,this.markDirty(),this.length=e,t}transferDOM(e){this.dom&&(this.markDirty(),e.setDOM(this.dom),e.prevAttrs=this.prevAttrs===void 0?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(e){rs(this.attrs,e)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=e)}append(e,t){Gh(this,e,t)}addLineDeco(e){let t=e.spec.attributes,i=e.spec.class;t&&(this.attrs=Vr(t,this.attrs||{})),i&&(this.attrs=Vr({class:i},this.attrs||{}))}domAtPos(e){return jh(this,e)}reuseDOM(e){e.nodeName=="DIV"&&(this.setDOM(e),this.flags|=6)}sync(e,t){var i;this.dom?this.flags&4&&(Vh(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),this.prevAttrs!==void 0&&(Nr(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(e,t);let s=this.dom.lastChild;for(;s&&_.get(s)instanceof Ot;)s=s.lastChild;if(!s||!this.length||s.nodeName!="BR"&&((i=_.get(s))===null||i===void 0?void 0:i.isEditable)==!1&&(!Q.ios||!this.children.some(r=>r instanceof Ve))){let r=document.createElement("BR");r.cmIgnore=!0,this.dom.appendChild(r)}}measureTextSize(){if(this.children.length==0||this.length>20)return null;let e=0,t;for(let i of this.children){if(!(i instanceof Ve)||/[^ -~]/.test(i.text))return null;let s=ai(i.dom);if(s.length!=1)return null;e+=s[0].width,t=s[0].height}return e?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length,textHeight:t}:null}coordsAt(e,t){let i=Zh(this,e,t);if(!this.children.length&&i&&this.parent){let{heightOracle:s}=this.parent.view.viewState,r=i.bottom-i.top;if(Math.abs(r-s.lineHeight)<2&&s.textHeight=t){if(r instanceof te)return r;if(o>t)break}s=o+r.breakAfter}return null}}class mt extends _{constructor(e,t,i){super(),this.widget=e,this.length=t,this.deco=i,this.breakAfter=0,this.prevWidget=null}merge(e,t,i,s,r,o){return i&&(!(i instanceof mt)||!this.widget.compare(i.widget)||e>0&&r<=0||t0}}class Xr extends ot{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}}class Di{constructor(e,t,i,s){this.doc=e,this.pos=t,this.end=i,this.disallowBlockEffectsFor=s,this.content=[],this.curLine=null,this.breakAtStart=0,this.pendingBuffer=0,this.bufferMarks=[],this.atCursorPos=!0,this.openStart=-1,this.openEnd=-1,this.text="",this.textOff=0,this.cursor=e.iter(),this.skip=t}posCovered(){if(this.content.length==0)return!this.breakAtStart&&this.doc.lineAt(this.pos).from!=this.pos;let e=this.content[this.content.length-1];return!(e.breakAfter||e instanceof mt&&e.deco.endSide<0)}getLine(){return this.curLine||(this.content.push(this.curLine=new te),this.atCursorPos=!0),this.curLine}flushBuffer(e=this.bufferMarks){this.pendingBuffer&&(this.curLine.append(Sn(new hi(-1),e),e.length),this.pendingBuffer=0)}addBlockWidget(e){this.flushBuffer(),this.curLine=null,this.content.push(e)}finish(e){this.pendingBuffer&&e<=this.bufferMarks.length?this.flushBuffer():this.pendingBuffer=0,!this.posCovered()&&!(e&&this.content.length&&this.content[this.content.length-1]instanceof mt)&&this.getLine()}buildText(e,t,i){for(;e>0;){if(this.textOff==this.text.length){let{value:o,lineBreak:l,done:a}=this.cursor.next(this.skip);if(this.skip=0,a)throw new Error("Ran out of text content when drawing inline views");if(l){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer(),this.curLine=null,this.atCursorPos=!0,e--;continue}else this.text=o,this.textOff=0}let s=Math.min(this.text.length-this.textOff,e),r=Math.min(s,512);this.flushBuffer(t.slice(t.length-i)),this.getLine().append(Sn(new Ve(this.text.slice(this.textOff,this.textOff+r)),t),i),this.atCursorPos=!0,this.textOff+=r,e-=r,i=s<=r?0:t.length}}span(e,t,i,s){this.buildText(t-e,i,s),this.pos=t,this.openStart<0&&(this.openStart=s)}point(e,t,i,s,r,o){if(this.disallowBlockEffectsFor[o]&&i instanceof Pt){if(i.block)throw new RangeError("Block decorations may not be specified via plugins");if(t>this.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}let l=t-e;if(i instanceof Pt)if(i.block)i.startSide>0&&!this.posCovered()&&this.getLine(),this.addBlockWidget(new mt(i.widget||ci.block,l,i));else{let a=pt.create(i.widget||ci.inline,l,l?0:i.startSide),h=this.atCursorPos&&!a.isEditable&&r<=s.length&&(e0),c=!a.isEditable&&(es.length||i.startSide<=0),f=this.getLine();this.pendingBuffer==2&&!h&&!a.isEditable&&(this.pendingBuffer=0),this.flushBuffer(s),h&&(f.append(Sn(new hi(1),s),r),r=s.length+Math.max(0,r-s.length)),f.append(Sn(a,s),r),this.atCursorPos=c,this.pendingBuffer=c?es.length?1:2:0,this.pendingBuffer&&(this.bufferMarks=s.slice())}else this.doc.lineAt(this.pos).from==this.pos&&this.getLine().addLineDeco(i);l&&(this.textOff+l<=this.text.length?this.textOff+=l:(this.skip+=l-(this.text.length-this.textOff),this.text="",this.textOff=0),this.pos=t),this.openStart<0&&(this.openStart=r)}static build(e,t,i,s,r){let o=new Di(e,t,i,r);return o.openEnd=N.spans(s,t,i,o),o.openStart<0&&(o.openStart=o.openEnd),o.finish(o.openEnd),o}}function Sn(n,e){for(let t of e)n=new Ot(t,[n],n.length);return n}class ci extends ot{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}}ci.inline=new ci("span");ci.block=new ci("div");var Z=(function(n){return n[n.LTR=0]="LTR",n[n.RTL=1]="RTL",n})(Z||(Z={}));const _t=Z.LTR,vo=Z.RTL;function Kh(n){let e=[];for(let t=0;t=t){if(l.level==i)return o;(r<0||(s!=0?s<0?l.fromt:e[r].level>l.level))&&(r=o)}}if(r<0)throw new RangeError("Index out of range");return r}}function ec(n,e){if(n.length!=e.length)return!1;for(let t=0;t=0;m-=3)if(Ue[m+1]==-d){let g=Ue[m+2],y=g&2?s:g&4?g&1?r:s:0;y&&(H[f]=H[Ue[m]]=y),l=m;break}}else{if(Ue.length==189)break;Ue[l++]=f,Ue[l++]=u,Ue[l++]=a}else if((p=H[f])==2||p==1){let m=p==s;a=m?0:1;for(let g=l-3;g>=0;g-=3){let y=Ue[g+2];if(y&2)break;if(m)Ue[g+2]|=2;else{if(y&4)break;Ue[g+2]|=4}}}}}function Qd(n,e,t,i){for(let s=0,r=i;s<=t.length;s++){let o=s?t[s-1].to:n,l=sa;)p==g&&(p=t[--m].from,g=m?t[m-1].to:n),H[--p]=d;a=c}else r=h,a++}}}function _r(n,e,t,i,s,r,o){let l=i%2?2:1;if(i%2==s%2)for(let a=e,h=0;aa&&o.push(new wt(a,m.from,d));let g=m.direction==_t!=!(d%2);Ur(n,g?i+1:i,s,m.inner,m.from,m.to,o),a=m.to}p=m.to}else{if(p==t||(c?H[p]!=l:H[p]==l))break;p++}u?_r(n,a,p,i+1,s,u,o):ae;){let c=!0,f=!1;if(!h||a>r[h-1].to){let m=H[a-1];m!=l&&(c=!1,f=m==16)}let u=!c&&l==1?[]:null,d=c?i:i+1,p=a;e:for(;;)if(h&&p==r[h-1].to){if(f)break e;let m=r[--h];if(!c)for(let g=m.from,y=h;;){if(g==e)break e;if(y&&r[y-1].to==g)g=r[--y].from;else{if(H[g-1]==l)break e;break}}if(u)u.push(m);else{m.toH.length;)H[H.length]=256;let i=[],s=e==_t?0:1;return Ur(n,s,s,t,0,n.length,i),i}function tc(n){return[new wt(0,n,0)]}let ic="";function Md(n,e,t,i,s){var r;let o=i.head-n.from,l=wt.find(e,o,(r=i.bidiLevel)!==null&&r!==void 0?r:-1,i.assoc),a=e[l],h=a.side(s,t);if(o==h){let u=l+=s?1:-1;if(u<0||u>=e.length)return null;a=e[l=u],o=a.side(!s,t),h=a.side(s,t)}let c=pe(n.text,o,a.forward(s,t));(ca.to)&&(c=h),ic=n.text.slice(Math.min(o,c),Math.max(o,c));let f=l==(s?e.length-1:0)?null:e[l+(s?1:-1)];return f&&c==h&&f.level+(s?0:1)n.some(e=>e)}),cc=A.define({combine:n=>n.some(e=>e)}),fc=A.define();class ni{constructor(e,t="nearest",i="nearest",s=5,r=5,o=!1){this.range=e,this.y=t,this.x=i,this.yMargin=s,this.xMargin=r,this.isSnapshot=o}map(e){return e.empty?this:new ni(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new ni(b.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}}const xn=q.define({map:(n,e)=>n.map(e)}),uc=q.define();function Pe(n,e,t){let i=n.facet(oc);i.length?i[0](e):window.onerror&&window.onerror(String(e),t,void 0,void 0,e)||(t?console.error(t+":",e):console.error(e))}const dt=A.define({combine:n=>n.length?n[0]:!0});let Dd=0;const Kt=A.define({combine(n){return n.filter((e,t)=>{for(let i=0;i{let a=[];return o&&a.push(Ii.of(h=>{let c=h.plugin(l);return c?o(c):R.none})),r&&a.push(r(l)),a})}static fromClass(e,t){return J.define((i,s)=>new e(i,s),t)}}class Xs{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(e){if(this.value){if(this.mustUpdate){let t=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(t)}catch(i){if(Pe(t.state,i,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg)}catch(t){Pe(e.state,t,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var t;if(!((t=this.value)===null||t===void 0)&&t.destroy)try{this.value.destroy()}catch(i){Pe(e.state,i,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const dc=A.define(),Po=A.define(),Ii=A.define(),pc=A.define(),ln=A.define(),mc=A.define();function Tl(n,e){let t=n.state.facet(mc);if(!t.length)return t;let i=t.map(r=>r instanceof Function?r(n):r),s=[];return N.spans(i,e.from,e.to,{point(){},span(r,o,l,a){let h=r-e.from,c=o-e.from,f=s;for(let u=l.length-1;u>=0;u--,a--){let d=l[u].spec.bidiIsolate,p;if(d==null&&(d=Rd(e.text,h,c)),a>0&&f.length&&(p=f[f.length-1]).to==h&&p.direction==d)p.to=c,f=p.inner;else{let m={from:h,to:c,direction:d,inner:[]};f.push(m),f=m.inner}}}}),s}const gc=A.define();function Qo(n){let e=0,t=0,i=0,s=0;for(let r of n.state.facet(gc)){let o=r(n);o&&(o.left!=null&&(e=Math.max(e,o.left)),o.right!=null&&(t=Math.max(t,o.right)),o.top!=null&&(i=Math.max(i,o.top)),o.bottom!=null&&(s=Math.max(s,o.bottom)))}return{left:e,right:t,top:i,bottom:s}}const Ti=A.define();class Le{constructor(e,t,i,s){this.fromA=e,this.toA=t,this.fromB=i,this.toB=s}join(e){return new Le(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let t=e.length,i=this;for(;t>0;t--){let s=e[t-1];if(!(s.fromA>i.toA)){if(s.toAc)break;r+=2}if(!a)return i;new Le(a.fromA,a.toA,a.fromB,a.toB).addToSet(i),o=a.toA,l=a.toB}}}class os{constructor(e,t,i){this.view=e,this.state=t,this.transactions=i,this.flags=0,this.startState=e.state,this.changes=se.empty(this.startState.doc.length);for(let r of i)this.changes=this.changes.compose(r.changes);let s=[];this.changes.iterChangedRanges((r,o,l,a)=>s.push(new Le(r,o,l,a))),this.changedRanges=s}static create(e,t,i){return new os(e,t,i)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}}class Cl extends _{get length(){return this.view.state.doc.length}constructor(e){super(),this.view=e,this.decorations=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.markedForComposition=new Set,this.editContextFormatting=R.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(e.contentDOM),this.children=[new te],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new Le(0,0,0,e.state.doc.length)],0,null)}update(e){var t;let i=e.changedRanges;this.minWidth>0&&i.length&&(i.every(({fromA:h,toA:c})=>cthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((t=this.domChanged)===null||t===void 0)&&t.newSel?s=this.domChanged.newSel.head:!zd(e.changes,this.hasComposition)&&!e.selectionSet&&(s=e.state.selection.main.head));let r=s>-1?qd(this.view,e.changes,s):null;if(this.domChanged=null,this.hasComposition){this.markedForComposition.clear();let{from:h,to:c}=this.hasComposition;i=new Le(h,c,e.changes.mapPos(h,-1),e.changes.mapPos(c,1)).addToSet(i.slice())}this.hasComposition=r?{from:r.range.fromB,to:r.range.toB}:null,(Q.ie||Q.chrome)&&!r&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let o=this.decorations,l=this.updateDeco(),a=Wd(o,l,e.changes);return i=Le.extendWithRanges(i,a),!(this.flags&7)&&i.length==0?!1:(this.updateInner(i,e.startState.doc.length,r),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,t,i){this.view.viewState.mustMeasureContent=!0,this.updateChildren(e,t,i);let{observer:s}=this.view;s.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let o=Q.chrome||Q.ios?{node:s.selectionRange.focusNode,written:!1}:void 0;this.sync(this.view,o),this.flags&=-8,o&&(o.written||s.selectionRange.focusNode!=o.node)&&(this.forceSelection=!0),this.dom.style.height=""}),this.markedForComposition.forEach(o=>o.flags&=-9);let r=[];if(this.view.viewport.from||this.view.viewport.to=0?s[o]:null;if(!l)break;let{fromA:a,toA:h,fromB:c,toB:f}=l,u,d,p,m;if(i&&i.range.fromBc){let w=Di.build(this.view.state.doc,c,i.range.fromB,this.decorations,this.dynamicDecorationMap),k=Di.build(this.view.state.doc,i.range.toB,f,this.decorations,this.dynamicDecorationMap);d=w.breakAtStart,p=w.openStart,m=k.openEnd;let v=this.compositionView(i);k.breakAtStart?v.breakAfter=1:k.content.length&&v.merge(v.length,v.length,k.content[0],!1,k.openStart,0)&&(v.breakAfter=k.content[0].breakAfter,k.content.shift()),w.content.length&&v.merge(0,0,w.content[w.content.length-1],!0,0,w.openEnd)&&w.content.pop(),u=w.content.concat(v).concat(k.content)}else({content:u,breakAtStart:d,openStart:p,openEnd:m}=Di.build(this.view.state.doc,c,f,this.decorations,this.dynamicDecorationMap));let{i:g,off:y}=r.findPos(h,1),{i:S,off:x}=r.findPos(a,-1);Uh(this,S,x,g,y,u,d,p,m)}i&&this.fixCompositionDOM(i)}updateEditContextFormatting(e){this.editContextFormatting=this.editContextFormatting.map(e.changes);for(let t of e.transactions)for(let i of t.effects)i.is(uc)&&(this.editContextFormatting=i.value)}compositionView(e){let t=new Ve(e.text.nodeValue);t.flags|=8;for(let{deco:s}of e.marks)t=new Ot(s,[t],t.length);let i=new te;return i.append(t,0),i}fixCompositionDOM(e){let t=(r,o)=>{o.flags|=8|(o.children.some(a=>a.flags&7)?1:0),this.markedForComposition.add(o);let l=_.get(r);l&&l!=o&&(l.dom=null),o.setDOM(r)},i=this.childPos(e.range.fromB,1),s=this.children[i.i];t(e.line,s);for(let r=e.marks.length-1;r>=-1;r--)i=s.childPos(i.off,1),s=s.children[i.i],t(r>=0?e.marks[r].node:e.text,s)}updateSelection(e=!1,t=!1){(e||!this.view.observer.selectionRange.focusNode)&&this.view.observer.readSelectionRange();let i=this.view.root.activeElement,s=i==this.dom,r=!s&&!(this.view.state.facet(dt)||this.dom.tabIndex>-1)&&_n(this.dom,this.view.observer.selectionRange)&&!(i&&this.dom.contains(i));if(!(s||t||r))return;let o=this.forceSelection;this.forceSelection=!1;let l=this.view.state.selection.main,a=this.moveToLine(this.domAtPos(l.anchor)),h=l.empty?a:this.moveToLine(this.domAtPos(l.head));if(Q.gecko&&l.empty&&!this.hasComposition&&Ed(a)){let f=document.createTextNode("");this.view.observer.ignore(()=>a.node.insertBefore(f,a.node.childNodes[a.offset]||null)),a=h=new ye(f,0),o=!0}let c=this.view.observer.selectionRange;(o||!c.focusNode||(!Ri(a.node,a.offset,c.anchorNode,c.anchorOffset)||!Ri(h.node,h.offset,c.focusNode,c.focusOffset))&&!this.suppressWidgetCursorChange(c,l))&&(this.view.observer.ignore(()=>{Q.android&&Q.chrome&&this.dom.contains(c.focusNode)&&Ld(c.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let f=zi(this.view.root);if(f)if(l.empty){if(Q.gecko){let u=$d(a.node,a.offset);if(u&&u!=3){let d=(u==1?Xh:Fh)(a.node,a.offset);d&&(a=new ye(d.node,d.offset))}}f.collapse(a.node,a.offset),l.bidiLevel!=null&&f.caretBidiLevel!==void 0&&(f.caretBidiLevel=l.bidiLevel)}else if(f.extend){f.collapse(a.node,a.offset);try{f.extend(h.node,h.offset)}catch{}}else{let u=document.createRange();l.anchor>l.head&&([a,h]=[h,a]),u.setEnd(h.node,h.offset),u.setStart(a.node,a.offset),f.removeAllRanges(),f.addRange(u)}r&&this.view.root.activeElement==this.dom&&(this.dom.blur(),i&&i.focus())}),this.view.observer.setSelectionRange(a,h)),this.impreciseAnchor=a.precise?null:new ye(c.anchorNode,c.anchorOffset),this.impreciseHead=h.precise?null:new ye(c.focusNode,c.focusOffset)}suppressWidgetCursorChange(e,t){return this.hasComposition&&t.empty&&Ri(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==t.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,t=e.state.selection.main,i=zi(e.root),{anchorNode:s,anchorOffset:r}=e.observer.selectionRange;if(!i||!t.empty||!t.assoc||!i.modify)return;let o=te.find(this,t.head);if(!o)return;let l=o.posAtStart;if(t.head==l||t.head==l+o.length)return;let a=this.coordsAt(t.head,-1),h=this.coordsAt(t.head,1);if(!a||!h||a.bottom>h.top)return;let c=this.domAtPos(t.head+t.assoc);i.collapse(c.node,c.offset),i.modify("move",t.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let f=e.observer.selectionRange;e.docView.posFromDOM(f.anchorNode,f.anchorOffset)!=t.from&&i.collapse(s,r)}moveToLine(e){let t=this.dom,i;if(e.node!=t)return e;for(let s=e.offset;!i&&s=0;s--){let r=_.get(t.childNodes[s]);r instanceof te&&(i=r.domAtPos(r.length))}return i?new ye(i.node,i.offset,!0):e}nearest(e){for(let t=e;t;){let i=_.get(t);if(i&&i.rootView==this)return i;t=t.parentNode}return null}posFromDOM(e,t){let i=this.nearest(e);if(!i)throw new RangeError("Trying to find position for a DOM position outside of the document");return i.localPosFromDOM(e,t)+i.posAtStart}domAtPos(e){let{i:t,off:i}=this.childCursor().findPos(e,-1);for(;t=0;o--){let l=this.children[o],a=r-l.breakAfter,h=a-l.length;if(ae||l.covers(1))&&(!i||l instanceof te&&!(i instanceof te&&t>=0)))i=l,s=h;else if(i&&h==e&&a==e&&l instanceof mt&&Math.abs(t)<2){if(l.deco.startSide<0)break;o&&(i=null)}r=h}return i?i.coordsAt(e-s,t):null}coordsForChar(e){let{i:t,off:i}=this.childPos(e,1),s=this.children[t];if(!(s instanceof te))return null;for(;s.children.length;){let{i:l,off:a}=s.childPos(i,1);for(;;l++){if(l==s.children.length)return null;if((s=s.children[l]).length)break}i=a}if(!(s instanceof Ve))return null;let r=pe(s.text,i);if(r==i)return null;let o=Ft(s.dom,i,r).getClientRects();for(let l=0;lMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,a=this.view.textDirection==Z.LTR;for(let h=0,c=0;cs)break;if(h>=i){let d=f.dom.getBoundingClientRect();if(t.push(d.height),o){let p=f.dom.lastChild,m=p?ai(p):[];if(m.length){let g=m[m.length-1],y=a?g.right-d.left:d.right-g.left;y>l&&(l=y,this.minWidth=r,this.minWidthFrom=h,this.minWidthTo=u)}}}h=u+f.breakAfter}return t}textDirectionAt(e){let{i:t}=this.childPos(e,1);return getComputedStyle(this.children[t].dom).direction=="rtl"?Z.RTL:Z.LTR}measureTextSize(){for(let r of this.children)if(r instanceof te){let o=r.measureTextSize();if(o)return o}let e=document.createElement("div"),t,i,s;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.dom.appendChild(e);let r=ai(e.firstChild)[0];t=e.getBoundingClientRect().height,i=r?r.width/27:7,s=r?r.height:t,e.remove()}),{lineHeight:t,charWidth:i,textHeight:s}}childCursor(e=this.length){let t=this.children.length;return t&&(e-=this.children[--t].length),new _h(this.children,e,t)}computeBlockGapDeco(){let e=[],t=this.view.viewState;for(let i=0,s=0;;s++){let r=s==t.viewports.length?null:t.viewports[s],o=r?r.from-1:this.length;if(o>i){let l=(t.lineBlockAt(o).bottom-t.lineBlockAt(i).top)/this.view.scaleY;e.push(R.replace({widget:new Xr(l),block:!0,inclusive:!0,isBlockGap:!0}).range(i,o))}if(!r)break;i=r.to+1}return R.set(e)}updateDeco(){let e=1,t=this.view.state.facet(Ii).map(r=>(this.dynamicDecorationMap[e++]=typeof r=="function")?r(this.view):r),i=!1,s=this.view.state.facet(pc).map((r,o)=>{let l=typeof r=="function";return l&&(i=!0),l?r(this.view):r});for(s.length&&(this.dynamicDecorationMap[e++]=i,t.push(N.join(s))),this.decorations=[this.editContextFormatting,...t,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];et.anchor?-1:1),s;if(!i)return;!t.empty&&(s=this.coordsAt(t.anchor,t.anchor>t.head?-1:1))&&(i={left:Math.min(i.left,s.left),top:Math.min(i.top,s.top),right:Math.max(i.right,s.right),bottom:Math.max(i.bottom,s.bottom)});let r=Qo(this.view),o={left:i.left-r.left,top:i.top-r.top,right:i.right+r.right,bottom:i.bottom+r.bottom},{offsetWidth:l,offsetHeight:a}=this.view.scrollDOM;ud(this.view.scrollDOM,o,t.heads instanceof pt||s.children.some(i);return i(this.children[t])}}function Ed(n){return n.node.nodeType==1&&n.node.firstChild&&(n.offset==0||n.node.childNodes[n.offset-1].contentEditable=="false")&&(n.offset==n.node.childNodes.length||n.node.childNodes[n.offset].contentEditable=="false")}function Oc(n,e){let t=n.observer.selectionRange;if(!t.focusNode)return null;let i=Xh(t.focusNode,t.focusOffset),s=Fh(t.focusNode,t.focusOffset),r=i||s;if(s&&i&&s.node!=i.node){let l=_.get(s.node);if(!l||l instanceof Ve&&l.text!=s.node.nodeValue)r=s;else if(n.docView.lastCompositionAfterCursor){let a=_.get(i.node);!a||a instanceof Ve&&a.text!=i.node.nodeValue||(r=s)}}if(n.docView.lastCompositionAfterCursor=r!=i,!r)return null;let o=e-r.offset;return{from:o,to:o+r.node.nodeValue.length,node:r.node}}function qd(n,e,t){let i=Oc(n,t);if(!i)return null;let{node:s,from:r,to:o}=i,l=s.nodeValue;if(/[\n\r]/.test(l)||n.state.doc.sliceString(i.from,i.to)!=l)return null;let a=e.invertedDesc,h=new Le(a.mapPos(r),a.mapPos(o),r,o),c=[];for(let f=s.parentNode;;f=f.parentNode){let u=_.get(f);if(u instanceof Ot)c.push({node:f,deco:u.mark});else{if(u instanceof te||f.nodeName=="DIV"&&f.parentNode==n.contentDOM)return{range:h,text:s,marks:c,line:f};if(f!=n.contentDOM)c.push({node:f,deco:new rn({inclusive:!0,attributes:xd(f),tagName:f.tagName.toLowerCase()})});else return null}}}function $d(n,e){return n.nodeType!=1?0:(e&&n.childNodes[e-1].contentEditable=="false"?1:0)|(e{ie.from&&(t=!0)}),t}function Id(n,e,t=1){let i=n.charCategorizer(e),s=n.doc.lineAt(e),r=e-s.from;if(s.length==0)return b.cursor(e);r==0?t=1:r==s.length&&(t=-1);let o=r,l=r;t<0?o=pe(s.text,r,!1):l=pe(s.text,r);let a=i(s.text.slice(o,l));for(;o>0;){let h=pe(s.text,o,!1);if(i(s.text.slice(h,o))!=a)break;o=h}for(;ln?e.left-n:Math.max(0,n-e.right)}function Nd(n,e){return e.top>n?e.top-n:Math.max(0,n-e.bottom)}function Fs(n,e){return n.tope.top+1}function Pl(n,e){return en.bottom?{top:n.top,left:n.left,right:n.right,bottom:e}:n}function jr(n,e,t){let i,s,r,o,l=!1,a,h,c,f;for(let p=n.firstChild;p;p=p.nextSibling){let m=ai(p);for(let g=0;gx||o==x&&r>S)&&(i=p,s=y,r=S,o=x,l=S?e0:gy.bottom&&(!c||c.bottomy.top)&&(h=p,f=y):c&&Fs(c,y)?c=Ql(c,y.bottom):f&&Fs(f,y)&&(f=Pl(f,y.top))}}if(c&&c.bottom>=t?(i=a,s=c):f&&f.top<=t&&(i=h,s=f),!i)return{node:n,offset:0};let u=Math.max(s.left,Math.min(s.right,e));if(i.nodeType==3)return Al(i,u,t);if(l&&i.contentEditable!="false")return jr(i,u,t);let d=Array.prototype.indexOf.call(n.childNodes,i)+(e>=(s.left+s.right)/2?1:0);return{node:n,offset:d}}function Al(n,e,t){let i=n.nodeValue.length,s=-1,r=1e9,o=0;for(let l=0;lt?c.top-t:t-c.bottom)-1;if(c.left-1<=e&&c.right+1>=e&&f=(c.left+c.right)/2,d=u;if(Q.chrome||Q.gecko){let p=Ft(n,l).getBoundingClientRect();Math.abs(p.left-c.right)<.1&&(d=!u)}if(f<=0)return{node:n,offset:l+(d?1:0)};s=l+(d?1:0),r=f}}}return{node:n,offset:s>-1?s:o>0?n.nodeValue.length:0}}function yc(n,e,t,i=-1){var s,r;let o=n.contentDOM.getBoundingClientRect(),l=o.top+n.viewState.paddingTop,a,{docHeight:h}=n.viewState,{x:c,y:f}=e,u=f-l;if(u<0)return 0;if(u>h)return n.state.doc.length;for(let w=n.viewState.heightOracle.textHeight/2,k=!1;a=n.elementAtHeight(u),a.type!=ke.Text;)for(;u=i>0?a.bottom+w:a.top-w,!(u>=0&&u<=h);){if(k)return t?null:0;k=!0,i=-i}f=l+u;let d=a.from;if(dn.viewport.to)return n.viewport.to==n.state.doc.length?n.state.doc.length:t?null:Ml(n,o,a,c,f);let p=n.dom.ownerDocument,m=n.root.elementFromPoint?n.root:p,g=m.elementFromPoint(c,f);g&&!n.contentDOM.contains(g)&&(g=null),g||(c=Math.max(o.left+1,Math.min(o.right-1,c)),g=m.elementFromPoint(c,f),g&&!n.contentDOM.contains(g)&&(g=null));let y,S=-1;if(g&&((s=n.docView.nearest(g))===null||s===void 0?void 0:s.isEditable)!=!1){if(p.caretPositionFromPoint){let w=p.caretPositionFromPoint(c,f);w&&({offsetNode:y,offset:S}=w)}else if(p.caretRangeFromPoint){let w=p.caretRangeFromPoint(c,f);w&&({startContainer:y,startOffset:S}=w)}y&&(!n.contentDOM.contains(y)||Q.safari&&Xd(y,S,c)||Q.chrome&&Fd(y,S,c))&&(y=void 0),y&&(S=Math.min(nt(y),S))}if(!y||!n.docView.dom.contains(y)){let w=te.find(n.docView,d);if(!w)return u>a.top+a.height/2?a.to:a.from;({node:y,offset:S}=jr(w.dom,c,f))}let x=n.docView.nearest(y);if(!x)return null;if(x.isWidget&&((r=x.dom)===null||r===void 0?void 0:r.nodeType)==1){let w=x.dom.getBoundingClientRect();return e.yn.defaultLineHeight*1.5){let l=n.viewState.heightOracle.textHeight,a=Math.floor((s-t.top-(n.defaultLineHeight-l)*.5)/l);r+=a*n.viewState.heightOracle.lineLength}let o=n.state.sliceDoc(t.from,t.to);return t.from+Er(o,r,n.state.tabSize)}function bc(n,e,t){let i,s=n;if(n.nodeType!=3||e!=(i=n.nodeValue.length))return!1;for(;;){let r=s.nextSibling;if(r){if(r.nodeName=="BR")break;return!1}else{let o=s.parentNode;if(!o||o.nodeName=="DIV")break;s=o}}return Ft(n,i-1,i).getBoundingClientRect().right>t}function Xd(n,e,t){return bc(n,e,t)}function Fd(n,e,t){if(e!=0)return bc(n,e,t);for(let s=n;;){let r=s.parentNode;if(!r||r.nodeType!=1||r.firstChild!=s)return!1;if(r.classList.contains("cm-line"))break;s=r}let i=n.nodeType==1?n.getBoundingClientRect():Ft(n,0,Math.max(n.nodeValue.length,1)).getBoundingClientRect();return t-i.left>5}function Gr(n,e,t){let i=n.lineBlockAt(e);if(Array.isArray(i.type)){let s;for(let r of i.type){if(r.from>e)break;if(!(r.toe)return r;(!s||r.type==ke.Text&&(s.type!=r.type||(t<0?r.frome)))&&(s=r)}}return s||i}return i}function _d(n,e,t,i){let s=Gr(n,e.head,e.assoc||-1),r=!i||s.type!=ke.Text||!(n.lineWrapping||s.widgetLineBreaks)?null:n.coordsAtPos(e.assoc<0&&e.head>s.from?e.head-1:e.head);if(r){let o=n.dom.getBoundingClientRect(),l=n.textDirectionAt(s.from),a=n.posAtCoords({x:t==(l==Z.LTR)?o.right-1:o.left+1,y:(r.top+r.bottom)/2});if(a!=null)return b.cursor(a,t?-1:1)}return b.cursor(t?s.to:s.from,t?-1:1)}function Rl(n,e,t,i){let s=n.state.doc.lineAt(e.head),r=n.bidiSpans(s),o=n.textDirectionAt(s.from);for(let l=e,a=null;;){let h=Md(s,r,o,l,t),c=ic;if(!h){if(s.number==(t?n.state.doc.lines:1))return l;c=` +`,s=n.state.doc.line(s.number+(t?1:-1)),r=n.bidiSpans(s),h=n.visualLineSide(s,!t)}if(a){if(!a(c))return l}else{if(!i)return h;a=i(c)}l=h}}function Ud(n,e,t){let i=n.state.charCategorizer(e),s=i(t);return r=>{let o=i(r);return s==Y.Space&&(s=o),s==o}}function Hd(n,e,t,i){let s=e.head,r=t?1:-1;if(s==(t?n.state.doc.length:0))return b.cursor(s,e.assoc);let o=e.goalColumn,l,a=n.contentDOM.getBoundingClientRect(),h=n.coordsAtPos(s,e.assoc||-1),c=n.documentTop;if(h)o==null&&(o=h.left-a.left),l=r<0?h.top:h.bottom;else{let d=n.viewState.lineBlockAt(s);o==null&&(o=Math.min(a.right-a.left,n.defaultCharacterWidth*(s-d.from))),l=(r<0?d.top:d.bottom)+c}let f=a.left+o,u=i??n.viewState.heightOracle.textHeight>>1;for(let d=0;;d+=10){let p=l+(u+d)*r,m=yc(n,{x:f,y:p},!1,r);if(pa.bottom||(r<0?ms)){let g=n.docView.coordsForChar(m),y=!g||p{if(e>r&&es(n)),t.from,e.head>t.from?-1:1);return i==t.from?t:b.cursor(i,ir)&&!Zd(o,t)&&this.lineBreak(),s=o}return this.findPointBefore(i,t),this}readTextNode(e){let t=e.nodeValue;for(let i of this.points)i.node==e&&(i.pos=this.text.length+Math.min(i.offset,t.length));for(let i=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let r=-1,o=1,l;if(this.lineSeparator?(r=t.indexOf(this.lineSeparator,i),o=this.lineSeparator.length):(l=s.exec(t))&&(r=l.index,o=l[0].length),this.append(t.slice(i,r<0?t.length:r)),r<0)break;if(this.lineBreak(),o>1)for(let a of this.points)a.node==e&&a.pos>this.text.length&&(a.pos-=o-1);i=r+o}}readNode(e){if(e.cmIgnore)return;let t=_.get(e),i=t&&t.overrideDOMText;if(i!=null){this.findPointInside(e,i.length);for(let s=i.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,t){for(let i of this.points)i.node==e&&e.childNodes[i.offset]==t&&(i.pos=this.text.length)}findPointInside(e,t){for(let i of this.points)(e.nodeType==3?i.node==e:e.contains(i.node))&&(i.pos=this.text.length+(Gd(e,i.node,i.offset)?t:0))}}function Gd(n,e,t){for(;;){if(!e||t-1;let{impreciseHead:r,impreciseAnchor:o}=e.docView;if(e.state.readOnly&&t>-1)this.newSel=null;else if(t>-1&&(this.bounds=e.docView.domBoundsAround(t,i,0))){let l=r||o?[]:Jd(e),a=new jd(l,e.state);a.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=a.text,this.newSel=ep(l,this.bounds.from)}else{let l=e.observer.selectionRange,a=r&&r.node==l.focusNode&&r.offset==l.focusOffset||!Ir(e.contentDOM,l.focusNode)?e.state.selection.main.head:e.docView.posFromDOM(l.focusNode,l.focusOffset),h=o&&o.node==l.anchorNode&&o.offset==l.anchorOffset||!Ir(e.contentDOM,l.anchorNode)?e.state.selection.main.anchor:e.docView.posFromDOM(l.anchorNode,l.anchorOffset),c=e.viewport;if((Q.ios||Q.chrome)&&e.state.selection.main.empty&&a!=h&&(c.from>0||c.to-1&&e.state.selection.ranges.length>1?this.newSel=e.state.selection.replaceRange(b.range(h,a)):this.newSel=b.single(h,a)}}}function xc(n,e){let t,{newSel:i}=e,s=n.state.selection.main,r=n.inputState.lastKeyTime>Date.now()-100?n.inputState.lastKeyCode:-1;if(e.bounds){let{from:o,to:l}=e.bounds,a=s.from,h=null;(r===8||Q.android&&e.text.length=s.from&&t.to<=s.to&&(t.from!=s.from||t.to!=s.to)&&s.to-s.from-(t.to-t.from)<=4?t={from:s.from,to:s.to,insert:n.state.doc.slice(s.from,t.from).append(t.insert).append(n.state.doc.slice(t.to,s.to))}:n.state.doc.lineAt(s.from).toDate.now()-50?t={from:s.from,to:s.to,insert:n.state.toText(n.inputState.insertingText)}:Q.chrome&&t&&t.from==t.to&&t.from==s.head&&t.insert.toString()==` + `&&n.lineWrapping&&(i&&(i=b.single(i.main.anchor-1,i.main.head-1)),t={from:s.from,to:s.to,insert:V.of([" "])}),t)return Ao(n,t,i,r);if(i&&!i.main.eq(s)){let o=!1,l="select";return n.inputState.lastSelectionTime>Date.now()-50&&(n.inputState.lastSelectionOrigin=="select"&&(o=!0),l=n.inputState.lastSelectionOrigin,l=="select.pointer"&&(i=Sc(n.state.facet(ln).map(a=>a(n)),i))),n.dispatch({selection:i,scrollIntoView:o,userEvent:l}),!0}else return!1}function Ao(n,e,t,i=-1){if(Q.ios&&n.inputState.flushIOSKey(e))return!0;let s=n.state.selection.main;if(Q.android&&(e.to==s.to&&(e.from==s.from||e.from==s.from-1&&n.state.sliceDoc(e.from,s.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&ii(n.contentDOM,"Enter",13)||(e.from==s.from-1&&e.to==s.to&&e.insert.length==0||i==8&&e.insert.lengths.head)&&ii(n.contentDOM,"Backspace",8)||e.from==s.from&&e.to==s.to+1&&e.insert.length==0&&ii(n.contentDOM,"Delete",46)))return!0;let r=e.insert.toString();n.inputState.composing>=0&&n.inputState.composing++;let o,l=()=>o||(o=Kd(n,e,t));return n.state.facet(lc).some(a=>a(n,e.from,e.to,r,l))||n.dispatch(l()),!0}function Kd(n,e,t){let i,s=n.state,r=s.selection.main,o=-1;if(e.from==e.to&&e.fromr.to){let a=e.fromf(n)),h,a);e.from==c&&(o=c)}if(o>-1)i={changes:e,selection:b.cursor(e.from+e.insert.length,-1)};else if(e.from>=r.from&&e.to<=r.to&&e.to-e.from>=(r.to-r.from)/3&&(!t||t.main.empty&&t.main.from==e.from+e.insert.length)&&n.inputState.composing<0){let a=r.frome.to?s.sliceDoc(e.to,r.to):"";i=s.replaceSelection(n.state.toText(a+e.insert.sliceString(0,void 0,n.state.lineBreak)+h))}else{let a=s.changes(e),h=t&&t.main.to<=a.newLength?t.main:void 0;if(s.selection.ranges.length>1&&(n.inputState.composing>=0||n.inputState.compositionPendingChange)&&e.to<=r.to+10&&e.to>=r.to-10){let c=n.state.sliceDoc(e.from,e.to),f,u=t&&Oc(n,t.main.head);if(u){let p=e.insert.length-(e.to-e.from);f={from:u.from,to:u.to-p}}else f=n.state.doc.lineAt(r.head);let d=r.to-e.to;i=s.changeByRange(p=>{if(p.from==r.from&&p.to==r.to)return{changes:a,range:h||p.map(a)};let m=p.to-d,g=m-c.length;if(n.state.sliceDoc(g,m)!=c||m>=f.from&&g<=f.to)return{range:p};let y=s.changes({from:g,to:m,insert:e.insert}),S=p.to-r.to;return{changes:y,range:h?b.range(Math.max(0,h.anchor+S),Math.max(0,h.head+S)):p.map(y)}})}else i={changes:a,selection:h&&s.selection.replaceRange(h)}}let l="input.type";return(n.composing||n.inputState.compositionPendingChange&&n.inputState.compositionEndedAt>Date.now()-50)&&(n.inputState.compositionPendingChange=!1,l+=".compose",n.inputState.compositionFirstChange&&(l+=".start",n.inputState.compositionFirstChange=!1)),s.update(i,{userEvent:l,scrollIntoView:!0})}function kc(n,e,t,i){let s=Math.min(n.length,e.length),r=0;for(;r0&&l>0&&n.charCodeAt(o-1)==e.charCodeAt(l-1);)o--,l--;if(i=="end"){let a=Math.max(0,r-Math.min(o,l));t-=o+a-r}if(o=o?r-t:0;r-=a,l=r+(l-o),o=r}else if(l=l?r-t:0;r-=a,o=r+(o-l),l=r}return{from:r,toA:o,toB:l}}function Jd(n){let e=[];if(n.root.activeElement!=n.contentDOM)return e;let{anchorNode:t,anchorOffset:i,focusNode:s,focusOffset:r}=n.observer.selectionRange;return t&&(e.push(new Dl(t,i)),(s!=t||r!=i)&&e.push(new Dl(s,r))),e}function ep(n,e){if(n.length==0)return null;let t=n[0].pos,i=n.length==2?n[1].pos:t;return t>-1&&i>-1?b.single(t+e,i+e):null}class tp{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,Q.safari&&e.contentDOM.addEventListener("input",()=>null),Q.gecko&&Op(e.contentDOM.ownerDocument)}handleEvent(e){!hp(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,t){let i=this.handlers[e];if(i){for(let s of i.observers)s(this.view,t);for(let s of i.handlers){if(t.defaultPrevented)break;if(s(this.view,t)){t.preventDefault();break}}}}ensureHandlers(e){let t=ip(e),i=this.handlers,s=this.view.contentDOM;for(let r in t)if(r!="scroll"){let o=!t[r].handlers.length,l=i[r];l&&o!=!l.handlers.length&&(s.removeEventListener(r,this.handleEvent),l=null),l||s.addEventListener(r,this.handleEvent,{passive:o})}for(let r in i)r!="scroll"&&!t[r]&&s.removeEventListener(r,this.handleEvent);this.handlers=t}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&vc.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),Q.android&&Q.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;let t;return Q.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&((t=wc.find(i=>i.keyCode==e.keyCode))&&!e.ctrlKey||np.indexOf(e.key)>-1&&e.ctrlKey&&!e.shiftKey)?(this.pendingIOSKey=t||e,setTimeout(()=>this.flushIOSKey(),250),!0):(e.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(e){let t=this.pendingIOSKey;return!t||t.key=="Enter"&&e&&e.from0?!0:Q.safari&&!Q.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}function El(n,e){return(t,i)=>{try{return e.call(n,i,t)}catch(s){Pe(t.state,s)}}}function ip(n){let e=Object.create(null);function t(i){return e[i]||(e[i]={observers:[],handlers:[]})}for(let i of n){let s=i.spec,r=s&&s.plugin.domEventHandlers,o=s&&s.plugin.domEventObservers;if(r)for(let l in r){let a=r[l];a&&t(l).handlers.push(El(i.value,a))}if(o)for(let l in o){let a=o[l];a&&t(l).observers.push(El(i.value,a))}}for(let i in Ne)t(i).handlers.push(Ne[i]);for(let i in ze)t(i).observers.push(ze[i]);return e}const wc=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],np="dthko",vc=[16,17,18,20,91,92,224,225],kn=6;function wn(n){return Math.max(0,n)*.7+8}function sp(n,e){return Math.max(Math.abs(n.clientX-e.clientX),Math.abs(n.clientY-e.clientY))}class rp{constructor(e,t,i,s){this.view=e,this.startEvent=t,this.style=i,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=t,this.scrollParents=dd(e.contentDOM),this.atoms=e.state.facet(ln).map(o=>o(e));let r=e.contentDOM.ownerDocument;r.addEventListener("mousemove",this.move=this.move.bind(this)),r.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=t.shiftKey,this.multiple=e.state.facet(I.allowMultipleSelections)&&op(e,t),this.dragging=ap(e,t)&&Pc(t)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&sp(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let t=0,i=0,s=0,r=0,o=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:o}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:r,bottom:l}=this.scrollParents.y.getBoundingClientRect());let a=Qo(this.view);e.clientX-a.left<=s+kn?t=-wn(s-e.clientX):e.clientX+a.right>=o-kn&&(t=wn(e.clientX-o)),e.clientY-a.top<=r+kn?i=-wn(r-e.clientY):e.clientY+a.bottom>=l-kn&&(i=wn(e.clientY-l)),this.setScrollSpeed(t,i)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,t){this.scrollSpeed={x:e,y:t},e||t?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:t}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),t&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=t,t=0),(e||t)&&this.view.win.scrollBy(e,t),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:t}=this,i=Sc(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!i.eq(t.state.selection,this.dragging===!1))&&this.view.dispatch({selection:i,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){e.transactions.some(t=>t.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}}function op(n,e){let t=n.state.facet(nc);return t.length?t[0](e):Q.mac?e.metaKey:e.ctrlKey}function lp(n,e){let t=n.state.facet(sc);return t.length?t[0](e):Q.mac?!e.altKey:!e.ctrlKey}function ap(n,e){let{main:t}=n.state.selection;if(t.empty)return!1;let i=zi(n.root);if(!i||i.rangeCount==0)return!0;let s=i.getRangeAt(0).getClientRects();for(let r=0;r=e.clientX&&o.top<=e.clientY&&o.bottom>=e.clientY)return!0}return!1}function hp(n,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let t=e.target,i;t!=n.contentDOM;t=t.parentNode)if(!t||t.nodeType==11||(i=_.get(t))&&i.ignoreEvent(e))return!1;return!0}const Ne=Object.create(null),ze=Object.create(null),Tc=Q.ie&&Q.ie_version<15||Q.ios&&Q.webkit_version<604;function cp(n){let e=n.dom.parentNode;if(!e)return;let t=e.appendChild(document.createElement("textarea"));t.style.cssText="position: fixed; left: -10000px; top: 10px",t.focus(),setTimeout(()=>{n.focus(),t.remove(),Cc(n,t.value)},50)}function Cs(n,e,t){for(let i of n.facet(e))t=i(t,n);return t}function Cc(n,e){e=Cs(n.state,To,e);let{state:t}=n,i,s=1,r=t.toText(e),o=r.lines==t.selection.ranges.length;if(Zr!=null&&t.selection.ranges.every(a=>a.empty)&&Zr==r.toString()){let a=-1;i=t.changeByRange(h=>{let c=t.doc.lineAt(h.from);if(c.from==a)return{range:h};a=c.from;let f=t.toText((o?r.line(s++).text:e)+t.lineBreak);return{changes:{from:c.from,insert:f},range:b.cursor(h.from+f.length)}})}else o?i=t.changeByRange(a=>{let h=r.line(s++);return{changes:{from:a.from,to:a.to,insert:h.text},range:b.cursor(a.from+h.length)}}):i=t.replaceSelection(r);n.dispatch(i,{userEvent:"input.paste",scrollIntoView:!0})}ze.scroll=n=>{n.inputState.lastScrollTop=n.scrollDOM.scrollTop,n.inputState.lastScrollLeft=n.scrollDOM.scrollLeft};Ne.keydown=(n,e)=>(n.inputState.setSelectionOrigin("select"),e.keyCode==27&&n.inputState.tabFocusMode!=0&&(n.inputState.tabFocusMode=Date.now()+2e3),!1);ze.touchstart=(n,e)=>{n.inputState.lastTouchTime=Date.now(),n.inputState.setSelectionOrigin("select.pointer")};ze.touchmove=n=>{n.inputState.setSelectionOrigin("select.pointer")};Ne.mousedown=(n,e)=>{if(n.observer.flush(),n.inputState.lastTouchTime>Date.now()-2e3)return!1;let t=null;for(let i of n.state.facet(rc))if(t=i(n,e),t)break;if(!t&&e.button==0&&(t=dp(n,e)),t){let i=!n.hasFocus;n.inputState.startMouseSelection(new rp(n,e,t,i)),i&&n.observer.ignore(()=>{Ih(n.contentDOM);let r=n.root.activeElement;r&&!r.contains(n.contentDOM)&&r.blur()});let s=n.inputState.mouseSelection;if(s)return s.start(e),s.dragging===!1}else n.inputState.setSelectionOrigin("select.pointer");return!1};function ql(n,e,t,i){if(i==1)return b.cursor(e,t);if(i==2)return Id(n.state,e,t);{let s=te.find(n.docView,e),r=n.state.doc.lineAt(s?s.posAtEnd:e),o=s?s.posAtStart:r.from,l=s?s.posAtEnd:r.to;return le>=t.top&&e<=t.bottom&&n>=t.left&&n<=t.right;function fp(n,e,t,i){let s=te.find(n.docView,e);if(!s)return 1;let r=e-s.posAtStart;if(r==0)return 1;if(r==s.length)return-1;let o=s.coordsAt(r,-1);if(o&&$l(t,i,o))return-1;let l=s.coordsAt(r,1);return l&&$l(t,i,l)?1:o&&o.bottom>=i?-1:1}function Bl(n,e){let t=n.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:t,bias:fp(n,t,e.clientX,e.clientY)}}const up=Q.ie&&Q.ie_version<=11;let Wl=null,Ll=0,zl=0;function Pc(n){if(!up)return n.detail;let e=Wl,t=zl;return Wl=n,zl=Date.now(),Ll=!e||t>Date.now()-400&&Math.abs(e.clientX-n.clientX)<2&&Math.abs(e.clientY-n.clientY)<2?(Ll+1)%3:1}function dp(n,e){let t=Bl(n,e),i=Pc(e),s=n.state.selection;return{update(r){r.docChanged&&(t.pos=r.changes.mapPos(t.pos),s=s.map(r.changes))},get(r,o,l){let a=Bl(n,r),h,c=ql(n,a.pos,a.bias,i);if(t.pos!=a.pos&&!o){let f=ql(n,t.pos,t.bias,i),u=Math.min(f.from,c.from),d=Math.max(f.to,c.to);c=u1&&(h=pp(s,a.pos))?h:l?s.addRange(c):b.create([c])}}}function pp(n,e){for(let t=0;t=e)return b.create(n.ranges.slice(0,t).concat(n.ranges.slice(t+1)),n.mainIndex==t?0:n.mainIndex-(n.mainIndex>t?1:0))}return null}Ne.dragstart=(n,e)=>{let{selection:{main:t}}=n.state;if(e.target.draggable){let s=n.docView.nearest(e.target);if(s&&s.isWidget){let r=s.posAtStart,o=r+s.length;(r>=t.to||o<=t.from)&&(t=b.range(r,o))}}let{inputState:i}=n;return i.mouseSelection&&(i.mouseSelection.dragging=!0),i.draggedContent=t,e.dataTransfer&&(e.dataTransfer.setData("Text",Cs(n.state,Co,n.state.sliceDoc(t.from,t.to))),e.dataTransfer.effectAllowed="copyMove"),!1};Ne.dragend=n=>(n.inputState.draggedContent=null,!1);function Il(n,e,t,i){if(t=Cs(n.state,To,t),!t)return;let s=n.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:r}=n.inputState,o=i&&r&&lp(n,e)?{from:r.from,to:r.to}:null,l={from:s,insert:t},a=n.state.changes(o?[o,l]:l);n.focus(),n.dispatch({changes:a,selection:{anchor:a.mapPos(s,-1),head:a.mapPos(s,1)},userEvent:o?"move.drop":"input.drop"}),n.inputState.draggedContent=null}Ne.drop=(n,e)=>{if(!e.dataTransfer)return!1;if(n.state.readOnly)return!0;let t=e.dataTransfer.files;if(t&&t.length){let i=Array(t.length),s=0,r=()=>{++s==t.length&&Il(n,e,i.filter(o=>o!=null).join(n.state.lineBreak),!1)};for(let o=0;o{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(i[o]=l.result),r()},l.readAsText(t[o])}return!0}else{let i=e.dataTransfer.getData("Text");if(i)return Il(n,e,i,!0),!0}return!1};Ne.paste=(n,e)=>{if(n.state.readOnly)return!0;n.observer.flush();let t=Tc?null:e.clipboardData;return t?(Cc(n,t.getData("text/plain")||t.getData("text/uri-list")),!0):(cp(n),!1)};function mp(n,e){let t=n.dom.parentNode;if(!t)return;let i=t.appendChild(document.createElement("textarea"));i.style.cssText="position: fixed; left: -10000px; top: 10px",i.value=e,i.focus(),i.selectionEnd=e.length,i.selectionStart=0,setTimeout(()=>{i.remove(),n.focus()},50)}function gp(n){let e=[],t=[],i=!1;for(let s of n.selection.ranges)s.empty||(e.push(n.sliceDoc(s.from,s.to)),t.push(s));if(!e.length){let s=-1;for(let{from:r}of n.selection.ranges){let o=n.doc.lineAt(r);o.number>s&&(e.push(o.text),t.push({from:o.from,to:Math.min(n.doc.length,o.to+1)})),s=o.number}i=!0}return{text:Cs(n,Co,e.join(n.lineBreak)),ranges:t,linewise:i}}let Zr=null;Ne.copy=Ne.cut=(n,e)=>{let{text:t,ranges:i,linewise:s}=gp(n.state);if(!t&&!s)return!1;Zr=s?t:null,e.type=="cut"&&!n.state.readOnly&&n.dispatch({changes:i,scrollIntoView:!0,userEvent:"delete.cut"});let r=Tc?null:e.clipboardData;return r?(r.clearData(),r.setData("text/plain",t),!0):(mp(n,t),!1)};const Qc=st.define();function Ac(n,e){let t=[];for(let i of n.facet(ac)){let s=i(n,e);s&&t.push(s)}return t.length?n.update({effects:t,annotations:Qc.of(!0)}):null}function Mc(n){setTimeout(()=>{let e=n.hasFocus;if(e!=n.inputState.notifiedFocused){let t=Ac(n.state,e);t?n.dispatch(t):n.update([])}},10)}ze.focus=n=>{n.inputState.lastFocusTime=Date.now(),!n.scrollDOM.scrollTop&&(n.inputState.lastScrollTop||n.inputState.lastScrollLeft)&&(n.scrollDOM.scrollTop=n.inputState.lastScrollTop,n.scrollDOM.scrollLeft=n.inputState.lastScrollLeft),Mc(n)};ze.blur=n=>{n.observer.clearSelectionRange(),Mc(n)};ze.compositionstart=ze.compositionupdate=n=>{n.observer.editContext||(n.inputState.compositionFirstChange==null&&(n.inputState.compositionFirstChange=!0),n.inputState.composing<0&&(n.inputState.composing=0))};ze.compositionend=n=>{n.observer.editContext||(n.inputState.composing=-1,n.inputState.compositionEndedAt=Date.now(),n.inputState.compositionPendingKey=!0,n.inputState.compositionPendingChange=n.observer.pendingRecords().length>0,n.inputState.compositionFirstChange=null,Q.chrome&&Q.android?n.observer.flushSoon():n.inputState.compositionPendingChange?Promise.resolve().then(()=>n.observer.flush()):setTimeout(()=>{n.inputState.composing<0&&n.docView.hasComposition&&n.update([])},50))};ze.contextmenu=n=>{n.inputState.lastContextMenu=Date.now()};Ne.beforeinput=(n,e)=>{var t,i;if((e.inputType=="insertText"||e.inputType=="insertCompositionText")&&(n.inputState.insertingText=e.data,n.inputState.insertingTextAt=Date.now()),e.inputType=="insertReplacementText"&&n.observer.editContext){let r=(t=e.dataTransfer)===null||t===void 0?void 0:t.getData("text/plain"),o=e.getTargetRanges();if(r&&o.length){let l=o[0],a=n.posAtDOM(l.startContainer,l.startOffset),h=n.posAtDOM(l.endContainer,l.endOffset);return Ao(n,{from:a,to:h,insert:n.state.toText(r)},null),!0}}let s;if(Q.chrome&&Q.android&&(s=wc.find(r=>r.inputType==e.inputType))&&(n.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let r=((i=window.visualViewport)===null||i===void 0?void 0:i.height)||0;setTimeout(()=>{var o;(((o=window.visualViewport)===null||o===void 0?void 0:o.height)||0)>r+10&&n.hasFocus&&(n.contentDOM.blur(),n.focus())},100)}return Q.ios&&e.inputType=="deleteContentForward"&&n.observer.flushSoon(),Q.safari&&e.inputType=="insertText"&&n.inputState.composing>=0&&setTimeout(()=>ze.compositionend(n,e),20),!1};const Vl=new Set;function Op(n){Vl.has(n)||(Vl.add(n),n.addEventListener("copy",()=>{}),n.addEventListener("cut",()=>{}))}const Nl=["pre-wrap","normal","pre-line","break-spaces"];let fi=!1;function Xl(){fi=!1}class yp{constructor(e){this.lineWrapping=e,this.doc=V.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,t){let i=this.doc.lineAt(t).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(i+=Math.max(0,Math.ceil((t-e-i*this.lineLength*.5)/this.lineLength))),this.lineHeight*i}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return Nl.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let t=!1;for(let i=0;i-1,a=Math.round(t)!=Math.round(this.lineHeight)||this.lineWrapping!=l;if(this.lineWrapping=l,this.lineHeight=t,this.charWidth=i,this.textHeight=s,this.lineLength=r,a){this.heightSamples={};for(let h=0;h0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>Hn&&(fi=!0),this.height=e)}replace(e,t,i){return we.of(i)}decomposeLeft(e,t){t.push(this)}decomposeRight(e,t){t.push(this)}applyChanges(e,t,i,s){let r=this,o=i.doc;for(let l=s.length-1;l>=0;l--){let{fromA:a,toA:h,fromB:c,toB:f}=s[l],u=r.lineAt(a,G.ByPosNoHeight,i.setDoc(t),0,0),d=u.to>=h?u:r.lineAt(h,G.ByPosNoHeight,i,0,0);for(f+=d.to-h,h=d.to;l>0&&u.from<=s[l-1].toA;)a=s[l-1].fromA,c=s[l-1].fromB,l--,ar*2){let l=e[t-1];l.break?e.splice(--t,1,l.left,null,l.right):e.splice(--t,1,l.left,l.right),i+=1+l.break,s-=l.size}else if(r>s*2){let l=e[i];l.break?e.splice(i,1,l.left,null,l.right):e.splice(i,1,l.left,l.right),i+=2+l.break,r-=l.size}else break;else if(s=r&&o(this.blockAt(0,i,s,r))}updateHeight(e,t=0,i=!1,s){return s&&s.from<=t&&s.more&&this.setHeight(s.heights[s.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}}class De extends Rc{constructor(e,t){super(e,t,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0}blockAt(e,t,i,s){return new Ke(s,this.length,i,this.height,this.breaks)}replace(e,t,i){let s=i[0];return i.length==1&&(s instanceof De||s instanceof fe&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof fe?s=new De(s.length,this.height):s.height=this.height,this.outdated||(s.outdated=!1),s):we.of(i)}updateHeight(e,t=0,i=!1,s){return s&&s.from<=t&&s.more?this.setHeight(s.heights[s.index++]):(i||this.outdated)&&this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class fe extends we{constructor(e){super(e,0)}heightMetrics(e,t){let i=e.doc.lineAt(t).number,s=e.doc.lineAt(t+this.length).number,r=s-i+1,o,l=0;if(e.lineWrapping){let a=Math.min(this.height,e.lineHeight*r);o=a/r,this.length>r+1&&(l=(this.height-a)/(this.length-r-1))}else o=this.height/r;return{firstLine:i,lastLine:s,perLine:o,perChar:l}}blockAt(e,t,i,s){let{firstLine:r,lastLine:o,perLine:l,perChar:a}=this.heightMetrics(t,s);if(t.lineWrapping){let h=s+(e0){let r=i[i.length-1];r instanceof fe?i[i.length-1]=new fe(r.length+s):i.push(null,new fe(s-1))}if(e>0){let r=i[0];r instanceof fe?i[0]=new fe(e+r.length):i.unshift(new fe(e-1),null)}return we.of(i)}decomposeLeft(e,t){t.push(new fe(e-1),null)}decomposeRight(e,t){t.push(null,new fe(this.length-e-1))}updateHeight(e,t=0,i=!1,s){let r=t+this.length;if(s&&s.from<=t+this.length&&s.more){let o=[],l=Math.max(t,s.from),a=-1;for(s.from>t&&o.push(new fe(s.from-t-1).updateHeight(e,t));l<=r&&s.more;){let c=e.doc.lineAt(l).length;o.length&&o.push(null);let f=s.heights[s.index++];a==-1?a=f:Math.abs(f-a)>=Hn&&(a=-2);let u=new De(c,f);u.outdated=!1,o.push(u),l+=c+1}l<=r&&o.push(null,new fe(r-l).updateHeight(e,l));let h=we.of(o);return(a<0||Math.abs(h.height-this.height)>=Hn||Math.abs(a-this.heightMetrics(e,t).perLine)>=Hn)&&(fi=!0),ls(this,h)}else(i||this.outdated)&&(this.setHeight(e.heightForGap(t,t+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}}class Sp extends we{constructor(e,t,i){super(e.length+t+i.length,e.height+i.height,t|(e.outdated||i.outdated?2:0)),this.left=e,this.right=i,this.size=e.size+i.size}get break(){return this.flags&1}blockAt(e,t,i,s){let r=i+this.left.height;return el))return h;let c=t==G.ByPosNoHeight?G.ByPosNoHeight:G.ByPos;return a?h.join(this.right.lineAt(l,c,i,o,l)):this.left.lineAt(l,c,i,s,r).join(h)}forEachLine(e,t,i,s,r,o){let l=s+this.left.height,a=r+this.left.length+this.break;if(this.break)e=a&&this.right.forEachLine(e,t,i,l,a,o);else{let h=this.lineAt(a,G.ByPos,i,s,r);e=e&&h.from<=t&&o(h),t>h.to&&this.right.forEachLine(h.to+1,t,i,l,a,o)}}replace(e,t,i){let s=this.left.length+this.break;if(tthis.left.length)return this.balanced(this.left,this.right.replace(e-s,t-s,i));let r=[];e>0&&this.decomposeLeft(e,r);let o=r.length;for(let l of i)r.push(l);if(e>0&&Fl(r,o-1),t=i&&t.push(null)),e>i&&this.right.decomposeLeft(e-i,t)}decomposeRight(e,t){let i=this.left.length,s=i+this.break;if(e>=s)return this.right.decomposeRight(e-s,t);e2*t.size||t.size>2*e.size?we.of(this.break?[e,null,t]:[e,t]):(this.left=ls(this.left,e),this.right=ls(this.right,t),this.setHeight(e.height+t.height),this.outdated=e.outdated||t.outdated,this.size=e.size+t.size,this.length=e.length+this.break+t.length,this)}updateHeight(e,t=0,i=!1,s){let{left:r,right:o}=this,l=t+r.length+this.break,a=null;return s&&s.from<=t+r.length&&s.more?a=r=r.updateHeight(e,t,i,s):r.updateHeight(e,t,i),s&&s.from<=l+o.length&&s.more?a=o=o.updateHeight(e,l,i,s):o.updateHeight(e,l,i),a?this.balanced(r,o):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function Fl(n,e){let t,i;n[e]==null&&(t=n[e-1])instanceof fe&&(i=n[e+1])instanceof fe&&n.splice(e-1,3,new fe(t.length+1+i.length))}const xp=5;class Mo{constructor(e,t){this.pos=e,this.oracle=t,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,t){if(this.lineStart>-1){let i=Math.min(t,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof De?s.length+=i-this.pos:(i>this.pos||!this.isCovered)&&this.nodes.push(new De(i-this.pos,-1)),this.writtenTo=i,t>i&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=t}point(e,t,i){if(e=xp)&&this.addLineDeco(s,r,o)}else t>e&&this.span(e,t);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:t}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=t,this.writtenToe&&this.nodes.push(new De(this.pos-e,-1)),this.writtenTo=this.pos}blankContent(e,t){let i=new fe(t-e);return this.oracle.doc.lineAt(e).to==t&&(i.flags|=4),i}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof De)return e;let t=new De(0,-1);return this.nodes.push(t),t}addBlock(e){this.enterLine();let t=e.deco;t&&t.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,t&&t.endSide>0&&(this.covering=e)}addLineDeco(e,t,i){let s=this.ensureLine();s.length+=i,s.collapsed+=i,s.widgetHeight=Math.max(s.widgetHeight,e),s.breaks+=t,this.writtenTo=this.pos=this.pos+i}finish(e){let t=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(t instanceof De)&&!this.isCovered?this.nodes.push(new De(0,-1)):(this.writtenToc.clientHeight||c.scrollWidth>c.clientWidth)&&f.overflow!="visible"){let u=c.getBoundingClientRect();r=Math.max(r,u.left),o=Math.min(o,u.right),l=Math.max(l,u.top),a=Math.min(h==n.parentNode?s.innerHeight:a,u.bottom)}h=f.position=="absolute"||f.position=="fixed"?c.offsetParent:c.parentNode}else if(h.nodeType==11)h=h.host;else break;return{left:r-t.left,right:Math.max(r,o)-t.left,top:l-(t.top+e),bottom:Math.max(l,a)-(t.top+e)}}function Tp(n){let e=n.getBoundingClientRect(),t=n.ownerDocument.defaultView||window;return e.left0&&e.top0}function Cp(n,e){let t=n.getBoundingClientRect();return{left:0,right:t.right-t.left,top:e,bottom:t.bottom-(t.top+e)}}class Us{constructor(e,t,i,s){this.from=e,this.to=t,this.size=i,this.displaySize=s}static same(e,t){if(e.length!=t.length)return!1;for(let i=0;itypeof i!="function"&&i.class=="cm-lineWrapping");this.heightOracle=new yp(t),this.stateDeco=e.facet(Ii).filter(i=>typeof i!="function"),this.heightMap=we.empty().applyChanges(this.stateDeco,V.empty,this.heightOracle.setDoc(e.doc),[new Le(0,0,0,e.doc.length)]);for(let i=0;i<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());i++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=R.set(this.lineGaps.map(i=>i.draw(this,!1))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:t}=this.state.selection;for(let i=0;i<=1;i++){let s=i?t.head:t.anchor;if(!e.some(({from:r,to:o})=>s>=r&&s<=o)){let{from:r,to:o}=this.lineBlockAt(s);e.push(new vn(r,o))}}return this.viewports=e.sort((i,s)=>i.from-s.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?Ul:new Ro(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(Pi(e,this.scaler))})}update(e,t=null){this.state=e.state;let i=this.stateDeco;this.stateDeco=this.state.facet(Ii).filter(c=>typeof c!="function");let s=e.changedRanges,r=Le.extendWithRanges(s,kp(i,this.stateDeco,e?e.changes:se.empty(this.state.doc.length))),o=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);Xl(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),r),(this.heightMap.height!=o||fi)&&(e.flags|=2),l?(this.scrollAnchorPos=e.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=o);let a=r.length?this.mapViewport(this.viewport,e.changes):this.viewport;(t&&(t.range.heada.to)||!this.viewportIsAppropriate(a))&&(a=this.getViewport(0,t));let h=a.from!=this.viewport.from||a.to!=this.viewport.to;this.viewport=a,e.flags|=this.updateForViewport(),(h||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),t&&(this.scrollTarget=t),!this.mustEnforceCursorAssoc&&e.selectionSet&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(cc)&&(this.mustEnforceCursorAssoc=!0)}measure(e){let t=e.contentDOM,i=window.getComputedStyle(t),s=this.heightOracle,r=i.whiteSpace;this.defaultTextDirection=i.direction=="rtl"?Z.RTL:Z.LTR;let o=this.heightOracle.mustRefreshForWrapping(r),l=t.getBoundingClientRect(),a=o||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let h=0,c=0;if(l.width&&l.height){let{scaleX:w,scaleY:k}=zh(t,l);(w>.005&&Math.abs(this.scaleX-w)>.005||k>.005&&Math.abs(this.scaleY-k)>.005)&&(this.scaleX=w,this.scaleY=k,h|=16,o=a=!0)}let f=(parseInt(i.paddingTop)||0)*this.scaleY,u=(parseInt(i.paddingBottom)||0)*this.scaleY;(this.paddingTop!=f||this.paddingBottom!=u)&&(this.paddingTop=f,this.paddingBottom=u,h|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(s.lineWrapping&&(a=!0),this.editorWidth=e.scrollDOM.clientWidth,h|=16);let d=e.scrollDOM.scrollTop*this.scaleY;this.scrollTop!=d&&(this.scrollAnchorHeight=-1,this.scrollTop=d),this.scrolledToBottom=Nh(e.scrollDOM);let p=(this.printing?Cp:vp)(t,this.paddingTop),m=p.top-this.pixelViewport.top,g=p.bottom-this.pixelViewport.bottom;this.pixelViewport=p;let y=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(y!=this.inView&&(this.inView=y,y&&(a=!0)),!this.inView&&!this.scrollTarget&&!Tp(e.dom))return 0;let S=l.width;if((this.contentDOMWidth!=S||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=e.scrollDOM.clientHeight,h|=16),a){let w=e.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(w)&&(o=!0),o||s.lineWrapping&&Math.abs(S-this.contentDOMWidth)>s.charWidth){let{lineHeight:k,charWidth:v,textHeight:T}=e.docView.measureTextSize();o=k>0&&s.refresh(r,k,v,T,Math.max(5,S/v),w),o&&(e.docView.minWidth=0,h|=16)}m>0&&g>0?c=Math.max(m,g):m<0&&g<0&&(c=Math.min(m,g)),Xl();for(let k of this.viewports){let v=k.from==this.viewport.from?w:e.docView.measureVisibleLineHeights(k);this.heightMap=(o?we.empty().applyChanges(this.stateDeco,V.empty,this.heightOracle,[new Le(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(s,0,o,new bp(k.from,v))}fi&&(h|=2)}let x=!this.viewportIsAppropriate(this.viewport,c)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return x&&(h&2&&(h|=this.updateScaler()),this.viewport=this.getViewport(c,this.scrollTarget),h|=this.updateForViewport()),(h&2||x)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(o?[]:this.lineGaps,e)),h|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),h}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,t){let i=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),s=this.heightMap,r=this.heightOracle,{visibleTop:o,visibleBottom:l}=this,a=new vn(s.lineAt(o-i*1e3,G.ByHeight,r,0,0).from,s.lineAt(l+(1-i)*1e3,G.ByHeight,r,0,0).to);if(t){let{head:h}=t.range;if(ha.to){let c=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),f=s.lineAt(h,G.ByPos,r,0,0),u;t.y=="center"?u=(f.top+f.bottom)/2-c/2:t.y=="start"||t.y=="nearest"&&h=l+Math.max(10,Math.min(i,250)))&&s>o-2*1e3&&r>1,o=s<<1;if(this.defaultTextDirection!=Z.LTR&&!i)return[];let l=[],a=(c,f,u,d)=>{if(f-cc&&yy.from>=u.from&&y.to<=u.to&&Math.abs(y.from-c)y.fromS));if(!g){if(fx.from<=f&&x.to>=f)){let x=t.moveToLineBoundary(b.cursor(f),!1,!0).head;x>c&&(f=x)}let y=this.gapSize(u,c,f,d),S=i||y<2e6?y:2e6;g=new Us(c,f,y,S)}l.push(g)},h=c=>{if(c.length2e6)for(let v of e)v.from>=c.from&&v.fromc.from&&a(c.from,d,c,f),pt.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let t=this.stateDeco;this.lineGaps.length&&(t=t.concat(this.lineGapDeco));let i=[];N.spans(t,this.viewport.from,this.viewport.to,{span(r,o){i.push({from:r,to:o})},point(){}},20);let s=0;if(i.length!=this.visibleRanges.length)s=12;else for(let r=0;r=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(t=>t.from<=e&&t.to>=e)||Pi(this.heightMap.lineAt(e,G.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(t=>t.top<=e&&t.bottom>=e)||Pi(this.heightMap.lineAt(this.scaler.fromDOM(e),G.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(e){let t=this.lineBlockAtHeight(e+8);return t.from>=this.viewport.from||this.viewportLines[0].top-e>200?t:this.viewportLines[0]}elementAtHeight(e){return Pi(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}class vn{constructor(e,t){this.from=e,this.to=t}}function Qp(n,e,t){let i=[],s=n,r=0;return N.spans(t,n,e,{span(){},point(o,l){o>s&&(i.push({from:s,to:o}),r+=o-s),s=l}},20),s=1)return e[e.length-1].to;let i=Math.floor(n*t);for(let s=0;;s++){let{from:r,to:o}=e[s],l=o-r;if(i<=l)return r+i;i-=l}}function Cn(n,e){let t=0;for(let{from:i,to:s}of n.ranges){if(e<=s){t+=e-i;break}t+=s-i}return t/n.total}function Ap(n,e){for(let t of n)if(e(t))return t}const Ul={toDOM(n){return n},fromDOM(n){return n},scale:1,eq(n){return n==this}};class Ro{constructor(e,t,i){let s=0,r=0,o=0;this.viewports=i.map(({from:l,to:a})=>{let h=t.lineAt(l,G.ByPos,e,0,0).top,c=t.lineAt(a,G.ByPos,e,0,0).bottom;return s+=c-h,{from:l,to:a,top:h,bottom:c,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(t.height-s);for(let l of this.viewports)l.domTop=o+(l.top-r)*this.scale,o=l.domBottom=l.domTop+(l.bottom-l.top),r=l.bottom}toDOM(e){for(let t=0,i=0,s=0;;t++){let r=tt.from==e.viewports[i].from&&t.to==e.viewports[i].to):!1}}function Pi(n,e){if(e.scale==1)return n;let t=e.toDOM(n.top),i=e.toDOM(n.bottom);return new Ke(n.from,n.length,t,i-t,Array.isArray(n._content)?n._content.map(s=>Pi(s,e)):n._content)}const Pn=A.define({combine:n=>n.join(" ")}),Yr=A.define({combine:n=>n.indexOf(!0)>-1}),Kr=Tt.newName(),Dc=Tt.newName(),Ec=Tt.newName(),qc={"&light":"."+Dc,"&dark":"."+Ec};function Jr(n,e,t){return new Tt(e,{finish(i){return/&/.test(i)?i.replace(/&\w*/,s=>{if(s=="&")return n;if(!t||!t[s])throw new RangeError(`Unsupported selector: ${s}`);return t[s]}):n+" "+i}})}const Mp=Jr("."+Kr,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},qc),Rp={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},Hs=Q.ie&&Q.ie_version<=11;class Dp{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new pd,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(t=>{for(let i of t)this.queue.push(i);(Q.ie&&Q.ie_version<=11||Q.ios&&e.composing)&&t.some(i=>i.type=="childList"&&i.removedNodes.length||i.type=="characterData"&&i.oldValue.length>i.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&Q.android&&e.constructor.EDIT_CONTEXT!==!1&&!(Q.chrome&&Q.chrome_version<126)&&(this.editContext=new qp(e),e.state.facet(dt)&&(e.contentDOM.editContext=this.editContext.editContext)),Hs&&(this.onCharData=t=>{this.queue.push({target:t.target,type:"characterData",oldValue:t.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var t;((t=this.view.docView)===null||t===void 0?void 0:t.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),t.length>0&&t[t.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(t=>{t.length>0&&t[t.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type=="change"||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((t,i)=>t!=e[i]))){this.gapIntersection.disconnect();for(let t of e)this.gapIntersection.observe(t);this.gaps=e}}onSelectionChange(e){let t=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:i}=this,s=this.selectionRange;if(i.state.facet(dt)?i.root.activeElement!=this.dom:!_n(this.dom,s))return;let r=s.anchorNode&&i.docView.nearest(s.anchorNode);if(r&&r.ignoreEvent(e)){t||(this.selectionChanged=!1);return}(Q.ie&&Q.ie_version<=11||Q.android&&Q.chrome)&&!i.state.selection.main.empty&&s.focusNode&&Ri(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,t=zi(e.root);if(!t)return!1;let i=Q.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&Ep(this.view,t)||t;if(!i||this.selectionRange.eq(i))return!1;let s=_n(this.dom,i);return s&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime{let r=this.delayedAndroidKey;r&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=r.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&r.force&&ii(this.dom,r.key,r.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:t,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let t=-1,i=-1,s=!1;for(let r of e){let o=this.readMutation(r);o&&(o.typeOver&&(s=!0),t==-1?{from:t,to:i}=o:(t=Math.min(o.from,t),i=Math.max(o.to,i)))}return{from:t,to:i,typeOver:s}}readChange(){let{from:e,to:t,typeOver:i}=this.processRecords(),s=this.selectionChanged&&_n(this.dom,this.selectionRange);if(e<0&&!s)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let r=new Yd(this.view,e,t,i);return this.view.docView.domChanged={newSel:r.newSel?r.newSel.main:null},r}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let t=this.readChange();if(!t)return this.view.requestMeasure(),!1;let i=this.view.state,s=xc(this.view,t);return this.view.state==i&&(t.domChanged||t.newSel&&!t.newSel.main.eq(this.view.state.selection.main))&&this.view.update([]),s}readMutation(e){let t=this.view.docView.nearest(e.target);if(!t||t.ignoreMutation(e))return null;if(t.markDirty(e.type=="attributes"),e.type=="attributes"&&(t.flags|=4),e.type=="childList"){let i=Hl(t,e.previousSibling||e.target.previousSibling,-1),s=Hl(t,e.nextSibling||e.target.nextSibling,1);return{from:i?t.posAfter(i):t.posAtStart,to:s?t.posBefore(s):t.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:t.posAtStart,to:t.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(dt)!=e.state.facet(dt)&&(e.view.contentDOM.editContext=e.state.facet(dt)?this.editContext.editContext:null))}destroy(){var e,t,i;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(t=this.gapIntersection)===null||t===void 0||t.disconnect(),(i=this.resizeScroll)===null||i===void 0||i.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}}function Hl(n,e,t){for(;e;){let i=_.get(e);if(i&&i.parent==n)return i;let s=e.parentNode;e=s!=n.dom?s:t>0?e.nextSibling:e.previousSibling}return null}function jl(n,e){let t=e.startContainer,i=e.startOffset,s=e.endContainer,r=e.endOffset,o=n.docView.domAtPos(n.state.selection.main.anchor);return Ri(o.node,o.offset,s,r)&&([t,i,s,r]=[s,r,t,i]),{anchorNode:t,anchorOffset:i,focusNode:s,focusOffset:r}}function Ep(n,e){if(e.getComposedRanges){let s=e.getComposedRanges(n.root)[0];if(s)return jl(n,s)}let t=null;function i(s){s.preventDefault(),s.stopImmediatePropagation(),t=s.getTargetRanges()[0]}return n.contentDOM.addEventListener("beforeinput",i,!0),n.dom.ownerDocument.execCommand("indent"),n.contentDOM.removeEventListener("beforeinput",i,!0),t?jl(n,t):null}class qp{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let t=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=i=>{let s=e.state.selection.main,{anchor:r,head:o}=s,l=this.toEditorPos(i.updateRangeStart),a=this.toEditorPos(i.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:i.updateRangeStart,editorBase:l,drifted:!1});let h=a-l>i.text.length;l==this.from&&rthis.to&&(a=r);let c=kc(e.state.sliceDoc(l,a),i.text,(h?s.from:s.to)-l,h?"end":null);if(!c){let u=b.single(this.toEditorPos(i.selectionStart),this.toEditorPos(i.selectionEnd));u.main.eq(s)||e.dispatch({selection:u,userEvent:"select"});return}let f={from:c.from+l,to:c.toA+l,insert:V.of(i.text.slice(c.from,c.toB).split(` +`))};if((Q.mac||Q.android)&&f.from==o-1&&/^\. ?$/.test(i.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(f={from:l,to:a,insert:V.of([i.text.replace("."," ")])}),this.pendingContextChange=f,!e.state.readOnly){let u=this.to-this.from+(f.to-f.from+f.insert.length);Ao(e,f,b.single(this.toEditorPos(i.selectionStart,u),this.toEditorPos(i.selectionEnd,u)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),f.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(t.text.slice(Math.max(0,i.updateRangeStart-1),Math.min(t.text.length,i.updateRangeStart+1)))&&this.handlers.compositionend(i)},this.handlers.characterboundsupdate=i=>{let s=[],r=null;for(let o=this.toEditorPos(i.rangeStart),l=this.toEditorPos(i.rangeEnd);o{let s=[];for(let r of i.getTextFormats()){let o=r.underlineStyle,l=r.underlineThickness;if(!/none/i.test(o)&&!/none/i.test(l)){let a=this.toEditorPos(r.rangeStart),h=this.toEditorPos(r.rangeEnd);if(a{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:i}=this.composing;this.composing=null,i&&this.reset(e.state)}};for(let i in this.handlers)t.addEventListener(i,this.handlers[i]);this.measureReq={read:i=>{this.editContext.updateControlBounds(i.contentDOM.getBoundingClientRect());let s=zi(i.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let t=0,i=!1,s=this.pendingContextChange;return e.changes.iterChanges((r,o,l,a,h)=>{if(i)return;let c=h.length-(o-r);if(s&&o>=s.to)if(s.from==r&&s.to==o&&s.insert.eq(h)){s=this.pendingContextChange=null,t+=c,this.to+=c;return}else s=null,this.revertPending(e.state);if(r+=t,o+=t,o<=this.from)this.from+=c,this.to+=c;else if(rthis.to||this.to-this.from+h.length>3e4){i=!0;return}this.editContext.updateText(this.toContextPos(r),this.toContextPos(o),h.toString()),this.to+=c}t+=c}),s&&!i&&this.revertPending(e.state),!i}update(e){let t=this.pendingContextChange,i=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(i.from,i.to)&&e.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||t)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:t}=e.selection.main;this.from=Math.max(0,t-1e4),this.to=Math.min(e.doc.length,t+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let t=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(t.from),this.toContextPos(t.from+t.insert.length),e.doc.sliceString(t.from,t.to))}setSelection(e){let{main:t}=e.selection,i=this.toContextPos(Math.max(this.from,Math.min(this.to,t.anchor))),s=this.toContextPos(t.head);(this.editContext.selectionStart!=i||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(i,s)}rangeIsValid(e){let{head:t}=e.selection.main;return!(this.from>0&&t-this.from<500||this.to1e4*3)}toEditorPos(e,t=this.to-this.from){e=Math.min(e,t);let i=this.composing;return i&&i.drifted?i.editorBase+(e-i.contextBase):e+this.from}toContextPos(e){let t=this.composing;return t&&t.drifted?t.contextBase+(e-t.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}}class P{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var t;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:i}=e;this.dispatchTransactions=e.dispatchTransactions||i&&(s=>s.forEach(r=>i(r,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=e.root||md(e.parent)||document,this.viewState=new _l(e.state||I.create(e)),e.scrollTo&&e.scrollTo.is(xn)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Kt).map(s=>new Xs(s));for(let s of this.plugins)s.update(this);this.observer=new Dp(this),this.inputState=new tp(this),this.inputState.ensureHandlers(this.plugins),this.docView=new Cl(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((t=document.fonts)===null||t===void 0)&&t.ready&&document.fonts.ready.then(()=>this.requestMeasure())}dispatch(...e){let t=e.length==1&&e[0]instanceof ie?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(t,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let t=!1,i=!1,s,r=this.state;for(let u of e){if(u.startState!=r)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");r=u.state}if(this.destroyed){this.viewState.state=r;return}let o=this.hasFocus,l=0,a=null;e.some(u=>u.annotation(Qc))?(this.inputState.notifiedFocused=o,l=1):o!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=o,a=Ac(r,o),a||(l=1));let h=this.observer.delayedAndroidKey,c=null;if(h?(this.observer.clearDelayedAndroidKey(),c=this.observer.readChange(),(c&&!this.state.doc.eq(r.doc)||!this.state.selection.eq(r.selection))&&(c=null)):this.observer.clear(),r.facet(I.phrases)!=this.state.facet(I.phrases))return this.setState(r);s=os.create(this,r,e),s.flags|=l;let f=this.viewState.scrollTarget;try{this.updateState=2;for(let u of e){if(f&&(f=f.map(u.changes)),u.scrollIntoView){let{main:d}=u.state.selection;f=new ni(d.empty?d:b.cursor(d.head,d.head>d.anchor?-1:1))}for(let d of u.effects)d.is(xn)&&(f=d.value.clip(this.state))}this.viewState.update(s,f),this.bidiCache=as.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),t=this.docView.update(s),this.state.facet(Ti)!=this.styleModules&&this.mountStyles(),i=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(t,e.some(u=>u.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(Pn)!=s.state.facet(Pn)&&(this.viewState.mustMeasureContent=!0),(t||i||f||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),t&&this.docViewUpdate(),!s.empty)for(let u of this.state.facet(Hr))try{u(s)}catch(d){Pe(this.state,d,"update listener")}(a||c)&&Promise.resolve().then(()=>{a&&this.state==a.startState&&this.dispatch(a),c&&!xc(this,c)&&h.force&&ii(this.contentDOM,h.key,h.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let t=this.hasFocus;try{for(let i of this.plugins)i.destroy(this);this.viewState=new _l(e),this.plugins=e.facet(Kt).map(i=>new Xs(i)),this.pluginMap.clear();for(let i of this.plugins)i.update(this);this.docView.destroy(),this.docView=new Cl(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}t&&this.focus(),this.requestMeasure()}updatePlugins(e){let t=e.startState.facet(Kt),i=e.state.facet(Kt);if(t!=i){let s=[];for(let r of i){let o=t.indexOf(r);if(o<0)s.push(new Xs(r));else{let l=this.plugins[o];l.mustUpdate=e,s.push(l)}}for(let r of this.plugins)r.mustUpdate!=e&&r.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=e;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let t=null,i=this.scrollDOM,s=i.scrollTop*this.scaleY,{scrollAnchorPos:r,scrollAnchorHeight:o}=this.viewState;Math.abs(s-this.viewState.scrollTop)>1&&(o=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(o<0)if(Nh(i))r=-1,o=this.viewState.heightMap.height;else{let d=this.viewState.scrollAnchorAt(s);r=d.from,o=d.top}this.updateState=1;let a=this.viewState.measure(this);if(!a&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let h=[];a&4||([this.measureRequests,h]=[h,this.measureRequests]);let c=h.map(d=>{try{return d.read(this)}catch(p){return Pe(this.state,p),Gl}}),f=os.create(this,this.state,[]),u=!1;f.flags|=a,t?t.flags|=a:t=f,this.updateState=2,f.empty||(this.updatePlugins(f),this.inputState.update(f),this.updateAttrs(),u=this.docView.update(f),u&&this.docViewUpdate());for(let d=0;d1||p<-1){s=s+p,i.scrollTop=s/this.scaleY,o=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(t&&!t.empty)for(let l of this.state.facet(Hr))l(t)}get themeClasses(){return Kr+" "+(this.state.facet(Yr)?Ec:Dc)+" "+this.state.facet(Pn)}updateAttrs(){let e=Zl(this,dc,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),t={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(dt)?"true":"false",class:"cm-content",style:`${Q.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(t["aria-readonly"]="true"),Zl(this,Po,t);let i=this.observer.ignore(()=>{let s=Nr(this.contentDOM,this.contentAttrs,t),r=Nr(this.dom,this.editorAttrs,e);return s||r});return this.editorAttrs=e,this.contentAttrs=t,i}showAnnouncements(e){let t=!0;for(let i of e)for(let s of i.effects)if(s.is(P.announce)){t&&(this.announceDOM.textContent=""),t=!1;let r=this.announceDOM.appendChild(document.createElement("div"));r.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(Ti);let e=this.state.facet(P.cspNonce);Tt.mount(this.root,this.styleModules.concat(Mp).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let t=0;ti.plugin==e)||null),t&&t.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,t,i){return _s(this,e,Rl(this,e,t,i))}moveByGroup(e,t){return _s(this,e,Rl(this,e,t,i=>Ud(this,e.head,i)))}visualLineSide(e,t){let i=this.bidiSpans(e),s=this.textDirectionAt(e.from),r=i[t?i.length-1:0];return b.cursor(r.side(t,s)+e.from,r.forward(!t,s)?1:-1)}moveToLineBoundary(e,t,i=!0){return _d(this,e,t,i)}moveVertically(e,t,i){return _s(this,e,Hd(this,e,t,i))}domAtPos(e){return this.docView.domAtPos(e)}posAtDOM(e,t=0){return this.docView.posFromDOM(e,t)}posAtCoords(e,t=!0){return this.readMeasured(),yc(this,e,t)}coordsAtPos(e,t=1){this.readMeasured();let i=this.docView.coordsAt(e,t);if(!i||i.left==i.right)return i;let s=this.state.doc.lineAt(e),r=this.bidiSpans(s),o=r[wt.find(r,e-s.from,-1,t)];return sn(i,o.dir==Z.LTR==t>0)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(hc)||ethis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>$p)return tc(e.length);let t=this.textDirectionAt(e.from),i;for(let r of this.bidiCache)if(r.from==e.from&&r.dir==t&&(r.fresh||ec(r.isolates,i=Tl(this,e))))return r.order;i||(i=Tl(this,e));let s=Ad(e.text,t,i);return this.bidiCache.push(new as(e.from,e.to,t,i,!0,s)),s}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||Q.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{Ih(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,t={}){return xn.of(new ni(typeof e=="number"?b.cursor(e):e,t.y,t.x,t.yMargin,t.xMargin))}scrollSnapshot(){let{scrollTop:e,scrollLeft:t}=this.scrollDOM,i=this.viewState.scrollAnchorAt(e);return xn.of(new ni(b.cursor(i.from),"start","start",i.top-e,t,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return J.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return J.define(()=>({}),{eventObservers:e})}static theme(e,t){let i=Tt.newName(),s=[Pn.of(i),Ti.of(Jr(`.${i}`,e))];return t&&t.dark&&s.push(Yr.of(!0)),s}static baseTheme(e){return Mt.lowest(Ti.of(Jr("."+Kr,e,qc)))}static findFromDOM(e){var t;let i=e.querySelector(".cm-content"),s=i&&_.get(i)||_.get(e);return((t=s?.rootView)===null||t===void 0?void 0:t.view)||null}}P.styleModule=Ti;P.inputHandler=lc;P.clipboardInputFilter=To;P.clipboardOutputFilter=Co;P.scrollHandler=fc;P.focusChangeEffect=ac;P.perLineTextDirection=hc;P.exceptionSink=oc;P.updateListener=Hr;P.editable=dt;P.mouseSelectionStyle=rc;P.dragMovesSelection=sc;P.clickAddsSelectionRange=nc;P.decorations=Ii;P.outerDecorations=pc;P.atomicRanges=ln;P.bidiIsolatedRanges=mc;P.scrollMargins=gc;P.darkTheme=Yr;P.cspNonce=A.define({combine:n=>n.length?n[0]:""});P.contentAttributes=Po;P.editorAttributes=dc;P.lineWrapping=P.contentAttributes.of({class:"cm-lineWrapping"});P.announce=q.define();const $p=4096,Gl={};class as{constructor(e,t,i,s,r,o){this.from=e,this.to=t,this.dir=i,this.isolates=s,this.fresh=r,this.order=o}static update(e,t){if(t.empty&&!e.some(r=>r.fresh))return e;let i=[],s=e.length?e[e.length-1].dir:Z.LTR;for(let r=Math.max(0,e.length-10);r=0;s--){let r=i[s],o=typeof r=="function"?r(n):r;o&&Vr(o,t)}return t}const Bp=Q.mac?"mac":Q.windows?"win":Q.linux?"linux":"key";function Wp(n,e){const t=n.split(/-(?!$)/);let i=t[t.length-1];i=="Space"&&(i=" ");let s,r,o,l;for(let a=0;ai.concat(s),[]))),t}function zp(n,e,t){return Bc($c(n.state),e,n,t)}let xt=null;const Ip=4e3;function Vp(n,e=Bp){let t=Object.create(null),i=Object.create(null),s=(o,l)=>{let a=i[o];if(a==null)i[o]=l;else if(a!=l)throw new Error("Key binding "+o+" is used both as a regular binding and as a multi-stroke prefix")},r=(o,l,a,h,c)=>{var f,u;let d=t[o]||(t[o]=Object.create(null)),p=l.split(/ (?!$)/).map(y=>Wp(y,e));for(let y=1;y{let w=xt={view:x,prefix:S,scope:o};return setTimeout(()=>{xt==w&&(xt=null)},Ip),!0}]})}let m=p.join(" ");s(m,!1);let g=d[m]||(d[m]={preventDefault:!1,stopPropagation:!1,run:((u=(f=d._any)===null||f===void 0?void 0:f.run)===null||u===void 0?void 0:u.slice())||[]});a&&g.run.push(a),h&&(g.preventDefault=!0),c&&(g.stopPropagation=!0)};for(let o of n){let l=o.scope?o.scope.split(" "):["editor"];if(o.any)for(let h of l){let c=t[h]||(t[h]=Object.create(null));c._any||(c._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:f}=o;for(let u in c)c[u].run.push(d=>f(d,eo))}let a=o[e]||o.key;if(a)for(let h of l)r(h,a,o.run,o.preventDefault,o.stopPropagation),o.shift&&r(h,"Shift-"+a,o.shift,o.preventDefault,o.stopPropagation)}return t}let eo=null;function Bc(n,e,t,i){eo=e;let s=hd(e),r=Te(s,0),o=Ye(r)==s.length&&s!=" ",l="",a=!1,h=!1,c=!1;xt&&xt.view==t&&xt.scope==i&&(l=xt.prefix+" ",vc.indexOf(e.keyCode)<0&&(h=!0,xt=null));let f=new Set,u=g=>{if(g){for(let y of g.run)if(!f.has(y)&&(f.add(y),y(t)))return g.stopPropagation&&(c=!0),!0;g.preventDefault&&(g.stopPropagation&&(c=!0),h=!0)}return!1},d=n[i],p,m;return d&&(u(d[l+Qn(s,e,!o)])?a=!0:o&&(e.altKey||e.metaKey||e.ctrlKey)&&!(Q.windows&&e.ctrlKey&&e.altKey)&&!(Q.mac&&e.altKey&&!(e.ctrlKey||e.metaKey))&&(p=Ct[e.keyCode])&&p!=s?(u(d[l+Qn(p,e,!0)])||e.shiftKey&&(m=Li[e.keyCode])!=s&&m!=p&&u(d[l+Qn(m,e,!1)]))&&(a=!0):o&&e.shiftKey&&u(d[l+Qn(s,e,!0)])&&(a=!0),!a&&u(d._any)&&(a=!0)),h&&(a=!0),a&&c&&e.stopPropagation(),eo=null,a}class hn{constructor(e,t,i,s,r){this.className=e,this.left=t,this.top=i,this.width=s,this.height=r}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,t){return t.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,t,i){if(i.empty){let s=e.coordsAtPos(i.head,i.assoc||1);if(!s)return[];let r=Wc(e);return[new hn(t,s.left-r.left,s.top-r.top,null,s.bottom-s.top)]}else return Np(e,t,i)}}function Wc(n){let e=n.scrollDOM.getBoundingClientRect();return{left:(n.textDirection==Z.LTR?e.left:e.right-n.scrollDOM.clientWidth*n.scaleX)-n.scrollDOM.scrollLeft*n.scaleX,top:e.top-n.scrollDOM.scrollTop*n.scaleY}}function Kl(n,e,t,i){let s=n.coordsAtPos(e,t*2);if(!s)return i;let r=n.dom.getBoundingClientRect(),o=(s.top+s.bottom)/2,l=n.posAtCoords({x:r.left+1,y:o}),a=n.posAtCoords({x:r.right-1,y:o});return l==null||a==null?i:{from:Math.max(i.from,Math.min(l,a)),to:Math.min(i.to,Math.max(l,a))}}function Np(n,e,t){if(t.to<=n.viewport.from||t.from>=n.viewport.to)return[];let i=Math.max(t.from,n.viewport.from),s=Math.min(t.to,n.viewport.to),r=n.textDirection==Z.LTR,o=n.contentDOM,l=o.getBoundingClientRect(),a=Wc(n),h=o.querySelector(".cm-line"),c=h&&window.getComputedStyle(h),f=l.left+(c?parseInt(c.paddingLeft)+Math.min(0,parseInt(c.textIndent)):0),u=l.right-(c?parseInt(c.paddingRight):0),d=Gr(n,i,1),p=Gr(n,s,-1),m=d.type==ke.Text?d:null,g=p.type==ke.Text?p:null;if(m&&(n.lineWrapping||d.widgetLineBreaks)&&(m=Kl(n,i,1,m)),g&&(n.lineWrapping||p.widgetLineBreaks)&&(g=Kl(n,s,-1,g)),m&&g&&m.from==g.from&&m.to==g.to)return S(x(t.from,t.to,m));{let k=m?x(t.from,null,m):w(d,!1),v=g?x(null,t.to,g):w(p,!0),T=[];return(m||d).to<(g||p).from-(m&&g?1:0)||d.widgetLineBreaks>1&&k.bottom+n.defaultLineHeight/2D&&W.from=ne)break;ee>X&&$(Math.max(F,X),k==null&&F<=D,Math.min(ee,ne),v==null&&ee>=B,me.dir)}if(X=oe.to+1,X>=ne)break}return z.length==0&&$(D,k==null,B,v==null,n.textDirection),{top:E,bottom:M,horizontal:z}}function w(k,v){let T=l.top+(v?k.top:k.bottom);return{top:T,bottom:T,horizontal:[]}}}function Xp(n,e){return n.constructor==e.constructor&&n.eq(e)}class Fp{constructor(e,t){this.view=e,this.layer=t,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),t.above&&this.dom.classList.add("cm-layer-above"),t.class&&this.dom.classList.add(t.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),t.mount&&t.mount(this.dom,e)}update(e){e.startState.facet(jn)!=e.state.facet(jn)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let t=0,i=e.facet(jn);for(;t!Xp(t,this.drawn[i]))){let t=this.dom.firstChild,i=0;for(let s of e)s.update&&t&&s.constructor&&this.drawn[i].constructor&&s.update(t,this.drawn[i])?(t=t.nextSibling,i++):this.dom.insertBefore(s.draw(),t);for(;t;){let s=t.nextSibling;t.remove(),t=s}this.drawn=e,Q.safari&&Q.safari_version>=26&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}}const jn=A.define();function Lc(n){return[J.define(e=>new Fp(e,n)),jn.of(n)]}const Vi=A.define({combine(n){return rt(n,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,t)=>Math.min(e,t),drawRangeCursor:(e,t)=>e||t})}});function _p(n={}){return[Vi.of(n),Up,Hp,jp,cc.of(!0)]}function zc(n){return n.startState.facet(Vi)!=n.state.facet(Vi)}const Up=Lc({above:!0,markers(n){let{state:e}=n,t=e.facet(Vi),i=[];for(let s of e.selection.ranges){let r=s==e.selection.main;if(s.empty||t.drawRangeCursor){let o=r?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:b.cursor(s.head,s.head>s.anchor?-1:1);for(let a of hn.forRange(n,o,l))i.push(a)}}return i},update(n,e){n.transactions.some(i=>i.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let t=zc(n);return t&&Jl(n.state,e),n.docChanged||n.selectionSet||t},mount(n,e){Jl(e.state,n)},class:"cm-cursorLayer"});function Jl(n,e){e.style.animationDuration=n.facet(Vi).cursorBlinkRate+"ms"}const Hp=Lc({above:!1,markers(n){return n.state.selection.ranges.map(e=>e.empty?[]:hn.forRange(n,"cm-selectionBackground",e)).reduce((e,t)=>e.concat(t))},update(n,e){return n.docChanged||n.selectionSet||n.viewportChanged||zc(n)},class:"cm-selectionLayer"}),jp=Mt.highest(P.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}})),Ic=q.define({map(n,e){return n==null?null:e.mapPos(n)}}),Qi=he.define({create(){return null},update(n,e){return n!=null&&(n=e.changes.mapPos(n)),e.effects.reduce((t,i)=>i.is(Ic)?i.value:t,n)}}),Gp=J.fromClass(class{constructor(n){this.view=n,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(n){var e;let t=n.state.field(Qi);t==null?this.cursor!=null&&((e=this.cursor)===null||e===void 0||e.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(n.startState.field(Qi)!=t||n.docChanged||n.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:n}=this,e=n.state.field(Qi),t=e!=null&&n.coordsAtPos(e);if(!t)return null;let i=n.scrollDOM.getBoundingClientRect();return{left:t.left-i.left+n.scrollDOM.scrollLeft*n.scaleX,top:t.top-i.top+n.scrollDOM.scrollTop*n.scaleY,height:t.bottom-t.top}}drawCursor(n){if(this.cursor){let{scaleX:e,scaleY:t}=this.view;n?(this.cursor.style.left=n.left/e+"px",this.cursor.style.top=n.top/t+"px",this.cursor.style.height=n.height/t+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(n){this.view.state.field(Qi)!=n&&this.view.dispatch({effects:Ic.of(n)})}},{eventObservers:{dragover(n){this.setDropPos(this.view.posAtCoords({x:n.clientX,y:n.clientY}))},dragleave(n){(n.target==this.view.contentDOM||!this.view.contentDOM.contains(n.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function Zp(){return[Qi,Gp]}function ea(n,e,t,i,s){e.lastIndex=0;for(let r=n.iterRange(t,i),o=t,l;!r.next().done;o+=r.value.length)if(!r.lineBreak)for(;l=e.exec(r.value);)s(o+l.index,l)}function Yp(n,e){let t=n.visibleRanges;if(t.length==1&&t[0].from==n.viewport.from&&t[0].to==n.viewport.to)return t;let i=[];for(let{from:s,to:r}of t)s=Math.max(n.state.doc.lineAt(s).from,s-e),r=Math.min(n.state.doc.lineAt(r).to,r+e),i.length&&i[i.length-1].to>=s?i[i.length-1].to=r:i.push({from:s,to:r});return i}class Kp{constructor(e){const{regexp:t,decoration:i,decorate:s,boundary:r,maxLength:o=1e3}=e;if(!t.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=t,s)this.addMatch=(l,a,h,c)=>s(c,h,h+l[0].length,l,a);else if(typeof i=="function")this.addMatch=(l,a,h,c)=>{let f=i(l,a,h);f&&c(h,h+l[0].length,f)};else if(i)this.addMatch=(l,a,h,c)=>c(h,h+l[0].length,i);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=r,this.maxLength=o}createDeco(e){let t=new gt,i=t.add.bind(t);for(let{from:s,to:r}of Yp(e,this.maxLength))ea(e.state.doc,this.regexp,s,r,(o,l)=>this.addMatch(l,e,o,i));return t.finish()}updateDeco(e,t){let i=1e9,s=-1;return e.docChanged&&e.changes.iterChanges((r,o,l,a)=>{a>=e.view.viewport.from&&l<=e.view.viewport.to&&(i=Math.min(l,i),s=Math.max(a,s))}),e.viewportMoved||s-i>1e3?this.createDeco(e.view):s>-1?this.updateRange(e.view,t.map(e.changes),i,s):t}updateRange(e,t,i,s){for(let r of e.visibleRanges){let o=Math.max(r.from,i),l=Math.min(r.to,s);if(l>=o){let a=e.state.doc.lineAt(o),h=a.toa.from;o--)if(this.boundary.test(a.text[o-1-a.from])){c=o;break}for(;lu.push(y.range(m,g));if(a==h)for(this.regexp.lastIndex=c-a.from;(d=this.regexp.exec(a.text))&&d.indexthis.addMatch(g,e,m,p));t=t.update({filterFrom:c,filterTo:f,filter:(m,g)=>mf,add:u})}}return t}}const to=/x/.unicode!=null?"gu":"g",Jp=new RegExp(`[\0-\b +--Ÿ­؜​‎‏\u2028\u2029‭‮⁦⁧⁩\uFEFF-]`,to),em={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let js=null;function tm(){var n;if(js==null&&typeof document<"u"&&document.body){let e=document.body.style;js=((n=e.tabSize)!==null&&n!==void 0?n:e.MozTabSize)!=null}return js||!1}const Gn=A.define({combine(n){let e=rt(n,{render:null,specialChars:Jp,addSpecialChars:null});return(e.replaceTabs=!tm())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,to)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,to)),e}});function im(n={}){return[Gn.of(n),nm()]}let ta=null;function nm(){return ta||(ta=J.fromClass(class{constructor(n){this.view=n,this.decorations=R.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(n.state.facet(Gn)),this.decorations=this.decorator.createDeco(n)}makeDecorator(n){return new Kp({regexp:n.specialChars,decoration:(e,t,i)=>{let{doc:s}=t.state,r=Te(e[0],0);if(r==9){let o=s.lineAt(i),l=t.state.tabSize,a=gi(o.text,l,i-o.from);return R.replace({widget:new lm((l-a%l)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[r]||(this.decorationCache[r]=R.replace({widget:new om(n,r)}))},boundary:n.replaceTabs?void 0:/[^]/})}update(n){let e=n.state.facet(Gn);n.startState.facet(Gn)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(n.view)):this.decorations=this.decorator.updateDeco(n,this.decorations)}},{decorations:n=>n.decorations}))}const sm="•";function rm(n){return n>=32?sm:n==10?"␤":String.fromCharCode(9216+n)}class om extends ot{constructor(e,t){super(),this.options=e,this.code=t}eq(e){return e.code==this.code}toDOM(e){let t=rm(this.code),i=e.state.phrase("Control character")+" "+(em[this.code]||"0x"+this.code.toString(16)),s=this.options.render&&this.options.render(this.code,i,t);if(s)return s;let r=document.createElement("span");return r.textContent=t,r.title=i,r.setAttribute("aria-label",i),r.className="cm-specialChar",r}ignoreEvent(){return!1}}class lm extends ot{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}}function am(){return cm}const hm=R.line({class:"cm-activeLine"}),cm=J.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.docChanged||n.selectionSet)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let e=-1,t=[];for(let i of n.state.selection.ranges){let s=n.lineBlockAt(i.head);s.from>e&&(t.push(hm.range(s.from)),e=s.from)}return R.set(t)}},{decorations:n=>n.decorations});class fm extends ot{constructor(e){super(),this.content=e}toDOM(e){let t=document.createElement("span");return t.className="cm-placeholder",t.style.pointerEvents="none",t.appendChild(typeof this.content=="string"?document.createTextNode(this.content):typeof this.content=="function"?this.content(e):this.content.cloneNode(!0)),t.setAttribute("aria-hidden","true"),t}coordsAt(e){let t=e.firstChild?ai(e.firstChild):[];if(!t.length)return null;let i=window.getComputedStyle(e.parentNode),s=sn(t[0],i.direction!="rtl"),r=parseInt(i.lineHeight);return s.bottom-s.top>r*1.5?{left:s.left,right:s.right,top:s.top,bottom:s.top+r}:s}ignoreEvent(){return!1}}function um(n){let e=J.fromClass(class{constructor(t){this.view=t,this.placeholder=n?R.set([R.widget({widget:new fm(n),side:1}).range(0)]):R.none}get decorations(){return this.view.state.doc.length?R.none:this.placeholder}},{decorations:t=>t.decorations});return typeof n=="string"?[e,P.contentAttributes.of({"aria-placeholder":n})]:e}const io=2e3;function dm(n,e,t){let i=Math.min(e.line,t.line),s=Math.max(e.line,t.line),r=[];if(e.off>io||t.off>io||e.col<0||t.col<0){let o=Math.min(e.off,t.off),l=Math.max(e.off,t.off);for(let a=i;a<=s;a++){let h=n.doc.line(a);h.length<=l&&r.push(b.range(h.from+o,h.to+l))}}else{let o=Math.min(e.col,t.col),l=Math.max(e.col,t.col);for(let a=i;a<=s;a++){let h=n.doc.line(a),c=Er(h.text,o,n.tabSize,!0);if(c<0)r.push(b.cursor(h.to));else{let f=Er(h.text,l,n.tabSize);r.push(b.range(h.from+c,h.from+f))}}}return r}function pm(n,e){let t=n.coordsAtPos(n.viewport.from);return t?Math.round(Math.abs((t.left-e)/n.defaultCharacterWidth)):-1}function ia(n,e){let t=n.posAtCoords({x:e.clientX,y:e.clientY},!1),i=n.state.doc.lineAt(t),s=t-i.from,r=s>io?-1:s==i.length?pm(n,e.clientX):gi(i.text,n.state.tabSize,t-i.from);return{line:i.number,col:r,off:s}}function mm(n,e){let t=ia(n,e),i=n.state.selection;return t?{update(s){if(s.docChanged){let r=s.changes.mapPos(s.startState.doc.line(t.line).from),o=s.state.doc.lineAt(r);t={line:o.number,col:t.col,off:Math.min(t.off,o.length)},i=i.map(s.changes)}},get(s,r,o){let l=ia(n,s);if(!l)return i;let a=dm(n.state,t,l);return a.length?o?b.create(a.concat(i.ranges)):b.create(a):i}}:null}function gm(n){let e=(t=>t.altKey&&t.button==0);return P.mouseSelectionStyle.of((t,i)=>e(i)?mm(t,i):null)}const Om={Alt:[18,n=>!!n.altKey],Control:[17,n=>!!n.ctrlKey],Shift:[16,n=>!!n.shiftKey],Meta:[91,n=>!!n.metaKey]},ym={style:"cursor: crosshair"};function bm(n={}){let[e,t]=Om[n.key||"Alt"],i=J.fromClass(class{constructor(s){this.view=s,this.isDown=!1}set(s){this.isDown!=s&&(this.isDown=s,this.view.update([]))}},{eventObservers:{keydown(s){this.set(s.keyCode==e||t(s))},keyup(s){(s.keyCode==e||!t(s))&&this.set(!1)},mousemove(s){this.set(t(s))}}});return[i,P.contentAttributes.of(s=>{var r;return!((r=s.plugin(i))===null||r===void 0)&&r.isDown?ym:null})]}const An="-10000px";class Vc{constructor(e,t,i,s){this.facet=t,this.createTooltipView=i,this.removeTooltipView=s,this.input=e.state.facet(t),this.tooltips=this.input.filter(o=>o);let r=null;this.tooltipViews=this.tooltips.map(o=>r=i(o,r))}update(e,t){var i;let s=e.state.facet(this.facet),r=s.filter(a=>a);if(s===this.input){for(let a of this.tooltipViews)a.update&&a.update(e);return!1}let o=[],l=t?[]:null;for(let a=0;at[h]=a),t.length=l.length),this.input=s,this.tooltips=r,this.tooltipViews=o,!0}}function Sm(n){let e=n.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:e.clientHeight,right:e.clientWidth}}const Gs=A.define({combine:n=>{var e,t,i;return{position:Q.ios?"absolute":((e=n.find(s=>s.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((t=n.find(s=>s.parent))===null||t===void 0?void 0:t.parent)||null,tooltipSpace:((i=n.find(s=>s.tooltipSpace))===null||i===void 0?void 0:i.tooltipSpace)||Sm}}}),na=new WeakMap,Do=J.fromClass(class{constructor(n){this.view=n,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let e=n.state.facet(Gs);this.position=e.position,this.parent=e.parent,this.classes=n.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.resizeObserver=typeof ResizeObserver=="function"?new ResizeObserver(()=>this.measureSoon()):null,this.manager=new Vc(n,Eo,(t,i)=>this.createTooltip(t,i),t=>{this.resizeObserver&&this.resizeObserver.unobserve(t.dom),t.dom.remove()}),this.above=this.manager.tooltips.map(t=>!!t.above),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(t=>{Date.now()>this.lastTransaction-50&&t.length>0&&t[t.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),n.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let n of this.manager.tooltipViews)this.intersectionObserver.observe(n.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(n){n.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(n,this.above);e&&this.observeIntersection();let t=e||n.geometryChanged,i=n.state.facet(Gs);if(i.position!=this.position&&!this.madeAbsolute){this.position=i.position;for(let s of this.manager.tooltipViews)s.dom.style.position=this.position;t=!0}if(i.parent!=this.parent){this.parent&&this.container.remove(),this.parent=i.parent,this.createContainer();for(let s of this.manager.tooltipViews)this.container.appendChild(s.dom);t=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);t&&this.maybeMeasure()}createTooltip(n,e){let t=n.create(this.view),i=e?e.dom:null;if(t.dom.classList.add("cm-tooltip"),n.arrow&&!t.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let s=document.createElement("div");s.className="cm-tooltip-arrow",t.dom.appendChild(s)}return t.dom.style.position=this.position,t.dom.style.top=An,t.dom.style.left="0px",this.container.insertBefore(t.dom,i),t.mount&&t.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(t.dom),t}destroy(){var n,e,t;this.view.win.removeEventListener("resize",this.measureSoon);for(let i of this.manager.tooltipViews)i.dom.remove(),(n=i.destroy)===null||n===void 0||n.call(i);this.parent&&this.container.remove(),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),(t=this.intersectionObserver)===null||t===void 0||t.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let n=1,e=1,t=!1;if(this.position=="fixed"&&this.manager.tooltipViews.length){let{dom:r}=this.manager.tooltipViews[0];if(Q.safari){let o=r.getBoundingClientRect();t=Math.abs(o.top+1e4)>1||Math.abs(o.left)>1}else t=!!r.offsetParent&&r.offsetParent!=this.container.ownerDocument.body}if(t||this.position=="absolute")if(this.parent){let r=this.parent.getBoundingClientRect();r.width&&r.height&&(n=r.width/this.parent.offsetWidth,e=r.height/this.parent.offsetHeight)}else({scaleX:n,scaleY:e}=this.view.viewState);let i=this.view.scrollDOM.getBoundingClientRect(),s=Qo(this.view);return{visible:{left:i.left+s.left,top:i.top+s.top,right:i.right-s.right,bottom:i.bottom-s.bottom},parent:this.parent?this.container.getBoundingClientRect():this.view.dom.getBoundingClientRect(),pos:this.manager.tooltips.map((r,o)=>{let l=this.manager.tooltipViews[o];return l.getCoords?l.getCoords(r.pos):this.view.coordsAtPos(r.pos)}),size:this.manager.tooltipViews.map(({dom:r})=>r.getBoundingClientRect()),space:this.view.state.facet(Gs).tooltipSpace(this.view),scaleX:n,scaleY:e,makeAbsolute:t}}writeMeasure(n){var e;if(n.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let l of this.manager.tooltipViews)l.dom.style.position="absolute"}let{visible:t,space:i,scaleX:s,scaleY:r}=n,o=[];for(let l=0;l=Math.min(t.bottom,i.bottom)||f.rightMath.min(t.right,i.right)+.1)){c.style.top=An;continue}let d=a.arrow?h.dom.querySelector(".cm-tooltip-arrow"):null,p=d?7:0,m=u.right-u.left,g=(e=na.get(h))!==null&&e!==void 0?e:u.bottom-u.top,y=h.offset||km,S=this.view.textDirection==Z.LTR,x=u.width>i.right-i.left?S?i.left:i.right-u.width:S?Math.max(i.left,Math.min(f.left-(d?14:0)+y.x,i.right-m)):Math.min(Math.max(i.left,f.left-m+(d?14:0)-y.x),i.right-m),w=this.above[l];!a.strictSide&&(w?f.top-g-p-y.yi.bottom)&&w==i.bottom-f.bottom>f.top-i.top&&(w=this.above[l]=!w);let k=(w?f.top-i.top:i.bottom-f.bottom)-p;if(kx&&E.topv&&(v=w?E.top-g-2-p:E.bottom+p+2);if(this.position=="absolute"?(c.style.top=(v-n.parent.top)/r+"px",sa(c,(x-n.parent.left)/s)):(c.style.top=v/r+"px",sa(c,x/s)),d){let E=f.left+(S?y.x:-y.x)-(x+14-7);d.style.left=E/s+"px"}h.overlap!==!0&&o.push({left:x,top:v,right:T,bottom:v+g}),c.classList.toggle("cm-tooltip-above",w),c.classList.toggle("cm-tooltip-below",!w),h.positioned&&h.positioned(n.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let n of this.manager.tooltipViews)n.dom.style.top=An}},{eventObservers:{scroll(){this.maybeMeasure()}}});function sa(n,e){let t=parseInt(n.style.left,10);(isNaN(t)||Math.abs(e-t)>1)&&(n.style.left=e+"px")}const xm=P.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:"14px",position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),km={x:0,y:0},Eo=A.define({enables:[Do,xm]}),hs=A.define({combine:n=>n.reduce((e,t)=>e.concat(t),[])});class Ps{static create(e){return new Ps(e)}constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new Vc(e,hs,(t,i)=>this.createHostedView(t,i),t=>t.dom.remove())}createHostedView(e,t){let i=e.create(this.view);return i.dom.classList.add("cm-tooltip-section"),this.dom.insertBefore(i.dom,t?t.dom.nextSibling:this.dom.firstChild),this.mounted&&i.mount&&i.mount(this.view),i}mount(e){for(let t of this.manager.tooltipViews)t.mount&&t.mount(e);this.mounted=!0}positioned(e){for(let t of this.manager.tooltipViews)t.positioned&&t.positioned(e)}update(e){this.manager.update(e)}destroy(){var e;for(let t of this.manager.tooltipViews)(e=t.destroy)===null||e===void 0||e.call(t)}passProp(e){let t;for(let i of this.manager.tooltipViews){let s=i[e];if(s!==void 0){if(t===void 0)t=s;else if(t!==s)return}}return t}get offset(){return this.passProp("offset")}get getCoords(){return this.passProp("getCoords")}get overlap(){return this.passProp("overlap")}get resize(){return this.passProp("resize")}}const wm=Eo.compute([hs],n=>{let e=n.facet(hs);return e.length===0?null:{pos:Math.min(...e.map(t=>t.pos)),end:Math.max(...e.map(t=>{var i;return(i=t.end)!==null&&i!==void 0?i:t.pos})),create:Ps.create,above:e[0].above,arrow:e.some(t=>t.arrow)}});class vm{constructor(e,t,i,s,r){this.view=e,this.source=t,this.field=i,this.setHover=s,this.hoverTime=r,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active.length)return;let e=Date.now()-this.lastMove.time;el.bottom||t.xl.right+e.defaultCharacterWidth)return;let a=e.bidiSpans(e.state.doc.lineAt(s)).find(c=>c.from<=s&&c.to>=s),h=a&&a.dir==Z.RTL?-1:1;r=t.x{this.pending==l&&(this.pending=null,a&&!(Array.isArray(a)&&!a.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(a)?a:[a])}))},a=>Pe(e.state,a,"hover tooltip"))}else o&&!(Array.isArray(o)&&!o.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(o)?o:[o])})}get tooltip(){let e=this.view.plugin(Do),t=e?e.manager.tooltips.findIndex(i=>i.create==Ps.create):-1;return t>-1?e.manager.tooltipViews[t]:null}mousemove(e){var t,i;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let{active:s,tooltip:r}=this;if(s.length&&r&&!Tm(r.dom,e)||this.pending){let{pos:o}=s[0]||this.pending,l=(i=(t=s[0])===null||t===void 0?void 0:t.end)!==null&&i!==void 0?i:o;(o==l?this.view.posAtCoords(this.lastMove)!=o:!Cm(this.view,o,l,e.clientX,e.clientY))&&(this.view.dispatch({effects:this.setHover.of([])}),this.pending=null)}}mouseleave(e){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;let{active:t}=this;if(t.length){let{tooltip:i}=this;i&&i.dom.contains(e.relatedTarget)?this.watchTooltipLeave(i.dom):this.view.dispatch({effects:this.setHover.of([])})}}watchTooltipLeave(e){let t=i=>{e.removeEventListener("mouseleave",t),this.active.length&&!this.view.dom.contains(i.relatedTarget)&&this.view.dispatch({effects:this.setHover.of([])})};e.addEventListener("mouseleave",t)}destroy(){clearTimeout(this.hoverTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}}const Mn=4;function Tm(n,e){let{left:t,right:i,top:s,bottom:r}=n.getBoundingClientRect(),o;if(o=n.querySelector(".cm-tooltip-arrow")){let l=o.getBoundingClientRect();s=Math.min(l.top,s),r=Math.max(l.bottom,r)}return e.clientX>=t-Mn&&e.clientX<=i+Mn&&e.clientY>=s-Mn&&e.clientY<=r+Mn}function Cm(n,e,t,i,s,r){let o=n.scrollDOM.getBoundingClientRect(),l=n.documentTop+n.documentPadding.top+n.contentHeight;if(o.left>i||o.rights||Math.min(o.bottom,l)=e&&a<=t}function Pm(n,e={}){let t=q.define(),i=he.define({create(){return[]},update(s,r){if(s.length&&(e.hideOnChange&&(r.docChanged||r.selection)?s=[]:e.hideOn&&(s=s.filter(o=>!e.hideOn(r,o))),r.docChanged)){let o=[];for(let l of s){let a=r.changes.mapPos(l.pos,-1,de.TrackDel);if(a!=null){let h=Object.assign(Object.create(null),l);h.pos=a,h.end!=null&&(h.end=r.changes.mapPos(h.end)),o.push(h)}}s=o}for(let o of r.effects)o.is(t)&&(s=o.value),o.is(Qm)&&(s=[]);return s},provide:s=>hs.from(s)});return{active:i,extension:[i,J.define(s=>new vm(s,n,i,t,e.hoverTime||300)),wm]}}function Nc(n,e){let t=n.plugin(Do);if(!t)return null;let i=t.manager.tooltips.indexOf(e);return i<0?null:t.manager.tooltipViews[i]}const Qm=q.define(),ra=A.define({combine(n){let e,t;for(let i of n)e=e||i.topContainer,t=t||i.bottomContainer;return{topContainer:e,bottomContainer:t}}});function Ni(n,e){let t=n.plugin(Xc),i=t?t.specs.indexOf(e):-1;return i>-1?t.panels[i]:null}const Xc=J.fromClass(class{constructor(n){this.input=n.state.facet(Xi),this.specs=this.input.filter(t=>t),this.panels=this.specs.map(t=>t(n));let e=n.state.facet(ra);this.top=new Rn(n,!0,e.topContainer),this.bottom=new Rn(n,!1,e.bottomContainer),this.top.sync(this.panels.filter(t=>t.top)),this.bottom.sync(this.panels.filter(t=>!t.top));for(let t of this.panels)t.dom.classList.add("cm-panel"),t.mount&&t.mount()}update(n){let e=n.state.facet(ra);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new Rn(n.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new Rn(n.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let t=n.state.facet(Xi);if(t!=this.input){let i=t.filter(a=>a),s=[],r=[],o=[],l=[];for(let a of i){let h=this.specs.indexOf(a),c;h<0?(c=a(n.view),l.push(c)):(c=this.panels[h],c.update&&c.update(n)),s.push(c),(c.top?r:o).push(c)}this.specs=i,this.panels=s,this.top.sync(r),this.bottom.sync(o);for(let a of l)a.dom.classList.add("cm-panel"),a.mount&&a.mount()}else for(let i of this.panels)i.update&&i.update(n)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:n=>P.scrollMargins.of(e=>{let t=e.plugin(n);return t&&{top:t.top.scrollMargin(),bottom:t.bottom.scrollMargin()}})});class Rn{constructor(e,t,i){this.view=e,this.top=t,this.container=i,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let t of this.panels)t.destroy&&e.indexOf(t)<0&&t.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let t=this.container||this.view.dom;t.insertBefore(this.dom,this.top?t.firstChild:null)}let e=this.dom.firstChild;for(let t of this.panels)if(t.dom.parentNode==this.dom){for(;e!=t.dom;)e=oa(e);e=e.nextSibling}else this.dom.insertBefore(t.dom,e);for(;e;)e=oa(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}}function oa(n){let e=n.nextSibling;return n.remove(),e}const Xi=A.define({enables:Xc});class yt extends Nt{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}}yt.prototype.elementClass="";yt.prototype.toDOM=void 0;yt.prototype.mapMode=de.TrackBefore;yt.prototype.startSide=yt.prototype.endSide=-1;yt.prototype.point=!0;const Zn=A.define(),Am=A.define(),Mm={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>N.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{},side:"before"},qi=A.define();function Rm(n){return[Fc(),qi.of({...Mm,...n})]}const la=A.define({combine:n=>n.some(e=>e)});function Fc(n){return[Dm]}const Dm=J.fromClass(class{constructor(n){this.view=n,this.domAfter=null,this.prevViewport=n.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=n.state.facet(qi).map(e=>new ha(n,e)),this.fixed=!n.state.facet(la);for(let e of this.gutters)e.config.side=="after"?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),n.scrollDOM.insertBefore(this.dom,n.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(n){if(this.updateGutters(n)){let e=this.prevViewport,t=n.view.viewport,i=Math.min(e.to,t.to)-Math.max(e.from,t.from);this.syncGutters(i<(t.to-t.from)*.8)}if(n.geometryChanged){let e=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=e,this.domAfter&&(this.domAfter.style.minHeight=e)}this.view.state.facet(la)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=n.view.viewport}syncGutters(n){let e=this.dom.nextSibling;n&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let t=N.iter(this.view.state.facet(Zn),this.view.viewport.from),i=[],s=this.gutters.map(r=>new Em(r,this.view.viewport,-this.view.documentPadding.top));for(let r of this.view.viewportLineBlocks)if(i.length&&(i=[]),Array.isArray(r.type)){let o=!0;for(let l of r.type)if(l.type==ke.Text&&o){no(t,i,l.from);for(let a of s)a.line(this.view,l,i);o=!1}else if(l.widget)for(let a of s)a.widget(this.view,l)}else if(r.type==ke.Text){no(t,i,r.from);for(let o of s)o.line(this.view,r,i)}else if(r.widget)for(let o of s)o.widget(this.view,r);for(let r of s)r.finish();n&&(this.view.scrollDOM.insertBefore(this.dom,e),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(n){let e=n.startState.facet(qi),t=n.state.facet(qi),i=n.docChanged||n.heightChanged||n.viewportChanged||!N.eq(n.startState.facet(Zn),n.state.facet(Zn),n.view.viewport.from,n.view.viewport.to);if(e==t)for(let s of this.gutters)s.update(n)&&(i=!0);else{i=!0;let s=[];for(let r of t){let o=e.indexOf(r);o<0?s.push(new ha(this.view,r)):(this.gutters[o].update(n),s.push(this.gutters[o]))}for(let r of this.gutters)r.dom.remove(),s.indexOf(r)<0&&r.destroy();for(let r of s)r.config.side=="after"?this.getDOMAfter().appendChild(r.dom):this.dom.appendChild(r.dom);this.gutters=s}return i}destroy(){for(let n of this.gutters)n.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:n=>P.scrollMargins.of(e=>{let t=e.plugin(n);if(!t||t.gutters.length==0||!t.fixed)return null;let i=t.dom.offsetWidth*e.scaleX,s=t.domAfter?t.domAfter.offsetWidth*e.scaleX:0;return e.textDirection==Z.LTR?{left:i,right:s}:{right:i,left:s}})});function aa(n){return Array.isArray(n)?n:[n]}function no(n,e,t){for(;n.value&&n.from<=t;)n.from==t&&e.push(n.value),n.next()}class Em{constructor(e,t,i){this.gutter=e,this.height=i,this.i=0,this.cursor=N.iter(e.markers,t.from)}addElement(e,t,i){let{gutter:s}=this,r=(t.top-this.height)/e.scaleY,o=t.height/e.scaleY;if(this.i==s.elements.length){let l=new _c(e,o,r,i);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(e,o,r,i);this.height=t.bottom,this.i++}line(e,t,i){let s=[];no(this.cursor,s,t.from),i.length&&(s=s.concat(i));let r=this.gutter.config.lineMarker(e,t,s);r&&s.unshift(r);let o=this.gutter;s.length==0&&!o.config.renderEmptyElements||this.addElement(e,t,s)}widget(e,t){let i=this.gutter.config.widgetMarker(e,t.widget,t),s=i?[i]:null;for(let r of e.state.facet(Am)){let o=r(e,t.widget,t);o&&(s||(s=[])).push(o)}s&&this.addElement(e,t,s)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let t=e.elements.pop();e.dom.removeChild(t.dom),t.destroy()}}}class ha{constructor(e,t){this.view=e,this.config=t,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let i in t.domEventHandlers)this.dom.addEventListener(i,s=>{let r=s.target,o;if(r!=this.dom&&this.dom.contains(r)){for(;r.parentNode!=this.dom;)r=r.parentNode;let a=r.getBoundingClientRect();o=(a.top+a.bottom)/2}else o=s.clientY;let l=e.lineBlockAtHeight(o-e.documentTop);t.domEventHandlers[i](e,l,s)&&s.preventDefault()});this.markers=aa(t.markers(e)),t.initialSpacer&&(this.spacer=new _c(e,0,0,[t.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let t=this.markers;if(this.markers=aa(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],e);s!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[s])}let i=e.view.viewport;return!N.eq(this.markers,t,i.from,i.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}}class _c{constructor(e,t,i,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,t,i,s)}update(e,t,i,s){this.height!=t&&(this.height=t,this.dom.style.height=t+"px"),this.above!=i&&(this.dom.style.marginTop=(this.above=i)?i+"px":""),qm(this.markers,s)||this.setMarkers(e,s)}setMarkers(e,t){let i="cm-gutterElement",s=this.dom.firstChild;for(let r=0,o=0;;){let l=o,a=rr(l,a,h)||o(l,a,h):o}return i}})}});class Zs extends yt{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}}function Ys(n,e){return n.state.facet(Jt).formatNumber(e,n.state)}const Wm=qi.compute([Jt],n=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet($m)},lineMarker(e,t,i){return i.some(s=>s.toDOM)?null:new Zs(Ys(e,e.state.doc.lineAt(t.from).number))},widgetMarker:(e,t,i)=>{for(let s of e.state.facet(Bm)){let r=s(e,t,i);if(r)return r}return null},lineMarkerChange:e=>e.startState.facet(Jt)!=e.state.facet(Jt),initialSpacer(e){return new Zs(Ys(e,ca(e.state.doc.lines)))},updateSpacer(e,t){let i=Ys(t.view,ca(t.view.state.doc.lines));return i==e.number?e:new Zs(i)},domEventHandlers:n.facet(Jt).domEventHandlers,side:"before"}));function Lm(n={}){return[Jt.of(n),Fc(),Wm]}function ca(n){let e=9;for(;e{let e=[],t=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.head).from;s>t&&(t=s,e.push(zm.range(s)))}return N.of(e)});function Vm(){return Im}const Uc=1024;let Nm=0;class Ks{constructor(e,t){this.from=e,this.to=t}}class L{constructor(e={}){this.id=Nm++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=e.combine||null}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=ve.match(e)),t=>{let i=e(t);return i===void 0?null:[this,i]}}}L.closedBy=new L({deserialize:n=>n.split(" ")});L.openedBy=new L({deserialize:n=>n.split(" ")});L.group=new L({deserialize:n=>n.split(" ")});L.isolate=new L({deserialize:n=>{if(n&&n!="rtl"&&n!="ltr"&&n!="auto")throw new RangeError("Invalid value for isolate: "+n);return n||"auto"}});L.contextHash=new L({perNode:!0});L.lookAhead=new L({perNode:!0});L.mounted=new L({perNode:!0});class cs{constructor(e,t,i){this.tree=e,this.overlay=t,this.parser=i}static get(e){return e&&e.props&&e.props[L.mounted.id]}}const Xm=Object.create(null);class ve{constructor(e,t,i,s=0){this.name=e,this.props=t,this.id=i,this.flags=s}static define(e){let t=e.props&&e.props.length?Object.create(null):Xm,i=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),s=new ve(e.name||"",t,e.id,i);if(e.props){for(let r of e.props)if(Array.isArray(r)||(r=r(s)),r){if(r[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");t[r[0].id]=r[1]}}return s}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let t=this.prop(L.group);return t?t.indexOf(e)>-1:!1}return this.id==e}static match(e){let t=Object.create(null);for(let i in e)for(let s of i.split(" "))t[s]=e[i];return i=>{for(let s=i.prop(L.group),r=-1;r<(s?s.length:0);r++){let o=t[r<0?i.name:s[r]];if(o)return o}}}}ve.none=new ve("",Object.create(null),0,8);class Qs{constructor(e){this.types=e;for(let t=0;t0;for(let a=this.cursor(o|re.IncludeAnonymous);;){let h=!1;if(a.from<=r&&a.to>=s&&(!l&&a.type.isAnonymous||t(a)!==!1)){if(a.firstChild())continue;h=!0}for(;h&&i&&(l||!a.type.isAnonymous)&&i(a),!a.nextSibling();){if(!a.parent())return;h=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let t in this.props)e.push([+t,this.props[t]]);return e}balance(e={}){return this.children.length<=8?this:Bo(ve.none,this.children,this.positions,0,this.children.length,0,this.length,(t,i,s)=>new j(this.type,t,i,s,this.propValues),e.makeTree||((t,i,s)=>new j(ve.none,t,i,s)))}static build(e){return Hm(e)}}j.empty=new j(ve.none,[],[],0);class qo{constructor(e,t){this.buffer=e,this.index=t}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new qo(this.buffer,this.index)}}class Qt{constructor(e,t,i){this.buffer=e,this.length=t,this.set=i}get type(){return ve.none}toString(){let e=[];for(let t=0;t0));a=o[a+3]);return l}slice(e,t,i){let s=this.buffer,r=new Uint16Array(t-e),o=0;for(let l=e,a=0;l=e&&te;case 1:return t<=e&&i>e;case 2:return i>e;case 4:return!0}}function Fi(n,e,t,i){for(var s;n.from==n.to||(t<1?n.from>=e:n.from>e)||(t>-1?n.to<=e:n.to0?l.length:-1;e!=h;e+=t){let c=l[e],f=a[e]+o.from;if(Hc(s,i,f,f+c.length)){if(c instanceof Qt){if(r&re.ExcludeBuffers)continue;let u=c.findChild(0,c.buffer.length,t,i-f,s);if(u>-1)return new Je(new Fm(o,c,e,f),null,u)}else if(r&re.IncludeAnonymous||!c.type.isAnonymous||$o(c)){let u;if(!(r&re.IgnoreMounts)&&(u=cs.get(c))&&!u.overlay)return new Ae(u.tree,f,e,o);let d=new Ae(c,f,e,o);return r&re.IncludeAnonymous||!d.type.isAnonymous?d:d.nextChild(t<0?c.children.length-1:0,t,i,s)}}}if(r&re.IncludeAnonymous||!o.type.isAnonymous||(o.index>=0?e=o.index+t:e=t<0?-1:o._parent._tree.children.length,o=o._parent,!o))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}enter(e,t,i=0){let s;if(!(i&re.IgnoreOverlays)&&(s=cs.get(this._tree))&&s.overlay){let r=e-this.from;for(let{from:o,to:l}of s.overlay)if((t>0?o<=r:o=r:l>r))return new Ae(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,t,i)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function ua(n,e,t,i){let s=n.cursor(),r=[];if(!s.firstChild())return r;if(t!=null){for(let o=!1;!o;)if(o=s.type.is(t),!s.nextSibling())return r}for(;;){if(i!=null&&s.type.is(i))return r;if(s.type.is(e)&&r.push(s.node),!s.nextSibling())return i==null?r:[]}}function so(n,e,t=e.length-1){for(let i=n;t>=0;i=i.parent){if(!i)return!1;if(!i.type.isAnonymous){if(e[t]&&e[t]!=i.name)return!1;t--}}return!0}class Fm{constructor(e,t,i,s){this.parent=e,this.buffer=t,this.index=i,this.start=s}}class Je extends jc{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,t,i){super(),this.context=e,this._parent=t,this.index=i,this.type=e.buffer.set.types[e.buffer.buffer[i]]}child(e,t,i){let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],e,t-this.context.start,i);return r<0?null:new Je(this.context,this,r)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,t,i=0){if(i&re.ExcludeBuffers)return null;let{buffer:s}=this.context,r=s.findChild(this.index+4,s.buffer[this.index+3],t>0?1:-1,e-this.context.start,t);return r<0?null:new Je(this.context,this,r)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,t=e.buffer[this.index+3];return t<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new Je(this.context,this._parent,t):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,t=this._parent?this._parent.index+4:0;return this.index==t?this.externalSibling(-1):new Je(this.context,this._parent,e.findChild(t,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],t=[],{buffer:i}=this.context,s=this.index+4,r=i.buffer[this.index+3];if(r>s){let o=i.buffer[this.index+1];e.push(i.slice(s,r,o)),t.push(0)}return new j(this.type,e,t,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function Gc(n){if(!n.length)return null;let e=0,t=n[0];for(let r=1;rt.from||o.to=e){let l=new Ae(o.tree,o.overlay[0].from+r.from,-1,r);(s||(s=[i])).push(Fi(l,e,t,!1))}}return s?Gc(s):i}class ro{get name(){return this.type.name}constructor(e,t=0){if(this.mode=t,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,e instanceof Ae)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let i=e._parent;i;i=i._parent)this.stack.unshift(i.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,t){this.index=e;let{start:i,buffer:s}=this.buffer;return this.type=t||s.set.types[s.buffer[e]],this.from=i+s.buffer[e+1],this.to=i+s.buffer[e+2],!0}yield(e){return e?e instanceof Ae?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,t,i){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,t,i,this.mode));let{buffer:s}=this.buffer,r=s.findChild(this.index+4,s.buffer[this.index+3],e,t-this.buffer.start,i);return r<0?!1:(this.stack.push(this.index),this.yieldBuf(r))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,t,i=this.mode){return this.buffer?i&re.ExcludeBuffers?!1:this.enterChild(1,e,t):this.yield(this._tree.enter(e,t,i))}parent(){if(!this.buffer)return this.yieldNode(this.mode&re.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&re.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:t}=this.buffer,i=this.stack.length-1;if(e<0){let s=i<0?0:this.stack[i]+4;if(this.index!=s)return this.yieldBuf(t.findChild(s,this.index,-1,0,4))}else{let s=t.buffer[this.index+3];if(s<(i<0?t.buffer.length:t.buffer[this.stack[i]+3]))return this.yieldBuf(s)}return i<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let t,i,{buffer:s}=this;if(s){if(e>0){if(this.index-1)for(let r=t+e,o=e<0?-1:i._tree.children.length;r!=o;r+=e){let l=i._tree.children[r];if(this.mode&re.IncludeAnonymous||l instanceof Qt||!l.type.isAnonymous||$o(l))return!1}return!0}move(e,t){if(t&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,t=0){for(;(this.from==this.to||(t<1?this.from>=e:this.from>e)||(t>-1?this.to<=e:this.to=0;){for(let o=e;o;o=o._parent)if(o.index==s){if(s==this.index)return o;t=o,i=r+1;break e}s=this.stack[--r]}for(let s=i;s=0;r--){if(r<0)return so(this._tree,e,s);let o=i[t.buffer[this.stack[r]]];if(!o.isAnonymous){if(e[s]&&e[s]!=o.name)return!1;s--}}return!0}}function $o(n){return n.children.some(e=>e instanceof Qt||!e.type.isAnonymous||$o(e))}function Hm(n){var e;let{buffer:t,nodeSet:i,maxBufferLength:s=Uc,reused:r=[],minRepeatType:o=i.types.length}=n,l=Array.isArray(t)?new qo(t,t.length):t,a=i.types,h=0,c=0;function f(k,v,T,E,M,z){let{id:$,start:D,end:B,size:W}=l,X=c,ne=h;if(W<0)if(l.next(),W==-1){let ce=r[$];T.push(ce),E.push(D-k);return}else if(W==-3){h=$;return}else if(W==-4){c=$;return}else throw new RangeError(`Unrecognized record size: ${W}`);let oe=a[$],me,F,ee=D-k;if(B-D<=s&&(F=g(l.pos-v,M))){let ce=new Uint16Array(F.size-F.skip),ge=l.pos-F.size,_e=ce.length;for(;l.pos>ge;)_e=y(F.start,ce,_e);me=new Qt(ce,B-F.start,i),ee=F.start-k}else{let ce=l.pos-W;l.next();let ge=[],_e=[],Dt=$>=o?$:-1,Gt=0,gn=B;for(;l.pos>ce;)Dt>=0&&l.id==Dt&&l.size>=0?(l.end<=gn-s&&(p(ge,_e,D,Gt,l.end,gn,Dt,X,ne),Gt=ge.length,gn=l.end),l.next()):z>2500?u(D,ce,ge,_e):f(D,ce,ge,_e,Dt,z+1);if(Dt>=0&&Gt>0&&Gt-1&&Gt>0){let ll=d(oe,ne);me=Bo(oe,ge,_e,0,ge.length,0,B-D,ll,ll)}else me=m(oe,ge,_e,B-D,X-B,ne)}T.push(me),E.push(ee)}function u(k,v,T,E){let M=[],z=0,$=-1;for(;l.pos>v;){let{id:D,start:B,end:W,size:X}=l;if(X>4)l.next();else{if($>-1&&B<$)break;$<0&&($=W-s),M.push(D,B,W),z++,l.next()}}if(z){let D=new Uint16Array(z*4),B=M[M.length-2];for(let W=M.length-3,X=0;W>=0;W-=3)D[X++]=M[W],D[X++]=M[W+1]-B,D[X++]=M[W+2]-B,D[X++]=X;T.push(new Qt(D,M[2]-B,i)),E.push(B-k)}}function d(k,v){return(T,E,M)=>{let z=0,$=T.length-1,D,B;if($>=0&&(D=T[$])instanceof j){if(!$&&D.type==k&&D.length==M)return D;(B=D.prop(L.lookAhead))&&(z=E[$]+D.length+B)}return m(k,T,E,M,z,v)}}function p(k,v,T,E,M,z,$,D,B){let W=[],X=[];for(;k.length>E;)W.push(k.pop()),X.push(v.pop()+T-M);k.push(m(i.types[$],W,X,z-M,D-z,B)),v.push(M-T)}function m(k,v,T,E,M,z,$){if(z){let D=[L.contextHash,z];$=$?[D].concat($):[D]}if(M>25){let D=[L.lookAhead,M];$=$?[D].concat($):[D]}return new j(k,v,T,E,$)}function g(k,v){let T=l.fork(),E=0,M=0,z=0,$=T.end-s,D={size:0,start:0,skip:0};e:for(let B=T.pos-k;T.pos>B;){let W=T.size;if(T.id==v&&W>=0){D.size=E,D.start=M,D.skip=z,z+=4,E+=4,T.next();continue}let X=T.pos-W;if(W<0||X=o?4:0,oe=T.start;for(T.next();T.pos>X;){if(T.size<0)if(T.size==-3)ne+=4;else break e;else T.id>=o&&(ne+=4);T.next()}M=oe,E+=W,z+=ne}return(v<0||E==k)&&(D.size=E,D.start=M,D.skip=z),D.size>4?D:void 0}function y(k,v,T){let{id:E,start:M,end:z,size:$}=l;if(l.next(),$>=0&&E4){let B=l.pos-($-4);for(;l.pos>B;)T=y(k,v,T)}v[--T]=D,v[--T]=z-k,v[--T]=M-k,v[--T]=E}else $==-3?h=E:$==-4&&(c=E);return T}let S=[],x=[];for(;l.pos>0;)f(n.start||0,n.bufferStart||0,S,x,-1,0);let w=(e=n.length)!==null&&e!==void 0?e:S.length?x[0]+S[0].length:0;return new j(a[n.topID],S.reverse(),x.reverse(),w)}const da=new WeakMap;function Yn(n,e){if(!n.isAnonymous||e instanceof Qt||e.type!=n)return 1;let t=da.get(e);if(t==null){t=1;for(let i of e.children){if(i.type!=n||!(i instanceof j)){t=1;break}t+=Yn(n,i)}da.set(e,t)}return t}function Bo(n,e,t,i,s,r,o,l,a){let h=0;for(let p=i;p=c)break;v+=T}if(x==w+1){if(v>c){let T=p[w];d(T.children,T.positions,0,T.children.length,m[w]+S);continue}f.push(p[w])}else{let T=m[x-1]+p[x-1].length-k;f.push(Bo(n,p,m,w,x,k,T,null,a))}u.push(k+S-r)}}return d(e,t,i,s,0),(l||a)(f,u,o)}class jm{constructor(){this.map=new WeakMap}setBuffer(e,t,i){let s=this.map.get(e);s||this.map.set(e,s=new Map),s.set(t,i)}getBuffer(e,t){let i=this.map.get(e);return i&&i.get(t)}set(e,t){e instanceof Je?this.setBuffer(e.context.buffer,e.index,t):e instanceof Ae&&this.map.set(e.tree,t)}get(e){return e instanceof Je?this.getBuffer(e.context.buffer,e.index):e instanceof Ae?this.map.get(e.tree):void 0}cursorSet(e,t){e.buffer?this.setBuffer(e.buffer.buffer,e.index,t):this.map.set(e.tree,t)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}}class It{constructor(e,t,i,s,r=!1,o=!1){this.from=e,this.to=t,this.tree=i,this.offset=s,this.open=(r?1:0)|(o?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,t=[],i=!1){let s=[new It(0,e.length,e,0,!1,i)];for(let r of t)r.to>e.length&&s.push(r);return s}static applyChanges(e,t,i=128){if(!t.length)return e;let s=[],r=1,o=e.length?e[0]:null;for(let l=0,a=0,h=0;;l++){let c=l=i)for(;o&&o.from=u.from||f<=u.to||h){let d=Math.max(u.from,a)-h,p=Math.min(u.to,f)-h;u=d>=p?null:new It(d,p,u.tree,u.offset+h,l>0,!!c)}if(u&&s.push(u),o.to>f)break;o=rnew Ks(s.from,s.to)):[new Ks(0,0)]:[new Ks(0,e.length)],this.createParse(e,t||[],i)}parse(e,t,i){let s=this.startParse(e,t,i);for(;;){let r=s.advance();if(r)return r}}}class Gm{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,t){return this.string.slice(e,t)}}new L({perNode:!0});let Zm=0;class qe{constructor(e,t,i,s){this.name=e,this.set=t,this.base=i,this.modified=s,this.id=Zm++}toString(){let{name:e}=this;for(let t of this.modified)t.name&&(e=`${t.name}(${e})`);return e}static define(e,t){let i=typeof e=="string"?e:"?";if(e instanceof qe&&(t=e),t?.base)throw new Error("Can not derive from a modified tag");let s=new qe(i,[],null,[]);if(s.set.push(s),t)for(let r of t.set)s.set.push(r);return s}static defineModifier(e){let t=new fs(e);return i=>i.modified.indexOf(t)>-1?i:fs.get(i.base||i,i.modified.concat(t).sort((s,r)=>s.id-r.id))}}let Ym=0;class fs{constructor(e){this.name=e,this.instances=[],this.id=Ym++}static get(e,t){if(!t.length)return e;let i=t[0].instances.find(l=>l.base==e&&Km(t,l.modified));if(i)return i;let s=[],r=new qe(e.name,s,e,t);for(let l of t)l.instances.push(r);let o=Jm(t);for(let l of e.set)if(!l.modified.length)for(let a of o)s.push(fs.get(l,a));return r}}function Km(n,e){return n.length==e.length&&n.every((t,i)=>t==e[i])}function Jm(n){let e=[[]];for(let t=0;ti.length-t.length)}function Lo(n){let e=Object.create(null);for(let t in n){let i=n[t];Array.isArray(i)||(i=[i]);for(let s of t.split(" "))if(s){let r=[],o=2,l=s;for(let f=0;;){if(l=="..."&&f>0&&f+3==s.length){o=1;break}let u=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!u)throw new RangeError("Invalid path: "+s);if(r.push(u[0]=="*"?"":u[0][0]=='"'?JSON.parse(u[0]):u[0]),f+=u[0].length,f==s.length)break;let d=s[f++];if(f==s.length&&d=="!"){o=0;break}if(d!="/")throw new RangeError("Invalid path: "+s);l=s.slice(f)}let a=r.length-1,h=r[a];if(!h)throw new RangeError("Invalid path: "+s);let c=new _i(i,o,a>0?r.slice(0,a):null);e[h]=c.sort(e[h])}}return Zc.add(e)}const Zc=new L({combine(n,e){let t,i,s;for(;n||e;){if(!n||e&&n.depth>=e.depth?(s=e,e=e.next):(s=n,n=n.next),t&&t.mode==s.mode&&!s.context&&!t.context)continue;let r=new _i(s.tags,s.mode,s.context);t?t.next=r:i=r,t=r}return i}});class _i{constructor(e,t,i,s){this.tags=e,this.mode=t,this.context=i,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth{let o=s;for(let l of r)for(let a of l.set){let h=t[a.id];if(h){o=o?o+" "+h:h;break}}return o},scope:i}}function eg(n,e){let t=null;for(let i of n){let s=i.style(e);s&&(t=t?t+" "+s:s)}return t}function tg(n,e,t,i=0,s=n.length){let r=new ig(i,Array.isArray(e)?e:[e],t);r.highlightRange(n.cursor(),i,s,"",r.highlighters),r.flush(s)}class ig{constructor(e,t,i){this.at=e,this.highlighters=t,this.span=i,this.class=""}startSpan(e,t){t!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=t)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,t,i,s,r){let{type:o,from:l,to:a}=e;if(l>=i||a<=t)return;o.isTop&&(r=this.highlighters.filter(d=>!d.scope||d.scope(o)));let h=s,c=ng(e)||_i.empty,f=eg(r,c.tags);if(f&&(h&&(h+=" "),h+=f,c.mode==1&&(s+=(s?" ":"")+f)),this.startSpan(Math.max(t,l),h),c.opaque)return;let u=e.tree&&e.tree.prop(L.mounted);if(u&&u.overlay){let d=e.node.enter(u.overlay[0].from+l,1),p=this.highlighters.filter(g=>!g.scope||g.scope(u.tree.type)),m=e.firstChild();for(let g=0,y=l;;g++){let S=g=x||!e.nextSibling())););if(!S||x>i)break;y=S.to+l,y>t&&(this.highlightRange(d.cursor(),Math.max(t,S.from+l),Math.min(i,y),"",p),this.startSpan(Math.min(i,y),h))}m&&e.parent()}else if(e.firstChild()){u&&(s="");do if(!(e.to<=t)){if(e.from>=i)break;this.highlightRange(e,t,i,s,r),this.startSpan(Math.min(i,e.to),h)}while(e.nextSibling());e.parent()}}}function ng(n){let e=n.type.prop(Zc);for(;e&&e.context&&!n.matchContext(e.context);)e=e.next;return e||null}const C=qe.define,En=C(),bt=C(),pa=C(bt),ma=C(bt),St=C(),qn=C(St),Js=C(St),Ge=C(),Et=C(Ge),He=C(),je=C(),oo=C(),ki=C(oo),$n=C(),O={comment:En,lineComment:C(En),blockComment:C(En),docComment:C(En),name:bt,variableName:C(bt),typeName:pa,tagName:C(pa),propertyName:ma,attributeName:C(ma),className:C(bt),labelName:C(bt),namespace:C(bt),macroName:C(bt),literal:St,string:qn,docString:C(qn),character:C(qn),attributeValue:C(qn),number:Js,integer:C(Js),float:C(Js),bool:C(St),regexp:C(St),escape:C(St),color:C(St),url:C(St),keyword:He,self:C(He),null:C(He),atom:C(He),unit:C(He),modifier:C(He),operatorKeyword:C(He),controlKeyword:C(He),definitionKeyword:C(He),moduleKeyword:C(He),operator:je,derefOperator:C(je),arithmeticOperator:C(je),logicOperator:C(je),bitwiseOperator:C(je),compareOperator:C(je),updateOperator:C(je),definitionOperator:C(je),typeOperator:C(je),controlOperator:C(je),punctuation:oo,separator:C(oo),bracket:ki,angleBracket:C(ki),squareBracket:C(ki),paren:C(ki),brace:C(ki),content:Ge,heading:Et,heading1:C(Et),heading2:C(Et),heading3:C(Et),heading4:C(Et),heading5:C(Et),heading6:C(Et),contentSeparator:C(Ge),list:C(Ge),quote:C(Ge),emphasis:C(Ge),strong:C(Ge),link:C(Ge),monospace:C(Ge),strikethrough:C(Ge),inserted:C(),deleted:C(),changed:C(),invalid:C(),meta:$n,documentMeta:C($n),annotation:C($n),processingInstruction:C($n),definition:qe.defineModifier("definition"),constant:qe.defineModifier("constant"),function:qe.defineModifier("function"),standard:qe.defineModifier("standard"),local:qe.defineModifier("local"),special:qe.defineModifier("special")};for(let n in O){let e=O[n];e instanceof qe&&(e.name=n)}Yc([{tag:O.link,class:"tok-link"},{tag:O.heading,class:"tok-heading"},{tag:O.emphasis,class:"tok-emphasis"},{tag:O.strong,class:"tok-strong"},{tag:O.keyword,class:"tok-keyword"},{tag:O.atom,class:"tok-atom"},{tag:O.bool,class:"tok-bool"},{tag:O.url,class:"tok-url"},{tag:O.labelName,class:"tok-labelName"},{tag:O.inserted,class:"tok-inserted"},{tag:O.deleted,class:"tok-deleted"},{tag:O.literal,class:"tok-literal"},{tag:O.string,class:"tok-string"},{tag:O.number,class:"tok-number"},{tag:[O.regexp,O.escape,O.special(O.string)],class:"tok-string2"},{tag:O.variableName,class:"tok-variableName"},{tag:O.local(O.variableName),class:"tok-variableName tok-local"},{tag:O.definition(O.variableName),class:"tok-variableName tok-definition"},{tag:O.special(O.variableName),class:"tok-variableName2"},{tag:O.definition(O.propertyName),class:"tok-propertyName tok-definition"},{tag:O.typeName,class:"tok-typeName"},{tag:O.namespace,class:"tok-namespace"},{tag:O.className,class:"tok-className"},{tag:O.macroName,class:"tok-macroName"},{tag:O.propertyName,class:"tok-propertyName"},{tag:O.operator,class:"tok-operator"},{tag:O.comment,class:"tok-comment"},{tag:O.meta,class:"tok-meta"},{tag:O.invalid,class:"tok-invalid"},{tag:O.punctuation,class:"tok-punctuation"}]);var er;const Lt=new L;function Kc(n){return A.define({combine:n?e=>e.concat(n):void 0})}const sg=new L;class $e{constructor(e,t,i=[],s=""){this.data=e,this.name=s,I.prototype.hasOwnProperty("tree")||Object.defineProperty(I.prototype,"tree",{get(){return ae(this)}}),this.parser=t,this.extension=[At.of(this),I.languageData.of((r,o,l)=>{let a=ga(r,o,l),h=a.type.prop(Lt);if(!h)return[];let c=r.facet(h),f=a.type.prop(sg);if(f){let u=a.resolve(o-a.from,l);for(let d of f)if(d.test(u,r)){let p=r.facet(d.facet);return d.type=="replace"?p:p.concat(c)}}return c})].concat(i)}isActiveAt(e,t,i=-1){return ga(e,t,i).type.prop(Lt)==this.data}findRegions(e){let t=e.facet(At);if(t?.data==this.data)return[{from:0,to:e.doc.length}];if(!t||!t.allowsNesting)return[];let i=[],s=(r,o)=>{if(r.prop(Lt)==this.data){i.push({from:o,to:o+r.length});return}let l=r.prop(L.mounted);if(l){if(l.tree.prop(Lt)==this.data){if(l.overlay)for(let a of l.overlay)i.push({from:a.from+o,to:a.to+o});else i.push({from:o,to:o+r.length});return}else if(l.overlay){let a=i.length;if(s(l.tree,l.overlay[0].from+o),i.length>a)return}}for(let a=0;ai.isTop?t:void 0)]}),e.name)}configure(e,t){return new Ui(this.data,this.parser.configure(e),t||this.name)}get allowsNesting(){return this.parser.hasWrappers()}}function ae(n){let e=n.field($e.state,!1);return e?e.tree:j.empty}class rg{constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,t){let i=this.cursorPos-this.string.length;return e=this.cursorPos?this.doc.sliceString(e,t):this.string.slice(e-i,t-i)}}let wi=null;class ui{constructor(e,t,i=[],s,r,o,l,a){this.parser=e,this.state=t,this.fragments=i,this.tree=s,this.treeLen=r,this.viewport=o,this.skipped=l,this.scheduleOn=a,this.parse=null,this.tempSkipped=[]}static create(e,t,i){return new ui(e,t,[],j.empty,0,i,[],null)}startParse(){return this.parser.startParse(new rg(this.state.doc),this.fragments)}work(e,t){return t!=null&&t>=this.state.doc.length&&(t=void 0),this.tree!=j.empty&&this.isDone(t??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var i;if(typeof e=="number"){let s=Date.now()+e;e=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),t!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>t)&&t=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(t=this.parse.advance()););}),this.treeLen=e,this.tree=t,this.fragments=this.withoutTempSkipped(It.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let t=wi;wi=this;try{return e()}finally{wi=t}}withoutTempSkipped(e){for(let t;t=this.tempSkipped.pop();)e=Oa(e,t.from,t.to);return e}changes(e,t){let{fragments:i,tree:s,treeLen:r,viewport:o,skipped:l}=this;if(this.takeTree(),!e.empty){let a=[];if(e.iterChangedRanges((h,c,f,u)=>a.push({fromA:h,toA:c,fromB:f,toB:u})),i=It.applyChanges(i,a),s=j.empty,r=0,o={from:e.mapPos(o.from,-1),to:e.mapPos(o.to,1)},this.skipped.length){l=[];for(let h of this.skipped){let c=e.mapPos(h.from,1),f=e.mapPos(h.to,-1);ce.from&&(this.fragments=Oa(this.fragments,s,r),this.skipped.splice(i--,1))}return this.skipped.length>=t?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,t){this.skipped.push({from:e,to:t})}static getSkippingParser(e){return new class extends Wo{createParse(t,i,s){let r=s[0].from,o=s[s.length-1].to;return{parsedPos:r,advance(){let a=wi;if(a){for(let h of s)a.tempSkipped.push(h);e&&(a.scheduleOn=a.scheduleOn?Promise.all([a.scheduleOn,e]):e)}return this.parsedPos=o,new j(ve.none,[],[],o-r)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let t=this.fragments;return this.treeLen>=e&&t.length&&t[0].from==0&&t[0].to>=e}static get(){return wi}}function Oa(n,e,t){return It.applyChanges(n,[{fromA:e,toA:t,fromB:e,toB:t}])}class di{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let t=this.context.changes(e.changes,e.state),i=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),t.viewport.to);return t.work(20,i)||t.takeTree(),new di(t)}static init(e){let t=Math.min(3e3,e.doc.length),i=ui.create(e.facet(At).parser,e,{from:0,to:t});return i.work(20,t)||i.takeTree(),new di(i)}}$e.state=he.define({create:di.init,update(n,e){for(let t of e.effects)if(t.is($e.setState))return t.value;return e.startState.facet(At)!=e.state.facet(At)?di.init(e.state):n.apply(e)}});let Jc=n=>{let e=setTimeout(()=>n(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(Jc=n=>{let e=-1,t=setTimeout(()=>{e=requestIdleCallback(n,{timeout:400})},100);return()=>e<0?clearTimeout(t):cancelIdleCallback(e)});const tr=typeof navigator<"u"&&(!((er=navigator.scheduling)===null||er===void 0)&&er.isInputPending)?()=>navigator.scheduling.isInputPending():null,og=J.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let t=this.view.state.field($e.state).context;(t.updateViewport(e.view.viewport)||this.view.viewport.to>t.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(t)}scheduleWork(){if(this.working)return;let{state:e}=this.view,t=e.field($e.state);(t.tree!=t.context.tree||!t.context.isDone(e.doc.length))&&(this.working=Jc(this.work))}work(e){this.working=null;let t=Date.now();if(this.chunkEnds+1e3,a=r.context.work(()=>tr&&tr()||Date.now()>o,s+(l?0:1e5));this.chunkBudget-=Date.now()-t,(a||this.chunkBudget<=0)&&(r.context.takeTree(),this.view.dispatch({effects:$e.setState.of(new di(r.context))})),this.chunkBudget>0&&!(a&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(r.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(t=>Pe(this.view.state,t)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),At=A.define({combine(n){return n.length?n[0]:null},enables:n=>[$e.state,og,P.contentAttributes.compute([n],e=>{let t=e.facet(n);return t&&t.name?{"data-language":t.name}:{}})]});class ef{constructor(e,t=[]){this.language=e,this.support=t,this.extension=[e,t]}}const lg=A.define(),cn=A.define({combine:n=>{if(!n.length)return" ";let e=n[0];if(!e||/\S/.test(e)||Array.from(e).some(t=>t!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(n[0]));return e}});function Ut(n){let e=n.facet(cn);return e.charCodeAt(0)==9?n.tabSize*e.length:e.length}function Hi(n,e){let t="",i=n.tabSize,s=n.facet(cn)[0];if(s==" "){for(;e>=i;)t+=" ",e-=i;s=" "}for(let r=0;r=e?ag(n,t,e):null}class As{constructor(e,t={}){this.state=e,this.options=t,this.unit=Ut(e)}lineAt(e,t=1){let i=this.state.doc.lineAt(e),{simulateBreak:s,simulateDoubleBreak:r}=this.options;return s!=null&&s>=i.from&&s<=i.to?r&&s==e?{text:"",from:e}:(t<0?s-1&&(r+=o-this.countColumn(i,i.search(/\S|$/))),r}countColumn(e,t=e.length){return gi(e,this.state.tabSize,t)}lineIndent(e,t=1){let{text:i,from:s}=this.lineAt(e,t),r=this.options.overrideIndentation;if(r){let o=r(s);if(o>-1)return o}return this.countColumn(i,i.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const Ms=new L;function ag(n,e,t){let i=e.resolveStack(t),s=e.resolveInner(t,-1).resolve(t,0).enterUnfinishedNodesBefore(t);if(s!=i.node){let r=[];for(let o=s;o&&!(o.fromi.node.to||o.from==i.node.from&&o.type==i.node.type);o=o.parent)r.push(o);for(let o=r.length-1;o>=0;o--)i={node:r[o],next:i}}return tf(i,n,t)}function tf(n,e,t){for(let i=n;i;i=i.next){let s=cg(i.node);if(s)return s(Io.create(e,t,i))}return 0}function hg(n){return n.pos==n.options.simulateBreak&&n.options.simulateDoubleBreak}function cg(n){let e=n.type.prop(Ms);if(e)return e;let t=n.firstChild,i;if(t&&(i=t.type.prop(L.closedBy))){let s=n.lastChild,r=s&&i.indexOf(s.name)>-1;return o=>nf(o,!0,1,void 0,r&&!hg(o)?s.from:void 0)}return n.parent==null?fg:null}function fg(){return 0}class Io extends As{constructor(e,t,i){super(e.state,e.options),this.base=e,this.pos=t,this.context=i}get node(){return this.context.node}static create(e,t,i){return new Io(e,t,i)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let t=this.state.doc.lineAt(e.from);for(;;){let i=e.resolve(t.from);for(;i.parent&&i.parent.from==i.from;)i=i.parent;if(ug(i,e))break;t=this.state.doc.lineAt(i.from)}return this.lineIndent(t.from)}continue(){return tf(this.context.next,this.base,this.pos)}}function ug(n,e){for(let t=e;t;t=t.parent)if(n==t)return!0;return!1}function dg(n){let e=n.node,t=e.childAfter(e.from),i=e.lastChild;if(!t)return null;let s=n.options.simulateBreak,r=n.state.doc.lineAt(t.from),o=s==null||s<=r.from?r.to:Math.min(r.to,s);for(let l=t.to;;){let a=e.childAfter(l);if(!a||a==i)return null;if(!a.type.isSkipped){if(a.from>=o)return null;let h=/^ */.exec(r.text.slice(t.to-r.from))[0].length;return{from:t.from,to:t.to+h}}l=a.to}}function ir({closing:n,align:e=!0,units:t=1}){return i=>nf(i,e,t,n)}function nf(n,e,t,i,s){let r=n.textAfter,o=r.match(/^\s*/)[0].length,l=i&&r.slice(o,o+i.length)==i||s==n.pos+o,a=e?dg(n):null;return a?l?n.column(a.from):n.column(a.to):n.baseIndent+(l?0:n.unit*t)}function ya({except:n,units:e=1}={}){return t=>{let i=n&&n.test(t.textAfter);return t.baseIndent+(i?0:e*t.unit)}}const pg=200;function mg(){return I.transactionFilter.of(n=>{if(!n.docChanged||!n.isUserEvent("input.type")&&!n.isUserEvent("input.complete"))return n;let e=n.startState.languageDataAt("indentOnInput",n.startState.selection.main.head);if(!e.length)return n;let t=n.newDoc,{head:i}=n.newSelection.main,s=t.lineAt(i);if(i>s.from+pg)return n;let r=t.sliceString(s.from,i);if(!e.some(h=>h.test(r)))return n;let{state:o}=n,l=-1,a=[];for(let{head:h}of o.selection.ranges){let c=o.doc.lineAt(h);if(c.from==l)continue;l=c.from;let f=zo(o,c.from);if(f==null)continue;let u=/^\s*/.exec(c.text)[0],d=Hi(o,f);u!=d&&a.push({from:c.from,to:c.from+u.length,insert:d})}return a.length?[n,{changes:a,sequential:!0}]:n})}const gg=A.define(),Vo=new L;function sf(n){let e=n.firstChild,t=n.lastChild;return e&&e.tot)continue;if(r&&l.from=e&&h.to>t&&(r=h)}}return r}function yg(n){let e=n.lastChild;return e&&e.to==n.to&&e.type.isError}function us(n,e,t){for(let i of n.facet(gg)){let s=i(n,e,t);if(s)return s}return Og(n,e,t)}function rf(n,e){let t=e.mapPos(n.from,1),i=e.mapPos(n.to,-1);return t>=i?void 0:{from:t,to:i}}const Rs=q.define({map:rf}),fn=q.define({map:rf});function of(n){let e=[];for(let{head:t}of n.state.selection.ranges)e.some(i=>i.from<=t&&i.to>=t)||e.push(n.lineBlockAt(t));return e}const Ht=he.define({create(){return R.none},update(n,e){e.isUserEvent("delete")&&e.changes.iterChangedRanges((t,i)=>n=ba(n,t,i)),n=n.map(e.changes);for(let t of e.effects)if(t.is(Rs)&&!bg(n,t.value.from,t.value.to)){let{preparePlaceholder:i}=e.state.facet(hf),s=i?R.replace({widget:new Cg(i(e.state,t.value))}):Sa;n=n.update({add:[s.range(t.value.from,t.value.to)]})}else t.is(fn)&&(n=n.update({filter:(i,s)=>t.value.from!=i||t.value.to!=s,filterFrom:t.value.from,filterTo:t.value.to}));return e.selection&&(n=ba(n,e.selection.main.head)),n},provide:n=>P.decorations.from(n),toJSON(n,e){let t=[];return n.between(0,e.doc.length,(i,s)=>{t.push(i,s)}),t},fromJSON(n){if(!Array.isArray(n)||n.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let t=0;t{se&&(i=!0)}),i?n.update({filterFrom:e,filterTo:t,filter:(s,r)=>s>=t||r<=e}):n}function ds(n,e,t){var i;let s=null;return(i=n.field(Ht,!1))===null||i===void 0||i.between(e,t,(r,o)=>{(!s||s.from>r)&&(s={from:r,to:o})}),s}function bg(n,e,t){let i=!1;return n.between(e,e,(s,r)=>{s==e&&r==t&&(i=!0)}),i}function lf(n,e){return n.field(Ht,!1)?e:e.concat(q.appendConfig.of(cf()))}const Sg=n=>{for(let e of of(n)){let t=us(n.state,e.from,e.to);if(t)return n.dispatch({effects:lf(n.state,[Rs.of(t),af(n,t)])}),!0}return!1},xg=n=>{if(!n.state.field(Ht,!1))return!1;let e=[];for(let t of of(n)){let i=ds(n.state,t.from,t.to);i&&e.push(fn.of(i),af(n,i,!1))}return e.length&&n.dispatch({effects:e}),e.length>0};function af(n,e,t=!0){let i=n.state.doc.lineAt(e.from).number,s=n.state.doc.lineAt(e.to).number;return P.announce.of(`${n.state.phrase(t?"Folded lines":"Unfolded lines")} ${i} ${n.state.phrase("to")} ${s}.`)}const kg=n=>{let{state:e}=n,t=[];for(let i=0;i{let e=n.state.field(Ht,!1);if(!e||!e.size)return!1;let t=[];return e.between(0,n.state.doc.length,(i,s)=>{t.push(fn.of({from:i,to:s}))}),n.dispatch({effects:t}),!0},vg=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:Sg},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:xg},{key:"Ctrl-Alt-[",run:kg},{key:"Ctrl-Alt-]",run:wg}],Tg={placeholderDOM:null,preparePlaceholder:null,placeholderText:"…"},hf=A.define({combine(n){return rt(n,Tg)}});function cf(n){return[Ht,Ag]}function ff(n,e){let{state:t}=n,i=t.facet(hf),s=o=>{let l=n.lineBlockAt(n.posAtDOM(o.target)),a=ds(n.state,l.from,l.to);a&&n.dispatch({effects:fn.of(a)}),o.preventDefault()};if(i.placeholderDOM)return i.placeholderDOM(n,s,e);let r=document.createElement("span");return r.textContent=i.placeholderText,r.setAttribute("aria-label",t.phrase("folded code")),r.title=t.phrase("unfold"),r.className="cm-foldPlaceholder",r.onclick=s,r}const Sa=R.replace({widget:new class extends ot{toDOM(n){return ff(n,null)}}});class Cg extends ot{constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return ff(e,this.value)}}const Pg={openText:"⌄",closedText:"›",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1};class nr extends yt{constructor(e,t){super(),this.config=e,this.open=t}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let t=document.createElement("span");return t.textContent=this.open?this.config.openText:this.config.closedText,t.title=e.state.phrase(this.open?"Fold line":"Unfold line"),t}}function Qg(n={}){let e={...Pg,...n},t=new nr(e,!0),i=new nr(e,!1),s=J.fromClass(class{constructor(o){this.from=o.viewport.from,this.markers=this.buildMarkers(o)}update(o){(o.docChanged||o.viewportChanged||o.startState.facet(At)!=o.state.facet(At)||o.startState.field(Ht,!1)!=o.state.field(Ht,!1)||ae(o.startState)!=ae(o.state)||e.foldingChanged(o))&&(this.markers=this.buildMarkers(o.view))}buildMarkers(o){let l=new gt;for(let a of o.viewportLineBlocks){let h=ds(o.state,a.from,a.to)?i:us(o.state,a.from,a.to)?t:null;h&&l.add(a.from,a.from,h)}return l.finish()}}),{domEventHandlers:r}=e;return[s,Rm({class:"cm-foldGutter",markers(o){var l;return((l=o.plugin(s))===null||l===void 0?void 0:l.markers)||N.empty},initialSpacer(){return new nr(e,!1)},domEventHandlers:{...r,click:(o,l,a)=>{if(r.click&&r.click(o,l,a))return!0;let h=ds(o.state,l.from,l.to);if(h)return o.dispatch({effects:fn.of(h)}),!0;let c=us(o.state,l.from,l.to);return c?(o.dispatch({effects:Rs.of(c)}),!0):!1}}}),cf()]}const Ag=P.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}});class un{constructor(e,t){this.specs=e;let i;function s(l){let a=Tt.newName();return(i||(i=Object.create(null)))["."+a]=l,a}const r=typeof t.all=="string"?t.all:t.all?s(t.all):void 0,o=t.scope;this.scope=o instanceof $e?l=>l.prop(Lt)==o.data:o?l=>l==o:void 0,this.style=Yc(e.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:r}).style,this.module=i?new Tt(i):null,this.themeType=t.themeType}static define(e,t){return new un(e,t||{})}}const lo=A.define(),uf=A.define({combine(n){return n.length?[n[0]]:null}});function sr(n){let e=n.facet(lo);return e.length?e:n.facet(uf)}function df(n,e){let t=[Rg],i;return n instanceof un&&(n.module&&t.push(P.styleModule.of(n.module)),i=n.themeType),e?.fallback?t.push(uf.of(n)):i?t.push(lo.computeN([P.darkTheme],s=>s.facet(P.darkTheme)==(i=="dark")?[n]:[])):t.push(lo.of(n)),t}class Mg{constructor(e){this.markCache=Object.create(null),this.tree=ae(e.state),this.decorations=this.buildDeco(e,sr(e.state)),this.decoratedTo=e.viewport.to}update(e){let t=ae(e.state),i=sr(e.state),s=i!=sr(e.startState),{viewport:r}=e.view,o=e.changes.mapPos(this.decoratedTo,1);t.length=r.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=o):(t!=this.tree||e.viewportChanged||s)&&(this.tree=t,this.decorations=this.buildDeco(e.view,i),this.decoratedTo=r.to)}buildDeco(e,t){if(!t||!this.tree.length)return R.none;let i=new gt;for(let{from:s,to:r}of e.visibleRanges)tg(this.tree,t,(o,l,a)=>{i.add(o,l,this.markCache[a]||(this.markCache[a]=R.mark({class:a})))},s,r);return i.finish()}}const Rg=Mt.high(J.fromClass(Mg,{decorations:n=>n.decorations})),Dg=un.define([{tag:O.meta,color:"#404740"},{tag:O.link,textDecoration:"underline"},{tag:O.heading,textDecoration:"underline",fontWeight:"bold"},{tag:O.emphasis,fontStyle:"italic"},{tag:O.strong,fontWeight:"bold"},{tag:O.strikethrough,textDecoration:"line-through"},{tag:O.keyword,color:"#708"},{tag:[O.atom,O.bool,O.url,O.contentSeparator,O.labelName],color:"#219"},{tag:[O.literal,O.inserted],color:"#164"},{tag:[O.string,O.deleted],color:"#a11"},{tag:[O.regexp,O.escape,O.special(O.string)],color:"#e40"},{tag:O.definition(O.variableName),color:"#00f"},{tag:O.local(O.variableName),color:"#30a"},{tag:[O.typeName,O.namespace],color:"#085"},{tag:O.className,color:"#167"},{tag:[O.special(O.variableName),O.macroName],color:"#256"},{tag:O.definition(O.propertyName),color:"#00c"},{tag:O.comment,color:"#940"},{tag:O.invalid,color:"#f00"}]),Eg=P.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),pf=1e4,mf="()[]{}",gf=A.define({combine(n){return rt(n,{afterCursor:!0,brackets:mf,maxScanDistance:pf,renderMatch:Bg})}}),qg=R.mark({class:"cm-matchingBracket"}),$g=R.mark({class:"cm-nonmatchingBracket"});function Bg(n){let e=[],t=n.matched?qg:$g;return e.push(t.range(n.start.from,n.start.to)),n.end&&e.push(t.range(n.end.from,n.end.to)),e}const Wg=he.define({create(){return R.none},update(n,e){if(!e.docChanged&&!e.selection)return n;let t=[],i=e.state.facet(gf);for(let s of e.state.selection.ranges){if(!s.empty)continue;let r=et(e.state,s.head,-1,i)||s.head>0&&et(e.state,s.head-1,1,i)||i.afterCursor&&(et(e.state,s.head,1,i)||s.headP.decorations.from(n)}),Lg=[Wg,Eg];function zg(n={}){return[gf.of(n),Lg]}const Ig=new L;function ao(n,e,t){let i=n.prop(e<0?L.openedBy:L.closedBy);if(i)return i;if(n.name.length==1){let s=t.indexOf(n.name);if(s>-1&&s%2==(e<0?1:0))return[t[s+e]]}return null}function ho(n){let e=n.type.prop(Ig);return e?e(n.node):n}function et(n,e,t,i={}){let s=i.maxScanDistance||pf,r=i.brackets||mf,o=ae(n),l=o.resolveInner(e,t);for(let a=l;a;a=a.parent){let h=ao(a.type,t,r);if(h&&a.from0?e>=c.from&&ec.from&&e<=c.to))return Vg(n,e,t,a,c,h,r)}}return Ng(n,e,t,o,l.type,s,r)}function Vg(n,e,t,i,s,r,o){let l=i.parent,a={from:s.from,to:s.to},h=0,c=l?.cursor();if(c&&(t<0?c.childBefore(i.from):c.childAfter(i.to)))do if(t<0?c.to<=i.from:c.from>=i.to){if(h==0&&r.indexOf(c.type.name)>-1&&c.from0)return null;let h={from:t<0?e-1:e,to:t>0?e+1:e},c=n.doc.iterRange(e,t>0?n.doc.length:0),f=0;for(let u=0;!c.next().done&&u<=r;){let d=c.value;t<0&&(u+=d.length);let p=e+u*t;for(let m=t>0?0:d.length-1,g=t>0?d.length:-1;m!=g;m+=t){let y=o.indexOf(d[m]);if(!(y<0||i.resolveInner(p+m,1).type!=s))if(y%2==0==t>0)f++;else{if(f==1)return{start:h,end:{from:p+m,to:p+m+1},matched:y>>1==a>>1};f--}}t>0&&(u+=d.length)}return c.done?{start:h,matched:!1}:null}function xa(n,e,t,i=0,s=0){e==null&&(e=n.search(/[^\s\u00a0]/),e==-1&&(e=n.length));let r=s;for(let o=i;o=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.post}eatSpace(){let e=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e}skipToEnd(){this.pos=this.string.length}skipTo(e){let t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0}backUp(e){this.pos-=e}column(){return this.lastColumnPosi?o.toLowerCase():o,r=this.string.substr(this.pos,e.length);return s(r)==s(e)?(t!==!1&&(this.pos+=e.length),!0):null}else{let s=this.string.slice(this.pos).match(e);return s&&s.index>0?null:(s&&t!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}}function Xg(n){return{name:n.name||"",token:n.token,blankLine:n.blankLine||(()=>{}),startState:n.startState||(()=>!0),copyState:n.copyState||Fg,indent:n.indent||(()=>null),languageData:n.languageData||{},tokenTable:n.tokenTable||Xo,mergeTokens:n.mergeTokens!==!1}}function Fg(n){if(typeof n!="object")return n;let e={};for(let t in n){let i=n[t];e[t]=i instanceof Array?i.slice():i}return e}const ka=new WeakMap;class yf extends $e{constructor(e){let t=Kc(e.languageData),i=Xg(e),s,r=new class extends Wo{createParse(o,l,a){return new Ug(s,o,l,a)}};super(t,r,[],e.name),this.topNode=Gg(t,this),s=this,this.streamParser=i,this.stateAfter=new L({perNode:!0}),this.tokenTable=e.tokenTable?new kf(i.tokenTable):jg}static define(e){return new yf(e)}getIndent(e){let t,{overrideIndentation:i}=e.options;i&&(t=ka.get(e.state),t!=null&&t1e4)return null;for(;r=i&&t+e.length<=s&&e.prop(n.stateAfter);if(r)return{state:n.streamParser.copyState(r),pos:t+e.length};for(let o=e.children.length-1;o>=0;o--){let l=e.children[o],a=t+e.positions[o],h=l instanceof j&&a=e.length)return e;!s&&t==0&&e.type==n.topNode&&(s=!0);for(let r=e.children.length-1;r>=0;r--){let o=e.positions[r],l=e.children[r],a;if(ot&&No(n,r.tree,0-r.offset,t,l),h;if(a&&a.pos<=i&&(h=bf(n,r.tree,t+r.offset,a.pos+r.offset,!1)))return{state:a.state,tree:h}}return{state:n.streamParser.startState(s?Ut(s):4),tree:j.empty}}let Ug=class{constructor(e,t,i,s){this.lang=e,this.input=t,this.fragments=i,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let r=ui.get(),o=s[0].from,{state:l,tree:a}=_g(e,i,o,this.to,r?.state);this.state=l,this.parsedPos=this.chunkStart=o+a.length;for(let h=0;hh.from<=r.viewport.from&&h.to>=r.viewport.from)&&(this.state=this.lang.streamParser.startState(Ut(r.state)),r.skipUntilInView(this.parsedPos,r.viewport.from),this.parsedPos=r.viewport.from),this.moveRangeIndex()}advance(){let e=ui.get(),t=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),i=Math.min(t,this.chunkStart+512);for(e&&(i=Math.min(i,e.viewport.to));this.parsedPos=t?this.finish():e&&this.parsedPos>=e.viewport.to?(e.skipUntilInView(this.parsedPos,t),this.finish()):null}stopAt(e){this.stoppedAt=e}lineAfter(e){let t=this.input.chunk(e);if(this.input.lineChunks)t==` +`&&(t="");else{let i=t.indexOf(` +`);i>-1&&(t=t.slice(0,i))}return e+t.length<=this.to?t:t.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,t=this.lineAfter(e),i=e+t.length;for(let s=this.rangeIndex;;){let r=this.ranges[s].to;if(r>=i||(t=t.slice(0,r-(i-t.length)),s++,s==this.ranges.length))break;let o=this.ranges[s].from,l=this.lineAfter(o);t+=l,i=o+l.length}return{line:t,end:i}}skipGapsTo(e,t,i){for(;;){let s=this.ranges[this.rangeIndex].to,r=e+t;if(i>0?s>r:s>=r)break;let o=this.ranges[++this.rangeIndex].from;t+=o-s}return t}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(t,s,1),t+=s;let l=this.chunk.length;s=this.skipGapsTo(i,s,-1),i+=s,r+=this.chunk.length-l}let o=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&r==4&&o>=0&&this.chunk[o]==e&&this.chunk[o+2]==t?this.chunk[o+2]=i:this.chunk.push(e,t,i,r),s}parseLine(e){let{line:t,end:i}=this.nextLine(),s=0,{streamParser:r}=this.lang,o=new Of(t,e?e.state.tabSize:4,e?Ut(e.state):2);if(o.eol())r.blankLine(this.state,o.indentUnit);else for(;!o.eol();){let l=Sf(r.token,o,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+o.start,this.parsedPos+o.pos,s)),o.start>1e4)break}this.parsedPos=i,this.moveRangeIndex(),this.parsedPose.start)return s}throw new Error("Stream parser failed to advance stream.")}const Xo=Object.create(null),ji=[ve.none],Hg=new Qs(ji),wa=[],va=Object.create(null),xf=Object.create(null);for(let[n,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])xf[n]=wf(Xo,e);class kf{constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),xf)}resolve(e){return e?this.table[e]||(this.table[e]=wf(this.extra,e)):0}}const jg=new kf(Xo);function rr(n,e){wa.indexOf(n)>-1||(wa.push(n),console.warn(e))}function wf(n,e){let t=[];for(let l of e.split(" ")){let a=[];for(let h of l.split(".")){let c=n[h]||O[h];c?typeof c=="function"?a.length?a=a.map(c):rr(h,`Modifier ${h} used at start of tag`):a.length?rr(h,`Tag ${h} used as modifier`):a=Array.isArray(c)?c:[c]:rr(h,`Unknown highlighting tag ${h}`)}for(let h of a)t.push(h)}if(!t.length)return 0;let i=e.replace(/ /g,"_"),s=i+" "+t.map(l=>l.id),r=va[s];if(r)return r.id;let o=va[s]=ve.define({id:ji.length,name:i,props:[Lo({[i]:t})]});return ji.push(o),o.id}function Gg(n,e){let t=ve.define({id:ji.length,name:"Document",props:[Lt.add(()=>n),Ms.add(()=>i=>e.getIndent(i))],top:!0});return ji.push(t),t}Z.RTL,Z.LTR;const Zg=n=>{let{state:e}=n,t=e.doc.lineAt(e.selection.main.from),i=_o(n.state,t.from);return i.line?Yg(n):i.block?Jg(n):!1};function Fo(n,e){return({state:t,dispatch:i})=>{if(t.readOnly)return!1;let s=n(e,t);return s?(i(t.update(s)),!0):!1}}const Yg=Fo(iO,0),Kg=Fo(vf,0),Jg=Fo((n,e)=>vf(n,e,tO(e)),0);function _o(n,e){let t=n.languageDataAt("commentTokens",e,1);return t.length?t[0]:{}}const vi=50;function eO(n,{open:e,close:t},i,s){let r=n.sliceDoc(i-vi,i),o=n.sliceDoc(s,s+vi),l=/\s*$/.exec(r)[0].length,a=/^\s*/.exec(o)[0].length,h=r.length-l;if(r.slice(h-e.length,h)==e&&o.slice(a,a+t.length)==t)return{open:{pos:i-l,margin:l&&1},close:{pos:s+a,margin:a&&1}};let c,f;s-i<=2*vi?c=f=n.sliceDoc(i,s):(c=n.sliceDoc(i,i+vi),f=n.sliceDoc(s-vi,s));let u=/^\s*/.exec(c)[0].length,d=/\s*$/.exec(f)[0].length,p=f.length-d-t.length;return c.slice(u,u+e.length)==e&&f.slice(p,p+t.length)==t?{open:{pos:i+u+e.length,margin:/\s/.test(c.charAt(u+e.length))?1:0},close:{pos:s-d-t.length,margin:/\s/.test(f.charAt(p-1))?1:0}}:null}function tO(n){let e=[];for(let t of n.selection.ranges){let i=n.doc.lineAt(t.from),s=t.to<=i.to?i:n.doc.lineAt(t.to);s.from>i.from&&s.from==t.to&&(s=t.to==i.to+1?i:n.doc.lineAt(t.to-1));let r=e.length-1;r>=0&&e[r].to>i.from?e[r].to=s.to:e.push({from:i.from+/^\s*/.exec(i.text)[0].length,to:s.to})}return e}function vf(n,e,t=e.selection.ranges){let i=t.map(r=>_o(e,r.from).block);if(!i.every(r=>r))return null;let s=t.map((r,o)=>eO(e,i[o],r.from,r.to));if(n!=2&&!s.every(r=>r))return{changes:e.changes(t.map((r,o)=>s[o]?[]:[{from:r.from,insert:i[o].open+" "},{from:r.to,insert:" "+i[o].close}]))};if(n!=1&&s.some(r=>r)){let r=[];for(let o=0,l;os&&(r==o||o>f.from)){s=f.from;let u=/^\s*/.exec(f.text)[0].length,d=u==f.length,p=f.text.slice(u,u+h.length)==h?u:-1;ur.comment<0&&(!r.empty||r.single))){let r=[];for(let{line:l,token:a,indent:h,empty:c,single:f}of i)(f||!c)&&r.push({from:l.from+h,insert:a+" "});let o=e.changes(r);return{changes:o,selection:e.selection.map(o,1)}}else if(n!=1&&i.some(r=>r.comment>=0)){let r=[];for(let{line:o,comment:l,token:a}of i)if(l>=0){let h=o.from+l,c=h+a.length;o.text[c-o.from]==" "&&c++,r.push({from:h,to:c})}return{changes:r}}return null}const co=st.define(),nO=st.define(),sO=A.define(),Tf=A.define({combine(n){return rt(n,{minDepth:100,newGroupDelay:500,joinToEvent:(e,t)=>t},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,t)=>(i,s)=>e(i,s)||t(i,s)})}}),Cf=he.define({create(){return tt.empty},update(n,e){let t=e.state.facet(Tf),i=e.annotation(co);if(i){let a=Qe.fromTransaction(e,i.selection),h=i.side,c=h==0?n.undone:n.done;return a?c=ps(c,c.length,t.minDepth,a):c=Af(c,e.startState.selection),new tt(h==0?i.rest:c,h==0?c:i.rest)}let s=e.annotation(nO);if((s=="full"||s=="before")&&(n=n.isolate()),e.annotation(ie.addToHistory)===!1)return e.changes.empty?n:n.addMapping(e.changes.desc);let r=Qe.fromTransaction(e),o=e.annotation(ie.time),l=e.annotation(ie.userEvent);return r?n=n.addChanges(r,o,l,t,e):e.selection&&(n=n.addSelection(e.startState.selection,o,l,t.newGroupDelay)),(s=="full"||s=="after")&&(n=n.isolate()),n},toJSON(n){return{done:n.done.map(e=>e.toJSON()),undone:n.undone.map(e=>e.toJSON())}},fromJSON(n){return new tt(n.done.map(Qe.fromJSON),n.undone.map(Qe.fromJSON))}});function rO(n={}){return[Cf,Tf.of(n),P.domEventHandlers({beforeinput(e,t){let i=e.inputType=="historyUndo"?Pf:e.inputType=="historyRedo"?fo:null;return i?(e.preventDefault(),i(t)):!1}})]}function Ds(n,e){return function({state:t,dispatch:i}){if(!e&&t.readOnly)return!1;let s=t.field(Cf,!1);if(!s)return!1;let r=s.pop(n,t,e);return r?(i(r),!0):!1}}const Pf=Ds(0,!1),fo=Ds(1,!1),oO=Ds(0,!0),lO=Ds(1,!0);class Qe{constructor(e,t,i,s,r){this.changes=e,this.effects=t,this.mapped=i,this.startSelection=s,this.selectionsAfter=r}setSelAfter(e){return new Qe(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,t,i;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(t=this.mapped)===null||t===void 0?void 0:t.toJSON(),startSelection:(i=this.startSelection)===null||i===void 0?void 0:i.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(e){return new Qe(e.changes&&se.fromJSON(e.changes),[],e.mapped&&it.fromJSON(e.mapped),e.startSelection&&b.fromJSON(e.startSelection),e.selectionsAfter.map(b.fromJSON))}static fromTransaction(e,t){let i=Be;for(let s of e.startState.facet(sO)){let r=s(e);r.length&&(i=i.concat(r))}return!i.length&&e.changes.empty?null:new Qe(e.changes.invert(e.startState.doc),i,void 0,t||e.startState.selection,Be)}static selection(e){return new Qe(void 0,Be,void 0,void 0,e)}}function ps(n,e,t,i){let s=e+1>t+20?e-t-1:0,r=n.slice(s,e);return r.push(i),r}function aO(n,e){let t=[],i=!1;return n.iterChangedRanges((s,r)=>t.push(s,r)),e.iterChangedRanges((s,r,o,l)=>{for(let a=0;a=h&&o<=c&&(i=!0)}}),i}function hO(n,e){return n.ranges.length==e.ranges.length&&n.ranges.filter((t,i)=>t.empty!=e.ranges[i].empty).length===0}function Qf(n,e){return n.length?e.length?n.concat(e):n:e}const Be=[],cO=200;function Af(n,e){if(n.length){let t=n[n.length-1],i=t.selectionsAfter.slice(Math.max(0,t.selectionsAfter.length-cO));return i.length&&i[i.length-1].eq(e)?n:(i.push(e),ps(n,n.length-1,1e9,t.setSelAfter(i)))}else return[Qe.selection([e])]}function fO(n){let e=n[n.length-1],t=n.slice();return t[n.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),t}function or(n,e){if(!n.length)return n;let t=n.length,i=Be;for(;t;){let s=uO(n[t-1],e,i);if(s.changes&&!s.changes.empty||s.effects.length){let r=n.slice(0,t);return r[t-1]=s,r}else e=s.mapped,t--,i=s.selectionsAfter}return i.length?[Qe.selection(i)]:Be}function uO(n,e,t){let i=Qf(n.selectionsAfter.length?n.selectionsAfter.map(l=>l.map(e)):Be,t);if(!n.changes)return Qe.selection(i);let s=n.changes.map(e),r=e.mapDesc(n.changes,!0),o=n.mapped?n.mapped.composeDesc(r):r;return new Qe(s,q.mapEffects(n.effects,e),o,n.startSelection.map(r),i)}const dO=/^(input\.type|delete)($|\.)/;class tt{constructor(e,t,i=0,s=void 0){this.done=e,this.undone=t,this.prevTime=i,this.prevUserEvent=s}isolate(){return this.prevTime?new tt(this.done,this.undone):this}addChanges(e,t,i,s,r){let o=this.done,l=o[o.length-1];return l&&l.changes&&!l.changes.empty&&e.changes&&(!i||dO.test(i))&&(!l.selectionsAfter.length&&t-this.prevTime0&&t-this.prevTimet.empty?n.moveByChar(t,e):Es(t,e))}function be(n){return n.textDirectionAt(n.state.selection.main.head)==Z.LTR}const Rf=n=>Mf(n,!be(n)),Df=n=>Mf(n,be(n));function Ef(n,e){return Fe(n,t=>t.empty?n.moveByGroup(t,e):Es(t,e))}const mO=n=>Ef(n,!be(n)),gO=n=>Ef(n,be(n));function OO(n,e,t){if(e.type.prop(t))return!0;let i=e.to-e.from;return i&&(i>2||/[^\s,.;:]/.test(n.sliceDoc(e.from,e.to)))||e.firstChild}function qs(n,e,t){let i=ae(n).resolveInner(e.head),s=t?L.closedBy:L.openedBy;for(let a=e.head;;){let h=t?i.childAfter(a):i.childBefore(a);if(!h)break;OO(n,h,s)?i=h:a=t?h.to:h.from}let r=i.type.prop(s),o,l;return r&&(o=t?et(n,i.from,1):et(n,i.to,-1))&&o.matched?l=t?o.end.to:o.end.from:l=t?i.to:i.from,b.cursor(l,t?-1:1)}const yO=n=>Fe(n,e=>qs(n.state,e,!be(n))),bO=n=>Fe(n,e=>qs(n.state,e,be(n)));function qf(n,e){return Fe(n,t=>{if(!t.empty)return Es(t,e);let i=n.moveVertically(t,e);return i.head!=t.head?i:n.moveToLineBoundary(t,e)})}const $f=n=>qf(n,!1),Bf=n=>qf(n,!0);function Wf(n){let e=n.scrollDOM.clientHeighto.empty?n.moveVertically(o,e,t.height):Es(o,e));if(s.eq(i.selection))return!1;let r;if(t.selfScroll){let o=n.coordsAtPos(i.selection.main.head),l=n.scrollDOM.getBoundingClientRect(),a=l.top+t.marginTop,h=l.bottom-t.marginBottom;o&&o.top>a&&o.bottomLf(n,!1),uo=n=>Lf(n,!0);function Rt(n,e,t){let i=n.lineBlockAt(e.head),s=n.moveToLineBoundary(e,t);if(s.head==e.head&&s.head!=(t?i.to:i.from)&&(s=n.moveToLineBoundary(e,t,!1)),!t&&s.head==i.from&&i.length){let r=/^\s*/.exec(n.state.sliceDoc(i.from,Math.min(i.from+100,i.to)))[0].length;r&&e.head!=i.from+r&&(s=b.cursor(i.from+r))}return s}const SO=n=>Fe(n,e=>Rt(n,e,!0)),xO=n=>Fe(n,e=>Rt(n,e,!1)),kO=n=>Fe(n,e=>Rt(n,e,!be(n))),wO=n=>Fe(n,e=>Rt(n,e,be(n))),vO=n=>Fe(n,e=>b.cursor(n.lineBlockAt(e.head).from,1)),TO=n=>Fe(n,e=>b.cursor(n.lineBlockAt(e.head).to,-1));function CO(n,e,t){let i=!1,s=Oi(n.selection,r=>{let o=et(n,r.head,-1)||et(n,r.head,1)||r.head>0&&et(n,r.head-1,1)||r.headCO(n,e);function Ie(n,e){let t=Oi(n.state.selection,i=>{let s=e(i);return b.range(i.anchor,s.head,s.goalColumn,s.bidiLevel||void 0)});return t.eq(n.state.selection)?!1:(n.dispatch(Xe(n.state,t)),!0)}function zf(n,e){return Ie(n,t=>n.moveByChar(t,e))}const If=n=>zf(n,!be(n)),Vf=n=>zf(n,be(n));function Nf(n,e){return Ie(n,t=>n.moveByGroup(t,e))}const QO=n=>Nf(n,!be(n)),AO=n=>Nf(n,be(n)),MO=n=>Ie(n,e=>qs(n.state,e,!be(n))),RO=n=>Ie(n,e=>qs(n.state,e,be(n)));function Xf(n,e){return Ie(n,t=>n.moveVertically(t,e))}const Ff=n=>Xf(n,!1),_f=n=>Xf(n,!0);function Uf(n,e){return Ie(n,t=>n.moveVertically(t,e,Wf(n).height))}const Ca=n=>Uf(n,!1),Pa=n=>Uf(n,!0),DO=n=>Ie(n,e=>Rt(n,e,!0)),EO=n=>Ie(n,e=>Rt(n,e,!1)),qO=n=>Ie(n,e=>Rt(n,e,!be(n))),$O=n=>Ie(n,e=>Rt(n,e,be(n))),BO=n=>Ie(n,e=>b.cursor(n.lineBlockAt(e.head).from)),WO=n=>Ie(n,e=>b.cursor(n.lineBlockAt(e.head).to)),Qa=({state:n,dispatch:e})=>(e(Xe(n,{anchor:0})),!0),Aa=({state:n,dispatch:e})=>(e(Xe(n,{anchor:n.doc.length})),!0),Ma=({state:n,dispatch:e})=>(e(Xe(n,{anchor:n.selection.main.anchor,head:0})),!0),Ra=({state:n,dispatch:e})=>(e(Xe(n,{anchor:n.selection.main.anchor,head:n.doc.length})),!0),LO=({state:n,dispatch:e})=>(e(n.update({selection:{anchor:0,head:n.doc.length},userEvent:"select"})),!0),zO=({state:n,dispatch:e})=>{let t=$s(n).map(({from:i,to:s})=>b.range(i,Math.min(s+1,n.doc.length)));return e(n.update({selection:b.create(t),userEvent:"select"})),!0},IO=({state:n,dispatch:e})=>{let t=Oi(n.selection,i=>{let s=ae(n),r=s.resolveStack(i.from,1);if(i.empty){let o=s.resolveStack(i.from,-1);o.node.from>=r.node.from&&o.node.to<=r.node.to&&(r=o)}for(let o=r;o;o=o.next){let{node:l}=o;if((l.from=i.to||l.to>i.to&&l.from<=i.from)&&o.next)return b.range(l.to,l.from)}return i});return t.eq(n.selection)?!1:(e(Xe(n,t)),!0)};function Hf(n,e){let{state:t}=n,i=t.selection,s=t.selection.ranges.slice();for(let r of t.selection.ranges){let o=t.doc.lineAt(r.head);if(e?o.to0)for(let l=r;;){let a=n.moveVertically(l,e);if(a.heado.to){s.some(h=>h.head==a.head)||s.push(a);break}else{if(a.head==l.head)break;l=a}}}return s.length==i.ranges.length?!1:(n.dispatch(Xe(t,b.create(s,s.length-1))),!0)}const VO=n=>Hf(n,!1),NO=n=>Hf(n,!0),XO=({state:n,dispatch:e})=>{let t=n.selection,i=null;return t.ranges.length>1?i=b.create([t.main]):t.main.empty||(i=b.create([b.cursor(t.main.head)])),i?(e(Xe(n,i)),!0):!1};function dn(n,e){if(n.state.readOnly)return!1;let t="delete.selection",{state:i}=n,s=i.changeByRange(r=>{let{from:o,to:l}=r;if(o==l){let a=e(r);ao&&(t="delete.forward",a=Bn(n,a,!0)),o=Math.min(o,a),l=Math.max(l,a)}else o=Bn(n,o,!1),l=Bn(n,l,!0);return o==l?{range:r}:{changes:{from:o,to:l},range:b.cursor(o,os(n)))i.between(e,e,(s,r)=>{se&&(e=t?r:s)});return e}const jf=(n,e,t)=>dn(n,i=>{let s=i.from,{state:r}=n,o=r.doc.lineAt(s),l,a;if(t&&!e&&s>o.from&&sjf(n,!1,!0),Gf=n=>jf(n,!0,!1),Zf=(n,e)=>dn(n,t=>{let i=t.head,{state:s}=n,r=s.doc.lineAt(i),o=s.charCategorizer(i);for(let l=null;;){if(i==(e?r.to:r.from)){i==t.head&&r.number!=(e?s.doc.lines:1)&&(i+=e?1:-1);break}let a=pe(r.text,i-r.from,e)+r.from,h=r.text.slice(Math.min(i,a)-r.from,Math.max(i,a)-r.from),c=o(h);if(l!=null&&c!=l)break;(h!=" "||i!=t.head)&&(l=c),i=a}return i}),Yf=n=>Zf(n,!1),FO=n=>Zf(n,!0),_O=n=>dn(n,e=>{let t=n.lineBlockAt(e.head).to;return e.headdn(n,e=>{let t=n.moveToLineBoundary(e,!1).head;return e.head>t?t:Math.max(0,e.head-1)}),HO=n=>dn(n,e=>{let t=n.moveToLineBoundary(e,!0).head;return e.head{if(n.readOnly)return!1;let t=n.changeByRange(i=>({changes:{from:i.from,to:i.to,insert:V.of(["",""])},range:b.cursor(i.from)}));return e(n.update(t,{scrollIntoView:!0,userEvent:"input"})),!0},GO=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=n.changeByRange(i=>{if(!i.empty||i.from==0||i.from==n.doc.length)return{range:i};let s=i.from,r=n.doc.lineAt(s),o=s==r.from?s-1:pe(r.text,s-r.from,!1)+r.from,l=s==r.to?s+1:pe(r.text,s-r.from,!0)+r.from;return{changes:{from:o,to:l,insert:n.doc.slice(s,l).append(n.doc.slice(o,s))},range:b.cursor(l)}});return t.changes.empty?!1:(e(n.update(t,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function $s(n){let e=[],t=-1;for(let i of n.selection.ranges){let s=n.doc.lineAt(i.from),r=n.doc.lineAt(i.to);if(!i.empty&&i.to==r.from&&(r=n.doc.lineAt(i.to-1)),t>=s.number){let o=e[e.length-1];o.to=r.to,o.ranges.push(i)}else e.push({from:s.from,to:r.to,ranges:[i]});t=r.number+1}return e}function Kf(n,e,t){if(n.readOnly)return!1;let i=[],s=[];for(let r of $s(n)){if(t?r.to==n.doc.length:r.from==0)continue;let o=n.doc.lineAt(t?r.to+1:r.from-1),l=o.length+1;if(t){i.push({from:r.to,to:o.to},{from:r.from,insert:o.text+n.lineBreak});for(let a of r.ranges)s.push(b.range(Math.min(n.doc.length,a.anchor+l),Math.min(n.doc.length,a.head+l)))}else{i.push({from:o.from,to:r.from},{from:r.to,insert:n.lineBreak+o.text});for(let a of r.ranges)s.push(b.range(a.anchor-l,a.head-l))}}return i.length?(e(n.update({changes:i,scrollIntoView:!0,selection:b.create(s,n.selection.mainIndex),userEvent:"move.line"})),!0):!1}const ZO=({state:n,dispatch:e})=>Kf(n,e,!1),YO=({state:n,dispatch:e})=>Kf(n,e,!0);function Jf(n,e,t){if(n.readOnly)return!1;let i=[];for(let s of $s(n))t?i.push({from:s.from,insert:n.doc.slice(s.from,s.to)+n.lineBreak}):i.push({from:s.to,insert:n.lineBreak+n.doc.slice(s.from,s.to)});return e(n.update({changes:i,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const KO=({state:n,dispatch:e})=>Jf(n,e,!1),JO=({state:n,dispatch:e})=>Jf(n,e,!0),e0=n=>{if(n.state.readOnly)return!1;let{state:e}=n,t=e.changes($s(e).map(({from:s,to:r})=>(s>0?s--:r{let r;if(n.lineWrapping){let o=n.lineBlockAt(s.head),l=n.coordsAtPos(s.head,s.assoc||1);l&&(r=o.bottom+n.documentTop-l.bottom+n.defaultLineHeight/2)}return n.moveVertically(s,!0,r)}).map(t);return n.dispatch({changes:t,selection:i,scrollIntoView:!0,userEvent:"delete.line"}),!0};function t0(n,e){if(/\(\)|\[\]|\{\}/.test(n.sliceDoc(e-1,e+1)))return{from:e,to:e};let t=ae(n).resolveInner(e),i=t.childBefore(e),s=t.childAfter(e),r;return i&&s&&i.to<=e&&s.from>=e&&(r=i.type.prop(L.closedBy))&&r.indexOf(s.name)>-1&&n.doc.lineAt(i.to).from==n.doc.lineAt(s.from).from&&!/\S/.test(n.sliceDoc(i.to,s.from))?{from:i.to,to:s.from}:null}const Da=eu(!1),i0=eu(!0);function eu(n){return({state:e,dispatch:t})=>{if(e.readOnly)return!1;let i=e.changeByRange(s=>{let{from:r,to:o}=s,l=e.doc.lineAt(r),a=!n&&r==o&&t0(e,r);n&&(r=o=(o<=l.to?l:e.doc.lineAt(o)).to);let h=new As(e,{simulateBreak:r,simulateDoubleBreak:!!a}),c=zo(h,r);for(c==null&&(c=gi(/^\s*/.exec(e.doc.lineAt(r).text)[0],e.tabSize));ol.from&&r{let s=[];for(let o=i.from;o<=i.to;){let l=n.doc.lineAt(o);l.number>t&&(i.empty||i.to>l.from)&&(e(l,s,i),t=l.number),o=l.to+1}let r=n.changes(s);return{changes:s,range:b.range(r.mapPos(i.anchor,1),r.mapPos(i.head,1))}})}const n0=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let t=Object.create(null),i=new As(n,{overrideIndentation:r=>{let o=t[r];return o??-1}}),s=Uo(n,(r,o,l)=>{let a=zo(i,r.from);if(a==null)return;/\S/.test(r.text)||(a=0);let h=/^\s*/.exec(r.text)[0],c=Hi(n,a);(h!=c||l.fromn.readOnly?!1:(e(n.update(Uo(n,(t,i)=>{i.push({from:t.from,insert:n.facet(cn)})}),{userEvent:"input.indent"})),!0),iu=({state:n,dispatch:e})=>n.readOnly?!1:(e(n.update(Uo(n,(t,i)=>{let s=/^\s*/.exec(t.text)[0];if(!s)return;let r=gi(s,n.tabSize),o=0,l=Hi(n,Math.max(0,r-Ut(n)));for(;o(n.setTabFocusMode(),!0),r0=[{key:"Ctrl-b",run:Rf,shift:If,preventDefault:!0},{key:"Ctrl-f",run:Df,shift:Vf},{key:"Ctrl-p",run:$f,shift:Ff},{key:"Ctrl-n",run:Bf,shift:_f},{key:"Ctrl-a",run:vO,shift:BO},{key:"Ctrl-e",run:TO,shift:WO},{key:"Ctrl-d",run:Gf},{key:"Ctrl-h",run:po},{key:"Ctrl-k",run:_O},{key:"Ctrl-Alt-h",run:Yf},{key:"Ctrl-o",run:jO},{key:"Ctrl-t",run:GO},{key:"Ctrl-v",run:uo}],o0=[{key:"ArrowLeft",run:Rf,shift:If,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:mO,shift:QO,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:kO,shift:qO,preventDefault:!0},{key:"ArrowRight",run:Df,shift:Vf,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:gO,shift:AO,preventDefault:!0},{mac:"Cmd-ArrowRight",run:wO,shift:$O,preventDefault:!0},{key:"ArrowUp",run:$f,shift:Ff,preventDefault:!0},{mac:"Cmd-ArrowUp",run:Qa,shift:Ma},{mac:"Ctrl-ArrowUp",run:Ta,shift:Ca},{key:"ArrowDown",run:Bf,shift:_f,preventDefault:!0},{mac:"Cmd-ArrowDown",run:Aa,shift:Ra},{mac:"Ctrl-ArrowDown",run:uo,shift:Pa},{key:"PageUp",run:Ta,shift:Ca},{key:"PageDown",run:uo,shift:Pa},{key:"Home",run:xO,shift:EO,preventDefault:!0},{key:"Mod-Home",run:Qa,shift:Ma},{key:"End",run:SO,shift:DO,preventDefault:!0},{key:"Mod-End",run:Aa,shift:Ra},{key:"Enter",run:Da,shift:Da},{key:"Mod-a",run:LO},{key:"Backspace",run:po,shift:po,preventDefault:!0},{key:"Delete",run:Gf,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:Yf,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:FO,preventDefault:!0},{mac:"Mod-Backspace",run:UO,preventDefault:!0},{mac:"Mod-Delete",run:HO,preventDefault:!0}].concat(r0.map(n=>({mac:n.key,run:n.run,shift:n.shift}))),l0=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:yO,shift:MO},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:bO,shift:RO},{key:"Alt-ArrowUp",run:ZO},{key:"Shift-Alt-ArrowUp",run:KO},{key:"Alt-ArrowDown",run:YO},{key:"Shift-Alt-ArrowDown",run:JO},{key:"Mod-Alt-ArrowUp",run:VO},{key:"Mod-Alt-ArrowDown",run:NO},{key:"Escape",run:XO},{key:"Mod-Enter",run:i0},{key:"Alt-l",mac:"Ctrl-l",run:zO},{key:"Mod-i",run:IO,preventDefault:!0},{key:"Mod-[",run:iu},{key:"Mod-]",run:tu},{key:"Mod-Alt-\\",run:n0},{key:"Shift-Mod-k",run:e0},{key:"Shift-Mod-\\",run:PO},{key:"Mod-/",run:Zg},{key:"Alt-A",run:Kg},{key:"Ctrl-m",mac:"Shift-Alt-m",run:s0}].concat(o0),a0={key:"Tab",run:tu,shift:iu},Ea=typeof String.prototype.normalize=="function"?n=>n.normalize("NFKD"):n=>n;class pi{constructor(e,t,i=0,s=e.length,r,o){this.test=o,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(i,s),this.bufferStart=i,this.normalize=r?l=>r(Ea(l)):Ea,this.query=this.normalize(t)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return Te(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let t=bo(e),i=this.bufferStart+this.bufferPos;this.bufferPos+=Ye(e);let s=this.normalize(t);if(s.length)for(let r=0,o=i;;r++){let l=s.charCodeAt(r),a=this.match(l,o,this.bufferPos+this.bufferStart);if(r==s.length-1){if(a)return this.value=a,this;break}o==i&&rthis.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let t=this.matchPos<=this.to&&this.re.exec(this.curLine);if(t){let i=this.curLineStart+t.index,s=i+t[0].length;if(this.matchPos=ms(this.text,s+(i==s?1:0)),i==this.curLineStart+this.curLine.length&&this.nextLine(),(ithis.value.to)&&(!this.test||this.test(i,s,t)))return this.value={from:i,to:s,match:t},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length=i||s.to<=t){let l=new si(t,e.sliceString(t,i));return lr.set(e,l),l}if(s.from==t&&s.to==i)return s;let{text:r,from:o}=s;return o>t&&(r=e.sliceString(t,o)+r,o=t),s.to=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,t=this.re.exec(this.flat.text);if(t&&!t[0]&&t.index==e&&(this.re.lastIndex=e+1,t=this.re.exec(this.flat.text)),t){let i=this.flat.from+t.index,s=i+t[0].length;if((this.flat.to>=this.to||t.index+t[0].length<=this.flat.text.length-10)&&(!this.test||this.test(i,s,t)))return this.value={from:i,to:s,match:t},this.matchPos=ms(this.text,s+(i==s?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=si.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}typeof Symbol<"u"&&(su.prototype[Symbol.iterator]=ru.prototype[Symbol.iterator]=function(){return this});function h0(n){try{return new RegExp(n,Ho),!0}catch{return!1}}function ms(n,e){if(e>=n.length)return e;let t=n.lineAt(e),i;for(;e=56320&&i<57344;)e++;return e}function mo(n){let e=String(n.state.doc.lineAt(n.state.selection.main.head).number),t=U("input",{class:"cm-textfield",name:"line",value:e}),i=U("form",{class:"cm-gotoLine",onkeydown:r=>{r.keyCode==27?(r.preventDefault(),n.dispatch({effects:$i.of(!1)}),n.focus()):r.keyCode==13&&(r.preventDefault(),s())},onsubmit:r=>{r.preventDefault(),s()}},U("label",n.state.phrase("Go to line"),": ",t)," ",U("button",{class:"cm-button",type:"submit"},n.state.phrase("go")),U("button",{name:"close",onclick:()=>{n.dispatch({effects:$i.of(!1)}),n.focus()},"aria-label":n.state.phrase("close"),type:"button"},["×"]));function s(){let r=/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(t.value);if(!r)return;let{state:o}=n,l=o.doc.lineAt(o.selection.main.head),[,a,h,c,f]=r,u=c?+c.slice(1):0,d=h?+h:l.number;if(h&&f){let g=d/100;a&&(g=g*(a=="-"?-1:1)+l.number/o.doc.lines),d=Math.round(o.doc.lines*g)}else h&&a&&(d=d*(a=="-"?-1:1)+l.number);let p=o.doc.line(Math.max(1,Math.min(o.doc.lines,d))),m=b.cursor(p.from+Math.max(0,Math.min(u,p.length)));n.dispatch({effects:[$i.of(!1),P.scrollIntoView(m.from,{y:"center"})],selection:m}),n.focus()}return{dom:i}}const $i=q.define(),qa=he.define({create(){return!0},update(n,e){for(let t of e.effects)t.is($i)&&(n=t.value);return n},provide:n=>Xi.from(n,e=>e?mo:null)}),c0=n=>{let e=Ni(n,mo);if(!e){let t=[$i.of(!0)];n.state.field(qa,!1)==null&&t.push(q.appendConfig.of([qa,f0])),n.dispatch({effects:t}),e=Ni(n,mo)}return e&&e.dom.querySelector("input").select(),!0},f0=P.baseTheme({".cm-panel.cm-gotoLine":{padding:"2px 6px 4px",position:"relative","& label":{fontSize:"80%"},"& [name=close]":{position:"absolute",top:"0",bottom:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:"0"}}}),u0={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},d0=A.define({combine(n){return rt(n,u0,{highlightWordAroundCursor:(e,t)=>e||t,minSelectionLength:Math.min,maxMatches:Math.min})}});function p0(n){return[b0,y0]}const m0=R.mark({class:"cm-selectionMatch"}),g0=R.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function $a(n,e,t,i){return(t==0||n(e.sliceDoc(t-1,t))!=Y.Word)&&(i==e.doc.length||n(e.sliceDoc(i,i+1))!=Y.Word)}function O0(n,e,t,i){return n(e.sliceDoc(t,t+1))==Y.Word&&n(e.sliceDoc(i-1,i))==Y.Word}const y0=J.fromClass(class{constructor(n){this.decorations=this.getDeco(n)}update(n){(n.selectionSet||n.docChanged||n.viewportChanged)&&(this.decorations=this.getDeco(n.view))}getDeco(n){let e=n.state.facet(d0),{state:t}=n,i=t.selection;if(i.ranges.length>1)return R.none;let s=i.main,r,o=null;if(s.empty){if(!e.highlightWordAroundCursor)return R.none;let a=t.wordAt(s.head);if(!a)return R.none;o=t.charCategorizer(s.head),r=t.sliceDoc(a.from,a.to)}else{let a=s.to-s.from;if(a200)return R.none;if(e.wholeWords){if(r=t.sliceDoc(s.from,s.to),o=t.charCategorizer(s.head),!($a(o,t,s.from,s.to)&&O0(o,t,s.from,s.to)))return R.none}else if(r=t.sliceDoc(s.from,s.to),!r)return R.none}let l=[];for(let a of n.visibleRanges){let h=new pi(t.doc,r,a.from,a.to);for(;!h.next().done;){let{from:c,to:f}=h.value;if((!o||$a(o,t,c,f))&&(s.empty&&c<=s.from&&f>=s.to?l.push(g0.range(c,f)):(c>=s.to||f<=s.from)&&l.push(m0.range(c,f)),l.length>e.maxMatches))return R.none}}return R.set(l)}},{decorations:n=>n.decorations}),b0=P.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),S0=({state:n,dispatch:e})=>{let{selection:t}=n,i=b.create(t.ranges.map(s=>n.wordAt(s.head)||b.cursor(s.head)),t.mainIndex);return i.eq(t)?!1:(e(n.update({selection:i})),!0)};function x0(n,e){let{main:t,ranges:i}=n.selection,s=n.wordAt(t.head),r=s&&s.from==t.from&&s.to==t.to;for(let o=!1,l=new pi(n.doc,e,i[i.length-1].to);;)if(l.next(),l.done){if(o)return null;l=new pi(n.doc,e,0,Math.max(0,i[i.length-1].from-1)),o=!0}else{if(o&&i.some(a=>a.from==l.value.from))continue;if(r){let a=n.wordAt(l.value.from);if(!a||a.from!=l.value.from||a.to!=l.value.to)continue}return l.value}}const k0=({state:n,dispatch:e})=>{let{ranges:t}=n.selection;if(t.some(r=>r.from===r.to))return S0({state:n,dispatch:e});let i=n.sliceDoc(t[0].from,t[0].to);if(n.selection.ranges.some(r=>n.sliceDoc(r.from,r.to)!=i))return!1;let s=x0(n,i);return s?(e(n.update({selection:n.selection.addRange(b.range(s.from,s.to),!1),effects:P.scrollIntoView(s.to)})),!0):!1},yi=A.define({combine(n){return rt(n,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new q0(e),scrollToMatch:e=>P.scrollIntoView(e)})}});class ou{constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||h0(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(t,i)=>i=="n"?` +`:i=="r"?"\r":i=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord}create(){return this.regexp?new C0(this):new v0(this)}getCursor(e,t=0,i){let s=e.doc?e:I.create({doc:e});return i==null&&(i=s.doc.length),this.regexp?Yt(this,s,t,i):Zt(this,s,t,i)}}class lu{constructor(e){this.spec=e}}function Zt(n,e,t,i){return new pi(e.doc,n.unquoted,t,i,n.caseSensitive?void 0:s=>s.toLowerCase(),n.wholeWord?w0(e.doc,e.charCategorizer(e.selection.main.head)):void 0)}function w0(n,e){return(t,i,s,r)=>((r>t||r+s.length=t)return null;s.push(i.value)}return s}highlight(e,t,i,s){let r=Zt(this.spec,e,Math.max(0,t-this.spec.unquoted.length),Math.min(i+this.spec.unquoted.length,e.doc.length));for(;!r.next().done;)s(r.value.from,r.value.to)}}function Yt(n,e,t,i){return new su(e.doc,n.search,{ignoreCase:!n.caseSensitive,test:n.wholeWord?T0(e.charCategorizer(e.selection.main.head)):void 0},t,i)}function gs(n,e){return n.slice(pe(n,e,!1),e)}function Os(n,e){return n.slice(e,pe(n,e))}function T0(n){return(e,t,i)=>!i[0].length||(n(gs(i.input,i.index))!=Y.Word||n(Os(i.input,i.index))!=Y.Word)&&(n(Os(i.input,i.index+i[0].length))!=Y.Word||n(gs(i.input,i.index+i[0].length))!=Y.Word)}class C0 extends lu{nextMatch(e,t,i){let s=Yt(this.spec,e,i,e.doc.length).next();return s.done&&(s=Yt(this.spec,e,0,t).next()),s.done?null:s.value}prevMatchInRange(e,t,i){for(let s=1;;s++){let r=Math.max(t,i-s*1e4),o=Yt(this.spec,e,r,i),l=null;for(;!o.next().done;)l=o.value;if(l&&(r==t||l.from>r+10))return l;if(r==t)return null}}prevMatch(e,t,i){return this.prevMatchInRange(e,0,t)||this.prevMatchInRange(e,i,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(t,i)=>{if(i=="&")return e.match[0];if(i=="$")return"$";for(let s=i.length;s>0;s--){let r=+i.slice(0,s);if(r>0&&r=t)return null;s.push(i.value)}return s}highlight(e,t,i,s){let r=Yt(this.spec,e,Math.max(0,t-250),Math.min(i+250,e.doc.length));for(;!r.next().done;)s(r.value.from,r.value.to)}}const Gi=q.define(),jo=q.define(),vt=he.define({create(n){return new ar(go(n).create(),null)},update(n,e){for(let t of e.effects)t.is(Gi)?n=new ar(t.value.create(),n.panel):t.is(jo)&&(n=new ar(n.query,t.value?Go:null));return n},provide:n=>Xi.from(n,e=>e.panel)});class ar{constructor(e,t){this.query=e,this.panel=t}}const P0=R.mark({class:"cm-searchMatch"}),Q0=R.mark({class:"cm-searchMatch cm-searchMatch-selected"}),A0=J.fromClass(class{constructor(n){this.view=n,this.decorations=this.highlight(n.state.field(vt))}update(n){let e=n.state.field(vt);(e!=n.startState.field(vt)||n.docChanged||n.selectionSet||n.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:n,panel:e}){if(!e||!n.spec.valid)return R.none;let{view:t}=this,i=new gt;for(let s=0,r=t.visibleRanges,o=r.length;sr[s+1].from-500;)a=r[++s].to;n.highlight(t.state,l,a,(h,c)=>{let f=t.state.selection.ranges.some(u=>u.from==h&&u.to==c);i.add(h,c,f?Q0:P0)})}return i.finish()}},{decorations:n=>n.decorations});function pn(n){return e=>{let t=e.state.field(vt,!1);return t&&t.query.spec.valid?n(e,t):cu(e)}}const ys=pn((n,{query:e})=>{let{to:t}=n.state.selection.main,i=e.nextMatch(n.state,t,t);if(!i)return!1;let s=b.single(i.from,i.to),r=n.state.facet(yi);return n.dispatch({selection:s,effects:[Zo(n,i),r.scrollToMatch(s.main,n)],userEvent:"select.search"}),hu(n),!0}),bs=pn((n,{query:e})=>{let{state:t}=n,{from:i}=t.selection.main,s=e.prevMatch(t,i,i);if(!s)return!1;let r=b.single(s.from,s.to),o=n.state.facet(yi);return n.dispatch({selection:r,effects:[Zo(n,s),o.scrollToMatch(r.main,n)],userEvent:"select.search"}),hu(n),!0}),M0=pn((n,{query:e})=>{let t=e.matchAll(n.state,1e3);return!t||!t.length?!1:(n.dispatch({selection:b.create(t.map(i=>b.range(i.from,i.to))),userEvent:"select.search.matches"}),!0)}),R0=({state:n,dispatch:e})=>{let t=n.selection;if(t.ranges.length>1||t.main.empty)return!1;let{from:i,to:s}=t.main,r=[],o=0;for(let l=new pi(n.doc,n.sliceDoc(i,s));!l.next().done;){if(r.length>1e3)return!1;l.value.from==i&&(o=r.length),r.push(b.range(l.value.from,l.value.to))}return e(n.update({selection:b.create(r,o),userEvent:"select.search.matches"})),!0},Ba=pn((n,{query:e})=>{let{state:t}=n,{from:i,to:s}=t.selection.main;if(t.readOnly)return!1;let r=e.nextMatch(t,i,i);if(!r)return!1;let o=r,l=[],a,h,c=[];o.from==i&&o.to==s&&(h=t.toText(e.getReplacement(o)),l.push({from:o.from,to:o.to,insert:h}),o=e.nextMatch(t,o.from,o.to),c.push(P.announce.of(t.phrase("replaced match on line $",t.doc.lineAt(i).number)+".")));let f=n.state.changes(l);return o&&(a=b.single(o.from,o.to).map(f),c.push(Zo(n,o)),c.push(t.facet(yi).scrollToMatch(a.main,n))),n.dispatch({changes:f,selection:a,effects:c,userEvent:"input.replace"}),!0}),D0=pn((n,{query:e})=>{if(n.state.readOnly)return!1;let t=e.matchAll(n.state,1e9).map(s=>{let{from:r,to:o}=s;return{from:r,to:o,insert:e.getReplacement(s)}});if(!t.length)return!1;let i=n.state.phrase("replaced $ matches",t.length)+".";return n.dispatch({changes:t,effects:P.announce.of(i),userEvent:"input.replace.all"}),!0});function Go(n){return n.state.facet(yi).createPanel(n)}function go(n,e){var t,i,s,r,o;let l=n.selection.main,a=l.empty||l.to>l.from+100?"":n.sliceDoc(l.from,l.to);if(e&&!a)return e;let h=n.facet(yi);return new ou({search:((t=e?.literal)!==null&&t!==void 0?t:h.literal)?a:a.replace(/\n/g,"\\n"),caseSensitive:(i=e?.caseSensitive)!==null&&i!==void 0?i:h.caseSensitive,literal:(s=e?.literal)!==null&&s!==void 0?s:h.literal,regexp:(r=e?.regexp)!==null&&r!==void 0?r:h.regexp,wholeWord:(o=e?.wholeWord)!==null&&o!==void 0?o:h.wholeWord})}function au(n){let e=Ni(n,Go);return e&&e.dom.querySelector("[main-field]")}function hu(n){let e=au(n);e&&e==n.root.activeElement&&e.select()}const cu=n=>{let e=n.state.field(vt,!1);if(e&&e.panel){let t=au(n);if(t&&t!=n.root.activeElement){let i=go(n.state,e.query.spec);i.valid&&n.dispatch({effects:Gi.of(i)}),t.focus(),t.select()}}else n.dispatch({effects:[jo.of(!0),e?Gi.of(go(n.state,e.query.spec)):q.appendConfig.of(B0)]});return!0},fu=n=>{let e=n.state.field(vt,!1);if(!e||!e.panel)return!1;let t=Ni(n,Go);return t&&t.dom.contains(n.root.activeElement)&&n.focus(),n.dispatch({effects:jo.of(!1)}),!0},E0=[{key:"Mod-f",run:cu,scope:"editor search-panel"},{key:"F3",run:ys,shift:bs,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:ys,shift:bs,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:fu,scope:"editor search-panel"},{key:"Mod-Shift-l",run:R0},{key:"Mod-Alt-g",run:c0},{key:"Mod-d",run:k0,preventDefault:!0}];class q0{constructor(e){this.view=e;let t=this.query=e.state.field(vt).query.spec;this.commit=this.commit.bind(this),this.searchField=U("input",{value:t.search,placeholder:Me(e,"Find"),"aria-label":Me(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=U("input",{value:t.replace,placeholder:Me(e,"Replace"),"aria-label":Me(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=U("input",{type:"checkbox",name:"case",form:"",checked:t.caseSensitive,onchange:this.commit}),this.reField=U("input",{type:"checkbox",name:"re",form:"",checked:t.regexp,onchange:this.commit}),this.wordField=U("input",{type:"checkbox",name:"word",form:"",checked:t.wholeWord,onchange:this.commit});function i(s,r,o){return U("button",{class:"cm-button",name:s,onclick:r,type:"button"},o)}this.dom=U("div",{onkeydown:s=>this.keydown(s),class:"cm-search"},[this.searchField,i("next",()=>ys(e),[Me(e,"next")]),i("prev",()=>bs(e),[Me(e,"previous")]),i("select",()=>M0(e),[Me(e,"all")]),U("label",null,[this.caseField,Me(e,"match case")]),U("label",null,[this.reField,Me(e,"regexp")]),U("label",null,[this.wordField,Me(e,"by word")]),...e.state.readOnly?[]:[U("br"),this.replaceField,i("replace",()=>Ba(e),[Me(e,"replace")]),i("replaceAll",()=>D0(e),[Me(e,"replace all")])],U("button",{name:"close",onclick:()=>fu(e),"aria-label":Me(e,"close"),type:"button"},["×"])])}commit(){let e=new ou({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:Gi.of(e)}))}keydown(e){zp(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?bs:ys)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),Ba(this.view))}update(e){for(let t of e.transactions)for(let i of t.effects)i.is(Gi)&&!i.value.eq(this.query)&&this.setQuery(i.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(yi).top}}function Me(n,e){return n.state.phrase(e)}const Wn=30,Ln=/[\s\.,:;?!]/;function Zo(n,{from:e,to:t}){let i=n.state.doc.lineAt(e),s=n.state.doc.lineAt(t).to,r=Math.max(i.from,e-Wn),o=Math.min(s,t+Wn),l=n.state.sliceDoc(r,o);if(r!=i.from){for(let a=0;al.length-Wn;a--)if(!Ln.test(l[a-1])&&Ln.test(l[a])){l=l.slice(0,a);break}}return P.announce.of(`${n.state.phrase("current match")}. ${l} ${n.state.phrase("on line")} ${i.number}.`)}const $0=P.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),B0=[vt,Mt.low(A0),$0];class uu{constructor(e,t,i,s){this.state=e,this.pos=t,this.explicit=i,this.view=s,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let t=ae(this.state).resolveInner(this.pos,-1);for(;t&&e.indexOf(t.name)<0;)t=t.parent;return t?{from:t.from,to:this.pos,text:this.state.sliceDoc(t.from,this.pos),type:t.type}:null}matchBefore(e){let t=this.state.doc.lineAt(this.pos),i=Math.max(t.from,this.pos-250),s=t.text.slice(i-t.from,this.pos-t.from),r=s.search(pu(e,!1));return r<0?null:{from:i+r,to:this.pos,text:s.slice(r)}}get aborted(){return this.abortListeners==null}addEventListener(e,t,i){e=="abort"&&this.abortListeners&&(this.abortListeners.push(t),i&&i.onDocChange&&(this.abortOnDocChange=!0))}}function Wa(n){let e=Object.keys(n).join(""),t=/\w/.test(e);return t&&(e=e.replace(/\w/g,"")),`[${t?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function W0(n){let e=Object.create(null),t=Object.create(null);for(let{label:s}of n){e[s[0]]=!0;for(let r=1;rtypeof s=="string"?{label:s}:s),[t,i]=e.every(s=>/^\w+$/.test(s.label))?[/\w*$/,/\w+$/]:W0(e);return s=>{let r=s.matchBefore(i);return r||s.explicit?{from:r?r.from:s.pos,options:e,validFor:t}:null}}function L0(n,e){return t=>{for(let i=ae(t.state).resolveInner(t.pos,-1);i;i=i.parent){if(n.indexOf(i.name)>-1)return null;if(i.type.isTop)break}return e(t)}}class La{constructor(e,t,i,s){this.completion=e,this.source=t,this.match=i,this.score=s}}function Vt(n){return n.selection.main.from}function pu(n,e){var t;let{source:i}=n,s=e&&i[0]!="^",r=i[i.length-1]!="$";return!s&&!r?n:new RegExp(`${s?"^":""}(?:${i})${r?"$":""}`,(t=n.flags)!==null&&t!==void 0?t:n.ignoreCase?"i":"")}const Yo=st.define();function z0(n,e,t,i){let{main:s}=n.selection,r=t-s.from,o=i-s.from;return{...n.changeByRange(l=>{if(l!=s&&t!=i&&n.sliceDoc(l.from+r,l.from+o)!=n.sliceDoc(t,i))return{range:l};let a=n.toText(e);return{changes:{from:l.from+r,to:i==s.from?l.to:l.from+o,insert:a},range:b.cursor(l.from+r+a.length)}}),scrollIntoView:!0,userEvent:"input.complete"}}const za=new WeakMap;function I0(n){if(!Array.isArray(n))return n;let e=za.get(n);return e||za.set(n,e=du(n)),e}const Ss=q.define(),Zi=q.define();class V0{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let t=0;t=48&&k<=57||k>=97&&k<=122?2:k>=65&&k<=90?1:0:(v=bo(k))!=v.toLowerCase()?1:v!=v.toUpperCase()?2:0;(!S||T==1&&g||w==0&&T!=0)&&(t[f]==k||i[f]==k&&(u=!0)?o[f++]=S:o.length&&(y=!1)),w=T,S+=Ye(k)}return f==a&&o[0]==0&&y?this.result(-100+(u?-200:0),o,e):d==a&&p==0?this.ret(-200-e.length+(m==e.length?0:-100),[0,m]):l>-1?this.ret(-700-e.length,[l,l+this.pattern.length]):d==a?this.ret(-900-e.length,[p,m]):f==a?this.result(-100+(u?-200:0)+-700+(y?0:-1100),o,e):t.length==2?null:this.result((s[0]?-700:0)+-200+-1100,s,e)}result(e,t,i){let s=[],r=0;for(let o of t){let l=o+(this.astral?Ye(Te(i,o)):1);r&&s[r-1]==o?s[r-1]=l:(s[r++]=o,s[r++]=l)}return this.ret(e-i.length,s)}}class N0{constructor(e){this.pattern=e,this.matched=[],this.score=0,this.folded=e.toLowerCase()}match(e){if(e.length!1,activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:()=>"",optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:X0,filterStrict:!1,compareCompletions:(e,t)=>e.label.localeCompare(t.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(e,t)=>e&&t,closeOnBlur:(e,t)=>e&&t,icons:(e,t)=>e&&t,tooltipClass:(e,t)=>i=>Ia(e(i),t(i)),optionClass:(e,t)=>i=>Ia(e(i),t(i)),addToOptions:(e,t)=>e.concat(t),filterStrict:(e,t)=>e||t})}});function Ia(n,e){return n?e?n+" "+e:n:e}function X0(n,e,t,i,s,r){let o=n.textDirection==Z.RTL,l=o,a=!1,h="top",c,f,u=e.left-s.left,d=s.right-e.right,p=i.right-i.left,m=i.bottom-i.top;if(l&&u=m||S>e.top?c=t.bottom-e.top:(h="bottom",c=e.bottom-t.top)}let g=(e.bottom-e.top)/r.offsetHeight,y=(e.right-e.left)/r.offsetWidth;return{style:`${h}: ${c/g}px; max-width: ${f/y}px`,class:"cm-completionInfo-"+(a?o?"left-narrow":"right-narrow":l?"left":"right")}}function F0(n){let e=n.addToOptions.slice();return n.icons&&e.push({render(t){let i=document.createElement("div");return i.classList.add("cm-completionIcon"),t.type&&i.classList.add(...t.type.split(/\s+/g).map(s=>"cm-completionIcon-"+s)),i.setAttribute("aria-hidden","true"),i},position:20}),e.push({render(t,i,s,r){let o=document.createElement("span");o.className="cm-completionLabel";let l=t.displayLabel||t.label,a=0;for(let h=0;ha&&o.appendChild(document.createTextNode(l.slice(a,c)));let u=o.appendChild(document.createElement("span"));u.appendChild(document.createTextNode(l.slice(c,f))),u.className="cm-completionMatchedText",a=f}return at.position-i.position).map(t=>t.render)}function hr(n,e,t){if(n<=t)return{from:0,to:n};if(e<0&&(e=0),e<=n>>1){let s=Math.floor(e/t);return{from:s*t,to:(s+1)*t}}let i=Math.floor((n-e)/t);return{from:n-(i+1)*t,to:n-i*t}}class _0{constructor(e,t,i){this.view=e,this.stateField=t,this.applyCompletion=i,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:()=>this.measureInfo(),write:a=>this.placeInfo(a),key:this},this.space=null,this.currentClass="";let s=e.state.field(t),{options:r,selected:o}=s.open,l=e.state.facet(le);this.optionContent=F0(l),this.optionClass=l.optionClass,this.tooltipClass=l.tooltipClass,this.range=hr(r.length,o,l.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.updateTooltipClass(e.state),this.dom.addEventListener("mousedown",a=>{let{options:h}=e.state.field(t).open;for(let c=a.target,f;c&&c!=this.dom;c=c.parentNode)if(c.nodeName=="LI"&&(f=/-(\d+)$/.exec(c.id))&&+f[1]{let h=e.state.field(this.stateField,!1);h&&h.tooltip&&e.state.facet(le).closeOnBlur&&a.relatedTarget!=e.contentDOM&&e.dispatch({effects:Zi.of(null)})}),this.showOptions(r,s.id)}mount(){this.updateSel()}showOptions(e,t){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(e,t,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(e){var t;let i=e.state.field(this.stateField),s=e.startState.field(this.stateField);if(this.updateTooltipClass(e.state),i!=s){let{options:r,selected:o,disabled:l}=i.open;(!s.open||s.open.options!=r)&&(this.range=hr(r.length,o,e.state.facet(le).maxRenderedOptions),this.showOptions(r,i.id)),this.updateSel(),l!=((t=s.open)===null||t===void 0?void 0:t.disabled)&&this.dom.classList.toggle("cm-tooltip-autocomplete-disabled",!!l)}}updateTooltipClass(e){let t=this.tooltipClass(e);if(t!=this.currentClass){for(let i of this.currentClass.split(" "))i&&this.dom.classList.remove(i);for(let i of t.split(" "))i&&this.dom.classList.add(i);this.currentClass=t}}positioned(e){this.space=e,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let e=this.view.state.field(this.stateField),t=e.open;(t.selected>-1&&t.selected=this.range.to)&&(this.range=hr(t.options.length,t.selected,this.view.state.facet(le).maxRenderedOptions),this.showOptions(t.options,e.id));let i=this.updateSelectedOption(t.selected);if(i){this.destroyInfo();let{completion:s}=t.options[t.selected],{info:r}=s;if(!r)return;let o=typeof r=="string"?document.createTextNode(r):r(s);if(!o)return;"then"in o?o.then(l=>{l&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(l,s)}).catch(l=>Pe(this.view.state,l,"completion info")):(this.addInfoPane(o,s),i.setAttribute("aria-describedby",this.info.id))}}addInfoPane(e,t){this.destroyInfo();let i=this.info=document.createElement("div");if(i.className="cm-tooltip cm-completionInfo",i.id="cm-completionInfo-"+Math.floor(Math.random()*65535).toString(16),e.nodeType!=null)i.appendChild(e),this.infoDestroy=null;else{let{dom:s,destroy:r}=e;i.appendChild(s),this.infoDestroy=r||null}this.dom.appendChild(i),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(e){let t=null;for(let i=this.list.firstChild,s=this.range.from;i;i=i.nextSibling,s++)i.nodeName!="LI"||!i.id?s--:s==e?i.hasAttribute("aria-selected")||(i.setAttribute("aria-selected","true"),t=i):i.hasAttribute("aria-selected")&&(i.removeAttribute("aria-selected"),i.removeAttribute("aria-describedby"));return t&&H0(this.list,t),t}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let t=this.dom.getBoundingClientRect(),i=this.info.getBoundingClientRect(),s=e.getBoundingClientRect(),r=this.space;if(!r){let o=this.dom.ownerDocument.documentElement;r={left:0,top:0,right:o.clientWidth,bottom:o.clientHeight}}return s.top>Math.min(r.bottom,t.bottom)-10||s.bottom{o.target==s&&o.preventDefault()});let r=null;for(let o=i.from;oi.from||i.from==0))if(r=u,typeof h!="string"&&h.header)s.appendChild(h.header(h));else{let d=s.appendChild(document.createElement("completion-section"));d.textContent=u}}const c=s.appendChild(document.createElement("li"));c.id=t+"-"+o,c.setAttribute("role","option");let f=this.optionClass(l);f&&(c.className=f);for(let u of this.optionContent){let d=u(l,this.view.state,this.view,a);d&&c.appendChild(d)}}return i.from&&s.classList.add("cm-completionListIncompleteTop"),i.tonew _0(t,n,e)}function H0(n,e){let t=n.getBoundingClientRect(),i=e.getBoundingClientRect(),s=t.height/n.offsetHeight;i.topt.bottom&&(n.scrollTop+=(i.bottom-t.bottom)/s)}function Va(n){return(n.boost||0)*100+(n.apply?10:0)+(n.info?5:0)+(n.type?1:0)}function j0(n,e){let t=[],i=null,s=null,r=c=>{t.push(c);let{section:f}=c.completion;if(f){i||(i=[]);let u=typeof f=="string"?f:f.name;i.some(d=>d.name==u)||i.push(typeof f=="string"?{name:u}:f)}},o=e.facet(le);for(let c of n)if(c.hasResult()){let f=c.result.getMatch;if(c.result.filter===!1)for(let u of c.result.options)r(new La(u,c.source,f?f(u):[],1e9-t.length));else{let u=e.sliceDoc(c.from,c.to),d,p=o.filterStrict?new N0(u):new V0(u);for(let m of c.result.options)if(d=p.match(m.label)){let g=m.displayLabel?f?f(m,d.matched):[]:d.matched,y=d.score+(m.boost||0);if(r(new La(m,c.source,g,y)),typeof m.section=="object"&&m.section.rank==="dynamic"){let{name:S}=m.section;s||(s=Object.create(null)),s[S]=Math.max(y,s[S]||-1e9)}}}}if(i){let c=Object.create(null),f=0,u=(d,p)=>(d.rank==="dynamic"&&p.rank==="dynamic"?s[p.name]-s[d.name]:0)||(typeof d.rank=="number"?d.rank:1e9)-(typeof p.rank=="number"?p.rank:1e9)||(d.nameu.score-f.score||h(f.completion,u.completion))){let f=c.completion;!a||a.label!=f.label||a.detail!=f.detail||a.type!=null&&f.type!=null&&a.type!=f.type||a.apply!=f.apply||a.boost!=f.boost?l.push(c):Va(c.completion)>Va(a)&&(l[l.length-1]=c),a=c.completion}return l}class ei{constructor(e,t,i,s,r,o){this.options=e,this.attrs=t,this.tooltip=i,this.timestamp=s,this.selected=r,this.disabled=o}setSelected(e,t){return e==this.selected||e>=this.options.length?this:new ei(this.options,Na(t,e),this.tooltip,this.timestamp,e,this.disabled)}static build(e,t,i,s,r,o){if(s&&!o&&e.some(h=>h.isPending))return s.setDisabled();let l=j0(e,t);if(!l.length)return s&&e.some(h=>h.isPending)?s.setDisabled():null;let a=t.facet(le).selectOnOpen?0:-1;if(s&&s.selected!=a&&s.selected!=-1){let h=s.options[s.selected].completion;for(let c=0;cc.hasResult()?Math.min(h,c.from):h,1e8),create:ey,above:r.aboveCursor},s?s.timestamp:Date.now(),a,!1)}map(e){return new ei(this.options,this.attrs,{...this.tooltip,pos:e.mapPos(this.tooltip.pos)},this.timestamp,this.selected,this.disabled)}setDisabled(){return new ei(this.options,this.attrs,this.tooltip,this.timestamp,this.selected,!0)}}class xs{constructor(e,t,i){this.active=e,this.id=t,this.open=i}static start(){return new xs(K0,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:t}=e,i=t.facet(le),r=(i.override||t.languageDataAt("autocomplete",Vt(t)).map(I0)).map(a=>(this.active.find(c=>c.source==a)||new We(a,this.active.some(c=>c.state!=0)?1:0)).update(e,i));r.length==this.active.length&&r.every((a,h)=>a==this.active[h])&&(r=this.active);let o=this.open,l=e.effects.some(a=>a.is(Ko));o&&e.docChanged&&(o=o.map(e.changes)),e.selection||r.some(a=>a.hasResult()&&e.changes.touchesRange(a.from,a.to))||!G0(r,this.active)||l?o=ei.build(r,t,this.id,o,i,l):o&&o.disabled&&!r.some(a=>a.isPending)&&(o=null),!o&&r.every(a=>!a.isPending)&&r.some(a=>a.hasResult())&&(r=r.map(a=>a.hasResult()?new We(a.source,0):a));for(let a of e.effects)a.is(gu)&&(o=o&&o.setSelected(a.value,this.id));return r==this.active&&o==this.open?this:new xs(r,this.id,o)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?Z0:Y0}}function G0(n,e){if(n==e)return!0;for(let t=0,i=0;;){for(;t-1&&(t["aria-activedescendant"]=n+"-"+e),t}const K0=[];function mu(n,e){if(n.isUserEvent("input.complete")){let i=n.annotation(Yo);if(i&&e.activateOnCompletion(i))return 12}let t=n.isUserEvent("input.type");return t&&e.activateOnTyping?5:t?1:n.isUserEvent("delete.backward")?2:n.selection?8:n.docChanged?16:0}class We{constructor(e,t,i=!1){this.source=e,this.state=t,this.explicit=i}hasResult(){return!1}get isPending(){return this.state==1}update(e,t){let i=mu(e,t),s=this;(i&8||i&16&&this.touches(e))&&(s=new We(s.source,0)),i&4&&s.state==0&&(s=new We(this.source,1)),s=s.updateFor(e,i);for(let r of e.effects)if(r.is(Ss))s=new We(s.source,1,r.value);else if(r.is(Zi))s=new We(s.source,0);else if(r.is(Ko))for(let o of r.value)o.source==s.source&&(s=o);return s}updateFor(e,t){return this.map(e.changes)}map(e){return this}touches(e){return e.changes.touchesRange(Vt(e.state))}}class ri extends We{constructor(e,t,i,s,r,o){super(e,3,t),this.limit=i,this.result=s,this.from=r,this.to=o}hasResult(){return!0}updateFor(e,t){var i;if(!(t&3))return this.map(e.changes);let s=this.result;s.map&&!e.changes.empty&&(s=s.map(s,e.changes));let r=e.changes.mapPos(this.from),o=e.changes.mapPos(this.to,1),l=Vt(e.state);if(l>o||!s||t&2&&(Vt(e.startState)==this.from||lt.map(e))}}),gu=q.define(),Ce=he.define({create(){return xs.start()},update(n,e){return n.update(e)},provide:n=>[Eo.from(n,e=>e.tooltip),P.contentAttributes.from(n,e=>e.attrs)]});function Jo(n,e){const t=e.completion.apply||e.completion.label;let i=n.state.field(Ce).active.find(s=>s.source==e.source);return i instanceof ri?(typeof t=="string"?n.dispatch({...z0(n.state,t,i.from,i.to),annotations:Yo.of(e.completion)}):t(n,e.completion,i.from,i.to),!0):!1}const ey=U0(Ce,Jo);function zn(n,e="option"){return t=>{let i=t.state.field(Ce,!1);if(!i||!i.open||i.open.disabled||Date.now()-i.open.timestamp-1?i.open.selected+s*(n?1:-1):n?0:o-1;return l<0?l=e=="page"?0:o-1:l>=o&&(l=e=="page"?o-1:0),t.dispatch({effects:gu.of(l)}),!0}}const ty=n=>{let e=n.state.field(Ce,!1);return n.state.readOnly||!e||!e.open||e.open.selected<0||e.open.disabled||Date.now()-e.open.timestampn.state.field(Ce,!1)?(n.dispatch({effects:Ss.of(!0)}),!0):!1,iy=n=>{let e=n.state.field(Ce,!1);return!e||!e.active.some(t=>t.state!=0)?!1:(n.dispatch({effects:Zi.of(null)}),!0)};class ny{constructor(e,t){this.active=e,this.context=t,this.time=Date.now(),this.updates=[],this.done=void 0}}const sy=50,ry=1e3,oy=J.fromClass(class{constructor(n){this.view=n,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(let e of n.state.field(Ce).active)e.isPending&&this.startQuery(e)}update(n){let e=n.state.field(Ce),t=n.state.facet(le);if(!n.selectionSet&&!n.docChanged&&n.startState.field(Ce)==e)return;let i=n.transactions.some(r=>{let o=mu(r,t);return o&8||(r.selection||r.docChanged)&&!(o&3)});for(let r=0;rsy&&Date.now()-o.time>ry){for(let l of o.context.abortListeners)try{l()}catch(a){Pe(this.view.state,a)}o.context.abortListeners=null,this.running.splice(r--,1)}else o.updates.push(...n.transactions)}this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),n.transactions.some(r=>r.effects.some(o=>o.is(Ss)))&&(this.pendingStart=!0);let s=this.pendingStart?50:t.activateOnTypingDelay;if(this.debounceUpdate=e.active.some(r=>r.isPending&&!this.running.some(o=>o.active.source==r.source))?setTimeout(()=>this.startUpdate(),s):-1,this.composing!=0)for(let r of n.transactions)r.isUserEvent("input.type")?this.composing=2:this.composing==2&&r.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;let{state:n}=this.view,e=n.field(Ce);for(let t of e.active)t.isPending&&!this.running.some(i=>i.active.source==t.source)&&this.startQuery(t);this.running.length&&e.open&&e.open.disabled&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(le).updateSyncTime))}startQuery(n){let{state:e}=this.view,t=Vt(e),i=new uu(e,t,n.explicit,this.view),s=new ny(n,i);this.running.push(s),Promise.resolve(n.source(i)).then(r=>{s.context.aborted||(s.done=r||null,this.scheduleAccept())},r=>{this.view.dispatch({effects:Zi.of(null)}),Pe(this.view.state,r)})}scheduleAccept(){this.running.every(n=>n.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(le).updateSyncTime))}accept(){var n;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],t=this.view.state.facet(le),i=this.view.state.field(Ce);for(let s=0;sl.source==r.active.source);if(o&&o.isPending)if(r.done==null){let l=new We(r.active.source,0);for(let a of r.updates)l=l.update(a,t);l.isPending||e.push(l)}else this.startQuery(o)}(e.length||i.open&&i.open.disabled)&&this.view.dispatch({effects:Ko.of(e)})}},{eventHandlers:{blur(n){let e=this.view.state.field(Ce,!1);if(e&&e.tooltip&&this.view.state.facet(le).closeOnBlur){let t=e.open&&Nc(this.view,e.open.tooltip);(!t||!t.dom.contains(n.relatedTarget))&&setTimeout(()=>this.view.dispatch({effects:Zi.of(null)}),10)}},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:Ss.of(!1)}),20),this.composing=0}}}),ly=typeof navigator=="object"&&/Win/.test(navigator.platform),ay=Mt.highest(P.domEventHandlers({keydown(n,e){let t=e.state.field(Ce,!1);if(!t||!t.open||t.open.disabled||t.open.selected<0||n.key.length>1||n.ctrlKey&&!(ly&&n.altKey)||n.metaKey)return!1;let i=t.open.options[t.open.selected],s=t.active.find(o=>o.source==i.source),r=i.completion.commitCharacters||s.result.commitCharacters;return r&&r.indexOf(n.key)>-1&&Jo(e,i),!1}})),Ou=P.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li, & > completion-section":{padding:"1px 3px",lineHeight:1.2},"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer"},"& > completion-section":{display:"list-item",borderBottom:"1px solid silver",paddingLeft:"0.5em",opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"···"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"400px",boxSizing:"border-box",whiteSpace:"pre-line"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:"30px"},".cm-completionInfo.cm-completionInfo-right-narrow":{left:"30px"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'ƒ'"}},".cm-completionIcon-class":{"&:after":{content:"'○'"}},".cm-completionIcon-interface":{"&:after":{content:"'◌'"}},".cm-completionIcon-variable":{"&:after":{content:"'𝑥'"}},".cm-completionIcon-constant":{"&:after":{content:"'𝐶'"}},".cm-completionIcon-type":{"&:after":{content:"'𝑡'"}},".cm-completionIcon-enum":{"&:after":{content:"'∪'"}},".cm-completionIcon-property":{"&:after":{content:"'□'"}},".cm-completionIcon-keyword":{"&:after":{content:"'🔑︎'"}},".cm-completionIcon-namespace":{"&:after":{content:"'▢'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class hy{constructor(e,t,i,s){this.field=e,this.line=t,this.from=i,this.to=s}}class el{constructor(e,t,i){this.field=e,this.from=t,this.to=i}map(e){let t=e.mapPos(this.from,-1,de.TrackDel),i=e.mapPos(this.to,1,de.TrackDel);return t==null||i==null?null:new el(this.field,t,i)}}class tl{constructor(e,t){this.lines=e,this.fieldPositions=t}instantiate(e,t){let i=[],s=[t],r=e.doc.lineAt(t),o=/^\s*/.exec(r.text)[0];for(let a of this.lines){if(i.length){let h=o,c=/^\t*/.exec(a)[0].length;for(let f=0;fnew el(a.field,s[a.line]+a.from,s[a.line]+a.to));return{text:i,ranges:l}}static parse(e){let t=[],i=[],s=[],r;for(let o of e.split(/\r\n?|\n/)){for(;r=/[#$]\{(?:(\d+)(?::([^{}]*))?|((?:\\[{}]|[^{}])*))\}/.exec(o);){let l=r[1]?+r[1]:null,a=r[2]||r[3]||"",h=-1,c=a.replace(/\\[{}]/g,f=>f[1]);for(let f=0;f=h&&u.field++}for(let f of s)if(f.line==i.length&&f.from>r.index){let u=r[2]?3+(r[1]||"").length:2;f.from-=u,f.to-=u}s.push(new hy(h,i.length,r.index,r.index+c.length)),o=o.slice(0,r.index)+a+o.slice(r.index+r[0].length)}o=o.replace(/\\([{}])/g,(l,a,h)=>{for(let c of s)c.line==i.length&&c.from>h&&(c.from--,c.to--);return a}),i.push(o)}return new tl(i,s)}}let cy=R.widget({widget:new class extends ot{toDOM(){let n=document.createElement("span");return n.className="cm-snippetFieldPosition",n}ignoreEvent(){return!1}}}),fy=R.mark({class:"cm-snippetField"});class bi{constructor(e,t){this.ranges=e,this.active=t,this.deco=R.set(e.map(i=>(i.from==i.to?cy:fy).range(i.from,i.to)),!0)}map(e){let t=[];for(let i of this.ranges){let s=i.map(e);if(!s)return null;t.push(s)}return new bi(t,this.active)}selectionInsideField(e){return e.ranges.every(t=>this.ranges.some(i=>i.field==this.active&&i.from<=t.from&&i.to>=t.to))}}const mn=q.define({map(n,e){return n&&n.map(e)}}),uy=q.define(),Yi=he.define({create(){return null},update(n,e){for(let t of e.effects){if(t.is(mn))return t.value;if(t.is(uy)&&n)return new bi(n.ranges,t.value)}return n&&e.docChanged&&(n=n.map(e.changes)),n&&e.selection&&!n.selectionInsideField(e.selection)&&(n=null),n},provide:n=>P.decorations.from(n,e=>e?e.deco:R.none)});function il(n,e){return b.create(n.filter(t=>t.field==e).map(t=>b.range(t.from,t.to)))}function dy(n){let e=tl.parse(n);return(t,i,s,r)=>{let{text:o,ranges:l}=e.instantiate(t.state,s),{main:a}=t.state.selection,h={changes:{from:s,to:r==a.from?a.to:r,insert:V.of(o)},scrollIntoView:!0,annotations:i?[Yo.of(i),ie.userEvent.of("input.complete")]:void 0};if(l.length&&(h.selection=il(l,0)),l.some(c=>c.field>0)){let c=new bi(l,0),f=h.effects=[mn.of(c)];t.state.field(Yi,!1)===void 0&&f.push(q.appendConfig.of([Yi,yy,by,Ou]))}t.dispatch(t.state.update(h))}}function yu(n){return({state:e,dispatch:t})=>{let i=e.field(Yi,!1);if(!i||n<0&&i.active==0)return!1;let s=i.active+n,r=n>0&&!i.ranges.some(o=>o.field==s+n);return t(e.update({selection:il(i.ranges,s),effects:mn.of(r?null:new bi(i.ranges,s)),scrollIntoView:!0})),!0}}const py=({state:n,dispatch:e})=>n.field(Yi,!1)?(e(n.update({effects:mn.of(null)})),!0):!1,my=yu(1),gy=yu(-1),Oy=[{key:"Tab",run:my,shift:gy},{key:"Escape",run:py}],Xa=A.define({combine(n){return n.length?n[0]:Oy}}),yy=Mt.highest(an.compute([Xa],n=>n.facet(Xa)));function lt(n,e){return{...e,apply:dy(n)}}const by=P.domEventHandlers({mousedown(n,e){let t=e.state.field(Yi,!1),i;if(!t||(i=e.posAtCoords({x:n.clientX,y:n.clientY}))==null)return!1;let s=t.ranges.find(r=>r.from<=i&&r.to>=i);return!s||s.field==t.active?!1:(e.dispatch({selection:il(t.ranges,s.field),effects:mn.of(t.ranges.some(r=>r.field>s.field)?new bi(t.ranges,s.field):null),scrollIntoView:!0}),!0)}}),Ki={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},zt=q.define({map(n,e){let t=e.mapPos(n,-1,de.TrackAfter);return t??void 0}}),nl=new class extends Nt{};nl.startSide=1;nl.endSide=-1;const bu=he.define({create(){return N.empty},update(n,e){if(n=n.map(e.changes),e.selection){let t=e.state.doc.lineAt(e.selection.main.head);n=n.update({filter:i=>i>=t.from&&i<=t.to})}for(let t of e.effects)t.is(zt)&&(n=n.update({add:[nl.range(t.value,t.value+1)]}));return n}});function Sy(){return[ky,bu]}const fr="()[]{}<>«»»«[]{}";function Su(n){for(let e=0;e{if((xy?n.composing:n.compositionStarted)||n.state.readOnly)return!1;let s=n.state.selection.main;if(i.length>2||i.length==2&&Ye(Te(i,0))==1||e!=s.from||t!=s.to)return!1;let r=Ty(n.state,i);return r?(n.dispatch(r),!0):!1}),wy=({state:n,dispatch:e})=>{if(n.readOnly)return!1;let i=xu(n,n.selection.main.head).brackets||Ki.brackets,s=null,r=n.changeByRange(o=>{if(o.empty){let l=Cy(n.doc,o.head);for(let a of i)if(a==l&&Bs(n.doc,o.head)==Su(Te(a,0)))return{changes:{from:o.head-a.length,to:o.head+a.length},range:b.cursor(o.head-a.length)}}return{range:s=o}});return s||e(n.update(r,{scrollIntoView:!0,userEvent:"delete.backward"})),!s},vy=[{key:"Backspace",run:wy}];function Ty(n,e){let t=xu(n,n.selection.main.head),i=t.brackets||Ki.brackets;for(let s of i){let r=Su(Te(s,0));if(e==s)return r==s?Ay(n,s,i.indexOf(s+s+s)>-1,t):Py(n,s,r,t.before||Ki.before);if(e==r&&ku(n,n.selection.main.from))return Qy(n,s,r)}return null}function ku(n,e){let t=!1;return n.field(bu).between(0,n.doc.length,i=>{i==e&&(t=!0)}),t}function Bs(n,e){let t=n.sliceString(e,e+2);return t.slice(0,Ye(Te(t,0)))}function Cy(n,e){let t=n.sliceString(e-2,e);return Ye(Te(t,0))==t.length?t:t.slice(1)}function Py(n,e,t,i){let s=null,r=n.changeByRange(o=>{if(!o.empty)return{changes:[{insert:e,from:o.from},{insert:t,from:o.to}],effects:zt.of(o.to+e.length),range:b.range(o.anchor+e.length,o.head+e.length)};let l=Bs(n.doc,o.head);return!l||/\s/.test(l)||i.indexOf(l)>-1?{changes:{insert:e+t,from:o.head},effects:zt.of(o.head+e.length),range:b.cursor(o.head+e.length)}:{range:s=o}});return s?null:n.update(r,{scrollIntoView:!0,userEvent:"input.type"})}function Qy(n,e,t){let i=null,s=n.changeByRange(r=>r.empty&&Bs(n.doc,r.head)==t?{changes:{from:r.head,to:r.head+t.length,insert:t},range:b.cursor(r.head+t.length)}:i={range:r});return i?null:n.update(s,{scrollIntoView:!0,userEvent:"input.type"})}function Ay(n,e,t,i){let s=i.stringPrefixes||Ki.stringPrefixes,r=null,o=n.changeByRange(l=>{if(!l.empty)return{changes:[{insert:e,from:l.from},{insert:e,from:l.to}],effects:zt.of(l.to+e.length),range:b.range(l.anchor+e.length,l.head+e.length)};let a=l.head,h=Bs(n.doc,a),c;if(h==e){if(Fa(n,a))return{changes:{insert:e+e,from:a},effects:zt.of(a+e.length),range:b.cursor(a+e.length)};if(ku(n,a)){let u=t&&n.sliceDoc(a,a+e.length*3)==e+e+e?e+e+e:e;return{changes:{from:a,to:a+u.length,insert:u},range:b.cursor(a+u.length)}}}else{if(t&&n.sliceDoc(a-2*e.length,a)==e+e&&(c=_a(n,a-2*e.length,s))>-1&&Fa(n,c))return{changes:{insert:e+e+e+e,from:a},effects:zt.of(a+e.length),range:b.cursor(a+e.length)};if(n.charCategorizer(a)(h)!=Y.Word&&_a(n,a,s)>-1&&!My(n,a,e,s))return{changes:{insert:e+e,from:a},effects:zt.of(a+e.length),range:b.cursor(a+e.length)}}return{range:r=l}});return r?null:n.update(o,{scrollIntoView:!0,userEvent:"input.type"})}function Fa(n,e){let t=ae(n).resolveInner(e+1);return t.parent&&t.from==e}function My(n,e,t,i){let s=ae(n).resolveInner(e,-1),r=i.reduce((o,l)=>Math.max(o,l.length),0);for(let o=0;o<5;o++){let l=n.sliceDoc(s.from,Math.min(s.to,s.from+t.length+r)),a=l.indexOf(t);if(!a||a>-1&&i.indexOf(l.slice(0,a))>-1){let c=s.firstChild;for(;c&&c.from==s.from&&c.to-c.from>t.length+a;){if(n.sliceDoc(c.to-t.length,c.to)==t)return!1;c=c.firstChild}return!0}let h=s.to==e&&s.parent;if(!h)break;s=h}return!1}function _a(n,e,t){let i=n.charCategorizer(e);if(i(n.sliceDoc(e-1,e))!=Y.Word)return e;for(let s of t){let r=e-s.length;if(n.sliceDoc(r,e)==s&&i(n.sliceDoc(r-1,r))!=Y.Word)return r}return-1}function Ry(n={}){return[ay,Ce,le.of(n),oy,Dy,Ou]}const wu=[{key:"Ctrl-Space",run:cr},{mac:"Alt-`",run:cr},{mac:"Alt-i",run:cr},{key:"Escape",run:iy},{key:"ArrowDown",run:zn(!0)},{key:"ArrowUp",run:zn(!1)},{key:"PageDown",run:zn(!0,"page")},{key:"PageUp",run:zn(!1,"page")},{key:"Enter",run:ty}],Dy=Mt.highest(an.computeN([le],n=>n.facet(le).defaultKeymap?[wu]:[]));class Ua{constructor(e,t,i){this.from=e,this.to=t,this.diagnostic=i}}class Bt{constructor(e,t,i){this.diagnostics=e,this.panel=t,this.selected=i}static init(e,t,i){let s=i.facet(Ji).markerFilter;s&&(e=s(e,i));let r=e.slice().sort((d,p)=>d.from-p.from||d.to-p.to),o=new gt,l=[],a=0,h=i.doc.iter(),c=0,f=i.doc.length;for(let d=0;;){let p=d==r.length?null:r[d];if(!p&&!l.length)break;let m,g;if(l.length)m=a,g=l.reduce((x,w)=>Math.min(x,w.to),p&&p.from>m?p.from:1e8);else{if(m=p.from,m>f)break;g=p.to,l.push(p),d++}for(;dx.from||x.to==m))l.push(x),d++,g=Math.min(x.to,g);else{g=Math.min(x.from,g);break}}g=Math.min(g,f);let y=!1;if(l.some(x=>x.from==m&&(x.to==g||g==f))&&(y=m==g,!y&&g-m<10)){let x=m-(c+h.value.length);x>0&&(h.next(x),c=m);for(let w=m;;){if(w>=g){y=!0;break}if(!h.lineBreak&&c+h.value.length>w)break;w=c+h.value.length,c+=h.value.length,h.next()}}let S=_y(l);if(y)o.add(m,m,R.widget({widget:new Vy(S),diagnostics:l.slice()}));else{let x=l.reduce((w,k)=>k.markClass?w+" "+k.markClass:w,"");o.add(m,g,R.mark({class:"cm-lintRange cm-lintRange-"+S+x,diagnostics:l.slice(),inclusiveEnd:l.some(w=>w.to>g)}))}if(a=g,a==f)break;for(let x=0;x{if(!(e&&o.diagnostics.indexOf(e)<0))if(!i)i=new Ua(s,r,e||o.diagnostics[0]);else{if(o.diagnostics.indexOf(i.diagnostic)<0)return!1;i=new Ua(i.from,r,i.diagnostic)}}),i}function Ey(n,e){let t=e.pos,i=e.end||t,s=n.state.facet(Ji).hideOn(n,t,i);if(s!=null)return s;let r=n.startState.doc.lineAt(e.pos);return!!(n.effects.some(o=>o.is(vu))||n.changes.touchesRange(r.from,Math.max(r.to,i)))}function qy(n,e){return n.field(Ee,!1)?e:e.concat(q.appendConfig.of(Uy))}const vu=q.define(),sl=q.define(),Tu=q.define(),Ee=he.define({create(){return new Bt(R.none,null,null)},update(n,e){if(e.docChanged&&n.diagnostics.size){let t=n.diagnostics.map(e.changes),i=null,s=n.panel;if(n.selected){let r=e.changes.mapPos(n.selected.from,1);i=mi(t,n.selected.diagnostic,r)||mi(t,null,r)}!t.size&&s&&e.state.facet(Ji).autoPanel&&(s=null),n=new Bt(t,s,i)}for(let t of e.effects)if(t.is(vu)){let i=e.state.facet(Ji).autoPanel?t.value.length?en.open:null:n.panel;n=Bt.init(t.value,i,e.state)}else t.is(sl)?n=new Bt(n.diagnostics,t.value?en.open:null,n.selected):t.is(Tu)&&(n=new Bt(n.diagnostics,n.panel,t.value));return n},provide:n=>[Xi.from(n,e=>e.panel),P.decorations.from(n,e=>e.diagnostics)]}),$y=R.mark({class:"cm-lintRange cm-lintRange-active"});function By(n,e,t){let{diagnostics:i}=n.state.field(Ee),s,r=-1,o=-1;i.between(e-(t<0?1:0),e+(t>0?1:0),(a,h,{spec:c})=>{if(e>=a&&e<=h&&(a==h||(e>a||t>0)&&(ePu(n,t,!1)))}const Ly=n=>{let e=n.state.field(Ee,!1);(!e||!e.panel)&&n.dispatch({effects:qy(n.state,[sl.of(!0)])});let t=Ni(n,en.open);return t&&t.dom.querySelector(".cm-panel-lint ul").focus(),!0},Ha=n=>{let e=n.state.field(Ee,!1);return!e||!e.panel?!1:(n.dispatch({effects:sl.of(!1)}),!0)},zy=n=>{let e=n.state.field(Ee,!1);if(!e)return!1;let t=n.state.selection.main,i=e.diagnostics.iter(t.to+1);return!i.value&&(i=e.diagnostics.iter(0),!i.value||i.from==t.from&&i.to==t.to)?!1:(n.dispatch({selection:{anchor:i.from,head:i.to},scrollIntoView:!0}),!0)},Iy=[{key:"Mod-Shift-m",run:Ly,preventDefault:!0},{key:"F8",run:zy}],Ji=A.define({combine(n){return{sources:n.map(e=>e.source).filter(e=>e!=null),...rt(n.map(e=>e.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null,hideOn:()=>null},{delay:Math.max,markerFilter:ja,tooltipFilter:ja,needsRefresh:(e,t)=>e?t?i=>e(i)||t(i):e:t,hideOn:(e,t)=>e?t?(i,s,r)=>e(i,s,r)||t(i,s,r):e:t,autoPanel:(e,t)=>e||t})}}});function ja(n,e){return n?e?(t,i)=>e(n(t,i),i):n:e}function Cu(n){let e=[];if(n)e:for(let{name:t}of n){for(let i=0;ir.toLowerCase()==s.toLowerCase())){e.push(s);continue e}}e.push("")}return e}function Pu(n,e,t){var i;let s=t?Cu(e.actions):[];return U("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},U("span",{class:"cm-diagnosticText"},e.renderMessage?e.renderMessage(n):e.message),(i=e.actions)===null||i===void 0?void 0:i.map((r,o)=>{let l=!1,a=d=>{if(d.preventDefault(),l)return;l=!0;let p=mi(n.state.field(Ee).diagnostics,e);p&&r.apply(n,p.from,p.to)},{name:h}=r,c=s[o]?h.indexOf(s[o]):-1,f=c<0?h:[h.slice(0,c),U("u",h.slice(c,c+1)),h.slice(c+1)],u=r.markClass?" "+r.markClass:"";return U("button",{type:"button",class:"cm-diagnosticAction"+u,onclick:a,onmousedown:a,"aria-label":` Action: ${h}${c<0?"":` (access key "${s[o]})"`}.`},f)}),e.source&&U("div",{class:"cm-diagnosticSource"},e.source))}class Vy extends ot{constructor(e){super(),this.sev=e}eq(e){return e.sev==this.sev}toDOM(){return U("span",{class:"cm-lintPoint cm-lintPoint-"+this.sev})}}class Ga{constructor(e,t){this.diagnostic=t,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=Pu(e,t,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class en{constructor(e){this.view=e,this.items=[];let t=s=>{if(s.keyCode==27)Ha(this.view),this.view.focus();else if(s.keyCode==38||s.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(s.keyCode==40||s.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(s.keyCode==36)this.moveSelection(0);else if(s.keyCode==35)this.moveSelection(this.items.length-1);else if(s.keyCode==13)this.view.focus();else if(s.keyCode>=65&&s.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:r}=this.items[this.selectedIndex],o=Cu(r.actions);for(let l=0;l{for(let r=0;rHa(this.view)},"×")),this.update()}get selectedIndex(){let e=this.view.state.field(Ee).selected;if(!e)return-1;for(let t=0;t{for(let c of h.diagnostics){if(o.has(c))continue;o.add(c);let f=-1,u;for(let d=i;di&&(this.items.splice(i,f-i),s=!0)),t&&u.diagnostic==t.diagnostic?u.dom.hasAttribute("aria-selected")||(u.dom.setAttribute("aria-selected","true"),r=u):u.dom.hasAttribute("aria-selected")&&u.dom.removeAttribute("aria-selected"),i++}});i({sel:r.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:l,panel:a})=>{let h=a.height/this.list.offsetHeight;l.topa.bottom&&(this.list.scrollTop+=(l.bottom-a.bottom)/h)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),s&&this.sync()}sync(){let e=this.list.firstChild;function t(){let i=e;e=i.nextSibling,i.remove()}for(let i of this.items)if(i.dom.parentNode==this.list){for(;e!=i.dom;)t();e=i.dom.nextSibling}else this.list.insertBefore(i.dom,e);for(;e;)t()}moveSelection(e){if(this.selectedIndex<0)return;let t=this.view.state.field(Ee),i=mi(t.diagnostics,this.items[e].diagnostic);i&&this.view.dispatch({selection:{anchor:i.from,head:i.to},scrollIntoView:!0,effects:Tu.of(i)})}static open(e){return new en(e)}}function Ny(n,e='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,${encodeURIComponent(n)}')`}function In(n){return Ny(``,'width="6" height="3"')}const Xy=P.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnostic-hint":{borderLeft:"5px solid #66d"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px",cursor:"pointer"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:In("#d11")},".cm-lintRange-warning":{backgroundImage:In("orange")},".cm-lintRange-info":{backgroundImage:In("#999")},".cm-lintRange-hint":{backgroundImage:In("#66d")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-lintPoint-hint":{"&:after":{borderBottomColor:"#66d"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}}});function Fy(n){return n=="error"?4:n=="warning"?3:n=="info"?2:1}function _y(n){let e="hint",t=1;for(let i of n){let s=Fy(i.severity);s>t&&(t=s,e=i.severity)}return e}const Uy=[Ee,P.decorations.compute([Ee],n=>{let{selected:e,panel:t}=n.field(Ee);return!e||!t||e.from==e.to?R.none:R.set([$y.range(e.from,e.to)])}),Pm(By,{hideOn:Ey}),Xy];var Za=function(e){e===void 0&&(e={});var{crosshairCursor:t=!1}=e,i=[];e.closeBracketsKeymap!==!1&&(i=i.concat(vy)),e.defaultKeymap!==!1&&(i=i.concat(l0)),e.searchKeymap!==!1&&(i=i.concat(E0)),e.historyKeymap!==!1&&(i=i.concat(pO)),e.foldKeymap!==!1&&(i=i.concat(vg)),e.completionKeymap!==!1&&(i=i.concat(wu)),e.lintKeymap!==!1&&(i=i.concat(Iy));var s=[];return e.lineNumbers!==!1&&s.push(Lm()),e.highlightActiveLineGutter!==!1&&s.push(Vm()),e.highlightSpecialChars!==!1&&s.push(im()),e.history!==!1&&s.push(rO()),e.foldGutter!==!1&&s.push(Qg()),e.drawSelection!==!1&&s.push(_p()),e.dropCursor!==!1&&s.push(Zp()),e.allowMultipleSelections!==!1&&s.push(I.allowMultipleSelections.of(!0)),e.indentOnInput!==!1&&s.push(mg()),e.syntaxHighlighting!==!1&&s.push(df(Dg,{fallback:!0})),e.bracketMatching!==!1&&s.push(zg()),e.closeBrackets!==!1&&s.push(Sy()),e.autocompletion!==!1&&s.push(Ry()),e.rectangularSelection!==!1&&s.push(gm()),t!==!1&&s.push(bm()),e.highlightActiveLine!==!1&&s.push(am()),e.highlightSelectionMatches!==!1&&s.push(p0()),e.tabSize&&typeof e.tabSize=="number"&&s.push(cn.of(" ".repeat(e.tabSize))),s.concat([an.of(i.flat())]).filter(Boolean)};const Hy="#e5c07b",Ya="#e06c75",jy="#56b6c2",Gy="#ffffff",Kn="#abb2bf",Oo="#7d8799",Zy="#61afef",Yy="#98c379",Ka="#d19a66",Ky="#c678dd",Jy="#21252b",Ja="#2c313a",eh="#282c34",ur="#353a42",e1="#3E4451",th="#528bff",t1=P.theme({"&":{color:Kn,backgroundColor:eh},".cm-content":{caretColor:th},".cm-cursor, .cm-dropCursor":{borderLeftColor:th},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:e1},".cm-panels":{backgroundColor:Jy,color:Kn},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:eh,color:Oo,border:"none"},".cm-activeLineGutter":{backgroundColor:Ja},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:ur},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:ur,borderBottomColor:ur},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:Ja,color:Kn}}},{dark:!0}),i1=un.define([{tag:O.keyword,color:Ky},{tag:[O.name,O.deleted,O.character,O.propertyName,O.macroName],color:Ya},{tag:[O.function(O.variableName),O.labelName],color:Zy},{tag:[O.color,O.constant(O.name),O.standard(O.name)],color:Ka},{tag:[O.definition(O.name),O.separator],color:Kn},{tag:[O.typeName,O.className,O.number,O.changed,O.annotation,O.modifier,O.self,O.namespace],color:Hy},{tag:[O.operator,O.operatorKeyword,O.url,O.escape,O.regexp,O.link,O.special(O.string)],color:jy},{tag:[O.meta,O.comment],color:Oo},{tag:O.strong,fontWeight:"bold"},{tag:O.emphasis,fontStyle:"italic"},{tag:O.strikethrough,textDecoration:"line-through"},{tag:O.link,color:Oo,textDecoration:"underline"},{tag:O.heading,fontWeight:"bold",color:Ya},{tag:[O.atom,O.bool,O.special(O.variableName)],color:Ka},{tag:[O.processingInstruction,O.string,O.inserted],color:Yy},{tag:O.invalid,color:Gy}]),n1=[t1,df(i1)];var s1=P.theme({"&":{backgroundColor:"#fff"}},{dark:!1}),r1=function(e){e===void 0&&(e={});var{indentWithTab:t=!0,editable:i=!0,readOnly:s=!1,theme:r="light",placeholder:o="",basicSetup:l=!0}=e,a=[];switch(t&&a.unshift(an.of([a0])),l&&(typeof l=="boolean"?a.unshift(Za()):a.unshift(Za(l))),o&&a.unshift(um(o)),r){case"light":a.push(s1);break;case"dark":a.push(n1);break;case"none":break;default:a.push(r);break}return i===!1&&a.push(P.editable.of(!1)),s&&a.push(I.readOnly.of(!0)),[...a]},o1=n=>({line:n.state.doc.lineAt(n.state.selection.main.from),lineCount:n.state.doc.lines,lineBreak:n.state.lineBreak,length:n.state.doc.length,readOnly:n.state.readOnly,tabSize:n.state.tabSize,selection:n.state.selection,selectionAsSingle:n.state.selection.asSingle().main,ranges:n.state.selection.ranges,selectionCode:n.state.sliceDoc(n.state.selection.main.from,n.state.selection.main.to),selections:n.state.selection.ranges.map(e=>n.state.sliceDoc(e.from,e.to)),selectedText:n.state.selection.ranges.some(e=>!e.empty)});class l1{constructor(e,t){this.timeLeftMS=void 0,this.timeoutMS=void 0,this.isCancelled=!1,this.isTimeExhausted=!1,this.callbacks=[],this.timeLeftMS=t,this.timeoutMS=t,this.callbacks.push(e)}tick(){if(!this.isCancelled&&!this.isTimeExhausted&&(this.timeLeftMS--,this.timeLeftMS<=0)){this.isTimeExhausted=!0;var e=this.callbacks.slice();this.callbacks.length=0,e.forEach(t=>{try{t()}catch(i){console.error("TimeoutLatch callback error:",i)}})}}cancel(){this.isCancelled=!0,this.callbacks.length=0}reset(){this.timeLeftMS=this.timeoutMS,this.isCancelled=!1,this.isTimeExhausted=!1}get isDone(){return this.isCancelled||this.isTimeExhausted}}class ih{constructor(){this.interval=null,this.latches=new Set}add(e){this.latches.add(e),this.start()}remove(e){this.latches.delete(e),this.latches.size===0&&this.stop()}start(){this.interval===null&&(this.interval=setInterval(()=>{this.latches.forEach(e=>{e.tick(),e.isDone&&this.remove(e)})},1))}stop(){this.interval!==null&&(clearInterval(this.interval),this.interval=null)}}var dr=null,a1=()=>typeof window>"u"?new ih:(dr||(dr=new ih),dr),nh=st.define(),h1=200,c1=[];function f1(n){var{value:e,selection:t,onChange:i,onStatistics:s,onCreateEditor:r,onUpdate:o,extensions:l=c1,autoFocus:a,theme:h="light",height:c=null,minHeight:f=null,maxHeight:u=null,width:d=null,minWidth:p=null,maxWidth:m=null,placeholder:g="",editable:y=!0,readOnly:S=!1,indentWithTab:x=!0,basicSetup:w=!0,root:k,initialState:v}=n,[T,E]=Se.useState(),[M,z]=Se.useState(),[$,D]=Se.useState(),B=Se.useState(()=>({current:null}))[0],W=Se.useState(()=>({current:null}))[0],X=P.theme({"&":{height:c,minHeight:f,maxHeight:u,width:d,minWidth:p,maxWidth:m},"& .cm-scroller":{height:"100% !important"}}),ne=P.updateListener.of(F=>{if(F.docChanged&&typeof i=="function"&&!F.transactions.some(ge=>ge.annotation(nh))){B.current?B.current.reset():(B.current=new l1(()=>{if(W.current){var ge=W.current;W.current=null,ge()}B.current=null},h1),a1().add(B.current));var ee=F.state.doc,ce=ee.toString();i(ce,F)}s&&s(o1(F))}),oe=r1({theme:h,editable:y,readOnly:S,placeholder:g,indentWithTab:x,basicSetup:w}),me=[ne,X,...oe];return o&&typeof o=="function"&&me.push(P.updateListener.of(o)),me=me.concat(l),Se.useLayoutEffect(()=>{if(T&&!$){var F={doc:e,selection:t,extensions:me},ee=v?I.fromJSON(v.json,F,v.fields):I.create(F);if(D(ee),!M){var ce=new P({state:ee,parent:T,root:k});z(ce),r&&r(ce,ee)}}return()=>{M&&(D(void 0),z(void 0))}},[T,$]),Se.useEffect(()=>{n.container&&E(n.container)},[n.container]),Se.useEffect(()=>()=>{M&&(M.destroy(),z(void 0)),B.current&&(B.current.cancel(),B.current=null)},[M]),Se.useEffect(()=>{a&&M&&M.focus()},[a,M]),Se.useEffect(()=>{M&&M.dispatch({effects:q.reconfigure.of(me)})},[h,l,c,f,u,d,p,m,g,y,S,x,w,i,o]),Se.useEffect(()=>{if(e!==void 0){var F=M?M.state.doc.toString():"";if(M&&e!==F){var ee=B.current&&!B.current.isDone,ce=()=>{M&&e!==M.state.doc.toString()&&M.dispatch({changes:{from:0,to:M.state.doc.toString().length,insert:e||""},annotations:[nh.of(!0)]})};ee?W.current=ce:ce()}}},[e,M]),{state:$,setState:D,view:M,setView:z,container:T,setContainer:E}}var u1=["className","value","selection","extensions","onChange","onStatistics","onCreateEditor","onUpdate","autoFocus","theme","height","minHeight","maxHeight","width","minWidth","maxWidth","basicSetup","placeholder","indentWithTab","editable","readOnly","root","initialState"],d1=Se.forwardRef((n,e)=>{var{className:t,value:i="",selection:s,extensions:r=[],onChange:o,onStatistics:l,onCreateEditor:a,onUpdate:h,autoFocus:c,theme:f="light",height:u,minHeight:d,maxHeight:p,width:m,minWidth:g,maxWidth:y,basicSetup:S,placeholder:x,indentWithTab:w,editable:k,readOnly:v,root:T,initialState:E}=n,M=Lu(n,u1),z=Se.useRef(null),{state:$,view:D,container:B,setContainer:W}=f1({root:T,value:i,autoFocus:c,theme:f,height:u,minHeight:d,maxHeight:p,width:m,minWidth:g,maxWidth:y,basicSetup:S,placeholder:x,indentWithTab:w,editable:k,readOnly:v,selection:s,onChange:o,onStatistics:l,onCreateEditor:a,onUpdate:h,extensions:r,initialState:E});Se.useImperativeHandle(e,()=>({editor:z.current,state:$,view:D}),[z,B,$,D]);var X=Se.useCallback(oe=>{z.current=oe,W(oe)},[W]);if(typeof i!="string")throw new Error("value must be typeof string but got "+typeof i);var ne=typeof f=="string"?"cm-theme-"+f:"cm-theme";return Iu.jsx("div",zu({ref:X,className:""+ne+(t?" "+t:"")},M))});d1.displayName="CodeMirror";var sh={};class ks{constructor(e,t,i,s,r,o,l,a,h,c=0,f){this.p=e,this.stack=t,this.state=i,this.reducePos=s,this.pos=r,this.score=o,this.buffer=l,this.bufferBase=a,this.curContext=h,this.lookAhead=c,this.parent=f}toString(){return`[${this.stack.filter((e,t)=>t%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,t,i=0){let s=e.parser.context;return new ks(e,[],t,i,i,0,[],0,s?new rh(s,s.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,t){this.stack.push(this.state,t,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var t;let i=e>>19,s=e&65535,{parser:r}=this.p,o=this.reducePos=2e3&&!(!((t=this.p.parser.nodeSet.types[s])===null||t===void 0)&&t.isAnonymous)&&(h==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=c):this.p.lastBigReductionSizea;)this.stack.pop();this.reduceContext(s,h)}storeNode(e,t,i,s=4,r=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]0&&o.buffer[l-4]==0&&o.buffer[l-1]>-1){if(t==i)return;if(o.buffer[l-2]>=t){o.buffer[l-2]=i;return}}}if(!r||this.pos==i)this.buffer.push(e,t,i,s);else{let o=this.buffer.length;if(o>0&&(this.buffer[o-4]!=0||this.buffer[o-1]<0)){let l=!1;for(let a=o;a>0&&this.buffer[a-2]>i;a-=4)if(this.buffer[a-1]>=0){l=!0;break}if(l)for(;o>0&&this.buffer[o-2]>i;)this.buffer[o]=this.buffer[o-4],this.buffer[o+1]=this.buffer[o-3],this.buffer[o+2]=this.buffer[o-2],this.buffer[o+3]=this.buffer[o-1],o-=4,s>4&&(s-=4)}this.buffer[o]=e,this.buffer[o+1]=t,this.buffer[o+2]=i,this.buffer[o+3]=s}}shift(e,t,i,s){if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let r=e,{parser:o}=this.p;(s>this.pos||t<=o.maxNode)&&(this.pos=s,o.stateFlag(r,1)||(this.reducePos=s)),this.pushState(r,i),this.shiftContext(t,i),t<=o.maxNode&&this.buffer.push(t,i,s,4)}else this.pos=s,this.shiftContext(t,i),t<=this.p.parser.maxNode&&this.buffer.push(t,i,s,4)}apply(e,t,i,s){e&65536?this.reduce(e):this.shift(e,t,i,s)}useNode(e,t){let i=this.p.reused.length-1;(i<0||this.p.reused[i]!=e)&&(this.p.reused.push(e),i++);let s=this.pos;this.reducePos=this.pos=s+e.length,this.pushState(t,s),this.buffer.push(i,s,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,t=e.buffer.length;for(;t>0&&e.buffer[t-2]>e.reducePos;)t-=4;let i=e.buffer.slice(t),s=e.bufferBase+t;for(;e&&s==e.bufferBase;)e=e.parent;return new ks(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,i,s,this.curContext,this.lookAhead,e)}recoverByDelete(e,t){let i=e<=this.p.parser.maxNode;i&&this.storeNode(e,this.pos,t,4),this.storeNode(0,this.pos,t,i?8:4),this.pos=this.reducePos=t,this.score-=190}canShift(e){for(let t=new p1(this);;){let i=this.p.parser.stateSlot(t.state,4)||this.p.parser.hasAction(t.state,e);if(i==0)return!1;if((i&65536)==0)return!0;t.reduce(i)}}recoverByInsert(e){if(this.stack.length>=300)return[];let t=this.p.parser.nextStates(this.state);if(t.length>8||this.stack.length>=120){let s=[];for(let r=0,o;ra&1&&l==o)||s.push(t[r],o)}t=s}let i=[];for(let s=0;s>19,s=t&65535,r=this.stack.length-i*3;if(r<0||e.getGoto(this.stack[r],s,!1)<0){let o=this.findForcedReduction();if(o==null)return!1;t=o}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(t),!0}findForcedReduction(){let{parser:e}=this.p,t=[],i=(s,r)=>{if(!t.includes(s))return t.push(s),e.allActions(s,o=>{if(!(o&393216))if(o&65536){let l=(o>>19)-r;if(l>1){let a=o&65535,h=this.stack.length-l*3;if(h>=0&&e.getGoto(this.stack[h],a,!1)>=0)return l<<19|65536|a}}else{let l=i(o,r+1);if(l!=null)return l}})};return i(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let t=0;tthis.lookAhead&&(this.emitLookAhead(),this.lookAhead=e)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}}class rh{constructor(e,t){this.tracker=e,this.context=t,this.hash=e.strict?e.hash(t):0}}class p1{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let t=e&65535,i=e>>19;i==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(i-1)*3;let s=this.start.p.parser.getGoto(this.stack[this.base-3],t,!0);this.state=s}}class ws{constructor(e,t,i){this.stack=e,this.pos=t,this.index=i,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,t=e.bufferBase+e.buffer.length){return new ws(e,t,t-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new ws(this.stack,this.pos,this.index)}}function Vn(n,e=Uint16Array){if(typeof n!="string")return n;let t=null;for(let i=0,s=0;i=92&&o--,o>=34&&o--;let a=o-32;if(a>=46&&(a-=46,l=!0),r+=a,l)break;r*=46}t?t[s++]=r:t=new e(r)}return t}class Jn{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const oh=new Jn;class m1{constructor(e,t){this.input=e,this.ranges=t,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=oh,this.rangeIndex=0,this.pos=this.chunkPos=t[0].from,this.range=t[0],this.end=t[t.length-1].to,this.readNext()}resolveOffset(e,t){let i=this.range,s=this.rangeIndex,r=this.pos+e;for(;ri.to:r>=i.to;){if(s==this.ranges.length-1)return null;let o=this.ranges[++s];r+=o.from-i.to,i=o}return r}clipPos(e){if(e>=this.range.from&&ee)return Math.max(e,t.from);return this.end}peek(e){let t=this.chunkOff+e,i,s;if(t>=0&&t=this.chunk2Pos&&il.to&&(this.chunk2=this.chunk2.slice(0,l.to-i)),s=this.chunk2.charCodeAt(0)}}return i>=this.token.lookAhead&&(this.token.lookAhead=i+1),s}acceptToken(e,t=0){let i=t?this.resolveOffset(t,-1):this.pos;if(i==null||i=this.chunk2Pos&&this.posthis.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,t){if(t?(this.token=t,t.start=e,t.lookAhead=e+1,t.value=t.extended=-1):this.token=oh,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e=this.chunkPos&&t<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,t-this.chunkPos);if(e>=this.chunk2Pos&&t<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,t-this.chunk2Pos);if(e>=this.range.from&&t<=this.range.to)return this.input.read(e,t);let i="";for(let s of this.ranges){if(s.from>=t)break;s.to>e&&(i+=this.input.read(Math.max(s.from,e),Math.min(s.to,t)))}return i}}class oi{constructor(e,t){this.data=e,this.id=t}token(e,t){let{parser:i}=t.p;g1(this.data,e,t,this.id,i.data,i.tokenPrecTable)}}oi.prototype.contextual=oi.prototype.fallback=oi.prototype.extend=!1;oi.prototype.fallback=oi.prototype.extend=!1;class Ws{constructor(e,t={}){this.token=e,this.contextual=!!t.contextual,this.fallback=!!t.fallback,this.extend=!!t.extend}}function g1(n,e,t,i,s,r){let o=0,l=1<0){let p=n[d];if(a.allows(p)&&(e.token.value==-1||e.token.value==p||O1(p,e.token.value,s,r))){e.acceptToken(p);break}}let c=e.next,f=0,u=n[o+2];if(e.next<0&&u>f&&n[h+u*3-3]==65535){o=n[h+u*3-1];continue e}for(;f>1,p=h+d+(d<<1),m=n[p],g=n[p+1]||65536;if(c=g)f=d+1;else{o=n[p+2],e.advance();continue e}}break}}function lh(n,e,t){for(let i=e,s;(s=n[i])!=65535;i++)if(s==t)return i-e;return-1}function O1(n,e,t,i){let s=lh(t,i,e);return s<0||lh(t,i,n)e)&&!i.type.isError)return t<0?Math.max(0,Math.min(i.to-1,e-25)):Math.min(n.length,Math.max(i.from+1,e+25));if(t<0?i.prevSibling():i.nextSibling())break;if(!i.parent())return t<0?0:n.length}}class y1{constructor(e,t){this.fragments=e,this.nodeSet=t,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?ah(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?ah(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(ee)return this.nextStart=o,null;if(r instanceof j){if(o==e){if(o=Math.max(this.safeFrom,e)&&(this.trees.push(r),this.start.push(o),this.index.push(0))}else this.index[t]++,this.nextStart=o+r.length}}}class b1{constructor(e,t){this.stream=t,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(i=>new Jn)}getActions(e){let t=0,i=null,{parser:s}=e.p,{tokenizers:r}=s,o=s.stateSlot(e.state,3),l=e.curContext?e.curContext.hash:0,a=0;for(let h=0;hf.end+25&&(a=Math.max(f.lookAhead,a)),f.value!=0)){let u=t;if(f.extended>-1&&(t=this.addActions(e,f.extended,f.end,t)),t=this.addActions(e,f.value,f.end,t),!c.extend&&(i=f,t>u))break}}for(;this.actions.length>t;)this.actions.pop();return a&&e.setLookAhead(a),!i&&e.pos==this.stream.end&&(i=new Jn,i.value=e.p.parser.eofTerm,i.start=i.end=e.pos,t=this.addActions(e,i.value,i.end,t)),this.mainToken=i,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let t=new Jn,{pos:i,p:s}=e;return t.start=i,t.end=Math.min(i+1,s.stream.end),t.value=i==s.stream.end?s.parser.eofTerm:0,t}updateCachedToken(e,t,i){let s=this.stream.clipPos(i.pos);if(t.token(this.stream.reset(s,e),i),e.value>-1){let{parser:r}=i.p;for(let o=0;o=0&&i.p.parser.dialect.allows(l>>1)){(l&1)==0?e.value=l>>1:e.extended=l>>1;break}}}else e.value=0,e.end=this.stream.clipPos(s+1)}putAction(e,t,i,s){for(let r=0;re.bufferLength*4?new y1(i,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,t=this.minStackPos,i=this.stacks=[],s,r;if(this.bigReductionCount>300&&e.length==1){let[o]=e;for(;o.forceReduce()&&o.stack.length&&o.stack[o.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let o=0;ot)i.push(l);else{if(this.advanceStack(l,i,e))continue;{s||(s=[],r=[]),s.push(l);let a=this.tokens.getMainToken(l);r.push(a.value,a.end)}}break}}if(!i.length){let o=s&&w1(s);if(o)return Re&&console.log("Finish with "+this.stackID(o)),this.stackToTree(o);if(this.parser.strict)throw Re&&s&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+t);this.recovering||(this.recovering=5)}if(this.recovering&&s){let o=this.stoppedAt!=null&&s[0].pos>this.stoppedAt?s[0]:this.runRecovery(s,r,i);if(o)return Re&&console.log("Force-finish "+this.stackID(o)),this.stackToTree(o.forceAll())}if(this.recovering){let o=this.recovering==1?1:this.recovering*3;if(i.length>o)for(i.sort((l,a)=>a.score-l.score);i.length>o;)i.pop();i.some(l=>l.reducePos>t)&&this.recovering--}else if(i.length>1){e:for(let o=0;o500&&h.buffer.length>500)if((l.score-h.score||l.buffer.length-h.buffer.length)>0)i.splice(a--,1);else{i.splice(o--,1);continue e}}}i.length>12&&i.splice(12,i.length-12)}this.minStackPos=i[0].pos;for(let o=1;o ":"";if(this.stoppedAt!=null&&s>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let h=e.curContext&&e.curContext.tracker.strict,c=h?e.curContext.hash:0;for(let f=this.fragments.nodeAt(s);f;){let u=this.parser.nodeSet.types[f.type.id]==f.type?r.getGoto(e.state,f.type.id):-1;if(u>-1&&f.length&&(!h||(f.prop(L.contextHash)||0)==c))return e.useNode(f,u),Re&&console.log(o+this.stackID(e)+` (via reuse of ${r.getName(f.type.id)})`),!0;if(!(f instanceof j)||f.children.length==0||f.positions[0]>0)break;let d=f.children[0];if(d instanceof j&&f.positions[0]==0)f=d;else break}}let l=r.stateSlot(e.state,4);if(l>0)return e.reduce(l),Re&&console.log(o+this.stackID(e)+` (via always-reduce ${r.getName(l&65535)})`),!0;if(e.stack.length>=8400)for(;e.stack.length>6e3&&e.forceReduce(););let a=this.tokens.getActions(e);for(let h=0;hs?t.push(p):i.push(p)}return!1}advanceFully(e,t){let i=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>i)return hh(e,t),!0}}runRecovery(e,t,i){let s=null,r=!1;for(let o=0;o ":"";if(l.deadEnd&&(r||(r=!0,l.restart(),Re&&console.log(c+this.stackID(l)+" (restarted)"),this.advanceFully(l,i))))continue;let f=l.split(),u=c;for(let d=0;d<10&&f.forceReduce()&&(Re&&console.log(u+this.stackID(f)+" (via force-reduce)"),!this.advanceFully(f,i));d++)Re&&(u=this.stackID(f)+" -> ");for(let d of l.recoverByInsert(a))Re&&console.log(c+this.stackID(d)+" (via recover-insert)"),this.advanceFully(d,i);this.stream.end>l.pos?(h==l.pos&&(h++,a=0),l.recoverByDelete(a,h),Re&&console.log(c+this.stackID(l)+` (via recover-delete ${this.parser.getName(a)})`),hh(l,i)):(!s||s.scoren;class k1{constructor(e){this.start=e.start,this.shift=e.shift||mr,this.reduce=e.reduce||mr,this.reuse=e.reuse||mr,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}}class tn extends Wo{constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (14)`);let t=e.nodeNames.split(" ");this.minRepeatTerm=t.length;for(let l=0;le.topRules[l][1]),s=[];for(let l=0;l=0)r(c,a,l[h++]);else{let f=l[h+-c];for(let u=-c;u>0;u--)r(l[h++],a,f);h++}}}this.nodeSet=new Qs(t.map((l,a)=>ve.define({name:a>=this.minRepeatTerm?void 0:l,id:a,props:s[a],top:i.indexOf(a)>-1,error:a==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(a)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=Uc;let o=Vn(e.tokenData);this.context=e.context,this.specializerSpecs=e.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let l=0;ltypeof l=="number"?new oi(o,l):l),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,t,i){let s=new S1(this,e,t,i);for(let r of this.wrappers)s=r(s,e,t,i);return s}getGoto(e,t,i=!1){let s=this.goto;if(t>=s[0])return-1;for(let r=s[t+1];;){let o=s[r++],l=o&1,a=s[r++];if(l&&i)return a;for(let h=r+(o>>1);r0}validAction(e,t){return!!this.allActions(e,i=>i==t?!0:null)}allActions(e,t){let i=this.stateSlot(e,4),s=i?t(i):void 0;for(let r=this.stateSlot(e,1);s==null;r+=3){if(this.data[r]==65535)if(this.data[r+1]==1)r=ut(this.data,r+2);else break;s=t(ut(this.data,r+1))}return s}nextStates(e){let t=[];for(let i=this.stateSlot(e,1);;i+=3){if(this.data[i]==65535)if(this.data[i+1]==1)i=ut(this.data,i+2);else break;if((this.data[i+2]&1)==0){let s=this.data[i+1];t.some((r,o)=>o&1&&r==s)||t.push(this.data[i],s)}}return t}configure(e){let t=Object.assign(Object.create(tn.prototype),this);if(e.props&&(t.nodeSet=this.nodeSet.extend(...e.props)),e.top){let i=this.topRules[e.top];if(!i)throw new RangeError(`Invalid top rule name ${e.top}`);t.top=i}return e.tokenizers&&(t.tokenizers=this.tokenizers.map(i=>{let s=e.tokenizers.find(r=>r.from==i);return s?s.to:i})),e.specializers&&(t.specializers=this.specializers.slice(),t.specializerSpecs=this.specializerSpecs.map((i,s)=>{let r=e.specializers.find(l=>l.from==i.external);if(!r)return i;let o=Object.assign(Object.assign({},i),{external:r.to});return t.specializers[s]=ch(o),o})),e.contextTracker&&(t.context=e.contextTracker),e.dialect&&(t.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(t.strict=e.strict),e.wrap&&(t.wrappers=t.wrappers.concat(e.wrap)),e.bufferLength!=null&&(t.bufferLength=e.bufferLength),t}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let t=this.dynamicPrecedences;return t==null?0:t[e]||0}parseDialect(e){let t=Object.keys(this.dialects),i=t.map(()=>!1);if(e)for(let r of e.split(" ")){let o=t.indexOf(r);o>=0&&(i[o]=!0)}let s=null;for(let r=0;ri)&&t.p.parser.stateFlag(t.state,2)&&(!e||e.scoren.external(t,i)<<1|e}return n.get}const v1=1,Qu=194,Au=195,T1=196,fh=197,C1=198,P1=199,Q1=200,A1=2,Mu=3,uh=201,M1=24,R1=25,D1=49,E1=50,q1=55,$1=56,B1=57,W1=59,L1=60,z1=61,I1=62,V1=63,N1=65,X1=238,F1=71,_1=241,U1=242,H1=243,j1=244,G1=245,Z1=246,Y1=247,K1=248,Ru=72,J1=249,eb=250,tb=251,ib=252,nb=253,sb=254,rb=255,ob=256,lb=73,ab=77,hb=263,cb=112,fb=130,ub=151,db=152,pb=155,jt=10,nn=13,rl=32,Ls=9,ol=35,mb=40,gb=46,yo=123,dh=125,Du=39,Eu=34,ph=92,Ob=111,yb=120,bb=78,Sb=117,xb=85,kb=new Set([R1,D1,E1,hb,N1,fb,$1,B1,X1,I1,V1,Ru,lb,ab,L1,z1,ub,db,pb,cb]);function gr(n){return n==jt||n==nn}function Or(n){return n>=48&&n<=57||n>=65&&n<=70||n>=97&&n<=102}const wb=new Ws((n,e)=>{let t;if(n.next<0)n.acceptToken(P1);else if(e.context.flags&es)gr(n.next)&&n.acceptToken(C1,1);else if(((t=n.peek(-1))<0||gr(t))&&e.canShift(fh)){let i=0;for(;n.next==rl||n.next==Ls;)n.advance(),i++;(n.next==jt||n.next==nn||n.next==ol)&&n.acceptToken(fh,-i)}else gr(n.next)&&n.acceptToken(T1,1)},{contextual:!0}),vb=new Ws((n,e)=>{let t=e.context;if(t.flags)return;let i=n.peek(-1);if(i==jt||i==nn){let s=0,r=0;for(;;){if(n.next==rl)s++;else if(n.next==Ls)s+=8-s%8;else break;n.advance(),r++}s!=t.indent&&n.next!=jt&&n.next!=nn&&n.next!=ol&&(s[n,e|qu])),Pb=new k1({start:Tb,reduce(n,e,t,i){return n.flags&es&&kb.has(e)||(e==F1||e==Ru)&&n.flags&qu?n.parent:n},shift(n,e,t,i){return e==Qu?new ts(n,Cb(i.read(i.pos,t.pos)),0):e==Au?n.parent:e==M1||e==q1||e==W1||e==Mu?new ts(n,0,es):mh.has(e)?new ts(n,0,mh.get(e)|n.flags&es):n},hash(n){return n.hash}}),Qb=new Ws(n=>{for(let e=0;e<5;e++){if(n.next!="print".charCodeAt(e))return;n.advance()}if(!/\w/.test(String.fromCharCode(n.next)))for(let e=0;;e++){let t=n.peek(e);if(!(t==rl||t==Ls)){t!=mb&&t!=gb&&t!=jt&&t!=nn&&t!=ol&&n.acceptToken(v1);return}}}),Ab=new Ws((n,e)=>{let{flags:t}=e.context,i=t&at?Eu:Du,s=(t&ht)>0,r=!(t&ct),o=(t&ft)>0,l=n.pos;for(;!(n.next<0);)if(o&&n.next==yo)if(n.peek(1)==yo)n.advance(2);else{if(n.pos==l){n.acceptToken(Mu,1);return}break}else if(r&&n.next==ph){if(n.pos==l){n.advance();let a=n.next;a>=0&&(n.advance(),Mb(n,a)),n.acceptToken(A1);return}break}else if(n.next==ph&&!r&&n.peek(1)>-1)n.advance(2);else if(n.next==i&&(!s||n.peek(1)==i&&n.peek(2)==i)){if(n.pos==l){n.acceptToken(uh,s?3:1);return}break}else if(n.next==jt){if(s)n.advance();else if(n.pos==l){n.acceptToken(uh);return}break}else n.advance();n.pos>l&&n.acceptToken(Q1)});function Mb(n,e){if(e==Ob)for(let t=0;t<2&&n.next>=48&&n.next<=55;t++)n.advance();else if(e==yb)for(let t=0;t<2&&Or(n.next);t++)n.advance();else if(e==Sb)for(let t=0;t<4&&Or(n.next);t++)n.advance();else if(e==xb)for(let t=0;t<8&&Or(n.next);t++)n.advance();else if(e==bb&&n.next==yo){for(n.advance();n.next>=0&&n.next!=dh&&n.next!=Du&&n.next!=Eu&&n.next!=jt;)n.advance();n.next==dh&&n.advance()}}const Rb=Lo({'async "*" "**" FormatConversion FormatSpec':O.modifier,"for while if elif else try except finally return raise break continue with pass assert await yield match case":O.controlKeyword,"in not and or is del":O.operatorKeyword,"from def class global nonlocal lambda":O.definitionKeyword,import:O.moduleKeyword,"with as print":O.keyword,Boolean:O.bool,None:O.null,VariableName:O.variableName,"CallExpression/VariableName":O.function(O.variableName),"FunctionDefinition/VariableName":O.function(O.definition(O.variableName)),"ClassDefinition/VariableName":O.definition(O.className),PropertyName:O.propertyName,"CallExpression/MemberExpression/PropertyName":O.function(O.propertyName),Comment:O.lineComment,Number:O.number,String:O.string,FormatString:O.special(O.string),Escape:O.escape,UpdateOp:O.updateOperator,"ArithOp!":O.arithmeticOperator,BitOp:O.bitwiseOperator,CompareOp:O.compareOperator,AssignOp:O.definitionOperator,Ellipsis:O.punctuation,At:O.meta,"( )":O.paren,"[ ]":O.squareBracket,"{ }":O.brace,".":O.derefOperator,", ;":O.separator}),Db={__proto__:null,await:44,or:54,and:56,in:60,not:62,is:64,if:70,else:72,lambda:76,yield:94,from:96,async:102,for:104,None:162,True:164,False:164,del:178,pass:182,break:186,continue:190,return:194,raise:202,import:206,as:208,global:212,nonlocal:214,assert:218,type:223,elif:236,while:240,try:246,except:248,finally:250,with:254,def:258,class:268,match:279,case:285},Eb=tn.deserialize({version:14,states:"##jO`QeOOP$}OSOOO&WQtO'#HUOOQS'#Co'#CoOOQS'#Cp'#CpO'vQdO'#CnO*UQtO'#HTOOQS'#HU'#HUOOQS'#DU'#DUOOQS'#HT'#HTO*rQdO'#D_O+VQdO'#DfO+gQdO'#DjO+zOWO'#DuO,VOWO'#DvO.[QtO'#GuOOQS'#Gu'#GuO'vQdO'#GtO0ZQtO'#GtOOQS'#Eb'#EbO0rQdO'#EcOOQS'#Gs'#GsO0|QdO'#GrOOQV'#Gr'#GrO1XQdO'#FYOOQS'#G^'#G^O1^QdO'#FXOOQV'#IS'#ISOOQV'#Gq'#GqOOQV'#Fq'#FqQ`QeOOO'vQdO'#CqO1lQdO'#C}O1sQdO'#DRO2RQdO'#HYO2cQtO'#EVO'vQdO'#EWOOQS'#EY'#EYOOQS'#E['#E[OOQS'#E^'#E^O2wQdO'#E`O3_QdO'#EdO3rQdO'#EfO3zQtO'#EfO1XQdO'#EiO0rQdO'#ElO1XQdO'#EnO0rQdO'#EtO0rQdO'#EwO4VQdO'#EyO4^QdO'#FOO4iQdO'#EzO0rQdO'#FOO1XQdO'#FQO1XQdO'#FVO4nQdO'#F[P4uOdO'#GpPOOO)CBd)CBdOOQS'#Ce'#CeOOQS'#Cf'#CfOOQS'#Cg'#CgOOQS'#Ch'#ChOOQS'#Ci'#CiOOQS'#Cj'#CjOOQS'#Cl'#ClO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO5TQdO'#DoOOQS,5:Y,5:YO5hQdO'#HdOOQS,5:],5:]O5uQ!fO,5:]O5zQtO,59YO1lQdO,59bO1lQdO,59bO1lQdO,59bO8jQdO,59bO8oQdO,59bO8vQdO,59jO8}QdO'#HTO:TQdO'#HSOOQS'#HS'#HSOOQS'#D['#D[O:lQdO,59aO'vQdO,59aO:zQdO,59aOOQS,59y,59yO;PQdO,5:RO'vQdO,5:ROOQS,5:Q,5:QO;_QdO,5:QO;dQdO,5:XO'vQdO,5:XO'vQdO,5:VOOQS,5:U,5:UO;uQdO,5:UO;zQdO,5:WOOOW'#Fy'#FyOOOOQS'#Ds'#DsOOQS1G/w1G/wOOQS1G.|1G.|O!/[QtO1G.|O!/cQtO1G.|O1lQdO1G.|O!0OQdO1G/UOOQS'#DZ'#DZO0rQdO,59tOOQS1G.{1G.{O!0VQdO1G/eO!0gQdO1G/eO!0oQdO1G/fO'vQdO'#H[O!0tQdO'#H[O!0yQtO1G.{O!1ZQdO,59iO!2aQdO,5=zO!2qQdO,5=zO!2yQdO1G/mO!3OQtO1G/mOOQS1G/l1G/lO!3`QdO,5=uO!4VQdO,5=uO0rQdO1G/qO!4tQdO1G/sO!4yQtO1G/sO!5ZQtO1G/qOOQS1G/p1G/pOOQS1G/r1G/rOOOW-E9w-E9wOOQS1G/{1G/{O!5kQdO'#HxO0rQdO'#HxO!5|QdO,5>cOOOW-E9x-E9xOOQS1G/|1G/|OOQS-E9{-E9{O!6[Q#xO1G2zO!6{QtO1G2zO'vQdO,5kOOQS1G1`1G1`O!8RQdO1G1`OOQS'#DV'#DVO0rQdO,5=qOOQS,5=q,5=qO!8WQdO'#FrO!8cQdO,59oO!8kQdO1G/XO!8uQtO,5=uOOQS1G3`1G3`OOQS,5:m,5:mO!9fQdO'#GtOOQS,5jO!;ZQdO,5>jO1XQdO,5>jO!;lQdO,5>iOOQS-E:R-E:RO!;qQdO1G0lO!;|QdO1G0lO!lO!lO!hO!=VQdO,5>hO!=hQdO'#EpO0rQdO1G0tO!=sQdO1G0tO!=xQgO1G0zO!AvQgO1G0}O!EqQdO,5>oO!E{QdO,5>oO!FTQtO,5>oO0rQdO1G1PO!F_QdO1G1PO4iQdO1G1UO!!vQdO1G1WOOQV,5;a,5;aO!FdQfO,5;aO!FiQgO1G1QO!JjQdO'#GZO4iQdO1G1QO4iQdO1G1QO!JzQdO,5>pO!KXQdO,5>pO1XQdO,5>pOOQV1G1U1G1UO!KaQdO'#FSO!KrQ!fO1G1WO!KzQdO1G1WOOQV1G1]1G1]O4iQdO1G1]O!LPQdO1G1]O!LXQdO'#F^OOQV1G1b1G1bO!#ZQtO1G1bPOOO1G2v1G2vP!L^OSO1G2vOOQS,5=},5=}OOQS'#Dp'#DpO0rQdO,5=}O!LfQdO,5=|O!LyQdO,5=|OOQS1G/u1G/uO!MRQdO,5>PO!McQdO,5>PO!MkQdO,5>PO!NOQdO,5>PO!N`QdO,5>POOQS1G3j1G3jOOQS7+$h7+$hO!8kQdO7+$pO#!RQdO1G.|O#!YQdO1G.|OOQS1G/`1G/`OOQS,5<`,5<`O'vQdO,5<`OOQS7+%P7+%PO#!aQdO7+%POOQS-E9r-E9rOOQS7+%Q7+%QO#!qQdO,5=vO'vQdO,5=vOOQS7+$g7+$gO#!vQdO7+%PO##OQdO7+%QO##TQdO1G3fOOQS7+%X7+%XO##eQdO1G3fO##mQdO7+%XOOQS,5<_,5<_O'vQdO,5<_O##rQdO1G3aOOQS-E9q-E9qO#$iQdO7+%]OOQS7+%_7+%_O#$wQdO1G3aO#%fQdO7+%_O#%kQdO1G3gO#%{QdO1G3gO#&TQdO7+%]O#&YQdO,5>dO#&sQdO,5>dO#&sQdO,5>dOOQS'#Dx'#DxO#'UO&jO'#DzO#'aO`O'#HyOOOW1G3}1G3}O#'fQdO1G3}O#'nQdO1G3}O#'yQ#xO7+(fO#(jQtO1G2UP#)TQdO'#GOOOQS,5nQdO,5sQdO1G4OOOQS-E9y-E9yO#?^QdO1G4OO<[QdO'#H{OOOO'#D{'#D{OOOO'#F|'#F|O#?oO&jO,5:fOOOW,5>e,5>eOOOW7+)i7+)iO#?zQdO7+)iO#@SQdO1G2zO#@mQdO1G2zP'vQdO'#FuO0rQdO<mO#BQQdO,5>mOOQS1G0v1G0vOOQS<rO#KgQdO,5>rO#KrQdO,5>rO#K}QdO,5>qO#L`QdO,5>qOOQS1G1Y1G1YOOQS,5;p,5;pOOQV<VAN>VO$ oQdO<cAN>cO0rQdO1G1|O$!PQtO1G1|P$!ZQdO'#FvOOQS1G2R1G2RP$!hQdO'#F{O$!uQdO7+)jO$#`QdO,5>gOOOO-E9z-E9zOOOW<tO$4{QdO,5>tO1XQdO,5vO$)nQdO,5>vOOQS1G1p1G1pOOQS,5<[,5<[OOQU7+'P7+'PO$+zQdO1G/iO$)nQdO,5wO$8zQdO,5>wOOQS1G1s1G1sOOQS7+'S7+'SP$)nQdO'#GdO$9SQdO1G4bO$9^QdO1G4bO$9fQdO1G4bOOQS7+%T7+%TO$9tQdO1G1tO$:SQtO'#FaO$:ZQdO,5<}OOQS,5<},5<}O$:iQdO1G4cOOQS-E:a-E:aO$)nQdO,5<|O$:pQdO,5<|O$:uQdO7+)|OOQS-E:`-E:`O$;PQdO7+)|O$)nQdO,5S~O%cOS%^OSSOS%]PQ~OPdOVaOfoOhYOopOs!POvqO!PrO!Q{O!T!SO!U!RO!XZO!][O!h`O!r`O!s`O!t`O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#l!QO#o!TO#s!UO#u!VO#z!WO#}hO$P!XO%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~O%]!YO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%j![O%k!]O%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aO~Ok%xXl%xXm%xXn%xXo%xXp%xXs%xXz%xX{%xX!x%xX#g%xX%[%xX%_%xX%z%xXg%xX!T%xX!U%xX%{%xX!W%xX![%xX!Q%xX#[%xXt%xX!m%xX~P%SOfoOhYO!XZO!][O!h`O!r`O!s`O!t`O%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~Oz%wX{%wX#g%wX%[%wX%_%wX%z%wX~Ok!pOl!qOm!oOn!oOo!rOp!sOs!tO!x%wX~P)pOV!zOg!|Oo0cOv0qO!PrO~P'vOV#OOo0cOv0qO!W#PO~P'vOV#SOa#TOo0cOv0qO![#UO~P'vOQ#XO%`#XO%a#ZO~OQ#^OR#[O%`#^O%a#`O~OV%iX_%iXa%iXh%iXk%iXl%iXm%iXn%iXo%iXp%iXs%iXz%iX!X%iX!f%iX%j%iX%k%iX%l%iX%m%iX%n%iX%o%iX%p%iX%q%iX%r%iX%s%iXg%iX!T%iX!U%iX~O&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O{%iX!x%iX#g%iX%[%iX%_%iX%z%iX%{%iX!W%iX![%iX!Q%iX#[%iXt%iX!m%iX~P,eOz#dO{%hX!x%hX#g%hX%[%hX%_%hX%z%hX~Oo0cOv0qO~P'vO#g#gO%[#iO%_#iO~O%uWO~O!T#nO#u!VO#z!WO#}hO~OopO~P'vOV#sOa#tO%uWO{wP~OV#xOo0cOv0qO!Q#yO~P'vO{#{O!x$QO%z#|O#g!yX%[!yX%_!yX~OV#xOo0cOv0qO#g#SX%[#SX%_#SX~P'vOo0cOv0qO#g#WX%[#WX%_#WX~P'vOh$WO%uWO~O!f$YO!r$YO%uWO~OV$eO~P'vO!U$gO#s$hO#u$iO~O{$jO~OV$qO~P'vOS$sO%[$rO%_$rO%c$tO~OV$}Oa$}Og%POo0cOv0qO~P'vOo0cOv0qO{%SO~P'vO&Y%UO~Oa!bOh!iO!X!kO!f!mOVba_bakbalbambanbaobapbasbazba{ba!xba#gba%[ba%_ba%jba%kba%lba%mba%nba%oba%pba%qba%rba%sba%zbagba!Tba!Uba%{ba!Wba![ba!Qba#[batba!mba~On%ZO~Oo%ZO~P'vOo0cO~P'vOk0eOl0fOm0dOn0dOo0mOp0nOs0rOg%wX!T%wX!U%wX%{%wX!W%wX![%wX!Q%wX#[%wX!m%wX~P)pO%{%]Og%vXz%vX!T%vX!U%vX!W%vX{%vX~Og%_Oz%`O!T%dO!U%cO~Og%_O~Oz%gO!T%dO!U%cO!W&SX~O!W%kO~Oz%lO{%nO!T%dO!U%cO![%}X~O![%rO~O![%sO~OQ#XO%`#XO%a%uO~OV%wOo0cOv0qO!PrO~P'vOQ#^OR#[O%`#^O%a%zO~OV!qa_!qaa!qah!qak!qal!qam!qan!qao!qap!qas!qaz!qa{!qa!X!qa!f!qa!x!qa#g!qa%[!qa%_!qa%j!qa%k!qa%l!qa%m!qa%n!qa%o!qa%p!qa%q!qa%r!qa%s!qa%z!qag!qa!T!qa!U!qa%{!qa!W!qa![!qa!Q!qa#[!qat!qa!m!qa~P#yOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P%SOV&OOopOvqO{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P'vOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#g$zX%[$zX%_$zX~P'vO#g#gO%[&TO%_&TO~O!f&UOh&sX%[&sXz&sX#[&sX#g&sX%_&sX#Z&sXg&sX~Oh!iO%[&WO~Okealeameaneaoeapeaseazea{ea!xea#gea%[ea%_ea%zeagea!Tea!Uea%{ea!Wea![ea!Qea#[eatea!mea~P%SOsqazqa{qa#gqa%[qa%_qa%zqa~Ok!pOl!qOm!oOn!oOo!rOp!sO!xqa~PEcO%z&YOz%yX{%yX~O%uWOz%yX{%yX~Oz&]O{wX~O{&_O~Oz%lO#g%}X%[%}X%_%}Xg%}X{%}X![%}X!m%}X%z%}X~OV0lOo0cOv0qO!PrO~P'vO%z#|O#gUa%[Ua%_Ua~Oz&hO#g&PX%[&PX%_&PXn&PX~P%SOz&kO!Q&jO#g#Wa%[#Wa%_#Wa~Oz&lO#[&nO#g&rX%[&rX%_&rXg&rX~O!f$YO!r$YO#Z&qO%uWO~O#Z&qO~Oz&sO#g&tX%[&tX%_&tX~Oz&uO#g&pX%[&pX%_&pX{&pX~O!X&wO%z&xO~Oz&|On&wX~P%SOn'PO~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO%['UO~P'vOt'YO#p'WO#q'XOP#naV#naf#nah#nao#nas#nav#na!P#na!Q#na!T#na!U#na!X#na!]#na!h#na!r#na!s#na!t#na!{#na!}#na#P#na#R#na#T#na#X#na#Z#na#^#na#_#na#a#na#c#na#l#na#o#na#s#na#u#na#z#na#}#na$P#na%X#na%o#na%p#na%t#na%u#na&Z#na&[#na&]#na&^#na&_#na&`#na&a#na&b#na&c#na&d#na&e#na&f#na&g#na&h#na&i#na&j#na%Z#na%_#na~Oz'ZO#[']O{&xX~Oh'_O!X&wO~Oh!iO{$jO!X&wO~O{'eO~P%SO%['hO%_'hO~OS'iO%['hO%_'hO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%k!]O~P!#uO%kWi~P!#uOV!aO_!aOa!bOh!iO!X!kO!f!mO%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%m!_O%n!_O~P!&pO%mWi%nWi~P!&pOa!bOh!iO!X!kO!f!mOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%mWi%nWi%oWi%pWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~OV!aO_!aO%q!aO%r!aO%s!aO~P!)nOVWi_Wi%qWi%rWi%sWi~P!)nO!T%dO!U%cOg&VXz&VX~O%z'kO%{'kO~P,eOz'mOg&UX~Og'oO~Oz'pO{'rO!W&XX~Oo0cOv0qOz'pO{'sO!W&XX~P'vO!W'uO~Om!oOn!oOo!rOp!sOkjisjizji{ji!xji#gji%[ji%_ji%zji~Ol!qO~P!.aOlji~P!.aOk0eOl0fOm0dOn0dOo0mOp0nO~Ot'wO~P!/jOV'|Og'}Oo0cOv0qO~P'vOg'}Oz(OO~Og(QO~O!U(SO~Og(TOz(OO!T%dO!U%cO~P%SOk0eOl0fOm0dOn0dOo0mOp0nOgqa!Tqa!Uqa%{qa!Wqa![qa!Qqa#[qatqa!mqa~PEcOV'|Oo0cOv0qO!W&Sa~P'vOz(WO!W&Sa~O!W(XO~Oz(WO!T%dO!U%cO!W&Sa~P%SOV(]Oo0cOv0qO![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~P'vOz(^O![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~O![(aO~Oz(^O!T%dO!U%cO![%}a~P%SOz(dO!T%dO!U%cO![&Ta~P%SOz(gO{&lX![&lX!m&lX%z&lX~O{(kO![(mO!m(nO%z(jO~OV&OOopOvqO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~P'vOz(pO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~O!f&UOh&sa%[&saz&sa#[&sa#g&sa%_&sa#Z&sag&sa~O%[(uO~OV#sOa#tO%uWO~Oz&]O{wa~OopOvqO~P'vOz(^O#g%}a%[%}a%_%}ag%}a{%}a![%}a!m%}a%z%}a~P%SOz(zO#g%hX%[%hX%_%hX%z%hX~O%z#|O#gUi%[Ui%_Ui~O#g&Pa%[&Pa%_&Pan&Pa~P'vOz(}O#g&Pa%[&Pa%_&Pan&Pa~O%uWO#g&ra%[&ra%_&rag&ra~Oz)SO#g&ra%[&ra%_&rag&ra~Og)VO~OV)WOh$WO%uWO~O#Z)XO~O%uWO#g&ta%[&ta%_&ta~Oz)ZO#g&ta%[&ta%_&ta~Oo0cOv0qO#g&pa%[&pa%_&pa{&pa~P'vOz)^O#g&pa%[&pa%_&pa{&pa~OV)`Oa)`O%uWO~O%z)eO~Ot)hO#j)gOP#hiV#hif#hih#hio#his#hiv#hi!P#hi!Q#hi!T#hi!U#hi!X#hi!]#hi!h#hi!r#hi!s#hi!t#hi!{#hi!}#hi#P#hi#R#hi#T#hi#X#hi#Z#hi#^#hi#_#hi#a#hi#c#hi#l#hi#o#hi#s#hi#u#hi#z#hi#}#hi$P#hi%X#hi%o#hi%p#hi%t#hi%u#hi&Z#hi&[#hi&]#hi&^#hi&_#hi&`#hi&a#hi&b#hi&c#hi&d#hi&e#hi&f#hi&g#hi&h#hi&i#hi&j#hi%Z#hi%_#hi~Ot)iOP#kiV#kif#kih#kio#kis#kiv#ki!P#ki!Q#ki!T#ki!U#ki!X#ki!]#ki!h#ki!r#ki!s#ki!t#ki!{#ki!}#ki#P#ki#R#ki#T#ki#X#ki#Z#ki#^#ki#_#ki#a#ki#c#ki#l#ki#o#ki#s#ki#u#ki#z#ki#}#ki$P#ki%X#ki%o#ki%p#ki%t#ki%u#ki&Z#ki&[#ki&]#ki&^#ki&_#ki&`#ki&a#ki&b#ki&c#ki&d#ki&e#ki&f#ki&g#ki&h#ki&i#ki&j#ki%Z#ki%_#ki~OV)kOn&wa~P'vOz)lOn&wa~Oz)lOn&wa~P%SOn)pO~O%Y)tO~Ot)wO#p'WO#q)vOP#niV#nif#nih#nio#nis#niv#ni!P#ni!Q#ni!T#ni!U#ni!X#ni!]#ni!h#ni!r#ni!s#ni!t#ni!{#ni!}#ni#P#ni#R#ni#T#ni#X#ni#Z#ni#^#ni#_#ni#a#ni#c#ni#l#ni#o#ni#s#ni#u#ni#z#ni#}#ni$P#ni%X#ni%o#ni%p#ni%t#ni%u#ni&Z#ni&[#ni&]#ni&^#ni&_#ni&`#ni&a#ni&b#ni&c#ni&d#ni&e#ni&f#ni&g#ni&h#ni&i#ni&j#ni%Z#ni%_#ni~OV)zOo0cOv0qO{$jO~P'vOo0cOv0qO{&xa~P'vOz*OO{&xa~OV*SOa*TOg*WO%q*UO%uWO~O{$jO&{*YO~Oh'_O~Oh!iO{$jO~O%[*_O~O%[*aO%_*aO~OV$}Oa$}Oo0cOv0qOg&Ua~P'vOz*dOg&Ua~Oo0cOv0qO{*gO!W&Xa~P'vOz*hO!W&Xa~Oo0cOv0qOz*hO{*kO!W&Xa~P'vOo0cOv0qOz*hO!W&Xa~P'vOz*hO{*kO!W&Xa~Om0dOn0dOo0mOp0nOgjikjisjizji!Tji!Uji%{ji!Wji{ji![ji#gji%[ji%_ji!Qji#[jitji!mji%zji~Ol0fO~P!NkOlji~P!NkOV'|Og*pOo0cOv0qO~P'vOn*rO~Og*pOz*tO~Og*uO~OV'|Oo0cOv0qO!W&Si~P'vOz*vO!W&Si~O!W*wO~OV(]Oo0cOv0qO![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~P'vOz*zO!T%dO!U%cO![&Ti~Oz*}O![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~O![+OO~Oa+QOo0cOv0qO![&Ti~P'vOz*zO![&Ti~O![+SO~OV+UOo0cOv0qO{&la![&la!m&la%z&la~P'vOz+VO{&la![&la!m&la%z&la~O!]+YO&n+[O![!nX~O![+^O~O{(kO![+_O~O{(kO![+_O!m+`O~OV&OOopOvqO{%hq!x%hq#g%hq%[%hq%_%hq%z%hq~P'vOz$ri{$ri!x$ri#g$ri%[$ri%_$ri%z$ri~P%SOV&OOopOvqO~P'vOV&OOo0cOv0qO#g%ha%[%ha%_%ha%z%ha~P'vOz+aO#g%ha%[%ha%_%ha%z%ha~Oz$ia#g$ia%[$ia%_$ian$ia~P%SO#g&Pi%[&Pi%_&Pin&Pi~P'vOz+dO#g#Wq%[#Wq%_#Wq~O#[+eOz$va#g$va%[$va%_$vag$va~O%uWO#g&ri%[&ri%_&rig&ri~Oz+gO#g&ri%[&ri%_&rig&ri~OV+iOh$WO%uWO~O%uWO#g&ti%[&ti%_&ti~Oo0cOv0qO#g&pi%[&pi%_&pi{&pi~P'vO{#{Oz#eX!W#eX~Oz+mO!W&uX~O!W+oO~Ot+rO#j)gOP#hqV#hqf#hqh#hqo#hqs#hqv#hq!P#hq!Q#hq!T#hq!U#hq!X#hq!]#hq!h#hq!r#hq!s#hq!t#hq!{#hq!}#hq#P#hq#R#hq#T#hq#X#hq#Z#hq#^#hq#_#hq#a#hq#c#hq#l#hq#o#hq#s#hq#u#hq#z#hq#}#hq$P#hq%X#hq%o#hq%p#hq%t#hq%u#hq&Z#hq&[#hq&]#hq&^#hq&_#hq&`#hq&a#hq&b#hq&c#hq&d#hq&e#hq&f#hq&g#hq&h#hq&i#hq&j#hq%Z#hq%_#hq~On$|az$|a~P%SOV)kOn&wi~P'vOz+yOn&wi~Oz,TO{$jO#[,TO~O#q,VOP#nqV#nqf#nqh#nqo#nqs#nqv#nq!P#nq!Q#nq!T#nq!U#nq!X#nq!]#nq!h#nq!r#nq!s#nq!t#nq!{#nq!}#nq#P#nq#R#nq#T#nq#X#nq#Z#nq#^#nq#_#nq#a#nq#c#nq#l#nq#o#nq#s#nq#u#nq#z#nq#}#nq$P#nq%X#nq%o#nq%p#nq%t#nq%u#nq&Z#nq&[#nq&]#nq&^#nq&_#nq&`#nq&a#nq&b#nq&c#nq&d#nq&e#nq&f#nq&g#nq&h#nq&i#nq&j#nq%Z#nq%_#nq~O#[,WOz%Oa{%Oa~Oo0cOv0qO{&xi~P'vOz,YO{&xi~O{#{O%z,[Og&zXz&zX~O%uWOg&zXz&zX~Oz,`Og&yX~Og,bO~O%Y,eO~O!T%dO!U%cOg&Viz&Vi~OV$}Oa$}Oo0cOv0qOg&Ui~P'vO{,hOz$la!W$la~Oo0cOv0qO{,iOz$la!W$la~P'vOo0cOv0qO{*gO!W&Xi~P'vOz,lO!W&Xi~Oo0cOv0qOz,lO!W&Xi~P'vOz,lO{,oO!W&Xi~Og$hiz$hi!W$hi~P%SOV'|Oo0cOv0qO~P'vOn,qO~OV'|Og,rOo0cOv0qO~P'vOV'|Oo0cOv0qO!W&Sq~P'vOz$gi![$gi#g$gi%[$gi%_$gig$gi{$gi!m$gi%z$gi~P%SOV(]Oo0cOv0qO~P'vOa+QOo0cOv0qO![&Tq~P'vOz,sO![&Tq~O![,tO~OV(]Oo0cOv0qO![%}q#g%}q%[%}q%_%}qg%}q{%}q!m%}q%z%}q~P'vO{,uO~OV+UOo0cOv0qO{&li![&li!m&li%z&li~P'vOz,zO{&li![&li!m&li%z&li~O!]+YO&n+[O![!na~O{(kO![,}O~OV&OOo0cOv0qO#g%hi%[%hi%_%hi%z%hi~P'vOz-OO#g%hi%[%hi%_%hi%z%hi~O%uWO#g&rq%[&rq%_&rqg&rq~Oz-RO#g&rq%[&rq%_&rqg&rq~OV)`Oa)`O%uWO!W&ua~Oz-TO!W&ua~On$|iz$|i~P%SOV)kO~P'vOV)kOn&wq~P'vOt-XOP#myV#myf#myh#myo#mys#myv#my!P#my!Q#my!T#my!U#my!X#my!]#my!h#my!r#my!s#my!t#my!{#my!}#my#P#my#R#my#T#my#X#my#Z#my#^#my#_#my#a#my#c#my#l#my#o#my#s#my#u#my#z#my#}#my$P#my%X#my%o#my%p#my%t#my%u#my&Z#my&[#my&]#my&^#my&_#my&`#my&a#my&b#my&c#my&d#my&e#my&f#my&g#my&h#my&i#my&j#my%Z#my%_#my~O%Z-]O%_-]O~P`O#q-^OP#nyV#nyf#nyh#nyo#nys#nyv#ny!P#ny!Q#ny!T#ny!U#ny!X#ny!]#ny!h#ny!r#ny!s#ny!t#ny!{#ny!}#ny#P#ny#R#ny#T#ny#X#ny#Z#ny#^#ny#_#ny#a#ny#c#ny#l#ny#o#ny#s#ny#u#ny#z#ny#}#ny$P#ny%X#ny%o#ny%p#ny%t#ny%u#ny&Z#ny&[#ny&]#ny&^#ny&_#ny&`#ny&a#ny&b#ny&c#ny&d#ny&e#ny&f#ny&g#ny&h#ny&i#ny&j#ny%Z#ny%_#ny~Oz-aO{$jO#[-aO~Oo0cOv0qO{&xq~P'vOz-dO{&xq~O%z,[Og&zaz&za~O{#{Og&zaz&za~OV*SOa*TO%q*UO%uWOg&ya~Oz-hOg&ya~O$S-lO~OV$}Oa$}Oo0cOv0qO~P'vOo0cOv0qO{-mOz$li!W$li~P'vOo0cOv0qOz$li!W$li~P'vO{-mOz$li!W$li~Oo0cOv0qO{*gO~P'vOo0cOv0qO{*gO!W&Xq~P'vOz-pO!W&Xq~Oo0cOv0qOz-pO!W&Xq~P'vOs-sO!T%dO!U%cOg&Oq!W&Oq![&Oqz&Oq~P!/jOa+QOo0cOv0qO![&Ty~P'vOz$ji![$ji~P%SOa+QOo0cOv0qO~P'vOV+UOo0cOv0qO~P'vOV+UOo0cOv0qO{&lq![&lq!m&lq%z&lq~P'vO{(kO![-xO!m-yO%z-wO~OV&OOo0cOv0qO#g%hq%[%hq%_%hq%z%hq~P'vO%uWO#g&ry%[&ry%_&ryg&ry~OV)`Oa)`O%uWO!W&ui~Ot-}OP#m!RV#m!Rf#m!Rh#m!Ro#m!Rs#m!Rv#m!R!P#m!R!Q#m!R!T#m!R!U#m!R!X#m!R!]#m!R!h#m!R!r#m!R!s#m!R!t#m!R!{#m!R!}#m!R#P#m!R#R#m!R#T#m!R#X#m!R#Z#m!R#^#m!R#_#m!R#a#m!R#c#m!R#l#m!R#o#m!R#s#m!R#u#m!R#z#m!R#}#m!R$P#m!R%X#m!R%o#m!R%p#m!R%t#m!R%u#m!R&Z#m!R&[#m!R&]#m!R&^#m!R&_#m!R&`#m!R&a#m!R&b#m!R&c#m!R&d#m!R&e#m!R&f#m!R&g#m!R&h#m!R&i#m!R&j#m!R%Z#m!R%_#m!R~Oo0cOv0qO{&xy~P'vOV*SOa*TO%q*UO%uWOg&yi~O$S-lO%Z.VO%_.VO~OV.aOh._O!X.^O!].`O!h.YO!s.[O!t.[O%p.XO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O~Oo0cOv0qOz$lq!W$lq~P'vO{.fOz$lq!W$lq~Oo0cOv0qO{*gO!W&Xy~P'vOz.gO!W&Xy~Oo0cOv.kO~P'vOs-sO!T%dO!U%cOg&Oy!W&Oy![&Oyz&Oy~P!/jO{(kO![.nO~O{(kO![.nO!m.oO~OV*SOa*TO%q*UO%uWO~Oh.tO!f.rOz$TX#[$TX%j$TXg$TX~Os$TX{$TX!W$TX![$TX~P$-bO%o.vO%p.vOs$UXz$UX{$UX#[$UX%j$UX!W$UXg$UX![$UX~O!h.xO~Oz.|O#[/OO%j.yOs&|X{&|X!W&|Xg&|X~Oa/RO~P$)zOh.tOs&}Xz&}X{&}X#[&}X%j&}X!W&}Xg&}X![&}X~Os/VO{$jO~Oo0cOv0qOz$ly!W$ly~P'vOo0cOv0qO{*gO!W&X!R~P'vOz/ZO!W&X!R~Og&RXs&RX!T&RX!U&RX!W&RX![&RXz&RX~P!/jOs-sO!T%dO!U%cOg&Qa!W&Qa![&Qaz&Qa~O{(kO![/^O~O!f.rOh$[as$[az$[a{$[a#[$[a%j$[a!W$[ag$[a![$[a~O!h/eO~O%o.vO%p.vOs$Uaz$Ua{$Ua#[$Ua%j$Ua!W$Uag$Ua![$Ua~O%j.yOs$Yaz$Ya{$Ya#[$Ya!W$Yag$Ya![$Ya~Os&|a{&|a!W&|ag&|a~P$)nOz/jOs&|a{&|a!W&|ag&|a~O!W/mO~Og/mO~O{/oO~O![/pO~Oo0cOv0qO{*gO!W&X!Z~P'vO{/sO~O%z/tO~P$-bOz/uO#[/OO%j.yOg'PX~Oz/uOg'PX~Og/wO~O!h/xO~O#[/OOs%Saz%Sa{%Sa%j%Sa!W%Sag%Sa![%Sa~O#[/OO%j.yOs%Waz%Wa{%Wa!W%Wag%Wa~Os&|i{&|i!W&|ig&|i~P$)nOz/zO#[/OO%j.yO!['Oa~Og'Pa~P$)nOz0SOg'Pa~Oa0UO!['Oi~P$)zOz0WO!['Oi~Oz0WO#[/OO%j.yO!['Oi~O#[/OO%j.yOg$biz$bi~O%z0ZO~P$-bO#[/OO%j.yOg%Vaz%Va~Og'Pi~P$)nO{0^O~Oa0UO!['Oq~P$)zOz0`O!['Oq~O#[/OO%j.yOz%Ui![%Ui~Oa0UO~P$)zOa0UO!['Oy~P$)zO#[/OO%j.yOg$ciz$ci~O#[/OO%j.yOz%Uq![%Uq~Oz+aO#g%ha%[%ha%_%ha%z%ha~P%SOV&OOo0cOv0qO~P'vOn0hO~Oo0hO~P'vO{0iO~Ot0jO~P!/jO&]&Z&j&h&i&g&f&d&e&c&b&`&a&_&^&[%u~",goto:"!=j'QPPPPPP'RP'Z*s+[+t,_,y-fP.SP'Z.r.r'ZPPP'Z2[PPPPPP2[5PPP5PP7b7k=sPP=v>h>kPP'Z'ZPP>zPP'Z'ZPP'Z'Z'Z'Z'Z?O?w'ZP?zP@QDXGuGyPG|HWH['ZPPPH_Hk'RP'R'RP'RP'RP'RP'RP'R'R'RP'RPP'RPP'RP'RPHqH}IVPI^IdPI^PI^I^PPPI^PKrPK{LVL]KrPI^LfPI^PLmLsPLwM]MzNeLwLwNkNxLwLwLwLw! ^! d! g! l! o! y!!P!!]!!o!!u!#P!#V!#s!#y!$P!$Z!$a!$g!$y!%T!%Z!%a!%k!%q!%w!%}!&T!&Z!&e!&k!&u!&{!'U!'[!'k!'s!'}!(UPPPPPPPPPPP!([!(_!(e!(n!(x!)TPPPPPPPPPPPP!-u!/Z!3^!6oPP!6w!7W!7a!8Y!8P!8c!8i!8l!8o!8r!8z!9jPPPPPPPPPPPPPPPPP!9m!9q!9wP!:]!:a!:m!:v!;S!;j!;m!;p!;v!;|!_![!]Do!]!^Es!^!_FZ!_!`Gk!`!aHX!a!b%T!b!cIf!c!dJU!d!eK^!e!hJU!h!i!#f!i!tJU!t!u!,|!u!wJU!w!x!.t!x!}JU!}#O!0S#O#P&o#P#Q!0j#Q#R!1Q#R#SJU#S#T%T#T#UJU#U#VK^#V#YJU#Y#Z!#f#Z#fJU#f#g!,|#g#iJU#i#j!.t#j#oJU#o#p!1n#p#q!1s#q#r!2a#r#s!2f#s$g%T$g;'SJU;'S;=`KW<%lOJU`%YT&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T`%lP;=`<%l%To%v]&n`%c_OX%TXY%oY[%T[]%o]p%Tpq%oq#O%T#O#P&o#P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To&tX&n`OY%TYZ%oZ]%T]^%o^#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc'f[&n`O!_%T!_!`([!`#T%T#T#U(r#U#f%T#f#g(r#g#h(r#h#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(cTmR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(yT!mR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk)aV&n`&[ZOr%Trs)vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk){V&n`Or%Trs*bs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk*iT&n`&^ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To+PZS_&n`OY*xYZ%TZ]*x]^%T^#o*x#o#p+r#p#q*x#q#r+r#r;'S*x;'S;=`,^<%lO*x_+wTS_OY+rZ]+r^;'S+r;'S;=`,W<%lO+r_,ZP;=`<%l+ro,aP;=`<%l*xj,kV%rQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-XT!xY&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-oV%lQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.]V&n`&ZZOw%Twx.rx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.wV&n`Ow%Twx/^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/eT&n`&]ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/{ThZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc0cTgR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk0yXVZ&n`Oz%Tz{1f{!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk1mVaR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk2ZV%oZ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc2wTzR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To3_W%pZ&n`O!_%T!_!`-Q!`!a3w!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Td4OT&{S&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk4fX!fQ&n`O!O%T!O!P5R!P!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5WV&n`O!O%T!O!P5m!P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5tT!rZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti6[a!hX&n`O!Q%T!Q![6T![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S6T#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti7fZ&n`O{%T{|8X|}%T}!O8X!O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8^V&n`O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8z]!hX&n`O!Q%T!Q![8s![!l%T!l!m9s!m#R%T#R#S8s#S#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti9zT!hX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk:bX%qR&n`O!P%T!P!Q:}!Q!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj;UV%sQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti;ro!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!d%T!d!e?q!e!g%T!g!h7a!h!l%T!l!m9s!m!q%T!q!rA]!r!z%T!z!{Bq!{#R%T#R#S>_#S#U%T#U#V?q#V#X%T#X#Y7a#Y#^%T#^#_9s#_#c%T#c#dA]#d#l%T#l#mBq#m#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti=xV&n`O!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti>fc!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S>_#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti?vY&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti@mY!hX&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiAbX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBUX!hX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBv]&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiCv]!hX&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToDvV{_&n`O!_%T!_!`E]!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TcEdT%{R&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkEzT#gZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkFbXmR&n`O!^%T!^!_F}!_!`([!`!a([!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjGUV%mQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkGrV%zZ&n`O!_%T!_!`([!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkH`WmR&n`O!_%T!_!`([!`!aHx!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjIPV%nQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkIoV_Q#}P&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToJ_]&n`&YS%uZO!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoKZP;=`<%lJUoKge&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!tJU!t!uLx!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#gLx#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoMRa&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUkN_V&n`&`ZOr%TrsNts#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkNyV&n`Or%Trs! `s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! gT&n`&bZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! }V&n`&_ZOw%Twx!!dx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!!iV&n`Ow%Twx!#Ox#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!#VT&n`&aZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!#oe&n`&YS%uZOr%Trs!%Qsw%Twx!&px!Q%T!Q![JU![!c%T!c!tJU!t!u!(`!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#g!(`#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!%XV&n`&dZOr%Trs!%ns#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!%sV&n`Or%Trs!&Ys#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&aT&n`&fZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&wV&n`&cZOw%Twx!'^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!'cV&n`Ow%Twx!'xx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!(PT&n`&eZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!(ia&n`&YS%uZOr%Trs!)nsw%Twx!+^x!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!)uV&n`&hZOr%Trs!*[s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*aV&n`Or%Trs!*vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*}T&n`&jZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!+eV&n`&gZOw%Twx!+zx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,PV&n`Ow%Twx!,fx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,mT&n`&iZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!-Vi&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!dJU!d!eLx!e!hJU!h!i!(`!i!}JU!}#R%T#R#SJU#S#T%T#T#UJU#U#VLx#V#YJU#Y#Z!(`#Z#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUo!.}a&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!0ZT!XZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc!0qT!WR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj!1XV%kQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!1sO!]~k!1zV%jR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!2fO![~i!2mT%tX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T",tokenizers:[Qb,vb,wb,Ab,0,1,2,3,4],topRules:{Script:[0,5]},specialized:[{term:221,get:n=>Db[n]||-1}],tokenPrec:7668}),gh=new jm,$u=new Set(["Script","Body","FunctionDefinition","ClassDefinition","LambdaExpression","ForStatement","MatchClause"]);function Nn(n){return(e,t,i)=>{if(i)return!1;let s=e.node.getChild("VariableName");return s&&t(s,n),!0}}const qb={FunctionDefinition:Nn("function"),ClassDefinition:Nn("class"),ForStatement(n,e,t){if(t){for(let i=n.node.firstChild;i;i=i.nextSibling)if(i.name=="VariableName")e(i,"variable");else if(i.name=="in")break}},ImportStatement(n,e){var t,i;let{node:s}=n,r=((t=s.firstChild)===null||t===void 0?void 0:t.name)=="from";for(let o=s.getChild("import");o;o=o.nextSibling)o.name=="VariableName"&&((i=o.nextSibling)===null||i===void 0?void 0:i.name)!="as"&&e(o,r?"variable":"namespace")},AssignStatement(n,e){for(let t=n.node.firstChild;t;t=t.nextSibling)if(t.name=="VariableName")e(t,"variable");else if(t.name==":"||t.name=="AssignOp")break},ParamList(n,e){for(let t=null,i=n.node.firstChild;i;i=i.nextSibling)i.name=="VariableName"&&(!t||!/\*|AssignOp/.test(t.name))&&e(i,"variable"),t=i},CapturePattern:Nn("variable"),AsPattern:Nn("variable"),__proto__:null};function Bu(n,e){let t=gh.get(e);if(t)return t;let i=[],s=!0;function r(o,l){let a=n.sliceString(o.from,o.to);i.push({label:a,type:l})}return e.cursor(re.IncludeAnonymous).iterate(o=>{if(o.name){let l=qb[o.name];if(l&&l(o,r,s)||!s&&$u.has(o.name))return!1;s=!1}else if(o.to-o.from>8192){for(let l of Bu(n,o.node))i.push(l);return!1}}),gh.set(e,i),i}const Oh=/^[\w\xa1-\uffff][\w\d\xa1-\uffff]*$/,Wu=["String","FormatString","Comment","PropertyName"];function $b(n){let e=ae(n.state).resolveInner(n.pos,-1);if(Wu.indexOf(e.name)>-1)return null;let t=e.name=="VariableName"||e.to-e.from<20&&Oh.test(n.state.sliceDoc(e.from,e.to));if(!t&&!n.explicit)return null;let i=[];for(let s=e;s;s=s.parent)$u.has(s.name)&&(i=i.concat(Bu(n.state.doc,s)));return{options:i,from:t?e.from:n.pos,validFor:Oh}}const Bb=["__annotations__","__builtins__","__debug__","__doc__","__import__","__name__","__loader__","__package__","__spec__","False","None","True"].map(n=>({label:n,type:"constant"})).concat(["ArithmeticError","AssertionError","AttributeError","BaseException","BlockingIOError","BrokenPipeError","BufferError","BytesWarning","ChildProcessError","ConnectionAbortedError","ConnectionError","ConnectionRefusedError","ConnectionResetError","DeprecationWarning","EOFError","Ellipsis","EncodingWarning","EnvironmentError","Exception","FileExistsError","FileNotFoundError","FloatingPointError","FutureWarning","GeneratorExit","IOError","ImportError","ImportWarning","IndentationError","IndexError","InterruptedError","IsADirectoryError","KeyError","KeyboardInterrupt","LookupError","MemoryError","ModuleNotFoundError","NameError","NotADirectoryError","NotImplemented","NotImplementedError","OSError","OverflowError","PendingDeprecationWarning","PermissionError","ProcessLookupError","RecursionError","ReferenceError","ResourceWarning","RuntimeError","RuntimeWarning","StopAsyncIteration","StopIteration","SyntaxError","SyntaxWarning","SystemError","SystemExit","TabError","TimeoutError","TypeError","UnboundLocalError","UnicodeDecodeError","UnicodeEncodeError","UnicodeError","UnicodeTranslateError","UnicodeWarning","UserWarning","ValueError","Warning","ZeroDivisionError"].map(n=>({label:n,type:"type"}))).concat(["bool","bytearray","bytes","classmethod","complex","float","frozenset","int","list","map","memoryview","object","range","set","staticmethod","str","super","tuple","type"].map(n=>({label:n,type:"class"}))).concat(["abs","aiter","all","anext","any","ascii","bin","breakpoint","callable","chr","compile","delattr","dict","dir","divmod","enumerate","eval","exec","exit","filter","format","getattr","globals","hasattr","hash","help","hex","id","input","isinstance","issubclass","iter","len","license","locals","max","min","next","oct","open","ord","pow","print","property","quit","repr","reversed","round","setattr","slice","sorted","sum","vars","zip"].map(n=>({label:n,type:"function"}))),Wb=[lt("def ${name}(${params}):\n ${}",{label:"def",detail:"function",type:"keyword"}),lt("for ${name} in ${collection}:\n ${}",{label:"for",detail:"loop",type:"keyword"}),lt("while ${}:\n ${}",{label:"while",detail:"loop",type:"keyword"}),lt("try:\n ${}\nexcept ${error}:\n ${}",{label:"try",detail:"/ except block",type:"keyword"}),lt(`if \${}: + +`,{label:"if",detail:"block",type:"keyword"}),lt("if ${}:\n ${}\nelse:\n ${}",{label:"if",detail:"/ else block",type:"keyword"}),lt("class ${name}:\n def __init__(self, ${params}):\n ${}",{label:"class",detail:"definition",type:"keyword"}),lt("import ${module}",{label:"import",detail:"statement",type:"keyword"}),lt("from ${module} import ${names}",{label:"from",detail:"import",type:"keyword"})],Lb=L0(Wu,du(Bb.concat(Wb)));function yr(n){let{node:e,pos:t}=n,i=n.lineIndent(t,-1),s=null;for(;;){let r=e.childBefore(t);if(r)if(r.name=="Comment")t=r.from;else if(r.name=="Body"||r.name=="MatchBody")n.baseIndentFor(r)+n.unit<=i&&(s=r),e=r;else if(r.name=="MatchClause")e=r;else if(r.type.is("Statement"))e=r;else break;else break}return s}function br(n,e){let t=n.baseIndentFor(e),i=n.lineAt(n.pos,-1),s=i.from+i.text.length;return/^\s*($|#)/.test(i.text)&&n.node.tot?null:t+n.unit}const Sr=Ui.define({name:"python",parser:Eb.configure({props:[Ms.add({Body:n=>{var e;let t=/^\s*(#|$)/.test(n.textAfter)&&yr(n)||n.node;return(e=br(n,t))!==null&&e!==void 0?e:n.continue()},MatchBody:n=>{var e;let t=yr(n);return(e=br(n,t||n.node))!==null&&e!==void 0?e:n.continue()},IfStatement:n=>/^\s*(else:|elif )/.test(n.textAfter)?n.baseIndent:n.continue(),"ForStatement WhileStatement":n=>/^\s*else:/.test(n.textAfter)?n.baseIndent:n.continue(),TryStatement:n=>/^\s*(except[ :]|finally:|else:)/.test(n.textAfter)?n.baseIndent:n.continue(),MatchStatement:n=>/^\s*case /.test(n.textAfter)?n.baseIndent+n.unit:n.continue(),"TupleExpression ComprehensionExpression ParamList ArgList ParenthesizedExpression":ir({closing:")"}),"DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression":ir({closing:"}"}),"ArrayExpression ArrayComprehensionExpression":ir({closing:"]"}),MemberExpression:n=>n.baseIndent+n.unit,"String FormatString":()=>null,Script:n=>{var e;let t=yr(n);return(e=t&&br(n,t))!==null&&e!==void 0?e:n.continue()}}),Vo.add({"ArrayExpression DictionaryExpression SetExpression TupleExpression":sf,Body:(n,e)=>({from:n.from+1,to:n.to-(n.to==e.doc.length?0:1)}),"String FormatString":(n,e)=>({from:e.doc.lineAt(n.from).to,to:n.to})})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"'''",'"""'],stringPrefixes:["f","fr","rf","r","u","b","br","rb","F","FR","RF","R","U","B","BR","RB"]},commentTokens:{line:"#"},indentOnInput:/^\s*([\}\]\)]|else:|elif |except |finally:|case\s+[^:]*:?)$/}});function jb(){return new ef(Sr,[Sr.data.of({autocomplete:$b}),Sr.data.of({autocomplete:Lb})])}const zb=Lo({String:O.string,Number:O.number,"True False":O.bool,PropertyName:O.propertyName,Null:O.null,", :":O.separator,"[ ]":O.squareBracket,"{ }":O.brace}),Ib=tn.deserialize({version:14,states:"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l",stateData:"#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O",goto:"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R",nodeNames:"⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array",maxTerm:25,nodeProps:[["isolate",-2,6,11,""],["openedBy",7,"{",14,"["],["closedBy",8,"}",15,"]"]],propSources:[zb],skippedNodes:[0],repeatNodeCount:2,tokenData:"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~",tokenizers:[0],topRules:{JsonText:[0,1]},tokenPrec:0}),Gb=()=>n=>{try{JSON.parse(n.state.doc.toString())}catch(e){if(!(e instanceof SyntaxError))throw e;const t=Vb(e,n.state.doc);return[{from:t,message:e.message,severity:"error",to:t}]}return[]};function Vb(n,e){let t;return(t=n.message.match(/at position (\d+)/))?Math.min(+t[1],e.length):(t=n.message.match(/at line (\d+) column (\d+)/))?Math.min(e.line(+t[1]).from+ +t[2]-1,e.length):0}const Nb=Ui.define({name:"json",parser:Ib.configure({props:[Ms.add({Object:ya({except:/^\s*\}/}),Array:ya({except:/^\s*\]/})}),Vo.add({"Object Array":sf})]}),languageData:{closeBrackets:{brackets:["[","{",'"']},indentOnInput:/^\s*[\}\]]$/}});function Zb(){return new ef(Nb)}export{P as E,d1 as R,yf as S,Gb as a,Zb as j,n1 as o,jb as p}; diff --git a/webui/dist/assets/dnd-Dyi3CnuX.js b/webui/dist/assets/dnd-Dyi3CnuX.js new file mode 100644 index 00000000..e0429073 --- /dev/null +++ b/webui/dist/assets/dnd-Dyi3CnuX.js @@ -0,0 +1,5 @@ +import{r as c,R as P,b as Oe}from"./router-CWhjJi2n.js";function Rn(){for(var e=arguments.length,t=new Array(e),n=0;nr=>{t.forEach(o=>o(r))},t)}const et=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function me(e){const t=Object.prototype.toString.call(e);return t==="[object Window]"||t==="[object global]"}function pt(e){return"nodeType"in e}function B(e){var t,n;return e?me(e)?e:pt(e)&&(t=(n=e.ownerDocument)==null?void 0:n.defaultView)!=null?t:window:window}function bt(e){const{Document:t}=B(e);return e instanceof t}function Be(e){return me(e)?!1:e instanceof B(e).HTMLElement}function Ut(e){return e instanceof B(e).SVGElement}function ye(e){return e?me(e)?e.document:pt(e)?bt(e)?e:Be(e)||Ut(e)?e.ownerDocument:document:document:document}const Q=et?c.useLayoutEffect:c.useEffect;function wt(e){const t=c.useRef(e);return Q(()=>{t.current=e}),c.useCallback(function(){for(var n=arguments.length,r=new Array(n),o=0;o{e.current=setInterval(r,o)},[]),n=c.useCallback(()=>{e.current!==null&&(clearInterval(e.current),e.current=null)},[]);return[t,n]}function ke(e,t){t===void 0&&(t=[e]);const n=c.useRef(e);return Q(()=>{n.current!==e&&(n.current=e)},t),n}function Fe(e,t){const n=c.useRef();return c.useMemo(()=>{const r=e(n.current);return n.current=r,r},[...t])}function Ge(e){const t=wt(e),n=c.useRef(null),r=c.useCallback(o=>{o!==n.current&&t?.(o,n.current),n.current=o},[]);return[n,r]}function dt(e){const t=c.useRef();return c.useEffect(()=>{t.current=e},[e]),t.current}let at={};function $e(e,t){return c.useMemo(()=>{if(t)return t;const n=at[e]==null?0:at[e]+1;return at[e]=n,e+"-"+n},[e,t])}function Wt(e){return function(t){for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o{const a=Object.entries(s);for(const[l,u]of a){const f=i[l];f!=null&&(i[l]=f+e*u)}return i},{...t})}}const we=Wt(1),ze=Wt(-1);function En(e){return"clientX"in e&&"clientY"in e}function mt(e){if(!e)return!1;const{KeyboardEvent:t}=B(e.target);return t&&e instanceof t}function Mn(e){if(!e)return!1;const{TouchEvent:t}=B(e.target);return t&&e instanceof t}function ft(e){if(Mn(e)){if(e.touches&&e.touches.length){const{clientX:t,clientY:n}=e.touches[0];return{x:t,y:n}}else if(e.changedTouches&&e.changedTouches.length){const{clientX:t,clientY:n}=e.changedTouches[0];return{x:t,y:n}}}return En(e)?{x:e.clientX,y:e.clientY}:null}const Je=Object.freeze({Translate:{toString(e){if(!e)return;const{x:t,y:n}=e;return"translate3d("+(t?Math.round(t):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(e){if(!e)return;const{scaleX:t,scaleY:n}=e;return"scaleX("+t+") scaleY("+n+")"}},Transform:{toString(e){if(e)return[Je.Translate.toString(e),Je.Scale.toString(e)].join(" ")}},Transition:{toString(e){let{property:t,duration:n,easing:r}=e;return t+" "+n+"ms "+r}}}),Ot="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function In(e){return e.matches(Ot)?e:e.querySelector(Ot)}const An={display:"none"};function On(e){let{id:t,value:n}=e;return P.createElement("div",{id:t,style:An},n)}function Tn(e){let{id:t,announcement:n,ariaLiveType:r="assertive"}=e;const o={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return P.createElement("div",{id:t,style:o,role:"status","aria-live":r,"aria-atomic":!0},n)}function Nn(){const[e,t]=c.useState("");return{announce:c.useCallback(r=>{r!=null&&t(r)},[]),announcement:e}}const Ht=c.createContext(null);function Ln(e){const t=c.useContext(Ht);c.useEffect(()=>{if(!t)throw new Error("useDndMonitor must be used within a children of ");return t(e)},[e,t])}function kn(){const[e]=c.useState(()=>new Set),t=c.useCallback(r=>(e.add(r),()=>e.delete(r)),[e]);return[c.useCallback(r=>{let{type:o,event:i}=r;e.forEach(s=>{var a;return(a=s[o])==null?void 0:a.call(s,i)})},[e]),t]}const zn={draggable:` + To pick up a draggable item, press the space bar. + While dragging, use the arrow keys to move the item. + Press space again to drop the item in its new position, or press escape to cancel. + `},Pn={onDragStart(e){let{active:t}=e;return"Picked up draggable item "+t.id+"."},onDragOver(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was moved over droppable area "+n.id+".":"Draggable item "+t.id+" is no longer over a droppable area."},onDragEnd(e){let{active:t,over:n}=e;return n?"Draggable item "+t.id+" was dropped over droppable area "+n.id:"Draggable item "+t.id+" was dropped."},onDragCancel(e){let{active:t}=e;return"Dragging was cancelled. Draggable item "+t.id+" was dropped."}};function Bn(e){let{announcements:t=Pn,container:n,hiddenTextDescribedById:r,screenReaderInstructions:o=zn}=e;const{announce:i,announcement:s}=Nn(),a=$e("DndLiveRegion"),[l,u]=c.useState(!1);if(c.useEffect(()=>{u(!0)},[]),Ln(c.useMemo(()=>({onDragStart(d){let{active:g}=d;i(t.onDragStart({active:g}))},onDragMove(d){let{active:g,over:h}=d;t.onDragMove&&i(t.onDragMove({active:g,over:h}))},onDragOver(d){let{active:g,over:h}=d;i(t.onDragOver({active:g,over:h}))},onDragEnd(d){let{active:g,over:h}=d;i(t.onDragEnd({active:g,over:h}))},onDragCancel(d){let{active:g,over:h}=d;i(t.onDragCancel({active:g,over:h}))}}),[i,t])),!l)return null;const f=P.createElement(P.Fragment,null,P.createElement(On,{id:r,value:o.draggable}),P.createElement(Tn,{id:a,announcement:s}));return n?Oe.createPortal(f,n):f}var O;(function(e){e.DragStart="dragStart",e.DragMove="dragMove",e.DragEnd="dragEnd",e.DragCancel="dragCancel",e.DragOver="dragOver",e.RegisterDroppable="registerDroppable",e.SetDroppableDisabled="setDroppableDisabled",e.UnregisterDroppable="unregisterDroppable"})(O||(O={}));function _e(){}function io(e,t){return c.useMemo(()=>({sensor:e,options:t??{}}),[e,t])}function so(){for(var e=arguments.length,t=new Array(e),n=0;n[...t].filter(r=>r!=null),[...t])}const V=Object.freeze({x:0,y:0});function Kt(e,t){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function Vt(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return n-r}function Fn(e,t){let{data:{value:n}}=e,{data:{value:r}}=t;return r-n}function Tt(e){let{left:t,top:n,height:r,width:o}=e;return[{x:t,y:n},{x:t+o,y:n},{x:t,y:n+r},{x:t+o,y:n+r}]}function qt(e,t){if(!e||e.length===0)return null;const[n]=e;return n[t]}function Nt(e,t,n){return t===void 0&&(t=e.left),n===void 0&&(n=e.top),{x:t+e.width*.5,y:n+e.height*.5}}const ao=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const o=Nt(t,t.left,t.top),i=[];for(const s of r){const{id:a}=s,l=n.get(a);if(l){const u=Kt(Nt(l),o);i.push({id:a,data:{droppableContainer:s,value:u}})}}return i.sort(Vt)},$n=e=>{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const o=Tt(t),i=[];for(const s of r){const{id:a}=s,l=n.get(a);if(l){const u=Tt(l),f=o.reduce((g,h,C)=>g+Kt(u[C],h),0),d=Number((f/4).toFixed(4));i.push({id:a,data:{droppableContainer:s,value:d}})}}return i.sort(Vt)};function Xn(e,t){const n=Math.max(t.top,e.top),r=Math.max(t.left,e.left),o=Math.min(t.left+t.width,e.left+e.width),i=Math.min(t.top+t.height,e.top+e.height),s=o-r,a=i-n;if(r{let{collisionRect:t,droppableRects:n,droppableContainers:r}=e;const o=[];for(const i of r){const{id:s}=i,a=n.get(s);if(a){const l=Xn(a,t);l>0&&o.push({id:s,data:{droppableContainer:i,value:l}})}}return o.sort(Fn)};function jn(e,t,n){return{...e,scaleX:t&&n?t.width/n.width:1,scaleY:t&&n?t.height/n.height:1}}function Gt(e,t){return e&&t?{x:e.left-t.left,y:e.top-t.top}:V}function Un(e){return function(n){for(var r=arguments.length,o=new Array(r>1?r-1:0),i=1;i({...s,top:s.top+e*a.y,bottom:s.bottom+e*a.y,left:s.left+e*a.x,right:s.right+e*a.x}),{...n})}}const Wn=Un(1);function Hn(e){if(e.startsWith("matrix3d(")){const t=e.slice(9,-1).split(/, /);return{x:+t[12],y:+t[13],scaleX:+t[0],scaleY:+t[5]}}else if(e.startsWith("matrix(")){const t=e.slice(7,-1).split(/, /);return{x:+t[4],y:+t[5],scaleX:+t[0],scaleY:+t[3]}}return null}function Kn(e,t,n){const r=Hn(t);if(!r)return e;const{scaleX:o,scaleY:i,x:s,y:a}=r,l=e.left-s-(1-o)*parseFloat(n),u=e.top-a-(1-i)*parseFloat(n.slice(n.indexOf(" ")+1)),f=o?e.width/o:e.width,d=i?e.height/i:e.height;return{width:f,height:d,top:u,right:l+f,bottom:u+d,left:l}}const Vn={ignoreTransform:!1};function xe(e,t){t===void 0&&(t=Vn);let n=e.getBoundingClientRect();if(t.ignoreTransform){const{transform:u,transformOrigin:f}=B(e).getComputedStyle(e);u&&(n=Kn(n,u,f))}const{top:r,left:o,width:i,height:s,bottom:a,right:l}=n;return{top:r,left:o,width:i,height:s,bottom:a,right:l}}function Lt(e){return xe(e,{ignoreTransform:!0})}function qn(e){const t=e.innerWidth,n=e.innerHeight;return{top:0,left:0,right:t,bottom:n,width:t,height:n}}function Gn(e,t){return t===void 0&&(t=B(e).getComputedStyle(e)),t.position==="fixed"}function Jn(e,t){t===void 0&&(t=B(e).getComputedStyle(e));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(o=>{const i=t[o];return typeof i=="string"?n.test(i):!1})}function tt(e,t){const n=[];function r(o){if(t!=null&&n.length>=t||!o)return n;if(bt(o)&&o.scrollingElement!=null&&!n.includes(o.scrollingElement))return n.push(o.scrollingElement),n;if(!Be(o)||Ut(o)||n.includes(o))return n;const i=B(e).getComputedStyle(o);return o!==e&&Jn(o,i)&&n.push(o),Gn(o,i)?n:r(o.parentNode)}return e?r(e):n}function Jt(e){const[t]=tt(e,1);return t??null}function ct(e){return!et||!e?null:me(e)?e:pt(e)?bt(e)||e===ye(e).scrollingElement?window:Be(e)?e:null:null}function _t(e){return me(e)?e.scrollX:e.scrollLeft}function Qt(e){return me(e)?e.scrollY:e.scrollTop}function ht(e){return{x:_t(e),y:Qt(e)}}var N;(function(e){e[e.Forward=1]="Forward",e[e.Backward=-1]="Backward"})(N||(N={}));function Zt(e){return!et||!e?!1:e===document.scrollingElement}function en(e){const t={x:0,y:0},n=Zt(e)?{height:window.innerHeight,width:window.innerWidth}:{height:e.clientHeight,width:e.clientWidth},r={x:e.scrollWidth-n.width,y:e.scrollHeight-n.height},o=e.scrollTop<=t.y,i=e.scrollLeft<=t.x,s=e.scrollTop>=r.y,a=e.scrollLeft>=r.x;return{isTop:o,isLeft:i,isBottom:s,isRight:a,maxScroll:r,minScroll:t}}const _n={x:.2,y:.2};function Qn(e,t,n,r,o){let{top:i,left:s,right:a,bottom:l}=n;r===void 0&&(r=10),o===void 0&&(o=_n);const{isTop:u,isBottom:f,isLeft:d,isRight:g}=en(e),h={x:0,y:0},C={x:0,y:0},v={height:t.height*o.y,width:t.width*o.x};return!u&&i<=t.top+v.height?(h.y=N.Backward,C.y=r*Math.abs((t.top+v.height-i)/v.height)):!f&&l>=t.bottom-v.height&&(h.y=N.Forward,C.y=r*Math.abs((t.bottom-v.height-l)/v.height)),!g&&a>=t.right-v.width?(h.x=N.Forward,C.x=r*Math.abs((t.right-v.width-a)/v.width)):!d&&s<=t.left+v.width&&(h.x=N.Backward,C.x=r*Math.abs((t.left+v.width-s)/v.width)),{direction:h,speed:C}}function Zn(e){if(e===document.scrollingElement){const{innerWidth:i,innerHeight:s}=window;return{top:0,left:0,right:i,bottom:s,width:i,height:s}}const{top:t,left:n,right:r,bottom:o}=e.getBoundingClientRect();return{top:t,left:n,right:r,bottom:o,width:e.clientWidth,height:e.clientHeight}}function tn(e){return e.reduce((t,n)=>we(t,ht(n)),V)}function er(e){return e.reduce((t,n)=>t+_t(n),0)}function tr(e){return e.reduce((t,n)=>t+Qt(n),0)}function nr(e,t){if(t===void 0&&(t=xe),!e)return;const{top:n,left:r,bottom:o,right:i}=t(e);Jt(e)&&(o<=0||i<=0||n>=window.innerHeight||r>=window.innerWidth)&&e.scrollIntoView({block:"center",inline:"center"})}const rr=[["x",["left","right"],er],["y",["top","bottom"],tr]];class yt{constructor(t,n){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=tt(n),o=tn(r);this.rect={...t},this.width=t.width,this.height=t.height;for(const[i,s,a]of rr)for(const l of s)Object.defineProperty(this,l,{get:()=>{const u=a(r),f=o[i]-u;return this.rect[l]+f},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class Te{constructor(t){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(n=>{var r;return(r=this.target)==null?void 0:r.removeEventListener(...n)})},this.target=t}add(t,n,r){var o;(o=this.target)==null||o.addEventListener(t,n,r),this.listeners.push([t,n,r])}}function or(e){const{EventTarget:t}=B(e);return e instanceof t?e:ye(e)}function lt(e,t){const n=Math.abs(e.x),r=Math.abs(e.y);return typeof t=="number"?Math.sqrt(n**2+r**2)>t:"x"in t&&"y"in t?n>t.x&&r>t.y:"x"in t?n>t.x:"y"in t?r>t.y:!1}var W;(function(e){e.Click="click",e.DragStart="dragstart",e.Keydown="keydown",e.ContextMenu="contextmenu",e.Resize="resize",e.SelectionChange="selectionchange",e.VisibilityChange="visibilitychange"})(W||(W={}));function kt(e){e.preventDefault()}function ir(e){e.stopPropagation()}var w;(function(e){e.Space="Space",e.Down="ArrowDown",e.Right="ArrowRight",e.Left="ArrowLeft",e.Up="ArrowUp",e.Esc="Escape",e.Enter="Enter",e.Tab="Tab"})(w||(w={}));const nn={start:[w.Space,w.Enter],cancel:[w.Esc],end:[w.Space,w.Enter,w.Tab]},sr=(e,t)=>{let{currentCoordinates:n}=t;switch(e.code){case w.Right:return{...n,x:n.x+25};case w.Left:return{...n,x:n.x-25};case w.Down:return{...n,y:n.y+25};case w.Up:return{...n,y:n.y-25}}};class rn{constructor(t){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=t;const{event:{target:n}}=t;this.props=t,this.listeners=new Te(ye(n)),this.windowListeners=new Te(B(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(W.Resize,this.handleCancel),this.windowListeners.add(W.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(W.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:t,onStart:n}=this.props,r=t.node.current;r&&nr(r),n(V)}handleKeyDown(t){if(mt(t)){const{active:n,context:r,options:o}=this.props,{keyboardCodes:i=nn,coordinateGetter:s=sr,scrollBehavior:a="smooth"}=o,{code:l}=t;if(i.end.includes(l)){this.handleEnd(t);return}if(i.cancel.includes(l)){this.handleCancel(t);return}const{collisionRect:u}=r.current,f=u?{x:u.left,y:u.top}:V;this.referenceCoordinates||(this.referenceCoordinates=f);const d=s(t,{active:n,context:r.current,currentCoordinates:f});if(d){const g=ze(d,f),h={x:0,y:0},{scrollableAncestors:C}=r.current;for(const v of C){const p=t.code,{isTop:m,isRight:y,isLeft:b,isBottom:R,maxScroll:S,minScroll:E}=en(v),x=Zn(v),D={x:Math.min(p===w.Right?x.right-x.width/2:x.right,Math.max(p===w.Right?x.left:x.left+x.width/2,d.x)),y:Math.min(p===w.Down?x.bottom-x.height/2:x.bottom,Math.max(p===w.Down?x.top:x.top+x.height/2,d.y))},A=p===w.Right&&!y||p===w.Left&&!b,T=p===w.Down&&!R||p===w.Up&&!m;if(A&&D.x!==d.x){const I=v.scrollLeft+g.x,H=p===w.Right&&I<=S.x||p===w.Left&&I>=E.x;if(H&&!g.y){v.scrollTo({left:I,behavior:a});return}H?h.x=v.scrollLeft-I:h.x=p===w.Right?v.scrollLeft-S.x:v.scrollLeft-E.x,h.x&&v.scrollBy({left:-h.x,behavior:a});break}else if(T&&D.y!==d.y){const I=v.scrollTop+g.y,H=p===w.Down&&I<=S.y||p===w.Up&&I>=E.y;if(H&&!g.x){v.scrollTo({top:I,behavior:a});return}H?h.y=v.scrollTop-I:h.y=p===w.Down?v.scrollTop-S.y:v.scrollTop-E.y,h.y&&v.scrollBy({top:-h.y,behavior:a});break}}this.handleMove(t,we(ze(d,this.referenceCoordinates),h))}}}handleMove(t,n){const{onMove:r}=this.props;t.preventDefault(),r(n)}handleEnd(t){const{onEnd:n}=this.props;t.preventDefault(),this.detach(),n()}handleCancel(t){const{onCancel:n}=this.props;t.preventDefault(),this.detach(),n()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}rn.activators=[{eventName:"onKeyDown",handler:(e,t,n)=>{let{keyboardCodes:r=nn,onActivation:o}=t,{active:i}=n;const{code:s}=e.nativeEvent;if(r.start.includes(s)){const a=i.activatorNode.current;return a&&e.target!==a?!1:(e.preventDefault(),o?.({event:e.nativeEvent}),!0)}return!1}}];function zt(e){return!!(e&&"distance"in e)}function Pt(e){return!!(e&&"delay"in e)}class xt{constructor(t,n,r){var o;r===void 0&&(r=or(t.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=t,this.events=n;const{event:i}=t,{target:s}=i;this.props=t,this.events=n,this.document=ye(s),this.documentListeners=new Te(this.document),this.listeners=new Te(r),this.windowListeners=new Te(B(s)),this.initialCoordinates=(o=ft(i))!=null?o:V,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:t,props:{options:{activationConstraint:n,bypassActivationConstraint:r}}}=this;if(this.listeners.add(t.move.name,this.handleMove,{passive:!1}),this.listeners.add(t.end.name,this.handleEnd),t.cancel&&this.listeners.add(t.cancel.name,this.handleCancel),this.windowListeners.add(W.Resize,this.handleCancel),this.windowListeners.add(W.DragStart,kt),this.windowListeners.add(W.VisibilityChange,this.handleCancel),this.windowListeners.add(W.ContextMenu,kt),this.documentListeners.add(W.Keydown,this.handleKeydown),n){if(r!=null&&r({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(Pt(n)){this.timeoutId=setTimeout(this.handleStart,n.delay),this.handlePending(n);return}if(zt(n)){this.handlePending(n);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(t,n){const{active:r,onPending:o}=this.props;o(r,t,this.initialCoordinates,n)}handleStart(){const{initialCoordinates:t}=this,{onStart:n}=this.props;t&&(this.activated=!0,this.documentListeners.add(W.Click,ir,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(W.SelectionChange,this.removeTextSelection),n(t))}handleMove(t){var n;const{activated:r,initialCoordinates:o,props:i}=this,{onMove:s,options:{activationConstraint:a}}=i;if(!o)return;const l=(n=ft(t))!=null?n:V,u=ze(o,l);if(!r&&a){if(zt(a)){if(a.tolerance!=null&<(u,a.tolerance))return this.handleCancel();if(lt(u,a.distance))return this.handleStart()}if(Pt(a)&<(u,a.tolerance))return this.handleCancel();this.handlePending(a,u);return}t.cancelable&&t.preventDefault(),s(l)}handleEnd(){const{onAbort:t,onEnd:n}=this.props;this.detach(),this.activated||t(this.props.active),n()}handleCancel(){const{onAbort:t,onCancel:n}=this.props;this.detach(),this.activated||t(this.props.active),n()}handleKeydown(t){t.code===w.Esc&&this.handleCancel()}removeTextSelection(){var t;(t=this.document.getSelection())==null||t.removeAllRanges()}}const ar={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class on extends xt{constructor(t){const{event:n}=t,r=ye(n.target);super(t,ar,r)}}on.activators=[{eventName:"onPointerDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];const cr={move:{name:"mousemove"},end:{name:"mouseup"}};var gt;(function(e){e[e.RightClick=2]="RightClick"})(gt||(gt={}));class lr extends xt{constructor(t){super(t,cr,ye(t.event.target))}}lr.activators=[{eventName:"onMouseDown",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;return n.button===gt.RightClick?!1:(r?.({event:n}),!0)}}];const ut={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class ur extends xt{constructor(t){super(t,ut)}static setup(){return window.addEventListener(ut.move.name,t,{capture:!1,passive:!1}),function(){window.removeEventListener(ut.move.name,t)};function t(){}}}ur.activators=[{eventName:"onTouchStart",handler:(e,t)=>{let{nativeEvent:n}=e,{onActivation:r}=t;const{touches:o}=n;return o.length>1?!1:(r?.({event:n}),!0)}}];var Ne;(function(e){e[e.Pointer=0]="Pointer",e[e.DraggableRect=1]="DraggableRect"})(Ne||(Ne={}));var Qe;(function(e){e[e.TreeOrder=0]="TreeOrder",e[e.ReversedTreeOrder=1]="ReversedTreeOrder"})(Qe||(Qe={}));function dr(e){let{acceleration:t,activator:n=Ne.Pointer,canScroll:r,draggingRect:o,enabled:i,interval:s=5,order:a=Qe.TreeOrder,pointerCoordinates:l,scrollableAncestors:u,scrollableAncestorRects:f,delta:d,threshold:g}=e;const h=hr({delta:d,disabled:!i}),[C,v]=Sn(),p=c.useRef({x:0,y:0}),m=c.useRef({x:0,y:0}),y=c.useMemo(()=>{switch(n){case Ne.Pointer:return l?{top:l.y,bottom:l.y,left:l.x,right:l.x}:null;case Ne.DraggableRect:return o}},[n,o,l]),b=c.useRef(null),R=c.useCallback(()=>{const E=b.current;if(!E)return;const x=p.current.x*m.current.x,D=p.current.y*m.current.y;E.scrollBy(x,D)},[]),S=c.useMemo(()=>a===Qe.TreeOrder?[...u].reverse():u,[a,u]);c.useEffect(()=>{if(!i||!u.length||!y){v();return}for(const E of S){if(r?.(E)===!1)continue;const x=u.indexOf(E),D=f[x];if(!D)continue;const{direction:A,speed:T}=Qn(E,D,y,t,g);for(const I of["x","y"])h[I][A[I]]||(T[I]=0,A[I]=0);if(T.x>0||T.y>0){v(),b.current=E,C(R,s),p.current=T,m.current=A;return}}p.current={x:0,y:0},m.current={x:0,y:0},v()},[t,R,r,v,i,s,JSON.stringify(y),JSON.stringify(h),C,u,S,f,JSON.stringify(g)])}const fr={x:{[N.Backward]:!1,[N.Forward]:!1},y:{[N.Backward]:!1,[N.Forward]:!1}};function hr(e){let{delta:t,disabled:n}=e;const r=dt(t);return Fe(o=>{if(n||!r||!o)return fr;const i={x:Math.sign(t.x-r.x),y:Math.sign(t.y-r.y)};return{x:{[N.Backward]:o.x[N.Backward]||i.x===-1,[N.Forward]:o.x[N.Forward]||i.x===1},y:{[N.Backward]:o.y[N.Backward]||i.y===-1,[N.Forward]:o.y[N.Forward]||i.y===1}}},[n,t,r])}function gr(e,t){const n=t!=null?e.get(t):void 0,r=n?n.node.current:null;return Fe(o=>{var i;return t==null?null:(i=r??o)!=null?i:null},[r,t])}function vr(e,t){return c.useMemo(()=>e.reduce((n,r)=>{const{sensor:o}=r,i=o.activators.map(s=>({eventName:s.eventName,handler:t(s.handler,r)}));return[...n,...i]},[]),[e,t])}var Pe;(function(e){e[e.Always=0]="Always",e[e.BeforeDragging=1]="BeforeDragging",e[e.WhileDragging=2]="WhileDragging"})(Pe||(Pe={}));var vt;(function(e){e.Optimized="optimized"})(vt||(vt={}));const Bt=new Map;function pr(e,t){let{dragging:n,dependencies:r,config:o}=t;const[i,s]=c.useState(null),{frequency:a,measure:l,strategy:u}=o,f=c.useRef(e),d=p(),g=ke(d),h=c.useCallback(function(m){m===void 0&&(m=[]),!g.current&&s(y=>y===null?m:y.concat(m.filter(b=>!y.includes(b))))},[g]),C=c.useRef(null),v=Fe(m=>{if(d&&!n)return Bt;if(!m||m===Bt||f.current!==e||i!=null){const y=new Map;for(let b of e){if(!b)continue;if(i&&i.length>0&&!i.includes(b.id)&&b.rect.current){y.set(b.id,b.rect.current);continue}const R=b.node.current,S=R?new yt(l(R),R):null;b.rect.current=S,S&&y.set(b.id,S)}return y}return m},[e,i,n,d,l]);return c.useEffect(()=>{f.current=e},[e]),c.useEffect(()=>{d||h()},[n,d]),c.useEffect(()=>{i&&i.length>0&&s(null)},[JSON.stringify(i)]),c.useEffect(()=>{d||typeof a!="number"||C.current!==null||(C.current=setTimeout(()=>{h(),C.current=null},a))},[a,d,h,...r]),{droppableRects:v,measureDroppableContainers:h,measuringScheduled:i!=null};function p(){switch(u){case Pe.Always:return!1;case Pe.BeforeDragging:return n;default:return!n}}}function sn(e,t){return Fe(n=>e?n||(typeof t=="function"?t(e):e):null,[t,e])}function br(e,t){return sn(e,t)}function wr(e){let{callback:t,disabled:n}=e;const r=wt(t),o=c.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:i}=window;return new i(r)},[r,n]);return c.useEffect(()=>()=>o?.disconnect(),[o]),o}function nt(e){let{callback:t,disabled:n}=e;const r=wt(t),o=c.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:i}=window;return new i(r)},[n]);return c.useEffect(()=>()=>o?.disconnect(),[o]),o}function mr(e){return new yt(xe(e),e)}function Ft(e,t,n){t===void 0&&(t=mr);const[r,o]=c.useState(null);function i(){o(l=>{if(!e)return null;if(e.isConnected===!1){var u;return(u=l??n)!=null?u:null}const f=t(e);return JSON.stringify(l)===JSON.stringify(f)?l:f})}const s=wr({callback(l){if(e)for(const u of l){const{type:f,target:d}=u;if(f==="childList"&&d instanceof HTMLElement&&d.contains(e)){i();break}}}}),a=nt({callback:i});return Q(()=>{i(),e?(a?.observe(e),s?.observe(document.body,{childList:!0,subtree:!0})):(a?.disconnect(),s?.disconnect())},[e]),r}function yr(e){const t=sn(e);return Gt(e,t)}const $t=[];function xr(e){const t=c.useRef(e),n=Fe(r=>e?r&&r!==$t&&e&&t.current&&e.parentNode===t.current.parentNode?r:tt(e):$t,[e]);return c.useEffect(()=>{t.current=e},[e]),n}function Dr(e){const[t,n]=c.useState(null),r=c.useRef(e),o=c.useCallback(i=>{const s=ct(i.target);s&&n(a=>a?(a.set(s,ht(s)),new Map(a)):null)},[]);return c.useEffect(()=>{const i=r.current;if(e!==i){s(i);const a=e.map(l=>{const u=ct(l);return u?(u.addEventListener("scroll",o,{passive:!0}),[u,ht(u)]):null}).filter(l=>l!=null);n(a.length?new Map(a):null),r.current=e}return()=>{s(e),s(i)};function s(a){a.forEach(l=>{const u=ct(l);u?.removeEventListener("scroll",o)})}},[o,e]),c.useMemo(()=>e.length?t?Array.from(t.values()).reduce((i,s)=>we(i,s),V):tn(e):V,[e,t])}function Xt(e,t){t===void 0&&(t=[]);const n=c.useRef(null);return c.useEffect(()=>{n.current=null},t),c.useEffect(()=>{const r=e!==V;r&&!n.current&&(n.current=e),!r&&n.current&&(n.current=null)},[e]),n.current?ze(e,n.current):V}function Cr(e){c.useEffect(()=>{if(!et)return;const t=e.map(n=>{let{sensor:r}=n;return r.setup==null?void 0:r.setup()});return()=>{for(const n of t)n?.()}},e.map(t=>{let{sensor:n}=t;return n}))}function Rr(e,t){return c.useMemo(()=>e.reduce((n,r)=>{let{eventName:o,handler:i}=r;return n[o]=s=>{i(s,t)},n},{}),[e,t])}function an(e){return c.useMemo(()=>e?qn(e):null,[e])}const Yt=[];function Sr(e,t){t===void 0&&(t=xe);const[n]=e,r=an(n?B(n):null),[o,i]=c.useState(Yt);function s(){i(()=>e.length?e.map(l=>Zt(l)?r:new yt(t(l),l)):Yt)}const a=nt({callback:s});return Q(()=>{a?.disconnect(),s(),e.forEach(l=>a?.observe(l))},[e]),o}function Er(e){if(!e)return null;if(e.children.length>1)return e;const t=e.children[0];return Be(t)?t:e}function Mr(e){let{measure:t}=e;const[n,r]=c.useState(null),o=c.useCallback(u=>{for(const{target:f}of u)if(Be(f)){r(d=>{const g=t(f);return d?{...d,width:g.width,height:g.height}:g});break}},[t]),i=nt({callback:o}),s=c.useCallback(u=>{const f=Er(u);i?.disconnect(),f&&i?.observe(f),r(f?t(f):null)},[t,i]),[a,l]=Ge(s);return c.useMemo(()=>({nodeRef:a,rect:n,setRef:l}),[n,a,l])}const Ir=[{sensor:on,options:{}},{sensor:rn,options:{}}],Ar={current:{}},qe={draggable:{measure:Lt},droppable:{measure:Lt,strategy:Pe.WhileDragging,frequency:vt.Optimized},dragOverlay:{measure:xe}};class Le extends Map{get(t){var n;return t!=null&&(n=super.get(t))!=null?n:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(t=>{let{disabled:n}=t;return!n})}getNodeFor(t){var n,r;return(n=(r=this.get(t))==null?void 0:r.node.current)!=null?n:void 0}}const Or={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new Le,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:_e},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:qe,measureDroppableContainers:_e,windowRect:null,measuringScheduled:!1},Tr={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:_e,draggableNodes:new Map,over:null,measureDroppableContainers:_e},rt=c.createContext(Tr),cn=c.createContext(Or);function Nr(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new Le}}}function Lr(e,t){switch(t.type){case O.DragStart:return{...e,draggable:{...e.draggable,initialCoordinates:t.initialCoordinates,active:t.active}};case O.DragMove:return e.draggable.active==null?e:{...e,draggable:{...e.draggable,translate:{x:t.coordinates.x-e.draggable.initialCoordinates.x,y:t.coordinates.y-e.draggable.initialCoordinates.y}}};case O.DragEnd:case O.DragCancel:return{...e,draggable:{...e.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case O.RegisterDroppable:{const{element:n}=t,{id:r}=n,o=new Le(e.droppable.containers);return o.set(r,n),{...e,droppable:{...e.droppable,containers:o}}}case O.SetDroppableDisabled:{const{id:n,key:r,disabled:o}=t,i=e.droppable.containers.get(n);if(!i||r!==i.key)return e;const s=new Le(e.droppable.containers);return s.set(n,{...i,disabled:o}),{...e,droppable:{...e.droppable,containers:s}}}case O.UnregisterDroppable:{const{id:n,key:r}=t,o=e.droppable.containers.get(n);if(!o||r!==o.key)return e;const i=new Le(e.droppable.containers);return i.delete(n),{...e,droppable:{...e.droppable,containers:i}}}default:return e}}function kr(e){let{disabled:t}=e;const{active:n,activatorEvent:r,draggableNodes:o}=c.useContext(rt),i=dt(r),s=dt(n?.id);return c.useEffect(()=>{if(!t&&!r&&i&&s!=null){if(!mt(i)||document.activeElement===i.target)return;const a=o.get(s);if(!a)return;const{activatorNode:l,node:u}=a;if(!l.current&&!u.current)return;requestAnimationFrame(()=>{for(const f of[l.current,u.current]){if(!f)continue;const d=In(f);if(d){d.focus();break}}})}},[r,t,o,s,i]),null}function zr(e,t){let{transform:n,...r}=t;return e!=null&&e.length?e.reduce((o,i)=>i({transform:o,...r}),n):n}function Pr(e){return c.useMemo(()=>({draggable:{...qe.draggable,...e?.draggable},droppable:{...qe.droppable,...e?.droppable},dragOverlay:{...qe.dragOverlay,...e?.dragOverlay}}),[e?.draggable,e?.droppable,e?.dragOverlay])}function Br(e){let{activeNode:t,measure:n,initialRect:r,config:o=!0}=e;const i=c.useRef(!1),{x:s,y:a}=typeof o=="boolean"?{x:o,y:o}:o;Q(()=>{if(!s&&!a||!t){i.current=!1;return}if(i.current||!r)return;const u=t?.node.current;if(!u||u.isConnected===!1)return;const f=n(u),d=Gt(f,r);if(s||(d.x=0),a||(d.y=0),i.current=!0,Math.abs(d.x)>0||Math.abs(d.y)>0){const g=Jt(u);g&&g.scrollBy({top:d.y,left:d.x})}},[t,s,a,r,n])}const ln=c.createContext({...V,scaleX:1,scaleY:1});var ue;(function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initializing=1]="Initializing",e[e.Initialized=2]="Initialized"})(ue||(ue={}));const co=c.memo(function(t){var n,r,o,i;let{id:s,accessibility:a,autoScroll:l=!0,children:u,sensors:f=Ir,collisionDetection:d=Yn,measuring:g,modifiers:h,...C}=t;const v=c.useReducer(Lr,void 0,Nr),[p,m]=v,[y,b]=kn(),[R,S]=c.useState(ue.Uninitialized),E=R===ue.Initialized,{draggable:{active:x,nodes:D,translate:A},droppable:{containers:T}}=p,I=x!=null?D.get(x):null,H=c.useRef({initial:null,translated:null}),K=c.useMemo(()=>{var k;return x!=null?{id:x,data:(k=I?.data)!=null?k:Ar,rect:H}:null},[x,I]),q=c.useRef(null),[De,Xe]=c.useState(null),[F,Ye]=c.useState(null),Z=ke(C,Object.values(C)),Ce=$e("DndDescribedBy",s),je=c.useMemo(()=>T.getEnabled(),[T]),z=Pr(g),{droppableRects:ee,measureDroppableContainers:de,measuringScheduled:Re}=pr(je,{dragging:E,dependencies:[A.x,A.y],config:z.droppable}),j=gr(D,x),Ue=c.useMemo(()=>F?ft(F):null,[F]),oe=Cn(),te=br(j,z.draggable.measure);Br({activeNode:x!=null?D.get(x):null,config:oe.layoutShiftCompensation,initialRect:te,measure:z.draggable.measure});const M=Ft(j,z.draggable.measure,te),Se=Ft(j?j.parentElement:null),G=c.useRef({activatorEvent:null,active:null,activeNode:j,collisionRect:null,collisions:null,droppableRects:ee,draggableNodes:D,draggingNode:null,draggingNodeRect:null,droppableContainers:T,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),fe=T.getNodeFor((n=G.current.over)==null?void 0:n.id),ne=Mr({measure:z.dragOverlay.measure}),he=(r=ne.nodeRef.current)!=null?r:j,ge=E?(o=ne.rect)!=null?o:M:null,Dt=!!(ne.nodeRef.current&&ne.rect),Ct=yr(Dt?null:M),ot=an(he?B(he):null),ie=xr(E?fe??j:null),We=Sr(ie),He=zr(h,{transform:{x:A.x-Ct.x,y:A.y-Ct.y,scaleX:1,scaleY:1},activatorEvent:F,active:K,activeNodeRect:M,containerNodeRect:Se,draggingNodeRect:ge,over:G.current.over,overlayNodeRect:ne.rect,scrollableAncestors:ie,scrollableAncestorRects:We,windowRect:ot}),Rt=Ue?we(Ue,A):null,St=Dr(ie),pn=Xt(St),bn=Xt(St,[M]),ve=we(He,pn),pe=ge?Wn(ge,He):null,Ee=K&&pe?d({active:K,collisionRect:pe,droppableRects:ee,droppableContainers:je,pointerCoordinates:Rt}):null,Et=qt(Ee,"id"),[se,Mt]=c.useState(null),wn=Dt?He:we(He,bn),mn=jn(wn,(i=se?.rect)!=null?i:null,M),it=c.useRef(null),It=c.useCallback((k,$)=>{let{sensor:X,options:ae}=$;if(q.current==null)return;const U=D.get(q.current);if(!U)return;const Y=k.nativeEvent,J=new X({active:q.current,activeNode:U,event:Y,options:ae,context:G,onAbort(L){if(!D.get(L))return;const{onDragAbort:_}=Z.current,re={id:L};_?.(re),y({type:"onDragAbort",event:re})},onPending(L,ce,_,re){if(!D.get(L))return;const{onDragPending:Ie}=Z.current,le={id:L,constraint:ce,initialCoordinates:_,offset:re};Ie?.(le),y({type:"onDragPending",event:le})},onStart(L){const ce=q.current;if(ce==null)return;const _=D.get(ce);if(!_)return;const{onDragStart:re}=Z.current,Me={activatorEvent:Y,active:{id:ce,data:_.data,rect:H}};Oe.unstable_batchedUpdates(()=>{re?.(Me),S(ue.Initializing),m({type:O.DragStart,initialCoordinates:L,active:ce}),y({type:"onDragStart",event:Me}),Xe(it.current),Ye(Y)})},onMove(L){m({type:O.DragMove,coordinates:L})},onEnd:be(O.DragEnd),onCancel:be(O.DragCancel)});it.current=J;function be(L){return async function(){const{active:_,collisions:re,over:Me,scrollAdjustedTranslate:Ie}=G.current;let le=null;if(_&&Ie){const{cancelDrop:Ae}=Z.current;le={activatorEvent:Y,active:_,collisions:re,delta:Ie,over:Me},L===O.DragEnd&&typeof Ae=="function"&&await Promise.resolve(Ae(le))&&(L=O.DragCancel)}q.current=null,Oe.unstable_batchedUpdates(()=>{m({type:L}),S(ue.Uninitialized),Mt(null),Xe(null),Ye(null),it.current=null;const Ae=L===O.DragEnd?"onDragEnd":"onDragCancel";if(le){const st=Z.current[Ae];st?.(le),y({type:Ae,event:le})}})}}},[D]),yn=c.useCallback((k,$)=>(X,ae)=>{const U=X.nativeEvent,Y=D.get(ae);if(q.current!==null||!Y||U.dndKit||U.defaultPrevented)return;const J={active:Y};k(X,$.options,J)===!0&&(U.dndKit={capturedBy:$.sensor},q.current=ae,It(X,$))},[D,It]),At=vr(f,yn);Cr(f),Q(()=>{M&&R===ue.Initializing&&S(ue.Initialized)},[M,R]),c.useEffect(()=>{const{onDragMove:k}=Z.current,{active:$,activatorEvent:X,collisions:ae,over:U}=G.current;if(!$||!X)return;const Y={active:$,activatorEvent:X,collisions:ae,delta:{x:ve.x,y:ve.y},over:U};Oe.unstable_batchedUpdates(()=>{k?.(Y),y({type:"onDragMove",event:Y})})},[ve.x,ve.y]),c.useEffect(()=>{const{active:k,activatorEvent:$,collisions:X,droppableContainers:ae,scrollAdjustedTranslate:U}=G.current;if(!k||q.current==null||!$||!U)return;const{onDragOver:Y}=Z.current,J=ae.get(Et),be=J&&J.rect.current?{id:J.id,rect:J.rect.current,data:J.data,disabled:J.disabled}:null,L={active:k,activatorEvent:$,collisions:X,delta:{x:U.x,y:U.y},over:be};Oe.unstable_batchedUpdates(()=>{Mt(be),Y?.(L),y({type:"onDragOver",event:L})})},[Et]),Q(()=>{G.current={activatorEvent:F,active:K,activeNode:j,collisionRect:pe,collisions:Ee,droppableRects:ee,draggableNodes:D,draggingNode:he,draggingNodeRect:ge,droppableContainers:T,over:se,scrollableAncestors:ie,scrollAdjustedTranslate:ve},H.current={initial:ge,translated:pe}},[K,j,Ee,pe,D,he,ge,ee,T,se,ie,ve]),dr({...oe,delta:A,draggingRect:pe,pointerCoordinates:Rt,scrollableAncestors:ie,scrollableAncestorRects:We});const xn=c.useMemo(()=>({active:K,activeNode:j,activeNodeRect:M,activatorEvent:F,collisions:Ee,containerNodeRect:Se,dragOverlay:ne,draggableNodes:D,droppableContainers:T,droppableRects:ee,over:se,measureDroppableContainers:de,scrollableAncestors:ie,scrollableAncestorRects:We,measuringConfiguration:z,measuringScheduled:Re,windowRect:ot}),[K,j,M,F,Ee,Se,ne,D,T,ee,se,de,ie,We,z,Re,ot]),Dn=c.useMemo(()=>({activatorEvent:F,activators:At,active:K,activeNodeRect:M,ariaDescribedById:{draggable:Ce},dispatch:m,draggableNodes:D,over:se,measureDroppableContainers:de}),[F,At,K,M,m,Ce,D,se,de]);return P.createElement(Ht.Provider,{value:b},P.createElement(rt.Provider,{value:Dn},P.createElement(cn.Provider,{value:xn},P.createElement(ln.Provider,{value:mn},u)),P.createElement(kr,{disabled:a?.restoreFocus===!1})),P.createElement(Bn,{...a,hiddenTextDescribedById:Ce}));function Cn(){const k=De?.autoScrollEnabled===!1,$=typeof l=="object"?l.enabled===!1:l===!1,X=E&&!k&&!$;return typeof l=="object"?{...l,enabled:X}:{enabled:X}}}),Fr=c.createContext(null),jt="button",$r="Draggable";function Xr(e){let{id:t,data:n,disabled:r=!1,attributes:o}=e;const i=$e($r),{activators:s,activatorEvent:a,active:l,activeNodeRect:u,ariaDescribedById:f,draggableNodes:d,over:g}=c.useContext(rt),{role:h=jt,roleDescription:C="draggable",tabIndex:v=0}=o??{},p=l?.id===t,m=c.useContext(p?ln:Fr),[y,b]=Ge(),[R,S]=Ge(),E=Rr(s,t),x=ke(n);Q(()=>(d.set(t,{id:t,key:i,node:y,activatorNode:R,data:x}),()=>{const A=d.get(t);A&&A.key===i&&d.delete(t)}),[d,t]);const D=c.useMemo(()=>({role:h,tabIndex:v,"aria-disabled":r,"aria-pressed":p&&h===jt?!0:void 0,"aria-roledescription":C,"aria-describedby":f.draggable}),[r,h,v,p,C,f.draggable]);return{active:l,activatorEvent:a,activeNodeRect:u,attributes:D,isDragging:p,listeners:r?void 0:E,node:y,over:g,setNodeRef:b,setActivatorNodeRef:S,transform:m}}function Yr(){return c.useContext(cn)}const jr="Droppable",Ur={timeout:25};function Wr(e){let{data:t,disabled:n=!1,id:r,resizeObserverConfig:o}=e;const i=$e(jr),{active:s,dispatch:a,over:l,measureDroppableContainers:u}=c.useContext(rt),f=c.useRef({disabled:n}),d=c.useRef(!1),g=c.useRef(null),h=c.useRef(null),{disabled:C,updateMeasurementsFor:v,timeout:p}={...Ur,...o},m=ke(v??r),y=c.useCallback(()=>{if(!d.current){d.current=!0;return}h.current!=null&&clearTimeout(h.current),h.current=setTimeout(()=>{u(Array.isArray(m.current)?m.current:[m.current]),h.current=null},p)},[p]),b=nt({callback:y,disabled:C||!s}),R=c.useCallback((D,A)=>{b&&(A&&(b.unobserve(A),d.current=!1),D&&b.observe(D))},[b]),[S,E]=Ge(R),x=ke(t);return c.useEffect(()=>{!b||!S.current||(b.disconnect(),d.current=!1,b.observe(S.current))},[S,b]),c.useEffect(()=>(a({type:O.RegisterDroppable,element:{id:r,key:i,disabled:n,node:S,rect:g,data:x}}),()=>a({type:O.UnregisterDroppable,key:i,id:r})),[r]),c.useEffect(()=>{n!==f.current.disabled&&(a({type:O.SetDroppableDisabled,id:r,key:i,disabled:n}),f.current.disabled=n)},[r,i,n,a]),{active:s,rect:g,isOver:l?.id===r,node:S,over:l,setNodeRef:E}}function un(e,t,n){const r=e.slice();return r.splice(n<0?r.length+n:n,0,r.splice(t,1)[0]),r}function Hr(e,t){return e.reduce((n,r,o)=>{const i=t.get(r);return i&&(n[o]=i),n},Array(e.length))}function Ke(e){return e!==null&&e>=0}function Kr(e,t){if(e===t)return!0;if(e.length!==t.length)return!1;for(let n=0;n{var t;let{rects:n,activeNodeRect:r,activeIndex:o,overIndex:i,index:s}=e;const a=(t=n[o])!=null?t:r;if(!a)return null;const l=qr(n,s,o);if(s===o){const u=n[i];return u?{x:oo&&s<=i?{x:-a.width-l,y:0,...Ve}:s=i?{x:a.width+l,y:0,...Ve}:{x:0,y:0,...Ve}};function qr(e,t,n){const r=e[t],o=e[t-1],i=e[t+1];return!r||!o&&!i?0:n{let{rects:t,activeIndex:n,overIndex:r,index:o}=e;const i=un(t,r,n),s=t[o],a=i[o];return!a||!s?null:{x:a.left-s.left,y:a.top-s.top,scaleX:a.width/s.width,scaleY:a.height/s.height}},fn="Sortable",hn=P.createContext({activeIndex:-1,containerId:fn,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:dn,disabled:{draggable:!1,droppable:!1}});function uo(e){let{children:t,id:n,items:r,strategy:o=dn,disabled:i=!1}=e;const{active:s,dragOverlay:a,droppableRects:l,over:u,measureDroppableContainers:f}=Yr(),d=$e(fn,n),g=a.rect!==null,h=c.useMemo(()=>r.map(E=>typeof E=="object"&&"id"in E?E.id:E),[r]),C=s!=null,v=s?h.indexOf(s.id):-1,p=u?h.indexOf(u.id):-1,m=c.useRef(h),y=!Kr(h,m.current),b=p!==-1&&v===-1||y,R=Vr(i);Q(()=>{y&&C&&f(h)},[y,h,C,f]),c.useEffect(()=>{m.current=h},[h]);const S=c.useMemo(()=>({activeIndex:v,containerId:d,disabled:R,disableTransforms:b,items:h,overIndex:p,useDragOverlay:g,sortedRects:Hr(h,l),strategy:o}),[v,d,R.draggable,R.droppable,b,h,p,l,g,o]);return P.createElement(hn.Provider,{value:S},t)}const Gr=e=>{let{id:t,items:n,activeIndex:r,overIndex:o}=e;return un(n,r,o).indexOf(t)},Jr=e=>{let{containerId:t,isSorting:n,wasDragging:r,index:o,items:i,newIndex:s,previousItems:a,previousContainerId:l,transition:u}=e;return!u||!r||a!==i&&o===s?!1:n?!0:s!==o&&t===l},_r={duration:200,easing:"ease"},gn="transform",Qr=Je.Transition.toString({property:gn,duration:0,easing:"linear"}),Zr={roleDescription:"sortable"};function eo(e){let{disabled:t,index:n,node:r,rect:o}=e;const[i,s]=c.useState(null),a=c.useRef(n);return Q(()=>{if(!t&&n!==a.current&&r.current){const l=o.current;if(l){const u=xe(r.current,{ignoreTransform:!0}),f={x:l.left-u.left,y:l.top-u.top,scaleX:l.width/u.width,scaleY:l.height/u.height};(f.x||f.y)&&s(f)}}n!==a.current&&(a.current=n)},[t,n,r,o]),c.useEffect(()=>{i&&s(null)},[i]),i}function fo(e){let{animateLayoutChanges:t=Jr,attributes:n,disabled:r,data:o,getNewIndex:i=Gr,id:s,strategy:a,resizeObserverConfig:l,transition:u=_r}=e;const{items:f,containerId:d,activeIndex:g,disabled:h,disableTransforms:C,sortedRects:v,overIndex:p,useDragOverlay:m,strategy:y}=c.useContext(hn),b=to(r,h),R=f.indexOf(s),S=c.useMemo(()=>({sortable:{containerId:d,index:R,items:f},...o}),[d,o,R,f]),E=c.useMemo(()=>f.slice(f.indexOf(s)),[f,s]),{rect:x,node:D,isOver:A,setNodeRef:T}=Wr({id:s,data:S,disabled:b.droppable,resizeObserverConfig:{updateMeasurementsFor:E,...l}}),{active:I,activatorEvent:H,activeNodeRect:K,attributes:q,setNodeRef:De,listeners:Xe,isDragging:F,over:Ye,setActivatorNodeRef:Z,transform:Ce}=Xr({id:s,data:S,attributes:{...Zr,...n},disabled:b.draggable}),je=Rn(T,De),z=!!I,ee=z&&!C&&Ke(g)&&Ke(p),de=!m&&F,Re=de&&ee?Ce:null,Ue=ee?Re??(a??y)({rects:v,activeNodeRect:K,activeIndex:g,overIndex:p,index:R}):null,oe=Ke(g)&&Ke(p)?i({id:s,items:f,activeIndex:g,overIndex:p}):R,te=I?.id,M=c.useRef({activeId:te,items:f,newIndex:oe,containerId:d}),Se=f!==M.current.items,G=t({active:I,containerId:d,isDragging:F,isSorting:z,id:s,index:R,items:f,newIndex:M.current.newIndex,previousItems:M.current.items,previousContainerId:M.current.containerId,transition:u,wasDragging:M.current.activeId!=null}),fe=eo({disabled:!G,index:R,node:D,rect:x});return c.useEffect(()=>{z&&M.current.newIndex!==oe&&(M.current.newIndex=oe),d!==M.current.containerId&&(M.current.containerId=d),f!==M.current.items&&(M.current.items=f)},[z,oe,d,f]),c.useEffect(()=>{if(te===M.current.activeId)return;if(te!=null&&M.current.activeId==null){M.current.activeId=te;return}const he=setTimeout(()=>{M.current.activeId=te},50);return()=>clearTimeout(he)},[te]),{active:I,activeIndex:g,attributes:q,data:S,rect:x,index:R,newIndex:oe,items:f,isOver:A,isSorting:z,isDragging:F,listeners:Xe,node:D,overIndex:p,over:Ye,setNodeRef:je,setActivatorNodeRef:Z,setDroppableNodeRef:T,setDraggableNodeRef:De,transform:fe??Ue,transition:ne()};function ne(){if(fe||Se&&M.current.newIndex===R)return Qr;if(!(de&&!mt(H)||!u)&&(z||G))return Je.Transition.toString({...u,property:gn})}}function to(e,t){var n,r;return typeof e=="boolean"?{draggable:e,droppable:!1}:{draggable:(n=e?.draggable)!=null?n:t.draggable,droppable:(r=e?.droppable)!=null?r:t.droppable}}function Ze(e){if(!e)return!1;const t=e.data.current;return!!(t&&"sortable"in t&&typeof t.sortable=="object"&&"containerId"in t.sortable&&"items"in t.sortable&&"index"in t.sortable)}const no=[w.Down,w.Right,w.Up,w.Left],ho=(e,t)=>{let{context:{active:n,collisionRect:r,droppableRects:o,droppableContainers:i,over:s,scrollableAncestors:a}}=t;if(no.includes(e.code)){if(e.preventDefault(),!n||!r)return;const l=[];i.getEnabled().forEach(d=>{if(!d||d!=null&&d.disabled)return;const g=o.get(d.id);if(g)switch(e.code){case w.Down:r.topg.top&&l.push(d);break;case w.Left:r.left>g.left&&l.push(d);break;case w.Right:r.left1&&(f=u[1].id),f!=null){const d=i.get(n.id),g=i.get(f),h=g?o.get(g.id):null,C=g?.node.current;if(C&&h&&d&&g){const p=tt(C).some((E,x)=>a[x]!==E),m=vn(d,g),y=ro(d,g),b=p||!m?{x:0,y:0}:{x:y?r.width-h.width:0,y:y?r.height-h.height:0},R={x:h.left,y:h.top};return b.x&&b.y?R:ze(R,b)}}}};function vn(e,t){return!Ze(e)||!Ze(t)?!1:e.data.current.sortable.containerId===t.data.current.sortable.containerId}function ro(e,t){return!Ze(e)||!Ze(t)||!vn(e,t)?!1:e.data.current.sortable.indext.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),M=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,c,o)=>o?o.toUpperCase():c.toLowerCase()),h=t=>{const a=M(t);return a.charAt(0).toUpperCase()+a.slice(1)},k=(...t)=>t.filter((a,c,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===c).join(" ").trim(),m=t=>{for(const a in t)if(a.startsWith("aria-")||a==="role"||a==="title")return!0};var v={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const x=s.forwardRef(({color:t="currentColor",size:a=24,strokeWidth:c=2,absoluteStrokeWidth:o,className:y="",children:n,iconNode:r,...d},p)=>s.createElement("svg",{ref:p,...v,width:a,height:a,stroke:t,strokeWidth:o?Number(c)*24/Number(a):c,className:k("lucide",y),...!n&&!m(d)&&{"aria-hidden":"true"},...d},[...r.map(([i,l])=>s.createElement(i,l)),...Array.isArray(n)?n:[n]]));const e=(t,a)=>{const c=s.forwardRef(({className:o,...y},n)=>s.createElement(x,{ref:n,iconNode:a,className:k(`lucide-${_(h(t))}`,`lucide-${t}`,o),...y}));return c.displayName=h(t),c};const f=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],y2=e("activity",f);const u=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],d2=e("arrow-left",u);const g=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],h2=e("arrow-right",g);const $=[["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],k2=e("ban",$);const N=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],r2=e("book-open",N);const w=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],p2=e("bot",w);const z=[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]],i2=e("boxes",z);const b=[["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z",key:"uouzyp"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M21 21a4 4 0 0 0-3.81-4",key:"1b0z45"}],["path",{d:"M21 5a4 4 0 0 1-3.55 3.97",key:"5cxbf6"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M3 21a4 4 0 0 1 3.81-4",key:"1fjd4g"}],["path",{d:"M3 5a4 4 0 0 0 3.55 3.97",key:"1d7oge"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M9 7.13V6a3 3 0 1 1 6 0v1.13",key:"1vgav8"}]],l2=e("bug",b);const q=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],_2=e("calendar",q);const C=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],M2=e("chart-column",C);const j=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],m2=e("check",j);const V=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],v2=e("chevron-down",V);const A=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],x2=e("chevron-left",A);const L=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],f2=e("chevron-right",L);const H=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],u2=e("chevron-up",H);const S=[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]],g2=e("chevrons-left",S);const P=[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]],$2=e("chevrons-right",P);const U=[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]],N2=e("chevrons-up-down",U);const T=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],w2=e("circle-alert",T);const Z=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],z2=e("circle-check",Z);const B=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],b2=e("circle-question-mark",B);const D=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662",key:"154egf"}]],q2=e("circle-user",D);const R=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],C2=e("circle-x",R);const E=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],j2=e("circle",E);const O=[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],V2=e("clock",O);const F=[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]],A2=e("code-xml",F);const I=[["path",{d:"M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z",key:"1t2lqe"}],["path",{d:"M10 21.9V14L2.1 9.1",key:"o7czzq"}],["path",{d:"m10 14 11.9-6.9",key:"zm5e20"}],["path",{d:"M14 19.8v-8.1",key:"159ecu"}],["path",{d:"M18 17.5V9.4",key:"11uown"}]],L2=e("container",I);const W=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],H2=e("copy",W);const G=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],S2=e("database",G);const K=[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]],P2=e("dollar-sign",K);const X=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],U2=e("download",X);const Q=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],T2=e("external-link",Q);const J=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],Z2=e("eye-off",J);const Y=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],B2=e("eye",Y);const e1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["circle",{cx:"11.5",cy:"14.5",r:"2.5",key:"1bq0ko"}],["path",{d:"M13.3 16.3 15 18",key:"2quom7"}]],D2=e("file-search",e1);const a1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],R2=e("file-text",a1);const t1=[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]],E2=e("folder-open",t1);const c1=[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]],O2=e("funnel",c1);const o1=[["path",{d:"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",key:"j76jl0"}],["path",{d:"M22 10v6",key:"1lu8f3"}],["path",{d:"M6 12.5V16a6 3 0 0 0 12 0v-3.5",key:"1r8lef"}]],F2=e("graduation-cap",o1);const n1=[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]],I2=e("grip-vertical",n1);const s1=[["line",{x1:"22",x2:"2",y1:"12",y2:"12",key:"1y58io"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}],["line",{x1:"6",x2:"6.01",y1:"16",y2:"16",key:"sgf278"}],["line",{x1:"10",x2:"10.01",y1:"16",y2:"16",key:"1l4acy"}]],W2=e("hard-drive",s1);const y1=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],G2=e("hash",y1);const d1=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]],K2=e("house",d1);const h1=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],X2=e("image",h1);const k1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],Q2=e("info",k1);const r1=[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]],J2=e("key",r1);const p1=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],Y2=e("loader-circle",p1);const i1=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],e0=e("lock",i1);const l1=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],a0=e("log-out",l1);const _1=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],t0=e("menu",_1);const M1=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]],c0=e("message-square",M1);const m1=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]],o0=e("moon",m1);const v1=[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]],n0=e("network",v1);const x1=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],s0=e("package",x1);const f1=[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]],y0=e("palette",f1);const u1=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]],d0=e("panels-top-left",u1);const g1=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]],h0=e("pause",g1);const $1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]],k0=e("pen",$1);const N1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],r0=e("pencil",N1);const w1=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],p0=e("play",w1);const z1=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],i0=e("plus",z1);const b1=[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]],l0=e("power",b1);const q1=[["path",{d:"M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z",key:"w46dr5"}]],_0=e("puzzle",q1);const C1=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],M0=e("refresh-cw",C1);const j1=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],m0=e("rotate-ccw",j1);const V1=[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]],v0=e("rotate-cw",V1);const A1=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],x0=e("save",A1);const L1=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],f0=e("search",L1);const H1=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],u0=e("send",H1);const S1=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],g0=e("server",S1);const P1=[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]],$0=e("settings-2",P1);const U1=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],N0=e("settings",U1);const T1=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]],w0=e("shield",T1);const Z1=[["path",{d:"M21 4v16",key:"7j8fe9"}],["path",{d:"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z",key:"zs4d6"}]],z0=e("skip-forward",Z1);const B1=[["path",{d:"M10 8h4",key:"1sr2af"}],["path",{d:"M12 21v-9",key:"17s77i"}],["path",{d:"M12 8V3",key:"13r4qs"}],["path",{d:"M17 16h4",key:"h1uq16"}],["path",{d:"M19 12V3",key:"o1uvq1"}],["path",{d:"M19 21v-5",key:"qua636"}],["path",{d:"M3 14h4",key:"bcjad9"}],["path",{d:"M5 10V3",key:"cb8scm"}],["path",{d:"M5 21v-7",key:"1w1uti"}]],b0=e("sliders-vertical",B1);const D1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]],q0=e("smile",D1);const R1=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],C0=e("sparkles",R1);const E1=[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]],j0=e("square-pen",E1);const O1=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],V0=e("star",O1);const F1=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],A0=e("sun",F1);const I1=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],L0=e("terminal",I1);const W1=[["path",{d:"M7 10v12",key:"1qc93n"}],["path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z",key:"emmmcr"}]],H0=e("thumbs-up",W1);const G1=[["path",{d:"M17 14V2",key:"8ymqnk"}],["path",{d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z",key:"m61m77"}]],S0=e("thumbs-down",G1);const K1=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],P0=e("trash-2",K1);const X1=[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]],U0=e("trending-up",X1);const Q1=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],T0=e("triangle-alert",Q1);const J1=[["path",{d:"M12 4v16",key:"1654pz"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2",key:"e0r10z"}],["path",{d:"M9 20h6",key:"s66wpe"}]],Z0=e("type",J1);const Y1=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],B0=e("upload",Y1);const e2=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],D0=e("user",e2);const a2=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],R0=e("users",a2);const t2=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],E0=e("wifi-off",t2);const c2=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]],O0=e("wifi",c2);const o2=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],F0=e("x",o2);const n2=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],I0=e("zap",n2);export{r0 as $,y2 as A,p2 as B,z2 as C,P2 as D,Z2 as E,R2 as F,K2 as G,W2 as H,Q2 as I,d2 as J,J2 as K,e0 as L,c0 as M,v2 as N,u2 as O,l0 as P,d0 as Q,M0 as R,N0 as S,U0 as T,B0 as U,A2 as V,x0 as W,F0 as X,i0 as Y,I0 as Z,D2 as _,w2 as a,g2 as a0,x2 as a1,f2 as a2,$2 as a3,N2 as a4,I2 as a5,F2 as a6,L2 as a7,s0 as a8,E2 as a9,r2 as aA,a0 as aB,v0 as aC,l2 as aD,O2 as aa,j0 as ab,k2 as ac,X2 as ad,G2 as ae,R0 as af,n0 as ag,_2 as ah,h0 as ai,p0 as aj,Z0 as ak,V0 as al,H0 as am,S0 as an,$0 as ao,O0 as ap,E0 as aq,k0 as ar,u0 as as,g0 as at,i2 as au,q2 as av,M2 as aw,j2 as ax,b0 as ay,t0 as az,m0 as b,_0 as c,S2 as d,V2 as e,y0 as f,w0 as g,T0 as h,m2 as i,H2 as j,B2 as k,C2 as l,P0 as m,U2 as n,A0 as o,o0 as p,b2 as q,L0 as r,T2 as s,Y2 as t,C0 as u,D0 as v,q0 as w,z0 as x,h2 as y,f0 as z}; diff --git a/webui/dist/assets/icons-CqUsKJFR.js b/webui/dist/assets/icons-CqUsKJFR.js deleted file mode 100644 index f4df2379..00000000 --- a/webui/dist/assets/icons-CqUsKJFR.js +++ /dev/null @@ -1 +0,0 @@ -import{r as s}from"./router-DQNkr8RI.js";const _=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),M=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,c,o)=>o?o.toUpperCase():c.toLowerCase()),d=t=>{const a=M(t);return a.charAt(0).toUpperCase()+a.slice(1)},k=(...t)=>t.filter((a,c,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===c).join(" ").trim(),m=t=>{for(const a in t)if(a.startsWith("aria-")||a==="role"||a==="title")return!0};var v={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const x=s.forwardRef(({color:t="currentColor",size:a=24,strokeWidth:c=2,absoluteStrokeWidth:o,className:y="",children:n,iconNode:r,...h},p)=>s.createElement("svg",{ref:p,...v,width:a,height:a,stroke:t,strokeWidth:o?Number(c)*24/Number(a):c,className:k("lucide",y),...!n&&!m(h)&&{"aria-hidden":"true"},...h},[...r.map(([i,l])=>s.createElement(i,l)),...Array.isArray(n)?n:[n]]));const e=(t,a)=>{const c=s.forwardRef(({className:o,...y},n)=>s.createElement(x,{ref:n,iconNode:a,className:k(`lucide-${_(d(t))}`,`lucide-${t}`,o),...y}));return c.displayName=d(t),c};const f=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],n2=e("activity",f);const u=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],s2=e("arrow-left",u);const g=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],y2=e("arrow-right",g);const $=[["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],h2=e("ban",$);const N=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],d2=e("book-open",N);const w=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],k2=e("bot",w);const z=[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]],r2=e("boxes",z);const b=[["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z",key:"uouzyp"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M21 21a4 4 0 0 0-3.81-4",key:"1b0z45"}],["path",{d:"M21 5a4 4 0 0 1-3.55 3.97",key:"5cxbf6"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M3 21a4 4 0 0 1 3.81-4",key:"1fjd4g"}],["path",{d:"M3 5a4 4 0 0 0 3.55 3.97",key:"1d7oge"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M9 7.13V6a3 3 0 1 1 6 0v1.13",key:"1vgav8"}]],p2=e("bug",b);const q=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],i2=e("calendar",q);const j=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],l2=e("chart-column",j);const C=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],_2=e("check",C);const V=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],M2=e("chevron-down",V);const A=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],m2=e("chevron-left",A);const L=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],v2=e("chevron-right",L);const H=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],x2=e("chevron-up",H);const S=[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]],f2=e("chevrons-left",S);const P=[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]],u2=e("chevrons-right",P);const U=[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]],g2=e("chevrons-up-down",U);const T=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],$2=e("circle-alert",T);const Z=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],N2=e("circle-check",Z);const B=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],w2=e("circle-question-mark",B);const R=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662",key:"154egf"}]],z2=e("circle-user",R);const E=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],b2=e("circle-x",E);const D=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],q2=e("circle",D);const O=[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],j2=e("clock",O);const F=[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]],C2=e("code-xml",F);const W=[["path",{d:"M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z",key:"1t2lqe"}],["path",{d:"M10 21.9V14L2.1 9.1",key:"o7czzq"}],["path",{d:"m10 14 11.9-6.9",key:"zm5e20"}],["path",{d:"M14 19.8v-8.1",key:"159ecu"}],["path",{d:"M18 17.5V9.4",key:"11uown"}]],V2=e("container",W);const I=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],A2=e("copy",I);const G=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],L2=e("database",G);const K=[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]],H2=e("dollar-sign",K);const X=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],S2=e("download",X);const Q=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],P2=e("external-link",Q);const J=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],U2=e("eye-off",J);const Y=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],T2=e("eye",Y);const e1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["circle",{cx:"11.5",cy:"14.5",r:"2.5",key:"1bq0ko"}],["path",{d:"M13.3 16.3 15 18",key:"2quom7"}]],Z2=e("file-search",e1);const a1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],B2=e("file-text",a1);const t1=[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]],R2=e("folder-open",t1);const c1=[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]],E2=e("funnel",c1);const o1=[["path",{d:"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",key:"j76jl0"}],["path",{d:"M22 10v6",key:"1lu8f3"}],["path",{d:"M6 12.5V16a6 3 0 0 0 12 0v-3.5",key:"1r8lef"}]],D2=e("graduation-cap",o1);const n1=[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]],O2=e("grip-vertical",n1);const s1=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],F2=e("hash",s1);const y1=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]],W2=e("house",y1);const h1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],I2=e("info",h1);const d1=[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]],G2=e("key",d1);const k1=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],K2=e("loader-circle",k1);const r1=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],X2=e("lock",r1);const p1=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],Q2=e("log-out",p1);const i1=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],J2=e("menu",i1);const l1=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]],Y2=e("message-square",l1);const _1=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]],e0=e("moon",_1);const M1=[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]],a0=e("network",M1);const m1=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],t0=e("package",m1);const v1=[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]],c0=e("palette",v1);const x1=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]],o0=e("panels-top-left",x1);const f1=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]],n0=e("pause",f1);const u1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]],s0=e("pen",u1);const g1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],y0=e("pencil",g1);const $1=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],h0=e("play",$1);const N1=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],d0=e("plus",N1);const w1=[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]],k0=e("power",w1);const z1=[["path",{d:"M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z",key:"w46dr5"}]],r0=e("puzzle",z1);const b1=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],p0=e("refresh-cw",b1);const q1=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],i0=e("rotate-ccw",q1);const j1=[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]],l0=e("rotate-cw",j1);const C1=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],_0=e("save",C1);const V1=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],M0=e("search",V1);const A1=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],m0=e("send",A1);const L1=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],v0=e("server",L1);const H1=[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]],x0=e("settings-2",H1);const S1=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],f0=e("settings",S1);const P1=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]],u0=e("shield",P1);const U1=[["path",{d:"M21 4v16",key:"7j8fe9"}],["path",{d:"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z",key:"zs4d6"}]],g0=e("skip-forward",U1);const T1=[["path",{d:"M10 8h4",key:"1sr2af"}],["path",{d:"M12 21v-9",key:"17s77i"}],["path",{d:"M12 8V3",key:"13r4qs"}],["path",{d:"M17 16h4",key:"h1uq16"}],["path",{d:"M19 12V3",key:"o1uvq1"}],["path",{d:"M19 21v-5",key:"qua636"}],["path",{d:"M3 14h4",key:"bcjad9"}],["path",{d:"M5 10V3",key:"cb8scm"}],["path",{d:"M5 21v-7",key:"1w1uti"}]],$0=e("sliders-vertical",T1);const Z1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]],N0=e("smile",Z1);const B1=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],w0=e("sparkles",B1);const R1=[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]],z0=e("square-pen",R1);const E1=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],b0=e("star",E1);const D1=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],q0=e("sun",D1);const O1=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],j0=e("terminal",O1);const F1=[["path",{d:"M7 10v12",key:"1qc93n"}],["path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z",key:"emmmcr"}]],C0=e("thumbs-up",F1);const W1=[["path",{d:"M17 14V2",key:"8ymqnk"}],["path",{d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z",key:"m61m77"}]],V0=e("thumbs-down",W1);const I1=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],A0=e("trash-2",I1);const G1=[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]],L0=e("trending-up",G1);const K1=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],H0=e("triangle-alert",K1);const X1=[["path",{d:"M12 4v16",key:"1654pz"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2",key:"e0r10z"}],["path",{d:"M9 20h6",key:"s66wpe"}]],S0=e("type",X1);const Q1=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],P0=e("upload",Q1);const J1=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],U0=e("user",J1);const Y1=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],T0=e("users",Y1);const e2=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],Z0=e("wifi-off",e2);const a2=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]],B0=e("wifi",a2);const t2=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],R0=e("x",t2);const c2=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],E0=e("zap",c2);export{v2 as $,n2 as A,k2 as B,N2 as C,H2 as D,U2 as E,B2 as F,o0 as G,W2 as H,I2 as I,C2 as J,G2 as K,X2 as L,Y2 as M,_0 as N,d0 as O,k0 as P,A0 as Q,p0 as R,f0 as S,L0 as T,U0 as U,Z2 as V,y0 as W,R0 as X,f2 as Y,E0 as Z,m2 as _,$2 as a,u2 as a0,g2 as a1,O2 as a2,D2 as a3,V2 as a4,t0 as a5,P0 as a6,R2 as a7,S2 as a8,E2 as a9,l0 as aA,p2 as aB,z0 as aa,h2 as ab,F2 as ac,T0 as ad,a0 as ae,i2 as af,n0 as ag,h0 as ah,S0 as ai,b0 as aj,C0 as ak,V0 as al,x0 as am,B0 as an,Z0 as ao,s0 as ap,m0 as aq,v0 as ar,r2 as as,z2 as at,l2 as au,q2 as av,$0 as aw,J2 as ax,d2 as ay,Q2 as az,i0 as b,r0 as c,L2 as d,j2 as e,c0 as f,u0 as g,H0 as h,_2 as i,A2 as j,T2 as k,b2 as l,q0 as m,e0 as n,w2 as o,j0 as p,P2 as q,K2 as r,w0 as s,N0 as t,g0 as u,y2 as v,M0 as w,s2 as x,M2 as y,x2 as z}; diff --git a/webui/dist/assets/index-CUrrfy9B.css b/webui/dist/assets/index-CUrrfy9B.css new file mode 100644 index 00000000..3696bf9e --- /dev/null +++ b/webui/dist/assets/index-CUrrfy9B.css @@ -0,0 +1 @@ +@charset "UTF-8";*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 0 0% 100%;--foreground: 222.2 84% 4.9%;--card: 0 0% 100%;--card-foreground: 222.2 84% 4.9%;--popover: 0 0% 100%;--popover-foreground: 222.2 84% 4.9%;--primary: 221.2 83.2% 53.3%;--primary-foreground: 210 40% 98%;--primary-gradient: none;--secondary: 210 40% 96.1%;--secondary-foreground: 222.2 47.4% 11.2%;--muted: 210 40% 96.1%;--muted-foreground: 215.4 16.3% 46.9%;--accent: 210 40% 96.1%;--accent-foreground: 222.2 47.4% 11.2%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 210 40% 98%;--border: 214.3 31.8% 91.4%;--input: 214.3 31.8% 91.4%;--ring: 221.2 83.2% 53.3%;--radius: .5rem;--chart-1: 221.2 83.2% 53.3%;--chart-2: 160 60% 45%;--chart-3: 30 80% 55%;--chart-4: 280 65% 60%;--chart-5: 340 75% 55%}.dark{--background: 222.2 84% 4.9%;--foreground: 210 40% 98%;--card: 222.2 84% 4.9%;--card-foreground: 210 40% 98%;--popover: 222.2 84% 4.9%;--popover-foreground: 210 40% 98%;--primary: 217.2 91.2% 59.8%;--primary-foreground: 222.2 47.4% 11.2%;--primary-gradient: none;--secondary: 217.2 32.6% 17.5%;--secondary-foreground: 210 40% 98%;--muted: 217.2 32.6% 17.5%;--muted-foreground: 215 20.2% 65.1%;--accent: 217.2 32.6% 17.5%;--accent-foreground: 210 40% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 210 40% 98%;--border: 217.2 32.6% 17.5%;--input: 217.2 32.6% 17.5%;--ring: 224.3 76.3% 48%;--chart-1: 217.2 91.2% 59.8%;--chart-2: 160 60% 50%;--chart-3: 30 80% 60%;--chart-4: 280 65% 65%;--chart-5: 340 75% 60%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-1\/4{bottom:25%}.bottom-4{bottom:1rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.left-1\/4{left:25%}.left-2{left:.5rem}.left-2\.5{left:.625rem}.left-3{left:.75rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-1\.5{right:.375rem}.right-1\/4{right:25%}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-1\/4{top:25%}.top-2{top:.5rem}.top-2\.5{top:.625rem}.top-3{top:.75rem}.top-4{top:1rem}.top-\[50\%\]{top:50%}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.order-1{order:1}.order-2{order:2}.col-span-2{grid-column:span 2 / span 2}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-mt-2{margin-top:-.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-10{margin-left:2.5rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-auto{aspect-ratio:auto}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:16 / 9}.size-4{width:1rem;height:1rem}.size-\[--cell-size\]{width:var(--cell-size);height:var(--cell-size)}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[--cell-size\]{height:var(--cell-size)}.h-\[1\.25rem\]{height:1.25rem}.h-\[1px\]{height:1px}.h-\[200px\]{height:200px}.h-\[250px\]{height:250px}.h-\[280px\]{height:280px}.h-\[300px\]{height:300px}.h-\[350px\]{height:350px}.h-\[400px\]{height:400px}.h-\[calc\(100vh-200px\)\]{height:calc(100vh - 200px)}.h-\[calc\(100vh-240px\)\]{height:calc(100vh - 240px)}.h-\[calc\(100vh-260px\)\]{height:calc(100vh - 260px)}.h-\[calc\(100vh-4rem\)\]{height:calc(100vh - 4rem)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\[--radix-context-menu-content-available-height\]{max-height:var(--radix-context-menu-content-available-height)}.max-h-\[--radix-select-content-available-height\]{max-height:var(--radix-select-content-available-height)}.max-h-\[300px\]{max-height:300px}.max-h-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[calc\(90vh-120px\)\]{max-height:calc(90vh - 120px)}.max-h-\[calc\(90vh-8rem\)\]{max-height:calc(90vh - 8rem)}.max-h-full{max-height:100%}.max-h-none{max-height:none}.max-h-screen{max-height:100vh}.min-h-0{min-height:0px}.min-h-10{min-height:2.5rem}.min-h-\[100px\]{min-height:100px}.min-h-\[300px\]{min-height:300px}.min-h-\[60px\]{min-height:60px}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[--cell-size\]{width:var(--cell-size)}.w-\[100px\]{width:100px}.w-\[120px\]{width:120px}.w-\[130px\]{width:130px}.w-\[1px\]{width:1px}.w-\[65px\]{width:65px}.w-\[95vw\]{width:95vw}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[--cell-size\]{min-width:var(--cell-size)}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[80px\]{min-width:80px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-32{max-width:8rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-\[150px\]{max-width:150px}.max-w-\[200px\]{max-width:200px}.max-w-\[60px\]{max-width:60px}.max-w-\[75\%\]{max-width:75%}.max-w-\[90\%\]{max-width:90%}.max-w-\[95vw\]{max-width:95vw}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\[--radix-context-menu-content-transform-origin\]{transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\[--radix-popover-content-transform-origin\]{transform-origin:var(--radix-popover-content-transform-origin)}.origin-\[--radix-select-content-transform-origin\]{transform-origin:var(--radix-select-content-transform-origin)}.origin-\[--radix-tooltip-content-transform-origin\]{transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.rounded-tr-sm{border-top-right-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-\[1\.5px\]{border-width:1.5px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[--color-border\]{border-color:var(--color-border)}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-500\/50{border-color:#f59e0b80}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-700{--tw-border-opacity: 1;border-color:rgb(29 78 216 / var(--tw-border-opacity, 1))}.border-border{border-color:hsl(var(--border))}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-current{border-color:currentColor}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-green-300{--tw-border-opacity: 1;border-color:rgb(134 239 172 / var(--tw-border-opacity, 1))}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.border-green-600{--tw-border-opacity: 1;border-color:rgb(22 163 74 / var(--tw-border-opacity, 1))}.border-green-700{--tw-border-opacity: 1;border-color:rgb(21 128 61 / var(--tw-border-opacity, 1))}.border-input{border-color:hsl(var(--input))}.border-muted{border-color:hsl(var(--muted))}.border-muted-foreground\/30{border-color:hsl(var(--muted-foreground) / .3)}.border-muted-foreground\/50{border-color:hsl(var(--muted-foreground) / .5)}.border-orange-200{--tw-border-opacity: 1;border-color:rgb(254 215 170 / var(--tw-border-opacity, 1))}.border-orange-600{--tw-border-opacity: 1;border-color:rgb(234 88 12 / var(--tw-border-opacity, 1))}.border-primary{border-color:hsl(var(--primary))}.border-primary\/20{border-color:hsl(var(--primary) / .2)}.border-primary\/30{border-color:hsl(var(--primary) / .3)}.border-primary\/50{border-color:hsl(var(--primary) / .5)}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-red-500\/50{border-color:#ef444480}.border-transparent{border-color:transparent}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-yellow-500\/50{border-color:#eab30880}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\[--color-bg\]{background-color:var(--color-bg)}.bg-accent{background-color:hsl(var(--accent))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-background{background-color:hsl(var(--background))}.bg-background\/50{background-color:hsl(var(--background) / .5)}.bg-background\/80{background-color:hsl(var(--background) / .8)}.bg-background\/95{background-color:hsl(var(--background) / .95)}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-black\/50{background-color:#00000080}.bg-black\/80{background-color:#000c}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-blue-900\/20{background-color:#1e3a8a33}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-card\/80{background-color:hsl(var(--card) / .8)}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-800\/20{background-color:#1f293733}.bg-gray-800\/30{background-color:#1f29374d}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground\/50{background-color:hsl(var(--muted-foreground) / .5)}.bg-muted\/20{background-color:hsl(var(--muted) / .2)}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-orange-600{--tw-bg-opacity: 1;background-color:rgb(234 88 12 / var(--tw-bg-opacity, 1))}.bg-pink-500{--tw-bg-opacity: 1;background-color:rgb(236 72 153 / var(--tw-bg-opacity, 1))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/20{background-color:hsl(var(--primary) / .2)}.bg-primary\/5{background-color:hsl(var(--primary) / .05)}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(168 85 247 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-red-900\/20{background-color:#7f1d1d33}.bg-red-900\/30{background-color:#7f1d1d4d}.bg-secondary{background-color:hsl(var(--secondary))}.bg-secondary\/5{background-color:hsl(var(--secondary) / .05)}.bg-slate-200{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity, 1))}.bg-slate-300{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity, 1))}.bg-slate-400{--tw-bg-opacity: 1;background-color:rgb(148 163 184 / var(--tw-bg-opacity, 1))}.bg-slate-700{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-200{--tw-bg-opacity: 1;background-color:rgb(254 240 138 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-yellow-500\/10{background-color:#eab3081a}.bg-yellow-500\/5{background-color:#eab3080d}.bg-yellow-900\/20{background-color:#713f1233}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-blue-500{--tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-500{--tw-gradient-from: #22c55e var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 197 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-500{--tw-gradient-from: #f97316 var(--tw-gradient-from-position);--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-primary\/5{--tw-gradient-from: hsl(var(--primary) / .05) var(--tw-gradient-from-position);--tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-500{--tw-gradient-from: #a855f7 var(--tw-gradient-from-position);--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-500{--tw-gradient-from: #ef4444 var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 68 68 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-200{--tw-gradient-from: #e2e8f0 var(--tw-gradient-from-position);--tw-gradient-to: rgb(226 232 240 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-300{--tw-gradient-from: #cbd5e1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(203 213 225 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-400{--tw-gradient-from: #94a3b8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(148 163 184 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-background{--tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), hsl(var(--background)) var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-blue-600{--tw-gradient-to: #2563eb var(--tw-gradient-to-position)}.to-cyan-500{--tw-gradient-to: #06b6d4 var(--tw-gradient-to-position)}.to-emerald-500{--tw-gradient-to: #10b981 var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to: #16a34a var(--tw-gradient-to-position)}.to-orange-500{--tw-gradient-to: #f97316 var(--tw-gradient-to-position)}.to-pink-500{--tw-gradient-to: #ec4899 var(--tw-gradient-to-position)}.to-primary\/10{--tw-gradient-to: hsl(var(--primary) / .1) var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to: #a855f7 var(--tw-gradient-to-position)}.to-secondary\/5{--tw-gradient-to: hsl(var(--secondary) / .05) var(--tw-gradient-to-position)}.to-slate-700{--tw-gradient-to: #334155 var(--tw-gradient-to-position)}.to-slate-800{--tw-gradient-to: #1e293b var(--tw-gradient-to-position)}.to-slate-900{--tw-gradient-to: #0f172a var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.fill-yellow-400{fill:#facc15}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[1px\]{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[--cell-size\]{padding-left:var(--cell-size);padding-right:var(--cell-size)}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pl-10{padding-left:2.5rem}.pl-11{padding-left:2.75rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-1{padding-right:.25rem}.pr-10{padding-right:2.5rem}.pr-16{padding-right:4rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.text-\[150px\]{font-size:150px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/50{color:hsl(var(--foreground) / .5)}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/50{color:hsl(var(--muted-foreground) / .5)}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-800{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.text-orange-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary\/10{color:hsl(var(--primary) / .1)}.text-primary\/30{color:hsl(var(--primary) / .3)}.text-primary\/60{color:hsl(var(--primary) / .6)}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.text-yellow-900{--tw-text-opacity: 1;color:rgb(113 63 18 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-primary{--tw-ring-color: hsl(var(--primary))}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur-3xl{--tw-blur: blur(64px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.text-primary-gradient{color:hsl(var(--primary))}.has-gradient .text-primary-gradient{background:var(--primary-gradient);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.\[--cell-size\:2rem\]{--cell-size: 2rem}.no-animations *,.no-animations *:before,.no-animations *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.no-animations *:hover{transition-duration:.01ms!important}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:999}.__floater{z-index:99999!important;pointer-events:auto!important}.react-joyride__overlay,.react-joyride__spotlight{z-index:99998!important}.react-joyride__tooltip{pointer-events:auto!important}#tour-portal-container *{pointer-events:auto}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:border-muted-foreground\/50:hover{border-color:hsl(var(--muted-foreground) / .5)}.hover\:border-primary\/50:hover{border-color:hsl(var(--primary) / .5)}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent) / .5)}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-orange-700:hover{--tw-bg-opacity: 1;background-color:rgb(194 65 12 / var(--tw-bg-opacity, 1))}.hover\:bg-primary\/10:hover{background-color:hsl(var(--primary) / .1)}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-secondary:hover{background-color:hsl(var(--secondary))}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-secondary\/90:hover{background-color:hsl(var(--secondary) / .9)}.hover\:bg-transparent:hover{background-color:transparent}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-green-700:hover{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.hover\:text-orange-700:hover{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.hover\:text-primary\/80:hover{color:hsl(var(--primary) / .8)}.hover\:text-red-700:hover{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.hover\:text-yellow-300:hover{--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.hover\:text-yellow-800:hover{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:ring-2:hover{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.hover\:ring-primary:hover{--tw-ring-color: hsl(var(--primary))}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-gray-100:focus{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-red-500:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.active\:cursor-grabbing:active{cursor:grabbing}.active\:border-primary\/70:active{border-color:hsl(var(--primary) / .7)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group[open] .group-open\:rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:opacity-100{opacity:1}.group.destructive .group-\[\.destructive\]\:border-muted\/40{border-color:hsl(var(--muted) / .4)}.group.destructive .group-\[\.destructive\]\:text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:hover\:text-red-50:hover{--tw-text-opacity: 1;color:rgb(254 242 242 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-red-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(248 113 113 / var(--tw-ring-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-offset-red-600:focus{--tw-ring-offset-color: #dc2626}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-selected\:text-muted-foreground[aria-selected=true]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true],.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked],.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x: var(--radix-toast-swipe-end-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x: var(--radix-toast-swipe-move-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes fade-out{0%{opacity:1}to{opacity:0}}.data-\[state\=closed\]\:animate-fade-out[data-state=closed]{animation:fade-out .15s ease-in}.data-\[state\=closed\]\:animate-slide-out-to-right[data-state=closed]{animation:slide-out-to-right .2s ease-in}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.data-\[state\=open\]\:animate-fade-in[data-state=open]{animation:fade-in .2s ease-out}@keyframes slide-in-from-right{0%{transform:translate(100%)}to{transform:translate(0)}}.data-\[state\=open\]\:animate-slide-in-from-right[data-state=open]{animation:slide-in-from-right .3s ease-out}@keyframes slide-out-to-right{0%{transform:translate(0)}to{transform:translate(100%)}}.data-\[swipe\=end\]\:animate-slide-out-to-right[data-swipe=end]{animation:slide-out-to-right .2s ease-in}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) - 2px)}.data-\[selected\=true\]\:rounded-none[data-selected=true]{border-radius:0}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:hsl(var(--primary))}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:hsl(var(--accent))}.data-\[range-start\=true\]\:bg-primary[data-range-start=true],.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:hsl(var(--primary))}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:hsl(var(--primary-foreground))}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:hsl(var(--accent-foreground))}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true],.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:hsl(var(--primary-foreground))}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:opacity-50[data-disabled=true],.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.data-\[state\=active\]\:duration-300[data-state=active]{transition-duration:.3s}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:relative{position:relative}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:z-10{z-index:10}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:border-ring{border-color:hsl(var(--ring))}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-\[3px\]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}@supports (backdrop-filter: var(--tw)){.supports-\[backdrop-filter\]\:bg-background\/60{background-color:hsl(var(--background) / .6)}}.dark\:border-amber-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(146 64 14 / var(--tw-border-opacity, 1))}.dark\:border-blue-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity, 1))}.dark\:border-gray-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(17 24 39 / var(--tw-border-opacity, 1))}.dark\:border-green-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(22 101 52 / var(--tw-border-opacity, 1))}.dark\:border-orange-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(124 45 18 / var(--tw-border-opacity, 1))}.dark\:border-yellow-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(113 63 18 / var(--tw-border-opacity, 1))}.dark\:bg-amber-950\/30:is(.dark *){background-color:#451a034d}.dark\:bg-blue-500\/20:is(.dark *){background-color:#3b82f633}.dark\:bg-blue-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 37 84 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950\/20:is(.dark *){background-color:#17255433}.dark\:bg-blue-950\/30:is(.dark *){background-color:#1725544d}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800\/30:is(.dark *){background-color:#1f29374d}.dark\:bg-gray-800\/50:is(.dark *){background-color:#1f293780}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(3 7 18 / var(--tw-bg-opacity, 1))}.dark\:bg-green-900\/30:is(.dark *){background-color:#14532d4d}.dark\:bg-green-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(5 46 22 / var(--tw-bg-opacity, 1))}.dark\:bg-green-950\/20:is(.dark *){background-color:#052e1633}.dark\:bg-orange-950\/20:is(.dark *){background-color:#43140733}.dark\:bg-red-500\/20:is(.dark *){background-color:#ef444433}.dark\:bg-red-600\/30:is(.dark *){background-color:#dc26264d}.dark\:bg-red-900\/30:is(.dark *){background-color:#7f1d1d4d}.dark\:bg-red-950\/50:is(.dark *){background-color:#450a0a80}.dark\:bg-yellow-500\/20:is(.dark *){background-color:#eab30833}.dark\:bg-yellow-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1))}.dark\:bg-yellow-950\/30:is(.dark *){background-color:#4220064d}.dark\:text-amber-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 243 199 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-blue-100:is(.dark *){--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-200:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-cyan-500:is(.dark *){--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-orange-100:is(.dark *){--tw-text-opacity: 1;color:rgb(255 237 213 / var(--tw-text-opacity, 1))}.dark\:text-orange-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 215 170 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-red-500:is(.dark *){--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.dark\:text-yellow-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 249 195 / var(--tw-text-opacity, 1))}.dark\:text-yellow-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.dark\:text-yellow-400:is(.dark *){--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.dark\:text-yellow-500:is(.dark *){--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:hover\:text-yellow-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:focus\:bg-gray-800:focus:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}@media(min-width:640px){.sm\:right-2{right:.5rem}.sm\:right-3{right:.75rem}.sm\:top-2{top:.5rem}.sm\:top-3{top:.75rem}.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:mb-3{margin-bottom:.75rem}.sm\:mb-4{margin-bottom:1rem}.sm\:mb-6{margin-bottom:1.5rem}.sm\:ml-0{margin-left:0}.sm\:ml-1{margin-left:.25rem}.sm\:mr-1{margin-right:.25rem}.sm\:mr-2{margin-right:.5rem}.sm\:mt-0{margin-top:0}.sm\:mt-2{margin-top:.5rem}.sm\:mt-3{margin-top:.75rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-12{height:3rem}.sm\:h-2{height:.5rem}.sm\:h-24{height:6rem}.sm\:h-3{height:.75rem}.sm\:h-4{height:1rem}.sm\:h-5{height:1.25rem}.sm\:h-8{height:2rem}.sm\:h-\[300px\]{height:300px}.sm\:h-\[400px\]{height:400px}.sm\:h-\[500px\]{height:500px}.sm\:h-\[calc\(100vh-280px\)\]{height:calc(100vh - 280px)}.sm\:w-10{width:2.5rem}.sm\:w-2{width:.5rem}.sm\:w-24{width:6rem}.sm\:w-3{width:.75rem}.sm\:w-4{width:1rem}.sm\:w-5{width:1.25rem}.sm\:w-8{width:2rem}.sm\:w-\[140px\]{width:140px}.sm\:w-\[160px\]{width:160px}.sm\:w-\[200px\]{width:200px}.sm\:w-\[500px\]{width:500px}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:min-w-\[120px\]{min-width:120px}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-\[420px\]{max-width:420px}.sm\:max-w-\[70\%\]{max-width:70%}.sm\:max-w-\[900px\]{max-width:900px}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:flex-1{flex:1 1 0%}.sm\:flex-none{flex:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-0{gap:0px}.sm\:gap-1{gap:.25rem}.sm\:gap-2{gap:.5rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:gap-6{gap:1.5rem}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.sm\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.sm\:space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.sm\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.sm\:space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-\[200px\]{font-size:200px}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:768px){.md\:top-4{top:1rem}.md\:mb-4{margin-bottom:1rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-8{margin-bottom:2rem}.md\:mt-8{margin-top:2rem}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-16{height:4rem}.md\:h-4{height:1rem}.md\:h-5{height:1.25rem}.md\:h-8{height:2rem}.md\:h-96{height:24rem}.md\:h-\[500px\]{height:500px}.md\:min-h-\[400px\]{min-height:400px}.md\:w-16{width:4rem}.md\:w-4{width:1rem}.md\:w-5{width:1.25rem}.md\:w-8{width:2rem}.md\:w-96{width:24rem}.md\:max-w-none{max-width:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:gap-2{gap:.5rem}.md\:gap-3{gap:.75rem}.md\:gap-4{gap:1rem}.md\:gap-6{gap:1.5rem}.md\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.md\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.md\:whitespace-normal{white-space:normal}.md\:p-12{padding:3rem}.md\:p-4{padding:1rem}.md\:p-6{padding:1.5rem}.md\:p-8{padding:2rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:1024px){.lg\:invisible{visibility:hidden}.lg\:relative{position:relative}.lg\:z-0{z-index:0}.lg\:col-span-1{grid-column:span 1 / span 1}.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:mb-1{margin-bottom:.25rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-12{width:3rem}.lg\:w-16{width:4rem}.lg\:w-64{width:16rem}.lg\:w-8{width:2rem}.lg\:w-\[130px\]{width:130px}.lg\:w-\[160px\]{width:160px}.lg\:w-\[180px\]{width:180px}.lg\:w-\[200px\]{width:200px}.lg\:w-\[240px\]{width:240px}.lg\:w-\[75px\]{width:75px}.lg\:w-auto{width:auto}.lg\:w-full{width:100%}.lg\:max-w-0{max-width:0px}.lg\:flex-1{flex:1 1 0%}.lg\:flex-none{flex:none}.lg\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:justify-center{justify-content:center}.lg\:gap-0{gap:0px}.lg\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.lg\:overflow-hidden{overflow:hidden}.lg\:p-2{padding:.5rem}.lg\:p-6{padding:1.5rem}.lg\:px-0{padding-left:0;padding-right:0}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:pb-6{padding-bottom:1.5rem}.lg\:text-3xl{font-size:1.875rem;line-height:2.25rem}.lg\:opacity-0{opacity:0}}@media(min-width:1280px){.xl\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}}.\[\&\+div\]\:text-xs+div{font-size:.75rem;line-height:1rem}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>span\]\:text-xs>span{font-size:.75rem;line-height:1rem}.\[\&\>span\]\:opacity-70>span{opacity:.7}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y: -3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-4>svg{top:1rem}.\[\&\>svg\]\:size-3\.5>svg{width:.875rem;height:.875rem}.\[\&\>svg\]\:h-2\.5>svg{height:.625rem}.\[\&\>svg\]\:h-3>svg{height:.75rem}.\[\&\>svg\]\:w-2\.5>svg{width:.625rem}.\[\&\>svg\]\:w-3>svg{width:.75rem}.\[\&\>svg\]\:text-foreground>svg{color:hsl(var(--foreground))}.\[\&\>svg\]\:text-muted-foreground>svg{color:hsl(var(--muted-foreground))}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:1.75rem}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:hsl(var(--muted-foreground))}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:hsl(var(--border) / .5)}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:hsl(var(--border))}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-layer\]\:outline-none .recharts-layer{outline:2px solid transparent;outline-offset:2px}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector,.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:hsl(var(--muted))}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-sector\]\:outline-none .recharts-sector,.\[\&_\.recharts-surface\]\:outline-none .recharts-surface{outline:2px solid transparent;outline-offset:2px}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:1.25rem}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:invisible svg{visibility:hidden}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent,[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:transparent}.uppy-Root{box-sizing:border-box;color:#333;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;line-height:1;position:relative;text-align:left;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.uppy-Root[dir=rtl],[dir=rtl] .uppy-Root{text-align:right}.uppy-Root *,.uppy-Root :after,.uppy-Root :before{box-sizing:inherit}.uppy-Root [hidden]{display:none}.uppy-u-reset{all:initial;-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;line-height:1}[dir=rtl] .uppy-u-reset{text-align:right}.uppy-c-textInput{background-color:#fff;border:1px solid #ddd;border-radius:4px;font-family:inherit;font-size:14px;line-height:1.5;padding:6px 8px}.uppy-size--md .uppy-c-textInput{padding:8px 10px}.uppy-c-textInput:focus{border-color:#1269cf99;box-shadow:0 0 0 3px #1269cf26;outline:none}[data-uppy-theme=dark] .uppy-c-textInput{background-color:#333;border-color:#333;color:#eaeaea}[data-uppy-theme=dark] .uppy-c-textInput:focus{border-color:#525252;box-shadow:none}.uppy-c-icon{display:inline-block;max-height:100%;max-width:100%;overflow:hidden;fill:currentColor}.uppy-c-btn{align-items:center;color:inherit;display:inline-flex;font-family:inherit;font-size:inherit;font-weight:500;justify-content:center;line-height:1;transition-duration:.3s;transition-property:background-color,color;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.uppy-c-btn,[dir=rtl] .uppy-c-btn{text-align:center}.uppy-c-btn:not(:disabled):not(.disabled){cursor:pointer}.uppy-c-btn::-moz-focus-inner{border:0}.uppy-c-btn-primary{background-color:#1269cf;border-radius:4px;color:#fff;font-size:14px;padding:10px 18px}.uppy-c-btn-primary:not(:disabled):hover{background-color:#0e51a0}.uppy-c-btn-primary:focus{box-shadow:0 0 0 3px #1269cf66;outline:none}.uppy-size--md .uppy-c-btn-primary{padding:13px 22px}[data-uppy-theme=dark] .uppy-c-btn-primary{color:#eaeaea}[data-uppy-theme=dark] .uppy-c-btn-primary:focus{outline:none}[data-uppy-theme=dark] .uppy-c-btn-primary::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-c-btn-primary:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-c-btn-primary.uppy-c-btn--disabled{background-color:#8eb2db}.uppy-c-btn-link{background-color:initial;border-radius:4px;color:#525252;font-size:14px;line-height:1;padding:10px 15px}.uppy-c-btn-link:hover{color:#333}.uppy-c-btn-link:focus{box-shadow:0 0 0 3px #1269cf40;outline:none}.uppy-size--md .uppy-c-btn-link{padding:13px 18px}[data-uppy-theme=dark] .uppy-c-btn-link{color:#eaeaea}[data-uppy-theme=dark] .uppy-c-btn-link:focus{outline:none}[data-uppy-theme=dark] .uppy-c-btn-link::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-c-btn-link:focus{box-shadow:0 0 0 2px #aae1ffd9}[data-uppy-theme=dark] .uppy-c-btn-link:hover{color:#939393}.uppy-ProviderBrowser-viewType--grid ul.uppy-ProviderBrowser-list,.uppy-ProviderBrowser-viewType--unsplash ul.uppy-ProviderBrowser-list{align-items:flex-start;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;padding:6px}.uppy-ProviderBrowser-viewType--grid ul.uppy-ProviderBrowser-list:after,.uppy-ProviderBrowser-viewType--unsplash ul.uppy-ProviderBrowser-list:after{content:"";flex:auto}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem{margin:0;position:relative;width:50%}.uppy-size--md .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem,.uppy-size--md .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem{width:33.3333%}.uppy-size--lg .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem,.uppy-size--lg .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem{width:25%}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem:before,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem:before{content:"";display:block;padding-top:100%}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--selected img,.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--selected svg,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--selected img,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--selected svg{opacity:.85}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--disabled,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--disabled{opacity:.5}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner{background-color:#93939333}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner,[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner{background-color:#eaeaea33}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview svg,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview svg{height:30%;width:30%;fill:#000000b3}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview svg,[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview svg{fill:#fffc}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner{border-radius:4px;height:calc(100% - 14px);inset:7px;overflow:hidden;position:absolute;text-align:center;width:calc(100% - 14px)}@media(hover:none){.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner .uppy-ProviderBrowserItem-author{display:block}}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner,[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner{box-shadow:0 0 0 3px #aae1ffb3}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner img,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner img{border-radius:4px;height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-author{background:#0000004d;bottom:0;color:#fff;display:none;font-size:12px;font-weight:500;left:0;margin:0;padding:5px;position:absolute;text-decoration:none;width:100%}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-author:hover,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-author:hover{background:#0006;text-decoration:underline}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox{background-color:#1269cf;border-radius:50%;height:26px;opacity:0;position:absolute;right:16px;top:16px;width:26px;z-index:1002}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox:after,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox:after{height:7px;inset-inline-start:7px;top:8px;width:12px}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox{opacity:1}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:hover+label .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:hover+label .uppy-ProviderBrowserItem-author{display:block}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label{box-shadow:0 0 0 3px #1269cf80}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label:focus,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label:focus{outline:none}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label::-moz-focus-inner,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label::-moz-focus-inner{border:0}.uppy-ProviderBrowser-viewType--list{background-color:#fff}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--list{background-color:#1f1f1f}.uppy-ProviderBrowser-viewType--list li.uppy-ProviderBrowserItem{align-items:center;display:flex;margin:0;padding:7px 15px}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--list li.uppy-ProviderBrowserItem{color:#eaeaea}.uppy-ProviderBrowser-viewType--list li.uppy-ProviderBrowserItem--disabled{opacity:.6}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox{background-color:#fff;border:1px solid #cfcfcf;border-radius:3px;height:17px;margin-inline-end:15px;width:17px}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox:focus{border:1px solid #1269cf;box-shadow:0 0 0 3px #1269cf40;outline:none}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox:after{height:5px;inset-inline-start:3px;opacity:0;top:4px;width:9px}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox:focus{border-color:#02baf2b3;box-shadow:0 0 0 3px #02baf233}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox,.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-partial .uppy-ProviderBrowserItem-checkbox{background-color:#1269cf;border-color:#1269cf}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox:after,.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-partial .uppy-ProviderBrowserItem-checkbox:after{opacity:1}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner{align-items:center;color:inherit;display:flex;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;overflow:hidden;padding:2px;text-overflow:ellipsis;white-space:nowrap}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner:focus{outline:none;text-decoration:underline}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner img,.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner svg{margin-inline-end:8px}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner span{line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--disabled .uppy-ProviderBrowserItem-inner{cursor:default}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-iconWrap{margin-inline-end:7px;width:20px}.uppy-ProviderBrowserItem-checkbox{cursor:pointer;flex-shrink:0;position:relative}.uppy-ProviderBrowserItem-checkbox:disabled,.uppy-ProviderBrowserItem-checkbox:disabled:after{cursor:default}[data-uppy-theme=dark] .uppy-ProviderBrowserItem-checkbox{background-color:#1f1f1f;border-color:#939393}[data-uppy-theme=dark] .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox{background-color:#333}.uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox:after{border-bottom:2px solid #eaeaea;border-left:2px solid #eaeaea;content:"";cursor:pointer;position:absolute;transform:rotate(-45deg)}.uppy-ProviderBrowserItem--is-partial .uppy-ProviderBrowserItem-checkbox:after{background-color:#eaeaea!important;content:""!important;height:2px!important;left:20%!important;position:absolute!important;right:20%!important;top:50%!important;transform:translateY(-50%)!important}.uppy-SearchProvider{align-items:center;display:flex;flex:1;flex-direction:column;height:100%;justify-content:center;width:100%}[data-uppy-theme=dark] .uppy-SearchProvider{background-color:#1f1f1f}.uppy-SearchProvider-input{margin-bottom:15px;max-width:650px;width:90%}.uppy-size--md .uppy-SearchProvider-input{margin-bottom:20px}.uppy-SearchProvider-input::-webkit-search-cancel-button{display:none}.uppy-SearchProvider-searchButton{padding:13px 25px}.uppy-size--md .uppy-SearchProvider-searchButton{padding:13px 30px}.uppy-DashboardContent-panelBody{align-items:center;display:flex;flex:1;justify-content:center}[data-uppy-theme=dark] .uppy-DashboardContent-panelBody{background-color:#1f1f1f}.uppy-Provider-auth,.uppy-Provider-empty,.uppy-Provider-error,.uppy-Provider-loading{align-items:center;color:#939393;display:flex;flex:1;flex-flow:column wrap;justify-content:center}.uppy-Provider-empty{color:#939393}.uppy-Provider-authIcon svg{height:75px;width:100px}.uppy-Provider-authTitle{color:#757575;font-size:17px;font-weight:400;line-height:1.4;margin-bottom:30px;max-width:500px;padding:0 15px;text-align:center}.uppy-size--md .uppy-Provider-authTitle{font-size:20px}[data-uppy-theme=dark] .uppy-Provider-authTitle{color:#cfcfcf}.uppy-Provider-btn-google{align-items:center;background:#4285f4;display:flex;padding:8px 12px!important}.uppy-Provider-btn-google:hover{background-color:#1266f1}.uppy-Provider-btn-google:focus{box-shadow:0 0 0 3px #4285f466;outline:none}.uppy-Provider-btn-google svg{margin-right:8px}.uppy-Provider-breadcrumbs{color:#525252;flex:1;font-size:12px;margin-bottom:10px;text-align:start}.uppy-size--md .uppy-Provider-breadcrumbs{margin-bottom:0}[data-uppy-theme=dark] .uppy-Provider-breadcrumbs{color:#eaeaea}.uppy-Provider-breadcrumbsIcon{color:#525252;display:inline-block;line-height:1;margin-inline-end:4px;vertical-align:middle}.uppy-Provider-breadcrumbsIcon svg{height:13px;width:13px;fill:#525252}.uppy-Provider-breadcrumbs button{border-radius:3px;display:inline-block;line-height:inherit;padding:4px}.uppy-Provider-breadcrumbs button:focus{outline:none}.uppy-Provider-breadcrumbs button::-moz-focus-inner{border:0}.uppy-Provider-breadcrumbs button:hover{color:#0e51a0}.uppy-Provider-breadcrumbs button:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-Provider-breadcrumbs button:focus{background-color:#333}.uppy-Provider-breadcrumbs button:not(:last-of-type){text-decoration:underline}.uppy-Provider-breadcrumbs button:last-of-type{color:#333;cursor:normal;font-weight:500;pointer-events:none}.uppy-Provider-breadcrumbs button:hover{cursor:pointer}[data-uppy-theme=dark] .uppy-Provider-breadcrumbs button{color:#eaeaea}.uppy-ProviderBrowser{display:flex;flex:1;flex-direction:column;font-size:14px;font-weight:400;height:100%}.uppy-ProviderBrowser-user{color:#333;font-weight:500;margin:0 8px 0 0}[data-uppy-theme=dark] .uppy-ProviderBrowser-user{color:#eaeaea}.uppy-ProviderBrowser-user:after{color:#939393;content:"·";font-weight:400;inset-inline-start:4px;position:relative}.uppy-ProviderBrowser-header{border-bottom:1px solid #eaeaea;position:relative;z-index:1001}[data-uppy-theme=dark] .uppy-ProviderBrowser-header{border-bottom:1px solid #333}.uppy-ProviderBrowser-headerBar{background-color:#fafafa;color:#757575;font-size:12px;line-height:1.4;padding:7px 15px;z-index:1001}.uppy-size--md .uppy-ProviderBrowser-headerBar{align-items:center;display:flex}[data-uppy-theme=dark] .uppy-ProviderBrowser-headerBar{background-color:#1f1f1f}.uppy-ProviderBrowser-headerBar--simple{display:block;justify-content:center;text-align:center}.uppy-ProviderBrowser-headerBar--simple .uppy-Provider-breadcrumbsWrap{display:inline-block;flex:none;vertical-align:middle}.uppy-ProviderBrowser-searchFilter{align-items:center;display:flex;height:30px;margin-bottom:15px;margin-top:15px;padding-left:8px;padding-right:8px;position:relative;width:100%}.uppy-ProviderBrowser-searchFilterInput{background-color:#eaeaea;border:0;border-radius:4px;color:#333;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;font-size:13px;height:30px;line-height:1.4;outline:0;padding-inline-end:30px;padding-inline-start:30px;width:100%;z-index:1001}.uppy-ProviderBrowser-searchFilterInput::-webkit-search-cancel-button{display:none}[data-uppy-theme=dark] .uppy-ProviderBrowser-searchFilterInput{background-color:#1f1f1f;color:#eaeaea}.uppy-ProviderBrowser-searchFilterInput:focus{background-color:#cfcfcf;border:0}[data-uppy-theme=dark] .uppy-ProviderBrowser-searchFilterInput:focus{background-color:#333}.uppy-ProviderBrowser-searchFilterIcon{color:#757575;height:12px;inset-inline-start:16px;position:absolute;width:12px;z-index:1002}.uppy-ProviderBrowser-searchFilterInput::-moz-placeholder{color:#939393;opacity:1}.uppy-ProviderBrowser-searchFilterInput::placeholder{color:#939393;opacity:1}.uppy-ProviderBrowser-searchFilterReset{border-radius:3px;color:#939393;cursor:pointer;height:22px;inset-inline-end:16px;padding:6px;position:absolute;width:22px;z-index:1002}.uppy-ProviderBrowser-searchFilterReset:focus{outline:none}.uppy-ProviderBrowser-searchFilterReset::-moz-focus-inner{border:0}.uppy-ProviderBrowser-searchFilterReset:focus{box-shadow:0 0 0 3px #1269cf80}.uppy-ProviderBrowser-searchFilterReset:hover{color:#757575}.uppy-ProviderBrowser-searchFilterReset svg{vertical-align:text-top}.uppy-ProviderBrowser-userLogout{border-radius:3px;color:#1269cf;cursor:pointer;line-height:inherit;padding:4px}.uppy-ProviderBrowser-userLogout:focus{outline:none}.uppy-ProviderBrowser-userLogout::-moz-focus-inner{border:0}.uppy-ProviderBrowser-userLogout:hover{color:#0e51a0}.uppy-ProviderBrowser-userLogout:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-ProviderBrowser-userLogout:focus{background-color:#333}.uppy-ProviderBrowser-userLogout:hover{text-decoration:underline}[data-uppy-theme=dark] .uppy-ProviderBrowser-userLogout{color:#eaeaea}.uppy-ProviderBrowser-body{flex:1;position:relative}.uppy-ProviderBrowser-list{background-color:#fff;border-spacing:0;display:block;flex:1;height:100%;inset:0;list-style:none;margin:0;overflow-x:hidden;overflow-y:auto;padding:0;position:absolute;width:100%;-webkit-overflow-scrolling:touch}[data-uppy-theme=dark] .uppy-ProviderBrowser-list{background-color:#1f1f1f}.uppy-ProviderBrowser-list:focus{outline:none}.uppy-ProviderBrowserItem-inner{cursor:pointer;font-size:13px;font-weight:500}.uppy-ProviderBrowser-footer{align-items:center;background-color:#fff;border-top:1px solid #eaeaea;display:flex;justify-content:space-between;padding:15px}.uppy-ProviderBrowser-footer button{margin-inline-end:8px}[data-uppy-theme=dark] .uppy-ProviderBrowser-footer{background-color:#1f1f1f;border-top:1px solid #333}.uppy-ProviderBrowser-footer-buttons{flex-shrink:0}.uppy-ProviderBrowser-footer-error{color:#e32437;line-height:18px}@media(max-width:426px){.uppy-ProviderBrowser-footer{align-items:stretch;flex-direction:column-reverse}.uppy-ProviderBrowser-footer-error{padding-bottom:10px}}.picker-dialog-bg{z-index:20000!important}.picker-dialog{z-index:20001!important}.uppy-Dashboard-Item-previewInnerWrap{align-items:center;border-radius:3px;box-shadow:0 0 2px #0006;display:flex;flex-direction:column;height:100%;justify-content:center;overflow:hidden;position:relative;width:100%}.uppy-size--md .uppy-Dashboard-Item-previewInnerWrap{box-shadow:0 1px 2px #00000026}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-previewInnerWrap{box-shadow:none}.uppy-Dashboard-Item-previewInnerWrap:after{background-color:#000000a6;content:"";display:none;inset:0;position:absolute;z-index:1001}.uppy-Dashboard-Item-previewLink{inset:0;position:absolute;z-index:1002}.uppy-Dashboard-Item-previewLink:focus{box-shadow:inset 0 0 0 3px #579df0}[data-uppy-theme=dark] .uppy-Dashboard-Item-previewLink:focus{box-shadow:inset 0 0 0 3px #016c8d}.uppy-Dashboard-Item-preview img.uppy-Dashboard-Item-previewImg{border-radius:3px;height:100%;-o-object-fit:cover;object-fit:cover;transform:translateZ(0);width:100%}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-preview img.uppy-Dashboard-Item-previewImg{height:auto;max-height:100%;max-width:100%;-o-object-fit:contain;object-fit:contain;padding:10px;width:auto}.uppy-Dashboard-Item-progress{color:#fff;left:50%;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);transition:all .35 ease;width:120px;z-index:1002}.uppy-Dashboard-Item-progressIndicator{color:#fff;display:inline-block;height:38px;opacity:.9;width:38px}.uppy-size--md .uppy-Dashboard-Item-progressIndicator{height:55px;width:55px}button.uppy-Dashboard-Item-progressIndicator{cursor:pointer}button.uppy-Dashboard-Item-progressIndicator:focus{outline:none}button.uppy-Dashboard-Item-progressIndicator::-moz-focus-inner{border:0}button.uppy-Dashboard-Item-progressIndicator:focus .uppy-Dashboard-Item-progressIcon--bg,button.uppy-Dashboard-Item-progressIndicator:focus .uppy-Dashboard-Item-progressIcon--retry{fill:#579df0}.uppy-Dashboard-Item-progressIcon--circle{height:100%;width:100%}.uppy-Dashboard-Item-progressIcon--bg{stroke:#fff6}.uppy-Dashboard-Item-progressIcon--progress{transition:stroke-dashoffset .5s ease-out;stroke:#fff}.uppy-Dashboard-Item-progressIcon--play{transition:all .2s;fill:#fff;stroke:#fff}.uppy-Dashboard-Item-progressIcon--cancel{transition:all .2s;fill:#fff}.uppy-Dashboard-Item-progressIcon--pause{transition:all .2s;fill:#fff;stroke:#fff}.uppy-Dashboard-Item-progressIcon--check{transition:all .2s;fill:#fff}.uppy-Dashboard-Item-progressIcon--retry{fill:#fff}.uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progress{inset-inline-end:-8px;inset-inline-start:auto;top:-9px;transform:none;width:auto}.uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-progressIndicator{height:18px;width:18px}.uppy-size--md .uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-progressIndicator{height:28px;width:28px}.uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progressIndicator{height:18px;opacity:1;width:18px}.uppy-size--md .uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progressIndicator{height:22px;width:22px}.uppy-Dashboard-Item.is-processing .uppy-Dashboard-Item-progress{opacity:0}.uppy-Dashboard-Item-fileInfo{padding-inline-end:5px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfo{padding-inline-end:10px}.uppy-size--md.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfo{padding-inline-end:15px}.uppy-Dashboard-Item-name{font-size:12px;font-weight:500;line-height:1.3;margin-bottom:5px;word-wrap:anywhere;word-break:break-all}[data-uppy-theme=dark] .uppy-Dashboard-Item-name{color:#eaeaea}.uppy-size--md.uppy-Dashboard--singleFile .uppy-Dashboard-Item-name{font-size:14px;line-height:1.4}.uppy-Dashboard-Item-fileName{align-items:baseline;display:flex}.uppy-Dashboard-Item-fileName button{margin-left:5px}.uppy-Dashboard-Item-author{color:#757575;display:inline-block;font-size:11px;font-weight:400;line-height:1;margin-bottom:5px;vertical-align:bottom}.uppy-Dashboard-Item-author a{color:#757575}.uppy-Dashboard-Item-status{color:#757575;font-size:11px;font-weight:400;line-height:1}[data-uppy-theme=dark] .uppy-Dashboard-Item-status{color:#bbb}.uppy-Dashboard-Item-statusSize{display:inline-block;margin-bottom:5px;text-transform:uppercase;vertical-align:bottom}.uppy-Dashboard-Item-reSelect{color:#1269cf;font-family:inherit;font-size:inherit;font-weight:600}.uppy-Dashboard-Item-errorMessage{background-color:#fdeff1;color:#a51523;font-size:11px;font-weight:500;line-height:1.3;padding:5px 6px}.uppy-Dashboard-Item-errorMessageBtn{color:#a51523;cursor:pointer;font-size:11px;font-weight:500;text-decoration:underline}.uppy-Dashboard-Item-preview .uppy-Dashboard-Item-errorMessage{display:none}.uppy-size--md .uppy-Dashboard-Item-preview .uppy-Dashboard-Item-errorMessage{border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-top:1px solid #f7c2c8;bottom:0;display:block;left:0;line-height:1.4;padding:6px 8px;position:absolute;right:0}.uppy-Dashboard-Item-fileInfo .uppy-Dashboard-Item-errorMessage{border:1px solid #f7c2c8;border-radius:3px;display:inline-block;position:static}.uppy-size--md .uppy-Dashboard-Item-fileInfo .uppy-Dashboard-Item-errorMessage{display:none}.uppy-Dashboard-Item-action{color:#939393;cursor:pointer}.uppy-Dashboard-Item-action:focus{outline:none}.uppy-Dashboard-Item-action::-moz-focus-inner{border:0}.uppy-Dashboard-Item-action:focus{box-shadow:0 0 0 3px #1269cf80}.uppy-Dashboard-Item-action:hover{color:#1f1f1f;opacity:1}[data-uppy-theme=dark] .uppy-Dashboard-Item-action{color:#cfcfcf}[data-uppy-theme=dark] .uppy-Dashboard-Item-action:focus{outline:none}[data-uppy-theme=dark] .uppy-Dashboard-Item-action::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-Dashboard-Item-action:focus{box-shadow:0 0 0 2px #aae1ffd9}[data-uppy-theme=dark] .uppy-Dashboard-Item-action:hover{color:#eaeaea}.uppy-Dashboard-Item-action--remove{color:#1f1f1f;opacity:.95}.uppy-Dashboard-Item-action--remove:hover{color:#000;opacity:1}.uppy-size--md .uppy-Dashboard-Item-action--remove{height:18px;inset-inline-end:-8px;padding:0;position:absolute;top:-8px;width:18px;z-index:1002}.uppy-size--md .uppy-Dashboard-Item-action--remove:focus{border-radius:50%}.uppy-Dashboard--singleFile.uppy-size--height-md .uppy-Dashboard-Item-action--remove{inset-inline-end:8px;position:absolute;top:8px}[data-uppy-theme=dark] .uppy-Dashboard-Item-action--remove{color:#525252}[data-uppy-theme=dark] .uppy-Dashboard-Item-action--remove:hover{color:#333}.uppy-Dashboard:not(.uppy-size--md):not(.uppy-Dashboard--singleFile.uppy-size--height-md) .uppy-Dashboard-Item-actionWrapper{align-items:center;display:flex}.uppy-Dashboard:not(.uppy-size--md):not(.uppy-Dashboard--singleFile.uppy-size--height-md) .uppy-Dashboard-Item-action{height:22px;margin-left:3px;padding:3px;width:22px}.uppy-Dashboard:not(.uppy-size--md):not(.uppy-Dashboard--singleFile.uppy-size--height-md) .uppy-Dashboard-Item-action:focus{border-radius:3px}.uppy-size--md .uppy-Dashboard-Item-action--copyLink,.uppy-size--md .uppy-Dashboard-Item-action--edit{height:16px;padding:0;width:16px}.uppy-size--md .uppy-Dashboard-Item-action--copyLink:focus,.uppy-size--md .uppy-Dashboard-Item-action--edit:focus{border-radius:3px}.uppy-Dashboard-Item{align-items:center;border-bottom:1px solid #eaeaea;display:flex;padding:10px}.uppy-Dashboard:not(.uppy-Dashboard--singleFile) .uppy-Dashboard-Item{padding-inline-end:0}[data-uppy-theme=dark] .uppy-Dashboard-Item{border-bottom:1px solid #333}.uppy-size--md .uppy-Dashboard-Item{border-bottom:0;display:block;float:inline-start;height:215px;margin:5px 15px;padding:0;position:relative;width:calc(33.333% - 30px)}.uppy-size--lg .uppy-Dashboard-Item{height:190px;margin:5px 15px;padding:0;width:calc(25% - 30px)}.uppy-size--xl .uppy-Dashboard-Item{height:210px;padding:0;width:calc(20% - 30px)}.uppy-Dashboard--singleFile .uppy-Dashboard-Item{border-bottom:0;display:flex;flex-direction:column;height:100%;max-width:400px;padding:15px;position:relative;width:100%}.uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-previewInnerWrap{opacity:.2}.uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-name{opacity:.7}.uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-preview:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='35' height='39' viewBox='0 0 35 39'%3E%3Cpath fill='%2523000' d='M1.708 38.66c1.709 0 3.417-3.417 6.834-3.417s5.125 3.417 8.61 3.417c3.348 0 5.056-3.417 8.473-3.417 4.305 0 5.125 3.417 6.833 3.417.889 0 1.709-.889 1.709-1.709v-19.68C34.167-5.757 0-5.757 0 17.271v19.68c0 .82.888 1.709 1.708 1.709m8.542-17.084a3.383 3.383 0 0 1-3.417-3.416 3.383 3.383 0 0 1 3.417-3.417 3.383 3.383 0 0 1 3.417 3.417 3.383 3.383 0 0 1-3.417 3.416m13.667 0A3.383 3.383 0 0 1 20.5 18.16a3.383 3.383 0 0 1 3.417-3.417 3.383 3.383 0 0 1 3.416 3.417 3.383 3.383 0 0 1-3.416 3.416'/%3E%3C/svg%3E");background-position:50% 10px;background-repeat:no-repeat;background-size:25px;content:"";inset:0;opacity:.5;position:absolute;z-index:1005}.uppy-size--md .uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-preview:before{background-position:50% 50%;background-size:40px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-preview:before{background-position:50% 50%;background-size:30%}.uppy-Dashboard-Item-preview{flex-grow:0;flex-shrink:0;height:50px;position:relative;width:50px}.uppy-size--md .uppy-Dashboard-Item-preview{height:140px;width:100%}.uppy-size--lg .uppy-Dashboard-Item-preview{height:120px}.uppy-size--xl .uppy-Dashboard-Item-preview{height:140px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-preview{flex-grow:1;max-height:75%;width:100%}.uppy-Dashboard--singleFile.uppy-size--md .uppy-Dashboard-Item-preview{max-height:100%}.uppy-Dashboard-Item-fileInfoAndButtons{align-items:center;display:flex;flex-grow:1;justify-content:space-between;padding-inline-end:8px;padding-inline-start:12px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfoAndButtons,.uppy-size--md .uppy-Dashboard-Item-fileInfoAndButtons{align-items:flex-start;padding:9px 0 0}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfoAndButtons{flex-grow:0;width:100%}.uppy-Dashboard-Item-fileInfo{flex-grow:1;flex-shrink:1}.uppy-Dashboard-Item-actionWrapper{flex-grow:0;flex-shrink:0}.uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-previewInnerWrap:after,.uppy-Dashboard-Item.is-inprogress .uppy-Dashboard-Item-previewInnerWrap:after{display:block}.uppy-Dashboard-Item-errorDetails{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#939393;border:none;border-radius:50%;color:#fff;cursor:help;flex-shrink:0;font-size:10px;font-weight:600;height:13px;inset-inline-start:2px;line-height:12px;position:relative;text-align:center;top:0;width:13px}.uppy-Dashboard-Item-errorDetails:after{line-height:1.3;word-wrap:break-word}.uppy-Dashboard-FileCard{background-color:#fff;border-radius:5px;box-shadow:0 0 10px 4px #0000001a;display:flex;flex-direction:column;height:100%;inset:0;position:absolute;width:100%;z-index:1005}.uppy-Dashboard-FileCard .uppy-DashboardContent-bar{border-top-left-radius:5px;border-top-right-radius:5px}.uppy-Dashboard-FileCard .uppy-Dashboard-FileCard-actions{border-bottom-left-radius:5px;border-bottom-right-radius:5px}.uppy-Dashboard-FileCard-inner{display:flex;flex-direction:column;flex-grow:1;flex-shrink:1;height:100%;min-height:0}.uppy-Dashboard-FileCard-preview{align-items:center;border-bottom:1px solid #eaeaea;display:flex;flex-grow:0;flex-shrink:1;height:60%;justify-content:center;min-height:0;position:relative}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-preview{background-color:#333;border-bottom:0}.uppy-Dashboard-FileCard-preview img.uppy-Dashboard-Item-previewImg{border-radius:3px;box-shadow:0 3px 20px #00000026;flex:0 0 auto;max-height:90%;max-width:90%;-o-object-fit:cover;object-fit:cover}.uppy-Dashboard-FileCard-edit{background-color:#00000080;border-radius:50px;color:#fff;font-size:13px;inset-inline-end:10px;padding:7px 15px;position:absolute;top:10px}.uppy-Dashboard-FileCard-edit:focus{outline:none}.uppy-Dashboard-FileCard-edit::-moz-focus-inner{border:0}.uppy-Dashboard-FileCard-edit:focus{box-shadow:0 0 0 3px #1269cf80}.uppy-Dashboard-FileCard-edit:hover{background-color:#000c}.uppy-Dashboard-FileCard-info{flex-grow:0;flex-shrink:0;height:40%;overflow-y:auto;padding:30px 20px 20px;-webkit-overflow-scrolling:touch}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-info{background-color:#1f1f1f}.uppy-Dashboard-FileCard-fieldset{border:0;font-size:0;margin:auto auto 12px;max-width:640px;padding:0}.uppy-Dashboard-FileCard-label{color:#525252;display:inline-block;font-size:12px;vertical-align:middle;width:22%}.uppy-size--md .uppy-Dashboard-FileCard-label{font-size:14px}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-label{color:#eaeaea}.uppy-Dashboard-FileCard-input{display:inline-block;vertical-align:middle;width:78%}.uppy-Dashboard-FileCard-actions{align-items:center;background-color:#fafafa;border-top:1px solid #eaeaea;display:flex;flex-grow:0;flex-shrink:0;height:55px;padding:0 15px}.uppy-size--md .uppy-Dashboard-FileCard-actions{height:65px}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-actions{background-color:#1f1f1f;border-top:1px solid #333}.uppy-Dashboard-FileCard-actionsBtn{margin-inline-end:10px}.uppy-Informer{bottom:60px;left:0;position:absolute;right:0;text-align:center;z-index:1005}.uppy-Informer span>div{margin-bottom:6px}.uppy-Informer-animated{opacity:0;transform:translateY(350%);transition:all .3s ease-in;z-index:-1000}.uppy-Informer p{background-color:#757575;border-radius:18px;color:#fff;display:inline-block;font-size:12px;font-weight:400;line-height:1.4;margin:0;max-width:90%;padding:6px 15px}.uppy-size--md .uppy-Informer p{font-size:14px;line-height:1.3;max-width:500px;padding:10px 20px}[data-uppy-theme=dark] .uppy-Informer p{background-color:#333}.uppy-Informer p span{background-color:#fff;border-radius:50%;color:#525252;display:inline-block;font-size:10px;height:13px;inset-inline-start:3px;line-height:12px;margin-inline-start:-1px;position:relative;top:-1px;vertical-align:middle;width:13px}.uppy-Informer p span:hover{cursor:help}.uppy-Informer p span:after{line-height:1.3;word-wrap:break-word}.uppy-Root [aria-label][role~=tooltip]{position:relative}.uppy-Root [aria-label][role~=tooltip]:after,.uppy-Root [aria-label][role~=tooltip]:before{backface-visibility:hidden;box-sizing:border-box;opacity:0;pointer-events:none;position:absolute;transform:translateZ(0);transform-origin:top;transition:all var(--microtip-transition-duration,.18s) var(--microtip-transition-easing,ease-in-out) var(--microtip-transition-delay,0s);will-change:transform;z-index:10}.uppy-Root [aria-label][role~=tooltip]:before{background-size:100% auto!important;content:""}.uppy-Root [aria-label][role~=tooltip]:after{background:#111111e6;border-radius:4px;box-sizing:initial;color:#fff;content:attr(aria-label);font-size:var(--microtip-font-size,13px);font-weight:var(--microtip-font-weight,normal);padding:.5em 1em;text-transform:var(--microtip-text-transform,none);white-space:nowrap}.uppy-Root [aria-label][role~=tooltip]:focus:after,.uppy-Root [aria-label][role~=tooltip]:focus:before,.uppy-Root [aria-label][role~=tooltip]:hover:after,.uppy-Root [aria-label][role~=tooltip]:hover:before{opacity:1;pointer-events:auto}.uppy-Root [role~=tooltip][data-microtip-position|=top]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M2.658 0h32.004c-6 0-11.627 12.002-16.002 12.002S8.594 0 2.658 0'/%3E%3C/svg%3E") no-repeat;bottom:100%;height:6px;left:50%;margin-bottom:5px;transform:translate3d(-50%,0,0);width:18px}.uppy-Root [role~=tooltip][data-microtip-position|=top]:after{bottom:100%;left:50%;margin-bottom:11px;transform:translate3d(-50%,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=top]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position|=top]:hover:before{transform:translate3d(-50%,-5px,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-left]:after{bottom:100%;transform:translate3d(calc(-100% + 16px),0,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-left]:hover:after{transform:translate3d(calc(-100% + 16px),-5px,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-right]:after{bottom:100%;transform:translate3d(-16px,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-right]:hover:after{transform:translate3d(-16px,-5px,0)}.uppy-Root [role~=tooltip][data-microtip-position|=bottom]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M33.342 12H1.338c6 0 11.627-12.002 16.002-12.002S27.406 12 33.342 12'/%3E%3C/svg%3E") no-repeat;bottom:auto;height:6px;left:50%;margin-bottom:0;margin-top:5px;top:100%;transform:translate3d(-50%,-10px,0);width:18px}.uppy-Root [role~=tooltip][data-microtip-position|=bottom]:after{left:50%;margin-top:11px;top:100%;transform:translate3d(-50%,-10px,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position|=bottom]:hover:before{transform:translate3d(-50%,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-left]:after{top:100%;transform:translate3d(calc(-100% + 16px),-10px,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-left]:hover:after{transform:translate3d(calc(-100% + 16px),0,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-right]:after{top:100%;transform:translate3d(-16px,-10px,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-right]:hover:after{transform:translate3d(-16px,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=left]:after,.uppy-Root [role~=tooltip][data-microtip-position=left]:before{inset:50% 100% auto auto;transform:translate3d(10px,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-position=left]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='36'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M0 33.342V1.338c0 6 12.002 11.627 12.002 16.002S0 27.406 0 33.342'/%3E%3C/svg%3E") no-repeat;height:18px;margin-bottom:0;margin-right:5px;width:6px}.uppy-Root [role~=tooltip][data-microtip-position=left]:after{margin-right:11px}.uppy-Root [role~=tooltip][data-microtip-position=left]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position=left]:hover:before{transform:translate3d(0,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-position=right]:after,.uppy-Root [role~=tooltip][data-microtip-position=right]:before{bottom:auto;left:100%;top:50%;transform:translate3d(-10px,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-position=right]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='36'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M12 2.658v32.004c0-6-12.002-11.627-12.002-16.002S12 8.594 12 2.658'/%3E%3C/svg%3E") no-repeat;height:18px;margin-bottom:0;margin-left:5px;width:6px}.uppy-Root [role~=tooltip][data-microtip-position=right]:after{margin-left:11px}.uppy-Root [role~=tooltip][data-microtip-position=right]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position=right]:hover:before{transform:translate3d(0,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-size=small]:after{white-space:normal;width:80px}.uppy-Root [role~=tooltip][data-microtip-size=medium]:after{white-space:normal;width:150px}.uppy-Root [role~=tooltip][data-microtip-size=large]:after{white-space:normal;width:260px}.uppy-StatusBar{background-color:#fff;color:#fff;display:flex;font-size:12px;font-weight:400;height:46px;line-height:40px;position:relative;transition:height .2s;z-index:1001}[data-uppy-theme=dark] .uppy-StatusBar{background-color:#1f1f1f}.uppy-StatusBar:before{background-color:#eaeaea;content:"";height:2px;inset:0;position:absolute;width:100%}[data-uppy-theme=dark] .uppy-StatusBar:before{background-color:#757575}.uppy-StatusBar[aria-hidden=true]{height:0;overflow-y:hidden}.uppy-StatusBar.is-complete .uppy-StatusBar-progress{background-color:#1bb240}.uppy-StatusBar.is-error .uppy-StatusBar-progress{background-color:#e32437}.uppy-StatusBar.is-complete .uppy-StatusBar-statusIndicator{color:#1bb240}.uppy-StatusBar.is-error .uppy-StatusBar-statusIndicator{color:#e32437}.uppy-StatusBar:not([aria-hidden=true]).is-waiting{background-color:#fff;border-top:1px solid #eaeaea;height:65px}[data-uppy-theme=dark] .uppy-StatusBar:not([aria-hidden=true]).is-waiting{background-color:#1f1f1f;border-top:1px solid #333}.uppy-StatusBar-progress{background-color:#1269cf;height:2px;position:absolute;transition:background-color,width .3s ease-out;z-index:1001}.uppy-StatusBar-progress.is-indeterminate{animation:uppy-StatusBar-ProgressStripes 1s linear infinite;background-image:linear-gradient(45deg,#0000004d 25%,#0000 0 50%,#0000004d 0 75%,#0000 0,#0000);background-size:64px 64px}@keyframes uppy-StatusBar-ProgressStripes{0%{background-position:0 0}to{background-position:64px 0}}.uppy-StatusBar.is-postprocessing .uppy-StatusBar-progress,.uppy-StatusBar.is-preprocessing .uppy-StatusBar-progress{background-color:#f6a623}.uppy-StatusBar.is-waiting .uppy-StatusBar-progress{display:none}.uppy-StatusBar-content{align-items:center;color:#333;display:flex;height:100%;padding-inline-start:10px;position:relative;text-overflow:ellipsis;white-space:nowrap;z-index:1002}.uppy-size--md .uppy-StatusBar-content{padding-inline-start:15px}[data-uppy-theme=dark] .uppy-StatusBar-content{color:#eaeaea}.uppy-StatusBar-status{display:flex;flex-direction:column;font-weight:400;justify-content:center;line-height:1.4;padding-inline-end:.3em}.uppy-StatusBar-statusPrimary{display:flex;font-weight:500;line-height:1}.uppy-StatusBar-statusPrimary button.uppy-StatusBar-details{margin-left:5px}[data-uppy-theme=dark] .uppy-StatusBar-statusPrimary{color:#eaeaea}.uppy-StatusBar-statusSecondary{color:#757575;display:inline-block;font-size:11px;line-height:1.2;margin-top:1px;white-space:nowrap}[data-uppy-theme=dark] .uppy-StatusBar-statusSecondary{color:#bbb}.uppy-StatusBar-statusSecondaryHint{display:inline-block;line-height:1;margin-inline-end:5px;vertical-align:middle}.uppy-size--md .uppy-StatusBar-statusSecondaryHint{margin-inline-end:8px}.uppy-StatusBar-statusIndicator{color:#525252;margin-inline-end:7px;position:relative;top:1px}.uppy-StatusBar-statusIndicator svg{vertical-align:text-bottom}.uppy-StatusBar-actions{align-items:center;bottom:0;display:flex;inset-inline-end:10px;position:absolute;top:0;z-index:1004}.uppy-StatusBar.is-waiting .uppy-StatusBar-actions{background-color:#fafafa;height:100%;padding:0 15px;position:static;width:100%}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actions{background-color:#1f1f1f}.uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts{flex-direction:column;height:90px}.uppy-size--md .uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts{flex-direction:row;height:65px}.uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts .uppy-StatusBar-actions{flex-direction:column;justify-content:center}.uppy-size--md .uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts .uppy-StatusBar-actions{flex-direction:row;justify-content:normal}.uppy-StatusBar-actionCircleBtn{cursor:pointer;line-height:1;margin:3px;opacity:.9}.uppy-StatusBar-actionCircleBtn:focus{outline:none}.uppy-StatusBar-actionCircleBtn::-moz-focus-inner{border:0}.uppy-StatusBar-actionCircleBtn:focus{box-shadow:0 0 0 3px #1269cf80}[data-uppy-theme=dark] .uppy-StatusBar-actionCircleBtn:focus{outline:none}[data-uppy-theme=dark] .uppy-StatusBar-actionCircleBtn::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-StatusBar-actionCircleBtn:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-StatusBar-actionCircleBtn:hover{opacity:1}.uppy-StatusBar-actionCircleBtn:focus{border-radius:50%}.uppy-StatusBar-actionCircleBtn svg{vertical-align:bottom}.uppy-StatusBar-actionBtn{color:#1269cf;display:inline-block;font-size:10px;line-height:inherit;vertical-align:middle}.uppy-size--md .uppy-StatusBar-actionBtn{font-size:11px}.uppy-StatusBar-actionBtn--disabled{opacity:.4}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--disabled{opacity:.7}.uppy-StatusBar-actionBtn--retry{background-color:#ff4b23;border-radius:8px;color:#fff;height:16px;line-height:1;margin-inline-end:6px;padding:1px 6px 3px 18px;position:relative}.uppy-StatusBar-actionBtn--retry:focus{outline:none}.uppy-StatusBar-actionBtn--retry::-moz-focus-inner{border:0}.uppy-StatusBar-actionBtn--retry:focus{box-shadow:0 0 0 3px #1269cf80}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--retry:focus{outline:none}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--retry::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--retry:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-StatusBar-actionBtn--retry:hover{background-color:#f92d00}.uppy-StatusBar-actionBtn--retry svg{inset-inline-start:6px;position:absolute;top:3px}.uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload{background-color:#1bb240;color:#fff;font-size:14px;line-height:1;padding:15px 10px;width:100%}.uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload:hover{background-color:#189c38}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload{background-color:#1c8b37}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload:hover{background-color:#18762f}.uppy-size--md .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload{padding:13px 22px;width:auto}.uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload.uppy-StatusBar-actionBtn--disabled:hover{background-color:#1bb240;cursor:not-allowed}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload.uppy-StatusBar-actionBtn--disabled:hover{background-color:#1c8b37}.uppy-StatusBar:not(.is-waiting) .uppy-StatusBar-actionBtn--upload{background-color:initial;color:#1269cf}.uppy-StatusBar-actionBtn--uploadNewlyAdded{border-radius:3px;padding-inline-end:3px;padding-bottom:1px;padding-inline-start:3px}.uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{outline:none}.uppy-StatusBar-actionBtn--uploadNewlyAdded::-moz-focus-inner{border:0}.uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{box-shadow:0 0 0 3px #1269cf80}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{outline:none}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--uploadNewlyAdded::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-StatusBar.is-postprocessing .uppy-StatusBar-actionBtn--uploadNewlyAdded,.uppy-StatusBar.is-preprocessing .uppy-StatusBar-actionBtn--uploadNewlyAdded{display:none}.uppy-StatusBar-actionBtn--done{border-radius:3px;line-height:1;padding:7px 8px}.uppy-StatusBar-actionBtn--done:focus{outline:none}.uppy-StatusBar-actionBtn--done::-moz-focus-inner{border:0}.uppy-StatusBar-actionBtn--done:hover{color:#0e51a0}.uppy-StatusBar-actionBtn--done:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--done:focus{background-color:#333}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--done{color:#02baf2}.uppy-size--md .uppy-StatusBar-actionBtn--done{font-size:14px}.uppy-StatusBar-serviceMsg{color:#000;font-size:11px;line-height:1.1;padding-left:10px}.uppy-size--md .uppy-StatusBar-serviceMsg{font-size:14px;padding-left:15px}[data-uppy-theme=dark] .uppy-StatusBar-serviceMsg{color:#eaeaea}.uppy-StatusBar-serviceMsg-ghostsIcon{left:6px;opacity:.5;position:relative;top:2px;vertical-align:text-bottom;width:10px}.uppy-size--md .uppy-StatusBar-serviceMsg-ghostsIcon{left:10px;top:1px;width:15px}.uppy-StatusBar-details{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#939393;border-radius:50%;color:#fff;cursor:help;display:inline-block;font-size:10px;font-weight:600;height:13px;inset-inline-start:2px;line-height:12px;position:relative;text-align:center;top:0;vertical-align:middle;width:13px}.uppy-StatusBar-details:after{line-height:1.3;word-wrap:break-word}.uppy-StatusBar-spinner{animation-duration:1s;animation-iteration-count:infinite;animation-name:uppy-StatusBar-spinnerAnimation;animation-timing-function:linear;fill:#1269cf;margin-inline-end:10px}.uppy-StatusBar.is-postprocessing .uppy-StatusBar-spinner,.uppy-StatusBar.is-preprocessing .uppy-StatusBar-spinner{fill:#f6a623}@keyframes uppy-StatusBar-spinnerAnimation{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.uppy-transition-slideDownUp-enter{opacity:.01;transform:translate3d(0,-105%,0);transition:transform .25s ease-in-out,opacity .25s ease-in-out}.uppy-transition-slideDownUp-enter.uppy-transition-slideDownUp-enter-active{opacity:1;transform:translateZ(0)}.uppy-transition-slideDownUp-leave{opacity:1;transform:translateZ(0);transition:transform .25s ease-in-out,opacity .25s ease-in-out}.uppy-transition-slideDownUp-leave.uppy-transition-slideDownUp-leave-active{opacity:.01;transform:translate3d(0,-105%,0)}@keyframes uppy-Dashboard-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes uppy-Dashboard-fadeOut{0%{opacity:1}to{opacity:0}}@keyframes uppy-Dashboard-slideDownAndFadeIn{0%{opacity:0;transform:translate3d(-50%,-70%,0)}to{opacity:1;transform:translate3d(-50%,-50%,0)}}@keyframes uppy-Dashboard-slideDownAndFadeIn--small{0%{opacity:0;transform:translate3d(0,-20%,0)}to{opacity:1;transform:translateZ(0)}}@keyframes uppy-Dashboard-slideUpFadeOut{0%{opacity:1;transform:translate3d(-50%,-50%,0)}to{opacity:0;transform:translate3d(-50%,-70%,0)}}@keyframes uppy-Dashboard-slideUpFadeOut--small{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20%,0)}}.uppy-Dashboard--modal{z-index:1001}.uppy-Dashboard--modal[aria-hidden=true]{display:none}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideDownAndFadeIn--small .3s cubic-bezier(0,0,.2,1)}@media only screen and (min-width:820px){.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideDownAndFadeIn .3s cubic-bezier(0,0,.2,1)}}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose>.uppy-Dashboard-overlay{animation:uppy-Dashboard-fadeIn .3s cubic-bezier(0,0,.2,1)}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose.uppy-Dashboard--isClosing>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideUpFadeOut--small .3s cubic-bezier(0,0,.2,1)}@media only screen and (min-width:820px){.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose.uppy-Dashboard--isClosing>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideUpFadeOut .3s cubic-bezier(0,0,.2,1)}}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose.uppy-Dashboard--isClosing>.uppy-Dashboard-overlay{animation:uppy-Dashboard-fadeOut .3s cubic-bezier(0,0,.2,1)}.uppy-Dashboard-isFixed{height:100vh;overflow:hidden}.uppy-Dashboard--modal .uppy-Dashboard-overlay{background-color:#00000080;inset:0;position:fixed;z-index:1001}.uppy-Dashboard-inner{background-color:#f4f4f4;border:1px solid #eaeaea;border-radius:5px;max-height:100%;max-width:100%;outline:none;position:relative}.uppy-size--md .uppy-Dashboard-inner{min-height:auto}@media only screen and (min-width:820px){.uppy-Dashboard-inner{height:500px;width:650px}}.uppy-Dashboard--modal .uppy-Dashboard-inner{z-index:1002}[data-uppy-theme=dark] .uppy-Dashboard-inner{background-color:#1f1f1f}.uppy-Dashboard--isDisabled .uppy-Dashboard-inner{cursor:not-allowed}.uppy-Dashboard-innerWrap{border-radius:5px;display:flex;flex-direction:column;height:100%;opacity:0;overflow:hidden;position:relative}.uppy-Dashboard--isInnerWrapVisible .uppy-Dashboard-innerWrap{opacity:1}.uppy-Dashboard--isDisabled .uppy-Dashboard-innerWrap{cursor:not-allowed;filter:grayscale(100%);opacity:.6;-webkit-user-select:none;-moz-user-select:none;user-select:none}.uppy-Dashboard--isDisabled .uppy-ProviderIconBg{fill:#9f9f9f}.uppy-Dashboard--isDisabled [aria-disabled],.uppy-Dashboard--isDisabled [disabled]{cursor:not-allowed;pointer-events:none}.uppy-Dashboard--modal .uppy-Dashboard-inner{border:none;inset:35px 15px 15px;position:fixed}@media only screen and (min-width:820px){.uppy-Dashboard--modal .uppy-Dashboard-inner{box-shadow:0 5px 15px 4px #00000026;left:50%;right:auto;top:50%;transform:translate(-50%,-50%)}}.uppy-Dashboard-close{color:#ffffffe6;cursor:pointer;display:block;font-size:27px;inset-inline-end:-2px;position:absolute;top:-33px;z-index:1005}.uppy-Dashboard-close:focus{outline:none}.uppy-Dashboard-close::-moz-focus-inner{border:0}.uppy-Dashboard-close:focus{color:#6eabf2}@media only screen and (min-width:820px){.uppy-Dashboard-close{font-size:35px;inset-inline-end:-35px;top:-10px}}.uppy-Dashboard-serviceMsg{background-color:#fffbf7;border-bottom:1px solid #edd4b9;border-top:1px solid #edd4b9;font-size:12px;font-weight:500;line-height:1.3;padding:12px 0;position:relative;top:-1px;z-index:1004}.uppy-size--md .uppy-Dashboard-serviceMsg{font-size:14px;line-height:1.4}[data-uppy-theme=dark] .uppy-Dashboard-serviceMsg{background-color:#1f1f1f;border-bottom:1px solid #333;border-top:1px solid #333;color:#eaeaea}.uppy-Dashboard-serviceMsg-title{display:block;line-height:1;margin-bottom:4px;padding-left:42px}.uppy-Dashboard-serviceMsg-text{padding:0 15px}.uppy-Dashboard-serviceMsg-actionBtn{color:#1269cf;font-size:inherit;font-weight:inherit;vertical-align:initial}[data-uppy-theme=dark] .uppy-Dashboard-serviceMsg-actionBtn{color:#02baf2e6}.uppy-Dashboard-serviceMsg-icon{left:15px;position:absolute;top:10px}.uppy-Dashboard-AddFiles{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;position:relative;text-align:center}[data-uppy-drag-drop-supported=true] .uppy-Dashboard-AddFiles{border:1px dashed #dfdfdf;border-radius:3px;height:calc(100% - 14px);margin:7px}.uppy-Dashboard-AddFilesPanel .uppy-Dashboard-AddFiles{border:none;height:calc(100% - 54px)}.uppy-Dashboard--modal .uppy-Dashboard-AddFiles{border-color:#cfcfcf}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles{border-color:#757575}.uppy-Dashboard-AddFiles-info{display:none;margin-top:auto;padding-bottom:15px;padding-top:15px}.uppy-size--height-md .uppy-Dashboard-AddFiles-info{display:block}.uppy-size--md .uppy-Dashboard-AddFiles-info{bottom:25px;left:0;padding-bottom:0;padding-top:30px;position:absolute;right:0}[data-uppy-num-acquirers="0"] .uppy-Dashboard-AddFiles-info{margin-top:0}.uppy-Dashboard-browse{color:#1269cf;cursor:pointer}.uppy-Dashboard-browse:focus{outline:none}.uppy-Dashboard-browse::-moz-focus-inner{border:0}.uppy-Dashboard-browse:focus,.uppy-Dashboard-browse:hover{border-bottom:1px solid #1269cf}[data-uppy-theme=dark] .uppy-Dashboard-browse{color:#02baf2e6}[data-uppy-theme=dark] .uppy-Dashboard-browse:focus,[data-uppy-theme=dark] .uppy-Dashboard-browse:hover{border-bottom:1px solid #02baf2}.uppy-Dashboard-browseBtn{display:block;font-size:14px;font-weight:500;margin-bottom:5px;margin-top:8px;width:100%}.uppy-size--md .uppy-Dashboard-browseBtn{font-size:15px;margin:15px auto;padding:13px 44px;width:auto}.uppy-Dashboard-AddFiles-list{display:flex;flex:1;flex-direction:column;margin-top:2px;overflow-y:auto;padding:2px 0;width:100%;-webkit-overflow-scrolling:touch}.uppy-size--md .uppy-Dashboard-AddFiles-list{flex:none;flex-direction:row;flex-wrap:wrap;justify-content:center;margin-top:15px;max-width:600px;overflow-y:visible;padding-top:0}.uppy-DashboardTab{border-bottom:1px solid #eaeaea;text-align:center;width:100%}[data-uppy-theme=dark] .uppy-DashboardTab{border-bottom:1px solid #333}.uppy-size--md .uppy-DashboardTab{border-bottom:none;display:inline-block;margin-bottom:10px;width:auto}.uppy-DashboardTab-btn{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:initial;color:#525252;cursor:pointer;flex-direction:row;height:100%;justify-content:left;padding:12px 15px;width:100%}.uppy-DashboardTab-btn:focus{outline:none}.uppy-size--md .uppy-DashboardTab-btn{border-radius:5px;flex-direction:column;margin-inline-end:1px;padding:10px 3px;width:86px}[data-uppy-theme=dark] .uppy-DashboardTab-btn{color:#eaeaea}.uppy-DashboardTab-btn::-moz-focus-inner{border:0}.uppy-DashboardTab-btn:hover{background-color:#e9ecef}[data-uppy-theme=dark] .uppy-DashboardTab-btn:hover{background-color:#333}.uppy-DashboardTab-btn:active,.uppy-DashboardTab-btn:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-DashboardTab-btn:active,[data-uppy-theme=dark] .uppy-DashboardTab-btn:focus{background-color:#525252}.uppy-DashboardTab-btn svg{display:inline-block;max-height:100%;max-width:100%;overflow:hidden;transition:transform .15s ease-in-out;vertical-align:text-top}.uppy-DashboardTab-inner{align-items:center;background-color:#fff;border-radius:8px;box-shadow:0 1px 1px #0000001a,0 1px 2px #0000001a,0 2px 3px #00000005;display:flex;height:32px;justify-content:center;margin-inline-end:10px;width:32px}.uppy-size--md .uppy-DashboardTab-inner{margin-inline-end:0}[data-uppy-theme=dark] .uppy-DashboardTab-inner{background-color:#323232;box-shadow:0 1px 1px #0003,0 1px 2px #0003,0 2px 3px #00000014}.uppy-DashboardTab-name{font-size:14px;font-weight:400}.uppy-size--md .uppy-DashboardTab-name{font-size:12px;line-height:15px;margin-bottom:0;margin-top:8px}.uppy-DashboardTab-iconMyDevice{color:#1269cf}[data-uppy-theme=dark] .uppy-DashboardTab-iconMyDevice{color:#02baf2}.uppy-DashboardTab-iconBox{color:#0061d5}[data-uppy-theme=dark] .uppy-DashboardTab-iconBox{color:#eaeaea}.uppy-DashboardTab-iconDropbox{color:#0061fe}[data-uppy-theme=dark] .uppy-DashboardTab-iconDropbox{color:#eaeaea}.uppy-DashboardTab-iconUnsplash{color:#111}[data-uppy-theme=dark] .uppy-DashboardTab-iconUnsplash{color:#eaeaea}.uppy-DashboardTab-iconWebdav{color:#111}[data-uppy-theme=dark] .uppy-DashboardTab-iconWebdav{color:#eaeaea}.uppy-DashboardTab-iconScreenRec{color:#2c3e50}[data-uppy-theme=dark] .uppy-DashboardTab-iconScreenRec{color:#eaeaea}.uppy-DashboardTab-iconAudio{color:#8030a3}[data-uppy-theme=dark] .uppy-DashboardTab-iconAudio{color:#bf6ee3}.uppy-Dashboard-input{height:.1px;opacity:0;overflow:hidden;position:absolute;width:.1px;z-index:-1}.uppy-DashboardContent-bar{align-items:center;background-color:#fafafa;border-bottom:1px solid #eaeaea;display:flex;flex-shrink:0;height:40px;justify-content:space-between;padding:0 10px;position:relative;width:100%;z-index:1004}.uppy-size--md .uppy-DashboardContent-bar{height:50px;padding:0 15px}[data-uppy-theme=dark] .uppy-DashboardContent-bar{background-color:#1f1f1f;border-bottom:1px solid #333}.uppy-DashboardContent-title{font-size:12px;font-weight:500;left:0;line-height:40px;margin:auto;max-width:170px;overflow-x:hidden;position:absolute;right:0;text-align:center;text-overflow:ellipsis;top:0;white-space:nowrap;width:100%}.uppy-size--md .uppy-DashboardContent-title{font-size:14px;line-height:50px;max-width:300px}[data-uppy-theme=dark] .uppy-DashboardContent-title{color:#eaeaea}.uppy-DashboardContent-back,.uppy-DashboardContent-save{-webkit-appearance:none;background:none;border:0;border-radius:3px;color:inherit;color:#1269cf;cursor:pointer;font-family:inherit;font-size:inherit;font-size:12px;font-weight:400;line-height:1;margin:0;margin-inline-start:-6px;padding:7px 6px}.uppy-DashboardContent-back:focus,.uppy-DashboardContent-save:focus{outline:none}.uppy-DashboardContent-back::-moz-focus-inner,.uppy-DashboardContent-save::-moz-focus-inner{border:0}.uppy-DashboardContent-back:hover,.uppy-DashboardContent-save:hover{color:#0e51a0}.uppy-DashboardContent-back:focus,.uppy-DashboardContent-save:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-DashboardContent-back:focus,[data-uppy-theme=dark] .uppy-DashboardContent-save:focus{background-color:#333}.uppy-size--md .uppy-DashboardContent-back,.uppy-size--md .uppy-DashboardContent-save{font-size:14px}[data-uppy-theme=dark] .uppy-DashboardContent-back,[data-uppy-theme=dark] .uppy-DashboardContent-save{color:#02baf2}.uppy-DashboardContent-addMore{-webkit-appearance:none;background:none;border:0;border-radius:3px;color:inherit;color:#1269cf;cursor:pointer;font-family:inherit;font-size:inherit;font-weight:500;height:29px;line-height:1;margin:0;margin-inline-end:-5px;padding:7px 8px;width:29px}.uppy-DashboardContent-addMore:focus{outline:none}.uppy-DashboardContent-addMore::-moz-focus-inner{border:0}.uppy-DashboardContent-addMore:hover{color:#0e51a0}.uppy-DashboardContent-addMore:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-DashboardContent-addMore:focus{background-color:#333}.uppy-size--md .uppy-DashboardContent-addMore{font-size:14px;height:auto;margin-inline-end:-8px;width:auto}[data-uppy-theme=dark] .uppy-DashboardContent-addMore{color:#02baf2}.uppy-DashboardContent-addMore svg{margin-inline-end:4px;vertical-align:initial}.uppy-size--md .uppy-DashboardContent-addMore svg{height:11px;width:11px}.uppy-DashboardContent-addMoreCaption{display:none}.uppy-size--md .uppy-DashboardContent-addMoreCaption{display:inline}.uppy-DashboardContent-panel{background-color:#f5f5f5;flex:1}.uppy-Dashboard-AddFilesPanel,.uppy-DashboardContent-panel{border-radius:5px;display:flex;flex-direction:column;inset:0;overflow:hidden;position:absolute;z-index:1005}.uppy-Dashboard-AddFilesPanel{background:#fafafa;background:linear-gradient(0deg,#fafafa 35%,#fafafad9);box-shadow:0 0 10px 5px #00000026}[data-uppy-theme=dark] .uppy-Dashboard-AddFilesPanel{background-color:#333;background-image:linear-gradient(0deg,#1f1f1f 35%,#1f1f1fd9)}.uppy-Dashboard--isAddFilesPanelVisible .uppy-Dashboard-files{filter:blur(2px)}.uppy-Dashboard-progress{bottom:0;height:12%;left:0;position:absolute;width:100%}.uppy-Dashboard-progressBarContainer.is-active{height:100%;left:0;position:absolute;top:0;width:100%;z-index:1004}.uppy-Dashboard-filesContainer{flex:1;margin:0;overflow-y:hidden;position:relative}.uppy-Dashboard-filesContainer:after{clear:both;content:"";display:table}.uppy-Dashboard-files{flex:1;margin:0;overflow-y:auto;padding:0 0 10px;-webkit-overflow-scrolling:touch}.uppy-size--md .uppy-Dashboard-files{padding-top:10px}.uppy-Dashboard--singleFile .uppy-Dashboard-filesInner{align-items:center;display:flex;height:100%;justify-content:center}.uppy-Dashboard-dropFilesHereHint{align-items:center;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48'%3E%3Cpath fill='%231269CF' d='M24 1v1C11.85 2 2 11.85 2 24s9.85 22 22 22 22-9.85 22-22S36.15 2 24 2zm0 0V0c13.254 0 24 10.746 24 24S37.254 48 24 48 0 37.254 0 24 10.746 0 24 0zm7.707 19.293a.999.999 0 1 1-1.414 1.414L25 16.414V34a1 1 0 1 1-2 0V16.414l-5.293 5.293a.999.999 0 1 1-1.414-1.414l7-7a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E");background-position:50% 50%;background-repeat:no-repeat;border:1px dashed #1269cf;border-radius:3px;color:#757575;display:flex;font-size:16px;justify-content:center;inset:7px;padding-top:90px;position:absolute;text-align:center;visibility:hidden;z-index:2000}[data-uppy-theme=dark] .uppy-Dashboard-dropFilesHereHint{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48'%3E%3Cpath fill='%2302BAF2' d='M24 1v1C11.85 2 2 11.85 2 24s9.85 22 22 22 22-9.85 22-22S36.15 2 24 2zm0 0V0c13.254 0 24 10.746 24 24S37.254 48 24 48 0 37.254 0 24 10.746 0 24 0zm7.707 19.293a.999.999 0 1 1-1.414 1.414L25 16.414V34a1 1 0 1 1-2 0V16.414l-5.293 5.293a.999.999 0 1 1-1.414-1.414l7-7a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E");border-color:#02baf2;color:#bbb}.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-dropFilesHereHint{pointer-events:none;visibility:visible}.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-files,.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-progressindicators,.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-serviceMsg,.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-DashboardContent-bar{opacity:.15}.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-AddFiles{opacity:.03}.uppy-Dashboard-AddFiles-title{color:#000;font-size:17px;font-weight:500;line-height:1.35;margin-bottom:5px;margin-top:15px;padding:0 15px;text-align:inline-start;width:100%}.uppy-size--md .uppy-Dashboard-AddFiles-title{font-size:21px;font-weight:400;margin-top:5px;max-width:480px;padding:0 35px;text-align:center}[data-uppy-num-acquirers="0"] .uppy-Dashboard-AddFiles-title{text-align:center}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles-title{color:#eaeaea}.uppy-Dashboard-AddFiles-title button{font-weight:500}.uppy-size--md .uppy-Dashboard-AddFiles-title button{font-weight:400}.uppy-Dashboard-note{color:#757575;font-size:14px;line-height:1.25;margin:auto;max-width:350px;padding:0 15px;text-align:center}.uppy-size--md .uppy-Dashboard-note{line-height:1.35;max-width:600px}[data-uppy-theme=dark] .uppy-Dashboard-note{color:#cfcfcf}a.uppy-Dashboard-poweredBy{color:#939393;display:inline-block;font-size:11px;margin-top:8px;text-align:center;text-decoration:none}.uppy-Dashboard-poweredByIcon{margin-left:1px;margin-right:1px;opacity:.9;position:relative;top:1px;vertical-align:text-top;fill:none;stroke:#939393}.uppy-Dashboard-Item-previewIcon{height:25px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:25px;z-index:100}.uppy-size--md .uppy-Dashboard-Item-previewIcon{height:38px;width:38px}.uppy-Dashboard-Item-previewIcon svg{height:100%;width:100%}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-previewIcon{height:100%;max-height:60%;max-width:60%;width:100%}.uppy-Dashboard-Item-previewIconWrap{height:76px;max-height:75%;position:relative}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-previewIconWrap{height:100%;width:100%}.uppy-Dashboard-Item-previewIconBg{filter:drop-shadow(rgba(0,0,0,.1) 0 1px 1px);height:100%;width:100%}.uppy-Dashboard-upload{height:50px;position:relative;width:50px}.uppy-size--md .uppy-Dashboard-upload{height:60px;width:60px}.uppy-Dashboard-upload .uppy-c-icon{position:relative;top:1px;width:50%}.uppy-Dashboard-uploadCount{background-color:#1bb240;border-radius:50%;color:#fff;font-size:8px;height:16px;inset-inline-end:-12px;line-height:16px;position:absolute;top:-12px;width:16px}.uppy-size--md .uppy-Dashboard-uploadCount{font-size:9px;height:18px;line-height:18px;width:18px}.uppy-Dashboard-inner{border:none!important;background:transparent!important}.uppy-Dashboard-innerWrap{border-radius:.5rem;overflow:hidden}.uppy-Dashboard-AddFiles{border:2px dashed hsl(var(--border))!important;border-radius:.5rem!important;background:hsl(var(--muted) / .3)!important;transition:all .2s ease}.uppy-Dashboard-AddFiles:hover{border-color:hsl(var(--primary))!important;background:hsl(var(--muted) / .5)!important}.uppy-Dashboard-AddFiles-title{color:hsl(var(--foreground))!important;font-weight:500!important}.uppy-Dashboard-AddFiles-info{color:hsl(var(--muted-foreground))!important}.uppy-Dashboard-browse{color:hsl(var(--primary))!important;font-weight:500!important}.uppy-Dashboard-browse:hover{text-decoration:underline!important}.uppy-Dashboard-files{background:transparent!important}.uppy-Dashboard-Item{border-bottom-color:hsl(var(--border))!important}.uppy-Dashboard-Item-name{color:hsl(var(--foreground))!important}.uppy-Dashboard-Item-status{color:hsl(var(--muted-foreground))!important}.uppy-StatusBar{background:hsl(var(--muted))!important;border-top:1px solid hsl(var(--border))!important}.uppy-StatusBar-progress{background:hsl(var(--primary))!important}.uppy-StatusBar-content{color:hsl(var(--foreground))!important}.uppy-StatusBar-actionBtn--upload{background:hsl(var(--primary))!important;color:hsl(var(--primary-foreground))!important;border-radius:.375rem!important;font-weight:500!important;padding:.5rem 1rem!important}.uppy-StatusBar-actionBtn--upload:hover{background:hsl(var(--primary) / .9)!important}.uppy-Dashboard-note{color:hsl(var(--muted-foreground))!important;font-size:.75rem!important}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles,.dark .uppy-Dashboard-AddFiles{background:hsl(var(--muted) / .2)!important}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles-title,.dark .uppy-Dashboard-AddFiles-title{color:hsl(var(--foreground))!important}[data-uppy-theme=dark] .uppy-StatusBar,.dark .uppy-StatusBar{background:hsl(var(--muted) / .5)!important}.uppy-Dashboard{font-family:inherit!important}.uppy-Dashboard-Item-preview{border-radius:.375rem!important;overflow:hidden}.uppy-Dashboard-Item-action--remove{color:hsl(var(--destructive))!important}.uppy-Dashboard-Item-action--remove:hover{opacity:.8}.uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progress{color:hsl(var(--success, 142 76% 36%))!important}.uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-progress{color:hsl(var(--destructive))!important}.uppy-Dashboard-files::-webkit-scrollbar{width:6px}.uppy-Dashboard-files::-webkit-scrollbar-track{background:transparent}.uppy-Dashboard-files::-webkit-scrollbar-thumb{background:hsl(var(--muted-foreground) / .3);border-radius:3px}.uppy-Dashboard-files::-webkit-scrollbar-thumb:hover{background:hsl(var(--muted-foreground) / .5)}@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(/assets/KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(/assets/KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(/assets/KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(/assets/KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(/assets/KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(/assets/KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.25"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:grab}.react-flow__node.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%} diff --git a/webui/dist/assets/index-CnFGj4Iv.js b/webui/dist/assets/index-CnFGj4Iv.js deleted file mode 100644 index e6aa6582..00000000 --- a/webui/dist/assets/index-CnFGj4Iv.js +++ /dev/null @@ -1,407 +0,0 @@ -import{r as b,j as o,L as rv,u as na,R as oe,c as sv,b as ya,d as yJ,e as bJ,f as wJ,g as SJ,h as ps,k as kJ,l as OJ,O as Hz,m as jJ}from"./router-DQNkr8RI.js";import{a as NJ,b as CJ,g as yd}from"./react-vendor-Dtc2IqVY.js";import{c as Qz,R as TJ,T as EJ,L as _J,a as AJ,C as Kx,X as Zx,Y as Pm,b as MJ,B as S4,d as Jx,P as RJ,e as DJ,f as PJ,_ as zJ,g as IJ,h as Ge,i as LJ,j as k9,k as BJ,l as O9,m as FJ,n as qJ,o as $J,r as Vz,p as HJ,q as wj,s as Uz,t as bd,u as Sj,v as QJ,w as VJ,x as Wz,y as Gz,z as Xz,A as kj,D as Oj,E as jj,F as UJ,G as WJ,H as GJ,I as XJ,J as YJ,K as KJ,M as ZJ,N as Nj,O as $y,Q as JJ,S as eee,U as Cj,V as tee,W as nee,Z as Yz,$ as Kz,a0 as Zz,a1 as Jz,a2 as Hy,a3 as eI,a4 as tI,a5 as ree,a6 as see,a7 as iee,a8 as aee,a9 as oee,aa as lee,ab as cee,ac as uee,ad as nI,ae as rI,af as dee,ag as hee,ah as fee,ai as mee,aj as pee,ak as gee,al as xee,am as vee,an as yee,ao as bee,ap as wee,aq as See,ar as kee,as as Oee,at as jee,au as Nee}from"./charts-Cdq_Jxe7.js";import{c as Da,a as Qy,u as Gi,P as Sn,b as nt,d as er,e as Rp,f as Kl,g as Rs,h as oi,i as Wh,j as Tj,k as Vy,S as Cee,l as sI,m as iI,R as aI,O as Uy,n as Ej,C as Wy,o as Gy,T as _j,D as Aj,p as Mj,q as oI,r as lI,W as Tee,s as cI,I as Eee,t as uI,v as dI,w as _ee,x as hI,V as Aee,L as fI,y as mI,z as Mee,A as Ree,B as pI,E as Dee,F as Pee,G as Gc,H as Xy,J as vf,K as gI,M as xI,N as vI,Q as yI,U as Rj,X as Dj,Y as Yy,Z as Ky,_ as Pj,$ as bI,a0 as zee,a1 as wI,a2 as Iee,a3 as Lee,a4 as SI,a5 as Bee}from"./ui-vendor-BgfqR_Xz.js";import{R as Qs,P as Dp,C as Ya,a as Lo,Z as Zu,b as zj,F as Po,c as Fee,S as Vc,A as qee,D as $ee,d as sk,e as Mh,M as Gh,T as Hee,X as Pp,f as kI,g as Qee,I as Xi,h as Ga,i as zo,j as Iv,E as I0,k as Ji,l as OI,m as ik,n as ak,L as j9,K as jI,o as Zy,p as Vee,q as w0,r as Us,s as Uee,B as o0,U as Lv,t as Ij,u as Wee,v as Gee,w as ii,H as L0,x as Bv,y as Xc,z as B0,G as Xee,J as Yee,N as zp,O as Is,Q as Cn,V as Fv,W as Ju,Y as Ip,_ as wd,$ as Zl,a0 as Lp,a1 as Lj,a2 as Kee,a3 as Zee,a4 as Jee,a5 as ed,a6 as N9,a7 as ete,a8 as td,a9 as ok,aa as F0,ab as tte,ac as lk,ad as nte,ae as NI,af as C9,ag as rte,ah as ste,ai as ite,aj as Dc,ak as k4,al as T9,am as ate,an as ote,ao as lte,ap as cte,aq as ute,ar as CI,as as TI,at as EI,au as dte,av as hte,aw as E9,ax as fte,ay as mte,az as _9,aA as pte,aB as gte}from"./icons-CqUsKJFR.js";(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const i of s)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(s){const i={};return s.integrity&&(i.integrity=s.integrity),s.referrerPolicy&&(i.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?i.credentials="include":s.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(s){if(s.ep)return;s.ep=!0;const i=n(s);fetch(s.href,i)}})();var O4={exports:{}},zm={},j4={exports:{}},N4={};var A9;function xte(){return A9||(A9=1,(function(t){function e(L,$){var K=L.length;L.push($);e:for(;0>>1,R=L[Y];if(0>>1;Ys(z,K))Us(te,z)?(L[Y]=te,L[U]=K,Y=U):(L[Y]=z,L[X]=K,Y=X);else if(Us(te,K))L[Y]=te,L[U]=K,Y=U;else break e}}return $}function s(L,$){var K=L.sortIndex-$.sortIndex;return K!==0?K:L.id-$.id}if(t.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var i=performance;t.unstable_now=function(){return i.now()}}else{var a=Date,l=a.now();t.unstable_now=function(){return a.now()-l}}var c=[],d=[],h=1,m=null,g=3,x=!1,y=!1,w=!1,S=!1,k=typeof setTimeout=="function"?setTimeout:null,j=typeof clearTimeout=="function"?clearTimeout:null,N=typeof setImmediate<"u"?setImmediate:null;function T(L){for(var $=n(d);$!==null;){if($.callback===null)r(d);else if($.startTime<=L)r(d),$.sortIndex=$.expirationTime,e(c,$);else break;$=n(d)}}function E(L){if(w=!1,T(L),!y)if(n(c)!==null)y=!0,_||(_=!0,W());else{var $=n(d);$!==null&&V(E,$.startTime-L)}}var _=!1,A=-1,D=5,q=-1;function B(){return S?!0:!(t.unstable_now()-qL&&B());){var Y=m.callback;if(typeof Y=="function"){m.callback=null,g=m.priorityLevel;var R=Y(m.expirationTime<=L);if(L=t.unstable_now(),typeof R=="function"){m.callback=R,T(L),$=!0;break t}m===n(c)&&r(c),T(L)}else r(c);m=n(c)}if(m!==null)$=!0;else{var ie=n(d);ie!==null&&V(E,ie.startTime-L),$=!1}}break e}finally{m=null,g=K,x=!1}$=void 0}}finally{$?W():_=!1}}}var W;if(typeof N=="function")W=function(){N(H)};else if(typeof MessageChannel<"u"){var ee=new MessageChannel,I=ee.port2;ee.port1.onmessage=H,W=function(){I.postMessage(null)}}else W=function(){k(H,0)};function V(L,$){A=k(function(){L(t.unstable_now())},$)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(L){L.callback=null},t.unstable_forceFrameRate=function(L){0>L||125Y?(L.sortIndex=K,e(d,L),n(c)===null&&L===n(d)&&(w?(j(A),A=-1):w=!0,V(E,K-Y))):(L.sortIndex=R,e(c,L),y||x||(y=!0,_||(_=!0,W()))),L},t.unstable_shouldYield=B,t.unstable_wrapCallback=function(L){var $=g;return function(){var K=g;g=$;try{return L.apply(this,arguments)}finally{g=K}}}})(N4)),N4}var M9;function vte(){return M9||(M9=1,j4.exports=xte()),j4.exports}var R9;function yte(){if(R9)return zm;R9=1;var t=vte(),e=NJ(),n=CJ();function r(u){var f="https://react.dev/errors/"+u;if(1R||(u.current=Y[R],Y[R]=null,R--)}function z(u,f){R++,Y[R]=u.current,u.current=f}var U=ie(null),te=ie(null),ne=ie(null),G=ie(null);function se(u,f){switch(z(ne,f),z(te,u),z(U,null),f.nodeType){case 9:case 11:u=(u=f.documentElement)&&(u=u.namespaceURI)?UT(u):0;break;default:if(u=f.tagName,f=f.namespaceURI)f=UT(f),u=WT(f,u);else switch(u){case"svg":u=1;break;case"math":u=2;break;default:u=0}}X(U),z(U,u)}function re(){X(U),X(te),X(ne)}function ae(u){u.memoizedState!==null&&z(G,u);var f=U.current,p=WT(f,u.type);f!==p&&(z(te,u),z(U,p))}function _e(u){te.current===u&&(X(U),X(te)),G.current===u&&(X(G),Am._currentValue=K)}var Be,Ye;function Je(u){if(Be===void 0)try{throw Error()}catch(p){var f=p.stack.trim().match(/\n( *(at )?)/);Be=f&&f[1]||"",Ye=-1)":-1O||de[v]!==Se[O]){var Te=` -`+de[v].replace(" at new "," at ");return u.displayName&&Te.includes("")&&(Te=Te.replace("",u.displayName)),Te}while(1<=v&&0<=O);break}}}finally{Oe=!1,Error.prepareStackTrace=p}return(p=u?u.displayName||u.name:"")?Je(p):""}function Ue(u,f){switch(u.tag){case 26:case 27:case 5:return Je(u.type);case 16:return Je("Lazy");case 13:return u.child!==f&&f!==null?Je("Suspense Fallback"):Je("Suspense");case 19:return Je("SuspenseList");case 0:case 15:return Ve(u.type,!1);case 11:return Ve(u.type.render,!1);case 1:return Ve(u.type,!0);case 31:return Je("Activity");default:return""}}function $e(u){try{var f="",p=null;do f+=Ue(u,p),p=u,u=u.return;while(u);return f}catch(v){return` -Error generating stack: `+v.message+` -`+v.stack}}var jt=Object.prototype.hasOwnProperty,vt=t.unstable_scheduleCallback,$n=t.unstable_cancelCallback,qt=t.unstable_shouldYield,un=t.unstable_requestPaint,Mt=t.unstable_now,ct=t.unstable_getCurrentPriorityLevel,Ne=t.unstable_ImmediatePriority,ze=t.unstable_UserBlockingPriority,rt=t.unstable_NormalPriority,bt=t.unstable_LowPriority,zt=t.unstable_IdlePriority,Rt=t.log,Hn=t.unstable_setDisableYieldValue,We=null,ot=null;function dn(u){if(typeof Rt=="function"&&Hn(u),ot&&typeof ot.setStrictMode=="function")try{ot.setStrictMode(We,u)}catch{}}var Pt=Math.clz32?Math.clz32:rn,xn=Math.log,dt=Math.LN2;function rn(u){return u>>>=0,u===0?32:31-(xn(u)/dt|0)|0}var wt=256,Wt=262144,Gt=4194304;function lt(u){var f=u&42;if(f!==0)return f;switch(u&-u){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:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return u&261888;case 262144:case 524288:case 1048576:case 2097152:return u&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return u&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return u}}function ve(u,f,p){var v=u.pendingLanes;if(v===0)return 0;var O=0,C=u.suspendedLanes,F=u.pingedLanes;u=u.warmLanes;var Z=v&134217727;return Z!==0?(v=Z&~C,v!==0?O=lt(v):(F&=Z,F!==0?O=lt(F):p||(p=Z&~u,p!==0&&(O=lt(p))))):(Z=v&~C,Z!==0?O=lt(Z):F!==0?O=lt(F):p||(p=v&~u,p!==0&&(O=lt(p)))),O===0?0:f!==0&&f!==O&&(f&C)===0&&(C=O&-O,p=f&-f,C>=p||C===32&&(p&4194048)!==0)?f:O}function He(u,f){return(u.pendingLanes&~(u.suspendedLanes&~u.pingedLanes)&f)===0}function ht(u,f){switch(u){case 1:case 2:case 4:case 8:case 64:return f+250;case 16:case 32: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 f+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 vn(){var u=Gt;return Gt<<=1,(Gt&62914560)===0&&(Gt=4194304),u}function Qn(u){for(var f=[],p=0;31>p;p++)f.push(u);return f}function fr(u,f){u.pendingLanes|=f,f!==268435456&&(u.suspendedLanes=0,u.pingedLanes=0,u.warmLanes=0)}function ar(u,f,p,v,O,C){var F=u.pendingLanes;u.pendingLanes=p,u.suspendedLanes=0,u.pingedLanes=0,u.warmLanes=0,u.expiredLanes&=p,u.entangledLanes&=p,u.errorRecoveryDisabledLanes&=p,u.shellSuspendCounter=0;var Z=u.entanglements,de=u.expirationTimes,Se=u.hiddenUpdates;for(p=F&~p;0"u")return null;try{return u.activeElement||u.body}catch{return u.body}}var fK=/[\n"\\]/g;function ia(u){return u.replace(fK,function(f){return"\\"+f.charCodeAt(0).toString(16)+" "})}function gw(u,f,p,v,O,C,F,Z){u.name="",F!=null&&typeof F!="function"&&typeof F!="symbol"&&typeof F!="boolean"?u.type=F:u.removeAttribute("type"),f!=null?F==="number"?(f===0&&u.value===""||u.value!=f)&&(u.value=""+sa(f)):u.value!==""+sa(f)&&(u.value=""+sa(f)):F!=="submit"&&F!=="reset"||u.removeAttribute("value"),f!=null?xw(u,F,sa(f)):p!=null?xw(u,F,sa(p)):v!=null&&u.removeAttribute("value"),O==null&&C!=null&&(u.defaultChecked=!!C),O!=null&&(u.checked=O&&typeof O!="function"&&typeof O!="symbol"),Z!=null&&typeof Z!="function"&&typeof Z!="symbol"&&typeof Z!="boolean"?u.name=""+sa(Z):u.removeAttribute("name")}function F7(u,f,p,v,O,C,F,Z){if(C!=null&&typeof C!="function"&&typeof C!="symbol"&&typeof C!="boolean"&&(u.type=C),f!=null||p!=null){if(!(C!=="submit"&&C!=="reset"||f!=null)){pw(u);return}p=p!=null?""+sa(p):"",f=f!=null?""+sa(f):p,Z||f===u.value||(u.value=f),u.defaultValue=f}v=v??O,v=typeof v!="function"&&typeof v!="symbol"&&!!v,u.checked=Z?u.checked:!!v,u.defaultChecked=!!v,F!=null&&typeof F!="function"&&typeof F!="symbol"&&typeof F!="boolean"&&(u.name=F),pw(u)}function xw(u,f,p){f==="number"&&qg(u.ownerDocument)===u||u.defaultValue===""+p||(u.defaultValue=""+p)}function Td(u,f,p,v){if(u=u.options,f){f={};for(var O=0;O"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Sw=!1;if(sl)try{var Xf={};Object.defineProperty(Xf,"passive",{get:function(){Sw=!0}}),window.addEventListener("test",Xf,Xf),window.removeEventListener("test",Xf,Xf)}catch{Sw=!1}var ic=null,kw=null,Hg=null;function W7(){if(Hg)return Hg;var u,f=kw,p=f.length,v,O="value"in ic?ic.value:ic.textContent,C=O.length;for(u=0;u=Zf),J7=" ",eC=!1;function tC(u,f){switch(u){case"keyup":return qK.indexOf(f.keyCode)!==-1;case"keydown":return f.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function nC(u){return u=u.detail,typeof u=="object"&&"data"in u?u.data:null}var Md=!1;function HK(u,f){switch(u){case"compositionend":return nC(f);case"keypress":return f.which!==32?null:(eC=!0,J7);case"textInput":return u=f.data,u===J7&&eC?null:u;default:return null}}function QK(u,f){if(Md)return u==="compositionend"||!Tw&&tC(u,f)?(u=W7(),Hg=kw=ic=null,Md=!1,u):null;switch(u){case"paste":return null;case"keypress":if(!(f.ctrlKey||f.altKey||f.metaKey)||f.ctrlKey&&f.altKey){if(f.char&&1=f)return{node:p,offset:f-u};u=v}e:{for(;p;){if(p.nextSibling){p=p.nextSibling;break e}p=p.parentNode}p=void 0}p=uC(p)}}function hC(u,f){return u&&f?u===f?!0:u&&u.nodeType===3?!1:f&&f.nodeType===3?hC(u,f.parentNode):"contains"in u?u.contains(f):u.compareDocumentPosition?!!(u.compareDocumentPosition(f)&16):!1:!1}function fC(u){u=u!=null&&u.ownerDocument!=null&&u.ownerDocument.defaultView!=null?u.ownerDocument.defaultView:window;for(var f=qg(u.document);f instanceof u.HTMLIFrameElement;){try{var p=typeof f.contentWindow.location.href=="string"}catch{p=!1}if(p)u=f.contentWindow;else break;f=qg(u.document)}return f}function Aw(u){var f=u&&u.nodeName&&u.nodeName.toLowerCase();return f&&(f==="input"&&(u.type==="text"||u.type==="search"||u.type==="tel"||u.type==="url"||u.type==="password")||f==="textarea"||u.contentEditable==="true")}var ZK=sl&&"documentMode"in document&&11>=document.documentMode,Rd=null,Mw=null,nm=null,Rw=!1;function mC(u,f,p){var v=p.window===p?p.document:p.nodeType===9?p:p.ownerDocument;Rw||Rd==null||Rd!==qg(v)||(v=Rd,"selectionStart"in v&&Aw(v)?v={start:v.selectionStart,end:v.selectionEnd}:(v=(v.ownerDocument&&v.ownerDocument.defaultView||window).getSelection(),v={anchorNode:v.anchorNode,anchorOffset:v.anchorOffset,focusNode:v.focusNode,focusOffset:v.focusOffset}),nm&&tm(nm,v)||(nm=v,v=zx(Mw,"onSelect"),0>=F,O-=F,lo=1<<32-Pt(f)+O|p<Jt?(bn=yt,yt=null):bn=yt.sibling;var Un=ke(pe,yt,be[Jt],Ae);if(Un===null){yt===null&&(yt=bn);break}u&&yt&&Un.alternate===null&&f(pe,yt),fe=C(Un,fe,Jt),Vn===null?Ct=Un:Vn.sibling=Un,Vn=Un,yt=bn}if(Jt===be.length)return p(pe,yt),On&&al(pe,Jt),Ct;if(yt===null){for(;JtJt?(bn=yt,yt=null):bn=yt.sibling;var Cc=ke(pe,yt,Un.value,Ae);if(Cc===null){yt===null&&(yt=bn);break}u&&yt&&Cc.alternate===null&&f(pe,yt),fe=C(Cc,fe,Jt),Vn===null?Ct=Cc:Vn.sibling=Cc,Vn=Cc,yt=bn}if(Un.done)return p(pe,yt),On&&al(pe,Jt),Ct;if(yt===null){for(;!Un.done;Jt++,Un=be.next())Un=Re(pe,Un.value,Ae),Un!==null&&(fe=C(Un,fe,Jt),Vn===null?Ct=Un:Vn.sibling=Un,Vn=Un);return On&&al(pe,Jt),Ct}for(yt=v(yt);!Un.done;Jt++,Un=be.next())Un=Ce(yt,pe,Jt,Un.value,Ae),Un!==null&&(u&&Un.alternate!==null&&yt.delete(Un.key===null?Jt:Un.key),fe=C(Un,fe,Jt),Vn===null?Ct=Un:Vn.sibling=Un,Vn=Un);return u&&yt.forEach(function(vJ){return f(pe,vJ)}),On&&al(pe,Jt),Ct}function rr(pe,fe,be,Ae){if(typeof be=="object"&&be!==null&&be.type===w&&be.key===null&&(be=be.props.children),typeof be=="object"&&be!==null){switch(be.$$typeof){case x:e:{for(var Ct=be.key;fe!==null;){if(fe.key===Ct){if(Ct=be.type,Ct===w){if(fe.tag===7){p(pe,fe.sibling),Ae=O(fe,be.props.children),Ae.return=pe,pe=Ae;break e}}else if(fe.elementType===Ct||typeof Ct=="object"&&Ct!==null&&Ct.$$typeof===D&&Tu(Ct)===fe.type){p(pe,fe.sibling),Ae=O(fe,be.props),lm(Ae,be),Ae.return=pe,pe=Ae;break e}p(pe,fe);break}else f(pe,fe);fe=fe.sibling}be.type===w?(Ae=ku(be.props.children,pe.mode,Ae,be.key),Ae.return=pe,pe=Ae):(Ae=Jg(be.type,be.key,be.props,null,pe.mode,Ae),lm(Ae,be),Ae.return=pe,pe=Ae)}return F(pe);case y:e:{for(Ct=be.key;fe!==null;){if(fe.key===Ct)if(fe.tag===4&&fe.stateNode.containerInfo===be.containerInfo&&fe.stateNode.implementation===be.implementation){p(pe,fe.sibling),Ae=O(fe,be.children||[]),Ae.return=pe,pe=Ae;break e}else{p(pe,fe);break}else f(pe,fe);fe=fe.sibling}Ae=Fw(be,pe.mode,Ae),Ae.return=pe,pe=Ae}return F(pe);case D:return be=Tu(be),rr(pe,fe,be,Ae)}if(V(be))return ut(pe,fe,be,Ae);if(W(be)){if(Ct=W(be),typeof Ct!="function")throw Error(r(150));return be=Ct.call(be),Dt(pe,fe,be,Ae)}if(typeof be.then=="function")return rr(pe,fe,ax(be),Ae);if(be.$$typeof===N)return rr(pe,fe,nx(pe,be),Ae);ox(pe,be)}return typeof be=="string"&&be!==""||typeof be=="number"||typeof be=="bigint"?(be=""+be,fe!==null&&fe.tag===6?(p(pe,fe.sibling),Ae=O(fe,be),Ae.return=pe,pe=Ae):(p(pe,fe),Ae=Bw(be,pe.mode,Ae),Ae.return=pe,pe=Ae),F(pe)):p(pe,fe)}return function(pe,fe,be,Ae){try{om=0;var Ct=rr(pe,fe,be,Ae);return Qd=null,Ct}catch(yt){if(yt===Hd||yt===sx)throw yt;var Vn=Di(29,yt,null,pe.mode);return Vn.lanes=Ae,Vn.return=pe,Vn}finally{}}}var _u=IC(!0),LC=IC(!1),uc=!1;function Zw(u){u.updateQueue={baseState:u.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Jw(u,f){u=u.updateQueue,f.updateQueue===u&&(f.updateQueue={baseState:u.baseState,firstBaseUpdate:u.firstBaseUpdate,lastBaseUpdate:u.lastBaseUpdate,shared:u.shared,callbacks:null})}function dc(u){return{lane:u,tag:0,payload:null,callback:null,next:null}}function hc(u,f,p){var v=u.updateQueue;if(v===null)return null;if(v=v.shared,(Gn&2)!==0){var O=v.pending;return O===null?f.next=f:(f.next=O.next,O.next=f),v.pending=f,f=Zg(u),wC(u,null,p),f}return Kg(u,v,f,p),Zg(u)}function cm(u,f,p){if(f=f.updateQueue,f!==null&&(f=f.shared,(p&4194048)!==0)){var v=f.lanes;v&=u.pendingLanes,p|=v,f.lanes=p,vs(u,p)}}function e2(u,f){var p=u.updateQueue,v=u.alternate;if(v!==null&&(v=v.updateQueue,p===v)){var O=null,C=null;if(p=p.firstBaseUpdate,p!==null){do{var F={lane:p.lane,tag:p.tag,payload:p.payload,callback:null,next:null};C===null?O=C=F:C=C.next=F,p=p.next}while(p!==null);C===null?O=C=f:C=C.next=f}else O=C=f;p={baseState:v.baseState,firstBaseUpdate:O,lastBaseUpdate:C,shared:v.shared,callbacks:v.callbacks},u.updateQueue=p;return}u=p.lastBaseUpdate,u===null?p.firstBaseUpdate=f:u.next=f,p.lastBaseUpdate=f}var t2=!1;function um(){if(t2){var u=$d;if(u!==null)throw u}}function dm(u,f,p,v){t2=!1;var O=u.updateQueue;uc=!1;var C=O.firstBaseUpdate,F=O.lastBaseUpdate,Z=O.shared.pending;if(Z!==null){O.shared.pending=null;var de=Z,Se=de.next;de.next=null,F===null?C=Se:F.next=Se,F=de;var Te=u.alternate;Te!==null&&(Te=Te.updateQueue,Z=Te.lastBaseUpdate,Z!==F&&(Z===null?Te.firstBaseUpdate=Se:Z.next=Se,Te.lastBaseUpdate=de))}if(C!==null){var Re=O.baseState;F=0,Te=Se=de=null,Z=C;do{var ke=Z.lane&-536870913,Ce=ke!==Z.lane;if(Ce?(yn&ke)===ke:(v&ke)===ke){ke!==0&&ke===qd&&(t2=!0),Te!==null&&(Te=Te.next={lane:0,tag:Z.tag,payload:Z.payload,callback:null,next:null});e:{var ut=u,Dt=Z;ke=f;var rr=p;switch(Dt.tag){case 1:if(ut=Dt.payload,typeof ut=="function"){Re=ut.call(rr,Re,ke);break e}Re=ut;break e;case 3:ut.flags=ut.flags&-65537|128;case 0:if(ut=Dt.payload,ke=typeof ut=="function"?ut.call(rr,Re,ke):ut,ke==null)break e;Re=m({},Re,ke);break e;case 2:uc=!0}}ke=Z.callback,ke!==null&&(u.flags|=64,Ce&&(u.flags|=8192),Ce=O.callbacks,Ce===null?O.callbacks=[ke]:Ce.push(ke))}else Ce={lane:ke,tag:Z.tag,payload:Z.payload,callback:Z.callback,next:null},Te===null?(Se=Te=Ce,de=Re):Te=Te.next=Ce,F|=ke;if(Z=Z.next,Z===null){if(Z=O.shared.pending,Z===null)break;Ce=Z,Z=Ce.next,Ce.next=null,O.lastBaseUpdate=Ce,O.shared.pending=null}}while(!0);Te===null&&(de=Re),O.baseState=de,O.firstBaseUpdate=Se,O.lastBaseUpdate=Te,C===null&&(O.shared.lanes=0),xc|=F,u.lanes=F,u.memoizedState=Re}}function BC(u,f){if(typeof u!="function")throw Error(r(191,u));u.call(f)}function FC(u,f){var p=u.callbacks;if(p!==null)for(u.callbacks=null,u=0;uC?C:8;var F=L.T,Z={};L.T=Z,b2(u,!1,f,p);try{var de=O(),Se=L.S;if(Se!==null&&Se(Z,de),de!==null&&typeof de=="object"&&typeof de.then=="function"){var Te=oZ(de,v);mm(u,f,Te,Bi(u))}else mm(u,f,v,Bi(u))}catch(Re){mm(u,f,{then:function(){},status:"rejected",reason:Re},Bi())}finally{$.p=C,F!==null&&Z.types!==null&&(F.types=Z.types),L.T=F}}function fZ(){}function v2(u,f,p,v){if(u.tag!==5)throw Error(r(476));var O=v8(u).queue;x8(u,O,f,K,p===null?fZ:function(){return y8(u),p(v)})}function v8(u){var f=u.memoizedState;if(f!==null)return f;f={memoizedState:K,baseState:K,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ul,lastRenderedState:K},next:null};var p={};return f.next={memoizedState:p,baseState:p,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ul,lastRenderedState:p},next:null},u.memoizedState=f,u=u.alternate,u!==null&&(u.memoizedState=f),f}function y8(u){var f=v8(u);f.next===null&&(f=u.alternate.memoizedState),mm(u,f.next.queue,{},Bi())}function y2(){return Ts(Am)}function b8(){return Vr().memoizedState}function w8(){return Vr().memoizedState}function mZ(u){for(var f=u.return;f!==null;){switch(f.tag){case 24:case 3:var p=Bi();u=dc(p);var v=hc(f,u,p);v!==null&&(mi(v,f,p),cm(v,f,p)),f={cache:Gw()},u.payload=f;return}f=f.return}}function pZ(u,f,p){var v=Bi();p={lane:v,revertLane:0,gesture:null,action:p,hasEagerState:!1,eagerState:null,next:null},xx(u)?k8(f,p):(p=Iw(u,f,p,v),p!==null&&(mi(p,u,v),O8(p,f,v)))}function S8(u,f,p){var v=Bi();mm(u,f,p,v)}function mm(u,f,p,v){var O={lane:v,revertLane:0,gesture:null,action:p,hasEagerState:!1,eagerState:null,next:null};if(xx(u))k8(f,O);else{var C=u.alternate;if(u.lanes===0&&(C===null||C.lanes===0)&&(C=f.lastRenderedReducer,C!==null))try{var F=f.lastRenderedState,Z=C(F,p);if(O.hasEagerState=!0,O.eagerState=Z,Ri(Z,F))return Kg(u,f,O,0),or===null&&Yg(),!1}catch{}finally{}if(p=Iw(u,f,O,v),p!==null)return mi(p,u,v),O8(p,f,v),!0}return!1}function b2(u,f,p,v){if(v={lane:2,revertLane:Z2(),gesture:null,action:v,hasEagerState:!1,eagerState:null,next:null},xx(u)){if(f)throw Error(r(479))}else f=Iw(u,p,v,2),f!==null&&mi(f,u,2)}function xx(u){var f=u.alternate;return u===Kt||f!==null&&f===Kt}function k8(u,f){Ud=ux=!0;var p=u.pending;p===null?f.next=f:(f.next=p.next,p.next=f),u.pending=f}function O8(u,f,p){if((p&4194048)!==0){var v=f.lanes;v&=u.pendingLanes,p|=v,f.lanes=p,vs(u,p)}}var pm={readContext:Ts,use:fx,useCallback:Br,useContext:Br,useEffect:Br,useImperativeHandle:Br,useLayoutEffect:Br,useInsertionEffect:Br,useMemo:Br,useReducer:Br,useRef:Br,useState:Br,useDebugValue:Br,useDeferredValue:Br,useTransition:Br,useSyncExternalStore:Br,useId:Br,useHostTransitionStatus:Br,useFormState:Br,useActionState:Br,useOptimistic:Br,useMemoCache:Br,useCacheRefresh:Br};pm.useEffectEvent=Br;var j8={readContext:Ts,use:fx,useCallback:function(u,f){return Ks().memoizedState=[u,f===void 0?null:f],u},useContext:Ts,useEffect:l8,useImperativeHandle:function(u,f,p){p=p!=null?p.concat([u]):null,px(4194308,4,h8.bind(null,f,u),p)},useLayoutEffect:function(u,f){return px(4194308,4,u,f)},useInsertionEffect:function(u,f){px(4,2,u,f)},useMemo:function(u,f){var p=Ks();f=f===void 0?null:f;var v=u();if(Au){dn(!0);try{u()}finally{dn(!1)}}return p.memoizedState=[v,f],v},useReducer:function(u,f,p){var v=Ks();if(p!==void 0){var O=p(f);if(Au){dn(!0);try{p(f)}finally{dn(!1)}}}else O=f;return v.memoizedState=v.baseState=O,u={pending:null,lanes:0,dispatch:null,lastRenderedReducer:u,lastRenderedState:O},v.queue=u,u=u.dispatch=pZ.bind(null,Kt,u),[v.memoizedState,u]},useRef:function(u){var f=Ks();return u={current:u},f.memoizedState=u},useState:function(u){u=f2(u);var f=u.queue,p=S8.bind(null,Kt,f);return f.dispatch=p,[u.memoizedState,p]},useDebugValue:g2,useDeferredValue:function(u,f){var p=Ks();return x2(p,u,f)},useTransition:function(){var u=f2(!1);return u=x8.bind(null,Kt,u.queue,!0,!1),Ks().memoizedState=u,[!1,u]},useSyncExternalStore:function(u,f,p){var v=Kt,O=Ks();if(On){if(p===void 0)throw Error(r(407));p=p()}else{if(p=f(),or===null)throw Error(r(349));(yn&127)!==0||UC(v,f,p)}O.memoizedState=p;var C={value:p,getSnapshot:f};return O.queue=C,l8(GC.bind(null,v,C,u),[u]),v.flags|=2048,Gd(9,{destroy:void 0},WC.bind(null,v,C,p,f),null),p},useId:function(){var u=Ks(),f=or.identifierPrefix;if(On){var p=co,v=lo;p=(v&~(1<<32-Pt(v)-1)).toString(32)+p,f="_"+f+"R_"+p,p=dx++,0<\/script>",C=C.removeChild(C.firstChild);break;case"select":C=typeof v.is=="string"?F.createElement("select",{is:v.is}):F.createElement("select"),v.multiple?C.multiple=!0:v.size&&(C.size=v.size);break;default:C=typeof v.is=="string"?F.createElement(O,{is:v.is}):F.createElement(O)}}C[Mr]=f,C[Rr]=v;e:for(F=f.child;F!==null;){if(F.tag===5||F.tag===6)C.appendChild(F.stateNode);else if(F.tag!==4&&F.tag!==27&&F.child!==null){F.child.return=F,F=F.child;continue}if(F===f)break e;for(;F.sibling===null;){if(F.return===null||F.return===f)break e;F=F.return}F.sibling.return=F.return,F=F.sibling}f.stateNode=C;e:switch(_s(C,O,v),O){case"button":case"input":case"select":case"textarea":v=!!v.autoFocus;break e;case"img":v=!0;break e;default:v=!1}v&&hl(f)}}return vr(f),D2(f,f.type,u===null?null:u.memoizedProps,f.pendingProps,p),null;case 6:if(u&&f.stateNode!=null)u.memoizedProps!==v&&hl(f);else{if(typeof v!="string"&&f.stateNode===null)throw Error(r(166));if(u=ne.current,Bd(f)){if(u=f.stateNode,p=f.memoizedProps,v=null,O=Cs,O!==null)switch(O.tag){case 27:case 5:v=O.memoizedProps}u[Mr]=f,u=!!(u.nodeValue===p||v!==null&&v.suppressHydrationWarning===!0||QT(u.nodeValue,p)),u||lc(f,!0)}else u=Ix(u).createTextNode(v),u[Mr]=f,f.stateNode=u}return vr(f),null;case 31:if(p=f.memoizedState,u===null||u.memoizedState!==null){if(v=Bd(f),p!==null){if(u===null){if(!v)throw Error(r(318));if(u=f.memoizedState,u=u!==null?u.dehydrated:null,!u)throw Error(r(557));u[Mr]=f}else Ou(),(f.flags&128)===0&&(f.memoizedState=null),f.flags|=4;vr(f),u=!1}else p=Qw(),u!==null&&u.memoizedState!==null&&(u.memoizedState.hydrationErrors=p),u=!0;if(!u)return f.flags&256?(zi(f),f):(zi(f),null);if((f.flags&128)!==0)throw Error(r(558))}return vr(f),null;case 13:if(v=f.memoizedState,u===null||u.memoizedState!==null&&u.memoizedState.dehydrated!==null){if(O=Bd(f),v!==null&&v.dehydrated!==null){if(u===null){if(!O)throw Error(r(318));if(O=f.memoizedState,O=O!==null?O.dehydrated:null,!O)throw Error(r(317));O[Mr]=f}else Ou(),(f.flags&128)===0&&(f.memoizedState=null),f.flags|=4;vr(f),O=!1}else O=Qw(),u!==null&&u.memoizedState!==null&&(u.memoizedState.hydrationErrors=O),O=!0;if(!O)return f.flags&256?(zi(f),f):(zi(f),null)}return zi(f),(f.flags&128)!==0?(f.lanes=p,f):(p=v!==null,u=u!==null&&u.memoizedState!==null,p&&(v=f.child,O=null,v.alternate!==null&&v.alternate.memoizedState!==null&&v.alternate.memoizedState.cachePool!==null&&(O=v.alternate.memoizedState.cachePool.pool),C=null,v.memoizedState!==null&&v.memoizedState.cachePool!==null&&(C=v.memoizedState.cachePool.pool),C!==O&&(v.flags|=2048)),p!==u&&p&&(f.child.flags|=8192),Sx(f,f.updateQueue),vr(f),null);case 4:return re(),u===null&&n4(f.stateNode.containerInfo),vr(f),null;case 10:return ll(f.type),vr(f),null;case 19:if(X(Qr),v=f.memoizedState,v===null)return vr(f),null;if(O=(f.flags&128)!==0,C=v.rendering,C===null)if(O)xm(v,!1);else{if(Fr!==0||u!==null&&(u.flags&128)!==0)for(u=f.child;u!==null;){if(C=cx(u),C!==null){for(f.flags|=128,xm(v,!1),u=C.updateQueue,f.updateQueue=u,Sx(f,u),f.subtreeFlags=0,u=p,p=f.child;p!==null;)SC(p,u),p=p.sibling;return z(Qr,Qr.current&1|2),On&&al(f,v.treeForkCount),f.child}u=u.sibling}v.tail!==null&&Mt()>Cx&&(f.flags|=128,O=!0,xm(v,!1),f.lanes=4194304)}else{if(!O)if(u=cx(C),u!==null){if(f.flags|=128,O=!0,u=u.updateQueue,f.updateQueue=u,Sx(f,u),xm(v,!0),v.tail===null&&v.tailMode==="hidden"&&!C.alternate&&!On)return vr(f),null}else 2*Mt()-v.renderingStartTime>Cx&&p!==536870912&&(f.flags|=128,O=!0,xm(v,!1),f.lanes=4194304);v.isBackwards?(C.sibling=f.child,f.child=C):(u=v.last,u!==null?u.sibling=C:f.child=C,v.last=C)}return v.tail!==null?(u=v.tail,v.rendering=u,v.tail=u.sibling,v.renderingStartTime=Mt(),u.sibling=null,p=Qr.current,z(Qr,O?p&1|2:p&1),On&&al(f,v.treeForkCount),u):(vr(f),null);case 22:case 23:return zi(f),r2(),v=f.memoizedState!==null,u!==null?u.memoizedState!==null!==v&&(f.flags|=8192):v&&(f.flags|=8192),v?(p&536870912)!==0&&(f.flags&128)===0&&(vr(f),f.subtreeFlags&6&&(f.flags|=8192)):vr(f),p=f.updateQueue,p!==null&&Sx(f,p.retryQueue),p=null,u!==null&&u.memoizedState!==null&&u.memoizedState.cachePool!==null&&(p=u.memoizedState.cachePool.pool),v=null,f.memoizedState!==null&&f.memoizedState.cachePool!==null&&(v=f.memoizedState.cachePool.pool),v!==p&&(f.flags|=2048),u!==null&&X(Cu),null;case 24:return p=null,u!==null&&(p=u.memoizedState.cache),f.memoizedState.cache!==p&&(f.flags|=2048),ll(Zr),vr(f),null;case 25:return null;case 30:return null}throw Error(r(156,f.tag))}function bZ(u,f){switch($w(f),f.tag){case 1:return u=f.flags,u&65536?(f.flags=u&-65537|128,f):null;case 3:return ll(Zr),re(),u=f.flags,(u&65536)!==0&&(u&128)===0?(f.flags=u&-65537|128,f):null;case 26:case 27:case 5:return _e(f),null;case 31:if(f.memoizedState!==null){if(zi(f),f.alternate===null)throw Error(r(340));Ou()}return u=f.flags,u&65536?(f.flags=u&-65537|128,f):null;case 13:if(zi(f),u=f.memoizedState,u!==null&&u.dehydrated!==null){if(f.alternate===null)throw Error(r(340));Ou()}return u=f.flags,u&65536?(f.flags=u&-65537|128,f):null;case 19:return X(Qr),null;case 4:return re(),null;case 10:return ll(f.type),null;case 22:case 23:return zi(f),r2(),u!==null&&X(Cu),u=f.flags,u&65536?(f.flags=u&-65537|128,f):null;case 24:return ll(Zr),null;case 25:return null;default:return null}}function X8(u,f){switch($w(f),f.tag){case 3:ll(Zr),re();break;case 26:case 27:case 5:_e(f);break;case 4:re();break;case 31:f.memoizedState!==null&&zi(f);break;case 13:zi(f);break;case 19:X(Qr);break;case 10:ll(f.type);break;case 22:case 23:zi(f),r2(),u!==null&&X(Cu);break;case 24:ll(Zr)}}function vm(u,f){try{var p=f.updateQueue,v=p!==null?p.lastEffect:null;if(v!==null){var O=v.next;p=O;do{if((p.tag&u)===u){v=void 0;var C=p.create,F=p.inst;v=C(),F.destroy=v}p=p.next}while(p!==O)}}catch(Z){Zn(f,f.return,Z)}}function pc(u,f,p){try{var v=f.updateQueue,O=v!==null?v.lastEffect:null;if(O!==null){var C=O.next;v=C;do{if((v.tag&u)===u){var F=v.inst,Z=F.destroy;if(Z!==void 0){F.destroy=void 0,O=f;var de=p,Se=Z;try{Se()}catch(Te){Zn(O,de,Te)}}}v=v.next}while(v!==C)}}catch(Te){Zn(f,f.return,Te)}}function Y8(u){var f=u.updateQueue;if(f!==null){var p=u.stateNode;try{FC(f,p)}catch(v){Zn(u,u.return,v)}}}function K8(u,f,p){p.props=Mu(u.type,u.memoizedProps),p.state=u.memoizedState;try{p.componentWillUnmount()}catch(v){Zn(u,f,v)}}function ym(u,f){try{var p=u.ref;if(p!==null){switch(u.tag){case 26:case 27:case 5:var v=u.stateNode;break;case 30:v=u.stateNode;break;default:v=u.stateNode}typeof p=="function"?u.refCleanup=p(v):p.current=v}}catch(O){Zn(u,f,O)}}function uo(u,f){var p=u.ref,v=u.refCleanup;if(p!==null)if(typeof v=="function")try{v()}catch(O){Zn(u,f,O)}finally{u.refCleanup=null,u=u.alternate,u!=null&&(u.refCleanup=null)}else if(typeof p=="function")try{p(null)}catch(O){Zn(u,f,O)}else p.current=null}function Z8(u){var f=u.type,p=u.memoizedProps,v=u.stateNode;try{e:switch(f){case"button":case"input":case"select":case"textarea":p.autoFocus&&v.focus();break e;case"img":p.src?v.src=p.src:p.srcSet&&(v.srcset=p.srcSet)}}catch(O){Zn(u,u.return,O)}}function P2(u,f,p){try{var v=u.stateNode;$Z(v,u.type,p,f),v[Rr]=f}catch(O){Zn(u,u.return,O)}}function J8(u){return u.tag===5||u.tag===3||u.tag===26||u.tag===27&&Sc(u.type)||u.tag===4}function z2(u){e:for(;;){for(;u.sibling===null;){if(u.return===null||J8(u.return))return null;u=u.return}for(u.sibling.return=u.return,u=u.sibling;u.tag!==5&&u.tag!==6&&u.tag!==18;){if(u.tag===27&&Sc(u.type)||u.flags&2||u.child===null||u.tag===4)continue e;u.child.return=u,u=u.child}if(!(u.flags&2))return u.stateNode}}function I2(u,f,p){var v=u.tag;if(v===5||v===6)u=u.stateNode,f?(p.nodeType===9?p.body:p.nodeName==="HTML"?p.ownerDocument.body:p).insertBefore(u,f):(f=p.nodeType===9?p.body:p.nodeName==="HTML"?p.ownerDocument.body:p,f.appendChild(u),p=p._reactRootContainer,p!=null||f.onclick!==null||(f.onclick=rl));else if(v!==4&&(v===27&&Sc(u.type)&&(p=u.stateNode,f=null),u=u.child,u!==null))for(I2(u,f,p),u=u.sibling;u!==null;)I2(u,f,p),u=u.sibling}function kx(u,f,p){var v=u.tag;if(v===5||v===6)u=u.stateNode,f?p.insertBefore(u,f):p.appendChild(u);else if(v!==4&&(v===27&&Sc(u.type)&&(p=u.stateNode),u=u.child,u!==null))for(kx(u,f,p),u=u.sibling;u!==null;)kx(u,f,p),u=u.sibling}function eT(u){var f=u.stateNode,p=u.memoizedProps;try{for(var v=u.type,O=f.attributes;O.length;)f.removeAttributeNode(O[0]);_s(f,v,p),f[Mr]=u,f[Rr]=p}catch(C){Zn(u,u.return,C)}}var fl=!1,ts=!1,L2=!1,tT=typeof WeakSet=="function"?WeakSet:Set,ys=null;function wZ(u,f){if(u=u.containerInfo,i4=Qx,u=fC(u),Aw(u)){if("selectionStart"in u)var p={start:u.selectionStart,end:u.selectionEnd};else e:{p=(p=u.ownerDocument)&&p.defaultView||window;var v=p.getSelection&&p.getSelection();if(v&&v.rangeCount!==0){p=v.anchorNode;var O=v.anchorOffset,C=v.focusNode;v=v.focusOffset;try{p.nodeType,C.nodeType}catch{p=null;break e}var F=0,Z=-1,de=-1,Se=0,Te=0,Re=u,ke=null;t:for(;;){for(var Ce;Re!==p||O!==0&&Re.nodeType!==3||(Z=F+O),Re!==C||v!==0&&Re.nodeType!==3||(de=F+v),Re.nodeType===3&&(F+=Re.nodeValue.length),(Ce=Re.firstChild)!==null;)ke=Re,Re=Ce;for(;;){if(Re===u)break t;if(ke===p&&++Se===O&&(Z=F),ke===C&&++Te===v&&(de=F),(Ce=Re.nextSibling)!==null)break;Re=ke,ke=Re.parentNode}Re=Ce}p=Z===-1||de===-1?null:{start:Z,end:de}}else p=null}p=p||{start:0,end:0}}else p=null;for(a4={focusedElem:u,selectionRange:p},Qx=!1,ys=f;ys!==null;)if(f=ys,u=f.child,(f.subtreeFlags&1028)!==0&&u!==null)u.return=f,ys=u;else for(;ys!==null;){switch(f=ys,C=f.alternate,u=f.flags,f.tag){case 0:if((u&4)!==0&&(u=f.updateQueue,u=u!==null?u.events:null,u!==null))for(p=0;p title"))),_s(C,v,p),C[Mr]=u,Kr(C),v=C;break e;case"link":var F=o9("link","href",O).get(v+(p.href||""));if(F){for(var Z=0;Zrr&&(F=rr,rr=Dt,Dt=F);var pe=dC(Z,Dt),fe=dC(Z,rr);if(pe&&fe&&(Ce.rangeCount!==1||Ce.anchorNode!==pe.node||Ce.anchorOffset!==pe.offset||Ce.focusNode!==fe.node||Ce.focusOffset!==fe.offset)){var be=Re.createRange();be.setStart(pe.node,pe.offset),Ce.removeAllRanges(),Dt>rr?(Ce.addRange(be),Ce.extend(fe.node,fe.offset)):(be.setEnd(fe.node,fe.offset),Ce.addRange(be))}}}}for(Re=[],Ce=Z;Ce=Ce.parentNode;)Ce.nodeType===1&&Re.push({element:Ce,left:Ce.scrollLeft,top:Ce.scrollTop});for(typeof Z.focus=="function"&&Z.focus(),Z=0;Zp?32:p,L.T=null,p=V2,V2=null;var C=yc,F=vl;if(ls=0,Jd=yc=null,vl=0,(Gn&6)!==0)throw Error(r(331));var Z=Gn;if(Gn|=4,hT(C.current),cT(C,C.current,F,p),Gn=Z,jm(0,!1),ot&&typeof ot.onPostCommitFiberRoot=="function")try{ot.onPostCommitFiberRoot(We,C)}catch{}return!0}finally{$.p=O,L.T=v,_T(u,f)}}function MT(u,f,p){f=oa(p,f),f=O2(u.stateNode,f,2),u=hc(u,f,2),u!==null&&(fr(u,2),ho(u))}function Zn(u,f,p){if(u.tag===3)MT(u,u,p);else for(;f!==null;){if(f.tag===3){MT(f,u,p);break}else if(f.tag===1){var v=f.stateNode;if(typeof f.type.getDerivedStateFromError=="function"||typeof v.componentDidCatch=="function"&&(vc===null||!vc.has(v))){u=oa(p,u),p=R8(2),v=hc(f,p,2),v!==null&&(D8(p,v,f,u),fr(v,2),ho(v));break}}f=f.return}}function X2(u,f,p){var v=u.pingCache;if(v===null){v=u.pingCache=new OZ;var O=new Set;v.set(f,O)}else O=v.get(f),O===void 0&&(O=new Set,v.set(f,O));O.has(p)||(q2=!0,O.add(p),u=EZ.bind(null,u,f,p),f.then(u,u))}function EZ(u,f,p){var v=u.pingCache;v!==null&&v.delete(f),u.pingedLanes|=u.suspendedLanes&p,u.warmLanes&=~p,or===u&&(yn&p)===p&&(Fr===4||Fr===3&&(yn&62914560)===yn&&300>Mt()-Nx?(Gn&2)===0&&eh(u,0):$2|=p,Zd===yn&&(Zd=0)),ho(u)}function RT(u,f){f===0&&(f=vn()),u=Su(u,f),u!==null&&(fr(u,f),ho(u))}function _Z(u){var f=u.memoizedState,p=0;f!==null&&(p=f.retryLane),RT(u,p)}function AZ(u,f){var p=0;switch(u.tag){case 31:case 13:var v=u.stateNode,O=u.memoizedState;O!==null&&(p=O.retryLane);break;case 19:v=u.stateNode;break;case 22:v=u.stateNode._retryCache;break;default:throw Error(r(314))}v!==null&&v.delete(f),RT(u,p)}function MZ(u,f){return vt(u,f)}var Rx=null,nh=null,Y2=!1,Dx=!1,K2=!1,wc=0;function ho(u){u!==nh&&u.next===null&&(nh===null?Rx=nh=u:nh=nh.next=u),Dx=!0,Y2||(Y2=!0,DZ())}function jm(u,f){if(!K2&&Dx){K2=!0;do for(var p=!1,v=Rx;v!==null;){if(u!==0){var O=v.pendingLanes;if(O===0)var C=0;else{var F=v.suspendedLanes,Z=v.pingedLanes;C=(1<<31-Pt(42|u)+1)-1,C&=O&~(F&~Z),C=C&201326741?C&201326741|1:C?C|2:0}C!==0&&(p=!0,IT(v,C))}else C=yn,C=ve(v,v===or?C:0,v.cancelPendingCommit!==null||v.timeoutHandle!==-1),(C&3)===0||He(v,C)||(p=!0,IT(v,C));v=v.next}while(p);K2=!1}}function RZ(){DT()}function DT(){Dx=Y2=!1;var u=0;wc!==0&&QZ()&&(u=wc);for(var f=Mt(),p=null,v=Rx;v!==null;){var O=v.next,C=PT(v,f);C===0?(v.next=null,p===null?Rx=O:p.next=O,O===null&&(nh=p)):(p=v,(u!==0||(C&3)!==0)&&(Dx=!0)),v=O}ls!==0&&ls!==5||jm(u),wc!==0&&(wc=0)}function PT(u,f){for(var p=u.suspendedLanes,v=u.pingedLanes,O=u.expirationTimes,C=u.pendingLanes&-62914561;0Z)break;var Te=de.transferSize,Re=de.initiatorType;Te&&VT(Re)&&(de=de.responseEnd,F+=Te*(de"u"?null:document;function r9(u,f,p){var v=rh;if(v&&typeof f=="string"&&f){var O=ia(f);O='link[rel="'+u+'"][href="'+O+'"]',typeof p=="string"&&(O+='[crossorigin="'+p+'"]'),n9.has(O)||(n9.add(O),u={rel:u,crossOrigin:p,href:f},v.querySelector(O)===null&&(f=v.createElement("link"),_s(f,"link",u),Kr(f),v.head.appendChild(f)))}}function JZ(u){yl.D(u),r9("dns-prefetch",u,null)}function eJ(u,f){yl.C(u,f),r9("preconnect",u,f)}function tJ(u,f,p){yl.L(u,f,p);var v=rh;if(v&&u&&f){var O='link[rel="preload"][as="'+ia(f)+'"]';f==="image"&&p&&p.imageSrcSet?(O+='[imagesrcset="'+ia(p.imageSrcSet)+'"]',typeof p.imageSizes=="string"&&(O+='[imagesizes="'+ia(p.imageSizes)+'"]')):O+='[href="'+ia(u)+'"]';var C=O;switch(f){case"style":C=sh(u);break;case"script":C=ih(u)}fa.has(C)||(u=m({rel:"preload",href:f==="image"&&p&&p.imageSrcSet?void 0:u,as:f},p),fa.set(C,u),v.querySelector(O)!==null||f==="style"&&v.querySelector(Em(C))||f==="script"&&v.querySelector(_m(C))||(f=v.createElement("link"),_s(f,"link",u),Kr(f),v.head.appendChild(f)))}}function nJ(u,f){yl.m(u,f);var p=rh;if(p&&u){var v=f&&typeof f.as=="string"?f.as:"script",O='link[rel="modulepreload"][as="'+ia(v)+'"][href="'+ia(u)+'"]',C=O;switch(v){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":C=ih(u)}if(!fa.has(C)&&(u=m({rel:"modulepreload",href:u},f),fa.set(C,u),p.querySelector(O)===null)){switch(v){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(p.querySelector(_m(C)))return}v=p.createElement("link"),_s(v,"link",u),Kr(v),p.head.appendChild(v)}}}function rJ(u,f,p){yl.S(u,f,p);var v=rh;if(v&&u){var O=sc(v).hoistableStyles,C=sh(u);f=f||"default";var F=O.get(C);if(!F){var Z={loading:0,preload:null};if(F=v.querySelector(Em(C)))Z.loading=5;else{u=m({rel:"stylesheet",href:u,"data-precedence":f},p),(p=fa.get(C))&&f4(u,p);var de=F=v.createElement("link");Kr(de),_s(de,"link",u),de._p=new Promise(function(Se,Te){de.onload=Se,de.onerror=Te}),de.addEventListener("load",function(){Z.loading|=1}),de.addEventListener("error",function(){Z.loading|=2}),Z.loading|=4,Bx(F,f,v)}F={type:"stylesheet",instance:F,count:1,state:Z},O.set(C,F)}}}function sJ(u,f){yl.X(u,f);var p=rh;if(p&&u){var v=sc(p).hoistableScripts,O=ih(u),C=v.get(O);C||(C=p.querySelector(_m(O)),C||(u=m({src:u,async:!0},f),(f=fa.get(O))&&m4(u,f),C=p.createElement("script"),Kr(C),_s(C,"link",u),p.head.appendChild(C)),C={type:"script",instance:C,count:1,state:null},v.set(O,C))}}function iJ(u,f){yl.M(u,f);var p=rh;if(p&&u){var v=sc(p).hoistableScripts,O=ih(u),C=v.get(O);C||(C=p.querySelector(_m(O)),C||(u=m({src:u,async:!0,type:"module"},f),(f=fa.get(O))&&m4(u,f),C=p.createElement("script"),Kr(C),_s(C,"link",u),p.head.appendChild(C)),C={type:"script",instance:C,count:1,state:null},v.set(O,C))}}function s9(u,f,p,v){var O=(O=ne.current)?Lx(O):null;if(!O)throw Error(r(446));switch(u){case"meta":case"title":return null;case"style":return typeof p.precedence=="string"&&typeof p.href=="string"?(f=sh(p.href),p=sc(O).hoistableStyles,v=p.get(f),v||(v={type:"style",instance:null,count:0,state:null},p.set(f,v)),v):{type:"void",instance:null,count:0,state:null};case"link":if(p.rel==="stylesheet"&&typeof p.href=="string"&&typeof p.precedence=="string"){u=sh(p.href);var C=sc(O).hoistableStyles,F=C.get(u);if(F||(O=O.ownerDocument||O,F={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},C.set(u,F),(C=O.querySelector(Em(u)))&&!C._p&&(F.instance=C,F.state.loading=5),fa.has(u)||(p={rel:"preload",as:"style",href:p.href,crossOrigin:p.crossOrigin,integrity:p.integrity,media:p.media,hrefLang:p.hrefLang,referrerPolicy:p.referrerPolicy},fa.set(u,p),C||aJ(O,u,p,F.state))),f&&v===null)throw Error(r(528,""));return F}if(f&&v!==null)throw Error(r(529,""));return null;case"script":return f=p.async,p=p.src,typeof p=="string"&&f&&typeof f!="function"&&typeof f!="symbol"?(f=ih(p),p=sc(O).hoistableScripts,v=p.get(f),v||(v={type:"script",instance:null,count:0,state:null},p.set(f,v)),v):{type:"void",instance:null,count:0,state:null};default:throw Error(r(444,u))}}function sh(u){return'href="'+ia(u)+'"'}function Em(u){return'link[rel="stylesheet"]['+u+"]"}function i9(u){return m({},u,{"data-precedence":u.precedence,precedence:null})}function aJ(u,f,p,v){u.querySelector('link[rel="preload"][as="style"]['+f+"]")?v.loading=1:(f=u.createElement("link"),v.preload=f,f.addEventListener("load",function(){return v.loading|=1}),f.addEventListener("error",function(){return v.loading|=2}),_s(f,"link",p),Kr(f),u.head.appendChild(f))}function ih(u){return'[src="'+ia(u)+'"]'}function _m(u){return"script[async]"+u}function a9(u,f,p){if(f.count++,f.instance===null)switch(f.type){case"style":var v=u.querySelector('style[data-href~="'+ia(p.href)+'"]');if(v)return f.instance=v,Kr(v),v;var O=m({},p,{"data-href":p.href,"data-precedence":p.precedence,href:null,precedence:null});return v=(u.ownerDocument||u).createElement("style"),Kr(v),_s(v,"style",O),Bx(v,p.precedence,u),f.instance=v;case"stylesheet":O=sh(p.href);var C=u.querySelector(Em(O));if(C)return f.state.loading|=4,f.instance=C,Kr(C),C;v=i9(p),(O=fa.get(O))&&f4(v,O),C=(u.ownerDocument||u).createElement("link"),Kr(C);var F=C;return F._p=new Promise(function(Z,de){F.onload=Z,F.onerror=de}),_s(C,"link",v),f.state.loading|=4,Bx(C,p.precedence,u),f.instance=C;case"script":return C=ih(p.src),(O=u.querySelector(_m(C)))?(f.instance=O,Kr(O),O):(v=p,(O=fa.get(C))&&(v=m({},p),m4(v,O)),u=u.ownerDocument||u,O=u.createElement("script"),Kr(O),_s(O,"link",v),u.head.appendChild(O),f.instance=O);case"void":return null;default:throw Error(r(443,f.type))}else f.type==="stylesheet"&&(f.state.loading&4)===0&&(v=f.instance,f.state.loading|=4,Bx(v,p.precedence,u));return f.instance}function Bx(u,f,p){for(var v=p.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),O=v.length?v[v.length-1]:null,C=O,F=0;F title"):null)}function oJ(u,f,p){if(p===1||f.itemProp!=null)return!1;switch(u){case"meta":case"title":return!0;case"style":if(typeof f.precedence!="string"||typeof f.href!="string"||f.href==="")break;return!0;case"link":if(typeof f.rel!="string"||typeof f.href!="string"||f.href===""||f.onLoad||f.onError)break;switch(f.rel){case"stylesheet":return u=f.disabled,typeof f.precedence=="string"&&u==null;default:return!0}case"script":if(f.async&&typeof f.async!="function"&&typeof f.async!="symbol"&&!f.onLoad&&!f.onError&&f.src&&typeof f.src=="string")return!0}return!1}function c9(u){return!(u.type==="stylesheet"&&(u.state.loading&3)===0)}function lJ(u,f,p,v){if(p.type==="stylesheet"&&(typeof v.media!="string"||matchMedia(v.media).matches!==!1)&&(p.state.loading&4)===0){if(p.instance===null){var O=sh(v.href),C=f.querySelector(Em(O));if(C){f=C._p,f!==null&&typeof f=="object"&&typeof f.then=="function"&&(u.count++,u=qx.bind(u),f.then(u,u)),p.state.loading|=4,p.instance=C,Kr(C);return}C=f.ownerDocument||f,v=i9(v),(O=fa.get(O))&&f4(v,O),C=C.createElement("link"),Kr(C);var F=C;F._p=new Promise(function(Z,de){F.onload=Z,F.onerror=de}),_s(C,"link",v),p.instance=C}u.stylesheets===null&&(u.stylesheets=new Map),u.stylesheets.set(p,f),(f=p.state.preload)&&(p.state.loading&3)===0&&(u.count++,p=qx.bind(u),f.addEventListener("load",p),f.addEventListener("error",p))}}var p4=0;function cJ(u,f){return u.stylesheets&&u.count===0&&Hx(u,u.stylesheets),0p4?50:800)+f);return u.unsuspend=p,function(){u.unsuspend=null,clearTimeout(v),clearTimeout(O)}}:null}function qx(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Hx(this,this.stylesheets);else if(this.unsuspend){var u=this.unsuspend;this.unsuspend=null,u()}}}var $x=null;function Hx(u,f){u.stylesheets=null,u.unsuspend!==null&&(u.count++,$x=new Map,f.forEach(uJ,u),$x=null,qx.call(u))}function uJ(u,f){if(!(f.state.loading&4)){var p=$x.get(u);if(p)var v=p.get(null);else{p=new Map,$x.set(u,p);for(var O=u.querySelectorAll("link[data-precedence],style[data-precedence]"),C=0;C"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(t)}catch(e){console.error(e)}}return t(),O4.exports=yte(),O4.exports}var wte=bte();function _I(t,e){return function(){return t.apply(e,arguments)}}const{toString:Ste}=Object.prototype,{getPrototypeOf:Bj}=Object,{iterator:Jy,toStringTag:AI}=Symbol,eb=(t=>e=>{const n=Ste.call(e);return t[n]||(t[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),no=t=>(t=t.toLowerCase(),e=>eb(e)===t),tb=t=>e=>typeof e===t,{isArray:yf}=Array,Xh=tb("undefined");function Bp(t){return t!==null&&!Xh(t)&&t.constructor!==null&&!Xh(t.constructor)&&ki(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const MI=no("ArrayBuffer");function kte(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&MI(t.buffer),e}const Ote=tb("string"),ki=tb("function"),RI=tb("number"),Fp=t=>t!==null&&typeof t=="object",jte=t=>t===!0||t===!1,iv=t=>{if(eb(t)!=="object")return!1;const e=Bj(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(AI in t)&&!(Jy in t)},Nte=t=>{if(!Fp(t)||Bp(t))return!1;try{return Object.keys(t).length===0&&Object.getPrototypeOf(t)===Object.prototype}catch{return!1}},Cte=no("Date"),Tte=no("File"),Ete=no("Blob"),_te=no("FileList"),Ate=t=>Fp(t)&&ki(t.pipe),Mte=t=>{let e;return t&&(typeof FormData=="function"&&t instanceof FormData||ki(t.append)&&((e=eb(t))==="formdata"||e==="object"&&ki(t.toString)&&t.toString()==="[object FormData]"))},Rte=no("URLSearchParams"),[Dte,Pte,zte,Ite]=["ReadableStream","Request","Response","Headers"].map(no),Lte=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function qp(t,e,{allOwnKeys:n=!1}={}){if(t===null||typeof t>"u")return;let r,s;if(typeof t!="object"&&(t=[t]),yf(t))for(r=0,s=t.length;r0;)if(s=n[r],e===s.toLowerCase())return s;return null}const Vu=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,PI=t=>!Xh(t)&&t!==Vu;function ck(){const{caseless:t,skipUndefined:e}=PI(this)&&this||{},n={},r=(s,i)=>{const a=t&&DI(n,i)||i;iv(n[a])&&iv(s)?n[a]=ck(n[a],s):iv(s)?n[a]=ck({},s):yf(s)?n[a]=s.slice():(!e||!Xh(s))&&(n[a]=s)};for(let s=0,i=arguments.length;s(qp(e,(s,i)=>{n&&ki(s)?t[i]=_I(s,n):t[i]=s},{allOwnKeys:r}),t),Fte=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),qte=(t,e,n,r)=>{t.prototype=Object.create(e.prototype,r),t.prototype.constructor=t,Object.defineProperty(t,"super",{value:e.prototype}),n&&Object.assign(t.prototype,n)},$te=(t,e,n,r)=>{let s,i,a;const l={};if(e=e||{},t==null)return e;do{for(s=Object.getOwnPropertyNames(t),i=s.length;i-- >0;)a=s[i],(!r||r(a,t,e))&&!l[a]&&(e[a]=t[a],l[a]=!0);t=n!==!1&&Bj(t)}while(t&&(!n||n(t,e))&&t!==Object.prototype);return e},Hte=(t,e,n)=>{t=String(t),(n===void 0||n>t.length)&&(n=t.length),n-=e.length;const r=t.indexOf(e,n);return r!==-1&&r===n},Qte=t=>{if(!t)return null;if(yf(t))return t;let e=t.length;if(!RI(e))return null;const n=new Array(e);for(;e-- >0;)n[e]=t[e];return n},Vte=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&Bj(Uint8Array)),Ute=(t,e)=>{const r=(t&&t[Jy]).call(t);let s;for(;(s=r.next())&&!s.done;){const i=s.value;e.call(t,i[0],i[1])}},Wte=(t,e)=>{let n;const r=[];for(;(n=t.exec(e))!==null;)r.push(n);return r},Gte=no("HTMLFormElement"),Xte=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,s){return r.toUpperCase()+s}),P9=(({hasOwnProperty:t})=>(e,n)=>t.call(e,n))(Object.prototype),Yte=no("RegExp"),zI=(t,e)=>{const n=Object.getOwnPropertyDescriptors(t),r={};qp(n,(s,i)=>{let a;(a=e(s,i,t))!==!1&&(r[i]=a||s)}),Object.defineProperties(t,r)},Kte=t=>{zI(t,(e,n)=>{if(ki(t)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=t[n];if(ki(r)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},Zte=(t,e)=>{const n={},r=s=>{s.forEach(i=>{n[i]=!0})};return yf(t)?r(t):r(String(t).split(e)),n},Jte=()=>{},ene=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e;function tne(t){return!!(t&&ki(t.append)&&t[AI]==="FormData"&&t[Jy])}const nne=t=>{const e=new Array(10),n=(r,s)=>{if(Fp(r)){if(e.indexOf(r)>=0)return;if(Bp(r))return r;if(!("toJSON"in r)){e[s]=r;const i=yf(r)?[]:{};return qp(r,(a,l)=>{const c=n(a,s+1);!Xh(c)&&(i[l]=c)}),e[s]=void 0,i}}return r};return n(t,0)},rne=no("AsyncFunction"),sne=t=>t&&(Fp(t)||ki(t))&&ki(t.then)&&ki(t.catch),II=((t,e)=>t?setImmediate:e?((n,r)=>(Vu.addEventListener("message",({source:s,data:i})=>{s===Vu&&i===n&&r.length&&r.shift()()},!1),s=>{r.push(s),Vu.postMessage(n,"*")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate=="function",ki(Vu.postMessage)),ine=typeof queueMicrotask<"u"?queueMicrotask.bind(Vu):typeof process<"u"&&process.nextTick||II,ane=t=>t!=null&&ki(t[Jy]),je={isArray:yf,isArrayBuffer:MI,isBuffer:Bp,isFormData:Mte,isArrayBufferView:kte,isString:Ote,isNumber:RI,isBoolean:jte,isObject:Fp,isPlainObject:iv,isEmptyObject:Nte,isReadableStream:Dte,isRequest:Pte,isResponse:zte,isHeaders:Ite,isUndefined:Xh,isDate:Cte,isFile:Tte,isBlob:Ete,isRegExp:Yte,isFunction:ki,isStream:Ate,isURLSearchParams:Rte,isTypedArray:Vte,isFileList:_te,forEach:qp,merge:ck,extend:Bte,trim:Lte,stripBOM:Fte,inherits:qte,toFlatObject:$te,kindOf:eb,kindOfTest:no,endsWith:Hte,toArray:Qte,forEachEntry:Ute,matchAll:Wte,isHTMLForm:Gte,hasOwnProperty:P9,hasOwnProp:P9,reduceDescriptors:zI,freezeMethods:Kte,toObjectSet:Zte,toCamelCase:Xte,noop:Jte,toFiniteNumber:ene,findKey:DI,global:Vu,isContextDefined:PI,isSpecCompliantForm:tne,toJSONObject:nne,isAsyncFn:rne,isThenable:sne,setImmediate:II,asap:ine,isIterable:ane};function Zt(t,e,n,r,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=t,this.name="AxiosError",e&&(this.code=e),n&&(this.config=n),r&&(this.request=r),s&&(this.response=s,this.status=s.status?s.status:null)}je.inherits(Zt,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:je.toJSONObject(this.config),code:this.code,status:this.status}}});const LI=Zt.prototype,BI={};["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(t=>{BI[t]={value:t}});Object.defineProperties(Zt,BI);Object.defineProperty(LI,"isAxiosError",{value:!0});Zt.from=(t,e,n,r,s,i)=>{const a=Object.create(LI);je.toFlatObject(t,a,function(h){return h!==Error.prototype},d=>d!=="isAxiosError");const l=t&&t.message?t.message:"Error",c=e==null&&t?t.code:e;return Zt.call(a,l,c,n,r,s),t&&a.cause==null&&Object.defineProperty(a,"cause",{value:t,configurable:!0}),a.name=t&&t.name||"Error",i&&Object.assign(a,i),a};const one=null;function uk(t){return je.isPlainObject(t)||je.isArray(t)}function FI(t){return je.endsWith(t,"[]")?t.slice(0,-2):t}function z9(t,e,n){return t?t.concat(e).map(function(s,i){return s=FI(s),!n&&i?"["+s+"]":s}).join(n?".":""):e}function lne(t){return je.isArray(t)&&!t.some(uk)}const cne=je.toFlatObject(je,{},null,function(e){return/^is[A-Z]/.test(e)});function nb(t,e,n){if(!je.isObject(t))throw new TypeError("target must be an object");e=e||new FormData,n=je.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(w,S){return!je.isUndefined(S[w])});const r=n.metaTokens,s=n.visitor||h,i=n.dots,a=n.indexes,c=(n.Blob||typeof Blob<"u"&&Blob)&&je.isSpecCompliantForm(e);if(!je.isFunction(s))throw new TypeError("visitor must be a function");function d(y){if(y===null)return"";if(je.isDate(y))return y.toISOString();if(je.isBoolean(y))return y.toString();if(!c&&je.isBlob(y))throw new Zt("Blob is not supported. Use a Buffer instead.");return je.isArrayBuffer(y)||je.isTypedArray(y)?c&&typeof Blob=="function"?new Blob([y]):Buffer.from(y):y}function h(y,w,S){let k=y;if(y&&!S&&typeof y=="object"){if(je.endsWith(w,"{}"))w=r?w:w.slice(0,-2),y=JSON.stringify(y);else if(je.isArray(y)&&lne(y)||(je.isFileList(y)||je.endsWith(w,"[]"))&&(k=je.toArray(y)))return w=FI(w),k.forEach(function(N,T){!(je.isUndefined(N)||N===null)&&e.append(a===!0?z9([w],T,i):a===null?w:w+"[]",d(N))}),!1}return uk(y)?!0:(e.append(z9(S,w,i),d(y)),!1)}const m=[],g=Object.assign(cne,{defaultVisitor:h,convertValue:d,isVisitable:uk});function x(y,w){if(!je.isUndefined(y)){if(m.indexOf(y)!==-1)throw Error("Circular reference detected in "+w.join("."));m.push(y),je.forEach(y,function(k,j){(!(je.isUndefined(k)||k===null)&&s.call(e,k,je.isString(j)?j.trim():j,w,g))===!0&&x(k,w?w.concat(j):[j])}),m.pop()}}if(!je.isObject(t))throw new TypeError("data must be an object");return x(t),e}function I9(t){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,function(r){return e[r]})}function Fj(t,e){this._pairs=[],t&&nb(t,this,e)}const qI=Fj.prototype;qI.append=function(e,n){this._pairs.push([e,n])};qI.toString=function(e){const n=e?function(r){return e.call(this,r,I9)}:I9;return this._pairs.map(function(s){return n(s[0])+"="+n(s[1])},"").join("&")};function une(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function $I(t,e,n){if(!e)return t;const r=n&&n.encode||une;je.isFunction(n)&&(n={serialize:n});const s=n&&n.serialize;let i;if(s?i=s(e,n):i=je.isURLSearchParams(e)?e.toString():new Fj(e,n).toString(r),i){const a=t.indexOf("#");a!==-1&&(t=t.slice(0,a)),t+=(t.indexOf("?")===-1?"?":"&")+i}return t}class L9{constructor(){this.handlers=[]}use(e,n,r){return this.handlers.push({fulfilled:e,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){je.forEach(this.handlers,function(r){r!==null&&e(r)})}}const HI={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},dne=typeof URLSearchParams<"u"?URLSearchParams:Fj,hne=typeof FormData<"u"?FormData:null,fne=typeof Blob<"u"?Blob:null,mne={isBrowser:!0,classes:{URLSearchParams:dne,FormData:hne,Blob:fne},protocols:["http","https","file","blob","url","data"]},qj=typeof window<"u"&&typeof document<"u",dk=typeof navigator=="object"&&navigator||void 0,pne=qj&&(!dk||["ReactNative","NativeScript","NS"].indexOf(dk.product)<0),gne=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",xne=qj&&window.location.href||"http://localhost",vne=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:qj,hasStandardBrowserEnv:pne,hasStandardBrowserWebWorkerEnv:gne,navigator:dk,origin:xne},Symbol.toStringTag,{value:"Module"})),$s={...vne,...mne};function yne(t,e){return nb(t,new $s.classes.URLSearchParams,{visitor:function(n,r,s,i){return $s.isNode&&je.isBuffer(n)?(this.append(r,n.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)},...e})}function bne(t){return je.matchAll(/\w+|\[(\w*)]/g,t).map(e=>e[0]==="[]"?"":e[1]||e[0])}function wne(t){const e={},n=Object.keys(t);let r;const s=n.length;let i;for(r=0;r=n.length;return a=!a&&je.isArray(s)?s.length:a,c?(je.hasOwnProp(s,a)?s[a]=[s[a],r]:s[a]=r,!l):((!s[a]||!je.isObject(s[a]))&&(s[a]=[]),e(n,r,s[a],i)&&je.isArray(s[a])&&(s[a]=wne(s[a])),!l)}if(je.isFormData(t)&&je.isFunction(t.entries)){const n={};return je.forEachEntry(t,(r,s)=>{e(bne(r),s,n,0)}),n}return null}function Sne(t,e,n){if(je.isString(t))try{return(e||JSON.parse)(t),je.trim(t)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(t)}const $p={transitional:HI,adapter:["xhr","http","fetch"],transformRequest:[function(e,n){const r=n.getContentType()||"",s=r.indexOf("application/json")>-1,i=je.isObject(e);if(i&&je.isHTMLForm(e)&&(e=new FormData(e)),je.isFormData(e))return s?JSON.stringify(QI(e)):e;if(je.isArrayBuffer(e)||je.isBuffer(e)||je.isStream(e)||je.isFile(e)||je.isBlob(e)||je.isReadableStream(e))return e;if(je.isArrayBufferView(e))return e.buffer;if(je.isURLSearchParams(e))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let l;if(i){if(r.indexOf("application/x-www-form-urlencoded")>-1)return yne(e,this.formSerializer).toString();if((l=je.isFileList(e))||r.indexOf("multipart/form-data")>-1){const c=this.env&&this.env.FormData;return nb(l?{"files[]":e}:e,c&&new c,this.formSerializer)}}return i||s?(n.setContentType("application/json",!1),Sne(e)):e}],transformResponse:[function(e){const n=this.transitional||$p.transitional,r=n&&n.forcedJSONParsing,s=this.responseType==="json";if(je.isResponse(e)||je.isReadableStream(e))return e;if(e&&je.isString(e)&&(r&&!this.responseType||s)){const a=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(e,this.parseReviver)}catch(l){if(a)throw l.name==="SyntaxError"?Zt.from(l,Zt.ERR_BAD_RESPONSE,this,null,this.response):l}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:$s.classes.FormData,Blob:$s.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};je.forEach(["delete","get","head","post","put","patch"],t=>{$p.headers[t]={}});const kne=je.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"]),One=t=>{const e={};let n,r,s;return t&&t.split(` -`).forEach(function(a){s=a.indexOf(":"),n=a.substring(0,s).trim().toLowerCase(),r=a.substring(s+1).trim(),!(!n||e[n]&&kne[n])&&(n==="set-cookie"?e[n]?e[n].push(r):e[n]=[r]:e[n]=e[n]?e[n]+", "+r:r)}),e},B9=Symbol("internals");function Im(t){return t&&String(t).trim().toLowerCase()}function av(t){return t===!1||t==null?t:je.isArray(t)?t.map(av):String(t)}function jne(t){const e=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(t);)e[r[1]]=r[2];return e}const Nne=t=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function C4(t,e,n,r,s){if(je.isFunction(r))return r.call(this,e,n);if(s&&(e=n),!!je.isString(e)){if(je.isString(r))return e.indexOf(r)!==-1;if(je.isRegExp(r))return r.test(e)}}function Cne(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,n,r)=>n.toUpperCase()+r)}function Tne(t,e){const n=je.toCamelCase(" "+e);["get","set","has"].forEach(r=>{Object.defineProperty(t,r+n,{value:function(s,i,a){return this[r].call(this,e,s,i,a)},configurable:!0})})}let Oi=class{constructor(e){e&&this.set(e)}set(e,n,r){const s=this;function i(l,c,d){const h=Im(c);if(!h)throw new Error("header name must be a non-empty string");const m=je.findKey(s,h);(!m||s[m]===void 0||d===!0||d===void 0&&s[m]!==!1)&&(s[m||c]=av(l))}const a=(l,c)=>je.forEach(l,(d,h)=>i(d,h,c));if(je.isPlainObject(e)||e instanceof this.constructor)a(e,n);else if(je.isString(e)&&(e=e.trim())&&!Nne(e))a(One(e),n);else if(je.isObject(e)&&je.isIterable(e)){let l={},c,d;for(const h of e){if(!je.isArray(h))throw TypeError("Object iterator must return a key-value pair");l[d=h[0]]=(c=l[d])?je.isArray(c)?[...c,h[1]]:[c,h[1]]:h[1]}a(l,n)}else e!=null&&i(n,e,r);return this}get(e,n){if(e=Im(e),e){const r=je.findKey(this,e);if(r){const s=this[r];if(!n)return s;if(n===!0)return jne(s);if(je.isFunction(n))return n.call(this,s,r);if(je.isRegExp(n))return n.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,n){if(e=Im(e),e){const r=je.findKey(this,e);return!!(r&&this[r]!==void 0&&(!n||C4(this,this[r],r,n)))}return!1}delete(e,n){const r=this;let s=!1;function i(a){if(a=Im(a),a){const l=je.findKey(r,a);l&&(!n||C4(r,r[l],l,n))&&(delete r[l],s=!0)}}return je.isArray(e)?e.forEach(i):i(e),s}clear(e){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const i=n[r];(!e||C4(this,this[i],i,e,!0))&&(delete this[i],s=!0)}return s}normalize(e){const n=this,r={};return je.forEach(this,(s,i)=>{const a=je.findKey(r,i);if(a){n[a]=av(s),delete n[i];return}const l=e?Cne(i):String(i).trim();l!==i&&delete n[i],n[l]=av(s),r[l]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const n=Object.create(null);return je.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=e&&je.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,n])=>e+": "+n).join(` -`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...n){const r=new this(e);return n.forEach(s=>r.set(s)),r}static accessor(e){const r=(this[B9]=this[B9]={accessors:{}}).accessors,s=this.prototype;function i(a){const l=Im(a);r[l]||(Tne(s,a),r[l]=!0)}return je.isArray(e)?e.forEach(i):i(e),this}};Oi.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);je.reduceDescriptors(Oi.prototype,({value:t},e)=>{let n=e[0].toUpperCase()+e.slice(1);return{get:()=>t,set(r){this[n]=r}}});je.freezeMethods(Oi);function T4(t,e){const n=this||$p,r=e||n,s=Oi.from(r.headers);let i=r.data;return je.forEach(t,function(l){i=l.call(n,i,s.normalize(),e?e.status:void 0)}),s.normalize(),i}function VI(t){return!!(t&&t.__CANCEL__)}function bf(t,e,n){Zt.call(this,t??"canceled",Zt.ERR_CANCELED,e,n),this.name="CanceledError"}je.inherits(bf,Zt,{__CANCEL__:!0});function UI(t,e,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?t(n):e(new Zt("Request failed with status code "+n.status,[Zt.ERR_BAD_REQUEST,Zt.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function Ene(t){const e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return e&&e[1]||""}function _ne(t,e){t=t||10;const n=new Array(t),r=new Array(t);let s=0,i=0,a;return e=e!==void 0?e:1e3,function(c){const d=Date.now(),h=r[i];a||(a=d),n[s]=c,r[s]=d;let m=i,g=0;for(;m!==s;)g+=n[m++],m=m%t;if(s=(s+1)%t,s===i&&(i=(i+1)%t),d-a{n=h,s=null,i&&(clearTimeout(i),i=null),t(...d)};return[(...d)=>{const h=Date.now(),m=h-n;m>=r?a(d,h):(s=d,i||(i=setTimeout(()=>{i=null,a(s)},r-m)))},()=>s&&a(s)]}const qv=(t,e,n=3)=>{let r=0;const s=_ne(50,250);return Ane(i=>{const a=i.loaded,l=i.lengthComputable?i.total:void 0,c=a-r,d=s(c),h=a<=l;r=a;const m={loaded:a,total:l,progress:l?a/l:void 0,bytes:c,rate:d||void 0,estimated:d&&l&&h?(l-a)/d:void 0,event:i,lengthComputable:l!=null,[e?"download":"upload"]:!0};t(m)},n)},F9=(t,e)=>{const n=t!=null;return[r=>e[0]({lengthComputable:n,total:t,loaded:r}),e[1]]},q9=t=>(...e)=>je.asap(()=>t(...e)),Mne=$s.hasStandardBrowserEnv?((t,e)=>n=>(n=new URL(n,$s.origin),t.protocol===n.protocol&&t.host===n.host&&(e||t.port===n.port)))(new URL($s.origin),$s.navigator&&/(msie|trident)/i.test($s.navigator.userAgent)):()=>!0,Rne=$s.hasStandardBrowserEnv?{write(t,e,n,r,s,i,a){if(typeof document>"u")return;const l=[`${t}=${encodeURIComponent(e)}`];je.isNumber(n)&&l.push(`expires=${new Date(n).toUTCString()}`),je.isString(r)&&l.push(`path=${r}`),je.isString(s)&&l.push(`domain=${s}`),i===!0&&l.push("secure"),je.isString(a)&&l.push(`SameSite=${a}`),document.cookie=l.join("; ")},read(t){if(typeof document>"u")return null;const e=document.cookie.match(new RegExp("(?:^|; )"+t+"=([^;]*)"));return e?decodeURIComponent(e[1]):null},remove(t){this.write(t,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function Dne(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}function Pne(t,e){return e?t.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):t}function WI(t,e,n){let r=!Dne(e);return t&&(r||n==!1)?Pne(t,e):e}const $9=t=>t instanceof Oi?{...t}:t;function ad(t,e){e=e||{};const n={};function r(d,h,m,g){return je.isPlainObject(d)&&je.isPlainObject(h)?je.merge.call({caseless:g},d,h):je.isPlainObject(h)?je.merge({},h):je.isArray(h)?h.slice():h}function s(d,h,m,g){if(je.isUndefined(h)){if(!je.isUndefined(d))return r(void 0,d,m,g)}else return r(d,h,m,g)}function i(d,h){if(!je.isUndefined(h))return r(void 0,h)}function a(d,h){if(je.isUndefined(h)){if(!je.isUndefined(d))return r(void 0,d)}else return r(void 0,h)}function l(d,h,m){if(m in e)return r(d,h);if(m in t)return r(void 0,d)}const c={url:i,method:i,data:i,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:l,headers:(d,h,m)=>s($9(d),$9(h),m,!0)};return je.forEach(Object.keys({...t,...e}),function(h){const m=c[h]||s,g=m(t[h],e[h],h);je.isUndefined(g)&&m!==l||(n[h]=g)}),n}const GI=t=>{const e=ad({},t);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:i,headers:a,auth:l}=e;if(e.headers=a=Oi.from(a),e.url=$I(WI(e.baseURL,e.url,e.allowAbsoluteUrls),t.params,t.paramsSerializer),l&&a.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):""))),je.isFormData(n)){if($s.hasStandardBrowserEnv||$s.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if(je.isFunction(n.getHeaders)){const c=n.getHeaders(),d=["content-type","content-length"];Object.entries(c).forEach(([h,m])=>{d.includes(h.toLowerCase())&&a.set(h,m)})}}if($s.hasStandardBrowserEnv&&(r&&je.isFunction(r)&&(r=r(e)),r||r!==!1&&Mne(e.url))){const c=s&&i&&Rne.read(i);c&&a.set(s,c)}return e},zne=typeof XMLHttpRequest<"u",Ine=zne&&function(t){return new Promise(function(n,r){const s=GI(t);let i=s.data;const a=Oi.from(s.headers).normalize();let{responseType:l,onUploadProgress:c,onDownloadProgress:d}=s,h,m,g,x,y;function w(){x&&x(),y&&y(),s.cancelToken&&s.cancelToken.unsubscribe(h),s.signal&&s.signal.removeEventListener("abort",h)}let S=new XMLHttpRequest;S.open(s.method.toUpperCase(),s.url,!0),S.timeout=s.timeout;function k(){if(!S)return;const N=Oi.from("getAllResponseHeaders"in S&&S.getAllResponseHeaders()),E={data:!l||l==="text"||l==="json"?S.responseText:S.response,status:S.status,statusText:S.statusText,headers:N,config:t,request:S};UI(function(A){n(A),w()},function(A){r(A),w()},E),S=null}"onloadend"in S?S.onloadend=k:S.onreadystatechange=function(){!S||S.readyState!==4||S.status===0&&!(S.responseURL&&S.responseURL.indexOf("file:")===0)||setTimeout(k)},S.onabort=function(){S&&(r(new Zt("Request aborted",Zt.ECONNABORTED,t,S)),S=null)},S.onerror=function(T){const E=T&&T.message?T.message:"Network Error",_=new Zt(E,Zt.ERR_NETWORK,t,S);_.event=T||null,r(_),S=null},S.ontimeout=function(){let T=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const E=s.transitional||HI;s.timeoutErrorMessage&&(T=s.timeoutErrorMessage),r(new Zt(T,E.clarifyTimeoutError?Zt.ETIMEDOUT:Zt.ECONNABORTED,t,S)),S=null},i===void 0&&a.setContentType(null),"setRequestHeader"in S&&je.forEach(a.toJSON(),function(T,E){S.setRequestHeader(E,T)}),je.isUndefined(s.withCredentials)||(S.withCredentials=!!s.withCredentials),l&&l!=="json"&&(S.responseType=s.responseType),d&&([g,y]=qv(d,!0),S.addEventListener("progress",g)),c&&S.upload&&([m,x]=qv(c),S.upload.addEventListener("progress",m),S.upload.addEventListener("loadend",x)),(s.cancelToken||s.signal)&&(h=N=>{S&&(r(!N||N.type?new bf(null,t,S):N),S.abort(),S=null)},s.cancelToken&&s.cancelToken.subscribe(h),s.signal&&(s.signal.aborted?h():s.signal.addEventListener("abort",h)));const j=Ene(s.url);if(j&&$s.protocols.indexOf(j)===-1){r(new Zt("Unsupported protocol "+j+":",Zt.ERR_BAD_REQUEST,t));return}S.send(i||null)})},Lne=(t,e)=>{const{length:n}=t=t?t.filter(Boolean):[];if(e||n){let r=new AbortController,s;const i=function(d){if(!s){s=!0,l();const h=d instanceof Error?d:this.reason;r.abort(h instanceof Zt?h:new bf(h instanceof Error?h.message:h))}};let a=e&&setTimeout(()=>{a=null,i(new Zt(`timeout ${e} of ms exceeded`,Zt.ETIMEDOUT))},e);const l=()=>{t&&(a&&clearTimeout(a),a=null,t.forEach(d=>{d.unsubscribe?d.unsubscribe(i):d.removeEventListener("abort",i)}),t=null)};t.forEach(d=>d.addEventListener("abort",i));const{signal:c}=r;return c.unsubscribe=()=>je.asap(l),c}},Bne=function*(t,e){let n=t.byteLength;if(n{const s=Fne(t,e);let i=0,a,l=c=>{a||(a=!0,r&&r(c))};return new ReadableStream({async pull(c){try{const{done:d,value:h}=await s.next();if(d){l(),c.close();return}let m=h.byteLength;if(n){let g=i+=m;n(g)}c.enqueue(new Uint8Array(h))}catch(d){throw l(d),d}},cancel(c){return l(c),s.return()}},{highWaterMark:2})},Q9=64*1024,{isFunction:e1}=je,$ne=(({Request:t,Response:e})=>({Request:t,Response:e}))(je.global),{ReadableStream:V9,TextEncoder:U9}=je.global,W9=(t,...e)=>{try{return!!t(...e)}catch{return!1}},Hne=t=>{t=je.merge.call({skipUndefined:!0},$ne,t);const{fetch:e,Request:n,Response:r}=t,s=e?e1(e):typeof fetch=="function",i=e1(n),a=e1(r);if(!s)return!1;const l=s&&e1(V9),c=s&&(typeof U9=="function"?(y=>w=>y.encode(w))(new U9):async y=>new Uint8Array(await new n(y).arrayBuffer())),d=i&&l&&W9(()=>{let y=!1;const w=new n($s.origin,{body:new V9,method:"POST",get duplex(){return y=!0,"half"}}).headers.has("Content-Type");return y&&!w}),h=a&&l&&W9(()=>je.isReadableStream(new r("").body)),m={stream:h&&(y=>y.body)};s&&["text","arrayBuffer","blob","formData","stream"].forEach(y=>{!m[y]&&(m[y]=(w,S)=>{let k=w&&w[y];if(k)return k.call(w);throw new Zt(`Response type '${y}' is not supported`,Zt.ERR_NOT_SUPPORT,S)})});const g=async y=>{if(y==null)return 0;if(je.isBlob(y))return y.size;if(je.isSpecCompliantForm(y))return(await new n($s.origin,{method:"POST",body:y}).arrayBuffer()).byteLength;if(je.isArrayBufferView(y)||je.isArrayBuffer(y))return y.byteLength;if(je.isURLSearchParams(y)&&(y=y+""),je.isString(y))return(await c(y)).byteLength},x=async(y,w)=>{const S=je.toFiniteNumber(y.getContentLength());return S??g(w)};return async y=>{let{url:w,method:S,data:k,signal:j,cancelToken:N,timeout:T,onDownloadProgress:E,onUploadProgress:_,responseType:A,headers:D,withCredentials:q="same-origin",fetchOptions:B}=GI(y),H=e||fetch;A=A?(A+"").toLowerCase():"text";let W=Lne([j,N&&N.toAbortSignal()],T),ee=null;const I=W&&W.unsubscribe&&(()=>{W.unsubscribe()});let V;try{if(_&&d&&S!=="get"&&S!=="head"&&(V=await x(D,k))!==0){let ie=new n(w,{method:"POST",body:k,duplex:"half"}),X;if(je.isFormData(k)&&(X=ie.headers.get("content-type"))&&D.setContentType(X),ie.body){const[z,U]=F9(V,qv(q9(_)));k=H9(ie.body,Q9,z,U)}}je.isString(q)||(q=q?"include":"omit");const L=i&&"credentials"in n.prototype,$={...B,signal:W,method:S.toUpperCase(),headers:D.normalize().toJSON(),body:k,duplex:"half",credentials:L?q:void 0};ee=i&&new n(w,$);let K=await(i?H(ee,B):H(w,$));const Y=h&&(A==="stream"||A==="response");if(h&&(E||Y&&I)){const ie={};["status","statusText","headers"].forEach(te=>{ie[te]=K[te]});const X=je.toFiniteNumber(K.headers.get("content-length")),[z,U]=E&&F9(X,qv(q9(E),!0))||[];K=new r(H9(K.body,Q9,z,()=>{U&&U(),I&&I()}),ie)}A=A||"text";let R=await m[je.findKey(m,A)||"text"](K,y);return!Y&&I&&I(),await new Promise((ie,X)=>{UI(ie,X,{data:R,headers:Oi.from(K.headers),status:K.status,statusText:K.statusText,config:y,request:ee})})}catch(L){throw I&&I(),L&&L.name==="TypeError"&&/Load failed|fetch/i.test(L.message)?Object.assign(new Zt("Network Error",Zt.ERR_NETWORK,y,ee),{cause:L.cause||L}):Zt.from(L,L&&L.code,y,ee)}}},Qne=new Map,XI=t=>{let e=t&&t.env||{};const{fetch:n,Request:r,Response:s}=e,i=[r,s,n];let a=i.length,l=a,c,d,h=Qne;for(;l--;)c=i[l],d=h.get(c),d===void 0&&h.set(c,d=l?new Map:Hne(e)),h=d;return d};XI();const $j={http:one,xhr:Ine,fetch:{get:XI}};je.forEach($j,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{value:e})}catch{}Object.defineProperty(t,"adapterName",{value:e})}});const G9=t=>`- ${t}`,Vne=t=>je.isFunction(t)||t===null||t===!1;function Une(t,e){t=je.isArray(t)?t:[t];const{length:n}=t;let r,s;const i={};for(let a=0;a`adapter ${c} `+(d===!1?"is not supported by the environment":"is not available in the build"));let l=n?a.length>1?`since : -`+a.map(G9).join(` -`):" "+G9(a[0]):"as no adapter specified";throw new Zt("There is no suitable adapter to dispatch the request "+l,"ERR_NOT_SUPPORT")}return s}const YI={getAdapter:Une,adapters:$j};function E4(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new bf(null,t)}function X9(t){return E4(t),t.headers=Oi.from(t.headers),t.data=T4.call(t,t.transformRequest),["post","put","patch"].indexOf(t.method)!==-1&&t.headers.setContentType("application/x-www-form-urlencoded",!1),YI.getAdapter(t.adapter||$p.adapter,t)(t).then(function(r){return E4(t),r.data=T4.call(t,t.transformResponse,r),r.headers=Oi.from(r.headers),r},function(r){return VI(r)||(E4(t),r&&r.response&&(r.response.data=T4.call(t,t.transformResponse,r.response),r.response.headers=Oi.from(r.response.headers))),Promise.reject(r)})}const KI="1.13.2",rb={};["object","boolean","number","function","string","symbol"].forEach((t,e)=>{rb[t]=function(r){return typeof r===t||"a"+(e<1?"n ":" ")+t}});const Y9={};rb.transitional=function(e,n,r){function s(i,a){return"[Axios v"+KI+"] Transitional option '"+i+"'"+a+(r?". "+r:"")}return(i,a,l)=>{if(e===!1)throw new Zt(s(a," has been removed"+(n?" in "+n:"")),Zt.ERR_DEPRECATED);return n&&!Y9[a]&&(Y9[a]=!0,console.warn(s(a," has been deprecated since v"+n+" and will be removed in the near future"))),e?e(i,a,l):!0}};rb.spelling=function(e){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${e}`),!0)};function Wne(t,e,n){if(typeof t!="object")throw new Zt("options must be an object",Zt.ERR_BAD_OPTION_VALUE);const r=Object.keys(t);let s=r.length;for(;s-- >0;){const i=r[s],a=e[i];if(a){const l=t[i],c=l===void 0||a(l,i,t);if(c!==!0)throw new Zt("option "+i+" must be "+c,Zt.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new Zt("Unknown option "+i,Zt.ERR_BAD_OPTION)}}const ov={assertOptions:Wne,validators:rb},fo=ov.validators;let nd=class{constructor(e){this.defaults=e||{},this.interceptors={request:new L9,response:new L9}}async request(e,n){try{return await this._request(e,n)}catch(r){if(r instanceof Error){let s={};Error.captureStackTrace?Error.captureStackTrace(s):s=new Error;const i=s.stack?s.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(e,n){typeof e=="string"?(n=n||{},n.url=e):n=e||{},n=ad(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:i}=n;r!==void 0&&ov.assertOptions(r,{silentJSONParsing:fo.transitional(fo.boolean),forcedJSONParsing:fo.transitional(fo.boolean),clarifyTimeoutError:fo.transitional(fo.boolean)},!1),s!=null&&(je.isFunction(s)?n.paramsSerializer={serialize:s}:ov.assertOptions(s,{encode:fo.function,serialize:fo.function},!0)),n.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?n.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:n.allowAbsoluteUrls=!0),ov.assertOptions(n,{baseUrl:fo.spelling("baseURL"),withXsrfToken:fo.spelling("withXSRFToken")},!0),n.method=(n.method||this.defaults.method||"get").toLowerCase();let a=i&&je.merge(i.common,i[n.method]);i&&je.forEach(["delete","get","head","post","put","patch","common"],y=>{delete i[y]}),n.headers=Oi.concat(a,i);const l=[];let c=!0;this.interceptors.request.forEach(function(w){typeof w.runWhen=="function"&&w.runWhen(n)===!1||(c=c&&w.synchronous,l.unshift(w.fulfilled,w.rejected))});const d=[];this.interceptors.response.forEach(function(w){d.push(w.fulfilled,w.rejected)});let h,m=0,g;if(!c){const y=[X9.bind(this),void 0];for(y.unshift(...l),y.push(...d),g=y.length,h=Promise.resolve(n);m{if(!r._listeners)return;let i=r._listeners.length;for(;i-- >0;)r._listeners[i](s);r._listeners=null}),this.promise.then=s=>{let i;const a=new Promise(l=>{r.subscribe(l),i=l}).then(s);return a.cancel=function(){r.unsubscribe(i)},a},e(function(i,a,l){r.reason||(r.reason=new bf(i,a,l),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const n=this._listeners.indexOf(e);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const e=new AbortController,n=r=>{e.abort(r)};return this.subscribe(n),e.signal.unsubscribe=()=>this.unsubscribe(n),e.signal}static source(){let e;return{token:new ZI(function(s){e=s}),cancel:e}}};function Xne(t){return function(n){return t.apply(null,n)}}function Yne(t){return je.isObject(t)&&t.isAxiosError===!0}const hk={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,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(hk).forEach(([t,e])=>{hk[e]=t});function JI(t){const e=new nd(t),n=_I(nd.prototype.request,e);return je.extend(n,nd.prototype,e,{allOwnKeys:!0}),je.extend(n,e,null,{allOwnKeys:!0}),n.create=function(s){return JI(ad(t,s))},n}const Cr=JI($p);Cr.Axios=nd;Cr.CanceledError=bf;Cr.CancelToken=Gne;Cr.isCancel=VI;Cr.VERSION=KI;Cr.toFormData=nb;Cr.AxiosError=Zt;Cr.Cancel=Cr.CanceledError;Cr.all=function(e){return Promise.all(e)};Cr.spread=Xne;Cr.isAxiosError=Yne;Cr.mergeConfig=ad;Cr.AxiosHeaders=Oi;Cr.formToJSON=t=>QI(je.isHTMLForm(t)?new FormData(t):t);Cr.getAdapter=YI.getAdapter;Cr.HttpStatusCode=hk;Cr.default=Cr;const{Axios:fPe,AxiosError:mPe,CanceledError:pPe,isCancel:gPe,CancelToken:xPe,VERSION:vPe,all:yPe,Cancel:bPe,isAxiosError:wPe,spread:SPe,toFormData:kPe,AxiosHeaders:OPe,HttpStatusCode:jPe,formToJSON:NPe,getAdapter:CPe,mergeConfig:TPe}=Cr,Kne=(t,e)=>{const n=new Array(t.length+e.length);for(let r=0;r({classGroupId:t,validator:e}),eL=(t=new Map,e=null,n)=>({nextPart:t,validators:e,classGroupId:n}),$v="-",K9=[],Jne="arbitrary..",ere=t=>{const e=nre(t),{conflictingClassGroups:n,conflictingClassGroupModifiers:r}=t;return{getClassGroupId:a=>{if(a.startsWith("[")&&a.endsWith("]"))return tre(a);const l=a.split($v),c=l[0]===""&&l.length>1?1:0;return tL(l,c,e)},getConflictingClassGroupIds:(a,l)=>{if(l){const c=r[a],d=n[a];return c?d?Kne(d,c):c:d||K9}return n[a]||K9}}},tL=(t,e,n)=>{if(t.length-e===0)return n.classGroupId;const s=t[e],i=n.nextPart.get(s);if(i){const d=tL(t,e+1,i);if(d)return d}const a=n.validators;if(a===null)return;const l=e===0?t.join($v):t.slice(e).join($v),c=a.length;for(let d=0;dt.slice(1,-1).indexOf(":")===-1?void 0:(()=>{const e=t.slice(1,-1),n=e.indexOf(":"),r=e.slice(0,n);return r?Jne+r:void 0})(),nre=t=>{const{theme:e,classGroups:n}=t;return rre(n,e)},rre=(t,e)=>{const n=eL();for(const r in t){const s=t[r];Hj(s,n,r,e)}return n},Hj=(t,e,n,r)=>{const s=t.length;for(let i=0;i{if(typeof t=="string"){ire(t,e,n);return}if(typeof t=="function"){are(t,e,n,r);return}ore(t,e,n,r)},ire=(t,e,n)=>{const r=t===""?e:nL(e,t);r.classGroupId=n},are=(t,e,n,r)=>{if(lre(t)){Hj(t(r),e,n,r);return}e.validators===null&&(e.validators=[]),e.validators.push(Zne(n,t))},ore=(t,e,n,r)=>{const s=Object.entries(t),i=s.length;for(let a=0;a{let n=t;const r=e.split($v),s=r.length;for(let i=0;i"isThemeGetter"in t&&t.isThemeGetter===!0,cre=t=>{if(t<1)return{get:()=>{},set:()=>{}};let e=0,n=Object.create(null),r=Object.create(null);const s=(i,a)=>{n[i]=a,e++,e>t&&(e=0,r=n,n=Object.create(null))};return{get(i){let a=n[i];if(a!==void 0)return a;if((a=r[i])!==void 0)return s(i,a),a},set(i,a){i in n?n[i]=a:s(i,a)}}},fk="!",Z9=":",ure=[],J9=(t,e,n,r,s)=>({modifiers:t,hasImportantModifier:e,baseClassName:n,maybePostfixModifierPosition:r,isExternal:s}),dre=t=>{const{prefix:e,experimentalParseClassName:n}=t;let r=s=>{const i=[];let a=0,l=0,c=0,d;const h=s.length;for(let w=0;wc?d-c:void 0;return J9(i,x,g,y)};if(e){const s=e+Z9,i=r;r=a=>a.startsWith(s)?i(a.slice(s.length)):J9(ure,!1,a,void 0,!0)}if(n){const s=r;r=i=>n({className:i,parseClassName:s})}return r},hre=t=>{const e=new Map;return t.orderSensitiveModifiers.forEach((n,r)=>{e.set(n,1e6+r)}),n=>{const r=[];let s=[];for(let i=0;i0&&(s.sort(),r.push(...s),s=[]),r.push(a)):s.push(a)}return s.length>0&&(s.sort(),r.push(...s)),r}},fre=t=>({cache:cre(t.cacheSize),parseClassName:dre(t),sortModifiers:hre(t),...ere(t)}),mre=/\s+/,pre=(t,e)=>{const{parseClassName:n,getClassGroupId:r,getConflictingClassGroupIds:s,sortModifiers:i}=e,a=[],l=t.trim().split(mre);let c="";for(let d=l.length-1;d>=0;d-=1){const h=l[d],{isExternal:m,modifiers:g,hasImportantModifier:x,baseClassName:y,maybePostfixModifierPosition:w}=n(h);if(m){c=h+(c.length>0?" "+c:c);continue}let S=!!w,k=r(S?y.substring(0,w):y);if(!k){if(!S){c=h+(c.length>0?" "+c:c);continue}if(k=r(y),!k){c=h+(c.length>0?" "+c:c);continue}S=!1}const j=g.length===0?"":g.length===1?g[0]:i(g).join(":"),N=x?j+fk:j,T=N+k;if(a.indexOf(T)>-1)continue;a.push(T);const E=s(k,S);for(let _=0;_0?" "+c:c)}return c},gre=(...t)=>{let e=0,n,r,s="";for(;e{if(typeof t=="string")return t;let e,n="";for(let r=0;r{let n,r,s,i;const a=c=>{const d=e.reduce((h,m)=>m(h),t());return n=fre(d),r=n.cache.get,s=n.cache.set,i=l,l(c)},l=c=>{const d=r(c);if(d)return d;const h=pre(c,n);return s(c,h),h};return i=a,(...c)=>i(gre(...c))},vre=[],cs=t=>{const e=n=>n[t]||vre;return e.isThemeGetter=!0,e},sL=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,iL=/^\((?:(\w[\w-]*):)?(.+)\)$/i,yre=/^\d+\/\d+$/,bre=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,wre=/\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$/,Sre=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,kre=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Ore=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,oh=t=>yre.test(t),sn=t=>!!t&&!Number.isNaN(Number(t)),Tc=t=>!!t&&Number.isInteger(Number(t)),_4=t=>t.endsWith("%")&&sn(t.slice(0,-1)),bl=t=>bre.test(t),jre=()=>!0,Nre=t=>wre.test(t)&&!Sre.test(t),aL=()=>!1,Cre=t=>kre.test(t),Tre=t=>Ore.test(t),Ere=t=>!ft(t)&&!mt(t),_re=t=>wf(t,cL,aL),ft=t=>sL.test(t),Pu=t=>wf(t,uL,Nre),A4=t=>wf(t,Pre,sn),eE=t=>wf(t,oL,aL),Are=t=>wf(t,lL,Tre),t1=t=>wf(t,dL,Cre),mt=t=>iL.test(t),Lm=t=>Sf(t,uL),Mre=t=>Sf(t,zre),tE=t=>Sf(t,oL),Rre=t=>Sf(t,cL),Dre=t=>Sf(t,lL),n1=t=>Sf(t,dL,!0),wf=(t,e,n)=>{const r=sL.exec(t);return r?r[1]?e(r[1]):n(r[2]):!1},Sf=(t,e,n=!1)=>{const r=iL.exec(t);return r?r[1]?e(r[1]):n:!1},oL=t=>t==="position"||t==="percentage",lL=t=>t==="image"||t==="url",cL=t=>t==="length"||t==="size"||t==="bg-size",uL=t=>t==="length",Pre=t=>t==="number",zre=t=>t==="family-name",dL=t=>t==="shadow",Ire=()=>{const t=cs("color"),e=cs("font"),n=cs("text"),r=cs("font-weight"),s=cs("tracking"),i=cs("leading"),a=cs("breakpoint"),l=cs("container"),c=cs("spacing"),d=cs("radius"),h=cs("shadow"),m=cs("inset-shadow"),g=cs("text-shadow"),x=cs("drop-shadow"),y=cs("blur"),w=cs("perspective"),S=cs("aspect"),k=cs("ease"),j=cs("animate"),N=()=>["auto","avoid","all","avoid-page","page","left","right","column"],T=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],E=()=>[...T(),mt,ft],_=()=>["auto","hidden","clip","visible","scroll"],A=()=>["auto","contain","none"],D=()=>[mt,ft,c],q=()=>[oh,"full","auto",...D()],B=()=>[Tc,"none","subgrid",mt,ft],H=()=>["auto",{span:["full",Tc,mt,ft]},Tc,mt,ft],W=()=>[Tc,"auto",mt,ft],ee=()=>["auto","min","max","fr",mt,ft],I=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],V=()=>["start","end","center","stretch","center-safe","end-safe"],L=()=>["auto",...D()],$=()=>[oh,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...D()],K=()=>[t,mt,ft],Y=()=>[...T(),tE,eE,{position:[mt,ft]}],R=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ie=()=>["auto","cover","contain",Rre,_re,{size:[mt,ft]}],X=()=>[_4,Lm,Pu],z=()=>["","none","full",d,mt,ft],U=()=>["",sn,Lm,Pu],te=()=>["solid","dashed","dotted","double"],ne=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],G=()=>[sn,_4,tE,eE],se=()=>["","none",y,mt,ft],re=()=>["none",sn,mt,ft],ae=()=>["none",sn,mt,ft],_e=()=>[sn,mt,ft],Be=()=>[oh,"full",...D()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[bl],breakpoint:[bl],color:[jre],container:[bl],"drop-shadow":[bl],ease:["in","out","in-out"],font:[Ere],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[bl],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[bl],shadow:[bl],spacing:["px",sn],text:[bl],"text-shadow":[bl],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",oh,ft,mt,S]}],container:["container"],columns:[{columns:[sn,ft,mt,l]}],"break-after":[{"break-after":N()}],"break-before":[{"break-before":N()}],"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:E()}],overflow:[{overflow:_()}],"overflow-x":[{"overflow-x":_()}],"overflow-y":[{"overflow-y":_()}],overscroll:[{overscroll:A()}],"overscroll-x":[{"overscroll-x":A()}],"overscroll-y":[{"overscroll-y":A()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:q()}],"inset-x":[{"inset-x":q()}],"inset-y":[{"inset-y":q()}],start:[{start:q()}],end:[{end:q()}],top:[{top:q()}],right:[{right:q()}],bottom:[{bottom:q()}],left:[{left:q()}],visibility:["visible","invisible","collapse"],z:[{z:[Tc,"auto",mt,ft]}],basis:[{basis:[oh,"full","auto",l,...D()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[sn,oh,"auto","initial","none",ft]}],grow:[{grow:["",sn,mt,ft]}],shrink:[{shrink:["",sn,mt,ft]}],order:[{order:[Tc,"first","last","none",mt,ft]}],"grid-cols":[{"grid-cols":B()}],"col-start-end":[{col:H()}],"col-start":[{"col-start":W()}],"col-end":[{"col-end":W()}],"grid-rows":[{"grid-rows":B()}],"row-start-end":[{row:H()}],"row-start":[{"row-start":W()}],"row-end":[{"row-end":W()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":ee()}],"auto-rows":[{"auto-rows":ee()}],gap:[{gap:D()}],"gap-x":[{"gap-x":D()}],"gap-y":[{"gap-y":D()}],"justify-content":[{justify:[...I(),"normal"]}],"justify-items":[{"justify-items":[...V(),"normal"]}],"justify-self":[{"justify-self":["auto",...V()]}],"align-content":[{content:["normal",...I()]}],"align-items":[{items:[...V(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...V(),{baseline:["","last"]}]}],"place-content":[{"place-content":I()}],"place-items":[{"place-items":[...V(),"baseline"]}],"place-self":[{"place-self":["auto",...V()]}],p:[{p:D()}],px:[{px:D()}],py:[{py:D()}],ps:[{ps:D()}],pe:[{pe:D()}],pt:[{pt:D()}],pr:[{pr:D()}],pb:[{pb:D()}],pl:[{pl:D()}],m:[{m:L()}],mx:[{mx:L()}],my:[{my:L()}],ms:[{ms:L()}],me:[{me:L()}],mt:[{mt:L()}],mr:[{mr:L()}],mb:[{mb:L()}],ml:[{ml:L()}],"space-x":[{"space-x":D()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":D()}],"space-y-reverse":["space-y-reverse"],size:[{size:$()}],w:[{w:[l,"screen",...$()]}],"min-w":[{"min-w":[l,"screen","none",...$()]}],"max-w":[{"max-w":[l,"screen","none","prose",{screen:[a]},...$()]}],h:[{h:["screen","lh",...$()]}],"min-h":[{"min-h":["screen","lh","none",...$()]}],"max-h":[{"max-h":["screen","lh",...$()]}],"font-size":[{text:["base",n,Lm,Pu]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[r,mt,A4]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",_4,ft]}],"font-family":[{font:[Mre,ft,e]}],"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:[s,mt,ft]}],"line-clamp":[{"line-clamp":[sn,"none",mt,A4]}],leading:[{leading:[i,...D()]}],"list-image":[{"list-image":["none",mt,ft]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",mt,ft]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:K()}],"text-color":[{text:K()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...te(),"wavy"]}],"text-decoration-thickness":[{decoration:[sn,"from-font","auto",mt,Pu]}],"text-decoration-color":[{decoration:K()}],"underline-offset":[{"underline-offset":[sn,"auto",mt,ft]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:D()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",mt,ft]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",mt,ft]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:Y()}],"bg-repeat":[{bg:R()}],"bg-size":[{bg:ie()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},Tc,mt,ft],radial:["",mt,ft],conic:[Tc,mt,ft]},Dre,Are]}],"bg-color":[{bg:K()}],"gradient-from-pos":[{from:X()}],"gradient-via-pos":[{via:X()}],"gradient-to-pos":[{to:X()}],"gradient-from":[{from:K()}],"gradient-via":[{via:K()}],"gradient-to":[{to:K()}],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:U()}],"border-w-x":[{"border-x":U()}],"border-w-y":[{"border-y":U()}],"border-w-s":[{"border-s":U()}],"border-w-e":[{"border-e":U()}],"border-w-t":[{"border-t":U()}],"border-w-r":[{"border-r":U()}],"border-w-b":[{"border-b":U()}],"border-w-l":[{"border-l":U()}],"divide-x":[{"divide-x":U()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":U()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...te(),"hidden","none"]}],"divide-style":[{divide:[...te(),"hidden","none"]}],"border-color":[{border:K()}],"border-color-x":[{"border-x":K()}],"border-color-y":[{"border-y":K()}],"border-color-s":[{"border-s":K()}],"border-color-e":[{"border-e":K()}],"border-color-t":[{"border-t":K()}],"border-color-r":[{"border-r":K()}],"border-color-b":[{"border-b":K()}],"border-color-l":[{"border-l":K()}],"divide-color":[{divide:K()}],"outline-style":[{outline:[...te(),"none","hidden"]}],"outline-offset":[{"outline-offset":[sn,mt,ft]}],"outline-w":[{outline:["",sn,Lm,Pu]}],"outline-color":[{outline:K()}],shadow:[{shadow:["","none",h,n1,t1]}],"shadow-color":[{shadow:K()}],"inset-shadow":[{"inset-shadow":["none",m,n1,t1]}],"inset-shadow-color":[{"inset-shadow":K()}],"ring-w":[{ring:U()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:K()}],"ring-offset-w":[{"ring-offset":[sn,Pu]}],"ring-offset-color":[{"ring-offset":K()}],"inset-ring-w":[{"inset-ring":U()}],"inset-ring-color":[{"inset-ring":K()}],"text-shadow":[{"text-shadow":["none",g,n1,t1]}],"text-shadow-color":[{"text-shadow":K()}],opacity:[{opacity:[sn,mt,ft]}],"mix-blend":[{"mix-blend":[...ne(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ne()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[sn]}],"mask-image-linear-from-pos":[{"mask-linear-from":G()}],"mask-image-linear-to-pos":[{"mask-linear-to":G()}],"mask-image-linear-from-color":[{"mask-linear-from":K()}],"mask-image-linear-to-color":[{"mask-linear-to":K()}],"mask-image-t-from-pos":[{"mask-t-from":G()}],"mask-image-t-to-pos":[{"mask-t-to":G()}],"mask-image-t-from-color":[{"mask-t-from":K()}],"mask-image-t-to-color":[{"mask-t-to":K()}],"mask-image-r-from-pos":[{"mask-r-from":G()}],"mask-image-r-to-pos":[{"mask-r-to":G()}],"mask-image-r-from-color":[{"mask-r-from":K()}],"mask-image-r-to-color":[{"mask-r-to":K()}],"mask-image-b-from-pos":[{"mask-b-from":G()}],"mask-image-b-to-pos":[{"mask-b-to":G()}],"mask-image-b-from-color":[{"mask-b-from":K()}],"mask-image-b-to-color":[{"mask-b-to":K()}],"mask-image-l-from-pos":[{"mask-l-from":G()}],"mask-image-l-to-pos":[{"mask-l-to":G()}],"mask-image-l-from-color":[{"mask-l-from":K()}],"mask-image-l-to-color":[{"mask-l-to":K()}],"mask-image-x-from-pos":[{"mask-x-from":G()}],"mask-image-x-to-pos":[{"mask-x-to":G()}],"mask-image-x-from-color":[{"mask-x-from":K()}],"mask-image-x-to-color":[{"mask-x-to":K()}],"mask-image-y-from-pos":[{"mask-y-from":G()}],"mask-image-y-to-pos":[{"mask-y-to":G()}],"mask-image-y-from-color":[{"mask-y-from":K()}],"mask-image-y-to-color":[{"mask-y-to":K()}],"mask-image-radial":[{"mask-radial":[mt,ft]}],"mask-image-radial-from-pos":[{"mask-radial-from":G()}],"mask-image-radial-to-pos":[{"mask-radial-to":G()}],"mask-image-radial-from-color":[{"mask-radial-from":K()}],"mask-image-radial-to-color":[{"mask-radial-to":K()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":T()}],"mask-image-conic-pos":[{"mask-conic":[sn]}],"mask-image-conic-from-pos":[{"mask-conic-from":G()}],"mask-image-conic-to-pos":[{"mask-conic-to":G()}],"mask-image-conic-from-color":[{"mask-conic-from":K()}],"mask-image-conic-to-color":[{"mask-conic-to":K()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:Y()}],"mask-repeat":[{mask:R()}],"mask-size":[{mask:ie()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",mt,ft]}],filter:[{filter:["","none",mt,ft]}],blur:[{blur:se()}],brightness:[{brightness:[sn,mt,ft]}],contrast:[{contrast:[sn,mt,ft]}],"drop-shadow":[{"drop-shadow":["","none",x,n1,t1]}],"drop-shadow-color":[{"drop-shadow":K()}],grayscale:[{grayscale:["",sn,mt,ft]}],"hue-rotate":[{"hue-rotate":[sn,mt,ft]}],invert:[{invert:["",sn,mt,ft]}],saturate:[{saturate:[sn,mt,ft]}],sepia:[{sepia:["",sn,mt,ft]}],"backdrop-filter":[{"backdrop-filter":["","none",mt,ft]}],"backdrop-blur":[{"backdrop-blur":se()}],"backdrop-brightness":[{"backdrop-brightness":[sn,mt,ft]}],"backdrop-contrast":[{"backdrop-contrast":[sn,mt,ft]}],"backdrop-grayscale":[{"backdrop-grayscale":["",sn,mt,ft]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[sn,mt,ft]}],"backdrop-invert":[{"backdrop-invert":["",sn,mt,ft]}],"backdrop-opacity":[{"backdrop-opacity":[sn,mt,ft]}],"backdrop-saturate":[{"backdrop-saturate":[sn,mt,ft]}],"backdrop-sepia":[{"backdrop-sepia":["",sn,mt,ft]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":D()}],"border-spacing-x":[{"border-spacing-x":D()}],"border-spacing-y":[{"border-spacing-y":D()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",mt,ft]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[sn,"initial",mt,ft]}],ease:[{ease:["linear","initial",k,mt,ft]}],delay:[{delay:[sn,mt,ft]}],animate:[{animate:["none",j,mt,ft]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[w,mt,ft]}],"perspective-origin":[{"perspective-origin":E()}],rotate:[{rotate:re()}],"rotate-x":[{"rotate-x":re()}],"rotate-y":[{"rotate-y":re()}],"rotate-z":[{"rotate-z":re()}],scale:[{scale:ae()}],"scale-x":[{"scale-x":ae()}],"scale-y":[{"scale-y":ae()}],"scale-z":[{"scale-z":ae()}],"scale-3d":["scale-3d"],skew:[{skew:_e()}],"skew-x":[{"skew-x":_e()}],"skew-y":[{"skew-y":_e()}],transform:[{transform:[mt,ft,"","none","gpu","cpu"]}],"transform-origin":[{origin:E()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Be()}],"translate-x":[{"translate-x":Be()}],"translate-y":[{"translate-y":Be()}],"translate-z":[{"translate-z":Be()}],"translate-none":["translate-none"],accent:[{accent:K()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:K()}],"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",mt,ft]}],"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":D()}],"scroll-mx":[{"scroll-mx":D()}],"scroll-my":[{"scroll-my":D()}],"scroll-ms":[{"scroll-ms":D()}],"scroll-me":[{"scroll-me":D()}],"scroll-mt":[{"scroll-mt":D()}],"scroll-mr":[{"scroll-mr":D()}],"scroll-mb":[{"scroll-mb":D()}],"scroll-ml":[{"scroll-ml":D()}],"scroll-p":[{"scroll-p":D()}],"scroll-px":[{"scroll-px":D()}],"scroll-py":[{"scroll-py":D()}],"scroll-ps":[{"scroll-ps":D()}],"scroll-pe":[{"scroll-pe":D()}],"scroll-pt":[{"scroll-pt":D()}],"scroll-pr":[{"scroll-pr":D()}],"scroll-pb":[{"scroll-pb":D()}],"scroll-pl":[{"scroll-pl":D()}],"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",mt,ft]}],fill:[{fill:["none",...K()]}],"stroke-w":[{stroke:[sn,Lm,Pu,A4]}],stroke:[{stroke:["none",...K()]}],"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-x","border-w-y","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-x","border-color-y","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:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},Lre=xre(Ire);function xe(...t){return Lre(Qz(t))}const Lt=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("rounded-xl border bg-card text-card-foreground shadow",t),...e}));Lt.displayName="Card";const En=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("flex flex-col space-y-1.5 p-6",t),...e}));En.displayName="CardHeader";const _n=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("font-semibold leading-none tracking-tight",t),...e}));_n.displayName="CardTitle";const Wr=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("text-sm text-muted-foreground",t),...e}));Wr.displayName="CardDescription";const Xn=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("p-6 pt-0",t),...e}));Xn.displayName="CardContent";const hL=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("flex items-center p-6 pt-0",t),...e}));hL.displayName="CardFooter";var M4="rovingFocusGroup.onEntryFocus",Bre={bubbles:!1,cancelable:!0},Hp="RovingFocusGroup",[mk,fL,Fre]=Qy(Hp),[qre,sb]=Da(Hp,[Fre]),[$re,Hre]=qre(Hp),mL=b.forwardRef((t,e)=>o.jsx(mk.Provider,{scope:t.__scopeRovingFocusGroup,children:o.jsx(mk.Slot,{scope:t.__scopeRovingFocusGroup,children:o.jsx(Qre,{...t,ref:e})})}));mL.displayName=Hp;var Qre=b.forwardRef((t,e)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:s=!1,dir:i,currentTabStopId:a,defaultCurrentTabStopId:l,onCurrentTabStopIdChange:c,onEntryFocus:d,preventScrollOnEntryFocus:h=!1,...m}=t,g=b.useRef(null),x=er(e,g),y=Rp(i),[w,S]=Kl({prop:a,defaultProp:l??null,onChange:c,caller:Hp}),[k,j]=b.useState(!1),N=Rs(d),T=fL(n),E=b.useRef(!1),[_,A]=b.useState(0);return b.useEffect(()=>{const D=g.current;if(D)return D.addEventListener(M4,N),()=>D.removeEventListener(M4,N)},[N]),o.jsx($re,{scope:n,orientation:r,dir:y,loop:s,currentTabStopId:w,onItemFocus:b.useCallback(D=>S(D),[S]),onItemShiftTab:b.useCallback(()=>j(!0),[]),onFocusableItemAdd:b.useCallback(()=>A(D=>D+1),[]),onFocusableItemRemove:b.useCallback(()=>A(D=>D-1),[]),children:o.jsx(Sn.div,{tabIndex:k||_===0?-1:0,"data-orientation":r,...m,ref:x,style:{outline:"none",...t.style},onMouseDown:nt(t.onMouseDown,()=>{E.current=!0}),onFocus:nt(t.onFocus,D=>{const q=!E.current;if(D.target===D.currentTarget&&q&&!k){const B=new CustomEvent(M4,Bre);if(D.currentTarget.dispatchEvent(B),!B.defaultPrevented){const H=T().filter(L=>L.focusable),W=H.find(L=>L.active),ee=H.find(L=>L.id===w),V=[W,ee,...H].filter(Boolean).map(L=>L.ref.current);xL(V,h)}}E.current=!1}),onBlur:nt(t.onBlur,()=>j(!1))})})}),pL="RovingFocusGroupItem",gL=b.forwardRef((t,e)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:s=!1,tabStopId:i,children:a,...l}=t,c=Gi(),d=i||c,h=Hre(pL,n),m=h.currentTabStopId===d,g=fL(n),{onFocusableItemAdd:x,onFocusableItemRemove:y,currentTabStopId:w}=h;return b.useEffect(()=>{if(r)return x(),()=>y()},[r,x,y]),o.jsx(mk.ItemSlot,{scope:n,id:d,focusable:r,active:s,children:o.jsx(Sn.span,{tabIndex:m?0:-1,"data-orientation":h.orientation,...l,ref:e,onMouseDown:nt(t.onMouseDown,S=>{r?h.onItemFocus(d):S.preventDefault()}),onFocus:nt(t.onFocus,()=>h.onItemFocus(d)),onKeyDown:nt(t.onKeyDown,S=>{if(S.key==="Tab"&&S.shiftKey){h.onItemShiftTab();return}if(S.target!==S.currentTarget)return;const k=Wre(S,h.orientation,h.dir);if(k!==void 0){if(S.metaKey||S.ctrlKey||S.altKey||S.shiftKey)return;S.preventDefault();let N=g().filter(T=>T.focusable).map(T=>T.ref.current);if(k==="last")N.reverse();else if(k==="prev"||k==="next"){k==="prev"&&N.reverse();const T=N.indexOf(S.currentTarget);N=h.loop?Gre(N,T+1):N.slice(T+1)}setTimeout(()=>xL(N))}}),children:typeof a=="function"?a({isCurrentTabStop:m,hasTabStop:w!=null}):a})})});gL.displayName=pL;var Vre={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function Ure(t,e){return e!=="rtl"?t:t==="ArrowLeft"?"ArrowRight":t==="ArrowRight"?"ArrowLeft":t}function Wre(t,e,n){const r=Ure(t.key,n);if(!(e==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(e==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return Vre[r]}function xL(t,e=!1){const n=document.activeElement;for(const r of t)if(r===n||(r.focus({preventScroll:e}),document.activeElement!==n))return}function Gre(t,e){return t.map((n,r)=>t[(e+r)%t.length])}var vL=mL,yL=gL,ib="Tabs",[Xre]=Da(ib,[sb]),bL=sb(),[Yre,Qj]=Xre(ib),wL=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,onValueChange:s,defaultValue:i,orientation:a="horizontal",dir:l,activationMode:c="automatic",...d}=t,h=Rp(l),[m,g]=Kl({prop:r,onChange:s,defaultProp:i??"",caller:ib});return o.jsx(Yre,{scope:n,baseId:Gi(),value:m,onValueChange:g,orientation:a,dir:h,activationMode:c,children:o.jsx(Sn.div,{dir:h,"data-orientation":a,...d,ref:e})})});wL.displayName=ib;var SL="TabsList",kL=b.forwardRef((t,e)=>{const{__scopeTabs:n,loop:r=!0,...s}=t,i=Qj(SL,n),a=bL(n);return o.jsx(vL,{asChild:!0,...a,orientation:i.orientation,dir:i.dir,loop:r,children:o.jsx(Sn.div,{role:"tablist","aria-orientation":i.orientation,...s,ref:e})})});kL.displayName=SL;var OL="TabsTrigger",jL=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,disabled:s=!1,...i}=t,a=Qj(OL,n),l=bL(n),c=TL(a.baseId,r),d=EL(a.baseId,r),h=r===a.value;return o.jsx(yL,{asChild:!0,...l,focusable:!s,active:h,children:o.jsx(Sn.button,{type:"button",role:"tab","aria-selected":h,"aria-controls":d,"data-state":h?"active":"inactive","data-disabled":s?"":void 0,disabled:s,id:c,...i,ref:e,onMouseDown:nt(t.onMouseDown,m=>{!s&&m.button===0&&m.ctrlKey===!1?a.onValueChange(r):m.preventDefault()}),onKeyDown:nt(t.onKeyDown,m=>{[" ","Enter"].includes(m.key)&&a.onValueChange(r)}),onFocus:nt(t.onFocus,()=>{const m=a.activationMode!=="manual";!h&&!s&&m&&a.onValueChange(r)})})})});jL.displayName=OL;var NL="TabsContent",CL=b.forwardRef((t,e)=>{const{__scopeTabs:n,value:r,forceMount:s,children:i,...a}=t,l=Qj(NL,n),c=TL(l.baseId,r),d=EL(l.baseId,r),h=r===l.value,m=b.useRef(h);return b.useEffect(()=>{const g=requestAnimationFrame(()=>m.current=!1);return()=>cancelAnimationFrame(g)},[]),o.jsx(oi,{present:s||h,children:({present:g})=>o.jsx(Sn.div,{"data-state":h?"active":"inactive","data-orientation":l.orientation,role:"tabpanel","aria-labelledby":c,hidden:!g,id:d,tabIndex:0,...a,ref:e,style:{...t.style,animationDuration:m.current?"0s":void 0},children:g&&i})})});CL.displayName=NL;function TL(t,e){return`${t}-trigger-${e}`}function EL(t,e){return`${t}-content-${e}`}var Kre=wL,_L=kL,AL=jL,ML=CL;const Yi=Kre,ji=b.forwardRef(({className:t,...e},n)=>o.jsx(_L,{ref:n,className:xe("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",t),...e}));ji.displayName=_L.displayName;const Bt=b.forwardRef(({className:t,...e},n)=>o.jsx(AL,{ref:n,className:xe("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all duration-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",t),...e}));Bt.displayName=AL.displayName;const ln=b.forwardRef(({className:t,...e},n)=>o.jsx(ML,{ref:n,className:xe("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[state=active]:animate-in data-[state=active]:fade-in data-[state=active]:duration-300",t),...e}));ln.displayName=ML.displayName;function Zre(t,e){return b.useReducer((n,r)=>e[n][r]??n,t)}var Vj="ScrollArea",[RL]=Da(Vj),[Jre,Pa]=RL(Vj),DL=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,type:r="hover",dir:s,scrollHideDelay:i=600,...a}=t,[l,c]=b.useState(null),[d,h]=b.useState(null),[m,g]=b.useState(null),[x,y]=b.useState(null),[w,S]=b.useState(null),[k,j]=b.useState(0),[N,T]=b.useState(0),[E,_]=b.useState(!1),[A,D]=b.useState(!1),q=er(e,H=>c(H)),B=Rp(s);return o.jsx(Jre,{scope:n,type:r,dir:B,scrollHideDelay:i,scrollArea:l,viewport:d,onViewportChange:h,content:m,onContentChange:g,scrollbarX:x,onScrollbarXChange:y,scrollbarXEnabled:E,onScrollbarXEnabledChange:_,scrollbarY:w,onScrollbarYChange:S,scrollbarYEnabled:A,onScrollbarYEnabledChange:D,onCornerWidthChange:j,onCornerHeightChange:T,children:o.jsx(Sn.div,{dir:B,...a,ref:q,style:{position:"relative","--radix-scroll-area-corner-width":k+"px","--radix-scroll-area-corner-height":N+"px",...t.style}})})});DL.displayName=Vj;var PL="ScrollAreaViewport",zL=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,children:r,nonce:s,...i}=t,a=Pa(PL,n),l=b.useRef(null),c=er(e,l,a.onViewportChange);return o.jsxs(o.Fragment,{children:[o.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:s}),o.jsx(Sn.div,{"data-radix-scroll-area-viewport":"",...i,ref:c,style:{overflowX:a.scrollbarXEnabled?"scroll":"hidden",overflowY:a.scrollbarYEnabled?"scroll":"hidden",...t.style},children:o.jsx("div",{ref:a.onContentChange,style:{minWidth:"100%",display:"table"},children:r})})]})});zL.displayName=PL;var Ho="ScrollAreaScrollbar",Uj=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=Pa(Ho,t.__scopeScrollArea),{onScrollbarXEnabledChange:i,onScrollbarYEnabledChange:a}=s,l=t.orientation==="horizontal";return b.useEffect(()=>(l?i(!0):a(!0),()=>{l?i(!1):a(!1)}),[l,i,a]),s.type==="hover"?o.jsx(ese,{...r,ref:e,forceMount:n}):s.type==="scroll"?o.jsx(tse,{...r,ref:e,forceMount:n}):s.type==="auto"?o.jsx(IL,{...r,ref:e,forceMount:n}):s.type==="always"?o.jsx(Wj,{...r,ref:e}):null});Uj.displayName=Ho;var ese=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=Pa(Ho,t.__scopeScrollArea),[i,a]=b.useState(!1);return b.useEffect(()=>{const l=s.scrollArea;let c=0;if(l){const d=()=>{window.clearTimeout(c),a(!0)},h=()=>{c=window.setTimeout(()=>a(!1),s.scrollHideDelay)};return l.addEventListener("pointerenter",d),l.addEventListener("pointerleave",h),()=>{window.clearTimeout(c),l.removeEventListener("pointerenter",d),l.removeEventListener("pointerleave",h)}}},[s.scrollArea,s.scrollHideDelay]),o.jsx(oi,{present:n||i,children:o.jsx(IL,{"data-state":i?"visible":"hidden",...r,ref:e})})}),tse=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=Pa(Ho,t.__scopeScrollArea),i=t.orientation==="horizontal",a=ob(()=>c("SCROLL_END"),100),[l,c]=Zre("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return b.useEffect(()=>{if(l==="idle"){const d=window.setTimeout(()=>c("HIDE"),s.scrollHideDelay);return()=>window.clearTimeout(d)}},[l,s.scrollHideDelay,c]),b.useEffect(()=>{const d=s.viewport,h=i?"scrollLeft":"scrollTop";if(d){let m=d[h];const g=()=>{const x=d[h];m!==x&&(c("SCROLL"),a()),m=x};return d.addEventListener("scroll",g),()=>d.removeEventListener("scroll",g)}},[s.viewport,i,c,a]),o.jsx(oi,{present:n||l!=="hidden",children:o.jsx(Wj,{"data-state":l==="hidden"?"hidden":"visible",...r,ref:e,onPointerEnter:nt(t.onPointerEnter,()=>c("POINTER_ENTER")),onPointerLeave:nt(t.onPointerLeave,()=>c("POINTER_LEAVE"))})})}),IL=b.forwardRef((t,e)=>{const n=Pa(Ho,t.__scopeScrollArea),{forceMount:r,...s}=t,[i,a]=b.useState(!1),l=t.orientation==="horizontal",c=ob(()=>{if(n.viewport){const d=n.viewport.offsetWidth{const{orientation:n="vertical",...r}=t,s=Pa(Ho,t.__scopeScrollArea),i=b.useRef(null),a=b.useRef(0),[l,c]=b.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),d=$L(l.viewport,l.content),h={...r,sizes:l,onSizesChange:c,hasThumb:d>0&&d<1,onThumbChange:g=>i.current=g,onThumbPointerUp:()=>a.current=0,onThumbPointerDown:g=>a.current=g};function m(g,x){return ose(g,a.current,l,x)}return n==="horizontal"?o.jsx(nse,{...h,ref:e,onThumbPositionChange:()=>{if(s.viewport&&i.current){const g=s.viewport.scrollLeft,x=nE(g,l,s.dir);i.current.style.transform=`translate3d(${x}px, 0, 0)`}},onWheelScroll:g=>{s.viewport&&(s.viewport.scrollLeft=g)},onDragScroll:g=>{s.viewport&&(s.viewport.scrollLeft=m(g,s.dir))}}):n==="vertical"?o.jsx(rse,{...h,ref:e,onThumbPositionChange:()=>{if(s.viewport&&i.current){const g=s.viewport.scrollTop,x=nE(g,l);i.current.style.transform=`translate3d(0, ${x}px, 0)`}},onWheelScroll:g=>{s.viewport&&(s.viewport.scrollTop=g)},onDragScroll:g=>{s.viewport&&(s.viewport.scrollTop=m(g))}}):null}),nse=b.forwardRef((t,e)=>{const{sizes:n,onSizesChange:r,...s}=t,i=Pa(Ho,t.__scopeScrollArea),[a,l]=b.useState(),c=b.useRef(null),d=er(e,c,i.onScrollbarXChange);return b.useEffect(()=>{c.current&&l(getComputedStyle(c.current))},[c]),o.jsx(BL,{"data-orientation":"horizontal",...s,ref:d,sizes:n,style:{bottom:0,left:i.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:i.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":ab(n)+"px",...t.style},onThumbPointerDown:h=>t.onThumbPointerDown(h.x),onDragScroll:h=>t.onDragScroll(h.x),onWheelScroll:(h,m)=>{if(i.viewport){const g=i.viewport.scrollLeft+h.deltaX;t.onWheelScroll(g),QL(g,m)&&h.preventDefault()}},onResize:()=>{c.current&&i.viewport&&a&&r({content:i.viewport.scrollWidth,viewport:i.viewport.offsetWidth,scrollbar:{size:c.current.clientWidth,paddingStart:Qv(a.paddingLeft),paddingEnd:Qv(a.paddingRight)}})}})}),rse=b.forwardRef((t,e)=>{const{sizes:n,onSizesChange:r,...s}=t,i=Pa(Ho,t.__scopeScrollArea),[a,l]=b.useState(),c=b.useRef(null),d=er(e,c,i.onScrollbarYChange);return b.useEffect(()=>{c.current&&l(getComputedStyle(c.current))},[c]),o.jsx(BL,{"data-orientation":"vertical",...s,ref:d,sizes:n,style:{top:0,right:i.dir==="ltr"?0:void 0,left:i.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":ab(n)+"px",...t.style},onThumbPointerDown:h=>t.onThumbPointerDown(h.y),onDragScroll:h=>t.onDragScroll(h.y),onWheelScroll:(h,m)=>{if(i.viewport){const g=i.viewport.scrollTop+h.deltaY;t.onWheelScroll(g),QL(g,m)&&h.preventDefault()}},onResize:()=>{c.current&&i.viewport&&a&&r({content:i.viewport.scrollHeight,viewport:i.viewport.offsetHeight,scrollbar:{size:c.current.clientHeight,paddingStart:Qv(a.paddingTop),paddingEnd:Qv(a.paddingBottom)}})}})}),[sse,LL]=RL(Ho),BL=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,sizes:r,hasThumb:s,onThumbChange:i,onThumbPointerUp:a,onThumbPointerDown:l,onThumbPositionChange:c,onDragScroll:d,onWheelScroll:h,onResize:m,...g}=t,x=Pa(Ho,n),[y,w]=b.useState(null),S=er(e,q=>w(q)),k=b.useRef(null),j=b.useRef(""),N=x.viewport,T=r.content-r.viewport,E=Rs(h),_=Rs(c),A=ob(m,10);function D(q){if(k.current){const B=q.clientX-k.current.left,H=q.clientY-k.current.top;d({x:B,y:H})}}return b.useEffect(()=>{const q=B=>{const H=B.target;y?.contains(H)&&E(B,T)};return document.addEventListener("wheel",q,{passive:!1}),()=>document.removeEventListener("wheel",q,{passive:!1})},[N,y,T,E]),b.useEffect(_,[r,_]),Yh(y,A),Yh(x.content,A),o.jsx(sse,{scope:n,scrollbar:y,hasThumb:s,onThumbChange:Rs(i),onThumbPointerUp:Rs(a),onThumbPositionChange:_,onThumbPointerDown:Rs(l),children:o.jsx(Sn.div,{...g,ref:S,style:{position:"absolute",...g.style},onPointerDown:nt(t.onPointerDown,q=>{q.button===0&&(q.target.setPointerCapture(q.pointerId),k.current=y.getBoundingClientRect(),j.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",x.viewport&&(x.viewport.style.scrollBehavior="auto"),D(q))}),onPointerMove:nt(t.onPointerMove,D),onPointerUp:nt(t.onPointerUp,q=>{const B=q.target;B.hasPointerCapture(q.pointerId)&&B.releasePointerCapture(q.pointerId),document.body.style.webkitUserSelect=j.current,x.viewport&&(x.viewport.style.scrollBehavior=""),k.current=null})})})}),Hv="ScrollAreaThumb",FL=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=LL(Hv,t.__scopeScrollArea);return o.jsx(oi,{present:n||s.hasThumb,children:o.jsx(ise,{ref:e,...r})})}),ise=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,style:r,...s}=t,i=Pa(Hv,n),a=LL(Hv,n),{onThumbPositionChange:l}=a,c=er(e,m=>a.onThumbChange(m)),d=b.useRef(void 0),h=ob(()=>{d.current&&(d.current(),d.current=void 0)},100);return b.useEffect(()=>{const m=i.viewport;if(m){const g=()=>{if(h(),!d.current){const x=lse(m,l);d.current=x,l()}};return l(),m.addEventListener("scroll",g),()=>m.removeEventListener("scroll",g)}},[i.viewport,h,l]),o.jsx(Sn.div,{"data-state":a.hasThumb?"visible":"hidden",...s,ref:c,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...r},onPointerDownCapture:nt(t.onPointerDownCapture,m=>{const x=m.target.getBoundingClientRect(),y=m.clientX-x.left,w=m.clientY-x.top;a.onThumbPointerDown({x:y,y:w})}),onPointerUp:nt(t.onPointerUp,a.onThumbPointerUp)})});FL.displayName=Hv;var Gj="ScrollAreaCorner",qL=b.forwardRef((t,e)=>{const n=Pa(Gj,t.__scopeScrollArea),r=!!(n.scrollbarX&&n.scrollbarY);return n.type!=="scroll"&&r?o.jsx(ase,{...t,ref:e}):null});qL.displayName=Gj;var ase=b.forwardRef((t,e)=>{const{__scopeScrollArea:n,...r}=t,s=Pa(Gj,n),[i,a]=b.useState(0),[l,c]=b.useState(0),d=!!(i&&l);return Yh(s.scrollbarX,()=>{const h=s.scrollbarX?.offsetHeight||0;s.onCornerHeightChange(h),c(h)}),Yh(s.scrollbarY,()=>{const h=s.scrollbarY?.offsetWidth||0;s.onCornerWidthChange(h),a(h)}),d?o.jsx(Sn.div,{...r,ref:e,style:{width:i,height:l,position:"absolute",right:s.dir==="ltr"?0:void 0,left:s.dir==="rtl"?0:void 0,bottom:0,...t.style}}):null});function Qv(t){return t?parseInt(t,10):0}function $L(t,e){const n=t/e;return isNaN(n)?0:n}function ab(t){const e=$L(t.viewport,t.content),n=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,r=(t.scrollbar.size-n)*e;return Math.max(r,18)}function ose(t,e,n,r="ltr"){const s=ab(n),i=s/2,a=e||i,l=s-a,c=n.scrollbar.paddingStart+a,d=n.scrollbar.size-n.scrollbar.paddingEnd-l,h=n.content-n.viewport,m=r==="ltr"?[0,h]:[h*-1,0];return HL([c,d],m)(t)}function nE(t,e,n="ltr"){const r=ab(e),s=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,i=e.scrollbar.size-s,a=e.content-e.viewport,l=i-r,c=n==="ltr"?[0,a]:[a*-1,0],d=Tj(t,c);return HL([0,a],[0,l])(d)}function HL(t,e){return n=>{if(t[0]===t[1]||e[0]===e[1])return e[0];const r=(e[1]-e[0])/(t[1]-t[0]);return e[0]+r*(n-t[0])}}function QL(t,e){return t>0&&t{})=>{let n={left:t.scrollLeft,top:t.scrollTop},r=0;return(function s(){const i={left:t.scrollLeft,top:t.scrollTop},a=n.left!==i.left,l=n.top!==i.top;(a||l)&&e(),n=i,r=window.requestAnimationFrame(s)})(),()=>window.cancelAnimationFrame(r)};function ob(t,e){const n=Rs(t),r=b.useRef(0);return b.useEffect(()=>()=>window.clearTimeout(r.current),[]),b.useCallback(()=>{window.clearTimeout(r.current),r.current=window.setTimeout(n,e)},[n,e])}function Yh(t,e){const n=Rs(e);Wh(()=>{let r=0;if(t){const s=new ResizeObserver(()=>{cancelAnimationFrame(r),r=window.requestAnimationFrame(n)});return s.observe(t),()=>{window.cancelAnimationFrame(r),s.unobserve(t)}}},[t,n])}var VL=DL,cse=zL,use=qL;const pn=b.forwardRef(({className:t,children:e,viewportRef:n,...r},s)=>o.jsxs(VL,{ref:s,className:xe("relative overflow-hidden",t),...r,children:[o.jsx(cse,{ref:n,className:"h-full w-full rounded-[inherit]",children:e}),o.jsx(pk,{}),o.jsx(pk,{orientation:"horizontal"}),o.jsx(use,{})]}));pn.displayName=VL.displayName;const pk=b.forwardRef(({className:t,orientation:e="vertical",...n},r)=>o.jsx(Uj,{ref:r,orientation:e,className:xe("flex touch-none select-none transition-colors",e==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",e==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",t),...n,children:o.jsx(FL,{className:"relative flex-1 rounded-full bg-border"})}));pk.displayName=Uj.displayName;function dse({className:t,...e}){return o.jsx("div",{className:xe("animate-pulse rounded-md bg-primary/10",t),...e})}function hse(t,e=[]){let n=[];function r(i,a){const l=b.createContext(a);l.displayName=i+"Context";const c=n.length;n=[...n,a];const d=m=>{const{scope:g,children:x,...y}=m,w=g?.[t]?.[c]||l,S=b.useMemo(()=>y,Object.values(y));return o.jsx(w.Provider,{value:S,children:x})};d.displayName=i+"Provider";function h(m,g){const x=g?.[t]?.[c]||l,y=b.useContext(x);if(y)return y;if(a!==void 0)return a;throw new Error(`\`${m}\` must be used within \`${i}\``)}return[d,h]}const s=()=>{const i=n.map(a=>b.createContext(a));return function(l){const c=l?.[t]||i;return b.useMemo(()=>({[`__scope${t}`]:{...l,[t]:c}}),[l,c])}};return s.scopeName=t,[r,fse(s,...e)]}function fse(...t){const e=t[0];if(t.length===1)return e;const n=()=>{const r=t.map(s=>({useScope:s(),scopeName:s.scopeName}));return function(i){const a=r.reduce((l,{useScope:c,scopeName:d})=>{const m=c(i)[`__scope${d}`];return{...l,...m}},{});return b.useMemo(()=>({[`__scope${e.scopeName}`]:a}),[a])}};return n.scopeName=e.scopeName,n}var mse=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],UL=mse.reduce((t,e)=>{const n=Vy(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...l}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(c,{...l,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),Xj="Progress",Yj=100,[pse]=hse(Xj),[gse,xse]=pse(Xj),WL=b.forwardRef((t,e)=>{const{__scopeProgress:n,value:r=null,max:s,getValueLabel:i=vse,...a}=t;(s||s===0)&&!rE(s)&&console.error(yse(`${s}`,"Progress"));const l=rE(s)?s:Yj;r!==null&&!sE(r,l)&&console.error(bse(`${r}`,"Progress"));const c=sE(r,l)?r:null,d=Vv(c)?i(c,l):void 0;return o.jsx(gse,{scope:n,value:c,max:l,children:o.jsx(UL.div,{"aria-valuemax":l,"aria-valuemin":0,"aria-valuenow":Vv(c)?c:void 0,"aria-valuetext":d,role:"progressbar","data-state":YL(c,l),"data-value":c??void 0,"data-max":l,...a,ref:e})})});WL.displayName=Xj;var GL="ProgressIndicator",XL=b.forwardRef((t,e)=>{const{__scopeProgress:n,...r}=t,s=xse(GL,n);return o.jsx(UL.div,{"data-state":YL(s.value,s.max),"data-value":s.value??void 0,"data-max":s.max,...r,ref:e})});XL.displayName=GL;function vse(t,e){return`${Math.round(t/e*100)}%`}function YL(t,e){return t==null?"indeterminate":t===e?"complete":"loading"}function Vv(t){return typeof t=="number"}function rE(t){return Vv(t)&&!isNaN(t)&&t>0}function sE(t,e){return Vv(t)&&!isNaN(t)&&t<=e&&t>=0}function yse(t,e){return`Invalid prop \`max\` of value \`${t}\` supplied to \`${e}\`. Only numbers greater than 0 are valid max values. Defaulting to \`${Yj}\`.`}function bse(t,e){return`Invalid prop \`value\` of value \`${t}\` supplied to \`${e}\`. The \`value\` prop must be: - - a positive number - - less than the value passed to \`max\` (or ${Yj} if no \`max\` prop is set) - - \`null\` or \`undefined\` if the progress is indeterminate. - -Defaulting to \`null\`.`}var KL=WL,wse=XL;const Qp=b.forwardRef(({className:t,value:e,...n},r)=>o.jsx(KL,{ref:r,className:xe("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",t),...n,children:o.jsx(wse,{className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(e||0)}%)`}})}));Qp.displayName=KL.displayName;const Sse={light:"",dark:".dark"},ZL=b.createContext(null);function JL(){const t=b.useContext(ZL);if(!t)throw new Error("useChart must be used within a ");return t}const vh=b.forwardRef(({id:t,className:e,children:n,config:r,...s},i)=>{const a=b.useId(),l=`chart-${t||a.replace(/:/g,"")}`;return o.jsx(ZL.Provider,{value:{config:r},children:o.jsxs("div",{"data-chart":l,ref:i,className:xe("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",e),...s,children:[o.jsx(kse,{id:l,config:r}),o.jsx(TJ,{children:n})]})})});vh.displayName="Chart";const kse=({id:t,config:e})=>{const n=Object.entries(e).filter(([,r])=>r.theme||r.color);return n.length?o.jsx("style",{dangerouslySetInnerHTML:{__html:Object.entries(Sse).map(([r,s])=>` -${s} [data-chart=${t}] { -${n.map(([i,a])=>{const l=a.theme?.[r]||a.color;return l?` --color-${i}: ${l};`:null}).join(` -`)} -} -`).join(` -`)}}):null},Bm=EJ,yh=b.forwardRef(({active:t,payload:e,className:n,indicator:r="dot",hideLabel:s=!1,hideIndicator:i=!1,label:a,labelFormatter:l,labelClassName:c,formatter:d,color:h,nameKey:m,labelKey:g},x)=>{const{config:y}=JL(),w=b.useMemo(()=>{if(s||!e?.length)return null;const[k]=e,j=`${g||k?.dataKey||k?.name||"value"}`,N=gk(y,k,j),T=!g&&typeof a=="string"?y[a]?.label||a:N?.label;return l?o.jsx("div",{className:xe("font-medium",c),children:l(T,e)}):T?o.jsx("div",{className:xe("font-medium",c),children:T}):null},[a,l,e,s,c,y,g]);if(!t||!e?.length)return null;const S=e.length===1&&r!=="dot";return o.jsxs("div",{ref:x,className:xe("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",n),children:[S?null:w,o.jsx("div",{className:"grid gap-1.5",children:e.filter(k=>k.type!=="none").map((k,j)=>{const N=`${m||k.name||k.dataKey||"value"}`,T=gk(y,k,N),E=h||k.payload.fill||k.color;return o.jsx("div",{className:xe("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",r==="dot"&&"items-center"),children:d&&k?.value!==void 0&&k.name?d(k.value,k.name,k,j,k.payload):o.jsxs(o.Fragment,{children:[T?.icon?o.jsx(T.icon,{}):!i&&o.jsx("div",{className:xe("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]",{"h-2.5 w-2.5":r==="dot","w-1":r==="line","w-0 border-[1.5px] border-dashed bg-transparent":r==="dashed","my-0.5":S&&r==="dashed"}),style:{"--color-bg":E,"--color-border":E}}),o.jsxs("div",{className:xe("flex flex-1 justify-between leading-none",S?"items-end":"items-center"),children:[o.jsxs("div",{className:"grid gap-1.5",children:[S?w:null,o.jsx("span",{className:"text-muted-foreground",children:T?.label||k.name})]}),k.value&&o.jsx("span",{className:"font-mono font-medium tabular-nums text-foreground",children:k.value.toLocaleString()})]})]})},k.dataKey)})})]})});yh.displayName="ChartTooltip";const Ose=_J,eB=b.forwardRef(({className:t,hideIcon:e=!1,payload:n,verticalAlign:r="bottom",nameKey:s},i)=>{const{config:a}=JL();return n?.length?o.jsx("div",{ref:i,className:xe("flex items-center justify-center gap-4",r==="top"?"pb-3":"pt-3",t),children:n.filter(l=>l.type!=="none").map(l=>{const c=`${s||l.dataKey||"value"}`,d=gk(a,l,c);return o.jsxs("div",{className:xe("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"),children:[d?.icon&&!e?o.jsx(d.icon,{}):o.jsx("div",{className:"h-2 w-2 shrink-0 rounded-[2px]",style:{backgroundColor:l.color}}),d?.label]},l.value)})}):null});eB.displayName="ChartLegend";function gk(t,e,n){if(typeof e!="object"||e===null)return;const r="payload"in e&&typeof e.payload=="object"&&e.payload!==null?e.payload:void 0;let s=n;return n in e&&typeof e[n]=="string"?s=e[n]:r&&n in r&&typeof r[n]=="string"&&(s=r[n]),s in t?t[s]:t[n]}const iE=t=>typeof t=="boolean"?`${t}`:t===0?"0":t,aE=Qz,kf=(t,e)=>n=>{var r;if(e?.variants==null)return aE(t,n?.class,n?.className);const{variants:s,defaultVariants:i}=e,a=Object.keys(s).map(d=>{const h=n?.[d],m=i?.[d];if(h===null)return null;const g=iE(h)||iE(m);return s[d][g]}),l=n&&Object.entries(n).reduce((d,h)=>{let[m,g]=h;return g===void 0||(d[m]=g),d},{}),c=e==null||(r=e.compoundVariants)===null||r===void 0?void 0:r.reduce((d,h)=>{let{class:m,className:g,...x}=h;return Object.entries(x).every(y=>{let[w,S]=y;return Array.isArray(S)?S.includes({...i,...l}[w]):{...i,...l}[w]===S})?[...d,m,g]:d},[]);return aE(t,a,c,n?.class,n?.className)},q0=kf("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),ue=b.forwardRef(({className:t,variant:e,size:n,asChild:r=!1,...s},i)=>{const a=r?Cee:"button";return o.jsx(a,{className:xe(q0({variant:e,size:n,className:t})),ref:i,...s})});ue.displayName="Button";const jse=kf("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function tn({className:t,variant:e,...n}){return o.jsx("div",{className:xe(jse({variant:e}),t),...n})}const Nse=5,Cse=5e3;let R4=0;function Tse(){return R4=(R4+1)%Number.MAX_SAFE_INTEGER,R4.toString()}const D4=new Map,oE=t=>{if(D4.has(t))return;const e=setTimeout(()=>{D4.delete(t),S0({type:"REMOVE_TOAST",toastId:t})},Cse);D4.set(t,e)},Ese=(t,e)=>{switch(e.type){case"ADD_TOAST":return{...t,toasts:[e.toast,...t.toasts].slice(0,Nse)};case"UPDATE_TOAST":return{...t,toasts:t.toasts.map(n=>n.id===e.toast.id?{...n,...e.toast}:n)};case"DISMISS_TOAST":{const{toastId:n}=e;return n?oE(n):t.toasts.forEach(r=>{oE(r.id)}),{...t,toasts:t.toasts.map(r=>r.id===n||n===void 0?{...r,open:!1}:r)}}case"REMOVE_TOAST":return e.toastId===void 0?{...t,toasts:[]}:{...t,toasts:t.toasts.filter(n=>n.id!==e.toastId)}}},lv=[];let cv={toasts:[]};function S0(t){cv=Ese(cv,t),lv.forEach(e=>{e(cv)})}function _se({...t}){const e=Tse(),n=s=>S0({type:"UPDATE_TOAST",toast:{...s,id:e}}),r=()=>S0({type:"DISMISS_TOAST",toastId:e});return S0({type:"ADD_TOAST",toast:{...t,id:e,open:!0,onOpenChange:s=>{s||r()}}}),{id:e,dismiss:r,update:n}}function Lr(){const[t,e]=b.useState(cv);return b.useEffect(()=>(lv.push(e),()=>{const n=lv.indexOf(e);n>-1&&lv.splice(n,1)}),[t]),{...t,toast:_se,dismiss:n=>S0({type:"DISMISS_TOAST",toastId:n})}}const Ase=t=>{const e=[];for(let n=0;n{try{x(!0);const $=await Cr.get("https://v1.hitokoto.cn/?c=a&c=b&c=c&c=d&c=h&c=i&c=k");m({hitokoto:$.data.hitokoto,from:$.data.from||$.data.from_who||"未知"})}catch($){console.error("获取一言失败:",$),m({hitokoto:"人生就像一盒巧克力,你永远不知道下一颗是什么味道。",from:"阿甘正传"})}finally{x(!1)}},[]),T=b.useCallback(async()=>{try{const $=localStorage.getItem("access-token"),K=await Cr.get("/api/webui/system/status",{headers:{Authorization:`Bearer ${$}`}});w(K.data)}catch($){console.error("获取机器人状态失败:",$),w(null)}},[]),E=async()=>{if(!S)try{k(!0);const $=localStorage.getItem("access-token");await Cr.post("/api/webui/system/restart",{},{headers:{Authorization:`Bearer ${$}`}}),j({title:"重启中",description:"麦麦正在重启,请稍候..."}),setTimeout(()=>{T(),k(!1)},3e3)}catch($){console.error("重启失败:",$),j({title:"重启失败",description:"无法重启麦麦,请检查控制台",variant:"destructive"}),k(!1)}},_=b.useCallback(async()=>{try{const $=localStorage.getItem("access-token"),K=await Cr.get(`/api/webui/statistics/dashboard?hours=${a}`,{headers:{Authorization:`Bearer ${$}`}});e(K.data),r(!1),i(100)}catch($){console.error("Failed to fetch dashboard data:",$),r(!1),i(100)}},[a]);if(b.useEffect(()=>{if(!n)return;i(0);const $=setTimeout(()=>i(15),200),K=setTimeout(()=>i(30),800),Y=setTimeout(()=>i(45),2e3),R=setTimeout(()=>i(60),4e3),ie=setTimeout(()=>i(75),6500),X=setTimeout(()=>i(85),9e3),z=setTimeout(()=>i(92),11e3);return()=>{clearTimeout($),clearTimeout(K),clearTimeout(Y),clearTimeout(R),clearTimeout(ie),clearTimeout(X),clearTimeout(z)}},[n]),b.useEffect(()=>{_(),N(),T()},[_,N,T]),b.useEffect(()=>{if(!c)return;const $=setInterval(()=>{_(),T()},3e4);return()=>clearInterval($)},[c,_,T]),n||!t)return o.jsx("div",{className:"flex items-center justify-center h-[calc(100vh-200px)]",children:o.jsxs("div",{className:"text-center space-y-6 w-full max-w-md px-4",children:[o.jsx(Qs,{className:"h-12 w-12 animate-spin mx-auto text-primary"}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-lg font-medium",children:"加载统计数据中..."}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"正在获取麦麦运行数据"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(Qp,{value:s,className:"h-2"}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:[s,"%"]})]})]})});const{summary:A,model_stats:D,hourly_data:q,daily_data:B,recent_activity:H}=t,W=$=>{const K=Math.floor($/3600),Y=Math.floor($%3600/60);return`${K}小时${Y}分钟`},ee=$=>new Date($).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),I=Ase(D.length),V=D.map(($,K)=>({name:$.model_name,value:$.request_count,fill:I[K]})),L={requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"},tokens:{label:"Tokens",color:"hsl(var(--chart-3))"}};return o.jsx(pn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"实时监控面板"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"麦麦运行状态和统计数据一览"})]}),o.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[o.jsx(Yi,{value:a.toString(),onValueChange:$=>l(Number($)),children:o.jsxs(ji,{className:"grid grid-cols-3 w-full sm:w-auto",children:[o.jsx(Bt,{value:"24",children:"24小时"}),o.jsx(Bt,{value:"168",children:"7天"}),o.jsx(Bt,{value:"720",children:"30天"})]})}),o.jsxs(ue,{variant:c?"default":"outline",size:"sm",onClick:()=>d(!c),className:"gap-2",children:[o.jsx(Qs,{className:`h-4 w-4 ${c?"animate-spin":""}`}),o.jsx("span",{className:"hidden sm:inline",children:"自动刷新"})]}),o.jsx(ue,{variant:"outline",size:"sm",onClick:_,children:o.jsx(Qs,{className:"h-4 w-4"})})]})]}),o.jsxs("div",{className:"flex items-center gap-3 px-4 py-2 rounded-lg border border-dashed border-muted-foreground/30 bg-muted/20",children:[g?o.jsx(dse,{className:"h-5 flex-1"}):h?o.jsxs("p",{className:"flex-1 text-sm text-muted-foreground italic truncate",children:['"',h.hitokoto,'" —— ',h.from]}):null,o.jsx(ue,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0",onClick:N,disabled:g,children:o.jsx(Qs,{className:`h-3.5 w-3.5 ${g?"animate-spin":""}`})})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-3",children:[o.jsxs(Lt,{className:"lg:col-span-1",children:[o.jsx(En,{className:"pb-3",children:o.jsxs(_n,{className:"text-sm font-medium flex items-center gap-2",children:[o.jsx(Dp,{className:"h-4 w-4"}),"麦麦状态"]})}),o.jsx(Xn,{children:o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsx("div",{className:"flex items-center gap-2",children:y?.running?o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-3 w-3 rounded-full bg-green-500 animate-pulse"}),o.jsxs(tn,{variant:"outline",className:"text-green-600 border-green-300 bg-green-50",children:[o.jsx(Ya,{className:"h-3 w-3 mr-1"}),"运行中"]})]}):o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-3 w-3 rounded-full bg-red-500"}),o.jsxs(tn,{variant:"outline",className:"text-red-600 border-red-300 bg-red-50",children:[o.jsx(Lo,{className:"h-3 w-3 mr-1"}),"已停止"]})]})}),y&&o.jsxs("div",{className:"text-xs text-muted-foreground",children:[o.jsxs("span",{children:["v",y.version]}),o.jsx("span",{className:"mx-2",children:"|"}),o.jsxs("span",{children:["运行 ",W(y.uptime)]})]})]})})]}),o.jsxs(Lt,{className:"lg:col-span-2",children:[o.jsx(En,{className:"pb-3",children:o.jsxs(_n,{className:"text-sm font-medium flex items-center gap-2",children:[o.jsx(Zu,{className:"h-4 w-4"}),"快速操作"]})}),o.jsx(Xn,{children:o.jsxs("div",{className:"flex flex-wrap gap-2",children:[o.jsxs(ue,{variant:"outline",size:"sm",onClick:E,disabled:S,className:"gap-2",children:[o.jsx(zj,{className:`h-4 w-4 ${S?"animate-spin":""}`}),S?"重启中...":"重启麦麦"]}),o.jsx(ue,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:o.jsxs(rv,{to:"/logs",children:[o.jsx(Po,{className:"h-4 w-4"}),"查看日志"]})}),o.jsx(ue,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:o.jsxs(rv,{to:"/plugins",children:[o.jsx(Fee,{className:"h-4 w-4"}),"插件管理"]})}),o.jsx(ue,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:o.jsxs(rv,{to:"/settings",children:[o.jsx(Vc,{className:"h-4 w-4"}),"系统设置"]})})]})})]})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-4",children:[o.jsxs(Lt,{children:[o.jsxs(En,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(_n,{className:"text-sm font-medium",children:"总请求数"}),o.jsx(qee,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Xn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:A.total_requests.toLocaleString()}),o.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["最近",a<48?a+"小时":Math.floor(a/24)+"天"]})]})]}),o.jsxs(Lt,{children:[o.jsxs(En,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(_n,{className:"text-sm font-medium",children:"总花费"}),o.jsx($ee,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Xn,{children:[o.jsxs("div",{className:"text-2xl font-bold",children:["¥",A.total_cost.toFixed(2)]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:A.cost_per_hour>0?`¥${A.cost_per_hour.toFixed(2)}/小时`:"暂无数据"})]})]}),o.jsxs(Lt,{children:[o.jsxs(En,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(_n,{className:"text-sm font-medium",children:"Token消耗"}),o.jsx(sk,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Xn,{children:[o.jsxs("div",{className:"text-2xl font-bold",children:[(A.total_tokens/1e3).toFixed(1),"K"]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:A.tokens_per_hour>0?`${(A.tokens_per_hour/1e3).toFixed(1)}K/小时`:"暂无数据"})]})]}),o.jsxs(Lt,{children:[o.jsxs(En,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(_n,{className:"text-sm font-medium",children:"平均响应"}),o.jsx(Zu,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Xn,{children:[o.jsxs("div",{className:"text-2xl font-bold",children:[A.avg_response_time.toFixed(2),"s"]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"API平均耗时"})]})]})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 sm:grid-cols-3",children:[o.jsxs(Lt,{children:[o.jsxs(En,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(_n,{className:"text-sm font-medium",children:"在线时长"}),o.jsx(Mh,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsx(Xn,{children:o.jsx("div",{className:"text-xl font-bold",children:W(A.online_time)})})]}),o.jsxs(Lt,{children:[o.jsxs(En,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(_n,{className:"text-sm font-medium",children:"消息处理"}),o.jsx(Gh,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Xn,{children:[o.jsx("div",{className:"text-xl font-bold",children:A.total_messages.toLocaleString()}),o.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["回复 ",A.total_replies.toLocaleString()," 条"]})]})]}),o.jsxs(Lt,{children:[o.jsxs(En,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(_n,{className:"text-sm font-medium",children:"成本效率"}),o.jsx(Hee,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Xn,{children:[o.jsx("div",{className:"text-xl font-bold",children:A.total_messages>0?`¥${(A.total_cost/A.total_messages*100).toFixed(2)}`:"¥0.00"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"每100条消息"})]})]})]}),o.jsxs(Yi,{defaultValue:"trends",className:"space-y-4",children:[o.jsxs(ji,{className:"grid w-full grid-cols-2 sm:grid-cols-4",children:[o.jsx(Bt,{value:"trends",children:"趋势"}),o.jsx(Bt,{value:"models",children:"模型"}),o.jsx(Bt,{value:"activity",children:"活动"}),o.jsx(Bt,{value:"daily",children:"日统计"})]}),o.jsxs(ln,{value:"trends",className:"space-y-4",children:[o.jsxs(Lt,{children:[o.jsxs(En,{children:[o.jsx(_n,{children:"请求趋势"}),o.jsxs(Wr,{children:["最近",a,"小时的请求量变化"]})]}),o.jsx(Xn,{children:o.jsx(vh,{config:L,className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:o.jsxs(AJ,{data:q,children:[o.jsx(Kx,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),o.jsx(Zx,{dataKey:"timestamp",tickFormatter:$=>ee($),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Pm,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Bm,{content:o.jsx(yh,{labelFormatter:$=>ee($)})}),o.jsx(MJ,{type:"monotone",dataKey:"requests",stroke:"var(--color-requests)",strokeWidth:2})]})})})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[o.jsxs(Lt,{children:[o.jsxs(En,{children:[o.jsx(_n,{children:"花费趋势"}),o.jsx(Wr,{children:"API调用成本变化"})]}),o.jsx(Xn,{children:o.jsx(vh,{config:L,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:o.jsxs(S4,{data:q,children:[o.jsx(Kx,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),o.jsx(Zx,{dataKey:"timestamp",tickFormatter:$=>ee($),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Pm,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Bm,{content:o.jsx(yh,{labelFormatter:$=>ee($)})}),o.jsx(Jx,{dataKey:"cost",fill:"var(--color-cost)"})]})})})]}),o.jsxs(Lt,{children:[o.jsxs(En,{children:[o.jsx(_n,{children:"Token消耗"}),o.jsx(Wr,{children:"Token使用量变化"})]}),o.jsx(Xn,{children:o.jsx(vh,{config:L,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:o.jsxs(S4,{data:q,children:[o.jsx(Kx,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),o.jsx(Zx,{dataKey:"timestamp",tickFormatter:$=>ee($),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Pm,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Bm,{content:o.jsx(yh,{labelFormatter:$=>ee($)})}),o.jsx(Jx,{dataKey:"tokens",fill:"var(--color-tokens)"})]})})})]})]})]}),o.jsx(ln,{value:"models",className:"space-y-4",children:o.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[o.jsxs(Lt,{children:[o.jsxs(En,{children:[o.jsx(_n,{children:"模型请求分布"}),o.jsxs(Wr,{children:["各模型使用占比 (共 ",D.length," 个模型)"]})]}),o.jsx(Xn,{children:o.jsx(vh,{config:Object.fromEntries(D.map(($,K)=>[$.model_name,{label:$.model_name,color:I[K]}])),className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:o.jsxs(RJ,{children:[o.jsx(Bm,{content:o.jsx(yh,{})}),o.jsx(DJ,{data:V,cx:"50%",cy:"50%",labelLine:!1,label:({name:$,percent:K})=>K&&K<.05?"":`${$} ${K?(K*100).toFixed(0):0}%`,outerRadius:100,dataKey:"value",children:V.map(($,K)=>o.jsx(PJ,{fill:$.fill},`cell-${K}`))})]})})})]}),o.jsxs(Lt,{children:[o.jsxs(En,{children:[o.jsx(_n,{children:"模型详细统计"}),o.jsx(Wr,{children:"请求数、花费和性能"})]}),o.jsx(Xn,{children:o.jsx(pn,{className:"h-[300px] sm:h-[400px]",children:o.jsx("div",{className:"space-y-3",children:D.map(($,K)=>o.jsxs("div",{className:"p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[o.jsxs("div",{className:"flex items-center justify-between mb-2",children:[o.jsx("h4",{className:"font-semibold text-sm truncate flex-1 min-w-0",children:$.model_name}),o.jsx("div",{className:"w-3 h-3 rounded-full ml-2 flex-shrink-0",style:{backgroundColor:`hsl(var(--chart-${K%5+1}))`}})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"请求数:"}),o.jsx("span",{className:"ml-1 font-medium",children:$.request_count.toLocaleString()})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"花费:"}),o.jsxs("span",{className:"ml-1 font-medium",children:["¥",$.total_cost.toFixed(2)]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),o.jsxs("span",{className:"ml-1 font-medium",children:[($.total_tokens/1e3).toFixed(1),"K"]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"平均耗时:"}),o.jsxs("span",{className:"ml-1 font-medium",children:[$.avg_response_time.toFixed(2),"s"]})]})]})]},K))})})})]})]})}),o.jsx(ln,{value:"activity",children:o.jsxs(Lt,{children:[o.jsxs(En,{children:[o.jsx(_n,{children:"最近活动"}),o.jsx(Wr,{children:"最新的API调用记录"})]}),o.jsx(Xn,{children:o.jsx(pn,{className:"h-[400px] sm:h-[500px]",children:o.jsx("div",{className:"space-y-2",children:H.map(($,K)=>o.jsxs("div",{className:"p-3 sm:p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-2 mb-2",children:[o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("div",{className:"font-medium text-sm truncate",children:$.model}),o.jsx("div",{className:"text-xs text-muted-foreground",children:$.request_type})]}),o.jsx("div",{className:"text-xs text-muted-foreground flex-shrink-0",children:ee($.timestamp)})]}),o.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-2 text-xs",children:[o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),o.jsx("span",{className:"ml-1",children:$.tokens})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"花费:"}),o.jsxs("span",{className:"ml-1",children:["¥",$.cost.toFixed(4)]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"耗时:"}),o.jsxs("span",{className:"ml-1",children:[$.time_cost.toFixed(2),"s"]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground",children:"状态:"}),o.jsx("span",{className:`ml-1 ${$.status==="success"?"text-green-600":"text-red-600"}`,children:$.status})]})]})]},K))})})})]})}),o.jsx(ln,{value:"daily",children:o.jsxs(Lt,{children:[o.jsxs(En,{children:[o.jsx(_n,{children:"每日统计"}),o.jsx(Wr,{children:"最近7天的数据汇总"})]}),o.jsx(Xn,{children:o.jsx(vh,{config:{requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"}},className:"h-[400px] sm:h-[500px] w-full aspect-auto",children:o.jsxs(S4,{data:B,children:[o.jsx(Kx,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),o.jsx(Zx,{dataKey:"timestamp",tickFormatter:$=>{const K=new Date($);return`${K.getMonth()+1}/${K.getDate()}`},stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Pm,{yAxisId:"left",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Pm,{yAxisId:"right",orientation:"right",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),o.jsx(Bm,{content:o.jsx(yh,{labelFormatter:$=>new Date($).toLocaleDateString("zh-CN")})}),o.jsx(Ose,{content:o.jsx(eB,{})}),o.jsx(Jx,{yAxisId:"left",dataKey:"requests",fill:"var(--color-requests)"}),o.jsx(Jx,{yAxisId:"right",dataKey:"cost",fill:"var(--color-cost)"})]})})})]})})]})]})})}const Rse={theme:"system",setTheme:()=>null},tB=b.createContext(Rse),Kj=()=>{const t=b.useContext(tB);if(t===void 0)throw new Error("useTheme must be used within a ThemeProvider");return t},Dse=(t,e,n)=>{const r=document.documentElement.classList.contains("no-animations");if(!document.startViewTransition||r){e(t);return}const s=n.clientX,i=n.clientY,a=Math.hypot(Math.max(s,innerWidth-s),Math.max(i,innerHeight-i));document.startViewTransition(()=>{e(t)}).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${s}px ${i}px)`,`circle(${a}px at ${s}px ${i}px)`]},{duration:500,easing:"ease-in-out",pseudoElement:"::view-transition-new(root)"})})},nB=b.createContext(void 0),rB=()=>{const t=b.useContext(nB);if(t===void 0)throw new Error("useAnimation must be used within an AnimationProvider");return t};var lb="Switch",[Pse]=Da(lb),[zse,Ise]=Pse(lb),sB=b.forwardRef((t,e)=>{const{__scopeSwitch:n,name:r,checked:s,defaultChecked:i,required:a,disabled:l,value:c="on",onCheckedChange:d,form:h,...m}=t,[g,x]=b.useState(null),y=er(e,N=>x(N)),w=b.useRef(!1),S=g?h||!!g.closest("form"):!0,[k,j]=Kl({prop:s,defaultProp:i??!1,onChange:d,caller:lb});return o.jsxs(zse,{scope:n,checked:k,disabled:l,children:[o.jsx(Sn.button,{type:"button",role:"switch","aria-checked":k,"aria-required":a,"data-state":lB(k),"data-disabled":l?"":void 0,disabled:l,value:c,...m,ref:y,onClick:nt(t.onClick,N=>{j(T=>!T),S&&(w.current=N.isPropagationStopped(),w.current||N.stopPropagation())})}),S&&o.jsx(oB,{control:g,bubbles:!w.current,name:r,value:c,checked:k,required:a,disabled:l,form:h,style:{transform:"translateX(-100%)"}})]})});sB.displayName=lb;var iB="SwitchThumb",aB=b.forwardRef((t,e)=>{const{__scopeSwitch:n,...r}=t,s=Ise(iB,n);return o.jsx(Sn.span,{"data-state":lB(s.checked),"data-disabled":s.disabled?"":void 0,...r,ref:e})});aB.displayName=iB;var Lse="SwitchBubbleInput",oB=b.forwardRef(({__scopeSwitch:t,control:e,checked:n,bubbles:r=!0,...s},i)=>{const a=b.useRef(null),l=er(a,i),c=sI(n),d=iI(e);return b.useEffect(()=>{const h=a.current;if(!h)return;const m=window.HTMLInputElement.prototype,x=Object.getOwnPropertyDescriptor(m,"checked").set;if(c!==n&&x){const y=new Event("click",{bubbles:r});x.call(h,n),h.dispatchEvent(y)}},[c,n,r]),o.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:n,...s,tabIndex:-1,ref:l,style:{...s.style,...d,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});oB.displayName=Lse;function lB(t){return t?"checked":"unchecked"}var cB=sB,Bse=aB;const Ft=b.forwardRef(({className:t,...e},n)=>o.jsx(cB,{className:xe("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",t),...e,ref:n,children:o.jsx(Bse,{className:xe("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));Ft.displayName=cB.displayName;const Fse=kf("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),he=b.forwardRef(({className:t,...e},n)=>o.jsx(aI,{ref:n,className:xe(Fse(),t),...e}));he.displayName=aI.displayName;const Pe=b.forwardRef(({className:t,type:e,...n},r)=>o.jsx("input",{type:e,className:xe("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",t),ref:r,...n}));Pe.displayName="Input";const qse=[{id:"minLength",label:"长度至少 10 位",description:"Token 长度必须大于等于 10 个字符",validate:t=>t.length>=10},{id:"hasUppercase",label:"包含大写字母",description:"至少包含一个大写字母 (A-Z)",validate:t=>/[A-Z]/.test(t)},{id:"hasLowercase",label:"包含小写字母",description:"至少包含一个小写字母 (a-z)",validate:t=>/[a-z]/.test(t)},{id:"hasSpecialChar",label:"包含特殊符号",description:"至少包含一个特殊符号 (!@#$%^&*()_+-=[]{}|;:,.<>?/)",validate:t=>/[!@#$%^&*()_+\-=[\]{}|;:,.<>?/]/.test(t)}];function $se(t){const e=qse.map(r=>({id:r.id,label:r.label,description:r.description,passed:r.validate(t)}));return{isValid:e.every(r=>r.passed),rules:e}}const Zj="0.11.6 Beta",Jj="MaiBot Dashboard",Hse=`${Jj} v${Zj}`,Qse=(t="v")=>`${t}${Zj}`,Er=Mj,Of=oI,Vse=Ej,e6=Gy,uB=b.forwardRef(({className:t,...e},n)=>o.jsx(Uy,{ref:n,className:xe("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),...e}));uB.displayName=Uy.displayName;const wr=b.forwardRef(({className:t,children:e,preventOutsideClose:n=!1,...r},s)=>o.jsxs(Vse,{children:[o.jsx(uB,{}),o.jsxs(Wy,{ref:s,className:xe("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",t),onPointerDownOutside:n?i=>i.preventDefault():void 0,onInteractOutside:n?i=>i.preventDefault():void 0,...r,children:[e,o.jsxs(Gy,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[o.jsx(Pp,{className:"h-4 w-4"}),o.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));wr.displayName=Wy.displayName;const Sr=({className:t,...e})=>o.jsx("div",{className:xe("flex flex-col space-y-1.5 text-center sm:text-left",t),...e});Sr.displayName="DialogHeader";const fs=({className:t,...e})=>o.jsx("div",{className:xe("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...e});fs.displayName="DialogFooter";const kr=b.forwardRef(({className:t,...e},n)=>o.jsx(_j,{ref:n,className:xe("text-lg font-semibold leading-none tracking-tight",t),...e}));kr.displayName=_j.displayName;const Xr=b.forwardRef(({className:t,...e},n)=>o.jsx(Aj,{ref:n,className:xe("text-sm text-muted-foreground",t),...e}));Xr.displayName=Aj.displayName;var Use=Symbol("radix.slottable");function Wse(t){const e=({children:n})=>o.jsx(o.Fragment,{children:n});return e.displayName=`${t}.Slottable`,e.__radixId=Use,e}var dB="AlertDialog",[Gse]=Da(dB,[lI]),Jl=lI(),hB=t=>{const{__scopeAlertDialog:e,...n}=t,r=Jl(e);return o.jsx(Mj,{...r,...n,modal:!0})};hB.displayName=dB;var Xse="AlertDialogTrigger",fB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Jl(n);return o.jsx(oI,{...s,...r,ref:e})});fB.displayName=Xse;var Yse="AlertDialogPortal",mB=t=>{const{__scopeAlertDialog:e,...n}=t,r=Jl(e);return o.jsx(Ej,{...r,...n})};mB.displayName=Yse;var Kse="AlertDialogOverlay",pB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Jl(n);return o.jsx(Uy,{...s,...r,ref:e})});pB.displayName=Kse;var Rh="AlertDialogContent",[Zse,Jse]=Gse(Rh),eie=Wse("AlertDialogContent"),gB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,children:r,...s}=t,i=Jl(n),a=b.useRef(null),l=er(e,a),c=b.useRef(null);return o.jsx(Tee,{contentName:Rh,titleName:xB,docsSlug:"alert-dialog",children:o.jsx(Zse,{scope:n,cancelRef:c,children:o.jsxs(Wy,{role:"alertdialog",...i,...s,ref:l,onOpenAutoFocus:nt(s.onOpenAutoFocus,d=>{d.preventDefault(),c.current?.focus({preventScroll:!0})}),onPointerDownOutside:d=>d.preventDefault(),onInteractOutside:d=>d.preventDefault(),children:[o.jsx(eie,{children:r}),o.jsx(nie,{contentRef:a})]})})})});gB.displayName=Rh;var xB="AlertDialogTitle",vB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Jl(n);return o.jsx(_j,{...s,...r,ref:e})});vB.displayName=xB;var yB="AlertDialogDescription",bB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Jl(n);return o.jsx(Aj,{...s,...r,ref:e})});bB.displayName=yB;var tie="AlertDialogAction",wB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,s=Jl(n);return o.jsx(Gy,{...s,...r,ref:e})});wB.displayName=tie;var SB="AlertDialogCancel",kB=b.forwardRef((t,e)=>{const{__scopeAlertDialog:n,...r}=t,{cancelRef:s}=Jse(SB,n),i=Jl(n),a=er(e,s);return o.jsx(Gy,{...i,...r,ref:a})});kB.displayName=SB;var nie=({contentRef:t})=>{const e=`\`${Rh}\` requires a description for the component to be accessible for screen reader users. - -You can add a description to the \`${Rh}\` by passing a \`${yB}\` component as a child, which also benefits sighted users by adding visible context to the dialog. - -Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${Rh}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component. - -For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;return b.useEffect(()=>{document.getElementById(t.current?.getAttribute("aria-describedby"))||console.warn(e)},[e,t]),null},rie=hB,sie=fB,iie=mB,OB=pB,jB=gB,NB=wB,CB=kB,TB=vB,EB=bB;const Fn=rie,is=sie,aie=iie,_B=b.forwardRef(({className:t,...e},n)=>o.jsx(OB,{className:xe("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",t),...e,ref:n}));_B.displayName=OB.displayName;const Mn=b.forwardRef(({className:t,...e},n)=>o.jsxs(aie,{children:[o.jsx(_B,{}),o.jsx(jB,{ref:n,className:xe("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",t),...e})]}));Mn.displayName=jB.displayName;const Rn=({className:t,...e})=>o.jsx("div",{className:xe("flex flex-col space-y-2 text-center sm:text-left",t),...e});Rn.displayName="AlertDialogHeader";const Dn=({className:t,...e})=>o.jsx("div",{className:xe("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...e});Dn.displayName="AlertDialogFooter";const Pn=b.forwardRef(({className:t,...e},n)=>o.jsx(TB,{ref:n,className:xe("text-lg font-semibold",t),...e}));Pn.displayName=TB.displayName;const zn=b.forwardRef(({className:t,...e},n)=>o.jsx(EB,{ref:n,className:xe("text-sm text-muted-foreground",t),...e}));zn.displayName=EB.displayName;const In=b.forwardRef(({className:t,...e},n)=>o.jsx(NB,{ref:n,className:xe(q0(),t),...e}));In.displayName=NB.displayName;const Ln=b.forwardRef(({className:t,...e},n)=>o.jsx(CB,{ref:n,className:xe(q0({variant:"outline"}),"mt-2 sm:mt-0",t),...e}));Ln.displayName=CB.displayName;function oie(){return o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"系统设置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理您的应用偏好设置"})]})}),o.jsxs(Yi,{defaultValue:"appearance",className:"w-full",children:[o.jsxs(ji,{className:"grid w-full grid-cols-2 sm:grid-cols-4 gap-0.5 sm:gap-1 h-auto p-1",children:[o.jsxs(Bt,{value:"appearance",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[o.jsx(kI,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),o.jsx("span",{children:"外观"})]}),o.jsxs(Bt,{value:"security",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[o.jsx(Qee,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),o.jsx("span",{children:"安全"})]}),o.jsxs(Bt,{value:"other",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[o.jsx(Vc,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),o.jsx("span",{children:"其他"})]}),o.jsxs(Bt,{value:"about",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[o.jsx(Xi,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),o.jsx("span",{children:"关于"})]})]}),o.jsxs(pn,{className:"h-[calc(100vh-240px)] sm:h-[calc(100vh-280px)] mt-4 sm:mt-6",children:[o.jsx(ln,{value:"appearance",className:"mt-0",children:o.jsx(lie,{})}),o.jsx(ln,{value:"security",className:"mt-0",children:o.jsx(cie,{})}),o.jsx(ln,{value:"other",className:"mt-0",children:o.jsx(uie,{})}),o.jsx(ln,{value:"about",className:"mt-0",children:o.jsx(die,{})})]})]})]})}function lE(t){const e=document.documentElement,r={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[t];if(r)e.style.setProperty("--primary",r.hsl),r.gradient?(e.style.setProperty("--primary-gradient",r.gradient),e.classList.add("has-gradient")):(e.style.removeProperty("--primary-gradient"),e.classList.remove("has-gradient"));else if(t.startsWith("#")){const s=i=>{i=i.replace("#","");const a=parseInt(i.substring(0,2),16)/255,l=parseInt(i.substring(2,4),16)/255,c=parseInt(i.substring(4,6),16)/255,d=Math.max(a,l,c),h=Math.min(a,l,c);let m=0,g=0;const x=(d+h)/2;if(d!==h){const y=d-h;switch(g=x>.5?y/(2-d-h):y/(d+h),d){case a:m=((l-c)/y+(llocalStorage.getItem("accent-color")||"blue");b.useEffect(()=>{const d=localStorage.getItem("accent-color")||"blue";lE(d)},[]);const c=d=>{l(d),localStorage.setItem("accent-color",d),lE(d)};return o.jsxs("div",{className:"space-y-6 sm:space-y-8",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题模式"}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 sm:gap-4",children:[o.jsx(P4,{value:"light",current:t,onChange:e,label:"浅色",description:"始终使用浅色主题"}),o.jsx(P4,{value:"dark",current:t,onChange:e,label:"深色",description:"始终使用深色主题"}),o.jsx(P4,{value:"system",current:t,onChange:e,label:"跟随系统",description:"根据系统设置自动切换"})]})]}),o.jsxs("div",{children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题色"}),o.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"单色"}),o.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[o.jsx(ma,{value:"blue",current:a,onChange:c,label:"蓝色",colorClass:"bg-blue-500"}),o.jsx(ma,{value:"purple",current:a,onChange:c,label:"紫色",colorClass:"bg-purple-500"}),o.jsx(ma,{value:"green",current:a,onChange:c,label:"绿色",colorClass:"bg-green-500"}),o.jsx(ma,{value:"orange",current:a,onChange:c,label:"橙色",colorClass:"bg-orange-500"}),o.jsx(ma,{value:"pink",current:a,onChange:c,label:"粉色",colorClass:"bg-pink-500"}),o.jsx(ma,{value:"red",current:a,onChange:c,label:"红色",colorClass:"bg-red-500"})]})]}),o.jsxs("div",{children:[o.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"渐变色"}),o.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[o.jsx(ma,{value:"gradient-sunset",current:a,onChange:c,label:"日落",colorClass:"bg-gradient-to-r from-orange-500 to-pink-500"}),o.jsx(ma,{value:"gradient-ocean",current:a,onChange:c,label:"海洋",colorClass:"bg-gradient-to-r from-blue-500 to-cyan-500"}),o.jsx(ma,{value:"gradient-forest",current:a,onChange:c,label:"森林",colorClass:"bg-gradient-to-r from-green-500 to-emerald-500"}),o.jsx(ma,{value:"gradient-aurora",current:a,onChange:c,label:"极光",colorClass:"bg-gradient-to-r from-purple-500 to-pink-500"}),o.jsx(ma,{value:"gradient-fire",current:a,onChange:c,label:"烈焰",colorClass:"bg-gradient-to-r from-red-500 to-orange-500"}),o.jsx(ma,{value:"gradient-twilight",current:a,onChange:c,label:"暮光",colorClass:"bg-gradient-to-r from-indigo-500 to-purple-500"})]})]}),o.jsxs("div",{children:[o.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"自定义颜色"}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 sm:gap-4",children:[o.jsx("div",{className:"flex-1",children:o.jsx("input",{type:"color",value:a.startsWith("#")?a:"#3b82f6",onChange:d=>c(d.target.value),className:"h-10 sm:h-12 w-full rounded-lg border-2 border-border cursor-pointer",title:"选择自定义颜色"})}),o.jsx("div",{className:"flex-1",children:o.jsx(Pe,{type:"text",value:a,onChange:d=>c(d.target.value),placeholder:"#3b82f6",className:"font-mono text-sm"})})]}),o.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground mt-2",children:"点击色块选择颜色,或手动输入 HEX 颜色代码"})]})]})]}),o.jsxs("div",{children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"动画效果"}),o.jsxs("div",{className:"space-y-2 sm:space-y-3",children:[o.jsx("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5 flex-1",children:[o.jsx(he,{htmlFor:"animations",className:"text-base font-medium cursor-pointer",children:"启用动画效果"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后将禁用所有过渡动画和特效,提升性能"})]}),o.jsx(Ft,{id:"animations",checked:n,onCheckedChange:r})]})}),o.jsx("div",{className:"rounded-lg border bg-card p-4",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5 flex-1",children:[o.jsx(he,{htmlFor:"waves-background",className:"text-base font-medium cursor-pointer",children:"登录页波浪背景"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后登录页将使用纯色背景,适合低性能设备"})]}),o.jsx(Ft,{id:"waves-background",checked:s,onCheckedChange:i})]})})]})]})]})}function cie(){const t=na(),[e,n]=b.useState(""),[r,s]=b.useState(""),[i,a]=b.useState(!1),[l,c]=b.useState(!1),[d,h]=b.useState(!1),[m,g]=b.useState(!1),[x,y]=b.useState(!1),[w,S]=b.useState(!1),[k,j]=b.useState(""),[N,T]=b.useState(!1),{toast:E}=Lr(),_=b.useMemo(()=>$se(r),[r]),A=()=>localStorage.getItem("access-token")||"",D=async I=>{try{await navigator.clipboard.writeText(I),y(!0),E({title:"复制成功",description:"Token 已复制到剪贴板"}),setTimeout(()=>y(!1),2e3)}catch{E({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},q=async()=>{if(!r.trim()){E({title:"输入错误",description:"请输入新的 Token",variant:"destructive"});return}if(!_.isValid){const I=_.rules.filter(V=>!V.passed).map(V=>V.label).join(", ");E({title:"格式错误",description:`Token 不符合要求: ${I}`,variant:"destructive"});return}h(!0);try{const I=A(),V=await fetch("/api/webui/auth/update",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${I}`},body:JSON.stringify({new_token:r.trim()})}),L=await V.json();V.ok&&L.success?(localStorage.setItem("access-token",r.trim()),s(""),e&&n(r.trim()),E({title:"更新成功",description:"Access Token 已更新,即将跳转到登录页"}),setTimeout(()=>{localStorage.removeItem("access-token"),t({to:"/auth"})},1500)):E({title:"更新失败",description:L.message||"无法更新 Token",variant:"destructive"})}catch(I){console.error("更新 Token 错误:",I),E({title:"更新失败",description:"连接服务器失败",variant:"destructive"})}finally{h(!1)}},B=async()=>{g(!0);try{const I=A(),V=await fetch("/api/webui/auth/regenerate",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${I}`}}),L=await V.json();V.ok&&L.success?(localStorage.setItem("access-token",L.token),n(L.token),j(L.token),S(!0),T(!1),E({title:"生成成功",description:"新的 Access Token 已生成,请及时保存"})):E({title:"生成失败",description:L.message||"无法生成新 Token",variant:"destructive"})}catch(I){console.error("生成 Token 错误:",I),E({title:"生成失败",description:"连接服务器失败",variant:"destructive"})}finally{g(!1)}},H=async()=>{try{await navigator.clipboard.writeText(k),T(!0),E({title:"复制成功",description:"Token 已复制到剪贴板"})}catch{E({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},W=()=>{S(!1),setTimeout(()=>{j(""),T(!1)},300),setTimeout(()=>{localStorage.removeItem("access-token"),t({to:"/auth"})},500)},ee=I=>{I||W()};return o.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[o.jsx(Er,{open:w,onOpenChange:ee,children:o.jsxs(wr,{className:"sm:max-w-md",children:[o.jsxs(Sr,{children:[o.jsxs(kr,{className:"flex items-center gap-2",children:[o.jsx(Ga,{className:"h-5 w-5 text-yellow-500"}),"新的 Access Token"]}),o.jsx(Xr,{children:"这是您的新 Token,请立即保存。关闭此窗口后将跳转到登录页面。"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"rounded-lg border-2 border-primary/20 bg-primary/5 p-4",children:[o.jsx(he,{className:"text-xs text-muted-foreground mb-2 block",children:"您的新 Token (64位安全令牌)"}),o.jsx("div",{className:"font-mono text-sm break-all select-all bg-background p-3 rounded border",children:k})]}),o.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Ga,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5"}),o.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[o.jsx("p",{className:"font-semibold",children:"重要提示"}),o.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[o.jsx("li",{children:"此 Token 仅显示一次,关闭后无法再查看"}),o.jsx("li",{children:"请立即复制并保存到安全的位置"}),o.jsx("li",{children:"关闭窗口后将自动跳转到登录页面"}),o.jsx("li",{children:"请使用新 Token 重新登录系统"})]})]})]})})]}),o.jsxs(fs,{className:"gap-2 sm:gap-0",children:[o.jsx(ue,{variant:"outline",onClick:H,className:"gap-2",children:N?o.jsxs(o.Fragment,{children:[o.jsx(zo,{className:"h-4 w-4 text-green-500"}),"已复制"]}):o.jsxs(o.Fragment,{children:[o.jsx(Iv,{className:"h-4 w-4"}),"复制 Token"]})}),o.jsx(ue,{onClick:W,children:"我已保存,关闭"})]})]})}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"当前 Access Token"}),o.jsx("div",{className:"space-y-3 sm:space-y-4",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"current-token",className:"text-sm",children:"您的访问令牌"}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[o.jsxs("div",{className:"relative flex-1",children:[o.jsx(Pe,{id:"current-token",type:i?"text":"password",value:e||A(),readOnly:!0,className:"pr-10 font-mono text-sm",placeholder:"点击查看按钮显示 Token"}),o.jsx("button",{onClick:()=>{e||n(A()),a(!i)},className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:i?"隐藏":"显示",children:i?o.jsx(I0,{className:"h-4 w-4 text-muted-foreground"}):o.jsx(Ji,{className:"h-4 w-4 text-muted-foreground"})})]}),o.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[o.jsx(ue,{variant:"outline",size:"icon",onClick:()=>D(A()),title:"复制到剪贴板",className:"flex-shrink-0",children:x?o.jsx(zo,{className:"h-4 w-4 text-green-500"}):o.jsx(Iv,{className:"h-4 w-4"})}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsxs(ue,{variant:"outline",disabled:m,className:"gap-2 flex-1 sm:flex-none",children:[o.jsx(Qs,{className:xe("h-4 w-4",m&&"animate-spin")}),o.jsx("span",{className:"hidden sm:inline",children:"重新生成"}),o.jsx("span",{className:"sm:hidden",children:"生成"})]})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认重新生成 Token"}),o.jsx(zn,{children:"这将生成一个新的 64 位安全令牌,并使当前 Token 立即失效。 您需要使用新 Token 重新登录系统。此操作不可撤销,确定要继续吗?"})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:B,children:"确认生成"})]})]})]})]})]}),o.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground",children:"请妥善保管您的 Access Token,不要泄露给他人"})]})})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"自定义 Access Token"}),o.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"new-token",className:"text-sm",children:"新的访问令牌"}),o.jsxs("div",{className:"relative",children:[o.jsx(Pe,{id:"new-token",type:l?"text":"password",value:r,onChange:I=>s(I.target.value),className:"pr-10 font-mono text-sm",placeholder:"输入自定义 Token"}),o.jsx("button",{onClick:()=>c(!l),className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:l?"隐藏":"显示",children:l?o.jsx(I0,{className:"h-4 w-4 text-muted-foreground"}):o.jsx(Ji,{className:"h-4 w-4 text-muted-foreground"})})]}),r&&o.jsxs("div",{className:"mt-3 space-y-2 p-3 rounded-lg bg-muted/50",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"Token 安全要求:"}),o.jsx("div",{className:"space-y-1.5",children:_.rules.map(I=>o.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[I.passed?o.jsx(Ya,{className:"h-4 w-4 text-green-500 flex-shrink-0"}):o.jsx(OI,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),o.jsx("span",{className:xe(I.passed?"text-green-600 dark:text-green-400":"text-muted-foreground"),children:I.label})]},I.id))}),_.isValid&&o.jsx("div",{className:"mt-2 pt-2 border-t border-border",children:o.jsxs("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[o.jsx(zo,{className:"h-4 w-4"}),o.jsx("span",{className:"font-medium",children:"Token 格式正确,可以使用"})]})})]})]}),o.jsx(ue,{onClick:q,disabled:d||!_.isValid||!r,className:"w-full sm:w-auto",children:d?"更新中...":"更新自定义 Token"})]})]}),o.jsxs("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3 sm:p-4",children:[o.jsx("h4",{className:"text-sm sm:text-base font-semibold text-yellow-900 dark:text-yellow-200 mb-2",children:"安全提示"}),o.jsxs("ul",{className:"text-xs sm:text-sm text-yellow-800 dark:text-yellow-300 space-y-1 list-disc list-inside",children:[o.jsx("li",{children:"重新生成 Token 会创建系统随机生成的 64 位安全令牌"}),o.jsx("li",{children:"自定义 Token 必须满足所有安全要求才能使用"}),o.jsx("li",{children:"更新 Token 后,旧的 Token 将立即失效"}),o.jsx("li",{children:"请在安全的环境下查看和复制 Token"}),o.jsx("li",{children:"如果怀疑 Token 泄露,请立即重新生成或更新"}),o.jsx("li",{children:"建议使用系统生成的 Token 以获得最高安全性"})]})]})]})}function uie(){const t=na(),{toast:e}=Lr(),[n,r]=b.useState(!1),[s,i]=b.useState(!1);if(s)throw new Error("这是一个手动触发的测试错误,用于验证错误边界组件是否正常工作。");const a=async()=>{r(!0);try{const l=localStorage.getItem("access-token"),c=await fetch("/api/webui/setup/reset",{method:"POST",headers:{Authorization:`Bearer ${l}`}}),d=await c.json();c.ok&&d.success?(e({title:"重置成功",description:"即将进入初次配置向导"}),setTimeout(()=>{t({to:"/setup"})},1e3)):e({title:"重置失败",description:d.message||"无法重置配置状态",variant:"destructive"})}catch(l){console.error("重置配置状态错误:",l),e({title:"重置失败",description:"连接服务器失败",variant:"destructive"})}finally{r(!1)}};return o.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"配置向导"}),o.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[o.jsx("div",{className:"space-y-2",children:o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"重新进行初次配置向导,可以帮助您重新设置系统的基础配置。"})}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsxs(ue,{variant:"outline",disabled:n,className:"gap-2",children:[o.jsx(zj,{className:xe("h-4 w-4",n&&"animate-spin")}),"重新进行初次配置"]})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认重新配置"}),o.jsx(zn,{children:"这将带您重新进入初次配置向导。您可以重新设置系统的基础配置项。确定要继续吗?"})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:a,children:"确认重置"})]})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border border-dashed border-yellow-500/50 bg-yellow-500/5 p-4 sm:p-6",children:[o.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[o.jsx(Ga,{className:"h-5 w-5 text-yellow-500"}),"开发者工具"]}),o.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[o.jsx("div",{className:"space-y-2",children:o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"以下功能仅供开发调试使用,可能会导致页面崩溃或异常。"})}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsxs(ue,{variant:"destructive",className:"gap-2",children:[o.jsx(Ga,{className:"h-4 w-4"}),"触发测试错误"]})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认触发错误"}),o.jsx(zn,{children:"这将手动触发一个 React 错误,用于测试错误边界组件的显示效果。 页面将显示错误界面,您可以通过刷新页面或点击返回首页来恢复。"})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>i(!0),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认触发"})]})]})]})]})]})]})}function die(){return o.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[o.jsx("div",{className:"rounded-lg border-2 border-primary/30 bg-gradient-to-r from-primary/5 to-primary/10 p-4 sm:p-6",children:o.jsxs("div",{className:"flex items-start gap-3 sm:gap-4",children:[o.jsx("div",{className:"flex-shrink-0 rounded-lg bg-primary/10 p-2 sm:p-3",children:o.jsx("svg",{className:"h-6 w-6 sm:h-8 sm:w-8 text-primary",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:o.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})})}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("h3",{className:"text-lg sm:text-xl font-bold text-foreground mb-2",children:"开源项目"}),o.jsx("p",{className:"text-sm sm:text-base text-muted-foreground mb-3",children:"本项目在 GitHub 开源,欢迎 Star ⭐ 支持!"}),o.jsxs("a",{href:"https://github.com/Mai-with-u/MaiBot-Dashboard",target:"_blank",rel:"noopener noreferrer",className:xe("inline-flex items-center gap-2 px-4 py-2 rounded-lg","bg-primary text-primary-foreground font-medium text-sm","hover:bg-primary/90 transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"),children:[o.jsx("svg",{className:"h-4 w-4",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:o.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})}),"前往 GitHub",o.jsx("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:o.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})})]})]})]})}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:["关于 ",Jj]}),o.jsxs("div",{className:"space-y-2 text-xs sm:text-sm text-muted-foreground",children:[o.jsxs("p",{children:["版本: ",Zj]}),o.jsx("p",{children:"麦麦(MaiBot)的现代化 Web 管理界面"})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"作者"}),o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx("p",{className:"text-sm font-medium",children:"MaiBot 核心"}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"Mai-with-u"})]}),o.jsxs("div",{className:"space-y-1",children:[o.jsx("p",{className:"text-sm font-medium",children:"WebUI"}),o.jsxs("p",{className:"text-xs sm:text-sm text-muted-foreground",children:["Mai-with-u ",o.jsx("a",{href:"https://github.com/DrSmoothl",target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"@MotricSeven"})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"技术栈"}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-xs sm:text-sm text-muted-foreground",children:[o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("p",{className:"font-medium text-foreground",children:"前端框架"}),o.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[o.jsx("li",{children:"React 19.2.0"}),o.jsx("li",{children:"TypeScript 5.7.2"}),o.jsx("li",{children:"Vite 6.0.7"}),o.jsx("li",{children:"TanStack Router 1.94.2"})]})]}),o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("p",{className:"font-medium text-foreground",children:"UI 组件"}),o.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[o.jsx("li",{children:"shadcn/ui"}),o.jsx("li",{children:"Radix UI"}),o.jsx("li",{children:"Tailwind CSS 3.4.17"}),o.jsx("li",{children:"Lucide Icons"})]})]}),o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("p",{className:"font-medium text-foreground",children:"后端"}),o.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[o.jsx("li",{children:"Python 3.12+"}),o.jsx("li",{children:"FastAPI"}),o.jsx("li",{children:"Uvicorn"}),o.jsx("li",{children:"WebSocket"})]})]}),o.jsxs("div",{className:"space-y-1.5",children:[o.jsx("p",{className:"font-medium text-foreground",children:"构建工具"}),o.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[o.jsx("li",{children:"Bun / npm"}),o.jsx("li",{children:"ESLint 9.17.0"}),o.jsx("li",{children:"PostCSS"})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源库感谢"}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mb-3",children:"本项目使用了以下优秀的开源库,感谢他们的贡献:"}),o.jsx(pn,{className:"h-[300px] sm:h-[400px]",children:o.jsxs("div",{className:"space-y-4 pr-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"UI 框架与组件"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Dr,{name:"React",description:"用户界面构建库",license:"MIT"}),o.jsx(Dr,{name:"shadcn/ui",description:"优雅的 React 组件库",license:"MIT"}),o.jsx(Dr,{name:"Radix UI",description:"无样式的可访问组件库",license:"MIT"}),o.jsx(Dr,{name:"Tailwind CSS",description:"实用优先的 CSS 框架",license:"MIT"}),o.jsx(Dr,{name:"Lucide React",description:"精美的图标库",license:"ISC"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"路由与状态管理"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Dr,{name:"TanStack Router",description:"类型安全的路由库",license:"MIT"}),o.jsx(Dr,{name:"Zustand",description:"轻量级状态管理",license:"MIT"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"表单处理"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Dr,{name:"React Hook Form",description:"高性能表单库",license:"MIT"}),o.jsx(Dr,{name:"Zod",description:"TypeScript 优先的 schema 验证",license:"MIT"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"工具库"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Dr,{name:"clsx",description:"条件 className 构建工具",license:"MIT"}),o.jsx(Dr,{name:"tailwind-merge",description:"Tailwind 类名合并工具",license:"MIT"}),o.jsx(Dr,{name:"class-variance-authority",description:"组件变体管理",license:"Apache-2.0"}),o.jsx(Dr,{name:"date-fns",description:"现代化日期处理库",license:"MIT"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"动画效果"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Dr,{name:"Framer Motion",description:"React 动画库",license:"MIT"}),o.jsx(Dr,{name:"vaul",description:"抽屉组件动画",license:"MIT"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"后端框架"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Dr,{name:"FastAPI",description:"现代化 Python Web 框架",license:"MIT"}),o.jsx(Dr,{name:"Uvicorn",description:"ASGI 服务器",license:"BSD-3-Clause"}),o.jsx(Dr,{name:"Pydantic",description:"数据验证库",license:"MIT"}),o.jsx(Dr,{name:"python-multipart",description:"文件上传支持",license:"Apache-2.0"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("p",{className:"text-sm font-medium text-foreground",children:"开发工具"}),o.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[o.jsx(Dr,{name:"TypeScript",description:"JavaScript 的超集",license:"Apache-2.0"}),o.jsx(Dr,{name:"Vite",description:"下一代前端构建工具",license:"MIT"}),o.jsx(Dr,{name:"ESLint",description:"JavaScript 代码检查工具",license:"MIT"}),o.jsx(Dr,{name:"PostCSS",description:"CSS 转换工具",license:"MIT"})]})]})]})})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[o.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源许可"}),o.jsxs("div",{className:"space-y-3",children:[o.jsx("div",{className:"rounded-lg bg-primary/5 border border-primary/20 p-3 sm:p-4",children:o.jsxs("div",{className:"flex items-start gap-2 sm:gap-3",children:[o.jsx("div",{className:"flex-shrink-0 mt-0.5",children:o.jsx("div",{className:"rounded-md bg-primary/10 px-2 py-1",children:o.jsx("span",{className:"text-xs sm:text-sm font-bold text-primary",children:"GPLv3"})})}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("p",{className:"text-sm sm:text-base font-semibold text-foreground mb-1",children:"MaiBot WebUI"}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目采用 GNU General Public License v3.0 开源许可证。 您可以自由地使用、修改和分发本软件,但必须保持相同的开源许可。"})]})]})}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目依赖的所有开源库均遵循各自的开源许可证(MIT、Apache-2.0、BSD 等)。 感谢所有开源贡献者的无私奉献。"})]})]})]})}function Dr({name:t,description:e,license:n}){return o.jsxs("div",{className:"flex items-start justify-between gap-2 rounded-lg border bg-muted/30 p-2.5 sm:p-3",children:[o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("p",{className:"font-medium text-foreground truncate",children:t}),o.jsx("p",{className:"text-muted-foreground text-xs mt-0.5",children:e})]}),o.jsx("span",{className:"inline-flex items-center rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-medium text-primary flex-shrink-0",children:n})]})}function P4({value:t,current:e,onChange:n,label:r,description:s}){const i=e===t;return o.jsxs("button",{onClick:()=>n(t),className:xe("relative rounded-lg border-2 p-3 sm:p-4 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",i?"border-primary bg-accent":"border-border"),children:[i&&o.jsx("div",{className:"absolute top-2 right-2 sm:top-3 sm:right-3 h-2 w-2 rounded-full bg-primary"}),o.jsxs("div",{className:"space-y-1",children:[o.jsx("div",{className:"text-sm sm:text-base font-medium",children:r}),o.jsx("div",{className:"text-[10px] sm:text-xs text-muted-foreground",children:s})]}),o.jsxs("div",{className:"mt-2 sm:mt-3 flex gap-1",children:[t==="light"&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-200"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-300"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-400"})]}),t==="dark"&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-700"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-800"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-900"})]}),t==="system"&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-200 to-slate-700"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-300 to-slate-800"}),o.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-400 to-slate-900"})]})]})]})}function ma({value:t,current:e,onChange:n,label:r,colorClass:s}){const i=e===t;return o.jsxs("button",{onClick:()=>n(t),className:xe("relative rounded-lg border-2 p-2 sm:p-3 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",i?"border-primary bg-accent":"border-border"),children:[i&&o.jsx("div",{className:"absolute top-1.5 right-1.5 sm:top-2 sm:right-2 h-1.5 w-1.5 sm:h-2 sm:w-2 rounded-full bg-primary"}),o.jsxs("div",{className:"flex flex-col items-center gap-1.5 sm:gap-2",children:[o.jsx("div",{className:xe("h-8 w-8 sm:h-10 sm:w-10 rounded-full",s)}),o.jsx("div",{className:"text-[10px] sm:text-xs font-medium text-center",children:r})]})]})}class hie{grad3;p;perm;constructor(e=0){this.grad3=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],this.p=[];for(let n=0;n<256;n++)this.p[n]=Math.floor(Math.random()*256);this.perm=[];for(let n=0;n<512;n++)this.perm[n]=this.p[n&255]}dot(e,n,r){return e[0]*n+e[1]*r}mix(e,n,r){return(1-r)*e+r*n}fade(e){return e*e*e*(e*(e*6-15)+10)}perlin2(e,n){const r=Math.floor(e)&255,s=Math.floor(n)&255;e-=Math.floor(e),n-=Math.floor(n);const i=this.fade(e),a=this.fade(n),l=this.perm[r]+s,c=this.perm[l],d=this.perm[l+1],h=this.perm[r+1]+s,m=this.perm[h],g=this.perm[h+1];return this.mix(this.mix(this.dot(this.grad3[c%12],e,n),this.dot(this.grad3[m%12],e-1,n),i),this.mix(this.dot(this.grad3[d%12],e,n-1),this.dot(this.grad3[g%12],e-1,n-1),i),a)}}function fie(){const t=b.useRef(null),e=b.useRef(null),n=b.useRef(void 0),r=b.useRef({mouse:{x:-10,y:0,lx:0,ly:0,sx:0,sy:0,v:0,vs:0,a:0,set:!1},lines:[],paths:[],noise:new hie(Math.random()),bounding:null});return b.useEffect(()=>{const s=e.current,i=t.current;if(!s||!i)return;const a=r.current,l=()=>{const w=s.getBoundingClientRect();a.bounding=w,i.style.width=`${w.width}px`,i.style.height=`${w.height}px`},c=()=>{if(!a.bounding)return;const{width:w,height:S}=a.bounding;a.lines=[],a.paths.forEach(q=>q.remove()),a.paths=[];const k=10,j=32,N=w+200,T=S+30,E=Math.ceil(N/k),_=Math.ceil(T/j),A=(w-k*E)/2,D=(S-j*_)/2;for(let q=0;q<=E;q++){const B=[];for(let W=0;W<=_;W++){const ee={x:A+k*q,y:D+j*W,wave:{x:0,y:0},cursor:{x:0,y:0,vx:0,vy:0}};B.push(ee)}const H=document.createElementNS("http://www.w3.org/2000/svg","path");i.appendChild(H),a.paths.push(H),a.lines.push(B)}},d=w=>{const{lines:S,mouse:k,noise:j}=a;S.forEach(N=>{N.forEach(T=>{const E=j.perlin2((T.x+w*.0125)*.002,(T.y+w*.005)*.0015)*12;T.wave.x=Math.cos(E)*32,T.wave.y=Math.sin(E)*16;const _=T.x-k.sx,A=T.y-k.sy,D=Math.hypot(_,A),q=Math.max(175,k.vs);if(D{const k={x:w.x+w.wave.x+(S?w.cursor.x:0),y:w.y+w.wave.y+(S?w.cursor.y:0)};return k.x=Math.round(k.x*10)/10,k.y=Math.round(k.y*10)/10,k},m=()=>{const{lines:w,paths:S}=a;w.forEach((k,j)=>{let N=h(k[0],!1),T=`M ${N.x} ${N.y}`;k.forEach((E,_)=>{const A=_===k.length-1;N=h(E,!A),T+=`L ${N.x} ${N.y}`}),S[j].setAttribute("d",T)})},g=w=>{const{mouse:S}=a;S.sx+=(S.x-S.sx)*.1,S.sy+=(S.y-S.sy)*.1;const k=S.x-S.lx,j=S.y-S.ly,N=Math.hypot(k,j);S.v=N,S.vs+=(N-S.vs)*.1,S.vs=Math.min(100,S.vs),S.lx=S.x,S.ly=S.y,S.a=Math.atan2(j,k),s&&(s.style.setProperty("--x",`${S.sx}px`),s.style.setProperty("--y",`${S.sy}px`)),d(w),m(),n.current=requestAnimationFrame(g)},x=w=>{if(!a.bounding)return;const{mouse:S}=a;S.x=w.pageX-a.bounding.left,S.y=w.pageY-a.bounding.top+window.scrollY,S.set||(S.sx=S.x,S.sy=S.y,S.lx=S.x,S.ly=S.y,S.set=!0)},y=()=>{l(),c()};return l(),c(),window.addEventListener("resize",y),window.addEventListener("mousemove",x),n.current=requestAnimationFrame(g),()=>{window.removeEventListener("resize",y),window.removeEventListener("mousemove",x),n.current&&cancelAnimationFrame(n.current)}},[]),o.jsxs("div",{ref:e,className:"waves-background",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflow:"hidden",pointerEvents:"none"},children:[o.jsx("div",{className:"waves-cursor",style:{position:"absolute",top:0,left:0,width:"0.5rem",height:"0.5rem",background:"hsl(var(--primary) / 0.3)",borderRadius:"50%",transform:"translate3d(calc(var(--x, -0.5rem) - 50%), calc(var(--y, 50%) - 50%), 0)",willChange:"transform",pointerEvents:"none"}}),o.jsx("svg",{ref:t,style:{display:"block",width:"100%",height:"100%"},children:o.jsx("style",{children:` - path { - fill: none; - stroke: hsl(var(--primary) / 0.20); - stroke-width: 1px; - } - `})})]})}function mie(){const t=na();b.useEffect(()=>{localStorage.getItem("access-token")||t({to:"/auth"})},[t])}function AB(){return!!localStorage.getItem("access-token")}function pie(){const[t,e]=b.useState(""),[n,r]=b.useState(!1),[s,i]=b.useState(""),a=na(),{enableWavesBackground:l,setEnableWavesBackground:c}=rB(),{theme:d,setTheme:h}=Kj();b.useEffect(()=>{AB()&&a({to:"/"})},[a]);const g=d==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":d,x=()=>{h(g==="dark"?"light":"dark")},y=async w=>{if(w.preventDefault(),i(""),!t.trim()){i("请输入 Access Token");return}r(!0);try{const S=await fetch("/api/webui/auth/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:t.trim()})}),k=await S.json();if(S.ok&&k.valid){localStorage.setItem("access-token",t.trim());const j=await fetch("/api/webui/setup/status",{method:"GET",headers:{Authorization:`Bearer ${t.trim()}`}}),N=await j.json();j.ok&&N.is_first_setup?a({to:"/setup"}):a({to:"/"})}else i(k.message||"Token 验证失败,请检查后重试")}catch(S){console.error("Token 验证错误:",S),i("连接服务器失败,请检查网络连接")}finally{r(!1)}};return o.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[l&&o.jsx(fie,{}),o.jsxs(Lt,{className:"relative z-10 w-full max-w-md shadow-2xl backdrop-blur-xl bg-card/80 border-border/50",children:[o.jsx("button",{onClick:x,className:"absolute right-4 top-4 rounded-lg p-2 hover:bg-accent transition-colors z-10 text-foreground",title:g==="dark"?"切换到浅色模式":"切换到深色模式",children:g==="dark"?o.jsx(ik,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"}):o.jsx(ak,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"})}),o.jsxs(En,{className:"space-y-4 text-center",children:[o.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-2xl bg-primary/10",children:o.jsx(j9,{className:"h-8 w-8 text-primary",strokeWidth:2,fill:"none"})}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(_n,{className:"text-2xl font-bold",children:"欢迎使用 MaiBot"}),o.jsx(Wr,{className:"text-base",children:"请输入您的 Access Token 以继续访问系统"})]})]}),o.jsx(Xn,{children:o.jsxs("form",{onSubmit:y,className:"space-y-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"token",className:"text-sm font-medium",children:"Access Token"}),o.jsxs("div",{className:"relative",children:[o.jsx(jI,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground",strokeWidth:2,fill:"none"}),o.jsx(Pe,{id:"token",type:"password",placeholder:"请输入您的 Access Token",value:t,onChange:w=>e(w.target.value),className:xe("pl-10",s&&"border-red-500 focus-visible:ring-red-500"),disabled:n,autoFocus:!0,autoComplete:"off"})]})]}),s&&o.jsxs("div",{className:"flex items-center gap-2 rounded-md bg-red-50 p-3 text-sm text-red-600 dark:bg-red-950/50 dark:text-red-400",children:[o.jsx(Lo,{className:"h-4 w-4 flex-shrink-0",strokeWidth:2,fill:"none"}),o.jsx("span",{children:s})]}),o.jsx(ue,{type:"submit",className:"w-full",disabled:n,children:n?o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent"}),"验证中..."]}):"验证并进入"}),o.jsxs(Er,{children:[o.jsx(Of,{asChild:!0,children:o.jsxs("button",{className:"w-full text-center text-sm text-primary hover:text-primary/80 transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[o.jsx(Zy,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我没有 Token,我该去哪里获得 Token?"]})}),o.jsxs(wr,{className:"sm:max-w-md",children:[o.jsxs(Sr,{children:[o.jsxs(kr,{className:"flex items-center gap-2",children:[o.jsx(j9,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"如何获取 Access Token"]}),o.jsx(Xr,{children:"Access Token 是访问 MaiBot WebUI 的唯一凭证,请按以下方式获取"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Vee,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),o.jsxs("div",{className:"flex-1 space-y-2",children:[o.jsx("h4",{className:"font-semibold text-sm",children:"方式一:查看启动日志"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"在 MaiBot 启动时,控制台会显示 WebUI Access Token。"}),o.jsxs("div",{className:"rounded bg-background p-2 font-mono text-xs",children:[o.jsx("p",{className:"text-muted-foreground",children:"🔑 WebUI Access Token: abc123..."}),o.jsx("p",{className:"text-muted-foreground",children:"💡 请使用此 Token 登录 WebUI"})]})]})]})}),o.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Po,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),o.jsxs("div",{className:"flex-1 space-y-2",children:[o.jsx("h4",{className:"font-semibold text-sm",children:"方式二:查看配置文件"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"Token 保存在项目根目录的配置文件中:"}),o.jsx("div",{className:"rounded bg-background p-2 font-mono text-xs break-all",children:o.jsx("code",{className:"text-primary",children:"data/webui.json"})}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:["打开此文件,复制 ",o.jsx("code",{className:"px-1 py-0.5 bg-background rounded",children:"access_token"})," 字段的值"]})]})]})}),o.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Lo,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),o.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[o.jsx("p",{className:"font-semibold",children:"安全提示"}),o.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[o.jsx("li",{children:"请妥善保管您的 Token,不要泄露给他人"}),o.jsx("li",{children:"如需重置 Token,请在登录后前往系统设置"})]})]})]})})]})]})]}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsxs("button",{className:"w-full text-center text-sm text-muted-foreground hover:text-foreground transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[o.jsx(Zu,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我觉得这个界面很卡怎么办?"]})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsxs(Pn,{className:"flex items-center gap-2",children:[o.jsx(Zu,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"关闭背景动画"]}),o.jsx(zn,{children:"背景动画可能会在低性能设备上造成卡顿。关闭动画可以显著提升界面流畅度。"})]}),o.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:o.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭动画后,背景将变为纯色,但不影响任何功能的使用。您可以随时在系统设置中重新开启动画。"})}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>c(!1),children:"关闭动画"})]})]})]})]})})]}),o.jsx("div",{className:"absolute bottom-4 left-0 right-0 text-center text-xs text-muted-foreground",children:o.jsx("p",{children:Hse})})]})}const Nr=b.forwardRef(({className:t,...e},n)=>o.jsx("textarea",{className:xe("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",t),ref:n,...e}));Nr.displayName="Textarea";var gie=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],xie=gie.reduce((t,e)=>{const n=Vy(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...l}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(c,{...l,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),vie="Separator",cE="horizontal",yie=["horizontal","vertical"],MB=b.forwardRef((t,e)=>{const{decorative:n,orientation:r=cE,...s}=t,i=bie(r)?r:cE,l=n?{role:"none"}:{"aria-orientation":i==="vertical"?i:void 0,role:"separator"};return o.jsx(xie.div,{"data-orientation":i,...l,...s,ref:e})});MB.displayName=vie;function bie(t){return yie.includes(t)}var RB=MB;const $0=b.forwardRef(({className:t,orientation:e="horizontal",decorative:n=!0,...r},s)=>o.jsx(RB,{ref:s,decorative:n,orientation:e,className:xe("shrink-0 bg-border",e==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",t),...r}));$0.displayName=RB.displayName;function wie({config:t,onChange:e}){const n=s=>{s.trim()&&!t.alias_names.includes(s.trim())&&e({...t,alias_names:[...t.alias_names,s.trim()]})},r=s=>{e({...t,alias_names:t.alias_names.filter((i,a)=>a!==s)})};return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"qq_account",children:"QQ账号 *"}),o.jsx(Pe,{id:"qq_account",type:"number",placeholder:"请输入机器人的QQ账号",value:t.qq_account||"",onChange:s=>e({...t,qq_account:Number(s.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人登录使用的QQ账号"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"nickname",children:"昵称 *"}),o.jsx(Pe,{id:"nickname",placeholder:"请输入机器人的昵称",value:t.nickname,onChange:s=>e({...t,nickname:s.target.value})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的主要称呼名称"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{children:"别名"}),o.jsx("div",{className:"flex flex-wrap gap-2 mb-2",children:t.alias_names.map((s,i)=>o.jsxs(tn,{variant:"secondary",className:"gap-1",children:[s,o.jsx("button",{type:"button",onClick:()=>r(i),className:"ml-1 hover:text-destructive",children:o.jsx(Pp,{className:"h-3 w-3"})})]},i))}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Pe,{id:"alias_input",placeholder:"输入别名后按回车添加",onKeyPress:s=>{s.key==="Enter"&&(n(s.target.value),s.target.value="")}}),o.jsx(ue,{type:"button",variant:"outline",onClick:()=>{const s=document.getElementById("alias_input");s&&(n(s.value),s.value="")},children:"添加"})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的其他称呼,可以添加多个"})]})]})}function Sie({config:t,onChange:e}){return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"personality",children:"人格特征 *"}),o.jsx(Nr,{id:"personality",placeholder:"描述机器人的人格特质和身份特征(建议120字以内)",value:t.personality,onChange:n=>e({...t,personality:n.target.value}),rows:3}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:是一个女大学生,现在在读大二,会刷贴吧"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"reply_style",children:"表达风格 *"}),o.jsx(Nr,{id:"reply_style",placeholder:"描述机器人说话的表达风格、表达习惯",value:t.reply_style,onChange:n=>e({...t,reply_style:n.target.value}),rows:3}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:回复平淡一些,简短一些,说中文,参考贴吧、知乎和微博的回复风格"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"interest",children:"兴趣 *"}),o.jsx(Nr,{id:"interest",placeholder:"描述机器人感兴趣的话题",value:t.interest,onChange:n=>e({...t,interest:n.target.value}),rows:2}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"会影响机器人对什么话题进行回复"})]}),o.jsx($0,{}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"plan_style",children:"群聊说话规则 *"}),o.jsx(Nr,{id:"plan_style",placeholder:"机器人在群聊中的行为风格和规则",value:t.plan_style,onChange:n=>e({...t,plan_style:n.target.value}),rows:4}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在群聊中如何行动,例如回复频率、条件等"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"private_plan_style",children:"私聊说话规则 *"}),o.jsx(Nr,{id:"private_plan_style",placeholder:"机器人在私聊中的行为风格和规则",value:t.private_plan_style,onChange:n=>e({...t,private_plan_style:n.target.value}),rows:3}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在私聊中的行为方式"})]})]})}function kie({config:t,onChange:e}){return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{htmlFor:"emoji_chance",children:"表情包激活概率"}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:[(t.emoji_chance*100).toFixed(0),"%"]})]}),o.jsx(Pe,{id:"emoji_chance",type:"range",min:"0",max:"1",step:"0.1",value:t.emoji_chance,onChange:n=>e({...t,emoji_chance:Number(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人发送表情包的概率"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"max_reg_num",children:"最大表情包数量"}),o.jsx(Pe,{id:"max_reg_num",type:"number",min:"1",max:"200",value:t.max_reg_num,onChange:n=>e({...t,max_reg_num:Number(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人最多保存的表情包数量"})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(he,{htmlFor:"do_replace",children:"达到最大数量时替换"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"开启后会删除旧表情包,关闭则不再收集新表情包"})]}),o.jsx(Ft,{id:"do_replace",checked:t.do_replace,onCheckedChange:n=>e({...t,do_replace:n})})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),o.jsx(Pe,{id:"check_interval",type:"number",min:"1",max:"120",value:t.check_interval,onChange:n=>e({...t,check_interval:Number(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包注册、破损、删除的时间间隔"})]}),o.jsx($0,{}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(he,{htmlFor:"steal_emoji",children:"偷取表情包"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人将一些表情包据为己有"})]}),o.jsx(Ft,{id:"steal_emoji",checked:t.steal_emoji,onCheckedChange:n=>e({...t,steal_emoji:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(he,{htmlFor:"content_filtration",children:"启用表情包过滤"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"只保存符合要求的表情包"})]}),o.jsx(Ft,{id:"content_filtration",checked:t.content_filtration,onCheckedChange:n=>e({...t,content_filtration:n})})]}),t.content_filtration&&o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"filtration_prompt",children:"过滤要求"}),o.jsx(Pe,{id:"filtration_prompt",placeholder:"例如:符合公序良俗",value:t.filtration_prompt,onChange:n=>e({...t,filtration_prompt:n.target.value})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"描述表情包应该符合的要求"})]})]})}function Oie({config:t,onChange:e}){return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(he,{htmlFor:"enable_tool",children:"启用工具系统"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人使用各种工具增强功能"})]}),o.jsx(Ft,{id:"enable_tool",checked:t.enable_tool,onCheckedChange:n=>e({...t,enable_tool:n})})]}),o.jsx($0,{}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(he,{htmlFor:"enable_mood",children:"启用情绪系统"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"让机器人具有情绪变化能力"})]}),o.jsx(Ft,{id:"enable_mood",checked:t.enable_mood,onCheckedChange:n=>e({...t,enable_mood:n})})]}),t.enable_mood&&o.jsxs("div",{className:"ml-6 space-y-6 border-l-2 border-primary/20 pl-6",children:[o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"mood_update_threshold",children:"情绪更新阈值"}),o.jsx(Pe,{id:"mood_update_threshold",type:"number",min:"0.1",max:"10",step:"0.1",value:t.mood_update_threshold||1,onChange:n=>e({...t,mood_update_threshold:Number(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"值越高,情绪更新越慢"})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"emotion_style",children:"情感特征"}),o.jsx(Nr,{id:"emotion_style",placeholder:"描述情绪的变化情况,例如:情绪较为稳定,但遭遇特定事件时起伏较大",value:t.emotion_style||"",onChange:n=>e({...t,emotion_style:n.target.value}),rows:2}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"影响机器人的情绪变化方式"})]})]}),o.jsx($0,{}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx(he,{htmlFor:"all_global",children:"启用全局黑话模式"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人学习和使用群组黑话"})]}),o.jsx(Ft,{id:"all_global",checked:t.all_global,onCheckedChange:n=>e({...t,all_global:n})})]})]})}function jie({config:t,onChange:e}){const[n,r]=b.useState(!1);return o.jsxs("div",{className:"space-y-6",children:[o.jsx("div",{className:"rounded-lg bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-4",children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx("div",{className:"mt-0.5",children:o.jsx("svg",{className:"h-5 w-5 text-blue-600 dark:text-blue-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:o.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),o.jsxs("div",{className:"flex-1 text-sm",children:[o.jsx("p",{className:"font-medium text-blue-900 dark:text-blue-100 mb-1",children:"关于硅基流动 (SiliconFlow)"}),o.jsx("p",{className:"text-blue-700 dark:text-blue-300 mb-2",children:"硅基流动提供了完整的模型覆盖,包括 DeepSeek V3、Qwen、视觉模型、语音识别和嵌入模型。 只需一个 API Key 即可使用麦麦的所有功能!"}),o.jsxs("a",{href:"https://cloud.siliconflow.cn",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-blue-600 dark:text-blue-400 hover:underline font-medium",children:["前往硅基流动获取 API Key",o.jsx(w0,{className:"h-3 w-3"})]})]})]})}),o.jsxs("div",{className:"space-y-3",children:[o.jsx(he,{htmlFor:"siliconflow_api_key",children:"SiliconFlow API Key *"}),o.jsxs("div",{className:"relative",children:[o.jsx(Pe,{id:"siliconflow_api_key",type:n?"text":"password",placeholder:"sk-...",value:t.api_key,onChange:s=>e({api_key:s.target.value}),className:"font-mono pr-10"}),o.jsx(ue,{type:"button",variant:"ghost",size:"sm",className:"absolute right-0 top-0 h-full px-3 hover:bg-transparent",onClick:()=>r(!n),children:n?o.jsx(I0,{className:"h-4 w-4 text-muted-foreground"}):o.jsx(Ji,{className:"h-4 w-4 text-muted-foreground"})})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"请输入您的硅基流动 API 密钥。获取后,麦麦将自动配置所有必需的模型。"})]}),o.jsxs("div",{className:"rounded-lg bg-muted/50 p-4 text-sm space-y-2",children:[o.jsx("p",{className:"font-medium",children:"将自动配置以下模型:"}),o.jsxs("ul",{className:"list-disc list-inside space-y-1 text-muted-foreground ml-2",children:[o.jsx("li",{children:"DeepSeek V3 - 主要对话和工具模型"}),o.jsx("li",{children:"Qwen3 30B - 高频小任务和工具调用"}),o.jsx("li",{children:"Qwen3 VL 30B - 图像识别"}),o.jsx("li",{children:"SenseVoice - 语音识别"}),o.jsx("li",{children:"BGE-M3 - 文本嵌入"}),o.jsx("li",{children:"知识库相关模型 (LPMM)"})]})]}),o.jsx("div",{className:"rounded-lg border border-amber-200 dark:border-amber-800 bg-amber-50 dark:bg-amber-950/30 p-4",children:o.jsxs("p",{className:"text-sm text-amber-900 dark:text-amber-100",children:[o.jsx("span",{className:"font-medium",children:"💡 提示:"}),'完成向导后,您可以在"系统设置 → 模型配置"中添加更多 API 提供商和模型。']})})]})}async function gt(t,e){const n=await fetch(t,e);if(n.status===401)throw localStorage.removeItem("access-token"),window.location.href="/auth",new Error("认证失败,请重新登录");return n}function Tt(){return{"Content-Type":"application/json",Authorization:`Bearer ${localStorage.getItem("access-token")}`}}async function Nie(){const t=await gt("/api/webui/config/bot",{method:"GET",headers:Tt()});if(!t.ok)throw new Error("读取Bot配置失败");const n=(await t.json()).config.bot||{};return{qq_account:n.qq_account||0,nickname:n.nickname||"",alias_names:n.alias_names||[]}}async function Cie(){const t=await gt("/api/webui/config/bot",{method:"GET",headers:Tt()});if(!t.ok)throw new Error("读取人格配置失败");const n=(await t.json()).config.personality||{};return{personality:n.personality||"",reply_style:n.reply_style||"",interest:n.interest||"",plan_style:n.plan_style||"",private_plan_style:n.private_plan_style||""}}async function Tie(){const t=await gt("/api/webui/config/bot",{method:"GET",headers:Tt()});if(!t.ok)throw new Error("读取表情包配置失败");const n=(await t.json()).config.emoji||{};return{emoji_chance:n.emoji_chance??.4,max_reg_num:n.max_reg_num??40,do_replace:n.do_replace??!0,check_interval:n.check_interval??10,steal_emoji:n.steal_emoji??!0,content_filtration:n.content_filtration??!1,filtration_prompt:n.filtration_prompt||""}}async function Eie(){const t=await gt("/api/webui/config/bot",{method:"GET",headers:Tt()});if(!t.ok)throw new Error("读取其他配置失败");const n=(await t.json()).config,r=n.tool||{},s=n.mood||{},i=n.jargon||{};return{enable_tool:r.enable_tool??!0,enable_mood:s.enable_mood??!1,mood_update_threshold:s.mood_update_threshold,emotion_style:s.emotion_style,all_global:i.all_global??!0}}async function _ie(){const t=await gt("/api/webui/config/model",{method:"GET",headers:Tt()});if(!t.ok)throw new Error("读取模型配置失败");return{api_key:((await t.json()).config.api_providers||[]).find(i=>i.name==="SiliconFlow")?.api_key||""}}async function Aie(t){const e=await gt("/api/webui/config/bot/section/bot",{method:"POST",headers:Tt(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"保存Bot基础配置失败")}return await e.json()}async function Mie(t){const e=await gt("/api/webui/config/bot/section/personality",{method:"POST",headers:Tt(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"保存人格配置失败")}return await e.json()}async function Rie(t){const e=await gt("/api/webui/config/bot/section/emoji",{method:"POST",headers:Tt(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"保存表情包配置失败")}return await e.json()}async function Die(t){const e=[];e.push(gt("/api/webui/config/bot/section/tool",{method:"POST",headers:Tt(),body:JSON.stringify({enable_tool:t.enable_tool})})),e.push(gt("/api/webui/config/bot/section/jargon",{method:"POST",headers:Tt(),body:JSON.stringify({all_global:t.all_global})}));const n={enable_mood:t.enable_mood};t.enable_mood&&(n.mood_update_threshold=t.mood_update_threshold||1,n.emotion_style=t.emotion_style||""),e.push(gt("/api/webui/config/bot/section/mood",{method:"POST",headers:Tt(),body:JSON.stringify(n)}));const r=await Promise.all(e);for(const s of r)if(!s.ok){const i=await s.json();throw new Error(i.detail||"保存其他配置失败")}return{success:!0}}async function Pie(t){const e=await gt("/api/webui/config/model",{method:"GET",headers:Tt()});if(!e.ok)throw new Error("读取模型配置失败");const r=(await e.json()).config,s=r.api_providers||[],i=s.findIndex(c=>c.name==="SiliconFlow");i>=0?s[i]={...s[i],api_key:t.api_key}:s.push({name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",api_key:t.api_key,client_type:"openai",max_retry:3,timeout:120,retry_interval:5});const a={...r,api_providers:s},l=await gt("/api/webui/config/model",{method:"POST",headers:Tt(),body:JSON.stringify(a)});if(!l.ok){const c=await l.json();throw new Error(c.detail||"保存模型配置失败")}return await l.json()}async function uE(){const t=localStorage.getItem("access-token"),e=await gt("/api/webui/setup/complete",{method:"POST",headers:{Authorization:`Bearer ${t}`}});if(!e.ok){const n=await e.json();throw new Error(n.message||"标记配置完成失败")}return await e.json()}async function cb(){const t=await gt("/api/webui/system/restart",{method:"POST",headers:Tt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"重启失败")}return await t.json()}async function zie(){const t=await gt("/api/webui/system/status",{method:"GET",headers:Tt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取状态失败")}return await t.json()}function Iie(){const t=na(),{toast:e}=Lr(),[n,r]=b.useState(0),[s,i]=b.useState(!1),[a,l]=b.useState(!1),[c,d]=b.useState(!0),[h,m]=b.useState({qq_account:0,nickname:"",alias_names:[]}),[g,x]=b.useState({personality:"是一个女大学生,现在在读大二,会刷贴吧。",reply_style:"请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景。可以参考贴吧,知乎和微博的回复风格。",interest:"对技术相关话题,游戏和动漫相关话题感兴趣,也对日常话题感兴趣,不喜欢太过沉重严肃的话题",plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 -2.如果相同的内容已经被执行,请不要重复执行 -3.请控制你的发言频率,不要太过频繁的发言 -4.如果有人对你感到厌烦,请减少回复 -5.如果有人对你进行攻击,或者情绪激动,请你以合适的方法应对`,private_plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 -2.如果相同的内容已经被执行,请不要重复执行 -3.某句话如果已经被回复过,不要重复回复`}),[y,w]=b.useState({emoji_chance:.4,max_reg_num:40,do_replace:!0,check_interval:10,steal_emoji:!0,content_filtration:!1,filtration_prompt:"符合公序良俗"}),[S,k]=b.useState({enable_tool:!0,enable_mood:!1,mood_update_threshold:1,emotion_style:"情绪较为稳定,但遇遇特定事件的时候起伏较大",all_global:!0}),[j,N]=b.useState({api_key:""}),[T,E]=b.useState(!1),[_,A]=b.useState(""),D=[{id:"bot-basic",title:"Bot基础",description:"配置机器人的基本信息",icon:o0},{id:"personality",title:"人格配置",description:"定义机器人的性格和说话风格",icon:Lv},{id:"emoji",title:"表情包",description:"配置表情包相关设置",icon:Ij},{id:"other",title:"其他设置",description:"工具、情绪系统等配置",icon:Vc},{id:"siliconflow",title:"API配置",description:"配置硅基流动API密钥",icon:jI}],q=(n+1)/D.length*100;b.useEffect(()=>{(async()=>{try{d(!0);const[$,K,Y,R,ie]=await Promise.all([Nie(),Cie(),Tie(),Eie(),_ie()]);m($),x(K),w(Y),k(R),N(ie)}catch($){e({title:"加载配置失败",description:$ instanceof Error?$.message:"无法加载现有配置,将使用默认值",variant:"destructive"})}finally{d(!1)}})()},[e]);const B=async()=>{l(!0);try{switch(n){case 0:await Aie(h);break;case 1:await Mie(g);break;case 2:await Rie(y);break;case 3:await Die(S);break;case 4:await Pie(j);break}return e({title:"保存成功",description:`${D[n].title}配置已保存`}),!0}catch(L){return e({title:"保存失败",description:L instanceof Error?L.message:"未知错误",variant:"destructive"}),!1}finally{l(!1)}},H=async()=>{await B()&&n{n>0&&r(n-1)},ee=async()=>{i(!0),E(!0);try{if(A("正在保存API配置..."),!await B()){i(!1),E(!1);return}A("正在完成初始化..."),await uE(),A("正在重启麦麦..."),await cb(),e({title:"配置完成",description:"麦麦正在重启以应用新配置..."}),A("等待麦麦重启完成...");const $=60;let K=0,Y=!1;for(;K<$&&!Y;){await new Promise(R=>setTimeout(R,1e3));try{(await zie()).running&&(Y=!0,A("重启成功!正在跳转..."))}catch{K++}}if(!Y)throw new Error("重启超时,请手动检查麦麦状态");setTimeout(()=>{t({to:"/"})},1e3)}catch(L){E(!1),e({title:"配置失败",description:L instanceof Error?L.message:"未知错误",variant:"destructive"})}finally{i(!1)}},I=async()=>{try{await uE(),t({to:"/"})}catch(L){e({title:"跳过失败",description:L instanceof Error?L.message:"未知错误",variant:"destructive"})}},V=()=>{switch(n){case 0:return o.jsx(wie,{config:h,onChange:m});case 1:return o.jsx(Sie,{config:g,onChange:x});case 2:return o.jsx(kie,{config:y,onChange:w});case 3:return o.jsx(Oie,{config:S,onChange:k});case 4:return o.jsx(jie,{config:j,onChange:N});default:return null}};return o.jsxs("div",{className:"relative flex min-h-screen flex-col items-center justify-center overflow-hidden bg-gradient-to-br from-primary/5 via-background to-secondary/5 p-4 md:p-6",children:[T&&o.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm",children:o.jsxs("div",{className:"mx-auto flex max-w-md flex-col items-center space-y-6 rounded-lg border bg-card p-8 text-center shadow-lg",children:[o.jsx("div",{className:"flex h-20 w-20 items-center justify-center rounded-full bg-primary/10",children:o.jsx(Us,{className:"h-10 w-10 animate-spin text-primary"})}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),o.jsx("p",{className:"text-muted-foreground",children:_})]}),o.jsx("div",{className:"w-full",children:o.jsx("div",{className:"h-2 w-full overflow-hidden rounded-full bg-secondary",children:o.jsx("div",{className:"h-full w-full animate-pulse bg-primary",style:{animation:"pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite"}})})}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"请稍候,这可能需要一分钟..."})]})}),o.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[o.jsx("div",{className:"absolute left-1/4 top-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-primary/5 blur-3xl"}),o.jsx("div",{className:"absolute right-1/4 bottom-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-secondary/5 blur-3xl"})]}),c?o.jsxs("div",{className:"relative z-10 text-center",children:[o.jsx("div",{className:"mx-auto mb-4 flex h-16 w-16 items-center justify-center",children:o.jsx("div",{className:"h-12 w-12 animate-spin rounded-full border-4 border-primary border-t-transparent"})}),o.jsx("p",{className:"text-lg font-medium",children:"加载配置中..."}),o.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"正在读取现有配置"})]}):o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"relative z-10 w-full max-w-4xl",children:[o.jsxs("div",{className:"mb-6 md:mb-8 text-center",children:[o.jsx("div",{className:"mx-auto mb-4 flex h-12 w-12 md:h-16 md:w-16 items-center justify-center rounded-2xl bg-primary/10",children:o.jsx(Uee,{className:"h-6 w-6 md:h-8 md:w-8 text-primary",strokeWidth:2,fill:"none"})}),o.jsx("h1",{className:"mb-2 text-2xl md:text-3xl font-bold",children:"首次配置向导"}),o.jsxs("p",{className:"text-sm md:text-base text-muted-foreground",children:["让我们一起完成 ",Jj," 的初始配置"]})]}),o.jsxs("div",{className:"mb-6 md:mb-8",children:[o.jsxs("div",{className:"mb-2 flex items-center justify-between text-xs md:text-sm",children:[o.jsxs("span",{className:"text-muted-foreground",children:["步骤 ",n+1," / ",D.length]}),o.jsxs("span",{className:"font-medium text-primary",children:[Math.round(q),"%"]})]}),o.jsx(Qp,{value:q,className:"h-2"})]}),o.jsx("div",{className:"mb-6 md:mb-8 flex justify-between",children:D.map((L,$)=>{const K=L.icon;return o.jsxs("div",{className:xe("flex flex-1 flex-col items-center gap-1 md:gap-2",$t({to:"/"}),className:"gap-2 w-full sm:w-auto",children:[o.jsx(L0,{className:"h-4 w-4"}),"返回首页"]}),o.jsxs(ue,{size:"lg",variant:"outline",onClick:()=>window.history.back(),className:"gap-2 w-full sm:w-auto",children:[o.jsx(Bv,{className:"h-4 w-4"}),"返回上一页"]})]}),o.jsx("div",{className:"mt-12 pt-8 border-t border-border",children:o.jsx("p",{className:"text-sm text-muted-foreground",children:"如果您认为这是一个错误,请联系系统管理员"})})]})})}var PB=["PageUp","PageDown"],zB=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],IB={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},jf="Slider",[xk,Lie,Bie]=Qy(jf),[LB]=Da(jf,[Bie]),[Fie,ub]=LB(jf),BB=b.forwardRef((t,e)=>{const{name:n,min:r=0,max:s=100,step:i=1,orientation:a="horizontal",disabled:l=!1,minStepsBetweenThumbs:c=0,defaultValue:d=[r],value:h,onValueChange:m=()=>{},onValueCommit:g=()=>{},inverted:x=!1,form:y,...w}=t,S=b.useRef(new Set),k=b.useRef(0),N=a==="horizontal"?qie:$ie,[T=[],E]=Kl({prop:h,defaultProp:d,onChange:H=>{[...S.current][k.current]?.focus(),m(H)}}),_=b.useRef(T);function A(H){const W=Wie(T,H);B(H,W)}function D(H){B(H,k.current)}function q(){const H=_.current[k.current];T[k.current]!==H&&g(T)}function B(H,W,{commit:ee}={commit:!1}){const I=Kie(i),V=Zie(Math.round((H-r)/i)*i+r,I),L=Tj(V,[r,s]);E(($=[])=>{const K=Vie($,L,W);if(Yie(K,c*i)){k.current=K.indexOf(L);const Y=String(K)!==String($);return Y&&ee&&g(K),Y?K:$}else return $})}return o.jsx(Fie,{scope:t.__scopeSlider,name:n,disabled:l,min:r,max:s,valueIndexToChangeRef:k,thumbs:S.current,values:T,orientation:a,form:y,children:o.jsx(xk.Provider,{scope:t.__scopeSlider,children:o.jsx(xk.Slot,{scope:t.__scopeSlider,children:o.jsx(N,{"aria-disabled":l,"data-disabled":l?"":void 0,...w,ref:e,onPointerDown:nt(w.onPointerDown,()=>{l||(_.current=T)}),min:r,max:s,inverted:x,onSlideStart:l?void 0:A,onSlideMove:l?void 0:D,onSlideEnd:l?void 0:q,onHomeKeyDown:()=>!l&&B(r,0,{commit:!0}),onEndKeyDown:()=>!l&&B(s,T.length-1,{commit:!0}),onStepKeyDown:({event:H,direction:W})=>{if(!l){const V=PB.includes(H.key)||H.shiftKey&&zB.includes(H.key)?10:1,L=k.current,$=T[L],K=i*V*W;B($+K,L,{commit:!0})}}})})})})});BB.displayName=jf;var[FB,qB]=LB(jf,{startEdge:"left",endEdge:"right",size:"width",direction:1}),qie=b.forwardRef((t,e)=>{const{min:n,max:r,dir:s,inverted:i,onSlideStart:a,onSlideMove:l,onSlideEnd:c,onStepKeyDown:d,...h}=t,[m,g]=b.useState(null),x=er(e,N=>g(N)),y=b.useRef(void 0),w=Rp(s),S=w==="ltr",k=S&&!i||!S&&i;function j(N){const T=y.current||m.getBoundingClientRect(),E=[0,T.width],A=t6(E,k?[n,r]:[r,n]);return y.current=T,A(N-T.left)}return o.jsx(FB,{scope:t.__scopeSlider,startEdge:k?"left":"right",endEdge:k?"right":"left",direction:k?1:-1,size:"width",children:o.jsx($B,{dir:w,"data-orientation":"horizontal",...h,ref:x,style:{...h.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:N=>{const T=j(N.clientX);a?.(T)},onSlideMove:N=>{const T=j(N.clientX);l?.(T)},onSlideEnd:()=>{y.current=void 0,c?.()},onStepKeyDown:N=>{const E=IB[k?"from-left":"from-right"].includes(N.key);d?.({event:N,direction:E?-1:1})}})})}),$ie=b.forwardRef((t,e)=>{const{min:n,max:r,inverted:s,onSlideStart:i,onSlideMove:a,onSlideEnd:l,onStepKeyDown:c,...d}=t,h=b.useRef(null),m=er(e,h),g=b.useRef(void 0),x=!s;function y(w){const S=g.current||h.current.getBoundingClientRect(),k=[0,S.height],N=t6(k,x?[r,n]:[n,r]);return g.current=S,N(w-S.top)}return o.jsx(FB,{scope:t.__scopeSlider,startEdge:x?"bottom":"top",endEdge:x?"top":"bottom",size:"height",direction:x?1:-1,children:o.jsx($B,{"data-orientation":"vertical",...d,ref:m,style:{...d.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:w=>{const S=y(w.clientY);i?.(S)},onSlideMove:w=>{const S=y(w.clientY);a?.(S)},onSlideEnd:()=>{g.current=void 0,l?.()},onStepKeyDown:w=>{const k=IB[x?"from-bottom":"from-top"].includes(w.key);c?.({event:w,direction:k?-1:1})}})})}),$B=b.forwardRef((t,e)=>{const{__scopeSlider:n,onSlideStart:r,onSlideMove:s,onSlideEnd:i,onHomeKeyDown:a,onEndKeyDown:l,onStepKeyDown:c,...d}=t,h=ub(jf,n);return o.jsx(Sn.span,{...d,ref:e,onKeyDown:nt(t.onKeyDown,m=>{m.key==="Home"?(a(m),m.preventDefault()):m.key==="End"?(l(m),m.preventDefault()):PB.concat(zB).includes(m.key)&&(c(m),m.preventDefault())}),onPointerDown:nt(t.onPointerDown,m=>{const g=m.target;g.setPointerCapture(m.pointerId),m.preventDefault(),h.thumbs.has(g)?g.focus():r(m)}),onPointerMove:nt(t.onPointerMove,m=>{m.target.hasPointerCapture(m.pointerId)&&s(m)}),onPointerUp:nt(t.onPointerUp,m=>{const g=m.target;g.hasPointerCapture(m.pointerId)&&(g.releasePointerCapture(m.pointerId),i(m))})})}),HB="SliderTrack",QB=b.forwardRef((t,e)=>{const{__scopeSlider:n,...r}=t,s=ub(HB,n);return o.jsx(Sn.span,{"data-disabled":s.disabled?"":void 0,"data-orientation":s.orientation,...r,ref:e})});QB.displayName=HB;var vk="SliderRange",VB=b.forwardRef((t,e)=>{const{__scopeSlider:n,...r}=t,s=ub(vk,n),i=qB(vk,n),a=b.useRef(null),l=er(e,a),c=s.values.length,d=s.values.map(g=>GB(g,s.min,s.max)),h=c>1?Math.min(...d):0,m=100-Math.max(...d);return o.jsx(Sn.span,{"data-orientation":s.orientation,"data-disabled":s.disabled?"":void 0,...r,ref:l,style:{...t.style,[i.startEdge]:h+"%",[i.endEdge]:m+"%"}})});VB.displayName=vk;var yk="SliderThumb",UB=b.forwardRef((t,e)=>{const n=Lie(t.__scopeSlider),[r,s]=b.useState(null),i=er(e,l=>s(l)),a=b.useMemo(()=>r?n().findIndex(l=>l.ref.current===r):-1,[n,r]);return o.jsx(Hie,{...t,ref:i,index:a})}),Hie=b.forwardRef((t,e)=>{const{__scopeSlider:n,index:r,name:s,...i}=t,a=ub(yk,n),l=qB(yk,n),[c,d]=b.useState(null),h=er(e,j=>d(j)),m=c?a.form||!!c.closest("form"):!0,g=iI(c),x=a.values[r],y=x===void 0?0:GB(x,a.min,a.max),w=Uie(r,a.values.length),S=g?.[l.size],k=S?Gie(S,y,l.direction):0;return b.useEffect(()=>{if(c)return a.thumbs.add(c),()=>{a.thumbs.delete(c)}},[c,a.thumbs]),o.jsxs("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[l.startEdge]:`calc(${y}% + ${k}px)`},children:[o.jsx(xk.ItemSlot,{scope:t.__scopeSlider,children:o.jsx(Sn.span,{role:"slider","aria-label":t["aria-label"]||w,"aria-valuemin":a.min,"aria-valuenow":x,"aria-valuemax":a.max,"aria-orientation":a.orientation,"data-orientation":a.orientation,"data-disabled":a.disabled?"":void 0,tabIndex:a.disabled?void 0:0,...i,ref:h,style:x===void 0?{display:"none"}:t.style,onFocus:nt(t.onFocus,()=>{a.valueIndexToChangeRef.current=r})})}),m&&o.jsx(WB,{name:s??(a.name?a.name+(a.values.length>1?"[]":""):void 0),form:a.form,value:x},r)]})});UB.displayName=yk;var Qie="RadioBubbleInput",WB=b.forwardRef(({__scopeSlider:t,value:e,...n},r)=>{const s=b.useRef(null),i=er(s,r),a=sI(e);return b.useEffect(()=>{const l=s.current;if(!l)return;const c=window.HTMLInputElement.prototype,h=Object.getOwnPropertyDescriptor(c,"value").set;if(a!==e&&h){const m=new Event("input",{bubbles:!0});h.call(l,e),l.dispatchEvent(m)}},[a,e]),o.jsx(Sn.input,{style:{display:"none"},...n,ref:i,defaultValue:e})});WB.displayName=Qie;function Vie(t=[],e,n){const r=[...t];return r[n]=e,r.sort((s,i)=>s-i)}function GB(t,e,n){const i=100/(n-e)*(t-e);return Tj(i,[0,100])}function Uie(t,e){return e>2?`Value ${t+1} of ${e}`:e===2?["Minimum","Maximum"][t]:void 0}function Wie(t,e){if(t.length===1)return 0;const n=t.map(s=>Math.abs(s-e)),r=Math.min(...n);return n.indexOf(r)}function Gie(t,e,n){const r=t/2,i=t6([0,50],[0,r]);return(r-i(e)*n)*n}function Xie(t){return t.slice(0,-1).map((e,n)=>t[n+1]-e)}function Yie(t,e){if(e>0){const n=Xie(t);return Math.min(...n)>=e}return!0}function t6(t,e){return n=>{if(t[0]===t[1]||e[0]===e[1])return e[0];const r=(e[1]-e[0])/(t[1]-t[0]);return e[0]+r*(n-t[0])}}function Kie(t){return(String(t).split(".")[1]||"").length}function Zie(t,e){const n=Math.pow(10,e);return Math.round(t*n)/n}var XB=BB,Jie=QB,eae=VB,tae=UB;const Nf=b.forwardRef(({className:t,...e},n)=>o.jsxs(XB,{ref:n,className:xe("relative flex w-full touch-none select-none items-center",t),...e,children:[o.jsx(Jie,{className:"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20",children:o.jsx(eae,{className:"absolute h-full bg-primary"})}),o.jsx(tae,{className:"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"})]}));Nf.displayName=XB.displayName;const Vt=Dee,Ut=Pee,$t=b.forwardRef(({className:t,children:e,...n},r)=>o.jsxs(cI,{ref:r,className:xe("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",t),...n,children:[e,o.jsx(Eee,{asChild:!0,children:o.jsx(Xc,{className:"h-4 w-4 opacity-50"})})]}));$t.displayName=cI.displayName;const YB=b.forwardRef(({className:t,...e},n)=>o.jsx(uI,{ref:n,className:xe("flex cursor-default items-center justify-center py-1",t),...e,children:o.jsx(B0,{className:"h-4 w-4"})}));YB.displayName=uI.displayName;const KB=b.forwardRef(({className:t,...e},n)=>o.jsx(dI,{ref:n,className:xe("flex cursor-default items-center justify-center py-1",t),...e,children:o.jsx(Xc,{className:"h-4 w-4"})}));KB.displayName=dI.displayName;const Ht=b.forwardRef(({className:t,children:e,position:n="popper",...r},s)=>o.jsx(_ee,{children:o.jsxs(hI,{ref:s,className:xe("relative z-[100] max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-hidden rounded-md border border-border bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",n==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:n,...r,children:[o.jsx(YB,{}),o.jsx(Aee,{className:xe("p-1",n==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:e}),o.jsx(KB,{})]})}));Ht.displayName=hI.displayName;const nae=b.forwardRef(({className:t,...e},n)=>o.jsx(fI,{ref:n,className:xe("px-2 py-1.5 text-sm font-semibold",t),...e}));nae.displayName=fI.displayName;const De=b.forwardRef(({className:t,children:e,...n},r)=>o.jsxs(mI,{ref:r,className:xe("relative flex w-full cursor-default select-none items-center rounded-sm py-2 pl-2 pr-8 text-sm outline-none bg-white dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800 focus:bg-gray-100 dark:focus:bg-gray-800 data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),...n,children:[o.jsx("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:o.jsx(Mee,{children:o.jsx(zo,{className:"h-4 w-4"})})}),o.jsx(Ree,{children:e})]}));De.displayName=mI.displayName;const rae=b.forwardRef(({className:t,...e},n)=>o.jsx(pI,{ref:n,className:xe("-mx-1 my-1 h-px bg-muted",t),...e}));rae.displayName=pI.displayName;function sae(t){const e=iae(t),n=b.forwardRef((r,s)=>{const{children:i,...a}=r,l=b.Children.toArray(i),c=l.find(oae);if(c){const d=c.props.children,h=l.map(m=>m===c?b.Children.count(d)>1?b.Children.only(null):b.isValidElement(d)?d.props.children:null:m);return o.jsx(e,{...a,ref:s,children:b.isValidElement(d)?b.cloneElement(d,void 0,h):null})}return o.jsx(e,{...a,ref:s,children:i})});return n.displayName=`${t}.Slot`,n}function iae(t){const e=b.forwardRef((n,r)=>{const{children:s,...i}=n;if(b.isValidElement(s)){const a=cae(s),l=lae(i,s.props);return s.type!==b.Fragment&&(l.ref=r?Gc(r,a):a),b.cloneElement(s,l)}return b.Children.count(s)>1?b.Children.only(null):null});return e.displayName=`${t}.SlotClone`,e}var aae=Symbol("radix.slottable");function oae(t){return b.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===aae}function lae(t,e){const n={...e};for(const r in e){const s=t[r],i=e[r];/^on[A-Z]/.test(r)?s&&i?n[r]=(...l)=>{const c=i(...l);return s(...l),c}:s&&(n[r]=s):r==="style"?n[r]={...s,...i}:r==="className"&&(n[r]=[s,i].filter(Boolean).join(" "))}return{...t,...n}}function cae(t){let e=Object.getOwnPropertyDescriptor(t.props,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning;return n?t.ref:(e=Object.getOwnPropertyDescriptor(t,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning,n?t.props.ref:t.props.ref||t.ref)}var db="Popover",[ZB]=Da(db,[vf]),Vp=vf(),[uae,lu]=ZB(db),JB=t=>{const{__scopePopover:e,children:n,open:r,defaultOpen:s,onOpenChange:i,modal:a=!1}=t,l=Vp(e),c=b.useRef(null),[d,h]=b.useState(!1),[m,g]=Kl({prop:r,defaultProp:s??!1,onChange:i,caller:db});return o.jsx(Yy,{...l,children:o.jsx(uae,{scope:e,contentId:Gi(),triggerRef:c,open:m,onOpenChange:g,onOpenToggle:b.useCallback(()=>g(x=>!x),[g]),hasCustomAnchor:d,onCustomAnchorAdd:b.useCallback(()=>h(!0),[]),onCustomAnchorRemove:b.useCallback(()=>h(!1),[]),modal:a,children:n})})};JB.displayName=db;var eF="PopoverAnchor",dae=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=lu(eF,n),i=Vp(n),{onCustomAnchorAdd:a,onCustomAnchorRemove:l}=s;return b.useEffect(()=>(a(),()=>l()),[a,l]),o.jsx(Ky,{...i,...r,ref:e})});dae.displayName=eF;var tF="PopoverTrigger",nF=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=lu(tF,n),i=Vp(n),a=er(e,s.triggerRef),l=o.jsx(Sn.button,{type:"button","aria-haspopup":"dialog","aria-expanded":s.open,"aria-controls":s.contentId,"data-state":oF(s.open),...r,ref:a,onClick:nt(t.onClick,s.onOpenToggle)});return s.hasCustomAnchor?l:o.jsx(Ky,{asChild:!0,...i,children:l})});nF.displayName=tF;var n6="PopoverPortal",[hae,fae]=ZB(n6,{forceMount:void 0}),rF=t=>{const{__scopePopover:e,forceMount:n,children:r,container:s}=t,i=lu(n6,e);return o.jsx(hae,{scope:e,forceMount:n,children:o.jsx(oi,{present:n||i.open,children:o.jsx(Xy,{asChild:!0,container:s,children:r})})})};rF.displayName=n6;var Kh="PopoverContent",sF=b.forwardRef((t,e)=>{const n=fae(Kh,t.__scopePopover),{forceMount:r=n.forceMount,...s}=t,i=lu(Kh,t.__scopePopover);return o.jsx(oi,{present:r||i.open,children:i.modal?o.jsx(pae,{...s,ref:e}):o.jsx(gae,{...s,ref:e})})});sF.displayName=Kh;var mae=sae("PopoverContent.RemoveScroll"),pae=b.forwardRef((t,e)=>{const n=lu(Kh,t.__scopePopover),r=b.useRef(null),s=er(e,r),i=b.useRef(!1);return b.useEffect(()=>{const a=r.current;if(a)return gI(a)},[]),o.jsx(xI,{as:mae,allowPinchZoom:!0,children:o.jsx(iF,{...t,ref:s,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:nt(t.onCloseAutoFocus,a=>{a.preventDefault(),i.current||n.triggerRef.current?.focus()}),onPointerDownOutside:nt(t.onPointerDownOutside,a=>{const l=a.detail.originalEvent,c=l.button===0&&l.ctrlKey===!0,d=l.button===2||c;i.current=d},{checkForDefaultPrevented:!1}),onFocusOutside:nt(t.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1})})})}),gae=b.forwardRef((t,e)=>{const n=lu(Kh,t.__scopePopover),r=b.useRef(!1),s=b.useRef(!1);return o.jsx(iF,{...t,ref:e,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{t.onCloseAutoFocus?.(i),i.defaultPrevented||(r.current||n.triggerRef.current?.focus(),i.preventDefault()),r.current=!1,s.current=!1},onInteractOutside:i=>{t.onInteractOutside?.(i),i.defaultPrevented||(r.current=!0,i.detail.originalEvent.type==="pointerdown"&&(s.current=!0));const a=i.target;n.triggerRef.current?.contains(a)&&i.preventDefault(),i.detail.originalEvent.type==="focusin"&&s.current&&i.preventDefault()}})}),iF=b.forwardRef((t,e)=>{const{__scopePopover:n,trapFocus:r,onOpenAutoFocus:s,onCloseAutoFocus:i,disableOutsidePointerEvents:a,onEscapeKeyDown:l,onPointerDownOutside:c,onFocusOutside:d,onInteractOutside:h,...m}=t,g=lu(Kh,n),x=Vp(n);return vI(),o.jsx(yI,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:s,onUnmountAutoFocus:i,children:o.jsx(Rj,{asChild:!0,disableOutsidePointerEvents:a,onInteractOutside:h,onEscapeKeyDown:l,onPointerDownOutside:c,onFocusOutside:d,onDismiss:()=>g.onOpenChange(!1),children:o.jsx(Dj,{"data-state":oF(g.open),role:"dialog",id:g.contentId,...x,...m,ref:e,style:{...m.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),aF="PopoverClose",xae=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=lu(aF,n);return o.jsx(Sn.button,{type:"button",...r,ref:e,onClick:nt(t.onClick,()=>s.onOpenChange(!1))})});xae.displayName=aF;var vae="PopoverArrow",yae=b.forwardRef((t,e)=>{const{__scopePopover:n,...r}=t,s=Vp(n);return o.jsx(Pj,{...s,...r,ref:e})});yae.displayName=vae;function oF(t){return t?"open":"closed"}var bae=JB,wae=nF,Sae=rF,lF=sF;const Bo=bae,Fo=wae,Ka=b.forwardRef(({className:t,align:e="center",sideOffset:n=4,...r},s)=>o.jsx(Sae,{children:o.jsx(lF,{ref:s,align:e,sideOffset:n,className:xe("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]",t),...r})}));Ka.displayName=lF.displayName;const cu="/api/webui/config";async function dE(){const e=await(await gt(`${cu}/bot`)).json();if(!e.success)throw new Error("获取配置数据失败");return e.config}async function Dh(){const e=await(await gt(`${cu}/model`)).json();if(!e.success)throw new Error("获取模型配置数据失败");return e.config}async function hE(t){const n=await(await gt(`${cu}/bot`,{method:"POST",headers:Tt(),body:JSON.stringify(t)})).json();if(!n.success)throw new Error(n.message||"保存配置失败")}async function kae(){const e=await(await gt(`${cu}/bot/raw`)).json();if(!e.success)throw new Error("获取配置源代码失败");return e.content}async function Oae(t){const n=await(await gt(`${cu}/bot/raw`,{method:"POST",headers:Tt(),body:JSON.stringify({raw_content:t})})).json();if(!n.success)throw new Error(n.message||"保存配置失败")}async function Uv(t){const n=await(await gt(`${cu}/model`,{method:"POST",headers:Tt(),body:JSON.stringify(t)})).json();if(!n.success)throw new Error(n.message||"保存配置失败")}async function jae(t,e){const r=await(await gt(`${cu}/bot/section/${t}`,{method:"POST",headers:Tt(),body:JSON.stringify(e)})).json();if(!r.success)throw new Error(r.message||`保存配置节 ${t} 失败`)}async function bk(t,e){const r=await(await gt(`${cu}/model/section/${t}`,{method:"POST",headers:Tt(),body:JSON.stringify(e)})).json();if(!r.success)throw new Error(r.message||`保存配置节 ${t} 失败`)}async function Nae(t,e="openai",n="/models"){const r=new URLSearchParams({provider_name:t,parser:e,endpoint:n}),s=await gt(`/api/webui/models/list?${r}`);if(!s.ok){const a=await s.json().catch(()=>({}));throw new Error(a.detail||`获取模型列表失败 (${s.status})`)}const i=await s.json();if(!i.success)throw new Error("获取模型列表失败");return i.models}async function Cae(t){const e=new URLSearchParams({provider_name:t}),n=await gt(`/api/webui/models/test-connection-by-name?${e}`,{method:"POST"});if(!n.ok){const r=await n.json().catch(()=>({}));throw new Error(r.detail||`测试连接失败 (${n.status})`)}return await n.json()}const Tae=kf("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"}}),ba=b.forwardRef(({className:t,variant:e,...n},r)=>o.jsx("div",{ref:r,role:"alert",className:xe(Tae({variant:e}),t),...n}));ba.displayName="Alert";const Eae=b.forwardRef(({className:t,...e},n)=>o.jsx("h5",{ref:n,className:xe("mb-1 font-medium leading-none tracking-tight",t),...e}));Eae.displayName="AlertTitle";const wa=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{ref:n,className:xe("text-sm [&_p]:leading-relaxed",t),...e}));wa.displayName="AlertDescription";function r6({onRestartComplete:t,onRestartFailed:e}){const[n,r]=b.useState(0),[s,i]=b.useState("restarting"),[a,l]=b.useState(0),[c,d]=b.useState(0);b.useEffect(()=>{const g=setInterval(()=>{r(w=>w>=90?w:w+1)},200),x=setInterval(()=>{l(w=>w+1)},1e3),y=setTimeout(()=>{i("checking"),h()},3e3);return()=>{clearInterval(g),clearInterval(x),clearTimeout(y)}},[]);const h=()=>{const x=async()=>{try{if(d(w=>w+1),(await fetch("/api/webui/system/status",{method:"GET",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(3e3)})).ok)r(100),i("success"),setTimeout(()=>{t?.()},1500);else throw new Error("Status check failed")}catch{c<60?setTimeout(x,2e3):(i("failed"),e?.())}};x()},m=g=>{const x=Math.floor(g/60),y=g%60;return`${x}:${y.toString().padStart(2,"0")}`};return o.jsx("div",{className:"fixed inset-0 bg-background/95 backdrop-blur-sm z-50 flex items-center justify-center",children:o.jsxs("div",{className:"max-w-md w-full mx-4 space-y-8",children:[o.jsxs("div",{className:"flex flex-col items-center space-y-4",children:[s==="restarting"&&o.jsxs(o.Fragment,{children:[o.jsx(Us,{className:"h-16 w-16 text-primary animate-spin"}),o.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),o.jsx("p",{className:"text-muted-foreground text-center",children:"请稍候,麦麦正在重启中..."})]}),s==="checking"&&o.jsxs(o.Fragment,{children:[o.jsx(Us,{className:"h-16 w-16 text-primary animate-spin"}),o.jsx("h2",{className:"text-2xl font-bold",children:"检查服务状态"}),o.jsxs("p",{className:"text-muted-foreground text-center",children:["等待服务恢复... (尝试 ",c,"/60)"]})]}),s==="success"&&o.jsxs(o.Fragment,{children:[o.jsx(Ya,{className:"h-16 w-16 text-green-500"}),o.jsx("h2",{className:"text-2xl font-bold",children:"重启成功"}),o.jsx("p",{className:"text-muted-foreground text-center",children:"正在跳转到登录页面..."})]}),s==="failed"&&o.jsxs(o.Fragment,{children:[o.jsx(Lo,{className:"h-16 w-16 text-destructive"}),o.jsx("h2",{className:"text-2xl font-bold",children:"重启超时"}),o.jsx("p",{className:"text-muted-foreground text-center",children:"服务未能在预期时间内恢复,请手动检查或刷新页面"})]})]}),s!=="failed"&&o.jsxs("div",{className:"space-y-2",children:[o.jsx(Qp,{value:n,className:"h-2"}),o.jsxs("div",{className:"flex justify-between text-sm text-muted-foreground",children:[o.jsxs("span",{children:[n,"%"]}),o.jsxs("span",{children:["已用时: ",m(a)]})]})]}),o.jsx("div",{className:"bg-muted/50 rounded-lg p-4 space-y-2",children:o.jsxs("p",{className:"text-sm text-muted-foreground",children:[s==="restarting"&&"🔄 配置已保存,正在重启主程序...",s==="checking"&&"⏳ 正在等待服务恢复,请勿关闭页面...",s==="success"&&"✅ 配置已生效,服务运行正常",s==="failed"&&"⚠️ 如果长时间无响应,请尝试手动重启"]})}),o.jsx("div",{className:"bg-yellow-500/10 border border-yellow-500/50 rounded-lg p-4",children:o.jsxs("p",{className:"text-sm text-yellow-900 dark:text-yellow-100",children:[o.jsx("strong",{children:"⚠️ 重要提示:"})," 由于技术原因,使用重启功能后,将无法再使用 ",o.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。如需结束程序,请使用脚本目录下的进程管理脚本。"]})}),s==="failed"&&o.jsxs("div",{className:"flex gap-2",children:[o.jsx("button",{onClick:()=>window.location.reload(),className:"flex-1 px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary/90",children:"刷新页面"}),o.jsx("button",{onClick:()=>{i("checking"),d(0),h()},className:"flex-1 px-4 py-2 bg-secondary text-secondary-foreground rounded-md hover:bg-secondary/90",children:"重试检测"})]})]})})}let wk=[],cF=[];(()=>{let t="lc,34,7n,7,7b,19,,,,2,,2,,,20,b,1c,l,g,,2t,7,2,6,2,2,,4,z,,u,r,2j,b,1m,9,9,,o,4,,9,,3,,5,17,3,3b,f,,w,1j,,,,4,8,4,,3,7,a,2,t,,1m,,,,2,4,8,,9,,a,2,q,,2,2,1l,,4,2,4,2,2,3,3,,u,2,3,,b,2,1l,,4,5,,2,4,,k,2,m,6,,,1m,,,2,,4,8,,7,3,a,2,u,,1n,,,,c,,9,,14,,3,,1l,3,5,3,,4,7,2,b,2,t,,1m,,2,,2,,3,,5,2,7,2,b,2,s,2,1l,2,,,2,4,8,,9,,a,2,t,,20,,4,,2,3,,,8,,29,,2,7,c,8,2q,,2,9,b,6,22,2,r,,,,,,1j,e,,5,,2,5,b,,10,9,,2u,4,,6,,2,2,2,p,2,4,3,g,4,d,,2,2,6,,f,,jj,3,qa,3,t,3,t,2,u,2,1s,2,,7,8,,2,b,9,,19,3,3b,2,y,,3a,3,4,2,9,,6,3,63,2,2,,1m,,,7,,,,,2,8,6,a,2,,1c,h,1r,4,1c,7,,,5,,14,9,c,2,w,4,2,2,,3,1k,,,2,3,,,3,1m,8,2,2,48,3,,d,,7,4,,6,,3,2,5i,1m,,5,ek,,5f,x,2da,3,3x,,2o,w,fe,6,2x,2,n9w,4,,a,w,2,28,2,7k,,3,,4,,p,2,5,,47,2,q,i,d,,12,8,p,b,1a,3,1c,,2,4,2,2,13,,1v,6,2,2,2,2,c,,8,,1b,,1f,,,3,2,2,5,2,,,16,2,8,,6m,,2,,4,,fn4,,kh,g,g,g,a6,2,gt,,6a,,45,5,1ae,3,,2,5,4,14,3,4,,4l,2,fx,4,ar,2,49,b,4w,,1i,f,1k,3,1d,4,2,2,1x,3,10,5,,8,1q,,c,2,1g,9,a,4,2,,2n,3,2,,,2,6,,4g,,3,8,l,2,1l,2,,,,,m,,e,7,3,5,5f,8,2,3,,,n,,29,,2,6,,,2,,,2,,2,6j,,2,4,6,2,,2,r,2,2d,8,2,,,2,2y,,,,2,6,,,2t,3,2,4,,5,77,9,,2,6t,,a,2,,,4,,40,4,2,2,4,,w,a,14,6,2,4,8,,9,6,2,3,1a,d,,2,ba,7,,6,,,2a,m,2,7,,2,,2,3e,6,3,,,2,,7,,,20,2,3,,,,9n,2,f0b,5,1n,7,t4,,1r,4,29,,f5k,2,43q,,,3,4,5,8,8,2,7,u,4,44,3,1iz,1j,4,1e,8,,e,,m,5,,f,11s,7,,h,2,7,,2,,5,79,7,c5,4,15s,7,31,7,240,5,gx7k,2o,3k,6o".split(",").map(e=>e?parseInt(e,36):1);for(let e=0,n=0;e>1;if(t=cF[r])e=r+1;else return!0;if(e==n)return!1}}function fE(t){return t>=127462&&t<=127487}const mE=8205;function Aae(t,e,n=!0,r=!0){return(n?uF:Mae)(t,e,r)}function uF(t,e,n){if(e==t.length)return e;e&&dF(t.charCodeAt(e))&&hF(t.charCodeAt(e-1))&&e--;let r=z4(t,e);for(e+=pE(r);e=0&&fE(z4(t,a));)i++,a-=2;if(i%2==0)break;e+=2}else break}return e}function Mae(t,e,n){for(;e>0;){let r=uF(t,e-2,n);if(r=56320&&t<57344}function hF(t){return t>=55296&&t<56320}function pE(t){return t<65536?1:2}class An{lineAt(e){if(e<0||e>this.length)throw new RangeError(`Invalid position ${e} in document of length ${this.length}`);return this.lineInner(e,!1,1,0)}line(e){if(e<1||e>this.lines)throw new RangeError(`Invalid line number ${e} in ${this.lines}-line document`);return this.lineInner(e,!0,1,0)}replace(e,n,r){[e,n]=Zh(this,e,n);let s=[];return this.decompose(0,e,s,2),r.length&&r.decompose(0,r.length,s,3),this.decompose(n,this.length,s,1),uv.from(s,this.length-(n-e)+r.length)}append(e){return this.replace(this.length,this.length,e)}slice(e,n=this.length){[e,n]=Zh(this,e,n);let r=[];return this.decompose(e,n,r,0),uv.from(r,n-e)}eq(e){if(e==this)return!0;if(e.length!=this.length||e.lines!=this.lines)return!1;let n=this.scanIdentical(e,1),r=this.length-this.scanIdentical(e,-1),s=new k0(this),i=new k0(e);for(let a=n,l=n;;){if(s.next(a),i.next(a),a=0,s.lineBreak!=i.lineBreak||s.done!=i.done||s.value!=i.value)return!1;if(l+=s.value.length,s.done||l>=r)return!0}}iter(e=1){return new k0(this,e)}iterRange(e,n=this.length){return new fF(this,e,n)}iterLines(e,n){let r;if(e==null)r=this.iter();else{n==null&&(n=this.lines+1);let s=this.line(e).from;r=this.iterRange(s,Math.max(s,n==this.lines+1?this.length:n<=1?0:this.line(n-1).to))}return new mF(r)}toString(){return this.sliceString(0)}toJSON(){let e=[];return this.flatten(e),e}constructor(){}static of(e){if(e.length==0)throw new RangeError("A document must have at least one line");return e.length==1&&!e[0]?An.empty:e.length<=32?new Ur(e):uv.from(Ur.split(e,[]))}}class Ur extends An{constructor(e,n=Rae(e)){super(),this.text=e,this.length=n}get lines(){return this.text.length}get children(){return null}lineInner(e,n,r,s){for(let i=0;;i++){let a=this.text[i],l=s+a.length;if((n?r:l)>=e)return new Dae(s,l,r,a);s=l+1,r++}}decompose(e,n,r,s){let i=e<=0&&n>=this.length?this:new Ur(gE(this.text,e,n),Math.min(n,this.length)-Math.max(0,e));if(s&1){let a=r.pop(),l=dv(i.text,a.text.slice(),0,i.length);if(l.length<=32)r.push(new Ur(l,a.length+i.length));else{let c=l.length>>1;r.push(new Ur(l.slice(0,c)),new Ur(l.slice(c)))}}else r.push(i)}replace(e,n,r){if(!(r instanceof Ur))return super.replace(e,n,r);[e,n]=Zh(this,e,n);let s=dv(this.text,dv(r.text,gE(this.text,0,e)),n),i=this.length+r.length-(n-e);return s.length<=32?new Ur(s,i):uv.from(Ur.split(s,[]),i)}sliceString(e,n=this.length,r=` -`){[e,n]=Zh(this,e,n);let s="";for(let i=0,a=0;i<=n&&ae&&a&&(s+=r),ei&&(s+=l.slice(Math.max(0,e-i),n-i)),i=c+1}return s}flatten(e){for(let n of this.text)e.push(n)}scanIdentical(){return 0}static split(e,n){let r=[],s=-1;for(let i of e)r.push(i),s+=i.length+1,r.length==32&&(n.push(new Ur(r,s)),r=[],s=-1);return s>-1&&n.push(new Ur(r,s)),n}}let uv=class bh extends An{constructor(e,n){super(),this.children=e,this.length=n,this.lines=0;for(let r of e)this.lines+=r.lines}lineInner(e,n,r,s){for(let i=0;;i++){let a=this.children[i],l=s+a.length,c=r+a.lines-1;if((n?c:l)>=e)return a.lineInner(e,n,r,s);s=l+1,r=c+1}}decompose(e,n,r,s){for(let i=0,a=0;a<=n&&i=a){let d=s&((a<=e?1:0)|(c>=n?2:0));a>=e&&c<=n&&!d?r.push(l):l.decompose(e-a,n-a,r,d)}a=c+1}}replace(e,n,r){if([e,n]=Zh(this,e,n),r.lines=i&&n<=l){let c=a.replace(e-i,n-i,r),d=this.lines-a.lines+c.lines;if(c.lines>4&&c.lines>d>>6){let h=this.children.slice();return h[s]=c,new bh(h,this.length-(n-e)+r.length)}return super.replace(i,l,c)}i=l+1}return super.replace(e,n,r)}sliceString(e,n=this.length,r=` -`){[e,n]=Zh(this,e,n);let s="";for(let i=0,a=0;ie&&i&&(s+=r),ea&&(s+=l.sliceString(e-a,n-a,r)),a=c+1}return s}flatten(e){for(let n of this.children)n.flatten(e)}scanIdentical(e,n){if(!(e instanceof bh))return 0;let r=0,[s,i,a,l]=n>0?[0,0,this.children.length,e.children.length]:[this.children.length-1,e.children.length-1,-1,-1];for(;;s+=n,i+=n){if(s==a||i==l)return r;let c=this.children[s],d=e.children[i];if(c!=d)return r+c.scanIdentical(d,n);r+=c.length+1}}static from(e,n=e.reduce((r,s)=>r+s.length+1,-1)){let r=0;for(let x of e)r+=x.lines;if(r<32){let x=[];for(let y of e)y.flatten(x);return new Ur(x,n)}let s=Math.max(32,r>>5),i=s<<1,a=s>>1,l=[],c=0,d=-1,h=[];function m(x){let y;if(x.lines>i&&x instanceof bh)for(let w of x.children)m(w);else x.lines>a&&(c>a||!c)?(g(),l.push(x)):x instanceof Ur&&c&&(y=h[h.length-1])instanceof Ur&&x.lines+y.lines<=32?(c+=x.lines,d+=x.length+1,h[h.length-1]=new Ur(y.text.concat(x.text),y.length+1+x.length)):(c+x.lines>s&&g(),c+=x.lines,d+=x.length+1,h.push(x))}function g(){c!=0&&(l.push(h.length==1?h[0]:bh.from(h,d)),d=-1,c=h.length=0)}for(let x of e)m(x);return g(),l.length==1?l[0]:new bh(l,n)}};An.empty=new Ur([""],0);function Rae(t){let e=-1;for(let n of t)e+=n.length+1;return e}function dv(t,e,n=0,r=1e9){for(let s=0,i=0,a=!0;i=n&&(c>r&&(l=l.slice(0,r-s)),s0?1:(e instanceof Ur?e.text.length:e.children.length)<<1]}nextInner(e,n){for(this.done=this.lineBreak=!1;;){let r=this.nodes.length-1,s=this.nodes[r],i=this.offsets[r],a=i>>1,l=s instanceof Ur?s.text.length:s.children.length;if(a==(n>0?l:0)){if(r==0)return this.done=!0,this.value="",this;n>0&&this.offsets[r-1]++,this.nodes.pop(),this.offsets.pop()}else if((i&1)==(n>0?0:1)){if(this.offsets[r]+=n,e==0)return this.lineBreak=!0,this.value=` -`,this;e--}else if(s instanceof Ur){let c=s.text[a+(n<0?-1:0)];if(this.offsets[r]+=n,c.length>Math.max(0,e))return this.value=e==0?c:n>0?c.slice(e):c.slice(0,c.length-e),this;e-=c.length}else{let c=s.children[a+(n<0?-1:0)];e>c.length?(e-=c.length,this.offsets[r]+=n):(n<0&&this.offsets[r]--,this.nodes.push(c),this.offsets.push(n>0?1:(c instanceof Ur?c.text.length:c.children.length)<<1))}}}next(e=0){return e<0&&(this.nextInner(-e,-this.dir),e=this.value.length),this.nextInner(e,this.dir)}}class fF{constructor(e,n,r){this.value="",this.done=!1,this.cursor=new k0(e,n>r?-1:1),this.pos=n>r?e.length:0,this.from=Math.min(n,r),this.to=Math.max(n,r)}nextInner(e,n){if(n<0?this.pos<=this.from:this.pos>=this.to)return this.value="",this.done=!0,this;e+=Math.max(0,n<0?this.pos-this.to:this.from-this.pos);let r=n<0?this.pos-this.from:this.to-this.pos;e>r&&(e=r),r-=e;let{value:s}=this.cursor.next(e);return this.pos+=(s.length+e)*n,this.value=s.length<=r?s:n<0?s.slice(s.length-r):s.slice(0,r),this.done=!this.value,this}next(e=0){return e<0?e=Math.max(e,this.from-this.pos):e>0&&(e=Math.min(e,this.to-this.pos)),this.nextInner(e,this.cursor.dir)}get lineBreak(){return this.cursor.lineBreak&&this.value!=""}}class mF{constructor(e){this.inner=e,this.afterBreak=!0,this.value="",this.done=!1}next(e=0){let{done:n,lineBreak:r,value:s}=this.inner.next(e);return n&&this.afterBreak?(this.value="",this.afterBreak=!1):n?(this.done=!0,this.value=""):r?this.afterBreak?this.value="":(this.afterBreak=!0,this.next()):(this.value=s,this.afterBreak=!1),this}get lineBreak(){return!1}}typeof Symbol<"u"&&(An.prototype[Symbol.iterator]=function(){return this.iter()},k0.prototype[Symbol.iterator]=fF.prototype[Symbol.iterator]=mF.prototype[Symbol.iterator]=function(){return this});class Dae{constructor(e,n,r,s){this.from=e,this.to=n,this.number=r,this.text=s}get length(){return this.to-this.from}}function Zh(t,e,n){return e=Math.max(0,Math.min(t.length,e)),[e,Math.max(e,Math.min(t.length,n))]}function Ps(t,e,n=!0,r=!0){return Aae(t,e,n,r)}function Pae(t){return t>=56320&&t<57344}function zae(t){return t>=55296&&t<56320}function vi(t,e){let n=t.charCodeAt(e);if(!zae(n)||e+1==t.length)return n;let r=t.charCodeAt(e+1);return Pae(r)?(n-55296<<10)+(r-56320)+65536:n}function s6(t){return t<=65535?String.fromCharCode(t):(t-=65536,String.fromCharCode((t>>10)+55296,(t&1023)+56320))}function ko(t){return t<65536?1:2}const Sk=/\r\n?|\n/;var Ds=(function(t){return t[t.Simple=0]="Simple",t[t.TrackDel=1]="TrackDel",t[t.TrackBefore=2]="TrackBefore",t[t.TrackAfter=3]="TrackAfter",t})(Ds||(Ds={}));class Io{constructor(e){this.sections=e}get length(){let e=0;for(let n=0;ne)return i+(e-s);i+=l}else{if(r!=Ds.Simple&&d>=e&&(r==Ds.TrackDel&&se||r==Ds.TrackBefore&&se))return null;if(d>e||d==e&&n<0&&!l)return e==s||n<0?i:i+c;i+=c}s=d}if(e>s)throw new RangeError(`Position ${e} is out of range for changeset of length ${s}`);return i}touchesRange(e,n=e){for(let r=0,s=0;r=0&&s<=n&&l>=e)return sn?"cover":!0;s=l}return!1}toString(){let e="";for(let n=0;n=0?":"+s:"")}return e}toJSON(){return this.sections}static fromJSON(e){if(!Array.isArray(e)||e.length%2||e.some(n=>typeof n!="number"))throw new RangeError("Invalid JSON representation of ChangeDesc");return new Io(e)}static create(e){return new Io(e)}}class us extends Io{constructor(e,n){super(e),this.inserted=n}apply(e){if(this.length!=e.length)throw new RangeError("Applying change set to a document with the wrong length");return kk(this,(n,r,s,i,a)=>e=e.replace(s,s+(r-n),a),!1),e}mapDesc(e,n=!1){return Ok(this,e,n,!0)}invert(e){let n=this.sections.slice(),r=[];for(let s=0,i=0;s=0){n[s]=l,n[s+1]=a;let c=s>>1;for(;r.length0&&$c(r,n,i.text),i.forward(h),l+=h}let d=e[a++];for(;l>1].toJSON()))}return e}static of(e,n,r){let s=[],i=[],a=0,l=null;function c(h=!1){if(!h&&!s.length)return;ag||m<0||g>n)throw new RangeError(`Invalid change range ${m} to ${g} (in doc of length ${n})`);let y=x?typeof x=="string"?An.of(x.split(r||Sk)):x:An.empty,w=y.length;if(m==g&&w==0)return;ma&&qs(s,m-a,-1),qs(s,g-m,w),$c(i,s,y),a=g}}return d(e),c(!l),l}static empty(e){return new us(e?[e,-1]:[],[])}static fromJSON(e){if(!Array.isArray(e))throw new RangeError("Invalid JSON representation of ChangeSet");let n=[],r=[];for(let s=0;sl&&typeof a!="string"))throw new RangeError("Invalid JSON representation of ChangeSet");if(i.length==1)n.push(i[0],0);else{for(;r.length=0&&n<=0&&n==t[s+1]?t[s]+=e:s>=0&&e==0&&t[s]==0?t[s+1]+=n:r?(t[s]+=e,t[s+1]+=n):t.push(e,n)}function $c(t,e,n){if(n.length==0)return;let r=e.length-2>>1;if(r>1])),!(n||a==t.sections.length||t.sections[a+1]<0);)l=t.sections[a++],c=t.sections[a++];e(s,d,i,h,m),s=d,i=h}}}function Ok(t,e,n,r=!1){let s=[],i=r?[]:null,a=new H0(t),l=new H0(e);for(let c=-1;;){if(a.done&&l.len||l.done&&a.len)throw new Error("Mismatched change set lengths");if(a.ins==-1&&l.ins==-1){let d=Math.min(a.len,l.len);qs(s,d,-1),a.forward(d),l.forward(d)}else if(l.ins>=0&&(a.ins<0||c==a.i||a.off==0&&(l.len=0&&c=0){let d=0,h=a.len;for(;h;)if(l.ins==-1){let m=Math.min(h,l.len);d+=m,h-=m,l.forward(m)}else if(l.ins==0&&l.lenc||a.ins>=0&&a.len>c)&&(l||r.length>d),i.forward2(c),a.forward(c)}}}}class H0{constructor(e){this.set=e,this.i=0,this.next()}next(){let{sections:e}=this.set;this.i>1;return n>=e.length?An.empty:e[n]}textBit(e){let{inserted:n}=this.set,r=this.i-2>>1;return r>=n.length&&!e?An.empty:n[r].slice(this.off,e==null?void 0:this.off+e)}forward(e){e==this.len?this.next():(this.len-=e,this.off+=e)}forward2(e){this.ins==-1?this.forward(e):e==this.ins?this.next():(this.ins-=e,this.off+=e)}}class Uu{constructor(e,n,r){this.from=e,this.to=n,this.flags=r}get anchor(){return this.flags&32?this.to:this.from}get head(){return this.flags&32?this.from:this.to}get empty(){return this.from==this.to}get assoc(){return this.flags&8?-1:this.flags&16?1:0}get bidiLevel(){let e=this.flags&7;return e==7?null:e}get goalColumn(){let e=this.flags>>6;return e==16777215?void 0:e}map(e,n=-1){let r,s;return this.empty?r=s=e.mapPos(this.from,n):(r=e.mapPos(this.from,1),s=e.mapPos(this.to,-1)),r==this.from&&s==this.to?this:new Uu(r,s,this.flags)}extend(e,n=e){if(e<=this.anchor&&n>=this.anchor)return Me.range(e,n);let r=Math.abs(e-this.anchor)>Math.abs(n-this.anchor)?e:n;return Me.range(this.anchor,r)}eq(e,n=!1){return this.anchor==e.anchor&&this.head==e.head&&(!n||!this.empty||this.assoc==e.assoc)}toJSON(){return{anchor:this.anchor,head:this.head}}static fromJSON(e){if(!e||typeof e.anchor!="number"||typeof e.head!="number")throw new RangeError("Invalid JSON representation for SelectionRange");return Me.range(e.anchor,e.head)}static create(e,n,r){return new Uu(e,n,r)}}class Me{constructor(e,n){this.ranges=e,this.mainIndex=n}map(e,n=-1){return e.empty?this:Me.create(this.ranges.map(r=>r.map(e,n)),this.mainIndex)}eq(e,n=!1){if(this.ranges.length!=e.ranges.length||this.mainIndex!=e.mainIndex)return!1;for(let r=0;re.toJSON()),main:this.mainIndex}}static fromJSON(e){if(!e||!Array.isArray(e.ranges)||typeof e.main!="number"||e.main>=e.ranges.length)throw new RangeError("Invalid JSON representation for EditorSelection");return new Me(e.ranges.map(n=>Uu.fromJSON(n)),e.main)}static single(e,n=e){return new Me([Me.range(e,n)],0)}static create(e,n=0){if(e.length==0)throw new RangeError("A selection needs at least one range");for(let r=0,s=0;se?8:0)|i)}static normalized(e,n=0){let r=e[n];e.sort((s,i)=>s.from-i.from),n=e.indexOf(r);for(let s=1;si.head?Me.range(c,l):Me.range(l,c))}}return new Me(e,n)}}function gF(t,e){for(let n of t.ranges)if(n.to>e)throw new RangeError("Selection points outside of document")}let i6=0;class st{constructor(e,n,r,s,i){this.combine=e,this.compareInput=n,this.compare=r,this.isStatic=s,this.id=i6++,this.default=e([]),this.extensions=typeof i=="function"?i(this):i}get reader(){return this}static define(e={}){return new st(e.combine||(n=>n),e.compareInput||((n,r)=>n===r),e.compare||(e.combine?(n,r)=>n===r:a6),!!e.static,e.enables)}of(e){return new hv([],this,0,e)}compute(e,n){if(this.isStatic)throw new Error("Can't compute a static facet");return new hv(e,this,1,n)}computeN(e,n){if(this.isStatic)throw new Error("Can't compute a static facet");return new hv(e,this,2,n)}from(e,n){return n||(n=r=>r),this.compute([e],r=>n(r.field(e)))}}function a6(t,e){return t==e||t.length==e.length&&t.every((n,r)=>n===e[r])}class hv{constructor(e,n,r,s){this.dependencies=e,this.facet=n,this.type=r,this.value=s,this.id=i6++}dynamicSlot(e){var n;let r=this.value,s=this.facet.compareInput,i=this.id,a=e[i]>>1,l=this.type==2,c=!1,d=!1,h=[];for(let m of this.dependencies)m=="doc"?c=!0:m=="selection"?d=!0:(((n=e[m.id])!==null&&n!==void 0?n:1)&1)==0&&h.push(e[m.id]);return{create(m){return m.values[a]=r(m),1},update(m,g){if(c&&g.docChanged||d&&(g.docChanged||g.selection)||jk(m,h)){let x=r(m);if(l?!xE(x,m.values[a],s):!s(x,m.values[a]))return m.values[a]=x,1}return 0},reconfigure:(m,g)=>{let x,y=g.config.address[i];if(y!=null){let w=Gv(g,y);if(this.dependencies.every(S=>S instanceof st?g.facet(S)===m.facet(S):S instanceof Os?g.field(S,!1)==m.field(S,!1):!0)||(l?xE(x=r(m),w,s):s(x=r(m),w)))return m.values[a]=w,0}else x=r(m);return m.values[a]=x,1}}}}function xE(t,e,n){if(t.length!=e.length)return!1;for(let r=0;rt[c.id]),s=n.map(c=>c.type),i=r.filter(c=>!(c&1)),a=t[e.id]>>1;function l(c){let d=[];for(let h=0;hr===s),e);return e.provide&&(n.provides=e.provide(n)),n}create(e){let n=e.facet(r1).find(r=>r.field==this);return(n?.create||this.createF)(e)}slot(e){let n=e[this.id]>>1;return{create:r=>(r.values[n]=this.create(r),1),update:(r,s)=>{let i=r.values[n],a=this.updateF(i,s);return this.compareF(i,a)?0:(r.values[n]=a,1)},reconfigure:(r,s)=>{let i=r.facet(r1),a=s.facet(r1),l;return(l=i.find(c=>c.field==this))&&l!=a.find(c=>c.field==this)?(r.values[n]=l.create(r),1):s.config.address[this.id]!=null?(r.values[n]=s.field(this),0):(r.values[n]=this.create(r),1)}}}init(e){return[this,r1.of({field:this,create:e})]}get extension(){return this}}const Hu={lowest:4,low:3,default:2,high:1,highest:0};function Fm(t){return e=>new xF(e,t)}const uu={highest:Fm(Hu.highest),high:Fm(Hu.high),default:Fm(Hu.default),low:Fm(Hu.low),lowest:Fm(Hu.lowest)};class xF{constructor(e,n){this.inner=e,this.prec=n}}class hb{of(e){return new Nk(this,e)}reconfigure(e){return hb.reconfigure.of({compartment:this,extension:e})}get(e){return e.config.compartments.get(this)}}class Nk{constructor(e,n){this.compartment=e,this.inner=n}}class Wv{constructor(e,n,r,s,i,a){for(this.base=e,this.compartments=n,this.dynamicSlots=r,this.address=s,this.staticValues=i,this.facets=a,this.statusTemplate=[];this.statusTemplate.length>1]}static resolve(e,n,r){let s=[],i=Object.create(null),a=new Map;for(let g of Lae(e,n,a))g instanceof Os?s.push(g):(i[g.facet.id]||(i[g.facet.id]=[])).push(g);let l=Object.create(null),c=[],d=[];for(let g of s)l[g.id]=d.length<<1,d.push(x=>g.slot(x));let h=r?.config.facets;for(let g in i){let x=i[g],y=x[0].facet,w=h&&h[g]||[];if(x.every(S=>S.type==0))if(l[y.id]=c.length<<1|1,a6(w,x))c.push(r.facet(y));else{let S=y.combine(x.map(k=>k.value));c.push(r&&y.compare(S,r.facet(y))?r.facet(y):S)}else{for(let S of x)S.type==0?(l[S.id]=c.length<<1|1,c.push(S.value)):(l[S.id]=d.length<<1,d.push(k=>S.dynamicSlot(k)));l[y.id]=d.length<<1,d.push(S=>Iae(S,y,x))}}let m=d.map(g=>g(l));return new Wv(e,a,m,l,c,i)}}function Lae(t,e,n){let r=[[],[],[],[],[]],s=new Map;function i(a,l){let c=s.get(a);if(c!=null){if(c<=l)return;let d=r[c].indexOf(a);d>-1&&r[c].splice(d,1),a instanceof Nk&&n.delete(a.compartment)}if(s.set(a,l),Array.isArray(a))for(let d of a)i(d,l);else if(a instanceof Nk){if(n.has(a.compartment))throw new RangeError("Duplicate use of compartment in extensions");let d=e.get(a.compartment)||a.inner;n.set(a.compartment,d),i(d,l)}else if(a instanceof xF)i(a.inner,a.prec);else if(a instanceof Os)r[l].push(a),a.provides&&i(a.provides,l);else if(a instanceof hv)r[l].push(a),a.facet.extensions&&i(a.facet.extensions,Hu.default);else{let d=a.extension;if(!d)throw new Error(`Unrecognized extension value in extension set (${a}). This sometimes happens because multiple instances of @codemirror/state are loaded, breaking instanceof checks.`);i(d,l)}}return i(t,Hu.default),r.reduce((a,l)=>a.concat(l))}function O0(t,e){if(e&1)return 2;let n=e>>1,r=t.status[n];if(r==4)throw new Error("Cyclic dependency between fields and/or facets");if(r&2)return r;t.status[n]=4;let s=t.computeSlot(t,t.config.dynamicSlots[n]);return t.status[n]=2|s}function Gv(t,e){return e&1?t.config.staticValues[e>>1]:t.values[e>>1]}const vF=st.define(),Ck=st.define({combine:t=>t.some(e=>e),static:!0}),yF=st.define({combine:t=>t.length?t[0]:void 0,static:!0}),bF=st.define(),wF=st.define(),SF=st.define(),kF=st.define({combine:t=>t.length?t[0]:!1});class Qo{constructor(e,n){this.type=e,this.value=n}static define(){return new Bae}}class Bae{of(e){return new Qo(this,e)}}class Fae{constructor(e){this.map=e}of(e){return new Qt(this,e)}}class Qt{constructor(e,n){this.type=e,this.value=n}map(e){let n=this.type.map(this.value,e);return n===void 0?void 0:n==this.value?this:new Qt(this.type,n)}is(e){return this.type==e}static define(e={}){return new Fae(e.map||(n=>n))}static mapEffects(e,n){if(!e.length)return e;let r=[];for(let s of e){let i=s.map(n);i&&r.push(i)}return r}}Qt.reconfigure=Qt.define();Qt.appendConfig=Qt.define();class ss{constructor(e,n,r,s,i,a){this.startState=e,this.changes=n,this.selection=r,this.effects=s,this.annotations=i,this.scrollIntoView=a,this._doc=null,this._state=null,r&&gF(r,n.newLength),i.some(l=>l.type==ss.time)||(this.annotations=i.concat(ss.time.of(Date.now())))}static create(e,n,r,s,i,a){return new ss(e,n,r,s,i,a)}get newDoc(){return this._doc||(this._doc=this.changes.apply(this.startState.doc))}get newSelection(){return this.selection||this.startState.selection.map(this.changes)}get state(){return this._state||this.startState.applyTransaction(this),this._state}annotation(e){for(let n of this.annotations)if(n.type==e)return n.value}get docChanged(){return!this.changes.empty}get reconfigured(){return this.startState.config!=this.state.config}isUserEvent(e){let n=this.annotation(ss.userEvent);return!!(n&&(n==e||n.length>e.length&&n.slice(0,e.length)==e&&n[e.length]=="."))}}ss.time=Qo.define();ss.userEvent=Qo.define();ss.addToHistory=Qo.define();ss.remote=Qo.define();function qae(t,e){let n=[];for(let r=0,s=0;;){let i,a;if(r=t[r]))i=t[r++],a=t[r++];else if(s=0;s--){let i=r[s](t);i instanceof ss?t=i:Array.isArray(i)&&i.length==1&&i[0]instanceof ss?t=i[0]:t=jF(e,Ph(i),!1)}return t}function Hae(t){let e=t.startState,n=e.facet(SF),r=t;for(let s=n.length-1;s>=0;s--){let i=n[s](t);i&&Object.keys(i).length&&(r=OF(r,Tk(e,i,t.changes.newLength),!0))}return r==t?t:ss.create(e,t.changes,t.selection,r.effects,r.annotations,r.scrollIntoView)}const Qae=[];function Ph(t){return t==null?Qae:Array.isArray(t)?t:[t]}var Tr=(function(t){return t[t.Word=0]="Word",t[t.Space=1]="Space",t[t.Other=2]="Other",t})(Tr||(Tr={}));const Vae=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;let Ek;try{Ek=new RegExp("[\\p{Alphabetic}\\p{Number}_]","u")}catch{}function Uae(t){if(Ek)return Ek.test(t);for(let e=0;e"€"&&(n.toUpperCase()!=n.toLowerCase()||Vae.test(n)))return!0}return!1}function Wae(t){return e=>{if(!/\S/.test(e))return Tr.Space;if(Uae(e))return Tr.Word;for(let n=0;n-1)return Tr.Word;return Tr.Other}}class Nn{constructor(e,n,r,s,i,a){this.config=e,this.doc=n,this.selection=r,this.values=s,this.status=e.statusTemplate.slice(),this.computeSlot=i,a&&(a._state=this);for(let l=0;ls.set(d,c)),n=null),s.set(l.value.compartment,l.value.extension)):l.is(Qt.reconfigure)?(n=null,r=l.value):l.is(Qt.appendConfig)&&(n=null,r=Ph(r).concat(l.value));let i;n?i=e.startState.values.slice():(n=Wv.resolve(r,s,this),i=new Nn(n,this.doc,this.selection,n.dynamicSlots.map(()=>null),(c,d)=>d.reconfigure(c,this),null).values);let a=e.startState.facet(Ck)?e.newSelection:e.newSelection.asSingle();new Nn(n,e.newDoc,a,i,(l,c)=>c.update(l,e),e)}replaceSelection(e){return typeof e=="string"&&(e=this.toText(e)),this.changeByRange(n=>({changes:{from:n.from,to:n.to,insert:e},range:Me.cursor(n.from+e.length)}))}changeByRange(e){let n=this.selection,r=e(n.ranges[0]),s=this.changes(r.changes),i=[r.range],a=Ph(r.effects);for(let l=1;la.spec.fromJSON(l,c)))}}return Nn.create({doc:e.doc,selection:Me.fromJSON(e.selection),extensions:n.extensions?s.concat([n.extensions]):s})}static create(e={}){let n=Wv.resolve(e.extensions||[],new Map),r=e.doc instanceof An?e.doc:An.of((e.doc||"").split(n.staticFacet(Nn.lineSeparator)||Sk)),s=e.selection?e.selection instanceof Me?e.selection:Me.single(e.selection.anchor,e.selection.head):Me.single(0);return gF(s,r.length),n.staticFacet(Ck)||(s=s.asSingle()),new Nn(n,r,s,n.dynamicSlots.map(()=>null),(i,a)=>a.create(i),null)}get tabSize(){return this.facet(Nn.tabSize)}get lineBreak(){return this.facet(Nn.lineSeparator)||` -`}get readOnly(){return this.facet(kF)}phrase(e,...n){for(let r of this.facet(Nn.phrases))if(Object.prototype.hasOwnProperty.call(r,e)){e=r[e];break}return n.length&&(e=e.replace(/\$(\$|\d*)/g,(r,s)=>{if(s=="$")return"$";let i=+(s||1);return!i||i>n.length?r:n[i-1]})),e}languageDataAt(e,n,r=-1){let s=[];for(let i of this.facet(vF))for(let a of i(this,n,r))Object.prototype.hasOwnProperty.call(a,e)&&s.push(a[e]);return s}charCategorizer(e){return Wae(this.languageDataAt("wordChars",e).join(""))}wordAt(e){let{text:n,from:r,length:s}=this.doc.lineAt(e),i=this.charCategorizer(e),a=e-r,l=e-r;for(;a>0;){let c=Ps(n,a,!1);if(i(n.slice(c,a))!=Tr.Word)break;a=c}for(;lt.length?t[0]:4});Nn.lineSeparator=yF;Nn.readOnly=kF;Nn.phrases=st.define({compare(t,e){let n=Object.keys(t),r=Object.keys(e);return n.length==r.length&&n.every(s=>t[s]==e[s])}});Nn.languageData=vF;Nn.changeFilter=bF;Nn.transactionFilter=wF;Nn.transactionExtender=SF;hb.reconfigure=Qt.define();function Vo(t,e,n={}){let r={};for(let s of t)for(let i of Object.keys(s)){let a=s[i],l=r[i];if(l===void 0)r[i]=a;else if(!(l===a||a===void 0))if(Object.hasOwnProperty.call(n,i))r[i]=n[i](l,a);else throw new Error("Config merge conflict for field "+i)}for(let s in e)r[s]===void 0&&(r[s]=e[s]);return r}class od{eq(e){return this==e}range(e,n=e){return _k.create(e,n,this)}}od.prototype.startSide=od.prototype.endSide=0;od.prototype.point=!1;od.prototype.mapMode=Ds.TrackDel;let _k=class NF{constructor(e,n,r){this.from=e,this.to=n,this.value=r}static create(e,n,r){return new NF(e,n,r)}};function Ak(t,e){return t.from-e.from||t.value.startSide-e.value.startSide}class o6{constructor(e,n,r,s){this.from=e,this.to=n,this.value=r,this.maxPoint=s}get length(){return this.to[this.to.length-1]}findIndex(e,n,r,s=0){let i=r?this.to:this.from;for(let a=s,l=i.length;;){if(a==l)return a;let c=a+l>>1,d=i[c]-e||(r?this.value[c].endSide:this.value[c].startSide)-n;if(c==a)return d>=0?a:l;d>=0?l=c:a=c+1}}between(e,n,r,s){for(let i=this.findIndex(n,-1e9,!0),a=this.findIndex(r,1e9,!1,i);ix||g==x&&d.startSide>0&&d.endSide<=0)continue;(x-g||d.endSide-d.startSide)<0||(a<0&&(a=g),d.point&&(l=Math.max(l,x-g)),r.push(d),s.push(g-a),i.push(x-a))}return{mapped:r.length?new o6(s,i,r,l):null,pos:a}}}class Bn{constructor(e,n,r,s){this.chunkPos=e,this.chunk=n,this.nextLayer=r,this.maxPoint=s}static create(e,n,r,s){return new Bn(e,n,r,s)}get length(){let e=this.chunk.length-1;return e<0?0:Math.max(this.chunkEnd(e),this.nextLayer.length)}get size(){if(this.isEmpty)return 0;let e=this.nextLayer.size;for(let n of this.chunk)e+=n.value.length;return e}chunkEnd(e){return this.chunkPos[e]+this.chunk[e].length}update(e){let{add:n=[],sort:r=!1,filterFrom:s=0,filterTo:i=this.length}=e,a=e.filter;if(n.length==0&&!a)return this;if(r&&(n=n.slice().sort(Ak)),this.isEmpty)return n.length?Bn.of(n):this;let l=new CF(this,null,-1).goto(0),c=0,d=[],h=new Hl;for(;l.value||c=0){let m=n[c++];h.addInner(m.from,m.to,m.value)||d.push(m)}else l.rangeIndex==1&&l.chunkIndexthis.chunkEnd(l.chunkIndex)||il.to||i=i&&e<=i+a.length&&a.between(i,e-i,n-i,r)===!1)return}this.nextLayer.between(e,n,r)}}iter(e=0){return Q0.from([this]).goto(e)}get isEmpty(){return this.nextLayer==this}static iter(e,n=0){return Q0.from(e).goto(n)}static compare(e,n,r,s,i=-1){let a=e.filter(m=>m.maxPoint>0||!m.isEmpty&&m.maxPoint>=i),l=n.filter(m=>m.maxPoint>0||!m.isEmpty&&m.maxPoint>=i),c=vE(a,l,r),d=new qm(a,c,i),h=new qm(l,c,i);r.iterGaps((m,g,x)=>yE(d,m,h,g,x,s)),r.empty&&r.length==0&&yE(d,0,h,0,0,s)}static eq(e,n,r=0,s){s==null&&(s=999999999);let i=e.filter(h=>!h.isEmpty&&n.indexOf(h)<0),a=n.filter(h=>!h.isEmpty&&e.indexOf(h)<0);if(i.length!=a.length)return!1;if(!i.length)return!0;let l=vE(i,a),c=new qm(i,l,0).goto(r),d=new qm(a,l,0).goto(r);for(;;){if(c.to!=d.to||!Mk(c.active,d.active)||c.point&&(!d.point||!c.point.eq(d.point)))return!1;if(c.to>s)return!0;c.next(),d.next()}}static spans(e,n,r,s,i=-1){let a=new qm(e,null,i).goto(n),l=n,c=a.openStart;for(;;){let d=Math.min(a.to,r);if(a.point){let h=a.activeForPoint(a.to),m=a.pointFroml&&(s.span(l,d,a.active,c),c=a.openEnd(d));if(a.to>r)return c+(a.point&&a.to>r?1:0);l=a.to,a.next()}}static of(e,n=!1){let r=new Hl;for(let s of e instanceof _k?[e]:n?Gae(e):e)r.add(s.from,s.to,s.value);return r.finish()}static join(e){if(!e.length)return Bn.empty;let n=e[e.length-1];for(let r=e.length-2;r>=0;r--)for(let s=e[r];s!=Bn.empty;s=s.nextLayer)n=new Bn(s.chunkPos,s.chunk,n,Math.max(s.maxPoint,n.maxPoint));return n}}Bn.empty=new Bn([],[],null,-1);function Gae(t){if(t.length>1)for(let e=t[0],n=1;n0)return t.slice().sort(Ak);e=r}return t}Bn.empty.nextLayer=Bn.empty;class Hl{finishChunk(e){this.chunks.push(new o6(this.from,this.to,this.value,this.maxPoint)),this.chunkPos.push(this.chunkStart),this.chunkStart=-1,this.setMaxPoint=Math.max(this.setMaxPoint,this.maxPoint),this.maxPoint=-1,e&&(this.from=[],this.to=[],this.value=[])}constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.last=null,this.lastFrom=-1e9,this.lastTo=-1e9,this.from=[],this.to=[],this.value=[],this.maxPoint=-1,this.setMaxPoint=-1,this.nextLayer=null}add(e,n,r){this.addInner(e,n,r)||(this.nextLayer||(this.nextLayer=new Hl)).add(e,n,r)}addInner(e,n,r){let s=e-this.lastTo||r.startSide-this.last.endSide;if(s<=0&&(e-this.lastFrom||r.startSide-this.last.startSide)<0)throw new Error("Ranges must be added sorted by `from` position and `startSide`");return s<0?!1:(this.from.length==250&&this.finishChunk(!0),this.chunkStart<0&&(this.chunkStart=e),this.from.push(e-this.chunkStart),this.to.push(n-this.chunkStart),this.last=r,this.lastFrom=e,this.lastTo=n,this.value.push(r),r.point&&(this.maxPoint=Math.max(this.maxPoint,n-e)),!0)}addChunk(e,n){if((e-this.lastTo||n.value[0].startSide-this.last.endSide)<0)return!1;this.from.length&&this.finishChunk(!0),this.setMaxPoint=Math.max(this.setMaxPoint,n.maxPoint),this.chunks.push(n),this.chunkPos.push(e);let r=n.value.length-1;return this.last=n.value[r],this.lastFrom=n.from[r]+e,this.lastTo=n.to[r]+e,!0}finish(){return this.finishInner(Bn.empty)}finishInner(e){if(this.from.length&&this.finishChunk(!1),this.chunks.length==0)return e;let n=Bn.create(this.chunkPos,this.chunks,this.nextLayer?this.nextLayer.finishInner(e):e,this.setMaxPoint);return this.from=null,n}}function vE(t,e,n){let r=new Map;for(let i of t)for(let a=0;a=this.minPoint)break}}setRangeIndex(e){if(e==this.layer.chunk[this.chunkIndex].value.length){if(this.chunkIndex++,this.skip)for(;this.chunkIndex=r&&s.push(new CF(a,n,r,i));return s.length==1?s[0]:new Q0(s)}get startSide(){return this.value?this.value.startSide:0}goto(e,n=-1e9){for(let r of this.heap)r.goto(e,n);for(let r=this.heap.length>>1;r>=0;r--)I4(this.heap,r);return this.next(),this}forward(e,n){for(let r of this.heap)r.forward(e,n);for(let r=this.heap.length>>1;r>=0;r--)I4(this.heap,r);(this.to-e||this.value.endSide-n)<0&&this.next()}next(){if(this.heap.length==0)this.from=this.to=1e9,this.value=null,this.rank=-1;else{let e=this.heap[0];this.from=e.from,this.to=e.to,this.value=e.value,this.rank=e.rank,e.value&&e.next(),I4(this.heap,0)}}}function I4(t,e){for(let n=t[e];;){let r=(e<<1)+1;if(r>=t.length)break;let s=t[r];if(r+1=0&&(s=t[r+1],r++),n.compare(s)<0)break;t[r]=n,t[e]=s,e=r}}class qm{constructor(e,n,r){this.minPoint=r,this.active=[],this.activeTo=[],this.activeRank=[],this.minActive=-1,this.point=null,this.pointFrom=0,this.pointRank=0,this.to=-1e9,this.endSide=0,this.openStart=-1,this.cursor=Q0.from(e,n,r)}goto(e,n=-1e9){return this.cursor.goto(e,n),this.active.length=this.activeTo.length=this.activeRank.length=0,this.minActive=-1,this.to=e,this.endSide=n,this.openStart=-1,this.next(),this}forward(e,n){for(;this.minActive>-1&&(this.activeTo[this.minActive]-e||this.active[this.minActive].endSide-n)<0;)this.removeActive(this.minActive);this.cursor.forward(e,n)}removeActive(e){s1(this.active,e),s1(this.activeTo,e),s1(this.activeRank,e),this.minActive=bE(this.active,this.activeTo)}addActive(e){let n=0,{value:r,to:s,rank:i}=this.cursor;for(;n0;)n++;i1(this.active,n,r),i1(this.activeTo,n,s),i1(this.activeRank,n,i),e&&i1(e,n,this.cursor.from),this.minActive=bE(this.active,this.activeTo)}next(){let e=this.to,n=this.point;this.point=null;let r=this.openStart<0?[]:null;for(;;){let s=this.minActive;if(s>-1&&(this.activeTo[s]-this.cursor.from||this.active[s].endSide-this.cursor.startSide)<0){if(this.activeTo[s]>e){this.to=this.activeTo[s],this.endSide=this.active[s].endSide;break}this.removeActive(s),r&&s1(r,s)}else if(this.cursor.value)if(this.cursor.from>e){this.to=this.cursor.from,this.endSide=this.cursor.startSide;break}else{let i=this.cursor.value;if(!i.point)this.addActive(r),this.cursor.next();else if(n&&this.cursor.to==this.to&&this.cursor.from=0&&r[s]=0&&!(this.activeRank[r]e||this.activeTo[r]==e&&this.active[r].endSide>=this.point.endSide)&&n.push(this.active[r]);return n.reverse()}openEnd(e){let n=0;for(let r=this.activeTo.length-1;r>=0&&this.activeTo[r]>e;r--)n++;return n}}function yE(t,e,n,r,s,i){t.goto(e),n.goto(r);let a=r+s,l=r,c=r-e;for(;;){let d=t.to+c-n.to,h=d||t.endSide-n.endSide,m=h<0?t.to+c:n.to,g=Math.min(m,a);if(t.point||n.point?t.point&&n.point&&(t.point==n.point||t.point.eq(n.point))&&Mk(t.activeForPoint(t.to),n.activeForPoint(n.to))||i.comparePoint(l,g,t.point,n.point):g>l&&!Mk(t.active,n.active)&&i.compareRange(l,g,t.active,n.active),m>a)break;(d||t.openEnd!=n.openEnd)&&i.boundChange&&i.boundChange(m),l=m,h<=0&&t.next(),h>=0&&n.next()}}function Mk(t,e){if(t.length!=e.length)return!1;for(let n=0;n=e;r--)t[r+1]=t[r];t[e]=n}function bE(t,e){let n=-1,r=1e9;for(let s=0;s=e)return s;if(s==t.length)break;i+=t.charCodeAt(s)==9?n-i%n:1,s=Ps(t,s)}return r===!0?-1:t.length}const Dk="ͼ",wE=typeof Symbol>"u"?"__"+Dk:Symbol.for(Dk),Pk=typeof Symbol>"u"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),SE=typeof globalThis<"u"?globalThis:typeof window<"u"?window:{};class Yc{constructor(e,n){this.rules=[];let{finish:r}=n||{};function s(a){return/^@/.test(a)?[a]:a.split(/,\s*/)}function i(a,l,c,d){let h=[],m=/^@(\w+)\b/.exec(a[0]),g=m&&m[1]=="keyframes";if(m&&l==null)return c.push(a[0]+";");for(let x in l){let y=l[x];if(/&/.test(x))i(x.split(/,\s*/).map(w=>a.map(S=>w.replace(/&/,S))).reduce((w,S)=>w.concat(S)),y,c);else if(y&&typeof y=="object"){if(!m)throw new RangeError("The value of a property ("+x+") should be a primitive value.");i(s(x),y,h,g)}else y!=null&&h.push(x.replace(/_.*/,"").replace(/[A-Z]/g,w=>"-"+w.toLowerCase())+": "+y+";")}(h.length||g)&&c.push((r&&!m&&!d?a.map(r):a).join(", ")+" {"+h.join(" ")+"}")}for(let a in e)i(s(a),e[a],this.rules)}getRules(){return this.rules.join(` -`)}static newName(){let e=SE[wE]||1;return SE[wE]=e+1,Dk+e.toString(36)}static mount(e,n,r){let s=e[Pk],i=r&&r.nonce;s?i&&s.setNonce(i):s=new Xae(e,i),s.mount(Array.isArray(n)?n:[n],e)}}let kE=new Map;class Xae{constructor(e,n){let r=e.ownerDocument||e,s=r.defaultView;if(!e.head&&e.adoptedStyleSheets&&s.CSSStyleSheet){let i=kE.get(r);if(i)return e[Pk]=i;this.sheet=new s.CSSStyleSheet,kE.set(r,this)}else this.styleTag=r.createElement("style"),n&&this.styleTag.setAttribute("nonce",n);this.modules=[],e[Pk]=this}mount(e,n){let r=this.sheet,s=0,i=0;for(let a=0;a-1&&(this.modules.splice(c,1),i--,c=-1),c==-1){if(this.modules.splice(i++,0,l),r)for(let d=0;d",191:"?",192:"~",219:"{",220:"|",221:"}",222:'"'},Yae=typeof navigator<"u"&&/Mac/.test(navigator.platform),Kae=typeof navigator<"u"&&/MSIE \d|Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);for(var Ms=0;Ms<10;Ms++)Kc[48+Ms]=Kc[96+Ms]=String(Ms);for(var Ms=1;Ms<=24;Ms++)Kc[Ms+111]="F"+Ms;for(var Ms=65;Ms<=90;Ms++)Kc[Ms]=String.fromCharCode(Ms+32),V0[Ms]=String.fromCharCode(Ms);for(var L4 in Kc)V0.hasOwnProperty(L4)||(V0[L4]=Kc[L4]);function Zae(t){var e=Yae&&t.metaKey&&t.shiftKey&&!t.ctrlKey&&!t.altKey||Kae&&t.shiftKey&&t.key&&t.key.length==1||t.key=="Unidentified",n=!e&&t.key||(t.shiftKey?V0:Kc)[t.keyCode]||t.key||"Unidentified";return n=="Esc"&&(n="Escape"),n=="Del"&&(n="Delete"),n=="Left"&&(n="ArrowLeft"),n=="Up"&&(n="ArrowUp"),n=="Right"&&(n="ArrowRight"),n=="Down"&&(n="ArrowDown"),n}function lr(){var t=arguments[0];typeof t=="string"&&(t=document.createElement(t));var e=1,n=arguments[1];if(n&&typeof n=="object"&&n.nodeType==null&&!Array.isArray(n)){for(var r in n)if(Object.prototype.hasOwnProperty.call(n,r)){var s=n[r];typeof s=="string"?t.setAttribute(r,s):s!=null&&(t[r]=s)}e++}for(;e2);var et={mac:jE||/Mac/.test(Js.platform),windows:/Win/.test(Js.platform),linux:/Linux|X11/.test(Js.platform),ie:fb,ie_version:EF?zk.documentMode||6:Lk?+Lk[1]:Ik?+Ik[1]:0,gecko:OE,gecko_version:OE?+(/Firefox\/(\d+)/.exec(Js.userAgent)||[0,0])[1]:0,chrome:!!B4,chrome_version:B4?+B4[1]:0,ios:jE,android:/Android\b/.test(Js.userAgent),webkit_version:Jae?+(/\bAppleWebKit\/(\d+)/.exec(Js.userAgent)||[0,0])[1]:0,safari:Bk,safari_version:Bk?+(/\bVersion\/(\d+(\.\d+)?)/.exec(Js.userAgent)||[0,0])[1]:0,tabSize:zk.documentElement.style.tabSize!=null?"tab-size":"-moz-tab-size"};function U0(t){let e;return t.nodeType==11?e=t.getSelection?t:t.ownerDocument:e=t,e.getSelection()}function Fk(t,e){return e?t==e||t.contains(e.nodeType!=1?e.parentNode:e):!1}function fv(t,e){if(!e.anchorNode)return!1;try{return Fk(t,e.anchorNode)}catch{return!1}}function Jh(t){return t.nodeType==3?cd(t,0,t.nodeValue.length).getClientRects():t.nodeType==1?t.getClientRects():[]}function j0(t,e,n,r){return n?NE(t,e,n,r,-1)||NE(t,e,n,r,1):!1}function ld(t){for(var e=0;;e++)if(t=t.previousSibling,!t)return e}function Xv(t){return t.nodeType==1&&/^(DIV|P|LI|UL|OL|BLOCKQUOTE|DD|DT|H\d|SECTION|PRE)$/.test(t.nodeName)}function NE(t,e,n,r,s){for(;;){if(t==n&&e==r)return!0;if(e==(s<0?0:qo(t))){if(t.nodeName=="DIV")return!1;let i=t.parentNode;if(!i||i.nodeType!=1)return!1;e=ld(t)+(s<0?0:1),t=i}else if(t.nodeType==1){if(t=t.childNodes[e+(s<0?-1:0)],t.nodeType==1&&t.contentEditable=="false")return!1;e=s<0?qo(t):0}else return!1}}function qo(t){return t.nodeType==3?t.nodeValue.length:t.childNodes.length}function Up(t,e){let n=e?t.left:t.right;return{left:n,right:n,top:t.top,bottom:t.bottom}}function eoe(t){let e=t.visualViewport;return e?{left:0,right:e.width,top:0,bottom:e.height}:{left:0,right:t.innerWidth,top:0,bottom:t.innerHeight}}function _F(t,e){let n=e.width/t.offsetWidth,r=e.height/t.offsetHeight;return(n>.995&&n<1.005||!isFinite(n)||Math.abs(e.width-t.offsetWidth)<1)&&(n=1),(r>.995&&r<1.005||!isFinite(r)||Math.abs(e.height-t.offsetHeight)<1)&&(r=1),{scaleX:n,scaleY:r}}function toe(t,e,n,r,s,i,a,l){let c=t.ownerDocument,d=c.defaultView||window;for(let h=t,m=!1;h&&!m;)if(h.nodeType==1){let g,x=h==c.body,y=1,w=1;if(x)g=eoe(d);else{if(/^(fixed|sticky)$/.test(getComputedStyle(h).position)&&(m=!0),h.scrollHeight<=h.clientHeight&&h.scrollWidth<=h.clientWidth){h=h.assignedSlot||h.parentNode;continue}let j=h.getBoundingClientRect();({scaleX:y,scaleY:w}=_F(h,j)),g={left:j.left,right:j.left+h.clientWidth*y,top:j.top,bottom:j.top+h.clientHeight*w}}let S=0,k=0;if(s=="nearest")e.top0&&e.bottom>g.bottom+k&&(k=e.bottom-g.bottom+a)):e.bottom>g.bottom&&(k=e.bottom-g.bottom+a,n<0&&e.top-k0&&e.right>g.right+S&&(S=e.right-g.right+i)):e.right>g.right&&(S=e.right-g.right+i,n<0&&e.leftg.bottom||e.leftg.right)&&(e={left:Math.max(e.left,g.left),right:Math.min(e.right,g.right),top:Math.max(e.top,g.top),bottom:Math.min(e.bottom,g.bottom)}),h=h.assignedSlot||h.parentNode}else if(h.nodeType==11)h=h.host;else break}function noe(t){let e=t.ownerDocument,n,r;for(let s=t.parentNode;s&&!(s==e.body||n&&r);)if(s.nodeType==1)!r&&s.scrollHeight>s.clientHeight&&(r=s),!n&&s.scrollWidth>s.clientWidth&&(n=s),s=s.assignedSlot||s.parentNode;else if(s.nodeType==11)s=s.host;else break;return{x:n,y:r}}class roe{constructor(){this.anchorNode=null,this.anchorOffset=0,this.focusNode=null,this.focusOffset=0}eq(e){return this.anchorNode==e.anchorNode&&this.anchorOffset==e.anchorOffset&&this.focusNode==e.focusNode&&this.focusOffset==e.focusOffset}setRange(e){let{anchorNode:n,focusNode:r}=e;this.set(n,Math.min(e.anchorOffset,n?qo(n):0),r,Math.min(e.focusOffset,r?qo(r):0))}set(e,n,r,s){this.anchorNode=e,this.anchorOffset=n,this.focusNode=r,this.focusOffset=s}}let Fu=null;et.safari&&et.safari_version>=26&&(Fu=!1);function AF(t){if(t.setActive)return t.setActive();if(Fu)return t.focus(Fu);let e=[];for(let n=t;n&&(e.push(n,n.scrollTop,n.scrollLeft),n!=n.ownerDocument);n=n.parentNode);if(t.focus(Fu==null?{get preventScroll(){return Fu={preventScroll:!0},!0}}:void 0),!Fu){Fu=!1;for(let n=0;nMath.max(1,t.scrollHeight-t.clientHeight-4)}function DF(t,e){for(let n=t,r=e;;){if(n.nodeType==3&&r>0)return{node:n,offset:r};if(n.nodeType==1&&r>0){if(n.contentEditable=="false")return null;n=n.childNodes[r-1],r=qo(n)}else if(n.parentNode&&!Xv(n))r=ld(n),n=n.parentNode;else return null}}function PF(t,e){for(let n=t,r=e;;){if(n.nodeType==3&&rn)return m.domBoundsAround(e,n,d);if(g>=e&&s==-1&&(s=c,i=d),d>n&&m.dom.parentNode==this.dom){a=c,l=h;break}h=g,d=g+m.breakAfter}return{from:i,to:l<0?r+this.length:l,startDOM:(s?this.children[s-1].dom.nextSibling:null)||this.dom.firstChild,endDOM:a=0?this.children[a].dom:null}}markDirty(e=!1){this.flags|=2,this.markParentsDirty(e)}markParentsDirty(e){for(let n=this.parent;n;n=n.parent){if(e&&(n.flags|=2),n.flags&1)return;n.flags|=1,e=!1}}setParent(e){this.parent!=e&&(this.parent=e,this.flags&7&&this.markParentsDirty(!0))}setDOM(e){this.dom!=e&&(this.dom&&(this.dom.cmView=null),this.dom=e,e.cmView=this)}get rootView(){for(let e=this;;){let n=e.parent;if(!n)return e;e=n}}replaceChildren(e,n,r=l6){this.markDirty();for(let s=e;sthis.pos||e==this.pos&&(n>0||this.i==0||this.children[this.i-1].breakAfter))return this.off=e-this.pos,this;let r=this.children[--this.i];this.pos-=r.length+r.breakAfter}}}function IF(t,e,n,r,s,i,a,l,c){let{children:d}=t,h=d.length?d[e]:null,m=i.length?i[i.length-1]:null,g=m?m.breakAfter:a;if(!(e==r&&h&&!a&&!g&&i.length<2&&h.merge(n,s,i.length?m:null,n==0,l,c))){if(r0&&(!a&&i.length&&h.merge(n,h.length,i[0],!1,l,0)?h.breakAfter=i.shift().breakAfter:(naoe||r.flags&8)?!1:(this.text=this.text.slice(0,e)+(r?r.text:"")+this.text.slice(n),this.markDirty(),!0)}split(e){let n=new Za(this.text.slice(e));return this.text=this.text.slice(0,e),this.markDirty(),n.flags|=this.flags&8,n}localPosFromDOM(e,n){return e==this.dom?n:n?this.text.length:0}domAtPos(e){return new Hs(this.dom,e)}domBoundsAround(e,n,r){return{from:r,to:r+this.length,startDOM:this.dom,endDOM:this.dom.nextSibling}}coordsAt(e,n){return ooe(this.dom,e,n)}}class Ql extends sr{constructor(e,n=[],r=0){super(),this.mark=e,this.children=n,this.length=r;for(let s of n)s.setParent(this)}setAttrs(e){if(MF(e),this.mark.class&&(e.className=this.mark.class),this.mark.attrs)for(let n in this.mark.attrs)e.setAttribute(n,this.mark.attrs[n]);return e}canReuseDOM(e){return super.canReuseDOM(e)&&!((this.flags|e.flags)&8)}reuseDOM(e){e.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(e),this.flags|=6)}sync(e,n){this.dom?this.flags&4&&this.setAttrs(this.dom):this.setDOM(this.setAttrs(document.createElement(this.mark.tagName))),super.sync(e,n)}merge(e,n,r,s,i,a){return r&&(!(r instanceof Ql&&r.mark.eq(this.mark))||e&&i<=0||ne&&n.push(r=e&&(s=i),r=c,i++}let a=this.length-e;return this.length=e,s>-1&&(this.children.length=s,this.markDirty()),new Ql(this.mark,n,a)}domAtPos(e){return BF(this,e)}coordsAt(e,n){return qF(this,e,n)}}function ooe(t,e,n){let r=t.nodeValue.length;e>r&&(e=r);let s=e,i=e,a=0;e==0&&n<0||e==r&&n>=0?et.chrome||et.gecko||(e?(s--,a=1):i=0)?0:l.length-1];return et.safari&&!a&&c.width==0&&(c=Array.prototype.find.call(l,d=>d.width)||c),a?Up(c,a<0):c||null}class Dl extends sr{static create(e,n,r){return new Dl(e,n,r)}constructor(e,n,r){super(),this.widget=e,this.length=n,this.side=r,this.prevWidget=null}split(e){let n=Dl.create(this.widget,this.length-e,this.side);return this.length-=e,n}sync(e){(!this.dom||!this.widget.updateDOM(this.dom,e))&&(this.dom&&this.prevWidget&&this.prevWidget.destroy(this.dom),this.prevWidget=null,this.setDOM(this.widget.toDOM(e)),this.widget.editable||(this.dom.contentEditable="false"))}getSide(){return this.side}merge(e,n,r,s,i,a){return r&&(!(r instanceof Dl)||!this.widget.compare(r.widget)||e>0&&i<=0||n0)?Hs.before(this.dom):Hs.after(this.dom,e==this.length)}domBoundsAround(){return null}coordsAt(e,n){let r=this.widget.coordsAt(this.dom,e,n);if(r)return r;let s=this.dom.getClientRects(),i=null;if(!s.length)return null;let a=this.side?this.side<0:e>0;for(let l=a?s.length-1:0;i=s[l],!(e>0?l==0:l==s.length-1||i.top0?Hs.before(this.dom):Hs.after(this.dom)}localPosFromDOM(){return 0}domBoundsAround(){return null}coordsAt(e){return this.dom.getBoundingClientRect()}get overrideDOMText(){return An.empty}get isHidden(){return!0}}Za.prototype.children=Dl.prototype.children=ef.prototype.children=l6;function BF(t,e){let n=t.dom,{children:r}=t,s=0;for(let i=0;si&&e0;i--){let a=r[i-1];if(a.dom.parentNode==n)return a.domAtPos(a.length)}for(let i=s;i0&&e instanceof Ql&&s.length&&(r=s[s.length-1])instanceof Ql&&r.mark.eq(e.mark)?FF(r,e.children[0],n-1):(s.push(e),e.setParent(t)),t.length+=e.length}function qF(t,e,n){let r=null,s=-1,i=null,a=-1;function l(d,h){for(let m=0,g=0;m=h&&(x.children.length?l(x,h-g):(!i||i.isHidden&&(n>0||coe(i,x)))&&(y>h||g==y&&x.getSide()>0)?(i=x,a=h-g):(g-1?1:0)!=s.length-(n&&s.indexOf(n)>-1?1:0))return!1;for(let i of r)if(i!=n&&(s.indexOf(i)==-1||t[i]!==e[i]))return!1;return!0}function $k(t,e,n){let r=!1;if(e)for(let s in e)n&&s in n||(r=!0,s=="style"?t.style.cssText="":t.removeAttribute(s));if(n)for(let s in n)e&&e[s]==n[s]||(r=!0,s=="style"?t.style.cssText=n[s]:t.setAttribute(s,n[s]));return r}function uoe(t){let e=Object.create(null);for(let n=0;n0?3e8:-4e8:n>0?1e8:-1e8,new Zc(e,n,n,r,e.widget||null,!1)}static replace(e){let n=!!e.block,r,s;if(e.isBlockGap)r=-5e8,s=4e8;else{let{start:i,end:a}=$F(e,n);r=(i?n?-3e8:-1:5e8)-1,s=(a?n?2e8:1:-6e8)+1}return new Zc(e,r,s,n,e.widget||null,!0)}static line(e){return new Gp(e)}static set(e,n=!1){return Bn.of(e,n)}hasHeight(){return this.widget?this.widget.estimatedHeight>-1:!1}}Ot.none=Bn.empty;class Wp extends Ot{constructor(e){let{start:n,end:r}=$F(e);super(n?-1:5e8,r?1:-6e8,null,e),this.tagName=e.tagName||"span",this.class=e.class||"",this.attrs=e.attributes||null}eq(e){var n,r;return this==e||e instanceof Wp&&this.tagName==e.tagName&&(this.class||((n=this.attrs)===null||n===void 0?void 0:n.class))==(e.class||((r=e.attrs)===null||r===void 0?void 0:r.class))&&Yv(this.attrs,e.attrs,"class")}range(e,n=e){if(e>=n)throw new RangeError("Mark decorations may not be empty");return super.range(e,n)}}Wp.prototype.point=!1;class Gp extends Ot{constructor(e){super(-2e8,-2e8,null,e)}eq(e){return e instanceof Gp&&this.spec.class==e.spec.class&&Yv(this.spec.attributes,e.spec.attributes)}range(e,n=e){if(n!=e)throw new RangeError("Line decoration ranges must be zero-length");return super.range(e,n)}}Gp.prototype.mapMode=Ds.TrackBefore;Gp.prototype.point=!0;class Zc extends Ot{constructor(e,n,r,s,i,a){super(n,r,i,e),this.block=s,this.isReplace=a,this.mapMode=s?n<=0?Ds.TrackBefore:Ds.TrackAfter:Ds.TrackDel}get type(){return this.startSide!=this.endSide?ri.WidgetRange:this.startSide<=0?ri.WidgetBefore:ri.WidgetAfter}get heightRelevant(){return this.block||!!this.widget&&(this.widget.estimatedHeight>=5||this.widget.lineBreaks>0)}eq(e){return e instanceof Zc&&doe(this.widget,e.widget)&&this.block==e.block&&this.startSide==e.startSide&&this.endSide==e.endSide}range(e,n=e){if(this.isReplace&&(e>n||e==n&&this.startSide>0&&this.endSide<=0))throw new RangeError("Invalid range for replacement decoration");if(!this.isReplace&&n!=e)throw new RangeError("Widget decorations can only have zero-length ranges");return super.range(e,n)}}Zc.prototype.point=!0;function $F(t,e=!1){let{inclusiveStart:n,inclusiveEnd:r}=t;return n==null&&(n=t.inclusive),r==null&&(r=t.inclusive),{start:n??e,end:r??e}}function doe(t,e){return t==e||!!(t&&e&&t.compare(e))}function mv(t,e,n,r=0){let s=n.length-1;s>=0&&n[s]+r>=t?n[s]=Math.max(n[s],e):n.push(t,e)}class rs extends sr{constructor(){super(...arguments),this.children=[],this.length=0,this.prevAttrs=void 0,this.attrs=null,this.breakAfter=0}merge(e,n,r,s,i,a){if(r){if(!(r instanceof rs))return!1;this.dom||r.transferDOM(this)}return s&&this.setDeco(r?r.attrs:null),LF(this,e,n,r?r.children.slice():[],i,a),!0}split(e){let n=new rs;if(n.breakAfter=this.breakAfter,this.length==0)return n;let{i:r,off:s}=this.childPos(e);s&&(n.append(this.children[r].split(s),0),this.children[r].merge(s,this.children[r].length,null,!1,0,0),r++);for(let i=r;i0&&this.children[r-1].length==0;)this.children[--r].destroy();return this.children.length=r,this.markDirty(),this.length=e,n}transferDOM(e){this.dom&&(this.markDirty(),e.setDOM(this.dom),e.prevAttrs=this.prevAttrs===void 0?this.attrs:this.prevAttrs,this.prevAttrs=void 0,this.dom=null)}setDeco(e){Yv(this.attrs,e)||(this.dom&&(this.prevAttrs=this.attrs,this.markDirty()),this.attrs=e)}append(e,n){FF(this,e,n)}addLineDeco(e){let n=e.spec.attributes,r=e.spec.class;n&&(this.attrs=qk(n,this.attrs||{})),r&&(this.attrs=qk({class:r},this.attrs||{}))}domAtPos(e){return BF(this,e)}reuseDOM(e){e.nodeName=="DIV"&&(this.setDOM(e),this.flags|=6)}sync(e,n){var r;this.dom?this.flags&4&&(MF(this.dom),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0):(this.setDOM(document.createElement("div")),this.dom.className="cm-line",this.prevAttrs=this.attrs?null:void 0),this.prevAttrs!==void 0&&($k(this.dom,this.prevAttrs,this.attrs),this.dom.classList.add("cm-line"),this.prevAttrs=void 0),super.sync(e,n);let s=this.dom.lastChild;for(;s&&sr.get(s)instanceof Ql;)s=s.lastChild;if(!s||!this.length||s.nodeName!="BR"&&((r=sr.get(s))===null||r===void 0?void 0:r.isEditable)==!1&&(!et.ios||!this.children.some(i=>i instanceof Za))){let i=document.createElement("BR");i.cmIgnore=!0,this.dom.appendChild(i)}}measureTextSize(){if(this.children.length==0||this.length>20)return null;let e=0,n;for(let r of this.children){if(!(r instanceof Za)||/[^ -~]/.test(r.text))return null;let s=Jh(r.dom);if(s.length!=1)return null;e+=s[0].width,n=s[0].height}return e?{lineHeight:this.dom.getBoundingClientRect().height,charWidth:e/this.length,textHeight:n}:null}coordsAt(e,n){let r=qF(this,e,n);if(!this.children.length&&r&&this.parent){let{heightOracle:s}=this.parent.view.viewState,i=r.bottom-r.top;if(Math.abs(i-s.lineHeight)<2&&s.textHeight=n){if(i instanceof rs)return i;if(a>n)break}s=a+i.breakAfter}return null}}class Bl extends sr{constructor(e,n,r){super(),this.widget=e,this.length=n,this.deco=r,this.breakAfter=0,this.prevWidget=null}merge(e,n,r,s,i,a){return r&&(!(r instanceof Bl)||!this.widget.compare(r.widget)||e>0&&i<=0||n0}}class Hk extends Uo{constructor(e){super(),this.height=e}toDOM(){let e=document.createElement("div");return e.className="cm-gap",this.updateDOM(e),e}eq(e){return e.height==this.height}updateDOM(e){return e.style.height=this.height+"px",!0}get editable(){return!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}}class N0{constructor(e,n,r,s){this.doc=e,this.pos=n,this.end=r,this.disallowBlockEffectsFor=s,this.content=[],this.curLine=null,this.breakAtStart=0,this.pendingBuffer=0,this.bufferMarks=[],this.atCursorPos=!0,this.openStart=-1,this.openEnd=-1,this.text="",this.textOff=0,this.cursor=e.iter(),this.skip=n}posCovered(){if(this.content.length==0)return!this.breakAtStart&&this.doc.lineAt(this.pos).from!=this.pos;let e=this.content[this.content.length-1];return!(e.breakAfter||e instanceof Bl&&e.deco.endSide<0)}getLine(){return this.curLine||(this.content.push(this.curLine=new rs),this.atCursorPos=!0),this.curLine}flushBuffer(e=this.bufferMarks){this.pendingBuffer&&(this.curLine.append(a1(new ef(-1),e),e.length),this.pendingBuffer=0)}addBlockWidget(e){this.flushBuffer(),this.curLine=null,this.content.push(e)}finish(e){this.pendingBuffer&&e<=this.bufferMarks.length?this.flushBuffer():this.pendingBuffer=0,!this.posCovered()&&!(e&&this.content.length&&this.content[this.content.length-1]instanceof Bl)&&this.getLine()}buildText(e,n,r){for(;e>0;){if(this.textOff==this.text.length){let{value:a,lineBreak:l,done:c}=this.cursor.next(this.skip);if(this.skip=0,c)throw new Error("Ran out of text content when drawing inline views");if(l){this.posCovered()||this.getLine(),this.content.length?this.content[this.content.length-1].breakAfter=1:this.breakAtStart=1,this.flushBuffer(),this.curLine=null,this.atCursorPos=!0,e--;continue}else this.text=a,this.textOff=0}let s=Math.min(this.text.length-this.textOff,e),i=Math.min(s,512);this.flushBuffer(n.slice(n.length-r)),this.getLine().append(a1(new Za(this.text.slice(this.textOff,this.textOff+i)),n),r),this.atCursorPos=!0,this.textOff+=i,e-=i,r=s<=i?0:n.length}}span(e,n,r,s){this.buildText(n-e,r,s),this.pos=n,this.openStart<0&&(this.openStart=s)}point(e,n,r,s,i,a){if(this.disallowBlockEffectsFor[a]&&r instanceof Zc){if(r.block)throw new RangeError("Block decorations may not be specified via plugins");if(n>this.doc.lineAt(this.pos).to)throw new RangeError("Decorations that replace line breaks may not be specified via plugins")}let l=n-e;if(r instanceof Zc)if(r.block)r.startSide>0&&!this.posCovered()&&this.getLine(),this.addBlockWidget(new Bl(r.widget||tf.block,l,r));else{let c=Dl.create(r.widget||tf.inline,l,l?0:r.startSide),d=this.atCursorPos&&!c.isEditable&&i<=s.length&&(e0),h=!c.isEditable&&(es.length||r.startSide<=0),m=this.getLine();this.pendingBuffer==2&&!d&&!c.isEditable&&(this.pendingBuffer=0),this.flushBuffer(s),d&&(m.append(a1(new ef(1),s),i),i=s.length+Math.max(0,i-s.length)),m.append(a1(c,s),i),this.atCursorPos=h,this.pendingBuffer=h?es.length?1:2:0,this.pendingBuffer&&(this.bufferMarks=s.slice())}else this.doc.lineAt(this.pos).from==this.pos&&this.getLine().addLineDeco(r);l&&(this.textOff+l<=this.text.length?this.textOff+=l:(this.skip+=l-(this.text.length-this.textOff),this.text="",this.textOff=0),this.pos=n),this.openStart<0&&(this.openStart=i)}static build(e,n,r,s,i){let a=new N0(e,n,r,i);return a.openEnd=Bn.spans(s,n,r,a),a.openStart<0&&(a.openStart=a.openEnd),a.finish(a.openEnd),a}}function a1(t,e){for(let n of e)t=new Ql(n,[t],t.length);return t}class tf extends Uo{constructor(e){super(),this.tag=e}eq(e){return e.tag==this.tag}toDOM(){return document.createElement(this.tag)}updateDOM(e){return e.nodeName.toLowerCase()==this.tag}get isHidden(){return!0}}tf.inline=new tf("span");tf.block=new tf("div");var br=(function(t){return t[t.LTR=0]="LTR",t[t.RTL=1]="RTL",t})(br||(br={}));const ud=br.LTR,c6=br.RTL;function HF(t){let e=[];for(let n=0;n=n){if(l.level==r)return a;(i<0||(s!=0?s<0?l.fromn:e[i].level>l.level))&&(i=a)}}if(i<0)throw new RangeError("Index out of range");return i}}function VF(t,e){if(t.length!=e.length)return!1;for(let n=0;n=0;w-=3)if(mo[w+1]==-x){let S=mo[w+2],k=S&2?s:S&4?S&1?i:s:0;k&&(cr[m]=cr[mo[w]]=k),l=w;break}}else{if(mo.length==189)break;mo[l++]=m,mo[l++]=g,mo[l++]=c}else if((y=cr[m])==2||y==1){let w=y==s;c=w?0:1;for(let S=l-3;S>=0;S-=3){let k=mo[S+2];if(k&2)break;if(w)mo[S+2]|=2;else{if(k&4)break;mo[S+2]|=4}}}}}function xoe(t,e,n,r){for(let s=0,i=r;s<=n.length;s++){let a=s?n[s-1].to:t,l=sc;)y==S&&(y=n[--w].from,S=w?n[w-1].to:t),cr[--y]=x;c=h}else i=d,c++}}}function Vk(t,e,n,r,s,i,a){let l=r%2?2:1;if(r%2==s%2)for(let c=e,d=0;cc&&a.push(new Hc(c,w.from,x));let S=w.direction==ud!=!(x%2);Uk(t,S?r+1:r,s,w.inner,w.from,w.to,a),c=w.to}y=w.to}else{if(y==n||(h?cr[y]!=l:cr[y]==l))break;y++}g?Vk(t,c,y,r+1,s,g,a):ce;){let h=!0,m=!1;if(!d||c>i[d-1].to){let w=cr[c-1];w!=l&&(h=!1,m=w==16)}let g=!h&&l==1?[]:null,x=h?r:r+1,y=c;e:for(;;)if(d&&y==i[d-1].to){if(m)break e;let w=i[--d];if(!h)for(let S=w.from,k=d;;){if(S==e)break e;if(k&&i[k-1].to==S)S=i[--k].from;else{if(cr[S-1]==l)break e;break}}if(g)g.push(w);else{w.tocr.length;)cr[cr.length]=256;let r=[],s=e==ud?0:1;return Uk(t,s,s,n,0,t.length,r),r}function UF(t){return[new Hc(0,t,0)]}let WF="";function yoe(t,e,n,r,s){var i;let a=r.head-t.from,l=Hc.find(e,a,(i=r.bidiLevel)!==null&&i!==void 0?i:-1,r.assoc),c=e[l],d=c.side(s,n);if(a==d){let g=l+=s?1:-1;if(g<0||g>=e.length)return null;c=e[l=g],a=c.side(!s,n),d=c.side(s,n)}let h=Ps(t.text,a,c.forward(s,n));(hc.to)&&(h=d),WF=t.text.slice(Math.min(a,h),Math.max(a,h));let m=l==(s?e.length-1:0)?null:e[l+(s?1:-1)];return m&&h==d&&m.level+(s?0:1)t.some(e=>e)}),tq=st.define({combine:t=>t.some(e=>e)}),nq=st.define();class Ih{constructor(e,n="nearest",r="nearest",s=5,i=5,a=!1){this.range=e,this.y=n,this.x=r,this.yMargin=s,this.xMargin=i,this.isSnapshot=a}map(e){return e.empty?this:new Ih(this.range.map(e),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}clip(e){return this.range.to<=e.doc.length?this:new Ih(Me.cursor(e.doc.length),this.y,this.x,this.yMargin,this.xMargin,this.isSnapshot)}}const o1=Qt.define({map:(t,e)=>t.map(e)}),rq=Qt.define();function bi(t,e,n){let r=t.facet(KF);r.length?r[0](e):window.onerror&&window.onerror(String(e),n,void 0,void 0,e)||(n?console.error(n+":",e):console.error(e))}const Ml=st.define({combine:t=>t.length?t[0]:!0});let woe=0;const Th=st.define({combine(t){return t.filter((e,n)=>{for(let r=0;r{let c=[];return a&&c.push(W0.of(d=>{let h=d.plugin(l);return h?a(h):Ot.none})),i&&c.push(i(l)),c})}static fromClass(e,n){return Yr.define((r,s)=>new e(r,s),n)}}class F4{constructor(e){this.spec=e,this.mustUpdate=null,this.value=null}get plugin(){return this.spec&&this.spec.plugin}update(e){if(this.value){if(this.mustUpdate){let n=this.mustUpdate;if(this.mustUpdate=null,this.value.update)try{this.value.update(n)}catch(r){if(bi(n.state,r,"CodeMirror plugin crashed"),this.value.destroy)try{this.value.destroy()}catch{}this.deactivate()}}}else if(this.spec)try{this.value=this.spec.plugin.create(e,this.spec.arg)}catch(n){bi(e.state,n,"CodeMirror plugin crashed"),this.deactivate()}return this}destroy(e){var n;if(!((n=this.value)===null||n===void 0)&&n.destroy)try{this.value.destroy()}catch(r){bi(e.state,r,"CodeMirror plugin crashed")}}deactivate(){this.spec=this.value=null}}const sq=st.define(),h6=st.define(),W0=st.define(),iq=st.define(),Xp=st.define(),aq=st.define();function _E(t,e){let n=t.state.facet(aq);if(!n.length)return n;let r=n.map(i=>i instanceof Function?i(t):i),s=[];return Bn.spans(r,e.from,e.to,{point(){},span(i,a,l,c){let d=i-e.from,h=a-e.from,m=s;for(let g=l.length-1;g>=0;g--,c--){let x=l[g].spec.bidiIsolate,y;if(x==null&&(x=boe(e.text,d,h)),c>0&&m.length&&(y=m[m.length-1]).to==d&&y.direction==x)y.to=h,m=y.inner;else{let w={from:d,to:h,direction:x,inner:[]};m.push(w),m=w.inner}}}}),s}const oq=st.define();function f6(t){let e=0,n=0,r=0,s=0;for(let i of t.state.facet(oq)){let a=i(t);a&&(a.left!=null&&(e=Math.max(e,a.left)),a.right!=null&&(n=Math.max(n,a.right)),a.top!=null&&(r=Math.max(r,a.top)),a.bottom!=null&&(s=Math.max(s,a.bottom)))}return{left:e,right:n,top:r,bottom:s}}const l0=st.define();class Ta{constructor(e,n,r,s){this.fromA=e,this.toA=n,this.fromB=r,this.toB=s}join(e){return new Ta(Math.min(this.fromA,e.fromA),Math.max(this.toA,e.toA),Math.min(this.fromB,e.fromB),Math.max(this.toB,e.toB))}addToSet(e){let n=e.length,r=this;for(;n>0;n--){let s=e[n-1];if(!(s.fromA>r.toA)){if(s.toAh)break;i+=2}if(!c)return r;new Ta(c.fromA,c.toA,c.fromB,c.toB).addToSet(r),a=c.toA,l=c.toB}}}class Kv{constructor(e,n,r){this.view=e,this.state=n,this.transactions=r,this.flags=0,this.startState=e.state,this.changes=us.empty(this.startState.doc.length);for(let i of r)this.changes=this.changes.compose(i.changes);let s=[];this.changes.iterChangedRanges((i,a,l,c)=>s.push(new Ta(i,a,l,c))),this.changedRanges=s}static create(e,n,r){return new Kv(e,n,r)}get viewportChanged(){return(this.flags&4)>0}get viewportMoved(){return(this.flags&8)>0}get heightChanged(){return(this.flags&2)>0}get geometryChanged(){return this.docChanged||(this.flags&18)>0}get focusChanged(){return(this.flags&1)>0}get docChanged(){return!this.changes.empty}get selectionSet(){return this.transactions.some(e=>e.selection)}get empty(){return this.flags==0&&this.transactions.length==0}}class AE extends sr{get length(){return this.view.state.doc.length}constructor(e){super(),this.view=e,this.decorations=[],this.dynamicDecorationMap=[!1],this.domChanged=null,this.hasComposition=null,this.markedForComposition=new Set,this.editContextFormatting=Ot.none,this.lastCompositionAfterCursor=!1,this.minWidth=0,this.minWidthFrom=0,this.minWidthTo=0,this.impreciseAnchor=null,this.impreciseHead=null,this.forceSelection=!1,this.lastUpdate=Date.now(),this.setDOM(e.contentDOM),this.children=[new rs],this.children[0].setParent(this),this.updateDeco(),this.updateInner([new Ta(0,0,0,e.state.doc.length)],0,null)}update(e){var n;let r=e.changedRanges;this.minWidth>0&&r.length&&(r.every(({fromA:d,toA:h})=>hthis.minWidthTo)?(this.minWidthFrom=e.changes.mapPos(this.minWidthFrom,1),this.minWidthTo=e.changes.mapPos(this.minWidthTo,1)):this.minWidth=this.minWidthFrom=this.minWidthTo=0),this.updateEditContextFormatting(e);let s=-1;this.view.inputState.composing>=0&&!this.view.observer.editContext&&(!((n=this.domChanged)===null||n===void 0)&&n.newSel?s=this.domChanged.newSel.head:!Toe(e.changes,this.hasComposition)&&!e.selectionSet&&(s=e.state.selection.main.head));let i=s>-1?koe(this.view,e.changes,s):null;if(this.domChanged=null,this.hasComposition){this.markedForComposition.clear();let{from:d,to:h}=this.hasComposition;r=new Ta(d,h,e.changes.mapPos(d,-1),e.changes.mapPos(h,1)).addToSet(r.slice())}this.hasComposition=i?{from:i.range.fromB,to:i.range.toB}:null,(et.ie||et.chrome)&&!i&&e&&e.state.doc.lines!=e.startState.doc.lines&&(this.forceSelection=!0);let a=this.decorations,l=this.updateDeco(),c=Noe(a,l,e.changes);return r=Ta.extendWithRanges(r,c),!(this.flags&7)&&r.length==0?!1:(this.updateInner(r,e.startState.doc.length,i),e.transactions.length&&(this.lastUpdate=Date.now()),!0)}updateInner(e,n,r){this.view.viewState.mustMeasureContent=!0,this.updateChildren(e,n,r);let{observer:s}=this.view;s.ignore(()=>{this.dom.style.height=this.view.viewState.contentHeight/this.view.scaleY+"px",this.dom.style.flexBasis=this.minWidth?this.minWidth+"px":"";let a=et.chrome||et.ios?{node:s.selectionRange.focusNode,written:!1}:void 0;this.sync(this.view,a),this.flags&=-8,a&&(a.written||s.selectionRange.focusNode!=a.node)&&(this.forceSelection=!0),this.dom.style.height=""}),this.markedForComposition.forEach(a=>a.flags&=-9);let i=[];if(this.view.viewport.from||this.view.viewport.to=0?s[a]:null;if(!l)break;let{fromA:c,toA:d,fromB:h,toB:m}=l,g,x,y,w;if(r&&r.range.fromBh){let T=N0.build(this.view.state.doc,h,r.range.fromB,this.decorations,this.dynamicDecorationMap),E=N0.build(this.view.state.doc,r.range.toB,m,this.decorations,this.dynamicDecorationMap);x=T.breakAtStart,y=T.openStart,w=E.openEnd;let _=this.compositionView(r);E.breakAtStart?_.breakAfter=1:E.content.length&&_.merge(_.length,_.length,E.content[0],!1,E.openStart,0)&&(_.breakAfter=E.content[0].breakAfter,E.content.shift()),T.content.length&&_.merge(0,0,T.content[T.content.length-1],!0,0,T.openEnd)&&T.content.pop(),g=T.content.concat(_).concat(E.content)}else({content:g,breakAtStart:x,openStart:y,openEnd:w}=N0.build(this.view.state.doc,h,m,this.decorations,this.dynamicDecorationMap));let{i:S,off:k}=i.findPos(d,1),{i:j,off:N}=i.findPos(c,-1);IF(this,j,N,S,k,g,x,y,w)}r&&this.fixCompositionDOM(r)}updateEditContextFormatting(e){this.editContextFormatting=this.editContextFormatting.map(e.changes);for(let n of e.transactions)for(let r of n.effects)r.is(rq)&&(this.editContextFormatting=r.value)}compositionView(e){let n=new Za(e.text.nodeValue);n.flags|=8;for(let{deco:s}of e.marks)n=new Ql(s,[n],n.length);let r=new rs;return r.append(n,0),r}fixCompositionDOM(e){let n=(i,a)=>{a.flags|=8|(a.children.some(c=>c.flags&7)?1:0),this.markedForComposition.add(a);let l=sr.get(i);l&&l!=a&&(l.dom=null),a.setDOM(i)},r=this.childPos(e.range.fromB,1),s=this.children[r.i];n(e.line,s);for(let i=e.marks.length-1;i>=-1;i--)r=s.childPos(r.off,1),s=s.children[r.i],n(i>=0?e.marks[i].node:e.text,s)}updateSelection(e=!1,n=!1){(e||!this.view.observer.selectionRange.focusNode)&&this.view.observer.readSelectionRange();let r=this.view.root.activeElement,s=r==this.dom,i=!s&&!(this.view.state.facet(Ml)||this.dom.tabIndex>-1)&&fv(this.dom,this.view.observer.selectionRange)&&!(r&&this.dom.contains(r));if(!(s||n||i))return;let a=this.forceSelection;this.forceSelection=!1;let l=this.view.state.selection.main,c=this.moveToLine(this.domAtPos(l.anchor)),d=l.empty?c:this.moveToLine(this.domAtPos(l.head));if(et.gecko&&l.empty&&!this.hasComposition&&Soe(c)){let m=document.createTextNode("");this.view.observer.ignore(()=>c.node.insertBefore(m,c.node.childNodes[c.offset]||null)),c=d=new Hs(m,0),a=!0}let h=this.view.observer.selectionRange;(a||!h.focusNode||(!j0(c.node,c.offset,h.anchorNode,h.anchorOffset)||!j0(d.node,d.offset,h.focusNode,h.focusOffset))&&!this.suppressWidgetCursorChange(h,l))&&(this.view.observer.ignore(()=>{et.android&&et.chrome&&this.dom.contains(h.focusNode)&&Coe(h.focusNode,this.dom)&&(this.dom.blur(),this.dom.focus({preventScroll:!0}));let m=U0(this.view.root);if(m)if(l.empty){if(et.gecko){let g=Ooe(c.node,c.offset);if(g&&g!=3){let x=(g==1?DF:PF)(c.node,c.offset);x&&(c=new Hs(x.node,x.offset))}}m.collapse(c.node,c.offset),l.bidiLevel!=null&&m.caretBidiLevel!==void 0&&(m.caretBidiLevel=l.bidiLevel)}else if(m.extend){m.collapse(c.node,c.offset);try{m.extend(d.node,d.offset)}catch{}}else{let g=document.createRange();l.anchor>l.head&&([c,d]=[d,c]),g.setEnd(d.node,d.offset),g.setStart(c.node,c.offset),m.removeAllRanges(),m.addRange(g)}i&&this.view.root.activeElement==this.dom&&(this.dom.blur(),r&&r.focus())}),this.view.observer.setSelectionRange(c,d)),this.impreciseAnchor=c.precise?null:new Hs(h.anchorNode,h.anchorOffset),this.impreciseHead=d.precise?null:new Hs(h.focusNode,h.focusOffset)}suppressWidgetCursorChange(e,n){return this.hasComposition&&n.empty&&j0(e.focusNode,e.focusOffset,e.anchorNode,e.anchorOffset)&&this.posFromDOM(e.focusNode,e.focusOffset)==n.head}enforceCursorAssoc(){if(this.hasComposition)return;let{view:e}=this,n=e.state.selection.main,r=U0(e.root),{anchorNode:s,anchorOffset:i}=e.observer.selectionRange;if(!r||!n.empty||!n.assoc||!r.modify)return;let a=rs.find(this,n.head);if(!a)return;let l=a.posAtStart;if(n.head==l||n.head==l+a.length)return;let c=this.coordsAt(n.head,-1),d=this.coordsAt(n.head,1);if(!c||!d||c.bottom>d.top)return;let h=this.domAtPos(n.head+n.assoc);r.collapse(h.node,h.offset),r.modify("move",n.assoc<0?"forward":"backward","lineboundary"),e.observer.readSelectionRange();let m=e.observer.selectionRange;e.docView.posFromDOM(m.anchorNode,m.anchorOffset)!=n.from&&r.collapse(s,i)}moveToLine(e){let n=this.dom,r;if(e.node!=n)return e;for(let s=e.offset;!r&&s=0;s--){let i=sr.get(n.childNodes[s]);i instanceof rs&&(r=i.domAtPos(i.length))}return r?new Hs(r.node,r.offset,!0):e}nearest(e){for(let n=e;n;){let r=sr.get(n);if(r&&r.rootView==this)return r;n=n.parentNode}return null}posFromDOM(e,n){let r=this.nearest(e);if(!r)throw new RangeError("Trying to find position for a DOM position outside of the document");return r.localPosFromDOM(e,n)+r.posAtStart}domAtPos(e){let{i:n,off:r}=this.childCursor().findPos(e,-1);for(;n=0;a--){let l=this.children[a],c=i-l.breakAfter,d=c-l.length;if(ce||l.covers(1))&&(!r||l instanceof rs&&!(r instanceof rs&&n>=0)))r=l,s=d;else if(r&&d==e&&c==e&&l instanceof Bl&&Math.abs(n)<2){if(l.deco.startSide<0)break;a&&(r=null)}i=d}return r?r.coordsAt(e-s,n):null}coordsForChar(e){let{i:n,off:r}=this.childPos(e,1),s=this.children[n];if(!(s instanceof rs))return null;for(;s.children.length;){let{i:l,off:c}=s.childPos(r,1);for(;;l++){if(l==s.children.length)return null;if((s=s.children[l]).length)break}r=c}if(!(s instanceof Za))return null;let i=Ps(s.text,r);if(i==r)return null;let a=cd(s.dom,r,i).getClientRects();for(let l=0;lMath.max(this.view.scrollDOM.clientWidth,this.minWidth)+1,l=-1,c=this.view.textDirection==br.LTR;for(let d=0,h=0;hs)break;if(d>=r){let x=m.dom.getBoundingClientRect();if(n.push(x.height),a){let y=m.dom.lastChild,w=y?Jh(y):[];if(w.length){let S=w[w.length-1],k=c?S.right-x.left:x.right-S.left;k>l&&(l=k,this.minWidth=i,this.minWidthFrom=d,this.minWidthTo=g)}}}d=g+m.breakAfter}return n}textDirectionAt(e){let{i:n}=this.childPos(e,1);return getComputedStyle(this.children[n].dom).direction=="rtl"?br.RTL:br.LTR}measureTextSize(){for(let i of this.children)if(i instanceof rs){let a=i.measureTextSize();if(a)return a}let e=document.createElement("div"),n,r,s;return e.className="cm-line",e.style.width="99999px",e.style.position="absolute",e.textContent="abc def ghi jkl mno pqr stu",this.view.observer.ignore(()=>{this.dom.appendChild(e);let i=Jh(e.firstChild)[0];n=e.getBoundingClientRect().height,r=i?i.width/27:7,s=i?i.height:n,e.remove()}),{lineHeight:n,charWidth:r,textHeight:s}}childCursor(e=this.length){let n=this.children.length;return n&&(e-=this.children[--n].length),new zF(this.children,e,n)}computeBlockGapDeco(){let e=[],n=this.view.viewState;for(let r=0,s=0;;s++){let i=s==n.viewports.length?null:n.viewports[s],a=i?i.from-1:this.length;if(a>r){let l=(n.lineBlockAt(a).bottom-n.lineBlockAt(r).top)/this.view.scaleY;e.push(Ot.replace({widget:new Hk(l),block:!0,inclusive:!0,isBlockGap:!0}).range(r,a))}if(!i)break;r=i.to+1}return Ot.set(e)}updateDeco(){let e=1,n=this.view.state.facet(W0).map(i=>(this.dynamicDecorationMap[e++]=typeof i=="function")?i(this.view):i),r=!1,s=this.view.state.facet(iq).map((i,a)=>{let l=typeof i=="function";return l&&(r=!0),l?i(this.view):i});for(s.length&&(this.dynamicDecorationMap[e++]=r,n.push(Bn.join(s))),this.decorations=[this.editContextFormatting,...n,this.computeBlockGapDeco(),this.view.viewState.lineGapDeco];en.anchor?-1:1),s;if(!r)return;!n.empty&&(s=this.coordsAt(n.anchor,n.anchor>n.head?-1:1))&&(r={left:Math.min(r.left,s.left),top:Math.min(r.top,s.top),right:Math.max(r.right,s.right),bottom:Math.max(r.bottom,s.bottom)});let i=f6(this.view),a={left:r.left-i.left,top:r.top-i.top,right:r.right+i.right,bottom:r.bottom+i.bottom},{offsetWidth:l,offsetHeight:c}=this.view.scrollDOM;toe(this.view.scrollDOM,a,n.heads instanceof Dl||s.children.some(r);return r(this.children[n])}}function Soe(t){return t.node.nodeType==1&&t.node.firstChild&&(t.offset==0||t.node.childNodes[t.offset-1].contentEditable=="false")&&(t.offset==t.node.childNodes.length||t.node.childNodes[t.offset].contentEditable=="false")}function lq(t,e){let n=t.observer.selectionRange;if(!n.focusNode)return null;let r=DF(n.focusNode,n.focusOffset),s=PF(n.focusNode,n.focusOffset),i=r||s;if(s&&r&&s.node!=r.node){let l=sr.get(s.node);if(!l||l instanceof Za&&l.text!=s.node.nodeValue)i=s;else if(t.docView.lastCompositionAfterCursor){let c=sr.get(r.node);!c||c instanceof Za&&c.text!=r.node.nodeValue||(i=s)}}if(t.docView.lastCompositionAfterCursor=i!=r,!i)return null;let a=e-i.offset;return{from:a,to:a+i.node.nodeValue.length,node:i.node}}function koe(t,e,n){let r=lq(t,n);if(!r)return null;let{node:s,from:i,to:a}=r,l=s.nodeValue;if(/[\n\r]/.test(l)||t.state.doc.sliceString(r.from,r.to)!=l)return null;let c=e.invertedDesc,d=new Ta(c.mapPos(i),c.mapPos(a),i,a),h=[];for(let m=s.parentNode;;m=m.parentNode){let g=sr.get(m);if(g instanceof Ql)h.push({node:m,deco:g.mark});else{if(g instanceof rs||m.nodeName=="DIV"&&m.parentNode==t.contentDOM)return{range:d,text:s,marks:h,line:m};if(m!=t.contentDOM)h.push({node:m,deco:new Wp({inclusive:!0,attributes:uoe(m),tagName:m.tagName.toLowerCase()})});else return null}}}function Ooe(t,e){return t.nodeType!=1?0:(e&&t.childNodes[e-1].contentEditable=="false"?1:0)|(e{re.from&&(n=!0)}),n}function Eoe(t,e,n=1){let r=t.charCategorizer(e),s=t.doc.lineAt(e),i=e-s.from;if(s.length==0)return Me.cursor(e);i==0?n=1:i==s.length&&(n=-1);let a=i,l=i;n<0?a=Ps(s.text,i,!1):l=Ps(s.text,i);let c=r(s.text.slice(a,l));for(;a>0;){let d=Ps(s.text,a,!1);if(r(s.text.slice(d,a))!=c)break;a=d}for(;lt?e.left-t:Math.max(0,t-e.right)}function Aoe(t,e){return e.top>t?e.top-t:Math.max(0,t-e.bottom)}function q4(t,e){return t.tope.top+1}function ME(t,e){return et.bottom?{top:t.top,left:t.left,right:t.right,bottom:e}:t}function Gk(t,e,n){let r,s,i,a,l=!1,c,d,h,m;for(let y=t.firstChild;y;y=y.nextSibling){let w=Jh(y);for(let S=0;SN||a==N&&i>j)&&(r=y,s=k,i=j,a=N,l=j?e0:Sk.bottom&&(!h||h.bottomk.top)&&(d=y,m=k):h&&q4(h,k)?h=RE(h,k.bottom):m&&q4(m,k)&&(m=ME(m,k.top))}}if(h&&h.bottom>=n?(r=c,s=h):m&&m.top<=n&&(r=d,s=m),!r)return{node:t,offset:0};let g=Math.max(s.left,Math.min(s.right,e));if(r.nodeType==3)return DE(r,g,n);if(l&&r.contentEditable!="false")return Gk(r,g,n);let x=Array.prototype.indexOf.call(t.childNodes,r)+(e>=(s.left+s.right)/2?1:0);return{node:t,offset:x}}function DE(t,e,n){let r=t.nodeValue.length,s=-1,i=1e9,a=0;for(let l=0;ln?h.top-n:n-h.bottom)-1;if(h.left-1<=e&&h.right+1>=e&&m=(h.left+h.right)/2,x=g;if(et.chrome||et.gecko){let y=cd(t,l).getBoundingClientRect();Math.abs(y.left-h.right)<.1&&(x=!g)}if(m<=0)return{node:t,offset:l+(x?1:0)};s=l+(x?1:0),i=m}}}return{node:t,offset:s>-1?s:a>0?t.nodeValue.length:0}}function cq(t,e,n,r=-1){var s,i;let a=t.contentDOM.getBoundingClientRect(),l=a.top+t.viewState.paddingTop,c,{docHeight:d}=t.viewState,{x:h,y:m}=e,g=m-l;if(g<0)return 0;if(g>d)return t.state.doc.length;for(let T=t.viewState.heightOracle.textHeight/2,E=!1;c=t.elementAtHeight(g),c.type!=ri.Text;)for(;g=r>0?c.bottom+T:c.top-T,!(g>=0&&g<=d);){if(E)return n?null:0;E=!0,r=-r}m=l+g;let x=c.from;if(xt.viewport.to)return t.viewport.to==t.state.doc.length?t.state.doc.length:n?null:PE(t,a,c,h,m);let y=t.dom.ownerDocument,w=t.root.elementFromPoint?t.root:y,S=w.elementFromPoint(h,m);S&&!t.contentDOM.contains(S)&&(S=null),S||(h=Math.max(a.left+1,Math.min(a.right-1,h)),S=w.elementFromPoint(h,m),S&&!t.contentDOM.contains(S)&&(S=null));let k,j=-1;if(S&&((s=t.docView.nearest(S))===null||s===void 0?void 0:s.isEditable)!=!1){if(y.caretPositionFromPoint){let T=y.caretPositionFromPoint(h,m);T&&({offsetNode:k,offset:j}=T)}else if(y.caretRangeFromPoint){let T=y.caretRangeFromPoint(h,m);T&&({startContainer:k,startOffset:j}=T)}k&&(!t.contentDOM.contains(k)||et.safari&&Moe(k,j,h)||et.chrome&&Roe(k,j,h))&&(k=void 0),k&&(j=Math.min(qo(k),j))}if(!k||!t.docView.dom.contains(k)){let T=rs.find(t.docView,x);if(!T)return g>c.top+c.height/2?c.to:c.from;({node:k,offset:j}=Gk(T.dom,h,m))}let N=t.docView.nearest(k);if(!N)return null;if(N.isWidget&&((i=N.dom)===null||i===void 0?void 0:i.nodeType)==1){let T=N.dom.getBoundingClientRect();return e.yt.defaultLineHeight*1.5){let l=t.viewState.heightOracle.textHeight,c=Math.floor((s-n.top-(t.defaultLineHeight-l)*.5)/l);i+=c*t.viewState.heightOracle.lineLength}let a=t.state.sliceDoc(n.from,n.to);return n.from+Rk(a,i,t.state.tabSize)}function uq(t,e,n){let r,s=t;if(t.nodeType!=3||e!=(r=t.nodeValue.length))return!1;for(;;){let i=s.nextSibling;if(i){if(i.nodeName=="BR")break;return!1}else{let a=s.parentNode;if(!a||a.nodeName=="DIV")break;s=a}}return cd(t,r-1,r).getBoundingClientRect().right>n}function Moe(t,e,n){return uq(t,e,n)}function Roe(t,e,n){if(e!=0)return uq(t,e,n);for(let s=t;;){let i=s.parentNode;if(!i||i.nodeType!=1||i.firstChild!=s)return!1;if(i.classList.contains("cm-line"))break;s=i}let r=t.nodeType==1?t.getBoundingClientRect():cd(t,0,Math.max(t.nodeValue.length,1)).getBoundingClientRect();return n-r.left>5}function Xk(t,e,n){let r=t.lineBlockAt(e);if(Array.isArray(r.type)){let s;for(let i of r.type){if(i.from>e)break;if(!(i.toe)return i;(!s||i.type==ri.Text&&(s.type!=i.type||(n<0?i.frome)))&&(s=i)}}return s||r}return r}function Doe(t,e,n,r){let s=Xk(t,e.head,e.assoc||-1),i=!r||s.type!=ri.Text||!(t.lineWrapping||s.widgetLineBreaks)?null:t.coordsAtPos(e.assoc<0&&e.head>s.from?e.head-1:e.head);if(i){let a=t.dom.getBoundingClientRect(),l=t.textDirectionAt(s.from),c=t.posAtCoords({x:n==(l==br.LTR)?a.right-1:a.left+1,y:(i.top+i.bottom)/2});if(c!=null)return Me.cursor(c,n?-1:1)}return Me.cursor(n?s.to:s.from,n?-1:1)}function zE(t,e,n,r){let s=t.state.doc.lineAt(e.head),i=t.bidiSpans(s),a=t.textDirectionAt(s.from);for(let l=e,c=null;;){let d=yoe(s,i,a,l,n),h=WF;if(!d){if(s.number==(n?t.state.doc.lines:1))return l;h=` -`,s=t.state.doc.line(s.number+(n?1:-1)),i=t.bidiSpans(s),d=t.visualLineSide(s,!n)}if(c){if(!c(h))return l}else{if(!r)return d;c=r(h)}l=d}}function Poe(t,e,n){let r=t.state.charCategorizer(e),s=r(n);return i=>{let a=r(i);return s==Tr.Space&&(s=a),s==a}}function zoe(t,e,n,r){let s=e.head,i=n?1:-1;if(s==(n?t.state.doc.length:0))return Me.cursor(s,e.assoc);let a=e.goalColumn,l,c=t.contentDOM.getBoundingClientRect(),d=t.coordsAtPos(s,e.assoc||-1),h=t.documentTop;if(d)a==null&&(a=d.left-c.left),l=i<0?d.top:d.bottom;else{let x=t.viewState.lineBlockAt(s);a==null&&(a=Math.min(c.right-c.left,t.defaultCharacterWidth*(s-x.from))),l=(i<0?x.top:x.bottom)+h}let m=c.left+a,g=r??t.viewState.heightOracle.textHeight>>1;for(let x=0;;x+=10){let y=l+(g+x)*i,w=cq(t,{x:m,y},!1,i);if(yc.bottom||(i<0?ws)){let S=t.docView.coordsForChar(w),k=!S||y{if(e>i&&es(t)),n.from,e.head>n.from?-1:1);return r==n.from?n:Me.cursor(r,ri)&&!Boe(a,n)&&this.lineBreak(),s=a}return this.findPointBefore(r,n),this}readTextNode(e){let n=e.nodeValue;for(let r of this.points)r.node==e&&(r.pos=this.text.length+Math.min(r.offset,n.length));for(let r=0,s=this.lineSeparator?null:/\r\n?|\n/g;;){let i=-1,a=1,l;if(this.lineSeparator?(i=n.indexOf(this.lineSeparator,r),a=this.lineSeparator.length):(l=s.exec(n))&&(i=l.index,a=l[0].length),this.append(n.slice(r,i<0?n.length:i)),i<0)break;if(this.lineBreak(),a>1)for(let c of this.points)c.node==e&&c.pos>this.text.length&&(c.pos-=a-1);r=i+a}}readNode(e){if(e.cmIgnore)return;let n=sr.get(e),r=n&&n.overrideDOMText;if(r!=null){this.findPointInside(e,r.length);for(let s=r.iter();!s.next().done;)s.lineBreak?this.lineBreak():this.append(s.value)}else e.nodeType==3?this.readTextNode(e):e.nodeName=="BR"?e.nextSibling&&this.lineBreak():e.nodeType==1&&this.readRange(e.firstChild,null)}findPointBefore(e,n){for(let r of this.points)r.node==e&&e.childNodes[r.offset]==n&&(r.pos=this.text.length)}findPointInside(e,n){for(let r of this.points)(e.nodeType==3?r.node==e:e.contains(r.node))&&(r.pos=this.text.length+(Loe(e,r.node,r.offset)?n:0))}}function Loe(t,e,n){for(;;){if(!e||n-1;let{impreciseHead:i,impreciseAnchor:a}=e.docView;if(e.state.readOnly&&n>-1)this.newSel=null;else if(n>-1&&(this.bounds=e.docView.domBoundsAround(n,r,0))){let l=i||a?[]:$oe(e),c=new Ioe(l,e.state);c.readRange(this.bounds.startDOM,this.bounds.endDOM),this.text=c.text,this.newSel=Hoe(l,this.bounds.from)}else{let l=e.observer.selectionRange,c=i&&i.node==l.focusNode&&i.offset==l.focusOffset||!Fk(e.contentDOM,l.focusNode)?e.state.selection.main.head:e.docView.posFromDOM(l.focusNode,l.focusOffset),d=a&&a.node==l.anchorNode&&a.offset==l.anchorOffset||!Fk(e.contentDOM,l.anchorNode)?e.state.selection.main.anchor:e.docView.posFromDOM(l.anchorNode,l.anchorOffset),h=e.viewport;if((et.ios||et.chrome)&&e.state.selection.main.empty&&c!=d&&(h.from>0||h.to-1&&e.state.selection.ranges.length>1?this.newSel=e.state.selection.replaceRange(Me.range(d,c)):this.newSel=Me.single(d,c)}}}function hq(t,e){let n,{newSel:r}=e,s=t.state.selection.main,i=t.inputState.lastKeyTime>Date.now()-100?t.inputState.lastKeyCode:-1;if(e.bounds){let{from:a,to:l}=e.bounds,c=s.from,d=null;(i===8||et.android&&e.text.length=s.from&&n.to<=s.to&&(n.from!=s.from||n.to!=s.to)&&s.to-s.from-(n.to-n.from)<=4?n={from:s.from,to:s.to,insert:t.state.doc.slice(s.from,n.from).append(n.insert).append(t.state.doc.slice(n.to,s.to))}:t.state.doc.lineAt(s.from).toDate.now()-50?n={from:s.from,to:s.to,insert:t.state.toText(t.inputState.insertingText)}:et.chrome&&n&&n.from==n.to&&n.from==s.head&&n.insert.toString()==` - `&&t.lineWrapping&&(r&&(r=Me.single(r.main.anchor-1,r.main.head-1)),n={from:s.from,to:s.to,insert:An.of([" "])}),n)return m6(t,n,r,i);if(r&&!r.main.eq(s)){let a=!1,l="select";return t.inputState.lastSelectionTime>Date.now()-50&&(t.inputState.lastSelectionOrigin=="select"&&(a=!0),l=t.inputState.lastSelectionOrigin,l=="select.pointer"&&(r=dq(t.state.facet(Xp).map(c=>c(t)),r))),t.dispatch({selection:r,scrollIntoView:a,userEvent:l}),!0}else return!1}function m6(t,e,n,r=-1){if(et.ios&&t.inputState.flushIOSKey(e))return!0;let s=t.state.selection.main;if(et.android&&(e.to==s.to&&(e.from==s.from||e.from==s.from-1&&t.state.sliceDoc(e.from,s.from)==" ")&&e.insert.length==1&&e.insert.lines==2&&zh(t.contentDOM,"Enter",13)||(e.from==s.from-1&&e.to==s.to&&e.insert.length==0||r==8&&e.insert.lengths.head)&&zh(t.contentDOM,"Backspace",8)||e.from==s.from&&e.to==s.to+1&&e.insert.length==0&&zh(t.contentDOM,"Delete",46)))return!0;let i=e.insert.toString();t.inputState.composing>=0&&t.inputState.composing++;let a,l=()=>a||(a=qoe(t,e,n));return t.state.facet(ZF).some(c=>c(t,e.from,e.to,i,l))||t.dispatch(l()),!0}function qoe(t,e,n){let r,s=t.state,i=s.selection.main,a=-1;if(e.from==e.to&&e.fromi.to){let c=e.fromm(t)),d,c);e.from==h&&(a=h)}if(a>-1)r={changes:e,selection:Me.cursor(e.from+e.insert.length,-1)};else if(e.from>=i.from&&e.to<=i.to&&e.to-e.from>=(i.to-i.from)/3&&(!n||n.main.empty&&n.main.from==e.from+e.insert.length)&&t.inputState.composing<0){let c=i.frome.to?s.sliceDoc(e.to,i.to):"";r=s.replaceSelection(t.state.toText(c+e.insert.sliceString(0,void 0,t.state.lineBreak)+d))}else{let c=s.changes(e),d=n&&n.main.to<=c.newLength?n.main:void 0;if(s.selection.ranges.length>1&&(t.inputState.composing>=0||t.inputState.compositionPendingChange)&&e.to<=i.to+10&&e.to>=i.to-10){let h=t.state.sliceDoc(e.from,e.to),m,g=n&&lq(t,n.main.head);if(g){let y=e.insert.length-(e.to-e.from);m={from:g.from,to:g.to-y}}else m=t.state.doc.lineAt(i.head);let x=i.to-e.to;r=s.changeByRange(y=>{if(y.from==i.from&&y.to==i.to)return{changes:c,range:d||y.map(c)};let w=y.to-x,S=w-h.length;if(t.state.sliceDoc(S,w)!=h||w>=m.from&&S<=m.to)return{range:y};let k=s.changes({from:S,to:w,insert:e.insert}),j=y.to-i.to;return{changes:k,range:d?Me.range(Math.max(0,d.anchor+j),Math.max(0,d.head+j)):y.map(k)}})}else r={changes:c,selection:d&&s.selection.replaceRange(d)}}let l="input.type";return(t.composing||t.inputState.compositionPendingChange&&t.inputState.compositionEndedAt>Date.now()-50)&&(t.inputState.compositionPendingChange=!1,l+=".compose",t.inputState.compositionFirstChange&&(l+=".start",t.inputState.compositionFirstChange=!1)),s.update(r,{userEvent:l,scrollIntoView:!0})}function fq(t,e,n,r){let s=Math.min(t.length,e.length),i=0;for(;i0&&l>0&&t.charCodeAt(a-1)==e.charCodeAt(l-1);)a--,l--;if(r=="end"){let c=Math.max(0,i-Math.min(a,l));n-=a+c-i}if(a=a?i-n:0;i-=c,l=i+(l-a),a=i}else if(l=l?i-n:0;i-=c,a=i+(a-l),l=i}return{from:i,toA:a,toB:l}}function $oe(t){let e=[];if(t.root.activeElement!=t.contentDOM)return e;let{anchorNode:n,anchorOffset:r,focusNode:s,focusOffset:i}=t.observer.selectionRange;return n&&(e.push(new IE(n,r)),(s!=n||i!=r)&&e.push(new IE(s,i))),e}function Hoe(t,e){if(t.length==0)return null;let n=t[0].pos,r=t.length==2?t[1].pos:n;return n>-1&&r>-1?Me.single(n+e,r+e):null}class Qoe{setSelectionOrigin(e){this.lastSelectionOrigin=e,this.lastSelectionTime=Date.now()}constructor(e){this.view=e,this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTime=0,this.lastFocusTime=0,this.lastScrollTop=0,this.lastScrollLeft=0,this.pendingIOSKey=void 0,this.tabFocusMode=-1,this.lastSelectionOrigin=null,this.lastSelectionTime=0,this.lastContextMenu=0,this.scrollHandlers=[],this.handlers=Object.create(null),this.composing=-1,this.compositionFirstChange=null,this.compositionEndedAt=0,this.compositionPendingKey=!1,this.compositionPendingChange=!1,this.insertingText="",this.insertingTextAt=0,this.mouseSelection=null,this.draggedContent=null,this.handleEvent=this.handleEvent.bind(this),this.notifiedFocused=e.hasFocus,et.safari&&e.contentDOM.addEventListener("input",()=>null),et.gecko&&ale(e.contentDOM.ownerDocument)}handleEvent(e){!Zoe(this.view,e)||this.ignoreDuringComposition(e)||e.type=="keydown"&&this.keydown(e)||(this.view.updateState!=0?Promise.resolve().then(()=>this.runHandlers(e.type,e)):this.runHandlers(e.type,e))}runHandlers(e,n){let r=this.handlers[e];if(r){for(let s of r.observers)s(this.view,n);for(let s of r.handlers){if(n.defaultPrevented)break;if(s(this.view,n)){n.preventDefault();break}}}}ensureHandlers(e){let n=Voe(e),r=this.handlers,s=this.view.contentDOM;for(let i in n)if(i!="scroll"){let a=!n[i].handlers.length,l=r[i];l&&a!=!l.handlers.length&&(s.removeEventListener(i,this.handleEvent),l=null),l||s.addEventListener(i,this.handleEvent,{passive:a})}for(let i in r)i!="scroll"&&!n[i]&&s.removeEventListener(i,this.handleEvent);this.handlers=n}keydown(e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now(),e.keyCode==9&&this.tabFocusMode>-1&&(!this.tabFocusMode||Date.now()<=this.tabFocusMode))return!0;if(this.tabFocusMode>0&&e.keyCode!=27&&pq.indexOf(e.keyCode)<0&&(this.tabFocusMode=-1),et.android&&et.chrome&&!e.synthetic&&(e.keyCode==13||e.keyCode==8))return this.view.observer.delayAndroidKey(e.key,e.keyCode),!0;let n;return et.ios&&!e.synthetic&&!e.altKey&&!e.metaKey&&((n=mq.find(r=>r.keyCode==e.keyCode))&&!e.ctrlKey||Uoe.indexOf(e.key)>-1&&e.ctrlKey&&!e.shiftKey)?(this.pendingIOSKey=n||e,setTimeout(()=>this.flushIOSKey(),250),!0):(e.keyCode!=229&&this.view.observer.forceFlush(),!1)}flushIOSKey(e){let n=this.pendingIOSKey;return!n||n.key=="Enter"&&e&&e.from0?!0:et.safari&&!et.ios&&this.compositionPendingKey&&Date.now()-this.compositionEndedAt<100?(this.compositionPendingKey=!1,!0):!1}startMouseSelection(e){this.mouseSelection&&this.mouseSelection.destroy(),this.mouseSelection=e}update(e){this.view.observer.update(e),this.mouseSelection&&this.mouseSelection.update(e),this.draggedContent&&e.docChanged&&(this.draggedContent=this.draggedContent.map(e.changes)),e.transactions.length&&(this.lastKeyCode=this.lastSelectionTime=0)}destroy(){this.mouseSelection&&this.mouseSelection.destroy()}}function LE(t,e){return(n,r)=>{try{return e.call(t,r,n)}catch(s){bi(n.state,s)}}}function Voe(t){let e=Object.create(null);function n(r){return e[r]||(e[r]={observers:[],handlers:[]})}for(let r of t){let s=r.spec,i=s&&s.plugin.domEventHandlers,a=s&&s.plugin.domEventObservers;if(i)for(let l in i){let c=i[l];c&&n(l).handlers.push(LE(r.value,c))}if(a)for(let l in a){let c=a[l];c&&n(l).observers.push(LE(r.value,c))}}for(let r in Ja)n(r).handlers.push(Ja[r]);for(let r in Aa)n(r).observers.push(Aa[r]);return e}const mq=[{key:"Backspace",keyCode:8,inputType:"deleteContentBackward"},{key:"Enter",keyCode:13,inputType:"insertParagraph"},{key:"Enter",keyCode:13,inputType:"insertLineBreak"},{key:"Delete",keyCode:46,inputType:"deleteContentForward"}],Uoe="dthko",pq=[16,17,18,20,91,92,224,225],l1=6;function c1(t){return Math.max(0,t)*.7+8}function Woe(t,e){return Math.max(Math.abs(t.clientX-e.clientX),Math.abs(t.clientY-e.clientY))}class Goe{constructor(e,n,r,s){this.view=e,this.startEvent=n,this.style=r,this.mustSelect=s,this.scrollSpeed={x:0,y:0},this.scrolling=-1,this.lastEvent=n,this.scrollParents=noe(e.contentDOM),this.atoms=e.state.facet(Xp).map(a=>a(e));let i=e.contentDOM.ownerDocument;i.addEventListener("mousemove",this.move=this.move.bind(this)),i.addEventListener("mouseup",this.up=this.up.bind(this)),this.extend=n.shiftKey,this.multiple=e.state.facet(Nn.allowMultipleSelections)&&Xoe(e,n),this.dragging=Koe(e,n)&&vq(n)==1?null:!1}start(e){this.dragging===!1&&this.select(e)}move(e){if(e.buttons==0)return this.destroy();if(this.dragging||this.dragging==null&&Woe(this.startEvent,e)<10)return;this.select(this.lastEvent=e);let n=0,r=0,s=0,i=0,a=this.view.win.innerWidth,l=this.view.win.innerHeight;this.scrollParents.x&&({left:s,right:a}=this.scrollParents.x.getBoundingClientRect()),this.scrollParents.y&&({top:i,bottom:l}=this.scrollParents.y.getBoundingClientRect());let c=f6(this.view);e.clientX-c.left<=s+l1?n=-c1(s-e.clientX):e.clientX+c.right>=a-l1&&(n=c1(e.clientX-a)),e.clientY-c.top<=i+l1?r=-c1(i-e.clientY):e.clientY+c.bottom>=l-l1&&(r=c1(e.clientY-l)),this.setScrollSpeed(n,r)}up(e){this.dragging==null&&this.select(this.lastEvent),this.dragging||e.preventDefault(),this.destroy()}destroy(){this.setScrollSpeed(0,0);let e=this.view.contentDOM.ownerDocument;e.removeEventListener("mousemove",this.move),e.removeEventListener("mouseup",this.up),this.view.inputState.mouseSelection=this.view.inputState.draggedContent=null}setScrollSpeed(e,n){this.scrollSpeed={x:e,y:n},e||n?this.scrolling<0&&(this.scrolling=setInterval(()=>this.scroll(),50)):this.scrolling>-1&&(clearInterval(this.scrolling),this.scrolling=-1)}scroll(){let{x:e,y:n}=this.scrollSpeed;e&&this.scrollParents.x&&(this.scrollParents.x.scrollLeft+=e,e=0),n&&this.scrollParents.y&&(this.scrollParents.y.scrollTop+=n,n=0),(e||n)&&this.view.win.scrollBy(e,n),this.dragging===!1&&this.select(this.lastEvent)}select(e){let{view:n}=this,r=dq(this.atoms,this.style.get(e,this.extend,this.multiple));(this.mustSelect||!r.eq(n.state.selection,this.dragging===!1))&&this.view.dispatch({selection:r,userEvent:"select.pointer"}),this.mustSelect=!1}update(e){e.transactions.some(n=>n.isUserEvent("input.type"))?this.destroy():this.style.update(e)&&setTimeout(()=>this.select(this.lastEvent),20)}}function Xoe(t,e){let n=t.state.facet(GF);return n.length?n[0](e):et.mac?e.metaKey:e.ctrlKey}function Yoe(t,e){let n=t.state.facet(XF);return n.length?n[0](e):et.mac?!e.altKey:!e.ctrlKey}function Koe(t,e){let{main:n}=t.state.selection;if(n.empty)return!1;let r=U0(t.root);if(!r||r.rangeCount==0)return!0;let s=r.getRangeAt(0).getClientRects();for(let i=0;i=e.clientX&&a.top<=e.clientY&&a.bottom>=e.clientY)return!0}return!1}function Zoe(t,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;for(let n=e.target,r;n!=t.contentDOM;n=n.parentNode)if(!n||n.nodeType==11||(r=sr.get(n))&&r.ignoreEvent(e))return!1;return!0}const Ja=Object.create(null),Aa=Object.create(null),gq=et.ie&&et.ie_version<15||et.ios&&et.webkit_version<604;function Joe(t){let e=t.dom.parentNode;if(!e)return;let n=e.appendChild(document.createElement("textarea"));n.style.cssText="position: fixed; left: -10000px; top: 10px",n.focus(),setTimeout(()=>{t.focus(),n.remove(),xq(t,n.value)},50)}function mb(t,e,n){for(let r of t.facet(e))n=r(n,t);return n}function xq(t,e){e=mb(t.state,u6,e);let{state:n}=t,r,s=1,i=n.toText(e),a=i.lines==n.selection.ranges.length;if(Yk!=null&&n.selection.ranges.every(c=>c.empty)&&Yk==i.toString()){let c=-1;r=n.changeByRange(d=>{let h=n.doc.lineAt(d.from);if(h.from==c)return{range:d};c=h.from;let m=n.toText((a?i.line(s++).text:e)+n.lineBreak);return{changes:{from:h.from,insert:m},range:Me.cursor(d.from+m.length)}})}else a?r=n.changeByRange(c=>{let d=i.line(s++);return{changes:{from:c.from,to:c.to,insert:d.text},range:Me.cursor(c.from+d.length)}}):r=n.replaceSelection(i);t.dispatch(r,{userEvent:"input.paste",scrollIntoView:!0})}Aa.scroll=t=>{t.inputState.lastScrollTop=t.scrollDOM.scrollTop,t.inputState.lastScrollLeft=t.scrollDOM.scrollLeft};Ja.keydown=(t,e)=>(t.inputState.setSelectionOrigin("select"),e.keyCode==27&&t.inputState.tabFocusMode!=0&&(t.inputState.tabFocusMode=Date.now()+2e3),!1);Aa.touchstart=(t,e)=>{t.inputState.lastTouchTime=Date.now(),t.inputState.setSelectionOrigin("select.pointer")};Aa.touchmove=t=>{t.inputState.setSelectionOrigin("select.pointer")};Ja.mousedown=(t,e)=>{if(t.observer.flush(),t.inputState.lastTouchTime>Date.now()-2e3)return!1;let n=null;for(let r of t.state.facet(YF))if(n=r(t,e),n)break;if(!n&&e.button==0&&(n=nle(t,e)),n){let r=!t.hasFocus;t.inputState.startMouseSelection(new Goe(t,e,n,r)),r&&t.observer.ignore(()=>{AF(t.contentDOM);let i=t.root.activeElement;i&&!i.contains(t.contentDOM)&&i.blur()});let s=t.inputState.mouseSelection;if(s)return s.start(e),s.dragging===!1}else t.inputState.setSelectionOrigin("select.pointer");return!1};function BE(t,e,n,r){if(r==1)return Me.cursor(e,n);if(r==2)return Eoe(t.state,e,n);{let s=rs.find(t.docView,e),i=t.state.doc.lineAt(s?s.posAtEnd:e),a=s?s.posAtStart:i.from,l=s?s.posAtEnd:i.to;return le>=n.top&&e<=n.bottom&&t>=n.left&&t<=n.right;function ele(t,e,n,r){let s=rs.find(t.docView,e);if(!s)return 1;let i=e-s.posAtStart;if(i==0)return 1;if(i==s.length)return-1;let a=s.coordsAt(i,-1);if(a&&FE(n,r,a))return-1;let l=s.coordsAt(i,1);return l&&FE(n,r,l)?1:a&&a.bottom>=r?-1:1}function qE(t,e){let n=t.posAtCoords({x:e.clientX,y:e.clientY},!1);return{pos:n,bias:ele(t,n,e.clientX,e.clientY)}}const tle=et.ie&&et.ie_version<=11;let $E=null,HE=0,QE=0;function vq(t){if(!tle)return t.detail;let e=$E,n=QE;return $E=t,QE=Date.now(),HE=!e||n>Date.now()-400&&Math.abs(e.clientX-t.clientX)<2&&Math.abs(e.clientY-t.clientY)<2?(HE+1)%3:1}function nle(t,e){let n=qE(t,e),r=vq(e),s=t.state.selection;return{update(i){i.docChanged&&(n.pos=i.changes.mapPos(n.pos),s=s.map(i.changes))},get(i,a,l){let c=qE(t,i),d,h=BE(t,c.pos,c.bias,r);if(n.pos!=c.pos&&!a){let m=BE(t,n.pos,n.bias,r),g=Math.min(m.from,h.from),x=Math.max(m.to,h.to);h=g1&&(d=rle(s,c.pos))?d:l?s.addRange(h):Me.create([h])}}}function rle(t,e){for(let n=0;n=e)return Me.create(t.ranges.slice(0,n).concat(t.ranges.slice(n+1)),t.mainIndex==n?0:t.mainIndex-(t.mainIndex>n?1:0))}return null}Ja.dragstart=(t,e)=>{let{selection:{main:n}}=t.state;if(e.target.draggable){let s=t.docView.nearest(e.target);if(s&&s.isWidget){let i=s.posAtStart,a=i+s.length;(i>=n.to||a<=n.from)&&(n=Me.range(i,a))}}let{inputState:r}=t;return r.mouseSelection&&(r.mouseSelection.dragging=!0),r.draggedContent=n,e.dataTransfer&&(e.dataTransfer.setData("Text",mb(t.state,d6,t.state.sliceDoc(n.from,n.to))),e.dataTransfer.effectAllowed="copyMove"),!1};Ja.dragend=t=>(t.inputState.draggedContent=null,!1);function VE(t,e,n,r){if(n=mb(t.state,u6,n),!n)return;let s=t.posAtCoords({x:e.clientX,y:e.clientY},!1),{draggedContent:i}=t.inputState,a=r&&i&&Yoe(t,e)?{from:i.from,to:i.to}:null,l={from:s,insert:n},c=t.state.changes(a?[a,l]:l);t.focus(),t.dispatch({changes:c,selection:{anchor:c.mapPos(s,-1),head:c.mapPos(s,1)},userEvent:a?"move.drop":"input.drop"}),t.inputState.draggedContent=null}Ja.drop=(t,e)=>{if(!e.dataTransfer)return!1;if(t.state.readOnly)return!0;let n=e.dataTransfer.files;if(n&&n.length){let r=Array(n.length),s=0,i=()=>{++s==n.length&&VE(t,e,r.filter(a=>a!=null).join(t.state.lineBreak),!1)};for(let a=0;a{/[\x00-\x08\x0e-\x1f]{2}/.test(l.result)||(r[a]=l.result),i()},l.readAsText(n[a])}return!0}else{let r=e.dataTransfer.getData("Text");if(r)return VE(t,e,r,!0),!0}return!1};Ja.paste=(t,e)=>{if(t.state.readOnly)return!0;t.observer.flush();let n=gq?null:e.clipboardData;return n?(xq(t,n.getData("text/plain")||n.getData("text/uri-list")),!0):(Joe(t),!1)};function sle(t,e){let n=t.dom.parentNode;if(!n)return;let r=n.appendChild(document.createElement("textarea"));r.style.cssText="position: fixed; left: -10000px; top: 10px",r.value=e,r.focus(),r.selectionEnd=e.length,r.selectionStart=0,setTimeout(()=>{r.remove(),t.focus()},50)}function ile(t){let e=[],n=[],r=!1;for(let s of t.selection.ranges)s.empty||(e.push(t.sliceDoc(s.from,s.to)),n.push(s));if(!e.length){let s=-1;for(let{from:i}of t.selection.ranges){let a=t.doc.lineAt(i);a.number>s&&(e.push(a.text),n.push({from:a.from,to:Math.min(t.doc.length,a.to+1)})),s=a.number}r=!0}return{text:mb(t,d6,e.join(t.lineBreak)),ranges:n,linewise:r}}let Yk=null;Ja.copy=Ja.cut=(t,e)=>{let{text:n,ranges:r,linewise:s}=ile(t.state);if(!n&&!s)return!1;Yk=s?n:null,e.type=="cut"&&!t.state.readOnly&&t.dispatch({changes:r,scrollIntoView:!0,userEvent:"delete.cut"});let i=gq?null:e.clipboardData;return i?(i.clearData(),i.setData("text/plain",n),!0):(sle(t,n),!1)};const yq=Qo.define();function bq(t,e){let n=[];for(let r of t.facet(JF)){let s=r(t,e);s&&n.push(s)}return n.length?t.update({effects:n,annotations:yq.of(!0)}):null}function wq(t){setTimeout(()=>{let e=t.hasFocus;if(e!=t.inputState.notifiedFocused){let n=bq(t.state,e);n?t.dispatch(n):t.update([])}},10)}Aa.focus=t=>{t.inputState.lastFocusTime=Date.now(),!t.scrollDOM.scrollTop&&(t.inputState.lastScrollTop||t.inputState.lastScrollLeft)&&(t.scrollDOM.scrollTop=t.inputState.lastScrollTop,t.scrollDOM.scrollLeft=t.inputState.lastScrollLeft),wq(t)};Aa.blur=t=>{t.observer.clearSelectionRange(),wq(t)};Aa.compositionstart=Aa.compositionupdate=t=>{t.observer.editContext||(t.inputState.compositionFirstChange==null&&(t.inputState.compositionFirstChange=!0),t.inputState.composing<0&&(t.inputState.composing=0))};Aa.compositionend=t=>{t.observer.editContext||(t.inputState.composing=-1,t.inputState.compositionEndedAt=Date.now(),t.inputState.compositionPendingKey=!0,t.inputState.compositionPendingChange=t.observer.pendingRecords().length>0,t.inputState.compositionFirstChange=null,et.chrome&&et.android?t.observer.flushSoon():t.inputState.compositionPendingChange?Promise.resolve().then(()=>t.observer.flush()):setTimeout(()=>{t.inputState.composing<0&&t.docView.hasComposition&&t.update([])},50))};Aa.contextmenu=t=>{t.inputState.lastContextMenu=Date.now()};Ja.beforeinput=(t,e)=>{var n,r;if((e.inputType=="insertText"||e.inputType=="insertCompositionText")&&(t.inputState.insertingText=e.data,t.inputState.insertingTextAt=Date.now()),e.inputType=="insertReplacementText"&&t.observer.editContext){let i=(n=e.dataTransfer)===null||n===void 0?void 0:n.getData("text/plain"),a=e.getTargetRanges();if(i&&a.length){let l=a[0],c=t.posAtDOM(l.startContainer,l.startOffset),d=t.posAtDOM(l.endContainer,l.endOffset);return m6(t,{from:c,to:d,insert:t.state.toText(i)},null),!0}}let s;if(et.chrome&&et.android&&(s=mq.find(i=>i.inputType==e.inputType))&&(t.observer.delayAndroidKey(s.key,s.keyCode),s.key=="Backspace"||s.key=="Delete")){let i=((r=window.visualViewport)===null||r===void 0?void 0:r.height)||0;setTimeout(()=>{var a;(((a=window.visualViewport)===null||a===void 0?void 0:a.height)||0)>i+10&&t.hasFocus&&(t.contentDOM.blur(),t.focus())},100)}return et.ios&&e.inputType=="deleteContentForward"&&t.observer.flushSoon(),et.safari&&e.inputType=="insertText"&&t.inputState.composing>=0&&setTimeout(()=>Aa.compositionend(t,e),20),!1};const UE=new Set;function ale(t){UE.has(t)||(UE.add(t),t.addEventListener("copy",()=>{}),t.addEventListener("cut",()=>{}))}const WE=["pre-wrap","normal","pre-line","break-spaces"];let nf=!1;function GE(){nf=!1}class ole{constructor(e){this.lineWrapping=e,this.doc=An.empty,this.heightSamples={},this.lineHeight=14,this.charWidth=7,this.textHeight=14,this.lineLength=30}heightForGap(e,n){let r=this.doc.lineAt(n).number-this.doc.lineAt(e).number+1;return this.lineWrapping&&(r+=Math.max(0,Math.ceil((n-e-r*this.lineLength*.5)/this.lineLength))),this.lineHeight*r}heightForLine(e){return this.lineWrapping?(1+Math.max(0,Math.ceil((e-this.lineLength)/Math.max(1,this.lineLength-5))))*this.lineHeight:this.lineHeight}setDoc(e){return this.doc=e,this}mustRefreshForWrapping(e){return WE.indexOf(e)>-1!=this.lineWrapping}mustRefreshForHeights(e){let n=!1;for(let r=0;r-1,c=Math.round(n)!=Math.round(this.lineHeight)||this.lineWrapping!=l;if(this.lineWrapping=l,this.lineHeight=n,this.charWidth=r,this.textHeight=s,this.lineLength=i,c){this.heightSamples={};for(let d=0;d0}set outdated(e){this.flags=(e?2:0)|this.flags&-3}setHeight(e){this.height!=e&&(Math.abs(this.height-e)>pv&&(nf=!0),this.height=e)}replace(e,n,r){return si.of(r)}decomposeLeft(e,n){n.push(this)}decomposeRight(e,n){n.push(this)}applyChanges(e,n,r,s){let i=this,a=r.doc;for(let l=s.length-1;l>=0;l--){let{fromA:c,toA:d,fromB:h,toB:m}=s[l],g=i.lineAt(c,yr.ByPosNoHeight,r.setDoc(n),0,0),x=g.to>=d?g:i.lineAt(d,yr.ByPosNoHeight,r,0,0);for(m+=x.to-d,d=x.to;l>0&&g.from<=s[l-1].toA;)c=s[l-1].fromA,h=s[l-1].fromB,l--,ci*2){let l=e[n-1];l.break?e.splice(--n,1,l.left,null,l.right):e.splice(--n,1,l.left,l.right),r+=1+l.break,s-=l.size}else if(i>s*2){let l=e[r];l.break?e.splice(r,1,l.left,null,l.right):e.splice(r,1,l.left,l.right),r+=2+l.break,i-=l.size}else break;else if(s=i&&a(this.blockAt(0,r,s,i))}updateHeight(e,n=0,r=!1,s){return s&&s.from<=n&&s.more&&this.setHeight(s.heights[s.index++]),this.outdated=!1,this}toString(){return`block(${this.length})`}}class Qi extends Sq{constructor(e,n){super(e,n,null),this.collapsed=0,this.widgetHeight=0,this.breaks=0}blockAt(e,n,r,s){return new Oo(s,this.length,r,this.height,this.breaks)}replace(e,n,r){let s=r[0];return r.length==1&&(s instanceof Qi||s instanceof As&&s.flags&4)&&Math.abs(this.length-s.length)<10?(s instanceof As?s=new Qi(s.length,this.height):s.height=this.height,this.outdated||(s.outdated=!1),s):si.of(r)}updateHeight(e,n=0,r=!1,s){return s&&s.from<=n&&s.more?this.setHeight(s.heights[s.index++]):(r||this.outdated)&&this.setHeight(Math.max(this.widgetHeight,e.heightForLine(this.length-this.collapsed))+this.breaks*e.lineHeight),this.outdated=!1,this}toString(){return`line(${this.length}${this.collapsed?-this.collapsed:""}${this.widgetHeight?":"+this.widgetHeight:""})`}}class As extends si{constructor(e){super(e,0)}heightMetrics(e,n){let r=e.doc.lineAt(n).number,s=e.doc.lineAt(n+this.length).number,i=s-r+1,a,l=0;if(e.lineWrapping){let c=Math.min(this.height,e.lineHeight*i);a=c/i,this.length>i+1&&(l=(this.height-c)/(this.length-i-1))}else a=this.height/i;return{firstLine:r,lastLine:s,perLine:a,perChar:l}}blockAt(e,n,r,s){let{firstLine:i,lastLine:a,perLine:l,perChar:c}=this.heightMetrics(n,s);if(n.lineWrapping){let d=s+(e0){let i=r[r.length-1];i instanceof As?r[r.length-1]=new As(i.length+s):r.push(null,new As(s-1))}if(e>0){let i=r[0];i instanceof As?r[0]=new As(e+i.length):r.unshift(new As(e-1),null)}return si.of(r)}decomposeLeft(e,n){n.push(new As(e-1),null)}decomposeRight(e,n){n.push(null,new As(this.length-e-1))}updateHeight(e,n=0,r=!1,s){let i=n+this.length;if(s&&s.from<=n+this.length&&s.more){let a=[],l=Math.max(n,s.from),c=-1;for(s.from>n&&a.push(new As(s.from-n-1).updateHeight(e,n));l<=i&&s.more;){let h=e.doc.lineAt(l).length;a.length&&a.push(null);let m=s.heights[s.index++];c==-1?c=m:Math.abs(m-c)>=pv&&(c=-2);let g=new Qi(h,m);g.outdated=!1,a.push(g),l+=h+1}l<=i&&a.push(null,new As(i-l).updateHeight(e,l));let d=si.of(a);return(c<0||Math.abs(d.height-this.height)>=pv||Math.abs(c-this.heightMetrics(e,n).perLine)>=pv)&&(nf=!0),Zv(this,d)}else(r||this.outdated)&&(this.setHeight(e.heightForGap(n,n+this.length)),this.outdated=!1);return this}toString(){return`gap(${this.length})`}}class cle extends si{constructor(e,n,r){super(e.length+n+r.length,e.height+r.height,n|(e.outdated||r.outdated?2:0)),this.left=e,this.right=r,this.size=e.size+r.size}get break(){return this.flags&1}blockAt(e,n,r,s){let i=r+this.left.height;return el))return d;let h=n==yr.ByPosNoHeight?yr.ByPosNoHeight:yr.ByPos;return c?d.join(this.right.lineAt(l,h,r,a,l)):this.left.lineAt(l,h,r,s,i).join(d)}forEachLine(e,n,r,s,i,a){let l=s+this.left.height,c=i+this.left.length+this.break;if(this.break)e=c&&this.right.forEachLine(e,n,r,l,c,a);else{let d=this.lineAt(c,yr.ByPos,r,s,i);e=e&&d.from<=n&&a(d),n>d.to&&this.right.forEachLine(d.to+1,n,r,l,c,a)}}replace(e,n,r){let s=this.left.length+this.break;if(nthis.left.length)return this.balanced(this.left,this.right.replace(e-s,n-s,r));let i=[];e>0&&this.decomposeLeft(e,i);let a=i.length;for(let l of r)i.push(l);if(e>0&&XE(i,a-1),n=r&&n.push(null)),e>r&&this.right.decomposeLeft(e-r,n)}decomposeRight(e,n){let r=this.left.length,s=r+this.break;if(e>=s)return this.right.decomposeRight(e-s,n);e2*n.size||n.size>2*e.size?si.of(this.break?[e,null,n]:[e,n]):(this.left=Zv(this.left,e),this.right=Zv(this.right,n),this.setHeight(e.height+n.height),this.outdated=e.outdated||n.outdated,this.size=e.size+n.size,this.length=e.length+this.break+n.length,this)}updateHeight(e,n=0,r=!1,s){let{left:i,right:a}=this,l=n+i.length+this.break,c=null;return s&&s.from<=n+i.length&&s.more?c=i=i.updateHeight(e,n,r,s):i.updateHeight(e,n,r),s&&s.from<=l+a.length&&s.more?c=a=a.updateHeight(e,l,r,s):a.updateHeight(e,l,r),c?this.balanced(i,a):(this.height=this.left.height+this.right.height,this.outdated=!1,this)}toString(){return this.left+(this.break?" ":"-")+this.right}}function XE(t,e){let n,r;t[e]==null&&(n=t[e-1])instanceof As&&(r=t[e+1])instanceof As&&t.splice(e-1,3,new As(n.length+1+r.length))}const ule=5;class p6{constructor(e,n){this.pos=e,this.oracle=n,this.nodes=[],this.lineStart=-1,this.lineEnd=-1,this.covering=null,this.writtenTo=e}get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]==this.covering}span(e,n){if(this.lineStart>-1){let r=Math.min(n,this.lineEnd),s=this.nodes[this.nodes.length-1];s instanceof Qi?s.length+=r-this.pos:(r>this.pos||!this.isCovered)&&this.nodes.push(new Qi(r-this.pos,-1)),this.writtenTo=r,n>r&&(this.nodes.push(null),this.writtenTo++,this.lineStart=-1)}this.pos=n}point(e,n,r){if(e=ule)&&this.addLineDeco(s,i,a)}else n>e&&this.span(e,n);this.lineEnd>-1&&this.lineEnd-1)return;let{from:e,to:n}=this.oracle.doc.lineAt(this.pos);this.lineStart=e,this.lineEnd=n,this.writtenToe&&this.nodes.push(new Qi(this.pos-e,-1)),this.writtenTo=this.pos}blankContent(e,n){let r=new As(n-e);return this.oracle.doc.lineAt(e).to==n&&(r.flags|=4),r}ensureLine(){this.enterLine();let e=this.nodes.length?this.nodes[this.nodes.length-1]:null;if(e instanceof Qi)return e;let n=new Qi(0,-1);return this.nodes.push(n),n}addBlock(e){this.enterLine();let n=e.deco;n&&n.startSide>0&&!this.isCovered&&this.ensureLine(),this.nodes.push(e),this.writtenTo=this.pos=this.pos+e.length,n&&n.endSide>0&&(this.covering=e)}addLineDeco(e,n,r){let s=this.ensureLine();s.length+=r,s.collapsed+=r,s.widgetHeight=Math.max(s.widgetHeight,e),s.breaks+=n,this.writtenTo=this.pos=this.pos+r}finish(e){let n=this.nodes.length==0?null:this.nodes[this.nodes.length-1];this.lineStart>-1&&!(n instanceof Qi)&&!this.isCovered?this.nodes.push(new Qi(0,-1)):(this.writtenToh.clientHeight||h.scrollWidth>h.clientWidth)&&m.overflow!="visible"){let g=h.getBoundingClientRect();i=Math.max(i,g.left),a=Math.min(a,g.right),l=Math.max(l,g.top),c=Math.min(d==t.parentNode?s.innerHeight:c,g.bottom)}d=m.position=="absolute"||m.position=="fixed"?h.offsetParent:h.parentNode}else if(d.nodeType==11)d=d.host;else break;return{left:i-n.left,right:Math.max(i,a)-n.left,top:l-(n.top+e),bottom:Math.max(l,c)-(n.top+e)}}function mle(t){let e=t.getBoundingClientRect(),n=t.ownerDocument.defaultView||window;return e.left0&&e.top0}function ple(t,e){let n=t.getBoundingClientRect();return{left:0,right:n.right-n.left,top:e,bottom:n.bottom-(n.top+e)}}class H4{constructor(e,n,r,s){this.from=e,this.to=n,this.size=r,this.displaySize=s}static same(e,n){if(e.length!=n.length)return!1;for(let r=0;rtypeof r!="function"&&r.class=="cm-lineWrapping");this.heightOracle=new ole(n),this.stateDeco=e.facet(W0).filter(r=>typeof r!="function"),this.heightMap=si.empty().applyChanges(this.stateDeco,An.empty,this.heightOracle.setDoc(e.doc),[new Ta(0,0,0,e.doc.length)]);for(let r=0;r<2&&(this.viewport=this.getViewport(0,null),!!this.updateForViewport());r++);this.updateViewportLines(),this.lineGaps=this.ensureLineGaps([]),this.lineGapDeco=Ot.set(this.lineGaps.map(r=>r.draw(this,!1))),this.computeVisibleRanges()}updateForViewport(){let e=[this.viewport],{main:n}=this.state.selection;for(let r=0;r<=1;r++){let s=r?n.head:n.anchor;if(!e.some(({from:i,to:a})=>s>=i&&s<=a)){let{from:i,to:a}=this.lineBlockAt(s);e.push(new u1(i,a))}}return this.viewports=e.sort((r,s)=>r.from-s.from),this.updateScaler()}updateScaler(){let e=this.scaler;return this.scaler=this.heightMap.height<=7e6?KE:new g6(this.heightOracle,this.heightMap,this.viewports),e.eq(this.scaler)?0:2}updateViewportLines(){this.viewportLines=[],this.heightMap.forEachLine(this.viewport.from,this.viewport.to,this.heightOracle.setDoc(this.state.doc),0,0,e=>{this.viewportLines.push(u0(e,this.scaler))})}update(e,n=null){this.state=e.state;let r=this.stateDeco;this.stateDeco=this.state.facet(W0).filter(h=>typeof h!="function");let s=e.changedRanges,i=Ta.extendWithRanges(s,dle(r,this.stateDeco,e?e.changes:us.empty(this.state.doc.length))),a=this.heightMap.height,l=this.scrolledToBottom?null:this.scrollAnchorAt(this.scrollTop);GE(),this.heightMap=this.heightMap.applyChanges(this.stateDeco,e.startState.doc,this.heightOracle.setDoc(this.state.doc),i),(this.heightMap.height!=a||nf)&&(e.flags|=2),l?(this.scrollAnchorPos=e.changes.mapPos(l.from,-1),this.scrollAnchorHeight=l.top):(this.scrollAnchorPos=-1,this.scrollAnchorHeight=a);let c=i.length?this.mapViewport(this.viewport,e.changes):this.viewport;(n&&(n.range.headc.to)||!this.viewportIsAppropriate(c))&&(c=this.getViewport(0,n));let d=c.from!=this.viewport.from||c.to!=this.viewport.to;this.viewport=c,e.flags|=this.updateForViewport(),(d||!e.changes.empty||e.flags&2)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(this.mapLineGaps(this.lineGaps,e.changes))),e.flags|=this.computeVisibleRanges(e.changes),n&&(this.scrollTarget=n),!this.mustEnforceCursorAssoc&&e.selectionSet&&e.view.lineWrapping&&e.state.selection.main.empty&&e.state.selection.main.assoc&&!e.state.facet(tq)&&(this.mustEnforceCursorAssoc=!0)}measure(e){let n=e.contentDOM,r=window.getComputedStyle(n),s=this.heightOracle,i=r.whiteSpace;this.defaultTextDirection=r.direction=="rtl"?br.RTL:br.LTR;let a=this.heightOracle.mustRefreshForWrapping(i),l=n.getBoundingClientRect(),c=a||this.mustMeasureContent||this.contentDOMHeight!=l.height;this.contentDOMHeight=l.height,this.mustMeasureContent=!1;let d=0,h=0;if(l.width&&l.height){let{scaleX:T,scaleY:E}=_F(n,l);(T>.005&&Math.abs(this.scaleX-T)>.005||E>.005&&Math.abs(this.scaleY-E)>.005)&&(this.scaleX=T,this.scaleY=E,d|=16,a=c=!0)}let m=(parseInt(r.paddingTop)||0)*this.scaleY,g=(parseInt(r.paddingBottom)||0)*this.scaleY;(this.paddingTop!=m||this.paddingBottom!=g)&&(this.paddingTop=m,this.paddingBottom=g,d|=18),this.editorWidth!=e.scrollDOM.clientWidth&&(s.lineWrapping&&(c=!0),this.editorWidth=e.scrollDOM.clientWidth,d|=16);let x=e.scrollDOM.scrollTop*this.scaleY;this.scrollTop!=x&&(this.scrollAnchorHeight=-1,this.scrollTop=x),this.scrolledToBottom=RF(e.scrollDOM);let y=(this.printing?ple:fle)(n,this.paddingTop),w=y.top-this.pixelViewport.top,S=y.bottom-this.pixelViewport.bottom;this.pixelViewport=y;let k=this.pixelViewport.bottom>this.pixelViewport.top&&this.pixelViewport.right>this.pixelViewport.left;if(k!=this.inView&&(this.inView=k,k&&(c=!0)),!this.inView&&!this.scrollTarget&&!mle(e.dom))return 0;let j=l.width;if((this.contentDOMWidth!=j||this.editorHeight!=e.scrollDOM.clientHeight)&&(this.contentDOMWidth=l.width,this.editorHeight=e.scrollDOM.clientHeight,d|=16),c){let T=e.docView.measureVisibleLineHeights(this.viewport);if(s.mustRefreshForHeights(T)&&(a=!0),a||s.lineWrapping&&Math.abs(j-this.contentDOMWidth)>s.charWidth){let{lineHeight:E,charWidth:_,textHeight:A}=e.docView.measureTextSize();a=E>0&&s.refresh(i,E,_,A,Math.max(5,j/_),T),a&&(e.docView.minWidth=0,d|=16)}w>0&&S>0?h=Math.max(w,S):w<0&&S<0&&(h=Math.min(w,S)),GE();for(let E of this.viewports){let _=E.from==this.viewport.from?T:e.docView.measureVisibleLineHeights(E);this.heightMap=(a?si.empty().applyChanges(this.stateDeco,An.empty,this.heightOracle,[new Ta(0,0,0,e.state.doc.length)]):this.heightMap).updateHeight(s,0,a,new lle(E.from,_))}nf&&(d|=2)}let N=!this.viewportIsAppropriate(this.viewport,h)||this.scrollTarget&&(this.scrollTarget.range.headthis.viewport.to);return N&&(d&2&&(d|=this.updateScaler()),this.viewport=this.getViewport(h,this.scrollTarget),d|=this.updateForViewport()),(d&2||N)&&this.updateViewportLines(),(this.lineGaps.length||this.viewport.to-this.viewport.from>4e3)&&this.updateLineGaps(this.ensureLineGaps(a?[]:this.lineGaps,e)),d|=this.computeVisibleRanges(),this.mustEnforceCursorAssoc&&(this.mustEnforceCursorAssoc=!1,e.docView.enforceCursorAssoc()),d}get visibleTop(){return this.scaler.fromDOM(this.pixelViewport.top)}get visibleBottom(){return this.scaler.fromDOM(this.pixelViewport.bottom)}getViewport(e,n){let r=.5-Math.max(-.5,Math.min(.5,e/1e3/2)),s=this.heightMap,i=this.heightOracle,{visibleTop:a,visibleBottom:l}=this,c=new u1(s.lineAt(a-r*1e3,yr.ByHeight,i,0,0).from,s.lineAt(l+(1-r)*1e3,yr.ByHeight,i,0,0).to);if(n){let{head:d}=n.range;if(dc.to){let h=Math.min(this.editorHeight,this.pixelViewport.bottom-this.pixelViewport.top),m=s.lineAt(d,yr.ByPos,i,0,0),g;n.y=="center"?g=(m.top+m.bottom)/2-h/2:n.y=="start"||n.y=="nearest"&&d=l+Math.max(10,Math.min(r,250)))&&s>a-2*1e3&&i>1,a=s<<1;if(this.defaultTextDirection!=br.LTR&&!r)return[];let l=[],c=(h,m,g,x)=>{if(m-hh&&kk.from>=g.from&&k.to<=g.to&&Math.abs(k.from-h)k.fromj));if(!S){if(mN.from<=m&&N.to>=m)){let N=n.moveToLineBoundary(Me.cursor(m),!1,!0).head;N>h&&(m=N)}let k=this.gapSize(g,h,m,x),j=r||k<2e6?k:2e6;S=new H4(h,m,k,j)}l.push(S)},d=h=>{if(h.length2e6)for(let _ of e)_.from>=h.from&&_.fromh.from&&c(h.from,x,h,m),yn.draw(this,this.heightOracle.lineWrapping))))}computeVisibleRanges(e){let n=this.stateDeco;this.lineGaps.length&&(n=n.concat(this.lineGapDeco));let r=[];Bn.spans(n,this.viewport.from,this.viewport.to,{span(i,a){r.push({from:i,to:a})},point(){}},20);let s=0;if(r.length!=this.visibleRanges.length)s=12;else for(let i=0;i=this.viewport.from&&e<=this.viewport.to&&this.viewportLines.find(n=>n.from<=e&&n.to>=e)||u0(this.heightMap.lineAt(e,yr.ByPos,this.heightOracle,0,0),this.scaler)}lineBlockAtHeight(e){return e>=this.viewportLines[0].top&&e<=this.viewportLines[this.viewportLines.length-1].bottom&&this.viewportLines.find(n=>n.top<=e&&n.bottom>=e)||u0(this.heightMap.lineAt(this.scaler.fromDOM(e),yr.ByHeight,this.heightOracle,0,0),this.scaler)}scrollAnchorAt(e){let n=this.lineBlockAtHeight(e+8);return n.from>=this.viewport.from||this.viewportLines[0].top-e>200?n:this.viewportLines[0]}elementAtHeight(e){return u0(this.heightMap.blockAt(this.scaler.fromDOM(e),this.heightOracle,0,0),this.scaler)}get docHeight(){return this.scaler.toDOM(this.heightMap.height)}get contentHeight(){return this.docHeight+this.paddingTop+this.paddingBottom}}let u1=class{constructor(e,n){this.from=e,this.to=n}};function xle(t,e,n){let r=[],s=t,i=0;return Bn.spans(n,t,e,{span(){},point(a,l){a>s&&(r.push({from:s,to:a}),i+=a-s),s=l}},20),s=1)return e[e.length-1].to;let r=Math.floor(t*n);for(let s=0;;s++){let{from:i,to:a}=e[s],l=a-i;if(r<=l)return i+r;r-=l}}function h1(t,e){let n=0;for(let{from:r,to:s}of t.ranges){if(e<=s){n+=e-r;break}n+=s-r}return n/t.total}function vle(t,e){for(let n of t)if(e(n))return n}const KE={toDOM(t){return t},fromDOM(t){return t},scale:1,eq(t){return t==this}};class g6{constructor(e,n,r){let s=0,i=0,a=0;this.viewports=r.map(({from:l,to:c})=>{let d=n.lineAt(l,yr.ByPos,e,0,0).top,h=n.lineAt(c,yr.ByPos,e,0,0).bottom;return s+=h-d,{from:l,to:c,top:d,bottom:h,domTop:0,domBottom:0}}),this.scale=(7e6-s)/(n.height-s);for(let l of this.viewports)l.domTop=a+(l.top-i)*this.scale,a=l.domBottom=l.domTop+(l.bottom-l.top),i=l.bottom}toDOM(e){for(let n=0,r=0,s=0;;n++){let i=nn.from==e.viewports[r].from&&n.to==e.viewports[r].to):!1}}function u0(t,e){if(e.scale==1)return t;let n=e.toDOM(t.top),r=e.toDOM(t.bottom);return new Oo(t.from,t.length,n,r-n,Array.isArray(t._content)?t._content.map(s=>u0(s,e)):t._content)}const f1=st.define({combine:t=>t.join(" ")}),Kk=st.define({combine:t=>t.indexOf(!0)>-1}),Zk=Yc.newName(),kq=Yc.newName(),Oq=Yc.newName(),jq={"&light":"."+kq,"&dark":"."+Oq};function Jk(t,e,n){return new Yc(e,{finish(r){return/&/.test(r)?r.replace(/&\w*/,s=>{if(s=="&")return t;if(!n||!n[s])throw new RangeError(`Unsupported selector: ${s}`);return n[s]}):t+" "+r}})}const yle=Jk("."+Zk,{"&":{position:"relative !important",boxSizing:"border-box","&.cm-focused":{outline:"1px dotted #212121"},display:"flex !important",flexDirection:"column"},".cm-scroller":{display:"flex !important",alignItems:"flex-start !important",fontFamily:"monospace",lineHeight:1.4,height:"100%",overflowX:"auto",position:"relative",zIndex:0,overflowAnchor:"none"},".cm-content":{margin:0,flexGrow:2,flexShrink:0,display:"block",whiteSpace:"pre",wordWrap:"normal",boxSizing:"border-box",minHeight:"100%",padding:"4px 0",outline:"none","&[contenteditable=true]":{WebkitUserModify:"read-write-plaintext-only"}},".cm-lineWrapping":{whiteSpace_fallback:"pre-wrap",whiteSpace:"break-spaces",wordBreak:"break-word",overflowWrap:"anywhere",flexShrink:1},"&light .cm-content":{caretColor:"black"},"&dark .cm-content":{caretColor:"white"},".cm-line":{display:"block",padding:"0 2px 0 6px"},".cm-layer":{position:"absolute",left:0,top:0,contain:"size style","& > *":{position:"absolute"}},"&light .cm-selectionBackground":{background:"#d9d9d9"},"&dark .cm-selectionBackground":{background:"#222"},"&light.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#d7d4f0"},"&dark.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground":{background:"#233"},".cm-cursorLayer":{pointerEvents:"none"},"&.cm-focused > .cm-scroller > .cm-cursorLayer":{animation:"steps(1) cm-blink 1.2s infinite"},"@keyframes cm-blink":{"0%":{},"50%":{opacity:0},"100%":{}},"@keyframes cm-blink2":{"0%":{},"50%":{opacity:0},"100%":{}},".cm-cursor, .cm-dropCursor":{borderLeft:"1.2px solid black",marginLeft:"-0.6px",pointerEvents:"none"},".cm-cursor":{display:"none"},"&dark .cm-cursor":{borderLeftColor:"#ddd"},".cm-dropCursor":{position:"absolute"},"&.cm-focused > .cm-scroller > .cm-cursorLayer .cm-cursor":{display:"block"},".cm-iso":{unicodeBidi:"isolate"},".cm-announced":{position:"fixed",top:"-10000px"},"@media print":{".cm-announced":{display:"none"}},"&light .cm-activeLine":{backgroundColor:"#cceeff44"},"&dark .cm-activeLine":{backgroundColor:"#99eeff33"},"&light .cm-specialChar":{color:"red"},"&dark .cm-specialChar":{color:"#f78"},".cm-gutters":{flexShrink:0,display:"flex",height:"100%",boxSizing:"border-box",zIndex:200},".cm-gutters-before":{insetInlineStart:0},".cm-gutters-after":{insetInlineEnd:0},"&light .cm-gutters":{backgroundColor:"#f5f5f5",color:"#6c6c6c",border:"0px solid #ddd","&.cm-gutters-before":{borderRightWidth:"1px"},"&.cm-gutters-after":{borderLeftWidth:"1px"}},"&dark .cm-gutters":{backgroundColor:"#333338",color:"#ccc"},".cm-gutter":{display:"flex !important",flexDirection:"column",flexShrink:0,boxSizing:"border-box",minHeight:"100%",overflow:"hidden"},".cm-gutterElement":{boxSizing:"border-box"},".cm-lineNumbers .cm-gutterElement":{padding:"0 3px 0 5px",minWidth:"20px",textAlign:"right",whiteSpace:"nowrap"},"&light .cm-activeLineGutter":{backgroundColor:"#e2f2ff"},"&dark .cm-activeLineGutter":{backgroundColor:"#222227"},".cm-panels":{boxSizing:"border-box",position:"sticky",left:0,right:0,zIndex:300},"&light .cm-panels":{backgroundColor:"#f5f5f5",color:"black"},"&light .cm-panels-top":{borderBottom:"1px solid #ddd"},"&light .cm-panels-bottom":{borderTop:"1px solid #ddd"},"&dark .cm-panels":{backgroundColor:"#333338",color:"white"},".cm-dialog":{padding:"2px 19px 4px 6px",position:"relative","& label":{fontSize:"80%"}},".cm-dialog-close":{position:"absolute",top:"3px",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",fontSize:"14px",padding:"0"},".cm-tab":{display:"inline-block",overflow:"hidden",verticalAlign:"bottom"},".cm-widgetBuffer":{verticalAlign:"text-top",height:"1em",width:0,display:"inline"},".cm-placeholder":{color:"#888",display:"inline-block",verticalAlign:"top",userSelect:"none"},".cm-highlightSpace":{backgroundImage:"radial-gradient(circle at 50% 55%, #aaa 20%, transparent 5%)",backgroundPosition:"center"},".cm-highlightTab":{backgroundImage:`url('data:image/svg+xml,')`,backgroundSize:"auto 100%",backgroundPosition:"right 90%",backgroundRepeat:"no-repeat"},".cm-trailingSpace":{backgroundColor:"#ff332255"},".cm-button":{verticalAlign:"middle",color:"inherit",fontSize:"70%",padding:".2em 1em",borderRadius:"1px"},"&light .cm-button":{backgroundImage:"linear-gradient(#eff1f5, #d9d9df)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#b4b4b4, #d0d3d6)"}},"&dark .cm-button":{backgroundImage:"linear-gradient(#393939, #111)",border:"1px solid #888","&:active":{backgroundImage:"linear-gradient(#111, #333)"}},".cm-textfield":{verticalAlign:"middle",color:"inherit",fontSize:"70%",border:"1px solid silver",padding:".2em .5em"},"&light .cm-textfield":{backgroundColor:"white"},"&dark .cm-textfield":{border:"1px solid #555",backgroundColor:"inherit"}},jq),ble={childList:!0,characterData:!0,subtree:!0,attributes:!0,characterDataOldValue:!0},Q4=et.ie&&et.ie_version<=11;class wle{constructor(e){this.view=e,this.active=!1,this.editContext=null,this.selectionRange=new roe,this.selectionChanged=!1,this.delayedFlush=-1,this.resizeTimeout=-1,this.queue=[],this.delayedAndroidKey=null,this.flushingAndroidKey=-1,this.lastChange=0,this.scrollTargets=[],this.intersection=null,this.resizeScroll=null,this.intersecting=!1,this.gapIntersection=null,this.gaps=[],this.printQuery=null,this.parentCheck=-1,this.dom=e.contentDOM,this.observer=new MutationObserver(n=>{for(let r of n)this.queue.push(r);(et.ie&&et.ie_version<=11||et.ios&&e.composing)&&n.some(r=>r.type=="childList"&&r.removedNodes.length||r.type=="characterData"&&r.oldValue.length>r.target.nodeValue.length)?this.flushSoon():this.flush()}),window.EditContext&&et.android&&e.constructor.EDIT_CONTEXT!==!1&&!(et.chrome&&et.chrome_version<126)&&(this.editContext=new kle(e),e.state.facet(Ml)&&(e.contentDOM.editContext=this.editContext.editContext)),Q4&&(this.onCharData=n=>{this.queue.push({target:n.target,type:"characterData",oldValue:n.prevValue}),this.flushSoon()}),this.onSelectionChange=this.onSelectionChange.bind(this),this.onResize=this.onResize.bind(this),this.onPrint=this.onPrint.bind(this),this.onScroll=this.onScroll.bind(this),window.matchMedia&&(this.printQuery=window.matchMedia("print")),typeof ResizeObserver=="function"&&(this.resizeScroll=new ResizeObserver(()=>{var n;((n=this.view.docView)===null||n===void 0?void 0:n.lastUpdate){this.parentCheck<0&&(this.parentCheck=setTimeout(this.listenForScroll.bind(this),1e3)),n.length>0&&n[n.length-1].intersectionRatio>0!=this.intersecting&&(this.intersecting=!this.intersecting,this.intersecting!=this.view.inView&&this.onScrollChanged(document.createEvent("Event")))},{threshold:[0,.001]}),this.intersection.observe(this.dom),this.gapIntersection=new IntersectionObserver(n=>{n.length>0&&n[n.length-1].intersectionRatio>0&&this.onScrollChanged(document.createEvent("Event"))},{})),this.listenForScroll(),this.readSelectionRange()}onScrollChanged(e){this.view.inputState.runHandlers("scroll",e),this.intersecting&&this.view.measure()}onScroll(e){this.intersecting&&this.flush(!1),this.editContext&&this.view.requestMeasure(this.editContext.measureReq),this.onScrollChanged(e)}onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout(()=>{this.resizeTimeout=-1,this.view.requestMeasure()},50))}onPrint(e){(e.type=="change"||!e.type)&&!e.matches||(this.view.viewState.printing=!0,this.view.measure(),setTimeout(()=>{this.view.viewState.printing=!1,this.view.requestMeasure()},500))}updateGaps(e){if(this.gapIntersection&&(e.length!=this.gaps.length||this.gaps.some((n,r)=>n!=e[r]))){this.gapIntersection.disconnect();for(let n of e)this.gapIntersection.observe(n);this.gaps=e}}onSelectionChange(e){let n=this.selectionChanged;if(!this.readSelectionRange()||this.delayedAndroidKey)return;let{view:r}=this,s=this.selectionRange;if(r.state.facet(Ml)?r.root.activeElement!=this.dom:!fv(this.dom,s))return;let i=s.anchorNode&&r.docView.nearest(s.anchorNode);if(i&&i.ignoreEvent(e)){n||(this.selectionChanged=!1);return}(et.ie&&et.ie_version<=11||et.android&&et.chrome)&&!r.state.selection.main.empty&&s.focusNode&&j0(s.focusNode,s.focusOffset,s.anchorNode,s.anchorOffset)?this.flushSoon():this.flush(!1)}readSelectionRange(){let{view:e}=this,n=U0(e.root);if(!n)return!1;let r=et.safari&&e.root.nodeType==11&&e.root.activeElement==this.dom&&Sle(this.view,n)||n;if(!r||this.selectionRange.eq(r))return!1;let s=fv(this.dom,r);return s&&!this.selectionChanged&&e.inputState.lastFocusTime>Date.now()-200&&e.inputState.lastTouchTime{let i=this.delayedAndroidKey;i&&(this.clearDelayedAndroidKey(),this.view.inputState.lastKeyCode=i.keyCode,this.view.inputState.lastKeyTime=Date.now(),!this.flush()&&i.force&&zh(this.dom,i.key,i.keyCode))};this.flushingAndroidKey=this.view.win.requestAnimationFrame(s)}(!this.delayedAndroidKey||e=="Enter")&&(this.delayedAndroidKey={key:e,keyCode:n,force:this.lastChange{this.delayedFlush=-1,this.flush()}))}forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame(this.delayedFlush),this.delayedFlush=-1),this.flush()}pendingRecords(){for(let e of this.observer.takeRecords())this.queue.push(e);return this.queue}processRecords(){let e=this.pendingRecords();e.length&&(this.queue=[]);let n=-1,r=-1,s=!1;for(let i of e){let a=this.readMutation(i);a&&(a.typeOver&&(s=!0),n==-1?{from:n,to:r}=a:(n=Math.min(a.from,n),r=Math.max(a.to,r)))}return{from:n,to:r,typeOver:s}}readChange(){let{from:e,to:n,typeOver:r}=this.processRecords(),s=this.selectionChanged&&fv(this.dom,this.selectionRange);if(e<0&&!s)return null;e>-1&&(this.lastChange=Date.now()),this.view.inputState.lastFocusTime=0,this.selectionChanged=!1;let i=new Foe(this.view,e,n,r);return this.view.docView.domChanged={newSel:i.newSel?i.newSel.main:null},i}flush(e=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;e&&this.readSelectionRange();let n=this.readChange();if(!n)return this.view.requestMeasure(),!1;let r=this.view.state,s=hq(this.view,n);return this.view.state==r&&(n.domChanged||n.newSel&&!n.newSel.main.eq(this.view.state.selection.main))&&this.view.update([]),s}readMutation(e){let n=this.view.docView.nearest(e.target);if(!n||n.ignoreMutation(e))return null;if(n.markDirty(e.type=="attributes"),e.type=="attributes"&&(n.flags|=4),e.type=="childList"){let r=ZE(n,e.previousSibling||e.target.previousSibling,-1),s=ZE(n,e.nextSibling||e.target.nextSibling,1);return{from:r?n.posAfter(r):n.posAtStart,to:s?n.posBefore(s):n.posAtEnd,typeOver:!1}}else return e.type=="characterData"?{from:n.posAtStart,to:n.posAtEnd,typeOver:e.target.nodeValue==e.oldValue}:null}setWindow(e){e!=this.win&&(this.removeWindowListeners(this.win),this.win=e,this.addWindowListeners(this.win))}addWindowListeners(e){e.addEventListener("resize",this.onResize),this.printQuery?this.printQuery.addEventListener?this.printQuery.addEventListener("change",this.onPrint):this.printQuery.addListener(this.onPrint):e.addEventListener("beforeprint",this.onPrint),e.addEventListener("scroll",this.onScroll),e.document.addEventListener("selectionchange",this.onSelectionChange)}removeWindowListeners(e){e.removeEventListener("scroll",this.onScroll),e.removeEventListener("resize",this.onResize),this.printQuery?this.printQuery.removeEventListener?this.printQuery.removeEventListener("change",this.onPrint):this.printQuery.removeListener(this.onPrint):e.removeEventListener("beforeprint",this.onPrint),e.document.removeEventListener("selectionchange",this.onSelectionChange)}update(e){this.editContext&&(this.editContext.update(e),e.startState.facet(Ml)!=e.state.facet(Ml)&&(e.view.contentDOM.editContext=e.state.facet(Ml)?this.editContext.editContext:null))}destroy(){var e,n,r;this.stop(),(e=this.intersection)===null||e===void 0||e.disconnect(),(n=this.gapIntersection)===null||n===void 0||n.disconnect(),(r=this.resizeScroll)===null||r===void 0||r.disconnect();for(let s of this.scrollTargets)s.removeEventListener("scroll",this.onScroll);this.removeWindowListeners(this.win),clearTimeout(this.parentCheck),clearTimeout(this.resizeTimeout),this.win.cancelAnimationFrame(this.delayedFlush),this.win.cancelAnimationFrame(this.flushingAndroidKey),this.editContext&&(this.view.contentDOM.editContext=null,this.editContext.destroy())}}function ZE(t,e,n){for(;e;){let r=sr.get(e);if(r&&r.parent==t)return r;let s=e.parentNode;e=s!=t.dom?s:n>0?e.nextSibling:e.previousSibling}return null}function JE(t,e){let n=e.startContainer,r=e.startOffset,s=e.endContainer,i=e.endOffset,a=t.docView.domAtPos(t.state.selection.main.anchor);return j0(a.node,a.offset,s,i)&&([n,r,s,i]=[s,i,n,r]),{anchorNode:n,anchorOffset:r,focusNode:s,focusOffset:i}}function Sle(t,e){if(e.getComposedRanges){let s=e.getComposedRanges(t.root)[0];if(s)return JE(t,s)}let n=null;function r(s){s.preventDefault(),s.stopImmediatePropagation(),n=s.getTargetRanges()[0]}return t.contentDOM.addEventListener("beforeinput",r,!0),t.dom.ownerDocument.execCommand("indent"),t.contentDOM.removeEventListener("beforeinput",r,!0),n?JE(t,n):null}class kle{constructor(e){this.from=0,this.to=0,this.pendingContextChange=null,this.handlers=Object.create(null),this.composing=null,this.resetRange(e.state);let n=this.editContext=new window.EditContext({text:e.state.doc.sliceString(this.from,this.to),selectionStart:this.toContextPos(Math.max(this.from,Math.min(this.to,e.state.selection.main.anchor))),selectionEnd:this.toContextPos(e.state.selection.main.head)});this.handlers.textupdate=r=>{let s=e.state.selection.main,{anchor:i,head:a}=s,l=this.toEditorPos(r.updateRangeStart),c=this.toEditorPos(r.updateRangeEnd);e.inputState.composing>=0&&!this.composing&&(this.composing={contextBase:r.updateRangeStart,editorBase:l,drifted:!1});let d=c-l>r.text.length;l==this.from&&ithis.to&&(c=i);let h=fq(e.state.sliceDoc(l,c),r.text,(d?s.from:s.to)-l,d?"end":null);if(!h){let g=Me.single(this.toEditorPos(r.selectionStart),this.toEditorPos(r.selectionEnd));g.main.eq(s)||e.dispatch({selection:g,userEvent:"select"});return}let m={from:h.from+l,to:h.toA+l,insert:An.of(r.text.slice(h.from,h.toB).split(` -`))};if((et.mac||et.android)&&m.from==a-1&&/^\. ?$/.test(r.text)&&e.contentDOM.getAttribute("autocorrect")=="off"&&(m={from:l,to:c,insert:An.of([r.text.replace("."," ")])}),this.pendingContextChange=m,!e.state.readOnly){let g=this.to-this.from+(m.to-m.from+m.insert.length);m6(e,m,Me.single(this.toEditorPos(r.selectionStart,g),this.toEditorPos(r.selectionEnd,g)))}this.pendingContextChange&&(this.revertPending(e.state),this.setSelection(e.state)),m.from=0&&!/[\\p{Alphabetic}\\p{Number}_]/.test(n.text.slice(Math.max(0,r.updateRangeStart-1),Math.min(n.text.length,r.updateRangeStart+1)))&&this.handlers.compositionend(r)},this.handlers.characterboundsupdate=r=>{let s=[],i=null;for(let a=this.toEditorPos(r.rangeStart),l=this.toEditorPos(r.rangeEnd);a{let s=[];for(let i of r.getTextFormats()){let a=i.underlineStyle,l=i.underlineThickness;if(!/none/i.test(a)&&!/none/i.test(l)){let c=this.toEditorPos(i.rangeStart),d=this.toEditorPos(i.rangeEnd);if(c{e.inputState.composing<0&&(e.inputState.composing=0,e.inputState.compositionFirstChange=!0)},this.handlers.compositionend=()=>{if(e.inputState.composing=-1,e.inputState.compositionFirstChange=null,this.composing){let{drifted:r}=this.composing;this.composing=null,r&&this.reset(e.state)}};for(let r in this.handlers)n.addEventListener(r,this.handlers[r]);this.measureReq={read:r=>{this.editContext.updateControlBounds(r.contentDOM.getBoundingClientRect());let s=U0(r.root);s&&s.rangeCount&&this.editContext.updateSelectionBounds(s.getRangeAt(0).getBoundingClientRect())}}}applyEdits(e){let n=0,r=!1,s=this.pendingContextChange;return e.changes.iterChanges((i,a,l,c,d)=>{if(r)return;let h=d.length-(a-i);if(s&&a>=s.to)if(s.from==i&&s.to==a&&s.insert.eq(d)){s=this.pendingContextChange=null,n+=h,this.to+=h;return}else s=null,this.revertPending(e.state);if(i+=n,a+=n,a<=this.from)this.from+=h,this.to+=h;else if(ithis.to||this.to-this.from+d.length>3e4){r=!0;return}this.editContext.updateText(this.toContextPos(i),this.toContextPos(a),d.toString()),this.to+=h}n+=h}),s&&!r&&this.revertPending(e.state),!r}update(e){let n=this.pendingContextChange,r=e.startState.selection.main;this.composing&&(this.composing.drifted||!e.changes.touchesRange(r.from,r.to)&&e.transactions.some(s=>!s.isUserEvent("input.type")&&s.changes.touchesRange(this.from,this.to)))?(this.composing.drifted=!0,this.composing.editorBase=e.changes.mapPos(this.composing.editorBase)):!this.applyEdits(e)||!this.rangeIsValid(e.state)?(this.pendingContextChange=null,this.reset(e.state)):(e.docChanged||e.selectionSet||n)&&this.setSelection(e.state),(e.geometryChanged||e.docChanged||e.selectionSet)&&e.view.requestMeasure(this.measureReq)}resetRange(e){let{head:n}=e.selection.main;this.from=Math.max(0,n-1e4),this.to=Math.min(e.doc.length,n+1e4)}reset(e){this.resetRange(e),this.editContext.updateText(0,this.editContext.text.length,e.doc.sliceString(this.from,this.to)),this.setSelection(e)}revertPending(e){let n=this.pendingContextChange;this.pendingContextChange=null,this.editContext.updateText(this.toContextPos(n.from),this.toContextPos(n.from+n.insert.length),e.doc.sliceString(n.from,n.to))}setSelection(e){let{main:n}=e.selection,r=this.toContextPos(Math.max(this.from,Math.min(this.to,n.anchor))),s=this.toContextPos(n.head);(this.editContext.selectionStart!=r||this.editContext.selectionEnd!=s)&&this.editContext.updateSelection(r,s)}rangeIsValid(e){let{head:n}=e.selection.main;return!(this.from>0&&n-this.from<500||this.to1e4*3)}toEditorPos(e,n=this.to-this.from){e=Math.min(e,n);let r=this.composing;return r&&r.drifted?r.editorBase+(e-r.contextBase):e+this.from}toContextPos(e){let n=this.composing;return n&&n.drifted?n.contextBase+(e-n.editorBase):e-this.from}destroy(){for(let e in this.handlers)this.editContext.removeEventListener(e,this.handlers[e])}}class Ze{get state(){return this.viewState.state}get viewport(){return this.viewState.viewport}get visibleRanges(){return this.viewState.visibleRanges}get inView(){return this.viewState.inView}get composing(){return!!this.inputState&&this.inputState.composing>0}get compositionStarted(){return!!this.inputState&&this.inputState.composing>=0}get root(){return this._root}get win(){return this.dom.ownerDocument.defaultView||window}constructor(e={}){var n;this.plugins=[],this.pluginMap=new Map,this.editorAttrs={},this.contentAttrs={},this.bidiCache=[],this.destroyed=!1,this.updateState=2,this.measureScheduled=-1,this.measureRequests=[],this.contentDOM=document.createElement("div"),this.scrollDOM=document.createElement("div"),this.scrollDOM.tabIndex=-1,this.scrollDOM.className="cm-scroller",this.scrollDOM.appendChild(this.contentDOM),this.announceDOM=document.createElement("div"),this.announceDOM.className="cm-announced",this.announceDOM.setAttribute("aria-live","polite"),this.dom=document.createElement("div"),this.dom.appendChild(this.announceDOM),this.dom.appendChild(this.scrollDOM),e.parent&&e.parent.appendChild(this.dom);let{dispatch:r}=e;this.dispatchTransactions=e.dispatchTransactions||r&&(s=>s.forEach(i=>r(i,this)))||(s=>this.update(s)),this.dispatch=this.dispatch.bind(this),this._root=e.root||soe(e.parent)||document,this.viewState=new YE(e.state||Nn.create(e)),e.scrollTo&&e.scrollTo.is(o1)&&(this.viewState.scrollTarget=e.scrollTo.value.clip(this.viewState.state)),this.plugins=this.state.facet(Th).map(s=>new F4(s));for(let s of this.plugins)s.update(this);this.observer=new wle(this),this.inputState=new Qoe(this),this.inputState.ensureHandlers(this.plugins),this.docView=new AE(this),this.mountStyles(),this.updateAttrs(),this.updateState=0,this.requestMeasure(),!((n=document.fonts)===null||n===void 0)&&n.ready&&document.fonts.ready.then(()=>this.requestMeasure())}dispatch(...e){let n=e.length==1&&e[0]instanceof ss?e:e.length==1&&Array.isArray(e[0])?e[0]:[this.state.update(...e)];this.dispatchTransactions(n,this)}update(e){if(this.updateState!=0)throw new Error("Calls to EditorView.update are not allowed while an update is in progress");let n=!1,r=!1,s,i=this.state;for(let g of e){if(g.startState!=i)throw new RangeError("Trying to update state with a transaction that doesn't start from the previous state.");i=g.state}if(this.destroyed){this.viewState.state=i;return}let a=this.hasFocus,l=0,c=null;e.some(g=>g.annotation(yq))?(this.inputState.notifiedFocused=a,l=1):a!=this.inputState.notifiedFocused&&(this.inputState.notifiedFocused=a,c=bq(i,a),c||(l=1));let d=this.observer.delayedAndroidKey,h=null;if(d?(this.observer.clearDelayedAndroidKey(),h=this.observer.readChange(),(h&&!this.state.doc.eq(i.doc)||!this.state.selection.eq(i.selection))&&(h=null)):this.observer.clear(),i.facet(Nn.phrases)!=this.state.facet(Nn.phrases))return this.setState(i);s=Kv.create(this,i,e),s.flags|=l;let m=this.viewState.scrollTarget;try{this.updateState=2;for(let g of e){if(m&&(m=m.map(g.changes)),g.scrollIntoView){let{main:x}=g.state.selection;m=new Ih(x.empty?x:Me.cursor(x.head,x.head>x.anchor?-1:1))}for(let x of g.effects)x.is(o1)&&(m=x.value.clip(this.state))}this.viewState.update(s,m),this.bidiCache=Jv.update(this.bidiCache,s.changes),s.empty||(this.updatePlugins(s),this.inputState.update(s)),n=this.docView.update(s),this.state.facet(l0)!=this.styleModules&&this.mountStyles(),r=this.updateAttrs(),this.showAnnouncements(e),this.docView.updateSelection(n,e.some(g=>g.isUserEvent("select.pointer")))}finally{this.updateState=0}if(s.startState.facet(f1)!=s.state.facet(f1)&&(this.viewState.mustMeasureContent=!0),(n||r||m||this.viewState.mustEnforceCursorAssoc||this.viewState.mustMeasureContent)&&this.requestMeasure(),n&&this.docViewUpdate(),!s.empty)for(let g of this.state.facet(Wk))try{g(s)}catch(x){bi(this.state,x,"update listener")}(c||h)&&Promise.resolve().then(()=>{c&&this.state==c.startState&&this.dispatch(c),h&&!hq(this,h)&&d.force&&zh(this.contentDOM,d.key,d.keyCode)})}setState(e){if(this.updateState!=0)throw new Error("Calls to EditorView.setState are not allowed while an update is in progress");if(this.destroyed){this.viewState.state=e;return}this.updateState=2;let n=this.hasFocus;try{for(let r of this.plugins)r.destroy(this);this.viewState=new YE(e),this.plugins=e.facet(Th).map(r=>new F4(r)),this.pluginMap.clear();for(let r of this.plugins)r.update(this);this.docView.destroy(),this.docView=new AE(this),this.inputState.ensureHandlers(this.plugins),this.mountStyles(),this.updateAttrs(),this.bidiCache=[]}finally{this.updateState=0}n&&this.focus(),this.requestMeasure()}updatePlugins(e){let n=e.startState.facet(Th),r=e.state.facet(Th);if(n!=r){let s=[];for(let i of r){let a=n.indexOf(i);if(a<0)s.push(new F4(i));else{let l=this.plugins[a];l.mustUpdate=e,s.push(l)}}for(let i of this.plugins)i.mustUpdate!=e&&i.destroy(this);this.plugins=s,this.pluginMap.clear()}else for(let s of this.plugins)s.mustUpdate=e;for(let s=0;s-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.observer.delayedAndroidKey){this.measureScheduled=-1,this.requestMeasure();return}this.measureScheduled=0,e&&this.observer.forceFlush();let n=null,r=this.scrollDOM,s=r.scrollTop*this.scaleY,{scrollAnchorPos:i,scrollAnchorHeight:a}=this.viewState;Math.abs(s-this.viewState.scrollTop)>1&&(a=-1),this.viewState.scrollAnchorHeight=-1;try{for(let l=0;;l++){if(a<0)if(RF(r))i=-1,a=this.viewState.heightMap.height;else{let x=this.viewState.scrollAnchorAt(s);i=x.from,a=x.top}this.updateState=1;let c=this.viewState.measure(this);if(!c&&!this.measureRequests.length&&this.viewState.scrollTarget==null)break;if(l>5){console.warn(this.measureRequests.length?"Measure loop restarted more than 5 times":"Viewport failed to stabilize");break}let d=[];c&4||([this.measureRequests,d]=[d,this.measureRequests]);let h=d.map(x=>{try{return x.read(this)}catch(y){return bi(this.state,y),e_}}),m=Kv.create(this,this.state,[]),g=!1;m.flags|=c,n?n.flags|=c:n=m,this.updateState=2,m.empty||(this.updatePlugins(m),this.inputState.update(m),this.updateAttrs(),g=this.docView.update(m),g&&this.docViewUpdate());for(let x=0;x1||y<-1){s=s+y,r.scrollTop=s/this.scaleY,a=-1;continue}}break}}}finally{this.updateState=0,this.measureScheduled=-1}if(n&&!n.empty)for(let l of this.state.facet(Wk))l(n)}get themeClasses(){return Zk+" "+(this.state.facet(Kk)?Oq:kq)+" "+this.state.facet(f1)}updateAttrs(){let e=t_(this,sq,{class:"cm-editor"+(this.hasFocus?" cm-focused ":" ")+this.themeClasses}),n={spellcheck:"false",autocorrect:"off",autocapitalize:"off",writingsuggestions:"false",translate:"no",contenteditable:this.state.facet(Ml)?"true":"false",class:"cm-content",style:`${et.tabSize}: ${this.state.tabSize}`,role:"textbox","aria-multiline":"true"};this.state.readOnly&&(n["aria-readonly"]="true"),t_(this,h6,n);let r=this.observer.ignore(()=>{let s=$k(this.contentDOM,this.contentAttrs,n),i=$k(this.dom,this.editorAttrs,e);return s||i});return this.editorAttrs=e,this.contentAttrs=n,r}showAnnouncements(e){let n=!0;for(let r of e)for(let s of r.effects)if(s.is(Ze.announce)){n&&(this.announceDOM.textContent=""),n=!1;let i=this.announceDOM.appendChild(document.createElement("div"));i.textContent=s.value}}mountStyles(){this.styleModules=this.state.facet(l0);let e=this.state.facet(Ze.cspNonce);Yc.mount(this.root,this.styleModules.concat(yle).reverse(),e?{nonce:e}:void 0)}readMeasured(){if(this.updateState==2)throw new Error("Reading the editor layout isn't allowed during an update");this.updateState==0&&this.measureScheduled>-1&&this.measure(!1)}requestMeasure(e){if(this.measureScheduled<0&&(this.measureScheduled=this.win.requestAnimationFrame(()=>this.measure())),e){if(this.measureRequests.indexOf(e)>-1)return;if(e.key!=null){for(let n=0;nr.plugin==e)||null),n&&n.update(this).value}get documentTop(){return this.contentDOM.getBoundingClientRect().top+this.viewState.paddingTop}get documentPadding(){return{top:this.viewState.paddingTop,bottom:this.viewState.paddingBottom}}get scaleX(){return this.viewState.scaleX}get scaleY(){return this.viewState.scaleY}elementAtHeight(e){return this.readMeasured(),this.viewState.elementAtHeight(e)}lineBlockAtHeight(e){return this.readMeasured(),this.viewState.lineBlockAtHeight(e)}get viewportLineBlocks(){return this.viewState.viewportLines}lineBlockAt(e){return this.viewState.lineBlockAt(e)}get contentHeight(){return this.viewState.contentHeight}moveByChar(e,n,r){return $4(this,e,zE(this,e,n,r))}moveByGroup(e,n){return $4(this,e,zE(this,e,n,r=>Poe(this,e.head,r)))}visualLineSide(e,n){let r=this.bidiSpans(e),s=this.textDirectionAt(e.from),i=r[n?r.length-1:0];return Me.cursor(i.side(n,s)+e.from,i.forward(!n,s)?1:-1)}moveToLineBoundary(e,n,r=!0){return Doe(this,e,n,r)}moveVertically(e,n,r){return $4(this,e,zoe(this,e,n,r))}domAtPos(e){return this.docView.domAtPos(e)}posAtDOM(e,n=0){return this.docView.posFromDOM(e,n)}posAtCoords(e,n=!0){return this.readMeasured(),cq(this,e,n)}coordsAtPos(e,n=1){this.readMeasured();let r=this.docView.coordsAt(e,n);if(!r||r.left==r.right)return r;let s=this.state.doc.lineAt(e),i=this.bidiSpans(s),a=i[Hc.find(i,e-s.from,-1,n)];return Up(r,a.dir==br.LTR==n>0)}coordsForChar(e){return this.readMeasured(),this.docView.coordsForChar(e)}get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth}get defaultLineHeight(){return this.viewState.heightOracle.lineHeight}get textDirection(){return this.viewState.defaultTextDirection}textDirectionAt(e){return!this.state.facet(eq)||ethis.viewport.to?this.textDirection:(this.readMeasured(),this.docView.textDirectionAt(e))}get lineWrapping(){return this.viewState.heightOracle.lineWrapping}bidiSpans(e){if(e.length>Ole)return UF(e.length);let n=this.textDirectionAt(e.from),r;for(let i of this.bidiCache)if(i.from==e.from&&i.dir==n&&(i.fresh||VF(i.isolates,r=_E(this,e))))return i.order;r||(r=_E(this,e));let s=voe(e.text,n,r);return this.bidiCache.push(new Jv(e.from,e.to,n,r,!0,s)),s}get hasFocus(){var e;return(this.dom.ownerDocument.hasFocus()||et.safari&&((e=this.inputState)===null||e===void 0?void 0:e.lastContextMenu)>Date.now()-3e4)&&this.root.activeElement==this.contentDOM}focus(){this.observer.ignore(()=>{AF(this.contentDOM),this.docView.updateSelection()})}setRoot(e){this._root!=e&&(this._root=e,this.observer.setWindow((e.nodeType==9?e:e.ownerDocument).defaultView||window),this.mountStyles())}destroy(){this.root.activeElement==this.contentDOM&&this.contentDOM.blur();for(let e of this.plugins)e.destroy(this);this.plugins=[],this.inputState.destroy(),this.docView.destroy(),this.dom.remove(),this.observer.destroy(),this.measureScheduled>-1&&this.win.cancelAnimationFrame(this.measureScheduled),this.destroyed=!0}static scrollIntoView(e,n={}){return o1.of(new Ih(typeof e=="number"?Me.cursor(e):e,n.y,n.x,n.yMargin,n.xMargin))}scrollSnapshot(){let{scrollTop:e,scrollLeft:n}=this.scrollDOM,r=this.viewState.scrollAnchorAt(e);return o1.of(new Ih(Me.cursor(r.from),"start","start",r.top-e,n,!0))}setTabFocusMode(e){e==null?this.inputState.tabFocusMode=this.inputState.tabFocusMode<0?0:-1:typeof e=="boolean"?this.inputState.tabFocusMode=e?0:-1:this.inputState.tabFocusMode!=0&&(this.inputState.tabFocusMode=Date.now()+e)}static domEventHandlers(e){return Yr.define(()=>({}),{eventHandlers:e})}static domEventObservers(e){return Yr.define(()=>({}),{eventObservers:e})}static theme(e,n){let r=Yc.newName(),s=[f1.of(r),l0.of(Jk(`.${r}`,e))];return n&&n.dark&&s.push(Kk.of(!0)),s}static baseTheme(e){return uu.lowest(l0.of(Jk("."+Zk,e,jq)))}static findFromDOM(e){var n;let r=e.querySelector(".cm-content"),s=r&&sr.get(r)||sr.get(e);return((n=s?.rootView)===null||n===void 0?void 0:n.view)||null}}Ze.styleModule=l0;Ze.inputHandler=ZF;Ze.clipboardInputFilter=u6;Ze.clipboardOutputFilter=d6;Ze.scrollHandler=nq;Ze.focusChangeEffect=JF;Ze.perLineTextDirection=eq;Ze.exceptionSink=KF;Ze.updateListener=Wk;Ze.editable=Ml;Ze.mouseSelectionStyle=YF;Ze.dragMovesSelection=XF;Ze.clickAddsSelectionRange=GF;Ze.decorations=W0;Ze.outerDecorations=iq;Ze.atomicRanges=Xp;Ze.bidiIsolatedRanges=aq;Ze.scrollMargins=oq;Ze.darkTheme=Kk;Ze.cspNonce=st.define({combine:t=>t.length?t[0]:""});Ze.contentAttributes=h6;Ze.editorAttributes=sq;Ze.lineWrapping=Ze.contentAttributes.of({class:"cm-lineWrapping"});Ze.announce=Qt.define();const Ole=4096,e_={};class Jv{constructor(e,n,r,s,i,a){this.from=e,this.to=n,this.dir=r,this.isolates=s,this.fresh=i,this.order=a}static update(e,n){if(n.empty&&!e.some(i=>i.fresh))return e;let r=[],s=e.length?e[e.length-1].dir:br.LTR;for(let i=Math.max(0,e.length-10);i=0;s--){let i=r[s],a=typeof i=="function"?i(t):i;a&&qk(a,n)}return n}const jle=et.mac?"mac":et.windows?"win":et.linux?"linux":"key";function Nle(t,e){const n=t.split(/-(?!$)/);let r=n[n.length-1];r=="Space"&&(r=" ");let s,i,a,l;for(let c=0;cr.concat(s),[]))),n}function Tle(t,e,n){return Cq(Nq(t.state),e,t,n)}let Bc=null;const Ele=4e3;function _le(t,e=jle){let n=Object.create(null),r=Object.create(null),s=(a,l)=>{let c=r[a];if(c==null)r[a]=l;else if(c!=l)throw new Error("Key binding "+a+" is used both as a regular binding and as a multi-stroke prefix")},i=(a,l,c,d,h)=>{var m,g;let x=n[a]||(n[a]=Object.create(null)),y=l.split(/ (?!$)/).map(k=>Nle(k,e));for(let k=1;k{let T=Bc={view:N,prefix:j,scope:a};return setTimeout(()=>{Bc==T&&(Bc=null)},Ele),!0}]})}let w=y.join(" ");s(w,!1);let S=x[w]||(x[w]={preventDefault:!1,stopPropagation:!1,run:((g=(m=x._any)===null||m===void 0?void 0:m.run)===null||g===void 0?void 0:g.slice())||[]});c&&S.run.push(c),d&&(S.preventDefault=!0),h&&(S.stopPropagation=!0)};for(let a of t){let l=a.scope?a.scope.split(" "):["editor"];if(a.any)for(let d of l){let h=n[d]||(n[d]=Object.create(null));h._any||(h._any={preventDefault:!1,stopPropagation:!1,run:[]});let{any:m}=a;for(let g in h)h[g].run.push(x=>m(x,eO))}let c=a[e]||a.key;if(c)for(let d of l)i(d,c,a.run,a.preventDefault,a.stopPropagation),a.shift&&i(d,"Shift-"+c,a.shift,a.preventDefault,a.stopPropagation)}return n}let eO=null;function Cq(t,e,n,r){eO=e;let s=Zae(e),i=vi(s,0),a=ko(i)==s.length&&s!=" ",l="",c=!1,d=!1,h=!1;Bc&&Bc.view==n&&Bc.scope==r&&(l=Bc.prefix+" ",pq.indexOf(e.keyCode)<0&&(d=!0,Bc=null));let m=new Set,g=S=>{if(S){for(let k of S.run)if(!m.has(k)&&(m.add(k),k(n)))return S.stopPropagation&&(h=!0),!0;S.preventDefault&&(S.stopPropagation&&(h=!0),d=!0)}return!1},x=t[r],y,w;return x&&(g(x[l+m1(s,e,!a)])?c=!0:a&&(e.altKey||e.metaKey||e.ctrlKey)&&!(et.windows&&e.ctrlKey&&e.altKey)&&!(et.mac&&e.altKey&&!(e.ctrlKey||e.metaKey))&&(y=Kc[e.keyCode])&&y!=s?(g(x[l+m1(y,e,!0)])||e.shiftKey&&(w=V0[e.keyCode])!=s&&w!=y&&g(x[l+m1(w,e,!1)]))&&(c=!0):a&&e.shiftKey&&g(x[l+m1(s,e,!0)])&&(c=!0),!c&&g(x._any)&&(c=!0)),d&&(c=!0),c&&h&&e.stopPropagation(),eO=null,c}class Kp{constructor(e,n,r,s,i){this.className=e,this.left=n,this.top=r,this.width=s,this.height=i}draw(){let e=document.createElement("div");return e.className=this.className,this.adjust(e),e}update(e,n){return n.className!=this.className?!1:(this.adjust(e),!0)}adjust(e){e.style.left=this.left+"px",e.style.top=this.top+"px",this.width!=null&&(e.style.width=this.width+"px"),e.style.height=this.height+"px"}eq(e){return this.left==e.left&&this.top==e.top&&this.width==e.width&&this.height==e.height&&this.className==e.className}static forRange(e,n,r){if(r.empty){let s=e.coordsAtPos(r.head,r.assoc||1);if(!s)return[];let i=Tq(e);return[new Kp(n,s.left-i.left,s.top-i.top,null,s.bottom-s.top)]}else return Ale(e,n,r)}}function Tq(t){let e=t.scrollDOM.getBoundingClientRect();return{left:(t.textDirection==br.LTR?e.left:e.right-t.scrollDOM.clientWidth*t.scaleX)-t.scrollDOM.scrollLeft*t.scaleX,top:e.top-t.scrollDOM.scrollTop*t.scaleY}}function r_(t,e,n,r){let s=t.coordsAtPos(e,n*2);if(!s)return r;let i=t.dom.getBoundingClientRect(),a=(s.top+s.bottom)/2,l=t.posAtCoords({x:i.left+1,y:a}),c=t.posAtCoords({x:i.right-1,y:a});return l==null||c==null?r:{from:Math.max(r.from,Math.min(l,c)),to:Math.min(r.to,Math.max(l,c))}}function Ale(t,e,n){if(n.to<=t.viewport.from||n.from>=t.viewport.to)return[];let r=Math.max(n.from,t.viewport.from),s=Math.min(n.to,t.viewport.to),i=t.textDirection==br.LTR,a=t.contentDOM,l=a.getBoundingClientRect(),c=Tq(t),d=a.querySelector(".cm-line"),h=d&&window.getComputedStyle(d),m=l.left+(h?parseInt(h.paddingLeft)+Math.min(0,parseInt(h.textIndent)):0),g=l.right-(h?parseInt(h.paddingRight):0),x=Xk(t,r,1),y=Xk(t,s,-1),w=x.type==ri.Text?x:null,S=y.type==ri.Text?y:null;if(w&&(t.lineWrapping||x.widgetLineBreaks)&&(w=r_(t,r,1,w)),S&&(t.lineWrapping||y.widgetLineBreaks)&&(S=r_(t,s,-1,S)),w&&S&&w.from==S.from&&w.to==S.to)return j(N(n.from,n.to,w));{let E=w?N(n.from,null,w):T(x,!1),_=S?N(null,n.to,S):T(y,!0),A=[];return(w||x).to<(S||y).from-(w&&S?1:0)||x.widgetLineBreaks>1&&E.bottom+t.defaultLineHeight/2<_.top?A.push(k(m,E.bottom,g,_.top)):E.bottom<_.top&&t.elementAtHeight((E.bottom+_.top)/2).type==ri.Text&&(E.bottom=_.top=(E.bottom+_.top)/2),j(E).concat(A).concat(j(_))}function k(E,_,A,D){return new Kp(e,E-c.left,_-c.top,A-E,D-_)}function j({top:E,bottom:_,horizontal:A}){let D=[];for(let q=0;qW&&I.from=L)break;R>V&&H(Math.max(Y,V),E==null&&Y<=W,Math.min(R,L),_==null&&R>=ee,K.dir)}if(V=$.to+1,V>=L)break}return B.length==0&&H(W,E==null,ee,_==null,t.textDirection),{top:D,bottom:q,horizontal:B}}function T(E,_){let A=l.top+(_?E.top:E.bottom);return{top:A,bottom:A,horizontal:[]}}}function Mle(t,e){return t.constructor==e.constructor&&t.eq(e)}class Rle{constructor(e,n){this.view=e,this.layer=n,this.drawn=[],this.scaleX=1,this.scaleY=1,this.measureReq={read:this.measure.bind(this),write:this.draw.bind(this)},this.dom=e.scrollDOM.appendChild(document.createElement("div")),this.dom.classList.add("cm-layer"),n.above&&this.dom.classList.add("cm-layer-above"),n.class&&this.dom.classList.add(n.class),this.scale(),this.dom.setAttribute("aria-hidden","true"),this.setOrder(e.state),e.requestMeasure(this.measureReq),n.mount&&n.mount(this.dom,e)}update(e){e.startState.facet(gv)!=e.state.facet(gv)&&this.setOrder(e.state),(this.layer.update(e,this.dom)||e.geometryChanged)&&(this.scale(),e.view.requestMeasure(this.measureReq))}docViewUpdate(e){this.layer.updateOnDocViewUpdate!==!1&&e.requestMeasure(this.measureReq)}setOrder(e){let n=0,r=e.facet(gv);for(;n!Mle(n,this.drawn[r]))){let n=this.dom.firstChild,r=0;for(let s of e)s.update&&n&&s.constructor&&this.drawn[r].constructor&&s.update(n,this.drawn[r])?(n=n.nextSibling,r++):this.dom.insertBefore(s.draw(),n);for(;n;){let s=n.nextSibling;n.remove(),n=s}this.drawn=e,et.safari&&et.safari_version>=26&&(this.dom.style.display=this.dom.firstChild?"":"none")}}destroy(){this.layer.destroy&&this.layer.destroy(this.dom,this.view),this.dom.remove()}}const gv=st.define();function Eq(t){return[Yr.define(e=>new Rle(e,t)),gv.of(t)]}const G0=st.define({combine(t){return Vo(t,{cursorBlinkRate:1200,drawRangeCursor:!0},{cursorBlinkRate:(e,n)=>Math.min(e,n),drawRangeCursor:(e,n)=>e||n})}});function Dle(t={}){return[G0.of(t),Ple,zle,Ile,tq.of(!0)]}function _q(t){return t.startState.facet(G0)!=t.state.facet(G0)}const Ple=Eq({above:!0,markers(t){let{state:e}=t,n=e.facet(G0),r=[];for(let s of e.selection.ranges){let i=s==e.selection.main;if(s.empty||n.drawRangeCursor){let a=i?"cm-cursor cm-cursor-primary":"cm-cursor cm-cursor-secondary",l=s.empty?s:Me.cursor(s.head,s.head>s.anchor?-1:1);for(let c of Kp.forRange(t,a,l))r.push(c)}}return r},update(t,e){t.transactions.some(r=>r.selection)&&(e.style.animationName=e.style.animationName=="cm-blink"?"cm-blink2":"cm-blink");let n=_q(t);return n&&s_(t.state,e),t.docChanged||t.selectionSet||n},mount(t,e){s_(e.state,t)},class:"cm-cursorLayer"});function s_(t,e){e.style.animationDuration=t.facet(G0).cursorBlinkRate+"ms"}const zle=Eq({above:!1,markers(t){return t.state.selection.ranges.map(e=>e.empty?[]:Kp.forRange(t,"cm-selectionBackground",e)).reduce((e,n)=>e.concat(n))},update(t,e){return t.docChanged||t.selectionSet||t.viewportChanged||_q(t)},class:"cm-selectionLayer"}),Ile=uu.highest(Ze.theme({".cm-line":{"& ::selection, &::selection":{backgroundColor:"transparent !important"},caretColor:"transparent !important"},".cm-content":{caretColor:"transparent !important","& :focus":{caretColor:"initial !important","&::selection, & ::selection":{backgroundColor:"Highlight !important"}}}})),Aq=Qt.define({map(t,e){return t==null?null:e.mapPos(t)}}),d0=Os.define({create(){return null},update(t,e){return t!=null&&(t=e.changes.mapPos(t)),e.effects.reduce((n,r)=>r.is(Aq)?r.value:n,t)}}),Lle=Yr.fromClass(class{constructor(t){this.view=t,this.cursor=null,this.measureReq={read:this.readPos.bind(this),write:this.drawCursor.bind(this)}}update(t){var e;let n=t.state.field(d0);n==null?this.cursor!=null&&((e=this.cursor)===null||e===void 0||e.remove(),this.cursor=null):(this.cursor||(this.cursor=this.view.scrollDOM.appendChild(document.createElement("div")),this.cursor.className="cm-dropCursor"),(t.startState.field(d0)!=n||t.docChanged||t.geometryChanged)&&this.view.requestMeasure(this.measureReq))}readPos(){let{view:t}=this,e=t.state.field(d0),n=e!=null&&t.coordsAtPos(e);if(!n)return null;let r=t.scrollDOM.getBoundingClientRect();return{left:n.left-r.left+t.scrollDOM.scrollLeft*t.scaleX,top:n.top-r.top+t.scrollDOM.scrollTop*t.scaleY,height:n.bottom-n.top}}drawCursor(t){if(this.cursor){let{scaleX:e,scaleY:n}=this.view;t?(this.cursor.style.left=t.left/e+"px",this.cursor.style.top=t.top/n+"px",this.cursor.style.height=t.height/n+"px"):this.cursor.style.left="-100000px"}}destroy(){this.cursor&&this.cursor.remove()}setDropPos(t){this.view.state.field(d0)!=t&&this.view.dispatch({effects:Aq.of(t)})}},{eventObservers:{dragover(t){this.setDropPos(this.view.posAtCoords({x:t.clientX,y:t.clientY}))},dragleave(t){(t.target==this.view.contentDOM||!this.view.contentDOM.contains(t.relatedTarget))&&this.setDropPos(null)},dragend(){this.setDropPos(null)},drop(){this.setDropPos(null)}}});function Ble(){return[d0,Lle]}function i_(t,e,n,r,s){e.lastIndex=0;for(let i=t.iterRange(n,r),a=n,l;!i.next().done;a+=i.value.length)if(!i.lineBreak)for(;l=e.exec(i.value);)s(a+l.index,l)}function Fle(t,e){let n=t.visibleRanges;if(n.length==1&&n[0].from==t.viewport.from&&n[0].to==t.viewport.to)return n;let r=[];for(let{from:s,to:i}of n)s=Math.max(t.state.doc.lineAt(s).from,s-e),i=Math.min(t.state.doc.lineAt(i).to,i+e),r.length&&r[r.length-1].to>=s?r[r.length-1].to=i:r.push({from:s,to:i});return r}class qle{constructor(e){const{regexp:n,decoration:r,decorate:s,boundary:i,maxLength:a=1e3}=e;if(!n.global)throw new RangeError("The regular expression given to MatchDecorator should have its 'g' flag set");if(this.regexp=n,s)this.addMatch=(l,c,d,h)=>s(h,d,d+l[0].length,l,c);else if(typeof r=="function")this.addMatch=(l,c,d,h)=>{let m=r(l,c,d);m&&h(d,d+l[0].length,m)};else if(r)this.addMatch=(l,c,d,h)=>h(d,d+l[0].length,r);else throw new RangeError("Either 'decorate' or 'decoration' should be provided to MatchDecorator");this.boundary=i,this.maxLength=a}createDeco(e){let n=new Hl,r=n.add.bind(n);for(let{from:s,to:i}of Fle(e,this.maxLength))i_(e.state.doc,this.regexp,s,i,(a,l)=>this.addMatch(l,e,a,r));return n.finish()}updateDeco(e,n){let r=1e9,s=-1;return e.docChanged&&e.changes.iterChanges((i,a,l,c)=>{c>=e.view.viewport.from&&l<=e.view.viewport.to&&(r=Math.min(l,r),s=Math.max(c,s))}),e.viewportMoved||s-r>1e3?this.createDeco(e.view):s>-1?this.updateRange(e.view,n.map(e.changes),r,s):n}updateRange(e,n,r,s){for(let i of e.visibleRanges){let a=Math.max(i.from,r),l=Math.min(i.to,s);if(l>=a){let c=e.state.doc.lineAt(a),d=c.toc.from;a--)if(this.boundary.test(c.text[a-1-c.from])){h=a;break}for(;lg.push(k.range(w,S));if(c==d)for(this.regexp.lastIndex=h-c.from;(x=this.regexp.exec(c.text))&&x.indexthis.addMatch(S,e,w,y));n=n.update({filterFrom:h,filterTo:m,filter:(w,S)=>wm,add:g})}}return n}}const tO=/x/.unicode!=null?"gu":"g",$le=new RegExp(`[\0-\b ---Ÿ­؜​‎‏\u2028\u2029‭‮⁦⁧⁩\uFEFF-]`,tO),Hle={0:"null",7:"bell",8:"backspace",10:"newline",11:"vertical tab",13:"carriage return",27:"escape",8203:"zero width space",8204:"zero width non-joiner",8205:"zero width joiner",8206:"left-to-right mark",8207:"right-to-left mark",8232:"line separator",8237:"left-to-right override",8238:"right-to-left override",8294:"left-to-right isolate",8295:"right-to-left isolate",8297:"pop directional isolate",8233:"paragraph separator",65279:"zero width no-break space",65532:"object replacement"};let V4=null;function Qle(){var t;if(V4==null&&typeof document<"u"&&document.body){let e=document.body.style;V4=((t=e.tabSize)!==null&&t!==void 0?t:e.MozTabSize)!=null}return V4||!1}const xv=st.define({combine(t){let e=Vo(t,{render:null,specialChars:$le,addSpecialChars:null});return(e.replaceTabs=!Qle())&&(e.specialChars=new RegExp(" |"+e.specialChars.source,tO)),e.addSpecialChars&&(e.specialChars=new RegExp(e.specialChars.source+"|"+e.addSpecialChars.source,tO)),e}});function Vle(t={}){return[xv.of(t),Ule()]}let a_=null;function Ule(){return a_||(a_=Yr.fromClass(class{constructor(t){this.view=t,this.decorations=Ot.none,this.decorationCache=Object.create(null),this.decorator=this.makeDecorator(t.state.facet(xv)),this.decorations=this.decorator.createDeco(t)}makeDecorator(t){return new qle({regexp:t.specialChars,decoration:(e,n,r)=>{let{doc:s}=n.state,i=vi(e[0],0);if(i==9){let a=s.lineAt(r),l=n.state.tabSize,c=Cf(a.text,l,r-a.from);return Ot.replace({widget:new Yle((l-c%l)*this.view.defaultCharacterWidth/this.view.scaleX)})}return this.decorationCache[i]||(this.decorationCache[i]=Ot.replace({widget:new Xle(t,i)}))},boundary:t.replaceTabs?void 0:/[^]/})}update(t){let e=t.state.facet(xv);t.startState.facet(xv)!=e?(this.decorator=this.makeDecorator(e),this.decorations=this.decorator.createDeco(t.view)):this.decorations=this.decorator.updateDeco(t,this.decorations)}},{decorations:t=>t.decorations}))}const Wle="•";function Gle(t){return t>=32?Wle:t==10?"␤":String.fromCharCode(9216+t)}class Xle extends Uo{constructor(e,n){super(),this.options=e,this.code=n}eq(e){return e.code==this.code}toDOM(e){let n=Gle(this.code),r=e.state.phrase("Control character")+" "+(Hle[this.code]||"0x"+this.code.toString(16)),s=this.options.render&&this.options.render(this.code,r,n);if(s)return s;let i=document.createElement("span");return i.textContent=n,i.title=r,i.setAttribute("aria-label",r),i.className="cm-specialChar",i}ignoreEvent(){return!1}}class Yle extends Uo{constructor(e){super(),this.width=e}eq(e){return e.width==this.width}toDOM(){let e=document.createElement("span");return e.textContent=" ",e.className="cm-tab",e.style.width=this.width+"px",e}ignoreEvent(){return!1}}function Kle(){return Jle}const Zle=Ot.line({class:"cm-activeLine"}),Jle=Yr.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.docChanged||t.selectionSet)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=-1,n=[];for(let r of t.state.selection.ranges){let s=t.lineBlockAt(r.head);s.from>e&&(n.push(Zle.range(s.from)),e=s.from)}return Ot.set(n)}},{decorations:t=>t.decorations});class ece extends Uo{constructor(e){super(),this.content=e}toDOM(e){let n=document.createElement("span");return n.className="cm-placeholder",n.style.pointerEvents="none",n.appendChild(typeof this.content=="string"?document.createTextNode(this.content):typeof this.content=="function"?this.content(e):this.content.cloneNode(!0)),n.setAttribute("aria-hidden","true"),n}coordsAt(e){let n=e.firstChild?Jh(e.firstChild):[];if(!n.length)return null;let r=window.getComputedStyle(e.parentNode),s=Up(n[0],r.direction!="rtl"),i=parseInt(r.lineHeight);return s.bottom-s.top>i*1.5?{left:s.left,right:s.right,top:s.top,bottom:s.top+i}:s}ignoreEvent(){return!1}}function tce(t){let e=Yr.fromClass(class{constructor(n){this.view=n,this.placeholder=t?Ot.set([Ot.widget({widget:new ece(t),side:1}).range(0)]):Ot.none}get decorations(){return this.view.state.doc.length?Ot.none:this.placeholder}},{decorations:n=>n.decorations});return typeof t=="string"?[e,Ze.contentAttributes.of({"aria-placeholder":t})]:e}const nO=2e3;function nce(t,e,n){let r=Math.min(e.line,n.line),s=Math.max(e.line,n.line),i=[];if(e.off>nO||n.off>nO||e.col<0||n.col<0){let a=Math.min(e.off,n.off),l=Math.max(e.off,n.off);for(let c=r;c<=s;c++){let d=t.doc.line(c);d.length<=l&&i.push(Me.range(d.from+a,d.to+l))}}else{let a=Math.min(e.col,n.col),l=Math.max(e.col,n.col);for(let c=r;c<=s;c++){let d=t.doc.line(c),h=Rk(d.text,a,t.tabSize,!0);if(h<0)i.push(Me.cursor(d.to));else{let m=Rk(d.text,l,t.tabSize);i.push(Me.range(d.from+h,d.from+m))}}}return i}function rce(t,e){let n=t.coordsAtPos(t.viewport.from);return n?Math.round(Math.abs((n.left-e)/t.defaultCharacterWidth)):-1}function o_(t,e){let n=t.posAtCoords({x:e.clientX,y:e.clientY},!1),r=t.state.doc.lineAt(n),s=n-r.from,i=s>nO?-1:s==r.length?rce(t,e.clientX):Cf(r.text,t.state.tabSize,n-r.from);return{line:r.number,col:i,off:s}}function sce(t,e){let n=o_(t,e),r=t.state.selection;return n?{update(s){if(s.docChanged){let i=s.changes.mapPos(s.startState.doc.line(n.line).from),a=s.state.doc.lineAt(i);n={line:a.number,col:n.col,off:Math.min(n.off,a.length)},r=r.map(s.changes)}},get(s,i,a){let l=o_(t,s);if(!l)return r;let c=nce(t.state,n,l);return c.length?a?Me.create(c.concat(r.ranges)):Me.create(c):r}}:null}function ice(t){let e=(n=>n.altKey&&n.button==0);return Ze.mouseSelectionStyle.of((n,r)=>e(r)?sce(n,r):null)}const ace={Alt:[18,t=>!!t.altKey],Control:[17,t=>!!t.ctrlKey],Shift:[16,t=>!!t.shiftKey],Meta:[91,t=>!!t.metaKey]},oce={style:"cursor: crosshair"};function lce(t={}){let[e,n]=ace[t.key||"Alt"],r=Yr.fromClass(class{constructor(s){this.view=s,this.isDown=!1}set(s){this.isDown!=s&&(this.isDown=s,this.view.update([]))}},{eventObservers:{keydown(s){this.set(s.keyCode==e||n(s))},keyup(s){(s.keyCode==e||!n(s))&&this.set(!1)},mousemove(s){this.set(n(s))}}});return[r,Ze.contentAttributes.of(s=>{var i;return!((i=s.plugin(r))===null||i===void 0)&&i.isDown?oce:null})]}const p1="-10000px";class Mq{constructor(e,n,r,s){this.facet=n,this.createTooltipView=r,this.removeTooltipView=s,this.input=e.state.facet(n),this.tooltips=this.input.filter(a=>a);let i=null;this.tooltipViews=this.tooltips.map(a=>i=r(a,i))}update(e,n){var r;let s=e.state.facet(this.facet),i=s.filter(c=>c);if(s===this.input){for(let c of this.tooltipViews)c.update&&c.update(e);return!1}let a=[],l=n?[]:null;for(let c=0;cn[d]=c),n.length=l.length),this.input=s,this.tooltips=i,this.tooltipViews=a,!0}}function cce(t){let e=t.dom.ownerDocument.documentElement;return{top:0,left:0,bottom:e.clientHeight,right:e.clientWidth}}const U4=st.define({combine:t=>{var e,n,r;return{position:et.ios?"absolute":((e=t.find(s=>s.position))===null||e===void 0?void 0:e.position)||"fixed",parent:((n=t.find(s=>s.parent))===null||n===void 0?void 0:n.parent)||null,tooltipSpace:((r=t.find(s=>s.tooltipSpace))===null||r===void 0?void 0:r.tooltipSpace)||cce}}}),l_=new WeakMap,x6=Yr.fromClass(class{constructor(t){this.view=t,this.above=[],this.inView=!0,this.madeAbsolute=!1,this.lastTransaction=0,this.measureTimeout=-1;let e=t.state.facet(U4);this.position=e.position,this.parent=e.parent,this.classes=t.themeClasses,this.createContainer(),this.measureReq={read:this.readMeasure.bind(this),write:this.writeMeasure.bind(this),key:this},this.resizeObserver=typeof ResizeObserver=="function"?new ResizeObserver(()=>this.measureSoon()):null,this.manager=new Mq(t,v6,(n,r)=>this.createTooltip(n,r),n=>{this.resizeObserver&&this.resizeObserver.unobserve(n.dom),n.dom.remove()}),this.above=this.manager.tooltips.map(n=>!!n.above),this.intersectionObserver=typeof IntersectionObserver=="function"?new IntersectionObserver(n=>{Date.now()>this.lastTransaction-50&&n.length>0&&n[n.length-1].intersectionRatio<1&&this.measureSoon()},{threshold:[1]}):null,this.observeIntersection(),t.win.addEventListener("resize",this.measureSoon=this.measureSoon.bind(this)),this.maybeMeasure()}createContainer(){this.parent?(this.container=document.createElement("div"),this.container.style.position="relative",this.container.className=this.view.themeClasses,this.parent.appendChild(this.container)):this.container=this.view.dom}observeIntersection(){if(this.intersectionObserver){this.intersectionObserver.disconnect();for(let t of this.manager.tooltipViews)this.intersectionObserver.observe(t.dom)}}measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout(()=>{this.measureTimeout=-1,this.maybeMeasure()},50))}update(t){t.transactions.length&&(this.lastTransaction=Date.now());let e=this.manager.update(t,this.above);e&&this.observeIntersection();let n=e||t.geometryChanged,r=t.state.facet(U4);if(r.position!=this.position&&!this.madeAbsolute){this.position=r.position;for(let s of this.manager.tooltipViews)s.dom.style.position=this.position;n=!0}if(r.parent!=this.parent){this.parent&&this.container.remove(),this.parent=r.parent,this.createContainer();for(let s of this.manager.tooltipViews)this.container.appendChild(s.dom);n=!0}else this.parent&&this.view.themeClasses!=this.classes&&(this.classes=this.container.className=this.view.themeClasses);n&&this.maybeMeasure()}createTooltip(t,e){let n=t.create(this.view),r=e?e.dom:null;if(n.dom.classList.add("cm-tooltip"),t.arrow&&!n.dom.querySelector(".cm-tooltip > .cm-tooltip-arrow")){let s=document.createElement("div");s.className="cm-tooltip-arrow",n.dom.appendChild(s)}return n.dom.style.position=this.position,n.dom.style.top=p1,n.dom.style.left="0px",this.container.insertBefore(n.dom,r),n.mount&&n.mount(this.view),this.resizeObserver&&this.resizeObserver.observe(n.dom),n}destroy(){var t,e,n;this.view.win.removeEventListener("resize",this.measureSoon);for(let r of this.manager.tooltipViews)r.dom.remove(),(t=r.destroy)===null||t===void 0||t.call(r);this.parent&&this.container.remove(),(e=this.resizeObserver)===null||e===void 0||e.disconnect(),(n=this.intersectionObserver)===null||n===void 0||n.disconnect(),clearTimeout(this.measureTimeout)}readMeasure(){let t=1,e=1,n=!1;if(this.position=="fixed"&&this.manager.tooltipViews.length){let{dom:i}=this.manager.tooltipViews[0];if(et.safari){let a=i.getBoundingClientRect();n=Math.abs(a.top+1e4)>1||Math.abs(a.left)>1}else n=!!i.offsetParent&&i.offsetParent!=this.container.ownerDocument.body}if(n||this.position=="absolute")if(this.parent){let i=this.parent.getBoundingClientRect();i.width&&i.height&&(t=i.width/this.parent.offsetWidth,e=i.height/this.parent.offsetHeight)}else({scaleX:t,scaleY:e}=this.view.viewState);let r=this.view.scrollDOM.getBoundingClientRect(),s=f6(this.view);return{visible:{left:r.left+s.left,top:r.top+s.top,right:r.right-s.right,bottom:r.bottom-s.bottom},parent:this.parent?this.container.getBoundingClientRect():this.view.dom.getBoundingClientRect(),pos:this.manager.tooltips.map((i,a)=>{let l=this.manager.tooltipViews[a];return l.getCoords?l.getCoords(i.pos):this.view.coordsAtPos(i.pos)}),size:this.manager.tooltipViews.map(({dom:i})=>i.getBoundingClientRect()),space:this.view.state.facet(U4).tooltipSpace(this.view),scaleX:t,scaleY:e,makeAbsolute:n}}writeMeasure(t){var e;if(t.makeAbsolute){this.madeAbsolute=!0,this.position="absolute";for(let l of this.manager.tooltipViews)l.dom.style.position="absolute"}let{visible:n,space:r,scaleX:s,scaleY:i}=t,a=[];for(let l=0;l=Math.min(n.bottom,r.bottom)||m.rightMath.min(n.right,r.right)+.1)){h.style.top=p1;continue}let x=c.arrow?d.dom.querySelector(".cm-tooltip-arrow"):null,y=x?7:0,w=g.right-g.left,S=(e=l_.get(d))!==null&&e!==void 0?e:g.bottom-g.top,k=d.offset||dce,j=this.view.textDirection==br.LTR,N=g.width>r.right-r.left?j?r.left:r.right-g.width:j?Math.max(r.left,Math.min(m.left-(x?14:0)+k.x,r.right-w)):Math.min(Math.max(r.left,m.left-w+(x?14:0)-k.x),r.right-w),T=this.above[l];!c.strictSide&&(T?m.top-S-y-k.yr.bottom)&&T==r.bottom-m.bottom>m.top-r.top&&(T=this.above[l]=!T);let E=(T?m.top-r.top:r.bottom-m.bottom)-y;if(EN&&D.top<_+S&&D.bottom>_&&(_=T?D.top-S-2-y:D.bottom+y+2);if(this.position=="absolute"?(h.style.top=(_-t.parent.top)/i+"px",c_(h,(N-t.parent.left)/s)):(h.style.top=_/i+"px",c_(h,N/s)),x){let D=m.left+(j?k.x:-k.x)-(N+14-7);x.style.left=D/s+"px"}d.overlap!==!0&&a.push({left:N,top:_,right:A,bottom:_+S}),h.classList.toggle("cm-tooltip-above",T),h.classList.toggle("cm-tooltip-below",!T),d.positioned&&d.positioned(t.space)}}maybeMeasure(){if(this.manager.tooltips.length&&(this.view.inView&&this.view.requestMeasure(this.measureReq),this.inView!=this.view.inView&&(this.inView=this.view.inView,!this.inView)))for(let t of this.manager.tooltipViews)t.dom.style.top=p1}},{eventObservers:{scroll(){this.maybeMeasure()}}});function c_(t,e){let n=parseInt(t.style.left,10);(isNaN(n)||Math.abs(e-n)>1)&&(t.style.left=e+"px")}const uce=Ze.baseTheme({".cm-tooltip":{zIndex:500,boxSizing:"border-box"},"&light .cm-tooltip":{border:"1px solid #bbb",backgroundColor:"#f5f5f5"},"&light .cm-tooltip-section:not(:first-child)":{borderTop:"1px solid #bbb"},"&dark .cm-tooltip":{backgroundColor:"#333338",color:"white"},".cm-tooltip-arrow":{height:"7px",width:"14px",position:"absolute",zIndex:-1,overflow:"hidden","&:before, &:after":{content:"''",position:"absolute",width:0,height:0,borderLeft:"7px solid transparent",borderRight:"7px solid transparent"},".cm-tooltip-above &":{bottom:"-7px","&:before":{borderTop:"7px solid #bbb"},"&:after":{borderTop:"7px solid #f5f5f5",bottom:"1px"}},".cm-tooltip-below &":{top:"-7px","&:before":{borderBottom:"7px solid #bbb"},"&:after":{borderBottom:"7px solid #f5f5f5",top:"1px"}}},"&dark .cm-tooltip .cm-tooltip-arrow":{"&:before":{borderTopColor:"#333338",borderBottomColor:"#333338"},"&:after":{borderTopColor:"transparent",borderBottomColor:"transparent"}}}),dce={x:0,y:0},v6=st.define({enables:[x6,uce]}),ey=st.define({combine:t=>t.reduce((e,n)=>e.concat(n),[])});class pb{static create(e){return new pb(e)}constructor(e){this.view=e,this.mounted=!1,this.dom=document.createElement("div"),this.dom.classList.add("cm-tooltip-hover"),this.manager=new Mq(e,ey,(n,r)=>this.createHostedView(n,r),n=>n.dom.remove())}createHostedView(e,n){let r=e.create(this.view);return r.dom.classList.add("cm-tooltip-section"),this.dom.insertBefore(r.dom,n?n.dom.nextSibling:this.dom.firstChild),this.mounted&&r.mount&&r.mount(this.view),r}mount(e){for(let n of this.manager.tooltipViews)n.mount&&n.mount(e);this.mounted=!0}positioned(e){for(let n of this.manager.tooltipViews)n.positioned&&n.positioned(e)}update(e){this.manager.update(e)}destroy(){var e;for(let n of this.manager.tooltipViews)(e=n.destroy)===null||e===void 0||e.call(n)}passProp(e){let n;for(let r of this.manager.tooltipViews){let s=r[e];if(s!==void 0){if(n===void 0)n=s;else if(n!==s)return}}return n}get offset(){return this.passProp("offset")}get getCoords(){return this.passProp("getCoords")}get overlap(){return this.passProp("overlap")}get resize(){return this.passProp("resize")}}const hce=v6.compute([ey],t=>{let e=t.facet(ey);return e.length===0?null:{pos:Math.min(...e.map(n=>n.pos)),end:Math.max(...e.map(n=>{var r;return(r=n.end)!==null&&r!==void 0?r:n.pos})),create:pb.create,above:e[0].above,arrow:e.some(n=>n.arrow)}});class fce{constructor(e,n,r,s,i){this.view=e,this.source=n,this.field=r,this.setHover=s,this.hoverTime=i,this.hoverTimeout=-1,this.restartTimeout=-1,this.pending=null,this.lastMove={x:0,y:0,target:e.dom,time:0},this.checkHover=this.checkHover.bind(this),e.dom.addEventListener("mouseleave",this.mouseleave=this.mouseleave.bind(this)),e.dom.addEventListener("mousemove",this.mousemove=this.mousemove.bind(this))}update(){this.pending&&(this.pending=null,clearTimeout(this.restartTimeout),this.restartTimeout=setTimeout(()=>this.startHover(),20))}get active(){return this.view.state.field(this.field)}checkHover(){if(this.hoverTimeout=-1,this.active.length)return;let e=Date.now()-this.lastMove.time;el.bottom||n.xl.right+e.defaultCharacterWidth)return;let c=e.bidiSpans(e.state.doc.lineAt(s)).find(h=>h.from<=s&&h.to>=s),d=c&&c.dir==br.RTL?-1:1;i=n.x{this.pending==l&&(this.pending=null,c&&!(Array.isArray(c)&&!c.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(c)?c:[c])}))},c=>bi(e.state,c,"hover tooltip"))}else a&&!(Array.isArray(a)&&!a.length)&&e.dispatch({effects:this.setHover.of(Array.isArray(a)?a:[a])})}get tooltip(){let e=this.view.plugin(x6),n=e?e.manager.tooltips.findIndex(r=>r.create==pb.create):-1;return n>-1?e.manager.tooltipViews[n]:null}mousemove(e){var n,r;this.lastMove={x:e.clientX,y:e.clientY,target:e.target,time:Date.now()},this.hoverTimeout<0&&(this.hoverTimeout=setTimeout(this.checkHover,this.hoverTime));let{active:s,tooltip:i}=this;if(s.length&&i&&!mce(i.dom,e)||this.pending){let{pos:a}=s[0]||this.pending,l=(r=(n=s[0])===null||n===void 0?void 0:n.end)!==null&&r!==void 0?r:a;(a==l?this.view.posAtCoords(this.lastMove)!=a:!pce(this.view,a,l,e.clientX,e.clientY))&&(this.view.dispatch({effects:this.setHover.of([])}),this.pending=null)}}mouseleave(e){clearTimeout(this.hoverTimeout),this.hoverTimeout=-1;let{active:n}=this;if(n.length){let{tooltip:r}=this;r&&r.dom.contains(e.relatedTarget)?this.watchTooltipLeave(r.dom):this.view.dispatch({effects:this.setHover.of([])})}}watchTooltipLeave(e){let n=r=>{e.removeEventListener("mouseleave",n),this.active.length&&!this.view.dom.contains(r.relatedTarget)&&this.view.dispatch({effects:this.setHover.of([])})};e.addEventListener("mouseleave",n)}destroy(){clearTimeout(this.hoverTimeout),this.view.dom.removeEventListener("mouseleave",this.mouseleave),this.view.dom.removeEventListener("mousemove",this.mousemove)}}const g1=4;function mce(t,e){let{left:n,right:r,top:s,bottom:i}=t.getBoundingClientRect(),a;if(a=t.querySelector(".cm-tooltip-arrow")){let l=a.getBoundingClientRect();s=Math.min(l.top,s),i=Math.max(l.bottom,i)}return e.clientX>=n-g1&&e.clientX<=r+g1&&e.clientY>=s-g1&&e.clientY<=i+g1}function pce(t,e,n,r,s,i){let a=t.scrollDOM.getBoundingClientRect(),l=t.documentTop+t.documentPadding.top+t.contentHeight;if(a.left>r||a.rights||Math.min(a.bottom,l)=e&&c<=n}function gce(t,e={}){let n=Qt.define(),r=Os.define({create(){return[]},update(s,i){if(s.length&&(e.hideOnChange&&(i.docChanged||i.selection)?s=[]:e.hideOn&&(s=s.filter(a=>!e.hideOn(i,a))),i.docChanged)){let a=[];for(let l of s){let c=i.changes.mapPos(l.pos,-1,Ds.TrackDel);if(c!=null){let d=Object.assign(Object.create(null),l);d.pos=c,d.end!=null&&(d.end=i.changes.mapPos(d.end)),a.push(d)}}s=a}for(let a of i.effects)a.is(n)&&(s=a.value),a.is(xce)&&(s=[]);return s},provide:s=>ey.from(s)});return{active:r,extension:[r,Yr.define(s=>new fce(s,t,r,n,e.hoverTime||300)),hce]}}function Rq(t,e){let n=t.plugin(x6);if(!n)return null;let r=n.manager.tooltips.indexOf(e);return r<0?null:n.manager.tooltipViews[r]}const xce=Qt.define(),u_=st.define({combine(t){let e,n;for(let r of t)e=e||r.topContainer,n=n||r.bottomContainer;return{topContainer:e,bottomContainer:n}}});function X0(t,e){let n=t.plugin(Dq),r=n?n.specs.indexOf(e):-1;return r>-1?n.panels[r]:null}const Dq=Yr.fromClass(class{constructor(t){this.input=t.state.facet(Y0),this.specs=this.input.filter(n=>n),this.panels=this.specs.map(n=>n(t));let e=t.state.facet(u_);this.top=new x1(t,!0,e.topContainer),this.bottom=new x1(t,!1,e.bottomContainer),this.top.sync(this.panels.filter(n=>n.top)),this.bottom.sync(this.panels.filter(n=>!n.top));for(let n of this.panels)n.dom.classList.add("cm-panel"),n.mount&&n.mount()}update(t){let e=t.state.facet(u_);this.top.container!=e.topContainer&&(this.top.sync([]),this.top=new x1(t.view,!0,e.topContainer)),this.bottom.container!=e.bottomContainer&&(this.bottom.sync([]),this.bottom=new x1(t.view,!1,e.bottomContainer)),this.top.syncClasses(),this.bottom.syncClasses();let n=t.state.facet(Y0);if(n!=this.input){let r=n.filter(c=>c),s=[],i=[],a=[],l=[];for(let c of r){let d=this.specs.indexOf(c),h;d<0?(h=c(t.view),l.push(h)):(h=this.panels[d],h.update&&h.update(t)),s.push(h),(h.top?i:a).push(h)}this.specs=r,this.panels=s,this.top.sync(i),this.bottom.sync(a);for(let c of l)c.dom.classList.add("cm-panel"),c.mount&&c.mount()}else for(let r of this.panels)r.update&&r.update(t)}destroy(){this.top.sync([]),this.bottom.sync([])}},{provide:t=>Ze.scrollMargins.of(e=>{let n=e.plugin(t);return n&&{top:n.top.scrollMargin(),bottom:n.bottom.scrollMargin()}})});class x1{constructor(e,n,r){this.view=e,this.top=n,this.container=r,this.dom=void 0,this.classes="",this.panels=[],this.syncClasses()}sync(e){for(let n of this.panels)n.destroy&&e.indexOf(n)<0&&n.destroy();this.panels=e,this.syncDOM()}syncDOM(){if(this.panels.length==0){this.dom&&(this.dom.remove(),this.dom=void 0);return}if(!this.dom){this.dom=document.createElement("div"),this.dom.className=this.top?"cm-panels cm-panels-top":"cm-panels cm-panels-bottom",this.dom.style[this.top?"top":"bottom"]="0";let n=this.container||this.view.dom;n.insertBefore(this.dom,this.top?n.firstChild:null)}let e=this.dom.firstChild;for(let n of this.panels)if(n.dom.parentNode==this.dom){for(;e!=n.dom;)e=d_(e);e=e.nextSibling}else this.dom.insertBefore(n.dom,e);for(;e;)e=d_(e)}scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?this.dom.getBoundingClientRect().bottom-Math.max(0,this.view.scrollDOM.getBoundingClientRect().top):Math.min(innerHeight,this.view.scrollDOM.getBoundingClientRect().bottom)-this.dom.getBoundingClientRect().top)}syncClasses(){if(!(!this.container||this.classes==this.view.themeClasses)){for(let e of this.classes.split(" "))e&&this.container.classList.remove(e);for(let e of(this.classes=this.view.themeClasses).split(" "))e&&this.container.classList.add(e)}}}function d_(t){let e=t.nextSibling;return t.remove(),e}const Y0=st.define({enables:Dq});class Vl extends od{compare(e){return this==e||this.constructor==e.constructor&&this.eq(e)}eq(e){return!1}destroy(e){}}Vl.prototype.elementClass="";Vl.prototype.toDOM=void 0;Vl.prototype.mapMode=Ds.TrackBefore;Vl.prototype.startSide=Vl.prototype.endSide=-1;Vl.prototype.point=!0;const vv=st.define(),vce=st.define(),yce={class:"",renderEmptyElements:!1,elementStyle:"",markers:()=>Bn.empty,lineMarker:()=>null,widgetMarker:()=>null,lineMarkerChange:null,initialSpacer:null,updateSpacer:null,domEventHandlers:{},side:"before"},T0=st.define();function bce(t){return[Pq(),T0.of({...yce,...t})]}const h_=st.define({combine:t=>t.some(e=>e)});function Pq(t){return[wce]}const wce=Yr.fromClass(class{constructor(t){this.view=t,this.domAfter=null,this.prevViewport=t.viewport,this.dom=document.createElement("div"),this.dom.className="cm-gutters cm-gutters-before",this.dom.setAttribute("aria-hidden","true"),this.dom.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.gutters=t.state.facet(T0).map(e=>new m_(t,e)),this.fixed=!t.state.facet(h_);for(let e of this.gutters)e.config.side=="after"?this.getDOMAfter().appendChild(e.dom):this.dom.appendChild(e.dom);this.fixed&&(this.dom.style.position="sticky"),this.syncGutters(!1),t.scrollDOM.insertBefore(this.dom,t.contentDOM)}getDOMAfter(){return this.domAfter||(this.domAfter=document.createElement("div"),this.domAfter.className="cm-gutters cm-gutters-after",this.domAfter.setAttribute("aria-hidden","true"),this.domAfter.style.minHeight=this.view.contentHeight/this.view.scaleY+"px",this.domAfter.style.position=this.fixed?"sticky":"",this.view.scrollDOM.appendChild(this.domAfter)),this.domAfter}update(t){if(this.updateGutters(t)){let e=this.prevViewport,n=t.view.viewport,r=Math.min(e.to,n.to)-Math.max(e.from,n.from);this.syncGutters(r<(n.to-n.from)*.8)}if(t.geometryChanged){let e=this.view.contentHeight/this.view.scaleY+"px";this.dom.style.minHeight=e,this.domAfter&&(this.domAfter.style.minHeight=e)}this.view.state.facet(h_)!=!this.fixed&&(this.fixed=!this.fixed,this.dom.style.position=this.fixed?"sticky":"",this.domAfter&&(this.domAfter.style.position=this.fixed?"sticky":"")),this.prevViewport=t.view.viewport}syncGutters(t){let e=this.dom.nextSibling;t&&(this.dom.remove(),this.domAfter&&this.domAfter.remove());let n=Bn.iter(this.view.state.facet(vv),this.view.viewport.from),r=[],s=this.gutters.map(i=>new Sce(i,this.view.viewport,-this.view.documentPadding.top));for(let i of this.view.viewportLineBlocks)if(r.length&&(r=[]),Array.isArray(i.type)){let a=!0;for(let l of i.type)if(l.type==ri.Text&&a){rO(n,r,l.from);for(let c of s)c.line(this.view,l,r);a=!1}else if(l.widget)for(let c of s)c.widget(this.view,l)}else if(i.type==ri.Text){rO(n,r,i.from);for(let a of s)a.line(this.view,i,r)}else if(i.widget)for(let a of s)a.widget(this.view,i);for(let i of s)i.finish();t&&(this.view.scrollDOM.insertBefore(this.dom,e),this.domAfter&&this.view.scrollDOM.appendChild(this.domAfter))}updateGutters(t){let e=t.startState.facet(T0),n=t.state.facet(T0),r=t.docChanged||t.heightChanged||t.viewportChanged||!Bn.eq(t.startState.facet(vv),t.state.facet(vv),t.view.viewport.from,t.view.viewport.to);if(e==n)for(let s of this.gutters)s.update(t)&&(r=!0);else{r=!0;let s=[];for(let i of n){let a=e.indexOf(i);a<0?s.push(new m_(this.view,i)):(this.gutters[a].update(t),s.push(this.gutters[a]))}for(let i of this.gutters)i.dom.remove(),s.indexOf(i)<0&&i.destroy();for(let i of s)i.config.side=="after"?this.getDOMAfter().appendChild(i.dom):this.dom.appendChild(i.dom);this.gutters=s}return r}destroy(){for(let t of this.gutters)t.destroy();this.dom.remove(),this.domAfter&&this.domAfter.remove()}},{provide:t=>Ze.scrollMargins.of(e=>{let n=e.plugin(t);if(!n||n.gutters.length==0||!n.fixed)return null;let r=n.dom.offsetWidth*e.scaleX,s=n.domAfter?n.domAfter.offsetWidth*e.scaleX:0;return e.textDirection==br.LTR?{left:r,right:s}:{right:r,left:s}})});function f_(t){return Array.isArray(t)?t:[t]}function rO(t,e,n){for(;t.value&&t.from<=n;)t.from==n&&e.push(t.value),t.next()}class Sce{constructor(e,n,r){this.gutter=e,this.height=r,this.i=0,this.cursor=Bn.iter(e.markers,n.from)}addElement(e,n,r){let{gutter:s}=this,i=(n.top-this.height)/e.scaleY,a=n.height/e.scaleY;if(this.i==s.elements.length){let l=new zq(e,a,i,r);s.elements.push(l),s.dom.appendChild(l.dom)}else s.elements[this.i].update(e,a,i,r);this.height=n.bottom,this.i++}line(e,n,r){let s=[];rO(this.cursor,s,n.from),r.length&&(s=s.concat(r));let i=this.gutter.config.lineMarker(e,n,s);i&&s.unshift(i);let a=this.gutter;s.length==0&&!a.config.renderEmptyElements||this.addElement(e,n,s)}widget(e,n){let r=this.gutter.config.widgetMarker(e,n.widget,n),s=r?[r]:null;for(let i of e.state.facet(vce)){let a=i(e,n.widget,n);a&&(s||(s=[])).push(a)}s&&this.addElement(e,n,s)}finish(){let e=this.gutter;for(;e.elements.length>this.i;){let n=e.elements.pop();e.dom.removeChild(n.dom),n.destroy()}}}class m_{constructor(e,n){this.view=e,this.config=n,this.elements=[],this.spacer=null,this.dom=document.createElement("div"),this.dom.className="cm-gutter"+(this.config.class?" "+this.config.class:"");for(let r in n.domEventHandlers)this.dom.addEventListener(r,s=>{let i=s.target,a;if(i!=this.dom&&this.dom.contains(i)){for(;i.parentNode!=this.dom;)i=i.parentNode;let c=i.getBoundingClientRect();a=(c.top+c.bottom)/2}else a=s.clientY;let l=e.lineBlockAtHeight(a-e.documentTop);n.domEventHandlers[r](e,l,s)&&s.preventDefault()});this.markers=f_(n.markers(e)),n.initialSpacer&&(this.spacer=new zq(e,0,0,[n.initialSpacer(e)]),this.dom.appendChild(this.spacer.dom),this.spacer.dom.style.cssText+="visibility: hidden; pointer-events: none")}update(e){let n=this.markers;if(this.markers=f_(this.config.markers(e.view)),this.spacer&&this.config.updateSpacer){let s=this.config.updateSpacer(this.spacer.markers[0],e);s!=this.spacer.markers[0]&&this.spacer.update(e.view,0,0,[s])}let r=e.view.viewport;return!Bn.eq(this.markers,n,r.from,r.to)||(this.config.lineMarkerChange?this.config.lineMarkerChange(e):!1)}destroy(){for(let e of this.elements)e.destroy()}}class zq{constructor(e,n,r,s){this.height=-1,this.above=0,this.markers=[],this.dom=document.createElement("div"),this.dom.className="cm-gutterElement",this.update(e,n,r,s)}update(e,n,r,s){this.height!=n&&(this.height=n,this.dom.style.height=n+"px"),this.above!=r&&(this.dom.style.marginTop=(this.above=r)?r+"px":""),kce(this.markers,s)||this.setMarkers(e,s)}setMarkers(e,n){let r="cm-gutterElement",s=this.dom.firstChild;for(let i=0,a=0;;){let l=a,c=ii(l,c,d)||a(l,c,d):a}return r}})}});class W4 extends Vl{constructor(e){super(),this.number=e}eq(e){return this.number==e.number}toDOM(){return document.createTextNode(this.number)}}function G4(t,e){return t.state.facet(Eh).formatNumber(e,t.state)}const Nce=T0.compute([Eh],t=>({class:"cm-lineNumbers",renderEmptyElements:!1,markers(e){return e.state.facet(Oce)},lineMarker(e,n,r){return r.some(s=>s.toDOM)?null:new W4(G4(e,e.state.doc.lineAt(n.from).number))},widgetMarker:(e,n,r)=>{for(let s of e.state.facet(jce)){let i=s(e,n,r);if(i)return i}return null},lineMarkerChange:e=>e.startState.facet(Eh)!=e.state.facet(Eh),initialSpacer(e){return new W4(G4(e,p_(e.state.doc.lines)))},updateSpacer(e,n){let r=G4(n.view,p_(n.view.state.doc.lines));return r==e.number?e:new W4(r)},domEventHandlers:t.facet(Eh).domEventHandlers,side:"before"}));function Cce(t={}){return[Eh.of(t),Pq(),Nce]}function p_(t){let e=9;for(;e{let e=[],n=-1;for(let r of t.selection.ranges){let s=t.doc.lineAt(r.head).from;s>n&&(n=s,e.push(Tce.range(s)))}return Bn.of(e)});function _ce(){return Ece}const Iq=1024;let Ace=0;class X4{constructor(e,n){this.from=e,this.to=n}}class an{constructor(e={}){this.id=Ace++,this.perNode=!!e.perNode,this.deserialize=e.deserialize||(()=>{throw new Error("This node type doesn't define a deserialize function")}),this.combine=e.combine||null}add(e){if(this.perNode)throw new RangeError("Can't add per-node props to node types");return typeof e!="function"&&(e=ai.match(e)),n=>{let r=e(n);return r===void 0?null:[this,r]}}}an.closedBy=new an({deserialize:t=>t.split(" ")});an.openedBy=new an({deserialize:t=>t.split(" ")});an.group=new an({deserialize:t=>t.split(" ")});an.isolate=new an({deserialize:t=>{if(t&&t!="rtl"&&t!="ltr"&&t!="auto")throw new RangeError("Invalid value for isolate: "+t);return t||"auto"}});an.contextHash=new an({perNode:!0});an.lookAhead=new an({perNode:!0});an.mounted=new an({perNode:!0});class ty{constructor(e,n,r){this.tree=e,this.overlay=n,this.parser=r}static get(e){return e&&e.props&&e.props[an.mounted.id]}}const Mce=Object.create(null);class ai{constructor(e,n,r,s=0){this.name=e,this.props=n,this.id=r,this.flags=s}static define(e){let n=e.props&&e.props.length?Object.create(null):Mce,r=(e.top?1:0)|(e.skipped?2:0)|(e.error?4:0)|(e.name==null?8:0),s=new ai(e.name||"",n,e.id,r);if(e.props){for(let i of e.props)if(Array.isArray(i)||(i=i(s)),i){if(i[0].perNode)throw new RangeError("Can't store a per-node prop on a node type");n[i[0].id]=i[1]}}return s}prop(e){return this.props[e.id]}get isTop(){return(this.flags&1)>0}get isSkipped(){return(this.flags&2)>0}get isError(){return(this.flags&4)>0}get isAnonymous(){return(this.flags&8)>0}is(e){if(typeof e=="string"){if(this.name==e)return!0;let n=this.prop(an.group);return n?n.indexOf(e)>-1:!1}return this.id==e}static match(e){let n=Object.create(null);for(let r in e)for(let s of r.split(" "))n[s]=e[r];return r=>{for(let s=r.prop(an.group),i=-1;i<(s?s.length:0);i++){let a=n[i<0?r.name:s[i]];if(a)return a}}}}ai.none=new ai("",Object.create(null),0,8);class gb{constructor(e){this.types=e;for(let n=0;n0;for(let c=this.cursor(a|hs.IncludeAnonymous);;){let d=!1;if(c.from<=i&&c.to>=s&&(!l&&c.type.isAnonymous||n(c)!==!1)){if(c.firstChild())continue;d=!0}for(;d&&r&&(l||!c.type.isAnonymous)&&r(c),!c.nextSibling();){if(!c.parent())return;d=!0}}}prop(e){return e.perNode?this.props?this.props[e.id]:void 0:this.type.prop(e)}get propValues(){let e=[];if(this.props)for(let n in this.props)e.push([+n,this.props[n]]);return e}balance(e={}){return this.children.length<=8?this:w6(ai.none,this.children,this.positions,0,this.children.length,0,this.length,(n,r,s)=>new ur(this.type,n,r,s,this.propValues),e.makeTree||((n,r,s)=>new ur(ai.none,n,r,s)))}static build(e){return zce(e)}}ur.empty=new ur(ai.none,[],[],0);class y6{constructor(e,n){this.buffer=e,this.index=n}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}get pos(){return this.index}next(){this.index-=4}fork(){return new y6(this.buffer,this.index)}}class Jc{constructor(e,n,r){this.buffer=e,this.length=n,this.set=r}get type(){return ai.none}toString(){let e=[];for(let n=0;n0));c=a[c+3]);return l}slice(e,n,r){let s=this.buffer,i=new Uint16Array(n-e),a=0;for(let l=e,c=0;l=e&&ne;case 1:return n<=e&&r>e;case 2:return r>e;case 4:return!0}}function K0(t,e,n,r){for(var s;t.from==t.to||(n<1?t.from>=e:t.from>e)||(n>-1?t.to<=e:t.to0?l.length:-1;e!=d;e+=n){let h=l[e],m=c[e]+a.from;if(Lq(s,r,m,m+h.length)){if(h instanceof Jc){if(i&hs.ExcludeBuffers)continue;let g=h.findChild(0,h.buffer.length,n,r-m,s);if(g>-1)return new Co(new Rce(a,h,e,m),null,g)}else if(i&hs.IncludeAnonymous||!h.type.isAnonymous||b6(h)){let g;if(!(i&hs.IgnoreMounts)&&(g=ty.get(h))&&!g.overlay)return new Ni(g.tree,m,e,a);let x=new Ni(h,m,e,a);return i&hs.IncludeAnonymous||!x.type.isAnonymous?x:x.nextChild(n<0?h.children.length-1:0,n,r,s)}}}if(i&hs.IncludeAnonymous||!a.type.isAnonymous||(a.index>=0?e=a.index+n:e=n<0?-1:a._parent._tree.children.length,a=a._parent,!a))return null}}get firstChild(){return this.nextChild(0,1,0,4)}get lastChild(){return this.nextChild(this._tree.children.length-1,-1,0,4)}childAfter(e){return this.nextChild(0,1,e,2)}childBefore(e){return this.nextChild(this._tree.children.length-1,-1,e,-2)}enter(e,n,r=0){let s;if(!(r&hs.IgnoreOverlays)&&(s=ty.get(this._tree))&&s.overlay){let i=e-this.from;for(let{from:a,to:l}of s.overlay)if((n>0?a<=i:a=i:l>i))return new Ni(s.tree,s.overlay[0].from+this.from,-1,this)}return this.nextChild(0,1,e,n,r)}nextSignificantParent(){let e=this;for(;e.type.isAnonymous&&e._parent;)e=e._parent;return e}get parent(){return this._parent?this._parent.nextSignificantParent():null}get nextSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index+1,1,0,4):null}get prevSibling(){return this._parent&&this.index>=0?this._parent.nextChild(this.index-1,-1,0,4):null}get tree(){return this._tree}toTree(){return this._tree}toString(){return this._tree.toString()}}function x_(t,e,n,r){let s=t.cursor(),i=[];if(!s.firstChild())return i;if(n!=null){for(let a=!1;!a;)if(a=s.type.is(n),!s.nextSibling())return i}for(;;){if(r!=null&&s.type.is(r))return i;if(s.type.is(e)&&i.push(s.node),!s.nextSibling())return r==null?i:[]}}function sO(t,e,n=e.length-1){for(let r=t;n>=0;r=r.parent){if(!r)return!1;if(!r.type.isAnonymous){if(e[n]&&e[n]!=r.name)return!1;n--}}return!0}class Rce{constructor(e,n,r,s){this.parent=e,this.buffer=n,this.index=r,this.start=s}}class Co extends Bq{get name(){return this.type.name}get from(){return this.context.start+this.context.buffer.buffer[this.index+1]}get to(){return this.context.start+this.context.buffer.buffer[this.index+2]}constructor(e,n,r){super(),this.context=e,this._parent=n,this.index=r,this.type=e.buffer.set.types[e.buffer.buffer[r]]}child(e,n,r){let{buffer:s}=this.context,i=s.findChild(this.index+4,s.buffer[this.index+3],e,n-this.context.start,r);return i<0?null:new Co(this.context,this,i)}get firstChild(){return this.child(1,0,4)}get lastChild(){return this.child(-1,0,4)}childAfter(e){return this.child(1,e,2)}childBefore(e){return this.child(-1,e,-2)}enter(e,n,r=0){if(r&hs.ExcludeBuffers)return null;let{buffer:s}=this.context,i=s.findChild(this.index+4,s.buffer[this.index+3],n>0?1:-1,e-this.context.start,n);return i<0?null:new Co(this.context,this,i)}get parent(){return this._parent||this.context.parent.nextSignificantParent()}externalSibling(e){return this._parent?null:this.context.parent.nextChild(this.context.index+e,e,0,4)}get nextSibling(){let{buffer:e}=this.context,n=e.buffer[this.index+3];return n<(this._parent?e.buffer[this._parent.index+3]:e.buffer.length)?new Co(this.context,this._parent,n):this.externalSibling(1)}get prevSibling(){let{buffer:e}=this.context,n=this._parent?this._parent.index+4:0;return this.index==n?this.externalSibling(-1):new Co(this.context,this._parent,e.findChild(n,this.index,-1,0,4))}get tree(){return null}toTree(){let e=[],n=[],{buffer:r}=this.context,s=this.index+4,i=r.buffer[this.index+3];if(i>s){let a=r.buffer[this.index+1];e.push(r.slice(s,i,a)),n.push(0)}return new ur(this.type,e,n,this.to-this.from)}toString(){return this.context.buffer.childString(this.index)}}function Fq(t){if(!t.length)return null;let e=0,n=t[0];for(let i=1;in.from||a.to=e){let l=new Ni(a.tree,a.overlay[0].from+i.from,-1,i);(s||(s=[r])).push(K0(l,e,n,!1))}}return s?Fq(s):r}class iO{get name(){return this.type.name}constructor(e,n=0){if(this.mode=n,this.buffer=null,this.stack=[],this.index=0,this.bufferNode=null,e instanceof Ni)this.yieldNode(e);else{this._tree=e.context.parent,this.buffer=e.context;for(let r=e._parent;r;r=r._parent)this.stack.unshift(r.index);this.bufferNode=e,this.yieldBuf(e.index)}}yieldNode(e){return e?(this._tree=e,this.type=e.type,this.from=e.from,this.to=e.to,!0):!1}yieldBuf(e,n){this.index=e;let{start:r,buffer:s}=this.buffer;return this.type=n||s.set.types[s.buffer[e]],this.from=r+s.buffer[e+1],this.to=r+s.buffer[e+2],!0}yield(e){return e?e instanceof Ni?(this.buffer=null,this.yieldNode(e)):(this.buffer=e.context,this.yieldBuf(e.index,e.type)):!1}toString(){return this.buffer?this.buffer.buffer.childString(this.index):this._tree.toString()}enterChild(e,n,r){if(!this.buffer)return this.yield(this._tree.nextChild(e<0?this._tree._tree.children.length-1:0,e,n,r,this.mode));let{buffer:s}=this.buffer,i=s.findChild(this.index+4,s.buffer[this.index+3],e,n-this.buffer.start,r);return i<0?!1:(this.stack.push(this.index),this.yieldBuf(i))}firstChild(){return this.enterChild(1,0,4)}lastChild(){return this.enterChild(-1,0,4)}childAfter(e){return this.enterChild(1,e,2)}childBefore(e){return this.enterChild(-1,e,-2)}enter(e,n,r=this.mode){return this.buffer?r&hs.ExcludeBuffers?!1:this.enterChild(1,e,n):this.yield(this._tree.enter(e,n,r))}parent(){if(!this.buffer)return this.yieldNode(this.mode&hs.IncludeAnonymous?this._tree._parent:this._tree.parent);if(this.stack.length)return this.yieldBuf(this.stack.pop());let e=this.mode&hs.IncludeAnonymous?this.buffer.parent:this.buffer.parent.nextSignificantParent();return this.buffer=null,this.yieldNode(e)}sibling(e){if(!this.buffer)return this._tree._parent?this.yield(this._tree.index<0?null:this._tree._parent.nextChild(this._tree.index+e,e,0,4,this.mode)):!1;let{buffer:n}=this.buffer,r=this.stack.length-1;if(e<0){let s=r<0?0:this.stack[r]+4;if(this.index!=s)return this.yieldBuf(n.findChild(s,this.index,-1,0,4))}else{let s=n.buffer[this.index+3];if(s<(r<0?n.buffer.length:n.buffer[this.stack[r]+3]))return this.yieldBuf(s)}return r<0?this.yield(this.buffer.parent.nextChild(this.buffer.index+e,e,0,4,this.mode)):!1}nextSibling(){return this.sibling(1)}prevSibling(){return this.sibling(-1)}atLastNode(e){let n,r,{buffer:s}=this;if(s){if(e>0){if(this.index-1)for(let i=n+e,a=e<0?-1:r._tree.children.length;i!=a;i+=e){let l=r._tree.children[i];if(this.mode&hs.IncludeAnonymous||l instanceof Jc||!l.type.isAnonymous||b6(l))return!1}return!0}move(e,n){if(n&&this.enterChild(e,0,4))return!0;for(;;){if(this.sibling(e))return!0;if(this.atLastNode(e)||!this.parent())return!1}}next(e=!0){return this.move(1,e)}prev(e=!0){return this.move(-1,e)}moveTo(e,n=0){for(;(this.from==this.to||(n<1?this.from>=e:this.from>e)||(n>-1?this.to<=e:this.to=0;){for(let a=e;a;a=a._parent)if(a.index==s){if(s==this.index)return a;n=a,r=i+1;break e}s=this.stack[--i]}for(let s=r;s=0;i--){if(i<0)return sO(this._tree,e,s);let a=r[n.buffer[this.stack[i]]];if(!a.isAnonymous){if(e[s]&&e[s]!=a.name)return!1;s--}}return!0}}function b6(t){return t.children.some(e=>e instanceof Jc||!e.type.isAnonymous||b6(e))}function zce(t){var e;let{buffer:n,nodeSet:r,maxBufferLength:s=Iq,reused:i=[],minRepeatType:a=r.types.length}=t,l=Array.isArray(n)?new y6(n,n.length):n,c=r.types,d=0,h=0;function m(E,_,A,D,q,B){let{id:H,start:W,end:ee,size:I}=l,V=h,L=d;if(I<0)if(l.next(),I==-1){let ie=i[H];A.push(ie),D.push(W-E);return}else if(I==-3){d=H;return}else if(I==-4){h=H;return}else throw new RangeError(`Unrecognized record size: ${I}`);let $=c[H],K,Y,R=W-E;if(ee-W<=s&&(Y=S(l.pos-_,q))){let ie=new Uint16Array(Y.size-Y.skip),X=l.pos-Y.size,z=ie.length;for(;l.pos>X;)z=k(Y.start,ie,z);K=new Jc(ie,ee-Y.start,r),R=Y.start-E}else{let ie=l.pos-I;l.next();let X=[],z=[],U=H>=a?H:-1,te=0,ne=ee;for(;l.pos>ie;)U>=0&&l.id==U&&l.size>=0?(l.end<=ne-s&&(y(X,z,W,te,l.end,ne,U,V,L),te=X.length,ne=l.end),l.next()):B>2500?g(W,ie,X,z):m(W,ie,X,z,U,B+1);if(U>=0&&te>0&&te-1&&te>0){let G=x($,L);K=w6($,X,z,0,X.length,0,ee-W,G,G)}else K=w($,X,z,ee-W,V-ee,L)}A.push(K),D.push(R)}function g(E,_,A,D){let q=[],B=0,H=-1;for(;l.pos>_;){let{id:W,start:ee,end:I,size:V}=l;if(V>4)l.next();else{if(H>-1&&ee=0;I-=3)W[V++]=q[I],W[V++]=q[I+1]-ee,W[V++]=q[I+2]-ee,W[V++]=V;A.push(new Jc(W,q[2]-ee,r)),D.push(ee-E)}}function x(E,_){return(A,D,q)=>{let B=0,H=A.length-1,W,ee;if(H>=0&&(W=A[H])instanceof ur){if(!H&&W.type==E&&W.length==q)return W;(ee=W.prop(an.lookAhead))&&(B=D[H]+W.length+ee)}return w(E,A,D,q,B,_)}}function y(E,_,A,D,q,B,H,W,ee){let I=[],V=[];for(;E.length>D;)I.push(E.pop()),V.push(_.pop()+A-q);E.push(w(r.types[H],I,V,B-q,W-B,ee)),_.push(q-A)}function w(E,_,A,D,q,B,H){if(B){let W=[an.contextHash,B];H=H?[W].concat(H):[W]}if(q>25){let W=[an.lookAhead,q];H=H?[W].concat(H):[W]}return new ur(E,_,A,D,H)}function S(E,_){let A=l.fork(),D=0,q=0,B=0,H=A.end-s,W={size:0,start:0,skip:0};e:for(let ee=A.pos-E;A.pos>ee;){let I=A.size;if(A.id==_&&I>=0){W.size=D,W.start=q,W.skip=B,B+=4,D+=4,A.next();continue}let V=A.pos-I;if(I<0||V=a?4:0,$=A.start;for(A.next();A.pos>V;){if(A.size<0)if(A.size==-3)L+=4;else break e;else A.id>=a&&(L+=4);A.next()}q=$,D+=I,B+=L}return(_<0||D==E)&&(W.size=D,W.start=q,W.skip=B),W.size>4?W:void 0}function k(E,_,A){let{id:D,start:q,end:B,size:H}=l;if(l.next(),H>=0&&D4){let ee=l.pos-(H-4);for(;l.pos>ee;)A=k(E,_,A)}_[--A]=W,_[--A]=B-E,_[--A]=q-E,_[--A]=D}else H==-3?d=D:H==-4&&(h=D);return A}let j=[],N=[];for(;l.pos>0;)m(t.start||0,t.bufferStart||0,j,N,-1,0);let T=(e=t.length)!==null&&e!==void 0?e:j.length?N[0]+j[0].length:0;return new ur(c[t.topID],j.reverse(),N.reverse(),T)}const v_=new WeakMap;function yv(t,e){if(!t.isAnonymous||e instanceof Jc||e.type!=t)return 1;let n=v_.get(e);if(n==null){n=1;for(let r of e.children){if(r.type!=t||!(r instanceof ur)){n=1;break}n+=yv(t,r)}v_.set(e,n)}return n}function w6(t,e,n,r,s,i,a,l,c){let d=0;for(let y=r;y=h)break;_+=A}if(N==T+1){if(_>h){let A=y[T];x(A.children,A.positions,0,A.children.length,w[T]+j);continue}m.push(y[T])}else{let A=w[N-1]+y[N-1].length-E;m.push(w6(t,y,w,T,N,E,A,null,c))}g.push(E+j-i)}}return x(e,n,r,s,0),(l||c)(m,g,a)}class Ice{constructor(){this.map=new WeakMap}setBuffer(e,n,r){let s=this.map.get(e);s||this.map.set(e,s=new Map),s.set(n,r)}getBuffer(e,n){let r=this.map.get(e);return r&&r.get(n)}set(e,n){e instanceof Co?this.setBuffer(e.context.buffer,e.index,n):e instanceof Ni&&this.map.set(e.tree,n)}get(e){return e instanceof Co?this.getBuffer(e.context.buffer,e.index):e instanceof Ni?this.map.get(e.tree):void 0}cursorSet(e,n){e.buffer?this.setBuffer(e.buffer.buffer,e.index,n):this.map.set(e.tree,n)}cursorGet(e){return e.buffer?this.getBuffer(e.buffer.buffer,e.index):this.map.get(e.tree)}}class rd{constructor(e,n,r,s,i=!1,a=!1){this.from=e,this.to=n,this.tree=r,this.offset=s,this.open=(i?1:0)|(a?2:0)}get openStart(){return(this.open&1)>0}get openEnd(){return(this.open&2)>0}static addTree(e,n=[],r=!1){let s=[new rd(0,e.length,e,0,!1,r)];for(let i of n)i.to>e.length&&s.push(i);return s}static applyChanges(e,n,r=128){if(!n.length)return e;let s=[],i=1,a=e.length?e[0]:null;for(let l=0,c=0,d=0;;l++){let h=l=r)for(;a&&a.from=g.from||m<=g.to||d){let x=Math.max(g.from,c)-d,y=Math.min(g.to,m)-d;g=x>=y?null:new rd(x,y,g.tree,g.offset+d,l>0,!!h)}if(g&&s.push(g),a.to>m)break;a=inew X4(s.from,s.to)):[new X4(0,0)]:[new X4(0,e.length)],this.createParse(e,n||[],r)}parse(e,n,r){let s=this.startParse(e,n,r);for(;;){let i=s.advance();if(i)return i}}};class Lce{constructor(e){this.string=e}get length(){return this.string.length}chunk(e){return this.string.slice(e)}get lineChunks(){return!1}read(e,n){return this.string.slice(e,n)}}new an({perNode:!0});let Bce=0;class ga{constructor(e,n,r,s){this.name=e,this.set=n,this.base=r,this.modified=s,this.id=Bce++}toString(){let{name:e}=this;for(let n of this.modified)n.name&&(e=`${n.name}(${e})`);return e}static define(e,n){let r=typeof e=="string"?e:"?";if(e instanceof ga&&(n=e),n?.base)throw new Error("Can not derive from a modified tag");let s=new ga(r,[],null,[]);if(s.set.push(s),n)for(let i of n.set)s.set.push(i);return s}static defineModifier(e){let n=new ny(e);return r=>r.modified.indexOf(n)>-1?r:ny.get(r.base||r,r.modified.concat(n).sort((s,i)=>s.id-i.id))}}let Fce=0;class ny{constructor(e){this.name=e,this.instances=[],this.id=Fce++}static get(e,n){if(!n.length)return e;let r=n[0].instances.find(l=>l.base==e&&qce(n,l.modified));if(r)return r;let s=[],i=new ga(e.name,s,e,n);for(let l of n)l.instances.push(i);let a=$ce(n);for(let l of e.set)if(!l.modified.length)for(let c of a)s.push(ny.get(l,c));return i}}function qce(t,e){return t.length==e.length&&t.every((n,r)=>n==e[r])}function $ce(t){let e=[[]];for(let n=0;nr.length-n.length)}function k6(t){let e=Object.create(null);for(let n in t){let r=t[n];Array.isArray(r)||(r=[r]);for(let s of n.split(" "))if(s){let i=[],a=2,l=s;for(let m=0;;){if(l=="..."&&m>0&&m+3==s.length){a=1;break}let g=/^"(?:[^"\\]|\\.)*?"|[^\/!]+/.exec(l);if(!g)throw new RangeError("Invalid path: "+s);if(i.push(g[0]=="*"?"":g[0][0]=='"'?JSON.parse(g[0]):g[0]),m+=g[0].length,m==s.length)break;let x=s[m++];if(m==s.length&&x=="!"){a=0;break}if(x!="/")throw new RangeError("Invalid path: "+s);l=s.slice(m)}let c=i.length-1,d=i[c];if(!d)throw new RangeError("Invalid path: "+s);let h=new Z0(r,a,c>0?i.slice(0,c):null);e[d]=h.sort(e[d])}}return qq.add(e)}const qq=new an({combine(t,e){let n,r,s;for(;t||e;){if(!t||e&&t.depth>=e.depth?(s=e,e=e.next):(s=t,t=t.next),n&&n.mode==s.mode&&!s.context&&!n.context)continue;let i=new Z0(s.tags,s.mode,s.context);n?n.next=i:r=i,n=i}return r}});class Z0{constructor(e,n,r,s){this.tags=e,this.mode=n,this.context=r,this.next=s}get opaque(){return this.mode==0}get inherit(){return this.mode==1}sort(e){return!e||e.depth{let a=s;for(let l of i)for(let c of l.set){let d=n[c.id];if(d){a=a?a+" "+d:d;break}}return a},scope:r}}function Hce(t,e){let n=null;for(let r of t){let s=r.style(e);s&&(n=n?n+" "+s:s)}return n}function Qce(t,e,n,r=0,s=t.length){let i=new Vce(r,Array.isArray(e)?e:[e],n);i.highlightRange(t.cursor(),r,s,"",i.highlighters),i.flush(s)}class Vce{constructor(e,n,r){this.at=e,this.highlighters=n,this.span=r,this.class=""}startSpan(e,n){n!=this.class&&(this.flush(e),e>this.at&&(this.at=e),this.class=n)}flush(e){e>this.at&&this.class&&this.span(this.at,e,this.class)}highlightRange(e,n,r,s,i){let{type:a,from:l,to:c}=e;if(l>=r||c<=n)return;a.isTop&&(i=this.highlighters.filter(x=>!x.scope||x.scope(a)));let d=s,h=Uce(e)||Z0.empty,m=Hce(i,h.tags);if(m&&(d&&(d+=" "),d+=m,h.mode==1&&(s+=(s?" ":"")+m)),this.startSpan(Math.max(n,l),d),h.opaque)return;let g=e.tree&&e.tree.prop(an.mounted);if(g&&g.overlay){let x=e.node.enter(g.overlay[0].from+l,1),y=this.highlighters.filter(S=>!S.scope||S.scope(g.tree.type)),w=e.firstChild();for(let S=0,k=l;;S++){let j=S=N||!e.nextSibling())););if(!j||N>r)break;k=j.to+l,k>n&&(this.highlightRange(x.cursor(),Math.max(n,j.from+l),Math.min(r,k),"",y),this.startSpan(Math.min(r,k),d))}w&&e.parent()}else if(e.firstChild()){g&&(s="");do if(!(e.to<=n)){if(e.from>=r)break;this.highlightRange(e,n,r,s,i),this.startSpan(Math.min(r,e.to),d)}while(e.nextSibling());e.parent()}}}function Uce(t){let e=t.type.prop(qq);for(;e&&e.context&&!t.matchContext(e.context);)e=e.next;return e||null}const Ke=ga.define,y1=Ke(),Pc=Ke(),y_=Ke(Pc),b_=Ke(Pc),zc=Ke(),b1=Ke(zc),Y4=Ke(zc),xo=Ke(),zu=Ke(xo),po=Ke(),go=Ke(),aO=Ke(),$m=Ke(aO),w1=Ke(),ye={comment:y1,lineComment:Ke(y1),blockComment:Ke(y1),docComment:Ke(y1),name:Pc,variableName:Ke(Pc),typeName:y_,tagName:Ke(y_),propertyName:b_,attributeName:Ke(b_),className:Ke(Pc),labelName:Ke(Pc),namespace:Ke(Pc),macroName:Ke(Pc),literal:zc,string:b1,docString:Ke(b1),character:Ke(b1),attributeValue:Ke(b1),number:Y4,integer:Ke(Y4),float:Ke(Y4),bool:Ke(zc),regexp:Ke(zc),escape:Ke(zc),color:Ke(zc),url:Ke(zc),keyword:po,self:Ke(po),null:Ke(po),atom:Ke(po),unit:Ke(po),modifier:Ke(po),operatorKeyword:Ke(po),controlKeyword:Ke(po),definitionKeyword:Ke(po),moduleKeyword:Ke(po),operator:go,derefOperator:Ke(go),arithmeticOperator:Ke(go),logicOperator:Ke(go),bitwiseOperator:Ke(go),compareOperator:Ke(go),updateOperator:Ke(go),definitionOperator:Ke(go),typeOperator:Ke(go),controlOperator:Ke(go),punctuation:aO,separator:Ke(aO),bracket:$m,angleBracket:Ke($m),squareBracket:Ke($m),paren:Ke($m),brace:Ke($m),content:xo,heading:zu,heading1:Ke(zu),heading2:Ke(zu),heading3:Ke(zu),heading4:Ke(zu),heading5:Ke(zu),heading6:Ke(zu),contentSeparator:Ke(xo),list:Ke(xo),quote:Ke(xo),emphasis:Ke(xo),strong:Ke(xo),link:Ke(xo),monospace:Ke(xo),strikethrough:Ke(xo),inserted:Ke(),deleted:Ke(),changed:Ke(),invalid:Ke(),meta:w1,documentMeta:Ke(w1),annotation:Ke(w1),processingInstruction:Ke(w1),definition:ga.defineModifier("definition"),constant:ga.defineModifier("constant"),function:ga.defineModifier("function"),standard:ga.defineModifier("standard"),local:ga.defineModifier("local"),special:ga.defineModifier("special")};for(let t in ye){let e=ye[t];e instanceof ga&&(e.name=t)}$q([{tag:ye.link,class:"tok-link"},{tag:ye.heading,class:"tok-heading"},{tag:ye.emphasis,class:"tok-emphasis"},{tag:ye.strong,class:"tok-strong"},{tag:ye.keyword,class:"tok-keyword"},{tag:ye.atom,class:"tok-atom"},{tag:ye.bool,class:"tok-bool"},{tag:ye.url,class:"tok-url"},{tag:ye.labelName,class:"tok-labelName"},{tag:ye.inserted,class:"tok-inserted"},{tag:ye.deleted,class:"tok-deleted"},{tag:ye.literal,class:"tok-literal"},{tag:ye.string,class:"tok-string"},{tag:ye.number,class:"tok-number"},{tag:[ye.regexp,ye.escape,ye.special(ye.string)],class:"tok-string2"},{tag:ye.variableName,class:"tok-variableName"},{tag:ye.local(ye.variableName),class:"tok-variableName tok-local"},{tag:ye.definition(ye.variableName),class:"tok-variableName tok-definition"},{tag:ye.special(ye.variableName),class:"tok-variableName2"},{tag:ye.definition(ye.propertyName),class:"tok-propertyName tok-definition"},{tag:ye.typeName,class:"tok-typeName"},{tag:ye.namespace,class:"tok-namespace"},{tag:ye.className,class:"tok-className"},{tag:ye.macroName,class:"tok-macroName"},{tag:ye.propertyName,class:"tok-propertyName"},{tag:ye.operator,class:"tok-operator"},{tag:ye.comment,class:"tok-comment"},{tag:ye.meta,class:"tok-meta"},{tag:ye.invalid,class:"tok-invalid"},{tag:ye.punctuation,class:"tok-punctuation"}]);var K4;const Wu=new an;function Hq(t){return st.define({combine:t?e=>e.concat(t):void 0})}const Wce=new an;class Sa{constructor(e,n,r=[],s=""){this.data=e,this.name=s,Nn.prototype.hasOwnProperty("tree")||Object.defineProperty(Nn.prototype,"tree",{get(){return Ss(this)}}),this.parser=n,this.extension=[eu.of(this),Nn.languageData.of((i,a,l)=>{let c=w_(i,a,l),d=c.type.prop(Wu);if(!d)return[];let h=i.facet(d),m=c.type.prop(Wce);if(m){let g=c.resolve(a-c.from,l);for(let x of m)if(x.test(g,i)){let y=i.facet(x.facet);return x.type=="replace"?y:y.concat(h)}}return h})].concat(r)}isActiveAt(e,n,r=-1){return w_(e,n,r).type.prop(Wu)==this.data}findRegions(e){let n=e.facet(eu);if(n?.data==this.data)return[{from:0,to:e.doc.length}];if(!n||!n.allowsNesting)return[];let r=[],s=(i,a)=>{if(i.prop(Wu)==this.data){r.push({from:a,to:a+i.length});return}let l=i.prop(an.mounted);if(l){if(l.tree.prop(Wu)==this.data){if(l.overlay)for(let c of l.overlay)r.push({from:c.from+a,to:c.to+a});else r.push({from:a,to:a+i.length});return}else if(l.overlay){let c=r.length;if(s(l.tree,l.overlay[0].from+a),r.length>c)return}}for(let c=0;cr.isTop?n:void 0)]}),e.name)}configure(e,n){return new J0(this.data,this.parser.configure(e),n||this.name)}get allowsNesting(){return this.parser.hasWrappers()}}function Ss(t){let e=t.field(Sa.state,!1);return e?e.tree:ur.empty}class Gce{constructor(e){this.doc=e,this.cursorPos=0,this.string="",this.cursor=e.iter()}get length(){return this.doc.length}syncTo(e){return this.string=this.cursor.next(e-this.cursorPos).value,this.cursorPos=e+this.string.length,this.cursorPos-this.string.length}chunk(e){return this.syncTo(e),this.string}get lineChunks(){return!0}read(e,n){let r=this.cursorPos-this.string.length;return e=this.cursorPos?this.doc.sliceString(e,n):this.string.slice(e-r,n-r)}}let Hm=null;class rf{constructor(e,n,r=[],s,i,a,l,c){this.parser=e,this.state=n,this.fragments=r,this.tree=s,this.treeLen=i,this.viewport=a,this.skipped=l,this.scheduleOn=c,this.parse=null,this.tempSkipped=[]}static create(e,n,r){return new rf(e,n,[],ur.empty,0,r,[],null)}startParse(){return this.parser.startParse(new Gce(this.state.doc),this.fragments)}work(e,n){return n!=null&&n>=this.state.doc.length&&(n=void 0),this.tree!=ur.empty&&this.isDone(n??this.state.doc.length)?(this.takeTree(),!0):this.withContext(()=>{var r;if(typeof e=="number"){let s=Date.now()+e;e=()=>Date.now()>s}for(this.parse||(this.parse=this.startParse()),n!=null&&(this.parse.stoppedAt==null||this.parse.stoppedAt>n)&&n=this.treeLen&&((this.parse.stoppedAt==null||this.parse.stoppedAt>e)&&this.parse.stopAt(e),this.withContext(()=>{for(;!(n=this.parse.advance()););}),this.treeLen=e,this.tree=n,this.fragments=this.withoutTempSkipped(rd.addTree(this.tree,this.fragments,!0)),this.parse=null)}withContext(e){let n=Hm;Hm=this;try{return e()}finally{Hm=n}}withoutTempSkipped(e){for(let n;n=this.tempSkipped.pop();)e=S_(e,n.from,n.to);return e}changes(e,n){let{fragments:r,tree:s,treeLen:i,viewport:a,skipped:l}=this;if(this.takeTree(),!e.empty){let c=[];if(e.iterChangedRanges((d,h,m,g)=>c.push({fromA:d,toA:h,fromB:m,toB:g})),r=rd.applyChanges(r,c),s=ur.empty,i=0,a={from:e.mapPos(a.from,-1),to:e.mapPos(a.to,1)},this.skipped.length){l=[];for(let d of this.skipped){let h=e.mapPos(d.from,1),m=e.mapPos(d.to,-1);he.from&&(this.fragments=S_(this.fragments,s,i),this.skipped.splice(r--,1))}return this.skipped.length>=n?!1:(this.reset(),!0)}reset(){this.parse&&(this.takeTree(),this.parse=null)}skipUntilInView(e,n){this.skipped.push({from:e,to:n})}static getSkippingParser(e){return new class extends S6{createParse(n,r,s){let i=s[0].from,a=s[s.length-1].to;return{parsedPos:i,advance(){let c=Hm;if(c){for(let d of s)c.tempSkipped.push(d);e&&(c.scheduleOn=c.scheduleOn?Promise.all([c.scheduleOn,e]):e)}return this.parsedPos=a,new ur(ai.none,[],[],a-i)},stoppedAt:null,stopAt(){}}}}}isDone(e){e=Math.min(e,this.state.doc.length);let n=this.fragments;return this.treeLen>=e&&n.length&&n[0].from==0&&n[0].to>=e}static get(){return Hm}}function S_(t,e,n){return rd.applyChanges(t,[{fromA:e,toA:n,fromB:e,toB:n}])}class sf{constructor(e){this.context=e,this.tree=e.tree}apply(e){if(!e.docChanged&&this.tree==this.context.tree)return this;let n=this.context.changes(e.changes,e.state),r=this.context.treeLen==e.startState.doc.length?void 0:Math.max(e.changes.mapPos(this.context.treeLen),n.viewport.to);return n.work(20,r)||n.takeTree(),new sf(n)}static init(e){let n=Math.min(3e3,e.doc.length),r=rf.create(e.facet(eu).parser,e,{from:0,to:n});return r.work(20,n)||r.takeTree(),new sf(r)}}Sa.state=Os.define({create:sf.init,update(t,e){for(let n of e.effects)if(n.is(Sa.setState))return n.value;return e.startState.facet(eu)!=e.state.facet(eu)?sf.init(e.state):t.apply(e)}});let Qq=t=>{let e=setTimeout(()=>t(),500);return()=>clearTimeout(e)};typeof requestIdleCallback<"u"&&(Qq=t=>{let e=-1,n=setTimeout(()=>{e=requestIdleCallback(t,{timeout:400})},100);return()=>e<0?clearTimeout(n):cancelIdleCallback(e)});const Z4=typeof navigator<"u"&&(!((K4=navigator.scheduling)===null||K4===void 0)&&K4.isInputPending)?()=>navigator.scheduling.isInputPending():null,Xce=Yr.fromClass(class{constructor(e){this.view=e,this.working=null,this.workScheduled=0,this.chunkEnd=-1,this.chunkBudget=-1,this.work=this.work.bind(this),this.scheduleWork()}update(e){let n=this.view.state.field(Sa.state).context;(n.updateViewport(e.view.viewport)||this.view.viewport.to>n.treeLen)&&this.scheduleWork(),(e.docChanged||e.selectionSet)&&(this.view.hasFocus&&(this.chunkBudget+=50),this.scheduleWork()),this.checkAsyncSchedule(n)}scheduleWork(){if(this.working)return;let{state:e}=this.view,n=e.field(Sa.state);(n.tree!=n.context.tree||!n.context.isDone(e.doc.length))&&(this.working=Qq(this.work))}work(e){this.working=null;let n=Date.now();if(this.chunkEnds+1e3,c=i.context.work(()=>Z4&&Z4()||Date.now()>a,s+(l?0:1e5));this.chunkBudget-=Date.now()-n,(c||this.chunkBudget<=0)&&(i.context.takeTree(),this.view.dispatch({effects:Sa.setState.of(new sf(i.context))})),this.chunkBudget>0&&!(c&&!l)&&this.scheduleWork(),this.checkAsyncSchedule(i.context)}checkAsyncSchedule(e){e.scheduleOn&&(this.workScheduled++,e.scheduleOn.then(()=>this.scheduleWork()).catch(n=>bi(this.view.state,n)).then(()=>this.workScheduled--),e.scheduleOn=null)}destroy(){this.working&&this.working()}isWorking(){return!!(this.working||this.workScheduled>0)}},{eventHandlers:{focus(){this.scheduleWork()}}}),eu=st.define({combine(t){return t.length?t[0]:null},enables:t=>[Sa.state,Xce,Ze.contentAttributes.compute([t],e=>{let n=e.facet(t);return n&&n.name?{"data-language":n.name}:{}})]});class Vq{constructor(e,n=[]){this.language=e,this.support=n,this.extension=[e,n]}}const Yce=st.define(),Zp=st.define({combine:t=>{if(!t.length)return" ";let e=t[0];if(!e||/\S/.test(e)||Array.from(e).some(n=>n!=e[0]))throw new Error("Invalid indent unit: "+JSON.stringify(t[0]));return e}});function dd(t){let e=t.facet(Zp);return e.charCodeAt(0)==9?t.tabSize*e.length:e.length}function ep(t,e){let n="",r=t.tabSize,s=t.facet(Zp)[0];if(s==" "){for(;e>=r;)n+=" ",e-=r;s=" "}for(let i=0;i=e?Kce(t,n,e):null}class xb{constructor(e,n={}){this.state=e,this.options=n,this.unit=dd(e)}lineAt(e,n=1){let r=this.state.doc.lineAt(e),{simulateBreak:s,simulateDoubleBreak:i}=this.options;return s!=null&&s>=r.from&&s<=r.to?i&&s==e?{text:"",from:e}:(n<0?s-1&&(i+=a-this.countColumn(r,r.search(/\S|$/))),i}countColumn(e,n=e.length){return Cf(e,this.state.tabSize,n)}lineIndent(e,n=1){let{text:r,from:s}=this.lineAt(e,n),i=this.options.overrideIndentation;if(i){let a=i(s);if(a>-1)return a}return this.countColumn(r,r.search(/\S|$/))}get simulatedBreak(){return this.options.simulateBreak||null}}const vb=new an;function Kce(t,e,n){let r=e.resolveStack(n),s=e.resolveInner(n,-1).resolve(n,0).enterUnfinishedNodesBefore(n);if(s!=r.node){let i=[];for(let a=s;a&&!(a.fromr.node.to||a.from==r.node.from&&a.type==r.node.type);a=a.parent)i.push(a);for(let a=i.length-1;a>=0;a--)r={node:i[a],next:r}}return Uq(r,t,n)}function Uq(t,e,n){for(let r=t;r;r=r.next){let s=Jce(r.node);if(s)return s(j6.create(e,n,r))}return 0}function Zce(t){return t.pos==t.options.simulateBreak&&t.options.simulateDoubleBreak}function Jce(t){let e=t.type.prop(vb);if(e)return e;let n=t.firstChild,r;if(n&&(r=n.type.prop(an.closedBy))){let s=t.lastChild,i=s&&r.indexOf(s.name)>-1;return a=>Wq(a,!0,1,void 0,i&&!Zce(a)?s.from:void 0)}return t.parent==null?eue:null}function eue(){return 0}class j6 extends xb{constructor(e,n,r){super(e.state,e.options),this.base=e,this.pos=n,this.context=r}get node(){return this.context.node}static create(e,n,r){return new j6(e,n,r)}get textAfter(){return this.textAfterPos(this.pos)}get baseIndent(){return this.baseIndentFor(this.node)}baseIndentFor(e){let n=this.state.doc.lineAt(e.from);for(;;){let r=e.resolve(n.from);for(;r.parent&&r.parent.from==r.from;)r=r.parent;if(tue(r,e))break;n=this.state.doc.lineAt(r.from)}return this.lineIndent(n.from)}continue(){return Uq(this.context.next,this.base,this.pos)}}function tue(t,e){for(let n=e;n;n=n.parent)if(t==n)return!0;return!1}function nue(t){let e=t.node,n=e.childAfter(e.from),r=e.lastChild;if(!n)return null;let s=t.options.simulateBreak,i=t.state.doc.lineAt(n.from),a=s==null||s<=i.from?i.to:Math.min(i.to,s);for(let l=n.to;;){let c=e.childAfter(l);if(!c||c==r)return null;if(!c.type.isSkipped){if(c.from>=a)return null;let d=/^ */.exec(i.text.slice(n.to-i.from))[0].length;return{from:n.from,to:n.to+d}}l=c.to}}function J4({closing:t,align:e=!0,units:n=1}){return r=>Wq(r,e,n,t)}function Wq(t,e,n,r,s){let i=t.textAfter,a=i.match(/^\s*/)[0].length,l=r&&i.slice(a,a+r.length)==r||s==t.pos+a,c=e?nue(t):null;return c?l?t.column(c.from):t.column(c.to):t.baseIndent+(l?0:t.unit*n)}function k_({except:t,units:e=1}={}){return n=>{let r=t&&t.test(n.textAfter);return n.baseIndent+(r?0:e*n.unit)}}const rue=200;function sue(){return Nn.transactionFilter.of(t=>{if(!t.docChanged||!t.isUserEvent("input.type")&&!t.isUserEvent("input.complete"))return t;let e=t.startState.languageDataAt("indentOnInput",t.startState.selection.main.head);if(!e.length)return t;let n=t.newDoc,{head:r}=t.newSelection.main,s=n.lineAt(r);if(r>s.from+rue)return t;let i=n.sliceString(s.from,r);if(!e.some(d=>d.test(i)))return t;let{state:a}=t,l=-1,c=[];for(let{head:d}of a.selection.ranges){let h=a.doc.lineAt(d);if(h.from==l)continue;l=h.from;let m=O6(a,h.from);if(m==null)continue;let g=/^\s*/.exec(h.text)[0],x=ep(a,m);g!=x&&c.push({from:h.from,to:h.from+g.length,insert:x})}return c.length?[t,{changes:c,sequential:!0}]:t})}const iue=st.define(),N6=new an;function Gq(t){let e=t.firstChild,n=t.lastChild;return e&&e.ton)continue;if(i&&l.from=e&&d.to>n&&(i=d)}}return i}function oue(t){let e=t.lastChild;return e&&e.to==t.to&&e.type.isError}function ry(t,e,n){for(let r of t.facet(iue)){let s=r(t,e,n);if(s)return s}return aue(t,e,n)}function Xq(t,e){let n=e.mapPos(t.from,1),r=e.mapPos(t.to,-1);return n>=r?void 0:{from:n,to:r}}const yb=Qt.define({map:Xq}),Jp=Qt.define({map:Xq});function Yq(t){let e=[];for(let{head:n}of t.state.selection.ranges)e.some(r=>r.from<=n&&r.to>=n)||e.push(t.lineBlockAt(n));return e}const hd=Os.define({create(){return Ot.none},update(t,e){e.isUserEvent("delete")&&e.changes.iterChangedRanges((n,r)=>t=O_(t,n,r)),t=t.map(e.changes);for(let n of e.effects)if(n.is(yb)&&!lue(t,n.value.from,n.value.to)){let{preparePlaceholder:r}=e.state.facet(Jq),s=r?Ot.replace({widget:new pue(r(e.state,n.value))}):j_;t=t.update({add:[s.range(n.value.from,n.value.to)]})}else n.is(Jp)&&(t=t.update({filter:(r,s)=>n.value.from!=r||n.value.to!=s,filterFrom:n.value.from,filterTo:n.value.to}));return e.selection&&(t=O_(t,e.selection.main.head)),t},provide:t=>Ze.decorations.from(t),toJSON(t,e){let n=[];return t.between(0,e.doc.length,(r,s)=>{n.push(r,s)}),n},fromJSON(t){if(!Array.isArray(t)||t.length%2)throw new RangeError("Invalid JSON for fold state");let e=[];for(let n=0;n{se&&(r=!0)}),r?t.update({filterFrom:e,filterTo:n,filter:(s,i)=>s>=n||i<=e}):t}function sy(t,e,n){var r;let s=null;return(r=t.field(hd,!1))===null||r===void 0||r.between(e,n,(i,a)=>{(!s||s.from>i)&&(s={from:i,to:a})}),s}function lue(t,e,n){let r=!1;return t.between(e,e,(s,i)=>{s==e&&i==n&&(r=!0)}),r}function Kq(t,e){return t.field(hd,!1)?e:e.concat(Qt.appendConfig.of(e$()))}const cue=t=>{for(let e of Yq(t)){let n=ry(t.state,e.from,e.to);if(n)return t.dispatch({effects:Kq(t.state,[yb.of(n),Zq(t,n)])}),!0}return!1},uue=t=>{if(!t.state.field(hd,!1))return!1;let e=[];for(let n of Yq(t)){let r=sy(t.state,n.from,n.to);r&&e.push(Jp.of(r),Zq(t,r,!1))}return e.length&&t.dispatch({effects:e}),e.length>0};function Zq(t,e,n=!0){let r=t.state.doc.lineAt(e.from).number,s=t.state.doc.lineAt(e.to).number;return Ze.announce.of(`${t.state.phrase(n?"Folded lines":"Unfolded lines")} ${r} ${t.state.phrase("to")} ${s}.`)}const due=t=>{let{state:e}=t,n=[];for(let r=0;r{let e=t.state.field(hd,!1);if(!e||!e.size)return!1;let n=[];return e.between(0,t.state.doc.length,(r,s)=>{n.push(Jp.of({from:r,to:s}))}),t.dispatch({effects:n}),!0},fue=[{key:"Ctrl-Shift-[",mac:"Cmd-Alt-[",run:cue},{key:"Ctrl-Shift-]",mac:"Cmd-Alt-]",run:uue},{key:"Ctrl-Alt-[",run:due},{key:"Ctrl-Alt-]",run:hue}],mue={placeholderDOM:null,preparePlaceholder:null,placeholderText:"…"},Jq=st.define({combine(t){return Vo(t,mue)}});function e$(t){return[hd,vue]}function t$(t,e){let{state:n}=t,r=n.facet(Jq),s=a=>{let l=t.lineBlockAt(t.posAtDOM(a.target)),c=sy(t.state,l.from,l.to);c&&t.dispatch({effects:Jp.of(c)}),a.preventDefault()};if(r.placeholderDOM)return r.placeholderDOM(t,s,e);let i=document.createElement("span");return i.textContent=r.placeholderText,i.setAttribute("aria-label",n.phrase("folded code")),i.title=n.phrase("unfold"),i.className="cm-foldPlaceholder",i.onclick=s,i}const j_=Ot.replace({widget:new class extends Uo{toDOM(t){return t$(t,null)}}});class pue extends Uo{constructor(e){super(),this.value=e}eq(e){return this.value==e.value}toDOM(e){return t$(e,this.value)}}const gue={openText:"⌄",closedText:"›",markerDOM:null,domEventHandlers:{},foldingChanged:()=>!1};class eS extends Vl{constructor(e,n){super(),this.config=e,this.open=n}eq(e){return this.config==e.config&&this.open==e.open}toDOM(e){if(this.config.markerDOM)return this.config.markerDOM(this.open);let n=document.createElement("span");return n.textContent=this.open?this.config.openText:this.config.closedText,n.title=e.state.phrase(this.open?"Fold line":"Unfold line"),n}}function xue(t={}){let e={...gue,...t},n=new eS(e,!0),r=new eS(e,!1),s=Yr.fromClass(class{constructor(a){this.from=a.viewport.from,this.markers=this.buildMarkers(a)}update(a){(a.docChanged||a.viewportChanged||a.startState.facet(eu)!=a.state.facet(eu)||a.startState.field(hd,!1)!=a.state.field(hd,!1)||Ss(a.startState)!=Ss(a.state)||e.foldingChanged(a))&&(this.markers=this.buildMarkers(a.view))}buildMarkers(a){let l=new Hl;for(let c of a.viewportLineBlocks){let d=sy(a.state,c.from,c.to)?r:ry(a.state,c.from,c.to)?n:null;d&&l.add(c.from,c.from,d)}return l.finish()}}),{domEventHandlers:i}=e;return[s,bce({class:"cm-foldGutter",markers(a){var l;return((l=a.plugin(s))===null||l===void 0?void 0:l.markers)||Bn.empty},initialSpacer(){return new eS(e,!1)},domEventHandlers:{...i,click:(a,l,c)=>{if(i.click&&i.click(a,l,c))return!0;let d=sy(a.state,l.from,l.to);if(d)return a.dispatch({effects:Jp.of(d)}),!0;let h=ry(a.state,l.from,l.to);return h?(a.dispatch({effects:yb.of(h)}),!0):!1}}}),e$()]}const vue=Ze.baseTheme({".cm-foldPlaceholder":{backgroundColor:"#eee",border:"1px solid #ddd",color:"#888",borderRadius:".2em",margin:"0 1px",padding:"0 1px",cursor:"pointer"},".cm-foldGutter span":{padding:"0 1px",cursor:"pointer"}});class eg{constructor(e,n){this.specs=e;let r;function s(l){let c=Yc.newName();return(r||(r=Object.create(null)))["."+c]=l,c}const i=typeof n.all=="string"?n.all:n.all?s(n.all):void 0,a=n.scope;this.scope=a instanceof Sa?l=>l.prop(Wu)==a.data:a?l=>l==a:void 0,this.style=$q(e.map(l=>({tag:l.tag,class:l.class||s(Object.assign({},l,{tag:null}))})),{all:i}).style,this.module=r?new Yc(r):null,this.themeType=n.themeType}static define(e,n){return new eg(e,n||{})}}const oO=st.define(),n$=st.define({combine(t){return t.length?[t[0]]:null}});function tS(t){let e=t.facet(oO);return e.length?e:t.facet(n$)}function r$(t,e){let n=[bue],r;return t instanceof eg&&(t.module&&n.push(Ze.styleModule.of(t.module)),r=t.themeType),e?.fallback?n.push(n$.of(t)):r?n.push(oO.computeN([Ze.darkTheme],s=>s.facet(Ze.darkTheme)==(r=="dark")?[t]:[])):n.push(oO.of(t)),n}class yue{constructor(e){this.markCache=Object.create(null),this.tree=Ss(e.state),this.decorations=this.buildDeco(e,tS(e.state)),this.decoratedTo=e.viewport.to}update(e){let n=Ss(e.state),r=tS(e.state),s=r!=tS(e.startState),{viewport:i}=e.view,a=e.changes.mapPos(this.decoratedTo,1);n.length=i.to?(this.decorations=this.decorations.map(e.changes),this.decoratedTo=a):(n!=this.tree||e.viewportChanged||s)&&(this.tree=n,this.decorations=this.buildDeco(e.view,r),this.decoratedTo=i.to)}buildDeco(e,n){if(!n||!this.tree.length)return Ot.none;let r=new Hl;for(let{from:s,to:i}of e.visibleRanges)Qce(this.tree,n,(a,l,c)=>{r.add(a,l,this.markCache[c]||(this.markCache[c]=Ot.mark({class:c})))},s,i);return r.finish()}}const bue=uu.high(Yr.fromClass(yue,{decorations:t=>t.decorations})),wue=eg.define([{tag:ye.meta,color:"#404740"},{tag:ye.link,textDecoration:"underline"},{tag:ye.heading,textDecoration:"underline",fontWeight:"bold"},{tag:ye.emphasis,fontStyle:"italic"},{tag:ye.strong,fontWeight:"bold"},{tag:ye.strikethrough,textDecoration:"line-through"},{tag:ye.keyword,color:"#708"},{tag:[ye.atom,ye.bool,ye.url,ye.contentSeparator,ye.labelName],color:"#219"},{tag:[ye.literal,ye.inserted],color:"#164"},{tag:[ye.string,ye.deleted],color:"#a11"},{tag:[ye.regexp,ye.escape,ye.special(ye.string)],color:"#e40"},{tag:ye.definition(ye.variableName),color:"#00f"},{tag:ye.local(ye.variableName),color:"#30a"},{tag:[ye.typeName,ye.namespace],color:"#085"},{tag:ye.className,color:"#167"},{tag:[ye.special(ye.variableName),ye.macroName],color:"#256"},{tag:ye.definition(ye.propertyName),color:"#00c"},{tag:ye.comment,color:"#940"},{tag:ye.invalid,color:"#f00"}]),Sue=Ze.baseTheme({"&.cm-focused .cm-matchingBracket":{backgroundColor:"#328c8252"},"&.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bb555544"}}),s$=1e4,i$="()[]{}",a$=st.define({combine(t){return Vo(t,{afterCursor:!0,brackets:i$,maxScanDistance:s$,renderMatch:jue})}}),kue=Ot.mark({class:"cm-matchingBracket"}),Oue=Ot.mark({class:"cm-nonmatchingBracket"});function jue(t){let e=[],n=t.matched?kue:Oue;return e.push(n.range(t.start.from,t.start.to)),t.end&&e.push(n.range(t.end.from,t.end.to)),e}const Nue=Os.define({create(){return Ot.none},update(t,e){if(!e.docChanged&&!e.selection)return t;let n=[],r=e.state.facet(a$);for(let s of e.state.selection.ranges){if(!s.empty)continue;let i=To(e.state,s.head,-1,r)||s.head>0&&To(e.state,s.head-1,1,r)||r.afterCursor&&(To(e.state,s.head,1,r)||s.headZe.decorations.from(t)}),Cue=[Nue,Sue];function Tue(t={}){return[a$.of(t),Cue]}const Eue=new an;function lO(t,e,n){let r=t.prop(e<0?an.openedBy:an.closedBy);if(r)return r;if(t.name.length==1){let s=n.indexOf(t.name);if(s>-1&&s%2==(e<0?1:0))return[n[s+e]]}return null}function cO(t){let e=t.type.prop(Eue);return e?e(t.node):t}function To(t,e,n,r={}){let s=r.maxScanDistance||s$,i=r.brackets||i$,a=Ss(t),l=a.resolveInner(e,n);for(let c=l;c;c=c.parent){let d=lO(c.type,n,i);if(d&&c.from0?e>=h.from&&eh.from&&e<=h.to))return _ue(t,e,n,c,h,d,i)}}return Aue(t,e,n,a,l.type,s,i)}function _ue(t,e,n,r,s,i,a){let l=r.parent,c={from:s.from,to:s.to},d=0,h=l?.cursor();if(h&&(n<0?h.childBefore(r.from):h.childAfter(r.to)))do if(n<0?h.to<=r.from:h.from>=r.to){if(d==0&&i.indexOf(h.type.name)>-1&&h.from0)return null;let d={from:n<0?e-1:e,to:n>0?e+1:e},h=t.doc.iterRange(e,n>0?t.doc.length:0),m=0;for(let g=0;!h.next().done&&g<=i;){let x=h.value;n<0&&(g+=x.length);let y=e+g*n;for(let w=n>0?0:x.length-1,S=n>0?x.length:-1;w!=S;w+=n){let k=a.indexOf(x[w]);if(!(k<0||r.resolveInner(y+w,1).type!=s))if(k%2==0==n>0)m++;else{if(m==1)return{start:d,end:{from:y+w,to:y+w+1},matched:k>>1==c>>1};m--}}n>0&&(g+=x.length)}return h.done?{start:d,matched:!1}:null}function N_(t,e,n,r=0,s=0){e==null&&(e=t.search(/[^\s\u00a0]/),e==-1&&(e=t.length));let i=s;for(let a=r;a=this.string.length}sol(){return this.pos==0}peek(){return this.string.charAt(this.pos)||void 0}next(){if(this.posn}eatSpace(){let e=this.pos;for(;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e}skipToEnd(){this.pos=this.string.length}skipTo(e){let n=this.string.indexOf(e,this.pos);if(n>-1)return this.pos=n,!0}backUp(e){this.pos-=e}column(){return this.lastColumnPosr?a.toLowerCase():a,i=this.string.substr(this.pos,e.length);return s(i)==s(e)?(n!==!1&&(this.pos+=e.length),!0):null}else{let s=this.string.slice(this.pos).match(e);return s&&s.index>0?null:(s&&n!==!1&&(this.pos+=s[0].length),s)}}current(){return this.string.slice(this.start,this.pos)}}function Mue(t){return{name:t.name||"",token:t.token,blankLine:t.blankLine||(()=>{}),startState:t.startState||(()=>!0),copyState:t.copyState||Rue,indent:t.indent||(()=>null),languageData:t.languageData||{},tokenTable:t.tokenTable||E6,mergeTokens:t.mergeTokens!==!1}}function Rue(t){if(typeof t!="object")return t;let e={};for(let n in t){let r=t[n];e[n]=r instanceof Array?r.slice():r}return e}const C_=new WeakMap;class C6 extends Sa{constructor(e){let n=Hq(e.languageData),r=Mue(e),s,i=new class extends S6{createParse(a,l,c){return new Pue(s,a,l,c)}};super(n,i,[],e.name),this.topNode=Lue(n,this),s=this,this.streamParser=r,this.stateAfter=new an({perNode:!0}),this.tokenTable=e.tokenTable?new d$(r.tokenTable):Iue}static define(e){return new C6(e)}getIndent(e){let n,{overrideIndentation:r}=e.options;r&&(n=C_.get(e.state),n!=null&&n1e4)return null;for(;i=r&&n+e.length<=s&&e.prop(t.stateAfter);if(i)return{state:t.streamParser.copyState(i),pos:n+e.length};for(let a=e.children.length-1;a>=0;a--){let l=e.children[a],c=n+e.positions[a],d=l instanceof ur&&c=e.length)return e;!s&&n==0&&e.type==t.topNode&&(s=!0);for(let i=e.children.length-1;i>=0;i--){let a=e.positions[i],l=e.children[i],c;if(an&&T6(t,i.tree,0-i.offset,n,l),d;if(c&&c.pos<=r&&(d=l$(t,i.tree,n+i.offset,c.pos+i.offset,!1)))return{state:c.state,tree:d}}return{state:t.streamParser.startState(s?dd(s):4),tree:ur.empty}}let Pue=class{constructor(e,n,r,s){this.lang=e,this.input=n,this.fragments=r,this.ranges=s,this.stoppedAt=null,this.chunks=[],this.chunkPos=[],this.chunk=[],this.chunkReused=void 0,this.rangeIndex=0,this.to=s[s.length-1].to;let i=rf.get(),a=s[0].from,{state:l,tree:c}=Due(e,r,a,this.to,i?.state);this.state=l,this.parsedPos=this.chunkStart=a+c.length;for(let d=0;dd.from<=i.viewport.from&&d.to>=i.viewport.from)&&(this.state=this.lang.streamParser.startState(dd(i.state)),i.skipUntilInView(this.parsedPos,i.viewport.from),this.parsedPos=i.viewport.from),this.moveRangeIndex()}advance(){let e=rf.get(),n=this.stoppedAt==null?this.to:Math.min(this.to,this.stoppedAt),r=Math.min(n,this.chunkStart+512);for(e&&(r=Math.min(r,e.viewport.to));this.parsedPos=n?this.finish():e&&this.parsedPos>=e.viewport.to?(e.skipUntilInView(this.parsedPos,n),this.finish()):null}stopAt(e){this.stoppedAt=e}lineAfter(e){let n=this.input.chunk(e);if(this.input.lineChunks)n==` -`&&(n="");else{let r=n.indexOf(` -`);r>-1&&(n=n.slice(0,r))}return e+n.length<=this.to?n:n.slice(0,this.to-e)}nextLine(){let e=this.parsedPos,n=this.lineAfter(e),r=e+n.length;for(let s=this.rangeIndex;;){let i=this.ranges[s].to;if(i>=r||(n=n.slice(0,i-(r-n.length)),s++,s==this.ranges.length))break;let a=this.ranges[s].from,l=this.lineAfter(a);n+=l,r=a+l.length}return{line:n,end:r}}skipGapsTo(e,n,r){for(;;){let s=this.ranges[this.rangeIndex].to,i=e+n;if(r>0?s>i:s>=i)break;let a=this.ranges[++this.rangeIndex].from;n+=a-s}return n}moveRangeIndex(){for(;this.ranges[this.rangeIndex].to1){s=this.skipGapsTo(n,s,1),n+=s;let l=this.chunk.length;s=this.skipGapsTo(r,s,-1),r+=s,i+=this.chunk.length-l}let a=this.chunk.length-4;return this.lang.streamParser.mergeTokens&&i==4&&a>=0&&this.chunk[a]==e&&this.chunk[a+2]==n?this.chunk[a+2]=r:this.chunk.push(e,n,r,i),s}parseLine(e){let{line:n,end:r}=this.nextLine(),s=0,{streamParser:i}=this.lang,a=new o$(n,e?e.state.tabSize:4,e?dd(e.state):2);if(a.eol())i.blankLine(this.state,a.indentUnit);else for(;!a.eol();){let l=c$(i.token,a,this.state);if(l&&(s=this.emitToken(this.lang.tokenTable.resolve(l),this.parsedPos+a.start,this.parsedPos+a.pos,s)),a.start>1e4)break}this.parsedPos=r,this.moveRangeIndex(),this.parsedPose.start)return s}throw new Error("Stream parser failed to advance stream.")}const E6=Object.create(null),tp=[ai.none],zue=new gb(tp),T_=[],E_=Object.create(null),u$=Object.create(null);for(let[t,e]of[["variable","variableName"],["variable-2","variableName.special"],["string-2","string.special"],["def","variableName.definition"],["tag","tagName"],["attribute","attributeName"],["type","typeName"],["builtin","variableName.standard"],["qualifier","modifier"],["error","invalid"],["header","heading"],["property","propertyName"]])u$[t]=h$(E6,e);class d${constructor(e){this.extra=e,this.table=Object.assign(Object.create(null),u$)}resolve(e){return e?this.table[e]||(this.table[e]=h$(this.extra,e)):0}}const Iue=new d$(E6);function nS(t,e){T_.indexOf(t)>-1||(T_.push(t),console.warn(e))}function h$(t,e){let n=[];for(let l of e.split(" ")){let c=[];for(let d of l.split(".")){let h=t[d]||ye[d];h?typeof h=="function"?c.length?c=c.map(h):nS(d,`Modifier ${d} used at start of tag`):c.length?nS(d,`Tag ${d} used as modifier`):c=Array.isArray(h)?h:[h]:nS(d,`Unknown highlighting tag ${d}`)}for(let d of c)n.push(d)}if(!n.length)return 0;let r=e.replace(/ /g,"_"),s=r+" "+n.map(l=>l.id),i=E_[s];if(i)return i.id;let a=E_[s]=ai.define({id:tp.length,name:r,props:[k6({[r]:n})]});return tp.push(a),a.id}function Lue(t,e){let n=ai.define({id:tp.length,name:"Document",props:[Wu.add(()=>t),vb.add(()=>r=>e.getIndent(r))],top:!0});return tp.push(n),n}br.RTL,br.LTR;const Bue=t=>{let{state:e}=t,n=e.doc.lineAt(e.selection.main.from),r=A6(t.state,n.from);return r.line?Fue(t):r.block?$ue(t):!1};function _6(t,e){return({state:n,dispatch:r})=>{if(n.readOnly)return!1;let s=t(e,n);return s?(r(n.update(s)),!0):!1}}const Fue=_6(Vue,0),que=_6(f$,0),$ue=_6((t,e)=>f$(t,e,Que(e)),0);function A6(t,e){let n=t.languageDataAt("commentTokens",e,1);return n.length?n[0]:{}}const Qm=50;function Hue(t,{open:e,close:n},r,s){let i=t.sliceDoc(r-Qm,r),a=t.sliceDoc(s,s+Qm),l=/\s*$/.exec(i)[0].length,c=/^\s*/.exec(a)[0].length,d=i.length-l;if(i.slice(d-e.length,d)==e&&a.slice(c,c+n.length)==n)return{open:{pos:r-l,margin:l&&1},close:{pos:s+c,margin:c&&1}};let h,m;s-r<=2*Qm?h=m=t.sliceDoc(r,s):(h=t.sliceDoc(r,r+Qm),m=t.sliceDoc(s-Qm,s));let g=/^\s*/.exec(h)[0].length,x=/\s*$/.exec(m)[0].length,y=m.length-x-n.length;return h.slice(g,g+e.length)==e&&m.slice(y,y+n.length)==n?{open:{pos:r+g+e.length,margin:/\s/.test(h.charAt(g+e.length))?1:0},close:{pos:s-x-n.length,margin:/\s/.test(m.charAt(y-1))?1:0}}:null}function Que(t){let e=[];for(let n of t.selection.ranges){let r=t.doc.lineAt(n.from),s=n.to<=r.to?r:t.doc.lineAt(n.to);s.from>r.from&&s.from==n.to&&(s=n.to==r.to+1?r:t.doc.lineAt(n.to-1));let i=e.length-1;i>=0&&e[i].to>r.from?e[i].to=s.to:e.push({from:r.from+/^\s*/.exec(r.text)[0].length,to:s.to})}return e}function f$(t,e,n=e.selection.ranges){let r=n.map(i=>A6(e,i.from).block);if(!r.every(i=>i))return null;let s=n.map((i,a)=>Hue(e,r[a],i.from,i.to));if(t!=2&&!s.every(i=>i))return{changes:e.changes(n.map((i,a)=>s[a]?[]:[{from:i.from,insert:r[a].open+" "},{from:i.to,insert:" "+r[a].close}]))};if(t!=1&&s.some(i=>i)){let i=[];for(let a=0,l;as&&(i==a||a>m.from)){s=m.from;let g=/^\s*/.exec(m.text)[0].length,x=g==m.length,y=m.text.slice(g,g+d.length)==d?g:-1;gi.comment<0&&(!i.empty||i.single))){let i=[];for(let{line:l,token:c,indent:d,empty:h,single:m}of r)(m||!h)&&i.push({from:l.from+d,insert:c+" "});let a=e.changes(i);return{changes:a,selection:e.selection.map(a,1)}}else if(t!=1&&r.some(i=>i.comment>=0)){let i=[];for(let{line:a,comment:l,token:c}of r)if(l>=0){let d=a.from+l,h=d+c.length;a.text[h-a.from]==" "&&h++,i.push({from:d,to:h})}return{changes:i}}return null}const uO=Qo.define(),Uue=Qo.define(),Wue=st.define(),m$=st.define({combine(t){return Vo(t,{minDepth:100,newGroupDelay:500,joinToEvent:(e,n)=>n},{minDepth:Math.max,newGroupDelay:Math.min,joinToEvent:(e,n)=>(r,s)=>e(r,s)||n(r,s)})}}),p$=Os.define({create(){return Eo.empty},update(t,e){let n=e.state.facet(m$),r=e.annotation(uO);if(r){let c=wi.fromTransaction(e,r.selection),d=r.side,h=d==0?t.undone:t.done;return c?h=iy(h,h.length,n.minDepth,c):h=v$(h,e.startState.selection),new Eo(d==0?r.rest:h,d==0?h:r.rest)}let s=e.annotation(Uue);if((s=="full"||s=="before")&&(t=t.isolate()),e.annotation(ss.addToHistory)===!1)return e.changes.empty?t:t.addMapping(e.changes.desc);let i=wi.fromTransaction(e),a=e.annotation(ss.time),l=e.annotation(ss.userEvent);return i?t=t.addChanges(i,a,l,n,e):e.selection&&(t=t.addSelection(e.startState.selection,a,l,n.newGroupDelay)),(s=="full"||s=="after")&&(t=t.isolate()),t},toJSON(t){return{done:t.done.map(e=>e.toJSON()),undone:t.undone.map(e=>e.toJSON())}},fromJSON(t){return new Eo(t.done.map(wi.fromJSON),t.undone.map(wi.fromJSON))}});function Gue(t={}){return[p$,m$.of(t),Ze.domEventHandlers({beforeinput(e,n){let r=e.inputType=="historyUndo"?g$:e.inputType=="historyRedo"?dO:null;return r?(e.preventDefault(),r(n)):!1}})]}function bb(t,e){return function({state:n,dispatch:r}){if(!e&&n.readOnly)return!1;let s=n.field(p$,!1);if(!s)return!1;let i=s.pop(t,n,e);return i?(r(i),!0):!1}}const g$=bb(0,!1),dO=bb(1,!1),Xue=bb(0,!0),Yue=bb(1,!0);class wi{constructor(e,n,r,s,i){this.changes=e,this.effects=n,this.mapped=r,this.startSelection=s,this.selectionsAfter=i}setSelAfter(e){return new wi(this.changes,this.effects,this.mapped,this.startSelection,e)}toJSON(){var e,n,r;return{changes:(e=this.changes)===null||e===void 0?void 0:e.toJSON(),mapped:(n=this.mapped)===null||n===void 0?void 0:n.toJSON(),startSelection:(r=this.startSelection)===null||r===void 0?void 0:r.toJSON(),selectionsAfter:this.selectionsAfter.map(s=>s.toJSON())}}static fromJSON(e){return new wi(e.changes&&us.fromJSON(e.changes),[],e.mapped&&Io.fromJSON(e.mapped),e.startSelection&&Me.fromJSON(e.startSelection),e.selectionsAfter.map(Me.fromJSON))}static fromTransaction(e,n){let r=ka;for(let s of e.startState.facet(Wue)){let i=s(e);i.length&&(r=r.concat(i))}return!r.length&&e.changes.empty?null:new wi(e.changes.invert(e.startState.doc),r,void 0,n||e.startState.selection,ka)}static selection(e){return new wi(void 0,ka,void 0,void 0,e)}}function iy(t,e,n,r){let s=e+1>n+20?e-n-1:0,i=t.slice(s,e);return i.push(r),i}function Kue(t,e){let n=[],r=!1;return t.iterChangedRanges((s,i)=>n.push(s,i)),e.iterChangedRanges((s,i,a,l)=>{for(let c=0;c=d&&a<=h&&(r=!0)}}),r}function Zue(t,e){return t.ranges.length==e.ranges.length&&t.ranges.filter((n,r)=>n.empty!=e.ranges[r].empty).length===0}function x$(t,e){return t.length?e.length?t.concat(e):t:e}const ka=[],Jue=200;function v$(t,e){if(t.length){let n=t[t.length-1],r=n.selectionsAfter.slice(Math.max(0,n.selectionsAfter.length-Jue));return r.length&&r[r.length-1].eq(e)?t:(r.push(e),iy(t,t.length-1,1e9,n.setSelAfter(r)))}else return[wi.selection([e])]}function ede(t){let e=t[t.length-1],n=t.slice();return n[t.length-1]=e.setSelAfter(e.selectionsAfter.slice(0,e.selectionsAfter.length-1)),n}function rS(t,e){if(!t.length)return t;let n=t.length,r=ka;for(;n;){let s=tde(t[n-1],e,r);if(s.changes&&!s.changes.empty||s.effects.length){let i=t.slice(0,n);return i[n-1]=s,i}else e=s.mapped,n--,r=s.selectionsAfter}return r.length?[wi.selection(r)]:ka}function tde(t,e,n){let r=x$(t.selectionsAfter.length?t.selectionsAfter.map(l=>l.map(e)):ka,n);if(!t.changes)return wi.selection(r);let s=t.changes.map(e),i=e.mapDesc(t.changes,!0),a=t.mapped?t.mapped.composeDesc(i):i;return new wi(s,Qt.mapEffects(t.effects,e),a,t.startSelection.map(i),r)}const nde=/^(input\.type|delete)($|\.)/;class Eo{constructor(e,n,r=0,s=void 0){this.done=e,this.undone=n,this.prevTime=r,this.prevUserEvent=s}isolate(){return this.prevTime?new Eo(this.done,this.undone):this}addChanges(e,n,r,s,i){let a=this.done,l=a[a.length-1];return l&&l.changes&&!l.changes.empty&&e.changes&&(!r||nde.test(r))&&(!l.selectionsAfter.length&&n-this.prevTime0&&n-this.prevTimen.empty?t.moveByChar(n,e):wb(n,e))}function Ws(t){return t.textDirectionAt(t.state.selection.main.head)==br.LTR}const b$=t=>y$(t,!Ws(t)),w$=t=>y$(t,Ws(t));function S$(t,e){return so(t,n=>n.empty?t.moveByGroup(n,e):wb(n,e))}const sde=t=>S$(t,!Ws(t)),ide=t=>S$(t,Ws(t));function ade(t,e,n){if(e.type.prop(n))return!0;let r=e.to-e.from;return r&&(r>2||/[^\s,.;:]/.test(t.sliceDoc(e.from,e.to)))||e.firstChild}function Sb(t,e,n){let r=Ss(t).resolveInner(e.head),s=n?an.closedBy:an.openedBy;for(let c=e.head;;){let d=n?r.childAfter(c):r.childBefore(c);if(!d)break;ade(t,d,s)?r=d:c=n?d.to:d.from}let i=r.type.prop(s),a,l;return i&&(a=n?To(t,r.from,1):To(t,r.to,-1))&&a.matched?l=n?a.end.to:a.end.from:l=n?r.to:r.from,Me.cursor(l,n?-1:1)}const ode=t=>so(t,e=>Sb(t.state,e,!Ws(t))),lde=t=>so(t,e=>Sb(t.state,e,Ws(t)));function k$(t,e){return so(t,n=>{if(!n.empty)return wb(n,e);let r=t.moveVertically(n,e);return r.head!=n.head?r:t.moveToLineBoundary(n,e)})}const O$=t=>k$(t,!1),j$=t=>k$(t,!0);function N$(t){let e=t.scrollDOM.clientHeighta.empty?t.moveVertically(a,e,n.height):wb(a,e));if(s.eq(r.selection))return!1;let i;if(n.selfScroll){let a=t.coordsAtPos(r.selection.main.head),l=t.scrollDOM.getBoundingClientRect(),c=l.top+n.marginTop,d=l.bottom-n.marginBottom;a&&a.top>c&&a.bottomC$(t,!1),hO=t=>C$(t,!0);function du(t,e,n){let r=t.lineBlockAt(e.head),s=t.moveToLineBoundary(e,n);if(s.head==e.head&&s.head!=(n?r.to:r.from)&&(s=t.moveToLineBoundary(e,n,!1)),!n&&s.head==r.from&&r.length){let i=/^\s*/.exec(t.state.sliceDoc(r.from,Math.min(r.from+100,r.to)))[0].length;i&&e.head!=r.from+i&&(s=Me.cursor(r.from+i))}return s}const cde=t=>so(t,e=>du(t,e,!0)),ude=t=>so(t,e=>du(t,e,!1)),dde=t=>so(t,e=>du(t,e,!Ws(t))),hde=t=>so(t,e=>du(t,e,Ws(t))),fde=t=>so(t,e=>Me.cursor(t.lineBlockAt(e.head).from,1)),mde=t=>so(t,e=>Me.cursor(t.lineBlockAt(e.head).to,-1));function pde(t,e,n){let r=!1,s=Tf(t.selection,i=>{let a=To(t,i.head,-1)||To(t,i.head,1)||i.head>0&&To(t,i.head-1,1)||i.headpde(t,e);function za(t,e){let n=Tf(t.state.selection,r=>{let s=e(r);return Me.range(r.anchor,s.head,s.goalColumn,s.bidiLevel||void 0)});return n.eq(t.state.selection)?!1:(t.dispatch(ro(t.state,n)),!0)}function T$(t,e){return za(t,n=>t.moveByChar(n,e))}const E$=t=>T$(t,!Ws(t)),_$=t=>T$(t,Ws(t));function A$(t,e){return za(t,n=>t.moveByGroup(n,e))}const xde=t=>A$(t,!Ws(t)),vde=t=>A$(t,Ws(t)),yde=t=>za(t,e=>Sb(t.state,e,!Ws(t))),bde=t=>za(t,e=>Sb(t.state,e,Ws(t)));function M$(t,e){return za(t,n=>t.moveVertically(n,e))}const R$=t=>M$(t,!1),D$=t=>M$(t,!0);function P$(t,e){return za(t,n=>t.moveVertically(n,e,N$(t).height))}const A_=t=>P$(t,!1),M_=t=>P$(t,!0),wde=t=>za(t,e=>du(t,e,!0)),Sde=t=>za(t,e=>du(t,e,!1)),kde=t=>za(t,e=>du(t,e,!Ws(t))),Ode=t=>za(t,e=>du(t,e,Ws(t))),jde=t=>za(t,e=>Me.cursor(t.lineBlockAt(e.head).from)),Nde=t=>za(t,e=>Me.cursor(t.lineBlockAt(e.head).to)),R_=({state:t,dispatch:e})=>(e(ro(t,{anchor:0})),!0),D_=({state:t,dispatch:e})=>(e(ro(t,{anchor:t.doc.length})),!0),P_=({state:t,dispatch:e})=>(e(ro(t,{anchor:t.selection.main.anchor,head:0})),!0),z_=({state:t,dispatch:e})=>(e(ro(t,{anchor:t.selection.main.anchor,head:t.doc.length})),!0),Cde=({state:t,dispatch:e})=>(e(t.update({selection:{anchor:0,head:t.doc.length},userEvent:"select"})),!0),Tde=({state:t,dispatch:e})=>{let n=kb(t).map(({from:r,to:s})=>Me.range(r,Math.min(s+1,t.doc.length)));return e(t.update({selection:Me.create(n),userEvent:"select"})),!0},Ede=({state:t,dispatch:e})=>{let n=Tf(t.selection,r=>{let s=Ss(t),i=s.resolveStack(r.from,1);if(r.empty){let a=s.resolveStack(r.from,-1);a.node.from>=i.node.from&&a.node.to<=i.node.to&&(i=a)}for(let a=i;a;a=a.next){let{node:l}=a;if((l.from=r.to||l.to>r.to&&l.from<=r.from)&&a.next)return Me.range(l.to,l.from)}return r});return n.eq(t.selection)?!1:(e(ro(t,n)),!0)};function z$(t,e){let{state:n}=t,r=n.selection,s=n.selection.ranges.slice();for(let i of n.selection.ranges){let a=n.doc.lineAt(i.head);if(e?a.to0)for(let l=i;;){let c=t.moveVertically(l,e);if(c.heada.to){s.some(d=>d.head==c.head)||s.push(c);break}else{if(c.head==l.head)break;l=c}}}return s.length==r.ranges.length?!1:(t.dispatch(ro(n,Me.create(s,s.length-1))),!0)}const _de=t=>z$(t,!1),Ade=t=>z$(t,!0),Mde=({state:t,dispatch:e})=>{let n=t.selection,r=null;return n.ranges.length>1?r=Me.create([n.main]):n.main.empty||(r=Me.create([Me.cursor(n.main.head)])),r?(e(ro(t,r)),!0):!1};function tg(t,e){if(t.state.readOnly)return!1;let n="delete.selection",{state:r}=t,s=r.changeByRange(i=>{let{from:a,to:l}=i;if(a==l){let c=e(i);ca&&(n="delete.forward",c=S1(t,c,!0)),a=Math.min(a,c),l=Math.max(l,c)}else a=S1(t,a,!1),l=S1(t,l,!0);return a==l?{range:i}:{changes:{from:a,to:l},range:Me.cursor(a,as(t)))r.between(e,e,(s,i)=>{se&&(e=n?i:s)});return e}const I$=(t,e,n)=>tg(t,r=>{let s=r.from,{state:i}=t,a=i.doc.lineAt(s),l,c;if(n&&!e&&s>a.from&&sI$(t,!1,!0),L$=t=>I$(t,!0,!1),B$=(t,e)=>tg(t,n=>{let r=n.head,{state:s}=t,i=s.doc.lineAt(r),a=s.charCategorizer(r);for(let l=null;;){if(r==(e?i.to:i.from)){r==n.head&&i.number!=(e?s.doc.lines:1)&&(r+=e?1:-1);break}let c=Ps(i.text,r-i.from,e)+i.from,d=i.text.slice(Math.min(r,c)-i.from,Math.max(r,c)-i.from),h=a(d);if(l!=null&&h!=l)break;(d!=" "||r!=n.head)&&(l=h),r=c}return r}),F$=t=>B$(t,!1),Rde=t=>B$(t,!0),Dde=t=>tg(t,e=>{let n=t.lineBlockAt(e.head).to;return e.headtg(t,e=>{let n=t.moveToLineBoundary(e,!1).head;return e.head>n?n:Math.max(0,e.head-1)}),zde=t=>tg(t,e=>{let n=t.moveToLineBoundary(e,!0).head;return e.head{if(t.readOnly)return!1;let n=t.changeByRange(r=>({changes:{from:r.from,to:r.to,insert:An.of(["",""])},range:Me.cursor(r.from)}));return e(t.update(n,{scrollIntoView:!0,userEvent:"input"})),!0},Lde=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let n=t.changeByRange(r=>{if(!r.empty||r.from==0||r.from==t.doc.length)return{range:r};let s=r.from,i=t.doc.lineAt(s),a=s==i.from?s-1:Ps(i.text,s-i.from,!1)+i.from,l=s==i.to?s+1:Ps(i.text,s-i.from,!0)+i.from;return{changes:{from:a,to:l,insert:t.doc.slice(s,l).append(t.doc.slice(a,s))},range:Me.cursor(l)}});return n.changes.empty?!1:(e(t.update(n,{scrollIntoView:!0,userEvent:"move.character"})),!0)};function kb(t){let e=[],n=-1;for(let r of t.selection.ranges){let s=t.doc.lineAt(r.from),i=t.doc.lineAt(r.to);if(!r.empty&&r.to==i.from&&(i=t.doc.lineAt(r.to-1)),n>=s.number){let a=e[e.length-1];a.to=i.to,a.ranges.push(r)}else e.push({from:s.from,to:i.to,ranges:[r]});n=i.number+1}return e}function q$(t,e,n){if(t.readOnly)return!1;let r=[],s=[];for(let i of kb(t)){if(n?i.to==t.doc.length:i.from==0)continue;let a=t.doc.lineAt(n?i.to+1:i.from-1),l=a.length+1;if(n){r.push({from:i.to,to:a.to},{from:i.from,insert:a.text+t.lineBreak});for(let c of i.ranges)s.push(Me.range(Math.min(t.doc.length,c.anchor+l),Math.min(t.doc.length,c.head+l)))}else{r.push({from:a.from,to:i.from},{from:i.to,insert:t.lineBreak+a.text});for(let c of i.ranges)s.push(Me.range(c.anchor-l,c.head-l))}}return r.length?(e(t.update({changes:r,scrollIntoView:!0,selection:Me.create(s,t.selection.mainIndex),userEvent:"move.line"})),!0):!1}const Bde=({state:t,dispatch:e})=>q$(t,e,!1),Fde=({state:t,dispatch:e})=>q$(t,e,!0);function $$(t,e,n){if(t.readOnly)return!1;let r=[];for(let s of kb(t))n?r.push({from:s.from,insert:t.doc.slice(s.from,s.to)+t.lineBreak}):r.push({from:s.to,insert:t.lineBreak+t.doc.slice(s.from,s.to)});return e(t.update({changes:r,scrollIntoView:!0,userEvent:"input.copyline"})),!0}const qde=({state:t,dispatch:e})=>$$(t,e,!1),$de=({state:t,dispatch:e})=>$$(t,e,!0),Hde=t=>{if(t.state.readOnly)return!1;let{state:e}=t,n=e.changes(kb(e).map(({from:s,to:i})=>(s>0?s--:i{let i;if(t.lineWrapping){let a=t.lineBlockAt(s.head),l=t.coordsAtPos(s.head,s.assoc||1);l&&(i=a.bottom+t.documentTop-l.bottom+t.defaultLineHeight/2)}return t.moveVertically(s,!0,i)}).map(n);return t.dispatch({changes:n,selection:r,scrollIntoView:!0,userEvent:"delete.line"}),!0};function Qde(t,e){if(/\(\)|\[\]|\{\}/.test(t.sliceDoc(e-1,e+1)))return{from:e,to:e};let n=Ss(t).resolveInner(e),r=n.childBefore(e),s=n.childAfter(e),i;return r&&s&&r.to<=e&&s.from>=e&&(i=r.type.prop(an.closedBy))&&i.indexOf(s.name)>-1&&t.doc.lineAt(r.to).from==t.doc.lineAt(s.from).from&&!/\S/.test(t.sliceDoc(r.to,s.from))?{from:r.to,to:s.from}:null}const I_=H$(!1),Vde=H$(!0);function H$(t){return({state:e,dispatch:n})=>{if(e.readOnly)return!1;let r=e.changeByRange(s=>{let{from:i,to:a}=s,l=e.doc.lineAt(i),c=!t&&i==a&&Qde(e,i);t&&(i=a=(a<=l.to?l:e.doc.lineAt(a)).to);let d=new xb(e,{simulateBreak:i,simulateDoubleBreak:!!c}),h=O6(d,i);for(h==null&&(h=Cf(/^\s*/.exec(e.doc.lineAt(i).text)[0],e.tabSize));al.from&&i{let s=[];for(let a=r.from;a<=r.to;){let l=t.doc.lineAt(a);l.number>n&&(r.empty||r.to>l.from)&&(e(l,s,r),n=l.number),a=l.to+1}let i=t.changes(s);return{changes:s,range:Me.range(i.mapPos(r.anchor,1),i.mapPos(r.head,1))}})}const Ude=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let n=Object.create(null),r=new xb(t,{overrideIndentation:i=>{let a=n[i];return a??-1}}),s=M6(t,(i,a,l)=>{let c=O6(r,i.from);if(c==null)return;/\S/.test(i.text)||(c=0);let d=/^\s*/.exec(i.text)[0],h=ep(t,c);(d!=h||l.fromt.readOnly?!1:(e(t.update(M6(t,(n,r)=>{r.push({from:n.from,insert:t.facet(Zp)})}),{userEvent:"input.indent"})),!0),V$=({state:t,dispatch:e})=>t.readOnly?!1:(e(t.update(M6(t,(n,r)=>{let s=/^\s*/.exec(n.text)[0];if(!s)return;let i=Cf(s,t.tabSize),a=0,l=ep(t,Math.max(0,i-dd(t)));for(;a(t.setTabFocusMode(),!0),Gde=[{key:"Ctrl-b",run:b$,shift:E$,preventDefault:!0},{key:"Ctrl-f",run:w$,shift:_$},{key:"Ctrl-p",run:O$,shift:R$},{key:"Ctrl-n",run:j$,shift:D$},{key:"Ctrl-a",run:fde,shift:jde},{key:"Ctrl-e",run:mde,shift:Nde},{key:"Ctrl-d",run:L$},{key:"Ctrl-h",run:fO},{key:"Ctrl-k",run:Dde},{key:"Ctrl-Alt-h",run:F$},{key:"Ctrl-o",run:Ide},{key:"Ctrl-t",run:Lde},{key:"Ctrl-v",run:hO}],Xde=[{key:"ArrowLeft",run:b$,shift:E$,preventDefault:!0},{key:"Mod-ArrowLeft",mac:"Alt-ArrowLeft",run:sde,shift:xde,preventDefault:!0},{mac:"Cmd-ArrowLeft",run:dde,shift:kde,preventDefault:!0},{key:"ArrowRight",run:w$,shift:_$,preventDefault:!0},{key:"Mod-ArrowRight",mac:"Alt-ArrowRight",run:ide,shift:vde,preventDefault:!0},{mac:"Cmd-ArrowRight",run:hde,shift:Ode,preventDefault:!0},{key:"ArrowUp",run:O$,shift:R$,preventDefault:!0},{mac:"Cmd-ArrowUp",run:R_,shift:P_},{mac:"Ctrl-ArrowUp",run:__,shift:A_},{key:"ArrowDown",run:j$,shift:D$,preventDefault:!0},{mac:"Cmd-ArrowDown",run:D_,shift:z_},{mac:"Ctrl-ArrowDown",run:hO,shift:M_},{key:"PageUp",run:__,shift:A_},{key:"PageDown",run:hO,shift:M_},{key:"Home",run:ude,shift:Sde,preventDefault:!0},{key:"Mod-Home",run:R_,shift:P_},{key:"End",run:cde,shift:wde,preventDefault:!0},{key:"Mod-End",run:D_,shift:z_},{key:"Enter",run:I_,shift:I_},{key:"Mod-a",run:Cde},{key:"Backspace",run:fO,shift:fO,preventDefault:!0},{key:"Delete",run:L$,preventDefault:!0},{key:"Mod-Backspace",mac:"Alt-Backspace",run:F$,preventDefault:!0},{key:"Mod-Delete",mac:"Alt-Delete",run:Rde,preventDefault:!0},{mac:"Mod-Backspace",run:Pde,preventDefault:!0},{mac:"Mod-Delete",run:zde,preventDefault:!0}].concat(Gde.map(t=>({mac:t.key,run:t.run,shift:t.shift}))),Yde=[{key:"Alt-ArrowLeft",mac:"Ctrl-ArrowLeft",run:ode,shift:yde},{key:"Alt-ArrowRight",mac:"Ctrl-ArrowRight",run:lde,shift:bde},{key:"Alt-ArrowUp",run:Bde},{key:"Shift-Alt-ArrowUp",run:qde},{key:"Alt-ArrowDown",run:Fde},{key:"Shift-Alt-ArrowDown",run:$de},{key:"Mod-Alt-ArrowUp",run:_de},{key:"Mod-Alt-ArrowDown",run:Ade},{key:"Escape",run:Mde},{key:"Mod-Enter",run:Vde},{key:"Alt-l",mac:"Ctrl-l",run:Tde},{key:"Mod-i",run:Ede,preventDefault:!0},{key:"Mod-[",run:V$},{key:"Mod-]",run:Q$},{key:"Mod-Alt-\\",run:Ude},{key:"Shift-Mod-k",run:Hde},{key:"Shift-Mod-\\",run:gde},{key:"Mod-/",run:Bue},{key:"Alt-A",run:que},{key:"Ctrl-m",mac:"Shift-Alt-m",run:Wde}].concat(Xde),Kde={key:"Tab",run:Q$,shift:V$},L_=typeof String.prototype.normalize=="function"?t=>t.normalize("NFKD"):t=>t;class af{constructor(e,n,r=0,s=e.length,i,a){this.test=a,this.value={from:0,to:0},this.done=!1,this.matches=[],this.buffer="",this.bufferPos=0,this.iter=e.iterRange(r,s),this.bufferStart=r,this.normalize=i?l=>i(L_(l)):L_,this.query=this.normalize(n)}peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=this.buffer.length,this.iter.next(),this.iter.done)return-1;this.bufferPos=0,this.buffer=this.iter.value}return vi(this.buffer,this.bufferPos)}next(){for(;this.matches.length;)this.matches.pop();return this.nextOverlapping()}nextOverlapping(){for(;;){let e=this.peek();if(e<0)return this.done=!0,this;let n=s6(e),r=this.bufferStart+this.bufferPos;this.bufferPos+=ko(e);let s=this.normalize(n);if(s.length)for(let i=0,a=r;;i++){let l=s.charCodeAt(i),c=this.match(l,a,this.bufferPos+this.bufferStart);if(i==s.length-1){if(c)return this.value=c,this;break}a==r&&ithis.to&&(this.curLine=this.curLine.slice(0,this.to-this.curLineStart)),this.iter.next())}nextLine(){this.curLineStart=this.curLineStart+this.curLine.length+1,this.curLineStart>this.to?this.curLine="":this.getLine(0)}next(){for(let e=this.matchPos-this.curLineStart;;){this.re.lastIndex=e;let n=this.matchPos<=this.to&&this.re.exec(this.curLine);if(n){let r=this.curLineStart+n.index,s=r+n[0].length;if(this.matchPos=ay(this.text,s+(r==s?1:0)),r==this.curLineStart+this.curLine.length&&this.nextLine(),(rthis.value.to)&&(!this.test||this.test(r,s,n)))return this.value={from:r,to:s,match:n},this;e=this.matchPos-this.curLineStart}else if(this.curLineStart+this.curLine.length=r||s.to<=n){let l=new Lh(n,e.sliceString(n,r));return sS.set(e,l),l}if(s.from==n&&s.to==r)return s;let{text:i,from:a}=s;return a>n&&(i=e.sliceString(n,a)+i,a=n),s.to=this.to?this.to:this.text.lineAt(e).to}next(){for(;;){let e=this.re.lastIndex=this.matchPos-this.flat.from,n=this.re.exec(this.flat.text);if(n&&!n[0]&&n.index==e&&(this.re.lastIndex=e+1,n=this.re.exec(this.flat.text)),n){let r=this.flat.from+n.index,s=r+n[0].length;if((this.flat.to>=this.to||n.index+n[0].length<=this.flat.text.length-10)&&(!this.test||this.test(r,s,n)))return this.value={from:r,to:s,match:n},this.matchPos=ay(this.text,s+(r==s?1:0)),this}if(this.flat.to==this.to)return this.done=!0,this;this.flat=Lh.get(this.text,this.flat.from,this.chunkEnd(this.flat.from+this.flat.text.length*2))}}}typeof Symbol<"u"&&(W$.prototype[Symbol.iterator]=G$.prototype[Symbol.iterator]=function(){return this});function Zde(t){try{return new RegExp(t,R6),!0}catch{return!1}}function ay(t,e){if(e>=t.length)return e;let n=t.lineAt(e),r;for(;e=56320&&r<57344;)e++;return e}function mO(t){let e=String(t.state.doc.lineAt(t.state.selection.main.head).number),n=lr("input",{class:"cm-textfield",name:"line",value:e}),r=lr("form",{class:"cm-gotoLine",onkeydown:i=>{i.keyCode==27?(i.preventDefault(),t.dispatch({effects:E0.of(!1)}),t.focus()):i.keyCode==13&&(i.preventDefault(),s())},onsubmit:i=>{i.preventDefault(),s()}},lr("label",t.state.phrase("Go to line"),": ",n)," ",lr("button",{class:"cm-button",type:"submit"},t.state.phrase("go")),lr("button",{name:"close",onclick:()=>{t.dispatch({effects:E0.of(!1)}),t.focus()},"aria-label":t.state.phrase("close"),type:"button"},["×"]));function s(){let i=/^([+-])?(\d+)?(:\d+)?(%)?$/.exec(n.value);if(!i)return;let{state:a}=t,l=a.doc.lineAt(a.selection.main.head),[,c,d,h,m]=i,g=h?+h.slice(1):0,x=d?+d:l.number;if(d&&m){let S=x/100;c&&(S=S*(c=="-"?-1:1)+l.number/a.doc.lines),x=Math.round(a.doc.lines*S)}else d&&c&&(x=x*(c=="-"?-1:1)+l.number);let y=a.doc.line(Math.max(1,Math.min(a.doc.lines,x))),w=Me.cursor(y.from+Math.max(0,Math.min(g,y.length)));t.dispatch({effects:[E0.of(!1),Ze.scrollIntoView(w.from,{y:"center"})],selection:w}),t.focus()}return{dom:r}}const E0=Qt.define(),B_=Os.define({create(){return!0},update(t,e){for(let n of e.effects)n.is(E0)&&(t=n.value);return t},provide:t=>Y0.from(t,e=>e?mO:null)}),Jde=t=>{let e=X0(t,mO);if(!e){let n=[E0.of(!0)];t.state.field(B_,!1)==null&&n.push(Qt.appendConfig.of([B_,ehe])),t.dispatch({effects:n}),e=X0(t,mO)}return e&&e.dom.querySelector("input").select(),!0},ehe=Ze.baseTheme({".cm-panel.cm-gotoLine":{padding:"2px 6px 4px",position:"relative","& label":{fontSize:"80%"},"& [name=close]":{position:"absolute",top:"0",bottom:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:"0"}}}),the={highlightWordAroundCursor:!1,minSelectionLength:1,maxMatches:100,wholeWords:!1},nhe=st.define({combine(t){return Vo(t,the,{highlightWordAroundCursor:(e,n)=>e||n,minSelectionLength:Math.min,maxMatches:Math.min})}});function rhe(t){return[lhe,ohe]}const she=Ot.mark({class:"cm-selectionMatch"}),ihe=Ot.mark({class:"cm-selectionMatch cm-selectionMatch-main"});function F_(t,e,n,r){return(n==0||t(e.sliceDoc(n-1,n))!=Tr.Word)&&(r==e.doc.length||t(e.sliceDoc(r,r+1))!=Tr.Word)}function ahe(t,e,n,r){return t(e.sliceDoc(n,n+1))==Tr.Word&&t(e.sliceDoc(r-1,r))==Tr.Word}const ohe=Yr.fromClass(class{constructor(t){this.decorations=this.getDeco(t)}update(t){(t.selectionSet||t.docChanged||t.viewportChanged)&&(this.decorations=this.getDeco(t.view))}getDeco(t){let e=t.state.facet(nhe),{state:n}=t,r=n.selection;if(r.ranges.length>1)return Ot.none;let s=r.main,i,a=null;if(s.empty){if(!e.highlightWordAroundCursor)return Ot.none;let c=n.wordAt(s.head);if(!c)return Ot.none;a=n.charCategorizer(s.head),i=n.sliceDoc(c.from,c.to)}else{let c=s.to-s.from;if(c200)return Ot.none;if(e.wholeWords){if(i=n.sliceDoc(s.from,s.to),a=n.charCategorizer(s.head),!(F_(a,n,s.from,s.to)&&ahe(a,n,s.from,s.to)))return Ot.none}else if(i=n.sliceDoc(s.from,s.to),!i)return Ot.none}let l=[];for(let c of t.visibleRanges){let d=new af(n.doc,i,c.from,c.to);for(;!d.next().done;){let{from:h,to:m}=d.value;if((!a||F_(a,n,h,m))&&(s.empty&&h<=s.from&&m>=s.to?l.push(ihe.range(h,m)):(h>=s.to||m<=s.from)&&l.push(she.range(h,m)),l.length>e.maxMatches))return Ot.none}}return Ot.set(l)}},{decorations:t=>t.decorations}),lhe=Ze.baseTheme({".cm-selectionMatch":{backgroundColor:"#99ff7780"},".cm-searchMatch .cm-selectionMatch":{backgroundColor:"transparent"}}),che=({state:t,dispatch:e})=>{let{selection:n}=t,r=Me.create(n.ranges.map(s=>t.wordAt(s.head)||Me.cursor(s.head)),n.mainIndex);return r.eq(n)?!1:(e(t.update({selection:r})),!0)};function uhe(t,e){let{main:n,ranges:r}=t.selection,s=t.wordAt(n.head),i=s&&s.from==n.from&&s.to==n.to;for(let a=!1,l=new af(t.doc,e,r[r.length-1].to);;)if(l.next(),l.done){if(a)return null;l=new af(t.doc,e,0,Math.max(0,r[r.length-1].from-1)),a=!0}else{if(a&&r.some(c=>c.from==l.value.from))continue;if(i){let c=t.wordAt(l.value.from);if(!c||c.from!=l.value.from||c.to!=l.value.to)continue}return l.value}}const dhe=({state:t,dispatch:e})=>{let{ranges:n}=t.selection;if(n.some(i=>i.from===i.to))return che({state:t,dispatch:e});let r=t.sliceDoc(n[0].from,n[0].to);if(t.selection.ranges.some(i=>t.sliceDoc(i.from,i.to)!=r))return!1;let s=uhe(t,r);return s?(e(t.update({selection:t.selection.addRange(Me.range(s.from,s.to),!1),effects:Ze.scrollIntoView(s.to)})),!0):!1},Ef=st.define({combine(t){return Vo(t,{top:!1,caseSensitive:!1,literal:!1,regexp:!1,wholeWord:!1,createPanel:e=>new khe(e),scrollToMatch:e=>Ze.scrollIntoView(e)})}});class X${constructor(e){this.search=e.search,this.caseSensitive=!!e.caseSensitive,this.literal=!!e.literal,this.regexp=!!e.regexp,this.replace=e.replace||"",this.valid=!!this.search&&(!this.regexp||Zde(this.search)),this.unquoted=this.unquote(this.search),this.wholeWord=!!e.wholeWord}unquote(e){return this.literal?e:e.replace(/\\([nrt\\])/g,(n,r)=>r=="n"?` -`:r=="r"?"\r":r=="t"?" ":"\\")}eq(e){return this.search==e.search&&this.replace==e.replace&&this.caseSensitive==e.caseSensitive&&this.regexp==e.regexp&&this.wholeWord==e.wholeWord}create(){return this.regexp?new phe(this):new fhe(this)}getCursor(e,n=0,r){let s=e.doc?e:Nn.create({doc:e});return r==null&&(r=s.doc.length),this.regexp?Sh(this,s,n,r):wh(this,s,n,r)}}class Y${constructor(e){this.spec=e}}function wh(t,e,n,r){return new af(e.doc,t.unquoted,n,r,t.caseSensitive?void 0:s=>s.toLowerCase(),t.wholeWord?hhe(e.doc,e.charCategorizer(e.selection.main.head)):void 0)}function hhe(t,e){return(n,r,s,i)=>((i>n||i+s.length=n)return null;s.push(r.value)}return s}highlight(e,n,r,s){let i=wh(this.spec,e,Math.max(0,n-this.spec.unquoted.length),Math.min(r+this.spec.unquoted.length,e.doc.length));for(;!i.next().done;)s(i.value.from,i.value.to)}}function Sh(t,e,n,r){return new W$(e.doc,t.search,{ignoreCase:!t.caseSensitive,test:t.wholeWord?mhe(e.charCategorizer(e.selection.main.head)):void 0},n,r)}function oy(t,e){return t.slice(Ps(t,e,!1),e)}function ly(t,e){return t.slice(e,Ps(t,e))}function mhe(t){return(e,n,r)=>!r[0].length||(t(oy(r.input,r.index))!=Tr.Word||t(ly(r.input,r.index))!=Tr.Word)&&(t(ly(r.input,r.index+r[0].length))!=Tr.Word||t(oy(r.input,r.index+r[0].length))!=Tr.Word)}class phe extends Y${nextMatch(e,n,r){let s=Sh(this.spec,e,r,e.doc.length).next();return s.done&&(s=Sh(this.spec,e,0,n).next()),s.done?null:s.value}prevMatchInRange(e,n,r){for(let s=1;;s++){let i=Math.max(n,r-s*1e4),a=Sh(this.spec,e,i,r),l=null;for(;!a.next().done;)l=a.value;if(l&&(i==n||l.from>i+10))return l;if(i==n)return null}}prevMatch(e,n,r){return this.prevMatchInRange(e,0,n)||this.prevMatchInRange(e,r,e.doc.length)}getReplacement(e){return this.spec.unquote(this.spec.replace).replace(/\$([$&]|\d+)/g,(n,r)=>{if(r=="&")return e.match[0];if(r=="$")return"$";for(let s=r.length;s>0;s--){let i=+r.slice(0,s);if(i>0&&i=n)return null;s.push(r.value)}return s}highlight(e,n,r,s){let i=Sh(this.spec,e,Math.max(0,n-250),Math.min(r+250,e.doc.length));for(;!i.next().done;)s(i.value.from,i.value.to)}}const np=Qt.define(),D6=Qt.define(),Uc=Os.define({create(t){return new iS(pO(t).create(),null)},update(t,e){for(let n of e.effects)n.is(np)?t=new iS(n.value.create(),t.panel):n.is(D6)&&(t=new iS(t.query,n.value?P6:null));return t},provide:t=>Y0.from(t,e=>e.panel)});class iS{constructor(e,n){this.query=e,this.panel=n}}const ghe=Ot.mark({class:"cm-searchMatch"}),xhe=Ot.mark({class:"cm-searchMatch cm-searchMatch-selected"}),vhe=Yr.fromClass(class{constructor(t){this.view=t,this.decorations=this.highlight(t.state.field(Uc))}update(t){let e=t.state.field(Uc);(e!=t.startState.field(Uc)||t.docChanged||t.selectionSet||t.viewportChanged)&&(this.decorations=this.highlight(e))}highlight({query:t,panel:e}){if(!e||!t.spec.valid)return Ot.none;let{view:n}=this,r=new Hl;for(let s=0,i=n.visibleRanges,a=i.length;si[s+1].from-500;)c=i[++s].to;t.highlight(n.state,l,c,(d,h)=>{let m=n.state.selection.ranges.some(g=>g.from==d&&g.to==h);r.add(d,h,m?xhe:ghe)})}return r.finish()}},{decorations:t=>t.decorations});function ng(t){return e=>{let n=e.state.field(Uc,!1);return n&&n.query.spec.valid?t(e,n):J$(e)}}const cy=ng((t,{query:e})=>{let{to:n}=t.state.selection.main,r=e.nextMatch(t.state,n,n);if(!r)return!1;let s=Me.single(r.from,r.to),i=t.state.facet(Ef);return t.dispatch({selection:s,effects:[z6(t,r),i.scrollToMatch(s.main,t)],userEvent:"select.search"}),Z$(t),!0}),uy=ng((t,{query:e})=>{let{state:n}=t,{from:r}=n.selection.main,s=e.prevMatch(n,r,r);if(!s)return!1;let i=Me.single(s.from,s.to),a=t.state.facet(Ef);return t.dispatch({selection:i,effects:[z6(t,s),a.scrollToMatch(i.main,t)],userEvent:"select.search"}),Z$(t),!0}),yhe=ng((t,{query:e})=>{let n=e.matchAll(t.state,1e3);return!n||!n.length?!1:(t.dispatch({selection:Me.create(n.map(r=>Me.range(r.from,r.to))),userEvent:"select.search.matches"}),!0)}),bhe=({state:t,dispatch:e})=>{let n=t.selection;if(n.ranges.length>1||n.main.empty)return!1;let{from:r,to:s}=n.main,i=[],a=0;for(let l=new af(t.doc,t.sliceDoc(r,s));!l.next().done;){if(i.length>1e3)return!1;l.value.from==r&&(a=i.length),i.push(Me.range(l.value.from,l.value.to))}return e(t.update({selection:Me.create(i,a),userEvent:"select.search.matches"})),!0},q_=ng((t,{query:e})=>{let{state:n}=t,{from:r,to:s}=n.selection.main;if(n.readOnly)return!1;let i=e.nextMatch(n,r,r);if(!i)return!1;let a=i,l=[],c,d,h=[];a.from==r&&a.to==s&&(d=n.toText(e.getReplacement(a)),l.push({from:a.from,to:a.to,insert:d}),a=e.nextMatch(n,a.from,a.to),h.push(Ze.announce.of(n.phrase("replaced match on line $",n.doc.lineAt(r).number)+".")));let m=t.state.changes(l);return a&&(c=Me.single(a.from,a.to).map(m),h.push(z6(t,a)),h.push(n.facet(Ef).scrollToMatch(c.main,t))),t.dispatch({changes:m,selection:c,effects:h,userEvent:"input.replace"}),!0}),whe=ng((t,{query:e})=>{if(t.state.readOnly)return!1;let n=e.matchAll(t.state,1e9).map(s=>{let{from:i,to:a}=s;return{from:i,to:a,insert:e.getReplacement(s)}});if(!n.length)return!1;let r=t.state.phrase("replaced $ matches",n.length)+".";return t.dispatch({changes:n,effects:Ze.announce.of(r),userEvent:"input.replace.all"}),!0});function P6(t){return t.state.facet(Ef).createPanel(t)}function pO(t,e){var n,r,s,i,a;let l=t.selection.main,c=l.empty||l.to>l.from+100?"":t.sliceDoc(l.from,l.to);if(e&&!c)return e;let d=t.facet(Ef);return new X$({search:((n=e?.literal)!==null&&n!==void 0?n:d.literal)?c:c.replace(/\n/g,"\\n"),caseSensitive:(r=e?.caseSensitive)!==null&&r!==void 0?r:d.caseSensitive,literal:(s=e?.literal)!==null&&s!==void 0?s:d.literal,regexp:(i=e?.regexp)!==null&&i!==void 0?i:d.regexp,wholeWord:(a=e?.wholeWord)!==null&&a!==void 0?a:d.wholeWord})}function K$(t){let e=X0(t,P6);return e&&e.dom.querySelector("[main-field]")}function Z$(t){let e=K$(t);e&&e==t.root.activeElement&&e.select()}const J$=t=>{let e=t.state.field(Uc,!1);if(e&&e.panel){let n=K$(t);if(n&&n!=t.root.activeElement){let r=pO(t.state,e.query.spec);r.valid&&t.dispatch({effects:np.of(r)}),n.focus(),n.select()}}else t.dispatch({effects:[D6.of(!0),e?np.of(pO(t.state,e.query.spec)):Qt.appendConfig.of(jhe)]});return!0},eH=t=>{let e=t.state.field(Uc,!1);if(!e||!e.panel)return!1;let n=X0(t,P6);return n&&n.dom.contains(t.root.activeElement)&&t.focus(),t.dispatch({effects:D6.of(!1)}),!0},She=[{key:"Mod-f",run:J$,scope:"editor search-panel"},{key:"F3",run:cy,shift:uy,scope:"editor search-panel",preventDefault:!0},{key:"Mod-g",run:cy,shift:uy,scope:"editor search-panel",preventDefault:!0},{key:"Escape",run:eH,scope:"editor search-panel"},{key:"Mod-Shift-l",run:bhe},{key:"Mod-Alt-g",run:Jde},{key:"Mod-d",run:dhe,preventDefault:!0}];class khe{constructor(e){this.view=e;let n=this.query=e.state.field(Uc).query.spec;this.commit=this.commit.bind(this),this.searchField=lr("input",{value:n.search,placeholder:Fi(e,"Find"),"aria-label":Fi(e,"Find"),class:"cm-textfield",name:"search",form:"","main-field":"true",onchange:this.commit,onkeyup:this.commit}),this.replaceField=lr("input",{value:n.replace,placeholder:Fi(e,"Replace"),"aria-label":Fi(e,"Replace"),class:"cm-textfield",name:"replace",form:"",onchange:this.commit,onkeyup:this.commit}),this.caseField=lr("input",{type:"checkbox",name:"case",form:"",checked:n.caseSensitive,onchange:this.commit}),this.reField=lr("input",{type:"checkbox",name:"re",form:"",checked:n.regexp,onchange:this.commit}),this.wordField=lr("input",{type:"checkbox",name:"word",form:"",checked:n.wholeWord,onchange:this.commit});function r(s,i,a){return lr("button",{class:"cm-button",name:s,onclick:i,type:"button"},a)}this.dom=lr("div",{onkeydown:s=>this.keydown(s),class:"cm-search"},[this.searchField,r("next",()=>cy(e),[Fi(e,"next")]),r("prev",()=>uy(e),[Fi(e,"previous")]),r("select",()=>yhe(e),[Fi(e,"all")]),lr("label",null,[this.caseField,Fi(e,"match case")]),lr("label",null,[this.reField,Fi(e,"regexp")]),lr("label",null,[this.wordField,Fi(e,"by word")]),...e.state.readOnly?[]:[lr("br"),this.replaceField,r("replace",()=>q_(e),[Fi(e,"replace")]),r("replaceAll",()=>whe(e),[Fi(e,"replace all")])],lr("button",{name:"close",onclick:()=>eH(e),"aria-label":Fi(e,"close"),type:"button"},["×"])])}commit(){let e=new X$({search:this.searchField.value,caseSensitive:this.caseField.checked,regexp:this.reField.checked,wholeWord:this.wordField.checked,replace:this.replaceField.value});e.eq(this.query)||(this.query=e,this.view.dispatch({effects:np.of(e)}))}keydown(e){Tle(this.view,e,"search-panel")?e.preventDefault():e.keyCode==13&&e.target==this.searchField?(e.preventDefault(),(e.shiftKey?uy:cy)(this.view)):e.keyCode==13&&e.target==this.replaceField&&(e.preventDefault(),q_(this.view))}update(e){for(let n of e.transactions)for(let r of n.effects)r.is(np)&&!r.value.eq(this.query)&&this.setQuery(r.value)}setQuery(e){this.query=e,this.searchField.value=e.search,this.replaceField.value=e.replace,this.caseField.checked=e.caseSensitive,this.reField.checked=e.regexp,this.wordField.checked=e.wholeWord}mount(){this.searchField.select()}get pos(){return 80}get top(){return this.view.state.facet(Ef).top}}function Fi(t,e){return t.state.phrase(e)}const k1=30,O1=/[\s\.,:;?!]/;function z6(t,{from:e,to:n}){let r=t.state.doc.lineAt(e),s=t.state.doc.lineAt(n).to,i=Math.max(r.from,e-k1),a=Math.min(s,n+k1),l=t.state.sliceDoc(i,a);if(i!=r.from){for(let c=0;cl.length-k1;c--)if(!O1.test(l[c-1])&&O1.test(l[c])){l=l.slice(0,c);break}}return Ze.announce.of(`${t.state.phrase("current match")}. ${l} ${t.state.phrase("on line")} ${r.number}.`)}const Ohe=Ze.baseTheme({".cm-panel.cm-search":{padding:"2px 6px 4px",position:"relative","& [name=close]":{position:"absolute",top:"0",right:"4px",backgroundColor:"inherit",border:"none",font:"inherit",padding:0,margin:0},"& input, & button, & label":{margin:".2em .6em .2em 0"},"& input[type=checkbox]":{marginRight:".2em"},"& label":{fontSize:"80%",whiteSpace:"pre"}},"&light .cm-searchMatch":{backgroundColor:"#ffff0054"},"&dark .cm-searchMatch":{backgroundColor:"#00ffff8a"},"&light .cm-searchMatch-selected":{backgroundColor:"#ff6a0054"},"&dark .cm-searchMatch-selected":{backgroundColor:"#ff00ff8a"}}),jhe=[Uc,uu.low(vhe),Ohe];class tH{constructor(e,n,r,s){this.state=e,this.pos=n,this.explicit=r,this.view=s,this.abortListeners=[],this.abortOnDocChange=!1}tokenBefore(e){let n=Ss(this.state).resolveInner(this.pos,-1);for(;n&&e.indexOf(n.name)<0;)n=n.parent;return n?{from:n.from,to:this.pos,text:this.state.sliceDoc(n.from,this.pos),type:n.type}:null}matchBefore(e){let n=this.state.doc.lineAt(this.pos),r=Math.max(n.from,this.pos-250),s=n.text.slice(r-n.from,this.pos-n.from),i=s.search(rH(e,!1));return i<0?null:{from:r+i,to:this.pos,text:s.slice(i)}}get aborted(){return this.abortListeners==null}addEventListener(e,n,r){e=="abort"&&this.abortListeners&&(this.abortListeners.push(n),r&&r.onDocChange&&(this.abortOnDocChange=!0))}}function $_(t){let e=Object.keys(t).join(""),n=/\w/.test(e);return n&&(e=e.replace(/\w/g,"")),`[${n?"\\w":""}${e.replace(/[^\w\s]/g,"\\$&")}]`}function Nhe(t){let e=Object.create(null),n=Object.create(null);for(let{label:s}of t){e[s[0]]=!0;for(let i=1;itypeof s=="string"?{label:s}:s),[n,r]=e.every(s=>/^\w+$/.test(s.label))?[/\w*$/,/\w+$/]:Nhe(e);return s=>{let i=s.matchBefore(r);return i||s.explicit?{from:i?i.from:s.pos,options:e,validFor:n}:null}}function Che(t,e){return n=>{for(let r=Ss(n.state).resolveInner(n.pos,-1);r;r=r.parent){if(t.indexOf(r.name)>-1)return null;if(r.type.isTop)break}return e(n)}}let H_=class{constructor(e,n,r,s){this.completion=e,this.source=n,this.match=r,this.score=s}};function sd(t){return t.selection.main.from}function rH(t,e){var n;let{source:r}=t,s=e&&r[0]!="^",i=r[r.length-1]!="$";return!s&&!i?t:new RegExp(`${s?"^":""}(?:${r})${i?"$":""}`,(n=t.flags)!==null&&n!==void 0?n:t.ignoreCase?"i":"")}const I6=Qo.define();function The(t,e,n,r){let{main:s}=t.selection,i=n-s.from,a=r-s.from;return{...t.changeByRange(l=>{if(l!=s&&n!=r&&t.sliceDoc(l.from+i,l.from+a)!=t.sliceDoc(n,r))return{range:l};let c=t.toText(e);return{changes:{from:l.from+i,to:r==s.from?l.to:l.from+a,insert:c},range:Me.cursor(l.from+i+c.length)}}),scrollIntoView:!0,userEvent:"input.complete"}}const Q_=new WeakMap;function Ehe(t){if(!Array.isArray(t))return t;let e=Q_.get(t);return e||Q_.set(t,e=nH(t)),e}const dy=Qt.define(),rp=Qt.define();class _he{constructor(e){this.pattern=e,this.chars=[],this.folded=[],this.any=[],this.precise=[],this.byWord=[],this.score=0,this.matched=[];for(let n=0;n=48&&E<=57||E>=97&&E<=122?2:E>=65&&E<=90?1:0:(_=s6(E))!=_.toLowerCase()?1:_!=_.toUpperCase()?2:0;(!j||A==1&&S||T==0&&A!=0)&&(n[m]==E||r[m]==E&&(g=!0)?a[m++]=j:a.length&&(k=!1)),T=A,j+=ko(E)}return m==c&&a[0]==0&&k?this.result(-100+(g?-200:0),a,e):x==c&&y==0?this.ret(-200-e.length+(w==e.length?0:-100),[0,w]):l>-1?this.ret(-700-e.length,[l,l+this.pattern.length]):x==c?this.ret(-900-e.length,[y,w]):m==c?this.result(-100+(g?-200:0)+-700+(k?0:-1100),a,e):n.length==2?null:this.result((s[0]?-700:0)+-200+-1100,s,e)}result(e,n,r){let s=[],i=0;for(let a of n){let l=a+(this.astral?ko(vi(r,a)):1);i&&s[i-1]==a?s[i-1]=l:(s[i++]=a,s[i++]=l)}return this.ret(e-r.length,s)}}class Ahe{constructor(e){this.pattern=e,this.matched=[],this.score=0,this.folded=e.toLowerCase()}match(e){if(e.length!1,activateOnTypingDelay:100,selectOnOpen:!0,override:null,closeOnBlur:!0,maxRenderedOptions:100,defaultKeymap:!0,tooltipClass:()=>"",optionClass:()=>"",aboveCursor:!1,icons:!0,addToOptions:[],positionInfo:Mhe,filterStrict:!1,compareCompletions:(e,n)=>e.label.localeCompare(n.label),interactionDelay:75,updateSyncTime:100},{defaultKeymap:(e,n)=>e&&n,closeOnBlur:(e,n)=>e&&n,icons:(e,n)=>e&&n,tooltipClass:(e,n)=>r=>V_(e(r),n(r)),optionClass:(e,n)=>r=>V_(e(r),n(r)),addToOptions:(e,n)=>e.concat(n),filterStrict:(e,n)=>e||n})}});function V_(t,e){return t?e?t+" "+e:t:e}function Mhe(t,e,n,r,s,i){let a=t.textDirection==br.RTL,l=a,c=!1,d="top",h,m,g=e.left-s.left,x=s.right-e.right,y=r.right-r.left,w=r.bottom-r.top;if(l&&g=w||j>e.top?h=n.bottom-e.top:(d="bottom",h=e.bottom-n.top)}let S=(e.bottom-e.top)/i.offsetHeight,k=(e.right-e.left)/i.offsetWidth;return{style:`${d}: ${h/S}px; max-width: ${m/k}px`,class:"cm-completionInfo-"+(c?a?"left-narrow":"right-narrow":l?"left":"right")}}function Rhe(t){let e=t.addToOptions.slice();return t.icons&&e.push({render(n){let r=document.createElement("div");return r.classList.add("cm-completionIcon"),n.type&&r.classList.add(...n.type.split(/\s+/g).map(s=>"cm-completionIcon-"+s)),r.setAttribute("aria-hidden","true"),r},position:20}),e.push({render(n,r,s,i){let a=document.createElement("span");a.className="cm-completionLabel";let l=n.displayLabel||n.label,c=0;for(let d=0;dc&&a.appendChild(document.createTextNode(l.slice(c,h)));let g=a.appendChild(document.createElement("span"));g.appendChild(document.createTextNode(l.slice(h,m))),g.className="cm-completionMatchedText",c=m}return cn.position-r.position).map(n=>n.render)}function aS(t,e,n){if(t<=n)return{from:0,to:t};if(e<0&&(e=0),e<=t>>1){let s=Math.floor(e/n);return{from:s*n,to:(s+1)*n}}let r=Math.floor((t-e)/n);return{from:t-(r+1)*n,to:t-r*n}}class Dhe{constructor(e,n,r){this.view=e,this.stateField=n,this.applyCompletion=r,this.info=null,this.infoDestroy=null,this.placeInfoReq={read:()=>this.measureInfo(),write:c=>this.placeInfo(c),key:this},this.space=null,this.currentClass="";let s=e.state.field(n),{options:i,selected:a}=s.open,l=e.state.facet(ws);this.optionContent=Rhe(l),this.optionClass=l.optionClass,this.tooltipClass=l.tooltipClass,this.range=aS(i.length,a,l.maxRenderedOptions),this.dom=document.createElement("div"),this.dom.className="cm-tooltip-autocomplete",this.updateTooltipClass(e.state),this.dom.addEventListener("mousedown",c=>{let{options:d}=e.state.field(n).open;for(let h=c.target,m;h&&h!=this.dom;h=h.parentNode)if(h.nodeName=="LI"&&(m=/-(\d+)$/.exec(h.id))&&+m[1]{let d=e.state.field(this.stateField,!1);d&&d.tooltip&&e.state.facet(ws).closeOnBlur&&c.relatedTarget!=e.contentDOM&&e.dispatch({effects:rp.of(null)})}),this.showOptions(i,s.id)}mount(){this.updateSel()}showOptions(e,n){this.list&&this.list.remove(),this.list=this.dom.appendChild(this.createListBox(e,n,this.range)),this.list.addEventListener("scroll",()=>{this.info&&this.view.requestMeasure(this.placeInfoReq)})}update(e){var n;let r=e.state.field(this.stateField),s=e.startState.field(this.stateField);if(this.updateTooltipClass(e.state),r!=s){let{options:i,selected:a,disabled:l}=r.open;(!s.open||s.open.options!=i)&&(this.range=aS(i.length,a,e.state.facet(ws).maxRenderedOptions),this.showOptions(i,r.id)),this.updateSel(),l!=((n=s.open)===null||n===void 0?void 0:n.disabled)&&this.dom.classList.toggle("cm-tooltip-autocomplete-disabled",!!l)}}updateTooltipClass(e){let n=this.tooltipClass(e);if(n!=this.currentClass){for(let r of this.currentClass.split(" "))r&&this.dom.classList.remove(r);for(let r of n.split(" "))r&&this.dom.classList.add(r);this.currentClass=n}}positioned(e){this.space=e,this.info&&this.view.requestMeasure(this.placeInfoReq)}updateSel(){let e=this.view.state.field(this.stateField),n=e.open;(n.selected>-1&&n.selected=this.range.to)&&(this.range=aS(n.options.length,n.selected,this.view.state.facet(ws).maxRenderedOptions),this.showOptions(n.options,e.id));let r=this.updateSelectedOption(n.selected);if(r){this.destroyInfo();let{completion:s}=n.options[n.selected],{info:i}=s;if(!i)return;let a=typeof i=="string"?document.createTextNode(i):i(s);if(!a)return;"then"in a?a.then(l=>{l&&this.view.state.field(this.stateField,!1)==e&&this.addInfoPane(l,s)}).catch(l=>bi(this.view.state,l,"completion info")):(this.addInfoPane(a,s),r.setAttribute("aria-describedby",this.info.id))}}addInfoPane(e,n){this.destroyInfo();let r=this.info=document.createElement("div");if(r.className="cm-tooltip cm-completionInfo",r.id="cm-completionInfo-"+Math.floor(Math.random()*65535).toString(16),e.nodeType!=null)r.appendChild(e),this.infoDestroy=null;else{let{dom:s,destroy:i}=e;r.appendChild(s),this.infoDestroy=i||null}this.dom.appendChild(r),this.view.requestMeasure(this.placeInfoReq)}updateSelectedOption(e){let n=null;for(let r=this.list.firstChild,s=this.range.from;r;r=r.nextSibling,s++)r.nodeName!="LI"||!r.id?s--:s==e?r.hasAttribute("aria-selected")||(r.setAttribute("aria-selected","true"),n=r):r.hasAttribute("aria-selected")&&(r.removeAttribute("aria-selected"),r.removeAttribute("aria-describedby"));return n&&zhe(this.list,n),n}measureInfo(){let e=this.dom.querySelector("[aria-selected]");if(!e||!this.info)return null;let n=this.dom.getBoundingClientRect(),r=this.info.getBoundingClientRect(),s=e.getBoundingClientRect(),i=this.space;if(!i){let a=this.dom.ownerDocument.documentElement;i={left:0,top:0,right:a.clientWidth,bottom:a.clientHeight}}return s.top>Math.min(i.bottom,n.bottom)-10||s.bottom{a.target==s&&a.preventDefault()});let i=null;for(let a=r.from;ar.from||r.from==0))if(i=g,typeof d!="string"&&d.header)s.appendChild(d.header(d));else{let x=s.appendChild(document.createElement("completion-section"));x.textContent=g}}const h=s.appendChild(document.createElement("li"));h.id=n+"-"+a,h.setAttribute("role","option");let m=this.optionClass(l);m&&(h.className=m);for(let g of this.optionContent){let x=g(l,this.view.state,this.view,c);x&&h.appendChild(x)}}return r.from&&s.classList.add("cm-completionListIncompleteTop"),r.tonew Dhe(n,t,e)}function zhe(t,e){let n=t.getBoundingClientRect(),r=e.getBoundingClientRect(),s=n.height/t.offsetHeight;r.topn.bottom&&(t.scrollTop+=(r.bottom-n.bottom)/s)}function U_(t){return(t.boost||0)*100+(t.apply?10:0)+(t.info?5:0)+(t.type?1:0)}function Ihe(t,e){let n=[],r=null,s=null,i=h=>{n.push(h);let{section:m}=h.completion;if(m){r||(r=[]);let g=typeof m=="string"?m:m.name;r.some(x=>x.name==g)||r.push(typeof m=="string"?{name:g}:m)}},a=e.facet(ws);for(let h of t)if(h.hasResult()){let m=h.result.getMatch;if(h.result.filter===!1)for(let g of h.result.options)i(new H_(g,h.source,m?m(g):[],1e9-n.length));else{let g=e.sliceDoc(h.from,h.to),x,y=a.filterStrict?new Ahe(g):new _he(g);for(let w of h.result.options)if(x=y.match(w.label)){let S=w.displayLabel?m?m(w,x.matched):[]:x.matched,k=x.score+(w.boost||0);if(i(new H_(w,h.source,S,k)),typeof w.section=="object"&&w.section.rank==="dynamic"){let{name:j}=w.section;s||(s=Object.create(null)),s[j]=Math.max(k,s[j]||-1e9)}}}}if(r){let h=Object.create(null),m=0,g=(x,y)=>(x.rank==="dynamic"&&y.rank==="dynamic"?s[y.name]-s[x.name]:0)||(typeof x.rank=="number"?x.rank:1e9)-(typeof y.rank=="number"?y.rank:1e9)||(x.nameg.score-m.score||d(m.completion,g.completion))){let m=h.completion;!c||c.label!=m.label||c.detail!=m.detail||c.type!=null&&m.type!=null&&c.type!=m.type||c.apply!=m.apply||c.boost!=m.boost?l.push(h):U_(h.completion)>U_(c)&&(l[l.length-1]=h),c=h.completion}return l}class _h{constructor(e,n,r,s,i,a){this.options=e,this.attrs=n,this.tooltip=r,this.timestamp=s,this.selected=i,this.disabled=a}setSelected(e,n){return e==this.selected||e>=this.options.length?this:new _h(this.options,W_(n,e),this.tooltip,this.timestamp,e,this.disabled)}static build(e,n,r,s,i,a){if(s&&!a&&e.some(d=>d.isPending))return s.setDisabled();let l=Ihe(e,n);if(!l.length)return s&&e.some(d=>d.isPending)?s.setDisabled():null;let c=n.facet(ws).selectOnOpen?0:-1;if(s&&s.selected!=c&&s.selected!=-1){let d=s.options[s.selected].completion;for(let h=0;hh.hasResult()?Math.min(d,h.from):d,1e8),create:Hhe,above:i.aboveCursor},s?s.timestamp:Date.now(),c,!1)}map(e){return new _h(this.options,this.attrs,{...this.tooltip,pos:e.mapPos(this.tooltip.pos)},this.timestamp,this.selected,this.disabled)}setDisabled(){return new _h(this.options,this.attrs,this.tooltip,this.timestamp,this.selected,!0)}}class hy{constructor(e,n,r){this.active=e,this.id=n,this.open=r}static start(){return new hy(qhe,"cm-ac-"+Math.floor(Math.random()*2e6).toString(36),null)}update(e){let{state:n}=e,r=n.facet(ws),i=(r.override||n.languageDataAt("autocomplete",sd(n)).map(Ehe)).map(c=>(this.active.find(h=>h.source==c)||new Oa(c,this.active.some(h=>h.state!=0)?1:0)).update(e,r));i.length==this.active.length&&i.every((c,d)=>c==this.active[d])&&(i=this.active);let a=this.open,l=e.effects.some(c=>c.is(L6));a&&e.docChanged&&(a=a.map(e.changes)),e.selection||i.some(c=>c.hasResult()&&e.changes.touchesRange(c.from,c.to))||!Lhe(i,this.active)||l?a=_h.build(i,n,this.id,a,r,l):a&&a.disabled&&!i.some(c=>c.isPending)&&(a=null),!a&&i.every(c=>!c.isPending)&&i.some(c=>c.hasResult())&&(i=i.map(c=>c.hasResult()?new Oa(c.source,0):c));for(let c of e.effects)c.is(iH)&&(a=a&&a.setSelected(c.value,this.id));return i==this.active&&a==this.open?this:new hy(i,this.id,a)}get tooltip(){return this.open?this.open.tooltip:null}get attrs(){return this.open?this.open.attrs:this.active.length?Bhe:Fhe}}function Lhe(t,e){if(t==e)return!0;for(let n=0,r=0;;){for(;n-1&&(n["aria-activedescendant"]=t+"-"+e),n}const qhe=[];function sH(t,e){if(t.isUserEvent("input.complete")){let r=t.annotation(I6);if(r&&e.activateOnCompletion(r))return 12}let n=t.isUserEvent("input.type");return n&&e.activateOnTyping?5:n?1:t.isUserEvent("delete.backward")?2:t.selection?8:t.docChanged?16:0}class Oa{constructor(e,n,r=!1){this.source=e,this.state=n,this.explicit=r}hasResult(){return!1}get isPending(){return this.state==1}update(e,n){let r=sH(e,n),s=this;(r&8||r&16&&this.touches(e))&&(s=new Oa(s.source,0)),r&4&&s.state==0&&(s=new Oa(this.source,1)),s=s.updateFor(e,r);for(let i of e.effects)if(i.is(dy))s=new Oa(s.source,1,i.value);else if(i.is(rp))s=new Oa(s.source,0);else if(i.is(L6))for(let a of i.value)a.source==s.source&&(s=a);return s}updateFor(e,n){return this.map(e.changes)}map(e){return this}touches(e){return e.changes.touchesRange(sd(e.state))}}class Bh extends Oa{constructor(e,n,r,s,i,a){super(e,3,n),this.limit=r,this.result=s,this.from=i,this.to=a}hasResult(){return!0}updateFor(e,n){var r;if(!(n&3))return this.map(e.changes);let s=this.result;s.map&&!e.changes.empty&&(s=s.map(s,e.changes));let i=e.changes.mapPos(this.from),a=e.changes.mapPos(this.to,1),l=sd(e.state);if(l>a||!s||n&2&&(sd(e.startState)==this.from||ln.map(e))}}),iH=Qt.define(),yi=Os.define({create(){return hy.start()},update(t,e){return t.update(e)},provide:t=>[v6.from(t,e=>e.tooltip),Ze.contentAttributes.from(t,e=>e.attrs)]});function B6(t,e){const n=e.completion.apply||e.completion.label;let r=t.state.field(yi).active.find(s=>s.source==e.source);return r instanceof Bh?(typeof n=="string"?t.dispatch({...The(t.state,n,r.from,r.to),annotations:I6.of(e.completion)}):n(t,e.completion,r.from,r.to),!0):!1}const Hhe=Phe(yi,B6);function j1(t,e="option"){return n=>{let r=n.state.field(yi,!1);if(!r||!r.open||r.open.disabled||Date.now()-r.open.timestamp-1?r.open.selected+s*(t?1:-1):t?0:a-1;return l<0?l=e=="page"?0:a-1:l>=a&&(l=e=="page"?a-1:0),n.dispatch({effects:iH.of(l)}),!0}}const Qhe=t=>{let e=t.state.field(yi,!1);return t.state.readOnly||!e||!e.open||e.open.selected<0||e.open.disabled||Date.now()-e.open.timestampt.state.field(yi,!1)?(t.dispatch({effects:dy.of(!0)}),!0):!1,Vhe=t=>{let e=t.state.field(yi,!1);return!e||!e.active.some(n=>n.state!=0)?!1:(t.dispatch({effects:rp.of(null)}),!0)};class Uhe{constructor(e,n){this.active=e,this.context=n,this.time=Date.now(),this.updates=[],this.done=void 0}}const Whe=50,Ghe=1e3,Xhe=Yr.fromClass(class{constructor(t){this.view=t,this.debounceUpdate=-1,this.running=[],this.debounceAccept=-1,this.pendingStart=!1,this.composing=0;for(let e of t.state.field(yi).active)e.isPending&&this.startQuery(e)}update(t){let e=t.state.field(yi),n=t.state.facet(ws);if(!t.selectionSet&&!t.docChanged&&t.startState.field(yi)==e)return;let r=t.transactions.some(i=>{let a=sH(i,n);return a&8||(i.selection||i.docChanged)&&!(a&3)});for(let i=0;iWhe&&Date.now()-a.time>Ghe){for(let l of a.context.abortListeners)try{l()}catch(c){bi(this.view.state,c)}a.context.abortListeners=null,this.running.splice(i--,1)}else a.updates.push(...t.transactions)}this.debounceUpdate>-1&&clearTimeout(this.debounceUpdate),t.transactions.some(i=>i.effects.some(a=>a.is(dy)))&&(this.pendingStart=!0);let s=this.pendingStart?50:n.activateOnTypingDelay;if(this.debounceUpdate=e.active.some(i=>i.isPending&&!this.running.some(a=>a.active.source==i.source))?setTimeout(()=>this.startUpdate(),s):-1,this.composing!=0)for(let i of t.transactions)i.isUserEvent("input.type")?this.composing=2:this.composing==2&&i.selection&&(this.composing=3)}startUpdate(){this.debounceUpdate=-1,this.pendingStart=!1;let{state:t}=this.view,e=t.field(yi);for(let n of e.active)n.isPending&&!this.running.some(r=>r.active.source==n.source)&&this.startQuery(n);this.running.length&&e.open&&e.open.disabled&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(ws).updateSyncTime))}startQuery(t){let{state:e}=this.view,n=sd(e),r=new tH(e,n,t.explicit,this.view),s=new Uhe(t,r);this.running.push(s),Promise.resolve(t.source(r)).then(i=>{s.context.aborted||(s.done=i||null,this.scheduleAccept())},i=>{this.view.dispatch({effects:rp.of(null)}),bi(this.view.state,i)})}scheduleAccept(){this.running.every(t=>t.done!==void 0)?this.accept():this.debounceAccept<0&&(this.debounceAccept=setTimeout(()=>this.accept(),this.view.state.facet(ws).updateSyncTime))}accept(){var t;this.debounceAccept>-1&&clearTimeout(this.debounceAccept),this.debounceAccept=-1;let e=[],n=this.view.state.facet(ws),r=this.view.state.field(yi);for(let s=0;sl.source==i.active.source);if(a&&a.isPending)if(i.done==null){let l=new Oa(i.active.source,0);for(let c of i.updates)l=l.update(c,n);l.isPending||e.push(l)}else this.startQuery(a)}(e.length||r.open&&r.open.disabled)&&this.view.dispatch({effects:L6.of(e)})}},{eventHandlers:{blur(t){let e=this.view.state.field(yi,!1);if(e&&e.tooltip&&this.view.state.facet(ws).closeOnBlur){let n=e.open&&Rq(this.view,e.open.tooltip);(!n||!n.dom.contains(t.relatedTarget))&&setTimeout(()=>this.view.dispatch({effects:rp.of(null)}),10)}},compositionstart(){this.composing=1},compositionend(){this.composing==3&&setTimeout(()=>this.view.dispatch({effects:dy.of(!1)}),20),this.composing=0}}}),Yhe=typeof navigator=="object"&&/Win/.test(navigator.platform),Khe=uu.highest(Ze.domEventHandlers({keydown(t,e){let n=e.state.field(yi,!1);if(!n||!n.open||n.open.disabled||n.open.selected<0||t.key.length>1||t.ctrlKey&&!(Yhe&&t.altKey)||t.metaKey)return!1;let r=n.open.options[n.open.selected],s=n.active.find(a=>a.source==r.source),i=r.completion.commitCharacters||s.result.commitCharacters;return i&&i.indexOf(t.key)>-1&&B6(e,r),!1}})),aH=Ze.baseTheme({".cm-tooltip.cm-tooltip-autocomplete":{"& > ul":{fontFamily:"monospace",whiteSpace:"nowrap",overflow:"hidden auto",maxWidth_fallback:"700px",maxWidth:"min(700px, 95vw)",minWidth:"250px",maxHeight:"10em",height:"100%",listStyle:"none",margin:0,padding:0,"& > li, & > completion-section":{padding:"1px 3px",lineHeight:1.2},"& > li":{overflowX:"hidden",textOverflow:"ellipsis",cursor:"pointer"},"& > completion-section":{display:"list-item",borderBottom:"1px solid silver",paddingLeft:"0.5em",opacity:.7}}},"&light .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#17c",color:"white"},"&light .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#777"},"&dark .cm-tooltip-autocomplete ul li[aria-selected]":{background:"#347",color:"white"},"&dark .cm-tooltip-autocomplete-disabled ul li[aria-selected]":{background:"#444"},".cm-completionListIncompleteTop:before, .cm-completionListIncompleteBottom:after":{content:'"···"',opacity:.5,display:"block",textAlign:"center"},".cm-tooltip.cm-completionInfo":{position:"absolute",padding:"3px 9px",width:"max-content",maxWidth:"400px",boxSizing:"border-box",whiteSpace:"pre-line"},".cm-completionInfo.cm-completionInfo-left":{right:"100%"},".cm-completionInfo.cm-completionInfo-right":{left:"100%"},".cm-completionInfo.cm-completionInfo-left-narrow":{right:"30px"},".cm-completionInfo.cm-completionInfo-right-narrow":{left:"30px"},"&light .cm-snippetField":{backgroundColor:"#00000022"},"&dark .cm-snippetField":{backgroundColor:"#ffffff22"},".cm-snippetFieldPosition":{verticalAlign:"text-top",width:0,height:"1.15em",display:"inline-block",margin:"0 -0.7px -.7em",borderLeft:"1.4px dotted #888"},".cm-completionMatchedText":{textDecoration:"underline"},".cm-completionDetail":{marginLeft:"0.5em",fontStyle:"italic"},".cm-completionIcon":{fontSize:"90%",width:".8em",display:"inline-block",textAlign:"center",paddingRight:".6em",opacity:"0.6",boxSizing:"content-box"},".cm-completionIcon-function, .cm-completionIcon-method":{"&:after":{content:"'ƒ'"}},".cm-completionIcon-class":{"&:after":{content:"'○'"}},".cm-completionIcon-interface":{"&:after":{content:"'◌'"}},".cm-completionIcon-variable":{"&:after":{content:"'𝑥'"}},".cm-completionIcon-constant":{"&:after":{content:"'𝐶'"}},".cm-completionIcon-type":{"&:after":{content:"'𝑡'"}},".cm-completionIcon-enum":{"&:after":{content:"'∪'"}},".cm-completionIcon-property":{"&:after":{content:"'□'"}},".cm-completionIcon-keyword":{"&:after":{content:"'🔑︎'"}},".cm-completionIcon-namespace":{"&:after":{content:"'▢'"}},".cm-completionIcon-text":{"&:after":{content:"'abc'",fontSize:"50%",verticalAlign:"middle"}}});class Zhe{constructor(e,n,r,s){this.field=e,this.line=n,this.from=r,this.to=s}}class F6{constructor(e,n,r){this.field=e,this.from=n,this.to=r}map(e){let n=e.mapPos(this.from,-1,Ds.TrackDel),r=e.mapPos(this.to,1,Ds.TrackDel);return n==null||r==null?null:new F6(this.field,n,r)}}class q6{constructor(e,n){this.lines=e,this.fieldPositions=n}instantiate(e,n){let r=[],s=[n],i=e.doc.lineAt(n),a=/^\s*/.exec(i.text)[0];for(let c of this.lines){if(r.length){let d=a,h=/^\t*/.exec(c)[0].length;for(let m=0;mnew F6(c.field,s[c.line]+c.from,s[c.line]+c.to));return{text:r,ranges:l}}static parse(e){let n=[],r=[],s=[],i;for(let a of e.split(/\r\n?|\n/)){for(;i=/[#$]\{(?:(\d+)(?::([^{}]*))?|((?:\\[{}]|[^{}])*))\}/.exec(a);){let l=i[1]?+i[1]:null,c=i[2]||i[3]||"",d=-1,h=c.replace(/\\[{}]/g,m=>m[1]);for(let m=0;m=d&&g.field++}for(let m of s)if(m.line==r.length&&m.from>i.index){let g=i[2]?3+(i[1]||"").length:2;m.from-=g,m.to-=g}s.push(new Zhe(d,r.length,i.index,i.index+h.length)),a=a.slice(0,i.index)+c+a.slice(i.index+i[0].length)}a=a.replace(/\\([{}])/g,(l,c,d)=>{for(let h of s)h.line==r.length&&h.from>d&&(h.from--,h.to--);return c}),r.push(a)}return new q6(r,s)}}let Jhe=Ot.widget({widget:new class extends Uo{toDOM(){let t=document.createElement("span");return t.className="cm-snippetFieldPosition",t}ignoreEvent(){return!1}}}),efe=Ot.mark({class:"cm-snippetField"});class _f{constructor(e,n){this.ranges=e,this.active=n,this.deco=Ot.set(e.map(r=>(r.from==r.to?Jhe:efe).range(r.from,r.to)),!0)}map(e){let n=[];for(let r of this.ranges){let s=r.map(e);if(!s)return null;n.push(s)}return new _f(n,this.active)}selectionInsideField(e){return e.ranges.every(n=>this.ranges.some(r=>r.field==this.active&&r.from<=n.from&&r.to>=n.to))}}const rg=Qt.define({map(t,e){return t&&t.map(e)}}),tfe=Qt.define(),sp=Os.define({create(){return null},update(t,e){for(let n of e.effects){if(n.is(rg))return n.value;if(n.is(tfe)&&t)return new _f(t.ranges,n.value)}return t&&e.docChanged&&(t=t.map(e.changes)),t&&e.selection&&!t.selectionInsideField(e.selection)&&(t=null),t},provide:t=>Ze.decorations.from(t,e=>e?e.deco:Ot.none)});function $6(t,e){return Me.create(t.filter(n=>n.field==e).map(n=>Me.range(n.from,n.to)))}function nfe(t){let e=q6.parse(t);return(n,r,s,i)=>{let{text:a,ranges:l}=e.instantiate(n.state,s),{main:c}=n.state.selection,d={changes:{from:s,to:i==c.from?c.to:i,insert:An.of(a)},scrollIntoView:!0,annotations:r?[I6.of(r),ss.userEvent.of("input.complete")]:void 0};if(l.length&&(d.selection=$6(l,0)),l.some(h=>h.field>0)){let h=new _f(l,0),m=d.effects=[rg.of(h)];n.state.field(sp,!1)===void 0&&m.push(Qt.appendConfig.of([sp,ofe,lfe,aH]))}n.dispatch(n.state.update(d))}}function oH(t){return({state:e,dispatch:n})=>{let r=e.field(sp,!1);if(!r||t<0&&r.active==0)return!1;let s=r.active+t,i=t>0&&!r.ranges.some(a=>a.field==s+t);return n(e.update({selection:$6(r.ranges,s),effects:rg.of(i?null:new _f(r.ranges,s)),scrollIntoView:!0})),!0}}const rfe=({state:t,dispatch:e})=>t.field(sp,!1)?(e(t.update({effects:rg.of(null)})),!0):!1,sfe=oH(1),ife=oH(-1),afe=[{key:"Tab",run:sfe,shift:ife},{key:"Escape",run:rfe}],G_=st.define({combine(t){return t.length?t[0]:afe}}),ofe=uu.highest(Yp.compute([G_],t=>t.facet(G_)));function wl(t,e){return{...e,apply:nfe(t)}}const lfe=Ze.domEventHandlers({mousedown(t,e){let n=e.state.field(sp,!1),r;if(!n||(r=e.posAtCoords({x:t.clientX,y:t.clientY}))==null)return!1;let s=n.ranges.find(i=>i.from<=r&&i.to>=r);return!s||s.field==n.active?!1:(e.dispatch({selection:$6(n.ranges,s.field),effects:rg.of(n.ranges.some(i=>i.field>s.field)?new _f(n.ranges,s.field):null),scrollIntoView:!0}),!0)}}),ip={brackets:["(","[","{","'",'"'],before:")]}:;>",stringPrefixes:[]},Gu=Qt.define({map(t,e){let n=e.mapPos(t,-1,Ds.TrackAfter);return n??void 0}}),H6=new class extends od{};H6.startSide=1;H6.endSide=-1;const lH=Os.define({create(){return Bn.empty},update(t,e){if(t=t.map(e.changes),e.selection){let n=e.state.doc.lineAt(e.selection.main.head);t=t.update({filter:r=>r>=n.from&&r<=n.to})}for(let n of e.effects)n.is(Gu)&&(t=t.update({add:[H6.range(n.value,n.value+1)]}));return t}});function cfe(){return[dfe,lH]}const lS="()[]{}<>«»»«[]{}";function cH(t){for(let e=0;e{if((ufe?t.composing:t.compositionStarted)||t.state.readOnly)return!1;let s=t.state.selection.main;if(r.length>2||r.length==2&&ko(vi(r,0))==1||e!=s.from||n!=s.to)return!1;let i=mfe(t.state,r);return i?(t.dispatch(i),!0):!1}),hfe=({state:t,dispatch:e})=>{if(t.readOnly)return!1;let r=uH(t,t.selection.main.head).brackets||ip.brackets,s=null,i=t.changeByRange(a=>{if(a.empty){let l=pfe(t.doc,a.head);for(let c of r)if(c==l&&Ob(t.doc,a.head)==cH(vi(c,0)))return{changes:{from:a.head-c.length,to:a.head+c.length},range:Me.cursor(a.head-c.length)}}return{range:s=a}});return s||e(t.update(i,{scrollIntoView:!0,userEvent:"delete.backward"})),!s},ffe=[{key:"Backspace",run:hfe}];function mfe(t,e){let n=uH(t,t.selection.main.head),r=n.brackets||ip.brackets;for(let s of r){let i=cH(vi(s,0));if(e==s)return i==s?vfe(t,s,r.indexOf(s+s+s)>-1,n):gfe(t,s,i,n.before||ip.before);if(e==i&&dH(t,t.selection.main.from))return xfe(t,s,i)}return null}function dH(t,e){let n=!1;return t.field(lH).between(0,t.doc.length,r=>{r==e&&(n=!0)}),n}function Ob(t,e){let n=t.sliceString(e,e+2);return n.slice(0,ko(vi(n,0)))}function pfe(t,e){let n=t.sliceString(e-2,e);return ko(vi(n,0))==n.length?n:n.slice(1)}function gfe(t,e,n,r){let s=null,i=t.changeByRange(a=>{if(!a.empty)return{changes:[{insert:e,from:a.from},{insert:n,from:a.to}],effects:Gu.of(a.to+e.length),range:Me.range(a.anchor+e.length,a.head+e.length)};let l=Ob(t.doc,a.head);return!l||/\s/.test(l)||r.indexOf(l)>-1?{changes:{insert:e+n,from:a.head},effects:Gu.of(a.head+e.length),range:Me.cursor(a.head+e.length)}:{range:s=a}});return s?null:t.update(i,{scrollIntoView:!0,userEvent:"input.type"})}function xfe(t,e,n){let r=null,s=t.changeByRange(i=>i.empty&&Ob(t.doc,i.head)==n?{changes:{from:i.head,to:i.head+n.length,insert:n},range:Me.cursor(i.head+n.length)}:r={range:i});return r?null:t.update(s,{scrollIntoView:!0,userEvent:"input.type"})}function vfe(t,e,n,r){let s=r.stringPrefixes||ip.stringPrefixes,i=null,a=t.changeByRange(l=>{if(!l.empty)return{changes:[{insert:e,from:l.from},{insert:e,from:l.to}],effects:Gu.of(l.to+e.length),range:Me.range(l.anchor+e.length,l.head+e.length)};let c=l.head,d=Ob(t.doc,c),h;if(d==e){if(X_(t,c))return{changes:{insert:e+e,from:c},effects:Gu.of(c+e.length),range:Me.cursor(c+e.length)};if(dH(t,c)){let g=n&&t.sliceDoc(c,c+e.length*3)==e+e+e?e+e+e:e;return{changes:{from:c,to:c+g.length,insert:g},range:Me.cursor(c+g.length)}}}else{if(n&&t.sliceDoc(c-2*e.length,c)==e+e&&(h=Y_(t,c-2*e.length,s))>-1&&X_(t,h))return{changes:{insert:e+e+e+e,from:c},effects:Gu.of(c+e.length),range:Me.cursor(c+e.length)};if(t.charCategorizer(c)(d)!=Tr.Word&&Y_(t,c,s)>-1&&!yfe(t,c,e,s))return{changes:{insert:e+e,from:c},effects:Gu.of(c+e.length),range:Me.cursor(c+e.length)}}return{range:i=l}});return i?null:t.update(a,{scrollIntoView:!0,userEvent:"input.type"})}function X_(t,e){let n=Ss(t).resolveInner(e+1);return n.parent&&n.from==e}function yfe(t,e,n,r){let s=Ss(t).resolveInner(e,-1),i=r.reduce((a,l)=>Math.max(a,l.length),0);for(let a=0;a<5;a++){let l=t.sliceDoc(s.from,Math.min(s.to,s.from+n.length+i)),c=l.indexOf(n);if(!c||c>-1&&r.indexOf(l.slice(0,c))>-1){let h=s.firstChild;for(;h&&h.from==s.from&&h.to-h.from>n.length+c;){if(t.sliceDoc(h.to-n.length,h.to)==n)return!1;h=h.firstChild}return!0}let d=s.to==e&&s.parent;if(!d)break;s=d}return!1}function Y_(t,e,n){let r=t.charCategorizer(e);if(r(t.sliceDoc(e-1,e))!=Tr.Word)return e;for(let s of n){let i=e-s.length;if(t.sliceDoc(i,e)==s&&r(t.sliceDoc(i-1,i))!=Tr.Word)return i}return-1}function bfe(t={}){return[Khe,yi,ws.of(t),Xhe,wfe,aH]}const hH=[{key:"Ctrl-Space",run:oS},{mac:"Alt-`",run:oS},{mac:"Alt-i",run:oS},{key:"Escape",run:Vhe},{key:"ArrowDown",run:j1(!0)},{key:"ArrowUp",run:j1(!1)},{key:"PageDown",run:j1(!0,"page")},{key:"PageUp",run:j1(!1,"page")},{key:"Enter",run:Qhe}],wfe=uu.highest(Yp.computeN([ws],t=>t.facet(ws).defaultKeymap?[hH]:[]));class K_{constructor(e,n,r){this.from=e,this.to=n,this.diagnostic=r}}class Qu{constructor(e,n,r){this.diagnostics=e,this.panel=n,this.selected=r}static init(e,n,r){let s=r.facet(ap).markerFilter;s&&(e=s(e,r));let i=e.slice().sort((x,y)=>x.from-y.from||x.to-y.to),a=new Hl,l=[],c=0,d=r.doc.iter(),h=0,m=r.doc.length;for(let x=0;;){let y=x==i.length?null:i[x];if(!y&&!l.length)break;let w,S;if(l.length)w=c,S=l.reduce((N,T)=>Math.min(N,T.to),y&&y.from>w?y.from:1e8);else{if(w=y.from,w>m)break;S=y.to,l.push(y),x++}for(;xN.from||N.to==w))l.push(N),x++,S=Math.min(N.to,S);else{S=Math.min(N.from,S);break}}S=Math.min(S,m);let k=!1;if(l.some(N=>N.from==w&&(N.to==S||S==m))&&(k=w==S,!k&&S-w<10)){let N=w-(h+d.value.length);N>0&&(d.next(N),h=w);for(let T=w;;){if(T>=S){k=!0;break}if(!d.lineBreak&&h+d.value.length>T)break;T=h+d.value.length,h+=d.value.length,d.next()}}let j=Dfe(l);if(k)a.add(w,w,Ot.widget({widget:new _fe(j),diagnostics:l.slice()}));else{let N=l.reduce((T,E)=>E.markClass?T+" "+E.markClass:T,"");a.add(w,S,Ot.mark({class:"cm-lintRange cm-lintRange-"+j+N,diagnostics:l.slice(),inclusiveEnd:l.some(T=>T.to>S)}))}if(c=S,c==m)break;for(let N=0;N{if(!(e&&a.diagnostics.indexOf(e)<0))if(!r)r=new K_(s,i,e||a.diagnostics[0]);else{if(a.diagnostics.indexOf(r.diagnostic)<0)return!1;r=new K_(r.from,i,r.diagnostic)}}),r}function Sfe(t,e){let n=e.pos,r=e.end||n,s=t.state.facet(ap).hideOn(t,n,r);if(s!=null)return s;let i=t.startState.doc.lineAt(e.pos);return!!(t.effects.some(a=>a.is(fH))||t.changes.touchesRange(i.from,Math.max(i.to,r)))}function kfe(t,e){return t.field(Wi,!1)?e:e.concat(Qt.appendConfig.of(Pfe))}const fH=Qt.define(),Q6=Qt.define(),mH=Qt.define(),Wi=Os.define({create(){return new Qu(Ot.none,null,null)},update(t,e){if(e.docChanged&&t.diagnostics.size){let n=t.diagnostics.map(e.changes),r=null,s=t.panel;if(t.selected){let i=e.changes.mapPos(t.selected.from,1);r=of(n,t.selected.diagnostic,i)||of(n,null,i)}!n.size&&s&&e.state.facet(ap).autoPanel&&(s=null),t=new Qu(n,s,r)}for(let n of e.effects)if(n.is(fH)){let r=e.state.facet(ap).autoPanel?n.value.length?op.open:null:t.panel;t=Qu.init(n.value,r,e.state)}else n.is(Q6)?t=new Qu(t.diagnostics,n.value?op.open:null,t.selected):n.is(mH)&&(t=new Qu(t.diagnostics,t.panel,n.value));return t},provide:t=>[Y0.from(t,e=>e.panel),Ze.decorations.from(t,e=>e.diagnostics)]}),Ofe=Ot.mark({class:"cm-lintRange cm-lintRange-active"});function jfe(t,e,n){let{diagnostics:r}=t.state.field(Wi),s,i=-1,a=-1;r.between(e-(n<0?1:0),e+(n>0?1:0),(c,d,{spec:h})=>{if(e>=c&&e<=d&&(c==d||(e>c||n>0)&&(egH(t,n,!1)))}const Cfe=t=>{let e=t.state.field(Wi,!1);(!e||!e.panel)&&t.dispatch({effects:kfe(t.state,[Q6.of(!0)])});let n=X0(t,op.open);return n&&n.dom.querySelector(".cm-panel-lint ul").focus(),!0},Z_=t=>{let e=t.state.field(Wi,!1);return!e||!e.panel?!1:(t.dispatch({effects:Q6.of(!1)}),!0)},Tfe=t=>{let e=t.state.field(Wi,!1);if(!e)return!1;let n=t.state.selection.main,r=e.diagnostics.iter(n.to+1);return!r.value&&(r=e.diagnostics.iter(0),!r.value||r.from==n.from&&r.to==n.to)?!1:(t.dispatch({selection:{anchor:r.from,head:r.to},scrollIntoView:!0}),!0)},Efe=[{key:"Mod-Shift-m",run:Cfe,preventDefault:!0},{key:"F8",run:Tfe}],ap=st.define({combine(t){return{sources:t.map(e=>e.source).filter(e=>e!=null),...Vo(t.map(e=>e.config),{delay:750,markerFilter:null,tooltipFilter:null,needsRefresh:null,hideOn:()=>null},{delay:Math.max,markerFilter:J_,tooltipFilter:J_,needsRefresh:(e,n)=>e?n?r=>e(r)||n(r):e:n,hideOn:(e,n)=>e?n?(r,s,i)=>e(r,s,i)||n(r,s,i):e:n,autoPanel:(e,n)=>e||n})}}});function J_(t,e){return t?e?(n,r)=>e(t(n,r),r):t:e}function pH(t){let e=[];if(t)e:for(let{name:n}of t){for(let r=0;ri.toLowerCase()==s.toLowerCase())){e.push(s);continue e}}e.push("")}return e}function gH(t,e,n){var r;let s=n?pH(e.actions):[];return lr("li",{class:"cm-diagnostic cm-diagnostic-"+e.severity},lr("span",{class:"cm-diagnosticText"},e.renderMessage?e.renderMessage(t):e.message),(r=e.actions)===null||r===void 0?void 0:r.map((i,a)=>{let l=!1,c=x=>{if(x.preventDefault(),l)return;l=!0;let y=of(t.state.field(Wi).diagnostics,e);y&&i.apply(t,y.from,y.to)},{name:d}=i,h=s[a]?d.indexOf(s[a]):-1,m=h<0?d:[d.slice(0,h),lr("u",d.slice(h,h+1)),d.slice(h+1)],g=i.markClass?" "+i.markClass:"";return lr("button",{type:"button",class:"cm-diagnosticAction"+g,onclick:c,onmousedown:c,"aria-label":` Action: ${d}${h<0?"":` (access key "${s[a]})"`}.`},m)}),e.source&&lr("div",{class:"cm-diagnosticSource"},e.source))}class _fe extends Uo{constructor(e){super(),this.sev=e}eq(e){return e.sev==this.sev}toDOM(){return lr("span",{class:"cm-lintPoint cm-lintPoint-"+this.sev})}}class eA{constructor(e,n){this.diagnostic=n,this.id="item_"+Math.floor(Math.random()*4294967295).toString(16),this.dom=gH(e,n,!0),this.dom.id=this.id,this.dom.setAttribute("role","option")}}class op{constructor(e){this.view=e,this.items=[];let n=s=>{if(s.keyCode==27)Z_(this.view),this.view.focus();else if(s.keyCode==38||s.keyCode==33)this.moveSelection((this.selectedIndex-1+this.items.length)%this.items.length);else if(s.keyCode==40||s.keyCode==34)this.moveSelection((this.selectedIndex+1)%this.items.length);else if(s.keyCode==36)this.moveSelection(0);else if(s.keyCode==35)this.moveSelection(this.items.length-1);else if(s.keyCode==13)this.view.focus();else if(s.keyCode>=65&&s.keyCode<=90&&this.selectedIndex>=0){let{diagnostic:i}=this.items[this.selectedIndex],a=pH(i.actions);for(let l=0;l{for(let i=0;iZ_(this.view)},"×")),this.update()}get selectedIndex(){let e=this.view.state.field(Wi).selected;if(!e)return-1;for(let n=0;n{for(let h of d.diagnostics){if(a.has(h))continue;a.add(h);let m=-1,g;for(let x=r;xr&&(this.items.splice(r,m-r),s=!0)),n&&g.diagnostic==n.diagnostic?g.dom.hasAttribute("aria-selected")||(g.dom.setAttribute("aria-selected","true"),i=g):g.dom.hasAttribute("aria-selected")&&g.dom.removeAttribute("aria-selected"),r++}});r({sel:i.dom.getBoundingClientRect(),panel:this.list.getBoundingClientRect()}),write:({sel:l,panel:c})=>{let d=c.height/this.list.offsetHeight;l.topc.bottom&&(this.list.scrollTop+=(l.bottom-c.bottom)/d)}})):this.selectedIndex<0&&this.list.removeAttribute("aria-activedescendant"),s&&this.sync()}sync(){let e=this.list.firstChild;function n(){let r=e;e=r.nextSibling,r.remove()}for(let r of this.items)if(r.dom.parentNode==this.list){for(;e!=r.dom;)n();e=r.dom.nextSibling}else this.list.insertBefore(r.dom,e);for(;e;)n()}moveSelection(e){if(this.selectedIndex<0)return;let n=this.view.state.field(Wi),r=of(n.diagnostics,this.items[e].diagnostic);r&&this.view.dispatch({selection:{anchor:r.from,head:r.to},scrollIntoView:!0,effects:mH.of(r)})}static open(e){return new op(e)}}function Afe(t,e='viewBox="0 0 40 40"'){return`url('data:image/svg+xml,${encodeURIComponent(t)}')`}function N1(t){return Afe(``,'width="6" height="3"')}const Mfe=Ze.baseTheme({".cm-diagnostic":{padding:"3px 6px 3px 8px",marginLeft:"-1px",display:"block",whiteSpace:"pre-wrap"},".cm-diagnostic-error":{borderLeft:"5px solid #d11"},".cm-diagnostic-warning":{borderLeft:"5px solid orange"},".cm-diagnostic-info":{borderLeft:"5px solid #999"},".cm-diagnostic-hint":{borderLeft:"5px solid #66d"},".cm-diagnosticAction":{font:"inherit",border:"none",padding:"2px 4px",backgroundColor:"#444",color:"white",borderRadius:"3px",marginLeft:"8px",cursor:"pointer"},".cm-diagnosticSource":{fontSize:"70%",opacity:.7},".cm-lintRange":{backgroundPosition:"left bottom",backgroundRepeat:"repeat-x",paddingBottom:"0.7px"},".cm-lintRange-error":{backgroundImage:N1("#d11")},".cm-lintRange-warning":{backgroundImage:N1("orange")},".cm-lintRange-info":{backgroundImage:N1("#999")},".cm-lintRange-hint":{backgroundImage:N1("#66d")},".cm-lintRange-active":{backgroundColor:"#ffdd9980"},".cm-tooltip-lint":{padding:0,margin:0},".cm-lintPoint":{position:"relative","&:after":{content:'""',position:"absolute",bottom:0,left:"-2px",borderLeft:"3px solid transparent",borderRight:"3px solid transparent",borderBottom:"4px solid #d11"}},".cm-lintPoint-warning":{"&:after":{borderBottomColor:"orange"}},".cm-lintPoint-info":{"&:after":{borderBottomColor:"#999"}},".cm-lintPoint-hint":{"&:after":{borderBottomColor:"#66d"}},".cm-panel.cm-panel-lint":{position:"relative","& ul":{maxHeight:"100px",overflowY:"auto","& [aria-selected]":{backgroundColor:"#ddd","& u":{textDecoration:"underline"}},"&:focus [aria-selected]":{background_fallback:"#bdf",backgroundColor:"Highlight",color_fallback:"white",color:"HighlightText"},"& u":{textDecoration:"none"},padding:0,margin:0},"& [name=close]":{position:"absolute",top:"0",right:"2px",background:"inherit",border:"none",font:"inherit",padding:0,margin:0}}});function Rfe(t){return t=="error"?4:t=="warning"?3:t=="info"?2:1}function Dfe(t){let e="hint",n=1;for(let r of t){let s=Rfe(r.severity);s>n&&(n=s,e=r.severity)}return e}const Pfe=[Wi,Ze.decorations.compute([Wi],t=>{let{selected:e,panel:n}=t.field(Wi);return!e||!n||e.from==e.to?Ot.none:Ot.set([Ofe.range(e.from,e.to)])}),gce(jfe,{hideOn:Sfe}),Mfe];var tA=function(e){e===void 0&&(e={});var{crosshairCursor:n=!1}=e,r=[];e.closeBracketsKeymap!==!1&&(r=r.concat(ffe)),e.defaultKeymap!==!1&&(r=r.concat(Yde)),e.searchKeymap!==!1&&(r=r.concat(She)),e.historyKeymap!==!1&&(r=r.concat(rde)),e.foldKeymap!==!1&&(r=r.concat(fue)),e.completionKeymap!==!1&&(r=r.concat(hH)),e.lintKeymap!==!1&&(r=r.concat(Efe));var s=[];return e.lineNumbers!==!1&&s.push(Cce()),e.highlightActiveLineGutter!==!1&&s.push(_ce()),e.highlightSpecialChars!==!1&&s.push(Vle()),e.history!==!1&&s.push(Gue()),e.foldGutter!==!1&&s.push(xue()),e.drawSelection!==!1&&s.push(Dle()),e.dropCursor!==!1&&s.push(Ble()),e.allowMultipleSelections!==!1&&s.push(Nn.allowMultipleSelections.of(!0)),e.indentOnInput!==!1&&s.push(sue()),e.syntaxHighlighting!==!1&&s.push(r$(wue,{fallback:!0})),e.bracketMatching!==!1&&s.push(Tue()),e.closeBrackets!==!1&&s.push(cfe()),e.autocompletion!==!1&&s.push(bfe()),e.rectangularSelection!==!1&&s.push(ice()),n!==!1&&s.push(lce()),e.highlightActiveLine!==!1&&s.push(Kle()),e.highlightSelectionMatches!==!1&&s.push(rhe()),e.tabSize&&typeof e.tabSize=="number"&&s.push(Zp.of(" ".repeat(e.tabSize))),s.concat([Yp.of(r.flat())]).filter(Boolean)};const zfe="#e5c07b",nA="#e06c75",Ife="#56b6c2",Lfe="#ffffff",bv="#abb2bf",gO="#7d8799",Bfe="#61afef",Ffe="#98c379",rA="#d19a66",qfe="#c678dd",$fe="#21252b",sA="#2c313a",iA="#282c34",cS="#353a42",Hfe="#3E4451",aA="#528bff",Qfe=Ze.theme({"&":{color:bv,backgroundColor:iA},".cm-content":{caretColor:aA},".cm-cursor, .cm-dropCursor":{borderLeftColor:aA},"&.cm-focused > .cm-scroller > .cm-selectionLayer .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection":{backgroundColor:Hfe},".cm-panels":{backgroundColor:$fe,color:bv},".cm-panels.cm-panels-top":{borderBottom:"2px solid black"},".cm-panels.cm-panels-bottom":{borderTop:"2px solid black"},".cm-searchMatch":{backgroundColor:"#72a1ff59",outline:"1px solid #457dff"},".cm-searchMatch.cm-searchMatch-selected":{backgroundColor:"#6199ff2f"},".cm-activeLine":{backgroundColor:"#6699ff0b"},".cm-selectionMatch":{backgroundColor:"#aafe661a"},"&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket":{backgroundColor:"#bad0f847"},".cm-gutters":{backgroundColor:iA,color:gO,border:"none"},".cm-activeLineGutter":{backgroundColor:sA},".cm-foldPlaceholder":{backgroundColor:"transparent",border:"none",color:"#ddd"},".cm-tooltip":{border:"none",backgroundColor:cS},".cm-tooltip .cm-tooltip-arrow:before":{borderTopColor:"transparent",borderBottomColor:"transparent"},".cm-tooltip .cm-tooltip-arrow:after":{borderTopColor:cS,borderBottomColor:cS},".cm-tooltip-autocomplete":{"& > ul > li[aria-selected]":{backgroundColor:sA,color:bv}}},{dark:!0}),Vfe=eg.define([{tag:ye.keyword,color:qfe},{tag:[ye.name,ye.deleted,ye.character,ye.propertyName,ye.macroName],color:nA},{tag:[ye.function(ye.variableName),ye.labelName],color:Bfe},{tag:[ye.color,ye.constant(ye.name),ye.standard(ye.name)],color:rA},{tag:[ye.definition(ye.name),ye.separator],color:bv},{tag:[ye.typeName,ye.className,ye.number,ye.changed,ye.annotation,ye.modifier,ye.self,ye.namespace],color:zfe},{tag:[ye.operator,ye.operatorKeyword,ye.url,ye.escape,ye.regexp,ye.link,ye.special(ye.string)],color:Ife},{tag:[ye.meta,ye.comment],color:gO},{tag:ye.strong,fontWeight:"bold"},{tag:ye.emphasis,fontStyle:"italic"},{tag:ye.strikethrough,textDecoration:"line-through"},{tag:ye.link,color:gO,textDecoration:"underline"},{tag:ye.heading,fontWeight:"bold",color:nA},{tag:[ye.atom,ye.bool,ye.special(ye.variableName)],color:rA},{tag:[ye.processingInstruction,ye.string,ye.inserted],color:Ffe},{tag:ye.invalid,color:Lfe}]),xH=[Qfe,r$(Vfe)];var Ufe=Ze.theme({"&":{backgroundColor:"#fff"}},{dark:!1}),Wfe=function(e){e===void 0&&(e={});var{indentWithTab:n=!0,editable:r=!0,readOnly:s=!1,theme:i="light",placeholder:a="",basicSetup:l=!0}=e,c=[];switch(n&&c.unshift(Yp.of([Kde])),l&&(typeof l=="boolean"?c.unshift(tA()):c.unshift(tA(l))),a&&c.unshift(tce(a)),i){case"light":c.push(Ufe);break;case"dark":c.push(xH);break;case"none":break;default:c.push(i);break}return r===!1&&c.push(Ze.editable.of(!1)),s&&c.push(Nn.readOnly.of(!0)),[...c]},Gfe=t=>({line:t.state.doc.lineAt(t.state.selection.main.from),lineCount:t.state.doc.lines,lineBreak:t.state.lineBreak,length:t.state.doc.length,readOnly:t.state.readOnly,tabSize:t.state.tabSize,selection:t.state.selection,selectionAsSingle:t.state.selection.asSingle().main,ranges:t.state.selection.ranges,selectionCode:t.state.sliceDoc(t.state.selection.main.from,t.state.selection.main.to),selections:t.state.selection.ranges.map(e=>t.state.sliceDoc(e.from,e.to)),selectedText:t.state.selection.ranges.some(e=>!e.empty)});class Xfe{constructor(e,n){this.timeLeftMS=void 0,this.timeoutMS=void 0,this.isCancelled=!1,this.isTimeExhausted=!1,this.callbacks=[],this.timeLeftMS=n,this.timeoutMS=n,this.callbacks.push(e)}tick(){if(!this.isCancelled&&!this.isTimeExhausted&&(this.timeLeftMS--,this.timeLeftMS<=0)){this.isTimeExhausted=!0;var e=this.callbacks.slice();this.callbacks.length=0,e.forEach(n=>{try{n()}catch(r){console.error("TimeoutLatch callback error:",r)}})}}cancel(){this.isCancelled=!0,this.callbacks.length=0}reset(){this.timeLeftMS=this.timeoutMS,this.isCancelled=!1,this.isTimeExhausted=!1}get isDone(){return this.isCancelled||this.isTimeExhausted}}class oA{constructor(){this.interval=null,this.latches=new Set}add(e){this.latches.add(e),this.start()}remove(e){this.latches.delete(e),this.latches.size===0&&this.stop()}start(){this.interval===null&&(this.interval=setInterval(()=>{this.latches.forEach(e=>{e.tick(),e.isDone&&this.remove(e)})},1))}stop(){this.interval!==null&&(clearInterval(this.interval),this.interval=null)}}var uS=null,Yfe=()=>typeof window>"u"?new oA:(uS||(uS=new oA),uS),lA=Qo.define(),Kfe=200,Zfe=[];function Jfe(t){var{value:e,selection:n,onChange:r,onStatistics:s,onCreateEditor:i,onUpdate:a,extensions:l=Zfe,autoFocus:c,theme:d="light",height:h=null,minHeight:m=null,maxHeight:g=null,width:x=null,minWidth:y=null,maxWidth:w=null,placeholder:S="",editable:k=!0,readOnly:j=!1,indentWithTab:N=!0,basicSetup:T=!0,root:E,initialState:_}=t,[A,D]=b.useState(),[q,B]=b.useState(),[H,W]=b.useState(),ee=b.useState(()=>({current:null}))[0],I=b.useState(()=>({current:null}))[0],V=Ze.theme({"&":{height:h,minHeight:m,maxHeight:g,width:x,minWidth:y,maxWidth:w},"& .cm-scroller":{height:"100% !important"}}),L=Ze.updateListener.of(Y=>{if(Y.docChanged&&typeof r=="function"&&!Y.transactions.some(X=>X.annotation(lA))){ee.current?ee.current.reset():(ee.current=new Xfe(()=>{if(I.current){var X=I.current;I.current=null,X()}ee.current=null},Kfe),Yfe().add(ee.current));var R=Y.state.doc,ie=R.toString();r(ie,Y)}s&&s(Gfe(Y))}),$=Wfe({theme:d,editable:k,readOnly:j,placeholder:S,indentWithTab:N,basicSetup:T}),K=[L,V,...$];return a&&typeof a=="function"&&K.push(Ze.updateListener.of(a)),K=K.concat(l),b.useLayoutEffect(()=>{if(A&&!H){var Y={doc:e,selection:n,extensions:K},R=_?Nn.fromJSON(_.json,Y,_.fields):Nn.create(Y);if(W(R),!q){var ie=new Ze({state:R,parent:A,root:E});B(ie),i&&i(ie,R)}}return()=>{q&&(W(void 0),B(void 0))}},[A,H]),b.useEffect(()=>{t.container&&D(t.container)},[t.container]),b.useEffect(()=>()=>{q&&(q.destroy(),B(void 0)),ee.current&&(ee.current.cancel(),ee.current=null)},[q]),b.useEffect(()=>{c&&q&&q.focus()},[c,q]),b.useEffect(()=>{q&&q.dispatch({effects:Qt.reconfigure.of(K)})},[d,l,h,m,g,x,y,w,S,k,j,N,T,r,a]),b.useEffect(()=>{if(e!==void 0){var Y=q?q.state.doc.toString():"";if(q&&e!==Y){var R=ee.current&&!ee.current.isDone,ie=()=>{q&&e!==q.state.doc.toString()&&q.dispatch({changes:{from:0,to:q.state.doc.toString().length,insert:e||""},annotations:[lA.of(!0)]})};R?I.current=ie:ie()}}},[e,q]),{state:H,setState:W,view:q,setView:B,container:A,setContainer:D}}var eme=["className","value","selection","extensions","onChange","onStatistics","onCreateEditor","onUpdate","autoFocus","theme","height","minHeight","maxHeight","width","minWidth","maxWidth","basicSetup","placeholder","indentWithTab","editable","readOnly","root","initialState"],vH=b.forwardRef((t,e)=>{var{className:n,value:r="",selection:s,extensions:i=[],onChange:a,onStatistics:l,onCreateEditor:c,onUpdate:d,autoFocus:h,theme:m="light",height:g,minHeight:x,maxHeight:y,width:w,minWidth:S,maxWidth:k,basicSetup:j,placeholder:N,indentWithTab:T,editable:E,readOnly:_,root:A,initialState:D}=t,q=zJ(t,eme),B=b.useRef(null),{state:H,view:W,container:ee,setContainer:I}=Jfe({root:A,value:r,autoFocus:h,theme:m,height:g,minHeight:x,maxHeight:y,width:w,minWidth:S,maxWidth:k,basicSetup:j,placeholder:N,indentWithTab:T,editable:E,readOnly:_,selection:s,onChange:a,onStatistics:l,onCreateEditor:c,onUpdate:d,extensions:i,initialState:D});b.useImperativeHandle(e,()=>({editor:B.current,state:H,view:W}),[B,ee,H,W]);var V=b.useCallback($=>{B.current=$,I($)},[I]);if(typeof r!="string")throw new Error("value must be typeof string but got "+typeof r);var L=typeof m=="string"?"cm-theme-"+m:"cm-theme";return o.jsx("div",IJ({ref:V,className:""+L+(n?" "+n:"")},q))});vH.displayName="CodeMirror";var cA={};class fy{constructor(e,n,r,s,i,a,l,c,d,h=0,m){this.p=e,this.stack=n,this.state=r,this.reducePos=s,this.pos=i,this.score=a,this.buffer=l,this.bufferBase=c,this.curContext=d,this.lookAhead=h,this.parent=m}toString(){return`[${this.stack.filter((e,n)=>n%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(e,n,r=0){let s=e.parser.context;return new fy(e,[],n,r,r,0,[],0,s?new uA(s,s.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(e,n){this.stack.push(this.state,n,this.bufferBase+this.buffer.length),this.state=e}reduce(e){var n;let r=e>>19,s=e&65535,{parser:i}=this.p,a=this.reducePos=2e3&&!(!((n=this.p.parser.nodeSet.types[s])===null||n===void 0)&&n.isAnonymous)&&(d==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=h):this.p.lastBigReductionSizec;)this.stack.pop();this.reduceContext(s,d)}storeNode(e,n,r,s=4,i=!1){if(e==0&&(!this.stack.length||this.stack[this.stack.length-1]0&&a.buffer[l-4]==0&&a.buffer[l-1]>-1){if(n==r)return;if(a.buffer[l-2]>=n){a.buffer[l-2]=r;return}}}if(!i||this.pos==r)this.buffer.push(e,n,r,s);else{let a=this.buffer.length;if(a>0&&(this.buffer[a-4]!=0||this.buffer[a-1]<0)){let l=!1;for(let c=a;c>0&&this.buffer[c-2]>r;c-=4)if(this.buffer[c-1]>=0){l=!0;break}if(l)for(;a>0&&this.buffer[a-2]>r;)this.buffer[a]=this.buffer[a-4],this.buffer[a+1]=this.buffer[a-3],this.buffer[a+2]=this.buffer[a-2],this.buffer[a+3]=this.buffer[a-1],a-=4,s>4&&(s-=4)}this.buffer[a]=e,this.buffer[a+1]=n,this.buffer[a+2]=r,this.buffer[a+3]=s}}shift(e,n,r,s){if(e&131072)this.pushState(e&65535,this.pos);else if((e&262144)==0){let i=e,{parser:a}=this.p;(s>this.pos||n<=a.maxNode)&&(this.pos=s,a.stateFlag(i,1)||(this.reducePos=s)),this.pushState(i,r),this.shiftContext(n,r),n<=a.maxNode&&this.buffer.push(n,r,s,4)}else this.pos=s,this.shiftContext(n,r),n<=this.p.parser.maxNode&&this.buffer.push(n,r,s,4)}apply(e,n,r,s){e&65536?this.reduce(e):this.shift(e,n,r,s)}useNode(e,n){let r=this.p.reused.length-1;(r<0||this.p.reused[r]!=e)&&(this.p.reused.push(e),r++);let s=this.pos;this.reducePos=this.pos=s+e.length,this.pushState(n,s),this.buffer.push(r,s,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,e,this,this.p.stream.reset(this.pos-e.length)))}split(){let e=this,n=e.buffer.length;for(;n>0&&e.buffer[n-2]>e.reducePos;)n-=4;let r=e.buffer.slice(n),s=e.bufferBase+n;for(;e&&s==e.bufferBase;)e=e.parent;return new fy(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,r,s,this.curContext,this.lookAhead,e)}recoverByDelete(e,n){let r=e<=this.p.parser.maxNode;r&&this.storeNode(e,this.pos,n,4),this.storeNode(0,this.pos,n,r?8:4),this.pos=this.reducePos=n,this.score-=190}canShift(e){for(let n=new tme(this);;){let r=this.p.parser.stateSlot(n.state,4)||this.p.parser.hasAction(n.state,e);if(r==0)return!1;if((r&65536)==0)return!0;n.reduce(r)}}recoverByInsert(e){if(this.stack.length>=300)return[];let n=this.p.parser.nextStates(this.state);if(n.length>8||this.stack.length>=120){let s=[];for(let i=0,a;ic&1&&l==a)||s.push(n[i],a)}n=s}let r=[];for(let s=0;s>19,s=n&65535,i=this.stack.length-r*3;if(i<0||e.getGoto(this.stack[i],s,!1)<0){let a=this.findForcedReduction();if(a==null)return!1;n=a}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(n),!0}findForcedReduction(){let{parser:e}=this.p,n=[],r=(s,i)=>{if(!n.includes(s))return n.push(s),e.allActions(s,a=>{if(!(a&393216))if(a&65536){let l=(a>>19)-i;if(l>1){let c=a&65535,d=this.stack.length-l*3;if(d>=0&&e.getGoto(this.stack[d],c,!1)>=0)return l<<19|65536|c}}else{let l=r(a,i+1);if(l!=null)return l}})};return r(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:e}=this.p;return e.data[e.stateSlot(this.state,1)]==65535&&!e.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(e){if(this.state!=e.state||this.stack.length!=e.stack.length)return!1;for(let n=0;nthis.lookAhead&&(this.emitLookAhead(),this.lookAhead=e)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}}class uA{constructor(e,n){this.tracker=e,this.context=n,this.hash=e.strict?e.hash(n):0}}class tme{constructor(e){this.start=e,this.state=e.state,this.stack=e.stack,this.base=this.stack.length}reduce(e){let n=e&65535,r=e>>19;r==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(r-1)*3;let s=this.start.p.parser.getGoto(this.stack[this.base-3],n,!0);this.state=s}}class my{constructor(e,n,r){this.stack=e,this.pos=n,this.index=r,this.buffer=e.buffer,this.index==0&&this.maybeNext()}static create(e,n=e.bufferBase+e.buffer.length){return new my(e,n,n-e.bufferBase)}maybeNext(){let e=this.stack.parent;e!=null&&(this.index=this.stack.bufferBase-e.bufferBase,this.stack=e,this.buffer=e.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new my(this.stack,this.pos,this.index)}}function C1(t,e=Uint16Array){if(typeof t!="string")return t;let n=null;for(let r=0,s=0;r=92&&a--,a>=34&&a--;let c=a-32;if(c>=46&&(c-=46,l=!0),i+=c,l)break;i*=46}n?n[s++]=i:n=new e(i)}return n}class wv{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const dA=new wv;class nme{constructor(e,n){this.input=e,this.ranges=n,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=dA,this.rangeIndex=0,this.pos=this.chunkPos=n[0].from,this.range=n[0],this.end=n[n.length-1].to,this.readNext()}resolveOffset(e,n){let r=this.range,s=this.rangeIndex,i=this.pos+e;for(;ir.to:i>=r.to;){if(s==this.ranges.length-1)return null;let a=this.ranges[++s];i+=a.from-r.to,r=a}return i}clipPos(e){if(e>=this.range.from&&ee)return Math.max(e,n.from);return this.end}peek(e){let n=this.chunkOff+e,r,s;if(n>=0&&n=this.chunk2Pos&&rl.to&&(this.chunk2=this.chunk2.slice(0,l.to-r)),s=this.chunk2.charCodeAt(0)}}return r>=this.token.lookAhead&&(this.token.lookAhead=r+1),s}acceptToken(e,n=0){let r=n?this.resolveOffset(n,-1):this.pos;if(r==null||r=this.chunk2Pos&&this.posthis.range.to?e.slice(0,this.range.to-this.pos):e,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(e=1){for(this.chunkOff+=e;this.pos+e>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();e-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=e,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(e,n){if(n?(this.token=n,n.start=e,n.lookAhead=e+1,n.value=n.extended=-1):this.token=dA,this.pos!=e){if(this.pos=e,e==this.end)return this.setDone(),this;for(;e=this.range.to;)this.range=this.ranges[++this.rangeIndex];e>=this.chunkPos&&e=this.chunkPos&&n<=this.chunkPos+this.chunk.length)return this.chunk.slice(e-this.chunkPos,n-this.chunkPos);if(e>=this.chunk2Pos&&n<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(e-this.chunk2Pos,n-this.chunk2Pos);if(e>=this.range.from&&n<=this.range.to)return this.input.read(e,n);let r="";for(let s of this.ranges){if(s.from>=n)break;s.to>e&&(r+=this.input.read(Math.max(s.from,e),Math.min(s.to,n)))}return r}}class Fh{constructor(e,n){this.data=e,this.id=n}token(e,n){let{parser:r}=n.p;rme(this.data,e,n,this.id,r.data,r.tokenPrecTable)}}Fh.prototype.contextual=Fh.prototype.fallback=Fh.prototype.extend=!1;Fh.prototype.fallback=Fh.prototype.extend=!1;class jb{constructor(e,n={}){this.token=e,this.contextual=!!n.contextual,this.fallback=!!n.fallback,this.extend=!!n.extend}}function rme(t,e,n,r,s,i){let a=0,l=1<0){let y=t[x];if(c.allows(y)&&(e.token.value==-1||e.token.value==y||sme(y,e.token.value,s,i))){e.acceptToken(y);break}}let h=e.next,m=0,g=t[a+2];if(e.next<0&&g>m&&t[d+g*3-3]==65535){a=t[d+g*3-1];continue e}for(;m>1,y=d+x+(x<<1),w=t[y],S=t[y+1]||65536;if(h=S)m=x+1;else{a=t[y+2],e.advance();continue e}}break}}function hA(t,e,n){for(let r=e,s;(s=t[r])!=65535;r++)if(s==n)return r-e;return-1}function sme(t,e,n,r){let s=hA(n,r,e);return s<0||hA(n,r,t)e)&&!r.type.isError)return n<0?Math.max(0,Math.min(r.to-1,e-25)):Math.min(t.length,Math.max(r.from+1,e+25));if(n<0?r.prevSibling():r.nextSibling())break;if(!r.parent())return n<0?0:t.length}}class ime{constructor(e,n){this.fragments=e,this.nodeSet=n,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let e=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(e){for(this.safeFrom=e.openStart?fA(e.tree,e.from+e.offset,1)-e.offset:e.from,this.safeTo=e.openEnd?fA(e.tree,e.to+e.offset,-1)-e.offset:e.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(e.tree),this.start.push(-e.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(e){if(ee)return this.nextStart=a,null;if(i instanceof ur){if(a==e){if(a=Math.max(this.safeFrom,e)&&(this.trees.push(i),this.start.push(a),this.index.push(0))}else this.index[n]++,this.nextStart=a+i.length}}}class ame{constructor(e,n){this.stream=n,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=e.tokenizers.map(r=>new wv)}getActions(e){let n=0,r=null,{parser:s}=e.p,{tokenizers:i}=s,a=s.stateSlot(e.state,3),l=e.curContext?e.curContext.hash:0,c=0;for(let d=0;dm.end+25&&(c=Math.max(m.lookAhead,c)),m.value!=0)){let g=n;if(m.extended>-1&&(n=this.addActions(e,m.extended,m.end,n)),n=this.addActions(e,m.value,m.end,n),!h.extend&&(r=m,n>g))break}}for(;this.actions.length>n;)this.actions.pop();return c&&e.setLookAhead(c),!r&&e.pos==this.stream.end&&(r=new wv,r.value=e.p.parser.eofTerm,r.start=r.end=e.pos,n=this.addActions(e,r.value,r.end,n)),this.mainToken=r,this.actions}getMainToken(e){if(this.mainToken)return this.mainToken;let n=new wv,{pos:r,p:s}=e;return n.start=r,n.end=Math.min(r+1,s.stream.end),n.value=r==s.stream.end?s.parser.eofTerm:0,n}updateCachedToken(e,n,r){let s=this.stream.clipPos(r.pos);if(n.token(this.stream.reset(s,e),r),e.value>-1){let{parser:i}=r.p;for(let a=0;a=0&&r.p.parser.dialect.allows(l>>1)){(l&1)==0?e.value=l>>1:e.extended=l>>1;break}}}else e.value=0,e.end=this.stream.clipPos(s+1)}putAction(e,n,r,s){for(let i=0;ie.bufferLength*4?new ime(r,e.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let e=this.stacks,n=this.minStackPos,r=this.stacks=[],s,i;if(this.bigReductionCount>300&&e.length==1){let[a]=e;for(;a.forceReduce()&&a.stack.length&&a.stack[a.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let a=0;an)r.push(l);else{if(this.advanceStack(l,r,e))continue;{s||(s=[],i=[]),s.push(l);let c=this.tokens.getMainToken(l);i.push(c.value,c.end)}}break}}if(!r.length){let a=s&&ume(s);if(a)return qi&&console.log("Finish with "+this.stackID(a)),this.stackToTree(a);if(this.parser.strict)throw qi&&s&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+n);this.recovering||(this.recovering=5)}if(this.recovering&&s){let a=this.stoppedAt!=null&&s[0].pos>this.stoppedAt?s[0]:this.runRecovery(s,i,r);if(a)return qi&&console.log("Force-finish "+this.stackID(a)),this.stackToTree(a.forceAll())}if(this.recovering){let a=this.recovering==1?1:this.recovering*3;if(r.length>a)for(r.sort((l,c)=>c.score-l.score);r.length>a;)r.pop();r.some(l=>l.reducePos>n)&&this.recovering--}else if(r.length>1){e:for(let a=0;a500&&d.buffer.length>500)if((l.score-d.score||l.buffer.length-d.buffer.length)>0)r.splice(c--,1);else{r.splice(a--,1);continue e}}}r.length>12&&r.splice(12,r.length-12)}this.minStackPos=r[0].pos;for(let a=1;a ":"";if(this.stoppedAt!=null&&s>this.stoppedAt)return e.forceReduce()?e:null;if(this.fragments){let d=e.curContext&&e.curContext.tracker.strict,h=d?e.curContext.hash:0;for(let m=this.fragments.nodeAt(s);m;){let g=this.parser.nodeSet.types[m.type.id]==m.type?i.getGoto(e.state,m.type.id):-1;if(g>-1&&m.length&&(!d||(m.prop(an.contextHash)||0)==h))return e.useNode(m,g),qi&&console.log(a+this.stackID(e)+` (via reuse of ${i.getName(m.type.id)})`),!0;if(!(m instanceof ur)||m.children.length==0||m.positions[0]>0)break;let x=m.children[0];if(x instanceof ur&&m.positions[0]==0)m=x;else break}}let l=i.stateSlot(e.state,4);if(l>0)return e.reduce(l),qi&&console.log(a+this.stackID(e)+` (via always-reduce ${i.getName(l&65535)})`),!0;if(e.stack.length>=8400)for(;e.stack.length>6e3&&e.forceReduce(););let c=this.tokens.getActions(e);for(let d=0;ds?n.push(y):r.push(y)}return!1}advanceFully(e,n){let r=e.pos;for(;;){if(!this.advanceStack(e,null,null))return!1;if(e.pos>r)return mA(e,n),!0}}runRecovery(e,n,r){let s=null,i=!1;for(let a=0;a ":"";if(l.deadEnd&&(i||(i=!0,l.restart(),qi&&console.log(h+this.stackID(l)+" (restarted)"),this.advanceFully(l,r))))continue;let m=l.split(),g=h;for(let x=0;x<10&&m.forceReduce()&&(qi&&console.log(g+this.stackID(m)+" (via force-reduce)"),!this.advanceFully(m,r));x++)qi&&(g=this.stackID(m)+" -> ");for(let x of l.recoverByInsert(c))qi&&console.log(h+this.stackID(x)+" (via recover-insert)"),this.advanceFully(x,r);this.stream.end>l.pos?(d==l.pos&&(d++,c=0),l.recoverByDelete(c,d),qi&&console.log(h+this.stackID(l)+` (via recover-delete ${this.parser.getName(c)})`),mA(l,r)):(!s||s.scoret;class cme{constructor(e){this.start=e.start,this.shift=e.shift||hS,this.reduce=e.reduce||hS,this.reuse=e.reuse||hS,this.hash=e.hash||(()=>0),this.strict=e.strict!==!1}}class lp extends S6{constructor(e){if(super(),this.wrappers=[],e.version!=14)throw new RangeError(`Parser version (${e.version}) doesn't match runtime version (14)`);let n=e.nodeNames.split(" ");this.minRepeatTerm=n.length;for(let l=0;le.topRules[l][1]),s=[];for(let l=0;l=0)i(h,c,l[d++]);else{let m=l[d+-h];for(let g=-h;g>0;g--)i(l[d++],c,m);d++}}}this.nodeSet=new gb(n.map((l,c)=>ai.define({name:c>=this.minRepeatTerm?void 0:l,id:c,props:s[c],top:r.indexOf(c)>-1,error:c==0,skipped:e.skippedNodes&&e.skippedNodes.indexOf(c)>-1}))),e.propSources&&(this.nodeSet=this.nodeSet.extend(...e.propSources)),this.strict=!1,this.bufferLength=Iq;let a=C1(e.tokenData);this.context=e.context,this.specializerSpecs=e.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let l=0;ltypeof l=="number"?new Fh(a,l):l),this.topRules=e.topRules,this.dialects=e.dialects||{},this.dynamicPrecedences=e.dynamicPrecedences||null,this.tokenPrecTable=e.tokenPrec,this.termNames=e.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(e,n,r){let s=new ome(this,e,n,r);for(let i of this.wrappers)s=i(s,e,n,r);return s}getGoto(e,n,r=!1){let s=this.goto;if(n>=s[0])return-1;for(let i=s[n+1];;){let a=s[i++],l=a&1,c=s[i++];if(l&&r)return c;for(let d=i+(a>>1);i0}validAction(e,n){return!!this.allActions(e,r=>r==n?!0:null)}allActions(e,n){let r=this.stateSlot(e,4),s=r?n(r):void 0;for(let i=this.stateSlot(e,1);s==null;i+=3){if(this.data[i]==65535)if(this.data[i+1]==1)i=_l(this.data,i+2);else break;s=n(_l(this.data,i+1))}return s}nextStates(e){let n=[];for(let r=this.stateSlot(e,1);;r+=3){if(this.data[r]==65535)if(this.data[r+1]==1)r=_l(this.data,r+2);else break;if((this.data[r+2]&1)==0){let s=this.data[r+1];n.some((i,a)=>a&1&&i==s)||n.push(this.data[r],s)}}return n}configure(e){let n=Object.assign(Object.create(lp.prototype),this);if(e.props&&(n.nodeSet=this.nodeSet.extend(...e.props)),e.top){let r=this.topRules[e.top];if(!r)throw new RangeError(`Invalid top rule name ${e.top}`);n.top=r}return e.tokenizers&&(n.tokenizers=this.tokenizers.map(r=>{let s=e.tokenizers.find(i=>i.from==r);return s?s.to:r})),e.specializers&&(n.specializers=this.specializers.slice(),n.specializerSpecs=this.specializerSpecs.map((r,s)=>{let i=e.specializers.find(l=>l.from==r.external);if(!i)return r;let a=Object.assign(Object.assign({},r),{external:i.to});return n.specializers[s]=pA(a),a})),e.contextTracker&&(n.context=e.contextTracker),e.dialect&&(n.dialect=this.parseDialect(e.dialect)),e.strict!=null&&(n.strict=e.strict),e.wrap&&(n.wrappers=n.wrappers.concat(e.wrap)),e.bufferLength!=null&&(n.bufferLength=e.bufferLength),n}hasWrappers(){return this.wrappers.length>0}getName(e){return this.termNames?this.termNames[e]:String(e<=this.maxNode&&this.nodeSet.types[e].name||e)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(e){let n=this.dynamicPrecedences;return n==null?0:n[e]||0}parseDialect(e){let n=Object.keys(this.dialects),r=n.map(()=>!1);if(e)for(let i of e.split(" ")){let a=n.indexOf(i);a>=0&&(r[a]=!0)}let s=null;for(let i=0;ir)&&n.p.parser.stateFlag(n.state,2)&&(!e||e.scoret.external(n,r)<<1|e}return t.get}const dme=1,yH=194,bH=195,hme=196,gA=197,fme=198,mme=199,pme=200,gme=2,wH=3,xA=201,xme=24,vme=25,yme=49,bme=50,wme=55,Sme=56,kme=57,Ome=59,jme=60,Nme=61,Cme=62,Tme=63,Eme=65,_me=238,Ame=71,Mme=241,Rme=242,Dme=243,Pme=244,zme=245,Ime=246,Lme=247,Bme=248,SH=72,Fme=249,qme=250,$me=251,Hme=252,Qme=253,Vme=254,Ume=255,Wme=256,Gme=73,Xme=77,Yme=263,Kme=112,Zme=130,Jme=151,e0e=152,t0e=155,fd=10,cp=13,V6=32,Nb=9,U6=35,n0e=40,r0e=46,xO=123,vA=125,kH=39,OH=34,yA=92,s0e=111,i0e=120,a0e=78,o0e=117,l0e=85,c0e=new Set([vme,yme,bme,Yme,Eme,Zme,Sme,kme,_me,Cme,Tme,SH,Gme,Xme,jme,Nme,Jme,e0e,t0e,Kme]);function fS(t){return t==fd||t==cp}function mS(t){return t>=48&&t<=57||t>=65&&t<=70||t>=97&&t<=102}const u0e=new jb((t,e)=>{let n;if(t.next<0)t.acceptToken(mme);else if(e.context.flags&Sv)fS(t.next)&&t.acceptToken(fme,1);else if(((n=t.peek(-1))<0||fS(n))&&e.canShift(gA)){let r=0;for(;t.next==V6||t.next==Nb;)t.advance(),r++;(t.next==fd||t.next==cp||t.next==U6)&&t.acceptToken(gA,-r)}else fS(t.next)&&t.acceptToken(hme,1)},{contextual:!0}),d0e=new jb((t,e)=>{let n=e.context;if(n.flags)return;let r=t.peek(-1);if(r==fd||r==cp){let s=0,i=0;for(;;){if(t.next==V6)s++;else if(t.next==Nb)s+=8-s%8;else break;t.advance(),i++}s!=n.indent&&t.next!=fd&&t.next!=cp&&t.next!=U6&&(s[t,e|jH])),m0e=new cme({start:h0e,reduce(t,e,n,r){return t.flags&Sv&&c0e.has(e)||(e==Ame||e==SH)&&t.flags&jH?t.parent:t},shift(t,e,n,r){return e==yH?new kv(t,f0e(r.read(r.pos,n.pos)),0):e==bH?t.parent:e==xme||e==wme||e==Ome||e==wH?new kv(t,0,Sv):bA.has(e)?new kv(t,0,bA.get(e)|t.flags&Sv):t},hash(t){return t.hash}}),p0e=new jb(t=>{for(let e=0;e<5;e++){if(t.next!="print".charCodeAt(e))return;t.advance()}if(!/\w/.test(String.fromCharCode(t.next)))for(let e=0;;e++){let n=t.peek(e);if(!(n==V6||n==Nb)){n!=n0e&&n!=r0e&&n!=fd&&n!=cp&&n!=U6&&t.acceptToken(dme);return}}}),g0e=new jb((t,e)=>{let{flags:n}=e.context,r=n&jl?OH:kH,s=(n&Nl)>0,i=!(n&Cl),a=(n&Tl)>0,l=t.pos;for(;!(t.next<0);)if(a&&t.next==xO)if(t.peek(1)==xO)t.advance(2);else{if(t.pos==l){t.acceptToken(wH,1);return}break}else if(i&&t.next==yA){if(t.pos==l){t.advance();let c=t.next;c>=0&&(t.advance(),x0e(t,c)),t.acceptToken(gme);return}break}else if(t.next==yA&&!i&&t.peek(1)>-1)t.advance(2);else if(t.next==r&&(!s||t.peek(1)==r&&t.peek(2)==r)){if(t.pos==l){t.acceptToken(xA,s?3:1);return}break}else if(t.next==fd){if(s)t.advance();else if(t.pos==l){t.acceptToken(xA);return}break}else t.advance();t.pos>l&&t.acceptToken(pme)});function x0e(t,e){if(e==s0e)for(let n=0;n<2&&t.next>=48&&t.next<=55;n++)t.advance();else if(e==i0e)for(let n=0;n<2&&mS(t.next);n++)t.advance();else if(e==o0e)for(let n=0;n<4&&mS(t.next);n++)t.advance();else if(e==l0e)for(let n=0;n<8&&mS(t.next);n++)t.advance();else if(e==a0e&&t.next==xO){for(t.advance();t.next>=0&&t.next!=vA&&t.next!=kH&&t.next!=OH&&t.next!=fd;)t.advance();t.next==vA&&t.advance()}}const v0e=k6({'async "*" "**" FormatConversion FormatSpec':ye.modifier,"for while if elif else try except finally return raise break continue with pass assert await yield match case":ye.controlKeyword,"in not and or is del":ye.operatorKeyword,"from def class global nonlocal lambda":ye.definitionKeyword,import:ye.moduleKeyword,"with as print":ye.keyword,Boolean:ye.bool,None:ye.null,VariableName:ye.variableName,"CallExpression/VariableName":ye.function(ye.variableName),"FunctionDefinition/VariableName":ye.function(ye.definition(ye.variableName)),"ClassDefinition/VariableName":ye.definition(ye.className),PropertyName:ye.propertyName,"CallExpression/MemberExpression/PropertyName":ye.function(ye.propertyName),Comment:ye.lineComment,Number:ye.number,String:ye.string,FormatString:ye.special(ye.string),Escape:ye.escape,UpdateOp:ye.updateOperator,"ArithOp!":ye.arithmeticOperator,BitOp:ye.bitwiseOperator,CompareOp:ye.compareOperator,AssignOp:ye.definitionOperator,Ellipsis:ye.punctuation,At:ye.meta,"( )":ye.paren,"[ ]":ye.squareBracket,"{ }":ye.brace,".":ye.derefOperator,", ;":ye.separator}),y0e={__proto__:null,await:44,or:54,and:56,in:60,not:62,is:64,if:70,else:72,lambda:76,yield:94,from:96,async:102,for:104,None:162,True:164,False:164,del:178,pass:182,break:186,continue:190,return:194,raise:202,import:206,as:208,global:212,nonlocal:214,assert:218,type:223,elif:236,while:240,try:246,except:248,finally:250,with:254,def:258,class:268,match:279,case:285},b0e=lp.deserialize({version:14,states:"##jO`QeOOP$}OSOOO&WQtO'#HUOOQS'#Co'#CoOOQS'#Cp'#CpO'vQdO'#CnO*UQtO'#HTOOQS'#HU'#HUOOQS'#DU'#DUOOQS'#HT'#HTO*rQdO'#D_O+VQdO'#DfO+gQdO'#DjO+zOWO'#DuO,VOWO'#DvO.[QtO'#GuOOQS'#Gu'#GuO'vQdO'#GtO0ZQtO'#GtOOQS'#Eb'#EbO0rQdO'#EcOOQS'#Gs'#GsO0|QdO'#GrOOQV'#Gr'#GrO1XQdO'#FYOOQS'#G^'#G^O1^QdO'#FXOOQV'#IS'#ISOOQV'#Gq'#GqOOQV'#Fq'#FqQ`QeOOO'vQdO'#CqO1lQdO'#C}O1sQdO'#DRO2RQdO'#HYO2cQtO'#EVO'vQdO'#EWOOQS'#EY'#EYOOQS'#E['#E[OOQS'#E^'#E^O2wQdO'#E`O3_QdO'#EdO3rQdO'#EfO3zQtO'#EfO1XQdO'#EiO0rQdO'#ElO1XQdO'#EnO0rQdO'#EtO0rQdO'#EwO4VQdO'#EyO4^QdO'#FOO4iQdO'#EzO0rQdO'#FOO1XQdO'#FQO1XQdO'#FVO4nQdO'#F[P4uOdO'#GpPOOO)CBd)CBdOOQS'#Ce'#CeOOQS'#Cf'#CfOOQS'#Cg'#CgOOQS'#Ch'#ChOOQS'#Ci'#CiOOQS'#Cj'#CjOOQS'#Cl'#ClO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO'vQdO,59OO5TQdO'#DoOOQS,5:Y,5:YO5hQdO'#HdOOQS,5:],5:]O5uQ!fO,5:]O5zQtO,59YO1lQdO,59bO1lQdO,59bO1lQdO,59bO8jQdO,59bO8oQdO,59bO8vQdO,59jO8}QdO'#HTO:TQdO'#HSOOQS'#HS'#HSOOQS'#D['#D[O:lQdO,59aO'vQdO,59aO:zQdO,59aOOQS,59y,59yO;PQdO,5:RO'vQdO,5:ROOQS,5:Q,5:QO;_QdO,5:QO;dQdO,5:XO'vQdO,5:XO'vQdO,5:VOOQS,5:U,5:UO;uQdO,5:UO;zQdO,5:WOOOW'#Fy'#FyOOOOQS'#Ds'#DsOOQS1G/w1G/wOOQS1G.|1G.|O!/[QtO1G.|O!/cQtO1G.|O1lQdO1G.|O!0OQdO1G/UOOQS'#DZ'#DZO0rQdO,59tOOQS1G.{1G.{O!0VQdO1G/eO!0gQdO1G/eO!0oQdO1G/fO'vQdO'#H[O!0tQdO'#H[O!0yQtO1G.{O!1ZQdO,59iO!2aQdO,5=zO!2qQdO,5=zO!2yQdO1G/mO!3OQtO1G/mOOQS1G/l1G/lO!3`QdO,5=uO!4VQdO,5=uO0rQdO1G/qO!4tQdO1G/sO!4yQtO1G/sO!5ZQtO1G/qOOQS1G/p1G/pOOQS1G/r1G/rOOOW-E9w-E9wOOQS1G/{1G/{O!5kQdO'#HxO0rQdO'#HxO!5|QdO,5>cOOOW-E9x-E9xOOQS1G/|1G/|OOQS-E9{-E9{O!6[Q#xO1G2zO!6{QtO1G2zO'vQdO,5kOOQS1G1`1G1`O!8RQdO1G1`OOQS'#DV'#DVO0rQdO,5=qOOQS,5=q,5=qO!8WQdO'#FrO!8cQdO,59oO!8kQdO1G/XO!8uQtO,5=uOOQS1G3`1G3`OOQS,5:m,5:mO!9fQdO'#GtOOQS,5jO!;ZQdO,5>jO1XQdO,5>jO!;lQdO,5>iOOQS-E:R-E:RO!;qQdO1G0lO!;|QdO1G0lO!lO!lO!hO!=VQdO,5>hO!=hQdO'#EpO0rQdO1G0tO!=sQdO1G0tO!=xQgO1G0zO!AvQgO1G0}O!EqQdO,5>oO!E{QdO,5>oO!FTQtO,5>oO0rQdO1G1PO!F_QdO1G1PO4iQdO1G1UO!!vQdO1G1WOOQV,5;a,5;aO!FdQfO,5;aO!FiQgO1G1QO!JjQdO'#GZO4iQdO1G1QO4iQdO1G1QO!JzQdO,5>pO!KXQdO,5>pO1XQdO,5>pOOQV1G1U1G1UO!KaQdO'#FSO!KrQ!fO1G1WO!KzQdO1G1WOOQV1G1]1G1]O4iQdO1G1]O!LPQdO1G1]O!LXQdO'#F^OOQV1G1b1G1bO!#ZQtO1G1bPOOO1G2v1G2vP!L^OSO1G2vOOQS,5=},5=}OOQS'#Dp'#DpO0rQdO,5=}O!LfQdO,5=|O!LyQdO,5=|OOQS1G/u1G/uO!MRQdO,5>PO!McQdO,5>PO!MkQdO,5>PO!NOQdO,5>PO!N`QdO,5>POOQS1G3j1G3jOOQS7+$h7+$hO!8kQdO7+$pO#!RQdO1G.|O#!YQdO1G.|OOQS1G/`1G/`OOQS,5<`,5<`O'vQdO,5<`OOQS7+%P7+%PO#!aQdO7+%POOQS-E9r-E9rOOQS7+%Q7+%QO#!qQdO,5=vO'vQdO,5=vOOQS7+$g7+$gO#!vQdO7+%PO##OQdO7+%QO##TQdO1G3fOOQS7+%X7+%XO##eQdO1G3fO##mQdO7+%XOOQS,5<_,5<_O'vQdO,5<_O##rQdO1G3aOOQS-E9q-E9qO#$iQdO7+%]OOQS7+%_7+%_O#$wQdO1G3aO#%fQdO7+%_O#%kQdO1G3gO#%{QdO1G3gO#&TQdO7+%]O#&YQdO,5>dO#&sQdO,5>dO#&sQdO,5>dOOQS'#Dx'#DxO#'UO&jO'#DzO#'aO`O'#HyOOOW1G3}1G3}O#'fQdO1G3}O#'nQdO1G3}O#'yQ#xO7+(fO#(jQtO1G2UP#)TQdO'#GOOOQS,5nQdO,5sQdO1G4OOOQS-E9y-E9yO#?^QdO1G4OO<[QdO'#H{OOOO'#D{'#D{OOOO'#F|'#F|O#?oO&jO,5:fOOOW,5>e,5>eOOOW7+)i7+)iO#?zQdO7+)iO#@SQdO1G2zO#@mQdO1G2zP'vQdO'#FuO0rQdO<mO#BQQdO,5>mOOQS1G0v1G0vOOQS<rO#KgQdO,5>rO#KrQdO,5>rO#K}QdO,5>qO#L`QdO,5>qOOQS1G1Y1G1YOOQS,5;p,5;pOOQV<VAN>VO$ oQdO<cAN>cO0rQdO1G1|O$!PQtO1G1|P$!ZQdO'#FvOOQS1G2R1G2RP$!hQdO'#F{O$!uQdO7+)jO$#`QdO,5>gOOOO-E9z-E9zOOOW<tO$4{QdO,5>tO1XQdO,5vO$)nQdO,5>vOOQS1G1p1G1pOOQS,5<[,5<[OOQU7+'P7+'PO$+zQdO1G/iO$)nQdO,5wO$8zQdO,5>wOOQS1G1s1G1sOOQS7+'S7+'SP$)nQdO'#GdO$9SQdO1G4bO$9^QdO1G4bO$9fQdO1G4bOOQS7+%T7+%TO$9tQdO1G1tO$:SQtO'#FaO$:ZQdO,5<}OOQS,5<},5<}O$:iQdO1G4cOOQS-E:a-E:aO$)nQdO,5<|O$:pQdO,5<|O$:uQdO7+)|OOQS-E:`-E:`O$;PQdO7+)|O$)nQdO,5S~O%cOS%^OSSOS%]PQ~OPdOVaOfoOhYOopOs!POvqO!PrO!Q{O!T!SO!U!RO!XZO!][O!h`O!r`O!s`O!t`O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#l!QO#o!TO#s!UO#u!VO#z!WO#}hO$P!XO%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~O%]!YO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%j![O%k!]O%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aO~Ok%xXl%xXm%xXn%xXo%xXp%xXs%xXz%xX{%xX!x%xX#g%xX%[%xX%_%xX%z%xXg%xX!T%xX!U%xX%{%xX!W%xX![%xX!Q%xX#[%xXt%xX!m%xX~P%SOfoOhYO!XZO!][O!h`O!r`O!s`O!t`O%oRO%pRO%tSO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O~Oz%wX{%wX#g%wX%[%wX%_%wX%z%wX~Ok!pOl!qOm!oOn!oOo!rOp!sOs!tO!x%wX~P)pOV!zOg!|Oo0cOv0qO!PrO~P'vOV#OOo0cOv0qO!W#PO~P'vOV#SOa#TOo0cOv0qO![#UO~P'vOQ#XO%`#XO%a#ZO~OQ#^OR#[O%`#^O%a#`O~OV%iX_%iXa%iXh%iXk%iXl%iXm%iXn%iXo%iXp%iXs%iXz%iX!X%iX!f%iX%j%iX%k%iX%l%iX%m%iX%n%iX%o%iX%p%iX%q%iX%r%iX%s%iXg%iX!T%iX!U%iX~O&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O&c^O&d^O&e^O&f^O&g^O&h^O&i^O&j^O{%iX!x%iX#g%iX%[%iX%_%iX%z%iX%{%iX!W%iX![%iX!Q%iX#[%iXt%iX!m%iX~P,eOz#dO{%hX!x%hX#g%hX%[%hX%_%hX%z%hX~Oo0cOv0qO~P'vO#g#gO%[#iO%_#iO~O%uWO~O!T#nO#u!VO#z!WO#}hO~OopO~P'vOV#sOa#tO%uWO{wP~OV#xOo0cOv0qO!Q#yO~P'vO{#{O!x$QO%z#|O#g!yX%[!yX%_!yX~OV#xOo0cOv0qO#g#SX%[#SX%_#SX~P'vOo0cOv0qO#g#WX%[#WX%_#WX~P'vOh$WO%uWO~O!f$YO!r$YO%uWO~OV$eO~P'vO!U$gO#s$hO#u$iO~O{$jO~OV$qO~P'vOS$sO%[$rO%_$rO%c$tO~OV$}Oa$}Og%POo0cOv0qO~P'vOo0cOv0qO{%SO~P'vO&Y%UO~Oa!bOh!iO!X!kO!f!mOVba_bakbalbambanbaobapbasbazba{ba!xba#gba%[ba%_ba%jba%kba%lba%mba%nba%oba%pba%qba%rba%sba%zbagba!Tba!Uba%{ba!Wba![ba!Qba#[batba!mba~On%ZO~Oo%ZO~P'vOo0cO~P'vOk0eOl0fOm0dOn0dOo0mOp0nOs0rOg%wX!T%wX!U%wX%{%wX!W%wX![%wX!Q%wX#[%wX!m%wX~P)pO%{%]Og%vXz%vX!T%vX!U%vX!W%vX{%vX~Og%_Oz%`O!T%dO!U%cO~Og%_O~Oz%gO!T%dO!U%cO!W&SX~O!W%kO~Oz%lO{%nO!T%dO!U%cO![%}X~O![%rO~O![%sO~OQ#XO%`#XO%a%uO~OV%wOo0cOv0qO!PrO~P'vOQ#^OR#[O%`#^O%a%zO~OV!qa_!qaa!qah!qak!qal!qam!qan!qao!qap!qas!qaz!qa{!qa!X!qa!f!qa!x!qa#g!qa%[!qa%_!qa%j!qa%k!qa%l!qa%m!qa%n!qa%o!qa%p!qa%q!qa%r!qa%s!qa%z!qag!qa!T!qa!U!qa%{!qa!W!qa![!qa!Q!qa#[!qat!qa!m!qa~P#yOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P%SOV&OOopOvqO{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~P'vOz%|O{%ha!x%ha#g%ha%[%ha%_%ha%z%ha~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO#g$zX%[$zX%_$zX~P'vO#g#gO%[&TO%_&TO~O!f&UOh&sX%[&sXz&sX#[&sX#g&sX%_&sX#Z&sXg&sX~Oh!iO%[&WO~Okealeameaneaoeapeaseazea{ea!xea#gea%[ea%_ea%zeagea!Tea!Uea%{ea!Wea![ea!Qea#[eatea!mea~P%SOsqazqa{qa#gqa%[qa%_qa%zqa~Ok!pOl!qOm!oOn!oOo!rOp!sO!xqa~PEcO%z&YOz%yX{%yX~O%uWOz%yX{%yX~Oz&]O{wX~O{&_O~Oz%lO#g%}X%[%}X%_%}Xg%}X{%}X![%}X!m%}X%z%}X~OV0lOo0cOv0qO!PrO~P'vO%z#|O#gUa%[Ua%_Ua~Oz&hO#g&PX%[&PX%_&PXn&PX~P%SOz&kO!Q&jO#g#Wa%[#Wa%_#Wa~Oz&lO#[&nO#g&rX%[&rX%_&rXg&rX~O!f$YO!r$YO#Z&qO%uWO~O#Z&qO~Oz&sO#g&tX%[&tX%_&tX~Oz&uO#g&pX%[&pX%_&pX{&pX~O!X&wO%z&xO~Oz&|On&wX~P%SOn'PO~OPdOVaOopOvqO!PrO!Q{O!{tO!}uO#PvO#RwO#TxO#XyO#ZzO#^|O#_|O#a}O#c!OO%['UO~P'vOt'YO#p'WO#q'XOP#naV#naf#nah#nao#nas#nav#na!P#na!Q#na!T#na!U#na!X#na!]#na!h#na!r#na!s#na!t#na!{#na!}#na#P#na#R#na#T#na#X#na#Z#na#^#na#_#na#a#na#c#na#l#na#o#na#s#na#u#na#z#na#}#na$P#na%X#na%o#na%p#na%t#na%u#na&Z#na&[#na&]#na&^#na&_#na&`#na&a#na&b#na&c#na&d#na&e#na&f#na&g#na&h#na&i#na&j#na%Z#na%_#na~Oz'ZO#[']O{&xX~Oh'_O!X&wO~Oh!iO{$jO!X&wO~O{'eO~P%SO%['hO%_'hO~OS'iO%['hO%_'hO~OV!aO_!aOa!bOh!iO!X!kO!f!mO%l!^O%m!_O%n!_O%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%k!]O~P!#uO%kWi~P!#uOV!aO_!aOa!bOh!iO!X!kO!f!mO%o!`O%p!`O%q!aO%r!aO%s!aOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~O%m!_O%n!_O~P!&pO%mWi%nWi~P!&pOa!bOh!iO!X!kO!f!mOkWilWimWinWioWipWisWizWi{Wi!xWi#gWi%[Wi%_Wi%jWi%kWi%lWi%mWi%nWi%oWi%pWi%zWigWi!TWi!UWi%{Wi!WWi![Wi!QWi#[WitWi!mWi~OV!aO_!aO%q!aO%r!aO%s!aO~P!)nOVWi_Wi%qWi%rWi%sWi~P!)nO!T%dO!U%cOg&VXz&VX~O%z'kO%{'kO~P,eOz'mOg&UX~Og'oO~Oz'pO{'rO!W&XX~Oo0cOv0qOz'pO{'sO!W&XX~P'vO!W'uO~Om!oOn!oOo!rOp!sOkjisjizji{ji!xji#gji%[ji%_ji%zji~Ol!qO~P!.aOlji~P!.aOk0eOl0fOm0dOn0dOo0mOp0nO~Ot'wO~P!/jOV'|Og'}Oo0cOv0qO~P'vOg'}Oz(OO~Og(QO~O!U(SO~Og(TOz(OO!T%dO!U%cO~P%SOk0eOl0fOm0dOn0dOo0mOp0nOgqa!Tqa!Uqa%{qa!Wqa![qa!Qqa#[qatqa!mqa~PEcOV'|Oo0cOv0qO!W&Sa~P'vOz(WO!W&Sa~O!W(XO~Oz(WO!T%dO!U%cO!W&Sa~P%SOV(]Oo0cOv0qO![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~P'vOz(^O![%}a#g%}a%[%}a%_%}ag%}a{%}a!m%}a%z%}a~O![(aO~Oz(^O!T%dO!U%cO![%}a~P%SOz(dO!T%dO!U%cO![&Ta~P%SOz(gO{&lX![&lX!m&lX%z&lX~O{(kO![(mO!m(nO%z(jO~OV&OOopOvqO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~P'vOz(pO{%hi!x%hi#g%hi%[%hi%_%hi%z%hi~O!f&UOh&sa%[&saz&sa#[&sa#g&sa%_&sa#Z&sag&sa~O%[(uO~OV#sOa#tO%uWO~Oz&]O{wa~OopOvqO~P'vOz(^O#g%}a%[%}a%_%}ag%}a{%}a![%}a!m%}a%z%}a~P%SOz(zO#g%hX%[%hX%_%hX%z%hX~O%z#|O#gUi%[Ui%_Ui~O#g&Pa%[&Pa%_&Pan&Pa~P'vOz(}O#g&Pa%[&Pa%_&Pan&Pa~O%uWO#g&ra%[&ra%_&rag&ra~Oz)SO#g&ra%[&ra%_&rag&ra~Og)VO~OV)WOh$WO%uWO~O#Z)XO~O%uWO#g&ta%[&ta%_&ta~Oz)ZO#g&ta%[&ta%_&ta~Oo0cOv0qO#g&pa%[&pa%_&pa{&pa~P'vOz)^O#g&pa%[&pa%_&pa{&pa~OV)`Oa)`O%uWO~O%z)eO~Ot)hO#j)gOP#hiV#hif#hih#hio#his#hiv#hi!P#hi!Q#hi!T#hi!U#hi!X#hi!]#hi!h#hi!r#hi!s#hi!t#hi!{#hi!}#hi#P#hi#R#hi#T#hi#X#hi#Z#hi#^#hi#_#hi#a#hi#c#hi#l#hi#o#hi#s#hi#u#hi#z#hi#}#hi$P#hi%X#hi%o#hi%p#hi%t#hi%u#hi&Z#hi&[#hi&]#hi&^#hi&_#hi&`#hi&a#hi&b#hi&c#hi&d#hi&e#hi&f#hi&g#hi&h#hi&i#hi&j#hi%Z#hi%_#hi~Ot)iOP#kiV#kif#kih#kio#kis#kiv#ki!P#ki!Q#ki!T#ki!U#ki!X#ki!]#ki!h#ki!r#ki!s#ki!t#ki!{#ki!}#ki#P#ki#R#ki#T#ki#X#ki#Z#ki#^#ki#_#ki#a#ki#c#ki#l#ki#o#ki#s#ki#u#ki#z#ki#}#ki$P#ki%X#ki%o#ki%p#ki%t#ki%u#ki&Z#ki&[#ki&]#ki&^#ki&_#ki&`#ki&a#ki&b#ki&c#ki&d#ki&e#ki&f#ki&g#ki&h#ki&i#ki&j#ki%Z#ki%_#ki~OV)kOn&wa~P'vOz)lOn&wa~Oz)lOn&wa~P%SOn)pO~O%Y)tO~Ot)wO#p'WO#q)vOP#niV#nif#nih#nio#nis#niv#ni!P#ni!Q#ni!T#ni!U#ni!X#ni!]#ni!h#ni!r#ni!s#ni!t#ni!{#ni!}#ni#P#ni#R#ni#T#ni#X#ni#Z#ni#^#ni#_#ni#a#ni#c#ni#l#ni#o#ni#s#ni#u#ni#z#ni#}#ni$P#ni%X#ni%o#ni%p#ni%t#ni%u#ni&Z#ni&[#ni&]#ni&^#ni&_#ni&`#ni&a#ni&b#ni&c#ni&d#ni&e#ni&f#ni&g#ni&h#ni&i#ni&j#ni%Z#ni%_#ni~OV)zOo0cOv0qO{$jO~P'vOo0cOv0qO{&xa~P'vOz*OO{&xa~OV*SOa*TOg*WO%q*UO%uWO~O{$jO&{*YO~Oh'_O~Oh!iO{$jO~O%[*_O~O%[*aO%_*aO~OV$}Oa$}Oo0cOv0qOg&Ua~P'vOz*dOg&Ua~Oo0cOv0qO{*gO!W&Xa~P'vOz*hO!W&Xa~Oo0cOv0qOz*hO{*kO!W&Xa~P'vOo0cOv0qOz*hO!W&Xa~P'vOz*hO{*kO!W&Xa~Om0dOn0dOo0mOp0nOgjikjisjizji!Tji!Uji%{ji!Wji{ji![ji#gji%[ji%_ji!Qji#[jitji!mji%zji~Ol0fO~P!NkOlji~P!NkOV'|Og*pOo0cOv0qO~P'vOn*rO~Og*pOz*tO~Og*uO~OV'|Oo0cOv0qO!W&Si~P'vOz*vO!W&Si~O!W*wO~OV(]Oo0cOv0qO![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~P'vOz*zO!T%dO!U%cO![&Ti~Oz*}O![%}i#g%}i%[%}i%_%}ig%}i{%}i!m%}i%z%}i~O![+OO~Oa+QOo0cOv0qO![&Ti~P'vOz*zO![&Ti~O![+SO~OV+UOo0cOv0qO{&la![&la!m&la%z&la~P'vOz+VO{&la![&la!m&la%z&la~O!]+YO&n+[O![!nX~O![+^O~O{(kO![+_O~O{(kO![+_O!m+`O~OV&OOopOvqO{%hq!x%hq#g%hq%[%hq%_%hq%z%hq~P'vOz$ri{$ri!x$ri#g$ri%[$ri%_$ri%z$ri~P%SOV&OOopOvqO~P'vOV&OOo0cOv0qO#g%ha%[%ha%_%ha%z%ha~P'vOz+aO#g%ha%[%ha%_%ha%z%ha~Oz$ia#g$ia%[$ia%_$ian$ia~P%SO#g&Pi%[&Pi%_&Pin&Pi~P'vOz+dO#g#Wq%[#Wq%_#Wq~O#[+eOz$va#g$va%[$va%_$vag$va~O%uWO#g&ri%[&ri%_&rig&ri~Oz+gO#g&ri%[&ri%_&rig&ri~OV+iOh$WO%uWO~O%uWO#g&ti%[&ti%_&ti~Oo0cOv0qO#g&pi%[&pi%_&pi{&pi~P'vO{#{Oz#eX!W#eX~Oz+mO!W&uX~O!W+oO~Ot+rO#j)gOP#hqV#hqf#hqh#hqo#hqs#hqv#hq!P#hq!Q#hq!T#hq!U#hq!X#hq!]#hq!h#hq!r#hq!s#hq!t#hq!{#hq!}#hq#P#hq#R#hq#T#hq#X#hq#Z#hq#^#hq#_#hq#a#hq#c#hq#l#hq#o#hq#s#hq#u#hq#z#hq#}#hq$P#hq%X#hq%o#hq%p#hq%t#hq%u#hq&Z#hq&[#hq&]#hq&^#hq&_#hq&`#hq&a#hq&b#hq&c#hq&d#hq&e#hq&f#hq&g#hq&h#hq&i#hq&j#hq%Z#hq%_#hq~On$|az$|a~P%SOV)kOn&wi~P'vOz+yOn&wi~Oz,TO{$jO#[,TO~O#q,VOP#nqV#nqf#nqh#nqo#nqs#nqv#nq!P#nq!Q#nq!T#nq!U#nq!X#nq!]#nq!h#nq!r#nq!s#nq!t#nq!{#nq!}#nq#P#nq#R#nq#T#nq#X#nq#Z#nq#^#nq#_#nq#a#nq#c#nq#l#nq#o#nq#s#nq#u#nq#z#nq#}#nq$P#nq%X#nq%o#nq%p#nq%t#nq%u#nq&Z#nq&[#nq&]#nq&^#nq&_#nq&`#nq&a#nq&b#nq&c#nq&d#nq&e#nq&f#nq&g#nq&h#nq&i#nq&j#nq%Z#nq%_#nq~O#[,WOz%Oa{%Oa~Oo0cOv0qO{&xi~P'vOz,YO{&xi~O{#{O%z,[Og&zXz&zX~O%uWOg&zXz&zX~Oz,`Og&yX~Og,bO~O%Y,eO~O!T%dO!U%cOg&Viz&Vi~OV$}Oa$}Oo0cOv0qOg&Ui~P'vO{,hOz$la!W$la~Oo0cOv0qO{,iOz$la!W$la~P'vOo0cOv0qO{*gO!W&Xi~P'vOz,lO!W&Xi~Oo0cOv0qOz,lO!W&Xi~P'vOz,lO{,oO!W&Xi~Og$hiz$hi!W$hi~P%SOV'|Oo0cOv0qO~P'vOn,qO~OV'|Og,rOo0cOv0qO~P'vOV'|Oo0cOv0qO!W&Sq~P'vOz$gi![$gi#g$gi%[$gi%_$gig$gi{$gi!m$gi%z$gi~P%SOV(]Oo0cOv0qO~P'vOa+QOo0cOv0qO![&Tq~P'vOz,sO![&Tq~O![,tO~OV(]Oo0cOv0qO![%}q#g%}q%[%}q%_%}qg%}q{%}q!m%}q%z%}q~P'vO{,uO~OV+UOo0cOv0qO{&li![&li!m&li%z&li~P'vOz,zO{&li![&li!m&li%z&li~O!]+YO&n+[O![!na~O{(kO![,}O~OV&OOo0cOv0qO#g%hi%[%hi%_%hi%z%hi~P'vOz-OO#g%hi%[%hi%_%hi%z%hi~O%uWO#g&rq%[&rq%_&rqg&rq~Oz-RO#g&rq%[&rq%_&rqg&rq~OV)`Oa)`O%uWO!W&ua~Oz-TO!W&ua~On$|iz$|i~P%SOV)kO~P'vOV)kOn&wq~P'vOt-XOP#myV#myf#myh#myo#mys#myv#my!P#my!Q#my!T#my!U#my!X#my!]#my!h#my!r#my!s#my!t#my!{#my!}#my#P#my#R#my#T#my#X#my#Z#my#^#my#_#my#a#my#c#my#l#my#o#my#s#my#u#my#z#my#}#my$P#my%X#my%o#my%p#my%t#my%u#my&Z#my&[#my&]#my&^#my&_#my&`#my&a#my&b#my&c#my&d#my&e#my&f#my&g#my&h#my&i#my&j#my%Z#my%_#my~O%Z-]O%_-]O~P`O#q-^OP#nyV#nyf#nyh#nyo#nys#nyv#ny!P#ny!Q#ny!T#ny!U#ny!X#ny!]#ny!h#ny!r#ny!s#ny!t#ny!{#ny!}#ny#P#ny#R#ny#T#ny#X#ny#Z#ny#^#ny#_#ny#a#ny#c#ny#l#ny#o#ny#s#ny#u#ny#z#ny#}#ny$P#ny%X#ny%o#ny%p#ny%t#ny%u#ny&Z#ny&[#ny&]#ny&^#ny&_#ny&`#ny&a#ny&b#ny&c#ny&d#ny&e#ny&f#ny&g#ny&h#ny&i#ny&j#ny%Z#ny%_#ny~Oz-aO{$jO#[-aO~Oo0cOv0qO{&xq~P'vOz-dO{&xq~O%z,[Og&zaz&za~O{#{Og&zaz&za~OV*SOa*TO%q*UO%uWOg&ya~Oz-hOg&ya~O$S-lO~OV$}Oa$}Oo0cOv0qO~P'vOo0cOv0qO{-mOz$li!W$li~P'vOo0cOv0qOz$li!W$li~P'vO{-mOz$li!W$li~Oo0cOv0qO{*gO~P'vOo0cOv0qO{*gO!W&Xq~P'vOz-pO!W&Xq~Oo0cOv0qOz-pO!W&Xq~P'vOs-sO!T%dO!U%cOg&Oq!W&Oq![&Oqz&Oq~P!/jOa+QOo0cOv0qO![&Ty~P'vOz$ji![$ji~P%SOa+QOo0cOv0qO~P'vOV+UOo0cOv0qO~P'vOV+UOo0cOv0qO{&lq![&lq!m&lq%z&lq~P'vO{(kO![-xO!m-yO%z-wO~OV&OOo0cOv0qO#g%hq%[%hq%_%hq%z%hq~P'vO%uWO#g&ry%[&ry%_&ryg&ry~OV)`Oa)`O%uWO!W&ui~Ot-}OP#m!RV#m!Rf#m!Rh#m!Ro#m!Rs#m!Rv#m!R!P#m!R!Q#m!R!T#m!R!U#m!R!X#m!R!]#m!R!h#m!R!r#m!R!s#m!R!t#m!R!{#m!R!}#m!R#P#m!R#R#m!R#T#m!R#X#m!R#Z#m!R#^#m!R#_#m!R#a#m!R#c#m!R#l#m!R#o#m!R#s#m!R#u#m!R#z#m!R#}#m!R$P#m!R%X#m!R%o#m!R%p#m!R%t#m!R%u#m!R&Z#m!R&[#m!R&]#m!R&^#m!R&_#m!R&`#m!R&a#m!R&b#m!R&c#m!R&d#m!R&e#m!R&f#m!R&g#m!R&h#m!R&i#m!R&j#m!R%Z#m!R%_#m!R~Oo0cOv0qO{&xy~P'vOV*SOa*TO%q*UO%uWOg&yi~O$S-lO%Z.VO%_.VO~OV.aOh._O!X.^O!].`O!h.YO!s.[O!t.[O%p.XO%uWO&Z]O&[]O&]]O&^]O&_]O&`]O&a]O&b]O~Oo0cOv0qOz$lq!W$lq~P'vO{.fOz$lq!W$lq~Oo0cOv0qO{*gO!W&Xy~P'vOz.gO!W&Xy~Oo0cOv.kO~P'vOs-sO!T%dO!U%cOg&Oy!W&Oy![&Oyz&Oy~P!/jO{(kO![.nO~O{(kO![.nO!m.oO~OV*SOa*TO%q*UO%uWO~Oh.tO!f.rOz$TX#[$TX%j$TXg$TX~Os$TX{$TX!W$TX![$TX~P$-bO%o.vO%p.vOs$UXz$UX{$UX#[$UX%j$UX!W$UXg$UX![$UX~O!h.xO~Oz.|O#[/OO%j.yOs&|X{&|X!W&|Xg&|X~Oa/RO~P$)zOh.tOs&}Xz&}X{&}X#[&}X%j&}X!W&}Xg&}X![&}X~Os/VO{$jO~Oo0cOv0qOz$ly!W$ly~P'vOo0cOv0qO{*gO!W&X!R~P'vOz/ZO!W&X!R~Og&RXs&RX!T&RX!U&RX!W&RX![&RXz&RX~P!/jOs-sO!T%dO!U%cOg&Qa!W&Qa![&Qaz&Qa~O{(kO![/^O~O!f.rOh$[as$[az$[a{$[a#[$[a%j$[a!W$[ag$[a![$[a~O!h/eO~O%o.vO%p.vOs$Uaz$Ua{$Ua#[$Ua%j$Ua!W$Uag$Ua![$Ua~O%j.yOs$Yaz$Ya{$Ya#[$Ya!W$Yag$Ya![$Ya~Os&|a{&|a!W&|ag&|a~P$)nOz/jOs&|a{&|a!W&|ag&|a~O!W/mO~Og/mO~O{/oO~O![/pO~Oo0cOv0qO{*gO!W&X!Z~P'vO{/sO~O%z/tO~P$-bOz/uO#[/OO%j.yOg'PX~Oz/uOg'PX~Og/wO~O!h/xO~O#[/OOs%Saz%Sa{%Sa%j%Sa!W%Sag%Sa![%Sa~O#[/OO%j.yOs%Waz%Wa{%Wa!W%Wag%Wa~Os&|i{&|i!W&|ig&|i~P$)nOz/zO#[/OO%j.yO!['Oa~Og'Pa~P$)nOz0SOg'Pa~Oa0UO!['Oi~P$)zOz0WO!['Oi~Oz0WO#[/OO%j.yO!['Oi~O#[/OO%j.yOg$biz$bi~O%z0ZO~P$-bO#[/OO%j.yOg%Vaz%Va~Og'Pi~P$)nO{0^O~Oa0UO!['Oq~P$)zOz0`O!['Oq~O#[/OO%j.yOz%Ui![%Ui~Oa0UO~P$)zOa0UO!['Oy~P$)zO#[/OO%j.yOg$ciz$ci~O#[/OO%j.yOz%Uq![%Uq~Oz+aO#g%ha%[%ha%_%ha%z%ha~P%SOV&OOo0cOv0qO~P'vOn0hO~Oo0hO~P'vO{0iO~Ot0jO~P!/jO&]&Z&j&h&i&g&f&d&e&c&b&`&a&_&^&[%u~",goto:"!=j'QPPPPPP'RP'Z*s+[+t,_,y-fP.SP'Z.r.r'ZPPP'Z2[PPPPPP2[5PPP5PP7b7k=sPP=v>h>kPP'Z'ZPP>zPP'Z'ZPP'Z'Z'Z'Z'Z?O?w'ZP?zP@QDXGuGyPG|HWH['ZPPPH_Hk'RP'R'RP'RP'RP'RP'RP'R'R'RP'RPP'RPP'RP'RPHqH}IVPI^IdPI^PI^I^PPPI^PKrPK{LVL]KrPI^LfPI^PLmLsPLwM]MzNeLwLwNkNxLwLwLwLw! ^! d! g! l! o! y!!P!!]!!o!!u!#P!#V!#s!#y!$P!$Z!$a!$g!$y!%T!%Z!%a!%k!%q!%w!%}!&T!&Z!&e!&k!&u!&{!'U!'[!'k!'s!'}!(UPPPPPPPPPPP!([!(_!(e!(n!(x!)TPPPPPPPPPPPP!-u!/Z!3^!6oPP!6w!7W!7a!8Y!8P!8c!8i!8l!8o!8r!8z!9jPPPPPPPPPPPPPPPPP!9m!9q!9wP!:]!:a!:m!:v!;S!;j!;m!;p!;v!;|!_![!]Do!]!^Es!^!_FZ!_!`Gk!`!aHX!a!b%T!b!cIf!c!dJU!d!eK^!e!hJU!h!i!#f!i!tJU!t!u!,|!u!wJU!w!x!.t!x!}JU!}#O!0S#O#P&o#P#Q!0j#Q#R!1Q#R#SJU#S#T%T#T#UJU#U#VK^#V#YJU#Y#Z!#f#Z#fJU#f#g!,|#g#iJU#i#j!.t#j#oJU#o#p!1n#p#q!1s#q#r!2a#r#s!2f#s$g%T$g;'SJU;'S;=`KW<%lOJU`%YT&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T`%lP;=`<%l%To%v]&n`%c_OX%TXY%oY[%T[]%o]p%Tpq%oq#O%T#O#P&o#P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To&tX&n`OY%TYZ%oZ]%T]^%o^#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc'f[&n`O!_%T!_!`([!`#T%T#T#U(r#U#f%T#f#g(r#g#h(r#h#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(cTmR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc(yT!mR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk)aV&n`&[ZOr%Trs)vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk){V&n`Or%Trs*bs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk*iT&n`&^ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To+PZS_&n`OY*xYZ%TZ]*x]^%T^#o*x#o#p+r#p#q*x#q#r+r#r;'S*x;'S;=`,^<%lO*x_+wTS_OY+rZ]+r^;'S+r;'S;=`,W<%lO+r_,ZP;=`<%l+ro,aP;=`<%l*xj,kV%rQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-XT!xY&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj-oV%lQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.]V&n`&ZZOw%Twx.rx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk.wV&n`Ow%Twx/^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/eT&n`&]ZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk/{ThZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc0cTgR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk0yXVZ&n`Oz%Tz{1f{!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk1mVaR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk2ZV%oZ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc2wTzR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To3_W%pZ&n`O!_%T!_!`-Q!`!a3w!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Td4OT&{S&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk4fX!fQ&n`O!O%T!O!P5R!P!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5WV&n`O!O%T!O!P5m!P#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk5tT!rZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti6[a!hX&n`O!Q%T!Q![6T![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S6T#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti7fZ&n`O{%T{|8X|}%T}!O8X!O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8^V&n`O!Q%T!Q![8s![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti8z]!hX&n`O!Q%T!Q![8s![!l%T!l!m9s!m#R%T#R#S8s#S#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti9zT!hX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk:bX%qR&n`O!P%T!P!Q:}!Q!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj;UV%sQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti;ro!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!d%T!d!e?q!e!g%T!g!h7a!h!l%T!l!m9s!m!q%T!q!rA]!r!z%T!z!{Bq!{#R%T#R#S>_#S#U%T#U#V?q#V#X%T#X#Y7a#Y#^%T#^#_9s#_#c%T#c#dA]#d#l%T#l#mBq#m#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti=xV&n`O!Q%T!Q![6T![#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti>fc!hX&n`O!O%T!O!P=s!P!Q%T!Q![>_![!g%T!g!h7a!h!l%T!l!m9s!m#R%T#R#S>_#S#X%T#X#Y7a#Y#^%T#^#_9s#_#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti?vY&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Ti@mY!hX&n`O!Q%T!Q!R@f!R!S@f!S#R%T#R#S@f#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiAbX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBUX!hX&n`O!Q%T!Q!YA}!Y#R%T#R#SA}#S#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiBv]&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TiCv]!hX&n`O!Q%T!Q![Co![!c%T!c!iCo!i#R%T#R#SCo#S#T%T#T#ZCo#Z#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToDvV{_&n`O!_%T!_!`E]!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TcEdT%{R&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkEzT#gZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkFbXmR&n`O!^%T!^!_F}!_!`([!`!a([!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjGUV%mQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkGrV%zZ&n`O!_%T!_!`([!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkH`WmR&n`O!_%T!_!`([!`!aHx!a#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TjIPV%nQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkIoV_Q#}P&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%ToJ_]&n`&YS%uZO!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoKZP;=`<%lJUoKge&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!tJU!t!uLx!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#gLx#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUoMRa&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUkN_V&n`&`ZOr%TrsNts#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%TkNyV&n`Or%Trs! `s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! gT&n`&bZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk! }V&n`&_ZOw%Twx!!dx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!!iV&n`Ow%Twx!#Ox#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!#VT&n`&aZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!#oe&n`&YS%uZOr%Trs!%Qsw%Twx!&px!Q%T!Q![JU![!c%T!c!tJU!t!u!(`!u!}JU!}#R%T#R#SJU#S#T%T#T#fJU#f#g!(`#g#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!%XV&n`&dZOr%Trs!%ns#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!%sV&n`Or%Trs!&Ys#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&aT&n`&fZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!&wV&n`&cZOw%Twx!'^x#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!'cV&n`Ow%Twx!'xx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!(PT&n`&eZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!(ia&n`&YS%uZOr%Trs!)nsw%Twx!+^x!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!)uV&n`&hZOr%Trs!*[s#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*aV&n`Or%Trs!*vs#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!*}T&n`&jZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!+eV&n`&gZOw%Twx!+zx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,PV&n`Ow%Twx!,fx#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tk!,mT&n`&iZO#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%To!-Vi&n`&YS%uZOr%TrsNWsw%Twx! vx!Q%T!Q![JU![!c%T!c!dJU!d!eLx!e!hJU!h!i!(`!i!}JU!}#R%T#R#SJU#S#T%T#T#UJU#U#VLx#V#YJU#Y#Z!(`#Z#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUo!.}a&n`&YS%uZOr%Trs)Ysw%Twx.Ux!Q%T!Q![JU![!c%T!c!}JU!}#R%T#R#SJU#S#T%T#T#oJU#p#q%T#r$g%T$g;'SJU;'S;=`KW<%lOJUk!0ZT!XZ&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tc!0qT!WR&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%Tj!1XV%kQ&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!1sO!]~k!1zV%jR&n`O!_%T!_!`-Q!`#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T~!2fO![~i!2mT%tX&n`O#o%T#p#q%T#r;'S%T;'S;=`%i<%lO%T",tokenizers:[p0e,d0e,u0e,g0e,0,1,2,3,4],topRules:{Script:[0,5]},specialized:[{term:221,get:t=>y0e[t]||-1}],tokenPrec:7668}),wA=new Ice,NH=new Set(["Script","Body","FunctionDefinition","ClassDefinition","LambdaExpression","ForStatement","MatchClause"]);function T1(t){return(e,n,r)=>{if(r)return!1;let s=e.node.getChild("VariableName");return s&&n(s,t),!0}}const w0e={FunctionDefinition:T1("function"),ClassDefinition:T1("class"),ForStatement(t,e,n){if(n){for(let r=t.node.firstChild;r;r=r.nextSibling)if(r.name=="VariableName")e(r,"variable");else if(r.name=="in")break}},ImportStatement(t,e){var n,r;let{node:s}=t,i=((n=s.firstChild)===null||n===void 0?void 0:n.name)=="from";for(let a=s.getChild("import");a;a=a.nextSibling)a.name=="VariableName"&&((r=a.nextSibling)===null||r===void 0?void 0:r.name)!="as"&&e(a,i?"variable":"namespace")},AssignStatement(t,e){for(let n=t.node.firstChild;n;n=n.nextSibling)if(n.name=="VariableName")e(n,"variable");else if(n.name==":"||n.name=="AssignOp")break},ParamList(t,e){for(let n=null,r=t.node.firstChild;r;r=r.nextSibling)r.name=="VariableName"&&(!n||!/\*|AssignOp/.test(n.name))&&e(r,"variable"),n=r},CapturePattern:T1("variable"),AsPattern:T1("variable"),__proto__:null};function CH(t,e){let n=wA.get(e);if(n)return n;let r=[],s=!0;function i(a,l){let c=t.sliceString(a.from,a.to);r.push({label:c,type:l})}return e.cursor(hs.IncludeAnonymous).iterate(a=>{if(a.name){let l=w0e[a.name];if(l&&l(a,i,s)||!s&&NH.has(a.name))return!1;s=!1}else if(a.to-a.from>8192){for(let l of CH(t,a.node))r.push(l);return!1}}),wA.set(e,r),r}const SA=/^[\w\xa1-\uffff][\w\d\xa1-\uffff]*$/,TH=["String","FormatString","Comment","PropertyName"];function S0e(t){let e=Ss(t.state).resolveInner(t.pos,-1);if(TH.indexOf(e.name)>-1)return null;let n=e.name=="VariableName"||e.to-e.from<20&&SA.test(t.state.sliceDoc(e.from,e.to));if(!n&&!t.explicit)return null;let r=[];for(let s=e;s;s=s.parent)NH.has(s.name)&&(r=r.concat(CH(t.state.doc,s)));return{options:r,from:n?e.from:t.pos,validFor:SA}}const k0e=["__annotations__","__builtins__","__debug__","__doc__","__import__","__name__","__loader__","__package__","__spec__","False","None","True"].map(t=>({label:t,type:"constant"})).concat(["ArithmeticError","AssertionError","AttributeError","BaseException","BlockingIOError","BrokenPipeError","BufferError","BytesWarning","ChildProcessError","ConnectionAbortedError","ConnectionError","ConnectionRefusedError","ConnectionResetError","DeprecationWarning","EOFError","Ellipsis","EncodingWarning","EnvironmentError","Exception","FileExistsError","FileNotFoundError","FloatingPointError","FutureWarning","GeneratorExit","IOError","ImportError","ImportWarning","IndentationError","IndexError","InterruptedError","IsADirectoryError","KeyError","KeyboardInterrupt","LookupError","MemoryError","ModuleNotFoundError","NameError","NotADirectoryError","NotImplemented","NotImplementedError","OSError","OverflowError","PendingDeprecationWarning","PermissionError","ProcessLookupError","RecursionError","ReferenceError","ResourceWarning","RuntimeError","RuntimeWarning","StopAsyncIteration","StopIteration","SyntaxError","SyntaxWarning","SystemError","SystemExit","TabError","TimeoutError","TypeError","UnboundLocalError","UnicodeDecodeError","UnicodeEncodeError","UnicodeError","UnicodeTranslateError","UnicodeWarning","UserWarning","ValueError","Warning","ZeroDivisionError"].map(t=>({label:t,type:"type"}))).concat(["bool","bytearray","bytes","classmethod","complex","float","frozenset","int","list","map","memoryview","object","range","set","staticmethod","str","super","tuple","type"].map(t=>({label:t,type:"class"}))).concat(["abs","aiter","all","anext","any","ascii","bin","breakpoint","callable","chr","compile","delattr","dict","dir","divmod","enumerate","eval","exec","exit","filter","format","getattr","globals","hasattr","hash","help","hex","id","input","isinstance","issubclass","iter","len","license","locals","max","min","next","oct","open","ord","pow","print","property","quit","repr","reversed","round","setattr","slice","sorted","sum","vars","zip"].map(t=>({label:t,type:"function"}))),O0e=[wl("def ${name}(${params}):\n ${}",{label:"def",detail:"function",type:"keyword"}),wl("for ${name} in ${collection}:\n ${}",{label:"for",detail:"loop",type:"keyword"}),wl("while ${}:\n ${}",{label:"while",detail:"loop",type:"keyword"}),wl("try:\n ${}\nexcept ${error}:\n ${}",{label:"try",detail:"/ except block",type:"keyword"}),wl(`if \${}: - -`,{label:"if",detail:"block",type:"keyword"}),wl("if ${}:\n ${}\nelse:\n ${}",{label:"if",detail:"/ else block",type:"keyword"}),wl("class ${name}:\n def __init__(self, ${params}):\n ${}",{label:"class",detail:"definition",type:"keyword"}),wl("import ${module}",{label:"import",detail:"statement",type:"keyword"}),wl("from ${module} import ${names}",{label:"from",detail:"import",type:"keyword"})],j0e=Che(TH,nH(k0e.concat(O0e)));function pS(t){let{node:e,pos:n}=t,r=t.lineIndent(n,-1),s=null;for(;;){let i=e.childBefore(n);if(i)if(i.name=="Comment")n=i.from;else if(i.name=="Body"||i.name=="MatchBody")t.baseIndentFor(i)+t.unit<=r&&(s=i),e=i;else if(i.name=="MatchClause")e=i;else if(i.type.is("Statement"))e=i;else break;else break}return s}function gS(t,e){let n=t.baseIndentFor(e),r=t.lineAt(t.pos,-1),s=r.from+r.text.length;return/^\s*($|#)/.test(r.text)&&t.node.ton?null:n+t.unit}const xS=J0.define({name:"python",parser:b0e.configure({props:[vb.add({Body:t=>{var e;let n=/^\s*(#|$)/.test(t.textAfter)&&pS(t)||t.node;return(e=gS(t,n))!==null&&e!==void 0?e:t.continue()},MatchBody:t=>{var e;let n=pS(t);return(e=gS(t,n||t.node))!==null&&e!==void 0?e:t.continue()},IfStatement:t=>/^\s*(else:|elif )/.test(t.textAfter)?t.baseIndent:t.continue(),"ForStatement WhileStatement":t=>/^\s*else:/.test(t.textAfter)?t.baseIndent:t.continue(),TryStatement:t=>/^\s*(except[ :]|finally:|else:)/.test(t.textAfter)?t.baseIndent:t.continue(),MatchStatement:t=>/^\s*case /.test(t.textAfter)?t.baseIndent+t.unit:t.continue(),"TupleExpression ComprehensionExpression ParamList ArgList ParenthesizedExpression":J4({closing:")"}),"DictionaryExpression DictionaryComprehensionExpression SetExpression SetComprehensionExpression":J4({closing:"}"}),"ArrayExpression ArrayComprehensionExpression":J4({closing:"]"}),MemberExpression:t=>t.baseIndent+t.unit,"String FormatString":()=>null,Script:t=>{var e;let n=pS(t);return(e=n&&gS(t,n))!==null&&e!==void 0?e:t.continue()}}),N6.add({"ArrayExpression DictionaryExpression SetExpression TupleExpression":Gq,Body:(t,e)=>({from:t.from+1,to:t.to-(t.to==e.doc.length?0:1)}),"String FormatString":(t,e)=>({from:e.doc.lineAt(t.from).to,to:t.to})})]}),languageData:{closeBrackets:{brackets:["(","[","{","'",'"',"'''",'"""'],stringPrefixes:["f","fr","rf","r","u","b","br","rb","F","FR","RF","R","U","B","BR","RB"]},commentTokens:{line:"#"},indentOnInput:/^\s*([\}\]\)]|else:|elif |except |finally:|case\s+[^:]*:?)$/}});function N0e(){return new Vq(xS,[xS.data.of({autocomplete:S0e}),xS.data.of({autocomplete:j0e})])}const C0e=k6({String:ye.string,Number:ye.number,"True False":ye.bool,PropertyName:ye.propertyName,Null:ye.null,", :":ye.separator,"[ ]":ye.squareBracket,"{ }":ye.brace}),T0e=lp.deserialize({version:14,states:"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l",stateData:"#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O",goto:"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R",nodeNames:"⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array",maxTerm:25,nodeProps:[["isolate",-2,6,11,""],["openedBy",7,"{",14,"["],["closedBy",8,"}",15,"]"]],propSources:[C0e],skippedNodes:[0],repeatNodeCount:2,tokenData:"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~",tokenizers:[0],topRules:{JsonText:[0,1]},tokenPrec:0}),E0e=()=>t=>{try{JSON.parse(t.state.doc.toString())}catch(e){if(!(e instanceof SyntaxError))throw e;const n=_0e(e,t.state.doc);return[{from:n,message:e.message,severity:"error",to:n}]}return[]};function _0e(t,e){let n;return(n=t.message.match(/at position (\d+)/))?Math.min(+n[1],e.length):(n=t.message.match(/at line (\d+) column (\d+)/))?Math.min(e.line(+n[1]).from+ +n[2]-1,e.length):0}const A0e=J0.define({name:"json",parser:T0e.configure({props:[vb.add({Object:k_({except:/^\s*\}/}),Array:k_({except:/^\s*\]/})}),N6.add({"Object Array":Gq})]}),languageData:{closeBrackets:{brackets:["[","{",'"']},indentOnInput:/^\s*[\}\]]$/}});function M0e(){return new Vq(A0e)}const R0e={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(t,e){let n;if(!e.inString&&(n=t.match(/^('''|"""|'|")/))&&(e.stringType=n[0],e.inString=!0),t.sol()&&!e.inString&&e.inArray===0&&(e.lhs=!0),e.inString){for(;e.inString;)if(t.match(e.stringType))e.inString=!1;else if(t.peek()==="\\")t.next(),t.next();else{if(t.eol())break;t.match(/^.[^\\\"\']*/)}return e.lhs?"property":"string"}else{if(e.inArray&&t.peek()==="]")return t.next(),e.inArray--,"bracket";if(e.lhs&&t.peek()==="["&&t.skipTo("]"))return t.next(),t.peek()==="]"&&t.next(),"atom";if(t.peek()==="#")return t.skipToEnd(),"comment";if(t.eatSpace())return null;if(e.lhs&&t.eatWhile(function(r){return r!="="&&r!=" "}))return"property";if(e.lhs&&t.peek()==="=")return t.next(),e.lhs=!1,null;if(!e.lhs&&t.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!e.lhs&&(t.match("true")||t.match("false")))return"atom";if(!e.lhs&&t.peek()==="[")return e.inArray++,t.next(),"bracket";if(!e.lhs&&t.match(/^\-?\d+(?:\.\d+)?/))return"number";t.eatSpace()||t.next()}return null},languageData:{commentTokens:{line:"#"}}},D0e={python:[N0e()],json:[M0e(),E0e()],toml:[C6.define(R0e)],text:[]};function P0e({value:t,onChange:e,language:n="text",readOnly:r=!1,height:s="400px",minHeight:i,maxHeight:a,placeholder:l,theme:c="dark",className:d=""}){const[h,m]=b.useState(!1);if(b.useEffect(()=>{m(!0)},[]),!h)return o.jsx("div",{className:`rounded-md border bg-muted animate-pulse ${d}`,style:{height:s,minHeight:i,maxHeight:a}});const g=[...D0e[n]||[],Ze.lineWrapping];return r&&g.push(Ze.editable.of(!1)),o.jsx("div",{className:`rounded-md overflow-hidden border ${d}`,children:o.jsx(vH,{value:t,height:s,minHeight:i,maxHeight:a,theme:c==="dark"?xH:void 0,extensions:g,onChange:e,placeholder:l,basicSetup:{lineNumbers:!0,highlightActiveLineGutter:!0,highlightSpecialChars:!0,history:!0,foldGutter:!0,drawSelection:!0,dropCursor:!0,allowMultipleSelections:!0,indentOnInput:!0,syntaxHighlighting:!0,bracketMatching:!0,closeBrackets:!0,autocompletion:!0,rectangularSelection:!0,crosshairCursor:!0,highlightActiveLine:!0,highlightSelectionMatches:!0,closeBracketsKeymap:!0,defaultKeymap:!0,searchKeymap:!0,historyKeymap:!0,foldKeymap:!0,completionKeymap:!0,lintKeymap:!0}})})}function z0e(){const[t,e]=b.useState(!0),[n,r]=b.useState(!1),[s,i]=b.useState(!1),[a,l]=b.useState(!1),[c,d]=b.useState(!1),[h,m]=b.useState(!1),[g,x]=b.useState("visual"),[y,w]=b.useState(""),[S,k]=b.useState(!1),{toast:j}=Lr(),[N,T]=b.useState(null),[E,_]=b.useState(null),[A,D]=b.useState(null),[q,B]=b.useState(null),[H,W]=b.useState(null),[ee,I]=b.useState(null),[V,L]=b.useState(null),[$,K]=b.useState(null),[Y,R]=b.useState(null),[ie,X]=b.useState(null),[z,U]=b.useState(null),[te,ne]=b.useState(null),[G,se]=b.useState(null),[re,ae]=b.useState(null),[_e,Be]=b.useState(null),[Ye,Je]=b.useState(null),[Oe,Ve]=b.useState(null),[Ue,$e]=b.useState(null),jt=b.useRef(null),vt=b.useRef(!0),$n=b.useRef({}),qt=b.useCallback(async()=>{try{const We=await kae();w(We),k(!1)}catch(We){j({variant:"destructive",title:"加载失败",description:We instanceof Error?We.message:"加载源代码失败"})}},[j]),un=b.useCallback(async()=>{try{e(!0);const We=await dE();$n.current=We,T(We.bot),_(We.personality);const ot=We.chat;ot.talk_value_rules||(ot.talk_value_rules=[]),D(ot),B(We.expression),W(We.emoji),I(We.memory),L(We.tool),K(We.mood),R(We.voice),X(We.lpmm_knowledge),U(We.keyword_reaction),ne(We.response_post_process),se(We.chinese_typo),ae(We.response_splitter),Be(We.log),Je(We.debug),Ve(We.maim_message),$e(We.telemetry),l(!1),vt.current=!1,await qt()}catch(We){console.error("加载配置失败:",We),j({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}finally{e(!1)}},[j,qt]);b.useEffect(()=>{un()},[un]);const Mt=b.useCallback(async(We,ot)=>{if(!vt.current)try{i(!0),await jae(We,ot),l(!1)}catch(dn){console.error(`自动保存 ${We} 失败:`,dn),l(!0)}finally{i(!1)}},[]),ct=b.useCallback((We,ot)=>{vt.current||(l(!0),jt.current&&clearTimeout(jt.current),jt.current=setTimeout(()=>{Mt(We,ot)},2e3))},[Mt]);b.useEffect(()=>{N&&!vt.current&&ct("bot",N)},[N,ct]),b.useEffect(()=>{E&&!vt.current&&ct("personality",E)},[E,ct]),b.useEffect(()=>{A&&!vt.current&&ct("chat",A)},[A,ct]),b.useEffect(()=>{q&&!vt.current&&ct("expression",q)},[q,ct]),b.useEffect(()=>{H&&!vt.current&&ct("emoji",H)},[H,ct]),b.useEffect(()=>{ee&&!vt.current&&ct("memory",ee)},[ee,ct]),b.useEffect(()=>{V&&!vt.current&&ct("tool",V)},[V,ct]),b.useEffect(()=>{$&&!vt.current&&ct("mood",$)},[$,ct]),b.useEffect(()=>{Y&&!vt.current&&ct("voice",Y)},[Y,ct]),b.useEffect(()=>{ie&&!vt.current&&ct("lpmm_knowledge",ie)},[ie,ct]),b.useEffect(()=>{z&&!vt.current&&ct("keyword_reaction",z)},[z,ct]),b.useEffect(()=>{te&&!vt.current&&ct("response_post_process",te)},[te,ct]),b.useEffect(()=>{G&&!vt.current&&ct("chinese_typo",G)},[G,ct]),b.useEffect(()=>{re&&!vt.current&&ct("response_splitter",re)},[re,ct]),b.useEffect(()=>{_e&&!vt.current&&ct("log",_e)},[_e,ct]),b.useEffect(()=>{Ye&&!vt.current&&ct("debug",Ye)},[Ye,ct]),b.useEffect(()=>{Oe&&!vt.current&&ct("maim_message",Oe)},[Oe,ct]),b.useEffect(()=>{Ue&&!vt.current&&ct("telemetry",Ue)},[Ue,ct]);const Ne=async()=>{try{r(!0),await Oae(y),l(!1),k(!1),j({title:"保存成功",description:"配置已保存"}),await un()}catch(We){k(!0),j({variant:"destructive",title:"保存失败",description:We instanceof Error?We.message:"保存配置失败"})}finally{r(!1)}},ze=async We=>{if(a){j({variant:"destructive",title:"切换失败",description:"请先保存当前更改"});return}if(x(We),We==="source")await qt();else try{const ot=await dE();$n.current=ot,T(ot.bot),_(ot.personality);const dn=ot.chat;dn.talk_value_rules||(dn.talk_value_rules=[]),D(dn),B(ot.expression),W(ot.emoji),I(ot.memory),L(ot.tool),K(ot.mood),R(ot.voice),X(ot.lpmm_knowledge),U(ot.keyword_reaction),ne(ot.response_post_process),se(ot.chinese_typo),ae(ot.response_splitter),Be(ot.log),Je(ot.debug),Ve(ot.maim_message),$e(ot.telemetry),l(!1)}catch(ot){console.error("加载配置失败:",ot),j({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}},rt=async()=>{try{r(!0),jt.current&&clearTimeout(jt.current);const We={...$n.current,bot:N,personality:E,chat:A,expression:q,emoji:H,memory:ee,tool:V,mood:$,voice:Y,lpmm_knowledge:ie,keyword_reaction:z,response_post_process:te,chinese_typo:G,response_splitter:re,log:_e,debug:Ye,maim_message:Oe,telemetry:Ue};await hE(We),l(!1),j({title:"保存成功",description:"麦麦主程序配置已保存"})}catch(We){console.error("保存配置失败:",We),j({title:"保存失败",description:We.message,variant:"destructive"})}finally{r(!1)}},bt=async()=>{try{d(!0),cb().catch(()=>{}),m(!0)}catch(We){console.error("重启失败:",We),m(!1),j({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),d(!1)}},zt=async()=>{try{r(!0),jt.current&&clearTimeout(jt.current);const We={...$n.current,bot:N,personality:E,chat:A,expression:q,emoji:H,memory:ee,tool:V,mood:$,voice:Y,lpmm_knowledge:ie,keyword_reaction:z,response_post_process:te,chinese_typo:G,response_splitter:re,log:_e,debug:Ye,maim_message:Oe,telemetry:Ue};await hE(We),l(!1),j({title:"保存成功",description:"配置已保存,即将重启麦麦..."}),await new Promise(ot=>setTimeout(ot,500)),await bt()}catch(We){console.error("保存失败:",We),j({title:"保存失败",description:We.message,variant:"destructive"})}finally{r(!1)}},Rt=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},Hn=()=>{m(!1),d(!1),j({title:"重启失败",description:"服务器未能在预期时间内恢复,请手动检查",variant:"destructive"})};return t?o.jsx(pn,{className:"h-full",children:o.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:o.jsx("div",{className:"flex items-center justify-center h-64",children:o.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):o.jsx(pn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦主程序配置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的核心功能和行为设置"})]}),o.jsxs("div",{className:"flex gap-2 w-full sm:w-auto items-center",children:[o.jsx(Yi,{value:g,onValueChange:We=>ze(We),className:"w-auto",children:o.jsxs(ji,{className:"h-9",children:[o.jsxs(Bt,{value:"visual",className:"text-xs sm:text-sm px-2 sm:px-3",children:[o.jsx(Xee,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"可视化"]}),o.jsxs(Bt,{value:"source",className:"text-xs sm:text-sm px-2 sm:px-3",children:[o.jsx(Yee,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"源代码"]})]})}),o.jsxs(ue,{onClick:g==="visual"?rt:Ne,disabled:n||s||!a||c,size:"sm",variant:"outline",className:"flex-1 sm:flex-none",children:[o.jsx(zp,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),n?"保存中...":s?"自动保存中...":a?"保存配置":"已保存"]}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsxs(ue,{disabled:n||s||c,size:"sm",className:"flex-1 sm:flex-none",children:[o.jsx(Dp,{className:"mr-2 h-4 w-4"}),c?"重启中...":a?"保存并重启":"重启麦麦"]})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认重启麦麦?"}),o.jsx(zn,{className:"space-y-3",asChild:!0,children:o.jsxs("div",{children:[o.jsx("p",{children:a?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),o.jsxs(ba,{className:"border-yellow-500/50 bg-yellow-500/10",children:[o.jsx(Xi,{className:"h-4 w-4 text-yellow-600"}),o.jsxs(wa,{className:"text-yellow-900 dark:text-yellow-100",children:[o.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",o.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",o.jsxs(Er,{children:[o.jsx(Of,{asChild:!0,children:o.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[o.jsx(Zy,{className:"h-3 w-3"}),"如何结束程序?"]})}),o.jsxs(wr,{className:"max-w-2xl",children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"如何结束使用重启功能后的麦麦程序"}),o.jsx(Xr,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),o.jsxs(Yi,{defaultValue:"windows",className:"w-full",children:[o.jsxs(ji,{className:"grid w-full grid-cols-3",children:[o.jsx(Bt,{value:"windows",children:"Windows"}),o.jsx(Bt,{value:"macos",children:"macOS"}),o.jsx(Bt,{value:"linux",children:"Linux"})]}),o.jsxs(ln,{value:"windows",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),o.jsxs("li",{children:['在"进程"或"详细信息"标签页中找到 ',o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),o.jsx("li",{children:'右键点击并选择"结束任务"'})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),o.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),o.jsxs(ln,{value:"macos",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"}),' 打开 Spotlight,搜索"活动监视器"']}),o.jsxs("li",{children:["在进程列表中找到 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),o.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]})]}),o.jsxs(ln,{value:"linux",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),o.jsx("p",{children:'pkill -9 -f "bot.py"'}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["在终端输入 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),o.jsx(fs,{children:o.jsx(e6,{asChild:!0,children:o.jsx(ue,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:a?zt:bt,children:a?"保存并重启":"确认重启"})]})]})]})]})]}),o.jsxs(ba,{children:[o.jsx(Xi,{className:"h-4 w-4"}),o.jsxs(wa,{children:["配置更新后需要",o.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),g==="source"&&o.jsxs("div",{className:"space-y-4",children:[o.jsxs(ba,{children:[o.jsx(Xi,{className:"h-4 w-4"}),o.jsxs(wa,{children:[o.jsx("strong",{children:"源代码模式(高级功能):"}),"直接编辑 TOML 配置文件。此功能仅适用于熟悉 TOML 语法的高级用户。保存时会在后端验证格式,只有格式完全正确才能保存。",S&&o.jsx("span",{className:"text-destructive font-semibold ml-2",children:"⚠️ 上次保存失败,请检查 TOML 格式"})]})]}),o.jsx(P0e,{value:y,onChange:We=>{w(We),l(!0),S&&k(!1)},language:"toml",theme:"dark",height:"calc(100vh - 280px)",minHeight:"500px",placeholder:"TOML 配置内容"})]}),g==="visual"&&o.jsx(o.Fragment,{children:o.jsxs(Yi,{defaultValue:"bot",className:"w-full",children:[o.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:o.jsxs(ji,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5 lg:grid-cols-10",children:[o.jsx(Bt,{value:"bot",className:"flex-shrink-0",children:"基本信息"}),o.jsx(Bt,{value:"personality",className:"flex-shrink-0",children:"人格"}),o.jsx(Bt,{value:"chat",className:"flex-shrink-0",children:"聊天"}),o.jsx(Bt,{value:"expression",className:"flex-shrink-0",children:"表达"}),o.jsx(Bt,{value:"features",className:"flex-shrink-0",children:"功能"}),o.jsx(Bt,{value:"processing",className:"flex-shrink-0",children:"处理"}),o.jsx(Bt,{value:"mood",className:"flex-shrink-0",children:"情绪"}),o.jsx(Bt,{value:"voice",className:"flex-shrink-0",children:"语音"}),o.jsx(Bt,{value:"lpmm",className:"flex-shrink-0",children:"知识库"}),o.jsx(Bt,{value:"other",className:"flex-shrink-0",children:"其他"})]})}),o.jsx(ln,{value:"bot",className:"space-y-4",children:N&&o.jsx(I0e,{config:N,onChange:T})}),o.jsx(ln,{value:"personality",className:"space-y-4",children:E&&o.jsx(L0e,{config:E,onChange:_})}),o.jsx(ln,{value:"chat",className:"space-y-4",children:A&&o.jsx(B0e,{config:A,onChange:D})}),o.jsx(ln,{value:"expression",className:"space-y-4",children:q&&o.jsx(q0e,{config:q,onChange:B})}),o.jsx(ln,{value:"features",className:"space-y-4",children:H&&ee&&V&&o.jsx($0e,{emojiConfig:H,memoryConfig:ee,toolConfig:V,onEmojiChange:W,onMemoryChange:I,onToolChange:L})}),o.jsx(ln,{value:"processing",className:"space-y-4",children:z&&te&&G&&re&&o.jsx(H0e,{keywordReactionConfig:z,responsePostProcessConfig:te,chineseTypoConfig:G,responseSplitterConfig:re,onKeywordReactionChange:U,onResponsePostProcessChange:ne,onChineseTypoChange:se,onResponseSplitterChange:ae})}),o.jsx(ln,{value:"mood",className:"space-y-4",children:$&&o.jsx(Q0e,{config:$,onChange:K})}),o.jsx(ln,{value:"voice",className:"space-y-4",children:Y&&o.jsx(V0e,{config:Y,onChange:R})}),o.jsx(ln,{value:"lpmm",className:"space-y-4",children:ie&&o.jsx(U0e,{config:ie,onChange:X})}),o.jsxs(ln,{value:"other",className:"space-y-4",children:[_e&&o.jsx(W0e,{config:_e,onChange:Be}),Ye&&o.jsx(G0e,{config:Ye,onChange:Je}),Oe&&o.jsx(X0e,{config:Oe,onChange:Ve}),Ue&&o.jsx(Y0e,{config:Ue,onChange:$e})]})]})}),h&&o.jsx(r6,{onRestartComplete:Rt,onRestartFailed:Hn})]})})}function I0e({config:t,onChange:e}){const n=()=>{e({...t,platforms:[...t.platforms,""]})},r=c=>{e({...t,platforms:t.platforms.filter((d,h)=>h!==c)})},s=(c,d)=>{const h=[...t.platforms];h[c]=d,e({...t,platforms:h})},i=()=>{e({...t,alias_names:[...t.alias_names,""]})},a=c=>{e({...t,alias_names:t.alias_names.filter((d,h)=>h!==c)})},l=(c,d)=>{const h=[...t.alias_names];h[c]=d,e({...t,alias_names:h})};return o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"基本信息"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"platform",children:"平台"}),o.jsx(Pe,{id:"platform",value:t.platform,onChange:c=>e({...t,platform:c.target.value}),placeholder:"qq"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"qq_account",children:"QQ账号"}),o.jsx(Pe,{id:"qq_account",value:t.qq_account,onChange:c=>e({...t,qq_account:c.target.value}),placeholder:"123456789"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"nickname",children:"昵称"}),o.jsx(Pe,{id:"nickname",value:t.nickname,onChange:c=>e({...t,nickname:c.target.value}),placeholder:"麦麦"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{children:"其他平台账号"}),o.jsxs(ue,{onClick:n,size:"sm",variant:"outline",children:[o.jsx(Is,{className:"h-4 w-4 mr-1"}),"添加"]})]}),o.jsxs("div",{className:"space-y-2",children:[t.platforms.map((c,d)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Pe,{value:c,onChange:h=>s(d,h.target.value),placeholder:"wx:114514"}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsx(ue,{size:"icon",variant:"outline",children:o.jsx(Cn,{className:"h-4 w-4"})})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:['确定要删除平台账号 "',c||"(空)",'" 吗?此操作无法撤销。']})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>r(d),children:"删除"})]})]})]})]},d)),t.platforms.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无其他平台账号"})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{children:"别名"}),o.jsxs(ue,{onClick:i,size:"sm",variant:"outline",children:[o.jsx(Is,{className:"h-4 w-4 mr-1"}),"添加"]})]}),o.jsxs("div",{className:"space-y-2",children:[t.alias_names.map((c,d)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Pe,{value:c,onChange:h=>l(d,h.target.value),placeholder:"小麦"}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsx(ue,{size:"icon",variant:"outline",children:o.jsx(Cn,{className:"h-4 w-4"})})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:['确定要删除别名 "',c||"(空)",'" 吗?此操作无法撤销。']})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>a(d),children:"删除"})]})]})]})]},d)),t.alias_names.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无别名"})]})]})]})]})})}function L0e({config:t,onChange:e}){const n=()=>{e({...t,states:[...t.states,""]})},r=i=>{e({...t,states:t.states.filter((a,l)=>l!==i)})},s=(i,a)=>{const l=[...t.states];l[i]=a,e({...t,states:l})};return o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"人格设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"personality",children:"人格特质"}),o.jsx(Nr,{id:"personality",value:t.personality,onChange:i=>e({...t,personality:i.target.value}),placeholder:"描述人格特质和身份特征(建议120字以内)",rows:3}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"建议120字以内,描述人格特质和身份特征"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"reply_style",children:"表达风格"}),o.jsx(Nr,{id:"reply_style",value:t.reply_style,onChange:i=>e({...t,reply_style:i.target.value}),placeholder:"描述说话的表达风格和习惯",rows:3})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"interest",children:"兴趣"}),o.jsx(Nr,{id:"interest",value:t.interest,onChange:i=>e({...t,interest:i.target.value}),placeholder:"会影响麦麦对什么话题进行回复",rows:2})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"plan_style",children:"说话规则与行为风格"}),o.jsx(Nr,{id:"plan_style",value:t.plan_style,onChange:i=>e({...t,plan_style:i.target.value}),placeholder:"麦麦的说话规则和行为风格",rows:5})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"visual_style",children:"识图规则"}),o.jsx(Nr,{id:"visual_style",value:t.visual_style,onChange:i=>e({...t,visual_style:i.target.value}),placeholder:"识图时的处理规则",rows:3})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"private_plan_style",children:"私聊规则"}),o.jsx(Nr,{id:"private_plan_style",value:t.private_plan_style,onChange:i=>e({...t,private_plan_style:i.target.value}),placeholder:"私聊的说话规则和行为风格",rows:4})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{children:"状态列表(人格多样性)"}),o.jsxs(ue,{onClick:n,size:"sm",variant:"outline",children:[o.jsx(Is,{className:"h-4 w-4 mr-1"}),"添加状态"]})]}),o.jsx("div",{className:"space-y-2",children:t.states.map((i,a)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Nr,{value:i,onChange:l=>s(a,l.target.value),placeholder:"描述一个人格状态",rows:2}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsx(ue,{size:"icon",variant:"outline",children:o.jsx(Cn,{className:"h-4 w-4"})})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsx(zn,{children:"确定要删除这个人格状态吗?此操作无法撤销。"})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>r(a),children:"删除"})]})]})]})]},a))})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"state_probability",children:"状态替换概率"}),o.jsx(Pe,{id:"state_probability",type:"number",step:"0.1",min:"0",max:"1",value:t.state_probability,onChange:i=>e({...t,state_probability:parseFloat(i.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"每次构建人格时替换 personality 的概率(0.0-1.0)"})]})]})]})})}function B0e({config:t,onChange:e}){const n=()=>{e({...t,talk_value_rules:[...t.talk_value_rules,{target:"",time:"00:00-23:59",value:1}]})},r=l=>{e({...t,talk_value_rules:t.talk_value_rules.filter((c,d)=>d!==l)})},s=(l,c,d)=>{const h=[...t.talk_value_rules];h[l]={...h[l],[c]:d},e({...t,talk_value_rules:h})},i=({value:l,onChange:c})=>{const[d,h]=b.useState("00"),[m,g]=b.useState("00"),[x,y]=b.useState("23"),[w,S]=b.useState("59");b.useEffect(()=>{const j=l.split("-");if(j.length===2){const[N,T]=j,[E,_]=N.split(":"),[A,D]=T.split(":");E&&h(E.padStart(2,"0")),_&&g(_.padStart(2,"0")),A&&y(A.padStart(2,"0")),D&&S(D.padStart(2,"0"))}},[l]);const k=(j,N,T,E)=>{const _=`${j}:${N}-${T}:${E}`;c(_)};return o.jsxs(Bo,{children:[o.jsx(Fo,{asChild:!0,children:o.jsxs(ue,{variant:"outline",className:"w-full justify-start font-mono text-sm",children:[o.jsx(Mh,{className:"h-4 w-4 mr-2"}),l||"选择时间段"]})}),o.jsx(Ka,{className:"w-80",children:o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"font-medium text-sm mb-3",children:"开始时间"}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-xs",children:"小时"}),o.jsxs(Vt,{value:d,onValueChange:j=>{h(j),k(j,m,x,w)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:Array.from({length:24},(j,N)=>N).map(j=>o.jsx(De,{value:j.toString().padStart(2,"0"),children:j.toString().padStart(2,"0")},j))})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-xs",children:"分钟"}),o.jsxs(Vt,{value:m,onValueChange:j=>{g(j),k(d,j,x,w)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:Array.from({length:60},(j,N)=>N).map(j=>o.jsx(De,{value:j.toString().padStart(2,"0"),children:j.toString().padStart(2,"0")},j))})]})]})]})]}),o.jsxs("div",{children:[o.jsx("h4",{className:"font-medium text-sm mb-3",children:"结束时间"}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-xs",children:"小时"}),o.jsxs(Vt,{value:x,onValueChange:j=>{y(j),k(d,m,j,w)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:Array.from({length:24},(j,N)=>N).map(j=>o.jsx(De,{value:j.toString().padStart(2,"0"),children:j.toString().padStart(2,"0")},j))})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-xs",children:"分钟"}),o.jsxs(Vt,{value:w,onValueChange:j=>{S(j),k(d,m,x,j)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:Array.from({length:60},(j,N)=>N).map(j=>o.jsx(De,{value:j.toString().padStart(2,"0"),children:j.toString().padStart(2,"0")},j))})]})]})]})]})]})})]})},a=({rule:l})=>{const c=`{ target = "${l.target}", time = "${l.time}", value = ${l.value.toFixed(1)} }`;return o.jsxs(Bo,{children:[o.jsx(Fo,{asChild:!0,children:o.jsxs(ue,{variant:"outline",size:"sm",children:[o.jsx(Ji,{className:"h-4 w-4 mr-1"}),"预览"]})}),o.jsx(Ka,{className:"w-96",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),o.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:c}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"聊天设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"talk_value",children:"聊天频率(基础值)"}),o.jsx(Pe,{id:"talk_value",type:"number",step:"0.1",min:"0",max:"1",value:t.talk_value,onChange:l=>e({...t,talk_value:parseFloat(l.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"越小越沉默,范围 0-1"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"mentioned_bot_reply",checked:t.mentioned_bot_reply,onCheckedChange:l=>e({...t,mentioned_bot_reply:l})}),o.jsx(he,{htmlFor:"mentioned_bot_reply",className:"cursor-pointer",children:"启用提及必回复"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"max_context_size",children:"上下文长度"}),o.jsx(Pe,{id:"max_context_size",type:"number",min:"1",value:t.max_context_size,onChange:l=>e({...t,max_context_size:parseInt(l.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"planner_smooth",children:"规划器平滑"}),o.jsx(Pe,{id:"planner_smooth",type:"number",step:"1",min:"0",value:t.planner_smooth,onChange:l=>e({...t,planner_smooth:parseFloat(l.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"增大数值会减小 planner 负荷,推荐 1-5,0 为关闭"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"enable_talk_value_rules",checked:t.enable_talk_value_rules,onCheckedChange:l=>e({...t,enable_talk_value_rules:l})}),o.jsx(he,{htmlFor:"enable_talk_value_rules",className:"cursor-pointer",children:"启用动态发言频率规则"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"include_planner_reasoning",checked:t.include_planner_reasoning,onCheckedChange:l=>e({...t,include_planner_reasoning:l})}),o.jsx(he,{htmlFor:"include_planner_reasoning",className:"cursor-pointer",children:"将 planner 推理加入 replyer"})]})]})]}),t.enable_talk_value_rules&&o.jsxs("div",{className:"border-t pt-6",children:[o.jsxs("div",{className:"flex items-center justify-between mb-4",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"text-base font-semibold",children:"动态发言频率规则"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"按时段或聊天流ID调整发言频率,优先匹配具体聊天,再匹配全局规则"})]}),o.jsxs(ue,{onClick:n,size:"sm",children:[o.jsx(Is,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),t.talk_value_rules&&t.talk_value_rules.length>0?o.jsx("div",{className:"space-y-4",children:t.talk_value_rules.map((l,c)=>o.jsxs("div",{className:"rounded-lg border p-4 bg-muted/50 space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium text-muted-foreground",children:["规则 #",c+1]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(a,{rule:l}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsx(ue,{variant:"ghost",size:"sm",children:o.jsx(Cn,{className:"h-4 w-4 text-destructive"})})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:["确定要删除规则 #",c+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>r(c),children:"删除"})]})]})]})]})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"配置类型"}),o.jsxs(Vt,{value:l.target===""?"global":"specific",onValueChange:d=>{d==="global"?s(c,"target",""):s(c,"target","qq::group")},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"global",children:"全局配置"}),o.jsx(De,{value:"specific",children:"详细配置"})]})]})]}),l.target!==""&&(()=>{const d=l.target.split(":"),h=d[0]||"qq",m=d[1]||"",g=d[2]||"group";return o.jsxs("div",{className:"grid gap-4 p-4 rounded-lg bg-muted/50",children:[o.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"平台"}),o.jsxs(Vt,{value:h,onValueChange:x=>{s(c,"target",`${x}:${m}:${g}`)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"qq",children:"QQ"}),o.jsx(De,{value:"wx",children:"微信"})]})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"群 ID"}),o.jsx(Pe,{value:m,onChange:x=>{s(c,"target",`${h}:${x.target.value}:${g}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"类型"}),o.jsxs(Vt,{value:g,onValueChange:x=>{s(c,"target",`${h}:${m}:${x}`)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"group",children:"群组(group)"}),o.jsx(De,{value:"private",children:"私聊(private)"})]})]})]})]}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",l.target||"(未设置)"]})]})})(),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"时间段 (Time)"}),o.jsx(i,{value:l.time,onChange:d=>s(c,"time",d)}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"支持跨夜区间,例如 23:00-02:00"})]}),o.jsxs("div",{className:"grid gap-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{htmlFor:`rule-value-${c}`,className:"text-xs font-medium",children:"发言频率值 (Value)"}),o.jsx(Pe,{id:`rule-value-${c}`,type:"number",step:"0.01",min:"0.01",max:"1",value:l.value,onChange:d=>{const h=parseFloat(d.target.value);isNaN(h)||s(c,"value",Math.max(.01,Math.min(1,h)))},className:"w-20 h-8 text-xs"})]}),o.jsx(Nf,{value:[l.value],onValueChange:d=>s(c,"value",d[0]),min:.01,max:1,step:.01,className:"w-full"}),o.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[o.jsx("span",{children:"0.01 (极少发言)"}),o.jsx("span",{children:"0.5"}),o.jsx("span",{children:"1.0 (正常)"})]})]})]})]},c))}):o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:o.jsx("p",{className:"text-sm",children:'暂无规则,点击"添加规则"按钮创建'})}),o.jsxs("div",{className:"mt-4 p-4 bg-blue-50 dark:bg-blue-950/20 border border-blue-200 dark:border-blue-800 rounded-lg",children:[o.jsx("h5",{className:"text-sm font-semibold text-blue-900 dark:text-blue-100 mb-2",children:"📝 规则说明"}),o.jsxs("ul",{className:"text-xs text-blue-800 dark:text-blue-200 space-y-1",children:[o.jsxs("li",{children:["• ",o.jsx("strong",{children:"Target 为空"}),":全局规则,对所有聊天生效"]}),o.jsxs("li",{children:["• ",o.jsx("strong",{children:"Target 指定"}),":仅对特定聊天流生效(格式:platform:id:type)"]}),o.jsxs("li",{children:["• ",o.jsx("strong",{children:"优先级"}),":先匹配具体聊天流规则,再匹配全局规则"]}),o.jsxs("li",{children:["• ",o.jsx("strong",{children:"时间支持跨夜"}),":例如 23:00-02:00 表示晚上11点到次日凌晨2点"]}),o.jsxs("li",{children:["• ",o.jsx("strong",{children:"数值范围"}),":建议 0-1,0 表示完全沉默,1 表示正常发言"]})]})]})]})]})}function F0e({member:t,groupIndex:e,memberIndex:n,availableChatIds:r,onUpdate:s,onRemove:i}){const a=r.includes(t)||t==="*",[l,c]=b.useState(!a);return o.jsxs("div",{className:"flex gap-2",children:[o.jsx("div",{className:"flex-1 flex gap-2",children:l?o.jsxs(o.Fragment,{children:[o.jsx(Pe,{value:t,onChange:d=>s(e,n,d.target.value),placeholder:'输入 "*" 或 "qq:123456:group"',className:"flex-1"}),r.length>0&&o.jsx(ue,{size:"sm",variant:"outline",onClick:()=>c(!1),title:"切换到下拉选择",children:"下拉"})]}):o.jsxs(o.Fragment,{children:[o.jsxs(Vt,{value:t,onValueChange:d=>s(e,n,d),children:[o.jsx($t,{className:"flex-1",children:o.jsx(Ut,{placeholder:"选择聊天流"})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"*",children:"* (全局共享)"}),r.map((d,h)=>o.jsx(De,{value:d,children:d},h))]})]}),o.jsx(ue,{size:"sm",variant:"outline",onClick:()=>c(!0),title:"切换到手动输入",children:"输入"})]})}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsx(ue,{size:"icon",variant:"outline",children:o.jsx(Cn,{className:"h-4 w-4"})})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:['确定要删除组成员 "',t||"(空)",'" 吗?此操作无法撤销。']})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>i(e,n),children:"删除"})]})]})]})]})}function q0e({config:t,onChange:e}){const n=()=>{e({...t,learning_list:[...t.learning_list,["","enable","enable","1.0"]]})},r=m=>{e({...t,learning_list:t.learning_list.filter((g,x)=>x!==m)})},s=(m,g,x)=>{const y=[...t.learning_list];y[m][g]=x,e({...t,learning_list:y})},i=({rule:m})=>{const g=`["${m[0]}", "${m[1]}", "${m[2]}", "${m[3]}"]`;return o.jsxs(Bo,{children:[o.jsx(Fo,{asChild:!0,children:o.jsxs(ue,{variant:"outline",size:"sm",children:[o.jsx(Ji,{className:"h-4 w-4 mr-1"}),"预览"]})}),o.jsx(Ka,{className:"w-96",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),o.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:g}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},a=()=>{e({...t,expression_groups:[...t.expression_groups,[]]})},l=m=>{e({...t,expression_groups:t.expression_groups.filter((g,x)=>x!==m)})},c=m=>{const g=[...t.expression_groups];g[m]=[...g[m],""],e({...t,expression_groups:g})},d=(m,g)=>{const x=[...t.expression_groups];x[m]=x[m].filter((y,w)=>w!==g),e({...t,expression_groups:x})},h=(m,g,x)=>{const y=[...t.expression_groups];y[m][g]=x,e({...t,expression_groups:y})};return o.jsxs("div",{className:"space-y-6",children:[o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center justify-between mb-4",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold",children:"表达学习配置"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置麦麦如何学习和使用表达方式"})]}),o.jsxs(ue,{onClick:n,size:"sm",variant:"outline",children:[o.jsx(Is,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),o.jsxs("div",{className:"space-y-4",children:[t.learning_list.map((m,g)=>{const x=t.learning_list.some((N,T)=>T!==g&&N[0]===""),y=m[0]==="",w=m[0].split(":"),S=w[0]||"qq",k=w[1]||"",j=w[2]||"group";return o.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium",children:["规则 ",g+1," ",y&&"(全局配置)"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(i,{rule:m}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsx(ue,{size:"sm",variant:"ghost",children:o.jsx(Cn,{className:"h-4 w-4"})})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:["确定要删除学习规则 ",g+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>r(g),children:"删除"})]})]})]})]})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"配置类型"}),o.jsxs(Vt,{value:y?"global":"specific",onValueChange:N=>{N==="global"?s(g,0,""):s(g,0,"qq::group")},disabled:x&&!y,children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"global",children:"全局配置"}),o.jsx(De,{value:"specific",disabled:x&&!y,children:"详细配置"})]})]}),x&&!y&&o.jsx("p",{className:"text-xs text-amber-600",children:"已存在全局配置,无法创建新的全局配置"})]}),!y&&o.jsxs("div",{className:"grid gap-4 p-4 rounded-lg bg-muted/50",children:[o.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"平台"}),o.jsxs(Vt,{value:S,onValueChange:N=>{s(g,0,`${N}:${k}:${j}`)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"qq",children:"QQ"}),o.jsx(De,{value:"wx",children:"微信"})]})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"群 ID"}),o.jsx(Pe,{value:k,onChange:N=>{s(g,0,`${S}:${N.target.value}:${j}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"类型"}),o.jsxs(Vt,{value:j,onValueChange:N=>{s(g,0,`${S}:${k}:${N}`)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"group",children:"群组(group)"}),o.jsx(De,{value:"private",children:"私聊(private)"})]})]})]})]}),o.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",m[0]||"(未设置)"]})]}),o.jsx("div",{className:"grid gap-2",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-xs font-medium",children:"使用学到的表达"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦使用从聊天中学到的表达方式"})]}),o.jsx(Ft,{checked:m[1]==="enable",onCheckedChange:N=>s(g,1,N?"enable":"disable")})]})}),o.jsx("div",{className:"grid gap-2",children:o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-xs font-medium",children:"学习表达"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦从聊天中学习新的表达方式"})]}),o.jsx(Ft,{checked:m[2]==="enable",onCheckedChange:N=>s(g,2,N?"enable":"disable")})]})}),o.jsxs("div",{className:"grid gap-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{className:"text-xs font-medium",children:"学习强度"}),o.jsx(Pe,{type:"number",step:"0.1",min:"0",max:"5",value:m[3],onChange:N=>{const T=parseFloat(N.target.value);isNaN(T)||s(g,3,Math.max(0,Math.min(5,T)).toFixed(1))},className:"w-20 h-8 text-xs"})]}),o.jsx(Nf,{value:[parseFloat(m[3])||1],onValueChange:N=>s(g,3,N[0].toFixed(1)),min:0,max:5,step:.1,className:"w-full"}),o.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[o.jsx("span",{children:"0 (不学习)"}),o.jsx("span",{children:"2.5"}),o.jsx("span",{children:"5.0 (快速学习)"})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"影响学习频率,最短学习间隔 = 300/学习强度(秒)"})]})]})]},g)}),t.learning_list.length===0&&o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无学习规则,点击"添加规则"开始配置'})]})]})}),o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center justify-between mb-4",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold",children:"表达共享组配置"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置不同聊天流之间如何共享学到的表达方式"})]}),o.jsxs(ue,{onClick:a,size:"sm",variant:"outline",children:[o.jsx(Is,{className:"h-4 w-4 mr-1"}),"添加共享组"]})]}),o.jsxs("div",{className:"space-y-4",children:[t.expression_groups.map((m,g)=>{const x=t.learning_list.map(y=>y[0]).filter(y=>y!=="");return o.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium",children:["共享组 ",g+1,m.length===1&&m[0]==="*"&&"(全局共享)"]}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx(ue,{onClick:()=>c(g),size:"sm",variant:"outline",children:o.jsx(Is,{className:"h-4 w-4"})}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsx(ue,{size:"sm",variant:"ghost",children:o.jsx(Cn,{className:"h-4 w-4"})})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:["确定要删除共享组 ",g+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>l(g),children:"删除"})]})]})]})]})]}),o.jsx("div",{className:"space-y-2",children:m.map((y,w)=>o.jsx(F0e,{member:y,groupIndex:g,memberIndex:w,availableChatIds:x,onUpdate:h,onRemove:d},`${g}-${w}`))}),o.jsx("p",{className:"text-xs text-muted-foreground",children:'提示:可以从下拉框选择已配置的聊天流,或手动输入。输入 "*" 启用全局共享'})]},g)}),t.expression_groups.length===0&&o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无共享组,点击"添加共享组"开始配置'})]})]})})]})}function $0e({emojiConfig:t,memoryConfig:e,toolConfig:n,onEmojiChange:r,onMemoryChange:s,onToolChange:i}){return o.jsxs("div",{className:"space-y-6",children:[o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"工具设置"}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"enable_tool",checked:n.enable_tool,onCheckedChange:a=>i({...n,enable_tool:a})}),o.jsx(he,{htmlFor:"enable_tool",className:"cursor-pointer",children:"启用工具系统"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"允许麦麦使用各种工具来增强功能"})]})}),o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"记忆设置"}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"max_agent_iterations",children:"记忆思考深度"}),o.jsx(Pe,{id:"max_agent_iterations",type:"number",min:"1",value:e.max_agent_iterations,onChange:a=>s({...e,max_agent_iterations:parseInt(a.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"最低为 1(不深入思考)"})]})]})}),o.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"表情包设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"emoji_chance",children:"表情包激活概率"}),o.jsx(Pe,{id:"emoji_chance",type:"number",step:"0.1",min:"0",max:"1",value:t.emoji_chance,onChange:a=>r({...t,emoji_chance:parseFloat(a.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"范围 0-1,越大越容易发送表情包"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"max_reg_num",children:"最大注册数量"}),o.jsx(Pe,{id:"max_reg_num",type:"number",min:"1",value:t.max_reg_num,onChange:a=>r({...t,max_reg_num:parseInt(a.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦最多可以注册的表情包数量"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),o.jsx(Pe,{id:"check_interval",type:"number",min:"1",value:t.check_interval,onChange:a=>r({...t,check_interval:parseInt(a.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包(注册、破损、删除)的时间间隔"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"do_replace",checked:t.do_replace,onCheckedChange:a=>r({...t,do_replace:a})}),o.jsx(he,{htmlFor:"do_replace",className:"cursor-pointer",children:"达到最大数量时替换表情包"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"steal_emoji",checked:t.steal_emoji,onCheckedChange:a=>r({...t,steal_emoji:a})}),o.jsx(he,{htmlFor:"steal_emoji",className:"cursor-pointer",children:"偷取表情包"})]}),o.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"允许麦麦将看到的表情包据为己有"}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"content_filtration",checked:t.content_filtration,onCheckedChange:a=>r({...t,content_filtration:a})}),o.jsx(he,{htmlFor:"content_filtration",className:"cursor-pointer",children:"启用表情包过滤"})]}),t.content_filtration&&o.jsxs("div",{className:"grid gap-2 pl-6 border-l-2 border-primary/20",children:[o.jsx(he,{htmlFor:"filtration_prompt",children:"过滤要求"}),o.jsx(Pe,{id:"filtration_prompt",value:t.filtration_prompt,onChange:a=>r({...t,filtration_prompt:a.target.value}),placeholder:"符合公序良俗"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"只有符合此要求的表情包才会被保存"})]})]})]})})]})}function H0e({keywordReactionConfig:t,responsePostProcessConfig:e,chineseTypoConfig:n,responseSplitterConfig:r,onKeywordReactionChange:s,onResponsePostProcessChange:i,onChineseTypoChange:a,onResponseSplitterChange:l}){const c=()=>{s({...t,regex_rules:[...t.regex_rules,{regex:[""],reaction:""}]})},d=T=>{s({...t,regex_rules:t.regex_rules.filter((E,_)=>_!==T)})},h=(T,E,_)=>{const A=[...t.regex_rules];E==="regex"&&typeof _=="string"?A[T]={...A[T],regex:[_]}:E==="reaction"&&typeof _=="string"&&(A[T]={...A[T],reaction:_}),s({...t,regex_rules:A})},m=({regex:T,reaction:E,onRegexChange:_,onReactionChange:A})=>{const[D,q]=b.useState(!1),[B,H]=b.useState(""),[W,ee]=b.useState(null),[I,V]=b.useState(""),[L,$]=b.useState({}),[K,Y]=b.useState(""),R=b.useRef(null),[ie,X]=b.useState("build"),z=G=>G.replace(/\(\?P<([^>]+)>/g,"(?<$1>"),U=(G,se=0)=>{const re=R.current;if(!re)return;const ae=re.selectionStart||0,_e=re.selectionEnd||0,Be=T.substring(0,ae)+G+T.substring(_e);_(Be),setTimeout(()=>{const Ye=ae+G.length+se;re.setSelectionRange(Ye,Ye),re.focus()},0)};b.useEffect(()=>{if(!T||!B){ee(null),$({}),Y(E),V("");return}try{const G=z(T),se=new RegExp(G,"g"),re=B.match(se);ee(re),V("");const _e=new RegExp(G).exec(B);if(_e&&_e.groups){$(_e.groups);let Be=E;Object.entries(_e.groups).forEach(([Ye,Je])=>{Be=Be.replace(new RegExp(`\\[${Ye}\\]`,"g"),Je||"")}),Y(Be)}else $({}),Y(E)}catch(G){V(G.message),ee(null),$({}),Y(E)}},[T,B,E]);const te=()=>{if(!B||!W||W.length===0)return o.jsx("span",{className:"text-muted-foreground",children:B||"请输入测试文本"});try{const G=z(T),se=new RegExp(G,"g");let re=0;const ae=[];let _e;for(;(_e=se.exec(B))!==null;)_e.index>re&&ae.push(o.jsx("span",{children:B.substring(re,_e.index)},`text-${re}`)),ae.push(o.jsx("span",{className:"bg-yellow-200 dark:bg-yellow-900 font-semibold",children:_e[0]},`match-${_e.index}`)),re=_e.index+_e[0].length;return re)",desc:"Python风格命名捕获组",moveCursor:-1},{label:"非捕获组",pattern:"(?:)",desc:"分组但不保存匹配结果",moveCursor:-1}]},{category:"字符类",items:[{label:"字符集",pattern:"[]",desc:"匹配括号内的任意字符",moveCursor:-1},{label:"排除字符",pattern:"[^]",desc:"匹配不在括号内的字符",moveCursor:-1},{label:"范围",pattern:"[a-z]",desc:"匹配a到z的字符"},{label:"中文字符",pattern:"[\\u4e00-\\u9fa5]",desc:"匹配中文汉字"}]},{category:"常用模板",items:[{label:"捕获词语",pattern:"(?P\\S+)",desc:"捕获一个词语"},{label:"捕获句子",pattern:"(?P.+)",desc:"捕获整个句子"},{label:"捕获数字",pattern:"(?P\\d+)",desc:"捕获一个或多个数字"},{label:"可选词语",pattern:"(?:词语1|词语2)",desc:"匹配多个可选项之一"}]}];return o.jsxs(Er,{open:D,onOpenChange:q,children:[o.jsx(Of,{asChild:!0,children:o.jsxs(ue,{variant:"outline",size:"sm",children:[o.jsx(Fv,{className:"h-4 w-4 mr-1"}),"正则编辑器"]})}),o.jsxs(wr,{className:"max-w-[95vw] sm:max-w-[900px] max-h-[90vh]",children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"正则表达式编辑器"}),o.jsx(Xr,{className:"text-sm",children:"使用可视化工具构建正则表达式,并实时测试效果"})]}),o.jsx(pn,{className:"max-h-[calc(90vh-120px)]",children:o.jsxs(Yi,{value:ie,onValueChange:G=>X(G),className:"w-full",children:[o.jsxs(ji,{className:"grid w-full grid-cols-2",children:[o.jsx(Bt,{value:"build",children:"🔧 构建器"}),o.jsx(Bt,{value:"test",children:"🧪 测试器"})]}),o.jsxs(ln,{value:"build",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{className:"text-sm font-medium",children:"正则表达式"}),o.jsx(Pe,{ref:R,value:T,onChange:G=>_(G.target.value),className:"font-mono text-sm",placeholder:"点击下方按钮构建正则表达式..."})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{className:"text-sm font-medium",children:"Reaction 内容"}),o.jsx(Nr,{value:E,onChange:G=>A(G.target.value),placeholder:"使用 [捕获组名] 引用捕获的内容...",rows:3,className:"text-sm"})]}),o.jsxs("div",{className:"space-y-4 border-t pt-4",children:[ne.map(G=>o.jsxs("div",{className:"space-y-2",children:[o.jsx("h5",{className:"text-xs font-semibold text-primary",children:G.category}),o.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:G.items.map(se=>o.jsx(ue,{variant:"outline",size:"sm",className:"justify-start h-auto py-2 px-3",onClick:()=>U(se.pattern,se.moveCursor||0),children:o.jsxs("div",{className:"flex flex-col items-start w-full",children:[o.jsxs("div",{className:"flex items-center gap-2 w-full",children:[o.jsx("span",{className:"text-xs font-medium",children:se.label}),o.jsx("code",{className:"ml-auto text-xs bg-muted px-1.5 py-0.5 rounded font-mono",children:se.pattern})]}),o.jsx("span",{className:"text-xs text-muted-foreground mt-0.5",children:se.desc})]})},se.label))})]},G.category)),o.jsxs("div",{className:"space-y-2 border-t pt-4",children:[o.jsx("h5",{className:"text-xs font-semibold text-primary",children:"完整示例模板"}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(ue,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>_("^(?P\\S{1,20})是这样的$"),children:o.jsxs("div",{className:"flex flex-col items-start w-full",children:[o.jsxs("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:["^(?P\\S","{1,20}",")是这样的$"]}),o.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「某事物是这样的」并捕获事物名称"})]})}),o.jsx(ue,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>_("(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"),children:o.jsxs("div",{className:"flex flex-col items-start w-full",children:[o.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"}),o.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「我没要求你做某事」并捕获具体行为"})]})}),o.jsx(ue,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>_("(?P.+?)(?:是|为什么|怎么)"),children:o.jsxs("div",{className:"flex flex-col items-start w-full",children:[o.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?P.+?)(?:是|为什么|怎么)"}),o.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"捕获问题主题词"})]})})]})]})]}),o.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[o.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 使用提示"}),o.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[o.jsx("li",{children:"点击输入框设置光标位置,然后点击按钮插入模式"}),o.jsxs("li",{children:["命名捕获组格式:",o.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"(?P<名称>模式)"})]}),o.jsxs("li",{children:["在 reaction 中使用 ",o.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"[名称]"})," 引用捕获的内容"]}),o.jsx("li",{children:"切换到测试器标签页验证正则表达式效果"})]})]})]}),o.jsxs(ln,{value:"test",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{className:"text-sm font-medium",children:"当前正则表达式"}),o.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:T||"(未设置)"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"test-text",className:"text-sm font-medium",children:"测试文本"}),o.jsx(Nr,{id:"test-text",value:B,onChange:G=>H(G.target.value),placeholder:`在此输入要测试的文本... -例如:打游戏是这样的`,className:"min-h-[100px] text-sm"})]}),I&&o.jsxs("div",{className:"rounded-md bg-destructive/10 border border-destructive/20 p-3",children:[o.jsx("p",{className:"text-sm text-destructive font-medium",children:"正则表达式错误"}),o.jsx("p",{className:"text-xs text-destructive/80 mt-1",children:I})]}),!I&&B&&o.jsxs("div",{className:"space-y-3",children:[o.jsx("div",{className:"flex items-center gap-2",children:W&&W.length>0?o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-green-500"}),o.jsxs("span",{className:"text-sm font-medium text-green-600 dark:text-green-400",children:["匹配成功 (",W.length," 处)"]})]}):o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"h-2 w-2 rounded-full bg-gray-400"}),o.jsx("span",{className:"text-sm font-medium text-muted-foreground",children:"无匹配"})]})}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{className:"text-sm font-medium",children:"匹配高亮"}),o.jsx(pn,{className:"h-40 rounded-md bg-muted p-3",children:o.jsx("div",{className:"text-sm break-words",children:te()})})]}),Object.keys(L).length>0&&o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{className:"text-sm font-medium",children:"命名捕获组"}),o.jsx(pn,{className:"h-32 rounded-md border p-3",children:o.jsx("div",{className:"space-y-2",children:Object.entries(L).map(([G,se])=>o.jsxs("div",{className:"flex items-start gap-2 text-sm",children:[o.jsxs("span",{className:"font-mono font-semibold text-primary min-w-[80px]",children:["[",G,"]"]}),o.jsx("span",{className:"text-muted-foreground",children:"="}),o.jsx("span",{className:"font-mono bg-muted px-2 py-0.5 rounded",children:se})]},G))})})]}),Object.keys(L).length>0&&E&&o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{className:"text-sm font-medium",children:"Reaction 替换预览"}),o.jsx(pn,{className:"h-48 rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3",children:o.jsx("div",{className:"text-sm break-words",children:K})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"reaction 中的 [name] 已被替换为对应的捕获组值"})]})]}),o.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[o.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 测试说明"}),o.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[o.jsx("li",{children:"匹配的文本会以黄色背景高亮显示"}),o.jsx("li",{children:"命名捕获组的值会显示在下方列表中"}),o.jsx("li",{children:"Reaction 替换预览显示最终生成的反应内容"}),o.jsx("li",{children:"如需修改正则,切换回构建器标签页"})]})]})]})]})})]})]})},g=()=>{s({...t,keyword_rules:[...t.keyword_rules,{keywords:[],reaction:""}]})},x=T=>{s({...t,keyword_rules:t.keyword_rules.filter((E,_)=>_!==T)})},y=(T,E,_)=>{const A=[...t.keyword_rules];typeof _=="string"&&(A[T]={...A[T],reaction:_}),s({...t,keyword_rules:A})},w=T=>{const E=[...t.keyword_rules];E[T]={...E[T],keywords:[...E[T].keywords||[],""]},s({...t,keyword_rules:E})},S=(T,E)=>{const _=[...t.keyword_rules];_[T]={..._[T],keywords:(_[T].keywords||[]).filter((A,D)=>D!==E)},s({...t,keyword_rules:_})},k=(T,E,_)=>{const A=[...t.keyword_rules],D=[...A[T].keywords||[]];D[E]=_,A[T]={...A[T],keywords:D},s({...t,keyword_rules:A})},j=({rule:T})=>{const E=`{ regex = [${(T.regex||[]).map(_=>`"${_}"`).join(", ")}], reaction = "${T.reaction}" }`;return o.jsxs(Bo,{children:[o.jsx(Fo,{asChild:!0,children:o.jsxs(ue,{variant:"outline",size:"sm",children:[o.jsx(Ji,{className:"h-4 w-4 mr-1"}),"预览"]})}),o.jsx(Ka,{className:"w-[95vw] sm:w-[500px]",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),o.jsx(pn,{className:"h-60 rounded-md bg-muted p-3",children:o.jsx("pre",{className:"font-mono text-xs break-all",children:E})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},N=({rule:T})=>{const E=`[[keyword_reaction.keyword_rules]] -keywords = [${(T.keywords||[]).map(_=>`"${_}"`).join(", ")}] -reaction = "${T.reaction}"`;return o.jsxs(Bo,{children:[o.jsx(Fo,{asChild:!0,children:o.jsxs(ue,{variant:"outline",size:"sm",children:[o.jsx(Ji,{className:"h-4 w-4 mr-1"}),"预览"]})}),o.jsx(Ka,{className:"w-[95vw] sm:w-[500px]",children:o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),o.jsx(pn,{className:"h-60 rounded-md bg-muted p-3",children:o.jsx("pre",{className:"font-mono text-xs whitespace-pre-wrap break-all",children:E})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return o.jsxs("div",{className:"space-y-6",children:[o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"关键词反应配置"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"配置触发特定反应的关键词和正则表达式规则"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"text-base font-semibold",children:"正则表达式规则"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用正则表达式匹配消息内容"})]}),o.jsxs(ue,{onClick:c,size:"sm",variant:"outline",children:[o.jsx(Is,{className:"h-4 w-4 mr-1"}),"添加正则规则"]})]}),o.jsxs("div",{className:"space-y-3",children:[t.regex_rules.map((T,E)=>o.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium",children:["正则规则 ",E+1]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(m,{regex:T.regex&&T.regex[0]||"",reaction:T.reaction,onRegexChange:_=>h(E,"regex",_),onReactionChange:_=>h(E,"reaction",_)}),o.jsx(j,{rule:T}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsx(ue,{size:"sm",variant:"ghost",children:o.jsx(Cn,{className:"h-4 w-4"})})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:["确定要删除正则规则 ",E+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>d(E),children:"删除"})]})]})]})]})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"正则表达式(Python 语法)"}),o.jsx(Pe,{value:T.regex&&T.regex[0]||"",onChange:_=>h(E,"regex",_.target.value),placeholder:"例如:^(?P\\\\S{1,20})是这样的$ (点击正则编辑器按钮可视化构建)",className:"font-mono text-sm"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:'支持命名捕获组 (?Ppattern),可在 reaction 中使用 [name] 引用。点击"正则编辑器"可视化构建和测试!'})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"反应内容"}),o.jsx(Nr,{value:T.reaction,onChange:_=>h(E,"reaction",_.target.value),placeholder:`触发后麦麦的反应... -可以使用 [捕获组名] 来引用正则表达式中的内容`,rows:3,className:"text-sm"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"使用 [捕获组名] 引用正则表达式中的命名捕获组,例如 [n] 会被替换为捕获的内容"})]})]})]},E)),t.regex_rules.length===0&&o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无正则规则,点击"添加正则规则"开始配置'})]})]}),o.jsxs("div",{className:"space-y-4 border-t pt-6",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"text-base font-semibold",children:"关键词规则"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用关键词列表匹配消息内容"})]}),o.jsxs(ue,{onClick:g,size:"sm",variant:"outline",children:[o.jsx(Is,{className:"h-4 w-4 mr-1"}),"添加关键词规则"]})]}),o.jsxs("div",{className:"space-y-3",children:[t.keyword_rules.map((T,E)=>o.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("span",{className:"text-sm font-medium",children:["关键词规则 ",E+1]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(N,{rule:T}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsx(ue,{size:"sm",variant:"ghost",children:o.jsx(Cn,{className:"h-4 w-4"})})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:["确定要删除关键词规则 ",E+1," 吗?此操作无法撤销。"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>x(E),children:"删除"})]})]})]})]})]}),o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{className:"text-xs font-medium",children:"关键词列表"}),o.jsxs(ue,{onClick:()=>w(E),size:"sm",variant:"ghost",children:[o.jsx(Is,{className:"h-3 w-3 mr-1"}),"添加关键词"]})]}),o.jsxs("div",{className:"space-y-2",children:[(T.keywords||[]).map((_,A)=>o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Pe,{value:_,onChange:D=>k(E,A,D.target.value),placeholder:"关键词",className:"flex-1"}),o.jsx(ue,{onClick:()=>S(E,A),size:"sm",variant:"ghost",children:o.jsx(Cn,{className:"h-4 w-4"})})]},A)),(!T.keywords||T.keywords.length===0)&&o.jsx("p",{className:"text-xs text-muted-foreground text-center py-2",children:'暂无关键词,点击"添加关键词"开始配置'})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-xs font-medium",children:"反应内容"}),o.jsx(Nr,{value:T.reaction,onChange:_=>y(E,"reaction",_.target.value),placeholder:"触发后麦麦的反应...",rows:3,className:"text-sm"})]})]})]},E)),t.keyword_rules.length===0&&o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无关键词规则,点击"添加关键词规则"开始配置'})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"回复后处理配置"}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"enable_response_post_process",checked:e.enable_response_post_process,onCheckedChange:T=>i({...e,enable_response_post_process:T})}),o.jsx(he,{htmlFor:"enable_response_post_process",className:"cursor-pointer",children:"启用回复后处理"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"包括错别字生成器和回复分割器"})]}),e.enable_response_post_process&&o.jsxs(o.Fragment,{children:[o.jsx("div",{className:"border-t pt-6 space-y-4",children:o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[o.jsx(Ft,{id:"enable_chinese_typo",checked:n.enable,onCheckedChange:T=>a({...n,enable:T})}),o.jsx(he,{htmlFor:"enable_chinese_typo",className:"cursor-pointer font-semibold",children:"中文错别字生成器"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"为回复添加随机错别字,让麦麦的回复更自然"}),n.enable&&o.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"error_rate",className:"text-xs font-medium",children:"单字替换概率"}),o.jsx(Pe,{id:"error_rate",type:"number",step:"0.001",min:"0",max:"1",value:n.error_rate,onChange:T=>a({...n,error_rate:parseFloat(T.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"min_freq",className:"text-xs font-medium",children:"最小字频阈值"}),o.jsx(Pe,{id:"min_freq",type:"number",min:"0",value:n.min_freq,onChange:T=>a({...n,min_freq:parseInt(T.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"tone_error_rate",className:"text-xs font-medium",children:"声调错误概率"}),o.jsx(Pe,{id:"tone_error_rate",type:"number",step:"0.01",min:"0",max:"1",value:n.tone_error_rate,onChange:T=>a({...n,tone_error_rate:parseFloat(T.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"word_replace_rate",className:"text-xs font-medium",children:"整词替换概率"}),o.jsx(Pe,{id:"word_replace_rate",type:"number",step:"0.001",min:"0",max:"1",value:n.word_replace_rate,onChange:T=>a({...n,word_replace_rate:parseFloat(T.target.value)})})]})]})]})}),o.jsx("div",{className:"border-t pt-6 space-y-4",children:o.jsxs("div",{children:[o.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[o.jsx(Ft,{id:"enable_response_splitter",checked:r.enable,onCheckedChange:T=>l({...r,enable:T})}),o.jsx(he,{htmlFor:"enable_response_splitter",className:"cursor-pointer font-semibold",children:"回复分割器"})]}),o.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"控制回复的长度和句子数量"}),r.enable&&o.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"max_length",className:"text-xs font-medium",children:"最大长度"}),o.jsx(Pe,{id:"max_length",type:"number",min:"1",value:r.max_length,onChange:T=>l({...r,max_length:parseInt(T.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大字符数"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"max_sentence_num",className:"text-xs font-medium",children:"最大句子数"}),o.jsx(Pe,{id:"max_sentence_num",type:"number",min:"1",value:r.max_sentence_num,onChange:T=>l({...r,max_sentence_num:parseInt(T.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大句子数量"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"enable_kaomoji_protection",checked:r.enable_kaomoji_protection,onCheckedChange:T=>l({...r,enable_kaomoji_protection:T})}),o.jsx(he,{htmlFor:"enable_kaomoji_protection",className:"cursor-pointer",children:"启用颜文字保护"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"enable_overflow_return_all",checked:r.enable_overflow_return_all,onCheckedChange:T=>l({...r,enable_overflow_return_all:T})}),o.jsx(he,{htmlFor:"enable_overflow_return_all",className:"cursor-pointer",children:"超出时一次性返回全部"})]}),o.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"当句子数量超出限制时,合并后一次性返回所有内容"})]})]})})]})]})]})}function Q0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"情绪设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{checked:t.enable_mood,onCheckedChange:n=>e({...t,enable_mood:n})}),o.jsx(he,{className:"cursor-pointer",children:"启用情绪系统"})]}),t.enable_mood&&o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"情绪更新阈值"}),o.jsx(Pe,{type:"number",min:"1",value:t.mood_update_threshold,onChange:n=>e({...t,mood_update_threshold:parseInt(n.target.value)})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"越高,更新越慢"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"情感特征"}),o.jsx(Nr,{value:t.emotion_style,onChange:n=>e({...t,emotion_style:n.target.value}),placeholder:"影响情绪的变化情况",rows:2})]})]})]})]})}function V0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"语音设置"}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{checked:t.enable_asr,onCheckedChange:n=>e({...t,enable_asr:n})}),o.jsx(he,{className:"cursor-pointer",children:"启用语音识别"})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"启用后麦麦可以识别语音消息,需要配置语音识别模型"})]})}function U0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库设置"}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{checked:t.enable,onCheckedChange:n=>e({...t,enable:n})}),o.jsx(he,{className:"cursor-pointer",children:"启用 LPMM 知识库"})]}),t.enable&&o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"LPMM 模式"}),o.jsxs(Vt,{value:t.lpmm_mode,onValueChange:n=>e({...t,lpmm_mode:n}),children:[o.jsx($t,{children:o.jsx(Ut,{placeholder:"选择 LPMM 模式"})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"classic",children:"经典模式"}),o.jsx(De,{value:"agent",children:"Agent 模式"})]})]})]}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"同义词搜索 TopK"}),o.jsx(Pe,{type:"number",min:"1",value:t.rag_synonym_search_top_k,onChange:n=>e({...t,rag_synonym_search_top_k:parseInt(n.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"同义词阈值"}),o.jsx(Pe,{type:"number",step:"0.1",min:"0",max:"1",value:t.rag_synonym_threshold,onChange:n=>e({...t,rag_synonym_threshold:parseFloat(n.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"实体提取线程数"}),o.jsx(Pe,{type:"number",min:"1",value:t.info_extraction_workers,onChange:n=>e({...t,info_extraction_workers:parseInt(n.target.value)})})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"嵌入向量维度"}),o.jsx(Pe,{type:"number",min:"1",value:t.embedding_dimension,onChange:n=>e({...t,embedding_dimension:parseInt(n.target.value)})})]})]})]})]})]})}function W0e({config:t,onChange:e}){const[n,r]=b.useState(""),[s,i]=b.useState("WARNING"),a=()=>{n&&!t.suppress_libraries.includes(n)&&(e({...t,suppress_libraries:[...t.suppress_libraries,n]}),r(""))},l=x=>{e({...t,suppress_libraries:t.suppress_libraries.filter(y=>y!==x)})},c=()=>{n&&!t.library_log_levels[n]&&(e({...t,library_log_levels:{...t.library_log_levels,[n]:s}}),r(""),i("WARNING"))},d=x=>{const y={...t.library_log_levels};delete y[x],e({...t,library_log_levels:y})},h=["DEBUG","INFO","WARNING","ERROR","CRITICAL"],m=["FULL","compact","lite"],g=["none","title","full"];return o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"日志配置"}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"日期格式"}),o.jsx(Pe,{value:t.date_style,onChange:x=>e({...t,date_style:x.target.value}),placeholder:"例如: m-d H:i:s"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"m=月, d=日, H=时, i=分, s=秒"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"日志级别样式"}),o.jsxs(Vt,{value:t.log_level_style,onValueChange:x=>e({...t,log_level_style:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:m.map(x=>o.jsx(De,{value:x,children:x},x))})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"日志文本颜色"}),o.jsxs(Vt,{value:t.color_text,onValueChange:x=>e({...t,color_text:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:g.map(x=>o.jsx(De,{value:x,children:x},x))})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"全局日志级别"}),o.jsxs(Vt,{value:t.log_level,onValueChange:x=>e({...t,log_level:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:h.map(x=>o.jsx(De,{value:x,children:x},x))})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"控制台日志级别"}),o.jsxs(Vt,{value:t.console_log_level,onValueChange:x=>e({...t,console_log_level:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:h.map(x=>o.jsx(De,{value:x,children:x},x))})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"文件日志级别"}),o.jsxs(Vt,{value:t.file_log_level,onValueChange:x=>e({...t,file_log_level:x}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsx(Ht,{children:h.map(x=>o.jsx(De,{value:x,children:x},x))})]})]})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"mb-2 block",children:"完全屏蔽的库"}),o.jsxs("div",{className:"flex gap-2 mb-2",children:[o.jsx(Pe,{value:n,onChange:x=>r(x.target.value),placeholder:"输入库名",className:"flex-1",onKeyDown:x=>{x.key==="Enter"&&(x.preventDefault(),a())}}),o.jsx(ue,{onClick:a,size:"sm",className:"flex-shrink-0",children:o.jsx(Is,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),o.jsx("div",{className:"flex flex-wrap gap-2",children:t.suppress_libraries.map(x=>o.jsxs("div",{className:"flex items-center gap-1 bg-secondary px-3 py-1 rounded-md",children:[o.jsx("span",{className:"text-sm",children:x}),o.jsx(ue,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0",onClick:()=>l(x),children:o.jsx(Cn,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},x))})]}),o.jsxs("div",{children:[o.jsx(he,{className:"mb-2 block",children:"特定库的日志级别"}),o.jsxs("div",{className:"flex gap-2 mb-2",children:[o.jsx(Pe,{value:n,onChange:x=>r(x.target.value),placeholder:"输入库名",className:"flex-1"}),o.jsxs(Vt,{value:s,onValueChange:i,children:[o.jsx($t,{className:"w-32",children:o.jsx(Ut,{})}),o.jsx(Ht,{children:h.map(x=>o.jsx(De,{value:x,children:x},x))})]}),o.jsx(ue,{onClick:c,size:"sm",children:o.jsx(Is,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),o.jsx("div",{className:"space-y-2",children:Object.entries(t.library_log_levels).map(([x,y])=>o.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[o.jsx("span",{className:"text-sm font-medium",children:x}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"text-sm text-muted-foreground",children:y}),o.jsx(ue,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>d(x),children:o.jsx(Cn,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]})]},x))})]})]})}function G0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"调试配置"}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示 Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否在日志中显示提示词"})]}),o.jsx(Ft,{checked:t.show_prompt,onCheckedChange:n=>e({...t,show_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示回复器 Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的提示词"})]}),o.jsx(Ft,{checked:t.show_replyer_prompt,onCheckedChange:n=>e({...t,show_replyer_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示回复器推理"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的推理过程"})]}),o.jsx(Ft,{checked:t.show_replyer_reasoning,onCheckedChange:n=>e({...t,show_replyer_reasoning:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示 Jargon Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示术语相关的提示词"})]}),o.jsx(Ft,{checked:t.show_jargon_prompt,onCheckedChange:n=>e({...t,show_jargon_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示记忆检索 Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示记忆检索相关的提示词"})]}),o.jsx(Ft,{checked:t.show_memory_prompt,onCheckedChange:n=>e({...t,show_memory_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示 Planner Prompt"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 Planner 的提示词和原始返回结果"})]}),o.jsx(Ft,{checked:t.show_planner_prompt,onCheckedChange:n=>e({...t,show_planner_prompt:n})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"显示 LPMM 相关文段"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 LPMM 知识库找到的相关文段日志"})]}),o.jsx(Ft,{checked:t.show_lpmm_paragraph,onCheckedChange:n=>e({...t,show_lpmm_paragraph:n})})]})]})]})}function X0e({config:t,onChange:e}){const[n,r]=b.useState(""),s=()=>{n&&!t.auth_token.includes(n)&&(e({...t,auth_token:[...t.auth_token,n]}),r(""))},i=a=>{e({...t,auth_token:t.auth_token.filter((l,c)=>c!==a)})};return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[o.jsxs("div",{children:[o.jsx("h3",{className:"text-lg font-semibold mb-4",children:"MaimMessage 服务配置"}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"启用自定义服务器"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"是否使用自定义的 MaimMessage 服务器"})]}),o.jsx(Ft,{checked:t.use_custom,onCheckedChange:a=>e({...t,use_custom:a})})]}),t.use_custom&&o.jsxs(o.Fragment,{children:[o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"主机地址"}),o.jsx(Pe,{value:t.host,onChange:a=>e({...t,host:a.target.value}),placeholder:"127.0.0.1"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"端口号"}),o.jsx(Pe,{type:"number",value:t.port,onChange:a=>e({...t,port:parseInt(a.target.value)}),placeholder:"8090"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"连接模式"}),o.jsxs(Vt,{value:t.mode,onValueChange:a=>e({...t,mode:a}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"ws",children:"WebSocket (ws)"}),o.jsx(De,{value:"tcp",children:"TCP"})]})]})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{checked:t.use_wss,onCheckedChange:a=>e({...t,use_wss:a}),disabled:t.mode!=="ws"}),o.jsx(he,{children:"使用 WSS 安全连接"})]})]}),t.use_wss&&t.mode==="ws"&&o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"SSL 证书文件路径"}),o.jsx(Pe,{value:t.cert_file,onChange:a=>e({...t,cert_file:a.target.value}),placeholder:"cert.pem"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"SSL 密钥文件路径"}),o.jsx(Pe,{value:t.key_file,onChange:a=>e({...t,key_file:a.target.value}),placeholder:"key.pem"})]})]})]})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"mb-2 block",children:"认证令牌"}),o.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:"用于 API 验证,为空则不启用验证"}),o.jsxs("div",{className:"flex gap-2 mb-2",children:[o.jsx(Pe,{value:n,onChange:a=>r(a.target.value),placeholder:"输入认证令牌",onKeyDown:a=>{a.key==="Enter"&&(a.preventDefault(),s())}}),o.jsx(ue,{onClick:s,size:"sm",children:o.jsx(Is,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),o.jsx("div",{className:"space-y-2",children:t.auth_token.map((a,l)=>o.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[o.jsx("span",{className:"text-sm font-mono",children:a}),o.jsx(ue,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>i(l),children:o.jsx(Cn,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},l))})]})]})}function Y0e({config:t,onChange:e}){return o.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"统计信息"}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:"启用统计信息发送"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"发送匿名统计信息,帮助我们了解全球有多少只麦麦在运行"})]}),o.jsx(Ft,{checked:t.enable,onCheckedChange:n=>e({...t,enable:n})})]})]})}const Af=b.forwardRef(({className:t,...e},n)=>o.jsx("div",{className:"relative w-full overflow-auto",children:o.jsx("table",{ref:n,className:xe("w-full caption-bottom text-sm",t),...e})}));Af.displayName="Table";const Mf=b.forwardRef(({className:t,...e},n)=>o.jsx("thead",{ref:n,className:xe("[&_tr]:border-b",t),...e}));Mf.displayName="TableHeader";const Rf=b.forwardRef(({className:t,...e},n)=>o.jsx("tbody",{ref:n,className:xe("[&_tr:last-child]:border-0",t),...e}));Rf.displayName="TableBody";const K0e=b.forwardRef(({className:t,...e},n)=>o.jsx("tfoot",{ref:n,className:xe("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",t),...e}));K0e.displayName="TableFooter";const zs=b.forwardRef(({className:t,...e},n)=>o.jsx("tr",{ref:n,className:xe("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",t),...e}));zs.displayName="TableRow";const mn=b.forwardRef(({className:t,...e},n)=>o.jsx("th",{ref:n,className:xe("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...e}));mn.displayName="TableHead";const Yt=b.forwardRef(({className:t,...e},n)=>o.jsx("td",{ref:n,className:xe("px-4 py-3 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...e}));Yt.displayName="TableCell";const Z0e=b.forwardRef(({className:t,...e},n)=>o.jsx("caption",{ref:n,className:xe("mt-4 text-sm text-muted-foreground",t),...e}));Z0e.displayName="TableCaption";var kA=1,J0e=.9,epe=.8,tpe=.17,vS=.1,yS=.999,npe=.9999,rpe=.99,spe=/[\\\/_+.#"@\[\(\{&]/,ipe=/[\\\/_+.#"@\[\(\{&]/g,ape=/[\s-]/,EH=/[\s-]/g;function vO(t,e,n,r,s,i,a){if(i===e.length)return s===t.length?kA:rpe;var l=`${s},${i}`;if(a[l]!==void 0)return a[l];for(var c=r.charAt(i),d=n.indexOf(c,s),h=0,m,g,x,y;d>=0;)m=vO(t,e,n,r,d+1,i+1,a),m>h&&(d===s?m*=kA:spe.test(t.charAt(d-1))?(m*=epe,x=t.slice(s,d-1).match(ipe),x&&s>0&&(m*=Math.pow(yS,x.length))):ape.test(t.charAt(d-1))?(m*=J0e,y=t.slice(s,d-1).match(EH),y&&s>0&&(m*=Math.pow(yS,y.length))):(m*=tpe,s>0&&(m*=Math.pow(yS,d-s))),t.charAt(d)!==e.charAt(i)&&(m*=npe)),(mm&&(m=g*vS)),m>h&&(h=m),d=n.indexOf(c,d+1);return a[l]=h,h}function OA(t){return t.toLowerCase().replace(EH," ")}function ope(t,e,n){return t=n&&n.length>0?`${t+" "+n.join(" ")}`:t,vO(t,e,OA(t),OA(e),0,0,{})}var lpe=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],hu=lpe.reduce((t,e)=>{const n=Vy(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...l}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(c,{...l,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),Vm='[cmdk-group=""]',bS='[cmdk-group-items=""]',cpe='[cmdk-group-heading=""]',_H='[cmdk-item=""]',jA=`${_H}:not([aria-disabled="true"])`,yO="cmdk-item-select",kh="data-value",upe=(t,e,n)=>ope(t,e,n),AH=b.createContext(void 0),sg=()=>b.useContext(AH),MH=b.createContext(void 0),W6=()=>b.useContext(MH),RH=b.createContext(void 0),DH=b.forwardRef((t,e)=>{let n=Oh(()=>{var X,z;return{search:"",value:(z=(X=t.value)!=null?X:t.defaultValue)!=null?z:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),r=Oh(()=>new Set),s=Oh(()=>new Map),i=Oh(()=>new Map),a=Oh(()=>new Set),l=PH(t),{label:c,children:d,value:h,onValueChange:m,filter:g,shouldFilter:x,loop:y,disablePointerSelection:w=!1,vimBindings:S=!0,...k}=t,j=Gi(),N=Gi(),T=Gi(),E=b.useRef(null),_=wpe();md(()=>{if(h!==void 0){let X=h.trim();n.current.value=X,A.emit()}},[h]),md(()=>{_(6,ee)},[]);let A=b.useMemo(()=>({subscribe:X=>(a.current.add(X),()=>a.current.delete(X)),snapshot:()=>n.current,setState:(X,z,U)=>{var te,ne,G,se;if(!Object.is(n.current[X],z)){if(n.current[X]=z,X==="search")W(),B(),_(1,H);else if(X==="value"){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let re=document.getElementById(T);re?re.focus():(te=document.getElementById(j))==null||te.focus()}if(_(7,()=>{var re;n.current.selectedItemId=(re=I())==null?void 0:re.id,A.emit()}),U||_(5,ee),((ne=l.current)==null?void 0:ne.value)!==void 0){let re=z??"";(se=(G=l.current).onValueChange)==null||se.call(G,re);return}}A.emit()}},emit:()=>{a.current.forEach(X=>X())}}),[]),D=b.useMemo(()=>({value:(X,z,U)=>{var te;z!==((te=i.current.get(X))==null?void 0:te.value)&&(i.current.set(X,{value:z,keywords:U}),n.current.filtered.items.set(X,q(z,U)),_(2,()=>{B(),A.emit()}))},item:(X,z)=>(r.current.add(X),z&&(s.current.has(z)?s.current.get(z).add(X):s.current.set(z,new Set([X]))),_(3,()=>{W(),B(),n.current.value||H(),A.emit()}),()=>{i.current.delete(X),r.current.delete(X),n.current.filtered.items.delete(X);let U=I();_(4,()=>{W(),U?.getAttribute("id")===X&&H(),A.emit()})}),group:X=>(s.current.has(X)||s.current.set(X,new Set),()=>{i.current.delete(X),s.current.delete(X)}),filter:()=>l.current.shouldFilter,label:c||t["aria-label"],getDisablePointerSelection:()=>l.current.disablePointerSelection,listId:j,inputId:T,labelId:N,listInnerRef:E}),[]);function q(X,z){var U,te;let ne=(te=(U=l.current)==null?void 0:U.filter)!=null?te:upe;return X?ne(X,n.current.search,z):0}function B(){if(!n.current.search||l.current.shouldFilter===!1)return;let X=n.current.filtered.items,z=[];n.current.filtered.groups.forEach(te=>{let ne=s.current.get(te),G=0;ne.forEach(se=>{let re=X.get(se);G=Math.max(re,G)}),z.push([te,G])});let U=E.current;V().sort((te,ne)=>{var G,se;let re=te.getAttribute("id"),ae=ne.getAttribute("id");return((G=X.get(ae))!=null?G:0)-((se=X.get(re))!=null?se:0)}).forEach(te=>{let ne=te.closest(bS);ne?ne.appendChild(te.parentElement===ne?te:te.closest(`${bS} > *`)):U.appendChild(te.parentElement===U?te:te.closest(`${bS} > *`))}),z.sort((te,ne)=>ne[1]-te[1]).forEach(te=>{var ne;let G=(ne=E.current)==null?void 0:ne.querySelector(`${Vm}[${kh}="${encodeURIComponent(te[0])}"]`);G?.parentElement.appendChild(G)})}function H(){let X=V().find(U=>U.getAttribute("aria-disabled")!=="true"),z=X?.getAttribute(kh);A.setState("value",z||void 0)}function W(){var X,z,U,te;if(!n.current.search||l.current.shouldFilter===!1){n.current.filtered.count=r.current.size;return}n.current.filtered.groups=new Set;let ne=0;for(let G of r.current){let se=(z=(X=i.current.get(G))==null?void 0:X.value)!=null?z:"",re=(te=(U=i.current.get(G))==null?void 0:U.keywords)!=null?te:[],ae=q(se,re);n.current.filtered.items.set(G,ae),ae>0&&ne++}for(let[G,se]of s.current)for(let re of se)if(n.current.filtered.items.get(re)>0){n.current.filtered.groups.add(G);break}n.current.filtered.count=ne}function ee(){var X,z,U;let te=I();te&&(((X=te.parentElement)==null?void 0:X.firstChild)===te&&((U=(z=te.closest(Vm))==null?void 0:z.querySelector(cpe))==null||U.scrollIntoView({block:"nearest"})),te.scrollIntoView({block:"nearest"}))}function I(){var X;return(X=E.current)==null?void 0:X.querySelector(`${_H}[aria-selected="true"]`)}function V(){var X;return Array.from(((X=E.current)==null?void 0:X.querySelectorAll(jA))||[])}function L(X){let z=V()[X];z&&A.setState("value",z.getAttribute(kh))}function $(X){var z;let U=I(),te=V(),ne=te.findIndex(se=>se===U),G=te[ne+X];(z=l.current)!=null&&z.loop&&(G=ne+X<0?te[te.length-1]:ne+X===te.length?te[0]:te[ne+X]),G&&A.setState("value",G.getAttribute(kh))}function K(X){let z=I(),U=z?.closest(Vm),te;for(;U&&!te;)U=X>0?ype(U,Vm):bpe(U,Vm),te=U?.querySelector(jA);te?A.setState("value",te.getAttribute(kh)):$(X)}let Y=()=>L(V().length-1),R=X=>{X.preventDefault(),X.metaKey?Y():X.altKey?K(1):$(1)},ie=X=>{X.preventDefault(),X.metaKey?L(0):X.altKey?K(-1):$(-1)};return b.createElement(hu.div,{ref:e,tabIndex:-1,...k,"cmdk-root":"",onKeyDown:X=>{var z;(z=k.onKeyDown)==null||z.call(k,X);let U=X.nativeEvent.isComposing||X.keyCode===229;if(!(X.defaultPrevented||U))switch(X.key){case"n":case"j":{S&&X.ctrlKey&&R(X);break}case"ArrowDown":{R(X);break}case"p":case"k":{S&&X.ctrlKey&&ie(X);break}case"ArrowUp":{ie(X);break}case"Home":{X.preventDefault(),L(0);break}case"End":{X.preventDefault(),Y();break}case"Enter":{X.preventDefault();let te=I();if(te){let ne=new Event(yO);te.dispatchEvent(ne)}}}}},b.createElement("label",{"cmdk-label":"",htmlFor:D.inputId,id:D.labelId,style:kpe},c),Cb(t,X=>b.createElement(MH.Provider,{value:A},b.createElement(AH.Provider,{value:D},X))))}),dpe=b.forwardRef((t,e)=>{var n,r;let s=Gi(),i=b.useRef(null),a=b.useContext(RH),l=sg(),c=PH(t),d=(r=(n=c.current)==null?void 0:n.forceMount)!=null?r:a?.forceMount;md(()=>{if(!d)return l.item(s,a?.id)},[d]);let h=zH(s,i,[t.value,t.children,i],t.keywords),m=W6(),g=tu(_=>_.value&&_.value===h.current),x=tu(_=>d||l.filter()===!1?!0:_.search?_.filtered.items.get(s)>0:!0);b.useEffect(()=>{let _=i.current;if(!(!_||t.disabled))return _.addEventListener(yO,y),()=>_.removeEventListener(yO,y)},[x,t.onSelect,t.disabled]);function y(){var _,A;w(),(A=(_=c.current).onSelect)==null||A.call(_,h.current)}function w(){m.setState("value",h.current,!0)}if(!x)return null;let{disabled:S,value:k,onSelect:j,forceMount:N,keywords:T,...E}=t;return b.createElement(hu.div,{ref:Gc(i,e),...E,id:s,"cmdk-item":"",role:"option","aria-disabled":!!S,"aria-selected":!!g,"data-disabled":!!S,"data-selected":!!g,onPointerMove:S||l.getDisablePointerSelection()?void 0:w,onClick:S?void 0:y},t.children)}),hpe=b.forwardRef((t,e)=>{let{heading:n,children:r,forceMount:s,...i}=t,a=Gi(),l=b.useRef(null),c=b.useRef(null),d=Gi(),h=sg(),m=tu(x=>s||h.filter()===!1?!0:x.search?x.filtered.groups.has(a):!0);md(()=>h.group(a),[]),zH(a,l,[t.value,t.heading,c]);let g=b.useMemo(()=>({id:a,forceMount:s}),[s]);return b.createElement(hu.div,{ref:Gc(l,e),...i,"cmdk-group":"",role:"presentation",hidden:m?void 0:!0},n&&b.createElement("div",{ref:c,"cmdk-group-heading":"","aria-hidden":!0,id:d},n),Cb(t,x=>b.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":n?d:void 0},b.createElement(RH.Provider,{value:g},x))))}),fpe=b.forwardRef((t,e)=>{let{alwaysRender:n,...r}=t,s=b.useRef(null),i=tu(a=>!a.search);return!n&&!i?null:b.createElement(hu.div,{ref:Gc(s,e),...r,"cmdk-separator":"",role:"separator"})}),mpe=b.forwardRef((t,e)=>{let{onValueChange:n,...r}=t,s=t.value!=null,i=W6(),a=tu(d=>d.search),l=tu(d=>d.selectedItemId),c=sg();return b.useEffect(()=>{t.value!=null&&i.setState("search",t.value)},[t.value]),b.createElement(hu.input,{ref:e,...r,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":c.listId,"aria-labelledby":c.labelId,"aria-activedescendant":l,id:c.inputId,type:"text",value:s?t.value:a,onChange:d=>{s||i.setState("search",d.target.value),n?.(d.target.value)}})}),ppe=b.forwardRef((t,e)=>{let{children:n,label:r="Suggestions",...s}=t,i=b.useRef(null),a=b.useRef(null),l=tu(d=>d.selectedItemId),c=sg();return b.useEffect(()=>{if(a.current&&i.current){let d=a.current,h=i.current,m,g=new ResizeObserver(()=>{m=requestAnimationFrame(()=>{let x=d.offsetHeight;h.style.setProperty("--cmdk-list-height",x.toFixed(1)+"px")})});return g.observe(d),()=>{cancelAnimationFrame(m),g.unobserve(d)}}},[]),b.createElement(hu.div,{ref:Gc(i,e),...s,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":l,"aria-label":r,id:c.listId},Cb(t,d=>b.createElement("div",{ref:Gc(a,c.listInnerRef),"cmdk-list-sizer":""},d)))}),gpe=b.forwardRef((t,e)=>{let{open:n,onOpenChange:r,overlayClassName:s,contentClassName:i,container:a,...l}=t;return b.createElement(Mj,{open:n,onOpenChange:r},b.createElement(Ej,{container:a},b.createElement(Uy,{"cmdk-overlay":"",className:s}),b.createElement(Wy,{"aria-label":t.label,"cmdk-dialog":"",className:i},b.createElement(DH,{ref:e,...l}))))}),xpe=b.forwardRef((t,e)=>tu(n=>n.filtered.count===0)?b.createElement(hu.div,{ref:e,...t,"cmdk-empty":"",role:"presentation"}):null),vpe=b.forwardRef((t,e)=>{let{progress:n,children:r,label:s="Loading...",...i}=t;return b.createElement(hu.div,{ref:e,...i,"cmdk-loading":"",role:"progressbar","aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":s},Cb(t,a=>b.createElement("div",{"aria-hidden":!0},a)))}),Ei=Object.assign(DH,{List:ppe,Item:dpe,Input:mpe,Group:hpe,Separator:fpe,Dialog:gpe,Empty:xpe,Loading:vpe});function ype(t,e){let n=t.nextElementSibling;for(;n;){if(n.matches(e))return n;n=n.nextElementSibling}}function bpe(t,e){let n=t.previousElementSibling;for(;n;){if(n.matches(e))return n;n=n.previousElementSibling}}function PH(t){let e=b.useRef(t);return md(()=>{e.current=t}),e}var md=typeof window>"u"?b.useEffect:b.useLayoutEffect;function Oh(t){let e=b.useRef();return e.current===void 0&&(e.current=t()),e}function tu(t){let e=W6(),n=()=>t(e.snapshot());return b.useSyncExternalStore(e.subscribe,n,n)}function zH(t,e,n,r=[]){let s=b.useRef(),i=sg();return md(()=>{var a;let l=(()=>{var d;for(let h of n){if(typeof h=="string")return h.trim();if(typeof h=="object"&&"current"in h)return h.current?(d=h.current.textContent)==null?void 0:d.trim():s.current}})(),c=r.map(d=>d.trim());i.value(t,l,c),(a=e.current)==null||a.setAttribute(kh,l),s.current=l}),s}var wpe=()=>{let[t,e]=b.useState(),n=Oh(()=>new Map);return md(()=>{n.current.forEach(r=>r()),n.current=new Map},[t]),(r,s)=>{n.current.set(r,s),e({})}};function Spe(t){let e=t.type;return typeof e=="function"?e(t.props):"render"in e?e.render(t.props):t}function Cb({asChild:t,children:e},n){return t&&b.isValidElement(e)?b.cloneElement(Spe(e),{ref:e.ref},n(e.props.children)):n(e)}var kpe={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};const Tb=b.forwardRef(({className:t,...e},n)=>o.jsx(Ei,{ref:n,className:xe("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",t),...e}));Tb.displayName=Ei.displayName;const Eb=b.forwardRef(({className:t,...e},n)=>o.jsxs("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[o.jsx(ii,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),o.jsx(Ei.Input,{ref:n,className:xe("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",t),...e})]}));Eb.displayName=Ei.Input.displayName;const _b=b.forwardRef(({className:t,...e},n)=>o.jsx(Ei.List,{ref:n,className:xe("max-h-[300px] overflow-y-auto overflow-x-hidden",t),...e}));_b.displayName=Ei.List.displayName;const Ab=b.forwardRef((t,e)=>o.jsx(Ei.Empty,{ref:e,className:"py-6 text-center text-sm",...t}));Ab.displayName=Ei.Empty.displayName;const up=b.forwardRef(({className:t,...e},n)=>o.jsx(Ei.Group,{ref:n,className:xe("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",t),...e}));up.displayName=Ei.Group.displayName;const Ope=b.forwardRef(({className:t,...e},n)=>o.jsx(Ei.Separator,{ref:n,className:xe("-mx-1 h-px bg-border",t),...e}));Ope.displayName=Ei.Separator.displayName;const dp=b.forwardRef(({className:t,...e},n)=>o.jsx(Ei.Item,{ref:n,className:xe("relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",t),...e}));dp.displayName=Ei.Item.displayName;const Ci=b.forwardRef(({className:t,...e},n)=>o.jsx(bI,{ref:n,className:xe("grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",t),...e,children:o.jsx(zee,{className:xe("grid place-content-center text-current"),children:o.jsx(zo,{className:"h-4 w-4"})})}));Ci.displayName=bI.displayName;const IH=b.createContext(null),LH="maibot-completed-tours";function jpe(){try{const t=localStorage.getItem(LH);return t?new Set(JSON.parse(t)):new Set}catch{return new Set}}function NA(t){localStorage.setItem(LH,JSON.stringify([...t]))}function Npe({children:t}){const[e,n]=b.useState({activeTourId:null,stepIndex:0,isRunning:!1}),r=b.useRef(new Map),[,s]=b.useState(0),[i,a]=b.useState(jpe),l=b.useCallback((N,T)=>{r.current.set(N,T),s(E=>E+1)},[]),c=b.useCallback(N=>{r.current.delete(N),n(T=>T.activeTourId===N?{...T,activeTourId:null,isRunning:!1,stepIndex:0}:T)},[]),d=b.useCallback((N,T=0)=>{r.current.has(N)&&n({activeTourId:N,stepIndex:T,isRunning:!0})},[]),h=b.useCallback(()=>{n(N=>({...N,isRunning:!1}))},[]),m=b.useCallback(N=>{n(T=>({...T,stepIndex:N}))},[]),g=b.useCallback(()=>{n(N=>({...N,stepIndex:N.stepIndex+1}))},[]),x=b.useCallback(()=>{n(N=>({...N,stepIndex:Math.max(0,N.stepIndex-1)}))},[]),y=b.useCallback(()=>e.activeTourId?r.current.get(e.activeTourId)||[]:[],[e.activeTourId]),w=b.useCallback(N=>{a(T=>{const E=new Set(T);return E.add(N),NA(E),E})},[]),S=b.useCallback(N=>{const{action:T,index:E,status:_,type:A}=N,D=["finished","skipped"];if(T==="close"){n(q=>({...q,isRunning:!1,stepIndex:0}));return}D.includes(_)?n(q=>(_==="finished"&&q.activeTourId&&setTimeout(()=>w(q.activeTourId),0),{...q,isRunning:!1,stepIndex:0})):A==="step:after"&&(T==="next"?n(q=>({...q,stepIndex:E+1})):T==="prev"&&n(q=>({...q,stepIndex:E-1})))},[w]),k=b.useCallback(N=>i.has(N),[i]),j=b.useCallback(N=>{a(T=>{const E=new Set(T);return E.delete(N),NA(E),E})},[]);return o.jsx(IH.Provider,{value:{state:e,tours:r.current,registerTour:l,unregisterTour:c,startTour:d,stopTour:h,goToStep:m,nextStep:g,prevStep:x,getCurrentSteps:y,handleJoyrideCallback:S,isTourCompleted:k,markTourCompleted:w,resetTourCompleted:j},children:t})}function BH(t){return e=>typeof e===t}var Cpe=BH("function"),Tpe=t=>t===null,CA=t=>Object.prototype.toString.call(t).slice(8,-1)==="RegExp",TA=t=>!Epe(t)&&!Tpe(t)&&(Cpe(t)||typeof t=="object"),Epe=BH("undefined");function _pe(t,e){const{length:n}=t;if(n!==e.length)return!1;for(let r=n;r--!==0;)if(!ti(t[r],e[r]))return!1;return!0}function Ape(t,e){if(t.byteLength!==e.byteLength)return!1;const n=new DataView(t.buffer),r=new DataView(e.buffer);let s=t.byteLength;for(;s--;)if(n.getUint8(s)!==r.getUint8(s))return!1;return!0}function Mpe(t,e){if(t.size!==e.size)return!1;for(const n of t.entries())if(!e.has(n[0]))return!1;for(const n of t.entries())if(!ti(n[1],e.get(n[0])))return!1;return!0}function Rpe(t,e){if(t.size!==e.size)return!1;for(const n of t.entries())if(!e.has(n[0]))return!1;return!0}function ti(t,e){if(t===e)return!0;if(t&&TA(t)&&e&&TA(e)){if(t.constructor!==e.constructor)return!1;if(Array.isArray(t)&&Array.isArray(e))return _pe(t,e);if(t instanceof Map&&e instanceof Map)return Mpe(t,e);if(t instanceof Set&&e instanceof Set)return Rpe(t,e);if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(e))return Ape(t,e);if(CA(t)&&CA(e))return t.source===e.source&&t.flags===e.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===e.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===e.toString();const n=Object.keys(t),r=Object.keys(e);if(n.length!==r.length)return!1;for(let s=n.length;s--!==0;)if(!Object.prototype.hasOwnProperty.call(e,n[s]))return!1;for(let s=n.length;s--!==0;){const i=n[s];if(!(i==="_owner"&&t.$$typeof)&&!ti(t[i],e[i]))return!1}return!0}return Number.isNaN(t)&&Number.isNaN(e)?!0:t===e}var Dpe=["Array","ArrayBuffer","AsyncFunction","AsyncGenerator","AsyncGeneratorFunction","Date","Error","Function","Generator","GeneratorFunction","HTMLElement","Map","Object","Promise","RegExp","Set","WeakMap","WeakSet"],Ppe=["bigint","boolean","null","number","string","symbol","undefined"];function Mb(t){const e=Object.prototype.toString.call(t).slice(8,-1);if(/HTML\w+Element/.test(e))return"HTMLElement";if(zpe(e))return e}function io(t){return e=>Mb(e)===t}function zpe(t){return Dpe.includes(t)}function Df(t){return e=>typeof e===t}function Ipe(t){return Ppe.includes(t)}var Lpe=["innerHTML","ownerDocument","style","attributes","nodeValue"];function at(t){if(t===null)return"null";switch(typeof t){case"bigint":return"bigint";case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"symbol":return"symbol";case"undefined":return"undefined"}if(at.array(t))return"Array";if(at.plainFunction(t))return"Function";const e=Mb(t);return e||"Object"}at.array=Array.isArray;at.arrayOf=(t,e)=>!at.array(t)&&!at.function(e)?!1:t.every(n=>e(n));at.asyncGeneratorFunction=t=>Mb(t)==="AsyncGeneratorFunction";at.asyncFunction=io("AsyncFunction");at.bigint=Df("bigint");at.boolean=t=>t===!0||t===!1;at.date=io("Date");at.defined=t=>!at.undefined(t);at.domElement=t=>at.object(t)&&!at.plainObject(t)&&t.nodeType===1&&at.string(t.nodeName)&&Lpe.every(e=>e in t);at.empty=t=>at.string(t)&&t.length===0||at.array(t)&&t.length===0||at.object(t)&&!at.map(t)&&!at.set(t)&&Object.keys(t).length===0||at.set(t)&&t.size===0||at.map(t)&&t.size===0;at.error=io("Error");at.function=Df("function");at.generator=t=>at.iterable(t)&&at.function(t.next)&&at.function(t.throw);at.generatorFunction=io("GeneratorFunction");at.instanceOf=(t,e)=>!t||!e?!1:Object.getPrototypeOf(t)===e.prototype;at.iterable=t=>!at.nullOrUndefined(t)&&at.function(t[Symbol.iterator]);at.map=io("Map");at.nan=t=>Number.isNaN(t);at.null=t=>t===null;at.nullOrUndefined=t=>at.null(t)||at.undefined(t);at.number=t=>Df("number")(t)&&!at.nan(t);at.numericString=t=>at.string(t)&&t.length>0&&!Number.isNaN(Number(t));at.object=t=>!at.nullOrUndefined(t)&&(at.function(t)||typeof t=="object");at.oneOf=(t,e)=>at.array(t)?t.indexOf(e)>-1:!1;at.plainFunction=io("Function");at.plainObject=t=>{if(Mb(t)!=="Object")return!1;const e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};at.primitive=t=>at.null(t)||Ipe(typeof t);at.promise=io("Promise");at.propertyOf=(t,e,n)=>{if(!at.object(t)||!e)return!1;const r=t[e];return at.function(n)?n(r):at.defined(r)};at.regexp=io("RegExp");at.set=io("Set");at.string=Df("string");at.symbol=Df("symbol");at.undefined=Df("undefined");at.weakMap=io("WeakMap");at.weakSet=io("WeakSet");var pt=at;function Bpe(...t){return t.every(e=>pt.string(e)||pt.array(e)||pt.plainObject(e))}function Fpe(t,e,n){return FH(t,e)?[t,e].every(pt.array)?!t.some(RA(n))&&e.some(RA(n)):[t,e].every(pt.plainObject)?!Object.entries(t).some(MA(n))&&Object.entries(e).some(MA(n)):e===n:!1}function EA(t,e,n){const{actual:r,key:s,previous:i,type:a}=n,l=_o(t,s),c=_o(e,s);let d=[l,c].every(pt.number)&&(a==="increased"?lc);return pt.undefined(r)||(d=d&&c===r),pt.undefined(i)||(d=d&&l===i),d}function _A(t,e,n){const{key:r,type:s,value:i}=n,a=_o(t,r),l=_o(e,r),c=s==="added"?a:l,d=s==="added"?l:a;if(!pt.nullOrUndefined(i)){if(pt.defined(c)){if(pt.array(c)||pt.plainObject(c))return Fpe(c,d,i)}else return ti(d,i);return!1}return[a,l].every(pt.array)?!d.every(G6(c)):[a,l].every(pt.plainObject)?qpe(Object.keys(c),Object.keys(d)):![a,l].every(h=>pt.primitive(h)&&pt.defined(h))&&(s==="added"?!pt.defined(a)&&pt.defined(l):pt.defined(a)&&!pt.defined(l))}function AA(t,e,{key:n}={}){let r=_o(t,n),s=_o(e,n);if(!FH(r,s))throw new TypeError("Inputs have different types");if(!Bpe(r,s))throw new TypeError("Inputs don't have length");return[r,s].every(pt.plainObject)&&(r=Object.keys(r),s=Object.keys(s)),[r,s]}function MA(t){return([e,n])=>pt.array(t)?ti(t,n)||t.some(r=>ti(r,n)||pt.array(n)&&G6(n)(r)):pt.plainObject(t)&&t[e]?!!t[e]&&ti(t[e],n):ti(t,n)}function qpe(t,e){return e.some(n=>!t.includes(n))}function RA(t){return e=>pt.array(t)?t.some(n=>ti(n,e)||pt.array(e)&&G6(e)(n)):ti(t,e)}function Um(t,e){return pt.array(t)?t.some(n=>ti(n,e)):ti(t,e)}function G6(t){return e=>t.some(n=>ti(n,e))}function FH(...t){return t.every(pt.array)||t.every(pt.number)||t.every(pt.plainObject)||t.every(pt.string)}function _o(t,e){return pt.plainObject(t)||pt.array(t)?pt.string(e)?e.split(".").reduce((r,s)=>r&&r[s],t):pt.number(e)?t[e]:t:t}function py(t,e){if([t,e].some(pt.nullOrUndefined))throw new Error("Missing required parameters");if(![t,e].every(h=>pt.plainObject(h)||pt.array(h)))throw new Error("Expected plain objects or array");return{added:(h,m)=>{try{return _A(t,e,{key:h,type:"added",value:m})}catch{return!1}},changed:(h,m,g)=>{try{const x=_o(t,h),y=_o(e,h),w=pt.defined(m),S=pt.defined(g);if(w||S){const k=S?Um(g,x):!Um(m,x),j=Um(m,y);return k&&j}return[x,y].every(pt.array)||[x,y].every(pt.plainObject)?!ti(x,y):x!==y}catch{return!1}},changedFrom:(h,m,g)=>{if(!pt.defined(h))return!1;try{const x=_o(t,h),y=_o(e,h),w=pt.defined(g);return Um(m,x)&&(w?Um(g,y):!w)}catch{return!1}},decreased:(h,m,g)=>{if(!pt.defined(h))return!1;try{return EA(t,e,{key:h,actual:m,previous:g,type:"decreased"})}catch{return!1}},emptied:h=>{try{const[m,g]=AA(t,e,{key:h});return!!m.length&&!g.length}catch{return!1}},filled:h=>{try{const[m,g]=AA(t,e,{key:h});return!m.length&&!!g.length}catch{return!1}},increased:(h,m,g)=>{if(!pt.defined(h))return!1;try{return EA(t,e,{key:h,actual:m,previous:g,type:"increased"})}catch{return!1}},removed:(h,m)=>{try{return _A(t,e,{key:h,type:"removed",value:m})}catch{return!1}}}}var wS,DA;function $pe(){if(DA)return wS;DA=1;var t=new Error("Element already at target scroll position"),e=new Error("Scroll cancelled"),n=Math.min,r=Date.now;wS={left:s("scrollLeft"),top:s("scrollTop")};function s(l){return function(d,h,m,g){m=m||{},typeof m=="function"&&(g=m,m={}),typeof g!="function"&&(g=a);var x=r(),y=d[l],w=m.ease||i,S=isNaN(m.duration)?350:+m.duration,k=!1;return y===h?g(t,d[l]):requestAnimationFrame(N),j;function j(){k=!0}function N(T){if(k)return g(e,d[l]);var E=r(),_=n(1,(E-x)/S),A=w(_);d[l]=A*(h-y)+y,_<1?requestAnimationFrame(N):requestAnimationFrame(function(){g(null,d[l])})}}}function i(l){return .5*(1-Math.cos(Math.PI*l))}function a(){}return wS}var Hpe=$pe();const Qpe=yd(Hpe);var Ov={exports:{}},Vpe=Ov.exports,PA;function Upe(){return PA||(PA=1,(function(t){(function(e,n){t.exports?t.exports=n():e.Scrollparent=n()})(Vpe,function(){function e(r){var s=getComputedStyle(r,null).getPropertyValue("overflow");return s.indexOf("scroll")>-1||s.indexOf("auto")>-1}function n(r){if(r instanceof HTMLElement||r instanceof SVGElement){for(var s=r.parentNode;s.parentNode;){if(e(s))return s;s=s.parentNode}return document.scrollingElement||document.documentElement}}return n})})(Ov)),Ov.exports}var Wpe=Upe();const qH=yd(Wpe);var SS,zA;function Gpe(){if(zA)return SS;zA=1;var t=function(r){return Object.prototype.hasOwnProperty.call(r,"props")},e=function(r,s){return r+n(s)},n=function(r){return r===null||typeof r=="boolean"||typeof r>"u"?"":typeof r=="number"?r.toString():typeof r=="string"?r:Array.isArray(r)?r.reduce(e,""):t(r)&&Object.prototype.hasOwnProperty.call(r.props,"children")?n(r.props.children):""};return n.default=n,SS=n,SS}var Xpe=Gpe();const IA=yd(Xpe);var kS,LA;function Ype(){if(LA)return kS;LA=1;var t=function(j){return e(j)&&!n(j)};function e(k){return!!k&&typeof k=="object"}function n(k){var j=Object.prototype.toString.call(k);return j==="[object RegExp]"||j==="[object Date]"||i(k)}var r=typeof Symbol=="function"&&Symbol.for,s=r?Symbol.for("react.element"):60103;function i(k){return k.$$typeof===s}function a(k){return Array.isArray(k)?[]:{}}function l(k,j){return j.clone!==!1&&j.isMergeableObject(k)?w(a(k),k,j):k}function c(k,j,N){return k.concat(j).map(function(T){return l(T,N)})}function d(k,j){if(!j.customMerge)return w;var N=j.customMerge(k);return typeof N=="function"?N:w}function h(k){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(k).filter(function(j){return Object.propertyIsEnumerable.call(k,j)}):[]}function m(k){return Object.keys(k).concat(h(k))}function g(k,j){try{return j in k}catch{return!1}}function x(k,j){return g(k,j)&&!(Object.hasOwnProperty.call(k,j)&&Object.propertyIsEnumerable.call(k,j))}function y(k,j,N){var T={};return N.isMergeableObject(k)&&m(k).forEach(function(E){T[E]=l(k[E],N)}),m(j).forEach(function(E){x(k,E)||(g(k,E)&&N.isMergeableObject(j[E])?T[E]=d(E,N)(k[E],j[E],N):T[E]=l(j[E],N))}),T}function w(k,j,N){N=N||{},N.arrayMerge=N.arrayMerge||c,N.isMergeableObject=N.isMergeableObject||t,N.cloneUnlessOtherwiseSpecified=l;var T=Array.isArray(j),E=Array.isArray(k),_=T===E;return _?T?N.arrayMerge(k,j,N):y(k,j,N):l(j,N)}w.all=function(j,N){if(!Array.isArray(j))throw new Error("first argument should be an array");return j.reduce(function(T,E){return w(T,E,N)},{})};var S=w;return kS=S,kS}var Kpe=Ype();const Ua=yd(Kpe);var ig=typeof window<"u"&&typeof document<"u"&&typeof navigator<"u",Zpe=(function(){for(var t=["Edge","Trident","Firefox"],e=0;e=0)return 1;return 0})();function Jpe(t){var e=!1;return function(){e||(e=!0,window.Promise.resolve().then(function(){e=!1,t()}))}}function ege(t){var e=!1;return function(){e||(e=!0,setTimeout(function(){e=!1,t()},Zpe))}}var tge=ig&&window.Promise,nge=tge?Jpe:ege;function $H(t){var e={};return t&&e.toString.call(t)==="[object Function]"}function Sd(t,e){if(t.nodeType!==1)return[];var n=t.ownerDocument.defaultView,r=n.getComputedStyle(t,null);return e?r[e]:r}function X6(t){return t.nodeName==="HTML"?t:t.parentNode||t.host}function ag(t){if(!t)return document.body;switch(t.nodeName){case"HTML":case"BODY":return t.ownerDocument.body;case"#document":return t.body}var e=Sd(t),n=e.overflow,r=e.overflowX,s=e.overflowY;return/(auto|scroll|overlay)/.test(n+s+r)?t:ag(X6(t))}function HH(t){return t&&t.referenceNode?t.referenceNode:t}var BA=ig&&!!(window.MSInputMethodContext&&document.documentMode),FA=ig&&/MSIE 10/.test(navigator.userAgent);function Pf(t){return t===11?BA:t===10?FA:BA||FA}function lf(t){if(!t)return document.documentElement;for(var e=Pf(10)?document.body:null,n=t.offsetParent||null;n===e&&t.nextElementSibling;)n=(t=t.nextElementSibling).offsetParent;var r=n&&n.nodeName;return!r||r==="BODY"||r==="HTML"?t?t.ownerDocument.documentElement:document.documentElement:["TH","TD","TABLE"].indexOf(n.nodeName)!==-1&&Sd(n,"position")==="static"?lf(n):n}function rge(t){var e=t.nodeName;return e==="BODY"?!1:e==="HTML"||lf(t.firstElementChild)===t}function bO(t){return t.parentNode!==null?bO(t.parentNode):t}function gy(t,e){if(!t||!t.nodeType||!e||!e.nodeType)return document.documentElement;var n=t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_FOLLOWING,r=n?t:e,s=n?e:t,i=document.createRange();i.setStart(r,0),i.setEnd(s,0);var a=i.commonAncestorContainer;if(t!==a&&e!==a||r.contains(s))return rge(a)?a:lf(a);var l=bO(t);return l.host?gy(l.host,e):gy(t,bO(e).host)}function cf(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"top",n=e==="top"?"scrollTop":"scrollLeft",r=t.nodeName;if(r==="BODY"||r==="HTML"){var s=t.ownerDocument.documentElement,i=t.ownerDocument.scrollingElement||s;return i[n]}return t[n]}function sge(t,e){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,r=cf(e,"top"),s=cf(e,"left"),i=n?-1:1;return t.top+=r*i,t.bottom+=r*i,t.left+=s*i,t.right+=s*i,t}function qA(t,e){var n=e==="x"?"Left":"Top",r=n==="Left"?"Right":"Bottom";return parseFloat(t["border"+n+"Width"])+parseFloat(t["border"+r+"Width"])}function $A(t,e,n,r){return Math.max(e["offset"+t],e["scroll"+t],n["client"+t],n["offset"+t],n["scroll"+t],Pf(10)?parseInt(n["offset"+t])+parseInt(r["margin"+(t==="Height"?"Top":"Left")])+parseInt(r["margin"+(t==="Height"?"Bottom":"Right")]):0)}function QH(t){var e=t.body,n=t.documentElement,r=Pf(10)&&getComputedStyle(n);return{height:$A("Height",e,n,r),width:$A("Width",e,n,r)}}var ige=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},age=(function(){function t(e,n){for(var r=0;r2&&arguments[2]!==void 0?arguments[2]:!1,r=Pf(10),s=e.nodeName==="HTML",i=wO(t),a=wO(e),l=ag(t),c=Sd(e),d=parseFloat(c.borderTopWidth),h=parseFloat(c.borderLeftWidth);n&&s&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var m=nu({top:i.top-a.top-d,left:i.left-a.left-h,width:i.width,height:i.height});if(m.marginTop=0,m.marginLeft=0,!r&&s){var g=parseFloat(c.marginTop),x=parseFloat(c.marginLeft);m.top-=d-g,m.bottom-=d-g,m.left-=h-x,m.right-=h-x,m.marginTop=g,m.marginLeft=x}return(r&&!n?e.contains(l):e===l&&l.nodeName!=="BODY")&&(m=sge(m,e)),m}function oge(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=t.ownerDocument.documentElement,r=Y6(t,n),s=Math.max(n.clientWidth,window.innerWidth||0),i=Math.max(n.clientHeight,window.innerHeight||0),a=e?0:cf(n),l=e?0:cf(n,"left"),c={top:a-r.top+r.marginTop,left:l-r.left+r.marginLeft,width:s,height:i};return nu(c)}function VH(t){var e=t.nodeName;if(e==="BODY"||e==="HTML")return!1;if(Sd(t,"position")==="fixed")return!0;var n=X6(t);return n?VH(n):!1}function UH(t){if(!t||!t.parentElement||Pf())return document.documentElement;for(var e=t.parentElement;e&&Sd(e,"transform")==="none";)e=e.parentElement;return e||document.documentElement}function K6(t,e,n,r){var s=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1,i={top:0,left:0},a=s?UH(t):gy(t,HH(e));if(r==="viewport")i=oge(a,s);else{var l=void 0;r==="scrollParent"?(l=ag(X6(e)),l.nodeName==="BODY"&&(l=t.ownerDocument.documentElement)):r==="window"?l=t.ownerDocument.documentElement:l=r;var c=Y6(l,a,s);if(l.nodeName==="HTML"&&!VH(a)){var d=QH(t.ownerDocument),h=d.height,m=d.width;i.top+=c.top-c.marginTop,i.bottom=h+c.top,i.left+=c.left-c.marginLeft,i.right=m+c.left}else i=c}n=n||0;var g=typeof n=="number";return i.left+=g?n:n.left||0,i.top+=g?n:n.top||0,i.right-=g?n:n.right||0,i.bottom-=g?n:n.bottom||0,i}function lge(t){var e=t.width,n=t.height;return e*n}function WH(t,e,n,r,s){var i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0;if(t.indexOf("auto")===-1)return t;var a=K6(n,r,i,s),l={top:{width:a.width,height:e.top-a.top},right:{width:a.right-e.right,height:a.height},bottom:{width:a.width,height:a.bottom-e.bottom},left:{width:e.left-a.left,height:a.height}},c=Object.keys(l).map(function(g){return ja({key:g},l[g],{area:lge(l[g])})}).sort(function(g,x){return x.area-g.area}),d=c.filter(function(g){var x=g.width,y=g.height;return x>=n.clientWidth&&y>=n.clientHeight}),h=d.length>0?d[0].key:c[0].key,m=t.split("-")[1];return h+(m?"-"+m:"")}function GH(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,s=r?UH(e):gy(e,HH(n));return Y6(n,s,r)}function XH(t){var e=t.ownerDocument.defaultView,n=e.getComputedStyle(t),r=parseFloat(n.marginTop||0)+parseFloat(n.marginBottom||0),s=parseFloat(n.marginLeft||0)+parseFloat(n.marginRight||0),i={width:t.offsetWidth+s,height:t.offsetHeight+r};return i}function xy(t){var e={left:"right",right:"left",bottom:"top",top:"bottom"};return t.replace(/left|right|bottom|top/g,function(n){return e[n]})}function YH(t,e,n){n=n.split("-")[0];var r=XH(t),s={width:r.width,height:r.height},i=["right","left"].indexOf(n)!==-1,a=i?"top":"left",l=i?"left":"top",c=i?"height":"width",d=i?"width":"height";return s[a]=e[a]+e[c]/2-r[c]/2,n===l?s[l]=e[l]-r[d]:s[l]=e[xy(l)],s}function og(t,e){return Array.prototype.find?t.find(e):t.filter(e)[0]}function cge(t,e,n){if(Array.prototype.findIndex)return t.findIndex(function(s){return s[e]===n});var r=og(t,function(s){return s[e]===n});return t.indexOf(r)}function KH(t,e,n){var r=n===void 0?t:t.slice(0,cge(t,"name",n));return r.forEach(function(s){s.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var i=s.function||s.fn;s.enabled&&$H(i)&&(e.offsets.popper=nu(e.offsets.popper),e.offsets.reference=nu(e.offsets.reference),e=i(e,s))}),e}function uge(){if(!this.state.isDestroyed){var t={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};t.offsets.reference=GH(this.state,this.popper,this.reference,this.options.positionFixed),t.placement=WH(this.options.placement,t.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),t.originalPlacement=t.placement,t.positionFixed=this.options.positionFixed,t.offsets.popper=YH(this.popper,t.offsets.reference,t.placement),t.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",t=KH(this.modifiers,t),this.state.isCreated?this.options.onUpdate(t):(this.state.isCreated=!0,this.options.onCreate(t))}}function ZH(t,e){return t.some(function(n){var r=n.name,s=n.enabled;return s&&r===e})}function Z6(t){for(var e=[!1,"ms","Webkit","Moz","O"],n=t.charAt(0).toUpperCase()+t.slice(1),r=0;ra[x]&&(t.offsets.popper[m]+=l[m]+y-a[x]),t.offsets.popper=nu(t.offsets.popper);var w=l[m]+l[d]/2-y/2,S=Sd(t.instance.popper),k=parseFloat(S["margin"+h]),j=parseFloat(S["border"+h+"Width"]),N=w-t.offsets.popper[m]-k-j;return N=Math.max(Math.min(a[d]-y,N),0),t.arrowElement=r,t.offsets.arrow=(n={},uf(n,m,Math.round(N)),uf(n,g,""),n),t}function kge(t){return t==="end"?"start":t==="start"?"end":t}var nQ=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],OS=nQ.slice(3);function HA(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=OS.indexOf(t),r=OS.slice(n+1).concat(OS.slice(0,n));return e?r.reverse():r}var jS={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function Oge(t,e){if(ZH(t.instance.modifiers,"inner")||t.flipped&&t.placement===t.originalPlacement)return t;var n=K6(t.instance.popper,t.instance.reference,e.padding,e.boundariesElement,t.positionFixed),r=t.placement.split("-")[0],s=xy(r),i=t.placement.split("-")[1]||"",a=[];switch(e.behavior){case jS.FLIP:a=[r,s];break;case jS.CLOCKWISE:a=HA(r);break;case jS.COUNTERCLOCKWISE:a=HA(r,!0);break;default:a=e.behavior}return a.forEach(function(l,c){if(r!==l||a.length===c+1)return t;r=t.placement.split("-")[0],s=xy(r);var d=t.offsets.popper,h=t.offsets.reference,m=Math.floor,g=r==="left"&&m(d.right)>m(h.left)||r==="right"&&m(d.left)m(h.top)||r==="bottom"&&m(d.top)m(n.right),w=m(d.top)m(n.bottom),k=r==="left"&&x||r==="right"&&y||r==="top"&&w||r==="bottom"&&S,j=["top","bottom"].indexOf(r)!==-1,N=!!e.flipVariations&&(j&&i==="start"&&x||j&&i==="end"&&y||!j&&i==="start"&&w||!j&&i==="end"&&S),T=!!e.flipVariationsByContent&&(j&&i==="start"&&y||j&&i==="end"&&x||!j&&i==="start"&&S||!j&&i==="end"&&w),E=N||T;(g||k||E)&&(t.flipped=!0,(g||k)&&(r=a[c+1]),E&&(i=kge(i)),t.placement=r+(i?"-"+i:""),t.offsets.popper=ja({},t.offsets.popper,YH(t.instance.popper,t.offsets.reference,t.placement)),t=KH(t.instance.modifiers,t,"flip"))}),t}function jge(t){var e=t.offsets,n=e.popper,r=e.reference,s=t.placement.split("-")[0],i=Math.floor,a=["top","bottom"].indexOf(s)!==-1,l=a?"right":"bottom",c=a?"left":"top",d=a?"width":"height";return n[l]i(r[l])&&(t.offsets.popper[c]=i(r[l])),t}function Nge(t,e,n,r){var s=t.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),i=+s[1],a=s[2];if(!i)return t;if(a.indexOf("%")===0){var l=void 0;switch(a){case"%p":l=n;break;case"%":case"%r":default:l=r}var c=nu(l);return c[e]/100*i}else if(a==="vh"||a==="vw"){var d=void 0;return a==="vh"?d=Math.max(document.documentElement.clientHeight,window.innerHeight||0):d=Math.max(document.documentElement.clientWidth,window.innerWidth||0),d/100*i}else return i}function Cge(t,e,n,r){var s=[0,0],i=["right","left"].indexOf(r)!==-1,a=t.split(/(\+|\-)/).map(function(h){return h.trim()}),l=a.indexOf(og(a,function(h){return h.search(/,|\s/)!==-1}));a[l]&&a[l].indexOf(",")===-1&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var c=/\s*,\s*|\s+/,d=l!==-1?[a.slice(0,l).concat([a[l].split(c)[0]]),[a[l].split(c)[1]].concat(a.slice(l+1))]:[a];return d=d.map(function(h,m){var g=(m===1?!i:i)?"height":"width",x=!1;return h.reduce(function(y,w){return y[y.length-1]===""&&["+","-"].indexOf(w)!==-1?(y[y.length-1]=w,x=!0,y):x?(y[y.length-1]+=w,x=!1,y):y.concat(w)},[]).map(function(y){return Nge(y,g,e,n)})}),d.forEach(function(h,m){h.forEach(function(g,x){J6(g)&&(s[m]+=g*(h[x-1]==="-"?-1:1))})}),s}function Tge(t,e){var n=e.offset,r=t.placement,s=t.offsets,i=s.popper,a=s.reference,l=r.split("-")[0],c=void 0;return J6(+n)?c=[+n,0]:c=Cge(n,i,a,l),l==="left"?(i.top+=c[0],i.left-=c[1]):l==="right"?(i.top+=c[0],i.left+=c[1]):l==="top"?(i.left+=c[0],i.top-=c[1]):l==="bottom"&&(i.left+=c[0],i.top+=c[1]),t.popper=i,t}function Ege(t,e){var n=e.boundariesElement||lf(t.instance.popper);t.instance.reference===n&&(n=lf(n));var r=Z6("transform"),s=t.instance.popper.style,i=s.top,a=s.left,l=s[r];s.top="",s.left="",s[r]="";var c=K6(t.instance.popper,t.instance.reference,e.padding,n,t.positionFixed);s.top=i,s.left=a,s[r]=l,e.boundaries=c;var d=e.priority,h=t.offsets.popper,m={primary:function(x){var y=h[x];return h[x]c[x]&&!e.escapeWithReference&&(w=Math.min(h[y],c[x]-(x==="right"?h.width:h.height))),uf({},y,w)}};return d.forEach(function(g){var x=["left","top"].indexOf(g)!==-1?"primary":"secondary";h=ja({},h,m[x](g))}),t.offsets.popper=h,t}function _ge(t){var e=t.placement,n=e.split("-")[0],r=e.split("-")[1];if(r){var s=t.offsets,i=s.reference,a=s.popper,l=["bottom","top"].indexOf(n)!==-1,c=l?"left":"top",d=l?"width":"height",h={start:uf({},c,i[c]),end:uf({},c,i[c]+i[d]-a[d])};t.offsets.popper=ja({},a,h[r])}return t}function Age(t){if(!tQ(t.instance.modifiers,"hide","preventOverflow"))return t;var e=t.offsets.reference,n=og(t.instance.modifiers,function(r){return r.name==="preventOverflow"}).boundaries;if(e.bottomn.right||e.top>n.bottom||e.right2&&arguments[2]!==void 0?arguments[2]:{};ige(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(r.update)},this.update=nge(this.update.bind(this)),this.options=ja({},t.Defaults,s),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=e&&e.jquery?e[0]:e,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(ja({},t.Defaults.modifiers,s.modifiers)).forEach(function(a){r.options.modifiers[a]=ja({},t.Defaults.modifiers[a]||{},s.modifiers?s.modifiers[a]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(a){return ja({name:a},r.options.modifiers[a])}).sort(function(a,l){return a.order-l.order}),this.modifiers.forEach(function(a){a.enabled&&$H(a.onLoad)&&a.onLoad(r.reference,r.popper,r.options,a,r.state)}),this.update();var i=this.options.eventsEnabled;i&&this.enableEventListeners(),this.state.eventsEnabled=i}return age(t,[{key:"update",value:function(){return uge.call(this)}},{key:"destroy",value:function(){return dge.call(this)}},{key:"enableEventListeners",value:function(){return fge.call(this)}},{key:"disableEventListeners",value:function(){return pge.call(this)}}]),t})();hp.Utils=(typeof window<"u"?window:global).PopperUtils;hp.placements=nQ;hp.Defaults=Dge;var Pge=["innerHTML","ownerDocument","style","attributes","nodeValue"],zge=["Array","ArrayBuffer","AsyncFunction","AsyncGenerator","AsyncGeneratorFunction","Date","Error","Function","Generator","GeneratorFunction","HTMLElement","Map","Object","Promise","RegExp","Set","WeakMap","WeakSet"],Ige=["bigint","boolean","null","number","string","symbol","undefined"];function Rb(t){var e=Object.prototype.toString.call(t).slice(8,-1);if(/HTML\w+Element/.test(e))return"HTMLElement";if(Lge(e))return e}function ao(t){return function(e){return Rb(e)===t}}function Lge(t){return zge.includes(t)}function zf(t){return function(e){return typeof e===t}}function Bge(t){return Ige.includes(t)}function Ee(t){if(t===null)return"null";switch(typeof t){case"bigint":return"bigint";case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"symbol":return"symbol";case"undefined":return"undefined"}if(Ee.array(t))return"Array";if(Ee.plainFunction(t))return"Function";var e=Rb(t);return e||"Object"}Ee.array=Array.isArray;Ee.arrayOf=function(t,e){return!Ee.array(t)&&!Ee.function(e)?!1:t.every(function(n){return e(n)})};Ee.asyncGeneratorFunction=function(t){return Rb(t)==="AsyncGeneratorFunction"};Ee.asyncFunction=ao("AsyncFunction");Ee.bigint=zf("bigint");Ee.boolean=function(t){return t===!0||t===!1};Ee.date=ao("Date");Ee.defined=function(t){return!Ee.undefined(t)};Ee.domElement=function(t){return Ee.object(t)&&!Ee.plainObject(t)&&t.nodeType===1&&Ee.string(t.nodeName)&&Pge.every(function(e){return e in t})};Ee.empty=function(t){return Ee.string(t)&&t.length===0||Ee.array(t)&&t.length===0||Ee.object(t)&&!Ee.map(t)&&!Ee.set(t)&&Object.keys(t).length===0||Ee.set(t)&&t.size===0||Ee.map(t)&&t.size===0};Ee.error=ao("Error");Ee.function=zf("function");Ee.generator=function(t){return Ee.iterable(t)&&Ee.function(t.next)&&Ee.function(t.throw)};Ee.generatorFunction=ao("GeneratorFunction");Ee.instanceOf=function(t,e){return!t||!e?!1:Object.getPrototypeOf(t)===e.prototype};Ee.iterable=function(t){return!Ee.nullOrUndefined(t)&&Ee.function(t[Symbol.iterator])};Ee.map=ao("Map");Ee.nan=function(t){return Number.isNaN(t)};Ee.null=function(t){return t===null};Ee.nullOrUndefined=function(t){return Ee.null(t)||Ee.undefined(t)};Ee.number=function(t){return zf("number")(t)&&!Ee.nan(t)};Ee.numericString=function(t){return Ee.string(t)&&t.length>0&&!Number.isNaN(Number(t))};Ee.object=function(t){return!Ee.nullOrUndefined(t)&&(Ee.function(t)||typeof t=="object")};Ee.oneOf=function(t,e){return Ee.array(t)?t.indexOf(e)>-1:!1};Ee.plainFunction=ao("Function");Ee.plainObject=function(t){if(Rb(t)!=="Object")return!1;var e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};Ee.primitive=function(t){return Ee.null(t)||Bge(typeof t)};Ee.promise=ao("Promise");Ee.propertyOf=function(t,e,n){if(!Ee.object(t)||!e)return!1;var r=t[e];return Ee.function(n)?n(r):Ee.defined(r)};Ee.regexp=ao("RegExp");Ee.set=ao("Set");Ee.string=zf("string");Ee.symbol=zf("symbol");Ee.undefined=zf("undefined");Ee.weakMap=ao("WeakMap");Ee.weakSet=ao("WeakSet");function rQ(t){return function(e){return typeof e===t}}var Fge=rQ("function"),qge=function(t){return t===null},QA=function(t){return Object.prototype.toString.call(t).slice(8,-1)==="RegExp"},VA=function(t){return!$ge(t)&&!qge(t)&&(Fge(t)||typeof t=="object")},$ge=rQ("undefined"),kO=function(t){var e=typeof Symbol=="function"&&Symbol.iterator,n=e&&t[e],r=0;if(n)return n.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")};function Hge(t,e){var n=t.length;if(n!==e.length)return!1;for(var r=n;r--!==0;)if(!Si(t[r],e[r]))return!1;return!0}function Qge(t,e){if(t.byteLength!==e.byteLength)return!1;for(var n=new DataView(t.buffer),r=new DataView(e.buffer),s=t.byteLength;s--;)if(n.getUint8(s)!==r.getUint8(s))return!1;return!0}function Vge(t,e){var n,r,s,i;if(t.size!==e.size)return!1;try{for(var a=kO(t.entries()),l=a.next();!l.done;l=a.next()){var c=l.value;if(!e.has(c[0]))return!1}}catch(m){n={error:m}}finally{try{l&&!l.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}try{for(var d=kO(t.entries()),h=d.next();!h.done;h=d.next()){var c=h.value;if(!Si(c[1],e.get(c[0])))return!1}}catch(m){s={error:m}}finally{try{h&&!h.done&&(i=d.return)&&i.call(d)}finally{if(s)throw s.error}}return!0}function Uge(t,e){var n,r;if(t.size!==e.size)return!1;try{for(var s=kO(t.entries()),i=s.next();!i.done;i=s.next()){var a=i.value;if(!e.has(a[0]))return!1}}catch(l){n={error:l}}finally{try{i&&!i.done&&(r=s.return)&&r.call(s)}finally{if(n)throw n.error}}return!0}function Si(t,e){if(t===e)return!0;if(t&&VA(t)&&e&&VA(e)){if(t.constructor!==e.constructor)return!1;if(Array.isArray(t)&&Array.isArray(e))return Hge(t,e);if(t instanceof Map&&e instanceof Map)return Vge(t,e);if(t instanceof Set&&e instanceof Set)return Uge(t,e);if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(e))return Qge(t,e);if(QA(t)&&QA(e))return t.source===e.source&&t.flags===e.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===e.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===e.toString();var n=Object.keys(t),r=Object.keys(e);if(n.length!==r.length)return!1;for(var s=n.length;s--!==0;)if(!Object.prototype.hasOwnProperty.call(e,n[s]))return!1;for(var s=n.length;s--!==0;){var i=n[s];if(!(i==="_owner"&&t.$$typeof)&&!Si(t[i],e[i]))return!1}return!0}return Number.isNaN(t)&&Number.isNaN(e)?!0:t===e}function Wge(){for(var t=[],e=0;ec);return Ee.undefined(r)||(d=d&&c===r),Ee.undefined(i)||(d=d&&l===i),d}function WA(t,e,n){var r=n.key,s=n.type,i=n.value,a=Ao(t,r),l=Ao(e,r),c=s==="added"?a:l,d=s==="added"?l:a;if(!Ee.nullOrUndefined(i)){if(Ee.defined(c)){if(Ee.array(c)||Ee.plainObject(c))return Gge(c,d,i)}else return Si(d,i);return!1}return[a,l].every(Ee.array)?!d.every(eN(c)):[a,l].every(Ee.plainObject)?Xge(Object.keys(c),Object.keys(d)):![a,l].every(function(h){return Ee.primitive(h)&&Ee.defined(h)})&&(s==="added"?!Ee.defined(a)&&Ee.defined(l):Ee.defined(a)&&!Ee.defined(l))}function GA(t,e,n){var r=n===void 0?{}:n,s=r.key,i=Ao(t,s),a=Ao(e,s);if(!sQ(i,a))throw new TypeError("Inputs have different types");if(!Wge(i,a))throw new TypeError("Inputs don't have length");return[i,a].every(Ee.plainObject)&&(i=Object.keys(i),a=Object.keys(a)),[i,a]}function XA(t){return function(e){var n=e[0],r=e[1];return Ee.array(t)?Si(t,r)||t.some(function(s){return Si(s,r)||Ee.array(r)&&eN(r)(s)}):Ee.plainObject(t)&&t[n]?!!t[n]&&Si(t[n],r):Si(t,r)}}function Xge(t,e){return e.some(function(n){return!t.includes(n)})}function YA(t){return function(e){return Ee.array(t)?t.some(function(n){return Si(n,e)||Ee.array(e)&&eN(e)(n)}):Si(t,e)}}function Wm(t,e){return Ee.array(t)?t.some(function(n){return Si(n,e)}):Si(t,e)}function eN(t){return function(e){return t.some(function(n){return Si(n,e)})}}function sQ(){for(var t=[],e=0;e"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Jge(t,e){if(t==null)return{};var n={},r=Object.keys(t),s,i;for(i=0;i=0)&&(n[s]=t[s]);return n}function iQ(t,e){if(t==null)return{};var n=Jge(t,e),r,s;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(s=0;s=0)&&Object.prototype.propertyIsEnumerable.call(t,r)&&(n[r]=t[r])}return n}function El(t){if(t===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function exe(t,e){if(e&&(typeof e=="object"||typeof e=="function"))return e;if(e!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return El(t)}function dg(t){var e=Zge();return function(){var r=vy(t),s;if(e){var i=vy(this).constructor;s=Reflect.construct(r,arguments,i)}else s=r.apply(this,arguments);return exe(this,s)}}function txe(t,e){if(typeof t!="object"||t===null)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var r=n.call(t,e);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(e==="string"?String:Number)(t)}function aQ(t){var e=txe(t,"string");return typeof e=="symbol"?e:String(e)}var nxe={flip:{padding:20},preventOverflow:{padding:10}},rxe="The typeValidator argument must be a function with the signature function(props, propName, componentName).",sxe="The error message is optional, but must be a string if provided.";function ixe(t,e,n,r){return typeof t=="boolean"?t:typeof t=="function"?t(e,n,r):t?!!t:!1}function axe(t,e){return Object.hasOwnProperty.call(t,e)}function oxe(t,e,n,r){return new Error("Required ".concat(t[e]," `").concat(e,"` was not specified in `").concat(n,"`."))}function lxe(t,e){if(typeof t!="function")throw new TypeError(rxe);if(e&&typeof e!="string")throw new TypeError(sxe)}function ZA(t,e,n){return lxe(t,n),function(r,s,i){for(var a=arguments.length,l=new Array(a>3?a-3:0),c=3;c3&&arguments[3]!==void 0?arguments[3]:!1;t.addEventListener(e,n,r)}function uxe(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;t.removeEventListener(e,n,r)}function dxe(t,e,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,s;s=function(a){n(a),uxe(t,e,s)},cxe(t,e,s,r)}function JA(){}var oQ=(function(t){ug(n,t);var e=dg(n);function n(){return lg(this,n),e.apply(this,arguments)}return cg(n,[{key:"componentDidMount",value:function(){bo()&&(this.node||this.appendNode(),Gm||this.renderPortal())}},{key:"componentDidUpdate",value:function(){bo()&&(Gm||this.renderPortal())}},{key:"componentWillUnmount",value:function(){!bo()||!this.node||(Gm||sv.unmountComponentAtNode(this.node),this.node&&this.node.parentNode===document.body&&(document.body.removeChild(this.node),this.node=void 0))}},{key:"appendNode",value:function(){var s=this.props,i=s.id,a=s.zIndex;this.node||(this.node=document.createElement("div"),i&&(this.node.id=i),a&&(this.node.style.zIndex=a),document.body.appendChild(this.node))}},{key:"renderPortal",value:function(){if(!bo())return null;var s=this.props,i=s.children,a=s.setRef;if(this.node||this.appendNode(),Gm)return sv.createPortal(i,this.node);var l=sv.unstable_renderSubtreeIntoContainer(this,i.length>1?oe.createElement("div",null,i):i[0],this.node);return a(l),null}},{key:"renderReact16",value:function(){var s=this.props,i=s.hasChildren,a=s.placement,l=s.target;return i?this.renderPortal():l||a==="center"?this.renderPortal():null}},{key:"render",value:function(){return Gm?this.renderReact16():null}}]),n})(oe.Component);Fs(oQ,"propTypes",{children:Ge.oneOfType([Ge.element,Ge.array]),hasChildren:Ge.bool,id:Ge.oneOfType([Ge.string,Ge.number]),placement:Ge.string,setRef:Ge.func.isRequired,target:Ge.oneOfType([Ge.object,Ge.string]),zIndex:Ge.number});var lQ=(function(t){ug(n,t);var e=dg(n);function n(){return lg(this,n),e.apply(this,arguments)}return cg(n,[{key:"parentStyle",get:function(){var s=this.props,i=s.placement,a=s.styles,l=a.arrow.length,c={pointerEvents:"none",position:"absolute",width:"100%"};return i.startsWith("top")?(c.bottom=0,c.left=0,c.right=0,c.height=l):i.startsWith("bottom")?(c.left=0,c.right=0,c.top=0,c.height=l):i.startsWith("left")?(c.right=0,c.top=0,c.bottom=0):i.startsWith("right")&&(c.left=0,c.top=0),c}},{key:"render",value:function(){var s=this.props,i=s.placement,a=s.setArrowRef,l=s.styles,c=l.arrow,d=c.color,h=c.display,m=c.length,g=c.margin,x=c.position,y=c.spread,w={display:h,position:x},S,k=y,j=m;return i.startsWith("top")?(S="0,0 ".concat(k/2,",").concat(j," ").concat(k,",0"),w.bottom=0,w.marginLeft=g,w.marginRight=g):i.startsWith("bottom")?(S="".concat(k,",").concat(j," ").concat(k/2,",0 0,").concat(j),w.top=0,w.marginLeft=g,w.marginRight=g):i.startsWith("left")?(j=y,k=m,S="0,0 ".concat(k,",").concat(j/2," 0,").concat(j),w.right=0,w.marginTop=g,w.marginBottom=g):i.startsWith("right")&&(j=y,k=m,S="".concat(k,",").concat(j," ").concat(k,",0 0,").concat(j/2),w.left=0,w.marginTop=g,w.marginBottom=g),oe.createElement("div",{className:"__floater__arrow",style:this.parentStyle},oe.createElement("span",{ref:a,style:w},oe.createElement("svg",{width:k,height:j,version:"1.1",xmlns:"http://www.w3.org/2000/svg"},oe.createElement("polygon",{points:S,fill:d}))))}}]),n})(oe.Component);Fs(lQ,"propTypes",{placement:Ge.string.isRequired,setArrowRef:Ge.func.isRequired,styles:Ge.object.isRequired});var hxe=["color","height","width"];function cQ(t){var e=t.handleClick,n=t.styles,r=n.color,s=n.height,i=n.width,a=iQ(n,hxe);return oe.createElement("button",{"aria-label":"close",onClick:e,style:a,type:"button"},oe.createElement("svg",{width:"".concat(i,"px"),height:"".concat(s,"px"),viewBox:"0 0 18 18",version:"1.1",xmlns:"http://www.w3.org/2000/svg",preserveAspectRatio:"xMidYMid"},oe.createElement("g",null,oe.createElement("path",{d:"M8.13911129,9.00268191 L0.171521827,17.0258467 C-0.0498027049,17.248715 -0.0498027049,17.6098394 0.171521827,17.8327545 C0.28204354,17.9443526 0.427188206,17.9998706 0.572051765,17.9998706 C0.71714958,17.9998706 0.862013139,17.9443526 0.972581703,17.8327545 L9.0000937,9.74924618 L17.0276057,17.8327545 C17.1384085,17.9443526 17.2832721,17.9998706 17.4281356,17.9998706 C17.5729992,17.9998706 17.718097,17.9443526 17.8286656,17.8327545 C18.0499901,17.6098862 18.0499901,17.2487618 17.8286656,17.0258467 L9.86135722,9.00268191 L17.8340066,0.973848225 C18.0553311,0.750979934 18.0553311,0.389855532 17.8340066,0.16694039 C17.6126821,-0.0556467968 17.254037,-0.0556467968 17.0329467,0.16694039 L9.00042166,8.25611765 L0.967006424,0.167268345 C0.745681892,-0.0553188426 0.387317931,-0.0553188426 0.165993399,0.167268345 C-0.0553311331,0.390136635 -0.0553311331,0.751261038 0.165993399,0.974176179 L8.13920499,9.00268191 L8.13911129,9.00268191 Z",fill:r}))))}cQ.propTypes={handleClick:Ge.func.isRequired,styles:Ge.object.isRequired};function uQ(t){var e=t.content,n=t.footer,r=t.handleClick,s=t.open,i=t.positionWrapper,a=t.showCloseButton,l=t.title,c=t.styles,d={content:oe.isValidElement(e)?e:oe.createElement("div",{className:"__floater__content",style:c.content},e)};return l&&(d.title=oe.isValidElement(l)?l:oe.createElement("div",{className:"__floater__title",style:c.title},l)),n&&(d.footer=oe.isValidElement(n)?n:oe.createElement("div",{className:"__floater__footer",style:c.footer},n)),(a||i)&&!Ee.boolean(s)&&(d.close=oe.createElement(cQ,{styles:c.close,handleClick:r})),oe.createElement("div",{className:"__floater__container",style:c.container},d.close,d.title,d.content,d.footer)}uQ.propTypes={content:Ge.node.isRequired,footer:Ge.node,handleClick:Ge.func.isRequired,open:Ge.bool,positionWrapper:Ge.bool.isRequired,showCloseButton:Ge.bool.isRequired,styles:Ge.object.isRequired,title:Ge.node};var dQ=(function(t){ug(n,t);var e=dg(n);function n(){return lg(this,n),e.apply(this,arguments)}return cg(n,[{key:"style",get:function(){var s=this.props,i=s.disableAnimation,a=s.component,l=s.placement,c=s.hideArrow,d=s.status,h=s.styles,m=h.arrow.length,g=h.floater,x=h.floaterCentered,y=h.floaterClosing,w=h.floaterOpening,S=h.floaterWithAnimation,k=h.floaterWithComponent,j={};return c||(l.startsWith("top")?j.padding="0 0 ".concat(m,"px"):l.startsWith("bottom")?j.padding="".concat(m,"px 0 0"):l.startsWith("left")?j.padding="0 ".concat(m,"px 0 0"):l.startsWith("right")&&(j.padding="0 0 0 ".concat(m,"px"))),[Tn.OPENING,Tn.OPEN].indexOf(d)!==-1&&(j=jr(jr({},j),w)),d===Tn.CLOSING&&(j=jr(jr({},j),y)),d===Tn.OPEN&&!i&&(j=jr(jr({},j),S)),l==="center"&&(j=jr(jr({},j),x)),a&&(j=jr(jr({},j),k)),jr(jr({},g),j)}},{key:"render",value:function(){var s=this.props,i=s.component,a=s.handleClick,l=s.hideArrow,c=s.setFloaterRef,d=s.status,h={},m=["__floater"];return i?oe.isValidElement(i)?h.content=oe.cloneElement(i,{closeFn:a}):h.content=i({closeFn:a}):h.content=oe.createElement(uQ,this.props),d===Tn.OPEN&&m.push("__floater__open"),l||(h.arrow=oe.createElement(lQ,this.props)),oe.createElement("div",{ref:c,className:m.join(" "),style:this.style},oe.createElement("div",{className:"__floater__body"},h.content,h.arrow))}}]),n})(oe.Component);Fs(dQ,"propTypes",{component:Ge.oneOfType([Ge.func,Ge.element]),content:Ge.node,disableAnimation:Ge.bool.isRequired,footer:Ge.node,handleClick:Ge.func.isRequired,hideArrow:Ge.bool.isRequired,open:Ge.bool,placement:Ge.string.isRequired,positionWrapper:Ge.bool.isRequired,setArrowRef:Ge.func.isRequired,setFloaterRef:Ge.func.isRequired,showCloseButton:Ge.bool,status:Ge.string.isRequired,styles:Ge.object.isRequired,title:Ge.node});var hQ=(function(t){ug(n,t);var e=dg(n);function n(){return lg(this,n),e.apply(this,arguments)}return cg(n,[{key:"render",value:function(){var s=this.props,i=s.children,a=s.handleClick,l=s.handleMouseEnter,c=s.handleMouseLeave,d=s.setChildRef,h=s.setWrapperRef,m=s.style,g=s.styles,x;if(i)if(oe.Children.count(i)===1)if(!oe.isValidElement(i))x=oe.createElement("span",null,i);else{var y=Ee.function(i.type)?"innerRef":"ref";x=oe.cloneElement(oe.Children.only(i),Fs({},y,d))}else x=i;return x?oe.createElement("span",{ref:h,style:jr(jr({},g),m),onClick:a,onMouseEnter:l,onMouseLeave:c},x):null}}]),n})(oe.Component);Fs(hQ,"propTypes",{children:Ge.node,handleClick:Ge.func.isRequired,handleMouseEnter:Ge.func.isRequired,handleMouseLeave:Ge.func.isRequired,setChildRef:Ge.func.isRequired,setWrapperRef:Ge.func.isRequired,style:Ge.object,styles:Ge.object.isRequired});var fxe={zIndex:100};function mxe(t){var e=Ua(fxe,t.options||{});return{wrapper:{cursor:"help",display:"inline-flex",flexDirection:"column",zIndex:e.zIndex},wrapperPosition:{left:-1e3,position:"absolute",top:-1e3,visibility:"hidden"},floater:{display:"inline-block",filter:"drop-shadow(0 0 3px rgba(0, 0, 0, 0.3))",maxWidth:300,opacity:0,position:"relative",transition:"opacity 0.3s",visibility:"hidden",zIndex:e.zIndex},floaterOpening:{opacity:1,visibility:"visible"},floaterWithAnimation:{opacity:1,transition:"opacity 0.3s, transform 0.2s",visibility:"visible"},floaterWithComponent:{maxWidth:"100%"},floaterClosing:{opacity:0,visibility:"visible"},floaterCentered:{left:"50%",position:"fixed",top:"50%",transform:"translate(-50%, -50%)"},container:{backgroundColor:"#fff",color:"#666",minHeight:60,minWidth:200,padding:20,position:"relative",zIndex:10},title:{borderBottom:"1px solid #555",color:"#555",fontSize:18,marginBottom:5,paddingBottom:6,paddingRight:18},content:{fontSize:15},close:{backgroundColor:"transparent",border:0,borderRadius:0,color:"#555",fontSize:0,height:15,outline:"none",padding:10,position:"absolute",right:0,top:0,width:15,WebkitAppearance:"none"},footer:{borderTop:"1px solid #ccc",fontSize:13,marginTop:10,paddingTop:5},arrow:{color:"#fff",display:"inline-flex",length:16,margin:8,position:"absolute",spread:32},options:e}}var pxe=["arrow","flip","offset"],gxe=["position","top","right","bottom","left"],tN=(function(t){ug(n,t);var e=dg(n);function n(r){var s;return lg(this,n),s=e.call(this,r),Fs(El(s),"setArrowRef",function(i){s.arrowRef=i}),Fs(El(s),"setChildRef",function(i){s.childRef=i}),Fs(El(s),"setFloaterRef",function(i){s.floaterRef=i}),Fs(El(s),"setWrapperRef",function(i){s.wrapperRef=i}),Fs(El(s),"handleTransitionEnd",function(){var i=s.state.status,a=s.props.callback;s.wrapperPopper&&s.wrapperPopper.instance.update(),s.setState({status:i===Tn.OPENING?Tn.OPEN:Tn.IDLE},function(){var l=s.state.status;a(l===Tn.OPEN?"open":"close",s.props)})}),Fs(El(s),"handleClick",function(){var i=s.props,a=i.event,l=i.open;if(!Ee.boolean(l)){var c=s.state,d=c.positionWrapper,h=c.status;(s.event==="click"||s.event==="hover"&&d)&&(E1({title:"click",data:[{event:a,status:h===Tn.OPEN?"closing":"opening"}],debug:s.debug}),s.toggle())}}),Fs(El(s),"handleMouseEnter",function(){var i=s.props,a=i.event,l=i.open;if(!(Ee.boolean(l)||NS())){var c=s.state.status;s.event==="hover"&&c===Tn.IDLE&&(E1({title:"mouseEnter",data:[{key:"originalEvent",value:a}],debug:s.debug}),clearTimeout(s.eventDelayTimeout),s.toggle())}}),Fs(El(s),"handleMouseLeave",function(){var i=s.props,a=i.event,l=i.eventDelay,c=i.open;if(!(Ee.boolean(c)||NS())){var d=s.state,h=d.status,m=d.positionWrapper;s.event==="hover"&&(E1({title:"mouseLeave",data:[{key:"originalEvent",value:a}],debug:s.debug}),l?[Tn.OPENING,Tn.OPEN].indexOf(h)!==-1&&!m&&!s.eventDelayTimeout&&(s.eventDelayTimeout=setTimeout(function(){delete s.eventDelayTimeout,s.toggle()},l*1e3)):s.toggle(Tn.IDLE))}}),s.state={currentPlacement:r.placement,needsUpdate:!1,positionWrapper:r.wrapperOptions.position&&!!r.target,status:Tn.INIT,statusWrapper:Tn.INIT},s._isMounted=!1,s.hasMounted=!1,bo()&&window.addEventListener("load",function(){s.popper&&s.popper.instance.update(),s.wrapperPopper&&s.wrapperPopper.instance.update()}),s}return cg(n,[{key:"componentDidMount",value:function(){if(bo()){var s=this.state.positionWrapper,i=this.props,a=i.children,l=i.open,c=i.target;this._isMounted=!0,E1({title:"init",data:{hasChildren:!!a,hasTarget:!!c,isControlled:Ee.boolean(l),positionWrapper:s,target:this.target,floater:this.floaterRef},debug:this.debug}),this.hasMounted||(this.initPopper(),this.hasMounted=!0),!a&&c&&Ee.boolean(l)}}},{key:"componentDidUpdate",value:function(s,i){if(bo()){var a=this.props,l=a.autoOpen,c=a.open,d=a.target,h=a.wrapperOptions,m=Yge(i,this.state),g=m.changedFrom,x=m.changed;if(s.open!==c){var y;Ee.boolean(c)&&(y=c?Tn.OPENING:Tn.CLOSING),this.toggle(y)}(s.wrapperOptions.position!==h.position||s.target!==d)&&this.changeWrapperPosition(this.props),x("status",Tn.IDLE)&&c?this.toggle(Tn.OPEN):g("status",Tn.INIT,Tn.IDLE)&&l&&this.toggle(Tn.OPEN),this.popper&&x("status",Tn.OPENING)&&this.popper.instance.update(),this.floaterRef&&(x("status",Tn.OPENING)||x("status",Tn.CLOSING))&&dxe(this.floaterRef,"transitionend",this.handleTransitionEnd),x("needsUpdate",!0)&&this.rebuildPopper()}}},{key:"componentWillUnmount",value:function(){bo()&&(this._isMounted=!1,this.popper&&this.popper.instance.destroy(),this.wrapperPopper&&this.wrapperPopper.instance.destroy())}},{key:"initPopper",value:function(){var s=this,i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.target,a=this.state.positionWrapper,l=this.props,c=l.disableFlip,d=l.getPopper,h=l.hideArrow,m=l.offset,g=l.placement,x=l.wrapperOptions,y=g==="top"||g==="bottom"?"flip":["right","bottom-end","top-end","left","top-start","bottom-start"];if(g==="center")this.setState({status:Tn.IDLE});else if(i&&this.floaterRef){var w=this.options,S=w.arrow,k=w.flip,j=w.offset,N=iQ(w,pxe);new hp(i,this.floaterRef,{placement:g,modifiers:jr({arrow:jr({enabled:!h,element:this.arrowRef},S),flip:jr({enabled:!c,behavior:y},k),offset:jr({offset:"0, ".concat(m,"px")},j)},N),onCreate:function(_){var A;if(s.popper=_,!((A=s.floaterRef)!==null&&A!==void 0&&A.isConnected)){s.setState({needsUpdate:!0});return}d(_,"floater"),s._isMounted&&s.setState({currentPlacement:_.placement,status:Tn.IDLE}),g!==_.placement&&setTimeout(function(){_.instance.update()},1)},onUpdate:function(_){s.popper=_;var A=s.state.currentPlacement;s._isMounted&&_.placement!==A&&s.setState({currentPlacement:_.placement})}})}if(a){var T=Ee.undefined(x.offset)?0:x.offset;new hp(this.target,this.wrapperRef,{placement:x.placement||g,modifiers:{arrow:{enabled:!1},offset:{offset:"0, ".concat(T,"px")},flip:{enabled:!1}},onCreate:function(_){s.wrapperPopper=_,s._isMounted&&s.setState({statusWrapper:Tn.IDLE}),d(_,"wrapper"),g!==_.placement&&setTimeout(function(){_.instance.update()},1)}})}}},{key:"rebuildPopper",value:function(){var s=this;this.floaterRefInterval=setInterval(function(){var i;(i=s.floaterRef)!==null&&i!==void 0&&i.isConnected&&(clearInterval(s.floaterRefInterval),s.setState({needsUpdate:!1}),s.initPopper())},50)}},{key:"changeWrapperPosition",value:function(s){var i=s.target,a=s.wrapperOptions;this.setState({positionWrapper:a.position&&!!i})}},{key:"toggle",value:function(s){var i=this.state.status,a=i===Tn.OPEN?Tn.CLOSING:Tn.OPENING;Ee.undefined(s)||(a=s),this.setState({status:a})}},{key:"debug",get:function(){var s=this.props.debug;return s||bo()&&"ReactFloaterDebug"in window&&!!window.ReactFloaterDebug}},{key:"event",get:function(){var s=this.props,i=s.disableHoverToClick,a=s.event;return a==="hover"&&NS()&&!i?"click":a}},{key:"options",get:function(){var s=this.props.options;return Ua(nxe,s||{})}},{key:"styles",get:function(){var s=this,i=this.state,a=i.status,l=i.positionWrapper,c=i.statusWrapper,d=this.props.styles,h=Ua(mxe(d),d);if(l){var m;[Tn.IDLE].indexOf(a)===-1||[Tn.IDLE].indexOf(c)===-1?m=h.wrapperPosition:m=this.wrapperPopper.styles,h.wrapper=jr(jr({},h.wrapper),m)}if(this.target){var g=window.getComputedStyle(this.target);this.wrapperStyles?h.wrapper=jr(jr({},h.wrapper),this.wrapperStyles):["relative","static"].indexOf(g.position)===-1&&(this.wrapperStyles={},l||(gxe.forEach(function(x){s.wrapperStyles[x]=g[x]}),h.wrapper=jr(jr({},h.wrapper),this.wrapperStyles),this.target.style.position="relative",this.target.style.top="auto",this.target.style.right="auto",this.target.style.bottom="auto",this.target.style.left="auto"))}return h}},{key:"target",get:function(){if(!bo())return null;var s=this.props.target;return s?Ee.domElement(s)?s:document.querySelector(s):this.childRef||this.wrapperRef}},{key:"render",value:function(){var s=this.state,i=s.currentPlacement,a=s.positionWrapper,l=s.status,c=this.props,d=c.children,h=c.component,m=c.content,g=c.disableAnimation,x=c.footer,y=c.hideArrow,w=c.id,S=c.open,k=c.showCloseButton,j=c.style,N=c.target,T=c.title,E=oe.createElement(hQ,{handleClick:this.handleClick,handleMouseEnter:this.handleMouseEnter,handleMouseLeave:this.handleMouseLeave,setChildRef:this.setChildRef,setWrapperRef:this.setWrapperRef,style:j,styles:this.styles.wrapper},d),_={};return a?_.wrapperInPortal=E:_.wrapperAsChildren=E,oe.createElement("span",null,oe.createElement(oQ,{hasChildren:!!d,id:w,placement:i,setRef:this.setFloaterRef,target:N,zIndex:this.styles.options.zIndex},oe.createElement(dQ,{component:h,content:m,disableAnimation:g,footer:x,handleClick:this.handleClick,hideArrow:y||i==="center",open:S,placement:i,positionWrapper:a,setArrowRef:this.setArrowRef,setFloaterRef:this.setFloaterRef,showCloseButton:k,status:l,styles:this.styles,title:T}),_.wrapperInPortal),_.wrapperAsChildren)}}]),n})(oe.Component);Fs(tN,"propTypes",{autoOpen:Ge.bool,callback:Ge.func,children:Ge.node,component:ZA(Ge.oneOfType([Ge.func,Ge.element]),function(t){return!t.content}),content:ZA(Ge.node,function(t){return!t.component}),debug:Ge.bool,disableAnimation:Ge.bool,disableFlip:Ge.bool,disableHoverToClick:Ge.bool,event:Ge.oneOf(["hover","click"]),eventDelay:Ge.number,footer:Ge.node,getPopper:Ge.func,hideArrow:Ge.bool,id:Ge.oneOfType([Ge.string,Ge.number]),offset:Ge.number,open:Ge.bool,options:Ge.object,placement:Ge.oneOf(["top","top-start","top-end","bottom","bottom-start","bottom-end","left","left-start","left-end","right","right-start","right-end","auto","center"]),showCloseButton:Ge.bool,style:Ge.object,styles:Ge.object,target:Ge.oneOfType([Ge.object,Ge.string]),title:Ge.node,wrapperOptions:Ge.shape({offset:Ge.number,placement:Ge.oneOf(["top","top-start","top-end","bottom","bottom-start","bottom-end","left","left-start","left-end","right","right-start","right-end","auto"]),position:Ge.bool})});Fs(tN,"defaultProps",{autoOpen:!1,callback:JA,debug:!1,disableAnimation:!1,disableFlip:!1,disableHoverToClick:!1,event:"click",eventDelay:.4,getPopper:JA,hideArrow:!1,offset:15,placement:"bottom",showCloseButton:!1,styles:{},target:null,wrapperOptions:{position:!1}});var xxe=Object.defineProperty,vxe=(t,e,n)=>e in t?xxe(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,xt=(t,e,n)=>vxe(t,typeof e!="symbol"?e+"":e,n),Yn={INIT:"init",START:"start",STOP:"stop",RESET:"reset",PREV:"prev",NEXT:"next",GO:"go",CLOSE:"close",SKIP:"skip",UPDATE:"update"},Va={TOUR_START:"tour:start",STEP_BEFORE:"step:before",BEACON:"beacon",TOOLTIP:"tooltip",STEP_AFTER:"step:after",TOUR_END:"tour:end",TOUR_STATUS:"tour:status",TARGET_NOT_FOUND:"error:target_not_found"},Xt={INIT:"init",READY:"ready",BEACON:"beacon",TOOLTIP:"tooltip",COMPLETE:"complete",ERROR:"error"},wn={IDLE:"idle",READY:"ready",WAITING:"waiting",RUNNING:"running",PAUSED:"paused",SKIPPED:"skipped",FINISHED:"finished"};function Fc(){var t;return!!(typeof window<"u"&&((t=window.document)!=null&&t.createElement))}function fQ(t){return t?t.getBoundingClientRect():null}function yxe(t=!1){const{body:e,documentElement:n}=document;if(!e||!n)return 0;if(t){const r=[e.scrollHeight,e.offsetHeight,n.clientHeight,n.scrollHeight,n.offsetHeight].sort((i,a)=>i-a),s=Math.floor(r.length/2);return r.length%2===0?(r[s-1]+r[s])/2:r[s]}return Math.max(e.scrollHeight,e.offsetHeight,n.clientHeight,n.scrollHeight,n.offsetHeight)}function Pl(t){if(typeof t=="string")try{return document.querySelector(t)}catch{return null}return t}function bxe(t){return!t||t.nodeType!==1?null:getComputedStyle(t)}function fp(t,e,n){if(!t)return Xu();const r=qH(t);if(r){if(r.isSameNode(Xu()))return n?document:Xu();if(!(r.scrollHeight>r.offsetHeight)&&!e)return r.style.overflow="initial",Xu()}return r}function Db(t,e){if(!t)return!1;const n=fp(t,e);return n?!n.isSameNode(Xu()):!1}function wxe(t){return t.offsetParent!==document.body}function df(t,e="fixed"){if(!t||!(t instanceof HTMLElement))return!1;const{nodeName:n}=t,r=bxe(t);return n==="BODY"||n==="HTML"?!1:r&&r.position===e?!0:t.parentNode?df(t.parentNode,e):!1}function Sxe(t){var e;if(!t)return!1;let n=t;for(;n&&n!==document.body;){if(n instanceof HTMLElement){const{display:r,visibility:s}=getComputedStyle(n);if(r==="none"||s==="hidden")return!1}n=(e=n.parentElement)!=null?e:null}return!0}function kxe(t,e,n){var r,s,i;const a=fQ(t),l=fp(t,n),c=Db(t,n),d=df(t);let h=0,m=(r=a?.top)!=null?r:0;if(c&&d){const g=(s=t?.offsetTop)!=null?s:0,x=(i=l?.scrollTop)!=null?i:0;m=g-x}else l instanceof HTMLElement&&(h=l.scrollTop,!c&&!df(t)&&(m+=h),l.isSameNode(Xu())||(m+=Xu().scrollTop));return Math.floor(m-e)}function Oxe(t,e,n){var r;if(!t)return 0;const{offsetTop:s=0,scrollTop:i=0}=(r=qH(t))!=null?r:{};let a=t.getBoundingClientRect().top+i;s&&(Db(t,n)||wxe(t))&&(a-=s);const l=Math.floor(a-e);return l<0?0:l}function Xu(){var t;return(t=document.scrollingElement)!=null?t:document.documentElement}function jxe(t,e){const{duration:n,element:r}=e;return new Promise((s,i)=>{const{scrollTop:a}=r,l=t>a?t-a:a-t;Qpe.top(r,t,{duration:l<100?50:n},c=>c&&c.message!=="Element already at target scroll position"?i(c):s())})}var Xm=ya.createPortal!==void 0;function mQ(t=navigator.userAgent){let e=t;return typeof window>"u"?e="node":document.documentMode?e="ie":/Edge/.test(t)?e="edge":window.opera||t.includes(" OPR/")?e="opera":typeof window.InstallTrigger<"u"?e="firefox":window.chrome?e="chrome":/(Version\/([\d._]+).*Safari|CriOS|FxiOS| Mobile\/)/.test(t)&&(e="safari"),e}function jv(t){return Object.prototype.toString.call(t).slice(8,-1).toLowerCase()}function wo(t,e={}){const{defaultValue:n,step:r,steps:s}=e;let i=IA(t);if(i)(i.includes("{step}")||i.includes("{steps}"))&&r&&s&&(i=i.replace("{step}",r.toString()).replace("{steps}",s.toString()));else if(b.isValidElement(t)&&!Object.values(t.props).length&&jv(t.type)==="function"){const a=t.type({});i=wo(a,e)}else i=IA(n);return i}function Nxe(t,e){return!pt.plainObject(t)||!pt.array(e)?!1:Object.keys(t).every(n=>e.includes(n))}function Cxe(t){const e=/^#?([\da-f])([\da-f])([\da-f])$/i,n=t.replace(e,(s,i,a,l)=>i+i+a+a+l+l),r=/^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i.exec(n);return r?[parseInt(r[1],16),parseInt(r[2],16),parseInt(r[3],16)]:[]}function eM(t){return t.disableBeacon||t.placement==="center"}function tM(){return!["chrome","safari","firefox","opera"].includes(mQ())}function pd({data:t,debug:e=!1,title:n,warn:r=!1}){const s=r?console.warn||console.error:console.log;e&&(n&&t?(console.groupCollapsed(`%creact-joyride: ${n}`,"color: #ff0044; font-weight: bold; font-size: 12px;"),Array.isArray(t)?t.forEach(i=>{pt.plainObject(i)&&i.key?s.apply(console,[i.key,i.value]):s.apply(console,[i])}):s.apply(console,[t]),console.groupEnd()):console.error("Missing title or data props"))}function Txe(t){return Object.keys(t)}function pQ(t,...e){if(!pt.plainObject(t))throw new TypeError("Expected an object");const n={};for(const r in t)({}).hasOwnProperty.call(t,r)&&(e.includes(r)||(n[r]=t[r]));return n}function Exe(t,...e){if(!pt.plainObject(t))throw new TypeError("Expected an object");if(!e.length)return t;const n={};for(const r in t)({}).hasOwnProperty.call(t,r)&&e.includes(r)&&(n[r]=t[r]);return n}function jO(t,e,n){const r=i=>i.replace("{step}",String(e)).replace("{steps}",String(n));if(jv(t)==="string")return r(t);if(!b.isValidElement(t))return t;const{children:s}=t.props;if(jv(s)==="string"&&s.includes("{step}"))return b.cloneElement(t,{children:r(s)});if(Array.isArray(s))return b.cloneElement(t,{children:s.map(i=>typeof i=="string"?r(i):jO(i,e,n))});if(jv(t.type)==="function"&&!Object.values(t.props).length){const i=t.type({});return jO(i,e,n)}return t}function _xe(t){const{isFirstStep:e,lifecycle:n,previousLifecycle:r,scrollToFirstStep:s,step:i,target:a}=t;return!i.disableScrolling&&(!e||s||n===Xt.TOOLTIP)&&i.placement!=="center"&&(!i.isFixed||!df(a))&&r!==n&&[Xt.BEACON,Xt.TOOLTIP].includes(n)}var Axe={options:{preventOverflow:{boundariesElement:"scrollParent"}},wrapperOptions:{offset:-18,position:!0}},gQ={back:"Back",close:"Close",last:"Last",next:"Next",nextLabelWithProgress:"Next (Step {step} of {steps})",open:"Open the dialog",skip:"Skip"},Mxe={event:"click",placement:"bottom",offset:10,disableBeacon:!1,disableCloseOnEsc:!1,disableOverlay:!1,disableOverlayClose:!1,disableScrollParentFix:!1,disableScrolling:!1,hideBackButton:!1,hideCloseButton:!1,hideFooter:!1,isFixed:!1,locale:gQ,showProgress:!1,showSkipButton:!1,spotlightClicks:!1,spotlightPadding:10},Rxe={continuous:!1,debug:!1,disableCloseOnEsc:!1,disableOverlay:!1,disableOverlayClose:!1,disableScrolling:!1,disableScrollParentFix:!1,getHelpers:void 0,hideBackButton:!1,run:!0,scrollOffset:20,scrollDuration:300,scrollToFirstStep:!1,showSkipButton:!1,showProgress:!1,spotlightClicks:!1,spotlightPadding:10,steps:[]},Dxe={arrowColor:"#fff",backgroundColor:"#fff",beaconSize:36,overlayColor:"rgba(0, 0, 0, 0.5)",primaryColor:"#f04",spotlightShadow:"0 0 15px rgba(0, 0, 0, 0.5)",textColor:"#333",width:380,zIndex:100},Ym={backgroundColor:"transparent",border:0,borderRadius:0,color:"#555",cursor:"pointer",fontSize:16,lineHeight:1,padding:8,WebkitAppearance:"none"},nM={borderRadius:4,position:"absolute"};function Pxe(t,e){var n,r,s,i,a;const{floaterProps:l,styles:c}=t,d=Ua((n=e.floaterProps)!=null?n:{},l??{}),h=Ua(c??{},(r=e.styles)!=null?r:{}),m=Ua(Dxe,h.options||{}),g=e.placement==="center"||e.disableBeacon;let{width:x}=m;window.innerWidth>480&&(x=380),"width"in m&&(x=typeof m.width=="number"&&window.innerWidthxQ(n,e)):(pd({title:"validateSteps",data:"steps must be an array",warn:!0,debug:e}),!1)}var vQ={action:"init",controlled:!1,index:0,lifecycle:Xt.INIT,origin:null,size:0,status:wn.IDLE},sM=Txe(pQ(vQ,"controlled","size")),Ixe=class{constructor(t){xt(this,"beaconPopper"),xt(this,"tooltipPopper"),xt(this,"data",new Map),xt(this,"listener"),xt(this,"store",new Map),xt(this,"addListener",s=>{this.listener=s}),xt(this,"setSteps",s=>{const{size:i,status:a}=this.getState(),l={size:s.length,status:a};this.data.set("steps",s),a===wn.WAITING&&!i&&s.length&&(l.status=wn.RUNNING),this.setState(l)}),xt(this,"getPopper",s=>s==="beacon"?this.beaconPopper:this.tooltipPopper),xt(this,"setPopper",(s,i)=>{s==="beacon"?this.beaconPopper=i:this.tooltipPopper=i}),xt(this,"cleanupPoppers",()=>{this.beaconPopper=null,this.tooltipPopper=null}),xt(this,"close",(s=null)=>{const{index:i,status:a}=this.getState();a===wn.RUNNING&&this.setState({...this.getNextState({action:Yn.CLOSE,index:i+1,origin:s})})}),xt(this,"go",s=>{const{controlled:i,status:a}=this.getState();if(i||a!==wn.RUNNING)return;const l=this.getSteps()[s];this.setState({...this.getNextState({action:Yn.GO,index:s}),status:l?a:wn.FINISHED})}),xt(this,"info",()=>this.getState()),xt(this,"next",()=>{const{index:s,status:i}=this.getState();i===wn.RUNNING&&this.setState(this.getNextState({action:Yn.NEXT,index:s+1}))}),xt(this,"open",()=>{const{status:s}=this.getState();s===wn.RUNNING&&this.setState({...this.getNextState({action:Yn.UPDATE,lifecycle:Xt.TOOLTIP})})}),xt(this,"prev",()=>{const{index:s,status:i}=this.getState();i===wn.RUNNING&&this.setState({...this.getNextState({action:Yn.PREV,index:s-1})})}),xt(this,"reset",(s=!1)=>{const{controlled:i}=this.getState();i||this.setState({...this.getNextState({action:Yn.RESET,index:0}),status:s?wn.RUNNING:wn.READY})}),xt(this,"skip",()=>{const{status:s}=this.getState();s===wn.RUNNING&&this.setState({action:Yn.SKIP,lifecycle:Xt.INIT,status:wn.SKIPPED})}),xt(this,"start",s=>{const{index:i,size:a}=this.getState();this.setState({...this.getNextState({action:Yn.START,index:pt.number(s)?s:i},!0),status:a?wn.RUNNING:wn.WAITING})}),xt(this,"stop",(s=!1)=>{const{index:i,status:a}=this.getState();[wn.FINISHED,wn.SKIPPED].includes(a)||this.setState({...this.getNextState({action:Yn.STOP,index:i+(s?1:0)}),status:wn.PAUSED})}),xt(this,"update",s=>{var i,a;if(!Nxe(s,sM))throw new Error(`State is not valid. Valid keys: ${sM.join(", ")}`);this.setState({...this.getNextState({...this.getState(),...s,action:(i=s.action)!=null?i:Yn.UPDATE,origin:(a=s.origin)!=null?a:null},!0)})});const{continuous:e=!1,stepIndex:n,steps:r=[]}=t??{};this.setState({action:Yn.INIT,controlled:pt.number(n),continuous:e,index:pt.number(n)?n:0,lifecycle:Xt.INIT,origin:null,status:r.length?wn.READY:wn.IDLE},!0),this.beaconPopper=null,this.tooltipPopper=null,this.listener=null,this.setSteps(r)}getState(){return this.store.size?{action:this.store.get("action")||"",controlled:this.store.get("controlled")||!1,index:parseInt(this.store.get("index"),10),lifecycle:this.store.get("lifecycle")||"",origin:this.store.get("origin")||null,size:this.store.get("size")||0,status:this.store.get("status")||""}:{...vQ}}getNextState(t,e=!1){var n,r,s,i,a;const{action:l,controlled:c,index:d,size:h,status:m}=this.getState(),g=pt.number(t.index)?t.index:d,x=c&&!e?d:Math.min(Math.max(g,0),h);return{action:(n=t.action)!=null?n:l,controlled:c,index:x,lifecycle:(r=t.lifecycle)!=null?r:Xt.INIT,origin:(s=t.origin)!=null?s:null,size:(i=t.size)!=null?i:h,status:x===h?wn.FINISHED:(a=t.status)!=null?a:m}}getSteps(){const t=this.data.get("steps");return Array.isArray(t)?t:[]}hasUpdatedState(t){const e=JSON.stringify(t),n=JSON.stringify(this.getState());return e!==n}setState(t,e=!1){const n=this.getState(),{action:r,index:s,lifecycle:i,origin:a=null,size:l,status:c}={...n,...t};this.store.set("action",r),this.store.set("index",s),this.store.set("lifecycle",i),this.store.set("origin",a),this.store.set("size",l),this.store.set("status",c),e&&(this.store.set("controlled",t.controlled),this.store.set("continuous",t.continuous)),this.listener&&this.hasUpdatedState(n)&&this.listener(this.getState())}getHelpers(){return{close:this.close,go:this.go,info:this.info,next:this.next,open:this.open,prev:this.prev,reset:this.reset,skip:this.skip}}};function Lxe(t){return new Ixe(t)}function Bxe({styles:t}){return b.createElement("div",{key:"JoyrideSpotlight",className:"react-joyride__spotlight","data-test-id":"spotlight",style:t})}var Fxe=Bxe,qxe=class extends b.Component{constructor(){super(...arguments),xt(this,"isActive",!1),xt(this,"resizeTimeout"),xt(this,"scrollTimeout"),xt(this,"scrollParent"),xt(this,"state",{isScrolling:!1,mouseOverSpotlight:!1,showSpotlight:!0}),xt(this,"hideSpotlight",()=>{const{continuous:t,disableOverlay:e,lifecycle:n}=this.props,r=[Xt.INIT,Xt.BEACON,Xt.COMPLETE,Xt.ERROR];return e||(t?r.includes(n):n!==Xt.TOOLTIP)}),xt(this,"handleMouseMove",t=>{const{mouseOverSpotlight:e}=this.state,{height:n,left:r,position:s,top:i,width:a}=this.spotlightStyles,l=s==="fixed"?t.clientY:t.pageY,c=s==="fixed"?t.clientX:t.pageX,d=l>=i&&l<=i+n,m=c>=r&&c<=r+a&&d;m!==e&&this.updateState({mouseOverSpotlight:m})}),xt(this,"handleScroll",()=>{const{target:t}=this.props,e=Pl(t);if(this.scrollParent!==document){const{isScrolling:n}=this.state;n||this.updateState({isScrolling:!0,showSpotlight:!1}),clearTimeout(this.scrollTimeout),this.scrollTimeout=window.setTimeout(()=>{this.updateState({isScrolling:!1,showSpotlight:!0})},50)}else df(e,"sticky")&&this.updateState({})}),xt(this,"handleResize",()=>{clearTimeout(this.resizeTimeout),this.resizeTimeout=window.setTimeout(()=>{this.isActive&&this.forceUpdate()},100)})}componentDidMount(){const{debug:t,disableScrolling:e,disableScrollParentFix:n=!1,target:r}=this.props,s=Pl(r);this.scrollParent=fp(s??document.body,n,!0),this.isActive=!0,window.addEventListener("resize",this.handleResize)}componentDidUpdate(t){var e;const{disableScrollParentFix:n,lifecycle:r,spotlightClicks:s,target:i}=this.props,{changed:a}=py(t,this.props);if(a("target")||a("disableScrollParentFix")){const l=Pl(i);this.scrollParent=fp(l??document.body,n,!0)}a("lifecycle",Xt.TOOLTIP)&&((e=this.scrollParent)==null||e.addEventListener("scroll",this.handleScroll,{passive:!0}),setTimeout(()=>{const{isScrolling:l}=this.state;l||this.updateState({showSpotlight:!0})},100)),(a("spotlightClicks")||a("disableOverlay")||a("lifecycle"))&&(s&&r===Xt.TOOLTIP?window.addEventListener("mousemove",this.handleMouseMove,!1):r!==Xt.TOOLTIP&&window.removeEventListener("mousemove",this.handleMouseMove))}componentWillUnmount(){var t;this.isActive=!1,window.removeEventListener("mousemove",this.handleMouseMove),window.removeEventListener("resize",this.handleResize),clearTimeout(this.resizeTimeout),clearTimeout(this.scrollTimeout),(t=this.scrollParent)==null||t.removeEventListener("scroll",this.handleScroll)}get overlayStyles(){const{mouseOverSpotlight:t}=this.state,{disableOverlayClose:e,placement:n,styles:r}=this.props;let s=r.overlay;return tM()&&(s=n==="center"?r.overlayLegacyCenter:r.overlayLegacy),{cursor:e?"default":"pointer",height:yxe(),pointerEvents:t?"none":"auto",...s}}get spotlightStyles(){var t,e,n;const{showSpotlight:r}=this.state,{disableScrollParentFix:s=!1,spotlightClicks:i,spotlightPadding:a=0,styles:l,target:c}=this.props,d=Pl(c),h=fQ(d),m=df(d),g=kxe(d,a,s);return{...tM()?l.spotlightLegacy:l.spotlight,height:Math.round(((t=h?.height)!=null?t:0)+a*2),left:Math.round(((e=h?.left)!=null?e:0)-a),opacity:r?1:0,pointerEvents:i?"none":"auto",position:m?"fixed":"absolute",top:g,transition:"opacity 0.2s",width:Math.round(((n=h?.width)!=null?n:0)+a*2)}}updateState(t){this.isActive&&this.setState(e=>({...e,...t}))}render(){const{showSpotlight:t}=this.state,{onClickOverlay:e,placement:n}=this.props,{hideSpotlight:r,overlayStyles:s,spotlightStyles:i}=this;if(r())return null;let a=n!=="center"&&t&&b.createElement(Fxe,{styles:i});if(mQ()==="safari"){const{mixBlendMode:l,zIndex:c,...d}=s;a=b.createElement("div",{style:{...d}},a),delete s.backgroundColor}return b.createElement("div",{className:"react-joyride__overlay","data-test-id":"overlay",onClick:e,role:"presentation",style:s},a)}},$xe=class extends b.Component{constructor(){super(...arguments),xt(this,"node",null)}componentDidMount(){const{id:t}=this.props;Fc()&&(this.node=document.createElement("div"),this.node.id=t,document.body.appendChild(this.node),Xm||this.renderReact15())}componentDidUpdate(){Fc()&&(Xm||this.renderReact15())}componentWillUnmount(){!Fc()||!this.node||(Xm||ya.unmountComponentAtNode(this.node),this.node.parentNode===document.body&&(document.body.removeChild(this.node),this.node=null))}renderReact15(){if(!Fc())return;const{children:t}=this.props;this.node&&ya.unstable_renderSubtreeIntoContainer(this,t,this.node)}renderReact16(){if(!Fc()||!Xm)return null;const{children:t}=this.props;return this.node?ya.createPortal(t,this.node):null}render(){return Xm?this.renderReact16():null}},Hxe=class{constructor(t,e){if(xt(this,"element"),xt(this,"options"),xt(this,"canBeTabbed",n=>{const{tabIndex:r}=n;return r===null||r<0?!1:this.canHaveFocus(n)}),xt(this,"canHaveFocus",n=>{const r=/input|select|textarea|button|object/,s=n.nodeName.toLowerCase();return(r.test(s)&&!n.getAttribute("disabled")||s==="a"&&!!n.getAttribute("href"))&&this.isVisible(n)}),xt(this,"findValidTabElements",()=>[].slice.call(this.element.querySelectorAll("*"),0).filter(this.canBeTabbed)),xt(this,"handleKeyDown",n=>{const{code:r="Tab"}=this.options;n.code===r&&this.interceptTab(n)}),xt(this,"interceptTab",n=>{n.preventDefault();const r=this.findValidTabElements(),{shiftKey:s}=n;if(!r.length)return;let i=document.activeElement?r.indexOf(document.activeElement):0;i===-1||!s&&i+1===r.length?i=0:s&&i===0?i=r.length-1:i+=s?-1:1,r[i].focus()}),xt(this,"isHidden",n=>{const r=n.offsetWidth<=0&&n.offsetHeight<=0,s=window.getComputedStyle(n);return r&&!n.innerHTML?!0:r&&s.getPropertyValue("overflow")!=="visible"||s.getPropertyValue("display")==="none"}),xt(this,"isVisible",n=>{let r=n;for(;r;)if(r instanceof HTMLElement){if(r===document.body)break;if(this.isHidden(r))return!1;r=r.parentNode}return!0}),xt(this,"removeScope",()=>{window.removeEventListener("keydown",this.handleKeyDown)}),xt(this,"checkFocus",n=>{document.activeElement!==n&&(n.focus(),window.requestAnimationFrame(()=>this.checkFocus(n)))}),xt(this,"setFocus",()=>{const{selector:n}=this.options;if(!n)return;const r=this.element.querySelector(n);r&&window.requestAnimationFrame(()=>this.checkFocus(r))}),!(t instanceof HTMLElement))throw new TypeError("Invalid parameter: element must be an HTMLElement");this.element=t,this.options=e,window.addEventListener("keydown",this.handleKeyDown,!1),this.setFocus()}},Qxe=class extends b.Component{constructor(t){if(super(t),xt(this,"beacon",null),xt(this,"setBeaconRef",s=>{this.beacon=s}),t.beaconComponent)return;const e=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.id="joyride-beacon-animation",t.nonce&&n.setAttribute("nonce",t.nonce),n.appendChild(document.createTextNode(` - @keyframes joyride-beacon-inner { - 20% { - opacity: 0.9; - } - - 90% { - opacity: 0.7; - } - } - - @keyframes joyride-beacon-outer { - 0% { - transform: scale(1); - } - - 45% { - opacity: 0.7; - transform: scale(0.75); - } - - 100% { - opacity: 0.9; - transform: scale(1); - } - } - `)),e.appendChild(n)}componentDidMount(){const{shouldFocus:t}=this.props;setTimeout(()=>{pt.domElement(this.beacon)&&t&&this.beacon.focus()},0)}componentWillUnmount(){const t=document.getElementById("joyride-beacon-animation");t?.parentNode&&t.parentNode.removeChild(t)}render(){const{beaconComponent:t,continuous:e,index:n,isLastStep:r,locale:s,onClickOrHover:i,size:a,step:l,styles:c}=this.props,d=wo(s.open),h={"aria-label":d,onClick:i,onMouseEnter:i,ref:this.setBeaconRef,title:d};let m;if(t){const g=t;m=b.createElement(g,{continuous:e,index:n,isLastStep:r,size:a,step:l,...h})}else m=b.createElement("button",{key:"JoyrideBeacon",className:"react-joyride__beacon","data-test-id":"button-beacon",style:c.beacon,type:"button",...h},b.createElement("span",{style:c.beaconInner}),b.createElement("span",{style:c.beaconOuter}));return m}};function Vxe({styles:t,...e}){const{color:n,height:r,width:s,...i}=t;return oe.createElement("button",{style:i,type:"button",...e},oe.createElement("svg",{height:typeof r=="number"?`${r}px`:r,preserveAspectRatio:"xMidYMid",version:"1.1",viewBox:"0 0 18 18",width:typeof s=="number"?`${s}px`:s,xmlns:"http://www.w3.org/2000/svg"},oe.createElement("g",null,oe.createElement("path",{d:"M8.13911129,9.00268191 L0.171521827,17.0258467 C-0.0498027049,17.248715 -0.0498027049,17.6098394 0.171521827,17.8327545 C0.28204354,17.9443526 0.427188206,17.9998706 0.572051765,17.9998706 C0.71714958,17.9998706 0.862013139,17.9443526 0.972581703,17.8327545 L9.0000937,9.74924618 L17.0276057,17.8327545 C17.1384085,17.9443526 17.2832721,17.9998706 17.4281356,17.9998706 C17.5729992,17.9998706 17.718097,17.9443526 17.8286656,17.8327545 C18.0499901,17.6098862 18.0499901,17.2487618 17.8286656,17.0258467 L9.86135722,9.00268191 L17.8340066,0.973848225 C18.0553311,0.750979934 18.0553311,0.389855532 17.8340066,0.16694039 C17.6126821,-0.0556467968 17.254037,-0.0556467968 17.0329467,0.16694039 L9.00042166,8.25611765 L0.967006424,0.167268345 C0.745681892,-0.0553188426 0.387317931,-0.0553188426 0.165993399,0.167268345 C-0.0553311331,0.390136635 -0.0553311331,0.751261038 0.165993399,0.974176179 L8.13920499,9.00268191 L8.13911129,9.00268191 Z",fill:n}))))}var Uxe=Vxe;function Wxe(t){const{backProps:e,closeProps:n,index:r,isLastStep:s,primaryProps:i,skipProps:a,step:l,tooltipProps:c}=t,{content:d,hideBackButton:h,hideCloseButton:m,hideFooter:g,showSkipButton:x,styles:y,title:w}=l,S={};return S.primary=b.createElement("button",{"data-test-id":"button-primary",style:y.buttonNext,type:"button",...i}),x&&!s&&(S.skip=b.createElement("button",{"aria-live":"off","data-test-id":"button-skip",style:y.buttonSkip,type:"button",...a})),!h&&r>0&&(S.back=b.createElement("button",{"data-test-id":"button-back",style:y.buttonBack,type:"button",...e})),S.close=!m&&b.createElement(Uxe,{"data-test-id":"button-close",styles:y.buttonClose,...n}),b.createElement("div",{key:"JoyrideTooltip","aria-label":wo(w??d),className:"react-joyride__tooltip",style:y.tooltip,...c},b.createElement("div",{style:y.tooltipContainer},w&&b.createElement("h1",{"aria-label":wo(w),style:y.tooltipTitle},w),b.createElement("div",{style:y.tooltipContent},d)),!g&&b.createElement("div",{style:y.tooltipFooter},b.createElement("div",{style:y.tooltipFooterSpacer},S.skip),S.back,S.primary),S.close)}var Gxe=Wxe,Xxe=class extends b.Component{constructor(){super(...arguments),xt(this,"handleClickBack",t=>{t.preventDefault();const{helpers:e}=this.props;e.prev()}),xt(this,"handleClickClose",t=>{t.preventDefault();const{helpers:e}=this.props;e.close("button_close")}),xt(this,"handleClickPrimary",t=>{t.preventDefault();const{continuous:e,helpers:n}=this.props;if(!e){n.close("button_primary");return}n.next()}),xt(this,"handleClickSkip",t=>{t.preventDefault();const{helpers:e}=this.props;e.skip()}),xt(this,"getElementsProps",()=>{const{continuous:t,index:e,isLastStep:n,setTooltipRef:r,size:s,step:i}=this.props,{back:a,close:l,last:c,next:d,nextLabelWithProgress:h,skip:m}=i.locale,g=wo(a),x=wo(l),y=wo(c),w=wo(d),S=wo(m);let k=l,j=x;if(t){if(k=d,j=w,i.showProgress&&!n){const N=wo(h,{step:e+1,steps:s});k=jO(h,e+1,s),j=N}n&&(k=c,j=y)}return{backProps:{"aria-label":g,children:a,"data-action":"back",onClick:this.handleClickBack,role:"button",title:g},closeProps:{"aria-label":x,children:l,"data-action":"close",onClick:this.handleClickClose,role:"button",title:x},primaryProps:{"aria-label":j,children:k,"data-action":"primary",onClick:this.handleClickPrimary,role:"button",title:j},skipProps:{"aria-label":S,children:m,"data-action":"skip",onClick:this.handleClickSkip,role:"button",title:S},tooltipProps:{"aria-modal":!0,ref:r,role:"alertdialog"}}})}render(){const{continuous:t,index:e,isLastStep:n,setTooltipRef:r,size:s,step:i}=this.props,{beaconComponent:a,tooltipComponent:l,...c}=i;let d;if(l){const h={...this.getElementsProps(),continuous:t,index:e,isLastStep:n,size:s,step:c,setTooltipRef:r},m=l;d=b.createElement(m,{...h})}else d=b.createElement(Gxe,{...this.getElementsProps(),continuous:t,index:e,isLastStep:n,size:s,step:i});return d}},Yxe=class extends b.Component{constructor(){super(...arguments),xt(this,"scope",null),xt(this,"tooltip",null),xt(this,"handleClickHoverBeacon",t=>{const{step:e,store:n}=this.props;t.type==="mouseenter"&&e.event!=="hover"||n.update({lifecycle:Xt.TOOLTIP})}),xt(this,"setTooltipRef",t=>{this.tooltip=t}),xt(this,"setPopper",(t,e)=>{var n;const{action:r,lifecycle:s,step:i,store:a}=this.props;e==="wrapper"?a.setPopper("beacon",t):a.setPopper("tooltip",t),a.getPopper("beacon")&&(a.getPopper("tooltip")||i.placement==="center")&&s===Xt.INIT&&a.update({action:r,lifecycle:Xt.READY}),(n=i.floaterProps)!=null&&n.getPopper&&i.floaterProps.getPopper(t,e)}),xt(this,"renderTooltip",t=>{const{continuous:e,helpers:n,index:r,size:s,step:i}=this.props;return b.createElement(Xxe,{continuous:e,helpers:n,index:r,isLastStep:r+1===s,setTooltipRef:this.setTooltipRef,size:s,step:i,...t})})}componentDidMount(){const{debug:t,index:e}=this.props;pd({title:`step:${e}`,data:[{key:"props",value:this.props}],debug:t})}componentDidUpdate(t){var e;const{action:n,callback:r,continuous:s,controlled:i,debug:a,helpers:l,index:c,lifecycle:d,shouldScroll:h,status:m,step:g,store:x}=this.props,{changed:y,changedFrom:w}=py(t,this.props),S=l.info(),k=s&&n!==Yn.CLOSE&&(c>0||n===Yn.PREV),j=y("action")||y("index")||y("lifecycle")||y("status"),N=w("lifecycle",[Xt.TOOLTIP,Xt.INIT],Xt.INIT),T=y("action",[Yn.NEXT,Yn.PREV,Yn.SKIP,Yn.CLOSE]),E=i&&c===t.index;if(T&&(N||E)&&r({...S,index:t.index,lifecycle:Xt.COMPLETE,step:t.step,type:Va.STEP_AFTER}),g.placement==="center"&&m===wn.RUNNING&&y("index")&&n!==Yn.START&&d===Xt.INIT&&x.update({lifecycle:Xt.READY}),j){const _=Pl(g.target),A=!!_;A&&Sxe(_)?(w("status",wn.READY,wn.RUNNING)||w("lifecycle",Xt.INIT,Xt.READY))&&r({...S,step:g,type:Va.STEP_BEFORE}):(console.warn(A?"Target not visible":"Target not mounted",g),r({...S,type:Va.TARGET_NOT_FOUND,step:g}),i||x.update({index:c+(n===Yn.PREV?-1:1)}))}w("lifecycle",Xt.INIT,Xt.READY)&&x.update({lifecycle:eM(g)||k?Xt.TOOLTIP:Xt.BEACON}),y("index")&&pd({title:`step:${d}`,data:[{key:"props",value:this.props}],debug:a}),y("lifecycle",Xt.BEACON)&&r({...S,step:g,type:Va.BEACON}),y("lifecycle",Xt.TOOLTIP)&&(r({...S,step:g,type:Va.TOOLTIP}),h&&this.tooltip&&(this.scope=new Hxe(this.tooltip,{selector:"[data-action=primary]"}),this.scope.setFocus())),w("lifecycle",[Xt.TOOLTIP,Xt.INIT],Xt.INIT)&&((e=this.scope)==null||e.removeScope(),x.cleanupPoppers())}componentWillUnmount(){var t;(t=this.scope)==null||t.removeScope()}get open(){const{lifecycle:t,step:e}=this.props;return eM(e)||t===Xt.TOOLTIP}render(){const{continuous:t,debug:e,index:n,nonce:r,shouldScroll:s,size:i,step:a}=this.props,l=Pl(a.target);return!xQ(a)||!pt.domElement(l)?null:b.createElement("div",{key:`JoyrideStep-${n}`,className:"react-joyride__step"},b.createElement(tN,{...a.floaterProps,component:this.renderTooltip,debug:e,getPopper:this.setPopper,id:`react-joyride-step-${n}`,open:this.open,placement:a.placement,target:a.target},b.createElement(Qxe,{beaconComponent:a.beaconComponent,continuous:t,index:n,isLastStep:n+1===i,locale:a.locale,nonce:r,onClickOrHover:this.handleClickHoverBeacon,shouldFocus:s,size:i,step:a,styles:a.styles})))}},yQ=class extends b.Component{constructor(t){super(t),xt(this,"helpers"),xt(this,"store"),xt(this,"callback",a=>{const{callback:l}=this.props;pt.function(l)&&l(a)}),xt(this,"handleKeyboard",a=>{const{index:l,lifecycle:c}=this.state,{steps:d}=this.props,h=d[l];c===Xt.TOOLTIP&&a.code==="Escape"&&h&&!h.disableCloseOnEsc&&this.store.close("keyboard")}),xt(this,"handleClickOverlay",()=>{const{index:a}=this.state,{steps:l}=this.props;lh(this.props,l[a]).disableOverlayClose||this.helpers.close("overlay")}),xt(this,"syncState",a=>{this.setState(a)});const{debug:e,getHelpers:n,run:r=!0,stepIndex:s}=t;this.store=Lxe({...t,controlled:r&&pt.number(s)}),this.helpers=this.store.getHelpers();const{addListener:i}=this.store;pd({title:"init",data:[{key:"props",value:this.props},{key:"state",value:this.state}],debug:e}),i(this.syncState),n&&n(this.helpers),this.state=this.store.getState()}componentDidMount(){if(!Fc())return;const{debug:t,disableCloseOnEsc:e,run:n,steps:r}=this.props,{start:s}=this.store;rM(r,t)&&n&&s(),e||document.body.addEventListener("keydown",this.handleKeyboard,{passive:!0})}componentDidUpdate(t,e){if(!Fc())return;const{action:n,controlled:r,index:s,status:i}=this.state,{debug:a,run:l,stepIndex:c,steps:d}=this.props,{stepIndex:h,steps:m}=t,{reset:g,setSteps:x,start:y,stop:w,update:S}=this.store,{changed:k}=py(t,this.props),{changed:j,changedFrom:N}=py(e,this.state),T=lh(this.props,d[s]),E=!ti(m,d),_=pt.number(c)&&k("stepIndex"),A=Pl(T.target);if(E&&(rM(d,a)?x(d):console.warn("Steps are not valid",d)),k("run")&&(l?y(c):w()),_){let B=pt.number(h)&&h=0?w:0,r===wn.RUNNING&&jxe(w,{element:y,duration:a}).then(()=>{setTimeout(()=>{var j;(j=this.store.getPopper("tooltip"))==null||j.instance.update()},10)})}}render(){if(!Fc())return null;const{index:t,lifecycle:e,status:n}=this.state,{continuous:r=!1,debug:s=!1,nonce:i,scrollToFirstStep:a=!1,steps:l}=this.props,c=n===wn.RUNNING,d={};if(c&&l[t]){const h=lh(this.props,l[t]);d.step=b.createElement(Yxe,{...this.state,callback:this.callback,continuous:r,debug:s,helpers:this.helpers,nonce:i,shouldScroll:!h.disableScrolling&&(t!==0||a),step:h,store:this.store}),d.overlay=b.createElement($xe,{id:"react-joyride-portal"},b.createElement(qxe,{...h,continuous:r,debug:s,lifecycle:e,onClickOverlay:this.handleClickOverlay}))}return b.createElement("div",{className:"react-joyride"},d.step,d.overlay)}};xt(yQ,"defaultProps",Rxe);var Kxe=yQ;function nN(){const t=b.useContext(IH);if(!t)throw new Error("useTour must be used within a TourProvider");return t}const Zxe={options:{zIndex:1e4,primaryColor:"hsl(var(--primary))",textColor:"hsl(var(--foreground))",backgroundColor:"hsl(var(--background))",arrowColor:"hsl(var(--background))",overlayColor:"rgba(0, 0, 0, 0.5)"},tooltip:{borderRadius:"var(--radius)",padding:"1rem"},tooltipContainer:{textAlign:"left"},tooltipTitle:{fontSize:"1rem",fontWeight:600,marginBottom:"0.5rem"},tooltipContent:{fontSize:"0.875rem",padding:"0.5rem 0"},buttonNext:{backgroundColor:"hsl(var(--primary))",color:"hsl(var(--primary-foreground))",borderRadius:"calc(var(--radius) - 2px)",fontSize:"0.875rem",padding:"0.5rem 1rem"},buttonBack:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem",marginRight:"0.5rem"},buttonSkip:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem"},buttonClose:{color:"hsl(var(--muted-foreground))"},spotlight:{borderRadius:"var(--radius)"}},Jxe={back:"上一步",close:"关闭",last:"完成",next:"下一步",nextLabelWithProgress:"下一步 ({step}/{steps})",open:"打开对话框",skip:"跳过"};function e1e(){const{state:t,getCurrentSteps:e,handleJoyrideCallback:n}=nN(),r=e(),[s,i]=b.useState(!1),a=b.useRef(t.stepIndex),l=b.useRef(null);b.useEffect(()=>{a.current!==t.stepIndex&&(i(!1),a.current=t.stepIndex)},[t.stepIndex]),b.useEffect(()=>{if(!t.isRunning||r.length===0){i(!1);return}const h=r[t.stepIndex];if(!h){i(!1);return}const m=h.target;if(m==="body"){i(!0);return}i(!1);const g=setTimeout(()=>{const x=()=>{const k=document.querySelector(m);if(k){const j=k.getBoundingClientRect();if(j.width>0&&j.height>0)return!0}return!1};if(x()){setTimeout(()=>i(!0),100);return}const y=setInterval(()=>{x()&&(clearInterval(y),setTimeout(()=>i(!0),100))},100),w=setTimeout(()=>{clearInterval(y),i(!0)},5e3),S=()=>{clearInterval(y),clearTimeout(w)};l.current=S},150);return()=>{clearTimeout(g),l.current&&(l.current(),l.current=null)}},[t.isRunning,t.stepIndex,r]);const c=b.useRef(null);if(b.useEffect(()=>{let h=document.getElementById("tour-portal-container");return h||(h=document.createElement("div"),h.id="tour-portal-container",h.style.cssText="position: fixed; top: 0; left: 0; z-index: 99999; pointer-events: none;",document.body.appendChild(h)),c.current=h,()=>{}},[]),!t.isRunning||r.length===0||!s)return null;const d=o.jsx(Kxe,{steps:r,stepIndex:t.stepIndex,run:t.isRunning,continuous:!0,showSkipButton:!0,showProgress:!0,disableOverlayClose:!0,disableScrolling:!1,disableScrollParentFix:!1,callback:n,styles:Zxe,locale:Jxe,scrollOffset:80,scrollToFirstStep:!0,floaterProps:{styles:{floater:{zIndex:99999}},disableAnimation:!0}},`tour-step-${t.stepIndex}`);return c.current?ya.createPortal(d,c.current):d}const Rl="model-assignment-tour",bQ=[{target:"body",content:"本引导旨在帮助你配置模型提供商和对应的模型,并为麦麦的各个组件分配合适的模型。",placement:"center",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="sidebar-model-provider"]',content:'第一步,你需要配置模型提供商。模型提供商决定了你要使用谁家的模型,无论是单一厂商(如 DeepSeek),还是模型平台(如 Siliconflow),都可以在这里进行配置。点击"下一步"进入配置页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-provider-button"]',content:'点击"添加提供商"按钮,开始配置你的模型提供商。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="provider-dialog"]',content:"在这里,你可以选择你想要配置的模型提供商,填写相关信息后保存即可。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-name-input"]',content:"这里的名称是你为这个模型提供商起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-apikey-input"]',content:"这里需要填写你从模型提供商那里获取的 API 密钥,用于验证和调用模型服务。对于不同的提供商,获取 API 密钥的方式可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-url-input"]',content:"这里需要填写模型提供商的 API 访问地址,确保填写正确以便系统能够连接到模型服务。对于不同的提供商,API 地址可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-template-select"]',content:"当然,如果你不知道如何填写这些信息,很多模型提供商在这里都提供了预设的模板供你选择,选择对应的模板后,相关信息会自动填充。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-save-button"]',content:"填写完所有信息后,点击保存按钮,模型提供商就配置完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-cancel-button"]',content:"因为这次咱们什么都没有填写,所以点击取消按钮退出吧。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="sidebar-model-management"]',content:'配置好模型提供商后,接下来我们需要为麦麦添加模型并分配功能。点击"下一步"进入模型管理页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-model-button"]',content:'在为麦麦的组件分配模型之前,首先需要添加你想要分配的模型,点击"添加模型"按钮开始添加。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="model-dialog"]',content:"在这里,你可以选择你之前配置好的模型提供商,然后选择对应的模型来添加。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-name-input"]',content:"这里的模型名称是你为这个模型起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-provider-select"]',content:"在这里选择你之前配置好的模型提供商,这样系统才能知道你要添加哪个提供商的模型。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-identifier-input"]',content:"这里需要填写你想要添加的模型的标识符,不同的模型提供商可能有不同的标识符格式,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-save-button"]',content:"填写完所有信息后,点击保存按钮,模型就添加完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-cancel-button"]',content:"当然,因为这次咱们什么都没有填写,所以直接点击取消按钮退出吧,等你准备好了再来添加模型。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="tasks-tab-trigger"]',content:'最后一步,添加好模型后,切换到"为模型分配功能"标签页,为麦麦的各个组件分配合适的模型。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="task-model-select"]',content:"在这里,你可以为每个组件选择一个或多个合适的模型,选择完成后配置会自动保存。恭喜你完成了模型配置的学习!",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1}],wQ={0:"/config/model",1:"/config/model",2:"/config/modelProvider",3:"/config/modelProvider",4:"/config/modelProvider",5:"/config/modelProvider",6:"/config/modelProvider",7:"/config/modelProvider",8:"/config/modelProvider",9:"/config/modelProvider",10:"/config/modelProvider",11:"/config/model",12:"/config/model",13:"/config/model",14:"/config/model",15:"/config/model",16:"/config/model",17:"/config/model",18:"/config/model",19:"/config/model"},h0=[{id:"siliconflow",name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",client_type:"openai",display_name:"硅基流动 (SiliconFlow)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"deepseek",name:"DeepSeek",base_url:"https://api.deepseek.com",client_type:"openai",display_name:"DeepSeek",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"rinkoai",name:"RinkoAI",base_url:"https://rinkoai.com/v1",client_type:"openai",display_name:"RinkoAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"zhipu",name:"ZhipuAI",base_url:"https://open.bigmodel.cn/api/paas/v4",client_type:"openai",display_name:"智谱 AI (ZhipuAI / GLM)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"moonshot",name:"Moonshot",base_url:"https://api.moonshot.cn/v1",client_type:"openai",display_name:"月之暗面 (Moonshot / Kimi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"doubao",name:"Doubao",base_url:"https://ark.cn-beijing.volces.com/api/v3",client_type:"openai",display_name:"字节豆包 (Doubao)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"alibaba",name:"Alibaba",base_url:"https://dashscope.aliyuncs.com/compatible-mode/v1",client_type:"openai",display_name:"阿里云百炼 (Alibaba Qwen)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"baichuan",name:"Baichuan",base_url:"https://api.baichuan-ai.com/v1",client_type:"openai",display_name:"百川智能 (Baichuan)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"minimax",name:"MiniMax",base_url:"https://api.minimax.chat/v1",client_type:"openai",display_name:"MiniMax (海螺 AI)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"stepfun",name:"StepFun",base_url:"https://api.stepfun.com/v1",client_type:"openai",display_name:"阶跃星辰 (StepFun)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"lingyi",name:"Lingyi",base_url:"https://api.lingyiwanwu.com/v1",client_type:"openai",display_name:"零一万物 (Lingyi / Yi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"openai",name:"OpenAI",base_url:"https://api.openai.com/v1",client_type:"openai",display_name:"OpenAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"xai",name:"xAI",base_url:"https://api.x.ai/v1",client_type:"openai",display_name:"xAI (Grok)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"anthropic",name:"Anthropic",base_url:"https://api.anthropic.com/v1",client_type:"openai",display_name:"Anthropic (Claude)"},{id:"gemini",name:"Gemini",base_url:"https://generativelanguage.googleapis.com/v1beta",client_type:"gemini",display_name:"Google Gemini",modelFetcher:{endpoint:"/models",parser:"gemini"}},{id:"cohere",name:"Cohere",base_url:"https://api.cohere.ai/v1",client_type:"openai",display_name:"Cohere"},{id:"groq",name:"Groq",base_url:"https://api.groq.com/openai/v1",client_type:"openai",display_name:"Groq",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"together",name:"Together AI",base_url:"https://api.together.xyz/v1",client_type:"openai",display_name:"Together AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"fireworks",name:"Fireworks",base_url:"https://api.fireworks.ai/inference/v1",client_type:"openai",display_name:"Fireworks AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"mistral",name:"Mistral",base_url:"https://api.mistral.ai/v1",client_type:"openai",display_name:"Mistral AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"perplexity",name:"Perplexity",base_url:"https://api.perplexity.ai",client_type:"openai",display_name:"Perplexity AI"},{id:"custom",name:"",base_url:"",client_type:"openai",display_name:"自定义"}];function iM(t){return t?t.replace(/\/+$/,"").toLowerCase():""}function t1e(t){if(!t)return null;const e=iM(t);return h0.find(n=>n.id!=="custom"&&iM(n.base_url)===e)||null}function n1e(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[s,i]=b.useState(!1),[a,l]=b.useState(!1),[c,d]=b.useState(!1),[h,m]=b.useState(!1),[g,x]=b.useState(!1),[y,w]=b.useState(!1),[S,k]=b.useState(null),[j,N]=b.useState(null),[T,E]=b.useState("custom"),[_,A]=b.useState(!1),[D,q]=b.useState(!1),[B,H]=b.useState(null),[W,ee]=b.useState(!1),[I,V]=b.useState(""),[L,$]=b.useState(new Set),[K,Y]=b.useState(!1),[R,ie]=b.useState(1),[X,z]=b.useState(20),[U,te]=b.useState(""),[ne,G]=b.useState(new Set),[se,re]=b.useState(new Map),{toast:ae}=Lr(),_e=na(),{state:Be,goToStep:Ye,registerTour:Je}=nN(),Oe=b.useRef(null),Ve=b.useRef(!0);b.useEffect(()=>{Je(Rl,bQ)},[Je]),b.useEffect(()=>{if(Be.activeTourId===Rl&&Be.isRunning){const ve=wQ[Be.stepIndex];ve&&!window.location.pathname.endsWith(ve.replace("/config/",""))&&_e({to:ve})}},[Be.stepIndex,Be.activeTourId,Be.isRunning,_e]);const Ue=b.useRef(Be.stepIndex);b.useEffect(()=>{if(Be.activeTourId===Rl&&Be.isRunning){const ve=Ue.current,He=Be.stepIndex;ve>=3&&ve<=9&&He<3&&w(!1),Ue.current=He}},[Be.stepIndex,Be.activeTourId,Be.isRunning]),b.useEffect(()=>{if(Be.activeTourId!==Rl||!Be.isRunning)return;const ve=He=>{const ht=He.target,vn=Be.stepIndex;vn===2&&ht.closest('[data-tour="add-provider-button"]')?setTimeout(()=>Ye(3),300):vn===9&&ht.closest('[data-tour="provider-cancel-button"]')&&setTimeout(()=>Ye(10),300)};return document.addEventListener("click",ve,!0),()=>document.removeEventListener("click",ve,!0)},[Be,Ye]),b.useEffect(()=>{$e()},[]);const $e=async()=>{try{r(!0);const ve=await Dh();e(ve.api_providers||[]),d(!1),Ve.current=!1}catch(ve){console.error("加载配置失败:",ve)}finally{r(!1)}},jt=async()=>{try{m(!0),cb().catch(()=>{}),x(!0)}catch(ve){console.error("重启失败:",ve),x(!1),ae({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),m(!1)}},vt=async()=>{try{i(!0),Oe.current&&clearTimeout(Oe.current);const ve=await Dh();ve.api_providers=t,await Uv(ve),d(!1),ae({title:"保存成功",description:"正在重启麦麦..."}),await jt()}catch(ve){console.error("保存配置失败:",ve),ae({title:"保存失败",description:ve.message,variant:"destructive"}),i(!1)}},$n=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},qt=()=>{x(!1),m(!1),ae({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},un=b.useCallback(async ve=>{if(!Ve.current)try{l(!0),await bk("api_providers",ve),d(!1)}catch(He){console.error("自动保存失败:",He),d(!0)}finally{l(!1)}},[]);b.useEffect(()=>{if(!Ve.current)return d(!0),Oe.current&&clearTimeout(Oe.current),Oe.current=setTimeout(()=>{un(t)},2e3),()=>{Oe.current&&clearTimeout(Oe.current)}},[t,un]);const Mt=async()=>{try{i(!0),Oe.current&&clearTimeout(Oe.current);const ve=await Dh();ve.api_providers=t,await Uv(ve),d(!1),ae({title:"保存成功",description:"模型提供商配置已保存"})}catch(ve){console.error("保存配置失败:",ve),ae({title:"保存失败",description:ve.message,variant:"destructive"})}finally{i(!1)}},ct=(ve,He)=>{if(ve){const ht=h0.find(vn=>vn.base_url===ve.base_url&&vn.client_type===ve.client_type);E(ht?.id||"custom"),k(ve)}else E("custom"),k({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10});N(He),ee(!1),w(!0)},Ne=ve=>{E(ve),A(!1);const He=h0.find(ht=>ht.id===ve);He&&He.id!=="custom"?k(ht=>({...ht,name:He.name,base_url:He.base_url,client_type:He.client_type})):He?.id==="custom"&&k(ht=>({...ht,name:"",base_url:"",client_type:"openai"}))},ze=b.useMemo(()=>T!=="custom",[T]),rt=async()=>{if(S?.api_key)try{await navigator.clipboard.writeText(S.api_key),ae({title:"复制成功",description:"API Key 已复制到剪贴板"})}catch{ae({title:"复制失败",description:"无法访问剪贴板",variant:"destructive"})}},bt=()=>{if(!S)return;const ve={...S,max_retry:S.max_retry??2,timeout:S.timeout??30,retry_interval:S.retry_interval??10};if(j!==null){const He=[...t];He[j]=ve,e(He)}else e([...t,ve]);w(!1),k(null),N(null)},zt=ve=>{if(!ve&&S){const He={...S,max_retry:S.max_retry??2,timeout:S.timeout??30,retry_interval:S.retry_interval??10};k(He)}w(ve)},Rt=ve=>{H(ve),q(!0)},Hn=()=>{if(B!==null){const ve=t.filter((He,ht)=>ht!==B);e(ve),ae({title:"删除成功",description:"提供商已从列表中移除"})}q(!1),H(null)},We=ve=>{const He=new Set(L);He.has(ve)?He.delete(ve):He.add(ve),$(He)},ot=()=>{if(L.size===xn.length)$(new Set);else{const ve=xn.map((He,ht)=>t.findIndex(vn=>vn===xn[ht]));$(new Set(ve))}},dn=()=>{if(L.size===0){ae({title:"提示",description:"请先选择要删除的提供商",variant:"default"});return}Y(!0)},Pt=()=>{const ve=t.filter((He,ht)=>!L.has(ht));e(ve),$(new Set),Y(!1),ae({title:"批量删除成功",description:`已删除 ${L.size} 个提供商`})},xn=t.filter(ve=>{if(!I)return!0;const He=I.toLowerCase();return ve.name.toLowerCase().includes(He)||ve.base_url.toLowerCase().includes(He)||ve.client_type.toLowerCase().includes(He)}),dt=Math.ceil(xn.length/X),rn=xn.slice((R-1)*X,R*X),wt=()=>{const ve=parseInt(U);ve>=1&&ve<=dt&&(ie(ve),te(""))},Wt=async ve=>{G(He=>new Set(He).add(ve));try{const He=await Cae(ve);re(ht=>new Map(ht).set(ve,He)),He.network_ok?He.api_key_valid===!0?ae({title:"连接正常",description:`${ve} 网络连接正常,API Key 有效 (${He.latency_ms}ms)`}):He.api_key_valid===!1?ae({title:"连接正常但 Key 无效",description:`${ve} 网络连接正常,但 API Key 无效或已过期`,variant:"destructive"}):ae({title:"网络连接正常",description:`${ve} 可以访问 (${He.latency_ms}ms)`}):ae({title:"连接失败",description:He.error||"无法连接到提供商",variant:"destructive"})}catch(He){ae({title:"测试失败",description:He.message,variant:"destructive"})}finally{G(He=>{const ht=new Set(He);return ht.delete(ve),ht})}},Gt=async()=>{for(const ve of t)await Wt(ve.name)},lt=ve=>{const He=ne.has(ve),ht=se.get(ve);return He?o.jsxs(tn,{variant:"secondary",className:"gap-1",children:[o.jsx(Us,{className:"h-3 w-3 animate-spin"}),"测试中"]}):ht?ht.network_ok?ht.api_key_valid===!0?o.jsxs(tn,{className:"gap-1 bg-green-600 hover:bg-green-700",children:[o.jsx(Ya,{className:"h-3 w-3"}),"正常"]}):ht.api_key_valid===!1?o.jsxs(tn,{variant:"destructive",className:"gap-1",children:[o.jsx(Lo,{className:"h-3 w-3"}),"Key无效"]}):o.jsxs(tn,{className:"gap-1 bg-blue-600 hover:bg-blue-700",children:[o.jsx(Ya,{className:"h-3 w-3"}),"可访问"]}):o.jsxs(tn,{variant:"destructive",className:"gap-1",children:[o.jsx(OI,{className:"h-3 w-3"}),"离线"]}):null};return n?o.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:o.jsx("div",{className:"flex items-center justify-center h-64",children:o.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})}):o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"AI模型厂商配置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理 AI 模型厂商的 API 配置"})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[L.size>0&&o.jsxs(ue,{onClick:dn,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[o.jsx(Cn,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",L.size,")"]}),o.jsxs(ue,{onClick:Gt,size:"sm",variant:"outline",className:"w-full sm:w-auto",disabled:t.length===0||ne.size>0,children:[o.jsx(Zu,{className:"mr-2 h-4 w-4"}),ne.size>0?`测试中 (${ne.size})`:"测试全部"]}),o.jsxs(ue,{onClick:()=>ct(null,null),size:"sm",className:"w-full sm:w-auto","data-tour":"add-provider-button",children:[o.jsx(Is,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加提供商"]}),o.jsxs(ue,{onClick:Mt,disabled:s||a||!c||h,size:"sm",variant:"outline",className:"w-full sm:w-auto sm:min-w-[120px]",children:[o.jsx(zp,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),s?"保存中...":a?"自动保存中...":c?"保存配置":"已保存"]}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsxs(ue,{disabled:s||a||h,size:"sm",className:"w-full sm:w-auto sm:min-w-[120px]",children:[o.jsx(Dp,{className:"mr-2 h-4 w-4"}),h?"重启中...":c?"保存并重启":"重启麦麦"]})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认重启麦麦?"}),o.jsx(zn,{className:"space-y-3",asChild:!0,children:o.jsxs("div",{children:[o.jsx("p",{children:c?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),o.jsxs(ba,{className:"border-yellow-500/50 bg-yellow-500/10",children:[o.jsx(Xi,{className:"h-4 w-4 text-yellow-600"}),o.jsxs(wa,{className:"text-yellow-900 dark:text-yellow-100",children:[o.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",o.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",o.jsxs(Er,{children:[o.jsx(Of,{asChild:!0,children:o.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[o.jsx(Zy,{className:"h-3 w-3"}),"如何结束程序?"]})}),o.jsxs(wr,{className:"max-w-2xl",children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"如何结束使用重启功能后的麦麦程序"}),o.jsx(Xr,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),o.jsxs(Yi,{defaultValue:"windows",className:"w-full",children:[o.jsxs(ji,{className:"grid w-full grid-cols-3",children:[o.jsx(Bt,{value:"windows",children:"Windows"}),o.jsx(Bt,{value:"macos",children:"macOS"}),o.jsx(Bt,{value:"linux",children:"Linux"})]}),o.jsxs(ln,{value:"windows",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),o.jsxs("li",{children:["在“进程”或“详细信息”标签页中找到 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),o.jsx("li",{children:"右键点击并选择“结束任务”"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),o.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),o.jsxs(ln,{value:"macos",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"})," 打开 Spotlight,搜索“活动监视器”"]}),o.jsxs("li",{children:["在进程列表中找到 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),o.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]})]}),o.jsxs(ln,{value:"linux",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),o.jsx("p",{children:'pkill -9 -f "bot.py"'}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["在终端输入 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),o.jsx(fs,{children:o.jsx(e6,{asChild:!0,children:o.jsx(ue,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:c?vt:jt,children:c?"保存并重启":"确认重启"})]})]})]})]})]}),o.jsxs(ba,{children:[o.jsx(Xi,{className:"h-4 w-4"}),o.jsxs(wa,{children:["配置更新后需要",o.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),o.jsxs(pn,{className:"h-[calc(100vh-260px)]",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2 mb-4",children:[o.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[o.jsx(ii,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(Pe,{placeholder:"搜索提供商名称、URL 或类型...",value:I,onChange:ve=>V(ve.target.value),className:"pl-9"})]}),I&&o.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",xn.length," 个结果"]})]}),o.jsx("div",{className:"md:hidden space-y-3",children:xn.length===0?o.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:I?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'}):rn.map((ve,He)=>{const ht=t.findIndex(vn=>vn===ve);return o.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-start justify-between gap-2",children:[o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[o.jsx("h3",{className:"font-semibold text-base truncate",children:ve.name}),lt(ve.name)]}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1 break-all",children:ve.base_url})]}),o.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>Wt(ve.name),disabled:ne.has(ve.name),title:"测试连接",children:ne.has(ve.name)?o.jsx(Us,{className:"h-4 w-4 animate-spin"}):o.jsx(Zu,{className:"h-4 w-4"})}),o.jsx(ue,{variant:"default",size:"sm",onClick:()=>ct(ve,ht),children:o.jsx(Ju,{className:"h-4 w-4",strokeWidth:2,fill:"none"})}),o.jsx(ue,{size:"sm",onClick:()=>Rt(ht),className:"bg-red-600 hover:bg-red-700 text-white",children:o.jsx(Cn,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"客户端类型"}),o.jsx("p",{className:"font-medium",children:ve.client_type})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"最大重试"}),o.jsx("p",{className:"font-medium",children:ve.max_retry})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"超时(秒)"}),o.jsx("p",{className:"font-medium",children:ve.timeout})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"重试间隔(秒)"}),o.jsx("p",{className:"font-medium",children:ve.retry_interval})]})]})]},He)})}),o.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:o.jsx("div",{className:"overflow-x-auto",children:o.jsxs(Af,{children:[o.jsx(Mf,{children:o.jsxs(zs,{children:[o.jsx(mn,{className:"w-12",children:o.jsx(Ci,{checked:L.size===xn.length&&xn.length>0,onCheckedChange:ot})}),o.jsx(mn,{children:"状态"}),o.jsx(mn,{children:"名称"}),o.jsx(mn,{children:"基础URL"}),o.jsx(mn,{children:"客户端类型"}),o.jsx(mn,{className:"text-right",children:"最大重试"}),o.jsx(mn,{className:"text-right",children:"超时(秒)"}),o.jsx(mn,{className:"text-right",children:"重试间隔(秒)"}),o.jsx(mn,{className:"text-right",children:"操作"})]})}),o.jsx(Rf,{children:rn.length===0?o.jsx(zs,{children:o.jsx(Yt,{colSpan:9,className:"text-center text-muted-foreground py-8",children:I?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'})}):rn.map((ve,He)=>{const ht=t.findIndex(vn=>vn===ve);return o.jsxs(zs,{children:[o.jsx(Yt,{children:o.jsx(Ci,{checked:L.has(ht),onCheckedChange:()=>We(ht)})}),o.jsx(Yt,{children:lt(ve.name)||o.jsx(tn,{variant:"outline",className:"text-muted-foreground",children:"未测试"})}),o.jsx(Yt,{className:"font-medium",children:ve.name}),o.jsx(Yt,{className:"max-w-xs truncate",title:ve.base_url,children:ve.base_url}),o.jsx(Yt,{children:ve.client_type}),o.jsx(Yt,{className:"text-right",children:ve.max_retry}),o.jsx(Yt,{className:"text-right",children:ve.timeout}),o.jsx(Yt,{className:"text-right",children:ve.retry_interval}),o.jsx(Yt,{className:"text-right",children:o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>Wt(ve.name),disabled:ne.has(ve.name),title:"测试连接",children:ne.has(ve.name)?o.jsx(Us,{className:"h-4 w-4 animate-spin"}):o.jsx(Zu,{className:"h-4 w-4"})}),o.jsxs(ue,{variant:"default",size:"sm",onClick:()=>ct(ve,ht),children:[o.jsx(Ju,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),o.jsxs(ue,{size:"sm",onClick:()=>Rt(ht),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Cn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},He)})})]})})}),xn.length>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{htmlFor:"page-size-provider",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:X.toString(),onValueChange:ve=>{z(parseInt(ve)),ie(1),$(new Set)},children:[o.jsx($t,{id:"page-size-provider",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"10",children:"10"}),o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"50",children:"50"}),o.jsx(De,{value:"100",children:"100"})]})]}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(R-1)*X+1," 到"," ",Math.min(R*X,xn.length)," 条,共 ",xn.length," 条"]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>ie(1),disabled:R===1,className:"hidden sm:flex",children:o.jsx(Ip,{className:"h-4 w-4"})}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>ie(ve=>Math.max(1,ve-1)),disabled:R===1,children:[o.jsx(wd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Pe,{type:"number",value:U,onChange:ve=>te(ve.target.value),onKeyDown:ve=>ve.key==="Enter"&&wt(),placeholder:R.toString(),className:"w-16 h-8 text-center",min:1,max:dt}),o.jsx(ue,{variant:"outline",size:"sm",onClick:wt,disabled:!U,className:"h-8",children:"跳转"})]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>ie(ve=>ve+1),disabled:R>=dt,children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(Zl,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>ie(dt),disabled:R>=dt,className:"hidden sm:flex",children:o.jsx(Lp,{className:"h-4 w-4"})})]})]})]}),o.jsx(Er,{open:y,onOpenChange:zt,children:o.jsxs(wr,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"provider-dialog",preventOutsideClose:Be.isRunning,children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:j!==null?"编辑提供商":"添加提供商"}),o.jsx(Xr,{children:"配置 API 提供商的连接信息和参数"})]}),o.jsxs("form",{onSubmit:ve=>{ve.preventDefault(),bt()},autoComplete:"off",children:[o.jsxs("div",{className:"grid gap-4 py-4",children:[o.jsxs("div",{className:"grid gap-2","data-tour":"provider-template-select",children:[o.jsx(he,{htmlFor:"template",children:"提供商模板"}),o.jsxs(Bo,{open:_,onOpenChange:A,children:[o.jsx(Fo,{asChild:!0,children:o.jsxs(ue,{variant:"outline",role:"combobox","aria-expanded":_,className:"w-full justify-between",children:[T?h0.find(ve=>ve.id===T)?.display_name:"选择提供商模板...",o.jsx(Lj,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),o.jsx(Ka,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:o.jsxs(Tb,{children:[o.jsx(Eb,{placeholder:"搜索提供商模板..."}),o.jsx(pn,{className:"h-[300px]",children:o.jsxs(_b,{className:"max-h-none overflow-visible",children:[o.jsx(Ab,{children:"未找到匹配的模板"}),o.jsx(up,{children:h0.map(ve=>o.jsxs(dp,{value:ve.display_name,onSelect:()=>Ne(ve.id),children:[o.jsx(zo,{className:`mr-2 h-4 w-4 ${T===ve.id?"opacity-100":"opacity-0"}`}),ve.display_name]},ve.id))})]})})]})})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"选择预设模板可自动填充 URL 和客户端类型,支持搜索"})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"provider-name-input",children:[o.jsx(he,{htmlFor:"name",children:"名称 *"}),o.jsx(Pe,{id:"name",value:S?.name||"",onChange:ve=>k(He=>He?{...He,name:ve.target.value}:null),placeholder:"例如: DeepSeek, SiliconFlow"})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"provider-url-input",children:[o.jsx(he,{htmlFor:"base_url",children:"基础 URL *"}),o.jsx(Pe,{id:"base_url",value:S?.base_url||"",onChange:ve=>k(He=>He?{...He,base_url:ve.target.value}:null),placeholder:"https://api.example.com/v1",disabled:ze,className:ze?"bg-muted cursor-not-allowed":""}),ze&&o.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时 URL 不可编辑,切换到"自定义"以手动配置'})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"provider-apikey-input",children:[o.jsx(he,{htmlFor:"api_key",children:"API Key *"}),o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Pe,{id:"api_key",type:W?"text":"password",value:S?.api_key||"",onChange:ve=>k(He=>He?{...He,api_key:ve.target.value}:null),placeholder:"sk-...",className:"flex-1"}),o.jsx(ue,{type:"button",variant:"outline",size:"icon",onClick:()=>ee(!W),title:W?"隐藏密钥":"显示密钥",children:W?o.jsx(I0,{className:"h-4 w-4"}):o.jsx(Ji,{className:"h-4 w-4"})}),o.jsx(ue,{type:"button",variant:"outline",size:"icon",onClick:rt,title:"复制密钥",children:o.jsx(Iv,{className:"h-4 w-4"})})]})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"client_type",children:"客户端类型"}),o.jsxs(Vt,{value:S?.client_type||"openai",onValueChange:ve=>k(He=>He?{...He,client_type:ve}:null),disabled:ze,children:[o.jsx($t,{id:"client_type",className:ze?"bg-muted cursor-not-allowed":"",children:o.jsx(Ut,{placeholder:"选择客户端类型"})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"openai",children:"OpenAI"}),o.jsx(De,{value:"gemini",children:"Gemini"})]})]}),ze&&o.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时客户端类型不可编辑,切换到"自定义"以手动配置'})]}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"max_retry",children:"最大重试"}),o.jsx(Pe,{id:"max_retry",type:"number",min:"0",value:S?.max_retry??"",onChange:ve=>{const He=ve.target.value===""?null:parseInt(ve.target.value);k(ht=>ht?{...ht,max_retry:He}:null)},placeholder:"默认: 2"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"timeout",children:"超时(秒)"}),o.jsx(Pe,{id:"timeout",type:"number",min:"1",value:S?.timeout??"",onChange:ve=>{const He=ve.target.value===""?null:parseInt(ve.target.value);k(ht=>ht?{...ht,timeout:He}:null)},placeholder:"默认: 30"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"retry_interval",children:"重试间隔(秒)"}),o.jsx(Pe,{id:"retry_interval",type:"number",min:"1",value:S?.retry_interval??"",onChange:ve=>{const He=ve.target.value===""?null:parseInt(ve.target.value);k(ht=>ht?{...ht,retry_interval:He}:null)},placeholder:"默认: 10"})]})]})]}),o.jsxs(fs,{children:[o.jsx(ue,{type:"button",variant:"outline",onClick:()=>w(!1),"data-tour":"provider-cancel-button",children:"取消"}),o.jsx(ue,{type:"submit","data-tour":"provider-save-button",children:"保存"})]})]})]})}),o.jsx(Fn,{open:D,onOpenChange:q,children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:['确定要删除提供商 "',B!==null?t[B]?.name:"",'" 吗? 此操作无法撤销。']})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:Hn,children:"删除"})]})]})}),o.jsx(Fn,{open:K,onOpenChange:Y,children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认批量删除"}),o.jsxs(zn,{children:["确定要删除选中的 ",L.size," 个提供商吗? 此操作无法撤销。"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:Pt,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),g&&o.jsx(r6,{onRestartComplete:$n,onRestartFailed:qt})]})}function r1e(){for(var t=arguments.length,e=new Array(t),n=0;nr=>{e.forEach(s=>s(r))},e)}const Pb=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function If(t){const e=Object.prototype.toString.call(t);return e==="[object Window]"||e==="[object global]"}function rN(t){return"nodeType"in t}function _i(t){var e,n;return t?If(t)?t:rN(t)&&(e=(n=t.ownerDocument)==null?void 0:n.defaultView)!=null?e:window:window}function sN(t){const{Document:e}=_i(t);return t instanceof e}function hg(t){return If(t)?!1:t instanceof _i(t).HTMLElement}function SQ(t){return t instanceof _i(t).SVGElement}function Lf(t){return t?If(t)?t.document:rN(t)?sN(t)?t:hg(t)||SQ(t)?t.ownerDocument:document:document:document}const $o=Pb?b.useLayoutEffect:b.useEffect;function iN(t){const e=b.useRef(t);return $o(()=>{e.current=t}),b.useCallback(function(){for(var n=arguments.length,r=new Array(n),s=0;s{t.current=setInterval(r,s)},[]),n=b.useCallback(()=>{t.current!==null&&(clearInterval(t.current),t.current=null)},[]);return[e,n]}function mp(t,e){e===void 0&&(e=[t]);const n=b.useRef(t);return $o(()=>{n.current!==t&&(n.current=t)},e),n}function fg(t,e){const n=b.useRef();return b.useMemo(()=>{const r=t(n.current);return n.current=r,r},[...e])}function yy(t){const e=iN(t),n=b.useRef(null),r=b.useCallback(s=>{s!==n.current&&e?.(s,n.current),n.current=s},[]);return[n,r]}function NO(t){const e=b.useRef();return b.useEffect(()=>{e.current=t},[t]),e.current}let CS={};function mg(t,e){return b.useMemo(()=>{if(e)return e;const n=CS[t]==null?0:CS[t]+1;return CS[t]=n,t+"-"+n},[t,e])}function kQ(t){return function(e){for(var n=arguments.length,r=new Array(n>1?n-1:0),s=1;s{const l=Object.entries(a);for(const[c,d]of l){const h=i[c];h!=null&&(i[c]=h+t*d)}return i},{...e})}}const qh=kQ(1),pp=kQ(-1);function i1e(t){return"clientX"in t&&"clientY"in t}function aN(t){if(!t)return!1;const{KeyboardEvent:e}=_i(t.target);return e&&t instanceof e}function a1e(t){if(!t)return!1;const{TouchEvent:e}=_i(t.target);return e&&t instanceof e}function CO(t){if(a1e(t)){if(t.touches&&t.touches.length){const{clientX:e,clientY:n}=t.touches[0];return{x:e,y:n}}else if(t.changedTouches&&t.changedTouches.length){const{clientX:e,clientY:n}=t.changedTouches[0];return{x:e,y:n}}}return i1e(t)?{x:t.clientX,y:t.clientY}:null}const gp=Object.freeze({Translate:{toString(t){if(!t)return;const{x:e,y:n}=t;return"translate3d("+(e?Math.round(e):0)+"px, "+(n?Math.round(n):0)+"px, 0)"}},Scale:{toString(t){if(!t)return;const{scaleX:e,scaleY:n}=t;return"scaleX("+e+") scaleY("+n+")"}},Transform:{toString(t){if(t)return[gp.Translate.toString(t),gp.Scale.toString(t)].join(" ")}},Transition:{toString(t){let{property:e,duration:n,easing:r}=t;return e+" "+n+"ms "+r}}}),aM="a,frame,iframe,input:not([type=hidden]):not(:disabled),select:not(:disabled),textarea:not(:disabled),button:not(:disabled),*[tabindex]";function o1e(t){return t.matches(aM)?t:t.querySelector(aM)}const l1e={display:"none"};function c1e(t){let{id:e,value:n}=t;return oe.createElement("div",{id:e,style:l1e},n)}function u1e(t){let{id:e,announcement:n,ariaLiveType:r="assertive"}=t;const s={position:"fixed",top:0,left:0,width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0 0 0 0)",clipPath:"inset(100%)",whiteSpace:"nowrap"};return oe.createElement("div",{id:e,style:s,role:"status","aria-live":r,"aria-atomic":!0},n)}function d1e(){const[t,e]=b.useState("");return{announce:b.useCallback(r=>{r!=null&&e(r)},[]),announcement:t}}const OQ=b.createContext(null);function h1e(t){const e=b.useContext(OQ);b.useEffect(()=>{if(!e)throw new Error("useDndMonitor must be used within a children of ");return e(t)},[t,e])}function f1e(){const[t]=b.useState(()=>new Set),e=b.useCallback(r=>(t.add(r),()=>t.delete(r)),[t]);return[b.useCallback(r=>{let{type:s,event:i}=r;t.forEach(a=>{var l;return(l=a[s])==null?void 0:l.call(a,i)})},[t]),e]}const m1e={draggable:` - To pick up a draggable item, press the space bar. - While dragging, use the arrow keys to move the item. - Press space again to drop the item in its new position, or press escape to cancel. - `},p1e={onDragStart(t){let{active:e}=t;return"Picked up draggable item "+e.id+"."},onDragOver(t){let{active:e,over:n}=t;return n?"Draggable item "+e.id+" was moved over droppable area "+n.id+".":"Draggable item "+e.id+" is no longer over a droppable area."},onDragEnd(t){let{active:e,over:n}=t;return n?"Draggable item "+e.id+" was dropped over droppable area "+n.id:"Draggable item "+e.id+" was dropped."},onDragCancel(t){let{active:e}=t;return"Dragging was cancelled. Draggable item "+e.id+" was dropped."}};function g1e(t){let{announcements:e=p1e,container:n,hiddenTextDescribedById:r,screenReaderInstructions:s=m1e}=t;const{announce:i,announcement:a}=d1e(),l=mg("DndLiveRegion"),[c,d]=b.useState(!1);if(b.useEffect(()=>{d(!0)},[]),h1e(b.useMemo(()=>({onDragStart(m){let{active:g}=m;i(e.onDragStart({active:g}))},onDragMove(m){let{active:g,over:x}=m;e.onDragMove&&i(e.onDragMove({active:g,over:x}))},onDragOver(m){let{active:g,over:x}=m;i(e.onDragOver({active:g,over:x}))},onDragEnd(m){let{active:g,over:x}=m;i(e.onDragEnd({active:g,over:x}))},onDragCancel(m){let{active:g,over:x}=m;i(e.onDragCancel({active:g,over:x}))}}),[i,e])),!c)return null;const h=oe.createElement(oe.Fragment,null,oe.createElement(c1e,{id:r,value:s.draggable}),oe.createElement(u1e,{id:l,announcement:a}));return n?ya.createPortal(h,n):h}var ds;(function(t){t.DragStart="dragStart",t.DragMove="dragMove",t.DragEnd="dragEnd",t.DragCancel="dragCancel",t.DragOver="dragOver",t.RegisterDroppable="registerDroppable",t.SetDroppableDisabled="setDroppableDisabled",t.UnregisterDroppable="unregisterDroppable"})(ds||(ds={}));function by(){}function oM(t,e){return b.useMemo(()=>({sensor:t,options:e??{}}),[t,e])}function x1e(){for(var t=arguments.length,e=new Array(t),n=0;n[...e].filter(r=>r!=null),[...e])}const eo=Object.freeze({x:0,y:0});function jQ(t,e){return Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2))}function NQ(t,e){let{data:{value:n}}=t,{data:{value:r}}=e;return n-r}function v1e(t,e){let{data:{value:n}}=t,{data:{value:r}}=e;return r-n}function lM(t){let{left:e,top:n,height:r,width:s}=t;return[{x:e,y:n},{x:e+s,y:n},{x:e,y:n+r},{x:e+s,y:n+r}]}function CQ(t,e){if(!t||t.length===0)return null;const[n]=t;return n[e]}function cM(t,e,n){return e===void 0&&(e=t.left),n===void 0&&(n=t.top),{x:e+t.width*.5,y:n+t.height*.5}}const y1e=t=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=cM(e,e.left,e.top),i=[];for(const a of r){const{id:l}=a,c=n.get(l);if(c){const d=jQ(cM(c),s);i.push({id:l,data:{droppableContainer:a,value:d}})}}return i.sort(NQ)},b1e=t=>{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=lM(e),i=[];for(const a of r){const{id:l}=a,c=n.get(l);if(c){const d=lM(c),h=s.reduce((g,x,y)=>g+jQ(d[y],x),0),m=Number((h/4).toFixed(4));i.push({id:l,data:{droppableContainer:a,value:m}})}}return i.sort(NQ)};function w1e(t,e){const n=Math.max(e.top,t.top),r=Math.max(e.left,t.left),s=Math.min(e.left+e.width,t.left+t.width),i=Math.min(e.top+e.height,t.top+t.height),a=s-r,l=i-n;if(r{let{collisionRect:e,droppableRects:n,droppableContainers:r}=t;const s=[];for(const i of r){const{id:a}=i,l=n.get(a);if(l){const c=w1e(l,e);c>0&&s.push({id:a,data:{droppableContainer:i,value:c}})}}return s.sort(v1e)};function k1e(t,e,n){return{...t,scaleX:e&&n?e.width/n.width:1,scaleY:e&&n?e.height/n.height:1}}function TQ(t,e){return t&&e?{x:t.left-e.left,y:t.top-e.top}:eo}function O1e(t){return function(n){for(var r=arguments.length,s=new Array(r>1?r-1:0),i=1;i({...a,top:a.top+t*l.y,bottom:a.bottom+t*l.y,left:a.left+t*l.x,right:a.right+t*l.x}),{...n})}}const j1e=O1e(1);function N1e(t){if(t.startsWith("matrix3d(")){const e=t.slice(9,-1).split(/, /);return{x:+e[12],y:+e[13],scaleX:+e[0],scaleY:+e[5]}}else if(t.startsWith("matrix(")){const e=t.slice(7,-1).split(/, /);return{x:+e[4],y:+e[5],scaleX:+e[0],scaleY:+e[3]}}return null}function C1e(t,e,n){const r=N1e(e);if(!r)return t;const{scaleX:s,scaleY:i,x:a,y:l}=r,c=t.left-a-(1-s)*parseFloat(n),d=t.top-l-(1-i)*parseFloat(n.slice(n.indexOf(" ")+1)),h=s?t.width/s:t.width,m=i?t.height/i:t.height;return{width:h,height:m,top:d,right:c+h,bottom:d+m,left:c}}const T1e={ignoreTransform:!1};function Bf(t,e){e===void 0&&(e=T1e);let n=t.getBoundingClientRect();if(e.ignoreTransform){const{transform:d,transformOrigin:h}=_i(t).getComputedStyle(t);d&&(n=C1e(n,d,h))}const{top:r,left:s,width:i,height:a,bottom:l,right:c}=n;return{top:r,left:s,width:i,height:a,bottom:l,right:c}}function uM(t){return Bf(t,{ignoreTransform:!0})}function E1e(t){const e=t.innerWidth,n=t.innerHeight;return{top:0,left:0,right:e,bottom:n,width:e,height:n}}function _1e(t,e){return e===void 0&&(e=_i(t).getComputedStyle(t)),e.position==="fixed"}function A1e(t,e){e===void 0&&(e=_i(t).getComputedStyle(t));const n=/(auto|scroll|overlay)/;return["overflow","overflowX","overflowY"].some(s=>{const i=e[s];return typeof i=="string"?n.test(i):!1})}function zb(t,e){const n=[];function r(s){if(e!=null&&n.length>=e||!s)return n;if(sN(s)&&s.scrollingElement!=null&&!n.includes(s.scrollingElement))return n.push(s.scrollingElement),n;if(!hg(s)||SQ(s)||n.includes(s))return n;const i=_i(t).getComputedStyle(s);return s!==t&&A1e(s,i)&&n.push(s),_1e(s,i)?n:r(s.parentNode)}return t?r(t):n}function EQ(t){const[e]=zb(t,1);return e??null}function TS(t){return!Pb||!t?null:If(t)?t:rN(t)?sN(t)||t===Lf(t).scrollingElement?window:hg(t)?t:null:null}function _Q(t){return If(t)?t.scrollX:t.scrollLeft}function AQ(t){return If(t)?t.scrollY:t.scrollTop}function TO(t){return{x:_Q(t),y:AQ(t)}}var bs;(function(t){t[t.Forward=1]="Forward",t[t.Backward=-1]="Backward"})(bs||(bs={}));function MQ(t){return!Pb||!t?!1:t===document.scrollingElement}function RQ(t){const e={x:0,y:0},n=MQ(t)?{height:window.innerHeight,width:window.innerWidth}:{height:t.clientHeight,width:t.clientWidth},r={x:t.scrollWidth-n.width,y:t.scrollHeight-n.height},s=t.scrollTop<=e.y,i=t.scrollLeft<=e.x,a=t.scrollTop>=r.y,l=t.scrollLeft>=r.x;return{isTop:s,isLeft:i,isBottom:a,isRight:l,maxScroll:r,minScroll:e}}const M1e={x:.2,y:.2};function R1e(t,e,n,r,s){let{top:i,left:a,right:l,bottom:c}=n;r===void 0&&(r=10),s===void 0&&(s=M1e);const{isTop:d,isBottom:h,isLeft:m,isRight:g}=RQ(t),x={x:0,y:0},y={x:0,y:0},w={height:e.height*s.y,width:e.width*s.x};return!d&&i<=e.top+w.height?(x.y=bs.Backward,y.y=r*Math.abs((e.top+w.height-i)/w.height)):!h&&c>=e.bottom-w.height&&(x.y=bs.Forward,y.y=r*Math.abs((e.bottom-w.height-c)/w.height)),!g&&l>=e.right-w.width?(x.x=bs.Forward,y.x=r*Math.abs((e.right-w.width-l)/w.width)):!m&&a<=e.left+w.width&&(x.x=bs.Backward,y.x=r*Math.abs((e.left+w.width-a)/w.width)),{direction:x,speed:y}}function D1e(t){if(t===document.scrollingElement){const{innerWidth:i,innerHeight:a}=window;return{top:0,left:0,right:i,bottom:a,width:i,height:a}}const{top:e,left:n,right:r,bottom:s}=t.getBoundingClientRect();return{top:e,left:n,right:r,bottom:s,width:t.clientWidth,height:t.clientHeight}}function DQ(t){return t.reduce((e,n)=>qh(e,TO(n)),eo)}function P1e(t){return t.reduce((e,n)=>e+_Q(n),0)}function z1e(t){return t.reduce((e,n)=>e+AQ(n),0)}function I1e(t,e){if(e===void 0&&(e=Bf),!t)return;const{top:n,left:r,bottom:s,right:i}=e(t);EQ(t)&&(s<=0||i<=0||n>=window.innerHeight||r>=window.innerWidth)&&t.scrollIntoView({block:"center",inline:"center"})}const L1e=[["x",["left","right"],P1e],["y",["top","bottom"],z1e]];class oN{constructor(e,n){this.rect=void 0,this.width=void 0,this.height=void 0,this.top=void 0,this.bottom=void 0,this.right=void 0,this.left=void 0;const r=zb(n),s=DQ(r);this.rect={...e},this.width=e.width,this.height=e.height;for(const[i,a,l]of L1e)for(const c of a)Object.defineProperty(this,c,{get:()=>{const d=l(r),h=s[i]-d;return this.rect[c]+h},enumerable:!0});Object.defineProperty(this,"rect",{enumerable:!1})}}class _0{constructor(e){this.target=void 0,this.listeners=[],this.removeAll=()=>{this.listeners.forEach(n=>{var r;return(r=this.target)==null?void 0:r.removeEventListener(...n)})},this.target=e}add(e,n,r){var s;(s=this.target)==null||s.addEventListener(e,n,r),this.listeners.push([e,n,r])}}function B1e(t){const{EventTarget:e}=_i(t);return t instanceof e?t:Lf(t)}function ES(t,e){const n=Math.abs(t.x),r=Math.abs(t.y);return typeof e=="number"?Math.sqrt(n**2+r**2)>e:"x"in e&&"y"in e?n>e.x&&r>e.y:"x"in e?n>e.x:"y"in e?r>e.y:!1}var pa;(function(t){t.Click="click",t.DragStart="dragstart",t.Keydown="keydown",t.ContextMenu="contextmenu",t.Resize="resize",t.SelectionChange="selectionchange",t.VisibilityChange="visibilitychange"})(pa||(pa={}));function dM(t){t.preventDefault()}function F1e(t){t.stopPropagation()}var jn;(function(t){t.Space="Space",t.Down="ArrowDown",t.Right="ArrowRight",t.Left="ArrowLeft",t.Up="ArrowUp",t.Esc="Escape",t.Enter="Enter",t.Tab="Tab"})(jn||(jn={}));const PQ={start:[jn.Space,jn.Enter],cancel:[jn.Esc],end:[jn.Space,jn.Enter,jn.Tab]},q1e=(t,e)=>{let{currentCoordinates:n}=e;switch(t.code){case jn.Right:return{...n,x:n.x+25};case jn.Left:return{...n,x:n.x-25};case jn.Down:return{...n,y:n.y+25};case jn.Up:return{...n,y:n.y-25}}};class lN{constructor(e){this.props=void 0,this.autoScrollEnabled=!1,this.referenceCoordinates=void 0,this.listeners=void 0,this.windowListeners=void 0,this.props=e;const{event:{target:n}}=e;this.props=e,this.listeners=new _0(Lf(n)),this.windowListeners=new _0(_i(n)),this.handleKeyDown=this.handleKeyDown.bind(this),this.handleCancel=this.handleCancel.bind(this),this.attach()}attach(){this.handleStart(),this.windowListeners.add(pa.Resize,this.handleCancel),this.windowListeners.add(pa.VisibilityChange,this.handleCancel),setTimeout(()=>this.listeners.add(pa.Keydown,this.handleKeyDown))}handleStart(){const{activeNode:e,onStart:n}=this.props,r=e.node.current;r&&I1e(r),n(eo)}handleKeyDown(e){if(aN(e)){const{active:n,context:r,options:s}=this.props,{keyboardCodes:i=PQ,coordinateGetter:a=q1e,scrollBehavior:l="smooth"}=s,{code:c}=e;if(i.end.includes(c)){this.handleEnd(e);return}if(i.cancel.includes(c)){this.handleCancel(e);return}const{collisionRect:d}=r.current,h=d?{x:d.left,y:d.top}:eo;this.referenceCoordinates||(this.referenceCoordinates=h);const m=a(e,{active:n,context:r.current,currentCoordinates:h});if(m){const g=pp(m,h),x={x:0,y:0},{scrollableAncestors:y}=r.current;for(const w of y){const S=e.code,{isTop:k,isRight:j,isLeft:N,isBottom:T,maxScroll:E,minScroll:_}=RQ(w),A=D1e(w),D={x:Math.min(S===jn.Right?A.right-A.width/2:A.right,Math.max(S===jn.Right?A.left:A.left+A.width/2,m.x)),y:Math.min(S===jn.Down?A.bottom-A.height/2:A.bottom,Math.max(S===jn.Down?A.top:A.top+A.height/2,m.y))},q=S===jn.Right&&!j||S===jn.Left&&!N,B=S===jn.Down&&!T||S===jn.Up&&!k;if(q&&D.x!==m.x){const H=w.scrollLeft+g.x,W=S===jn.Right&&H<=E.x||S===jn.Left&&H>=_.x;if(W&&!g.y){w.scrollTo({left:H,behavior:l});return}W?x.x=w.scrollLeft-H:x.x=S===jn.Right?w.scrollLeft-E.x:w.scrollLeft-_.x,x.x&&w.scrollBy({left:-x.x,behavior:l});break}else if(B&&D.y!==m.y){const H=w.scrollTop+g.y,W=S===jn.Down&&H<=E.y||S===jn.Up&&H>=_.y;if(W&&!g.x){w.scrollTo({top:H,behavior:l});return}W?x.y=w.scrollTop-H:x.y=S===jn.Down?w.scrollTop-E.y:w.scrollTop-_.y,x.y&&w.scrollBy({top:-x.y,behavior:l});break}}this.handleMove(e,qh(pp(m,this.referenceCoordinates),x))}}}handleMove(e,n){const{onMove:r}=this.props;e.preventDefault(),r(n)}handleEnd(e){const{onEnd:n}=this.props;e.preventDefault(),this.detach(),n()}handleCancel(e){const{onCancel:n}=this.props;e.preventDefault(),this.detach(),n()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll()}}lN.activators=[{eventName:"onKeyDown",handler:(t,e,n)=>{let{keyboardCodes:r=PQ,onActivation:s}=e,{active:i}=n;const{code:a}=t.nativeEvent;if(r.start.includes(a)){const l=i.activatorNode.current;return l&&t.target!==l?!1:(t.preventDefault(),s?.({event:t.nativeEvent}),!0)}return!1}}];function hM(t){return!!(t&&"distance"in t)}function fM(t){return!!(t&&"delay"in t)}class cN{constructor(e,n,r){var s;r===void 0&&(r=B1e(e.event.target)),this.props=void 0,this.events=void 0,this.autoScrollEnabled=!0,this.document=void 0,this.activated=!1,this.initialCoordinates=void 0,this.timeoutId=null,this.listeners=void 0,this.documentListeners=void 0,this.windowListeners=void 0,this.props=e,this.events=n;const{event:i}=e,{target:a}=i;this.props=e,this.events=n,this.document=Lf(a),this.documentListeners=new _0(this.document),this.listeners=new _0(r),this.windowListeners=new _0(_i(a)),this.initialCoordinates=(s=CO(i))!=null?s:eo,this.handleStart=this.handleStart.bind(this),this.handleMove=this.handleMove.bind(this),this.handleEnd=this.handleEnd.bind(this),this.handleCancel=this.handleCancel.bind(this),this.handleKeydown=this.handleKeydown.bind(this),this.removeTextSelection=this.removeTextSelection.bind(this),this.attach()}attach(){const{events:e,props:{options:{activationConstraint:n,bypassActivationConstraint:r}}}=this;if(this.listeners.add(e.move.name,this.handleMove,{passive:!1}),this.listeners.add(e.end.name,this.handleEnd),e.cancel&&this.listeners.add(e.cancel.name,this.handleCancel),this.windowListeners.add(pa.Resize,this.handleCancel),this.windowListeners.add(pa.DragStart,dM),this.windowListeners.add(pa.VisibilityChange,this.handleCancel),this.windowListeners.add(pa.ContextMenu,dM),this.documentListeners.add(pa.Keydown,this.handleKeydown),n){if(r!=null&&r({event:this.props.event,activeNode:this.props.activeNode,options:this.props.options}))return this.handleStart();if(fM(n)){this.timeoutId=setTimeout(this.handleStart,n.delay),this.handlePending(n);return}if(hM(n)){this.handlePending(n);return}}this.handleStart()}detach(){this.listeners.removeAll(),this.windowListeners.removeAll(),setTimeout(this.documentListeners.removeAll,50),this.timeoutId!==null&&(clearTimeout(this.timeoutId),this.timeoutId=null)}handlePending(e,n){const{active:r,onPending:s}=this.props;s(r,e,this.initialCoordinates,n)}handleStart(){const{initialCoordinates:e}=this,{onStart:n}=this.props;e&&(this.activated=!0,this.documentListeners.add(pa.Click,F1e,{capture:!0}),this.removeTextSelection(),this.documentListeners.add(pa.SelectionChange,this.removeTextSelection),n(e))}handleMove(e){var n;const{activated:r,initialCoordinates:s,props:i}=this,{onMove:a,options:{activationConstraint:l}}=i;if(!s)return;const c=(n=CO(e))!=null?n:eo,d=pp(s,c);if(!r&&l){if(hM(l)){if(l.tolerance!=null&&ES(d,l.tolerance))return this.handleCancel();if(ES(d,l.distance))return this.handleStart()}if(fM(l)&&ES(d,l.tolerance))return this.handleCancel();this.handlePending(l,d);return}e.cancelable&&e.preventDefault(),a(c)}handleEnd(){const{onAbort:e,onEnd:n}=this.props;this.detach(),this.activated||e(this.props.active),n()}handleCancel(){const{onAbort:e,onCancel:n}=this.props;this.detach(),this.activated||e(this.props.active),n()}handleKeydown(e){e.code===jn.Esc&&this.handleCancel()}removeTextSelection(){var e;(e=this.document.getSelection())==null||e.removeAllRanges()}}const $1e={cancel:{name:"pointercancel"},move:{name:"pointermove"},end:{name:"pointerup"}};class uN extends cN{constructor(e){const{event:n}=e,r=Lf(n.target);super(e,$1e,r)}}uN.activators=[{eventName:"onPointerDown",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;return!n.isPrimary||n.button!==0?!1:(r?.({event:n}),!0)}}];const H1e={move:{name:"mousemove"},end:{name:"mouseup"}};var EO;(function(t){t[t.RightClick=2]="RightClick"})(EO||(EO={}));class Q1e extends cN{constructor(e){super(e,H1e,Lf(e.event.target))}}Q1e.activators=[{eventName:"onMouseDown",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;return n.button===EO.RightClick?!1:(r?.({event:n}),!0)}}];const _S={cancel:{name:"touchcancel"},move:{name:"touchmove"},end:{name:"touchend"}};class V1e extends cN{constructor(e){super(e,_S)}static setup(){return window.addEventListener(_S.move.name,e,{capture:!1,passive:!1}),function(){window.removeEventListener(_S.move.name,e)};function e(){}}}V1e.activators=[{eventName:"onTouchStart",handler:(t,e)=>{let{nativeEvent:n}=t,{onActivation:r}=e;const{touches:s}=n;return s.length>1?!1:(r?.({event:n}),!0)}}];var A0;(function(t){t[t.Pointer=0]="Pointer",t[t.DraggableRect=1]="DraggableRect"})(A0||(A0={}));var wy;(function(t){t[t.TreeOrder=0]="TreeOrder",t[t.ReversedTreeOrder=1]="ReversedTreeOrder"})(wy||(wy={}));function U1e(t){let{acceleration:e,activator:n=A0.Pointer,canScroll:r,draggingRect:s,enabled:i,interval:a=5,order:l=wy.TreeOrder,pointerCoordinates:c,scrollableAncestors:d,scrollableAncestorRects:h,delta:m,threshold:g}=t;const x=G1e({delta:m,disabled:!i}),[y,w]=s1e(),S=b.useRef({x:0,y:0}),k=b.useRef({x:0,y:0}),j=b.useMemo(()=>{switch(n){case A0.Pointer:return c?{top:c.y,bottom:c.y,left:c.x,right:c.x}:null;case A0.DraggableRect:return s}},[n,s,c]),N=b.useRef(null),T=b.useCallback(()=>{const _=N.current;if(!_)return;const A=S.current.x*k.current.x,D=S.current.y*k.current.y;_.scrollBy(A,D)},[]),E=b.useMemo(()=>l===wy.TreeOrder?[...d].reverse():d,[l,d]);b.useEffect(()=>{if(!i||!d.length||!j){w();return}for(const _ of E){if(r?.(_)===!1)continue;const A=d.indexOf(_),D=h[A];if(!D)continue;const{direction:q,speed:B}=R1e(_,D,j,e,g);for(const H of["x","y"])x[H][q[H]]||(B[H]=0,q[H]=0);if(B.x>0||B.y>0){w(),N.current=_,y(T,a),S.current=B,k.current=q;return}}S.current={x:0,y:0},k.current={x:0,y:0},w()},[e,T,r,w,i,a,JSON.stringify(j),JSON.stringify(x),y,d,E,h,JSON.stringify(g)])}const W1e={x:{[bs.Backward]:!1,[bs.Forward]:!1},y:{[bs.Backward]:!1,[bs.Forward]:!1}};function G1e(t){let{delta:e,disabled:n}=t;const r=NO(e);return fg(s=>{if(n||!r||!s)return W1e;const i={x:Math.sign(e.x-r.x),y:Math.sign(e.y-r.y)};return{x:{[bs.Backward]:s.x[bs.Backward]||i.x===-1,[bs.Forward]:s.x[bs.Forward]||i.x===1},y:{[bs.Backward]:s.y[bs.Backward]||i.y===-1,[bs.Forward]:s.y[bs.Forward]||i.y===1}}},[n,e,r])}function X1e(t,e){const n=e!=null?t.get(e):void 0,r=n?n.node.current:null;return fg(s=>{var i;return e==null?null:(i=r??s)!=null?i:null},[r,e])}function Y1e(t,e){return b.useMemo(()=>t.reduce((n,r)=>{const{sensor:s}=r,i=s.activators.map(a=>({eventName:a.eventName,handler:e(a.handler,r)}));return[...n,...i]},[]),[t,e])}var xp;(function(t){t[t.Always=0]="Always",t[t.BeforeDragging=1]="BeforeDragging",t[t.WhileDragging=2]="WhileDragging"})(xp||(xp={}));var _O;(function(t){t.Optimized="optimized"})(_O||(_O={}));const mM=new Map;function K1e(t,e){let{dragging:n,dependencies:r,config:s}=e;const[i,a]=b.useState(null),{frequency:l,measure:c,strategy:d}=s,h=b.useRef(t),m=S(),g=mp(m),x=b.useCallback(function(k){k===void 0&&(k=[]),!g.current&&a(j=>j===null?k:j.concat(k.filter(N=>!j.includes(N))))},[g]),y=b.useRef(null),w=fg(k=>{if(m&&!n)return mM;if(!k||k===mM||h.current!==t||i!=null){const j=new Map;for(let N of t){if(!N)continue;if(i&&i.length>0&&!i.includes(N.id)&&N.rect.current){j.set(N.id,N.rect.current);continue}const T=N.node.current,E=T?new oN(c(T),T):null;N.rect.current=E,E&&j.set(N.id,E)}return j}return k},[t,i,n,m,c]);return b.useEffect(()=>{h.current=t},[t]),b.useEffect(()=>{m||x()},[n,m]),b.useEffect(()=>{i&&i.length>0&&a(null)},[JSON.stringify(i)]),b.useEffect(()=>{m||typeof l!="number"||y.current!==null||(y.current=setTimeout(()=>{x(),y.current=null},l))},[l,m,x,...r]),{droppableRects:w,measureDroppableContainers:x,measuringScheduled:i!=null};function S(){switch(d){case xp.Always:return!1;case xp.BeforeDragging:return n;default:return!n}}}function zQ(t,e){return fg(n=>t?n||(typeof e=="function"?e(t):t):null,[e,t])}function Z1e(t,e){return zQ(t,e)}function J1e(t){let{callback:e,disabled:n}=t;const r=iN(e),s=b.useMemo(()=>{if(n||typeof window>"u"||typeof window.MutationObserver>"u")return;const{MutationObserver:i}=window;return new i(r)},[r,n]);return b.useEffect(()=>()=>s?.disconnect(),[s]),s}function Ib(t){let{callback:e,disabled:n}=t;const r=iN(e),s=b.useMemo(()=>{if(n||typeof window>"u"||typeof window.ResizeObserver>"u")return;const{ResizeObserver:i}=window;return new i(r)},[n]);return b.useEffect(()=>()=>s?.disconnect(),[s]),s}function eve(t){return new oN(Bf(t),t)}function pM(t,e,n){e===void 0&&(e=eve);const[r,s]=b.useState(null);function i(){s(c=>{if(!t)return null;if(t.isConnected===!1){var d;return(d=c??n)!=null?d:null}const h=e(t);return JSON.stringify(c)===JSON.stringify(h)?c:h})}const a=J1e({callback(c){if(t)for(const d of c){const{type:h,target:m}=d;if(h==="childList"&&m instanceof HTMLElement&&m.contains(t)){i();break}}}}),l=Ib({callback:i});return $o(()=>{i(),t?(l?.observe(t),a?.observe(document.body,{childList:!0,subtree:!0})):(l?.disconnect(),a?.disconnect())},[t]),r}function tve(t){const e=zQ(t);return TQ(t,e)}const gM=[];function nve(t){const e=b.useRef(t),n=fg(r=>t?r&&r!==gM&&t&&e.current&&t.parentNode===e.current.parentNode?r:zb(t):gM,[t]);return b.useEffect(()=>{e.current=t},[t]),n}function rve(t){const[e,n]=b.useState(null),r=b.useRef(t),s=b.useCallback(i=>{const a=TS(i.target);a&&n(l=>l?(l.set(a,TO(a)),new Map(l)):null)},[]);return b.useEffect(()=>{const i=r.current;if(t!==i){a(i);const l=t.map(c=>{const d=TS(c);return d?(d.addEventListener("scroll",s,{passive:!0}),[d,TO(d)]):null}).filter(c=>c!=null);n(l.length?new Map(l):null),r.current=t}return()=>{a(t),a(i)};function a(l){l.forEach(c=>{const d=TS(c);d?.removeEventListener("scroll",s)})}},[s,t]),b.useMemo(()=>t.length?e?Array.from(e.values()).reduce((i,a)=>qh(i,a),eo):DQ(t):eo,[t,e])}function xM(t,e){e===void 0&&(e=[]);const n=b.useRef(null);return b.useEffect(()=>{n.current=null},e),b.useEffect(()=>{const r=t!==eo;r&&!n.current&&(n.current=t),!r&&n.current&&(n.current=null)},[t]),n.current?pp(t,n.current):eo}function sve(t){b.useEffect(()=>{if(!Pb)return;const e=t.map(n=>{let{sensor:r}=n;return r.setup==null?void 0:r.setup()});return()=>{for(const n of e)n?.()}},t.map(e=>{let{sensor:n}=e;return n}))}function ive(t,e){return b.useMemo(()=>t.reduce((n,r)=>{let{eventName:s,handler:i}=r;return n[s]=a=>{i(a,e)},n},{}),[t,e])}function IQ(t){return b.useMemo(()=>t?E1e(t):null,[t])}const vM=[];function ave(t,e){e===void 0&&(e=Bf);const[n]=t,r=IQ(n?_i(n):null),[s,i]=b.useState(vM);function a(){i(()=>t.length?t.map(c=>MQ(c)?r:new oN(e(c),c)):vM)}const l=Ib({callback:a});return $o(()=>{l?.disconnect(),a(),t.forEach(c=>l?.observe(c))},[t]),s}function ove(t){if(!t)return null;if(t.children.length>1)return t;const e=t.children[0];return hg(e)?e:t}function lve(t){let{measure:e}=t;const[n,r]=b.useState(null),s=b.useCallback(d=>{for(const{target:h}of d)if(hg(h)){r(m=>{const g=e(h);return m?{...m,width:g.width,height:g.height}:g});break}},[e]),i=Ib({callback:s}),a=b.useCallback(d=>{const h=ove(d);i?.disconnect(),h&&i?.observe(h),r(h?e(h):null)},[e,i]),[l,c]=yy(a);return b.useMemo(()=>({nodeRef:l,rect:n,setRef:c}),[n,l,c])}const cve=[{sensor:uN,options:{}},{sensor:lN,options:{}}],uve={current:{}},Nv={draggable:{measure:uM},droppable:{measure:uM,strategy:xp.WhileDragging,frequency:_O.Optimized},dragOverlay:{measure:Bf}};class M0 extends Map{get(e){var n;return e!=null&&(n=super.get(e))!=null?n:void 0}toArray(){return Array.from(this.values())}getEnabled(){return this.toArray().filter(e=>{let{disabled:n}=e;return!n})}getNodeFor(e){var n,r;return(n=(r=this.get(e))==null?void 0:r.node.current)!=null?n:void 0}}const dve={activatorEvent:null,active:null,activeNode:null,activeNodeRect:null,collisions:null,containerNodeRect:null,draggableNodes:new Map,droppableRects:new Map,droppableContainers:new M0,over:null,dragOverlay:{nodeRef:{current:null},rect:null,setRef:by},scrollableAncestors:[],scrollableAncestorRects:[],measuringConfiguration:Nv,measureDroppableContainers:by,windowRect:null,measuringScheduled:!1},hve={activatorEvent:null,activators:[],active:null,activeNodeRect:null,ariaDescribedById:{draggable:""},dispatch:by,draggableNodes:new Map,over:null,measureDroppableContainers:by},Lb=b.createContext(hve),LQ=b.createContext(dve);function fve(){return{draggable:{active:null,initialCoordinates:{x:0,y:0},nodes:new Map,translate:{x:0,y:0}},droppable:{containers:new M0}}}function mve(t,e){switch(e.type){case ds.DragStart:return{...t,draggable:{...t.draggable,initialCoordinates:e.initialCoordinates,active:e.active}};case ds.DragMove:return t.draggable.active==null?t:{...t,draggable:{...t.draggable,translate:{x:e.coordinates.x-t.draggable.initialCoordinates.x,y:e.coordinates.y-t.draggable.initialCoordinates.y}}};case ds.DragEnd:case ds.DragCancel:return{...t,draggable:{...t.draggable,active:null,initialCoordinates:{x:0,y:0},translate:{x:0,y:0}}};case ds.RegisterDroppable:{const{element:n}=e,{id:r}=n,s=new M0(t.droppable.containers);return s.set(r,n),{...t,droppable:{...t.droppable,containers:s}}}case ds.SetDroppableDisabled:{const{id:n,key:r,disabled:s}=e,i=t.droppable.containers.get(n);if(!i||r!==i.key)return t;const a=new M0(t.droppable.containers);return a.set(n,{...i,disabled:s}),{...t,droppable:{...t.droppable,containers:a}}}case ds.UnregisterDroppable:{const{id:n,key:r}=e,s=t.droppable.containers.get(n);if(!s||r!==s.key)return t;const i=new M0(t.droppable.containers);return i.delete(n),{...t,droppable:{...t.droppable,containers:i}}}default:return t}}function pve(t){let{disabled:e}=t;const{active:n,activatorEvent:r,draggableNodes:s}=b.useContext(Lb),i=NO(r),a=NO(n?.id);return b.useEffect(()=>{if(!e&&!r&&i&&a!=null){if(!aN(i)||document.activeElement===i.target)return;const l=s.get(a);if(!l)return;const{activatorNode:c,node:d}=l;if(!c.current&&!d.current)return;requestAnimationFrame(()=>{for(const h of[c.current,d.current]){if(!h)continue;const m=o1e(h);if(m){m.focus();break}}})}},[r,e,s,a,i]),null}function gve(t,e){let{transform:n,...r}=e;return t!=null&&t.length?t.reduce((s,i)=>i({transform:s,...r}),n):n}function xve(t){return b.useMemo(()=>({draggable:{...Nv.draggable,...t?.draggable},droppable:{...Nv.droppable,...t?.droppable},dragOverlay:{...Nv.dragOverlay,...t?.dragOverlay}}),[t?.draggable,t?.droppable,t?.dragOverlay])}function vve(t){let{activeNode:e,measure:n,initialRect:r,config:s=!0}=t;const i=b.useRef(!1),{x:a,y:l}=typeof s=="boolean"?{x:s,y:s}:s;$o(()=>{if(!a&&!l||!e){i.current=!1;return}if(i.current||!r)return;const d=e?.node.current;if(!d||d.isConnected===!1)return;const h=n(d),m=TQ(h,r);if(a||(m.x=0),l||(m.y=0),i.current=!0,Math.abs(m.x)>0||Math.abs(m.y)>0){const g=EQ(d);g&&g.scrollBy({top:m.y,left:m.x})}},[e,a,l,r,n])}const BQ=b.createContext({...eo,scaleX:1,scaleY:1});var Ic;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.Initializing=1]="Initializing",t[t.Initialized=2]="Initialized"})(Ic||(Ic={}));const yve=b.memo(function(e){var n,r,s,i;let{id:a,accessibility:l,autoScroll:c=!0,children:d,sensors:h=cve,collisionDetection:m=S1e,measuring:g,modifiers:x,...y}=e;const w=b.useReducer(mve,void 0,fve),[S,k]=w,[j,N]=f1e(),[T,E]=b.useState(Ic.Uninitialized),_=T===Ic.Initialized,{draggable:{active:A,nodes:D,translate:q},droppable:{containers:B}}=S,H=A!=null?D.get(A):null,W=b.useRef({initial:null,translated:null}),ee=b.useMemo(()=>{var Gt;return A!=null?{id:A,data:(Gt=H?.data)!=null?Gt:uve,rect:W}:null},[A,H]),I=b.useRef(null),[V,L]=b.useState(null),[$,K]=b.useState(null),Y=mp(y,Object.values(y)),R=mg("DndDescribedBy",a),ie=b.useMemo(()=>B.getEnabled(),[B]),X=xve(g),{droppableRects:z,measureDroppableContainers:U,measuringScheduled:te}=K1e(ie,{dragging:_,dependencies:[q.x,q.y],config:X.droppable}),ne=X1e(D,A),G=b.useMemo(()=>$?CO($):null,[$]),se=Wt(),re=Z1e(ne,X.draggable.measure);vve({activeNode:A!=null?D.get(A):null,config:se.layoutShiftCompensation,initialRect:re,measure:X.draggable.measure});const ae=pM(ne,X.draggable.measure,re),_e=pM(ne?ne.parentElement:null),Be=b.useRef({activatorEvent:null,active:null,activeNode:ne,collisionRect:null,collisions:null,droppableRects:z,draggableNodes:D,draggingNode:null,draggingNodeRect:null,droppableContainers:B,over:null,scrollableAncestors:[],scrollAdjustedTranslate:null}),Ye=B.getNodeFor((n=Be.current.over)==null?void 0:n.id),Je=lve({measure:X.dragOverlay.measure}),Oe=(r=Je.nodeRef.current)!=null?r:ne,Ve=_?(s=Je.rect)!=null?s:ae:null,Ue=!!(Je.nodeRef.current&&Je.rect),$e=tve(Ue?null:ae),jt=IQ(Oe?_i(Oe):null),vt=nve(_?Ye??ne:null),$n=ave(vt),qt=gve(x,{transform:{x:q.x-$e.x,y:q.y-$e.y,scaleX:1,scaleY:1},activatorEvent:$,active:ee,activeNodeRect:ae,containerNodeRect:_e,draggingNodeRect:Ve,over:Be.current.over,overlayNodeRect:Je.rect,scrollableAncestors:vt,scrollableAncestorRects:$n,windowRect:jt}),un=G?qh(G,q):null,Mt=rve(vt),ct=xM(Mt),Ne=xM(Mt,[ae]),ze=qh(qt,ct),rt=Ve?j1e(Ve,qt):null,bt=ee&&rt?m({active:ee,collisionRect:rt,droppableRects:z,droppableContainers:ie,pointerCoordinates:un}):null,zt=CQ(bt,"id"),[Rt,Hn]=b.useState(null),We=Ue?qt:qh(qt,Ne),ot=k1e(We,(i=Rt?.rect)!=null?i:null,ae),dn=b.useRef(null),Pt=b.useCallback((Gt,lt)=>{let{sensor:ve,options:He}=lt;if(I.current==null)return;const ht=D.get(I.current);if(!ht)return;const vn=Gt.nativeEvent,Qn=new ve({active:I.current,activeNode:ht,event:vn,options:He,context:Be,onAbort(ar){if(!D.get(ar))return;const{onDragAbort:vs}=Y.current,js={id:ar};vs?.(js),j({type:"onDragAbort",event:js})},onPending(ar,xs,vs,js){if(!D.get(ar))return;const{onDragPending:Ie}=Y.current,Et={id:ar,constraint:xs,initialCoordinates:vs,offset:js};Ie?.(Et),j({type:"onDragPending",event:Et})},onStart(ar){const xs=I.current;if(xs==null)return;const vs=D.get(xs);if(!vs)return;const{onDragStart:js}=Y.current,ge={activatorEvent:vn,active:{id:xs,data:vs.data,rect:W}};ya.unstable_batchedUpdates(()=>{js?.(ge),E(Ic.Initializing),k({type:ds.DragStart,initialCoordinates:ar,active:xs}),j({type:"onDragStart",event:ge}),L(dn.current),K(vn)})},onMove(ar){k({type:ds.DragMove,coordinates:ar})},onEnd:fr(ds.DragEnd),onCancel:fr(ds.DragCancel)});dn.current=Qn;function fr(ar){return async function(){const{active:vs,collisions:js,over:ge,scrollAdjustedTranslate:Ie}=Be.current;let Et=null;if(vs&&Ie){const{cancelDrop:kn}=Y.current;Et={activatorEvent:vn,active:vs,collisions:js,delta:Ie,over:ge},ar===ds.DragEnd&&typeof kn=="function"&&await Promise.resolve(kn(Et))&&(ar=ds.DragCancel)}I.current=null,ya.unstable_batchedUpdates(()=>{k({type:ar}),E(Ic.Uninitialized),Hn(null),L(null),K(null),dn.current=null;const kn=ar===ds.DragEnd?"onDragEnd":"onDragCancel";if(Et){const Hr=Y.current[kn];Hr?.(Et),j({type:kn,event:Et})}})}}},[D]),xn=b.useCallback((Gt,lt)=>(ve,He)=>{const ht=ve.nativeEvent,vn=D.get(He);if(I.current!==null||!vn||ht.dndKit||ht.defaultPrevented)return;const Qn={active:vn};Gt(ve,lt.options,Qn)===!0&&(ht.dndKit={capturedBy:lt.sensor},I.current=He,Pt(ve,lt))},[D,Pt]),dt=Y1e(h,xn);sve(h),$o(()=>{ae&&T===Ic.Initializing&&E(Ic.Initialized)},[ae,T]),b.useEffect(()=>{const{onDragMove:Gt}=Y.current,{active:lt,activatorEvent:ve,collisions:He,over:ht}=Be.current;if(!lt||!ve)return;const vn={active:lt,activatorEvent:ve,collisions:He,delta:{x:ze.x,y:ze.y},over:ht};ya.unstable_batchedUpdates(()=>{Gt?.(vn),j({type:"onDragMove",event:vn})})},[ze.x,ze.y]),b.useEffect(()=>{const{active:Gt,activatorEvent:lt,collisions:ve,droppableContainers:He,scrollAdjustedTranslate:ht}=Be.current;if(!Gt||I.current==null||!lt||!ht)return;const{onDragOver:vn}=Y.current,Qn=He.get(zt),fr=Qn&&Qn.rect.current?{id:Qn.id,rect:Qn.rect.current,data:Qn.data,disabled:Qn.disabled}:null,ar={active:Gt,activatorEvent:lt,collisions:ve,delta:{x:ht.x,y:ht.y},over:fr};ya.unstable_batchedUpdates(()=>{Hn(fr),vn?.(ar),j({type:"onDragOver",event:ar})})},[zt]),$o(()=>{Be.current={activatorEvent:$,active:ee,activeNode:ne,collisionRect:rt,collisions:bt,droppableRects:z,draggableNodes:D,draggingNode:Oe,draggingNodeRect:Ve,droppableContainers:B,over:Rt,scrollableAncestors:vt,scrollAdjustedTranslate:ze},W.current={initial:Ve,translated:rt}},[ee,ne,bt,rt,D,Oe,Ve,z,B,Rt,vt,ze]),U1e({...se,delta:q,draggingRect:rt,pointerCoordinates:un,scrollableAncestors:vt,scrollableAncestorRects:$n});const rn=b.useMemo(()=>({active:ee,activeNode:ne,activeNodeRect:ae,activatorEvent:$,collisions:bt,containerNodeRect:_e,dragOverlay:Je,draggableNodes:D,droppableContainers:B,droppableRects:z,over:Rt,measureDroppableContainers:U,scrollableAncestors:vt,scrollableAncestorRects:$n,measuringConfiguration:X,measuringScheduled:te,windowRect:jt}),[ee,ne,ae,$,bt,_e,Je,D,B,z,Rt,U,vt,$n,X,te,jt]),wt=b.useMemo(()=>({activatorEvent:$,activators:dt,active:ee,activeNodeRect:ae,ariaDescribedById:{draggable:R},dispatch:k,draggableNodes:D,over:Rt,measureDroppableContainers:U}),[$,dt,ee,ae,k,R,D,Rt,U]);return oe.createElement(OQ.Provider,{value:N},oe.createElement(Lb.Provider,{value:wt},oe.createElement(LQ.Provider,{value:rn},oe.createElement(BQ.Provider,{value:ot},d)),oe.createElement(pve,{disabled:l?.restoreFocus===!1})),oe.createElement(g1e,{...l,hiddenTextDescribedById:R}));function Wt(){const Gt=V?.autoScrollEnabled===!1,lt=typeof c=="object"?c.enabled===!1:c===!1,ve=_&&!Gt&&!lt;return typeof c=="object"?{...c,enabled:ve}:{enabled:ve}}}),bve=b.createContext(null),yM="button",wve="Draggable";function Sve(t){let{id:e,data:n,disabled:r=!1,attributes:s}=t;const i=mg(wve),{activators:a,activatorEvent:l,active:c,activeNodeRect:d,ariaDescribedById:h,draggableNodes:m,over:g}=b.useContext(Lb),{role:x=yM,roleDescription:y="draggable",tabIndex:w=0}=s??{},S=c?.id===e,k=b.useContext(S?BQ:bve),[j,N]=yy(),[T,E]=yy(),_=ive(a,e),A=mp(n);$o(()=>(m.set(e,{id:e,key:i,node:j,activatorNode:T,data:A}),()=>{const q=m.get(e);q&&q.key===i&&m.delete(e)}),[m,e]);const D=b.useMemo(()=>({role:x,tabIndex:w,"aria-disabled":r,"aria-pressed":S&&x===yM?!0:void 0,"aria-roledescription":y,"aria-describedby":h.draggable}),[r,x,w,S,y,h.draggable]);return{active:c,activatorEvent:l,activeNodeRect:d,attributes:D,isDragging:S,listeners:r?void 0:_,node:j,over:g,setNodeRef:N,setActivatorNodeRef:E,transform:k}}function kve(){return b.useContext(LQ)}const Ove="Droppable",jve={timeout:25};function Nve(t){let{data:e,disabled:n=!1,id:r,resizeObserverConfig:s}=t;const i=mg(Ove),{active:a,dispatch:l,over:c,measureDroppableContainers:d}=b.useContext(Lb),h=b.useRef({disabled:n}),m=b.useRef(!1),g=b.useRef(null),x=b.useRef(null),{disabled:y,updateMeasurementsFor:w,timeout:S}={...jve,...s},k=mp(w??r),j=b.useCallback(()=>{if(!m.current){m.current=!0;return}x.current!=null&&clearTimeout(x.current),x.current=setTimeout(()=>{d(Array.isArray(k.current)?k.current:[k.current]),x.current=null},S)},[S]),N=Ib({callback:j,disabled:y||!a}),T=b.useCallback((D,q)=>{N&&(q&&(N.unobserve(q),m.current=!1),D&&N.observe(D))},[N]),[E,_]=yy(T),A=mp(e);return b.useEffect(()=>{!N||!E.current||(N.disconnect(),m.current=!1,N.observe(E.current))},[E,N]),b.useEffect(()=>(l({type:ds.RegisterDroppable,element:{id:r,key:i,disabled:n,node:E,rect:g,data:A}}),()=>l({type:ds.UnregisterDroppable,key:i,id:r})),[r]),b.useEffect(()=>{n!==h.current.disabled&&(l({type:ds.SetDroppableDisabled,id:r,key:i,disabled:n}),h.current.disabled=n)},[r,i,n,l]),{active:a,rect:g,isOver:c?.id===r,node:E,over:c,setNodeRef:_}}function dN(t,e,n){const r=t.slice();return r.splice(n<0?r.length+n:n,0,r.splice(e,1)[0]),r}function Cve(t,e){return t.reduce((n,r,s)=>{const i=e.get(r);return i&&(n[s]=i),n},Array(t.length))}function _1(t){return t!==null&&t>=0}function Tve(t,e){if(t===e)return!0;if(t.length!==e.length)return!1;for(let n=0;n{var e;let{rects:n,activeNodeRect:r,activeIndex:s,overIndex:i,index:a}=t;const l=(e=n[s])!=null?e:r;if(!l)return null;const c=Ave(n,a,s);if(a===s){const d=n[i];return d?{x:ss&&a<=i?{x:-l.width-c,y:0,...A1}:a=i?{x:l.width+c,y:0,...A1}:{x:0,y:0,...A1}};function Ave(t,e,n){const r=t[e],s=t[e-1],i=t[e+1];return!r||!s&&!i?0:n{let{rects:e,activeIndex:n,overIndex:r,index:s}=t;const i=dN(e,r,n),a=e[s],l=i[s];return!l||!a?null:{x:l.left-a.left,y:l.top-a.top,scaleX:l.width/a.width,scaleY:l.height/a.height}},qQ="Sortable",$Q=oe.createContext({activeIndex:-1,containerId:qQ,disableTransforms:!1,items:[],overIndex:-1,useDragOverlay:!1,sortedRects:[],strategy:FQ,disabled:{draggable:!1,droppable:!1}});function Mve(t){let{children:e,id:n,items:r,strategy:s=FQ,disabled:i=!1}=t;const{active:a,dragOverlay:l,droppableRects:c,over:d,measureDroppableContainers:h}=kve(),m=mg(qQ,n),g=l.rect!==null,x=b.useMemo(()=>r.map(_=>typeof _=="object"&&"id"in _?_.id:_),[r]),y=a!=null,w=a?x.indexOf(a.id):-1,S=d?x.indexOf(d.id):-1,k=b.useRef(x),j=!Tve(x,k.current),N=S!==-1&&w===-1||j,T=Eve(i);$o(()=>{j&&y&&h(x)},[j,x,y,h]),b.useEffect(()=>{k.current=x},[x]);const E=b.useMemo(()=>({activeIndex:w,containerId:m,disabled:T,disableTransforms:N,items:x,overIndex:S,useDragOverlay:g,sortedRects:Cve(x,c),strategy:s}),[w,m,T.draggable,T.droppable,N,x,S,c,g,s]);return oe.createElement($Q.Provider,{value:E},e)}const Rve=t=>{let{id:e,items:n,activeIndex:r,overIndex:s}=t;return dN(n,r,s).indexOf(e)},Dve=t=>{let{containerId:e,isSorting:n,wasDragging:r,index:s,items:i,newIndex:a,previousItems:l,previousContainerId:c,transition:d}=t;return!d||!r||l!==i&&s===a?!1:n?!0:a!==s&&e===c},Pve={duration:200,easing:"ease"},HQ="transform",zve=gp.Transition.toString({property:HQ,duration:0,easing:"linear"}),Ive={roleDescription:"sortable"};function Lve(t){let{disabled:e,index:n,node:r,rect:s}=t;const[i,a]=b.useState(null),l=b.useRef(n);return $o(()=>{if(!e&&n!==l.current&&r.current){const c=s.current;if(c){const d=Bf(r.current,{ignoreTransform:!0}),h={x:c.left-d.left,y:c.top-d.top,scaleX:c.width/d.width,scaleY:c.height/d.height};(h.x||h.y)&&a(h)}}n!==l.current&&(l.current=n)},[e,n,r,s]),b.useEffect(()=>{i&&a(null)},[i]),i}function Bve(t){let{animateLayoutChanges:e=Dve,attributes:n,disabled:r,data:s,getNewIndex:i=Rve,id:a,strategy:l,resizeObserverConfig:c,transition:d=Pve}=t;const{items:h,containerId:m,activeIndex:g,disabled:x,disableTransforms:y,sortedRects:w,overIndex:S,useDragOverlay:k,strategy:j}=b.useContext($Q),N=Fve(r,x),T=h.indexOf(a),E=b.useMemo(()=>({sortable:{containerId:m,index:T,items:h},...s}),[m,s,T,h]),_=b.useMemo(()=>h.slice(h.indexOf(a)),[h,a]),{rect:A,node:D,isOver:q,setNodeRef:B}=Nve({id:a,data:E,disabled:N.droppable,resizeObserverConfig:{updateMeasurementsFor:_,...c}}),{active:H,activatorEvent:W,activeNodeRect:ee,attributes:I,setNodeRef:V,listeners:L,isDragging:$,over:K,setActivatorNodeRef:Y,transform:R}=Sve({id:a,data:E,attributes:{...Ive,...n},disabled:N.draggable}),ie=r1e(B,V),X=!!H,z=X&&!y&&_1(g)&&_1(S),U=!k&&$,te=U&&z?R:null,G=z?te??(l??j)({rects:w,activeNodeRect:ee,activeIndex:g,overIndex:S,index:T}):null,se=_1(g)&&_1(S)?i({id:a,items:h,activeIndex:g,overIndex:S}):T,re=H?.id,ae=b.useRef({activeId:re,items:h,newIndex:se,containerId:m}),_e=h!==ae.current.items,Be=e({active:H,containerId:m,isDragging:$,isSorting:X,id:a,index:T,items:h,newIndex:ae.current.newIndex,previousItems:ae.current.items,previousContainerId:ae.current.containerId,transition:d,wasDragging:ae.current.activeId!=null}),Ye=Lve({disabled:!Be,index:T,node:D,rect:A});return b.useEffect(()=>{X&&ae.current.newIndex!==se&&(ae.current.newIndex=se),m!==ae.current.containerId&&(ae.current.containerId=m),h!==ae.current.items&&(ae.current.items=h)},[X,se,m,h]),b.useEffect(()=>{if(re===ae.current.activeId)return;if(re!=null&&ae.current.activeId==null){ae.current.activeId=re;return}const Oe=setTimeout(()=>{ae.current.activeId=re},50);return()=>clearTimeout(Oe)},[re]),{active:H,activeIndex:g,attributes:I,data:E,rect:A,index:T,newIndex:se,items:h,isOver:q,isSorting:X,isDragging:$,listeners:L,node:D,overIndex:S,over:K,setNodeRef:ie,setActivatorNodeRef:Y,setDroppableNodeRef:B,setDraggableNodeRef:V,transform:Ye??G,transition:Je()};function Je(){if(Ye||_e&&ae.current.newIndex===T)return zve;if(!(U&&!aN(W)||!d)&&(X||Be))return gp.Transition.toString({...d,property:HQ})}}function Fve(t,e){var n,r;return typeof t=="boolean"?{draggable:t,droppable:!1}:{draggable:(n=t?.draggable)!=null?n:e.draggable,droppable:(r=t?.droppable)!=null?r:e.droppable}}function Sy(t){if(!t)return!1;const e=t.data.current;return!!(e&&"sortable"in e&&typeof e.sortable=="object"&&"containerId"in e.sortable&&"items"in e.sortable&&"index"in e.sortable)}const qve=[jn.Down,jn.Right,jn.Up,jn.Left],$ve=(t,e)=>{let{context:{active:n,collisionRect:r,droppableRects:s,droppableContainers:i,over:a,scrollableAncestors:l}}=e;if(qve.includes(t.code)){if(t.preventDefault(),!n||!r)return;const c=[];i.getEnabled().forEach(m=>{if(!m||m!=null&&m.disabled)return;const g=s.get(m.id);if(g)switch(t.code){case jn.Down:r.topg.top&&c.push(m);break;case jn.Left:r.left>g.left&&c.push(m);break;case jn.Right:r.left1&&(h=d[1].id),h!=null){const m=i.get(n.id),g=i.get(h),x=g?s.get(g.id):null,y=g?.node.current;if(y&&x&&m&&g){const S=zb(y).some((_,A)=>l[A]!==_),k=QQ(m,g),j=Hve(m,g),N=S||!k?{x:0,y:0}:{x:j?r.width-x.width:0,y:j?r.height-x.height:0},T={x:x.left,y:x.top};return N.x&&N.y?T:pp(T,N)}}}};function QQ(t,e){return!Sy(t)||!Sy(e)?!1:t.data.current.sortable.containerId===e.data.current.sortable.containerId}function Hve(t,e){return!Sy(t)||!Sy(e)||!QQ(t,e)?!1:t.data.current.sortable.index{h.stopPropagation(),n(t)}})]})})}function Vve({options:t,selected:e,onChange:n,placeholder:r="选择选项...",emptyText:s="未找到选项",className:i}){const[a,l]=b.useState(!1),c=x1e(oM(uN,{activationConstraint:{distance:8}}),oM(lN,{coordinateGetter:$ve})),d=g=>{e.includes(g)?n(e.filter(x=>x!==g)):n([...e,g])},h=g=>{n(e.filter(x=>x!==g))},m=g=>{const{active:x,over:y}=g;if(y&&x.id!==y.id){const w=e.indexOf(x.id),S=e.indexOf(y.id);n(dN(e,w,S))}};return o.jsxs(Bo,{open:a,onOpenChange:l,children:[o.jsx(Fo,{asChild:!0,children:o.jsxs(ue,{variant:"outline",role:"combobox","aria-expanded":a,className:xe("w-full justify-between min-h-10 h-auto",i),children:[o.jsx(yve,{sensors:c,collisionDetection:y1e,onDragEnd:m,children:o.jsx(Mve,{items:e,strategy:_ve,children:o.jsx("div",{className:"flex gap-1 flex-wrap flex-1",children:e.length===0?o.jsx("span",{className:"text-muted-foreground",children:r}):e.map(g=>{const x=t.find(y=>y.value===g);return o.jsx(Qve,{value:g,label:x?.label||g,onRemove:h},g)})})})}),o.jsx(Lj,{className:"ml-2 h-4 w-4 shrink-0 opacity-50",strokeWidth:2,fill:"none"})]})}),o.jsx(Ka,{className:"w-full p-0",align:"start",children:o.jsxs(Tb,{children:[o.jsx(Eb,{placeholder:"搜索...",className:"h-9"}),o.jsxs(_b,{children:[o.jsx(Ab,{children:s}),o.jsx(up,{children:t.map(g=>{const x=e.includes(g.value);return o.jsxs(dp,{value:g.value,onSelect:()=>d(g.value),children:[o.jsx("div",{className:xe("mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary",x?"bg-primary text-primary-foreground":"opacity-50 [&_svg]:invisible"),children:o.jsx(zo,{className:"h-3 w-3",strokeWidth:2,fill:"none"})}),o.jsx("span",{children:g.label})]},g.value)})})]})]})})]})}const bM=new Map,Uve=300*1e3;function Wve(){const[t,e]=b.useState([]),[n,r]=b.useState([]),[s,i]=b.useState([]),[a,l]=b.useState([]),[c,d]=b.useState(null),[h,m]=b.useState(!0),[g,x]=b.useState(!1),[y,w]=b.useState(!1),[S,k]=b.useState(!1),[j,N]=b.useState(!1),[T,E]=b.useState(!1),[_,A]=b.useState(!1),[D,q]=b.useState(null),[B,H]=b.useState(null),[W,ee]=b.useState(!1),[I,V]=b.useState(null),[L,$]=b.useState(""),[K,Y]=b.useState(new Set),[R,ie]=b.useState(!1),[X,z]=b.useState(1),[U,te]=b.useState(20),[ne,G]=b.useState(""),[se,re]=b.useState([]),[ae,_e]=b.useState(!1),[Be,Ye]=b.useState(null),[Je,Oe]=b.useState(!1),[Ve,Ue]=b.useState(null),{toast:$e}=Lr(),jt=na(),{registerTour:vt,startTour:$n,state:qt,goToStep:un}=nN(),Mt=b.useRef(null),ct=b.useRef(null),Ne=b.useRef(!0);b.useEffect(()=>{vt(Rl,bQ)},[vt]),b.useEffect(()=>{if(qt.activeTourId===Rl&&qt.isRunning){const ge=wQ[qt.stepIndex];ge&&!window.location.pathname.endsWith(ge.replace("/config/",""))&&jt({to:ge})}},[qt.stepIndex,qt.activeTourId,qt.isRunning,jt]);const ze=b.useRef(qt.stepIndex);b.useEffect(()=>{if(qt.activeTourId===Rl&&qt.isRunning){const ge=ze.current,Ie=qt.stepIndex;ge>=12&&ge<=17&&Ie<12&&A(!1),ze.current=Ie}},[qt.stepIndex,qt.activeTourId,qt.isRunning]),b.useEffect(()=>{if(qt.activeTourId!==Rl||!qt.isRunning)return;const ge=Ie=>{const Et=Ie.target,kn=qt.stepIndex;kn===2&&Et.closest('[data-tour="add-provider-button"]')?setTimeout(()=>un(3),300):kn===9&&Et.closest('[data-tour="provider-cancel-button"]')?setTimeout(()=>un(10),300):kn===11&&Et.closest('[data-tour="add-model-button"]')?setTimeout(()=>un(12),300):kn===17&&Et.closest('[data-tour="model-cancel-button"]')?setTimeout(()=>un(18),300):kn===18&&Et.closest('[data-tour="tasks-tab-trigger"]')&&setTimeout(()=>un(19),300)};return document.addEventListener("click",ge,!0),()=>document.removeEventListener("click",ge,!0)},[qt,un]);const rt=()=>{$n(Rl)};b.useEffect(()=>{bt()},[]);const bt=async()=>{try{m(!0);const ge=await Dh(),Ie=ge.models||[];e(Ie),l(Ie.map(kn=>kn.name));const Et=ge.api_providers||[];r(Et.map(kn=>kn.name)),i(Et),d(ge.model_task_config||null),k(!1),Ne.current=!1}catch(ge){console.error("加载配置失败:",ge)}finally{m(!1)}},zt=b.useCallback(ge=>s.find(Ie=>Ie.name===ge),[s]),Rt=b.useCallback(async(ge,Ie=!1)=>{const Et=zt(ge);if(!Et?.base_url){re([]),Ue(null),Ye('提供商配置不完整,请先在"模型提供商配置"中配置');return}if(!Et.api_key){re([]),Ue(null),Ye('该提供商未配置 API Key,请先在"模型提供商配置"中填写');return}const kn=t1e(Et.base_url);if(Ue(kn),!kn?.modelFetcher){re([]),Ye(null);return}const Hr=`${ge}:${Et.base_url}`,Mr=bM.get(Hr);if(!Ie&&Mr&&Date.now()-Mr.timestamp{_&&D?.api_provider&&Rt(D.api_provider)},[_,D?.api_provider,Rt]);const Hn=async()=>{try{N(!0),cb().catch(()=>{}),E(!0)}catch(ge){console.error("重启失败:",ge),E(!1),$e({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),N(!1)}},We=async()=>{try{x(!0),Mt.current&&clearTimeout(Mt.current),ct.current&&clearTimeout(ct.current);const ge=await Dh();ge.models=t,ge.model_task_config=c,await Uv(ge),k(!1),$e({title:"保存成功",description:"正在重启麦麦..."}),await Hn()}catch(ge){console.error("保存配置失败:",ge),$e({title:"保存失败",description:ge.message,variant:"destructive"}),x(!1)}},ot=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},dn=()=>{E(!1),N(!1),$e({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},Pt=b.useCallback(async ge=>{if(!Ne.current)try{w(!0),await bk("models",ge),k(!1)}catch(Ie){console.error("自动保存模型列表失败:",Ie),k(!0)}finally{w(!1)}},[]),xn=b.useCallback(async ge=>{if(!Ne.current)try{w(!0),await bk("model_task_config",ge),k(!1)}catch(Ie){console.error("自动保存任务配置失败:",Ie),k(!0)}finally{w(!1)}},[]);b.useEffect(()=>{if(!Ne.current)return k(!0),Mt.current&&clearTimeout(Mt.current),Mt.current=setTimeout(()=>{Pt(t)},2e3),()=>{Mt.current&&clearTimeout(Mt.current)}},[t,Pt]),b.useEffect(()=>{if(!(Ne.current||!c))return k(!0),ct.current&&clearTimeout(ct.current),ct.current=setTimeout(()=>{xn(c)},2e3),()=>{ct.current&&clearTimeout(ct.current)}},[c,xn]);const dt=async()=>{try{x(!0),Mt.current&&clearTimeout(Mt.current),ct.current&&clearTimeout(ct.current);const ge=await Dh();ge.models=t,ge.model_task_config=c,await Uv(ge),k(!1),$e({title:"保存成功",description:"模型配置已保存"}),await bt()}catch(ge){console.error("保存配置失败:",ge),$e({title:"保存失败",description:ge.message,variant:"destructive"})}finally{x(!1)}},rn=(ge,Ie)=>{q(ge||{model_identifier:"",name:"",api_provider:n[0]||"",price_in:0,price_out:0,force_stream_mode:!1,extra_params:{}}),H(Ie),A(!0)},wt=()=>{if(!D)return;const ge={...D,price_in:D.price_in??0,price_out:D.price_out??0};let Ie;B!==null?(Ie=[...t],Ie[B]=ge):Ie=[...t,ge],e(Ie),l(Ie.map(Et=>Et.name)),A(!1),q(null),H(null)},Wt=ge=>{if(!ge&&D){const Ie={...D,price_in:D.price_in??0,price_out:D.price_out??0};q(Ie)}A(ge)},Gt=ge=>{V(ge),ee(!0)},lt=()=>{if(I!==null){const ge=t.filter((Ie,Et)=>Et!==I);e(ge),l(ge.map(Ie=>Ie.name)),$e({title:"删除成功",description:"模型已从列表中移除"})}ee(!1),V(null)},ve=ge=>{const Ie=new Set(K);Ie.has(ge)?Ie.delete(ge):Ie.add(ge),Y(Ie)},He=()=>{if(K.size===fr.length)Y(new Set);else{const ge=fr.map((Ie,Et)=>t.findIndex(kn=>kn===fr[Et]));Y(new Set(ge))}},ht=()=>{if(K.size===0){$e({title:"提示",description:"请先选择要删除的模型",variant:"default"});return}ie(!0)},vn=()=>{const ge=t.filter((Ie,Et)=>!K.has(Et));e(ge),l(ge.map(Ie=>Ie.name)),Y(new Set),ie(!1),$e({title:"批量删除成功",description:`已删除 ${K.size} 个模型`})},Qn=(ge,Ie,Et)=>{c&&d({...c,[ge]:{...c[ge],[Ie]:Et}})},fr=t.filter(ge=>{if(!L)return!0;const Ie=L.toLowerCase();return ge.name.toLowerCase().includes(Ie)||ge.model_identifier.toLowerCase().includes(Ie)||ge.api_provider.toLowerCase().includes(Ie)}),ar=Math.ceil(fr.length/U),xs=fr.slice((X-1)*U,X*U),vs=()=>{const ge=parseInt(ne);ge>=1&&ge<=ar&&(z(ge),G(""))},js=ge=>c?[c.utils?.model_list||[],c.utils_small?.model_list||[],c.tool_use?.model_list||[],c.replyer?.model_list||[],c.planner?.model_list||[],c.vlm?.model_list||[],c.voice?.model_list||[],c.embedding?.model_list||[],c.lpmm_entity_extract?.model_list||[],c.lpmm_rdf_build?.model_list||[],c.lpmm_qa?.model_list||[]].some(Et=>Et.includes(ge)):!1;return h?o.jsx(pn,{className:"h-full",children:o.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:o.jsx("div",{className:"flex items-center justify-center h-64",children:o.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):o.jsx(pn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"模型管理与分配"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"添加模型并为模型分配功能"})]}),o.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[o.jsxs(ue,{onClick:dt,disabled:g||y||!S||j,size:"sm",variant:"outline",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[o.jsx(zp,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),g?"保存中...":y?"自动保存中...":S?"保存配置":"已保存"]}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsxs(ue,{disabled:g||y||j,size:"sm",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[o.jsx(Dp,{className:"mr-2 h-4 w-4"}),j?"重启中...":S?"保存并重启":"重启麦麦"]})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认重启麦麦?"}),o.jsx(zn,{className:"space-y-3",asChild:!0,children:o.jsxs("div",{children:[o.jsx("p",{children:S?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),o.jsxs(ba,{className:"border-yellow-500/50 bg-yellow-500/10",children:[o.jsx(Xi,{className:"h-4 w-4 text-yellow-600"}),o.jsxs(wa,{className:"text-yellow-900 dark:text-yellow-100",children:[o.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",o.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",o.jsxs(Er,{children:[o.jsx(Of,{asChild:!0,children:o.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[o.jsx(Zy,{className:"h-3 w-3"}),"如何结束程序?"]})}),o.jsxs(wr,{className:"max-w-2xl",children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"如何结束使用重启功能后的麦麦程序"}),o.jsx(Xr,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),o.jsxs(Yi,{defaultValue:"windows",className:"w-full",children:[o.jsxs(ji,{className:"grid w-full grid-cols-3",children:[o.jsx(Bt,{value:"windows",children:"Windows"}),o.jsx(Bt,{value:"macos",children:"macOS"}),o.jsx(Bt,{value:"linux",children:"Linux"})]}),o.jsxs(ln,{value:"windows",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),o.jsxs("li",{children:['在"进程"或"详细信息"标签页中找到 ',o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),o.jsx("li",{children:'右键点击并选择"结束任务"'})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),o.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),o.jsxs(ln,{value:"macos",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"}),' 打开 Spotlight,搜索"活动监视器"']}),o.jsxs("li",{children:["在进程列表中找到 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),o.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]})]}),o.jsxs(ln,{value:"linux",className:"space-y-4 mt-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),o.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[o.jsx("p",{children:"# 查找麦麦进程"}),o.jsx("p",{children:"ps aux | grep python | grep -v grep"}),o.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),o.jsx("p",{children:"kill -9 "}),o.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),o.jsx("p",{children:'pkill -9 -f "bot.py"'}),o.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),o.jsx("p",{children:"pkill -9 python"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),o.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[o.jsxs("li",{children:["在终端输入 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),o.jsxs("li",{children:["按 ",o.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),o.jsx(fs,{children:o.jsx(e6,{asChild:!0,children:o.jsx(ue,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:S?We:Hn,children:S?"保存并重启":"确认重启"})]})]})]})]})]}),o.jsxs(ba,{children:[o.jsx(Xi,{className:"h-4 w-4"}),o.jsxs(wa,{children:["配置更新后需要",o.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),o.jsxs(ba,{className:"hidden lg:flex border-primary/30 bg-primary/5 cursor-pointer hover:bg-primary/10 transition-colors",onClick:rt,children:[o.jsx(Zee,{className:"h-4 w-4 text-primary"}),o.jsxs(wa,{className:"flex items-center justify-between",children:[o.jsxs("span",{children:[o.jsx("strong",{className:"text-primary",children:"新手引导:"}),"不知道如何配置模型?点击这里开始学习如何为麦麦的组件分配模型。"]}),o.jsx(ue,{variant:"outline",size:"sm",className:"ml-4 shrink-0",children:"开始引导"})]})]}),o.jsxs(Yi,{defaultValue:"models",className:"w-full",children:[o.jsxs(ji,{className:"grid w-full max-w-full sm:max-w-md grid-cols-2",children:[o.jsx(Bt,{value:"models",children:"添加模型"}),o.jsx(Bt,{value:"tasks","data-tour":"tasks-tab-trigger",children:"为模型分配功能"})]}),o.jsxs(ln,{value:"models",className:"space-y-4 mt-0",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-2",children:[o.jsx("p",{className:"text-sm text-muted-foreground",children:"配置可用的模型列表"}),o.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[K.size>0&&o.jsxs(ue,{onClick:ht,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[o.jsx(Cn,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",K.size,")"]}),o.jsxs(ue,{onClick:()=>rn(null,null),size:"sm",variant:"outline",className:"w-full sm:w-auto","data-tour":"add-model-button",children:[o.jsx(Is,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加模型"]})]})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2",children:[o.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[o.jsx(ii,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(Pe,{placeholder:"搜索模型名称、标识符或提供商...",value:L,onChange:ge=>$(ge.target.value),className:"pl-9"})]}),L&&o.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",fr.length," 个结果"]})]}),o.jsx("div",{className:"md:hidden space-y-3",children:xs.length===0?o.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:L?"未找到匹配的模型":"暂无模型配置"}):xs.map((ge,Ie)=>{const Et=t.findIndex(Hr=>Hr===ge),kn=js(ge.name);return o.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[o.jsxs("div",{className:"flex items-start justify-between gap-2",children:[o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[o.jsx("h3",{className:"font-semibold text-base",children:ge.name}),o.jsx(tn,{variant:kn?"default":"secondary",className:kn?"bg-green-600 hover:bg-green-700":"",children:kn?"已使用":"未使用"})]}),o.jsx("p",{className:"text-xs text-muted-foreground break-all",title:ge.model_identifier,children:ge.model_identifier})]}),o.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[o.jsxs(ue,{variant:"default",size:"sm",onClick:()=>rn(ge,Et),children:[o.jsx(Ju,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),o.jsxs(ue,{size:"sm",onClick:()=>Gt(Et),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Cn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"提供商"}),o.jsx("p",{className:"font-medium",children:ge.api_provider})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"强制流式"}),o.jsx("p",{className:"font-medium",children:ge.force_stream_mode?"是":"否"})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"输入价格"}),o.jsxs("p",{className:"font-medium",children:["¥",ge.price_in,"/M"]})]}),o.jsxs("div",{children:[o.jsx("span",{className:"text-muted-foreground text-xs",children:"输出价格"}),o.jsxs("p",{className:"font-medium",children:["¥",ge.price_out,"/M"]})]})]})]},Ie)})}),o.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:o.jsx("div",{className:"overflow-x-auto",children:o.jsxs(Af,{children:[o.jsx(Mf,{children:o.jsxs(zs,{children:[o.jsx(mn,{className:"w-12",children:o.jsx(Ci,{checked:K.size===fr.length&&fr.length>0,onCheckedChange:He})}),o.jsx(mn,{className:"w-24",children:"使用状态"}),o.jsx(mn,{children:"模型名称"}),o.jsx(mn,{children:"模型标识符"}),o.jsx(mn,{children:"提供商"}),o.jsx(mn,{className:"text-right",children:"输入价格"}),o.jsx(mn,{className:"text-right",children:"输出价格"}),o.jsx(mn,{className:"text-center",children:"强制流式"}),o.jsx(mn,{className:"text-right",children:"操作"})]})}),o.jsx(Rf,{children:xs.length===0?o.jsx(zs,{children:o.jsx(Yt,{colSpan:9,className:"text-center text-muted-foreground py-8",children:L?"未找到匹配的模型":"暂无模型配置"})}):xs.map((ge,Ie)=>{const Et=t.findIndex(Hr=>Hr===ge),kn=js(ge.name);return o.jsxs(zs,{children:[o.jsx(Yt,{children:o.jsx(Ci,{checked:K.has(Et),onCheckedChange:()=>ve(Et)})}),o.jsx(Yt,{children:o.jsx(tn,{variant:kn?"default":"secondary",className:kn?"bg-green-600 hover:bg-green-700":"",children:kn?"已使用":"未使用"})}),o.jsx(Yt,{className:"font-medium",children:ge.name}),o.jsx(Yt,{className:"max-w-xs truncate",title:ge.model_identifier,children:ge.model_identifier}),o.jsx(Yt,{children:ge.api_provider}),o.jsxs(Yt,{className:"text-right",children:["¥",ge.price_in,"/M"]}),o.jsxs(Yt,{className:"text-right",children:["¥",ge.price_out,"/M"]}),o.jsx(Yt,{className:"text-center",children:ge.force_stream_mode?"是":"否"}),o.jsx(Yt,{className:"text-right",children:o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsxs(ue,{variant:"default",size:"sm",onClick:()=>rn(ge,Et),children:[o.jsx(Ju,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),o.jsxs(ue,{size:"sm",onClick:()=>Gt(Et),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Cn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},Ie)})})]})})}),fr.length>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{htmlFor:"page-size-model",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:U.toString(),onValueChange:ge=>{te(parseInt(ge)),z(1),Y(new Set)},children:[o.jsx($t,{id:"page-size-model",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"10",children:"10"}),o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"50",children:"50"}),o.jsx(De,{value:"100",children:"100"})]})]}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(X-1)*U+1," 到"," ",Math.min(X*U,fr.length)," 条,共 ",fr.length," 条"]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>z(1),disabled:X===1,className:"hidden sm:flex",children:o.jsx(Ip,{className:"h-4 w-4"})}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>z(ge=>Math.max(1,ge-1)),disabled:X===1,children:[o.jsx(wd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Pe,{type:"number",value:ne,onChange:ge=>G(ge.target.value),onKeyDown:ge=>ge.key==="Enter"&&vs(),placeholder:X.toString(),className:"w-16 h-8 text-center",min:1,max:ar}),o.jsx(ue,{variant:"outline",size:"sm",onClick:vs,disabled:!ne,className:"h-8",children:"跳转"})]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>z(ge=>ge+1),disabled:X>=ar,children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(Zl,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>z(ar),disabled:X>=ar,className:"hidden sm:flex",children:o.jsx(Lp,{className:"h-4 w-4"})})]})]})]}),o.jsxs(ln,{value:"tasks",className:"space-y-6 mt-0",children:[o.jsx("p",{className:"text-sm text-muted-foreground",children:"为不同的任务配置使用的模型和参数"}),c&&o.jsxs("div",{className:"grid gap-4 sm:gap-6",children:[o.jsx(qa,{title:"组件模型 (utils)",description:"用于表情包、取名、关系、情绪变化等组件",taskConfig:c.utils,modelNames:a,onChange:(ge,Ie)=>Qn("utils",ge,Ie),dataTour:"task-model-select"}),o.jsx(qa,{title:"组件小模型 (utils_small)",description:"消耗量较大的组件,建议使用速度较快的小模型",taskConfig:c.utils_small,modelNames:a,onChange:(ge,Ie)=>Qn("utils_small",ge,Ie)}),o.jsx(qa,{title:"工具调用模型 (tool_use)",description:"需要使用支持工具调用的模型",taskConfig:c.tool_use,modelNames:a,onChange:(ge,Ie)=>Qn("tool_use",ge,Ie)}),o.jsx(qa,{title:"首要回复模型 (replyer)",description:"用于表达器和表达方式学习",taskConfig:c.replyer,modelNames:a,onChange:(ge,Ie)=>Qn("replyer",ge,Ie)}),o.jsx(qa,{title:"决策模型 (planner)",description:"负责决定麦麦该什么时候回复",taskConfig:c.planner,modelNames:a,onChange:(ge,Ie)=>Qn("planner",ge,Ie)}),o.jsx(qa,{title:"图像识别模型 (vlm)",description:"视觉语言模型",taskConfig:c.vlm,modelNames:a,onChange:(ge,Ie)=>Qn("vlm",ge,Ie),hideTemperature:!0}),o.jsx(qa,{title:"语音识别模型 (voice)",description:"语音转文字",taskConfig:c.voice,modelNames:a,onChange:(ge,Ie)=>Qn("voice",ge,Ie),hideTemperature:!0,hideMaxTokens:!0}),o.jsx(qa,{title:"嵌入模型 (embedding)",description:"用于向量化",taskConfig:c.embedding,modelNames:a,onChange:(ge,Ie)=>Qn("embedding",ge,Ie),hideTemperature:!0,hideMaxTokens:!0}),o.jsxs("div",{className:"space-y-4",children:[o.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库模型"}),o.jsx(qa,{title:"实体提取模型 (lpmm_entity_extract)",description:"从文本中提取实体",taskConfig:c.lpmm_entity_extract,modelNames:a,onChange:(ge,Ie)=>Qn("lpmm_entity_extract",ge,Ie)}),o.jsx(qa,{title:"RDF 构建模型 (lpmm_rdf_build)",description:"构建知识图谱",taskConfig:c.lpmm_rdf_build,modelNames:a,onChange:(ge,Ie)=>Qn("lpmm_rdf_build",ge,Ie)}),o.jsx(qa,{title:"问答模型 (lpmm_qa)",description:"知识库问答",taskConfig:c.lpmm_qa,modelNames:a,onChange:(ge,Ie)=>Qn("lpmm_qa",ge,Ie)})]})]})]})]}),o.jsx(Er,{open:_,onOpenChange:Wt,children:o.jsxs(wr,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"model-dialog",preventOutsideClose:qt.isRunning,children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:B!==null?"编辑模型":"添加模型"}),o.jsx(Xr,{children:"配置模型的基本信息和参数"})]}),o.jsxs("div",{className:"grid gap-4 py-4",children:[o.jsxs("div",{className:"grid gap-2","data-tour":"model-name-input",children:[o.jsx(he,{htmlFor:"model_name",children:"模型名称 *"}),o.jsx(Pe,{id:"model_name",value:D?.name||"",onChange:ge=>q(Ie=>Ie?{...Ie,name:ge.target.value}:null),placeholder:"例如: qwen3-30b"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"用于在任务配置中引用此模型"})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"model-provider-select",children:[o.jsx(he,{htmlFor:"api_provider",children:"API 提供商 *"}),o.jsxs(Vt,{value:D?.api_provider||"",onValueChange:ge=>{q(Ie=>Ie?{...Ie,api_provider:ge}:null),re([]),Ye(null)},children:[o.jsx($t,{id:"api_provider",children:o.jsx(Ut,{placeholder:"选择提供商"})}),o.jsx(Ht,{children:n.map(ge=>o.jsx(De,{value:ge,children:ge},ge))})]})]}),o.jsxs("div",{className:"grid gap-2","data-tour":"model-identifier-input",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{htmlFor:"model_identifier",children:"模型标识符 *"}),Ve?.modelFetcher&&o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(tn,{variant:"secondary",className:"text-xs",children:Ve.display_name}),o.jsx(ue,{variant:"ghost",size:"sm",className:"h-6 px-2",onClick:()=>D?.api_provider&&Rt(D.api_provider,!0),disabled:ae,children:ae?o.jsx(Us,{className:"h-3 w-3 animate-spin"}):o.jsx(Qs,{className:"h-3 w-3"})})]})]}),Ve?.modelFetcher?o.jsxs(Bo,{open:Je,onOpenChange:Oe,children:[o.jsx(Fo,{asChild:!0,children:o.jsxs(ue,{variant:"outline",role:"combobox","aria-expanded":Je,className:"w-full justify-between font-normal",disabled:ae||!!Be,children:[ae?o.jsxs("span",{className:"flex items-center gap-2 text-muted-foreground",children:[o.jsx(Us,{className:"h-4 w-4 animate-spin"}),"正在获取模型列表..."]}):Be?o.jsx("span",{className:"text-muted-foreground text-sm",children:"点击下方输入框手动填写"}):D?.model_identifier?o.jsx("span",{className:"truncate",children:D.model_identifier}):o.jsx("span",{className:"text-muted-foreground",children:"搜索或选择模型..."}),o.jsx(Lj,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),o.jsx(Ka,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:o.jsxs(Tb,{children:[o.jsx(Eb,{placeholder:"搜索模型..."}),o.jsx(pn,{className:"h-[300px]",children:o.jsxs(_b,{className:"max-h-none overflow-visible",children:[o.jsx(Ab,{children:Be?o.jsxs("div",{className:"py-4 px-2 text-center space-y-2",children:[o.jsx("p",{className:"text-sm text-destructive",children:Be}),!Be.includes("API Key")&&o.jsx(ue,{variant:"link",size:"sm",onClick:()=>D?.api_provider&&Rt(D.api_provider,!0),children:"重试"})]}):"未找到匹配的模型"}),o.jsx(up,{heading:"可用模型",children:se.map(ge=>o.jsxs(dp,{value:ge.id,onSelect:()=>{q(Ie=>Ie?{...Ie,model_identifier:ge.id}:null),Oe(!1)},children:[o.jsx(zo,{className:`mr-2 h-4 w-4 ${D?.model_identifier===ge.id?"opacity-100":"opacity-0"}`}),o.jsxs("div",{className:"flex flex-col",children:[o.jsx("span",{children:ge.id}),ge.name!==ge.id&&o.jsx("span",{className:"text-xs text-muted-foreground",children:ge.name})]})]},ge.id))}),o.jsx(up,{heading:"手动输入",children:o.jsxs(dp,{value:"__manual_input__",onSelect:()=>{Oe(!1)},children:[o.jsx(Ju,{className:"mr-2 h-4 w-4"}),"手动输入模型标识符..."]})})]})})]})})]}):o.jsx(Pe,{id:"model_identifier",value:D?.model_identifier||"",onChange:ge=>q(Ie=>Ie?{...Ie,model_identifier:ge.target.value}:null),placeholder:"Qwen/Qwen3-30B-A3B-Instruct-2507"}),Be&&Ve?.modelFetcher&&o.jsxs(ba,{variant:"destructive",className:"mt-2 py-2",children:[o.jsx(Xi,{className:"h-4 w-4"}),o.jsx(wa,{className:"text-xs",children:Be})]}),Ve?.modelFetcher&&o.jsx(Pe,{value:D?.model_identifier||"",onChange:ge=>q(Ie=>Ie?{...Ie,model_identifier:ge.target.value}:null),placeholder:"或手动输入模型标识符",className:"mt-2"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:Be?'请手动输入模型标识符,或前往"模型提供商配置"检查 API Key':Ve?.modelFetcher?`已识别为 ${Ve.display_name},支持自动获取模型列表`:"API 提供商提供的模型 ID"})]}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"price_in",children:"输入价格 (¥/M token)"}),o.jsx(Pe,{id:"price_in",type:"number",step:"0.1",min:"0",value:D?.price_in??"",onChange:ge=>{const Ie=ge.target.value===""?null:parseFloat(ge.target.value);q(Et=>Et?{...Et,price_in:Ie}:null)},placeholder:"默认: 0"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"price_out",children:"输出价格 (¥/M token)"}),o.jsx(Pe,{id:"price_out",type:"number",step:"0.1",min:"0",value:D?.price_out??"",onChange:ge=>{const Ie=ge.target.value===""?null:parseFloat(ge.target.value);q(Et=>Et?{...Et,price_out:Ie}:null)},placeholder:"默认: 0"})]})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"force_stream_mode",checked:D?.force_stream_mode||!1,onCheckedChange:ge=>q(Ie=>Ie?{...Ie,force_stream_mode:ge}:null)}),o.jsx(he,{htmlFor:"force_stream_mode",className:"cursor-pointer",children:"强制流式输出模式"})]})]}),o.jsxs(fs,{children:[o.jsx(ue,{variant:"outline",onClick:()=>A(!1),"data-tour":"model-cancel-button",children:"取消"}),o.jsx(ue,{onClick:wt,"data-tour":"model-save-button",children:"保存"})]})]})}),o.jsx(Fn,{open:W,onOpenChange:ee,children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:['确定要删除模型 "',I!==null?t[I]?.name:"",'" 吗? 此操作无法撤销。']})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:lt,children:"删除"})]})]})}),o.jsx(Fn,{open:R,onOpenChange:ie,children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认批量删除"}),o.jsxs(zn,{children:["确定要删除选中的 ",K.size," 个模型吗? 此操作无法撤销。"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:vn,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),T&&o.jsx(r6,{onRestartComplete:ot,onRestartFailed:dn})]})})}function qa({title:t,description:e,taskConfig:n,modelNames:r,onChange:s,hideTemperature:i=!1,hideMaxTokens:a=!1,dataTour:l}){const c=d=>{s("model_list",d)};return o.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[o.jsxs("div",{children:[o.jsx("h4",{className:"font-semibold text-base sm:text-lg",children:t}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:e})]}),o.jsxs("div",{className:"grid gap-4",children:[o.jsxs("div",{className:"grid gap-2","data-tour":l,children:[o.jsx(he,{children:"模型列表"}),o.jsx(Vve,{options:r.map(d=>({label:d,value:d})),selected:n.model_list||[],onChange:c,placeholder:"选择模型...",emptyText:"暂无可用模型"})]}),o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[!i&&o.jsxs("div",{className:"grid gap-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{children:"温度"}),o.jsx(Pe,{type:"number",step:"0.1",min:"0",max:"1",value:n.temperature??.3,onChange:d=>{const h=parseFloat(d.target.value);!isNaN(h)&&h>=0&&h<=1&&s("temperature",h)},className:"w-20 h-8 text-sm"})]}),o.jsx(Nf,{value:[n.temperature??.3],onValueChange:d=>s("temperature",d[0]),min:0,max:1,step:.1,className:"w-full"})]}),!a&&o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{children:"最大 Token"}),o.jsx(Pe,{type:"number",step:"1",min:"1",value:n.max_tokens??1024,onChange:d=>s("max_tokens",parseInt(d.target.value))})]})]})]})]})}const Bb="/api/webui/config";async function Gve(){const e=await(await gt(`${Bb}/adapter-config/path`)).json();return!e.success||!e.path?null:{path:e.path,lastModified:e.lastModified}}async function wM(t){const n=await(await gt(`${Bb}/adapter-config/path`,{method:"POST",headers:Tt(),body:JSON.stringify({path:t})})).json();if(!n.success)throw new Error(n.message||"保存路径失败")}async function SM(t){const n=await(await gt(`${Bb}/adapter-config?path=${encodeURIComponent(t)}`)).json();if(!n.success)throw new Error("读取配置文件失败");return n.content}async function kM(t,e){const r=await(await gt(`${Bb}/adapter-config`,{method:"POST",headers:Tt(),body:JSON.stringify({path:t,content:e})})).json();if(!r.success)throw new Error(r.message||"保存配置失败")}const $i={inner:{version:"0.1.2"},nickname:{nickname:""},napcat_server:{host:"localhost",port:8095,token:"",heartbeat_interval:30},maibot_server:{host:"localhost",port:8e3},chat:{group_list_type:"whitelist",group_list:[],private_list_type:"whitelist",private_list:[],ban_user_id:[],ban_qq_bot:!1,enable_poke:!0},voice:{use_tts:!1},debug:{level:"INFO"}},AS={oneclick:{name:"一键包",description:"使用一键包部署的适配器配置",path:"../MaiBot-Napcat-Adapter/config.toml",icon:ed},docker:{name:"Docker",description:"Docker Compose 部署的适配器配置",path:"/MaiMBot/adapters-config/config.toml",icon:Jee}};function Xve(){const[t,e]=b.useState("upload"),[n,r]=b.useState(null),[s,i]=b.useState(""),[a,l]=b.useState(""),[c,d]=b.useState("oneclick"),[h,m]=b.useState(""),[g,x]=b.useState(!1),[y,w]=b.useState(!1),[S,k]=b.useState(!1),[j,N]=b.useState(!1),[T,E]=b.useState(null),_=b.useRef(null),{toast:A}=Lr(),D=b.useRef(null),q=G=>{if(!G.trim())return{valid:!1,error:"路径不能为空"};if(!G.toLowerCase().endsWith(".toml"))return{valid:!1,error:"文件必须是 .toml 格式"};const se=/^([a-zA-Z]:\\|\\\\[^\\]+\\[^\\]+\\).+\.toml$/i,re=/^(\/|~\/).+\.toml$/i,ae=/^(\.{1,2}[\\/]|[^:\\/]).+\.toml$/i,_e=se.test(G),Be=re.test(G),Ye=ae.test(G);return!_e&&!Be&&!Ye?{valid:!1,error:"路径格式错误"}:/[<>"|?*\x00-\x1F]/.test(G)?{valid:!1,error:"路径包含非法字符"}:{valid:!0,error:""}},B=G=>{if(l(G),G.trim()){const se=q(G);m(se.error)}else m("")},H=b.useCallback(async G=>{const se=AS[G];w(!0);try{const re=await SM(se.path),ae=X(re);r(ae),d(G),l(se.path),await wM(se.path),A({title:"加载成功",description:`已从${se.name}预设加载配置`})}catch(re){console.error("加载预设配置失败:",re),A({title:"加载失败",description:re instanceof Error?re.message:"无法读取预设配置文件",variant:"destructive"})}finally{w(!1)}},[A]),W=b.useCallback(async G=>{const se=q(G);if(!se.valid){m(se.error),A({title:"路径无效",description:se.error,variant:"destructive"});return}m(""),w(!0);try{const re=await SM(G),ae=X(re);r(ae),l(G),await wM(G),A({title:"加载成功",description:"已从配置文件加载"})}catch(re){console.error("加载配置失败:",re),A({title:"加载失败",description:re instanceof Error?re.message:"无法读取配置文件",variant:"destructive"})}finally{w(!1)}},[A]);b.useEffect(()=>{(async()=>{try{const se=await Gve();if(se&&se.path){l(se.path);const re=Object.entries(AS).find(([,ae])=>ae.path===se.path);re?(e("preset"),d(re[0]),await H(re[0])):(e("path"),await W(se.path))}}catch(se){console.error("加载保存的路径失败:",se)}})()},[W,H]);const ee=b.useCallback(G=>{t!=="path"&&t!=="preset"||!a||(D.current&&clearTimeout(D.current),D.current=setTimeout(async()=>{x(!0);try{const se=z(G);await kM(a,se),A({title:"自动保存成功",description:"配置已保存到文件"})}catch(se){console.error("自动保存失败:",se),A({title:"自动保存失败",description:se instanceof Error?se.message:"保存配置失败",variant:"destructive"})}finally{x(!1)}},1e3))},[t,a,A]),I=async()=>{if(!n||!a)return;const G=q(a);if(!G.valid){A({title:"保存失败",description:G.error,variant:"destructive"});return}x(!0);try{const se=z(n);await kM(a,se),A({title:"保存成功",description:"配置已保存到文件"})}catch(se){console.error("保存失败:",se),A({title:"保存失败",description:se instanceof Error?se.message:"保存配置失败",variant:"destructive"})}finally{x(!1)}},V=async()=>{a&&await W(a)},L=G=>{if(G!==t){if(n){E(G),k(!0);return}$(G)}},$=G=>{r(null),i(""),m(""),e(G),G==="preset"&&H("oneclick"),A({title:"已切换模式",description:{upload:"现在可以上传配置文件",path:"现在可以指定配置文件路径",preset:"现在可以使用预设配置"}[G]})},K=()=>{T&&($(T),E(null)),k(!1)},Y=()=>{if(n){N(!0);return}R()},R=()=>{l(""),r(null),m(""),A({title:"已清空",description:"路径和配置已清空"})},ie=()=>{R(),N(!1)},X=G=>{const se=JSON.parse(JSON.stringify($i)),re=G.split(` -`);let ae="";for(const _e of re){const Be=_e.trim();if(!Be||Be.startsWith("#"))continue;const Ye=Be.match(/^\[(\w+)\]/);if(Ye){ae=Ye[1];continue}const Je=Be.match(/^(\w+)\s*=\s*(.+)$/);if(Je&&ae){const[,Oe,Ve]=Je;let Ue=Ve.trim();const $e=Ue.match(/^("[^"]*")/);if($e)Ue=$e[1];else{const vt=Ue.indexOf("#");vt!==-1&&(Ue=Ue.substring(0,vt).trim())}let jt;if(Ue==="true")jt=!0;else if(Ue==="false")jt=!1;else if(Ue.startsWith("[")&&Ue.endsWith("]")){const vt=Ue.slice(1,-1).trim();if(vt){const $n=vt.split(",").map(un=>{const Mt=un.trim();return isNaN(Number(Mt))?Mt.replace(/"/g,""):Number(Mt)}),qt=typeof $n[0];jt=$n.every(un=>typeof un===qt)?$n:$n.filter(un=>typeof un=="number")}else jt=[]}else Ue.startsWith('"')&&Ue.endsWith('"')?jt=Ue.slice(1,-1):isNaN(Number(Ue))?jt=Ue.replace(/"/g,""):jt=Number(Ue);if(ae in se){const vt=se[ae];vt[Oe]=jt}}}return se},z=G=>{const se=[],re=(ae,_e)=>ae===""||ae===null||ae===void 0?_e:ae;return se.push("[inner]"),se.push(`version = "${re(G.inner.version,$i.inner.version)}" # 版本号`),se.push("# 请勿修改版本号,除非你知道自己在做什么"),se.push(""),se.push("[nickname] # 现在没用"),se.push(`nickname = "${re(G.nickname.nickname,$i.nickname.nickname)}"`),se.push(""),se.push("[napcat_server] # Napcat连接的ws服务设置"),se.push(`host = "${re(G.napcat_server.host,$i.napcat_server.host)}" # Napcat设定的主机地址`),se.push(`port = ${re(G.napcat_server.port||0,$i.napcat_server.port)} # Napcat设定的端口`),se.push(`token = "${re(G.napcat_server.token,$i.napcat_server.token)}" # Napcat设定的访问令牌,若无则留空`),se.push(`heartbeat_interval = ${re(G.napcat_server.heartbeat_interval||0,$i.napcat_server.heartbeat_interval)} # 与Napcat设置的心跳相同(按秒计)`),se.push(""),se.push("[maibot_server] # 连接麦麦的ws服务设置"),se.push(`host = "${re(G.maibot_server.host,$i.maibot_server.host)}" # 麦麦在.env文件中设置的主机地址,即HOST字段`),se.push(`port = ${re(G.maibot_server.port||0,$i.maibot_server.port)} # 麦麦在.env文件中设置的端口,即PORT字段`),se.push(""),se.push("[chat] # 黑白名单功能"),se.push(`group_list_type = "${re(G.chat.group_list_type,$i.chat.group_list_type)}" # 群组名单类型,可选为:whitelist, blacklist`),se.push(`group_list = [${G.chat.group_list.join(", ")}] # 群组名单`),se.push("# 当group_list_type为whitelist时,只有群组名单中的群组可以聊天"),se.push("# 当group_list_type为blacklist时,群组名单中的任何群组无法聊天"),se.push(`private_list_type = "${re(G.chat.private_list_type,$i.chat.private_list_type)}" # 私聊名单类型,可选为:whitelist, blacklist`),se.push(`private_list = [${G.chat.private_list.join(", ")}] # 私聊名单`),se.push("# 当private_list_type为whitelist时,只有私聊名单中的用户可以聊天"),se.push("# 当private_list_type为blacklist时,私聊名单中的任何用户无法聊天"),se.push(`ban_user_id = [${G.chat.ban_user_id.join(", ")}] # 全局禁止名单(全局禁止名单中的用户无法进行任何聊天)`),se.push(`ban_qq_bot = ${G.chat.ban_qq_bot} # 是否屏蔽QQ官方机器人`),se.push(`enable_poke = ${G.chat.enable_poke} # 是否启用戳一戳功能`),se.push(""),se.push("[voice] # 发送语音设置"),se.push(`use_tts = ${G.voice.use_tts} # 是否使用tts语音(请确保你配置了tts并有对应的adapter)`),se.push(""),se.push("[debug]"),se.push(`level = "${re(G.debug.level,$i.debug.level)}" # 日志等级(DEBUG, INFO, WARNING, ERROR, CRITICAL)`),se.join(` -`)},U=G=>{const se=G.target.files?.[0];if(!se)return;const re=new FileReader;re.onload=ae=>{try{const _e=ae.target?.result,Be=X(_e);r(Be),i(se.name),A({title:"上传成功",description:`已加载配置文件:${se.name}`})}catch(_e){console.error("解析配置文件失败:",_e),A({title:"解析失败",description:"配置文件格式错误,请检查文件内容",variant:"destructive"})}},re.readAsText(se)},te=()=>{if(!n)return;const G=z(n),se=new Blob([G],{type:"text/plain;charset=utf-8"}),re=URL.createObjectURL(se),ae=document.createElement("a");ae.href=re,ae.download=s||"config.toml",document.body.appendChild(ae),ae.click(),document.body.removeChild(ae),URL.revokeObjectURL(re),A({title:"下载成功",description:"配置文件已下载,请手动覆盖并重启适配器"})},ne=()=>{r(JSON.parse(JSON.stringify($i))),i("config.toml"),A({title:"已加载默认配置",description:"可以开始编辑配置"})};return o.jsx(pn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦适配器配置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的 QQ 适配器的配置文件"})]})}),o.jsxs("div",{className:"flex items-start gap-2 p-3 rounded-lg border border-amber-500/50 bg-amber-500/10 text-amber-700 dark:text-amber-400",children:[o.jsx(Lo,{className:"h-4 w-4 mt-0.5 flex-shrink-0"}),o.jsx("p",{className:"text-sm",children:"适配器配置保存之后使用 WebUI 的重启功能适配器并不会重启,需要手动重启适配器。"})]}),o.jsxs(Lt,{children:[o.jsxs(En,{children:[o.jsx(_n,{children:"工作模式"}),o.jsx(Wr,{children:"选择配置文件的管理方式"})]}),o.jsxs(Xn,{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3 md:gap-4",children:[o.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${t==="preset"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>L("preset"),children:o.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[o.jsx(ed,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"min-w-0",children:[o.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"预设模式"}),o.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"使用预设的部署配置"})]})]})}),o.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${t==="upload"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>L("upload"),children:o.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[o.jsx(N9,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"min-w-0",children:[o.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"上传文件模式"}),o.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"上传配置文件,编辑后下载并手动覆盖"})]})]})}),o.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${t==="path"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>L("path"),children:o.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[o.jsx(ete,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"min-w-0",children:[o.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"指定路径模式"}),o.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"指定配置文件路径,自动加载和保存"})]})]})})]}),t==="preset"&&o.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[o.jsx(he,{className:"text-sm md:text-base",children:"选择部署方式"}),o.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:Object.entries(AS).map(([G,se])=>{const re=se.icon,ae=c===G;return o.jsx("div",{className:`border-2 rounded-lg p-3 cursor-pointer transition-all ${ae?"border-primary bg-primary/5":"border-muted hover:border-primary/50"}`,onClick:()=>{d(G),H(G)},children:o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(re,{className:"h-5 w-5 mt-0.5 flex-shrink-0"}),o.jsxs("div",{className:"min-w-0 flex-1",children:[o.jsx("h4",{className:"font-semibold text-sm",children:se.name}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:se.description}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1 font-mono break-all",children:se.path})]})]})},G)})})]}),t==="path"&&o.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"config-path",className:"text-sm md:text-base",children:"配置文件路径"}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[o.jsxs("div",{className:"flex-1 space-y-1",children:[o.jsx(Pe,{id:"config-path",value:a,onChange:G=>B(G.target.value),placeholder:"例: C:\\Adapter\\config.toml",className:`text-sm ${h?"border-destructive":""}`}),h&&o.jsx("p",{className:"text-xs text-destructive",children:h})]}),o.jsx(ue,{onClick:()=>W(a),disabled:y||!a||!!h,className:"w-full sm:w-auto",children:y?o.jsxs(o.Fragment,{children:[o.jsx(Qs,{className:"h-4 w-4 animate-spin mr-2"}),o.jsx("span",{className:"sm:hidden",children:"加载中..."})]}):o.jsxs(o.Fragment,{children:[o.jsx("span",{className:"sm:hidden",children:"加载配置"}),o.jsx("span",{className:"hidden sm:inline",children:"加载"})]})})]})]}),o.jsxs("details",{className:"rounded-lg bg-muted/50 p-3 group",children:[o.jsxs("summary",{className:"text-xs font-medium cursor-pointer select-none list-none flex items-center justify-between",children:[o.jsx("span",{children:"路径格式说明"}),o.jsx("svg",{className:"h-4 w-4 transition-transform group-open:rotate-180",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:o.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),o.jsxs("div",{className:"mt-2 space-y-2 text-xs text-muted-foreground",children:[o.jsxs("div",{className:"space-y-1",children:[o.jsx("div",{className:"flex items-center gap-2",children:o.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Windows"})}),o.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[o.jsx("div",{children:"C:\\Adapter\\config.toml"}),o.jsx("div",{className:"hidden sm:block",children:"D:\\MaiBot\\adapter\\config.toml"}),o.jsx("div",{className:"hidden sm:block",children:"\\\\server\\share\\config.toml"})]})]}),o.jsxs("div",{className:"space-y-1",children:[o.jsx("div",{className:"flex items-center gap-2",children:o.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Linux"})}),o.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[o.jsx("div",{children:"/opt/adapter/config.toml"}),o.jsx("div",{className:"hidden sm:block",children:"/home/user/adapter/config.toml"}),o.jsx("div",{className:"hidden sm:block",children:"~/adapter/config.toml"})]})]}),o.jsx("p",{className:"pt-1 border-t text-[10px] md:text-xs",children:"💡 配置会自动保存到指定文件,修改后 1 秒自动保存"})]})]})]})]})]}),o.jsxs(ba,{children:[o.jsx(Xi,{className:"h-4 w-4"}),o.jsx(wa,{children:t==="preset"?o.jsxs(o.Fragment,{children:[o.jsx("strong",{children:"预设模式:"}),"选择预设的部署方式,配置会自动加载,修改后 1 秒自动保存",g&&" (正在保存...)"]}):t==="upload"?o.jsxs(o.Fragment,{children:[o.jsx("strong",{children:"上传文件模式:"}),"上传配置文件 → 在线编辑 → 下载文件 → 手动覆盖并重启适配器"]}):o.jsxs(o.Fragment,{children:[o.jsx("strong",{children:"指定路径模式:"}),"指定配置文件路径后,配置会自动加载,修改后 1 秒自动保存",g&&" (正在保存...)"]})})]}),t==="upload"&&!n&&o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 w-full",children:[o.jsx("input",{ref:_,type:"file",accept:".toml",className:"hidden",onChange:U}),o.jsxs(ue,{onClick:()=>_.current?.click(),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[o.jsx(N9,{className:"mr-2 h-4 w-4"}),"上传配置"]}),o.jsxs(ue,{onClick:ne,size:"sm",className:"w-full sm:w-auto",children:[o.jsx(Po,{className:"mr-2 h-4 w-4"}),"使用默认配置"]})]}),t==="upload"&&n&&o.jsx("div",{className:"flex gap-2",children:o.jsxs(ue,{onClick:te,size:"sm",className:"w-full sm:w-auto",children:[o.jsx(td,{className:"mr-2 h-4 w-4"}),"下载配置"]})}),(t==="preset"||t==="path")&&n&&o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[o.jsxs(ue,{onClick:I,size:"sm",disabled:g||!!h,className:"w-full sm:w-auto",children:[o.jsx(zp,{className:"mr-2 h-4 w-4"}),g?"保存中...":"立即保存"]}),o.jsxs(ue,{onClick:V,size:"sm",variant:"outline",disabled:y,className:"w-full sm:w-auto",children:[o.jsx(Qs,{className:`mr-2 h-4 w-4 ${y?"animate-spin":""}`}),"刷新"]}),t==="path"&&o.jsxs(ue,{onClick:Y,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[o.jsx(Cn,{className:"mr-2 h-4 w-4"}),"清空路径"]})]}),n?o.jsxs(Yi,{defaultValue:"napcat",className:"w-full",children:[o.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:o.jsxs(ji,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5",children:[o.jsxs(Bt,{value:"napcat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[o.jsx("span",{className:"hidden sm:inline",children:"Napcat 连接"}),o.jsx("span",{className:"sm:hidden",children:"Napcat"})]}),o.jsxs(Bt,{value:"maibot",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[o.jsx("span",{className:"hidden sm:inline",children:"麦麦连接"}),o.jsx("span",{className:"sm:hidden",children:"麦麦"})]}),o.jsxs(Bt,{value:"chat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[o.jsx("span",{className:"hidden sm:inline",children:"聊天控制"}),o.jsx("span",{className:"sm:hidden",children:"聊天"})]}),o.jsxs(Bt,{value:"voice",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[o.jsx("span",{className:"hidden sm:inline",children:"语音设置"}),o.jsx("span",{className:"sm:hidden",children:"语音"})]}),o.jsx(Bt,{value:"debug",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:"调试"})]})}),o.jsx(ln,{value:"napcat",className:"space-y-4",children:o.jsx(Yve,{config:n,onChange:G=>{r(G),ee(G)}})}),o.jsx(ln,{value:"maibot",className:"space-y-4",children:o.jsx(Kve,{config:n,onChange:G=>{r(G),ee(G)}})}),o.jsx(ln,{value:"chat",className:"space-y-4",children:o.jsx(Zve,{config:n,onChange:G=>{r(G),ee(G)}})}),o.jsx(ln,{value:"voice",className:"space-y-4",children:o.jsx(Jve,{config:n,onChange:G=>{r(G),ee(G)}})}),o.jsx(ln,{value:"debug",className:"space-y-4",children:o.jsx(eye,{config:n,onChange:G=>{r(G),ee(G)}})})]}):o.jsx("div",{className:"rounded-lg border bg-card p-6 md:p-12",children:o.jsxs("div",{className:"text-center space-y-3 md:space-y-4",children:[o.jsx(Po,{className:"h-12 w-12 md:h-16 md:w-16 mx-auto text-muted-foreground"}),o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold",children:"尚未加载配置"}),o.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-2 px-4",children:t==="preset"?"请选择预设的部署方式":t==="upload"?"请上传现有配置文件,或使用默认配置开始编辑":"请指定配置文件路径并点击加载按钮"})]})]})}),o.jsx(Fn,{open:S,onOpenChange:k,children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认切换模式"}),o.jsxs(zn,{children:["切换模式将清空当前配置,确定要继续吗?",o.jsx("br",{}),o.jsx("span",{className:"text-destructive font-medium",children:"请确保已保存重要配置"})]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{onClick:()=>{k(!1),E(null)},children:"取消"}),o.jsx(In,{onClick:K,children:"确认切换"})]})]})}),o.jsx(Fn,{open:j,onOpenChange:N,children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认清空路径"}),o.jsxs(zn,{children:["清空路径将清除当前配置,确定要继续吗?",o.jsx("br",{}),o.jsx("span",{className:"text-muted-foreground text-sm",children:"此操作不会删除配置文件,只是清除界面中的配置"})]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{onClick:()=>N(!1),children:"取消"}),o.jsx(In,{onClick:ie,className:"bg-destructive hover:bg-destructive/90",children:"确认清空"})]})]})})]})})}function Yve({config:t,onChange:e}){return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"Napcat WebSocket 服务设置"}),o.jsxs("div",{className:"grid gap-3 md:gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"napcat-host",className:"text-sm md:text-base",children:"主机地址"}),o.jsx(Pe,{id:"napcat-host",value:t.napcat_server.host,onChange:n=>e({...t,napcat_server:{...t.napcat_server,host:n.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的主机地址"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"napcat-port",className:"text-sm md:text-base",children:"端口"}),o.jsx(Pe,{id:"napcat-port",type:"number",value:t.napcat_server.port||"",onChange:n=>e({...t,napcat_server:{...t.napcat_server,port:n.target.value?parseInt(n.target.value):0}}),placeholder:"8095",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的端口(留空使用默认值 8095)"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"napcat-token",className:"text-sm md:text-base",children:"访问令牌(Token)"}),o.jsx(Pe,{id:"napcat-token",type:"password",value:t.napcat_server.token,onChange:n=>e({...t,napcat_server:{...t.napcat_server,token:n.target.value}}),placeholder:"留空表示无需令牌",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的访问令牌,若无则留空"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"napcat-heartbeat",className:"text-sm md:text-base",children:"心跳间隔(秒)"}),o.jsx(Pe,{id:"napcat-heartbeat",type:"number",value:t.napcat_server.heartbeat_interval||"",onChange:n=>e({...t,napcat_server:{...t.napcat_server,heartbeat_interval:n.target.value?parseInt(n.target.value):0}}),placeholder:"30",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"与 Napcat 设置的心跳间隔保持一致(留空使用默认值 30)"})]})]})]})})}function Kve({config:t,onChange:e}){return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"麦麦 WebSocket 服务设置"}),o.jsxs("div",{className:"grid gap-3 md:gap-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"maibot-host",className:"text-sm md:text-base",children:"主机地址"}),o.jsx(Pe,{id:"maibot-host",value:t.maibot_server.host,onChange:n=>e({...t,maibot_server:{...t.maibot_server,host:n.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 HOST 字段"})]}),o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{htmlFor:"maibot-port",className:"text-sm md:text-base",children:"端口"}),o.jsx(Pe,{id:"maibot-port",type:"number",value:t.maibot_server.port||"",onChange:n=>e({...t,maibot_server:{...t.maibot_server,port:n.target.value?parseInt(n.target.value):0}}),placeholder:"8000",className:"text-sm md:text-base"}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 PORT 字段(留空使用默认值 8000)"})]})]})]})})}function Zve({config:t,onChange:e}){const n=i=>{const a={...t};i==="group"?a.chat.group_list=[...a.chat.group_list,0]:i==="private"?a.chat.private_list=[...a.chat.private_list,0]:a.chat.ban_user_id=[...a.chat.ban_user_id,0],e(a)},r=(i,a)=>{const l={...t};i==="group"?l.chat.group_list=l.chat.group_list.filter((c,d)=>d!==a):i==="private"?l.chat.private_list=l.chat.private_list.filter((c,d)=>d!==a):l.chat.ban_user_id=l.chat.ban_user_id.filter((c,d)=>d!==a),e(l)},s=(i,a,l)=>{const c={...t};i==="group"?c.chat.group_list[a]=l:i==="private"?c.chat.private_list[a]=l:c.chat.ban_user_id[a]=l,e(c)};return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"聊天黑白名单功能"}),o.jsxs("div",{className:"grid gap-4 md:gap-6",children:[o.jsxs("div",{className:"space-y-3 md:space-y-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-sm md:text-base",children:"群组名单类型"}),o.jsxs(Vt,{value:t.chat.group_list_type,onValueChange:i=>e({...t,chat:{...t.chat,group_list_type:i}}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),o.jsx(De,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[o.jsx(he,{className:"text-sm md:text-base",children:"群组列表"}),o.jsxs(ue,{onClick:()=>n("group"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[o.jsx(Po,{className:"mr-1 h-4 w-4"}),"添加群号"]})]}),t.chat.group_list.map((i,a)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Pe,{type:"number",value:i,onChange:l=>s("group",a,parseInt(l.target.value)||0),placeholder:"输入群号",className:"text-sm md:text-base"}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsx(ue,{size:"icon",variant:"outline",children:o.jsx(Cn,{className:"h-4 w-4"})})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:["确定要删除群号 ",i," 吗?此操作无法撤销。"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>r("group",a),children:"删除"})]})]})]})]},a)),t.chat.group_list.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无群组"})]})]}),o.jsxs("div",{className:"space-y-3 md:space-y-4",children:[o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-sm md:text-base",children:"私聊名单类型"}),o.jsxs(Vt,{value:t.chat.private_list_type,onValueChange:i=>e({...t,chat:{...t.chat,private_list_type:i}}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),o.jsx(De,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[o.jsx(he,{className:"text-sm md:text-base",children:"私聊列表"}),o.jsxs(ue,{onClick:()=>n("private"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[o.jsx(Po,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),t.chat.private_list.map((i,a)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Pe,{type:"number",value:i,onChange:l=>s("private",a,parseInt(l.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsx(ue,{size:"icon",variant:"outline",children:o.jsx(Cn,{className:"h-4 w-4"})})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:["确定要删除用户 ",i," 吗?此操作无法撤销。"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>r("private",a),children:"删除"})]})]})]})]},a)),t.chat.private_list.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无用户"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-sm md:text-base",children:"全局禁止名单"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"名单中的用户无法进行任何聊天"})]}),o.jsxs(ue,{onClick:()=>n("ban"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[o.jsx(Po,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),t.chat.ban_user_id.map((i,a)=>o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Pe,{type:"number",value:i,onChange:l=>s("ban",a,parseInt(l.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),o.jsxs(Fn,{children:[o.jsx(is,{asChild:!0,children:o.jsx(ue,{size:"icon",variant:"outline",children:o.jsx(Cn,{className:"h-4 w-4"})})}),o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:["确定要从全局禁止名单中删除用户 ",i," 吗?此操作无法撤销。"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>r("ban",a),children:"删除"})]})]})]})]},a)),t.chat.ban_user_id.length===0&&o.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无禁止用户"})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-sm md:text-base",children:"屏蔽QQ官方机器人"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否屏蔽来自QQ官方机器人的消息"})]}),o.jsx(Ft,{checked:t.chat.ban_qq_bot,onCheckedChange:i=>e({...t,chat:{...t.chat,ban_qq_bot:i}})})]}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-sm md:text-base",children:"启用戳一戳功能"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否响应戳一戳消息"})]}),o.jsx(Ft,{checked:t.chat.enable_poke,onCheckedChange:i=>e({...t,chat:{...t.chat,enable_poke:i}})})]})]})]})})}function Jve({config:t,onChange:e}){return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"发送语音设置"}),o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-sm md:text-base",children:"使用 TTS 语音"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"请确保已配置 TTS 并有对应的适配器"})]}),o.jsx(Ft,{checked:t.voice.use_tts,onCheckedChange:n=>e({...t,voice:{use_tts:n}})})]})]})})}function eye({config:t,onChange:e}){return o.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:o.jsxs("div",{children:[o.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"调试设置"}),o.jsx("div",{className:"grid gap-3 md:gap-4",children:o.jsxs("div",{className:"grid gap-2",children:[o.jsx(he,{className:"text-sm md:text-base",children:"日志等级"}),o.jsxs(Vt,{value:t.debug.level,onValueChange:n=>e({...t,debug:{level:n}}),children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"DEBUG",children:"DEBUG(调试)"}),o.jsx(De,{value:"INFO",children:"INFO(信息)"}),o.jsx(De,{value:"WARNING",children:"WARNING(警告)"}),o.jsx(De,{value:"ERROR",children:"ERROR(错误)"}),o.jsx(De,{value:"CRITICAL",children:"CRITICAL(严重)"})]})]}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"设置适配器的日志输出等级"})]})})]})})}function OM(t){const e=[],n=String(t||"");let r=n.indexOf(","),s=0,i=!1;for(;!i;){r===-1&&(r=n.length,i=!0);const a=n.slice(s,r).trim();(a||!i)&&e.push(a),s=r+1,r=n.indexOf(",",s)}return e}function tye(t,e){const n={};return(t[t.length-1]===""?[...t,""]:t).join((n.padRight?" ":"")+","+(n.padLeft===!1?"":" ")).trim()}const nye=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,rye=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,sye={};function jM(t,e){return(sye.jsx?rye:nye).test(t)}const iye=/[ \t\n\f\r]/g;function aye(t){return typeof t=="object"?t.type==="text"?NM(t.value):!1:NM(t)}function NM(t){return t.replace(iye,"")===""}class pg{constructor(e,n,r){this.normal=n,this.property=e,r&&(this.space=r)}}pg.prototype.normal={};pg.prototype.property={};pg.prototype.space=void 0;function VQ(t,e){const n={},r={};for(const s of t)Object.assign(n,s.property),Object.assign(r,s.normal);return new pg(n,r,e)}function vp(t){return t.toLowerCase()}class Ai{constructor(e,n){this.attribute=n,this.property=e}}Ai.prototype.attribute="";Ai.prototype.booleanish=!1;Ai.prototype.boolean=!1;Ai.prototype.commaOrSpaceSeparated=!1;Ai.prototype.commaSeparated=!1;Ai.prototype.defined=!1;Ai.prototype.mustUseProperty=!1;Ai.prototype.number=!1;Ai.prototype.overloadedBoolean=!1;Ai.prototype.property="";Ai.prototype.spaceSeparated=!1;Ai.prototype.space=void 0;let oye=0;const en=kd(),ns=kd(),AO=kd(),Qe=kd(),mr=kd(),$h=kd(),Hi=kd();function kd(){return 2**++oye}const MO=Object.freeze(Object.defineProperty({__proto__:null,boolean:en,booleanish:ns,commaOrSpaceSeparated:Hi,commaSeparated:$h,number:Qe,overloadedBoolean:AO,spaceSeparated:mr},Symbol.toStringTag,{value:"Module"})),MS=Object.keys(MO);class hN extends Ai{constructor(e,n,r,s){let i=-1;if(super(e,n),CM(this,"space",s),typeof r=="number")for(;++i4&&n.slice(0,4)==="data"&&hye.test(e)){if(e.charAt(4)==="-"){const i=e.slice(5).replace(TM,mye);r="data"+i.charAt(0).toUpperCase()+i.slice(1)}else{const i=e.slice(4);if(!TM.test(i)){let a=i.replace(dye,fye);a.charAt(0)!=="-"&&(a="-"+a),e="data"+a}}s=hN}return new s(r,e)}function fye(t){return"-"+t.toLowerCase()}function mye(t){return t.charAt(1).toUpperCase()}const JQ=VQ([UQ,lye,XQ,YQ,KQ],"html"),Fb=VQ([UQ,cye,XQ,YQ,KQ],"svg");function EM(t){const e=String(t||"").trim();return e?e.split(/[ \t\n\r\f]+/g):[]}function pye(t){return t.join(" ").trim()}var ch={},RS,_M;function gye(){if(_M)return RS;_M=1;var t=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,e=/\n/g,n=/^\s*/,r=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,s=/^:\s*/,i=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,a=/^[;\s]*/,l=/^\s+|\s+$/g,c=` -`,d="/",h="*",m="",g="comment",x="declaration";function y(S,k){if(typeof S!="string")throw new TypeError("First argument must be a string");if(!S)return[];k=k||{};var j=1,N=1;function T(I){var V=I.match(e);V&&(j+=V.length);var L=I.lastIndexOf(c);N=~L?I.length-L:N+I.length}function E(){var I={line:j,column:N};return function(V){return V.position=new _(I),q(),V}}function _(I){this.start=I,this.end={line:j,column:N},this.source=k.source}_.prototype.content=S;function A(I){var V=new Error(k.source+":"+j+":"+N+": "+I);if(V.reason=I,V.filename=k.source,V.line=j,V.column=N,V.source=S,!k.silent)throw V}function D(I){var V=I.exec(S);if(V){var L=V[0];return T(L),S=S.slice(L.length),V}}function q(){D(n)}function B(I){var V;for(I=I||[];V=H();)V!==!1&&I.push(V);return I}function H(){var I=E();if(!(d!=S.charAt(0)||h!=S.charAt(1))){for(var V=2;m!=S.charAt(V)&&(h!=S.charAt(V)||d!=S.charAt(V+1));)++V;if(V+=2,m===S.charAt(V-1))return A("End of comment missing");var L=S.slice(2,V-2);return N+=2,T(L),S=S.slice(V),N+=2,I({type:g,comment:L})}}function W(){var I=E(),V=D(r);if(V){if(H(),!D(s))return A("property missing ':'");var L=D(i),$=I({type:x,property:w(V[0].replace(t,m)),value:L?w(L[0].replace(t,m)):m});return D(a),$}}function ee(){var I=[];B(I);for(var V;V=W();)V!==!1&&(I.push(V),B(I));return I}return q(),ee()}function w(S){return S?S.replace(l,m):m}return RS=y,RS}var AM;function xye(){if(AM)return ch;AM=1;var t=ch&&ch.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(ch,"__esModule",{value:!0}),ch.default=n;const e=t(gye());function n(r,s){let i=null;if(!r||typeof r!="string")return i;const a=(0,e.default)(r),l=typeof s=="function";return a.forEach(c=>{if(c.type!=="declaration")return;const{property:d,value:h}=c;l?s(d,h,c):h&&(i=i||{},i[d]=h)}),i}return ch}var Km={},MM;function vye(){if(MM)return Km;MM=1,Object.defineProperty(Km,"__esModule",{value:!0}),Km.camelCase=void 0;var t=/^--[a-zA-Z0-9_-]+$/,e=/-([a-z])/g,n=/^[^-]+$/,r=/^-(webkit|moz|ms|o|khtml)-/,s=/^-(ms)-/,i=function(d){return!d||n.test(d)||t.test(d)},a=function(d,h){return h.toUpperCase()},l=function(d,h){return"".concat(h,"-")},c=function(d,h){return h===void 0&&(h={}),i(d)?d:(d=d.toLowerCase(),h.reactCompat?d=d.replace(s,l):d=d.replace(r,l),d.replace(e,a))};return Km.camelCase=c,Km}var Zm,RM;function yye(){if(RM)return Zm;RM=1;var t=Zm&&Zm.__importDefault||function(s){return s&&s.__esModule?s:{default:s}},e=t(xye()),n=vye();function r(s,i){var a={};return!s||typeof s!="string"||(0,e.default)(s,function(l,c){l&&c&&(a[(0,n.camelCase)(l,i)]=c)}),a}return r.default=r,Zm=r,Zm}var bye=yye();const wye=yd(bye),eV=tV("end"),fN=tV("start");function tV(t){return e;function e(n){const r=n&&n.position&&n.position[t]||{};if(typeof r.line=="number"&&r.line>0&&typeof r.column=="number"&&r.column>0)return{line:r.line,column:r.column,offset:typeof r.offset=="number"&&r.offset>-1?r.offset:void 0}}}function Sye(t){const e=fN(t),n=eV(t);if(e&&n)return{start:e,end:n}}function R0(t){return!t||typeof t!="object"?"":"position"in t||"type"in t?DM(t.position):"start"in t||"end"in t?DM(t):"line"in t||"column"in t?RO(t):""}function RO(t){return PM(t&&t.line)+":"+PM(t&&t.column)}function DM(t){return RO(t&&t.start)+"-"+RO(t&&t.end)}function PM(t){return t&&typeof t=="number"?t:1}class Gs extends Error{constructor(e,n,r){super(),typeof n=="string"&&(r=n,n=void 0);let s="",i={},a=!1;if(n&&("line"in n&&"column"in n?i={place:n}:"start"in n&&"end"in n?i={place:n}:"type"in n?i={ancestors:[n],place:n.position}:i={...n}),typeof e=="string"?s=e:!i.cause&&e&&(a=!0,s=e.message,i.cause=e),!i.ruleId&&!i.source&&typeof r=="string"){const c=r.indexOf(":");c===-1?i.ruleId=r:(i.source=r.slice(0,c),i.ruleId=r.slice(c+1))}if(!i.place&&i.ancestors&&i.ancestors){const c=i.ancestors[i.ancestors.length-1];c&&(i.place=c.position)}const l=i.place&&"start"in i.place?i.place.start:i.place;this.ancestors=i.ancestors||void 0,this.cause=i.cause||void 0,this.column=l?l.column:void 0,this.fatal=void 0,this.file="",this.message=s,this.line=l?l.line:void 0,this.name=R0(i.place)||"1:1",this.place=i.place||void 0,this.reason=this.message,this.ruleId=i.ruleId||void 0,this.source=i.source||void 0,this.stack=a&&i.cause&&typeof i.cause.stack=="string"?i.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}Gs.prototype.file="";Gs.prototype.name="";Gs.prototype.reason="";Gs.prototype.message="";Gs.prototype.stack="";Gs.prototype.column=void 0;Gs.prototype.line=void 0;Gs.prototype.ancestors=void 0;Gs.prototype.cause=void 0;Gs.prototype.fatal=void 0;Gs.prototype.place=void 0;Gs.prototype.ruleId=void 0;Gs.prototype.source=void 0;const mN={}.hasOwnProperty,kye=new Map,Oye=/[A-Z]/g,jye=new Set(["table","tbody","thead","tfoot","tr"]),Nye=new Set(["td","th"]),nV="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function Cye(t,e){if(!e||e.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const n=e.filePath||void 0;let r;if(e.development){if(typeof e.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");r=Pye(n,e.jsxDEV)}else{if(typeof e.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof e.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");r=Dye(n,e.jsx,e.jsxs)}const s={Fragment:e.Fragment,ancestors:[],components:e.components||{},create:r,elementAttributeNameCase:e.elementAttributeNameCase||"react",evaluater:e.createEvaluater?e.createEvaluater():void 0,filePath:n,ignoreInvalidStyle:e.ignoreInvalidStyle||!1,passKeys:e.passKeys!==!1,passNode:e.passNode||!1,schema:e.space==="svg"?Fb:JQ,stylePropertyNameCase:e.stylePropertyNameCase||"dom",tableCellAlignToStyle:e.tableCellAlignToStyle!==!1},i=rV(s,t,void 0);return i&&typeof i!="string"?i:s.create(t,s.Fragment,{children:i||void 0},void 0)}function rV(t,e,n){if(e.type==="element")return Tye(t,e,n);if(e.type==="mdxFlowExpression"||e.type==="mdxTextExpression")return Eye(t,e);if(e.type==="mdxJsxFlowElement"||e.type==="mdxJsxTextElement")return Aye(t,e,n);if(e.type==="mdxjsEsm")return _ye(t,e);if(e.type==="root")return Mye(t,e,n);if(e.type==="text")return Rye(t,e)}function Tye(t,e,n){const r=t.schema;let s=r;e.tagName.toLowerCase()==="svg"&&r.space==="html"&&(s=Fb,t.schema=s),t.ancestors.push(e);const i=iV(t,e.tagName,!1),a=zye(t,e);let l=gN(t,e);return jye.has(e.tagName)&&(l=l.filter(function(c){return typeof c=="string"?!aye(c):!0})),sV(t,a,i,e),pN(a,l),t.ancestors.pop(),t.schema=r,t.create(e,i,a,n)}function Eye(t,e){if(e.data&&e.data.estree&&t.evaluater){const r=e.data.estree.body[0];return r.type,t.evaluater.evaluateExpression(r.expression)}yp(t,e.position)}function _ye(t,e){if(e.data&&e.data.estree&&t.evaluater)return t.evaluater.evaluateProgram(e.data.estree);yp(t,e.position)}function Aye(t,e,n){const r=t.schema;let s=r;e.name==="svg"&&r.space==="html"&&(s=Fb,t.schema=s),t.ancestors.push(e);const i=e.name===null?t.Fragment:iV(t,e.name,!0),a=Iye(t,e),l=gN(t,e);return sV(t,a,i,e),pN(a,l),t.ancestors.pop(),t.schema=r,t.create(e,i,a,n)}function Mye(t,e,n){const r={};return pN(r,gN(t,e)),t.create(e,t.Fragment,r,n)}function Rye(t,e){return e.value}function sV(t,e,n,r){typeof n!="string"&&n!==t.Fragment&&t.passNode&&(e.node=r)}function pN(t,e){if(e.length>0){const n=e.length>1?e:e[0];n&&(t.children=n)}}function Dye(t,e,n){return r;function r(s,i,a,l){const d=Array.isArray(a.children)?n:e;return l?d(i,a,l):d(i,a)}}function Pye(t,e){return n;function n(r,s,i,a){const l=Array.isArray(i.children),c=fN(r);return e(s,i,a,l,{columnNumber:c?c.column-1:void 0,fileName:t,lineNumber:c?c.line:void 0},void 0)}}function zye(t,e){const n={};let r,s;for(s in e.properties)if(s!=="children"&&mN.call(e.properties,s)){const i=Lye(t,s,e.properties[s]);if(i){const[a,l]=i;t.tableCellAlignToStyle&&a==="align"&&typeof l=="string"&&Nye.has(e.tagName)?r=l:n[a]=l}}if(r){const i=n.style||(n.style={});i[t.stylePropertyNameCase==="css"?"text-align":"textAlign"]=r}return n}function Iye(t,e){const n={};for(const r of e.attributes)if(r.type==="mdxJsxExpressionAttribute")if(r.data&&r.data.estree&&t.evaluater){const i=r.data.estree.body[0];i.type;const a=i.expression;a.type;const l=a.properties[0];l.type,Object.assign(n,t.evaluater.evaluateExpression(l.argument))}else yp(t,e.position);else{const s=r.name;let i;if(r.value&&typeof r.value=="object")if(r.value.data&&r.value.data.estree&&t.evaluater){const l=r.value.data.estree.body[0];l.type,i=t.evaluater.evaluateExpression(l.expression)}else yp(t,e.position);else i=r.value===null?!0:r.value;n[s]=i}return n}function gN(t,e){const n=[];let r=-1;const s=t.passKeys?new Map:kye;for(;++rs?0:s+e:e=e>s?s:e,n=n>0?n:0,r.length<1e4)a=Array.from(r),a.unshift(e,n),t.splice(...a);else for(n&&t.splice(e,n);i0?(Ki(t,t.length,0,e),t):e}const LM={}.hasOwnProperty;function oV(t){const e={};let n=-1;for(;++n13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||(n&65535)===65535||(n&65535)===65534||n>1114111?"�":String.fromCodePoint(n)}function Xa(t){return t.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const ei=fu(/[A-Za-z]/),Vs=fu(/[\dA-Za-z]/),Wye=fu(/[#-'*+\--9=?A-Z^-~]/);function ky(t){return t!==null&&(t<32||t===127)}const DO=fu(/\d/),Gye=fu(/[\dA-Fa-f]/),Xye=fu(/[!-/:-@[-`{-~]/);function St(t){return t!==null&&t<-2}function dr(t){return t!==null&&(t<0||t===32)}function gn(t){return t===-2||t===-1||t===32}const qb=fu(new RegExp("\\p{P}|\\p{S}","u")),gd=fu(/\s/);function fu(t){return e;function e(n){return n!==null&&n>-1&&t.test(String.fromCharCode(n))}}function qf(t){const e=[];let n=-1,r=0,s=0;for(;++n55295&&i<57344){const l=t.charCodeAt(n+1);i<56320&&l>56319&&l<57344?(a=String.fromCharCode(i,l),s=1):a="�"}else a=String.fromCharCode(i);a&&(e.push(t.slice(r,n),encodeURIComponent(a)),r=n+s+1,a=""),s&&(n+=s,s=0)}return e.join("")+t.slice(r)}function cn(t,e,n,r){const s=r?r-1:Number.POSITIVE_INFINITY;let i=0;return a;function a(c){return gn(c)?(t.enter(n),l(c)):e(c)}function l(c){return gn(c)&&i++a))return;const A=e.events.length;let D=A,q,B;for(;D--;)if(e.events[D][0]==="exit"&&e.events[D][1].type==="chunkFlow"){if(q){B=e.events[D][1].end;break}q=!0}for(k(r),_=A;_N;){const E=n[T];e.containerState=E[1],E[0].exit.call(e,t)}n.length=N}function j(){s.write([null]),i=void 0,s=void 0,e.containerState._closeFlow=void 0}}function ebe(t,e,n){return cn(t,t.attempt(this.parser.constructs.document,e,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function hf(t){if(t===null||dr(t)||gd(t))return 1;if(qb(t))return 2}function $b(t,e,n){const r=[];let s=-1;for(;++s1&&t[n][1].end.offset-t[n][1].start.offset>1?2:1;const m={...t[r][1].end},g={...t[n][1].start};FM(m,-c),FM(g,c),a={type:c>1?"strongSequence":"emphasisSequence",start:m,end:{...t[r][1].end}},l={type:c>1?"strongSequence":"emphasisSequence",start:{...t[n][1].start},end:g},i={type:c>1?"strongText":"emphasisText",start:{...t[r][1].end},end:{...t[n][1].start}},s={type:c>1?"strong":"emphasis",start:{...a.start},end:{...l.end}},t[r][1].end={...a.start},t[n][1].start={...l.end},d=[],t[r][1].end.offset-t[r][1].start.offset&&(d=xa(d,[["enter",t[r][1],e],["exit",t[r][1],e]])),d=xa(d,[["enter",s,e],["enter",a,e],["exit",a,e],["enter",i,e]]),d=xa(d,$b(e.parser.constructs.insideSpan.null,t.slice(r+1,n),e)),d=xa(d,[["exit",i,e],["enter",l,e],["exit",l,e],["exit",s,e]]),t[n][1].end.offset-t[n][1].start.offset?(h=2,d=xa(d,[["enter",t[n][1],e],["exit",t[n][1],e]])):h=0,Ki(t,r-1,n-r+3,d),n=r+d.length-h-2;break}}for(n=-1;++n0&&gn(_)?cn(t,j,"linePrefix",i+1)(_):j(_)}function j(_){return _===null||St(_)?t.check(qM,w,T)(_):(t.enter("codeFlowValue"),N(_))}function N(_){return _===null||St(_)?(t.exit("codeFlowValue"),j(_)):(t.consume(_),N)}function T(_){return t.exit("codeFenced"),e(_)}function E(_,A,D){let q=0;return B;function B(V){return _.enter("lineEnding"),_.consume(V),_.exit("lineEnding"),H}function H(V){return _.enter("codeFencedFence"),gn(V)?cn(_,W,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(V):W(V)}function W(V){return V===l?(_.enter("codeFencedFenceSequence"),ee(V)):D(V)}function ee(V){return V===l?(q++,_.consume(V),ee):q>=a?(_.exit("codeFencedFenceSequence"),gn(V)?cn(_,I,"whitespace")(V):I(V)):D(V)}function I(V){return V===null||St(V)?(_.exit("codeFencedFence"),A(V)):D(V)}}}function hbe(t,e,n){const r=this;return s;function s(a){return a===null?n(a):(t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),i)}function i(a){return r.parser.lazy[r.now().line]?n(a):e(a)}}const PS={name:"codeIndented",tokenize:mbe},fbe={partial:!0,tokenize:pbe};function mbe(t,e,n){const r=this;return s;function s(d){return t.enter("codeIndented"),cn(t,i,"linePrefix",5)(d)}function i(d){const h=r.events[r.events.length-1];return h&&h[1].type==="linePrefix"&&h[2].sliceSerialize(h[1],!0).length>=4?a(d):n(d)}function a(d){return d===null?c(d):St(d)?t.attempt(fbe,a,c)(d):(t.enter("codeFlowValue"),l(d))}function l(d){return d===null||St(d)?(t.exit("codeFlowValue"),a(d)):(t.consume(d),l)}function c(d){return t.exit("codeIndented"),e(d)}}function pbe(t,e,n){const r=this;return s;function s(a){return r.parser.lazy[r.now().line]?n(a):St(a)?(t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),s):cn(t,i,"linePrefix",5)(a)}function i(a){const l=r.events[r.events.length-1];return l&&l[1].type==="linePrefix"&&l[2].sliceSerialize(l[1],!0).length>=4?e(a):St(a)?s(a):n(a)}}const gbe={name:"codeText",previous:vbe,resolve:xbe,tokenize:ybe};function xbe(t){let e=t.length-4,n=3,r,s;if((t[n][1].type==="lineEnding"||t[n][1].type==="space")&&(t[e][1].type==="lineEnding"||t[e][1].type==="space")){for(r=n;++r=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+e+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return ethis.left.length?this.right.slice(this.right.length-r+this.left.length,this.right.length-e+this.left.length).reverse():this.left.slice(e).concat(this.right.slice(this.right.length-r+this.left.length).reverse())}splice(e,n,r){const s=n||0;this.setCursor(Math.trunc(e));const i=this.right.splice(this.right.length-s,Number.POSITIVE_INFINITY);return r&&Jm(this.left,r),i.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(e){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(e)}pushMany(e){this.setCursor(Number.POSITIVE_INFINITY),Jm(this.left,e)}unshift(e){this.setCursor(0),this.right.push(e)}unshiftMany(e){this.setCursor(0),Jm(this.right,e.reverse())}setCursor(e){if(!(e===this.left.length||e>this.left.length&&this.right.length===0||e<0&&this.left.length===0))if(e=4?e(a):t.interrupt(r.parser.constructs.flow,n,e)(a)}}function fV(t,e,n,r,s,i,a,l,c){const d=c||Number.POSITIVE_INFINITY;let h=0;return m;function m(k){return k===60?(t.enter(r),t.enter(s),t.enter(i),t.consume(k),t.exit(i),g):k===null||k===32||k===41||ky(k)?n(k):(t.enter(r),t.enter(a),t.enter(l),t.enter("chunkString",{contentType:"string"}),w(k))}function g(k){return k===62?(t.enter(i),t.consume(k),t.exit(i),t.exit(s),t.exit(r),e):(t.enter(l),t.enter("chunkString",{contentType:"string"}),x(k))}function x(k){return k===62?(t.exit("chunkString"),t.exit(l),g(k)):k===null||k===60||St(k)?n(k):(t.consume(k),k===92?y:x)}function y(k){return k===60||k===62||k===92?(t.consume(k),x):x(k)}function w(k){return!h&&(k===null||k===41||dr(k))?(t.exit("chunkString"),t.exit(l),t.exit(a),t.exit(r),e(k)):h999||x===null||x===91||x===93&&!c||x===94&&!l&&"_hiddenFootnoteSupport"in a.parser.constructs?n(x):x===93?(t.exit(i),t.enter(s),t.consume(x),t.exit(s),t.exit(r),e):St(x)?(t.enter("lineEnding"),t.consume(x),t.exit("lineEnding"),h):(t.enter("chunkString",{contentType:"string"}),m(x))}function m(x){return x===null||x===91||x===93||St(x)||l++>999?(t.exit("chunkString"),h(x)):(t.consume(x),c||(c=!gn(x)),x===92?g:m)}function g(x){return x===91||x===92||x===93?(t.consume(x),l++,m):m(x)}}function pV(t,e,n,r,s,i){let a;return l;function l(g){return g===34||g===39||g===40?(t.enter(r),t.enter(s),t.consume(g),t.exit(s),a=g===40?41:g,c):n(g)}function c(g){return g===a?(t.enter(s),t.consume(g),t.exit(s),t.exit(r),e):(t.enter(i),d(g))}function d(g){return g===a?(t.exit(i),c(a)):g===null?n(g):St(g)?(t.enter("lineEnding"),t.consume(g),t.exit("lineEnding"),cn(t,d,"linePrefix")):(t.enter("chunkString",{contentType:"string"}),h(g))}function h(g){return g===a||g===null||St(g)?(t.exit("chunkString"),d(g)):(t.consume(g),g===92?m:h)}function m(g){return g===a||g===92?(t.consume(g),h):h(g)}}function D0(t,e){let n;return r;function r(s){return St(s)?(t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),n=!0,r):gn(s)?cn(t,r,n?"linePrefix":"lineSuffix")(s):e(s)}}const Cbe={name:"definition",tokenize:Ebe},Tbe={partial:!0,tokenize:_be};function Ebe(t,e,n){const r=this;let s;return i;function i(x){return t.enter("definition"),a(x)}function a(x){return mV.call(r,t,l,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(x)}function l(x){return s=Xa(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),x===58?(t.enter("definitionMarker"),t.consume(x),t.exit("definitionMarker"),c):n(x)}function c(x){return dr(x)?D0(t,d)(x):d(x)}function d(x){return fV(t,h,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(x)}function h(x){return t.attempt(Tbe,m,m)(x)}function m(x){return gn(x)?cn(t,g,"whitespace")(x):g(x)}function g(x){return x===null||St(x)?(t.exit("definition"),r.parser.defined.push(s),e(x)):n(x)}}function _be(t,e,n){return r;function r(l){return dr(l)?D0(t,s)(l):n(l)}function s(l){return pV(t,i,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(l)}function i(l){return gn(l)?cn(t,a,"whitespace")(l):a(l)}function a(l){return l===null||St(l)?e(l):n(l)}}const Abe={name:"hardBreakEscape",tokenize:Mbe};function Mbe(t,e,n){return r;function r(i){return t.enter("hardBreakEscape"),t.consume(i),s}function s(i){return St(i)?(t.exit("hardBreakEscape"),e(i)):n(i)}}const Rbe={name:"headingAtx",resolve:Dbe,tokenize:Pbe};function Dbe(t,e){let n=t.length-2,r=3,s,i;return t[r][1].type==="whitespace"&&(r+=2),n-2>r&&t[n][1].type==="whitespace"&&(n-=2),t[n][1].type==="atxHeadingSequence"&&(r===n-1||n-4>r&&t[n-2][1].type==="whitespace")&&(n-=r+1===n?2:4),n>r&&(s={type:"atxHeadingText",start:t[r][1].start,end:t[n][1].end},i={type:"chunkText",start:t[r][1].start,end:t[n][1].end,contentType:"text"},Ki(t,r,n-r+1,[["enter",s,e],["enter",i,e],["exit",i,e],["exit",s,e]])),t}function Pbe(t,e,n){let r=0;return s;function s(h){return t.enter("atxHeading"),i(h)}function i(h){return t.enter("atxHeadingSequence"),a(h)}function a(h){return h===35&&r++<6?(t.consume(h),a):h===null||dr(h)?(t.exit("atxHeadingSequence"),l(h)):n(h)}function l(h){return h===35?(t.enter("atxHeadingSequence"),c(h)):h===null||St(h)?(t.exit("atxHeading"),e(h)):gn(h)?cn(t,l,"whitespace")(h):(t.enter("atxHeadingText"),d(h))}function c(h){return h===35?(t.consume(h),c):(t.exit("atxHeadingSequence"),l(h))}function d(h){return h===null||h===35||dr(h)?(t.exit("atxHeadingText"),l(h)):(t.consume(h),d)}}const zbe=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],HM=["pre","script","style","textarea"],Ibe={concrete:!0,name:"htmlFlow",resolveTo:Fbe,tokenize:qbe},Lbe={partial:!0,tokenize:Hbe},Bbe={partial:!0,tokenize:$be};function Fbe(t){let e=t.length;for(;e--&&!(t[e][0]==="enter"&&t[e][1].type==="htmlFlow"););return e>1&&t[e-2][1].type==="linePrefix"&&(t[e][1].start=t[e-2][1].start,t[e+1][1].start=t[e-2][1].start,t.splice(e-2,2)),t}function qbe(t,e,n){const r=this;let s,i,a,l,c;return d;function d(z){return h(z)}function h(z){return t.enter("htmlFlow"),t.enter("htmlFlowData"),t.consume(z),m}function m(z){return z===33?(t.consume(z),g):z===47?(t.consume(z),i=!0,w):z===63?(t.consume(z),s=3,r.interrupt?e:R):ei(z)?(t.consume(z),a=String.fromCharCode(z),S):n(z)}function g(z){return z===45?(t.consume(z),s=2,x):z===91?(t.consume(z),s=5,l=0,y):ei(z)?(t.consume(z),s=4,r.interrupt?e:R):n(z)}function x(z){return z===45?(t.consume(z),r.interrupt?e:R):n(z)}function y(z){const U="CDATA[";return z===U.charCodeAt(l++)?(t.consume(z),l===U.length?r.interrupt?e:W:y):n(z)}function w(z){return ei(z)?(t.consume(z),a=String.fromCharCode(z),S):n(z)}function S(z){if(z===null||z===47||z===62||dr(z)){const U=z===47,te=a.toLowerCase();return!U&&!i&&HM.includes(te)?(s=1,r.interrupt?e(z):W(z)):zbe.includes(a.toLowerCase())?(s=6,U?(t.consume(z),k):r.interrupt?e(z):W(z)):(s=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(z):i?j(z):N(z))}return z===45||Vs(z)?(t.consume(z),a+=String.fromCharCode(z),S):n(z)}function k(z){return z===62?(t.consume(z),r.interrupt?e:W):n(z)}function j(z){return gn(z)?(t.consume(z),j):B(z)}function N(z){return z===47?(t.consume(z),B):z===58||z===95||ei(z)?(t.consume(z),T):gn(z)?(t.consume(z),N):B(z)}function T(z){return z===45||z===46||z===58||z===95||Vs(z)?(t.consume(z),T):E(z)}function E(z){return z===61?(t.consume(z),_):gn(z)?(t.consume(z),E):N(z)}function _(z){return z===null||z===60||z===61||z===62||z===96?n(z):z===34||z===39?(t.consume(z),c=z,A):gn(z)?(t.consume(z),_):D(z)}function A(z){return z===c?(t.consume(z),c=null,q):z===null||St(z)?n(z):(t.consume(z),A)}function D(z){return z===null||z===34||z===39||z===47||z===60||z===61||z===62||z===96||dr(z)?E(z):(t.consume(z),D)}function q(z){return z===47||z===62||gn(z)?N(z):n(z)}function B(z){return z===62?(t.consume(z),H):n(z)}function H(z){return z===null||St(z)?W(z):gn(z)?(t.consume(z),H):n(z)}function W(z){return z===45&&s===2?(t.consume(z),L):z===60&&s===1?(t.consume(z),$):z===62&&s===4?(t.consume(z),ie):z===63&&s===3?(t.consume(z),R):z===93&&s===5?(t.consume(z),Y):St(z)&&(s===6||s===7)?(t.exit("htmlFlowData"),t.check(Lbe,X,ee)(z)):z===null||St(z)?(t.exit("htmlFlowData"),ee(z)):(t.consume(z),W)}function ee(z){return t.check(Bbe,I,X)(z)}function I(z){return t.enter("lineEnding"),t.consume(z),t.exit("lineEnding"),V}function V(z){return z===null||St(z)?ee(z):(t.enter("htmlFlowData"),W(z))}function L(z){return z===45?(t.consume(z),R):W(z)}function $(z){return z===47?(t.consume(z),a="",K):W(z)}function K(z){if(z===62){const U=a.toLowerCase();return HM.includes(U)?(t.consume(z),ie):W(z)}return ei(z)&&a.length<8?(t.consume(z),a+=String.fromCharCode(z),K):W(z)}function Y(z){return z===93?(t.consume(z),R):W(z)}function R(z){return z===62?(t.consume(z),ie):z===45&&s===2?(t.consume(z),R):W(z)}function ie(z){return z===null||St(z)?(t.exit("htmlFlowData"),X(z)):(t.consume(z),ie)}function X(z){return t.exit("htmlFlow"),e(z)}}function $be(t,e,n){const r=this;return s;function s(a){return St(a)?(t.enter("lineEnding"),t.consume(a),t.exit("lineEnding"),i):n(a)}function i(a){return r.parser.lazy[r.now().line]?n(a):e(a)}}function Hbe(t,e,n){return r;function r(s){return t.enter("lineEnding"),t.consume(s),t.exit("lineEnding"),t.attempt(gg,e,n)}}const Qbe={name:"htmlText",tokenize:Vbe};function Vbe(t,e,n){const r=this;let s,i,a;return l;function l(R){return t.enter("htmlText"),t.enter("htmlTextData"),t.consume(R),c}function c(R){return R===33?(t.consume(R),d):R===47?(t.consume(R),E):R===63?(t.consume(R),N):ei(R)?(t.consume(R),D):n(R)}function d(R){return R===45?(t.consume(R),h):R===91?(t.consume(R),i=0,y):ei(R)?(t.consume(R),j):n(R)}function h(R){return R===45?(t.consume(R),x):n(R)}function m(R){return R===null?n(R):R===45?(t.consume(R),g):St(R)?(a=m,$(R)):(t.consume(R),m)}function g(R){return R===45?(t.consume(R),x):m(R)}function x(R){return R===62?L(R):R===45?g(R):m(R)}function y(R){const ie="CDATA[";return R===ie.charCodeAt(i++)?(t.consume(R),i===ie.length?w:y):n(R)}function w(R){return R===null?n(R):R===93?(t.consume(R),S):St(R)?(a=w,$(R)):(t.consume(R),w)}function S(R){return R===93?(t.consume(R),k):w(R)}function k(R){return R===62?L(R):R===93?(t.consume(R),k):w(R)}function j(R){return R===null||R===62?L(R):St(R)?(a=j,$(R)):(t.consume(R),j)}function N(R){return R===null?n(R):R===63?(t.consume(R),T):St(R)?(a=N,$(R)):(t.consume(R),N)}function T(R){return R===62?L(R):N(R)}function E(R){return ei(R)?(t.consume(R),_):n(R)}function _(R){return R===45||Vs(R)?(t.consume(R),_):A(R)}function A(R){return St(R)?(a=A,$(R)):gn(R)?(t.consume(R),A):L(R)}function D(R){return R===45||Vs(R)?(t.consume(R),D):R===47||R===62||dr(R)?q(R):n(R)}function q(R){return R===47?(t.consume(R),L):R===58||R===95||ei(R)?(t.consume(R),B):St(R)?(a=q,$(R)):gn(R)?(t.consume(R),q):L(R)}function B(R){return R===45||R===46||R===58||R===95||Vs(R)?(t.consume(R),B):H(R)}function H(R){return R===61?(t.consume(R),W):St(R)?(a=H,$(R)):gn(R)?(t.consume(R),H):q(R)}function W(R){return R===null||R===60||R===61||R===62||R===96?n(R):R===34||R===39?(t.consume(R),s=R,ee):St(R)?(a=W,$(R)):gn(R)?(t.consume(R),W):(t.consume(R),I)}function ee(R){return R===s?(t.consume(R),s=void 0,V):R===null?n(R):St(R)?(a=ee,$(R)):(t.consume(R),ee)}function I(R){return R===null||R===34||R===39||R===60||R===61||R===96?n(R):R===47||R===62||dr(R)?q(R):(t.consume(R),I)}function V(R){return R===47||R===62||dr(R)?q(R):n(R)}function L(R){return R===62?(t.consume(R),t.exit("htmlTextData"),t.exit("htmlText"),e):n(R)}function $(R){return t.exit("htmlTextData"),t.enter("lineEnding"),t.consume(R),t.exit("lineEnding"),K}function K(R){return gn(R)?cn(t,Y,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(R):Y(R)}function Y(R){return t.enter("htmlTextData"),a(R)}}const yN={name:"labelEnd",resolveAll:Xbe,resolveTo:Ybe,tokenize:Kbe},Ube={tokenize:Zbe},Wbe={tokenize:Jbe},Gbe={tokenize:ewe};function Xbe(t){let e=-1;const n=[];for(;++e=3&&(d===null||St(d))?(t.exit("thematicBreak"),e(d)):n(d)}function c(d){return d===s?(t.consume(d),r++,c):(t.exit("thematicBreakSequence"),gn(d)?cn(t,l,"whitespace")(d):l(d))}}const pi={continuation:{tokenize:uwe},exit:hwe,name:"list",tokenize:cwe},owe={partial:!0,tokenize:fwe},lwe={partial:!0,tokenize:dwe};function cwe(t,e,n){const r=this,s=r.events[r.events.length-1];let i=s&&s[1].type==="linePrefix"?s[2].sliceSerialize(s[1],!0).length:0,a=0;return l;function l(x){const y=r.containerState.type||(x===42||x===43||x===45?"listUnordered":"listOrdered");if(y==="listUnordered"?!r.containerState.marker||x===r.containerState.marker:DO(x)){if(r.containerState.type||(r.containerState.type=y,t.enter(y,{_container:!0})),y==="listUnordered")return t.enter("listItemPrefix"),x===42||x===45?t.check(Cv,n,d)(x):d(x);if(!r.interrupt||x===49)return t.enter("listItemPrefix"),t.enter("listItemValue"),c(x)}return n(x)}function c(x){return DO(x)&&++a<10?(t.consume(x),c):(!r.interrupt||a<2)&&(r.containerState.marker?x===r.containerState.marker:x===41||x===46)?(t.exit("listItemValue"),d(x)):n(x)}function d(x){return t.enter("listItemMarker"),t.consume(x),t.exit("listItemMarker"),r.containerState.marker=r.containerState.marker||x,t.check(gg,r.interrupt?n:h,t.attempt(owe,g,m))}function h(x){return r.containerState.initialBlankLine=!0,i++,g(x)}function m(x){return gn(x)?(t.enter("listItemPrefixWhitespace"),t.consume(x),t.exit("listItemPrefixWhitespace"),g):n(x)}function g(x){return r.containerState.size=i+r.sliceSerialize(t.exit("listItemPrefix"),!0).length,e(x)}}function uwe(t,e,n){const r=this;return r.containerState._closeFlow=void 0,t.check(gg,s,i);function s(l){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,cn(t,e,"listItemIndent",r.containerState.size+1)(l)}function i(l){return r.containerState.furtherBlankLines||!gn(l)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,a(l)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,t.attempt(lwe,e,a)(l))}function a(l){return r.containerState._closeFlow=!0,r.interrupt=void 0,cn(t,t.attempt(pi,e,n),"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(l)}}function dwe(t,e,n){const r=this;return cn(t,s,"listItemIndent",r.containerState.size+1);function s(i){const a=r.events[r.events.length-1];return a&&a[1].type==="listItemIndent"&&a[2].sliceSerialize(a[1],!0).length===r.containerState.size?e(i):n(i)}}function hwe(t){t.exit(this.containerState.type)}function fwe(t,e,n){const r=this;return cn(t,s,"listItemPrefixWhitespace",r.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function s(i){const a=r.events[r.events.length-1];return!gn(i)&&a&&a[1].type==="listItemPrefixWhitespace"?e(i):n(i)}}const QM={name:"setextUnderline",resolveTo:mwe,tokenize:pwe};function mwe(t,e){let n=t.length,r,s,i;for(;n--;)if(t[n][0]==="enter"){if(t[n][1].type==="content"){r=n;break}t[n][1].type==="paragraph"&&(s=n)}else t[n][1].type==="content"&&t.splice(n,1),!i&&t[n][1].type==="definition"&&(i=n);const a={type:"setextHeading",start:{...t[r][1].start},end:{...t[t.length-1][1].end}};return t[s][1].type="setextHeadingText",i?(t.splice(s,0,["enter",a,e]),t.splice(i+1,0,["exit",t[r][1],e]),t[r][1].end={...t[i][1].end}):t[r][1]=a,t.push(["exit",a,e]),t}function pwe(t,e,n){const r=this;let s;return i;function i(d){let h=r.events.length,m;for(;h--;)if(r.events[h][1].type!=="lineEnding"&&r.events[h][1].type!=="linePrefix"&&r.events[h][1].type!=="content"){m=r.events[h][1].type==="paragraph";break}return!r.parser.lazy[r.now().line]&&(r.interrupt||m)?(t.enter("setextHeadingLine"),s=d,a(d)):n(d)}function a(d){return t.enter("setextHeadingLineSequence"),l(d)}function l(d){return d===s?(t.consume(d),l):(t.exit("setextHeadingLineSequence"),gn(d)?cn(t,c,"lineSuffix")(d):c(d))}function c(d){return d===null||St(d)?(t.exit("setextHeadingLine"),e(d)):n(d)}}const gwe={tokenize:xwe};function xwe(t){const e=this,n=t.attempt(gg,r,t.attempt(this.parser.constructs.flowInitial,s,cn(t,t.attempt(this.parser.constructs.flow,s,t.attempt(Sbe,s)),"linePrefix")));return n;function r(i){if(i===null){t.consume(i);return}return t.enter("lineEndingBlank"),t.consume(i),t.exit("lineEndingBlank"),e.currentConstruct=void 0,n}function s(i){if(i===null){t.consume(i);return}return t.enter("lineEnding"),t.consume(i),t.exit("lineEnding"),e.currentConstruct=void 0,n}}const vwe={resolveAll:xV()},ywe=gV("string"),bwe=gV("text");function gV(t){return{resolveAll:xV(t==="text"?wwe:void 0),tokenize:e};function e(n){const r=this,s=this.parser.constructs[t],i=n.attempt(s,a,l);return a;function a(h){return d(h)?i(h):l(h)}function l(h){if(h===null){n.consume(h);return}return n.enter("data"),n.consume(h),c}function c(h){return d(h)?(n.exit("data"),i(h)):(n.consume(h),c)}function d(h){if(h===null)return!0;const m=s[h];let g=-1;if(m)for(;++g-1){const l=a[0];typeof l=="string"?a[0]=l.slice(r):a.shift()}i>0&&a.push(t[s].slice(0,i))}return a}function Dwe(t,e){let n=-1;const r=[];let s;for(;++n0){const Rt=rt.tokenStack[rt.tokenStack.length-1];(Rt[1]||UM).call(rt,void 0,Rt[0])}for(ze.position={start:Ec(Ne.length>0?Ne[0][1].start:{line:1,column:1,offset:0}),end:Ec(Ne.length>0?Ne[Ne.length-2][1].end:{line:1,column:1,offset:0})},zt=-1;++zt1?"-"+l:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(a)}]};t.patch(e,c);const d={type:"element",tagName:"sup",properties:{},children:[c]};return t.patch(e,d),t.applyData(e,d)}function Kwe(t,e){const n={type:"element",tagName:"h"+e.depth,properties:{},children:t.all(e)};return t.patch(e,n),t.applyData(e,n)}function Zwe(t,e){if(t.options.allowDangerousHtml){const n={type:"raw",value:e.value};return t.patch(e,n),t.applyData(e,n)}}function bV(t,e){const n=e.referenceType;let r="]";if(n==="collapsed"?r+="[]":n==="full"&&(r+="["+(e.label||e.identifier)+"]"),e.type==="imageReference")return[{type:"text",value:"!["+e.alt+r}];const s=t.all(e),i=s[0];i&&i.type==="text"?i.value="["+i.value:s.unshift({type:"text",value:"["});const a=s[s.length-1];return a&&a.type==="text"?a.value+=r:s.push({type:"text",value:r}),s}function Jwe(t,e){const n=String(e.identifier).toUpperCase(),r=t.definitionById.get(n);if(!r)return bV(t,e);const s={src:qf(r.url||""),alt:e.alt};r.title!==null&&r.title!==void 0&&(s.title=r.title);const i={type:"element",tagName:"img",properties:s,children:[]};return t.patch(e,i),t.applyData(e,i)}function e2e(t,e){const n={src:qf(e.url)};e.alt!==null&&e.alt!==void 0&&(n.alt=e.alt),e.title!==null&&e.title!==void 0&&(n.title=e.title);const r={type:"element",tagName:"img",properties:n,children:[]};return t.patch(e,r),t.applyData(e,r)}function t2e(t,e){const n={type:"text",value:e.value.replace(/\r?\n|\r/g," ")};t.patch(e,n);const r={type:"element",tagName:"code",properties:{},children:[n]};return t.patch(e,r),t.applyData(e,r)}function n2e(t,e){const n=String(e.identifier).toUpperCase(),r=t.definitionById.get(n);if(!r)return bV(t,e);const s={href:qf(r.url||"")};r.title!==null&&r.title!==void 0&&(s.title=r.title);const i={type:"element",tagName:"a",properties:s,children:t.all(e)};return t.patch(e,i),t.applyData(e,i)}function r2e(t,e){const n={href:qf(e.url)};e.title!==null&&e.title!==void 0&&(n.title=e.title);const r={type:"element",tagName:"a",properties:n,children:t.all(e)};return t.patch(e,r),t.applyData(e,r)}function s2e(t,e,n){const r=t.all(e),s=n?i2e(n):wV(e),i={},a=[];if(typeof e.checked=="boolean"){const h=r[0];let m;h&&h.type==="element"&&h.tagName==="p"?m=h:(m={type:"element",tagName:"p",properties:{},children:[]},r.unshift(m)),m.children.length>0&&m.children.unshift({type:"text",value:" "}),m.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:e.checked,disabled:!0},children:[]}),i.className=["task-list-item"]}let l=-1;for(;++l1}function a2e(t,e){const n={},r=t.all(e);let s=-1;for(typeof e.start=="number"&&e.start!==1&&(n.start=e.start);++s0){const a={type:"element",tagName:"tbody",properties:{},children:t.wrap(n,!0)},l=fN(e.children[1]),c=eV(e.children[e.children.length-1]);l&&c&&(a.position={start:l,end:c}),s.push(a)}const i={type:"element",tagName:"table",properties:{},children:t.wrap(s,!0)};return t.patch(e,i),t.applyData(e,i)}function d2e(t,e,n){const r=n?n.children:void 0,i=(r?r.indexOf(e):1)===0?"th":"td",a=n&&n.type==="table"?n.align:void 0,l=a?a.length:e.children.length;let c=-1;const d=[];for(;++c0,!0),r[0]),s=r.index+r[0].length,r=n.exec(e);return i.push(XM(e.slice(s),s>0,!1)),i.join("")}function XM(t,e,n){let r=0,s=t.length;if(e){let i=t.codePointAt(r);for(;i===WM||i===GM;)r++,i=t.codePointAt(r)}if(n){let i=t.codePointAt(s-1);for(;i===WM||i===GM;)s--,i=t.codePointAt(s-1)}return s>r?t.slice(r,s):""}function m2e(t,e){const n={type:"text",value:f2e(String(e.value))};return t.patch(e,n),t.applyData(e,n)}function p2e(t,e){const n={type:"element",tagName:"hr",properties:{},children:[]};return t.patch(e,n),t.applyData(e,n)}const g2e={blockquote:Vwe,break:Uwe,code:Wwe,delete:Gwe,emphasis:Xwe,footnoteReference:Ywe,heading:Kwe,html:Zwe,imageReference:Jwe,image:e2e,inlineCode:t2e,linkReference:n2e,link:r2e,listItem:s2e,list:a2e,paragraph:o2e,root:l2e,strong:c2e,table:u2e,tableCell:h2e,tableRow:d2e,text:m2e,thematicBreak:p2e,toml:M1,yaml:M1,definition:M1,footnoteDefinition:M1};function M1(){}const SV=-1,Hb=0,P0=1,Oy=2,bN=3,wN=4,SN=5,kN=6,kV=7,OV=8,YM=typeof self=="object"?self:globalThis,x2e=(t,e)=>{const n=(s,i)=>(t.set(i,s),s),r=s=>{if(t.has(s))return t.get(s);const[i,a]=e[s];switch(i){case Hb:case SV:return n(a,s);case P0:{const l=n([],s);for(const c of a)l.push(r(c));return l}case Oy:{const l=n({},s);for(const[c,d]of a)l[r(c)]=r(d);return l}case bN:return n(new Date(a),s);case wN:{const{source:l,flags:c}=a;return n(new RegExp(l,c),s)}case SN:{const l=n(new Map,s);for(const[c,d]of a)l.set(r(c),r(d));return l}case kN:{const l=n(new Set,s);for(const c of a)l.add(r(c));return l}case kV:{const{name:l,message:c}=a;return n(new YM[l](c),s)}case OV:return n(BigInt(a),s);case"BigInt":return n(Object(BigInt(a)),s);case"ArrayBuffer":return n(new Uint8Array(a).buffer,a);case"DataView":{const{buffer:l}=new Uint8Array(a);return n(new DataView(l),a)}}return n(new YM[i](a),s)};return r},KM=t=>x2e(new Map,t)(0),uh="",{toString:v2e}={},{keys:y2e}=Object,e0=t=>{const e=typeof t;if(e!=="object"||!t)return[Hb,e];const n=v2e.call(t).slice(8,-1);switch(n){case"Array":return[P0,uh];case"Object":return[Oy,uh];case"Date":return[bN,uh];case"RegExp":return[wN,uh];case"Map":return[SN,uh];case"Set":return[kN,uh];case"DataView":return[P0,n]}return n.includes("Array")?[P0,n]:n.includes("Error")?[kV,n]:[Oy,n]},R1=([t,e])=>t===Hb&&(e==="function"||e==="symbol"),b2e=(t,e,n,r)=>{const s=(a,l)=>{const c=r.push(a)-1;return n.set(l,c),c},i=a=>{if(n.has(a))return n.get(a);let[l,c]=e0(a);switch(l){case Hb:{let h=a;switch(c){case"bigint":l=OV,h=a.toString();break;case"function":case"symbol":if(t)throw new TypeError("unable to serialize "+c);h=null;break;case"undefined":return s([SV],a)}return s([l,h],a)}case P0:{if(c){let g=a;return c==="DataView"?g=new Uint8Array(a.buffer):c==="ArrayBuffer"&&(g=new Uint8Array(a)),s([c,[...g]],a)}const h=[],m=s([l,h],a);for(const g of a)h.push(i(g));return m}case Oy:{if(c)switch(c){case"BigInt":return s([c,a.toString()],a);case"Boolean":case"Number":case"String":return s([c,a.valueOf()],a)}if(e&&"toJSON"in a)return i(a.toJSON());const h=[],m=s([l,h],a);for(const g of y2e(a))(t||!R1(e0(a[g])))&&h.push([i(g),i(a[g])]);return m}case bN:return s([l,a.toISOString()],a);case wN:{const{source:h,flags:m}=a;return s([l,{source:h,flags:m}],a)}case SN:{const h=[],m=s([l,h],a);for(const[g,x]of a)(t||!(R1(e0(g))||R1(e0(x))))&&h.push([i(g),i(x)]);return m}case kN:{const h=[],m=s([l,h],a);for(const g of a)(t||!R1(e0(g)))&&h.push(i(g));return m}}const{message:d}=a;return s([l,{name:c,message:d}],a)};return i},ZM=(t,{json:e,lossy:n}={})=>{const r=[];return b2e(!(e||n),!!e,new Map,r)(t),r},jy=typeof structuredClone=="function"?(t,e)=>e&&("json"in e||"lossy"in e)?KM(ZM(t,e)):structuredClone(t):(t,e)=>KM(ZM(t,e));function w2e(t,e){const n=[{type:"text",value:"↩"}];return e>1&&n.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(e)}]}),n}function S2e(t,e){return"Back to reference "+(t+1)+(e>1?"-"+e:"")}function k2e(t){const e=typeof t.options.clobberPrefix=="string"?t.options.clobberPrefix:"user-content-",n=t.options.footnoteBackContent||w2e,r=t.options.footnoteBackLabel||S2e,s=t.options.footnoteLabel||"Footnotes",i=t.options.footnoteLabelTagName||"h2",a=t.options.footnoteLabelProperties||{className:["sr-only"]},l=[];let c=-1;for(;++c0&&y.push({type:"text",value:" "});let j=typeof n=="string"?n:n(c,x);typeof j=="string"&&(j={type:"text",value:j}),y.push({type:"element",tagName:"a",properties:{href:"#"+e+"fnref-"+g+(x>1?"-"+x:""),dataFootnoteBackref:"",ariaLabel:typeof r=="string"?r:r(c,x),className:["data-footnote-backref"]},children:Array.isArray(j)?j:[j]})}const S=h[h.length-1];if(S&&S.type==="element"&&S.tagName==="p"){const j=S.children[S.children.length-1];j&&j.type==="text"?j.value+=" ":S.children.push({type:"text",value:" "}),S.children.push(...y)}else h.push(...y);const k={type:"element",tagName:"li",properties:{id:e+"fn-"+g},children:t.wrap(h,!0)};t.patch(d,k),l.push(k)}if(l.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:i,properties:{...jy(a),id:"footnote-label"},children:[{type:"text",value:s}]},{type:"text",value:` -`},{type:"element",tagName:"ol",properties:{},children:t.wrap(l,!0)},{type:"text",value:` -`}]}}const xg=(function(t){if(t==null)return C2e;if(typeof t=="function")return Qb(t);if(typeof t=="object")return Array.isArray(t)?O2e(t):j2e(t);if(typeof t=="string")return N2e(t);throw new Error("Expected function, string, or object as test")});function O2e(t){const e=[];let n=-1;for(;++n":""))+")"})}return g;function g(){let x=jV,y,w,S;if((!e||i(c,d,h[h.length-1]||void 0))&&(x=_2e(n(c,h)),x[0]===zO))return x;if("children"in c&&c.children){const k=c;if(k.children&&x[0]!==NV)for(w=(r?k.children.length:-1)+a,S=h.concat(k);w>-1&&w0&&n.push({type:"text",value:` -`}),n}function JM(t){let e=0,n=t.charCodeAt(e);for(;n===9||n===32;)e++,n=t.charCodeAt(e);return t.slice(e)}function eR(t,e){const n=M2e(t,e),r=n.one(t,void 0),s=k2e(n),i=Array.isArray(r)?{type:"root",children:r}:r||{type:"root",children:[]};return s&&i.children.push({type:"text",value:` -`},s),i}function I2e(t,e){return t&&"run"in t?async function(n,r){const s=eR(n,{file:r,...e});await t.run(s,r)}:function(n,r){return eR(n,{file:r,...t||e})}}function tR(t){if(t)throw t}var IS,nR;function L2e(){if(nR)return IS;nR=1;var t=Object.prototype.hasOwnProperty,e=Object.prototype.toString,n=Object.defineProperty,r=Object.getOwnPropertyDescriptor,s=function(d){return typeof Array.isArray=="function"?Array.isArray(d):e.call(d)==="[object Array]"},i=function(d){if(!d||e.call(d)!=="[object Object]")return!1;var h=t.call(d,"constructor"),m=d.constructor&&d.constructor.prototype&&t.call(d.constructor.prototype,"isPrototypeOf");if(d.constructor&&!h&&!m)return!1;var g;for(g in d);return typeof g>"u"||t.call(d,g)},a=function(d,h){n&&h.name==="__proto__"?n(d,h.name,{enumerable:!0,configurable:!0,value:h.newValue,writable:!0}):d[h.name]=h.newValue},l=function(d,h){if(h==="__proto__")if(t.call(d,h)){if(r)return r(d,h).value}else return;return d[h]};return IS=function c(){var d,h,m,g,x,y,w=arguments[0],S=1,k=arguments.length,j=!1;for(typeof w=="boolean"&&(j=w,w=arguments[1]||{},S=2),(w==null||typeof w!="object"&&typeof w!="function")&&(w={});Sa.length;let c;l&&a.push(s);try{c=t.apply(this,a)}catch(d){const h=d;if(l&&n)throw h;return s(h)}l||(c&&c.then&&typeof c.then=="function"?c.then(i,s):c instanceof Error?s(c):i(c))}function s(a,...l){n||(n=!0,e(a,...l))}function i(a){s(null,a)}}const vo={basename:$2e,dirname:H2e,extname:Q2e,join:V2e,sep:"/"};function $2e(t,e){if(e!==void 0&&typeof e!="string")throw new TypeError('"ext" argument must be a string');vg(t);let n=0,r=-1,s=t.length,i;if(e===void 0||e.length===0||e.length>t.length){for(;s--;)if(t.codePointAt(s)===47){if(i){n=s+1;break}}else r<0&&(i=!0,r=s+1);return r<0?"":t.slice(n,r)}if(e===t)return"";let a=-1,l=e.length-1;for(;s--;)if(t.codePointAt(s)===47){if(i){n=s+1;break}}else a<0&&(i=!0,a=s+1),l>-1&&(t.codePointAt(s)===e.codePointAt(l--)?l<0&&(r=s):(l=-1,r=a));return n===r?r=a:r<0&&(r=t.length),t.slice(n,r)}function H2e(t){if(vg(t),t.length===0)return".";let e=-1,n=t.length,r;for(;--n;)if(t.codePointAt(n)===47){if(r){e=n;break}}else r||(r=!0);return e<0?t.codePointAt(0)===47?"/":".":e===1&&t.codePointAt(0)===47?"//":t.slice(0,e)}function Q2e(t){vg(t);let e=t.length,n=-1,r=0,s=-1,i=0,a;for(;e--;){const l=t.codePointAt(e);if(l===47){if(a){r=e+1;break}continue}n<0&&(a=!0,n=e+1),l===46?s<0?s=e:i!==1&&(i=1):s>-1&&(i=-1)}return s<0||n<0||i===0||i===1&&s===n-1&&s===r+1?"":t.slice(s,n)}function V2e(...t){let e=-1,n;for(;++e0&&t.codePointAt(t.length-1)===47&&(n+="/"),e?"/"+n:n}function W2e(t,e){let n="",r=0,s=-1,i=0,a=-1,l,c;for(;++a<=t.length;){if(a2){if(c=n.lastIndexOf("/"),c!==n.length-1){c<0?(n="",r=0):(n=n.slice(0,c),r=n.length-1-n.lastIndexOf("/")),s=a,i=0;continue}}else if(n.length>0){n="",r=0,s=a,i=0;continue}}e&&(n=n.length>0?n+"/..":"..",r=2)}else n.length>0?n+="/"+t.slice(s+1,a):n=t.slice(s+1,a),r=a-s-1;s=a,i=0}else l===46&&i>-1?i++:i=-1}return n}function vg(t){if(typeof t!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(t))}const G2e={cwd:X2e};function X2e(){return"/"}function BO(t){return!!(t!==null&&typeof t=="object"&&"href"in t&&t.href&&"protocol"in t&&t.protocol&&t.auth===void 0)}function Y2e(t){if(typeof t=="string")t=new URL(t);else if(!BO(t)){const e=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+t+"`");throw e.code="ERR_INVALID_ARG_TYPE",e}if(t.protocol!=="file:"){const e=new TypeError("The URL must be of scheme file");throw e.code="ERR_INVALID_URL_SCHEME",e}return K2e(t)}function K2e(t){if(t.hostname!==""){const r=new TypeError('File URL host must be "localhost" or empty on darwin');throw r.code="ERR_INVALID_FILE_URL_HOST",r}const e=t.pathname;let n=-1;for(;++n0){let[x,...y]=h;const w=r[g][1];LO(w)&&LO(x)&&(x=LS(!0,w,x)),r[g]=[d,x,...y]}}}}const t4e=new NN().freeze();function $S(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `parser`")}function HS(t,e){if(typeof e!="function")throw new TypeError("Cannot `"+t+"` without `compiler`")}function QS(t,e){if(e)throw new Error("Cannot call `"+t+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function sR(t){if(!LO(t)||typeof t.type!="string")throw new TypeError("Expected node, got `"+t+"`")}function iR(t,e,n){if(!n)throw new Error("`"+t+"` finished async. Use `"+e+"` instead")}function D1(t){return n4e(t)?t:new CV(t)}function n4e(t){return!!(t&&typeof t=="object"&&"message"in t&&"messages"in t)}function r4e(t){return typeof t=="string"||s4e(t)}function s4e(t){return!!(t&&typeof t=="object"&&"byteLength"in t&&"byteOffset"in t)}const i4e="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",aR=[],oR={allowDangerousHtml:!0},a4e=/^(https?|ircs?|mailto|xmpp)$/i,o4e=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function l4e(t){const e=c4e(t),n=u4e(t);return d4e(e.runSync(e.parse(n),n),t)}function c4e(t){const e=t.rehypePlugins||aR,n=t.remarkPlugins||aR,r=t.remarkRehypeOptions?{...t.remarkRehypeOptions,...oR}:oR;return t4e().use(Qwe).use(n).use(I2e,r).use(e)}function u4e(t){const e=t.children||"",n=new CV;return typeof e=="string"&&(n.value=e),n}function d4e(t,e){const n=e.allowedElements,r=e.allowElement,s=e.components,i=e.disallowedElements,a=e.skipHtml,l=e.unwrapDisallowed,c=e.urlTransform||h4e;for(const h of o4e)Object.hasOwn(e,h.from)&&(""+h.from+(h.to?"use `"+h.to+"` instead":"remove it")+i4e+h.id,void 0);return jN(t,d),Cye(t,{Fragment:o.Fragment,components:s,ignoreInvalidStyle:!0,jsx:o.jsx,jsxs:o.jsxs,passKeys:!0,passNode:!0});function d(h,m,g){if(h.type==="raw"&&g&&typeof m=="number")return a?g.children.splice(m,1):g.children[m]={type:"text",value:h.value},m;if(h.type==="element"){let x;for(x in DS)if(Object.hasOwn(DS,x)&&Object.hasOwn(h.properties,x)){const y=h.properties[x],w=DS[x];(w===null||w.includes(h.tagName))&&(h.properties[x]=c(String(y||""),x,h))}}if(h.type==="element"){let x=n?!n.includes(h.tagName):i?i.includes(h.tagName):!1;if(!x&&r&&typeof m=="number"&&(x=!r(h,m,g)),x&&g&&typeof m=="number")return l&&h.children?g.children.splice(m,1,...h.children):g.children.splice(m,1),m}}}function h4e(t){const e=t.indexOf(":"),n=t.indexOf("?"),r=t.indexOf("#"),s=t.indexOf("/");return e===-1||s!==-1&&e>s||n!==-1&&e>n||r!==-1&&e>r||a4e.test(t.slice(0,e))?t:""}function lR(t,e){const n=String(t);if(typeof e!="string")throw new TypeError("Expected character");let r=0,s=n.indexOf(e);for(;s!==-1;)r++,s=n.indexOf(e,s+e.length);return r}function f4e(t){if(typeof t!="string")throw new TypeError("Expected a string");return t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function m4e(t,e,n){const s=xg((n||{}).ignore||[]),i=p4e(e);let a=-1;for(;++a0?{type:"text",value:_}:void 0),_===!1?g.lastIndex=T+1:(y!==T&&j.push({type:"text",value:d.value.slice(y,T)}),Array.isArray(_)?j.push(..._):_&&j.push(_),y=T+N[0].length,k=!0),!g.global)break;N=g.exec(d.value)}return k?(y?\]}]+$/.exec(t);if(!e)return[t,void 0];t=t.slice(0,e.index);let n=e[0],r=n.indexOf(")");const s=lR(t,"(");let i=lR(t,")");for(;r!==-1&&s>i;)t+=n.slice(0,r+1),n=n.slice(r+1),r=n.indexOf(")"),i++;return[t,n]}function TV(t,e){const n=t.input.charCodeAt(t.index-1);return(t.index===0||gd(n)||qb(n))&&(!e||n!==47)}EV.peek=L4e;function _4e(){this.buffer()}function A4e(t){this.enter({type:"footnoteReference",identifier:"",label:""},t)}function M4e(){this.buffer()}function R4e(t){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},t)}function D4e(t){const e=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=Xa(this.sliceSerialize(t)).toLowerCase(),n.label=e}function P4e(t){this.exit(t)}function z4e(t){const e=this.resume(),n=this.stack[this.stack.length-1];n.type,n.identifier=Xa(this.sliceSerialize(t)).toLowerCase(),n.label=e}function I4e(t){this.exit(t)}function L4e(){return"["}function EV(t,e,n,r){const s=n.createTracker(r);let i=s.move("[^");const a=n.enter("footnoteReference"),l=n.enter("reference");return i+=s.move(n.safe(n.associationId(t),{after:"]",before:i})),l(),a(),i+=s.move("]"),i}function B4e(){return{enter:{gfmFootnoteCallString:_4e,gfmFootnoteCall:A4e,gfmFootnoteDefinitionLabelString:M4e,gfmFootnoteDefinition:R4e},exit:{gfmFootnoteCallString:D4e,gfmFootnoteCall:P4e,gfmFootnoteDefinitionLabelString:z4e,gfmFootnoteDefinition:I4e}}}function F4e(t){let e=!1;return t&&t.firstLineBlank&&(e=!0),{handlers:{footnoteDefinition:n,footnoteReference:EV},unsafe:[{character:"[",inConstruct:["label","phrasing","reference"]}]};function n(r,s,i,a){const l=i.createTracker(a);let c=l.move("[^");const d=i.enter("footnoteDefinition"),h=i.enter("label");return c+=l.move(i.safe(i.associationId(r),{before:c,after:"]"})),h(),c+=l.move("]:"),r.children&&r.children.length>0&&(l.shift(4),c+=l.move((e?` -`:" ")+i.indentLines(i.containerFlow(r,l.current()),e?_V:q4e))),d(),c}}function q4e(t,e,n){return e===0?t:_V(t,e,n)}function _V(t,e,n){return(n?"":" ")+t}const $4e=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"];AV.peek=W4e;function H4e(){return{canContainEols:["delete"],enter:{strikethrough:V4e},exit:{strikethrough:U4e}}}function Q4e(){return{unsafe:[{character:"~",inConstruct:"phrasing",notInConstruct:$4e}],handlers:{delete:AV}}}function V4e(t){this.enter({type:"delete",children:[]},t)}function U4e(t){this.exit(t)}function AV(t,e,n,r){const s=n.createTracker(r),i=n.enter("strikethrough");let a=s.move("~~");return a+=n.containerPhrasing(t,{...s.current(),before:a,after:"~"}),a+=s.move("~~"),i(),a}function W4e(){return"~"}function G4e(t){return t.length}function X4e(t,e){const n=e||{},r=(n.align||[]).concat(),s=n.stringLength||G4e,i=[],a=[],l=[],c=[];let d=0,h=-1;for(;++hd&&(d=t[h].length);++kc[k])&&(c[k]=N)}w.push(j)}a[h]=w,l[h]=S}let m=-1;if(typeof r=="object"&&"length"in r)for(;++mc[m]&&(c[m]=j),x[m]=j),g[m]=N}a.splice(1,0,g),l.splice(1,0,x),h=-1;const y=[];for(;++h "),i.shift(2);const a=n.indentLines(n.containerFlow(t,i.current()),Z4e);return s(),a}function Z4e(t,e,n){return">"+(n?"":" ")+t}function J4e(t,e){return uR(t,e.inConstruct,!0)&&!uR(t,e.notInConstruct,!1)}function uR(t,e,n){if(typeof e=="string"&&(e=[e]),!e||e.length===0)return n;let r=-1;for(;++ra&&(a=i):i=1,s=r+e.length,r=n.indexOf(e,s);return a}function eSe(t,e){return!!(e.options.fences===!1&&t.value&&!t.lang&&/[^ \r\n]/.test(t.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(t.value))}function tSe(t){const e=t.options.fence||"`";if(e!=="`"&&e!=="~")throw new Error("Cannot serialize code with `"+e+"` for `options.fence`, expected `` ` `` or `~`");return e}function nSe(t,e,n,r){const s=tSe(n),i=t.value||"",a=s==="`"?"GraveAccent":"Tilde";if(eSe(t,n)){const m=n.enter("codeIndented"),g=n.indentLines(i,rSe);return m(),g}const l=n.createTracker(r),c=s.repeat(Math.max(MV(i,s)+1,3)),d=n.enter("codeFenced");let h=l.move(c);if(t.lang){const m=n.enter(`codeFencedLang${a}`);h+=l.move(n.safe(t.lang,{before:h,after:" ",encode:["`"],...l.current()})),m()}if(t.lang&&t.meta){const m=n.enter(`codeFencedMeta${a}`);h+=l.move(" "),h+=l.move(n.safe(t.meta,{before:h,after:` -`,encode:["`"],...l.current()})),m()}return h+=l.move(` -`),i&&(h+=l.move(i+` -`)),h+=l.move(c),d(),h}function rSe(t,e,n){return(n?"":" ")+t}function CN(t){const e=t.options.quote||'"';if(e!=='"'&&e!=="'")throw new Error("Cannot serialize title with `"+e+"` for `options.quote`, expected `\"`, or `'`");return e}function sSe(t,e,n,r){const s=CN(n),i=s==='"'?"Quote":"Apostrophe",a=n.enter("definition");let l=n.enter("label");const c=n.createTracker(r);let d=c.move("[");return d+=c.move(n.safe(n.associationId(t),{before:d,after:"]",...c.current()})),d+=c.move("]: "),l(),!t.url||/[\0- \u007F]/.test(t.url)?(l=n.enter("destinationLiteral"),d+=c.move("<"),d+=c.move(n.safe(t.url,{before:d,after:">",...c.current()})),d+=c.move(">")):(l=n.enter("destinationRaw"),d+=c.move(n.safe(t.url,{before:d,after:t.title?" ":` -`,...c.current()}))),l(),t.title&&(l=n.enter(`title${i}`),d+=c.move(" "+s),d+=c.move(n.safe(t.title,{before:d,after:s,...c.current()})),d+=c.move(s),l()),a(),d}function iSe(t){const e=t.options.emphasis||"*";if(e!=="*"&&e!=="_")throw new Error("Cannot serialize emphasis with `"+e+"` for `options.emphasis`, expected `*`, or `_`");return e}function bp(t){return"&#x"+t.toString(16).toUpperCase()+";"}function Ny(t,e,n){const r=hf(t),s=hf(e);return r===void 0?s===void 0?n==="_"?{inside:!0,outside:!0}:{inside:!1,outside:!1}:s===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:r===1?s===void 0?{inside:!1,outside:!1}:s===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:s===void 0?{inside:!1,outside:!1}:s===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}RV.peek=aSe;function RV(t,e,n,r){const s=iSe(n),i=n.enter("emphasis"),a=n.createTracker(r),l=a.move(s);let c=a.move(n.containerPhrasing(t,{after:s,before:l,...a.current()}));const d=c.charCodeAt(0),h=Ny(r.before.charCodeAt(r.before.length-1),d,s);h.inside&&(c=bp(d)+c.slice(1));const m=c.charCodeAt(c.length-1),g=Ny(r.after.charCodeAt(0),m,s);g.inside&&(c=c.slice(0,-1)+bp(m));const x=a.move(s);return i(),n.attentionEncodeSurroundingInfo={after:g.outside,before:h.outside},l+c+x}function aSe(t,e,n){return n.options.emphasis||"*"}function oSe(t,e){let n=!1;return jN(t,function(r){if("value"in r&&/\r?\n|\r/.test(r.value)||r.type==="break")return n=!0,zO}),!!((!t.depth||t.depth<3)&&xN(t)&&(e.options.setext||n))}function lSe(t,e,n,r){const s=Math.max(Math.min(6,t.depth||1),1),i=n.createTracker(r);if(oSe(t,n)){const h=n.enter("headingSetext"),m=n.enter("phrasing"),g=n.containerPhrasing(t,{...i.current(),before:` -`,after:` -`});return m(),h(),g+` -`+(s===1?"=":"-").repeat(g.length-(Math.max(g.lastIndexOf("\r"),g.lastIndexOf(` -`))+1))}const a="#".repeat(s),l=n.enter("headingAtx"),c=n.enter("phrasing");i.move(a+" ");let d=n.containerPhrasing(t,{before:"# ",after:` -`,...i.current()});return/^[\t ]/.test(d)&&(d=bp(d.charCodeAt(0))+d.slice(1)),d=d?a+" "+d:a,n.options.closeAtx&&(d+=" "+a),c(),l(),d}DV.peek=cSe;function DV(t){return t.value||""}function cSe(){return"<"}PV.peek=uSe;function PV(t,e,n,r){const s=CN(n),i=s==='"'?"Quote":"Apostrophe",a=n.enter("image");let l=n.enter("label");const c=n.createTracker(r);let d=c.move("![");return d+=c.move(n.safe(t.alt,{before:d,after:"]",...c.current()})),d+=c.move("]("),l(),!t.url&&t.title||/[\0- \u007F]/.test(t.url)?(l=n.enter("destinationLiteral"),d+=c.move("<"),d+=c.move(n.safe(t.url,{before:d,after:">",...c.current()})),d+=c.move(">")):(l=n.enter("destinationRaw"),d+=c.move(n.safe(t.url,{before:d,after:t.title?" ":")",...c.current()}))),l(),t.title&&(l=n.enter(`title${i}`),d+=c.move(" "+s),d+=c.move(n.safe(t.title,{before:d,after:s,...c.current()})),d+=c.move(s),l()),d+=c.move(")"),a(),d}function uSe(){return"!"}zV.peek=dSe;function zV(t,e,n,r){const s=t.referenceType,i=n.enter("imageReference");let a=n.enter("label");const l=n.createTracker(r);let c=l.move("![");const d=n.safe(t.alt,{before:c,after:"]",...l.current()});c+=l.move(d+"]["),a();const h=n.stack;n.stack=[],a=n.enter("reference");const m=n.safe(n.associationId(t),{before:c,after:"]",...l.current()});return a(),n.stack=h,i(),s==="full"||!d||d!==m?c+=l.move(m+"]"):s==="shortcut"?c=c.slice(0,-1):c+=l.move("]"),c}function dSe(){return"!"}IV.peek=hSe;function IV(t,e,n){let r=t.value||"",s="`",i=-1;for(;new RegExp("(^|[^`])"+s+"([^`]|$)").test(r);)s+="`";for(/[^ \r\n]/.test(r)&&(/^[ \r\n]/.test(r)&&/[ \r\n]$/.test(r)||/^`|`$/.test(r))&&(r=" "+r+" ");++i\u007F]/.test(t.url))}BV.peek=fSe;function BV(t,e,n,r){const s=CN(n),i=s==='"'?"Quote":"Apostrophe",a=n.createTracker(r);let l,c;if(LV(t,n)){const h=n.stack;n.stack=[],l=n.enter("autolink");let m=a.move("<");return m+=a.move(n.containerPhrasing(t,{before:m,after:">",...a.current()})),m+=a.move(">"),l(),n.stack=h,m}l=n.enter("link"),c=n.enter("label");let d=a.move("[");return d+=a.move(n.containerPhrasing(t,{before:d,after:"](",...a.current()})),d+=a.move("]("),c(),!t.url&&t.title||/[\0- \u007F]/.test(t.url)?(c=n.enter("destinationLiteral"),d+=a.move("<"),d+=a.move(n.safe(t.url,{before:d,after:">",...a.current()})),d+=a.move(">")):(c=n.enter("destinationRaw"),d+=a.move(n.safe(t.url,{before:d,after:t.title?" ":")",...a.current()}))),c(),t.title&&(c=n.enter(`title${i}`),d+=a.move(" "+s),d+=a.move(n.safe(t.title,{before:d,after:s,...a.current()})),d+=a.move(s),c()),d+=a.move(")"),l(),d}function fSe(t,e,n){return LV(t,n)?"<":"["}FV.peek=mSe;function FV(t,e,n,r){const s=t.referenceType,i=n.enter("linkReference");let a=n.enter("label");const l=n.createTracker(r);let c=l.move("[");const d=n.containerPhrasing(t,{before:c,after:"]",...l.current()});c+=l.move(d+"]["),a();const h=n.stack;n.stack=[],a=n.enter("reference");const m=n.safe(n.associationId(t),{before:c,after:"]",...l.current()});return a(),n.stack=h,i(),s==="full"||!d||d!==m?c+=l.move(m+"]"):s==="shortcut"?c=c.slice(0,-1):c+=l.move("]"),c}function mSe(){return"["}function TN(t){const e=t.options.bullet||"*";if(e!=="*"&&e!=="+"&&e!=="-")throw new Error("Cannot serialize items with `"+e+"` for `options.bullet`, expected `*`, `+`, or `-`");return e}function pSe(t){const e=TN(t),n=t.options.bulletOther;if(!n)return e==="*"?"-":"*";if(n!=="*"&&n!=="+"&&n!=="-")throw new Error("Cannot serialize items with `"+n+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(n===e)throw new Error("Expected `bullet` (`"+e+"`) and `bulletOther` (`"+n+"`) to be different");return n}function gSe(t){const e=t.options.bulletOrdered||".";if(e!=="."&&e!==")")throw new Error("Cannot serialize items with `"+e+"` for `options.bulletOrdered`, expected `.` or `)`");return e}function qV(t){const e=t.options.rule||"*";if(e!=="*"&&e!=="-"&&e!=="_")throw new Error("Cannot serialize rules with `"+e+"` for `options.rule`, expected `*`, `-`, or `_`");return e}function xSe(t,e,n,r){const s=n.enter("list"),i=n.bulletCurrent;let a=t.ordered?gSe(n):TN(n);const l=t.ordered?a==="."?")":".":pSe(n);let c=e&&n.bulletLastUsed?a===n.bulletLastUsed:!1;if(!t.ordered){const h=t.children?t.children[0]:void 0;if((a==="*"||a==="-")&&h&&(!h.children||!h.children[0])&&n.stack[n.stack.length-1]==="list"&&n.stack[n.stack.length-2]==="listItem"&&n.stack[n.stack.length-3]==="list"&&n.stack[n.stack.length-4]==="listItem"&&n.indexStack[n.indexStack.length-1]===0&&n.indexStack[n.indexStack.length-2]===0&&n.indexStack[n.indexStack.length-3]===0&&(c=!0),qV(n)===a&&h){let m=-1;for(;++m-1?e.start:1)+(n.options.incrementListMarker===!1?0:e.children.indexOf(t))+i);let a=i.length+1;(s==="tab"||s==="mixed"&&(e&&e.type==="list"&&e.spread||t.spread))&&(a=Math.ceil(a/4)*4);const l=n.createTracker(r);l.move(i+" ".repeat(a-i.length)),l.shift(a);const c=n.enter("listItem"),d=n.indentLines(n.containerFlow(t,l.current()),h);return c(),d;function h(m,g,x){return g?(x?"":" ".repeat(a))+m:(x?i:i+" ".repeat(a-i.length))+m}}function bSe(t,e,n,r){const s=n.enter("paragraph"),i=n.enter("phrasing"),a=n.containerPhrasing(t,r);return i(),s(),a}const wSe=xg(["break","delete","emphasis","footnote","footnoteReference","image","imageReference","inlineCode","inlineMath","link","linkReference","mdxJsxTextElement","mdxTextExpression","strong","text","textDirective"]);function SSe(t,e,n,r){return(t.children.some(function(a){return wSe(a)})?n.containerPhrasing:n.containerFlow).call(n,t,r)}function kSe(t){const e=t.options.strong||"*";if(e!=="*"&&e!=="_")throw new Error("Cannot serialize strong with `"+e+"` for `options.strong`, expected `*`, or `_`");return e}$V.peek=OSe;function $V(t,e,n,r){const s=kSe(n),i=n.enter("strong"),a=n.createTracker(r),l=a.move(s+s);let c=a.move(n.containerPhrasing(t,{after:s,before:l,...a.current()}));const d=c.charCodeAt(0),h=Ny(r.before.charCodeAt(r.before.length-1),d,s);h.inside&&(c=bp(d)+c.slice(1));const m=c.charCodeAt(c.length-1),g=Ny(r.after.charCodeAt(0),m,s);g.inside&&(c=c.slice(0,-1)+bp(m));const x=a.move(s+s);return i(),n.attentionEncodeSurroundingInfo={after:g.outside,before:h.outside},l+c+x}function OSe(t,e,n){return n.options.strong||"*"}function jSe(t,e,n,r){return n.safe(t.value,r)}function NSe(t){const e=t.options.ruleRepetition||3;if(e<3)throw new Error("Cannot serialize rules with repetition `"+e+"` for `options.ruleRepetition`, expected `3` or more");return e}function CSe(t,e,n){const r=(qV(n)+(n.options.ruleSpaces?" ":"")).repeat(NSe(n));return n.options.ruleSpaces?r.slice(0,-1):r}const HV={blockquote:K4e,break:dR,code:nSe,definition:sSe,emphasis:RV,hardBreak:dR,heading:lSe,html:DV,image:PV,imageReference:zV,inlineCode:IV,link:BV,linkReference:FV,list:xSe,listItem:ySe,paragraph:bSe,root:SSe,strong:$V,text:jSe,thematicBreak:CSe};function TSe(){return{enter:{table:ESe,tableData:hR,tableHeader:hR,tableRow:ASe},exit:{codeText:MSe,table:_Se,tableData:GS,tableHeader:GS,tableRow:GS}}}function ESe(t){const e=t._align;this.enter({type:"table",align:e.map(function(n){return n==="none"?null:n}),children:[]},t),this.data.inTable=!0}function _Se(t){this.exit(t),this.data.inTable=void 0}function ASe(t){this.enter({type:"tableRow",children:[]},t)}function GS(t){this.exit(t)}function hR(t){this.enter({type:"tableCell",children:[]},t)}function MSe(t){let e=this.resume();this.data.inTable&&(e=e.replace(/\\([\\|])/g,RSe));const n=this.stack[this.stack.length-1];n.type,n.value=e,this.exit(t)}function RSe(t,e){return e==="|"?e:t}function DSe(t){const e=t||{},n=e.tableCellPadding,r=e.tablePipeAlign,s=e.stringLength,i=n?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:` -`,inConstruct:"tableCell"},{atBreak:!0,character:"|",after:"[ :-]"},{character:"|",inConstruct:"tableCell"},{atBreak:!0,character:":",after:"-"},{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{inlineCode:g,table:a,tableCell:c,tableRow:l}};function a(x,y,w,S){return d(h(x,w,S),x.align)}function l(x,y,w,S){const k=m(x,w,S),j=d([k]);return j.slice(0,j.indexOf(` -`))}function c(x,y,w,S){const k=w.enter("tableCell"),j=w.enter("phrasing"),N=w.containerPhrasing(x,{...S,before:i,after:i});return j(),k(),N}function d(x,y){return X4e(x,{align:y,alignDelimiters:r,padding:n,stringLength:s})}function h(x,y,w){const S=x.children;let k=-1;const j=[],N=y.enter("table");for(;++k0&&!n&&(t[t.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),n}const ZSe={tokenize:a5e,partial:!0};function JSe(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:r5e,continuation:{tokenize:s5e},exit:i5e}},text:{91:{name:"gfmFootnoteCall",tokenize:n5e},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:e5e,resolveTo:t5e}}}}function e5e(t,e,n){const r=this;let s=r.events.length;const i=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let a;for(;s--;){const c=r.events[s][1];if(c.type==="labelImage"){a=c;break}if(c.type==="gfmFootnoteCall"||c.type==="labelLink"||c.type==="label"||c.type==="image"||c.type==="link")break}return l;function l(c){if(!a||!a._balanced)return n(c);const d=Xa(r.sliceSerialize({start:a.end,end:r.now()}));return d.codePointAt(0)!==94||!i.includes(d.slice(1))?n(c):(t.enter("gfmFootnoteCallLabelMarker"),t.consume(c),t.exit("gfmFootnoteCallLabelMarker"),e(c))}}function t5e(t,e){let n=t.length;for(;n--;)if(t[n][1].type==="labelImage"&&t[n][0]==="enter"){t[n][1];break}t[n+1][1].type="data",t[n+3][1].type="gfmFootnoteCallLabelMarker";const r={type:"gfmFootnoteCall",start:Object.assign({},t[n+3][1].start),end:Object.assign({},t[t.length-1][1].end)},s={type:"gfmFootnoteCallMarker",start:Object.assign({},t[n+3][1].end),end:Object.assign({},t[n+3][1].end)};s.end.column++,s.end.offset++,s.end._bufferIndex++;const i={type:"gfmFootnoteCallString",start:Object.assign({},s.end),end:Object.assign({},t[t.length-1][1].start)},a={type:"chunkString",contentType:"string",start:Object.assign({},i.start),end:Object.assign({},i.end)},l=[t[n+1],t[n+2],["enter",r,e],t[n+3],t[n+4],["enter",s,e],["exit",s,e],["enter",i,e],["enter",a,e],["exit",a,e],["exit",i,e],t[t.length-2],t[t.length-1],["exit",r,e]];return t.splice(n,t.length-n+1,...l),t}function n5e(t,e,n){const r=this,s=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let i=0,a;return l;function l(m){return t.enter("gfmFootnoteCall"),t.enter("gfmFootnoteCallLabelMarker"),t.consume(m),t.exit("gfmFootnoteCallLabelMarker"),c}function c(m){return m!==94?n(m):(t.enter("gfmFootnoteCallMarker"),t.consume(m),t.exit("gfmFootnoteCallMarker"),t.enter("gfmFootnoteCallString"),t.enter("chunkString").contentType="string",d)}function d(m){if(i>999||m===93&&!a||m===null||m===91||dr(m))return n(m);if(m===93){t.exit("chunkString");const g=t.exit("gfmFootnoteCallString");return s.includes(Xa(r.sliceSerialize(g)))?(t.enter("gfmFootnoteCallLabelMarker"),t.consume(m),t.exit("gfmFootnoteCallLabelMarker"),t.exit("gfmFootnoteCall"),e):n(m)}return dr(m)||(a=!0),i++,t.consume(m),m===92?h:d}function h(m){return m===91||m===92||m===93?(t.consume(m),i++,d):d(m)}}function r5e(t,e,n){const r=this,s=r.parser.gfmFootnotes||(r.parser.gfmFootnotes=[]);let i,a=0,l;return c;function c(y){return t.enter("gfmFootnoteDefinition")._container=!0,t.enter("gfmFootnoteDefinitionLabel"),t.enter("gfmFootnoteDefinitionLabelMarker"),t.consume(y),t.exit("gfmFootnoteDefinitionLabelMarker"),d}function d(y){return y===94?(t.enter("gfmFootnoteDefinitionMarker"),t.consume(y),t.exit("gfmFootnoteDefinitionMarker"),t.enter("gfmFootnoteDefinitionLabelString"),t.enter("chunkString").contentType="string",h):n(y)}function h(y){if(a>999||y===93&&!l||y===null||y===91||dr(y))return n(y);if(y===93){t.exit("chunkString");const w=t.exit("gfmFootnoteDefinitionLabelString");return i=Xa(r.sliceSerialize(w)),t.enter("gfmFootnoteDefinitionLabelMarker"),t.consume(y),t.exit("gfmFootnoteDefinitionLabelMarker"),t.exit("gfmFootnoteDefinitionLabel"),g}return dr(y)||(l=!0),a++,t.consume(y),y===92?m:h}function m(y){return y===91||y===92||y===93?(t.consume(y),a++,h):h(y)}function g(y){return y===58?(t.enter("definitionMarker"),t.consume(y),t.exit("definitionMarker"),s.includes(i)||s.push(i),cn(t,x,"gfmFootnoteDefinitionWhitespace")):n(y)}function x(y){return e(y)}}function s5e(t,e,n){return t.check(gg,e,t.attempt(ZSe,e,n))}function i5e(t){t.exit("gfmFootnoteDefinition")}function a5e(t,e,n){const r=this;return cn(t,s,"gfmFootnoteDefinitionIndent",5);function s(i){const a=r.events[r.events.length-1];return a&&a[1].type==="gfmFootnoteDefinitionIndent"&&a[2].sliceSerialize(a[1],!0).length===4?e(i):n(i)}}function o5e(t){let n=(t||{}).singleTilde;const r={name:"strikethrough",tokenize:i,resolveAll:s};return n==null&&(n=!0),{text:{126:r},insideSpan:{null:[r]},attentionMarkers:{null:[126]}};function s(a,l){let c=-1;for(;++c1?c(y):(a.consume(y),m++,x);if(m<2&&!n)return c(y);const S=a.exit("strikethroughSequenceTemporary"),k=hf(y);return S._open=!k||k===2&&!!w,S._close=!w||w===2&&!!k,l(y)}}}class l5e{constructor(){this.map=[]}add(e,n,r){c5e(this,e,n,r)}consume(e){if(this.map.sort(function(i,a){return i[0]-a[0]}),this.map.length===0)return;let n=this.map.length;const r=[];for(;n>0;)n-=1,r.push(e.slice(this.map[n][0]+this.map[n][1]),this.map[n][2]),e.length=this.map[n][0];r.push(e.slice()),e.length=0;let s=r.pop();for(;s;){for(const i of s)e.push(i);s=r.pop()}this.map.length=0}}function c5e(t,e,n,r){let s=0;if(!(n===0&&r.length===0)){for(;s-1;){const I=r.events[H][1].type;if(I==="lineEnding"||I==="linePrefix")H--;else break}const W=H>-1?r.events[H][1].type:null,ee=W==="tableHead"||W==="tableRow"?_:c;return ee===_&&r.parser.lazy[r.now().line]?n(B):ee(B)}function c(B){return t.enter("tableHead"),t.enter("tableRow"),d(B)}function d(B){return B===124||(a=!0,i+=1),h(B)}function h(B){return B===null?n(B):St(B)?i>1?(i=0,r.interrupt=!0,t.exit("tableRow"),t.enter("lineEnding"),t.consume(B),t.exit("lineEnding"),x):n(B):gn(B)?cn(t,h,"whitespace")(B):(i+=1,a&&(a=!1,s+=1),B===124?(t.enter("tableCellDivider"),t.consume(B),t.exit("tableCellDivider"),a=!0,h):(t.enter("data"),m(B)))}function m(B){return B===null||B===124||dr(B)?(t.exit("data"),h(B)):(t.consume(B),B===92?g:m)}function g(B){return B===92||B===124?(t.consume(B),m):m(B)}function x(B){return r.interrupt=!1,r.parser.lazy[r.now().line]?n(B):(t.enter("tableDelimiterRow"),a=!1,gn(B)?cn(t,y,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(B):y(B))}function y(B){return B===45||B===58?S(B):B===124?(a=!0,t.enter("tableCellDivider"),t.consume(B),t.exit("tableCellDivider"),w):E(B)}function w(B){return gn(B)?cn(t,S,"whitespace")(B):S(B)}function S(B){return B===58?(i+=1,a=!0,t.enter("tableDelimiterMarker"),t.consume(B),t.exit("tableDelimiterMarker"),k):B===45?(i+=1,k(B)):B===null||St(B)?T(B):E(B)}function k(B){return B===45?(t.enter("tableDelimiterFiller"),j(B)):E(B)}function j(B){return B===45?(t.consume(B),j):B===58?(a=!0,t.exit("tableDelimiterFiller"),t.enter("tableDelimiterMarker"),t.consume(B),t.exit("tableDelimiterMarker"),N):(t.exit("tableDelimiterFiller"),N(B))}function N(B){return gn(B)?cn(t,T,"whitespace")(B):T(B)}function T(B){return B===124?y(B):B===null||St(B)?!a||s!==i?E(B):(t.exit("tableDelimiterRow"),t.exit("tableHead"),e(B)):E(B)}function E(B){return n(B)}function _(B){return t.enter("tableRow"),A(B)}function A(B){return B===124?(t.enter("tableCellDivider"),t.consume(B),t.exit("tableCellDivider"),A):B===null||St(B)?(t.exit("tableRow"),e(B)):gn(B)?cn(t,A,"whitespace")(B):(t.enter("data"),D(B))}function D(B){return B===null||B===124||dr(B)?(t.exit("data"),A(B)):(t.consume(B),B===92?q:D)}function q(B){return B===92||B===124?(t.consume(B),D):D(B)}}function f5e(t,e){let n=-1,r=!0,s=0,i=[0,0,0,0],a=[0,0,0,0],l=!1,c=0,d,h,m;const g=new l5e;for(;++nn[2]+1){const y=n[2]+1,w=n[3]-n[2]-1;t.add(y,w,[])}}t.add(n[3]+1,0,[["exit",m,e]])}return s!==void 0&&(i.end=Object.assign({},jh(e.events,s)),t.add(s,0,[["exit",i,e]]),i=void 0),i}function mR(t,e,n,r,s){const i=[],a=jh(e.events,n);s&&(s.end=Object.assign({},a),i.push(["exit",s,e])),r.end=Object.assign({},a),i.push(["exit",r,e]),t.add(n+1,0,i)}function jh(t,e){const n=t[e],r=n[0]==="enter"?"start":"end";return n[1][r]}const m5e={name:"tasklistCheck",tokenize:g5e};function p5e(){return{text:{91:m5e}}}function g5e(t,e,n){const r=this;return s;function s(c){return r.previous!==null||!r._gfmTasklistFirstContentOfListItem?n(c):(t.enter("taskListCheck"),t.enter("taskListCheckMarker"),t.consume(c),t.exit("taskListCheckMarker"),i)}function i(c){return dr(c)?(t.enter("taskListCheckValueUnchecked"),t.consume(c),t.exit("taskListCheckValueUnchecked"),a):c===88||c===120?(t.enter("taskListCheckValueChecked"),t.consume(c),t.exit("taskListCheckValueChecked"),a):n(c)}function a(c){return c===93?(t.enter("taskListCheckMarker"),t.consume(c),t.exit("taskListCheckMarker"),t.exit("taskListCheck"),l):n(c)}function l(c){return St(c)?e(c):gn(c)?t.check({tokenize:x5e},e,n)(c):n(c)}}function x5e(t,e,n){return cn(t,r,"whitespace");function r(s){return s===null?n(s):e(s)}}function v5e(t){return oV([HSe(),JSe(),o5e(t),d5e(),p5e()])}const y5e={};function b5e(t){const e=this,n=t||y5e,r=e.data(),s=r.micromarkExtensions||(r.micromarkExtensions=[]),i=r.fromMarkdownExtensions||(r.fromMarkdownExtensions=[]),a=r.toMarkdownExtensions||(r.toMarkdownExtensions=[]);s.push(v5e(n)),i.push(BSe()),a.push(FSe(n))}function w5e(){return{enter:{mathFlow:t,mathFlowFenceMeta:e,mathText:i},exit:{mathFlow:s,mathFlowFence:r,mathFlowFenceMeta:n,mathFlowValue:l,mathText:a,mathTextData:l}};function t(c){const d={type:"element",tagName:"code",properties:{className:["language-math","math-display"]},children:[]};this.enter({type:"math",meta:null,value:"",data:{hName:"pre",hChildren:[d]}},c)}function e(){this.buffer()}function n(){const c=this.resume(),d=this.stack[this.stack.length-1];d.type,d.meta=c}function r(){this.data.mathFlowInside||(this.buffer(),this.data.mathFlowInside=!0)}function s(c){const d=this.resume().replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),h=this.stack[this.stack.length-1];h.type,this.exit(c),h.value=d;const m=h.data.hChildren[0];m.type,m.tagName,m.children.push({type:"text",value:d}),this.data.mathFlowInside=void 0}function i(c){this.enter({type:"inlineMath",value:"",data:{hName:"code",hProperties:{className:["language-math","math-inline"]},hChildren:[]}},c),this.buffer()}function a(c){const d=this.resume(),h=this.stack[this.stack.length-1];h.type,this.exit(c),h.value=d,h.data.hChildren.push({type:"text",value:d})}function l(c){this.config.enter.data.call(this,c),this.config.exit.data.call(this,c)}}function S5e(t){let e=(t||{}).singleDollarTextMath;return e==null&&(e=!0),r.peek=s,{unsafe:[{character:"\r",inConstruct:"mathFlowMeta"},{character:` -`,inConstruct:"mathFlowMeta"},{character:"$",after:e?void 0:"\\$",inConstruct:"phrasing"},{character:"$",inConstruct:"mathFlowMeta"},{atBreak:!0,character:"$",after:"\\$"}],handlers:{math:n,inlineMath:r}};function n(i,a,l,c){const d=i.value||"",h=l.createTracker(c),m="$".repeat(Math.max(MV(d,"$")+1,2)),g=l.enter("mathFlow");let x=h.move(m);if(i.meta){const y=l.enter("mathFlowMeta");x+=h.move(l.safe(i.meta,{after:` -`,before:x,encode:["$"],...h.current()})),y()}return x+=h.move(` -`),d&&(x+=h.move(d+` -`)),x+=h.move(m),g(),x}function r(i,a,l){let c=i.value||"",d=1;for(e||d++;new RegExp("(^|[^$])"+"\\$".repeat(d)+"([^$]|$)").test(c);)d++;const h="$".repeat(d);/[^ \r\n]/.test(c)&&(/^[ \r\n]/.test(c)&&/[ \r\n]$/.test(c)||/^\$|\$$/.test(c))&&(c=" "+c+" ");let m=-1;for(;++m15?d="…"+l.slice(s-15,s):d=l.slice(0,s);var h;i+15":">","<":"<",'"':""","'":"'"},D5e=/[&><"']/g;function P5e(t){return String(t).replace(D5e,e=>R5e[e])}var ZV=function t(e){return e.type==="ordgroup"||e.type==="color"?e.body.length===1?t(e.body[0]):e:e.type==="font"?t(e.body):e},z5e=function(e){var n=ZV(e);return n.type==="mathord"||n.type==="textord"||n.type==="atom"},I5e=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e},L5e=function(e){var n=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return n?n[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(n[1])?null:n[1].toLowerCase():"_relative"},Wn={deflt:_5e,escape:P5e,hyphenate:M5e,getBaseElem:ZV,isCharacterBox:z5e,protocolFromUrl:L5e},Tv={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:t=>"#"+t},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(t,e)=>(e.push(t),e)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:t=>Math.max(0,t),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:t=>Math.max(0,t),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:t=>Math.max(0,t),cli:"-e, --max-expand ",cliProcessor:t=>t==="Infinity"?1/0:parseInt(t)},globalGroup:{type:"boolean",cli:!1}};function B5e(t){if(t.default)return t.default;var e=t.type,n=Array.isArray(e)?e[0]:e;if(typeof n!="string")return n.enum[0];switch(n){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}class _N{constructor(e){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{};for(var n in Tv)if(Tv.hasOwnProperty(n)){var r=Tv[n];this[n]=e[n]!==void 0?r.processor?r.processor(e[n]):e[n]:B5e(r)}}reportNonstrict(e,n,r){var s=this.strict;if(typeof s=="function"&&(s=s(e,n,r)),!(!s||s==="ignore")){if(s===!0||s==="error")throw new qe("LaTeX-incompatible input and strict mode is set to 'error': "+(n+" ["+e+"]"),r);s==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(n+" ["+e+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+s+"': "+n+" ["+e+"]"))}}useStrictBehavior(e,n,r){var s=this.strict;if(typeof s=="function")try{s=s(e,n,r)}catch{s="error"}return!s||s==="ignore"?!1:s===!0||s==="error"?!0:s==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(n+" ["+e+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+s+"': "+n+" ["+e+"]")),!1)}isTrusted(e){if(e.url&&!e.protocol){var n=Wn.protocolFromUrl(e.url);if(n==null)return!1;e.protocol=n}var r=typeof this.trust=="function"?this.trust(e):this.trust;return!!r}}class _c{constructor(e,n,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=n,this.cramped=r}sup(){return So[F5e[this.id]]}sub(){return So[q5e[this.id]]}fracNum(){return So[$5e[this.id]]}fracDen(){return So[H5e[this.id]]}cramp(){return So[Q5e[this.id]]}text(){return So[V5e[this.id]]}isTight(){return this.size>=2}}var AN=0,Cy=1,Hh=2,Fl=3,wp=4,Na=5,ff=6,ni=7,So=[new _c(AN,0,!1),new _c(Cy,0,!0),new _c(Hh,1,!1),new _c(Fl,1,!0),new _c(wp,2,!1),new _c(Na,2,!0),new _c(ff,3,!1),new _c(ni,3,!0)],F5e=[wp,Na,wp,Na,ff,ni,ff,ni],q5e=[Na,Na,Na,Na,ni,ni,ni,ni],$5e=[Hh,Fl,wp,Na,ff,ni,ff,ni],H5e=[Fl,Fl,Na,Na,ni,ni,ni,ni],Q5e=[Cy,Cy,Fl,Fl,Na,Na,ni,ni],V5e=[AN,Cy,Hh,Fl,Hh,Fl,Hh,Fl],At={DISPLAY:So[AN],TEXT:So[Hh],SCRIPT:So[wp],SCRIPTSCRIPT:So[ff]},qO=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];function U5e(t){for(var e=0;e=s[0]&&t<=s[1])return n.name}return null}var Ev=[];qO.forEach(t=>t.blocks.forEach(e=>Ev.push(...e)));function JV(t){for(var e=0;e=Ev[e]&&t<=Ev[e+1])return!0;return!1}var dh=80,W5e=function(e,n){return"M95,"+(622+e+n)+` -c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 -c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 -c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 -s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 -c69,-144,104.5,-217.7,106.5,-221 -l`+e/2.075+" -"+e+` -c5.3,-9.3,12,-14,20,-14 -H400000v`+(40+e)+`H845.2724 -s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 -c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z -M`+(834+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},G5e=function(e,n){return"M263,"+(601+e+n)+`c0.7,0,18,39.7,52,119 -c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 -c340,-704.7,510.7,-1060.3,512,-1067 -l`+e/2.084+" -"+e+` -c4.7,-7.3,11,-11,19,-11 -H40000v`+(40+e)+`H1012.3 -s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 -c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 -s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 -c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z -M`+(1001+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},X5e=function(e,n){return"M983 "+(10+e+n)+` -l`+e/3.13+" -"+e+` -c4,-6.7,10,-10,18,-10 H400000v`+(40+e)+` -H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 -s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 -c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 -c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 -c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 -c53.7,-170.3,84.5,-266.8,92.5,-289.5z -M`+(1001+e)+" "+n+"h400000v"+(40+e)+"h-400000z"},Y5e=function(e,n){return"M424,"+(2398+e+n)+` -c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 -c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 -s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 -s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 -l`+e/4.223+" -"+e+`c4,-6.7,10,-10,18,-10 H400000 -v`+(40+e)+`H1014.6 -s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 -c-2,6,-10,9,-24,9 -c-8,0,-12,-0.7,-12,-2z M`+(1001+e)+" "+n+` -h400000v`+(40+e)+"h-400000z"},K5e=function(e,n){return"M473,"+(2713+e+n)+` -c339.3,-1799.3,509.3,-2700,510,-2702 l`+e/5.298+" -"+e+` -c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+e)+`H1017.7 -s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 -c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 -c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 -s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, -606zM`+(1001+e)+" "+n+"h400000v"+(40+e)+"H1017.7z"},Z5e=function(e){var n=e/2;return"M400000 "+e+" H0 L"+n+" 0 l65 45 L145 "+(e-80)+" H400000z"},J5e=function(e,n,r){var s=r-54-n-e;return"M702 "+(e+n)+"H400000"+(40+e)+` -H742v`+s+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 -h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 -c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 -219 661 l218 661zM702 `+n+"H400000v"+(40+e)+"H742z"},e3e=function(e,n,r){n=1e3*n;var s="";switch(e){case"sqrtMain":s=W5e(n,dh);break;case"sqrtSize1":s=G5e(n,dh);break;case"sqrtSize2":s=X5e(n,dh);break;case"sqrtSize3":s=Y5e(n,dh);break;case"sqrtSize4":s=K5e(n,dh);break;case"sqrtTall":s=J5e(n,dh,r)}return s},t3e=function(e,n){switch(e){case"⎜":return"M291 0 H417 V"+n+" H291z M291 0 H417 V"+n+" H291z";case"∣":return"M145 0 H188 V"+n+" H145z M145 0 H188 V"+n+" H145z";case"∥":return"M145 0 H188 V"+n+" H145z M145 0 H188 V"+n+" H145z"+("M367 0 H410 V"+n+" H367z M367 0 H410 V"+n+" H367z");case"⎟":return"M457 0 H583 V"+n+" H457z M457 0 H583 V"+n+" H457z";case"⎢":return"M319 0 H403 V"+n+" H319z M319 0 H403 V"+n+" H319z";case"⎥":return"M263 0 H347 V"+n+" H263z M263 0 H347 V"+n+" H263z";case"⎪":return"M384 0 H504 V"+n+" H384z M384 0 H504 V"+n+" H384z";case"⏐":return"M312 0 H355 V"+n+" H312z M312 0 H355 V"+n+" H312z";case"‖":return"M257 0 H300 V"+n+" H257z M257 0 H300 V"+n+" H257z"+("M478 0 H521 V"+n+" H478z M478 0 H521 V"+n+" H478z");default:return""}},gR={doubleleftarrow:`M262 157 -l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 - 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 - 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 -c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5 - 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87 --86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 --2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z -m8 0v40h399730v-40zm0 194v40h399730v-40z`,doublerightarrow:`M399738 392l --10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5 - 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88 --33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68 --17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18 --13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 -c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3 --107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`,leftarrow:`M400000 241H110l3-3c68.7-52.7 113.7-120 - 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8 --5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247 -c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208 - 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3 - 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202 - l-3-3h399890zM100 241v40h399900v-40z`,leftbrace:`M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 --45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 - 5-6 9-10 13-.7 1-7.3 1-20 1H6z`,leftbraceunder:`M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13 - 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688 - 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 --331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`,leftgroup:`M400000 80 -H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0 - 435 0h399565z`,leftgroupunder:`M400000 262 -H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 - 435 219h399565z`,leftharpoon:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 --3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5 --18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7 --196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`,leftharpoonplus:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5 - 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3 --4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7 --10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z -m0 0v40h400000v-40z`,leftharpoondown:`M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 - 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 - 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667 --152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`,leftharpoondownplus:`M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12 - 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7 --2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 -v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,lefthook:`M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 --83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3 --68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21 - 71.5 23h399859zM103 281v-40h399897v40z`,leftlinesegment:`M40 281 V428 H0 V94 H40 V241 H400000 v40z -M40 281 V428 H0 V94 H40 V241 H400000 v40z`,leftmapsto:`M40 281 V448H0V74H40V241H400000v40z -M40 281 V448H0V74H40V241H400000v40z`,leftToFrom:`M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 --.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8 -c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3 - 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,longequal:`M0 50 h400000 v40H0z m0 194h40000v40H0z -M0 50 h400000 v40H0z m0 194h40000v40H0z`,midbrace:`M200428 334 -c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14 --53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 - 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11 - 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`,midbraceunder:`M199572 214 -c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14 - 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 - 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0 --5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`,oiintSize1:`M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6 --320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z -m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8 -60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`,oiintSize2:`M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8 --451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z -m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 -c0 110 84 276 504 276s502.4-166 502.4-276z`,oiiintSize1:`M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6 --480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z -m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 -85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`,oiiintSize2:`M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8 --707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z -m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 -c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`,rightarrow:`M0 241v40h399891c-47.3 35.3-84 78-110 128 --16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 - 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 - 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85 --40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 --12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 - 151.7 139 205zm0 0v40h399900v-40z`,rightbrace:`M400000 542l --6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5 -s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 -c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`,rightbraceunder:`M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3 - 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 --174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`,rightgroup:`M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0 - 3-1 3-3v-38c-76-158-257-219-435-219H0z`,rightgroupunder:`M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18 - 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`,rightharpoon:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3 --3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2 --10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 - 69.2 92 94.5zm0 0v40h399900v-40z`,rightharpoonplus:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11 --18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7 - 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z -m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`,rightharpoondown:`M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 - 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5 --7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95 --27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`,rightharpoondownplus:`M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8 - 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 - 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3 --64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z -m0-194v40h400000v-40zm0 0v40h400000v-40z`,righthook:`M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3 - 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0 --13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21 - 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,rightlinesegment:`M399960 241 V94 h40 V428 h-40 V281 H0 v-40z -M399960 241 V94 h40 V428 h-40 V281 H0 v-40z`,rightToFrom:`M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23 - 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 --52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142 --167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,twoheadleftarrow:`M0 167c68 40 - 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69 --70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 --40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 --37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 - 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`,twoheadrightarrow:`M400000 167 -c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 - 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42 - 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 --19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 - 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`,tilde1:`M200 55.538c-77 0-168 73.953-177 73.953-3 0-7 --2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0 - 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0 - 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 --68.267.847-113-73.952-191-73.952z`,tilde2:`M344 55.266c-142 0-300.638 81.316-311.5 86.418 --8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9 - 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 -c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751 - 181.476 676 181.476c-149 0-189-126.21-332-126.21z`,tilde3:`M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457 --11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 - 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 - 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 - -338 0-409-156.573-744-156.573z`,tilde4:`M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 --11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 - 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 - 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 - -175.236-744-175.236z`,vec:`M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5 -3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 -10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 --1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1 --7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 -H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 -c-16-25.333-24-45-24-59z`,widehat1:`M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 -c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`,widehat2:`M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat3:`M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat4:`M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10 --11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widecheck1:`M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1, --5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`,widecheck2:`M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck3:`M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck4:`M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, --11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,baraboveleftarrow:`M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202 -c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 -c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130 -s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47 -121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6 -s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11 -c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z -M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,rightarrowabovebar:`M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32 --27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 -13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39 --84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5 --119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 --12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 -151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`,baraboveshortleftharpoon:`M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 -c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 -c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21 -c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 -c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z -M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`,rightharpoonaboveshortbar:`M0,241 l0,40c399126,0,399993,0,399993,0 -c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, --231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 -c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z -M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`,shortbaraboveleftharpoon:`M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 -c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9, -1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7, --152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z -M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`,shortrightharpoonabovebar:`M53,241l0,40c398570,0,399437,0,399437,0 -c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, --231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 -c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z -M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},n3e=function(e,n){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+n+` v1759 h347 v-84 -H403z M403 1759 V0 H319 V1759 v`+n+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+n+` v1759 H0 v84 H347z -M347 1759 V0 H263 V1759 v`+n+" v1759 h84z";case"vert":return"M145 15 v585 v"+n+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-n+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+n+" v585 h43z";case"doublevert":return"M145 15 v585 v"+n+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-n+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+n+` v585 h43z -M367 15 v585 v`+n+` v585 c2.667,10,9.667,15,21,15 -c10,0,16.667,-5,20,-15 v-585 v`+-n+` v-585 c-2.667,-10,-9.667,-15,-21,-15 -c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v`+n+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+n+` v1715 h263 v84 H319z -MM319 602 V0 H403 V602 v`+n+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+n+` v1799 H0 v-84 H319z -MM319 602 V0 H403 V602 v`+n+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+n+` v602 h84z -M403 1759 V0 H319 V1759 v`+n+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+n+` v602 h84z -M347 1759 V0 h-84 V1759 v`+n+" v602 h84z";case"lparen":return`M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1 -c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349, --36,557 l0,`+(n+84)+`c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, -949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9 -c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, --544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 -l0,-`+(n+92)+`c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, --210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z`;case"rparen":return`M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3, -63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 -c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,`+(n+9)+` -c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664 -c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11 -c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 -c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 -l0,-`+(n+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, --470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}};class yg{constructor(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return this.classes.includes(e)}toNode(){for(var e=document.createDocumentFragment(),n=0;nn.toText();return this.children.map(e).join("")}}var Mo={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},z1={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},xR={Å:"A",Ð:"D",Þ:"o",å:"a",ð:"d",þ:"o",А:"A",Б:"B",В:"B",Г:"F",Д:"A",Е:"E",Ж:"K",З:"3",И:"N",Й:"N",К:"K",Л:"N",М:"M",Н:"H",О:"O",П:"N",Р:"P",С:"C",Т:"T",У:"y",Ф:"O",Х:"X",Ц:"U",Ч:"h",Ш:"W",Щ:"W",Ъ:"B",Ы:"X",Ь:"B",Э:"3",Ю:"X",Я:"R",а:"a",б:"b",в:"a",г:"r",д:"y",е:"e",ж:"m",з:"e",и:"n",й:"n",к:"n",л:"n",м:"m",н:"n",о:"o",п:"n",р:"p",с:"c",т:"o",у:"y",ф:"b",х:"x",ц:"n",ч:"n",ш:"w",щ:"w",ъ:"a",ы:"m",ь:"a",э:"e",ю:"m",я:"r"};function r3e(t,e){Mo[t]=e}function MN(t,e,n){if(!Mo[e])throw new Error("Font metrics not found for font: "+e+".");var r=t.charCodeAt(0),s=Mo[e][r];if(!s&&t[0]in xR&&(r=xR[t[0]].charCodeAt(0),s=Mo[e][r]),!s&&n==="text"&&JV(r)&&(s=Mo[e][77]),s)return{depth:s[0],height:s[1],italic:s[2],skew:s[3],width:s[4]}}var XS={};function s3e(t){var e;if(t>=5?e=0:t>=3?e=1:e=2,!XS[e]){var n=XS[e]={cssEmPerMu:z1.quad[e]/18};for(var r in z1)z1.hasOwnProperty(r)&&(n[r]=z1[r][e])}return XS[e]}var i3e=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],vR=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],yR=function(e,n){return n.size<2?e:i3e[e-1][n.size-1]};class Al{constructor(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||Al.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=vR[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var n={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);return new Al(n)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:yR(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:vR[e-1]})}havingBaseStyle(e){e=e||this.style.text();var n=yR(Al.BASESIZE,e);return this.size===n&&this.textSize===Al.BASESIZE&&this.style===e?this:this.extend({style:e,size:n})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==Al.BASESIZE?["sizing","reset-size"+this.size,"size"+Al.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=s3e(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}Al.BASESIZE=6;var $O={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},a3e={ex:!0,em:!0,mu:!0},eU=function(e){return typeof e!="string"&&(e=e.unit),e in $O||e in a3e||e==="ex"},Ir=function(e,n){var r;if(e.unit in $O)r=$O[e.unit]/n.fontMetrics().ptPerEm/n.sizeMultiplier;else if(e.unit==="mu")r=n.fontMetrics().cssEmPerMu;else{var s;if(n.style.isTight()?s=n.havingStyle(n.style.text()):s=n,e.unit==="ex")r=s.fontMetrics().xHeight;else if(e.unit==="em")r=s.fontMetrics().quad;else throw new qe("Invalid unit: '"+e.unit+"'");s!==n&&(r*=s.sizeMultiplier/n.sizeMultiplier)}return Math.min(e.number*r,n.maxSize)},Xe=function(e){return+e.toFixed(4)+"em"},ru=function(e){return e.filter(n=>n).join(" ")},tU=function(e,n,r){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},n){n.style.isTight()&&this.classes.push("mtight");var s=n.getColor();s&&(this.style.color=s)}},nU=function(e){var n=document.createElement(e);n.className=ru(this.classes);for(var r in this.style)this.style.hasOwnProperty(r)&&(n.style[r]=this.style[r]);for(var s in this.attributes)this.attributes.hasOwnProperty(s)&&n.setAttribute(s,this.attributes[s]);for(var i=0;i/=\x00-\x1f]/,rU=function(e){var n="<"+e;this.classes.length&&(n+=' class="'+Wn.escape(ru(this.classes))+'"');var r="";for(var s in this.style)this.style.hasOwnProperty(s)&&(r+=Wn.hyphenate(s)+":"+this.style[s]+";");r&&(n+=' style="'+Wn.escape(r)+'"');for(var i in this.attributes)if(this.attributes.hasOwnProperty(i)){if(o3e.test(i))throw new qe("Invalid attribute name '"+i+"'");n+=" "+i+'="'+Wn.escape(this.attributes[i])+'"'}n+=">";for(var a=0;a",n};class bg{constructor(e,n,r,s){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,tU.call(this,e,r,s),this.children=n||[]}setAttribute(e,n){this.attributes[e]=n}hasClass(e){return this.classes.includes(e)}toNode(){return nU.call(this,"span")}toMarkup(){return rU.call(this,"span")}}class RN{constructor(e,n,r,s){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,tU.call(this,n,s),this.children=r||[],this.setAttribute("href",e)}setAttribute(e,n){this.attributes[e]=n}hasClass(e){return this.classes.includes(e)}toNode(){return nU.call(this,"a")}toMarkup(){return rU.call(this,"a")}}class l3e{constructor(e,n,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=n,this.src=e,this.classes=["mord"],this.style=r}hasClass(e){return this.classes.includes(e)}toNode(){var e=document.createElement("img");e.src=this.src,e.alt=this.alt,e.className="mord";for(var n in this.style)this.style.hasOwnProperty(n)&&(e.style[n]=this.style[n]);return e}toMarkup(){var e=''+Wn.escape(this.alt)+'0&&(n=document.createElement("span"),n.style.marginRight=Xe(this.italic)),this.classes.length>0&&(n=n||document.createElement("span"),n.className=ru(this.classes));for(var r in this.style)this.style.hasOwnProperty(r)&&(n=n||document.createElement("span"),n.style[r]=this.style[r]);return n?(n.appendChild(e),n):e}toMarkup(){var e=!1,n="0&&(r+="margin-right:"+this.italic+"em;");for(var s in this.style)this.style.hasOwnProperty(s)&&(r+=Wn.hyphenate(s)+":"+this.style[s]+";");r&&(e=!0,n+=' style="'+Wn.escape(r)+'"');var i=Wn.escape(this.text);return e?(n+=">",n+=i,n+="",n):i}}class Ul{constructor(e,n){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=n||{}}toNode(){var e="http://www.w3.org/2000/svg",n=document.createElementNS(e,"svg");for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&n.setAttribute(r,this.attributes[r]);for(var s=0;s':''}}class HO{constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e="http://www.w3.org/2000/svg",n=document.createElementNS(e,"line");for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&n.setAttribute(r,this.attributes[r]);return n}toMarkup(){var e=" but got "+String(t)+".")}var d3e={bin:1,close:1,inner:1,open:1,punct:1,rel:1},h3e={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},pr={math:{},text:{}};function M(t,e,n,r,s,i){pr[t][s]={font:e,group:n,replace:r},i&&r&&(pr[t][r]=pr[t][s])}var P="math",Le="text",Q="main",le="ams",_r="accent-token",it="bin",li="close",$f="inner",_t="mathord",os="op-token",ra="open",Vb="punct",ce="rel",tc="spacing",me="textord";M(P,Q,ce,"≡","\\equiv",!0);M(P,Q,ce,"≺","\\prec",!0);M(P,Q,ce,"≻","\\succ",!0);M(P,Q,ce,"∼","\\sim",!0);M(P,Q,ce,"⊥","\\perp");M(P,Q,ce,"⪯","\\preceq",!0);M(P,Q,ce,"⪰","\\succeq",!0);M(P,Q,ce,"≃","\\simeq",!0);M(P,Q,ce,"∣","\\mid",!0);M(P,Q,ce,"≪","\\ll",!0);M(P,Q,ce,"≫","\\gg",!0);M(P,Q,ce,"≍","\\asymp",!0);M(P,Q,ce,"∥","\\parallel");M(P,Q,ce,"⋈","\\bowtie",!0);M(P,Q,ce,"⌣","\\smile",!0);M(P,Q,ce,"⊑","\\sqsubseteq",!0);M(P,Q,ce,"⊒","\\sqsupseteq",!0);M(P,Q,ce,"≐","\\doteq",!0);M(P,Q,ce,"⌢","\\frown",!0);M(P,Q,ce,"∋","\\ni",!0);M(P,Q,ce,"∝","\\propto",!0);M(P,Q,ce,"⊢","\\vdash",!0);M(P,Q,ce,"⊣","\\dashv",!0);M(P,Q,ce,"∋","\\owns");M(P,Q,Vb,".","\\ldotp");M(P,Q,Vb,"⋅","\\cdotp");M(P,Q,me,"#","\\#");M(Le,Q,me,"#","\\#");M(P,Q,me,"&","\\&");M(Le,Q,me,"&","\\&");M(P,Q,me,"ℵ","\\aleph",!0);M(P,Q,me,"∀","\\forall",!0);M(P,Q,me,"ℏ","\\hbar",!0);M(P,Q,me,"∃","\\exists",!0);M(P,Q,me,"∇","\\nabla",!0);M(P,Q,me,"♭","\\flat",!0);M(P,Q,me,"ℓ","\\ell",!0);M(P,Q,me,"♮","\\natural",!0);M(P,Q,me,"♣","\\clubsuit",!0);M(P,Q,me,"℘","\\wp",!0);M(P,Q,me,"♯","\\sharp",!0);M(P,Q,me,"♢","\\diamondsuit",!0);M(P,Q,me,"ℜ","\\Re",!0);M(P,Q,me,"♡","\\heartsuit",!0);M(P,Q,me,"ℑ","\\Im",!0);M(P,Q,me,"♠","\\spadesuit",!0);M(P,Q,me,"§","\\S",!0);M(Le,Q,me,"§","\\S");M(P,Q,me,"¶","\\P",!0);M(Le,Q,me,"¶","\\P");M(P,Q,me,"†","\\dag");M(Le,Q,me,"†","\\dag");M(Le,Q,me,"†","\\textdagger");M(P,Q,me,"‡","\\ddag");M(Le,Q,me,"‡","\\ddag");M(Le,Q,me,"‡","\\textdaggerdbl");M(P,Q,li,"⎱","\\rmoustache",!0);M(P,Q,ra,"⎰","\\lmoustache",!0);M(P,Q,li,"⟯","\\rgroup",!0);M(P,Q,ra,"⟮","\\lgroup",!0);M(P,Q,it,"∓","\\mp",!0);M(P,Q,it,"⊖","\\ominus",!0);M(P,Q,it,"⊎","\\uplus",!0);M(P,Q,it,"⊓","\\sqcap",!0);M(P,Q,it,"∗","\\ast");M(P,Q,it,"⊔","\\sqcup",!0);M(P,Q,it,"◯","\\bigcirc",!0);M(P,Q,it,"∙","\\bullet",!0);M(P,Q,it,"‡","\\ddagger");M(P,Q,it,"≀","\\wr",!0);M(P,Q,it,"⨿","\\amalg");M(P,Q,it,"&","\\And");M(P,Q,ce,"⟵","\\longleftarrow",!0);M(P,Q,ce,"⇐","\\Leftarrow",!0);M(P,Q,ce,"⟸","\\Longleftarrow",!0);M(P,Q,ce,"⟶","\\longrightarrow",!0);M(P,Q,ce,"⇒","\\Rightarrow",!0);M(P,Q,ce,"⟹","\\Longrightarrow",!0);M(P,Q,ce,"↔","\\leftrightarrow",!0);M(P,Q,ce,"⟷","\\longleftrightarrow",!0);M(P,Q,ce,"⇔","\\Leftrightarrow",!0);M(P,Q,ce,"⟺","\\Longleftrightarrow",!0);M(P,Q,ce,"↦","\\mapsto",!0);M(P,Q,ce,"⟼","\\longmapsto",!0);M(P,Q,ce,"↗","\\nearrow",!0);M(P,Q,ce,"↩","\\hookleftarrow",!0);M(P,Q,ce,"↪","\\hookrightarrow",!0);M(P,Q,ce,"↘","\\searrow",!0);M(P,Q,ce,"↼","\\leftharpoonup",!0);M(P,Q,ce,"⇀","\\rightharpoonup",!0);M(P,Q,ce,"↙","\\swarrow",!0);M(P,Q,ce,"↽","\\leftharpoondown",!0);M(P,Q,ce,"⇁","\\rightharpoondown",!0);M(P,Q,ce,"↖","\\nwarrow",!0);M(P,Q,ce,"⇌","\\rightleftharpoons",!0);M(P,le,ce,"≮","\\nless",!0);M(P,le,ce,"","\\@nleqslant");M(P,le,ce,"","\\@nleqq");M(P,le,ce,"⪇","\\lneq",!0);M(P,le,ce,"≨","\\lneqq",!0);M(P,le,ce,"","\\@lvertneqq");M(P,le,ce,"⋦","\\lnsim",!0);M(P,le,ce,"⪉","\\lnapprox",!0);M(P,le,ce,"⊀","\\nprec",!0);M(P,le,ce,"⋠","\\npreceq",!0);M(P,le,ce,"⋨","\\precnsim",!0);M(P,le,ce,"⪹","\\precnapprox",!0);M(P,le,ce,"≁","\\nsim",!0);M(P,le,ce,"","\\@nshortmid");M(P,le,ce,"∤","\\nmid",!0);M(P,le,ce,"⊬","\\nvdash",!0);M(P,le,ce,"⊭","\\nvDash",!0);M(P,le,ce,"⋪","\\ntriangleleft");M(P,le,ce,"⋬","\\ntrianglelefteq",!0);M(P,le,ce,"⊊","\\subsetneq",!0);M(P,le,ce,"","\\@varsubsetneq");M(P,le,ce,"⫋","\\subsetneqq",!0);M(P,le,ce,"","\\@varsubsetneqq");M(P,le,ce,"≯","\\ngtr",!0);M(P,le,ce,"","\\@ngeqslant");M(P,le,ce,"","\\@ngeqq");M(P,le,ce,"⪈","\\gneq",!0);M(P,le,ce,"≩","\\gneqq",!0);M(P,le,ce,"","\\@gvertneqq");M(P,le,ce,"⋧","\\gnsim",!0);M(P,le,ce,"⪊","\\gnapprox",!0);M(P,le,ce,"⊁","\\nsucc",!0);M(P,le,ce,"⋡","\\nsucceq",!0);M(P,le,ce,"⋩","\\succnsim",!0);M(P,le,ce,"⪺","\\succnapprox",!0);M(P,le,ce,"≆","\\ncong",!0);M(P,le,ce,"","\\@nshortparallel");M(P,le,ce,"∦","\\nparallel",!0);M(P,le,ce,"⊯","\\nVDash",!0);M(P,le,ce,"⋫","\\ntriangleright");M(P,le,ce,"⋭","\\ntrianglerighteq",!0);M(P,le,ce,"","\\@nsupseteqq");M(P,le,ce,"⊋","\\supsetneq",!0);M(P,le,ce,"","\\@varsupsetneq");M(P,le,ce,"⫌","\\supsetneqq",!0);M(P,le,ce,"","\\@varsupsetneqq");M(P,le,ce,"⊮","\\nVdash",!0);M(P,le,ce,"⪵","\\precneqq",!0);M(P,le,ce,"⪶","\\succneqq",!0);M(P,le,ce,"","\\@nsubseteqq");M(P,le,it,"⊴","\\unlhd");M(P,le,it,"⊵","\\unrhd");M(P,le,ce,"↚","\\nleftarrow",!0);M(P,le,ce,"↛","\\nrightarrow",!0);M(P,le,ce,"⇍","\\nLeftarrow",!0);M(P,le,ce,"⇏","\\nRightarrow",!0);M(P,le,ce,"↮","\\nleftrightarrow",!0);M(P,le,ce,"⇎","\\nLeftrightarrow",!0);M(P,le,ce,"△","\\vartriangle");M(P,le,me,"ℏ","\\hslash");M(P,le,me,"▽","\\triangledown");M(P,le,me,"◊","\\lozenge");M(P,le,me,"Ⓢ","\\circledS");M(P,le,me,"®","\\circledR");M(Le,le,me,"®","\\circledR");M(P,le,me,"∡","\\measuredangle",!0);M(P,le,me,"∄","\\nexists");M(P,le,me,"℧","\\mho");M(P,le,me,"Ⅎ","\\Finv",!0);M(P,le,me,"⅁","\\Game",!0);M(P,le,me,"‵","\\backprime");M(P,le,me,"▲","\\blacktriangle");M(P,le,me,"▼","\\blacktriangledown");M(P,le,me,"■","\\blacksquare");M(P,le,me,"⧫","\\blacklozenge");M(P,le,me,"★","\\bigstar");M(P,le,me,"∢","\\sphericalangle",!0);M(P,le,me,"∁","\\complement",!0);M(P,le,me,"ð","\\eth",!0);M(Le,Q,me,"ð","ð");M(P,le,me,"╱","\\diagup");M(P,le,me,"╲","\\diagdown");M(P,le,me,"□","\\square");M(P,le,me,"□","\\Box");M(P,le,me,"◊","\\Diamond");M(P,le,me,"¥","\\yen",!0);M(Le,le,me,"¥","\\yen",!0);M(P,le,me,"✓","\\checkmark",!0);M(Le,le,me,"✓","\\checkmark");M(P,le,me,"ℶ","\\beth",!0);M(P,le,me,"ℸ","\\daleth",!0);M(P,le,me,"ℷ","\\gimel",!0);M(P,le,me,"ϝ","\\digamma",!0);M(P,le,me,"ϰ","\\varkappa");M(P,le,ra,"┌","\\@ulcorner",!0);M(P,le,li,"┐","\\@urcorner",!0);M(P,le,ra,"└","\\@llcorner",!0);M(P,le,li,"┘","\\@lrcorner",!0);M(P,le,ce,"≦","\\leqq",!0);M(P,le,ce,"⩽","\\leqslant",!0);M(P,le,ce,"⪕","\\eqslantless",!0);M(P,le,ce,"≲","\\lesssim",!0);M(P,le,ce,"⪅","\\lessapprox",!0);M(P,le,ce,"≊","\\approxeq",!0);M(P,le,it,"⋖","\\lessdot");M(P,le,ce,"⋘","\\lll",!0);M(P,le,ce,"≶","\\lessgtr",!0);M(P,le,ce,"⋚","\\lesseqgtr",!0);M(P,le,ce,"⪋","\\lesseqqgtr",!0);M(P,le,ce,"≑","\\doteqdot");M(P,le,ce,"≓","\\risingdotseq",!0);M(P,le,ce,"≒","\\fallingdotseq",!0);M(P,le,ce,"∽","\\backsim",!0);M(P,le,ce,"⋍","\\backsimeq",!0);M(P,le,ce,"⫅","\\subseteqq",!0);M(P,le,ce,"⋐","\\Subset",!0);M(P,le,ce,"⊏","\\sqsubset",!0);M(P,le,ce,"≼","\\preccurlyeq",!0);M(P,le,ce,"⋞","\\curlyeqprec",!0);M(P,le,ce,"≾","\\precsim",!0);M(P,le,ce,"⪷","\\precapprox",!0);M(P,le,ce,"⊲","\\vartriangleleft");M(P,le,ce,"⊴","\\trianglelefteq");M(P,le,ce,"⊨","\\vDash",!0);M(P,le,ce,"⊪","\\Vvdash",!0);M(P,le,ce,"⌣","\\smallsmile");M(P,le,ce,"⌢","\\smallfrown");M(P,le,ce,"≏","\\bumpeq",!0);M(P,le,ce,"≎","\\Bumpeq",!0);M(P,le,ce,"≧","\\geqq",!0);M(P,le,ce,"⩾","\\geqslant",!0);M(P,le,ce,"⪖","\\eqslantgtr",!0);M(P,le,ce,"≳","\\gtrsim",!0);M(P,le,ce,"⪆","\\gtrapprox",!0);M(P,le,it,"⋗","\\gtrdot");M(P,le,ce,"⋙","\\ggg",!0);M(P,le,ce,"≷","\\gtrless",!0);M(P,le,ce,"⋛","\\gtreqless",!0);M(P,le,ce,"⪌","\\gtreqqless",!0);M(P,le,ce,"≖","\\eqcirc",!0);M(P,le,ce,"≗","\\circeq",!0);M(P,le,ce,"≜","\\triangleq",!0);M(P,le,ce,"∼","\\thicksim");M(P,le,ce,"≈","\\thickapprox");M(P,le,ce,"⫆","\\supseteqq",!0);M(P,le,ce,"⋑","\\Supset",!0);M(P,le,ce,"⊐","\\sqsupset",!0);M(P,le,ce,"≽","\\succcurlyeq",!0);M(P,le,ce,"⋟","\\curlyeqsucc",!0);M(P,le,ce,"≿","\\succsim",!0);M(P,le,ce,"⪸","\\succapprox",!0);M(P,le,ce,"⊳","\\vartriangleright");M(P,le,ce,"⊵","\\trianglerighteq");M(P,le,ce,"⊩","\\Vdash",!0);M(P,le,ce,"∣","\\shortmid");M(P,le,ce,"∥","\\shortparallel");M(P,le,ce,"≬","\\between",!0);M(P,le,ce,"⋔","\\pitchfork",!0);M(P,le,ce,"∝","\\varpropto");M(P,le,ce,"◀","\\blacktriangleleft");M(P,le,ce,"∴","\\therefore",!0);M(P,le,ce,"∍","\\backepsilon");M(P,le,ce,"▶","\\blacktriangleright");M(P,le,ce,"∵","\\because",!0);M(P,le,ce,"⋘","\\llless");M(P,le,ce,"⋙","\\gggtr");M(P,le,it,"⊲","\\lhd");M(P,le,it,"⊳","\\rhd");M(P,le,ce,"≂","\\eqsim",!0);M(P,Q,ce,"⋈","\\Join");M(P,le,ce,"≑","\\Doteq",!0);M(P,le,it,"∔","\\dotplus",!0);M(P,le,it,"∖","\\smallsetminus");M(P,le,it,"⋒","\\Cap",!0);M(P,le,it,"⋓","\\Cup",!0);M(P,le,it,"⩞","\\doublebarwedge",!0);M(P,le,it,"⊟","\\boxminus",!0);M(P,le,it,"⊞","\\boxplus",!0);M(P,le,it,"⋇","\\divideontimes",!0);M(P,le,it,"⋉","\\ltimes",!0);M(P,le,it,"⋊","\\rtimes",!0);M(P,le,it,"⋋","\\leftthreetimes",!0);M(P,le,it,"⋌","\\rightthreetimes",!0);M(P,le,it,"⋏","\\curlywedge",!0);M(P,le,it,"⋎","\\curlyvee",!0);M(P,le,it,"⊝","\\circleddash",!0);M(P,le,it,"⊛","\\circledast",!0);M(P,le,it,"⋅","\\centerdot");M(P,le,it,"⊺","\\intercal",!0);M(P,le,it,"⋒","\\doublecap");M(P,le,it,"⋓","\\doublecup");M(P,le,it,"⊠","\\boxtimes",!0);M(P,le,ce,"⇢","\\dashrightarrow",!0);M(P,le,ce,"⇠","\\dashleftarrow",!0);M(P,le,ce,"⇇","\\leftleftarrows",!0);M(P,le,ce,"⇆","\\leftrightarrows",!0);M(P,le,ce,"⇚","\\Lleftarrow",!0);M(P,le,ce,"↞","\\twoheadleftarrow",!0);M(P,le,ce,"↢","\\leftarrowtail",!0);M(P,le,ce,"↫","\\looparrowleft",!0);M(P,le,ce,"⇋","\\leftrightharpoons",!0);M(P,le,ce,"↶","\\curvearrowleft",!0);M(P,le,ce,"↺","\\circlearrowleft",!0);M(P,le,ce,"↰","\\Lsh",!0);M(P,le,ce,"⇈","\\upuparrows",!0);M(P,le,ce,"↿","\\upharpoonleft",!0);M(P,le,ce,"⇃","\\downharpoonleft",!0);M(P,Q,ce,"⊶","\\origof",!0);M(P,Q,ce,"⊷","\\imageof",!0);M(P,le,ce,"⊸","\\multimap",!0);M(P,le,ce,"↭","\\leftrightsquigarrow",!0);M(P,le,ce,"⇉","\\rightrightarrows",!0);M(P,le,ce,"⇄","\\rightleftarrows",!0);M(P,le,ce,"↠","\\twoheadrightarrow",!0);M(P,le,ce,"↣","\\rightarrowtail",!0);M(P,le,ce,"↬","\\looparrowright",!0);M(P,le,ce,"↷","\\curvearrowright",!0);M(P,le,ce,"↻","\\circlearrowright",!0);M(P,le,ce,"↱","\\Rsh",!0);M(P,le,ce,"⇊","\\downdownarrows",!0);M(P,le,ce,"↾","\\upharpoonright",!0);M(P,le,ce,"⇂","\\downharpoonright",!0);M(P,le,ce,"⇝","\\rightsquigarrow",!0);M(P,le,ce,"⇝","\\leadsto");M(P,le,ce,"⇛","\\Rrightarrow",!0);M(P,le,ce,"↾","\\restriction");M(P,Q,me,"‘","`");M(P,Q,me,"$","\\$");M(Le,Q,me,"$","\\$");M(Le,Q,me,"$","\\textdollar");M(P,Q,me,"%","\\%");M(Le,Q,me,"%","\\%");M(P,Q,me,"_","\\_");M(Le,Q,me,"_","\\_");M(Le,Q,me,"_","\\textunderscore");M(P,Q,me,"∠","\\angle",!0);M(P,Q,me,"∞","\\infty",!0);M(P,Q,me,"′","\\prime");M(P,Q,me,"△","\\triangle");M(P,Q,me,"Γ","\\Gamma",!0);M(P,Q,me,"Δ","\\Delta",!0);M(P,Q,me,"Θ","\\Theta",!0);M(P,Q,me,"Λ","\\Lambda",!0);M(P,Q,me,"Ξ","\\Xi",!0);M(P,Q,me,"Π","\\Pi",!0);M(P,Q,me,"Σ","\\Sigma",!0);M(P,Q,me,"Υ","\\Upsilon",!0);M(P,Q,me,"Φ","\\Phi",!0);M(P,Q,me,"Ψ","\\Psi",!0);M(P,Q,me,"Ω","\\Omega",!0);M(P,Q,me,"A","Α");M(P,Q,me,"B","Β");M(P,Q,me,"E","Ε");M(P,Q,me,"Z","Ζ");M(P,Q,me,"H","Η");M(P,Q,me,"I","Ι");M(P,Q,me,"K","Κ");M(P,Q,me,"M","Μ");M(P,Q,me,"N","Ν");M(P,Q,me,"O","Ο");M(P,Q,me,"P","Ρ");M(P,Q,me,"T","Τ");M(P,Q,me,"X","Χ");M(P,Q,me,"¬","\\neg",!0);M(P,Q,me,"¬","\\lnot");M(P,Q,me,"⊤","\\top");M(P,Q,me,"⊥","\\bot");M(P,Q,me,"∅","\\emptyset");M(P,le,me,"∅","\\varnothing");M(P,Q,_t,"α","\\alpha",!0);M(P,Q,_t,"β","\\beta",!0);M(P,Q,_t,"γ","\\gamma",!0);M(P,Q,_t,"δ","\\delta",!0);M(P,Q,_t,"ϵ","\\epsilon",!0);M(P,Q,_t,"ζ","\\zeta",!0);M(P,Q,_t,"η","\\eta",!0);M(P,Q,_t,"θ","\\theta",!0);M(P,Q,_t,"ι","\\iota",!0);M(P,Q,_t,"κ","\\kappa",!0);M(P,Q,_t,"λ","\\lambda",!0);M(P,Q,_t,"μ","\\mu",!0);M(P,Q,_t,"ν","\\nu",!0);M(P,Q,_t,"ξ","\\xi",!0);M(P,Q,_t,"ο","\\omicron",!0);M(P,Q,_t,"π","\\pi",!0);M(P,Q,_t,"ρ","\\rho",!0);M(P,Q,_t,"σ","\\sigma",!0);M(P,Q,_t,"τ","\\tau",!0);M(P,Q,_t,"υ","\\upsilon",!0);M(P,Q,_t,"ϕ","\\phi",!0);M(P,Q,_t,"χ","\\chi",!0);M(P,Q,_t,"ψ","\\psi",!0);M(P,Q,_t,"ω","\\omega",!0);M(P,Q,_t,"ε","\\varepsilon",!0);M(P,Q,_t,"ϑ","\\vartheta",!0);M(P,Q,_t,"ϖ","\\varpi",!0);M(P,Q,_t,"ϱ","\\varrho",!0);M(P,Q,_t,"ς","\\varsigma",!0);M(P,Q,_t,"φ","\\varphi",!0);M(P,Q,it,"∗","*",!0);M(P,Q,it,"+","+");M(P,Q,it,"−","-",!0);M(P,Q,it,"⋅","\\cdot",!0);M(P,Q,it,"∘","\\circ",!0);M(P,Q,it,"÷","\\div",!0);M(P,Q,it,"±","\\pm",!0);M(P,Q,it,"×","\\times",!0);M(P,Q,it,"∩","\\cap",!0);M(P,Q,it,"∪","\\cup",!0);M(P,Q,it,"∖","\\setminus",!0);M(P,Q,it,"∧","\\land");M(P,Q,it,"∨","\\lor");M(P,Q,it,"∧","\\wedge",!0);M(P,Q,it,"∨","\\vee",!0);M(P,Q,me,"√","\\surd");M(P,Q,ra,"⟨","\\langle",!0);M(P,Q,ra,"∣","\\lvert");M(P,Q,ra,"∥","\\lVert");M(P,Q,li,"?","?");M(P,Q,li,"!","!");M(P,Q,li,"⟩","\\rangle",!0);M(P,Q,li,"∣","\\rvert");M(P,Q,li,"∥","\\rVert");M(P,Q,ce,"=","=");M(P,Q,ce,":",":");M(P,Q,ce,"≈","\\approx",!0);M(P,Q,ce,"≅","\\cong",!0);M(P,Q,ce,"≥","\\ge");M(P,Q,ce,"≥","\\geq",!0);M(P,Q,ce,"←","\\gets");M(P,Q,ce,">","\\gt",!0);M(P,Q,ce,"∈","\\in",!0);M(P,Q,ce,"","\\@not");M(P,Q,ce,"⊂","\\subset",!0);M(P,Q,ce,"⊃","\\supset",!0);M(P,Q,ce,"⊆","\\subseteq",!0);M(P,Q,ce,"⊇","\\supseteq",!0);M(P,le,ce,"⊈","\\nsubseteq",!0);M(P,le,ce,"⊉","\\nsupseteq",!0);M(P,Q,ce,"⊨","\\models");M(P,Q,ce,"←","\\leftarrow",!0);M(P,Q,ce,"≤","\\le");M(P,Q,ce,"≤","\\leq",!0);M(P,Q,ce,"<","\\lt",!0);M(P,Q,ce,"→","\\rightarrow",!0);M(P,Q,ce,"→","\\to");M(P,le,ce,"≱","\\ngeq",!0);M(P,le,ce,"≰","\\nleq",!0);M(P,Q,tc," ","\\ ");M(P,Q,tc," ","\\space");M(P,Q,tc," ","\\nobreakspace");M(Le,Q,tc," ","\\ ");M(Le,Q,tc," "," ");M(Le,Q,tc," ","\\space");M(Le,Q,tc," ","\\nobreakspace");M(P,Q,tc,null,"\\nobreak");M(P,Q,tc,null,"\\allowbreak");M(P,Q,Vb,",",",");M(P,Q,Vb,";",";");M(P,le,it,"⊼","\\barwedge",!0);M(P,le,it,"⊻","\\veebar",!0);M(P,Q,it,"⊙","\\odot",!0);M(P,Q,it,"⊕","\\oplus",!0);M(P,Q,it,"⊗","\\otimes",!0);M(P,Q,me,"∂","\\partial",!0);M(P,Q,it,"⊘","\\oslash",!0);M(P,le,it,"⊚","\\circledcirc",!0);M(P,le,it,"⊡","\\boxdot",!0);M(P,Q,it,"△","\\bigtriangleup");M(P,Q,it,"▽","\\bigtriangledown");M(P,Q,it,"†","\\dagger");M(P,Q,it,"⋄","\\diamond");M(P,Q,it,"⋆","\\star");M(P,Q,it,"◃","\\triangleleft");M(P,Q,it,"▹","\\triangleright");M(P,Q,ra,"{","\\{");M(Le,Q,me,"{","\\{");M(Le,Q,me,"{","\\textbraceleft");M(P,Q,li,"}","\\}");M(Le,Q,me,"}","\\}");M(Le,Q,me,"}","\\textbraceright");M(P,Q,ra,"{","\\lbrace");M(P,Q,li,"}","\\rbrace");M(P,Q,ra,"[","\\lbrack",!0);M(Le,Q,me,"[","\\lbrack",!0);M(P,Q,li,"]","\\rbrack",!0);M(Le,Q,me,"]","\\rbrack",!0);M(P,Q,ra,"(","\\lparen",!0);M(P,Q,li,")","\\rparen",!0);M(Le,Q,me,"<","\\textless",!0);M(Le,Q,me,">","\\textgreater",!0);M(P,Q,ra,"⌊","\\lfloor",!0);M(P,Q,li,"⌋","\\rfloor",!0);M(P,Q,ra,"⌈","\\lceil",!0);M(P,Q,li,"⌉","\\rceil",!0);M(P,Q,me,"\\","\\backslash");M(P,Q,me,"∣","|");M(P,Q,me,"∣","\\vert");M(Le,Q,me,"|","\\textbar",!0);M(P,Q,me,"∥","\\|");M(P,Q,me,"∥","\\Vert");M(Le,Q,me,"∥","\\textbardbl");M(Le,Q,me,"~","\\textasciitilde");M(Le,Q,me,"\\","\\textbackslash");M(Le,Q,me,"^","\\textasciicircum");M(P,Q,ce,"↑","\\uparrow",!0);M(P,Q,ce,"⇑","\\Uparrow",!0);M(P,Q,ce,"↓","\\downarrow",!0);M(P,Q,ce,"⇓","\\Downarrow",!0);M(P,Q,ce,"↕","\\updownarrow",!0);M(P,Q,ce,"⇕","\\Updownarrow",!0);M(P,Q,os,"∐","\\coprod");M(P,Q,os,"⋁","\\bigvee");M(P,Q,os,"⋀","\\bigwedge");M(P,Q,os,"⨄","\\biguplus");M(P,Q,os,"⋂","\\bigcap");M(P,Q,os,"⋃","\\bigcup");M(P,Q,os,"∫","\\int");M(P,Q,os,"∫","\\intop");M(P,Q,os,"∬","\\iint");M(P,Q,os,"∭","\\iiint");M(P,Q,os,"∏","\\prod");M(P,Q,os,"∑","\\sum");M(P,Q,os,"⨂","\\bigotimes");M(P,Q,os,"⨁","\\bigoplus");M(P,Q,os,"⨀","\\bigodot");M(P,Q,os,"∮","\\oint");M(P,Q,os,"∯","\\oiint");M(P,Q,os,"∰","\\oiiint");M(P,Q,os,"⨆","\\bigsqcup");M(P,Q,os,"∫","\\smallint");M(Le,Q,$f,"…","\\textellipsis");M(P,Q,$f,"…","\\mathellipsis");M(Le,Q,$f,"…","\\ldots",!0);M(P,Q,$f,"…","\\ldots",!0);M(P,Q,$f,"⋯","\\@cdots",!0);M(P,Q,$f,"⋱","\\ddots",!0);M(P,Q,me,"⋮","\\varvdots");M(Le,Q,me,"⋮","\\varvdots");M(P,Q,_r,"ˊ","\\acute");M(P,Q,_r,"ˋ","\\grave");M(P,Q,_r,"¨","\\ddot");M(P,Q,_r,"~","\\tilde");M(P,Q,_r,"ˉ","\\bar");M(P,Q,_r,"˘","\\breve");M(P,Q,_r,"ˇ","\\check");M(P,Q,_r,"^","\\hat");M(P,Q,_r,"⃗","\\vec");M(P,Q,_r,"˙","\\dot");M(P,Q,_r,"˚","\\mathring");M(P,Q,_t,"","\\@imath");M(P,Q,_t,"","\\@jmath");M(P,Q,me,"ı","ı");M(P,Q,me,"ȷ","ȷ");M(Le,Q,me,"ı","\\i",!0);M(Le,Q,me,"ȷ","\\j",!0);M(Le,Q,me,"ß","\\ss",!0);M(Le,Q,me,"æ","\\ae",!0);M(Le,Q,me,"œ","\\oe",!0);M(Le,Q,me,"ø","\\o",!0);M(Le,Q,me,"Æ","\\AE",!0);M(Le,Q,me,"Œ","\\OE",!0);M(Le,Q,me,"Ø","\\O",!0);M(Le,Q,_r,"ˊ","\\'");M(Le,Q,_r,"ˋ","\\`");M(Le,Q,_r,"ˆ","\\^");M(Le,Q,_r,"˜","\\~");M(Le,Q,_r,"ˉ","\\=");M(Le,Q,_r,"˘","\\u");M(Le,Q,_r,"˙","\\.");M(Le,Q,_r,"¸","\\c");M(Le,Q,_r,"˚","\\r");M(Le,Q,_r,"ˇ","\\v");M(Le,Q,_r,"¨",'\\"');M(Le,Q,_r,"˝","\\H");M(Le,Q,_r,"◯","\\textcircled");var sU={"--":!0,"---":!0,"``":!0,"''":!0};M(Le,Q,me,"–","--",!0);M(Le,Q,me,"–","\\textendash");M(Le,Q,me,"—","---",!0);M(Le,Q,me,"—","\\textemdash");M(Le,Q,me,"‘","`",!0);M(Le,Q,me,"‘","\\textquoteleft");M(Le,Q,me,"’","'",!0);M(Le,Q,me,"’","\\textquoteright");M(Le,Q,me,"“","``",!0);M(Le,Q,me,"“","\\textquotedblleft");M(Le,Q,me,"”","''",!0);M(Le,Q,me,"”","\\textquotedblright");M(P,Q,me,"°","\\degree",!0);M(Le,Q,me,"°","\\degree");M(Le,Q,me,"°","\\textdegree",!0);M(P,Q,me,"£","\\pounds");M(P,Q,me,"£","\\mathsterling",!0);M(Le,Q,me,"£","\\pounds");M(Le,Q,me,"£","\\textsterling",!0);M(P,le,me,"✠","\\maltese");M(Le,le,me,"✠","\\maltese");var wR='0123456789/@."';for(var YS=0;YS0)return Ha(i,d,s,n,a.concat(h));if(c){var m,g;if(c==="boldsymbol"){var x=p3e(i,s,n,a,r);m=x.fontName,g=[x.fontClass]}else l?(m=oU[c].fontName,g=[c]):(m=F1(c,n.fontWeight,n.fontShape),g=[c,n.fontWeight,n.fontShape]);if(Ub(i,m,s).metrics)return Ha(i,m,s,n,a.concat(g));if(sU.hasOwnProperty(i)&&m.slice(0,10)==="Typewriter"){for(var y=[],w=0;w{if(ru(t.classes)!==ru(e.classes)||t.skew!==e.skew||t.maxFontSize!==e.maxFontSize)return!1;if(t.classes.length===1){var n=t.classes[0];if(n==="mbin"||n==="mord")return!1}for(var r in t.style)if(t.style.hasOwnProperty(r)&&t.style[r]!==e.style[r])return!1;for(var s in e.style)if(e.style.hasOwnProperty(s)&&t.style[s]!==e.style[s])return!1;return!0},v3e=t=>{for(var e=0;en&&(n=a.height),a.depth>r&&(r=a.depth),a.maxFontSize>s&&(s=a.maxFontSize)}e.height=n,e.depth=r,e.maxFontSize=s},gi=function(e,n,r,s){var i=new bg(e,n,r,s);return DN(i),i},iU=(t,e,n,r)=>new bg(t,e,n,r),y3e=function(e,n,r){var s=gi([e],[],n);return s.height=Math.max(r||n.fontMetrics().defaultRuleThickness,n.minRuleThickness),s.style.borderBottomWidth=Xe(s.height),s.maxFontSize=1,s},b3e=function(e,n,r,s){var i=new RN(e,n,r,s);return DN(i),i},aU=function(e){var n=new yg(e);return DN(n),n},w3e=function(e,n){return e instanceof yg?gi([],[e],n):e},S3e=function(e){if(e.positionType==="individualShift"){for(var n=e.children,r=[n[0]],s=-n[0].shift-n[0].elem.depth,i=s,a=1;a{var n=gi(["mspace"],[],e),r=Ir(t,e);return n.style.marginRight=Xe(r),n},F1=function(e,n,r){var s="";switch(e){case"amsrm":s="AMS";break;case"textrm":s="Main";break;case"textsf":s="SansSerif";break;case"texttt":s="Typewriter";break;default:s=e}var i;return n==="textbf"&&r==="textit"?i="BoldItalic":n==="textbf"?i="Bold":n==="textit"?i="Italic":i="Regular",s+"-"+i},oU={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},lU={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},j3e=function(e,n){var[r,s,i]=lU[e],a=new su(r),l=new Ul([a],{width:Xe(s),height:Xe(i),style:"width:"+Xe(s),viewBox:"0 0 "+1e3*s+" "+1e3*i,preserveAspectRatio:"xMinYMin"}),c=iU(["overlay"],[l],n);return c.height=i,c.style.height=Xe(i),c.style.width=Xe(s),c},we={fontMap:oU,makeSymbol:Ha,mathsym:m3e,makeSpan:gi,makeSvgSpan:iU,makeLineSpan:y3e,makeAnchor:b3e,makeFragment:aU,wrapFragment:w3e,makeVList:k3e,makeOrd:g3e,makeGlue:O3e,staticSvg:j3e,svgData:lU,tryCombineChars:v3e},Pr={number:3,unit:"mu"},Bu={number:4,unit:"mu"},Sl={number:5,unit:"mu"},N3e={mord:{mop:Pr,mbin:Bu,mrel:Sl,minner:Pr},mop:{mord:Pr,mop:Pr,mrel:Sl,minner:Pr},mbin:{mord:Bu,mop:Bu,mopen:Bu,minner:Bu},mrel:{mord:Sl,mop:Sl,mopen:Sl,minner:Sl},mopen:{},mclose:{mop:Pr,mbin:Bu,mrel:Sl,minner:Pr},mpunct:{mord:Pr,mop:Pr,mrel:Sl,mopen:Pr,mclose:Pr,mpunct:Pr,minner:Pr},minner:{mord:Pr,mop:Pr,mbin:Bu,mrel:Sl,mopen:Pr,mpunct:Pr,minner:Pr}},C3e={mord:{mop:Pr},mop:{mord:Pr,mop:Pr},mbin:{},mrel:{},mopen:{},mclose:{mop:Pr},mpunct:{},minner:{mop:Pr}},cU={},Ey={},_y={};function tt(t){for(var{type:e,names:n,props:r,handler:s,htmlBuilder:i,mathmlBuilder:a}=t,l={type:e,numArgs:r.numArgs,argTypes:r.argTypes,allowedInArgument:!!r.allowedInArgument,allowedInText:!!r.allowedInText,allowedInMath:r.allowedInMath===void 0?!0:r.allowedInMath,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,primitive:!!r.primitive,handler:s},c=0;c{var S=w.classes[0],k=y.classes[0];S==="mbin"&&E3e.includes(k)?w.classes[0]="mord":k==="mbin"&&T3e.includes(S)&&(y.classes[0]="mord")},{node:m},g,x),NR(i,(y,w)=>{var S=VO(w),k=VO(y),j=S&&k?y.hasClass("mtight")?C3e[S][k]:N3e[S][k]:null;if(j)return we.makeGlue(j,d)},{node:m},g,x),i},NR=function t(e,n,r,s,i){s&&e.push(s);for(var a=0;ag=>{e.splice(m+1,0,g),a++})(a)}s&&e.pop()},uU=function(e){return e instanceof yg||e instanceof RN||e instanceof bg&&e.hasClass("enclosing")?e:null},M3e=function t(e,n){var r=uU(e);if(r){var s=r.children;if(s.length){if(n==="right")return t(s[s.length-1],"right");if(n==="left")return t(s[0],"left")}}return e},VO=function(e,n){return e?(n&&(e=M3e(e,n)),A3e[e.classes[0]]||null):null},Sp=function(e,n){var r=["nulldelimiter"].concat(e.baseSizingClasses());return Wl(n.concat(r))},qn=function(e,n,r){if(!e)return Wl();if(Ey[e.type]){var s=Ey[e.type](e,n);if(r&&n.size!==r.size){s=Wl(n.sizingClasses(r),[s],n);var i=n.sizeMultiplier/r.sizeMultiplier;s.height*=i,s.depth*=i}return s}else throw new qe("Got group of unknown type: '"+e.type+"'")};function q1(t,e){var n=Wl(["base"],t,e),r=Wl(["strut"]);return r.style.height=Xe(n.height+n.depth),n.depth&&(r.style.verticalAlign=Xe(-n.depth)),n.children.unshift(r),n}function UO(t,e){var n=null;t.length===1&&t[0].type==="tag"&&(n=t[0].tag,t=t[0].body);var r=ms(t,e,"root"),s;r.length===2&&r[1].hasClass("tag")&&(s=r.pop());for(var i=[],a=[],l=0;l0&&(i.push(q1(a,e)),a=[]),i.push(r[l]));a.length>0&&i.push(q1(a,e));var d;n?(d=q1(ms(n,e,!0)),d.classes=["tag"],i.push(d)):s&&i.push(s);var h=Wl(["katex-html"],i);if(h.setAttribute("aria-hidden","true"),d){var m=d.children[0];m.style.height=Xe(h.height+h.depth),h.depth&&(m.style.verticalAlign=Xe(-h.depth))}return h}function dU(t){return new yg(t)}class Ui{constructor(e,n,r){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=n||[],this.classes=r||[]}setAttribute(e,n){this.attributes[e]=n}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&e.setAttribute(n,this.attributes[n]);this.classes.length>0&&(e.className=ru(this.classes));for(var r=0;r0&&(e+=' class ="'+Wn.escape(ru(this.classes))+'"'),e+=">";for(var r=0;r",e}toText(){return this.children.map(e=>e.toText()).join("")}}class Ro{constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return Wn.escape(this.toText())}toText(){return this.text}}class R3e{constructor(e){this.width=void 0,this.character=void 0,this.width=e,e>=.05555&&e<=.05556?this.character=" ":e>=.1666&&e<=.1667?this.character=" ":e>=.2222&&e<=.2223?this.character=" ":e>=.2777&&e<=.2778?this.character="  ":e>=-.05556&&e<=-.05555?this.character=" ⁣":e>=-.1667&&e<=-.1666?this.character=" ⁣":e>=-.2223&&e<=-.2222?this.character=" ⁣":e>=-.2778&&e<=-.2777?this.character=" ⁣":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",Xe(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}}var Fe={MathNode:Ui,TextNode:Ro,SpaceNode:R3e,newDocumentFragment:dU},Ra=function(e,n,r){return pr[n][e]&&pr[n][e].replace&&e.charCodeAt(0)!==55349&&!(sU.hasOwnProperty(e)&&r&&(r.fontFamily&&r.fontFamily.slice(4,6)==="tt"||r.font&&r.font.slice(4,6)==="tt"))&&(e=pr[n][e].replace),new Fe.TextNode(e)},PN=function(e){return e.length===1?e[0]:new Fe.MathNode("mrow",e)},zN=function(e,n){if(n.fontFamily==="texttt")return"monospace";if(n.fontFamily==="textsf")return n.fontShape==="textit"&&n.fontWeight==="textbf"?"sans-serif-bold-italic":n.fontShape==="textit"?"sans-serif-italic":n.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(n.fontShape==="textit"&&n.fontWeight==="textbf")return"bold-italic";if(n.fontShape==="textit")return"italic";if(n.fontWeight==="textbf")return"bold";var r=n.font;if(!r||r==="mathnormal")return null;var s=e.mode;if(r==="mathit")return"italic";if(r==="boldsymbol")return e.type==="textord"?"bold":"bold-italic";if(r==="mathbf")return"bold";if(r==="mathbb")return"double-struck";if(r==="mathsfit")return"sans-serif-italic";if(r==="mathfrak")return"fraktur";if(r==="mathscr"||r==="mathcal")return"script";if(r==="mathsf")return"sans-serif";if(r==="mathtt")return"monospace";var i=e.text;if(["\\imath","\\jmath"].includes(i))return null;pr[s][i]&&pr[s][i].replace&&(i=pr[s][i].replace);var a=we.fontMap[r].fontName;return MN(i,a,s)?we.fontMap[r].variant:null};function e5(t){if(!t)return!1;if(t.type==="mi"&&t.children.length===1){var e=t.children[0];return e instanceof Ro&&e.text==="."}else if(t.type==="mo"&&t.children.length===1&&t.getAttribute("separator")==="true"&&t.getAttribute("lspace")==="0em"&&t.getAttribute("rspace")==="0em"){var n=t.children[0];return n instanceof Ro&&n.text===","}else return!1}var Mi=function(e,n,r){if(e.length===1){var s=hr(e[0],n);return r&&s instanceof Ui&&s.type==="mo"&&(s.setAttribute("lspace","0em"),s.setAttribute("rspace","0em")),[s]}for(var i=[],a,l=0;l=1&&(a.type==="mn"||e5(a))){var d=c.children[0];d instanceof Ui&&d.type==="mn"&&(d.children=[...a.children,...d.children],i.pop())}else if(a.type==="mi"&&a.children.length===1){var h=a.children[0];if(h instanceof Ro&&h.text==="̸"&&(c.type==="mo"||c.type==="mi"||c.type==="mn")){var m=c.children[0];m instanceof Ro&&m.text.length>0&&(m.text=m.text.slice(0,1)+"̸"+m.text.slice(1),i.pop())}}}i.push(c),a=c}return i},iu=function(e,n,r){return PN(Mi(e,n,r))},hr=function(e,n){if(!e)return new Fe.MathNode("mrow");if(_y[e.type]){var r=_y[e.type](e,n);return r}else throw new qe("Got group of unknown type: '"+e.type+"'")};function CR(t,e,n,r,s){var i=Mi(t,n),a;i.length===1&&i[0]instanceof Ui&&["mrow","mtable"].includes(i[0].type)?a=i[0]:a=new Fe.MathNode("mrow",i);var l=new Fe.MathNode("annotation",[new Fe.TextNode(e)]);l.setAttribute("encoding","application/x-tex");var c=new Fe.MathNode("semantics",[a,l]),d=new Fe.MathNode("math",[c]);d.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),r&&d.setAttribute("display","block");var h=s?"katex":"katex-mathml";return we.makeSpan([h],[d])}var hU=function(e){return new Al({style:e.displayMode?At.DISPLAY:At.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},fU=function(e,n){if(n.displayMode){var r=["katex-display"];n.leqno&&r.push("leqno"),n.fleqn&&r.push("fleqn"),e=we.makeSpan(r,[e])}return e},D3e=function(e,n,r){var s=hU(r),i;if(r.output==="mathml")return CR(e,n,s,r.displayMode,!0);if(r.output==="html"){var a=UO(e,s);i=we.makeSpan(["katex"],[a])}else{var l=CR(e,n,s,r.displayMode,!1),c=UO(e,s);i=we.makeSpan(["katex"],[l,c])}return fU(i,r)},P3e=function(e,n,r){var s=hU(r),i=UO(e,s),a=we.makeSpan(["katex"],[i]);return fU(a,r)},z3e={widehat:"^",widecheck:"ˇ",widetilde:"~",utilde:"~",overleftarrow:"←",underleftarrow:"←",xleftarrow:"←",overrightarrow:"→",underrightarrow:"→",xrightarrow:"→",underbrace:"⏟",overbrace:"⏞",overgroup:"⏠",undergroup:"⏡",overleftrightarrow:"↔",underleftrightarrow:"↔",xleftrightarrow:"↔",Overrightarrow:"⇒",xRightarrow:"⇒",overleftharpoon:"↼",xleftharpoonup:"↼",overrightharpoon:"⇀",xrightharpoonup:"⇀",xLeftarrow:"⇐",xLeftrightarrow:"⇔",xhookleftarrow:"↩",xhookrightarrow:"↪",xmapsto:"↦",xrightharpoondown:"⇁",xleftharpoondown:"↽",xrightleftharpoons:"⇌",xleftrightharpoons:"⇋",xtwoheadleftarrow:"↞",xtwoheadrightarrow:"↠",xlongequal:"=",xtofrom:"⇄",xrightleftarrows:"⇄",xrightequilibrium:"⇌",xleftequilibrium:"⇋","\\cdrightarrow":"→","\\cdleftarrow":"←","\\cdlongequal":"="},I3e=function(e){var n=new Fe.MathNode("mo",[new Fe.TextNode(z3e[e.replace(/^\\/,"")])]);return n.setAttribute("stretchy","true"),n},L3e={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},B3e=function(e){return e.type==="ordgroup"?e.body.length:1},F3e=function(e,n){function r(){var l=4e5,c=e.label.slice(1);if(["widehat","widecheck","widetilde","utilde"].includes(c)){var d=e,h=B3e(d.base),m,g,x;if(h>5)c==="widehat"||c==="widecheck"?(m=420,l=2364,x=.42,g=c+"4"):(m=312,l=2340,x=.34,g="tilde4");else{var y=[1,1,2,2,3,3][h];c==="widehat"||c==="widecheck"?(l=[0,1062,2364,2364,2364][y],m=[0,239,300,360,420][y],x=[0,.24,.3,.3,.36,.42][y],g=c+y):(l=[0,600,1033,2339,2340][y],m=[0,260,286,306,312][y],x=[0,.26,.286,.3,.306,.34][y],g="tilde"+y)}var w=new su(g),S=new Ul([w],{width:"100%",height:Xe(x),viewBox:"0 0 "+l+" "+m,preserveAspectRatio:"none"});return{span:we.makeSvgSpan([],[S],n),minWidth:0,height:x}}else{var k=[],j=L3e[c],[N,T,E]=j,_=E/1e3,A=N.length,D,q;if(A===1){var B=j[3];D=["hide-tail"],q=[B]}else if(A===2)D=["halfarrow-left","halfarrow-right"],q=["xMinYMin","xMaxYMin"];else if(A===3)D=["brace-left","brace-center","brace-right"],q=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support - `+A+" children.");for(var H=0;H0&&(s.style.minWidth=Xe(i)),s},q3e=function(e,n,r,s,i){var a,l=e.height+e.depth+r+s;if(/fbox|color|angl/.test(n)){if(a=we.makeSpan(["stretchy",n],[],i),n==="fbox"){var c=i.color&&i.getColor();c&&(a.style.borderColor=c)}}else{var d=[];/^[bx]cancel$/.test(n)&&d.push(new HO({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(n)&&d.push(new HO({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new Ul(d,{width:"100%",height:Xe(l)});a=we.makeSvgSpan([],[h],i)}return a.height=l,a.style.height=Xe(l),a},Gl={encloseSpan:q3e,mathMLnode:I3e,svgSpan:F3e};function nn(t,e){if(!t||t.type!==e)throw new Error("Expected node of type "+e+", but got "+(t?"node of type "+t.type:String(t)));return t}function IN(t){var e=Wb(t);if(!e)throw new Error("Expected node of symbol group type, but got "+(t?"node of type "+t.type:String(t)));return e}function Wb(t){return t&&(t.type==="atom"||h3e.hasOwnProperty(t.type))?t:null}var LN=(t,e)=>{var n,r,s;t&&t.type==="supsub"?(r=nn(t.base,"accent"),n=r.base,t.base=n,s=u3e(qn(t,e)),t.base=r):(r=nn(t,"accent"),n=r.base);var i=qn(n,e.havingCrampedStyle()),a=r.isShifty&&Wn.isCharacterBox(n),l=0;if(a){var c=Wn.getBaseElem(n),d=qn(c,e.havingCrampedStyle());l=bR(d).skew}var h=r.label==="\\c",m=h?i.height+i.depth:Math.min(i.height,e.fontMetrics().xHeight),g;if(r.isStretchy)g=Gl.svgSpan(r,e),g=we.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:g,wrapperClasses:["svg-align"],wrapperStyle:l>0?{width:"calc(100% - "+Xe(2*l)+")",marginLeft:Xe(2*l)}:void 0}]},e);else{var x,y;r.label==="\\vec"?(x=we.staticSvg("vec",e),y=we.svgData.vec[1]):(x=we.makeOrd({mode:r.mode,text:r.label},e,"textord"),x=bR(x),x.italic=0,y=x.width,h&&(m+=x.depth)),g=we.makeSpan(["accent-body"],[x]);var w=r.label==="\\textcircled";w&&(g.classes.push("accent-full"),m=i.height);var S=l;w||(S-=y/2),g.style.left=Xe(S),r.label==="\\textcircled"&&(g.style.top=".2em"),g=we.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-m},{type:"elem",elem:g}]},e)}var k=we.makeSpan(["mord","accent"],[g],e);return s?(s.children[0]=k,s.height=Math.max(k.height,s.height),s.classes[0]="mord",s):k},mU=(t,e)=>{var n=t.isStretchy?Gl.mathMLnode(t.label):new Fe.MathNode("mo",[Ra(t.label,t.mode)]),r=new Fe.MathNode("mover",[hr(t.base,e),n]);return r.setAttribute("accent","true"),r},$3e=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(t=>"\\"+t).join("|"));tt({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(t,e)=>{var n=Ay(e[0]),r=!$3e.test(t.funcName),s=!r||t.funcName==="\\widehat"||t.funcName==="\\widetilde"||t.funcName==="\\widecheck";return{type:"accent",mode:t.parser.mode,label:t.funcName,isStretchy:r,isShifty:s,base:n}},htmlBuilder:LN,mathmlBuilder:mU});tt({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(t,e)=>{var n=e[0],r=t.parser.mode;return r==="math"&&(t.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+t.funcName+" works only in text mode"),r="text"),{type:"accent",mode:r,label:t.funcName,isStretchy:!1,isShifty:!0,base:n}},htmlBuilder:LN,mathmlBuilder:mU});tt({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0];return{type:"accentUnder",mode:n.mode,label:r,base:s}},htmlBuilder:(t,e)=>{var n=qn(t.base,e),r=Gl.svgSpan(t,e),s=t.label==="\\utilde"?.12:0,i=we.makeVList({positionType:"top",positionData:n.height,children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:s},{type:"elem",elem:n}]},e);return we.makeSpan(["mord","accentunder"],[i],e)},mathmlBuilder:(t,e)=>{var n=Gl.mathMLnode(t.label),r=new Fe.MathNode("munder",[hr(t.base,e),n]);return r.setAttribute("accentunder","true"),r}});var $1=t=>{var e=new Fe.MathNode("mpadded",t?[t]:[]);return e.setAttribute("width","+0.6em"),e.setAttribute("lspace","0.3em"),e};tt({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,n){var{parser:r,funcName:s}=t;return{type:"xArrow",mode:r.mode,label:s,body:e[0],below:n[0]}},htmlBuilder(t,e){var n=e.style,r=e.havingStyle(n.sup()),s=we.wrapFragment(qn(t.body,r,e),e),i=t.label.slice(0,2)==="\\x"?"x":"cd";s.classes.push(i+"-arrow-pad");var a;t.below&&(r=e.havingStyle(n.sub()),a=we.wrapFragment(qn(t.below,r,e),e),a.classes.push(i+"-arrow-pad"));var l=Gl.svgSpan(t,e),c=-e.fontMetrics().axisHeight+.5*l.height,d=-e.fontMetrics().axisHeight-.5*l.height-.111;(s.depth>.25||t.label==="\\xleftequilibrium")&&(d-=s.depth);var h;if(a){var m=-e.fontMetrics().axisHeight+a.height+.5*l.height+.111;h=we.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:d},{type:"elem",elem:l,shift:c},{type:"elem",elem:a,shift:m}]},e)}else h=we.makeVList({positionType:"individualShift",children:[{type:"elem",elem:s,shift:d},{type:"elem",elem:l,shift:c}]},e);return h.children[0].children[0].children[1].classes.push("svg-align"),we.makeSpan(["mrel","x-arrow"],[h],e)},mathmlBuilder(t,e){var n=Gl.mathMLnode(t.label);n.setAttribute("minsize",t.label.charAt(0)==="x"?"1.75em":"3.0em");var r;if(t.body){var s=$1(hr(t.body,e));if(t.below){var i=$1(hr(t.below,e));r=new Fe.MathNode("munderover",[n,i,s])}else r=new Fe.MathNode("mover",[n,s])}else if(t.below){var a=$1(hr(t.below,e));r=new Fe.MathNode("munder",[n,a])}else r=$1(),r=new Fe.MathNode("mover",[n,r]);return r}});var H3e=we.makeSpan;function pU(t,e){var n=ms(t.body,e,!0);return H3e([t.mclass],n,e)}function gU(t,e){var n,r=Mi(t.body,e);return t.mclass==="minner"?n=new Fe.MathNode("mpadded",r):t.mclass==="mord"?t.isCharacterBox?(n=r[0],n.type="mi"):n=new Fe.MathNode("mi",r):(t.isCharacterBox?(n=r[0],n.type="mo"):n=new Fe.MathNode("mo",r),t.mclass==="mbin"?(n.attributes.lspace="0.22em",n.attributes.rspace="0.22em"):t.mclass==="mpunct"?(n.attributes.lspace="0em",n.attributes.rspace="0.17em"):t.mclass==="mopen"||t.mclass==="mclose"?(n.attributes.lspace="0em",n.attributes.rspace="0em"):t.mclass==="minner"&&(n.attributes.lspace="0.0556em",n.attributes.width="+0.1111em")),n}tt({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];return{type:"mclass",mode:n.mode,mclass:"m"+r.slice(5),body:Gr(s),isCharacterBox:Wn.isCharacterBox(s)}},htmlBuilder:pU,mathmlBuilder:gU});var Gb=t=>{var e=t.type==="ordgroup"&&t.body.length?t.body[0]:t;return e.type==="atom"&&(e.family==="bin"||e.family==="rel")?"m"+e.family:"mord"};tt({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(t,e){var{parser:n}=t;return{type:"mclass",mode:n.mode,mclass:Gb(e[0]),body:Gr(e[1]),isCharacterBox:Wn.isCharacterBox(e[1])}}});tt({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(t,e){var{parser:n,funcName:r}=t,s=e[1],i=e[0],a;r!=="\\stackrel"?a=Gb(s):a="mrel";var l={type:"op",mode:s.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:r!=="\\stackrel",body:Gr(s)},c={type:"supsub",mode:i.mode,base:l,sup:r==="\\underset"?null:i,sub:r==="\\underset"?i:null};return{type:"mclass",mode:n.mode,mclass:a,body:[c],isCharacterBox:Wn.isCharacterBox(c)}},htmlBuilder:pU,mathmlBuilder:gU});tt({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"pmb",mode:n.mode,mclass:Gb(e[0]),body:Gr(e[0])}},htmlBuilder(t,e){var n=ms(t.body,e,!0),r=we.makeSpan([t.mclass],n,e);return r.style.textShadow="0.02em 0.01em 0.04px",r},mathmlBuilder(t,e){var n=Mi(t.body,e),r=new Fe.MathNode("mstyle",n);return r.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),r}});var Q3e={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},TR=()=>({type:"styling",body:[],mode:"math",style:"display"}),ER=t=>t.type==="textord"&&t.text==="@",V3e=(t,e)=>(t.type==="mathord"||t.type==="atom")&&t.text===e;function U3e(t,e,n){var r=Q3e[t];switch(r){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return n.callFunction(r,[e[0]],[e[1]]);case"\\uparrow":case"\\downarrow":{var s=n.callFunction("\\\\cdleft",[e[0]],[]),i={type:"atom",text:r,mode:"math",family:"rel"},a=n.callFunction("\\Big",[i],[]),l=n.callFunction("\\\\cdright",[e[1]],[]),c={type:"ordgroup",mode:"math",body:[s,a,l]};return n.callFunction("\\\\cdparent",[c],[])}case"\\\\cdlongequal":return n.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var d={type:"textord",text:"\\Vert",mode:"math"};return n.callFunction("\\Big",[d],[])}default:return{type:"textord",text:" ",mode:"math"}}}function W3e(t){var e=[];for(t.gullet.beginGroup(),t.gullet.macros.set("\\cr","\\\\\\relax"),t.gullet.beginGroup();;){e.push(t.parseExpression(!1,"\\\\")),t.gullet.endGroup(),t.gullet.beginGroup();var n=t.fetch().text;if(n==="&"||n==="\\\\")t.consume();else if(n==="\\end"){e[e.length-1].length===0&&e.pop();break}else throw new qe("Expected \\\\ or \\cr or \\end",t.nextToken)}for(var r=[],s=[r],i=0;i-1))if("<>AV".indexOf(d)>-1)for(var m=0;m<2;m++){for(var g=!0,x=c+1;xAV=|." after @',a[c]);var y=U3e(d,h,t),w={type:"styling",body:[y],mode:"math",style:"display"};r.push(w),l=TR()}i%2===0?r.push(l):r.shift(),r=[],s.push(r)}t.gullet.endGroup(),t.gullet.endGroup();var S=new Array(s[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:s,arraystretch:1,addJot:!0,rowGaps:[null],cols:S,colSeparationType:"CD",hLinesBeforeRow:new Array(s.length+1).fill([])}}tt({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:r}=t;return{type:"cdlabel",mode:n.mode,side:r.slice(4),label:e[0]}},htmlBuilder(t,e){var n=e.havingStyle(e.style.sup()),r=we.wrapFragment(qn(t.label,n,e),e);return r.classes.push("cd-label-"+t.side),r.style.bottom=Xe(.8-r.depth),r.height=0,r.depth=0,r},mathmlBuilder(t,e){var n=new Fe.MathNode("mrow",[hr(t.label,e)]);return n=new Fe.MathNode("mpadded",[n]),n.setAttribute("width","0"),t.side==="left"&&n.setAttribute("lspace","-1width"),n.setAttribute("voffset","0.7em"),n=new Fe.MathNode("mstyle",[n]),n.setAttribute("displaystyle","false"),n.setAttribute("scriptlevel","1"),n}});tt({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(t,e){var{parser:n}=t;return{type:"cdlabelparent",mode:n.mode,fragment:e[0]}},htmlBuilder(t,e){var n=we.wrapFragment(qn(t.fragment,e),e);return n.classes.push("cd-vert-arrow"),n},mathmlBuilder(t,e){return new Fe.MathNode("mrow",[hr(t.fragment,e)])}});tt({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(t,e){for(var{parser:n}=t,r=nn(e[0],"ordgroup"),s=r.body,i="",a=0;a=1114111)throw new qe("\\@char with invalid code point "+i);return c<=65535?d=String.fromCharCode(c):(c-=65536,d=String.fromCharCode((c>>10)+55296,(c&1023)+56320)),{type:"textord",mode:n.mode,text:d}}});var xU=(t,e)=>{var n=ms(t.body,e.withColor(t.color),!1);return we.makeFragment(n)},vU=(t,e)=>{var n=Mi(t.body,e.withColor(t.color)),r=new Fe.MathNode("mstyle",n);return r.setAttribute("mathcolor",t.color),r};tt({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(t,e){var{parser:n}=t,r=nn(e[0],"color-token").color,s=e[1];return{type:"color",mode:n.mode,color:r,body:Gr(s)}},htmlBuilder:xU,mathmlBuilder:vU});tt({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(t,e){var{parser:n,breakOnTokenText:r}=t,s=nn(e[0],"color-token").color;n.gullet.macros.set("\\current@color",s);var i=n.parseExpression(!0,r);return{type:"color",mode:n.mode,color:s,body:i}},htmlBuilder:xU,mathmlBuilder:vU});tt({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(t,e,n){var{parser:r}=t,s=r.gullet.future().text==="["?r.parseSizeGroup(!0):null,i=!r.settings.displayMode||!r.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:r.mode,newLine:i,size:s&&nn(s,"size").value}},htmlBuilder(t,e){var n=we.makeSpan(["mspace"],[],e);return t.newLine&&(n.classes.push("newline"),t.size&&(n.style.marginTop=Xe(Ir(t.size,e)))),n},mathmlBuilder(t,e){var n=new Fe.MathNode("mspace");return t.newLine&&(n.setAttribute("linebreak","newline"),t.size&&n.setAttribute("height",Xe(Ir(t.size,e)))),n}});var WO={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},yU=t=>{var e=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(e))throw new qe("Expected a control sequence",t);return e},G3e=t=>{var e=t.gullet.popToken();return e.text==="="&&(e=t.gullet.popToken(),e.text===" "&&(e=t.gullet.popToken())),e},bU=(t,e,n,r)=>{var s=t.gullet.macros.get(n.text);s==null&&(n.noexpand=!0,s={tokens:[n],numArgs:0,unexpandable:!t.gullet.isExpandable(n.text)}),t.gullet.macros.set(e,s,r)};tt({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(t){var{parser:e,funcName:n}=t;e.consumeSpaces();var r=e.fetch();if(WO[r.text])return(n==="\\global"||n==="\\\\globallong")&&(r.text=WO[r.text]),nn(e.parseFunction(),"internal");throw new qe("Invalid token after macro prefix",r)}});tt({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,r=e.gullet.popToken(),s=r.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(s))throw new qe("Expected a control sequence",r);for(var i=0,a,l=[[]];e.gullet.future().text!=="{";)if(r=e.gullet.popToken(),r.text==="#"){if(e.gullet.future().text==="{"){a=e.gullet.future(),l[i].push("{");break}if(r=e.gullet.popToken(),!/^[1-9]$/.test(r.text))throw new qe('Invalid argument number "'+r.text+'"');if(parseInt(r.text)!==i+1)throw new qe('Argument number "'+r.text+'" out of order');i++,l.push([])}else{if(r.text==="EOF")throw new qe("Expected a macro definition");l[i].push(r.text)}var{tokens:c}=e.gullet.consumeArg();return a&&c.unshift(a),(n==="\\edef"||n==="\\xdef")&&(c=e.gullet.expandTokens(c),c.reverse()),e.gullet.macros.set(s,{tokens:c,numArgs:i,delimiters:l},n===WO[n]),{type:"internal",mode:e.mode}}});tt({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,r=yU(e.gullet.popToken());e.gullet.consumeSpaces();var s=G3e(e);return bU(e,r,s,n==="\\\\globallet"),{type:"internal",mode:e.mode}}});tt({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t){var{parser:e,funcName:n}=t,r=yU(e.gullet.popToken()),s=e.gullet.popToken(),i=e.gullet.popToken();return bU(e,r,i,n==="\\\\globalfuture"),e.gullet.pushToken(i),e.gullet.pushToken(s),{type:"internal",mode:e.mode}}});var f0=function(e,n,r){var s=pr.math[e]&&pr.math[e].replace,i=MN(s||e,n,r);if(!i)throw new Error("Unsupported symbol "+e+" and font size "+n+".");return i},BN=function(e,n,r,s){var i=r.havingBaseStyle(n),a=we.makeSpan(s.concat(i.sizingClasses(r)),[e],r),l=i.sizeMultiplier/r.sizeMultiplier;return a.height*=l,a.depth*=l,a.maxFontSize=i.sizeMultiplier,a},wU=function(e,n,r){var s=n.havingBaseStyle(r),i=(1-n.sizeMultiplier/s.sizeMultiplier)*n.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=Xe(i),e.height-=i,e.depth+=i},X3e=function(e,n,r,s,i,a){var l=we.makeSymbol(e,"Main-Regular",i,s),c=BN(l,n,s,a);return r&&wU(c,s,n),c},Y3e=function(e,n,r,s){return we.makeSymbol(e,"Size"+n+"-Regular",r,s)},SU=function(e,n,r,s,i,a){var l=Y3e(e,n,i,s),c=BN(we.makeSpan(["delimsizing","size"+n],[l],s),At.TEXT,s,a);return r&&wU(c,s,At.TEXT),c},t5=function(e,n,r){var s;n==="Size1-Regular"?s="delim-size1":s="delim-size4";var i=we.makeSpan(["delimsizinginner",s],[we.makeSpan([],[we.makeSymbol(e,n,r)])]);return{type:"elem",elem:i}},n5=function(e,n,r){var s=Mo["Size4-Regular"][e.charCodeAt(0)]?Mo["Size4-Regular"][e.charCodeAt(0)][4]:Mo["Size1-Regular"][e.charCodeAt(0)][4],i=new su("inner",t3e(e,Math.round(1e3*n))),a=new Ul([i],{width:Xe(s),height:Xe(n),style:"width:"+Xe(s),viewBox:"0 0 "+1e3*s+" "+Math.round(1e3*n),preserveAspectRatio:"xMinYMin"}),l=we.makeSvgSpan([],[a],r);return l.height=n,l.style.height=Xe(n),l.style.width=Xe(s),{type:"elem",elem:l}},GO=.008,H1={type:"kern",size:-1*GO},K3e=["|","\\lvert","\\rvert","\\vert"],Z3e=["\\|","\\lVert","\\rVert","\\Vert"],kU=function(e,n,r,s,i,a){var l,c,d,h,m="",g=0;l=d=h=e,c=null;var x="Size1-Regular";e==="\\uparrow"?d=h="⏐":e==="\\Uparrow"?d=h="‖":e==="\\downarrow"?l=d="⏐":e==="\\Downarrow"?l=d="‖":e==="\\updownarrow"?(l="\\uparrow",d="⏐",h="\\downarrow"):e==="\\Updownarrow"?(l="\\Uparrow",d="‖",h="\\Downarrow"):K3e.includes(e)?(d="∣",m="vert",g=333):Z3e.includes(e)?(d="∥",m="doublevert",g=556):e==="["||e==="\\lbrack"?(l="⎡",d="⎢",h="⎣",x="Size4-Regular",m="lbrack",g=667):e==="]"||e==="\\rbrack"?(l="⎤",d="⎥",h="⎦",x="Size4-Regular",m="rbrack",g=667):e==="\\lfloor"||e==="⌊"?(d=l="⎢",h="⎣",x="Size4-Regular",m="lfloor",g=667):e==="\\lceil"||e==="⌈"?(l="⎡",d=h="⎢",x="Size4-Regular",m="lceil",g=667):e==="\\rfloor"||e==="⌋"?(d=l="⎥",h="⎦",x="Size4-Regular",m="rfloor",g=667):e==="\\rceil"||e==="⌉"?(l="⎤",d=h="⎥",x="Size4-Regular",m="rceil",g=667):e==="("||e==="\\lparen"?(l="⎛",d="⎜",h="⎝",x="Size4-Regular",m="lparen",g=875):e===")"||e==="\\rparen"?(l="⎞",d="⎟",h="⎠",x="Size4-Regular",m="rparen",g=875):e==="\\{"||e==="\\lbrace"?(l="⎧",c="⎨",h="⎩",d="⎪",x="Size4-Regular"):e==="\\}"||e==="\\rbrace"?(l="⎫",c="⎬",h="⎭",d="⎪",x="Size4-Regular"):e==="\\lgroup"||e==="⟮"?(l="⎧",h="⎩",d="⎪",x="Size4-Regular"):e==="\\rgroup"||e==="⟯"?(l="⎫",h="⎭",d="⎪",x="Size4-Regular"):e==="\\lmoustache"||e==="⎰"?(l="⎧",h="⎭",d="⎪",x="Size4-Regular"):(e==="\\rmoustache"||e==="⎱")&&(l="⎫",h="⎩",d="⎪",x="Size4-Regular");var y=f0(l,x,i),w=y.height+y.depth,S=f0(d,x,i),k=S.height+S.depth,j=f0(h,x,i),N=j.height+j.depth,T=0,E=1;if(c!==null){var _=f0(c,x,i);T=_.height+_.depth,E=2}var A=w+N+T,D=Math.max(0,Math.ceil((n-A)/(E*k))),q=A+D*E*k,B=s.fontMetrics().axisHeight;r&&(B*=s.sizeMultiplier);var H=q/2-B,W=[];if(m.length>0){var ee=q-w-N,I=Math.round(q*1e3),V=n3e(m,Math.round(ee*1e3)),L=new su(m,V),$=(g/1e3).toFixed(3)+"em",K=(I/1e3).toFixed(3)+"em",Y=new Ul([L],{width:$,height:K,viewBox:"0 0 "+g+" "+I}),R=we.makeSvgSpan([],[Y],s);R.height=I/1e3,R.style.width=$,R.style.height=K,W.push({type:"elem",elem:R})}else{if(W.push(t5(h,x,i)),W.push(H1),c===null){var ie=q-w-N+2*GO;W.push(n5(d,ie,s))}else{var X=(q-w-N-T)/2+2*GO;W.push(n5(d,X,s)),W.push(H1),W.push(t5(c,x,i)),W.push(H1),W.push(n5(d,X,s))}W.push(H1),W.push(t5(l,x,i))}var z=s.havingBaseStyle(At.TEXT),U=we.makeVList({positionType:"bottom",positionData:H,children:W},z);return BN(we.makeSpan(["delimsizing","mult"],[U],z),At.TEXT,s,a)},r5=80,s5=.08,i5=function(e,n,r,s,i){var a=e3e(e,s,r),l=new su(e,a),c=new Ul([l],{width:"400em",height:Xe(n),viewBox:"0 0 400000 "+r,preserveAspectRatio:"xMinYMin slice"});return we.makeSvgSpan(["hide-tail"],[c],i)},J3e=function(e,n){var r=n.havingBaseSizing(),s=CU("\\surd",e*r.sizeMultiplier,NU,r),i=r.sizeMultiplier,a=Math.max(0,n.minRuleThickness-n.fontMetrics().sqrtRuleThickness),l,c=0,d=0,h=0,m;return s.type==="small"?(h=1e3+1e3*a+r5,e<1?i=1:e<1.4&&(i=.7),c=(1+a+s5)/i,d=(1+a)/i,l=i5("sqrtMain",c,h,a,n),l.style.minWidth="0.853em",m=.833/i):s.type==="large"?(h=(1e3+r5)*z0[s.size],d=(z0[s.size]+a)/i,c=(z0[s.size]+a+s5)/i,l=i5("sqrtSize"+s.size,c,h,a,n),l.style.minWidth="1.02em",m=1/i):(c=e+a+s5,d=e+a,h=Math.floor(1e3*e+a)+r5,l=i5("sqrtTall",c,h,a,n),l.style.minWidth="0.742em",m=1.056),l.height=d,l.style.height=Xe(c),{span:l,advanceWidth:m,ruleWidth:(n.fontMetrics().sqrtRuleThickness+a)*i}},OU=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"],eke=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"],jU=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],z0=[0,1.2,1.8,2.4,3],tke=function(e,n,r,s,i){if(e==="<"||e==="\\lt"||e==="⟨"?e="\\langle":(e===">"||e==="\\gt"||e==="⟩")&&(e="\\rangle"),OU.includes(e)||jU.includes(e))return SU(e,n,!1,r,s,i);if(eke.includes(e))return kU(e,z0[n],!1,r,s,i);throw new qe("Illegal delimiter: '"+e+"'")},nke=[{type:"small",style:At.SCRIPTSCRIPT},{type:"small",style:At.SCRIPT},{type:"small",style:At.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],rke=[{type:"small",style:At.SCRIPTSCRIPT},{type:"small",style:At.SCRIPT},{type:"small",style:At.TEXT},{type:"stack"}],NU=[{type:"small",style:At.SCRIPTSCRIPT},{type:"small",style:At.SCRIPT},{type:"small",style:At.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],ske=function(e){if(e.type==="small")return"Main-Regular";if(e.type==="large")return"Size"+e.size+"-Regular";if(e.type==="stack")return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},CU=function(e,n,r,s){for(var i=Math.min(2,3-s.style.size),a=i;an)return r[a]}return r[r.length-1]},TU=function(e,n,r,s,i,a){e==="<"||e==="\\lt"||e==="⟨"?e="\\langle":(e===">"||e==="\\gt"||e==="⟩")&&(e="\\rangle");var l;jU.includes(e)?l=nke:OU.includes(e)?l=NU:l=rke;var c=CU(e,n,l,s);return c.type==="small"?X3e(e,c.style,r,s,i,a):c.type==="large"?SU(e,c.size,r,s,i,a):kU(e,n,r,s,i,a)},ike=function(e,n,r,s,i,a){var l=s.fontMetrics().axisHeight*s.sizeMultiplier,c=901,d=5/s.fontMetrics().ptPerEm,h=Math.max(n-l,r+l),m=Math.max(h/500*c,2*h-d);return TU(e,m,!0,s,i,a)},ql={sqrtImage:J3e,sizedDelim:tke,sizeToMaxHeight:z0,customSizedDelim:TU,leftRightDelim:ike},_R={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},ake=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function Xb(t,e){var n=Wb(t);if(n&&ake.includes(n.text))return n;throw n?new qe("Invalid delimiter '"+n.text+"' after '"+e.funcName+"'",t):new qe("Invalid delimiter type '"+t.type+"'",t)}tt({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(t,e)=>{var n=Xb(e[0],t);return{type:"delimsizing",mode:t.parser.mode,size:_R[t.funcName].size,mclass:_R[t.funcName].mclass,delim:n.text}},htmlBuilder:(t,e)=>t.delim==="."?we.makeSpan([t.mclass]):ql.sizedDelim(t.delim,t.size,e,t.mode,[t.mclass]),mathmlBuilder:t=>{var e=[];t.delim!=="."&&e.push(Ra(t.delim,t.mode));var n=new Fe.MathNode("mo",e);t.mclass==="mopen"||t.mclass==="mclose"?n.setAttribute("fence","true"):n.setAttribute("fence","false"),n.setAttribute("stretchy","true");var r=Xe(ql.sizeToMaxHeight[t.size]);return n.setAttribute("minsize",r),n.setAttribute("maxsize",r),n}});function AR(t){if(!t.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}tt({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=t.parser.gullet.macros.get("\\current@color");if(n&&typeof n!="string")throw new qe("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:t.parser.mode,delim:Xb(e[0],t).text,color:n}}});tt({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=Xb(e[0],t),r=t.parser;++r.leftrightDepth;var s=r.parseExpression(!1);--r.leftrightDepth,r.expect("\\right",!1);var i=nn(r.parseFunction(),"leftright-right");return{type:"leftright",mode:r.mode,body:s,left:n.text,right:i.delim,rightColor:i.color}},htmlBuilder:(t,e)=>{AR(t);for(var n=ms(t.body,e,!0,["mopen","mclose"]),r=0,s=0,i=!1,a=0;a{AR(t);var n=Mi(t.body,e);if(t.left!=="."){var r=new Fe.MathNode("mo",[Ra(t.left,t.mode)]);r.setAttribute("fence","true"),n.unshift(r)}if(t.right!=="."){var s=new Fe.MathNode("mo",[Ra(t.right,t.mode)]);s.setAttribute("fence","true"),t.rightColor&&s.setAttribute("mathcolor",t.rightColor),n.push(s)}return PN(n)}});tt({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var n=Xb(e[0],t);if(!t.parser.leftrightDepth)throw new qe("\\middle without preceding \\left",n);return{type:"middle",mode:t.parser.mode,delim:n.text}},htmlBuilder:(t,e)=>{var n;if(t.delim===".")n=Sp(e,[]);else{n=ql.sizedDelim(t.delim,1,e,t.mode,[]);var r={delim:t.delim,options:e};n.isMiddle=r}return n},mathmlBuilder:(t,e)=>{var n=t.delim==="\\vert"||t.delim==="|"?Ra("|","text"):Ra(t.delim,t.mode),r=new Fe.MathNode("mo",[n]);return r.setAttribute("fence","true"),r.setAttribute("lspace","0.05em"),r.setAttribute("rspace","0.05em"),r}});var FN=(t,e)=>{var n=we.wrapFragment(qn(t.body,e),e),r=t.label.slice(1),s=e.sizeMultiplier,i,a=0,l=Wn.isCharacterBox(t.body);if(r==="sout")i=we.makeSpan(["stretchy","sout"]),i.height=e.fontMetrics().defaultRuleThickness/s,a=-.5*e.fontMetrics().xHeight;else if(r==="phase"){var c=Ir({number:.6,unit:"pt"},e),d=Ir({number:.35,unit:"ex"},e),h=e.havingBaseSizing();s=s/h.sizeMultiplier;var m=n.height+n.depth+c+d;n.style.paddingLeft=Xe(m/2+c);var g=Math.floor(1e3*m*s),x=Z5e(g),y=new Ul([new su("phase",x)],{width:"400em",height:Xe(g/1e3),viewBox:"0 0 400000 "+g,preserveAspectRatio:"xMinYMin slice"});i=we.makeSvgSpan(["hide-tail"],[y],e),i.style.height=Xe(m),a=n.depth+c+d}else{/cancel/.test(r)?l||n.classes.push("cancel-pad"):r==="angl"?n.classes.push("anglpad"):n.classes.push("boxpad");var w=0,S=0,k=0;/box/.test(r)?(k=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness),w=e.fontMetrics().fboxsep+(r==="colorbox"?0:k),S=w):r==="angl"?(k=Math.max(e.fontMetrics().defaultRuleThickness,e.minRuleThickness),w=4*k,S=Math.max(0,.25-n.depth)):(w=l?.2:0,S=w),i=Gl.encloseSpan(n,r,w,S,e),/fbox|boxed|fcolorbox/.test(r)?(i.style.borderStyle="solid",i.style.borderWidth=Xe(k)):r==="angl"&&k!==.049&&(i.style.borderTopWidth=Xe(k),i.style.borderRightWidth=Xe(k)),a=n.depth+S,t.backgroundColor&&(i.style.backgroundColor=t.backgroundColor,t.borderColor&&(i.style.borderColor=t.borderColor))}var j;if(t.backgroundColor)j=we.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:a},{type:"elem",elem:n,shift:0}]},e);else{var N=/cancel|phase/.test(r)?["svg-align"]:[];j=we.makeVList({positionType:"individualShift",children:[{type:"elem",elem:n,shift:0},{type:"elem",elem:i,shift:a,wrapperClasses:N}]},e)}return/cancel/.test(r)&&(j.height=n.height,j.depth=n.depth),/cancel/.test(r)&&!l?we.makeSpan(["mord","cancel-lap"],[j],e):we.makeSpan(["mord"],[j],e)},qN=(t,e)=>{var n=0,r=new Fe.MathNode(t.label.indexOf("colorbox")>-1?"mpadded":"menclose",[hr(t.body,e)]);switch(t.label){case"\\cancel":r.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":r.setAttribute("notation","downdiagonalstrike");break;case"\\phase":r.setAttribute("notation","phasorangle");break;case"\\sout":r.setAttribute("notation","horizontalstrike");break;case"\\fbox":r.setAttribute("notation","box");break;case"\\angl":r.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(n=e.fontMetrics().fboxsep*e.fontMetrics().ptPerEm,r.setAttribute("width","+"+2*n+"pt"),r.setAttribute("height","+"+2*n+"pt"),r.setAttribute("lspace",n+"pt"),r.setAttribute("voffset",n+"pt"),t.label==="\\fcolorbox"){var s=Math.max(e.fontMetrics().fboxrule,e.minRuleThickness);r.setAttribute("style","border: "+s+"em solid "+String(t.borderColor))}break;case"\\xcancel":r.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return t.backgroundColor&&r.setAttribute("mathbackground",t.backgroundColor),r};tt({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(t,e,n){var{parser:r,funcName:s}=t,i=nn(e[0],"color-token").color,a=e[1];return{type:"enclose",mode:r.mode,label:s,backgroundColor:i,body:a}},htmlBuilder:FN,mathmlBuilder:qN});tt({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(t,e,n){var{parser:r,funcName:s}=t,i=nn(e[0],"color-token").color,a=nn(e[1],"color-token").color,l=e[2];return{type:"enclose",mode:r.mode,label:s,backgroundColor:a,borderColor:i,body:l}},htmlBuilder:FN,mathmlBuilder:qN});tt({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"enclose",mode:n.mode,label:"\\fbox",body:e[0]}}});tt({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];return{type:"enclose",mode:n.mode,label:r,body:s}},htmlBuilder:FN,mathmlBuilder:qN});tt({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(t,e){var{parser:n}=t;return{type:"enclose",mode:n.mode,label:"\\angl",body:e[0]}}});var EU={};function Go(t){for(var{type:e,names:n,props:r,handler:s,htmlBuilder:i,mathmlBuilder:a}=t,l={type:e,numArgs:r.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:s},c=0;c{var e=t.parser.settings;if(!e.displayMode)throw new qe("{"+t.envName+"} can be used only in display mode.")};function $N(t){if(t.indexOf("ed")===-1)return t.indexOf("*")===-1}function mu(t,e,n){var{hskipBeforeAndAfter:r,addJot:s,cols:i,arraystretch:a,colSeparationType:l,autoTag:c,singleRow:d,emptySingleRow:h,maxNumCols:m,leqno:g}=e;if(t.gullet.beginGroup(),d||t.gullet.macros.set("\\cr","\\\\\\relax"),!a){var x=t.gullet.expandMacroAsText("\\arraystretch");if(x==null)a=1;else if(a=parseFloat(x),!a||a<0)throw new qe("Invalid \\arraystretch: "+x)}t.gullet.beginGroup();var y=[],w=[y],S=[],k=[],j=c!=null?[]:void 0;function N(){c&&t.gullet.macros.set("\\@eqnsw","1",!0)}function T(){j&&(t.gullet.macros.get("\\df@tag")?(j.push(t.subparse([new Zi("\\df@tag")])),t.gullet.macros.set("\\df@tag",void 0,!0)):j.push(!!c&&t.gullet.macros.get("\\@eqnsw")==="1"))}for(N(),k.push(MR(t));;){var E=t.parseExpression(!1,d?"\\end":"\\\\");t.gullet.endGroup(),t.gullet.beginGroup(),E={type:"ordgroup",mode:t.mode,body:E},n&&(E={type:"styling",mode:t.mode,style:n,body:[E]}),y.push(E);var _=t.fetch().text;if(_==="&"){if(m&&y.length===m){if(d||l)throw new qe("Too many tab characters: &",t.nextToken);t.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}t.consume()}else if(_==="\\end"){T(),y.length===1&&E.type==="styling"&&E.body[0].body.length===0&&(w.length>1||!h)&&w.pop(),k.length0&&(N+=.25),d.push({pos:N,isDashed:$e[jt]})}for(T(a[0]),r=0;r0&&(H+=j,A$e))for(r=0;r=l)){var G=void 0;(s>0||e.hskipBeforeAndAfter)&&(G=Wn.deflt(X.pregap,g),G!==0&&(V=we.makeSpan(["arraycolsep"],[]),V.style.width=Xe(G),I.push(V)));var se=[];for(r=0;r0){for(var Be=we.makeLineSpan("hline",n,h),Ye=we.makeLineSpan("hdashline",n,h),Je=[{type:"elem",elem:c,shift:0}];d.length>0;){var Oe=d.pop(),Ve=Oe.pos-W;Oe.isDashed?Je.push({type:"elem",elem:Ye,shift:Ve}):Je.push({type:"elem",elem:Be,shift:Ve})}c=we.makeVList({positionType:"individualShift",children:Je},n)}if($.length===0)return we.makeSpan(["mord"],[c],n);var Ue=we.makeVList({positionType:"individualShift",children:$},n);return Ue=we.makeSpan(["tag"],[Ue],n),we.makeFragment([c,Ue])},oke={c:"center ",l:"left ",r:"right "},Yo=function(e,n){for(var r=[],s=new Fe.MathNode("mtd",[],["mtr-glue"]),i=new Fe.MathNode("mtd",[],["mml-eqn-num"]),a=0;a0){var y=e.cols,w="",S=!1,k=0,j=y.length;y[0].type==="separator"&&(g+="top ",k=1),y[y.length-1].type==="separator"&&(g+="bottom ",j-=1);for(var N=k;N0?"left ":"",g+=D[D.length-1].length>0?"right ":"";for(var q=1;q-1?"alignat":"align",i=e.envName==="split",a=mu(e.parser,{cols:r,addJot:!0,autoTag:i?void 0:$N(e.envName),emptySingleRow:!0,colSeparationType:s,maxNumCols:i?2:void 0,leqno:e.parser.settings.leqno},"display"),l,c=0,d={type:"ordgroup",mode:e.mode,body:[]};if(n[0]&&n[0].type==="ordgroup"){for(var h="",m=0;m0&&x&&(S=1),r[y]={type:"align",align:w,pregap:S,postgap:0}}return a.colSeparationType=x?"align":"alignat",a};Go({type:"array",names:["array","darray"],props:{numArgs:1},handler(t,e){var n=Wb(e[0]),r=n?[e[0]]:nn(e[0],"ordgroup").body,s=r.map(function(a){var l=IN(a),c=l.text;if("lcr".indexOf(c)!==-1)return{type:"align",align:c};if(c==="|")return{type:"separator",separator:"|"};if(c===":")return{type:"separator",separator:":"};throw new qe("Unknown column alignment: "+c,a)}),i={cols:s,hskipBeforeAndAfter:!0,maxNumCols:s.length};return mu(t.parser,i,HN(t.envName))},htmlBuilder:Xo,mathmlBuilder:Yo});Go({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(t){var e={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[t.envName.replace("*","")],n="c",r={hskipBeforeAndAfter:!1,cols:[{type:"align",align:n}]};if(t.envName.charAt(t.envName.length-1)==="*"){var s=t.parser;if(s.consumeSpaces(),s.fetch().text==="["){if(s.consume(),s.consumeSpaces(),n=s.fetch().text,"lcr".indexOf(n)===-1)throw new qe("Expected l or c or r",s.nextToken);s.consume(),s.consumeSpaces(),s.expect("]"),s.consume(),r.cols=[{type:"align",align:n}]}}var i=mu(t.parser,r,HN(t.envName)),a=Math.max(0,...i.body.map(l=>l.length));return i.cols=new Array(a).fill({type:"align",align:n}),e?{type:"leftright",mode:t.mode,body:[i],left:e[0],right:e[1],rightColor:void 0}:i},htmlBuilder:Xo,mathmlBuilder:Yo});Go({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(t){var e={arraystretch:.5},n=mu(t.parser,e,"script");return n.colSeparationType="small",n},htmlBuilder:Xo,mathmlBuilder:Yo});Go({type:"array",names:["subarray"],props:{numArgs:1},handler(t,e){var n=Wb(e[0]),r=n?[e[0]]:nn(e[0],"ordgroup").body,s=r.map(function(a){var l=IN(a),c=l.text;if("lc".indexOf(c)!==-1)return{type:"align",align:c};throw new qe("Unknown column alignment: "+c,a)});if(s.length>1)throw new qe("{subarray} can contain only one column");var i={cols:s,hskipBeforeAndAfter:!1,arraystretch:.5};if(i=mu(t.parser,i,"script"),i.body.length>0&&i.body[0].length>1)throw new qe("{subarray} can contain only one column");return i},htmlBuilder:Xo,mathmlBuilder:Yo});Go({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(t){var e={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},n=mu(t.parser,e,HN(t.envName));return{type:"leftright",mode:t.mode,body:[n],left:t.envName.indexOf("r")>-1?".":"\\{",right:t.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:Xo,mathmlBuilder:Yo});Go({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:AU,htmlBuilder:Xo,mathmlBuilder:Yo});Go({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(t){["gather","gather*"].includes(t.envName)&&Yb(t);var e={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:$N(t.envName),emptySingleRow:!0,leqno:t.parser.settings.leqno};return mu(t.parser,e,"display")},htmlBuilder:Xo,mathmlBuilder:Yo});Go({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:AU,htmlBuilder:Xo,mathmlBuilder:Yo});Go({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(t){Yb(t);var e={autoTag:$N(t.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:t.parser.settings.leqno};return mu(t.parser,e,"display")},htmlBuilder:Xo,mathmlBuilder:Yo});Go({type:"array",names:["CD"],props:{numArgs:0},handler(t){return Yb(t),W3e(t.parser)},htmlBuilder:Xo,mathmlBuilder:Yo});J("\\nonumber","\\gdef\\@eqnsw{0}");J("\\notag","\\nonumber");tt({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(t,e){throw new qe(t.funcName+" valid only within array environment")}});var RR=EU;tt({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];if(s.type!=="ordgroup")throw new qe("Invalid environment name",s);for(var i="",a=0;a{var n=t.font,r=e.withFont(n);return qn(t.body,r)},RU=(t,e)=>{var n=t.font,r=e.withFont(n);return hr(t.body,r)},DR={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};tt({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=Ay(e[0]),i=r;return i in DR&&(i=DR[i]),{type:"font",mode:n.mode,font:i.slice(1),body:s}},htmlBuilder:MU,mathmlBuilder:RU});tt({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(t,e)=>{var{parser:n}=t,r=e[0],s=Wn.isCharacterBox(r);return{type:"mclass",mode:n.mode,mclass:Gb(r),body:[{type:"font",mode:n.mode,font:"boldsymbol",body:r}],isCharacterBox:s}}});tt({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(t,e)=>{var{parser:n,funcName:r,breakOnTokenText:s}=t,{mode:i}=n,a=n.parseExpression(!0,s),l="math"+r.slice(1);return{type:"font",mode:i,font:l,body:{type:"ordgroup",mode:n.mode,body:a}}},htmlBuilder:MU,mathmlBuilder:RU});var DU=(t,e)=>{var n=e;return t==="display"?n=n.id>=At.SCRIPT.id?n.text():At.DISPLAY:t==="text"&&n.size===At.DISPLAY.size?n=At.TEXT:t==="script"?n=At.SCRIPT:t==="scriptscript"&&(n=At.SCRIPTSCRIPT),n},QN=(t,e)=>{var n=DU(t.size,e.style),r=n.fracNum(),s=n.fracDen(),i;i=e.havingStyle(r);var a=qn(t.numer,i,e);if(t.continued){var l=8.5/e.fontMetrics().ptPerEm,c=3.5/e.fontMetrics().ptPerEm;a.height=a.height0?y=3*g:y=7*g,w=e.fontMetrics().denom1):(m>0?(x=e.fontMetrics().num2,y=g):(x=e.fontMetrics().num3,y=3*g),w=e.fontMetrics().denom2);var S;if(h){var j=e.fontMetrics().axisHeight;x-a.depth-(j+.5*m){var n=new Fe.MathNode("mfrac",[hr(t.numer,e),hr(t.denom,e)]);if(!t.hasBarLine)n.setAttribute("linethickness","0px");else if(t.barSize){var r=Ir(t.barSize,e);n.setAttribute("linethickness",Xe(r))}var s=DU(t.size,e.style);if(s.size!==e.style.size){n=new Fe.MathNode("mstyle",[n]);var i=s.size===At.DISPLAY.size?"true":"false";n.setAttribute("displaystyle",i),n.setAttribute("scriptlevel","0")}if(t.leftDelim!=null||t.rightDelim!=null){var a=[];if(t.leftDelim!=null){var l=new Fe.MathNode("mo",[new Fe.TextNode(t.leftDelim.replace("\\",""))]);l.setAttribute("fence","true"),a.push(l)}if(a.push(n),t.rightDelim!=null){var c=new Fe.MathNode("mo",[new Fe.TextNode(t.rightDelim.replace("\\",""))]);c.setAttribute("fence","true"),a.push(c)}return PN(a)}return n};tt({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0],i=e[1],a,l=null,c=null,d="auto";switch(r){case"\\dfrac":case"\\frac":case"\\tfrac":a=!0;break;case"\\\\atopfrac":a=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":a=!1,l="(",c=")";break;case"\\\\bracefrac":a=!1,l="\\{",c="\\}";break;case"\\\\brackfrac":a=!1,l="[",c="]";break;default:throw new Error("Unrecognized genfrac command")}switch(r){case"\\dfrac":case"\\dbinom":d="display";break;case"\\tfrac":case"\\tbinom":d="text";break}return{type:"genfrac",mode:n.mode,continued:!1,numer:s,denom:i,hasBarLine:a,leftDelim:l,rightDelim:c,size:d,barSize:null}},htmlBuilder:QN,mathmlBuilder:VN});tt({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0],i=e[1];return{type:"genfrac",mode:n.mode,continued:!0,numer:s,denom:i,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}}});tt({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(t){var{parser:e,funcName:n,token:r}=t,s;switch(n){case"\\over":s="\\frac";break;case"\\choose":s="\\binom";break;case"\\atop":s="\\\\atopfrac";break;case"\\brace":s="\\\\bracefrac";break;case"\\brack":s="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:s,token:r}}});var PR=["display","text","script","scriptscript"],zR=function(e){var n=null;return e.length>0&&(n=e,n=n==="."?null:n),n};tt({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(t,e){var{parser:n}=t,r=e[4],s=e[5],i=Ay(e[0]),a=i.type==="atom"&&i.family==="open"?zR(i.text):null,l=Ay(e[1]),c=l.type==="atom"&&l.family==="close"?zR(l.text):null,d=nn(e[2],"size"),h,m=null;d.isBlank?h=!0:(m=d.value,h=m.number>0);var g="auto",x=e[3];if(x.type==="ordgroup"){if(x.body.length>0){var y=nn(x.body[0],"textord");g=PR[Number(y.text)]}}else x=nn(x,"textord"),g=PR[Number(x.text)];return{type:"genfrac",mode:n.mode,numer:r,denom:s,continued:!1,hasBarLine:h,barSize:m,leftDelim:a,rightDelim:c,size:g}},htmlBuilder:QN,mathmlBuilder:VN});tt({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(t,e){var{parser:n,funcName:r,token:s}=t;return{type:"infix",mode:n.mode,replaceWith:"\\\\abovefrac",size:nn(e[0],"size").value,token:s}}});tt({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0],i=I5e(nn(e[1],"infix").size),a=e[2],l=i.number>0;return{type:"genfrac",mode:n.mode,numer:s,denom:a,continued:!1,hasBarLine:l,barSize:i,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:QN,mathmlBuilder:VN});var PU=(t,e)=>{var n=e.style,r,s;t.type==="supsub"?(r=t.sup?qn(t.sup,e.havingStyle(n.sup()),e):qn(t.sub,e.havingStyle(n.sub()),e),s=nn(t.base,"horizBrace")):s=nn(t,"horizBrace");var i=qn(s.base,e.havingBaseStyle(At.DISPLAY)),a=Gl.svgSpan(s,e),l;if(s.isOver?(l=we.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:.1},{type:"elem",elem:a}]},e),l.children[0].children[0].children[1].classes.push("svg-align")):(l=we.makeVList({positionType:"bottom",positionData:i.depth+.1+a.height,children:[{type:"elem",elem:a},{type:"kern",size:.1},{type:"elem",elem:i}]},e),l.children[0].children[0].children[0].classes.push("svg-align")),r){var c=we.makeSpan(["mord",s.isOver?"mover":"munder"],[l],e);s.isOver?l=we.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:c},{type:"kern",size:.2},{type:"elem",elem:r}]},e):l=we.makeVList({positionType:"bottom",positionData:c.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:c}]},e)}return we.makeSpan(["mord",s.isOver?"mover":"munder"],[l],e)},lke=(t,e)=>{var n=Gl.mathMLnode(t.label);return new Fe.MathNode(t.isOver?"mover":"munder",[hr(t.base,e),n])};tt({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(t,e){var{parser:n,funcName:r}=t;return{type:"horizBrace",mode:n.mode,label:r,isOver:/^\\over/.test(r),base:e[0]}},htmlBuilder:PU,mathmlBuilder:lke});tt({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[1],s=nn(e[0],"url").url;return n.settings.isTrusted({command:"\\href",url:s})?{type:"href",mode:n.mode,href:s,body:Gr(r)}:n.formatUnsupportedCmd("\\href")},htmlBuilder:(t,e)=>{var n=ms(t.body,e,!1);return we.makeAnchor(t.href,[],n,e)},mathmlBuilder:(t,e)=>{var n=iu(t.body,e);return n instanceof Ui||(n=new Ui("mrow",[n])),n.setAttribute("href",t.href),n}});tt({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=nn(e[0],"url").url;if(!n.settings.isTrusted({command:"\\url",url:r}))return n.formatUnsupportedCmd("\\url");for(var s=[],i=0;i{var{parser:n,funcName:r,token:s}=t,i=nn(e[0],"raw").string,a=e[1];n.settings.strict&&n.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var l,c={};switch(r){case"\\htmlClass":c.class=i,l={command:"\\htmlClass",class:i};break;case"\\htmlId":c.id=i,l={command:"\\htmlId",id:i};break;case"\\htmlStyle":c.style=i,l={command:"\\htmlStyle",style:i};break;case"\\htmlData":{for(var d=i.split(","),h=0;h{var n=ms(t.body,e,!1),r=["enclosing"];t.attributes.class&&r.push(...t.attributes.class.trim().split(/\s+/));var s=we.makeSpan(r,n,e);for(var i in t.attributes)i!=="class"&&t.attributes.hasOwnProperty(i)&&s.setAttribute(i,t.attributes[i]);return s},mathmlBuilder:(t,e)=>iu(t.body,e)});tt({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t;return{type:"htmlmathml",mode:n.mode,html:Gr(e[0]),mathml:Gr(e[1])}},htmlBuilder:(t,e)=>{var n=ms(t.html,e,!1);return we.makeFragment(n)},mathmlBuilder:(t,e)=>iu(t.mathml,e)});var a5=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var n=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!n)throw new qe("Invalid size: '"+e+"' in \\includegraphics");var r={number:+(n[1]+n[2]),unit:n[3]};if(!eU(r))throw new qe("Invalid unit: '"+r.unit+"' in \\includegraphics.");return r};tt({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(t,e,n)=>{var{parser:r}=t,s={number:0,unit:"em"},i={number:.9,unit:"em"},a={number:0,unit:"em"},l="";if(n[0])for(var c=nn(n[0],"raw").string,d=c.split(","),h=0;h{var n=Ir(t.height,e),r=0;t.totalheight.number>0&&(r=Ir(t.totalheight,e)-n);var s=0;t.width.number>0&&(s=Ir(t.width,e));var i={height:Xe(n+r)};s>0&&(i.width=Xe(s)),r>0&&(i.verticalAlign=Xe(-r));var a=new l3e(t.src,t.alt,i);return a.height=n,a.depth=r,a},mathmlBuilder:(t,e)=>{var n=new Fe.MathNode("mglyph",[]);n.setAttribute("alt",t.alt);var r=Ir(t.height,e),s=0;if(t.totalheight.number>0&&(s=Ir(t.totalheight,e)-r,n.setAttribute("valign",Xe(-s))),n.setAttribute("height",Xe(r+s)),t.width.number>0){var i=Ir(t.width,e);n.setAttribute("width",Xe(i))}return n.setAttribute("src",t.src),n}});tt({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(t,e){var{parser:n,funcName:r}=t,s=nn(e[0],"size");if(n.settings.strict){var i=r[1]==="m",a=s.value.unit==="mu";i?(a||n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" supports only mu units, "+("not "+s.value.unit+" units")),n.mode!=="math"&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" works only in math mode")):a&&n.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+r+" doesn't support mu units")}return{type:"kern",mode:n.mode,dimension:s.value}},htmlBuilder(t,e){return we.makeGlue(t.dimension,e)},mathmlBuilder(t,e){var n=Ir(t.dimension,e);return new Fe.SpaceNode(n)}});tt({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0];return{type:"lap",mode:n.mode,alignment:r.slice(5),body:s}},htmlBuilder:(t,e)=>{var n;t.alignment==="clap"?(n=we.makeSpan([],[qn(t.body,e)]),n=we.makeSpan(["inner"],[n],e)):n=we.makeSpan(["inner"],[qn(t.body,e)]);var r=we.makeSpan(["fix"],[]),s=we.makeSpan([t.alignment],[n,r],e),i=we.makeSpan(["strut"]);return i.style.height=Xe(s.height+s.depth),s.depth&&(i.style.verticalAlign=Xe(-s.depth)),s.children.unshift(i),s=we.makeSpan(["thinbox"],[s],e),we.makeSpan(["mord","vbox"],[s],e)},mathmlBuilder:(t,e)=>{var n=new Fe.MathNode("mpadded",[hr(t.body,e)]);if(t.alignment!=="rlap"){var r=t.alignment==="llap"?"-1":"-0.5";n.setAttribute("lspace",r+"width")}return n.setAttribute("width","0px"),n}});tt({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){var{funcName:n,parser:r}=t,s=r.mode;r.switchMode("math");var i=n==="\\("?"\\)":"$",a=r.parseExpression(!1,i);return r.expect(i),r.switchMode(s),{type:"styling",mode:r.mode,style:"text",body:a}}});tt({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,e){throw new qe("Mismatched "+t.funcName)}});var IR=(t,e)=>{switch(e.style.size){case At.DISPLAY.size:return t.display;case At.TEXT.size:return t.text;case At.SCRIPT.size:return t.script;case At.SCRIPTSCRIPT.size:return t.scriptscript;default:return t.text}};tt({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(t,e)=>{var{parser:n}=t;return{type:"mathchoice",mode:n.mode,display:Gr(e[0]),text:Gr(e[1]),script:Gr(e[2]),scriptscript:Gr(e[3])}},htmlBuilder:(t,e)=>{var n=IR(t,e),r=ms(n,e,!1);return we.makeFragment(r)},mathmlBuilder:(t,e)=>{var n=IR(t,e);return iu(n,e)}});var zU=(t,e,n,r,s,i,a)=>{t=we.makeSpan([],[t]);var l=n&&Wn.isCharacterBox(n),c,d;if(e){var h=qn(e,r.havingStyle(s.sup()),r);d={elem:h,kern:Math.max(r.fontMetrics().bigOpSpacing1,r.fontMetrics().bigOpSpacing3-h.depth)}}if(n){var m=qn(n,r.havingStyle(s.sub()),r);c={elem:m,kern:Math.max(r.fontMetrics().bigOpSpacing2,r.fontMetrics().bigOpSpacing4-m.height)}}var g;if(d&&c){var x=r.fontMetrics().bigOpSpacing5+c.elem.height+c.elem.depth+c.kern+t.depth+a;g=we.makeVList({positionType:"bottom",positionData:x,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:c.elem,marginLeft:Xe(-i)},{type:"kern",size:c.kern},{type:"elem",elem:t},{type:"kern",size:d.kern},{type:"elem",elem:d.elem,marginLeft:Xe(i)},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else if(c){var y=t.height-a;g=we.makeVList({positionType:"top",positionData:y,children:[{type:"kern",size:r.fontMetrics().bigOpSpacing5},{type:"elem",elem:c.elem,marginLeft:Xe(-i)},{type:"kern",size:c.kern},{type:"elem",elem:t}]},r)}else if(d){var w=t.depth+a;g=we.makeVList({positionType:"bottom",positionData:w,children:[{type:"elem",elem:t},{type:"kern",size:d.kern},{type:"elem",elem:d.elem,marginLeft:Xe(i)},{type:"kern",size:r.fontMetrics().bigOpSpacing5}]},r)}else return t;var S=[g];if(c&&i!==0&&!l){var k=we.makeSpan(["mspace"],[],r);k.style.marginRight=Xe(i),S.unshift(k)}return we.makeSpan(["mop","op-limits"],S,r)},IU=["\\smallint"],Hf=(t,e)=>{var n,r,s=!1,i;t.type==="supsub"?(n=t.sup,r=t.sub,i=nn(t.base,"op"),s=!0):i=nn(t,"op");var a=e.style,l=!1;a.size===At.DISPLAY.size&&i.symbol&&!IU.includes(i.name)&&(l=!0);var c;if(i.symbol){var d=l?"Size2-Regular":"Size1-Regular",h="";if((i.name==="\\oiint"||i.name==="\\oiiint")&&(h=i.name.slice(1),i.name=h==="oiint"?"\\iint":"\\iiint"),c=we.makeSymbol(i.name,d,"math",e,["mop","op-symbol",l?"large-op":"small-op"]),h.length>0){var m=c.italic,g=we.staticSvg(h+"Size"+(l?"2":"1"),e);c=we.makeVList({positionType:"individualShift",children:[{type:"elem",elem:c,shift:0},{type:"elem",elem:g,shift:l?.08:0}]},e),i.name="\\"+h,c.classes.unshift("mop"),c.italic=m}}else if(i.body){var x=ms(i.body,e,!0);x.length===1&&x[0]instanceof Ma?(c=x[0],c.classes[0]="mop"):c=we.makeSpan(["mop"],x,e)}else{for(var y=[],w=1;w{var n;if(t.symbol)n=new Ui("mo",[Ra(t.name,t.mode)]),IU.includes(t.name)&&n.setAttribute("largeop","false");else if(t.body)n=new Ui("mo",Mi(t.body,e));else{n=new Ui("mi",[new Ro(t.name.slice(1))]);var r=new Ui("mo",[Ra("⁡","text")]);t.parentIsSupSub?n=new Ui("mrow",[n,r]):n=dU([n,r])}return n},cke={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"};tt({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=r;return s.length===1&&(s=cke[s]),{type:"op",mode:n.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:s}},htmlBuilder:Hf,mathmlBuilder:wg});tt({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"op",mode:n.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:Gr(r)}},htmlBuilder:Hf,mathmlBuilder:wg});var uke={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"};tt({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(t){var{parser:e,funcName:n}=t;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:Hf,mathmlBuilder:wg});tt({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(t){var{parser:e,funcName:n}=t;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:n}},htmlBuilder:Hf,mathmlBuilder:wg});tt({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],props:{numArgs:0},handler(t){var{parser:e,funcName:n}=t,r=n;return r.length===1&&(r=uke[r]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:r}},htmlBuilder:Hf,mathmlBuilder:wg});var LU=(t,e)=>{var n,r,s=!1,i;t.type==="supsub"?(n=t.sup,r=t.sub,i=nn(t.base,"operatorname"),s=!0):i=nn(t,"operatorname");var a;if(i.body.length>0){for(var l=i.body.map(m=>{var g=m.text;return typeof g=="string"?{type:"textord",mode:m.mode,text:g}:m}),c=ms(l,e.withFont("mathrm"),!0),d=0;d{for(var n=Mi(t.body,e.withFont("mathrm")),r=!0,s=0;sh.toText()).join("");n=[new Fe.TextNode(l)]}var c=new Fe.MathNode("mi",n);c.setAttribute("mathvariant","normal");var d=new Fe.MathNode("mo",[Ra("⁡","text")]);return t.parentIsSupSub?new Fe.MathNode("mrow",[c,d]):Fe.newDocumentFragment([c,d])};tt({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(t,e)=>{var{parser:n,funcName:r}=t,s=e[0];return{type:"operatorname",mode:n.mode,body:Gr(s),alwaysHandleSupSub:r==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},htmlBuilder:LU,mathmlBuilder:dke});J("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");Od({type:"ordgroup",htmlBuilder(t,e){return t.semisimple?we.makeFragment(ms(t.body,e,!1)):we.makeSpan(["mord"],ms(t.body,e,!0),e)},mathmlBuilder(t,e){return iu(t.body,e,!0)}});tt({type:"overline",names:["\\overline"],props:{numArgs:1},handler(t,e){var{parser:n}=t,r=e[0];return{type:"overline",mode:n.mode,body:r}},htmlBuilder(t,e){var n=qn(t.body,e.havingCrampedStyle()),r=we.makeLineSpan("overline-line",e),s=e.fontMetrics().defaultRuleThickness,i=we.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n},{type:"kern",size:3*s},{type:"elem",elem:r},{type:"kern",size:s}]},e);return we.makeSpan(["mord","overline"],[i],e)},mathmlBuilder(t,e){var n=new Fe.MathNode("mo",[new Fe.TextNode("‾")]);n.setAttribute("stretchy","true");var r=new Fe.MathNode("mover",[hr(t.body,e),n]);return r.setAttribute("accent","true"),r}});tt({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"phantom",mode:n.mode,body:Gr(r)}},htmlBuilder:(t,e)=>{var n=ms(t.body,e.withPhantom(),!1);return we.makeFragment(n)},mathmlBuilder:(t,e)=>{var n=Mi(t.body,e);return new Fe.MathNode("mphantom",n)}});tt({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"hphantom",mode:n.mode,body:r}},htmlBuilder:(t,e)=>{var n=we.makeSpan([],[qn(t.body,e.withPhantom())]);if(n.height=0,n.depth=0,n.children)for(var r=0;r{var n=Mi(Gr(t.body),e),r=new Fe.MathNode("mphantom",n),s=new Fe.MathNode("mpadded",[r]);return s.setAttribute("height","0px"),s.setAttribute("depth","0px"),s}});tt({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(t,e)=>{var{parser:n}=t,r=e[0];return{type:"vphantom",mode:n.mode,body:r}},htmlBuilder:(t,e)=>{var n=we.makeSpan(["inner"],[qn(t.body,e.withPhantom())]),r=we.makeSpan(["fix"],[]);return we.makeSpan(["mord","rlap"],[n,r],e)},mathmlBuilder:(t,e)=>{var n=Mi(Gr(t.body),e),r=new Fe.MathNode("mphantom",n),s=new Fe.MathNode("mpadded",[r]);return s.setAttribute("width","0px"),s}});tt({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(t,e){var{parser:n}=t,r=nn(e[0],"size").value,s=e[1];return{type:"raisebox",mode:n.mode,dy:r,body:s}},htmlBuilder(t,e){var n=qn(t.body,e),r=Ir(t.dy,e);return we.makeVList({positionType:"shift",positionData:-r,children:[{type:"elem",elem:n}]},e)},mathmlBuilder(t,e){var n=new Fe.MathNode("mpadded",[hr(t.body,e)]),r=t.dy.number+t.dy.unit;return n.setAttribute("voffset",r),n}});tt({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(t){var{parser:e}=t;return{type:"internal",mode:e.mode}}});tt({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(t,e,n){var{parser:r}=t,s=n[0],i=nn(e[0],"size"),a=nn(e[1],"size");return{type:"rule",mode:r.mode,shift:s&&nn(s,"size").value,width:i.value,height:a.value}},htmlBuilder(t,e){var n=we.makeSpan(["mord","rule"],[],e),r=Ir(t.width,e),s=Ir(t.height,e),i=t.shift?Ir(t.shift,e):0;return n.style.borderRightWidth=Xe(r),n.style.borderTopWidth=Xe(s),n.style.bottom=Xe(i),n.width=r,n.height=s+i,n.depth=-i,n.maxFontSize=s*1.125*e.sizeMultiplier,n},mathmlBuilder(t,e){var n=Ir(t.width,e),r=Ir(t.height,e),s=t.shift?Ir(t.shift,e):0,i=e.color&&e.getColor()||"black",a=new Fe.MathNode("mspace");a.setAttribute("mathbackground",i),a.setAttribute("width",Xe(n)),a.setAttribute("height",Xe(r));var l=new Fe.MathNode("mpadded",[a]);return s>=0?l.setAttribute("height",Xe(s)):(l.setAttribute("height",Xe(s)),l.setAttribute("depth",Xe(-s))),l.setAttribute("voffset",Xe(s)),l}});function BU(t,e,n){for(var r=ms(t,e,!1),s=e.sizeMultiplier/n.sizeMultiplier,i=0;i{var n=e.havingSize(t.size);return BU(t.body,n,e)};tt({type:"sizing",names:LR,props:{numArgs:0,allowedInText:!0},handler:(t,e)=>{var{breakOnTokenText:n,funcName:r,parser:s}=t,i=s.parseExpression(!1,n);return{type:"sizing",mode:s.mode,size:LR.indexOf(r)+1,body:i}},htmlBuilder:hke,mathmlBuilder:(t,e)=>{var n=e.havingSize(t.size),r=Mi(t.body,n),s=new Fe.MathNode("mstyle",r);return s.setAttribute("mathsize",Xe(n.sizeMultiplier)),s}});tt({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(t,e,n)=>{var{parser:r}=t,s=!1,i=!1,a=n[0]&&nn(n[0],"ordgroup");if(a)for(var l="",c=0;c{var n=we.makeSpan([],[qn(t.body,e)]);if(!t.smashHeight&&!t.smashDepth)return n;if(t.smashHeight&&(n.height=0,n.children))for(var r=0;r{var n=new Fe.MathNode("mpadded",[hr(t.body,e)]);return t.smashHeight&&n.setAttribute("height","0px"),t.smashDepth&&n.setAttribute("depth","0px"),n}});tt({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(t,e,n){var{parser:r}=t,s=n[0],i=e[0];return{type:"sqrt",mode:r.mode,body:i,index:s}},htmlBuilder(t,e){var n=qn(t.body,e.havingCrampedStyle());n.height===0&&(n.height=e.fontMetrics().xHeight),n=we.wrapFragment(n,e);var r=e.fontMetrics(),s=r.defaultRuleThickness,i=s;e.style.idn.height+n.depth+a&&(a=(a+m-n.height-n.depth)/2);var g=c.height-n.height-a-d;n.style.paddingLeft=Xe(h);var x=we.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:-(n.height+g)},{type:"elem",elem:c},{type:"kern",size:d}]},e);if(t.index){var y=e.havingStyle(At.SCRIPTSCRIPT),w=qn(t.index,y,e),S=.6*(x.height-x.depth),k=we.makeVList({positionType:"shift",positionData:-S,children:[{type:"elem",elem:w}]},e),j=we.makeSpan(["root"],[k]);return we.makeSpan(["mord","sqrt"],[j,x],e)}else return we.makeSpan(["mord","sqrt"],[x],e)},mathmlBuilder(t,e){var{body:n,index:r}=t;return r?new Fe.MathNode("mroot",[hr(n,e),hr(r,e)]):new Fe.MathNode("msqrt",[hr(n,e)])}});var BR={display:At.DISPLAY,text:At.TEXT,script:At.SCRIPT,scriptscript:At.SCRIPTSCRIPT};tt({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(t,e){var{breakOnTokenText:n,funcName:r,parser:s}=t,i=s.parseExpression(!0,n),a=r.slice(1,r.length-5);return{type:"styling",mode:s.mode,style:a,body:i}},htmlBuilder(t,e){var n=BR[t.style],r=e.havingStyle(n).withFont("");return BU(t.body,r,e)},mathmlBuilder(t,e){var n=BR[t.style],r=e.havingStyle(n),s=Mi(t.body,r),i=new Fe.MathNode("mstyle",s),a={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},l=a[t.style];return i.setAttribute("scriptlevel",l[0]),i.setAttribute("displaystyle",l[1]),i}});var fke=function(e,n){var r=e.base;if(r)if(r.type==="op"){var s=r.limits&&(n.style.size===At.DISPLAY.size||r.alwaysHandleSupSub);return s?Hf:null}else if(r.type==="operatorname"){var i=r.alwaysHandleSupSub&&(n.style.size===At.DISPLAY.size||r.limits);return i?LU:null}else{if(r.type==="accent")return Wn.isCharacterBox(r.base)?LN:null;if(r.type==="horizBrace"){var a=!e.sub;return a===r.isOver?PU:null}else return null}else return null};Od({type:"supsub",htmlBuilder(t,e){var n=fke(t,e);if(n)return n(t,e);var{base:r,sup:s,sub:i}=t,a=qn(r,e),l,c,d=e.fontMetrics(),h=0,m=0,g=r&&Wn.isCharacterBox(r);if(s){var x=e.havingStyle(e.style.sup());l=qn(s,x,e),g||(h=a.height-x.fontMetrics().supDrop*x.sizeMultiplier/e.sizeMultiplier)}if(i){var y=e.havingStyle(e.style.sub());c=qn(i,y,e),g||(m=a.depth+y.fontMetrics().subDrop*y.sizeMultiplier/e.sizeMultiplier)}var w;e.style===At.DISPLAY?w=d.sup1:e.style.cramped?w=d.sup3:w=d.sup2;var S=e.sizeMultiplier,k=Xe(.5/d.ptPerEm/S),j=null;if(c){var N=t.base&&t.base.type==="op"&&t.base.name&&(t.base.name==="\\oiint"||t.base.name==="\\oiiint");(a instanceof Ma||N)&&(j=Xe(-a.italic))}var T;if(l&&c){h=Math.max(h,w,l.depth+.25*d.xHeight),m=Math.max(m,d.sub2);var E=d.defaultRuleThickness,_=4*E;if(h-l.depth-(c.height-m)<_){m=_-(h-l.depth)+c.height;var A=.8*d.xHeight-(h-l.depth);A>0&&(h+=A,m-=A)}var D=[{type:"elem",elem:c,shift:m,marginRight:k,marginLeft:j},{type:"elem",elem:l,shift:-h,marginRight:k}];T=we.makeVList({positionType:"individualShift",children:D},e)}else if(c){m=Math.max(m,d.sub1,c.height-.8*d.xHeight);var q=[{type:"elem",elem:c,marginLeft:j,marginRight:k}];T=we.makeVList({positionType:"shift",positionData:m,children:q},e)}else if(l)h=Math.max(h,w,l.depth+.25*d.xHeight),T=we.makeVList({positionType:"shift",positionData:-h,children:[{type:"elem",elem:l,marginRight:k}]},e);else throw new Error("supsub must have either sup or sub.");var B=VO(a,"right")||"mord";return we.makeSpan([B],[a,we.makeSpan(["msupsub"],[T])],e)},mathmlBuilder(t,e){var n=!1,r,s;t.base&&t.base.type==="horizBrace"&&(s=!!t.sup,s===t.base.isOver&&(n=!0,r=t.base.isOver)),t.base&&(t.base.type==="op"||t.base.type==="operatorname")&&(t.base.parentIsSupSub=!0);var i=[hr(t.base,e)];t.sub&&i.push(hr(t.sub,e)),t.sup&&i.push(hr(t.sup,e));var a;if(n)a=r?"mover":"munder";else if(t.sub)if(t.sup){var d=t.base;d&&d.type==="op"&&d.limits&&e.style===At.DISPLAY||d&&d.type==="operatorname"&&d.alwaysHandleSupSub&&(e.style===At.DISPLAY||d.limits)?a="munderover":a="msubsup"}else{var c=t.base;c&&c.type==="op"&&c.limits&&(e.style===At.DISPLAY||c.alwaysHandleSupSub)||c&&c.type==="operatorname"&&c.alwaysHandleSupSub&&(c.limits||e.style===At.DISPLAY)?a="munder":a="msub"}else{var l=t.base;l&&l.type==="op"&&l.limits&&(e.style===At.DISPLAY||l.alwaysHandleSupSub)||l&&l.type==="operatorname"&&l.alwaysHandleSupSub&&(l.limits||e.style===At.DISPLAY)?a="mover":a="msup"}return new Fe.MathNode(a,i)}});Od({type:"atom",htmlBuilder(t,e){return we.mathsym(t.text,t.mode,e,["m"+t.family])},mathmlBuilder(t,e){var n=new Fe.MathNode("mo",[Ra(t.text,t.mode)]);if(t.family==="bin"){var r=zN(t,e);r==="bold-italic"&&n.setAttribute("mathvariant",r)}else t.family==="punct"?n.setAttribute("separator","true"):(t.family==="open"||t.family==="close")&&n.setAttribute("stretchy","false");return n}});var FU={mi:"italic",mn:"normal",mtext:"normal"};Od({type:"mathord",htmlBuilder(t,e){return we.makeOrd(t,e,"mathord")},mathmlBuilder(t,e){var n=new Fe.MathNode("mi",[Ra(t.text,t.mode,e)]),r=zN(t,e)||"italic";return r!==FU[n.type]&&n.setAttribute("mathvariant",r),n}});Od({type:"textord",htmlBuilder(t,e){return we.makeOrd(t,e,"textord")},mathmlBuilder(t,e){var n=Ra(t.text,t.mode,e),r=zN(t,e)||"normal",s;return t.mode==="text"?s=new Fe.MathNode("mtext",[n]):/[0-9]/.test(t.text)?s=new Fe.MathNode("mn",[n]):t.text==="\\prime"?s=new Fe.MathNode("mo",[n]):s=new Fe.MathNode("mi",[n]),r!==FU[s.type]&&s.setAttribute("mathvariant",r),s}});var o5={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},l5={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};Od({type:"spacing",htmlBuilder(t,e){if(l5.hasOwnProperty(t.text)){var n=l5[t.text].className||"";if(t.mode==="text"){var r=we.makeOrd(t,e,"textord");return r.classes.push(n),r}else return we.makeSpan(["mspace",n],[we.mathsym(t.text,t.mode,e)],e)}else{if(o5.hasOwnProperty(t.text))return we.makeSpan(["mspace",o5[t.text]],[],e);throw new qe('Unknown type of space "'+t.text+'"')}},mathmlBuilder(t,e){var n;if(l5.hasOwnProperty(t.text))n=new Fe.MathNode("mtext",[new Fe.TextNode(" ")]);else{if(o5.hasOwnProperty(t.text))return new Fe.MathNode("mspace");throw new qe('Unknown type of space "'+t.text+'"')}return n}});var FR=()=>{var t=new Fe.MathNode("mtd",[]);return t.setAttribute("width","50%"),t};Od({type:"tag",mathmlBuilder(t,e){var n=new Fe.MathNode("mtable",[new Fe.MathNode("mtr",[FR(),new Fe.MathNode("mtd",[iu(t.body,e)]),FR(),new Fe.MathNode("mtd",[iu(t.tag,e)])])]);return n.setAttribute("width","100%"),n}});var qR={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},$R={"\\textbf":"textbf","\\textmd":"textmd"},mke={"\\textit":"textit","\\textup":"textup"},HR=(t,e)=>{var n=t.font;if(n){if(qR[n])return e.withTextFontFamily(qR[n]);if($R[n])return e.withTextFontWeight($R[n]);if(n==="\\emph")return e.fontShape==="textit"?e.withTextFontShape("textup"):e.withTextFontShape("textit")}else return e;return e.withTextFontShape(mke[n])};tt({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(t,e){var{parser:n,funcName:r}=t,s=e[0];return{type:"text",mode:n.mode,body:Gr(s),font:r}},htmlBuilder(t,e){var n=HR(t,e),r=ms(t.body,n,!0);return we.makeSpan(["mord","text"],r,n)},mathmlBuilder(t,e){var n=HR(t,e);return iu(t.body,n)}});tt({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(t,e){var{parser:n}=t;return{type:"underline",mode:n.mode,body:e[0]}},htmlBuilder(t,e){var n=qn(t.body,e),r=we.makeLineSpan("underline-line",e),s=e.fontMetrics().defaultRuleThickness,i=we.makeVList({positionType:"top",positionData:n.height,children:[{type:"kern",size:s},{type:"elem",elem:r},{type:"kern",size:3*s},{type:"elem",elem:n}]},e);return we.makeSpan(["mord","underline"],[i],e)},mathmlBuilder(t,e){var n=new Fe.MathNode("mo",[new Fe.TextNode("‾")]);n.setAttribute("stretchy","true");var r=new Fe.MathNode("munder",[hr(t.body,e),n]);return r.setAttribute("accentunder","true"),r}});tt({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(t,e){var{parser:n}=t;return{type:"vcenter",mode:n.mode,body:e[0]}},htmlBuilder(t,e){var n=qn(t.body,e),r=e.fontMetrics().axisHeight,s=.5*(n.height-r-(n.depth+r));return we.makeVList({positionType:"shift",positionData:s,children:[{type:"elem",elem:n}]},e)},mathmlBuilder(t,e){return new Fe.MathNode("mpadded",[hr(t.body,e)],["vcenter"])}});tt({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,e,n){throw new qe("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(t,e){for(var n=QR(t),r=[],s=e.havingStyle(e.style.text()),i=0;it.body.replace(/ /g,t.star?"␣":" "),Qc=cU,qU=`[ \r - ]`,pke="\\\\[a-zA-Z@]+",gke="\\\\[^\uD800-\uDFFF]",xke="("+pke+")"+qU+"*",vke=`\\\\( -|[ \r ]+ -?)[ \r ]*`,XO="[̀-ͯ]",yke=new RegExp(XO+"+$"),bke="("+qU+"+)|"+(vke+"|")+"([!-\\[\\]-‧‪-퟿豈-￿]"+(XO+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(XO+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+xke)+("|"+gke+")");class VR{constructor(e,n){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=n,this.tokenRegex=new RegExp(bke,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,n){this.catcodes[e]=n}lex(){var e=this.input,n=this.tokenRegex.lastIndex;if(n===e.length)return new Zi("EOF",new xi(this,n,n));var r=this.tokenRegex.exec(e);if(r===null||r.index!==n)throw new qe("Unexpected character: '"+e[n]+"'",new Zi(e[n],new xi(this,n,n+1)));var s=r[6]||r[3]||(r[2]?"\\ ":" ");if(this.catcodes[s]===14){var i=e.indexOf(` -`,this.tokenRegex.lastIndex);return i===-1?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=i+1,this.lex()}return new Zi(s,new xi(this,n,this.tokenRegex.lastIndex))}}class wke{constructor(e,n){e===void 0&&(e={}),n===void 0&&(n={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=n,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new qe("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var n in e)e.hasOwnProperty(n)&&(e[n]==null?delete this.current[n]:this.current[n]=e[n])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,n,r){if(r===void 0&&(r=!1),r){for(var s=0;s0&&(this.undefStack[this.undefStack.length-1][e]=n)}else{var i=this.undefStack[this.undefStack.length-1];i&&!i.hasOwnProperty(e)&&(i[e]=this.current[e])}n==null?delete this.current[e]:this.current[e]=n}}var Ske=_U;J("\\noexpand",function(t){var e=t.popToken();return t.isExpandable(e.text)&&(e.noexpand=!0,e.treatAsRelax=!0),{tokens:[e],numArgs:0}});J("\\expandafter",function(t){var e=t.popToken();return t.expandOnce(!0),{tokens:[e],numArgs:0}});J("\\@firstoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[0],numArgs:0}});J("\\@secondoftwo",function(t){var e=t.consumeArgs(2);return{tokens:e[1],numArgs:0}});J("\\@ifnextchar",function(t){var e=t.consumeArgs(3);t.consumeSpaces();var n=t.future();return e[0].length===1&&e[0][0].text===n.text?{tokens:e[1],numArgs:0}:{tokens:e[2],numArgs:0}});J("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");J("\\TextOrMath",function(t){var e=t.consumeArgs(2);return t.mode==="text"?{tokens:e[0],numArgs:0}:{tokens:e[1],numArgs:0}});var UR={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};J("\\char",function(t){var e=t.popToken(),n,r="";if(e.text==="'")n=8,e=t.popToken();else if(e.text==='"')n=16,e=t.popToken();else if(e.text==="`")if(e=t.popToken(),e.text[0]==="\\")r=e.text.charCodeAt(1);else{if(e.text==="EOF")throw new qe("\\char` missing argument");r=e.text.charCodeAt(0)}else n=10;if(n){if(r=UR[e.text],r==null||r>=n)throw new qe("Invalid base-"+n+" digit "+e.text);for(var s;(s=UR[t.future().text])!=null&&s{var s=t.consumeArg().tokens;if(s.length!==1)throw new qe("\\newcommand's first argument must be a macro name");var i=s[0].text,a=t.isDefined(i);if(a&&!e)throw new qe("\\newcommand{"+i+"} attempting to redefine "+(i+"; use \\renewcommand"));if(!a&&!n)throw new qe("\\renewcommand{"+i+"} when command "+i+" does not yet exist; use \\newcommand");var l=0;if(s=t.consumeArg().tokens,s.length===1&&s[0].text==="["){for(var c="",d=t.expandNextToken();d.text!=="]"&&d.text!=="EOF";)c+=d.text,d=t.expandNextToken();if(!c.match(/^\s*[0-9]+\s*$/))throw new qe("Invalid number of arguments: "+c);l=parseInt(c),s=t.consumeArg().tokens}return a&&r||t.macros.set(i,{tokens:s,numArgs:l}),""};J("\\newcommand",t=>UN(t,!1,!0,!1));J("\\renewcommand",t=>UN(t,!0,!1,!1));J("\\providecommand",t=>UN(t,!0,!0,!0));J("\\message",t=>{var e=t.consumeArgs(1)[0];return console.log(e.reverse().map(n=>n.text).join("")),""});J("\\errmessage",t=>{var e=t.consumeArgs(1)[0];return console.error(e.reverse().map(n=>n.text).join("")),""});J("\\show",t=>{var e=t.popToken(),n=e.text;return console.log(e,t.macros.get(n),Qc[n],pr.math[n],pr.text[n]),""});J("\\bgroup","{");J("\\egroup","}");J("~","\\nobreakspace");J("\\lq","`");J("\\rq","'");J("\\aa","\\r a");J("\\AA","\\r A");J("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}");J("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");J("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}");J("ℬ","\\mathscr{B}");J("ℰ","\\mathscr{E}");J("ℱ","\\mathscr{F}");J("ℋ","\\mathscr{H}");J("ℐ","\\mathscr{I}");J("ℒ","\\mathscr{L}");J("ℳ","\\mathscr{M}");J("ℛ","\\mathscr{R}");J("ℭ","\\mathfrak{C}");J("ℌ","\\mathfrak{H}");J("ℨ","\\mathfrak{Z}");J("\\Bbbk","\\Bbb{k}");J("·","\\cdotp");J("\\llap","\\mathllap{\\textrm{#1}}");J("\\rlap","\\mathrlap{\\textrm{#1}}");J("\\clap","\\mathclap{\\textrm{#1}}");J("\\mathstrut","\\vphantom{(}");J("\\underbar","\\underline{\\text{#1}}");J("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');J("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}");J("\\ne","\\neq");J("≠","\\neq");J("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}");J("∉","\\notin");J("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}");J("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}");J("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}");J("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}");J("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}");J("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}");J("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}");J("⟂","\\perp");J("‼","\\mathclose{!\\mkern-0.8mu!}");J("∌","\\notni");J("⌜","\\ulcorner");J("⌝","\\urcorner");J("⌞","\\llcorner");J("⌟","\\lrcorner");J("©","\\copyright");J("®","\\textregistered");J("️","\\textregistered");J("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');J("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');J("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');J("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');J("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");J("⋮","\\vdots");J("\\varGamma","\\mathit{\\Gamma}");J("\\varDelta","\\mathit{\\Delta}");J("\\varTheta","\\mathit{\\Theta}");J("\\varLambda","\\mathit{\\Lambda}");J("\\varXi","\\mathit{\\Xi}");J("\\varPi","\\mathit{\\Pi}");J("\\varSigma","\\mathit{\\Sigma}");J("\\varUpsilon","\\mathit{\\Upsilon}");J("\\varPhi","\\mathit{\\Phi}");J("\\varPsi","\\mathit{\\Psi}");J("\\varOmega","\\mathit{\\Omega}");J("\\substack","\\begin{subarray}{c}#1\\end{subarray}");J("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");J("\\boxed","\\fbox{$\\displaystyle{#1}$}");J("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");J("\\implies","\\DOTSB\\;\\Longrightarrow\\;");J("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");J("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");J("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var WR={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};J("\\dots",function(t){var e="\\dotso",n=t.expandAfterFuture().text;return n in WR?e=WR[n]:(n.slice(0,4)==="\\not"||n in pr.math&&["bin","rel"].includes(pr.math[n].group))&&(e="\\dotsb"),e});var WN={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};J("\\dotso",function(t){var e=t.future().text;return e in WN?"\\ldots\\,":"\\ldots"});J("\\dotsc",function(t){var e=t.future().text;return e in WN&&e!==","?"\\ldots\\,":"\\ldots"});J("\\cdots",function(t){var e=t.future().text;return e in WN?"\\@cdots\\,":"\\@cdots"});J("\\dotsb","\\cdots");J("\\dotsm","\\cdots");J("\\dotsi","\\!\\cdots");J("\\dotsx","\\ldots\\,");J("\\DOTSI","\\relax");J("\\DOTSB","\\relax");J("\\DOTSX","\\relax");J("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");J("\\,","\\tmspace+{3mu}{.1667em}");J("\\thinspace","\\,");J("\\>","\\mskip{4mu}");J("\\:","\\tmspace+{4mu}{.2222em}");J("\\medspace","\\:");J("\\;","\\tmspace+{5mu}{.2777em}");J("\\thickspace","\\;");J("\\!","\\tmspace-{3mu}{.1667em}");J("\\negthinspace","\\!");J("\\negmedspace","\\tmspace-{4mu}{.2222em}");J("\\negthickspace","\\tmspace-{5mu}{.277em}");J("\\enspace","\\kern.5em ");J("\\enskip","\\hskip.5em\\relax");J("\\quad","\\hskip1em\\relax");J("\\qquad","\\hskip2em\\relax");J("\\tag","\\@ifstar\\tag@literal\\tag@paren");J("\\tag@paren","\\tag@literal{({#1})}");J("\\tag@literal",t=>{if(t.macros.get("\\df@tag"))throw new qe("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});J("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");J("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");J("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");J("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");J("\\newline","\\\\\\relax");J("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var $U=Xe(Mo["Main-Regular"][84][1]-.7*Mo["Main-Regular"][65][1]);J("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+$U+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");J("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+$U+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");J("\\hspace","\\@ifstar\\@hspacer\\@hspace");J("\\@hspace","\\hskip #1\\relax");J("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");J("\\ordinarycolon",":");J("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");J("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');J("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');J("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');J("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');J("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');J("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');J("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');J("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');J("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');J("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');J("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');J("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');J("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');J("∷","\\dblcolon");J("∹","\\eqcolon");J("≔","\\coloneqq");J("≕","\\eqqcolon");J("⩴","\\Coloneqq");J("\\ratio","\\vcentcolon");J("\\coloncolon","\\dblcolon");J("\\colonequals","\\coloneqq");J("\\coloncolonequals","\\Coloneqq");J("\\equalscolon","\\eqqcolon");J("\\equalscoloncolon","\\Eqqcolon");J("\\colonminus","\\coloneq");J("\\coloncolonminus","\\Coloneq");J("\\minuscolon","\\eqcolon");J("\\minuscoloncolon","\\Eqcolon");J("\\coloncolonapprox","\\Colonapprox");J("\\coloncolonsim","\\Colonsim");J("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");J("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");J("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");J("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");J("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}");J("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");J("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");J("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");J("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");J("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");J("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");J("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");J("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");J("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}");J("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}");J("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}");J("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}");J("\\nleqq","\\html@mathml{\\@nleqq}{≰}");J("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}");J("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}");J("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}");J("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}");J("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}");J("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}");J("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}");J("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}");J("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}");J("\\imath","\\html@mathml{\\@imath}{ı}");J("\\jmath","\\html@mathml{\\@jmath}{ȷ}");J("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}");J("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}");J("⟦","\\llbracket");J("⟧","\\rrbracket");J("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}");J("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}");J("⦃","\\lBrace");J("⦄","\\rBrace");J("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}");J("⦵","\\minuso");J("\\darr","\\downarrow");J("\\dArr","\\Downarrow");J("\\Darr","\\Downarrow");J("\\lang","\\langle");J("\\rang","\\rangle");J("\\uarr","\\uparrow");J("\\uArr","\\Uparrow");J("\\Uarr","\\Uparrow");J("\\N","\\mathbb{N}");J("\\R","\\mathbb{R}");J("\\Z","\\mathbb{Z}");J("\\alef","\\aleph");J("\\alefsym","\\aleph");J("\\Alpha","\\mathrm{A}");J("\\Beta","\\mathrm{B}");J("\\bull","\\bullet");J("\\Chi","\\mathrm{X}");J("\\clubs","\\clubsuit");J("\\cnums","\\mathbb{C}");J("\\Complex","\\mathbb{C}");J("\\Dagger","\\ddagger");J("\\diamonds","\\diamondsuit");J("\\empty","\\emptyset");J("\\Epsilon","\\mathrm{E}");J("\\Eta","\\mathrm{H}");J("\\exist","\\exists");J("\\harr","\\leftrightarrow");J("\\hArr","\\Leftrightarrow");J("\\Harr","\\Leftrightarrow");J("\\hearts","\\heartsuit");J("\\image","\\Im");J("\\infin","\\infty");J("\\Iota","\\mathrm{I}");J("\\isin","\\in");J("\\Kappa","\\mathrm{K}");J("\\larr","\\leftarrow");J("\\lArr","\\Leftarrow");J("\\Larr","\\Leftarrow");J("\\lrarr","\\leftrightarrow");J("\\lrArr","\\Leftrightarrow");J("\\Lrarr","\\Leftrightarrow");J("\\Mu","\\mathrm{M}");J("\\natnums","\\mathbb{N}");J("\\Nu","\\mathrm{N}");J("\\Omicron","\\mathrm{O}");J("\\plusmn","\\pm");J("\\rarr","\\rightarrow");J("\\rArr","\\Rightarrow");J("\\Rarr","\\Rightarrow");J("\\real","\\Re");J("\\reals","\\mathbb{R}");J("\\Reals","\\mathbb{R}");J("\\Rho","\\mathrm{P}");J("\\sdot","\\cdot");J("\\sect","\\S");J("\\spades","\\spadesuit");J("\\sub","\\subset");J("\\sube","\\subseteq");J("\\supe","\\supseteq");J("\\Tau","\\mathrm{T}");J("\\thetasym","\\vartheta");J("\\weierp","\\wp");J("\\Zeta","\\mathrm{Z}");J("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");J("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");J("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");J("\\bra","\\mathinner{\\langle{#1}|}");J("\\ket","\\mathinner{|{#1}\\rangle}");J("\\braket","\\mathinner{\\langle{#1}\\rangle}");J("\\Bra","\\left\\langle#1\\right|");J("\\Ket","\\left|#1\\right\\rangle");var HU=t=>e=>{var n=e.consumeArg().tokens,r=e.consumeArg().tokens,s=e.consumeArg().tokens,i=e.consumeArg().tokens,a=e.macros.get("|"),l=e.macros.get("\\|");e.macros.beginGroup();var c=m=>g=>{t&&(g.macros.set("|",a),s.length&&g.macros.set("\\|",l));var x=m;if(!m&&s.length){var y=g.future();y.text==="|"&&(g.popToken(),x=!0)}return{tokens:x?s:r,numArgs:0}};e.macros.set("|",c(!1)),s.length&&e.macros.set("\\|",c(!0));var d=e.consumeArg().tokens,h=e.expandTokens([...i,...d,...n]);return e.macros.endGroup(),{tokens:h.reverse(),numArgs:0}};J("\\bra@ket",HU(!1));J("\\bra@set",HU(!0));J("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");J("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");J("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");J("\\angln","{\\angl n}");J("\\blue","\\textcolor{##6495ed}{#1}");J("\\orange","\\textcolor{##ffa500}{#1}");J("\\pink","\\textcolor{##ff00af}{#1}");J("\\red","\\textcolor{##df0030}{#1}");J("\\green","\\textcolor{##28ae7b}{#1}");J("\\gray","\\textcolor{gray}{#1}");J("\\purple","\\textcolor{##9d38bd}{#1}");J("\\blueA","\\textcolor{##ccfaff}{#1}");J("\\blueB","\\textcolor{##80f6ff}{#1}");J("\\blueC","\\textcolor{##63d9ea}{#1}");J("\\blueD","\\textcolor{##11accd}{#1}");J("\\blueE","\\textcolor{##0c7f99}{#1}");J("\\tealA","\\textcolor{##94fff5}{#1}");J("\\tealB","\\textcolor{##26edd5}{#1}");J("\\tealC","\\textcolor{##01d1c1}{#1}");J("\\tealD","\\textcolor{##01a995}{#1}");J("\\tealE","\\textcolor{##208170}{#1}");J("\\greenA","\\textcolor{##b6ffb0}{#1}");J("\\greenB","\\textcolor{##8af281}{#1}");J("\\greenC","\\textcolor{##74cf70}{#1}");J("\\greenD","\\textcolor{##1fab54}{#1}");J("\\greenE","\\textcolor{##0d923f}{#1}");J("\\goldA","\\textcolor{##ffd0a9}{#1}");J("\\goldB","\\textcolor{##ffbb71}{#1}");J("\\goldC","\\textcolor{##ff9c39}{#1}");J("\\goldD","\\textcolor{##e07d10}{#1}");J("\\goldE","\\textcolor{##a75a05}{#1}");J("\\redA","\\textcolor{##fca9a9}{#1}");J("\\redB","\\textcolor{##ff8482}{#1}");J("\\redC","\\textcolor{##f9685d}{#1}");J("\\redD","\\textcolor{##e84d39}{#1}");J("\\redE","\\textcolor{##bc2612}{#1}");J("\\maroonA","\\textcolor{##ffbde0}{#1}");J("\\maroonB","\\textcolor{##ff92c6}{#1}");J("\\maroonC","\\textcolor{##ed5fa6}{#1}");J("\\maroonD","\\textcolor{##ca337c}{#1}");J("\\maroonE","\\textcolor{##9e034e}{#1}");J("\\purpleA","\\textcolor{##ddd7ff}{#1}");J("\\purpleB","\\textcolor{##c6b9fc}{#1}");J("\\purpleC","\\textcolor{##aa87ff}{#1}");J("\\purpleD","\\textcolor{##7854ab}{#1}");J("\\purpleE","\\textcolor{##543b78}{#1}");J("\\mintA","\\textcolor{##f5f9e8}{#1}");J("\\mintB","\\textcolor{##edf2df}{#1}");J("\\mintC","\\textcolor{##e0e5cc}{#1}");J("\\grayA","\\textcolor{##f6f7f7}{#1}");J("\\grayB","\\textcolor{##f0f1f2}{#1}");J("\\grayC","\\textcolor{##e3e5e6}{#1}");J("\\grayD","\\textcolor{##d6d8da}{#1}");J("\\grayE","\\textcolor{##babec2}{#1}");J("\\grayF","\\textcolor{##888d93}{#1}");J("\\grayG","\\textcolor{##626569}{#1}");J("\\grayH","\\textcolor{##3b3e40}{#1}");J("\\grayI","\\textcolor{##21242c}{#1}");J("\\kaBlue","\\textcolor{##314453}{#1}");J("\\kaGreen","\\textcolor{##71B307}{#1}");var QU={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class kke{constructor(e,n,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=n,this.expansionCount=0,this.feed(e),this.macros=new wke(Ske,n.macros),this.mode=r,this.stack=[]}feed(e){this.lexer=new VR(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var n,r,s;if(e){if(this.consumeSpaces(),this.future().text!=="[")return null;n=this.popToken(),{tokens:s,end:r}=this.consumeArg(["]"])}else({tokens:s,start:n,end:r}=this.consumeArg());return this.pushToken(new Zi("EOF",r.loc)),this.pushTokens(s),new Zi("",xi.range(n,r))}consumeSpaces(){for(;;){var e=this.future();if(e.text===" ")this.stack.pop();else break}}consumeArg(e){var n=[],r=e&&e.length>0;r||this.consumeSpaces();var s=this.future(),i,a=0,l=0;do{if(i=this.popToken(),n.push(i),i.text==="{")++a;else if(i.text==="}"){if(--a,a===-1)throw new qe("Extra }",i)}else if(i.text==="EOF")throw new qe("Unexpected end of input in a macro argument, expected '"+(e&&r?e[l]:"}")+"'",i);if(e&&r)if((a===0||a===1&&e[l]==="{")&&i.text===e[l]){if(++l,l===e.length){n.splice(-l,l);break}}else l=0}while(a!==0||r);return s.text==="{"&&n[n.length-1].text==="}"&&(n.pop(),n.shift()),n.reverse(),{tokens:n,start:s,end:i}}consumeArgs(e,n){if(n){if(n.length!==e+1)throw new qe("The length of delimiters doesn't match the number of args!");for(var r=n[0],s=0;sthis.settings.maxExpand)throw new qe("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var n=this.popToken(),r=n.text,s=n.noexpand?null:this._getExpansion(r);if(s==null||e&&s.unexpandable){if(e&&s==null&&r[0]==="\\"&&!this.isDefined(r))throw new qe("Undefined control sequence: "+r);return this.pushToken(n),!1}this.countExpansion(1);var i=s.tokens,a=this.consumeArgs(s.numArgs,s.delimiters);if(s.numArgs){i=i.slice();for(var l=i.length-1;l>=0;--l){var c=i[l];if(c.text==="#"){if(l===0)throw new qe("Incomplete placeholder at end of macro body",c);if(c=i[--l],c.text==="#")i.splice(l+1,1);else if(/^[1-9]$/.test(c.text))i.splice(l,2,...a[+c.text-1]);else throw new qe("Not a valid argument number",c)}}}return this.pushTokens(i),i.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new Zi(e)]):void 0}expandTokens(e){var n=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;)if(this.expandOnce(!0)===!1){var s=this.stack.pop();s.treatAsRelax&&(s.noexpand=!1,s.treatAsRelax=!1),n.push(s)}return this.countExpansion(n.length),n}expandMacroAsText(e){var n=this.expandMacro(e);return n&&n.map(r=>r.text).join("")}_getExpansion(e){var n=this.macros.get(e);if(n==null)return n;if(e.length===1){var r=this.lexer.catcodes[e];if(r!=null&&r!==13)return}var s=typeof n=="function"?n(this):n;if(typeof s=="string"){var i=0;if(s.indexOf("#")!==-1)for(var a=s.replace(/##/g,"");a.indexOf("#"+(i+1))!==-1;)++i;for(var l=new VR(s,this.settings),c=[],d=l.lex();d.text!=="EOF";)c.push(d),d=l.lex();c.reverse();var h={tokens:c,numArgs:i};return h}return s}isDefined(e){return this.macros.has(e)||Qc.hasOwnProperty(e)||pr.math.hasOwnProperty(e)||pr.text.hasOwnProperty(e)||QU.hasOwnProperty(e)}isExpandable(e){var n=this.macros.get(e);return n!=null?typeof n=="string"||typeof n=="function"||!n.unexpandable:Qc.hasOwnProperty(e)&&!Qc[e].primitive}}var GR=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,Q1=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g",ʰ:"h","ⁱ":"i",ʲ:"j","ᵏ":"k",ˡ:"l","ᵐ":"m",ⁿ:"n","ᵒ":"o","ᵖ":"p",ʳ:"r",ˢ:"s","ᵗ":"t","ᵘ":"u","ᵛ":"v",ʷ:"w",ˣ:"x",ʸ:"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),c5={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},XR={á:"á",à:"à",ä:"ä",ǟ:"ǟ",ã:"ã",ā:"ā",ă:"ă",ắ:"ắ",ằ:"ằ",ẵ:"ẵ",ǎ:"ǎ",â:"â",ấ:"ấ",ầ:"ầ",ẫ:"ẫ",ȧ:"ȧ",ǡ:"ǡ",å:"å",ǻ:"ǻ",ḃ:"ḃ",ć:"ć",ḉ:"ḉ",č:"č",ĉ:"ĉ",ċ:"ċ",ç:"ç",ď:"ď",ḋ:"ḋ",ḑ:"ḑ",é:"é",è:"è",ë:"ë",ẽ:"ẽ",ē:"ē",ḗ:"ḗ",ḕ:"ḕ",ĕ:"ĕ",ḝ:"ḝ",ě:"ě",ê:"ê",ế:"ế",ề:"ề",ễ:"ễ",ė:"ė",ȩ:"ȩ",ḟ:"ḟ",ǵ:"ǵ",ḡ:"ḡ",ğ:"ğ",ǧ:"ǧ",ĝ:"ĝ",ġ:"ġ",ģ:"ģ",ḧ:"ḧ",ȟ:"ȟ",ĥ:"ĥ",ḣ:"ḣ",ḩ:"ḩ",í:"í",ì:"ì",ï:"ï",ḯ:"ḯ",ĩ:"ĩ",ī:"ī",ĭ:"ĭ",ǐ:"ǐ",î:"î",ǰ:"ǰ",ĵ:"ĵ",ḱ:"ḱ",ǩ:"ǩ",ķ:"ķ",ĺ:"ĺ",ľ:"ľ",ļ:"ļ",ḿ:"ḿ",ṁ:"ṁ",ń:"ń",ǹ:"ǹ",ñ:"ñ",ň:"ň",ṅ:"ṅ",ņ:"ņ",ó:"ó",ò:"ò",ö:"ö",ȫ:"ȫ",õ:"õ",ṍ:"ṍ",ṏ:"ṏ",ȭ:"ȭ",ō:"ō",ṓ:"ṓ",ṑ:"ṑ",ŏ:"ŏ",ǒ:"ǒ",ô:"ô",ố:"ố",ồ:"ồ",ỗ:"ỗ",ȯ:"ȯ",ȱ:"ȱ",ő:"ő",ṕ:"ṕ",ṗ:"ṗ",ŕ:"ŕ",ř:"ř",ṙ:"ṙ",ŗ:"ŗ",ś:"ś",ṥ:"ṥ",š:"š",ṧ:"ṧ",ŝ:"ŝ",ṡ:"ṡ",ş:"ş",ẗ:"ẗ",ť:"ť",ṫ:"ṫ",ţ:"ţ",ú:"ú",ù:"ù",ü:"ü",ǘ:"ǘ",ǜ:"ǜ",ǖ:"ǖ",ǚ:"ǚ",ũ:"ũ",ṹ:"ṹ",ū:"ū",ṻ:"ṻ",ŭ:"ŭ",ǔ:"ǔ",û:"û",ů:"ů",ű:"ű",ṽ:"ṽ",ẃ:"ẃ",ẁ:"ẁ",ẅ:"ẅ",ŵ:"ŵ",ẇ:"ẇ",ẘ:"ẘ",ẍ:"ẍ",ẋ:"ẋ",ý:"ý",ỳ:"ỳ",ÿ:"ÿ",ỹ:"ỹ",ȳ:"ȳ",ŷ:"ŷ",ẏ:"ẏ",ẙ:"ẙ",ź:"ź",ž:"ž",ẑ:"ẑ",ż:"ż",Á:"Á",À:"À",Ä:"Ä",Ǟ:"Ǟ",Ã:"Ã",Ā:"Ā",Ă:"Ă",Ắ:"Ắ",Ằ:"Ằ",Ẵ:"Ẵ",Ǎ:"Ǎ",Â:"Â",Ấ:"Ấ",Ầ:"Ầ",Ẫ:"Ẫ",Ȧ:"Ȧ",Ǡ:"Ǡ",Å:"Å",Ǻ:"Ǻ",Ḃ:"Ḃ",Ć:"Ć",Ḉ:"Ḉ",Č:"Č",Ĉ:"Ĉ",Ċ:"Ċ",Ç:"Ç",Ď:"Ď",Ḋ:"Ḋ",Ḑ:"Ḑ",É:"É",È:"È",Ë:"Ë",Ẽ:"Ẽ",Ē:"Ē",Ḗ:"Ḗ",Ḕ:"Ḕ",Ĕ:"Ĕ",Ḝ:"Ḝ",Ě:"Ě",Ê:"Ê",Ế:"Ế",Ề:"Ề",Ễ:"Ễ",Ė:"Ė",Ȩ:"Ȩ",Ḟ:"Ḟ",Ǵ:"Ǵ",Ḡ:"Ḡ",Ğ:"Ğ",Ǧ:"Ǧ",Ĝ:"Ĝ",Ġ:"Ġ",Ģ:"Ģ",Ḧ:"Ḧ",Ȟ:"Ȟ",Ĥ:"Ĥ",Ḣ:"Ḣ",Ḩ:"Ḩ",Í:"Í",Ì:"Ì",Ï:"Ï",Ḯ:"Ḯ",Ĩ:"Ĩ",Ī:"Ī",Ĭ:"Ĭ",Ǐ:"Ǐ",Î:"Î",İ:"İ",Ĵ:"Ĵ",Ḱ:"Ḱ",Ǩ:"Ǩ",Ķ:"Ķ",Ĺ:"Ĺ",Ľ:"Ľ",Ļ:"Ļ",Ḿ:"Ḿ",Ṁ:"Ṁ",Ń:"Ń",Ǹ:"Ǹ",Ñ:"Ñ",Ň:"Ň",Ṅ:"Ṅ",Ņ:"Ņ",Ó:"Ó",Ò:"Ò",Ö:"Ö",Ȫ:"Ȫ",Õ:"Õ",Ṍ:"Ṍ",Ṏ:"Ṏ",Ȭ:"Ȭ",Ō:"Ō",Ṓ:"Ṓ",Ṑ:"Ṑ",Ŏ:"Ŏ",Ǒ:"Ǒ",Ô:"Ô",Ố:"Ố",Ồ:"Ồ",Ỗ:"Ỗ",Ȯ:"Ȯ",Ȱ:"Ȱ",Ő:"Ő",Ṕ:"Ṕ",Ṗ:"Ṗ",Ŕ:"Ŕ",Ř:"Ř",Ṙ:"Ṙ",Ŗ:"Ŗ",Ś:"Ś",Ṥ:"Ṥ",Š:"Š",Ṧ:"Ṧ",Ŝ:"Ŝ",Ṡ:"Ṡ",Ş:"Ş",Ť:"Ť",Ṫ:"Ṫ",Ţ:"Ţ",Ú:"Ú",Ù:"Ù",Ü:"Ü",Ǘ:"Ǘ",Ǜ:"Ǜ",Ǖ:"Ǖ",Ǚ:"Ǚ",Ũ:"Ũ",Ṹ:"Ṹ",Ū:"Ū",Ṻ:"Ṻ",Ŭ:"Ŭ",Ǔ:"Ǔ",Û:"Û",Ů:"Ů",Ű:"Ű",Ṽ:"Ṽ",Ẃ:"Ẃ",Ẁ:"Ẁ",Ẅ:"Ẅ",Ŵ:"Ŵ",Ẇ:"Ẇ",Ẍ:"Ẍ",Ẋ:"Ẋ",Ý:"Ý",Ỳ:"Ỳ",Ÿ:"Ÿ",Ỹ:"Ỹ",Ȳ:"Ȳ",Ŷ:"Ŷ",Ẏ:"Ẏ",Ź:"Ź",Ž:"Ž",Ẑ:"Ẑ",Ż:"Ż",ά:"ά",ὰ:"ὰ",ᾱ:"ᾱ",ᾰ:"ᾰ",έ:"έ",ὲ:"ὲ",ή:"ή",ὴ:"ὴ",ί:"ί",ὶ:"ὶ",ϊ:"ϊ",ΐ:"ΐ",ῒ:"ῒ",ῑ:"ῑ",ῐ:"ῐ",ό:"ό",ὸ:"ὸ",ύ:"ύ",ὺ:"ὺ",ϋ:"ϋ",ΰ:"ΰ",ῢ:"ῢ",ῡ:"ῡ",ῠ:"ῠ",ώ:"ώ",ὼ:"ὼ",Ύ:"Ύ",Ὺ:"Ὺ",Ϋ:"Ϋ",Ῡ:"Ῡ",Ῠ:"Ῠ",Ώ:"Ώ",Ὼ:"Ὼ"};class Kb{constructor(e,n){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new kke(e,n,this.mode),this.settings=n,this.leftrightDepth=0}expect(e,n){if(n===void 0&&(n=!0),this.fetch().text!==e)throw new qe("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());n&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var n=this.nextToken;this.consume(),this.gullet.pushToken(new Zi("}")),this.gullet.pushTokens(e);var r=this.parseExpression(!1);return this.expect("}"),this.nextToken=n,r}parseExpression(e,n){for(var r=[];;){this.mode==="math"&&this.consumeSpaces();var s=this.fetch();if(Kb.endOfExpression.indexOf(s.text)!==-1||n&&s.text===n||e&&Qc[s.text]&&Qc[s.text].infix)break;var i=this.parseAtom(n);if(i){if(i.type==="internal")continue}else break;r.push(i)}return this.mode==="text"&&this.formLigatures(r),this.handleInfixNodes(r)}handleInfixNodes(e){for(var n=-1,r,s=0;s=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+n[0]+'" used in math mode',e);var l=pr[this.mode][n].group,c=xi.range(e),d;if(d3e.hasOwnProperty(l)){var h=l;d={type:"atom",mode:this.mode,family:h,loc:c,text:n}}else d={type:l,mode:this.mode,loc:c,text:n};a=d}else if(n.charCodeAt(0)>=128)this.settings.strict&&(JV(n.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+n[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+n[0]+'"'+(" ("+n.charCodeAt(0)+")"),e)),a={type:"textord",mode:"text",loc:xi.range(e),text:n};else return null;if(this.consume(),i)for(var m=0;md&&(d=h):h&&(d!==void 0&&d>-1&&c.push(` -`.repeat(d)||" "),d=-1,c.push(h))}return c.join("")}function KU(t,e,n){return t.type==="element"?eOe(t,e,n):t.type==="text"?n.whitespace==="normal"?ZU(t,n):tOe(t):[]}function eOe(t,e,n){const r=JU(t,n),s=t.children||[];let i=-1,a=[];if(Zke(t))return a;let l,c;for(KO(t)||sD(t)&&eD(e,t,sD)?c=` -`:Kke(t)?(l=2,c=2):YU(t)&&(l=1,c=1);++i{try{i(!0);const Oe=await dOe({page:a,page_size:h,is_registered:g==="all"?void 0:g==="registered",is_banned:y==="all"?void 0:y==="banned",format:S==="all"?void 0:S,sort_by:j,sort_order:T});e(Oe.data),d(Oe.total)}catch(Oe){const Ve=Oe instanceof Error?Oe.message:"加载表情包列表失败";X({title:"错误",description:Ve,variant:"destructive"})}finally{i(!1)}},[a,h,g,y,S,j,T,X]),U=async()=>{try{const Oe=await pOe();r(Oe.data)}catch(Oe){console.error("加载统计数据失败:",Oe)}};b.useEffect(()=>{z()},[z]),b.useEffect(()=>{U()},[]);const te=async Oe=>{try{const Ve=await hOe(Oe.id);A(Ve.data),q(!0)}catch(Ve){const Ue=Ve instanceof Error?Ve.message:"加载详情失败";X({title:"错误",description:Ue,variant:"destructive"})}},ne=Oe=>{A(Oe),H(!0)},G=Oe=>{A(Oe),ee(!0)},se=async()=>{if(_)try{await mOe(_.id),X({title:"成功",description:"表情包已删除"}),ee(!1),A(null),z(),U()}catch(Oe){const Ve=Oe instanceof Error?Oe.message:"删除失败";X({title:"错误",description:Ve,variant:"destructive"})}},re=async Oe=>{try{await gOe(Oe.id),X({title:"成功",description:"表情包已注册"}),z(),U()}catch(Ve){const Ue=Ve instanceof Error?Ve.message:"注册失败";X({title:"错误",description:Ue,variant:"destructive"})}},ae=async Oe=>{try{await xOe(Oe.id),X({title:"成功",description:"表情包已封禁"}),z(),U()}catch(Ve){const Ue=Ve instanceof Error?Ve.message:"封禁失败";X({title:"错误",description:Ue,variant:"destructive"})}},_e=Oe=>{const Ve=new Set(I);Ve.has(Oe)?Ve.delete(Oe):Ve.add(Oe),V(Ve)},Be=async()=>{try{const Oe=await vOe(Array.from(I));X({title:"批量删除完成",description:Oe.message}),V(new Set),$(!1),z(),U()}catch(Oe){X({title:"批量删除失败",description:Oe instanceof Error?Oe.message:"批量删除失败",variant:"destructive"})}},Ye=()=>{const Oe=parseInt(K),Ve=Math.ceil(c/h);Oe>=1&&Oe<=Ve?(l(Oe),Y("")):X({title:"无效的页码",description:`请输入1-${Ve}之间的页码`,variant:"destructive"})},Je=n?.formats?Object.keys(n.formats):[];return o.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[o.jsxs("div",{className:"mb-4 sm:mb-6",children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"表情包管理"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理麦麦的表情包资源"})]}),o.jsx(pn,{className:"flex-1",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[n&&o.jsxs("div",{className:"grid gap-4 grid-cols-2 lg:grid-cols-4",children:[o.jsx(Lt,{children:o.jsxs(En,{className:"pb-2",children:[o.jsx(Wr,{children:"总数"}),o.jsx(_n,{className:"text-2xl",children:n.total})]})}),o.jsx(Lt,{children:o.jsxs(En,{className:"pb-2",children:[o.jsx(Wr,{children:"已注册"}),o.jsx(_n,{className:"text-2xl text-green-600",children:n.registered})]})}),o.jsx(Lt,{children:o.jsxs(En,{className:"pb-2",children:[o.jsx(Wr,{children:"已封禁"}),o.jsx(_n,{className:"text-2xl text-red-600",children:n.banned})]})}),o.jsx(Lt,{children:o.jsxs(En,{className:"pb-2",children:[o.jsx(Wr,{children:"未注册"}),o.jsx(_n,{className:"text-2xl text-gray-600",children:n.unregistered})]})})]}),o.jsxs(Lt,{children:[o.jsx(En,{children:o.jsxs(_n,{className:"flex items-center gap-2",children:[o.jsx(ok,{className:"h-5 w-5"}),"筛选和排序"]})}),o.jsxs(Xn,{className:"space-y-4",children:[o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:"排序方式"}),o.jsxs(Vt,{value:`${j}-${T}`,onValueChange:Oe=>{const[Ve,Ue]=Oe.split("-");N(Ve),E(Ue),l(1)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"usage_count-desc",children:"使用次数 (多→少)"}),o.jsx(De,{value:"usage_count-asc",children:"使用次数 (少→多)"}),o.jsx(De,{value:"register_time-desc",children:"注册时间 (新→旧)"}),o.jsx(De,{value:"register_time-asc",children:"注册时间 (旧→新)"}),o.jsx(De,{value:"record_time-desc",children:"记录时间 (新→旧)"}),o.jsx(De,{value:"record_time-asc",children:"记录时间 (旧→新)"}),o.jsx(De,{value:"last_used_time-desc",children:"最后使用 (新→旧)"}),o.jsx(De,{value:"last_used_time-asc",children:"最后使用 (旧→新)"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:"注册状态"}),o.jsxs(Vt,{value:g,onValueChange:Oe=>{x(Oe),l(1)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部"}),o.jsx(De,{value:"registered",children:"已注册"}),o.jsx(De,{value:"unregistered",children:"未注册"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:"封禁状态"}),o.jsxs(Vt,{value:y,onValueChange:Oe=>{w(Oe),l(1)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部"}),o.jsx(De,{value:"banned",children:"已封禁"}),o.jsx(De,{value:"unbanned",children:"未封禁"})]})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:"格式"}),o.jsxs(Vt,{value:S,onValueChange:Oe=>{k(Oe),l(1)},children:[o.jsx($t,{children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部"}),Je.map(Oe=>o.jsxs(De,{value:Oe,children:[Oe.toUpperCase()," (",n?.formats[Oe],")"]},Oe))]})]})]})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 pt-4 border-t",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[I.size>0&&o.jsxs("span",{className:"text-sm text-muted-foreground",children:["已选择 ",I.size," 个表情包"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{className:"text-sm whitespace-nowrap",children:"卡片大小"}),o.jsxs(Vt,{value:R,onValueChange:Oe=>ie(Oe),children:[o.jsx($t,{className:"w-24",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"small",children:"小"}),o.jsx(De,{value:"medium",children:"中"}),o.jsx(De,{value:"large",children:"大"})]})]})]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{htmlFor:"emoji-page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:h.toString(),onValueChange:Oe=>{m(parseInt(Oe)),l(1),V(new Set)},children:[o.jsx($t,{id:"emoji-page-size",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"40",children:"40"}),o.jsx(De,{value:"60",children:"60"}),o.jsx(De,{value:"100",children:"100"})]})]}),I.size>0&&o.jsxs(o.Fragment,{children:[o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>V(new Set),children:"取消选择"}),o.jsxs(ue,{variant:"destructive",size:"sm",onClick:()=>$(!0),children:[o.jsx(Cn,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]}),o.jsx("div",{className:"flex justify-end pt-4 border-t",children:o.jsxs(ue,{variant:"outline",size:"sm",onClick:z,disabled:s,children:[o.jsx(Qs,{className:`h-4 w-4 mr-2 ${s?"animate-spin":""}`}),"刷新"]})})]})]}),o.jsxs(Lt,{children:[o.jsxs(En,{children:[o.jsx(_n,{children:"表情包列表"}),o.jsxs(Wr,{children:["共 ",c," 个表情包,当前第 ",a," 页"]})]}),o.jsxs(Xn,{children:[t.length===0?o.jsx("div",{className:"text-center py-12 text-muted-foreground",children:"暂无数据"}):o.jsx("div",{className:`grid gap-3 ${R==="small"?"grid-cols-3 sm:grid-cols-4 md:grid-cols-6 lg:grid-cols-8 xl:grid-cols-10":R==="medium"?"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 xl:grid-cols-8":"grid-cols-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5"}`,children:t.map(Oe=>o.jsxs("div",{className:`group relative rounded-lg border bg-card overflow-hidden hover:ring-2 hover:ring-primary transition-all cursor-pointer ${I.has(Oe.id)?"ring-2 ring-primary bg-primary/5":""}`,onClick:()=>_e(Oe.id),children:[o.jsx("div",{className:`absolute top-1 left-1 z-10 transition-opacity ${I.has(Oe.id)?"opacity-100":"opacity-0 group-hover:opacity-100"}`,children:o.jsx("div",{className:`w-5 h-5 rounded-full border-2 flex items-center justify-center ${I.has(Oe.id)?"bg-primary border-primary text-primary-foreground":"bg-background/80 border-muted-foreground/50"}`,children:I.has(Oe.id)&&o.jsx(Ya,{className:"h-3 w-3"})})}),o.jsxs("div",{className:"absolute top-1 right-1 z-10 flex flex-col gap-0.5",children:[Oe.is_registered&&o.jsx(tn,{variant:"default",className:"bg-green-600 text-[10px] px-1 py-0",children:"已注册"}),Oe.is_banned&&o.jsx(tn,{variant:"destructive",className:"text-[10px] px-1 py-0",children:"已封禁"})]}),o.jsx("div",{className:`aspect-square bg-muted flex items-center justify-center overflow-hidden ${R==="small"?"p-1":R==="medium"?"p-2":"p-3"}`,children:o.jsx("img",{src:eW(Oe.id),alt:"表情包",className:"w-full h-full object-contain",loading:"lazy",onError:Ve=>{const Ue=Ve.target;Ue.style.display="none";const $e=Ue.parentElement;$e&&($e.innerHTML='')}})}),o.jsxs("div",{className:`border-t bg-card ${R==="small"?"p-1":"p-2"}`,children:[o.jsxs("div",{className:"flex items-center justify-between gap-1 text-xs text-muted-foreground mb-1",children:[o.jsx(tn,{variant:"outline",className:"text-[10px] px-1 py-0",children:Oe.format.toUpperCase()}),o.jsxs("span",{className:"font-mono",children:[Oe.usage_count,"次"]})]}),o.jsxs("div",{className:`flex gap-1 justify-center opacity-0 group-hover:opacity-100 transition-opacity ${R==="small"?"flex-wrap":""}`,children:[o.jsx(ue,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:Ve=>{Ve.stopPropagation(),ne(Oe)},title:"编辑",children:o.jsx(F0,{className:"h-3 w-3"})}),o.jsx(ue,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:Ve=>{Ve.stopPropagation(),te(Oe)},title:"详情",children:o.jsx(Xi,{className:"h-3 w-3"})}),!Oe.is_registered&&o.jsx(ue,{variant:"ghost",size:"icon",className:"h-6 w-6 text-green-600 hover:text-green-700",onClick:Ve=>{Ve.stopPropagation(),re(Oe)},title:"注册",children:o.jsx(Ya,{className:"h-3 w-3"})}),!Oe.is_banned&&o.jsx(ue,{variant:"ghost",size:"icon",className:"h-6 w-6 text-orange-600 hover:text-orange-700",onClick:Ve=>{Ve.stopPropagation(),ae(Oe)},title:"封禁",children:o.jsx(tte,{className:"h-3 w-3"})}),o.jsx(ue,{variant:"ghost",size:"icon",className:"h-6 w-6 text-red-600 hover:text-red-700",onClick:Ve=>{Ve.stopPropagation(),G(Oe)},title:"删除",children:o.jsx(Cn,{className:"h-3 w-3"})})]})]})]},Oe.id))}),c>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[o.jsxs("div",{className:"text-sm text-muted-foreground",children:["显示 ",(a-1)*h+1," 到"," ",Math.min(a*h,c)," 条,共 ",c," 条"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>l(1),disabled:a===1,className:"hidden sm:flex",children:o.jsx(Ip,{className:"h-4 w-4"})}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>l(Oe=>Math.max(1,Oe-1)),disabled:a===1,children:[o.jsx(wd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Pe,{type:"number",value:K,onChange:Oe=>Y(Oe.target.value),onKeyDown:Oe=>Oe.key==="Enter"&&Ye(),placeholder:a.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(c/h)}),o.jsx(ue,{variant:"outline",size:"sm",onClick:Ye,disabled:!K,className:"h-8",children:"跳转"})]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>l(Oe=>Oe+1),disabled:a>=Math.ceil(c/h),children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(Zl,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>l(Math.ceil(c/h)),disabled:a>=Math.ceil(c/h),className:"hidden sm:flex",children:o.jsx(Lp,{className:"h-4 w-4"})})]})]})]})]}),o.jsx(bOe,{emoji:_,open:D,onOpenChange:q}),o.jsx(wOe,{emoji:_,open:B,onOpenChange:H,onSuccess:()=>{z(),U()}})]})}),o.jsx(Fn,{open:L,onOpenChange:$,children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认批量删除"}),o.jsxs(zn,{children:["你确定要删除选中的 ",I.size," 个表情包吗?此操作不可撤销。"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:Be,children:"确认删除"})]})]})}),o.jsx(Er,{open:W,onOpenChange:ee,children:o.jsxs(wr,{children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"确认删除"}),o.jsx(Xr,{children:"确定要删除这个表情包吗?此操作无法撤销。"})]}),o.jsxs(fs,{children:[o.jsx(ue,{variant:"outline",onClick:()=>ee(!1),children:"取消"}),o.jsx(ue,{variant:"destructive",onClick:se,children:"删除"})]})]})})]})}function bOe({emoji:t,open:e,onOpenChange:n}){if(!t)return null;const r=s=>s?new Date(s*1e3).toLocaleString("zh-CN"):"-";return o.jsx(Er,{open:e,onOpenChange:n,children:o.jsxs(wr,{className:"max-w-2xl max-h-[90vh]",children:[o.jsx(Sr,{children:o.jsx(kr,{children:"表情包详情"})}),o.jsx(pn,{className:"max-h-[calc(90vh-8rem)] pr-4",children:o.jsxs("div",{className:"space-y-4",children:[o.jsx("div",{className:"flex justify-center",children:o.jsx("div",{className:"w-32 h-32 bg-muted rounded-lg flex items-center justify-center overflow-hidden",children:o.jsx("img",{src:eW(t.id),alt:t.description||"表情包",className:"w-full h-full object-cover",onError:s=>{const i=s.target;i.style.display="none";const a=i.parentElement;a&&(a.innerHTML='')}})})}),o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"ID"}),o.jsx("div",{className:"mt-1 font-mono",children:t.id})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"格式"}),o.jsx("div",{className:"mt-1",children:o.jsx(tn,{variant:"outline",children:t.format.toUpperCase()})})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"文件路径"}),o.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:t.full_path})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"哈希值"}),o.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:t.emoji_hash})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"描述"}),t.description?o.jsx("div",{className:"mt-1 rounded-lg border bg-muted/50 p-3",children:o.jsx(uOe,{className:"prose-sm",children:t.description})}):o.jsx("div",{className:"mt-1 text-sm text-muted-foreground",children:"-"})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"情绪"}),o.jsx("div",{className:"mt-1",children:t.emotion?o.jsx("span",{className:"text-sm",children:t.emotion}):o.jsx("span",{className:"text-sm text-muted-foreground",children:"-"})})]}),o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"状态"}),o.jsxs("div",{className:"mt-2 flex gap-2",children:[t.is_registered&&o.jsx(tn,{variant:"default",className:"bg-green-600",children:"已注册"}),t.is_banned&&o.jsx(tn,{variant:"destructive",children:"已封禁"}),!t.is_registered&&!t.is_banned&&o.jsx(tn,{variant:"outline",children:"未注册"})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"使用次数"}),o.jsx("div",{className:"mt-1 font-mono text-lg",children:t.usage_count})]})]}),o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"记录时间"}),o.jsx("div",{className:"mt-1 text-sm",children:r(t.record_time)})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"注册时间"}),o.jsx("div",{className:"mt-1 text-sm",children:r(t.register_time)})]})]}),o.jsxs("div",{children:[o.jsx(he,{className:"text-muted-foreground",children:"最后使用"}),o.jsx("div",{className:"mt-1 text-sm",children:r(t.last_used_time)})]})]})})]})})}function wOe({emoji:t,open:e,onOpenChange:n,onSuccess:r}){const[s,i]=b.useState(""),[a,l]=b.useState(!1),[c,d]=b.useState(!1),[h,m]=b.useState(!1),{toast:g}=Lr();b.useEffect(()=>{t&&(i(t.emotion||""),l(t.is_registered),d(t.is_banned))},[t]);const x=async()=>{if(t)try{m(!0);const y=s.split(/[,,]/).map(w=>w.trim()).filter(Boolean).join(",");await fOe(t.id,{emotion:y||void 0,is_registered:a,is_banned:c}),g({title:"成功",description:"表情包信息已更新"}),n(!1),r()}catch(y){const w=y instanceof Error?y.message:"保存失败";g({title:"错误",description:w,variant:"destructive"})}finally{m(!1)}};return t?o.jsx(Er,{open:e,onOpenChange:n,children:o.jsxs(wr,{className:"max-w-2xl",children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"编辑表情包"}),o.jsx(Xr,{children:"修改表情包的情绪和状态信息"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{children:[o.jsx(he,{children:"情绪"}),o.jsx(Nr,{value:s,onChange:y=>i(y.target.value),placeholder:"输入情绪描述...",rows:2,className:"mt-1"}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"输入情绪相关的文本描述"})]}),o.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ci,{id:"is_registered",checked:a,onCheckedChange:y=>{y===!0?(l(!0),d(!1)):l(!1)}}),o.jsx(he,{htmlFor:"is_registered",className:"cursor-pointer",children:"已注册"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ci,{id:"is_banned",checked:c,onCheckedChange:y=>{y===!0?(d(!0),l(!1)):d(!1)}}),o.jsx(he,{htmlFor:"is_banned",className:"cursor-pointer",children:"已封禁"})]})]})]}),o.jsxs(fs,{children:[o.jsx(ue,{variant:"outline",onClick:()=>n(!1),children:"取消"}),o.jsx(ue,{onClick:x,disabled:h,children:h?"保存中...":"保存"})]})]})}):null}const pu="/api/webui/expression";async function SOe(){const t=await gt(`${pu}/chats`,{headers:Tt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取聊天列表失败")}return t.json()}async function kOe(t){const e=new URLSearchParams;t.page&&e.append("page",t.page.toString()),t.page_size&&e.append("page_size",t.page_size.toString()),t.search&&e.append("search",t.search),t.chat_id&&e.append("chat_id",t.chat_id);const n=await gt(`${pu}/list?${e}`,{headers:Tt()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取表达方式列表失败")}return n.json()}async function OOe(t){const e=await gt(`${pu}/${t}`,{headers:Tt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"获取表达方式详情失败")}return e.json()}async function jOe(t){const e=await gt(`${pu}/`,{method:"POST",headers:Tt(),body:JSON.stringify(t)});if(!e.ok){const n=await e.json();throw new Error(n.detail||"创建表达方式失败")}return e.json()}async function NOe(t,e){const n=await gt(`${pu}/${t}`,{method:"PATCH",headers:Tt(),body:JSON.stringify(e)});if(!n.ok){const r=await n.json();throw new Error(r.detail||"更新表达方式失败")}return n.json()}async function COe(t){const e=await gt(`${pu}/${t}`,{method:"DELETE",headers:Tt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"删除表达方式失败")}return e.json()}async function TOe(t){const e=await gt(`${pu}/batch/delete`,{method:"POST",headers:Tt(),body:JSON.stringify({ids:t})});if(!e.ok){const n=await e.json();throw new Error(n.detail||"批量删除表达方式失败")}return e.json()}async function EOe(){const t=await gt(`${pu}/stats/summary`,{headers:Tt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取统计数据失败")}return t.json()}function _Oe(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[s,i]=b.useState(0),[a,l]=b.useState(1),[c,d]=b.useState(20),[h,m]=b.useState(""),[g,x]=b.useState(null),[y,w]=b.useState(!1),[S,k]=b.useState(!1),[j,N]=b.useState(!1),[T,E]=b.useState(null),[_,A]=b.useState(new Set),[D,q]=b.useState(!1),[B,H]=b.useState(""),[W,ee]=b.useState({total:0,recent_7days:0,chat_count:0,top_chats:{}}),[I,V]=b.useState([]),[L,$]=b.useState(new Map),{toast:K}=Lr(),Y=async()=>{try{r(!0);const ae=await kOe({page:a,page_size:c,search:h||void 0});e(ae.data),i(ae.total)}catch(ae){K({title:"加载失败",description:ae instanceof Error?ae.message:"无法加载表达方式",variant:"destructive"})}finally{r(!1)}},R=async()=>{try{const ae=await EOe();ae?.data&&ee(ae.data)}catch(ae){console.error("加载统计数据失败:",ae)}},ie=async()=>{try{const ae=await SOe();if(ae?.data){V(ae.data);const _e=new Map;ae.data.forEach(Be=>{_e.set(Be.chat_id,Be.chat_name)}),$(_e)}}catch(ae){console.error("加载聊天列表失败:",ae)}},X=ae=>L.get(ae)||ae;b.useEffect(()=>{Y(),R(),ie()},[a,c,h]);const z=async ae=>{try{const _e=await OOe(ae.id);x(_e.data),w(!0)}catch(_e){K({title:"加载详情失败",description:_e instanceof Error?_e.message:"无法加载表达方式详情",variant:"destructive"})}},U=ae=>{x(ae),k(!0)},te=async ae=>{try{await COe(ae.id),K({title:"删除成功",description:`已删除表达方式: ${ae.situation}`}),E(null),Y(),R()}catch(_e){K({title:"删除失败",description:_e instanceof Error?_e.message:"无法删除表达方式",variant:"destructive"})}},ne=ae=>{const _e=new Set(_);_e.has(ae)?_e.delete(ae):_e.add(ae),A(_e)},G=()=>{_.size===t.length&&t.length>0?A(new Set):A(new Set(t.map(ae=>ae.id)))},se=async()=>{try{await TOe(Array.from(_)),K({title:"批量删除成功",description:`已删除 ${_.size} 个表达方式`}),A(new Set),q(!1),Y(),R()}catch(ae){K({title:"批量删除失败",description:ae instanceof Error?ae.message:"无法批量删除表达方式",variant:"destructive"})}},re=()=>{const ae=parseInt(B),_e=Math.ceil(s/c);ae>=1&&ae<=_e?(l(ae),H("")):K({title:"无效的页码",description:`请输入1-${_e}之间的页码`,variant:"destructive"})};return o.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[o.jsx("div",{className:"mb-4 sm:mb-6",children:o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[o.jsxs("div",{children:[o.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[o.jsx(Gh,{className:"h-8 w-8",strokeWidth:2}),"表达方式管理"]}),o.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦的表达方式和话术模板"})]}),o.jsxs(ue,{onClick:()=>N(!0),className:"gap-2",children:[o.jsx(Is,{className:"h-4 w-4"}),"新增表达方式"]})]})}),o.jsx(pn,{className:"flex-1",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"总数量"}),o.jsx("div",{className:"text-2xl font-bold mt-1",children:W.total})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"近7天新增"}),o.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:W.recent_7days})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"关联聊天数"}),o.jsx("div",{className:"text-2xl font-bold mt-1 text-blue-600",children:W.chat_count})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx(he,{htmlFor:"search",children:"搜索"}),o.jsx("div",{className:"flex flex-col sm:flex-row gap-2 mt-1.5",children:o.jsxs("div",{className:"flex-1 relative",children:[o.jsx(ii,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),o.jsx(Pe,{id:"search",placeholder:"搜索情境、风格或上下文...",value:h,onChange:ae=>m(ae.target.value),className:"pl-9"})]})}),o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[o.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:_.size>0&&o.jsxs("span",{children:["已选择 ",_.size," 个表达方式"]})}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:c.toString(),onValueChange:ae=>{d(parseInt(ae)),l(1),A(new Set)},children:[o.jsx($t,{id:"page-size",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"10",children:"10"}),o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"50",children:"50"}),o.jsx(De,{value:"100",children:"100"})]})]}),_.size>0&&o.jsxs(o.Fragment,{children:[o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>A(new Set),children:"取消选择"}),o.jsxs(ue,{variant:"destructive",size:"sm",onClick:()=>q(!0),children:[o.jsx(Cn,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card",children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(Af,{children:[o.jsx(Mf,{children:o.jsxs(zs,{children:[o.jsx(mn,{className:"w-12",children:o.jsx(Ci,{checked:_.size===t.length&&t.length>0,onCheckedChange:G})}),o.jsx(mn,{children:"情境"}),o.jsx(mn,{children:"风格"}),o.jsx(mn,{children:"聊天"}),o.jsx(mn,{className:"text-right",children:"操作"})]})}),o.jsx(Rf,{children:n?o.jsx(zs,{children:o.jsx(Yt,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):t.length===0?o.jsx(zs,{children:o.jsx(Yt,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):t.map(ae=>o.jsxs(zs,{children:[o.jsx(Yt,{children:o.jsx(Ci,{checked:_.has(ae.id),onCheckedChange:()=>ne(ae.id)})}),o.jsx(Yt,{className:"font-medium max-w-xs truncate",children:ae.situation}),o.jsx(Yt,{className:"max-w-xs truncate",children:ae.style}),o.jsx(Yt,{className:"max-w-[200px] truncate",title:X(ae.chat_id),style:{wordBreak:"keep-all"},children:o.jsx("span",{className:"whitespace-nowrap overflow-hidden text-ellipsis block",children:X(ae.chat_id)})}),o.jsx(Yt,{className:"text-right",children:o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsxs(ue,{variant:"default",size:"sm",onClick:()=>U(ae),children:[o.jsx(F0,{className:"h-4 w-4 mr-1"}),"编辑"]}),o.jsx(ue,{variant:"outline",size:"icon",className:"h-8 w-8",onClick:()=>z(ae),title:"查看详情",children:o.jsx(Ji,{className:"h-4 w-4"})}),o.jsxs(ue,{size:"sm",onClick:()=>E(ae),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Cn,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},ae.id))})]})}),o.jsx("div",{className:"md:hidden space-y-3 p-4",children:n?o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):t.length===0?o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):t.map(ae=>o.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Ci,{checked:_.has(ae.id),onCheckedChange:()=>ne(ae.id),className:"mt-1"}),o.jsxs("div",{className:"min-w-0 flex-1 overflow-hidden space-y-2",children:[o.jsxs("div",{children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"情境"}),o.jsx("h3",{className:"font-semibold text-sm line-clamp-2 w-full break-all",title:ae.situation,children:ae.situation})]}),o.jsxs("div",{children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"风格"}),o.jsx("p",{className:"text-sm line-clamp-2 w-full break-all",title:ae.style,children:ae.style})]})]})]}),o.jsxs("div",{className:"text-sm",children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"聊天"}),o.jsx("p",{className:"text-sm truncate",title:X(ae.chat_id),style:{wordBreak:"keep-all"},children:X(ae.chat_id)})]}),o.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>U(ae),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[o.jsx(F0,{className:"h-3 w-3 mr-1"}),"编辑"]}),o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>z(ae),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:o.jsx(Ji,{className:"h-3 w-3"})}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>E(ae),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[o.jsx(Cn,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},ae.id))}),s>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[o.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",s," 条记录,第 ",a," / ",Math.ceil(s/c)," 页"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>l(1),disabled:a===1,className:"hidden sm:flex",children:o.jsx(Ip,{className:"h-4 w-4"})}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>l(a-1),disabled:a===1,children:[o.jsx(wd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Pe,{type:"number",value:B,onChange:ae=>H(ae.target.value),onKeyDown:ae=>ae.key==="Enter"&&re(),placeholder:a.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(s/c)}),o.jsx(ue,{variant:"outline",size:"sm",onClick:re,disabled:!B,className:"h-8",children:"跳转"})]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>l(a+1),disabled:a>=Math.ceil(s/c),children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(Zl,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>l(Math.ceil(s/c)),disabled:a>=Math.ceil(s/c),className:"hidden sm:flex",children:o.jsx(Lp,{className:"h-4 w-4"})})]})]})]})]})}),o.jsx(AOe,{expression:g,open:y,onOpenChange:w,chatNameMap:L}),o.jsx(MOe,{open:j,onOpenChange:N,chatList:I,onSuccess:()=>{Y(),R(),N(!1)}}),o.jsx(ROe,{expression:g,open:S,onOpenChange:k,chatList:I,onSuccess:()=>{Y(),R(),k(!1)}}),o.jsx(Fn,{open:!!T,onOpenChange:()=>E(null),children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:['确定要删除表达方式 "',T?.situation,'" 吗? 此操作不可撤销。']})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>T&&te(T),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),o.jsx(DOe,{open:D,onOpenChange:q,onConfirm:se,count:_.size})]})}function AOe({expression:t,open:e,onOpenChange:n,chatNameMap:r}){if(!t)return null;const s=a=>a?new Date(a*1e3).toLocaleString("zh-CN"):"-",i=a=>r.get(a)||a;return o.jsx(Er,{open:e,onOpenChange:n,children:o.jsxs(wr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"表达方式详情"}),o.jsx(Xr,{children:"查看表达方式的完整信息"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsx(t0,{label:"情境",value:t.situation}),o.jsx(t0,{label:"风格",value:t.style}),o.jsx(t0,{label:"聊天",value:i(t.chat_id)}),o.jsx(t0,{icon:lk,label:"记录ID",value:t.id.toString(),mono:!0})]}),o.jsx("div",{className:"grid grid-cols-2 gap-4",children:o.jsx(t0,{icon:Mh,label:"创建时间",value:s(t.create_date)})})]}),o.jsx(fs,{children:o.jsx(ue,{onClick:()=>n(!1),children:"关闭"})})]})})}function t0({icon:t,label:e,value:n,mono:r=!1}){return o.jsxs("div",{className:"space-y-1",children:[o.jsxs(he,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[t&&o.jsx(t,{className:"h-3 w-3"}),e]}),o.jsx("div",{className:xe("text-sm",r&&"font-mono",!n&&"text-muted-foreground"),children:n||"-"})]})}function MOe({open:t,onOpenChange:e,chatList:n,onSuccess:r}){const[s,i]=b.useState({situation:"",style:"",chat_id:""}),[a,l]=b.useState(!1),{toast:c}=Lr(),d=async()=>{if(!s.situation||!s.style||!s.chat_id){c({title:"验证失败",description:"请填写必填字段:情境、风格和聊天",variant:"destructive"});return}try{l(!0),await jOe(s),c({title:"创建成功",description:"表达方式已创建"}),i({situation:"",style:"",chat_id:""}),r()}catch(h){c({title:"创建失败",description:h instanceof Error?h.message:"无法创建表达方式",variant:"destructive"})}finally{l(!1)}};return o.jsx(Er,{open:t,onOpenChange:e,children:o.jsxs(wr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"新增表达方式"}),o.jsx(Xr,{children:"创建新的表达方式记录"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsxs(he,{htmlFor:"situation",children:["情境 ",o.jsx("span",{className:"text-destructive",children:"*"})]}),o.jsx(Pe,{id:"situation",value:s.situation,onChange:h=>i({...s,situation:h.target.value}),placeholder:"描述使用场景"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs(he,{htmlFor:"style",children:["风格 ",o.jsx("span",{className:"text-destructive",children:"*"})]}),o.jsx(Pe,{id:"style",value:s.style,onChange:h=>i({...s,style:h.target.value}),placeholder:"描述表达风格"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsxs(he,{htmlFor:"chat_id",children:["聊天 ",o.jsx("span",{className:"text-destructive",children:"*"})]}),o.jsxs(Vt,{value:s.chat_id,onValueChange:h=>i({...s,chat_id:h}),children:[o.jsx($t,{children:o.jsx(Ut,{placeholder:"选择关联的聊天"})}),o.jsx(Ht,{children:n.map(h=>o.jsx(De,{value:h.chat_id,children:o.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[h.chat_name,h.is_group&&o.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},h.chat_id))})]})]})]}),o.jsxs(fs,{children:[o.jsx(ue,{variant:"outline",onClick:()=>e(!1),children:"取消"}),o.jsx(ue,{onClick:d,disabled:a,children:a?"创建中...":"创建"})]})]})})}function ROe({expression:t,open:e,onOpenChange:n,chatList:r,onSuccess:s}){const[i,a]=b.useState({}),[l,c]=b.useState(!1),{toast:d}=Lr();b.useEffect(()=>{t&&a({situation:t.situation,style:t.style,chat_id:t.chat_id})},[t]);const h=async()=>{if(t)try{c(!0),await NOe(t.id,i),d({title:"保存成功",description:"表达方式已更新"}),s()}catch(m){d({title:"保存失败",description:m instanceof Error?m.message:"无法更新表达方式",variant:"destructive"})}finally{c(!1)}};return t?o.jsx(Er,{open:e,onOpenChange:n,children:o.jsxs(wr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"编辑表达方式"}),o.jsx(Xr,{children:"修改表达方式的信息"})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit_situation",children:"情境"}),o.jsx(Pe,{id:"edit_situation",value:i.situation||"",onChange:m=>a({...i,situation:m.target.value}),placeholder:"描述使用场景"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit_style",children:"风格"}),o.jsx(Pe,{id:"edit_style",value:i.style||"",onChange:m=>a({...i,style:m.target.value}),placeholder:"描述表达风格"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit_chat_id",children:"聊天"}),o.jsxs(Vt,{value:i.chat_id||"",onValueChange:m=>a({...i,chat_id:m}),children:[o.jsx($t,{children:o.jsx(Ut,{placeholder:"选择关联的聊天"})}),o.jsx(Ht,{children:r.map(m=>o.jsx(De,{value:m.chat_id,children:o.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[m.chat_name,m.is_group&&o.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},m.chat_id))})]})]})]}),o.jsxs(fs,{children:[o.jsx(ue,{variant:"outline",onClick:()=>n(!1),children:"取消"}),o.jsx(ue,{onClick:h,disabled:l,children:l?"保存中...":"保存"})]})]})}):null}function DOe({open:t,onOpenChange:e,onConfirm:n,count:r}){return o.jsx(Fn,{open:t,onOpenChange:e,children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认批量删除"}),o.jsxs(zn,{children:["您即将删除 ",r," 个表达方式,此操作无法撤销。确定要继续吗?"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:n,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认删除"})]})]})})}const Qf="/api/webui/person";async function POe(t){const e=new URLSearchParams;t.page&&e.append("page",t.page.toString()),t.page_size&&e.append("page_size",t.page_size.toString()),t.search&&e.append("search",t.search),t.is_known!==void 0&&e.append("is_known",t.is_known.toString()),t.platform&&e.append("platform",t.platform);const n=await gt(`${Qf}/list?${e}`,{headers:Tt()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取人物列表失败")}return n.json()}async function zOe(t){const e=await gt(`${Qf}/${t}`,{headers:Tt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"获取人物详情失败")}return e.json()}async function IOe(t,e){const n=await gt(`${Qf}/${t}`,{method:"PATCH",headers:Tt(),body:JSON.stringify(e)});if(!n.ok){const r=await n.json();throw new Error(r.detail||"更新人物信息失败")}return n.json()}async function LOe(t){const e=await gt(`${Qf}/${t}`,{method:"DELETE",headers:Tt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"删除人物信息失败")}return e.json()}async function BOe(){const t=await gt(`${Qf}/stats/summary`,{headers:Tt()});if(!t.ok){const e=await t.json();throw new Error(e.detail||"获取统计数据失败")}return t.json()}async function FOe(t){const e=await gt(`${Qf}/batch/delete`,{method:"POST",headers:Tt(),body:JSON.stringify({person_ids:t})});if(!e.ok){const n=await e.json();throw new Error(n.detail||"批量删除失败")}return e.json()}function qOe(){const[t,e]=b.useState([]),[n,r]=b.useState(!0),[s,i]=b.useState(0),[a,l]=b.useState(1),[c,d]=b.useState(20),[h,m]=b.useState(""),[g,x]=b.useState(void 0),[y,w]=b.useState(void 0),[S,k]=b.useState(null),[j,N]=b.useState(!1),[T,E]=b.useState(!1),[_,A]=b.useState(null),[D,q]=b.useState({total:0,known:0,unknown:0,platforms:{}}),[B,H]=b.useState(new Set),[W,ee]=b.useState(!1),[I,V]=b.useState(""),{toast:L}=Lr(),$=async()=>{try{r(!0);const re=await POe({page:a,page_size:c,search:h||void 0,is_known:g,platform:y});e(re.data),i(re.total)}catch(re){L({title:"加载失败",description:re instanceof Error?re.message:"无法加载人物信息",variant:"destructive"})}finally{r(!1)}},K=async()=>{try{const re=await BOe();re?.data&&q(re.data)}catch(re){console.error("加载统计数据失败:",re)}};b.useEffect(()=>{$(),K()},[a,c,h,g,y]);const Y=async re=>{try{const ae=await zOe(re.person_id);k(ae.data),N(!0)}catch(ae){L({title:"加载详情失败",description:ae instanceof Error?ae.message:"无法加载人物详情",variant:"destructive"})}},R=re=>{k(re),E(!0)},ie=async re=>{try{await LOe(re.person_id),L({title:"删除成功",description:`已删除人物信息: ${re.person_name||re.nickname||re.user_id}`}),A(null),$(),K()}catch(ae){L({title:"删除失败",description:ae instanceof Error?ae.message:"无法删除人物信息",variant:"destructive"})}},X=b.useMemo(()=>Object.keys(D.platforms),[D.platforms]),z=re=>{const ae=new Set(B);ae.has(re)?ae.delete(re):ae.add(re),H(ae)},U=()=>{B.size===t.length&&t.length>0?H(new Set):H(new Set(t.map(re=>re.person_id)))},te=()=>{if(B.size===0){L({title:"未选择任何人物",description:"请先选择要删除的人物",variant:"destructive"});return}ee(!0)},ne=async()=>{try{const re=await FOe(Array.from(B));L({title:"批量删除完成",description:re.message}),H(new Set),ee(!1),$(),K()}catch(re){L({title:"批量删除失败",description:re instanceof Error?re.message:"批量删除失败",variant:"destructive"})}},G=()=>{const re=parseInt(I),ae=Math.ceil(s/c);re>=1&&re<=ae?(l(re),V("")):L({title:"无效的页码",description:`请输入1-${ae}之间的页码`,variant:"destructive"})},se=re=>re?new Date(re*1e3).toLocaleString("zh-CN"):"-";return o.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[o.jsx("div",{className:"mb-4 sm:mb-6",children:o.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:o.jsxs("div",{children:[o.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[o.jsx(nte,{className:"h-8 w-8",strokeWidth:2}),"人物信息管理"]}),o.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦认识的所有人物信息"})]})})}),o.jsx(pn,{className:"flex-1",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"总人数"}),o.jsx("div",{className:"text-2xl font-bold mt-1",children:D.total})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"已认识"}),o.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:D.known})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsx("div",{className:"text-sm text-muted-foreground",children:"未认识"}),o.jsx("div",{className:"text-2xl font-bold mt-1 text-muted-foreground",children:D.unknown})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-4 gap-4",children:[o.jsxs("div",{className:"sm:col-span-2",children:[o.jsx(he,{htmlFor:"search",children:"搜索"}),o.jsxs("div",{className:"relative mt-1.5",children:[o.jsx(ii,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),o.jsx(Pe,{id:"search",placeholder:"搜索名称、昵称或用户ID...",value:h,onChange:re=>m(re.target.value),className:"pl-9"})]})]}),o.jsxs("div",{children:[o.jsx(he,{htmlFor:"filter-known",children:"认识状态"}),o.jsxs(Vt,{value:g===void 0?"all":g.toString(),onValueChange:re=>{x(re==="all"?void 0:re==="true"),l(1)},children:[o.jsx($t,{id:"filter-known",className:"mt-1.5",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部"}),o.jsx(De,{value:"true",children:"已认识"}),o.jsx(De,{value:"false",children:"未认识"})]})]})]}),o.jsxs("div",{children:[o.jsx(he,{htmlFor:"filter-platform",children:"平台"}),o.jsxs(Vt,{value:y||"all",onValueChange:re=>{w(re==="all"?void 0:re),l(1)},children:[o.jsx($t,{id:"filter-platform",className:"mt-1.5",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部平台"}),X.map(re=>o.jsxs(De,{value:re,children:[re," (",D.platforms[re],")"]},re))]})]})]})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[o.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:B.size>0&&o.jsxs("span",{children:["已选择 ",B.size," 个人物"]})}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(he,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),o.jsxs(Vt,{value:c.toString(),onValueChange:re=>{d(parseInt(re)),l(1),H(new Set)},children:[o.jsx($t,{id:"page-size",className:"w-20",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"10",children:"10"}),o.jsx(De,{value:"20",children:"20"}),o.jsx(De,{value:"50",children:"50"}),o.jsx(De,{value:"100",children:"100"})]})]}),B.size>0&&o.jsxs(o.Fragment,{children:[o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>H(new Set),children:"取消选择"}),o.jsxs(ue,{variant:"destructive",size:"sm",onClick:te,children:[o.jsx(Cn,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),o.jsxs("div",{className:"rounded-lg border bg-card",children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(Af,{children:[o.jsx(Mf,{children:o.jsxs(zs,{children:[o.jsx(mn,{className:"w-12",children:o.jsx(Ci,{checked:t.length>0&&B.size===t.length,onCheckedChange:U,"aria-label":"全选"})}),o.jsx(mn,{children:"状态"}),o.jsx(mn,{children:"名称"}),o.jsx(mn,{children:"昵称"}),o.jsx(mn,{children:"平台"}),o.jsx(mn,{children:"用户ID"}),o.jsx(mn,{children:"最后更新"}),o.jsx(mn,{className:"text-right",children:"操作"})]})}),o.jsx(Rf,{children:n?o.jsx(zs,{children:o.jsx(Yt,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):t.length===0?o.jsx(zs,{children:o.jsx(Yt,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):t.map(re=>o.jsxs(zs,{children:[o.jsx(Yt,{children:o.jsx(Ci,{checked:B.has(re.person_id),onCheckedChange:()=>z(re.person_id),"aria-label":`选择 ${re.person_name||re.nickname||re.user_id}`})}),o.jsx(Yt,{children:o.jsx("div",{className:xe("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium",re.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:re.is_known?"已认识":"未认识"})}),o.jsx(Yt,{className:"font-medium",children:re.person_name||o.jsx("span",{className:"text-muted-foreground",children:"-"})}),o.jsx(Yt,{children:re.nickname||"-"}),o.jsx(Yt,{children:re.platform}),o.jsx(Yt,{className:"font-mono text-sm",children:re.user_id}),o.jsx(Yt,{className:"text-sm text-muted-foreground",children:se(re.last_know)}),o.jsx(Yt,{className:"text-right",children:o.jsxs("div",{className:"flex justify-end gap-2",children:[o.jsxs(ue,{variant:"default",size:"sm",onClick:()=>Y(re),children:[o.jsx(Ji,{className:"h-4 w-4 mr-1"}),"详情"]}),o.jsxs(ue,{variant:"default",size:"sm",onClick:()=>R(re),children:[o.jsx(F0,{className:"h-4 w-4 mr-1"}),"编辑"]}),o.jsxs(ue,{size:"sm",onClick:()=>A(re),className:"bg-red-600 hover:bg-red-700 text-white",children:[o.jsx(Cn,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},re.id))})]})}),o.jsx("div",{className:"md:hidden space-y-3 p-4",children:n?o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):t.length===0?o.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):t.map(re=>o.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(Ci,{checked:B.has(re.person_id),onCheckedChange:()=>z(re.person_id),className:"mt-1"}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("div",{className:xe("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium mb-2",re.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:re.is_known?"已认识":"未认识"}),o.jsx("h3",{className:"font-semibold text-sm line-clamp-1 w-full break-all",children:re.person_name||o.jsx("span",{className:"text-muted-foreground",children:"未命名"})}),re.nickname&&o.jsxs("p",{className:"text-xs text-muted-foreground mt-1 line-clamp-1 w-full break-all",children:["昵称: ",re.nickname]})]})]}),o.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[o.jsxs("div",{children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"平台"}),o.jsx("p",{className:"font-medium text-xs",children:re.platform})]}),o.jsxs("div",{children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"用户ID"}),o.jsx("p",{className:"font-mono text-xs truncate",title:re.user_id,children:re.user_id})]}),o.jsxs("div",{className:"col-span-2",children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"最后更新"}),o.jsx("p",{className:"text-xs",children:se(re.last_know)})]})]}),o.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>Y(re),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[o.jsx(Ji,{className:"h-3 w-3 mr-1"}),"查看"]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>R(re),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[o.jsx(F0,{className:"h-3 w-3 mr-1"}),"编辑"]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>A(re),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[o.jsx(Cn,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},re.id))}),s>0&&o.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[o.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",s," 条记录,第 ",a," / ",Math.ceil(s/c)," 页"]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>l(1),disabled:a===1,className:"hidden sm:flex",children:o.jsx(Ip,{className:"h-4 w-4"})}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>l(a-1),disabled:a===1,children:[o.jsx(wd,{className:"h-4 w-4 sm:mr-1"}),o.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Pe,{type:"number",value:I,onChange:re=>V(re.target.value),onKeyDown:re=>re.key==="Enter"&&G(),placeholder:a.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(s/c)}),o.jsx(ue,{variant:"outline",size:"sm",onClick:G,disabled:!I,className:"h-8",children:"跳转"})]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>l(a+1),disabled:a>=Math.ceil(s/c),children:[o.jsx("span",{className:"hidden sm:inline",children:"下一页"}),o.jsx(Zl,{className:"h-4 w-4 sm:ml-1"})]}),o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>l(Math.ceil(s/c)),disabled:a>=Math.ceil(s/c),className:"hidden sm:flex",children:o.jsx(Lp,{className:"h-4 w-4"})})]})]})]})]})}),o.jsx($Oe,{person:S,open:j,onOpenChange:N}),o.jsx(HOe,{person:S,open:T,onOpenChange:E,onSuccess:()=>{$(),K(),E(!1)}}),o.jsx(Fn,{open:!!_,onOpenChange:()=>A(null),children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认删除"}),o.jsxs(zn,{children:['确定要删除人物信息 "',_?.person_name||_?.nickname||_?.user_id,'" 吗? 此操作不可撤销。']})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:()=>_&&ie(_),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),o.jsx(Fn,{open:W,onOpenChange:ee,children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"确认批量删除"}),o.jsxs(zn,{children:["确定要删除选中的 ",B.size," 个人物信息吗? 此操作不可撤销。"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{children:"取消"}),o.jsx(In,{onClick:ne,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})})]})}function $Oe({person:t,open:e,onOpenChange:n}){if(!t)return null;const r=s=>s?new Date(s*1e3).toLocaleString("zh-CN"):"-";return o.jsx(Er,{open:e,onOpenChange:n,children:o.jsxs(wr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"人物详情"}),o.jsxs(Xr,{children:["查看 ",t.person_name||t.nickname||t.user_id," 的完整信息"]})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsx(kl,{icon:Lv,label:"人物名称",value:t.person_name}),o.jsx(kl,{icon:Gh,label:"昵称",value:t.nickname}),o.jsx(kl,{icon:lk,label:"用户ID",value:t.user_id,mono:!0}),o.jsx(kl,{icon:lk,label:"人物ID",value:t.person_id,mono:!0}),o.jsx(kl,{label:"平台",value:t.platform}),o.jsx(kl,{label:"状态",value:t.is_known?"已认识":"未认识"})]}),t.name_reason&&o.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[o.jsx(he,{className:"text-xs text-muted-foreground",children:"名称设定原因"}),o.jsx("p",{className:"mt-1 text-sm",children:t.name_reason})]}),t.memory_points&&o.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[o.jsx(he,{className:"text-xs text-muted-foreground",children:"个人印象"}),o.jsx("p",{className:"mt-1 text-sm whitespace-pre-wrap",children:t.memory_points})]}),t.group_nick_name&&t.group_nick_name.length>0&&o.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[o.jsx(he,{className:"text-xs text-muted-foreground",children:"群昵称"}),o.jsx("div",{className:"mt-2 space-y-1",children:t.group_nick_name.map((s,i)=>o.jsxs("div",{className:"text-sm flex items-center gap-2",children:[o.jsx("span",{className:"font-mono text-xs text-muted-foreground",children:s.group_id}),o.jsx("span",{children:"→"}),o.jsx("span",{children:s.group_nick_name})]},i))})]}),o.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[o.jsx(kl,{icon:Mh,label:"认识时间",value:r(t.know_times)}),o.jsx(kl,{icon:Mh,label:"首次记录",value:r(t.know_since)}),o.jsx(kl,{icon:Mh,label:"最后更新",value:r(t.last_know)})]})]}),o.jsx(fs,{children:o.jsx(ue,{onClick:()=>n(!1),children:"关闭"})})]})})}function kl({icon:t,label:e,value:n,mono:r=!1}){return o.jsxs("div",{className:"space-y-1",children:[o.jsxs(he,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[t&&o.jsx(t,{className:"h-3 w-3"}),e]}),o.jsx("div",{className:xe("text-sm",r&&"font-mono",!n&&"text-muted-foreground"),children:n||"-"})]})}function HOe({person:t,open:e,onOpenChange:n,onSuccess:r}){const[s,i]=b.useState({}),[a,l]=b.useState(!1),{toast:c}=Lr();b.useEffect(()=>{t&&i({person_name:t.person_name||"",name_reason:t.name_reason||"",nickname:t.nickname||"",memory_points:t.memory_points||"",is_known:t.is_known})},[t]);const d=async()=>{if(t)try{l(!0),await IOe(t.person_id,s),c({title:"保存成功",description:"人物信息已更新"}),r()}catch(h){c({title:"保存失败",description:h instanceof Error?h.message:"无法更新人物信息",variant:"destructive"})}finally{l(!1)}};return t?o.jsx(Er,{open:e,onOpenChange:n,children:o.jsxs(wr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"编辑人物信息"}),o.jsxs(Xr,{children:["修改 ",t.person_name||t.nickname||t.user_id," 的信息"]})]}),o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"person_name",children:"人物名称"}),o.jsx(Pe,{id:"person_name",value:s.person_name||"",onChange:h=>i({...s,person_name:h.target.value}),placeholder:"为这个人设置一个名称"})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"nickname",children:"昵称"}),o.jsx(Pe,{id:"nickname",value:s.nickname||"",onChange:h=>i({...s,nickname:h.target.value}),placeholder:"昵称"})]})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"name_reason",children:"名称设定原因"}),o.jsx(Nr,{id:"name_reason",value:s.name_reason||"",onChange:h=>i({...s,name_reason:h.target.value}),placeholder:"为什么这样称呼这个人?",rows:2})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"memory_points",children:"个人印象"}),o.jsx(Nr,{id:"memory_points",value:s.memory_points||"",onChange:h=>i({...s,memory_points:h.target.value}),placeholder:"对这个人的印象和记忆点...",rows:4})]}),o.jsxs("div",{className:"flex items-center justify-between rounded-lg border p-3",children:[o.jsxs("div",{children:[o.jsx(he,{htmlFor:"is_known",className:"text-base font-medium",children:"已认识"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:"标记是否已经认识这个人"})]}),o.jsx(Ft,{id:"is_known",checked:s.is_known,onCheckedChange:h=>i({...s,is_known:h})})]})]}),o.jsxs(fs,{children:[o.jsx(ue,{variant:"outline",onClick:()=>n(!1),children:"取消"}),o.jsx(ue,{onClick:d,disabled:a,children:a?"保存中...":"保存"})]})]})}):null}function Ls(t){if(typeof t=="string"||typeof t=="number")return""+t;let e="";if(Array.isArray(t))for(let n=0,r;n{let e;const n=new Set,r=(h,m)=>{const g=typeof h=="function"?h(e):h;if(!Object.is(g,e)){const x=e;e=m??(typeof g!="object"||g===null)?g:Object.assign({},e,g),n.forEach(y=>y(e,x))}},s=()=>e,c={setState:r,getState:s,getInitialState:()=>d,subscribe:h=>(n.add(h),()=>n.delete(h)),destroy:()=>{(QOe?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},d=e=t(r,s,c);return c},VOe=t=>t?iD(t):iD,{useDebugValue:UOe}=oe,{useSyncExternalStoreWithSelector:WOe}=yJ,GOe=t=>t;function tW(t,e=GOe,n){const r=WOe(t.subscribe,t.getState,t.getServerState||t.getInitialState,e,n);return UOe(r),r}const aD=(t,e)=>{const n=VOe(t),r=(s,i=e)=>tW(n,s,i);return Object.assign(r,n),r},XOe=(t,e)=>t?aD(t,e):aD;function ks(t,e){if(Object.is(t,e))return!0;if(typeof t!="object"||t===null||typeof e!="object"||e===null)return!1;if(t instanceof Map&&e instanceof Map){if(t.size!==e.size)return!1;for(const[r,s]of t)if(!Object.is(s,e.get(r)))return!1;return!0}if(t instanceof Set&&e instanceof Set){if(t.size!==e.size)return!1;for(const r of t)if(!e.has(r))return!1;return!0}const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!1;for(const r of n)if(!Object.prototype.hasOwnProperty.call(e,r)||!Object.is(t[r],e[r]))return!1;return!0}var YOe={value:()=>{}};function Zb(){for(var t=0,e=arguments.length,n={},r;t=0&&(r=n.slice(s+1),n=n.slice(0,s)),n&&!e.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}_v.prototype=Zb.prototype={constructor:_v,on:function(t,e){var n=this._,r=KOe(t+"",n),s,i=-1,a=r.length;if(arguments.length<2){for(;++i0)for(var n=new Array(s),r=0,s,i;r=0&&(e=t.slice(0,n))!=="xmlns"&&(t=t.slice(n+1)),lD.hasOwnProperty(e)?{space:lD[e],local:t}:t}function JOe(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===ZO&&e.documentElement.namespaceURI===ZO?e.createElement(t):e.createElementNS(n,t)}}function eje(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function nW(t){var e=Jb(t);return(e.local?eje:JOe)(e)}function tje(){}function KN(t){return t==null?tje:function(){return this.querySelector(t)}}function nje(t){typeof t!="function"&&(t=KN(t));for(var e=this._groups,n=e.length,r=new Array(n),s=0;s=N&&(N=j+1);!(E=S[N])&&++N=0;)(a=r[s])&&(i&&a.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(a,i),i=a);return this}function Cje(t){t||(t=Tje);function e(m,g){return m&&g?t(m.__data__,g.__data__):!m-!g}for(var n=this._groups,r=n.length,s=new Array(r),i=0;ie?1:t>=e?0:NaN}function Eje(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this}function _je(){return Array.from(this)}function Aje(){for(var t=this._groups,e=0,n=t.length;e1?this.each((e==null?$je:typeof e=="function"?Qje:Hje)(t,e,n??"")):mf(this.node(),t)}function mf(t,e){return t.style.getPropertyValue(e)||oW(t).getComputedStyle(t,null).getPropertyValue(e)}function Uje(t){return function(){delete this[t]}}function Wje(t,e){return function(){this[t]=e}}function Gje(t,e){return function(){var n=e.apply(this,arguments);n==null?delete this[t]:this[t]=n}}function Xje(t,e){return arguments.length>1?this.each((e==null?Uje:typeof e=="function"?Gje:Wje)(t,e)):this.node()[t]}function lW(t){return t.trim().split(/^|\s+/)}function ZN(t){return t.classList||new cW(t)}function cW(t){this._node=t,this._names=lW(t.getAttribute("class")||"")}cW.prototype={add:function(t){var e=this._names.indexOf(t);e<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};function uW(t,e){for(var n=ZN(t),r=-1,s=e.length;++r=0&&(n=e.slice(r+1),e=e.slice(0,r)),{type:e,name:n}})}function k6e(t){return function(){var e=this.__on;if(e){for(var n=0,r=-1,s=e.length,i;n()=>t;function JO(t,{sourceEvent:e,subject:n,target:r,identifier:s,active:i,x:a,y:l,dx:c,dy:d,dispatch:h}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:s,enumerable:!0,configurable:!0},active:{value:i,enumerable:!0,configurable:!0},x:{value:a,enumerable:!0,configurable:!0},y:{value:l,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:d,enumerable:!0,configurable:!0},_:{value:h}})}JO.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};function R6e(t){return!t.ctrlKey&&!t.button}function D6e(){return this.parentNode}function P6e(t,e){return e??{x:t.x,y:t.y}}function z6e(){return navigator.maxTouchPoints||"ontouchstart"in this}function I6e(){var t=R6e,e=D6e,n=P6e,r=z6e,s={},i=Zb("start","drag","end"),a=0,l,c,d,h,m=0;function g(T){T.on("mousedown.drag",x).filter(r).on("touchstart.drag",S).on("touchmove.drag",k,M6e).on("touchend.drag touchcancel.drag",j).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function x(T,E){if(!(h||!t.call(this,T,E))){var _=N(this,e.call(this,T,E),T,E,"mouse");_&&(va(T.view).on("mousemove.drag",y,kp).on("mouseup.drag",w,kp),mW(T.view),d5(T),d=!1,l=T.clientX,c=T.clientY,_("start",T))}}function y(T){if(Qh(T),!d){var E=T.clientX-l,_=T.clientY-c;d=E*E+_*_>m}s.mouse("drag",T)}function w(T){va(T.view).on("mousemove.drag mouseup.drag",null),pW(T.view,d),Qh(T),s.mouse("end",T)}function S(T,E){if(t.call(this,T,E)){var _=T.changedTouches,A=e.call(this,T,E),D=_.length,q,B;for(q=0;q=0&&t._call.call(void 0,e),t=t._next;--pf}function cD(){xd=(Dy=Op.now())+ew,pf=m0=0;try{B6e()}finally{pf=0,q6e(),xd=0}}function F6e(){var t=Op.now(),e=t-Dy;e>gW&&(ew-=e,Dy=t)}function q6e(){for(var t,e=Ry,n,r=1/0;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Ry=n);p0=t,ej(r)}function ej(t){if(!pf){m0&&(m0=clearTimeout(m0));var e=t-xd;e>24?(t<1/0&&(m0=setTimeout(cD,t-Op.now()-ew)),n0&&(n0=clearInterval(n0))):(n0||(Dy=Op.now(),n0=setInterval(F6e,gW)),pf=1,xW(cD))}}function uD(t,e,n){var r=new Py;return e=e==null?0:+e,r.restart(s=>{r.stop(),t(s+e)},e,n),r}var $6e=Zb("start","end","cancel","interrupt"),H6e=[],yW=0,dD=1,tj=2,Av=3,hD=4,nj=5,Mv=6;function tw(t,e,n,r,s,i){var a=t.__transition;if(!a)t.__transition={};else if(n in a)return;Q6e(t,n,{name:e,index:r,group:s,on:$6e,tween:H6e,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:yW})}function e7(t,e){var n=oo(t,e);if(n.state>yW)throw new Error("too late; already scheduled");return n}function Ko(t,e){var n=oo(t,e);if(n.state>Av)throw new Error("too late; already running");return n}function oo(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function Q6e(t,e,n){var r=t.__transition,s;r[e]=n,n.timer=vW(i,0,n.time);function i(d){n.state=dD,n.timer.restart(a,n.delay,n.time),n.delay<=d&&a(d-n.delay)}function a(d){var h,m,g,x;if(n.state!==dD)return c();for(h in r)if(x=r[h],x.name===n.name){if(x.state===Av)return uD(a);x.state===hD?(x.state=Mv,x.timer.stop(),x.on.call("interrupt",t,t.__data__,x.index,x.group),delete r[h]):+htj&&r.state=0&&(e=e.slice(0,n)),!e||e==="start"})}function bNe(t,e,n){var r,s,i=yNe(e)?e7:Ko;return function(){var a=i(this,t),l=a.on;l!==r&&(s=(r=l).copy()).on(e,n),a.on=s}}function wNe(t,e){var n=this._id;return arguments.length<2?oo(this.node(),n).on.on(t):this.each(bNe(n,t,e))}function SNe(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}function kNe(){return this.on("end.remove",SNe(this._id))}function ONe(t){var e=this._name,n=this._id;typeof t!="function"&&(t=KN(t));for(var r=this._groups,s=r.length,i=new Array(s),a=0;a()=>t;function XNe(t,{sourceEvent:e,target:n,transform:r,dispatch:s}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:s}})}function zl(t,e,n){this.k=t,this.x=e,this.y=n}zl.prototype={constructor:zl,scale:function(t){return t===1?this:new zl(this.k*t,this.x,this.y)},translate:function(t,e){return t===0&e===0?this:new zl(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var $l=new zl(1,0,0);zl.prototype;function h5(t){t.stopImmediatePropagation()}function r0(t){t.preventDefault(),t.stopImmediatePropagation()}function YNe(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function KNe(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t,t.hasAttribute("viewBox")?(t=t.viewBox.baseVal,[[t.x,t.y],[t.x+t.width,t.y+t.height]]):[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]):[[0,0],[t.clientWidth,t.clientHeight]]}function fD(){return this.__zoom||$l}function ZNe(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function JNe(){return navigator.maxTouchPoints||"ontouchstart"in this}function e7e(t,e,n){var r=t.invertX(e[0][0])-n[0][0],s=t.invertX(e[1][0])-n[1][0],i=t.invertY(e[0][1])-n[0][1],a=t.invertY(e[1][1])-n[1][1];return t.translate(s>r?(r+s)/2:Math.min(0,r)||Math.max(0,s),a>i?(i+a)/2:Math.min(0,i)||Math.max(0,a))}function kW(){var t=YNe,e=KNe,n=e7e,r=ZNe,s=JNe,i=[0,1/0],a=[[-1/0,-1/0],[1/0,1/0]],l=250,c=$J,d=Zb("start","zoom","end"),h,m,g,x=500,y=150,w=0,S=10;function k(I){I.property("__zoom",fD).on("wheel.zoom",D,{passive:!1}).on("mousedown.zoom",q).on("dblclick.zoom",B).filter(s).on("touchstart.zoom",H).on("touchmove.zoom",W).on("touchend.zoom touchcancel.zoom",ee).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}k.transform=function(I,V,L,$){var K=I.selection?I.selection():I;K.property("__zoom",fD),I!==K?E(I,V,L,$):K.interrupt().each(function(){_(this,arguments).event($).start().zoom(null,typeof V=="function"?V.apply(this,arguments):V).end()})},k.scaleBy=function(I,V,L,$){k.scaleTo(I,function(){var K=this.__zoom.k,Y=typeof V=="function"?V.apply(this,arguments):V;return K*Y},L,$)},k.scaleTo=function(I,V,L,$){k.transform(I,function(){var K=e.apply(this,arguments),Y=this.__zoom,R=L==null?T(K):typeof L=="function"?L.apply(this,arguments):L,ie=Y.invert(R),X=typeof V=="function"?V.apply(this,arguments):V;return n(N(j(Y,X),R,ie),K,a)},L,$)},k.translateBy=function(I,V,L,$){k.transform(I,function(){return n(this.__zoom.translate(typeof V=="function"?V.apply(this,arguments):V,typeof L=="function"?L.apply(this,arguments):L),e.apply(this,arguments),a)},null,$)},k.translateTo=function(I,V,L,$,K){k.transform(I,function(){var Y=e.apply(this,arguments),R=this.__zoom,ie=$==null?T(Y):typeof $=="function"?$.apply(this,arguments):$;return n($l.translate(ie[0],ie[1]).scale(R.k).translate(typeof V=="function"?-V.apply(this,arguments):-V,typeof L=="function"?-L.apply(this,arguments):-L),Y,a)},$,K)};function j(I,V){return V=Math.max(i[0],Math.min(i[1],V)),V===I.k?I:new zl(V,I.x,I.y)}function N(I,V,L){var $=V[0]-L[0]*I.k,K=V[1]-L[1]*I.k;return $===I.x&&K===I.y?I:new zl(I.k,$,K)}function T(I){return[(+I[0][0]+ +I[1][0])/2,(+I[0][1]+ +I[1][1])/2]}function E(I,V,L,$){I.on("start.zoom",function(){_(this,arguments).event($).start()}).on("interrupt.zoom end.zoom",function(){_(this,arguments).event($).end()}).tween("zoom",function(){var K=this,Y=arguments,R=_(K,Y).event($),ie=e.apply(K,Y),X=L==null?T(ie):typeof L=="function"?L.apply(K,Y):L,z=Math.max(ie[1][0]-ie[0][0],ie[1][1]-ie[0][1]),U=K.__zoom,te=typeof V=="function"?V.apply(K,Y):V,ne=c(U.invert(X).concat(z/U.k),te.invert(X).concat(z/te.k));return function(G){if(G===1)G=te;else{var se=ne(G),re=z/se[2];G=new zl(re,X[0]-se[0]*re,X[1]-se[1]*re)}R.zoom(null,G)}})}function _(I,V,L){return!L&&I.__zooming||new A(I,V)}function A(I,V){this.that=I,this.args=V,this.active=0,this.sourceEvent=null,this.extent=e.apply(I,V),this.taps=0}A.prototype={event:function(I){return I&&(this.sourceEvent=I),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(I,V){return this.mouse&&I!=="mouse"&&(this.mouse[1]=V.invert(this.mouse[0])),this.touch0&&I!=="touch"&&(this.touch0[1]=V.invert(this.touch0[0])),this.touch1&&I!=="touch"&&(this.touch1[1]=V.invert(this.touch1[0])),this.that.__zoom=V,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(I){var V=va(this.that).datum();d.call(I,this.that,new XNe(I,{sourceEvent:this.sourceEvent,target:k,transform:this.that.__zoom,dispatch:d}),V)}};function D(I,...V){if(!t.apply(this,arguments))return;var L=_(this,V).event(I),$=this.__zoom,K=Math.max(i[0],Math.min(i[1],$.k*Math.pow(2,r.apply(this,arguments)))),Y=Qa(I);if(L.wheel)(L.mouse[0][0]!==Y[0]||L.mouse[0][1]!==Y[1])&&(L.mouse[1]=$.invert(L.mouse[0]=Y)),clearTimeout(L.wheel);else{if($.k===K)return;L.mouse=[Y,$.invert(Y)],Rv(this),L.start()}r0(I),L.wheel=setTimeout(R,y),L.zoom("mouse",n(N(j($,K),L.mouse[0],L.mouse[1]),L.extent,a));function R(){L.wheel=null,L.end()}}function q(I,...V){if(g||!t.apply(this,arguments))return;var L=I.currentTarget,$=_(this,V,!0).event(I),K=va(I.view).on("mousemove.zoom",X,!0).on("mouseup.zoom",z,!0),Y=Qa(I,L),R=I.clientX,ie=I.clientY;mW(I.view),h5(I),$.mouse=[Y,this.__zoom.invert(Y)],Rv(this),$.start();function X(U){if(r0(U),!$.moved){var te=U.clientX-R,ne=U.clientY-ie;$.moved=te*te+ne*ne>w}$.event(U).zoom("mouse",n(N($.that.__zoom,$.mouse[0]=Qa(U,L),$.mouse[1]),$.extent,a))}function z(U){K.on("mousemove.zoom mouseup.zoom",null),pW(U.view,$.moved),r0(U),$.event(U).end()}}function B(I,...V){if(t.apply(this,arguments)){var L=this.__zoom,$=Qa(I.changedTouches?I.changedTouches[0]:I,this),K=L.invert($),Y=L.k*(I.shiftKey?.5:2),R=n(N(j(L,Y),$,K),e.apply(this,V),a);r0(I),l>0?va(this).transition().duration(l).call(E,R,$,I):va(this).call(k.transform,R,$,I)}}function H(I,...V){if(t.apply(this,arguments)){var L=I.touches,$=L.length,K=_(this,V,I.changedTouches.length===$).event(I),Y,R,ie,X;for(h5(I),R=0;R<$;++R)ie=L[R],X=Qa(ie,this),X=[X,this.__zoom.invert(X),ie.identifier],K.touch0?!K.touch1&&K.touch0[2]!==X[2]&&(K.touch1=X,K.taps=0):(K.touch0=X,Y=!0,K.taps=1+!!h);h&&(h=clearTimeout(h)),Y&&(K.taps<2&&(m=X[0],h=setTimeout(function(){h=null},x)),Rv(this),K.start())}}function W(I,...V){if(this.__zooming){var L=_(this,V).event(I),$=I.changedTouches,K=$.length,Y,R,ie,X;for(r0(I),Y=0;Y"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:t=>`Node type "${t}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:t=>`The old edge with id=${t} does not exist.`,error009:t=>`Marker type "${t}" doesn't exist.`,error008:(t,e)=>`Couldn't create edge for ${t?"target":"source"} handle id: "${t?e.targetHandle:e.sourceHandle}", edge id: ${e.id}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:t=>`Edge type "${t}" not found. Using fallback type "default".`,error012:t=>`Node with id "${t}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`},OW=Yl.error001();function gr(t,e){const n=b.useContext(nw);if(n===null)throw new Error(OW);return tW(n,t,e)}const gs=()=>{const t=b.useContext(nw);if(t===null)throw new Error(OW);return b.useMemo(()=>({getState:t.getState,setState:t.setState,subscribe:t.subscribe,destroy:t.destroy}),[t])},n7e=t=>t.userSelectionActive?"none":"all";function rw({position:t,children:e,className:n,style:r,...s}){const i=gr(n7e),a=`${t}`.split("-");return oe.createElement("div",{className:Ls(["react-flow__panel",n,...a]),style:{...r,pointerEvents:i},...s},e)}function r7e({proOptions:t,position:e="bottom-right"}){return t?.hideAttribution?null:oe.createElement(rw,{position:e,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://reactflow.dev/pro"},oe.createElement("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution"},"React Flow"))}const s7e=({x:t,y:e,label:n,labelStyle:r={},labelShowBg:s=!0,labelBgStyle:i={},labelBgPadding:a=[2,4],labelBgBorderRadius:l=2,children:c,className:d,...h})=>{const m=b.useRef(null),[g,x]=b.useState({x:0,y:0,width:0,height:0}),y=Ls(["react-flow__edge-textwrapper",d]);return b.useEffect(()=>{if(m.current){const w=m.current.getBBox();x({x:w.x,y:w.y,width:w.width,height:w.height})}},[n]),typeof n>"u"||!n?null:oe.createElement("g",{transform:`translate(${t-g.width/2} ${e-g.height/2})`,className:y,visibility:g.width?"visible":"hidden",...h},s&&oe.createElement("rect",{width:g.width+2*a[0],x:-a[0],y:-a[1],height:g.height+2*a[1],className:"react-flow__edge-textbg",style:i,rx:l,ry:l}),oe.createElement("text",{className:"react-flow__edge-text",y:g.height/2,dy:"0.3em",ref:m,style:r},n),c)};var i7e=b.memo(s7e);const n7=t=>({width:t.offsetWidth,height:t.offsetHeight}),gf=(t,e=0,n=1)=>Math.min(Math.max(t,e),n),r7=(t={x:0,y:0},e)=>({x:gf(t.x,e[0][0],e[1][0]),y:gf(t.y,e[0][1],e[1][1])}),mD=(t,e,n)=>tn?-gf(Math.abs(t-n),1,50)/50:0,jW=(t,e)=>{const n=mD(t.x,35,e.width-35)*20,r=mD(t.y,35,e.height-35)*20;return[n,r]},NW=t=>t.getRootNode?.()||window?.document,CW=(t,e)=>({x:Math.min(t.x,e.x),y:Math.min(t.y,e.y),x2:Math.max(t.x2,e.x2),y2:Math.max(t.y2,e.y2)}),jp=({x:t,y:e,width:n,height:r})=>({x:t,y:e,x2:t+n,y2:e+r}),TW=({x:t,y:e,x2:n,y2:r})=>({x:t,y:e,width:n-t,height:r-e}),pD=t=>({...t.positionAbsolute||{x:0,y:0},width:t.width||0,height:t.height||0}),a7e=(t,e)=>TW(CW(jp(t),jp(e))),rj=(t,e)=>{const n=Math.max(0,Math.min(t.x+t.width,e.x+e.width)-Math.max(t.x,e.x)),r=Math.max(0,Math.min(t.y+t.height,e.y+e.height)-Math.max(t.y,e.y));return Math.ceil(n*r)},o7e=t=>Ca(t.width)&&Ca(t.height)&&Ca(t.x)&&Ca(t.y),Ca=t=>!isNaN(t)&&isFinite(t),$r=Symbol.for("internals"),EW=["Enter"," ","Escape"],l7e=(t,e)=>{},c7e=t=>"nativeEvent"in t;function sj(t){const n=(c7e(t)?t.nativeEvent:t).composedPath?.()?.[0]||t.target;return["INPUT","SELECT","TEXTAREA"].includes(n?.nodeName)||n?.hasAttribute("contenteditable")||!!n?.closest(".nokey")}const _W=t=>"clientX"in t,Wc=(t,e)=>{const n=_W(t),r=n?t.clientX:t.touches?.[0].clientX,s=n?t.clientY:t.touches?.[0].clientY;return{x:r-(e?.left??0),y:s-(e?.top??0)}},zy=()=>typeof navigator<"u"&&navigator?.userAgent?.indexOf("Mac")>=0,kg=({id:t,path:e,labelX:n,labelY:r,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d,style:h,markerEnd:m,markerStart:g,interactionWidth:x=20})=>oe.createElement(oe.Fragment,null,oe.createElement("path",{id:t,style:h,d:e,fill:"none",className:"react-flow__edge-path",markerEnd:m,markerStart:g}),x&&oe.createElement("path",{d:e,fill:"none",strokeOpacity:0,strokeWidth:x,className:"react-flow__edge-interaction"}),s&&Ca(n)&&Ca(r)?oe.createElement(i7e,{x:n,y:r,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d}):null);kg.displayName="BaseEdge";function s0(t,e,n){return n===void 0?n:r=>{const s=e().edges.find(i=>i.id===t);s&&n(r,{...s})}}function AW({sourceX:t,sourceY:e,targetX:n,targetY:r}){const s=Math.abs(n-t)/2,i=n{const[S,k,j]=RW({sourceX:t,sourceY:e,sourcePosition:s,targetX:n,targetY:r,targetPosition:i});return oe.createElement(kg,{path:S,labelX:k,labelY:j,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:m,style:g,markerEnd:x,markerStart:y,interactionWidth:w})});s7.displayName="SimpleBezierEdge";const xD={[kt.Left]:{x:-1,y:0},[kt.Right]:{x:1,y:0},[kt.Top]:{x:0,y:-1},[kt.Bottom]:{x:0,y:1}},u7e=({source:t,sourcePosition:e=kt.Bottom,target:n})=>e===kt.Left||e===kt.Right?t.xMath.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2));function d7e({source:t,sourcePosition:e=kt.Bottom,target:n,targetPosition:r=kt.Top,center:s,offset:i}){const a=xD[e],l=xD[r],c={x:t.x+a.x*i,y:t.y+a.y*i},d={x:n.x+l.x*i,y:n.y+l.y*i},h=u7e({source:c,sourcePosition:e,target:d}),m=h.x!==0?"x":"y",g=h[m];let x=[],y,w;const S={x:0,y:0},k={x:0,y:0},[j,N,T,E]=AW({sourceX:t.x,sourceY:t.y,targetX:n.x,targetY:n.y});if(a[m]*l[m]===-1){y=s.x??j,w=s.y??N;const A=[{x:y,y:c.y},{x:y,y:d.y}],D=[{x:c.x,y:w},{x:d.x,y:w}];a[m]===g?x=m==="x"?A:D:x=m==="x"?D:A}else{const A=[{x:c.x,y:d.y}],D=[{x:d.x,y:c.y}];if(m==="x"?x=a.x===g?D:A:x=a.y===g?A:D,e===r){const ee=Math.abs(t[m]-n[m]);if(ee<=i){const I=Math.min(i-1,i-ee);a[m]===g?S[m]=(c[m]>t[m]?-1:1)*I:k[m]=(d[m]>n[m]?-1:1)*I}}if(e!==r){const ee=m==="x"?"y":"x",I=a[m]===l[ee],V=c[ee]>d[ee],L=c[ee]=W?(y=(q.x+B.x)/2,w=x[0].y):(y=x[0].x,w=(q.y+B.y)/2)}return[[t,{x:c.x+S.x,y:c.y+S.y},...x,{x:d.x+k.x,y:d.y+k.y},n],y,w,T,E]}function h7e(t,e,n,r){const s=Math.min(vD(t,e)/2,vD(e,n)/2,r),{x:i,y:a}=e;if(t.x===i&&i===n.x||t.y===a&&a===n.y)return`L${i} ${a}`;if(t.y===a){const d=t.x{let N="";return j>0&&j{const[k,j,N]=ij({sourceX:t,sourceY:e,sourcePosition:m,targetX:n,targetY:r,targetPosition:g,borderRadius:w?.borderRadius,offset:w?.offset});return oe.createElement(kg,{path:k,labelX:j,labelY:N,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d,style:h,markerEnd:x,markerStart:y,interactionWidth:S})});sw.displayName="SmoothStepEdge";const i7=b.memo(t=>oe.createElement(sw,{...t,pathOptions:b.useMemo(()=>({borderRadius:0,offset:t.pathOptions?.offset}),[t.pathOptions?.offset])}));i7.displayName="StepEdge";function f7e({sourceX:t,sourceY:e,targetX:n,targetY:r}){const[s,i,a,l]=AW({sourceX:t,sourceY:e,targetX:n,targetY:r});return[`M ${t},${e}L ${n},${r}`,s,i,a,l]}const a7=b.memo(({sourceX:t,sourceY:e,targetX:n,targetY:r,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d,style:h,markerEnd:m,markerStart:g,interactionWidth:x})=>{const[y,w,S]=f7e({sourceX:t,sourceY:e,targetX:n,targetY:r});return oe.createElement(kg,{path:y,labelX:w,labelY:S,label:s,labelStyle:i,labelShowBg:a,labelBgStyle:l,labelBgPadding:c,labelBgBorderRadius:d,style:h,markerEnd:m,markerStart:g,interactionWidth:x})});a7.displayName="StraightEdge";function W1(t,e){return t>=0?.5*t:e*25*Math.sqrt(-t)}function yD({pos:t,x1:e,y1:n,x2:r,y2:s,c:i}){switch(t){case kt.Left:return[e-W1(e-r,i),n];case kt.Right:return[e+W1(r-e,i),n];case kt.Top:return[e,n-W1(n-s,i)];case kt.Bottom:return[e,n+W1(s-n,i)]}}function DW({sourceX:t,sourceY:e,sourcePosition:n=kt.Bottom,targetX:r,targetY:s,targetPosition:i=kt.Top,curvature:a=.25}){const[l,c]=yD({pos:n,x1:t,y1:e,x2:r,y2:s,c:a}),[d,h]=yD({pos:i,x1:r,y1:s,x2:t,y2:e,c:a}),[m,g,x,y]=MW({sourceX:t,sourceY:e,targetX:r,targetY:s,sourceControlX:l,sourceControlY:c,targetControlX:d,targetControlY:h});return[`M${t},${e} C${l},${c} ${d},${h} ${r},${s}`,m,g,x,y]}const Ly=b.memo(({sourceX:t,sourceY:e,targetX:n,targetY:r,sourcePosition:s=kt.Bottom,targetPosition:i=kt.Top,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:m,style:g,markerEnd:x,markerStart:y,pathOptions:w,interactionWidth:S})=>{const[k,j,N]=DW({sourceX:t,sourceY:e,sourcePosition:s,targetX:n,targetY:r,targetPosition:i,curvature:w?.curvature});return oe.createElement(kg,{path:k,labelX:j,labelY:N,label:a,labelStyle:l,labelShowBg:c,labelBgStyle:d,labelBgPadding:h,labelBgBorderRadius:m,style:g,markerEnd:x,markerStart:y,interactionWidth:S})});Ly.displayName="BezierEdge";const o7=b.createContext(null),m7e=o7.Provider;o7.Consumer;const p7e=()=>b.useContext(o7),g7e=t=>"id"in t&&"source"in t&&"target"in t,x7e=({source:t,sourceHandle:e,target:n,targetHandle:r})=>`reactflow__edge-${t}${e||""}-${n}${r||""}`,aj=(t,e)=>typeof t>"u"?"":typeof t=="string"?t:`${e?`${e}__`:""}${Object.keys(t).sort().map(r=>`${r}=${t[r]}`).join("&")}`,v7e=(t,e)=>e.some(n=>n.source===t.source&&n.target===t.target&&(n.sourceHandle===t.sourceHandle||!n.sourceHandle&&!t.sourceHandle)&&(n.targetHandle===t.targetHandle||!n.targetHandle&&!t.targetHandle)),y7e=(t,e)=>{if(!t.source||!t.target)return e;let n;return g7e(t)?n={...t}:n={...t,id:x7e(t)},v7e(n,e)?e:e.concat(n)},oj=({x:t,y:e},[n,r,s],i,[a,l])=>{const c={x:(t-n)/s,y:(e-r)/s};return i?{x:a*Math.round(c.x/a),y:l*Math.round(c.y/l)}:c},PW=({x:t,y:e},[n,r,s])=>({x:t*s+n,y:e*s+r}),id=(t,e=[0,0])=>{if(!t)return{x:0,y:0,positionAbsolute:{x:0,y:0}};const n=(t.width??0)*e[0],r=(t.height??0)*e[1],s={x:t.position.x-n,y:t.position.y-r};return{...s,positionAbsolute:t.positionAbsolute?{x:t.positionAbsolute.x-n,y:t.positionAbsolute.y-r}:s}},iw=(t,e=[0,0])=>{if(t.length===0)return{x:0,y:0,width:0,height:0};const n=t.reduce((r,s)=>{const{x:i,y:a}=id(s,e).positionAbsolute;return CW(r,jp({x:i,y:a,width:s.width||0,height:s.height||0}))},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return TW(n)},zW=(t,e,[n,r,s]=[0,0,1],i=!1,a=!1,l=[0,0])=>{const c={x:(e.x-n)/s,y:(e.y-r)/s,width:e.width/s,height:e.height/s},d=[];return t.forEach(h=>{const{width:m,height:g,selectable:x=!0,hidden:y=!1}=h;if(a&&!x||y)return!1;const{positionAbsolute:w}=id(h,l),S={x:w.x,y:w.y,width:m||0,height:g||0},k=rj(c,S),j=typeof m>"u"||typeof g>"u"||m===null||g===null,N=i&&k>0,T=(m||0)*(g||0);(j||N||k>=T||h.dragging)&&d.push(h)}),d},IW=(t,e)=>{const n=t.map(r=>r.id);return e.filter(r=>n.includes(r.source)||n.includes(r.target))},LW=(t,e,n,r,s,i=.1)=>{const a=e/(t.width*(1+i)),l=n/(t.height*(1+i)),c=Math.min(a,l),d=gf(c,r,s),h=t.x+t.width/2,m=t.y+t.height/2,g=e/2-h*d,x=n/2-m*d;return{x:g,y:x,zoom:d}},qu=(t,e=0)=>t.transition().duration(e);function bD(t,e,n,r){return(e[n]||[]).reduce((s,i)=>(`${t.id}-${i.id}-${n}`!==r&&s.push({id:i.id||null,type:n,nodeId:t.id,x:(t.positionAbsolute?.x??0)+i.x+i.width/2,y:(t.positionAbsolute?.y??0)+i.y+i.height/2}),s),[])}function b7e(t,e,n,r,s,i){const{x:a,y:l}=Wc(t),d=e.elementsFromPoint(a,l).find(y=>y.classList.contains("react-flow__handle"));if(d){const y=d.getAttribute("data-nodeid");if(y){const w=l7(void 0,d),S=d.getAttribute("data-handleid"),k=i({nodeId:y,id:S,type:w});if(k){const j=s.find(N=>N.nodeId===y&&N.type===w&&N.id===S);return{handle:{id:S,type:w,nodeId:y,x:j?.x||n.x,y:j?.y||n.y},validHandleResult:k}}}}let h=[],m=1/0;if(s.forEach(y=>{const w=Math.sqrt((y.x-n.x)**2+(y.y-n.y)**2);if(w<=r){const S=i(y);w<=m&&(wy.isValid),x=h.some(({handle:y})=>y.type==="target");return h.find(({handle:y,validHandleResult:w})=>x?y.type==="target":g?w.isValid:!0)||h[0]}const w7e={source:null,target:null,sourceHandle:null,targetHandle:null},BW=()=>({handleDomNode:null,isValid:!1,connection:w7e,endHandle:null});function FW(t,e,n,r,s,i,a){const l=s==="target",c=a.querySelector(`.react-flow__handle[data-id="${t?.nodeId}-${t?.id}-${t?.type}"]`),d={...BW(),handleDomNode:c};if(c){const h=l7(void 0,c),m=c.getAttribute("data-nodeid"),g=c.getAttribute("data-handleid"),x=c.classList.contains("connectable"),y=c.classList.contains("connectableend"),w={source:l?m:n,sourceHandle:l?g:r,target:l?n:m,targetHandle:l?r:g};d.connection=w,x&&y&&(e===vd.Strict?l&&h==="source"||!l&&h==="target":m!==n||g!==r)&&(d.endHandle={nodeId:m,handleId:g,type:h},d.isValid=i(w))}return d}function S7e({nodes:t,nodeId:e,handleId:n,handleType:r}){return t.reduce((s,i)=>{if(i[$r]){const{handleBounds:a}=i[$r];let l=[],c=[];a&&(l=bD(i,a,"source",`${e}-${n}-${r}`),c=bD(i,a,"target",`${e}-${n}-${r}`)),s.push(...l,...c)}return s},[])}function l7(t,e){return t||(e?.classList.contains("target")?"target":e?.classList.contains("source")?"source":null)}function f5(t){t?.classList.remove("valid","connecting","react-flow__handle-valid","react-flow__handle-connecting")}function k7e(t,e){let n=null;return e?n="valid":t&&!e&&(n="invalid"),n}function qW({event:t,handleId:e,nodeId:n,onConnect:r,isTarget:s,getState:i,setState:a,isValidConnection:l,edgeUpdaterType:c,onReconnectEnd:d}){const h=NW(t.target),{connectionMode:m,domNode:g,autoPanOnConnect:x,connectionRadius:y,onConnectStart:w,panBy:S,getNodes:k,cancelConnection:j}=i();let N=0,T;const{x:E,y:_}=Wc(t),A=h?.elementFromPoint(E,_),D=l7(c,A),q=g?.getBoundingClientRect();if(!q||!D)return;let B,H=Wc(t,q),W=!1,ee=null,I=!1,V=null;const L=S7e({nodes:k(),nodeId:n,handleId:e,handleType:D}),$=()=>{if(!x)return;const[R,ie]=jW(H,q);S({x:R,y:ie}),N=requestAnimationFrame($)};a({connectionPosition:H,connectionStatus:null,connectionNodeId:n,connectionHandleId:e,connectionHandleType:D,connectionStartHandle:{nodeId:n,handleId:e,type:D},connectionEndHandle:null}),w?.(t,{nodeId:n,handleId:e,handleType:D});function K(R){const{transform:ie}=i();H=Wc(R,q);const{handle:X,validHandleResult:z}=b7e(R,h,oj(H,ie,!1,[1,1]),y,L,U=>FW(U,m,n,e,s?"target":"source",l,h));if(T=X,W||($(),W=!0),V=z.handleDomNode,ee=z.connection,I=z.isValid,a({connectionPosition:T&&I?PW({x:T.x,y:T.y},ie):H,connectionStatus:k7e(!!T,I),connectionEndHandle:z.endHandle}),!T&&!I&&!V)return f5(B);ee.source!==ee.target&&V&&(f5(B),B=V,V.classList.add("connecting","react-flow__handle-connecting"),V.classList.toggle("valid",I),V.classList.toggle("react-flow__handle-valid",I))}function Y(R){(T||V)&&ee&&I&&r?.(ee),i().onConnectEnd?.(R),c&&d?.(R),f5(B),j(),cancelAnimationFrame(N),W=!1,I=!1,ee=null,V=null,h.removeEventListener("mousemove",K),h.removeEventListener("mouseup",Y),h.removeEventListener("touchmove",K),h.removeEventListener("touchend",Y)}h.addEventListener("mousemove",K),h.addEventListener("mouseup",Y),h.addEventListener("touchmove",K),h.addEventListener("touchend",Y)}const wD=()=>!0,O7e=t=>({connectionStartHandle:t.connectionStartHandle,connectOnClick:t.connectOnClick,noPanClassName:t.noPanClassName}),j7e=(t,e,n)=>r=>{const{connectionStartHandle:s,connectionEndHandle:i,connectionClickStartHandle:a}=r;return{connecting:s?.nodeId===t&&s?.handleId===e&&s?.type===n||i?.nodeId===t&&i?.handleId===e&&i?.type===n,clickConnecting:a?.nodeId===t&&a?.handleId===e&&a?.type===n}},$W=b.forwardRef(({type:t="source",position:e=kt.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:s=!0,isConnectableEnd:i=!0,id:a,onConnect:l,children:c,className:d,onMouseDown:h,onTouchStart:m,...g},x)=>{const y=a||null,w=t==="target",S=gs(),k=p7e(),{connectOnClick:j,noPanClassName:N}=gr(O7e,ks),{connecting:T,clickConnecting:E}=gr(j7e(k,y,t),ks);k||S.getState().onError?.("010",Yl.error010());const _=q=>{const{defaultEdgeOptions:B,onConnect:H,hasDefaultEdges:W}=S.getState(),ee={...B,...q};if(W){const{edges:I,setEdges:V}=S.getState();V(y7e(ee,I))}H?.(ee),l?.(ee)},A=q=>{if(!k)return;const B=_W(q);s&&(B&&q.button===0||!B)&&qW({event:q,handleId:y,nodeId:k,onConnect:_,isTarget:w,getState:S.getState,setState:S.setState,isValidConnection:n||S.getState().isValidConnection||wD}),B?h?.(q):m?.(q)},D=q=>{const{onClickConnectStart:B,onClickConnectEnd:H,connectionClickStartHandle:W,connectionMode:ee,isValidConnection:I}=S.getState();if(!k||!W&&!s)return;if(!W){B?.(q,{nodeId:k,handleId:y,handleType:t}),S.setState({connectionClickStartHandle:{nodeId:k,type:t,handleId:y}});return}const V=NW(q.target),L=n||I||wD,{connection:$,isValid:K}=FW({nodeId:k,id:y,type:t},ee,W.nodeId,W.handleId||null,W.type,L,V);K&&_($),H?.(q),S.setState({connectionClickStartHandle:null})};return oe.createElement("div",{"data-handleid":y,"data-nodeid":k,"data-handlepos":e,"data-id":`${k}-${y}-${t}`,className:Ls(["react-flow__handle",`react-flow__handle-${e}`,"nodrag",N,d,{source:!w,target:w,connectable:r,connectablestart:s,connectableend:i,connecting:E,connectionindicator:r&&(s&&!T||i&&T)}]),onMouseDown:A,onTouchStart:A,onClick:j?D:void 0,ref:x,...g},c)});$W.displayName="Handle";var au=b.memo($W);const HW=({data:t,isConnectable:e,targetPosition:n=kt.Top,sourcePosition:r=kt.Bottom})=>oe.createElement(oe.Fragment,null,oe.createElement(au,{type:"target",position:n,isConnectable:e}),t?.label,oe.createElement(au,{type:"source",position:r,isConnectable:e}));HW.displayName="DefaultNode";var lj=b.memo(HW);const QW=({data:t,isConnectable:e,sourcePosition:n=kt.Bottom})=>oe.createElement(oe.Fragment,null,t?.label,oe.createElement(au,{type:"source",position:n,isConnectable:e}));QW.displayName="InputNode";var VW=b.memo(QW);const UW=({data:t,isConnectable:e,targetPosition:n=kt.Top})=>oe.createElement(oe.Fragment,null,oe.createElement(au,{type:"target",position:n,isConnectable:e}),t?.label);UW.displayName="OutputNode";var WW=b.memo(UW);const c7=()=>null;c7.displayName="GroupNode";const N7e=t=>({selectedNodes:t.getNodes().filter(e=>e.selected),selectedEdges:t.edges.filter(e=>e.selected).map(e=>({...e}))}),G1=t=>t.id;function C7e(t,e){return ks(t.selectedNodes.map(G1),e.selectedNodes.map(G1))&&ks(t.selectedEdges.map(G1),e.selectedEdges.map(G1))}const GW=b.memo(({onSelectionChange:t})=>{const e=gs(),{selectedNodes:n,selectedEdges:r}=gr(N7e,C7e);return b.useEffect(()=>{const s={nodes:n,edges:r};t?.(s),e.getState().onSelectionChange.forEach(i=>i(s))},[n,r,t]),null});GW.displayName="SelectionListener";const T7e=t=>!!t.onSelectionChange;function E7e({onSelectionChange:t}){const e=gr(T7e);return t||e?oe.createElement(GW,{onSelectionChange:t}):null}const _7e=t=>({setNodes:t.setNodes,setEdges:t.setEdges,setDefaultNodesAndEdges:t.setDefaultNodesAndEdges,setMinZoom:t.setMinZoom,setMaxZoom:t.setMaxZoom,setTranslateExtent:t.setTranslateExtent,setNodeExtent:t.setNodeExtent,reset:t.reset});function hh(t,e){b.useEffect(()=>{typeof t<"u"&&e(t)},[t])}function on(t,e,n){b.useEffect(()=>{typeof e<"u"&&n({[t]:e})},[e])}const A7e=({nodes:t,edges:e,defaultNodes:n,defaultEdges:r,onConnect:s,onConnectStart:i,onConnectEnd:a,onClickConnectStart:l,onClickConnectEnd:c,nodesDraggable:d,nodesConnectable:h,nodesFocusable:m,edgesFocusable:g,edgesUpdatable:x,elevateNodesOnSelect:y,minZoom:w,maxZoom:S,nodeExtent:k,onNodesChange:j,onEdgesChange:N,elementsSelectable:T,connectionMode:E,snapGrid:_,snapToGrid:A,translateExtent:D,connectOnClick:q,defaultEdgeOptions:B,fitView:H,fitViewOptions:W,onNodesDelete:ee,onEdgesDelete:I,onNodeDrag:V,onNodeDragStart:L,onNodeDragStop:$,onSelectionDrag:K,onSelectionDragStart:Y,onSelectionDragStop:R,noPanClassName:ie,nodeOrigin:X,rfId:z,autoPanOnConnect:U,autoPanOnNodeDrag:te,onError:ne,connectionRadius:G,isValidConnection:se,nodeDragThreshold:re})=>{const{setNodes:ae,setEdges:_e,setDefaultNodesAndEdges:Be,setMinZoom:Ye,setMaxZoom:Je,setTranslateExtent:Oe,setNodeExtent:Ve,reset:Ue}=gr(_7e,ks),$e=gs();return b.useEffect(()=>{const jt=r?.map(vt=>({...vt,...B}));return Be(n,jt),()=>{Ue()}},[]),on("defaultEdgeOptions",B,$e.setState),on("connectionMode",E,$e.setState),on("onConnect",s,$e.setState),on("onConnectStart",i,$e.setState),on("onConnectEnd",a,$e.setState),on("onClickConnectStart",l,$e.setState),on("onClickConnectEnd",c,$e.setState),on("nodesDraggable",d,$e.setState),on("nodesConnectable",h,$e.setState),on("nodesFocusable",m,$e.setState),on("edgesFocusable",g,$e.setState),on("edgesUpdatable",x,$e.setState),on("elementsSelectable",T,$e.setState),on("elevateNodesOnSelect",y,$e.setState),on("snapToGrid",A,$e.setState),on("snapGrid",_,$e.setState),on("onNodesChange",j,$e.setState),on("onEdgesChange",N,$e.setState),on("connectOnClick",q,$e.setState),on("fitViewOnInit",H,$e.setState),on("fitViewOnInitOptions",W,$e.setState),on("onNodesDelete",ee,$e.setState),on("onEdgesDelete",I,$e.setState),on("onNodeDrag",V,$e.setState),on("onNodeDragStart",L,$e.setState),on("onNodeDragStop",$,$e.setState),on("onSelectionDrag",K,$e.setState),on("onSelectionDragStart",Y,$e.setState),on("onSelectionDragStop",R,$e.setState),on("noPanClassName",ie,$e.setState),on("nodeOrigin",X,$e.setState),on("rfId",z,$e.setState),on("autoPanOnConnect",U,$e.setState),on("autoPanOnNodeDrag",te,$e.setState),on("onError",ne,$e.setState),on("connectionRadius",G,$e.setState),on("isValidConnection",se,$e.setState),on("nodeDragThreshold",re,$e.setState),hh(t,ae),hh(e,_e),hh(w,Ye),hh(S,Je),hh(D,Oe),hh(k,Ve),null},SD={display:"none"},M7e={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},XW="react-flow__node-desc",YW="react-flow__edge-desc",R7e="react-flow__aria-live",D7e=t=>t.ariaLiveMessage;function P7e({rfId:t}){const e=gr(D7e);return oe.createElement("div",{id:`${R7e}-${t}`,"aria-live":"assertive","aria-atomic":"true",style:M7e},e)}function z7e({rfId:t,disableKeyboardA11y:e}){return oe.createElement(oe.Fragment,null,oe.createElement("div",{id:`${XW}-${t}`,style:SD},"Press enter or space to select a node.",!e&&"You can then use the arrow keys to move the node around."," Press delete to remove it and escape to cancel."," "),oe.createElement("div",{id:`${YW}-${t}`,style:SD},"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."),!e&&oe.createElement(P7e,{rfId:t}))}var Cp=(t=null,e={actInsideInputWithModifier:!0})=>{const[n,r]=b.useState(!1),s=b.useRef(!1),i=b.useRef(new Set([])),[a,l]=b.useMemo(()=>{if(t!==null){const d=(Array.isArray(t)?t:[t]).filter(m=>typeof m=="string").map(m=>m.split("+")),h=d.reduce((m,g)=>m.concat(...g),[]);return[d,h]}return[[],[]]},[t]);return b.useEffect(()=>{const c=typeof document<"u"?document:null,d=e?.target||c;if(t!==null){const h=x=>{if(s.current=x.ctrlKey||x.metaKey||x.shiftKey,(!s.current||s.current&&!e.actInsideInputWithModifier)&&sj(x))return!1;const w=OD(x.code,l);i.current.add(x[w]),kD(a,i.current,!1)&&(x.preventDefault(),r(!0))},m=x=>{if((!s.current||s.current&&!e.actInsideInputWithModifier)&&sj(x))return!1;const w=OD(x.code,l);kD(a,i.current,!0)?(r(!1),i.current.clear()):i.current.delete(x[w]),x.key==="Meta"&&i.current.clear(),s.current=!1},g=()=>{i.current.clear(),r(!1)};return d?.addEventListener("keydown",h),d?.addEventListener("keyup",m),window.addEventListener("blur",g),()=>{d?.removeEventListener("keydown",h),d?.removeEventListener("keyup",m),window.removeEventListener("blur",g)}}},[t,r]),n};function kD(t,e,n){return t.filter(r=>n||r.length===e.size).some(r=>r.every(s=>e.has(s)))}function OD(t,e){return e.includes(t)?"code":"key"}function KW(t,e,n,r){const s=t.parentNode||t.parentId;if(!s)return n;const i=e.get(s),a=id(i,r);return KW(i,e,{x:(n.x??0)+a.x,y:(n.y??0)+a.y,z:(i[$r]?.z??0)>(n.z??0)?i[$r]?.z??0:n.z??0},r)}function ZW(t,e,n){t.forEach(r=>{const s=r.parentNode||r.parentId;if(s&&!t.has(s))throw new Error(`Parent node ${s} not found`);if(s||n?.[r.id]){const{x:i,y:a,z:l}=KW(r,t,{...r.position,z:r[$r]?.z??0},e);r.positionAbsolute={x:i,y:a},r[$r].z=l,n?.[r.id]&&(r[$r].isParent=!0)}})}function m5(t,e,n,r){const s=new Map,i={},a=r?1e3:0;return t.forEach(l=>{const c=(Ca(l.zIndex)?l.zIndex:0)+(l.selected?a:0),d=e.get(l.id),h={...l,positionAbsolute:{x:l.position.x,y:l.position.y}},m=l.parentNode||l.parentId;m&&(i[m]=!0);const g=d?.type&&d?.type!==l.type;Object.defineProperty(h,$r,{enumerable:!1,value:{handleBounds:g?void 0:d?.[$r]?.handleBounds,z:c}}),s.set(l.id,h)}),ZW(s,n,i),s}function JW(t,e={}){const{getNodes:n,width:r,height:s,minZoom:i,maxZoom:a,d3Zoom:l,d3Selection:c,fitViewOnInitDone:d,fitViewOnInit:h,nodeOrigin:m}=t(),g=e.initial&&!d&&h;if(l&&c&&(g||!e.initial)){const y=n().filter(S=>{const k=e.includeHiddenNodes?S.width&&S.height:!S.hidden;return e.nodes?.length?k&&e.nodes.some(j=>j.id===S.id):k}),w=y.every(S=>S.width&&S.height);if(y.length>0&&w){const S=iw(y,m),{x:k,y:j,zoom:N}=LW(S,r,s,e.minZoom??i,e.maxZoom??a,e.padding??.1),T=$l.translate(k,j).scale(N);return typeof e.duration=="number"&&e.duration>0?l.transform(qu(c,e.duration),T):l.transform(c,T),!0}}return!1}function I7e(t,e){return t.forEach(n=>{const r=e.get(n.id);r&&e.set(r.id,{...r,[$r]:r[$r],selected:n.selected})}),new Map(e)}function L7e(t,e){return e.map(n=>{const r=t.find(s=>s.id===n.id);return r&&(n.selected=r.selected),n})}function X1({changedNodes:t,changedEdges:e,get:n,set:r}){const{nodeInternals:s,edges:i,onNodesChange:a,onEdgesChange:l,hasDefaultNodes:c,hasDefaultEdges:d}=n();t?.length&&(c&&r({nodeInternals:I7e(t,s)}),a?.(t)),e?.length&&(d&&r({edges:L7e(e,i)}),l?.(e))}const fh=()=>{},B7e={zoomIn:fh,zoomOut:fh,zoomTo:fh,getZoom:()=>1,setViewport:fh,getViewport:()=>({x:0,y:0,zoom:1}),fitView:()=>!1,setCenter:fh,fitBounds:fh,project:t=>t,screenToFlowPosition:t=>t,flowToScreenPosition:t=>t,viewportInitialized:!1},F7e=t=>({d3Zoom:t.d3Zoom,d3Selection:t.d3Selection}),q7e=()=>{const t=gs(),{d3Zoom:e,d3Selection:n}=gr(F7e,ks);return b.useMemo(()=>n&&e?{zoomIn:s=>e.scaleBy(qu(n,s?.duration),1.2),zoomOut:s=>e.scaleBy(qu(n,s?.duration),1/1.2),zoomTo:(s,i)=>e.scaleTo(qu(n,i?.duration),s),getZoom:()=>t.getState().transform[2],setViewport:(s,i)=>{const[a,l,c]=t.getState().transform,d=$l.translate(s.x??a,s.y??l).scale(s.zoom??c);e.transform(qu(n,i?.duration),d)},getViewport:()=>{const[s,i,a]=t.getState().transform;return{x:s,y:i,zoom:a}},fitView:s=>JW(t.getState,s),setCenter:(s,i,a)=>{const{width:l,height:c,maxZoom:d}=t.getState(),h=typeof a?.zoom<"u"?a.zoom:d,m=l/2-s*h,g=c/2-i*h,x=$l.translate(m,g).scale(h);e.transform(qu(n,a?.duration),x)},fitBounds:(s,i)=>{const{width:a,height:l,minZoom:c,maxZoom:d}=t.getState(),{x:h,y:m,zoom:g}=LW(s,a,l,c,d,i?.padding??.1),x=$l.translate(h,m).scale(g);e.transform(qu(n,i?.duration),x)},project:s=>{const{transform:i,snapToGrid:a,snapGrid:l}=t.getState();return console.warn("[DEPRECATED] `project` is deprecated. Instead use `screenToFlowPosition`. There is no need to subtract the react flow bounds anymore! https://reactflow.dev/api-reference/types/react-flow-instance#screen-to-flow-position"),oj(s,i,a,l)},screenToFlowPosition:s=>{const{transform:i,snapToGrid:a,snapGrid:l,domNode:c}=t.getState();if(!c)return s;const{x:d,y:h}=c.getBoundingClientRect(),m={x:s.x-d,y:s.y-h};return oj(m,i,a,l)},flowToScreenPosition:s=>{const{transform:i,domNode:a}=t.getState();if(!a)return s;const{x:l,y:c}=a.getBoundingClientRect(),d=PW(s,i);return{x:d.x+l,y:d.y+c}},viewportInitialized:!0}:B7e,[e,n])};function u7(){const t=q7e(),e=gs(),n=b.useCallback(()=>e.getState().getNodes().map(w=>({...w})),[]),r=b.useCallback(w=>e.getState().nodeInternals.get(w),[]),s=b.useCallback(()=>{const{edges:w=[]}=e.getState();return w.map(S=>({...S}))},[]),i=b.useCallback(w=>{const{edges:S=[]}=e.getState();return S.find(k=>k.id===w)},[]),a=b.useCallback(w=>{const{getNodes:S,setNodes:k,hasDefaultNodes:j,onNodesChange:N}=e.getState(),T=S(),E=typeof w=="function"?w(T):w;if(j)k(E);else if(N){const _=E.length===0?T.map(A=>({type:"remove",id:A.id})):E.map(A=>({item:A,type:"reset"}));N(_)}},[]),l=b.useCallback(w=>{const{edges:S=[],setEdges:k,hasDefaultEdges:j,onEdgesChange:N}=e.getState(),T=typeof w=="function"?w(S):w;if(j)k(T);else if(N){const E=T.length===0?S.map(_=>({type:"remove",id:_.id})):T.map(_=>({item:_,type:"reset"}));N(E)}},[]),c=b.useCallback(w=>{const S=Array.isArray(w)?w:[w],{getNodes:k,setNodes:j,hasDefaultNodes:N,onNodesChange:T}=e.getState();if(N){const _=[...k(),...S];j(_)}else if(T){const E=S.map(_=>({item:_,type:"add"}));T(E)}},[]),d=b.useCallback(w=>{const S=Array.isArray(w)?w:[w],{edges:k=[],setEdges:j,hasDefaultEdges:N,onEdgesChange:T}=e.getState();if(N)j([...k,...S]);else if(T){const E=S.map(_=>({item:_,type:"add"}));T(E)}},[]),h=b.useCallback(()=>{const{getNodes:w,edges:S=[],transform:k}=e.getState(),[j,N,T]=k;return{nodes:w().map(E=>({...E})),edges:S.map(E=>({...E})),viewport:{x:j,y:N,zoom:T}}},[]),m=b.useCallback(({nodes:w,edges:S})=>{const{nodeInternals:k,getNodes:j,edges:N,hasDefaultNodes:T,hasDefaultEdges:E,onNodesDelete:_,onEdgesDelete:A,onNodesChange:D,onEdgesChange:q}=e.getState(),B=(w||[]).map(V=>V.id),H=(S||[]).map(V=>V.id),W=j().reduce((V,L)=>{const $=L.parentNode||L.parentId,K=!B.includes(L.id)&&$&&V.find(R=>R.id===$);return(typeof L.deletable=="boolean"?L.deletable:!0)&&(B.includes(L.id)||K)&&V.push(L),V},[]),ee=N.filter(V=>typeof V.deletable=="boolean"?V.deletable:!0),I=ee.filter(V=>H.includes(V.id));if(W||I){const V=IW(W,ee),L=[...I,...V],$=L.reduce((K,Y)=>(K.includes(Y.id)||K.push(Y.id),K),[]);if((E||T)&&(E&&e.setState({edges:N.filter(K=>!$.includes(K.id))}),T&&(W.forEach(K=>{k.delete(K.id)}),e.setState({nodeInternals:new Map(k)}))),$.length>0&&(A?.(L),q&&q($.map(K=>({id:K,type:"remove"})))),W.length>0&&(_?.(W),D)){const K=W.map(Y=>({id:Y.id,type:"remove"}));D(K)}}},[]),g=b.useCallback(w=>{const S=o7e(w),k=S?null:e.getState().nodeInternals.get(w.id);return!S&&!k?[null,null,S]:[S?w:pD(k),k,S]},[]),x=b.useCallback((w,S=!0,k)=>{const[j,N,T]=g(w);return j?(k||e.getState().getNodes()).filter(E=>{if(!T&&(E.id===N.id||!E.positionAbsolute))return!1;const _=pD(E),A=rj(_,j);return S&&A>0||A>=j.width*j.height}):[]},[]),y=b.useCallback((w,S,k=!0)=>{const[j]=g(w);if(!j)return!1;const N=rj(j,S);return k&&N>0||N>=j.width*j.height},[]);return b.useMemo(()=>({...t,getNodes:n,getNode:r,getEdges:s,getEdge:i,setNodes:a,setEdges:l,addNodes:c,addEdges:d,toObject:h,deleteElements:m,getIntersectingNodes:x,isNodeIntersecting:y}),[t,n,r,s,i,a,l,c,d,h,m,x,y])}const $7e={actInsideInputWithModifier:!1};var H7e=({deleteKeyCode:t,multiSelectionKeyCode:e})=>{const n=gs(),{deleteElements:r}=u7(),s=Cp(t,$7e),i=Cp(e);b.useEffect(()=>{if(s){const{edges:a,getNodes:l}=n.getState(),c=l().filter(h=>h.selected),d=a.filter(h=>h.selected);r({nodes:c,edges:d}),n.setState({nodesSelectionActive:!1})}},[s]),b.useEffect(()=>{n.setState({multiSelectionActive:i})},[i])};function Q7e(t){const e=gs();b.useEffect(()=>{let n;const r=()=>{if(!t.current)return;const s=n7(t.current);(s.height===0||s.width===0)&&e.getState().onError?.("004",Yl.error004()),e.setState({width:s.width||500,height:s.height||500})};return r(),window.addEventListener("resize",r),t.current&&(n=new ResizeObserver(()=>r()),n.observe(t.current)),()=>{window.removeEventListener("resize",r),n&&t.current&&n.unobserve(t.current)}},[])}const d7={position:"absolute",width:"100%",height:"100%",top:0,left:0},V7e=(t,e)=>t.x!==e.x||t.y!==e.y||t.zoom!==e.k,Y1=t=>({x:t.x,y:t.y,zoom:t.k}),mh=(t,e)=>t.target.closest(`.${e}`),jD=(t,e)=>e===2&&Array.isArray(t)&&t.includes(2),ND=t=>{const e=t.ctrlKey&&zy()?10:1;return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*e},U7e=t=>({d3Zoom:t.d3Zoom,d3Selection:t.d3Selection,d3ZoomHandler:t.d3ZoomHandler,userSelectionActive:t.userSelectionActive}),W7e=({onMove:t,onMoveStart:e,onMoveEnd:n,onPaneContextMenu:r,zoomOnScroll:s=!0,zoomOnPinch:i=!0,panOnScroll:a=!1,panOnScrollSpeed:l=.5,panOnScrollMode:c=Yu.Free,zoomOnDoubleClick:d=!0,elementsSelectable:h,panOnDrag:m=!0,defaultViewport:g,translateExtent:x,minZoom:y,maxZoom:w,zoomActivationKeyCode:S,preventScrolling:k=!0,children:j,noWheelClassName:N,noPanClassName:T})=>{const E=b.useRef(),_=gs(),A=b.useRef(!1),D=b.useRef(!1),q=b.useRef(null),B=b.useRef({x:0,y:0,zoom:0}),{d3Zoom:H,d3Selection:W,d3ZoomHandler:ee,userSelectionActive:I}=gr(U7e,ks),V=Cp(S),L=b.useRef(0),$=b.useRef(!1),K=b.useRef();return Q7e(q),b.useEffect(()=>{if(q.current){const Y=q.current.getBoundingClientRect(),R=kW().scaleExtent([y,w]).translateExtent(x),ie=va(q.current).call(R),X=$l.translate(g.x,g.y).scale(gf(g.zoom,y,w)),z=[[0,0],[Y.width,Y.height]],U=R.constrain()(X,z,x);R.transform(ie,U),R.wheelDelta(ND),_.setState({d3Zoom:R,d3Selection:ie,d3ZoomHandler:ie.on("wheel.zoom"),transform:[U.x,U.y,U.k],domNode:q.current.closest(".react-flow")})}},[]),b.useEffect(()=>{W&&H&&(a&&!V&&!I?W.on("wheel.zoom",Y=>{if(mh(Y,N))return!1;Y.preventDefault(),Y.stopImmediatePropagation();const R=W.property("__zoom").k||1;if(Y.ctrlKey&&i){const se=Qa(Y),re=ND(Y),ae=R*Math.pow(2,re);H.scaleTo(W,ae,se,Y);return}const ie=Y.deltaMode===1?20:1;let X=c===Yu.Vertical?0:Y.deltaX*ie,z=c===Yu.Horizontal?0:Y.deltaY*ie;!zy()&&Y.shiftKey&&c!==Yu.Vertical&&(X=Y.deltaY*ie,z=0),H.translateBy(W,-(X/R)*l,-(z/R)*l,{internal:!0});const U=Y1(W.property("__zoom")),{onViewportChangeStart:te,onViewportChange:ne,onViewportChangeEnd:G}=_.getState();clearTimeout(K.current),$.current||($.current=!0,e?.(Y,U),te?.(U)),$.current&&(t?.(Y,U),ne?.(U),K.current=setTimeout(()=>{n?.(Y,U),G?.(U),$.current=!1},150))},{passive:!1}):typeof ee<"u"&&W.on("wheel.zoom",function(Y,R){if(!k&&Y.type==="wheel"&&!Y.ctrlKey||mh(Y,N))return null;Y.preventDefault(),ee.call(this,Y,R)},{passive:!1}))},[I,a,c,W,H,ee,V,i,k,N,e,t,n]),b.useEffect(()=>{H&&H.on("start",Y=>{if(!Y.sourceEvent||Y.sourceEvent.internal)return null;L.current=Y.sourceEvent?.button;const{onViewportChangeStart:R}=_.getState(),ie=Y1(Y.transform);A.current=!0,B.current=ie,Y.sourceEvent?.type==="mousedown"&&_.setState({paneDragging:!0}),R?.(ie),e?.(Y.sourceEvent,ie)})},[H,e]),b.useEffect(()=>{H&&(I&&!A.current?H.on("zoom",null):I||H.on("zoom",Y=>{const{onViewportChange:R}=_.getState();if(_.setState({transform:[Y.transform.x,Y.transform.y,Y.transform.k]}),D.current=!!(r&&jD(m,L.current??0)),(t||R)&&!Y.sourceEvent?.internal){const ie=Y1(Y.transform);R?.(ie),t?.(Y.sourceEvent,ie)}}))},[I,H,t,m,r]),b.useEffect(()=>{H&&H.on("end",Y=>{if(!Y.sourceEvent||Y.sourceEvent.internal)return null;const{onViewportChangeEnd:R}=_.getState();if(A.current=!1,_.setState({paneDragging:!1}),r&&jD(m,L.current??0)&&!D.current&&r(Y.sourceEvent),D.current=!1,(n||R)&&V7e(B.current,Y.transform)){const ie=Y1(Y.transform);B.current=ie,clearTimeout(E.current),E.current=setTimeout(()=>{R?.(ie),n?.(Y.sourceEvent,ie)},a?150:0)}})},[H,a,m,n,r]),b.useEffect(()=>{H&&H.filter(Y=>{const R=V||s,ie=i&&Y.ctrlKey;if((m===!0||Array.isArray(m)&&m.includes(1))&&Y.button===1&&Y.type==="mousedown"&&(mh(Y,"react-flow__node")||mh(Y,"react-flow__edge")))return!0;if(!m&&!R&&!a&&!d&&!i||I||!d&&Y.type==="dblclick"||mh(Y,N)&&Y.type==="wheel"||mh(Y,T)&&(Y.type!=="wheel"||a&&Y.type==="wheel"&&!V)||!i&&Y.ctrlKey&&Y.type==="wheel"||!R&&!a&&!ie&&Y.type==="wheel"||!m&&(Y.type==="mousedown"||Y.type==="touchstart")||Array.isArray(m)&&!m.includes(Y.button)&&Y.type==="mousedown")return!1;const X=Array.isArray(m)&&m.includes(Y.button)||!Y.button||Y.button<=1;return(!Y.ctrlKey||Y.type==="wheel")&&X})},[I,H,s,i,a,d,m,h,V]),oe.createElement("div",{className:"react-flow__renderer",ref:q,style:d7},j)},G7e=t=>({userSelectionActive:t.userSelectionActive,userSelectionRect:t.userSelectionRect});function X7e(){const{userSelectionActive:t,userSelectionRect:e}=gr(G7e,ks);return t&&e?oe.createElement("div",{className:"react-flow__selection react-flow__container",style:{width:e.width,height:e.height,transform:`translate(${e.x}px, ${e.y}px)`}}):null}function CD(t,e){const n=e.parentNode||e.parentId,r=t.find(s=>s.id===n);if(r){const s=e.position.x+e.width-r.width,i=e.position.y+e.height-r.height;if(s>0||i>0||e.position.x<0||e.position.y<0){if(r.style={...r.style},r.style.width=r.style.width??r.width,r.style.height=r.style.height??r.height,s>0&&(r.style.width+=s),i>0&&(r.style.height+=i),e.position.x<0){const a=Math.abs(e.position.x);r.position.x=r.position.x-a,r.style.width+=a,e.position.x=0}if(e.position.y<0){const a=Math.abs(e.position.y);r.position.y=r.position.y-a,r.style.height+=a,e.position.y=0}r.width=r.style.width,r.height=r.style.height}}}function eG(t,e){if(t.some(r=>r.type==="reset"))return t.filter(r=>r.type==="reset").map(r=>r.item);const n=t.filter(r=>r.type==="add").map(r=>r.item);return e.reduce((r,s)=>{const i=t.filter(l=>l.id===s.id);if(i.length===0)return r.push(s),r;const a={...s};for(const l of i)if(l)switch(l.type){case"select":{a.selected=l.selected;break}case"position":{typeof l.position<"u"&&(a.position=l.position),typeof l.positionAbsolute<"u"&&(a.positionAbsolute=l.positionAbsolute),typeof l.dragging<"u"&&(a.dragging=l.dragging),a.expandParent&&CD(r,a);break}case"dimensions":{typeof l.dimensions<"u"&&(a.width=l.dimensions.width,a.height=l.dimensions.height),typeof l.updateStyle<"u"&&(a.style={...a.style||{},...l.dimensions}),typeof l.resizing=="boolean"&&(a.resizing=l.resizing),a.expandParent&&CD(r,a);break}case"remove":return r}return r.push(a),r},n)}function tG(t,e){return eG(t,e)}function Y7e(t,e){return eG(t,e)}const Lc=(t,e)=>({id:t,type:"select",selected:e});function Ah(t,e){return t.reduce((n,r)=>{const s=e.includes(r.id);return!r.selected&&s?(r.selected=!0,n.push(Lc(r.id,!0))):r.selected&&!s&&(r.selected=!1,n.push(Lc(r.id,!1))),n},[])}const p5=(t,e)=>n=>{n.target===e.current&&t?.(n)},K7e=t=>({userSelectionActive:t.userSelectionActive,elementsSelectable:t.elementsSelectable,dragging:t.paneDragging}),nG=b.memo(({isSelecting:t,selectionMode:e=Np.Full,panOnDrag:n,onSelectionStart:r,onSelectionEnd:s,onPaneClick:i,onPaneContextMenu:a,onPaneScroll:l,onPaneMouseEnter:c,onPaneMouseMove:d,onPaneMouseLeave:h,children:m})=>{const g=b.useRef(null),x=gs(),y=b.useRef(0),w=b.useRef(0),S=b.useRef(),{userSelectionActive:k,elementsSelectable:j,dragging:N}=gr(K7e,ks),T=()=>{x.setState({userSelectionActive:!1,userSelectionRect:null}),y.current=0,w.current=0},E=ee=>{i?.(ee),x.getState().resetSelectedElements(),x.setState({nodesSelectionActive:!1})},_=ee=>{if(Array.isArray(n)&&n?.includes(2)){ee.preventDefault();return}a?.(ee)},A=l?ee=>l(ee):void 0,D=ee=>{const{resetSelectedElements:I,domNode:V}=x.getState();if(S.current=V?.getBoundingClientRect(),!j||!t||ee.button!==0||ee.target!==g.current||!S.current)return;const{x:L,y:$}=Wc(ee,S.current);I(),x.setState({userSelectionRect:{width:0,height:0,startX:L,startY:$,x:L,y:$}}),r?.(ee)},q=ee=>{const{userSelectionRect:I,nodeInternals:V,edges:L,transform:$,onNodesChange:K,onEdgesChange:Y,nodeOrigin:R,getNodes:ie}=x.getState();if(!t||!S.current||!I)return;x.setState({userSelectionActive:!0,nodesSelectionActive:!1});const X=Wc(ee,S.current),z=I.startX??0,U=I.startY??0,te={...I,x:X.xae.id),re=G.map(ae=>ae.id);if(y.current!==re.length){y.current=re.length;const ae=Ah(ne,re);ae.length&&K?.(ae)}if(w.current!==se.length){w.current=se.length;const ae=Ah(L,se);ae.length&&Y?.(ae)}x.setState({userSelectionRect:te})},B=ee=>{if(ee.button!==0)return;const{userSelectionRect:I}=x.getState();!k&&I&&ee.target===g.current&&E?.(ee),x.setState({nodesSelectionActive:y.current>0}),T(),s?.(ee)},H=ee=>{k&&(x.setState({nodesSelectionActive:y.current>0}),s?.(ee)),T()},W=j&&(t||k);return oe.createElement("div",{className:Ls(["react-flow__pane",{dragging:N,selection:t}]),onClick:W?void 0:p5(E,g),onContextMenu:p5(_,g),onWheel:p5(A,g),onMouseEnter:W?void 0:c,onMouseDown:W?D:void 0,onMouseMove:W?q:d,onMouseUp:W?B:void 0,onMouseLeave:W?H:h,ref:g,style:d7},m,oe.createElement(X7e,null))});nG.displayName="Pane";function rG(t,e){const n=t.parentNode||t.parentId;if(!n)return!1;const r=e.get(n);return r?r.selected?!0:rG(r,e):!1}function TD(t,e,n){let r=t;do{if(r?.matches(e))return!0;if(r===n.current)return!1;r=r.parentElement}while(r);return!1}function Z7e(t,e,n,r){return Array.from(t.values()).filter(s=>(s.selected||s.id===r)&&(!s.parentNode||s.parentId||!rG(s,t))&&(s.draggable||e&&typeof s.draggable>"u")).map(s=>({id:s.id,position:s.position||{x:0,y:0},positionAbsolute:s.positionAbsolute||{x:0,y:0},distance:{x:n.x-(s.positionAbsolute?.x??0),y:n.y-(s.positionAbsolute?.y??0)},delta:{x:0,y:0},extent:s.extent,parentNode:s.parentNode||s.parentId,parentId:s.parentNode||s.parentId,width:s.width,height:s.height,expandParent:s.expandParent}))}function J7e(t,e){return!e||e==="parent"?e:[e[0],[e[1][0]-(t.width||0),e[1][1]-(t.height||0)]]}function sG(t,e,n,r,s=[0,0],i){const a=J7e(t,t.extent||r);let l=a;const c=t.parentNode||t.parentId;if(t.extent==="parent"&&!t.expandParent)if(c&&t.width&&t.height){const m=n.get(c),{x:g,y:x}=id(m,s).positionAbsolute;l=m&&Ca(g)&&Ca(x)&&Ca(m.width)&&Ca(m.height)?[[g+t.width*s[0],x+t.height*s[1]],[g+m.width-t.width+t.width*s[0],x+m.height-t.height+t.height*s[1]]]:l}else i?.("005",Yl.error005()),l=a;else if(t.extent&&c&&t.extent!=="parent"){const m=n.get(c),{x:g,y:x}=id(m,s).positionAbsolute;l=[[t.extent[0][0]+g,t.extent[0][1]+x],[t.extent[1][0]+g,t.extent[1][1]+x]]}let d={x:0,y:0};if(c){const m=n.get(c);d=id(m,s).positionAbsolute}const h=l&&l!=="parent"?r7(e,l):e;return{position:{x:h.x-d.x,y:h.y-d.y},positionAbsolute:h}}function g5({nodeId:t,dragItems:e,nodeInternals:n}){const r=e.map(s=>({...n.get(s.id),position:s.position,positionAbsolute:s.positionAbsolute}));return[t?r.find(s=>s.id===t):r[0],r]}const ED=(t,e,n,r)=>{const s=e.querySelectorAll(t);if(!s||!s.length)return null;const i=Array.from(s),a=e.getBoundingClientRect(),l={x:a.width*r[0],y:a.height*r[1]};return i.map(c=>{const d=c.getBoundingClientRect();return{id:c.getAttribute("data-handleid"),position:c.getAttribute("data-handlepos"),x:(d.left-a.left-l.x)/n,y:(d.top-a.top-l.y)/n,...n7(c)}})};function i0(t,e,n){return n===void 0?n:r=>{const s=e().nodeInternals.get(t);s&&n(r,{...s})}}function cj({id:t,store:e,unselect:n=!1,nodeRef:r}){const{addSelectedNodes:s,unselectNodesAndEdges:i,multiSelectionActive:a,nodeInternals:l,onError:c}=e.getState(),d=l.get(t);if(!d){c?.("012",Yl.error012(t));return}e.setState({nodesSelectionActive:!1}),d.selected?(n||d.selected&&a)&&(i({nodes:[d],edges:[]}),requestAnimationFrame(()=>r?.current?.blur())):s([t])}function eCe(){const t=gs();return b.useCallback(({sourceEvent:n})=>{const{transform:r,snapGrid:s,snapToGrid:i}=t.getState(),a=n.touches?n.touches[0].clientX:n.clientX,l=n.touches?n.touches[0].clientY:n.clientY,c={x:(a-r[0])/r[2],y:(l-r[1])/r[2]};return{xSnapped:i?s[0]*Math.round(c.x/s[0]):c.x,ySnapped:i?s[1]*Math.round(c.y/s[1]):c.y,...c}},[])}function x5(t){return(e,n,r)=>t?.(e,r)}function iG({nodeRef:t,disabled:e=!1,noDragClassName:n,handleSelector:r,nodeId:s,isSelectable:i,selectNodesOnDrag:a}){const l=gs(),[c,d]=b.useState(!1),h=b.useRef([]),m=b.useRef({x:null,y:null}),g=b.useRef(0),x=b.useRef(null),y=b.useRef({x:0,y:0}),w=b.useRef(null),S=b.useRef(!1),k=b.useRef(!1),j=b.useRef(!1),N=eCe();return b.useEffect(()=>{if(t?.current){const T=va(t.current),E=({x:D,y:q})=>{const{nodeInternals:B,onNodeDrag:H,onSelectionDrag:W,updateNodePositions:ee,nodeExtent:I,snapGrid:V,snapToGrid:L,nodeOrigin:$,onError:K}=l.getState();m.current={x:D,y:q};let Y=!1,R={x:0,y:0,x2:0,y2:0};if(h.current.length>1&&I){const X=iw(h.current,$);R=jp(X)}if(h.current=h.current.map(X=>{const z={x:D-X.distance.x,y:q-X.distance.y};L&&(z.x=V[0]*Math.round(z.x/V[0]),z.y=V[1]*Math.round(z.y/V[1]));const U=[[I[0][0],I[0][1]],[I[1][0],I[1][1]]];h.current.length>1&&I&&!X.extent&&(U[0][0]=X.positionAbsolute.x-R.x+I[0][0],U[1][0]=X.positionAbsolute.x+(X.width??0)-R.x2+I[1][0],U[0][1]=X.positionAbsolute.y-R.y+I[0][1],U[1][1]=X.positionAbsolute.y+(X.height??0)-R.y2+I[1][1]);const te=sG(X,z,B,U,$,K);return Y=Y||X.position.x!==te.position.x||X.position.y!==te.position.y,X.position=te.position,X.positionAbsolute=te.positionAbsolute,X}),!Y)return;ee(h.current,!0,!0),d(!0);const ie=s?H:x5(W);if(ie&&w.current){const[X,z]=g5({nodeId:s,dragItems:h.current,nodeInternals:B});ie(w.current,X,z)}},_=()=>{if(!x.current)return;const[D,q]=jW(y.current,x.current);if(D!==0||q!==0){const{transform:B,panBy:H}=l.getState();m.current.x=(m.current.x??0)-D/B[2],m.current.y=(m.current.y??0)-q/B[2],H({x:D,y:q})&&E(m.current)}g.current=requestAnimationFrame(_)},A=D=>{const{nodeInternals:q,multiSelectionActive:B,nodesDraggable:H,unselectNodesAndEdges:W,onNodeDragStart:ee,onSelectionDragStart:I}=l.getState();k.current=!0;const V=s?ee:x5(I);(!a||!i)&&!B&&s&&(q.get(s)?.selected||W()),s&&i&&a&&cj({id:s,store:l,nodeRef:t});const L=N(D);if(m.current=L,h.current=Z7e(q,H,L,s),V&&h.current){const[$,K]=g5({nodeId:s,dragItems:h.current,nodeInternals:q});V(D.sourceEvent,$,K)}};if(e)T.on(".drag",null);else{const D=I6e().on("start",q=>{const{domNode:B,nodeDragThreshold:H}=l.getState();H===0&&A(q),j.current=!1;const W=N(q);m.current=W,x.current=B?.getBoundingClientRect()||null,y.current=Wc(q.sourceEvent,x.current)}).on("drag",q=>{const B=N(q),{autoPanOnNodeDrag:H,nodeDragThreshold:W}=l.getState();if(q.sourceEvent.type==="touchmove"&&q.sourceEvent.touches.length>1&&(j.current=!0),!j.current){if(!S.current&&k.current&&H&&(S.current=!0,_()),!k.current){const ee=B.xSnapped-(m?.current?.x??0),I=B.ySnapped-(m?.current?.y??0);Math.sqrt(ee*ee+I*I)>W&&A(q)}(m.current.x!==B.xSnapped||m.current.y!==B.ySnapped)&&h.current&&k.current&&(w.current=q.sourceEvent,y.current=Wc(q.sourceEvent,x.current),E(B))}}).on("end",q=>{if(!(!k.current||j.current)&&(d(!1),S.current=!1,k.current=!1,cancelAnimationFrame(g.current),h.current)){const{updateNodePositions:B,nodeInternals:H,onNodeDragStop:W,onSelectionDragStop:ee}=l.getState(),I=s?W:x5(ee);if(B(h.current,!1,!1),I){const[V,L]=g5({nodeId:s,dragItems:h.current,nodeInternals:H});I(q.sourceEvent,V,L)}}}).filter(q=>{const B=q.target;return!q.button&&(!n||!TD(B,`.${n}`,t))&&(!r||TD(B,r,t))});return T.call(D),()=>{T.on(".drag",null)}}}},[t,e,n,r,i,l,s,a,N]),c}function aG(){const t=gs();return b.useCallback(n=>{const{nodeInternals:r,nodeExtent:s,updateNodePositions:i,getNodes:a,snapToGrid:l,snapGrid:c,onError:d,nodesDraggable:h}=t.getState(),m=a().filter(j=>j.selected&&(j.draggable||h&&typeof j.draggable>"u")),g=l?c[0]:5,x=l?c[1]:5,y=n.isShiftPressed?4:1,w=n.x*g*y,S=n.y*x*y,k=m.map(j=>{if(j.positionAbsolute){const N={x:j.positionAbsolute.x+w,y:j.positionAbsolute.y+S};l&&(N.x=c[0]*Math.round(N.x/c[0]),N.y=c[1]*Math.round(N.y/c[1]));const{positionAbsolute:T,position:E}=sG(j,N,r,s,void 0,d);j.position=E,j.positionAbsolute=T}return j});i(k,!0,!1)},[])}const Vh={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}};var a0=t=>{const e=({id:n,type:r,data:s,xPos:i,yPos:a,xPosOrigin:l,yPosOrigin:c,selected:d,onClick:h,onMouseEnter:m,onMouseMove:g,onMouseLeave:x,onContextMenu:y,onDoubleClick:w,style:S,className:k,isDraggable:j,isSelectable:N,isConnectable:T,isFocusable:E,selectNodesOnDrag:_,sourcePosition:A,targetPosition:D,hidden:q,resizeObserver:B,dragHandle:H,zIndex:W,isParent:ee,noDragClassName:I,noPanClassName:V,initialized:L,disableKeyboardA11y:$,ariaLabel:K,rfId:Y,hasHandleBounds:R})=>{const ie=gs(),X=b.useRef(null),z=b.useRef(null),U=b.useRef(A),te=b.useRef(D),ne=b.useRef(r),G=N||j||h||m||g||x,se=aG(),re=i0(n,ie.getState,m),ae=i0(n,ie.getState,g),_e=i0(n,ie.getState,x),Be=i0(n,ie.getState,y),Ye=i0(n,ie.getState,w),Je=Ue=>{const{nodeDragThreshold:$e}=ie.getState();if(N&&(!_||!j||$e>0)&&cj({id:n,store:ie,nodeRef:X}),h){const jt=ie.getState().nodeInternals.get(n);jt&&h(Ue,{...jt})}},Oe=Ue=>{if(!sj(Ue)&&!$)if(EW.includes(Ue.key)&&N){const $e=Ue.key==="Escape";cj({id:n,store:ie,unselect:$e,nodeRef:X})}else j&&d&&Object.prototype.hasOwnProperty.call(Vh,Ue.key)&&(ie.setState({ariaLiveMessage:`Moved selected node ${Ue.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~i}, y: ${~~a}`}),se({x:Vh[Ue.key].x,y:Vh[Ue.key].y,isShiftPressed:Ue.shiftKey}))};b.useEffect(()=>()=>{z.current&&(B?.unobserve(z.current),z.current=null)},[]),b.useEffect(()=>{if(X.current&&!q){const Ue=X.current;(!L||!R||z.current!==Ue)&&(z.current&&B?.unobserve(z.current),B?.observe(Ue),z.current=Ue)}},[q,L,R]),b.useEffect(()=>{const Ue=ne.current!==r,$e=U.current!==A,jt=te.current!==D;X.current&&(Ue||$e||jt)&&(Ue&&(ne.current=r),$e&&(U.current=A),jt&&(te.current=D),ie.getState().updateNodeDimensions([{id:n,nodeElement:X.current,forceUpdate:!0}]))},[n,r,A,D]);const Ve=iG({nodeRef:X,disabled:q||!j,noDragClassName:I,handleSelector:H,nodeId:n,isSelectable:N,selectNodesOnDrag:_});return q?null:oe.createElement("div",{className:Ls(["react-flow__node",`react-flow__node-${r}`,{[V]:j},k,{selected:d,selectable:N,parent:ee,dragging:Ve}]),ref:X,style:{zIndex:W,transform:`translate(${l}px,${c}px)`,pointerEvents:G?"all":"none",visibility:L?"visible":"hidden",...S},"data-id":n,"data-testid":`rf__node-${n}`,onMouseEnter:re,onMouseMove:ae,onMouseLeave:_e,onContextMenu:Be,onClick:Je,onDoubleClick:Ye,onKeyDown:E?Oe:void 0,tabIndex:E?0:void 0,role:E?"button":void 0,"aria-describedby":$?void 0:`${XW}-${Y}`,"aria-label":K},oe.createElement(m7e,{value:n},oe.createElement(t,{id:n,data:s,type:r,xPos:i,yPos:a,selected:d,isConnectable:T,sourcePosition:A,targetPosition:D,dragging:Ve,dragHandle:H,zIndex:W})))};return e.displayName="NodeWrapper",b.memo(e)};const tCe=t=>{const e=t.getNodes().filter(n=>n.selected);return{...iw(e,t.nodeOrigin),transformString:`translate(${t.transform[0]}px,${t.transform[1]}px) scale(${t.transform[2]})`,userSelectionActive:t.userSelectionActive}};function nCe({onSelectionContextMenu:t,noPanClassName:e,disableKeyboardA11y:n}){const r=gs(),{width:s,height:i,x:a,y:l,transformString:c,userSelectionActive:d}=gr(tCe,ks),h=aG(),m=b.useRef(null);if(b.useEffect(()=>{n||m.current?.focus({preventScroll:!0})},[n]),iG({nodeRef:m}),d||!s||!i)return null;const g=t?y=>{const w=r.getState().getNodes().filter(S=>S.selected);t(y,w)}:void 0,x=y=>{Object.prototype.hasOwnProperty.call(Vh,y.key)&&h({x:Vh[y.key].x,y:Vh[y.key].y,isShiftPressed:y.shiftKey})};return oe.createElement("div",{className:Ls(["react-flow__nodesselection","react-flow__container",e]),style:{transform:c}},oe.createElement("div",{ref:m,className:"react-flow__nodesselection-rect",onContextMenu:g,tabIndex:n?void 0:-1,onKeyDown:n?void 0:x,style:{width:s,height:i,top:l,left:a}}))}var rCe=b.memo(nCe);const sCe=t=>t.nodesSelectionActive,oG=({children:t,onPaneClick:e,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:s,onPaneContextMenu:i,onPaneScroll:a,deleteKeyCode:l,onMove:c,onMoveStart:d,onMoveEnd:h,selectionKeyCode:m,selectionOnDrag:g,selectionMode:x,onSelectionStart:y,onSelectionEnd:w,multiSelectionKeyCode:S,panActivationKeyCode:k,zoomActivationKeyCode:j,elementsSelectable:N,zoomOnScroll:T,zoomOnPinch:E,panOnScroll:_,panOnScrollSpeed:A,panOnScrollMode:D,zoomOnDoubleClick:q,panOnDrag:B,defaultViewport:H,translateExtent:W,minZoom:ee,maxZoom:I,preventScrolling:V,onSelectionContextMenu:L,noWheelClassName:$,noPanClassName:K,disableKeyboardA11y:Y})=>{const R=gr(sCe),ie=Cp(m),X=Cp(k),z=X||B,U=X||_,te=ie||g&&z!==!0;return H7e({deleteKeyCode:l,multiSelectionKeyCode:S}),oe.createElement(W7e,{onMove:c,onMoveStart:d,onMoveEnd:h,onPaneContextMenu:i,elementsSelectable:N,zoomOnScroll:T,zoomOnPinch:E,panOnScroll:U,panOnScrollSpeed:A,panOnScrollMode:D,zoomOnDoubleClick:q,panOnDrag:!ie&&z,defaultViewport:H,translateExtent:W,minZoom:ee,maxZoom:I,zoomActivationKeyCode:j,preventScrolling:V,noWheelClassName:$,noPanClassName:K},oe.createElement(nG,{onSelectionStart:y,onSelectionEnd:w,onPaneClick:e,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:s,onPaneContextMenu:i,onPaneScroll:a,panOnDrag:z,isSelecting:!!te,selectionMode:x},t,R&&oe.createElement(rCe,{onSelectionContextMenu:L,noPanClassName:K,disableKeyboardA11y:Y})))};oG.displayName="FlowRenderer";var iCe=b.memo(oG);function aCe(t){return gr(b.useCallback(n=>t?zW(n.nodeInternals,{x:0,y:0,width:n.width,height:n.height},n.transform,!0):n.getNodes(),[t]))}function oCe(t){const e={input:a0(t.input||VW),default:a0(t.default||lj),output:a0(t.output||WW),group:a0(t.group||c7)},n={},r=Object.keys(t).filter(s=>!["input","default","output","group"].includes(s)).reduce((s,i)=>(s[i]=a0(t[i]||lj),s),n);return{...e,...r}}const lCe=({x:t,y:e,width:n,height:r,origin:s})=>!n||!r?{x:t,y:e}:s[0]<0||s[1]<0||s[0]>1||s[1]>1?{x:t,y:e}:{x:t-n*s[0],y:e-r*s[1]},cCe=t=>({nodesDraggable:t.nodesDraggable,nodesConnectable:t.nodesConnectable,nodesFocusable:t.nodesFocusable,elementsSelectable:t.elementsSelectable,updateNodeDimensions:t.updateNodeDimensions,onError:t.onError}),lG=t=>{const{nodesDraggable:e,nodesConnectable:n,nodesFocusable:r,elementsSelectable:s,updateNodeDimensions:i,onError:a}=gr(cCe,ks),l=aCe(t.onlyRenderVisibleElements),c=b.useRef(),d=b.useMemo(()=>{if(typeof ResizeObserver>"u")return null;const h=new ResizeObserver(m=>{const g=m.map(x=>({id:x.target.getAttribute("data-id"),nodeElement:x.target,forceUpdate:!0}));i(g)});return c.current=h,h},[]);return b.useEffect(()=>()=>{c?.current?.disconnect()},[]),oe.createElement("div",{className:"react-flow__nodes",style:d7},l.map(h=>{let m=h.type||"default";t.nodeTypes[m]||(a?.("003",Yl.error003(m)),m="default");const g=t.nodeTypes[m]||t.nodeTypes.default,x=!!(h.draggable||e&&typeof h.draggable>"u"),y=!!(h.selectable||s&&typeof h.selectable>"u"),w=!!(h.connectable||n&&typeof h.connectable>"u"),S=!!(h.focusable||r&&typeof h.focusable>"u"),k=t.nodeExtent?r7(h.positionAbsolute,t.nodeExtent):h.positionAbsolute,j=k?.x??0,N=k?.y??0,T=lCe({x:j,y:N,width:h.width??0,height:h.height??0,origin:t.nodeOrigin});return oe.createElement(g,{key:h.id,id:h.id,className:h.className,style:h.style,type:m,data:h.data,sourcePosition:h.sourcePosition||kt.Bottom,targetPosition:h.targetPosition||kt.Top,hidden:h.hidden,xPos:j,yPos:N,xPosOrigin:T.x,yPosOrigin:T.y,selectNodesOnDrag:t.selectNodesOnDrag,onClick:t.onNodeClick,onMouseEnter:t.onNodeMouseEnter,onMouseMove:t.onNodeMouseMove,onMouseLeave:t.onNodeMouseLeave,onContextMenu:t.onNodeContextMenu,onDoubleClick:t.onNodeDoubleClick,selected:!!h.selected,isDraggable:x,isSelectable:y,isConnectable:w,isFocusable:S,resizeObserver:d,dragHandle:h.dragHandle,zIndex:h[$r]?.z??0,isParent:!!h[$r]?.isParent,noDragClassName:t.noDragClassName,noPanClassName:t.noPanClassName,initialized:!!h.width&&!!h.height,rfId:t.rfId,disableKeyboardA11y:t.disableKeyboardA11y,ariaLabel:h.ariaLabel,hasHandleBounds:!!h[$r]?.handleBounds})}))};lG.displayName="NodeRenderer";var uCe=b.memo(lG);const dCe=(t,e,n)=>n===kt.Left?t-e:n===kt.Right?t+e:t,hCe=(t,e,n)=>n===kt.Top?t-e:n===kt.Bottom?t+e:t,_D="react-flow__edgeupdater",AD=({position:t,centerX:e,centerY:n,radius:r=10,onMouseDown:s,onMouseEnter:i,onMouseOut:a,type:l})=>oe.createElement("circle",{onMouseDown:s,onMouseEnter:i,onMouseOut:a,className:Ls([_D,`${_D}-${l}`]),cx:dCe(e,r,t),cy:hCe(n,r,t),r,stroke:"transparent",fill:"transparent"}),fCe=()=>!0;var ph=t=>{const e=({id:n,className:r,type:s,data:i,onClick:a,onEdgeDoubleClick:l,selected:c,animated:d,label:h,labelStyle:m,labelShowBg:g,labelBgStyle:x,labelBgPadding:y,labelBgBorderRadius:w,style:S,source:k,target:j,sourceX:N,sourceY:T,targetX:E,targetY:_,sourcePosition:A,targetPosition:D,elementsSelectable:q,hidden:B,sourceHandleId:H,targetHandleId:W,onContextMenu:ee,onMouseEnter:I,onMouseMove:V,onMouseLeave:L,reconnectRadius:$,onReconnect:K,onReconnectStart:Y,onReconnectEnd:R,markerEnd:ie,markerStart:X,rfId:z,ariaLabel:U,isFocusable:te,isReconnectable:ne,pathOptions:G,interactionWidth:se,disableKeyboardA11y:re})=>{const ae=b.useRef(null),[_e,Be]=b.useState(!1),[Ye,Je]=b.useState(!1),Oe=gs(),Ve=b.useMemo(()=>`url('#${aj(X,z)}')`,[X,z]),Ue=b.useMemo(()=>`url('#${aj(ie,z)}')`,[ie,z]);if(B)return null;const $e=Rt=>{const{edges:Hn,addSelectedEdges:We,unselectNodesAndEdges:ot,multiSelectionActive:dn}=Oe.getState(),Pt=Hn.find(xn=>xn.id===n);Pt&&(q&&(Oe.setState({nodesSelectionActive:!1}),Pt.selected&&dn?(ot({nodes:[],edges:[Pt]}),ae.current?.blur()):We([n])),a&&a(Rt,Pt))},jt=s0(n,Oe.getState,l),vt=s0(n,Oe.getState,ee),$n=s0(n,Oe.getState,I),qt=s0(n,Oe.getState,V),un=s0(n,Oe.getState,L),Mt=(Rt,Hn)=>{if(Rt.button!==0)return;const{edges:We,isValidConnection:ot}=Oe.getState(),dn=Hn?j:k,Pt=(Hn?W:H)||null,xn=Hn?"target":"source",dt=ot||fCe,rn=Hn,wt=We.find(lt=>lt.id===n);Je(!0),Y?.(Rt,wt,xn);const Wt=lt=>{Je(!1),R?.(lt,wt,xn)};qW({event:Rt,handleId:Pt,nodeId:dn,onConnect:lt=>K?.(wt,lt),isTarget:rn,getState:Oe.getState,setState:Oe.setState,isValidConnection:dt,edgeUpdaterType:xn,onReconnectEnd:Wt})},ct=Rt=>Mt(Rt,!0),Ne=Rt=>Mt(Rt,!1),ze=()=>Be(!0),rt=()=>Be(!1),bt=!q&&!a,zt=Rt=>{if(!re&&EW.includes(Rt.key)&&q){const{unselectNodesAndEdges:Hn,addSelectedEdges:We,edges:ot}=Oe.getState();Rt.key==="Escape"?(ae.current?.blur(),Hn({edges:[ot.find(Pt=>Pt.id===n)]})):We([n])}};return oe.createElement("g",{className:Ls(["react-flow__edge",`react-flow__edge-${s}`,r,{selected:c,animated:d,inactive:bt,updating:_e}]),onClick:$e,onDoubleClick:jt,onContextMenu:vt,onMouseEnter:$n,onMouseMove:qt,onMouseLeave:un,onKeyDown:te?zt:void 0,tabIndex:te?0:void 0,role:te?"button":"img","data-testid":`rf__edge-${n}`,"aria-label":U===null?void 0:U||`Edge from ${k} to ${j}`,"aria-describedby":te?`${YW}-${z}`:void 0,ref:ae},!Ye&&oe.createElement(t,{id:n,source:k,target:j,selected:c,animated:d,label:h,labelStyle:m,labelShowBg:g,labelBgStyle:x,labelBgPadding:y,labelBgBorderRadius:w,data:i,style:S,sourceX:N,sourceY:T,targetX:E,targetY:_,sourcePosition:A,targetPosition:D,sourceHandleId:H,targetHandleId:W,markerStart:Ve,markerEnd:Ue,pathOptions:G,interactionWidth:se}),ne&&oe.createElement(oe.Fragment,null,(ne==="source"||ne===!0)&&oe.createElement(AD,{position:A,centerX:N,centerY:T,radius:$,onMouseDown:ct,onMouseEnter:ze,onMouseOut:rt,type:"source"}),(ne==="target"||ne===!0)&&oe.createElement(AD,{position:D,centerX:E,centerY:_,radius:$,onMouseDown:Ne,onMouseEnter:ze,onMouseOut:rt,type:"target"})))};return e.displayName="EdgeWrapper",b.memo(e)};function mCe(t){const e={default:ph(t.default||Ly),straight:ph(t.bezier||a7),step:ph(t.step||i7),smoothstep:ph(t.step||sw),simplebezier:ph(t.simplebezier||s7)},n={},r=Object.keys(t).filter(s=>!["default","bezier"].includes(s)).reduce((s,i)=>(s[i]=ph(t[i]||Ly),s),n);return{...e,...r}}function MD(t,e,n=null){const r=(n?.x||0)+e.x,s=(n?.y||0)+e.y,i=n?.width||e.width,a=n?.height||e.height;switch(t){case kt.Top:return{x:r+i/2,y:s};case kt.Right:return{x:r+i,y:s+a/2};case kt.Bottom:return{x:r+i/2,y:s+a};case kt.Left:return{x:r,y:s+a/2}}}function RD(t,e){return t?t.length===1||!e?t[0]:e&&t.find(n=>n.id===e)||null:null}const pCe=(t,e,n,r,s,i)=>{const a=MD(n,t,e),l=MD(i,r,s);return{sourceX:a.x,sourceY:a.y,targetX:l.x,targetY:l.y}};function gCe({sourcePos:t,targetPos:e,sourceWidth:n,sourceHeight:r,targetWidth:s,targetHeight:i,width:a,height:l,transform:c}){const d={x:Math.min(t.x,e.x),y:Math.min(t.y,e.y),x2:Math.max(t.x+n,e.x+s),y2:Math.max(t.y+r,e.y+i)};d.x===d.x2&&(d.x2+=1),d.y===d.y2&&(d.y2+=1);const h=jp({x:(0-c[0])/c[2],y:(0-c[1])/c[2],width:a/c[2],height:l/c[2]}),m=Math.max(0,Math.min(h.x2,d.x2)-Math.max(h.x,d.x)),g=Math.max(0,Math.min(h.y2,d.y2)-Math.max(h.y,d.y));return Math.ceil(m*g)>0}function DD(t){const e=t?.[$r]?.handleBounds||null,n=e&&t?.width&&t?.height&&typeof t?.positionAbsolute?.x<"u"&&typeof t?.positionAbsolute?.y<"u";return[{x:t?.positionAbsolute?.x||0,y:t?.positionAbsolute?.y||0,width:t?.width||0,height:t?.height||0},e,!!n]}const xCe=[{level:0,isMaxLevel:!0,edges:[]}];function vCe(t,e,n=!1){let r=-1;const s=t.reduce((a,l)=>{const c=Ca(l.zIndex);let d=c?l.zIndex:0;if(n){const h=e.get(l.target),m=e.get(l.source),g=l.selected||h?.selected||m?.selected,x=Math.max(m?.[$r]?.z||0,h?.[$r]?.z||0,1e3);d=(c?l.zIndex:0)+(g?x:0)}return a[d]?a[d].push(l):a[d]=[l],r=d>r?d:r,a},{}),i=Object.entries(s).map(([a,l])=>{const c=+a;return{edges:l,level:c,isMaxLevel:c===r}});return i.length===0?xCe:i}function yCe(t,e,n){const r=gr(b.useCallback(s=>t?s.edges.filter(i=>{const a=e.get(i.source),l=e.get(i.target);return a?.width&&a?.height&&l?.width&&l?.height&&gCe({sourcePos:a.positionAbsolute||{x:0,y:0},targetPos:l.positionAbsolute||{x:0,y:0},sourceWidth:a.width,sourceHeight:a.height,targetWidth:l.width,targetHeight:l.height,width:s.width,height:s.height,transform:s.transform})}):s.edges,[t,e]));return vCe(r,e,n)}const bCe=({color:t="none",strokeWidth:e=1})=>oe.createElement("polyline",{style:{stroke:t,strokeWidth:e},strokeLinecap:"round",strokeLinejoin:"round",fill:"none",points:"-5,-4 0,0 -5,4"}),wCe=({color:t="none",strokeWidth:e=1})=>oe.createElement("polyline",{style:{stroke:t,fill:t,strokeWidth:e},strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"}),PD={[Iy.Arrow]:bCe,[Iy.ArrowClosed]:wCe};function SCe(t){const e=gs();return b.useMemo(()=>Object.prototype.hasOwnProperty.call(PD,t)?PD[t]:(e.getState().onError?.("009",Yl.error009(t)),null),[t])}const kCe=({id:t,type:e,color:n,width:r=12.5,height:s=12.5,markerUnits:i="strokeWidth",strokeWidth:a,orient:l="auto-start-reverse"})=>{const c=SCe(e);return c?oe.createElement("marker",{className:"react-flow__arrowhead",id:t,markerWidth:`${r}`,markerHeight:`${s}`,viewBox:"-10 -10 20 20",markerUnits:i,orient:l,refX:"0",refY:"0"},oe.createElement(c,{color:n,strokeWidth:a})):null},OCe=({defaultColor:t,rfId:e})=>n=>{const r=[];return n.edges.reduce((s,i)=>([i.markerStart,i.markerEnd].forEach(a=>{if(a&&typeof a=="object"){const l=aj(a,e);r.includes(l)||(s.push({id:l,color:a.color||t,...a}),r.push(l))}}),s),[]).sort((s,i)=>s.id.localeCompare(i.id))},cG=({defaultColor:t,rfId:e})=>{const n=gr(b.useCallback(OCe({defaultColor:t,rfId:e}),[t,e]),(r,s)=>!(r.length!==s.length||r.some((i,a)=>i.id!==s[a].id)));return oe.createElement("defs",null,n.map(r=>oe.createElement(kCe,{id:r.id,key:r.id,type:r.type,color:r.color,width:r.width,height:r.height,markerUnits:r.markerUnits,strokeWidth:r.strokeWidth,orient:r.orient})))};cG.displayName="MarkerDefinitions";var jCe=b.memo(cG);const NCe=t=>({nodesConnectable:t.nodesConnectable,edgesFocusable:t.edgesFocusable,edgesUpdatable:t.edgesUpdatable,elementsSelectable:t.elementsSelectable,width:t.width,height:t.height,connectionMode:t.connectionMode,nodeInternals:t.nodeInternals,onError:t.onError}),uG=({defaultMarkerColor:t,onlyRenderVisibleElements:e,elevateEdgesOnSelect:n,rfId:r,edgeTypes:s,noPanClassName:i,onEdgeContextMenu:a,onEdgeMouseEnter:l,onEdgeMouseMove:c,onEdgeMouseLeave:d,onEdgeClick:h,onEdgeDoubleClick:m,onReconnect:g,onReconnectStart:x,onReconnectEnd:y,reconnectRadius:w,children:S,disableKeyboardA11y:k})=>{const{edgesFocusable:j,edgesUpdatable:N,elementsSelectable:T,width:E,height:_,connectionMode:A,nodeInternals:D,onError:q}=gr(NCe,ks),B=yCe(e,D,n);return E?oe.createElement(oe.Fragment,null,B.map(({level:H,edges:W,isMaxLevel:ee})=>oe.createElement("svg",{key:H,style:{zIndex:H},width:E,height:_,className:"react-flow__edges react-flow__container"},ee&&oe.createElement(jCe,{defaultColor:t,rfId:r}),oe.createElement("g",null,W.map(I=>{const[V,L,$]=DD(D.get(I.source)),[K,Y,R]=DD(D.get(I.target));if(!$||!R)return null;let ie=I.type||"default";s[ie]||(q?.("011",Yl.error011(ie)),ie="default");const X=s[ie]||s.default,z=A===vd.Strict?Y.target:(Y.target??[]).concat(Y.source??[]),U=RD(L.source,I.sourceHandle),te=RD(z,I.targetHandle),ne=U?.position||kt.Bottom,G=te?.position||kt.Top,se=!!(I.focusable||j&&typeof I.focusable>"u"),re=I.reconnectable||I.updatable,ae=typeof g<"u"&&(re||N&&typeof re>"u");if(!U||!te)return q?.("008",Yl.error008(U,I)),null;const{sourceX:_e,sourceY:Be,targetX:Ye,targetY:Je}=pCe(V,U,ne,K,te,G);return oe.createElement(X,{key:I.id,id:I.id,className:Ls([I.className,i]),type:ie,data:I.data,selected:!!I.selected,animated:!!I.animated,hidden:!!I.hidden,label:I.label,labelStyle:I.labelStyle,labelShowBg:I.labelShowBg,labelBgStyle:I.labelBgStyle,labelBgPadding:I.labelBgPadding,labelBgBorderRadius:I.labelBgBorderRadius,style:I.style,source:I.source,target:I.target,sourceHandleId:I.sourceHandle,targetHandleId:I.targetHandle,markerEnd:I.markerEnd,markerStart:I.markerStart,sourceX:_e,sourceY:Be,targetX:Ye,targetY:Je,sourcePosition:ne,targetPosition:G,elementsSelectable:T,onContextMenu:a,onMouseEnter:l,onMouseMove:c,onMouseLeave:d,onClick:h,onEdgeDoubleClick:m,onReconnect:g,onReconnectStart:x,onReconnectEnd:y,reconnectRadius:w,rfId:r,ariaLabel:I.ariaLabel,isFocusable:se,isReconnectable:ae,pathOptions:"pathOptions"in I?I.pathOptions:void 0,interactionWidth:I.interactionWidth,disableKeyboardA11y:k})})))),S):null};uG.displayName="EdgeRenderer";var CCe=b.memo(uG);const TCe=t=>`translate(${t.transform[0]}px,${t.transform[1]}px) scale(${t.transform[2]})`;function ECe({children:t}){const e=gr(TCe);return oe.createElement("div",{className:"react-flow__viewport react-flow__container",style:{transform:e}},t)}function _Ce(t){const e=u7(),n=b.useRef(!1);b.useEffect(()=>{!n.current&&e.viewportInitialized&&t&&(setTimeout(()=>t(e),1),n.current=!0)},[t,e.viewportInitialized])}const ACe={[kt.Left]:kt.Right,[kt.Right]:kt.Left,[kt.Top]:kt.Bottom,[kt.Bottom]:kt.Top},dG=({nodeId:t,handleType:e,style:n,type:r=qc.Bezier,CustomComponent:s,connectionStatus:i})=>{const{fromNode:a,handleId:l,toX:c,toY:d,connectionMode:h}=gr(b.useCallback(_=>({fromNode:_.nodeInternals.get(t),handleId:_.connectionHandleId,toX:(_.connectionPosition.x-_.transform[0])/_.transform[2],toY:(_.connectionPosition.y-_.transform[1])/_.transform[2],connectionMode:_.connectionMode}),[t]),ks),m=a?.[$r]?.handleBounds;let g=m?.[e];if(h===vd.Loose&&(g=g||m?.[e==="source"?"target":"source"]),!a||!g)return null;const x=l?g.find(_=>_.id===l):g[0],y=x?x.x+x.width/2:(a.width??0)/2,w=x?x.y+x.height/2:a.height??0,S=(a.positionAbsolute?.x??0)+y,k=(a.positionAbsolute?.y??0)+w,j=x?.position,N=j?ACe[j]:null;if(!j||!N)return null;if(s)return oe.createElement(s,{connectionLineType:r,connectionLineStyle:n,fromNode:a,fromHandle:x,fromX:S,fromY:k,toX:c,toY:d,fromPosition:j,toPosition:N,connectionStatus:i});let T="";const E={sourceX:S,sourceY:k,sourcePosition:j,targetX:c,targetY:d,targetPosition:N};return r===qc.Bezier?[T]=DW(E):r===qc.Step?[T]=ij({...E,borderRadius:0}):r===qc.SmoothStep?[T]=ij(E):r===qc.SimpleBezier?[T]=RW(E):T=`M${S},${k} ${c},${d}`,oe.createElement("path",{d:T,fill:"none",className:"react-flow__connection-path",style:n})};dG.displayName="ConnectionLine";const MCe=t=>({nodeId:t.connectionNodeId,handleType:t.connectionHandleType,nodesConnectable:t.nodesConnectable,connectionStatus:t.connectionStatus,width:t.width,height:t.height});function RCe({containerStyle:t,style:e,type:n,component:r}){const{nodeId:s,handleType:i,nodesConnectable:a,width:l,height:c,connectionStatus:d}=gr(MCe,ks);return!(s&&i&&l&&a)?null:oe.createElement("svg",{style:t,width:l,height:c,className:"react-flow__edges react-flow__connectionline react-flow__container"},oe.createElement("g",{className:Ls(["react-flow__connection",d])},oe.createElement(dG,{nodeId:s,handleType:i,style:e,type:n,CustomComponent:r,connectionStatus:d})))}function zD(t,e){return b.useRef(null),gs(),b.useMemo(()=>e(t),[t])}const hG=({nodeTypes:t,edgeTypes:e,onMove:n,onMoveStart:r,onMoveEnd:s,onInit:i,onNodeClick:a,onEdgeClick:l,onNodeDoubleClick:c,onEdgeDoubleClick:d,onNodeMouseEnter:h,onNodeMouseMove:m,onNodeMouseLeave:g,onNodeContextMenu:x,onSelectionContextMenu:y,onSelectionStart:w,onSelectionEnd:S,connectionLineType:k,connectionLineStyle:j,connectionLineComponent:N,connectionLineContainerStyle:T,selectionKeyCode:E,selectionOnDrag:_,selectionMode:A,multiSelectionKeyCode:D,panActivationKeyCode:q,zoomActivationKeyCode:B,deleteKeyCode:H,onlyRenderVisibleElements:W,elementsSelectable:ee,selectNodesOnDrag:I,defaultViewport:V,translateExtent:L,minZoom:$,maxZoom:K,preventScrolling:Y,defaultMarkerColor:R,zoomOnScroll:ie,zoomOnPinch:X,panOnScroll:z,panOnScrollSpeed:U,panOnScrollMode:te,zoomOnDoubleClick:ne,panOnDrag:G,onPaneClick:se,onPaneMouseEnter:re,onPaneMouseMove:ae,onPaneMouseLeave:_e,onPaneScroll:Be,onPaneContextMenu:Ye,onEdgeContextMenu:Je,onEdgeMouseEnter:Oe,onEdgeMouseMove:Ve,onEdgeMouseLeave:Ue,onReconnect:$e,onReconnectStart:jt,onReconnectEnd:vt,reconnectRadius:$n,noDragClassName:qt,noWheelClassName:un,noPanClassName:Mt,elevateEdgesOnSelect:ct,disableKeyboardA11y:Ne,nodeOrigin:ze,nodeExtent:rt,rfId:bt})=>{const zt=zD(t,oCe),Rt=zD(e,mCe);return _Ce(i),oe.createElement(iCe,{onPaneClick:se,onPaneMouseEnter:re,onPaneMouseMove:ae,onPaneMouseLeave:_e,onPaneContextMenu:Ye,onPaneScroll:Be,deleteKeyCode:H,selectionKeyCode:E,selectionOnDrag:_,selectionMode:A,onSelectionStart:w,onSelectionEnd:S,multiSelectionKeyCode:D,panActivationKeyCode:q,zoomActivationKeyCode:B,elementsSelectable:ee,onMove:n,onMoveStart:r,onMoveEnd:s,zoomOnScroll:ie,zoomOnPinch:X,zoomOnDoubleClick:ne,panOnScroll:z,panOnScrollSpeed:U,panOnScrollMode:te,panOnDrag:G,defaultViewport:V,translateExtent:L,minZoom:$,maxZoom:K,onSelectionContextMenu:y,preventScrolling:Y,noDragClassName:qt,noWheelClassName:un,noPanClassName:Mt,disableKeyboardA11y:Ne},oe.createElement(ECe,null,oe.createElement(CCe,{edgeTypes:Rt,onEdgeClick:l,onEdgeDoubleClick:d,onlyRenderVisibleElements:W,onEdgeContextMenu:Je,onEdgeMouseEnter:Oe,onEdgeMouseMove:Ve,onEdgeMouseLeave:Ue,onReconnect:$e,onReconnectStart:jt,onReconnectEnd:vt,reconnectRadius:$n,defaultMarkerColor:R,noPanClassName:Mt,elevateEdgesOnSelect:!!ct,disableKeyboardA11y:Ne,rfId:bt},oe.createElement(RCe,{style:j,type:k,component:N,containerStyle:T})),oe.createElement("div",{className:"react-flow__edgelabel-renderer"}),oe.createElement(uCe,{nodeTypes:zt,onNodeClick:a,onNodeDoubleClick:c,onNodeMouseEnter:h,onNodeMouseMove:m,onNodeMouseLeave:g,onNodeContextMenu:x,selectNodesOnDrag:I,onlyRenderVisibleElements:W,noPanClassName:Mt,noDragClassName:qt,disableKeyboardA11y:Ne,nodeOrigin:ze,nodeExtent:rt,rfId:bt})))};hG.displayName="GraphView";var DCe=b.memo(hG);const uj=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],Mc={rfId:"1",width:0,height:0,transform:[0,0,1],nodeInternals:new Map,edges:[],onNodesChange:null,onEdgesChange:null,hasDefaultNodes:!1,hasDefaultEdges:!1,d3Zoom:null,d3Selection:null,d3ZoomHandler:void 0,minZoom:.5,maxZoom:2,translateExtent:uj,nodeExtent:uj,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionNodeId:null,connectionHandleId:null,connectionHandleType:"source",connectionPosition:{x:0,y:0},connectionStatus:null,connectionMode:vd.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:[0,0],nodeDragThreshold:0,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesUpdatable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,fitViewOnInit:!1,fitViewOnInitDone:!1,fitViewOnInitOptions:void 0,onSelectionChange:[],multiSelectionActive:!1,connectionStartHandle:null,connectionEndHandle:null,connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,connectionRadius:20,onError:l7e,isValidConnection:void 0},PCe=()=>XOe((t,e)=>({...Mc,setNodes:n=>{const{nodeInternals:r,nodeOrigin:s,elevateNodesOnSelect:i}=e();t({nodeInternals:m5(n,r,s,i)})},getNodes:()=>Array.from(e().nodeInternals.values()),setEdges:n=>{const{defaultEdgeOptions:r={}}=e();t({edges:n.map(s=>({...r,...s}))})},setDefaultNodesAndEdges:(n,r)=>{const s=typeof n<"u",i=typeof r<"u",a=s?m5(n,new Map,e().nodeOrigin,e().elevateNodesOnSelect):new Map;t({nodeInternals:a,edges:i?r:[],hasDefaultNodes:s,hasDefaultEdges:i})},updateNodeDimensions:n=>{const{onNodesChange:r,nodeInternals:s,fitViewOnInit:i,fitViewOnInitDone:a,fitViewOnInitOptions:l,domNode:c,nodeOrigin:d}=e(),h=c?.querySelector(".react-flow__viewport");if(!h)return;const m=window.getComputedStyle(h),{m22:g}=new window.DOMMatrixReadOnly(m.transform),x=n.reduce((w,S)=>{const k=s.get(S.id);if(k?.hidden)s.set(k.id,{...k,[$r]:{...k[$r],handleBounds:void 0}});else if(k){const j=n7(S.nodeElement);!!(j.width&&j.height&&(k.width!==j.width||k.height!==j.height||S.forceUpdate))&&(s.set(k.id,{...k,[$r]:{...k[$r],handleBounds:{source:ED(".source",S.nodeElement,g,d),target:ED(".target",S.nodeElement,g,d)}},...j}),w.push({id:k.id,type:"dimensions",dimensions:j}))}return w},[]);ZW(s,d);const y=a||i&&!a&&JW(e,{initial:!0,...l});t({nodeInternals:new Map(s),fitViewOnInitDone:y}),x?.length>0&&r?.(x)},updateNodePositions:(n,r=!0,s=!1)=>{const{triggerNodeChanges:i}=e(),a=n.map(l=>{const c={id:l.id,type:"position",dragging:s};return r&&(c.positionAbsolute=l.positionAbsolute,c.position=l.position),c});i(a)},triggerNodeChanges:n=>{const{onNodesChange:r,nodeInternals:s,hasDefaultNodes:i,nodeOrigin:a,getNodes:l,elevateNodesOnSelect:c}=e();if(n?.length){if(i){const d=tG(n,l()),h=m5(d,s,a,c);t({nodeInternals:h})}r?.(n)}},addSelectedNodes:n=>{const{multiSelectionActive:r,edges:s,getNodes:i}=e();let a,l=null;r?a=n.map(c=>Lc(c,!0)):(a=Ah(i(),n),l=Ah(s,[])),X1({changedNodes:a,changedEdges:l,get:e,set:t})},addSelectedEdges:n=>{const{multiSelectionActive:r,edges:s,getNodes:i}=e();let a,l=null;r?a=n.map(c=>Lc(c,!0)):(a=Ah(s,n),l=Ah(i(),[])),X1({changedNodes:l,changedEdges:a,get:e,set:t})},unselectNodesAndEdges:({nodes:n,edges:r}={})=>{const{edges:s,getNodes:i}=e(),a=n||i(),l=r||s,c=a.map(h=>(h.selected=!1,Lc(h.id,!1))),d=l.map(h=>Lc(h.id,!1));X1({changedNodes:c,changedEdges:d,get:e,set:t})},setMinZoom:n=>{const{d3Zoom:r,maxZoom:s}=e();r?.scaleExtent([n,s]),t({minZoom:n})},setMaxZoom:n=>{const{d3Zoom:r,minZoom:s}=e();r?.scaleExtent([s,n]),t({maxZoom:n})},setTranslateExtent:n=>{e().d3Zoom?.translateExtent(n),t({translateExtent:n})},resetSelectedElements:()=>{const{edges:n,getNodes:r}=e(),i=r().filter(l=>l.selected).map(l=>Lc(l.id,!1)),a=n.filter(l=>l.selected).map(l=>Lc(l.id,!1));X1({changedNodes:i,changedEdges:a,get:e,set:t})},setNodeExtent:n=>{const{nodeInternals:r}=e();r.forEach(s=>{s.positionAbsolute=r7(s.position,n)}),t({nodeExtent:n,nodeInternals:new Map(r)})},panBy:n=>{const{transform:r,width:s,height:i,d3Zoom:a,d3Selection:l,translateExtent:c}=e();if(!a||!l||!n.x&&!n.y)return!1;const d=$l.translate(r[0]+n.x,r[1]+n.y).scale(r[2]),h=[[0,0],[s,i]],m=a?.constrain()(d,h,c);return a.transform(l,m),r[0]!==m.x||r[1]!==m.y||r[2]!==m.k},cancelConnection:()=>t({connectionNodeId:Mc.connectionNodeId,connectionHandleId:Mc.connectionHandleId,connectionHandleType:Mc.connectionHandleType,connectionStatus:Mc.connectionStatus,connectionStartHandle:Mc.connectionStartHandle,connectionEndHandle:Mc.connectionEndHandle}),reset:()=>t({...Mc})}),Object.is),fG=({children:t})=>{const e=b.useRef(null);return e.current||(e.current=PCe()),oe.createElement(t7e,{value:e.current},t)};fG.displayName="ReactFlowProvider";const mG=({children:t})=>b.useContext(nw)?oe.createElement(oe.Fragment,null,t):oe.createElement(fG,null,t);mG.displayName="ReactFlowWrapper";const zCe={input:VW,default:lj,output:WW,group:c7},ICe={default:Ly,straight:a7,step:i7,smoothstep:sw,simplebezier:s7},LCe=[0,0],BCe=[15,15],FCe={x:0,y:0,zoom:1},qCe={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0},pG=b.forwardRef(({nodes:t,edges:e,defaultNodes:n,defaultEdges:r,className:s,nodeTypes:i=zCe,edgeTypes:a=ICe,onNodeClick:l,onEdgeClick:c,onInit:d,onMove:h,onMoveStart:m,onMoveEnd:g,onConnect:x,onConnectStart:y,onConnectEnd:w,onClickConnectStart:S,onClickConnectEnd:k,onNodeMouseEnter:j,onNodeMouseMove:N,onNodeMouseLeave:T,onNodeContextMenu:E,onNodeDoubleClick:_,onNodeDragStart:A,onNodeDrag:D,onNodeDragStop:q,onNodesDelete:B,onEdgesDelete:H,onSelectionChange:W,onSelectionDragStart:ee,onSelectionDrag:I,onSelectionDragStop:V,onSelectionContextMenu:L,onSelectionStart:$,onSelectionEnd:K,connectionMode:Y=vd.Strict,connectionLineType:R=qc.Bezier,connectionLineStyle:ie,connectionLineComponent:X,connectionLineContainerStyle:z,deleteKeyCode:U="Backspace",selectionKeyCode:te="Shift",selectionOnDrag:ne=!1,selectionMode:G=Np.Full,panActivationKeyCode:se="Space",multiSelectionKeyCode:re=zy()?"Meta":"Control",zoomActivationKeyCode:ae=zy()?"Meta":"Control",snapToGrid:_e=!1,snapGrid:Be=BCe,onlyRenderVisibleElements:Ye=!1,selectNodesOnDrag:Je=!0,nodesDraggable:Oe,nodesConnectable:Ve,nodesFocusable:Ue,nodeOrigin:$e=LCe,edgesFocusable:jt,edgesUpdatable:vt,elementsSelectable:$n,defaultViewport:qt=FCe,minZoom:un=.5,maxZoom:Mt=2,translateExtent:ct=uj,preventScrolling:Ne=!0,nodeExtent:ze,defaultMarkerColor:rt="#b1b1b7",zoomOnScroll:bt=!0,zoomOnPinch:zt=!0,panOnScroll:Rt=!1,panOnScrollSpeed:Hn=.5,panOnScrollMode:We=Yu.Free,zoomOnDoubleClick:ot=!0,panOnDrag:dn=!0,onPaneClick:Pt,onPaneMouseEnter:xn,onPaneMouseMove:dt,onPaneMouseLeave:rn,onPaneScroll:wt,onPaneContextMenu:Wt,children:Gt,onEdgeContextMenu:lt,onEdgeDoubleClick:ve,onEdgeMouseEnter:He,onEdgeMouseMove:ht,onEdgeMouseLeave:vn,onEdgeUpdate:Qn,onEdgeUpdateStart:fr,onEdgeUpdateEnd:ar,onReconnect:xs,onReconnectStart:vs,onReconnectEnd:js,reconnectRadius:ge=10,edgeUpdaterRadius:Ie=10,onNodesChange:Et,onEdgesChange:kn,noDragClassName:Hr="nodrag",noWheelClassName:Mr="nowheel",noPanClassName:Rr="nopan",fitView:Ns=!1,fitViewOptions:Vf,connectOnClick:hw=!0,attributionPosition:fw,proOptions:Dg,defaultEdgeOptions:xu,elevateNodesOnSelect:Uf=!0,elevateEdgesOnSelect:rc=!1,disableKeyboardA11y:Jo=!1,autoPanOnConnect:vu=!0,autoPanOnNodeDrag:sc=!0,connectionRadius:Kr=20,isValidConnection:Pg,onError:zg,style:el,id:tl,nodeDragThreshold:mw,...Ig},Lg)=>{const Wf=tl||"1";return oe.createElement("div",{...Ig,style:{...el,...qCe},ref:Lg,className:Ls(["react-flow",s]),"data-testid":"rf__wrapper",id:tl},oe.createElement(mG,null,oe.createElement(DCe,{onInit:d,onMove:h,onMoveStart:m,onMoveEnd:g,onNodeClick:l,onEdgeClick:c,onNodeMouseEnter:j,onNodeMouseMove:N,onNodeMouseLeave:T,onNodeContextMenu:E,onNodeDoubleClick:_,nodeTypes:i,edgeTypes:a,connectionLineType:R,connectionLineStyle:ie,connectionLineComponent:X,connectionLineContainerStyle:z,selectionKeyCode:te,selectionOnDrag:ne,selectionMode:G,deleteKeyCode:U,multiSelectionKeyCode:re,panActivationKeyCode:se,zoomActivationKeyCode:ae,onlyRenderVisibleElements:Ye,selectNodesOnDrag:Je,defaultViewport:qt,translateExtent:ct,minZoom:un,maxZoom:Mt,preventScrolling:Ne,zoomOnScroll:bt,zoomOnPinch:zt,zoomOnDoubleClick:ot,panOnScroll:Rt,panOnScrollSpeed:Hn,panOnScrollMode:We,panOnDrag:dn,onPaneClick:Pt,onPaneMouseEnter:xn,onPaneMouseMove:dt,onPaneMouseLeave:rn,onPaneScroll:wt,onPaneContextMenu:Wt,onSelectionContextMenu:L,onSelectionStart:$,onSelectionEnd:K,onEdgeContextMenu:lt,onEdgeDoubleClick:ve,onEdgeMouseEnter:He,onEdgeMouseMove:ht,onEdgeMouseLeave:vn,onReconnect:xs??Qn,onReconnectStart:vs??fr,onReconnectEnd:js??ar,reconnectRadius:ge??Ie,defaultMarkerColor:rt,noDragClassName:Hr,noWheelClassName:Mr,noPanClassName:Rr,elevateEdgesOnSelect:rc,rfId:Wf,disableKeyboardA11y:Jo,nodeOrigin:$e,nodeExtent:ze}),oe.createElement(A7e,{nodes:t,edges:e,defaultNodes:n,defaultEdges:r,onConnect:x,onConnectStart:y,onConnectEnd:w,onClickConnectStart:S,onClickConnectEnd:k,nodesDraggable:Oe,nodesConnectable:Ve,nodesFocusable:Ue,edgesFocusable:jt,edgesUpdatable:vt,elementsSelectable:$n,elevateNodesOnSelect:Uf,minZoom:un,maxZoom:Mt,nodeExtent:ze,onNodesChange:Et,onEdgesChange:kn,snapToGrid:_e,snapGrid:Be,connectionMode:Y,translateExtent:ct,connectOnClick:hw,defaultEdgeOptions:xu,fitView:Ns,fitViewOptions:Vf,onNodesDelete:B,onEdgesDelete:H,onNodeDragStart:A,onNodeDrag:D,onNodeDragStop:q,onSelectionDrag:I,onSelectionDragStart:ee,onSelectionDragStop:V,noPanClassName:Rr,nodeOrigin:$e,rfId:Wf,autoPanOnConnect:vu,autoPanOnNodeDrag:sc,onError:zg,connectionRadius:Kr,isValidConnection:Pg,nodeDragThreshold:mw}),oe.createElement(E7e,{onSelectionChange:W}),Gt,oe.createElement(r7e,{proOptions:Dg,position:fw}),oe.createElement(z7e,{rfId:Wf,disableKeyboardA11y:Jo})))});pG.displayName="ReactFlow";function gG(t){return e=>{const[n,r]=b.useState(e),s=b.useCallback(i=>r(a=>t(i,a)),[]);return[n,r,s]}}const $Ce=gG(tG),HCe=gG(Y7e),xG=({id:t,x:e,y:n,width:r,height:s,style:i,color:a,strokeColor:l,strokeWidth:c,className:d,borderRadius:h,shapeRendering:m,onClick:g,selected:x})=>{const{background:y,backgroundColor:w}=i||{},S=a||y||w;return oe.createElement("rect",{className:Ls(["react-flow__minimap-node",{selected:x},d]),x:e,y:n,rx:h,ry:h,width:r,height:s,fill:S,stroke:l,strokeWidth:c,shapeRendering:m,onClick:g?k=>g(k,t):void 0})};xG.displayName="MiniMapNode";var QCe=b.memo(xG);const VCe=t=>t.nodeOrigin,UCe=t=>t.getNodes().filter(e=>!e.hidden&&e.width&&e.height),v5=t=>t instanceof Function?t:()=>t;function WCe({nodeStrokeColor:t="transparent",nodeColor:e="#e2e2e2",nodeClassName:n="",nodeBorderRadius:r=5,nodeStrokeWidth:s=2,nodeComponent:i=QCe,onClick:a}){const l=gr(UCe,ks),c=gr(VCe),d=v5(e),h=v5(t),m=v5(n),g=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return oe.createElement(oe.Fragment,null,l.map(x=>{const{x:y,y:w}=id(x,c).positionAbsolute;return oe.createElement(i,{key:x.id,x:y,y:w,width:x.width,height:x.height,style:x.style,selected:x.selected,className:m(x),color:d(x),borderRadius:r,strokeColor:h(x),strokeWidth:s,shapeRendering:g,onClick:a,id:x.id})}))}var GCe=b.memo(WCe);const XCe=200,YCe=150,KCe=t=>{const e=t.getNodes(),n={x:-t.transform[0]/t.transform[2],y:-t.transform[1]/t.transform[2],width:t.width/t.transform[2],height:t.height/t.transform[2]};return{viewBB:n,boundingRect:e.length>0?a7e(iw(e,t.nodeOrigin),n):n,rfId:t.rfId}},ZCe="react-flow__minimap-desc";function vG({style:t,className:e,nodeStrokeColor:n="transparent",nodeColor:r="#e2e2e2",nodeClassName:s="",nodeBorderRadius:i=5,nodeStrokeWidth:a=2,nodeComponent:l,maskColor:c="rgb(240, 240, 240, 0.6)",maskStrokeColor:d="none",maskStrokeWidth:h=1,position:m="bottom-right",onClick:g,onNodeClick:x,pannable:y=!1,zoomable:w=!1,ariaLabel:S="React Flow mini map",inversePan:k=!1,zoomStep:j=10,offsetScale:N=5}){const T=gs(),E=b.useRef(null),{boundingRect:_,viewBB:A,rfId:D}=gr(KCe,ks),q=t?.width??XCe,B=t?.height??YCe,H=_.width/q,W=_.height/B,ee=Math.max(H,W),I=ee*q,V=ee*B,L=N*ee,$=_.x-(I-_.width)/2-L,K=_.y-(V-_.height)/2-L,Y=I+L*2,R=V+L*2,ie=`${ZCe}-${D}`,X=b.useRef(0);X.current=ee,b.useEffect(()=>{if(E.current){const te=va(E.current),ne=re=>{const{transform:ae,d3Selection:_e,d3Zoom:Be}=T.getState();if(re.sourceEvent.type!=="wheel"||!_e||!Be)return;const Ye=-re.sourceEvent.deltaY*(re.sourceEvent.deltaMode===1?.05:re.sourceEvent.deltaMode?1:.002)*j,Je=ae[2]*Math.pow(2,Ye);Be.scaleTo(_e,Je)},G=re=>{const{transform:ae,d3Selection:_e,d3Zoom:Be,translateExtent:Ye,width:Je,height:Oe}=T.getState();if(re.sourceEvent.type!=="mousemove"||!_e||!Be)return;const Ve=X.current*Math.max(1,ae[2])*(k?-1:1),Ue={x:ae[0]-re.sourceEvent.movementX*Ve,y:ae[1]-re.sourceEvent.movementY*Ve},$e=[[0,0],[Je,Oe]],jt=$l.translate(Ue.x,Ue.y).scale(ae[2]),vt=Be.constrain()(jt,$e,Ye);Be.transform(_e,vt)},se=kW().on("zoom",y?G:null).on("zoom.wheel",w?ne:null);return te.call(se),()=>{te.on("zoom",null)}}},[y,w,k,j]);const z=g?te=>{const ne=Qa(te);g(te,{x:ne[0],y:ne[1]})}:void 0,U=x?(te,ne)=>{const G=T.getState().nodeInternals.get(ne);x(te,G)}:void 0;return oe.createElement(rw,{position:m,style:t,className:Ls(["react-flow__minimap",e]),"data-testid":"rf__minimap"},oe.createElement("svg",{width:q,height:B,viewBox:`${$} ${K} ${Y} ${R}`,role:"img","aria-labelledby":ie,ref:E,onClick:z},S&&oe.createElement("title",{id:ie},S),oe.createElement(GCe,{onClick:U,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:i,nodeClassName:s,nodeStrokeWidth:a,nodeComponent:l}),oe.createElement("path",{className:"react-flow__minimap-mask",d:`M${$-L},${K-L}h${Y+L*2}v${R+L*2}h${-Y-L*2}z - M${A.x},${A.y}h${A.width}v${A.height}h${-A.width}z`,fill:c,fillRule:"evenodd",stroke:d,strokeWidth:h,pointerEvents:"none"})))}vG.displayName="MiniMap";var JCe=b.memo(vG);function e8e(){return oe.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32"},oe.createElement("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"}))}function t8e(){return oe.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5"},oe.createElement("path",{d:"M0 0h32v4.2H0z"}))}function n8e(){return oe.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30"},oe.createElement("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"}))}function r8e(){return oe.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},oe.createElement("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"}))}function s8e(){return oe.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},oe.createElement("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"}))}const g0=({children:t,className:e,...n})=>oe.createElement("button",{type:"button",className:Ls(["react-flow__controls-button",e]),...n},t);g0.displayName="ControlButton";const i8e=t=>({isInteractive:t.nodesDraggable||t.nodesConnectable||t.elementsSelectable,minZoomReached:t.transform[2]<=t.minZoom,maxZoomReached:t.transform[2]>=t.maxZoom}),yG=({style:t,showZoom:e=!0,showFitView:n=!0,showInteractive:r=!0,fitViewOptions:s,onZoomIn:i,onZoomOut:a,onFitView:l,onInteractiveChange:c,className:d,children:h,position:m="bottom-left"})=>{const g=gs(),[x,y]=b.useState(!1),{isInteractive:w,minZoomReached:S,maxZoomReached:k}=gr(i8e,ks),{zoomIn:j,zoomOut:N,fitView:T}=u7();if(b.useEffect(()=>{y(!0)},[]),!x)return null;const E=()=>{j(),i?.()},_=()=>{N(),a?.()},A=()=>{T(s),l?.()},D=()=>{g.setState({nodesDraggable:!w,nodesConnectable:!w,elementsSelectable:!w}),c?.(!w)};return oe.createElement(rw,{className:Ls(["react-flow__controls",d]),position:m,style:t,"data-testid":"rf__controls"},e&&oe.createElement(oe.Fragment,null,oe.createElement(g0,{onClick:E,className:"react-flow__controls-zoomin",title:"zoom in","aria-label":"zoom in",disabled:k},oe.createElement(e8e,null)),oe.createElement(g0,{onClick:_,className:"react-flow__controls-zoomout",title:"zoom out","aria-label":"zoom out",disabled:S},oe.createElement(t8e,null))),n&&oe.createElement(g0,{className:"react-flow__controls-fitview",onClick:A,title:"fit view","aria-label":"fit view"},oe.createElement(n8e,null)),r&&oe.createElement(g0,{className:"react-flow__controls-interactive",onClick:D,title:"toggle interactivity","aria-label":"toggle interactivity"},w?oe.createElement(s8e,null):oe.createElement(r8e,null)),h)};yG.displayName="Controls";var a8e=b.memo(yG),Ea;(function(t){t.Lines="lines",t.Dots="dots",t.Cross="cross"})(Ea||(Ea={}));function o8e({color:t,dimensions:e,lineWidth:n}){return oe.createElement("path",{stroke:t,strokeWidth:n,d:`M${e[0]/2} 0 V${e[1]} M0 ${e[1]/2} H${e[0]}`})}function l8e({color:t,radius:e}){return oe.createElement("circle",{cx:e,cy:e,r:e,fill:t})}const c8e={[Ea.Dots]:"#91919a",[Ea.Lines]:"#eee",[Ea.Cross]:"#e2e2e2"},u8e={[Ea.Dots]:1,[Ea.Lines]:1,[Ea.Cross]:6},d8e=t=>({transform:t.transform,patternId:`pattern-${t.rfId}`});function bG({id:t,variant:e=Ea.Dots,gap:n=20,size:r,lineWidth:s=1,offset:i=2,color:a,style:l,className:c}){const d=b.useRef(null),{transform:h,patternId:m}=gr(d8e,ks),g=a||c8e[e],x=r||u8e[e],y=e===Ea.Dots,w=e===Ea.Cross,S=Array.isArray(n)?n:[n,n],k=[S[0]*h[2]||1,S[1]*h[2]||1],j=x*h[2],N=w?[j,j]:k,T=y?[j/i,j/i]:[N[0]/i,N[1]/i];return oe.createElement("svg",{className:Ls(["react-flow__background",c]),style:{...l,position:"absolute",width:"100%",height:"100%",top:0,left:0},ref:d,"data-testid":"rf__background"},oe.createElement("pattern",{id:m+t,x:h[0]%k[0],y:h[1]%k[1],width:k[0],height:k[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${T[0]},-${T[1]})`},y?oe.createElement(l8e,{color:g,radius:j/i}):oe.createElement(o8e,{dimensions:N,color:g,lineWidth:s})),oe.createElement("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${m+t})`}))}bG.displayName="Background";var h8e=b.memo(bG);function h7(t){throw new Error('Could not dynamically require "'+t+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var y5,ID;function f8e(){if(ID)return y5;ID=1;var t=Vz(),e=4;function n(r){return t(r,e)}return y5=n,y5}var b5,LD;function wG(){if(LD)return b5;LD=1;var t=HJ();function e(n){return typeof n=="function"?n:t}return b5=e,b5}var w5,BD;function SG(){if(BD)return w5;BD=1;var t=Uz(),e=wj(),n=wG(),r=bd();function s(i,a){var l=r(i)?t:e;return l(i,n(a))}return w5=s,w5}var S5,FD;function kG(){return FD||(FD=1,S5=SG()),S5}var k5,qD;function m8e(){if(qD)return k5;qD=1;var t=wj();function e(n,r){var s=[];return t(n,function(i,a,l){r(i,a,l)&&s.push(i)}),s}return k5=e,k5}var O5,$D;function OG(){if($D)return O5;$D=1;var t=QJ(),e=m8e(),n=Sj(),r=bd();function s(i,a){var l=r(i)?t:e;return l(i,n(a,3))}return O5=s,O5}var j5,HD;function p8e(){if(HD)return j5;HD=1;var t=Object.prototype,e=t.hasOwnProperty;function n(r,s){return r!=null&&e.call(r,s)}return j5=n,j5}var N5,QD;function jG(){if(QD)return N5;QD=1;var t=p8e(),e=VJ();function n(r,s){return r!=null&&e(r,s,t)}return N5=n,N5}var C5,VD;function g8e(){if(VD)return C5;VD=1;var t=Wz(),e=Gz(),n=Xz(),r=bd(),s=kj(),i=Oj(),a=UJ(),l=jj(),c="[object Map]",d="[object Set]",h=Object.prototype,m=h.hasOwnProperty;function g(x){if(x==null)return!0;if(s(x)&&(r(x)||typeof x=="string"||typeof x.splice=="function"||i(x)||l(x)||n(x)))return!x.length;var y=e(x);if(y==c||y==d)return!x.size;if(a(x))return!t(x).length;for(var w in x)if(m.call(x,w))return!1;return!0}return C5=g,C5}var T5,UD;function NG(){if(UD)return T5;UD=1;function t(e){return e===void 0}return T5=t,T5}var E5,WD;function x8e(){if(WD)return E5;WD=1;function t(e,n,r,s){var i=-1,a=e==null?0:e.length;for(s&&a&&(r=e[++i]);++i1?x.setNode(y,m):x.setNode(y)}),this},s.prototype.setNode=function(h,m){return t.has(this._nodes,h)?(arguments.length>1&&(this._nodes[h]=m),this):(this._nodes[h]=arguments.length>1?m:this._defaultNodeLabelFn(h),this._isCompound&&(this._parent[h]=n,this._children[h]={},this._children[n][h]=!0),this._in[h]={},this._preds[h]={},this._out[h]={},this._sucs[h]={},++this._nodeCount,this)},s.prototype.node=function(h){return this._nodes[h]},s.prototype.hasNode=function(h){return t.has(this._nodes,h)},s.prototype.removeNode=function(h){var m=this;if(t.has(this._nodes,h)){var g=function(x){m.removeEdge(m._edgeObjs[x])};delete this._nodes[h],this._isCompound&&(this._removeFromParentsChildList(h),delete this._parent[h],t.each(this.children(h),function(x){m.setParent(x)}),delete this._children[h]),t.each(t.keys(this._in[h]),g),delete this._in[h],delete this._preds[h],t.each(t.keys(this._out[h]),g),delete this._out[h],delete this._sucs[h],--this._nodeCount}return this},s.prototype.setParent=function(h,m){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(t.isUndefined(m))m=n;else{m+="";for(var g=m;!t.isUndefined(g);g=this.parent(g))if(g===h)throw new Error("Setting "+m+" as parent of "+h+" would create a cycle");this.setNode(m)}return this.setNode(h),this._removeFromParentsChildList(h),this._parent[h]=m,this._children[m][h]=!0,this},s.prototype._removeFromParentsChildList=function(h){delete this._children[this._parent[h]][h]},s.prototype.parent=function(h){if(this._isCompound){var m=this._parent[h];if(m!==n)return m}},s.prototype.children=function(h){if(t.isUndefined(h)&&(h=n),this._isCompound){var m=this._children[h];if(m)return t.keys(m)}else{if(h===n)return this.nodes();if(this.hasNode(h))return[]}},s.prototype.predecessors=function(h){var m=this._preds[h];if(m)return t.keys(m)},s.prototype.successors=function(h){var m=this._sucs[h];if(m)return t.keys(m)},s.prototype.neighbors=function(h){var m=this.predecessors(h);if(m)return t.union(m,this.successors(h))},s.prototype.isLeaf=function(h){var m;return this.isDirected()?m=this.successors(h):m=this.neighbors(h),m.length===0},s.prototype.filterNodes=function(h){var m=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});m.setGraph(this.graph());var g=this;t.each(this._nodes,function(w,S){h(S)&&m.setNode(S,w)}),t.each(this._edgeObjs,function(w){m.hasNode(w.v)&&m.hasNode(w.w)&&m.setEdge(w,g.edge(w))});var x={};function y(w){var S=g.parent(w);return S===void 0||m.hasNode(S)?(x[w]=S,S):S in x?x[S]:y(S)}return this._isCompound&&t.each(m.nodes(),function(w){m.setParent(w,y(w))}),m},s.prototype.setDefaultEdgeLabel=function(h){return t.isFunction(h)||(h=t.constant(h)),this._defaultEdgeLabelFn=h,this},s.prototype.edgeCount=function(){return this._edgeCount},s.prototype.edges=function(){return t.values(this._edgeObjs)},s.prototype.setPath=function(h,m){var g=this,x=arguments;return t.reduce(h,function(y,w){return x.length>1?g.setEdge(y,w,m):g.setEdge(y,w),w}),this},s.prototype.setEdge=function(){var h,m,g,x,y=!1,w=arguments[0];typeof w=="object"&&w!==null&&"v"in w?(h=w.v,m=w.w,g=w.name,arguments.length===2&&(x=arguments[1],y=!0)):(h=w,m=arguments[1],g=arguments[3],arguments.length>2&&(x=arguments[2],y=!0)),h=""+h,m=""+m,t.isUndefined(g)||(g=""+g);var S=l(this._isDirected,h,m,g);if(t.has(this._edgeLabels,S))return y&&(this._edgeLabels[S]=x),this;if(!t.isUndefined(g)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(h),this.setNode(m),this._edgeLabels[S]=y?x:this._defaultEdgeLabelFn(h,m,g);var k=c(this._isDirected,h,m,g);return h=k.v,m=k.w,Object.freeze(k),this._edgeObjs[S]=k,i(this._preds[m],h),i(this._sucs[h],m),this._in[m][S]=k,this._out[h][S]=k,this._edgeCount++,this},s.prototype.edge=function(h,m,g){var x=arguments.length===1?d(this._isDirected,arguments[0]):l(this._isDirected,h,m,g);return this._edgeLabels[x]},s.prototype.hasEdge=function(h,m,g){var x=arguments.length===1?d(this._isDirected,arguments[0]):l(this._isDirected,h,m,g);return t.has(this._edgeLabels,x)},s.prototype.removeEdge=function(h,m,g){var x=arguments.length===1?d(this._isDirected,arguments[0]):l(this._isDirected,h,m,g),y=this._edgeObjs[x];return y&&(h=y.v,m=y.w,delete this._edgeLabels[x],delete this._edgeObjs[x],a(this._preds[m],h),a(this._sucs[h],m),delete this._in[m][x],delete this._out[h][x],this._edgeCount--),this},s.prototype.inEdges=function(h,m){var g=this._in[h];if(g){var x=t.values(g);return m?t.filter(x,function(y){return y.v===m}):x}},s.prototype.outEdges=function(h,m){var g=this._out[h];if(g){var x=t.values(g);return m?t.filter(x,function(y){return y.w===m}):x}},s.prototype.nodeEdges=function(h,m){var g=this.inEdges(h,m);if(g)return g.concat(this.outEdges(h,m))};function i(h,m){h[m]?h[m]++:h[m]=1}function a(h,m){--h[m]||delete h[m]}function l(h,m,g,x){var y=""+m,w=""+g;if(!h&&y>w){var S=y;y=w,w=S}return y+r+w+r+(t.isUndefined(x)?e:x)}function c(h,m,g,x){var y=""+m,w=""+g;if(!h&&y>w){var S=y;y=w,w=S}var k={v:y,w};return x&&(k.name=x),k}function d(h,m){return l(h,m.v,m.w,m.name)}return $5}var H5,oP;function N8e(){return oP||(oP=1,H5="2.1.8"),H5}var Q5,lP;function C8e(){return lP||(lP=1,Q5={Graph:f7(),version:N8e()}),Q5}var V5,cP;function T8e(){if(cP)return V5;cP=1;var t=Ia(),e=f7();V5={write:n,read:i};function n(a){var l={options:{directed:a.isDirected(),multigraph:a.isMultigraph(),compound:a.isCompound()},nodes:r(a),edges:s(a)};return t.isUndefined(a.graph())||(l.value=t.clone(a.graph())),l}function r(a){return t.map(a.nodes(),function(l){var c=a.node(l),d=a.parent(l),h={v:l};return t.isUndefined(c)||(h.value=c),t.isUndefined(d)||(h.parent=d),h})}function s(a){return t.map(a.edges(),function(l){var c=a.edge(l),d={v:l.v,w:l.w};return t.isUndefined(l.name)||(d.name=l.name),t.isUndefined(c)||(d.value=c),d})}function i(a){var l=new e(a.options).setGraph(a.value);return t.each(a.nodes,function(c){l.setNode(c.v,c.value),c.parent&&l.setParent(c.v,c.parent)}),t.each(a.edges,function(c){l.setEdge({v:c.v,w:c.w,name:c.name},c.value)}),l}return V5}var U5,uP;function E8e(){if(uP)return U5;uP=1;var t=Ia();U5=e;function e(n){var r={},s=[],i;function a(l){t.has(r,l)||(r[l]=!0,i.push(l),t.each(n.successors(l),a),t.each(n.predecessors(l),a))}return t.each(n.nodes(),function(l){i=[],a(l),i.length&&s.push(i)}),s}return U5}var W5,dP;function _G(){if(dP)return W5;dP=1;var t=Ia();W5=e;function e(){this._arr=[],this._keyIndices={}}return e.prototype.size=function(){return this._arr.length},e.prototype.keys=function(){return this._arr.map(function(n){return n.key})},e.prototype.has=function(n){return t.has(this._keyIndices,n)},e.prototype.priority=function(n){var r=this._keyIndices[n];if(r!==void 0)return this._arr[r].priority},e.prototype.min=function(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key},e.prototype.add=function(n,r){var s=this._keyIndices;if(n=String(n),!t.has(s,n)){var i=this._arr,a=i.length;return s[n]=a,i.push({key:n,priority:r}),this._decrease(a),!0}return!1},e.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var n=this._arr.pop();return delete this._keyIndices[n.key],this._heapify(0),n.key},e.prototype.decrease=function(n,r){var s=this._keyIndices[n];if(r>this._arr[s].priority)throw new Error("New priority is greater than current priority. Key: "+n+" Old: "+this._arr[s].priority+" New: "+r);this._arr[s].priority=r,this._decrease(s)},e.prototype._heapify=function(n){var r=this._arr,s=2*n,i=s+1,a=n;s>1,!(r[i].priority0&&(m=h.removeMin(),g=d[m],g.distance!==Number.POSITIVE_INFINITY);)c(m).forEach(x);return d}return G5}var X5,fP;function _8e(){if(fP)return X5;fP=1;var t=AG(),e=Ia();X5=n;function n(r,s,i){return e.transform(r.nodes(),function(a,l){a[l]=t(r,l,s,i)},{})}return X5}var Y5,mP;function MG(){if(mP)return Y5;mP=1;var t=Ia();Y5=e;function e(n){var r=0,s=[],i={},a=[];function l(c){var d=i[c]={onStack:!0,lowlink:r,index:r++};if(s.push(c),n.successors(c).forEach(function(g){t.has(i,g)?i[g].onStack&&(d.lowlink=Math.min(d.lowlink,i[g].index)):(l(g),d.lowlink=Math.min(d.lowlink,i[g].lowlink))}),d.lowlink===d.index){var h=[],m;do m=s.pop(),i[m].onStack=!1,h.push(m);while(c!==m);a.push(h)}}return n.nodes().forEach(function(c){t.has(i,c)||l(c)}),a}return Y5}var K5,pP;function A8e(){if(pP)return K5;pP=1;var t=Ia(),e=MG();K5=n;function n(r){return t.filter(e(r),function(s){return s.length>1||s.length===1&&r.hasEdge(s[0],s[0])})}return K5}var Z5,gP;function M8e(){if(gP)return Z5;gP=1;var t=Ia();Z5=n;var e=t.constant(1);function n(s,i,a){return r(s,i||e,a||function(l){return s.outEdges(l)})}function r(s,i,a){var l={},c=s.nodes();return c.forEach(function(d){l[d]={},l[d][d]={distance:0},c.forEach(function(h){d!==h&&(l[d][h]={distance:Number.POSITIVE_INFINITY})}),a(d).forEach(function(h){var m=h.v===d?h.w:h.v,g=i(h);l[d][m]={distance:g,predecessor:d}})}),c.forEach(function(d){var h=l[d];c.forEach(function(m){var g=l[m];c.forEach(function(x){var y=g[d],w=h[x],S=g[x],k=y.distance+w.distance;k0;){if(d=c.removeMin(),t.has(l,d))a.setEdge(d,l[d]);else{if(m)throw new Error("Input graph is not connected: "+s);m=!0}s.nodeEdges(d).forEach(h)}return a}return s3}var i3,kP;function I8e(){return kP||(kP=1,i3={components:E8e(),dijkstra:AG(),dijkstraAll:_8e(),findCycles:A8e(),floydWarshall:M8e(),isAcyclic:R8e(),postorder:D8e(),preorder:P8e(),prim:z8e(),tarjan:MG(),topsort:RG()}),i3}var a3,OP;function L8e(){if(OP)return a3;OP=1;var t=C8e();return a3={Graph:t.Graph,json:T8e(),alg:I8e(),version:t.version},a3}var o3,jP;function to(){if(jP)return o3;jP=1;var t;if(typeof h7=="function")try{t=L8e()}catch{}return t||(t=window.graphlib),o3=t,o3}var l3,NP;function B8e(){if(NP)return l3;NP=1;var t=Vz(),e=1,n=4;function r(s){return t(s,e|n)}return l3=r,l3}var c3,CP;function F8e(){if(CP)return c3;CP=1;var t=Cj(),e=eI(),n=Jz(),r=Hy(),s=Object.prototype,i=s.hasOwnProperty,a=t(function(l,c){l=Object(l);var d=-1,h=c.length,m=h>2?c[2]:void 0;for(m&&n(c[0],c[1],m)&&(h=1);++d1?i[l-1]:void 0,d=l>2?i[2]:void 0;for(c=r.length>3&&typeof c=="function"?(l--,c):void 0,d&&e(i[0],i[1],d)&&(c=l<3?void 0:c,l=1),s=Object(s);++a0;--S)if(w=h[S].dequeue(),w){g=g.concat(a(d,h,m,w,!0));break}}}return g}function a(d,h,m,g,x){var y=x?[]:void 0;return t.forEach(d.inEdges(g.v),function(w){var S=d.edge(w),k=d.node(w.v);x&&y.push({v:w.v,w:w.w}),k.out-=S,c(h,m,k)}),t.forEach(d.outEdges(g.v),function(w){var S=d.edge(w),k=w.w,j=d.node(k);j.in-=S,c(h,m,j)}),d.removeNode(g.v),y}function l(d,h){var m=new e,g=0,x=0;t.forEach(d.nodes(),function(S){m.setNode(S,{v:S,in:0,out:0})}),t.forEach(d.edges(),function(S){var k=m.edge(S.v,S.w)||0,j=h(S),N=k+j;m.setEdge(S.v,S.w,N),x=Math.max(x,m.node(S.v).out+=j),g=Math.max(g,m.node(S.w).in+=j)});var y=t.range(x+g+3).map(function(){return new n}),w=g+1;return t.forEach(m.nodes(),function(S){c(y,w,m.node(S))}),{graph:m,buckets:y,zeroIdx:w}}function c(d,h,m){m.out?m.in?d[m.out-m.in+h].enqueue(m):d[d.length-1].enqueue(m):d[0].enqueue(m)}return C3}var T3,UP;function nTe(){if(UP)return T3;UP=1;var t=Ar(),e=tTe();T3={run:n,undo:s};function n(i){var a=i.graph().acyclicer==="greedy"?e(i,l(i)):r(i);t.forEach(a,function(c){var d=i.edge(c);i.removeEdge(c),d.forwardName=c.name,d.reversed=!0,i.setEdge(c.w,c.v,d,t.uniqueId("rev"))});function l(c){return function(d){return c.edge(d).weight}}}function r(i){var a=[],l={},c={};function d(h){t.has(c,h)||(c[h]=!0,l[h]=!0,t.forEach(i.outEdges(h),function(m){t.has(l,m.w)?a.push(m):d(m.w)}),delete l[h])}return t.forEach(i.nodes(),d),a}function s(i){t.forEach(i.edges(),function(a){var l=i.edge(a);if(l.reversed){i.removeEdge(a);var c=l.forwardName;delete l.reversed,delete l.forwardName,i.setEdge(a.w,a.v,l,c)}})}return T3}var E3,WP;function Ti(){if(WP)return E3;WP=1;var t=Ar(),e=to().Graph;E3={addDummyNode:n,simplify:r,asNonCompoundGraph:s,successorWeights:i,predecessorWeights:a,intersectRect:l,buildLayerMatrix:c,normalizeRanks:d,removeEmptyRanks:h,addBorderNode:m,maxRank:g,partition:x,time:y,notime:w};function n(S,k,j,N){var T;do T=t.uniqueId(N);while(S.hasNode(T));return j.dummy=k,S.setNode(T,j),T}function r(S){var k=new e().setGraph(S.graph());return t.forEach(S.nodes(),function(j){k.setNode(j,S.node(j))}),t.forEach(S.edges(),function(j){var N=k.edge(j.v,j.w)||{weight:0,minlen:1},T=S.edge(j);k.setEdge(j.v,j.w,{weight:N.weight+T.weight,minlen:Math.max(N.minlen,T.minlen)})}),k}function s(S){var k=new e({multigraph:S.isMultigraph()}).setGraph(S.graph());return t.forEach(S.nodes(),function(j){S.children(j).length||k.setNode(j,S.node(j))}),t.forEach(S.edges(),function(j){k.setEdge(j,S.edge(j))}),k}function i(S){var k=t.map(S.nodes(),function(j){var N={};return t.forEach(S.outEdges(j),function(T){N[T.w]=(N[T.w]||0)+S.edge(T).weight}),N});return t.zipObject(S.nodes(),k)}function a(S){var k=t.map(S.nodes(),function(j){var N={};return t.forEach(S.inEdges(j),function(T){N[T.v]=(N[T.v]||0)+S.edge(T).weight}),N});return t.zipObject(S.nodes(),k)}function l(S,k){var j=S.x,N=S.y,T=k.x-j,E=k.y-N,_=S.width/2,A=S.height/2;if(!T&&!E)throw new Error("Not possible to find intersection inside of the rectangle");var D,q;return Math.abs(E)*_>Math.abs(T)*A?(E<0&&(A=-A),D=A*T/E,q=A):(T<0&&(_=-_),D=_,q=_*E/T),{x:j+D,y:N+q}}function c(S){var k=t.map(t.range(g(S)+1),function(){return[]});return t.forEach(S.nodes(),function(j){var N=S.node(j),T=N.rank;t.isUndefined(T)||(k[T][N.order]=j)}),k}function d(S){var k=t.min(t.map(S.nodes(),function(j){return S.node(j).rank}));t.forEach(S.nodes(),function(j){var N=S.node(j);t.has(N,"rank")&&(N.rank-=k)})}function h(S){var k=t.min(t.map(S.nodes(),function(E){return S.node(E).rank})),j=[];t.forEach(S.nodes(),function(E){var _=S.node(E).rank-k;j[_]||(j[_]=[]),j[_].push(E)});var N=0,T=S.graph().nodeRankFactor;t.forEach(j,function(E,_){t.isUndefined(E)&&_%T!==0?--N:N&&t.forEach(E,function(A){S.node(A).rank+=N})})}function m(S,k,j,N){var T={width:0,height:0};return arguments.length>=4&&(T.rank=j,T.order=N),n(S,"border",T,k)}function g(S){return t.max(t.map(S.nodes(),function(k){var j=S.node(k).rank;if(!t.isUndefined(j))return j}))}function x(S,k){var j={lhs:[],rhs:[]};return t.forEach(S,function(N){k(N)?j.lhs.push(N):j.rhs.push(N)}),j}function y(S,k){var j=t.now();try{return k()}finally{console.log(S+" time: "+(t.now()-j)+"ms")}}function w(S,k){return k()}return E3}var _3,GP;function rTe(){if(GP)return _3;GP=1;var t=Ar(),e=Ti();_3={run:n,undo:s};function n(i){i.graph().dummyChains=[],t.forEach(i.edges(),function(a){r(i,a)})}function r(i,a){var l=a.v,c=i.node(l).rank,d=a.w,h=i.node(d).rank,m=a.name,g=i.edge(a),x=g.labelRank;if(h!==c+1){i.removeEdge(a);var y,w,S;for(S=0,++c;cq.lim&&(B=q,H=!0);var W=t.filter(T.edges(),function(ee){return H===j(N,N.node(ee.v),B)&&H!==j(N,N.node(ee.w),B)});return t.minBy(W,function(ee){return n(T,ee)})}function w(N,T,E,_){var A=E.v,D=E.w;N.removeEdge(A,D),N.setEdge(_.v,_.w,{}),m(N),c(N,T),S(N,T)}function S(N,T){var E=t.find(N.nodes(),function(A){return!T.node(A).parent}),_=s(N,E);_=_.slice(1),t.forEach(_,function(A){var D=N.node(A).parent,q=T.edge(A,D),B=!1;q||(q=T.edge(D,A),B=!0),T.node(A).rank=T.node(D).rank+(B?q.minlen:-q.minlen)})}function k(N,T,E){return N.hasEdge(T,E)}function j(N,T,E){return E.low<=T.lim&&T.lim<=E.lim}return R3}var D3,ZP;function iTe(){if(ZP)return D3;ZP=1;var t=By(),e=t.longestPath,n=IG(),r=sTe();D3=s;function s(c){switch(c.graph().ranker){case"network-simplex":l(c);break;case"tight-tree":a(c);break;case"longest-path":i(c);break;default:l(c)}}var i=e;function a(c){e(c),n(c)}function l(c){r(c)}return D3}var P3,JP;function aTe(){if(JP)return P3;JP=1;var t=Ar();P3=e;function e(s){var i=r(s);t.forEach(s.graph().dummyChains,function(a){for(var l=s.node(a),c=l.edgeObj,d=n(s,i,c.v,c.w),h=d.path,m=d.lca,g=0,x=h[g],y=!0;a!==c.w;){if(l=s.node(a),y){for(;(x=h[g])!==m&&s.node(x).maxRankh||m>i[g].lim));for(x=g,g=l;(g=s.parent(g))!==x;)d.push(g);return{path:c.concat(d.reverse()),lca:x}}function r(s){var i={},a=0;function l(c){var d=a;t.forEach(s.children(c),l),i[c]={low:d,lim:a++}}return t.forEach(s.children(),l),i}return P3}var z3,ez;function oTe(){if(ez)return z3;ez=1;var t=Ar(),e=Ti();z3={run:n,cleanup:a};function n(l){var c=e.addDummyNode(l,"root",{},"_root"),d=s(l),h=t.max(t.values(d))-1,m=2*h+1;l.graph().nestingRoot=c,t.forEach(l.edges(),function(x){l.edge(x).minlen*=m});var g=i(l)+1;t.forEach(l.children(),function(x){r(l,c,m,g,h,d,x)}),l.graph().nodeRankFactor=m}function r(l,c,d,h,m,g,x){var y=l.children(x);if(!y.length){x!==c&&l.setEdge(c,x,{weight:0,minlen:d});return}var w=e.addBorderNode(l,"_bt"),S=e.addBorderNode(l,"_bb"),k=l.node(x);l.setParent(w,x),k.borderTop=w,l.setParent(S,x),k.borderBottom=S,t.forEach(y,function(j){r(l,c,d,h,m,g,j);var N=l.node(j),T=N.borderTop?N.borderTop:j,E=N.borderBottom?N.borderBottom:j,_=N.borderTop?h:2*h,A=T!==E?1:m-g[x]+1;l.setEdge(w,T,{weight:_,minlen:A,nestingEdge:!0}),l.setEdge(E,S,{weight:_,minlen:A,nestingEdge:!0})}),l.parent(x)||l.setEdge(c,w,{weight:0,minlen:m+g[x]})}function s(l){var c={};function d(h,m){var g=l.children(h);g&&g.length&&t.forEach(g,function(x){d(x,m+1)}),c[h]=m}return t.forEach(l.children(),function(h){d(h,1)}),c}function i(l){return t.reduce(l.edges(),function(c,d){return c+l.edge(d).weight},0)}function a(l){var c=l.graph();l.removeNode(c.nestingRoot),delete c.nestingRoot,t.forEach(l.edges(),function(d){var h=l.edge(d);h.nestingEdge&&l.removeEdge(d)})}return z3}var I3,tz;function lTe(){if(tz)return I3;tz=1;var t=Ar(),e=Ti();I3=n;function n(s){function i(a){var l=s.children(a),c=s.node(a);if(l.length&&t.forEach(l,i),t.has(c,"minRank")){c.borderLeft=[],c.borderRight=[];for(var d=c.minRank,h=c.maxRank+1;d0;)x%2&&(y+=h[x+1]),x=x-1>>1,h[x]+=g.weight;m+=g.weight*y})),m}return F3}var q3,iz;function hTe(){if(iz)return q3;iz=1;var t=Ar();q3=e;function e(n,r){return t.map(r,function(s){var i=n.inEdges(s);if(i.length){var a=t.reduce(i,function(l,c){var d=n.edge(c),h=n.node(c.v);return{sum:l.sum+d.weight*h.order,weight:l.weight+d.weight}},{sum:0,weight:0});return{v:s,barycenter:a.sum/a.weight,weight:a.weight}}else return{v:s}})}return q3}var $3,az;function fTe(){if(az)return $3;az=1;var t=Ar();$3=e;function e(s,i){var a={};t.forEach(s,function(c,d){var h=a[c.v]={indegree:0,in:[],out:[],vs:[c.v],i:d};t.isUndefined(c.barycenter)||(h.barycenter=c.barycenter,h.weight=c.weight)}),t.forEach(i.edges(),function(c){var d=a[c.v],h=a[c.w];!t.isUndefined(d)&&!t.isUndefined(h)&&(h.indegree++,d.out.push(a[c.w]))});var l=t.filter(a,function(c){return!c.indegree});return n(l)}function n(s){var i=[];function a(d){return function(h){h.merged||(t.isUndefined(h.barycenter)||t.isUndefined(d.barycenter)||h.barycenter>=d.barycenter)&&r(d,h)}}function l(d){return function(h){h.in.push(d),--h.indegree===0&&s.push(h)}}for(;s.length;){var c=s.pop();i.push(c),t.forEach(c.in.reverse(),a(c)),t.forEach(c.out,l(c))}return t.map(t.filter(i,function(d){return!d.merged}),function(d){return t.pick(d,["vs","i","barycenter","weight"])})}function r(s,i){var a=0,l=0;s.weight&&(a+=s.barycenter*s.weight,l+=s.weight),i.weight&&(a+=i.barycenter*i.weight,l+=i.weight),s.vs=i.vs.concat(s.vs),s.barycenter=a/l,s.weight=l,s.i=Math.min(i.i,s.i),i.merged=!0}return $3}var H3,oz;function mTe(){if(oz)return H3;oz=1;var t=Ar(),e=Ti();H3=n;function n(i,a){var l=e.partition(i,function(w){return t.has(w,"barycenter")}),c=l.lhs,d=t.sortBy(l.rhs,function(w){return-w.i}),h=[],m=0,g=0,x=0;c.sort(s(!!a)),x=r(h,d,x),t.forEach(c,function(w){x+=w.vs.length,h.push(w.vs),m+=w.barycenter*w.weight,g+=w.weight,x=r(h,d,x)});var y={vs:t.flatten(h,!0)};return g&&(y.barycenter=m/g,y.weight=g),y}function r(i,a,l){for(var c;a.length&&(c=t.last(a)).i<=l;)a.pop(),i.push(c.vs),l++;return l}function s(i){return function(a,l){return a.barycenterl.barycenter?1:i?l.i-a.i:a.i-l.i}}return H3}var Q3,lz;function pTe(){if(lz)return Q3;lz=1;var t=Ar(),e=hTe(),n=fTe(),r=mTe();Q3=s;function s(l,c,d,h){var m=l.children(c),g=l.node(c),x=g?g.borderLeft:void 0,y=g?g.borderRight:void 0,w={};x&&(m=t.filter(m,function(E){return E!==x&&E!==y}));var S=e(l,m);t.forEach(S,function(E){if(l.children(E.v).length){var _=s(l,E.v,d,h);w[E.v]=_,t.has(_,"barycenter")&&a(E,_)}});var k=n(S,d);i(k,w);var j=r(k,h);if(x&&(j.vs=t.flatten([x,j.vs,y],!0),l.predecessors(x).length)){var N=l.node(l.predecessors(x)[0]),T=l.node(l.predecessors(y)[0]);t.has(j,"barycenter")||(j.barycenter=0,j.weight=0),j.barycenter=(j.barycenter*j.weight+N.order+T.order)/(j.weight+2),j.weight+=2}return j}function i(l,c){t.forEach(l,function(d){d.vs=t.flatten(d.vs.map(function(h){return c[h]?c[h].vs:h}),!0)})}function a(l,c){t.isUndefined(l.barycenter)?(l.barycenter=c.barycenter,l.weight=c.weight):(l.barycenter=(l.barycenter*l.weight+c.barycenter*c.weight)/(l.weight+c.weight),l.weight+=c.weight)}return Q3}var V3,cz;function gTe(){if(cz)return V3;cz=1;var t=Ar(),e=to().Graph;V3=n;function n(s,i,a){var l=r(s),c=new e({compound:!0}).setGraph({root:l}).setDefaultNodeLabel(function(d){return s.node(d)});return t.forEach(s.nodes(),function(d){var h=s.node(d),m=s.parent(d);(h.rank===i||h.minRank<=i&&i<=h.maxRank)&&(c.setNode(d),c.setParent(d,m||l),t.forEach(s[a](d),function(g){var x=g.v===d?g.w:g.v,y=c.edge(x,d),w=t.isUndefined(y)?0:y.weight;c.setEdge(x,d,{weight:s.edge(g).weight+w})}),t.has(h,"minRank")&&c.setNode(d,{borderLeft:h.borderLeft[i],borderRight:h.borderRight[i]}))}),c}function r(s){for(var i;s.hasNode(i=t.uniqueId("_root")););return i}return V3}var U3,uz;function xTe(){if(uz)return U3;uz=1;var t=Ar();U3=e;function e(n,r,s){var i={},a;t.forEach(s,function(l){for(var c=n.parent(l),d,h;c;){if(d=n.parent(c),d?(h=i[d],i[d]=c):(h=a,a=c),h&&h!==c){r.setEdge(h,c);return}c=d}})}return U3}var W3,dz;function vTe(){if(dz)return W3;dz=1;var t=Ar(),e=uTe(),n=dTe(),r=pTe(),s=gTe(),i=xTe(),a=to().Graph,l=Ti();W3=c;function c(g){var x=l.maxRank(g),y=d(g,t.range(1,x+1),"inEdges"),w=d(g,t.range(x-1,-1,-1),"outEdges"),S=e(g);m(g,S);for(var k=Number.POSITIVE_INFINITY,j,N=0,T=0;T<4;++N,++T){h(N%2?y:w,N%4>=2),S=l.buildLayerMatrix(g);var E=n(g,S);EB)&&a(N,ee,H)})})}function E(_,A){var D=-1,q,B=0;return t.forEach(A,function(H,W){if(k.node(H).dummy==="border"){var ee=k.predecessors(H);ee.length&&(q=k.node(ee[0]).order,T(A,B,W,D,q),B=W,D=q)}T(A,B,A.length,q,_.length)}),A}return t.reduce(j,E),N}function i(k,j){if(k.node(j).dummy)return t.find(k.predecessors(j),function(N){return k.node(N).dummy})}function a(k,j,N){if(j>N){var T=j;j=N,N=T}var E=k[j];E||(k[j]=E={}),E[N]=!0}function l(k,j,N){if(j>N){var T=j;j=N,N=T}return t.has(k[j],N)}function c(k,j,N,T){var E={},_={},A={};return t.forEach(j,function(D){t.forEach(D,function(q,B){E[q]=q,_[q]=q,A[q]=B})}),t.forEach(j,function(D){var q=-1;t.forEach(D,function(B){var H=T(B);if(H.length){H=t.sortBy(H,function(L){return A[L]});for(var W=(H.length-1)/2,ee=Math.floor(W),I=Math.ceil(W);ee<=I;++ee){var V=H[ee];_[B]===B&&qo.jsxs("div",{className:"px-4 py-2 shadow-md rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700 min-w-[120px]",children:[o.jsx(au,{type:"target",position:kt.Top}),o.jsx("div",{className:"font-semibold text-white text-sm truncate max-w-[200px]",title:t.content,children:t.label}),o.jsx(au,{type:"source",position:kt.Bottom})]}));LG.displayName="EntityNode";const BG=b.memo(({data:t})=>o.jsxs("div",{className:"px-3 py-2 shadow-md rounded-md bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700 min-w-[100px]",children:[o.jsx(au,{type:"target",position:kt.Top}),o.jsx("div",{className:"font-medium text-white text-xs truncate max-w-[150px]",title:t.content,children:t.label}),o.jsx(au,{type:"source",position:kt.Bottom})]}));BG.displayName="ParagraphNode";const ETe={entity:LG,paragraph:BG};function _Te(t,e){const n=new vz.graphlib.Graph;n.setDefaultEdgeLabel(()=>({})),n.setGraph({rankdir:"TB",ranksep:100,nodesep:80});const r=[],s=[];return t.forEach(i=>{n.setNode(i.id,{width:150,height:50})}),e.forEach(i=>{n.setEdge(i.source,i.target)}),vz.layout(n),t.forEach(i=>{const a=n.node(i.id);r.push({id:i.id,type:i.type,position:{x:a.x-75,y:a.y-25},data:{label:i.content.slice(0,20)+(i.content.length>20?"...":""),content:i.content}})}),e.forEach((i,a)=>{const l={id:`edge-${a}`,source:i.source,target:i.target,animated:t.length<=200&&i.weight>5,style:{strokeWidth:Math.min(i.weight/2,5),opacity:.6}};i.weight>10&&t.length<100&&(l.label=`${i.weight.toFixed(0)}`),s.push(l)}),{nodes:r,edges:s}}function ATe(){const t=na(),[e,n]=b.useState(!1),[r,s]=b.useState(null),[i,a]=b.useState(""),[l,c]=b.useState("all"),[d,h]=b.useState(50),[m,g]=b.useState("50"),[x,y]=b.useState(!1),[w,S]=b.useState(!0),[k,j]=b.useState(!1),[N,T]=b.useState(!1),[E,_,A]=$Ce([]),[D,q,B]=HCe([]),[H,W]=b.useState(0),[ee,I]=b.useState(null),[V,L]=b.useState(null),{toast:$}=Lr(),K=b.useCallback(ne=>ne.type==="entity"?"#6366f1":ne.type==="paragraph"?"#10b981":"#6b7280",[]),Y=b.useCallback(async(ne=!1)=>{try{if(!ne&&d>200){T(!0);return}n(!0);const[G,se]=await Promise.all([NTe(d,l),CTe()]);if(s(se),G.nodes.length===0){$({title:"提示",description:"知识库为空,请先导入知识数据"}),_([]),q([]);return}const{nodes:re,edges:ae}=_Te(G.nodes,G.edges);_(re),q(ae),W(re.length),se&&se.total_nodes>d&&$({title:"提示",description:`知识图谱包含 ${se.total_nodes} 个节点,当前显示 ${re.length} 个`}),$({title:"加载成功",description:`已加载 ${re.length} 个节点,${ae.length} 条边`})}catch(G){console.error("加载知识图谱失败:",G),$({title:"加载失败",description:G instanceof Error?G.message:"未知错误",variant:"destructive"})}finally{n(!1)}},[d,l,$]),R=b.useCallback(async()=>{if(!i.trim()){$({title:"提示",description:"请输入搜索关键词"});return}try{const ne=await TTe(i);if(ne.length===0){$({title:"未找到",description:"没有找到匹配的节点"});return}const G=new Set(ne.map(se=>se.id));_(se=>se.map(re=>({...re,style:{...re.style,opacity:G.has(re.id)?1:.3,filter:G.has(re.id)?"brightness(1.2)":"brightness(0.8)"}}))),$({title:"搜索完成",description:`找到 ${ne.length} 个匹配节点`})}catch(ne){console.error("搜索失败:",ne),$({title:"搜索失败",description:ne instanceof Error?ne.message:"未知错误",variant:"destructive"})}},[i,$]),ie=b.useCallback(()=>{_(ne=>ne.map(G=>({...G,style:{...G.style,opacity:1,filter:"brightness(1)"}})))},[]),X=b.useCallback(()=>{S(!1),j(!0),Y()},[Y]),z=b.useCallback(()=>{T(!1),setTimeout(()=>{Y(!0)},0)},[Y]),U=b.useCallback((ne,G)=>{E.find(re=>re.id===G.id)&&I({id:G.id,type:G.type,content:G.data.content})},[E]);b.useEffect(()=>{w||k&&Y()},[d,l,w,k]);const te=b.useCallback((ne,G)=>{const se=E.find(_e=>_e.id===G.source),re=E.find(_e=>_e.id===G.target),ae=D.find(_e=>_e.id===G.id);se&&re&&ae&&L({source:{id:se.id,type:se.type,content:se.data.content},target:{id:re.id,type:re.type,content:re.data.content},edge:{source:G.source,target:G.target,weight:parseFloat(G.label||"0")}})},[E,D]);return o.jsxs("div",{className:"h-full flex flex-col",children:[o.jsxs("div",{className:"flex-shrink-0 p-4 border-b bg-background",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦知识库图谱"}),o.jsx("p",{className:"text-muted-foreground mt-1",children:"可视化知识实体与关系网络"})]}),r&&o.jsxs("div",{className:"flex gap-2 flex-wrap",children:[o.jsxs(tn,{variant:"outline",className:"gap-1",children:[o.jsx(sk,{className:"h-3 w-3"}),"节点: ",r.total_nodes]}),o.jsxs(tn,{variant:"outline",className:"gap-1",children:[o.jsx(NI,{className:"h-3 w-3"}),"边: ",r.total_edges]}),o.jsxs(tn,{variant:"outline",className:"gap-1",children:[o.jsx(Xi,{className:"h-3 w-3"}),"实体: ",r.entity_nodes]}),o.jsxs(tn,{variant:"outline",className:"gap-1",children:[o.jsx(Po,{className:"h-3 w-3"}),"段落: ",r.paragraph_nodes]})]})]}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 mt-4",children:[o.jsxs("div",{className:"flex-1 flex gap-2",children:[o.jsx(Pe,{placeholder:"搜索节点内容...",value:i,onChange:ne=>a(ne.target.value),onKeyDown:ne=>ne.key==="Enter"&&R(),className:"flex-1"}),o.jsx(ue,{onClick:R,size:"sm",children:o.jsx(ii,{className:"h-4 w-4"})}),o.jsx(ue,{onClick:ie,variant:"outline",size:"sm",children:"重置"})]}),o.jsxs("div",{className:"flex gap-2",children:[o.jsxs(Vt,{value:l,onValueChange:ne=>c(ne),children:[o.jsx($t,{className:"w-[120px]",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部节点"}),o.jsx(De,{value:"entity",children:"仅实体"}),o.jsx(De,{value:"paragraph",children:"仅段落"})]})]}),o.jsxs(Vt,{value:d===1e4?"all":x?"custom":d.toString(),onValueChange:ne=>{ne==="custom"?(y(!0),g(d.toString())):ne==="all"?(y(!1),h(1e4)):(y(!1),h(Number(ne)))},children:[o.jsx($t,{className:"w-[120px]",children:o.jsx(Ut,{})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"50",children:"50 节点"}),o.jsx(De,{value:"100",children:"100 节点"}),o.jsx(De,{value:"200",children:"200 节点"}),o.jsx(De,{value:"500",children:"500 节点"}),o.jsx(De,{value:"1000",children:"1000 节点"}),o.jsx(De,{value:"all",children:"全部 (最多10000)"}),o.jsx(De,{value:"custom",children:"自定义..."})]})]}),x&&o.jsx(Pe,{type:"number",min:"50",value:m,onChange:ne=>g(ne.target.value),onBlur:()=>{const ne=parseInt(m);!isNaN(ne)&&ne>=50?h(ne):(g("50"),h(50))},onKeyDown:ne=>{if(ne.key==="Enter"){const G=parseInt(m);!isNaN(G)&&G>=50?h(G):(g("50"),h(50))}},placeholder:"最少50个",className:"w-[120px]"}),o.jsx(ue,{onClick:()=>Y(),variant:"outline",size:"sm",disabled:e,children:o.jsx(Qs,{className:xe("h-4 w-4",e&&"animate-spin")})})]})]})]}),o.jsx("div",{className:"flex-1 relative",children:e?o.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:o.jsxs("div",{className:"text-center",children:[o.jsx(Qs,{className:"h-8 w-8 animate-spin mx-auto mb-2 text-muted-foreground"}),o.jsx("p",{className:"text-muted-foreground",children:"加载知识图谱中..."})]})}):E.length===0?o.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:o.jsxs("div",{className:"text-center",children:[o.jsx(sk,{className:"h-12 w-12 mx-auto mb-4 text-muted-foreground"}),o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"知识库为空"}),o.jsx("p",{className:"text-muted-foreground",children:"请先导入知识数据"})]})}):o.jsxs(pG,{nodes:E,edges:D,onNodesChange:A,onEdgesChange:B,onNodeClick:U,onEdgeClick:te,nodeTypes:ETe,fitView:!0,minZoom:.05,maxZoom:1.5,defaultViewport:{x:0,y:0,zoom:.5},elevateNodesOnSelect:H<=500,nodesDraggable:H<=1e3,attributionPosition:"bottom-left",children:[o.jsx(h8e,{variant:Ea.Dots,gap:12,size:1}),o.jsx(a8e,{}),H<=500&&o.jsx(JCe,{nodeColor:K,nodeBorderRadius:8,pannable:!0,zoomable:!0}),o.jsxs(rw,{position:"top-right",className:"bg-background/95 backdrop-blur-sm rounded-lg border p-3 shadow-lg",children:[o.jsx("div",{className:"text-sm font-semibold mb-2",children:"图例"}),o.jsxs("div",{className:"space-y-2 text-xs",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700"}),o.jsx("span",{children:"实体节点"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700"}),o.jsx("span",{children:"段落节点"})]}),H>200&&o.jsxs("div",{className:"mt-2 pt-2 border-t text-yellow-600 dark:text-yellow-500",children:[o.jsx("div",{className:"font-semibold",children:"性能模式"}),o.jsx("div",{children:"已禁用动画"}),H>500&&o.jsx("div",{children:"已禁用缩略图"})]})]})]})]})}),o.jsx(Er,{open:!!ee,onOpenChange:ne=>!ne&&I(null),children:o.jsxs(wr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsx(Sr,{children:o.jsx(kr,{children:"节点详情"})}),ee&&o.jsxs("div",{className:"space-y-4",children:[o.jsx("div",{className:"grid grid-cols-2 gap-4",children:o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"类型"}),o.jsx("div",{className:"mt-1",children:o.jsx(tn,{variant:ee.type==="entity"?"default":"secondary",children:ee.type==="entity"?"🏷️ 实体":"📄 段落"})})]})}),o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"ID"}),o.jsx("code",{className:"mt-1 block p-2 bg-muted rounded text-xs break-all",children:ee.id})]}),o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"内容"}),o.jsx(pn,{className:"mt-1 h-40 p-3 bg-muted rounded",children:o.jsx("p",{className:"text-sm whitespace-pre-wrap",children:ee.content})})]})]})]})}),o.jsx(Er,{open:!!V,onOpenChange:ne=>!ne&&L(null),children:o.jsxs(wr,{className:"max-w-2xl max-h-[80vh] overflow-hidden flex flex-col",children:[o.jsx(Sr,{children:o.jsx(kr,{children:"边详情"})}),V&&o.jsx(pn,{className:"flex-1 pr-4",children:o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-blue-50 dark:bg-blue-950 rounded border-2 border-blue-200 dark:border-blue-800",children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"源节点"}),o.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:V.source.content}),o.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[V.source.id.slice(0,40),"..."]})]}),o.jsx("div",{className:"text-2xl text-muted-foreground flex-shrink-0",children:"→"}),o.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-green-50 dark:bg-green-950 rounded border-2 border-green-200 dark:border-green-800",children:[o.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"目标节点"}),o.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:V.target.content}),o.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[V.target.id.slice(0,40),"..."]})]})]}),o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"权重"}),o.jsx("div",{className:"mt-1",children:o.jsx(tn,{variant:"outline",className:"text-base font-mono",children:V.edge.weight.toFixed(4)})})]})]})})]})}),o.jsx(Fn,{open:w,onOpenChange:S,children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"加载知识图谱"}),o.jsxs(zn,{children:["知识图谱的动态展示会消耗较多系统资源。",o.jsx("br",{}),"确定要加载知识图谱吗?"]})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{onClick:()=>t({to:"/"}),children:"取消 (返回首页)"}),o.jsx(In,{onClick:X,children:"确认加载"})]})]})}),o.jsx(Fn,{open:N,onOpenChange:T,children:o.jsxs(Mn,{children:[o.jsxs(Rn,{children:[o.jsx(Pn,{children:"⚠️ 节点数量较多"}),o.jsx(zn,{asChild:!0,children:o.jsxs("div",{children:[o.jsxs("p",{children:["您正在尝试加载 ",o.jsx("strong",{className:"text-orange-600",children:d>=1e4?"全部 (最多10000个)":d})," 个节点。"]}),o.jsx("p",{className:"mt-4",children:"节点数量过多可能导致:"}),o.jsxs("ul",{className:"list-disc list-inside mt-2 space-y-1",children:[o.jsx("li",{children:"页面加载时间较长"}),o.jsx("li",{children:"浏览器卡顿或崩溃"}),o.jsx("li",{children:"系统资源占用过高"})]}),o.jsx("p",{className:"mt-4",children:"建议先选择较少的节点数量 (50-200 个)。"})]})})]}),o.jsxs(Dn,{children:[o.jsx(Ln,{onClick:()=>{T(!1),d>200&&(h(50),y(!1))},children:"取消"}),o.jsx(In,{onClick:z,className:"bg-orange-600 hover:bg-orange-700",children:"我了解风险,继续加载"})]})]})})]})}function gh(t,e,n){let r=n.initialDeps??[],s;function i(){var a,l,c,d;let h;n.key&&((a=n.debug)!=null&&a.call(n))&&(h=Date.now());const m=t();if(!(m.length!==r.length||m.some((y,w)=>r[w]!==y)))return s;r=m;let x;if(n.key&&((l=n.debug)!=null&&l.call(n))&&(x=Date.now()),s=e(...m),n.key&&((c=n.debug)!=null&&c.call(n))){const y=Math.round((Date.now()-h)*100)/100,w=Math.round((Date.now()-x)*100)/100,S=w/16,k=(j,N)=>{for(j=String(j);j.length{r=a},i}function yz(t,e){if(t===void 0)throw new Error("Unexpected undefined");return t}const MTe=(t,e)=>Math.abs(t-e)<1.01,RTe=(t,e,n)=>{let r;return function(...s){t.clearTimeout(r),r=t.setTimeout(()=>e.apply(this,s),n)}},bz=t=>{const{offsetWidth:e,offsetHeight:n}=t;return{width:e,height:n}},DTe=t=>t,PTe=t=>{const e=Math.max(t.startIndex-t.overscan,0),n=Math.min(t.endIndex+t.overscan,t.count-1),r=[];for(let s=e;s<=n;s++)r.push(s);return r},zTe=(t,e)=>{const n=t.scrollElement;if(!n)return;const r=t.targetWindow;if(!r)return;const s=a=>{const{width:l,height:c}=a;e({width:Math.round(l),height:Math.round(c)})};if(s(bz(n)),!r.ResizeObserver)return()=>{};const i=new r.ResizeObserver(a=>{const l=()=>{const c=a[0];if(c?.borderBoxSize){const d=c.borderBoxSize[0];if(d){s({width:d.inlineSize,height:d.blockSize});return}}s(bz(n))};t.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(l):l()});return i.observe(n,{box:"border-box"}),()=>{i.unobserve(n)}},wz={passive:!0},Sz=typeof window>"u"?!0:"onscrollend"in window,ITe=(t,e)=>{const n=t.scrollElement;if(!n)return;const r=t.targetWindow;if(!r)return;let s=0;const i=t.options.useScrollendEvent&&Sz?()=>{}:RTe(r,()=>{e(s,!1)},t.options.isScrollingResetDelay),a=h=>()=>{const{horizontal:m,isRtl:g}=t.options;s=m?n.scrollLeft*(g&&-1||1):n.scrollTop,i(),e(s,h)},l=a(!0),c=a(!1);c(),n.addEventListener("scroll",l,wz);const d=t.options.useScrollendEvent&&Sz;return d&&n.addEventListener("scrollend",c,wz),()=>{n.removeEventListener("scroll",l),d&&n.removeEventListener("scrollend",c)}},LTe=(t,e,n)=>{if(e?.borderBoxSize){const r=e.borderBoxSize[0];if(r)return Math.round(r[n.options.horizontal?"inlineSize":"blockSize"])}return t[n.options.horizontal?"offsetWidth":"offsetHeight"]},BTe=(t,{adjustments:e=0,behavior:n},r)=>{var s,i;const a=t+e;(i=(s=r.scrollElement)==null?void 0:s.scrollTo)==null||i.call(s,{[r.options.horizontal?"left":"top"]:a,behavior:n})};class FTe{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.measurementsCache=[],this.itemSizeCache=new Map,this.pendingMeasuredCacheIndexes=[],this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.observer=(()=>{let n=null;const r=()=>n||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:n=new this.targetWindow.ResizeObserver(s=>{s.forEach(i=>{const a=()=>{this._measureElement(i.target,i)};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(a):a()})}));return{disconnect:()=>{var s;(s=r())==null||s.disconnect(),n=null},observe:s=>{var i;return(i=r())==null?void 0:i.observe(s,{box:"border-box"})},unobserve:s=>{var i;return(i=r())==null?void 0:i.unobserve(s)}}})(),this.range=null,this.setOptions=n=>{Object.entries(n).forEach(([r,s])=>{typeof s>"u"&&delete n[r]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:DTe,rangeExtractor:PTe,onChange:()=>{},measureElement:LTe,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,...n}},this.notify=n=>{var r,s;(s=(r=this.options).onChange)==null||s.call(r,this,n)},this.maybeNotify=gh(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),n=>{this.notify(n)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(n=>n()),this.unsubs=[],this.observer.disconnect(),this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var n;const r=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==r){if(this.cleanup(),!r){this.maybeNotify();return}this.scrollElement=r,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((n=this.scrollElement)==null?void 0:n.window)??null,this.elementsCache.forEach(s=>{this.observer.observe(s)}),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0}),this.unsubs.push(this.options.observeElementRect(this,s=>{this.scrollRect=s,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(s,i)=>{this.scrollAdjustments=0,this.scrollDirection=i?this.getScrollOffset()this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(n,r)=>{const s=new Map,i=new Map;for(let a=r-1;a>=0;a--){const l=n[a];if(s.has(l.lane))continue;const c=i.get(l.lane);if(c==null||l.end>c.end?i.set(l.lane,l):l.enda.end===l.end?a.index-l.index:a.end-l.end)[0]:void 0},this.getMeasurementOptions=gh(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled],(n,r,s,i,a)=>(this.pendingMeasuredCacheIndexes=[],{count:n,paddingStart:r,scrollMargin:s,getItemKey:i,enabled:a}),{key:!1}),this.getMeasurements=gh(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:n,paddingStart:r,scrollMargin:s,getItemKey:i,enabled:a},l)=>{if(!a)return this.measurementsCache=[],this.itemSizeCache.clear(),[];this.measurementsCache.length===0&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(h=>{this.itemSizeCache.set(h.key,h.size)}));const c=this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[];const d=this.measurementsCache.slice(0,c);for(let h=c;hthis.options.debug}),this.calculateRange=gh(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(n,r,s,i)=>this.range=n.length>0&&r>0?qTe({measurements:n,outerSize:r,scrollOffset:s,lanes:i}):null,{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=gh(()=>{let n=null,r=null;const s=this.calculateRange();return s&&(n=s.startIndex,r=s.endIndex),this.maybeNotify.updateDeps([this.isScrolling,n,r]),[this.options.rangeExtractor,this.options.overscan,this.options.count,n,r]},(n,r,s,i,a)=>i===null||a===null?[]:n({startIndex:i,endIndex:a,overscan:r,count:s}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=n=>{const r=this.options.indexAttribute,s=n.getAttribute(r);return s?parseInt(s,10):(console.warn(`Missing attribute name '${r}={index}' on measured element.`),-1)},this._measureElement=(n,r)=>{const s=this.indexFromElement(n),i=this.measurementsCache[s];if(!i)return;const a=i.key,l=this.elementsCache.get(a);l!==n&&(l&&this.observer.unobserve(l),this.observer.observe(n),this.elementsCache.set(a,n)),n.isConnected&&this.resizeItem(s,this.options.measureElement(n,r,this))},this.resizeItem=(n,r)=>{const s=this.measurementsCache[n];if(!s)return;const i=this.itemSizeCache.get(s.key)??s.size,a=r-i;a!==0&&((this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(s,a,this):s.start{if(!n){this.elementsCache.forEach((r,s)=>{r.isConnected||(this.observer.unobserve(r),this.elementsCache.delete(s))});return}this._measureElement(n,void 0)},this.getVirtualItems=gh(()=>[this.getVirtualIndexes(),this.getMeasurements()],(n,r)=>{const s=[];for(let i=0,a=n.length;ithis.options.debug}),this.getVirtualItemForOffset=n=>{const r=this.getMeasurements();if(r.length!==0)return yz(r[FG(0,r.length-1,s=>yz(r[s]).start,n)])},this.getOffsetForAlignment=(n,r,s=0)=>{const i=this.getSize(),a=this.getScrollOffset();r==="auto"&&(r=n>=a+i?"end":"start"),r==="center"?n+=(s-i)/2:r==="end"&&(n-=i);const l=this.getTotalSize()+this.options.scrollMargin-i;return Math.max(Math.min(l,n),0)},this.getOffsetForIndex=(n,r="auto")=>{n=Math.max(0,Math.min(n,this.options.count-1));const s=this.measurementsCache[n];if(!s)return;const i=this.getSize(),a=this.getScrollOffset();if(r==="auto")if(s.end>=a+i-this.options.scrollPaddingEnd)r="end";else if(s.start<=a+this.options.scrollPaddingStart)r="start";else return[a,r];const l=r==="end"?s.end+this.options.scrollPaddingEnd:s.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(l,r,s.size),r]},this.isDynamicMode=()=>this.elementsCache.size>0,this.scrollToOffset=(n,{align:r="start",behavior:s}={})=>{s==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getOffsetForAlignment(n,r),{adjustments:void 0,behavior:s})},this.scrollToIndex=(n,{align:r="auto",behavior:s}={})=>{s==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),n=Math.max(0,Math.min(n,this.options.count-1));let i=0;const a=10,l=d=>{if(!this.targetWindow)return;const h=this.getOffsetForIndex(n,d);if(!h){console.warn("Failed to get offset for index:",n);return}const[m,g]=h;this._scrollToOffset(m,{adjustments:void 0,behavior:s}),this.targetWindow.requestAnimationFrame(()=>{const x=this.getScrollOffset(),y=this.getOffsetForIndex(n,g);if(!y){console.warn("Failed to get offset for index:",n);return}MTe(y[0],x)||c(g)})},c=d=>{this.targetWindow&&(i++,il(d)):console.warn(`Failed to scroll to index ${n} after ${a} attempts.`))};l(r)},this.scrollBy=(n,{behavior:r}={})=>{r==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getScrollOffset()+n,{adjustments:void 0,behavior:r})},this.getTotalSize=()=>{var n;const r=this.getMeasurements();let s;if(r.length===0)s=this.options.paddingStart;else if(this.options.lanes===1)s=((n=r[r.length-1])==null?void 0:n.end)??0;else{const i=Array(this.options.lanes).fill(null);let a=r.length-1;for(;a>=0&&i.some(l=>l===null);){const l=r[a];i[l.lane]===null&&(i[l.lane]=l.end),a--}s=Math.max(...i.filter(l=>l!==null))}return Math.max(s-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(n,{adjustments:r,behavior:s})=>{this.options.scrollToFn(n,{behavior:s,adjustments:r},this)},this.measure=()=>{this.itemSizeCache=new Map,this.notify(!1)},this.setOptions(e)}}const FG=(t,e,n,r)=>{for(;t<=e;){const s=(t+e)/2|0,i=n(s);if(ir)e=s-1;else return s}return t>0?t-1:0};function qTe({measurements:t,outerSize:e,scrollOffset:n,lanes:r}){const s=t.length-1,i=c=>t[c].start;if(t.length<=r)return{startIndex:0,endIndex:s};let a=FG(0,s,i,n),l=a;if(r===1)for(;l1){const c=Array(r).fill(0);for(;lh=0&&d.some(h=>h>=n);){const h=t[a];d[h.lane]=h.start,a--}a=Math.max(0,a-a%r),l=Math.min(s,l+(r-1-l%r))}return{startIndex:a,endIndex:l}}const kz=typeof document<"u"?b.useLayoutEffect:b.useEffect;function $Te(t){const e=b.useReducer(()=>({}),{})[1],n={...t,onChange:(s,i)=>{var a;i?ya.flushSync(e):e(),(a=t.onChange)==null||a.call(t,s,i)}},[r]=b.useState(()=>new FTe(n));return r.setOptions(n),kz(()=>r._didMount(),[]),kz(()=>r._willUpdate()),r}function HTe(t){return $Te({observeElementRect:zTe,observeElementOffset:ITe,scrollToFn:BTe,...t})}function QTe(t,e,n="long"){return new Intl.DateTimeFormat("en-US",{hour:"numeric",timeZone:t,timeZoneName:n}).format(e).split(/\s/g).slice(2).join(" ")}const VTe={},x0={};function Ku(t,e){try{const r=(VTe[t]||=new Intl.DateTimeFormat("en-US",{timeZone:t,timeZoneName:"longOffset"}).format)(e).split("GMT")[1];return r in x0?x0[r]:Oz(r,r.split(":"))}catch{if(t in x0)return x0[t];const n=t?.match(UTe);return n?Oz(t,n.slice(1)):NaN}}const UTe=/([+-]\d\d):?(\d\d)?/;function Oz(t,e){const n=+(e[0]||0),r=+(e[1]||0),s=+(e[2]||0)/60;return x0[t]=n*60+r>0?n*60+r+s:n*60-r-s}class Do extends Date{constructor(...e){super(),e.length>1&&typeof e[e.length-1]=="string"&&(this.timeZone=e.pop()),this.internal=new Date,isNaN(Ku(this.timeZone,this))?this.setTime(NaN):e.length?typeof e[0]=="number"&&(e.length===1||e.length===2&&typeof e[1]!="number")?this.setTime(e[0]):typeof e[0]=="string"?this.setTime(+new Date(e[0])):e[0]instanceof Date?this.setTime(+e[0]):(this.setTime(+new Date(...e)),qG(this),dj(this)):this.setTime(Date.now())}static tz(e,...n){return n.length?new Do(...n,e):new Do(Date.now(),e)}withTimeZone(e){return new Do(+this,e)}getTimezoneOffset(){const e=-Ku(this.timeZone,this);return e>0?Math.floor(e):Math.ceil(e)}setTime(e){return Date.prototype.setTime.apply(this,arguments),dj(this),+this}[Symbol.for("constructDateFrom")](e){return new Do(+new Date(e),this.timeZone)}}const jz=/^(get|set)(?!UTC)/;Object.getOwnPropertyNames(Date.prototype).forEach(t=>{if(!jz.test(t))return;const e=t.replace(jz,"$1UTC");Do.prototype[e]&&(t.startsWith("get")?Do.prototype[t]=function(){return this.internal[e]()}:(Do.prototype[t]=function(){return Date.prototype[e].apply(this.internal,arguments),WTe(this),+this},Do.prototype[e]=function(){return Date.prototype[e].apply(this,arguments),dj(this),+this}))});function dj(t){t.internal.setTime(+t),t.internal.setUTCSeconds(t.internal.getUTCSeconds()-Math.round(-Ku(t.timeZone,t)*60))}function WTe(t){Date.prototype.setFullYear.call(t,t.internal.getUTCFullYear(),t.internal.getUTCMonth(),t.internal.getUTCDate()),Date.prototype.setHours.call(t,t.internal.getUTCHours(),t.internal.getUTCMinutes(),t.internal.getUTCSeconds(),t.internal.getUTCMilliseconds()),qG(t)}function qG(t){const e=Ku(t.timeZone,t),n=e>0?Math.floor(e):Math.ceil(e),r=new Date(+t);r.setUTCHours(r.getUTCHours()-1);const s=-new Date(+t).getTimezoneOffset(),i=-new Date(+r).getTimezoneOffset(),a=s-i,l=Date.prototype.getHours.apply(t)!==t.internal.getUTCHours();a&&l&&t.internal.setUTCMinutes(t.internal.getUTCMinutes()+a);const c=s-n;c&&Date.prototype.setUTCMinutes.call(t,Date.prototype.getUTCMinutes.call(t)+c);const d=new Date(+t);d.setUTCSeconds(0);const h=s>0?d.getSeconds():(d.getSeconds()-60)%60,m=Math.round(-(Ku(t.timeZone,t)*60))%60;(m||h)&&(t.internal.setUTCSeconds(t.internal.getUTCSeconds()+m),Date.prototype.setUTCSeconds.call(t,Date.prototype.getUTCSeconds.call(t)+m+h));const g=Ku(t.timeZone,t),x=g>0?Math.floor(g):Math.ceil(g),w=-new Date(+t).getTimezoneOffset()-x,S=x!==n,k=w-c;if(S&&k){Date.prototype.setUTCMinutes.call(t,Date.prototype.getUTCMinutes.call(t)+k);const j=Ku(t.timeZone,t),N=j>0?Math.floor(j):Math.ceil(j),T=x-N;T&&(t.internal.setUTCMinutes(t.internal.getUTCMinutes()+T),Date.prototype.setUTCMinutes.call(t,Date.prototype.getUTCMinutes.call(t)+T))}}class Bs extends Do{static tz(e,...n){return n.length?new Bs(...n,e):new Bs(Date.now(),e)}toISOString(){const[e,n,r]=this.tzComponents(),s=`${e}${n}:${r}`;return this.internal.toISOString().slice(0,-1)+s}toString(){return`${this.toDateString()} ${this.toTimeString()}`}toDateString(){const[e,n,r,s]=this.internal.toUTCString().split(" ");return`${e?.slice(0,-1)} ${r} ${n} ${s}`}toTimeString(){const e=this.internal.toUTCString().split(" ")[4],[n,r,s]=this.tzComponents();return`${e} GMT${n}${r}${s} (${QTe(this.timeZone,this)})`}toLocaleString(e,n){return Date.prototype.toLocaleString.call(this,e,{...n,timeZone:n?.timeZone||this.timeZone})}toLocaleDateString(e,n){return Date.prototype.toLocaleDateString.call(this,e,{...n,timeZone:n?.timeZone||this.timeZone})}toLocaleTimeString(e,n){return Date.prototype.toLocaleTimeString.call(this,e,{...n,timeZone:n?.timeZone||this.timeZone})}tzComponents(){const e=this.getTimezoneOffset(),n=e>0?"-":"+",r=String(Math.floor(Math.abs(e)/60)).padStart(2,"0"),s=String(Math.abs(e)%60).padStart(2,"0");return[n,r,s]}withTimeZone(e){return new Bs(+this,e)}[Symbol.for("constructDateFrom")](e){return new Bs(+new Date(e),this.timeZone)}}const $G=6048e5,GTe=864e5,Nz=Symbol.for("constructDateFrom");function as(t,e){return typeof t=="function"?t(e):t&&typeof t=="object"&&Nz in t?t[Nz](e):t instanceof Date?new t.constructor(e):new Date(e)}function ir(t,e){return as(e||t,t)}function HG(t,e,n){const r=ir(t,n?.in);return isNaN(e)?as(t,NaN):(e&&r.setDate(r.getDate()+e),r)}function QG(t,e,n){const r=ir(t,n?.in);if(isNaN(e))return as(t,NaN);if(!e)return r;const s=r.getDate(),i=as(t,r.getTime());i.setMonth(r.getMonth()+e+1,0);const a=i.getDate();return s>=a?i:(r.setFullYear(i.getFullYear(),i.getMonth(),s),r)}let XTe={};function Og(){return XTe}function ou(t,e){const n=Og(),r=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,s=ir(t,e?.in),i=s.getDay(),a=(i=i.getTime()?r+1:n.getTime()>=l.getTime()?r:r-1}function Cz(t){const e=ir(t),n=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return n.setUTCFullYear(e.getFullYear()),+t-+n}function Nd(t,...e){const n=as.bind(null,t||e.find(r=>typeof r=="object"));return e.map(n)}function Ep(t,e){const n=ir(t,e?.in);return n.setHours(0,0,0,0),n}function UG(t,e,n){const[r,s]=Nd(n?.in,t,e),i=Ep(r),a=Ep(s),l=+i-Cz(i),c=+a-Cz(a);return Math.round((l-c)/GTe)}function YTe(t,e){const n=VG(t,e),r=as(t,0);return r.setFullYear(n,0,4),r.setHours(0,0,0,0),Tp(r)}function KTe(t,e,n){return HG(t,e*7,n)}function ZTe(t,e,n){return QG(t,e*12,n)}function JTe(t,e){let n,r=e?.in;return t.forEach(s=>{!r&&typeof s=="object"&&(r=as.bind(null,s));const i=ir(s,r);(!n||n{!r&&typeof s=="object"&&(r=as.bind(null,s));const i=ir(s,r);(!n||n>i||isNaN(+i))&&(n=i)}),as(r,n||NaN)}function t9e(t,e,n){const[r,s]=Nd(n?.in,t,e);return+Ep(r)==+Ep(s)}function WG(t){return t instanceof Date||typeof t=="object"&&Object.prototype.toString.call(t)==="[object Date]"}function n9e(t){return!(!WG(t)&&typeof t!="number"||isNaN(+ir(t)))}function r9e(t,e,n){const[r,s]=Nd(n?.in,t,e),i=r.getFullYear()-s.getFullYear(),a=r.getMonth()-s.getMonth();return i*12+a}function s9e(t,e){const n=ir(t,e?.in),r=n.getMonth();return n.setFullYear(n.getFullYear(),r+1,0),n.setHours(23,59,59,999),n}function GG(t,e){const[n,r]=Nd(t,e.start,e.end);return{start:n,end:r}}function i9e(t,e){const{start:n,end:r}=GG(e?.in,t);let s=+n>+r;const i=s?+n:+r,a=s?r:n;a.setHours(0,0,0,0),a.setDate(1);let l=1;const c=[];for(;+a<=i;)c.push(as(n,a)),a.setMonth(a.getMonth()+l);return s?c.reverse():c}function a9e(t,e){const n=ir(t,e?.in);return n.setDate(1),n.setHours(0,0,0,0),n}function o9e(t,e){const n=ir(t,e?.in),r=n.getFullYear();return n.setFullYear(r+1,0,0),n.setHours(23,59,59,999),n}function XG(t,e){const n=ir(t,e?.in);return n.setFullYear(n.getFullYear(),0,1),n.setHours(0,0,0,0),n}function l9e(t,e){const{start:n,end:r}=GG(e?.in,t);let s=+n>+r;const i=s?+n:+r,a=s?r:n;a.setHours(0,0,0,0),a.setMonth(0,1);let l=1;const c=[];for(;+a<=i;)c.push(as(n,a)),a.setFullYear(a.getFullYear()+l);return s?c.reverse():c}function YG(t,e){const n=Og(),r=e?.weekStartsOn??e?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,s=ir(t,e?.in),i=s.getDay(),a=(i{let r;const s=u9e[t];return typeof s=="string"?r=s:e===1?r=s.one:r=s.other.replace("{{count}}",e.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"in "+r:r+" ago":r};function Uh(t){return(e={})=>{const n=e.width?String(e.width):t.defaultWidth;return t.formats[n]||t.formats[t.defaultWidth]}}const h9e={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},f9e={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},m9e={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},p9e={date:Uh({formats:h9e,defaultWidth:"full"}),time:Uh({formats:f9e,defaultWidth:"full"}),dateTime:Uh({formats:m9e,defaultWidth:"full"})},g9e={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},x9e=(t,e,n,r)=>g9e[t];function jo(t){return(e,n)=>{const r=n?.context?String(n.context):"standalone";let s;if(r==="formatting"&&t.formattingValues){const a=t.defaultFormattingWidth||t.defaultWidth,l=n?.width?String(n.width):a;s=t.formattingValues[l]||t.formattingValues[a]}else{const a=t.defaultWidth,l=n?.width?String(n.width):t.defaultWidth;s=t.values[l]||t.values[a]}const i=t.argumentCallback?t.argumentCallback(e):e;return s[i]}}const v9e={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},y9e={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},b9e={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},w9e={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},S9e={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},k9e={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},O9e=(t,e)=>{const n=Number(t),r=n%100;if(r>20||r<10)switch(r%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},j9e={ordinalNumber:O9e,era:jo({values:v9e,defaultWidth:"wide"}),quarter:jo({values:y9e,defaultWidth:"wide",argumentCallback:t=>t-1}),month:jo({values:b9e,defaultWidth:"wide"}),day:jo({values:w9e,defaultWidth:"wide"}),dayPeriod:jo({values:S9e,defaultWidth:"wide",formattingValues:k9e,defaultFormattingWidth:"wide"})};function No(t){return(e,n={})=>{const r=n.width,s=r&&t.matchPatterns[r]||t.matchPatterns[t.defaultMatchWidth],i=e.match(s);if(!i)return null;const a=i[0],l=r&&t.parsePatterns[r]||t.parsePatterns[t.defaultParseWidth],c=Array.isArray(l)?C9e(l,m=>m.test(a)):N9e(l,m=>m.test(a));let d;d=t.valueCallback?t.valueCallback(c):c,d=n.valueCallback?n.valueCallback(d):d;const h=e.slice(a.length);return{value:d,rest:h}}}function N9e(t,e){for(const n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&e(t[n]))return n}function C9e(t,e){for(let n=0;n{const r=e.match(t.matchPattern);if(!r)return null;const s=r[0],i=e.match(t.parsePattern);if(!i)return null;let a=t.valueCallback?t.valueCallback(i[0]):i[0];a=n.valueCallback?n.valueCallback(a):a;const l=e.slice(s.length);return{value:a,rest:l}}}const T9e=/^(\d+)(th|st|nd|rd)?/i,E9e=/\d+/i,_9e={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},A9e={any:[/^b/i,/^(a|c)/i]},M9e={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},R9e={any:[/1/i,/2/i,/3/i,/4/i]},D9e={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},P9e={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},z9e={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},I9e={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},L9e={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},B9e={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},F9e={ordinalNumber:KG({matchPattern:T9e,parsePattern:E9e,valueCallback:t=>parseInt(t,10)}),era:No({matchPatterns:_9e,defaultMatchWidth:"wide",parsePatterns:A9e,defaultParseWidth:"any"}),quarter:No({matchPatterns:M9e,defaultMatchWidth:"wide",parsePatterns:R9e,defaultParseWidth:"any",valueCallback:t=>t+1}),month:No({matchPatterns:D9e,defaultMatchWidth:"wide",parsePatterns:P9e,defaultParseWidth:"any"}),day:No({matchPatterns:z9e,defaultMatchWidth:"wide",parsePatterns:I9e,defaultParseWidth:"any"}),dayPeriod:No({matchPatterns:L9e,defaultMatchWidth:"any",parsePatterns:B9e,defaultParseWidth:"any"})},p7={code:"en-US",formatDistance:d9e,formatLong:p9e,formatRelative:x9e,localize:j9e,match:F9e,options:{weekStartsOn:0,firstWeekContainsDate:1}};function q9e(t,e){const n=ir(t,e?.in);return UG(n,XG(n))+1}function ZG(t,e){const n=ir(t,e?.in),r=+Tp(n)-+YTe(n);return Math.round(r/$G)+1}function JG(t,e){const n=ir(t,e?.in),r=n.getFullYear(),s=Og(),i=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??s.firstWeekContainsDate??s.locale?.options?.firstWeekContainsDate??1,a=as(e?.in||t,0);a.setFullYear(r+1,0,i),a.setHours(0,0,0,0);const l=ou(a,e),c=as(e?.in||t,0);c.setFullYear(r,0,i),c.setHours(0,0,0,0);const d=ou(c,e);return+n>=+l?r+1:+n>=+d?r:r-1}function $9e(t,e){const n=Og(),r=e?.firstWeekContainsDate??e?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,s=JG(t,e),i=as(e?.in||t,0);return i.setFullYear(s,0,r),i.setHours(0,0,0,0),ou(i,e)}function eX(t,e){const n=ir(t,e?.in),r=+ou(n,e)-+$9e(n,e);return Math.round(r/$G)+1}function Jn(t,e){const n=t<0?"-":"",r=Math.abs(t).toString().padStart(e,"0");return n+r}const Rc={y(t,e){const n=t.getFullYear(),r=n>0?n:1-n;return Jn(e==="yy"?r%100:r,e.length)},M(t,e){const n=t.getMonth();return e==="M"?String(n+1):Jn(n+1,2)},d(t,e){return Jn(t.getDate(),e.length)},a(t,e){const n=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];case"aaaa":default:return n==="am"?"a.m.":"p.m."}},h(t,e){return Jn(t.getHours()%12||12,e.length)},H(t,e){return Jn(t.getHours(),e.length)},m(t,e){return Jn(t.getMinutes(),e.length)},s(t,e){return Jn(t.getSeconds(),e.length)},S(t,e){const n=e.length,r=t.getMilliseconds(),s=Math.trunc(r*Math.pow(10,n-3));return Jn(s,e.length)}},xh={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},Tz={G:function(t,e,n){const r=t.getFullYear()>0?1:0;switch(e){case"G":case"GG":case"GGG":return n.era(r,{width:"abbreviated"});case"GGGGG":return n.era(r,{width:"narrow"});case"GGGG":default:return n.era(r,{width:"wide"})}},y:function(t,e,n){if(e==="yo"){const r=t.getFullYear(),s=r>0?r:1-r;return n.ordinalNumber(s,{unit:"year"})}return Rc.y(t,e)},Y:function(t,e,n,r){const s=JG(t,r),i=s>0?s:1-s;if(e==="YY"){const a=i%100;return Jn(a,2)}return e==="Yo"?n.ordinalNumber(i,{unit:"year"}):Jn(i,e.length)},R:function(t,e){const n=VG(t);return Jn(n,e.length)},u:function(t,e){const n=t.getFullYear();return Jn(n,e.length)},Q:function(t,e,n){const r=Math.ceil((t.getMonth()+1)/3);switch(e){case"Q":return String(r);case"QQ":return Jn(r,2);case"Qo":return n.ordinalNumber(r,{unit:"quarter"});case"QQQ":return n.quarter(r,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(r,{width:"narrow",context:"formatting"});case"QQQQ":default:return n.quarter(r,{width:"wide",context:"formatting"})}},q:function(t,e,n){const r=Math.ceil((t.getMonth()+1)/3);switch(e){case"q":return String(r);case"qq":return Jn(r,2);case"qo":return n.ordinalNumber(r,{unit:"quarter"});case"qqq":return n.quarter(r,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(r,{width:"narrow",context:"standalone"});case"qqqq":default:return n.quarter(r,{width:"wide",context:"standalone"})}},M:function(t,e,n){const r=t.getMonth();switch(e){case"M":case"MM":return Rc.M(t,e);case"Mo":return n.ordinalNumber(r+1,{unit:"month"});case"MMM":return n.month(r,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(r,{width:"narrow",context:"formatting"});case"MMMM":default:return n.month(r,{width:"wide",context:"formatting"})}},L:function(t,e,n){const r=t.getMonth();switch(e){case"L":return String(r+1);case"LL":return Jn(r+1,2);case"Lo":return n.ordinalNumber(r+1,{unit:"month"});case"LLL":return n.month(r,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(r,{width:"narrow",context:"standalone"});case"LLLL":default:return n.month(r,{width:"wide",context:"standalone"})}},w:function(t,e,n,r){const s=eX(t,r);return e==="wo"?n.ordinalNumber(s,{unit:"week"}):Jn(s,e.length)},I:function(t,e,n){const r=ZG(t);return e==="Io"?n.ordinalNumber(r,{unit:"week"}):Jn(r,e.length)},d:function(t,e,n){return e==="do"?n.ordinalNumber(t.getDate(),{unit:"date"}):Rc.d(t,e)},D:function(t,e,n){const r=q9e(t);return e==="Do"?n.ordinalNumber(r,{unit:"dayOfYear"}):Jn(r,e.length)},E:function(t,e,n){const r=t.getDay();switch(e){case"E":case"EE":case"EEE":return n.day(r,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(r,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(r,{width:"short",context:"formatting"});case"EEEE":default:return n.day(r,{width:"wide",context:"formatting"})}},e:function(t,e,n,r){const s=t.getDay(),i=(s-r.weekStartsOn+8)%7||7;switch(e){case"e":return String(i);case"ee":return Jn(i,2);case"eo":return n.ordinalNumber(i,{unit:"day"});case"eee":return n.day(s,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(s,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(s,{width:"short",context:"formatting"});case"eeee":default:return n.day(s,{width:"wide",context:"formatting"})}},c:function(t,e,n,r){const s=t.getDay(),i=(s-r.weekStartsOn+8)%7||7;switch(e){case"c":return String(i);case"cc":return Jn(i,e.length);case"co":return n.ordinalNumber(i,{unit:"day"});case"ccc":return n.day(s,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(s,{width:"narrow",context:"standalone"});case"cccccc":return n.day(s,{width:"short",context:"standalone"});case"cccc":default:return n.day(s,{width:"wide",context:"standalone"})}},i:function(t,e,n){const r=t.getDay(),s=r===0?7:r;switch(e){case"i":return String(s);case"ii":return Jn(s,e.length);case"io":return n.ordinalNumber(s,{unit:"day"});case"iii":return n.day(r,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(r,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(r,{width:"short",context:"formatting"});case"iiii":default:return n.day(r,{width:"wide",context:"formatting"})}},a:function(t,e,n){const s=t.getHours()/12>=1?"pm":"am";switch(e){case"a":case"aa":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"aaaa":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},b:function(t,e,n){const r=t.getHours();let s;switch(r===12?s=xh.noon:r===0?s=xh.midnight:s=r/12>=1?"pm":"am",e){case"b":case"bb":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"bbbb":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},B:function(t,e,n){const r=t.getHours();let s;switch(r>=17?s=xh.evening:r>=12?s=xh.afternoon:r>=4?s=xh.morning:s=xh.night,e){case"B":case"BB":case"BBB":return n.dayPeriod(s,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(s,{width:"narrow",context:"formatting"});case"BBBB":default:return n.dayPeriod(s,{width:"wide",context:"formatting"})}},h:function(t,e,n){if(e==="ho"){let r=t.getHours()%12;return r===0&&(r=12),n.ordinalNumber(r,{unit:"hour"})}return Rc.h(t,e)},H:function(t,e,n){return e==="Ho"?n.ordinalNumber(t.getHours(),{unit:"hour"}):Rc.H(t,e)},K:function(t,e,n){const r=t.getHours()%12;return e==="Ko"?n.ordinalNumber(r,{unit:"hour"}):Jn(r,e.length)},k:function(t,e,n){let r=t.getHours();return r===0&&(r=24),e==="ko"?n.ordinalNumber(r,{unit:"hour"}):Jn(r,e.length)},m:function(t,e,n){return e==="mo"?n.ordinalNumber(t.getMinutes(),{unit:"minute"}):Rc.m(t,e)},s:function(t,e,n){return e==="so"?n.ordinalNumber(t.getSeconds(),{unit:"second"}):Rc.s(t,e)},S:function(t,e){return Rc.S(t,e)},X:function(t,e,n){const r=t.getTimezoneOffset();if(r===0)return"Z";switch(e){case"X":return _z(r);case"XXXX":case"XX":return $u(r);case"XXXXX":case"XXX":default:return $u(r,":")}},x:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"x":return _z(r);case"xxxx":case"xx":return $u(r);case"xxxxx":case"xxx":default:return $u(r,":")}},O:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"O":case"OO":case"OOO":return"GMT"+Ez(r,":");case"OOOO":default:return"GMT"+$u(r,":")}},z:function(t,e,n){const r=t.getTimezoneOffset();switch(e){case"z":case"zz":case"zzz":return"GMT"+Ez(r,":");case"zzzz":default:return"GMT"+$u(r,":")}},t:function(t,e,n){const r=Math.trunc(+t/1e3);return Jn(r,e.length)},T:function(t,e,n){return Jn(+t,e.length)}};function Ez(t,e=""){const n=t>0?"-":"+",r=Math.abs(t),s=Math.trunc(r/60),i=r%60;return i===0?n+String(s):n+String(s)+e+Jn(i,2)}function _z(t,e){return t%60===0?(t>0?"-":"+")+Jn(Math.abs(t)/60,2):$u(t,e)}function $u(t,e=""){const n=t>0?"-":"+",r=Math.abs(t),s=Jn(Math.trunc(r/60),2),i=Jn(r%60,2);return n+s+e+i}const Az=(t,e)=>{switch(t){case"P":return e.date({width:"short"});case"PP":return e.date({width:"medium"});case"PPP":return e.date({width:"long"});case"PPPP":default:return e.date({width:"full"})}},tX=(t,e)=>{switch(t){case"p":return e.time({width:"short"});case"pp":return e.time({width:"medium"});case"ppp":return e.time({width:"long"});case"pppp":default:return e.time({width:"full"})}},H9e=(t,e)=>{const n=t.match(/(P+)(p+)?/)||[],r=n[1],s=n[2];if(!s)return Az(t,e);let i;switch(r){case"P":i=e.dateTime({width:"short"});break;case"PP":i=e.dateTime({width:"medium"});break;case"PPP":i=e.dateTime({width:"long"});break;case"PPPP":default:i=e.dateTime({width:"full"});break}return i.replace("{{date}}",Az(r,e)).replace("{{time}}",tX(s,e))},Q9e={p:tX,P:H9e},V9e=/^D+$/,U9e=/^Y+$/,W9e=["D","DD","YY","YYYY"];function G9e(t){return V9e.test(t)}function X9e(t){return U9e.test(t)}function Y9e(t,e,n){const r=K9e(t,e,n);if(console.warn(r),W9e.includes(t))throw new RangeError(r)}function K9e(t,e,n){const r=t[0]==="Y"?"years":"days of the month";return`Use \`${t.toLowerCase()}\` instead of \`${t}\` (in \`${e}\`) for formatting ${r} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}const Z9e=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,J9e=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,eEe=/^'([^]*?)'?$/,tEe=/''/g,nEe=/[a-zA-Z]/;function Dv(t,e,n){const r=Og(),s=n?.locale??r.locale??p7,i=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,a=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??r.weekStartsOn??r.locale?.options?.weekStartsOn??0,l=ir(t,n?.in);if(!n9e(l))throw new RangeError("Invalid time value");let c=e.match(J9e).map(h=>{const m=h[0];if(m==="p"||m==="P"){const g=Q9e[m];return g(h,s.formatLong)}return h}).join("").match(Z9e).map(h=>{if(h==="''")return{isToken:!1,value:"'"};const m=h[0];if(m==="'")return{isToken:!1,value:rEe(h)};if(Tz[m])return{isToken:!0,value:h};if(m.match(nEe))throw new RangeError("Format string contains an unescaped latin alphabet character `"+m+"`");return{isToken:!1,value:h}});s.localize.preprocessor&&(c=s.localize.preprocessor(l,c));const d={firstWeekContainsDate:i,weekStartsOn:a,locale:s};return c.map(h=>{if(!h.isToken)return h.value;const m=h.value;(!n?.useAdditionalWeekYearTokens&&X9e(m)||!n?.useAdditionalDayOfYearTokens&&G9e(m))&&Y9e(m,e,String(t));const g=Tz[m[0]];return g(l,m,s.localize,d)}).join("")}function rEe(t){const e=t.match(eEe);return e?e[1].replace(tEe,"'"):t}function sEe(t,e){const n=ir(t,e?.in),r=n.getFullYear(),s=n.getMonth(),i=as(n,0);return i.setFullYear(r,s+1,0),i.setHours(0,0,0,0),i.getDate()}function iEe(t,e){return ir(t,e?.in).getMonth()}function aEe(t,e){return ir(t,e?.in).getFullYear()}function oEe(t,e){return+ir(t)>+ir(e)}function lEe(t,e){return+ir(t)<+ir(e)}function cEe(t,e,n){const[r,s]=Nd(n?.in,t,e);return+ou(r,n)==+ou(s,n)}function uEe(t,e,n){const[r,s]=Nd(n?.in,t,e);return r.getFullYear()===s.getFullYear()&&r.getMonth()===s.getMonth()}function dEe(t,e,n){const[r,s]=Nd(n?.in,t,e);return r.getFullYear()===s.getFullYear()}function hEe(t,e,n){const r=ir(t,n?.in),s=r.getFullYear(),i=r.getDate(),a=as(t,0);a.setFullYear(s,e,15),a.setHours(0,0,0,0);const l=sEe(a);return r.setMonth(e,Math.min(i,l)),r}function fEe(t,e,n){const r=ir(t,n?.in);return isNaN(+r)?as(t,NaN):(r.setFullYear(e),r)}const Mz=5,mEe=4;function pEe(t,e){const n=e.startOfMonth(t),r=n.getDay()>0?n.getDay():7,s=e.addDays(t,-r+1),i=e.addDays(s,Mz*7-1);return e.getMonth(t)===e.getMonth(i)?Mz:mEe}function nX(t,e){const n=e.startOfMonth(t),r=n.getDay();return r===1?n:r===0?e.addDays(n,-6):e.addDays(n,-1*(r-1))}function gEe(t,e){const n=nX(t,e),r=pEe(t,e);return e.addDays(n,r*7-1)}class ta{constructor(e,n){this.Date=Date,this.today=()=>this.overrides?.today?this.overrides.today():this.options.timeZone?Bs.tz(this.options.timeZone):new this.Date,this.newDate=(r,s,i)=>this.overrides?.newDate?this.overrides.newDate(r,s,i):this.options.timeZone?new Bs(r,s,i,this.options.timeZone):new Date(r,s,i),this.addDays=(r,s)=>this.overrides?.addDays?this.overrides.addDays(r,s):HG(r,s),this.addMonths=(r,s)=>this.overrides?.addMonths?this.overrides.addMonths(r,s):QG(r,s),this.addWeeks=(r,s)=>this.overrides?.addWeeks?this.overrides.addWeeks(r,s):KTe(r,s),this.addYears=(r,s)=>this.overrides?.addYears?this.overrides.addYears(r,s):ZTe(r,s),this.differenceInCalendarDays=(r,s)=>this.overrides?.differenceInCalendarDays?this.overrides.differenceInCalendarDays(r,s):UG(r,s),this.differenceInCalendarMonths=(r,s)=>this.overrides?.differenceInCalendarMonths?this.overrides.differenceInCalendarMonths(r,s):r9e(r,s),this.eachMonthOfInterval=r=>this.overrides?.eachMonthOfInterval?this.overrides.eachMonthOfInterval(r):i9e(r),this.eachYearOfInterval=r=>{const s=this.overrides?.eachYearOfInterval?this.overrides.eachYearOfInterval(r):l9e(r),i=new Set(s.map(l=>this.getYear(l)));if(i.size===s.length)return s;const a=[];return i.forEach(l=>{a.push(new Date(l,0,1))}),a},this.endOfBroadcastWeek=r=>this.overrides?.endOfBroadcastWeek?this.overrides.endOfBroadcastWeek(r):gEe(r,this),this.endOfISOWeek=r=>this.overrides?.endOfISOWeek?this.overrides.endOfISOWeek(r):c9e(r),this.endOfMonth=r=>this.overrides?.endOfMonth?this.overrides.endOfMonth(r):s9e(r),this.endOfWeek=(r,s)=>this.overrides?.endOfWeek?this.overrides.endOfWeek(r,s):YG(r,this.options),this.endOfYear=r=>this.overrides?.endOfYear?this.overrides.endOfYear(r):o9e(r),this.format=(r,s,i)=>{const a=this.overrides?.format?this.overrides.format(r,s,this.options):Dv(r,s,this.options);return this.options.numerals&&this.options.numerals!=="latn"?this.replaceDigits(a):a},this.getISOWeek=r=>this.overrides?.getISOWeek?this.overrides.getISOWeek(r):ZG(r),this.getMonth=(r,s)=>this.overrides?.getMonth?this.overrides.getMonth(r,this.options):iEe(r,this.options),this.getYear=(r,s)=>this.overrides?.getYear?this.overrides.getYear(r,this.options):aEe(r,this.options),this.getWeek=(r,s)=>this.overrides?.getWeek?this.overrides.getWeek(r,this.options):eX(r,this.options),this.isAfter=(r,s)=>this.overrides?.isAfter?this.overrides.isAfter(r,s):oEe(r,s),this.isBefore=(r,s)=>this.overrides?.isBefore?this.overrides.isBefore(r,s):lEe(r,s),this.isDate=r=>this.overrides?.isDate?this.overrides.isDate(r):WG(r),this.isSameDay=(r,s)=>this.overrides?.isSameDay?this.overrides.isSameDay(r,s):t9e(r,s),this.isSameMonth=(r,s)=>this.overrides?.isSameMonth?this.overrides.isSameMonth(r,s):uEe(r,s),this.isSameYear=(r,s)=>this.overrides?.isSameYear?this.overrides.isSameYear(r,s):dEe(r,s),this.max=r=>this.overrides?.max?this.overrides.max(r):JTe(r),this.min=r=>this.overrides?.min?this.overrides.min(r):e9e(r),this.setMonth=(r,s)=>this.overrides?.setMonth?this.overrides.setMonth(r,s):hEe(r,s),this.setYear=(r,s)=>this.overrides?.setYear?this.overrides.setYear(r,s):fEe(r,s),this.startOfBroadcastWeek=(r,s)=>this.overrides?.startOfBroadcastWeek?this.overrides.startOfBroadcastWeek(r,this):nX(r,this),this.startOfDay=r=>this.overrides?.startOfDay?this.overrides.startOfDay(r):Ep(r),this.startOfISOWeek=r=>this.overrides?.startOfISOWeek?this.overrides.startOfISOWeek(r):Tp(r),this.startOfMonth=r=>this.overrides?.startOfMonth?this.overrides.startOfMonth(r):a9e(r),this.startOfWeek=(r,s)=>this.overrides?.startOfWeek?this.overrides.startOfWeek(r,this.options):ou(r,this.options),this.startOfYear=r=>this.overrides?.startOfYear?this.overrides.startOfYear(r):XG(r),this.options={locale:p7,...e},this.overrides=n}getDigitMap(){const{numerals:e="latn"}=this.options,n=new Intl.NumberFormat("en-US",{numberingSystem:e}),r={};for(let s=0;s<10;s++)r[s.toString()]=n.format(s);return r}replaceDigits(e){const n=this.getDigitMap();return e.replace(/\d/g,r=>n[r]||r)}formatNumber(e){return this.replaceDigits(e.toString())}getMonthYearOrder(){const e=this.options.locale?.code;return e&&ta.yearFirstLocales.has(e)?"year-first":"month-first"}formatMonthYear(e){const{locale:n,timeZone:r,numerals:s}=this.options,i=n?.code;if(i&&ta.yearFirstLocales.has(i))try{return new Intl.DateTimeFormat(i,{month:"long",year:"numeric",timeZone:r,numberingSystem:s}).format(e)}catch{}const a=this.getMonthYearOrder()==="year-first"?"y LLLL":"LLLL y";return this.format(e,a)}}ta.yearFirstLocales=new Set(["eu","hu","ja","ja-Hira","ja-JP","ko","ko-KR","lt","lt-LT","lv","lv-LV","mn","mn-MN","zh","zh-CN","zh-HK","zh-TW"]);const Zo=new ta;class rX{constructor(e,n,r=Zo){this.date=e,this.displayMonth=n,this.outside=!!(n&&!r.isSameMonth(e,n)),this.dateLib=r}isEqualTo(e){return this.dateLib.isSameDay(e.date,this.date)&&this.dateLib.isSameMonth(e.displayMonth,this.displayMonth)}}class xEe{constructor(e,n){this.date=e,this.weeks=n}}class vEe{constructor(e,n){this.days=n,this.weekNumber=e}}function yEe(t){return oe.createElement("button",{...t})}function bEe(t){return oe.createElement("span",{...t})}function wEe(t){const{size:e=24,orientation:n="left",className:r}=t;return oe.createElement("svg",{className:r,width:e,height:e,viewBox:"0 0 24 24"},n==="up"&&oe.createElement("polygon",{points:"6.77 17 12.5 11.43 18.24 17 20 15.28 12.5 8 5 15.28"}),n==="down"&&oe.createElement("polygon",{points:"6.77 8 12.5 13.57 18.24 8 20 9.72 12.5 17 5 9.72"}),n==="left"&&oe.createElement("polygon",{points:"16 18.112 9.81111111 12 16 5.87733333 14.0888889 4 6 12 14.0888889 20"}),n==="right"&&oe.createElement("polygon",{points:"8 18.112 14.18888889 12 8 5.87733333 9.91111111 4 18 12 9.91111111 20"}))}function SEe(t){const{day:e,modifiers:n,...r}=t;return oe.createElement("td",{...r})}function kEe(t){const{day:e,modifiers:n,...r}=t,s=oe.useRef(null);return oe.useEffect(()=>{n.focused&&s.current?.focus()},[n.focused]),oe.createElement("button",{ref:s,...r})}var Nt;(function(t){t.Root="root",t.Chevron="chevron",t.Day="day",t.DayButton="day_button",t.CaptionLabel="caption_label",t.Dropdowns="dropdowns",t.Dropdown="dropdown",t.DropdownRoot="dropdown_root",t.Footer="footer",t.MonthGrid="month_grid",t.MonthCaption="month_caption",t.MonthsDropdown="months_dropdown",t.Month="month",t.Months="months",t.Nav="nav",t.NextMonthButton="button_next",t.PreviousMonthButton="button_previous",t.Week="week",t.Weeks="weeks",t.Weekday="weekday",t.Weekdays="weekdays",t.WeekNumber="week_number",t.WeekNumberHeader="week_number_header",t.YearsDropdown="years_dropdown"})(Nt||(Nt={}));var zr;(function(t){t.disabled="disabled",t.hidden="hidden",t.outside="outside",t.focused="focused",t.today="today"})(zr||(zr={}));var Wa;(function(t){t.range_end="range_end",t.range_middle="range_middle",t.range_start="range_start",t.selected="selected"})(Wa||(Wa={}));var Vi;(function(t){t.weeks_before_enter="weeks_before_enter",t.weeks_before_exit="weeks_before_exit",t.weeks_after_enter="weeks_after_enter",t.weeks_after_exit="weeks_after_exit",t.caption_after_enter="caption_after_enter",t.caption_after_exit="caption_after_exit",t.caption_before_enter="caption_before_enter",t.caption_before_exit="caption_before_exit"})(Vi||(Vi={}));function OEe(t){const{options:e,className:n,components:r,classNames:s,...i}=t,a=[s[Nt.Dropdown],n].join(" "),l=e?.find(({value:c})=>c===i.value);return oe.createElement("span",{"data-disabled":i.disabled,className:s[Nt.DropdownRoot]},oe.createElement(r.Select,{className:a,...i},e?.map(({value:c,label:d,disabled:h})=>oe.createElement(r.Option,{key:c,value:c,disabled:h},d))),oe.createElement("span",{className:s[Nt.CaptionLabel],"aria-hidden":!0},l?.label,oe.createElement(r.Chevron,{orientation:"down",size:18,className:s[Nt.Chevron]})))}function jEe(t){return oe.createElement("div",{...t})}function NEe(t){return oe.createElement("div",{...t})}function CEe(t){const{calendarMonth:e,displayIndex:n,...r}=t;return oe.createElement("div",{...r},t.children)}function TEe(t){const{calendarMonth:e,displayIndex:n,...r}=t;return oe.createElement("div",{...r})}function EEe(t){return oe.createElement("table",{...t})}function _Ee(t){return oe.createElement("div",{...t})}const sX=b.createContext(void 0);function jg(){const t=b.useContext(sX);if(t===void 0)throw new Error("useDayPicker() must be used within a custom component.");return t}function AEe(t){const{components:e}=jg();return oe.createElement(e.Dropdown,{...t})}function MEe(t){const{onPreviousClick:e,onNextClick:n,previousMonth:r,nextMonth:s,...i}=t,{components:a,classNames:l,labels:{labelPrevious:c,labelNext:d}}=jg(),h=b.useCallback(g=>{s&&n?.(g)},[s,n]),m=b.useCallback(g=>{r&&e?.(g)},[r,e]);return oe.createElement("nav",{...i},oe.createElement(a.PreviousMonthButton,{type:"button",className:l[Nt.PreviousMonthButton],tabIndex:r?void 0:-1,"aria-disabled":r?void 0:!0,"aria-label":c(r),onClick:m},oe.createElement(a.Chevron,{disabled:r?void 0:!0,className:l[Nt.Chevron],orientation:"left"})),oe.createElement(a.NextMonthButton,{type:"button",className:l[Nt.NextMonthButton],tabIndex:s?void 0:-1,"aria-disabled":s?void 0:!0,"aria-label":d(s),onClick:h},oe.createElement(a.Chevron,{disabled:s?void 0:!0,orientation:"right",className:l[Nt.Chevron]})))}function REe(t){const{components:e}=jg();return oe.createElement(e.Button,{...t})}function DEe(t){return oe.createElement("option",{...t})}function PEe(t){const{components:e}=jg();return oe.createElement(e.Button,{...t})}function zEe(t){const{rootRef:e,...n}=t;return oe.createElement("div",{...n,ref:e})}function IEe(t){return oe.createElement("select",{...t})}function LEe(t){const{week:e,...n}=t;return oe.createElement("tr",{...n})}function BEe(t){return oe.createElement("th",{...t})}function FEe(t){return oe.createElement("thead",{"aria-hidden":!0},oe.createElement("tr",{...t}))}function qEe(t){const{week:e,...n}=t;return oe.createElement("th",{...n})}function $Ee(t){return oe.createElement("th",{...t})}function HEe(t){return oe.createElement("tbody",{...t})}function QEe(t){const{components:e}=jg();return oe.createElement(e.Dropdown,{...t})}const VEe=Object.freeze(Object.defineProperty({__proto__:null,Button:yEe,CaptionLabel:bEe,Chevron:wEe,Day:SEe,DayButton:kEe,Dropdown:OEe,DropdownNav:jEe,Footer:NEe,Month:CEe,MonthCaption:TEe,MonthGrid:EEe,Months:_Ee,MonthsDropdown:AEe,Nav:MEe,NextMonthButton:REe,Option:DEe,PreviousMonthButton:PEe,Root:zEe,Select:IEe,Week:LEe,WeekNumber:qEe,WeekNumberHeader:$Ee,Weekday:BEe,Weekdays:FEe,Weeks:HEe,YearsDropdown:QEe},Symbol.toStringTag,{value:"Module"}));function Il(t,e,n=!1,r=Zo){let{from:s,to:i}=t;const{differenceInCalendarDays:a,isSameDay:l}=r;return s&&i?(a(i,s)<0&&([s,i]=[i,s]),a(e,s)>=(n?1:0)&&a(i,e)>=(n?1:0)):!n&&i?l(i,e):!n&&s?l(s,e):!1}function iX(t){return!!(t&&typeof t=="object"&&"before"in t&&"after"in t)}function g7(t){return!!(t&&typeof t=="object"&&"from"in t)}function aX(t){return!!(t&&typeof t=="object"&&"after"in t)}function oX(t){return!!(t&&typeof t=="object"&&"before"in t)}function lX(t){return!!(t&&typeof t=="object"&&"dayOfWeek"in t)}function cX(t,e){return Array.isArray(t)&&t.every(e.isDate)}function Ll(t,e,n=Zo){const r=Array.isArray(e)?e:[e],{isSameDay:s,differenceInCalendarDays:i,isAfter:a}=n;return r.some(l=>{if(typeof l=="boolean")return l;if(n.isDate(l))return s(t,l);if(cX(l,n))return l.includes(t);if(g7(l))return Il(l,t,!1,n);if(lX(l))return Array.isArray(l.dayOfWeek)?l.dayOfWeek.includes(t.getDay()):l.dayOfWeek===t.getDay();if(iX(l)){const c=i(l.before,t),d=i(l.after,t),h=c>0,m=d<0;return a(l.before,l.after)?m&&h:h||m}return aX(l)?i(t,l.after)>0:oX(l)?i(l.before,t)>0:typeof l=="function"?l(t):!1})}function UEe(t,e,n,r,s){const{disabled:i,hidden:a,modifiers:l,showOutsideDays:c,broadcastCalendar:d,today:h}=e,{isSameDay:m,isSameMonth:g,startOfMonth:x,isBefore:y,endOfMonth:w,isAfter:S}=s,k=n&&x(n),j=r&&w(r),N={[zr.focused]:[],[zr.outside]:[],[zr.disabled]:[],[zr.hidden]:[],[zr.today]:[]},T={};for(const E of t){const{date:_,displayMonth:A}=E,D=!!(A&&!g(_,A)),q=!!(k&&y(_,k)),B=!!(j&&S(_,j)),H=!!(i&&Ll(_,i,s)),W=!!(a&&Ll(_,a,s))||q||B||!d&&!c&&D||d&&c===!1&&D,ee=m(_,h??s.today());D&&N.outside.push(E),H&&N.disabled.push(E),W&&N.hidden.push(E),ee&&N.today.push(E),l&&Object.keys(l).forEach(I=>{const V=l?.[I];V&&Ll(_,V,s)&&(T[I]?T[I].push(E):T[I]=[E])})}return E=>{const _={[zr.focused]:!1,[zr.disabled]:!1,[zr.hidden]:!1,[zr.outside]:!1,[zr.today]:!1},A={};for(const D in N){const q=N[D];_[D]=q.some(B=>B===E)}for(const D in T)A[D]=T[D].some(q=>q===E);return{..._,...A}}}function WEe(t,e,n={}){return Object.entries(t).filter(([,s])=>s===!0).reduce((s,[i])=>(n[i]?s.push(n[i]):e[zr[i]]?s.push(e[zr[i]]):e[Wa[i]]&&s.push(e[Wa[i]]),s),[e[Nt.Day]])}function GEe(t){return{...VEe,...t}}function XEe(t){const e={"data-mode":t.mode??void 0,"data-required":"required"in t?t.required:void 0,"data-multiple-months":t.numberOfMonths&&t.numberOfMonths>1||void 0,"data-week-numbers":t.showWeekNumber||void 0,"data-broadcast-calendar":t.broadcastCalendar||void 0,"data-nav-layout":t.navLayout||void 0};return Object.entries(t).forEach(([n,r])=>{n.startsWith("data-")&&(e[n]=r)}),e}function x7(){const t={};for(const e in Nt)t[Nt[e]]=`rdp-${Nt[e]}`;for(const e in zr)t[zr[e]]=`rdp-${zr[e]}`;for(const e in Wa)t[Wa[e]]=`rdp-${Wa[e]}`;for(const e in Vi)t[Vi[e]]=`rdp-${Vi[e]}`;return t}function uX(t,e,n){return(n??new ta(e)).formatMonthYear(t)}const YEe=uX;function KEe(t,e,n){return(n??new ta(e)).format(t,"d")}function ZEe(t,e=Zo){return e.format(t,"LLLL")}function JEe(t,e,n){return(n??new ta(e)).format(t,"cccccc")}function e_e(t,e=Zo){return t<10?e.formatNumber(`0${t.toLocaleString()}`):e.formatNumber(`${t.toLocaleString()}`)}function t_e(){return""}function dX(t,e=Zo){return e.format(t,"yyyy")}const n_e=dX,r_e=Object.freeze(Object.defineProperty({__proto__:null,formatCaption:uX,formatDay:KEe,formatMonthCaption:YEe,formatMonthDropdown:ZEe,formatWeekNumber:e_e,formatWeekNumberHeader:t_e,formatWeekdayName:JEe,formatYearCaption:n_e,formatYearDropdown:dX},Symbol.toStringTag,{value:"Module"}));function s_e(t){return t?.formatMonthCaption&&!t.formatCaption&&(t.formatCaption=t.formatMonthCaption),t?.formatYearCaption&&!t.formatYearDropdown&&(t.formatYearDropdown=t.formatYearCaption),{...r_e,...t}}function i_e(t,e,n,r,s){const{startOfMonth:i,startOfYear:a,endOfYear:l,eachMonthOfInterval:c,getMonth:d}=s;return c({start:a(t),end:l(t)}).map(g=>{const x=r.formatMonthDropdown(g,s),y=d(g),w=e&&gi(n)||!1;return{value:y,label:x,disabled:w}})}function a_e(t,e={},n={}){let r={...e?.[Nt.Day]};return Object.entries(t).filter(([,s])=>s===!0).forEach(([s])=>{r={...r,...n?.[s]}}),r}function o_e(t,e,n){const r=t.today(),s=e?t.startOfISOWeek(r):t.startOfWeek(r),i=[];for(let a=0;a<7;a++){const l=t.addDays(s,a);i.push(l)}return i}function l_e(t,e,n,r,s=!1){if(!t||!e)return;const{startOfYear:i,endOfYear:a,eachYearOfInterval:l,getYear:c}=r,d=i(t),h=a(e),m=l({start:d,end:h});return s&&m.reverse(),m.map(g=>{const x=n.formatYearDropdown(g,r);return{value:c(g),label:x,disabled:!1}})}function hX(t,e,n,r){let s=(r??new ta(n)).format(t,"PPPP");return e.today&&(s=`Today, ${s}`),e.selected&&(s=`${s}, selected`),s}const c_e=hX;function fX(t,e,n){return(n??new ta(e)).formatMonthYear(t)}const u_e=fX;function d_e(t,e,n,r){let s=(r??new ta(n)).format(t,"PPPP");return e?.today&&(s=`Today, ${s}`),s}function h_e(t){return"Choose the Month"}function f_e(){return""}function m_e(t){return"Go to the Next Month"}function p_e(t){return"Go to the Previous Month"}function g_e(t,e,n){return(n??new ta(e)).format(t,"cccc")}function x_e(t,e){return`Week ${t}`}function v_e(t){return"Week Number"}function y_e(t){return"Choose the Year"}const b_e=Object.freeze(Object.defineProperty({__proto__:null,labelCaption:u_e,labelDay:c_e,labelDayButton:hX,labelGrid:fX,labelGridcell:d_e,labelMonthDropdown:h_e,labelNav:f_e,labelNext:m_e,labelPrevious:p_e,labelWeekNumber:x_e,labelWeekNumberHeader:v_e,labelWeekday:g_e,labelYearDropdown:y_e},Symbol.toStringTag,{value:"Module"})),Ng=t=>t instanceof HTMLElement?t:null,ek=t=>[...t.querySelectorAll("[data-animated-month]")??[]],w_e=t=>Ng(t.querySelector("[data-animated-month]")),tk=t=>Ng(t.querySelector("[data-animated-caption]")),nk=t=>Ng(t.querySelector("[data-animated-weeks]")),S_e=t=>Ng(t.querySelector("[data-animated-nav]")),k_e=t=>Ng(t.querySelector("[data-animated-weekdays]"));function O_e(t,e,{classNames:n,months:r,focused:s,dateLib:i}){const a=b.useRef(null),l=b.useRef(r),c=b.useRef(!1);b.useLayoutEffect(()=>{const d=l.current;if(l.current=r,!e||!t.current||!(t.current instanceof HTMLElement)||r.length===0||d.length===0||r.length!==d.length)return;const h=i.isSameMonth(r[0].date,d[0].date),m=i.isAfter(r[0].date,d[0].date),g=m?n[Vi.caption_after_enter]:n[Vi.caption_before_enter],x=m?n[Vi.weeks_after_enter]:n[Vi.weeks_before_enter],y=a.current,w=t.current.cloneNode(!0);if(w instanceof HTMLElement?(ek(w).forEach(N=>{if(!(N instanceof HTMLElement))return;const T=w_e(N);T&&N.contains(T)&&N.removeChild(T);const E=tk(N);E&&E.classList.remove(g);const _=nk(N);_&&_.classList.remove(x)}),a.current=w):a.current=null,c.current||h||s)return;const S=y instanceof HTMLElement?ek(y):[],k=ek(t.current);if(k?.every(j=>j instanceof HTMLElement)&&S&&S.every(j=>j instanceof HTMLElement)){c.current=!0,t.current.style.isolation="isolate";const j=S_e(t.current);j&&(j.style.zIndex="1"),k.forEach((N,T)=>{const E=S[T];if(!E)return;N.style.position="relative",N.style.overflow="hidden";const _=tk(N);_&&_.classList.add(g);const A=nk(N);A&&A.classList.add(x);const D=()=>{c.current=!1,t.current&&(t.current.style.isolation=""),j&&(j.style.zIndex=""),_&&_.classList.remove(g),A&&A.classList.remove(x),N.style.position="",N.style.overflow="",N.contains(E)&&N.removeChild(E)};E.style.pointerEvents="none",E.style.position="absolute",E.style.overflow="hidden",E.setAttribute("aria-hidden","true");const q=k_e(E);q&&(q.style.opacity="0");const B=tk(E);B&&(B.classList.add(m?n[Vi.caption_before_exit]:n[Vi.caption_after_exit]),B.addEventListener("animationend",D));const H=nk(E);H&&H.classList.add(m?n[Vi.weeks_before_exit]:n[Vi.weeks_after_exit]),N.insertBefore(E,N.firstChild)})}})}function j_e(t,e,n,r){const s=t[0],i=t[t.length-1],{ISOWeek:a,fixedWeeks:l,broadcastCalendar:c}=n??{},{addDays:d,differenceInCalendarDays:h,differenceInCalendarMonths:m,endOfBroadcastWeek:g,endOfISOWeek:x,endOfMonth:y,endOfWeek:w,isAfter:S,startOfBroadcastWeek:k,startOfISOWeek:j,startOfWeek:N}=r,T=c?k(s,r):a?j(s):N(s),E=c?g(i):a?x(y(i)):w(y(i)),_=h(E,T),A=m(i,s)+1,D=[];for(let H=0;H<=_;H++){const W=d(T,H);if(e&&S(W,e))break;D.push(W)}const B=(c?35:42)*A;if(l&&D.length{const s=r.weeks.reduce((i,a)=>i.concat(a.days.slice()),e.slice());return n.concat(s.slice())},e.slice())}function C_e(t,e,n,r){const{numberOfMonths:s=1}=n,i=[];for(let a=0;ae)break;i.push(l)}return i}function Rz(t,e,n,r){const{month:s,defaultMonth:i,today:a=r.today(),numberOfMonths:l=1}=t;let c=s||i||a;const{differenceInCalendarMonths:d,addMonths:h,startOfMonth:m}=r;if(n&&d(n,c){const k=n.broadcastCalendar?m(S,r):n.ISOWeek?g(S):x(S),j=n.broadcastCalendar?i(S):n.ISOWeek?a(l(S)):c(l(S)),N=e.filter(A=>A>=k&&A<=j),T=n.broadcastCalendar?35:42;if(n.fixedWeeks&&N.length{const q=T-N.length;return D>j&&D<=s(j,q)});N.push(...A)}const E=N.reduce((A,D)=>{const q=n.ISOWeek?d(D):h(D),B=A.find(W=>W.weekNumber===q),H=new rX(D,S,r);return B?B.days.push(H):A.push(new vEe(q,[H])),A},[]),_=new xEe(S,E);return w.push(_),w},[]);return n.reverseMonths?y.reverse():y}function E_e(t,e){let{startMonth:n,endMonth:r}=t;const{startOfYear:s,startOfDay:i,startOfMonth:a,endOfMonth:l,addYears:c,endOfYear:d,newDate:h,today:m}=e,{fromYear:g,toYear:x,fromMonth:y,toMonth:w}=t;!n&&y&&(n=y),!n&&g&&(n=e.newDate(g,0,1)),!r&&w&&(r=w),!r&&x&&(r=h(x,11,31));const S=t.captionLayout==="dropdown"||t.captionLayout==="dropdown-years";return n?n=a(n):g?n=h(g,0,1):!n&&S&&(n=s(c(t.today??m(),-100))),r?r=l(r):x?r=h(x,11,31):!r&&S&&(r=d(t.today??m())),[n&&i(n),r&&i(r)]}function __e(t,e,n,r){if(n.disableNavigation)return;const{pagedNavigation:s,numberOfMonths:i=1}=n,{startOfMonth:a,addMonths:l,differenceInCalendarMonths:c}=r,d=s?i:1,h=a(t);if(!e)return l(h,d);if(!(c(e,t)n.concat(r.weeks.slice()),e.slice())}function aw(t,e){const[n,r]=b.useState(t);return[e===void 0?n:e,r]}function R_e(t,e){const[n,r]=E_e(t,e),{startOfMonth:s,endOfMonth:i}=e,a=Rz(t,n,r,e),[l,c]=aw(a,t.month?a:void 0);b.useEffect(()=>{const _=Rz(t,n,r,e);c(_)},[t.timeZone]);const d=C_e(l,r,t,e),h=j_e(d,t.endMonth?i(t.endMonth):void 0,t,e),m=T_e(d,h,t,e),g=M_e(m),x=N_e(m),y=A_e(l,n,t,e),w=__e(l,r,t,e),{disableNavigation:S,onMonthChange:k}=t,j=_=>g.some(A=>A.days.some(D=>D.isEqualTo(_))),N=_=>{if(S)return;let A=s(_);n&&As(r)&&(A=s(r)),c(A),k?.(A)};return{months:m,weeks:g,days:x,navStart:n,navEnd:r,previousMonth:y,nextMonth:w,goToMonth:N,goToDay:_=>{j(_)||N(_.date)}}}var yo;(function(t){t[t.Today=0]="Today",t[t.Selected=1]="Selected",t[t.LastFocused=2]="LastFocused",t[t.FocusedModifier=3]="FocusedModifier"})(yo||(yo={}));function Dz(t){return!t[zr.disabled]&&!t[zr.hidden]&&!t[zr.outside]}function D_e(t,e,n,r){let s,i=-1;for(const a of t){const l=e(a);Dz(l)&&(l[zr.focused]&&iDz(e(a)))),s}function P_e(t,e,n,r,s,i,a){const{ISOWeek:l,broadcastCalendar:c}=i,{addDays:d,addMonths:h,addWeeks:m,addYears:g,endOfBroadcastWeek:x,endOfISOWeek:y,endOfWeek:w,max:S,min:k,startOfBroadcastWeek:j,startOfISOWeek:N,startOfWeek:T}=a;let _={day:d,week:m,month:h,year:g,startOfWeek:A=>c?j(A,a):l?N(A):T(A),endOfWeek:A=>c?x(A):l?y(A):w(A)}[t](n,e==="after"?1:-1);return e==="before"&&r?_=S([r,_]):e==="after"&&s&&(_=k([s,_])),_}function mX(t,e,n,r,s,i,a,l=0){if(l>365)return;const c=P_e(t,e,n.date,r,s,i,a),d=!!(i.disabled&&Ll(c,i.disabled,a)),h=!!(i.hidden&&Ll(c,i.hidden,a)),m=c,g=new rX(c,m,a);return!d&&!h?g:mX(t,e,g,r,s,i,a,l+1)}function z_e(t,e,n,r,s){const{autoFocus:i}=t,[a,l]=b.useState(),c=D_e(e.days,n,r||(()=>!1),a),[d,h]=b.useState(i?c:void 0);return{isFocusTarget:w=>!!c?.isEqualTo(w),setFocused:h,focused:d,blur:()=>{l(d),h(void 0)},moveFocus:(w,S)=>{if(!d)return;const k=mX(w,S,d,e.navStart,e.navEnd,t,s);k&&(t.disableNavigation&&!e.days.some(N=>N.isEqualTo(k))||(e.goToDay(k),h(k)))}}}function I_e(t,e){const{selected:n,required:r,onSelect:s}=t,[i,a]=aw(n,s?n:void 0),l=s?n:i,{isSameDay:c}=e,d=x=>l?.some(y=>c(y,x))??!1,{min:h,max:m}=t;return{selected:l,select:(x,y,w)=>{let S=[...l??[]];if(d(x)){if(l?.length===h||r&&l?.length===1)return;S=l?.filter(k=>!c(k,x))}else l?.length===m?S=[x]:S=[...S,x];return s||a(S),s?.(S,x,y,w),S},isSelected:d}}function L_e(t,e,n=0,r=0,s=!1,i=Zo){const{from:a,to:l}=e||{},{isSameDay:c,isAfter:d,isBefore:h}=i;let m;if(!a&&!l)m={from:t,to:n>0?void 0:t};else if(a&&!l)c(a,t)?n===0?m={from:a,to:t}:s?m={from:a,to:void 0}:m=void 0:h(t,a)?m={from:t,to:a}:m={from:a,to:t};else if(a&&l)if(c(a,t)&&c(l,t))s?m={from:a,to:l}:m=void 0;else if(c(a,t))m={from:a,to:n>0?void 0:t};else if(c(l,t))m={from:t,to:n>0?void 0:t};else if(h(t,a))m={from:t,to:l};else if(d(t,a))m={from:a,to:t};else if(d(t,l))m={from:a,to:t};else throw new Error("Invalid range");if(m?.from&&m?.to){const g=i.differenceInCalendarDays(m.to,m.from);r>0&&g>r?m={from:t,to:void 0}:n>1&&gtypeof l!="function").some(l=>typeof l=="boolean"?l:n.isDate(l)?Il(t,l,!1,n):cX(l,n)?l.some(c=>Il(t,c,!1,n)):g7(l)?l.from&&l.to?Pz(t,{from:l.from,to:l.to},n):!1:lX(l)?B_e(t,l.dayOfWeek,n):iX(l)?n.isAfter(l.before,l.after)?Pz(t,{from:n.addDays(l.after,1),to:n.addDays(l.before,-1)},n):Ll(t.from,l,n)||Ll(t.to,l,n):aX(l)||oX(l)?Ll(t.from,l,n)||Ll(t.to,l,n):!1))return!0;const a=r.filter(l=>typeof l=="function");if(a.length){let l=t.from;const c=n.differenceInCalendarDays(t.to,t.from);for(let d=0;d<=c;d++){if(a.some(h=>h(l)))return!0;l=n.addDays(l,1)}}return!1}function q_e(t,e){const{disabled:n,excludeDisabled:r,selected:s,required:i,onSelect:a}=t,[l,c]=aw(s,a?s:void 0),d=a?s:l;return{selected:d,select:(g,x,y)=>{const{min:w,max:S}=t,k=g?L_e(g,d,w,S,i,e):void 0;return r&&n&&k?.from&&k.to&&F_e({from:k.from,to:k.to},n,e)&&(k.from=g,k.to=void 0),a||c(k),a?.(k,g,x,y),k},isSelected:g=>d&&Il(d,g,!1,e)}}function $_e(t,e){const{selected:n,required:r,onSelect:s}=t,[i,a]=aw(n,s?n:void 0),l=s?n:i,{isSameDay:c}=e;return{selected:l,select:(m,g,x)=>{let y=m;return!r&&l&&l&&c(m,l)&&(y=void 0),s||a(y),s?.(y,m,g,x),y},isSelected:m=>l?c(l,m):!1}}function H_e(t,e){const n=$_e(t,e),r=I_e(t,e),s=q_e(t,e);switch(t.mode){case"single":return n;case"multiple":return r;case"range":return s;default:return}}function Q_e(t){let e=t;e.timeZone&&(e={...t},e.today&&(e.today=new Bs(e.today,e.timeZone)),e.month&&(e.month=new Bs(e.month,e.timeZone)),e.defaultMonth&&(e.defaultMonth=new Bs(e.defaultMonth,e.timeZone)),e.startMonth&&(e.startMonth=new Bs(e.startMonth,e.timeZone)),e.endMonth&&(e.endMonth=new Bs(e.endMonth,e.timeZone)),e.mode==="single"&&e.selected?e.selected=new Bs(e.selected,e.timeZone):e.mode==="multiple"&&e.selected?e.selected=e.selected?.map(dt=>new Bs(dt,e.timeZone)):e.mode==="range"&&e.selected&&(e.selected={from:e.selected.from?new Bs(e.selected.from,e.timeZone):void 0,to:e.selected.to?new Bs(e.selected.to,e.timeZone):void 0}));const{components:n,formatters:r,labels:s,dateLib:i,locale:a,classNames:l}=b.useMemo(()=>{const dt={...p7,...e.locale};return{dateLib:new ta({locale:dt,weekStartsOn:e.broadcastCalendar?1:e.weekStartsOn,firstWeekContainsDate:e.firstWeekContainsDate,useAdditionalWeekYearTokens:e.useAdditionalWeekYearTokens,useAdditionalDayOfYearTokens:e.useAdditionalDayOfYearTokens,timeZone:e.timeZone,numerals:e.numerals},e.dateLib),components:GEe(e.components),formatters:s_e(e.formatters),labels:{...b_e,...e.labels},locale:dt,classNames:{...x7(),...e.classNames}}},[e.locale,e.broadcastCalendar,e.weekStartsOn,e.firstWeekContainsDate,e.useAdditionalWeekYearTokens,e.useAdditionalDayOfYearTokens,e.timeZone,e.numerals,e.dateLib,e.components,e.formatters,e.labels,e.classNames]),{captionLayout:c,mode:d,navLayout:h,numberOfMonths:m=1,onDayBlur:g,onDayClick:x,onDayFocus:y,onDayKeyDown:w,onDayMouseEnter:S,onDayMouseLeave:k,onNextClick:j,onPrevClick:N,showWeekNumber:T,styles:E}=e,{formatCaption:_,formatDay:A,formatMonthDropdown:D,formatWeekNumber:q,formatWeekNumberHeader:B,formatWeekdayName:H,formatYearDropdown:W}=r,ee=R_e(e,i),{days:I,months:V,navStart:L,navEnd:$,previousMonth:K,nextMonth:Y,goToMonth:R}=ee,ie=UEe(I,e,L,$,i),{isSelected:X,select:z,selected:U}=H_e(e,i)??{},{blur:te,focused:ne,isFocusTarget:G,moveFocus:se,setFocused:re}=z_e(e,ee,ie,X??(()=>!1),i),{labelDayButton:ae,labelGridcell:_e,labelGrid:Be,labelMonthDropdown:Ye,labelNav:Je,labelPrevious:Oe,labelNext:Ve,labelWeekday:Ue,labelWeekNumber:$e,labelWeekNumberHeader:jt,labelYearDropdown:vt}=s,$n=b.useMemo(()=>o_e(i,e.ISOWeek),[i,e.ISOWeek]),qt=d!==void 0||x!==void 0,un=b.useCallback(()=>{K&&(R(K),N?.(K))},[K,R,N]),Mt=b.useCallback(()=>{Y&&(R(Y),j?.(Y))},[R,Y,j]),ct=b.useCallback((dt,rn)=>wt=>{wt.preventDefault(),wt.stopPropagation(),re(dt),z?.(dt.date,rn,wt),x?.(dt.date,rn,wt)},[z,x,re]),Ne=b.useCallback((dt,rn)=>wt=>{re(dt),y?.(dt.date,rn,wt)},[y,re]),ze=b.useCallback((dt,rn)=>wt=>{te(),g?.(dt.date,rn,wt)},[te,g]),rt=b.useCallback((dt,rn)=>wt=>{const Wt={ArrowLeft:[wt.shiftKey?"month":"day",e.dir==="rtl"?"after":"before"],ArrowRight:[wt.shiftKey?"month":"day",e.dir==="rtl"?"before":"after"],ArrowDown:[wt.shiftKey?"year":"week","after"],ArrowUp:[wt.shiftKey?"year":"week","before"],PageUp:[wt.shiftKey?"year":"month","before"],PageDown:[wt.shiftKey?"year":"month","after"],Home:["startOfWeek","before"],End:["endOfWeek","after"]};if(Wt[wt.key]){wt.preventDefault(),wt.stopPropagation();const[Gt,lt]=Wt[wt.key];se(Gt,lt)}w?.(dt.date,rn,wt)},[se,w,e.dir]),bt=b.useCallback((dt,rn)=>wt=>{S?.(dt.date,rn,wt)},[S]),zt=b.useCallback((dt,rn)=>wt=>{k?.(dt.date,rn,wt)},[k]),Rt=b.useCallback(dt=>rn=>{const wt=Number(rn.target.value),Wt=i.setMonth(i.startOfMonth(dt),wt);R(Wt)},[i,R]),Hn=b.useCallback(dt=>rn=>{const wt=Number(rn.target.value),Wt=i.setYear(i.startOfMonth(dt),wt);R(Wt)},[i,R]),{className:We,style:ot}=b.useMemo(()=>({className:[l[Nt.Root],e.className].filter(Boolean).join(" "),style:{...E?.[Nt.Root],...e.style}}),[l,e.className,e.style,E]),dn=XEe(e),Pt=b.useRef(null);O_e(Pt,!!e.animate,{classNames:l,months:V,focused:ne,dateLib:i});const xn={dayPickerProps:e,selected:U,select:z,isSelected:X,months:V,nextMonth:Y,previousMonth:K,goToMonth:R,getModifiers:ie,components:n,classNames:l,styles:E,labels:s,formatters:r};return oe.createElement(sX.Provider,{value:xn},oe.createElement(n.Root,{rootRef:e.animate?Pt:void 0,className:We,style:ot,dir:e.dir,id:e.id,lang:e.lang,nonce:e.nonce,title:e.title,role:e.role,"aria-label":e["aria-label"],"aria-labelledby":e["aria-labelledby"],...dn},oe.createElement(n.Months,{className:l[Nt.Months],style:E?.[Nt.Months]},!e.hideNavigation&&!h&&oe.createElement(n.Nav,{"data-animated-nav":e.animate?"true":void 0,className:l[Nt.Nav],style:E?.[Nt.Nav],"aria-label":Je(),onPreviousClick:un,onNextClick:Mt,previousMonth:K,nextMonth:Y}),V.map((dt,rn)=>oe.createElement(n.Month,{"data-animated-month":e.animate?"true":void 0,className:l[Nt.Month],style:E?.[Nt.Month],key:rn,displayIndex:rn,calendarMonth:dt},h==="around"&&!e.hideNavigation&&rn===0&&oe.createElement(n.PreviousMonthButton,{type:"button",className:l[Nt.PreviousMonthButton],tabIndex:K?void 0:-1,"aria-disabled":K?void 0:!0,"aria-label":Oe(K),onClick:un,"data-animated-button":e.animate?"true":void 0},oe.createElement(n.Chevron,{disabled:K?void 0:!0,className:l[Nt.Chevron],orientation:e.dir==="rtl"?"right":"left"})),oe.createElement(n.MonthCaption,{"data-animated-caption":e.animate?"true":void 0,className:l[Nt.MonthCaption],style:E?.[Nt.MonthCaption],calendarMonth:dt,displayIndex:rn},c?.startsWith("dropdown")?oe.createElement(n.DropdownNav,{className:l[Nt.Dropdowns],style:E?.[Nt.Dropdowns]},(()=>{const wt=c==="dropdown"||c==="dropdown-months"?oe.createElement(n.MonthsDropdown,{key:"month",className:l[Nt.MonthsDropdown],"aria-label":Ye(),classNames:l,components:n,disabled:!!e.disableNavigation,onChange:Rt(dt.date),options:i_e(dt.date,L,$,r,i),style:E?.[Nt.Dropdown],value:i.getMonth(dt.date)}):oe.createElement("span",{key:"month"},D(dt.date,i)),Wt=c==="dropdown"||c==="dropdown-years"?oe.createElement(n.YearsDropdown,{key:"year",className:l[Nt.YearsDropdown],"aria-label":vt(i.options),classNames:l,components:n,disabled:!!e.disableNavigation,onChange:Hn(dt.date),options:l_e(L,$,r,i,!!e.reverseYears),style:E?.[Nt.Dropdown],value:i.getYear(dt.date)}):oe.createElement("span",{key:"year"},W(dt.date,i));return i.getMonthYearOrder()==="year-first"?[Wt,wt]:[wt,Wt]})(),oe.createElement("span",{role:"status","aria-live":"polite",style:{border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",width:"1px",whiteSpace:"nowrap",wordWrap:"normal"}},_(dt.date,i.options,i))):oe.createElement(n.CaptionLabel,{className:l[Nt.CaptionLabel],role:"status","aria-live":"polite"},_(dt.date,i.options,i))),h==="around"&&!e.hideNavigation&&rn===m-1&&oe.createElement(n.NextMonthButton,{type:"button",className:l[Nt.NextMonthButton],tabIndex:Y?void 0:-1,"aria-disabled":Y?void 0:!0,"aria-label":Ve(Y),onClick:Mt,"data-animated-button":e.animate?"true":void 0},oe.createElement(n.Chevron,{disabled:Y?void 0:!0,className:l[Nt.Chevron],orientation:e.dir==="rtl"?"left":"right"})),rn===m-1&&h==="after"&&!e.hideNavigation&&oe.createElement(n.Nav,{"data-animated-nav":e.animate?"true":void 0,className:l[Nt.Nav],style:E?.[Nt.Nav],"aria-label":Je(),onPreviousClick:un,onNextClick:Mt,previousMonth:K,nextMonth:Y}),oe.createElement(n.MonthGrid,{role:"grid","aria-multiselectable":d==="multiple"||d==="range","aria-label":Be(dt.date,i.options,i)||void 0,className:l[Nt.MonthGrid],style:E?.[Nt.MonthGrid]},!e.hideWeekdays&&oe.createElement(n.Weekdays,{"data-animated-weekdays":e.animate?"true":void 0,className:l[Nt.Weekdays],style:E?.[Nt.Weekdays]},T&&oe.createElement(n.WeekNumberHeader,{"aria-label":jt(i.options),className:l[Nt.WeekNumberHeader],style:E?.[Nt.WeekNumberHeader],scope:"col"},B()),$n.map(wt=>oe.createElement(n.Weekday,{"aria-label":Ue(wt,i.options,i),className:l[Nt.Weekday],key:String(wt),style:E?.[Nt.Weekday],scope:"col"},H(wt,i.options,i)))),oe.createElement(n.Weeks,{"data-animated-weeks":e.animate?"true":void 0,className:l[Nt.Weeks],style:E?.[Nt.Weeks]},dt.weeks.map(wt=>oe.createElement(n.Week,{className:l[Nt.Week],key:wt.weekNumber,style:E?.[Nt.Week],week:wt},T&&oe.createElement(n.WeekNumber,{week:wt,style:E?.[Nt.WeekNumber],"aria-label":$e(wt.weekNumber,{locale:a}),className:l[Nt.WeekNumber],scope:"row",role:"rowheader"},q(wt.weekNumber,i)),wt.days.map(Wt=>{const{date:Gt}=Wt,lt=ie(Wt);if(lt[zr.focused]=!lt.hidden&&!!ne?.isEqualTo(Wt),lt[Wa.selected]=X?.(Gt)||lt.selected,g7(U)){const{from:vn,to:Qn}=U;lt[Wa.range_start]=!!(vn&&Qn&&i.isSameDay(Gt,vn)),lt[Wa.range_end]=!!(vn&&Qn&&i.isSameDay(Gt,Qn)),lt[Wa.range_middle]=Il(U,Gt,!0,i)}const ve=a_e(lt,E,e.modifiersStyles),He=WEe(lt,l,e.modifiersClassNames),ht=!qt&&!lt.hidden?_e(Gt,lt,i.options,i):void 0;return oe.createElement(n.Day,{key:`${i.format(Gt,"yyyy-MM-dd")}_${i.format(Wt.displayMonth,"yyyy-MM")}`,day:Wt,modifiers:lt,className:He.join(" "),style:ve,role:"gridcell","aria-selected":lt.selected||void 0,"aria-label":ht,"data-day":i.format(Gt,"yyyy-MM-dd"),"data-month":Wt.outside?i.format(Gt,"yyyy-MM"):void 0,"data-selected":lt.selected||void 0,"data-disabled":lt.disabled||void 0,"data-hidden":lt.hidden||void 0,"data-outside":Wt.outside||void 0,"data-focused":lt.focused||void 0,"data-today":lt.today||void 0},!lt.hidden&&qt?oe.createElement(n.DayButton,{className:l[Nt.DayButton],style:E?.[Nt.DayButton],type:"button",day:Wt,modifiers:lt,disabled:lt.disabled||void 0,tabIndex:G(Wt)?0:-1,"aria-label":ae(Gt,lt,i.options,i),onClick:ct(Wt,lt),onBlur:ze(Wt,lt),onFocus:Ne(Wt,lt),onKeyDown:rt(Wt,lt),onMouseEnter:bt(Wt,lt),onMouseLeave:zt(Wt,lt)},A(Gt,i.options,i)):!lt.hidden&&A(Wt.date,i.options,i))})))))))),e.footer&&oe.createElement(n.Footer,{className:l[Nt.Footer],style:E?.[Nt.Footer],role:"status","aria-live":"polite"},e.footer)))}function zz({className:t,classNames:e,showOutsideDays:n=!0,captionLayout:r="label",buttonVariant:s="ghost",formatters:i,components:a,...l}){const c=x7();return o.jsx(Q_e,{showOutsideDays:n,className:xe("bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,t),captionLayout:r,formatters:{formatMonthDropdown:d=>d.toLocaleString("default",{month:"short"}),...i},classNames:{root:xe("w-fit",c.root),months:xe("relative flex flex-col gap-4 md:flex-row",c.months),month:xe("flex w-full flex-col gap-4",c.month),nav:xe("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",c.nav),button_previous:xe(q0({variant:s}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",c.button_previous),button_next:xe(q0({variant:s}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",c.button_next),month_caption:xe("flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]",c.month_caption),dropdowns:xe("flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium",c.dropdowns),dropdown_root:xe("has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border",c.dropdown_root),dropdown:xe("bg-popover absolute inset-0 opacity-0",c.dropdown),caption_label:xe("select-none font-medium",r==="label"?"text-sm":"[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5",c.caption_label),table:"w-full border-collapse",weekdays:xe("flex",c.weekdays),weekday:xe("text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal",c.weekday),week:xe("mt-2 flex w-full",c.week),week_number_header:xe("w-[--cell-size] select-none",c.week_number_header),week_number:xe("text-muted-foreground select-none text-[0.8rem]",c.week_number),day:xe("group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md",c.day),range_start:xe("bg-accent rounded-l-md",c.range_start),range_middle:xe("rounded-none",c.range_middle),range_end:xe("bg-accent rounded-r-md",c.range_end),today:xe("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",c.today),outside:xe("text-muted-foreground aria-selected:text-muted-foreground",c.outside),disabled:xe("text-muted-foreground opacity-50",c.disabled),hidden:xe("invisible",c.hidden),...e},components:{Root:({className:d,rootRef:h,...m})=>o.jsx("div",{"data-slot":"calendar",ref:h,className:xe(d),...m}),Chevron:({className:d,orientation:h,...m})=>h==="left"?o.jsx(wd,{className:xe("size-4",d),...m}):h==="right"?o.jsx(Zl,{className:xe("size-4",d),...m}):o.jsx(Xc,{className:xe("size-4",d),...m}),DayButton:V_e,WeekNumber:({children:d,...h})=>o.jsx("td",{...h,children:o.jsx("div",{className:"flex size-[--cell-size] items-center justify-center text-center",children:d})}),...a},...l})}function V_e({className:t,day:e,modifiers:n,...r}){const s=x7(),i=b.useRef(null);return b.useEffect(()=>{n.focused&&i.current?.focus()},[n.focused]),o.jsx(ue,{ref:i,variant:"ghost",size:"icon","data-day":e.date.toLocaleDateString(),"data-selected-single":n.selected&&!n.range_start&&!n.range_end&&!n.range_middle,"data-range-start":n.range_start,"data-range-end":n.range_end,"data-range-middle":n.range_middle,className:xe("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70",s.day,t),...r})}class U_e{ws=null;reconnectTimeout=null;reconnectAttempts=0;maxReconnectAttempts=10;heartbeatInterval=null;logCallbacks=new Set;connectionCallbacks=new Set;isConnected=!1;logCache=[];maxCacheSize=1e3;getWebSocketUrl(){{const e=window.location.protocol==="https:"?"wss:":"ws:",n=window.location.host;return`${e}//${n}/ws/logs`}}connect(){if(this.ws?.readyState===WebSocket.OPEN||this.ws?.readyState===WebSocket.CONNECTING)return;const e=this.getWebSocketUrl();try{this.ws=new WebSocket(e),this.ws.onopen=()=>{this.isConnected=!0,this.reconnectAttempts=0,this.notifyConnection(!0),this.startHeartbeat()},this.ws.onmessage=n=>{try{if(n.data==="pong")return;const r=JSON.parse(n.data);this.notifyLog(r)}catch(r){console.error("解析日志消息失败:",r)}},this.ws.onerror=n=>{console.error("❌ WebSocket 错误:",n),this.isConnected=!1,this.notifyConnection(!1)},this.ws.onclose=()=>{this.isConnected=!1,this.notifyConnection(!1),this.stopHeartbeat(),this.attemptReconnect()}}catch(n){console.error("创建 WebSocket 连接失败:",n),this.attemptReconnect()}}attemptReconnect(){if(this.reconnectAttempts>=this.maxReconnectAttempts)return;this.reconnectAttempts+=1;const e=Math.min(1e3*this.reconnectAttempts,1e4);this.reconnectTimeout=window.setTimeout(()=>{this.connect()},e)}startHeartbeat(){this.heartbeatInterval=window.setInterval(()=>{this.ws?.readyState===WebSocket.OPEN&&this.ws.send("ping")},3e4)}stopHeartbeat(){this.heartbeatInterval!==null&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}disconnect(){this.reconnectTimeout!==null&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.stopHeartbeat(),this.ws&&(this.ws.close(),this.ws=null),this.isConnected=!1,this.reconnectAttempts=0}onLog(e){return this.logCallbacks.add(e),()=>this.logCallbacks.delete(e)}onConnectionChange(e){return this.connectionCallbacks.add(e),e(this.isConnected),()=>this.connectionCallbacks.delete(e)}notifyLog(e){this.logCache.some(r=>r.id===e.id)||(this.logCache.push(e),this.logCache.length>this.maxCacheSize&&(this.logCache=this.logCache.slice(-this.maxCacheSize)),this.logCallbacks.forEach(r=>{try{r(e)}catch(s){console.error("日志回调执行失败:",s)}}))}notifyConnection(e){this.connectionCallbacks.forEach(n=>{try{n(e)}catch(r){console.error("连接状态回调执行失败:",r)}})}getAllLogs(){return[...this.logCache]}clearLogs(){this.logCache=[]}getConnectionStatus(){return this.isConnected}}const Nh=new U_e;typeof window<"u"&&Nh.connect();const W_e={lessThanXSeconds:{one:"不到 1 秒",other:"不到 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分钟",lessThanXMinutes:{one:"不到 1 分钟",other:"不到 {{count}} 分钟"},xMinutes:{one:"1 分钟",other:"{{count}} 分钟"},xHours:{one:"1 小时",other:"{{count}} 小时"},aboutXHours:{one:"大约 1 小时",other:"大约 {{count}} 小时"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大约 1 个星期",other:"大约 {{count}} 个星期"},xWeeks:{one:"1 个星期",other:"{{count}} 个星期"},aboutXMonths:{one:"大约 1 个月",other:"大约 {{count}} 个月"},xMonths:{one:"1 个月",other:"{{count}} 个月"},aboutXYears:{one:"大约 1 年",other:"大约 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超过 1 年",other:"超过 {{count}} 年"},almostXYears:{one:"将近 1 年",other:"将近 {{count}} 年"}},G_e=(t,e,n)=>{let r;const s=W_e[t];return typeof s=="string"?r=s:e===1?r=s.one:r=s.other.replace("{{count}}",String(e)),n?.addSuffix?n.comparison&&n.comparison>0?r+"内":r+"前":r},X_e={full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},Y_e={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},K_e={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},Z_e={date:Uh({formats:X_e,defaultWidth:"full"}),time:Uh({formats:Y_e,defaultWidth:"full"}),dateTime:Uh({formats:K_e,defaultWidth:"full"})};function Iz(t,e,n){const r="eeee p";return cEe(t,e,n)?r:t.getTime()>e.getTime()?"'下个'"+r:"'上个'"+r}const J_e={lastWeek:Iz,yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:Iz,other:"PP p"},eAe=(t,e,n,r)=>{const s=J_e[t];return typeof s=="function"?s(e,n,r):s},tAe={narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},nAe={narrow:["1","2","3","4"],abbreviated:["第一季","第二季","第三季","第四季"],wide:["第一季度","第二季度","第三季度","第四季度"]},rAe={narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},sAe={narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["周日","周一","周二","周三","周四","周五","周六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},iAe={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},aAe={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},oAe=(t,e)=>{const n=Number(t);switch(e?.unit){case"date":return n.toString()+"日";case"hour":return n.toString()+"时";case"minute":return n.toString()+"分";case"second":return n.toString()+"秒";default:return"第 "+n.toString()}},lAe={ordinalNumber:oAe,era:jo({values:tAe,defaultWidth:"wide"}),quarter:jo({values:nAe,defaultWidth:"wide",argumentCallback:t=>t-1}),month:jo({values:rAe,defaultWidth:"wide"}),day:jo({values:sAe,defaultWidth:"wide"}),dayPeriod:jo({values:iAe,defaultWidth:"wide",formattingValues:aAe,defaultFormattingWidth:"wide"})},cAe=/^(第\s*)?\d+(日|时|分|秒)?/i,uAe=/\d+/i,dAe={narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},hAe={any:[/^(前)/i,/^(公元)/i]},fAe={narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻钟/i},mAe={any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},pAe={narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},gAe={narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},xAe={narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^周[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},vAe={any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},yAe={any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i},bAe={any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},wAe={ordinalNumber:KG({matchPattern:cAe,parsePattern:uAe,valueCallback:t=>parseInt(t,10)}),era:No({matchPatterns:dAe,defaultMatchWidth:"wide",parsePatterns:hAe,defaultParseWidth:"any"}),quarter:No({matchPatterns:fAe,defaultMatchWidth:"wide",parsePatterns:mAe,defaultParseWidth:"any",valueCallback:t=>t+1}),month:No({matchPatterns:pAe,defaultMatchWidth:"wide",parsePatterns:gAe,defaultParseWidth:"any"}),day:No({matchPatterns:xAe,defaultMatchWidth:"wide",parsePatterns:vAe,defaultParseWidth:"any"}),dayPeriod:No({matchPatterns:yAe,defaultMatchWidth:"any",parsePatterns:bAe,defaultParseWidth:"any"})},K1={code:"zh-CN",formatDistance:G_e,formatLong:Z_e,formatRelative:eAe,localize:lAe,match:wAe,options:{weekStartsOn:1,firstWeekContainsDate:4}},Z1={xs:{label:"小",rowHeight:28,class:"text-[10px] sm:text-xs"},sm:{label:"中",rowHeight:36,class:"text-xs sm:text-sm"},base:{label:"大",rowHeight:44,class:"text-sm sm:text-base"}};function SAe(){const[t,e]=b.useState([]),[n,r]=b.useState(""),[s,i]=b.useState("all"),[a,l]=b.useState("all"),[c,d]=b.useState(void 0),[h,m]=b.useState(void 0),[g,x]=b.useState(!0),[y,w]=b.useState(!1),[S,k]=b.useState("xs"),[j,N]=b.useState(4),T=b.useRef(null);b.useEffect(()=>{const L=Nh.getAllLogs();e(L);const $=Nh.onLog(()=>{e(Nh.getAllLogs())}),K=Nh.onConnectionChange(Y=>{w(Y)});return()=>{$(),K()}},[]);const E=b.useMemo(()=>{const L=new Set(t.map($=>$.module));return Array.from(L).sort()},[t]),_=L=>{switch(L){case"DEBUG":return"text-muted-foreground";case"INFO":return"text-blue-500 dark:text-blue-400";case"WARNING":return"text-yellow-600 dark:text-yellow-500";case"ERROR":return"text-red-600 dark:text-red-500";case"CRITICAL":return"text-red-700 dark:text-red-400 font-bold";default:return"text-foreground"}},A=L=>{switch(L){case"DEBUG":return"bg-gray-800/30 dark:bg-gray-800/50";case"INFO":return"bg-blue-900/20 dark:bg-blue-500/20";case"WARNING":return"bg-yellow-900/20 dark:bg-yellow-500/20";case"ERROR":return"bg-red-900/20 dark:bg-red-500/20";case"CRITICAL":return"bg-red-900/30 dark:bg-red-600/30";default:return"bg-gray-800/20 dark:bg-gray-800/30"}},D=()=>{window.location.reload()},q=()=>{Nh.clearLogs(),e([])},B=()=>{const L=ee.map(R=>`${R.timestamp} [${R.level.padEnd(8)}] [${R.module}] ${R.message}`).join(` -`),$=new Blob([L],{type:"text/plain;charset=utf-8"}),K=URL.createObjectURL($),Y=document.createElement("a");Y.href=K,Y.download=`logs-${Dv(new Date,"yyyy-MM-dd-HHmmss")}.txt`,Y.click(),URL.revokeObjectURL(K)},H=()=>{x(!g)},W=()=>{d(void 0),m(void 0)},ee=b.useMemo(()=>t.filter(L=>{const $=n===""||L.message.toLowerCase().includes(n.toLowerCase())||L.module.toLowerCase().includes(n.toLowerCase()),K=s==="all"||L.level===s,Y=a==="all"||L.module===a;let R=!0;if(c||h){const ie=new Date(L.timestamp);if(c){const X=new Date(c);X.setHours(0,0,0,0),R=R&&ie>=X}if(h){const X=new Date(h);X.setHours(23,59,59,999),R=R&&ie<=X}}return $&&K&&Y&&R}),[t,n,s,a,c,h]),I=Z1[S].rowHeight+j,V=HTe({count:ee.length,getScrollElement:()=>T.current,estimateSize:()=>I,overscan:15});return b.useEffect(()=>{g&&ee.length>0&&V.scrollToIndex(ee.length-1,{align:"end",behavior:"auto"})},[ee.length,g,V]),o.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[o.jsxs("div",{className:"flex-shrink-0 space-y-4 p-3 sm:p-4 lg:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-3",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-xl sm:text-2xl lg:text-3xl font-bold",children:"日志查看器"}),o.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:"实时查看和分析麦麦运行日志"})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("div",{className:xe("h-2.5 w-2.5 sm:h-3 sm:w-3 rounded-full",y?"bg-green-500 animate-pulse":"bg-red-500")}),o.jsx("span",{className:"text-xs sm:text-sm text-muted-foreground",children:y?"已连接":"未连接"})]})]}),o.jsx(Lt,{className:"p-3 sm:p-4",children:o.jsxs("div",{className:"flex flex-col gap-3 sm:gap-4",children:[o.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:gap-4",children:[o.jsxs("div",{className:"flex-1 relative",children:[o.jsx(ii,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(Pe,{placeholder:"搜索日志...",value:n,onChange:L=>r(L.target.value),className:"pl-9 h-9 text-sm"})]}),o.jsxs(Vt,{value:s,onValueChange:i,children:[o.jsxs($t,{className:"w-full sm:w-[140px] lg:w-[180px] h-9 text-sm",children:[o.jsx(ok,{className:"h-4 w-4 mr-2"}),o.jsx(Ut,{placeholder:"级别"})]}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部级别"}),o.jsx(De,{value:"DEBUG",children:"DEBUG"}),o.jsx(De,{value:"INFO",children:"INFO"}),o.jsx(De,{value:"WARNING",children:"WARNING"}),o.jsx(De,{value:"ERROR",children:"ERROR"}),o.jsx(De,{value:"CRITICAL",children:"CRITICAL"})]})]}),o.jsxs(Vt,{value:a,onValueChange:l,children:[o.jsxs($t,{className:"w-full sm:w-[160px] lg:w-[200px] h-9 text-sm",children:[o.jsx(ok,{className:"h-4 w-4 mr-2"}),o.jsx(Ut,{placeholder:"模块"})]}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部模块"}),E.map(L=>o.jsx(De,{value:L,children:L},L))]})]})]}),o.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:gap-4",children:[o.jsxs(Bo,{children:[o.jsx(Fo,{asChild:!0,children:o.jsxs(ue,{variant:"outline",size:"sm",className:xe("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!c&&"text-muted-foreground"),children:[o.jsx(C9,{className:"mr-2 h-4 w-4"}),o.jsx("span",{className:"text-xs sm:text-sm",children:c?Dv(c,"PPP",{locale:K1}):"开始日期"})]})}),o.jsx(Ka,{className:"w-auto p-0",align:"start",children:o.jsx(zz,{mode:"single",selected:c,onSelect:d,initialFocus:!0,locale:K1})})]}),o.jsxs(Bo,{children:[o.jsx(Fo,{asChild:!0,children:o.jsxs(ue,{variant:"outline",size:"sm",className:xe("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!h&&"text-muted-foreground"),children:[o.jsx(C9,{className:"mr-2 h-4 w-4"}),o.jsx("span",{className:"text-xs sm:text-sm",children:h?Dv(h,"PPP",{locale:K1}):"结束日期"})]})}),o.jsx(Ka,{className:"w-auto p-0",align:"start",children:o.jsx(zz,{mode:"single",selected:h,onSelect:m,initialFocus:!0,locale:K1})})]}),(c||h)&&o.jsxs(ue,{variant:"outline",size:"sm",onClick:W,className:"w-full sm:w-auto h-9",children:[o.jsx(Pp,{className:"h-4 w-4 sm:mr-2"}),o.jsx("span",{className:"hidden sm:inline text-sm",children:"清除时间筛选"}),o.jsx("span",{className:"sm:hidden text-sm",children:"清除"})]})]}),o.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center",children:[o.jsxs("div",{className:"flex gap-2 flex-wrap",children:[o.jsxs(ue,{variant:g?"default":"outline",size:"sm",onClick:H,className:"flex-1 sm:flex-none h-9",children:[g?o.jsx(rte,{className:"h-4 w-4"}):o.jsx(ste,{className:"h-4 w-4"}),o.jsx("span",{className:"ml-2 text-sm",children:g?"自动滚动":"已暂停"})]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:D,className:"flex-1 sm:flex-none h-9",children:[o.jsx(Qs,{className:"h-4 w-4"}),o.jsx("span",{className:"ml-2 text-sm",children:"刷新"})]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:q,className:"flex-1 sm:flex-none h-9",children:[o.jsx(Cn,{className:"h-4 w-4"}),o.jsx("span",{className:"ml-2 text-sm",children:"清空"})]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:B,className:"flex-1 sm:flex-none h-9",children:[o.jsx(td,{className:"h-4 w-4"}),o.jsx("span",{className:"ml-2 text-sm",children:"导出"})]})]}),o.jsx("div",{className:"flex-1 hidden sm:block"}),o.jsxs("div",{className:"text-xs sm:text-sm text-muted-foreground flex items-center justify-center sm:justify-end",children:[o.jsxs("span",{className:"font-mono",children:[ee.length," / ",t.length]}),o.jsx("span",{className:"ml-1",children:"条日志"})]})]}),o.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-6 pt-2 border-t border-border/50",children:[o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[o.jsx(ite,{className:"h-4 w-4"}),o.jsx("span",{children:"字号"})]}),o.jsx("div",{className:"flex gap-1",children:Object.keys(Z1).map(L=>o.jsx(ue,{variant:S===L?"default":"outline",size:"sm",onClick:()=>k(L),className:"h-7 px-3 text-xs",children:Z1[L].label},L))})]}),o.jsxs("div",{className:"flex items-center gap-3 flex-1 max-w-xs",children:[o.jsx("span",{className:"text-sm text-muted-foreground whitespace-nowrap",children:"行距"}),o.jsx(Nf,{value:[j],onValueChange:([L])=>N(L),min:0,max:12,step:2,className:"flex-1"}),o.jsxs("span",{className:"text-xs text-muted-foreground w-8",children:[j,"px"]})]})]})]})})]}),o.jsx("div",{className:"flex-1 min-h-0 px-3 sm:px-4 lg:px-6 pb-3 sm:pb-4 lg:pb-6",children:o.jsx(Lt,{className:"bg-black dark:bg-gray-950 border-gray-800 dark:border-gray-900 h-full",children:o.jsx(pn,{viewportRef:T,className:"h-full",children:o.jsx("div",{className:xe("p-2 sm:p-3 font-mono relative",Z1[S].class),style:{height:`${V.getTotalSize()}px`},children:ee.length===0?o.jsx("div",{className:"text-gray-500 dark:text-gray-600 text-center py-8 text-sm",children:"暂无日志数据"}):V.getVirtualItems().map(L=>{const $=ee[L.index];return o.jsxs("div",{"data-index":L.index,ref:V.measureElement,className:xe("absolute top-0 left-0 w-full px-2 sm:px-3 rounded hover:bg-white/5 transition-colors group",A($.level)),style:{transform:`translateY(${L.start}px)`,paddingTop:`${j/2}px`,paddingBottom:`${j/2}px`},children:[o.jsxs("div",{className:"flex flex-col gap-0.5 sm:hidden",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"text-gray-500 dark:text-gray-600",children:$.timestamp}),o.jsxs("span",{className:xe("font-semibold",_($.level)),children:["[",$.level,"]"]})]}),o.jsx("div",{className:"text-cyan-400 dark:text-cyan-500 truncate",children:$.module}),o.jsx("div",{className:"text-gray-300 dark:text-gray-400 whitespace-pre-wrap break-words",children:$.message})]}),o.jsxs("div",{className:"hidden sm:flex gap-2 items-start",children:[o.jsx("span",{className:"text-gray-500 dark:text-gray-600 flex-shrink-0 w-[130px] lg:w-[160px]",children:$.timestamp}),o.jsxs("span",{className:xe("flex-shrink-0 w-[65px] lg:w-[75px] font-semibold",_($.level)),children:["[",$.level,"]"]}),o.jsx("span",{className:"text-cyan-400 dark:text-cyan-500 flex-shrink-0 w-[100px] lg:w-[130px] truncate",children:$.module}),o.jsx("span",{className:"text-gray-300 dark:text-gray-400 flex-1 whitespace-pre-wrap break-words",children:$.message})]})]},L.key)})})})})})]})}const kAe="Mai-with-u",OAe="plugin-repo",jAe="main",NAe="plugin_details.json";async function CAe(){try{const t=await gt("/api/webui/plugins/fetch-raw",{method:"POST",headers:Tt(),body:JSON.stringify({owner:kAe,repo:OAe,branch:jAe,file_path:NAe})});if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);const e=await t.json();if(!e.success||!e.data)throw new Error(e.error||"获取插件列表失败");return JSON.parse(e.data).filter(s=>!s?.id||!s?.manifest?(console.warn("跳过无效插件数据:",s),!1):!s.manifest.name||!s.manifest.version?(console.warn("跳过缺少必需字段的插件:",s.id),!1):!0).map(s=>({id:s.id,manifest:{manifest_version:s.manifest.manifest_version||1,name:s.manifest.name,version:s.manifest.version,description:s.manifest.description||"",author:s.manifest.author||{name:"Unknown"},license:s.manifest.license||"Unknown",host_application:s.manifest.host_application||{min_version:"0.0.0"},homepage_url:s.manifest.homepage_url,repository_url:s.manifest.repository_url,keywords:s.manifest.keywords||[],categories:s.manifest.categories||[],default_locale:s.manifest.default_locale||"zh-CN",locales_path:s.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!1,published_at:new Date().toISOString(),updated_at:new Date().toISOString()}))}catch(t){throw console.error("Failed to fetch plugin list:",t),t}}async function TAe(){try{const t=await gt("/api/webui/plugins/git-status");if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);return await t.json()}catch(t){return console.error("Failed to check Git status:",t),{installed:!1,error:"无法检测 Git 安装状态"}}}async function EAe(){try{const t=await gt("/api/webui/plugins/version");if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);return await t.json()}catch(t){return console.error("Failed to get Maimai version:",t),{version:"0.0.0",version_major:0,version_minor:0,version_patch:0}}}function _Ae(t,e,n){const r=t.split(".").map(l=>parseInt(l)||0),s=r[0]||0,i=r[1]||0,a=r[2]||0;if(n.version_majorparseInt(m)||0),c=l[0]||0,d=l[1]||0,h=l[2]||0;if(n.version_major>c||n.version_major===c&&n.version_minor>d||n.version_major===c&&n.version_minor===d&&n.version_patch>h)return!1}return!0}function AAe(t,e){const n=window.location.protocol==="https:"?"wss:":"ws:",r=window.location.host,s=new WebSocket(`${n}//${r}/api/webui/ws/plugin-progress`);return s.onopen=()=>{console.log("Plugin progress WebSocket connected");const i=setInterval(()=>{s.readyState===WebSocket.OPEN?s.send("ping"):clearInterval(i)},3e4)},s.onmessage=i=>{try{if(i.data==="pong")return;const a=JSON.parse(i.data);t(a)}catch(a){console.error("Failed to parse progress data:",a)}},s.onerror=i=>{console.error("Plugin progress WebSocket error:",i),e?.(i)},s.onclose=()=>{console.log("Plugin progress WebSocket disconnected")},s}async function v0(){try{const t=await gt("/api/webui/plugins/installed",{headers:Tt()});if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);const e=await t.json();if(!e.success)throw new Error(e.message||"获取已安装插件列表失败");return e.plugins||[]}catch(t){return console.error("Failed to get installed plugins:",t),[]}}function J1(t,e){return e.some(n=>n.id===t)}function ev(t,e){const n=e.find(r=>r.id===t);if(n)return n.manifest?.version||n.version}async function MAe(t,e,n="main"){const r=await gt("/api/webui/plugins/install",{method:"POST",headers:Tt(),body:JSON.stringify({plugin_id:t,repository_url:e,branch:n})});if(!r.ok){const s=await r.json();throw new Error(s.detail||"安装失败")}return await r.json()}async function RAe(t){const e=await gt("/api/webui/plugins/uninstall",{method:"POST",headers:Tt(),body:JSON.stringify({plugin_id:t})});if(!e.ok){const n=await e.json();throw new Error(n.detail||"卸载失败")}return await e.json()}async function DAe(t,e,n="main"){const r=await gt("/api/webui/plugins/update",{method:"POST",headers:Tt(),body:JSON.stringify({plugin_id:t,repository_url:e,branch:n})});if(!r.ok){const s=await r.json();throw new Error(s.detail||"更新失败")}return await r.json()}async function PAe(t){const e=await gt(`/api/webui/plugins/config/${t}/schema`,{headers:Tt()});if(!e.ok){const r=await e.json();throw new Error(r.detail||"获取配置 Schema 失败")}const n=await e.json();if(!n.success)throw new Error(n.message||"获取配置 Schema 失败");return n.schema}async function zAe(t){const e=await gt(`/api/webui/plugins/config/${t}`,{headers:Tt()});if(!e.ok){const r=await e.json();throw new Error(r.detail||"获取配置失败")}const n=await e.json();if(!n.success)throw new Error(n.message||"获取配置失败");return n.config}async function IAe(t,e){const n=await gt(`/api/webui/plugins/config/${t}`,{method:"PUT",headers:Tt(),body:JSON.stringify({config:e})});if(!n.ok){const r=await n.json();throw new Error(r.detail||"保存配置失败")}return await n.json()}async function LAe(t){const e=await gt(`/api/webui/plugins/config/${t}/reset`,{method:"POST",headers:Tt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"重置配置失败")}return await e.json()}async function BAe(t){const e=await gt(`/api/webui/plugins/config/${t}/toggle`,{method:"POST",headers:Tt()});if(!e.ok){const n=await e.json();throw new Error(n.detail||"切换状态失败")}return await e.json()}const Cg="https://maibot-plugin-stats.maibot-webui.workers.dev";async function pX(t){try{const e=await fetch(`${Cg}/stats/${t}`);return e.ok?await e.json():(console.error("Failed to fetch plugin stats:",e.statusText),null)}catch(e){return console.error("Error fetching plugin stats:",e),null}}async function FAe(t,e){try{const n=e||v7(),r=await fetch(`${Cg}/stats/like`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t,user_id:n})}),s=await r.json();return r.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:r.ok?{success:!0,...s}:{success:!1,error:s.error||"点赞失败"}}catch(n){return console.error("Error liking plugin:",n),{success:!1,error:"网络错误"}}}async function qAe(t,e){try{const n=e||v7(),r=await fetch(`${Cg}/stats/dislike`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t,user_id:n})}),s=await r.json();return r.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:r.ok?{success:!0,...s}:{success:!1,error:s.error||"点踩失败"}}catch(n){return console.error("Error disliking plugin:",n),{success:!1,error:"网络错误"}}}async function $Ae(t,e,n,r){if(e<1||e>5)return{success:!1,error:"评分必须在 1-5 之间"};try{const s=r||v7(),i=await fetch(`${Cg}/stats/rate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t,rating:e,comment:n,user_id:s})}),a=await i.json();return i.status===429?{success:!1,error:"每天最多评分 3 次"}:i.ok?{success:!0,...a}:{success:!1,error:a.error||"评分失败"}}catch(s){return console.error("Error rating plugin:",s),{success:!1,error:"网络错误"}}}async function HAe(t){try{const e=await fetch(`${Cg}/stats/download`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:t})}),n=await e.json();return e.status===429?(console.warn("Download recording rate limited"),{success:!0}):e.ok?{success:!0,...n}:(console.error("Failed to record download:",n.error),{success:!1,error:n.error})}catch(e){return console.error("Error recording download:",e),{success:!1,error:"网络错误"}}}function QAe(){const t=navigator,e=[navigator.userAgent,navigator.language,navigator.languages?.join(",")||"",navigator.platform,navigator.hardwareConcurrency||0,screen.width,screen.height,screen.colorDepth,screen.pixelDepth,new Date().getTimezoneOffset(),Intl.DateTimeFormat().resolvedOptions().timeZone,navigator.maxTouchPoints||0,t.deviceMemory||0].join("|");let n=0;for(let r=0;r{i(!0);const k=await pX(t);k&&r(k),i(!1)};b.useEffect(()=>{x()},[t]);const y=async()=>{const k=await FAe(t);k.success?(g({title:"已点赞",description:"感谢你的支持!"}),x()):g({title:"点赞失败",description:k.error||"未知错误",variant:"destructive"})},w=async()=>{const k=await qAe(t);k.success?(g({title:"已反馈",description:"感谢你的反馈!"}),x()):g({title:"操作失败",description:k.error||"未知错误",variant:"destructive"})},S=async()=>{if(a===0){g({title:"请选择评分",description:"至少选择 1 颗星",variant:"destructive"});return}const k=await $Ae(t,a,c||void 0);k.success?(g({title:"评分成功",description:"感谢你的评价!"}),m(!1),l(0),d(""),x()):g({title:"评分失败",description:k.error||"未知错误",variant:"destructive"})};return s?o.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(td,{className:"h-4 w-4"}),o.jsx("span",{children:"-"})]}),o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(Dc,{className:"h-4 w-4"}),o.jsx("span",{children:"-"})]})]}):n?e?o.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[o.jsxs("div",{className:"flex items-center gap-1",title:`下载量: ${n.downloads.toLocaleString()}`,children:[o.jsx(td,{className:"h-4 w-4"}),o.jsx("span",{children:n.downloads.toLocaleString()})]}),o.jsxs("div",{className:"flex items-center gap-1",title:`评分: ${n.rating.toFixed(1)} (${n.rating_count} 条评价)`,children:[o.jsx(Dc,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),o.jsx("span",{children:n.rating.toFixed(1)})]}),o.jsxs("div",{className:"flex items-center gap-1",title:`点赞数: ${n.likes}`,children:[o.jsx(k4,{className:"h-4 w-4"}),o.jsx("span",{children:n.likes})]})]}):o.jsxs("div",{className:"space-y-4",children:[o.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-4",children:[o.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[o.jsx(td,{className:"h-5 w-5 text-muted-foreground mb-1"}),o.jsx("span",{className:"text-2xl font-bold",children:n.downloads.toLocaleString()}),o.jsx("span",{className:"text-xs text-muted-foreground",children:"下载量"})]}),o.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[o.jsx(Dc,{className:"h-5 w-5 text-yellow-400 mb-1 fill-yellow-400"}),o.jsx("span",{className:"text-2xl font-bold",children:n.rating.toFixed(1)}),o.jsxs("span",{className:"text-xs text-muted-foreground",children:[n.rating_count," 条评价"]})]}),o.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[o.jsx(k4,{className:"h-5 w-5 text-green-500 mb-1"}),o.jsx("span",{className:"text-2xl font-bold",children:n.likes}),o.jsx("span",{className:"text-xs text-muted-foreground",children:"点赞"})]}),o.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[o.jsx(T9,{className:"h-5 w-5 text-red-500 mb-1"}),o.jsx("span",{className:"text-2xl font-bold",children:n.dislikes}),o.jsx("span",{className:"text-xs text-muted-foreground",children:"点踩"})]})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsxs(ue,{variant:"outline",size:"sm",onClick:y,children:[o.jsx(k4,{className:"h-4 w-4 mr-1"}),"点赞"]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:w,children:[o.jsx(T9,{className:"h-4 w-4 mr-1"}),"点踩"]}),o.jsxs(Er,{open:h,onOpenChange:m,children:[o.jsx(Of,{asChild:!0,children:o.jsxs(ue,{variant:"default",size:"sm",children:[o.jsx(Dc,{className:"h-4 w-4 mr-1"}),"评分"]})}),o.jsxs(wr,{children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"为插件评分"}),o.jsx(Xr,{children:"分享你的使用体验,帮助其他用户"})]}),o.jsxs("div",{className:"space-y-4 py-4",children:[o.jsxs("div",{className:"flex flex-col items-center gap-2",children:[o.jsx("div",{className:"flex gap-2",children:[1,2,3,4,5].map(k=>o.jsx("button",{onClick:()=>l(k),className:"focus:outline-none",children:o.jsx(Dc,{className:`h-8 w-8 transition-colors ${k<=a?"fill-yellow-400 text-yellow-400":"text-muted-foreground hover:text-yellow-300"}`})},k))}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:[a===0&&"点击星星进行评分",a===1&&"很差",a===2&&"一般",a===3&&"还行",a===4&&"不错",a===5&&"非常好"]})]}),o.jsxs("div",{children:[o.jsx("label",{className:"text-sm font-medium mb-2 block",children:"评论(可选)"}),o.jsx(Nr,{value:c,onChange:k=>d(k.target.value),placeholder:"分享你的使用体验...",rows:4,maxLength:500}),o.jsxs("div",{className:"text-xs text-muted-foreground mt-1 text-right",children:[c.length," / 500"]})]})]}),o.jsxs(fs,{children:[o.jsx(ue,{variant:"outline",onClick:()=>m(!1),children:"取消"}),o.jsx(ue,{onClick:S,disabled:a===0,children:"提交评分"})]})]})]})]}),n.recent_ratings&&n.recent_ratings.length>0&&o.jsxs("div",{className:"space-y-2",children:[o.jsx("h4",{className:"text-sm font-semibold",children:"最近评价"}),o.jsx("div",{className:"space-y-3",children:n.recent_ratings.map((k,j)=>o.jsxs("div",{className:"p-3 rounded-lg border bg-muted/50",children:[o.jsxs("div",{className:"flex items-center justify-between mb-2",children:[o.jsx("div",{className:"flex gap-1",children:[1,2,3,4,5].map(N=>o.jsx(Dc,{className:`h-3 w-3 ${N<=k.rating?"fill-yellow-400 text-yellow-400":"text-muted-foreground"}`},N))}),o.jsx("span",{className:"text-xs text-muted-foreground",children:new Date(k.created_at).toLocaleDateString()})]}),k.comment&&o.jsx("p",{className:"text-sm text-muted-foreground",children:k.comment})]},j))})]})]}):null}const Lz={"Group Management":"群组管理","Entertainment & Interaction":"娱乐互动","Utility Tools":"实用工具","Content Generation":"内容生成",Multimedia:"多媒体","External Integration":"外部集成","Data Analysis & Insights":"数据分析与洞察",Other:"其他"};function UAe(){const t=na(),[e,n]=b.useState(null),[r,s]=b.useState(""),[i,a]=b.useState("all"),[l,c]=b.useState("all"),[d,h]=b.useState(!0),[m,g]=b.useState([]),[x,y]=b.useState(!0),[w,S]=b.useState(null),[k,j]=b.useState(null),[N,T]=b.useState(null),[E,_]=b.useState(null),[,A]=b.useState([]),[D,q]=b.useState({}),{toast:B}=Lr(),H=async R=>{const ie=R.map(async U=>{try{const te=await pX(U.id);return{id:U.id,stats:te}}catch(te){return console.warn(`Failed to load stats for ${U.id}:`,te),{id:U.id,stats:null}}}),X=await Promise.all(ie),z={};X.forEach(({id:U,stats:te})=>{te&&(z[U]=te)}),q(z)};b.useEffect(()=>{let R=null,ie=!1;return(async()=>{if(R=AAe(z=>{ie||(T(z),z.stage==="success"?setTimeout(()=>{ie||T(null)},2e3):z.stage==="error"&&(y(!1),S(z.error||"加载失败")))},z=>{console.error("WebSocket error:",z),ie||B({title:"WebSocket 连接失败",description:"无法实时显示加载进度",variant:"destructive"})}),await new Promise(z=>{if(!R){z();return}const U=()=>{R&&R.readyState===WebSocket.OPEN?(console.log("WebSocket connected, starting to load plugins"),z()):R&&R.readyState===WebSocket.CLOSED?(console.warn("WebSocket closed before loading plugins"),z()):setTimeout(U,100)};U()}),!ie){const z=await TAe();j(z),z.installed||B({title:"Git 未安装",description:z.error||"请先安装 Git 才能使用插件安装功能",variant:"destructive"})}if(!ie){const z=await EAe();_(z)}if(!ie)try{y(!0),S(null);const z=await CAe();if(!ie){const U=await v0();A(U);const te=z.map(ne=>{const G=J1(ne.id,U),se=ev(ne.id,U);return{...ne,installed:G,installed_version:se}});for(const ne of U)!te.some(se=>se.id===ne.id)&&ne.manifest&&te.push({id:ne.id,manifest:{manifest_version:ne.manifest.manifest_version||1,name:ne.manifest.name,version:ne.manifest.version,description:ne.manifest.description||"",author:ne.manifest.author,license:ne.manifest.license||"Unknown",host_application:ne.manifest.host_application,homepage_url:ne.manifest.homepage_url,repository_url:ne.manifest.repository_url,keywords:ne.manifest.keywords||[],categories:ne.manifest.categories||[],default_locale:ne.manifest.default_locale||"zh-CN",locales_path:ne.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!0,installed_version:ne.manifest.version,published_at:new Date().toISOString(),updated_at:new Date().toISOString()});g(te),H(te)}}catch(z){if(!ie){const U=z instanceof Error?z.message:"加载插件列表失败";S(U),B({title:"加载失败",description:U,variant:"destructive"})}}finally{ie||y(!1)}})(),()=>{ie=!0,R&&R.close()}},[B]);const W=R=>{if(!R.installed&&E&&!ee(R))return o.jsxs(tn,{variant:"destructive",className:"gap-1",children:[o.jsx(Lo,{className:"h-3 w-3"}),"不兼容"]});if(R.installed){const ie=R.installed_version?.trim(),X=R.manifest.version?.trim();if(ie!==X){const z=ie?.split(".").map(Number)||[0,0,0],U=X?.split(".").map(Number)||[0,0,0];for(let te=0;te<3;te++){if((U[te]||0)>(z[te]||0))return o.jsxs(tn,{variant:"outline",className:"gap-1 text-orange-600 border-orange-600",children:[o.jsx(Lo,{className:"h-3 w-3"}),"可更新"]});if((U[te]||0)<(z[te]||0))break}}return o.jsxs(tn,{variant:"default",className:"gap-1",children:[o.jsx(Ya,{className:"h-3 w-3"}),"已安装"]})}return null},ee=R=>!E||!R.manifest?.host_application?!0:_Ae(R.manifest.host_application.min_version,R.manifest.host_application.max_version,E),I=R=>{if(!R.installed||!R.installed_version||!R.manifest?.version)return!1;const ie=R.installed_version.trim(),X=R.manifest.version.trim();if(ie===X)return!1;const z=ie.split(".").map(Number),U=X.split(".").map(Number);for(let te=0;te<3;te++){if((U[te]||0)>(z[te]||0))return!0;if((U[te]||0)<(z[te]||0))return!1}return!1},V=m.filter(R=>{if(!R.manifest)return console.warn("[过滤] 跳过无 manifest 的插件:",R.id),!1;const ie=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(te=>te.toLowerCase().includes(r.toLowerCase())),X=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i);let z=!0;l==="installed"?z=R.installed===!0:l==="updates"&&(z=R.installed===!0&&I(R));const U=!d||!E||ee(R);return ie&&X&&z&&U}),L=()=>{n(null)},$=async R=>{if(!k?.installed){B({title:"无法安装",description:"Git 未安装",variant:"destructive"});return}if(E&&!ee(R)){B({title:"无法安装",description:"插件与当前麦麦版本不兼容",variant:"destructive"});return}try{await MAe(R.id,R.manifest.repository_url||"","main"),HAe(R.id).catch(X=>{console.warn("Failed to record download:",X)}),B({title:"安装成功",description:`${R.manifest.name} 已成功安装`});const ie=await v0();A(ie),g(X=>X.map(z=>{if(z.id===R.id){const U=J1(z.id,ie),te=ev(z.id,ie);return{...z,installed:U,installed_version:te}}return z}))}catch(ie){B({title:"安装失败",description:ie instanceof Error?ie.message:"未知错误",variant:"destructive"})}},K=async R=>{try{await RAe(R.id),B({title:"卸载成功",description:`${R.manifest.name} 已成功卸载`});const ie=await v0();A(ie),g(X=>X.map(z=>{if(z.id===R.id){const U=J1(z.id,ie),te=ev(z.id,ie);return{...z,installed:U,installed_version:te}}return z}))}catch(ie){B({title:"卸载失败",description:ie instanceof Error?ie.message:"未知错误",variant:"destructive"})}},Y=async R=>{if(!k?.installed){B({title:"无法更新",description:"Git 未安装",variant:"destructive"});return}try{const ie=await DAe(R.id,R.manifest.repository_url||"","main");B({title:"更新成功",description:`${R.manifest.name} 已从 ${ie.old_version} 更新到 ${ie.new_version}`});const X=await v0();A(X),g(z=>z.map(U=>{if(U.id===R.id){const te=J1(U.id,X),ne=ev(U.id,X);return{...U,installed:te,installed_version:ne}}return U}))}catch(ie){B({title:"更新失败",description:ie instanceof Error?ie.message:"未知错误",variant:"destructive"})}};return o.jsx(pn,{className:"h-full",children:o.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件市场"}),o.jsx("p",{className:"text-muted-foreground mt-2",children:"浏览和管理麦麦的插件"})]}),o.jsxs(ue,{onClick:()=>t({to:"/plugin-mirrors"}),children:[o.jsx(ate,{className:"h-4 w-4 mr-2"}),"配置镜像源"]})]}),k&&!k.installed&&o.jsxs(Lt,{className:"border-orange-600 bg-orange-50 dark:bg-orange-950/20",children:[o.jsx(En,{children:o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx(Ga,{className:"h-5 w-5 text-orange-600"}),o.jsxs("div",{children:[o.jsx(_n,{className:"text-lg text-orange-900 dark:text-orange-100",children:"Git 未安装"}),o.jsx(Wr,{className:"text-orange-800 dark:text-orange-200",children:k.error||"请先安装 Git 才能使用插件安装功能"})]})]})}),o.jsx(Xn,{children:o.jsxs("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:["您可以从 ",o.jsx("a",{href:"https://git-scm.com/downloads",target:"_blank",rel:"noopener noreferrer",className:"underline font-medium",children:"git-scm.com"})," 下载并安装 Git。 安装完成后,请重启麦麦应用。"]})})]}),o.jsx(Lt,{className:"p-4",children:o.jsxs("div",{className:"flex flex-col gap-4",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[o.jsxs("div",{className:"flex-1 relative",children:[o.jsx(ii,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(Pe,{placeholder:"搜索插件...",value:r,onChange:R=>s(R.target.value),className:"pl-9"})]}),o.jsxs(Vt,{value:i,onValueChange:a,children:[o.jsx($t,{className:"w-full sm:w-[200px]",children:o.jsx(Ut,{placeholder:"选择分类"})}),o.jsxs(Ht,{children:[o.jsx(De,{value:"all",children:"全部分类"}),o.jsx(De,{value:"Group Management",children:"群组管理"}),o.jsx(De,{value:"Entertainment & Interaction",children:"娱乐互动"}),o.jsx(De,{value:"Utility Tools",children:"实用工具"}),o.jsx(De,{value:"Content Generation",children:"内容生成"}),o.jsx(De,{value:"Multimedia",children:"多媒体"}),o.jsx(De,{value:"External Integration",children:"外部集成"}),o.jsx(De,{value:"Data Analysis & Insights",children:"数据分析与洞察"}),o.jsx(De,{value:"Other",children:"其他"})]})]})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ci,{id:"compatible-only",checked:d,onCheckedChange:R=>h(R===!0)}),o.jsx("label",{htmlFor:"compatible-only",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer",children:"只显示兼容当前版本的插件"})]})]})}),o.jsx(Yi,{value:l,onValueChange:c,className:"w-full",children:o.jsxs(ji,{className:"grid w-full grid-cols-3",children:[o.jsxs(Bt,{value:"all",children:["全部插件 (",m.filter(R=>{if(!R.manifest)return!1;const ie=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(U=>U.toLowerCase().includes(r.toLowerCase())),X=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i),z=!d||!E||ee(R);return ie&&X&&z}).length,")"]}),o.jsxs(Bt,{value:"installed",children:["已安装 (",m.filter(R=>{if(!R.manifest)return!1;const ie=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(U=>U.toLowerCase().includes(r.toLowerCase())),X=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i),z=!d||!E||ee(R);return R.installed&&ie&&X&&z}).length,")"]}),o.jsxs(Bt,{value:"updates",children:["可更新 (",m.filter(R=>{if(!R.manifest)return!1;const ie=r===""||R.manifest.name?.toLowerCase().includes(r.toLowerCase())||R.manifest.description?.toLowerCase().includes(r.toLowerCase())||R.manifest.keywords&&R.manifest.keywords.some(U=>U.toLowerCase().includes(r.toLowerCase())),X=i==="all"||R.manifest.categories&&R.manifest.categories.includes(i),z=!d||!E||ee(R);return R.installed&&I(R)&&ie&&X&&z}).length,")"]})]})}),N&&N.stage==="loading"&&o.jsx(Lt,{className:"p-4",children:o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Us,{className:"h-4 w-4 animate-spin"}),o.jsxs("span",{className:"text-sm font-medium",children:[N.operation==="fetch"&&"加载插件列表",N.operation==="install"&&`安装插件${N.plugin_id?`: ${N.plugin_id}`:""}`,N.operation==="uninstall"&&`卸载插件${N.plugin_id?`: ${N.plugin_id}`:""}`,N.operation==="update"&&`更新插件${N.plugin_id?`: ${N.plugin_id}`:""}`]})]}),o.jsxs("span",{className:"text-sm font-medium",children:[N.progress,"%"]})]}),o.jsx(Qp,{value:N.progress,className:"h-2"}),o.jsx("div",{className:"text-xs text-muted-foreground",children:N.message}),N.operation==="fetch"&&N.total_plugins>0&&o.jsxs("div",{className:"text-xs text-muted-foreground text-center",children:["已加载 ",N.loaded_plugins," / ",N.total_plugins," 个插件"]})]})}),N&&N.stage==="error"&&N.error&&o.jsx(Lt,{className:"border-destructive bg-destructive/10",children:o.jsx(En,{children:o.jsxs("div",{className:"flex items-center gap-3",children:[o.jsx(Ga,{className:"h-5 w-5 text-destructive"}),o.jsxs("div",{children:[o.jsx(_n,{className:"text-lg text-destructive",children:"加载失败"}),o.jsx(Wr,{className:"text-destructive/80",children:N.error})]})]})})}),x?o.jsxs("div",{className:"flex items-center justify-center py-12",children:[o.jsx(Us,{className:"h-8 w-8 animate-spin text-muted-foreground"}),o.jsx("span",{className:"ml-3 text-muted-foreground",children:"加载插件列表中..."})]}):w?o.jsx(Lt,{className:"p-6",children:o.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[o.jsx(Ga,{className:"h-12 w-12 text-destructive mb-4"}),o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),o.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:w}),o.jsx(ue,{onClick:()=>window.location.reload(),children:"重新加载"})]})}):V.length===0?o.jsx(Lt,{className:"p-6",children:o.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[o.jsx(ii,{className:"h-12 w-12 text-muted-foreground mb-4"}),o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"未找到插件"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:r||i!=="all"?"尝试调整搜索条件或筛选器":"暂无可用插件"})]})}):o.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:V.map(R=>o.jsxs(Lt,{className:"flex flex-col hover:shadow-lg transition-shadow h-full",children:[o.jsxs(En,{children:[o.jsxs("div",{className:"flex items-start justify-between gap-2",children:[o.jsx(_n,{className:"text-xl",children:R.manifest?.name||R.id}),o.jsxs("div",{className:"flex flex-col gap-1",children:[R.manifest?.categories&&R.manifest.categories[0]&&o.jsx(tn,{variant:"secondary",className:"text-xs whitespace-nowrap",children:Lz[R.manifest.categories[0]]||R.manifest.categories[0]}),W(R)]})]}),o.jsx(Wr,{className:"line-clamp-2",children:R.manifest?.description||"无描述"})]}),o.jsx(Xn,{className:"flex-1",children:o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(td,{className:"h-4 w-4"}),o.jsx("span",{children:(D[R.id]?.downloads??R.downloads??0).toLocaleString()})]}),o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(Dc,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),o.jsx("span",{children:(D[R.id]?.rating??R.rating??0).toFixed(1)})]})]}),o.jsxs("div",{className:"flex flex-wrap gap-2",children:[R.manifest?.keywords&&R.manifest.keywords.slice(0,3).map(ie=>o.jsx(tn,{variant:"outline",className:"text-xs",children:ie},ie)),R.manifest?.keywords&&R.manifest.keywords.length>3&&o.jsxs(tn,{variant:"outline",className:"text-xs",children:["+",R.manifest.keywords.length-3]})]}),o.jsxs("div",{className:"text-xs text-muted-foreground pt-2 border-t space-y-1",children:[o.jsxs("div",{children:["v",R.manifest?.version||"unknown"," · ",R.manifest?.author?.name||"Unknown"]}),R.manifest?.host_application&&o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx("span",{children:"支持:"}),o.jsxs("span",{className:"font-medium",children:[R.manifest.host_application.min_version,R.manifest.host_application.max_version?` - ${R.manifest.host_application.max_version}`:" - 最新版本"]})]})]})]})}),o.jsx(hL,{className:"pt-4",children:o.jsxs("div",{className:"flex items-center justify-end gap-2 w-full",children:[o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>n(R),children:"查看详情"}),R.installed?I(R)?o.jsxs(ue,{size:"sm",disabled:!k?.installed,title:k?.installed?void 0:"Git 未安装",onClick:()=>Y(R),children:[o.jsx(Qs,{className:"h-4 w-4 mr-1"}),"更新"]}):o.jsxs(ue,{variant:"destructive",size:"sm",disabled:!k?.installed,title:k?.installed?void 0:"Git 未安装",onClick:()=>K(R),children:[o.jsx(Cn,{className:"h-4 w-4 mr-1"}),"卸载"]}):o.jsxs(ue,{size:"sm",disabled:!k?.installed||N?.operation==="install"||E!==null&&!ee(R),title:k?.installed?E!==null&&!ee(R)?`不兼容当前版本 (需要 ${R.manifest?.host_application?.min_version||"未知"}${R.manifest?.host_application?.max_version?` - ${R.manifest.host_application.max_version}`:"+"},当前 ${E?.version})`:void 0:"Git 未安装",onClick:()=>$(R),children:[o.jsx(td,{className:"h-4 w-4 mr-1"}),N?.operation==="install"&&N?.plugin_id===R.id?"安装中...":"安装"]})]})})]},R.id))}),o.jsx(Er,{open:e!==null,onOpenChange:L,children:e&&e.manifest&&o.jsxs(wr,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[o.jsx(Sr,{children:o.jsxs("div",{className:"flex items-start justify-between gap-4",children:[o.jsxs("div",{className:"space-y-2 flex-1",children:[o.jsx(kr,{className:"text-2xl",children:e.manifest.name}),o.jsxs(Xr,{children:["作者: ",e.manifest.author?.name||"Unknown",e.manifest.author?.url&&o.jsx("a",{href:e.manifest.author.url,target:"_blank",rel:"noopener noreferrer",className:"ml-2 text-primary hover:underline",children:o.jsx(w0,{className:"h-3 w-3 inline"})})]})]}),o.jsxs("div",{className:"flex flex-col gap-2",children:[e.manifest.categories&&e.manifest.categories[0]&&o.jsx(tn,{variant:"secondary",children:Lz[e.manifest.categories[0]]||e.manifest.categories[0]}),W(e)]})]})}),o.jsxs("div",{className:"space-y-6",children:[o.jsx(VAe,{pluginId:e.id}),o.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-4",children:[o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:"版本"}),o.jsxs("p",{className:"text-sm text-muted-foreground",children:["v",e.manifest?.version||"unknown"]}),e.installed&&e.installed_version&&o.jsxs("p",{className:"text-xs text-muted-foreground",children:["已安装: v",e.installed_version]})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:"下载量"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:(D[e.id]?.downloads??e.downloads??0).toLocaleString()})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:"评分"}),o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx(Dc,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:[(D[e.id]?.rating??e.rating??0).toFixed(1)," (",D[e.id]?.rating_count??e.review_count??0,")"]})]})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium",children:"许可证"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:e.manifest.license||"Unknown"})]}),o.jsxs("div",{className:"col-span-2",children:[o.jsx("p",{className:"text-sm font-medium",children:"支持版本"}),o.jsxs("p",{className:"text-sm text-muted-foreground",children:[e.manifest.host_application?.min_version||"未知",e.manifest.host_application?.max_version?` - ${e.manifest.host_application.max_version}`:" - 最新版本"]})]})]}),o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium mb-2",children:"关键词"}),o.jsx("div",{className:"flex flex-wrap gap-2",children:e.manifest.keywords&&e.manifest.keywords.map(R=>o.jsx(tn,{variant:"outline",children:R},R))})]}),e.detailed_description&&o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium mb-2",children:"详细说明"}),o.jsx("p",{className:"text-sm text-muted-foreground whitespace-pre-line",children:e.detailed_description})]}),!e.detailed_description&&o.jsxs("div",{children:[o.jsx("p",{className:"text-sm font-medium mb-2",children:"说明"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:e.manifest.description||"无描述"})]}),o.jsxs("div",{className:"space-y-2",children:[e.manifest.homepage_url&&o.jsxs("div",{className:"text-sm",children:[o.jsx("span",{className:"font-medium",children:"主页: "}),o.jsx("a",{href:e.manifest.homepage_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:e.manifest.homepage_url})]}),e.manifest.repository_url&&o.jsxs("div",{className:"text-sm",children:[o.jsx("span",{className:"font-medium",children:"仓库: "}),o.jsx("a",{href:e.manifest.repository_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:e.manifest.repository_url})]})]})]}),o.jsxs(fs,{children:[e.manifest.homepage_url&&o.jsxs(ue,{onClick:()=>window.open(e.manifest.homepage_url,"_blank"),children:[o.jsx(w0,{className:"h-4 w-4 mr-2"}),"访问主页"]}),e.manifest.repository_url&&o.jsxs(ue,{variant:"outline",onClick:()=>window.open(e.manifest.repository_url,"_blank"),children:[o.jsx(w0,{className:"h-4 w-4 mr-2"}),"查看仓库"]})]})]})})]})})}var ow="Collapsible",[WAe]=Da(ow),[GAe,y7]=WAe(ow),gX=b.forwardRef((t,e)=>{const{__scopeCollapsible:n,open:r,defaultOpen:s,disabled:i,onOpenChange:a,...l}=t,[c,d]=Kl({prop:r,defaultProp:s??!1,onChange:a,caller:ow});return o.jsx(GAe,{scope:n,disabled:i,contentId:Gi(),open:c,onOpenToggle:b.useCallback(()=>d(h=>!h),[d]),children:o.jsx(Sn.div,{"data-state":w7(c),"data-disabled":i?"":void 0,...l,ref:e})})});gX.displayName=ow;var xX="CollapsibleTrigger",vX=b.forwardRef((t,e)=>{const{__scopeCollapsible:n,...r}=t,s=y7(xX,n);return o.jsx(Sn.button,{type:"button","aria-controls":s.contentId,"aria-expanded":s.open||!1,"data-state":w7(s.open),"data-disabled":s.disabled?"":void 0,disabled:s.disabled,...r,ref:e,onClick:nt(t.onClick,s.onOpenToggle)})});vX.displayName=xX;var b7="CollapsibleContent",yX=b.forwardRef((t,e)=>{const{forceMount:n,...r}=t,s=y7(b7,t.__scopeCollapsible);return o.jsx(oi,{present:n||s.open,children:({present:i})=>o.jsx(XAe,{...r,ref:e,present:i})})});yX.displayName=b7;var XAe=b.forwardRef((t,e)=>{const{__scopeCollapsible:n,present:r,children:s,...i}=t,a=y7(b7,n),[l,c]=b.useState(r),d=b.useRef(null),h=er(e,d),m=b.useRef(0),g=m.current,x=b.useRef(0),y=x.current,w=a.open||l,S=b.useRef(w),k=b.useRef(void 0);return b.useEffect(()=>{const j=requestAnimationFrame(()=>S.current=!1);return()=>cancelAnimationFrame(j)},[]),Wh(()=>{const j=d.current;if(j){k.current=k.current||{transitionDuration:j.style.transitionDuration,animationName:j.style.animationName},j.style.transitionDuration="0s",j.style.animationName="none";const N=j.getBoundingClientRect();m.current=N.height,x.current=N.width,S.current||(j.style.transitionDuration=k.current.transitionDuration,j.style.animationName=k.current.animationName),c(r)}},[a.open,r]),o.jsx(Sn.div,{"data-state":w7(a.open),"data-disabled":a.disabled?"":void 0,id:a.contentId,hidden:!w,...i,ref:h,style:{"--radix-collapsible-content-height":g?`${g}px`:void 0,"--radix-collapsible-content-width":y?`${y}px`:void 0,...t.style},children:w&&s})});function w7(t){return t?"open":"closed"}var YAe=gX;const hj=YAe,fj=vX,mj=yX;function KAe({field:t,value:e,onChange:n}){const[r,s]=b.useState(!1);switch(t.ui_type){case"switch":return o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"space-y-0.5",children:[o.jsx(he,{children:t.label}),t.hint&&o.jsx("p",{className:"text-xs text-muted-foreground",children:t.hint})]}),o.jsx(Ft,{checked:!!e,onCheckedChange:n,disabled:t.disabled})]});case"number":return o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:t.label}),o.jsx(Pe,{type:"number",value:e??t.default,onChange:i=>n(parseFloat(i.target.value)||0),min:t.min,max:t.max,step:t.step??1,placeholder:t.placeholder,disabled:t.disabled}),t.hint&&o.jsx("p",{className:"text-xs text-muted-foreground",children:t.hint})]});case"slider":return o.jsxs("div",{className:"space-y-2",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsx(he,{children:t.label}),o.jsx("span",{className:"text-sm text-muted-foreground",children:e??t.default})]}),o.jsx(Nf,{value:[e??t.default],onValueChange:i=>n(i[0]),min:t.min??0,max:t.max??100,step:t.step??1,disabled:t.disabled}),t.hint&&o.jsx("p",{className:"text-xs text-muted-foreground",children:t.hint})]});case"select":return o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:t.label}),o.jsxs(Vt,{value:String(e??t.default),onValueChange:n,disabled:t.disabled,children:[o.jsx($t,{children:o.jsx(Ut,{placeholder:t.placeholder??"请选择"})}),o.jsx(Ht,{children:t.choices?.map(i=>o.jsx(De,{value:String(i),children:String(i)},String(i)))})]}),t.hint&&o.jsx("p",{className:"text-xs text-muted-foreground",children:t.hint})]});case"textarea":return o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:t.label}),o.jsx(Nr,{value:e??t.default,onChange:i=>n(i.target.value),placeholder:t.placeholder,rows:t.rows??3,disabled:t.disabled}),t.hint&&o.jsx("p",{className:"text-xs text-muted-foreground",children:t.hint})]});case"password":return o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:t.label}),o.jsxs("div",{className:"relative",children:[o.jsx(Pe,{type:r?"text":"password",value:e??"",onChange:i=>n(i.target.value),placeholder:t.placeholder,disabled:t.disabled,className:"pr-10"}),o.jsx(ue,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-3",onClick:()=>s(!r),children:r?o.jsx(I0,{className:"h-4 w-4"}):o.jsx(Ji,{className:"h-4 w-4"})})]}),t.hint&&o.jsx("p",{className:"text-xs text-muted-foreground",children:t.hint})]});case"text":default:return o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:t.label}),o.jsx(Pe,{type:"text",value:e??t.default??"",onChange:i=>n(i.target.value),placeholder:t.placeholder,maxLength:t.max_length,disabled:t.disabled}),t.hint&&o.jsx("p",{className:"text-xs text-muted-foreground",children:t.hint})]})}}function Bz({section:t,config:e,onChange:n}){const[r,s]=b.useState(!t.collapsed),i=Object.entries(t.fields).filter(([,a])=>!a.hidden).sort(([,a],[,l])=>a.order-l.order);return o.jsx(hj,{open:r,onOpenChange:s,children:o.jsxs(Lt,{children:[o.jsx(fj,{asChild:!0,children:o.jsxs(En,{className:"cursor-pointer hover:bg-muted/50 transition-colors",children:[o.jsxs("div",{className:"flex items-center justify-between",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[r?o.jsx(Xc,{className:"h-4 w-4 text-muted-foreground"}):o.jsx(Zl,{className:"h-4 w-4 text-muted-foreground"}),o.jsx(_n,{className:"text-lg",children:t.title})]}),o.jsxs(tn,{variant:"secondary",className:"text-xs",children:[i.length," 项"]})]}),t.description&&o.jsx(Wr,{className:"ml-6",children:t.description})]})}),o.jsx(mj,{children:o.jsx(Xn,{className:"space-y-4 pt-0",children:i.map(([a,l])=>o.jsx(KAe,{field:l,value:e[t.name]?.[a],onChange:c=>n(t.name,a,c),sectionName:t.name},a))})})]})})}function ZAe({plugin:t,onBack:e}){const{toast:n}=Lr(),[r,s]=b.useState(null),[i,a]=b.useState({}),[l,c]=b.useState({}),[d,h]=b.useState(!0),[m,g]=b.useState(!1),[x,y]=b.useState(!1),[w,S]=b.useState(!1),k=b.useCallback(async()=>{h(!0);try{const[D,q]=await Promise.all([PAe(t.id),zAe(t.id)]);s(D),a(q),c(JSON.parse(JSON.stringify(q)))}catch(D){n({title:"加载配置失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}finally{h(!1)}},[t.id,n]);b.useEffect(()=>{k()},[k]),b.useEffect(()=>{y(JSON.stringify(i)!==JSON.stringify(l))},[i,l]);const j=(D,q,B)=>{a(H=>({...H,[D]:{...H[D]||{},[q]:B}}))},N=async()=>{g(!0);try{await IAe(t.id,i),c(JSON.parse(JSON.stringify(i))),n({title:"配置已保存",description:"更改将在插件重新加载后生效"})}catch(D){n({title:"保存失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}finally{g(!1)}},T=async()=>{try{await LAe(t.id),n({title:"配置已重置",description:"下次加载插件时将使用默认配置"}),S(!1),k()}catch(D){n({title:"重置失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}},E=async()=>{try{const D=await BAe(t.id);n({title:D.message,description:D.note}),k()}catch(D){n({title:"切换状态失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}};if(d)return o.jsx("div",{className:"flex items-center justify-center h-64",children:o.jsx(Us,{className:"h-8 w-8 animate-spin text-muted-foreground"})});if(!r)return o.jsxs("div",{className:"flex flex-col items-center justify-center h-64 space-y-4",children:[o.jsx(Lo,{className:"h-12 w-12 text-muted-foreground"}),o.jsx("p",{className:"text-muted-foreground",children:"无法加载配置"}),o.jsxs(ue,{onClick:e,variant:"outline",children:[o.jsx(Bv,{className:"h-4 w-4 mr-2"}),"返回"]})]});const _=Object.values(r.sections).sort((D,q)=>D.order-q.order),A=i.plugin?.enabled!==!1;return o.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[o.jsxs("div",{className:"flex items-start gap-3",children:[o.jsx(ue,{variant:"ghost",size:"icon",onClick:e,children:o.jsx(Bv,{className:"h-5 w-5"})}),o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:r.plugin_info.name||t.manifest.name}),o.jsxs("div",{className:"flex items-center gap-2 mt-1",children:[o.jsx(tn,{variant:A?"default":"secondary",children:A?"已启用":"已禁用"}),o.jsxs("span",{className:"text-sm text-muted-foreground",children:["v",r.plugin_info.version||t.manifest.version]})]})]})]}),o.jsxs("div",{className:"flex gap-2 ml-10 sm:ml-0",children:[o.jsxs(ue,{variant:"outline",size:"sm",onClick:E,children:[o.jsx(Dp,{className:"h-4 w-4 mr-2"}),A?"禁用":"启用"]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:()=>S(!0),children:[o.jsx(zj,{className:"h-4 w-4 mr-2"}),"重置"]}),o.jsxs(ue,{size:"sm",onClick:N,disabled:!x||m,children:[m?o.jsx(Us,{className:"h-4 w-4 mr-2 animate-spin"}):o.jsx(zp,{className:"h-4 w-4 mr-2"}),"保存"]})]})]}),x&&o.jsx(Lt,{className:"border-orange-200 bg-orange-50 dark:bg-orange-950/20 dark:border-orange-900",children:o.jsx(Xn,{className:"py-3",children:o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Xi,{className:"h-4 w-4 text-orange-600"}),o.jsx("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:"有未保存的更改"})]})})}),r.layout.type==="tabs"&&r.layout.tabs.length>0?o.jsxs(Yi,{defaultValue:r.layout.tabs[0]?.id,children:[o.jsx(ji,{children:r.layout.tabs.map(D=>o.jsxs(Bt,{value:D.id,children:[D.title,D.badge&&o.jsx(tn,{variant:"secondary",className:"ml-2 text-xs",children:D.badge})]},D.id))}),r.layout.tabs.map(D=>o.jsx(ln,{value:D.id,className:"space-y-4 mt-4",children:D.sections.map(q=>{const B=r.sections[q];return B?o.jsx(Bz,{section:B,config:i,onChange:j},q):null})},D.id))]}):o.jsx("div",{className:"space-y-4",children:_.map(D=>o.jsx(Bz,{section:D,config:i,onChange:j},D.name))}),o.jsx(Er,{open:w,onOpenChange:S,children:o.jsxs(wr,{children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"确认重置配置"}),o.jsx(Xr,{children:"这将删除当前配置文件,下次加载插件时将使用默认配置。此操作不可撤销。"})]}),o.jsxs(fs,{children:[o.jsx(ue,{variant:"outline",onClick:()=>S(!1),children:"取消"}),o.jsx(ue,{variant:"destructive",onClick:T,children:"确认重置"})]})]})})]})}function JAe(){const{toast:t}=Lr(),[e,n]=b.useState([]),[r,s]=b.useState(!0),[i,a]=b.useState(""),[l,c]=b.useState(null),d=async()=>{s(!0);try{const x=await v0();n(x)}catch(x){t({title:"加载插件列表失败",description:x instanceof Error?x.message:"未知错误",variant:"destructive"})}finally{s(!1)}};b.useEffect(()=>{d()},[]);const h=e.filter(x=>{const y=i.toLowerCase();return x.id.toLowerCase().includes(y)||x.manifest.name.toLowerCase().includes(y)||x.manifest.description?.toLowerCase().includes(y)}),m=e.length,g=0;return l?o.jsx(pn,{className:"h-full",children:o.jsx("div",{className:"p-4 sm:p-6",children:o.jsx(ZAe,{plugin:l,onBack:()=>c(null)})})}):o.jsx(pn,{className:"h-full",children:o.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件配置"}),o.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理和配置已安装的插件"})]}),o.jsxs(ue,{variant:"outline",size:"sm",onClick:d,children:[o.jsx(Qs,{className:`h-4 w-4 mr-2 ${r?"animate-spin":""}`}),"刷新"]})]}),o.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-3",children:[o.jsxs(Lt,{children:[o.jsxs(En,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(_n,{className:"text-sm font-medium",children:"已安装插件"}),o.jsx(ed,{className:"h-4 w-4 text-muted-foreground"})]}),o.jsxs(Xn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:e.length}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:r?"正在加载...":"个插件"})]})]}),o.jsxs(Lt,{children:[o.jsxs(En,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(_n,{className:"text-sm font-medium",children:"已启用"}),o.jsx(Ya,{className:"h-4 w-4 text-green-600"})]}),o.jsxs(Xn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:m}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"运行中的插件"})]})]}),o.jsxs(Lt,{children:[o.jsxs(En,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[o.jsx(_n,{className:"text-sm font-medium",children:"已禁用"}),o.jsx(Lo,{className:"h-4 w-4 text-orange-600"})]}),o.jsxs(Xn,{children:[o.jsx("div",{className:"text-2xl font-bold",children:g}),o.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"未激活的插件"})]})]})]}),o.jsxs("div",{className:"relative",children:[o.jsx(ii,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),o.jsx(Pe,{placeholder:"搜索插件...",value:i,onChange:x=>a(x.target.value),className:"pl-9"})]}),o.jsxs(Lt,{children:[o.jsxs(En,{children:[o.jsx(_n,{children:"已安装的插件"}),o.jsx(Wr,{children:"点击插件查看和编辑配置"})]}),o.jsx(Xn,{children:r?o.jsx("div",{className:"flex items-center justify-center py-12",children:o.jsx(Us,{className:"h-8 w-8 animate-spin text-muted-foreground"})}):h.length===0?o.jsxs("div",{className:"flex flex-col items-center justify-center py-12 space-y-4",children:[o.jsx(ed,{className:"h-16 w-16 text-muted-foreground/50"}),o.jsxs("div",{className:"text-center space-y-2",children:[o.jsx("p",{className:"text-lg font-medium text-muted-foreground",children:i?"没有找到匹配的插件":"暂无已安装的插件"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:i?"尝试其他搜索关键词":"前往插件市场安装插件"})]})]}):o.jsx("div",{className:"space-y-2",children:h.map(x=>o.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg border hover:bg-muted/50 cursor-pointer transition-colors",onClick:()=>c(x),children:[o.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[o.jsx("div",{className:"h-10 w-10 rounded-lg bg-primary/10 flex items-center justify-center flex-shrink-0",children:o.jsx(ed,{className:"h-5 w-5 text-primary"})}),o.jsxs("div",{className:"min-w-0",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("h3",{className:"font-medium truncate",children:x.manifest.name}),o.jsxs(tn,{variant:"secondary",className:"text-xs flex-shrink-0",children:["v",x.manifest.version]})]}),o.jsx("p",{className:"text-sm text-muted-foreground truncate",children:x.manifest.description||"暂无描述"})]})]}),o.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[o.jsx(ue,{variant:"ghost",size:"sm",children:o.jsx(Vc,{className:"h-4 w-4"})}),o.jsx(Zl,{className:"h-4 w-4 text-muted-foreground"})]})]},x.id))})})]})]})})}function eMe(){const t=na(),{toast:e}=Lr(),[n,r]=b.useState([]),[s,i]=b.useState(!0),[a,l]=b.useState(null),[c,d]=b.useState(null),[h,m]=b.useState(!1),[g,x]=b.useState(!1),[y,w]=b.useState({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),S=b.useCallback(async()=>{try{i(!0),l(null);const A=localStorage.getItem("access-token"),D=await fetch("/api/webui/plugins/mirrors",{headers:{Authorization:`Bearer ${A}`}});if(!D.ok)throw new Error("获取镜像源列表失败");const q=await D.json();r(q.mirrors||[])}catch(A){const D=A instanceof Error?A.message:"加载镜像源失败";l(D),e({title:"加载失败",description:D,variant:"destructive"})}finally{i(!1)}},[e]);b.useEffect(()=>{S()},[S]);const k=async()=>{try{const A=localStorage.getItem("access-token"),D=await fetch("/api/webui/plugins/mirrors",{method:"POST",headers:{Authorization:`Bearer ${A}`,"Content-Type":"application/json"},body:JSON.stringify(y)});if(!D.ok){const q=await D.json();throw new Error(q.detail||"添加镜像源失败")}e({title:"添加成功",description:"镜像源已添加"}),m(!1),w({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),S()}catch(A){e({title:"添加失败",description:A instanceof Error?A.message:"未知错误",variant:"destructive"})}},j=async()=>{if(c)try{const A=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${c.id}`,{method:"PUT",headers:{Authorization:`Bearer ${A}`,"Content-Type":"application/json"},body:JSON.stringify({name:y.name,raw_prefix:y.raw_prefix,clone_prefix:y.clone_prefix,enabled:y.enabled,priority:y.priority})})).ok)throw new Error("更新镜像源失败");e({title:"更新成功",description:"镜像源已更新"}),x(!1),d(null),S()}catch(A){e({title:"更新失败",description:A instanceof Error?A.message:"未知错误",variant:"destructive"})}},N=async A=>{if(confirm("确定要删除这个镜像源吗?"))try{const D=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${A}`,{method:"DELETE",headers:{Authorization:`Bearer ${D}`}})).ok)throw new Error("删除镜像源失败");e({title:"删除成功",description:"镜像源已删除"}),S()}catch(D){e({title:"删除失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}},T=async A=>{try{const D=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${A.id}`,{method:"PUT",headers:{Authorization:`Bearer ${D}`,"Content-Type":"application/json"},body:JSON.stringify({enabled:!A.enabled})})).ok)throw new Error("更新状态失败");S()}catch(D){e({title:"更新失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}},E=A=>{d(A),w({id:A.id,name:A.name,raw_prefix:A.raw_prefix,clone_prefix:A.clone_prefix,enabled:A.enabled,priority:A.priority}),x(!0)},_=async(A,D)=>{const q=D==="up"?A.priority-1:A.priority+1;if(!(q<1))try{const B=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${A.id}`,{method:"PUT",headers:{Authorization:`Bearer ${B}`,"Content-Type":"application/json"},body:JSON.stringify({priority:q})})).ok)throw new Error("更新优先级失败");S()}catch(B){e({title:"更新失败",description:B instanceof Error?B.message:"未知错误",variant:"destructive"})}};return o.jsx(pn,{className:"h-full",children:o.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[o.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsx(ue,{variant:"ghost",size:"icon",onClick:()=>t({to:"/plugins"}),children:o.jsx(Bv,{className:"h-5 w-5"})}),o.jsxs("div",{children:[o.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"镜像源配置"}),o.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理 Git 克隆和文件下载的镜像源"})]})]}),o.jsxs(ue,{onClick:()=>m(!0),children:[o.jsx(Is,{className:"h-4 w-4 mr-2"}),"添加镜像源"]})]}),s?o.jsx(Lt,{className:"p-6",children:o.jsx("div",{className:"flex items-center justify-center py-8",children:o.jsx(Us,{className:"h-8 w-8 animate-spin text-primary"})})}):a?o.jsx(Lt,{className:"p-6",children:o.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[o.jsx(Ga,{className:"h-12 w-12 text-destructive mb-4"}),o.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),o.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:a}),o.jsx(ue,{onClick:S,children:"重新加载"})]})}):o.jsxs(Lt,{children:[o.jsx("div",{className:"hidden md:block",children:o.jsxs(Af,{children:[o.jsx(Mf,{children:o.jsxs(zs,{children:[o.jsx(mn,{children:"状态"}),o.jsx(mn,{children:"名称"}),o.jsx(mn,{children:"ID"}),o.jsx(mn,{children:"优先级"}),o.jsx(mn,{className:"text-right",children:"操作"})]})}),o.jsx(Rf,{children:n.map(A=>o.jsxs(zs,{children:[o.jsx(Yt,{children:o.jsx(Ft,{checked:A.enabled,onCheckedChange:()=>T(A)})}),o.jsx(Yt,{children:o.jsxs("div",{children:[o.jsx("div",{className:"font-medium",children:A.name}),o.jsxs("div",{className:"text-xs text-muted-foreground mt-1",children:["Raw: ",A.raw_prefix]})]})}),o.jsx(Yt,{children:o.jsx(tn,{variant:"outline",children:A.id})}),o.jsx(Yt,{children:o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("span",{className:"font-mono",children:A.priority}),o.jsxs("div",{className:"flex flex-col gap-1",children:[o.jsx(ue,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>_(A,"up"),disabled:A.priority===1,children:o.jsx(B0,{className:"h-3 w-3"})}),o.jsx(ue,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>_(A,"down"),children:o.jsx(Xc,{className:"h-3 w-3"})})]})]})}),o.jsx(Yt,{className:"text-right",children:o.jsxs("div",{className:"flex items-center justify-end gap-2",children:[o.jsx(ue,{variant:"ghost",size:"icon",onClick:()=>E(A),children:o.jsx(Ju,{className:"h-4 w-4"})}),o.jsx(ue,{variant:"ghost",size:"icon",onClick:()=>N(A.id),children:o.jsx(Cn,{className:"h-4 w-4 text-destructive"})})]})})]},A.id))})]})}),o.jsx("div",{className:"md:hidden p-4 space-y-4",children:n.map(A=>o.jsx(Lt,{className:"p-4",children:o.jsxs("div",{className:"space-y-3",children:[o.jsxs("div",{className:"flex items-start justify-between",children:[o.jsxs("div",{className:"flex-1",children:[o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx("h3",{className:"font-semibold",children:A.name}),A.enabled&&o.jsx(tn,{variant:"default",className:"text-xs",children:"启用"})]}),o.jsx(tn,{variant:"outline",className:"mt-1 text-xs",children:A.id})]}),o.jsx(Ft,{checked:A.enabled,onCheckedChange:()=>T(A)})]}),o.jsxs("div",{className:"text-sm space-y-1",children:[o.jsxs("div",{className:"text-muted-foreground",children:[o.jsx("span",{className:"font-medium",children:"Raw: "}),o.jsx("span",{className:"break-all",children:A.raw_prefix})]}),o.jsxs("div",{className:"text-muted-foreground",children:[o.jsx("span",{className:"font-medium",children:"优先级: "}),o.jsx("span",{className:"font-mono",children:A.priority})]})]}),o.jsxs("div",{className:"flex items-center gap-2 pt-2 border-t",children:[o.jsxs(ue,{variant:"outline",size:"sm",className:"flex-1",onClick:()=>E(A),children:[o.jsx(Ju,{className:"h-4 w-4 mr-1"}),"编辑"]}),o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>_(A,"up"),disabled:A.priority===1,children:o.jsx(B0,{className:"h-4 w-4"})}),o.jsx(ue,{variant:"outline",size:"sm",onClick:()=>_(A,"down"),children:o.jsx(Xc,{className:"h-4 w-4"})}),o.jsx(ue,{variant:"destructive",size:"sm",onClick:()=>N(A.id),children:o.jsx(Cn,{className:"h-4 w-4"})})]})]})},A.id))})]}),o.jsx(Er,{open:h,onOpenChange:m,children:o.jsxs(wr,{className:"max-w-lg",children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"添加镜像源"}),o.jsx(Xr,{children:"添加新的 Git 镜像源配置"})]}),o.jsxs("div",{className:"space-y-4 py-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"add-id",children:"镜像源 ID *"}),o.jsx(Pe,{id:"add-id",placeholder:"例如: my-mirror",value:y.id,onChange:A=>w({...y,id:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"add-name",children:"名称 *"}),o.jsx(Pe,{id:"add-name",placeholder:"例如: 我的镜像源",value:y.name,onChange:A=>w({...y,name:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"add-raw",children:"Raw 文件前缀 *"}),o.jsx(Pe,{id:"add-raw",placeholder:"https://example.com/raw",value:y.raw_prefix,onChange:A=>w({...y,raw_prefix:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"add-clone",children:"克隆前缀 *"}),o.jsx(Pe,{id:"add-clone",placeholder:"https://example.com/clone",value:y.clone_prefix,onChange:A=>w({...y,clone_prefix:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"add-priority",children:"优先级"}),o.jsx(Pe,{id:"add-priority",type:"number",min:"1",value:y.priority,onChange:A=>w({...y,priority:parseInt(A.target.value)||1})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"add-enabled",checked:y.enabled,onCheckedChange:A=>w({...y,enabled:A})}),o.jsx(he,{htmlFor:"add-enabled",children:"启用此镜像源"})]})]}),o.jsxs(fs,{children:[o.jsx(ue,{variant:"outline",onClick:()=>m(!1),children:"取消"}),o.jsx(ue,{onClick:k,children:"添加"})]})]})}),o.jsx(Er,{open:g,onOpenChange:x,children:o.jsxs(wr,{className:"max-w-lg",children:[o.jsxs(Sr,{children:[o.jsx(kr,{children:"编辑镜像源"}),o.jsx(Xr,{children:"修改镜像源配置"})]}),o.jsxs("div",{className:"space-y-4 py-4",children:[o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{children:"镜像源 ID"}),o.jsx(Pe,{value:y.id,disabled:!0})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit-name",children:"名称 *"}),o.jsx(Pe,{id:"edit-name",value:y.name,onChange:A=>w({...y,name:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit-raw",children:"Raw 文件前缀 *"}),o.jsx(Pe,{id:"edit-raw",value:y.raw_prefix,onChange:A=>w({...y,raw_prefix:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit-clone",children:"克隆前缀 *"}),o.jsx(Pe,{id:"edit-clone",value:y.clone_prefix,onChange:A=>w({...y,clone_prefix:A.target.value})})]}),o.jsxs("div",{className:"space-y-2",children:[o.jsx(he,{htmlFor:"edit-priority",children:"优先级"}),o.jsx(Pe,{id:"edit-priority",type:"number",min:"1",value:y.priority,onChange:A=>w({...y,priority:parseInt(A.target.value)||1})}),o.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),o.jsxs("div",{className:"flex items-center space-x-2",children:[o.jsx(Ft,{id:"edit-enabled",checked:y.enabled,onCheckedChange:A=>w({...y,enabled:A})}),o.jsx(he,{htmlFor:"edit-enabled",children:"启用此镜像源"})]})]}),o.jsxs(fs,{children:[o.jsx(ue,{variant:"outline",onClick:()=>x(!1),children:"取消"}),o.jsx(ue,{onClick:j,children:"保存"})]})]})})]})})}function tMe(t,e=[]){let n=[];function r(i,a){const l=b.createContext(a);l.displayName=i+"Context";const c=n.length;n=[...n,a];const d=m=>{const{scope:g,children:x,...y}=m,w=g?.[t]?.[c]||l,S=b.useMemo(()=>y,Object.values(y));return o.jsx(w.Provider,{value:S,children:x})};d.displayName=i+"Provider";function h(m,g){const x=g?.[t]?.[c]||l,y=b.useContext(x);if(y)return y;if(a!==void 0)return a;throw new Error(`\`${m}\` must be used within \`${i}\``)}return[d,h]}const s=()=>{const i=n.map(a=>b.createContext(a));return function(l){const c=l?.[t]||i;return b.useMemo(()=>({[`__scope${t}`]:{...l,[t]:c}}),[l,c])}};return s.scopeName=t,[r,nMe(s,...e)]}function nMe(...t){const e=t[0];if(t.length===1)return e;const n=()=>{const r=t.map(s=>({useScope:s(),scopeName:s.scopeName}));return function(i){const a=r.reduce((l,{useScope:c,scopeName:d})=>{const m=c(i)[`__scope${d}`];return{...l,...m}},{});return b.useMemo(()=>({[`__scope${e.scopeName}`]:a}),[a])}};return n.scopeName=e.scopeName,n}var rMe=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],S7=rMe.reduce((t,e)=>{const n=Vy(`Primitive.${e}`),r=b.forwardRef((s,i)=>{const{asChild:a,...l}=s,c=a?n:e;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),o.jsx(c,{...l,ref:i})});return r.displayName=`Primitive.${e}`,{...t,[e]:r}},{}),sMe=bJ();function iMe(){return sMe.useSyncExternalStore(aMe,()=>!0,()=>!1)}function aMe(){return()=>{}}var k7="Avatar",[oMe]=tMe(k7),[lMe,bX]=oMe(k7),wX=b.forwardRef((t,e)=>{const{__scopeAvatar:n,...r}=t,[s,i]=b.useState("idle");return o.jsx(lMe,{scope:n,imageLoadingStatus:s,onImageLoadingStatusChange:i,children:o.jsx(S7.span,{...r,ref:e})})});wX.displayName=k7;var SX="AvatarImage",kX=b.forwardRef((t,e)=>{const{__scopeAvatar:n,src:r,onLoadingStatusChange:s=()=>{},...i}=t,a=bX(SX,n),l=cMe(r,i),c=Rs(d=>{s(d),a.onImageLoadingStatusChange(d)});return Wh(()=>{l!=="idle"&&c(l)},[l,c]),l==="loaded"?o.jsx(S7.img,{...i,ref:e,src:r}):null});kX.displayName=SX;var OX="AvatarFallback",jX=b.forwardRef((t,e)=>{const{__scopeAvatar:n,delayMs:r,...s}=t,i=bX(OX,n),[a,l]=b.useState(r===void 0);return b.useEffect(()=>{if(r!==void 0){const c=window.setTimeout(()=>l(!0),r);return()=>window.clearTimeout(c)}},[r]),a&&i.imageLoadingStatus!=="loaded"?o.jsx(S7.span,{...s,ref:e}):null});jX.displayName=OX;function Fz(t,e){return t?e?(t.src!==e&&(t.src=e),t.complete&&t.naturalWidth>0?"loaded":"loading"):"error":"idle"}function cMe(t,{referrerPolicy:e,crossOrigin:n}){const r=iMe(),s=b.useRef(null),i=r?(s.current||(s.current=new window.Image),s.current):null,[a,l]=b.useState(()=>Fz(i,t));return Wh(()=>{l(Fz(i,t))},[i,t]),Wh(()=>{const c=m=>()=>{l(m)};if(!i)return;const d=c("loaded"),h=c("error");return i.addEventListener("load",d),i.addEventListener("error",h),e&&(i.referrerPolicy=e),typeof n=="string"&&(i.crossOrigin=n),()=>{i.removeEventListener("load",d),i.removeEventListener("error",h)}},[i,n,e]),a}var NX=wX,CX=kX,TX=jX;const Pv=b.forwardRef(({className:t,...e},n)=>o.jsx(NX,{ref:n,className:xe("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",t),...e}));Pv.displayName=NX.displayName;const uMe=b.forwardRef(({className:t,...e},n)=>o.jsx(CX,{ref:n,className:xe("aspect-square h-full w-full",t),...e}));uMe.displayName=CX.displayName;const zv=b.forwardRef(({className:t,...e},n)=>o.jsx(TX,{ref:n,className:xe("flex h-full w-full items-center justify-center rounded-full bg-muted",t),...e}));zv.displayName=TX.displayName;function dMe(){return"webui_"+Math.random().toString(36).substr(2,9)+"_"+Date.now().toString(36)}function hMe(){const t="maibot_webui_user_id";let e=localStorage.getItem(t);return e||(e=dMe(),localStorage.setItem(t,e)),e}function fMe(){return localStorage.getItem("maibot_webui_user_name")||"WebUI用户"}function mMe(t){localStorage.setItem("maibot_webui_user_name",t)}function pMe(){const[t,e]=b.useState([]),[n,r]=b.useState(""),[s,i]=b.useState(!1),[a,l]=b.useState(!1),[c,d]=b.useState(!1),[h,m]=b.useState(!0),[g,x]=b.useState(fMe()),[y,w]=b.useState(!1),[S,k]=b.useState(""),[j,N]=b.useState({}),T=b.useRef(hMe()),E=b.useRef(null),_=b.useRef(null),A=b.useRef(null),D=b.useRef(0),q=b.useRef(new Set),{toast:B}=Lr(),H=z=>(D.current+=1,`${z}-${Date.now()}-${D.current}-${Math.random().toString(36).substr(2,9)}`),W=b.useCallback(()=>{_.current?.scrollIntoView({behavior:"smooth"})},[]);b.useEffect(()=>{W()},[t,W]);const ee=b.useCallback(async()=>{m(!0);try{const z=`/api/chat/history?user_id=${T.current}&limit=50`;console.log("[Chat] 正在加载历史消息:",z);const U=await fetch(z);if(console.log("[Chat] 历史消息响应状态:",U.status,U.statusText),console.log("[Chat] 响应 Content-Type:",U.headers.get("content-type")),U.ok){const te=await U.text();console.log("[Chat] 响应内容前100字符:",te.substring(0,100));try{const ne=JSON.parse(te);if(console.log("[Chat] 解析后的数据:",ne),ne.messages&&ne.messages.length>0){const G=ne.messages.map(se=>({id:se.id,type:se.type,content:se.content,timestamp:se.timestamp,sender:{name:se.sender_name||(se.is_bot?"麦麦":"WebUI用户"),user_id:se.user_id,is_bot:se.is_bot}}));e(G),console.log("[Chat] 已加载历史消息数量:",G.length),G.forEach(se=>{if(se.type==="bot"){const re=`bot-${se.content}-${Math.floor(se.timestamp*1e3)}`;q.current.add(re)}})}else console.log("[Chat] 没有历史消息")}catch(ne){console.error("[Chat] JSON 解析失败:",ne),console.error("[Chat] 原始响应内容:",te)}}else{console.error("[Chat] 响应失败:",U.status);const te=await U.text();console.error("[Chat] 错误响应内容:",te.substring(0,200))}}catch(z){console.error("[Chat] 加载历史消息失败:",z)}finally{m(!1)}},[]),I=b.useCallback(()=>{if(E.current?.readyState===WebSocket.OPEN||E.current?.readyState===WebSocket.CONNECTING){console.log("WebSocket 已存在,跳过连接");return}l(!0);const U=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/api/chat/ws?user_id=${encodeURIComponent(T.current)}&user_name=${encodeURIComponent(g)}`;console.log("正在连接 WebSocket:",U);try{const te=new WebSocket(U);E.current=te,te.onopen=()=>{i(!0),l(!1),console.log("WebSocket 已连接")},te.onmessage=ne=>{try{const G=JSON.parse(ne.data);switch(G.type){case"session_info":N({session_id:G.session_id,user_id:G.user_id,user_name:G.user_name,bot_name:G.bot_name});break;case"system":e(se=>[...se,{id:H("sys"),type:"system",content:G.content||"",timestamp:G.timestamp||Date.now()/1e3}]);break;case"user_message":e(se=>[...se,{id:G.message_id||H("user"),type:"user",content:G.content||"",timestamp:G.timestamp||Date.now()/1e3,sender:G.sender}]);break;case"bot_message":{d(!1);const se=`bot-${G.content}-${Math.floor((G.timestamp||0)*1e3)}`;if(q.current.has(se)){console.log("跳过重复的机器人消息");break}if(q.current.add(se),q.current.size>100){const re=q.current.values().next().value;re&&q.current.delete(re)}e(re=>[...re,{id:H("bot"),type:"bot",content:G.content||"",timestamp:G.timestamp||Date.now()/1e3,sender:G.sender}]);break}case"typing":d(G.is_typing||!1);break;case"error":e(se=>[...se,{id:H("error"),type:"error",content:G.content||"发生错误",timestamp:G.timestamp||Date.now()/1e3}]),B({title:"错误",description:G.content,variant:"destructive"});break;case"pong":break;default:console.log("未知消息类型:",G.type)}}catch(G){console.error("解析消息失败:",G)}},te.onclose=()=>{i(!1),l(!1),E.current=null,console.log("WebSocket 已断开"),A.current&&clearTimeout(A.current),A.current=window.setTimeout(()=>{V.current||I()},5e3)},te.onerror=ne=>{console.error("WebSocket 错误:",ne),l(!1)}}catch(te){console.error("创建 WebSocket 失败:",te),l(!1)}},[B,g]),V=b.useRef(!1);b.useEffect(()=>{V.current=!1,ee();const z=setTimeout(()=>{V.current||I()},100),U=setInterval(()=>{E.current?.readyState===WebSocket.OPEN&&E.current.send(JSON.stringify({type:"ping"}))},3e4);return()=>{V.current=!0,clearTimeout(z),clearInterval(U),A.current&&(clearTimeout(A.current),A.current=null),E.current&&(E.current.close(),E.current=null)}},[I,ee]);const L=b.useCallback(()=>{!n.trim()||!E.current||E.current.readyState!==WebSocket.OPEN||(E.current.send(JSON.stringify({type:"message",content:n.trim(),user_name:g})),r(""))},[n,g]),$=z=>{z.key==="Enter"&&!z.shiftKey&&(z.preventDefault(),L())},K=()=>{k(g),w(!0)},Y=()=>{const z=S.trim()||"WebUI用户";x(z),mMe(z),w(!1),E.current?.readyState===WebSocket.OPEN&&E.current.send(JSON.stringify({type:"update_nickname",user_name:z}))},R=()=>{k(""),w(!1)},ie=z=>new Date(z*1e3).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"}),X=()=>{E.current&&E.current.close(),I()};return o.jsxs("div",{className:"h-full flex flex-col",children:[o.jsx("div",{className:"shrink-0 border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:o.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:[o.jsxs("div",{className:"flex items-center justify-between gap-2",children:[o.jsxs("div",{className:"flex items-center gap-2 sm:gap-3 min-w-0",children:[o.jsx(Pv,{className:"h-8 w-8 sm:h-10 sm:w-10 shrink-0",children:o.jsx(zv,{className:"bg-primary/10 text-primary",children:o.jsx(o0,{className:"h-4 w-4 sm:h-5 sm:w-5"})})}),o.jsxs("div",{className:"min-w-0",children:[o.jsx("h1",{className:"text-base sm:text-lg font-semibold truncate",children:j.bot_name||"麦麦"}),o.jsx("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:s?o.jsxs(o.Fragment,{children:[o.jsx(ote,{className:"h-3 w-3 text-green-500"}),o.jsx("span",{className:"text-green-600 dark:text-green-400",children:"已连接"})]}):a?o.jsxs(o.Fragment,{children:[o.jsx(Us,{className:"h-3 w-3 animate-spin"}),o.jsx("span",{children:"连接中..."})]}):o.jsxs(o.Fragment,{children:[o.jsx(lte,{className:"h-3 w-3 text-red-500"}),o.jsx("span",{className:"text-red-600 dark:text-red-400",children:"未连接"})]})})]})]}),o.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[h&&o.jsx(Us,{className:"h-4 w-4 animate-spin text-muted-foreground"}),o.jsx(ue,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:X,disabled:a,title:"重新连接",children:o.jsx(Qs,{className:xe("h-4 w-4",a&&"animate-spin")})})]})]}),o.jsxs("div",{className:"hidden sm:flex items-center gap-2 mt-2 text-sm text-muted-foreground",children:[o.jsx(Lv,{className:"h-3 w-3"}),o.jsx("span",{children:"当前身份:"}),y?o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsx(Pe,{value:S,onChange:z=>k(z.target.value),onKeyDown:z=>{z.key==="Enter"&&Y(),z.key==="Escape"&&R()},className:"h-7 w-32",placeholder:"输入昵称",autoFocus:!0}),o.jsx(ue,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:Y,children:"保存"}),o.jsx(ue,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:R,children:"取消"})]}):o.jsxs("div",{className:"flex items-center gap-1",children:[o.jsx("span",{className:"font-medium text-foreground",children:g}),o.jsx(ue,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0",onClick:K,title:"修改昵称",children:o.jsx(cte,{className:"h-3 w-3"})})]})]})]})}),o.jsx("div",{className:"flex-1 overflow-hidden",children:o.jsx(pn,{className:"h-full",children:o.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto space-y-3 sm:space-y-4",children:[t.length===0&&!h&&o.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-muted-foreground",children:[o.jsx(o0,{className:"h-12 w-12 mb-4 opacity-50"}),o.jsxs("p",{className:"text-sm",children:["开始与 ",j.bot_name||"麦麦"," 对话吧!"]})]}),t.map(z=>o.jsxs("div",{className:xe("flex gap-2 sm:gap-3",z.type==="user"&&"flex-row-reverse",z.type==="system"&&"justify-center",z.type==="error"&&"justify-center"),children:[z.type==="system"&&o.jsx("div",{className:"text-xs text-muted-foreground bg-muted/50 px-3 py-1 rounded-full max-w-[90%]",children:z.content}),z.type==="error"&&o.jsx("div",{className:"text-xs text-red-600 dark:text-red-400 bg-red-100 dark:bg-red-900/30 px-3 py-1 rounded-full max-w-[90%]",children:z.content}),(z.type==="user"||z.type==="bot")&&o.jsxs(o.Fragment,{children:[o.jsx(Pv,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:o.jsx(zv,{className:xe("text-xs",z.type==="bot"?"bg-primary/10 text-primary":"bg-secondary text-secondary-foreground"),children:z.type==="bot"?o.jsx(o0,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}):o.jsx(Lv,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),o.jsxs("div",{className:xe("flex flex-col gap-1 max-w-[75%] sm:max-w-[70%]",z.type==="user"&&"items-end"),children:[o.jsxs("div",{className:"flex items-center gap-2 text-[10px] sm:text-xs text-muted-foreground",children:[o.jsx("span",{className:"hidden sm:inline",children:z.sender?.name||(z.type==="bot"?j.bot_name:g)}),o.jsx("span",{children:ie(z.timestamp)})]}),o.jsx("div",{className:xe("rounded-2xl px-3 py-2 text-sm whitespace-pre-wrap break-words",z.type==="bot"?"bg-muted rounded-tl-sm":"bg-primary text-primary-foreground rounded-tr-sm"),children:z.content})]})]})]},z.id)),c&&o.jsxs("div",{className:"flex gap-2 sm:gap-3",children:[o.jsx(Pv,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:o.jsx(zv,{className:"bg-primary/10 text-primary",children:o.jsx(o0,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),o.jsx("div",{className:"bg-muted rounded-2xl rounded-tl-sm px-4 py-3",children:o.jsxs("div",{className:"flex gap-1",children:[o.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"0ms"}}),o.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"150ms"}}),o.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"300ms"}})]})})]}),o.jsx("div",{ref:_})]})})}),o.jsx("div",{className:"shrink-0 border-t bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:o.jsx("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:o.jsxs("div",{className:"flex gap-2",children:[o.jsx(Pe,{value:n,onChange:z=>r(z.target.value),onKeyDown:$,placeholder:s?"输入消息...":"等待连接...",disabled:!s,className:"flex-1 h-10 sm:h-10"}),o.jsx(ue,{onClick:L,disabled:!s||!n.trim(),size:"icon",className:"h-10 w-10 shrink-0",children:o.jsx(ute,{className:"h-4 w-4"})})]})})})]})}const gMe=kf("pointer-events-none inline-flex select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono font-medium opacity-100",{variants:{size:{sm:"h-5 text-[10px]",default:"h-6 text-xs",lg:"h-7 text-sm"}},defaultVariants:{size:"default"}}),EX=b.forwardRef(({className:t,size:e,abbrTitle:n,children:r,...s},i)=>o.jsx("kbd",{className:xe(gMe({size:e,className:t})),ref:i,...s,children:n?o.jsx("abbr",{title:n,children:r}):r}));EX.displayName="Kbd";const xMe=[{icon:L0,title:"首页",description:"查看仪表板概览",path:"/",category:"概览"},{icon:Po,title:"麦麦主程序配置",description:"配置麦麦的核心设置",path:"/config/bot",category:"配置"},{icon:CI,title:"麦麦模型提供商配置",description:"配置模型提供商",path:"/config/modelProvider",category:"配置"},{icon:TI,title:"麦麦模型配置",description:"配置模型参数",path:"/config/model",category:"配置"},{icon:Ij,title:"表情包管理",description:"管理麦麦的表情包",path:"/resource/emoji",category:"资源"},{icon:Gh,title:"表达方式管理",description:"管理麦麦的表达方式",path:"/resource/expression",category:"资源"},{icon:EI,title:"人物信息管理",description:"管理人物信息",path:"/resource/person",category:"资源"},{icon:dte,title:"统计信息",description:"查看使用统计",path:"/statistics",category:"监控"},{icon:ed,title:"插件市场",description:"浏览和安装插件",path:"/plugins",category:"扩展"},{icon:Fv,title:"日志查看器",description:"查看系统日志",path:"/logs",category:"监控"},{icon:Vc,title:"系统设置",description:"配置系统参数",path:"/settings",category:"系统"}];function vMe({open:t,onOpenChange:e}){const[n,r]=b.useState(""),[s,i]=b.useState(0),a=na(),l=xMe.filter(h=>h.title.toLowerCase().includes(n.toLowerCase())||h.description.toLowerCase().includes(n.toLowerCase())||h.category.toLowerCase().includes(n.toLowerCase()));b.useEffect(()=>{t&&(r(""),i(0))},[t]);const c=b.useCallback(h=>{a({to:h}),e(!1)},[a,e]),d=b.useCallback(h=>{h.key==="ArrowDown"?(h.preventDefault(),i(m=>(m+1)%l.length)):h.key==="ArrowUp"?(h.preventDefault(),i(m=>(m-1+l.length)%l.length)):h.key==="Enter"&&l[s]&&(h.preventDefault(),c(l[s].path))},[l,s,c]);return o.jsx(Er,{open:t,onOpenChange:e,children:o.jsxs(wr,{className:"max-w-2xl p-0 gap-0",children:[o.jsxs(Sr,{className:"px-4 pt-4 pb-0",children:[o.jsx(kr,{className:"sr-only",children:"搜索"}),o.jsxs("div",{className:"relative",children:[o.jsx(ii,{className:"absolute left-3 top-1/2 h-5 w-5 -translate-y-1/2 text-muted-foreground"}),o.jsx(Pe,{value:n,onChange:h=>{r(h.target.value),i(0)},onKeyDown:d,placeholder:"搜索页面...",className:"h-12 pl-11 text-base border-0 focus-visible:ring-0 shadow-none",autoFocus:!0})]})]}),o.jsx("div",{className:"border-t",children:o.jsx(pn,{className:"h-[400px]",children:l.length>0?o.jsx("div",{className:"p-2",children:l.map((h,m)=>{const g=h.icon;return o.jsxs("button",{onClick:()=>c(h.path),onMouseEnter:()=>i(m),className:xe("w-full flex items-center gap-3 px-3 py-2.5 rounded-md text-left transition-colors",m===s?"bg-accent text-accent-foreground":"hover:bg-accent/50"),children:[o.jsx(g,{className:"h-5 w-5 flex-shrink-0"}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("div",{className:"font-medium text-sm",children:h.title}),o.jsx("div",{className:"text-xs text-muted-foreground truncate",children:h.description})]}),o.jsx("div",{className:"text-xs text-muted-foreground px-2 py-1 bg-muted rounded",children:h.category})]},h.path)})}):o.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[o.jsx(ii,{className:"h-12 w-12 text-muted-foreground/50 mb-4"}),o.jsx("p",{className:"text-sm text-muted-foreground",children:n?"未找到匹配的页面":"输入关键词开始搜索"})]})})}),o.jsx("div",{className:"border-t px-4 py-3 flex items-center justify-between text-xs text-muted-foreground",children:o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsxs("span",{className:"flex items-center gap-1",children:[o.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↑"}),o.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↓"}),"导航"]}),o.jsxs("span",{className:"flex items-center gap-1",children:[o.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Enter"}),"选择"]}),o.jsxs("span",{className:"flex items-center gap-1",children:[o.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Esc"}),"关闭"]})]})})]})})}function yMe(t){const e=bMe(t),n=b.forwardRef((r,s)=>{const{children:i,...a}=r,l=b.Children.toArray(i),c=l.find(SMe);if(c){const d=c.props.children,h=l.map(m=>m===c?b.Children.count(d)>1?b.Children.only(null):b.isValidElement(d)?d.props.children:null:m);return o.jsx(e,{...a,ref:s,children:b.isValidElement(d)?b.cloneElement(d,void 0,h):null})}return o.jsx(e,{...a,ref:s,children:i})});return n.displayName=`${t}.Slot`,n}function bMe(t){const e=b.forwardRef((n,r)=>{const{children:s,...i}=n;if(b.isValidElement(s)){const a=OMe(s),l=kMe(i,s.props);return s.type!==b.Fragment&&(l.ref=r?Gc(r,a):a),b.cloneElement(s,l)}return b.Children.count(s)>1?b.Children.only(null):null});return e.displayName=`${t}.SlotClone`,e}var wMe=Symbol("radix.slottable");function SMe(t){return b.isValidElement(t)&&typeof t.type=="function"&&"__radixId"in t.type&&t.type.__radixId===wMe}function kMe(t,e){const n={...e};for(const r in e){const s=t[r],i=e[r];/^on[A-Z]/.test(r)?s&&i?n[r]=(...l)=>{const c=i(...l);return s(...l),c}:s&&(n[r]=s):r==="style"?n[r]={...s,...i}:r==="className"&&(n[r]=[s,i].filter(Boolean).join(" "))}return{...t,...n}}function OMe(t){let e=Object.getOwnPropertyDescriptor(t.props,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning;return n?t.ref:(e=Object.getOwnPropertyDescriptor(t,"ref")?.get,n=e&&"isReactWarning"in e&&e.isReactWarning,n?t.props.ref:t.props.ref||t.ref)}var pj=["Enter"," "],jMe=["ArrowDown","PageUp","Home"],_X=["ArrowUp","PageDown","End"],NMe=[...jMe,..._X],CMe={ltr:[...pj,"ArrowRight"],rtl:[...pj,"ArrowLeft"]},TMe={ltr:["ArrowLeft"],rtl:["ArrowRight"]},Tg="Menu",[_p,EMe,_Me]=Qy(Tg),[Cd,AX]=Da(Tg,[_Me,vf,sb]),Eg=vf(),MX=sb(),[RX,gu]=Cd(Tg),[AMe,_g]=Cd(Tg),DX=t=>{const{__scopeMenu:e,open:n=!1,children:r,dir:s,onOpenChange:i,modal:a=!0}=t,l=Eg(e),[c,d]=b.useState(null),h=b.useRef(!1),m=Rs(i),g=Rp(s);return b.useEffect(()=>{const x=()=>{h.current=!0,document.addEventListener("pointerdown",y,{capture:!0,once:!0}),document.addEventListener("pointermove",y,{capture:!0,once:!0})},y=()=>h.current=!1;return document.addEventListener("keydown",x,{capture:!0}),()=>{document.removeEventListener("keydown",x,{capture:!0}),document.removeEventListener("pointerdown",y,{capture:!0}),document.removeEventListener("pointermove",y,{capture:!0})}},[]),o.jsx(Yy,{...l,children:o.jsx(RX,{scope:e,open:n,onOpenChange:m,content:c,onContentChange:d,children:o.jsx(AMe,{scope:e,onClose:b.useCallback(()=>m(!1),[m]),isUsingKeyboardRef:h,dir:g,modal:a,children:r})})})};DX.displayName=Tg;var MMe="MenuAnchor",O7=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t,s=Eg(n);return o.jsx(Ky,{...s,...r,ref:e})});O7.displayName=MMe;var j7="MenuPortal",[RMe,PX]=Cd(j7,{forceMount:void 0}),zX=t=>{const{__scopeMenu:e,forceMount:n,children:r,container:s}=t,i=gu(j7,e);return o.jsx(RMe,{scope:e,forceMount:n,children:o.jsx(oi,{present:n||i.open,children:o.jsx(Xy,{asChild:!0,container:s,children:r})})})};zX.displayName=j7;var _a="MenuContent",[DMe,N7]=Cd(_a),IX=b.forwardRef((t,e)=>{const n=PX(_a,t.__scopeMenu),{forceMount:r=n.forceMount,...s}=t,i=gu(_a,t.__scopeMenu),a=_g(_a,t.__scopeMenu);return o.jsx(_p.Provider,{scope:t.__scopeMenu,children:o.jsx(oi,{present:r||i.open,children:o.jsx(_p.Slot,{scope:t.__scopeMenu,children:a.modal?o.jsx(PMe,{...s,ref:e}):o.jsx(zMe,{...s,ref:e})})})})}),PMe=b.forwardRef((t,e)=>{const n=gu(_a,t.__scopeMenu),r=b.useRef(null),s=er(e,r);return b.useEffect(()=>{const i=r.current;if(i)return gI(i)},[]),o.jsx(C7,{...t,ref:s,trapFocus:n.open,disableOutsidePointerEvents:n.open,disableOutsideScroll:!0,onFocusOutside:nt(t.onFocusOutside,i=>i.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>n.onOpenChange(!1)})}),zMe=b.forwardRef((t,e)=>{const n=gu(_a,t.__scopeMenu);return o.jsx(C7,{...t,ref:e,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>n.onOpenChange(!1)})}),IMe=yMe("MenuContent.ScrollLock"),C7=b.forwardRef((t,e)=>{const{__scopeMenu:n,loop:r=!1,trapFocus:s,onOpenAutoFocus:i,onCloseAutoFocus:a,disableOutsidePointerEvents:l,onEntryFocus:c,onEscapeKeyDown:d,onPointerDownOutside:h,onFocusOutside:m,onInteractOutside:g,onDismiss:x,disableOutsideScroll:y,...w}=t,S=gu(_a,n),k=_g(_a,n),j=Eg(n),N=MX(n),T=EMe(n),[E,_]=b.useState(null),A=b.useRef(null),D=er(e,A,S.onContentChange),q=b.useRef(0),B=b.useRef(""),H=b.useRef(0),W=b.useRef(null),ee=b.useRef("right"),I=b.useRef(0),V=y?xI:b.Fragment,L=y?{as:IMe,allowPinchZoom:!0}:void 0,$=Y=>{const R=B.current+Y,ie=T().filter(G=>!G.disabled),X=document.activeElement,z=ie.find(G=>G.ref.current===X)?.textValue,U=ie.map(G=>G.textValue),te=XMe(U,R,z),ne=ie.find(G=>G.textValue===te)?.ref.current;(function G(se){B.current=se,window.clearTimeout(q.current),se!==""&&(q.current=window.setTimeout(()=>G(""),1e3))})(R),ne&&setTimeout(()=>ne.focus())};b.useEffect(()=>()=>window.clearTimeout(q.current),[]),vI();const K=b.useCallback(Y=>ee.current===W.current?.side&&KMe(Y,W.current?.area),[]);return o.jsx(DMe,{scope:n,searchRef:B,onItemEnter:b.useCallback(Y=>{K(Y)&&Y.preventDefault()},[K]),onItemLeave:b.useCallback(Y=>{K(Y)||(A.current?.focus(),_(null))},[K]),onTriggerLeave:b.useCallback(Y=>{K(Y)&&Y.preventDefault()},[K]),pointerGraceTimerRef:H,onPointerGraceIntentChange:b.useCallback(Y=>{W.current=Y},[]),children:o.jsx(V,{...L,children:o.jsx(yI,{asChild:!0,trapped:s,onMountAutoFocus:nt(i,Y=>{Y.preventDefault(),A.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:a,children:o.jsx(Rj,{asChild:!0,disableOutsidePointerEvents:l,onEscapeKeyDown:d,onPointerDownOutside:h,onFocusOutside:m,onInteractOutside:g,onDismiss:x,children:o.jsx(vL,{asChild:!0,...N,dir:k.dir,orientation:"vertical",loop:r,currentTabStopId:E,onCurrentTabStopIdChange:_,onEntryFocus:nt(c,Y=>{k.isUsingKeyboardRef.current||Y.preventDefault()}),preventScrollOnEntryFocus:!0,children:o.jsx(Dj,{role:"menu","aria-orientation":"vertical","data-state":eY(S.open),"data-radix-menu-content":"",dir:k.dir,...j,...w,ref:D,style:{outline:"none",...w.style},onKeyDown:nt(w.onKeyDown,Y=>{const ie=Y.target.closest("[data-radix-menu-content]")===Y.currentTarget,X=Y.ctrlKey||Y.altKey||Y.metaKey,z=Y.key.length===1;ie&&(Y.key==="Tab"&&Y.preventDefault(),!X&&z&&$(Y.key));const U=A.current;if(Y.target!==U||!NMe.includes(Y.key))return;Y.preventDefault();const ne=T().filter(G=>!G.disabled).map(G=>G.ref.current);_X.includes(Y.key)&&ne.reverse(),WMe(ne)}),onBlur:nt(t.onBlur,Y=>{Y.currentTarget.contains(Y.target)||(window.clearTimeout(q.current),B.current="")}),onPointerMove:nt(t.onPointerMove,Ap(Y=>{const R=Y.target,ie=I.current!==Y.clientX;if(Y.currentTarget.contains(R)&&ie){const X=Y.clientX>I.current?"right":"left";ee.current=X,I.current=Y.clientX}}))})})})})})})});IX.displayName=_a;var LMe="MenuGroup",T7=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t;return o.jsx(Sn.div,{role:"group",...r,ref:e})});T7.displayName=LMe;var BMe="MenuLabel",LX=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t;return o.jsx(Sn.div,{...r,ref:e})});LX.displayName=BMe;var Fy="MenuItem",qz="menu.itemSelect",lw=b.forwardRef((t,e)=>{const{disabled:n=!1,onSelect:r,...s}=t,i=b.useRef(null),a=_g(Fy,t.__scopeMenu),l=N7(Fy,t.__scopeMenu),c=er(e,i),d=b.useRef(!1),h=()=>{const m=i.current;if(!n&&m){const g=new CustomEvent(qz,{bubbles:!0,cancelable:!0});m.addEventListener(qz,x=>r?.(x),{once:!0}),wI(m,g),g.defaultPrevented?d.current=!1:a.onClose()}};return o.jsx(BX,{...s,ref:c,disabled:n,onClick:nt(t.onClick,h),onPointerDown:m=>{t.onPointerDown?.(m),d.current=!0},onPointerUp:nt(t.onPointerUp,m=>{d.current||m.currentTarget?.click()}),onKeyDown:nt(t.onKeyDown,m=>{const g=l.searchRef.current!=="";n||g&&m.key===" "||pj.includes(m.key)&&(m.currentTarget.click(),m.preventDefault())})})});lw.displayName=Fy;var BX=b.forwardRef((t,e)=>{const{__scopeMenu:n,disabled:r=!1,textValue:s,...i}=t,a=N7(Fy,n),l=MX(n),c=b.useRef(null),d=er(e,c),[h,m]=b.useState(!1),[g,x]=b.useState("");return b.useEffect(()=>{const y=c.current;y&&x((y.textContent??"").trim())},[i.children]),o.jsx(_p.ItemSlot,{scope:n,disabled:r,textValue:s??g,children:o.jsx(yL,{asChild:!0,...l,focusable:!r,children:o.jsx(Sn.div,{role:"menuitem","data-highlighted":h?"":void 0,"aria-disabled":r||void 0,"data-disabled":r?"":void 0,...i,ref:d,onPointerMove:nt(t.onPointerMove,Ap(y=>{r?a.onItemLeave(y):(a.onItemEnter(y),y.defaultPrevented||y.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:nt(t.onPointerLeave,Ap(y=>a.onItemLeave(y))),onFocus:nt(t.onFocus,()=>m(!0)),onBlur:nt(t.onBlur,()=>m(!1))})})})}),FMe="MenuCheckboxItem",FX=b.forwardRef((t,e)=>{const{checked:n=!1,onCheckedChange:r,...s}=t;return o.jsx(VX,{scope:t.__scopeMenu,checked:n,children:o.jsx(lw,{role:"menuitemcheckbox","aria-checked":qy(n)?"mixed":n,...s,ref:e,"data-state":A7(n),onSelect:nt(s.onSelect,()=>r?.(qy(n)?!0:!n),{checkForDefaultPrevented:!1})})})});FX.displayName=FMe;var qX="MenuRadioGroup",[qMe,$Me]=Cd(qX,{value:void 0,onValueChange:()=>{}}),$X=b.forwardRef((t,e)=>{const{value:n,onValueChange:r,...s}=t,i=Rs(r);return o.jsx(qMe,{scope:t.__scopeMenu,value:n,onValueChange:i,children:o.jsx(T7,{...s,ref:e})})});$X.displayName=qX;var HX="MenuRadioItem",QX=b.forwardRef((t,e)=>{const{value:n,...r}=t,s=$Me(HX,t.__scopeMenu),i=n===s.value;return o.jsx(VX,{scope:t.__scopeMenu,checked:i,children:o.jsx(lw,{role:"menuitemradio","aria-checked":i,...r,ref:e,"data-state":A7(i),onSelect:nt(r.onSelect,()=>s.onValueChange?.(n),{checkForDefaultPrevented:!1})})})});QX.displayName=HX;var E7="MenuItemIndicator",[VX,HMe]=Cd(E7,{checked:!1}),UX=b.forwardRef((t,e)=>{const{__scopeMenu:n,forceMount:r,...s}=t,i=HMe(E7,n);return o.jsx(oi,{present:r||qy(i.checked)||i.checked===!0,children:o.jsx(Sn.span,{...s,ref:e,"data-state":A7(i.checked)})})});UX.displayName=E7;var QMe="MenuSeparator",WX=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t;return o.jsx(Sn.div,{role:"separator","aria-orientation":"horizontal",...r,ref:e})});WX.displayName=QMe;var VMe="MenuArrow",GX=b.forwardRef((t,e)=>{const{__scopeMenu:n,...r}=t,s=Eg(n);return o.jsx(Pj,{...s,...r,ref:e})});GX.displayName=VMe;var _7="MenuSub",[UMe,XX]=Cd(_7),YX=t=>{const{__scopeMenu:e,children:n,open:r=!1,onOpenChange:s}=t,i=gu(_7,e),a=Eg(e),[l,c]=b.useState(null),[d,h]=b.useState(null),m=Rs(s);return b.useEffect(()=>(i.open===!1&&m(!1),()=>m(!1)),[i.open,m]),o.jsx(Yy,{...a,children:o.jsx(RX,{scope:e,open:r,onOpenChange:m,content:d,onContentChange:h,children:o.jsx(UMe,{scope:e,contentId:Gi(),triggerId:Gi(),trigger:l,onTriggerChange:c,children:n})})})};YX.displayName=_7;var y0="MenuSubTrigger",KX=b.forwardRef((t,e)=>{const n=gu(y0,t.__scopeMenu),r=_g(y0,t.__scopeMenu),s=XX(y0,t.__scopeMenu),i=N7(y0,t.__scopeMenu),a=b.useRef(null),{pointerGraceTimerRef:l,onPointerGraceIntentChange:c}=i,d={__scopeMenu:t.__scopeMenu},h=b.useCallback(()=>{a.current&&window.clearTimeout(a.current),a.current=null},[]);return b.useEffect(()=>h,[h]),b.useEffect(()=>{const m=l.current;return()=>{window.clearTimeout(m),c(null)}},[l,c]),o.jsx(O7,{asChild:!0,...d,children:o.jsx(BX,{id:s.triggerId,"aria-haspopup":"menu","aria-expanded":n.open,"aria-controls":s.contentId,"data-state":eY(n.open),...t,ref:Gc(e,s.onTriggerChange),onClick:m=>{t.onClick?.(m),!(t.disabled||m.defaultPrevented)&&(m.currentTarget.focus(),n.open||n.onOpenChange(!0))},onPointerMove:nt(t.onPointerMove,Ap(m=>{i.onItemEnter(m),!m.defaultPrevented&&!t.disabled&&!n.open&&!a.current&&(i.onPointerGraceIntentChange(null),a.current=window.setTimeout(()=>{n.onOpenChange(!0),h()},100))})),onPointerLeave:nt(t.onPointerLeave,Ap(m=>{h();const g=n.content?.getBoundingClientRect();if(g){const x=n.content?.dataset.side,y=x==="right",w=y?-5:5,S=g[y?"left":"right"],k=g[y?"right":"left"];i.onPointerGraceIntentChange({area:[{x:m.clientX+w,y:m.clientY},{x:S,y:g.top},{x:k,y:g.top},{x:k,y:g.bottom},{x:S,y:g.bottom}],side:x}),window.clearTimeout(l.current),l.current=window.setTimeout(()=>i.onPointerGraceIntentChange(null),300)}else{if(i.onTriggerLeave(m),m.defaultPrevented)return;i.onPointerGraceIntentChange(null)}})),onKeyDown:nt(t.onKeyDown,m=>{const g=i.searchRef.current!=="";t.disabled||g&&m.key===" "||CMe[r.dir].includes(m.key)&&(n.onOpenChange(!0),n.content?.focus(),m.preventDefault())})})})});KX.displayName=y0;var ZX="MenuSubContent",JX=b.forwardRef((t,e)=>{const n=PX(_a,t.__scopeMenu),{forceMount:r=n.forceMount,...s}=t,i=gu(_a,t.__scopeMenu),a=_g(_a,t.__scopeMenu),l=XX(ZX,t.__scopeMenu),c=b.useRef(null),d=er(e,c);return o.jsx(_p.Provider,{scope:t.__scopeMenu,children:o.jsx(oi,{present:r||i.open,children:o.jsx(_p.Slot,{scope:t.__scopeMenu,children:o.jsx(C7,{id:l.contentId,"aria-labelledby":l.triggerId,...s,ref:d,align:"start",side:a.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:h=>{a.isUsingKeyboardRef.current&&c.current?.focus(),h.preventDefault()},onCloseAutoFocus:h=>h.preventDefault(),onFocusOutside:nt(t.onFocusOutside,h=>{h.target!==l.trigger&&i.onOpenChange(!1)}),onEscapeKeyDown:nt(t.onEscapeKeyDown,h=>{a.onClose(),h.preventDefault()}),onKeyDown:nt(t.onKeyDown,h=>{const m=h.currentTarget.contains(h.target),g=TMe[a.dir].includes(h.key);m&&g&&(i.onOpenChange(!1),l.trigger?.focus(),h.preventDefault())})})})})})});JX.displayName=ZX;function eY(t){return t?"open":"closed"}function qy(t){return t==="indeterminate"}function A7(t){return qy(t)?"indeterminate":t?"checked":"unchecked"}function WMe(t){const e=document.activeElement;for(const n of t)if(n===e||(n.focus(),document.activeElement!==e))return}function GMe(t,e){return t.map((n,r)=>t[(e+r)%t.length])}function XMe(t,e,n){const s=e.length>1&&Array.from(e).every(d=>d===e[0])?e[0]:e,i=n?t.indexOf(n):-1;let a=GMe(t,Math.max(i,0));s.length===1&&(a=a.filter(d=>d!==n));const c=a.find(d=>d.toLowerCase().startsWith(s.toLowerCase()));return c!==n?c:void 0}function YMe(t,e){const{x:n,y:r}=t;let s=!1;for(let i=0,a=e.length-1;ir!=g>r&&n<(m-d)*(r-h)/(g-h)+d&&(s=!s)}return s}function KMe(t,e){if(!e)return!1;const n={x:t.clientX,y:t.clientY};return YMe(n,e)}function Ap(t){return e=>e.pointerType==="mouse"?t(e):void 0}var ZMe=DX,JMe=O7,eRe=zX,tRe=IX,nRe=T7,rRe=LX,sRe=lw,iRe=FX,aRe=$X,oRe=QX,lRe=UX,cRe=WX,uRe=GX,dRe=YX,hRe=KX,fRe=JX,M7="ContextMenu",[mRe]=Da(M7,[AX]),Xs=AX(),[pRe,tY]=mRe(M7),nY=t=>{const{__scopeContextMenu:e,children:n,onOpenChange:r,dir:s,modal:i=!0}=t,[a,l]=b.useState(!1),c=Xs(e),d=Rs(r),h=b.useCallback(m=>{l(m),d(m)},[d]);return o.jsx(pRe,{scope:e,open:a,onOpenChange:h,modal:i,children:o.jsx(ZMe,{...c,dir:s,open:a,onOpenChange:h,modal:i,children:n})})};nY.displayName=M7;var rY="ContextMenuTrigger",sY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,disabled:r=!1,...s}=t,i=tY(rY,n),a=Xs(n),l=b.useRef({x:0,y:0}),c=b.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...l.current})}),d=b.useRef(0),h=b.useCallback(()=>window.clearTimeout(d.current),[]),m=g=>{l.current={x:g.clientX,y:g.clientY},i.onOpenChange(!0)};return b.useEffect(()=>h,[h]),b.useEffect(()=>void(r&&h()),[r,h]),o.jsxs(o.Fragment,{children:[o.jsx(JMe,{...a,virtualRef:c}),o.jsx(Sn.span,{"data-state":i.open?"open":"closed","data-disabled":r?"":void 0,...s,ref:e,style:{WebkitTouchCallout:"none",...t.style},onContextMenu:r?t.onContextMenu:nt(t.onContextMenu,g=>{h(),m(g),g.preventDefault()}),onPointerDown:r?t.onPointerDown:nt(t.onPointerDown,tv(g=>{h(),d.current=window.setTimeout(()=>m(g),700)})),onPointerMove:r?t.onPointerMove:nt(t.onPointerMove,tv(h)),onPointerCancel:r?t.onPointerCancel:nt(t.onPointerCancel,tv(h)),onPointerUp:r?t.onPointerUp:nt(t.onPointerUp,tv(h))})]})});sY.displayName=rY;var gRe="ContextMenuPortal",iY=t=>{const{__scopeContextMenu:e,...n}=t,r=Xs(e);return o.jsx(eRe,{...r,...n})};iY.displayName=gRe;var aY="ContextMenuContent",oY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=tY(aY,n),i=Xs(n),a=b.useRef(!1);return o.jsx(tRe,{...i,...r,ref:e,side:"right",sideOffset:2,align:"start",onCloseAutoFocus:l=>{t.onCloseAutoFocus?.(l),!l.defaultPrevented&&a.current&&l.preventDefault(),a.current=!1},onInteractOutside:l=>{t.onInteractOutside?.(l),!l.defaultPrevented&&!s.modal&&(a.current=!0)},style:{...t.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});oY.displayName=aY;var xRe="ContextMenuGroup",vRe=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Xs(n);return o.jsx(nRe,{...s,...r,ref:e})});vRe.displayName=xRe;var yRe="ContextMenuLabel",lY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Xs(n);return o.jsx(rRe,{...s,...r,ref:e})});lY.displayName=yRe;var bRe="ContextMenuItem",cY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Xs(n);return o.jsx(sRe,{...s,...r,ref:e})});cY.displayName=bRe;var wRe="ContextMenuCheckboxItem",uY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Xs(n);return o.jsx(iRe,{...s,...r,ref:e})});uY.displayName=wRe;var SRe="ContextMenuRadioGroup",kRe=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Xs(n);return o.jsx(aRe,{...s,...r,ref:e})});kRe.displayName=SRe;var ORe="ContextMenuRadioItem",dY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Xs(n);return o.jsx(oRe,{...s,...r,ref:e})});dY.displayName=ORe;var jRe="ContextMenuItemIndicator",hY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Xs(n);return o.jsx(lRe,{...s,...r,ref:e})});hY.displayName=jRe;var NRe="ContextMenuSeparator",fY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Xs(n);return o.jsx(cRe,{...s,...r,ref:e})});fY.displayName=NRe;var CRe="ContextMenuArrow",TRe=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Xs(n);return o.jsx(uRe,{...s,...r,ref:e})});TRe.displayName=CRe;var mY="ContextMenuSub",pY=t=>{const{__scopeContextMenu:e,children:n,onOpenChange:r,open:s,defaultOpen:i}=t,a=Xs(e),[l,c]=Kl({prop:s,defaultProp:i??!1,onChange:r,caller:mY});return o.jsx(dRe,{...a,open:l,onOpenChange:c,children:n})};pY.displayName=mY;var ERe="ContextMenuSubTrigger",gY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Xs(n);return o.jsx(hRe,{...s,...r,ref:e})});gY.displayName=ERe;var _Re="ContextMenuSubContent",xY=b.forwardRef((t,e)=>{const{__scopeContextMenu:n,...r}=t,s=Xs(n);return o.jsx(fRe,{...s,...r,ref:e,style:{...t.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});xY.displayName=_Re;function tv(t){return e=>e.pointerType!=="mouse"?t(e):void 0}var ARe=nY,MRe=sY,RRe=iY,vY=oY,yY=lY,bY=cY,wY=uY,SY=dY,kY=hY,OY=fY,DRe=pY,jY=gY,NY=xY;const PRe=ARe,zRe=MRe,IRe=DRe,CY=b.forwardRef(({className:t,inset:e,children:n,...r},s)=>o.jsxs(jY,{ref:s,className:xe("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",e&&"pl-8",t),...r,children:[n,o.jsx(Zl,{className:"ml-auto h-4 w-4"})]}));CY.displayName=jY.displayName;const TY=b.forwardRef(({className:t,...e},n)=>o.jsx(NY,{ref:n,className:xe("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]",t),...e}));TY.displayName=NY.displayName;const EY=b.forwardRef(({className:t,...e},n)=>o.jsx(RRe,{children:o.jsx(vY,{ref:n,className:xe("z-50 max-h-[--radix-context-menu-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]",t),...e})}));EY.displayName=vY.displayName;const $a=b.forwardRef(({className:t,inset:e,...n},r)=>o.jsx(bY,{ref:r,className:xe("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e&&"pl-8",t),...n}));$a.displayName=bY.displayName;const LRe=b.forwardRef(({className:t,children:e,checked:n,...r},s)=>o.jsxs(wY,{ref:s,className:xe("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),checked:n,...r,children:[o.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:o.jsx(kY,{children:o.jsx(zo,{className:"h-4 w-4"})})}),e]}));LRe.displayName=wY.displayName;const BRe=b.forwardRef(({className:t,children:e,...n},r)=>o.jsxs(SY,{ref:r,className:xe("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",t),...n,children:[o.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:o.jsx(kY,{children:o.jsx(hte,{className:"h-2 w-2 fill-current"})})}),e]}));BRe.displayName=SY.displayName;const FRe=b.forwardRef(({className:t,inset:e,...n},r)=>o.jsx(yY,{ref:r,className:xe("px-2 py-1.5 text-sm font-semibold text-foreground",e&&"pl-8",t),...n}));FRe.displayName=yY.displayName;const b0=b.forwardRef(({className:t,...e},n)=>o.jsx(OY,{ref:n,className:xe("-mx-1 my-1 h-px bg-border",t),...e}));b0.displayName=OY.displayName;const Ch=({className:t,...e})=>o.jsx("span",{className:xe("ml-auto text-xs tracking-widest text-muted-foreground",t),...e});Ch.displayName="ContextMenuShortcut";var qRe=Symbol("radix.slottable");function $Re(t){const e=({children:n})=>o.jsx(o.Fragment,{children:n});return e.displayName=`${t}.Slottable`,e.__radixId=qRe,e}var[cw]=Da("Tooltip",[vf]),uw=vf(),_Y="TooltipProvider",HRe=700,gj="tooltip.open",[QRe,R7]=cw(_Y),AY=t=>{const{__scopeTooltip:e,delayDuration:n=HRe,skipDelayDuration:r=300,disableHoverableContent:s=!1,children:i}=t,a=b.useRef(!0),l=b.useRef(!1),c=b.useRef(0);return b.useEffect(()=>{const d=c.current;return()=>window.clearTimeout(d)},[]),o.jsx(QRe,{scope:e,isOpenDelayedRef:a,delayDuration:n,onOpen:b.useCallback(()=>{window.clearTimeout(c.current),a.current=!1},[]),onClose:b.useCallback(()=>{window.clearTimeout(c.current),c.current=window.setTimeout(()=>a.current=!0,r)},[r]),isPointerInTransitRef:l,onPointerInTransitChange:b.useCallback(d=>{l.current=d},[]),disableHoverableContent:s,children:i})};AY.displayName=_Y;var Mp="Tooltip",[VRe,Ag]=cw(Mp),MY=t=>{const{__scopeTooltip:e,children:n,open:r,defaultOpen:s,onOpenChange:i,disableHoverableContent:a,delayDuration:l}=t,c=R7(Mp,t.__scopeTooltip),d=uw(e),[h,m]=b.useState(null),g=Gi(),x=b.useRef(0),y=a??c.disableHoverableContent,w=l??c.delayDuration,S=b.useRef(!1),[k,j]=Kl({prop:r,defaultProp:s??!1,onChange:A=>{A?(c.onOpen(),document.dispatchEvent(new CustomEvent(gj))):c.onClose(),i?.(A)},caller:Mp}),N=b.useMemo(()=>k?S.current?"delayed-open":"instant-open":"closed",[k]),T=b.useCallback(()=>{window.clearTimeout(x.current),x.current=0,S.current=!1,j(!0)},[j]),E=b.useCallback(()=>{window.clearTimeout(x.current),x.current=0,j(!1)},[j]),_=b.useCallback(()=>{window.clearTimeout(x.current),x.current=window.setTimeout(()=>{S.current=!0,j(!0),x.current=0},w)},[w,j]);return b.useEffect(()=>()=>{x.current&&(window.clearTimeout(x.current),x.current=0)},[]),o.jsx(Yy,{...d,children:o.jsx(VRe,{scope:e,contentId:g,open:k,stateAttribute:N,trigger:h,onTriggerChange:m,onTriggerEnter:b.useCallback(()=>{c.isOpenDelayedRef.current?_():T()},[c.isOpenDelayedRef,_,T]),onTriggerLeave:b.useCallback(()=>{y?E():(window.clearTimeout(x.current),x.current=0)},[E,y]),onOpen:T,onClose:E,disableHoverableContent:y,children:n})})};MY.displayName=Mp;var xj="TooltipTrigger",RY=b.forwardRef((t,e)=>{const{__scopeTooltip:n,...r}=t,s=Ag(xj,n),i=R7(xj,n),a=uw(n),l=b.useRef(null),c=er(e,l,s.onTriggerChange),d=b.useRef(!1),h=b.useRef(!1),m=b.useCallback(()=>d.current=!1,[]);return b.useEffect(()=>()=>document.removeEventListener("pointerup",m),[m]),o.jsx(Ky,{asChild:!0,...a,children:o.jsx(Sn.button,{"aria-describedby":s.open?s.contentId:void 0,"data-state":s.stateAttribute,...r,ref:c,onPointerMove:nt(t.onPointerMove,g=>{g.pointerType!=="touch"&&!h.current&&!i.isPointerInTransitRef.current&&(s.onTriggerEnter(),h.current=!0)}),onPointerLeave:nt(t.onPointerLeave,()=>{s.onTriggerLeave(),h.current=!1}),onPointerDown:nt(t.onPointerDown,()=>{s.open&&s.onClose(),d.current=!0,document.addEventListener("pointerup",m,{once:!0})}),onFocus:nt(t.onFocus,()=>{d.current||s.onOpen()}),onBlur:nt(t.onBlur,s.onClose),onClick:nt(t.onClick,s.onClose)})})});RY.displayName=xj;var D7="TooltipPortal",[URe,WRe]=cw(D7,{forceMount:void 0}),DY=t=>{const{__scopeTooltip:e,forceMount:n,children:r,container:s}=t,i=Ag(D7,e);return o.jsx(URe,{scope:e,forceMount:n,children:o.jsx(oi,{present:n||i.open,children:o.jsx(Xy,{asChild:!0,container:s,children:r})})})};DY.displayName=D7;var xf="TooltipContent",PY=b.forwardRef((t,e)=>{const n=WRe(xf,t.__scopeTooltip),{forceMount:r=n.forceMount,side:s="top",...i}=t,a=Ag(xf,t.__scopeTooltip);return o.jsx(oi,{present:r||a.open,children:a.disableHoverableContent?o.jsx(zY,{side:s,...i,ref:e}):o.jsx(GRe,{side:s,...i,ref:e})})}),GRe=b.forwardRef((t,e)=>{const n=Ag(xf,t.__scopeTooltip),r=R7(xf,t.__scopeTooltip),s=b.useRef(null),i=er(e,s),[a,l]=b.useState(null),{trigger:c,onClose:d}=n,h=s.current,{onPointerInTransitChange:m}=r,g=b.useCallback(()=>{l(null),m(!1)},[m]),x=b.useCallback((y,w)=>{const S=y.currentTarget,k={x:y.clientX,y:y.clientY},j=JRe(k,S.getBoundingClientRect()),N=eDe(k,j),T=tDe(w.getBoundingClientRect()),E=rDe([...N,...T]);l(E),m(!0)},[m]);return b.useEffect(()=>()=>g(),[g]),b.useEffect(()=>{if(c&&h){const y=S=>x(S,h),w=S=>x(S,c);return c.addEventListener("pointerleave",y),h.addEventListener("pointerleave",w),()=>{c.removeEventListener("pointerleave",y),h.removeEventListener("pointerleave",w)}}},[c,h,x,g]),b.useEffect(()=>{if(a){const y=w=>{const S=w.target,k={x:w.clientX,y:w.clientY},j=c?.contains(S)||h?.contains(S),N=!nDe(k,a);j?g():N&&(g(),d())};return document.addEventListener("pointermove",y),()=>document.removeEventListener("pointermove",y)}},[c,h,a,d,g]),o.jsx(zY,{...t,ref:i})}),[XRe,YRe]=cw(Mp,{isInside:!1}),KRe=$Re("TooltipContent"),zY=b.forwardRef((t,e)=>{const{__scopeTooltip:n,children:r,"aria-label":s,onEscapeKeyDown:i,onPointerDownOutside:a,...l}=t,c=Ag(xf,n),d=uw(n),{onClose:h}=c;return b.useEffect(()=>(document.addEventListener(gj,h),()=>document.removeEventListener(gj,h)),[h]),b.useEffect(()=>{if(c.trigger){const m=g=>{g.target?.contains(c.trigger)&&h()};return window.addEventListener("scroll",m,{capture:!0}),()=>window.removeEventListener("scroll",m,{capture:!0})}},[c.trigger,h]),o.jsx(Rj,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:i,onPointerDownOutside:a,onFocusOutside:m=>m.preventDefault(),onDismiss:h,children:o.jsxs(Dj,{"data-state":c.stateAttribute,...d,...l,ref:e,style:{...l.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[o.jsx(KRe,{children:r}),o.jsx(XRe,{scope:n,isInside:!0,children:o.jsx(Iee,{id:c.contentId,role:"tooltip",children:s||r})})]})})});PY.displayName=xf;var IY="TooltipArrow",ZRe=b.forwardRef((t,e)=>{const{__scopeTooltip:n,...r}=t,s=uw(n);return YRe(IY,n).isInside?null:o.jsx(Pj,{...s,...r,ref:e})});ZRe.displayName=IY;function JRe(t,e){const n=Math.abs(e.top-t.y),r=Math.abs(e.bottom-t.y),s=Math.abs(e.right-t.x),i=Math.abs(e.left-t.x);switch(Math.min(n,r,s,i)){case i:return"left";case s:return"right";case n:return"top";case r:return"bottom";default:throw new Error("unreachable")}}function eDe(t,e,n=5){const r=[];switch(e){case"top":r.push({x:t.x-n,y:t.y+n},{x:t.x+n,y:t.y+n});break;case"bottom":r.push({x:t.x-n,y:t.y-n},{x:t.x+n,y:t.y-n});break;case"left":r.push({x:t.x+n,y:t.y-n},{x:t.x+n,y:t.y+n});break;case"right":r.push({x:t.x-n,y:t.y-n},{x:t.x-n,y:t.y+n});break}return r}function tDe(t){const{top:e,right:n,bottom:r,left:s}=t;return[{x:s,y:e},{x:n,y:e},{x:n,y:r},{x:s,y:r}]}function nDe(t,e){const{x:n,y:r}=t;let s=!1;for(let i=0,a=e.length-1;ir!=g>r&&n<(m-d)*(r-h)/(g-h)+d&&(s=!s)}return s}function rDe(t){const e=t.slice();return e.sort((n,r)=>n.xr.x?1:n.yr.y?1:0),sDe(e)}function sDe(t){if(t.length<=1)return t.slice();const e=[];for(let r=0;r=2;){const i=e[e.length-1],a=e[e.length-2];if((i.x-a.x)*(s.y-a.y)>=(i.y-a.y)*(s.x-a.x))e.pop();else break}e.push(s)}e.pop();const n=[];for(let r=t.length-1;r>=0;r--){const s=t[r];for(;n.length>=2;){const i=n[n.length-1],a=n[n.length-2];if((i.x-a.x)*(s.y-a.y)>=(i.y-a.y)*(s.x-a.x))n.pop();else break}n.push(s)}return n.pop(),e.length===1&&n.length===1&&e[0].x===n[0].x&&e[0].y===n[0].y?e:e.concat(n)}var iDe=AY,aDe=MY,oDe=RY,lDe=DY,LY=PY;const cDe=iDe,uDe=aDe,dDe=oDe,BY=b.forwardRef(({className:t,sideOffset:e=4,...n},r)=>o.jsx(lDe,{children:o.jsx(LY,{ref:r,sideOffset:e,className:xe("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",t),...n})}));BY.displayName=LY.displayName;function hDe({children:t}){mie();const[e,n]=b.useState(!0),[r,s]=b.useState(!1),[i,a]=b.useState(!1),{theme:l,setTheme:c}=Kj(),d=wJ(),h=na();b.useEffect(()=>{const w=S=>{(S.metaKey||S.ctrlKey)&&S.key==="k"&&(S.preventDefault(),a(!0))};return window.addEventListener("keydown",w),()=>window.removeEventListener("keydown",w)},[]);const m=[{title:"概览",items:[{icon:L0,label:"首页",path:"/"}]},{title:"麦麦配置编辑",items:[{icon:Po,label:"麦麦主程序配置",path:"/config/bot"},{icon:CI,label:"AI模型厂商配置",path:"/config/modelProvider",tourId:"sidebar-model-provider"},{icon:TI,label:"模型管理与分配",path:"/config/model",tourId:"sidebar-model-management"},{icon:E9,label:"麦麦适配器配置",path:"/config/adapter"}]},{title:"麦麦资源管理",items:[{icon:Ij,label:"表情包管理",path:"/resource/emoji"},{icon:Gh,label:"表达方式管理",path:"/resource/expression"},{icon:EI,label:"人物信息管理",path:"/resource/person"},{icon:NI,label:"知识库图谱可视化",path:"/resource/knowledge-graph"}]},{title:"扩展与监控",items:[{icon:ed,label:"插件市场",path:"/plugins"},{icon:E9,label:"插件配置",path:"/plugin-config"},{icon:Fv,label:"日志查看器",path:"/logs"},{icon:Gh,label:"本地聊天室",path:"/chat"}]},{title:"系统",items:[{icon:Vc,label:"系统设置",path:"/settings"}]}],x=l==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":l,y=()=>{localStorage.removeItem("access-token"),h({to:"/auth"})};return o.jsx(cDe,{delayDuration:300,children:o.jsxs("div",{className:"flex h-screen overflow-hidden",children:[o.jsxs("aside",{className:xe("fixed inset-y-0 left-0 z-50 flex flex-col border-r bg-card transition-all duration-300 lg:relative lg:z-0","w-64 lg:w-auto",e?"lg:w-64":"lg:w-16",r?"translate-x-0":"-translate-x-full lg:translate-x-0"),children:[o.jsx("div",{className:"flex h-16 items-center border-b px-4",children:o.jsxs("div",{className:xe("relative flex items-center justify-center flex-1 transition-all overflow-hidden","lg:flex-1",!e&&"lg:flex-none lg:w-8"),children:[o.jsxs("div",{className:xe("flex items-baseline gap-2",!e&&"lg:hidden"),children:[o.jsx("span",{className:"font-bold text-xl text-primary-gradient whitespace-nowrap",children:"MaiBot WebUI"}),o.jsx("span",{className:"text-xs text-primary/60 whitespace-nowrap",children:Qse()})]}),!e&&o.jsx("span",{className:"hidden lg:block font-bold text-primary-gradient text-2xl",children:"M"})]})}),o.jsx(pn,{className:xe("flex-1 overflow-x-hidden",!e&&"lg:w-16"),children:o.jsx("nav",{className:xe("p-4",!e&&"lg:p-2 lg:w-16"),children:o.jsx("ul",{className:xe("space-y-6",!e&&"lg:space-y-3 lg:w-full"),children:m.map((w,S)=>o.jsxs("li",{children:[o.jsx("div",{className:xe("px-3 h-[1.25rem]","mb-2",!e&&"lg:mb-1 lg:invisible"),children:o.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground/60 whitespace-nowrap",children:w.title})}),!e&&S>0&&o.jsx("div",{className:"hidden lg:block mb-2 border-t border-border"}),o.jsx("ul",{className:"space-y-1",children:w.items.map(k=>{const j=d({to:k.path}),N=k.icon,T=o.jsxs(o.Fragment,{children:[j&&o.jsx("div",{className:"absolute left-0 top-1/2 h-8 w-1 -translate-y-1/2 rounded-r-full bg-primary transition-opacity duration-300"}),o.jsxs("div",{className:xe("flex items-center transition-all duration-300",e?"gap-3":"gap-3 lg:gap-0"),children:[o.jsx(N,{className:xe("h-5 w-5 flex-shrink-0",j&&"text-primary"),strokeWidth:2,fill:"none"}),o.jsx("span",{className:xe("text-sm font-medium whitespace-nowrap transition-all duration-300",j&&"font-semibold",e?"opacity-100 max-w-[200px]":"opacity-100 max-w-[200px] lg:opacity-0 lg:max-w-0 lg:overflow-hidden"),children:k.label})]})]});return o.jsx("li",{className:"relative",children:o.jsxs(uDe,{children:[o.jsx(dDe,{asChild:!0,children:o.jsx(rv,{to:k.path,"data-tour":k.tourId,className:xe("relative flex items-center rounded-lg py-2 transition-all duration-300","hover:bg-accent hover:text-accent-foreground",j?"bg-accent text-foreground":"text-muted-foreground hover:text-foreground",e?"px-3":"px-3 lg:px-0 lg:justify-center lg:w-12 lg:mx-auto"),onClick:()=>s(!1),children:T})}),!e&&o.jsx(BY,{side:"right",className:"hidden lg:block",children:o.jsx("p",{children:k.label})})]})},k.path)})})]},w.title))})})})]}),r&&o.jsx("div",{className:"fixed inset-0 z-40 bg-black/50 lg:hidden",onClick:()=>s(!1)}),o.jsxs("div",{className:"flex flex-1 flex-col overflow-hidden",children:[o.jsxs("header",{className:"flex h-16 items-center justify-between border-b bg-card/80 backdrop-blur-md px-4 sticky top-0 z-10",children:[o.jsxs("div",{className:"flex items-center gap-4",children:[o.jsx("button",{onClick:()=>s(!r),className:"rounded-lg p-2 hover:bg-accent lg:hidden",children:o.jsx(fte,{className:"h-5 w-5"})}),o.jsx("button",{onClick:()=>n(!e),className:"hidden rounded-lg p-2 hover:bg-accent lg:block",title:e?"收起侧边栏":"展开侧边栏",children:o.jsx(wd,{className:xe("h-5 w-5 transition-transform",!e&&"rotate-180")})})]}),o.jsxs("div",{className:"flex items-center gap-2",children:[o.jsxs("button",{onClick:()=>a(!0),className:"relative hidden md:flex items-center w-64 h-9 pl-9 pr-16 bg-background/50 border rounded-md hover:bg-accent/50 transition-colors text-left",children:[o.jsx(ii,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),o.jsx("span",{className:"text-sm text-muted-foreground",children:"搜索..."}),o.jsxs(EX,{size:"sm",className:"absolute right-2 top-1/2 -translate-y-1/2",children:[o.jsx("span",{className:"text-xs",children:"⌘"}),"K"]})]}),o.jsx(vMe,{open:i,onOpenChange:a}),o.jsxs(ue,{variant:"ghost",size:"sm",onClick:()=>window.open("https://docs.mai-mai.org","_blank"),className:"gap-2",title:"查看麦麦文档",children:[o.jsx(mte,{className:"h-4 w-4"}),o.jsx("span",{className:"hidden sm:inline",children:"麦麦文档"})]}),o.jsx("button",{onClick:w=>{Dse(x==="dark"?"light":"dark",c,w)},className:"rounded-lg p-2 hover:bg-accent",title:x==="dark"?"切换到浅色模式":"切换到深色模式",children:x==="dark"?o.jsx(ik,{className:"h-5 w-5"}):o.jsx(ak,{className:"h-5 w-5"})}),o.jsx("div",{className:"h-6 w-px bg-border"}),o.jsxs(ue,{variant:"ghost",size:"sm",onClick:y,className:"gap-2",title:"登出系统",children:[o.jsx(_9,{className:"h-4 w-4"}),o.jsx("span",{className:"hidden sm:inline",children:"登出"})]})]})]}),o.jsxs(PRe,{children:[o.jsx(zRe,{asChild:!0,children:o.jsx("main",{className:"flex-1 overflow-hidden bg-background",children:t})}),o.jsxs(EY,{className:"w-64",children:[o.jsxs($a,{onClick:()=>h({to:"/"}),children:[o.jsx(L0,{className:"mr-2 h-4 w-4"}),"首页"]}),o.jsxs($a,{onClick:()=>h({to:"/settings"}),children:[o.jsx(Vc,{className:"mr-2 h-4 w-4"}),"系统设置"]}),o.jsxs($a,{onClick:()=>h({to:"/logs"}),children:[o.jsx(Fv,{className:"mr-2 h-4 w-4"}),"日志查看器"]}),o.jsx(b0,{}),o.jsxs(IRe,{children:[o.jsxs(CY,{children:[o.jsx(kI,{className:"mr-2 h-4 w-4"}),"切换主题"]}),o.jsxs(TY,{className:"w-48",children:[o.jsxs($a,{onClick:()=>c("light"),disabled:l==="light",children:[o.jsx(ik,{className:"mr-2 h-4 w-4"}),"浅色",l==="light"&&o.jsx(Ch,{children:"✓"})]}),o.jsxs($a,{onClick:()=>c("dark"),disabled:l==="dark",children:[o.jsx(ak,{className:"mr-2 h-4 w-4"}),"深色",l==="dark"&&o.jsx(Ch,{children:"✓"})]}),o.jsxs($a,{onClick:()=>c("system"),disabled:l==="system",children:[o.jsx(Vc,{className:"mr-2 h-4 w-4"}),"跟随系统",l==="system"&&o.jsx(Ch,{children:"✓"})]})]})]}),o.jsx(b0,{}),o.jsxs($a,{onClick:()=>window.location.reload(),children:[o.jsx(pte,{className:"mr-2 h-4 w-4"}),"刷新页面",o.jsx(Ch,{children:"⌘R"})]}),o.jsxs($a,{onClick:()=>a(!0),children:[o.jsx(ii,{className:"mr-2 h-4 w-4"}),"搜索",o.jsx(Ch,{children:"⌘K"})]}),o.jsx(b0,{}),o.jsxs($a,{onClick:()=>window.open("https://docs.mai-mai.org","_blank"),children:[o.jsx(w0,{className:"mr-2 h-4 w-4"}),"麦麦文档"]}),o.jsx(b0,{}),o.jsxs($a,{onClick:y,className:"text-destructive focus:text-destructive",children:[o.jsx(_9,{className:"mr-2 h-4 w-4"}),"登出系统"]})]})]})]})]})})}function fDe(t){const e=t.split(` -`).slice(1),n=[];for(const r of e){const s=r.trim();if(!s.startsWith("at "))continue;const i=s.match(/at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?$/);i?n.push({functionName:i[1]||"",fileName:i[2],lineNumber:i[3],columnNumber:i[4],raw:s}):n.push({functionName:"",fileName:"",lineNumber:"",columnNumber:"",raw:s})}return n}function mDe({error:t,errorInfo:e}){const[n,r]=b.useState(!0),[s,i]=b.useState(!1),[a,l]=b.useState(!1),c=t.stack?fDe(t.stack):[],d=async()=>{const h=` -Error: ${t.name} -Message: ${t.message} - -Stack Trace: -${t.stack||"No stack trace available"} - -Component Stack: -${e?.componentStack||"No component stack available"} - -URL: ${window.location.href} -User Agent: ${navigator.userAgent} -Time: ${new Date().toISOString()} - `.trim();try{await navigator.clipboard.writeText(h),l(!0),setTimeout(()=>l(!1),2e3)}catch(m){console.error("Failed to copy:",m)}};return o.jsxs("div",{className:"space-y-4",children:[o.jsxs(ba,{variant:"destructive",className:"border-red-500/50 bg-red-500/10",children:[o.jsx(Ga,{className:"h-4 w-4"}),o.jsxs(wa,{className:"font-mono text-sm",children:[o.jsxs("span",{className:"font-semibold",children:[t.name,":"]})," ",t.message]})]}),c.length>0&&o.jsxs(hj,{open:n,onOpenChange:r,children:[o.jsx(fj,{asChild:!0,children:o.jsxs(ue,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[o.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[o.jsx(gte,{className:"h-4 w-4"}),"Stack Trace (",c.length," frames)"]}),n?o.jsx(B0,{className:"h-4 w-4"}):o.jsx(Xc,{className:"h-4 w-4"})]})}),o.jsx(mj,{children:o.jsx(pn,{className:"h-[280px] rounded-md border bg-muted/30",children:o.jsx("div",{className:"p-3 space-y-1",children:c.map((h,m)=>o.jsx("div",{className:"font-mono text-xs p-2 rounded hover:bg-muted/50 transition-colors",children:o.jsxs("div",{className:"flex items-start gap-2",children:[o.jsxs("span",{className:"text-muted-foreground w-6 text-right flex-shrink-0",children:[m+1,"."]}),o.jsxs("div",{className:"flex-1 min-w-0",children:[o.jsx("span",{className:"text-primary font-medium",children:h.functionName}),h.fileName&&o.jsxs("div",{className:"text-muted-foreground mt-0.5 break-all",children:[h.fileName,h.lineNumber&&o.jsxs("span",{className:"text-yellow-600 dark:text-yellow-400",children:[":",h.lineNumber,":",h.columnNumber]})]})]})]})},m))})})})]}),e?.componentStack&&o.jsxs(hj,{open:s,onOpenChange:i,children:[o.jsx(fj,{asChild:!0,children:o.jsxs(ue,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[o.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[o.jsx(Ga,{className:"h-4 w-4"}),"Component Stack"]}),s?o.jsx(B0,{className:"h-4 w-4"}):o.jsx(Xc,{className:"h-4 w-4"})]})}),o.jsx(mj,{children:o.jsx(pn,{className:"h-[200px] rounded-md border bg-muted/30",children:o.jsx("pre",{className:"p-3 font-mono text-xs whitespace-pre-wrap text-muted-foreground",children:e.componentStack})})})]}),o.jsx(ue,{variant:"outline",size:"sm",onClick:d,className:"w-full",children:a?o.jsxs(o.Fragment,{children:[o.jsx(zo,{className:"mr-2 h-4 w-4 text-green-500"}),"已复制到剪贴板"]}):o.jsxs(o.Fragment,{children:[o.jsx(Iv,{className:"mr-2 h-4 w-4"}),"复制错误信息"]})})]})}function FY({error:t,errorInfo:e}){const n=()=>{window.location.href="/"},r=()=>{window.location.reload()};return o.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background p-4",children:o.jsxs(Lt,{className:"w-full max-w-2xl shadow-lg",children:[o.jsxs(En,{className:"text-center pb-2",children:[o.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30 mb-4",children:o.jsx(Ga,{className:"h-8 w-8 text-red-600 dark:text-red-400"})}),o.jsx(_n,{className:"text-2xl font-bold",children:"页面出现了问题"}),o.jsx(Wr,{className:"text-base mt-2",children:"应用程序遇到了意外错误。您可以尝试刷新页面或返回首页。"})]}),o.jsxs(Xn,{className:"space-y-4",children:[o.jsx(mDe,{error:t,errorInfo:e}),o.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 pt-2",children:[o.jsxs(ue,{onClick:r,className:"flex-1",children:[o.jsx(Qs,{className:"mr-2 h-4 w-4"}),"刷新页面"]}),o.jsxs(ue,{onClick:n,variant:"outline",className:"flex-1",children:[o.jsx(L0,{className:"mr-2 h-4 w-4"}),"返回首页"]})]}),o.jsx("p",{className:"text-xs text-center text-muted-foreground pt-2",children:"如果问题持续存在,请将错误信息复制并反馈给开发者"})]})]})})}class pDe extends b.Component{constructor(e){super(e),this.state={hasError:!1,error:null,errorInfo:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,n){console.error("ErrorBoundary caught an error:",e,n),this.setState({errorInfo:n})}handleReset=()=>{this.setState({hasError:!1,error:null,errorInfo:null})};render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback:o.jsx(FY,{error:this.state.error,errorInfo:this.state.errorInfo}):this.props.children}}function qY({error:t}){return o.jsx(FY,{error:t,errorInfo:null})}const Mg=SJ({component:()=>o.jsxs(o.Fragment,{children:[o.jsx(Hz,{}),!1]}),beforeLoad:()=>{if(window.location.pathname==="/"&&!AB())throw OJ({to:"/auth"})}}),gDe=ps({getParentRoute:()=>Mg,path:"/auth",component:pie}),xDe=ps({getParentRoute:()=>Mg,path:"/setup",component:Iie}),Ys=ps({getParentRoute:()=>Mg,id:"protected",component:()=>o.jsx(hDe,{children:o.jsx(Hz,{})}),errorComponent:({error:t})=>o.jsx(qY,{error:t})}),vDe=ps({getParentRoute:()=>Ys,path:"/",component:Mse}),yDe=ps({getParentRoute:()=>Ys,path:"/config/bot",component:z0e}),bDe=ps({getParentRoute:()=>Ys,path:"/config/modelProvider",component:n1e}),wDe=ps({getParentRoute:()=>Ys,path:"/config/model",component:Wve}),SDe=ps({getParentRoute:()=>Ys,path:"/config/adapter",component:Xve}),kDe=ps({getParentRoute:()=>Ys,path:"/resource/emoji",component:yOe}),ODe=ps({getParentRoute:()=>Ys,path:"/resource/expression",component:_Oe}),jDe=ps({getParentRoute:()=>Ys,path:"/resource/person",component:qOe}),NDe=ps({getParentRoute:()=>Ys,path:"/resource/knowledge-graph",component:ATe}),CDe=ps({getParentRoute:()=>Ys,path:"/logs",component:SAe}),TDe=ps({getParentRoute:()=>Ys,path:"/chat",component:pMe}),EDe=ps({getParentRoute:()=>Ys,path:"/plugins",component:UAe}),_De=ps({getParentRoute:()=>Ys,path:"/plugin-config",component:JAe}),ADe=ps({getParentRoute:()=>Ys,path:"/plugin-mirrors",component:eMe}),MDe=ps({getParentRoute:()=>Ys,path:"/settings",component:oie}),RDe=ps({getParentRoute:()=>Mg,path:"*",component:DB}),DDe=Mg.addChildren([gDe,xDe,Ys.addChildren([vDe,yDe,bDe,wDe,SDe,kDe,ODe,jDe,NDe,EDe,_De,ADe,CDe,TDe,MDe]),RDe]),PDe=kJ({routeTree:DDe,defaultNotFoundComponent:DB,defaultErrorComponent:({error:t})=>o.jsx(qY,{error:t})});function zDe({children:t,defaultTheme:e="system",storageKey:n="ui-theme",...r}){const[s,i]=b.useState(()=>localStorage.getItem(n)||e);b.useEffect(()=>{const l=window.document.documentElement;if(l.classList.remove("light","dark"),s==="system"){const c=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";l.classList.add(c);return}l.classList.add(s)},[s]),b.useEffect(()=>{const l=localStorage.getItem("accent-color");if(l){const c=document.documentElement,h={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[l];h&&(c.style.setProperty("--primary",h.hsl),h.gradient?(c.style.setProperty("--primary-gradient",h.gradient),c.classList.add("has-gradient")):(c.style.removeProperty("--primary-gradient"),c.classList.remove("has-gradient")))}},[]);const a={theme:s,setTheme:l=>{localStorage.setItem(n,l),i(l)}};return o.jsx(tB.Provider,{...r,value:a,children:t})}function IDe({children:t,defaultEnabled:e=!0,defaultWavesEnabled:n=!0,storageKey:r="enable-animations",wavesStorageKey:s="enable-waves-background"}){const[i,a]=b.useState(()=>{const h=localStorage.getItem(r);return h!==null?h==="true":e}),[l,c]=b.useState(()=>{const h=localStorage.getItem(s);return h!==null?h==="true":n});b.useEffect(()=>{const h=document.documentElement;i?h.classList.remove("no-animations"):h.classList.add("no-animations"),localStorage.setItem(r,String(i))},[i,r]),b.useEffect(()=>{localStorage.setItem(s,String(l))},[l,s]);const d={enableAnimations:i,setEnableAnimations:a,enableWavesBackground:l,setEnableWavesBackground:c};return o.jsx(nB.Provider,{value:d,children:t})}var P7="ToastProvider",[z7,LDe,BDe]=Qy("Toast"),[$Y]=Da("Toast",[BDe]),[FDe,dw]=$Y(P7),HY=t=>{const{__scopeToast:e,label:n="Notification",duration:r=5e3,swipeDirection:s="right",swipeThreshold:i=50,children:a}=t,[l,c]=b.useState(null),[d,h]=b.useState(0),m=b.useRef(!1),g=b.useRef(!1);return n.trim()||console.error(`Invalid prop \`label\` supplied to \`${P7}\`. Expected non-empty \`string\`.`),o.jsx(z7.Provider,{scope:e,children:o.jsx(FDe,{scope:e,label:n,duration:r,swipeDirection:s,swipeThreshold:i,toastCount:d,viewport:l,onViewportChange:c,onToastAdd:b.useCallback(()=>h(x=>x+1),[]),onToastRemove:b.useCallback(()=>h(x=>x-1),[]),isFocusedToastEscapeKeyDownRef:m,isClosePausedRef:g,children:a})})};HY.displayName=P7;var QY="ToastViewport",qDe=["F8"],vj="toast.viewportPause",yj="toast.viewportResume",VY=b.forwardRef((t,e)=>{const{__scopeToast:n,hotkey:r=qDe,label:s="Notifications ({hotkey})",...i}=t,a=dw(QY,n),l=LDe(n),c=b.useRef(null),d=b.useRef(null),h=b.useRef(null),m=b.useRef(null),g=er(e,m,a.onViewportChange),x=r.join("+").replace(/Key/g,"").replace(/Digit/g,""),y=a.toastCount>0;b.useEffect(()=>{const S=k=>{r.length!==0&&r.every(N=>k[N]||k.code===N)&&m.current?.focus()};return document.addEventListener("keydown",S),()=>document.removeEventListener("keydown",S)},[r]),b.useEffect(()=>{const S=c.current,k=m.current;if(y&&S&&k){const j=()=>{if(!a.isClosePausedRef.current){const _=new CustomEvent(vj);k.dispatchEvent(_),a.isClosePausedRef.current=!0}},N=()=>{if(a.isClosePausedRef.current){const _=new CustomEvent(yj);k.dispatchEvent(_),a.isClosePausedRef.current=!1}},T=_=>{!S.contains(_.relatedTarget)&&N()},E=()=>{S.contains(document.activeElement)||N()};return S.addEventListener("focusin",j),S.addEventListener("focusout",T),S.addEventListener("pointermove",j),S.addEventListener("pointerleave",E),window.addEventListener("blur",j),window.addEventListener("focus",N),()=>{S.removeEventListener("focusin",j),S.removeEventListener("focusout",T),S.removeEventListener("pointermove",j),S.removeEventListener("pointerleave",E),window.removeEventListener("blur",j),window.removeEventListener("focus",N)}}},[y,a.isClosePausedRef]);const w=b.useCallback(({tabbingDirection:S})=>{const j=l().map(N=>{const T=N.ref.current,E=[T,...ePe(T)];return S==="forwards"?E:E.reverse()});return(S==="forwards"?j.reverse():j).flat()},[l]);return b.useEffect(()=>{const S=m.current;if(S){const k=j=>{const N=j.altKey||j.ctrlKey||j.metaKey;if(j.key==="Tab"&&!N){const E=document.activeElement,_=j.shiftKey;if(j.target===S&&_){d.current?.focus();return}const q=w({tabbingDirection:_?"backwards":"forwards"}),B=q.findIndex(H=>H===E);rk(q.slice(B+1))?j.preventDefault():_?d.current?.focus():h.current?.focus()}};return S.addEventListener("keydown",k),()=>S.removeEventListener("keydown",k)}},[l,w]),o.jsxs(Lee,{ref:c,role:"region","aria-label":s.replace("{hotkey}",x),tabIndex:-1,style:{pointerEvents:y?void 0:"none"},children:[y&&o.jsx(bj,{ref:d,onFocusFromOutsideViewport:()=>{const S=w({tabbingDirection:"forwards"});rk(S)}}),o.jsx(z7.Slot,{scope:n,children:o.jsx(Sn.ol,{tabIndex:-1,...i,ref:g})}),y&&o.jsx(bj,{ref:h,onFocusFromOutsideViewport:()=>{const S=w({tabbingDirection:"backwards"});rk(S)}})]})});VY.displayName=QY;var UY="ToastFocusProxy",bj=b.forwardRef((t,e)=>{const{__scopeToast:n,onFocusFromOutsideViewport:r,...s}=t,i=dw(UY,n);return o.jsx(SI,{tabIndex:0,...s,ref:e,style:{position:"fixed"},onFocus:a=>{const l=a.relatedTarget;!i.viewport?.contains(l)&&r()}})});bj.displayName=UY;var Rg="Toast",$De="toast.swipeStart",HDe="toast.swipeMove",QDe="toast.swipeCancel",VDe="toast.swipeEnd",WY=b.forwardRef((t,e)=>{const{forceMount:n,open:r,defaultOpen:s,onOpenChange:i,...a}=t,[l,c]=Kl({prop:r,defaultProp:s??!0,onChange:i,caller:Rg});return o.jsx(oi,{present:n||l,children:o.jsx(GDe,{open:l,...a,ref:e,onClose:()=>c(!1),onPause:Rs(t.onPause),onResume:Rs(t.onResume),onSwipeStart:nt(t.onSwipeStart,d=>{d.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:nt(t.onSwipeMove,d=>{const{x:h,y:m}=d.detail.delta;d.currentTarget.setAttribute("data-swipe","move"),d.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${h}px`),d.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${m}px`)}),onSwipeCancel:nt(t.onSwipeCancel,d=>{d.currentTarget.setAttribute("data-swipe","cancel"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),d.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),d.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:nt(t.onSwipeEnd,d=>{const{x:h,y:m}=d.detail.delta;d.currentTarget.setAttribute("data-swipe","end"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),d.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),d.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${h}px`),d.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${m}px`),c(!1)})})})});WY.displayName=Rg;var[UDe,WDe]=$Y(Rg,{onClose(){}}),GDe=b.forwardRef((t,e)=>{const{__scopeToast:n,type:r="foreground",duration:s,open:i,onClose:a,onEscapeKeyDown:l,onPause:c,onResume:d,onSwipeStart:h,onSwipeMove:m,onSwipeCancel:g,onSwipeEnd:x,...y}=t,w=dw(Rg,n),[S,k]=b.useState(null),j=er(e,I=>k(I)),N=b.useRef(null),T=b.useRef(null),E=s||w.duration,_=b.useRef(0),A=b.useRef(E),D=b.useRef(0),{onToastAdd:q,onToastRemove:B}=w,H=Rs(()=>{S?.contains(document.activeElement)&&w.viewport?.focus(),a()}),W=b.useCallback(I=>{!I||I===1/0||(window.clearTimeout(D.current),_.current=new Date().getTime(),D.current=window.setTimeout(H,I))},[H]);b.useEffect(()=>{const I=w.viewport;if(I){const V=()=>{W(A.current),d?.()},L=()=>{const $=new Date().getTime()-_.current;A.current=A.current-$,window.clearTimeout(D.current),c?.()};return I.addEventListener(vj,L),I.addEventListener(yj,V),()=>{I.removeEventListener(vj,L),I.removeEventListener(yj,V)}}},[w.viewport,E,c,d,W]),b.useEffect(()=>{i&&!w.isClosePausedRef.current&&W(E)},[i,E,w.isClosePausedRef,W]),b.useEffect(()=>(q(),()=>B()),[q,B]);const ee=b.useMemo(()=>S?eK(S):null,[S]);return w.viewport?o.jsxs(o.Fragment,{children:[ee&&o.jsx(XDe,{__scopeToast:n,role:"status","aria-live":r==="foreground"?"assertive":"polite",children:ee}),o.jsx(UDe,{scope:n,onClose:H,children:ya.createPortal(o.jsx(z7.ItemSlot,{scope:n,children:o.jsx(Bee,{asChild:!0,onEscapeKeyDown:nt(l,()=>{w.isFocusedToastEscapeKeyDownRef.current||H(),w.isFocusedToastEscapeKeyDownRef.current=!1}),children:o.jsx(Sn.li,{tabIndex:0,"data-state":i?"open":"closed","data-swipe-direction":w.swipeDirection,...y,ref:j,style:{userSelect:"none",touchAction:"none",...t.style},onKeyDown:nt(t.onKeyDown,I=>{I.key==="Escape"&&(l?.(I.nativeEvent),I.nativeEvent.defaultPrevented||(w.isFocusedToastEscapeKeyDownRef.current=!0,H()))}),onPointerDown:nt(t.onPointerDown,I=>{I.button===0&&(N.current={x:I.clientX,y:I.clientY})}),onPointerMove:nt(t.onPointerMove,I=>{if(!N.current)return;const V=I.clientX-N.current.x,L=I.clientY-N.current.y,$=!!T.current,K=["left","right"].includes(w.swipeDirection),Y=["left","up"].includes(w.swipeDirection)?Math.min:Math.max,R=K?Y(0,V):0,ie=K?0:Y(0,L),X=I.pointerType==="touch"?10:2,z={x:R,y:ie},U={originalEvent:I,delta:z};$?(T.current=z,nv(HDe,m,U,{discrete:!1})):$z(z,w.swipeDirection,X)?(T.current=z,nv($De,h,U,{discrete:!1}),I.target.setPointerCapture(I.pointerId)):(Math.abs(V)>X||Math.abs(L)>X)&&(N.current=null)}),onPointerUp:nt(t.onPointerUp,I=>{const V=T.current,L=I.target;if(L.hasPointerCapture(I.pointerId)&&L.releasePointerCapture(I.pointerId),T.current=null,N.current=null,V){const $=I.currentTarget,K={originalEvent:I,delta:V};$z(V,w.swipeDirection,w.swipeThreshold)?nv(VDe,x,K,{discrete:!0}):nv(QDe,g,K,{discrete:!0}),$.addEventListener("click",Y=>Y.preventDefault(),{once:!0})}})})})}),w.viewport)})]}):null}),XDe=t=>{const{__scopeToast:e,children:n,...r}=t,s=dw(Rg,e),[i,a]=b.useState(!1),[l,c]=b.useState(!1);return ZDe(()=>a(!0)),b.useEffect(()=>{const d=window.setTimeout(()=>c(!0),1e3);return()=>window.clearTimeout(d)},[]),l?null:o.jsx(Xy,{asChild:!0,children:o.jsx(SI,{...r,children:i&&o.jsxs(o.Fragment,{children:[s.label," ",n]})})})},YDe="ToastTitle",GY=b.forwardRef((t,e)=>{const{__scopeToast:n,...r}=t;return o.jsx(Sn.div,{...r,ref:e})});GY.displayName=YDe;var KDe="ToastDescription",XY=b.forwardRef((t,e)=>{const{__scopeToast:n,...r}=t;return o.jsx(Sn.div,{...r,ref:e})});XY.displayName=KDe;var YY="ToastAction",KY=b.forwardRef((t,e)=>{const{altText:n,...r}=t;return n.trim()?o.jsx(JY,{altText:n,asChild:!0,children:o.jsx(I7,{...r,ref:e})}):(console.error(`Invalid prop \`altText\` supplied to \`${YY}\`. Expected non-empty \`string\`.`),null)});KY.displayName=YY;var ZY="ToastClose",I7=b.forwardRef((t,e)=>{const{__scopeToast:n,...r}=t,s=WDe(ZY,n);return o.jsx(JY,{asChild:!0,children:o.jsx(Sn.button,{type:"button",...r,ref:e,onClick:nt(t.onClick,s.onClose)})})});I7.displayName=ZY;var JY=b.forwardRef((t,e)=>{const{__scopeToast:n,altText:r,...s}=t;return o.jsx(Sn.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":r||void 0,...s,ref:e})});function eK(t){const e=[];return Array.from(t.childNodes).forEach(r=>{if(r.nodeType===r.TEXT_NODE&&r.textContent&&e.push(r.textContent),JDe(r)){const s=r.ariaHidden||r.hidden||r.style.display==="none",i=r.dataset.radixToastAnnounceExclude==="";if(!s)if(i){const a=r.dataset.radixToastAnnounceAlt;a&&e.push(a)}else e.push(...eK(r))}}),e}function nv(t,e,n,{discrete:r}){const s=n.originalEvent.currentTarget,i=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:n});e&&s.addEventListener(t,e,{once:!0}),r?wI(s,i):s.dispatchEvent(i)}var $z=(t,e,n=0)=>{const r=Math.abs(t.x),s=Math.abs(t.y),i=r>s;return e==="left"||e==="right"?i&&r>n:!i&&s>n};function ZDe(t=()=>{}){const e=Rs(t);Wh(()=>{let n=0,r=0;return n=window.requestAnimationFrame(()=>r=window.requestAnimationFrame(e)),()=>{window.cancelAnimationFrame(n),window.cancelAnimationFrame(r)}},[e])}function JDe(t){return t.nodeType===t.ELEMENT_NODE}function ePe(t){const e=[],n=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const s=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||s?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)e.push(n.currentNode);return e}function rk(t){const e=document.activeElement;return t.some(n=>n===e?!0:(n.focus(),document.activeElement!==e))}var tPe=HY,tK=VY,nK=WY,rK=GY,sK=XY,iK=KY,aK=I7;const nPe=tPe,oK=b.forwardRef(({className:t,...e},n)=>o.jsx(tK,{ref:n,className:xe("fixed bottom-0 right-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:max-w-[420px] gap-2",t),...e}));oK.displayName=tK.displayName;const rPe=kf("group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-slide-in-from-right data-[state=open]:animate-fade-in data-[state=closed]:animate-slide-out-to-right data-[state=closed]:animate-fade-out data-[swipe=end]:animate-slide-out-to-right",{variants:{variant:{default:"border bg-primary/5 text-foreground backdrop-blur-sm",destructive:"destructive group border-destructive bg-destructive/10 text-destructive-foreground backdrop-blur-sm"}},defaultVariants:{variant:"default"}}),lK=b.forwardRef(({className:t,variant:e,...n},r)=>o.jsx(nK,{ref:r,className:xe(rPe({variant:e}),t),...n}));lK.displayName=nK.displayName;const sPe=b.forwardRef(({className:t,...e},n)=>o.jsx(iK,{ref:n,className:xe("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",t),...e}));sPe.displayName=iK.displayName;const cK=b.forwardRef(({className:t,...e},n)=>o.jsx(aK,{ref:n,className:xe("absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",t),"toast-close":"",...e,children:o.jsx(Pp,{className:"h-4 w-4"})}));cK.displayName=aK.displayName;const uK=b.forwardRef(({className:t,...e},n)=>o.jsx(rK,{ref:n,className:xe("text-sm font-semibold [&+div]:text-xs",t),...e}));uK.displayName=rK.displayName;const dK=b.forwardRef(({className:t,...e},n)=>o.jsx(sK,{ref:n,className:xe("text-sm opacity-90",t),...e}));dK.displayName=sK.displayName;function iPe(){const{toasts:t}=Lr();return o.jsxs(nPe,{children:[t.map(function({id:e,title:n,description:r,action:s,...i}){return o.jsxs(lK,{...i,children:[o.jsxs("div",{className:"grid gap-1",children:[n&&o.jsx(uK,{children:n}),r&&o.jsx(dK,{children:r})]}),s,o.jsx(cK,{})]},e)}),o.jsx(oK,{})]})}wte.createRoot(document.getElementById("root")).render(o.jsx(b.StrictMode,{children:o.jsx(pDe,{children:o.jsx(zDe,{defaultTheme:"system",children:o.jsx(IDe,{children:o.jsxs(Npe,{children:[o.jsx(jJ,{router:PDe}),o.jsx(e1e,{}),o.jsx(iPe,{})]})})})})})); diff --git a/webui/dist/assets/index-DuV8F13p.js b/webui/dist/assets/index-DuV8F13p.js new file mode 100644 index 00000000..3dd4ef1e --- /dev/null +++ b/webui/dist/assets/index-DuV8F13p.js @@ -0,0 +1,52 @@ +import{r as u,j as e,L as Kc,e as It,b as xy,f as fy,g as py,h as gy,k as lt,l as jy,m as vy,O as vp,n as yy}from"./router-CWhjJi2n.js";import{a as Ny,b as by,g as wy}from"./react-vendor-Dtc2IqVY.js";import{I as _y,c as Sy,J as ai,K as qc,L as wu,M as Cy,N as er,O as sr,P as ky,n as _u}from"./utils-CCeOswSm.js";import{L as yp,T as Np,C as bp,R as Ty,a as wp,V as Ey,b as zy,S as _p,c as My,d as Sp,I as Ay,e as Cp,f as Dy,g as kp,h as Oy,i as Ry,j as Ly,O as Tp,P as Uy,k as Ep,l as zp,D as Mp,A as Ap,m as Dp,n as By,o as Hy,p as Op,q as qy,r as Rp,s as Gy,t as Vy,u as Fy,v as Qy,w as $y,x as Lp,y as Up,F as Bp,z as Hp,B as qp,E as Yy,G as Gp,H as Vp,J as Fp,K as Qp,M as $p,N as Yp,Q as Xp,U as Xy,W as Ky,X as Zy}from"./radix-extra-Cw1azsjZ.js";import{aj as Iy,ak as Jy,al as Py,am as Wy,an as Gc,ao as Vc,ap as tr,aq as eN,ar as Su,as as Fc,at as sN,au as tN,av as aN}from"./charts-Dhri-zxi.js";import{S as lN,H as Kp,O as Zp,o as nN,C as Ip,p as Jp,T as Pp,D as Wp,R as iN,q as rN,I as eg,J as cN,K as sg,L as tg,M as oN,N as ag,V as dN,Q as lg,U as ng,X as uN,Y as mN,Z as ig,_ as hN,$ as xN,a0 as rg,a1 as fN,a2 as pN,a3 as cg,a4 as gN,a5 as jN,a6 as vN,a7 as og,a8 as dg,a9 as ug,aa as mg,ab as hg,ac as xg,ad as yN}from"./radix-core-BlBHu_Lw.js";import{R as ft,P as Nr,C as xa,a as Aa,Z as ln,b as Wc,F as Ma,c as NN,S as Rl,A as bN,D as wN,d as eo,e as Wn,M as si,T as _N,X as li,f as fg,g as SN,I as Xt,h as ya,i as ha,j as so,E as mr,k as Zt,l as pg,H as CN,m as ns,n as nl,U as hr,o as Ou,p as Ru,L as $f,K as gg,q as ro,r as kN,s as dr,t as vt,u as TN,B as ir,v as to,w as Qu,x as EN,y as zN,z as St,G as xr,J as ti,N as Ll,O as fr,Q as MN,V as AN,W as br,Y as gt,_ as ao,$ as nn,a0 as wr,a1 as cn,a2 as il,a3 as _r,a4 as $u,a5 as DN,a6 as ON,a7 as RN,a8 as rn,a9 as LN,aa as Lu,ab as pr,ac as UN,ad as BN,ae as Uu,af as HN,ag as jg,ah as Yf,ai as qN,aj as GN,ak as VN,al as Ol,am as Cu,an as Xf,ao as FN,ap as QN,aq as $N,ar as YN,as as XN,at as vg,au as yg,av as Ng,aw as KN,ax as ZN,ay as Kf,az as IN,aA as JN,aB as Zf,aC as PN,aD as WN}from"./icons-Bw5y5Hqz.js";import{S as eb,p as sb,j as tb,a as ab,E as If,R as lb,o as nb}from"./codemirror-BHeANvwm.js";import{_ as Lt,c as ib,g as bg,D as rb}from"./misc-Ii-X5qWA.js";import{u as cb,a as Jf,D as ob,c as db,S as ub,h as mb,b as hb,s as xb,K as fb,P as pb,d as gb,C as jb}from"./dnd-Dyi3CnuX.js";import{D as vb,U as yb}from"./uppy-DSH7n_-V.js";import{M as Nb,r as bb,a as wb,b as _b}from"./markdown-A1ShuLvG.js";import{r as Sb,H as lo,P as no,u as Cb,a as kb,R as Tb,B as Eb,b as zb,C as Mb,M as Ab,c as Db}from"./reactflow-B3n3_Vkw.js";(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const h of document.querySelectorAll('link[rel="modulepreload"]'))d(h);new MutationObserver(h=>{for(const x of h)if(x.type==="childList")for(const f of x.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&d(f)}).observe(document,{childList:!0,subtree:!0});function c(h){const x={};return h.integrity&&(x.integrity=h.integrity),h.referrerPolicy&&(x.referrerPolicy=h.referrerPolicy),h.crossOrigin==="use-credentials"?x.credentials="include":h.crossOrigin==="anonymous"?x.credentials="omit":x.credentials="same-origin",x}function d(h){if(h.ep)return;h.ep=!0;const x=c(h);fetch(h.href,x)}})();var ku={exports:{}},ar={},Tu={exports:{}},Eu={};var Pf;function Ob(){return Pf||(Pf=1,(function(n){function r(y,q){var H=y.length;y.push(q);e:for(;0>>1,S=y[ne];if(0>>1;neh(Q,H))oeh(ge,Q)?(y[ne]=ge,y[oe]=H,ne=oe):(y[ne]=Q,y[he]=H,ne=he);else if(oeh(ge,H))y[ne]=ge,y[oe]=H,ne=oe;else break e}}return q}function h(y,q){var H=y.sortIndex-q.sortIndex;return H!==0?H:y.id-q.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var x=performance;n.unstable_now=function(){return x.now()}}else{var f=Date,j=f.now();n.unstable_now=function(){return f.now()-j}}var g=[],_=[],v=1,k=null,z=3,T=!1,L=!1,K=!1,U=!1,R=typeof setTimeout=="function"?setTimeout:null,ee=typeof clearTimeout=="function"?clearTimeout:null,V=typeof setImmediate<"u"?setImmediate:null;function E(y){for(var q=c(_);q!==null;){if(q.callback===null)d(_);else if(q.startTime<=y)d(_),q.sortIndex=q.expirationTime,r(g,q);else break;q=c(_)}}function B(y){if(K=!1,E(y),!L)if(c(g)!==null)L=!0,X||(X=!0,ye());else{var q=c(_);q!==null&&Ne(B,q.startTime-y)}}var X=!1,w=-1,D=5,te=-1;function xe(){return U?!0:!(n.unstable_now()-tey&&xe());){var ne=k.callback;if(typeof ne=="function"){k.callback=null,z=k.priorityLevel;var S=ne(k.expirationTime<=y);if(y=n.unstable_now(),typeof S=="function"){k.callback=S,E(y),q=!0;break s}k===c(g)&&d(g),E(y)}else d(g);k=c(g)}if(k!==null)q=!0;else{var me=c(_);me!==null&&Ne(B,me.startTime-y),q=!1}}break e}finally{k=null,z=H,T=!1}q=void 0}}finally{q?ye():X=!1}}}var ye;if(typeof V=="function")ye=function(){V(be)};else if(typeof MessageChannel<"u"){var ve=new MessageChannel,pe=ve.port2;ve.port1.onmessage=be,ye=function(){pe.postMessage(null)}}else ye=function(){R(be,0)};function Ne(y,q){w=R(function(){y(n.unstable_now())},q)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(y){y.callback=null},n.unstable_forceFrameRate=function(y){0>y||125ne?(y.sortIndex=H,r(_,y),c(g)===null&&y===c(_)&&(K?(ee(w),w=-1):K=!0,Ne(B,H-ne))):(y.sortIndex=S,r(g,y),L||T||(L=!0,X||(X=!0,ye()))),y},n.unstable_shouldYield=xe,n.unstable_wrapCallback=function(y){var q=z;return function(){var H=z;z=q;try{return y.apply(this,arguments)}finally{z=H}}}})(Eu)),Eu}var Wf;function Rb(){return Wf||(Wf=1,Tu.exports=Ob()),Tu.exports}var ep;function Lb(){if(ep)return ar;ep=1;var n=Rb(),r=Ny(),c=by();function d(s){var t="https://react.dev/errors/"+s;if(1S||(s.current=ne[S],ne[S]=null,S--)}function Q(s,t){S++,ne[S]=s.current,s.current=t}var oe=me(null),ge=me(null),le=me(null),O=me(null);function F(s,t){switch(Q(le,t),Q(ge,s),Q(oe,null),t.nodeType){case 9:case 11:s=(s=t.documentElement)&&(s=s.namespaceURI)?xf(s):0;break;default:if(s=t.tagName,t=t.namespaceURI)t=xf(t),s=ff(t,s);else switch(s){case"svg":s=1;break;case"math":s=2;break;default:s=0}}he(oe),Q(oe,s)}function A(){he(oe),he(ge),he(le)}function W(s){s.memoizedState!==null&&Q(O,s);var t=oe.current,a=ff(t,s.type);t!==a&&(Q(ge,s),Q(oe,a))}function _e(s){ge.current===s&&(he(oe),he(ge)),O.current===s&&(he(O),Ii._currentValue=H)}var Me,ss;function Ie(s){if(Me===void 0)try{throw Error()}catch(a){var t=a.stack.trim().match(/\n( *(at )?)/);Me=t&&t[1]||"",ss=-1)":-1i||C[l]!==I[i]){var ae=` +`+C[l].replace(" at new "," at ");return s.displayName&&ae.includes("")&&(ae=ae.replace("",s.displayName)),ae}while(1<=l&&0<=i);break}}}finally{Rs=!1,Error.prepareStackTrace=a}return(a=s?s.displayName||s.name:"")?Ie(a):""}function ie(s,t){switch(s.tag){case 26:case 27:case 5:return Ie(s.type);case 16:return Ie("Lazy");case 13:return s.child!==t&&t!==null?Ie("Suspense Fallback"):Ie("Suspense");case 19:return Ie("SuspenseList");case 0:case 15:return qs(s.type,!1);case 11:return qs(s.type.render,!1);case 1:return qs(s.type,!0);case 31:return Ie("Activity");default:return""}}function we(s){try{var t="",a=null;do t+=ie(s,a),a=s,s=s.return;while(s);return t}catch(l){return` +Error generating stack: `+l.message+` +`+l.stack}}var Ke=Object.prototype.hasOwnProperty,Le=n.unstable_scheduleCallback,st=n.unstable_cancelCallback,Jt=n.unstable_shouldYield,bt=n.unstable_requestPaint,Je=n.unstable_now,Ue=n.unstable_getCurrentPriorityLevel,jt=n.unstable_ImmediatePriority,nt=n.unstable_UserBlockingPriority,Ct=n.unstable_NormalPriority,kt=n.unstable_LowPriority,rl=n.unstable_IdlePriority,cl=n.log,ol=n.unstable_setDisableYieldValue,Se=null,Re=null;function it(s){if(typeof cl=="function"&&ol(s),Re&&typeof Re.setStrictMode=="function")try{Re.setStrictMode(Se,s)}catch{}}var ot=Math.clz32?Math.clz32:dt,di=Math.log,on=Math.LN2;function dt(s){return s>>>=0,s===0?32:31-(di(s)/on|0)|0}var Pt=256,Wt=262144,La=4194304;function Ut(s){var t=s&42;if(t!==0)return t;switch(s&-s){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:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return s&261888;case 262144:case 524288:case 1048576:case 2097152:return s&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return s&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return s}}function Ua(s,t,a){var l=s.pendingLanes;if(l===0)return 0;var i=0,o=s.suspendedLanes,m=s.pingedLanes;s=s.warmLanes;var p=l&134217727;return p!==0?(l=p&~o,l!==0?i=Ut(l):(m&=p,m!==0?i=Ut(m):a||(a=p&~s,a!==0&&(i=Ut(a))))):(p=l&~o,p!==0?i=Ut(p):m!==0?i=Ut(m):a||(a=l&~s,a!==0&&(i=Ut(a)))),i===0?0:t!==0&&t!==i&&(t&o)===0&&(o=i&-i,a=t&-t,o>=a||o===32&&(a&4194048)!==0)?t:i}function ba(s,t){return(s.pendingLanes&~(s.suspendedLanes&~s.pingedLanes)&t)===0}function P(s,t){switch(s){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32: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 t+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 je(){var s=La;return La<<=1,(La&62914560)===0&&(La=4194304),s}function Ae(s){for(var t=[],a=0;31>a;a++)t.push(s);return t}function tt(s,t){s.pendingLanes|=t,t!==268435456&&(s.suspendedLanes=0,s.pingedLanes=0,s.warmLanes=0)}function Bt(s,t,a,l,i,o){var m=s.pendingLanes;s.pendingLanes=a,s.suspendedLanes=0,s.pingedLanes=0,s.warmLanes=0,s.expiredLanes&=a,s.entangledLanes&=a,s.errorRecoveryDisabledLanes&=a,s.shellSuspendCounter=0;var p=s.entanglements,C=s.expirationTimes,I=s.hiddenUpdates;for(a=m&~a;0"u")return null;try{return s.activeElement||s.body}catch{return s.body}}var cj=/[\n"\\]/g;function sa(s){return s.replace(cj,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function go(s,t,a,l,i,o,m,p){s.name="",m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"?s.type=m:s.removeAttribute("type"),t!=null?m==="number"?(t===0&&s.value===""||s.value!=t)&&(s.value=""+ea(t)):s.value!==""+ea(t)&&(s.value=""+ea(t)):m!=="submit"&&m!=="reset"||s.removeAttribute("value"),t!=null?jo(s,m,ea(t)):a!=null?jo(s,m,ea(a)):l!=null&&s.removeAttribute("value"),i==null&&o!=null&&(s.defaultChecked=!!o),i!=null&&(s.checked=i&&typeof i!="function"&&typeof i!="symbol"),p!=null&&typeof p!="function"&&typeof p!="symbol"&&typeof p!="boolean"?s.name=""+ea(p):s.removeAttribute("name")}function rm(s,t,a,l,i,o,m,p){if(o!=null&&typeof o!="function"&&typeof o!="symbol"&&typeof o!="boolean"&&(s.type=o),t!=null||a!=null){if(!(o!=="submit"&&o!=="reset"||t!=null)){po(s);return}a=a!=null?""+ea(a):"",t=t!=null?""+ea(t):a,p||t===s.value||(s.value=t),s.defaultValue=t}l=l??i,l=typeof l!="function"&&typeof l!="symbol"&&!!l,s.checked=p?s.checked:!!l,s.defaultChecked=!!l,m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"&&(s.name=m),po(s)}function jo(s,t,a){t==="number"&&zr(s.ownerDocument)===s||s.defaultValue===""+a||(s.defaultValue=""+a)}function pn(s,t,a,l){if(s=s.options,t){t={};for(var i=0;i"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),wo=!1;if(Ga)try{var xi={};Object.defineProperty(xi,"passive",{get:function(){wo=!0}}),window.addEventListener("test",xi,xi),window.removeEventListener("test",xi,xi)}catch{wo=!1}var ul=null,_o=null,Ar=null;function xm(){if(Ar)return Ar;var s,t=_o,a=t.length,l,i="value"in ul?ul.value:ul.textContent,o=i.length;for(s=0;s=gi),ym=" ",Nm=!1;function bm(s,t){switch(s){case"keyup":return Lj.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function wm(s){return s=s.detail,typeof s=="object"&&"data"in s?s.data:null}var yn=!1;function Bj(s,t){switch(s){case"compositionend":return wm(t);case"keypress":return t.which!==32?null:(Nm=!0,ym);case"textInput":return s=t.data,s===ym&&Nm?null:s;default:return null}}function Hj(s,t){if(yn)return s==="compositionend"||!Eo&&bm(s,t)?(s=xm(),Ar=_o=ul=null,yn=!1,s):null;switch(s){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:a,offset:t-s};s=l}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=Mm(a)}}function Dm(s,t){return s&&t?s===t?!0:s&&s.nodeType===3?!1:t&&t.nodeType===3?Dm(s,t.parentNode):"contains"in s?s.contains(t):s.compareDocumentPosition?!!(s.compareDocumentPosition(t)&16):!1:!1}function Om(s){s=s!=null&&s.ownerDocument!=null&&s.ownerDocument.defaultView!=null?s.ownerDocument.defaultView:window;for(var t=zr(s.document);t instanceof s.HTMLIFrameElement;){try{var a=typeof t.contentWindow.location.href=="string"}catch{a=!1}if(a)s=t.contentWindow;else break;t=zr(s.document)}return t}function Ao(s){var t=s&&s.nodeName&&s.nodeName.toLowerCase();return t&&(t==="input"&&(s.type==="text"||s.type==="search"||s.type==="tel"||s.type==="url"||s.type==="password")||t==="textarea"||s.contentEditable==="true")}var Xj=Ga&&"documentMode"in document&&11>=document.documentMode,Nn=null,Do=null,Ni=null,Oo=!1;function Rm(s,t,a){var l=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;Oo||Nn==null||Nn!==zr(l)||(l=Nn,"selectionStart"in l&&Ao(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),Ni&&yi(Ni,l)||(Ni=l,l=Sc(Do,"onSelect"),0>=m,i-=m,Sa=1<<32-ot(t)+i|a<Pe?(rs=Te,Te=null):rs=Te.sibling;var ys=J(G,Te,Z[Pe],re);if(ys===null){Te===null&&(Te=rs);break}s&&Te&&ys.alternate===null&&t(G,Te),M=o(ys,M,Pe),vs===null?Ee=ys:vs.sibling=ys,vs=ys,Te=rs}if(Pe===Z.length)return a(G,Te),fs&&Fa(G,Pe),Ee;if(Te===null){for(;PePe?(rs=Te,Te=null):rs=Te.sibling;var Dl=J(G,Te,ys.value,re);if(Dl===null){Te===null&&(Te=rs);break}s&&Te&&Dl.alternate===null&&t(G,Te),M=o(Dl,M,Pe),vs===null?Ee=Dl:vs.sibling=Dl,vs=Dl,Te=rs}if(ys.done)return a(G,Te),fs&&Fa(G,Pe),Ee;if(Te===null){for(;!ys.done;Pe++,ys=Z.next())ys=de(G,ys.value,re),ys!==null&&(M=o(ys,M,Pe),vs===null?Ee=ys:vs.sibling=ys,vs=ys);return fs&&Fa(G,Pe),Ee}for(Te=l(Te);!ys.done;Pe++,ys=Z.next())ys=se(Te,G,Pe,ys.value,re),ys!==null&&(s&&ys.alternate!==null&&Te.delete(ys.key===null?Pe:ys.key),M=o(ys,M,Pe),vs===null?Ee=ys:vs.sibling=ys,vs=ys);return s&&Te.forEach(function(hy){return t(G,hy)}),fs&&Fa(G,Pe),Ee}function ks(G,M,Z,re){if(typeof Z=="object"&&Z!==null&&Z.type===K&&Z.key===null&&(Z=Z.props.children),typeof Z=="object"&&Z!==null){switch(Z.$$typeof){case T:e:{for(var Ee=Z.key;M!==null;){if(M.key===Ee){if(Ee=Z.type,Ee===K){if(M.tag===7){a(G,M.sibling),re=i(M,Z.props.children),re.return=G,G=re;break e}}else if(M.elementType===Ee||typeof Ee=="object"&&Ee!==null&&Ee.$$typeof===D&&Il(Ee)===M.type){a(G,M.sibling),re=i(M,Z.props),ki(re,Z),re.return=G,G=re;break e}a(G,M);break}else t(G,M);M=M.sibling}Z.type===K?(re=$l(Z.props.children,G.mode,re,Z.key),re.return=G,G=re):(re=Vr(Z.type,Z.key,Z.props,null,G.mode,re),ki(re,Z),re.return=G,G=re)}return m(G);case L:e:{for(Ee=Z.key;M!==null;){if(M.key===Ee)if(M.tag===4&&M.stateNode.containerInfo===Z.containerInfo&&M.stateNode.implementation===Z.implementation){a(G,M.sibling),re=i(M,Z.children||[]),re.return=G,G=re;break e}else{a(G,M);break}else t(G,M);M=M.sibling}re=Go(Z,G.mode,re),re.return=G,G=re}return m(G);case D:return Z=Il(Z),ks(G,M,Z,re)}if(Ne(Z))return Ce(G,M,Z,re);if(ye(Z)){if(Ee=ye(Z),typeof Ee!="function")throw Error(d(150));return Z=Ee.call(Z),Oe(G,M,Z,re)}if(typeof Z.then=="function")return ks(G,M,Zr(Z),re);if(Z.$$typeof===V)return ks(G,M,$r(G,Z),re);Ir(G,Z)}return typeof Z=="string"&&Z!==""||typeof Z=="number"||typeof Z=="bigint"?(Z=""+Z,M!==null&&M.tag===6?(a(G,M.sibling),re=i(M,Z),re.return=G,G=re):(a(G,M),re=qo(Z,G.mode,re),re.return=G,G=re),m(G)):a(G,M)}return function(G,M,Z,re){try{Ci=0;var Ee=ks(G,M,Z,re);return An=null,Ee}catch(Te){if(Te===Mn||Te===Xr)throw Te;var vs=qt(29,Te,null,G.mode);return vs.lanes=re,vs.return=G,vs}finally{}}}var Pl=lh(!0),nh=lh(!1),pl=!1;function Wo(s){s.updateQueue={baseState:s.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function ed(s,t){s=s.updateQueue,t.updateQueue===s&&(t.updateQueue={baseState:s.baseState,firstBaseUpdate:s.firstBaseUpdate,lastBaseUpdate:s.lastBaseUpdate,shared:s.shared,callbacks:null})}function gl(s){return{lane:s,tag:0,payload:null,callback:null,next:null}}function jl(s,t,a){var l=s.updateQueue;if(l===null)return null;if(l=l.shared,(Ns&2)!==0){var i=l.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),l.pending=t,t=Gr(s),Vm(s,null,a),t}return qr(s,l,t,a),Gr(s)}function Ti(s,t,a){if(t=t.updateQueue,t!==null&&(t=t.shared,(a&4194048)!==0)){var l=t.lanes;l&=s.pendingLanes,a|=l,t.lanes=a,dl(s,a)}}function sd(s,t){var a=s.updateQueue,l=s.alternate;if(l!==null&&(l=l.updateQueue,a===l)){var i=null,o=null;if(a=a.firstBaseUpdate,a!==null){do{var m={lane:a.lane,tag:a.tag,payload:a.payload,callback:null,next:null};o===null?i=o=m:o=o.next=m,a=a.next}while(a!==null);o===null?i=o=t:o=o.next=t}else i=o=t;a={baseState:l.baseState,firstBaseUpdate:i,lastBaseUpdate:o,shared:l.shared,callbacks:l.callbacks},s.updateQueue=a;return}s=a.lastBaseUpdate,s===null?a.firstBaseUpdate=t:s.next=t,a.lastBaseUpdate=t}var td=!1;function Ei(){if(td){var s=zn;if(s!==null)throw s}}function zi(s,t,a,l){td=!1;var i=s.updateQueue;pl=!1;var o=i.firstBaseUpdate,m=i.lastBaseUpdate,p=i.shared.pending;if(p!==null){i.shared.pending=null;var C=p,I=C.next;C.next=null,m===null?o=I:m.next=I,m=C;var ae=s.alternate;ae!==null&&(ae=ae.updateQueue,p=ae.lastBaseUpdate,p!==m&&(p===null?ae.firstBaseUpdate=I:p.next=I,ae.lastBaseUpdate=C))}if(o!==null){var de=i.baseState;m=0,ae=I=C=null,p=o;do{var J=p.lane&-536870913,se=J!==p.lane;if(se?(is&J)===J:(l&J)===J){J!==0&&J===En&&(td=!0),ae!==null&&(ae=ae.next={lane:0,tag:p.tag,payload:p.payload,callback:null,next:null});e:{var Ce=s,Oe=p;J=t;var ks=a;switch(Oe.tag){case 1:if(Ce=Oe.payload,typeof Ce=="function"){de=Ce.call(ks,de,J);break e}de=Ce;break e;case 3:Ce.flags=Ce.flags&-65537|128;case 0:if(Ce=Oe.payload,J=typeof Ce=="function"?Ce.call(ks,de,J):Ce,J==null)break e;de=k({},de,J);break e;case 2:pl=!0}}J=p.callback,J!==null&&(s.flags|=64,se&&(s.flags|=8192),se=i.callbacks,se===null?i.callbacks=[J]:se.push(J))}else se={lane:J,tag:p.tag,payload:p.payload,callback:p.callback,next:null},ae===null?(I=ae=se,C=de):ae=ae.next=se,m|=J;if(p=p.next,p===null){if(p=i.shared.pending,p===null)break;se=p,p=se.next,se.next=null,i.lastBaseUpdate=se,i.shared.pending=null}}while(!0);ae===null&&(C=de),i.baseState=C,i.firstBaseUpdate=I,i.lastBaseUpdate=ae,o===null&&(i.shared.lanes=0),wl|=m,s.lanes=m,s.memoizedState=de}}function ih(s,t){if(typeof s!="function")throw Error(d(191,s));s.call(t)}function rh(s,t){var a=s.callbacks;if(a!==null)for(s.callbacks=null,s=0;so?o:8;var m=y.T,p={};y.T=p,Nd(s,!1,t,a);try{var C=i(),I=y.S;if(I!==null&&I(p,C),C!==null&&typeof C=="object"&&typeof C.then=="function"){var ae=tv(C,l);Di(s,t,ae,$t(s))}else Di(s,t,l,$t(s))}catch(de){Di(s,t,{then:function(){},status:"rejected",reason:de},$t())}finally{q.p=o,m!==null&&p.types!==null&&(m.types=p.types),y.T=m}}function cv(){}function vd(s,t,a,l){if(s.tag!==5)throw Error(d(476));var i=Hh(s).queue;Bh(s,i,t,H,a===null?cv:function(){return qh(s),a(l)})}function Hh(s){var t=s.memoizedState;if(t!==null)return t;t={memoizedState:H,baseState:H,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Xa,lastRenderedState:H},next:null};var a={};return t.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Xa,lastRenderedState:a},next:null},s.memoizedState=t,s=s.alternate,s!==null&&(s.memoizedState=t),t}function qh(s){var t=Hh(s);t.next===null&&(t=s.alternate.memoizedState),Di(s,t.next.queue,{},$t())}function yd(){return mt(Ii)}function Gh(){return Ks().memoizedState}function Vh(){return Ks().memoizedState}function ov(s){for(var t=s.return;t!==null;){switch(t.tag){case 24:case 3:var a=$t();s=gl(a);var l=jl(t,s,a);l!==null&&(Ot(l,t,a),Ti(l,t,a)),t={cache:Zo()},s.payload=t;return}t=t.return}}function dv(s,t,a){var l=$t();a={lane:l,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},ic(s)?Qh(t,a):(a=Bo(s,t,a,l),a!==null&&(Ot(a,s,l),$h(a,t,l)))}function Fh(s,t,a){var l=$t();Di(s,t,a,l)}function Di(s,t,a,l){var i={lane:l,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(ic(s))Qh(t,i);else{var o=s.alternate;if(s.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var m=t.lastRenderedState,p=o(m,a);if(i.hasEagerState=!0,i.eagerState=p,Ht(p,m))return qr(s,t,i,0),Ts===null&&Hr(),!1}catch{}finally{}if(a=Bo(s,t,i,l),a!==null)return Ot(a,s,l),$h(a,t,l),!0}return!1}function Nd(s,t,a,l){if(l={lane:2,revertLane:Wd(),gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},ic(s)){if(t)throw Error(d(479))}else t=Bo(s,a,l,2),t!==null&&Ot(t,s,2)}function ic(s){var t=s.alternate;return s===Ze||t!==null&&t===Ze}function Qh(s,t){On=Wr=!0;var a=s.pending;a===null?t.next=t:(t.next=a.next,a.next=t),s.pending=t}function $h(s,t,a){if((a&4194048)!==0){var l=t.lanes;l&=s.pendingLanes,a|=l,t.lanes=a,dl(s,a)}}var Oi={readContext:mt,use:tc,useCallback:Gs,useContext:Gs,useEffect:Gs,useImperativeHandle:Gs,useLayoutEffect:Gs,useInsertionEffect:Gs,useMemo:Gs,useReducer:Gs,useRef:Gs,useState:Gs,useDebugValue:Gs,useDeferredValue:Gs,useTransition:Gs,useSyncExternalStore:Gs,useId:Gs,useHostTransitionStatus:Gs,useFormState:Gs,useActionState:Gs,useOptimistic:Gs,useMemoCache:Gs,useCacheRefresh:Gs};Oi.useEffectEvent=Gs;var Yh={readContext:mt,use:tc,useCallback:function(s,t){return wt().memoizedState=[s,t===void 0?null:t],s},useContext:mt,useEffect:Eh,useImperativeHandle:function(s,t,a){a=a!=null?a.concat([s]):null,lc(4194308,4,Dh.bind(null,t,s),a)},useLayoutEffect:function(s,t){return lc(4194308,4,s,t)},useInsertionEffect:function(s,t){lc(4,2,s,t)},useMemo:function(s,t){var a=wt();t=t===void 0?null:t;var l=s();if(Wl){it(!0);try{s()}finally{it(!1)}}return a.memoizedState=[l,t],l},useReducer:function(s,t,a){var l=wt();if(a!==void 0){var i=a(t);if(Wl){it(!0);try{a(t)}finally{it(!1)}}}else i=t;return l.memoizedState=l.baseState=i,s={pending:null,lanes:0,dispatch:null,lastRenderedReducer:s,lastRenderedState:i},l.queue=s,s=s.dispatch=dv.bind(null,Ze,s),[l.memoizedState,s]},useRef:function(s){var t=wt();return s={current:s},t.memoizedState=s},useState:function(s){s=xd(s);var t=s.queue,a=Fh.bind(null,Ze,t);return t.dispatch=a,[s.memoizedState,a]},useDebugValue:gd,useDeferredValue:function(s,t){var a=wt();return jd(a,s,t)},useTransition:function(){var s=xd(!1);return s=Bh.bind(null,Ze,s.queue,!0,!1),wt().memoizedState=s,[!1,s]},useSyncExternalStore:function(s,t,a){var l=Ze,i=wt();if(fs){if(a===void 0)throw Error(d(407));a=a()}else{if(a=t(),Ts===null)throw Error(d(349));(is&127)!==0||hh(l,t,a)}i.memoizedState=a;var o={value:a,getSnapshot:t};return i.queue=o,Eh(fh.bind(null,l,o,s),[s]),l.flags|=2048,Ln(9,{destroy:void 0},xh.bind(null,l,o,a,t),null),a},useId:function(){var s=wt(),t=Ts.identifierPrefix;if(fs){var a=Ca,l=Sa;a=(l&~(1<<32-ot(l)-1)).toString(32)+a,t="_"+t+"R_"+a,a=ec++,0<\/script>",o=o.removeChild(o.firstChild);break;case"select":o=typeof l.is=="string"?m.createElement("select",{is:l.is}):m.createElement("select"),l.multiple?o.multiple=!0:l.size&&(o.size=l.size);break;default:o=typeof l.is=="string"?m.createElement(i,{is:l.is}):m.createElement(i)}}o[Fe]=t,o[Ys]=l;e:for(m=t.child;m!==null;){if(m.tag===5||m.tag===6)o.appendChild(m.stateNode);else if(m.tag!==4&&m.tag!==27&&m.child!==null){m.child.return=m,m=m.child;continue}if(m===t)break e;for(;m.sibling===null;){if(m.return===null||m.return===t)break e;m=m.return}m.sibling.return=m.return,m=m.sibling}t.stateNode=o;e:switch(xt(o,i,l),i){case"button":case"input":case"select":case"textarea":l=!!l.autoFocus;break e;case"img":l=!0;break e;default:l=!1}l&&Za(t)}}return Ds(t),Rd(t,t.type,s===null?null:s.memoizedProps,t.pendingProps,a),null;case 6:if(s&&t.stateNode!=null)s.memoizedProps!==l&&Za(t);else{if(typeof l!="string"&&t.stateNode===null)throw Error(d(166));if(s=le.current,kn(t)){if(s=t.stateNode,a=t.memoizedProps,l=null,i=ut,i!==null)switch(i.tag){case 27:case 5:l=i.memoizedProps}s[Fe]=t,s=!!(s.nodeValue===a||l!==null&&l.suppressHydrationWarning===!0||mf(s.nodeValue,a)),s||xl(t,!0)}else s=Cc(s).createTextNode(l),s[Fe]=t,t.stateNode=s}return Ds(t),null;case 31:if(a=t.memoizedState,s===null||s.memoizedState!==null){if(l=kn(t),a!==null){if(s===null){if(!l)throw Error(d(318));if(s=t.memoizedState,s=s!==null?s.dehydrated:null,!s)throw Error(d(557));s[Fe]=t}else Yl(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Ds(t),s=!1}else a=$o(),s!==null&&s.memoizedState!==null&&(s.memoizedState.hydrationErrors=a),s=!0;if(!s)return t.flags&256?(Vt(t),t):(Vt(t),null);if((t.flags&128)!==0)throw Error(d(558))}return Ds(t),null;case 13:if(l=t.memoizedState,s===null||s.memoizedState!==null&&s.memoizedState.dehydrated!==null){if(i=kn(t),l!==null&&l.dehydrated!==null){if(s===null){if(!i)throw Error(d(318));if(i=t.memoizedState,i=i!==null?i.dehydrated:null,!i)throw Error(d(317));i[Fe]=t}else Yl(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Ds(t),i=!1}else i=$o(),s!==null&&s.memoizedState!==null&&(s.memoizedState.hydrationErrors=i),i=!0;if(!i)return t.flags&256?(Vt(t),t):(Vt(t),null)}return Vt(t),(t.flags&128)!==0?(t.lanes=a,t):(a=l!==null,s=s!==null&&s.memoizedState!==null,a&&(l=t.child,i=null,l.alternate!==null&&l.alternate.memoizedState!==null&&l.alternate.memoizedState.cachePool!==null&&(i=l.alternate.memoizedState.cachePool.pool),o=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(o=l.memoizedState.cachePool.pool),o!==i&&(l.flags|=2048)),a!==s&&a&&(t.child.flags|=8192),uc(t,t.updateQueue),Ds(t),null);case 4:return A(),s===null&&au(t.stateNode.containerInfo),Ds(t),null;case 10:return $a(t.type),Ds(t),null;case 19:if(he(Xs),l=t.memoizedState,l===null)return Ds(t),null;if(i=(t.flags&128)!==0,o=l.rendering,o===null)if(i)Li(l,!1);else{if(Vs!==0||s!==null&&(s.flags&128)!==0)for(s=t.child;s!==null;){if(o=Pr(s),o!==null){for(t.flags|=128,Li(l,!1),s=o.updateQueue,t.updateQueue=s,uc(t,s),t.subtreeFlags=0,s=a,a=t.child;a!==null;)Fm(a,s),a=a.sibling;return Q(Xs,Xs.current&1|2),fs&&Fa(t,l.treeForkCount),t.child}s=s.sibling}l.tail!==null&&Je()>pc&&(t.flags|=128,i=!0,Li(l,!1),t.lanes=4194304)}else{if(!i)if(s=Pr(o),s!==null){if(t.flags|=128,i=!0,s=s.updateQueue,t.updateQueue=s,uc(t,s),Li(l,!0),l.tail===null&&l.tailMode==="hidden"&&!o.alternate&&!fs)return Ds(t),null}else 2*Je()-l.renderingStartTime>pc&&a!==536870912&&(t.flags|=128,i=!0,Li(l,!1),t.lanes=4194304);l.isBackwards?(o.sibling=t.child,t.child=o):(s=l.last,s!==null?s.sibling=o:t.child=o,l.last=o)}return l.tail!==null?(s=l.tail,l.rendering=s,l.tail=s.sibling,l.renderingStartTime=Je(),s.sibling=null,a=Xs.current,Q(Xs,i?a&1|2:a&1),fs&&Fa(t,l.treeForkCount),s):(Ds(t),null);case 22:case 23:return Vt(t),ld(),l=t.memoizedState!==null,s!==null?s.memoizedState!==null!==l&&(t.flags|=8192):l&&(t.flags|=8192),l?(a&536870912)!==0&&(t.flags&128)===0&&(Ds(t),t.subtreeFlags&6&&(t.flags|=8192)):Ds(t),a=t.updateQueue,a!==null&&uc(t,a.retryQueue),a=null,s!==null&&s.memoizedState!==null&&s.memoizedState.cachePool!==null&&(a=s.memoizedState.cachePool.pool),l=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(l=t.memoizedState.cachePool.pool),l!==a&&(t.flags|=2048),s!==null&&he(Zl),null;case 24:return a=null,s!==null&&(a=s.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),$a(Js),Ds(t),null;case 25:return null;case 30:return null}throw Error(d(156,t.tag))}function fv(s,t){switch(Fo(t),t.tag){case 1:return s=t.flags,s&65536?(t.flags=s&-65537|128,t):null;case 3:return $a(Js),A(),s=t.flags,(s&65536)!==0&&(s&128)===0?(t.flags=s&-65537|128,t):null;case 26:case 27:case 5:return _e(t),null;case 31:if(t.memoizedState!==null){if(Vt(t),t.alternate===null)throw Error(d(340));Yl()}return s=t.flags,s&65536?(t.flags=s&-65537|128,t):null;case 13:if(Vt(t),s=t.memoizedState,s!==null&&s.dehydrated!==null){if(t.alternate===null)throw Error(d(340));Yl()}return s=t.flags,s&65536?(t.flags=s&-65537|128,t):null;case 19:return he(Xs),null;case 4:return A(),null;case 10:return $a(t.type),null;case 22:case 23:return Vt(t),ld(),s!==null&&he(Zl),s=t.flags,s&65536?(t.flags=s&-65537|128,t):null;case 24:return $a(Js),null;case 25:return null;default:return null}}function px(s,t){switch(Fo(t),t.tag){case 3:$a(Js),A();break;case 26:case 27:case 5:_e(t);break;case 4:A();break;case 31:t.memoizedState!==null&&Vt(t);break;case 13:Vt(t);break;case 19:he(Xs);break;case 10:$a(t.type);break;case 22:case 23:Vt(t),ld(),s!==null&&he(Zl);break;case 24:$a(Js)}}function Ui(s,t){try{var a=t.updateQueue,l=a!==null?a.lastEffect:null;if(l!==null){var i=l.next;a=i;do{if((a.tag&s)===s){l=void 0;var o=a.create,m=a.inst;l=o(),m.destroy=l}a=a.next}while(a!==i)}}catch(p){_s(t,t.return,p)}}function Nl(s,t,a){try{var l=t.updateQueue,i=l!==null?l.lastEffect:null;if(i!==null){var o=i.next;l=o;do{if((l.tag&s)===s){var m=l.inst,p=m.destroy;if(p!==void 0){m.destroy=void 0,i=t;var C=a,I=p;try{I()}catch(ae){_s(i,C,ae)}}}l=l.next}while(l!==o)}}catch(ae){_s(t,t.return,ae)}}function gx(s){var t=s.updateQueue;if(t!==null){var a=s.stateNode;try{rh(t,a)}catch(l){_s(s,s.return,l)}}}function jx(s,t,a){a.props=en(s.type,s.memoizedProps),a.state=s.memoizedState;try{a.componentWillUnmount()}catch(l){_s(s,t,l)}}function Bi(s,t){try{var a=s.ref;if(a!==null){switch(s.tag){case 26:case 27:case 5:var l=s.stateNode;break;case 30:l=s.stateNode;break;default:l=s.stateNode}typeof a=="function"?s.refCleanup=a(l):a.current=l}}catch(i){_s(s,t,i)}}function ka(s,t){var a=s.ref,l=s.refCleanup;if(a!==null)if(typeof l=="function")try{l()}catch(i){_s(s,t,i)}finally{s.refCleanup=null,s=s.alternate,s!=null&&(s.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(i){_s(s,t,i)}else a.current=null}function vx(s){var t=s.type,a=s.memoizedProps,l=s.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":a.autoFocus&&l.focus();break e;case"img":a.src?l.src=a.src:a.srcSet&&(l.srcset=a.srcSet)}}catch(i){_s(s,s.return,i)}}function Ld(s,t,a){try{var l=s.stateNode;Uv(l,s.type,a,t),l[Ys]=t}catch(i){_s(s,s.return,i)}}function yx(s){return s.tag===5||s.tag===3||s.tag===26||s.tag===27&&Tl(s.type)||s.tag===4}function Ud(s){e:for(;;){for(;s.sibling===null;){if(s.return===null||yx(s.return))return null;s=s.return}for(s.sibling.return=s.return,s=s.sibling;s.tag!==5&&s.tag!==6&&s.tag!==18;){if(s.tag===27&&Tl(s.type)||s.flags&2||s.child===null||s.tag===4)continue e;s.child.return=s,s=s.child}if(!(s.flags&2))return s.stateNode}}function Bd(s,t,a){var l=s.tag;if(l===5||l===6)s=s.stateNode,t?(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a).insertBefore(s,t):(t=a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,t.appendChild(s),a=a._reactRootContainer,a!=null||t.onclick!==null||(t.onclick=qa));else if(l!==4&&(l===27&&Tl(s.type)&&(a=s.stateNode,t=null),s=s.child,s!==null))for(Bd(s,t,a),s=s.sibling;s!==null;)Bd(s,t,a),s=s.sibling}function mc(s,t,a){var l=s.tag;if(l===5||l===6)s=s.stateNode,t?a.insertBefore(s,t):a.appendChild(s);else if(l!==4&&(l===27&&Tl(s.type)&&(a=s.stateNode),s=s.child,s!==null))for(mc(s,t,a),s=s.sibling;s!==null;)mc(s,t,a),s=s.sibling}function Nx(s){var t=s.stateNode,a=s.memoizedProps;try{for(var l=s.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);xt(t,l,a),t[Fe]=s,t[Ys]=a}catch(o){_s(s,s.return,o)}}var Ia=!1,et=!1,Hd=!1,bx=typeof WeakSet=="function"?WeakSet:Set,ct=null;function pv(s,t){if(s=s.containerInfo,iu=Dc,s=Om(s),Ao(s)){if("selectionStart"in s)var a={start:s.selectionStart,end:s.selectionEnd};else e:{a=(a=s.ownerDocument)&&a.defaultView||window;var l=a.getSelection&&a.getSelection();if(l&&l.rangeCount!==0){a=l.anchorNode;var i=l.anchorOffset,o=l.focusNode;l=l.focusOffset;try{a.nodeType,o.nodeType}catch{a=null;break e}var m=0,p=-1,C=-1,I=0,ae=0,de=s,J=null;s:for(;;){for(var se;de!==a||i!==0&&de.nodeType!==3||(p=m+i),de!==o||l!==0&&de.nodeType!==3||(C=m+l),de.nodeType===3&&(m+=de.nodeValue.length),(se=de.firstChild)!==null;)J=de,de=se;for(;;){if(de===s)break s;if(J===a&&++I===i&&(p=m),J===o&&++ae===l&&(C=m),(se=de.nextSibling)!==null)break;de=J,J=de.parentNode}de=se}a=p===-1||C===-1?null:{start:p,end:C}}else a=null}a=a||{start:0,end:0}}else a=null;for(ru={focusedElem:s,selectionRange:a},Dc=!1,ct=t;ct!==null;)if(t=ct,s=t.child,(t.subtreeFlags&1028)!==0&&s!==null)s.return=t,ct=s;else for(;ct!==null;){switch(t=ct,o=t.alternate,s=t.flags,t.tag){case 0:if((s&4)!==0&&(s=t.updateQueue,s=s!==null?s.events:null,s!==null))for(a=0;a title"))),xt(o,l,a),o[Fe]=s,rt(o),l=o;break e;case"link":var m=Ef("link","href",i).get(l+(a.href||""));if(m){for(var p=0;pks&&(m=ks,ks=Oe,Oe=m);var G=Am(p,Oe),M=Am(p,ks);if(G&&M&&(se.rangeCount!==1||se.anchorNode!==G.node||se.anchorOffset!==G.offset||se.focusNode!==M.node||se.focusOffset!==M.offset)){var Z=de.createRange();Z.setStart(G.node,G.offset),se.removeAllRanges(),Oe>ks?(se.addRange(Z),se.extend(M.node,M.offset)):(Z.setEnd(M.node,M.offset),se.addRange(Z))}}}}for(de=[],se=p;se=se.parentNode;)se.nodeType===1&&de.push({element:se,left:se.scrollLeft,top:se.scrollTop});for(typeof p.focus=="function"&&p.focus(),p=0;pa?32:a,y.T=null,a=Yd,Yd=null;var o=Sl,m=sl;if(at=0,Gn=Sl=null,sl=0,(Ns&6)!==0)throw Error(d(331));var p=Ns;if(Ns|=4,Dx(o.current),zx(o,o.current,m,a),Ns=p,Qi(0,!1),Re&&typeof Re.onPostCommitFiberRoot=="function")try{Re.onPostCommitFiberRoot(Se,o)}catch{}return!0}finally{q.p=i,y.T=l,Jx(s,t)}}function Wx(s,t,a){t=aa(a,t),t=Sd(s.stateNode,t,2),s=jl(s,t,2),s!==null&&(tt(s,2),Ta(s))}function _s(s,t,a){if(s.tag===3)Wx(s,s,a);else for(;t!==null;){if(t.tag===3){Wx(t,s,a);break}else if(t.tag===1){var l=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof l.componentDidCatch=="function"&&(_l===null||!_l.has(l))){s=aa(a,s),a=ex(2),l=jl(t,a,2),l!==null&&(sx(a,l,t,s),tt(l,2),Ta(l));break}}t=t.return}}function Id(s,t,a){var l=s.pingCache;if(l===null){l=s.pingCache=new vv;var i=new Set;l.set(t,i)}else i=l.get(t),i===void 0&&(i=new Set,l.set(t,i));i.has(a)||(Vd=!0,i.add(a),s=_v.bind(null,s,t,a),t.then(s,s))}function _v(s,t,a){var l=s.pingCache;l!==null&&l.delete(t),s.pingedLanes|=s.suspendedLanes&a,s.warmLanes&=~a,Ts===s&&(is&a)===a&&(Vs===4||Vs===3&&(is&62914560)===is&&300>Je()-fc?(Ns&2)===0&&Vn(s,0):Fd|=a,qn===is&&(qn=0)),Ta(s)}function ef(s,t){t===0&&(t=je()),s=Ql(s,t),s!==null&&(tt(s,t),Ta(s))}function Sv(s){var t=s.memoizedState,a=0;t!==null&&(a=t.retryLane),ef(s,a)}function Cv(s,t){var a=0;switch(s.tag){case 31:case 13:var l=s.stateNode,i=s.memoizedState;i!==null&&(a=i.retryLane);break;case 19:l=s.stateNode;break;case 22:l=s.stateNode._retryCache;break;default:throw Error(d(314))}l!==null&&l.delete(t),ef(s,a)}function kv(s,t){return Le(s,t)}var bc=null,Qn=null,Jd=!1,wc=!1,Pd=!1,kl=0;function Ta(s){s!==Qn&&s.next===null&&(Qn===null?bc=Qn=s:Qn=Qn.next=s),wc=!0,Jd||(Jd=!0,Ev())}function Qi(s,t){if(!Pd&&wc){Pd=!0;do for(var a=!1,l=bc;l!==null;){if(s!==0){var i=l.pendingLanes;if(i===0)var o=0;else{var m=l.suspendedLanes,p=l.pingedLanes;o=(1<<31-ot(42|s)+1)-1,o&=i&~(m&~p),o=o&201326741?o&201326741|1:o?o|2:0}o!==0&&(a=!0,lf(l,o))}else o=is,o=Ua(l,l===Ts?o:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),(o&3)===0||ba(l,o)||(a=!0,lf(l,o));l=l.next}while(a);Pd=!1}}function Tv(){sf()}function sf(){wc=Jd=!1;var s=0;kl!==0&&Hv()&&(s=kl);for(var t=Je(),a=null,l=bc;l!==null;){var i=l.next,o=tf(l,t);o===0?(l.next=null,a===null?bc=i:a.next=i,i===null&&(Qn=a)):(a=l,(s!==0||(o&3)!==0)&&(wc=!0)),l=i}at!==0&&at!==5||Qi(s),kl!==0&&(kl=0)}function tf(s,t){for(var a=s.suspendedLanes,l=s.pingedLanes,i=s.expirationTimes,o=s.pendingLanes&-62914561;0p)break;var ae=C.transferSize,de=C.initiatorType;ae&&hf(de)&&(C=C.responseEnd,m+=ae*(C"u"?null:document;function Sf(s,t,a){var l=$n;if(l&&typeof t=="string"&&t){var i=sa(t);i='link[rel="'+s+'"][href="'+i+'"]',typeof a=="string"&&(i+='[crossorigin="'+a+'"]'),_f.has(i)||(_f.add(i),s={rel:s,crossOrigin:a,href:t},l.querySelector(i)===null&&(t=l.createElement("link"),xt(t,"link",s),rt(t),l.head.appendChild(t)))}}function Kv(s){tl.D(s),Sf("dns-prefetch",s,null)}function Zv(s,t){tl.C(s,t),Sf("preconnect",s,t)}function Iv(s,t,a){tl.L(s,t,a);var l=$n;if(l&&s&&t){var i='link[rel="preload"][as="'+sa(t)+'"]';t==="image"&&a&&a.imageSrcSet?(i+='[imagesrcset="'+sa(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(i+='[imagesizes="'+sa(a.imageSizes)+'"]')):i+='[href="'+sa(s)+'"]';var o=i;switch(t){case"style":o=Yn(s);break;case"script":o=Xn(s)}oa.has(o)||(s=k({rel:"preload",href:t==="image"&&a&&a.imageSrcSet?void 0:s,as:t},a),oa.set(o,s),l.querySelector(i)!==null||t==="style"&&l.querySelector(Ki(o))||t==="script"&&l.querySelector(Zi(o))||(t=l.createElement("link"),xt(t,"link",s),rt(t),l.head.appendChild(t)))}}function Jv(s,t){tl.m(s,t);var a=$n;if(a&&s){var l=t&&typeof t.as=="string"?t.as:"script",i='link[rel="modulepreload"][as="'+sa(l)+'"][href="'+sa(s)+'"]',o=i;switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":o=Xn(s)}if(!oa.has(o)&&(s=k({rel:"modulepreload",href:s},t),oa.set(o,s),a.querySelector(i)===null)){switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(Zi(o)))return}l=a.createElement("link"),xt(l,"link",s),rt(l),a.head.appendChild(l)}}}function Pv(s,t,a){tl.S(s,t,a);var l=$n;if(l&&s){var i=xn(l).hoistableStyles,o=Yn(s);t=t||"default";var m=i.get(o);if(!m){var p={loading:0,preload:null};if(m=l.querySelector(Ki(o)))p.loading=5;else{s=k({rel:"stylesheet",href:s,"data-precedence":t},a),(a=oa.get(o))&&xu(s,a);var C=m=l.createElement("link");rt(C),xt(C,"link",s),C._p=new Promise(function(I,ae){C.onload=I,C.onerror=ae}),C.addEventListener("load",function(){p.loading|=1}),C.addEventListener("error",function(){p.loading|=2}),p.loading|=4,Tc(m,t,l)}m={type:"stylesheet",instance:m,count:1,state:p},i.set(o,m)}}}function Wv(s,t){tl.X(s,t);var a=$n;if(a&&s){var l=xn(a).hoistableScripts,i=Xn(s),o=l.get(i);o||(o=a.querySelector(Zi(i)),o||(s=k({src:s,async:!0},t),(t=oa.get(i))&&fu(s,t),o=a.createElement("script"),rt(o),xt(o,"link",s),a.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},l.set(i,o))}}function ey(s,t){tl.M(s,t);var a=$n;if(a&&s){var l=xn(a).hoistableScripts,i=Xn(s),o=l.get(i);o||(o=a.querySelector(Zi(i)),o||(s=k({src:s,async:!0,type:"module"},t),(t=oa.get(i))&&fu(s,t),o=a.createElement("script"),rt(o),xt(o,"link",s),a.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},l.set(i,o))}}function Cf(s,t,a,l){var i=(i=le.current)?kc(i):null;if(!i)throw Error(d(446));switch(s){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(t=Yn(a.href),a=xn(i).hoistableStyles,l=a.get(t),l||(l={type:"style",instance:null,count:0,state:null},a.set(t,l)),l):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){s=Yn(a.href);var o=xn(i).hoistableStyles,m=o.get(s);if(m||(i=i.ownerDocument||i,m={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},o.set(s,m),(o=i.querySelector(Ki(s)))&&!o._p&&(m.instance=o,m.state.loading=5),oa.has(s)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},oa.set(s,a),o||sy(i,s,a,m.state))),t&&l===null)throw Error(d(528,""));return m}if(t&&l!==null)throw Error(d(529,""));return null;case"script":return t=a.async,a=a.src,typeof a=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=Xn(a),a=xn(i).hoistableScripts,l=a.get(t),l||(l={type:"script",instance:null,count:0,state:null},a.set(t,l)),l):{type:"void",instance:null,count:0,state:null};default:throw Error(d(444,s))}}function Yn(s){return'href="'+sa(s)+'"'}function Ki(s){return'link[rel="stylesheet"]['+s+"]"}function kf(s){return k({},s,{"data-precedence":s.precedence,precedence:null})}function sy(s,t,a,l){s.querySelector('link[rel="preload"][as="style"]['+t+"]")?l.loading=1:(t=s.createElement("link"),l.preload=t,t.addEventListener("load",function(){return l.loading|=1}),t.addEventListener("error",function(){return l.loading|=2}),xt(t,"link",a),rt(t),s.head.appendChild(t))}function Xn(s){return'[src="'+sa(s)+'"]'}function Zi(s){return"script[async]"+s}function Tf(s,t,a){if(t.count++,t.instance===null)switch(t.type){case"style":var l=s.querySelector('style[data-href~="'+sa(a.href)+'"]');if(l)return t.instance=l,rt(l),l;var i=k({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return l=(s.ownerDocument||s).createElement("style"),rt(l),xt(l,"style",i),Tc(l,a.precedence,s),t.instance=l;case"stylesheet":i=Yn(a.href);var o=s.querySelector(Ki(i));if(o)return t.state.loading|=4,t.instance=o,rt(o),o;l=kf(a),(i=oa.get(i))&&xu(l,i),o=(s.ownerDocument||s).createElement("link"),rt(o);var m=o;return m._p=new Promise(function(p,C){m.onload=p,m.onerror=C}),xt(o,"link",l),t.state.loading|=4,Tc(o,a.precedence,s),t.instance=o;case"script":return o=Xn(a.src),(i=s.querySelector(Zi(o)))?(t.instance=i,rt(i),i):(l=a,(i=oa.get(o))&&(l=k({},a),fu(l,i)),s=s.ownerDocument||s,i=s.createElement("script"),rt(i),xt(i,"link",l),s.head.appendChild(i),t.instance=i);case"void":return null;default:throw Error(d(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(l=t.instance,t.state.loading|=4,Tc(l,a.precedence,s));return t.instance}function Tc(s,t,a){for(var l=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),i=l.length?l[l.length-1]:null,o=i,m=0;m title"):null)}function ty(s,t,a){if(a===1||t.itemProp!=null)return!1;switch(s){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return s=t.disabled,typeof t.precedence=="string"&&s==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Mf(s){return!(s.type==="stylesheet"&&(s.state.loading&3)===0)}function ay(s,t,a,l){if(a.type==="stylesheet"&&(typeof l.media!="string"||matchMedia(l.media).matches!==!1)&&(a.state.loading&4)===0){if(a.instance===null){var i=Yn(l.href),o=t.querySelector(Ki(i));if(o){t=o._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(s.count++,s=zc.bind(s),t.then(s,s)),a.state.loading|=4,a.instance=o,rt(o);return}o=t.ownerDocument||t,l=kf(l),(i=oa.get(i))&&xu(l,i),o=o.createElement("link"),rt(o);var m=o;m._p=new Promise(function(p,C){m.onload=p,m.onerror=C}),xt(o,"link",l),a.instance=o}s.stylesheets===null&&(s.stylesheets=new Map),s.stylesheets.set(a,t),(t=a.state.preload)&&(a.state.loading&3)===0&&(s.count++,a=zc.bind(s),t.addEventListener("load",a),t.addEventListener("error",a))}}var pu=0;function ly(s,t){return s.stylesheets&&s.count===0&&Ac(s,s.stylesheets),0pu?50:800)+t);return s.unsuspend=a,function(){s.unsuspend=null,clearTimeout(l),clearTimeout(i)}}:null}function zc(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Ac(this,this.stylesheets);else if(this.unsuspend){var s=this.unsuspend;this.unsuspend=null,s()}}}var Mc=null;function Ac(s,t){s.stylesheets=null,s.unsuspend!==null&&(s.count++,Mc=new Map,t.forEach(ny,s),Mc=null,zc.call(s))}function ny(s,t){if(!(t.state.loading&4)){var a=Mc.get(s);if(a)var l=a.get(null);else{a=new Map,Mc.set(s,a);for(var i=s.querySelectorAll("link[data-precedence],style[data-precedence]"),o=0;o"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(r){console.error(r)}}return n(),ku.exports=Lb(),ku.exports}var Bb=Ub();function $(...n){return _y(Sy(n))}const Be=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:$("rounded-xl border bg-card text-card-foreground shadow",n),...r}));Be.displayName="Card";const gs=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:$("flex flex-col space-y-1.5 p-6",n),...r}));gs.displayName="CardHeader";const js=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:$("font-semibold leading-none tracking-tight",n),...r}));js.displayName="CardTitle";const Zs=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:$("text-sm text-muted-foreground",n),...r}));Zs.displayName="CardDescription";const bs=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:$("p-6 pt-0",n),...r}));bs.displayName="CardContent";const wg=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:$("flex items-center p-6 pt-0",n),...r}));wg.displayName="CardFooter";const Kt=Ty,Rt=u.forwardRef(({className:n,...r},c)=>e.jsx(yp,{ref:c,className:$("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",n),...r}));Rt.displayName=yp.displayName;const He=u.forwardRef(({className:n,...r},c)=>e.jsx(Np,{ref:c,className:$("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all duration-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",n),...r}));He.displayName=Np.displayName;const We=u.forwardRef(({className:n,...r},c)=>e.jsx(bp,{ref:c,className:$("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[state=active]:animate-in data-[state=active]:fade-in data-[state=active]:duration-300",n),...r}));We.displayName=bp.displayName;const es=u.forwardRef(({className:n,children:r,viewportRef:c,...d},h)=>e.jsxs(wp,{ref:h,className:$("relative overflow-hidden",n),...d,children:[e.jsx(Ey,{ref:c,className:"h-full w-full rounded-[inherit]",children:r}),e.jsx(Bu,{}),e.jsx(Bu,{orientation:"horizontal"}),e.jsx(zy,{})]}));es.displayName=wp.displayName;const Bu=u.forwardRef(({className:n,orientation:r="vertical",...c},d)=>e.jsx(_p,{ref:d,orientation:r,className:$("flex touch-none select-none transition-colors",r==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",r==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",n),...c,children:e.jsx(My,{className:"relative flex-1 rounded-full bg-border"})}));Bu.displayName=_p.displayName;function Hb({className:n,...r}){return e.jsx("div",{className:$("animate-pulse rounded-md bg-primary/10",n),...r})}const Sr=u.forwardRef(({className:n,value:r,...c},d)=>e.jsx(Sp,{ref:d,className:$("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",n),...c,children:e.jsx(Ay,{className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(r||0)}%)`}})}));Sr.displayName=Sp.displayName;const qb={light:"",dark:".dark"},_g=u.createContext(null);function Sg(){const n=u.useContext(_g);if(!n)throw new Error("useChart must be used within a ");return n}const Zn=u.forwardRef(({id:n,className:r,children:c,config:d,...h},x)=>{const f=u.useId(),j=`chart-${n||f.replace(/:/g,"")}`;return e.jsx(_g.Provider,{value:{config:d},children:e.jsxs("div",{"data-chart":j,ref:x,className:$("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",r),...h,children:[e.jsx(Gb,{id:j,config:d}),e.jsx(Iy,{children:c})]})})});Zn.displayName="Chart";const Gb=({id:n,config:r})=>{const c=Object.entries(r).filter(([,d])=>d.theme||d.color);return c.length?e.jsx("style",{dangerouslySetInnerHTML:{__html:Object.entries(qb).map(([d,h])=>` +${h} [data-chart=${n}] { +${c.map(([x,f])=>{const j=f.theme?.[d]||f.color;return j?` --color-${x}: ${j};`:null}).join(` +`)} +} +`).join(` +`)}}):null},lr=Jy,In=u.forwardRef(({active:n,payload:r,className:c,indicator:d="dot",hideLabel:h=!1,hideIndicator:x=!1,label:f,labelFormatter:j,labelClassName:g,formatter:_,color:v,nameKey:k,labelKey:z},T)=>{const{config:L}=Sg(),K=u.useMemo(()=>{if(h||!r?.length)return null;const[R]=r,ee=`${z||R?.dataKey||R?.name||"value"}`,V=Hu(L,R,ee),E=!z&&typeof f=="string"?L[f]?.label||f:V?.label;return j?e.jsx("div",{className:$("font-medium",g),children:j(E,r)}):E?e.jsx("div",{className:$("font-medium",g),children:E}):null},[f,j,r,h,g,L,z]);if(!n||!r?.length)return null;const U=r.length===1&&d!=="dot";return e.jsxs("div",{ref:T,className:$("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",c),children:[U?null:K,e.jsx("div",{className:"grid gap-1.5",children:r.filter(R=>R.type!=="none").map((R,ee)=>{const V=`${k||R.name||R.dataKey||"value"}`,E=Hu(L,R,V),B=v||R.payload.fill||R.color;return e.jsx("div",{className:$("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",d==="dot"&&"items-center"),children:_&&R?.value!==void 0&&R.name?_(R.value,R.name,R,ee,R.payload):e.jsxs(e.Fragment,{children:[E?.icon?e.jsx(E.icon,{}):!x&&e.jsx("div",{className:$("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]",{"h-2.5 w-2.5":d==="dot","w-1":d==="line","w-0 border-[1.5px] border-dashed bg-transparent":d==="dashed","my-0.5":U&&d==="dashed"}),style:{"--color-bg":B,"--color-border":B}}),e.jsxs("div",{className:$("flex flex-1 justify-between leading-none",U?"items-end":"items-center"),children:[e.jsxs("div",{className:"grid gap-1.5",children:[U?K:null,e.jsx("span",{className:"text-muted-foreground",children:E?.label||R.name})]}),R.value&&e.jsx("span",{className:"font-mono font-medium tabular-nums text-foreground",children:R.value.toLocaleString()})]})]})},R.dataKey)})})]})});In.displayName="ChartTooltip";const Vb=Py,Cg=u.forwardRef(({className:n,hideIcon:r=!1,payload:c,verticalAlign:d="bottom",nameKey:h},x)=>{const{config:f}=Sg();return c?.length?e.jsx("div",{ref:x,className:$("flex items-center justify-center gap-4",d==="top"?"pb-3":"pt-3",n),children:c.filter(j=>j.type!=="none").map(j=>{const g=`${h||j.dataKey||"value"}`,_=Hu(f,j,g);return e.jsxs("div",{className:$("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"),children:[_?.icon&&!r?e.jsx(_.icon,{}):e.jsx("div",{className:"h-2 w-2 shrink-0 rounded-[2px]",style:{backgroundColor:j.color}}),_?.label]},j.value)})}):null});Cg.displayName="ChartLegend";function Hu(n,r,c){if(typeof r!="object"||r===null)return;const d="payload"in r&&typeof r.payload=="object"&&r.payload!==null?r.payload:void 0;let h=c;return c in r&&typeof r[c]=="string"?h=r[c]:d&&c in d&&typeof d[c]=="string"&&(h=d[c]),h in n?n[h]:n[c]}const gr=ai("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),N=u.forwardRef(({className:n,variant:r,size:c,asChild:d=!1,...h},x)=>{const f=d?lN:"button";return e.jsx(f,{className:$(gr({variant:r,size:c,className:n})),ref:x,...h})});N.displayName="Button";const Fb=ai("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function Xe({className:n,variant:r,...c}){return e.jsx("div",{className:$(Fb({variant:r}),n),...c})}const Qb=5,$b=5e3;let zu=0;function Yb(){return zu=(zu+1)%Number.MAX_SAFE_INTEGER,zu.toString()}const Mu=new Map,tp=n=>{if(Mu.has(n))return;const r=setTimeout(()=>{Mu.delete(n),ur({type:"REMOVE_TOAST",toastId:n})},$b);Mu.set(n,r)},Xb=(n,r)=>{switch(r.type){case"ADD_TOAST":return{...n,toasts:[r.toast,...n.toasts].slice(0,Qb)};case"UPDATE_TOAST":return{...n,toasts:n.toasts.map(c=>c.id===r.toast.id?{...c,...r.toast}:c)};case"DISMISS_TOAST":{const{toastId:c}=r;return c?tp(c):n.toasts.forEach(d=>{tp(d.id)}),{...n,toasts:n.toasts.map(d=>d.id===c||c===void 0?{...d,open:!1}:d)}}case"REMOVE_TOAST":return r.toastId===void 0?{...n,toasts:[]}:{...n,toasts:n.toasts.filter(c=>c.id!==r.toastId)}}},Zc=[];let Ic={toasts:[]};function ur(n){Ic=Xb(Ic,n),Zc.forEach(r=>{r(Ic)})}function Kb({...n}){const r=Yb(),c=h=>ur({type:"UPDATE_TOAST",toast:{...h,id:r}}),d=()=>ur({type:"DISMISS_TOAST",toastId:r});return ur({type:"ADD_TOAST",toast:{...n,id:r,open:!0,onOpenChange:h=>{h||d()}}}),{id:r,dismiss:d,update:c}}function Bs(){const[n,r]=u.useState(Ic);return u.useEffect(()=>(Zc.push(r),()=>{const c=Zc.indexOf(r);c>-1&&Zc.splice(c,1)}),[n]),{...n,toast:Kb,dismiss:c=>ur({type:"DISMISS_TOAST",toastId:c})}}const Zb=n=>{const r=[];for(let c=0;c{try{T(!0);const H=await qc.get("https://v1.hitokoto.cn/?c=a&c=b&c=c&c=d&c=h&c=i&c=k");k({hitokoto:H.data.hitokoto,from:H.data.from||H.data.from_who||"未知"})}catch(H){console.error("获取一言失败:",H),k({hitokoto:"人生就像一盒巧克力,你永远不知道下一颗是什么味道。",from:"阿甘正传"})}finally{T(!1)}},[]),E=u.useCallback(async()=>{try{const H=localStorage.getItem("access-token"),ne=await qc.get("/api/webui/system/status",{headers:{Authorization:`Bearer ${H}`}});K(ne.data)}catch(H){console.error("获取机器人状态失败:",H),K(null)}},[]),B=async()=>{if(!U)try{R(!0);const H=localStorage.getItem("access-token");await qc.post("/api/webui/system/restart",{},{headers:{Authorization:`Bearer ${H}`}}),ee({title:"重启中",description:"麦麦正在重启,请稍候..."}),setTimeout(()=>{E(),R(!1)},3e3)}catch(H){console.error("重启失败:",H),ee({title:"重启失败",description:"无法重启麦麦,请检查控制台",variant:"destructive"}),R(!1)}},X=u.useCallback(async()=>{try{const H=localStorage.getItem("access-token"),ne=await qc.get(`/api/webui/statistics/dashboard?hours=${f}`,{headers:{Authorization:`Bearer ${H}`}});r(ne.data),d(!1),x(100)}catch(H){console.error("Failed to fetch dashboard data:",H),d(!1),x(100)}},[f]);if(u.useEffect(()=>{if(!c)return;x(0);const H=setTimeout(()=>x(15),200),ne=setTimeout(()=>x(30),800),S=setTimeout(()=>x(45),2e3),me=setTimeout(()=>x(60),4e3),he=setTimeout(()=>x(75),6500),Q=setTimeout(()=>x(85),9e3),oe=setTimeout(()=>x(92),11e3);return()=>{clearTimeout(H),clearTimeout(ne),clearTimeout(S),clearTimeout(me),clearTimeout(he),clearTimeout(Q),clearTimeout(oe)}},[c]),u.useEffect(()=>{X(),V(),E()},[X,V,E]),u.useEffect(()=>{if(!g)return;const H=setInterval(()=>{X(),E()},3e4);return()=>clearInterval(H)},[g,X,E]),c||!n)return e.jsx("div",{className:"flex items-center justify-center h-[calc(100vh-200px)]",children:e.jsxs("div",{className:"text-center space-y-6 w-full max-w-md px-4",children:[e.jsx(ft,{className:"h-12 w-12 animate-spin mx-auto text-primary"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-lg font-medium",children:"加载统计数据中..."}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"正在获取麦麦运行数据"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(Sr,{value:h,className:"h-2"}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:[h,"%"]})]})]})});const{summary:w,model_stats:D=[],hourly_data:te=[],daily_data:xe=[],recent_activity:be=[]}=n,ye=w??{total_requests:0,total_cost:0,total_tokens:0,online_time:0,total_messages:0,total_replies:0,avg_response_time:0,cost_per_hour:0,tokens_per_hour:0},ve=H=>{const ne=Math.floor(H/3600),S=Math.floor(H%3600/60);return`${ne}小时${S}分钟`},pe=H=>new Date(H).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),Ne=Zb(D.length),y=D.map((H,ne)=>({name:H.model_name,value:H.request_count,fill:Ne[ne]})),q={requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"},tokens:{label:"Tokens",color:"hsl(var(--chart-3))"}};return e.jsx(es,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"实时监控面板"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"麦麦运行状态和统计数据一览"})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(Kt,{value:f.toString(),onValueChange:H=>j(Number(H)),children:e.jsxs(Rt,{className:"grid grid-cols-3 w-full sm:w-auto",children:[e.jsx(He,{value:"24",children:"24小时"}),e.jsx(He,{value:"168",children:"7天"}),e.jsx(He,{value:"720",children:"30天"})]})}),e.jsxs(N,{variant:g?"default":"outline",size:"sm",onClick:()=>_(!g),className:"gap-2",children:[e.jsx(ft,{className:`h-4 w-4 ${g?"animate-spin":""}`}),e.jsx("span",{className:"hidden sm:inline",children:"自动刷新"})]}),e.jsx(N,{variant:"outline",size:"sm",onClick:X,children:e.jsx(ft,{className:"h-4 w-4"})})]})]}),e.jsxs("div",{className:"flex items-center gap-3 px-4 py-2 rounded-lg border border-dashed border-muted-foreground/30 bg-muted/20",children:[z?e.jsx(Hb,{className:"h-5 flex-1"}):v?e.jsxs("p",{className:"flex-1 text-sm text-muted-foreground italic truncate",children:['"',v.hitokoto,'" —— ',v.from]}):null,e.jsx(N,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0",onClick:V,disabled:z,children:e.jsx(ft,{className:`h-3.5 w-3.5 ${z?"animate-spin":""}`})})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-3",children:[e.jsxs(Be,{className:"lg:col-span-1",children:[e.jsx(gs,{className:"pb-3",children:e.jsxs(js,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(Nr,{className:"h-4 w-4"}),"麦麦状态"]})}),e.jsx(bs,{children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"flex items-center gap-2",children:L?.running?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-3 w-3 rounded-full bg-green-500 animate-pulse"}),e.jsxs(Xe,{variant:"outline",className:"text-green-600 border-green-300 bg-green-50",children:[e.jsx(xa,{className:"h-3 w-3 mr-1"}),"运行中"]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-3 w-3 rounded-full bg-red-500"}),e.jsxs(Xe,{variant:"outline",className:"text-red-600 border-red-300 bg-red-50",children:[e.jsx(Aa,{className:"h-3 w-3 mr-1"}),"已停止"]})]})}),L&&e.jsxs("div",{className:"text-xs text-muted-foreground",children:[e.jsxs("span",{children:["v",L.version]}),e.jsx("span",{className:"mx-2",children:"|"}),e.jsxs("span",{children:["运行 ",ve(L.uptime)]})]})]})})]}),e.jsxs(Be,{className:"lg:col-span-2",children:[e.jsx(gs,{className:"pb-3",children:e.jsxs(js,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(ln,{className:"h-4 w-4"}),"快速操作"]})}),e.jsx(bs,{children:e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(N,{variant:"outline",size:"sm",onClick:B,disabled:U,className:"gap-2",children:[e.jsx(Wc,{className:`h-4 w-4 ${U?"animate-spin":""}`}),U?"重启中...":"重启麦麦"]}),e.jsx(N,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Kc,{to:"/logs",children:[e.jsx(Ma,{className:"h-4 w-4"}),"查看日志"]})}),e.jsx(N,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Kc,{to:"/plugins",children:[e.jsx(NN,{className:"h-4 w-4"}),"插件管理"]})}),e.jsx(N,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Kc,{to:"/settings",children:[e.jsx(Rl,{className:"h-4 w-4"}),"系统设置"]})})]})})]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-4",children:[e.jsxs(Be,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"总请求数"}),e.jsx(bN,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsx("div",{className:"text-2xl font-bold",children:ye.total_requests.toLocaleString()}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["最近",f<48?f+"小时":Math.floor(f/24)+"天"]})]})]}),e.jsxs(Be,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"总花费"}),e.jsx(wN,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:["¥",ye.total_cost.toFixed(2)]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:ye.cost_per_hour>0?`¥${ye.cost_per_hour.toFixed(2)}/小时`:"暂无数据"})]})]}),e.jsxs(Be,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"Token消耗"}),e.jsx(eo,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:[(ye.total_tokens/1e3).toFixed(1),"K"]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:ye.tokens_per_hour>0?`${(ye.tokens_per_hour/1e3).toFixed(1)}K/小时`:"暂无数据"})]})]}),e.jsxs(Be,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"平均响应"}),e.jsx(ln,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:[ye.avg_response_time.toFixed(2),"s"]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"API平均耗时"})]})]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 sm:grid-cols-3",children:[e.jsxs(Be,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"在线时长"}),e.jsx(Wn,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsx(bs,{children:e.jsx("div",{className:"text-xl font-bold",children:ve(ye.online_time)})})]}),e.jsxs(Be,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"消息处理"}),e.jsx(si,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsx("div",{className:"text-xl font-bold",children:ye.total_messages.toLocaleString()}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["回复 ",ye.total_replies.toLocaleString()," 条"]})]})]}),e.jsxs(Be,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"成本效率"}),e.jsx(_N,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsx("div",{className:"text-xl font-bold",children:ye.total_messages>0?`¥${(ye.total_cost/ye.total_messages*100).toFixed(2)}`:"¥0.00"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"每100条消息"})]})]})]}),e.jsxs(Kt,{defaultValue:"trends",className:"space-y-4",children:[e.jsxs(Rt,{className:"grid w-full grid-cols-2 sm:grid-cols-4",children:[e.jsx(He,{value:"trends",children:"趋势"}),e.jsx(He,{value:"models",children:"模型"}),e.jsx(He,{value:"activity",children:"活动"}),e.jsx(He,{value:"daily",children:"日统计"})]}),e.jsxs(We,{value:"trends",className:"space-y-4",children:[e.jsxs(Be,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"请求趋势"}),e.jsxs(Zs,{children:["最近",f,"小时的请求量变化"]})]}),e.jsx(bs,{children:e.jsx(Zn,{config:q,className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:e.jsxs(Wy,{data:te,children:[e.jsx(Gc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Vc,{dataKey:"timestamp",tickFormatter:H=>pe(H),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{content:e.jsx(In,{labelFormatter:H=>pe(H)})}),e.jsx(eN,{type:"monotone",dataKey:"requests",stroke:"var(--color-requests)",strokeWidth:2})]})})})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[e.jsxs(Be,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"花费趋势"}),e.jsx(Zs,{children:"API调用成本变化"})]}),e.jsx(bs,{children:e.jsx(Zn,{config:q,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:e.jsxs(Su,{data:te,children:[e.jsx(Gc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Vc,{dataKey:"timestamp",tickFormatter:H=>pe(H),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{content:e.jsx(In,{labelFormatter:H=>pe(H)})}),e.jsx(Fc,{dataKey:"cost",fill:"var(--color-cost)"})]})})})]}),e.jsxs(Be,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"Token消耗"}),e.jsx(Zs,{children:"Token使用量变化"})]}),e.jsx(bs,{children:e.jsx(Zn,{config:q,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:e.jsxs(Su,{data:te,children:[e.jsx(Gc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Vc,{dataKey:"timestamp",tickFormatter:H=>pe(H),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{content:e.jsx(In,{labelFormatter:H=>pe(H)})}),e.jsx(Fc,{dataKey:"tokens",fill:"var(--color-tokens)"})]})})})]})]})]}),e.jsx(We,{value:"models",className:"space-y-4",children:e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[e.jsxs(Be,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"模型请求分布"}),e.jsxs(Zs,{children:["各模型使用占比 (共 ",D.length," 个模型)"]})]}),e.jsx(bs,{children:e.jsx(Zn,{config:Object.fromEntries(D.map((H,ne)=>[H.model_name,{label:H.model_name,color:Ne[ne]}])),className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:e.jsxs(sN,{children:[e.jsx(lr,{content:e.jsx(In,{})}),e.jsx(tN,{data:y,cx:"50%",cy:"50%",labelLine:!1,label:({name:H,percent:ne})=>ne&&ne<.05?"":`${H} ${ne?(ne*100).toFixed(0):0}%`,outerRadius:100,dataKey:"value",children:y.map((H,ne)=>e.jsx(aN,{fill:H.fill},`cell-${ne}`))})]})})})]}),e.jsxs(Be,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"模型详细统计"}),e.jsx(Zs,{children:"请求数、花费和性能"})]}),e.jsx(bs,{children:e.jsx(es,{className:"h-[300px] sm:h-[400px]",children:e.jsx("div",{className:"space-y-3",children:D.map((H,ne)=>e.jsxs("div",{className:"p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("h4",{className:"font-semibold text-sm truncate flex-1 min-w-0",children:H.model_name}),e.jsx("div",{className:"w-3 h-3 rounded-full ml-2 flex-shrink-0",style:{backgroundColor:`hsl(var(--chart-${ne%5+1}))`}})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"请求数:"}),e.jsx("span",{className:"ml-1 font-medium",children:H.request_count.toLocaleString()})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"花费:"}),e.jsxs("span",{className:"ml-1 font-medium",children:["¥",H.total_cost.toFixed(2)]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),e.jsxs("span",{className:"ml-1 font-medium",children:[(H.total_tokens/1e3).toFixed(1),"K"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"平均耗时:"}),e.jsxs("span",{className:"ml-1 font-medium",children:[H.avg_response_time.toFixed(2),"s"]})]})]})]},ne))})})})]})]})}),e.jsx(We,{value:"activity",children:e.jsxs(Be,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"最近活动"}),e.jsx(Zs,{children:"最新的API调用记录"})]}),e.jsx(bs,{children:e.jsx(es,{className:"h-[400px] sm:h-[500px]",children:e.jsx("div",{className:"space-y-2",children:be.map((H,ne)=>e.jsxs("div",{className:"p-3 sm:p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-2 mb-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-sm truncate",children:H.model}),e.jsx("div",{className:"text-xs text-muted-foreground",children:H.request_type})]}),e.jsx("div",{className:"text-xs text-muted-foreground flex-shrink-0",children:pe(H.timestamp)})]}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-2 text-xs",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),e.jsx("span",{className:"ml-1",children:H.tokens})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"花费:"}),e.jsxs("span",{className:"ml-1",children:["¥",H.cost.toFixed(4)]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"耗时:"}),e.jsxs("span",{className:"ml-1",children:[H.time_cost.toFixed(2),"s"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"状态:"}),e.jsx("span",{className:`ml-1 ${H.status==="success"?"text-green-600":"text-red-600"}`,children:H.status})]})]})]},ne))})})})]})}),e.jsx(We,{value:"daily",children:e.jsxs(Be,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"每日统计"}),e.jsx(Zs,{children:"最近7天的数据汇总"})]}),e.jsx(bs,{children:e.jsx(Zn,{config:{requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"}},className:"h-[400px] sm:h-[500px] w-full aspect-auto",children:e.jsxs(Su,{data:xe,children:[e.jsx(Gc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Vc,{dataKey:"timestamp",tickFormatter:H=>{const ne=new Date(H);return`${ne.getMonth()+1}/${ne.getDate()}`},stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{yAxisId:"left",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{yAxisId:"right",orientation:"right",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{content:e.jsx(In,{labelFormatter:H=>new Date(H).toLocaleDateString("zh-CN")})}),e.jsx(Vb,{content:e.jsx(Cg,{})}),e.jsx(Fc,{yAxisId:"left",dataKey:"requests",fill:"var(--color-requests)"}),e.jsx(Fc,{yAxisId:"right",dataKey:"cost",fill:"var(--color-cost)"})]})})})]})})]})]})})}const Jb={theme:"system",setTheme:()=>null},kg=u.createContext(Jb),Yu=()=>{const n=u.useContext(kg);if(n===void 0)throw new Error("useTheme must be used within a ThemeProvider");return n},Pb=(n,r,c)=>{const d=document.documentElement.classList.contains("no-animations");if(!document.startViewTransition||d){r(n);return}const h=c.clientX,x=c.clientY,f=Math.hypot(Math.max(h,innerWidth-h),Math.max(x,innerHeight-x));document.startViewTransition(()=>{r(n)}).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${h}px ${x}px)`,`circle(${f}px at ${h}px ${x}px)`]},{duration:500,easing:"ease-in-out",pseudoElement:"::view-transition-new(root)"})})},Tg=u.createContext(void 0),Eg=()=>{const n=u.useContext(Tg);if(n===void 0)throw new Error("useAnimation must be used within an AnimationProvider");return n},qe=u.forwardRef(({className:n,...r},c)=>e.jsx(Cp,{className:$("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",n),...r,ref:c,children:e.jsx(Dy,{className:$("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));qe.displayName=Cp.displayName;const Wb=ai("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),b=u.forwardRef(({className:n,...r},c)=>e.jsx(Kp,{ref:c,className:$(Wb(),n),...r}));b.displayName=Kp.displayName;const ce=u.forwardRef(({className:n,type:r,...c},d)=>e.jsx("input",{type:r,className:$("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",n),ref:d,...c}));ce.displayName="Input";const e0=[{id:"minLength",label:"长度至少 10 位",description:"Token 长度必须大于等于 10 个字符",validate:n=>n.length>=10},{id:"hasUppercase",label:"包含大写字母",description:"至少包含一个大写字母 (A-Z)",validate:n=>/[A-Z]/.test(n)},{id:"hasLowercase",label:"包含小写字母",description:"至少包含一个小写字母 (a-z)",validate:n=>/[a-z]/.test(n)},{id:"hasSpecialChar",label:"包含特殊符号",description:"至少包含一个特殊符号 (!@#$%^&*()_+-=[]{}|;:,.<>?/)",validate:n=>/[!@#$%^&*()_+\-=[\]{}|;:,.<>?/]/.test(n)}];function s0(n){const r=e0.map(d=>({id:d.id,label:d.label,description:d.description,passed:d.validate(n)}));return{isValid:r.every(d=>d.passed),rules:r}}const Xu="0.11.6 Beta",Ku="MaiBot Dashboard",t0=`${Ku} v${Xu}`,a0=(n="v")=>`${n}${Xu}`,_t={THEME:"maibot-ui-theme",ACCENT_COLOR:"accent-color",ENABLE_ANIMATIONS:"maibot-animations",ENABLE_WAVES_BACKGROUND:"maibot-waves-background",LOG_CACHE_SIZE:"maibot-log-cache-size",LOG_AUTO_SCROLL:"maibot-log-auto-scroll",LOG_FONT_SIZE:"maibot-log-font-size",LOG_LINE_SPACING:"maibot-log-line-spacing",DATA_SYNC_INTERVAL:"maibot-data-sync-interval",WS_RECONNECT_INTERVAL:"maibot-ws-reconnect-interval",WS_MAX_RECONNECT_ATTEMPTS:"maibot-ws-max-reconnect-attempts",ACCESS_TOKEN:"access-token",COMPLETED_TOURS:"maibot-completed-tours"},Ea={theme:"system",accentColor:"blue",enableAnimations:!0,enableWavesBackground:!0,logCacheSize:1e3,logAutoScroll:!0,logFontSize:"xs",logLineSpacing:4,dataSyncInterval:30,wsReconnectInterval:3e3,wsMaxReconnectAttempts:10};function Fs(n){const r=zg(n),c=localStorage.getItem(r);if(c===null)return Ea[n];const d=Ea[n];if(typeof d=="boolean")return c==="true";if(typeof d=="number"){const h=parseFloat(c);return isNaN(h)?d:h}return c}function Pn(n,r){const c=zg(n);localStorage.setItem(c,String(r)),window.dispatchEvent(new CustomEvent("maibot-settings-change",{detail:{key:n,value:r}}))}function l0(){return{theme:Fs("theme"),accentColor:Fs("accentColor"),enableAnimations:Fs("enableAnimations"),enableWavesBackground:Fs("enableWavesBackground"),logCacheSize:Fs("logCacheSize"),logAutoScroll:Fs("logAutoScroll"),logFontSize:Fs("logFontSize"),logLineSpacing:Fs("logLineSpacing"),dataSyncInterval:Fs("dataSyncInterval"),wsReconnectInterval:Fs("wsReconnectInterval"),wsMaxReconnectAttempts:Fs("wsMaxReconnectAttempts")}}function n0(){const n=l0(),r=localStorage.getItem(_t.COMPLETED_TOURS),c=r?JSON.parse(r):[];return{...n,completedTours:c}}function i0(n){const r=[],c=[];for(const[d,h]of Object.entries(n)){if(d==="completedTours"){Array.isArray(h)?(localStorage.setItem(_t.COMPLETED_TOURS,JSON.stringify(h)),r.push("completedTours")):c.push("completedTours");continue}if(d in Ea){const x=d,f=Ea[x];if(typeof h==typeof f){if(x==="theme"&&!["light","dark","system"].includes(h)){c.push(d);continue}if(x==="logFontSize"&&!["xs","sm","base"].includes(h)){c.push(d);continue}Pn(x,h),r.push(d)}else c.push(d)}else c.push(d)}return{success:r.length>0,imported:r,skipped:c}}function r0(){for(const n of Object.keys(Ea))Pn(n,Ea[n]);localStorage.removeItem(_t.COMPLETED_TOURS),window.dispatchEvent(new CustomEvent("maibot-settings-reset"))}function c0(){const n=[],r=[],c=new Set([_t.ACCESS_TOKEN]),d=[];for(let h=0;hd.size-c.size),{used:n,items:localStorage.length,details:r}}function o0(n){if(n===0)return"0 B";const r=1024,c=["B","KB","MB"],d=Math.floor(Math.log(n)/Math.log(r));return parseFloat((n/Math.pow(r,d)).toFixed(2))+" "+c[d]}function zg(n){return{theme:_t.THEME,accentColor:_t.ACCENT_COLOR,enableAnimations:_t.ENABLE_ANIMATIONS,enableWavesBackground:_t.ENABLE_WAVES_BACKGROUND,logCacheSize:_t.LOG_CACHE_SIZE,logAutoScroll:_t.LOG_AUTO_SCROLL,logFontSize:_t.LOG_FONT_SIZE,logLineSpacing:_t.LOG_LINE_SPACING,dataSyncInterval:_t.DATA_SYNC_INTERVAL,wsReconnectInterval:_t.WS_RECONNECT_INTERVAL,wsMaxReconnectAttempts:_t.WS_MAX_RECONNECT_ATTEMPTS}[n]}const za=u.forwardRef(({className:n,...r},c)=>e.jsxs(kp,{ref:c,className:$("relative flex w-full touch-none select-none items-center",n),...r,children:[e.jsx(Oy,{className:"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20",children:e.jsx(Ry,{className:"absolute h-full bg-primary"})}),e.jsx(Ly,{className:"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"})]}));za.displayName=kp.displayName;class d0{ws=null;reconnectTimeout=null;reconnectAttempts=0;heartbeatInterval=null;logCallbacks=new Set;connectionCallbacks=new Set;isConnected=!1;logCache=[];getMaxCacheSize(){return Fs("logCacheSize")}getMaxReconnectAttempts(){return Fs("wsMaxReconnectAttempts")}getReconnectInterval(){return Fs("wsReconnectInterval")}getWebSocketUrl(){{const r=window.location.protocol==="https:"?"wss:":"ws:",c=window.location.host;return`${r}//${c}/ws/logs`}}connect(){if(this.ws?.readyState===WebSocket.OPEN||this.ws?.readyState===WebSocket.CONNECTING)return;const r=this.getWebSocketUrl();try{this.ws=new WebSocket(r),this.ws.onopen=()=>{this.isConnected=!0,this.reconnectAttempts=0,this.notifyConnection(!0),this.startHeartbeat()},this.ws.onmessage=c=>{try{if(c.data==="pong")return;const d=JSON.parse(c.data);this.notifyLog(d)}catch(d){console.error("解析日志消息失败:",d)}},this.ws.onerror=c=>{console.error("❌ WebSocket 错误:",c),this.isConnected=!1,this.notifyConnection(!1)},this.ws.onclose=()=>{this.isConnected=!1,this.notifyConnection(!1),this.stopHeartbeat(),this.attemptReconnect()}}catch(c){console.error("创建 WebSocket 连接失败:",c),this.attemptReconnect()}}attemptReconnect(){const r=this.getMaxReconnectAttempts();if(this.reconnectAttempts>=r)return;this.reconnectAttempts+=1;const c=this.getReconnectInterval(),d=Math.min(c*this.reconnectAttempts,3e4);this.reconnectTimeout=window.setTimeout(()=>{this.connect()},d)}startHeartbeat(){this.heartbeatInterval=window.setInterval(()=>{this.ws?.readyState===WebSocket.OPEN&&this.ws.send("ping")},3e4)}stopHeartbeat(){this.heartbeatInterval!==null&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}disconnect(){this.reconnectTimeout!==null&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.stopHeartbeat(),this.ws&&(this.ws.close(),this.ws=null),this.isConnected=!1,this.reconnectAttempts=0}onLog(r){return this.logCallbacks.add(r),()=>this.logCallbacks.delete(r)}onConnectionChange(r){return this.connectionCallbacks.add(r),r(this.isConnected),()=>this.connectionCallbacks.delete(r)}notifyLog(r){if(!this.logCache.some(d=>d.id===r.id)){this.logCache.push(r);const d=this.getMaxCacheSize();this.logCache.length>d&&(this.logCache=this.logCache.slice(-d)),this.logCallbacks.forEach(h=>{try{h(r)}catch(x){console.error("日志回调执行失败:",x)}})}}notifyConnection(r){this.connectionCallbacks.forEach(c=>{try{c(r)}catch(d){console.error("连接状态回调执行失败:",d)}})}getAllLogs(){return[...this.logCache]}clearLogs(){this.logCache=[]}getConnectionStatus(){return this.isConnected}}const an=new d0;typeof window<"u"&&an.connect();const Os=iN,ni=rN,u0=nN,Zu=Jp,Mg=u.forwardRef(({className:n,...r},c)=>e.jsx(Zp,{ref:c,className:$("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...r}));Mg.displayName=Zp.displayName;const Es=u.forwardRef(({className:n,children:r,preventOutsideClose:c=!1,...d},h)=>e.jsxs(u0,{children:[e.jsx(Mg,{}),e.jsxs(Ip,{ref:h,className:$("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",n),onPointerDownOutside:c?x=>x.preventDefault():void 0,onInteractOutside:c?x=>x.preventDefault():void 0,...d,children:[r,e.jsxs(Jp,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[e.jsx(li,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Es.displayName=Ip.displayName;const zs=({className:n,...r})=>e.jsx("div",{className:$("flex flex-col space-y-1.5 text-center sm:text-left",n),...r});zs.displayName="DialogHeader";const Is=({className:n,...r})=>e.jsx("div",{className:$("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",n),...r});Is.displayName="DialogFooter";const Ms=u.forwardRef(({className:n,...r},c)=>e.jsx(Pp,{ref:c,className:$("text-lg font-semibold leading-none tracking-tight",n),...r}));Ms.displayName=Pp.displayName;const $s=u.forwardRef(({className:n,...r},c)=>e.jsx(Wp,{ref:c,className:$("text-sm text-muted-foreground",n),...r}));$s.displayName=Wp.displayName;const ps=By,Qs=Hy,m0=Uy,Ag=u.forwardRef(({className:n,...r},c)=>e.jsx(Tp,{className:$("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...r,ref:c}));Ag.displayName=Tp.displayName;const cs=u.forwardRef(({className:n,...r},c)=>e.jsxs(m0,{children:[e.jsx(Ag,{}),e.jsx(Ep,{ref:c,className:$("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",n),...r})]}));cs.displayName=Ep.displayName;const os=({className:n,...r})=>e.jsx("div",{className:$("flex flex-col space-y-2 text-center sm:text-left",n),...r});os.displayName="AlertDialogHeader";const ds=({className:n,...r})=>e.jsx("div",{className:$("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",n),...r});ds.displayName="AlertDialogFooter";const us=u.forwardRef(({className:n,...r},c)=>e.jsx(zp,{ref:c,className:$("text-lg font-semibold",n),...r}));us.displayName=zp.displayName;const ms=u.forwardRef(({className:n,...r},c)=>e.jsx(Mp,{ref:c,className:$("text-sm text-muted-foreground",n),...r}));ms.displayName=Mp.displayName;const hs=u.forwardRef(({className:n,...r},c)=>e.jsx(Ap,{ref:c,className:$(gr(),n),...r}));hs.displayName=Ap.displayName;const xs=u.forwardRef(({className:n,...r},c)=>e.jsx(Dp,{ref:c,className:$(gr({variant:"outline"}),"mt-2 sm:mt-0",n),...r}));xs.displayName=Dp.displayName;function h0(){return e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"系统设置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理您的应用偏好设置"})]})}),e.jsxs(Kt,{defaultValue:"appearance",className:"w-full",children:[e.jsxs(Rt,{className:"grid w-full grid-cols-2 sm:grid-cols-4 gap-0.5 sm:gap-1 h-auto p-1",children:[e.jsxs(He,{value:"appearance",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(fg,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"外观"})]}),e.jsxs(He,{value:"security",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(SN,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"安全"})]}),e.jsxs(He,{value:"other",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(Rl,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"其他"})]}),e.jsxs(He,{value:"about",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(Xt,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"关于"})]})]}),e.jsxs(es,{className:"h-[calc(100vh-240px)] sm:h-[calc(100vh-280px)] mt-4 sm:mt-6",children:[e.jsx(We,{value:"appearance",className:"mt-0",children:e.jsx(x0,{})}),e.jsx(We,{value:"security",className:"mt-0",children:e.jsx(f0,{})}),e.jsx(We,{value:"other",className:"mt-0",children:e.jsx(p0,{})}),e.jsx(We,{value:"about",className:"mt-0",children:e.jsx(g0,{})})]})]})]})}function lp(n){const r=document.documentElement,d={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[n];if(d)r.style.setProperty("--primary",d.hsl),d.gradient?(r.style.setProperty("--primary-gradient",d.gradient),r.classList.add("has-gradient")):(r.style.removeProperty("--primary-gradient"),r.classList.remove("has-gradient"));else if(n.startsWith("#")){const h=x=>{x=x.replace("#","");const f=parseInt(x.substring(0,2),16)/255,j=parseInt(x.substring(2,4),16)/255,g=parseInt(x.substring(4,6),16)/255,_=Math.max(f,j,g),v=Math.min(f,j,g);let k=0,z=0;const T=(_+v)/2;if(_!==v){const L=_-v;switch(z=T>.5?L/(2-_-v):L/(_+v),_){case f:k=((j-g)/L+(jlocalStorage.getItem("accent-color")||"blue");u.useEffect(()=>{const _=localStorage.getItem("accent-color")||"blue";lp(_)},[]);const g=_=>{j(_),localStorage.setItem("accent-color",_),lp(_)};return e.jsxs("div",{className:"space-y-6 sm:space-y-8",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题模式"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 sm:gap-4",children:[e.jsx(Au,{value:"light",current:n,onChange:r,label:"浅色",description:"始终使用浅色主题"}),e.jsx(Au,{value:"dark",current:n,onChange:r,label:"深色",description:"始终使用深色主题"}),e.jsx(Au,{value:"system",current:n,onChange:r,label:"跟随系统",description:"根据系统设置自动切换"})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题色"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"单色"}),e.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[e.jsx(da,{value:"blue",current:f,onChange:g,label:"蓝色",colorClass:"bg-blue-500"}),e.jsx(da,{value:"purple",current:f,onChange:g,label:"紫色",colorClass:"bg-purple-500"}),e.jsx(da,{value:"green",current:f,onChange:g,label:"绿色",colorClass:"bg-green-500"}),e.jsx(da,{value:"orange",current:f,onChange:g,label:"橙色",colorClass:"bg-orange-500"}),e.jsx(da,{value:"pink",current:f,onChange:g,label:"粉色",colorClass:"bg-pink-500"}),e.jsx(da,{value:"red",current:f,onChange:g,label:"红色",colorClass:"bg-red-500"})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"渐变色"}),e.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[e.jsx(da,{value:"gradient-sunset",current:f,onChange:g,label:"日落",colorClass:"bg-gradient-to-r from-orange-500 to-pink-500"}),e.jsx(da,{value:"gradient-ocean",current:f,onChange:g,label:"海洋",colorClass:"bg-gradient-to-r from-blue-500 to-cyan-500"}),e.jsx(da,{value:"gradient-forest",current:f,onChange:g,label:"森林",colorClass:"bg-gradient-to-r from-green-500 to-emerald-500"}),e.jsx(da,{value:"gradient-aurora",current:f,onChange:g,label:"极光",colorClass:"bg-gradient-to-r from-purple-500 to-pink-500"}),e.jsx(da,{value:"gradient-fire",current:f,onChange:g,label:"烈焰",colorClass:"bg-gradient-to-r from-red-500 to-orange-500"}),e.jsx(da,{value:"gradient-twilight",current:f,onChange:g,label:"暮光",colorClass:"bg-gradient-to-r from-indigo-500 to-purple-500"})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"自定义颜色"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 sm:gap-4",children:[e.jsx("div",{className:"flex-1",children:e.jsx("input",{type:"color",value:f.startsWith("#")?f:"#3b82f6",onChange:_=>g(_.target.value),className:"h-10 sm:h-12 w-full rounded-lg border-2 border-border cursor-pointer",title:"选择自定义颜色"})}),e.jsx("div",{className:"flex-1",children:e.jsx(ce,{type:"text",value:f,onChange:_=>g(_.target.value),placeholder:"#3b82f6",className:"font-mono text-sm"})})]}),e.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground mt-2",children:"点击色块选择颜色,或手动输入 HEX 颜色代码"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"动画效果"}),e.jsxs("div",{className:"space-y-2 sm:space-y-3",children:[e.jsx("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5 flex-1",children:[e.jsx(b,{htmlFor:"animations",className:"text-base font-medium cursor-pointer",children:"启用动画效果"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后将禁用所有过渡动画和特效,提升性能"})]}),e.jsx(qe,{id:"animations",checked:c,onCheckedChange:d})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5 flex-1",children:[e.jsx(b,{htmlFor:"waves-background",className:"text-base font-medium cursor-pointer",children:"登录页波浪背景"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后登录页将使用纯色背景,适合低性能设备"})]}),e.jsx(qe,{id:"waves-background",checked:h,onCheckedChange:x})]})})]})]})]})}function f0(){const n=It(),[r,c]=u.useState(""),[d,h]=u.useState(""),[x,f]=u.useState(!1),[j,g]=u.useState(!1),[_,v]=u.useState(!1),[k,z]=u.useState(!1),[T,L]=u.useState(!1),[K,U]=u.useState(!1),[R,ee]=u.useState(""),[V,E]=u.useState(!1),{toast:B}=Bs(),X=u.useMemo(()=>s0(d),[d]),w=()=>localStorage.getItem("access-token")||"",D=async pe=>{try{await navigator.clipboard.writeText(pe),L(!0),B({title:"复制成功",description:"Token 已复制到剪贴板"}),setTimeout(()=>L(!1),2e3)}catch{B({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},te=async()=>{if(!d.trim()){B({title:"输入错误",description:"请输入新的 Token",variant:"destructive"});return}if(!X.isValid){const pe=X.rules.filter(Ne=>!Ne.passed).map(Ne=>Ne.label).join(", ");B({title:"格式错误",description:`Token 不符合要求: ${pe}`,variant:"destructive"});return}v(!0);try{const pe=w(),Ne=await fetch("/api/webui/auth/update",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${pe}`},body:JSON.stringify({new_token:d.trim()})}),y=await Ne.json();Ne.ok&&y.success?(localStorage.setItem("access-token",d.trim()),h(""),r&&c(d.trim()),B({title:"更新成功",description:"Access Token 已更新,即将跳转到登录页"}),setTimeout(()=>{localStorage.removeItem("access-token"),n({to:"/auth"})},1500)):B({title:"更新失败",description:y.message||"无法更新 Token",variant:"destructive"})}catch(pe){console.error("更新 Token 错误:",pe),B({title:"更新失败",description:"连接服务器失败",variant:"destructive"})}finally{v(!1)}},xe=async()=>{z(!0);try{const pe=w(),Ne=await fetch("/api/webui/auth/regenerate",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${pe}`}}),y=await Ne.json();Ne.ok&&y.success?(localStorage.setItem("access-token",y.token),c(y.token),ee(y.token),U(!0),E(!1),B({title:"生成成功",description:"新的 Access Token 已生成,请及时保存"})):B({title:"生成失败",description:y.message||"无法生成新 Token",variant:"destructive"})}catch(pe){console.error("生成 Token 错误:",pe),B({title:"生成失败",description:"连接服务器失败",variant:"destructive"})}finally{z(!1)}},be=async()=>{try{await navigator.clipboard.writeText(R),E(!0),B({title:"复制成功",description:"Token 已复制到剪贴板"})}catch{B({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},ye=()=>{U(!1),setTimeout(()=>{ee(""),E(!1)},300),setTimeout(()=>{localStorage.removeItem("access-token"),n({to:"/auth"})},500)},ve=pe=>{pe||ye()};return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsx(Os,{open:K,onOpenChange:ve,children:e.jsxs(Es,{className:"sm:max-w-md",children:[e.jsxs(zs,{children:[e.jsxs(Ms,{className:"flex items-center gap-2",children:[e.jsx(ya,{className:"h-5 w-5 text-yellow-500"}),"新的 Access Token"]}),e.jsx($s,{children:"这是您的新 Token,请立即保存。关闭此窗口后将跳转到登录页面。"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"rounded-lg border-2 border-primary/20 bg-primary/5 p-4",children:[e.jsx(b,{className:"text-xs text-muted-foreground mb-2 block",children:"您的新 Token (64位安全令牌)"}),e.jsx("div",{className:"font-mono text-sm break-all select-all bg-background p-3 rounded border",children:R})]}),e.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ya,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5"}),e.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[e.jsx("p",{className:"font-semibold",children:"重要提示"}),e.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[e.jsx("li",{children:"此 Token 仅显示一次,关闭后无法再查看"}),e.jsx("li",{children:"请立即复制并保存到安全的位置"}),e.jsx("li",{children:"关闭窗口后将自动跳转到登录页面"}),e.jsx("li",{children:"请使用新 Token 重新登录系统"})]})]})]})})]}),e.jsxs(Is,{className:"gap-2 sm:gap-0",children:[e.jsx(N,{variant:"outline",onClick:be,className:"gap-2",children:V?e.jsxs(e.Fragment,{children:[e.jsx(ha,{className:"h-4 w-4 text-green-500"}),"已复制"]}):e.jsxs(e.Fragment,{children:[e.jsx(so,{className:"h-4 w-4"}),"复制 Token"]})}),e.jsx(N,{onClick:ye,children:"我已保存,关闭"})]})]})}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"当前 Access Token"}),e.jsx("div",{className:"space-y-3 sm:space-y-4",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"current-token",className:"text-sm",children:"您的访问令牌"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(ce,{id:"current-token",type:x?"text":"password",value:r||w(),readOnly:!0,className:"pr-10 font-mono text-sm",placeholder:"点击查看按钮显示 Token"}),e.jsx("button",{onClick:()=>{r||c(w()),f(!x)},className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:x?"隐藏":"显示",children:x?e.jsx(mr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Zt,{className:"h-4 w-4 text-muted-foreground"})})]}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[e.jsx(N,{variant:"outline",size:"icon",onClick:()=>D(w()),title:"复制到剪贴板",className:"flex-shrink-0",children:T?e.jsx(ha,{className:"h-4 w-4 text-green-500"}):e.jsx(so,{className:"h-4 w-4"})}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(N,{variant:"outline",disabled:k,className:"gap-2 flex-1 sm:flex-none",children:[e.jsx(ft,{className:$("h-4 w-4",k&&"animate-spin")}),e.jsx("span",{className:"hidden sm:inline",children:"重新生成"}),e.jsx("span",{className:"sm:hidden",children:"生成"})]})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认重新生成 Token"}),e.jsx(ms,{children:"这将生成一个新的 64 位安全令牌,并使当前 Token 立即失效。 您需要使用新 Token 重新登录系统。此操作不可撤销,确定要继续吗?"})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:xe,children:"确认生成"})]})]})]})]})]}),e.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground",children:"请妥善保管您的 Access Token,不要泄露给他人"})]})})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"自定义 Access Token"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"new-token",className:"text-sm",children:"新的访问令牌"}),e.jsxs("div",{className:"relative",children:[e.jsx(ce,{id:"new-token",type:j?"text":"password",value:d,onChange:pe=>h(pe.target.value),className:"pr-10 font-mono text-sm",placeholder:"输入自定义 Token"}),e.jsx("button",{onClick:()=>g(!j),className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:j?"隐藏":"显示",children:j?e.jsx(mr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Zt,{className:"h-4 w-4 text-muted-foreground"})})]}),d&&e.jsxs("div",{className:"mt-3 space-y-2 p-3 rounded-lg bg-muted/50",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"Token 安全要求:"}),e.jsx("div",{className:"space-y-1.5",children:X.rules.map(pe=>e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[pe.passed?e.jsx(xa,{className:"h-4 w-4 text-green-500 flex-shrink-0"}):e.jsx(pg,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),e.jsx("span",{className:$(pe.passed?"text-green-600 dark:text-green-400":"text-muted-foreground"),children:pe.label})]},pe.id))}),X.isValid&&e.jsx("div",{className:"mt-2 pt-2 border-t border-border",children:e.jsxs("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[e.jsx(ha,{className:"h-4 w-4"}),e.jsx("span",{className:"font-medium",children:"Token 格式正确,可以使用"})]})})]})]}),e.jsx(N,{onClick:te,disabled:_||!X.isValid||!d,className:"w-full sm:w-auto",children:_?"更新中...":"更新自定义 Token"})]})]}),e.jsxs("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3 sm:p-4",children:[e.jsx("h4",{className:"text-sm sm:text-base font-semibold text-yellow-900 dark:text-yellow-200 mb-2",children:"安全提示"}),e.jsxs("ul",{className:"text-xs sm:text-sm text-yellow-800 dark:text-yellow-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"重新生成 Token 会创建系统随机生成的 64 位安全令牌"}),e.jsx("li",{children:"自定义 Token 必须满足所有安全要求才能使用"}),e.jsx("li",{children:"更新 Token 后,旧的 Token 将立即失效"}),e.jsx("li",{children:"请在安全的环境下查看和复制 Token"}),e.jsx("li",{children:"如果怀疑 Token 泄露,请立即重新生成或更新"}),e.jsx("li",{children:"建议使用系统生成的 Token 以获得最高安全性"})]})]})]})}function p0(){const n=It(),{toast:r}=Bs(),[c,d]=u.useState(!1),[h,x]=u.useState(!1),[f,j]=u.useState(()=>Fs("logCacheSize")),[g,_]=u.useState(()=>Fs("wsReconnectInterval")),[v,k]=u.useState(()=>Fs("wsMaxReconnectAttempts")),[z,T]=u.useState(()=>Fs("dataSyncInterval")),[L,K]=u.useState(()=>ap()),[U,R]=u.useState(!1),[ee,V]=u.useState(!1),E=u.useRef(null);if(h)throw new Error("这是一个手动触发的测试错误,用于验证错误边界组件是否正常工作。");const B=()=>{K(ap())},X=y=>{const q=y[0];j(q),Pn("logCacheSize",q)},w=y=>{const q=y[0];_(q),Pn("wsReconnectInterval",q)},D=y=>{const q=y[0];k(q),Pn("wsMaxReconnectAttempts",q)},te=y=>{const q=y[0];T(q),Pn("dataSyncInterval",q)},xe=()=>{an.clearLogs(),r({title:"日志已清除",description:"日志缓存已清空"})},be=()=>{const y=c0();B(),r({title:"缓存已清除",description:`已清除 ${y.clearedKeys.length} 项缓存数据`})},ye=()=>{R(!0);try{const y=n0(),q=JSON.stringify(y,null,2),H=new Blob([q],{type:"application/json"}),ne=URL.createObjectURL(H),S=document.createElement("a");S.href=ne,S.download=`maibot-webui-settings-${new Date().toISOString().slice(0,10)}.json`,document.body.appendChild(S),S.click(),document.body.removeChild(S),URL.revokeObjectURL(ne),r({title:"导出成功",description:"设置已导出为 JSON 文件"})}catch(y){console.error("导出设置失败:",y),r({title:"导出失败",description:"无法导出设置",variant:"destructive"})}finally{R(!1)}},ve=y=>{const q=y.target.files?.[0];if(!q)return;V(!0);const H=new FileReader;H.onload=ne=>{try{const S=ne.target?.result,me=JSON.parse(S),he=i0(me);he.success?(j(Fs("logCacheSize")),_(Fs("wsReconnectInterval")),k(Fs("wsMaxReconnectAttempts")),T(Fs("dataSyncInterval")),B(),r({title:"导入成功",description:`成功导入 ${he.imported.length} 项设置${he.skipped.length>0?`,跳过 ${he.skipped.length} 项`:""}`}),(he.imported.includes("theme")||he.imported.includes("accentColor"))&&r({title:"提示",description:"部分设置需要刷新页面才能完全生效"})):r({title:"导入失败",description:"没有有效的设置项可导入",variant:"destructive"})}catch(S){console.error("导入设置失败:",S),r({title:"导入失败",description:"文件格式无效",variant:"destructive"})}finally{V(!1),E.current&&(E.current.value="")}},H.readAsText(q)},pe=()=>{r0(),j(Ea.logCacheSize),_(Ea.wsReconnectInterval),k(Ea.wsMaxReconnectAttempts),T(Ea.dataSyncInterval),B(),r({title:"已重置",description:"所有设置已恢复为默认值,刷新页面以应用更改"})},Ne=async()=>{d(!0);try{const y=localStorage.getItem("access-token"),q=await fetch("/api/webui/setup/reset",{method:"POST",headers:{Authorization:`Bearer ${y}`}}),H=await q.json();q.ok&&H.success?(r({title:"重置成功",description:"即将进入初次配置向导"}),setTimeout(()=>{n({to:"/setup"})},1e3)):r({title:"重置失败",description:H.message||"无法重置配置状态",variant:"destructive"})}catch(y){console.error("重置配置状态错误:",y),r({title:"重置失败",description:"连接服务器失败",variant:"destructive"})}finally{d(!1)}};return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(eo,{className:"h-5 w-5"}),"性能与存储"]}),e.jsxs("div",{className:"space-y-4 sm:space-y-5",children:[e.jsxs("div",{className:"rounded-lg bg-muted/50 p-3 sm:p-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("span",{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(CN,{className:"h-4 w-4"}),"本地存储使用"]}),e.jsx(N,{variant:"ghost",size:"sm",onClick:B,className:"h-7 px-2",children:e.jsx(ft,{className:"h-3 w-3"})})]}),e.jsx("div",{className:"text-2xl font-bold text-primary",children:o0(L.used)}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:[L.items," 个存储项"]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"日志缓存大小"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[f," 条"]})]}),e.jsx(za,{value:[f],onValueChange:X,min:100,max:5e3,step:100,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"控制日志查看器最多缓存的日志条数,较大的值会占用更多内存"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"首页数据刷新间隔"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[z," 秒"]})]}),e.jsx(za,{value:[z],onValueChange:te,min:10,max:120,step:5,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"控制首页统计数据的自动刷新间隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"WebSocket 重连间隔"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[g/1e3," 秒"]})]}),e.jsx(za,{value:[g],onValueChange:w,min:1e3,max:1e4,step:500,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"日志 WebSocket 连接断开后的重连基础间隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"WebSocket 最大重连次数"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[v," 次"]})]}),e.jsx(za,{value:[v],onValueChange:D,min:3,max:30,step:1,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"连接失败后的最大重连尝试次数"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2 pt-2",children:[e.jsxs(N,{variant:"outline",size:"sm",onClick:xe,className:"gap-2",children:[e.jsx(ns,{className:"h-4 w-4"}),"清除日志缓存"]}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",className:"gap-2",children:[e.jsx(ns,{className:"h-4 w-4"}),"清除本地缓存"]})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认清除本地缓存"}),e.jsx(ms,{children:"这将清除所有本地缓存的设置和数据(不包括登录凭证)。 您可能需要重新配置部分偏好设置。确定要继续吗?"})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:be,children:"确认清除"})]})]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(nl,{className:"h-5 w-5"}),"导入/导出设置"]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"导出当前的界面设置以便备份,或从之前导出的文件中恢复设置。"}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(N,{variant:"outline",onClick:ye,disabled:U,className:"gap-2",children:[e.jsx(nl,{className:"h-4 w-4"}),U?"导出中...":"导出设置"]}),e.jsx("input",{ref:E,type:"file",accept:".json",onChange:ve,className:"hidden"}),e.jsxs(N,{variant:"outline",onClick:()=>E.current?.click(),disabled:ee,className:"gap-2",children:[e.jsx(hr,{className:"h-4 w-4"}),ee?"导入中...":"导入设置"]})]}),e.jsx("div",{className:"pt-2 border-t",children:e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",className:"gap-2 text-destructive hover:text-destructive",children:[e.jsx(Wc,{className:"h-4 w-4"}),"重置所有设置为默认值"]})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认重置所有设置"}),e.jsx(ms,{children:"这将把所有界面设置恢复为默认值,包括主题、颜色、动画等偏好设置。 此操作不会影响您的登录状态。确定要继续吗?"})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:pe,children:"确认重置"})]})]})]})})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"配置向导"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsx("div",{className:"space-y-2",children:e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"重新进行初次配置向导,可以帮助您重新设置系统的基础配置。"})}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(N,{variant:"outline",disabled:c,className:"gap-2",children:[e.jsx(Wc,{className:$("h-4 w-4",c&&"animate-spin")}),"重新进行初次配置"]})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认重新配置"}),e.jsx(ms,{children:"这将带您重新进入初次配置向导。您可以重新设置系统的基础配置项。确定要继续吗?"})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:Ne,children:"确认重置"})]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border border-dashed border-yellow-500/50 bg-yellow-500/5 p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(ya,{className:"h-5 w-5 text-yellow-500"}),"开发者工具"]}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsx("div",{className:"space-y-2",children:e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"以下功能仅供开发调试使用,可能会导致页面崩溃或异常。"})}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(N,{variant:"destructive",className:"gap-2",children:[e.jsx(ya,{className:"h-4 w-4"}),"触发测试错误"]})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认触发错误"}),e.jsx(ms,{children:"这将手动触发一个 React 错误,用于测试错误边界组件的显示效果。 页面将显示错误界面,您可以通过刷新页面或点击返回首页来恢复。"})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>x(!0),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认触发"})]})]})]})]})]})]})}function g0(){return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsx("div",{className:"rounded-lg border-2 border-primary/30 bg-gradient-to-r from-primary/5 to-primary/10 p-4 sm:p-6",children:e.jsxs("div",{className:"flex items-start gap-3 sm:gap-4",children:[e.jsx("div",{className:"flex-shrink-0 rounded-lg bg-primary/10 p-2 sm:p-3",children:e.jsx("svg",{className:"h-6 w-6 sm:h-8 sm:w-8 text-primary",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:"text-lg sm:text-xl font-bold text-foreground mb-2",children:"开源项目"}),e.jsx("p",{className:"text-sm sm:text-base text-muted-foreground mb-3",children:"本项目在 GitHub 开源,欢迎 Star ⭐ 支持!"}),e.jsxs("a",{href:"https://github.com/Mai-with-u/MaiBot-Dashboard",target:"_blank",rel:"noopener noreferrer",className:$("inline-flex items-center gap-2 px-4 py-2 rounded-lg","bg-primary text-primary-foreground font-medium text-sm","hover:bg-primary/90 transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"),children:[e.jsx("svg",{className:"h-4 w-4",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})}),"前往 GitHub",e.jsx("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})})]})]})]})}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:["关于 ",Ku]}),e.jsxs("div",{className:"space-y-2 text-xs sm:text-sm text-muted-foreground",children:[e.jsxs("p",{children:["版本: ",Xu]}),e.jsx("p",{children:"麦麦(MaiBot)的现代化 Web 管理界面"})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"作者"}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"MaiBot 核心"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"Mai-with-u"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"WebUI"}),e.jsxs("p",{className:"text-xs sm:text-sm text-muted-foreground",children:["Mai-with-u ",e.jsx("a",{href:"https://github.com/DrSmoothl",target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"@MotricSeven"})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"技术栈"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-xs sm:text-sm text-muted-foreground",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"前端框架"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"React 19.2.0"}),e.jsx("li",{children:"TypeScript 5.7.2"}),e.jsx("li",{children:"Vite 6.0.7"}),e.jsx("li",{children:"TanStack Router 1.94.2"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"UI 组件"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"shadcn/ui"}),e.jsx("li",{children:"Radix UI"}),e.jsx("li",{children:"Tailwind CSS 3.4.17"}),e.jsx("li",{children:"Lucide Icons"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"后端"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"Python 3.12+"}),e.jsx("li",{children:"FastAPI"}),e.jsx("li",{children:"Uvicorn"}),e.jsx("li",{children:"WebSocket"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"构建工具"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"Bun / npm"}),e.jsx("li",{children:"ESLint 9.17.0"}),e.jsx("li",{children:"PostCSS"})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源库感谢"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mb-3",children:"本项目使用了以下优秀的开源库,感谢他们的贡献:"}),e.jsx(es,{className:"h-[300px] sm:h-[400px]",children:e.jsxs("div",{className:"space-y-4 pr-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"UI 框架与组件"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Hs,{name:"React",description:"用户界面构建库",license:"MIT"}),e.jsx(Hs,{name:"shadcn/ui",description:"优雅的 React 组件库",license:"MIT"}),e.jsx(Hs,{name:"Radix UI",description:"无样式的可访问组件库",license:"MIT"}),e.jsx(Hs,{name:"Tailwind CSS",description:"实用优先的 CSS 框架",license:"MIT"}),e.jsx(Hs,{name:"Lucide React",description:"精美的图标库",license:"ISC"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"路由与状态管理"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Hs,{name:"TanStack Router",description:"类型安全的路由库",license:"MIT"}),e.jsx(Hs,{name:"Zustand",description:"轻量级状态管理",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"表单处理"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Hs,{name:"React Hook Form",description:"高性能表单库",license:"MIT"}),e.jsx(Hs,{name:"Zod",description:"TypeScript 优先的 schema 验证",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"工具库"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Hs,{name:"clsx",description:"条件 className 构建工具",license:"MIT"}),e.jsx(Hs,{name:"tailwind-merge",description:"Tailwind 类名合并工具",license:"MIT"}),e.jsx(Hs,{name:"class-variance-authority",description:"组件变体管理",license:"Apache-2.0"}),e.jsx(Hs,{name:"date-fns",description:"现代化日期处理库",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"动画效果"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Hs,{name:"Framer Motion",description:"React 动画库",license:"MIT"}),e.jsx(Hs,{name:"vaul",description:"抽屉组件动画",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"后端框架"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Hs,{name:"FastAPI",description:"现代化 Python Web 框架",license:"MIT"}),e.jsx(Hs,{name:"Uvicorn",description:"ASGI 服务器",license:"BSD-3-Clause"}),e.jsx(Hs,{name:"Pydantic",description:"数据验证库",license:"MIT"}),e.jsx(Hs,{name:"python-multipart",description:"文件上传支持",license:"Apache-2.0"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"开发工具"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Hs,{name:"TypeScript",description:"JavaScript 的超集",license:"Apache-2.0"}),e.jsx(Hs,{name:"Vite",description:"下一代前端构建工具",license:"MIT"}),e.jsx(Hs,{name:"ESLint",description:"JavaScript 代码检查工具",license:"MIT"}),e.jsx(Hs,{name:"PostCSS",description:"CSS 转换工具",license:"MIT"})]})]})]})})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源许可"}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"rounded-lg bg-primary/5 border border-primary/20 p-3 sm:p-4",children:e.jsxs("div",{className:"flex items-start gap-2 sm:gap-3",children:[e.jsx("div",{className:"flex-shrink-0 mt-0.5",children:e.jsx("div",{className:"rounded-md bg-primary/10 px-2 py-1",children:e.jsx("span",{className:"text-xs sm:text-sm font-bold text-primary",children:"GPLv3"})})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm sm:text-base font-semibold text-foreground mb-1",children:"MaiBot WebUI"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目采用 GNU General Public License v3.0 开源许可证。 您可以自由地使用、修改和分发本软件,但必须保持相同的开源许可。"})]})]})}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目依赖的所有开源库均遵循各自的开源许可证(MIT、Apache-2.0、BSD 等)。 感谢所有开源贡献者的无私奉献。"})]})]})]})}function Hs({name:n,description:r,license:c}){return e.jsxs("div",{className:"flex items-start justify-between gap-2 rounded-lg border bg-muted/30 p-2.5 sm:p-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium text-foreground truncate",children:n}),e.jsx("p",{className:"text-muted-foreground text-xs mt-0.5",children:r})]}),e.jsx("span",{className:"inline-flex items-center rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-medium text-primary flex-shrink-0",children:c})]})}function Au({value:n,current:r,onChange:c,label:d,description:h}){const x=r===n;return e.jsxs("button",{onClick:()=>c(n),className:$("relative rounded-lg border-2 p-3 sm:p-4 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",x?"border-primary bg-accent":"border-border"),children:[x&&e.jsx("div",{className:"absolute top-2 right-2 sm:top-3 sm:right-3 h-2 w-2 rounded-full bg-primary"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-sm sm:text-base font-medium",children:d}),e.jsx("div",{className:"text-[10px] sm:text-xs text-muted-foreground",children:h})]}),e.jsxs("div",{className:"mt-2 sm:mt-3 flex gap-1",children:[n==="light"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-200"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-300"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-400"})]}),n==="dark"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-700"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-800"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-900"})]}),n==="system"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-200 to-slate-700"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-300 to-slate-800"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-400 to-slate-900"})]})]})]})}function da({value:n,current:r,onChange:c,label:d,colorClass:h}){const x=r===n;return e.jsxs("button",{onClick:()=>c(n),className:$("relative rounded-lg border-2 p-2 sm:p-3 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",x?"border-primary bg-accent":"border-border"),children:[x&&e.jsx("div",{className:"absolute top-1.5 right-1.5 sm:top-2 sm:right-2 h-1.5 w-1.5 sm:h-2 sm:w-2 rounded-full bg-primary"}),e.jsxs("div",{className:"flex flex-col items-center gap-1.5 sm:gap-2",children:[e.jsx("div",{className:$("h-8 w-8 sm:h-10 sm:w-10 rounded-full",h)}),e.jsx("div",{className:"text-[10px] sm:text-xs font-medium text-center",children:d})]})]})}class j0{grad3;p;perm;constructor(r=0){this.grad3=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],this.p=[];for(let c=0;c<256;c++)this.p[c]=Math.floor(Math.random()*256);this.perm=[];for(let c=0;c<512;c++)this.perm[c]=this.p[c&255]}dot(r,c,d){return r[0]*c+r[1]*d}mix(r,c,d){return(1-d)*r+d*c}fade(r){return r*r*r*(r*(r*6-15)+10)}perlin2(r,c){const d=Math.floor(r)&255,h=Math.floor(c)&255;r-=Math.floor(r),c-=Math.floor(c);const x=this.fade(r),f=this.fade(c),j=this.perm[d]+h,g=this.perm[j],_=this.perm[j+1],v=this.perm[d+1]+h,k=this.perm[v],z=this.perm[v+1];return this.mix(this.mix(this.dot(this.grad3[g%12],r,c),this.dot(this.grad3[k%12],r-1,c),x),this.mix(this.dot(this.grad3[_%12],r,c-1),this.dot(this.grad3[z%12],r-1,c-1),x),f)}}function v0(){const n=u.useRef(null),r=u.useRef(null),c=u.useRef(void 0),d=u.useRef({mouse:{x:-10,y:0,lx:0,ly:0,sx:0,sy:0,v:0,vs:0,a:0,set:!1},lines:[],paths:[],noise:new j0(Math.random()),bounding:null});return u.useEffect(()=>{const h=r.current,x=n.current;if(!h||!x)return;const f=d.current,j=()=>{const K=h.getBoundingClientRect();f.bounding=K,x.style.width=`${K.width}px`,x.style.height=`${K.height}px`},g=()=>{if(!f.bounding)return;const{width:K,height:U}=f.bounding;f.lines=[],f.paths.forEach(te=>te.remove()),f.paths=[];const R=10,ee=32,V=K+200,E=U+30,B=Math.ceil(V/R),X=Math.ceil(E/ee),w=(K-R*B)/2,D=(U-ee*X)/2;for(let te=0;te<=B;te++){const xe=[];for(let ye=0;ye<=X;ye++){const ve={x:w+R*te,y:D+ee*ye,wave:{x:0,y:0},cursor:{x:0,y:0,vx:0,vy:0}};xe.push(ve)}const be=document.createElementNS("http://www.w3.org/2000/svg","path");x.appendChild(be),f.paths.push(be),f.lines.push(xe)}},_=K=>{const{lines:U,mouse:R,noise:ee}=f;U.forEach(V=>{V.forEach(E=>{const B=ee.perlin2((E.x+K*.0125)*.002,(E.y+K*.005)*.0015)*12;E.wave.x=Math.cos(B)*32,E.wave.y=Math.sin(B)*16;const X=E.x-R.sx,w=E.y-R.sy,D=Math.hypot(X,w),te=Math.max(175,R.vs);if(D{const R={x:K.x+K.wave.x+(U?K.cursor.x:0),y:K.y+K.wave.y+(U?K.cursor.y:0)};return R.x=Math.round(R.x*10)/10,R.y=Math.round(R.y*10)/10,R},k=()=>{const{lines:K,paths:U}=f;K.forEach((R,ee)=>{let V=v(R[0],!1),E=`M ${V.x} ${V.y}`;R.forEach((B,X)=>{const w=X===R.length-1;V=v(B,!w),E+=`L ${V.x} ${V.y}`}),U[ee].setAttribute("d",E)})},z=K=>{const{mouse:U}=f;U.sx+=(U.x-U.sx)*.1,U.sy+=(U.y-U.sy)*.1;const R=U.x-U.lx,ee=U.y-U.ly,V=Math.hypot(R,ee);U.v=V,U.vs+=(V-U.vs)*.1,U.vs=Math.min(100,U.vs),U.lx=U.x,U.ly=U.y,U.a=Math.atan2(ee,R),h&&(h.style.setProperty("--x",`${U.sx}px`),h.style.setProperty("--y",`${U.sy}px`)),_(K),k(),c.current=requestAnimationFrame(z)},T=K=>{if(!f.bounding)return;const{mouse:U}=f;U.x=K.pageX-f.bounding.left,U.y=K.pageY-f.bounding.top+window.scrollY,U.set||(U.sx=U.x,U.sy=U.y,U.lx=U.x,U.ly=U.y,U.set=!0)},L=()=>{j(),g()};return j(),g(),window.addEventListener("resize",L),window.addEventListener("mousemove",T),c.current=requestAnimationFrame(z),()=>{window.removeEventListener("resize",L),window.removeEventListener("mousemove",T),c.current&&cancelAnimationFrame(c.current)}},[]),e.jsxs("div",{ref:r,className:"waves-background",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflow:"hidden",pointerEvents:"none"},children:[e.jsx("div",{className:"waves-cursor",style:{position:"absolute",top:0,left:0,width:"0.5rem",height:"0.5rem",background:"hsl(var(--primary) / 0.3)",borderRadius:"50%",transform:"translate3d(calc(var(--x, -0.5rem) - 50%), calc(var(--y, 50%) - 50%), 0)",willChange:"transform",pointerEvents:"none"}}),e.jsx("svg",{ref:n,style:{display:"block",width:"100%",height:"100%"},children:e.jsx("style",{children:` + path { + fill: none; + stroke: hsl(var(--primary) / 0.20); + stroke-width: 1px; + } + `})})]})}function y0(){const n=It();u.useEffect(()=>{localStorage.getItem("access-token")||n({to:"/auth"})},[n])}function Dg(){return!!localStorage.getItem("access-token")}function N0(){const[n,r]=u.useState(""),[c,d]=u.useState(!1),[h,x]=u.useState(""),f=It(),{enableWavesBackground:j,setEnableWavesBackground:g}=Eg(),{theme:_,setTheme:v}=Yu();u.useEffect(()=>{Dg()&&f({to:"/"})},[f]);const z=_==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":_,T=()=>{v(z==="dark"?"light":"dark")},L=async K=>{if(K.preventDefault(),x(""),!n.trim()){x("请输入 Access Token");return}d(!0);try{const U=await fetch("/api/webui/auth/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:n.trim()})}),R=await U.json();if(U.ok&&R.valid){localStorage.setItem("access-token",n.trim());const ee=await fetch("/api/webui/setup/status",{method:"GET",headers:{Authorization:`Bearer ${n.trim()}`}}),V=await ee.json();ee.ok&&V.is_first_setup?f({to:"/setup"}):f({to:"/"})}else x(R.message||"Token 验证失败,请检查后重试")}catch(U){console.error("Token 验证错误:",U),x("连接服务器失败,请检查网络连接")}finally{d(!1)}};return e.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[j&&e.jsx(v0,{}),e.jsxs(Be,{className:"relative z-10 w-full max-w-md shadow-2xl backdrop-blur-xl bg-card/80 border-border/50",children:[e.jsx("button",{onClick:T,className:"absolute right-4 top-4 rounded-lg p-2 hover:bg-accent transition-colors z-10 text-foreground",title:z==="dark"?"切换到浅色模式":"切换到深色模式",children:z==="dark"?e.jsx(Ou,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"}):e.jsx(Ru,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"})}),e.jsxs(gs,{className:"space-y-4 text-center",children:[e.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-2xl bg-primary/10",children:e.jsx($f,{className:"h-8 w-8 text-primary",strokeWidth:2,fill:"none"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(js,{className:"text-2xl font-bold",children:"欢迎使用 MaiBot"}),e.jsx(Zs,{className:"text-base",children:"请输入您的 Access Token 以继续访问系统"})]})]}),e.jsx(bs,{children:e.jsxs("form",{onSubmit:L,className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"token",className:"text-sm font-medium",children:"Access Token"}),e.jsxs("div",{className:"relative",children:[e.jsx(gg,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground",strokeWidth:2,fill:"none"}),e.jsx(ce,{id:"token",type:"password",placeholder:"请输入您的 Access Token",value:n,onChange:K=>r(K.target.value),className:$("pl-10",h&&"border-red-500 focus-visible:ring-red-500"),disabled:c,autoFocus:!0,autoComplete:"off"})]})]}),h&&e.jsxs("div",{className:"flex items-center gap-2 rounded-md bg-red-50 p-3 text-sm text-red-600 dark:bg-red-950/50 dark:text-red-400",children:[e.jsx(Aa,{className:"h-4 w-4 flex-shrink-0",strokeWidth:2,fill:"none"}),e.jsx("span",{children:h})]}),e.jsx(N,{type:"submit",className:"w-full",disabled:c,children:c?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent"}),"验证中..."]}):"验证并进入"}),e.jsxs(Os,{children:[e.jsx(ni,{asChild:!0,children:e.jsxs("button",{className:"w-full text-center text-sm text-primary hover:text-primary/80 transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[e.jsx(ro,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我没有 Token,我该去哪里获得 Token?"]})}),e.jsxs(Es,{className:"sm:max-w-md",children:[e.jsxs(zs,{children:[e.jsxs(Ms,{className:"flex items-center gap-2",children:[e.jsx($f,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"如何获取 Access Token"]}),e.jsx($s,{children:"Access Token 是访问 MaiBot WebUI 的唯一凭证,请按以下方式获取"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(kN,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx("h4",{className:"font-semibold text-sm",children:"方式一:查看启动日志"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"在 MaiBot 启动时,控制台会显示 WebUI Access Token。"}),e.jsxs("div",{className:"rounded bg-background p-2 font-mono text-xs",children:[e.jsx("p",{className:"text-muted-foreground",children:"🔑 WebUI Access Token: abc123..."}),e.jsx("p",{className:"text-muted-foreground",children:"💡 请使用此 Token 登录 WebUI"})]})]})]})}),e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Ma,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx("h4",{className:"font-semibold text-sm",children:"方式二:查看配置文件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Token 保存在项目根目录的配置文件中:"}),e.jsx("div",{className:"rounded bg-background p-2 font-mono text-xs break-all",children:e.jsx("code",{className:"text-primary",children:"data/webui.json"})}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["打开此文件,复制 ",e.jsx("code",{className:"px-1 py-0.5 bg-background rounded",children:"access_token"})," 字段的值"]})]})]})}),e.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Aa,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[e.jsx("p",{className:"font-semibold",children:"安全提示"}),e.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[e.jsx("li",{children:"请妥善保管您的 Token,不要泄露给他人"}),e.jsx("li",{children:"如需重置 Token,请在登录后前往系统设置"})]})]})]})})]})]})]}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs("button",{className:"w-full text-center text-sm text-muted-foreground hover:text-foreground transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[e.jsx(ln,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我觉得这个界面很卡怎么办?"]})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsxs(us,{className:"flex items-center gap-2",children:[e.jsx(ln,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"关闭背景动画"]}),e.jsx(ms,{children:"背景动画可能会在低性能设备上造成卡顿。关闭动画可以显著提升界面流畅度。"})]}),e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭动画后,背景将变为纯色,但不影响任何功能的使用。您可以随时在系统设置中重新开启动画。"})}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>g(!1),children:"关闭动画"})]})]})]})]})})]}),e.jsx("div",{className:"absolute bottom-4 left-0 right-0 text-center text-xs text-muted-foreground",children:e.jsx("p",{children:t0})})]})}const Us=u.forwardRef(({className:n,...r},c)=>e.jsx("textarea",{className:$("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",n),ref:c,...r}));Us.displayName="Textarea";const jr=u.forwardRef(({className:n,orientation:r="horizontal",decorative:c=!0,...d},h)=>e.jsx(Op,{ref:h,decorative:c,orientation:r,className:$("shrink-0 bg-border",r==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",n),...d}));jr.displayName=Op.displayName;function b0({config:n,onChange:r}){const c=h=>{h.trim()&&!n.alias_names.includes(h.trim())&&r({...n,alias_names:[...n.alias_names,h.trim()]})},d=h=>{r({...n,alias_names:n.alias_names.filter((x,f)=>f!==h)})};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"qq_account",children:"QQ账号 *"}),e.jsx(ce,{id:"qq_account",type:"number",placeholder:"请输入机器人的QQ账号",value:n.qq_account||"",onChange:h=>r({...n,qq_account:Number(h.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人登录使用的QQ账号"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"nickname",children:"昵称 *"}),e.jsx(ce,{id:"nickname",placeholder:"请输入机器人的昵称",value:n.nickname,onChange:h=>r({...n,nickname:h.target.value})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的主要称呼名称"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{children:"别名"}),e.jsx("div",{className:"flex flex-wrap gap-2 mb-2",children:n.alias_names.map((h,x)=>e.jsxs(Xe,{variant:"secondary",className:"gap-1",children:[h,e.jsx("button",{type:"button",onClick:()=>d(x),className:"ml-1 hover:text-destructive",children:e.jsx(li,{className:"h-3 w-3"})})]},x))}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{id:"alias_input",placeholder:"输入别名后按回车添加",onKeyPress:h=>{h.key==="Enter"&&(c(h.target.value),h.target.value="")}}),e.jsx(N,{type:"button",variant:"outline",onClick:()=>{const h=document.getElementById("alias_input");h&&(c(h.value),h.value="")},children:"添加"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的其他称呼,可以添加多个"})]})]})}function w0({config:n,onChange:r}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"personality",children:"人格特征 *"}),e.jsx(Us,{id:"personality",placeholder:"描述机器人的人格特质和身份特征(建议120字以内)",value:n.personality,onChange:c=>r({...n,personality:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:是一个女大学生,现在在读大二,会刷贴吧"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"reply_style",children:"表达风格 *"}),e.jsx(Us,{id:"reply_style",placeholder:"描述机器人说话的表达风格、表达习惯",value:n.reply_style,onChange:c=>r({...n,reply_style:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:回复平淡一些,简短一些,说中文,参考贴吧、知乎和微博的回复风格"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"interest",children:"兴趣 *"}),e.jsx(Us,{id:"interest",placeholder:"描述机器人感兴趣的话题",value:n.interest,onChange:c=>r({...n,interest:c.target.value}),rows:2}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"会影响机器人对什么话题进行回复"})]}),e.jsx(jr,{}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"plan_style",children:"群聊说话规则 *"}),e.jsx(Us,{id:"plan_style",placeholder:"机器人在群聊中的行为风格和规则",value:n.plan_style,onChange:c=>r({...n,plan_style:c.target.value}),rows:4}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在群聊中如何行动,例如回复频率、条件等"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"private_plan_style",children:"私聊说话规则 *"}),e.jsx(Us,{id:"private_plan_style",placeholder:"机器人在私聊中的行为风格和规则",value:n.private_plan_style,onChange:c=>r({...n,private_plan_style:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在私聊中的行为方式"})]})]})}function _0({config:n,onChange:r}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{htmlFor:"emoji_chance",children:"表情包激活概率"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[(n.emoji_chance*100).toFixed(0),"%"]})]}),e.jsx(ce,{id:"emoji_chance",type:"range",min:"0",max:"1",step:"0.1",value:n.emoji_chance,onChange:c=>r({...n,emoji_chance:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人发送表情包的概率"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"max_reg_num",children:"最大表情包数量"}),e.jsx(ce,{id:"max_reg_num",type:"number",min:"1",max:"200",value:n.max_reg_num,onChange:c=>r({...n,max_reg_num:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人最多保存的表情包数量"})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"do_replace",children:"达到最大数量时替换"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"开启后会删除旧表情包,关闭则不再收集新表情包"})]}),e.jsx(qe,{id:"do_replace",checked:n.do_replace,onCheckedChange:c=>r({...n,do_replace:c})})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),e.jsx(ce,{id:"check_interval",type:"number",min:"1",max:"120",value:n.check_interval,onChange:c=>r({...n,check_interval:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包注册、破损、删除的时间间隔"})]}),e.jsx(jr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"steal_emoji",children:"偷取表情包"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人将一些表情包据为己有"})]}),e.jsx(qe,{id:"steal_emoji",checked:n.steal_emoji,onCheckedChange:c=>r({...n,steal_emoji:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"content_filtration",children:"启用表情包过滤"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"只保存符合要求的表情包"})]}),e.jsx(qe,{id:"content_filtration",checked:n.content_filtration,onCheckedChange:c=>r({...n,content_filtration:c})})]}),n.content_filtration&&e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"filtration_prompt",children:"过滤要求"}),e.jsx(ce,{id:"filtration_prompt",placeholder:"例如:符合公序良俗",value:n.filtration_prompt,onChange:c=>r({...n,filtration_prompt:c.target.value})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"描述表情包应该符合的要求"})]})]})}function S0({config:n,onChange:r}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"enable_tool",children:"启用工具系统"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人使用各种工具增强功能"})]}),e.jsx(qe,{id:"enable_tool",checked:n.enable_tool,onCheckedChange:c=>r({...n,enable_tool:c})})]}),e.jsx(jr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"enable_mood",children:"启用情绪系统"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"让机器人具有情绪变化能力"})]}),e.jsx(qe,{id:"enable_mood",checked:n.enable_mood,onCheckedChange:c=>r({...n,enable_mood:c})})]}),n.enable_mood&&e.jsxs("div",{className:"ml-6 space-y-6 border-l-2 border-primary/20 pl-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"mood_update_threshold",children:"情绪更新阈值"}),e.jsx(ce,{id:"mood_update_threshold",type:"number",min:"0.1",max:"10",step:"0.1",value:n.mood_update_threshold||1,onChange:c=>r({...n,mood_update_threshold:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"值越高,情绪更新越慢"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"emotion_style",children:"情感特征"}),e.jsx(Us,{id:"emotion_style",placeholder:"描述情绪的变化情况,例如:情绪较为稳定,但遭遇特定事件时起伏较大",value:n.emotion_style||"",onChange:c=>r({...n,emotion_style:c.target.value}),rows:2}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"影响机器人的情绪变化方式"})]})]}),e.jsx(jr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"all_global",children:"启用全局黑话模式"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人学习和使用群组黑话"})]}),e.jsx(qe,{id:"all_global",checked:n.all_global,onCheckedChange:c=>r({...n,all_global:c})})]})]})}function C0({config:n,onChange:r}){const[c,d]=u.useState(!1);return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"mt-0.5",children:e.jsx("svg",{className:"h-5 w-5 text-blue-600 dark:text-blue-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),e.jsxs("div",{className:"flex-1 text-sm",children:[e.jsx("p",{className:"font-medium text-blue-900 dark:text-blue-100 mb-1",children:"关于硅基流动 (SiliconFlow)"}),e.jsx("p",{className:"text-blue-700 dark:text-blue-300 mb-2",children:"硅基流动提供了完整的模型覆盖,包括 DeepSeek V3、Qwen、视觉模型、语音识别和嵌入模型。 只需一个 API Key 即可使用麦麦的所有功能!"}),e.jsxs("a",{href:"https://cloud.siliconflow.cn",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-blue-600 dark:text-blue-400 hover:underline font-medium",children:["前往硅基流动获取 API Key",e.jsx(dr,{className:"h-3 w-3"})]})]})]})}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"siliconflow_api_key",children:"SiliconFlow API Key *"}),e.jsxs("div",{className:"relative",children:[e.jsx(ce,{id:"siliconflow_api_key",type:c?"text":"password",placeholder:"sk-...",value:n.api_key,onChange:h=>r({api_key:h.target.value}),className:"font-mono pr-10"}),e.jsx(N,{type:"button",variant:"ghost",size:"sm",className:"absolute right-0 top-0 h-full px-3 hover:bg-transparent",onClick:()=>d(!c),children:c?e.jsx(mr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Zt,{className:"h-4 w-4 text-muted-foreground"})})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"请输入您的硅基流动 API 密钥。获取后,麦麦将自动配置所有必需的模型。"})]}),e.jsxs("div",{className:"rounded-lg bg-muted/50 p-4 text-sm space-y-2",children:[e.jsx("p",{className:"font-medium",children:"将自动配置以下模型:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 text-muted-foreground ml-2",children:[e.jsx("li",{children:"DeepSeek V3 - 主要对话和工具模型"}),e.jsx("li",{children:"Qwen3 30B - 高频小任务和工具调用"}),e.jsx("li",{children:"Qwen3 VL 30B - 图像识别"}),e.jsx("li",{children:"SenseVoice - 语音识别"}),e.jsx("li",{children:"BGE-M3 - 文本嵌入"}),e.jsx("li",{children:"知识库相关模型 (LPMM)"})]})]}),e.jsx("div",{className:"rounded-lg border border-amber-200 dark:border-amber-800 bg-amber-50 dark:bg-amber-950/30 p-4",children:e.jsxs("p",{className:"text-sm text-amber-900 dark:text-amber-100",children:[e.jsx("span",{className:"font-medium",children:"💡 提示:"}),'完成向导后,您可以在"系统设置 → 模型配置"中添加更多 API 提供商和模型。']})})]})}async function ke(n,r){const c=await fetch(n,r);if(c.status===401)throw localStorage.removeItem("access-token"),window.location.href="/auth",new Error("认证失败,请重新登录");return c}function ze(){return{"Content-Type":"application/json",Authorization:`Bearer ${localStorage.getItem("access-token")}`}}async function k0(){const n=await ke("/api/webui/config/bot",{method:"GET",headers:ze()});if(!n.ok)throw new Error("读取Bot配置失败");const c=(await n.json()).config.bot||{};return{qq_account:c.qq_account||0,nickname:c.nickname||"",alias_names:c.alias_names||[]}}async function T0(){const n=await ke("/api/webui/config/bot",{method:"GET",headers:ze()});if(!n.ok)throw new Error("读取人格配置失败");const c=(await n.json()).config.personality||{};return{personality:c.personality||"",reply_style:c.reply_style||"",interest:c.interest||"",plan_style:c.plan_style||"",private_plan_style:c.private_plan_style||""}}async function E0(){const n=await ke("/api/webui/config/bot",{method:"GET",headers:ze()});if(!n.ok)throw new Error("读取表情包配置失败");const c=(await n.json()).config.emoji||{};return{emoji_chance:c.emoji_chance??.4,max_reg_num:c.max_reg_num??40,do_replace:c.do_replace??!0,check_interval:c.check_interval??10,steal_emoji:c.steal_emoji??!0,content_filtration:c.content_filtration??!1,filtration_prompt:c.filtration_prompt||""}}async function z0(){const n=await ke("/api/webui/config/bot",{method:"GET",headers:ze()});if(!n.ok)throw new Error("读取其他配置失败");const c=(await n.json()).config,d=c.tool||{},h=c.mood||{},x=c.jargon||{};return{enable_tool:d.enable_tool??!0,enable_mood:h.enable_mood??!1,mood_update_threshold:h.mood_update_threshold,emotion_style:h.emotion_style,all_global:x.all_global??!0}}async function M0(){const n=await ke("/api/webui/config/model",{method:"GET",headers:ze()});if(!n.ok)throw new Error("读取模型配置失败");return{api_key:((await n.json()).config.api_providers||[]).find(x=>x.name==="SiliconFlow")?.api_key||""}}async function A0(n){const r=await ke("/api/webui/config/bot/section/bot",{method:"POST",headers:ze(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"保存Bot基础配置失败")}return await r.json()}async function D0(n){const r=await ke("/api/webui/config/bot/section/personality",{method:"POST",headers:ze(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"保存人格配置失败")}return await r.json()}async function O0(n){const r=await ke("/api/webui/config/bot/section/emoji",{method:"POST",headers:ze(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"保存表情包配置失败")}return await r.json()}async function R0(n){const r=[];r.push(ke("/api/webui/config/bot/section/tool",{method:"POST",headers:ze(),body:JSON.stringify({enable_tool:n.enable_tool})})),r.push(ke("/api/webui/config/bot/section/jargon",{method:"POST",headers:ze(),body:JSON.stringify({all_global:n.all_global})}));const c={enable_mood:n.enable_mood};n.enable_mood&&(c.mood_update_threshold=n.mood_update_threshold||1,c.emotion_style=n.emotion_style||""),r.push(ke("/api/webui/config/bot/section/mood",{method:"POST",headers:ze(),body:JSON.stringify(c)}));const d=await Promise.all(r);for(const h of d)if(!h.ok){const x=await h.json();throw new Error(x.detail||"保存其他配置失败")}return{success:!0}}async function L0(n){const r=await ke("/api/webui/config/model",{method:"GET",headers:ze()});if(!r.ok)throw new Error("读取模型配置失败");const d=(await r.json()).config,h=d.api_providers||[],x=h.findIndex(g=>g.name==="SiliconFlow");x>=0?h[x]={...h[x],api_key:n.api_key}:h.push({name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",api_key:n.api_key,client_type:"openai",max_retry:3,timeout:120,retry_interval:5});const f={...d,api_providers:h},j=await ke("/api/webui/config/model",{method:"POST",headers:ze(),body:JSON.stringify(f)});if(!j.ok){const g=await j.json();throw new Error(g.detail||"保存模型配置失败")}return await j.json()}async function np(){const n=localStorage.getItem("access-token"),r=await ke("/api/webui/setup/complete",{method:"POST",headers:{Authorization:`Bearer ${n}`}});if(!r.ok){const c=await r.json();throw new Error(c.message||"标记配置完成失败")}return await r.json()}async function co(){const n=await ke("/api/webui/system/restart",{method:"POST",headers:ze()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"重启失败")}return await n.json()}async function U0(){const n=await ke("/api/webui/system/status",{method:"GET",headers:ze()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取状态失败")}return await n.json()}function B0(){const n=It(),{toast:r}=Bs(),[c,d]=u.useState(0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[g,_]=u.useState(!0),[v,k]=u.useState({qq_account:0,nickname:"",alias_names:[]}),[z,T]=u.useState({personality:"是一个女大学生,现在在读大二,会刷贴吧。",reply_style:"请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景。可以参考贴吧,知乎和微博的回复风格。",interest:"对技术相关话题,游戏和动漫相关话题感兴趣,也对日常话题感兴趣,不喜欢太过沉重严肃的话题",plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 +2.如果相同的内容已经被执行,请不要重复执行 +3.请控制你的发言频率,不要太过频繁的发言 +4.如果有人对你感到厌烦,请减少回复 +5.如果有人对你进行攻击,或者情绪激动,请你以合适的方法应对`,private_plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 +2.如果相同的内容已经被执行,请不要重复执行 +3.某句话如果已经被回复过,不要重复回复`}),[L,K]=u.useState({emoji_chance:.4,max_reg_num:40,do_replace:!0,check_interval:10,steal_emoji:!0,content_filtration:!1,filtration_prompt:"符合公序良俗"}),[U,R]=u.useState({enable_tool:!0,enable_mood:!1,mood_update_threshold:1,emotion_style:"情绪较为稳定,但遇遇特定事件的时候起伏较大",all_global:!0}),[ee,V]=u.useState({api_key:""}),[E,B]=u.useState(!1),[X,w]=u.useState(""),D=[{id:"bot-basic",title:"Bot基础",description:"配置机器人的基本信息",icon:ir},{id:"personality",title:"人格配置",description:"定义机器人的性格和说话风格",icon:to},{id:"emoji",title:"表情包",description:"配置表情包相关设置",icon:Qu},{id:"other",title:"其他设置",description:"工具、情绪系统等配置",icon:Rl},{id:"siliconflow",title:"API配置",description:"配置硅基流动API密钥",icon:gg}],te=(c+1)/D.length*100;u.useEffect(()=>{(async()=>{try{_(!0);const[q,H,ne,S,me]=await Promise.all([k0(),T0(),E0(),z0(),M0()]);k(q),T(H),K(ne),R(S),V(me)}catch(q){r({title:"加载配置失败",description:q instanceof Error?q.message:"无法加载现有配置,将使用默认值",variant:"destructive"})}finally{_(!1)}})()},[r]);const xe=async()=>{j(!0);try{switch(c){case 0:await A0(v);break;case 1:await D0(z);break;case 2:await O0(L);break;case 3:await R0(U);break;case 4:await L0(ee);break}return r({title:"保存成功",description:`${D[c].title}配置已保存`}),!0}catch(y){return r({title:"保存失败",description:y instanceof Error?y.message:"未知错误",variant:"destructive"}),!1}finally{j(!1)}},be=async()=>{await xe()&&c{c>0&&d(c-1)},ve=async()=>{x(!0),B(!0);try{if(w("正在保存API配置..."),!await xe()){x(!1),B(!1);return}w("正在完成初始化..."),await np(),w("正在重启麦麦..."),await co(),r({title:"配置完成",description:"麦麦正在重启以应用新配置..."}),w("等待麦麦重启完成...");const q=60;let H=0,ne=!1;for(;HsetTimeout(S,1e3));try{(await U0()).running&&(ne=!0,w("重启成功!正在跳转..."))}catch{H++}}if(!ne)throw new Error("重启超时,请手动检查麦麦状态");setTimeout(()=>{n({to:"/"})},1e3)}catch(y){B(!1),r({title:"配置失败",description:y instanceof Error?y.message:"未知错误",variant:"destructive"})}finally{x(!1)}},pe=async()=>{try{await np(),n({to:"/"})}catch(y){r({title:"跳过失败",description:y instanceof Error?y.message:"未知错误",variant:"destructive"})}},Ne=()=>{switch(c){case 0:return e.jsx(b0,{config:v,onChange:k});case 1:return e.jsx(w0,{config:z,onChange:T});case 2:return e.jsx(_0,{config:L,onChange:K});case 3:return e.jsx(S0,{config:U,onChange:R});case 4:return e.jsx(C0,{config:ee,onChange:V});default:return null}};return e.jsxs("div",{className:"relative flex min-h-screen flex-col items-center justify-center overflow-hidden bg-gradient-to-br from-primary/5 via-background to-secondary/5 p-4 md:p-6",children:[E&&e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm",children:e.jsxs("div",{className:"mx-auto flex max-w-md flex-col items-center space-y-6 rounded-lg border bg-card p-8 text-center shadow-lg",children:[e.jsx("div",{className:"flex h-20 w-20 items-center justify-center rounded-full bg-primary/10",children:e.jsx(vt,{className:"h-10 w-10 animate-spin text-primary"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),e.jsx("p",{className:"text-muted-foreground",children:X})]}),e.jsx("div",{className:"w-full",children:e.jsx("div",{className:"h-2 w-full overflow-hidden rounded-full bg-secondary",children:e.jsx("div",{className:"h-full w-full animate-pulse bg-primary",style:{animation:"pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite"}})})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"请稍候,这可能需要一分钟..."})]})}),e.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[e.jsx("div",{className:"absolute left-1/4 top-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-primary/5 blur-3xl"}),e.jsx("div",{className:"absolute right-1/4 bottom-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-secondary/5 blur-3xl"})]}),g?e.jsxs("div",{className:"relative z-10 text-center",children:[e.jsx("div",{className:"mx-auto mb-4 flex h-16 w-16 items-center justify-center",children:e.jsx("div",{className:"h-12 w-12 animate-spin rounded-full border-4 border-primary border-t-transparent"})}),e.jsx("p",{className:"text-lg font-medium",children:"加载配置中..."}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"正在读取现有配置"})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"relative z-10 w-full max-w-4xl",children:[e.jsxs("div",{className:"mb-6 md:mb-8 text-center",children:[e.jsx("div",{className:"mx-auto mb-4 flex h-12 w-12 md:h-16 md:w-16 items-center justify-center rounded-2xl bg-primary/10",children:e.jsx(TN,{className:"h-6 w-6 md:h-8 md:w-8 text-primary",strokeWidth:2,fill:"none"})}),e.jsx("h1",{className:"mb-2 text-2xl md:text-3xl font-bold",children:"首次配置向导"}),e.jsxs("p",{className:"text-sm md:text-base text-muted-foreground",children:["让我们一起完成 ",Ku," 的初始配置"]})]}),e.jsxs("div",{className:"mb-6 md:mb-8",children:[e.jsxs("div",{className:"mb-2 flex items-center justify-between text-xs md:text-sm",children:[e.jsxs("span",{className:"text-muted-foreground",children:["步骤 ",c+1," / ",D.length]}),e.jsxs("span",{className:"font-medium text-primary",children:[Math.round(te),"%"]})]}),e.jsx(Sr,{value:te,className:"h-2"})]}),e.jsx("div",{className:"mb-6 md:mb-8 flex justify-between",children:D.map((y,q)=>{const H=y.icon;return e.jsxs("div",{className:$("flex flex-1 flex-col items-center gap-1 md:gap-2",qn({to:"/"}),className:"gap-2 w-full sm:w-auto",children:[e.jsx(xr,{className:"h-4 w-4"}),"返回首页"]}),e.jsxs(N,{size:"lg",variant:"outline",onClick:()=>window.history.back(),className:"gap-2 w-full sm:w-auto",children:[e.jsx(ti,{className:"h-4 w-4"}),"返回上一页"]})]}),e.jsx("div",{className:"mt-12 pt-8 border-t border-border",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:"如果您认为这是一个错误,请联系系统管理员"})})]})})}const Qe=hN,$e=xN,Ge=u.forwardRef(({className:n,children:r,...c},d)=>e.jsxs(eg,{ref:d,className:$("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",n),...c,children:[r,e.jsx(cN,{asChild:!0,children:e.jsx(Ll,{className:"h-4 w-4 opacity-50"})})]}));Ge.displayName=eg.displayName;const Rg=u.forwardRef(({className:n,...r},c)=>e.jsx(sg,{ref:c,className:$("flex cursor-default items-center justify-center py-1",n),...r,children:e.jsx(fr,{className:"h-4 w-4"})}));Rg.displayName=sg.displayName;const Lg=u.forwardRef(({className:n,...r},c)=>e.jsx(tg,{ref:c,className:$("flex cursor-default items-center justify-center py-1",n),...r,children:e.jsx(Ll,{className:"h-4 w-4"})}));Lg.displayName=tg.displayName;const Ve=u.forwardRef(({className:n,children:r,position:c="popper",...d},h)=>e.jsx(oN,{children:e.jsxs(ag,{ref:h,className:$("relative z-[100] max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-hidden rounded-md border border-border bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",c==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",n),position:c,...d,children:[e.jsx(Rg,{}),e.jsx(dN,{className:$("p-1",c==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:r}),e.jsx(Lg,{})]})}));Ve.displayName=ag.displayName;const H0=u.forwardRef(({className:n,...r},c)=>e.jsx(lg,{ref:c,className:$("px-2 py-1.5 text-sm font-semibold",n),...r}));H0.displayName=lg.displayName;const ue=u.forwardRef(({className:n,children:r,...c},d)=>e.jsxs(ng,{ref:d,className:$("relative flex w-full cursor-default select-none items-center rounded-sm py-2 pl-2 pr-8 text-sm outline-none bg-white dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800 focus:bg-gray-100 dark:focus:bg-gray-800 data-[disabled]:pointer-events-none data-[disabled]:opacity-50",n),...c,children:[e.jsx("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(uN,{children:e.jsx(ha,{className:"h-4 w-4"})})}),e.jsx(mN,{children:r})]}));ue.displayName=ng.displayName;const q0=u.forwardRef(({className:n,...r},c)=>e.jsx(ig,{ref:c,className:$("-mx-1 my-1 h-px bg-muted",n),...r}));q0.displayName=ig.displayName;const Da=Gy,Oa=Vy,Na=u.forwardRef(({className:n,align:r="center",sideOffset:c=4,...d},h)=>e.jsx(qy,{children:e.jsx(Rp,{ref:h,align:r,sideOffset:c,className:$("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]",n),...d})}));Na.displayName=Rp.displayName;const Ul="/api/webui/config";async function ip(){const r=await(await ke(`${Ul}/bot`)).json();if(!r.success)throw new Error("获取配置数据失败");return r.config}async function ei(){const r=await(await ke(`${Ul}/model`)).json();if(!r.success)throw new Error("获取模型配置数据失败");return r.config}async function rp(n){const c=await(await ke(`${Ul}/bot`,{method:"POST",headers:ze(),body:JSON.stringify(n)})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function G0(){const r=await(await ke(`${Ul}/bot/raw`)).json();if(!r.success)throw new Error("获取配置源代码失败");return r.content}async function V0(n){const c=await(await ke(`${Ul}/bot/raw`,{method:"POST",headers:ze(),body:JSON.stringify({raw_content:n})})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function io(n){const c=await(await ke(`${Ul}/model`,{method:"POST",headers:ze(),body:JSON.stringify(n)})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function F0(n,r){const d=await(await ke(`${Ul}/bot/section/${n}`,{method:"POST",headers:ze(),body:JSON.stringify(r)})).json();if(!d.success)throw new Error(d.message||`保存配置节 ${n} 失败`)}async function qu(n,r){const d=await(await ke(`${Ul}/model/section/${n}`,{method:"POST",headers:ze(),body:JSON.stringify(r)})).json();if(!d.success)throw new Error(d.message||`保存配置节 ${n} 失败`)}async function Q0(n,r="openai",c="/models"){const d=new URLSearchParams({provider_name:n,parser:r,endpoint:c}),h=await ke(`/api/webui/models/list?${d}`);if(!h.ok){const f=await h.json().catch(()=>({}));throw new Error(f.detail||`获取模型列表失败 (${h.status})`)}const x=await h.json();if(!x.success)throw new Error("获取模型列表失败");return x.models}async function $0(n){const r=new URLSearchParams({provider_name:n}),c=await ke(`/api/webui/models/test-connection-by-name?${r}`,{method:"POST"});if(!c.ok){const d=await c.json().catch(()=>({}));throw new Error(d.detail||`测试连接失败 (${c.status})`)}return await c.json()}const Y0=ai("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"}}),ua=u.forwardRef(({className:n,variant:r,...c},d)=>e.jsx("div",{ref:d,role:"alert",className:$(Y0({variant:r}),n),...c}));ua.displayName="Alert";const X0=u.forwardRef(({className:n,...r},c)=>e.jsx("h5",{ref:c,className:$("mb-1 font-medium leading-none tracking-tight",n),...r}));X0.displayName="AlertTitle";const ma=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:$("text-sm [&_p]:leading-relaxed",n),...r}));ma.displayName="AlertDescription";function Iu({onRestartComplete:n,onRestartFailed:r}){const[c,d]=u.useState(0),[h,x]=u.useState("restarting"),[f,j]=u.useState(0),[g,_]=u.useState(0);u.useEffect(()=>{const z=setInterval(()=>{d(K=>K>=90?K:K+1)},200),T=setInterval(()=>{j(K=>K+1)},1e3),L=setTimeout(()=>{x("checking"),v()},3e3);return()=>{clearInterval(z),clearInterval(T),clearTimeout(L)}},[]);const v=()=>{const T=async()=>{try{if(_(K=>K+1),(await fetch("/api/webui/system/status",{method:"GET",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(3e3)})).ok)d(100),x("success"),setTimeout(()=>{n?.()},1500);else throw new Error("Status check failed")}catch{g<60?setTimeout(T,2e3):(x("failed"),r?.())}};T()},k=z=>{const T=Math.floor(z/60),L=z%60;return`${T}:${L.toString().padStart(2,"0")}`};return e.jsx("div",{className:"fixed inset-0 bg-background/95 backdrop-blur-sm z-50 flex items-center justify-center",children:e.jsxs("div",{className:"max-w-md w-full mx-4 space-y-8",children:[e.jsxs("div",{className:"flex flex-col items-center space-y-4",children:[h==="restarting"&&e.jsxs(e.Fragment,{children:[e.jsx(vt,{className:"h-16 w-16 text-primary animate-spin"}),e.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"请稍候,麦麦正在重启中..."})]}),h==="checking"&&e.jsxs(e.Fragment,{children:[e.jsx(vt,{className:"h-16 w-16 text-primary animate-spin"}),e.jsx("h2",{className:"text-2xl font-bold",children:"检查服务状态"}),e.jsxs("p",{className:"text-muted-foreground text-center",children:["等待服务恢复... (尝试 ",g,"/60)"]})]}),h==="success"&&e.jsxs(e.Fragment,{children:[e.jsx(xa,{className:"h-16 w-16 text-green-500"}),e.jsx("h2",{className:"text-2xl font-bold",children:"重启成功"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"正在跳转到登录页面..."})]}),h==="failed"&&e.jsxs(e.Fragment,{children:[e.jsx(Aa,{className:"h-16 w-16 text-destructive"}),e.jsx("h2",{className:"text-2xl font-bold",children:"重启超时"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"服务未能在预期时间内恢复,请手动检查或刷新页面"})]})]}),h!=="failed"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(Sr,{value:c,className:"h-2"}),e.jsxs("div",{className:"flex justify-between text-sm text-muted-foreground",children:[e.jsxs("span",{children:[c,"%"]}),e.jsxs("span",{children:["已用时: ",k(f)]})]})]}),e.jsx("div",{className:"bg-muted/50 rounded-lg p-4 space-y-2",children:e.jsxs("p",{className:"text-sm text-muted-foreground",children:[h==="restarting"&&"🔄 配置已保存,正在重启主程序...",h==="checking"&&"⏳ 正在等待服务恢复,请勿关闭页面...",h==="success"&&"✅ 配置已生效,服务运行正常",h==="failed"&&"⚠️ 如果长时间无响应,请尝试手动重启"]})}),e.jsx("div",{className:"bg-yellow-500/10 border border-yellow-500/50 rounded-lg p-4",children:e.jsxs("p",{className:"text-sm text-yellow-900 dark:text-yellow-100",children:[e.jsx("strong",{children:"⚠️ 重要提示:"})," 由于技术原因,使用重启功能后,将无法再使用 ",e.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。如需结束程序,请使用脚本目录下的进程管理脚本。"]})}),h==="failed"&&e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{onClick:()=>window.location.reload(),className:"flex-1 px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary/90",children:"刷新页面"}),e.jsx("button",{onClick:()=>{x("checking"),_(0),v()},className:"flex-1 px-4 py-2 bg-secondary text-secondary-foreground rounded-md hover:bg-secondary/90",children:"重试检测"})]})]})})}const K0={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,r){let c;if(!r.inString&&(c=n.match(/^('''|"""|'|")/))&&(r.stringType=c[0],r.inString=!0),n.sol()&&!r.inString&&r.inArray===0&&(r.lhs=!0),r.inString){for(;r.inString;)if(n.match(r.stringType))r.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return r.lhs?"property":"string"}else{if(r.inArray&&n.peek()==="]")return n.next(),r.inArray--,"bracket";if(r.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(r.lhs&&n.eatWhile(function(d){return d!="="&&d!=" "}))return"property";if(r.lhs&&n.peek()==="=")return n.next(),r.lhs=!1,null;if(!r.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!r.lhs&&(n.match("true")||n.match("false")))return"atom";if(!r.lhs&&n.peek()==="[")return r.inArray++,n.next(),"bracket";if(!r.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}},Z0={python:[sb()],json:[tb(),ab()],toml:[eb.define(K0)],text:[]};function I0({value:n,onChange:r,language:c="text",readOnly:d=!1,height:h="400px",minHeight:x,maxHeight:f,placeholder:j,theme:g="dark",className:_=""}){const[v,k]=u.useState(!1);if(u.useEffect(()=>{k(!0)},[]),!v)return e.jsx("div",{className:`rounded-md border bg-muted animate-pulse ${_}`,style:{height:h,minHeight:x,maxHeight:f}});const z=[...Z0[c]||[],If.lineWrapping];return d&&z.push(If.editable.of(!1)),e.jsx("div",{className:`rounded-md overflow-hidden border ${_}`,children:e.jsx(lb,{value:n,height:h,minHeight:x,maxHeight:f,theme:g==="dark"?nb:void 0,extensions:z,onChange:r,placeholder:j,basicSetup:{lineNumbers:!0,highlightActiveLineGutter:!0,highlightSpecialChars:!0,history:!0,foldGutter:!0,drawSelection:!0,dropCursor:!0,allowMultipleSelections:!0,indentOnInput:!0,syntaxHighlighting:!0,bracketMatching:!0,closeBrackets:!0,autocompletion:!0,rectangularSelection:!0,crosshairCursor:!0,highlightActiveLine:!0,highlightSelectionMatches:!0,closeBracketsKeymap:!0,defaultKeymap:!0,searchKeymap:!0,historyKeymap:!0,foldKeymap:!0,completionKeymap:!0,lintKeymap:!0}})})}function J0(){const[n,r]=u.useState(!0),[c,d]=u.useState(!1),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[g,_]=u.useState(!1),[v,k]=u.useState(!1),[z,T]=u.useState("visual"),[L,K]=u.useState(""),[U,R]=u.useState(!1),{toast:ee}=Bs(),[V,E]=u.useState(null),[B,X]=u.useState(null),[w,D]=u.useState(null),[te,xe]=u.useState(null),[be,ye]=u.useState(null),[ve,pe]=u.useState(null),[Ne,y]=u.useState(null),[q,H]=u.useState(null),[ne,S]=u.useState(null),[me,he]=u.useState(null),[Q,oe]=u.useState(null),[ge,le]=u.useState(null),[O,F]=u.useState(null),[A,W]=u.useState(null),[_e,Me]=u.useState(null),[ss,Ie]=u.useState(null),[Rs,qs]=u.useState(null),[ie,we]=u.useState(null),Ke=u.useRef(null),Le=u.useRef(!0),st=u.useRef({}),Jt=u.useCallback(async()=>{try{const Se=await G0();K(Se),R(!1)}catch(Se){ee({variant:"destructive",title:"加载失败",description:Se instanceof Error?Se.message:"加载源代码失败"})}},[ee]),bt=u.useCallback(async()=>{try{r(!0);const Se=await ip();st.current=Se,E(Se.bot),X(Se.personality);const Re=Se.chat;Re.talk_value_rules||(Re.talk_value_rules=[]),D(Re),xe(Se.expression),ye(Se.emoji),pe(Se.memory),y(Se.tool),H(Se.mood),S(Se.voice),he(Se.lpmm_knowledge),oe(Se.keyword_reaction),le(Se.response_post_process),F(Se.chinese_typo),W(Se.response_splitter),Me(Se.log),Ie(Se.debug),qs(Se.maim_message),we(Se.telemetry),j(!1),Le.current=!1,await Jt()}catch(Se){console.error("加载配置失败:",Se),ee({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}finally{r(!1)}},[ee,Jt]);u.useEffect(()=>{bt()},[bt]);const Je=u.useCallback(async(Se,Re)=>{if(!Le.current)try{x(!0),await F0(Se,Re),j(!1)}catch(it){console.error(`自动保存 ${Se} 失败:`,it),j(!0)}finally{x(!1)}},[]),Ue=u.useCallback((Se,Re)=>{Le.current||(j(!0),Ke.current&&clearTimeout(Ke.current),Ke.current=setTimeout(()=>{Je(Se,Re)},2e3))},[Je]);u.useEffect(()=>{V&&!Le.current&&Ue("bot",V)},[V,Ue]),u.useEffect(()=>{B&&!Le.current&&Ue("personality",B)},[B,Ue]),u.useEffect(()=>{w&&!Le.current&&Ue("chat",w)},[w,Ue]),u.useEffect(()=>{te&&!Le.current&&Ue("expression",te)},[te,Ue]),u.useEffect(()=>{be&&!Le.current&&Ue("emoji",be)},[be,Ue]),u.useEffect(()=>{ve&&!Le.current&&Ue("memory",ve)},[ve,Ue]),u.useEffect(()=>{Ne&&!Le.current&&Ue("tool",Ne)},[Ne,Ue]),u.useEffect(()=>{q&&!Le.current&&Ue("mood",q)},[q,Ue]),u.useEffect(()=>{ne&&!Le.current&&Ue("voice",ne)},[ne,Ue]),u.useEffect(()=>{me&&!Le.current&&Ue("lpmm_knowledge",me)},[me,Ue]),u.useEffect(()=>{Q&&!Le.current&&Ue("keyword_reaction",Q)},[Q,Ue]),u.useEffect(()=>{ge&&!Le.current&&Ue("response_post_process",ge)},[ge,Ue]),u.useEffect(()=>{O&&!Le.current&&Ue("chinese_typo",O)},[O,Ue]),u.useEffect(()=>{A&&!Le.current&&Ue("response_splitter",A)},[A,Ue]),u.useEffect(()=>{_e&&!Le.current&&Ue("log",_e)},[_e,Ue]),u.useEffect(()=>{ss&&!Le.current&&Ue("debug",ss)},[ss,Ue]),u.useEffect(()=>{Rs&&!Le.current&&Ue("maim_message",Rs)},[Rs,Ue]),u.useEffect(()=>{ie&&!Le.current&&Ue("telemetry",ie)},[ie,Ue]);const jt=async()=>{try{d(!0),await V0(L),j(!1),R(!1),ee({title:"保存成功",description:"配置已保存"}),await bt()}catch(Se){R(!0),ee({variant:"destructive",title:"保存失败",description:Se instanceof Error?Se.message:"保存配置失败"})}finally{d(!1)}},nt=async Se=>{if(f){ee({variant:"destructive",title:"切换失败",description:"请先保存当前更改"});return}if(T(Se),Se==="source")await Jt();else try{const Re=await ip();st.current=Re,E(Re.bot),X(Re.personality);const it=Re.chat;it.talk_value_rules||(it.talk_value_rules=[]),D(it),xe(Re.expression),ye(Re.emoji),pe(Re.memory),y(Re.tool),H(Re.mood),S(Re.voice),he(Re.lpmm_knowledge),oe(Re.keyword_reaction),le(Re.response_post_process),F(Re.chinese_typo),W(Re.response_splitter),Me(Re.log),Ie(Re.debug),qs(Re.maim_message),we(Re.telemetry),j(!1)}catch(Re){console.error("加载配置失败:",Re),ee({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}},Ct=async()=>{try{d(!0),Ke.current&&clearTimeout(Ke.current);const Se={...st.current,bot:V,personality:B,chat:w,expression:te,emoji:be,memory:ve,tool:Ne,mood:q,voice:ne,lpmm_knowledge:me,keyword_reaction:Q,response_post_process:ge,chinese_typo:O,response_splitter:A,log:_e,debug:ss,maim_message:Rs,telemetry:ie};await rp(Se),j(!1),ee({title:"保存成功",description:"麦麦主程序配置已保存"})}catch(Se){console.error("保存配置失败:",Se),ee({title:"保存失败",description:Se.message,variant:"destructive"})}finally{d(!1)}},kt=async()=>{try{_(!0),co().catch(()=>{}),k(!0)}catch(Se){console.error("重启失败:",Se),k(!1),ee({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),_(!1)}},rl=async()=>{try{d(!0),Ke.current&&clearTimeout(Ke.current);const Se={...st.current,bot:V,personality:B,chat:w,expression:te,emoji:be,memory:ve,tool:Ne,mood:q,voice:ne,lpmm_knowledge:me,keyword_reaction:Q,response_post_process:ge,chinese_typo:O,response_splitter:A,log:_e,debug:ss,maim_message:Rs,telemetry:ie};await rp(Se),j(!1),ee({title:"保存成功",description:"配置已保存,即将重启麦麦..."}),await new Promise(Re=>setTimeout(Re,500)),await kt()}catch(Se){console.error("保存失败:",Se),ee({title:"保存失败",description:Se.message,variant:"destructive"})}finally{d(!1)}},cl=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},ol=()=>{k(!1),_(!1),ee({title:"重启失败",description:"服务器未能在预期时间内恢复,请手动检查",variant:"destructive"})};return n?e.jsx(es,{className:"h-full",children:e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):e.jsx(es,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦主程序配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的核心功能和行为设置"})]}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto items-center",children:[e.jsx(Kt,{value:z,onValueChange:Se=>nt(Se),className:"w-auto",children:e.jsxs(Rt,{className:"h-9",children:[e.jsxs(He,{value:"visual",className:"text-xs sm:text-sm px-2 sm:px-3",children:[e.jsx(MN,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"可视化"]}),e.jsxs(He,{value:"source",className:"text-xs sm:text-sm px-2 sm:px-3",children:[e.jsx(AN,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"源代码"]})]})}),e.jsxs(N,{onClick:z==="visual"?Ct:jt,disabled:c||h||!f||g,size:"sm",variant:"outline",className:"flex-1 sm:flex-none",children:[e.jsx(br,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),c?"保存中...":h?"自动保存中...":f?"保存配置":"已保存"]}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(N,{disabled:c||h||g,size:"sm",className:"flex-1 sm:flex-none",children:[e.jsx(Nr,{className:"mr-2 h-4 w-4"}),g?"重启中...":f?"保存并重启":"重启麦麦"]})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认重启麦麦?"}),e.jsx(ms,{className:"space-y-3",asChild:!0,children:e.jsxs("div",{children:[e.jsx("p",{children:f?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),e.jsxs(ua,{className:"border-yellow-500/50 bg-yellow-500/10",children:[e.jsx(Xt,{className:"h-4 w-4 text-yellow-600"}),e.jsxs(ma,{className:"text-yellow-900 dark:text-yellow-100",children:[e.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",e.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",e.jsxs(Os,{children:[e.jsx(ni,{asChild:!0,children:e.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[e.jsx(ro,{className:"h-3 w-3"}),"如何结束程序?"]})}),e.jsxs(Es,{className:"max-w-2xl",children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"如何结束使用重启功能后的麦麦程序"}),e.jsx($s,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),e.jsxs(Kt,{defaultValue:"windows",className:"w-full",children:[e.jsxs(Rt,{className:"grid w-full grid-cols-3",children:[e.jsx(He,{value:"windows",children:"Windows"}),e.jsx(He,{value:"macos",children:"macOS"}),e.jsx(He,{value:"linux",children:"Linux"})]}),e.jsxs(We,{value:"windows",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),e.jsxs("li",{children:['在"进程"或"详细信息"标签页中找到 ',e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),e.jsx("li",{children:'右键点击并选择"结束任务"'})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),e.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),e.jsxs(We,{value:"macos",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"}),' 打开 Spotlight,搜索"活动监视器"']}),e.jsxs("li",{children:["在进程列表中找到 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),e.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:"ps aux | grep python | grep -v grep"}),e.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),e.jsx("p",{children:"kill -9 "}),e.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"pkill -9 python"})]})]})]}),e.jsxs(We,{value:"linux",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:"ps aux | grep python | grep -v grep"}),e.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),e.jsx("p",{children:"kill -9 "}),e.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),e.jsx("p",{children:'pkill -9 -f "bot.py"'}),e.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"pkill -9 python"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["在终端输入 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),e.jsx(Is,{children:e.jsx(Zu,{asChild:!0,children:e.jsx(N,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:f?rl:kt,children:f?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsxs(ua,{children:[e.jsx(Xt,{className:"h-4 w-4"}),e.jsxs(ma,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),z==="source"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs(ua,{children:[e.jsx(Xt,{className:"h-4 w-4"}),e.jsxs(ma,{children:[e.jsx("strong",{children:"源代码模式(高级功能):"}),"直接编辑 TOML 配置文件。此功能仅适用于熟悉 TOML 语法的高级用户。保存时会在后端验证格式,只有格式完全正确才能保存。",U&&e.jsx("span",{className:"text-destructive font-semibold ml-2",children:"⚠️ 上次保存失败,请检查 TOML 格式"})]})]}),e.jsx(I0,{value:L,onChange:Se=>{K(Se),j(!0),U&&R(!1)},language:"toml",theme:"dark",height:"calc(100vh - 280px)",minHeight:"500px",placeholder:"TOML 配置内容"})]}),z==="visual"&&e.jsx(e.Fragment,{children:e.jsxs(Kt,{defaultValue:"bot",className:"w-full",children:[e.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:e.jsxs(Rt,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5 lg:grid-cols-10",children:[e.jsx(He,{value:"bot",className:"flex-shrink-0",children:"基本信息"}),e.jsx(He,{value:"personality",className:"flex-shrink-0",children:"人格"}),e.jsx(He,{value:"chat",className:"flex-shrink-0",children:"聊天"}),e.jsx(He,{value:"expression",className:"flex-shrink-0",children:"表达"}),e.jsx(He,{value:"features",className:"flex-shrink-0",children:"功能"}),e.jsx(He,{value:"processing",className:"flex-shrink-0",children:"处理"}),e.jsx(He,{value:"mood",className:"flex-shrink-0",children:"情绪"}),e.jsx(He,{value:"voice",className:"flex-shrink-0",children:"语音"}),e.jsx(He,{value:"lpmm",className:"flex-shrink-0",children:"知识库"}),e.jsx(He,{value:"other",className:"flex-shrink-0",children:"其他"})]})}),e.jsx(We,{value:"bot",className:"space-y-4",children:V&&e.jsx(P0,{config:V,onChange:E})}),e.jsx(We,{value:"personality",className:"space-y-4",children:B&&e.jsx(W0,{config:B,onChange:X})}),e.jsx(We,{value:"chat",className:"space-y-4",children:w&&e.jsx(ew,{config:w,onChange:D})}),e.jsx(We,{value:"expression",className:"space-y-4",children:te&&e.jsx(tw,{config:te,onChange:xe})}),e.jsx(We,{value:"features",className:"space-y-4",children:be&&ve&&Ne&&e.jsx(aw,{emojiConfig:be,memoryConfig:ve,toolConfig:Ne,onEmojiChange:ye,onMemoryChange:pe,onToolChange:y})}),e.jsx(We,{value:"processing",className:"space-y-4",children:Q&&ge&&O&&A&&e.jsx(lw,{keywordReactionConfig:Q,responsePostProcessConfig:ge,chineseTypoConfig:O,responseSplitterConfig:A,onKeywordReactionChange:oe,onResponsePostProcessChange:le,onChineseTypoChange:F,onResponseSplitterChange:W})}),e.jsx(We,{value:"mood",className:"space-y-4",children:q&&e.jsx(nw,{config:q,onChange:H})}),e.jsx(We,{value:"voice",className:"space-y-4",children:ne&&e.jsx(iw,{config:ne,onChange:S})}),e.jsx(We,{value:"lpmm",className:"space-y-4",children:me&&e.jsx(rw,{config:me,onChange:he})}),e.jsxs(We,{value:"other",className:"space-y-4",children:[_e&&e.jsx(cw,{config:_e,onChange:Me}),ss&&e.jsx(ow,{config:ss,onChange:Ie}),Rs&&e.jsx(dw,{config:Rs,onChange:qs}),ie&&e.jsx(uw,{config:ie,onChange:we})]})]})}),v&&e.jsx(Iu,{onRestartComplete:cl,onRestartFailed:ol})]})})}function P0({config:n,onChange:r}){const c=()=>{r({...n,platforms:[...n.platforms,""]})},d=g=>{r({...n,platforms:n.platforms.filter((_,v)=>v!==g)})},h=(g,_)=>{const v=[...n.platforms];v[g]=_,r({...n,platforms:v})},x=()=>{r({...n,alias_names:[...n.alias_names,""]})},f=g=>{r({...n,alias_names:n.alias_names.filter((_,v)=>v!==g)})},j=(g,_)=>{const v=[...n.alias_names];v[g]=_,r({...n,alias_names:v})};return e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"基本信息"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"platform",children:"平台"}),e.jsx(ce,{id:"platform",value:n.platform,onChange:g=>r({...n,platform:g.target.value}),placeholder:"qq"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"qq_account",children:"QQ账号"}),e.jsx(ce,{id:"qq_account",value:n.qq_account,onChange:g=>r({...n,qq_account:g.target.value}),placeholder:"123456789"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"nickname",children:"昵称"}),e.jsx(ce,{id:"nickname",value:n.nickname,onChange:g=>r({...n,nickname:g.target.value}),placeholder:"麦麦"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:"其他平台账号"}),e.jsxs(N,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(gt,{className:"h-4 w-4 mr-1"}),"添加"]})]}),e.jsxs("div",{className:"space-y-2",children:[n.platforms.map((g,_)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{value:g,onChange:v=>h(_,v.target.value),placeholder:"wx:114514"}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(N,{size:"icon",variant:"outline",children:e.jsx(ns,{className:"h-4 w-4"})})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:['确定要删除平台账号 "',g||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>d(_),children:"删除"})]})]})]})]},_)),n.platforms.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无其他平台账号"})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:"别名"}),e.jsxs(N,{onClick:x,size:"sm",variant:"outline",children:[e.jsx(gt,{className:"h-4 w-4 mr-1"}),"添加"]})]}),e.jsxs("div",{className:"space-y-2",children:[n.alias_names.map((g,_)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{value:g,onChange:v=>j(_,v.target.value),placeholder:"小麦"}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(N,{size:"icon",variant:"outline",children:e.jsx(ns,{className:"h-4 w-4"})})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:['确定要删除别名 "',g||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>f(_),children:"删除"})]})]})]})]},_)),n.alias_names.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无别名"})]})]})]})]})})}function W0({config:n,onChange:r}){const c=()=>{r({...n,states:[...n.states,""]})},d=x=>{r({...n,states:n.states.filter((f,j)=>j!==x)})},h=(x,f)=>{const j=[...n.states];j[x]=f,r({...n,states:j})};return e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"人格设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"personality",children:"人格特质"}),e.jsx(Us,{id:"personality",value:n.personality,onChange:x=>r({...n,personality:x.target.value}),placeholder:"描述人格特质和身份特征(建议120字以内)",rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"建议120字以内,描述人格特质和身份特征"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"reply_style",children:"表达风格"}),e.jsx(Us,{id:"reply_style",value:n.reply_style,onChange:x=>r({...n,reply_style:x.target.value}),placeholder:"描述说话的表达风格和习惯",rows:3})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"interest",children:"兴趣"}),e.jsx(Us,{id:"interest",value:n.interest,onChange:x=>r({...n,interest:x.target.value}),placeholder:"会影响麦麦对什么话题进行回复",rows:2})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"plan_style",children:"说话规则与行为风格"}),e.jsx(Us,{id:"plan_style",value:n.plan_style,onChange:x=>r({...n,plan_style:x.target.value}),placeholder:"麦麦的说话规则和行为风格",rows:5})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"visual_style",children:"识图规则"}),e.jsx(Us,{id:"visual_style",value:n.visual_style,onChange:x=>r({...n,visual_style:x.target.value}),placeholder:"识图时的处理规则",rows:3})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"private_plan_style",children:"私聊规则"}),e.jsx(Us,{id:"private_plan_style",value:n.private_plan_style,onChange:x=>r({...n,private_plan_style:x.target.value}),placeholder:"私聊的说话规则和行为风格",rows:4})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:"状态列表(人格多样性)"}),e.jsxs(N,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(gt,{className:"h-4 w-4 mr-1"}),"添加状态"]})]}),e.jsx("div",{className:"space-y-2",children:n.states.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Us,{value:x,onChange:j=>h(f,j.target.value),placeholder:"描述一个人格状态",rows:2}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(N,{size:"icon",variant:"outline",children:e.jsx(ns,{className:"h-4 w-4"})})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsx(ms,{children:"确定要删除这个人格状态吗?此操作无法撤销。"})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>d(f),children:"删除"})]})]})]})]},f))})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"state_probability",children:"状态替换概率"}),e.jsx(ce,{id:"state_probability",type:"number",step:"0.1",min:"0",max:"1",value:n.state_probability,onChange:x=>r({...n,state_probability:parseFloat(x.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"每次构建人格时替换 personality 的概率(0.0-1.0)"})]})]})]})})}function ew({config:n,onChange:r}){const c=()=>{r({...n,talk_value_rules:[...n.talk_value_rules,{target:"",time:"00:00-23:59",value:1}]})},d=j=>{r({...n,talk_value_rules:n.talk_value_rules.filter((g,_)=>_!==j)})},h=(j,g,_)=>{const v=[...n.talk_value_rules];v[j]={...v[j],[g]:_},r({...n,talk_value_rules:v})},x=({value:j,onChange:g})=>{const[_,v]=u.useState("00"),[k,z]=u.useState("00"),[T,L]=u.useState("23"),[K,U]=u.useState("59");u.useEffect(()=>{const ee=j.split("-");if(ee.length===2){const[V,E]=ee,[B,X]=V.split(":"),[w,D]=E.split(":");B&&v(B.padStart(2,"0")),X&&z(X.padStart(2,"0")),w&&L(w.padStart(2,"0")),D&&U(D.padStart(2,"0"))}},[j]);const R=(ee,V,E,B)=>{const X=`${ee}:${V}-${E}:${B}`;g(X)};return e.jsxs(Da,{children:[e.jsx(Oa,{asChild:!0,children:e.jsxs(N,{variant:"outline",className:"w-full justify-start font-mono text-sm",children:[e.jsx(Wn,{className:"h-4 w-4 mr-2"}),j||"选择时间段"]})}),e.jsx(Na,{className:"w-80",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"font-medium text-sm mb-3",children:"开始时间"}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-xs",children:"小时"}),e.jsxs(Qe,{value:_,onValueChange:ee=>{v(ee),R(ee,k,T,K)},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsx(Ve,{children:Array.from({length:24},(ee,V)=>V).map(ee=>e.jsx(ue,{value:ee.toString().padStart(2,"0"),children:ee.toString().padStart(2,"0")},ee))})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-xs",children:"分钟"}),e.jsxs(Qe,{value:k,onValueChange:ee=>{z(ee),R(_,ee,T,K)},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsx(Ve,{children:Array.from({length:60},(ee,V)=>V).map(ee=>e.jsx(ue,{value:ee.toString().padStart(2,"0"),children:ee.toString().padStart(2,"0")},ee))})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-medium text-sm mb-3",children:"结束时间"}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-xs",children:"小时"}),e.jsxs(Qe,{value:T,onValueChange:ee=>{L(ee),R(_,k,ee,K)},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsx(Ve,{children:Array.from({length:24},(ee,V)=>V).map(ee=>e.jsx(ue,{value:ee.toString().padStart(2,"0"),children:ee.toString().padStart(2,"0")},ee))})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-xs",children:"分钟"}),e.jsxs(Qe,{value:K,onValueChange:ee=>{U(ee),R(_,k,T,ee)},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsx(Ve,{children:Array.from({length:60},(ee,V)=>V).map(ee=>e.jsx(ue,{value:ee.toString().padStart(2,"0"),children:ee.toString().padStart(2,"0")},ee))})]})]})]})]})]})})]})},f=({rule:j})=>{const g=`{ target = "${j.target}", time = "${j.time}", value = ${j.value.toFixed(1)} }`;return e.jsxs(Da,{children:[e.jsx(Oa,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",children:[e.jsx(Zt,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(Na,{className:"w-96",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:g}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"聊天设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"talk_value",children:"聊天频率(基础值)"}),e.jsx(ce,{id:"talk_value",type:"number",step:"0.1",min:"0",max:"1",value:n.talk_value,onChange:j=>r({...n,talk_value:parseFloat(j.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"越小越沉默,范围 0-1"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"mentioned_bot_reply",checked:n.mentioned_bot_reply,onCheckedChange:j=>r({...n,mentioned_bot_reply:j})}),e.jsx(b,{htmlFor:"mentioned_bot_reply",className:"cursor-pointer",children:"启用提及必回复"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_context_size",children:"上下文长度"}),e.jsx(ce,{id:"max_context_size",type:"number",min:"1",value:n.max_context_size,onChange:j=>r({...n,max_context_size:parseInt(j.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"planner_smooth",children:"规划器平滑"}),e.jsx(ce,{id:"planner_smooth",type:"number",step:"1",min:"0",value:n.planner_smooth,onChange:j=>r({...n,planner_smooth:parseFloat(j.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"增大数值会减小 planner 负荷,推荐 1-5,0 为关闭"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"enable_talk_value_rules",checked:n.enable_talk_value_rules,onCheckedChange:j=>r({...n,enable_talk_value_rules:j})}),e.jsx(b,{htmlFor:"enable_talk_value_rules",className:"cursor-pointer",children:"启用动态发言频率规则"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"include_planner_reasoning",checked:n.include_planner_reasoning,onCheckedChange:j=>r({...n,include_planner_reasoning:j})}),e.jsx(b,{htmlFor:"include_planner_reasoning",className:"cursor-pointer",children:"将 planner 推理加入 replyer"})]})]})]}),n.enable_talk_value_rules&&e.jsxs("div",{className:"border-t pt-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"动态发言频率规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"按时段或聊天流ID调整发言频率,优先匹配具体聊天,再匹配全局规则"})]}),e.jsxs(N,{onClick:c,size:"sm",children:[e.jsx(gt,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),n.talk_value_rules&&n.talk_value_rules.length>0?e.jsx("div",{className:"space-y-4",children:n.talk_value_rules.map((j,g)=>e.jsxs("div",{className:"rounded-lg border p-4 bg-muted/50 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium text-muted-foreground",children:["规则 #",g+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(f,{rule:j}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(N,{variant:"ghost",size:"sm",children:e.jsx(ns,{className:"h-4 w-4 text-destructive"})})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:["确定要删除规则 #",g+1," 吗?此操作无法撤销。"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>d(g),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"配置类型"}),e.jsxs(Qe,{value:j.target===""?"global":"specific",onValueChange:_=>{_==="global"?h(g,"target",""):h(g,"target","qq::group")},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"global",children:"全局配置"}),e.jsx(ue,{value:"specific",children:"详细配置"})]})]})]}),j.target!==""&&(()=>{const _=j.target.split(":"),v=_[0]||"qq",k=_[1]||"",z=_[2]||"group";return e.jsxs("div",{className:"grid gap-4 p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"平台"}),e.jsxs(Qe,{value:v,onValueChange:T=>{h(g,"target",`${T}:${k}:${z}`)},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"qq",children:"QQ"}),e.jsx(ue,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"群 ID"}),e.jsx(ce,{value:k,onChange:T=>{h(g,"target",`${v}:${T.target.value}:${z}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"类型"}),e.jsxs(Qe,{value:z,onValueChange:T=>{h(g,"target",`${v}:${k}:${T}`)},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"group",children:"群组(group)"}),e.jsx(ue,{value:"private",children:"私聊(private)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",j.target||"(未设置)"]})]})})(),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"时间段 (Time)"}),e.jsx(x,{value:j.time,onChange:_=>h(g,"time",_)}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"支持跨夜区间,例如 23:00-02:00"})]}),e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{htmlFor:`rule-value-${g}`,className:"text-xs font-medium",children:"发言频率值 (Value)"}),e.jsx(ce,{id:`rule-value-${g}`,type:"number",step:"0.01",min:"0.01",max:"1",value:j.value,onChange:_=>{const v=parseFloat(_.target.value);isNaN(v)||h(g,"value",Math.max(.01,Math.min(1,v)))},className:"w-20 h-8 text-xs"})]}),e.jsx(za,{value:[j.value],onValueChange:_=>h(g,"value",_[0]),min:.01,max:1,step:.01,className:"w-full"}),e.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[e.jsx("span",{children:"0.01 (极少发言)"}),e.jsx("span",{children:"0.5"}),e.jsx("span",{children:"1.0 (正常)"})]})]})]})]},g))}):e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:e.jsx("p",{className:"text-sm",children:'暂无规则,点击"添加规则"按钮创建'})}),e.jsxs("div",{className:"mt-4 p-4 bg-blue-50 dark:bg-blue-950/20 border border-blue-200 dark:border-blue-800 rounded-lg",children:[e.jsx("h5",{className:"text-sm font-semibold text-blue-900 dark:text-blue-100 mb-2",children:"📝 规则说明"}),e.jsxs("ul",{className:"text-xs text-blue-800 dark:text-blue-200 space-y-1",children:[e.jsxs("li",{children:["• ",e.jsx("strong",{children:"Target 为空"}),":全局规则,对所有聊天生效"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"Target 指定"}),":仅对特定聊天流生效(格式:platform:id:type)"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"优先级"}),":先匹配具体聊天流规则,再匹配全局规则"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"时间支持跨夜"}),":例如 23:00-02:00 表示晚上11点到次日凌晨2点"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"数值范围"}),":建议 0-1,0 表示完全沉默,1 表示正常发言"]})]})]})]})]})}function sw({member:n,groupIndex:r,memberIndex:c,availableChatIds:d,onUpdate:h,onRemove:x}){const f=d.includes(n)||n==="*",[j,g]=u.useState(!f);return e.jsxs("div",{className:"flex gap-2",children:[e.jsx("div",{className:"flex-1 flex gap-2",children:j?e.jsxs(e.Fragment,{children:[e.jsx(ce,{value:n,onChange:_=>h(r,c,_.target.value),placeholder:'输入 "*" 或 "qq:123456:group"',className:"flex-1"}),d.length>0&&e.jsx(N,{size:"sm",variant:"outline",onClick:()=>g(!1),title:"切换到下拉选择",children:"下拉"})]}):e.jsxs(e.Fragment,{children:[e.jsxs(Qe,{value:n,onValueChange:_=>h(r,c,_),children:[e.jsx(Ge,{className:"flex-1",children:e.jsx($e,{placeholder:"选择聊天流"})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"*",children:"* (全局共享)"}),d.map((_,v)=>e.jsx(ue,{value:_,children:_},v))]})]}),e.jsx(N,{size:"sm",variant:"outline",onClick:()=>g(!0),title:"切换到手动输入",children:"输入"})]})}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(N,{size:"icon",variant:"outline",children:e.jsx(ns,{className:"h-4 w-4"})})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:['确定要删除组成员 "',n||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>x(r,c),children:"删除"})]})]})]})]})}function tw({config:n,onChange:r}){const c=()=>{r({...n,learning_list:[...n.learning_list,["","enable","enable","1.0"]]})},d=k=>{r({...n,learning_list:n.learning_list.filter((z,T)=>T!==k)})},h=(k,z,T)=>{const L=[...n.learning_list];L[k][z]=T,r({...n,learning_list:L})},x=({rule:k})=>{const z=`["${k[0]}", "${k[1]}", "${k[2]}", "${k[3]}"]`;return e.jsxs(Da,{children:[e.jsx(Oa,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",children:[e.jsx(Zt,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(Na,{className:"w-96",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:z}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},f=()=>{r({...n,expression_groups:[...n.expression_groups,[]]})},j=k=>{r({...n,expression_groups:n.expression_groups.filter((z,T)=>T!==k)})},g=k=>{const z=[...n.expression_groups];z[k]=[...z[k],""],r({...n,expression_groups:z})},_=(k,z)=>{const T=[...n.expression_groups];T[k]=T[k].filter((L,K)=>K!==z),r({...n,expression_groups:T})},v=(k,z,T)=>{const L=[...n.expression_groups];L[k][z]=T,r({...n,expression_groups:L})};return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达学习配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置麦麦如何学习和使用表达方式"})]}),e.jsxs(N,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(gt,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),e.jsxs("div",{className:"space-y-4",children:[n.learning_list.map((k,z)=>{const T=n.learning_list.some((V,E)=>E!==z&&V[0]===""),L=k[0]==="",K=k[0].split(":"),U=K[0]||"qq",R=K[1]||"",ee=K[2]||"group";return e.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["规则 ",z+1," ",L&&"(全局配置)"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(x,{rule:k}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(N,{size:"sm",variant:"ghost",children:e.jsx(ns,{className:"h-4 w-4"})})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:["确定要删除学习规则 ",z+1," 吗?此操作无法撤销。"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>d(z),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"配置类型"}),e.jsxs(Qe,{value:L?"global":"specific",onValueChange:V=>{V==="global"?h(z,0,""):h(z,0,"qq::group")},disabled:T&&!L,children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"global",children:"全局配置"}),e.jsx(ue,{value:"specific",disabled:T&&!L,children:"详细配置"})]})]}),T&&!L&&e.jsx("p",{className:"text-xs text-amber-600",children:"已存在全局配置,无法创建新的全局配置"})]}),!L&&e.jsxs("div",{className:"grid gap-4 p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"平台"}),e.jsxs(Qe,{value:U,onValueChange:V=>{h(z,0,`${V}:${R}:${ee}`)},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"qq",children:"QQ"}),e.jsx(ue,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"群 ID"}),e.jsx(ce,{value:R,onChange:V=>{h(z,0,`${U}:${V.target.value}:${ee}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"类型"}),e.jsxs(Qe,{value:ee,onValueChange:V=>{h(z,0,`${U}:${R}:${V}`)},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"group",children:"群组(group)"}),e.jsx(ue,{value:"private",children:"私聊(private)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",k[0]||"(未设置)"]})]}),e.jsx("div",{className:"grid gap-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-xs font-medium",children:"使用学到的表达"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦使用从聊天中学到的表达方式"})]}),e.jsx(qe,{checked:k[1]==="enable",onCheckedChange:V=>h(z,1,V?"enable":"disable")})]})}),e.jsx("div",{className:"grid gap-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-xs font-medium",children:"学习表达"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦从聊天中学习新的表达方式"})]}),e.jsx(qe,{checked:k[2]==="enable",onCheckedChange:V=>h(z,2,V?"enable":"disable")})]})}),e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-xs font-medium",children:"学习强度"}),e.jsx(ce,{type:"number",step:"0.1",min:"0",max:"5",value:k[3],onChange:V=>{const E=parseFloat(V.target.value);isNaN(E)||h(z,3,Math.max(0,Math.min(5,E)).toFixed(1))},className:"w-20 h-8 text-xs"})]}),e.jsx(za,{value:[parseFloat(k[3])||1],onValueChange:V=>h(z,3,V[0].toFixed(1)),min:0,max:5,step:.1,className:"w-full"}),e.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[e.jsx("span",{children:"0 (不学习)"}),e.jsx("span",{children:"2.5"}),e.jsx("span",{children:"5.0 (快速学习)"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"影响学习频率,最短学习间隔 = 300/学习强度(秒)"})]})]})]},z)}),n.learning_list.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无学习规则,点击"添加规则"开始配置'})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达共享组配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置不同聊天流之间如何共享学到的表达方式"})]}),e.jsxs(N,{onClick:f,size:"sm",variant:"outline",children:[e.jsx(gt,{className:"h-4 w-4 mr-1"}),"添加共享组"]})]}),e.jsxs("div",{className:"space-y-4",children:[n.expression_groups.map((k,z)=>{const T=n.learning_list.map(L=>L[0]).filter(L=>L!=="");return e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["共享组 ",z+1,k.length===1&&k[0]==="*"&&"(全局共享)"]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(N,{onClick:()=>g(z),size:"sm",variant:"outline",children:e.jsx(gt,{className:"h-4 w-4"})}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(N,{size:"sm",variant:"ghost",children:e.jsx(ns,{className:"h-4 w-4"})})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:["确定要删除共享组 ",z+1," 吗?此操作无法撤销。"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>j(z),children:"删除"})]})]})]})]})]}),e.jsx("div",{className:"space-y-2",children:k.map((L,K)=>e.jsx(sw,{member:L,groupIndex:z,memberIndex:K,availableChatIds:T,onUpdate:v,onRemove:_},`${z}-${K}`))}),e.jsx("p",{className:"text-xs text-muted-foreground",children:'提示:可以从下拉框选择已配置的聊天流,或手动输入。输入 "*" 启用全局共享'})]},z)}),n.expression_groups.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无共享组,点击"添加共享组"开始配置'})]})]})})]})}function aw({emojiConfig:n,memoryConfig:r,toolConfig:c,onEmojiChange:d,onMemoryChange:h,onToolChange:x}){return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"工具设置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"enable_tool",checked:c.enable_tool,onCheckedChange:f=>x({...c,enable_tool:f})}),e.jsx(b,{htmlFor:"enable_tool",className:"cursor-pointer",children:"启用工具系统"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"允许麦麦使用各种工具来增强功能"})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"记忆设置"}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_agent_iterations",children:"记忆思考深度"}),e.jsx(ce,{id:"max_agent_iterations",type:"number",min:"1",value:r.max_agent_iterations,onChange:f=>h({...r,max_agent_iterations:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"最低为 1(不深入思考)"})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"表情包设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"emoji_chance",children:"表情包激活概率"}),e.jsx(ce,{id:"emoji_chance",type:"number",step:"0.1",min:"0",max:"1",value:n.emoji_chance,onChange:f=>d({...n,emoji_chance:parseFloat(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"范围 0-1,越大越容易发送表情包"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_reg_num",children:"最大注册数量"}),e.jsx(ce,{id:"max_reg_num",type:"number",min:"1",value:n.max_reg_num,onChange:f=>d({...n,max_reg_num:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦最多可以注册的表情包数量"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),e.jsx(ce,{id:"check_interval",type:"number",min:"1",value:n.check_interval,onChange:f=>d({...n,check_interval:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包(注册、破损、删除)的时间间隔"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"do_replace",checked:n.do_replace,onCheckedChange:f=>d({...n,do_replace:f})}),e.jsx(b,{htmlFor:"do_replace",className:"cursor-pointer",children:"达到最大数量时替换表情包"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"steal_emoji",checked:n.steal_emoji,onCheckedChange:f=>d({...n,steal_emoji:f})}),e.jsx(b,{htmlFor:"steal_emoji",className:"cursor-pointer",children:"偷取表情包"})]}),e.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"允许麦麦将看到的表情包据为己有"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"content_filtration",checked:n.content_filtration,onCheckedChange:f=>d({...n,content_filtration:f})}),e.jsx(b,{htmlFor:"content_filtration",className:"cursor-pointer",children:"启用表情包过滤"})]}),n.content_filtration&&e.jsxs("div",{className:"grid gap-2 pl-6 border-l-2 border-primary/20",children:[e.jsx(b,{htmlFor:"filtration_prompt",children:"过滤要求"}),e.jsx(ce,{id:"filtration_prompt",value:n.filtration_prompt,onChange:f=>d({...n,filtration_prompt:f.target.value}),placeholder:"符合公序良俗"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"只有符合此要求的表情包才会被保存"})]})]})]})})]})}function lw({keywordReactionConfig:n,responsePostProcessConfig:r,chineseTypoConfig:c,responseSplitterConfig:d,onKeywordReactionChange:h,onResponsePostProcessChange:x,onChineseTypoChange:f,onResponseSplitterChange:j}){const g=()=>{h({...n,regex_rules:[...n.regex_rules,{regex:[""],reaction:""}]})},_=E=>{h({...n,regex_rules:n.regex_rules.filter((B,X)=>X!==E)})},v=(E,B,X)=>{const w=[...n.regex_rules];B==="regex"&&typeof X=="string"?w[E]={...w[E],regex:[X]}:B==="reaction"&&typeof X=="string"&&(w[E]={...w[E],reaction:X}),h({...n,regex_rules:w})},k=({regex:E,reaction:B,onRegexChange:X,onReactionChange:w})=>{const[D,te]=u.useState(!1),[xe,be]=u.useState(""),[ye,ve]=u.useState(null),[pe,Ne]=u.useState(""),[y,q]=u.useState({}),[H,ne]=u.useState(""),S=u.useRef(null),[me,he]=u.useState("build"),Q=O=>O.replace(/\(\?P<([^>]+)>/g,"(?<$1>"),oe=(O,F=0)=>{const A=S.current;if(!A)return;const W=A.selectionStart||0,_e=A.selectionEnd||0,Me=E.substring(0,W)+O+E.substring(_e);X(Me),setTimeout(()=>{const ss=W+O.length+F;A.setSelectionRange(ss,ss),A.focus()},0)};u.useEffect(()=>{if(!E||!xe){ve(null),q({}),ne(B),Ne("");return}try{const O=Q(E),F=new RegExp(O,"g"),A=xe.match(F);ve(A),Ne("");const _e=new RegExp(O).exec(xe);if(_e&&_e.groups){q(_e.groups);let Me=B;Object.entries(_e.groups).forEach(([ss,Ie])=>{Me=Me.replace(new RegExp(`\\[${ss}\\]`,"g"),Ie||"")}),ne(Me)}else q({}),ne(B)}catch(O){Ne(O.message),ve(null),q({}),ne(B)}},[E,xe,B]);const ge=()=>{if(!xe||!ye||ye.length===0)return e.jsx("span",{className:"text-muted-foreground",children:xe||"请输入测试文本"});try{const O=Q(E),F=new RegExp(O,"g");let A=0;const W=[];let _e;for(;(_e=F.exec(xe))!==null;)_e.index>A&&W.push(e.jsx("span",{children:xe.substring(A,_e.index)},`text-${A}`)),W.push(e.jsx("span",{className:"bg-yellow-200 dark:bg-yellow-900 font-semibold",children:_e[0]},`match-${_e.index}`)),A=_e.index+_e[0].length;return A)",desc:"Python风格命名捕获组",moveCursor:-1},{label:"非捕获组",pattern:"(?:)",desc:"分组但不保存匹配结果",moveCursor:-1}]},{category:"字符类",items:[{label:"字符集",pattern:"[]",desc:"匹配括号内的任意字符",moveCursor:-1},{label:"排除字符",pattern:"[^]",desc:"匹配不在括号内的字符",moveCursor:-1},{label:"范围",pattern:"[a-z]",desc:"匹配a到z的字符"},{label:"中文字符",pattern:"[\\u4e00-\\u9fa5]",desc:"匹配中文汉字"}]},{category:"常用模板",items:[{label:"捕获词语",pattern:"(?P\\S+)",desc:"捕获一个词语"},{label:"捕获句子",pattern:"(?P.+)",desc:"捕获整个句子"},{label:"捕获数字",pattern:"(?P\\d+)",desc:"捕获一个或多个数字"},{label:"可选词语",pattern:"(?:词语1|词语2)",desc:"匹配多个可选项之一"}]}];return e.jsxs(Os,{open:D,onOpenChange:te,children:[e.jsx(ni,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",children:[e.jsx(ao,{className:"h-4 w-4 mr-1"}),"正则编辑器"]})}),e.jsxs(Es,{className:"max-w-[95vw] sm:max-w-[900px] max-h-[90vh]",children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"正则表达式编辑器"}),e.jsx($s,{className:"text-sm",children:"使用可视化工具构建正则表达式,并实时测试效果"})]}),e.jsx(es,{className:"max-h-[calc(90vh-120px)]",children:e.jsxs(Kt,{value:me,onValueChange:O=>he(O),className:"w-full",children:[e.jsxs(Rt,{className:"grid w-full grid-cols-2",children:[e.jsx(He,{value:"build",children:"🔧 构建器"}),e.jsx(He,{value:"test",children:"🧪 测试器"})]}),e.jsxs(We,{value:"build",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"正则表达式"}),e.jsx(ce,{ref:S,value:E,onChange:O=>X(O.target.value),className:"font-mono text-sm",placeholder:"点击下方按钮构建正则表达式..."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"Reaction 内容"}),e.jsx(Us,{value:B,onChange:O=>w(O.target.value),placeholder:"使用 [捕获组名] 引用捕获的内容...",rows:3,className:"text-sm"})]}),e.jsxs("div",{className:"space-y-4 border-t pt-4",children:[le.map(O=>e.jsxs("div",{className:"space-y-2",children:[e.jsx("h5",{className:"text-xs font-semibold text-primary",children:O.category}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:O.items.map(F=>e.jsx(N,{variant:"outline",size:"sm",className:"justify-start h-auto py-2 px-3",onClick:()=>oe(F.pattern,F.moveCursor||0),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsxs("div",{className:"flex items-center gap-2 w-full",children:[e.jsx("span",{className:"text-xs font-medium",children:F.label}),e.jsx("code",{className:"ml-auto text-xs bg-muted px-1.5 py-0.5 rounded font-mono",children:F.pattern})]}),e.jsx("span",{className:"text-xs text-muted-foreground mt-0.5",children:F.desc})]})},F.label))})]},O.category)),e.jsxs("div",{className:"space-y-2 border-t pt-4",children:[e.jsx("h5",{className:"text-xs font-semibold text-primary",children:"完整示例模板"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>X("^(?P\\S{1,20})是这样的$"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsxs("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:["^(?P\\S","{1,20}",")是这样的$"]}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「某事物是这样的」并捕获事物名称"})]})}),e.jsx(N,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>X("(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「我没要求你做某事」并捕获具体行为"})]})}),e.jsx(N,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>X("(?P.+?)(?:是|为什么|怎么)"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?P.+?)(?:是|为什么|怎么)"}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"捕获问题主题词"})]})})]})]})]}),e.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 使用提示"}),e.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"点击输入框设置光标位置,然后点击按钮插入模式"}),e.jsxs("li",{children:["命名捕获组格式:",e.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"(?P<名称>模式)"})]}),e.jsxs("li",{children:["在 reaction 中使用 ",e.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"[名称]"})," 引用捕获的内容"]}),e.jsx("li",{children:"切换到测试器标签页验证正则表达式效果"})]})]})]}),e.jsxs(We,{value:"test",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"当前正则表达式"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:E||"(未设置)"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"test-text",className:"text-sm font-medium",children:"测试文本"}),e.jsx(Us,{id:"test-text",value:xe,onChange:O=>be(O.target.value),placeholder:`在此输入要测试的文本... +例如:打游戏是这样的`,className:"min-h-[100px] text-sm"})]}),pe&&e.jsxs("div",{className:"rounded-md bg-destructive/10 border border-destructive/20 p-3",children:[e.jsx("p",{className:"text-sm text-destructive font-medium",children:"正则表达式错误"}),e.jsx("p",{className:"text-xs text-destructive/80 mt-1",children:pe})]}),!pe&&xe&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"flex items-center gap-2",children:ye&&ye.length>0?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-green-500"}),e.jsxs("span",{className:"text-sm font-medium text-green-600 dark:text-green-400",children:["匹配成功 (",ye.length," 处)"]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-gray-400"}),e.jsx("span",{className:"text-sm font-medium text-muted-foreground",children:"无匹配"})]})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"匹配高亮"}),e.jsx(es,{className:"h-40 rounded-md bg-muted p-3",children:e.jsx("div",{className:"text-sm break-words",children:ge()})})]}),Object.keys(y).length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"命名捕获组"}),e.jsx(es,{className:"h-32 rounded-md border p-3",children:e.jsx("div",{className:"space-y-2",children:Object.entries(y).map(([O,F])=>e.jsxs("div",{className:"flex items-start gap-2 text-sm",children:[e.jsxs("span",{className:"font-mono font-semibold text-primary min-w-[80px]",children:["[",O,"]"]}),e.jsx("span",{className:"text-muted-foreground",children:"="}),e.jsx("span",{className:"font-mono bg-muted px-2 py-0.5 rounded",children:F})]},O))})})]}),Object.keys(y).length>0&&B&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"Reaction 替换预览"}),e.jsx(es,{className:"h-48 rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3",children:e.jsx("div",{className:"text-sm break-words",children:H})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"reaction 中的 [name] 已被替换为对应的捕获组值"})]})]}),e.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 测试说明"}),e.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"匹配的文本会以黄色背景高亮显示"}),e.jsx("li",{children:"命名捕获组的值会显示在下方列表中"}),e.jsx("li",{children:"Reaction 替换预览显示最终生成的反应内容"}),e.jsx("li",{children:"如需修改正则,切换回构建器标签页"})]})]})]})]})})]})]})},z=()=>{h({...n,keyword_rules:[...n.keyword_rules,{keywords:[],reaction:""}]})},T=E=>{h({...n,keyword_rules:n.keyword_rules.filter((B,X)=>X!==E)})},L=(E,B,X)=>{const w=[...n.keyword_rules];typeof X=="string"&&(w[E]={...w[E],reaction:X}),h({...n,keyword_rules:w})},K=E=>{const B=[...n.keyword_rules];B[E]={...B[E],keywords:[...B[E].keywords||[],""]},h({...n,keyword_rules:B})},U=(E,B)=>{const X=[...n.keyword_rules];X[E]={...X[E],keywords:(X[E].keywords||[]).filter((w,D)=>D!==B)},h({...n,keyword_rules:X})},R=(E,B,X)=>{const w=[...n.keyword_rules],D=[...w[E].keywords||[]];D[B]=X,w[E]={...w[E],keywords:D},h({...n,keyword_rules:w})},ee=({rule:E})=>{const B=`{ regex = [${(E.regex||[]).map(X=>`"${X}"`).join(", ")}], reaction = "${E.reaction}" }`;return e.jsxs(Da,{children:[e.jsx(Oa,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",children:[e.jsx(Zt,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(Na,{className:"w-[95vw] sm:w-[500px]",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx(es,{className:"h-60 rounded-md bg-muted p-3",children:e.jsx("pre",{className:"font-mono text-xs break-all",children:B})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},V=({rule:E})=>{const B=`[[keyword_reaction.keyword_rules]] +keywords = [${(E.keywords||[]).map(X=>`"${X}"`).join(", ")}] +reaction = "${E.reaction}"`;return e.jsxs(Da,{children:[e.jsx(Oa,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",children:[e.jsx(Zt,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(Na,{className:"w-[95vw] sm:w-[500px]",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx(es,{className:"h-60 rounded-md bg-muted p-3",children:e.jsx("pre",{className:"font-mono text-xs whitespace-pre-wrap break-all",children:B})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"关键词反应配置"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"配置触发特定反应的关键词和正则表达式规则"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"正则表达式规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用正则表达式匹配消息内容"})]}),e.jsxs(N,{onClick:g,size:"sm",variant:"outline",children:[e.jsx(gt,{className:"h-4 w-4 mr-1"}),"添加正则规则"]})]}),e.jsxs("div",{className:"space-y-3",children:[n.regex_rules.map((E,B)=>e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["正则规则 ",B+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{regex:E.regex&&E.regex[0]||"",reaction:E.reaction,onRegexChange:X=>v(B,"regex",X),onReactionChange:X=>v(B,"reaction",X)}),e.jsx(ee,{rule:E}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(N,{size:"sm",variant:"ghost",children:e.jsx(ns,{className:"h-4 w-4"})})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:["确定要删除正则规则 ",B+1," 吗?此操作无法撤销。"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>_(B),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"正则表达式(Python 语法)"}),e.jsx(ce,{value:E.regex&&E.regex[0]||"",onChange:X=>v(B,"regex",X.target.value),placeholder:"例如:^(?P\\\\S{1,20})是这样的$ (点击正则编辑器按钮可视化构建)",className:"font-mono text-sm"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:'支持命名捕获组 (?Ppattern),可在 reaction 中使用 [name] 引用。点击"正则编辑器"可视化构建和测试!'})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"反应内容"}),e.jsx(Us,{value:E.reaction,onChange:X=>v(B,"reaction",X.target.value),placeholder:`触发后麦麦的反应... +可以使用 [捕获组名] 来引用正则表达式中的内容`,rows:3,className:"text-sm"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"使用 [捕获组名] 引用正则表达式中的命名捕获组,例如 [n] 会被替换为捕获的内容"})]})]})]},B)),n.regex_rules.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无正则规则,点击"添加正则规则"开始配置'})]})]}),e.jsxs("div",{className:"space-y-4 border-t pt-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"关键词规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用关键词列表匹配消息内容"})]}),e.jsxs(N,{onClick:z,size:"sm",variant:"outline",children:[e.jsx(gt,{className:"h-4 w-4 mr-1"}),"添加关键词规则"]})]}),e.jsxs("div",{className:"space-y-3",children:[n.keyword_rules.map((E,B)=>e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["关键词规则 ",B+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(V,{rule:E}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(N,{size:"sm",variant:"ghost",children:e.jsx(ns,{className:"h-4 w-4"})})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:["确定要删除关键词规则 ",B+1," 吗?此操作无法撤销。"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>T(B),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-xs font-medium",children:"关键词列表"}),e.jsxs(N,{onClick:()=>K(B),size:"sm",variant:"ghost",children:[e.jsx(gt,{className:"h-3 w-3 mr-1"}),"添加关键词"]})]}),e.jsxs("div",{className:"space-y-2",children:[(E.keywords||[]).map((X,w)=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{value:X,onChange:D=>R(B,w,D.target.value),placeholder:"关键词",className:"flex-1"}),e.jsx(N,{onClick:()=>U(B,w),size:"sm",variant:"ghost",children:e.jsx(ns,{className:"h-4 w-4"})})]},w)),(!E.keywords||E.keywords.length===0)&&e.jsx("p",{className:"text-xs text-muted-foreground text-center py-2",children:'暂无关键词,点击"添加关键词"开始配置'})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"反应内容"}),e.jsx(Us,{value:E.reaction,onChange:X=>L(B,"reaction",X.target.value),placeholder:"触发后麦麦的反应...",rows:3,className:"text-sm"})]})]})]},B)),n.keyword_rules.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无关键词规则,点击"添加关键词规则"开始配置'})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"回复后处理配置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"enable_response_post_process",checked:r.enable_response_post_process,onCheckedChange:E=>x({...r,enable_response_post_process:E})}),e.jsx(b,{htmlFor:"enable_response_post_process",className:"cursor-pointer",children:"启用回复后处理"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"包括错别字生成器和回复分割器"})]}),r.enable_response_post_process&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"border-t pt-6 space-y-4",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[e.jsx(qe,{id:"enable_chinese_typo",checked:c.enable,onCheckedChange:E=>f({...c,enable:E})}),e.jsx(b,{htmlFor:"enable_chinese_typo",className:"cursor-pointer font-semibold",children:"中文错别字生成器"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"为回复添加随机错别字,让麦麦的回复更自然"}),c.enable&&e.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"error_rate",className:"text-xs font-medium",children:"单字替换概率"}),e.jsx(ce,{id:"error_rate",type:"number",step:"0.001",min:"0",max:"1",value:c.error_rate,onChange:E=>f({...c,error_rate:parseFloat(E.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"min_freq",className:"text-xs font-medium",children:"最小字频阈值"}),e.jsx(ce,{id:"min_freq",type:"number",min:"0",value:c.min_freq,onChange:E=>f({...c,min_freq:parseInt(E.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"tone_error_rate",className:"text-xs font-medium",children:"声调错误概率"}),e.jsx(ce,{id:"tone_error_rate",type:"number",step:"0.01",min:"0",max:"1",value:c.tone_error_rate,onChange:E=>f({...c,tone_error_rate:parseFloat(E.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"word_replace_rate",className:"text-xs font-medium",children:"整词替换概率"}),e.jsx(ce,{id:"word_replace_rate",type:"number",step:"0.001",min:"0",max:"1",value:c.word_replace_rate,onChange:E=>f({...c,word_replace_rate:parseFloat(E.target.value)})})]})]})]})}),e.jsx("div",{className:"border-t pt-6 space-y-4",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[e.jsx(qe,{id:"enable_response_splitter",checked:d.enable,onCheckedChange:E=>j({...d,enable:E})}),e.jsx(b,{htmlFor:"enable_response_splitter",className:"cursor-pointer font-semibold",children:"回复分割器"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"控制回复的长度和句子数量"}),d.enable&&e.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_length",className:"text-xs font-medium",children:"最大长度"}),e.jsx(ce,{id:"max_length",type:"number",min:"1",value:d.max_length,onChange:E=>j({...d,max_length:parseInt(E.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大字符数"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_sentence_num",className:"text-xs font-medium",children:"最大句子数"}),e.jsx(ce,{id:"max_sentence_num",type:"number",min:"1",value:d.max_sentence_num,onChange:E=>j({...d,max_sentence_num:parseInt(E.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大句子数量"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"enable_kaomoji_protection",checked:d.enable_kaomoji_protection,onCheckedChange:E=>j({...d,enable_kaomoji_protection:E})}),e.jsx(b,{htmlFor:"enable_kaomoji_protection",className:"cursor-pointer",children:"启用颜文字保护"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"enable_overflow_return_all",checked:d.enable_overflow_return_all,onCheckedChange:E=>j({...d,enable_overflow_return_all:E})}),e.jsx(b,{htmlFor:"enable_overflow_return_all",className:"cursor-pointer",children:"超出时一次性返回全部"})]}),e.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"当句子数量超出限制时,合并后一次性返回所有内容"})]})]})})]})]})]})}function nw({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"情绪设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{checked:n.enable_mood,onCheckedChange:c=>r({...n,enable_mood:c})}),e.jsx(b,{className:"cursor-pointer",children:"启用情绪系统"})]}),n.enable_mood&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"情绪更新阈值"}),e.jsx(ce,{type:"number",min:"1",value:n.mood_update_threshold,onChange:c=>r({...n,mood_update_threshold:parseInt(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"越高,更新越慢"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"情感特征"}),e.jsx(Us,{value:n.emotion_style,onChange:c=>r({...n,emotion_style:c.target.value}),placeholder:"影响情绪的变化情况",rows:2})]})]})]})]})}function iw({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"语音设置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{checked:n.enable_asr,onCheckedChange:c=>r({...n,enable_asr:c})}),e.jsx(b,{className:"cursor-pointer",children:"启用语音识别"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"启用后麦麦可以识别语音消息,需要配置语音识别模型"})]})}function rw({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{checked:n.enable,onCheckedChange:c=>r({...n,enable:c})}),e.jsx(b,{className:"cursor-pointer",children:"启用 LPMM 知识库"})]}),n.enable&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"LPMM 模式"}),e.jsxs(Qe,{value:n.lpmm_mode,onValueChange:c=>r({...n,lpmm_mode:c}),children:[e.jsx(Ge,{children:e.jsx($e,{placeholder:"选择 LPMM 模式"})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"classic",children:"经典模式"}),e.jsx(ue,{value:"agent",children:"Agent 模式"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"同义词搜索 TopK"}),e.jsx(ce,{type:"number",min:"1",value:n.rag_synonym_search_top_k,onChange:c=>r({...n,rag_synonym_search_top_k:parseInt(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"同义词阈值"}),e.jsx(ce,{type:"number",step:"0.1",min:"0",max:"1",value:n.rag_synonym_threshold,onChange:c=>r({...n,rag_synonym_threshold:parseFloat(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"实体提取线程数"}),e.jsx(ce,{type:"number",min:"1",value:n.info_extraction_workers,onChange:c=>r({...n,info_extraction_workers:parseInt(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"嵌入向量维度"}),e.jsx(ce,{type:"number",min:"1",value:n.embedding_dimension,onChange:c=>r({...n,embedding_dimension:parseInt(c.target.value)})})]})]})]})]})]})}function cw({config:n,onChange:r}){const[c,d]=u.useState(""),[h,x]=u.useState("WARNING"),f=()=>{c&&!n.suppress_libraries.includes(c)&&(r({...n,suppress_libraries:[...n.suppress_libraries,c]}),d(""))},j=T=>{r({...n,suppress_libraries:n.suppress_libraries.filter(L=>L!==T)})},g=()=>{c&&!n.library_log_levels[c]&&(r({...n,library_log_levels:{...n.library_log_levels,[c]:h}}),d(""),x("WARNING"))},_=T=>{const L={...n.library_log_levels};delete L[T],r({...n,library_log_levels:L})},v=["DEBUG","INFO","WARNING","ERROR","CRITICAL"],k=["FULL","compact","lite"],z=["none","title","full"];return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"日志配置"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"日期格式"}),e.jsx(ce,{value:n.date_style,onChange:T=>r({...n,date_style:T.target.value}),placeholder:"例如: m-d H:i:s"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"m=月, d=日, H=时, i=分, s=秒"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"日志级别样式"}),e.jsxs(Qe,{value:n.log_level_style,onValueChange:T=>r({...n,log_level_style:T}),children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsx(Ve,{children:k.map(T=>e.jsx(ue,{value:T,children:T},T))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"日志文本颜色"}),e.jsxs(Qe,{value:n.color_text,onValueChange:T=>r({...n,color_text:T}),children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsx(Ve,{children:z.map(T=>e.jsx(ue,{value:T,children:T},T))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"全局日志级别"}),e.jsxs(Qe,{value:n.log_level,onValueChange:T=>r({...n,log_level:T}),children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsx(Ve,{children:v.map(T=>e.jsx(ue,{value:T,children:T},T))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"控制台日志级别"}),e.jsxs(Qe,{value:n.console_log_level,onValueChange:T=>r({...n,console_log_level:T}),children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsx(Ve,{children:v.map(T=>e.jsx(ue,{value:T,children:T},T))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"文件日志级别"}),e.jsxs(Qe,{value:n.file_log_level,onValueChange:T=>r({...n,file_log_level:T}),children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsx(Ve,{children:v.map(T=>e.jsx(ue,{value:T,children:T},T))})]})]})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"mb-2 block",children:"完全屏蔽的库"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(ce,{value:c,onChange:T=>d(T.target.value),placeholder:"输入库名",className:"flex-1",onKeyDown:T=>{T.key==="Enter"&&(T.preventDefault(),f())}}),e.jsx(N,{onClick:f,size:"sm",className:"flex-shrink-0",children:e.jsx(gt,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:n.suppress_libraries.map(T=>e.jsxs("div",{className:"flex items-center gap-1 bg-secondary px-3 py-1 rounded-md",children:[e.jsx("span",{className:"text-sm",children:T}),e.jsx(N,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0",onClick:()=>j(T),children:e.jsx(ns,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},T))})]}),e.jsxs("div",{children:[e.jsx(b,{className:"mb-2 block",children:"特定库的日志级别"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(ce,{value:c,onChange:T=>d(T.target.value),placeholder:"输入库名",className:"flex-1"}),e.jsxs(Qe,{value:h,onValueChange:x,children:[e.jsx(Ge,{className:"w-32",children:e.jsx($e,{})}),e.jsx(Ve,{children:v.map(T=>e.jsx(ue,{value:T,children:T},T))})]}),e.jsx(N,{onClick:g,size:"sm",children:e.jsx(gt,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"space-y-2",children:Object.entries(n.library_log_levels).map(([T,L])=>e.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[e.jsx("span",{className:"text-sm font-medium",children:T}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:L}),e.jsx(N,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>_(T),children:e.jsx(ns,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]})]},T))})]})]})}function ow({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"调试配置"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否在日志中显示提示词"})]}),e.jsx(qe,{checked:n.show_prompt,onCheckedChange:c=>r({...n,show_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示回复器 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的提示词"})]}),e.jsx(qe,{checked:n.show_replyer_prompt,onCheckedChange:c=>r({...n,show_replyer_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示回复器推理"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的推理过程"})]}),e.jsx(qe,{checked:n.show_replyer_reasoning,onCheckedChange:c=>r({...n,show_replyer_reasoning:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示 Jargon Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示术语相关的提示词"})]}),e.jsx(qe,{checked:n.show_jargon_prompt,onCheckedChange:c=>r({...n,show_jargon_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示记忆检索 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示记忆检索相关的提示词"})]}),e.jsx(qe,{checked:n.show_memory_prompt,onCheckedChange:c=>r({...n,show_memory_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示 Planner Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 Planner 的提示词和原始返回结果"})]}),e.jsx(qe,{checked:n.show_planner_prompt,onCheckedChange:c=>r({...n,show_planner_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示 LPMM 相关文段"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 LPMM 知识库找到的相关文段日志"})]}),e.jsx(qe,{checked:n.show_lpmm_paragraph,onCheckedChange:c=>r({...n,show_lpmm_paragraph:c})})]})]})]})}function dw({config:n,onChange:r}){const[c,d]=u.useState(""),h=()=>{c&&!n.auth_token.includes(c)&&(r({...n,auth_token:[...n.auth_token,c]}),d(""))},x=f=>{r({...n,auth_token:n.auth_token.filter((j,g)=>g!==f)})};return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"MaimMessage 服务配置"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"启用自定义服务器"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否使用自定义的 MaimMessage 服务器"})]}),e.jsx(qe,{checked:n.use_custom,onCheckedChange:f=>r({...n,use_custom:f})})]}),n.use_custom&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"主机地址"}),e.jsx(ce,{value:n.host,onChange:f=>r({...n,host:f.target.value}),placeholder:"127.0.0.1"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"端口号"}),e.jsx(ce,{type:"number",value:n.port,onChange:f=>r({...n,port:parseInt(f.target.value)}),placeholder:"8090"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"连接模式"}),e.jsxs(Qe,{value:n.mode,onValueChange:f=>r({...n,mode:f}),children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"ws",children:"WebSocket (ws)"}),e.jsx(ue,{value:"tcp",children:"TCP"})]})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{checked:n.use_wss,onCheckedChange:f=>r({...n,use_wss:f}),disabled:n.mode!=="ws"}),e.jsx(b,{children:"使用 WSS 安全连接"})]})]}),n.use_wss&&n.mode==="ws"&&e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"SSL 证书文件路径"}),e.jsx(ce,{value:n.cert_file,onChange:f=>r({...n,cert_file:f.target.value}),placeholder:"cert.pem"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"SSL 密钥文件路径"}),e.jsx(ce,{value:n.key_file,onChange:f=>r({...n,key_file:f.target.value}),placeholder:"key.pem"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"mb-2 block",children:"认证令牌"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:"用于 API 验证,为空则不启用验证"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(ce,{value:c,onChange:f=>d(f.target.value),placeholder:"输入认证令牌",onKeyDown:f=>{f.key==="Enter"&&(f.preventDefault(),h())}}),e.jsx(N,{onClick:h,size:"sm",children:e.jsx(gt,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"space-y-2",children:n.auth_token.map((f,j)=>e.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[e.jsx("span",{className:"text-sm font-mono",children:f}),e.jsx(N,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>x(j),children:e.jsx(ns,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},j))})]})]})}function uw({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"统计信息"}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"启用统计信息发送"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"发送匿名统计信息,帮助我们了解全球有多少只麦麦在运行"})]}),e.jsx(qe,{checked:n.enable,onCheckedChange:c=>r({...n,enable:c})})]})]})}const ii=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{className:"relative w-full overflow-auto",children:e.jsx("table",{ref:c,className:$("w-full caption-bottom text-sm",n),...r})}));ii.displayName="Table";const ri=u.forwardRef(({className:n,...r},c)=>e.jsx("thead",{ref:c,className:$("[&_tr]:border-b",n),...r}));ri.displayName="TableHeader";const ci=u.forwardRef(({className:n,...r},c)=>e.jsx("tbody",{ref:c,className:$("[&_tr:last-child]:border-0",n),...r}));ci.displayName="TableBody";const mw=u.forwardRef(({className:n,...r},c)=>e.jsx("tfoot",{ref:c,className:$("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",n),...r}));mw.displayName="TableFooter";const pt=u.forwardRef(({className:n,...r},c)=>e.jsx("tr",{ref:c,className:$("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",n),...r}));pt.displayName="TableRow";const ls=u.forwardRef(({className:n,...r},c)=>e.jsx("th",{ref:c,className:$("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",n),...r}));ls.displayName="TableHead";const Ye=u.forwardRef(({className:n,...r},c)=>e.jsx("td",{ref:c,className:$("px-4 py-3 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",n),...r}));Ye.displayName="TableCell";const hw=u.forwardRef(({className:n,...r},c)=>e.jsx("caption",{ref:c,className:$("mt-4 text-sm text-muted-foreground",n),...r}));hw.displayName="TableCaption";const oo=u.forwardRef(({className:n,...r},c)=>e.jsx(Lt,{ref:c,className:$("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",n),...r}));oo.displayName=Lt.displayName;const uo=u.forwardRef(({className:n,...r},c)=>e.jsxs("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[e.jsx(St,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),e.jsx(Lt.Input,{ref:c,className:$("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",n),...r})]}));uo.displayName=Lt.Input.displayName;const mo=u.forwardRef(({className:n,...r},c)=>e.jsx(Lt.List,{ref:c,className:$("max-h-[300px] overflow-y-auto overflow-x-hidden",n),...r}));mo.displayName=Lt.List.displayName;const ho=u.forwardRef((n,r)=>e.jsx(Lt.Empty,{ref:r,className:"py-6 text-center text-sm",...n}));ho.displayName=Lt.Empty.displayName;const vr=u.forwardRef(({className:n,...r},c)=>e.jsx(Lt.Group,{ref:c,className:$("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",n),...r}));vr.displayName=Lt.Group.displayName;const xw=u.forwardRef(({className:n,...r},c)=>e.jsx(Lt.Separator,{ref:c,className:$("-mx-1 h-px bg-border",n),...r}));xw.displayName=Lt.Separator.displayName;const yr=u.forwardRef(({className:n,...r},c)=>e.jsx(Lt.Item,{ref:c,className:$("relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",n),...r}));yr.displayName=Lt.Item.displayName;const yt=u.forwardRef(({className:n,...r},c)=>e.jsx(rg,{ref:c,className:$("grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",n),...r,children:e.jsx(fN,{className:$("grid place-content-center text-current"),children:e.jsx(ha,{className:"h-4 w-4"})})}));yt.displayName=rg.displayName;const Ug=u.createContext(null),Bg="maibot-completed-tours";function fw(){try{const n=localStorage.getItem(Bg);return n?new Set(JSON.parse(n)):new Set}catch{return new Set}}function cp(n){localStorage.setItem(Bg,JSON.stringify([...n]))}function pw({children:n}){const[r,c]=u.useState({activeTourId:null,stepIndex:0,isRunning:!1}),d=u.useRef(new Map),[,h]=u.useState(0),[x,f]=u.useState(fw),j=u.useCallback((V,E)=>{d.current.set(V,E),h(B=>B+1)},[]),g=u.useCallback(V=>{d.current.delete(V),c(E=>E.activeTourId===V?{...E,activeTourId:null,isRunning:!1,stepIndex:0}:E)},[]),_=u.useCallback((V,E=0)=>{d.current.has(V)&&c({activeTourId:V,stepIndex:E,isRunning:!0})},[]),v=u.useCallback(()=>{c(V=>({...V,isRunning:!1}))},[]),k=u.useCallback(V=>{c(E=>({...E,stepIndex:V}))},[]),z=u.useCallback(()=>{c(V=>({...V,stepIndex:V.stepIndex+1}))},[]),T=u.useCallback(()=>{c(V=>({...V,stepIndex:Math.max(0,V.stepIndex-1)}))},[]),L=u.useCallback(()=>r.activeTourId?d.current.get(r.activeTourId)||[]:[],[r.activeTourId]),K=u.useCallback(V=>{f(E=>{const B=new Set(E);return B.add(V),cp(B),B})},[]),U=u.useCallback(V=>{const{action:E,index:B,status:X,type:w}=V,D=["finished","skipped"];if(E==="close"){c(te=>({...te,isRunning:!1,stepIndex:0}));return}D.includes(X)?c(te=>(X==="finished"&&te.activeTourId&&setTimeout(()=>K(te.activeTourId),0),{...te,isRunning:!1,stepIndex:0})):w==="step:after"&&(E==="next"?c(te=>({...te,stepIndex:B+1})):E==="prev"&&c(te=>({...te,stepIndex:B-1})))},[K]),R=u.useCallback(V=>x.has(V),[x]),ee=u.useCallback(V=>{f(E=>{const B=new Set(E);return B.delete(V),cp(B),B})},[]);return e.jsx(Ug.Provider,{value:{state:r,tours:d.current,registerTour:j,unregisterTour:g,startTour:_,stopTour:v,goToStep:k,nextStep:z,prevStep:T,getCurrentSteps:L,handleJoyrideCallback:U,isTourCompleted:R,markTourCompleted:K,resetTourCompleted:ee},children:n})}function Ju(){const n=u.useContext(Ug);if(!n)throw new Error("useTour must be used within a TourProvider");return n}const gw={options:{zIndex:1e4,primaryColor:"hsl(var(--primary))",textColor:"hsl(var(--foreground))",backgroundColor:"hsl(var(--background))",arrowColor:"hsl(var(--background))",overlayColor:"rgba(0, 0, 0, 0.5)"},tooltip:{borderRadius:"var(--radius)",padding:"1rem"},tooltipContainer:{textAlign:"left"},tooltipTitle:{fontSize:"1rem",fontWeight:600,marginBottom:"0.5rem"},tooltipContent:{fontSize:"0.875rem",padding:"0.5rem 0"},buttonNext:{backgroundColor:"hsl(var(--primary))",color:"hsl(var(--primary-foreground))",borderRadius:"calc(var(--radius) - 2px)",fontSize:"0.875rem",padding:"0.5rem 1rem"},buttonBack:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem",marginRight:"0.5rem"},buttonSkip:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem"},buttonClose:{color:"hsl(var(--muted-foreground))"},spotlight:{borderRadius:"var(--radius)"}},jw={back:"上一步",close:"关闭",last:"完成",next:"下一步",nextLabelWithProgress:"下一步 ({step}/{steps})",open:"打开对话框",skip:"跳过"};function vw(){const{state:n,getCurrentSteps:r,handleJoyrideCallback:c}=Ju(),d=r(),[h,x]=u.useState(!1),f=u.useRef(n.stepIndex),j=u.useRef(null);u.useEffect(()=>{f.current!==n.stepIndex&&(x(!1),f.current=n.stepIndex)},[n.stepIndex]),u.useEffect(()=>{if(!n.isRunning||d.length===0){x(!1);return}const v=d[n.stepIndex];if(!v){x(!1);return}const k=v.target;if(k==="body"){x(!0);return}x(!1);const z=setTimeout(()=>{const T=()=>{const R=document.querySelector(k);if(R){const ee=R.getBoundingClientRect();if(ee.width>0&&ee.height>0)return!0}return!1};if(T()){setTimeout(()=>x(!0),100);return}const L=setInterval(()=>{T()&&(clearInterval(L),setTimeout(()=>x(!0),100))},100),K=setTimeout(()=>{clearInterval(L),x(!0)},5e3),U=()=>{clearInterval(L),clearTimeout(K)};j.current=U},150);return()=>{clearTimeout(z),j.current&&(j.current(),j.current=null)}},[n.isRunning,n.stepIndex,d]);const g=u.useRef(null);if(u.useEffect(()=>{let v=document.getElementById("tour-portal-container");return v||(v=document.createElement("div"),v.id="tour-portal-container",v.style.cssText="position: fixed; top: 0; left: 0; z-index: 99999; pointer-events: none;",document.body.appendChild(v)),g.current=v,()=>{}},[]),!n.isRunning||d.length===0||!h)return null;const _=e.jsx(ib,{steps:d,stepIndex:n.stepIndex,run:n.isRunning,continuous:!0,showSkipButton:!0,showProgress:!0,disableOverlayClose:!0,disableScrolling:!1,disableScrollParentFix:!1,callback:c,styles:gw,locale:jw,scrollOffset:80,scrollToFirstStep:!0,floaterProps:{styles:{floater:{zIndex:99999}},disableAnimation:!0}},`tour-step-${n.stepIndex}`);return g.current?xy.createPortal(_,g.current):_}const ll="model-assignment-tour",Hg=[{target:"body",content:"本引导旨在帮助你配置模型提供商和对应的模型,并为麦麦的各个组件分配合适的模型。",placement:"center",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="sidebar-model-provider"]',content:'第一步,你需要配置模型提供商。模型提供商决定了你要使用谁家的模型,无论是单一厂商(如 DeepSeek),还是模型平台(如 Siliconflow),都可以在这里进行配置。点击"下一步"进入配置页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-provider-button"]',content:'点击"添加提供商"按钮,开始配置你的模型提供商。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="provider-dialog"]',content:"在这里,你可以选择你想要配置的模型提供商,填写相关信息后保存即可。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-name-input"]',content:"这里的名称是你为这个模型提供商起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-apikey-input"]',content:"这里需要填写你从模型提供商那里获取的 API 密钥,用于验证和调用模型服务。对于不同的提供商,获取 API 密钥的方式可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-url-input"]',content:"这里需要填写模型提供商的 API 访问地址,确保填写正确以便系统能够连接到模型服务。对于不同的提供商,API 地址可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-template-select"]',content:"当然,如果你不知道如何填写这些信息,很多模型提供商在这里都提供了预设的模板供你选择,选择对应的模板后,相关信息会自动填充。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-save-button"]',content:"填写完所有信息后,点击保存按钮,模型提供商就配置完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-cancel-button"]',content:"因为这次咱们什么都没有填写,所以点击取消按钮退出吧。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="sidebar-model-management"]',content:'配置好模型提供商后,接下来我们需要为麦麦添加模型并分配功能。点击"下一步"进入模型管理页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-model-button"]',content:'在为麦麦的组件分配模型之前,首先需要添加你想要分配的模型,点击"添加模型"按钮开始添加。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="model-dialog"]',content:"在这里,你可以选择你之前配置好的模型提供商,然后选择对应的模型来添加。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-name-input"]',content:"这里的模型名称是你为这个模型起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-provider-select"]',content:"在这里选择你之前配置好的模型提供商,这样系统才能知道你要添加哪个提供商的模型。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-identifier-input"]',content:"这里需要填写你想要添加的模型的标识符,不同的模型提供商可能有不同的标识符格式,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-save-button"]',content:"填写完所有信息后,点击保存按钮,模型就添加完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-cancel-button"]',content:"当然,因为这次咱们什么都没有填写,所以直接点击取消按钮退出吧,等你准备好了再来添加模型。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="tasks-tab-trigger"]',content:'最后一步,添加好模型后,切换到"为模型分配功能"标签页,为麦麦的各个组件分配合适的模型。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="task-model-select"]',content:"在这里,你可以为每个组件选择一个或多个合适的模型,选择完成后配置会自动保存。恭喜你完成了模型配置的学习!",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1}],qg={0:"/config/model",1:"/config/model",2:"/config/modelProvider",3:"/config/modelProvider",4:"/config/modelProvider",5:"/config/modelProvider",6:"/config/modelProvider",7:"/config/modelProvider",8:"/config/modelProvider",9:"/config/modelProvider",10:"/config/modelProvider",11:"/config/model",12:"/config/model",13:"/config/model",14:"/config/model",15:"/config/model",16:"/config/model",17:"/config/model",18:"/config/model",19:"/config/model"},rr=[{id:"siliconflow",name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",client_type:"openai",display_name:"硅基流动 (SiliconFlow)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"deepseek",name:"DeepSeek",base_url:"https://api.deepseek.com",client_type:"openai",display_name:"DeepSeek",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"rinkoai",name:"RinkoAI",base_url:"https://rinkoai.com/v1",client_type:"openai",display_name:"RinkoAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"zhipu",name:"ZhipuAI",base_url:"https://open.bigmodel.cn/api/paas/v4",client_type:"openai",display_name:"智谱 AI (ZhipuAI / GLM)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"moonshot",name:"Moonshot",base_url:"https://api.moonshot.cn/v1",client_type:"openai",display_name:"月之暗面 (Moonshot / Kimi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"doubao",name:"Doubao",base_url:"https://ark.cn-beijing.volces.com/api/v3",client_type:"openai",display_name:"字节豆包 (Doubao)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"alibaba",name:"Alibaba",base_url:"https://dashscope.aliyuncs.com/compatible-mode/v1",client_type:"openai",display_name:"阿里云百炼 (Alibaba Qwen)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"baichuan",name:"Baichuan",base_url:"https://api.baichuan-ai.com/v1",client_type:"openai",display_name:"百川智能 (Baichuan)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"minimax",name:"MiniMax",base_url:"https://api.minimax.chat/v1",client_type:"openai",display_name:"MiniMax (海螺 AI)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"stepfun",name:"StepFun",base_url:"https://api.stepfun.com/v1",client_type:"openai",display_name:"阶跃星辰 (StepFun)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"lingyi",name:"Lingyi",base_url:"https://api.lingyiwanwu.com/v1",client_type:"openai",display_name:"零一万物 (Lingyi / Yi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"openai",name:"OpenAI",base_url:"https://api.openai.com/v1",client_type:"openai",display_name:"OpenAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"xai",name:"xAI",base_url:"https://api.x.ai/v1",client_type:"openai",display_name:"xAI (Grok)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"anthropic",name:"Anthropic",base_url:"https://api.anthropic.com/v1",client_type:"openai",display_name:"Anthropic (Claude)"},{id:"gemini",name:"Gemini",base_url:"https://generativelanguage.googleapis.com/v1beta",client_type:"gemini",display_name:"Google Gemini",modelFetcher:{endpoint:"/models",parser:"gemini"}},{id:"cohere",name:"Cohere",base_url:"https://api.cohere.ai/v1",client_type:"openai",display_name:"Cohere"},{id:"groq",name:"Groq",base_url:"https://api.groq.com/openai/v1",client_type:"openai",display_name:"Groq",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"together",name:"Together AI",base_url:"https://api.together.xyz/v1",client_type:"openai",display_name:"Together AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"fireworks",name:"Fireworks",base_url:"https://api.fireworks.ai/inference/v1",client_type:"openai",display_name:"Fireworks AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"mistral",name:"Mistral",base_url:"https://api.mistral.ai/v1",client_type:"openai",display_name:"Mistral AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"perplexity",name:"Perplexity",base_url:"https://api.perplexity.ai",client_type:"openai",display_name:"Perplexity AI"},{id:"custom",name:"",base_url:"",client_type:"openai",display_name:"自定义"}];function op(n){return n?n.replace(/\/+$/,"").toLowerCase():""}function yw(n){if(!n)return null;const r=op(n);return rr.find(c=>c.id!=="custom"&&op(c.base_url)===r)||null}function Nw(){const[n,r]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[g,_]=u.useState(!1),[v,k]=u.useState(!1),[z,T]=u.useState(!1),[L,K]=u.useState(!1),[U,R]=u.useState(null),[ee,V]=u.useState(null),[E,B]=u.useState("custom"),[X,w]=u.useState(!1),[D,te]=u.useState(!1),[xe,be]=u.useState(null),[ye,ve]=u.useState(!1),[pe,Ne]=u.useState(""),[y,q]=u.useState(new Set),[H,ne]=u.useState(!1),[S,me]=u.useState(1),[he,Q]=u.useState(20),[oe,ge]=u.useState(""),[le,O]=u.useState({}),[F,A]=u.useState(new Set),[W,_e]=u.useState(new Map),{toast:Me}=Bs(),ss=It(),{state:Ie,goToStep:Rs,registerTour:qs}=Ju(),ie=u.useRef(null),we=u.useRef(!0);u.useEffect(()=>{qs(ll,Hg)},[qs]),u.useEffect(()=>{if(Ie.activeTourId===ll&&Ie.isRunning){const P=qg[Ie.stepIndex];P&&!window.location.pathname.endsWith(P.replace("/config/",""))&&ss({to:P})}},[Ie.stepIndex,Ie.activeTourId,Ie.isRunning,ss]);const Ke=u.useRef(Ie.stepIndex);u.useEffect(()=>{if(Ie.activeTourId===ll&&Ie.isRunning){const P=Ke.current,je=Ie.stepIndex;P>=3&&P<=9&&je<3&&K(!1),P>=10&&je>=3&&je<=9&&(O({}),B("custom"),R({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10}),V(null),ve(!1),K(!0)),Ke.current=je}},[Ie.stepIndex,Ie.activeTourId,Ie.isRunning]),u.useEffect(()=>{if(Ie.activeTourId!==ll||!Ie.isRunning)return;const P=je=>{const Ae=je.target,tt=Ie.stepIndex;tt===2&&Ae.closest('[data-tour="add-provider-button"]')?setTimeout(()=>Rs(3),300):tt===9&&Ae.closest('[data-tour="provider-cancel-button"]')&&setTimeout(()=>Rs(10),300)};return document.addEventListener("click",P,!0),()=>document.removeEventListener("click",P,!0)},[Ie,Rs]),u.useEffect(()=>{Le()},[]);const Le=async()=>{try{d(!0);const P=await ei();r(P.api_providers||[]),_(!1),we.current=!1}catch(P){console.error("加载配置失败:",P)}finally{d(!1)}},st=async()=>{try{k(!0),co().catch(()=>{}),T(!0)}catch(P){console.error("重启失败:",P),T(!1),Me({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),k(!1)}},Jt=async()=>{try{x(!0),ie.current&&clearTimeout(ie.current);const P=await ei();P.api_providers=n,await io(P),_(!1),Me({title:"保存成功",description:"正在重启麦麦..."}),await st()}catch(P){console.error("保存配置失败:",P),Me({title:"保存失败",description:P.message,variant:"destructive"}),x(!1)}},bt=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},Je=()=>{T(!1),k(!1),Me({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},Ue=u.useCallback(async P=>{if(!we.current)try{j(!0),await qu("api_providers",P),_(!1)}catch(je){console.error("自动保存失败:",je),_(!0)}finally{j(!1)}},[]);u.useEffect(()=>{if(!we.current)return _(!0),ie.current&&clearTimeout(ie.current),ie.current=setTimeout(()=>{Ue(n)},2e3),()=>{ie.current&&clearTimeout(ie.current)}},[n,Ue]);const jt=async()=>{try{x(!0),ie.current&&clearTimeout(ie.current);const P=await ei();P.api_providers=n,await io(P),_(!1),Me({title:"保存成功",description:"模型提供商配置已保存"})}catch(P){console.error("保存配置失败:",P),Me({title:"保存失败",description:P.message,variant:"destructive"})}finally{x(!1)}},nt=(P,je)=>{if(O({}),P){const Ae=rr.find(tt=>tt.base_url===P.base_url&&tt.client_type===P.client_type);B(Ae?.id||"custom"),R(P)}else B("custom"),R({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10});V(je),ve(!1),K(!0)},Ct=P=>{B(P),w(!1);const je=rr.find(Ae=>Ae.id===P);je&&je.id!=="custom"?R(Ae=>({...Ae,name:je.name,base_url:je.base_url,client_type:je.client_type})):je?.id==="custom"&&R(Ae=>({...Ae,name:"",base_url:"",client_type:"openai"}))},kt=u.useMemo(()=>E!=="custom",[E]),rl=async()=>{if(U?.api_key)try{await navigator.clipboard.writeText(U.api_key),Me({title:"复制成功",description:"API Key 已复制到剪贴板"})}catch{Me({title:"复制失败",description:"无法访问剪贴板",variant:"destructive"})}},cl=()=>{if(!U)return;const P={};if(U.name?.trim()||(P.name="请输入提供商名称"),U.base_url?.trim()||(P.base_url="请输入基础 URL"),U.api_key?.trim()||(P.api_key="请输入 API Key"),Object.keys(P).length>0){O(P);return}O({});const je={...U,max_retry:U.max_retry??2,timeout:U.timeout??30,retry_interval:U.retry_interval??10};if(ee!==null){const Ae=[...n];Ae[ee]=je,r(Ae)}else r([...n,je]);K(!1),R(null),V(null)},ol=P=>{if(!P&&U){const je={...U,max_retry:U.max_retry??2,timeout:U.timeout??30,retry_interval:U.retry_interval??10};R(je)}K(P)},Se=P=>{be(P),te(!0)},Re=()=>{if(xe!==null){const P=n.filter((je,Ae)=>Ae!==xe);r(P),Me({title:"删除成功",description:"提供商已从列表中移除"})}te(!1),be(null)},it=P=>{const je=new Set(y);je.has(P)?je.delete(P):je.add(P),q(je)},ot=()=>{if(y.size===dt.length)q(new Set);else{const P=dt.map((je,Ae)=>n.findIndex(tt=>tt===dt[Ae]));q(new Set(P))}},di=()=>{if(y.size===0){Me({title:"提示",description:"请先选择要删除的提供商",variant:"default"});return}ne(!0)},on=()=>{const P=n.filter((je,Ae)=>!y.has(Ae));r(P),q(new Set),ne(!1),Me({title:"批量删除成功",description:`已删除 ${y.size} 个提供商`})},dt=n.filter(P=>{if(!pe)return!0;const je=pe.toLowerCase();return P.name.toLowerCase().includes(je)||P.base_url.toLowerCase().includes(je)||P.client_type.toLowerCase().includes(je)}),Pt=Math.ceil(dt.length/he),Wt=dt.slice((S-1)*he,S*he),La=()=>{const P=parseInt(oe);P>=1&&P<=Pt&&(me(P),ge(""))},Ut=async P=>{A(je=>new Set(je).add(P));try{const je=await $0(P);_e(Ae=>new Map(Ae).set(P,je)),je.network_ok?je.api_key_valid===!0?Me({title:"连接正常",description:`${P} 网络连接正常,API Key 有效 (${je.latency_ms}ms)`}):je.api_key_valid===!1?Me({title:"连接正常但 Key 无效",description:`${P} 网络连接正常,但 API Key 无效或已过期`,variant:"destructive"}):Me({title:"网络连接正常",description:`${P} 可以访问 (${je.latency_ms}ms)`}):Me({title:"连接失败",description:je.error||"无法连接到提供商",variant:"destructive"})}catch(je){Me({title:"测试失败",description:je.message,variant:"destructive"})}finally{A(je=>{const Ae=new Set(je);return Ae.delete(P),Ae})}},Ua=async()=>{for(const P of n)await Ut(P.name)},ba=P=>{const je=F.has(P),Ae=W.get(P);return je?e.jsxs(Xe,{variant:"secondary",className:"gap-1",children:[e.jsx(vt,{className:"h-3 w-3 animate-spin"}),"测试中"]}):Ae?Ae.network_ok?Ae.api_key_valid===!0?e.jsxs(Xe,{className:"gap-1 bg-green-600 hover:bg-green-700",children:[e.jsx(xa,{className:"h-3 w-3"}),"正常"]}):Ae.api_key_valid===!1?e.jsxs(Xe,{variant:"destructive",className:"gap-1",children:[e.jsx(Aa,{className:"h-3 w-3"}),"Key无效"]}):e.jsxs(Xe,{className:"gap-1 bg-blue-600 hover:bg-blue-700",children:[e.jsx(xa,{className:"h-3 w-3"}),"可访问"]}):e.jsxs(Xe,{variant:"destructive",className:"gap-1",children:[e.jsx(pg,{className:"h-3 w-3"}),"离线"]}):null};return c?e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})}):e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"AI模型厂商配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理 AI 模型厂商的 API 配置"})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[y.size>0&&e.jsxs(N,{onClick:di,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(ns,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",y.size,")"]}),e.jsxs(N,{onClick:Ua,size:"sm",variant:"outline",className:"w-full sm:w-auto",disabled:n.length===0||F.size>0,children:[e.jsx(ln,{className:"mr-2 h-4 w-4"}),F.size>0?`测试中 (${F.size})`:"测试全部"]}),e.jsxs(N,{onClick:()=>nt(null,null),size:"sm",className:"w-full sm:w-auto","data-tour":"add-provider-button",children:[e.jsx(gt,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加提供商"]}),e.jsxs(N,{onClick:jt,disabled:h||f||!g||v,size:"sm",variant:"outline",className:"w-full sm:w-auto sm:min-w-[120px]",children:[e.jsx(br,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),h?"保存中...":f?"自动保存中...":g?"保存配置":"已保存"]}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(N,{disabled:h||f||v,size:"sm",className:"w-full sm:w-auto sm:min-w-[120px]",children:[e.jsx(Nr,{className:"mr-2 h-4 w-4"}),v?"重启中...":g?"保存并重启":"重启麦麦"]})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认重启麦麦?"}),e.jsx(ms,{className:"space-y-3",asChild:!0,children:e.jsxs("div",{children:[e.jsx("p",{children:g?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),e.jsxs(ua,{className:"border-yellow-500/50 bg-yellow-500/10",children:[e.jsx(Xt,{className:"h-4 w-4 text-yellow-600"}),e.jsxs(ma,{className:"text-yellow-900 dark:text-yellow-100",children:[e.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",e.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",e.jsxs(Os,{children:[e.jsx(ni,{asChild:!0,children:e.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[e.jsx(ro,{className:"h-3 w-3"}),"如何结束程序?"]})}),e.jsxs(Es,{className:"max-w-2xl",children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"如何结束使用重启功能后的麦麦程序"}),e.jsx($s,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),e.jsxs(Kt,{defaultValue:"windows",className:"w-full",children:[e.jsxs(Rt,{className:"grid w-full grid-cols-3",children:[e.jsx(He,{value:"windows",children:"Windows"}),e.jsx(He,{value:"macos",children:"macOS"}),e.jsx(He,{value:"linux",children:"Linux"})]}),e.jsxs(We,{value:"windows",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),e.jsxs("li",{children:["在“进程”或“详细信息”标签页中找到 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),e.jsx("li",{children:"右键点击并选择“结束任务”"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),e.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),e.jsxs(We,{value:"macos",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"})," 打开 Spotlight,搜索“活动监视器”"]}),e.jsxs("li",{children:["在进程列表中找到 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),e.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:"ps aux | grep python | grep -v grep"}),e.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),e.jsx("p",{children:"kill -9 "}),e.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"pkill -9 python"})]})]})]}),e.jsxs(We,{value:"linux",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:"ps aux | grep python | grep -v grep"}),e.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),e.jsx("p",{children:"kill -9 "}),e.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),e.jsx("p",{children:'pkill -9 -f "bot.py"'}),e.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"pkill -9 python"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["在终端输入 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),e.jsx(Is,{children:e.jsx(Zu,{asChild:!0,children:e.jsx(N,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:g?Jt:st,children:g?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsxs(ua,{children:[e.jsx(Xt,{className:"h-4 w-4"}),e.jsxs(ma,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),e.jsxs(es,{className:"h-[calc(100vh-260px)]",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2 mb-4",children:[e.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[e.jsx(St,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索提供商名称、URL 或类型...",value:pe,onChange:P=>Ne(P.target.value),className:"pl-9"})]}),pe&&e.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",dt.length," 个结果"]})]}),e.jsx("div",{className:"md:hidden space-y-3",children:dt.length===0?e.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:pe?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'}):Wt.map((P,je)=>{const Ae=n.findIndex(tt=>tt===P);return e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("h3",{className:"font-semibold text-base truncate",children:P.name}),ba(P.name)]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1 break-all",children:P.base_url})]}),e.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>Ut(P.name),disabled:F.has(P.name),title:"测试连接",children:F.has(P.name)?e.jsx(vt,{className:"h-4 w-4 animate-spin"}):e.jsx(ln,{className:"h-4 w-4"})}),e.jsx(N,{variant:"default",size:"sm",onClick:()=>nt(P,Ae),children:e.jsx(nn,{className:"h-4 w-4",strokeWidth:2,fill:"none"})}),e.jsx(N,{size:"sm",onClick:()=>Se(Ae),className:"bg-red-600 hover:bg-red-700 text-white",children:e.jsx(ns,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"客户端类型"}),e.jsx("p",{className:"font-medium",children:P.client_type})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"最大重试"}),e.jsx("p",{className:"font-medium",children:P.max_retry})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"超时(秒)"}),e.jsx("p",{className:"font-medium",children:P.timeout})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"重试间隔(秒)"}),e.jsx("p",{className:"font-medium",children:P.retry_interval})]})]})]},je)})}),e.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(ii,{children:[e.jsx(ri,{children:e.jsxs(pt,{children:[e.jsx(ls,{className:"w-12",children:e.jsx(yt,{checked:y.size===dt.length&&dt.length>0,onCheckedChange:ot})}),e.jsx(ls,{children:"状态"}),e.jsx(ls,{children:"名称"}),e.jsx(ls,{children:"基础URL"}),e.jsx(ls,{children:"客户端类型"}),e.jsx(ls,{className:"text-right",children:"最大重试"}),e.jsx(ls,{className:"text-right",children:"超时(秒)"}),e.jsx(ls,{className:"text-right",children:"重试间隔(秒)"}),e.jsx(ls,{className:"text-right",children:"操作"})]})}),e.jsx(ci,{children:Wt.length===0?e.jsx(pt,{children:e.jsx(Ye,{colSpan:9,className:"text-center text-muted-foreground py-8",children:pe?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'})}):Wt.map((P,je)=>{const Ae=n.findIndex(tt=>tt===P);return e.jsxs(pt,{children:[e.jsx(Ye,{children:e.jsx(yt,{checked:y.has(Ae),onCheckedChange:()=>it(Ae)})}),e.jsx(Ye,{children:ba(P.name)||e.jsx(Xe,{variant:"outline",className:"text-muted-foreground",children:"未测试"})}),e.jsx(Ye,{className:"font-medium",children:P.name}),e.jsx(Ye,{className:"max-w-xs truncate",title:P.base_url,children:P.base_url}),e.jsx(Ye,{children:P.client_type}),e.jsx(Ye,{className:"text-right",children:P.max_retry}),e.jsx(Ye,{className:"text-right",children:P.timeout}),e.jsx(Ye,{className:"text-right",children:P.retry_interval}),e.jsx(Ye,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>Ut(P.name),disabled:F.has(P.name),title:"测试连接",children:F.has(P.name)?e.jsx(vt,{className:"h-4 w-4 animate-spin"}):e.jsx(ln,{className:"h-4 w-4"})}),e.jsxs(N,{variant:"default",size:"sm",onClick:()=>nt(P,Ae),children:[e.jsx(nn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(N,{size:"sm",onClick:()=>Se(Ae),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(ns,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},je)})})]})})}),dt.length>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"page-size-provider",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(Qe,{value:he.toString(),onValueChange:P=>{Q(parseInt(P)),me(1),q(new Set)},children:[e.jsx(Ge,{id:"page-size-provider",className:"w-20",children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"10",children:"10"}),e.jsx(ue,{value:"20",children:"20"}),e.jsx(ue,{value:"50",children:"50"}),e.jsx(ue,{value:"100",children:"100"})]})]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(S-1)*he+1," 到"," ",Math.min(S*he,dt.length)," 条,共 ",dt.length," 条"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>me(1),disabled:S===1,className:"hidden sm:flex",children:e.jsx(wr,{className:"h-4 w-4"})}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>me(P=>Math.max(1,P-1)),disabled:S===1,children:[e.jsx(cn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:oe,onChange:P=>ge(P.target.value),onKeyDown:P=>P.key==="Enter"&&La(),placeholder:S.toString(),className:"w-16 h-8 text-center",min:1,max:Pt}),e.jsx(N,{variant:"outline",size:"sm",onClick:La,disabled:!oe,className:"h-8",children:"跳转"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>me(P=>P+1),disabled:S>=Pt,children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(il,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>me(Pt),disabled:S>=Pt,className:"hidden sm:flex",children:e.jsx(_r,{className:"h-4 w-4"})})]})]})]}),e.jsx(Os,{open:L,onOpenChange:ol,children:e.jsxs(Es,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"provider-dialog",preventOutsideClose:Ie.isRunning,children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:ee!==null?"编辑提供商":"添加提供商"}),e.jsx($s,{children:"配置 API 提供商的连接信息和参数"})]}),e.jsxs("form",{onSubmit:P=>{P.preventDefault(),cl()},autoComplete:"off",children:[e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":"provider-template-select",children:[e.jsx(b,{htmlFor:"template",children:"提供商模板"}),e.jsxs(Da,{open:X,onOpenChange:w,children:[e.jsx(Oa,{asChild:!0,children:e.jsxs(N,{variant:"outline",role:"combobox","aria-expanded":X,className:"w-full justify-between",children:[E?rr.find(P=>P.id===E)?.display_name:"选择提供商模板...",e.jsx($u,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(Na,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:e.jsxs(oo,{children:[e.jsx(uo,{placeholder:"搜索提供商模板..."}),e.jsx(es,{className:"h-[300px]",children:e.jsxs(mo,{className:"max-h-none overflow-visible",children:[e.jsx(ho,{children:"未找到匹配的模板"}),e.jsx(vr,{children:rr.map(P=>e.jsxs(yr,{value:P.display_name,onSelect:()=>Ct(P.id),children:[e.jsx(ha,{className:`mr-2 h-4 w-4 ${E===P.id?"opacity-100":"opacity-0"}`}),P.display_name]},P.id))})]})})]})})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"选择预设模板可自动填充 URL 和客户端类型,支持搜索"})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-name-input",children:[e.jsx(b,{htmlFor:"name",className:le.name?"text-destructive":"",children:"名称 *"}),e.jsx(ce,{id:"name",value:U?.name||"",onChange:P=>{R(je=>je?{...je,name:P.target.value}:null),le.name&&O(je=>({...je,name:void 0}))},placeholder:"例如: DeepSeek, SiliconFlow",className:le.name?"border-destructive focus-visible:ring-destructive":""}),le.name&&e.jsx("p",{className:"text-xs text-destructive",children:le.name})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-url-input",children:[e.jsx(b,{htmlFor:"base_url",className:le.base_url?"text-destructive":"",children:"基础 URL *"}),e.jsx(ce,{id:"base_url",value:U?.base_url||"",onChange:P=>{R(je=>je?{...je,base_url:P.target.value}:null),le.base_url&&O(je=>({...je,base_url:void 0}))},placeholder:"https://api.example.com/v1",disabled:kt,className:`${kt?"bg-muted cursor-not-allowed":""} ${le.base_url?"border-destructive focus-visible:ring-destructive":""}`}),le.base_url&&e.jsx("p",{className:"text-xs text-destructive",children:le.base_url}),kt&&!le.base_url&&e.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时 URL 不可编辑,切换到"自定义"以手动配置'})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-apikey-input",children:[e.jsx(b,{htmlFor:"api_key",className:le.api_key?"text-destructive":"",children:"API Key *"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{id:"api_key",type:ye?"text":"password",value:U?.api_key||"",onChange:P=>{R(je=>je?{...je,api_key:P.target.value}:null),le.api_key&&O(je=>({...je,api_key:void 0}))},placeholder:"sk-...",className:`flex-1 ${le.api_key?"border-destructive focus-visible:ring-destructive":""}`}),e.jsx(N,{type:"button",variant:"outline",size:"icon",onClick:()=>ve(!ye),title:ye?"隐藏密钥":"显示密钥",children:ye?e.jsx(mr,{className:"h-4 w-4"}):e.jsx(Zt,{className:"h-4 w-4"})}),e.jsx(N,{type:"button",variant:"outline",size:"icon",onClick:rl,title:"复制密钥",children:e.jsx(so,{className:"h-4 w-4"})})]}),le.api_key&&e.jsx("p",{className:"text-xs text-destructive",children:le.api_key})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"client_type",children:"客户端类型"}),e.jsxs(Qe,{value:U?.client_type||"openai",onValueChange:P=>R(je=>je?{...je,client_type:P}:null),disabled:kt,children:[e.jsx(Ge,{id:"client_type",className:kt?"bg-muted cursor-not-allowed":"",children:e.jsx($e,{placeholder:"选择客户端类型"})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"openai",children:"OpenAI"}),e.jsx(ue,{value:"gemini",children:"Gemini"})]})]}),kt&&e.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时客户端类型不可编辑,切换到"自定义"以手动配置'})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_retry",children:"最大重试"}),e.jsx(ce,{id:"max_retry",type:"number",min:"0",value:U?.max_retry??"",onChange:P=>{const je=P.target.value===""?null:parseInt(P.target.value);R(Ae=>Ae?{...Ae,max_retry:je}:null)},placeholder:"默认: 2"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"timeout",children:"超时(秒)"}),e.jsx(ce,{id:"timeout",type:"number",min:"1",value:U?.timeout??"",onChange:P=>{const je=P.target.value===""?null:parseInt(P.target.value);R(Ae=>Ae?{...Ae,timeout:je}:null)},placeholder:"默认: 30"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"retry_interval",children:"重试间隔(秒)"}),e.jsx(ce,{id:"retry_interval",type:"number",min:"1",value:U?.retry_interval??"",onChange:P=>{const je=P.target.value===""?null:parseInt(P.target.value);R(Ae=>Ae?{...Ae,retry_interval:je}:null)},placeholder:"默认: 10"})]})]})]}),e.jsxs(Is,{children:[e.jsx(N,{type:"button",variant:"outline",onClick:()=>K(!1),"data-tour":"provider-cancel-button",children:"取消"}),e.jsx(N,{type:"submit","data-tour":"provider-save-button",children:"保存"})]})]})]})}),e.jsx(ps,{open:D,onOpenChange:te,children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:['确定要删除提供商 "',xe!==null?n[xe]?.name:"",'" 吗? 此操作无法撤销。']})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:Re,children:"删除"})]})]})}),e.jsx(ps,{open:H,onOpenChange:ne,children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认批量删除"}),e.jsxs(ms,{children:["确定要删除选中的 ",y.size," 个提供商吗? 此操作无法撤销。"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:on,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),z&&e.jsx(Iu,{onRestartComplete:bt,onRestartFailed:Je})]})}function bw({value:n,label:r,onRemove:c}){const{attributes:d,listeners:h,setNodeRef:x,transform:f,transition:j,isDragging:g}=gb({id:n}),_={transform:jb.Transform.toString(f),transition:j,opacity:g?.5:1};return e.jsx("div",{ref:x,style:_,className:$("inline-flex items-center gap-1",g&&"shadow-lg"),children:e.jsxs(Xe,{variant:"secondary",className:"cursor-move hover:bg-secondary/80 flex items-center gap-1",children:[e.jsx("div",{...d,...h,className:"cursor-grab active:cursor-grabbing flex items-center",children:e.jsx(DN,{className:"h-3 w-3 text-muted-foreground"})}),e.jsx("span",{children:r}),e.jsx(li,{className:"ml-1 h-3 w-3 cursor-pointer hover:text-destructive",strokeWidth:2,fill:"none",onClick:v=>{v.stopPropagation(),c(n)}})]})})}function ww({options:n,selected:r,onChange:c,placeholder:d="选择选项...",emptyText:h="未找到选项",className:x}){const[f,j]=u.useState(!1),g=cb(Jf(pb,{activationConstraint:{distance:8}}),Jf(fb,{coordinateGetter:xb})),_=z=>{r.includes(z)?c(r.filter(T=>T!==z)):c([...r,z])},v=z=>{c(r.filter(T=>T!==z))},k=z=>{const{active:T,over:L}=z;if(L&&T.id!==L.id){const K=r.indexOf(T.id),U=r.indexOf(L.id);c(hb(r,K,U))}};return e.jsxs(Da,{open:f,onOpenChange:j,children:[e.jsx(Oa,{asChild:!0,children:e.jsxs(N,{variant:"outline",role:"combobox","aria-expanded":f,className:$("w-full justify-between min-h-10 h-auto",x),children:[e.jsx(ob,{sensors:g,collisionDetection:db,onDragEnd:k,children:e.jsx(ub,{items:r,strategy:mb,children:e.jsx("div",{className:"flex gap-1 flex-wrap flex-1",children:r.length===0?e.jsx("span",{className:"text-muted-foreground",children:d}):r.map(z=>{const T=n.find(L=>L.value===z);return e.jsx(bw,{value:z,label:T?.label||z,onRemove:v},z)})})})}),e.jsx($u,{className:"ml-2 h-4 w-4 shrink-0 opacity-50",strokeWidth:2,fill:"none"})]})}),e.jsx(Na,{className:"w-full p-0",align:"start",children:e.jsxs(oo,{children:[e.jsx(uo,{placeholder:"搜索...",className:"h-9"}),e.jsxs(mo,{children:[e.jsx(ho,{children:h}),e.jsx(vr,{children:n.map(z=>{const T=r.includes(z.value);return e.jsxs(yr,{value:z.value,onSelect:()=>_(z.value),children:[e.jsx("div",{className:$("mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary",T?"bg-primary text-primary-foreground":"opacity-50 [&_svg]:invisible"),children:e.jsx(ha,{className:"h-3 w-3",strokeWidth:2,fill:"none"})}),e.jsx("span",{children:z.label})]},z.value)})})]})]})})]})}const dp=new Map,_w=300*1e3;function Sw(){const[n,r]=u.useState([]),[c,d]=u.useState([]),[h,x]=u.useState([]),[f,j]=u.useState([]),[g,_]=u.useState(null),[v,k]=u.useState(!0),[z,T]=u.useState(!1),[L,K]=u.useState(!1),[U,R]=u.useState(!1),[ee,V]=u.useState(!1),[E,B]=u.useState(!1),[X,w]=u.useState(!1),[D,te]=u.useState(null),[xe,be]=u.useState(null),[ye,ve]=u.useState(!1),[pe,Ne]=u.useState(null),[y,q]=u.useState(""),[H,ne]=u.useState(new Set),[S,me]=u.useState(!1),[he,Q]=u.useState(1),[oe,ge]=u.useState(20),[le,O]=u.useState(""),[F,A]=u.useState([]),[W,_e]=u.useState(!1),[Me,ss]=u.useState(null),[Ie,Rs]=u.useState(!1),[qs,ie]=u.useState(null),[we,Ke]=u.useState({}),{toast:Le}=Bs(),st=It(),{registerTour:Jt,startTour:bt,state:Je,goToStep:Ue}=Ju(),jt=u.useRef(null),nt=u.useRef(null),Ct=u.useRef(!0);u.useEffect(()=>{Jt(ll,Hg)},[Jt]),u.useEffect(()=>{if(Je.activeTourId===ll&&Je.isRunning){const Y=qg[Je.stepIndex];Y&&!window.location.pathname.endsWith(Y.replace("/config/",""))&&st({to:Y})}},[Je.stepIndex,Je.activeTourId,Je.isRunning,st]);const kt=u.useRef(Je.stepIndex);u.useEffect(()=>{if(Je.activeTourId===ll&&Je.isRunning){const Y=kt.current,fe=Je.stepIndex;Y>=12&&Y<=17&&fe<12&&w(!1),kt.current=fe}},[Je.stepIndex,Je.activeTourId,Je.isRunning]),u.useEffect(()=>{if(Je.activeTourId!==ll||!Je.isRunning)return;const Y=fe=>{const De=fe.target,Fe=Je.stepIndex;Fe===2&&De.closest('[data-tour="add-provider-button"]')?setTimeout(()=>Ue(3),300):Fe===9&&De.closest('[data-tour="provider-cancel-button"]')?setTimeout(()=>Ue(10),300):Fe===11&&De.closest('[data-tour="add-model-button"]')?setTimeout(()=>Ue(12),300):Fe===17&&De.closest('[data-tour="model-cancel-button"]')?setTimeout(()=>Ue(18),300):Fe===18&&De.closest('[data-tour="tasks-tab-trigger"]')&&setTimeout(()=>Ue(19),300)};return document.addEventListener("click",Y,!0),()=>document.removeEventListener("click",Y,!0)},[Je,Ue]);const rl=()=>{bt(ll)};u.useEffect(()=>{cl()},[]);const cl=async()=>{try{k(!0);const Y=await ei(),fe=Y.models||[];r(fe),j(fe.map(Fe=>Fe.name));const De=Y.api_providers||[];d(De.map(Fe=>Fe.name)),x(De),_(Y.model_task_config||null),R(!1),Ct.current=!1}catch(Y){console.error("加载配置失败:",Y)}finally{k(!1)}},ol=u.useCallback(Y=>h.find(fe=>fe.name===Y),[h]),Se=u.useCallback(async(Y,fe=!1)=>{const De=ol(Y);if(!De?.base_url){A([]),ie(null),ss('提供商配置不完整,请先在"模型提供商配置"中配置');return}if(!De.api_key){A([]),ie(null),ss('该提供商未配置 API Key,请先在"模型提供商配置"中填写');return}const Fe=yw(De.base_url);if(ie(Fe),!Fe?.modelFetcher){A([]),ss(null);return}const Ys=`${Y}:${De.base_url}`,wa=dp.get(Ys);if(!fe&&wa&&Date.now()-wa.timestamp<_w){A(wa.models),ss(null);return}_e(!0),ss(null);try{const Ba=await Q0(Y,Fe.modelFetcher.parser,Fe.modelFetcher.endpoint);A(Ba),dp.set(Ys,{models:Ba,timestamp:Date.now()})}catch(Ba){console.error("获取模型列表失败:",Ba);const _a=Ba.message||"获取模型列表失败";_a.includes("无效")||_a.includes("过期")||_a.includes("API Key")?ss('API Key 无效或已过期,请检查"模型提供商配置"中的密钥'):_a.includes("权限")?ss("没有权限获取模型列表,请检查 API Key 权限"):_a.includes("timeout")||_a.includes("超时")?ss("请求超时,请检查网络连接后重试"):_a.includes("不支持")?ss("该提供商不支持自动获取模型列表,请手动输入"):ss(_a),A([])}finally{_e(!1)}},[ol]);u.useEffect(()=>{X&&D?.api_provider&&Se(D.api_provider)},[X,D?.api_provider,Se]);const Re=async()=>{try{V(!0),co().catch(()=>{}),B(!0)}catch(Y){console.error("重启失败:",Y),B(!1),Le({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),V(!1)}},it=async()=>{try{T(!0),jt.current&&clearTimeout(jt.current),nt.current&&clearTimeout(nt.current);const Y=await ei();Y.models=n,Y.model_task_config=g,await io(Y),R(!1),Le({title:"保存成功",description:"正在重启麦麦..."}),await Re()}catch(Y){console.error("保存配置失败:",Y),Le({title:"保存失败",description:Y.message,variant:"destructive"}),T(!1)}},ot=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},di=()=>{B(!1),V(!1),Le({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},on=u.useCallback(async Y=>{if(!Ct.current)try{K(!0),await qu("models",Y),R(!1)}catch(fe){console.error("自动保存模型列表失败:",fe),R(!0)}finally{K(!1)}},[]),dt=u.useCallback(async Y=>{if(!Ct.current)try{K(!0),await qu("model_task_config",Y),R(!1)}catch(fe){console.error("自动保存任务配置失败:",fe),R(!0)}finally{K(!1)}},[]);u.useEffect(()=>{if(!Ct.current)return R(!0),jt.current&&clearTimeout(jt.current),jt.current=setTimeout(()=>{on(n)},2e3),()=>{jt.current&&clearTimeout(jt.current)}},[n,on]),u.useEffect(()=>{if(!(Ct.current||!g))return R(!0),nt.current&&clearTimeout(nt.current),nt.current=setTimeout(()=>{dt(g)},2e3),()=>{nt.current&&clearTimeout(nt.current)}},[g,dt]);const Pt=async()=>{try{T(!0),jt.current&&clearTimeout(jt.current),nt.current&&clearTimeout(nt.current);const Y=await ei();Y.models=n,Y.model_task_config=g,await io(Y),R(!1),Le({title:"保存成功",description:"模型配置已保存"}),await cl()}catch(Y){console.error("保存配置失败:",Y),Le({title:"保存失败",description:Y.message,variant:"destructive"})}finally{T(!1)}},Wt=(Y,fe)=>{Ke({}),te(Y||{model_identifier:"",name:"",api_provider:c[0]||"",price_in:0,price_out:0,force_stream_mode:!1,extra_params:{}}),be(fe),w(!0)},La=()=>{if(!D)return;const Y={};if(D.name?.trim()||(Y.name="请输入模型名称"),D.api_provider?.trim()||(Y.api_provider="请选择 API 提供商"),D.model_identifier?.trim()||(Y.model_identifier="请输入模型标识符"),Object.keys(Y).length>0){Ke(Y);return}Ke({});const fe={...D,price_in:D.price_in??0,price_out:D.price_out??0};let De;xe!==null?(De=[...n],De[xe]=fe):De=[...n,fe],r(De),j(De.map(Fe=>Fe.name)),w(!1),te(null),be(null)},Ut=Y=>{if(!Y&&D){const fe={...D,price_in:D.price_in??0,price_out:D.price_out??0};te(fe)}w(Y)},Ua=Y=>{Ne(Y),ve(!0)},ba=()=>{if(pe!==null){const Y=n.filter((fe,De)=>De!==pe);r(Y),j(Y.map(fe=>fe.name)),Le({title:"删除成功",description:"模型已从列表中移除"})}ve(!1),Ne(null)},P=Y=>{const fe=new Set(H);fe.has(Y)?fe.delete(Y):fe.add(Y),ne(fe)},je=()=>{if(H.size===Tt.length)ne(new Set);else{const Y=Tt.map((fe,De)=>n.findIndex(Fe=>Fe===Tt[De]));ne(new Set(Y))}},Ae=()=>{if(H.size===0){Le({title:"提示",description:"请先选择要删除的模型",variant:"default"});return}me(!0)},tt=()=>{const Y=n.filter((fe,De)=>!H.has(De));r(Y),j(Y.map(fe=>fe.name)),ne(new Set),me(!1),Le({title:"批量删除成功",description:`已删除 ${H.size} 个模型`})},Bt=(Y,fe,De)=>{g&&_({...g,[Y]:{...g[Y],[fe]:De}})},Tt=n.filter(Y=>{if(!y)return!0;const fe=y.toLowerCase();return Y.name.toLowerCase().includes(fe)||Y.model_identifier.toLowerCase().includes(fe)||Y.api_provider.toLowerCase().includes(fe)}),dl=Math.ceil(Tt.length/oe),Hl=Tt.slice((he-1)*oe,he*oe),dn=()=>{const Y=parseInt(le);Y>=1&&Y<=dl&&(Q(Y),O(""))},un=Y=>g?[g.utils?.model_list||[],g.utils_small?.model_list||[],g.tool_use?.model_list||[],g.replyer?.model_list||[],g.planner?.model_list||[],g.vlm?.model_list||[],g.voice?.model_list||[],g.embedding?.model_list||[],g.lpmm_entity_extract?.model_list||[],g.lpmm_rdf_build?.model_list||[],g.lpmm_qa?.model_list||[]].some(De=>De.includes(Y)):!1;return v?e.jsx(es,{className:"h-full",children:e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):e.jsx(es,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"模型管理与分配"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"添加模型并为模型分配功能"})]}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[e.jsxs(N,{onClick:Pt,disabled:z||L||!U||ee,size:"sm",variant:"outline",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[e.jsx(br,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),z?"保存中...":L?"自动保存中...":U?"保存配置":"已保存"]}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(N,{disabled:z||L||ee,size:"sm",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[e.jsx(Nr,{className:"mr-2 h-4 w-4"}),ee?"重启中...":U?"保存并重启":"重启麦麦"]})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认重启麦麦?"}),e.jsx(ms,{className:"space-y-3",asChild:!0,children:e.jsxs("div",{children:[e.jsx("p",{children:U?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),e.jsxs(ua,{className:"border-yellow-500/50 bg-yellow-500/10",children:[e.jsx(Xt,{className:"h-4 w-4 text-yellow-600"}),e.jsxs(ma,{className:"text-yellow-900 dark:text-yellow-100",children:[e.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",e.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",e.jsxs(Os,{children:[e.jsx(ni,{asChild:!0,children:e.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[e.jsx(ro,{className:"h-3 w-3"}),"如何结束程序?"]})}),e.jsxs(Es,{className:"max-w-2xl",children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"如何结束使用重启功能后的麦麦程序"}),e.jsx($s,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),e.jsxs(Kt,{defaultValue:"windows",className:"w-full",children:[e.jsxs(Rt,{className:"grid w-full grid-cols-3",children:[e.jsx(He,{value:"windows",children:"Windows"}),e.jsx(He,{value:"macos",children:"macOS"}),e.jsx(He,{value:"linux",children:"Linux"})]}),e.jsxs(We,{value:"windows",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),e.jsxs("li",{children:['在"进程"或"详细信息"标签页中找到 ',e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),e.jsx("li",{children:'右键点击并选择"结束任务"'})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),e.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),e.jsxs(We,{value:"macos",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"}),' 打开 Spotlight,搜索"活动监视器"']}),e.jsxs("li",{children:["在进程列表中找到 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),e.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:"ps aux | grep python | grep -v grep"}),e.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),e.jsx("p",{children:"kill -9 "}),e.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"pkill -9 python"})]})]})]}),e.jsxs(We,{value:"linux",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:"ps aux | grep python | grep -v grep"}),e.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),e.jsx("p",{children:"kill -9 "}),e.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),e.jsx("p",{children:'pkill -9 -f "bot.py"'}),e.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"pkill -9 python"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["在终端输入 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),e.jsx(Is,{children:e.jsx(Zu,{asChild:!0,children:e.jsx(N,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:U?it:Re,children:U?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsxs(ua,{children:[e.jsx(Xt,{className:"h-4 w-4"}),e.jsxs(ma,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),e.jsxs(ua,{className:"hidden lg:flex border-primary/30 bg-primary/5 cursor-pointer hover:bg-primary/10 transition-colors",onClick:rl,children:[e.jsx(ON,{className:"h-4 w-4 text-primary"}),e.jsxs(ma,{className:"flex items-center justify-between",children:[e.jsxs("span",{children:[e.jsx("strong",{className:"text-primary",children:"新手引导:"}),"不知道如何配置模型?点击这里开始学习如何为麦麦的组件分配模型。"]}),e.jsx(N,{variant:"outline",size:"sm",className:"ml-4 shrink-0",children:"开始引导"})]})]}),e.jsxs(Kt,{defaultValue:"models",className:"w-full",children:[e.jsxs(Rt,{className:"grid w-full max-w-full sm:max-w-md grid-cols-2",children:[e.jsx(He,{value:"models",children:"添加模型"}),e.jsx(He,{value:"tasks","data-tour":"tasks-tab-trigger",children:"为模型分配功能"})]}),e.jsxs(We,{value:"models",className:"space-y-4 mt-0",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-2",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"配置可用的模型列表"}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[H.size>0&&e.jsxs(N,{onClick:Ae,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(ns,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",H.size,")"]}),e.jsxs(N,{onClick:()=>Wt(null,null),size:"sm",variant:"outline",className:"w-full sm:w-auto","data-tour":"add-model-button",children:[e.jsx(gt,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加模型"]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2",children:[e.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[e.jsx(St,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索模型名称、标识符或提供商...",value:y,onChange:Y=>q(Y.target.value),className:"pl-9"})]}),y&&e.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",Tt.length," 个结果"]})]}),e.jsx("div",{className:"md:hidden space-y-3",children:Hl.length===0?e.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:y?"未找到匹配的模型":"暂无模型配置"}):Hl.map((Y,fe)=>{const De=n.findIndex(Ys=>Ys===Y),Fe=un(Y.name);return e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("h3",{className:"font-semibold text-base",children:Y.name}),e.jsx(Xe,{variant:Fe?"default":"secondary",className:Fe?"bg-green-600 hover:bg-green-700":"",children:Fe?"已使用":"未使用"})]}),e.jsx("p",{className:"text-xs text-muted-foreground break-all",title:Y.model_identifier,children:Y.model_identifier})]}),e.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[e.jsxs(N,{variant:"default",size:"sm",onClick:()=>Wt(Y,De),children:[e.jsx(nn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(N,{size:"sm",onClick:()=>Ua(De),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(ns,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"提供商"}),e.jsx("p",{className:"font-medium",children:Y.api_provider})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"强制流式"}),e.jsx("p",{className:"font-medium",children:Y.force_stream_mode?"是":"否"})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"输入价格"}),e.jsxs("p",{className:"font-medium",children:["¥",Y.price_in,"/M"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"输出价格"}),e.jsxs("p",{className:"font-medium",children:["¥",Y.price_out,"/M"]})]})]})]},fe)})}),e.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(ii,{children:[e.jsx(ri,{children:e.jsxs(pt,{children:[e.jsx(ls,{className:"w-12",children:e.jsx(yt,{checked:H.size===Tt.length&&Tt.length>0,onCheckedChange:je})}),e.jsx(ls,{className:"w-24",children:"使用状态"}),e.jsx(ls,{children:"模型名称"}),e.jsx(ls,{children:"模型标识符"}),e.jsx(ls,{children:"提供商"}),e.jsx(ls,{className:"text-right",children:"输入价格"}),e.jsx(ls,{className:"text-right",children:"输出价格"}),e.jsx(ls,{className:"text-center",children:"强制流式"}),e.jsx(ls,{className:"text-right",children:"操作"})]})}),e.jsx(ci,{children:Hl.length===0?e.jsx(pt,{children:e.jsx(Ye,{colSpan:9,className:"text-center text-muted-foreground py-8",children:y?"未找到匹配的模型":"暂无模型配置"})}):Hl.map((Y,fe)=>{const De=n.findIndex(Ys=>Ys===Y),Fe=un(Y.name);return e.jsxs(pt,{children:[e.jsx(Ye,{children:e.jsx(yt,{checked:H.has(De),onCheckedChange:()=>P(De)})}),e.jsx(Ye,{children:e.jsx(Xe,{variant:Fe?"default":"secondary",className:Fe?"bg-green-600 hover:bg-green-700":"",children:Fe?"已使用":"未使用"})}),e.jsx(Ye,{className:"font-medium",children:Y.name}),e.jsx(Ye,{className:"max-w-xs truncate",title:Y.model_identifier,children:Y.model_identifier}),e.jsx(Ye,{children:Y.api_provider}),e.jsxs(Ye,{className:"text-right",children:["¥",Y.price_in,"/M"]}),e.jsxs(Ye,{className:"text-right",children:["¥",Y.price_out,"/M"]}),e.jsx(Ye,{className:"text-center",children:Y.force_stream_mode?"是":"否"}),e.jsx(Ye,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(N,{variant:"default",size:"sm",onClick:()=>Wt(Y,De),children:[e.jsx(nn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(N,{size:"sm",onClick:()=>Ua(De),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(ns,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},fe)})})]})})}),Tt.length>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"page-size-model",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(Qe,{value:oe.toString(),onValueChange:Y=>{ge(parseInt(Y)),Q(1),ne(new Set)},children:[e.jsx(Ge,{id:"page-size-model",className:"w-20",children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"10",children:"10"}),e.jsx(ue,{value:"20",children:"20"}),e.jsx(ue,{value:"50",children:"50"}),e.jsx(ue,{value:"100",children:"100"})]})]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(he-1)*oe+1," 到"," ",Math.min(he*oe,Tt.length)," 条,共 ",Tt.length," 条"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>Q(1),disabled:he===1,className:"hidden sm:flex",children:e.jsx(wr,{className:"h-4 w-4"})}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>Q(Y=>Math.max(1,Y-1)),disabled:he===1,children:[e.jsx(cn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:le,onChange:Y=>O(Y.target.value),onKeyDown:Y=>Y.key==="Enter"&&dn(),placeholder:he.toString(),className:"w-16 h-8 text-center",min:1,max:dl}),e.jsx(N,{variant:"outline",size:"sm",onClick:dn,disabled:!le,className:"h-8",children:"跳转"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>Q(Y=>Y+1),disabled:he>=dl,children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(il,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>Q(dl),disabled:he>=dl,className:"hidden sm:flex",children:e.jsx(_r,{className:"h-4 w-4"})})]})]})]}),e.jsxs(We,{value:"tasks",className:"space-y-6 mt-0",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"为不同的任务配置使用的模型和参数"}),g&&e.jsxs("div",{className:"grid gap-4 sm:gap-6",children:[e.jsx(ja,{title:"组件模型 (utils)",description:"用于表情包、取名、关系、情绪变化等组件",taskConfig:g.utils,modelNames:f,onChange:(Y,fe)=>Bt("utils",Y,fe),dataTour:"task-model-select"}),e.jsx(ja,{title:"组件小模型 (utils_small)",description:"消耗量较大的组件,建议使用速度较快的小模型",taskConfig:g.utils_small,modelNames:f,onChange:(Y,fe)=>Bt("utils_small",Y,fe)}),e.jsx(ja,{title:"工具调用模型 (tool_use)",description:"需要使用支持工具调用的模型",taskConfig:g.tool_use,modelNames:f,onChange:(Y,fe)=>Bt("tool_use",Y,fe)}),e.jsx(ja,{title:"首要回复模型 (replyer)",description:"用于表达器和表达方式学习",taskConfig:g.replyer,modelNames:f,onChange:(Y,fe)=>Bt("replyer",Y,fe)}),e.jsx(ja,{title:"决策模型 (planner)",description:"负责决定麦麦该什么时候回复",taskConfig:g.planner,modelNames:f,onChange:(Y,fe)=>Bt("planner",Y,fe)}),e.jsx(ja,{title:"图像识别模型 (vlm)",description:"视觉语言模型",taskConfig:g.vlm,modelNames:f,onChange:(Y,fe)=>Bt("vlm",Y,fe),hideTemperature:!0}),e.jsx(ja,{title:"语音识别模型 (voice)",description:"语音转文字",taskConfig:g.voice,modelNames:f,onChange:(Y,fe)=>Bt("voice",Y,fe),hideTemperature:!0,hideMaxTokens:!0}),e.jsx(ja,{title:"嵌入模型 (embedding)",description:"用于向量化",taskConfig:g.embedding,modelNames:f,onChange:(Y,fe)=>Bt("embedding",Y,fe),hideTemperature:!0,hideMaxTokens:!0}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库模型"}),e.jsx(ja,{title:"实体提取模型 (lpmm_entity_extract)",description:"从文本中提取实体",taskConfig:g.lpmm_entity_extract,modelNames:f,onChange:(Y,fe)=>Bt("lpmm_entity_extract",Y,fe)}),e.jsx(ja,{title:"RDF 构建模型 (lpmm_rdf_build)",description:"构建知识图谱",taskConfig:g.lpmm_rdf_build,modelNames:f,onChange:(Y,fe)=>Bt("lpmm_rdf_build",Y,fe)}),e.jsx(ja,{title:"问答模型 (lpmm_qa)",description:"知识库问答",taskConfig:g.lpmm_qa,modelNames:f,onChange:(Y,fe)=>Bt("lpmm_qa",Y,fe)})]})]})]})]}),e.jsx(Os,{open:X,onOpenChange:Ut,children:e.jsxs(Es,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"model-dialog",preventOutsideClose:Je.isRunning,children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:xe!==null?"编辑模型":"添加模型"}),e.jsx($s,{children:"配置模型的基本信息和参数"})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":"model-name-input",children:[e.jsx(b,{htmlFor:"model_name",className:we.name?"text-destructive":"",children:"模型名称 *"}),e.jsx(ce,{id:"model_name",value:D?.name||"",onChange:Y=>{te(fe=>fe?{...fe,name:Y.target.value}:null),we.name&&Ke(fe=>({...fe,name:void 0}))},placeholder:"例如: qwen3-30b",className:we.name?"border-destructive focus-visible:ring-destructive":""}),we.name?e.jsx("p",{className:"text-xs text-destructive",children:we.name}):e.jsx("p",{className:"text-xs text-muted-foreground",children:"用于在任务配置中引用此模型"})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"model-provider-select",children:[e.jsx(b,{htmlFor:"api_provider",className:we.api_provider?"text-destructive":"",children:"API 提供商 *"}),e.jsxs(Qe,{value:D?.api_provider||"",onValueChange:Y=>{te(fe=>fe?{...fe,api_provider:Y}:null),A([]),ss(null),we.api_provider&&Ke(fe=>({...fe,api_provider:void 0}))},children:[e.jsx(Ge,{id:"api_provider",className:we.api_provider?"border-destructive focus-visible:ring-destructive":"",children:e.jsx($e,{placeholder:"选择提供商"})}),e.jsx(Ve,{children:c.map(Y=>e.jsx(ue,{value:Y,children:Y},Y))})]}),we.api_provider&&e.jsx("p",{className:"text-xs text-destructive",children:we.api_provider})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"model-identifier-input",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{htmlFor:"model_identifier",className:we.model_identifier?"text-destructive":"",children:"模型标识符 *"}),qs?.modelFetcher&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Xe,{variant:"secondary",className:"text-xs",children:qs.display_name}),e.jsx(N,{variant:"ghost",size:"sm",className:"h-6 px-2",onClick:()=>D?.api_provider&&Se(D.api_provider,!0),disabled:W,children:W?e.jsx(vt,{className:"h-3 w-3 animate-spin"}):e.jsx(ft,{className:"h-3 w-3"})})]})]}),qs?.modelFetcher?e.jsxs(Da,{open:Ie,onOpenChange:Rs,children:[e.jsx(Oa,{asChild:!0,children:e.jsxs(N,{variant:"outline",role:"combobox","aria-expanded":Ie,className:"w-full justify-between font-normal",disabled:W||!!Me,children:[W?e.jsxs("span",{className:"flex items-center gap-2 text-muted-foreground",children:[e.jsx(vt,{className:"h-4 w-4 animate-spin"}),"正在获取模型列表..."]}):Me?e.jsx("span",{className:"text-muted-foreground text-sm",children:"点击下方输入框手动填写"}):D?.model_identifier?e.jsx("span",{className:"truncate",children:D.model_identifier}):e.jsx("span",{className:"text-muted-foreground",children:"搜索或选择模型..."}),e.jsx($u,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(Na,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:e.jsxs(oo,{children:[e.jsx(uo,{placeholder:"搜索模型..."}),e.jsx(es,{className:"h-[300px]",children:e.jsxs(mo,{className:"max-h-none overflow-visible",children:[e.jsx(ho,{children:Me?e.jsxs("div",{className:"py-4 px-2 text-center space-y-2",children:[e.jsx("p",{className:"text-sm text-destructive",children:Me}),!Me.includes("API Key")&&e.jsx(N,{variant:"link",size:"sm",onClick:()=>D?.api_provider&&Se(D.api_provider,!0),children:"重试"})]}):"未找到匹配的模型"}),e.jsx(vr,{heading:"可用模型",children:F.map(Y=>e.jsxs(yr,{value:Y.id,onSelect:()=>{te(fe=>fe?{...fe,model_identifier:Y.id}:null),Rs(!1)},children:[e.jsx(ha,{className:`mr-2 h-4 w-4 ${D?.model_identifier===Y.id?"opacity-100":"opacity-0"}`}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{children:Y.id}),Y.name!==Y.id&&e.jsx("span",{className:"text-xs text-muted-foreground",children:Y.name})]})]},Y.id))}),e.jsx(vr,{heading:"手动输入",children:e.jsxs(yr,{value:"__manual_input__",onSelect:()=>{Rs(!1)},children:[e.jsx(nn,{className:"mr-2 h-4 w-4"}),"手动输入模型标识符..."]})})]})})]})})]}):e.jsx(ce,{id:"model_identifier",value:D?.model_identifier||"",onChange:Y=>{te(fe=>fe?{...fe,model_identifier:Y.target.value}:null),we.model_identifier&&Ke(fe=>({...fe,model_identifier:void 0}))},placeholder:"Qwen/Qwen3-30B-A3B-Instruct-2507",className:we.model_identifier?"border-destructive focus-visible:ring-destructive":""}),we.model_identifier&&e.jsx("p",{className:"text-xs text-destructive",children:we.model_identifier}),Me&&qs?.modelFetcher&&!we.model_identifier&&e.jsxs(ua,{variant:"destructive",className:"mt-2 py-2",children:[e.jsx(Xt,{className:"h-4 w-4"}),e.jsx(ma,{className:"text-xs",children:Me})]}),qs?.modelFetcher&&e.jsx(ce,{value:D?.model_identifier||"",onChange:Y=>{te(fe=>fe?{...fe,model_identifier:Y.target.value}:null),we.model_identifier&&Ke(fe=>({...fe,model_identifier:void 0}))},placeholder:"或手动输入模型标识符",className:`mt-2 ${we.model_identifier?"border-destructive focus-visible:ring-destructive":""}`}),!we.model_identifier&&e.jsx("p",{className:"text-xs text-muted-foreground",children:Me?'请手动输入模型标识符,或前往"模型提供商配置"检查 API Key':qs?.modelFetcher?`已识别为 ${qs.display_name},支持自动获取模型列表`:"API 提供商提供的模型 ID"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"price_in",children:"输入价格 (¥/M token)"}),e.jsx(ce,{id:"price_in",type:"number",step:"0.1",min:"0",value:D?.price_in??"",onChange:Y=>{const fe=Y.target.value===""?null:parseFloat(Y.target.value);te(De=>De?{...De,price_in:fe}:null)},placeholder:"默认: 0"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"price_out",children:"输出价格 (¥/M token)"}),e.jsx(ce,{id:"price_out",type:"number",step:"0.1",min:"0",value:D?.price_out??"",onChange:Y=>{const fe=Y.target.value===""?null:parseFloat(Y.target.value);te(De=>De?{...De,price_out:fe}:null)},placeholder:"默认: 0"})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"force_stream_mode",checked:D?.force_stream_mode||!1,onCheckedChange:Y=>te(fe=>fe?{...fe,force_stream_mode:Y}:null)}),e.jsx(b,{htmlFor:"force_stream_mode",className:"cursor-pointer",children:"强制流式输出模式"})]})]}),e.jsxs(Is,{children:[e.jsx(N,{variant:"outline",onClick:()=>w(!1),"data-tour":"model-cancel-button",children:"取消"}),e.jsx(N,{onClick:La,"data-tour":"model-save-button",children:"保存"})]})]})}),e.jsx(ps,{open:ye,onOpenChange:ve,children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:['确定要删除模型 "',pe!==null?n[pe]?.name:"",'" 吗? 此操作无法撤销。']})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:ba,children:"删除"})]})]})}),e.jsx(ps,{open:S,onOpenChange:me,children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认批量删除"}),e.jsxs(ms,{children:["确定要删除选中的 ",H.size," 个模型吗? 此操作无法撤销。"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:tt,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),E&&e.jsx(Iu,{onRestartComplete:ot,onRestartFailed:di})]})})}function ja({title:n,description:r,taskConfig:c,modelNames:d,onChange:h,hideTemperature:x=!1,hideMaxTokens:f=!1,dataTour:j}){const g=_=>{h("model_list",_)};return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"font-semibold text-base sm:text-lg",children:n}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:r})]}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":j,children:[e.jsx(b,{children:"模型列表"}),e.jsx(ww,{options:d.map(_=>({label:_,value:_})),selected:c.model_list||[],onChange:g,placeholder:"选择模型...",emptyText:"暂无可用模型"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[!x&&e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:"温度"}),e.jsx(ce,{type:"number",step:"0.1",min:"0",max:"1",value:c.temperature??.3,onChange:_=>{const v=parseFloat(_.target.value);!isNaN(v)&&v>=0&&v<=1&&h("temperature",v)},className:"w-20 h-8 text-sm"})]}),e.jsx(za,{value:[c.temperature??.3],onValueChange:_=>h("temperature",_[0]),min:0,max:1,step:.1,className:"w-full"})]}),!f&&e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"最大 Token"}),e.jsx(ce,{type:"number",step:"1",min:"1",value:c.max_tokens??1024,onChange:_=>h("max_tokens",parseInt(_.target.value))})]})]})]})]})}const xo="/api/webui/config";async function Cw(){const r=await(await ke(`${xo}/adapter-config/path`)).json();return!r.success||!r.path?null:{path:r.path,lastModified:r.lastModified}}async function up(n){const c=await(await ke(`${xo}/adapter-config/path`,{method:"POST",headers:ze(),body:JSON.stringify({path:n})})).json();if(!c.success)throw new Error(c.message||"保存路径失败")}async function mp(n){const c=await(await ke(`${xo}/adapter-config?path=${encodeURIComponent(n)}`)).json();if(!c.success)throw new Error("读取配置文件失败");return c.content}async function hp(n,r){const d=await(await ke(`${xo}/adapter-config`,{method:"POST",headers:ze(),body:JSON.stringify({path:n,content:r})})).json();if(!d.success)throw new Error(d.message||"保存配置失败")}const Yt={inner:{version:"0.1.2"},nickname:{nickname:""},napcat_server:{host:"localhost",port:8095,token:"",heartbeat_interval:30},maibot_server:{host:"localhost",port:8e3},chat:{group_list_type:"whitelist",group_list:[],private_list_type:"whitelist",private_list:[],ban_user_id:[],ban_qq_bot:!1,enable_poke:!0},voice:{use_tts:!1},debug:{level:"INFO"}},Du={oneclick:{name:"一键包",description:"使用一键包部署的适配器配置",path:"../MaiBot-Napcat-Adapter/config.toml",icon:rn},docker:{name:"Docker",description:"Docker Compose 部署的适配器配置",path:"/MaiMBot/adapters-config/config.toml",icon:RN}};function kw(){const[n,r]=u.useState("upload"),[c,d]=u.useState(null),[h,x]=u.useState(""),[f,j]=u.useState(""),[g,_]=u.useState("oneclick"),[v,k]=u.useState(""),[z,T]=u.useState(!1),[L,K]=u.useState(!1),[U,R]=u.useState(!1),[ee,V]=u.useState(!1),[E,B]=u.useState(null),X=u.useRef(null),{toast:w}=Bs(),D=u.useRef(null),te=O=>{if(!O.trim())return{valid:!1,error:"路径不能为空"};if(!O.toLowerCase().endsWith(".toml"))return{valid:!1,error:"文件必须是 .toml 格式"};const F=/^([a-zA-Z]:\\|\\\\[^\\]+\\[^\\]+\\).+\.toml$/i,A=/^(\/|~\/).+\.toml$/i,W=/^(\.{1,2}[\\/]|[^:\\/]).+\.toml$/i,_e=F.test(O),Me=A.test(O),ss=W.test(O);return!_e&&!Me&&!ss?{valid:!1,error:"路径格式错误"}:/[<>"|?*\x00-\x1F]/.test(O)?{valid:!1,error:"路径包含非法字符"}:{valid:!0,error:""}},xe=O=>{if(j(O),O.trim()){const F=te(O);k(F.error)}else k("")},be=u.useCallback(async O=>{const F=Du[O];K(!0);try{const A=await mp(F.path),W=he(A);d(W),_(O),j(F.path),await up(F.path),w({title:"加载成功",description:`已从${F.name}预设加载配置`})}catch(A){console.error("加载预设配置失败:",A),w({title:"加载失败",description:A instanceof Error?A.message:"无法读取预设配置文件",variant:"destructive"})}finally{K(!1)}},[w]),ye=u.useCallback(async O=>{const F=te(O);if(!F.valid){k(F.error),w({title:"路径无效",description:F.error,variant:"destructive"});return}k(""),K(!0);try{const A=await mp(O),W=he(A);d(W),j(O),await up(O),w({title:"加载成功",description:"已从配置文件加载"})}catch(A){console.error("加载配置失败:",A),w({title:"加载失败",description:A instanceof Error?A.message:"无法读取配置文件",variant:"destructive"})}finally{K(!1)}},[w]);u.useEffect(()=>{(async()=>{try{const F=await Cw();if(F&&F.path){j(F.path);const A=Object.entries(Du).find(([,W])=>W.path===F.path);A?(r("preset"),_(A[0]),await be(A[0])):(r("path"),await ye(F.path))}}catch(F){console.error("加载保存的路径失败:",F)}})()},[ye,be]);const ve=u.useCallback(O=>{n!=="path"&&n!=="preset"||!f||(D.current&&clearTimeout(D.current),D.current=setTimeout(async()=>{T(!0);try{const F=Q(O);await hp(f,F),w({title:"自动保存成功",description:"配置已保存到文件"})}catch(F){console.error("自动保存失败:",F),w({title:"自动保存失败",description:F instanceof Error?F.message:"保存配置失败",variant:"destructive"})}finally{T(!1)}},1e3))},[n,f,w]),pe=async()=>{if(!c||!f)return;const O=te(f);if(!O.valid){w({title:"保存失败",description:O.error,variant:"destructive"});return}T(!0);try{const F=Q(c);await hp(f,F),w({title:"保存成功",description:"配置已保存到文件"})}catch(F){console.error("保存失败:",F),w({title:"保存失败",description:F instanceof Error?F.message:"保存配置失败",variant:"destructive"})}finally{T(!1)}},Ne=async()=>{f&&await ye(f)},y=O=>{if(O!==n){if(c){B(O),R(!0);return}q(O)}},q=O=>{d(null),x(""),k(""),r(O),O==="preset"&&be("oneclick"),w({title:"已切换模式",description:{upload:"现在可以上传配置文件",path:"现在可以指定配置文件路径",preset:"现在可以使用预设配置"}[O]})},H=()=>{E&&(q(E),B(null)),R(!1)},ne=()=>{if(c){V(!0);return}S()},S=()=>{j(""),d(null),k(""),w({title:"已清空",description:"路径和配置已清空"})},me=()=>{S(),V(!1)},he=O=>{const F=JSON.parse(JSON.stringify(Yt)),A=O.split(` +`);let W="";for(const _e of A){const Me=_e.trim();if(!Me||Me.startsWith("#"))continue;const ss=Me.match(/^\[(\w+)\]/);if(ss){W=ss[1];continue}const Ie=Me.match(/^(\w+)\s*=\s*(.+)$/);if(Ie&&W){const[,Rs,qs]=Ie;let ie=qs.trim();const we=ie.match(/^("[^"]*")/);if(we)ie=we[1];else{const Le=ie.indexOf("#");Le!==-1&&(ie=ie.substring(0,Le).trim())}let Ke;if(ie==="true")Ke=!0;else if(ie==="false")Ke=!1;else if(ie.startsWith("[")&&ie.endsWith("]")){const Le=ie.slice(1,-1).trim();if(Le){const st=Le.split(",").map(bt=>{const Je=bt.trim();return isNaN(Number(Je))?Je.replace(/"/g,""):Number(Je)}),Jt=typeof st[0];Ke=st.every(bt=>typeof bt===Jt)?st:st.filter(bt=>typeof bt=="number")}else Ke=[]}else ie.startsWith('"')&&ie.endsWith('"')?Ke=ie.slice(1,-1):isNaN(Number(ie))?Ke=ie.replace(/"/g,""):Ke=Number(ie);if(W in F){const Le=F[W];Le[Rs]=Ke}}}return F},Q=O=>{const F=[],A=(W,_e)=>W===""||W===null||W===void 0?_e:W;return F.push("[inner]"),F.push(`version = "${A(O.inner.version,Yt.inner.version)}" # 版本号`),F.push("# 请勿修改版本号,除非你知道自己在做什么"),F.push(""),F.push("[nickname] # 现在没用"),F.push(`nickname = "${A(O.nickname.nickname,Yt.nickname.nickname)}"`),F.push(""),F.push("[napcat_server] # Napcat连接的ws服务设置"),F.push(`host = "${A(O.napcat_server.host,Yt.napcat_server.host)}" # Napcat设定的主机地址`),F.push(`port = ${A(O.napcat_server.port||0,Yt.napcat_server.port)} # Napcat设定的端口`),F.push(`token = "${A(O.napcat_server.token,Yt.napcat_server.token)}" # Napcat设定的访问令牌,若无则留空`),F.push(`heartbeat_interval = ${A(O.napcat_server.heartbeat_interval||0,Yt.napcat_server.heartbeat_interval)} # 与Napcat设置的心跳相同(按秒计)`),F.push(""),F.push("[maibot_server] # 连接麦麦的ws服务设置"),F.push(`host = "${A(O.maibot_server.host,Yt.maibot_server.host)}" # 麦麦在.env文件中设置的主机地址,即HOST字段`),F.push(`port = ${A(O.maibot_server.port||0,Yt.maibot_server.port)} # 麦麦在.env文件中设置的端口,即PORT字段`),F.push(""),F.push("[chat] # 黑白名单功能"),F.push(`group_list_type = "${A(O.chat.group_list_type,Yt.chat.group_list_type)}" # 群组名单类型,可选为:whitelist, blacklist`),F.push(`group_list = [${O.chat.group_list.join(", ")}] # 群组名单`),F.push("# 当group_list_type为whitelist时,只有群组名单中的群组可以聊天"),F.push("# 当group_list_type为blacklist时,群组名单中的任何群组无法聊天"),F.push(`private_list_type = "${A(O.chat.private_list_type,Yt.chat.private_list_type)}" # 私聊名单类型,可选为:whitelist, blacklist`),F.push(`private_list = [${O.chat.private_list.join(", ")}] # 私聊名单`),F.push("# 当private_list_type为whitelist时,只有私聊名单中的用户可以聊天"),F.push("# 当private_list_type为blacklist时,私聊名单中的任何用户无法聊天"),F.push(`ban_user_id = [${O.chat.ban_user_id.join(", ")}] # 全局禁止名单(全局禁止名单中的用户无法进行任何聊天)`),F.push(`ban_qq_bot = ${O.chat.ban_qq_bot} # 是否屏蔽QQ官方机器人`),F.push(`enable_poke = ${O.chat.enable_poke} # 是否启用戳一戳功能`),F.push(""),F.push("[voice] # 发送语音设置"),F.push(`use_tts = ${O.voice.use_tts} # 是否使用tts语音(请确保你配置了tts并有对应的adapter)`),F.push(""),F.push("[debug]"),F.push(`level = "${A(O.debug.level,Yt.debug.level)}" # 日志等级(DEBUG, INFO, WARNING, ERROR, CRITICAL)`),F.join(` +`)},oe=O=>{const F=O.target.files?.[0];if(!F)return;const A=new FileReader;A.onload=W=>{try{const _e=W.target?.result,Me=he(_e);d(Me),x(F.name),w({title:"上传成功",description:`已加载配置文件:${F.name}`})}catch(_e){console.error("解析配置文件失败:",_e),w({title:"解析失败",description:"配置文件格式错误,请检查文件内容",variant:"destructive"})}},A.readAsText(F)},ge=()=>{if(!c)return;const O=Q(c),F=new Blob([O],{type:"text/plain;charset=utf-8"}),A=URL.createObjectURL(F),W=document.createElement("a");W.href=A,W.download=h||"config.toml",document.body.appendChild(W),W.click(),document.body.removeChild(W),URL.revokeObjectURL(A),w({title:"下载成功",description:"配置文件已下载,请手动覆盖并重启适配器"})},le=()=>{d(JSON.parse(JSON.stringify(Yt))),x("config.toml"),w({title:"已加载默认配置",description:"可以开始编辑配置"})};return e.jsx(es,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦适配器配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的 QQ 适配器的配置文件"})]})}),e.jsxs("div",{className:"flex items-start gap-2 p-3 rounded-lg border border-amber-500/50 bg-amber-500/10 text-amber-700 dark:text-amber-400",children:[e.jsx(Aa,{className:"h-4 w-4 mt-0.5 flex-shrink-0"}),e.jsx("p",{className:"text-sm",children:"适配器配置保存之后使用 WebUI 的重启功能适配器并不会重启,需要手动重启适配器。"})]}),e.jsxs(Be,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"工作模式"}),e.jsx(Zs,{children:"选择配置文件的管理方式"})]}),e.jsxs(bs,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3 md:gap-4",children:[e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="preset"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>y("preset"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(rn,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"预设模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"使用预设的部署配置"})]})]})}),e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="upload"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>y("upload"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(hr,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"上传文件模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"上传配置文件,编辑后下载并手动覆盖"})]})]})}),e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="path"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>y("path"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(LN,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"指定路径模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"指定配置文件路径,自动加载和保存"})]})]})})]}),n==="preset"&&e.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[e.jsx(b,{className:"text-sm md:text-base",children:"选择部署方式"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:Object.entries(Du).map(([O,F])=>{const A=F.icon,W=g===O;return e.jsx("div",{className:`border-2 rounded-lg p-3 cursor-pointer transition-all ${W?"border-primary bg-primary/5":"border-muted hover:border-primary/50"}`,onClick:()=>{_(O),be(O)},children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(A,{className:"h-5 w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h4",{className:"font-semibold text-sm",children:F.name}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:F.description}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1 font-mono break-all",children:F.path})]})]})},O)})})]}),n==="path"&&e.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"config-path",className:"text-sm md:text-base",children:"配置文件路径"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs("div",{className:"flex-1 space-y-1",children:[e.jsx(ce,{id:"config-path",value:f,onChange:O=>xe(O.target.value),placeholder:"例: C:\\Adapter\\config.toml",className:`text-sm ${v?"border-destructive":""}`}),v&&e.jsx("p",{className:"text-xs text-destructive",children:v})]}),e.jsx(N,{onClick:()=>ye(f),disabled:L||!f||!!v,className:"w-full sm:w-auto",children:L?e.jsxs(e.Fragment,{children:[e.jsx(ft,{className:"h-4 w-4 animate-spin mr-2"}),e.jsx("span",{className:"sm:hidden",children:"加载中..."})]}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"sm:hidden",children:"加载配置"}),e.jsx("span",{className:"hidden sm:inline",children:"加载"})]})})]})]}),e.jsxs("details",{className:"rounded-lg bg-muted/50 p-3 group",children:[e.jsxs("summary",{className:"text-xs font-medium cursor-pointer select-none list-none flex items-center justify-between",children:[e.jsx("span",{children:"路径格式说明"}),e.jsx("svg",{className:"h-4 w-4 transition-transform group-open:rotate-180",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),e.jsxs("div",{className:"mt-2 space-y-2 text-xs text-muted-foreground",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Windows"})}),e.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[e.jsx("div",{children:"C:\\Adapter\\config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"D:\\MaiBot\\adapter\\config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"\\\\server\\share\\config.toml"})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Linux"})}),e.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[e.jsx("div",{children:"/opt/adapter/config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"/home/user/adapter/config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"~/adapter/config.toml"})]})]}),e.jsx("p",{className:"pt-1 border-t text-[10px] md:text-xs",children:"💡 配置会自动保存到指定文件,修改后 1 秒自动保存"})]})]})]})]})]}),e.jsxs(ua,{children:[e.jsx(Xt,{className:"h-4 w-4"}),e.jsx(ma,{children:n==="preset"?e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"预设模式:"}),"选择预设的部署方式,配置会自动加载,修改后 1 秒自动保存",z&&" (正在保存...)"]}):n==="upload"?e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"上传文件模式:"}),"上传配置文件 → 在线编辑 → 下载文件 → 手动覆盖并重启适配器"]}):e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"指定路径模式:"}),"指定配置文件路径后,配置会自动加载,修改后 1 秒自动保存",z&&" (正在保存...)"]})})]}),n==="upload"&&!c&&e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 w-full",children:[e.jsx("input",{ref:X,type:"file",accept:".toml",className:"hidden",onChange:oe}),e.jsxs(N,{onClick:()=>X.current?.click(),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(hr,{className:"mr-2 h-4 w-4"}),"上传配置"]}),e.jsxs(N,{onClick:le,size:"sm",className:"w-full sm:w-auto",children:[e.jsx(Ma,{className:"mr-2 h-4 w-4"}),"使用默认配置"]})]}),n==="upload"&&c&&e.jsx("div",{className:"flex gap-2",children:e.jsxs(N,{onClick:ge,size:"sm",className:"w-full sm:w-auto",children:[e.jsx(nl,{className:"mr-2 h-4 w-4"}),"下载配置"]})}),(n==="preset"||n==="path")&&c&&e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs(N,{onClick:pe,size:"sm",disabled:z||!!v,className:"w-full sm:w-auto",children:[e.jsx(br,{className:"mr-2 h-4 w-4"}),z?"保存中...":"立即保存"]}),e.jsxs(N,{onClick:Ne,size:"sm",variant:"outline",disabled:L,className:"w-full sm:w-auto",children:[e.jsx(ft,{className:`mr-2 h-4 w-4 ${L?"animate-spin":""}`}),"刷新"]}),n==="path"&&e.jsxs(N,{onClick:ne,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(ns,{className:"mr-2 h-4 w-4"}),"清空路径"]})]}),c?e.jsxs(Kt,{defaultValue:"napcat",className:"w-full",children:[e.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:e.jsxs(Rt,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5",children:[e.jsxs(He,{value:"napcat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"Napcat 连接"}),e.jsx("span",{className:"sm:hidden",children:"Napcat"})]}),e.jsxs(He,{value:"maibot",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"麦麦连接"}),e.jsx("span",{className:"sm:hidden",children:"麦麦"})]}),e.jsxs(He,{value:"chat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"聊天控制"}),e.jsx("span",{className:"sm:hidden",children:"聊天"})]}),e.jsxs(He,{value:"voice",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"语音设置"}),e.jsx("span",{className:"sm:hidden",children:"语音"})]}),e.jsx(He,{value:"debug",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:"调试"})]})}),e.jsx(We,{value:"napcat",className:"space-y-4",children:e.jsx(Tw,{config:c,onChange:O=>{d(O),ve(O)}})}),e.jsx(We,{value:"maibot",className:"space-y-4",children:e.jsx(Ew,{config:c,onChange:O=>{d(O),ve(O)}})}),e.jsx(We,{value:"chat",className:"space-y-4",children:e.jsx(zw,{config:c,onChange:O=>{d(O),ve(O)}})}),e.jsx(We,{value:"voice",className:"space-y-4",children:e.jsx(Mw,{config:c,onChange:O=>{d(O),ve(O)}})}),e.jsx(We,{value:"debug",className:"space-y-4",children:e.jsx(Aw,{config:c,onChange:O=>{d(O),ve(O)}})})]}):e.jsx("div",{className:"rounded-lg border bg-card p-6 md:p-12",children:e.jsxs("div",{className:"text-center space-y-3 md:space-y-4",children:[e.jsx(Ma,{className:"h-12 w-12 md:h-16 md:w-16 mx-auto text-muted-foreground"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold",children:"尚未加载配置"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-2 px-4",children:n==="preset"?"请选择预设的部署方式":n==="upload"?"请上传现有配置文件,或使用默认配置开始编辑":"请指定配置文件路径并点击加载按钮"})]})]})}),e.jsx(ps,{open:U,onOpenChange:R,children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认切换模式"}),e.jsxs(ms,{children:["切换模式将清空当前配置,确定要继续吗?",e.jsx("br",{}),e.jsx("span",{className:"text-destructive font-medium",children:"请确保已保存重要配置"})]})]}),e.jsxs(ds,{children:[e.jsx(xs,{onClick:()=>{R(!1),B(null)},children:"取消"}),e.jsx(hs,{onClick:H,children:"确认切换"})]})]})}),e.jsx(ps,{open:ee,onOpenChange:V,children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认清空路径"}),e.jsxs(ms,{children:["清空路径将清除当前配置,确定要继续吗?",e.jsx("br",{}),e.jsx("span",{className:"text-muted-foreground text-sm",children:"此操作不会删除配置文件,只是清除界面中的配置"})]})]}),e.jsxs(ds,{children:[e.jsx(xs,{onClick:()=>V(!1),children:"取消"}),e.jsx(hs,{onClick:me,className:"bg-destructive hover:bg-destructive/90",children:"确认清空"})]})]})})]})})}function Tw({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"Napcat WebSocket 服务设置"}),e.jsxs("div",{className:"grid gap-3 md:gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"napcat-host",className:"text-sm md:text-base",children:"主机地址"}),e.jsx(ce,{id:"napcat-host",value:n.napcat_server.host,onChange:c=>r({...n,napcat_server:{...n.napcat_server,host:c.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的主机地址"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"napcat-port",className:"text-sm md:text-base",children:"端口"}),e.jsx(ce,{id:"napcat-port",type:"number",value:n.napcat_server.port||"",onChange:c=>r({...n,napcat_server:{...n.napcat_server,port:c.target.value?parseInt(c.target.value):0}}),placeholder:"8095",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的端口(留空使用默认值 8095)"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"napcat-token",className:"text-sm md:text-base",children:"访问令牌(Token)"}),e.jsx(ce,{id:"napcat-token",type:"password",value:n.napcat_server.token,onChange:c=>r({...n,napcat_server:{...n.napcat_server,token:c.target.value}}),placeholder:"留空表示无需令牌",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的访问令牌,若无则留空"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"napcat-heartbeat",className:"text-sm md:text-base",children:"心跳间隔(秒)"}),e.jsx(ce,{id:"napcat-heartbeat",type:"number",value:n.napcat_server.heartbeat_interval||"",onChange:c=>r({...n,napcat_server:{...n.napcat_server,heartbeat_interval:c.target.value?parseInt(c.target.value):0}}),placeholder:"30",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"与 Napcat 设置的心跳间隔保持一致(留空使用默认值 30)"})]})]})]})})}function Ew({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"麦麦 WebSocket 服务设置"}),e.jsxs("div",{className:"grid gap-3 md:gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"maibot-host",className:"text-sm md:text-base",children:"主机地址"}),e.jsx(ce,{id:"maibot-host",value:n.maibot_server.host,onChange:c=>r({...n,maibot_server:{...n.maibot_server,host:c.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 HOST 字段"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"maibot-port",className:"text-sm md:text-base",children:"端口"}),e.jsx(ce,{id:"maibot-port",type:"number",value:n.maibot_server.port||"",onChange:c=>r({...n,maibot_server:{...n.maibot_server,port:c.target.value?parseInt(c.target.value):0}}),placeholder:"8000",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 PORT 字段(留空使用默认值 8000)"})]})]})]})})}function zw({config:n,onChange:r}){const c=x=>{const f={...n};x==="group"?f.chat.group_list=[...f.chat.group_list,0]:x==="private"?f.chat.private_list=[...f.chat.private_list,0]:f.chat.ban_user_id=[...f.chat.ban_user_id,0],r(f)},d=(x,f)=>{const j={...n};x==="group"?j.chat.group_list=j.chat.group_list.filter((g,_)=>_!==f):x==="private"?j.chat.private_list=j.chat.private_list.filter((g,_)=>_!==f):j.chat.ban_user_id=j.chat.ban_user_id.filter((g,_)=>_!==f),r(j)},h=(x,f,j)=>{const g={...n};x==="group"?g.chat.group_list[f]=j:x==="private"?g.chat.private_list[f]=j:g.chat.ban_user_id[f]=j,r(g)};return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"聊天黑白名单功能"}),e.jsxs("div",{className:"grid gap-4 md:gap-6",children:[e.jsxs("div",{className:"space-y-3 md:space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-sm md:text-base",children:"群组名单类型"}),e.jsxs(Qe,{value:n.chat.group_list_type,onValueChange:x=>r({...n,chat:{...n.chat,group_list_type:x}}),children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),e.jsx(ue,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsx(b,{className:"text-sm md:text-base",children:"群组列表"}),e.jsxs(N,{onClick:()=>c("group"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Ma,{className:"mr-1 h-4 w-4"}),"添加群号"]})]}),n.chat.group_list.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{type:"number",value:x,onChange:j=>h("group",f,parseInt(j.target.value)||0),placeholder:"输入群号",className:"text-sm md:text-base"}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(N,{size:"icon",variant:"outline",children:e.jsx(ns,{className:"h-4 w-4"})})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:["确定要删除群号 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>d("group",f),children:"删除"})]})]})]})]},f)),n.chat.group_list.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无群组"})]})]}),e.jsxs("div",{className:"space-y-3 md:space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-sm md:text-base",children:"私聊名单类型"}),e.jsxs(Qe,{value:n.chat.private_list_type,onValueChange:x=>r({...n,chat:{...n.chat,private_list_type:x}}),children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),e.jsx(ue,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsx(b,{className:"text-sm md:text-base",children:"私聊列表"}),e.jsxs(N,{onClick:()=>c("private"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Ma,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),n.chat.private_list.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{type:"number",value:x,onChange:j=>h("private",f,parseInt(j.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(N,{size:"icon",variant:"outline",children:e.jsx(ns,{className:"h-4 w-4"})})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:["确定要删除用户 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>d("private",f),children:"删除"})]})]})]})]},f)),n.chat.private_list.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无用户"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-sm md:text-base",children:"全局禁止名单"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"名单中的用户无法进行任何聊天"})]}),e.jsxs(N,{onClick:()=>c("ban"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Ma,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),n.chat.ban_user_id.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{type:"number",value:x,onChange:j=>h("ban",f,parseInt(j.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(N,{size:"icon",variant:"outline",children:e.jsx(ns,{className:"h-4 w-4"})})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:["确定要从全局禁止名单中删除用户 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>d("ban",f),children:"删除"})]})]})]})]},f)),n.chat.ban_user_id.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无禁止用户"})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-sm md:text-base",children:"屏蔽QQ官方机器人"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否屏蔽来自QQ官方机器人的消息"})]}),e.jsx(qe,{checked:n.chat.ban_qq_bot,onCheckedChange:x=>r({...n,chat:{...n.chat,ban_qq_bot:x}})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-sm md:text-base",children:"启用戳一戳功能"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否响应戳一戳消息"})]}),e.jsx(qe,{checked:n.chat.enable_poke,onCheckedChange:x=>r({...n,chat:{...n.chat,enable_poke:x}})})]})]})]})})}function Mw({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"发送语音设置"}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-sm md:text-base",children:"使用 TTS 语音"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"请确保已配置 TTS 并有对应的适配器"})]}),e.jsx(qe,{checked:n.voice.use_tts,onCheckedChange:c=>r({...n,voice:{use_tts:c}})})]})]})})}function Aw({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"调试设置"}),e.jsx("div",{className:"grid gap-3 md:gap-4",children:e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-sm md:text-base",children:"日志等级"}),e.jsxs(Qe,{value:n.debug.level,onValueChange:c=>r({...n,debug:{level:c}}),children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"DEBUG",children:"DEBUG(调试)"}),e.jsx(ue,{value:"INFO",children:"INFO(信息)"}),e.jsx(ue,{value:"WARNING",children:"WARNING(警告)"}),e.jsx(ue,{value:"ERROR",children:"ERROR(错误)"}),e.jsx(ue,{value:"CRITICAL",children:"CRITICAL(严重)"})]})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"设置适配器的日志输出等级"})]})})]})})}const Dw=["defaultChecked","defaultValue","suppressContentEditableWarning","suppressHydrationWarning","dangerouslySetInnerHTML","accessKey","className","contentEditable","contextMenu","dir","draggable","hidden","id","lang","placeholder","slot","spellCheck","style","tabIndex","title","translate","radioGroup","role","about","datatype","inlist","prefix","property","resource","typeof","vocab","autoCapitalize","autoCorrect","autoSave","color","itemProp","itemScope","itemType","itemID","itemRef","results","security","unselectable","inputMode","is","onCopy","onCopyCapture","onCut","onCutCapture","onPaste","onPasteCapture","onCompositionEnd","onCompositionEndCapture","onCompositionStart","onCompositionStartCapture","onCompositionUpdate","onCompositionUpdateCapture","onFocus","onFocusCapture","onBlur","onBlurCapture","onChange","onChangeCapture","onBeforeInput","onBeforeInputCapture","onInput","onInputCapture","onReset","onResetCapture","onSubmit","onSubmitCapture","onInvalid","onInvalidCapture","onLoad","onLoadCapture","onError","onErrorCapture","onKeyDown","onKeyDownCapture","onKeyPress","onKeyPressCapture","onKeyUp","onKeyUpCapture","onAbort","onAbortCapture","onCanPlay","onCanPlayCapture","onCanPlayThrough","onCanPlayThroughCapture","onDurationChange","onDurationChangeCapture","onEmptied","onEmptiedCapture","onEncrypted","onEncryptedCapture","onEnded","onEndedCapture","onLoadedData","onLoadedDataCapture","onLoadedMetadata","onLoadedMetadataCapture","onLoadStart","onLoadStartCapture","onPause","onPauseCapture","onPlay","onPlayCapture","onPlaying","onPlayingCapture","onProgress","onProgressCapture","onRateChange","onRateChangeCapture","onSeeked","onSeekedCapture","onSeeking","onSeekingCapture","onStalled","onStalledCapture","onSuspend","onSuspendCapture","onTimeUpdate","onTimeUpdateCapture","onVolumeChange","onVolumeChangeCapture","onWaiting","onWaitingCapture","onAuxClick","onAuxClickCapture","onClick","onClickCapture","onContextMenu","onContextMenuCapture","onDoubleClick","onDoubleClickCapture","onDrag","onDragCapture","onDragEnd","onDragEndCapture","onDragEnter","onDragEnterCapture","onDragExit","onDragExitCapture","onDragLeave","onDragLeaveCapture","onDragOver","onDragOverCapture","onDragStart","onDragStartCapture","onDrop","onDropCapture","onMouseDown","onMouseDownCapture","onMouseEnter","onMouseLeave","onMouseMove","onMouseMoveCapture","onMouseOut","onMouseOutCapture","onMouseOver","onMouseOverCapture","onMouseUp","onMouseUpCapture","onSelect","onSelectCapture","onTouchCancel","onTouchCancelCapture","onTouchEnd","onTouchEndCapture","onTouchMove","onTouchMoveCapture","onTouchStart","onTouchStartCapture","onPointerDown","onPointerDownCapture","onPointerMove","onPointerMoveCapture","onPointerUp","onPointerUpCapture","onPointerCancel","onPointerCancelCapture","onPointerEnter","onPointerEnterCapture","onPointerLeave","onPointerLeaveCapture","onPointerOver","onPointerOverCapture","onPointerOut","onPointerOutCapture","onGotPointerCapture","onGotPointerCaptureCapture","onLostPointerCapture","onLostPointerCaptureCapture","onScroll","onScrollCapture","onWheel","onWheelCapture","onAnimationStart","onAnimationStartCapture","onAnimationEnd","onAnimationEndCapture","onAnimationIteration","onAnimationIterationCapture","onTransitionEnd","onTransitionEndCapture"],Ow=/^(aria-|data-)/,Gg=n=>Object.fromEntries(Object.entries(n).filter(([r])=>Ow.test(r)||Dw.includes(r)));function Rw(n,r){const c=Gg(n);return Object.keys(n).some(d=>!Object.hasOwn(c,d)&&n[d]!==r[d])}class Lw extends u.Component{container;plugin;componentDidMount(){this.installPlugin()}componentDidUpdate(r){if(r.uppy!==this.props.uppy)this.uninstallPlugin(r),this.installPlugin();else if(Rw(this.props,r)){const{uppy:c,...d}={...this.props,target:this.container};this.plugin.setOptions(d)}}componentWillUnmount(){this.uninstallPlugin()}installPlugin(){const{uppy:r,...c}={id:"Dashboard",...this.props,inline:!0,target:this.container};r.use(vb,c),this.plugin=r.getPlugin(c.id)}uninstallPlugin(r=this.props){const{uppy:c}=r;c.removePlugin(this.plugin)}render(){return u.createElement("div",{className:"uppy-Container",ref:r=>{this.container=r},...Gg(this.props)})}}function Uw({content:n,className:r=""}){return e.jsx("div",{className:`prose prose-sm dark:prose-invert max-w-none ${r}`,children:e.jsx(Nb,{remarkPlugins:[wb,_b],rehypePlugins:[bb],components:{code({inline:c,className:d,children:h,...x}){return c?e.jsx("code",{className:"bg-muted px-1.5 py-0.5 rounded text-sm font-mono",...x,children:h}):e.jsx("code",{className:`${d} block bg-muted p-4 rounded-lg overflow-x-auto`,...x,children:h})},table({children:c,...d}){return e.jsx("div",{className:"overflow-x-auto",children:e.jsx("table",{className:"border-collapse border border-border",...d,children:c})})},th({children:c,...d}){return e.jsx("th",{className:"border border-border bg-muted px-4 py-2 text-left font-semibold",...d,children:c})},td({children:c,...d}){return e.jsx("td",{className:"border border-border px-4 py-2",...d,children:c})},a({children:c,...d}){return e.jsx("a",{className:"text-primary hover:underline",target:"_blank",rel:"noopener noreferrer",...d,children:c})},blockquote({children:c,...d}){return e.jsx("blockquote",{className:"border-l-4 border-primary pl-4 italic text-muted-foreground",...d,children:c})},h1({children:c,...d}){return e.jsx("h1",{className:"text-3xl font-bold mt-6 mb-4",...d,children:c})},h2({children:c,...d}){return e.jsx("h2",{className:"text-2xl font-bold mt-5 mb-3",...d,children:c})},h3({children:c,...d}){return e.jsx("h3",{className:"text-xl font-bold mt-4 mb-2",...d,children:c})},h4({children:c,...d}){return e.jsx("h4",{className:"text-lg font-semibold mt-3 mb-2",...d,children:c})},ul({children:c,...d}){return e.jsx("ul",{className:"list-disc list-inside space-y-1 my-2",...d,children:c})},ol({children:c,...d}){return e.jsx("ol",{className:"list-decimal list-inside space-y-1 my-2",...d,children:c})},p({children:c,...d}){return e.jsx("p",{className:"my-2 leading-relaxed",...d,children:c})},hr({...c}){return e.jsx("hr",{className:"my-4 border-border",...c})}},children:n})})}function Bw({children:n,className:r}){return e.jsx(Uw,{content:n,className:r})}const Ra="/api/webui/emoji";async function Hw(n){const r=new URLSearchParams;n.page&&r.append("page",n.page.toString()),n.page_size&&r.append("page_size",n.page_size.toString()),n.search&&r.append("search",n.search),n.is_registered!==void 0&&r.append("is_registered",n.is_registered.toString()),n.is_banned!==void 0&&r.append("is_banned",n.is_banned.toString()),n.format&&r.append("format",n.format),n.sort_by&&r.append("sort_by",n.sort_by),n.sort_order&&r.append("sort_order",n.sort_order);const c=await ke(`${Ra}/list?${r}`,{headers:ze()});if(!c.ok)throw new Error(`获取表情包列表失败: ${c.statusText}`);return c.json()}async function qw(n){const r=await ke(`${Ra}/${n}`,{headers:ze()});if(!r.ok)throw new Error(`获取表情包详情失败: ${r.statusText}`);return r.json()}async function Gw(n,r){const c=await ke(`${Ra}/${n}`,{method:"PATCH",headers:ze(),body:JSON.stringify(r)});if(!c.ok)throw new Error(`更新表情包失败: ${c.statusText}`);return c.json()}async function Vw(n){const r=await ke(`${Ra}/${n}`,{method:"DELETE",headers:ze()});if(!r.ok)throw new Error(`删除表情包失败: ${r.statusText}`);return r.json()}async function Fw(){const n=await ke(`${Ra}/stats/summary`,{headers:ze()});if(!n.ok)throw new Error(`获取统计数据失败: ${n.statusText}`);return n.json()}async function Qw(n){const r=await ke(`${Ra}/${n}/register`,{method:"POST",headers:ze()});if(!r.ok)throw new Error(`注册表情包失败: ${r.statusText}`);return r.json()}async function $w(n){const r=await ke(`${Ra}/${n}/ban`,{method:"POST",headers:ze()});if(!r.ok)throw new Error(`封禁表情包失败: ${r.statusText}`);return r.json()}function Vg(n){const r=localStorage.getItem("access-token");return`${Ra}/${n}/thumbnail?token=${encodeURIComponent(r||"")}`}async function Yw(n){const r=await ke(`${Ra}/batch/delete`,{method:"POST",headers:ze(),body:JSON.stringify({emoji_ids:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"批量删除失败")}return r.json()}function Xw(){return`${Ra}/upload`}function Kw(){const[n,r]=u.useState([]),[c,d]=u.useState(null),[h,x]=u.useState(!1),[f,j]=u.useState(1),[g,_]=u.useState(0),[v,k]=u.useState(20),[z,T]=u.useState("all"),[L,K]=u.useState("all"),[U,R]=u.useState("all"),[ee,V]=u.useState("usage_count"),[E,B]=u.useState("desc"),[X,w]=u.useState(null),[D,te]=u.useState(!1),[xe,be]=u.useState(!1),[ye,ve]=u.useState(!1),[pe,Ne]=u.useState(new Set),[y,q]=u.useState(!1),[H,ne]=u.useState(""),[S,me]=u.useState("medium"),[he,Q]=u.useState(!1),{toast:oe}=Bs(),ge=u.useCallback(async()=>{try{x(!0);const ie=await Hw({page:f,page_size:v,is_registered:z==="all"?void 0:z==="registered",is_banned:L==="all"?void 0:L==="banned",format:U==="all"?void 0:U,sort_by:ee,sort_order:E});r(ie.data),_(ie.total)}catch(ie){const we=ie instanceof Error?ie.message:"加载表情包列表失败";oe({title:"错误",description:we,variant:"destructive"})}finally{x(!1)}},[f,v,z,L,U,ee,E,oe]),le=async()=>{try{const ie=await Fw();d(ie.data)}catch(ie){console.error("加载统计数据失败:",ie)}};u.useEffect(()=>{ge()},[ge]),u.useEffect(()=>{le()},[]);const O=async ie=>{try{const we=await qw(ie.id);w(we.data),te(!0)}catch(we){const Ke=we instanceof Error?we.message:"加载详情失败";oe({title:"错误",description:Ke,variant:"destructive"})}},F=ie=>{w(ie),be(!0)},A=ie=>{w(ie),ve(!0)},W=async()=>{if(X)try{await Vw(X.id),oe({title:"成功",description:"表情包已删除"}),ve(!1),w(null),ge(),le()}catch(ie){const we=ie instanceof Error?ie.message:"删除失败";oe({title:"错误",description:we,variant:"destructive"})}},_e=async ie=>{try{await Qw(ie.id),oe({title:"成功",description:"表情包已注册"}),ge(),le()}catch(we){const Ke=we instanceof Error?we.message:"注册失败";oe({title:"错误",description:Ke,variant:"destructive"})}},Me=async ie=>{try{await $w(ie.id),oe({title:"成功",description:"表情包已封禁"}),ge(),le()}catch(we){const Ke=we instanceof Error?we.message:"封禁失败";oe({title:"错误",description:Ke,variant:"destructive"})}},ss=ie=>{const we=new Set(pe);we.has(ie)?we.delete(ie):we.add(ie),Ne(we)},Ie=async()=>{try{const ie=await Yw(Array.from(pe));oe({title:"批量删除完成",description:ie.message}),Ne(new Set),q(!1),ge(),le()}catch(ie){oe({title:"批量删除失败",description:ie instanceof Error?ie.message:"批量删除失败",variant:"destructive"})}},Rs=()=>{const ie=parseInt(H),we=Math.ceil(g/v);ie>=1&&ie<=we?(j(ie),ne("")):oe({title:"无效的页码",description:`请输入1-${we}之间的页码`,variant:"destructive"})},qs=c?.formats?Object.keys(c.formats):[];return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsxs("div",{className:"mb-4 sm:mb-6 flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"表情包管理"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理麦麦的表情包资源"})]}),e.jsxs(N,{onClick:()=>Q(!0),className:"gap-2",children:[e.jsx(hr,{className:"h-4 w-4"}),"上传表情包"]})]}),e.jsx(es,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[c&&e.jsxs("div",{className:"grid gap-4 grid-cols-2 lg:grid-cols-4",children:[e.jsx(Be,{children:e.jsxs(gs,{className:"pb-2",children:[e.jsx(Zs,{children:"总数"}),e.jsx(js,{className:"text-2xl",children:c.total})]})}),e.jsx(Be,{children:e.jsxs(gs,{className:"pb-2",children:[e.jsx(Zs,{children:"已注册"}),e.jsx(js,{className:"text-2xl text-green-600",children:c.registered})]})}),e.jsx(Be,{children:e.jsxs(gs,{className:"pb-2",children:[e.jsx(Zs,{children:"已封禁"}),e.jsx(js,{className:"text-2xl text-red-600",children:c.banned})]})}),e.jsx(Be,{children:e.jsxs(gs,{className:"pb-2",children:[e.jsx(Zs,{children:"未注册"}),e.jsx(js,{className:"text-2xl text-gray-600",children:c.unregistered})]})})]}),e.jsxs(Be,{children:[e.jsx(gs,{children:e.jsxs(js,{className:"flex items-center gap-2",children:[e.jsx(Lu,{className:"h-5 w-5"}),"筛选和排序"]})}),e.jsxs(bs,{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"排序方式"}),e.jsxs(Qe,{value:`${ee}-${E}`,onValueChange:ie=>{const[we,Ke]=ie.split("-");V(we),B(Ke),j(1)},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"usage_count-desc",children:"使用次数 (多→少)"}),e.jsx(ue,{value:"usage_count-asc",children:"使用次数 (少→多)"}),e.jsx(ue,{value:"register_time-desc",children:"注册时间 (新→旧)"}),e.jsx(ue,{value:"register_time-asc",children:"注册时间 (旧→新)"}),e.jsx(ue,{value:"record_time-desc",children:"记录时间 (新→旧)"}),e.jsx(ue,{value:"record_time-asc",children:"记录时间 (旧→新)"}),e.jsx(ue,{value:"last_used_time-desc",children:"最后使用 (新→旧)"}),e.jsx(ue,{value:"last_used_time-asc",children:"最后使用 (旧→新)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"注册状态"}),e.jsxs(Qe,{value:z,onValueChange:ie=>{T(ie),j(1)},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"all",children:"全部"}),e.jsx(ue,{value:"registered",children:"已注册"}),e.jsx(ue,{value:"unregistered",children:"未注册"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"封禁状态"}),e.jsxs(Qe,{value:L,onValueChange:ie=>{K(ie),j(1)},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"all",children:"全部"}),e.jsx(ue,{value:"banned",children:"已封禁"}),e.jsx(ue,{value:"unbanned",children:"未封禁"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"格式"}),e.jsxs(Qe,{value:U,onValueChange:ie=>{R(ie),j(1)},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"all",children:"全部"}),qs.map(ie=>e.jsxs(ue,{value:ie,children:[ie.toUpperCase()," (",c?.formats[ie],")"]},ie))]})]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 pt-4 border-t",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[pe.size>0&&e.jsxs("span",{className:"text-sm text-muted-foreground",children:["已选择 ",pe.size," 个表情包"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{className:"text-sm whitespace-nowrap",children:"卡片大小"}),e.jsxs(Qe,{value:S,onValueChange:ie=>me(ie),children:[e.jsx(Ge,{className:"w-24",children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"small",children:"小"}),e.jsx(ue,{value:"medium",children:"中"}),e.jsx(ue,{value:"large",children:"大"})]})]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"emoji-page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(Qe,{value:v.toString(),onValueChange:ie=>{k(parseInt(ie)),j(1),Ne(new Set)},children:[e.jsx(Ge,{id:"emoji-page-size",className:"w-20",children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"20",children:"20"}),e.jsx(ue,{value:"40",children:"40"}),e.jsx(ue,{value:"60",children:"60"}),e.jsx(ue,{value:"100",children:"100"})]})]}),pe.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>Ne(new Set),children:"取消选择"}),e.jsxs(N,{variant:"destructive",size:"sm",onClick:()=>q(!0),children:[e.jsx(ns,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]}),e.jsx("div",{className:"flex justify-end pt-4 border-t",children:e.jsxs(N,{variant:"outline",size:"sm",onClick:ge,disabled:h,children:[e.jsx(ft,{className:`h-4 w-4 mr-2 ${h?"animate-spin":""}`}),"刷新"]})})]})]}),e.jsxs(Be,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"表情包列表"}),e.jsxs(Zs,{children:["共 ",g," 个表情包,当前第 ",f," 页"]})]}),e.jsxs(bs,{children:[n.length===0?e.jsx("div",{className:"text-center py-12 text-muted-foreground",children:"暂无数据"}):e.jsx("div",{className:`grid gap-3 ${S==="small"?"grid-cols-3 sm:grid-cols-4 md:grid-cols-6 lg:grid-cols-8 xl:grid-cols-10":S==="medium"?"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 xl:grid-cols-8":"grid-cols-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5"}`,children:n.map(ie=>e.jsxs("div",{className:`group relative rounded-lg border bg-card overflow-hidden hover:ring-2 hover:ring-primary transition-all cursor-pointer ${pe.has(ie.id)?"ring-2 ring-primary bg-primary/5":""}`,onClick:()=>ss(ie.id),children:[e.jsx("div",{className:`absolute top-1 left-1 z-10 transition-opacity ${pe.has(ie.id)?"opacity-100":"opacity-0 group-hover:opacity-100"}`,children:e.jsx("div",{className:`w-5 h-5 rounded-full border-2 flex items-center justify-center ${pe.has(ie.id)?"bg-primary border-primary text-primary-foreground":"bg-background/80 border-muted-foreground/50"}`,children:pe.has(ie.id)&&e.jsx(xa,{className:"h-3 w-3"})})}),e.jsxs("div",{className:"absolute top-1 right-1 z-10 flex flex-col gap-0.5",children:[ie.is_registered&&e.jsx(Xe,{variant:"default",className:"bg-green-600 text-[10px] px-1 py-0",children:"已注册"}),ie.is_banned&&e.jsx(Xe,{variant:"destructive",className:"text-[10px] px-1 py-0",children:"已封禁"})]}),e.jsx("div",{className:`aspect-square bg-muted flex items-center justify-center overflow-hidden ${S==="small"?"p-1":S==="medium"?"p-2":"p-3"}`,children:e.jsx("img",{src:Vg(ie.id),alt:"表情包",className:"w-full h-full object-contain",loading:"lazy",onError:we=>{const Ke=we.target;Ke.style.display="none";const Le=Ke.parentElement;Le&&(Le.innerHTML='')}})}),e.jsxs("div",{className:`border-t bg-card ${S==="small"?"p-1":"p-2"}`,children:[e.jsxs("div",{className:"flex items-center justify-between gap-1 text-xs text-muted-foreground mb-1",children:[e.jsx(Xe,{variant:"outline",className:"text-[10px] px-1 py-0",children:ie.format.toUpperCase()}),e.jsxs("span",{className:"font-mono",children:[ie.usage_count,"次"]})]}),e.jsxs("div",{className:`flex gap-1 justify-center opacity-0 group-hover:opacity-100 transition-opacity ${S==="small"?"flex-wrap":""}`,children:[e.jsx(N,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:we=>{we.stopPropagation(),F(ie)},title:"编辑",children:e.jsx(pr,{className:"h-3 w-3"})}),e.jsx(N,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:we=>{we.stopPropagation(),O(ie)},title:"详情",children:e.jsx(Xt,{className:"h-3 w-3"})}),!ie.is_registered&&e.jsx(N,{variant:"ghost",size:"icon",className:"h-6 w-6 text-green-600 hover:text-green-700",onClick:we=>{we.stopPropagation(),_e(ie)},title:"注册",children:e.jsx(xa,{className:"h-3 w-3"})}),!ie.is_banned&&e.jsx(N,{variant:"ghost",size:"icon",className:"h-6 w-6 text-orange-600 hover:text-orange-700",onClick:we=>{we.stopPropagation(),Me(ie)},title:"封禁",children:e.jsx(UN,{className:"h-3 w-3"})}),e.jsx(N,{variant:"ghost",size:"icon",className:"h-6 w-6 text-red-600 hover:text-red-700",onClick:we=>{we.stopPropagation(),A(ie)},title:"删除",children:e.jsx(ns,{className:"h-3 w-3"})})]})]})]},ie.id))}),g>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["显示 ",(f-1)*v+1," 到"," ",Math.min(f*v,g)," 条,共 ",g," 条"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(wr,{className:"h-4 w-4"})}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>j(ie=>Math.max(1,ie-1)),disabled:f===1,children:[e.jsx(cn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:H,onChange:ie=>ne(ie.target.value),onKeyDown:ie=>ie.key==="Enter"&&Rs(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(g/v)}),e.jsx(N,{variant:"outline",size:"sm",onClick:Rs,disabled:!H,className:"h-8",children:"跳转"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>j(ie=>ie+1),disabled:f>=Math.ceil(g/v),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(il,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(g/v)),disabled:f>=Math.ceil(g/v),className:"hidden sm:flex",children:e.jsx(_r,{className:"h-4 w-4"})})]})]})]})]}),e.jsx(Zw,{emoji:X,open:D,onOpenChange:te}),e.jsx(Iw,{emoji:X,open:xe,onOpenChange:be,onSuccess:()=>{ge(),le()}}),e.jsx(Jw,{open:he,onOpenChange:Q,onSuccess:()=>{ge(),le()}})]})}),e.jsx(ps,{open:y,onOpenChange:q,children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认批量删除"}),e.jsxs(ms,{children:["你确定要删除选中的 ",pe.size," 个表情包吗?此操作不可撤销。"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:Ie,children:"确认删除"})]})]})}),e.jsx(Os,{open:ye,onOpenChange:ve,children:e.jsxs(Es,{children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"确认删除"}),e.jsx($s,{children:"确定要删除这个表情包吗?此操作无法撤销。"})]}),e.jsxs(Is,{children:[e.jsx(N,{variant:"outline",onClick:()=>ve(!1),children:"取消"}),e.jsx(N,{variant:"destructive",onClick:W,children:"删除"})]})]})})]})}function Zw({emoji:n,open:r,onOpenChange:c}){if(!n)return null;const d=h=>h?new Date(h*1e3).toLocaleString("zh-CN"):"-";return e.jsx(Os,{open:r,onOpenChange:c,children:e.jsxs(Es,{className:"max-w-2xl max-h-[90vh]",children:[e.jsx(zs,{children:e.jsx(Ms,{children:"表情包详情"})}),e.jsx(es,{className:"max-h-[calc(90vh-8rem)] pr-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"flex justify-center",children:e.jsx("div",{className:"w-32 h-32 bg-muted rounded-lg flex items-center justify-center overflow-hidden",children:e.jsx("img",{src:Vg(n.id),alt:n.description||"表情包",className:"w-full h-full object-cover",onError:h=>{const x=h.target;x.style.display="none";const f=x.parentElement;f&&(f.innerHTML='')}})})}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"ID"}),e.jsx("div",{className:"mt-1 font-mono",children:n.id})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"格式"}),e.jsx("div",{className:"mt-1",children:e.jsx(Xe,{variant:"outline",children:n.format.toUpperCase()})})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"文件路径"}),e.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:n.full_path})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"哈希值"}),e.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:n.emoji_hash})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"描述"}),n.description?e.jsx("div",{className:"mt-1 rounded-lg border bg-muted/50 p-3",children:e.jsx(Bw,{className:"prose-sm",children:n.description})}):e.jsx("div",{className:"mt-1 text-sm text-muted-foreground",children:"-"})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"情绪"}),e.jsx("div",{className:"mt-1",children:n.emotion?e.jsx("span",{className:"text-sm",children:n.emotion}):e.jsx("span",{className:"text-sm text-muted-foreground",children:"-"})})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"状态"}),e.jsxs("div",{className:"mt-2 flex gap-2",children:[n.is_registered&&e.jsx(Xe,{variant:"default",className:"bg-green-600",children:"已注册"}),n.is_banned&&e.jsx(Xe,{variant:"destructive",children:"已封禁"}),!n.is_registered&&!n.is_banned&&e.jsx(Xe,{variant:"outline",children:"未注册"})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"使用次数"}),e.jsx("div",{className:"mt-1 font-mono text-lg",children:n.usage_count})]})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"记录时间"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.record_time)})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"注册时间"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.register_time)})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"最后使用"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.last_used_time)})]})]})})]})})}function Iw({emoji:n,open:r,onOpenChange:c,onSuccess:d}){const[h,x]=u.useState(""),[f,j]=u.useState(!1),[g,_]=u.useState(!1),[v,k]=u.useState(!1),{toast:z}=Bs();u.useEffect(()=>{n&&(x(n.emotion||""),j(n.is_registered),_(n.is_banned))},[n]);const T=async()=>{if(n)try{k(!0);const L=h.split(/[,,]/).map(K=>K.trim()).filter(Boolean).join(",");await Gw(n.id,{emotion:L||void 0,is_registered:f,is_banned:g}),z({title:"成功",description:"表情包信息已更新"}),c(!1),d()}catch(L){const K=L instanceof Error?L.message:"保存失败";z({title:"错误",description:K,variant:"destructive"})}finally{k(!1)}};return n?e.jsx(Os,{open:r,onOpenChange:c,children:e.jsxs(Es,{className:"max-w-2xl",children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"编辑表情包"}),e.jsx($s,{children:"修改表情包的情绪和状态信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(b,{children:"情绪"}),e.jsx(Us,{value:h,onChange:L=>x(L.target.value),placeholder:"输入情绪描述...",rows:2,className:"mt-1"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"输入情绪相关的文本描述"})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(yt,{id:"is_registered",checked:f,onCheckedChange:L=>{L===!0?(j(!0),_(!1)):j(!1)}}),e.jsx(b,{htmlFor:"is_registered",className:"cursor-pointer",children:"已注册"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(yt,{id:"is_banned",checked:g,onCheckedChange:L=>{L===!0?(_(!0),j(!1)):_(!1)}}),e.jsx(b,{htmlFor:"is_banned",className:"cursor-pointer",children:"已封禁"})]})]})]}),e.jsxs(Is,{children:[e.jsx(N,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(N,{onClick:T,disabled:v,children:v?"保存中...":"保存"})]})]})}):null}function Jw({open:n,onOpenChange:r,onSuccess:c}){const[d,h]=u.useState("select"),[x,f]=u.useState([]),[j,g]=u.useState(null),[_,v]=u.useState(!1),{toast:k}=Bs(),z=u.useMemo(()=>new yb({id:"emoji-uploader",autoProceed:!1,restrictions:{maxFileSize:10485760,allowedFileTypes:["image/jpeg","image/png","image/gif","image/webp"],maxNumberOfFiles:20},locale:{pluralize:()=>0,strings:{addMoreFiles:"添加更多文件",addingMoreFiles:"正在添加更多文件",allowedFileTypes:"允许的文件类型:%{types}",cancel:"取消",closeModal:"关闭",complete:"完成",connectedToInternet:"已连接到互联网",copyLink:"复制链接",copyLinkToClipboardFallback:"复制下方链接",copyLinkToClipboardSuccess:"链接已复制到剪贴板",dashboardTitle:"选择文件",dashboardWindowTitle:"文件选择窗口(按 ESC 关闭)",done:"完成",dropHereOr:"拖放文件到这里或 %{browse}",dropHint:"将文件拖放到此处",dropPasteFiles:"将文件拖放到这里或 %{browseFiles}",dropPasteFolders:"将文件拖放到这里或 %{browseFolders}",dropPasteBoth:"将文件拖放到这里,%{browseFiles} 或 %{browseFolders}",dropPasteImportFiles:"将文件拖放到这里,%{browseFiles} 或从以下位置导入:",dropPasteImportFolders:"将文件拖放到这里,%{browseFolders} 或从以下位置导入:",dropPasteImportBoth:"将文件拖放到这里,%{browseFiles},%{browseFolders} 或从以下位置导入:",editFile:"编辑文件",editing:"正在编辑 %{file}",emptyFolderAdded:"未从空文件夹添加文件",exceedsSize:"%{file} 超过了最大允许大小 %{size}",failedToUpload:"上传 %{file} 失败",fileSource:"文件来源:%{name}",filesUploadedOfTotal:{0:"已上传 %{complete} / %{smart_count} 个文件",1:"已上传 %{complete} / %{smart_count} 个文件"},filter:"筛选",finishEditingFile:"完成编辑文件",folderAdded:{0:"已从 %{folder} 添加 %{smart_count} 个文件",1:"已从 %{folder} 添加 %{smart_count} 个文件"},generatingThumbnails:"正在生成缩略图...",import:"导入",importFiles:"从以下位置导入文件:",importFrom:"从 %{name} 导入",loading:"加载中...",logOut:"登出",myDevice:"我的设备",noFilesFound:"这里没有文件或文件夹",noInternetConnection:"无网络连接",openFolderNamed:"打开文件夹 %{name}",pause:"暂停",pauseUpload:"暂停上传",paused:"已暂停",poweredBy:"技术支持:%{uppy}",processingXFiles:{0:"正在处理 %{smart_count} 个文件",1:"正在处理 %{smart_count} 个文件"},recording:"录制中",removeFile:"移除文件",resetFilter:"重置筛选",resume:"继续",resumeUpload:"继续上传",retry:"重试",retryUpload:"重试上传",save:"保存",saveChanges:"保存更改",selectFileNamed:"选择文件 %{name}",selectX:{0:"选择 %{smart_count}",1:"选择 %{smart_count}"},smile:"笑一个!",startRecording:"开始录制视频",stopRecording:"停止录制视频",takePicture:"拍照",timedOut:"上传已停滞 %{seconds} 秒,正在中止。",upload:"下一步",uploadComplete:"上传完成",uploadFailed:"上传失败",uploadPaused:"上传已暂停",uploadXFiles:{0:"下一步(%{smart_count} 个文件)",1:"下一步(%{smart_count} 个文件)"},uploadXNewFiles:{0:"下一步(+%{smart_count} 个文件)",1:"下一步(+%{smart_count} 个文件)"},uploading:"正在上传",uploadingXFiles:{0:"正在上传 %{smart_count} 个文件",1:"正在上传 %{smart_count} 个文件"},xFilesSelected:{0:"已选择 %{smart_count} 个文件",1:"已选择 %{smart_count} 个文件"},xMoreFilesAdded:{0:"又添加了 %{smart_count} 个文件",1:"又添加了 %{smart_count} 个文件"},xTimeLeft:"剩余 %{time}",youCanOnlyUploadFileTypes:"您只能上传:%{types}",youCanOnlyUploadX:{0:"您只能上传 %{smart_count} 个文件",1:"您只能上传 %{smart_count} 个文件"},youHaveToAtLeastSelectX:{0:"您至少需要选择 %{smart_count} 个文件",1:"您至少需要选择 %{smart_count} 个文件"},browseFiles:"浏览文件",browseFolders:"浏览文件夹",cancelUpload:"取消上传",addMore:"添加更多",back:"返回",editFileWithFilename:"编辑文件 %{file}"}}}),[]);u.useEffect(()=>{const X=()=>{const w=z.getFiles();if(w.length===0)return;const D=w.map(te=>({id:te.id,name:te.name,previewUrl:te.preview||URL.createObjectURL(te.data),emotion:"",description:"",isRegistered:!0,file:te.data}));f(D),w.length===1?(g(D[0].id),h("edit-single")):h("edit-multiple")};return z.on("upload",X),()=>{z.off("upload",X)}},[z]),u.useEffect(()=>{n||(z.cancelAll(),h("select"),f([]),g(null),v(!1))},[n,z]);const T=u.useCallback((X,w)=>{f(D=>D.map(te=>te.id===X?{...te,...w}:te))},[]),L=u.useCallback(X=>X.emotion.trim().length>0,[]),K=u.useMemo(()=>x.length>0&&x.every(L),[x,L]),U=u.useMemo(()=>x.find(X=>X.id===j)||null,[x,j]),R=u.useCallback(()=>{(d==="edit-single"||d==="edit-multiple")&&(h("select"),f([]),g(null))},[d]),ee=u.useCallback(async()=>{if(!K){k({title:"请填写必填项",description:"每个表情包的情感标签都是必填的",variant:"destructive"});return}v(!0);const X=localStorage.getItem("access-token")||"";let w=0,D=0;try{for(const te of x){const xe=new FormData;xe.append("file",te.file),xe.append("emotion",te.emotion),xe.append("description",te.description),xe.append("is_registered",te.isRegistered.toString());try{(await fetch(Xw(),{method:"POST",headers:{Authorization:`Bearer ${X}`},body:xe})).ok?w++:D++}catch{D++}}D===0?(k({title:"上传成功",description:`成功上传 ${w} 个表情包`}),r(!1),c()):(k({title:"部分上传失败",description:`成功 ${w} 个,失败 ${D} 个`,variant:"destructive"}),c())}finally{v(!1)}},[K,x,k,r,c]),V=()=>e.jsx("div",{className:"space-y-4",children:e.jsx("div",{className:"border rounded-lg overflow-hidden w-full",children:e.jsx(Lw,{uppy:z,proudlyDisplayPoweredByUppy:!1,hideProgressDetails:!0,height:350,width:"100%",theme:"auto",note:"支持 JPG、PNG、GIF、WebP 格式,最多 20 个文件"})})}),E=()=>{const X=x[0];return X?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs(N,{variant:"ghost",size:"sm",onClick:R,children:[e.jsx(ti,{className:"h-4 w-4 mr-1"}),"返回"]}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"编辑表情包信息"})]}),e.jsxs("div",{className:"flex gap-6",children:[e.jsxs("div",{className:"flex-shrink-0",children:[e.jsx("div",{className:"w-32 h-32 rounded-lg border overflow-hidden bg-muted flex items-center justify-center",children:e.jsx("img",{src:X.previewUrl,alt:X.name,className:"max-w-full max-h-full object-contain"})}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2 text-center truncate max-w-32",children:X.name})]}),e.jsxs("div",{className:"flex-1 space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"single-emotion",children:["情感标签 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"single-emotion",value:X.emotion,onChange:w=>T(X.id,{emotion:w.target.value}),placeholder:"多个标签用逗号分隔,如:开心,高兴",className:X.emotion.trim()?"":"border-destructive"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"用于情感匹配,多个标签用逗号分隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"single-description",children:"描述"}),e.jsx(ce,{id:"single-description",value:X.description,onChange:w=>T(X.id,{description:w.target.value}),placeholder:"输入表情包描述..."})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(yt,{id:"single-is-registered",checked:X.isRegistered,onCheckedChange:w=>T(X.id,{isRegistered:w===!0})}),e.jsx(b,{htmlFor:"single-is-registered",className:"cursor-pointer",children:"上传后立即注册(可被麦麦使用)"})]})]})]}),e.jsx(Is,{children:e.jsx(N,{onClick:ee,disabled:!K||_,children:_?"上传中...":"上传"})})]}):null},B=()=>{const X=x.filter(L).length,w=x.length;return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs(N,{variant:"ghost",size:"sm",onClick:R,children:[e.jsx(ti,{className:"h-4 w-4 mr-1"}),"返回"]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["编辑表情包信息(",X,"/",w," 已完成)"]})]}),e.jsx(Xe,{variant:K?"default":"secondary",children:K?e.jsxs(e.Fragment,{children:[e.jsx(ha,{className:"h-3 w-3 mr-1"}),"全部完成"]}):e.jsxs(e.Fragment,{children:[e.jsx(li,{className:"h-3 w-3 mr-1"}),"未完成"]})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(es,{className:"h-[350px] pr-2",children:e.jsx("div",{className:"space-y-2",children:x.map(D=>{const te=L(D),xe=j===D.id;return e.jsxs("div",{onClick:()=>g(D.id),className:` + flex items-center gap-3 p-3 rounded-lg border-2 cursor-pointer transition-all + ${xe?"ring-2 ring-primary":""} + ${te?"border-green-500 bg-green-50 dark:bg-green-950/20":"border-border hover:border-muted-foreground/50"} + `,children:[e.jsx("div",{className:"w-12 h-12 rounded border overflow-hidden bg-muted flex-shrink-0 flex items-center justify-center",children:e.jsx("img",{src:D.previewUrl,alt:D.name,className:"max-w-full max-h-full object-contain"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm font-medium truncate",children:D.name}),e.jsx("p",{className:"text-xs text-muted-foreground truncate",children:D.emotion||"未填写情感标签"})]}),te?e.jsx(xa,{className:"h-5 w-5 text-green-500 flex-shrink-0"}):e.jsx("div",{className:"h-5 w-5 rounded-full border-2 border-muted-foreground/30 flex-shrink-0"})]},D.id)})})}),e.jsx("div",{className:"border rounded-lg p-4",children:U?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-16 h-16 rounded border overflow-hidden bg-muted flex items-center justify-center",children:e.jsx("img",{src:U.previewUrl,alt:U.name,className:"max-w-full max-h-full object-contain"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium truncate",children:U.name}),L(U)&&e.jsxs(Xe,{variant:"outline",className:"text-green-600 border-green-600",children:[e.jsx(ha,{className:"h-3 w-3 mr-1"}),"已完成"]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"multi-emotion",children:["情感标签 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"multi-emotion",value:U.emotion,onChange:D=>T(U.id,{emotion:D.target.value}),placeholder:"多个标签用逗号分隔,如:开心,高兴",className:U.emotion.trim()?"":"border-destructive"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"multi-description",children:"描述"}),e.jsx(ce,{id:"multi-description",value:U.description,onChange:D=>T(U.id,{description:D.target.value}),placeholder:"输入表情包描述..."})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(yt,{id:"multi-is-registered",checked:U.isRegistered,onCheckedChange:D=>T(U.id,{isRegistered:D===!0})}),e.jsx(b,{htmlFor:"multi-is-registered",className:"cursor-pointer text-sm",children:"上传后立即注册"})]})]}):e.jsx("div",{className:"h-full flex items-center justify-center text-muted-foreground",children:e.jsxs("div",{className:"text-center",children:[e.jsx(BN,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),e.jsx("p",{children:"点击左侧卡片编辑"})]})})})]}),e.jsx(Is,{children:e.jsx(N,{onClick:ee,disabled:!K||_,children:_?"上传中...":`上传全部 (${w})`})})]})};return e.jsx(Os,{open:n,onOpenChange:r,children:e.jsxs(Es,{className:"max-w-3xl max-h-[90vh] overflow-hidden",children:[e.jsxs(zs,{children:[e.jsxs(Ms,{className:"flex items-center gap-2",children:[e.jsx(hr,{className:"h-5 w-5"}),d==="select"&&"上传表情包 - 选择文件",d==="edit-single"&&"上传表情包 - 填写信息",d==="edit-multiple"&&"上传表情包 - 批量编辑"]}),e.jsxs($s,{children:[d==="select"&&"支持 JPG、PNG、GIF、WebP 格式,单个文件最大 10MB,可同时上传多个文件",d==="edit-single"&&"请填写表情包的情感标签(必填)和描述",d==="edit-multiple"&&"点击左侧卡片编辑每个表情包的信息,情感标签为必填项"]})]}),e.jsxs("div",{className:"overflow-y-auto pr-1",children:[d==="select"&&V(),d==="edit-single"&&E(),d==="edit-multiple"&&B()]})]})})}const Bl="/api/webui/expression";async function Pw(){const n=await ke(`${Bl}/chats`,{headers:ze()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取聊天列表失败")}return n.json()}async function Ww(n){const r=new URLSearchParams;n.page&&r.append("page",n.page.toString()),n.page_size&&r.append("page_size",n.page_size.toString()),n.search&&r.append("search",n.search),n.chat_id&&r.append("chat_id",n.chat_id);const c=await ke(`${Bl}/list?${r}`,{headers:ze()});if(!c.ok){const d=await c.json();throw new Error(d.detail||"获取表达方式列表失败")}return c.json()}async function e1(n){const r=await ke(`${Bl}/${n}`,{headers:ze()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"获取表达方式详情失败")}return r.json()}async function s1(n){const r=await ke(`${Bl}/`,{method:"POST",headers:ze(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"创建表达方式失败")}return r.json()}async function t1(n,r){const c=await ke(`${Bl}/${n}`,{method:"PATCH",headers:ze(),body:JSON.stringify(r)});if(!c.ok){const d=await c.json();throw new Error(d.detail||"更新表达方式失败")}return c.json()}async function a1(n){const r=await ke(`${Bl}/${n}`,{method:"DELETE",headers:ze()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"删除表达方式失败")}return r.json()}async function l1(n){const r=await ke(`${Bl}/batch/delete`,{method:"POST",headers:ze(),body:JSON.stringify({ids:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"批量删除表达方式失败")}return r.json()}async function n1(){const n=await ke(`${Bl}/stats/summary`,{headers:ze()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取统计数据失败")}return n.json()}function i1(){const[n,r]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(0),[f,j]=u.useState(1),[g,_]=u.useState(20),[v,k]=u.useState(""),[z,T]=u.useState(null),[L,K]=u.useState(!1),[U,R]=u.useState(!1),[ee,V]=u.useState(!1),[E,B]=u.useState(null),[X,w]=u.useState(new Set),[D,te]=u.useState(!1),[xe,be]=u.useState(""),[ye,ve]=u.useState({total:0,recent_7days:0,chat_count:0,top_chats:{}}),[pe,Ne]=u.useState([]),[y,q]=u.useState(new Map),{toast:H}=Bs(),ne=async()=>{try{d(!0);const W=await Ww({page:f,page_size:g,search:v||void 0});r(W.data),x(W.total)}catch(W){H({title:"加载失败",description:W instanceof Error?W.message:"无法加载表达方式",variant:"destructive"})}finally{d(!1)}},S=async()=>{try{const W=await n1();W?.data&&ve(W.data)}catch(W){console.error("加载统计数据失败:",W)}},me=async()=>{try{const W=await Pw();if(W?.data){Ne(W.data);const _e=new Map;W.data.forEach(Me=>{_e.set(Me.chat_id,Me.chat_name)}),q(_e)}}catch(W){console.error("加载聊天列表失败:",W)}},he=W=>y.get(W)||W;u.useEffect(()=>{ne(),S(),me()},[f,g,v]);const Q=async W=>{try{const _e=await e1(W.id);T(_e.data),K(!0)}catch(_e){H({title:"加载详情失败",description:_e instanceof Error?_e.message:"无法加载表达方式详情",variant:"destructive"})}},oe=W=>{T(W),R(!0)},ge=async W=>{try{await a1(W.id),H({title:"删除成功",description:`已删除表达方式: ${W.situation}`}),B(null),ne(),S()}catch(_e){H({title:"删除失败",description:_e instanceof Error?_e.message:"无法删除表达方式",variant:"destructive"})}},le=W=>{const _e=new Set(X);_e.has(W)?_e.delete(W):_e.add(W),w(_e)},O=()=>{X.size===n.length&&n.length>0?w(new Set):w(new Set(n.map(W=>W.id)))},F=async()=>{try{await l1(Array.from(X)),H({title:"批量删除成功",description:`已删除 ${X.size} 个表达方式`}),w(new Set),te(!1),ne(),S()}catch(W){H({title:"批量删除失败",description:W instanceof Error?W.message:"无法批量删除表达方式",variant:"destructive"})}},A=()=>{const W=parseInt(xe),_e=Math.ceil(h/g);W>=1&&W<=_e?(j(W),be("")):H({title:"无效的页码",description:`请输入1-${_e}之间的页码`,variant:"destructive"})};return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsx("div",{className:"mb-4 sm:mb-6",children:e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[e.jsx(si,{className:"h-8 w-8",strokeWidth:2}),"表达方式管理"]}),e.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦的表达方式和话术模板"})]}),e.jsxs(N,{onClick:()=>V(!0),className:"gap-2",children:[e.jsx(gt,{className:"h-4 w-4"}),"新增表达方式"]})]})}),e.jsx(es,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"总数量"}),e.jsx("div",{className:"text-2xl font-bold mt-1",children:ye.total})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"近7天新增"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:ye.recent_7days})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"关联聊天数"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-blue-600",children:ye.chat_count})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx(b,{htmlFor:"search",children:"搜索"}),e.jsx("div",{className:"flex flex-col sm:flex-row gap-2 mt-1.5",children:e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(St,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{id:"search",placeholder:"搜索情境、风格或上下文...",value:v,onChange:W=>k(W.target.value),className:"pl-9"})]})}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[e.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:X.size>0&&e.jsxs("span",{children:["已选择 ",X.size," 个表达方式"]})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(Qe,{value:g.toString(),onValueChange:W=>{_(parseInt(W)),j(1),w(new Set)},children:[e.jsx(Ge,{id:"page-size",className:"w-20",children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"10",children:"10"}),e.jsx(ue,{value:"20",children:"20"}),e.jsx(ue,{value:"50",children:"50"}),e.jsx(ue,{value:"100",children:"100"})]})]}),X.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>w(new Set),children:"取消选择"}),e.jsxs(N,{variant:"destructive",size:"sm",onClick:()=>te(!0),children:[e.jsx(ns,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card",children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(ii,{children:[e.jsx(ri,{children:e.jsxs(pt,{children:[e.jsx(ls,{className:"w-12",children:e.jsx(yt,{checked:X.size===n.length&&n.length>0,onCheckedChange:O})}),e.jsx(ls,{children:"情境"}),e.jsx(ls,{children:"风格"}),e.jsx(ls,{children:"聊天"}),e.jsx(ls,{className:"text-right",children:"操作"})]})}),e.jsx(ci,{children:c?e.jsx(pt,{children:e.jsx(Ye,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):n.length===0?e.jsx(pt,{children:e.jsx(Ye,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):n.map(W=>e.jsxs(pt,{children:[e.jsx(Ye,{children:e.jsx(yt,{checked:X.has(W.id),onCheckedChange:()=>le(W.id)})}),e.jsx(Ye,{className:"font-medium max-w-xs truncate",children:W.situation}),e.jsx(Ye,{className:"max-w-xs truncate",children:W.style}),e.jsx(Ye,{className:"max-w-[200px] truncate",title:he(W.chat_id),style:{wordBreak:"keep-all"},children:e.jsx("span",{className:"whitespace-nowrap overflow-hidden text-ellipsis block",children:he(W.chat_id)})}),e.jsx(Ye,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(N,{variant:"default",size:"sm",onClick:()=>oe(W),children:[e.jsx(pr,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsx(N,{variant:"outline",size:"icon",className:"h-8 w-8",onClick:()=>Q(W),title:"查看详情",children:e.jsx(Zt,{className:"h-4 w-4"})}),e.jsxs(N,{size:"sm",onClick:()=>B(W),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(ns,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},W.id))})]})}),e.jsx("div",{className:"md:hidden space-y-3 p-4",children:c?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):n.length===0?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):n.map(W=>e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(yt,{checked:X.has(W.id),onCheckedChange:()=>le(W.id),className:"mt-1"}),e.jsxs("div",{className:"min-w-0 flex-1 overflow-hidden space-y-2",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"情境"}),e.jsx("h3",{className:"font-semibold text-sm line-clamp-2 w-full break-all",title:W.situation,children:W.situation})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"风格"}),e.jsx("p",{className:"text-sm line-clamp-2 w-full break-all",title:W.style,children:W.style})]})]})]}),e.jsxs("div",{className:"text-sm",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"聊天"}),e.jsx("p",{className:"text-sm truncate",title:he(W.chat_id),style:{wordBreak:"keep-all"},children:he(W.chat_id)})]}),e.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>oe(W),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(pr,{className:"h-3 w-3 mr-1"}),"编辑"]}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>Q(W),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:e.jsx(Zt,{className:"h-3 w-3"})}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>B(W),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[e.jsx(ns,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},W.id))}),h>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",h," 条记录,第 ",f," / ",Math.ceil(h/g)," 页"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(wr,{className:"h-4 w-4"})}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>j(f-1),disabled:f===1,children:[e.jsx(cn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:xe,onChange:W=>be(W.target.value),onKeyDown:W=>W.key==="Enter"&&A(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(h/g)}),e.jsx(N,{variant:"outline",size:"sm",onClick:A,disabled:!xe,className:"h-8",children:"跳转"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>j(f+1),disabled:f>=Math.ceil(h/g),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(il,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(h/g)),disabled:f>=Math.ceil(h/g),className:"hidden sm:flex",children:e.jsx(_r,{className:"h-4 w-4"})})]})]})]})]})}),e.jsx(r1,{expression:z,open:L,onOpenChange:K,chatNameMap:y}),e.jsx(c1,{open:ee,onOpenChange:V,chatList:pe,onSuccess:()=>{ne(),S(),V(!1)}}),e.jsx(o1,{expression:z,open:U,onOpenChange:R,chatList:pe,onSuccess:()=>{ne(),S(),R(!1)}}),e.jsx(ps,{open:!!E,onOpenChange:()=>B(null),children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:['确定要删除表达方式 "',E?.situation,'" 吗? 此操作不可撤销。']})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>E&&ge(E),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),e.jsx(d1,{open:D,onOpenChange:te,onConfirm:F,count:X.size})]})}function r1({expression:n,open:r,onOpenChange:c,chatNameMap:d}){if(!n)return null;const h=f=>f?new Date(f*1e3).toLocaleString("zh-CN"):"-",x=f=>d.get(f)||f;return e.jsx(Os,{open:r,onOpenChange:c,children:e.jsxs(Es,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"表达方式详情"}),e.jsx($s,{children:"查看表达方式的完整信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(nr,{label:"情境",value:n.situation}),e.jsx(nr,{label:"风格",value:n.style}),e.jsx(nr,{label:"聊天",value:x(n.chat_id)}),e.jsx(nr,{icon:Uu,label:"记录ID",value:n.id.toString(),mono:!0})]}),e.jsx("div",{className:"grid grid-cols-2 gap-4",children:e.jsx(nr,{icon:Wn,label:"创建时间",value:h(n.create_date)})})]}),e.jsx(Is,{children:e.jsx(N,{onClick:()=>c(!1),children:"关闭"})})]})})}function nr({icon:n,label:r,value:c,mono:d=!1}){return e.jsxs("div",{className:"space-y-1",children:[e.jsxs(b,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[n&&e.jsx(n,{className:"h-3 w-3"}),r]}),e.jsx("div",{className:$("text-sm",d&&"font-mono",!c&&"text-muted-foreground"),children:c||"-"})]})}function c1({open:n,onOpenChange:r,chatList:c,onSuccess:d}){const[h,x]=u.useState({situation:"",style:"",chat_id:""}),[f,j]=u.useState(!1),{toast:g}=Bs(),_=async()=>{if(!h.situation||!h.style||!h.chat_id){g({title:"验证失败",description:"请填写必填字段:情境、风格和聊天",variant:"destructive"});return}try{j(!0),await s1(h),g({title:"创建成功",description:"表达方式已创建"}),x({situation:"",style:"",chat_id:""}),d()}catch(v){g({title:"创建失败",description:v instanceof Error?v.message:"无法创建表达方式",variant:"destructive"})}finally{j(!1)}};return e.jsx(Os,{open:n,onOpenChange:r,children:e.jsxs(Es,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"新增表达方式"}),e.jsx($s,{children:"创建新的表达方式记录"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"situation",children:["情境 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"situation",value:h.situation,onChange:v=>x({...h,situation:v.target.value}),placeholder:"描述使用场景"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"style",children:["风格 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"style",value:h.style,onChange:v=>x({...h,style:v.target.value}),placeholder:"描述表达风格"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"chat_id",children:["聊天 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsxs(Qe,{value:h.chat_id,onValueChange:v=>x({...h,chat_id:v}),children:[e.jsx(Ge,{children:e.jsx($e,{placeholder:"选择关联的聊天"})}),e.jsx(Ve,{children:c.map(v=>e.jsx(ue,{value:v.chat_id,children:e.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[v.chat_name,v.is_group&&e.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},v.chat_id))})]})]})]}),e.jsxs(Is,{children:[e.jsx(N,{variant:"outline",onClick:()=>r(!1),children:"取消"}),e.jsx(N,{onClick:_,disabled:f,children:f?"创建中...":"创建"})]})]})})}function o1({expression:n,open:r,onOpenChange:c,chatList:d,onSuccess:h}){const[x,f]=u.useState({}),[j,g]=u.useState(!1),{toast:_}=Bs();u.useEffect(()=>{n&&f({situation:n.situation,style:n.style,chat_id:n.chat_id})},[n]);const v=async()=>{if(n)try{g(!0),await t1(n.id,x),_({title:"保存成功",description:"表达方式已更新"}),h()}catch(k){_({title:"保存失败",description:k instanceof Error?k.message:"无法更新表达方式",variant:"destructive"})}finally{g(!1)}};return n?e.jsx(Os,{open:r,onOpenChange:c,children:e.jsxs(Es,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"编辑表达方式"}),e.jsx($s,{children:"修改表达方式的信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit_situation",children:"情境"}),e.jsx(ce,{id:"edit_situation",value:x.situation||"",onChange:k=>f({...x,situation:k.target.value}),placeholder:"描述使用场景"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit_style",children:"风格"}),e.jsx(ce,{id:"edit_style",value:x.style||"",onChange:k=>f({...x,style:k.target.value}),placeholder:"描述表达风格"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit_chat_id",children:"聊天"}),e.jsxs(Qe,{value:x.chat_id||"",onValueChange:k=>f({...x,chat_id:k}),children:[e.jsx(Ge,{children:e.jsx($e,{placeholder:"选择关联的聊天"})}),e.jsx(Ve,{children:d.map(k=>e.jsx(ue,{value:k.chat_id,children:e.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[k.chat_name,k.is_group&&e.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},k.chat_id))})]})]})]}),e.jsxs(Is,{children:[e.jsx(N,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(N,{onClick:v,disabled:j,children:j?"保存中...":"保存"})]})]})}):null}function d1({open:n,onOpenChange:r,onConfirm:c,count:d}){return e.jsx(ps,{open:n,onOpenChange:r,children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认批量删除"}),e.jsxs(ms,{children:["您即将删除 ",d," 个表达方式,此操作无法撤销。确定要继续吗?"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:c,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认删除"})]})]})})}const oi="/api/webui/person";async function u1(n){const r=new URLSearchParams;n.page&&r.append("page",n.page.toString()),n.page_size&&r.append("page_size",n.page_size.toString()),n.search&&r.append("search",n.search),n.is_known!==void 0&&r.append("is_known",n.is_known.toString()),n.platform&&r.append("platform",n.platform);const c=await ke(`${oi}/list?${r}`,{headers:ze()});if(!c.ok){const d=await c.json();throw new Error(d.detail||"获取人物列表失败")}return c.json()}async function m1(n){const r=await ke(`${oi}/${n}`,{headers:ze()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"获取人物详情失败")}return r.json()}async function h1(n,r){const c=await ke(`${oi}/${n}`,{method:"PATCH",headers:ze(),body:JSON.stringify(r)});if(!c.ok){const d=await c.json();throw new Error(d.detail||"更新人物信息失败")}return c.json()}async function x1(n){const r=await ke(`${oi}/${n}`,{method:"DELETE",headers:ze()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"删除人物信息失败")}return r.json()}async function f1(){const n=await ke(`${oi}/stats/summary`,{headers:ze()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取统计数据失败")}return n.json()}async function p1(n){const r=await ke(`${oi}/batch/delete`,{method:"POST",headers:ze(),body:JSON.stringify({person_ids:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"批量删除失败")}return r.json()}function g1(){const[n,r]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(0),[f,j]=u.useState(1),[g,_]=u.useState(20),[v,k]=u.useState(""),[z,T]=u.useState(void 0),[L,K]=u.useState(void 0),[U,R]=u.useState(null),[ee,V]=u.useState(!1),[E,B]=u.useState(!1),[X,w]=u.useState(null),[D,te]=u.useState({total:0,known:0,unknown:0,platforms:{}}),[xe,be]=u.useState(new Set),[ye,ve]=u.useState(!1),[pe,Ne]=u.useState(""),{toast:y}=Bs(),q=async()=>{try{d(!0);const A=await u1({page:f,page_size:g,search:v||void 0,is_known:z,platform:L});r(A.data),x(A.total)}catch(A){y({title:"加载失败",description:A instanceof Error?A.message:"无法加载人物信息",variant:"destructive"})}finally{d(!1)}},H=async()=>{try{const A=await f1();A?.data&&te(A.data)}catch(A){console.error("加载统计数据失败:",A)}};u.useEffect(()=>{q(),H()},[f,g,v,z,L]);const ne=async A=>{try{const W=await m1(A.person_id);R(W.data),V(!0)}catch(W){y({title:"加载详情失败",description:W instanceof Error?W.message:"无法加载人物详情",variant:"destructive"})}},S=A=>{R(A),B(!0)},me=async A=>{try{await x1(A.person_id),y({title:"删除成功",description:`已删除人物信息: ${A.person_name||A.nickname||A.user_id}`}),w(null),q(),H()}catch(W){y({title:"删除失败",description:W instanceof Error?W.message:"无法删除人物信息",variant:"destructive"})}},he=u.useMemo(()=>Object.keys(D.platforms),[D.platforms]),Q=A=>{const W=new Set(xe);W.has(A)?W.delete(A):W.add(A),be(W)},oe=()=>{xe.size===n.length&&n.length>0?be(new Set):be(new Set(n.map(A=>A.person_id)))},ge=()=>{if(xe.size===0){y({title:"未选择任何人物",description:"请先选择要删除的人物",variant:"destructive"});return}ve(!0)},le=async()=>{try{const A=await p1(Array.from(xe));y({title:"批量删除完成",description:A.message}),be(new Set),ve(!1),q(),H()}catch(A){y({title:"批量删除失败",description:A instanceof Error?A.message:"批量删除失败",variant:"destructive"})}},O=()=>{const A=parseInt(pe),W=Math.ceil(h/g);A>=1&&A<=W?(j(A),Ne("")):y({title:"无效的页码",description:`请输入1-${W}之间的页码`,variant:"destructive"})},F=A=>A?new Date(A*1e3).toLocaleString("zh-CN"):"-";return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsx("div",{className:"mb-4 sm:mb-6",children:e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[e.jsx(HN,{className:"h-8 w-8",strokeWidth:2}),"人物信息管理"]}),e.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦认识的所有人物信息"})]})})}),e.jsx(es,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"总人数"}),e.jsx("div",{className:"text-2xl font-bold mt-1",children:D.total})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"已认识"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:D.known})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"未认识"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-muted-foreground",children:D.unknown})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-4 gap-4",children:[e.jsxs("div",{className:"sm:col-span-2",children:[e.jsx(b,{htmlFor:"search",children:"搜索"}),e.jsxs("div",{className:"relative mt-1.5",children:[e.jsx(St,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{id:"search",placeholder:"搜索名称、昵称或用户ID...",value:v,onChange:A=>k(A.target.value),className:"pl-9"})]})]}),e.jsxs("div",{children:[e.jsx(b,{htmlFor:"filter-known",children:"认识状态"}),e.jsxs(Qe,{value:z===void 0?"all":z.toString(),onValueChange:A=>{T(A==="all"?void 0:A==="true"),j(1)},children:[e.jsx(Ge,{id:"filter-known",className:"mt-1.5",children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"all",children:"全部"}),e.jsx(ue,{value:"true",children:"已认识"}),e.jsx(ue,{value:"false",children:"未认识"})]})]})]}),e.jsxs("div",{children:[e.jsx(b,{htmlFor:"filter-platform",children:"平台"}),e.jsxs(Qe,{value:L||"all",onValueChange:A=>{K(A==="all"?void 0:A),j(1)},children:[e.jsx(Ge,{id:"filter-platform",className:"mt-1.5",children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"all",children:"全部平台"}),he.map(A=>e.jsxs(ue,{value:A,children:[A," (",D.platforms[A],")"]},A))]})]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[e.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:xe.size>0&&e.jsxs("span",{children:["已选择 ",xe.size," 个人物"]})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(Qe,{value:g.toString(),onValueChange:A=>{_(parseInt(A)),j(1),be(new Set)},children:[e.jsx(Ge,{id:"page-size",className:"w-20",children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"10",children:"10"}),e.jsx(ue,{value:"20",children:"20"}),e.jsx(ue,{value:"50",children:"50"}),e.jsx(ue,{value:"100",children:"100"})]})]}),xe.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>be(new Set),children:"取消选择"}),e.jsxs(N,{variant:"destructive",size:"sm",onClick:ge,children:[e.jsx(ns,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card",children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(ii,{children:[e.jsx(ri,{children:e.jsxs(pt,{children:[e.jsx(ls,{className:"w-12",children:e.jsx(yt,{checked:n.length>0&&xe.size===n.length,onCheckedChange:oe,"aria-label":"全选"})}),e.jsx(ls,{children:"状态"}),e.jsx(ls,{children:"名称"}),e.jsx(ls,{children:"昵称"}),e.jsx(ls,{children:"平台"}),e.jsx(ls,{children:"用户ID"}),e.jsx(ls,{children:"最后更新"}),e.jsx(ls,{className:"text-right",children:"操作"})]})}),e.jsx(ci,{children:c?e.jsx(pt,{children:e.jsx(Ye,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):n.length===0?e.jsx(pt,{children:e.jsx(Ye,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):n.map(A=>e.jsxs(pt,{children:[e.jsx(Ye,{children:e.jsx(yt,{checked:xe.has(A.person_id),onCheckedChange:()=>Q(A.person_id),"aria-label":`选择 ${A.person_name||A.nickname||A.user_id}`})}),e.jsx(Ye,{children:e.jsx("div",{className:$("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium",A.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:A.is_known?"已认识":"未认识"})}),e.jsx(Ye,{className:"font-medium",children:A.person_name||e.jsx("span",{className:"text-muted-foreground",children:"-"})}),e.jsx(Ye,{children:A.nickname||"-"}),e.jsx(Ye,{children:A.platform}),e.jsx(Ye,{className:"font-mono text-sm",children:A.user_id}),e.jsx(Ye,{className:"text-sm text-muted-foreground",children:F(A.last_know)}),e.jsx(Ye,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(N,{variant:"default",size:"sm",onClick:()=>ne(A),children:[e.jsx(Zt,{className:"h-4 w-4 mr-1"}),"详情"]}),e.jsxs(N,{variant:"default",size:"sm",onClick:()=>S(A),children:[e.jsx(pr,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsxs(N,{size:"sm",onClick:()=>w(A),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(ns,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},A.id))})]})}),e.jsx("div",{className:"md:hidden space-y-3 p-4",children:c?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):n.length===0?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):n.map(A=>e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(yt,{checked:xe.has(A.person_id),onCheckedChange:()=>Q(A.person_id),className:"mt-1"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:$("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium mb-2",A.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:A.is_known?"已认识":"未认识"}),e.jsx("h3",{className:"font-semibold text-sm line-clamp-1 w-full break-all",children:A.person_name||e.jsx("span",{className:"text-muted-foreground",children:"未命名"})}),A.nickname&&e.jsxs("p",{className:"text-xs text-muted-foreground mt-1 line-clamp-1 w-full break-all",children:["昵称: ",A.nickname]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"平台"}),e.jsx("p",{className:"font-medium text-xs",children:A.platform})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"用户ID"}),e.jsx("p",{className:"font-mono text-xs truncate",title:A.user_id,children:A.user_id})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"最后更新"}),e.jsx("p",{className:"text-xs",children:F(A.last_know)})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>ne(A),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(Zt,{className:"h-3 w-3 mr-1"}),"查看"]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>S(A),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(pr,{className:"h-3 w-3 mr-1"}),"编辑"]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>w(A),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[e.jsx(ns,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},A.id))}),h>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",h," 条记录,第 ",f," / ",Math.ceil(h/g)," 页"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(wr,{className:"h-4 w-4"})}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>j(f-1),disabled:f===1,children:[e.jsx(cn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:pe,onChange:A=>Ne(A.target.value),onKeyDown:A=>A.key==="Enter"&&O(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(h/g)}),e.jsx(N,{variant:"outline",size:"sm",onClick:O,disabled:!pe,className:"h-8",children:"跳转"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>j(f+1),disabled:f>=Math.ceil(h/g),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(il,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(h/g)),disabled:f>=Math.ceil(h/g),className:"hidden sm:flex",children:e.jsx(_r,{className:"h-4 w-4"})})]})]})]})]})}),e.jsx(j1,{person:U,open:ee,onOpenChange:V}),e.jsx(v1,{person:U,open:E,onOpenChange:B,onSuccess:()=>{q(),H(),B(!1)}}),e.jsx(ps,{open:!!X,onOpenChange:()=>w(null),children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:['确定要删除人物信息 "',X?.person_name||X?.nickname||X?.user_id,'" 吗? 此操作不可撤销。']})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>X&&me(X),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),e.jsx(ps,{open:ye,onOpenChange:ve,children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认批量删除"}),e.jsxs(ms,{children:["确定要删除选中的 ",xe.size," 个人物信息吗? 此操作不可撤销。"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:le,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})})]})}function j1({person:n,open:r,onOpenChange:c}){if(!n)return null;const d=h=>h?new Date(h*1e3).toLocaleString("zh-CN"):"-";return e.jsx(Os,{open:r,onOpenChange:c,children:e.jsxs(Es,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"人物详情"}),e.jsxs($s,{children:["查看 ",n.person_name||n.nickname||n.user_id," 的完整信息"]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(al,{icon:to,label:"人物名称",value:n.person_name}),e.jsx(al,{icon:si,label:"昵称",value:n.nickname}),e.jsx(al,{icon:Uu,label:"用户ID",value:n.user_id,mono:!0}),e.jsx(al,{icon:Uu,label:"人物ID",value:n.person_id,mono:!0}),e.jsx(al,{label:"平台",value:n.platform}),e.jsx(al,{label:"状态",value:n.is_known?"已认识":"未认识"})]}),n.name_reason&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(b,{className:"text-xs text-muted-foreground",children:"名称设定原因"}),e.jsx("p",{className:"mt-1 text-sm",children:n.name_reason})]}),n.memory_points&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(b,{className:"text-xs text-muted-foreground",children:"个人印象"}),e.jsx("p",{className:"mt-1 text-sm whitespace-pre-wrap",children:n.memory_points})]}),n.group_nick_name&&n.group_nick_name.length>0&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(b,{className:"text-xs text-muted-foreground",children:"群昵称"}),e.jsx("div",{className:"mt-2 space-y-1",children:n.group_nick_name.map((h,x)=>e.jsxs("div",{className:"text-sm flex items-center gap-2",children:[e.jsx("span",{className:"font-mono text-xs text-muted-foreground",children:h.group_id}),e.jsx("span",{children:"→"}),e.jsx("span",{children:h.group_nick_name})]},x))})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsx(al,{icon:Wn,label:"认识时间",value:d(n.know_times)}),e.jsx(al,{icon:Wn,label:"首次记录",value:d(n.know_since)}),e.jsx(al,{icon:Wn,label:"最后更新",value:d(n.last_know)})]})]}),e.jsx(Is,{children:e.jsx(N,{onClick:()=>c(!1),children:"关闭"})})]})})}function al({icon:n,label:r,value:c,mono:d=!1}){return e.jsxs("div",{className:"space-y-1",children:[e.jsxs(b,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[n&&e.jsx(n,{className:"h-3 w-3"}),r]}),e.jsx("div",{className:$("text-sm",d&&"font-mono",!c&&"text-muted-foreground"),children:c||"-"})]})}function v1({person:n,open:r,onOpenChange:c,onSuccess:d}){const[h,x]=u.useState({}),[f,j]=u.useState(!1),{toast:g}=Bs();u.useEffect(()=>{n&&x({person_name:n.person_name||"",name_reason:n.name_reason||"",nickname:n.nickname||"",memory_points:n.memory_points||"",is_known:n.is_known})},[n]);const _=async()=>{if(n)try{j(!0),await h1(n.person_id,h),g({title:"保存成功",description:"人物信息已更新"}),d()}catch(v){g({title:"保存失败",description:v instanceof Error?v.message:"无法更新人物信息",variant:"destructive"})}finally{j(!1)}};return n?e.jsx(Os,{open:r,onOpenChange:c,children:e.jsxs(Es,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"编辑人物信息"}),e.jsxs($s,{children:["修改 ",n.person_name||n.nickname||n.user_id," 的信息"]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"person_name",children:"人物名称"}),e.jsx(ce,{id:"person_name",value:h.person_name||"",onChange:v=>x({...h,person_name:v.target.value}),placeholder:"为这个人设置一个名称"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"nickname",children:"昵称"}),e.jsx(ce,{id:"nickname",value:h.nickname||"",onChange:v=>x({...h,nickname:v.target.value}),placeholder:"昵称"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"name_reason",children:"名称设定原因"}),e.jsx(Us,{id:"name_reason",value:h.name_reason||"",onChange:v=>x({...h,name_reason:v.target.value}),placeholder:"为什么这样称呼这个人?",rows:2})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"memory_points",children:"个人印象"}),e.jsx(Us,{id:"memory_points",value:h.memory_points||"",onChange:v=>x({...h,memory_points:v.target.value}),placeholder:"对这个人的印象和记忆点...",rows:4})]}),e.jsxs("div",{className:"flex items-center justify-between rounded-lg border p-3",children:[e.jsxs("div",{children:[e.jsx(b,{htmlFor:"is_known",className:"text-base font-medium",children:"已认识"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"标记是否已经认识这个人"})]}),e.jsx(qe,{id:"is_known",checked:h.is_known,onCheckedChange:v=>x({...h,is_known:v})})]})]}),e.jsxs(Is,{children:[e.jsx(N,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(N,{onClick:_,disabled:f,children:f?"保存中...":"保存"})]})]})}):null}var y1=Sb();const xp=wy(y1),Pu="/api/webui";async function N1(n=100,r="all"){const c=`${Pu}/knowledge/graph?limit=${n}&node_type=${r}`,d=await fetch(c);if(!d.ok)throw new Error(`获取知识图谱失败: ${d.status}`);return d.json()}async function b1(){const n=await fetch(`${Pu}/knowledge/stats`);if(!n.ok)throw new Error("获取知识图谱统计信息失败");return n.json()}async function w1(n){const r=await fetch(`${Pu}/knowledge/search?query=${encodeURIComponent(n)}`);if(!r.ok)throw new Error("搜索知识节点失败");return r.json()}const Fg=u.memo(({data:n})=>e.jsxs("div",{className:"px-4 py-2 shadow-md rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700 min-w-[120px]",children:[e.jsx(lo,{type:"target",position:no.Top}),e.jsx("div",{className:"font-semibold text-white text-sm truncate max-w-[200px]",title:n.content,children:n.label}),e.jsx(lo,{type:"source",position:no.Bottom})]}));Fg.displayName="EntityNode";const Qg=u.memo(({data:n})=>e.jsxs("div",{className:"px-3 py-2 shadow-md rounded-md bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700 min-w-[100px]",children:[e.jsx(lo,{type:"target",position:no.Top}),e.jsx("div",{className:"font-medium text-white text-xs truncate max-w-[150px]",title:n.content,children:n.label}),e.jsx(lo,{type:"source",position:no.Bottom})]}));Qg.displayName="ParagraphNode";const _1={entity:Fg,paragraph:Qg};function S1(n,r){const c=new xp.graphlib.Graph;c.setDefaultEdgeLabel(()=>({})),c.setGraph({rankdir:"TB",ranksep:100,nodesep:80});const d=[],h=[];return n.forEach(x=>{c.setNode(x.id,{width:150,height:50})}),r.forEach(x=>{c.setEdge(x.source,x.target)}),xp.layout(c),n.forEach(x=>{const f=c.node(x.id);d.push({id:x.id,type:x.type,position:{x:f.x-75,y:f.y-25},data:{label:x.content.slice(0,20)+(x.content.length>20?"...":""),content:x.content}})}),r.forEach((x,f)=>{const j={id:`edge-${f}`,source:x.source,target:x.target,animated:n.length<=200&&x.weight>5,style:{strokeWidth:Math.min(x.weight/2,5),opacity:.6}};x.weight>10&&n.length<100&&(j.label=`${x.weight.toFixed(0)}`),h.push(j)}),{nodes:d,edges:h}}function C1(){const n=It(),[r,c]=u.useState(!1),[d,h]=u.useState(null),[x,f]=u.useState(""),[j,g]=u.useState("all"),[_,v]=u.useState(50),[k,z]=u.useState("50"),[T,L]=u.useState(!1),[K,U]=u.useState(!0),[R,ee]=u.useState(!1),[V,E]=u.useState(!1),[B,X,w]=Cb([]),[D,te,xe]=kb([]),[be,ye]=u.useState(0),[ve,pe]=u.useState(null),[Ne,y]=u.useState(null),{toast:q}=Bs(),H=u.useCallback(le=>le.type==="entity"?"#6366f1":le.type==="paragraph"?"#10b981":"#6b7280",[]),ne=u.useCallback(async(le=!1)=>{try{if(!le&&_>200){E(!0);return}c(!0);const[O,F]=await Promise.all([N1(_,j),b1()]);if(h(F),O.nodes.length===0){q({title:"提示",description:"知识库为空,请先导入知识数据"}),X([]),te([]);return}const{nodes:A,edges:W}=S1(O.nodes,O.edges);X(A),te(W),ye(A.length),F&&F.total_nodes>_&&q({title:"提示",description:`知识图谱包含 ${F.total_nodes} 个节点,当前显示 ${A.length} 个`}),q({title:"加载成功",description:`已加载 ${A.length} 个节点,${W.length} 条边`})}catch(O){console.error("加载知识图谱失败:",O),q({title:"加载失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}finally{c(!1)}},[_,j,q]),S=u.useCallback(async()=>{if(!x.trim()){q({title:"提示",description:"请输入搜索关键词"});return}try{const le=await w1(x);if(le.length===0){q({title:"未找到",description:"没有找到匹配的节点"});return}const O=new Set(le.map(F=>F.id));X(F=>F.map(A=>({...A,style:{...A.style,opacity:O.has(A.id)?1:.3,filter:O.has(A.id)?"brightness(1.2)":"brightness(0.8)"}}))),q({title:"搜索完成",description:`找到 ${le.length} 个匹配节点`})}catch(le){console.error("搜索失败:",le),q({title:"搜索失败",description:le instanceof Error?le.message:"未知错误",variant:"destructive"})}},[x,q]),me=u.useCallback(()=>{X(le=>le.map(O=>({...O,style:{...O.style,opacity:1,filter:"brightness(1)"}})))},[]),he=u.useCallback(()=>{U(!1),ee(!0),ne()},[ne]),Q=u.useCallback(()=>{E(!1),setTimeout(()=>{ne(!0)},0)},[ne]),oe=u.useCallback((le,O)=>{B.find(A=>A.id===O.id)&&pe({id:O.id,type:O.type,content:O.data.content})},[B]);u.useEffect(()=>{K||R&&ne()},[_,j,K,R]);const ge=u.useCallback((le,O)=>{const F=B.find(_e=>_e.id===O.source),A=B.find(_e=>_e.id===O.target),W=D.find(_e=>_e.id===O.id);F&&A&&W&&y({source:{id:F.id,type:F.type,content:F.data.content},target:{id:A.id,type:A.type,content:A.data.content},edge:{source:O.source,target:O.target,weight:parseFloat(O.label||"0")}})},[B,D]);return e.jsxs("div",{className:"h-full flex flex-col",children:[e.jsxs("div",{className:"flex-shrink-0 p-4 border-b bg-background",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦知识库图谱"}),e.jsx("p",{className:"text-muted-foreground mt-1",children:"可视化知识实体与关系网络"})]}),d&&e.jsxs("div",{className:"flex gap-2 flex-wrap",children:[e.jsxs(Xe,{variant:"outline",className:"gap-1",children:[e.jsx(eo,{className:"h-3 w-3"}),"节点: ",d.total_nodes]}),e.jsxs(Xe,{variant:"outline",className:"gap-1",children:[e.jsx(jg,{className:"h-3 w-3"}),"边: ",d.total_edges]}),e.jsxs(Xe,{variant:"outline",className:"gap-1",children:[e.jsx(Xt,{className:"h-3 w-3"}),"实体: ",d.entity_nodes]}),e.jsxs(Xe,{variant:"outline",className:"gap-1",children:[e.jsx(Ma,{className:"h-3 w-3"}),"段落: ",d.paragraph_nodes]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 mt-4",children:[e.jsxs("div",{className:"flex-1 flex gap-2",children:[e.jsx(ce,{placeholder:"搜索节点内容...",value:x,onChange:le=>f(le.target.value),onKeyDown:le=>le.key==="Enter"&&S(),className:"flex-1"}),e.jsx(N,{onClick:S,size:"sm",children:e.jsx(St,{className:"h-4 w-4"})}),e.jsx(N,{onClick:me,variant:"outline",size:"sm",children:"重置"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(Qe,{value:j,onValueChange:le=>g(le),children:[e.jsx(Ge,{className:"w-[120px]",children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"all",children:"全部节点"}),e.jsx(ue,{value:"entity",children:"仅实体"}),e.jsx(ue,{value:"paragraph",children:"仅段落"})]})]}),e.jsxs(Qe,{value:_===1e4?"all":T?"custom":_.toString(),onValueChange:le=>{le==="custom"?(L(!0),z(_.toString())):le==="all"?(L(!1),v(1e4)):(L(!1),v(Number(le)))},children:[e.jsx(Ge,{className:"w-[120px]",children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"50",children:"50 节点"}),e.jsx(ue,{value:"100",children:"100 节点"}),e.jsx(ue,{value:"200",children:"200 节点"}),e.jsx(ue,{value:"500",children:"500 节点"}),e.jsx(ue,{value:"1000",children:"1000 节点"}),e.jsx(ue,{value:"all",children:"全部 (最多10000)"}),e.jsx(ue,{value:"custom",children:"自定义..."})]})]}),T&&e.jsx(ce,{type:"number",min:"50",value:k,onChange:le=>z(le.target.value),onBlur:()=>{const le=parseInt(k);!isNaN(le)&&le>=50?v(le):(z("50"),v(50))},onKeyDown:le=>{if(le.key==="Enter"){const O=parseInt(k);!isNaN(O)&&O>=50?v(O):(z("50"),v(50))}},placeholder:"最少50个",className:"w-[120px]"}),e.jsx(N,{onClick:()=>ne(),variant:"outline",size:"sm",disabled:r,children:e.jsx(ft,{className:$("h-4 w-4",r&&"animate-spin")})})]})]})]}),e.jsx("div",{className:"flex-1 relative",children:r?e.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx(ft,{className:"h-8 w-8 animate-spin mx-auto mb-2 text-muted-foreground"}),e.jsx("p",{className:"text-muted-foreground",children:"加载知识图谱中..."})]})}):B.length===0?e.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx(eo,{className:"h-12 w-12 mx-auto mb-4 text-muted-foreground"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"知识库为空"}),e.jsx("p",{className:"text-muted-foreground",children:"请先导入知识数据"})]})}):e.jsxs(Tb,{nodes:B,edges:D,onNodesChange:w,onEdgesChange:xe,onNodeClick:oe,onEdgeClick:ge,nodeTypes:_1,fitView:!0,minZoom:.05,maxZoom:1.5,defaultViewport:{x:0,y:0,zoom:.5},elevateNodesOnSelect:be<=500,nodesDraggable:be<=1e3,attributionPosition:"bottom-left",children:[e.jsx(Eb,{variant:zb.Dots,gap:12,size:1}),e.jsx(Mb,{}),be<=500&&e.jsx(Ab,{nodeColor:H,nodeBorderRadius:8,pannable:!0,zoomable:!0}),e.jsxs(Db,{position:"top-right",className:"bg-background/95 backdrop-blur-sm rounded-lg border p-3 shadow-lg",children:[e.jsx("div",{className:"text-sm font-semibold mb-2",children:"图例"}),e.jsxs("div",{className:"space-y-2 text-xs",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700"}),e.jsx("span",{children:"实体节点"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700"}),e.jsx("span",{children:"段落节点"})]}),be>200&&e.jsxs("div",{className:"mt-2 pt-2 border-t text-yellow-600 dark:text-yellow-500",children:[e.jsx("div",{className:"font-semibold",children:"性能模式"}),e.jsx("div",{children:"已禁用动画"}),be>500&&e.jsx("div",{children:"已禁用缩略图"})]})]})]})]})}),e.jsx(Os,{open:!!ve,onOpenChange:le=>!le&&pe(null),children:e.jsxs(Es,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsx(zs,{children:e.jsx(Ms,{children:"节点详情"})}),ve&&e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"grid grid-cols-2 gap-4",children:e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"类型"}),e.jsx("div",{className:"mt-1",children:e.jsx(Xe,{variant:ve.type==="entity"?"default":"secondary",children:ve.type==="entity"?"🏷️ 实体":"📄 段落"})})]})}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"ID"}),e.jsx("code",{className:"mt-1 block p-2 bg-muted rounded text-xs break-all",children:ve.id})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"内容"}),e.jsx(es,{className:"mt-1 h-40 p-3 bg-muted rounded",children:e.jsx("p",{className:"text-sm whitespace-pre-wrap",children:ve.content})})]})]})]})}),e.jsx(Os,{open:!!Ne,onOpenChange:le=>!le&&y(null),children:e.jsxs(Es,{className:"max-w-2xl max-h-[80vh] overflow-hidden flex flex-col",children:[e.jsx(zs,{children:e.jsx(Ms,{children:"边详情"})}),Ne&&e.jsx(es,{className:"flex-1 pr-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-blue-50 dark:bg-blue-950 rounded border-2 border-blue-200 dark:border-blue-800",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"源节点"}),e.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:Ne.source.content}),e.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[Ne.source.id.slice(0,40),"..."]})]}),e.jsx("div",{className:"text-2xl text-muted-foreground flex-shrink-0",children:"→"}),e.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-green-50 dark:bg-green-950 rounded border-2 border-green-200 dark:border-green-800",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"目标节点"}),e.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:Ne.target.content}),e.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[Ne.target.id.slice(0,40),"..."]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"权重"}),e.jsx("div",{className:"mt-1",children:e.jsx(Xe,{variant:"outline",className:"text-base font-mono",children:Ne.edge.weight.toFixed(4)})})]})]})})]})}),e.jsx(ps,{open:K,onOpenChange:U,children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"加载知识图谱"}),e.jsxs(ms,{children:["知识图谱的动态展示会消耗较多系统资源。",e.jsx("br",{}),"确定要加载知识图谱吗?"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{onClick:()=>n({to:"/"}),children:"取消 (返回首页)"}),e.jsx(hs,{onClick:he,children:"确认加载"})]})]})}),e.jsx(ps,{open:V,onOpenChange:E,children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"⚠️ 节点数量较多"}),e.jsx(ms,{asChild:!0,children:e.jsxs("div",{children:[e.jsxs("p",{children:["您正在尝试加载 ",e.jsx("strong",{className:"text-orange-600",children:_>=1e4?"全部 (最多10000个)":_})," 个节点。"]}),e.jsx("p",{className:"mt-4",children:"节点数量过多可能导致:"}),e.jsxs("ul",{className:"list-disc list-inside mt-2 space-y-1",children:[e.jsx("li",{children:"页面加载时间较长"}),e.jsx("li",{children:"浏览器卡顿或崩溃"}),e.jsx("li",{children:"系统资源占用过高"})]}),e.jsx("p",{className:"mt-4",children:"建议先选择较少的节点数量 (50-200 个)。"})]})})]}),e.jsxs(ds,{children:[e.jsx(xs,{onClick:()=>{E(!1),_>200&&(v(50),L(!1))},children:"取消"}),e.jsx(hs,{onClick:Q,className:"bg-orange-600 hover:bg-orange-700",children:"我了解风险,继续加载"})]})]})})]})}function fp({className:n,classNames:r,showOutsideDays:c=!0,captionLayout:d="label",buttonVariant:h="ghost",formatters:x,components:f,...j}){const g=bg();return e.jsx(rb,{showOutsideDays:c,className:$("bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,n),captionLayout:d,formatters:{formatMonthDropdown:_=>_.toLocaleString("default",{month:"short"}),...x},classNames:{root:$("w-fit",g.root),months:$("relative flex flex-col gap-4 md:flex-row",g.months),month:$("flex w-full flex-col gap-4",g.month),nav:$("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",g.nav),button_previous:$(gr({variant:h}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",g.button_previous),button_next:$(gr({variant:h}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",g.button_next),month_caption:$("flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]",g.month_caption),dropdowns:$("flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium",g.dropdowns),dropdown_root:$("has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border",g.dropdown_root),dropdown:$("bg-popover absolute inset-0 opacity-0",g.dropdown),caption_label:$("select-none font-medium",d==="label"?"text-sm":"[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5",g.caption_label),table:"w-full border-collapse",weekdays:$("flex",g.weekdays),weekday:$("text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal",g.weekday),week:$("mt-2 flex w-full",g.week),week_number_header:$("w-[--cell-size] select-none",g.week_number_header),week_number:$("text-muted-foreground select-none text-[0.8rem]",g.week_number),day:$("group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md",g.day),range_start:$("bg-accent rounded-l-md",g.range_start),range_middle:$("rounded-none",g.range_middle),range_end:$("bg-accent rounded-r-md",g.range_end),today:$("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",g.today),outside:$("text-muted-foreground aria-selected:text-muted-foreground",g.outside),disabled:$("text-muted-foreground opacity-50",g.disabled),hidden:$("invisible",g.hidden),...r},components:{Root:({className:_,rootRef:v,...k})=>e.jsx("div",{"data-slot":"calendar",ref:v,className:$(_),...k}),Chevron:({className:_,orientation:v,...k})=>v==="left"?e.jsx(cn,{className:$("size-4",_),...k}):v==="right"?e.jsx(il,{className:$("size-4",_),...k}):e.jsx(Ll,{className:$("size-4",_),...k}),DayButton:k1,WeekNumber:({children:_,...v})=>e.jsx("td",{...v,children:e.jsx("div",{className:"flex size-[--cell-size] items-center justify-center text-center",children:_})}),...f},...j})}function k1({className:n,day:r,modifiers:c,...d}){const h=bg(),x=u.useRef(null);return u.useEffect(()=>{c.focused&&x.current?.focus()},[c.focused]),e.jsx(N,{ref:x,variant:"ghost",size:"icon","data-day":r.date.toLocaleDateString(),"data-selected-single":c.selected&&!c.range_start&&!c.range_end&&!c.range_middle,"data-range-start":c.range_start,"data-range-end":c.range_end,"data-range-middle":c.range_middle,className:$("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70",h.day,n),...d})}const T1={lessThanXSeconds:{one:"不到 1 秒",other:"不到 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分钟",lessThanXMinutes:{one:"不到 1 分钟",other:"不到 {{count}} 分钟"},xMinutes:{one:"1 分钟",other:"{{count}} 分钟"},xHours:{one:"1 小时",other:"{{count}} 小时"},aboutXHours:{one:"大约 1 小时",other:"大约 {{count}} 小时"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大约 1 个星期",other:"大约 {{count}} 个星期"},xWeeks:{one:"1 个星期",other:"{{count}} 个星期"},aboutXMonths:{one:"大约 1 个月",other:"大约 {{count}} 个月"},xMonths:{one:"1 个月",other:"{{count}} 个月"},aboutXYears:{one:"大约 1 年",other:"大约 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超过 1 年",other:"超过 {{count}} 年"},almostXYears:{one:"将近 1 年",other:"将近 {{count}} 年"}},E1=(n,r,c)=>{let d;const h=T1[n];return typeof h=="string"?d=h:r===1?d=h.one:d=h.other.replace("{{count}}",String(r)),c?.addSuffix?c.comparison&&c.comparison>0?d+"内":d+"前":d},z1={full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},M1={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},A1={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},D1={date:wu({formats:z1,defaultWidth:"full"}),time:wu({formats:M1,defaultWidth:"full"}),dateTime:wu({formats:A1,defaultWidth:"full"})};function pp(n,r,c){const d="eeee p";return Cy(n,r,c)?d:n.getTime()>r.getTime()?"'下个'"+d:"'上个'"+d}const O1={lastWeek:pp,yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:pp,other:"PP p"},R1=(n,r,c,d)=>{const h=O1[n];return typeof h=="function"?h(r,c,d):h},L1={narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},U1={narrow:["1","2","3","4"],abbreviated:["第一季","第二季","第三季","第四季"],wide:["第一季度","第二季度","第三季度","第四季度"]},B1={narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},H1={narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["周日","周一","周二","周三","周四","周五","周六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},q1={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},G1={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},V1=(n,r)=>{const c=Number(n);switch(r?.unit){case"date":return c.toString()+"日";case"hour":return c.toString()+"时";case"minute":return c.toString()+"分";case"second":return c.toString()+"秒";default:return"第 "+c.toString()}},F1={ordinalNumber:V1,era:er({values:L1,defaultWidth:"wide"}),quarter:er({values:U1,defaultWidth:"wide",argumentCallback:n=>n-1}),month:er({values:B1,defaultWidth:"wide"}),day:er({values:H1,defaultWidth:"wide"}),dayPeriod:er({values:q1,defaultWidth:"wide",formattingValues:G1,defaultFormattingWidth:"wide"})},Q1=/^(第\s*)?\d+(日|时|分|秒)?/i,$1=/\d+/i,Y1={narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},X1={any:[/^(前)/i,/^(公元)/i]},K1={narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻钟/i},Z1={any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},I1={narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},J1={narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},P1={narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^周[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},W1={any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},e2={any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i},s2={any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},t2={ordinalNumber:ky({matchPattern:Q1,parsePattern:$1,valueCallback:n=>parseInt(n,10)}),era:sr({matchPatterns:Y1,defaultMatchWidth:"wide",parsePatterns:X1,defaultParseWidth:"any"}),quarter:sr({matchPatterns:K1,defaultMatchWidth:"wide",parsePatterns:Z1,defaultParseWidth:"any",valueCallback:n=>n+1}),month:sr({matchPatterns:I1,defaultMatchWidth:"wide",parsePatterns:J1,defaultParseWidth:"any"}),day:sr({matchPatterns:P1,defaultMatchWidth:"wide",parsePatterns:W1,defaultParseWidth:"any"}),dayPeriod:sr({matchPatterns:e2,defaultMatchWidth:"any",parsePatterns:s2,defaultParseWidth:"any"})},Qc={code:"zh-CN",formatDistance:E1,formatLong:D1,formatRelative:R1,localize:F1,match:t2,options:{weekStartsOn:1,firstWeekContainsDate:4}},$c={xs:{label:"小",rowHeight:28,class:"text-[10px] sm:text-xs"},sm:{label:"中",rowHeight:36,class:"text-xs sm:text-sm"},base:{label:"大",rowHeight:44,class:"text-sm sm:text-base"}};function a2(){const[n,r]=u.useState([]),[c,d]=u.useState(""),[h,x]=u.useState("all"),[f,j]=u.useState("all"),[g,_]=u.useState(void 0),[v,k]=u.useState(void 0),[z,T]=u.useState(!0),[L,K]=u.useState(!1),[U,R]=u.useState("xs"),[ee,V]=u.useState(4),E=u.useRef(null);u.useEffect(()=>{const y=an.getAllLogs();r(y);const q=an.onLog(()=>{r(an.getAllLogs())}),H=an.onConnectionChange(ne=>{K(ne)});return()=>{q(),H()}},[]);const B=u.useMemo(()=>{const y=new Set(n.map(q=>q.module).filter(q=>q&&q.trim()!==""));return Array.from(y).sort()},[n]),X=y=>{switch(y){case"DEBUG":return"text-muted-foreground";case"INFO":return"text-blue-500 dark:text-blue-400";case"WARNING":return"text-yellow-600 dark:text-yellow-500";case"ERROR":return"text-red-600 dark:text-red-500";case"CRITICAL":return"text-red-700 dark:text-red-400 font-bold";default:return"text-foreground"}},w=y=>{switch(y){case"DEBUG":return"bg-gray-800/30 dark:bg-gray-800/50";case"INFO":return"bg-blue-900/20 dark:bg-blue-500/20";case"WARNING":return"bg-yellow-900/20 dark:bg-yellow-500/20";case"ERROR":return"bg-red-900/20 dark:bg-red-500/20";case"CRITICAL":return"bg-red-900/30 dark:bg-red-600/30";default:return"bg-gray-800/20 dark:bg-gray-800/30"}},D=()=>{window.location.reload()},te=()=>{an.clearLogs(),r([])},xe=()=>{const y=ve.map(S=>`${S.timestamp} [${S.level.padEnd(8)}] [${S.module}] ${S.message}`).join(` +`),q=new Blob([y],{type:"text/plain;charset=utf-8"}),H=URL.createObjectURL(q),ne=document.createElement("a");ne.href=H,ne.download=`logs-${_u(new Date,"yyyy-MM-dd-HHmmss")}.txt`,ne.click(),URL.revokeObjectURL(H)},be=()=>{T(!z)},ye=()=>{_(void 0),k(void 0)},ve=u.useMemo(()=>n.filter(y=>{const q=c===""||y.message.toLowerCase().includes(c.toLowerCase())||y.module.toLowerCase().includes(c.toLowerCase()),H=h==="all"||y.level===h,ne=f==="all"||y.module===f;let S=!0;if(g||v){const me=new Date(y.timestamp);if(g){const he=new Date(g);he.setHours(0,0,0,0),S=S&&me>=he}if(v){const he=new Date(v);he.setHours(23,59,59,999),S=S&&me<=he}}return q&&H&&ne&&S}),[n,c,h,f,g,v]),pe=$c[U].rowHeight+ee,Ne=fy({count:ve.length,getScrollElement:()=>E.current,estimateSize:()=>pe,overscan:15});return u.useEffect(()=>{z&&ve.length>0&&Ne.scrollToIndex(ve.length-1,{align:"end",behavior:"auto"})},[ve.length,z,Ne]),e.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[e.jsxs("div",{className:"flex-shrink-0 space-y-4 p-3 sm:p-4 lg:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-xl sm:text-2xl lg:text-3xl font-bold",children:"日志查看器"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:"实时查看和分析麦麦运行日志"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:$("h-2.5 w-2.5 sm:h-3 sm:w-3 rounded-full",L?"bg-green-500 animate-pulse":"bg-red-500")}),e.jsx("span",{className:"text-xs sm:text-sm text-muted-foreground",children:L?"已连接":"未连接"})]})]}),e.jsx(Be,{className:"p-3 sm:p-4",children:e.jsxs("div",{className:"flex flex-col gap-3 sm:gap-4",children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:gap-4",children:[e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(St,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索日志...",value:c,onChange:y=>d(y.target.value),className:"pl-9 h-9 text-sm"})]}),e.jsxs(Qe,{value:h,onValueChange:x,children:[e.jsxs(Ge,{className:"w-full sm:w-[140px] lg:w-[180px] h-9 text-sm",children:[e.jsx(Lu,{className:"h-4 w-4 mr-2"}),e.jsx($e,{placeholder:"级别"})]}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"all",children:"全部级别"}),e.jsx(ue,{value:"DEBUG",children:"DEBUG"}),e.jsx(ue,{value:"INFO",children:"INFO"}),e.jsx(ue,{value:"WARNING",children:"WARNING"}),e.jsx(ue,{value:"ERROR",children:"ERROR"}),e.jsx(ue,{value:"CRITICAL",children:"CRITICAL"})]})]}),e.jsxs(Qe,{value:f,onValueChange:j,children:[e.jsxs(Ge,{className:"w-full sm:w-[160px] lg:w-[200px] h-9 text-sm",children:[e.jsx(Lu,{className:"h-4 w-4 mr-2"}),e.jsx($e,{placeholder:"模块"})]}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"all",children:"全部模块"}),B.map(y=>e.jsx(ue,{value:y,children:y},y))]})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:gap-4",children:[e.jsxs(Da,{children:[e.jsx(Oa,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",className:$("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!g&&"text-muted-foreground"),children:[e.jsx(Yf,{className:"mr-2 h-4 w-4"}),e.jsx("span",{className:"text-xs sm:text-sm",children:g?_u(g,"PPP",{locale:Qc}):"开始日期"})]})}),e.jsx(Na,{className:"w-auto p-0",align:"start",children:e.jsx(fp,{mode:"single",selected:g,onSelect:_,initialFocus:!0,locale:Qc})})]}),e.jsxs(Da,{children:[e.jsx(Oa,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",className:$("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!v&&"text-muted-foreground"),children:[e.jsx(Yf,{className:"mr-2 h-4 w-4"}),e.jsx("span",{className:"text-xs sm:text-sm",children:v?_u(v,"PPP",{locale:Qc}):"结束日期"})]})}),e.jsx(Na,{className:"w-auto p-0",align:"start",children:e.jsx(fp,{mode:"single",selected:v,onSelect:k,initialFocus:!0,locale:Qc})})]}),(g||v)&&e.jsxs(N,{variant:"outline",size:"sm",onClick:ye,className:"w-full sm:w-auto h-9",children:[e.jsx(li,{className:"h-4 w-4 sm:mr-2"}),e.jsx("span",{className:"hidden sm:inline text-sm",children:"清除时间筛选"}),e.jsx("span",{className:"sm:hidden text-sm",children:"清除"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center",children:[e.jsxs("div",{className:"flex gap-2 flex-wrap",children:[e.jsxs(N,{variant:z?"default":"outline",size:"sm",onClick:be,className:"flex-1 sm:flex-none h-9",children:[z?e.jsx(qN,{className:"h-4 w-4"}):e.jsx(GN,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:z?"自动滚动":"已暂停"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:D,className:"flex-1 sm:flex-none h-9",children:[e.jsx(ft,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"刷新"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:te,className:"flex-1 sm:flex-none h-9",children:[e.jsx(ns,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"清空"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:xe,className:"flex-1 sm:flex-none h-9",children:[e.jsx(nl,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"导出"})]})]}),e.jsx("div",{className:"flex-1 hidden sm:block"}),e.jsxs("div",{className:"text-xs sm:text-sm text-muted-foreground flex items-center justify-center sm:justify-end",children:[e.jsxs("span",{className:"font-mono",children:[ve.length," / ",n.length]}),e.jsx("span",{className:"ml-1",children:"条日志"})]})]}),e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-6 pt-2 border-t border-border/50",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(VN,{className:"h-4 w-4"}),e.jsx("span",{children:"字号"})]}),e.jsx("div",{className:"flex gap-1",children:Object.keys($c).map(y=>e.jsx(N,{variant:U===y?"default":"outline",size:"sm",onClick:()=>R(y),className:"h-7 px-3 text-xs",children:$c[y].label},y))})]}),e.jsxs("div",{className:"flex items-center gap-3 flex-1 max-w-xs",children:[e.jsx("span",{className:"text-sm text-muted-foreground whitespace-nowrap",children:"行距"}),e.jsx(za,{value:[ee],onValueChange:([y])=>V(y),min:0,max:12,step:2,className:"flex-1"}),e.jsxs("span",{className:"text-xs text-muted-foreground w-8",children:[ee,"px"]})]})]})]})})]}),e.jsx("div",{className:"flex-1 min-h-0 px-3 sm:px-4 lg:px-6 pb-3 sm:pb-4 lg:pb-6",children:e.jsx(Be,{className:"bg-black dark:bg-gray-950 border-gray-800 dark:border-gray-900 h-full",children:e.jsx(es,{viewportRef:E,className:"h-full",children:e.jsx("div",{className:$("p-2 sm:p-3 font-mono relative",$c[U].class),style:{height:`${Ne.getTotalSize()}px`},children:ve.length===0?e.jsx("div",{className:"text-gray-500 dark:text-gray-600 text-center py-8 text-sm",children:"暂无日志数据"}):Ne.getVirtualItems().map(y=>{const q=ve[y.index];return e.jsxs("div",{"data-index":y.index,ref:Ne.measureElement,className:$("absolute top-0 left-0 w-full px-2 sm:px-3 rounded hover:bg-white/5 transition-colors group",w(q.level)),style:{transform:`translateY(${y.start}px)`,paddingTop:`${ee/2}px`,paddingBottom:`${ee/2}px`},children:[e.jsxs("div",{className:"flex flex-col gap-0.5 sm:hidden",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-gray-500 dark:text-gray-600",children:q.timestamp}),e.jsxs("span",{className:$("font-semibold",X(q.level)),children:["[",q.level,"]"]})]}),e.jsx("div",{className:"text-cyan-400 dark:text-cyan-500 truncate",children:q.module}),e.jsx("div",{className:"text-gray-300 dark:text-gray-400 whitespace-pre-wrap break-words",children:q.message})]}),e.jsxs("div",{className:"hidden sm:flex gap-2 items-start",children:[e.jsx("span",{className:"text-gray-500 dark:text-gray-600 flex-shrink-0 w-[130px] lg:w-[160px]",children:q.timestamp}),e.jsxs("span",{className:$("flex-shrink-0 w-[65px] lg:w-[75px] font-semibold",X(q.level)),children:["[",q.level,"]"]}),e.jsx("span",{className:"text-cyan-400 dark:text-cyan-500 flex-shrink-0 w-[100px] lg:w-[130px] truncate",children:q.module}),e.jsx("span",{className:"text-gray-300 dark:text-gray-400 flex-1 whitespace-pre-wrap break-words",children:q.message})]})]},y.key)})})})})})]})}const l2="Mai-with-u",n2="plugin-repo",i2="main",r2="plugin_details.json";async function c2(){try{const n=await ke("/api/webui/plugins/fetch-raw",{method:"POST",headers:ze(),body:JSON.stringify({owner:l2,repo:n2,branch:i2,file_path:r2})});if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);const r=await n.json();if(!r.success||!r.data)throw new Error(r.error||"获取插件列表失败");return JSON.parse(r.data).filter(h=>!h?.id||!h?.manifest?(console.warn("跳过无效插件数据:",h),!1):!h.manifest.name||!h.manifest.version?(console.warn("跳过缺少必需字段的插件:",h.id),!1):!0).map(h=>({id:h.id,manifest:{manifest_version:h.manifest.manifest_version||1,name:h.manifest.name,version:h.manifest.version,description:h.manifest.description||"",author:h.manifest.author||{name:"Unknown"},license:h.manifest.license||"Unknown",host_application:h.manifest.host_application||{min_version:"0.0.0"},homepage_url:h.manifest.homepage_url,repository_url:h.manifest.repository_url,keywords:h.manifest.keywords||[],categories:h.manifest.categories||[],default_locale:h.manifest.default_locale||"zh-CN",locales_path:h.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!1,published_at:new Date().toISOString(),updated_at:new Date().toISOString()}))}catch(n){throw console.error("Failed to fetch plugin list:",n),n}}async function o2(){try{const n=await ke("/api/webui/plugins/git-status");if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);return await n.json()}catch(n){return console.error("Failed to check Git status:",n),{installed:!1,error:"无法检测 Git 安装状态"}}}async function d2(){try{const n=await ke("/api/webui/plugins/version");if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);return await n.json()}catch(n){return console.error("Failed to get Maimai version:",n),{version:"0.0.0",version_major:0,version_minor:0,version_patch:0}}}function u2(n,r,c){const d=n.split(".").map(j=>parseInt(j)||0),h=d[0]||0,x=d[1]||0,f=d[2]||0;if(c.version_majorparseInt(k)||0),g=j[0]||0,_=j[1]||0,v=j[2]||0;if(c.version_major>g||c.version_major===g&&c.version_minor>_||c.version_major===g&&c.version_minor===_&&c.version_patch>v)return!1}return!0}function m2(n,r){const c=window.location.protocol==="https:"?"wss:":"ws:",d=window.location.host,h=new WebSocket(`${c}//${d}/api/webui/ws/plugin-progress`);return h.onopen=()=>{console.log("Plugin progress WebSocket connected");const x=setInterval(()=>{h.readyState===WebSocket.OPEN?h.send("ping"):clearInterval(x)},3e4)},h.onmessage=x=>{try{if(x.data==="pong")return;const f=JSON.parse(x.data);n(f)}catch(f){console.error("Failed to parse progress data:",f)}},h.onerror=x=>{console.error("Plugin progress WebSocket error:",x),r?.(x)},h.onclose=()=>{console.log("Plugin progress WebSocket disconnected")},h}async function cr(){try{const n=await ke("/api/webui/plugins/installed",{headers:ze()});if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);const r=await n.json();if(!r.success)throw new Error(r.message||"获取已安装插件列表失败");return r.plugins||[]}catch(n){return console.error("Failed to get installed plugins:",n),[]}}function Yc(n,r){return r.some(c=>c.id===n)}function Xc(n,r){const c=r.find(d=>d.id===n);if(c)return c.manifest?.version||c.version}async function h2(n,r,c="main"){const d=await ke("/api/webui/plugins/install",{method:"POST",headers:ze(),body:JSON.stringify({plugin_id:n,repository_url:r,branch:c})});if(!d.ok){const h=await d.json();throw new Error(h.detail||"安装失败")}return await d.json()}async function x2(n){const r=await ke("/api/webui/plugins/uninstall",{method:"POST",headers:ze(),body:JSON.stringify({plugin_id:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"卸载失败")}return await r.json()}async function f2(n,r,c="main"){const d=await ke("/api/webui/plugins/update",{method:"POST",headers:ze(),body:JSON.stringify({plugin_id:n,repository_url:r,branch:c})});if(!d.ok){const h=await d.json();throw new Error(h.detail||"更新失败")}return await d.json()}async function p2(n){const r=await ke(`/api/webui/plugins/config/${n}/schema`,{headers:ze()});if(!r.ok){const d=await r.json();throw new Error(d.detail||"获取配置 Schema 失败")}const c=await r.json();if(!c.success)throw new Error(c.message||"获取配置 Schema 失败");return c.schema}async function g2(n){const r=await ke(`/api/webui/plugins/config/${n}`,{headers:ze()});if(!r.ok){const d=await r.json();throw new Error(d.detail||"获取配置失败")}const c=await r.json();if(!c.success)throw new Error(c.message||"获取配置失败");return c.config}async function j2(n,r){const c=await ke(`/api/webui/plugins/config/${n}`,{method:"PUT",headers:ze(),body:JSON.stringify({config:r})});if(!c.ok){const d=await c.json();throw new Error(d.detail||"保存配置失败")}return await c.json()}async function v2(n){const r=await ke(`/api/webui/plugins/config/${n}/reset`,{method:"POST",headers:ze()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"重置配置失败")}return await r.json()}async function y2(n){const r=await ke(`/api/webui/plugins/config/${n}/toggle`,{method:"POST",headers:ze()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"切换状态失败")}return await r.json()}const Cr="https://maibot-plugin-stats.maibot-webui.workers.dev";async function $g(n){try{const r=await fetch(`${Cr}/stats/${n}`);return r.ok?await r.json():(console.error("Failed to fetch plugin stats:",r.statusText),null)}catch(r){return console.error("Error fetching plugin stats:",r),null}}async function N2(n,r){try{const c=r||Wu(),d=await fetch(`${Cr}/stats/like`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,user_id:c})}),h=await d.json();return d.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:d.ok?{success:!0,...h}:{success:!1,error:h.error||"点赞失败"}}catch(c){return console.error("Error liking plugin:",c),{success:!1,error:"网络错误"}}}async function b2(n,r){try{const c=r||Wu(),d=await fetch(`${Cr}/stats/dislike`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,user_id:c})}),h=await d.json();return d.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:d.ok?{success:!0,...h}:{success:!1,error:h.error||"点踩失败"}}catch(c){return console.error("Error disliking plugin:",c),{success:!1,error:"网络错误"}}}async function w2(n,r,c,d){if(r<1||r>5)return{success:!1,error:"评分必须在 1-5 之间"};try{const h=d||Wu(),x=await fetch(`${Cr}/stats/rate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,rating:r,comment:c,user_id:h})}),f=await x.json();return x.status===429?{success:!1,error:"每天最多评分 3 次"}:x.ok?{success:!0,...f}:{success:!1,error:f.error||"评分失败"}}catch(h){return console.error("Error rating plugin:",h),{success:!1,error:"网络错误"}}}async function _2(n){try{const r=await fetch(`${Cr}/stats/download`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n})}),c=await r.json();return r.status===429?(console.warn("Download recording rate limited"),{success:!0}):r.ok?{success:!0,...c}:(console.error("Failed to record download:",c.error),{success:!1,error:c.error})}catch(r){return console.error("Error recording download:",r),{success:!1,error:"网络错误"}}}function S2(){const n=navigator,r=[navigator.userAgent,navigator.language,navigator.languages?.join(",")||"",navigator.platform,navigator.hardwareConcurrency||0,screen.width,screen.height,screen.colorDepth,screen.pixelDepth,new Date().getTimezoneOffset(),Intl.DateTimeFormat().resolvedOptions().timeZone,navigator.maxTouchPoints||0,n.deviceMemory||0].join("|");let c=0;for(let d=0;d{x(!0);const R=await $g(n);R&&d(R),x(!1)};u.useEffect(()=>{T()},[n]);const L=async()=>{const R=await N2(n);R.success?(z({title:"已点赞",description:"感谢你的支持!"}),T()):z({title:"点赞失败",description:R.error||"未知错误",variant:"destructive"})},K=async()=>{const R=await b2(n);R.success?(z({title:"已反馈",description:"感谢你的反馈!"}),T()):z({title:"操作失败",description:R.error||"未知错误",variant:"destructive"})},U=async()=>{if(f===0){z({title:"请选择评分",description:"至少选择 1 颗星",variant:"destructive"});return}const R=await w2(n,f,g||void 0);R.success?(z({title:"评分成功",description:"感谢你的评价!"}),k(!1),j(0),_(""),T()):z({title:"评分失败",description:R.error||"未知错误",variant:"destructive"})};return h?e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(nl,{className:"h-4 w-4"}),e.jsx("span",{children:"-"})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ol,{className:"h-4 w-4"}),e.jsx("span",{children:"-"})]})]}):c?r?e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",title:`下载量: ${c.downloads.toLocaleString()}`,children:[e.jsx(nl,{className:"h-4 w-4"}),e.jsx("span",{children:c.downloads.toLocaleString()})]}),e.jsxs("div",{className:"flex items-center gap-1",title:`评分: ${c.rating.toFixed(1)} (${c.rating_count} 条评价)`,children:[e.jsx(Ol,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsx("span",{children:c.rating.toFixed(1)})]}),e.jsxs("div",{className:"flex items-center gap-1",title:`点赞数: ${c.likes}`,children:[e.jsx(Cu,{className:"h-4 w-4"}),e.jsx("span",{children:c.likes})]})]}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-4",children:[e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(nl,{className:"h-5 w-5 text-muted-foreground mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.downloads.toLocaleString()}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"下载量"})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(Ol,{className:"h-5 w-5 text-yellow-400 mb-1 fill-yellow-400"}),e.jsx("span",{className:"text-2xl font-bold",children:c.rating.toFixed(1)}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:[c.rating_count," 条评价"]})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(Cu,{className:"h-5 w-5 text-green-500 mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.likes}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"点赞"})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(Xf,{className:"h-5 w-5 text-red-500 mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.dislikes}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"点踩"})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(N,{variant:"outline",size:"sm",onClick:L,children:[e.jsx(Cu,{className:"h-4 w-4 mr-1"}),"点赞"]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:K,children:[e.jsx(Xf,{className:"h-4 w-4 mr-1"}),"点踩"]}),e.jsxs(Os,{open:v,onOpenChange:k,children:[e.jsx(ni,{asChild:!0,children:e.jsxs(N,{variant:"default",size:"sm",children:[e.jsx(Ol,{className:"h-4 w-4 mr-1"}),"评分"]})}),e.jsxs(Es,{children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"为插件评分"}),e.jsx($s,{children:"分享你的使用体验,帮助其他用户"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"flex flex-col items-center gap-2",children:[e.jsx("div",{className:"flex gap-2",children:[1,2,3,4,5].map(R=>e.jsx("button",{onClick:()=>j(R),className:"focus:outline-none",children:e.jsx(Ol,{className:`h-8 w-8 transition-colors ${R<=f?"fill-yellow-400 text-yellow-400":"text-muted-foreground hover:text-yellow-300"}`})},R))}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[f===0&&"点击星星进行评分",f===1&&"很差",f===2&&"一般",f===3&&"还行",f===4&&"不错",f===5&&"非常好"]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium mb-2 block",children:"评论(可选)"}),e.jsx(Us,{value:g,onChange:R=>_(R.target.value),placeholder:"分享你的使用体验...",rows:4,maxLength:500}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 text-right",children:[g.length," / 500"]})]})]}),e.jsxs(Is,{children:[e.jsx(N,{variant:"outline",onClick:()=>k(!1),children:"取消"}),e.jsx(N,{onClick:U,disabled:f===0,children:"提交评分"})]})]})]})]}),c.recent_ratings&&c.recent_ratings.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"text-sm font-semibold",children:"最近评价"}),e.jsx("div",{className:"space-y-3",children:c.recent_ratings.map((R,ee)=>e.jsxs("div",{className:"p-3 rounded-lg border bg-muted/50",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("div",{className:"flex gap-1",children:[1,2,3,4,5].map(V=>e.jsx(Ol,{className:`h-3 w-3 ${V<=R.rating?"fill-yellow-400 text-yellow-400":"text-muted-foreground"}`},V))}),e.jsx("span",{className:"text-xs text-muted-foreground",children:new Date(R.created_at).toLocaleDateString()})]}),R.comment&&e.jsx("p",{className:"text-sm text-muted-foreground",children:R.comment})]},ee))})]})]}):null}const gp={"Group Management":"群组管理","Entertainment & Interaction":"娱乐互动","Utility Tools":"实用工具","Content Generation":"内容生成",Multimedia:"多媒体","External Integration":"外部集成","Data Analysis & Insights":"数据分析与洞察",Other:"其他"};function k2(){const n=It(),[r,c]=u.useState(null),[d,h]=u.useState(""),[x,f]=u.useState("all"),[j,g]=u.useState("all"),[_,v]=u.useState(!0),[k,z]=u.useState([]),[T,L]=u.useState(!0),[K,U]=u.useState(null),[R,ee]=u.useState(null),[V,E]=u.useState(null),[B,X]=u.useState(null),[,w]=u.useState([]),[D,te]=u.useState({}),{toast:xe}=Bs(),be=async S=>{const me=S.map(async oe=>{try{const ge=await $g(oe.id);return{id:oe.id,stats:ge}}catch(ge){return console.warn(`Failed to load stats for ${oe.id}:`,ge),{id:oe.id,stats:null}}}),he=await Promise.all(me),Q={};he.forEach(({id:oe,stats:ge})=>{ge&&(Q[oe]=ge)}),te(Q)};u.useEffect(()=>{let S=null,me=!1;return(async()=>{if(S=m2(Q=>{me||(E(Q),Q.stage==="success"?setTimeout(()=>{me||E(null)},2e3):Q.stage==="error"&&(L(!1),U(Q.error||"加载失败")))},Q=>{console.error("WebSocket error:",Q),me||xe({title:"WebSocket 连接失败",description:"无法实时显示加载进度",variant:"destructive"})}),await new Promise(Q=>{if(!S){Q();return}const oe=()=>{S&&S.readyState===WebSocket.OPEN?(console.log("WebSocket connected, starting to load plugins"),Q()):S&&S.readyState===WebSocket.CLOSED?(console.warn("WebSocket closed before loading plugins"),Q()):setTimeout(oe,100)};oe()}),!me){const Q=await o2();ee(Q),Q.installed||xe({title:"Git 未安装",description:Q.error||"请先安装 Git 才能使用插件安装功能",variant:"destructive"})}if(!me){const Q=await d2();X(Q)}if(!me)try{L(!0),U(null);const Q=await c2();if(!me){const oe=await cr();w(oe);const ge=Q.map(le=>{const O=Yc(le.id,oe),F=Xc(le.id,oe);return{...le,installed:O,installed_version:F}});for(const le of oe)!ge.some(F=>F.id===le.id)&&le.manifest&&ge.push({id:le.id,manifest:{manifest_version:le.manifest.manifest_version||1,name:le.manifest.name,version:le.manifest.version,description:le.manifest.description||"",author:le.manifest.author,license:le.manifest.license||"Unknown",host_application:le.manifest.host_application,homepage_url:le.manifest.homepage_url,repository_url:le.manifest.repository_url,keywords:le.manifest.keywords||[],categories:le.manifest.categories||[],default_locale:le.manifest.default_locale||"zh-CN",locales_path:le.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!0,installed_version:le.manifest.version,published_at:new Date().toISOString(),updated_at:new Date().toISOString()});z(ge),be(ge)}}catch(Q){if(!me){const oe=Q instanceof Error?Q.message:"加载插件列表失败";U(oe),xe({title:"加载失败",description:oe,variant:"destructive"})}}finally{me||L(!1)}})(),()=>{me=!0,S&&S.close()}},[xe]);const ye=S=>{if(!S.installed&&B&&!ve(S))return e.jsxs(Xe,{variant:"destructive",className:"gap-1",children:[e.jsx(Aa,{className:"h-3 w-3"}),"不兼容"]});if(S.installed){const me=S.installed_version?.trim(),he=S.manifest.version?.trim();if(me!==he){const Q=me?.split(".").map(Number)||[0,0,0],oe=he?.split(".").map(Number)||[0,0,0];for(let ge=0;ge<3;ge++){if((oe[ge]||0)>(Q[ge]||0))return e.jsxs(Xe,{variant:"outline",className:"gap-1 text-orange-600 border-orange-600",children:[e.jsx(Aa,{className:"h-3 w-3"}),"可更新"]});if((oe[ge]||0)<(Q[ge]||0))break}}return e.jsxs(Xe,{variant:"default",className:"gap-1",children:[e.jsx(xa,{className:"h-3 w-3"}),"已安装"]})}return null},ve=S=>!B||!S.manifest?.host_application?!0:u2(S.manifest.host_application.min_version,S.manifest.host_application.max_version,B),pe=S=>{if(!S.installed||!S.installed_version||!S.manifest?.version)return!1;const me=S.installed_version.trim(),he=S.manifest.version.trim();if(me===he)return!1;const Q=me.split(".").map(Number),oe=he.split(".").map(Number);for(let ge=0;ge<3;ge++){if((oe[ge]||0)>(Q[ge]||0))return!0;if((oe[ge]||0)<(Q[ge]||0))return!1}return!1},Ne=k.filter(S=>{if(!S.manifest)return console.warn("[过滤] 跳过无 manifest 的插件:",S.id),!1;const me=d===""||S.manifest.name?.toLowerCase().includes(d.toLowerCase())||S.manifest.description?.toLowerCase().includes(d.toLowerCase())||S.manifest.keywords&&S.manifest.keywords.some(ge=>ge.toLowerCase().includes(d.toLowerCase())),he=x==="all"||S.manifest.categories&&S.manifest.categories.includes(x);let Q=!0;j==="installed"?Q=S.installed===!0:j==="updates"&&(Q=S.installed===!0&&pe(S));const oe=!_||!B||ve(S);return me&&he&&Q&&oe}),y=()=>{c(null)},q=async S=>{if(!R?.installed){xe({title:"无法安装",description:"Git 未安装",variant:"destructive"});return}if(B&&!ve(S)){xe({title:"无法安装",description:"插件与当前麦麦版本不兼容",variant:"destructive"});return}try{await h2(S.id,S.manifest.repository_url||"","main"),_2(S.id).catch(he=>{console.warn("Failed to record download:",he)}),xe({title:"安装成功",description:`${S.manifest.name} 已成功安装`});const me=await cr();w(me),z(he=>he.map(Q=>{if(Q.id===S.id){const oe=Yc(Q.id,me),ge=Xc(Q.id,me);return{...Q,installed:oe,installed_version:ge}}return Q}))}catch(me){xe({title:"安装失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}},H=async S=>{try{await x2(S.id),xe({title:"卸载成功",description:`${S.manifest.name} 已成功卸载`});const me=await cr();w(me),z(he=>he.map(Q=>{if(Q.id===S.id){const oe=Yc(Q.id,me),ge=Xc(Q.id,me);return{...Q,installed:oe,installed_version:ge}}return Q}))}catch(me){xe({title:"卸载失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}},ne=async S=>{if(!R?.installed){xe({title:"无法更新",description:"Git 未安装",variant:"destructive"});return}try{const me=await f2(S.id,S.manifest.repository_url||"","main");xe({title:"更新成功",description:`${S.manifest.name} 已从 ${me.old_version} 更新到 ${me.new_version}`});const he=await cr();w(he),z(Q=>Q.map(oe=>{if(oe.id===S.id){const ge=Yc(oe.id,he),le=Xc(oe.id,he);return{...oe,installed:ge,installed_version:le}}return oe}))}catch(me){xe({title:"更新失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}};return e.jsx(es,{className:"h-full",children:e.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件市场"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"浏览和管理麦麦的插件"})]}),e.jsxs(N,{onClick:()=>n({to:"/plugin-mirrors"}),children:[e.jsx(FN,{className:"h-4 w-4 mr-2"}),"配置镜像源"]})]}),R&&!R.installed&&e.jsxs(Be,{className:"border-orange-600 bg-orange-50 dark:bg-orange-950/20",children:[e.jsx(gs,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ya,{className:"h-5 w-5 text-orange-600"}),e.jsxs("div",{children:[e.jsx(js,{className:"text-lg text-orange-900 dark:text-orange-100",children:"Git 未安装"}),e.jsx(Zs,{className:"text-orange-800 dark:text-orange-200",children:R.error||"请先安装 Git 才能使用插件安装功能"})]})]})}),e.jsx(bs,{children:e.jsxs("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:["您可以从 ",e.jsx("a",{href:"https://git-scm.com/downloads",target:"_blank",rel:"noopener noreferrer",className:"underline font-medium",children:"git-scm.com"})," 下载并安装 Git。 安装完成后,请重启麦麦应用。"]})})]}),e.jsx(Be,{className:"p-4",children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(St,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索插件...",value:d,onChange:S=>h(S.target.value),className:"pl-9"})]}),e.jsxs(Qe,{value:x,onValueChange:f,children:[e.jsx(Ge,{className:"w-full sm:w-[200px]",children:e.jsx($e,{placeholder:"选择分类"})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"all",children:"全部分类"}),e.jsx(ue,{value:"Group Management",children:"群组管理"}),e.jsx(ue,{value:"Entertainment & Interaction",children:"娱乐互动"}),e.jsx(ue,{value:"Utility Tools",children:"实用工具"}),e.jsx(ue,{value:"Content Generation",children:"内容生成"}),e.jsx(ue,{value:"Multimedia",children:"多媒体"}),e.jsx(ue,{value:"External Integration",children:"外部集成"}),e.jsx(ue,{value:"Data Analysis & Insights",children:"数据分析与洞察"}),e.jsx(ue,{value:"Other",children:"其他"})]})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(yt,{id:"compatible-only",checked:_,onCheckedChange:S=>v(S===!0)}),e.jsx("label",{htmlFor:"compatible-only",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer",children:"只显示兼容当前版本的插件"})]})]})}),e.jsx(Kt,{value:j,onValueChange:g,className:"w-full",children:e.jsxs(Rt,{className:"grid w-full grid-cols-3",children:[e.jsxs(He,{value:"all",children:["全部插件 (",k.filter(S=>{if(!S.manifest)return!1;const me=d===""||S.manifest.name?.toLowerCase().includes(d.toLowerCase())||S.manifest.description?.toLowerCase().includes(d.toLowerCase())||S.manifest.keywords&&S.manifest.keywords.some(oe=>oe.toLowerCase().includes(d.toLowerCase())),he=x==="all"||S.manifest.categories&&S.manifest.categories.includes(x),Q=!_||!B||ve(S);return me&&he&&Q}).length,")"]}),e.jsxs(He,{value:"installed",children:["已安装 (",k.filter(S=>{if(!S.manifest)return!1;const me=d===""||S.manifest.name?.toLowerCase().includes(d.toLowerCase())||S.manifest.description?.toLowerCase().includes(d.toLowerCase())||S.manifest.keywords&&S.manifest.keywords.some(oe=>oe.toLowerCase().includes(d.toLowerCase())),he=x==="all"||S.manifest.categories&&S.manifest.categories.includes(x),Q=!_||!B||ve(S);return S.installed&&me&&he&&Q}).length,")"]}),e.jsxs(He,{value:"updates",children:["可更新 (",k.filter(S=>{if(!S.manifest)return!1;const me=d===""||S.manifest.name?.toLowerCase().includes(d.toLowerCase())||S.manifest.description?.toLowerCase().includes(d.toLowerCase())||S.manifest.keywords&&S.manifest.keywords.some(oe=>oe.toLowerCase().includes(d.toLowerCase())),he=x==="all"||S.manifest.categories&&S.manifest.categories.includes(x),Q=!_||!B||ve(S);return S.installed&&pe(S)&&me&&he&&Q}).length,")"]})]})}),V&&V.stage==="loading"&&e.jsx(Be,{className:"p-4",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(vt,{className:"h-4 w-4 animate-spin"}),e.jsxs("span",{className:"text-sm font-medium",children:[V.operation==="fetch"&&"加载插件列表",V.operation==="install"&&`安装插件${V.plugin_id?`: ${V.plugin_id}`:""}`,V.operation==="uninstall"&&`卸载插件${V.plugin_id?`: ${V.plugin_id}`:""}`,V.operation==="update"&&`更新插件${V.plugin_id?`: ${V.plugin_id}`:""}`]})]}),e.jsxs("span",{className:"text-sm font-medium",children:[V.progress,"%"]})]}),e.jsx(Sr,{value:V.progress,className:"h-2"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:V.message}),V.operation==="fetch"&&V.total_plugins>0&&e.jsxs("div",{className:"text-xs text-muted-foreground text-center",children:["已加载 ",V.loaded_plugins," / ",V.total_plugins," 个插件"]})]})}),V&&V.stage==="error"&&V.error&&e.jsx(Be,{className:"border-destructive bg-destructive/10",children:e.jsx(gs,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ya,{className:"h-5 w-5 text-destructive"}),e.jsxs("div",{children:[e.jsx(js,{className:"text-lg text-destructive",children:"加载失败"}),e.jsx(Zs,{className:"text-destructive/80",children:V.error})]})]})})}),T?e.jsxs("div",{className:"flex items-center justify-center py-12",children:[e.jsx(vt,{className:"h-8 w-8 animate-spin text-muted-foreground"}),e.jsx("span",{className:"ml-3 text-muted-foreground",children:"加载插件列表中..."})]}):K?e.jsx(Be,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(ya,{className:"h-12 w-12 text-destructive mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:K}),e.jsx(N,{onClick:()=>window.location.reload(),children:"重新加载"})]})}):Ne.length===0?e.jsx(Be,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(St,{className:"h-12 w-12 text-muted-foreground mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"未找到插件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:d||x!=="all"?"尝试调整搜索条件或筛选器":"暂无可用插件"})]})}):e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:Ne.map(S=>e.jsxs(Be,{className:"flex flex-col hover:shadow-lg transition-shadow h-full",children:[e.jsxs(gs,{children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsx(js,{className:"text-xl",children:S.manifest?.name||S.id}),e.jsxs("div",{className:"flex flex-col gap-1",children:[S.manifest?.categories&&S.manifest.categories[0]&&e.jsx(Xe,{variant:"secondary",className:"text-xs whitespace-nowrap",children:gp[S.manifest.categories[0]]||S.manifest.categories[0]}),ye(S)]})]}),e.jsx(Zs,{className:"line-clamp-2",children:S.manifest?.description||"无描述"})]}),e.jsx(bs,{className:"flex-1",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(nl,{className:"h-4 w-4"}),e.jsx("span",{children:(D[S.id]?.downloads??S.downloads??0).toLocaleString()})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ol,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsx("span",{children:(D[S.id]?.rating??S.rating??0).toFixed(1)})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[S.manifest?.keywords&&S.manifest.keywords.slice(0,3).map(me=>e.jsx(Xe,{variant:"outline",className:"text-xs",children:me},me)),S.manifest?.keywords&&S.manifest.keywords.length>3&&e.jsxs(Xe,{variant:"outline",className:"text-xs",children:["+",S.manifest.keywords.length-3]})]}),e.jsxs("div",{className:"text-xs text-muted-foreground pt-2 border-t space-y-1",children:[e.jsxs("div",{children:["v",S.manifest?.version||"unknown"," · ",S.manifest?.author?.name||"Unknown"]}),S.manifest?.host_application&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{children:"支持:"}),e.jsxs("span",{className:"font-medium",children:[S.manifest.host_application.min_version,S.manifest.host_application.max_version?` - ${S.manifest.host_application.max_version}`:" - 最新版本"]})]})]})]})}),e.jsx(wg,{className:"pt-4",children:e.jsxs("div",{className:"flex items-center justify-end gap-2 w-full",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>c(S),children:"查看详情"}),S.installed?pe(S)?e.jsxs(N,{size:"sm",disabled:!R?.installed,title:R?.installed?void 0:"Git 未安装",onClick:()=>ne(S),children:[e.jsx(ft,{className:"h-4 w-4 mr-1"}),"更新"]}):e.jsxs(N,{variant:"destructive",size:"sm",disabled:!R?.installed,title:R?.installed?void 0:"Git 未安装",onClick:()=>H(S),children:[e.jsx(ns,{className:"h-4 w-4 mr-1"}),"卸载"]}):e.jsxs(N,{size:"sm",disabled:!R?.installed||V?.operation==="install"||B!==null&&!ve(S),title:R?.installed?B!==null&&!ve(S)?`不兼容当前版本 (需要 ${S.manifest?.host_application?.min_version||"未知"}${S.manifest?.host_application?.max_version?` - ${S.manifest.host_application.max_version}`:"+"},当前 ${B?.version})`:void 0:"Git 未安装",onClick:()=>q(S),children:[e.jsx(nl,{className:"h-4 w-4 mr-1"}),V?.operation==="install"&&V?.plugin_id===S.id?"安装中...":"安装"]})]})})]},S.id))}),e.jsx(Os,{open:r!==null,onOpenChange:y,children:r&&r.manifest&&e.jsxs(Es,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsx(zs,{children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"space-y-2 flex-1",children:[e.jsx(Ms,{className:"text-2xl",children:r.manifest.name}),e.jsxs($s,{children:["作者: ",r.manifest.author?.name||"Unknown",r.manifest.author?.url&&e.jsx("a",{href:r.manifest.author.url,target:"_blank",rel:"noopener noreferrer",className:"ml-2 text-primary hover:underline",children:e.jsx(dr,{className:"h-3 w-3 inline"})})]})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[r.manifest.categories&&r.manifest.categories[0]&&e.jsx(Xe,{variant:"secondary",children:gp[r.manifest.categories[0]]||r.manifest.categories[0]}),ye(r)]})]})}),e.jsxs("div",{className:"space-y-6",children:[e.jsx(C2,{pluginId:r.id}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"版本"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["v",r.manifest?.version||"unknown"]}),r.installed&&r.installed_version&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:["已安装: v",r.installed_version]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"下载量"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:(D[r.id]?.downloads??r.downloads??0).toLocaleString()})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"评分"}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ol,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[(D[r.id]?.rating??r.rating??0).toFixed(1)," (",D[r.id]?.rating_count??r.review_count??0,")"]})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"许可证"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:r.manifest.license||"Unknown"})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("p",{className:"text-sm font-medium",children:"支持版本"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:[r.manifest.host_application?.min_version||"未知",r.manifest.host_application?.max_version?` - ${r.manifest.host_application.max_version}`:" - 最新版本"]})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"关键词"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:r.manifest.keywords&&r.manifest.keywords.map(S=>e.jsx(Xe,{variant:"outline",children:S},S))})]}),r.detailed_description&&e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"详细说明"}),e.jsx("p",{className:"text-sm text-muted-foreground whitespace-pre-line",children:r.detailed_description})]}),!r.detailed_description&&e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"说明"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:r.manifest.description||"无描述"})]}),e.jsxs("div",{className:"space-y-2",children:[r.manifest.homepage_url&&e.jsxs("div",{className:"text-sm",children:[e.jsx("span",{className:"font-medium",children:"主页: "}),e.jsx("a",{href:r.manifest.homepage_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:r.manifest.homepage_url})]}),r.manifest.repository_url&&e.jsxs("div",{className:"text-sm",children:[e.jsx("span",{className:"font-medium",children:"仓库: "}),e.jsx("a",{href:r.manifest.repository_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:r.manifest.repository_url})]})]})]}),e.jsxs(Is,{children:[r.manifest.homepage_url&&e.jsxs(N,{onClick:()=>window.open(r.manifest.homepage_url,"_blank"),children:[e.jsx(dr,{className:"h-4 w-4 mr-2"}),"访问主页"]}),r.manifest.repository_url&&e.jsxs(N,{variant:"outline",onClick:()=>window.open(r.manifest.repository_url,"_blank"),children:[e.jsx(dr,{className:"h-4 w-4 mr-2"}),"查看仓库"]})]})]})})]})})}const Gu=Fy,Vu=Qy,Fu=$y;function T2({field:n,value:r,onChange:c}){const[d,h]=u.useState(!1);switch(n.ui_type){case"switch":return e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:n.label}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]}),e.jsx(qe,{checked:!!r,onCheckedChange:c,disabled:n.disabled})]});case"number":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsx(ce,{type:"number",value:r??n.default,onChange:x=>c(parseFloat(x.target.value)||0),min:n.min,max:n.max,step:n.step??1,placeholder:n.placeholder,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"slider":return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:n.label}),e.jsx("span",{className:"text-sm text-muted-foreground",children:r??n.default})]}),e.jsx(za,{value:[r??n.default],onValueChange:x=>c(x[0]),min:n.min??0,max:n.max??100,step:n.step??1,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"select":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsxs(Qe,{value:String(r??n.default),onValueChange:c,disabled:n.disabled,children:[e.jsx(Ge,{children:e.jsx($e,{placeholder:n.placeholder??"请选择"})}),e.jsx(Ve,{children:n.choices?.map(x=>e.jsx(ue,{value:String(x),children:String(x)},String(x)))})]}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"textarea":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsx(Us,{value:r??n.default,onChange:x=>c(x.target.value),placeholder:n.placeholder,rows:n.rows??3,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"password":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsxs("div",{className:"relative",children:[e.jsx(ce,{type:d?"text":"password",value:r??"",onChange:x=>c(x.target.value),placeholder:n.placeholder,disabled:n.disabled,className:"pr-10"}),e.jsx(N,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-3",onClick:()=>h(!d),children:d?e.jsx(mr,{className:"h-4 w-4"}):e.jsx(Zt,{className:"h-4 w-4"})})]}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"text":default:return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsx(ce,{type:"text",value:r??n.default??"",onChange:x=>c(x.target.value),placeholder:n.placeholder,maxLength:n.max_length,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]})}}function jp({section:n,config:r,onChange:c}){const[d,h]=u.useState(!n.collapsed),x=Object.entries(n.fields).filter(([,f])=>!f.hidden).sort(([,f],[,j])=>f.order-j.order);return e.jsx(Gu,{open:d,onOpenChange:h,children:e.jsxs(Be,{children:[e.jsx(Vu,{asChild:!0,children:e.jsxs(gs,{className:"cursor-pointer hover:bg-muted/50 transition-colors",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[d?e.jsx(Ll,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(il,{className:"h-4 w-4 text-muted-foreground"}),e.jsx(js,{className:"text-lg",children:n.title})]}),e.jsxs(Xe,{variant:"secondary",className:"text-xs",children:[x.length," 项"]})]}),n.description&&e.jsx(Zs,{className:"ml-6",children:n.description})]})}),e.jsx(Fu,{children:e.jsx(bs,{className:"space-y-4 pt-0",children:x.map(([f,j])=>e.jsx(T2,{field:j,value:r[n.name]?.[f],onChange:g=>c(n.name,f,g),sectionName:n.name},f))})})]})})}function E2({plugin:n,onBack:r}){const{toast:c}=Bs(),[d,h]=u.useState(null),[x,f]=u.useState({}),[j,g]=u.useState({}),[_,v]=u.useState(!0),[k,z]=u.useState(!1),[T,L]=u.useState(!1),[K,U]=u.useState(!1),R=u.useCallback(async()=>{v(!0);try{const[D,te]=await Promise.all([p2(n.id),g2(n.id)]);h(D),f(te),g(JSON.parse(JSON.stringify(te)))}catch(D){c({title:"加载配置失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}finally{v(!1)}},[n.id,c]);u.useEffect(()=>{R()},[R]),u.useEffect(()=>{L(JSON.stringify(x)!==JSON.stringify(j))},[x,j]);const ee=(D,te,xe)=>{f(be=>({...be,[D]:{...be[D]||{},[te]:xe}}))},V=async()=>{z(!0);try{await j2(n.id,x),g(JSON.parse(JSON.stringify(x))),c({title:"配置已保存",description:"更改将在插件重新加载后生效"})}catch(D){c({title:"保存失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}finally{z(!1)}},E=async()=>{try{await v2(n.id),c({title:"配置已重置",description:"下次加载插件时将使用默认配置"}),U(!1),R()}catch(D){c({title:"重置失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}},B=async()=>{try{const D=await y2(n.id);c({title:D.message,description:D.note}),R()}catch(D){c({title:"切换状态失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}};if(_)return e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx(vt,{className:"h-8 w-8 animate-spin text-muted-foreground"})});if(!d)return e.jsxs("div",{className:"flex flex-col items-center justify-center h-64 space-y-4",children:[e.jsx(Aa,{className:"h-12 w-12 text-muted-foreground"}),e.jsx("p",{className:"text-muted-foreground",children:"无法加载配置"}),e.jsxs(N,{onClick:r,variant:"outline",children:[e.jsx(ti,{className:"h-4 w-4 mr-2"}),"返回"]})]});const X=Object.values(d.sections).sort((D,te)=>D.order-te.order),w=x.plugin?.enabled!==!1;return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(N,{variant:"ghost",size:"icon",onClick:r,children:e.jsx(ti,{className:"h-5 w-5"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:d.plugin_info.name||n.manifest.name}),e.jsxs("div",{className:"flex items-center gap-2 mt-1",children:[e.jsx(Xe,{variant:w?"default":"secondary",children:w?"已启用":"已禁用"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["v",d.plugin_info.version||n.manifest.version]})]})]})]}),e.jsxs("div",{className:"flex gap-2 ml-10 sm:ml-0",children:[e.jsxs(N,{variant:"outline",size:"sm",onClick:B,children:[e.jsx(Nr,{className:"h-4 w-4 mr-2"}),w?"禁用":"启用"]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>U(!0),children:[e.jsx(Wc,{className:"h-4 w-4 mr-2"}),"重置"]}),e.jsxs(N,{size:"sm",onClick:V,disabled:!T||k,children:[k?e.jsx(vt,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(br,{className:"h-4 w-4 mr-2"}),"保存"]})]})]}),T&&e.jsx(Be,{className:"border-orange-200 bg-orange-50 dark:bg-orange-950/20 dark:border-orange-900",children:e.jsx(bs,{className:"py-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Xt,{className:"h-4 w-4 text-orange-600"}),e.jsx("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:"有未保存的更改"})]})})}),d.layout.type==="tabs"&&d.layout.tabs.length>0?e.jsxs(Kt,{defaultValue:d.layout.tabs[0]?.id,children:[e.jsx(Rt,{children:d.layout.tabs.map(D=>e.jsxs(He,{value:D.id,children:[D.title,D.badge&&e.jsx(Xe,{variant:"secondary",className:"ml-2 text-xs",children:D.badge})]},D.id))}),d.layout.tabs.map(D=>e.jsx(We,{value:D.id,className:"space-y-4 mt-4",children:D.sections.map(te=>{const xe=d.sections[te];return xe?e.jsx(jp,{section:xe,config:x,onChange:ee},te):null})},D.id))]}):e.jsx("div",{className:"space-y-4",children:X.map(D=>e.jsx(jp,{section:D,config:x,onChange:ee},D.name))}),e.jsx(Os,{open:K,onOpenChange:U,children:e.jsxs(Es,{children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"确认重置配置"}),e.jsx($s,{children:"这将删除当前配置文件,下次加载插件时将使用默认配置。此操作不可撤销。"})]}),e.jsxs(Is,{children:[e.jsx(N,{variant:"outline",onClick:()=>U(!1),children:"取消"}),e.jsx(N,{variant:"destructive",onClick:E,children:"确认重置"})]})]})})]})}function z2(){const{toast:n}=Bs(),[r,c]=u.useState([]),[d,h]=u.useState(!0),[x,f]=u.useState(""),[j,g]=u.useState(null),_=async()=>{h(!0);try{const T=await cr();c(T)}catch(T){n({title:"加载插件列表失败",description:T instanceof Error?T.message:"未知错误",variant:"destructive"})}finally{h(!1)}};u.useEffect(()=>{_()},[]);const v=r.filter(T=>{const L=x.toLowerCase();return T.id.toLowerCase().includes(L)||T.manifest.name.toLowerCase().includes(L)||T.manifest.description?.toLowerCase().includes(L)}),k=r.length,z=0;return j?e.jsx(es,{className:"h-full",children:e.jsx("div",{className:"p-4 sm:p-6",children:e.jsx(E2,{plugin:j,onBack:()=>g(null)})})}):e.jsx(es,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理和配置已安装的插件"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:_,children:[e.jsx(ft,{className:`h-4 w-4 mr-2 ${d?"animate-spin":""}`}),"刷新"]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-3",children:[e.jsxs(Be,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"已安装插件"}),e.jsx(rn,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsx("div",{className:"text-2xl font-bold",children:r.length}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:d?"正在加载...":"个插件"})]})]}),e.jsxs(Be,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"已启用"}),e.jsx(xa,{className:"h-4 w-4 text-green-600"})]}),e.jsxs(bs,{children:[e.jsx("div",{className:"text-2xl font-bold",children:k}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"运行中的插件"})]})]}),e.jsxs(Be,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"已禁用"}),e.jsx(Aa,{className:"h-4 w-4 text-orange-600"})]}),e.jsxs(bs,{children:[e.jsx("div",{className:"text-2xl font-bold",children:z}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"未激活的插件"})]})]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(St,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索插件...",value:x,onChange:T=>f(T.target.value),className:"pl-9"})]}),e.jsxs(Be,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"已安装的插件"}),e.jsx(Zs,{children:"点击插件查看和编辑配置"})]}),e.jsx(bs,{children:d?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(vt,{className:"h-8 w-8 animate-spin text-muted-foreground"})}):v.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 space-y-4",children:[e.jsx(rn,{className:"h-16 w-16 text-muted-foreground/50"}),e.jsxs("div",{className:"text-center space-y-2",children:[e.jsx("p",{className:"text-lg font-medium text-muted-foreground",children:x?"没有找到匹配的插件":"暂无已安装的插件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:x?"尝试其他搜索关键词":"前往插件市场安装插件"})]})]}):e.jsx("div",{className:"space-y-2",children:v.map(T=>e.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg border hover:bg-muted/50 cursor-pointer transition-colors",onClick:()=>g(T),children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[e.jsx("div",{className:"h-10 w-10 rounded-lg bg-primary/10 flex items-center justify-center flex-shrink-0",children:e.jsx(rn,{className:"h-5 w-5 text-primary"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-medium truncate",children:T.manifest.name}),e.jsxs(Xe,{variant:"secondary",className:"text-xs flex-shrink-0",children:["v",T.manifest.version]})]}),e.jsx("p",{className:"text-sm text-muted-foreground truncate",children:T.manifest.description||"暂无描述"})]})]}),e.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[e.jsx(N,{variant:"ghost",size:"sm",children:e.jsx(Rl,{className:"h-4 w-4"})}),e.jsx(il,{className:"h-4 w-4 text-muted-foreground"})]})]},T.id))})})]})]})})}function M2(){const n=It(),{toast:r}=Bs(),[c,d]=u.useState([]),[h,x]=u.useState(!0),[f,j]=u.useState(null),[g,_]=u.useState(null),[v,k]=u.useState(!1),[z,T]=u.useState(!1),[L,K]=u.useState({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),U=u.useCallback(async()=>{try{x(!0),j(null);const w=localStorage.getItem("access-token"),D=await fetch("/api/webui/plugins/mirrors",{headers:{Authorization:`Bearer ${w}`}});if(!D.ok)throw new Error("获取镜像源列表失败");const te=await D.json();d(te.mirrors||[])}catch(w){const D=w instanceof Error?w.message:"加载镜像源失败";j(D),r({title:"加载失败",description:D,variant:"destructive"})}finally{x(!1)}},[r]);u.useEffect(()=>{U()},[U]);const R=async()=>{try{const w=localStorage.getItem("access-token"),D=await fetch("/api/webui/plugins/mirrors",{method:"POST",headers:{Authorization:`Bearer ${w}`,"Content-Type":"application/json"},body:JSON.stringify(L)});if(!D.ok){const te=await D.json();throw new Error(te.detail||"添加镜像源失败")}r({title:"添加成功",description:"镜像源已添加"}),k(!1),K({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),U()}catch(w){r({title:"添加失败",description:w instanceof Error?w.message:"未知错误",variant:"destructive"})}},ee=async()=>{if(g)try{const w=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${g.id}`,{method:"PUT",headers:{Authorization:`Bearer ${w}`,"Content-Type":"application/json"},body:JSON.stringify({name:L.name,raw_prefix:L.raw_prefix,clone_prefix:L.clone_prefix,enabled:L.enabled,priority:L.priority})})).ok)throw new Error("更新镜像源失败");r({title:"更新成功",description:"镜像源已更新"}),T(!1),_(null),U()}catch(w){r({title:"更新失败",description:w instanceof Error?w.message:"未知错误",variant:"destructive"})}},V=async w=>{if(confirm("确定要删除这个镜像源吗?"))try{const D=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${w}`,{method:"DELETE",headers:{Authorization:`Bearer ${D}`}})).ok)throw new Error("删除镜像源失败");r({title:"删除成功",description:"镜像源已删除"}),U()}catch(D){r({title:"删除失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}},E=async w=>{try{const D=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${w.id}`,{method:"PUT",headers:{Authorization:`Bearer ${D}`,"Content-Type":"application/json"},body:JSON.stringify({enabled:!w.enabled})})).ok)throw new Error("更新状态失败");U()}catch(D){r({title:"更新失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}},B=w=>{_(w),K({id:w.id,name:w.name,raw_prefix:w.raw_prefix,clone_prefix:w.clone_prefix,enabled:w.enabled,priority:w.priority}),T(!0)},X=async(w,D)=>{const te=D==="up"?w.priority-1:w.priority+1;if(!(te<1))try{const xe=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${w.id}`,{method:"PUT",headers:{Authorization:`Bearer ${xe}`,"Content-Type":"application/json"},body:JSON.stringify({priority:te})})).ok)throw new Error("更新优先级失败");U()}catch(xe){r({title:"更新失败",description:xe instanceof Error?xe.message:"未知错误",variant:"destructive"})}};return e.jsx(es,{className:"h-full",children:e.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(N,{variant:"ghost",size:"icon",onClick:()=>n({to:"/plugins"}),children:e.jsx(ti,{className:"h-5 w-5"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"镜像源配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理 Git 克隆和文件下载的镜像源"})]})]}),e.jsxs(N,{onClick:()=>k(!0),children:[e.jsx(gt,{className:"h-4 w-4 mr-2"}),"添加镜像源"]})]}),h?e.jsx(Be,{className:"p-6",children:e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(vt,{className:"h-8 w-8 animate-spin text-primary"})})}):f?e.jsx(Be,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(ya,{className:"h-12 w-12 text-destructive mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:f}),e.jsx(N,{onClick:U,children:"重新加载"})]})}):e.jsxs(Be,{children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(ii,{children:[e.jsx(ri,{children:e.jsxs(pt,{children:[e.jsx(ls,{children:"状态"}),e.jsx(ls,{children:"名称"}),e.jsx(ls,{children:"ID"}),e.jsx(ls,{children:"优先级"}),e.jsx(ls,{className:"text-right",children:"操作"})]})}),e.jsx(ci,{children:c.map(w=>e.jsxs(pt,{children:[e.jsx(Ye,{children:e.jsx(qe,{checked:w.enabled,onCheckedChange:()=>E(w)})}),e.jsx(Ye,{children:e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:w.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1",children:["Raw: ",w.raw_prefix]})]})}),e.jsx(Ye,{children:e.jsx(Xe,{variant:"outline",children:w.id})}),e.jsx(Ye,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-mono",children:w.priority}),e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx(N,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>X(w,"up"),disabled:w.priority===1,children:e.jsx(fr,{className:"h-3 w-3"})}),e.jsx(N,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>X(w,"down"),children:e.jsx(Ll,{className:"h-3 w-3"})})]})]})}),e.jsx(Ye,{className:"text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-2",children:[e.jsx(N,{variant:"ghost",size:"icon",onClick:()=>B(w),children:e.jsx(nn,{className:"h-4 w-4"})}),e.jsx(N,{variant:"ghost",size:"icon",onClick:()=>V(w.id),children:e.jsx(ns,{className:"h-4 w-4 text-destructive"})})]})})]},w.id))})]})}),e.jsx("div",{className:"md:hidden p-4 space-y-4",children:c.map(w=>e.jsx(Be,{className:"p-4",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-semibold",children:w.name}),w.enabled&&e.jsx(Xe,{variant:"default",className:"text-xs",children:"启用"})]}),e.jsx(Xe,{variant:"outline",className:"mt-1 text-xs",children:w.id})]}),e.jsx(qe,{checked:w.enabled,onCheckedChange:()=>E(w)})]}),e.jsxs("div",{className:"text-sm space-y-1",children:[e.jsxs("div",{className:"text-muted-foreground",children:[e.jsx("span",{className:"font-medium",children:"Raw: "}),e.jsx("span",{className:"break-all",children:w.raw_prefix})]}),e.jsxs("div",{className:"text-muted-foreground",children:[e.jsx("span",{className:"font-medium",children:"优先级: "}),e.jsx("span",{className:"font-mono",children:w.priority})]})]}),e.jsxs("div",{className:"flex items-center gap-2 pt-2 border-t",children:[e.jsxs(N,{variant:"outline",size:"sm",className:"flex-1",onClick:()=>B(w),children:[e.jsx(nn,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>X(w,"up"),disabled:w.priority===1,children:e.jsx(fr,{className:"h-4 w-4"})}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>X(w,"down"),children:e.jsx(Ll,{className:"h-4 w-4"})}),e.jsx(N,{variant:"destructive",size:"sm",onClick:()=>V(w.id),children:e.jsx(ns,{className:"h-4 w-4"})})]})]})},w.id))})]}),e.jsx(Os,{open:v,onOpenChange:k,children:e.jsxs(Es,{className:"max-w-lg",children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"添加镜像源"}),e.jsx($s,{children:"添加新的 Git 镜像源配置"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-id",children:"镜像源 ID *"}),e.jsx(ce,{id:"add-id",placeholder:"例如: my-mirror",value:L.id,onChange:w=>K({...L,id:w.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-name",children:"名称 *"}),e.jsx(ce,{id:"add-name",placeholder:"例如: 我的镜像源",value:L.name,onChange:w=>K({...L,name:w.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-raw",children:"Raw 文件前缀 *"}),e.jsx(ce,{id:"add-raw",placeholder:"https://example.com/raw",value:L.raw_prefix,onChange:w=>K({...L,raw_prefix:w.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-clone",children:"克隆前缀 *"}),e.jsx(ce,{id:"add-clone",placeholder:"https://example.com/clone",value:L.clone_prefix,onChange:w=>K({...L,clone_prefix:w.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-priority",children:"优先级"}),e.jsx(ce,{id:"add-priority",type:"number",min:"1",value:L.priority,onChange:w=>K({...L,priority:parseInt(w.target.value)||1})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"add-enabled",checked:L.enabled,onCheckedChange:w=>K({...L,enabled:w})}),e.jsx(b,{htmlFor:"add-enabled",children:"启用此镜像源"})]})]}),e.jsxs(Is,{children:[e.jsx(N,{variant:"outline",onClick:()=>k(!1),children:"取消"}),e.jsx(N,{onClick:R,children:"添加"})]})]})}),e.jsx(Os,{open:z,onOpenChange:T,children:e.jsxs(Es,{className:"max-w-lg",children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"编辑镜像源"}),e.jsx($s,{children:"修改镜像源配置"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"镜像源 ID"}),e.jsx(ce,{value:L.id,disabled:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit-name",children:"名称 *"}),e.jsx(ce,{id:"edit-name",value:L.name,onChange:w=>K({...L,name:w.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit-raw",children:"Raw 文件前缀 *"}),e.jsx(ce,{id:"edit-raw",value:L.raw_prefix,onChange:w=>K({...L,raw_prefix:w.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit-clone",children:"克隆前缀 *"}),e.jsx(ce,{id:"edit-clone",value:L.clone_prefix,onChange:w=>K({...L,clone_prefix:w.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit-priority",children:"优先级"}),e.jsx(ce,{id:"edit-priority",type:"number",min:"1",value:L.priority,onChange:w=>K({...L,priority:parseInt(w.target.value)||1})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"edit-enabled",checked:L.enabled,onCheckedChange:w=>K({...L,enabled:w})}),e.jsx(b,{htmlFor:"edit-enabled",children:"启用此镜像源"})]})]}),e.jsxs(Is,{children:[e.jsx(N,{variant:"outline",onClick:()=>T(!1),children:"取消"}),e.jsx(N,{onClick:ee,children:"保存"})]})]})})]})})}const Jc=u.forwardRef(({className:n,...r},c)=>e.jsx(Lp,{ref:c,className:$("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",n),...r}));Jc.displayName=Lp.displayName;const A2=u.forwardRef(({className:n,...r},c)=>e.jsx(Up,{ref:c,className:$("aspect-square h-full w-full",n),...r}));A2.displayName=Up.displayName;const Pc=u.forwardRef(({className:n,...r},c)=>e.jsx(Bp,{ref:c,className:$("flex h-full w-full items-center justify-center rounded-full bg-muted",n),...r}));Pc.displayName=Bp.displayName;function D2(){return"webui_"+Math.random().toString(36).substr(2,9)+"_"+Date.now().toString(36)}function O2(){const n="maibot_webui_user_id";let r=localStorage.getItem(n);return r||(r=D2(),localStorage.setItem(n,r)),r}function R2(){return localStorage.getItem("maibot_webui_user_name")||"WebUI用户"}function L2(n){localStorage.setItem("maibot_webui_user_name",n)}function U2(){const[n,r]=u.useState([]),[c,d]=u.useState(""),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[g,_]=u.useState(!1),[v,k]=u.useState(!0),[z,T]=u.useState(R2()),[L,K]=u.useState(!1),[U,R]=u.useState(""),[ee,V]=u.useState({}),E=u.useRef(O2()),B=u.useRef(null),X=u.useRef(null),w=u.useRef(null),D=u.useRef(0),te=u.useRef(new Set),{toast:xe}=Bs(),be=Q=>(D.current+=1,`${Q}-${Date.now()}-${D.current}-${Math.random().toString(36).substr(2,9)}`),ye=u.useCallback(()=>{X.current?.scrollIntoView({behavior:"smooth"})},[]);u.useEffect(()=>{ye()},[n,ye]);const ve=u.useCallback(async()=>{k(!0);try{const Q=`/api/chat/history?user_id=${E.current}&limit=50`;console.log("[Chat] 正在加载历史消息:",Q);const oe=await fetch(Q);if(console.log("[Chat] 历史消息响应状态:",oe.status,oe.statusText),console.log("[Chat] 响应 Content-Type:",oe.headers.get("content-type")),oe.ok){const ge=await oe.text();console.log("[Chat] 响应内容前100字符:",ge.substring(0,100));try{const le=JSON.parse(ge);if(console.log("[Chat] 解析后的数据:",le),le.messages&&le.messages.length>0){const O=le.messages.map(F=>({id:F.id,type:F.type,content:F.content,timestamp:F.timestamp,sender:{name:F.sender_name||(F.is_bot?"麦麦":"WebUI用户"),user_id:F.user_id,is_bot:F.is_bot}}));r(O),console.log("[Chat] 已加载历史消息数量:",O.length),O.forEach(F=>{if(F.type==="bot"){const A=`bot-${F.content}-${Math.floor(F.timestamp*1e3)}`;te.current.add(A)}})}else console.log("[Chat] 没有历史消息")}catch(le){console.error("[Chat] JSON 解析失败:",le),console.error("[Chat] 原始响应内容:",ge)}}else{console.error("[Chat] 响应失败:",oe.status);const ge=await oe.text();console.error("[Chat] 错误响应内容:",ge.substring(0,200))}}catch(Q){console.error("[Chat] 加载历史消息失败:",Q)}finally{k(!1)}},[]),pe=u.useCallback(()=>{if(B.current?.readyState===WebSocket.OPEN||B.current?.readyState===WebSocket.CONNECTING){console.log("WebSocket 已存在,跳过连接");return}j(!0);const oe=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/api/chat/ws?user_id=${encodeURIComponent(E.current)}&user_name=${encodeURIComponent(z)}`;console.log("正在连接 WebSocket:",oe);try{const ge=new WebSocket(oe);B.current=ge,ge.onopen=()=>{x(!0),j(!1),console.log("WebSocket 已连接")},ge.onmessage=le=>{try{const O=JSON.parse(le.data);switch(O.type){case"session_info":V({session_id:O.session_id,user_id:O.user_id,user_name:O.user_name,bot_name:O.bot_name});break;case"system":r(F=>[...F,{id:be("sys"),type:"system",content:O.content||"",timestamp:O.timestamp||Date.now()/1e3}]);break;case"user_message":r(F=>[...F,{id:O.message_id||be("user"),type:"user",content:O.content||"",timestamp:O.timestamp||Date.now()/1e3,sender:O.sender}]);break;case"bot_message":{_(!1);const F=`bot-${O.content}-${Math.floor((O.timestamp||0)*1e3)}`;if(te.current.has(F)){console.log("跳过重复的机器人消息");break}if(te.current.add(F),te.current.size>100){const A=te.current.values().next().value;A&&te.current.delete(A)}r(A=>[...A,{id:be("bot"),type:"bot",content:O.content||"",timestamp:O.timestamp||Date.now()/1e3,sender:O.sender}]);break}case"typing":_(O.is_typing||!1);break;case"error":r(F=>[...F,{id:be("error"),type:"error",content:O.content||"发生错误",timestamp:O.timestamp||Date.now()/1e3}]),xe({title:"错误",description:O.content,variant:"destructive"});break;case"pong":break;default:console.log("未知消息类型:",O.type)}}catch(O){console.error("解析消息失败:",O)}},ge.onclose=()=>{x(!1),j(!1),B.current=null,console.log("WebSocket 已断开"),w.current&&clearTimeout(w.current),w.current=window.setTimeout(()=>{Ne.current||pe()},5e3)},ge.onerror=le=>{console.error("WebSocket 错误:",le),j(!1)}}catch(ge){console.error("创建 WebSocket 失败:",ge),j(!1)}},[xe,z]),Ne=u.useRef(!1);u.useEffect(()=>{Ne.current=!1,ve();const Q=setTimeout(()=>{Ne.current||pe()},100),oe=setInterval(()=>{B.current?.readyState===WebSocket.OPEN&&B.current.send(JSON.stringify({type:"ping"}))},3e4);return()=>{Ne.current=!0,clearTimeout(Q),clearInterval(oe),w.current&&(clearTimeout(w.current),w.current=null),B.current&&(B.current.close(),B.current=null)}},[pe,ve]);const y=u.useCallback(()=>{!c.trim()||!B.current||B.current.readyState!==WebSocket.OPEN||(B.current.send(JSON.stringify({type:"message",content:c.trim(),user_name:z})),d(""))},[c,z]),q=Q=>{Q.key==="Enter"&&!Q.shiftKey&&(Q.preventDefault(),y())},H=()=>{R(z),K(!0)},ne=()=>{const Q=U.trim()||"WebUI用户";T(Q),L2(Q),K(!1),B.current?.readyState===WebSocket.OPEN&&B.current.send(JSON.stringify({type:"update_nickname",user_name:Q}))},S=()=>{R(""),K(!1)},me=Q=>new Date(Q*1e3).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"}),he=()=>{B.current&&B.current.close(),pe()};return e.jsxs("div",{className:"h-full flex flex-col",children:[e.jsx("div",{className:"shrink-0 border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:e.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 sm:gap-3 min-w-0",children:[e.jsx(Jc,{className:"h-8 w-8 sm:h-10 sm:w-10 shrink-0",children:e.jsx(Pc,{className:"bg-primary/10 text-primary",children:e.jsx(ir,{className:"h-4 w-4 sm:h-5 sm:w-5"})})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h1",{className:"text-base sm:text-lg font-semibold truncate",children:ee.bot_name||"麦麦"}),e.jsx("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:h?e.jsxs(e.Fragment,{children:[e.jsx(QN,{className:"h-3 w-3 text-green-500"}),e.jsx("span",{className:"text-green-600 dark:text-green-400",children:"已连接"})]}):f?e.jsxs(e.Fragment,{children:[e.jsx(vt,{className:"h-3 w-3 animate-spin"}),e.jsx("span",{children:"连接中..."})]}):e.jsxs(e.Fragment,{children:[e.jsx($N,{className:"h-3 w-3 text-red-500"}),e.jsx("span",{className:"text-red-600 dark:text-red-400",children:"未连接"})]})})]})]}),e.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[v&&e.jsx(vt,{className:"h-4 w-4 animate-spin text-muted-foreground"}),e.jsx(N,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:he,disabled:f,title:"重新连接",children:e.jsx(ft,{className:$("h-4 w-4",f&&"animate-spin")})})]})]}),e.jsxs("div",{className:"hidden sm:flex items-center gap-2 mt-2 text-sm text-muted-foreground",children:[e.jsx(to,{className:"h-3 w-3"}),e.jsx("span",{children:"当前身份:"}),L?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{value:U,onChange:Q=>R(Q.target.value),onKeyDown:Q=>{Q.key==="Enter"&&ne(),Q.key==="Escape"&&S()},className:"h-7 w-32",placeholder:"输入昵称",autoFocus:!0}),e.jsx(N,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:ne,children:"保存"}),e.jsx(N,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:S,children:"取消"})]}):e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"font-medium text-foreground",children:z}),e.jsx(N,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0",onClick:H,title:"修改昵称",children:e.jsx(YN,{className:"h-3 w-3"})})]})]})]})}),e.jsx("div",{className:"flex-1 overflow-hidden",children:e.jsx(es,{className:"h-full",children:e.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto space-y-3 sm:space-y-4",children:[n.length===0&&!v&&e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-muted-foreground",children:[e.jsx(ir,{className:"h-12 w-12 mb-4 opacity-50"}),e.jsxs("p",{className:"text-sm",children:["开始与 ",ee.bot_name||"麦麦"," 对话吧!"]})]}),n.map(Q=>e.jsxs("div",{className:$("flex gap-2 sm:gap-3",Q.type==="user"&&"flex-row-reverse",Q.type==="system"&&"justify-center",Q.type==="error"&&"justify-center"),children:[Q.type==="system"&&e.jsx("div",{className:"text-xs text-muted-foreground bg-muted/50 px-3 py-1 rounded-full max-w-[90%]",children:Q.content}),Q.type==="error"&&e.jsx("div",{className:"text-xs text-red-600 dark:text-red-400 bg-red-100 dark:bg-red-900/30 px-3 py-1 rounded-full max-w-[90%]",children:Q.content}),(Q.type==="user"||Q.type==="bot")&&e.jsxs(e.Fragment,{children:[e.jsx(Jc,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:e.jsx(Pc,{className:$("text-xs",Q.type==="bot"?"bg-primary/10 text-primary":"bg-secondary text-secondary-foreground"),children:Q.type==="bot"?e.jsx(ir,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}):e.jsx(to,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),e.jsxs("div",{className:$("flex flex-col gap-1 max-w-[75%] sm:max-w-[70%]",Q.type==="user"&&"items-end"),children:[e.jsxs("div",{className:"flex items-center gap-2 text-[10px] sm:text-xs text-muted-foreground",children:[e.jsx("span",{className:"hidden sm:inline",children:Q.sender?.name||(Q.type==="bot"?ee.bot_name:z)}),e.jsx("span",{children:me(Q.timestamp)})]}),e.jsx("div",{className:$("rounded-2xl px-3 py-2 text-sm whitespace-pre-wrap break-words",Q.type==="bot"?"bg-muted rounded-tl-sm":"bg-primary text-primary-foreground rounded-tr-sm"),children:Q.content})]})]})]},Q.id)),g&&e.jsxs("div",{className:"flex gap-2 sm:gap-3",children:[e.jsx(Jc,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:e.jsx(Pc,{className:"bg-primary/10 text-primary",children:e.jsx(ir,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),e.jsx("div",{className:"bg-muted rounded-2xl rounded-tl-sm px-4 py-3",children:e.jsxs("div",{className:"flex gap-1",children:[e.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"0ms"}}),e.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"150ms"}}),e.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"300ms"}})]})})]}),e.jsx("div",{ref:X})]})})}),e.jsx("div",{className:"shrink-0 border-t bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:e.jsx("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{value:c,onChange:Q=>d(Q.target.value),onKeyDown:q,placeholder:h?"输入消息...":"等待连接...",disabled:!h,className:"flex-1 h-10 sm:h-10"}),e.jsx(N,{onClick:y,disabled:!h||!c.trim(),size:"icon",className:"h-10 w-10 shrink-0",children:e.jsx(XN,{className:"h-4 w-4"})})]})})})]})}const B2=ai("pointer-events-none inline-flex select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono font-medium opacity-100",{variants:{size:{sm:"h-5 text-[10px]",default:"h-6 text-xs",lg:"h-7 text-sm"}},defaultVariants:{size:"default"}}),Yg=u.forwardRef(({className:n,size:r,abbrTitle:c,children:d,...h},x)=>e.jsx("kbd",{className:$(B2({size:r,className:n})),ref:x,...h,children:c?e.jsx("abbr",{title:c,children:d}):d}));Yg.displayName="Kbd";const H2=[{icon:xr,title:"首页",description:"查看仪表板概览",path:"/",category:"概览"},{icon:Ma,title:"麦麦主程序配置",description:"配置麦麦的核心设置",path:"/config/bot",category:"配置"},{icon:vg,title:"麦麦模型提供商配置",description:"配置模型提供商",path:"/config/modelProvider",category:"配置"},{icon:yg,title:"麦麦模型配置",description:"配置模型参数",path:"/config/model",category:"配置"},{icon:Qu,title:"表情包管理",description:"管理麦麦的表情包",path:"/resource/emoji",category:"资源"},{icon:si,title:"表达方式管理",description:"管理麦麦的表达方式",path:"/resource/expression",category:"资源"},{icon:Ng,title:"人物信息管理",description:"管理人物信息",path:"/resource/person",category:"资源"},{icon:KN,title:"统计信息",description:"查看使用统计",path:"/statistics",category:"监控"},{icon:rn,title:"插件市场",description:"浏览和安装插件",path:"/plugins",category:"扩展"},{icon:ao,title:"日志查看器",description:"查看系统日志",path:"/logs",category:"监控"},{icon:Rl,title:"系统设置",description:"配置系统参数",path:"/settings",category:"系统"}];function q2({open:n,onOpenChange:r}){const[c,d]=u.useState(""),[h,x]=u.useState(0),f=It(),j=H2.filter(v=>v.title.toLowerCase().includes(c.toLowerCase())||v.description.toLowerCase().includes(c.toLowerCase())||v.category.toLowerCase().includes(c.toLowerCase()));u.useEffect(()=>{n&&(d(""),x(0))},[n]);const g=u.useCallback(v=>{f({to:v}),r(!1)},[f,r]),_=u.useCallback(v=>{v.key==="ArrowDown"?(v.preventDefault(),x(k=>(k+1)%j.length)):v.key==="ArrowUp"?(v.preventDefault(),x(k=>(k-1+j.length)%j.length)):v.key==="Enter"&&j[h]&&(v.preventDefault(),g(j[h].path))},[j,h,g]);return e.jsx(Os,{open:n,onOpenChange:r,children:e.jsxs(Es,{className:"max-w-2xl p-0 gap-0",children:[e.jsxs(zs,{className:"px-4 pt-4 pb-0",children:[e.jsx(Ms,{className:"sr-only",children:"搜索"}),e.jsxs("div",{className:"relative",children:[e.jsx(St,{className:"absolute left-3 top-1/2 h-5 w-5 -translate-y-1/2 text-muted-foreground"}),e.jsx(ce,{value:c,onChange:v=>{d(v.target.value),x(0)},onKeyDown:_,placeholder:"搜索页面...",className:"h-12 pl-11 text-base border-0 focus-visible:ring-0 shadow-none",autoFocus:!0})]})]}),e.jsx("div",{className:"border-t",children:e.jsx(es,{className:"h-[400px]",children:j.length>0?e.jsx("div",{className:"p-2",children:j.map((v,k)=>{const z=v.icon;return e.jsxs("button",{onClick:()=>g(v.path),onMouseEnter:()=>x(k),className:$("w-full flex items-center gap-3 px-3 py-2.5 rounded-md text-left transition-colors",k===h?"bg-accent text-accent-foreground":"hover:bg-accent/50"),children:[e.jsx(z,{className:"h-5 w-5 flex-shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-sm",children:v.title}),e.jsx("div",{className:"text-xs text-muted-foreground truncate",children:v.description})]}),e.jsx("div",{className:"text-xs text-muted-foreground px-2 py-1 bg-muted rounded",children:v.category})]},v.path)})}):e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[e.jsx(St,{className:"h-12 w-12 text-muted-foreground/50 mb-4"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:c?"未找到匹配的页面":"输入关键词开始搜索"})]})})}),e.jsx("div",{className:"border-t px-4 py-3 flex items-center justify-between text-xs text-muted-foreground",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↑"}),e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↓"}),"导航"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Enter"}),"选择"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Esc"}),"关闭"]})]})})]})})}const G2=Xy,V2=Ky,F2=Zy,Xg=u.forwardRef(({className:n,inset:r,children:c,...d},h)=>e.jsxs(Hp,{ref:h,className:$("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",r&&"pl-8",n),...d,children:[c,e.jsx(il,{className:"ml-auto h-4 w-4"})]}));Xg.displayName=Hp.displayName;const Kg=u.forwardRef(({className:n,...r},c)=>e.jsx(qp,{ref:c,className:$("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]",n),...r}));Kg.displayName=qp.displayName;const Zg=u.forwardRef(({className:n,...r},c)=>e.jsx(Yy,{children:e.jsx(Gp,{ref:c,className:$("z-50 max-h-[--radix-context-menu-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]",n),...r})}));Zg.displayName=Gp.displayName;const va=u.forwardRef(({className:n,inset:r,...c},d)=>e.jsx(Vp,{ref:d,className:$("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",r&&"pl-8",n),...c}));va.displayName=Vp.displayName;const Q2=u.forwardRef(({className:n,children:r,checked:c,...d},h)=>e.jsxs(Fp,{ref:h,className:$("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",n),checked:c,...d,children:[e.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(Qp,{children:e.jsx(ha,{className:"h-4 w-4"})})}),r]}));Q2.displayName=Fp.displayName;const $2=u.forwardRef(({className:n,children:r,...c},d)=>e.jsxs($p,{ref:d,className:$("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",n),...c,children:[e.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(Qp,{children:e.jsx(ZN,{className:"h-2 w-2 fill-current"})})}),r]}));$2.displayName=$p.displayName;const Y2=u.forwardRef(({className:n,inset:r,...c},d)=>e.jsx(Yp,{ref:d,className:$("px-2 py-1.5 text-sm font-semibold text-foreground",r&&"pl-8",n),...c}));Y2.displayName=Yp.displayName;const or=u.forwardRef(({className:n,...r},c)=>e.jsx(Xp,{ref:c,className:$("-mx-1 my-1 h-px bg-border",n),...r}));or.displayName=Xp.displayName;const Jn=({className:n,...r})=>e.jsx("span",{className:$("ml-auto text-xs tracking-widest text-muted-foreground",n),...r});Jn.displayName="ContextMenuShortcut";const X2=gN,K2=jN,Z2=vN,Ig=u.forwardRef(({className:n,sideOffset:r=4,...c},d)=>e.jsx(pN,{children:e.jsx(cg,{ref:d,sideOffset:r,className:$("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",n),...c})}));Ig.displayName=cg.displayName;function I2({children:n}){y0();const[r,c]=u.useState(!0),[d,h]=u.useState(!1),[x,f]=u.useState(!1),{theme:j,setTheme:g}=Yu(),_=py(),v=It();u.useEffect(()=>{const K=U=>{(U.metaKey||U.ctrlKey)&&U.key==="k"&&(U.preventDefault(),f(!0))};return window.addEventListener("keydown",K),()=>window.removeEventListener("keydown",K)},[]);const k=[{title:"概览",items:[{icon:xr,label:"首页",path:"/"}]},{title:"麦麦配置编辑",items:[{icon:Ma,label:"麦麦主程序配置",path:"/config/bot"},{icon:vg,label:"AI模型厂商配置",path:"/config/modelProvider",tourId:"sidebar-model-provider"},{icon:yg,label:"模型管理与分配",path:"/config/model",tourId:"sidebar-model-management"},{icon:Kf,label:"麦麦适配器配置",path:"/config/adapter"}]},{title:"麦麦资源管理",items:[{icon:Qu,label:"表情包管理",path:"/resource/emoji"},{icon:si,label:"表达方式管理",path:"/resource/expression"},{icon:Ng,label:"人物信息管理",path:"/resource/person"},{icon:jg,label:"知识库图谱可视化",path:"/resource/knowledge-graph"}]},{title:"扩展与监控",items:[{icon:rn,label:"插件市场",path:"/plugins"},{icon:Kf,label:"插件配置",path:"/plugin-config"},{icon:ao,label:"日志查看器",path:"/logs"},{icon:si,label:"本地聊天室",path:"/chat"}]},{title:"系统",items:[{icon:Rl,label:"系统设置",path:"/settings"}]}],T=j==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":j,L=()=>{localStorage.removeItem("access-token"),v({to:"/auth"})};return e.jsx(X2,{delayDuration:300,children:e.jsxs("div",{className:"flex h-screen overflow-hidden",children:[e.jsxs("aside",{className:$("fixed inset-y-0 left-0 z-50 flex flex-col border-r bg-card transition-all duration-300 lg:relative lg:z-0","w-64 lg:w-auto",r?"lg:w-64":"lg:w-16",d?"translate-x-0":"-translate-x-full lg:translate-x-0"),children:[e.jsx("div",{className:"flex h-16 items-center border-b px-4",children:e.jsxs("div",{className:$("relative flex items-center justify-center flex-1 transition-all overflow-hidden","lg:flex-1",!r&&"lg:flex-none lg:w-8"),children:[e.jsxs("div",{className:$("flex items-baseline gap-2",!r&&"lg:hidden"),children:[e.jsx("span",{className:"font-bold text-xl text-primary-gradient whitespace-nowrap",children:"MaiBot WebUI"}),e.jsx("span",{className:"text-xs text-primary/60 whitespace-nowrap",children:a0()})]}),!r&&e.jsx("span",{className:"hidden lg:block font-bold text-primary-gradient text-2xl",children:"M"})]})}),e.jsx(es,{className:$("flex-1 overflow-x-hidden",!r&&"lg:w-16"),children:e.jsx("nav",{className:$("p-4",!r&&"lg:p-2 lg:w-16"),children:e.jsx("ul",{className:$("space-y-6",!r&&"lg:space-y-3 lg:w-full"),children:k.map((K,U)=>e.jsxs("li",{children:[e.jsx("div",{className:$("px-3 h-[1.25rem]","mb-2",!r&&"lg:mb-1 lg:invisible"),children:e.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground/60 whitespace-nowrap",children:K.title})}),!r&&U>0&&e.jsx("div",{className:"hidden lg:block mb-2 border-t border-border"}),e.jsx("ul",{className:"space-y-1",children:K.items.map(R=>{const ee=_({to:R.path}),V=R.icon,E=e.jsxs(e.Fragment,{children:[ee&&e.jsx("div",{className:"absolute left-0 top-1/2 h-8 w-1 -translate-y-1/2 rounded-r-full bg-primary transition-opacity duration-300"}),e.jsxs("div",{className:$("flex items-center transition-all duration-300",r?"gap-3":"gap-3 lg:gap-0"),children:[e.jsx(V,{className:$("h-5 w-5 flex-shrink-0",ee&&"text-primary"),strokeWidth:2,fill:"none"}),e.jsx("span",{className:$("text-sm font-medium whitespace-nowrap transition-all duration-300",ee&&"font-semibold",r?"opacity-100 max-w-[200px]":"opacity-100 max-w-[200px] lg:opacity-0 lg:max-w-0 lg:overflow-hidden"),children:R.label})]})]});return e.jsx("li",{className:"relative",children:e.jsxs(K2,{children:[e.jsx(Z2,{asChild:!0,children:e.jsx(Kc,{to:R.path,"data-tour":R.tourId,className:$("relative flex items-center rounded-lg py-2 transition-all duration-300","hover:bg-accent hover:text-accent-foreground",ee?"bg-accent text-foreground":"text-muted-foreground hover:text-foreground",r?"px-3":"px-3 lg:px-0 lg:justify-center lg:w-12 lg:mx-auto"),onClick:()=>h(!1),children:E})}),!r&&e.jsx(Ig,{side:"right",className:"hidden lg:block",children:e.jsx("p",{children:R.label})})]})},R.path)})})]},K.title))})})})]}),d&&e.jsx("div",{className:"fixed inset-0 z-40 bg-black/50 lg:hidden",onClick:()=>h(!1)}),e.jsxs("div",{className:"flex flex-1 flex-col overflow-hidden",children:[e.jsxs("header",{className:"flex h-16 items-center justify-between border-b bg-card/80 backdrop-blur-md px-4 sticky top-0 z-10",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>h(!d),className:"rounded-lg p-2 hover:bg-accent lg:hidden",children:e.jsx(IN,{className:"h-5 w-5"})}),e.jsx("button",{onClick:()=>c(!r),className:"hidden rounded-lg p-2 hover:bg-accent lg:block",title:r?"收起侧边栏":"展开侧边栏",children:e.jsx(cn,{className:$("h-5 w-5 transition-transform",!r&&"rotate-180")})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:()=>f(!0),className:"relative hidden md:flex items-center w-64 h-9 pl-9 pr-16 bg-background/50 border rounded-md hover:bg-accent/50 transition-colors text-left",children:[e.jsx(St,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"搜索..."}),e.jsxs(Yg,{size:"sm",className:"absolute right-2 top-1/2 -translate-y-1/2",children:[e.jsx("span",{className:"text-xs",children:"⌘"}),"K"]})]}),e.jsx(q2,{open:x,onOpenChange:f}),e.jsxs(N,{variant:"ghost",size:"sm",onClick:()=>window.open("https://docs.mai-mai.org","_blank"),className:"gap-2",title:"查看麦麦文档",children:[e.jsx(JN,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:"麦麦文档"})]}),e.jsx("button",{onClick:K=>{Pb(T==="dark"?"light":"dark",g,K)},className:"rounded-lg p-2 hover:bg-accent",title:T==="dark"?"切换到浅色模式":"切换到深色模式",children:T==="dark"?e.jsx(Ou,{className:"h-5 w-5"}):e.jsx(Ru,{className:"h-5 w-5"})}),e.jsx("div",{className:"h-6 w-px bg-border"}),e.jsxs(N,{variant:"ghost",size:"sm",onClick:L,className:"gap-2",title:"登出系统",children:[e.jsx(Zf,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:"登出"})]})]})]}),e.jsxs(G2,{children:[e.jsx(V2,{asChild:!0,children:e.jsx("main",{className:"flex-1 overflow-hidden bg-background",children:n})}),e.jsxs(Zg,{className:"w-64",children:[e.jsxs(va,{onClick:()=>v({to:"/"}),children:[e.jsx(xr,{className:"mr-2 h-4 w-4"}),"首页"]}),e.jsxs(va,{onClick:()=>v({to:"/settings"}),children:[e.jsx(Rl,{className:"mr-2 h-4 w-4"}),"系统设置"]}),e.jsxs(va,{onClick:()=>v({to:"/logs"}),children:[e.jsx(ao,{className:"mr-2 h-4 w-4"}),"日志查看器"]}),e.jsx(or,{}),e.jsxs(F2,{children:[e.jsxs(Xg,{children:[e.jsx(fg,{className:"mr-2 h-4 w-4"}),"切换主题"]}),e.jsxs(Kg,{className:"w-48",children:[e.jsxs(va,{onClick:()=>g("light"),disabled:j==="light",children:[e.jsx(Ou,{className:"mr-2 h-4 w-4"}),"浅色",j==="light"&&e.jsx(Jn,{children:"✓"})]}),e.jsxs(va,{onClick:()=>g("dark"),disabled:j==="dark",children:[e.jsx(Ru,{className:"mr-2 h-4 w-4"}),"深色",j==="dark"&&e.jsx(Jn,{children:"✓"})]}),e.jsxs(va,{onClick:()=>g("system"),disabled:j==="system",children:[e.jsx(Rl,{className:"mr-2 h-4 w-4"}),"跟随系统",j==="system"&&e.jsx(Jn,{children:"✓"})]})]})]}),e.jsx(or,{}),e.jsxs(va,{onClick:()=>window.location.reload(),children:[e.jsx(PN,{className:"mr-2 h-4 w-4"}),"刷新页面",e.jsx(Jn,{children:"⌘R"})]}),e.jsxs(va,{onClick:()=>f(!0),children:[e.jsx(St,{className:"mr-2 h-4 w-4"}),"搜索",e.jsx(Jn,{children:"⌘K"})]}),e.jsx(or,{}),e.jsxs(va,{onClick:()=>window.open("https://docs.mai-mai.org","_blank"),children:[e.jsx(dr,{className:"mr-2 h-4 w-4"}),"麦麦文档"]}),e.jsx(or,{}),e.jsxs(va,{onClick:L,className:"text-destructive focus:text-destructive",children:[e.jsx(Zf,{className:"mr-2 h-4 w-4"}),"登出系统"]})]})]})]})]})})}function J2(n){const r=n.split(` +`).slice(1),c=[];for(const d of r){const h=d.trim();if(!h.startsWith("at "))continue;const x=h.match(/at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?$/);x?c.push({functionName:x[1]||"",fileName:x[2],lineNumber:x[3],columnNumber:x[4],raw:h}):c.push({functionName:"",fileName:"",lineNumber:"",columnNumber:"",raw:h})}return c}function P2({error:n,errorInfo:r}){const[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),g=n.stack?J2(n.stack):[],_=async()=>{const v=` +Error: ${n.name} +Message: ${n.message} + +Stack Trace: +${n.stack||"No stack trace available"} + +Component Stack: +${r?.componentStack||"No component stack available"} + +URL: ${window.location.href} +User Agent: ${navigator.userAgent} +Time: ${new Date().toISOString()} + `.trim();try{await navigator.clipboard.writeText(v),j(!0),setTimeout(()=>j(!1),2e3)}catch(k){console.error("Failed to copy:",k)}};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(ua,{variant:"destructive",className:"border-red-500/50 bg-red-500/10",children:[e.jsx(ya,{className:"h-4 w-4"}),e.jsxs(ma,{className:"font-mono text-sm",children:[e.jsxs("span",{className:"font-semibold",children:[n.name,":"]})," ",n.message]})]}),g.length>0&&e.jsxs(Gu,{open:c,onOpenChange:d,children:[e.jsx(Vu,{asChild:!0,children:e.jsxs(N,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[e.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[e.jsx(WN,{className:"h-4 w-4"}),"Stack Trace (",g.length," frames)"]}),c?e.jsx(fr,{className:"h-4 w-4"}):e.jsx(Ll,{className:"h-4 w-4"})]})}),e.jsx(Fu,{children:e.jsx(es,{className:"h-[280px] rounded-md border bg-muted/30",children:e.jsx("div",{className:"p-3 space-y-1",children:g.map((v,k)=>e.jsx("div",{className:"font-mono text-xs p-2 rounded hover:bg-muted/50 transition-colors",children:e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsxs("span",{className:"text-muted-foreground w-6 text-right flex-shrink-0",children:[k+1,"."]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("span",{className:"text-primary font-medium",children:v.functionName}),v.fileName&&e.jsxs("div",{className:"text-muted-foreground mt-0.5 break-all",children:[v.fileName,v.lineNumber&&e.jsxs("span",{className:"text-yellow-600 dark:text-yellow-400",children:[":",v.lineNumber,":",v.columnNumber]})]})]})]})},k))})})})]}),r?.componentStack&&e.jsxs(Gu,{open:h,onOpenChange:x,children:[e.jsx(Vu,{asChild:!0,children:e.jsxs(N,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[e.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[e.jsx(ya,{className:"h-4 w-4"}),"Component Stack"]}),h?e.jsx(fr,{className:"h-4 w-4"}):e.jsx(Ll,{className:"h-4 w-4"})]})}),e.jsx(Fu,{children:e.jsx(es,{className:"h-[200px] rounded-md border bg-muted/30",children:e.jsx("pre",{className:"p-3 font-mono text-xs whitespace-pre-wrap text-muted-foreground",children:r.componentStack})})})]}),e.jsx(N,{variant:"outline",size:"sm",onClick:_,className:"w-full",children:f?e.jsxs(e.Fragment,{children:[e.jsx(ha,{className:"mr-2 h-4 w-4 text-green-500"}),"已复制到剪贴板"]}):e.jsxs(e.Fragment,{children:[e.jsx(so,{className:"mr-2 h-4 w-4"}),"复制错误信息"]})})]})}function Jg({error:n,errorInfo:r}){const c=()=>{window.location.href="/"},d=()=>{window.location.reload()};return e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background p-4",children:e.jsxs(Be,{className:"w-full max-w-2xl shadow-lg",children:[e.jsxs(gs,{className:"text-center pb-2",children:[e.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30 mb-4",children:e.jsx(ya,{className:"h-8 w-8 text-red-600 dark:text-red-400"})}),e.jsx(js,{className:"text-2xl font-bold",children:"页面出现了问题"}),e.jsx(Zs,{className:"text-base mt-2",children:"应用程序遇到了意外错误。您可以尝试刷新页面或返回首页。"})]}),e.jsxs(bs,{className:"space-y-4",children:[e.jsx(P2,{error:n,errorInfo:r}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 pt-2",children:[e.jsxs(N,{onClick:d,className:"flex-1",children:[e.jsx(ft,{className:"mr-2 h-4 w-4"}),"刷新页面"]}),e.jsxs(N,{onClick:c,variant:"outline",className:"flex-1",children:[e.jsx(xr,{className:"mr-2 h-4 w-4"}),"返回首页"]})]}),e.jsx("p",{className:"text-xs text-center text-muted-foreground pt-2",children:"如果问题持续存在,请将错误信息复制并反馈给开发者"})]})]})})}class W2 extends u.Component{constructor(r){super(r),this.state={hasError:!1,error:null,errorInfo:null}}static getDerivedStateFromError(r){return{hasError:!0,error:r}}componentDidCatch(r,c){console.error("ErrorBoundary caught an error:",r,c),this.setState({errorInfo:c})}handleReset=()=>{this.setState({hasError:!1,error:null,errorInfo:null})};render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback:e.jsx(Jg,{error:this.state.error,errorInfo:this.state.errorInfo}):this.props.children}}function Pg({error:n}){return e.jsx(Jg,{error:n,errorInfo:null})}const kr=gy({component:()=>e.jsxs(e.Fragment,{children:[e.jsx(vp,{}),!1]}),beforeLoad:()=>{if(window.location.pathname==="/"&&!Dg())throw vy({to:"/auth"})}}),e_=lt({getParentRoute:()=>kr,path:"/auth",component:N0}),s_=lt({getParentRoute:()=>kr,path:"/setup",component:B0}),Nt=lt({getParentRoute:()=>kr,id:"protected",component:()=>e.jsx(I2,{children:e.jsx(vp,{})}),errorComponent:({error:n})=>e.jsx(Pg,{error:n})}),t_=lt({getParentRoute:()=>Nt,path:"/",component:Ib}),a_=lt({getParentRoute:()=>Nt,path:"/config/bot",component:J0}),l_=lt({getParentRoute:()=>Nt,path:"/config/modelProvider",component:Nw}),n_=lt({getParentRoute:()=>Nt,path:"/config/model",component:Sw}),i_=lt({getParentRoute:()=>Nt,path:"/config/adapter",component:kw}),r_=lt({getParentRoute:()=>Nt,path:"/resource/emoji",component:Kw}),c_=lt({getParentRoute:()=>Nt,path:"/resource/expression",component:i1}),o_=lt({getParentRoute:()=>Nt,path:"/resource/person",component:g1}),d_=lt({getParentRoute:()=>Nt,path:"/resource/knowledge-graph",component:C1}),u_=lt({getParentRoute:()=>Nt,path:"/logs",component:a2}),m_=lt({getParentRoute:()=>Nt,path:"/chat",component:U2}),h_=lt({getParentRoute:()=>Nt,path:"/plugins",component:k2}),x_=lt({getParentRoute:()=>Nt,path:"/plugin-config",component:z2}),f_=lt({getParentRoute:()=>Nt,path:"/plugin-mirrors",component:M2}),p_=lt({getParentRoute:()=>Nt,path:"/settings",component:h0}),g_=lt({getParentRoute:()=>kr,path:"*",component:Og}),j_=kr.addChildren([e_,s_,Nt.addChildren([t_,a_,l_,n_,i_,r_,c_,o_,d_,h_,x_,f_,u_,m_,p_]),g_]),v_=jy({routeTree:j_,defaultNotFoundComponent:Og,defaultErrorComponent:({error:n})=>e.jsx(Pg,{error:n})});function y_({children:n,defaultTheme:r="system",storageKey:c="ui-theme",...d}){const[h,x]=u.useState(()=>localStorage.getItem(c)||r);u.useEffect(()=>{const j=window.document.documentElement;if(j.classList.remove("light","dark"),h==="system"){const g=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";j.classList.add(g);return}j.classList.add(h)},[h]),u.useEffect(()=>{const j=localStorage.getItem("accent-color");if(j){const g=document.documentElement,v={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[j];v&&(g.style.setProperty("--primary",v.hsl),v.gradient?(g.style.setProperty("--primary-gradient",v.gradient),g.classList.add("has-gradient")):(g.style.removeProperty("--primary-gradient"),g.classList.remove("has-gradient")))}},[]);const f={theme:h,setTheme:j=>{localStorage.setItem(c,j),x(j)}};return e.jsx(kg.Provider,{...d,value:f,children:n})}function N_({children:n,defaultEnabled:r=!0,defaultWavesEnabled:c=!0,storageKey:d="enable-animations",wavesStorageKey:h="enable-waves-background"}){const[x,f]=u.useState(()=>{const v=localStorage.getItem(d);return v!==null?v==="true":r}),[j,g]=u.useState(()=>{const v=localStorage.getItem(h);return v!==null?v==="true":c});u.useEffect(()=>{const v=document.documentElement;x?v.classList.remove("no-animations"):v.classList.add("no-animations"),localStorage.setItem(d,String(x))},[x,d]),u.useEffect(()=>{localStorage.setItem(h,String(j))},[j,h]);const _={enableAnimations:x,setEnableAnimations:f,enableWavesBackground:j,setEnableWavesBackground:g};return e.jsx(Tg.Provider,{value:_,children:n})}const b_=yN,Wg=u.forwardRef(({className:n,...r},c)=>e.jsx(og,{ref:c,className:$("fixed bottom-0 right-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:max-w-[420px] gap-2",n),...r}));Wg.displayName=og.displayName;const w_=ai("group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-slide-in-from-right data-[state=open]:animate-fade-in data-[state=closed]:animate-slide-out-to-right data-[state=closed]:animate-fade-out data-[swipe=end]:animate-slide-out-to-right",{variants:{variant:{default:"border bg-primary/5 text-foreground backdrop-blur-sm",destructive:"destructive group border-destructive bg-destructive/10 text-destructive-foreground backdrop-blur-sm"}},defaultVariants:{variant:"default"}}),ej=u.forwardRef(({className:n,variant:r,...c},d)=>e.jsx(dg,{ref:d,className:$(w_({variant:r}),n),...c}));ej.displayName=dg.displayName;const __=u.forwardRef(({className:n,...r},c)=>e.jsx(ug,{ref:c,className:$("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",n),...r}));__.displayName=ug.displayName;const sj=u.forwardRef(({className:n,...r},c)=>e.jsx(mg,{ref:c,className:$("absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",n),"toast-close":"",...r,children:e.jsx(li,{className:"h-4 w-4"})}));sj.displayName=mg.displayName;const tj=u.forwardRef(({className:n,...r},c)=>e.jsx(hg,{ref:c,className:$("text-sm font-semibold [&+div]:text-xs",n),...r}));tj.displayName=hg.displayName;const aj=u.forwardRef(({className:n,...r},c)=>e.jsx(xg,{ref:c,className:$("text-sm opacity-90",n),...r}));aj.displayName=xg.displayName;function S_(){const{toasts:n}=Bs();return e.jsxs(b_,{children:[n.map(function({id:r,title:c,description:d,action:h,...x}){return e.jsxs(ej,{...x,children:[e.jsxs("div",{className:"grid gap-1",children:[c&&e.jsx(tj,{children:c}),d&&e.jsx(aj,{children:d})]}),h,e.jsx(sj,{})]},r)}),e.jsx(Wg,{})]})}Bb.createRoot(document.getElementById("root")).render(e.jsx(u.StrictMode,{children:e.jsx(W2,{children:e.jsx(y_,{defaultTheme:"system",children:e.jsx(N_,{children:e.jsxs(pw,{children:[e.jsx(yy,{router:v_}),e.jsx(vw,{}),e.jsx(S_,{})]})})})})})); diff --git a/webui/dist/assets/index-_a_MShLH.css b/webui/dist/assets/index-_a_MShLH.css deleted file mode 100644 index 6cfb460f..00000000 --- a/webui/dist/assets/index-_a_MShLH.css +++ /dev/null @@ -1 +0,0 @@ -*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 0 0% 100%;--foreground: 222.2 84% 4.9%;--card: 0 0% 100%;--card-foreground: 222.2 84% 4.9%;--popover: 0 0% 100%;--popover-foreground: 222.2 84% 4.9%;--primary: 221.2 83.2% 53.3%;--primary-foreground: 210 40% 98%;--primary-gradient: none;--secondary: 210 40% 96.1%;--secondary-foreground: 222.2 47.4% 11.2%;--muted: 210 40% 96.1%;--muted-foreground: 215.4 16.3% 46.9%;--accent: 210 40% 96.1%;--accent-foreground: 222.2 47.4% 11.2%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 210 40% 98%;--border: 214.3 31.8% 91.4%;--input: 214.3 31.8% 91.4%;--ring: 221.2 83.2% 53.3%;--radius: .5rem;--chart-1: 221.2 83.2% 53.3%;--chart-2: 160 60% 45%;--chart-3: 30 80% 55%;--chart-4: 280 65% 60%;--chart-5: 340 75% 55%}.dark{--background: 222.2 84% 4.9%;--foreground: 210 40% 98%;--card: 222.2 84% 4.9%;--card-foreground: 210 40% 98%;--popover: 222.2 84% 4.9%;--popover-foreground: 210 40% 98%;--primary: 217.2 91.2% 59.8%;--primary-foreground: 222.2 47.4% 11.2%;--primary-gradient: none;--secondary: 217.2 32.6% 17.5%;--secondary-foreground: 210 40% 98%;--muted: 217.2 32.6% 17.5%;--muted-foreground: 215 20.2% 65.1%;--accent: 217.2 32.6% 17.5%;--accent-foreground: 210 40% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 210 40% 98%;--border: 217.2 32.6% 17.5%;--input: 217.2 32.6% 17.5%;--ring: 224.3 76.3% 48%;--chart-1: 217.2 91.2% 59.8%;--chart-2: 160 60% 50%;--chart-3: 30 80% 60%;--chart-4: 280 65% 65%;--chart-5: 340 75% 60%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-1\/4{bottom:25%}.bottom-4{bottom:1rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.left-1\/4{left:25%}.left-2{left:.5rem}.left-2\.5{left:.625rem}.left-3{left:.75rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-1\.5{right:.375rem}.right-1\/4{right:25%}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-1\/4{top:25%}.top-2{top:.5rem}.top-2\.5{top:.625rem}.top-3{top:.75rem}.top-4{top:1rem}.top-\[50\%\]{top:50%}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.order-1{order:1}.order-2{order:2}.col-span-2{grid-column:span 2 / span 2}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-mt-2{margin-top:-.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-10{margin-left:2.5rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-auto{aspect-ratio:auto}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:16 / 9}.size-4{width:1rem;height:1rem}.size-\[--cell-size\]{width:var(--cell-size);height:var(--cell-size)}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[--cell-size\]{height:var(--cell-size)}.h-\[1\.25rem\]{height:1.25rem}.h-\[1px\]{height:1px}.h-\[200px\]{height:200px}.h-\[250px\]{height:250px}.h-\[280px\]{height:280px}.h-\[300px\]{height:300px}.h-\[400px\]{height:400px}.h-\[calc\(100vh-200px\)\]{height:calc(100vh - 200px)}.h-\[calc\(100vh-240px\)\]{height:calc(100vh - 240px)}.h-\[calc\(100vh-260px\)\]{height:calc(100vh - 260px)}.h-\[calc\(100vh-4rem\)\]{height:calc(100vh - 4rem)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\[--radix-context-menu-content-available-height\]{max-height:var(--radix-context-menu-content-available-height)}.max-h-\[--radix-select-content-available-height\]{max-height:var(--radix-select-content-available-height)}.max-h-\[300px\]{max-height:300px}.max-h-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[calc\(90vh-120px\)\]{max-height:calc(90vh - 120px)}.max-h-\[calc\(90vh-8rem\)\]{max-height:calc(90vh - 8rem)}.max-h-none{max-height:none}.max-h-screen{max-height:100vh}.min-h-0{min-height:0px}.min-h-10{min-height:2.5rem}.min-h-\[100px\]{min-height:100px}.min-h-\[300px\]{min-height:300px}.min-h-\[60px\]{min-height:60px}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[--cell-size\]{width:var(--cell-size)}.w-\[100px\]{width:100px}.w-\[120px\]{width:120px}.w-\[130px\]{width:130px}.w-\[1px\]{width:1px}.w-\[65px\]{width:65px}.w-\[95vw\]{width:95vw}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[--cell-size\]{min-width:var(--cell-size)}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[80px\]{min-width:80px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-\[150px\]{max-width:150px}.max-w-\[200px\]{max-width:200px}.max-w-\[60px\]{max-width:60px}.max-w-\[75\%\]{max-width:75%}.max-w-\[90\%\]{max-width:90%}.max-w-\[95vw\]{max-width:95vw}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\[--radix-context-menu-content-transform-origin\]{transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\[--radix-popover-content-transform-origin\]{transform-origin:var(--radix-popover-content-transform-origin)}.origin-\[--radix-select-content-transform-origin\]{transform-origin:var(--radix-select-content-transform-origin)}.origin-\[--radix-tooltip-content-transform-origin\]{transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.rounded-tr-sm{border-top-right-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-\[1\.5px\]{border-width:1.5px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[--color-border\]{border-color:var(--color-border)}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-500\/50{border-color:#f59e0b80}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-700{--tw-border-opacity: 1;border-color:rgb(29 78 216 / var(--tw-border-opacity, 1))}.border-border{border-color:hsl(var(--border))}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-current{border-color:currentColor}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-green-300{--tw-border-opacity: 1;border-color:rgb(134 239 172 / var(--tw-border-opacity, 1))}.border-green-700{--tw-border-opacity: 1;border-color:rgb(21 128 61 / var(--tw-border-opacity, 1))}.border-input{border-color:hsl(var(--input))}.border-muted{border-color:hsl(var(--muted))}.border-muted-foreground\/30{border-color:hsl(var(--muted-foreground) / .3)}.border-muted-foreground\/50{border-color:hsl(var(--muted-foreground) / .5)}.border-orange-200{--tw-border-opacity: 1;border-color:rgb(254 215 170 / var(--tw-border-opacity, 1))}.border-orange-600{--tw-border-opacity: 1;border-color:rgb(234 88 12 / var(--tw-border-opacity, 1))}.border-primary{border-color:hsl(var(--primary))}.border-primary\/20{border-color:hsl(var(--primary) / .2)}.border-primary\/30{border-color:hsl(var(--primary) / .3)}.border-primary\/50{border-color:hsl(var(--primary) / .5)}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-red-500\/50{border-color:#ef444480}.border-transparent{border-color:transparent}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-yellow-500\/50{border-color:#eab30880}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\[--color-bg\]{background-color:var(--color-bg)}.bg-accent{background-color:hsl(var(--accent))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-background{background-color:hsl(var(--background))}.bg-background\/50{background-color:hsl(var(--background) / .5)}.bg-background\/80{background-color:hsl(var(--background) / .8)}.bg-background\/95{background-color:hsl(var(--background) / .95)}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-black\/50{background-color:#00000080}.bg-black\/80{background-color:#000c}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-blue-900\/20{background-color:#1e3a8a33}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-card\/80{background-color:hsl(var(--card) / .8)}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-800\/20{background-color:#1f293733}.bg-gray-800\/30{background-color:#1f29374d}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground\/50{background-color:hsl(var(--muted-foreground) / .5)}.bg-muted\/20{background-color:hsl(var(--muted) / .2)}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-orange-600{--tw-bg-opacity: 1;background-color:rgb(234 88 12 / var(--tw-bg-opacity, 1))}.bg-pink-500{--tw-bg-opacity: 1;background-color:rgb(236 72 153 / var(--tw-bg-opacity, 1))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/20{background-color:hsl(var(--primary) / .2)}.bg-primary\/5{background-color:hsl(var(--primary) / .05)}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(168 85 247 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-red-900\/20{background-color:#7f1d1d33}.bg-red-900\/30{background-color:#7f1d1d4d}.bg-secondary{background-color:hsl(var(--secondary))}.bg-secondary\/5{background-color:hsl(var(--secondary) / .05)}.bg-slate-200{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity, 1))}.bg-slate-300{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity, 1))}.bg-slate-400{--tw-bg-opacity: 1;background-color:rgb(148 163 184 / var(--tw-bg-opacity, 1))}.bg-slate-700{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-200{--tw-bg-opacity: 1;background-color:rgb(254 240 138 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-yellow-500\/10{background-color:#eab3081a}.bg-yellow-500\/5{background-color:#eab3080d}.bg-yellow-900\/20{background-color:#713f1233}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-blue-500{--tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-500{--tw-gradient-from: #22c55e var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 197 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-500{--tw-gradient-from: #f97316 var(--tw-gradient-from-position);--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-primary\/5{--tw-gradient-from: hsl(var(--primary) / .05) var(--tw-gradient-from-position);--tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-500{--tw-gradient-from: #a855f7 var(--tw-gradient-from-position);--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-500{--tw-gradient-from: #ef4444 var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 68 68 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-200{--tw-gradient-from: #e2e8f0 var(--tw-gradient-from-position);--tw-gradient-to: rgb(226 232 240 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-300{--tw-gradient-from: #cbd5e1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(203 213 225 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-400{--tw-gradient-from: #94a3b8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(148 163 184 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-background{--tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), hsl(var(--background)) var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-blue-600{--tw-gradient-to: #2563eb var(--tw-gradient-to-position)}.to-cyan-500{--tw-gradient-to: #06b6d4 var(--tw-gradient-to-position)}.to-emerald-500{--tw-gradient-to: #10b981 var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to: #16a34a var(--tw-gradient-to-position)}.to-orange-500{--tw-gradient-to: #f97316 var(--tw-gradient-to-position)}.to-pink-500{--tw-gradient-to: #ec4899 var(--tw-gradient-to-position)}.to-primary\/10{--tw-gradient-to: hsl(var(--primary) / .1) var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to: #a855f7 var(--tw-gradient-to-position)}.to-secondary\/5{--tw-gradient-to: hsl(var(--secondary) / .05) var(--tw-gradient-to-position)}.to-slate-700{--tw-gradient-to: #334155 var(--tw-gradient-to-position)}.to-slate-800{--tw-gradient-to: #1e293b var(--tw-gradient-to-position)}.to-slate-900{--tw-gradient-to: #0f172a var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.fill-yellow-400{fill:#facc15}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[1px\]{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[--cell-size\]{padding-left:var(--cell-size);padding-right:var(--cell-size)}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pl-10{padding-left:2.5rem}.pl-11{padding-left:2.75rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-1{padding-right:.25rem}.pr-10{padding-right:2.5rem}.pr-16{padding-right:4rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.text-\[150px\]{font-size:150px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/50{color:hsl(var(--foreground) / .5)}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/50{color:hsl(var(--muted-foreground) / .5)}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-800{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.text-orange-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary\/10{color:hsl(var(--primary) / .1)}.text-primary\/30{color:hsl(var(--primary) / .3)}.text-primary\/60{color:hsl(var(--primary) / .6)}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.text-yellow-900{--tw-text-opacity: 1;color:rgb(113 63 18 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-primary{--tw-ring-color: hsl(var(--primary))}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur-3xl{--tw-blur: blur(64px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.text-primary-gradient{color:hsl(var(--primary))}.has-gradient .text-primary-gradient{background:var(--primary-gradient);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.\[--cell-size\:2rem\]{--cell-size: 2rem}.no-animations *,.no-animations *:before,.no-animations *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.no-animations *:hover{transition-duration:.01ms!important}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:999}.__floater{z-index:99999!important;pointer-events:auto!important}.react-joyride__overlay,.react-joyride__spotlight{z-index:99998!important}.react-joyride__tooltip{pointer-events:auto!important}#tour-portal-container *{pointer-events:auto}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:border-primary\/50:hover{border-color:hsl(var(--primary) / .5)}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent) / .5)}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-orange-700:hover{--tw-bg-opacity: 1;background-color:rgb(194 65 12 / var(--tw-bg-opacity, 1))}.hover\:bg-primary\/10:hover{background-color:hsl(var(--primary) / .1)}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-secondary:hover{background-color:hsl(var(--secondary))}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-secondary\/90:hover{background-color:hsl(var(--secondary) / .9)}.hover\:bg-transparent:hover{background-color:transparent}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-green-700:hover{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.hover\:text-orange-700:hover{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.hover\:text-primary\/80:hover{color:hsl(var(--primary) / .8)}.hover\:text-red-700:hover{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.hover\:text-yellow-300:hover{--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.hover\:text-yellow-800:hover{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:ring-2:hover{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.hover\:ring-primary:hover{--tw-ring-color: hsl(var(--primary))}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-gray-100:focus{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-red-500:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.active\:cursor-grabbing:active{cursor:grabbing}.active\:border-primary\/70:active{border-color:hsl(var(--primary) / .7)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group[open] .group-open\:rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:opacity-100{opacity:1}.group.destructive .group-\[\.destructive\]\:border-muted\/40{border-color:hsl(var(--muted) / .4)}.group.destructive .group-\[\.destructive\]\:text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:hover\:text-red-50:hover{--tw-text-opacity: 1;color:rgb(254 242 242 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-red-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(248 113 113 / var(--tw-ring-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-offset-red-600:focus{--tw-ring-offset-color: #dc2626}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-selected\:text-muted-foreground[aria-selected=true]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true],.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked],.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x: var(--radix-toast-swipe-end-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x: var(--radix-toast-swipe-move-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes fade-out{0%{opacity:1}to{opacity:0}}.data-\[state\=closed\]\:animate-fade-out[data-state=closed]{animation:fade-out .15s ease-in}.data-\[state\=closed\]\:animate-slide-out-to-right[data-state=closed]{animation:slide-out-to-right .2s ease-in}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.data-\[state\=open\]\:animate-fade-in[data-state=open]{animation:fade-in .2s ease-out}@keyframes slide-in-from-right{0%{transform:translate(100%)}to{transform:translate(0)}}.data-\[state\=open\]\:animate-slide-in-from-right[data-state=open]{animation:slide-in-from-right .3s ease-out}@keyframes slide-out-to-right{0%{transform:translate(0)}to{transform:translate(100%)}}.data-\[swipe\=end\]\:animate-slide-out-to-right[data-swipe=end]{animation:slide-out-to-right .2s ease-in}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) - 2px)}.data-\[selected\=true\]\:rounded-none[data-selected=true]{border-radius:0}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:hsl(var(--primary))}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:hsl(var(--accent))}.data-\[range-start\=true\]\:bg-primary[data-range-start=true],.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:hsl(var(--primary))}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:hsl(var(--primary-foreground))}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:hsl(var(--accent-foreground))}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true],.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:hsl(var(--primary-foreground))}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:opacity-50[data-disabled=true],.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.data-\[state\=active\]\:duration-300[data-state=active]{transition-duration:.3s}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:relative{position:relative}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:z-10{z-index:10}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:border-ring{border-color:hsl(var(--ring))}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-\[3px\]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}@supports (backdrop-filter: var(--tw)){.supports-\[backdrop-filter\]\:bg-background\/60{background-color:hsl(var(--background) / .6)}}.dark\:border-amber-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(146 64 14 / var(--tw-border-opacity, 1))}.dark\:border-blue-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity, 1))}.dark\:border-gray-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(17 24 39 / var(--tw-border-opacity, 1))}.dark\:border-green-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(22 101 52 / var(--tw-border-opacity, 1))}.dark\:border-orange-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(124 45 18 / var(--tw-border-opacity, 1))}.dark\:border-yellow-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(113 63 18 / var(--tw-border-opacity, 1))}.dark\:bg-amber-950\/30:is(.dark *){background-color:#451a034d}.dark\:bg-blue-500\/20:is(.dark *){background-color:#3b82f633}.dark\:bg-blue-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 37 84 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950\/20:is(.dark *){background-color:#17255433}.dark\:bg-blue-950\/30:is(.dark *){background-color:#1725544d}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800\/30:is(.dark *){background-color:#1f29374d}.dark\:bg-gray-800\/50:is(.dark *){background-color:#1f293780}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(3 7 18 / var(--tw-bg-opacity, 1))}.dark\:bg-green-900\/30:is(.dark *){background-color:#14532d4d}.dark\:bg-green-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(5 46 22 / var(--tw-bg-opacity, 1))}.dark\:bg-orange-950\/20:is(.dark *){background-color:#43140733}.dark\:bg-red-500\/20:is(.dark *){background-color:#ef444433}.dark\:bg-red-600\/30:is(.dark *){background-color:#dc26264d}.dark\:bg-red-900\/30:is(.dark *){background-color:#7f1d1d4d}.dark\:bg-red-950\/50:is(.dark *){background-color:#450a0a80}.dark\:bg-yellow-500\/20:is(.dark *){background-color:#eab30833}.dark\:bg-yellow-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1))}.dark\:bg-yellow-950\/30:is(.dark *){background-color:#4220064d}.dark\:text-amber-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 243 199 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-blue-100:is(.dark *){--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-200:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-cyan-500:is(.dark *){--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-orange-100:is(.dark *){--tw-text-opacity: 1;color:rgb(255 237 213 / var(--tw-text-opacity, 1))}.dark\:text-orange-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 215 170 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-red-500:is(.dark *){--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.dark\:text-yellow-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 249 195 / var(--tw-text-opacity, 1))}.dark\:text-yellow-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.dark\:text-yellow-400:is(.dark *){--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.dark\:text-yellow-500:is(.dark *){--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:hover\:text-yellow-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:focus\:bg-gray-800:focus:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}@media(min-width:640px){.sm\:right-2{right:.5rem}.sm\:right-3{right:.75rem}.sm\:top-2{top:.5rem}.sm\:top-3{top:.75rem}.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:mb-3{margin-bottom:.75rem}.sm\:mb-4{margin-bottom:1rem}.sm\:mb-6{margin-bottom:1.5rem}.sm\:ml-0{margin-left:0}.sm\:ml-1{margin-left:.25rem}.sm\:mr-1{margin-right:.25rem}.sm\:mr-2{margin-right:.5rem}.sm\:mt-0{margin-top:0}.sm\:mt-2{margin-top:.5rem}.sm\:mt-3{margin-top:.75rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-12{height:3rem}.sm\:h-2{height:.5rem}.sm\:h-24{height:6rem}.sm\:h-3{height:.75rem}.sm\:h-4{height:1rem}.sm\:h-5{height:1.25rem}.sm\:h-8{height:2rem}.sm\:h-\[300px\]{height:300px}.sm\:h-\[400px\]{height:400px}.sm\:h-\[500px\]{height:500px}.sm\:h-\[calc\(100vh-280px\)\]{height:calc(100vh - 280px)}.sm\:w-10{width:2.5rem}.sm\:w-2{width:.5rem}.sm\:w-24{width:6rem}.sm\:w-3{width:.75rem}.sm\:w-4{width:1rem}.sm\:w-5{width:1.25rem}.sm\:w-8{width:2rem}.sm\:w-\[140px\]{width:140px}.sm\:w-\[160px\]{width:160px}.sm\:w-\[200px\]{width:200px}.sm\:w-\[500px\]{width:500px}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:min-w-\[120px\]{min-width:120px}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-\[420px\]{max-width:420px}.sm\:max-w-\[70\%\]{max-width:70%}.sm\:max-w-\[900px\]{max-width:900px}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:flex-1{flex:1 1 0%}.sm\:flex-none{flex:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-0{gap:0px}.sm\:gap-1{gap:.25rem}.sm\:gap-2{gap:.5rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:gap-6{gap:1.5rem}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.sm\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.sm\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.sm\:space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-\[200px\]{font-size:200px}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:768px){.md\:top-4{top:1rem}.md\:mb-4{margin-bottom:1rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-8{margin-bottom:2rem}.md\:mt-8{margin-top:2rem}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-16{height:4rem}.md\:h-4{height:1rem}.md\:h-5{height:1.25rem}.md\:h-8{height:2rem}.md\:h-96{height:24rem}.md\:h-\[500px\]{height:500px}.md\:min-h-\[400px\]{min-height:400px}.md\:w-16{width:4rem}.md\:w-4{width:1rem}.md\:w-5{width:1.25rem}.md\:w-8{width:2rem}.md\:w-96{width:24rem}.md\:max-w-none{max-width:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:gap-2{gap:.5rem}.md\:gap-3{gap:.75rem}.md\:gap-4{gap:1rem}.md\:gap-6{gap:1.5rem}.md\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.md\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.md\:whitespace-normal{white-space:normal}.md\:p-12{padding:3rem}.md\:p-4{padding:1rem}.md\:p-6{padding:1.5rem}.md\:p-8{padding:2rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:1024px){.lg\:invisible{visibility:hidden}.lg\:relative{position:relative}.lg\:z-0{z-index:0}.lg\:col-span-1{grid-column:span 1 / span 1}.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:mb-1{margin-bottom:.25rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-12{width:3rem}.lg\:w-16{width:4rem}.lg\:w-64{width:16rem}.lg\:w-8{width:2rem}.lg\:w-\[130px\]{width:130px}.lg\:w-\[160px\]{width:160px}.lg\:w-\[180px\]{width:180px}.lg\:w-\[200px\]{width:200px}.lg\:w-\[240px\]{width:240px}.lg\:w-\[75px\]{width:75px}.lg\:w-auto{width:auto}.lg\:w-full{width:100%}.lg\:max-w-0{max-width:0px}.lg\:flex-1{flex:1 1 0%}.lg\:flex-none{flex:none}.lg\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:justify-center{justify-content:center}.lg\:gap-0{gap:0px}.lg\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.lg\:overflow-hidden{overflow:hidden}.lg\:p-2{padding:.5rem}.lg\:p-6{padding:1.5rem}.lg\:px-0{padding-left:0;padding-right:0}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:pb-6{padding-bottom:1.5rem}.lg\:text-3xl{font-size:1.875rem;line-height:2.25rem}.lg\:opacity-0{opacity:0}}@media(min-width:1280px){.xl\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}}.\[\&\+div\]\:text-xs+div{font-size:.75rem;line-height:1rem}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>span\]\:text-xs>span{font-size:.75rem;line-height:1rem}.\[\&\>span\]\:opacity-70>span{opacity:.7}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y: -3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-4>svg{top:1rem}.\[\&\>svg\]\:size-3\.5>svg{width:.875rem;height:.875rem}.\[\&\>svg\]\:h-2\.5>svg{height:.625rem}.\[\&\>svg\]\:h-3>svg{height:.75rem}.\[\&\>svg\]\:w-2\.5>svg{width:.625rem}.\[\&\>svg\]\:w-3>svg{width:.75rem}.\[\&\>svg\]\:text-foreground>svg{color:hsl(var(--foreground))}.\[\&\>svg\]\:text-muted-foreground>svg{color:hsl(var(--muted-foreground))}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:1.75rem}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:hsl(var(--muted-foreground))}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:hsl(var(--border) / .5)}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:hsl(var(--border))}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-layer\]\:outline-none .recharts-layer{outline:2px solid transparent;outline-offset:2px}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector,.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:hsl(var(--muted))}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-sector\]\:outline-none .recharts-sector,.\[\&_\.recharts-surface\]\:outline-none .recharts-surface{outline:2px solid transparent;outline-offset:2px}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:1.25rem}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:invisible svg{visibility:hidden}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent,[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:transparent}@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(/assets/KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(/assets/KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(/assets/KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(/assets/KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(/assets/KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,d09GMgABAAAAAA4oAA4AAAAAHbQAAA3TAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgRQIDgmcDBEICo1oijYBNgIkA14LMgAEIAWJAAeBHAyBHBvbGiMRdnO0IkRRkiYDgr9KsJ1NUAf2kILNxgUmgqIgq1P89vcbIcmsQbRps3vCcXdYOKSWEPEKgZgQkprQQsxIXUgq0DqpGKmIvrgkeVGtEQD9DzAO29fM9jYhxZEsL2FeURH2JN4MIcTdO049NCVdxQ/w9NrSYFEBKTDKpLKfNkCGDc1RwjZLQcm3vqJ2UW9Xfa3tgAHz6ivp6vgC2yD4/6352ndnN0X0TL7seypkjZlMsjmZnf0Mm5Q+JykRWQBKCVCVPbARPXWyQtb5VgLB6Biq7/Uixcj2WGqdI8tGSgkuRG+t910GKP2D7AQH0DB9FMDW/obJZ8giFI3Wg8Cvevz0M+5m0rTh7XDBlvo9Y4vm13EXmfttwI4mBo1EG15fxJhUiCLbiiyCf/ZA6MFAhg3pGIZGdGIVjtPn6UcMk9A/UUr9PhoNsCENw1APAq0gpH73e+M+0ueyHbabc3vkbcdtzcf/fiy+NxQEjf9ud/ELBHAXJ0nk4z+MXH2Ev/kWyV4k7SkvpPc9Qr38F6RPWnM9cN6DJ0AdD1BhtgABtmoRoFCvPsBAumNm6soZG2Gk5GyVTo2sJncSyp0jQTYoR6WDvTwaaEcHsxHfvuWhHA3a6bN7twRKtcGok6NsCi7jYRrM2jExsUFMxMQYuJbMhuWNOumEJy9hi29Dmg5zMp/A5+hhPG19j1vBrq8JTLr8ki5VLPmG/PynJHVul440bxg5xuymHUFPBshC+nA9I1FmwbRBTNHAcik3Oae0cxKoI3MOriM42UrPe51nsaGxJ+WfXubAsP84aabUlQSJ1IiE0iPETLUU4CATgfXSCSpuRFRmCGbO+wSpAnzaeaCYW1VNEysRtuXCEL1kUFUbbtMv3Tilt/1c11jt3Q5bbMa84cpWipp8Elw3MZhOHsOlwwVUQM3lAR35JiFQbaYCRnMF2lxAWoOg2gyoIV4PouX8HytNIfLhqpJtXB4vjiViUI8IJ7bkC4ikkQvKksnOTKICwnqWSZ9YS5f0WCxmpgjbIq7EJcM4aI2nmhLNY2JIUgOjXZFWBHb+x5oh6cwb0Tv1ackHdKi0I9OO2wE9aogIOn540CCCziyhN+IaejtgAONKznHlHyutPrHGwCx9S6B8kfS4Mfi4Eyv7OU730bT1SCBjt834cXsf43zVjPUqqJjgrjeGnBxSG4aYAKFuVbeCfkDIjAqMb6yLNIbCuvXhMH2/+k2vkNpkORhR59N1CkzoOENvneIosjYmuTxlhUzaGEJQ/iWqx4dmwpmKjrwTiTGTCVozNAYqk/zXOndWxuWSmJkQpJw3pK5KX6QrLt5LATMqpmPAQhkhK6PUjzHUn7E0gHE0kPE0iKkolgkUx9SZmVAdDgpffdyJKg3k7VmzYGCwVXGz/tXmkOIp+vcWs+EMuhhvN0h9uhfzWJziBQmCREGSIFmQIkgVpAnSBRmC//6hkLZwaVhwxlrJSOdqlFtOYxlau9F2QN5Y98xmIAsiM1HVp2VFX+DHHGg6Ecjh3vmqtidX3qHI2qycTk/iwxSt5UzTmEP92ZBnEWTk4Mx8Mpl78ZDokxg/KWb+Q0QkvdKVmq3TMW+RXEgrsziSAfNXFMhDc60N5N9jQzjfO0kBKpUZl0ZmwJ41j/B9Hz6wmRaJB84niNmQrzp9eSlQCDDzazGDdVi3P36VZQ+Jy4f9UBNp+3zTjqI4abaFAm+GShVaXlsGdF3FYzZcDI6cori4kMxUECl9IjJZpzkvitAoxKue+90pDMvcKRxLl53TmOKCmV/xRolNKSqqUxc6LStOETmFOiLZZptlZepcKiAzteG8PEdpnQpbOMNcMsR4RR2Bs0cKFEvSmIjAFcnarqwUL4lDhHmnVkwu1IwshbiCcgvOheZuYyOteufZZwlcTlLgnZ3o/WcYdzZHW/WGaqaVfmTZ1aWCceJjkbZqsfbkOtcFlUZM/jy+hXHDbaUobWqqXaeWobbLO99yG5N3U4wxco0rQGGcOLASFMXeJoham8M+/x6O2WywK2l4HGbq1CoUyC/IZikQhdq3SiuNrvAEj0AVu9x2x3lp/xWzahaxidezFVtdcb5uEnzyl0ZmYiuKI0exvCd4Xc9CV1KB0db00z92wDPde0kukbvZIWN6jUWFTmPIC/Y4UPCm8UfDTFZpZNon1qLFTkBhxzB+FjQRA2Q/YRJT8pQigslMaUpFyAG8TMlXigiqmAZX4xgijKjRlGpLE0GdplRfCaJo0JQaSxNBk6ZmMzcya0FmrcisDdn0Q3HI2sWSppYigmlM1XT/kLQZSNpMJG0WkjYbSZuDpM1F0uYhFc1HxU4m1QJjDK6iL0S5uSj5rgXc3RejEigtcRBtqYPQsiTskmO5vosV+q4VGIKbOkDg0jtRrq+Em1YloaTFar3EGr1EUC8R0kus1Uus00usL97ABr2BjXoDm/QGNhuWtMVBKOwg/i78lT7hBsAvDmwHc/ao3vmUbBmhjeYySZNWvGkfZAgISDSaDo1SVpzGDsAEkF8B+gEapViUoZgUWXcRIGFZNm6gWbAKk0bp0k1MHG9fLYtV4iS2SmLEQFARzRcnf9PUS0LVn05/J9MiRRBU3v2IrvW974v4N00L7ZMk0wXP1409CHo/an8zTRHD3eSJ6m8D4YMkZNl3M79sqeuAsr/m3f+8/yl7A50aiAEJgeBeMWzu7ui9UfUBCe2TIqZIoOd/3/udRBOQidQZUERzb2/VwZN1H/Sju82ew2H2Wfr6qvfVf3hqwDvAIpkQVFy4B9Pe9e4/XvPeceu7h3dvO56iJPf0+A6cqA2ip18ER+iFgggiuOkvj24bby0N9j2UHIkgqIt+sVgfodC4YghLSMjSZbH0VR/6dMDrYJeKHilKTemt6v6kvzvn3/RrdWtr0GoN/xL+Sex/cPYLUpepx9cz/D46UPU5KXgAQa+NDps1v6J3xP1i2HtaDB0M9aX2deA7SYff//+gUCovMmIK/qfsFcOk+4Y5ZN97XlG6zebqtMbKgeRFi51vnxTQYBUik2rS/Cn6PC8ADR8FGxsRPB82dzfND90gIcshOcYUkfjherBz53odpm6TP8txlwOZ71xmfHHOvq053qFF/MRlS3jP0ELudrf2OeN8DHvp6ZceLe8qKYvWz/7yp0u4dKPfli3CYq0O13Ih71mylJ80tOi10On8wi+F4+LWgDPeJ30msSQt9/vkmHq9/Lvo2b461mP801v3W4xTcs6CbvF9UDdrSt+A8OUbpSh55qAUFXWznBBfdeJ8a4d7ugT5tvxUza3h9m4H7ptTqiG4z0g5dc0X29OcGlhpGFMpQo9ytTS+NViZpNdvU4kWx+LKxNY10kQ1yqGXrhe4/1nvP7E+nd5A92TtaRplbHSqoIdOqtRWti+fkB5/n1+/VvCmz12pG1kpQWsfi1ftlBobm0bpngs16CHkbIwdLnParxtTV3QYRlfJ0KFskH7pdN/YDn+yRuSd7sNH3aO0DYPggk6uWuXrfOc+fa3VTxFVvKaNxHsiHmsXyCLIE5yuOeN3/Jdf8HBL/5M6shjyhxHx9BjB1O0+4NLOnjLLSxwO7ukN4jMbOIcD879KLSi6Pk61Oqm2377n8079PXEEQ7cy7OKEC9nbpet118fxweTafpt69x/Bt8UqGzNQt7aelpc44dn5cqhwf71+qKp/Zf/+a0zcizOUWpl/iBcSXip0pplkatCchoH5c5aUM8I7/dWxAej8WicPL1URFZ9BDJelUwEwTkGqUhgSlydVes95YdXvhh9Gfz/aeFWvgVb4tuLbcv4+wLdutVZv/cUonwBD/6eDlE0aSiKK/uoH3+J1wDE/jMVqY2ysGufN84oIXB0sPzy8ollX/LegY74DgJXJR57sn+VGza0x3DnuIgABFM15LmajjjsNlYj+JEZGbuRYcAMOWxFkPN2w6Wd46xo4gVWQR/X4lyI/R6K/YK0110GzudPRW7Y+UOBGTfNNzHeYT0fiH0taunBpq9HEW8OKSaBGj21L0MqenEmNRWBAWDWAk4CpNoEZJ2tTaPFgbQYj8HxtFilErs3BTRwT8uO1NXQaWfIotchmPkAF5mMBAliEmZiOGVgCG9LgRzpscMAOOwowlT3JhusdazXGSC/hxR3UlmWVwWHpOIKheqONvjyhSiTHIkVUco5bnji8m//zL7PKaT1Vl5I6UE609f+gkr6MZKVyKc7zJRmCahLsdlyA5fdQkRSan9LgnnLEyGSkaKJCJog0wAgvepWBt80+1yKln1bMVtCljfNWDueKLsWwaEbBSfSPTEmVRsUcYYMnEjcjeyCZzBXK9E9BYBXLKjOSpUDR+nEV3TFSUdQaz+ot98QxgXwx0GQ+EEUAKB2qZPkQQ0GqFD8UPFMqyaCHM24BZmSGic9EYMagKizOw9Hz50DMrDLrqqLkTAhplMictiCAx5S3BIUQdeJeLnBy2CNtMfz6cV4u8XKoFZQesbf9YZiIERiHjaNodDW6LgcirX/mPnJIkBGDUpTBhSa0EIr38D5hCIszhCM8URGBqImoWjpvpt1ebu/v3Gl3qJfMnNM+9V+kiRFyROTPHQWOcs1dNW94/ukKMPZBvDi55i5CttdeJz84DLngLqjcdwEZ87bFFR8CIG35OAkDVN6VRDZ7aq67NteYqZ2lpT8oYB2CytoBd6VuAx4WgiAsnuj3WohG+LugzXiQRDeM3XYXlULv4dp5VFYC) format("woff2"),url(/assets/KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.25"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:grab}.react-flow__node.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%} diff --git a/webui/dist/assets/markdown-A1ShuLvG.js b/webui/dist/assets/markdown-A1ShuLvG.js new file mode 100644 index 00000000..92fb2e43 --- /dev/null +++ b/webui/dist/assets/markdown-A1ShuLvG.js @@ -0,0 +1,295 @@ +import{j as gn}from"./router-CWhjJi2n.js";import{g as Oa}from"./react-vendor-Dtc2IqVY.js";function ni(e){const t=[],r=String(e||"");let n=r.indexOf(","),i=0,a=!1;for(;!a;){n===-1&&(n=r.length,a=!0);const l=r.slice(i,n).trim();(l||!a)&&t.push(l),i=n+1,n=r.indexOf(",",i)}return t}function Js(e,t){const r={};return(e[e.length-1]===""?[...e,""]:e).join((r.padRight?" ":"")+","+(r.padLeft===!1?"":" ")).trim()}const eo=/^[$_\p{ID_Start}][$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,to=/^[$_\p{ID_Start}][-$_\u{200C}\u{200D}\p{ID_Continue}]*$/u,ro={};function ii(e,t){return(ro.jsx?to:eo).test(e)}const no=/[ \t\n\f\r]/g;function io(e){return typeof e=="object"?e.type==="text"?ai(e.value):!1:ai(e)}function ai(e){return e.replace(no,"")===""}class Sr{constructor(t,r,n){this.normal=r,this.property=t,n&&(this.space=n)}}Sr.prototype.normal={};Sr.prototype.property={};Sr.prototype.space=void 0;function qa(e,t){const r={},n={};for(const i of e)Object.assign(r,i.property),Object.assign(n,i.normal);return new Sr(r,n,t)}function yr(e){return e.toLowerCase()}class He{constructor(t,r){this.attribute=r,this.property=t}}He.prototype.attribute="";He.prototype.booleanish=!1;He.prototype.boolean=!1;He.prototype.commaOrSpaceSeparated=!1;He.prototype.commaSeparated=!1;He.prototype.defined=!1;He.prototype.mustUseProperty=!1;He.prototype.number=!1;He.prototype.overloadedBoolean=!1;He.prototype.property="";He.prototype.spaceSeparated=!1;He.prototype.space=void 0;let ao=0;const te=qt(),Ae=qt(),Kn=qt(),R=qt(),pe=qt(),Kt=qt(),Ue=qt();function qt(){return 2**++ao}const Zn=Object.freeze(Object.defineProperty({__proto__:null,boolean:te,booleanish:Ae,commaOrSpaceSeparated:Ue,commaSeparated:Kt,number:R,overloadedBoolean:Kn,spaceSeparated:pe},Symbol.toStringTag,{value:"Module"})),vn=Object.keys(Zn);class v0 extends He{constructor(t,r,n,i){let a=-1;if(super(t,r),li(this,"space",i),typeof n=="number")for(;++a4&&r.slice(0,4)==="data"&&co.test(t)){if(t.charAt(4)==="-"){const a=t.slice(5).replace(si,mo);n="data"+a.charAt(0).toUpperCase()+a.slice(1)}else{const a=t.slice(4);if(!si.test(a)){let l=a.replace(uo,ho);l.charAt(0)!=="-"&&(l="-"+l),t="data"+l}}i=v0}return new i(n,t)}function ho(e){return"-"+e.toLowerCase()}function mo(e){return e.charAt(1).toUpperCase()}const Wa=qa([Ha,lo,$a,Ua,_a],"html"),tn=qa([Ha,so,$a,Ua,_a],"svg");function oi(e){const t=String(e||"").trim();return t?t.split(/[ \t\n\r\f]+/g):[]}function fo(e){return e.join(" ").trim()}var Gt={},yn,ui;function po(){if(ui)return yn;ui=1;var e=/\/\*[^*]*\*+([^/*][^*]*\*+)*\//g,t=/\n/g,r=/^\s*/,n=/^(\*?[-#/*\\\w]+(\[[0-9a-z_-]+\])?)\s*/,i=/^:\s*/,a=/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^)]*?\)|[^};])+)/,l=/^[;\s]*/,s=/^\s+|\s+$/g,o=` +`,u="/",h="*",m="",d="comment",p="declaration";function y(M,S){if(typeof M!="string")throw new TypeError("First argument must be a string");if(!M)return[];S=S||{};var z=1,I=1;function V(Y){var q=Y.match(t);q&&(z+=q.length);var ae=Y.lastIndexOf(o);I=~ae?Y.length-ae:I+Y.length}function O(){var Y={line:z,column:I};return function(q){return q.position=new E(Y),U(),q}}function E(Y){this.start=Y,this.end={line:z,column:I},this.source=S.source}E.prototype.content=M;function G(Y){var q=new Error(S.source+":"+z+":"+I+": "+Y);if(q.reason=Y,q.filename=S.source,q.line=z,q.column=I,q.source=M,!S.silent)throw q}function K(Y){var q=Y.exec(M);if(q){var ae=q[0];return V(ae),M=M.slice(ae.length),q}}function U(){K(r)}function D(Y){var q;for(Y=Y||[];q=$();)q!==!1&&Y.push(q);return Y}function $(){var Y=O();if(!(u!=M.charAt(0)||h!=M.charAt(1))){for(var q=2;m!=M.charAt(q)&&(h!=M.charAt(q)||u!=M.charAt(q+1));)++q;if(q+=2,m===M.charAt(q-1))return G("End of comment missing");var ae=M.slice(2,q-2);return I+=2,V(ae),M=M.slice(q),I+=2,Y({type:d,comment:ae})}}function j(){var Y=O(),q=K(n);if(q){if($(),!K(i))return G("property missing ':'");var ae=K(a),fe=Y({type:p,property:w(q[0].replace(e,m)),value:ae?w(ae[0].replace(e,m)):m});return K(l),fe}}function ie(){var Y=[];D(Y);for(var q;q=j();)q!==!1&&(Y.push(q),D(Y));return Y}return U(),ie()}function w(M){return M?M.replace(s,m):m}return yn=y,yn}var ci;function go(){if(ci)return Gt;ci=1;var e=Gt&&Gt.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(Gt,"__esModule",{value:!0}),Gt.default=r;const t=e(po());function r(n,i){let a=null;if(!n||typeof n!="string")return a;const l=(0,t.default)(n),s=typeof i=="function";return l.forEach(o=>{if(o.type!=="declaration")return;const{property:u,value:h}=o;s?i(u,h,o):h&&(a=a||{},a[u]=h)}),a}return Gt}var ur={},hi;function vo(){if(hi)return ur;hi=1,Object.defineProperty(ur,"__esModule",{value:!0}),ur.camelCase=void 0;var e=/^--[a-zA-Z0-9_-]+$/,t=/-([a-z])/g,r=/^[^-]+$/,n=/^-(webkit|moz|ms|o|khtml)-/,i=/^-(ms)-/,a=function(u){return!u||r.test(u)||e.test(u)},l=function(u,h){return h.toUpperCase()},s=function(u,h){return"".concat(h,"-")},o=function(u,h){return h===void 0&&(h={}),a(u)?u:(u=u.toLowerCase(),h.reactCompat?u=u.replace(i,s):u=u.replace(n,s),u.replace(t,l))};return ur.camelCase=o,ur}var cr,mi;function yo(){if(mi)return cr;mi=1;var e=cr&&cr.__importDefault||function(i){return i&&i.__esModule?i:{default:i}},t=e(go()),r=vo();function n(i,a){var l={};return!i||typeof i!="string"||(0,t.default)(i,function(s,o){s&&o&&(l[(0,r.camelCase)(s,a)]=o)}),l}return n.default=n,cr=n,cr}var bo=yo();const xo=Oa(bo),Ya=Xa("end"),y0=Xa("start");function Xa(e){return t;function t(r){const n=r&&r.position&&r.position[e]||{};if(typeof n.line=="number"&&n.line>0&&typeof n.column=="number"&&n.column>0)return{line:n.line,column:n.column,offset:typeof n.offset=="number"&&n.offset>-1?n.offset:void 0}}}function wo(e){const t=y0(e),r=Ya(e);if(t&&r)return{start:t,end:r}}function pr(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?fi(e.position):"start"in e||"end"in e?fi(e):"line"in e||"column"in e?Qn(e):""}function Qn(e){return pi(e&&e.line)+":"+pi(e&&e.column)}function fi(e){return Qn(e&&e.start)+"-"+Qn(e&&e.end)}function pi(e){return e&&typeof e=="number"?e:1}class Ee extends Error{constructor(t,r,n){super(),typeof r=="string"&&(n=r,r=void 0);let i="",a={},l=!1;if(r&&("line"in r&&"column"in r?a={place:r}:"start"in r&&"end"in r?a={place:r}:"type"in r?a={ancestors:[r],place:r.position}:a={...r}),typeof t=="string"?i=t:!a.cause&&t&&(l=!0,i=t.message,a.cause=t),!a.ruleId&&!a.source&&typeof n=="string"){const o=n.indexOf(":");o===-1?a.ruleId=n:(a.source=n.slice(0,o),a.ruleId=n.slice(o+1))}if(!a.place&&a.ancestors&&a.ancestors){const o=a.ancestors[a.ancestors.length-1];o&&(a.place=o.position)}const s=a.place&&"start"in a.place?a.place.start:a.place;this.ancestors=a.ancestors||void 0,this.cause=a.cause||void 0,this.column=s?s.column:void 0,this.fatal=void 0,this.file="",this.message=i,this.line=s?s.line:void 0,this.name=pr(a.place)||"1:1",this.place=a.place||void 0,this.reason=this.message,this.ruleId=a.ruleId||void 0,this.source=a.source||void 0,this.stack=l&&a.cause&&typeof a.cause.stack=="string"?a.cause.stack:"",this.actual=void 0,this.expected=void 0,this.note=void 0,this.url=void 0}}Ee.prototype.file="";Ee.prototype.name="";Ee.prototype.reason="";Ee.prototype.message="";Ee.prototype.stack="";Ee.prototype.column=void 0;Ee.prototype.line=void 0;Ee.prototype.ancestors=void 0;Ee.prototype.cause=void 0;Ee.prototype.fatal=void 0;Ee.prototype.place=void 0;Ee.prototype.ruleId=void 0;Ee.prototype.source=void 0;const b0={}.hasOwnProperty,ko=new Map,So=/[A-Z]/g,Ao=new Set(["table","tbody","thead","tfoot","tr"]),To=new Set(["td","th"]),Ka="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function zo(e,t){if(!t||t.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const r=t.filePath||void 0;let n;if(t.development){if(typeof t.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");n=Fo(r,t.jsxDEV)}else{if(typeof t.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof t.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");n=No(r,t.jsx,t.jsxs)}const i={Fragment:t.Fragment,ancestors:[],components:t.components||{},create:n,elementAttributeNameCase:t.elementAttributeNameCase||"react",evaluater:t.createEvaluater?t.createEvaluater():void 0,filePath:r,ignoreInvalidStyle:t.ignoreInvalidStyle||!1,passKeys:t.passKeys!==!1,passNode:t.passNode||!1,schema:t.space==="svg"?tn:Wa,stylePropertyNameCase:t.stylePropertyNameCase||"dom",tableCellAlignToStyle:t.tableCellAlignToStyle!==!1},a=Za(i,e,void 0);return a&&typeof a!="string"?a:i.create(e,i.Fragment,{children:a||void 0},void 0)}function Za(e,t,r){if(t.type==="element")return Mo(e,t,r);if(t.type==="mdxFlowExpression"||t.type==="mdxTextExpression")return Co(e,t);if(t.type==="mdxJsxFlowElement"||t.type==="mdxJsxTextElement")return Do(e,t,r);if(t.type==="mdxjsEsm")return Eo(e,t);if(t.type==="root")return Io(e,t,r);if(t.type==="text")return Bo(e,t)}function Mo(e,t,r){const n=e.schema;let i=n;t.tagName.toLowerCase()==="svg"&&n.space==="html"&&(i=tn,e.schema=i),e.ancestors.push(t);const a=Ja(e,t.tagName,!1),l=Lo(e,t);let s=w0(e,t);return Ao.has(t.tagName)&&(s=s.filter(function(o){return typeof o=="string"?!io(o):!0})),Qa(e,l,a,t),x0(l,s),e.ancestors.pop(),e.schema=n,e.create(t,a,l,r)}function Co(e,t){if(t.data&&t.data.estree&&e.evaluater){const n=t.data.estree.body[0];return n.type,e.evaluater.evaluateExpression(n.expression)}br(e,t.position)}function Eo(e,t){if(t.data&&t.data.estree&&e.evaluater)return e.evaluater.evaluateProgram(t.data.estree);br(e,t.position)}function Do(e,t,r){const n=e.schema;let i=n;t.name==="svg"&&n.space==="html"&&(i=tn,e.schema=i),e.ancestors.push(t);const a=t.name===null?e.Fragment:Ja(e,t.name,!0),l=Ro(e,t),s=w0(e,t);return Qa(e,l,a,t),x0(l,s),e.ancestors.pop(),e.schema=n,e.create(t,a,l,r)}function Io(e,t,r){const n={};return x0(n,w0(e,t)),e.create(t,e.Fragment,n,r)}function Bo(e,t){return t.value}function Qa(e,t,r,n){typeof r!="string"&&r!==e.Fragment&&e.passNode&&(t.node=n)}function x0(e,t){if(t.length>0){const r=t.length>1?t:t[0];r&&(e.children=r)}}function No(e,t,r){return n;function n(i,a,l,s){const u=Array.isArray(l.children)?r:t;return s?u(a,l,s):u(a,l)}}function Fo(e,t){return r;function r(n,i,a,l){const s=Array.isArray(a.children),o=y0(n);return t(i,a,l,s,{columnNumber:o?o.column-1:void 0,fileName:e,lineNumber:o?o.line:void 0},void 0)}}function Lo(e,t){const r={};let n,i;for(i in t.properties)if(i!=="children"&&b0.call(t.properties,i)){const a=Po(e,i,t.properties[i]);if(a){const[l,s]=a;e.tableCellAlignToStyle&&l==="align"&&typeof s=="string"&&To.has(t.tagName)?n=s:r[l]=s}}if(n){const a=r.style||(r.style={});a[e.stylePropertyNameCase==="css"?"text-align":"textAlign"]=n}return r}function Ro(e,t){const r={};for(const n of t.attributes)if(n.type==="mdxJsxExpressionAttribute")if(n.data&&n.data.estree&&e.evaluater){const a=n.data.estree.body[0];a.type;const l=a.expression;l.type;const s=l.properties[0];s.type,Object.assign(r,e.evaluater.evaluateExpression(s.argument))}else br(e,t.position);else{const i=n.name;let a;if(n.value&&typeof n.value=="object")if(n.value.data&&n.value.data.estree&&e.evaluater){const s=n.value.data.estree.body[0];s.type,a=e.evaluater.evaluateExpression(s.expression)}else br(e,t.position);else a=n.value===null?!0:n.value;r[i]=a}return r}function w0(e,t){const r=[];let n=-1;const i=e.passKeys?new Map:ko;for(;++ni?0:i+t:t=t>i?i:t,r=r>0?r:0,n.length<1e4)l=Array.from(n),l.unshift(t,r),e.splice(...l);else for(r&&e.splice(t,r);a0?(Ge(e,e.length,0,t),e):t}const vi={}.hasOwnProperty;function tl(e){const t={};let r=-1;for(;++r13&&r<32||r>126&&r<160||r>55295&&r<57344||r>64975&&r<65008||(r&65535)===65535||(r&65535)===65534||r>1114111?"�":String.fromCodePoint(r)}function it(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const Ne=It(/[A-Za-z]/),Ce=It(/[\dA-Za-z]/),Go=It(/[#-'*+\--9=?A-Z^-~]/);function Gr(e){return e!==null&&(e<32||e===127)}const Jn=It(/\d/),Wo=It(/[\dA-Fa-f]/),Yo=It(/[!-/:-@[-`{-~]/);function X(e){return e!==null&&e<-2}function he(e){return e!==null&&(e<0||e===32)}function le(e){return e===-2||e===-1||e===32}const rn=It(new RegExp("\\p{P}|\\p{S}","u")),Ot=It(/\s/);function It(e){return t;function t(r){return r!==null&&r>-1&&e.test(String.fromCharCode(r))}}function tr(e){const t=[];let r=-1,n=0,i=0;for(;++r55295&&a<57344){const s=e.charCodeAt(r+1);a<56320&&s>56319&&s<57344?(l=String.fromCharCode(a,s),i=1):l="�"}else l=String.fromCharCode(a);l&&(t.push(e.slice(n,r),encodeURIComponent(l)),n=r+i+1,l=""),i&&(r+=i,i=0)}return t.join("")+e.slice(n)}function ne(e,t,r,n){const i=n?n-1:Number.POSITIVE_INFINITY;let a=0;return l;function l(o){return le(o)?(e.enter(r),s(o)):t(o)}function s(o){return le(o)&&a++l))return;const G=t.events.length;let K=G,U,D;for(;K--;)if(t.events[K][0]==="exit"&&t.events[K][1].type==="chunkFlow"){if(U){D=t.events[K][1].end;break}U=!0}for(S(n),E=G;EI;){const O=r[V];t.containerState=O[1],O[0].exit.call(t,e)}r.length=I}function z(){i.write([null]),a=void 0,i=void 0,t.containerState._closeFlow=void 0}}function Jo(e,t,r){return ne(e,e.attempt(this.parser.constructs.document,t,r),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function Qt(e){if(e===null||he(e)||Ot(e))return 1;if(rn(e))return 2}function nn(e,t,r){const n=[];let i=-1;for(;++i1&&e[r][1].end.offset-e[r][1].start.offset>1?2:1;const m={...e[n][1].end},d={...e[r][1].start};bi(m,-o),bi(d,o),l={type:o>1?"strongSequence":"emphasisSequence",start:m,end:{...e[n][1].end}},s={type:o>1?"strongSequence":"emphasisSequence",start:{...e[r][1].start},end:d},a={type:o>1?"strongText":"emphasisText",start:{...e[n][1].end},end:{...e[r][1].start}},i={type:o>1?"strong":"emphasis",start:{...l.start},end:{...s.end}},e[n][1].end={...l.start},e[r][1].start={...s.end},u=[],e[n][1].end.offset-e[n][1].start.offset&&(u=Ke(u,[["enter",e[n][1],t],["exit",e[n][1],t]])),u=Ke(u,[["enter",i,t],["enter",l,t],["exit",l,t],["enter",a,t]]),u=Ke(u,nn(t.parser.constructs.insideSpan.null,e.slice(n+1,r),t)),u=Ke(u,[["exit",a,t],["enter",s,t],["exit",s,t],["exit",i,t]]),e[r][1].end.offset-e[r][1].start.offset?(h=2,u=Ke(u,[["enter",e[r][1],t],["exit",e[r][1],t]])):h=0,Ge(e,n-1,r-n+3,u),r=n+u.length-h-2;break}}for(r=-1;++r0&&le(E)?ne(e,z,"linePrefix",a+1)(E):z(E)}function z(E){return E===null||X(E)?e.check(xi,w,V)(E):(e.enter("codeFlowValue"),I(E))}function I(E){return E===null||X(E)?(e.exit("codeFlowValue"),z(E)):(e.consume(E),I)}function V(E){return e.exit("codeFenced"),t(E)}function O(E,G,K){let U=0;return D;function D(q){return E.enter("lineEnding"),E.consume(q),E.exit("lineEnding"),$}function $(q){return E.enter("codeFencedFence"),le(q)?ne(E,j,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(q):j(q)}function j(q){return q===s?(E.enter("codeFencedFenceSequence"),ie(q)):K(q)}function ie(q){return q===s?(U++,E.consume(q),ie):U>=l?(E.exit("codeFencedFenceSequence"),le(q)?ne(E,Y,"whitespace")(q):Y(q)):K(q)}function Y(q){return q===null||X(q)?(E.exit("codeFencedFence"),G(q)):K(q)}}}function hu(e,t,r){const n=this;return i;function i(l){return l===null?r(l):(e.enter("lineEnding"),e.consume(l),e.exit("lineEnding"),a)}function a(l){return n.parser.lazy[n.now().line]?r(l):t(l)}}const xn={name:"codeIndented",tokenize:fu},mu={partial:!0,tokenize:pu};function fu(e,t,r){const n=this;return i;function i(u){return e.enter("codeIndented"),ne(e,a,"linePrefix",5)(u)}function a(u){const h=n.events[n.events.length-1];return h&&h[1].type==="linePrefix"&&h[2].sliceSerialize(h[1],!0).length>=4?l(u):r(u)}function l(u){return u===null?o(u):X(u)?e.attempt(mu,l,o)(u):(e.enter("codeFlowValue"),s(u))}function s(u){return u===null||X(u)?(e.exit("codeFlowValue"),l(u)):(e.consume(u),s)}function o(u){return e.exit("codeIndented"),t(u)}}function pu(e,t,r){const n=this;return i;function i(l){return n.parser.lazy[n.now().line]?r(l):X(l)?(e.enter("lineEnding"),e.consume(l),e.exit("lineEnding"),i):ne(e,a,"linePrefix",5)(l)}function a(l){const s=n.events[n.events.length-1];return s&&s[1].type==="linePrefix"&&s[2].sliceSerialize(s[1],!0).length>=4?t(l):X(l)?i(l):r(l)}}const du={name:"codeText",previous:vu,resolve:gu,tokenize:yu};function gu(e){let t=e.length-4,r=3,n,i;if((e[r][1].type==="lineEnding"||e[r][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(n=r;++n=this.left.length+this.right.length)throw new RangeError("Cannot access index `"+t+"` in a splice buffer of size `"+(this.left.length+this.right.length)+"`");return tthis.left.length?this.right.slice(this.right.length-n+this.left.length,this.right.length-t+this.left.length).reverse():this.left.slice(t).concat(this.right.slice(this.right.length-n+this.left.length).reverse())}splice(t,r,n){const i=r||0;this.setCursor(Math.trunc(t));const a=this.right.splice(this.right.length-i,Number.POSITIVE_INFINITY);return n&&hr(this.left,n),a.reverse()}pop(){return this.setCursor(Number.POSITIVE_INFINITY),this.left.pop()}push(t){this.setCursor(Number.POSITIVE_INFINITY),this.left.push(t)}pushMany(t){this.setCursor(Number.POSITIVE_INFINITY),hr(this.left,t)}unshift(t){this.setCursor(0),this.right.push(t)}unshiftMany(t){this.setCursor(0),hr(this.right,t.reverse())}setCursor(t){if(!(t===this.left.length||t>this.left.length&&this.right.length===0||t<0&&this.left.length===0))if(t=4?t(l):e.interrupt(n.parser.constructs.flow,r,t)(l)}}function sl(e,t,r,n,i,a,l,s,o){const u=o||Number.POSITIVE_INFINITY;let h=0;return m;function m(S){return S===60?(e.enter(n),e.enter(i),e.enter(a),e.consume(S),e.exit(a),d):S===null||S===32||S===41||Gr(S)?r(S):(e.enter(n),e.enter(l),e.enter(s),e.enter("chunkString",{contentType:"string"}),w(S))}function d(S){return S===62?(e.enter(a),e.consume(S),e.exit(a),e.exit(i),e.exit(n),t):(e.enter(s),e.enter("chunkString",{contentType:"string"}),p(S))}function p(S){return S===62?(e.exit("chunkString"),e.exit(s),d(S)):S===null||S===60||X(S)?r(S):(e.consume(S),S===92?y:p)}function y(S){return S===60||S===62||S===92?(e.consume(S),p):p(S)}function w(S){return!h&&(S===null||S===41||he(S))?(e.exit("chunkString"),e.exit(s),e.exit(l),e.exit(n),t(S)):h999||p===null||p===91||p===93&&!o||p===94&&!s&&"_hiddenFootnoteSupport"in l.parser.constructs?r(p):p===93?(e.exit(a),e.enter(i),e.consume(p),e.exit(i),e.exit(n),t):X(p)?(e.enter("lineEnding"),e.consume(p),e.exit("lineEnding"),h):(e.enter("chunkString",{contentType:"string"}),m(p))}function m(p){return p===null||p===91||p===93||X(p)||s++>999?(e.exit("chunkString"),h(p)):(e.consume(p),o||(o=!le(p)),p===92?d:m)}function d(p){return p===91||p===92||p===93?(e.consume(p),s++,m):m(p)}}function ul(e,t,r,n,i,a){let l;return s;function s(d){return d===34||d===39||d===40?(e.enter(n),e.enter(i),e.consume(d),e.exit(i),l=d===40?41:d,o):r(d)}function o(d){return d===l?(e.enter(i),e.consume(d),e.exit(i),e.exit(n),t):(e.enter(a),u(d))}function u(d){return d===l?(e.exit(a),o(l)):d===null?r(d):X(d)?(e.enter("lineEnding"),e.consume(d),e.exit("lineEnding"),ne(e,u,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),h(d))}function h(d){return d===l||d===null||X(d)?(e.exit("chunkString"),u(d)):(e.consume(d),d===92?m:h)}function m(d){return d===l||d===92?(e.consume(d),h):h(d)}}function dr(e,t){let r;return n;function n(i){return X(i)?(e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),r=!0,n):le(i)?ne(e,n,r?"linePrefix":"lineSuffix")(i):t(i)}}const zu={name:"definition",tokenize:Cu},Mu={partial:!0,tokenize:Eu};function Cu(e,t,r){const n=this;let i;return a;function a(p){return e.enter("definition"),l(p)}function l(p){return ol.call(n,e,s,r,"definitionLabel","definitionLabelMarker","definitionLabelString")(p)}function s(p){return i=it(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)),p===58?(e.enter("definitionMarker"),e.consume(p),e.exit("definitionMarker"),o):r(p)}function o(p){return he(p)?dr(e,u)(p):u(p)}function u(p){return sl(e,h,r,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(p)}function h(p){return e.attempt(Mu,m,m)(p)}function m(p){return le(p)?ne(e,d,"whitespace")(p):d(p)}function d(p){return p===null||X(p)?(e.exit("definition"),n.parser.defined.push(i),t(p)):r(p)}}function Eu(e,t,r){return n;function n(s){return he(s)?dr(e,i)(s):r(s)}function i(s){return ul(e,a,r,"definitionTitle","definitionTitleMarker","definitionTitleString")(s)}function a(s){return le(s)?ne(e,l,"whitespace")(s):l(s)}function l(s){return s===null||X(s)?t(s):r(s)}}const Du={name:"hardBreakEscape",tokenize:Iu};function Iu(e,t,r){return n;function n(a){return e.enter("hardBreakEscape"),e.consume(a),i}function i(a){return X(a)?(e.exit("hardBreakEscape"),t(a)):r(a)}}const Bu={name:"headingAtx",resolve:Nu,tokenize:Fu};function Nu(e,t){let r=e.length-2,n=3,i,a;return e[n][1].type==="whitespace"&&(n+=2),r-2>n&&e[r][1].type==="whitespace"&&(r-=2),e[r][1].type==="atxHeadingSequence"&&(n===r-1||r-4>n&&e[r-2][1].type==="whitespace")&&(r-=n+1===r?2:4),r>n&&(i={type:"atxHeadingText",start:e[n][1].start,end:e[r][1].end},a={type:"chunkText",start:e[n][1].start,end:e[r][1].end,contentType:"text"},Ge(e,n,r-n+1,[["enter",i,t],["enter",a,t],["exit",a,t],["exit",i,t]])),e}function Fu(e,t,r){let n=0;return i;function i(h){return e.enter("atxHeading"),a(h)}function a(h){return e.enter("atxHeadingSequence"),l(h)}function l(h){return h===35&&n++<6?(e.consume(h),l):h===null||he(h)?(e.exit("atxHeadingSequence"),s(h)):r(h)}function s(h){return h===35?(e.enter("atxHeadingSequence"),o(h)):h===null||X(h)?(e.exit("atxHeading"),t(h)):le(h)?ne(e,s,"whitespace")(h):(e.enter("atxHeadingText"),u(h))}function o(h){return h===35?(e.consume(h),o):(e.exit("atxHeadingSequence"),s(h))}function u(h){return h===null||h===35||he(h)?(e.exit("atxHeadingText"),s(h)):(e.consume(h),u)}}const Lu=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],ki=["pre","script","style","textarea"],Ru={concrete:!0,name:"htmlFlow",resolveTo:qu,tokenize:Hu},Pu={partial:!0,tokenize:ju},Ou={partial:!0,tokenize:Vu};function qu(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function Hu(e,t,r){const n=this;let i,a,l,s,o;return u;function u(A){return h(A)}function h(A){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(A),m}function m(A){return A===33?(e.consume(A),d):A===47?(e.consume(A),a=!0,w):A===63?(e.consume(A),i=3,n.interrupt?t:k):Ne(A)?(e.consume(A),l=String.fromCharCode(A),M):r(A)}function d(A){return A===45?(e.consume(A),i=2,p):A===91?(e.consume(A),i=5,s=0,y):Ne(A)?(e.consume(A),i=4,n.interrupt?t:k):r(A)}function p(A){return A===45?(e.consume(A),n.interrupt?t:k):r(A)}function y(A){const De="CDATA[";return A===De.charCodeAt(s++)?(e.consume(A),s===De.length?n.interrupt?t:j:y):r(A)}function w(A){return Ne(A)?(e.consume(A),l=String.fromCharCode(A),M):r(A)}function M(A){if(A===null||A===47||A===62||he(A)){const De=A===47,Re=l.toLowerCase();return!De&&!a&&ki.includes(Re)?(i=1,n.interrupt?t(A):j(A)):Lu.includes(l.toLowerCase())?(i=6,De?(e.consume(A),S):n.interrupt?t(A):j(A)):(i=7,n.interrupt&&!n.parser.lazy[n.now().line]?r(A):a?z(A):I(A))}return A===45||Ce(A)?(e.consume(A),l+=String.fromCharCode(A),M):r(A)}function S(A){return A===62?(e.consume(A),n.interrupt?t:j):r(A)}function z(A){return le(A)?(e.consume(A),z):D(A)}function I(A){return A===47?(e.consume(A),D):A===58||A===95||Ne(A)?(e.consume(A),V):le(A)?(e.consume(A),I):D(A)}function V(A){return A===45||A===46||A===58||A===95||Ce(A)?(e.consume(A),V):O(A)}function O(A){return A===61?(e.consume(A),E):le(A)?(e.consume(A),O):I(A)}function E(A){return A===null||A===60||A===61||A===62||A===96?r(A):A===34||A===39?(e.consume(A),o=A,G):le(A)?(e.consume(A),E):K(A)}function G(A){return A===o?(e.consume(A),o=null,U):A===null||X(A)?r(A):(e.consume(A),G)}function K(A){return A===null||A===34||A===39||A===47||A===60||A===61||A===62||A===96||he(A)?O(A):(e.consume(A),K)}function U(A){return A===47||A===62||le(A)?I(A):r(A)}function D(A){return A===62?(e.consume(A),$):r(A)}function $(A){return A===null||X(A)?j(A):le(A)?(e.consume(A),$):r(A)}function j(A){return A===45&&i===2?(e.consume(A),ae):A===60&&i===1?(e.consume(A),fe):A===62&&i===4?(e.consume(A),ke):A===63&&i===3?(e.consume(A),k):A===93&&i===5?(e.consume(A),je):X(A)&&(i===6||i===7)?(e.exit("htmlFlowData"),e.check(Pu,be,ie)(A)):A===null||X(A)?(e.exit("htmlFlowData"),ie(A)):(e.consume(A),j)}function ie(A){return e.check(Ou,Y,be)(A)}function Y(A){return e.enter("lineEnding"),e.consume(A),e.exit("lineEnding"),q}function q(A){return A===null||X(A)?ie(A):(e.enter("htmlFlowData"),j(A))}function ae(A){return A===45?(e.consume(A),k):j(A)}function fe(A){return A===47?(e.consume(A),l="",Me):j(A)}function Me(A){if(A===62){const De=l.toLowerCase();return ki.includes(De)?(e.consume(A),ke):j(A)}return Ne(A)&&l.length<8?(e.consume(A),l+=String.fromCharCode(A),Me):j(A)}function je(A){return A===93?(e.consume(A),k):j(A)}function k(A){return A===62?(e.consume(A),ke):A===45&&i===2?(e.consume(A),k):j(A)}function ke(A){return A===null||X(A)?(e.exit("htmlFlowData"),be(A)):(e.consume(A),ke)}function be(A){return e.exit("htmlFlow"),t(A)}}function Vu(e,t,r){const n=this;return i;function i(l){return X(l)?(e.enter("lineEnding"),e.consume(l),e.exit("lineEnding"),a):r(l)}function a(l){return n.parser.lazy[n.now().line]?r(l):t(l)}}function ju(e,t,r){return n;function n(i){return e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),e.attempt(Ar,t,r)}}const $u={name:"htmlText",tokenize:Uu};function Uu(e,t,r){const n=this;let i,a,l;return s;function s(k){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(k),o}function o(k){return k===33?(e.consume(k),u):k===47?(e.consume(k),O):k===63?(e.consume(k),I):Ne(k)?(e.consume(k),K):r(k)}function u(k){return k===45?(e.consume(k),h):k===91?(e.consume(k),a=0,y):Ne(k)?(e.consume(k),z):r(k)}function h(k){return k===45?(e.consume(k),p):r(k)}function m(k){return k===null?r(k):k===45?(e.consume(k),d):X(k)?(l=m,fe(k)):(e.consume(k),m)}function d(k){return k===45?(e.consume(k),p):m(k)}function p(k){return k===62?ae(k):k===45?d(k):m(k)}function y(k){const ke="CDATA[";return k===ke.charCodeAt(a++)?(e.consume(k),a===ke.length?w:y):r(k)}function w(k){return k===null?r(k):k===93?(e.consume(k),M):X(k)?(l=w,fe(k)):(e.consume(k),w)}function M(k){return k===93?(e.consume(k),S):w(k)}function S(k){return k===62?ae(k):k===93?(e.consume(k),S):w(k)}function z(k){return k===null||k===62?ae(k):X(k)?(l=z,fe(k)):(e.consume(k),z)}function I(k){return k===null?r(k):k===63?(e.consume(k),V):X(k)?(l=I,fe(k)):(e.consume(k),I)}function V(k){return k===62?ae(k):I(k)}function O(k){return Ne(k)?(e.consume(k),E):r(k)}function E(k){return k===45||Ce(k)?(e.consume(k),E):G(k)}function G(k){return X(k)?(l=G,fe(k)):le(k)?(e.consume(k),G):ae(k)}function K(k){return k===45||Ce(k)?(e.consume(k),K):k===47||k===62||he(k)?U(k):r(k)}function U(k){return k===47?(e.consume(k),ae):k===58||k===95||Ne(k)?(e.consume(k),D):X(k)?(l=U,fe(k)):le(k)?(e.consume(k),U):ae(k)}function D(k){return k===45||k===46||k===58||k===95||Ce(k)?(e.consume(k),D):$(k)}function $(k){return k===61?(e.consume(k),j):X(k)?(l=$,fe(k)):le(k)?(e.consume(k),$):U(k)}function j(k){return k===null||k===60||k===61||k===62||k===96?r(k):k===34||k===39?(e.consume(k),i=k,ie):X(k)?(l=j,fe(k)):le(k)?(e.consume(k),j):(e.consume(k),Y)}function ie(k){return k===i?(e.consume(k),i=void 0,q):k===null?r(k):X(k)?(l=ie,fe(k)):(e.consume(k),ie)}function Y(k){return k===null||k===34||k===39||k===60||k===61||k===96?r(k):k===47||k===62||he(k)?U(k):(e.consume(k),Y)}function q(k){return k===47||k===62||he(k)?U(k):r(k)}function ae(k){return k===62?(e.consume(k),e.exit("htmlTextData"),e.exit("htmlText"),t):r(k)}function fe(k){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(k),e.exit("lineEnding"),Me}function Me(k){return le(k)?ne(e,je,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(k):je(k)}function je(k){return e.enter("htmlTextData"),l(k)}}const A0={name:"labelEnd",resolveAll:Yu,resolveTo:Xu,tokenize:Ku},_u={tokenize:Zu},Gu={tokenize:Qu},Wu={tokenize:Ju};function Yu(e){let t=-1;const r=[];for(;++t=3&&(u===null||X(u))?(e.exit("thematicBreak"),t(u)):r(u)}function o(u){return u===i?(e.consume(u),n++,o):(e.exit("thematicBreakSequence"),le(u)?ne(e,s,"whitespace")(u):s(u))}}const Pe={continuation:{tokenize:u1},exit:h1,name:"list",tokenize:o1},l1={partial:!0,tokenize:m1},s1={partial:!0,tokenize:c1};function o1(e,t,r){const n=this,i=n.events[n.events.length-1];let a=i&&i[1].type==="linePrefix"?i[2].sliceSerialize(i[1],!0).length:0,l=0;return s;function s(p){const y=n.containerState.type||(p===42||p===43||p===45?"listUnordered":"listOrdered");if(y==="listUnordered"?!n.containerState.marker||p===n.containerState.marker:Jn(p)){if(n.containerState.type||(n.containerState.type=y,e.enter(y,{_container:!0})),y==="listUnordered")return e.enter("listItemPrefix"),p===42||p===45?e.check($r,r,u)(p):u(p);if(!n.interrupt||p===49)return e.enter("listItemPrefix"),e.enter("listItemValue"),o(p)}return r(p)}function o(p){return Jn(p)&&++l<10?(e.consume(p),o):(!n.interrupt||l<2)&&(n.containerState.marker?p===n.containerState.marker:p===41||p===46)?(e.exit("listItemValue"),u(p)):r(p)}function u(p){return e.enter("listItemMarker"),e.consume(p),e.exit("listItemMarker"),n.containerState.marker=n.containerState.marker||p,e.check(Ar,n.interrupt?r:h,e.attempt(l1,d,m))}function h(p){return n.containerState.initialBlankLine=!0,a++,d(p)}function m(p){return le(p)?(e.enter("listItemPrefixWhitespace"),e.consume(p),e.exit("listItemPrefixWhitespace"),d):r(p)}function d(p){return n.containerState.size=a+n.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(p)}}function u1(e,t,r){const n=this;return n.containerState._closeFlow=void 0,e.check(Ar,i,a);function i(s){return n.containerState.furtherBlankLines=n.containerState.furtherBlankLines||n.containerState.initialBlankLine,ne(e,t,"listItemIndent",n.containerState.size+1)(s)}function a(s){return n.containerState.furtherBlankLines||!le(s)?(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,l(s)):(n.containerState.furtherBlankLines=void 0,n.containerState.initialBlankLine=void 0,e.attempt(s1,t,l)(s))}function l(s){return n.containerState._closeFlow=!0,n.interrupt=void 0,ne(e,e.attempt(Pe,t,r),"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(s)}}function c1(e,t,r){const n=this;return ne(e,i,"listItemIndent",n.containerState.size+1);function i(a){const l=n.events[n.events.length-1];return l&&l[1].type==="listItemIndent"&&l[2].sliceSerialize(l[1],!0).length===n.containerState.size?t(a):r(a)}}function h1(e){e.exit(this.containerState.type)}function m1(e,t,r){const n=this;return ne(e,i,"listItemPrefixWhitespace",n.parser.constructs.disable.null.includes("codeIndented")?void 0:5);function i(a){const l=n.events[n.events.length-1];return!le(a)&&l&&l[1].type==="listItemPrefixWhitespace"?t(a):r(a)}}const Si={name:"setextUnderline",resolveTo:f1,tokenize:p1};function f1(e,t){let r=e.length,n,i,a;for(;r--;)if(e[r][0]==="enter"){if(e[r][1].type==="content"){n=r;break}e[r][1].type==="paragraph"&&(i=r)}else e[r][1].type==="content"&&e.splice(r,1),!a&&e[r][1].type==="definition"&&(a=r);const l={type:"setextHeading",start:{...e[n][1].start},end:{...e[e.length-1][1].end}};return e[i][1].type="setextHeadingText",a?(e.splice(i,0,["enter",l,t]),e.splice(a+1,0,["exit",e[n][1],t]),e[n][1].end={...e[a][1].end}):e[n][1]=l,e.push(["exit",l,t]),e}function p1(e,t,r){const n=this;let i;return a;function a(u){let h=n.events.length,m;for(;h--;)if(n.events[h][1].type!=="lineEnding"&&n.events[h][1].type!=="linePrefix"&&n.events[h][1].type!=="content"){m=n.events[h][1].type==="paragraph";break}return!n.parser.lazy[n.now().line]&&(n.interrupt||m)?(e.enter("setextHeadingLine"),i=u,l(u)):r(u)}function l(u){return e.enter("setextHeadingLineSequence"),s(u)}function s(u){return u===i?(e.consume(u),s):(e.exit("setextHeadingLineSequence"),le(u)?ne(e,o,"lineSuffix")(u):o(u))}function o(u){return u===null||X(u)?(e.exit("setextHeadingLine"),t(u)):r(u)}}const d1={tokenize:g1};function g1(e){const t=this,r=e.attempt(Ar,n,e.attempt(this.parser.constructs.flowInitial,i,ne(e,e.attempt(this.parser.constructs.flow,i,e.attempt(wu,i)),"linePrefix")));return r;function n(a){if(a===null){e.consume(a);return}return e.enter("lineEndingBlank"),e.consume(a),e.exit("lineEndingBlank"),t.currentConstruct=void 0,r}function i(a){if(a===null){e.consume(a);return}return e.enter("lineEnding"),e.consume(a),e.exit("lineEnding"),t.currentConstruct=void 0,r}}const v1={resolveAll:hl()},y1=cl("string"),b1=cl("text");function cl(e){return{resolveAll:hl(e==="text"?x1:void 0),tokenize:t};function t(r){const n=this,i=this.parser.constructs[e],a=r.attempt(i,l,s);return l;function l(h){return u(h)?a(h):s(h)}function s(h){if(h===null){r.consume(h);return}return r.enter("data"),r.consume(h),o}function o(h){return u(h)?(r.exit("data"),a(h)):(r.consume(h),o)}function u(h){if(h===null)return!0;const m=i[h];let d=-1;if(m)for(;++d-1){const s=l[0];typeof s=="string"?l[0]=s.slice(n):l.shift()}a>0&&l.push(e[i].slice(0,a))}return l}function N1(e,t){let r=-1;const n=[];let i;for(;++r0){const rt=ee.tokenStack[ee.tokenStack.length-1];(rt[1]||Ti).call(ee,void 0,rt[0])}for(H.position={start:At(B.length>0?B[0][1].start:{line:1,column:1,offset:0}),end:At(B.length>0?B[B.length-2][1].end:{line:1,column:1,offset:0})},ce=-1;++ce1?"-"+s:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(l)}]};e.patch(t,o);const u={type:"element",tagName:"sup",properties:{},children:[o]};return e.patch(t,u),e.applyData(t,u)}function K1(e,t){const r={type:"element",tagName:"h"+t.depth,properties:{},children:e.all(t)};return e.patch(t,r),e.applyData(t,r)}function Z1(e,t){if(e.options.allowDangerousHtml){const r={type:"raw",value:t.value};return e.patch(t,r),e.applyData(t,r)}}function pl(e,t){const r=t.referenceType;let n="]";if(r==="collapsed"?n+="[]":r==="full"&&(n+="["+(t.label||t.identifier)+"]"),t.type==="imageReference")return[{type:"text",value:"!["+t.alt+n}];const i=e.all(t),a=i[0];a&&a.type==="text"?a.value="["+a.value:i.unshift({type:"text",value:"["});const l=i[i.length-1];return l&&l.type==="text"?l.value+=n:i.push({type:"text",value:n}),i}function Q1(e,t){const r=String(t.identifier).toUpperCase(),n=e.definitionById.get(r);if(!n)return pl(e,t);const i={src:tr(n.url||""),alt:t.alt};n.title!==null&&n.title!==void 0&&(i.title=n.title);const a={type:"element",tagName:"img",properties:i,children:[]};return e.patch(t,a),e.applyData(t,a)}function J1(e,t){const r={src:tr(t.url)};t.alt!==null&&t.alt!==void 0&&(r.alt=t.alt),t.title!==null&&t.title!==void 0&&(r.title=t.title);const n={type:"element",tagName:"img",properties:r,children:[]};return e.patch(t,n),e.applyData(t,n)}function ec(e,t){const r={type:"text",value:t.value.replace(/\r?\n|\r/g," ")};e.patch(t,r);const n={type:"element",tagName:"code",properties:{},children:[r]};return e.patch(t,n),e.applyData(t,n)}function tc(e,t){const r=String(t.identifier).toUpperCase(),n=e.definitionById.get(r);if(!n)return pl(e,t);const i={href:tr(n.url||"")};n.title!==null&&n.title!==void 0&&(i.title=n.title);const a={type:"element",tagName:"a",properties:i,children:e.all(t)};return e.patch(t,a),e.applyData(t,a)}function rc(e,t){const r={href:tr(t.url)};t.title!==null&&t.title!==void 0&&(r.title=t.title);const n={type:"element",tagName:"a",properties:r,children:e.all(t)};return e.patch(t,n),e.applyData(t,n)}function nc(e,t,r){const n=e.all(t),i=r?ic(r):dl(t),a={},l=[];if(typeof t.checked=="boolean"){const h=n[0];let m;h&&h.type==="element"&&h.tagName==="p"?m=h:(m={type:"element",tagName:"p",properties:{},children:[]},n.unshift(m)),m.children.length>0&&m.children.unshift({type:"text",value:" "}),m.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:t.checked,disabled:!0},children:[]}),a.className=["task-list-item"]}let s=-1;for(;++s1}function ac(e,t){const r={},n=e.all(t);let i=-1;for(typeof t.start=="number"&&t.start!==1&&(r.start=t.start);++i0){const l={type:"element",tagName:"tbody",properties:{},children:e.wrap(r,!0)},s=y0(t.children[1]),o=Ya(t.children[t.children.length-1]);s&&o&&(l.position={start:s,end:o}),i.push(l)}const a={type:"element",tagName:"table",properties:{},children:e.wrap(i,!0)};return e.patch(t,a),e.applyData(t,a)}function cc(e,t,r){const n=r?r.children:void 0,a=(n?n.indexOf(t):1)===0?"th":"td",l=r&&r.type==="table"?r.align:void 0,s=l?l.length:t.children.length;let o=-1;const u=[];for(;++o0,!0),n[0]),i=n.index+n[0].length,n=r.exec(t);return a.push(Ci(t.slice(i),i>0,!1)),a.join("")}function Ci(e,t,r){let n=0,i=e.length;if(t){let a=e.codePointAt(n);for(;a===zi||a===Mi;)n++,a=e.codePointAt(n)}if(r){let a=e.codePointAt(i-1);for(;a===zi||a===Mi;)i--,a=e.codePointAt(i-1)}return i>n?e.slice(n,i):""}function fc(e,t){const r={type:"text",value:mc(String(t.value))};return e.patch(t,r),e.applyData(t,r)}function pc(e,t){const r={type:"element",tagName:"hr",properties:{},children:[]};return e.patch(t,r),e.applyData(t,r)}const dc={blockquote:U1,break:_1,code:G1,delete:W1,emphasis:Y1,footnoteReference:X1,heading:K1,html:Z1,imageReference:Q1,image:J1,inlineCode:ec,linkReference:tc,link:rc,listItem:nc,list:ac,paragraph:lc,root:sc,strong:oc,table:uc,tableCell:hc,tableRow:cc,text:fc,thematicBreak:pc,toml:Dr,yaml:Dr,definition:Dr,footnoteDefinition:Dr};function Dr(){}const gl=-1,an=0,gr=1,Wr=2,T0=3,z0=4,M0=5,C0=6,vl=7,yl=8,Ei=typeof self=="object"?self:globalThis,gc=(e,t)=>{const r=(i,a)=>(e.set(a,i),i),n=i=>{if(e.has(i))return e.get(i);const[a,l]=t[i];switch(a){case an:case gl:return r(l,i);case gr:{const s=r([],i);for(const o of l)s.push(n(o));return s}case Wr:{const s=r({},i);for(const[o,u]of l)s[n(o)]=n(u);return s}case T0:return r(new Date(l),i);case z0:{const{source:s,flags:o}=l;return r(new RegExp(s,o),i)}case M0:{const s=r(new Map,i);for(const[o,u]of l)s.set(n(o),n(u));return s}case C0:{const s=r(new Set,i);for(const o of l)s.add(n(o));return s}case vl:{const{name:s,message:o}=l;return r(new Ei[s](o),i)}case yl:return r(BigInt(l),i);case"BigInt":return r(Object(BigInt(l)),i);case"ArrayBuffer":return r(new Uint8Array(l).buffer,l);case"DataView":{const{buffer:s}=new Uint8Array(l);return r(new DataView(s),l)}}return r(new Ei[a](l),i)};return n},Di=e=>gc(new Map,e)(0),Wt="",{toString:vc}={},{keys:yc}=Object,mr=e=>{const t=typeof e;if(t!=="object"||!e)return[an,t];const r=vc.call(e).slice(8,-1);switch(r){case"Array":return[gr,Wt];case"Object":return[Wr,Wt];case"Date":return[T0,Wt];case"RegExp":return[z0,Wt];case"Map":return[M0,Wt];case"Set":return[C0,Wt];case"DataView":return[gr,r]}return r.includes("Array")?[gr,r]:r.includes("Error")?[vl,r]:[Wr,r]},Ir=([e,t])=>e===an&&(t==="function"||t==="symbol"),bc=(e,t,r,n)=>{const i=(l,s)=>{const o=n.push(l)-1;return r.set(s,o),o},a=l=>{if(r.has(l))return r.get(l);let[s,o]=mr(l);switch(s){case an:{let h=l;switch(o){case"bigint":s=yl,h=l.toString();break;case"function":case"symbol":if(e)throw new TypeError("unable to serialize "+o);h=null;break;case"undefined":return i([gl],l)}return i([s,h],l)}case gr:{if(o){let d=l;return o==="DataView"?d=new Uint8Array(l.buffer):o==="ArrayBuffer"&&(d=new Uint8Array(l)),i([o,[...d]],l)}const h=[],m=i([s,h],l);for(const d of l)h.push(a(d));return m}case Wr:{if(o)switch(o){case"BigInt":return i([o,l.toString()],l);case"Boolean":case"Number":case"String":return i([o,l.valueOf()],l)}if(t&&"toJSON"in l)return a(l.toJSON());const h=[],m=i([s,h],l);for(const d of yc(l))(e||!Ir(mr(l[d])))&&h.push([a(d),a(l[d])]);return m}case T0:return i([s,l.toISOString()],l);case z0:{const{source:h,flags:m}=l;return i([s,{source:h,flags:m}],l)}case M0:{const h=[],m=i([s,h],l);for(const[d,p]of l)(e||!(Ir(mr(d))||Ir(mr(p))))&&h.push([a(d),a(p)]);return m}case C0:{const h=[],m=i([s,h],l);for(const d of l)(e||!Ir(mr(d)))&&h.push(a(d));return m}}const{message:u}=l;return i([s,{name:o,message:u}],l)};return a},Ii=(e,{json:t,lossy:r}={})=>{const n=[];return bc(!(t||r),!!t,new Map,n)(e),n},Yr=typeof structuredClone=="function"?(e,t)=>t&&("json"in t||"lossy"in t)?Di(Ii(e,t)):structuredClone(e):(e,t)=>Di(Ii(e,t));function xc(e,t){const r=[{type:"text",value:"↩"}];return t>1&&r.push({type:"element",tagName:"sup",properties:{},children:[{type:"text",value:String(t)}]}),r}function wc(e,t){return"Back to reference "+(e+1)+(t>1?"-"+t:"")}function kc(e){const t=typeof e.options.clobberPrefix=="string"?e.options.clobberPrefix:"user-content-",r=e.options.footnoteBackContent||xc,n=e.options.footnoteBackLabel||wc,i=e.options.footnoteLabel||"Footnotes",a=e.options.footnoteLabelTagName||"h2",l=e.options.footnoteLabelProperties||{className:["sr-only"]},s=[];let o=-1;for(;++o0&&y.push({type:"text",value:" "});let z=typeof r=="string"?r:r(o,p);typeof z=="string"&&(z={type:"text",value:z}),y.push({type:"element",tagName:"a",properties:{href:"#"+t+"fnref-"+d+(p>1?"-"+p:""),dataFootnoteBackref:"",ariaLabel:typeof n=="string"?n:n(o,p),className:["data-footnote-backref"]},children:Array.isArray(z)?z:[z]})}const M=h[h.length-1];if(M&&M.type==="element"&&M.tagName==="p"){const z=M.children[M.children.length-1];z&&z.type==="text"?z.value+=" ":M.children.push({type:"text",value:" "}),M.children.push(...y)}else h.push(...y);const S={type:"element",tagName:"li",properties:{id:t+"fn-"+d},children:e.wrap(h,!0)};e.patch(u,S),s.push(S)}if(s.length!==0)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:a,properties:{...Yr(l),id:"footnote-label"},children:[{type:"text",value:i}]},{type:"text",value:` +`},{type:"element",tagName:"ol",properties:{},children:e.wrap(s,!0)},{type:"text",value:` +`}]}}const Tr=(function(e){if(e==null)return zc;if(typeof e=="function")return ln(e);if(typeof e=="object")return Array.isArray(e)?Sc(e):Ac(e);if(typeof e=="string")return Tc(e);throw new Error("Expected function, string, or object as test")});function Sc(e){const t=[];let r=-1;for(;++r":""))+")"})}return d;function d(){let p=bl,y,w,M;if((!t||a(o,u,h[h.length-1]||void 0))&&(p=Ec(r(o,h)),p[0]===t0))return p;if("children"in o&&o.children){const S=o;if(S.children&&p[0]!==xl)for(w=(n?S.children.length:-1)+l,M=h.concat(S);w>-1&&w0&&r.push({type:"text",value:` +`}),r}function Bi(e){let t=0,r=e.charCodeAt(t);for(;r===9||r===32;)t++,r=e.charCodeAt(t);return e.slice(t)}function Ni(e,t){const r=Ic(e,t),n=r.one(e,void 0),i=kc(r),a=Array.isArray(n)?{type:"root",children:n}:n||{type:"root",children:[]};return i&&a.children.push({type:"text",value:` +`},i),a}function Rc(e,t){return e&&"run"in e?async function(r,n){const i=Ni(r,{file:n,...t});await e.run(i,n)}:function(r,n){return Ni(r,{file:n,...e||t})}}function Fi(e){if(e)throw e}var kn,Li;function Pc(){if(Li)return kn;Li=1;var e=Object.prototype.hasOwnProperty,t=Object.prototype.toString,r=Object.defineProperty,n=Object.getOwnPropertyDescriptor,i=function(u){return typeof Array.isArray=="function"?Array.isArray(u):t.call(u)==="[object Array]"},a=function(u){if(!u||t.call(u)!=="[object Object]")return!1;var h=e.call(u,"constructor"),m=u.constructor&&u.constructor.prototype&&e.call(u.constructor.prototype,"isPrototypeOf");if(u.constructor&&!h&&!m)return!1;var d;for(d in u);return typeof d>"u"||e.call(u,d)},l=function(u,h){r&&h.name==="__proto__"?r(u,h.name,{enumerable:!0,configurable:!0,value:h.newValue,writable:!0}):u[h.name]=h.newValue},s=function(u,h){if(h==="__proto__")if(e.call(u,h)){if(n)return n(u,h).value}else return;return u[h]};return kn=function o(){var u,h,m,d,p,y,w=arguments[0],M=1,S=arguments.length,z=!1;for(typeof w=="boolean"&&(z=w,w=arguments[1]||{},M=2),(w==null||typeof w!="object"&&typeof w!="function")&&(w={});Ml.length;let o;s&&l.push(i);try{o=e.apply(this,l)}catch(u){const h=u;if(s&&r)throw h;return i(h)}s||(o&&o.then&&typeof o.then=="function"?o.then(a,i):o instanceof Error?i(o):a(o))}function i(l,...s){r||(r=!0,t(l,...s))}function a(l){i(null,l)}}const at={basename:Vc,dirname:jc,extname:$c,join:Uc,sep:"/"};function Vc(e,t){if(t!==void 0&&typeof t!="string")throw new TypeError('"ext" argument must be a string');zr(e);let r=0,n=-1,i=e.length,a;if(t===void 0||t.length===0||t.length>e.length){for(;i--;)if(e.codePointAt(i)===47){if(a){r=i+1;break}}else n<0&&(a=!0,n=i+1);return n<0?"":e.slice(r,n)}if(t===e)return"";let l=-1,s=t.length-1;for(;i--;)if(e.codePointAt(i)===47){if(a){r=i+1;break}}else l<0&&(a=!0,l=i+1),s>-1&&(e.codePointAt(i)===t.codePointAt(s--)?s<0&&(n=i):(s=-1,n=l));return r===n?n=l:n<0&&(n=e.length),e.slice(r,n)}function jc(e){if(zr(e),e.length===0)return".";let t=-1,r=e.length,n;for(;--r;)if(e.codePointAt(r)===47){if(n){t=r;break}}else n||(n=!0);return t<0?e.codePointAt(0)===47?"/":".":t===1&&e.codePointAt(0)===47?"//":e.slice(0,t)}function $c(e){zr(e);let t=e.length,r=-1,n=0,i=-1,a=0,l;for(;t--;){const s=e.codePointAt(t);if(s===47){if(l){n=t+1;break}continue}r<0&&(l=!0,r=t+1),s===46?i<0?i=t:a!==1&&(a=1):i>-1&&(a=-1)}return i<0||r<0||a===0||a===1&&i===r-1&&i===n+1?"":e.slice(i,r)}function Uc(...e){let t=-1,r;for(;++t0&&e.codePointAt(e.length-1)===47&&(r+="/"),t?"/"+r:r}function Gc(e,t){let r="",n=0,i=-1,a=0,l=-1,s,o;for(;++l<=e.length;){if(l2){if(o=r.lastIndexOf("/"),o!==r.length-1){o<0?(r="",n=0):(r=r.slice(0,o),n=r.length-1-r.lastIndexOf("/")),i=l,a=0;continue}}else if(r.length>0){r="",n=0,i=l,a=0;continue}}t&&(r=r.length>0?r+"/..":"..",n=2)}else r.length>0?r+="/"+e.slice(i+1,l):r=e.slice(i+1,l),n=l-i-1;i=l,a=0}else s===46&&a>-1?a++:a=-1}return r}function zr(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const Wc={cwd:Yc};function Yc(){return"/"}function i0(e){return!!(e!==null&&typeof e=="object"&&"href"in e&&e.href&&"protocol"in e&&e.protocol&&e.auth===void 0)}function Xc(e){if(typeof e=="string")e=new URL(e);else if(!i0(e)){const t=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code="ERR_INVALID_ARG_TYPE",t}if(e.protocol!=="file:"){const t=new TypeError("The URL must be of scheme file");throw t.code="ERR_INVALID_URL_SCHEME",t}return Kc(e)}function Kc(e){if(e.hostname!==""){const n=new TypeError('File URL host must be "localhost" or empty on darwin');throw n.code="ERR_INVALID_FILE_URL_HOST",n}const t=e.pathname;let r=-1;for(;++r0){let[p,...y]=h;const w=n[d][1];n0(w)&&n0(p)&&(p=Sn(!0,w,p)),n[d]=[u,p,...y]}}}}const eh=new I0().freeze();function Mn(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `parser`")}function Cn(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `compiler`")}function En(e,t){if(t)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function Pi(e){if(!n0(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function Oi(e,t,r){if(!r)throw new Error("`"+e+"` finished async. Use `"+t+"` instead")}function Br(e){return th(e)?e:new wl(e)}function th(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function rh(e){return typeof e=="string"||nh(e)}function nh(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}const ih="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",qi=[],Hi={allowDangerousHtml:!0},ah=/^(https?|ircs?|mailto|xmpp)$/i,lh=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"className",id:"remove-classname"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function s5(e){const t=sh(e),r=oh(e);return uh(t.runSync(t.parse(r),r),e)}function sh(e){const t=e.rehypePlugins||qi,r=e.remarkPlugins||qi,n=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...Hi}:Hi;return eh().use($1).use(r).use(Rc,n).use(t)}function oh(e){const t=e.children||"",r=new wl;return typeof t=="string"&&(r.value=t),r}function uh(e,t){const r=t.allowedElements,n=t.allowElement,i=t.components,a=t.disallowedElements,l=t.skipHtml,s=t.unwrapDisallowed,o=t.urlTransform||ch;for(const h of lh)Object.hasOwn(t,h.from)&&(""+h.from+(h.to?"use `"+h.to+"` instead":"remove it")+ih+h.id,void 0);return D0(e,u),zo(e,{Fragment:gn.Fragment,components:i,ignoreInvalidStyle:!0,jsx:gn.jsx,jsxs:gn.jsxs,passKeys:!0,passNode:!0});function u(h,m,d){if(h.type==="raw"&&d&&typeof m=="number")return l?d.children.splice(m,1):d.children[m]={type:"text",value:h.value},m;if(h.type==="element"){let p;for(p in bn)if(Object.hasOwn(bn,p)&&Object.hasOwn(h.properties,p)){const y=h.properties[p],w=bn[p];(w===null||w.includes(h.tagName))&&(h.properties[p]=o(String(y||""),p,h))}}if(h.type==="element"){let p=r?!r.includes(h.tagName):a?a.includes(h.tagName):!1;if(!p&&n&&typeof m=="number"&&(p=!n(h,m,d)),p&&d&&typeof m=="number")return s&&h.children?d.children.splice(m,1,...h.children):d.children.splice(m,1),m}}}function ch(e){const t=e.indexOf(":"),r=e.indexOf("?"),n=e.indexOf("#"),i=e.indexOf("/");return t===-1||i!==-1&&t>i||r!==-1&&t>r||n!==-1&&t>n||ah.test(e.slice(0,t))?e:""}function Vi(e,t){const r=String(e);if(typeof t!="string")throw new TypeError("Expected character");let n=0,i=r.indexOf(t);for(;i!==-1;)n++,i=r.indexOf(t,i+t.length);return n}function hh(e){if(typeof e!="string")throw new TypeError("Expected a string");return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}function mh(e,t,r){const i=Tr((r||{}).ignore||[]),a=fh(t);let l=-1;for(;++l0?{type:"text",value:E}:void 0),E===!1?d.lastIndex=V+1:(y!==V&&z.push({type:"text",value:u.value.slice(y,V)}),Array.isArray(E)?z.push(...E):E&&z.push(E),y=V+I[0].length,S=!0),!d.global)break;I=d.exec(u.value)}return S?(y?\]}]+$/.exec(e);if(!t)return[e,void 0];e=e.slice(0,t.index);let r=t[0],n=r.indexOf(")");const i=Vi(e,"(");let a=Vi(e,")");for(;n!==-1&&i>a;)e+=r.slice(0,n+1),r=r.slice(n+1),n=r.indexOf(")"),a++;return[e,r]}function kl(e,t){const r=e.input.charCodeAt(e.index-1);return(e.index===0||Ot(r)||rn(r))&&(!t||r!==47)}Sl.peek=Rh;function Ch(){this.buffer()}function Eh(e){this.enter({type:"footnoteReference",identifier:"",label:""},e)}function Dh(){this.buffer()}function Ih(e){this.enter({type:"footnoteDefinition",identifier:"",label:"",children:[]},e)}function Bh(e){const t=this.resume(),r=this.stack[this.stack.length-1];r.type,r.identifier=it(this.sliceSerialize(e)).toLowerCase(),r.label=t}function Nh(e){this.exit(e)}function Fh(e){const t=this.resume(),r=this.stack[this.stack.length-1];r.type,r.identifier=it(this.sliceSerialize(e)).toLowerCase(),r.label=t}function Lh(e){this.exit(e)}function Rh(){return"["}function Sl(e,t,r,n){const i=r.createTracker(n);let a=i.move("[^");const l=r.enter("footnoteReference"),s=r.enter("reference");return a+=i.move(r.safe(r.associationId(e),{after:"]",before:a})),s(),l(),a+=i.move("]"),a}function Ph(){return{enter:{gfmFootnoteCallString:Ch,gfmFootnoteCall:Eh,gfmFootnoteDefinitionLabelString:Dh,gfmFootnoteDefinition:Ih},exit:{gfmFootnoteCallString:Bh,gfmFootnoteCall:Nh,gfmFootnoteDefinitionLabelString:Fh,gfmFootnoteDefinition:Lh}}}function Oh(e){let t=!1;return e&&e.firstLineBlank&&(t=!0),{handlers:{footnoteDefinition:r,footnoteReference:Sl},unsafe:[{character:"[",inConstruct:["label","phrasing","reference"]}]};function r(n,i,a,l){const s=a.createTracker(l);let o=s.move("[^");const u=a.enter("footnoteDefinition"),h=a.enter("label");return o+=s.move(a.safe(a.associationId(n),{before:o,after:"]"})),h(),o+=s.move("]:"),n.children&&n.children.length>0&&(s.shift(4),o+=s.move((t?` +`:" ")+a.indentLines(a.containerFlow(n,s.current()),t?Al:qh))),u(),o}}function qh(e,t,r){return t===0?e:Al(e,t,r)}function Al(e,t,r){return(r?"":" ")+e}const Hh=["autolink","destinationLiteral","destinationRaw","reference","titleQuote","titleApostrophe"];Tl.peek=_h;function Vh(){return{canContainEols:["delete"],enter:{strikethrough:$h},exit:{strikethrough:Uh}}}function jh(){return{unsafe:[{character:"~",inConstruct:"phrasing",notInConstruct:Hh}],handlers:{delete:Tl}}}function $h(e){this.enter({type:"delete",children:[]},e)}function Uh(e){this.exit(e)}function Tl(e,t,r,n){const i=r.createTracker(n),a=r.enter("strikethrough");let l=i.move("~~");return l+=r.containerPhrasing(e,{...i.current(),before:l,after:"~"}),l+=i.move("~~"),a(),l}function _h(){return"~"}function Gh(e){return e.length}function Wh(e,t){const r=t||{},n=(r.align||[]).concat(),i=r.stringLength||Gh,a=[],l=[],s=[],o=[];let u=0,h=-1;for(;++hu&&(u=e[h].length);++So[S])&&(o[S]=I)}w.push(z)}l[h]=w,s[h]=M}let m=-1;if(typeof n=="object"&&"length"in n)for(;++mo[m]&&(o[m]=z),p[m]=z),d[m]=I}l.splice(1,0,d),s.splice(1,0,p),h=-1;const y=[];for(;++h "),a.shift(2);const l=r.indentLines(r.containerFlow(e,a.current()),Kh);return i(),l}function Kh(e,t,r){return">"+(r?"":" ")+e}function Zh(e,t){return $i(e,t.inConstruct,!0)&&!$i(e,t.notInConstruct,!1)}function $i(e,t,r){if(typeof t=="string"&&(t=[t]),!t||t.length===0)return r;let n=-1;for(;++nl&&(l=a):a=1,i=n+t.length,n=r.indexOf(t,i);return l}function Qh(e,t){return!!(t.options.fences===!1&&e.value&&!e.lang&&/[^ \r\n]/.test(e.value)&&!/^[\t ]*(?:[\r\n]|$)|(?:^|[\r\n])[\t ]*$/.test(e.value))}function Jh(e){const t=e.options.fence||"`";if(t!=="`"&&t!=="~")throw new Error("Cannot serialize code with `"+t+"` for `options.fence`, expected `` ` `` or `~`");return t}function e4(e,t,r,n){const i=Jh(r),a=e.value||"",l=i==="`"?"GraveAccent":"Tilde";if(Qh(e,r)){const m=r.enter("codeIndented"),d=r.indentLines(a,t4);return m(),d}const s=r.createTracker(n),o=i.repeat(Math.max(zl(a,i)+1,3)),u=r.enter("codeFenced");let h=s.move(o);if(e.lang){const m=r.enter(`codeFencedLang${l}`);h+=s.move(r.safe(e.lang,{before:h,after:" ",encode:["`"],...s.current()})),m()}if(e.lang&&e.meta){const m=r.enter(`codeFencedMeta${l}`);h+=s.move(" "),h+=s.move(r.safe(e.meta,{before:h,after:` +`,encode:["`"],...s.current()})),m()}return h+=s.move(` +`),a&&(h+=s.move(a+` +`)),h+=s.move(o),u(),h}function t4(e,t,r){return(r?"":" ")+e}function B0(e){const t=e.options.quote||'"';if(t!=='"'&&t!=="'")throw new Error("Cannot serialize title with `"+t+"` for `options.quote`, expected `\"`, or `'`");return t}function r4(e,t,r,n){const i=B0(r),a=i==='"'?"Quote":"Apostrophe",l=r.enter("definition");let s=r.enter("label");const o=r.createTracker(n);let u=o.move("[");return u+=o.move(r.safe(r.associationId(e),{before:u,after:"]",...o.current()})),u+=o.move("]: "),s(),!e.url||/[\0- \u007F]/.test(e.url)?(s=r.enter("destinationLiteral"),u+=o.move("<"),u+=o.move(r.safe(e.url,{before:u,after:">",...o.current()})),u+=o.move(">")):(s=r.enter("destinationRaw"),u+=o.move(r.safe(e.url,{before:u,after:e.title?" ":` +`,...o.current()}))),s(),e.title&&(s=r.enter(`title${a}`),u+=o.move(" "+i),u+=o.move(r.safe(e.title,{before:u,after:i,...o.current()})),u+=o.move(i),s()),l(),u}function n4(e){const t=e.options.emphasis||"*";if(t!=="*"&&t!=="_")throw new Error("Cannot serialize emphasis with `"+t+"` for `options.emphasis`, expected `*`, or `_`");return t}function xr(e){return"&#x"+e.toString(16).toUpperCase()+";"}function Xr(e,t,r){const n=Qt(e),i=Qt(t);return n===void 0?i===void 0?r==="_"?{inside:!0,outside:!0}:{inside:!1,outside:!1}:i===1?{inside:!0,outside:!0}:{inside:!1,outside:!0}:n===1?i===void 0?{inside:!1,outside:!1}:i===1?{inside:!0,outside:!0}:{inside:!1,outside:!1}:i===void 0?{inside:!1,outside:!1}:i===1?{inside:!0,outside:!1}:{inside:!1,outside:!1}}Ml.peek=i4;function Ml(e,t,r,n){const i=n4(r),a=r.enter("emphasis"),l=r.createTracker(n),s=l.move(i);let o=l.move(r.containerPhrasing(e,{after:i,before:s,...l.current()}));const u=o.charCodeAt(0),h=Xr(n.before.charCodeAt(n.before.length-1),u,i);h.inside&&(o=xr(u)+o.slice(1));const m=o.charCodeAt(o.length-1),d=Xr(n.after.charCodeAt(0),m,i);d.inside&&(o=o.slice(0,-1)+xr(m));const p=l.move(i);return a(),r.attentionEncodeSurroundingInfo={after:d.outside,before:h.outside},s+o+p}function i4(e,t,r){return r.options.emphasis||"*"}function a4(e,t){let r=!1;return D0(e,function(n){if("value"in n&&/\r?\n|\r/.test(n.value)||n.type==="break")return r=!0,t0}),!!((!e.depth||e.depth<3)&&k0(e)&&(t.options.setext||r))}function l4(e,t,r,n){const i=Math.max(Math.min(6,e.depth||1),1),a=r.createTracker(n);if(a4(e,r)){const h=r.enter("headingSetext"),m=r.enter("phrasing"),d=r.containerPhrasing(e,{...a.current(),before:` +`,after:` +`});return m(),h(),d+` +`+(i===1?"=":"-").repeat(d.length-(Math.max(d.lastIndexOf("\r"),d.lastIndexOf(` +`))+1))}const l="#".repeat(i),s=r.enter("headingAtx"),o=r.enter("phrasing");a.move(l+" ");let u=r.containerPhrasing(e,{before:"# ",after:` +`,...a.current()});return/^[\t ]/.test(u)&&(u=xr(u.charCodeAt(0))+u.slice(1)),u=u?l+" "+u:l,r.options.closeAtx&&(u+=" "+l),o(),s(),u}Cl.peek=s4;function Cl(e){return e.value||""}function s4(){return"<"}El.peek=o4;function El(e,t,r,n){const i=B0(r),a=i==='"'?"Quote":"Apostrophe",l=r.enter("image");let s=r.enter("label");const o=r.createTracker(n);let u=o.move("![");return u+=o.move(r.safe(e.alt,{before:u,after:"]",...o.current()})),u+=o.move("]("),s(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(s=r.enter("destinationLiteral"),u+=o.move("<"),u+=o.move(r.safe(e.url,{before:u,after:">",...o.current()})),u+=o.move(">")):(s=r.enter("destinationRaw"),u+=o.move(r.safe(e.url,{before:u,after:e.title?" ":")",...o.current()}))),s(),e.title&&(s=r.enter(`title${a}`),u+=o.move(" "+i),u+=o.move(r.safe(e.title,{before:u,after:i,...o.current()})),u+=o.move(i),s()),u+=o.move(")"),l(),u}function o4(){return"!"}Dl.peek=u4;function Dl(e,t,r,n){const i=e.referenceType,a=r.enter("imageReference");let l=r.enter("label");const s=r.createTracker(n);let o=s.move("![");const u=r.safe(e.alt,{before:o,after:"]",...s.current()});o+=s.move(u+"]["),l();const h=r.stack;r.stack=[],l=r.enter("reference");const m=r.safe(r.associationId(e),{before:o,after:"]",...s.current()});return l(),r.stack=h,a(),i==="full"||!u||u!==m?o+=s.move(m+"]"):i==="shortcut"?o=o.slice(0,-1):o+=s.move("]"),o}function u4(){return"!"}Il.peek=c4;function Il(e,t,r){let n=e.value||"",i="`",a=-1;for(;new RegExp("(^|[^`])"+i+"([^`]|$)").test(n);)i+="`";for(/[^ \r\n]/.test(n)&&(/^[ \r\n]/.test(n)&&/[ \r\n]$/.test(n)||/^`|`$/.test(n))&&(n=" "+n+" ");++a\u007F]/.test(e.url))}Nl.peek=h4;function Nl(e,t,r,n){const i=B0(r),a=i==='"'?"Quote":"Apostrophe",l=r.createTracker(n);let s,o;if(Bl(e,r)){const h=r.stack;r.stack=[],s=r.enter("autolink");let m=l.move("<");return m+=l.move(r.containerPhrasing(e,{before:m,after:">",...l.current()})),m+=l.move(">"),s(),r.stack=h,m}s=r.enter("link"),o=r.enter("label");let u=l.move("[");return u+=l.move(r.containerPhrasing(e,{before:u,after:"](",...l.current()})),u+=l.move("]("),o(),!e.url&&e.title||/[\0- \u007F]/.test(e.url)?(o=r.enter("destinationLiteral"),u+=l.move("<"),u+=l.move(r.safe(e.url,{before:u,after:">",...l.current()})),u+=l.move(">")):(o=r.enter("destinationRaw"),u+=l.move(r.safe(e.url,{before:u,after:e.title?" ":")",...l.current()}))),o(),e.title&&(o=r.enter(`title${a}`),u+=l.move(" "+i),u+=l.move(r.safe(e.title,{before:u,after:i,...l.current()})),u+=l.move(i),o()),u+=l.move(")"),s(),u}function h4(e,t,r){return Bl(e,r)?"<":"["}Fl.peek=m4;function Fl(e,t,r,n){const i=e.referenceType,a=r.enter("linkReference");let l=r.enter("label");const s=r.createTracker(n);let o=s.move("[");const u=r.containerPhrasing(e,{before:o,after:"]",...s.current()});o+=s.move(u+"]["),l();const h=r.stack;r.stack=[],l=r.enter("reference");const m=r.safe(r.associationId(e),{before:o,after:"]",...s.current()});return l(),r.stack=h,a(),i==="full"||!u||u!==m?o+=s.move(m+"]"):i==="shortcut"?o=o.slice(0,-1):o+=s.move("]"),o}function m4(){return"["}function N0(e){const t=e.options.bullet||"*";if(t!=="*"&&t!=="+"&&t!=="-")throw new Error("Cannot serialize items with `"+t+"` for `options.bullet`, expected `*`, `+`, or `-`");return t}function f4(e){const t=N0(e),r=e.options.bulletOther;if(!r)return t==="*"?"-":"*";if(r!=="*"&&r!=="+"&&r!=="-")throw new Error("Cannot serialize items with `"+r+"` for `options.bulletOther`, expected `*`, `+`, or `-`");if(r===t)throw new Error("Expected `bullet` (`"+t+"`) and `bulletOther` (`"+r+"`) to be different");return r}function p4(e){const t=e.options.bulletOrdered||".";if(t!=="."&&t!==")")throw new Error("Cannot serialize items with `"+t+"` for `options.bulletOrdered`, expected `.` or `)`");return t}function Ll(e){const t=e.options.rule||"*";if(t!=="*"&&t!=="-"&&t!=="_")throw new Error("Cannot serialize rules with `"+t+"` for `options.rule`, expected `*`, `-`, or `_`");return t}function d4(e,t,r,n){const i=r.enter("list"),a=r.bulletCurrent;let l=e.ordered?p4(r):N0(r);const s=e.ordered?l==="."?")":".":f4(r);let o=t&&r.bulletLastUsed?l===r.bulletLastUsed:!1;if(!e.ordered){const h=e.children?e.children[0]:void 0;if((l==="*"||l==="-")&&h&&(!h.children||!h.children[0])&&r.stack[r.stack.length-1]==="list"&&r.stack[r.stack.length-2]==="listItem"&&r.stack[r.stack.length-3]==="list"&&r.stack[r.stack.length-4]==="listItem"&&r.indexStack[r.indexStack.length-1]===0&&r.indexStack[r.indexStack.length-2]===0&&r.indexStack[r.indexStack.length-3]===0&&(o=!0),Ll(r)===l&&h){let m=-1;for(;++m-1?t.start:1)+(r.options.incrementListMarker===!1?0:t.children.indexOf(e))+a);let l=a.length+1;(i==="tab"||i==="mixed"&&(t&&t.type==="list"&&t.spread||e.spread))&&(l=Math.ceil(l/4)*4);const s=r.createTracker(n);s.move(a+" ".repeat(l-a.length)),s.shift(l);const o=r.enter("listItem"),u=r.indentLines(r.containerFlow(e,s.current()),h);return o(),u;function h(m,d,p){return d?(p?"":" ".repeat(l))+m:(p?a:a+" ".repeat(l-a.length))+m}}function y4(e,t,r,n){const i=r.enter("paragraph"),a=r.enter("phrasing"),l=r.containerPhrasing(e,n);return a(),i(),l}const b4=Tr(["break","delete","emphasis","footnote","footnoteReference","image","imageReference","inlineCode","inlineMath","link","linkReference","mdxJsxTextElement","mdxTextExpression","strong","text","textDirective"]);function x4(e,t,r,n){return(e.children.some(function(l){return b4(l)})?r.containerPhrasing:r.containerFlow).call(r,e,n)}function w4(e){const t=e.options.strong||"*";if(t!=="*"&&t!=="_")throw new Error("Cannot serialize strong with `"+t+"` for `options.strong`, expected `*`, or `_`");return t}Rl.peek=k4;function Rl(e,t,r,n){const i=w4(r),a=r.enter("strong"),l=r.createTracker(n),s=l.move(i+i);let o=l.move(r.containerPhrasing(e,{after:i,before:s,...l.current()}));const u=o.charCodeAt(0),h=Xr(n.before.charCodeAt(n.before.length-1),u,i);h.inside&&(o=xr(u)+o.slice(1));const m=o.charCodeAt(o.length-1),d=Xr(n.after.charCodeAt(0),m,i);d.inside&&(o=o.slice(0,-1)+xr(m));const p=l.move(i+i);return a(),r.attentionEncodeSurroundingInfo={after:d.outside,before:h.outside},s+o+p}function k4(e,t,r){return r.options.strong||"*"}function S4(e,t,r,n){return r.safe(e.value,n)}function A4(e){const t=e.options.ruleRepetition||3;if(t<3)throw new Error("Cannot serialize rules with repetition `"+t+"` for `options.ruleRepetition`, expected `3` or more");return t}function T4(e,t,r){const n=(Ll(r)+(r.options.ruleSpaces?" ":"")).repeat(A4(r));return r.options.ruleSpaces?n.slice(0,-1):n}const Pl={blockquote:Xh,break:Ui,code:e4,definition:r4,emphasis:Ml,hardBreak:Ui,heading:l4,html:Cl,image:El,imageReference:Dl,inlineCode:Il,link:Nl,linkReference:Fl,list:d4,listItem:v4,paragraph:y4,root:x4,strong:Rl,text:S4,thematicBreak:T4};function z4(){return{enter:{table:M4,tableData:_i,tableHeader:_i,tableRow:E4},exit:{codeText:D4,table:C4,tableData:Nn,tableHeader:Nn,tableRow:Nn}}}function M4(e){const t=e._align;this.enter({type:"table",align:t.map(function(r){return r==="none"?null:r}),children:[]},e),this.data.inTable=!0}function C4(e){this.exit(e),this.data.inTable=void 0}function E4(e){this.enter({type:"tableRow",children:[]},e)}function Nn(e){this.exit(e)}function _i(e){this.enter({type:"tableCell",children:[]},e)}function D4(e){let t=this.resume();this.data.inTable&&(t=t.replace(/\\([\\|])/g,I4));const r=this.stack[this.stack.length-1];r.type,r.value=t,this.exit(e)}function I4(e,t){return t==="|"?t:e}function B4(e){const t=e||{},r=t.tableCellPadding,n=t.tablePipeAlign,i=t.stringLength,a=r?" ":"|";return{unsafe:[{character:"\r",inConstruct:"tableCell"},{character:` +`,inConstruct:"tableCell"},{atBreak:!0,character:"|",after:"[ :-]"},{character:"|",inConstruct:"tableCell"},{atBreak:!0,character:":",after:"-"},{atBreak:!0,character:"-",after:"[:|-]"}],handlers:{inlineCode:d,table:l,tableCell:o,tableRow:s}};function l(p,y,w,M){return u(h(p,w,M),p.align)}function s(p,y,w,M){const S=m(p,w,M),z=u([S]);return z.slice(0,z.indexOf(` +`))}function o(p,y,w,M){const S=w.enter("tableCell"),z=w.enter("phrasing"),I=w.containerPhrasing(p,{...M,before:a,after:a});return z(),S(),I}function u(p,y){return Wh(p,{align:y,alignDelimiters:n,padding:r,stringLength:i})}function h(p,y,w){const M=p.children;let S=-1;const z=[],I=y.enter("table");for(;++S0&&!r&&(e[e.length-1][1]._gfmAutolinkLiteralWalkedInto=!0),r}const K4={tokenize:im,partial:!0};function Z4(){return{document:{91:{name:"gfmFootnoteDefinition",tokenize:tm,continuation:{tokenize:rm},exit:nm}},text:{91:{name:"gfmFootnoteCall",tokenize:em},93:{name:"gfmPotentialFootnoteCall",add:"after",tokenize:Q4,resolveTo:J4}}}}function Q4(e,t,r){const n=this;let i=n.events.length;const a=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]);let l;for(;i--;){const o=n.events[i][1];if(o.type==="labelImage"){l=o;break}if(o.type==="gfmFootnoteCall"||o.type==="labelLink"||o.type==="label"||o.type==="image"||o.type==="link")break}return s;function s(o){if(!l||!l._balanced)return r(o);const u=it(n.sliceSerialize({start:l.end,end:n.now()}));return u.codePointAt(0)!==94||!a.includes(u.slice(1))?r(o):(e.enter("gfmFootnoteCallLabelMarker"),e.consume(o),e.exit("gfmFootnoteCallLabelMarker"),t(o))}}function J4(e,t){let r=e.length;for(;r--;)if(e[r][1].type==="labelImage"&&e[r][0]==="enter"){e[r][1];break}e[r+1][1].type="data",e[r+3][1].type="gfmFootnoteCallLabelMarker";const n={type:"gfmFootnoteCall",start:Object.assign({},e[r+3][1].start),end:Object.assign({},e[e.length-1][1].end)},i={type:"gfmFootnoteCallMarker",start:Object.assign({},e[r+3][1].end),end:Object.assign({},e[r+3][1].end)};i.end.column++,i.end.offset++,i.end._bufferIndex++;const a={type:"gfmFootnoteCallString",start:Object.assign({},i.end),end:Object.assign({},e[e.length-1][1].start)},l={type:"chunkString",contentType:"string",start:Object.assign({},a.start),end:Object.assign({},a.end)},s=[e[r+1],e[r+2],["enter",n,t],e[r+3],e[r+4],["enter",i,t],["exit",i,t],["enter",a,t],["enter",l,t],["exit",l,t],["exit",a,t],e[e.length-2],e[e.length-1],["exit",n,t]];return e.splice(r,e.length-r+1,...s),e}function em(e,t,r){const n=this,i=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]);let a=0,l;return s;function s(m){return e.enter("gfmFootnoteCall"),e.enter("gfmFootnoteCallLabelMarker"),e.consume(m),e.exit("gfmFootnoteCallLabelMarker"),o}function o(m){return m!==94?r(m):(e.enter("gfmFootnoteCallMarker"),e.consume(m),e.exit("gfmFootnoteCallMarker"),e.enter("gfmFootnoteCallString"),e.enter("chunkString").contentType="string",u)}function u(m){if(a>999||m===93&&!l||m===null||m===91||he(m))return r(m);if(m===93){e.exit("chunkString");const d=e.exit("gfmFootnoteCallString");return i.includes(it(n.sliceSerialize(d)))?(e.enter("gfmFootnoteCallLabelMarker"),e.consume(m),e.exit("gfmFootnoteCallLabelMarker"),e.exit("gfmFootnoteCall"),t):r(m)}return he(m)||(l=!0),a++,e.consume(m),m===92?h:u}function h(m){return m===91||m===92||m===93?(e.consume(m),a++,u):u(m)}}function tm(e,t,r){const n=this,i=n.parser.gfmFootnotes||(n.parser.gfmFootnotes=[]);let a,l=0,s;return o;function o(y){return e.enter("gfmFootnoteDefinition")._container=!0,e.enter("gfmFootnoteDefinitionLabel"),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(y),e.exit("gfmFootnoteDefinitionLabelMarker"),u}function u(y){return y===94?(e.enter("gfmFootnoteDefinitionMarker"),e.consume(y),e.exit("gfmFootnoteDefinitionMarker"),e.enter("gfmFootnoteDefinitionLabelString"),e.enter("chunkString").contentType="string",h):r(y)}function h(y){if(l>999||y===93&&!s||y===null||y===91||he(y))return r(y);if(y===93){e.exit("chunkString");const w=e.exit("gfmFootnoteDefinitionLabelString");return a=it(n.sliceSerialize(w)),e.enter("gfmFootnoteDefinitionLabelMarker"),e.consume(y),e.exit("gfmFootnoteDefinitionLabelMarker"),e.exit("gfmFootnoteDefinitionLabel"),d}return he(y)||(s=!0),l++,e.consume(y),y===92?m:h}function m(y){return y===91||y===92||y===93?(e.consume(y),l++,h):h(y)}function d(y){return y===58?(e.enter("definitionMarker"),e.consume(y),e.exit("definitionMarker"),i.includes(a)||i.push(a),ne(e,p,"gfmFootnoteDefinitionWhitespace")):r(y)}function p(y){return t(y)}}function rm(e,t,r){return e.check(Ar,t,e.attempt(K4,t,r))}function nm(e){e.exit("gfmFootnoteDefinition")}function im(e,t,r){const n=this;return ne(e,i,"gfmFootnoteDefinitionIndent",5);function i(a){const l=n.events[n.events.length-1];return l&&l[1].type==="gfmFootnoteDefinitionIndent"&&l[2].sliceSerialize(l[1],!0).length===4?t(a):r(a)}}function am(e){let r=(e||{}).singleTilde;const n={name:"strikethrough",tokenize:a,resolveAll:i};return r==null&&(r=!0),{text:{126:n},insideSpan:{null:[n]},attentionMarkers:{null:[126]}};function i(l,s){let o=-1;for(;++o1?o(y):(l.consume(y),m++,p);if(m<2&&!r)return o(y);const M=l.exit("strikethroughSequenceTemporary"),S=Qt(y);return M._open=!S||S===2&&!!w,M._close=!w||w===2&&!!S,s(y)}}}class lm{constructor(){this.map=[]}add(t,r,n){sm(this,t,r,n)}consume(t){if(this.map.sort(function(a,l){return a[0]-l[0]}),this.map.length===0)return;let r=this.map.length;const n=[];for(;r>0;)r-=1,n.push(t.slice(this.map[r][0]+this.map[r][1]),this.map[r][2]),t.length=this.map[r][0];n.push(t.slice()),t.length=0;let i=n.pop();for(;i;){for(const a of i)t.push(a);i=n.pop()}this.map.length=0}}function sm(e,t,r,n){let i=0;if(!(r===0&&n.length===0)){for(;i-1;){const Y=n.events[$][1].type;if(Y==="lineEnding"||Y==="linePrefix")$--;else break}const j=$>-1?n.events[$][1].type:null,ie=j==="tableHead"||j==="tableRow"?E:o;return ie===E&&n.parser.lazy[n.now().line]?r(D):ie(D)}function o(D){return e.enter("tableHead"),e.enter("tableRow"),u(D)}function u(D){return D===124||(l=!0,a+=1),h(D)}function h(D){return D===null?r(D):X(D)?a>1?(a=0,n.interrupt=!0,e.exit("tableRow"),e.enter("lineEnding"),e.consume(D),e.exit("lineEnding"),p):r(D):le(D)?ne(e,h,"whitespace")(D):(a+=1,l&&(l=!1,i+=1),D===124?(e.enter("tableCellDivider"),e.consume(D),e.exit("tableCellDivider"),l=!0,h):(e.enter("data"),m(D)))}function m(D){return D===null||D===124||he(D)?(e.exit("data"),h(D)):(e.consume(D),D===92?d:m)}function d(D){return D===92||D===124?(e.consume(D),m):m(D)}function p(D){return n.interrupt=!1,n.parser.lazy[n.now().line]?r(D):(e.enter("tableDelimiterRow"),l=!1,le(D)?ne(e,y,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(D):y(D))}function y(D){return D===45||D===58?M(D):D===124?(l=!0,e.enter("tableCellDivider"),e.consume(D),e.exit("tableCellDivider"),w):O(D)}function w(D){return le(D)?ne(e,M,"whitespace")(D):M(D)}function M(D){return D===58?(a+=1,l=!0,e.enter("tableDelimiterMarker"),e.consume(D),e.exit("tableDelimiterMarker"),S):D===45?(a+=1,S(D)):D===null||X(D)?V(D):O(D)}function S(D){return D===45?(e.enter("tableDelimiterFiller"),z(D)):O(D)}function z(D){return D===45?(e.consume(D),z):D===58?(l=!0,e.exit("tableDelimiterFiller"),e.enter("tableDelimiterMarker"),e.consume(D),e.exit("tableDelimiterMarker"),I):(e.exit("tableDelimiterFiller"),I(D))}function I(D){return le(D)?ne(e,V,"whitespace")(D):V(D)}function V(D){return D===124?y(D):D===null||X(D)?!l||i!==a?O(D):(e.exit("tableDelimiterRow"),e.exit("tableHead"),t(D)):O(D)}function O(D){return r(D)}function E(D){return e.enter("tableRow"),G(D)}function G(D){return D===124?(e.enter("tableCellDivider"),e.consume(D),e.exit("tableCellDivider"),G):D===null||X(D)?(e.exit("tableRow"),t(D)):le(D)?ne(e,G,"whitespace")(D):(e.enter("data"),K(D))}function K(D){return D===null||D===124||he(D)?(e.exit("data"),G(D)):(e.consume(D),D===92?U:K)}function U(D){return D===92||D===124?(e.consume(D),K):K(D)}}function hm(e,t){let r=-1,n=!0,i=0,a=[0,0,0,0],l=[0,0,0,0],s=!1,o=0,u,h,m;const d=new lm;for(;++rr[2]+1){const y=r[2]+1,w=r[3]-r[2]-1;e.add(y,w,[])}}e.add(r[3]+1,0,[["exit",m,t]])}return i!==void 0&&(a.end=Object.assign({},Xt(t.events,i)),e.add(i,0,[["exit",a,t]]),a=void 0),a}function Wi(e,t,r,n,i){const a=[],l=Xt(t.events,r);i&&(i.end=Object.assign({},l),a.push(["exit",i,t])),n.end=Object.assign({},l),a.push(["exit",n,t]),e.add(r+1,0,a)}function Xt(e,t){const r=e[t],n=r[0]==="enter"?"start":"end";return r[1][n]}const mm={name:"tasklistCheck",tokenize:pm};function fm(){return{text:{91:mm}}}function pm(e,t,r){const n=this;return i;function i(o){return n.previous!==null||!n._gfmTasklistFirstContentOfListItem?r(o):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(o),e.exit("taskListCheckMarker"),a)}function a(o){return he(o)?(e.enter("taskListCheckValueUnchecked"),e.consume(o),e.exit("taskListCheckValueUnchecked"),l):o===88||o===120?(e.enter("taskListCheckValueChecked"),e.consume(o),e.exit("taskListCheckValueChecked"),l):r(o)}function l(o){return o===93?(e.enter("taskListCheckMarker"),e.consume(o),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),s):r(o)}function s(o){return X(o)?t(o):le(o)?e.check({tokenize:dm},t,r)(o):r(o)}}function dm(e,t,r){return ne(e,n,"whitespace");function n(i){return i===null?r(i):t(i)}}function gm(e){return tl([V4(),Z4(),am(e),um(),fm()])}const vm={};function o5(e){const t=this,r=e||vm,n=t.data(),i=n.micromarkExtensions||(n.micromarkExtensions=[]),a=n.fromMarkdownExtensions||(n.fromMarkdownExtensions=[]),l=n.toMarkdownExtensions||(n.toMarkdownExtensions=[]);i.push(gm(r)),a.push(P4()),l.push(O4(r))}function ym(){return{enter:{mathFlow:e,mathFlowFenceMeta:t,mathText:a},exit:{mathFlow:i,mathFlowFence:n,mathFlowFenceMeta:r,mathFlowValue:s,mathText:l,mathTextData:s}};function e(o){const u={type:"element",tagName:"code",properties:{className:["language-math","math-display"]},children:[]};this.enter({type:"math",meta:null,value:"",data:{hName:"pre",hChildren:[u]}},o)}function t(){this.buffer()}function r(){const o=this.resume(),u=this.stack[this.stack.length-1];u.type,u.meta=o}function n(){this.data.mathFlowInside||(this.buffer(),this.data.mathFlowInside=!0)}function i(o){const u=this.resume().replace(/^(\r?\n|\r)|(\r?\n|\r)$/g,""),h=this.stack[this.stack.length-1];h.type,this.exit(o),h.value=u;const m=h.data.hChildren[0];m.type,m.tagName,m.children.push({type:"text",value:u}),this.data.mathFlowInside=void 0}function a(o){this.enter({type:"inlineMath",value:"",data:{hName:"code",hProperties:{className:["language-math","math-inline"]},hChildren:[]}},o),this.buffer()}function l(o){const u=this.resume(),h=this.stack[this.stack.length-1];h.type,this.exit(o),h.value=u,h.data.hChildren.push({type:"text",value:u})}function s(o){this.config.enter.data.call(this,o),this.config.exit.data.call(this,o)}}function bm(e){let t=(e||{}).singleDollarTextMath;return t==null&&(t=!0),n.peek=i,{unsafe:[{character:"\r",inConstruct:"mathFlowMeta"},{character:` +`,inConstruct:"mathFlowMeta"},{character:"$",after:t?void 0:"\\$",inConstruct:"phrasing"},{character:"$",inConstruct:"mathFlowMeta"},{atBreak:!0,character:"$",after:"\\$"}],handlers:{math:r,inlineMath:n}};function r(a,l,s,o){const u=a.value||"",h=s.createTracker(o),m="$".repeat(Math.max(zl(u,"$")+1,2)),d=s.enter("mathFlow");let p=h.move(m);if(a.meta){const y=s.enter("mathFlowMeta");p+=h.move(s.safe(a.meta,{after:` +`,before:p,encode:["$"],...h.current()})),y()}return p+=h.move(` +`),u&&(p+=h.move(u+` +`)),p+=h.move(m),d(),p}function n(a,l,s){let o=a.value||"",u=1;for(t||u++;new RegExp("(^|[^$])"+"\\$".repeat(u)+"([^$]|$)").test(o);)u++;const h="$".repeat(u);/[^ \r\n]/.test(o)&&(/^[ \r\n]/.test(o)&&/[ \r\n]$/.test(o)||/^\$|\$$/.test(o))&&(o=" "+o+" ");let m=-1;for(;++m15?u="…"+s.slice(i-15,i):u=s.slice(0,i);var h;a+15":">","<":"<",'"':""","'":"'"},Im=/[&><"']/g;function Bm(e){return String(e).replace(Im,t=>Dm[t])}var Gl=function e(t){return t.type==="ordgroup"||t.type==="color"?t.body.length===1?e(t.body[0]):t:t.type==="font"?e(t.body):t},Nm=function(t){var r=Gl(t);return r.type==="mathord"||r.type==="textord"||r.type==="atom"},Fm=function(t){if(!t)throw new Error("Expected non-null, but got "+String(t));return t},Lm=function(t){var r=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(t);return r?r[2]!==":"||!/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(r[1])?null:r[1].toLowerCase():"_relative"},ue={deflt:Mm,escape:Bm,hyphenate:Em,getBaseElem:Gl,isCharacterBox:Nm,protocolFromUrl:Lm},Ur={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:e=>"#"+e},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(e,t)=>(t.push(e),t)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:e=>Math.max(0,e),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:e=>Math.max(0,e),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:e=>Math.max(0,e),cli:"-e, --max-expand ",cliProcessor:e=>e==="Infinity"?1/0:parseInt(e)},globalGroup:{type:"boolean",cli:!1}};function Rm(e){if(e.default)return e.default;var t=e.type,r=Array.isArray(t)?t[0]:t;if(typeof r!="string")return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}class L0{constructor(t){this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,t=t||{};for(var r in Ur)if(Ur.hasOwnProperty(r)){var n=Ur[r];this[r]=t[r]!==void 0?n.processor?n.processor(t[r]):t[r]:Rm(n)}}reportNonstrict(t,r,n){var i=this.strict;if(typeof i=="function"&&(i=i(t,r,n)),!(!i||i==="ignore")){if(i===!0||i==="error")throw new L("LaTeX-incompatible input and strict mode is set to 'error': "+(r+" ["+t+"]"),n);i==="warn"?typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+t+"]")):typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+t+"]"))}}useStrictBehavior(t,r,n){var i=this.strict;if(typeof i=="function")try{i=i(t,r,n)}catch{i="error"}return!i||i==="ignore"?!1:i===!0||i==="error"?!0:i==="warn"?(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+(r+" ["+t+"]")),!1):(typeof console<"u"&&console.warn("LaTeX-incompatible input and strict mode is set to "+("unrecognized '"+i+"': "+r+" ["+t+"]")),!1)}isTrusted(t){if(t.url&&!t.protocol){var r=ue.protocolFromUrl(t.url);if(r==null)return!1;t.protocol=r}var n=typeof this.trust=="function"?this.trust(t):this.trust;return!!n}}class Tt{constructor(t,r,n){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=t,this.size=r,this.cramped=n}sup(){return lt[Pm[this.id]]}sub(){return lt[Om[this.id]]}fracNum(){return lt[qm[this.id]]}fracDen(){return lt[Hm[this.id]]}cramp(){return lt[Vm[this.id]]}text(){return lt[jm[this.id]]}isTight(){return this.size>=2}}var R0=0,Kr=1,Zt=2,vt=3,wr=4,Ze=5,Jt=6,Fe=7,lt=[new Tt(R0,0,!1),new Tt(Kr,0,!0),new Tt(Zt,1,!1),new Tt(vt,1,!0),new Tt(wr,2,!1),new Tt(Ze,2,!0),new Tt(Jt,3,!1),new Tt(Fe,3,!0)],Pm=[wr,Ze,wr,Ze,Jt,Fe,Jt,Fe],Om=[Ze,Ze,Ze,Ze,Fe,Fe,Fe,Fe],qm=[Zt,vt,wr,Ze,Jt,Fe,Jt,Fe],Hm=[vt,vt,Ze,Ze,Fe,Fe,Fe,Fe],Vm=[Kr,Kr,vt,vt,Ze,Ze,Fe,Fe],jm=[R0,Kr,Zt,vt,Zt,vt,Zt,vt],Q={DISPLAY:lt[R0],TEXT:lt[Zt],SCRIPT:lt[wr],SCRIPTSCRIPT:lt[Jt]},l0=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];function $m(e){for(var t=0;t=i[0]&&e<=i[1])return r.name}return null}var _r=[];l0.forEach(e=>e.blocks.forEach(t=>_r.push(...t)));function Wl(e){for(var t=0;t<_r.length;t+=2)if(e>=_r[t]&&e<=_r[t+1])return!0;return!1}var Yt=80,Um=function(t,r){return"M95,"+(622+t+r)+` +c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14 +c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54 +c44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10 +s173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429 +c69,-144,104.5,-217.7,106.5,-221 +l`+t/2.075+" -"+t+` +c5.3,-9.3,12,-14,20,-14 +H400000v`+(40+t)+`H845.2724 +s-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7 +c-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z +M`+(834+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},_m=function(t,r){return"M263,"+(601+t+r)+`c0.7,0,18,39.7,52,119 +c34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120 +c340,-704.7,510.7,-1060.3,512,-1067 +l`+t/2.084+" -"+t+` +c4.7,-7.3,11,-11,19,-11 +H40000v`+(40+t)+`H1012.3 +s-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232 +c-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1 +s-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26 +c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z +M`+(1001+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},Gm=function(t,r){return"M983 "+(10+t+r)+` +l`+t/3.13+" -"+t+` +c4,-6.7,10,-10,18,-10 H400000v`+(40+t)+` +H1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7 +s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744 +c-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30 +c26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722 +c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5 +c53.7,-170.3,84.5,-266.8,92.5,-289.5z +M`+(1001+t)+" "+r+"h400000v"+(40+t)+"h-400000z"},Wm=function(t,r){return"M424,"+(2398+t+r)+` +c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514 +c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20 +s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121 +s209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081 +l`+t/4.223+" -"+t+`c4,-6.7,10,-10,18,-10 H400000 +v`+(40+t)+`H1014.6 +s-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185 +c-2,6,-10,9,-24,9 +c-8,0,-12,-0.7,-12,-2z M`+(1001+t)+" "+r+` +h400000v`+(40+t)+"h-400000z"},Ym=function(t,r){return"M473,"+(2713+t+r)+` +c339.3,-1799.3,509.3,-2700,510,-2702 l`+t/5.298+" -"+t+` +c3.3,-7.3,9.3,-11,18,-11 H400000v`+(40+t)+`H1017.7 +s-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9 +c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200 +c0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26 +s76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104, +606zM`+(1001+t)+" "+r+"h400000v"+(40+t)+"H1017.7z"},Xm=function(t){var r=t/2;return"M400000 "+t+" H0 L"+r+" 0 l65 45 L145 "+(t-80)+" H400000z"},Km=function(t,r,n){var i=n-54-r-t;return"M702 "+(t+r)+"H400000"+(40+t)+` +H742v`+i+`l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1 +h-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170 +c-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667 +219 661 l218 661zM702 `+r+"H400000v"+(40+t)+"H742z"},Zm=function(t,r,n){r=1e3*r;var i="";switch(t){case"sqrtMain":i=Um(r,Yt);break;case"sqrtSize1":i=_m(r,Yt);break;case"sqrtSize2":i=Gm(r,Yt);break;case"sqrtSize3":i=Wm(r,Yt);break;case"sqrtSize4":i=Ym(r,Yt);break;case"sqrtTall":i=Km(r,Yt,n)}return i},Qm=function(t,r){switch(t){case"⎜":return"M291 0 H417 V"+r+" H291z M291 0 H417 V"+r+" H291z";case"∣":return"M145 0 H188 V"+r+" H145z M145 0 H188 V"+r+" H145z";case"∥":return"M145 0 H188 V"+r+" H145z M145 0 H188 V"+r+" H145z"+("M367 0 H410 V"+r+" H367z M367 0 H410 V"+r+" H367z");case"⎟":return"M457 0 H583 V"+r+" H457z M457 0 H583 V"+r+" H457z";case"⎢":return"M319 0 H403 V"+r+" H319z M319 0 H403 V"+r+" H319z";case"⎥":return"M263 0 H347 V"+r+" H263z M263 0 H347 V"+r+" H263z";case"⎪":return"M384 0 H504 V"+r+" H384z M384 0 H504 V"+r+" H384z";case"⏐":return"M312 0 H355 V"+r+" H312z M312 0 H355 V"+r+" H312z";case"‖":return"M257 0 H300 V"+r+" H257z M257 0 H300 V"+r+" H257z"+("M478 0 H521 V"+r+" H478z M478 0 H521 V"+r+" H478z");default:return""}},Xi={doubleleftarrow:`M262 157 +l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 + 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 + 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 +c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5 + 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87 +-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 +-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z +m8 0v40h399730v-40zm0 194v40h399730v-40z`,doublerightarrow:`M399738 392l +-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5 + 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88 +-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68 +-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18 +-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 +c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3 +-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`,leftarrow:`M400000 241H110l3-3c68.7-52.7 113.7-120 + 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8 +-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247 +c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208 + 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3 + 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202 + l-3-3h399890zM100 241v40h399900v-40z`,leftbrace:`M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 +-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 + 5-6 9-10 13-.7 1-7.3 1-20 1H6z`,leftbraceunder:`M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13 + 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688 + 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 +-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`,leftgroup:`M400000 80 +H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0 + 435 0h399565z`,leftgroupunder:`M400000 262 +H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 + 435 219h399565z`,leftharpoon:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 +-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5 +-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7 +-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`,leftharpoonplus:`M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5 + 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3 +-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7 +-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z +m0 0v40h400000v-40z`,leftharpoondown:`M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 + 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 + 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667 +-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`,leftharpoondownplus:`M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12 + 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7 +-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 +v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`,lefthook:`M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 +-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3 +-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21 + 71.5 23h399859zM103 281v-40h399897v40z`,leftlinesegment:`M40 281 V428 H0 V94 H40 V241 H400000 v40z +M40 281 V428 H0 V94 H40 V241 H400000 v40z`,leftmapsto:`M40 281 V448H0V74H40V241H400000v40z +M40 281 V448H0V74H40V241H400000v40z`,leftToFrom:`M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 +-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8 +c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3 + 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`,longequal:`M0 50 h400000 v40H0z m0 194h40000v40H0z +M0 50 h400000 v40H0z m0 194h40000v40H0z`,midbrace:`M200428 334 +c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14 +-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 + 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11 + 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`,midbraceunder:`M199572 214 +c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14 + 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 + 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0 +-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`,oiintSize1:`M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6 +-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z +m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8 +60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`,oiintSize2:`M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8 +-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z +m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 +c0 110 84 276 504 276s502.4-166 502.4-276z`,oiiintSize1:`M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6 +-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z +m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 +85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`,oiiintSize2:`M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8 +-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z +m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 +c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`,rightarrow:`M0 241v40h399891c-47.3 35.3-84 78-110 128 +-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 + 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 + 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85 +-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 +-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 + 151.7 139 205zm0 0v40h399900v-40z`,rightbrace:`M400000 542l +-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5 +s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 +c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`,rightbraceunder:`M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3 + 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 +-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`,rightgroup:`M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0 + 3-1 3-3v-38c-76-158-257-219-435-219H0z`,rightgroupunder:`M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18 + 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`,rightharpoon:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3 +-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2 +-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 + 69.2 92 94.5zm0 0v40h399900v-40z`,rightharpoonplus:`M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11 +-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7 + 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z +m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`,rightharpoondown:`M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 + 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5 +-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95 +-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`,rightharpoondownplus:`M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8 + 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 + 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3 +-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z +m0-194v40h400000v-40zm0 0v40h400000v-40z`,righthook:`M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3 + 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0 +-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21 + 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`,rightlinesegment:`M399960 241 V94 h40 V428 h-40 V281 H0 v-40z +M399960 241 V94 h40 V428 h-40 V281 H0 v-40z`,rightToFrom:`M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23 + 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 +-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142 +-167z M100 147v40h399900v-40zM0 341v40h399900v-40z`,twoheadleftarrow:`M0 167c68 40 + 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69 +-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 +-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 +-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 + 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`,twoheadrightarrow:`M400000 167 +c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 + 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42 + 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 +-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 + 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`,tilde1:`M200 55.538c-77 0-168 73.953-177 73.953-3 0-7 +-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0 + 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0 + 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 +-68.267.847-113-73.952-191-73.952z`,tilde2:`M344 55.266c-142 0-300.638 81.316-311.5 86.418 +-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9 + 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 +c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751 + 181.476 676 181.476c-149 0-189-126.21-332-126.21z`,tilde3:`M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457 +-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 + 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 + 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 + -338 0-409-156.573-744-156.573z`,tilde4:`M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 +-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 + 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 + 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 + -175.236-744-175.236z`,vec:`M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5 +3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 +10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 +-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1 +-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 +H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 +c-16-25.333-24-45-24-59z`,widehat1:`M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 +c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`,widehat2:`M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat3:`M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widehat4:`M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`,widecheck1:`M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1, +-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`,widecheck2:`M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck3:`M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,widecheck4:`M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`,baraboveleftarrow:`M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202 +c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 +c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130 +s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47 +121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6 +s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11 +c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z +M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`,rightarrowabovebar:`M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32 +-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 +13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39 +-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5 +-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 +-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 +151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`,baraboveshortleftharpoon:`M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 +c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 +c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21 +c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 +c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z +M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`,rightharpoonaboveshortbar:`M0,241 l0,40c399126,0,399993,0,399993,0 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 +c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z +M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`,shortbaraboveleftharpoon:`M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 +c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9, +1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7, +-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z +M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`,shortrightharpoonabovebar:`M53,241l0,40c398570,0,399437,0,399437,0 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 +c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z +M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z`},Jm=function(t,r){switch(t){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v1759 h347 v-84 +H403z M403 1759 V0 H319 V1759 v`+r+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v1759 H0 v84 H347z +M347 1759 V0 H263 V1759 v`+r+" v1759 h84z";case"vert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+" v585 h43z";case"doublevert":return"M145 15 v585 v"+r+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M188 15 H145 v585 v`+r+` v585 h43z +M367 15 v585 v`+r+` v585 c2.667,10,9.667,15,21,15 +c10,0,16.667,-5,20,-15 v-585 v`+-r+` v-585 c-2.667,-10,-9.667,-15,-21,-15 +c-10,0,-16.667,5,-20,15z M410 15 H367 v585 v`+r+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+r+` v1715 h263 v84 H319z +MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+r+` v1799 H0 v-84 H319z +MM319 602 V0 H403 V602 v`+r+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+r+` v602 h84z +M403 1759 V0 H319 V1759 v`+r+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+r+` v602 h84z +M347 1759 V0 h-84 V1759 v`+r+" v602 h84z";case"lparen":return`M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1 +c-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349, +-36,557 l0,`+(r+84)+`c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210, +949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9 +c0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5, +-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189 +l0,-`+(r+92)+`c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3, +-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z`;case"rparen":return`M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3, +63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5 +c11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,`+(r+9)+` +c-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664 +c-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11 +c0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17 +c242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558 +l0,-`+(r+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7, +-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z`;default:throw new Error("Unknown stretchy delimiter.")}};class Mr{constructor(t){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=t,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(t){return this.classes.includes(t)}toNode(){for(var t=document.createDocumentFragment(),r=0;rr.toText();return this.children.map(t).join("")}}var st={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},Fr={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},Ki={Å:"A",Ð:"D",Þ:"o",å:"a",ð:"d",þ:"o",А:"A",Б:"B",В:"B",Г:"F",Д:"A",Е:"E",Ж:"K",З:"3",И:"N",Й:"N",К:"K",Л:"N",М:"M",Н:"H",О:"O",П:"N",Р:"P",С:"C",Т:"T",У:"y",Ф:"O",Х:"X",Ц:"U",Ч:"h",Ш:"W",Щ:"W",Ъ:"B",Ы:"X",Ь:"B",Э:"3",Ю:"X",Я:"R",а:"a",б:"b",в:"a",г:"r",д:"y",е:"e",ж:"m",з:"e",и:"n",й:"n",к:"n",л:"n",м:"m",н:"n",о:"o",п:"n",р:"p",с:"c",т:"o",у:"y",ф:"b",х:"x",ц:"n",ч:"n",ш:"w",щ:"w",ъ:"a",ы:"m",ь:"a",э:"e",ю:"m",я:"r"};function ef(e,t){st[e]=t}function P0(e,t,r){if(!st[t])throw new Error("Font metrics not found for font: "+t+".");var n=e.charCodeAt(0),i=st[t][n];if(!i&&e[0]in Ki&&(n=Ki[e[0]].charCodeAt(0),i=st[t][n]),!i&&r==="text"&&Wl(n)&&(i=st[t][77]),i)return{depth:i[0],height:i[1],italic:i[2],skew:i[3],width:i[4]}}var Fn={};function tf(e){var t;if(e>=5?t=0:e>=3?t=1:t=2,!Fn[t]){var r=Fn[t]={cssEmPerMu:Fr.quad[t]/18};for(var n in Fr)Fr.hasOwnProperty(n)&&(r[n]=Fr[n][t])}return Fn[t]}var rf=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],Zi=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],Qi=function(t,r){return r.size<2?t:rf[t-1][r.size-1]};class gt{constructor(t){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=t.style,this.color=t.color,this.size=t.size||gt.BASESIZE,this.textSize=t.textSize||this.size,this.phantom=!!t.phantom,this.font=t.font||"",this.fontFamily=t.fontFamily||"",this.fontWeight=t.fontWeight||"",this.fontShape=t.fontShape||"",this.sizeMultiplier=Zi[this.size-1],this.maxSize=t.maxSize,this.minRuleThickness=t.minRuleThickness,this._fontMetrics=void 0}extend(t){var r={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var n in t)t.hasOwnProperty(n)&&(r[n]=t[n]);return new gt(r)}havingStyle(t){return this.style===t?this:this.extend({style:t,size:Qi(this.textSize,t)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(t){return this.size===t&&this.textSize===t?this:this.extend({style:this.style.text(),size:t,textSize:t,sizeMultiplier:Zi[t-1]})}havingBaseStyle(t){t=t||this.style.text();var r=Qi(gt.BASESIZE,t);return this.size===r&&this.textSize===gt.BASESIZE&&this.style===t?this:this.extend({style:t,size:r})}havingBaseSizing(){var t;switch(this.style.id){case 4:case 5:t=3;break;case 6:case 7:t=1;break;default:t=6}return this.extend({style:this.style.text(),size:t})}withColor(t){return this.extend({color:t})}withPhantom(){return this.extend({phantom:!0})}withFont(t){return this.extend({font:t})}withTextFontFamily(t){return this.extend({fontFamily:t,font:""})}withTextFontWeight(t){return this.extend({fontWeight:t,font:""})}withTextFontShape(t){return this.extend({fontShape:t,font:""})}sizingClasses(t){return t.size!==this.size?["sizing","reset-size"+t.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==gt.BASESIZE?["sizing","reset-size"+this.size,"size"+gt.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=tf(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}gt.BASESIZE=6;var s0={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:803/800,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:803/800},nf={ex:!0,em:!0,mu:!0},Yl=function(t){return typeof t!="string"&&(t=t.unit),t in s0||t in nf||t==="ex"},ye=function(t,r){var n;if(t.unit in s0)n=s0[t.unit]/r.fontMetrics().ptPerEm/r.sizeMultiplier;else if(t.unit==="mu")n=r.fontMetrics().cssEmPerMu;else{var i;if(r.style.isTight()?i=r.havingStyle(r.style.text()):i=r,t.unit==="ex")n=i.fontMetrics().xHeight;else if(t.unit==="em")n=i.fontMetrics().quad;else throw new L("Invalid unit: '"+t.unit+"'");i!==r&&(n*=i.sizeMultiplier/r.sizeMultiplier)}return Math.min(t.number*n,r.maxSize)},P=function(t){return+t.toFixed(4)+"em"},Ct=function(t){return t.filter(r=>r).join(" ")},Xl=function(t,r,n){if(this.classes=t||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=n||{},r){r.style.isTight()&&this.classes.push("mtight");var i=r.getColor();i&&(this.style.color=i)}},Kl=function(t){var r=document.createElement(t);r.className=Ct(this.classes);for(var n in this.style)this.style.hasOwnProperty(n)&&(r.style[n]=this.style[n]);for(var i in this.attributes)this.attributes.hasOwnProperty(i)&&r.setAttribute(i,this.attributes[i]);for(var a=0;a/=\x00-\x1f]/,Zl=function(t){var r="<"+t;this.classes.length&&(r+=' class="'+ue.escape(Ct(this.classes))+'"');var n="";for(var i in this.style)this.style.hasOwnProperty(i)&&(n+=ue.hyphenate(i)+":"+this.style[i]+";");n&&(r+=' style="'+ue.escape(n)+'"');for(var a in this.attributes)if(this.attributes.hasOwnProperty(a)){if(af.test(a))throw new L("Invalid attribute name '"+a+"'");r+=" "+a+'="'+ue.escape(this.attributes[a])+'"'}r+=">";for(var l=0;l",r};class Cr{constructor(t,r,n,i){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,Xl.call(this,t,n,i),this.children=r||[]}setAttribute(t,r){this.attributes[t]=r}hasClass(t){return this.classes.includes(t)}toNode(){return Kl.call(this,"span")}toMarkup(){return Zl.call(this,"span")}}class O0{constructor(t,r,n,i){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,Xl.call(this,r,i),this.children=n||[],this.setAttribute("href",t)}setAttribute(t,r){this.attributes[t]=r}hasClass(t){return this.classes.includes(t)}toNode(){return Kl.call(this,"a")}toMarkup(){return Zl.call(this,"a")}}class lf{constructor(t,r,n){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=r,this.src=t,this.classes=["mord"],this.style=n}hasClass(t){return this.classes.includes(t)}toNode(){var t=document.createElement("img");t.src=this.src,t.alt=this.alt,t.className="mord";for(var r in this.style)this.style.hasOwnProperty(r)&&(t.style[r]=this.style[r]);return t}toMarkup(){var t=''+ue.escape(this.alt)+'0&&(r=document.createElement("span"),r.style.marginRight=P(this.italic)),this.classes.length>0&&(r=r||document.createElement("span"),r.className=Ct(this.classes));for(var n in this.style)this.style.hasOwnProperty(n)&&(r=r||document.createElement("span"),r.style[n]=this.style[n]);return r?(r.appendChild(t),r):t}toMarkup(){var t=!1,r="0&&(n+="margin-right:"+this.italic+"em;");for(var i in this.style)this.style.hasOwnProperty(i)&&(n+=ue.hyphenate(i)+":"+this.style[i]+";");n&&(t=!0,r+=' style="'+ue.escape(n)+'"');var a=ue.escape(this.text);return t?(r+=">",r+=a,r+="",r):a}}class bt{constructor(t,r){this.children=void 0,this.attributes=void 0,this.children=t||[],this.attributes=r||{}}toNode(){var t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"svg");for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&r.setAttribute(n,this.attributes[n]);for(var i=0;i':''}}class o0{constructor(t){this.attributes=void 0,this.attributes=t||{}}toNode(){var t="http://www.w3.org/2000/svg",r=document.createElementNS(t,"line");for(var n in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,n)&&r.setAttribute(n,this.attributes[n]);return r}toMarkup(){var t=" but got "+String(e)+".")}var uf={bin:1,close:1,inner:1,open:1,punct:1,rel:1},cf={"accent-token":1,mathord:1,"op-token":1,spacing:1,textord:1},de={math:{},text:{}};function c(e,t,r,n,i,a){de[e][i]={font:t,group:r,replace:n},a&&n&&(de[e][n]=de[e][i])}var f="math",N="text",g="main",b="ams",ge="accent-token",W="bin",Le="close",rr="inner",Z="mathord",Te="op-token",Ye="open",sn="punct",x="rel",St="spacing",T="textord";c(f,g,x,"≡","\\equiv",!0);c(f,g,x,"≺","\\prec",!0);c(f,g,x,"≻","\\succ",!0);c(f,g,x,"∼","\\sim",!0);c(f,g,x,"⊥","\\perp");c(f,g,x,"⪯","\\preceq",!0);c(f,g,x,"⪰","\\succeq",!0);c(f,g,x,"≃","\\simeq",!0);c(f,g,x,"∣","\\mid",!0);c(f,g,x,"≪","\\ll",!0);c(f,g,x,"≫","\\gg",!0);c(f,g,x,"≍","\\asymp",!0);c(f,g,x,"∥","\\parallel");c(f,g,x,"⋈","\\bowtie",!0);c(f,g,x,"⌣","\\smile",!0);c(f,g,x,"⊑","\\sqsubseteq",!0);c(f,g,x,"⊒","\\sqsupseteq",!0);c(f,g,x,"≐","\\doteq",!0);c(f,g,x,"⌢","\\frown",!0);c(f,g,x,"∋","\\ni",!0);c(f,g,x,"∝","\\propto",!0);c(f,g,x,"⊢","\\vdash",!0);c(f,g,x,"⊣","\\dashv",!0);c(f,g,x,"∋","\\owns");c(f,g,sn,".","\\ldotp");c(f,g,sn,"⋅","\\cdotp");c(f,g,T,"#","\\#");c(N,g,T,"#","\\#");c(f,g,T,"&","\\&");c(N,g,T,"&","\\&");c(f,g,T,"ℵ","\\aleph",!0);c(f,g,T,"∀","\\forall",!0);c(f,g,T,"ℏ","\\hbar",!0);c(f,g,T,"∃","\\exists",!0);c(f,g,T,"∇","\\nabla",!0);c(f,g,T,"♭","\\flat",!0);c(f,g,T,"ℓ","\\ell",!0);c(f,g,T,"♮","\\natural",!0);c(f,g,T,"♣","\\clubsuit",!0);c(f,g,T,"℘","\\wp",!0);c(f,g,T,"♯","\\sharp",!0);c(f,g,T,"♢","\\diamondsuit",!0);c(f,g,T,"ℜ","\\Re",!0);c(f,g,T,"♡","\\heartsuit",!0);c(f,g,T,"ℑ","\\Im",!0);c(f,g,T,"♠","\\spadesuit",!0);c(f,g,T,"§","\\S",!0);c(N,g,T,"§","\\S");c(f,g,T,"¶","\\P",!0);c(N,g,T,"¶","\\P");c(f,g,T,"†","\\dag");c(N,g,T,"†","\\dag");c(N,g,T,"†","\\textdagger");c(f,g,T,"‡","\\ddag");c(N,g,T,"‡","\\ddag");c(N,g,T,"‡","\\textdaggerdbl");c(f,g,Le,"⎱","\\rmoustache",!0);c(f,g,Ye,"⎰","\\lmoustache",!0);c(f,g,Le,"⟯","\\rgroup",!0);c(f,g,Ye,"⟮","\\lgroup",!0);c(f,g,W,"∓","\\mp",!0);c(f,g,W,"⊖","\\ominus",!0);c(f,g,W,"⊎","\\uplus",!0);c(f,g,W,"⊓","\\sqcap",!0);c(f,g,W,"∗","\\ast");c(f,g,W,"⊔","\\sqcup",!0);c(f,g,W,"◯","\\bigcirc",!0);c(f,g,W,"∙","\\bullet",!0);c(f,g,W,"‡","\\ddagger");c(f,g,W,"≀","\\wr",!0);c(f,g,W,"⨿","\\amalg");c(f,g,W,"&","\\And");c(f,g,x,"⟵","\\longleftarrow",!0);c(f,g,x,"⇐","\\Leftarrow",!0);c(f,g,x,"⟸","\\Longleftarrow",!0);c(f,g,x,"⟶","\\longrightarrow",!0);c(f,g,x,"⇒","\\Rightarrow",!0);c(f,g,x,"⟹","\\Longrightarrow",!0);c(f,g,x,"↔","\\leftrightarrow",!0);c(f,g,x,"⟷","\\longleftrightarrow",!0);c(f,g,x,"⇔","\\Leftrightarrow",!0);c(f,g,x,"⟺","\\Longleftrightarrow",!0);c(f,g,x,"↦","\\mapsto",!0);c(f,g,x,"⟼","\\longmapsto",!0);c(f,g,x,"↗","\\nearrow",!0);c(f,g,x,"↩","\\hookleftarrow",!0);c(f,g,x,"↪","\\hookrightarrow",!0);c(f,g,x,"↘","\\searrow",!0);c(f,g,x,"↼","\\leftharpoonup",!0);c(f,g,x,"⇀","\\rightharpoonup",!0);c(f,g,x,"↙","\\swarrow",!0);c(f,g,x,"↽","\\leftharpoondown",!0);c(f,g,x,"⇁","\\rightharpoondown",!0);c(f,g,x,"↖","\\nwarrow",!0);c(f,g,x,"⇌","\\rightleftharpoons",!0);c(f,b,x,"≮","\\nless",!0);c(f,b,x,"","\\@nleqslant");c(f,b,x,"","\\@nleqq");c(f,b,x,"⪇","\\lneq",!0);c(f,b,x,"≨","\\lneqq",!0);c(f,b,x,"","\\@lvertneqq");c(f,b,x,"⋦","\\lnsim",!0);c(f,b,x,"⪉","\\lnapprox",!0);c(f,b,x,"⊀","\\nprec",!0);c(f,b,x,"⋠","\\npreceq",!0);c(f,b,x,"⋨","\\precnsim",!0);c(f,b,x,"⪹","\\precnapprox",!0);c(f,b,x,"≁","\\nsim",!0);c(f,b,x,"","\\@nshortmid");c(f,b,x,"∤","\\nmid",!0);c(f,b,x,"⊬","\\nvdash",!0);c(f,b,x,"⊭","\\nvDash",!0);c(f,b,x,"⋪","\\ntriangleleft");c(f,b,x,"⋬","\\ntrianglelefteq",!0);c(f,b,x,"⊊","\\subsetneq",!0);c(f,b,x,"","\\@varsubsetneq");c(f,b,x,"⫋","\\subsetneqq",!0);c(f,b,x,"","\\@varsubsetneqq");c(f,b,x,"≯","\\ngtr",!0);c(f,b,x,"","\\@ngeqslant");c(f,b,x,"","\\@ngeqq");c(f,b,x,"⪈","\\gneq",!0);c(f,b,x,"≩","\\gneqq",!0);c(f,b,x,"","\\@gvertneqq");c(f,b,x,"⋧","\\gnsim",!0);c(f,b,x,"⪊","\\gnapprox",!0);c(f,b,x,"⊁","\\nsucc",!0);c(f,b,x,"⋡","\\nsucceq",!0);c(f,b,x,"⋩","\\succnsim",!0);c(f,b,x,"⪺","\\succnapprox",!0);c(f,b,x,"≆","\\ncong",!0);c(f,b,x,"","\\@nshortparallel");c(f,b,x,"∦","\\nparallel",!0);c(f,b,x,"⊯","\\nVDash",!0);c(f,b,x,"⋫","\\ntriangleright");c(f,b,x,"⋭","\\ntrianglerighteq",!0);c(f,b,x,"","\\@nsupseteqq");c(f,b,x,"⊋","\\supsetneq",!0);c(f,b,x,"","\\@varsupsetneq");c(f,b,x,"⫌","\\supsetneqq",!0);c(f,b,x,"","\\@varsupsetneqq");c(f,b,x,"⊮","\\nVdash",!0);c(f,b,x,"⪵","\\precneqq",!0);c(f,b,x,"⪶","\\succneqq",!0);c(f,b,x,"","\\@nsubseteqq");c(f,b,W,"⊴","\\unlhd");c(f,b,W,"⊵","\\unrhd");c(f,b,x,"↚","\\nleftarrow",!0);c(f,b,x,"↛","\\nrightarrow",!0);c(f,b,x,"⇍","\\nLeftarrow",!0);c(f,b,x,"⇏","\\nRightarrow",!0);c(f,b,x,"↮","\\nleftrightarrow",!0);c(f,b,x,"⇎","\\nLeftrightarrow",!0);c(f,b,x,"△","\\vartriangle");c(f,b,T,"ℏ","\\hslash");c(f,b,T,"▽","\\triangledown");c(f,b,T,"◊","\\lozenge");c(f,b,T,"Ⓢ","\\circledS");c(f,b,T,"®","\\circledR");c(N,b,T,"®","\\circledR");c(f,b,T,"∡","\\measuredangle",!0);c(f,b,T,"∄","\\nexists");c(f,b,T,"℧","\\mho");c(f,b,T,"Ⅎ","\\Finv",!0);c(f,b,T,"⅁","\\Game",!0);c(f,b,T,"‵","\\backprime");c(f,b,T,"▲","\\blacktriangle");c(f,b,T,"▼","\\blacktriangledown");c(f,b,T,"■","\\blacksquare");c(f,b,T,"⧫","\\blacklozenge");c(f,b,T,"★","\\bigstar");c(f,b,T,"∢","\\sphericalangle",!0);c(f,b,T,"∁","\\complement",!0);c(f,b,T,"ð","\\eth",!0);c(N,g,T,"ð","ð");c(f,b,T,"╱","\\diagup");c(f,b,T,"╲","\\diagdown");c(f,b,T,"□","\\square");c(f,b,T,"□","\\Box");c(f,b,T,"◊","\\Diamond");c(f,b,T,"¥","\\yen",!0);c(N,b,T,"¥","\\yen",!0);c(f,b,T,"✓","\\checkmark",!0);c(N,b,T,"✓","\\checkmark");c(f,b,T,"ℶ","\\beth",!0);c(f,b,T,"ℸ","\\daleth",!0);c(f,b,T,"ℷ","\\gimel",!0);c(f,b,T,"ϝ","\\digamma",!0);c(f,b,T,"ϰ","\\varkappa");c(f,b,Ye,"┌","\\@ulcorner",!0);c(f,b,Le,"┐","\\@urcorner",!0);c(f,b,Ye,"└","\\@llcorner",!0);c(f,b,Le,"┘","\\@lrcorner",!0);c(f,b,x,"≦","\\leqq",!0);c(f,b,x,"⩽","\\leqslant",!0);c(f,b,x,"⪕","\\eqslantless",!0);c(f,b,x,"≲","\\lesssim",!0);c(f,b,x,"⪅","\\lessapprox",!0);c(f,b,x,"≊","\\approxeq",!0);c(f,b,W,"⋖","\\lessdot");c(f,b,x,"⋘","\\lll",!0);c(f,b,x,"≶","\\lessgtr",!0);c(f,b,x,"⋚","\\lesseqgtr",!0);c(f,b,x,"⪋","\\lesseqqgtr",!0);c(f,b,x,"≑","\\doteqdot");c(f,b,x,"≓","\\risingdotseq",!0);c(f,b,x,"≒","\\fallingdotseq",!0);c(f,b,x,"∽","\\backsim",!0);c(f,b,x,"⋍","\\backsimeq",!0);c(f,b,x,"⫅","\\subseteqq",!0);c(f,b,x,"⋐","\\Subset",!0);c(f,b,x,"⊏","\\sqsubset",!0);c(f,b,x,"≼","\\preccurlyeq",!0);c(f,b,x,"⋞","\\curlyeqprec",!0);c(f,b,x,"≾","\\precsim",!0);c(f,b,x,"⪷","\\precapprox",!0);c(f,b,x,"⊲","\\vartriangleleft");c(f,b,x,"⊴","\\trianglelefteq");c(f,b,x,"⊨","\\vDash",!0);c(f,b,x,"⊪","\\Vvdash",!0);c(f,b,x,"⌣","\\smallsmile");c(f,b,x,"⌢","\\smallfrown");c(f,b,x,"≏","\\bumpeq",!0);c(f,b,x,"≎","\\Bumpeq",!0);c(f,b,x,"≧","\\geqq",!0);c(f,b,x,"⩾","\\geqslant",!0);c(f,b,x,"⪖","\\eqslantgtr",!0);c(f,b,x,"≳","\\gtrsim",!0);c(f,b,x,"⪆","\\gtrapprox",!0);c(f,b,W,"⋗","\\gtrdot");c(f,b,x,"⋙","\\ggg",!0);c(f,b,x,"≷","\\gtrless",!0);c(f,b,x,"⋛","\\gtreqless",!0);c(f,b,x,"⪌","\\gtreqqless",!0);c(f,b,x,"≖","\\eqcirc",!0);c(f,b,x,"≗","\\circeq",!0);c(f,b,x,"≜","\\triangleq",!0);c(f,b,x,"∼","\\thicksim");c(f,b,x,"≈","\\thickapprox");c(f,b,x,"⫆","\\supseteqq",!0);c(f,b,x,"⋑","\\Supset",!0);c(f,b,x,"⊐","\\sqsupset",!0);c(f,b,x,"≽","\\succcurlyeq",!0);c(f,b,x,"⋟","\\curlyeqsucc",!0);c(f,b,x,"≿","\\succsim",!0);c(f,b,x,"⪸","\\succapprox",!0);c(f,b,x,"⊳","\\vartriangleright");c(f,b,x,"⊵","\\trianglerighteq");c(f,b,x,"⊩","\\Vdash",!0);c(f,b,x,"∣","\\shortmid");c(f,b,x,"∥","\\shortparallel");c(f,b,x,"≬","\\between",!0);c(f,b,x,"⋔","\\pitchfork",!0);c(f,b,x,"∝","\\varpropto");c(f,b,x,"◀","\\blacktriangleleft");c(f,b,x,"∴","\\therefore",!0);c(f,b,x,"∍","\\backepsilon");c(f,b,x,"▶","\\blacktriangleright");c(f,b,x,"∵","\\because",!0);c(f,b,x,"⋘","\\llless");c(f,b,x,"⋙","\\gggtr");c(f,b,W,"⊲","\\lhd");c(f,b,W,"⊳","\\rhd");c(f,b,x,"≂","\\eqsim",!0);c(f,g,x,"⋈","\\Join");c(f,b,x,"≑","\\Doteq",!0);c(f,b,W,"∔","\\dotplus",!0);c(f,b,W,"∖","\\smallsetminus");c(f,b,W,"⋒","\\Cap",!0);c(f,b,W,"⋓","\\Cup",!0);c(f,b,W,"⩞","\\doublebarwedge",!0);c(f,b,W,"⊟","\\boxminus",!0);c(f,b,W,"⊞","\\boxplus",!0);c(f,b,W,"⋇","\\divideontimes",!0);c(f,b,W,"⋉","\\ltimes",!0);c(f,b,W,"⋊","\\rtimes",!0);c(f,b,W,"⋋","\\leftthreetimes",!0);c(f,b,W,"⋌","\\rightthreetimes",!0);c(f,b,W,"⋏","\\curlywedge",!0);c(f,b,W,"⋎","\\curlyvee",!0);c(f,b,W,"⊝","\\circleddash",!0);c(f,b,W,"⊛","\\circledast",!0);c(f,b,W,"⋅","\\centerdot");c(f,b,W,"⊺","\\intercal",!0);c(f,b,W,"⋒","\\doublecap");c(f,b,W,"⋓","\\doublecup");c(f,b,W,"⊠","\\boxtimes",!0);c(f,b,x,"⇢","\\dashrightarrow",!0);c(f,b,x,"⇠","\\dashleftarrow",!0);c(f,b,x,"⇇","\\leftleftarrows",!0);c(f,b,x,"⇆","\\leftrightarrows",!0);c(f,b,x,"⇚","\\Lleftarrow",!0);c(f,b,x,"↞","\\twoheadleftarrow",!0);c(f,b,x,"↢","\\leftarrowtail",!0);c(f,b,x,"↫","\\looparrowleft",!0);c(f,b,x,"⇋","\\leftrightharpoons",!0);c(f,b,x,"↶","\\curvearrowleft",!0);c(f,b,x,"↺","\\circlearrowleft",!0);c(f,b,x,"↰","\\Lsh",!0);c(f,b,x,"⇈","\\upuparrows",!0);c(f,b,x,"↿","\\upharpoonleft",!0);c(f,b,x,"⇃","\\downharpoonleft",!0);c(f,g,x,"⊶","\\origof",!0);c(f,g,x,"⊷","\\imageof",!0);c(f,b,x,"⊸","\\multimap",!0);c(f,b,x,"↭","\\leftrightsquigarrow",!0);c(f,b,x,"⇉","\\rightrightarrows",!0);c(f,b,x,"⇄","\\rightleftarrows",!0);c(f,b,x,"↠","\\twoheadrightarrow",!0);c(f,b,x,"↣","\\rightarrowtail",!0);c(f,b,x,"↬","\\looparrowright",!0);c(f,b,x,"↷","\\curvearrowright",!0);c(f,b,x,"↻","\\circlearrowright",!0);c(f,b,x,"↱","\\Rsh",!0);c(f,b,x,"⇊","\\downdownarrows",!0);c(f,b,x,"↾","\\upharpoonright",!0);c(f,b,x,"⇂","\\downharpoonright",!0);c(f,b,x,"⇝","\\rightsquigarrow",!0);c(f,b,x,"⇝","\\leadsto");c(f,b,x,"⇛","\\Rrightarrow",!0);c(f,b,x,"↾","\\restriction");c(f,g,T,"‘","`");c(f,g,T,"$","\\$");c(N,g,T,"$","\\$");c(N,g,T,"$","\\textdollar");c(f,g,T,"%","\\%");c(N,g,T,"%","\\%");c(f,g,T,"_","\\_");c(N,g,T,"_","\\_");c(N,g,T,"_","\\textunderscore");c(f,g,T,"∠","\\angle",!0);c(f,g,T,"∞","\\infty",!0);c(f,g,T,"′","\\prime");c(f,g,T,"△","\\triangle");c(f,g,T,"Γ","\\Gamma",!0);c(f,g,T,"Δ","\\Delta",!0);c(f,g,T,"Θ","\\Theta",!0);c(f,g,T,"Λ","\\Lambda",!0);c(f,g,T,"Ξ","\\Xi",!0);c(f,g,T,"Π","\\Pi",!0);c(f,g,T,"Σ","\\Sigma",!0);c(f,g,T,"Υ","\\Upsilon",!0);c(f,g,T,"Φ","\\Phi",!0);c(f,g,T,"Ψ","\\Psi",!0);c(f,g,T,"Ω","\\Omega",!0);c(f,g,T,"A","Α");c(f,g,T,"B","Β");c(f,g,T,"E","Ε");c(f,g,T,"Z","Ζ");c(f,g,T,"H","Η");c(f,g,T,"I","Ι");c(f,g,T,"K","Κ");c(f,g,T,"M","Μ");c(f,g,T,"N","Ν");c(f,g,T,"O","Ο");c(f,g,T,"P","Ρ");c(f,g,T,"T","Τ");c(f,g,T,"X","Χ");c(f,g,T,"¬","\\neg",!0);c(f,g,T,"¬","\\lnot");c(f,g,T,"⊤","\\top");c(f,g,T,"⊥","\\bot");c(f,g,T,"∅","\\emptyset");c(f,b,T,"∅","\\varnothing");c(f,g,Z,"α","\\alpha",!0);c(f,g,Z,"β","\\beta",!0);c(f,g,Z,"γ","\\gamma",!0);c(f,g,Z,"δ","\\delta",!0);c(f,g,Z,"ϵ","\\epsilon",!0);c(f,g,Z,"ζ","\\zeta",!0);c(f,g,Z,"η","\\eta",!0);c(f,g,Z,"θ","\\theta",!0);c(f,g,Z,"ι","\\iota",!0);c(f,g,Z,"κ","\\kappa",!0);c(f,g,Z,"λ","\\lambda",!0);c(f,g,Z,"μ","\\mu",!0);c(f,g,Z,"ν","\\nu",!0);c(f,g,Z,"ξ","\\xi",!0);c(f,g,Z,"ο","\\omicron",!0);c(f,g,Z,"π","\\pi",!0);c(f,g,Z,"ρ","\\rho",!0);c(f,g,Z,"σ","\\sigma",!0);c(f,g,Z,"τ","\\tau",!0);c(f,g,Z,"υ","\\upsilon",!0);c(f,g,Z,"ϕ","\\phi",!0);c(f,g,Z,"χ","\\chi",!0);c(f,g,Z,"ψ","\\psi",!0);c(f,g,Z,"ω","\\omega",!0);c(f,g,Z,"ε","\\varepsilon",!0);c(f,g,Z,"ϑ","\\vartheta",!0);c(f,g,Z,"ϖ","\\varpi",!0);c(f,g,Z,"ϱ","\\varrho",!0);c(f,g,Z,"ς","\\varsigma",!0);c(f,g,Z,"φ","\\varphi",!0);c(f,g,W,"∗","*",!0);c(f,g,W,"+","+");c(f,g,W,"−","-",!0);c(f,g,W,"⋅","\\cdot",!0);c(f,g,W,"∘","\\circ",!0);c(f,g,W,"÷","\\div",!0);c(f,g,W,"±","\\pm",!0);c(f,g,W,"×","\\times",!0);c(f,g,W,"∩","\\cap",!0);c(f,g,W,"∪","\\cup",!0);c(f,g,W,"∖","\\setminus",!0);c(f,g,W,"∧","\\land");c(f,g,W,"∨","\\lor");c(f,g,W,"∧","\\wedge",!0);c(f,g,W,"∨","\\vee",!0);c(f,g,T,"√","\\surd");c(f,g,Ye,"⟨","\\langle",!0);c(f,g,Ye,"∣","\\lvert");c(f,g,Ye,"∥","\\lVert");c(f,g,Le,"?","?");c(f,g,Le,"!","!");c(f,g,Le,"⟩","\\rangle",!0);c(f,g,Le,"∣","\\rvert");c(f,g,Le,"∥","\\rVert");c(f,g,x,"=","=");c(f,g,x,":",":");c(f,g,x,"≈","\\approx",!0);c(f,g,x,"≅","\\cong",!0);c(f,g,x,"≥","\\ge");c(f,g,x,"≥","\\geq",!0);c(f,g,x,"←","\\gets");c(f,g,x,">","\\gt",!0);c(f,g,x,"∈","\\in",!0);c(f,g,x,"","\\@not");c(f,g,x,"⊂","\\subset",!0);c(f,g,x,"⊃","\\supset",!0);c(f,g,x,"⊆","\\subseteq",!0);c(f,g,x,"⊇","\\supseteq",!0);c(f,b,x,"⊈","\\nsubseteq",!0);c(f,b,x,"⊉","\\nsupseteq",!0);c(f,g,x,"⊨","\\models");c(f,g,x,"←","\\leftarrow",!0);c(f,g,x,"≤","\\le");c(f,g,x,"≤","\\leq",!0);c(f,g,x,"<","\\lt",!0);c(f,g,x,"→","\\rightarrow",!0);c(f,g,x,"→","\\to");c(f,b,x,"≱","\\ngeq",!0);c(f,b,x,"≰","\\nleq",!0);c(f,g,St," ","\\ ");c(f,g,St," ","\\space");c(f,g,St," ","\\nobreakspace");c(N,g,St," ","\\ ");c(N,g,St," "," ");c(N,g,St," ","\\space");c(N,g,St," ","\\nobreakspace");c(f,g,St,null,"\\nobreak");c(f,g,St,null,"\\allowbreak");c(f,g,sn,",",",");c(f,g,sn,";",";");c(f,b,W,"⊼","\\barwedge",!0);c(f,b,W,"⊻","\\veebar",!0);c(f,g,W,"⊙","\\odot",!0);c(f,g,W,"⊕","\\oplus",!0);c(f,g,W,"⊗","\\otimes",!0);c(f,g,T,"∂","\\partial",!0);c(f,g,W,"⊘","\\oslash",!0);c(f,b,W,"⊚","\\circledcirc",!0);c(f,b,W,"⊡","\\boxdot",!0);c(f,g,W,"△","\\bigtriangleup");c(f,g,W,"▽","\\bigtriangledown");c(f,g,W,"†","\\dagger");c(f,g,W,"⋄","\\diamond");c(f,g,W,"⋆","\\star");c(f,g,W,"◃","\\triangleleft");c(f,g,W,"▹","\\triangleright");c(f,g,Ye,"{","\\{");c(N,g,T,"{","\\{");c(N,g,T,"{","\\textbraceleft");c(f,g,Le,"}","\\}");c(N,g,T,"}","\\}");c(N,g,T,"}","\\textbraceright");c(f,g,Ye,"{","\\lbrace");c(f,g,Le,"}","\\rbrace");c(f,g,Ye,"[","\\lbrack",!0);c(N,g,T,"[","\\lbrack",!0);c(f,g,Le,"]","\\rbrack",!0);c(N,g,T,"]","\\rbrack",!0);c(f,g,Ye,"(","\\lparen",!0);c(f,g,Le,")","\\rparen",!0);c(N,g,T,"<","\\textless",!0);c(N,g,T,">","\\textgreater",!0);c(f,g,Ye,"⌊","\\lfloor",!0);c(f,g,Le,"⌋","\\rfloor",!0);c(f,g,Ye,"⌈","\\lceil",!0);c(f,g,Le,"⌉","\\rceil",!0);c(f,g,T,"\\","\\backslash");c(f,g,T,"∣","|");c(f,g,T,"∣","\\vert");c(N,g,T,"|","\\textbar",!0);c(f,g,T,"∥","\\|");c(f,g,T,"∥","\\Vert");c(N,g,T,"∥","\\textbardbl");c(N,g,T,"~","\\textasciitilde");c(N,g,T,"\\","\\textbackslash");c(N,g,T,"^","\\textasciicircum");c(f,g,x,"↑","\\uparrow",!0);c(f,g,x,"⇑","\\Uparrow",!0);c(f,g,x,"↓","\\downarrow",!0);c(f,g,x,"⇓","\\Downarrow",!0);c(f,g,x,"↕","\\updownarrow",!0);c(f,g,x,"⇕","\\Updownarrow",!0);c(f,g,Te,"∐","\\coprod");c(f,g,Te,"⋁","\\bigvee");c(f,g,Te,"⋀","\\bigwedge");c(f,g,Te,"⨄","\\biguplus");c(f,g,Te,"⋂","\\bigcap");c(f,g,Te,"⋃","\\bigcup");c(f,g,Te,"∫","\\int");c(f,g,Te,"∫","\\intop");c(f,g,Te,"∬","\\iint");c(f,g,Te,"∭","\\iiint");c(f,g,Te,"∏","\\prod");c(f,g,Te,"∑","\\sum");c(f,g,Te,"⨂","\\bigotimes");c(f,g,Te,"⨁","\\bigoplus");c(f,g,Te,"⨀","\\bigodot");c(f,g,Te,"∮","\\oint");c(f,g,Te,"∯","\\oiint");c(f,g,Te,"∰","\\oiiint");c(f,g,Te,"⨆","\\bigsqcup");c(f,g,Te,"∫","\\smallint");c(N,g,rr,"…","\\textellipsis");c(f,g,rr,"…","\\mathellipsis");c(N,g,rr,"…","\\ldots",!0);c(f,g,rr,"…","\\ldots",!0);c(f,g,rr,"⋯","\\@cdots",!0);c(f,g,rr,"⋱","\\ddots",!0);c(f,g,T,"⋮","\\varvdots");c(N,g,T,"⋮","\\varvdots");c(f,g,ge,"ˊ","\\acute");c(f,g,ge,"ˋ","\\grave");c(f,g,ge,"¨","\\ddot");c(f,g,ge,"~","\\tilde");c(f,g,ge,"ˉ","\\bar");c(f,g,ge,"˘","\\breve");c(f,g,ge,"ˇ","\\check");c(f,g,ge,"^","\\hat");c(f,g,ge,"⃗","\\vec");c(f,g,ge,"˙","\\dot");c(f,g,ge,"˚","\\mathring");c(f,g,Z,"","\\@imath");c(f,g,Z,"","\\@jmath");c(f,g,T,"ı","ı");c(f,g,T,"ȷ","ȷ");c(N,g,T,"ı","\\i",!0);c(N,g,T,"ȷ","\\j",!0);c(N,g,T,"ß","\\ss",!0);c(N,g,T,"æ","\\ae",!0);c(N,g,T,"œ","\\oe",!0);c(N,g,T,"ø","\\o",!0);c(N,g,T,"Æ","\\AE",!0);c(N,g,T,"Œ","\\OE",!0);c(N,g,T,"Ø","\\O",!0);c(N,g,ge,"ˊ","\\'");c(N,g,ge,"ˋ","\\`");c(N,g,ge,"ˆ","\\^");c(N,g,ge,"˜","\\~");c(N,g,ge,"ˉ","\\=");c(N,g,ge,"˘","\\u");c(N,g,ge,"˙","\\.");c(N,g,ge,"¸","\\c");c(N,g,ge,"˚","\\r");c(N,g,ge,"ˇ","\\v");c(N,g,ge,"¨",'\\"');c(N,g,ge,"˝","\\H");c(N,g,ge,"◯","\\textcircled");var Ql={"--":!0,"---":!0,"``":!0,"''":!0};c(N,g,T,"–","--",!0);c(N,g,T,"–","\\textendash");c(N,g,T,"—","---",!0);c(N,g,T,"—","\\textemdash");c(N,g,T,"‘","`",!0);c(N,g,T,"‘","\\textquoteleft");c(N,g,T,"’","'",!0);c(N,g,T,"’","\\textquoteright");c(N,g,T,"“","``",!0);c(N,g,T,"“","\\textquotedblleft");c(N,g,T,"”","''",!0);c(N,g,T,"”","\\textquotedblright");c(f,g,T,"°","\\degree",!0);c(N,g,T,"°","\\degree");c(N,g,T,"°","\\textdegree",!0);c(f,g,T,"£","\\pounds");c(f,g,T,"£","\\mathsterling",!0);c(N,g,T,"£","\\pounds");c(N,g,T,"£","\\textsterling",!0);c(f,b,T,"✠","\\maltese");c(N,b,T,"✠","\\maltese");var ea='0123456789/@."';for(var Ln=0;Ln0)return nt(a,u,i,r,l.concat(h));if(o){var m,d;if(o==="boldsymbol"){var p=ff(a,i,r,l,n);m=p.fontName,d=[p.fontClass]}else s?(m=ts[o].fontName,d=[o]):(m=Or(o,r.fontWeight,r.fontShape),d=[o,r.fontWeight,r.fontShape]);if(on(a,m,i).metrics)return nt(a,m,i,r,l.concat(d));if(Ql.hasOwnProperty(a)&&m.slice(0,10)==="Typewriter"){for(var y=[],w=0;w{if(Ct(e.classes)!==Ct(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize)return!1;if(e.classes.length===1){var r=e.classes[0];if(r==="mbin"||r==="mord")return!1}for(var n in e.style)if(e.style.hasOwnProperty(n)&&e.style[n]!==t.style[n])return!1;for(var i in t.style)if(t.style.hasOwnProperty(i)&&e.style[i]!==t.style[i])return!1;return!0},gf=e=>{for(var t=0;tr&&(r=l.height),l.depth>n&&(n=l.depth),l.maxFontSize>i&&(i=l.maxFontSize)}t.height=r,t.depth=n,t.maxFontSize=i},Oe=function(t,r,n,i){var a=new Cr(t,r,n,i);return q0(a),a},Jl=(e,t,r,n)=>new Cr(e,t,r,n),vf=function(t,r,n){var i=Oe([t],[],r);return i.height=Math.max(n||r.fontMetrics().defaultRuleThickness,r.minRuleThickness),i.style.borderBottomWidth=P(i.height),i.maxFontSize=1,i},yf=function(t,r,n,i){var a=new O0(t,r,n,i);return q0(a),a},es=function(t){var r=new Mr(t);return q0(r),r},bf=function(t,r){return t instanceof Mr?Oe([],[t],r):t},xf=function(t){if(t.positionType==="individualShift"){for(var r=t.children,n=[r[0]],i=-r[0].shift-r[0].elem.depth,a=i,l=1;l{var r=Oe(["mspace"],[],t),n=ye(e,t);return r.style.marginRight=P(n),r},Or=function(t,r,n){var i="";switch(t){case"amsrm":i="AMS";break;case"textrm":i="Main";break;case"textsf":i="SansSerif";break;case"texttt":i="Typewriter";break;default:i=t}var a;return r==="textbf"&&n==="textit"?a="BoldItalic":r==="textbf"?a="Bold":r==="textit"?a="Italic":a="Regular",i+"-"+a},ts={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},rs={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Sf=function(t,r){var[n,i,a]=rs[t],l=new Et(n),s=new bt([l],{width:P(i),height:P(a),style:"width:"+P(i),viewBox:"0 0 "+1e3*i+" "+1e3*a,preserveAspectRatio:"xMinYMin"}),o=Jl(["overlay"],[s],r);return o.height=a,o.style.height=P(a),o.style.width=P(i),o},C={fontMap:ts,makeSymbol:nt,mathsym:mf,makeSpan:Oe,makeSvgSpan:Jl,makeLineSpan:vf,makeAnchor:yf,makeFragment:es,wrapFragment:bf,makeVList:wf,makeOrd:pf,makeGlue:kf,staticSvg:Sf,svgData:rs,tryCombineChars:gf},ve={number:3,unit:"mu"},Pt={number:4,unit:"mu"},dt={number:5,unit:"mu"},Af={mord:{mop:ve,mbin:Pt,mrel:dt,minner:ve},mop:{mord:ve,mop:ve,mrel:dt,minner:ve},mbin:{mord:Pt,mop:Pt,mopen:Pt,minner:Pt},mrel:{mord:dt,mop:dt,mopen:dt,minner:dt},mopen:{},mclose:{mop:ve,mbin:Pt,mrel:dt,minner:ve},mpunct:{mord:ve,mop:ve,mrel:dt,mopen:ve,mclose:ve,mpunct:ve,minner:ve},minner:{mord:ve,mop:ve,mbin:Pt,mrel:dt,mopen:ve,mpunct:ve,minner:ve}},Tf={mord:{mop:ve},mop:{mord:ve,mop:ve},mbin:{},mrel:{},mopen:{},mclose:{mop:ve},mpunct:{},minner:{mop:ve}},ns={},Qr={},Jr={};function _(e){for(var{type:t,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:l}=e,s={type:t,numArgs:n.numArgs,argTypes:n.argTypes,allowedInArgument:!!n.allowedInArgument,allowedInText:!!n.allowedInText,allowedInMath:n.allowedInMath===void 0?!0:n.allowedInMath,numOptionalArgs:n.numOptionalArgs||0,infix:!!n.infix,primitive:!!n.primitive,handler:i},o=0;o{var M=w.classes[0],S=y.classes[0];M==="mbin"&&Mf.includes(S)?w.classes[0]="mord":S==="mbin"&&zf.includes(M)&&(y.classes[0]="mord")},{node:m},d,p),aa(a,(y,w)=>{var M=c0(w),S=c0(y),z=M&&S?y.hasClass("mtight")?Tf[M][S]:Af[M][S]:null;if(z)return C.makeGlue(z,u)},{node:m},d,p),a},aa=function e(t,r,n,i,a){i&&t.push(i);for(var l=0;ld=>{t.splice(m+1,0,d),l++})(l)}i&&t.pop()},is=function(t){return t instanceof Mr||t instanceof O0||t instanceof Cr&&t.hasClass("enclosing")?t:null},Df=function e(t,r){var n=is(t);if(n){var i=n.children;if(i.length){if(r==="right")return e(i[i.length-1],"right");if(r==="left")return e(i[0],"left")}}return t},c0=function(t,r){return t?(r&&(t=Df(t,r)),Ef[t.classes[0]]||null):null},kr=function(t,r){var n=["nulldelimiter"].concat(t.baseSizingClasses());return xt(r.concat(n))},oe=function(t,r,n){if(!t)return xt();if(Qr[t.type]){var i=Qr[t.type](t,r);if(n&&r.size!==n.size){i=xt(r.sizingClasses(n),[i],r);var a=r.sizeMultiplier/n.sizeMultiplier;i.height*=a,i.depth*=a}return i}else throw new L("Got group of unknown type: '"+t.type+"'")};function qr(e,t){var r=xt(["base"],e,t),n=xt(["strut"]);return n.style.height=P(r.height+r.depth),r.depth&&(n.style.verticalAlign=P(-r.depth)),r.children.unshift(n),r}function h0(e,t){var r=null;e.length===1&&e[0].type==="tag"&&(r=e[0].tag,e=e[0].body);var n=ze(e,t,"root"),i;n.length===2&&n[1].hasClass("tag")&&(i=n.pop());for(var a=[],l=[],s=0;s0&&(a.push(qr(l,t)),l=[]),a.push(n[s]));l.length>0&&a.push(qr(l,t));var u;r?(u=qr(ze(r,t,!0)),u.classes=["tag"],a.push(u)):i&&a.push(i);var h=xt(["katex-html"],a);if(h.setAttribute("aria-hidden","true"),u){var m=u.children[0];m.style.height=P(h.height+h.depth),h.depth&&(m.style.verticalAlign=P(-h.depth))}return h}function as(e){return new Mr(e)}class _e{constructor(t,r,n){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=t,this.attributes={},this.children=r||[],this.classes=n||[]}setAttribute(t,r){this.attributes[t]=r}getAttribute(t){return this.attributes[t]}toNode(){var t=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var r in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,r)&&t.setAttribute(r,this.attributes[r]);this.classes.length>0&&(t.className=Ct(this.classes));for(var n=0;n0&&(t+=' class ="'+ue.escape(Ct(this.classes))+'"'),t+=">";for(var n=0;n",t}toText(){return this.children.map(t=>t.toText()).join("")}}class ot{constructor(t){this.text=void 0,this.text=t}toNode(){return document.createTextNode(this.text)}toMarkup(){return ue.escape(this.toText())}toText(){return this.text}}class If{constructor(t){this.width=void 0,this.character=void 0,this.width=t,t>=.05555&&t<=.05556?this.character=" ":t>=.1666&&t<=.1667?this.character=" ":t>=.2222&&t<=.2223?this.character=" ":t>=.2777&&t<=.2778?this.character="  ":t>=-.05556&&t<=-.05555?this.character=" ⁣":t>=-.1667&&t<=-.1666?this.character=" ⁣":t>=-.2223&&t<=-.2222?this.character=" ⁣":t>=-.2778&&t<=-.2777?this.character=" ⁣":this.character=null}toNode(){if(this.character)return document.createTextNode(this.character);var t=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return t.setAttribute("width",P(this.width)),t}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}}var F={MathNode:_e,TextNode:ot,SpaceNode:If,newDocumentFragment:as},Je=function(t,r,n){return de[r][t]&&de[r][t].replace&&t.charCodeAt(0)!==55349&&!(Ql.hasOwnProperty(t)&&n&&(n.fontFamily&&n.fontFamily.slice(4,6)==="tt"||n.font&&n.font.slice(4,6)==="tt"))&&(t=de[r][t].replace),new F.TextNode(t)},H0=function(t){return t.length===1?t[0]:new F.MathNode("mrow",t)},V0=function(t,r){if(r.fontFamily==="texttt")return"monospace";if(r.fontFamily==="textsf")return r.fontShape==="textit"&&r.fontWeight==="textbf"?"sans-serif-bold-italic":r.fontShape==="textit"?"sans-serif-italic":r.fontWeight==="textbf"?"bold-sans-serif":"sans-serif";if(r.fontShape==="textit"&&r.fontWeight==="textbf")return"bold-italic";if(r.fontShape==="textit")return"italic";if(r.fontWeight==="textbf")return"bold";var n=r.font;if(!n||n==="mathnormal")return null;var i=t.mode;if(n==="mathit")return"italic";if(n==="boldsymbol")return t.type==="textord"?"bold":"bold-italic";if(n==="mathbf")return"bold";if(n==="mathbb")return"double-struck";if(n==="mathsfit")return"sans-serif-italic";if(n==="mathfrak")return"fraktur";if(n==="mathscr"||n==="mathcal")return"script";if(n==="mathsf")return"sans-serif";if(n==="mathtt")return"monospace";var a=t.text;if(["\\imath","\\jmath"].includes(a))return null;de[i][a]&&de[i][a].replace&&(a=de[i][a].replace);var l=C.fontMap[n].fontName;return P0(a,l,i)?C.fontMap[n].variant:null};function qn(e){if(!e)return!1;if(e.type==="mi"&&e.children.length===1){var t=e.children[0];return t instanceof ot&&t.text==="."}else if(e.type==="mo"&&e.children.length===1&&e.getAttribute("separator")==="true"&&e.getAttribute("lspace")==="0em"&&e.getAttribute("rspace")==="0em"){var r=e.children[0];return r instanceof ot&&r.text===","}else return!1}var Ve=function(t,r,n){if(t.length===1){var i=me(t[0],r);return n&&i instanceof _e&&i.type==="mo"&&(i.setAttribute("lspace","0em"),i.setAttribute("rspace","0em")),[i]}for(var a=[],l,s=0;s=1&&(l.type==="mn"||qn(l))){var u=o.children[0];u instanceof _e&&u.type==="mn"&&(u.children=[...l.children,...u.children],a.pop())}else if(l.type==="mi"&&l.children.length===1){var h=l.children[0];if(h instanceof ot&&h.text==="̸"&&(o.type==="mo"||o.type==="mi"||o.type==="mn")){var m=o.children[0];m instanceof ot&&m.text.length>0&&(m.text=m.text.slice(0,1)+"̸"+m.text.slice(1),a.pop())}}}a.push(o),l=o}return a},Dt=function(t,r,n){return H0(Ve(t,r,n))},me=function(t,r){if(!t)return new F.MathNode("mrow");if(Jr[t.type]){var n=Jr[t.type](t,r);return n}else throw new L("Got group of unknown type: '"+t.type+"'")};function la(e,t,r,n,i){var a=Ve(e,r),l;a.length===1&&a[0]instanceof _e&&["mrow","mtable"].includes(a[0].type)?l=a[0]:l=new F.MathNode("mrow",a);var s=new F.MathNode("annotation",[new F.TextNode(t)]);s.setAttribute("encoding","application/x-tex");var o=new F.MathNode("semantics",[l,s]),u=new F.MathNode("math",[o]);u.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&u.setAttribute("display","block");var h=i?"katex":"katex-mathml";return C.makeSpan([h],[u])}var ls=function(t){return new gt({style:t.displayMode?Q.DISPLAY:Q.TEXT,maxSize:t.maxSize,minRuleThickness:t.minRuleThickness})},ss=function(t,r){if(r.displayMode){var n=["katex-display"];r.leqno&&n.push("leqno"),r.fleqn&&n.push("fleqn"),t=C.makeSpan(n,[t])}return t},Bf=function(t,r,n){var i=ls(n),a;if(n.output==="mathml")return la(t,r,i,n.displayMode,!0);if(n.output==="html"){var l=h0(t,i);a=C.makeSpan(["katex"],[l])}else{var s=la(t,r,i,n.displayMode,!1),o=h0(t,i);a=C.makeSpan(["katex"],[s,o])}return ss(a,n)},Nf=function(t,r,n){var i=ls(n),a=h0(t,i),l=C.makeSpan(["katex"],[a]);return ss(l,n)},Ff={widehat:"^",widecheck:"ˇ",widetilde:"~",utilde:"~",overleftarrow:"←",underleftarrow:"←",xleftarrow:"←",overrightarrow:"→",underrightarrow:"→",xrightarrow:"→",underbrace:"⏟",overbrace:"⏞",overgroup:"⏠",undergroup:"⏡",overleftrightarrow:"↔",underleftrightarrow:"↔",xleftrightarrow:"↔",Overrightarrow:"⇒",xRightarrow:"⇒",overleftharpoon:"↼",xleftharpoonup:"↼",overrightharpoon:"⇀",xrightharpoonup:"⇀",xLeftarrow:"⇐",xLeftrightarrow:"⇔",xhookleftarrow:"↩",xhookrightarrow:"↪",xmapsto:"↦",xrightharpoondown:"⇁",xleftharpoondown:"↽",xrightleftharpoons:"⇌",xleftrightharpoons:"⇋",xtwoheadleftarrow:"↞",xtwoheadrightarrow:"↠",xlongequal:"=",xtofrom:"⇄",xrightleftarrows:"⇄",xrightequilibrium:"⇌",xleftequilibrium:"⇋","\\cdrightarrow":"→","\\cdleftarrow":"←","\\cdlongequal":"="},Lf=function(t){var r=new F.MathNode("mo",[new F.TextNode(Ff[t.replace(/^\\/,"")])]);return r.setAttribute("stretchy","true"),r},Rf={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Pf=function(t){return t.type==="ordgroup"?t.body.length:1},Of=function(t,r){function n(){var s=4e5,o=t.label.slice(1);if(["widehat","widecheck","widetilde","utilde"].includes(o)){var u=t,h=Pf(u.base),m,d,p;if(h>5)o==="widehat"||o==="widecheck"?(m=420,s=2364,p=.42,d=o+"4"):(m=312,s=2340,p=.34,d="tilde4");else{var y=[1,1,2,2,3,3][h];o==="widehat"||o==="widecheck"?(s=[0,1062,2364,2364,2364][y],m=[0,239,300,360,420][y],p=[0,.24,.3,.3,.36,.42][y],d=o+y):(s=[0,600,1033,2339,2340][y],m=[0,260,286,306,312][y],p=[0,.26,.286,.3,.306,.34][y],d="tilde"+y)}var w=new Et(d),M=new bt([w],{width:"100%",height:P(p),viewBox:"0 0 "+s+" "+m,preserveAspectRatio:"none"});return{span:C.makeSvgSpan([],[M],r),minWidth:0,height:p}}else{var S=[],z=Rf[o],[I,V,O]=z,E=O/1e3,G=I.length,K,U;if(G===1){var D=z[3];K=["hide-tail"],U=[D]}else if(G===2)K=["halfarrow-left","halfarrow-right"],U=["xMinYMin","xMaxYMin"];else if(G===3)K=["brace-left","brace-center","brace-right"],U=["xMinYMin","xMidYMin","xMaxYMin"];else throw new Error(`Correct katexImagesData or update code here to support + `+G+" children.");for(var $=0;$0&&(i.style.minWidth=P(a)),i},qf=function(t,r,n,i,a){var l,s=t.height+t.depth+n+i;if(/fbox|color|angl/.test(r)){if(l=C.makeSpan(["stretchy",r],[],a),r==="fbox"){var o=a.color&&a.getColor();o&&(l.style.borderColor=o)}}else{var u=[];/^[bx]cancel$/.test(r)&&u.push(new o0({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(r)&&u.push(new o0({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new bt(u,{width:"100%",height:P(s)});l=C.makeSvgSpan([],[h],a)}return l.height=s,l.style.height=P(s),l},wt={encloseSpan:qf,mathMLnode:Lf,svgSpan:Of};function re(e,t){if(!e||e.type!==t)throw new Error("Expected node of type "+t+", but got "+(e?"node of type "+e.type:String(e)));return e}function j0(e){var t=un(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?"node of type "+e.type:String(e)));return t}function un(e){return e&&(e.type==="atom"||cf.hasOwnProperty(e.type))?e:null}var $0=(e,t)=>{var r,n,i;e&&e.type==="supsub"?(n=re(e.base,"accent"),r=n.base,e.base=r,i=of(oe(e,t)),e.base=n):(n=re(e,"accent"),r=n.base);var a=oe(r,t.havingCrampedStyle()),l=n.isShifty&&ue.isCharacterBox(r),s=0;if(l){var o=ue.getBaseElem(r),u=oe(o,t.havingCrampedStyle());s=Ji(u).skew}var h=n.label==="\\c",m=h?a.height+a.depth:Math.min(a.height,t.fontMetrics().xHeight),d;if(n.isStretchy)d=wt.svgSpan(n,t),d=C.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"elem",elem:d,wrapperClasses:["svg-align"],wrapperStyle:s>0?{width:"calc(100% - "+P(2*s)+")",marginLeft:P(2*s)}:void 0}]},t);else{var p,y;n.label==="\\vec"?(p=C.staticSvg("vec",t),y=C.svgData.vec[1]):(p=C.makeOrd({mode:n.mode,text:n.label},t,"textord"),p=Ji(p),p.italic=0,y=p.width,h&&(m+=p.depth)),d=C.makeSpan(["accent-body"],[p]);var w=n.label==="\\textcircled";w&&(d.classes.push("accent-full"),m=a.height);var M=s;w||(M-=y/2),d.style.left=P(M),n.label==="\\textcircled"&&(d.style.top=".2em"),d=C.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:-m},{type:"elem",elem:d}]},t)}var S=C.makeSpan(["mord","accent"],[d],t);return i?(i.children[0]=S,i.height=Math.max(S.height,i.height),i.classes[0]="mord",i):S},os=(e,t)=>{var r=e.isStretchy?wt.mathMLnode(e.label):new F.MathNode("mo",[Je(e.label,e.mode)]),n=new F.MathNode("mover",[me(e.base,t),r]);return n.setAttribute("accent","true"),n},Hf=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map(e=>"\\"+e).join("|"));_({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(e,t)=>{var r=en(t[0]),n=!Hf.test(e.funcName),i=!n||e.funcName==="\\widehat"||e.funcName==="\\widetilde"||e.funcName==="\\widecheck";return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:n,isShifty:i,base:r}},htmlBuilder:$0,mathmlBuilder:os});_({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(e,t)=>{var r=t[0],n=e.parser.mode;return n==="math"&&(e.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+e.funcName+" works only in text mode"),n="text"),{type:"accent",mode:n,label:e.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:$0,mathmlBuilder:os});_({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(e,t)=>{var{parser:r,funcName:n}=e,i=t[0];return{type:"accentUnder",mode:r.mode,label:n,base:i}},htmlBuilder:(e,t)=>{var r=oe(e.base,t),n=wt.svgSpan(e,t),i=e.label==="\\utilde"?.12:0,a=C.makeVList({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:i},{type:"elem",elem:r}]},t);return C.makeSpan(["mord","accentunder"],[a],t)},mathmlBuilder:(e,t)=>{var r=wt.mathMLnode(e.label),n=new F.MathNode("munder",[me(e.base,t),r]);return n.setAttribute("accentunder","true"),n}});var Hr=e=>{var t=new F.MathNode("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t};_({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:n,funcName:i}=e;return{type:"xArrow",mode:n.mode,label:i,body:t[0],below:r[0]}},htmlBuilder(e,t){var r=t.style,n=t.havingStyle(r.sup()),i=C.wrapFragment(oe(e.body,n,t),t),a=e.label.slice(0,2)==="\\x"?"x":"cd";i.classes.push(a+"-arrow-pad");var l;e.below&&(n=t.havingStyle(r.sub()),l=C.wrapFragment(oe(e.below,n,t),t),l.classes.push(a+"-arrow-pad"));var s=wt.svgSpan(e,t),o=-t.fontMetrics().axisHeight+.5*s.height,u=-t.fontMetrics().axisHeight-.5*s.height-.111;(i.depth>.25||e.label==="\\xleftequilibrium")&&(u-=i.depth);var h;if(l){var m=-t.fontMetrics().axisHeight+l.height+.5*s.height+.111;h=C.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:u},{type:"elem",elem:s,shift:o},{type:"elem",elem:l,shift:m}]},t)}else h=C.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:u},{type:"elem",elem:s,shift:o}]},t);return h.children[0].children[0].children[1].classes.push("svg-align"),C.makeSpan(["mrel","x-arrow"],[h],t)},mathmlBuilder(e,t){var r=wt.mathMLnode(e.label);r.setAttribute("minsize",e.label.charAt(0)==="x"?"1.75em":"3.0em");var n;if(e.body){var i=Hr(me(e.body,t));if(e.below){var a=Hr(me(e.below,t));n=new F.MathNode("munderover",[r,a,i])}else n=new F.MathNode("mover",[r,i])}else if(e.below){var l=Hr(me(e.below,t));n=new F.MathNode("munder",[r,l])}else n=Hr(),n=new F.MathNode("mover",[r,n]);return n}});var Vf=C.makeSpan;function us(e,t){var r=ze(e.body,t,!0);return Vf([e.mclass],r,t)}function cs(e,t){var r,n=Ve(e.body,t);return e.mclass==="minner"?r=new F.MathNode("mpadded",n):e.mclass==="mord"?e.isCharacterBox?(r=n[0],r.type="mi"):r=new F.MathNode("mi",n):(e.isCharacterBox?(r=n[0],r.type="mo"):r=new F.MathNode("mo",n),e.mclass==="mbin"?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):e.mclass==="mpunct"?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):e.mclass==="mopen"||e.mclass==="mclose"?(r.attributes.lspace="0em",r.attributes.rspace="0em"):e.mclass==="minner"&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}_({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(e,t){var{parser:r,funcName:n}=e,i=t[0];return{type:"mclass",mode:r.mode,mclass:"m"+n.slice(5),body:we(i),isCharacterBox:ue.isCharacterBox(i)}},htmlBuilder:us,mathmlBuilder:cs});var cn=e=>{var t=e.type==="ordgroup"&&e.body.length?e.body[0]:e;return t.type==="atom"&&(t.family==="bin"||t.family==="rel")?"m"+t.family:"mord"};_({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(e,t){var{parser:r}=e;return{type:"mclass",mode:r.mode,mclass:cn(t[0]),body:we(t[1]),isCharacterBox:ue.isCharacterBox(t[1])}}});_({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(e,t){var{parser:r,funcName:n}=e,i=t[1],a=t[0],l;n!=="\\stackrel"?l=cn(i):l="mrel";var s={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:n!=="\\stackrel",body:we(i)},o={type:"supsub",mode:a.mode,base:s,sup:n==="\\underset"?null:a,sub:n==="\\underset"?a:null};return{type:"mclass",mode:r.mode,mclass:l,body:[o],isCharacterBox:ue.isCharacterBox(o)}},htmlBuilder:us,mathmlBuilder:cs});_({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"pmb",mode:r.mode,mclass:cn(t[0]),body:we(t[0])}},htmlBuilder(e,t){var r=ze(e.body,t,!0),n=C.makeSpan([e.mclass],r,t);return n.style.textShadow="0.02em 0.01em 0.04px",n},mathmlBuilder(e,t){var r=Ve(e.body,t),n=new F.MathNode("mstyle",r);return n.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),n}});var jf={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},sa=()=>({type:"styling",body:[],mode:"math",style:"display"}),oa=e=>e.type==="textord"&&e.text==="@",$f=(e,t)=>(e.type==="mathord"||e.type==="atom")&&e.text===t;function Uf(e,t,r){var n=jf[e];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":{var i=r.callFunction("\\\\cdleft",[t[0]],[]),a={type:"atom",text:n,mode:"math",family:"rel"},l=r.callFunction("\\Big",[a],[]),s=r.callFunction("\\\\cdright",[t[1]],[]),o={type:"ordgroup",mode:"math",body:[i,l,s]};return r.callFunction("\\\\cdparent",[o],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{var u={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[u],[])}default:return{type:"textord",text:" ",mode:"math"}}}function _f(e){var t=[];for(e.gullet.beginGroup(),e.gullet.macros.set("\\cr","\\\\\\relax"),e.gullet.beginGroup();;){t.push(e.parseExpression(!1,"\\\\")),e.gullet.endGroup(),e.gullet.beginGroup();var r=e.fetch().text;if(r==="&"||r==="\\\\")e.consume();else if(r==="\\end"){t[t.length-1].length===0&&t.pop();break}else throw new L("Expected \\\\ or \\cr or \\end",e.nextToken)}for(var n=[],i=[n],a=0;a-1))if("<>AV".indexOf(u)>-1)for(var m=0;m<2;m++){for(var d=!0,p=o+1;pAV=|." after @',l[o]);var y=Uf(u,h,e),w={type:"styling",body:[y],mode:"math",style:"display"};n.push(w),s=sa()}a%2===0?n.push(s):n.shift(),n=[],i.push(n)}e.gullet.endGroup(),e.gullet.endGroup();var M=new Array(i[0].length).fill({type:"align",align:"c",pregap:.25,postgap:.25});return{type:"array",mode:"math",body:i,arraystretch:1,addJot:!0,rowGaps:[null],cols:M,colSeparationType:"CD",hLinesBeforeRow:new Array(i.length+1).fill([])}}_({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e;return{type:"cdlabel",mode:r.mode,side:n.slice(4),label:t[0]}},htmlBuilder(e,t){var r=t.havingStyle(t.style.sup()),n=C.wrapFragment(oe(e.label,r,t),t);return n.classes.push("cd-label-"+e.side),n.style.bottom=P(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder(e,t){var r=new F.MathNode("mrow",[me(e.label,t)]);return r=new F.MathNode("mpadded",[r]),r.setAttribute("width","0"),e.side==="left"&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),r=new F.MathNode("mstyle",[r]),r.setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}});_({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(e,t){var{parser:r}=e;return{type:"cdlabelparent",mode:r.mode,fragment:t[0]}},htmlBuilder(e,t){var r=C.wrapFragment(oe(e.fragment,t),t);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder(e,t){return new F.MathNode("mrow",[me(e.fragment,t)])}});_({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(e,t){for(var{parser:r}=e,n=re(t[0],"ordgroup"),i=n.body,a="",l=0;l=1114111)throw new L("\\@char with invalid code point "+a);return o<=65535?u=String.fromCharCode(o):(o-=65536,u=String.fromCharCode((o>>10)+55296,(o&1023)+56320)),{type:"textord",mode:r.mode,text:u}}});var hs=(e,t)=>{var r=ze(e.body,t.withColor(e.color),!1);return C.makeFragment(r)},ms=(e,t)=>{var r=Ve(e.body,t.withColor(e.color)),n=new F.MathNode("mstyle",r);return n.setAttribute("mathcolor",e.color),n};_({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(e,t){var{parser:r}=e,n=re(t[0],"color-token").color,i=t[1];return{type:"color",mode:r.mode,color:n,body:we(i)}},htmlBuilder:hs,mathmlBuilder:ms});_({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(e,t){var{parser:r,breakOnTokenText:n}=e,i=re(t[0],"color-token").color;r.gullet.macros.set("\\current@color",i);var a=r.parseExpression(!0,n);return{type:"color",mode:r.mode,color:i,body:a}},htmlBuilder:hs,mathmlBuilder:ms});_({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(e,t,r){var{parser:n}=e,i=n.gullet.future().text==="["?n.parseSizeGroup(!0):null,a=!n.settings.displayMode||!n.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:n.mode,newLine:a,size:i&&re(i,"size").value}},htmlBuilder(e,t){var r=C.makeSpan(["mspace"],[],t);return e.newLine&&(r.classes.push("newline"),e.size&&(r.style.marginTop=P(ye(e.size,t)))),r},mathmlBuilder(e,t){var r=new F.MathNode("mspace");return e.newLine&&(r.setAttribute("linebreak","newline"),e.size&&r.setAttribute("height",P(ye(e.size,t)))),r}});var m0={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},fs=e=>{var t=e.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(t))throw new L("Expected a control sequence",e);return t},Gf=e=>{var t=e.gullet.popToken();return t.text==="="&&(t=e.gullet.popToken(),t.text===" "&&(t=e.gullet.popToken())),t},ps=(e,t,r,n)=>{var i=e.gullet.macros.get(r.text);i==null&&(r.noexpand=!0,i={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,i,n)};_({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(e){var{parser:t,funcName:r}=e;t.consumeSpaces();var n=t.fetch();if(m0[n.text])return(r==="\\global"||r==="\\\\globallong")&&(n.text=m0[n.text]),re(t.parseFunction(),"internal");throw new L("Invalid token after macro prefix",n)}});_({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=t.gullet.popToken(),i=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(i))throw new L("Expected a control sequence",n);for(var a=0,l,s=[[]];t.gullet.future().text!=="{";)if(n=t.gullet.popToken(),n.text==="#"){if(t.gullet.future().text==="{"){l=t.gullet.future(),s[a].push("{");break}if(n=t.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new L('Invalid argument number "'+n.text+'"');if(parseInt(n.text)!==a+1)throw new L('Argument number "'+n.text+'" out of order');a++,s.push([])}else{if(n.text==="EOF")throw new L("Expected a macro definition");s[a].push(n.text)}var{tokens:o}=t.gullet.consumeArg();return l&&o.unshift(l),(r==="\\edef"||r==="\\xdef")&&(o=t.gullet.expandTokens(o),o.reverse()),t.gullet.macros.set(i,{tokens:o,numArgs:a,delimiters:s},r===m0[r]),{type:"internal",mode:t.mode}}});_({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=fs(t.gullet.popToken());t.gullet.consumeSpaces();var i=Gf(t);return ps(t,n,i,r==="\\\\globallet"),{type:"internal",mode:t.mode}}});_({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,n=fs(t.gullet.popToken()),i=t.gullet.popToken(),a=t.gullet.popToken();return ps(t,n,a,r==="\\\\globalfuture"),t.gullet.pushToken(a),t.gullet.pushToken(i),{type:"internal",mode:t.mode}}});var fr=function(t,r,n){var i=de.math[t]&&de.math[t].replace,a=P0(i||t,r,n);if(!a)throw new Error("Unsupported symbol "+t+" and font size "+r+".");return a},U0=function(t,r,n,i){var a=n.havingBaseStyle(r),l=C.makeSpan(i.concat(a.sizingClasses(n)),[t],n),s=a.sizeMultiplier/n.sizeMultiplier;return l.height*=s,l.depth*=s,l.maxFontSize=a.sizeMultiplier,l},ds=function(t,r,n){var i=r.havingBaseStyle(n),a=(1-r.sizeMultiplier/i.sizeMultiplier)*r.fontMetrics().axisHeight;t.classes.push("delimcenter"),t.style.top=P(a),t.height-=a,t.depth+=a},Wf=function(t,r,n,i,a,l){var s=C.makeSymbol(t,"Main-Regular",a,i),o=U0(s,r,i,l);return n&&ds(o,i,r),o},Yf=function(t,r,n,i){return C.makeSymbol(t,"Size"+r+"-Regular",n,i)},gs=function(t,r,n,i,a,l){var s=Yf(t,r,a,i),o=U0(C.makeSpan(["delimsizing","size"+r],[s],i),Q.TEXT,i,l);return n&&ds(o,i,Q.TEXT),o},Hn=function(t,r,n){var i;r==="Size1-Regular"?i="delim-size1":i="delim-size4";var a=C.makeSpan(["delimsizinginner",i],[C.makeSpan([],[C.makeSymbol(t,r,n)])]);return{type:"elem",elem:a}},Vn=function(t,r,n){var i=st["Size4-Regular"][t.charCodeAt(0)]?st["Size4-Regular"][t.charCodeAt(0)][4]:st["Size1-Regular"][t.charCodeAt(0)][4],a=new Et("inner",Qm(t,Math.round(1e3*r))),l=new bt([a],{width:P(i),height:P(r),style:"width:"+P(i),viewBox:"0 0 "+1e3*i+" "+Math.round(1e3*r),preserveAspectRatio:"xMinYMin"}),s=C.makeSvgSpan([],[l],n);return s.height=r,s.style.height=P(r),s.style.width=P(i),{type:"elem",elem:s}},f0=.008,Vr={type:"kern",size:-1*f0},Xf=["|","\\lvert","\\rvert","\\vert"],Kf=["\\|","\\lVert","\\rVert","\\Vert"],vs=function(t,r,n,i,a,l){var s,o,u,h,m="",d=0;s=u=h=t,o=null;var p="Size1-Regular";t==="\\uparrow"?u=h="⏐":t==="\\Uparrow"?u=h="‖":t==="\\downarrow"?s=u="⏐":t==="\\Downarrow"?s=u="‖":t==="\\updownarrow"?(s="\\uparrow",u="⏐",h="\\downarrow"):t==="\\Updownarrow"?(s="\\Uparrow",u="‖",h="\\Downarrow"):Xf.includes(t)?(u="∣",m="vert",d=333):Kf.includes(t)?(u="∥",m="doublevert",d=556):t==="["||t==="\\lbrack"?(s="⎡",u="⎢",h="⎣",p="Size4-Regular",m="lbrack",d=667):t==="]"||t==="\\rbrack"?(s="⎤",u="⎥",h="⎦",p="Size4-Regular",m="rbrack",d=667):t==="\\lfloor"||t==="⌊"?(u=s="⎢",h="⎣",p="Size4-Regular",m="lfloor",d=667):t==="\\lceil"||t==="⌈"?(s="⎡",u=h="⎢",p="Size4-Regular",m="lceil",d=667):t==="\\rfloor"||t==="⌋"?(u=s="⎥",h="⎦",p="Size4-Regular",m="rfloor",d=667):t==="\\rceil"||t==="⌉"?(s="⎤",u=h="⎥",p="Size4-Regular",m="rceil",d=667):t==="("||t==="\\lparen"?(s="⎛",u="⎜",h="⎝",p="Size4-Regular",m="lparen",d=875):t===")"||t==="\\rparen"?(s="⎞",u="⎟",h="⎠",p="Size4-Regular",m="rparen",d=875):t==="\\{"||t==="\\lbrace"?(s="⎧",o="⎨",h="⎩",u="⎪",p="Size4-Regular"):t==="\\}"||t==="\\rbrace"?(s="⎫",o="⎬",h="⎭",u="⎪",p="Size4-Regular"):t==="\\lgroup"||t==="⟮"?(s="⎧",h="⎩",u="⎪",p="Size4-Regular"):t==="\\rgroup"||t==="⟯"?(s="⎫",h="⎭",u="⎪",p="Size4-Regular"):t==="\\lmoustache"||t==="⎰"?(s="⎧",h="⎭",u="⎪",p="Size4-Regular"):(t==="\\rmoustache"||t==="⎱")&&(s="⎫",h="⎩",u="⎪",p="Size4-Regular");var y=fr(s,p,a),w=y.height+y.depth,M=fr(u,p,a),S=M.height+M.depth,z=fr(h,p,a),I=z.height+z.depth,V=0,O=1;if(o!==null){var E=fr(o,p,a);V=E.height+E.depth,O=2}var G=w+I+V,K=Math.max(0,Math.ceil((r-G)/(O*S))),U=G+K*O*S,D=i.fontMetrics().axisHeight;n&&(D*=i.sizeMultiplier);var $=U/2-D,j=[];if(m.length>0){var ie=U-w-I,Y=Math.round(U*1e3),q=Jm(m,Math.round(ie*1e3)),ae=new Et(m,q),fe=(d/1e3).toFixed(3)+"em",Me=(Y/1e3).toFixed(3)+"em",je=new bt([ae],{width:fe,height:Me,viewBox:"0 0 "+d+" "+Y}),k=C.makeSvgSpan([],[je],i);k.height=Y/1e3,k.style.width=fe,k.style.height=Me,j.push({type:"elem",elem:k})}else{if(j.push(Hn(h,p,a)),j.push(Vr),o===null){var ke=U-w-I+2*f0;j.push(Vn(u,ke,i))}else{var be=(U-w-I-V)/2+2*f0;j.push(Vn(u,be,i)),j.push(Vr),j.push(Hn(o,p,a)),j.push(Vr),j.push(Vn(u,be,i))}j.push(Vr),j.push(Hn(s,p,a))}var A=i.havingBaseStyle(Q.TEXT),De=C.makeVList({positionType:"bottom",positionData:$,children:j},A);return U0(C.makeSpan(["delimsizing","mult"],[De],A),Q.TEXT,i,l)},jn=80,$n=.08,Un=function(t,r,n,i,a){var l=Zm(t,i,n),s=new Et(t,l),o=new bt([s],{width:"400em",height:P(r),viewBox:"0 0 400000 "+n,preserveAspectRatio:"xMinYMin slice"});return C.makeSvgSpan(["hide-tail"],[o],a)},Zf=function(t,r){var n=r.havingBaseSizing(),i=ws("\\surd",t*n.sizeMultiplier,xs,n),a=n.sizeMultiplier,l=Math.max(0,r.minRuleThickness-r.fontMetrics().sqrtRuleThickness),s,o=0,u=0,h=0,m;return i.type==="small"?(h=1e3+1e3*l+jn,t<1?a=1:t<1.4&&(a=.7),o=(1+l+$n)/a,u=(1+l)/a,s=Un("sqrtMain",o,h,l,r),s.style.minWidth="0.853em",m=.833/a):i.type==="large"?(h=(1e3+jn)*vr[i.size],u=(vr[i.size]+l)/a,o=(vr[i.size]+l+$n)/a,s=Un("sqrtSize"+i.size,o,h,l,r),s.style.minWidth="1.02em",m=1/a):(o=t+l+$n,u=t+l,h=Math.floor(1e3*t+l)+jn,s=Un("sqrtTall",o,h,l,r),s.style.minWidth="0.742em",m=1.056),s.height=u,s.style.height=P(o),{span:s,advanceWidth:m,ruleWidth:(r.fontMetrics().sqrtRuleThickness+l)*a}},ys=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","\\surd"],Qf=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱"],bs=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],vr=[0,1.2,1.8,2.4,3],Jf=function(t,r,n,i,a){if(t==="<"||t==="\\lt"||t==="⟨"?t="\\langle":(t===">"||t==="\\gt"||t==="⟩")&&(t="\\rangle"),ys.includes(t)||bs.includes(t))return gs(t,r,!1,n,i,a);if(Qf.includes(t))return vs(t,vr[r],!1,n,i,a);throw new L("Illegal delimiter: '"+t+"'")},e2=[{type:"small",style:Q.SCRIPTSCRIPT},{type:"small",style:Q.SCRIPT},{type:"small",style:Q.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],t2=[{type:"small",style:Q.SCRIPTSCRIPT},{type:"small",style:Q.SCRIPT},{type:"small",style:Q.TEXT},{type:"stack"}],xs=[{type:"small",style:Q.SCRIPTSCRIPT},{type:"small",style:Q.SCRIPT},{type:"small",style:Q.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],r2=function(t){if(t.type==="small")return"Main-Regular";if(t.type==="large")return"Size"+t.size+"-Regular";if(t.type==="stack")return"Size4-Regular";throw new Error("Add support for delim type '"+t.type+"' here.")},ws=function(t,r,n,i){for(var a=Math.min(2,3-i.style.size),l=a;lr)return n[l]}return n[n.length-1]},ks=function(t,r,n,i,a,l){t==="<"||t==="\\lt"||t==="⟨"?t="\\langle":(t===">"||t==="\\gt"||t==="⟩")&&(t="\\rangle");var s;bs.includes(t)?s=e2:ys.includes(t)?s=xs:s=t2;var o=ws(t,r,s,i);return o.type==="small"?Wf(t,o.style,n,i,a,l):o.type==="large"?gs(t,o.size,n,i,a,l):vs(t,r,n,i,a,l)},n2=function(t,r,n,i,a,l){var s=i.fontMetrics().axisHeight*i.sizeMultiplier,o=901,u=5/i.fontMetrics().ptPerEm,h=Math.max(r-s,n+s),m=Math.max(h/500*o,2*h-u);return ks(t,m,!0,i,a,l)},yt={sqrtImage:Zf,sizedDelim:Jf,sizeToMaxHeight:vr,customSizedDelim:ks,leftRightDelim:n2},ua={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},i2=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function hn(e,t){var r=un(e);if(r&&i2.includes(r.text))return r;throw r?new L("Invalid delimiter '"+r.text+"' after '"+t.funcName+"'",e):new L("Invalid delimiter type '"+e.type+"'",e)}_({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(e,t)=>{var r=hn(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:ua[e.funcName].size,mclass:ua[e.funcName].mclass,delim:r.text}},htmlBuilder:(e,t)=>e.delim==="."?C.makeSpan([e.mclass]):yt.sizedDelim(e.delim,e.size,t,e.mode,[e.mclass]),mathmlBuilder:e=>{var t=[];e.delim!=="."&&t.push(Je(e.delim,e.mode));var r=new F.MathNode("mo",t);e.mclass==="mopen"||e.mclass==="mclose"?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var n=P(yt.sizeToMaxHeight[e.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r}});function ca(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}_({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=e.parser.gullet.macros.get("\\current@color");if(r&&typeof r!="string")throw new L("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:hn(t[0],e).text,color:r}}});_({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=hn(t[0],e),n=e.parser;++n.leftrightDepth;var i=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var a=re(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:i,left:r.text,right:a.delim,rightColor:a.color}},htmlBuilder:(e,t)=>{ca(e);for(var r=ze(e.body,t,!0,["mopen","mclose"]),n=0,i=0,a=!1,l=0;l{ca(e);var r=Ve(e.body,t);if(e.left!=="."){var n=new F.MathNode("mo",[Je(e.left,e.mode)]);n.setAttribute("fence","true"),r.unshift(n)}if(e.right!=="."){var i=new F.MathNode("mo",[Je(e.right,e.mode)]);i.setAttribute("fence","true"),e.rightColor&&i.setAttribute("mathcolor",e.rightColor),r.push(i)}return H0(r)}});_({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=hn(t[0],e);if(!e.parser.leftrightDepth)throw new L("\\middle without preceding \\left",r);return{type:"middle",mode:e.parser.mode,delim:r.text}},htmlBuilder:(e,t)=>{var r;if(e.delim===".")r=kr(t,[]);else{r=yt.sizedDelim(e.delim,1,t,e.mode,[]);var n={delim:e.delim,options:t};r.isMiddle=n}return r},mathmlBuilder:(e,t)=>{var r=e.delim==="\\vert"||e.delim==="|"?Je("|","text"):Je(e.delim,e.mode),n=new F.MathNode("mo",[r]);return n.setAttribute("fence","true"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n}});var _0=(e,t)=>{var r=C.wrapFragment(oe(e.body,t),t),n=e.label.slice(1),i=t.sizeMultiplier,a,l=0,s=ue.isCharacterBox(e.body);if(n==="sout")a=C.makeSpan(["stretchy","sout"]),a.height=t.fontMetrics().defaultRuleThickness/i,l=-.5*t.fontMetrics().xHeight;else if(n==="phase"){var o=ye({number:.6,unit:"pt"},t),u=ye({number:.35,unit:"ex"},t),h=t.havingBaseSizing();i=i/h.sizeMultiplier;var m=r.height+r.depth+o+u;r.style.paddingLeft=P(m/2+o);var d=Math.floor(1e3*m*i),p=Xm(d),y=new bt([new Et("phase",p)],{width:"400em",height:P(d/1e3),viewBox:"0 0 400000 "+d,preserveAspectRatio:"xMinYMin slice"});a=C.makeSvgSpan(["hide-tail"],[y],t),a.style.height=P(m),l=r.depth+o+u}else{/cancel/.test(n)?s||r.classes.push("cancel-pad"):n==="angl"?r.classes.push("anglpad"):r.classes.push("boxpad");var w=0,M=0,S=0;/box/.test(n)?(S=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),w=t.fontMetrics().fboxsep+(n==="colorbox"?0:S),M=w):n==="angl"?(S=Math.max(t.fontMetrics().defaultRuleThickness,t.minRuleThickness),w=4*S,M=Math.max(0,.25-r.depth)):(w=s?.2:0,M=w),a=wt.encloseSpan(r,n,w,M,t),/fbox|boxed|fcolorbox/.test(n)?(a.style.borderStyle="solid",a.style.borderWidth=P(S)):n==="angl"&&S!==.049&&(a.style.borderTopWidth=P(S),a.style.borderRightWidth=P(S)),l=r.depth+M,e.backgroundColor&&(a.style.backgroundColor=e.backgroundColor,e.borderColor&&(a.style.borderColor=e.borderColor))}var z;if(e.backgroundColor)z=C.makeVList({positionType:"individualShift",children:[{type:"elem",elem:a,shift:l},{type:"elem",elem:r,shift:0}]},t);else{var I=/cancel|phase/.test(n)?["svg-align"]:[];z=C.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:0},{type:"elem",elem:a,shift:l,wrapperClasses:I}]},t)}return/cancel/.test(n)&&(z.height=r.height,z.depth=r.depth),/cancel/.test(n)&&!s?C.makeSpan(["mord","cancel-lap"],[z],t):C.makeSpan(["mord"],[z],t)},G0=(e,t)=>{var r=0,n=new F.MathNode(e.label.indexOf("colorbox")>-1?"mpadded":"menclose",[me(e.body,t)]);switch(e.label){case"\\cancel":n.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":n.setAttribute("notation","downdiagonalstrike");break;case"\\phase":n.setAttribute("notation","phasorangle");break;case"\\sout":n.setAttribute("notation","horizontalstrike");break;case"\\fbox":n.setAttribute("notation","box");break;case"\\angl":n.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,n.setAttribute("width","+"+2*r+"pt"),n.setAttribute("height","+"+2*r+"pt"),n.setAttribute("lspace",r+"pt"),n.setAttribute("voffset",r+"pt"),e.label==="\\fcolorbox"){var i=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);n.setAttribute("style","border: "+i+"em solid "+String(e.borderColor))}break;case"\\xcancel":n.setAttribute("notation","updiagonalstrike downdiagonalstrike");break}return e.backgroundColor&&n.setAttribute("mathbackground",e.backgroundColor),n};_({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(e,t,r){var{parser:n,funcName:i}=e,a=re(t[0],"color-token").color,l=t[1];return{type:"enclose",mode:n.mode,label:i,backgroundColor:a,body:l}},htmlBuilder:_0,mathmlBuilder:G0});_({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(e,t,r){var{parser:n,funcName:i}=e,a=re(t[0],"color-token").color,l=re(t[1],"color-token").color,s=t[2];return{type:"enclose",mode:n.mode,label:i,backgroundColor:l,borderColor:a,body:s}},htmlBuilder:_0,mathmlBuilder:G0});_({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\fbox",body:t[0]}}});_({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e,i=t[0];return{type:"enclose",mode:r.mode,label:n,body:i}},htmlBuilder:_0,mathmlBuilder:G0});_({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\angl",body:t[0]}}});var Ss={};function ct(e){for(var{type:t,names:r,props:n,handler:i,htmlBuilder:a,mathmlBuilder:l}=e,s={type:t,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:i},o=0;o{var t=e.parser.settings;if(!t.displayMode)throw new L("{"+e.envName+"} can be used only in display mode.")};function W0(e){if(e.indexOf("ed")===-1)return e.indexOf("*")===-1}function Bt(e,t,r){var{hskipBeforeAndAfter:n,addJot:i,cols:a,arraystretch:l,colSeparationType:s,autoTag:o,singleRow:u,emptySingleRow:h,maxNumCols:m,leqno:d}=t;if(e.gullet.beginGroup(),u||e.gullet.macros.set("\\cr","\\\\\\relax"),!l){var p=e.gullet.expandMacroAsText("\\arraystretch");if(p==null)l=1;else if(l=parseFloat(p),!l||l<0)throw new L("Invalid \\arraystretch: "+p)}e.gullet.beginGroup();var y=[],w=[y],M=[],S=[],z=o!=null?[]:void 0;function I(){o&&e.gullet.macros.set("\\@eqnsw","1",!0)}function V(){z&&(e.gullet.macros.get("\\df@tag")?(z.push(e.subparse([new We("\\df@tag")])),e.gullet.macros.set("\\df@tag",void 0,!0)):z.push(!!o&&e.gullet.macros.get("\\@eqnsw")==="1"))}for(I(),S.push(ha(e));;){var O=e.parseExpression(!1,u?"\\end":"\\\\");e.gullet.endGroup(),e.gullet.beginGroup(),O={type:"ordgroup",mode:e.mode,body:O},r&&(O={type:"styling",mode:e.mode,style:r,body:[O]}),y.push(O);var E=e.fetch().text;if(E==="&"){if(m&&y.length===m){if(u||s)throw new L("Too many tab characters: &",e.nextToken);e.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}e.consume()}else if(E==="\\end"){V(),y.length===1&&O.type==="styling"&&O.body[0].body.length===0&&(w.length>1||!h)&&w.pop(),S.length0&&(I+=.25),u.push({pos:I,isDashed:Ut[Nt]})}for(V(l[0]),n=0;n0&&($+=z,G<$&&(G=$),$=0)),t.addJot&&(G+=w),K.height=E,K.depth=G,I+=E,K.pos=I,I+=G+$,o[n]=K,V(l[n+1])}var j=I/2+r.fontMetrics().axisHeight,ie=t.cols||[],Y=[],q,ae,fe=[];if(t.tags&&t.tags.some(Ut=>Ut))for(n=0;n=s)){var Xe=void 0;(i>0||t.hskipBeforeAndAfter)&&(Xe=ue.deflt(be.pregap,d),Xe!==0&&(q=C.makeSpan(["arraycolsep"],[]),q.style.width=P(Xe),Y.push(q)));var Ie=[];for(n=0;n0){for(var pn=C.makeLineSpan("hline",r,h),dn=C.makeLineSpan("hdashline",r,h),ir=[{type:"elem",elem:o,shift:0}];u.length>0;){var ar=u.pop(),lr=ar.pos-j;ar.isDashed?ir.push({type:"elem",elem:dn,shift:lr}):ir.push({type:"elem",elem:pn,shift:lr})}o=C.makeVList({positionType:"individualShift",children:ir},r)}if(fe.length===0)return C.makeSpan(["mord"],[o],r);var $t=C.makeVList({positionType:"individualShift",children:fe},r);return $t=C.makeSpan(["tag"],[$t],r),C.makeFragment([o,$t])},a2={c:"center ",l:"left ",r:"right "},mt=function(t,r){for(var n=[],i=new F.MathNode("mtd",[],["mtr-glue"]),a=new F.MathNode("mtd",[],["mml-eqn-num"]),l=0;l0){var y=t.cols,w="",M=!1,S=0,z=y.length;y[0].type==="separator"&&(d+="top ",S=1),y[y.length-1].type==="separator"&&(d+="bottom ",z-=1);for(var I=S;I0?"left ":"",d+=K[K.length-1].length>0?"right ":"";for(var U=1;U-1?"alignat":"align",a=t.envName==="split",l=Bt(t.parser,{cols:n,addJot:!0,autoTag:a?void 0:W0(t.envName),emptySingleRow:!0,colSeparationType:i,maxNumCols:a?2:void 0,leqno:t.parser.settings.leqno},"display"),s,o=0,u={type:"ordgroup",mode:t.mode,body:[]};if(r[0]&&r[0].type==="ordgroup"){for(var h="",m=0;m0&&p&&(M=1),n[y]={type:"align",align:w,pregap:M,postgap:0}}return l.colSeparationType=p?"align":"alignat",l};ct({type:"array",names:["array","darray"],props:{numArgs:1},handler(e,t){var r=un(t[0]),n=r?[t[0]]:re(t[0],"ordgroup").body,i=n.map(function(l){var s=j0(l),o=s.text;if("lcr".indexOf(o)!==-1)return{type:"align",align:o};if(o==="|")return{type:"separator",separator:"|"};if(o===":")return{type:"separator",separator:":"};throw new L("Unknown column alignment: "+o,l)}),a={cols:i,hskipBeforeAndAfter:!0,maxNumCols:i.length};return Bt(e.parser,a,Y0(e.envName))},htmlBuilder:ht,mathmlBuilder:mt});ct({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName.replace("*","")],r="c",n={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if(e.envName.charAt(e.envName.length-1)==="*"){var i=e.parser;if(i.consumeSpaces(),i.fetch().text==="["){if(i.consume(),i.consumeSpaces(),r=i.fetch().text,"lcr".indexOf(r)===-1)throw new L("Expected l or c or r",i.nextToken);i.consume(),i.consumeSpaces(),i.expect("]"),i.consume(),n.cols=[{type:"align",align:r}]}}var a=Bt(e.parser,n,Y0(e.envName)),l=Math.max(0,...a.body.map(s=>s.length));return a.cols=new Array(l).fill({type:"align",align:r}),t?{type:"leftright",mode:e.mode,body:[a],left:t[0],right:t[1],rightColor:void 0}:a},htmlBuilder:ht,mathmlBuilder:mt});ct({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(e){var t={arraystretch:.5},r=Bt(e.parser,t,"script");return r.colSeparationType="small",r},htmlBuilder:ht,mathmlBuilder:mt});ct({type:"array",names:["subarray"],props:{numArgs:1},handler(e,t){var r=un(t[0]),n=r?[t[0]]:re(t[0],"ordgroup").body,i=n.map(function(l){var s=j0(l),o=s.text;if("lc".indexOf(o)!==-1)return{type:"align",align:o};throw new L("Unknown column alignment: "+o,l)});if(i.length>1)throw new L("{subarray} can contain only one column");var a={cols:i,hskipBeforeAndAfter:!1,arraystretch:.5};if(a=Bt(e.parser,a,"script"),a.body.length>0&&a.body[0].length>1)throw new L("{subarray} can contain only one column");return a},htmlBuilder:ht,mathmlBuilder:mt});ct({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(e){var t={arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},r=Bt(e.parser,t,Y0(e.envName));return{type:"leftright",mode:e.mode,body:[r],left:e.envName.indexOf("r")>-1?".":"\\{",right:e.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:ht,mathmlBuilder:mt});ct({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:Ts,htmlBuilder:ht,mathmlBuilder:mt});ct({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(e){["gather","gather*"].includes(e.envName)&&mn(e);var t={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:W0(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return Bt(e.parser,t,"display")},htmlBuilder:ht,mathmlBuilder:mt});ct({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:Ts,htmlBuilder:ht,mathmlBuilder:mt});ct({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(e){mn(e);var t={autoTag:W0(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:e.parser.settings.leqno};return Bt(e.parser,t,"display")},htmlBuilder:ht,mathmlBuilder:mt});ct({type:"array",names:["CD"],props:{numArgs:0},handler(e){return mn(e),_f(e.parser)},htmlBuilder:ht,mathmlBuilder:mt});v("\\nonumber","\\gdef\\@eqnsw{0}");v("\\notag","\\nonumber");_({type:"text",names:["\\hline","\\hdashline"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler(e,t){throw new L(e.funcName+" valid only within array environment")}});var ma=Ss;_({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler(e,t){var{parser:r,funcName:n}=e,i=t[0];if(i.type!=="ordgroup")throw new L("Invalid environment name",i);for(var a="",l=0;l{var r=e.font,n=t.withFont(r);return oe(e.body,n)},Ms=(e,t)=>{var r=e.font,n=t.withFont(r);return me(e.body,n)},fa={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};_({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(e,t)=>{var{parser:r,funcName:n}=e,i=en(t[0]),a=n;return a in fa&&(a=fa[a]),{type:"font",mode:r.mode,font:a.slice(1),body:i}},htmlBuilder:zs,mathmlBuilder:Ms});_({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(e,t)=>{var{parser:r}=e,n=t[0],i=ue.isCharacterBox(n);return{type:"mclass",mode:r.mode,mclass:cn(n),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:n}],isCharacterBox:i}}});_({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{parser:r,funcName:n,breakOnTokenText:i}=e,{mode:a}=r,l=r.parseExpression(!0,i),s="math"+n.slice(1);return{type:"font",mode:a,font:s,body:{type:"ordgroup",mode:r.mode,body:l}}},htmlBuilder:zs,mathmlBuilder:Ms});var Cs=(e,t)=>{var r=t;return e==="display"?r=r.id>=Q.SCRIPT.id?r.text():Q.DISPLAY:e==="text"&&r.size===Q.DISPLAY.size?r=Q.TEXT:e==="script"?r=Q.SCRIPT:e==="scriptscript"&&(r=Q.SCRIPTSCRIPT),r},X0=(e,t)=>{var r=Cs(e.size,t.style),n=r.fracNum(),i=r.fracDen(),a;a=t.havingStyle(n);var l=oe(e.numer,a,t);if(e.continued){var s=8.5/t.fontMetrics().ptPerEm,o=3.5/t.fontMetrics().ptPerEm;l.height=l.height0?y=3*d:y=7*d,w=t.fontMetrics().denom1):(m>0?(p=t.fontMetrics().num2,y=d):(p=t.fontMetrics().num3,y=3*d),w=t.fontMetrics().denom2);var M;if(h){var z=t.fontMetrics().axisHeight;p-l.depth-(z+.5*m){var r=new F.MathNode("mfrac",[me(e.numer,t),me(e.denom,t)]);if(!e.hasBarLine)r.setAttribute("linethickness","0px");else if(e.barSize){var n=ye(e.barSize,t);r.setAttribute("linethickness",P(n))}var i=Cs(e.size,t.style);if(i.size!==t.style.size){r=new F.MathNode("mstyle",[r]);var a=i.size===Q.DISPLAY.size?"true":"false";r.setAttribute("displaystyle",a),r.setAttribute("scriptlevel","0")}if(e.leftDelim!=null||e.rightDelim!=null){var l=[];if(e.leftDelim!=null){var s=new F.MathNode("mo",[new F.TextNode(e.leftDelim.replace("\\",""))]);s.setAttribute("fence","true"),l.push(s)}if(l.push(r),e.rightDelim!=null){var o=new F.MathNode("mo",[new F.TextNode(e.rightDelim.replace("\\",""))]);o.setAttribute("fence","true"),l.push(o)}return H0(l)}return r};_({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(e,t)=>{var{parser:r,funcName:n}=e,i=t[0],a=t[1],l,s=null,o=null,u="auto";switch(n){case"\\dfrac":case"\\frac":case"\\tfrac":l=!0;break;case"\\\\atopfrac":l=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":l=!1,s="(",o=")";break;case"\\\\bracefrac":l=!1,s="\\{",o="\\}";break;case"\\\\brackfrac":l=!1,s="[",o="]";break;default:throw new Error("Unrecognized genfrac command")}switch(n){case"\\dfrac":case"\\dbinom":u="display";break;case"\\tfrac":case"\\tbinom":u="text";break}return{type:"genfrac",mode:r.mode,continued:!1,numer:i,denom:a,hasBarLine:l,leftDelim:s,rightDelim:o,size:u,barSize:null}},htmlBuilder:X0,mathmlBuilder:K0});_({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:(e,t)=>{var{parser:r,funcName:n}=e,i=t[0],a=t[1];return{type:"genfrac",mode:r.mode,continued:!0,numer:i,denom:a,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}}});_({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(e){var{parser:t,funcName:r,token:n}=e,i;switch(r){case"\\over":i="\\frac";break;case"\\choose":i="\\binom";break;case"\\atop":i="\\\\atopfrac";break;case"\\brace":i="\\\\bracefrac";break;case"\\brack":i="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:t.mode,replaceWith:i,token:n}}});var pa=["display","text","script","scriptscript"],da=function(t){var r=null;return t.length>0&&(r=t,r=r==="."?null:r),r};_({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(e,t){var{parser:r}=e,n=t[4],i=t[5],a=en(t[0]),l=a.type==="atom"&&a.family==="open"?da(a.text):null,s=en(t[1]),o=s.type==="atom"&&s.family==="close"?da(s.text):null,u=re(t[2],"size"),h,m=null;u.isBlank?h=!0:(m=u.value,h=m.number>0);var d="auto",p=t[3];if(p.type==="ordgroup"){if(p.body.length>0){var y=re(p.body[0],"textord");d=pa[Number(y.text)]}}else p=re(p,"textord"),d=pa[Number(p.text)];return{type:"genfrac",mode:r.mode,numer:n,denom:i,continued:!1,hasBarLine:h,barSize:m,leftDelim:l,rightDelim:o,size:d}},htmlBuilder:X0,mathmlBuilder:K0});_({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(e,t){var{parser:r,funcName:n,token:i}=e;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:re(t[0],"size").value,token:i}}});_({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(e,t)=>{var{parser:r,funcName:n}=e,i=t[0],a=Fm(re(t[1],"infix").size),l=t[2],s=a.number>0;return{type:"genfrac",mode:r.mode,numer:i,denom:l,continued:!1,hasBarLine:s,barSize:a,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:X0,mathmlBuilder:K0});var Es=(e,t)=>{var r=t.style,n,i;e.type==="supsub"?(n=e.sup?oe(e.sup,t.havingStyle(r.sup()),t):oe(e.sub,t.havingStyle(r.sub()),t),i=re(e.base,"horizBrace")):i=re(e,"horizBrace");var a=oe(i.base,t.havingBaseStyle(Q.DISPLAY)),l=wt.svgSpan(i,t),s;if(i.isOver?(s=C.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:a},{type:"kern",size:.1},{type:"elem",elem:l}]},t),s.children[0].children[0].children[1].classes.push("svg-align")):(s=C.makeVList({positionType:"bottom",positionData:a.depth+.1+l.height,children:[{type:"elem",elem:l},{type:"kern",size:.1},{type:"elem",elem:a}]},t),s.children[0].children[0].children[0].classes.push("svg-align")),n){var o=C.makeSpan(["mord",i.isOver?"mover":"munder"],[s],t);i.isOver?s=C.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"kern",size:.2},{type:"elem",elem:n}]},t):s=C.makeVList({positionType:"bottom",positionData:o.depth+.2+n.height+n.depth,children:[{type:"elem",elem:n},{type:"kern",size:.2},{type:"elem",elem:o}]},t)}return C.makeSpan(["mord",i.isOver?"mover":"munder"],[s],t)},l2=(e,t)=>{var r=wt.mathMLnode(e.label);return new F.MathNode(e.isOver?"mover":"munder",[me(e.base,t),r])};_({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:n}=e;return{type:"horizBrace",mode:r.mode,label:n,isOver:/^\\over/.test(n),base:t[0]}},htmlBuilder:Es,mathmlBuilder:l2});_({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=t[1],i=re(t[0],"url").url;return r.settings.isTrusted({command:"\\href",url:i})?{type:"href",mode:r.mode,href:i,body:we(n)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:(e,t)=>{var r=ze(e.body,t,!1);return C.makeAnchor(e.href,[],r,t)},mathmlBuilder:(e,t)=>{var r=Dt(e.body,t);return r instanceof _e||(r=new _e("mrow",[r])),r.setAttribute("href",e.href),r}});_({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=re(t[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");for(var i=[],a=0;a{var{parser:r,funcName:n,token:i}=e,a=re(t[0],"raw").string,l=t[1];r.settings.strict&&r.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var s,o={};switch(n){case"\\htmlClass":o.class=a,s={command:"\\htmlClass",class:a};break;case"\\htmlId":o.id=a,s={command:"\\htmlId",id:a};break;case"\\htmlStyle":o.style=a,s={command:"\\htmlStyle",style:a};break;case"\\htmlData":{for(var u=a.split(","),h=0;h{var r=ze(e.body,t,!1),n=["enclosing"];e.attributes.class&&n.push(...e.attributes.class.trim().split(/\s+/));var i=C.makeSpan(n,r,t);for(var a in e.attributes)a!=="class"&&e.attributes.hasOwnProperty(a)&&i.setAttribute(a,e.attributes[a]);return i},mathmlBuilder:(e,t)=>Dt(e.body,t)});_({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e;return{type:"htmlmathml",mode:r.mode,html:we(t[0]),mathml:we(t[1])}},htmlBuilder:(e,t)=>{var r=ze(e.html,t,!1);return C.makeFragment(r)},mathmlBuilder:(e,t)=>Dt(e.mathml,t)});var _n=function(t){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(t))return{number:+t,unit:"bp"};var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t);if(!r)throw new L("Invalid size: '"+t+"' in \\includegraphics");var n={number:+(r[1]+r[2]),unit:r[3]};if(!Yl(n))throw new L("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n};_({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(e,t,r)=>{var{parser:n}=e,i={number:0,unit:"em"},a={number:.9,unit:"em"},l={number:0,unit:"em"},s="";if(r[0])for(var o=re(r[0],"raw").string,u=o.split(","),h=0;h{var r=ye(e.height,t),n=0;e.totalheight.number>0&&(n=ye(e.totalheight,t)-r);var i=0;e.width.number>0&&(i=ye(e.width,t));var a={height:P(r+n)};i>0&&(a.width=P(i)),n>0&&(a.verticalAlign=P(-n));var l=new lf(e.src,e.alt,a);return l.height=r,l.depth=n,l},mathmlBuilder:(e,t)=>{var r=new F.MathNode("mglyph",[]);r.setAttribute("alt",e.alt);var n=ye(e.height,t),i=0;if(e.totalheight.number>0&&(i=ye(e.totalheight,t)-n,r.setAttribute("valign",P(-i))),r.setAttribute("height",P(n+i)),e.width.number>0){var a=ye(e.width,t);r.setAttribute("width",P(a))}return r.setAttribute("src",e.src),r}});_({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e,i=re(t[0],"size");if(r.settings.strict){var a=n[1]==="m",l=i.value.unit==="mu";a?(l||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, "+("not "+i.value.unit+" units")),r.mode!=="math"&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):l&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:i.value}},htmlBuilder(e,t){return C.makeGlue(e.dimension,t)},mathmlBuilder(e,t){var r=ye(e.dimension,t);return new F.SpaceNode(r)}});_({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r,funcName:n}=e,i=t[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:i}},htmlBuilder:(e,t)=>{var r;e.alignment==="clap"?(r=C.makeSpan([],[oe(e.body,t)]),r=C.makeSpan(["inner"],[r],t)):r=C.makeSpan(["inner"],[oe(e.body,t)]);var n=C.makeSpan(["fix"],[]),i=C.makeSpan([e.alignment],[r,n],t),a=C.makeSpan(["strut"]);return a.style.height=P(i.height+i.depth),i.depth&&(a.style.verticalAlign=P(-i.depth)),i.children.unshift(a),i=C.makeSpan(["thinbox"],[i],t),C.makeSpan(["mord","vbox"],[i],t)},mathmlBuilder:(e,t)=>{var r=new F.MathNode("mpadded",[me(e.body,t)]);if(e.alignment!=="rlap"){var n=e.alignment==="llap"?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r}});_({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){var{funcName:r,parser:n}=e,i=n.mode;n.switchMode("math");var a=r==="\\("?"\\)":"$",l=n.parseExpression(!1,a);return n.expect(a),n.switchMode(i),{type:"styling",mode:n.mode,style:"text",body:l}}});_({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){throw new L("Mismatched "+e.funcName)}});var ga=(e,t)=>{switch(t.style.size){case Q.DISPLAY.size:return e.display;case Q.TEXT.size:return e.text;case Q.SCRIPT.size:return e.script;case Q.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};_({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(e,t)=>{var{parser:r}=e;return{type:"mathchoice",mode:r.mode,display:we(t[0]),text:we(t[1]),script:we(t[2]),scriptscript:we(t[3])}},htmlBuilder:(e,t)=>{var r=ga(e,t),n=ze(r,t,!1);return C.makeFragment(n)},mathmlBuilder:(e,t)=>{var r=ga(e,t);return Dt(r,t)}});var Ds=(e,t,r,n,i,a,l)=>{e=C.makeSpan([],[e]);var s=r&&ue.isCharacterBox(r),o,u;if(t){var h=oe(t,n.havingStyle(i.sup()),n);u={elem:h,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-h.depth)}}if(r){var m=oe(r,n.havingStyle(i.sub()),n);o={elem:m,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-m.height)}}var d;if(u&&o){var p=n.fontMetrics().bigOpSpacing5+o.elem.height+o.elem.depth+o.kern+e.depth+l;d=C.makeVList({positionType:"bottom",positionData:p,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:o.elem,marginLeft:P(-a)},{type:"kern",size:o.kern},{type:"elem",elem:e},{type:"kern",size:u.kern},{type:"elem",elem:u.elem,marginLeft:P(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else if(o){var y=e.height-l;d=C.makeVList({positionType:"top",positionData:y,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:o.elem,marginLeft:P(-a)},{type:"kern",size:o.kern},{type:"elem",elem:e}]},n)}else if(u){var w=e.depth+l;d=C.makeVList({positionType:"bottom",positionData:w,children:[{type:"elem",elem:e},{type:"kern",size:u.kern},{type:"elem",elem:u.elem,marginLeft:P(a)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else return e;var M=[d];if(o&&a!==0&&!s){var S=C.makeSpan(["mspace"],[],n);S.style.marginRight=P(a),M.unshift(S)}return C.makeSpan(["mop","op-limits"],M,n)},Is=["\\smallint"],nr=(e,t)=>{var r,n,i=!1,a;e.type==="supsub"?(r=e.sup,n=e.sub,a=re(e.base,"op"),i=!0):a=re(e,"op");var l=t.style,s=!1;l.size===Q.DISPLAY.size&&a.symbol&&!Is.includes(a.name)&&(s=!0);var o;if(a.symbol){var u=s?"Size2-Regular":"Size1-Regular",h="";if((a.name==="\\oiint"||a.name==="\\oiiint")&&(h=a.name.slice(1),a.name=h==="oiint"?"\\iint":"\\iiint"),o=C.makeSymbol(a.name,u,"math",t,["mop","op-symbol",s?"large-op":"small-op"]),h.length>0){var m=o.italic,d=C.staticSvg(h+"Size"+(s?"2":"1"),t);o=C.makeVList({positionType:"individualShift",children:[{type:"elem",elem:o,shift:0},{type:"elem",elem:d,shift:s?.08:0}]},t),a.name="\\"+h,o.classes.unshift("mop"),o.italic=m}}else if(a.body){var p=ze(a.body,t,!0);p.length===1&&p[0]instanceof Qe?(o=p[0],o.classes[0]="mop"):o=C.makeSpan(["mop"],p,t)}else{for(var y=[],w=1;w{var r;if(e.symbol)r=new _e("mo",[Je(e.name,e.mode)]),Is.includes(e.name)&&r.setAttribute("largeop","false");else if(e.body)r=new _e("mo",Ve(e.body,t));else{r=new _e("mi",[new ot(e.name.slice(1))]);var n=new _e("mo",[Je("⁡","text")]);e.parentIsSupSub?r=new _e("mrow",[r,n]):r=as([r,n])}return r},s2={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨆":"\\bigsqcup"};_({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨄","⨆"],props:{numArgs:0},handler:(e,t)=>{var{parser:r,funcName:n}=e,i=n;return i.length===1&&(i=s2[i]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:i}},htmlBuilder:nr,mathmlBuilder:Er});_({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:we(n)}},htmlBuilder:nr,mathmlBuilder:Er});var o2={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint"};_({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:nr,mathmlBuilder:Er});_({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:nr,mathmlBuilder:Er});_({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","∫","∬","∭","∮","∯","∰"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e,n=r;return n.length===1&&(n=o2[n]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:nr,mathmlBuilder:Er});var Bs=(e,t)=>{var r,n,i=!1,a;e.type==="supsub"?(r=e.sup,n=e.sub,a=re(e.base,"operatorname"),i=!0):a=re(e,"operatorname");var l;if(a.body.length>0){for(var s=a.body.map(m=>{var d=m.text;return typeof d=="string"?{type:"textord",mode:m.mode,text:d}:m}),o=ze(s,t.withFont("mathrm"),!0),u=0;u{for(var r=Ve(e.body,t.withFont("mathrm")),n=!0,i=0;ih.toText()).join("");r=[new F.TextNode(s)]}var o=new F.MathNode("mi",r);o.setAttribute("mathvariant","normal");var u=new F.MathNode("mo",[Je("⁡","text")]);return e.parentIsSupSub?new F.MathNode("mrow",[o,u]):F.newDocumentFragment([o,u])};_({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1},handler:(e,t)=>{var{parser:r,funcName:n}=e,i=t[0];return{type:"operatorname",mode:r.mode,body:we(i),alwaysHandleSupSub:n==="\\operatornamewithlimits",limits:!1,parentIsSupSub:!1}},htmlBuilder:Bs,mathmlBuilder:u2});v("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@");Ht({type:"ordgroup",htmlBuilder(e,t){return e.semisimple?C.makeFragment(ze(e.body,t,!1)):C.makeSpan(["mord"],ze(e.body,t,!0),t)},mathmlBuilder(e,t){return Dt(e.body,t,!0)}});_({type:"overline",names:["\\overline"],props:{numArgs:1},handler(e,t){var{parser:r}=e,n=t[0];return{type:"overline",mode:r.mode,body:n}},htmlBuilder(e,t){var r=oe(e.body,t.havingCrampedStyle()),n=C.makeLineSpan("overline-line",t),i=t.fontMetrics().defaultRuleThickness,a=C.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*i},{type:"elem",elem:n},{type:"kern",size:i}]},t);return C.makeSpan(["mord","overline"],[a],t)},mathmlBuilder(e,t){var r=new F.MathNode("mo",[new F.TextNode("‾")]);r.setAttribute("stretchy","true");var n=new F.MathNode("mover",[me(e.body,t),r]);return n.setAttribute("accent","true"),n}});_({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"phantom",mode:r.mode,body:we(n)}},htmlBuilder:(e,t)=>{var r=ze(e.body,t.withPhantom(),!1);return C.makeFragment(r)},mathmlBuilder:(e,t)=>{var r=Ve(e.body,t);return new F.MathNode("mphantom",r)}});_({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"hphantom",mode:r.mode,body:n}},htmlBuilder:(e,t)=>{var r=C.makeSpan([],[oe(e.body,t.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var n=0;n{var r=Ve(we(e.body),t),n=new F.MathNode("mphantom",r),i=new F.MathNode("mpadded",[n]);return i.setAttribute("height","0px"),i.setAttribute("depth","0px"),i}});_({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,n=t[0];return{type:"vphantom",mode:r.mode,body:n}},htmlBuilder:(e,t)=>{var r=C.makeSpan(["inner"],[oe(e.body,t.withPhantom())]),n=C.makeSpan(["fix"],[]);return C.makeSpan(["mord","rlap"],[r,n],t)},mathmlBuilder:(e,t)=>{var r=Ve(we(e.body),t),n=new F.MathNode("mphantom",r),i=new F.MathNode("mpadded",[n]);return i.setAttribute("width","0px"),i}});_({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e,n=re(t[0],"size").value,i=t[1];return{type:"raisebox",mode:r.mode,dy:n,body:i}},htmlBuilder(e,t){var r=oe(e.body,t),n=ye(e.dy,t);return C.makeVList({positionType:"shift",positionData:-n,children:[{type:"elem",elem:r}]},t)},mathmlBuilder(e,t){var r=new F.MathNode("mpadded",[me(e.body,t)]),n=e.dy.number+e.dy.unit;return r.setAttribute("voffset",n),r}});_({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(e){var{parser:t}=e;return{type:"internal",mode:t.mode}}});_({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(e,t,r){var{parser:n}=e,i=r[0],a=re(t[0],"size"),l=re(t[1],"size");return{type:"rule",mode:n.mode,shift:i&&re(i,"size").value,width:a.value,height:l.value}},htmlBuilder(e,t){var r=C.makeSpan(["mord","rule"],[],t),n=ye(e.width,t),i=ye(e.height,t),a=e.shift?ye(e.shift,t):0;return r.style.borderRightWidth=P(n),r.style.borderTopWidth=P(i),r.style.bottom=P(a),r.width=n,r.height=i+a,r.depth=-a,r.maxFontSize=i*1.125*t.sizeMultiplier,r},mathmlBuilder(e,t){var r=ye(e.width,t),n=ye(e.height,t),i=e.shift?ye(e.shift,t):0,a=t.color&&t.getColor()||"black",l=new F.MathNode("mspace");l.setAttribute("mathbackground",a),l.setAttribute("width",P(r)),l.setAttribute("height",P(n));var s=new F.MathNode("mpadded",[l]);return i>=0?s.setAttribute("height",P(i)):(s.setAttribute("height",P(i)),s.setAttribute("depth",P(-i))),s.setAttribute("voffset",P(i)),s}});function Ns(e,t,r){for(var n=ze(e,t,!1),i=t.sizeMultiplier/r.sizeMultiplier,a=0;a{var r=t.havingSize(e.size);return Ns(e.body,r,t)};_({type:"sizing",names:va,props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{breakOnTokenText:r,funcName:n,parser:i}=e,a=i.parseExpression(!1,r);return{type:"sizing",mode:i.mode,size:va.indexOf(n)+1,body:a}},htmlBuilder:c2,mathmlBuilder:(e,t)=>{var r=t.havingSize(e.size),n=Ve(e.body,r),i=new F.MathNode("mstyle",n);return i.setAttribute("mathsize",P(r.sizeMultiplier)),i}});_({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(e,t,r)=>{var{parser:n}=e,i=!1,a=!1,l=r[0]&&re(r[0],"ordgroup");if(l)for(var s="",o=0;o{var r=C.makeSpan([],[oe(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return r;if(e.smashHeight&&(r.height=0,r.children))for(var n=0;n{var r=new F.MathNode("mpadded",[me(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r}});_({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:n}=e,i=r[0],a=t[0];return{type:"sqrt",mode:n.mode,body:a,index:i}},htmlBuilder(e,t){var r=oe(e.body,t.havingCrampedStyle());r.height===0&&(r.height=t.fontMetrics().xHeight),r=C.wrapFragment(r,t);var n=t.fontMetrics(),i=n.defaultRuleThickness,a=i;t.style.idr.height+r.depth+l&&(l=(l+m-r.height-r.depth)/2);var d=o.height-r.height-l-u;r.style.paddingLeft=P(h);var p=C.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+d)},{type:"elem",elem:o},{type:"kern",size:u}]},t);if(e.index){var y=t.havingStyle(Q.SCRIPTSCRIPT),w=oe(e.index,y,t),M=.6*(p.height-p.depth),S=C.makeVList({positionType:"shift",positionData:-M,children:[{type:"elem",elem:w}]},t),z=C.makeSpan(["root"],[S]);return C.makeSpan(["mord","sqrt"],[z,p],t)}else return C.makeSpan(["mord","sqrt"],[p],t)},mathmlBuilder(e,t){var{body:r,index:n}=e;return n?new F.MathNode("mroot",[me(r,t),me(n,t)]):new F.MathNode("msqrt",[me(r,t)])}});var ya={display:Q.DISPLAY,text:Q.TEXT,script:Q.SCRIPT,scriptscript:Q.SCRIPTSCRIPT};_({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e,t){var{breakOnTokenText:r,funcName:n,parser:i}=e,a=i.parseExpression(!0,r),l=n.slice(1,n.length-5);return{type:"styling",mode:i.mode,style:l,body:a}},htmlBuilder(e,t){var r=ya[e.style],n=t.havingStyle(r).withFont("");return Ns(e.body,n,t)},mathmlBuilder(e,t){var r=ya[e.style],n=t.havingStyle(r),i=Ve(e.body,n),a=new F.MathNode("mstyle",i),l={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]},s=l[e.style];return a.setAttribute("scriptlevel",s[0]),a.setAttribute("displaystyle",s[1]),a}});var h2=function(t,r){var n=t.base;if(n)if(n.type==="op"){var i=n.limits&&(r.style.size===Q.DISPLAY.size||n.alwaysHandleSupSub);return i?nr:null}else if(n.type==="operatorname"){var a=n.alwaysHandleSupSub&&(r.style.size===Q.DISPLAY.size||n.limits);return a?Bs:null}else{if(n.type==="accent")return ue.isCharacterBox(n.base)?$0:null;if(n.type==="horizBrace"){var l=!t.sub;return l===n.isOver?Es:null}else return null}else return null};Ht({type:"supsub",htmlBuilder(e,t){var r=h2(e,t);if(r)return r(e,t);var{base:n,sup:i,sub:a}=e,l=oe(n,t),s,o,u=t.fontMetrics(),h=0,m=0,d=n&&ue.isCharacterBox(n);if(i){var p=t.havingStyle(t.style.sup());s=oe(i,p,t),d||(h=l.height-p.fontMetrics().supDrop*p.sizeMultiplier/t.sizeMultiplier)}if(a){var y=t.havingStyle(t.style.sub());o=oe(a,y,t),d||(m=l.depth+y.fontMetrics().subDrop*y.sizeMultiplier/t.sizeMultiplier)}var w;t.style===Q.DISPLAY?w=u.sup1:t.style.cramped?w=u.sup3:w=u.sup2;var M=t.sizeMultiplier,S=P(.5/u.ptPerEm/M),z=null;if(o){var I=e.base&&e.base.type==="op"&&e.base.name&&(e.base.name==="\\oiint"||e.base.name==="\\oiiint");(l instanceof Qe||I)&&(z=P(-l.italic))}var V;if(s&&o){h=Math.max(h,w,s.depth+.25*u.xHeight),m=Math.max(m,u.sub2);var O=u.defaultRuleThickness,E=4*O;if(h-s.depth-(o.height-m)0&&(h+=G,m-=G)}var K=[{type:"elem",elem:o,shift:m,marginRight:S,marginLeft:z},{type:"elem",elem:s,shift:-h,marginRight:S}];V=C.makeVList({positionType:"individualShift",children:K},t)}else if(o){m=Math.max(m,u.sub1,o.height-.8*u.xHeight);var U=[{type:"elem",elem:o,marginLeft:z,marginRight:S}];V=C.makeVList({positionType:"shift",positionData:m,children:U},t)}else if(s)h=Math.max(h,w,s.depth+.25*u.xHeight),V=C.makeVList({positionType:"shift",positionData:-h,children:[{type:"elem",elem:s,marginRight:S}]},t);else throw new Error("supsub must have either sup or sub.");var D=c0(l,"right")||"mord";return C.makeSpan([D],[l,C.makeSpan(["msupsub"],[V])],t)},mathmlBuilder(e,t){var r=!1,n,i;e.base&&e.base.type==="horizBrace"&&(i=!!e.sup,i===e.base.isOver&&(r=!0,n=e.base.isOver)),e.base&&(e.base.type==="op"||e.base.type==="operatorname")&&(e.base.parentIsSupSub=!0);var a=[me(e.base,t)];e.sub&&a.push(me(e.sub,t)),e.sup&&a.push(me(e.sup,t));var l;if(r)l=n?"mover":"munder";else if(e.sub)if(e.sup){var u=e.base;u&&u.type==="op"&&u.limits&&t.style===Q.DISPLAY||u&&u.type==="operatorname"&&u.alwaysHandleSupSub&&(t.style===Q.DISPLAY||u.limits)?l="munderover":l="msubsup"}else{var o=e.base;o&&o.type==="op"&&o.limits&&(t.style===Q.DISPLAY||o.alwaysHandleSupSub)||o&&o.type==="operatorname"&&o.alwaysHandleSupSub&&(o.limits||t.style===Q.DISPLAY)?l="munder":l="msub"}else{var s=e.base;s&&s.type==="op"&&s.limits&&(t.style===Q.DISPLAY||s.alwaysHandleSupSub)||s&&s.type==="operatorname"&&s.alwaysHandleSupSub&&(s.limits||t.style===Q.DISPLAY)?l="mover":l="msup"}return new F.MathNode(l,a)}});Ht({type:"atom",htmlBuilder(e,t){return C.mathsym(e.text,e.mode,t,["m"+e.family])},mathmlBuilder(e,t){var r=new F.MathNode("mo",[Je(e.text,e.mode)]);if(e.family==="bin"){var n=V0(e,t);n==="bold-italic"&&r.setAttribute("mathvariant",n)}else e.family==="punct"?r.setAttribute("separator","true"):(e.family==="open"||e.family==="close")&&r.setAttribute("stretchy","false");return r}});var Fs={mi:"italic",mn:"normal",mtext:"normal"};Ht({type:"mathord",htmlBuilder(e,t){return C.makeOrd(e,t,"mathord")},mathmlBuilder(e,t){var r=new F.MathNode("mi",[Je(e.text,e.mode,t)]),n=V0(e,t)||"italic";return n!==Fs[r.type]&&r.setAttribute("mathvariant",n),r}});Ht({type:"textord",htmlBuilder(e,t){return C.makeOrd(e,t,"textord")},mathmlBuilder(e,t){var r=Je(e.text,e.mode,t),n=V0(e,t)||"normal",i;return e.mode==="text"?i=new F.MathNode("mtext",[r]):/[0-9]/.test(e.text)?i=new F.MathNode("mn",[r]):e.text==="\\prime"?i=new F.MathNode("mo",[r]):i=new F.MathNode("mi",[r]),n!==Fs[i.type]&&i.setAttribute("mathvariant",n),i}});var Gn={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Wn={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};Ht({type:"spacing",htmlBuilder(e,t){if(Wn.hasOwnProperty(e.text)){var r=Wn[e.text].className||"";if(e.mode==="text"){var n=C.makeOrd(e,t,"textord");return n.classes.push(r),n}else return C.makeSpan(["mspace",r],[C.mathsym(e.text,e.mode,t)],t)}else{if(Gn.hasOwnProperty(e.text))return C.makeSpan(["mspace",Gn[e.text]],[],t);throw new L('Unknown type of space "'+e.text+'"')}},mathmlBuilder(e,t){var r;if(Wn.hasOwnProperty(e.text))r=new F.MathNode("mtext",[new F.TextNode(" ")]);else{if(Gn.hasOwnProperty(e.text))return new F.MathNode("mspace");throw new L('Unknown type of space "'+e.text+'"')}return r}});var ba=()=>{var e=new F.MathNode("mtd",[]);return e.setAttribute("width","50%"),e};Ht({type:"tag",mathmlBuilder(e,t){var r=new F.MathNode("mtable",[new F.MathNode("mtr",[ba(),new F.MathNode("mtd",[Dt(e.body,t)]),ba(),new F.MathNode("mtd",[Dt(e.tag,t)])])]);return r.setAttribute("width","100%"),r}});var xa={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},wa={"\\textbf":"textbf","\\textmd":"textmd"},m2={"\\textit":"textit","\\textup":"textup"},ka=(e,t)=>{var r=e.font;if(r){if(xa[r])return t.withTextFontFamily(xa[r]);if(wa[r])return t.withTextFontWeight(wa[r]);if(r==="\\emph")return t.fontShape==="textit"?t.withTextFontShape("textup"):t.withTextFontShape("textit")}else return t;return t.withTextFontShape(m2[r])};_({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:n}=e,i=t[0];return{type:"text",mode:r.mode,body:we(i),font:n}},htmlBuilder(e,t){var r=ka(e,t),n=ze(e.body,r,!0);return C.makeSpan(["mord","text"],n,r)},mathmlBuilder(e,t){var r=ka(e,t);return Dt(e.body,r)}});_({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"underline",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=oe(e.body,t),n=C.makeLineSpan("underline-line",t),i=t.fontMetrics().defaultRuleThickness,a=C.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:i},{type:"elem",elem:n},{type:"kern",size:3*i},{type:"elem",elem:r}]},t);return C.makeSpan(["mord","underline"],[a],t)},mathmlBuilder(e,t){var r=new F.MathNode("mo",[new F.TextNode("‾")]);r.setAttribute("stretchy","true");var n=new F.MathNode("munder",[me(e.body,t),r]);return n.setAttribute("accentunder","true"),n}});_({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"vcenter",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=oe(e.body,t),n=t.fontMetrics().axisHeight,i=.5*(r.height-n-(r.depth+n));return C.makeVList({positionType:"shift",positionData:i,children:[{type:"elem",elem:r}]},t)},mathmlBuilder(e,t){return new F.MathNode("mpadded",[me(e.body,t)],["vcenter"])}});_({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(e,t,r){throw new L("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(e,t){for(var r=Sa(e),n=[],i=t.havingStyle(t.style.text()),a=0;ae.body.replace(/ /g,e.star?"␣":" "),Mt=ns,Ls=`[ \r + ]`,f2="\\\\[a-zA-Z@]+",p2="\\\\[^\uD800-\uDFFF]",d2="("+f2+")"+Ls+"*",g2=`\\\\( +|[ \r ]+ +?)[ \r ]*`,p0="[̀-ͯ]",v2=new RegExp(p0+"+$"),y2="("+Ls+"+)|"+(g2+"|")+"([!-\\[\\]-‧‪-퟿豈-￿]"+(p0+"*")+"|[\uD800-\uDBFF][\uDC00-\uDFFF]"+(p0+"*")+"|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5"+("|"+d2)+("|"+p2+")");class Aa{constructor(t,r){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=t,this.settings=r,this.tokenRegex=new RegExp(y2,"g"),this.catcodes={"%":14,"~":13}}setCatcode(t,r){this.catcodes[t]=r}lex(){var t=this.input,r=this.tokenRegex.lastIndex;if(r===t.length)return new We("EOF",new qe(this,r,r));var n=this.tokenRegex.exec(t);if(n===null||n.index!==r)throw new L("Unexpected character: '"+t[r]+"'",new We(t[r],new qe(this,r,r+1)));var i=n[6]||n[3]||(n[2]?"\\ ":" ");if(this.catcodes[i]===14){var a=t.indexOf(` +`,this.tokenRegex.lastIndex);return a===-1?(this.tokenRegex.lastIndex=t.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=a+1,this.lex()}return new We(i,new qe(this,r,this.tokenRegex.lastIndex))}}class b2{constructor(t,r){t===void 0&&(t={}),r===void 0&&(r={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=r,this.builtins=t,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(this.undefStack.length===0)throw new L("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var t=this.undefStack.pop();for(var r in t)t.hasOwnProperty(r)&&(t[r]==null?delete this.current[r]:this.current[r]=t[r])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(t){return this.current.hasOwnProperty(t)||this.builtins.hasOwnProperty(t)}get(t){return this.current.hasOwnProperty(t)?this.current[t]:this.builtins[t]}set(t,r,n){if(n===void 0&&(n=!1),n){for(var i=0;i0&&(this.undefStack[this.undefStack.length-1][t]=r)}else{var a=this.undefStack[this.undefStack.length-1];a&&!a.hasOwnProperty(t)&&(a[t]=this.current[t])}r==null?delete this.current[t]:this.current[t]=r}}var x2=As;v("\\noexpand",function(e){var t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}});v("\\expandafter",function(e){var t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}});v("\\@firstoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[0],numArgs:0}});v("\\@secondoftwo",function(e){var t=e.consumeArgs(2);return{tokens:t[1],numArgs:0}});v("\\@ifnextchar",function(e){var t=e.consumeArgs(3);e.consumeSpaces();var r=e.future();return t[0].length===1&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}});v("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}");v("\\TextOrMath",function(e){var t=e.consumeArgs(2);return e.mode==="text"?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}});var Ta={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};v("\\char",function(e){var t=e.popToken(),r,n="";if(t.text==="'")r=8,t=e.popToken();else if(t.text==='"')r=16,t=e.popToken();else if(t.text==="`")if(t=e.popToken(),t.text[0]==="\\")n=t.text.charCodeAt(1);else{if(t.text==="EOF")throw new L("\\char` missing argument");n=t.text.charCodeAt(0)}else r=10;if(r){if(n=Ta[t.text],n==null||n>=r)throw new L("Invalid base-"+r+" digit "+t.text);for(var i;(i=Ta[e.future().text])!=null&&i{var i=e.consumeArg().tokens;if(i.length!==1)throw new L("\\newcommand's first argument must be a macro name");var a=i[0].text,l=e.isDefined(a);if(l&&!t)throw new L("\\newcommand{"+a+"} attempting to redefine "+(a+"; use \\renewcommand"));if(!l&&!r)throw new L("\\renewcommand{"+a+"} when command "+a+" does not yet exist; use \\newcommand");var s=0;if(i=e.consumeArg().tokens,i.length===1&&i[0].text==="["){for(var o="",u=e.expandNextToken();u.text!=="]"&&u.text!=="EOF";)o+=u.text,u=e.expandNextToken();if(!o.match(/^\s*[0-9]+\s*$/))throw new L("Invalid number of arguments: "+o);s=parseInt(o),i=e.consumeArg().tokens}return l&&n||e.macros.set(a,{tokens:i,numArgs:s}),""};v("\\newcommand",e=>Z0(e,!1,!0,!1));v("\\renewcommand",e=>Z0(e,!0,!1,!1));v("\\providecommand",e=>Z0(e,!0,!0,!0));v("\\message",e=>{var t=e.consumeArgs(1)[0];return console.log(t.reverse().map(r=>r.text).join("")),""});v("\\errmessage",e=>{var t=e.consumeArgs(1)[0];return console.error(t.reverse().map(r=>r.text).join("")),""});v("\\show",e=>{var t=e.popToken(),r=t.text;return console.log(t,e.macros.get(r),Mt[r],de.math[r],de.text[r]),""});v("\\bgroup","{");v("\\egroup","}");v("~","\\nobreakspace");v("\\lq","`");v("\\rq","'");v("\\aa","\\r a");v("\\AA","\\r A");v("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`©}");v("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}");v("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`®}");v("ℬ","\\mathscr{B}");v("ℰ","\\mathscr{E}");v("ℱ","\\mathscr{F}");v("ℋ","\\mathscr{H}");v("ℐ","\\mathscr{I}");v("ℒ","\\mathscr{L}");v("ℳ","\\mathscr{M}");v("ℛ","\\mathscr{R}");v("ℭ","\\mathfrak{C}");v("ℌ","\\mathfrak{H}");v("ℨ","\\mathfrak{Z}");v("\\Bbbk","\\Bbb{k}");v("·","\\cdotp");v("\\llap","\\mathllap{\\textrm{#1}}");v("\\rlap","\\mathrlap{\\textrm{#1}}");v("\\clap","\\mathclap{\\textrm{#1}}");v("\\mathstrut","\\vphantom{(}");v("\\underbar","\\underline{\\text{#1}}");v("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}');v("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`≠}}");v("\\ne","\\neq");v("≠","\\neq");v("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`∉}}");v("∉","\\notin");v("≘","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`≘}}");v("≙","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`≘}}");v("≚","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`≚}}");v("≛","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`≛}}");v("≝","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`≝}}");v("≞","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`≞}}");v("≟","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`≟}}");v("⟂","\\perp");v("‼","\\mathclose{!\\mkern-0.8mu!}");v("∌","\\notni");v("⌜","\\ulcorner");v("⌝","\\urcorner");v("⌞","\\llcorner");v("⌟","\\lrcorner");v("©","\\copyright");v("®","\\textregistered");v("️","\\textregistered");v("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}');v("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}');v("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}');v("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}');v("\\vdots","{\\varvdots\\rule{0pt}{15pt}}");v("⋮","\\vdots");v("\\varGamma","\\mathit{\\Gamma}");v("\\varDelta","\\mathit{\\Delta}");v("\\varTheta","\\mathit{\\Theta}");v("\\varLambda","\\mathit{\\Lambda}");v("\\varXi","\\mathit{\\Xi}");v("\\varPi","\\mathit{\\Pi}");v("\\varSigma","\\mathit{\\Sigma}");v("\\varUpsilon","\\mathit{\\Upsilon}");v("\\varPhi","\\mathit{\\Phi}");v("\\varPsi","\\mathit{\\Psi}");v("\\varOmega","\\mathit{\\Omega}");v("\\substack","\\begin{subarray}{c}#1\\end{subarray}");v("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax");v("\\boxed","\\fbox{$\\displaystyle{#1}$}");v("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;");v("\\implies","\\DOTSB\\;\\Longrightarrow\\;");v("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;");v("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}");v("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var za={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};v("\\dots",function(e){var t="\\dotso",r=e.expandAfterFuture().text;return r in za?t=za[r]:(r.slice(0,4)==="\\not"||r in de.math&&["bin","rel"].includes(de.math[r].group))&&(t="\\dotsb"),t});var Q0={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};v("\\dotso",function(e){var t=e.future().text;return t in Q0?"\\ldots\\,":"\\ldots"});v("\\dotsc",function(e){var t=e.future().text;return t in Q0&&t!==","?"\\ldots\\,":"\\ldots"});v("\\cdots",function(e){var t=e.future().text;return t in Q0?"\\@cdots\\,":"\\@cdots"});v("\\dotsb","\\cdots");v("\\dotsm","\\cdots");v("\\dotsi","\\!\\cdots");v("\\dotsx","\\ldots\\,");v("\\DOTSI","\\relax");v("\\DOTSB","\\relax");v("\\DOTSX","\\relax");v("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax");v("\\,","\\tmspace+{3mu}{.1667em}");v("\\thinspace","\\,");v("\\>","\\mskip{4mu}");v("\\:","\\tmspace+{4mu}{.2222em}");v("\\medspace","\\:");v("\\;","\\tmspace+{5mu}{.2777em}");v("\\thickspace","\\;");v("\\!","\\tmspace-{3mu}{.1667em}");v("\\negthinspace","\\!");v("\\negmedspace","\\tmspace-{4mu}{.2222em}");v("\\negthickspace","\\tmspace-{5mu}{.277em}");v("\\enspace","\\kern.5em ");v("\\enskip","\\hskip.5em\\relax");v("\\quad","\\hskip1em\\relax");v("\\qquad","\\hskip2em\\relax");v("\\tag","\\@ifstar\\tag@literal\\tag@paren");v("\\tag@paren","\\tag@literal{({#1})}");v("\\tag@literal",e=>{if(e.macros.get("\\df@tag"))throw new L("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"});v("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}");v("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)");v("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}");v("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1");v("\\newline","\\\\\\relax");v("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var Rs=P(st["Main-Regular"][84][1]-.7*st["Main-Regular"][65][1]);v("\\LaTeX","\\textrm{\\html@mathml{"+("L\\kern-.36em\\raisebox{"+Rs+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{LaTeX}}");v("\\KaTeX","\\textrm{\\html@mathml{"+("K\\kern-.17em\\raisebox{"+Rs+"}{\\scriptstyle A}")+"\\kern-.15em\\TeX}{KaTeX}}");v("\\hspace","\\@ifstar\\@hspacer\\@hspace");v("\\@hspace","\\hskip #1\\relax");v("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax");v("\\ordinarycolon",":");v("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}");v("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}');v("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}');v("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}');v("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}');v("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}');v("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}');v("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}');v("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}');v("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}');v("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}');v("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}');v("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}');v("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}');v("∷","\\dblcolon");v("∹","\\eqcolon");v("≔","\\coloneqq");v("≕","\\eqqcolon");v("⩴","\\Coloneqq");v("\\ratio","\\vcentcolon");v("\\coloncolon","\\dblcolon");v("\\colonequals","\\coloneqq");v("\\coloncolonequals","\\Coloneqq");v("\\equalscolon","\\eqqcolon");v("\\equalscoloncolon","\\Eqqcolon");v("\\colonminus","\\coloneq");v("\\coloncolonminus","\\Coloneq");v("\\minuscolon","\\eqcolon");v("\\minuscoloncolon","\\Eqcolon");v("\\coloncolonapprox","\\Colonapprox");v("\\coloncolonsim","\\Colonsim");v("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}");v("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}");v("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}");v("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}");v("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`∌}}");v("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}");v("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}");v("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}");v("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}");v("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}");v("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}");v("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}");v("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}");v("\\gvertneqq","\\html@mathml{\\@gvertneqq}{≩}");v("\\lvertneqq","\\html@mathml{\\@lvertneqq}{≨}");v("\\ngeqq","\\html@mathml{\\@ngeqq}{≱}");v("\\ngeqslant","\\html@mathml{\\@ngeqslant}{≱}");v("\\nleqq","\\html@mathml{\\@nleqq}{≰}");v("\\nleqslant","\\html@mathml{\\@nleqslant}{≰}");v("\\nshortmid","\\html@mathml{\\@nshortmid}{∤}");v("\\nshortparallel","\\html@mathml{\\@nshortparallel}{∦}");v("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{⊈}");v("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{⊉}");v("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{⊊}");v("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{⫋}");v("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{⊋}");v("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{⫌}");v("\\imath","\\html@mathml{\\@imath}{ı}");v("\\jmath","\\html@mathml{\\@jmath}{ȷ}");v("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`⟦}}");v("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`⟧}}");v("⟦","\\llbracket");v("⟧","\\rrbracket");v("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`⦃}}");v("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`⦄}}");v("⦃","\\lBrace");v("⦄","\\rBrace");v("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`⦵}}");v("⦵","\\minuso");v("\\darr","\\downarrow");v("\\dArr","\\Downarrow");v("\\Darr","\\Downarrow");v("\\lang","\\langle");v("\\rang","\\rangle");v("\\uarr","\\uparrow");v("\\uArr","\\Uparrow");v("\\Uarr","\\Uparrow");v("\\N","\\mathbb{N}");v("\\R","\\mathbb{R}");v("\\Z","\\mathbb{Z}");v("\\alef","\\aleph");v("\\alefsym","\\aleph");v("\\Alpha","\\mathrm{A}");v("\\Beta","\\mathrm{B}");v("\\bull","\\bullet");v("\\Chi","\\mathrm{X}");v("\\clubs","\\clubsuit");v("\\cnums","\\mathbb{C}");v("\\Complex","\\mathbb{C}");v("\\Dagger","\\ddagger");v("\\diamonds","\\diamondsuit");v("\\empty","\\emptyset");v("\\Epsilon","\\mathrm{E}");v("\\Eta","\\mathrm{H}");v("\\exist","\\exists");v("\\harr","\\leftrightarrow");v("\\hArr","\\Leftrightarrow");v("\\Harr","\\Leftrightarrow");v("\\hearts","\\heartsuit");v("\\image","\\Im");v("\\infin","\\infty");v("\\Iota","\\mathrm{I}");v("\\isin","\\in");v("\\Kappa","\\mathrm{K}");v("\\larr","\\leftarrow");v("\\lArr","\\Leftarrow");v("\\Larr","\\Leftarrow");v("\\lrarr","\\leftrightarrow");v("\\lrArr","\\Leftrightarrow");v("\\Lrarr","\\Leftrightarrow");v("\\Mu","\\mathrm{M}");v("\\natnums","\\mathbb{N}");v("\\Nu","\\mathrm{N}");v("\\Omicron","\\mathrm{O}");v("\\plusmn","\\pm");v("\\rarr","\\rightarrow");v("\\rArr","\\Rightarrow");v("\\Rarr","\\Rightarrow");v("\\real","\\Re");v("\\reals","\\mathbb{R}");v("\\Reals","\\mathbb{R}");v("\\Rho","\\mathrm{P}");v("\\sdot","\\cdot");v("\\sect","\\S");v("\\spades","\\spadesuit");v("\\sub","\\subset");v("\\sube","\\subseteq");v("\\supe","\\supseteq");v("\\Tau","\\mathrm{T}");v("\\thetasym","\\vartheta");v("\\weierp","\\wp");v("\\Zeta","\\mathrm{Z}");v("\\argmin","\\DOTSB\\operatorname*{arg\\,min}");v("\\argmax","\\DOTSB\\operatorname*{arg\\,max}");v("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits");v("\\bra","\\mathinner{\\langle{#1}|}");v("\\ket","\\mathinner{|{#1}\\rangle}");v("\\braket","\\mathinner{\\langle{#1}\\rangle}");v("\\Bra","\\left\\langle#1\\right|");v("\\Ket","\\left|#1\\right\\rangle");var Ps=e=>t=>{var r=t.consumeArg().tokens,n=t.consumeArg().tokens,i=t.consumeArg().tokens,a=t.consumeArg().tokens,l=t.macros.get("|"),s=t.macros.get("\\|");t.macros.beginGroup();var o=m=>d=>{e&&(d.macros.set("|",l),i.length&&d.macros.set("\\|",s));var p=m;if(!m&&i.length){var y=d.future();y.text==="|"&&(d.popToken(),p=!0)}return{tokens:p?i:n,numArgs:0}};t.macros.set("|",o(!1)),i.length&&t.macros.set("\\|",o(!0));var u=t.consumeArg().tokens,h=t.expandTokens([...a,...u,...r]);return t.macros.endGroup(),{tokens:h.reverse(),numArgs:0}};v("\\bra@ket",Ps(!1));v("\\bra@set",Ps(!0));v("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}");v("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}");v("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}");v("\\angln","{\\angl n}");v("\\blue","\\textcolor{##6495ed}{#1}");v("\\orange","\\textcolor{##ffa500}{#1}");v("\\pink","\\textcolor{##ff00af}{#1}");v("\\red","\\textcolor{##df0030}{#1}");v("\\green","\\textcolor{##28ae7b}{#1}");v("\\gray","\\textcolor{gray}{#1}");v("\\purple","\\textcolor{##9d38bd}{#1}");v("\\blueA","\\textcolor{##ccfaff}{#1}");v("\\blueB","\\textcolor{##80f6ff}{#1}");v("\\blueC","\\textcolor{##63d9ea}{#1}");v("\\blueD","\\textcolor{##11accd}{#1}");v("\\blueE","\\textcolor{##0c7f99}{#1}");v("\\tealA","\\textcolor{##94fff5}{#1}");v("\\tealB","\\textcolor{##26edd5}{#1}");v("\\tealC","\\textcolor{##01d1c1}{#1}");v("\\tealD","\\textcolor{##01a995}{#1}");v("\\tealE","\\textcolor{##208170}{#1}");v("\\greenA","\\textcolor{##b6ffb0}{#1}");v("\\greenB","\\textcolor{##8af281}{#1}");v("\\greenC","\\textcolor{##74cf70}{#1}");v("\\greenD","\\textcolor{##1fab54}{#1}");v("\\greenE","\\textcolor{##0d923f}{#1}");v("\\goldA","\\textcolor{##ffd0a9}{#1}");v("\\goldB","\\textcolor{##ffbb71}{#1}");v("\\goldC","\\textcolor{##ff9c39}{#1}");v("\\goldD","\\textcolor{##e07d10}{#1}");v("\\goldE","\\textcolor{##a75a05}{#1}");v("\\redA","\\textcolor{##fca9a9}{#1}");v("\\redB","\\textcolor{##ff8482}{#1}");v("\\redC","\\textcolor{##f9685d}{#1}");v("\\redD","\\textcolor{##e84d39}{#1}");v("\\redE","\\textcolor{##bc2612}{#1}");v("\\maroonA","\\textcolor{##ffbde0}{#1}");v("\\maroonB","\\textcolor{##ff92c6}{#1}");v("\\maroonC","\\textcolor{##ed5fa6}{#1}");v("\\maroonD","\\textcolor{##ca337c}{#1}");v("\\maroonE","\\textcolor{##9e034e}{#1}");v("\\purpleA","\\textcolor{##ddd7ff}{#1}");v("\\purpleB","\\textcolor{##c6b9fc}{#1}");v("\\purpleC","\\textcolor{##aa87ff}{#1}");v("\\purpleD","\\textcolor{##7854ab}{#1}");v("\\purpleE","\\textcolor{##543b78}{#1}");v("\\mintA","\\textcolor{##f5f9e8}{#1}");v("\\mintB","\\textcolor{##edf2df}{#1}");v("\\mintC","\\textcolor{##e0e5cc}{#1}");v("\\grayA","\\textcolor{##f6f7f7}{#1}");v("\\grayB","\\textcolor{##f0f1f2}{#1}");v("\\grayC","\\textcolor{##e3e5e6}{#1}");v("\\grayD","\\textcolor{##d6d8da}{#1}");v("\\grayE","\\textcolor{##babec2}{#1}");v("\\grayF","\\textcolor{##888d93}{#1}");v("\\grayG","\\textcolor{##626569}{#1}");v("\\grayH","\\textcolor{##3b3e40}{#1}");v("\\grayI","\\textcolor{##21242c}{#1}");v("\\kaBlue","\\textcolor{##314453}{#1}");v("\\kaGreen","\\textcolor{##71B307}{#1}");var Os={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class w2{constructor(t,r,n){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=r,this.expansionCount=0,this.feed(t),this.macros=new b2(x2,r.macros),this.mode=n,this.stack=[]}feed(t){this.lexer=new Aa(t,this.settings)}switchMode(t){this.mode=t}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return this.stack.length===0&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(t){this.stack.push(t)}pushTokens(t){this.stack.push(...t)}scanArgument(t){var r,n,i;if(t){if(this.consumeSpaces(),this.future().text!=="[")return null;r=this.popToken(),{tokens:i,end:n}=this.consumeArg(["]"])}else({tokens:i,start:r,end:n}=this.consumeArg());return this.pushToken(new We("EOF",n.loc)),this.pushTokens(i),new We("",qe.range(r,n))}consumeSpaces(){for(;;){var t=this.future();if(t.text===" ")this.stack.pop();else break}}consumeArg(t){var r=[],n=t&&t.length>0;n||this.consumeSpaces();var i=this.future(),a,l=0,s=0;do{if(a=this.popToken(),r.push(a),a.text==="{")++l;else if(a.text==="}"){if(--l,l===-1)throw new L("Extra }",a)}else if(a.text==="EOF")throw new L("Unexpected end of input in a macro argument, expected '"+(t&&n?t[s]:"}")+"'",a);if(t&&n)if((l===0||l===1&&t[s]==="{")&&a.text===t[s]){if(++s,s===t.length){r.splice(-s,s);break}}else s=0}while(l!==0||n);return i.text==="{"&&r[r.length-1].text==="}"&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:i,end:a}}consumeArgs(t,r){if(r){if(r.length!==t+1)throw new L("The length of delimiters doesn't match the number of args!");for(var n=r[0],i=0;ithis.settings.maxExpand)throw new L("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(t){var r=this.popToken(),n=r.text,i=r.noexpand?null:this._getExpansion(n);if(i==null||t&&i.unexpandable){if(t&&i==null&&n[0]==="\\"&&!this.isDefined(n))throw new L("Undefined control sequence: "+n);return this.pushToken(r),!1}this.countExpansion(1);var a=i.tokens,l=this.consumeArgs(i.numArgs,i.delimiters);if(i.numArgs){a=a.slice();for(var s=a.length-1;s>=0;--s){var o=a[s];if(o.text==="#"){if(s===0)throw new L("Incomplete placeholder at end of macro body",o);if(o=a[--s],o.text==="#")a.splice(s+1,1);else if(/^[1-9]$/.test(o.text))a.splice(s,2,...l[+o.text-1]);else throw new L("Not a valid argument number",o)}}}return this.pushTokens(a),a.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(this.expandOnce()===!1){var t=this.stack.pop();return t.treatAsRelax&&(t.text="\\relax"),t}throw new Error}expandMacro(t){return this.macros.has(t)?this.expandTokens([new We(t)]):void 0}expandTokens(t){var r=[],n=this.stack.length;for(this.pushTokens(t);this.stack.length>n;)if(this.expandOnce(!0)===!1){var i=this.stack.pop();i.treatAsRelax&&(i.noexpand=!1,i.treatAsRelax=!1),r.push(i)}return this.countExpansion(r.length),r}expandMacroAsText(t){var r=this.expandMacro(t);return r&&r.map(n=>n.text).join("")}_getExpansion(t){var r=this.macros.get(t);if(r==null)return r;if(t.length===1){var n=this.lexer.catcodes[t];if(n!=null&&n!==13)return}var i=typeof r=="function"?r(this):r;if(typeof i=="string"){var a=0;if(i.indexOf("#")!==-1)for(var l=i.replace(/##/g,"");l.indexOf("#"+(a+1))!==-1;)++a;for(var s=new Aa(i,this.settings),o=[],u=s.lex();u.text!=="EOF";)o.push(u),u=s.lex();o.reverse();var h={tokens:o,numArgs:a};return h}return i}isDefined(t){return this.macros.has(t)||Mt.hasOwnProperty(t)||de.math.hasOwnProperty(t)||de.text.hasOwnProperty(t)||Os.hasOwnProperty(t)}isExpandable(t){var r=this.macros.get(t);return r!=null?typeof r=="string"||typeof r=="function"||!r.unexpandable:Mt.hasOwnProperty(t)&&!Mt[t].primitive}}var Ma=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,jr=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g",ʰ:"h","ⁱ":"i",ʲ:"j","ᵏ":"k",ˡ:"l","ᵐ":"m",ⁿ:"n","ᵒ":"o","ᵖ":"p",ʳ:"r",ˢ:"s","ᵗ":"t","ᵘ":"u","ᵛ":"v",ʷ:"w",ˣ:"x",ʸ:"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),Yn={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},Ca={á:"á",à:"à",ä:"ä",ǟ:"ǟ",ã:"ã",ā:"ā",ă:"ă",ắ:"ắ",ằ:"ằ",ẵ:"ẵ",ǎ:"ǎ",â:"â",ấ:"ấ",ầ:"ầ",ẫ:"ẫ",ȧ:"ȧ",ǡ:"ǡ",å:"å",ǻ:"ǻ",ḃ:"ḃ",ć:"ć",ḉ:"ḉ",č:"č",ĉ:"ĉ",ċ:"ċ",ç:"ç",ď:"ď",ḋ:"ḋ",ḑ:"ḑ",é:"é",è:"è",ë:"ë",ẽ:"ẽ",ē:"ē",ḗ:"ḗ",ḕ:"ḕ",ĕ:"ĕ",ḝ:"ḝ",ě:"ě",ê:"ê",ế:"ế",ề:"ề",ễ:"ễ",ė:"ė",ȩ:"ȩ",ḟ:"ḟ",ǵ:"ǵ",ḡ:"ḡ",ğ:"ğ",ǧ:"ǧ",ĝ:"ĝ",ġ:"ġ",ģ:"ģ",ḧ:"ḧ",ȟ:"ȟ",ĥ:"ĥ",ḣ:"ḣ",ḩ:"ḩ",í:"í",ì:"ì",ï:"ï",ḯ:"ḯ",ĩ:"ĩ",ī:"ī",ĭ:"ĭ",ǐ:"ǐ",î:"î",ǰ:"ǰ",ĵ:"ĵ",ḱ:"ḱ",ǩ:"ǩ",ķ:"ķ",ĺ:"ĺ",ľ:"ľ",ļ:"ļ",ḿ:"ḿ",ṁ:"ṁ",ń:"ń",ǹ:"ǹ",ñ:"ñ",ň:"ň",ṅ:"ṅ",ņ:"ņ",ó:"ó",ò:"ò",ö:"ö",ȫ:"ȫ",õ:"õ",ṍ:"ṍ",ṏ:"ṏ",ȭ:"ȭ",ō:"ō",ṓ:"ṓ",ṑ:"ṑ",ŏ:"ŏ",ǒ:"ǒ",ô:"ô",ố:"ố",ồ:"ồ",ỗ:"ỗ",ȯ:"ȯ",ȱ:"ȱ",ő:"ő",ṕ:"ṕ",ṗ:"ṗ",ŕ:"ŕ",ř:"ř",ṙ:"ṙ",ŗ:"ŗ",ś:"ś",ṥ:"ṥ",š:"š",ṧ:"ṧ",ŝ:"ŝ",ṡ:"ṡ",ş:"ş",ẗ:"ẗ",ť:"ť",ṫ:"ṫ",ţ:"ţ",ú:"ú",ù:"ù",ü:"ü",ǘ:"ǘ",ǜ:"ǜ",ǖ:"ǖ",ǚ:"ǚ",ũ:"ũ",ṹ:"ṹ",ū:"ū",ṻ:"ṻ",ŭ:"ŭ",ǔ:"ǔ",û:"û",ů:"ů",ű:"ű",ṽ:"ṽ",ẃ:"ẃ",ẁ:"ẁ",ẅ:"ẅ",ŵ:"ŵ",ẇ:"ẇ",ẘ:"ẘ",ẍ:"ẍ",ẋ:"ẋ",ý:"ý",ỳ:"ỳ",ÿ:"ÿ",ỹ:"ỹ",ȳ:"ȳ",ŷ:"ŷ",ẏ:"ẏ",ẙ:"ẙ",ź:"ź",ž:"ž",ẑ:"ẑ",ż:"ż",Á:"Á",À:"À",Ä:"Ä",Ǟ:"Ǟ",Ã:"Ã",Ā:"Ā",Ă:"Ă",Ắ:"Ắ",Ằ:"Ằ",Ẵ:"Ẵ",Ǎ:"Ǎ",Â:"Â",Ấ:"Ấ",Ầ:"Ầ",Ẫ:"Ẫ",Ȧ:"Ȧ",Ǡ:"Ǡ",Å:"Å",Ǻ:"Ǻ",Ḃ:"Ḃ",Ć:"Ć",Ḉ:"Ḉ",Č:"Č",Ĉ:"Ĉ",Ċ:"Ċ",Ç:"Ç",Ď:"Ď",Ḋ:"Ḋ",Ḑ:"Ḑ",É:"É",È:"È",Ë:"Ë",Ẽ:"Ẽ",Ē:"Ē",Ḗ:"Ḗ",Ḕ:"Ḕ",Ĕ:"Ĕ",Ḝ:"Ḝ",Ě:"Ě",Ê:"Ê",Ế:"Ế",Ề:"Ề",Ễ:"Ễ",Ė:"Ė",Ȩ:"Ȩ",Ḟ:"Ḟ",Ǵ:"Ǵ",Ḡ:"Ḡ",Ğ:"Ğ",Ǧ:"Ǧ",Ĝ:"Ĝ",Ġ:"Ġ",Ģ:"Ģ",Ḧ:"Ḧ",Ȟ:"Ȟ",Ĥ:"Ĥ",Ḣ:"Ḣ",Ḩ:"Ḩ",Í:"Í",Ì:"Ì",Ï:"Ï",Ḯ:"Ḯ",Ĩ:"Ĩ",Ī:"Ī",Ĭ:"Ĭ",Ǐ:"Ǐ",Î:"Î",İ:"İ",Ĵ:"Ĵ",Ḱ:"Ḱ",Ǩ:"Ǩ",Ķ:"Ķ",Ĺ:"Ĺ",Ľ:"Ľ",Ļ:"Ļ",Ḿ:"Ḿ",Ṁ:"Ṁ",Ń:"Ń",Ǹ:"Ǹ",Ñ:"Ñ",Ň:"Ň",Ṅ:"Ṅ",Ņ:"Ņ",Ó:"Ó",Ò:"Ò",Ö:"Ö",Ȫ:"Ȫ",Õ:"Õ",Ṍ:"Ṍ",Ṏ:"Ṏ",Ȭ:"Ȭ",Ō:"Ō",Ṓ:"Ṓ",Ṑ:"Ṑ",Ŏ:"Ŏ",Ǒ:"Ǒ",Ô:"Ô",Ố:"Ố",Ồ:"Ồ",Ỗ:"Ỗ",Ȯ:"Ȯ",Ȱ:"Ȱ",Ő:"Ő",Ṕ:"Ṕ",Ṗ:"Ṗ",Ŕ:"Ŕ",Ř:"Ř",Ṙ:"Ṙ",Ŗ:"Ŗ",Ś:"Ś",Ṥ:"Ṥ",Š:"Š",Ṧ:"Ṧ",Ŝ:"Ŝ",Ṡ:"Ṡ",Ş:"Ş",Ť:"Ť",Ṫ:"Ṫ",Ţ:"Ţ",Ú:"Ú",Ù:"Ù",Ü:"Ü",Ǘ:"Ǘ",Ǜ:"Ǜ",Ǖ:"Ǖ",Ǚ:"Ǚ",Ũ:"Ũ",Ṹ:"Ṹ",Ū:"Ū",Ṻ:"Ṻ",Ŭ:"Ŭ",Ǔ:"Ǔ",Û:"Û",Ů:"Ů",Ű:"Ű",Ṽ:"Ṽ",Ẃ:"Ẃ",Ẁ:"Ẁ",Ẅ:"Ẅ",Ŵ:"Ŵ",Ẇ:"Ẇ",Ẍ:"Ẍ",Ẋ:"Ẋ",Ý:"Ý",Ỳ:"Ỳ",Ÿ:"Ÿ",Ỹ:"Ỹ",Ȳ:"Ȳ",Ŷ:"Ŷ",Ẏ:"Ẏ",Ź:"Ź",Ž:"Ž",Ẑ:"Ẑ",Ż:"Ż",ά:"ά",ὰ:"ὰ",ᾱ:"ᾱ",ᾰ:"ᾰ",έ:"έ",ὲ:"ὲ",ή:"ή",ὴ:"ὴ",ί:"ί",ὶ:"ὶ",ϊ:"ϊ",ΐ:"ΐ",ῒ:"ῒ",ῑ:"ῑ",ῐ:"ῐ",ό:"ό",ὸ:"ὸ",ύ:"ύ",ὺ:"ὺ",ϋ:"ϋ",ΰ:"ΰ",ῢ:"ῢ",ῡ:"ῡ",ῠ:"ῠ",ώ:"ώ",ὼ:"ὼ",Ύ:"Ύ",Ὺ:"Ὺ",Ϋ:"Ϋ",Ῡ:"Ῡ",Ῠ:"Ῠ",Ώ:"Ώ",Ὼ:"Ὼ"};class fn{constructor(t,r){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new w2(t,r,this.mode),this.settings=r,this.leftrightDepth=0}expect(t,r){if(r===void 0&&(r=!0),this.fetch().text!==t)throw new L("Expected '"+t+"', got '"+this.fetch().text+"'",this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return this.nextToken==null&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(t){this.mode=t,this.gullet.switchMode(t)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var t=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),t}finally{this.gullet.endGroups()}}subparse(t){var r=this.nextToken;this.consume(),this.gullet.pushToken(new We("}")),this.gullet.pushTokens(t);var n=this.parseExpression(!1);return this.expect("}"),this.nextToken=r,n}parseExpression(t,r){for(var n=[];;){this.mode==="math"&&this.consumeSpaces();var i=this.fetch();if(fn.endOfExpression.indexOf(i.text)!==-1||r&&i.text===r||t&&Mt[i.text]&&Mt[i.text].infix)break;var a=this.parseAtom(r);if(a){if(a.type==="internal")continue}else break;n.push(a)}return this.mode==="text"&&this.formLigatures(n),this.handleInfixNodes(n)}handleInfixNodes(t){for(var r=-1,n,i=0;i=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+r[0]+'" used in math mode',t);var s=de[this.mode][r].group,o=qe.range(t),u;if(uf.hasOwnProperty(s)){var h=s;u={type:"atom",mode:this.mode,family:h,loc:o,text:r}}else u={type:s,mode:this.mode,loc:o,text:r};l=u}else if(r.charCodeAt(0)>=128)this.settings.strict&&(Wl(r.charCodeAt(0))?this.mode==="math"&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+r[0]+'" used in math mode',t):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+r[0]+'"'+(" ("+r.charCodeAt(0)+")"),t)),l={type:"textord",mode:"text",loc:qe.range(t),text:r};else return null;if(this.consume(),a)for(var m=0;mu&&(u=h):h&&(u!==void 0&&u>-1&&o.push(` +`.repeat(u)||" "),u=-1,o.push(h))}return o.join("")}function _s(e,t,r){return e.type==="element"?Z2(e,t,r):e.type==="text"?r.whitespace==="normal"?Gs(e,r):Q2(e):[]}function Z2(e,t,r){const n=Ws(e,r),i=e.children||[];let a=-1,l=[];if(X2(e))return l;let s,o;for(g0(e)||Pa(e)&&Na(t,e,Pa)?o=` +`:Y2(e)?(s=2,o=2):Us(e)&&(s=1,o=1);++a=0;)c=Qt(e,t,n,r,u+1,i+1,a),c>f&&(u===o?c*=Sn:xi.test(e.charAt(u-1))?(c*=ki,p=e.slice(o,u-1).match(Ni),p&&o>0&&(c*=Math.pow(Ht,p.length))):Pi.test(e.charAt(u-1))?(c*=Ei,h=e.slice(o,u-1).match(ur),h&&o>0&&(c*=Math.pow(Ht,h.length))):(c*=Ci,o>0&&(c*=Math.pow(Ht,u-o))),e.charAt(u)!==t.charAt(i)&&(c*=Ti)),(c<$t&&n.charAt(u-1)===r.charAt(i+1)||r.charAt(i+1)===r.charAt(i)&&n.charAt(u-1)!==r.charAt(i))&&(d=Qt(e,t,n,r,u+1,i+2,a),d*$t>c&&(c=d*$t)),c>f&&(f=c),u=n.indexOf(l,u+1);return a[s]=f,f}function En(e){return e.toLowerCase().replace(ur," ")}function Di(e,t,n){return e=n&&n.length>0?`${e+" "+n.join(" ")}`:e,Qt(e,t,En(e),En(t),0,0,{})}var Ii=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],_e=Ii.reduce((e,t)=>{const n=Lo(`Primitive.${t}`),r=b.forwardRef((o,i)=>{const{asChild:a,...s}=o,l=a?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),zo.jsx(l,{...s,ref:i})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{}),nt='[cmdk-group=""]',Ut='[cmdk-group-items=""]',Ri='[cmdk-group-heading=""]',fr='[cmdk-item=""]',kn=`${fr}:not([aria-disabled="true"])`,en="cmdk-item-select",qe="data-value",Wi=(e,t,n)=>Di(e,t,n),dr=b.createContext(void 0),dt=()=>b.useContext(dr),pr=b.createContext(void 0),cn=()=>b.useContext(pr),hr=b.createContext(void 0),mr=b.forwardRef((e,t)=>{let n=Ge(()=>{var k,W;return{search:"",value:(W=(k=e.value)!=null?k:e.defaultValue)!=null?W:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),r=Ge(()=>new Set),o=Ge(()=>new Map),i=Ge(()=>new Map),a=Ge(()=>new Set),s=yr(e),{label:l,children:u,value:f,onValueChange:c,filter:d,shouldFilter:p,loop:h,disablePointerSelection:v=!1,vimBindings:O=!0,...y}=e,m=Ve(),S=Ve(),D=Ve(),E=b.useRef(null),C=Yi();Be(()=>{if(f!==void 0){let k=f.trim();n.current.value=k,M.emit()}},[f]),Be(()=>{C(6,Me)},[]);let M=b.useMemo(()=>({subscribe:k=>(a.current.add(k),()=>a.current.delete(k)),snapshot:()=>n.current,setState:(k,W,F)=>{var R,U,G,ee;if(!Object.is(n.current[k],W)){if(n.current[k]=W,k==="search")re(),Y(),C(1,Q);else if(k==="value"){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let X=document.getElementById(D);X?X.focus():(R=document.getElementById(m))==null||R.focus()}if(C(7,()=>{var X;n.current.selectedItemId=(X=le())==null?void 0:X.id,M.emit()}),F||C(5,Me),((U=s.current)==null?void 0:U.value)!==void 0){let X=W??"";(ee=(G=s.current).onValueChange)==null||ee.call(G,X);return}}M.emit()}},emit:()=>{a.current.forEach(k=>k())}}),[]),j=b.useMemo(()=>({value:(k,W,F)=>{var R;W!==((R=i.current.get(k))==null?void 0:R.value)&&(i.current.set(k,{value:W,keywords:F}),n.current.filtered.items.set(k,J(W,F)),C(2,()=>{Y(),M.emit()}))},item:(k,W)=>(r.current.add(k),W&&(o.current.has(W)?o.current.get(W).add(k):o.current.set(W,new Set([k]))),C(3,()=>{re(),Y(),n.current.value||Q(),M.emit()}),()=>{i.current.delete(k),r.current.delete(k),n.current.filtered.items.delete(k);let F=le();C(4,()=>{re(),F?.getAttribute("id")===k&&Q(),M.emit()})}),group:k=>(o.current.has(k)||o.current.set(k,new Set),()=>{i.current.delete(k),o.current.delete(k)}),filter:()=>s.current.shouldFilter,label:l||e["aria-label"],getDisablePointerSelection:()=>s.current.disablePointerSelection,listId:m,inputId:D,labelId:S,listInnerRef:E}),[]);function J(k,W){var F,R;let U=(R=(F=s.current)==null?void 0:F.filter)!=null?R:Wi;return k?U(k,n.current.search,W):0}function Y(){if(!n.current.search||s.current.shouldFilter===!1)return;let k=n.current.filtered.items,W=[];n.current.filtered.groups.forEach(R=>{let U=o.current.get(R),G=0;U.forEach(ee=>{let X=k.get(ee);G=Math.max(X,G)}),W.push([R,G])});let F=E.current;de().sort((R,U)=>{var G,ee;let X=R.getAttribute("id"),ze=U.getAttribute("id");return((G=k.get(ze))!=null?G:0)-((ee=k.get(X))!=null?ee:0)}).forEach(R=>{let U=R.closest(Ut);U?U.appendChild(R.parentElement===U?R:R.closest(`${Ut} > *`)):F.appendChild(R.parentElement===F?R:R.closest(`${Ut} > *`))}),W.sort((R,U)=>U[1]-R[1]).forEach(R=>{var U;let G=(U=E.current)==null?void 0:U.querySelector(`${nt}[${qe}="${encodeURIComponent(R[0])}"]`);G?.parentElement.appendChild(G)})}function Q(){let k=de().find(F=>F.getAttribute("aria-disabled")!=="true"),W=k?.getAttribute(qe);M.setState("value",W||void 0)}function re(){var k,W,F,R;if(!n.current.search||s.current.shouldFilter===!1){n.current.filtered.count=r.current.size;return}n.current.filtered.groups=new Set;let U=0;for(let G of r.current){let ee=(W=(k=i.current.get(G))==null?void 0:k.value)!=null?W:"",X=(R=(F=i.current.get(G))==null?void 0:F.keywords)!=null?R:[],ze=J(ee,X);n.current.filtered.items.set(G,ze),ze>0&&U++}for(let[G,ee]of o.current)for(let X of ee)if(n.current.filtered.items.get(X)>0){n.current.filtered.groups.add(G);break}n.current.filtered.count=U}function Me(){var k,W,F;let R=le();R&&(((k=R.parentElement)==null?void 0:k.firstChild)===R&&((F=(W=R.closest(nt))==null?void 0:W.querySelector(Ri))==null||F.scrollIntoView({block:"nearest"})),R.scrollIntoView({block:"nearest"}))}function le(){var k;return(k=E.current)==null?void 0:k.querySelector(`${fr}[aria-selected="true"]`)}function de(){var k;return Array.from(((k=E.current)==null?void 0:k.querySelectorAll(kn))||[])}function Ie(k){let W=de()[k];W&&M.setState("value",W.getAttribute(qe))}function je(k){var W;let F=le(),R=de(),U=R.findIndex(ee=>ee===F),G=R[U+k];(W=s.current)!=null&&W.loop&&(G=U+k<0?R[R.length-1]:U+k===R.length?R[0]:R[U+k]),G&&M.setState("value",G.getAttribute(qe))}function ie(k){let W=le(),F=W?.closest(nt),R;for(;F&&!R;)F=k>0?Ui(F,nt):zi(F,nt),R=F?.querySelector(kn);R?M.setState("value",R.getAttribute(qe)):je(k)}let se=()=>Ie(de().length-1),pe=k=>{k.preventDefault(),k.metaKey?se():k.altKey?ie(1):je(1)},Ue=k=>{k.preventDefault(),k.metaKey?Ie(0):k.altKey?ie(-1):je(-1)};return b.createElement(_e.div,{ref:t,tabIndex:-1,...y,"cmdk-root":"",onKeyDown:k=>{var W;(W=y.onKeyDown)==null||W.call(y,k);let F=k.nativeEvent.isComposing||k.keyCode===229;if(!(k.defaultPrevented||F))switch(k.key){case"n":case"j":{O&&k.ctrlKey&&pe(k);break}case"ArrowDown":{pe(k);break}case"p":case"k":{O&&k.ctrlKey&&Ue(k);break}case"ArrowUp":{Ue(k);break}case"Home":{k.preventDefault(),Ie(0);break}case"End":{k.preventDefault(),se();break}case"Enter":{k.preventDefault();let R=le();if(R){let U=new Event(en);R.dispatchEvent(U)}}}}},b.createElement("label",{"cmdk-label":"",htmlFor:j.inputId,id:j.labelId,style:Gi},l),It(e,k=>b.createElement(pr.Provider,{value:M},b.createElement(dr.Provider,{value:j},k))))}),Ai=b.forwardRef((e,t)=>{var n,r;let o=Ve(),i=b.useRef(null),a=b.useContext(hr),s=dt(),l=yr(e),u=(r=(n=l.current)==null?void 0:n.forceMount)!=null?r:a?.forceMount;Be(()=>{if(!u)return s.item(o,a?.id)},[u]);let f=vr(o,i,[e.value,e.children,i],e.keywords),c=cn(),d=We(C=>C.value&&C.value===f.current),p=We(C=>u||s.filter()===!1?!0:C.search?C.filtered.items.get(o)>0:!0);b.useEffect(()=>{let C=i.current;if(!(!C||e.disabled))return C.addEventListener(en,h),()=>C.removeEventListener(en,h)},[p,e.onSelect,e.disabled]);function h(){var C,M;v(),(M=(C=l.current).onSelect)==null||M.call(C,f.current)}function v(){c.setState("value",f.current,!0)}if(!p)return null;let{disabled:O,value:y,onSelect:m,forceMount:S,keywords:D,...E}=e;return b.createElement(_e.div,{ref:ct(i,t),...E,id:o,"cmdk-item":"",role:"option","aria-disabled":!!O,"aria-selected":!!d,"data-disabled":!!O,"data-selected":!!d,onPointerMove:O||s.getDisablePointerSelection()?void 0:v,onClick:O?void 0:h},e.children)}),_i=b.forwardRef((e,t)=>{let{heading:n,children:r,forceMount:o,...i}=e,a=Ve(),s=b.useRef(null),l=b.useRef(null),u=Ve(),f=dt(),c=We(p=>o||f.filter()===!1?!0:p.search?p.filtered.groups.has(a):!0);Be(()=>f.group(a),[]),vr(a,s,[e.value,e.heading,l]);let d=b.useMemo(()=>({id:a,forceMount:o}),[o]);return b.createElement(_e.div,{ref:ct(s,t),...i,"cmdk-group":"",role:"presentation",hidden:c?void 0:!0},n&&b.createElement("div",{ref:l,"cmdk-group-heading":"","aria-hidden":!0,id:u},n),It(e,p=>b.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":n?u:void 0},b.createElement(hr.Provider,{value:d},p))))}),ji=b.forwardRef((e,t)=>{let{alwaysRender:n,...r}=e,o=b.useRef(null),i=We(a=>!a.search);return!n&&!i?null:b.createElement(_e.div,{ref:ct(o,t),...r,"cmdk-separator":"",role:"separator"})}),Fi=b.forwardRef((e,t)=>{let{onValueChange:n,...r}=e,o=e.value!=null,i=cn(),a=We(u=>u.search),s=We(u=>u.selectedItemId),l=dt();return b.useEffect(()=>{e.value!=null&&i.setState("search",e.value)},[e.value]),b.createElement(_e.input,{ref:t,...r,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":l.listId,"aria-labelledby":l.labelId,"aria-activedescendant":s,id:l.inputId,type:"text",value:o?e.value:a,onChange:u=>{o||i.setState("search",u.target.value),n?.(u.target.value)}})}),Li=b.forwardRef((e,t)=>{let{children:n,label:r="Suggestions",...o}=e,i=b.useRef(null),a=b.useRef(null),s=We(u=>u.selectedItemId),l=dt();return b.useEffect(()=>{if(a.current&&i.current){let u=a.current,f=i.current,c,d=new ResizeObserver(()=>{c=requestAnimationFrame(()=>{let p=u.offsetHeight;f.style.setProperty("--cmdk-list-height",p.toFixed(1)+"px")})});return d.observe(u),()=>{cancelAnimationFrame(c),d.unobserve(u)}}},[]),b.createElement(_e.div,{ref:ct(i,t),...o,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":s,"aria-label":r,id:l.listId},It(e,u=>b.createElement("div",{ref:ct(a,l.listInnerRef),"cmdk-list-sizer":""},u)))}),Bi=b.forwardRef((e,t)=>{let{open:n,onOpenChange:r,overlayClassName:o,contentClassName:i,container:a,...s}=e;return b.createElement(Bo,{open:n,onOpenChange:r},b.createElement($o,{container:a},b.createElement(Ho,{"cmdk-overlay":"",className:o}),b.createElement(Uo,{"aria-label":e.label,"cmdk-dialog":"",className:i},b.createElement(mr,{ref:t,...s}))))}),$i=b.forwardRef((e,t)=>We(n=>n.filtered.count===0)?b.createElement(_e.div,{ref:t,...e,"cmdk-empty":"",role:"presentation"}):null),Hi=b.forwardRef((e,t)=>{let{progress:n,children:r,label:o="Loading...",...i}=e;return b.createElement(_e.div,{ref:t,...i,"cmdk-loading":"",role:"progressbar","aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":o},It(e,a=>b.createElement("div",{"aria-hidden":!0},a)))}),ou=Object.assign(mr,{List:Li,Item:Ai,Input:Fi,Group:_i,Separator:ji,Dialog:Bi,Empty:$i,Loading:Hi});function Ui(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return n;n=n.nextElementSibling}}function zi(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return n;n=n.previousElementSibling}}function yr(e){let t=b.useRef(e);return Be(()=>{t.current=e}),t}var Be=typeof window>"u"?b.useEffect:b.useLayoutEffect;function Ge(e){let t=b.useRef();return t.current===void 0&&(t.current=e()),t}function We(e){let t=cn(),n=()=>e(t.snapshot());return b.useSyncExternalStore(t.subscribe,n,n)}function vr(e,t,n,r=[]){let o=b.useRef(),i=dt();return Be(()=>{var a;let s=(()=>{var u;for(let f of n){if(typeof f=="string")return f.trim();if(typeof f=="object"&&"current"in f)return f.current?(u=f.current.textContent)==null?void 0:u.trim():o.current}})(),l=r.map(u=>u.trim());i.value(e,s,l),(a=t.current)==null||a.setAttribute(qe,s),o.current=s}),o}var Yi=()=>{let[e,t]=b.useState(),n=Ge(()=>new Map);return Be(()=>{n.current.forEach(r=>r()),n.current=new Map},[e]),(r,o)=>{n.current.set(r,o),t({})}};function qi(e){let t=e.type;return typeof t=="function"?t(e.props):"render"in t?t.render(e.props):e}function It({asChild:e,children:t},n){return e&&b.isValidElement(t)?b.cloneElement(qi(t),{ref:t.ref},n(t.props.children)):n(t)}var Gi={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};function gr(e){return t=>typeof t===e}var Vi=gr("function"),Ki=e=>e===null,Cn=e=>Object.prototype.toString.call(e).slice(8,-1)==="RegExp",Tn=e=>!Zi(e)&&!Ki(e)&&(Vi(e)||typeof e=="object"),Zi=gr("undefined");function Ji(e,t){const{length:n}=e;if(n!==t.length)return!1;for(let r=n;r--!==0;)if(!oe(e[r],t[r]))return!1;return!0}function Xi(e,t){if(e.byteLength!==t.byteLength)return!1;const n=new DataView(e.buffer),r=new DataView(t.buffer);let o=e.byteLength;for(;o--;)if(n.getUint8(o)!==r.getUint8(o))return!1;return!0}function Qi(e,t){if(e.size!==t.size)return!1;for(const n of e.entries())if(!t.has(n[0]))return!1;for(const n of e.entries())if(!oe(n[1],t.get(n[0])))return!1;return!0}function es(e,t){if(e.size!==t.size)return!1;for(const n of e.entries())if(!t.has(n[0]))return!1;return!0}function oe(e,t){if(e===t)return!0;if(e&&Tn(e)&&t&&Tn(t)){if(e.constructor!==t.constructor)return!1;if(Array.isArray(e)&&Array.isArray(t))return Ji(e,t);if(e instanceof Map&&t instanceof Map)return Qi(e,t);if(e instanceof Set&&t instanceof Set)return es(e,t);if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(t))return Xi(e,t);if(Cn(e)&&Cn(t))return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let o=n.length;o--!==0;)if(!Object.prototype.hasOwnProperty.call(t,n[o]))return!1;for(let o=n.length;o--!==0;){const i=n[o];if(!(i==="_owner"&&e.$$typeof)&&!oe(e[i],t[i]))return!1}return!0}return Number.isNaN(e)&&Number.isNaN(t)?!0:e===t}var ts=["Array","ArrayBuffer","AsyncFunction","AsyncGenerator","AsyncGeneratorFunction","Date","Error","Function","Generator","GeneratorFunction","HTMLElement","Map","Object","Promise","RegExp","Set","WeakMap","WeakSet"],ns=["bigint","boolean","null","number","string","symbol","undefined"];function Rt(e){const t=Object.prototype.toString.call(e).slice(8,-1);if(/HTML\w+Element/.test(t))return"HTMLElement";if(rs(t))return t}function ge(e){return t=>Rt(t)===e}function rs(e){return ts.includes(e)}function Qe(e){return t=>typeof t===e}function os(e){return ns.includes(e)}var is=["innerHTML","ownerDocument","style","attributes","nodeValue"];function x(e){if(e===null)return"null";switch(typeof e){case"bigint":return"bigint";case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"symbol":return"symbol";case"undefined":return"undefined"}if(x.array(e))return"Array";if(x.plainFunction(e))return"Function";const t=Rt(e);return t||"Object"}x.array=Array.isArray;x.arrayOf=(e,t)=>!x.array(e)&&!x.function(t)?!1:e.every(n=>t(n));x.asyncGeneratorFunction=e=>Rt(e)==="AsyncGeneratorFunction";x.asyncFunction=ge("AsyncFunction");x.bigint=Qe("bigint");x.boolean=e=>e===!0||e===!1;x.date=ge("Date");x.defined=e=>!x.undefined(e);x.domElement=e=>x.object(e)&&!x.plainObject(e)&&e.nodeType===1&&x.string(e.nodeName)&&is.every(t=>t in e);x.empty=e=>x.string(e)&&e.length===0||x.array(e)&&e.length===0||x.object(e)&&!x.map(e)&&!x.set(e)&&Object.keys(e).length===0||x.set(e)&&e.size===0||x.map(e)&&e.size===0;x.error=ge("Error");x.function=Qe("function");x.generator=e=>x.iterable(e)&&x.function(e.next)&&x.function(e.throw);x.generatorFunction=ge("GeneratorFunction");x.instanceOf=(e,t)=>!e||!t?!1:Object.getPrototypeOf(e)===t.prototype;x.iterable=e=>!x.nullOrUndefined(e)&&x.function(e[Symbol.iterator]);x.map=ge("Map");x.nan=e=>Number.isNaN(e);x.null=e=>e===null;x.nullOrUndefined=e=>x.null(e)||x.undefined(e);x.number=e=>Qe("number")(e)&&!x.nan(e);x.numericString=e=>x.string(e)&&e.length>0&&!Number.isNaN(Number(e));x.object=e=>!x.nullOrUndefined(e)&&(x.function(e)||typeof e=="object");x.oneOf=(e,t)=>x.array(e)?e.indexOf(t)>-1:!1;x.plainFunction=ge("Function");x.plainObject=e=>{if(Rt(e)!=="Object")return!1;const t=Object.getPrototypeOf(e);return t===null||t===Object.getPrototypeOf({})};x.primitive=e=>x.null(e)||os(typeof e);x.promise=ge("Promise");x.propertyOf=(e,t,n)=>{if(!x.object(e)||!t)return!1;const r=e[t];return x.function(n)?n(r):x.defined(r)};x.regexp=ge("RegExp");x.set=ge("Set");x.string=Qe("string");x.symbol=Qe("symbol");x.undefined=Qe("undefined");x.weakMap=ge("WeakMap");x.weakSet=ge("WeakSet");var N=x;function ss(...e){return e.every(t=>N.string(t)||N.array(t)||N.plainObject(t))}function as(e,t,n){return br(e,t)?[e,t].every(N.array)?!e.some(Dn(n))&&t.some(Dn(n)):[e,t].every(N.plainObject)?!Object.entries(e).some(Pn(n))&&Object.entries(t).some(Pn(n)):t===n:!1}function Mn(e,t,n){const{actual:r,key:o,previous:i,type:a}=n,s=Ee(e,o),l=Ee(t,o);let u=[s,l].every(N.number)&&(a==="increased"?sl);return N.undefined(r)||(u=u&&l===r),N.undefined(i)||(u=u&&s===i),u}function xn(e,t,n){const{key:r,type:o,value:i}=n,a=Ee(e,r),s=Ee(t,r),l=o==="added"?a:s,u=o==="added"?s:a;if(!N.nullOrUndefined(i)){if(N.defined(l)){if(N.array(l)||N.plainObject(l))return as(l,u,i)}else return oe(u,i);return!1}return[a,s].every(N.array)?!u.every(un(l)):[a,s].every(N.plainObject)?ls(Object.keys(l),Object.keys(u)):![a,s].every(f=>N.primitive(f)&&N.defined(f))&&(o==="added"?!N.defined(a)&&N.defined(s):N.defined(a)&&!N.defined(s))}function Nn(e,t,{key:n}={}){let r=Ee(e,n),o=Ee(t,n);if(!br(r,o))throw new TypeError("Inputs have different types");if(!ss(r,o))throw new TypeError("Inputs don't have length");return[r,o].every(N.plainObject)&&(r=Object.keys(r),o=Object.keys(o)),[r,o]}function Pn(e){return([t,n])=>N.array(e)?oe(e,n)||e.some(r=>oe(r,n)||N.array(n)&&un(n)(r)):N.plainObject(e)&&e[t]?!!e[t]&&oe(e[t],n):oe(e,n)}function ls(e,t){return t.some(n=>!e.includes(n))}function Dn(e){return t=>N.array(e)?e.some(n=>oe(n,t)||N.array(t)&&un(t)(n)):oe(e,t)}function rt(e,t){return N.array(e)?e.some(n=>oe(n,t)):oe(e,t)}function un(e){return t=>e.some(n=>oe(n,t))}function br(...e){return e.every(N.array)||e.every(N.number)||e.every(N.plainObject)||e.every(N.string)}function Ee(e,t){return N.plainObject(e)||N.array(e)?N.string(t)?t.split(".").reduce((r,o)=>r&&r[o],e):N.number(t)?e[t]:e:e}function Mt(e,t){if([e,t].some(N.nullOrUndefined))throw new Error("Missing required parameters");if(![e,t].every(f=>N.plainObject(f)||N.array(f)))throw new Error("Expected plain objects or array");return{added:(f,c)=>{try{return xn(e,t,{key:f,type:"added",value:c})}catch{return!1}},changed:(f,c,d)=>{try{const p=Ee(e,f),h=Ee(t,f),v=N.defined(c),O=N.defined(d);if(v||O){const y=O?rt(d,p):!rt(c,p),m=rt(c,h);return y&&m}return[p,h].every(N.array)||[p,h].every(N.plainObject)?!oe(p,h):p!==h}catch{return!1}},changedFrom:(f,c,d)=>{if(!N.defined(f))return!1;try{const p=Ee(e,f),h=Ee(t,f),v=N.defined(d);return rt(c,p)&&(v?rt(d,h):!v)}catch{return!1}},decreased:(f,c,d)=>{if(!N.defined(f))return!1;try{return Mn(e,t,{key:f,actual:c,previous:d,type:"decreased"})}catch{return!1}},emptied:f=>{try{const[c,d]=Nn(e,t,{key:f});return!!c.length&&!d.length}catch{return!1}},filled:f=>{try{const[c,d]=Nn(e,t,{key:f});return!c.length&&!!d.length}catch{return!1}},increased:(f,c,d)=>{if(!N.defined(f))return!1;try{return Mn(e,t,{key:f,actual:c,previous:d,type:"increased"})}catch{return!1}},removed:(f,c)=>{try{return xn(e,t,{key:f,type:"removed",value:c})}catch{return!1}}}}var zt,In;function cs(){if(In)return zt;In=1;var e=new Error("Element already at target scroll position"),t=new Error("Scroll cancelled"),n=Math.min,r=Date.now;zt={left:o("scrollLeft"),top:o("scrollTop")};function o(s){return function(u,f,c,d){c=c||{},typeof c=="function"&&(d=c,c={}),typeof d!="function"&&(d=a);var p=r(),h=u[s],v=c.ease||i,O=isNaN(c.duration)?350:+c.duration,y=!1;return h===f?d(e,u[s]):requestAnimationFrame(S),m;function m(){y=!0}function S(D){if(y)return d(t,u[s]);var E=r(),C=n(1,(E-p)/O),M=v(C);u[s]=M*(f-h)+h,C<1?requestAnimationFrame(S):requestAnimationFrame(function(){d(null,u[s])})}}}function i(s){return .5*(1-Math.cos(Math.PI*s))}function a(){}return zt}var us=cs();const fs=Dt(us);var Ct={exports:{}},ds=Ct.exports,Rn;function ps(){return Rn||(Rn=1,(function(e){(function(t,n){e.exports?e.exports=n():t.Scrollparent=n()})(ds,function(){function t(r){var o=getComputedStyle(r,null).getPropertyValue("overflow");return o.indexOf("scroll")>-1||o.indexOf("auto")>-1}function n(r){if(r instanceof HTMLElement||r instanceof SVGElement){for(var o=r.parentNode;o.parentNode;){if(t(o))return o;o=o.parentNode}return document.scrollingElement||document.documentElement}}return n})})(Ct)),Ct.exports}var hs=ps();const wr=Dt(hs);var Yt,Wn;function ms(){if(Wn)return Yt;Wn=1;var e=function(r){return Object.prototype.hasOwnProperty.call(r,"props")},t=function(r,o){return r+n(o)},n=function(r){return r===null||typeof r=="boolean"||typeof r>"u"?"":typeof r=="number"?r.toString():typeof r=="string"?r:Array.isArray(r)?r.reduce(t,""):e(r)&&Object.prototype.hasOwnProperty.call(r.props,"children")?n(r.props.children):""};return n.default=n,Yt=n,Yt}var ys=ms();const An=Dt(ys);var qt,_n;function vs(){if(_n)return qt;_n=1;var e=function(m){return t(m)&&!n(m)};function t(y){return!!y&&typeof y=="object"}function n(y){var m=Object.prototype.toString.call(y);return m==="[object RegExp]"||m==="[object Date]"||i(y)}var r=typeof Symbol=="function"&&Symbol.for,o=r?Symbol.for("react.element"):60103;function i(y){return y.$$typeof===o}function a(y){return Array.isArray(y)?[]:{}}function s(y,m){return m.clone!==!1&&m.isMergeableObject(y)?v(a(y),y,m):y}function l(y,m,S){return y.concat(m).map(function(D){return s(D,S)})}function u(y,m){if(!m.customMerge)return v;var S=m.customMerge(y);return typeof S=="function"?S:v}function f(y){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(y).filter(function(m){return Object.propertyIsEnumerable.call(y,m)}):[]}function c(y){return Object.keys(y).concat(f(y))}function d(y,m){try{return m in y}catch{return!1}}function p(y,m){return d(y,m)&&!(Object.hasOwnProperty.call(y,m)&&Object.propertyIsEnumerable.call(y,m))}function h(y,m,S){var D={};return S.isMergeableObject(y)&&c(y).forEach(function(E){D[E]=s(y[E],S)}),c(m).forEach(function(E){p(y,E)||(d(y,E)&&S.isMergeableObject(m[E])?D[E]=u(E,S)(y[E],m[E],S):D[E]=s(m[E],S))}),D}function v(y,m,S){S=S||{},S.arrayMerge=S.arrayMerge||l,S.isMergeableObject=S.isMergeableObject||e,S.cloneUnlessOtherwiseSpecified=s;var D=Array.isArray(m),E=Array.isArray(y),C=D===E;return C?D?S.arrayMerge(y,m,S):h(y,m,S):s(m,S)}v.all=function(m,S){if(!Array.isArray(m))throw new Error("first argument should be an array");return m.reduce(function(D,E){return v(D,E,S)},{})};var O=v;return qt=O,qt}var gs=vs();const ye=Dt(gs);var pt=typeof window<"u"&&typeof document<"u"&&typeof navigator<"u",bs=(function(){for(var e=["Edge","Trident","Firefox"],t=0;t=0)return 1;return 0})();function ws(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then(function(){t=!1,e()}))}}function Os(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},bs))}}var Ss=pt&&window.Promise,Es=Ss?ws:Os;function Or(e){var t={};return e&&t.toString.call(e)==="[object Function]"}function He(e,t){if(e.nodeType!==1)return[];var n=e.ownerDocument.defaultView,r=n.getComputedStyle(e,null);return t?r[t]:r}function fn(e){return e.nodeName==="HTML"?e:e.parentNode||e.host}function ht(e){if(!e)return document.body;switch(e.nodeName){case"HTML":case"BODY":return e.ownerDocument.body;case"#document":return e.body}var t=He(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/(auto|scroll|overlay)/.test(n+o+r)?e:ht(fn(e))}function Sr(e){return e&&e.referenceNode?e.referenceNode:e}var jn=pt&&!!(window.MSInputMethodContext&&document.documentMode),Fn=pt&&/MSIE 10/.test(navigator.userAgent);function et(e){return e===11?jn:e===10?Fn:jn||Fn}function Ke(e){if(!e)return document.documentElement;for(var t=et(10)?document.body:null,n=e.offsetParent||null;n===t&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var r=n&&n.nodeName;return!r||r==="BODY"||r==="HTML"?e?e.ownerDocument.documentElement:document.documentElement:["TH","TD","TABLE"].indexOf(n.nodeName)!==-1&&He(n,"position")==="static"?Ke(n):n}function ks(e){var t=e.nodeName;return t==="BODY"?!1:t==="HTML"||Ke(e.firstElementChild)===e}function tn(e){return e.parentNode!==null?tn(e.parentNode):e}function xt(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var n=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,r=n?e:t,o=n?t:e,i=document.createRange();i.setStart(r,0),i.setEnd(o,0);var a=i.commonAncestorContainer;if(e!==a&&t!==a||r.contains(o))return ks(a)?a:Ke(a);var s=tn(e);return s.host?xt(s.host,t):xt(e,tn(t).host)}function Ze(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"top",n=t==="top"?"scrollTop":"scrollLeft",r=e.nodeName;if(r==="BODY"||r==="HTML"){var o=e.ownerDocument.documentElement,i=e.ownerDocument.scrollingElement||o;return i[n]}return e[n]}function Cs(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,r=Ze(t,"top"),o=Ze(t,"left"),i=n?-1:1;return e.top+=r*i,e.bottom+=r*i,e.left+=o*i,e.right+=o*i,e}function Ln(e,t){var n=t==="x"?"Left":"Top",r=n==="Left"?"Right":"Bottom";return parseFloat(e["border"+n+"Width"])+parseFloat(e["border"+r+"Width"])}function Bn(e,t,n,r){return Math.max(t["offset"+e],t["scroll"+e],n["client"+e],n["offset"+e],n["scroll"+e],et(10)?parseInt(n["offset"+e])+parseInt(r["margin"+(e==="Height"?"Top":"Left")])+parseInt(r["margin"+(e==="Height"?"Bottom":"Right")]):0)}function Er(e){var t=e.body,n=e.documentElement,r=et(10)&&getComputedStyle(n);return{height:Bn("Height",t,n,r),width:Bn("Width",t,n,r)}}var Ts=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},Ms=(function(){function e(t,n){for(var r=0;r2&&arguments[2]!==void 0?arguments[2]:!1,r=et(10),o=t.nodeName==="HTML",i=nn(e),a=nn(t),s=ht(e),l=He(t),u=parseFloat(l.borderTopWidth),f=parseFloat(l.borderLeftWidth);n&&o&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var c=Ae({top:i.top-a.top-u,left:i.left-a.left-f,width:i.width,height:i.height});if(c.marginTop=0,c.marginLeft=0,!r&&o){var d=parseFloat(l.marginTop),p=parseFloat(l.marginLeft);c.top-=u-d,c.bottom-=u-d,c.left-=f-p,c.right-=f-p,c.marginTop=d,c.marginLeft=p}return(r&&!n?t.contains(s):t===s&&s.nodeName!=="BODY")&&(c=Cs(c,t)),c}function xs(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=e.ownerDocument.documentElement,r=dn(e,n),o=Math.max(n.clientWidth,window.innerWidth||0),i=Math.max(n.clientHeight,window.innerHeight||0),a=t?0:Ze(n),s=t?0:Ze(n,"left"),l={top:a-r.top+r.marginTop,left:s-r.left+r.marginLeft,width:o,height:i};return Ae(l)}function kr(e){var t=e.nodeName;if(t==="BODY"||t==="HTML")return!1;if(He(e,"position")==="fixed")return!0;var n=fn(e);return n?kr(n):!1}function Cr(e){if(!e||!e.parentElement||et())return document.documentElement;for(var t=e.parentElement;t&&He(t,"transform")==="none";)t=t.parentElement;return t||document.documentElement}function pn(e,t,n,r){var o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1,i={top:0,left:0},a=o?Cr(e):xt(e,Sr(t));if(r==="viewport")i=xs(a,o);else{var s=void 0;r==="scrollParent"?(s=ht(fn(t)),s.nodeName==="BODY"&&(s=e.ownerDocument.documentElement)):r==="window"?s=e.ownerDocument.documentElement:s=r;var l=dn(s,a,o);if(s.nodeName==="HTML"&&!kr(a)){var u=Er(e.ownerDocument),f=u.height,c=u.width;i.top+=l.top-l.marginTop,i.bottom=f+l.top,i.left+=l.left-l.marginLeft,i.right=c+l.left}else i=l}n=n||0;var d=typeof n=="number";return i.left+=d?n:n.left||0,i.top+=d?n:n.top||0,i.right-=d?n:n.right||0,i.bottom-=d?n:n.bottom||0,i}function Ns(e){var t=e.width,n=e.height;return t*n}function Tr(e,t,n,r,o){var i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0;if(e.indexOf("auto")===-1)return e;var a=pn(n,r,i,o),s={top:{width:a.width,height:t.top-a.top},right:{width:a.right-t.right,height:a.height},bottom:{width:a.width,height:a.bottom-t.bottom},left:{width:t.left-a.left,height:a.height}},l=Object.keys(s).map(function(d){return he({key:d},s[d],{area:Ns(s[d])})}).sort(function(d,p){return p.area-d.area}),u=l.filter(function(d){var p=d.width,h=d.height;return p>=n.clientWidth&&h>=n.clientHeight}),f=u.length>0?u[0].key:l[0].key,c=e.split("-")[1];return f+(c?"-"+c:"")}function Mr(e,t,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,o=r?Cr(t):xt(t,Sr(n));return dn(n,o,r)}function xr(e){var t=e.ownerDocument.defaultView,n=t.getComputedStyle(e),r=parseFloat(n.marginTop||0)+parseFloat(n.marginBottom||0),o=parseFloat(n.marginLeft||0)+parseFloat(n.marginRight||0),i={width:e.offsetWidth+o,height:e.offsetHeight+r};return i}function Nt(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(n){return t[n]})}function Nr(e,t,n){n=n.split("-")[0];var r=xr(e),o={width:r.width,height:r.height},i=["right","left"].indexOf(n)!==-1,a=i?"top":"left",s=i?"left":"top",l=i?"height":"width",u=i?"width":"height";return o[a]=t[a]+t[l]/2-r[l]/2,n===s?o[s]=t[s]-r[u]:o[s]=t[Nt(s)],o}function mt(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function Ps(e,t,n){if(Array.prototype.findIndex)return e.findIndex(function(o){return o[t]===n});var r=mt(e,function(o){return o[t]===n});return e.indexOf(r)}function Pr(e,t,n){var r=n===void 0?e:e.slice(0,Ps(e,"name",n));return r.forEach(function(o){o.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var i=o.function||o.fn;o.enabled&&Or(i)&&(t.offsets.popper=Ae(t.offsets.popper),t.offsets.reference=Ae(t.offsets.reference),t=i(t,o))}),t}function Ds(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=Mr(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=Tr(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=Nr(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",e=Pr(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function Dr(e,t){return e.some(function(n){var r=n.name,o=n.enabled;return o&&r===t})}function hn(e){for(var t=[!1,"ms","Webkit","Moz","O"],n=e.charAt(0).toUpperCase()+e.slice(1),r=0;ra[p]&&(e.offsets.popper[c]+=s[c]+h-a[p]),e.offsets.popper=Ae(e.offsets.popper);var v=s[c]+s[u]/2-h/2,O=He(e.instance.popper),y=parseFloat(O["margin"+f]),m=parseFloat(O["border"+f+"Width"]),S=v-e.offsets.popper[c]-y-m;return S=Math.max(Math.min(a[u]-h,S),0),e.arrowElement=r,e.offsets.arrow=(n={},Je(n,c,Math.round(S)),Je(n,d,""),n),e}function zs(e){return e==="end"?"start":e==="start"?"end":e}var Ar=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],Gt=Ar.slice(3);function $n(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=Gt.indexOf(e),r=Gt.slice(n+1).concat(Gt.slice(0,n));return t?r.reverse():r}var Vt={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function Ys(e,t){if(Dr(e.instance.modifiers,"inner")||e.flipped&&e.placement===e.originalPlacement)return e;var n=pn(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),r=e.placement.split("-")[0],o=Nt(r),i=e.placement.split("-")[1]||"",a=[];switch(t.behavior){case Vt.FLIP:a=[r,o];break;case Vt.CLOCKWISE:a=$n(r);break;case Vt.COUNTERCLOCKWISE:a=$n(r,!0);break;default:a=t.behavior}return a.forEach(function(s,l){if(r!==s||a.length===l+1)return e;r=e.placement.split("-")[0],o=Nt(r);var u=e.offsets.popper,f=e.offsets.reference,c=Math.floor,d=r==="left"&&c(u.right)>c(f.left)||r==="right"&&c(u.left)c(f.top)||r==="bottom"&&c(u.top)c(n.right),v=c(u.top)c(n.bottom),y=r==="left"&&p||r==="right"&&h||r==="top"&&v||r==="bottom"&&O,m=["top","bottom"].indexOf(r)!==-1,S=!!t.flipVariations&&(m&&i==="start"&&p||m&&i==="end"&&h||!m&&i==="start"&&v||!m&&i==="end"&&O),D=!!t.flipVariationsByContent&&(m&&i==="start"&&h||m&&i==="end"&&p||!m&&i==="start"&&O||!m&&i==="end"&&v),E=S||D;(d||y||E)&&(e.flipped=!0,(d||y)&&(r=a[l+1]),E&&(i=zs(i)),e.placement=r+(i?"-"+i:""),e.offsets.popper=he({},e.offsets.popper,Nr(e.instance.popper,e.offsets.reference,e.placement)),e=Pr(e.instance.modifiers,e,"flip"))}),e}function qs(e){var t=e.offsets,n=t.popper,r=t.reference,o=e.placement.split("-")[0],i=Math.floor,a=["top","bottom"].indexOf(o)!==-1,s=a?"right":"bottom",l=a?"left":"top",u=a?"width":"height";return n[s]i(r[s])&&(e.offsets.popper[l]=i(r[s])),e}function Gs(e,t,n,r){var o=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),i=+o[1],a=o[2];if(!i)return e;if(a.indexOf("%")===0){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=r}var l=Ae(s);return l[t]/100*i}else if(a==="vh"||a==="vw"){var u=void 0;return a==="vh"?u=Math.max(document.documentElement.clientHeight,window.innerHeight||0):u=Math.max(document.documentElement.clientWidth,window.innerWidth||0),u/100*i}else return i}function Vs(e,t,n,r){var o=[0,0],i=["right","left"].indexOf(r)!==-1,a=e.split(/(\+|\-)/).map(function(f){return f.trim()}),s=a.indexOf(mt(a,function(f){return f.search(/,|\s/)!==-1}));a[s]&&a[s].indexOf(",")===-1&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,u=s!==-1?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return u=u.map(function(f,c){var d=(c===1?!i:i)?"height":"width",p=!1;return f.reduce(function(h,v){return h[h.length-1]===""&&["+","-"].indexOf(v)!==-1?(h[h.length-1]=v,p=!0,h):p?(h[h.length-1]+=v,p=!1,h):h.concat(v)},[]).map(function(h){return Gs(h,d,t,n)})}),u.forEach(function(f,c){f.forEach(function(d,p){mn(d)&&(o[c]+=d*(f[p-1]==="-"?-1:1))})}),o}function Ks(e,t){var n=t.offset,r=e.placement,o=e.offsets,i=o.popper,a=o.reference,s=r.split("-")[0],l=void 0;return mn(+n)?l=[+n,0]:l=Vs(n,i,a,s),s==="left"?(i.top+=l[0],i.left-=l[1]):s==="right"?(i.top+=l[0],i.left+=l[1]):s==="top"?(i.left+=l[0],i.top-=l[1]):s==="bottom"&&(i.left+=l[0],i.top+=l[1]),e.popper=i,e}function Zs(e,t){var n=t.boundariesElement||Ke(e.instance.popper);e.instance.reference===n&&(n=Ke(n));var r=hn("transform"),o=e.instance.popper.style,i=o.top,a=o.left,s=o[r];o.top="",o.left="",o[r]="";var l=pn(e.instance.popper,e.instance.reference,t.padding,n,e.positionFixed);o.top=i,o.left=a,o[r]=s,t.boundaries=l;var u=t.priority,f=e.offsets.popper,c={primary:function(p){var h=f[p];return f[p]l[p]&&!t.escapeWithReference&&(v=Math.min(f[h],l[p]-(p==="right"?f.width:f.height))),Je({},h,v)}};return u.forEach(function(d){var p=["left","top"].indexOf(d)!==-1?"primary":"secondary";f=he({},f,c[p](d))}),e.offsets.popper=f,e}function Js(e){var t=e.placement,n=t.split("-")[0],r=t.split("-")[1];if(r){var o=e.offsets,i=o.reference,a=o.popper,s=["bottom","top"].indexOf(n)!==-1,l=s?"left":"top",u=s?"width":"height",f={start:Je({},l,i[l]),end:Je({},l,i[l]+i[u]-a[u])};e.offsets.popper=he({},a,f[r])}return e}function Xs(e){if(!Wr(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=mt(e.instance.modifiers,function(r){return r.name==="preventOverflow"}).boundaries;if(t.bottomn.right||t.top>n.bottom||t.right2&&arguments[2]!==void 0?arguments[2]:{};Ts(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(r.update)},this.update=Es(this.update.bind(this)),this.options=he({},e.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(he({},e.Defaults.modifiers,o.modifiers)).forEach(function(a){r.options.modifiers[a]=he({},e.Defaults.modifiers[a]||{},o.modifiers?o.modifiers[a]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(a){return he({name:a},r.options.modifiers[a])}).sort(function(a,s){return a.order-s.order}),this.modifiers.forEach(function(a){a.enabled&&Or(a.onLoad)&&a.onLoad(r.reference,r.popper,r.options,a,r.state)}),this.update();var i=this.options.eventsEnabled;i&&this.enableEventListeners(),this.state.eventsEnabled=i}return Ms(e,[{key:"update",value:function(){return Ds.call(this)}},{key:"destroy",value:function(){return Is.call(this)}},{key:"enableEventListeners",value:function(){return Ws.call(this)}},{key:"disableEventListeners",value:function(){return _s.call(this)}}]),e})();ut.Utils=(typeof window<"u"?window:global).PopperUtils;ut.placements=Ar;ut.Defaults=ta;var na=["innerHTML","ownerDocument","style","attributes","nodeValue"],ra=["Array","ArrayBuffer","AsyncFunction","AsyncGenerator","AsyncGeneratorFunction","Date","Error","Function","Generator","GeneratorFunction","HTMLElement","Map","Object","Promise","RegExp","Set","WeakMap","WeakSet"],oa=["bigint","boolean","null","number","string","symbol","undefined"];function Wt(e){var t=Object.prototype.toString.call(e).slice(8,-1);if(/HTML\w+Element/.test(t))return"HTMLElement";if(ia(t))return t}function be(e){return function(t){return Wt(t)===e}}function ia(e){return ra.includes(e)}function tt(e){return function(t){return typeof t===e}}function sa(e){return oa.includes(e)}function g(e){if(e===null)return"null";switch(typeof e){case"bigint":return"bigint";case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"symbol":return"symbol";case"undefined":return"undefined"}if(g.array(e))return"Array";if(g.plainFunction(e))return"Function";var t=Wt(e);return t||"Object"}g.array=Array.isArray;g.arrayOf=function(e,t){return!g.array(e)&&!g.function(t)?!1:e.every(function(n){return t(n)})};g.asyncGeneratorFunction=function(e){return Wt(e)==="AsyncGeneratorFunction"};g.asyncFunction=be("AsyncFunction");g.bigint=tt("bigint");g.boolean=function(e){return e===!0||e===!1};g.date=be("Date");g.defined=function(e){return!g.undefined(e)};g.domElement=function(e){return g.object(e)&&!g.plainObject(e)&&e.nodeType===1&&g.string(e.nodeName)&&na.every(function(t){return t in e})};g.empty=function(e){return g.string(e)&&e.length===0||g.array(e)&&e.length===0||g.object(e)&&!g.map(e)&&!g.set(e)&&Object.keys(e).length===0||g.set(e)&&e.size===0||g.map(e)&&e.size===0};g.error=be("Error");g.function=tt("function");g.generator=function(e){return g.iterable(e)&&g.function(e.next)&&g.function(e.throw)};g.generatorFunction=be("GeneratorFunction");g.instanceOf=function(e,t){return!e||!t?!1:Object.getPrototypeOf(e)===t.prototype};g.iterable=function(e){return!g.nullOrUndefined(e)&&g.function(e[Symbol.iterator])};g.map=be("Map");g.nan=function(e){return Number.isNaN(e)};g.null=function(e){return e===null};g.nullOrUndefined=function(e){return g.null(e)||g.undefined(e)};g.number=function(e){return tt("number")(e)&&!g.nan(e)};g.numericString=function(e){return g.string(e)&&e.length>0&&!Number.isNaN(Number(e))};g.object=function(e){return!g.nullOrUndefined(e)&&(g.function(e)||typeof e=="object")};g.oneOf=function(e,t){return g.array(e)?e.indexOf(t)>-1:!1};g.plainFunction=be("Function");g.plainObject=function(e){if(Wt(e)!=="Object")return!1;var t=Object.getPrototypeOf(e);return t===null||t===Object.getPrototypeOf({})};g.primitive=function(e){return g.null(e)||sa(typeof e)};g.promise=be("Promise");g.propertyOf=function(e,t,n){if(!g.object(e)||!t)return!1;var r=e[t];return g.function(n)?n(r):g.defined(r)};g.regexp=be("RegExp");g.set=be("Set");g.string=tt("string");g.symbol=tt("symbol");g.undefined=tt("undefined");g.weakMap=be("WeakMap");g.weakSet=be("WeakSet");function _r(e){return function(t){return typeof t===e}}var aa=_r("function"),la=function(e){return e===null},Hn=function(e){return Object.prototype.toString.call(e).slice(8,-1)==="RegExp"},Un=function(e){return!ca(e)&&!la(e)&&(aa(e)||typeof e=="object")},ca=_r("undefined"),on=function(e){var t=typeof Symbol=="function"&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};function ua(e,t){var n=e.length;if(n!==t.length)return!1;for(var r=n;r--!==0;)if(!ae(e[r],t[r]))return!1;return!0}function fa(e,t){if(e.byteLength!==t.byteLength)return!1;for(var n=new DataView(e.buffer),r=new DataView(t.buffer),o=e.byteLength;o--;)if(n.getUint8(o)!==r.getUint8(o))return!1;return!0}function da(e,t){var n,r,o,i;if(e.size!==t.size)return!1;try{for(var a=on(e.entries()),s=a.next();!s.done;s=a.next()){var l=s.value;if(!t.has(l[0]))return!1}}catch(c){n={error:c}}finally{try{s&&!s.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}try{for(var u=on(e.entries()),f=u.next();!f.done;f=u.next()){var l=f.value;if(!ae(l[1],t.get(l[0])))return!1}}catch(c){o={error:c}}finally{try{f&&!f.done&&(i=u.return)&&i.call(u)}finally{if(o)throw o.error}}return!0}function pa(e,t){var n,r;if(e.size!==t.size)return!1;try{for(var o=on(e.entries()),i=o.next();!i.done;i=o.next()){var a=i.value;if(!t.has(a[0]))return!1}}catch(s){n={error:s}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return!0}function ae(e,t){if(e===t)return!0;if(e&&Un(e)&&t&&Un(t)){if(e.constructor!==t.constructor)return!1;if(Array.isArray(e)&&Array.isArray(t))return ua(e,t);if(e instanceof Map&&t instanceof Map)return da(e,t);if(e instanceof Set&&t instanceof Set)return pa(e,t);if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(t))return fa(e,t);if(Hn(e)&&Hn(t))return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var o=n.length;o--!==0;)if(!Object.prototype.hasOwnProperty.call(t,n[o]))return!1;for(var o=n.length;o--!==0;){var i=n[o];if(!(i==="_owner"&&e.$$typeof)&&!ae(e[i],t[i]))return!1}return!0}return Number.isNaN(e)&&Number.isNaN(t)?!0:e===t}function ha(){for(var e=[],t=0;tl);return g.undefined(r)||(u=u&&l===r),g.undefined(i)||(u=u&&s===i),u}function Yn(e,t,n){var r=n.key,o=n.type,i=n.value,a=ke(e,r),s=ke(t,r),l=o==="added"?a:s,u=o==="added"?s:a;if(!g.nullOrUndefined(i)){if(g.defined(l)){if(g.array(l)||g.plainObject(l))return ma(l,u,i)}else return ae(u,i);return!1}return[a,s].every(g.array)?!u.every(yn(l)):[a,s].every(g.plainObject)?ya(Object.keys(l),Object.keys(u)):![a,s].every(function(f){return g.primitive(f)&&g.defined(f)})&&(o==="added"?!g.defined(a)&&g.defined(s):g.defined(a)&&!g.defined(s))}function qn(e,t,n){var r=n===void 0?{}:n,o=r.key,i=ke(e,o),a=ke(t,o);if(!jr(i,a))throw new TypeError("Inputs have different types");if(!ha(i,a))throw new TypeError("Inputs don't have length");return[i,a].every(g.plainObject)&&(i=Object.keys(i),a=Object.keys(a)),[i,a]}function Gn(e){return function(t){var n=t[0],r=t[1];return g.array(e)?ae(e,r)||e.some(function(o){return ae(o,r)||g.array(r)&&yn(r)(o)}):g.plainObject(e)&&e[n]?!!e[n]&&ae(e[n],r):ae(e,r)}}function ya(e,t){return t.some(function(n){return!e.includes(n)})}function Vn(e){return function(t){return g.array(e)?e.some(function(n){return ae(n,t)||g.array(t)&&yn(t)(n)}):ae(e,t)}}function ot(e,t){return g.array(e)?e.some(function(n){return ae(n,t)}):ae(e,t)}function yn(e){return function(t){return e.some(function(n){return ae(n,t)})}}function jr(){for(var e=[],t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function wa(e,t){if(e==null)return{};var n={},r=Object.keys(e),o,i;for(i=0;i=0)&&(n[o]=e[o]);return n}function Fr(e,t){if(e==null)return{};var n=wa(e,t),r,o;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function xe(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Oa(e,t){if(t&&(typeof t=="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return xe(e)}function bt(e){var t=ba();return function(){var r=Pt(e),o;if(t){var i=Pt(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return Oa(this,o)}}function Sa(e,t){if(typeof e!="object"||e===null)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Lr(e){var t=Sa(e,"string");return typeof t=="symbol"?t:String(t)}var Ea={flip:{padding:20},preventOverflow:{padding:10}},ka="The typeValidator argument must be a function with the signature function(props, propName, componentName).",Ca="The error message is optional, but must be a string if provided.";function Ta(e,t,n,r){return typeof e=="boolean"?e:typeof e=="function"?e(t,n,r):e?!!e:!1}function Ma(e,t){return Object.hasOwnProperty.call(e,t)}function xa(e,t,n,r){return new Error("Required ".concat(e[t]," `").concat(t,"` was not specified in `").concat(n,"`."))}function Na(e,t){if(typeof e!="function")throw new TypeError(ka);if(t&&typeof t!="string")throw new TypeError(Ca)}function Zn(e,t,n){return Na(e,n),function(r,o,i){for(var a=arguments.length,s=new Array(a>3?a-3:0),l=3;l3&&arguments[3]!==void 0?arguments[3]:!1;e.addEventListener(t,n,r)}function Da(e,t,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;e.removeEventListener(t,n,r)}function Ia(e,t,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,o;o=function(a){n(a),Da(e,t,o)},Pa(e,t,o,r)}function Jn(){}var Br=(function(e){gt(n,e);var t=bt(n);function n(){return yt(this,n),t.apply(this,arguments)}return vt(n,[{key:"componentDidMount",value:function(){Oe()&&(this.node||this.appendNode(),it||this.renderPortal())}},{key:"componentDidUpdate",value:function(){Oe()&&(it||this.renderPortal())}},{key:"componentWillUnmount",value:function(){!Oe()||!this.node||(it||Et.unmountComponentAtNode(this.node),this.node&&this.node.parentNode===document.body&&(document.body.removeChild(this.node),this.node=void 0))}},{key:"appendNode",value:function(){var o=this.props,i=o.id,a=o.zIndex;this.node||(this.node=document.createElement("div"),i&&(this.node.id=i),a&&(this.node.style.zIndex=a),document.body.appendChild(this.node))}},{key:"renderPortal",value:function(){if(!Oe())return null;var o=this.props,i=o.children,a=o.setRef;if(this.node||this.appendNode(),it)return Et.createPortal(i,this.node);var s=Et.unstable_renderSubtreeIntoContainer(this,i.length>1?w.createElement("div",null,i):i[0],this.node);return a(s),null}},{key:"renderReact16",value:function(){var o=this.props,i=o.hasChildren,a=o.placement,s=o.target;return i?this.renderPortal():s||a==="center"?this.renderPortal():null}},{key:"render",value:function(){return it?this.renderReact16():null}}]),n})(w.Component);ne(Br,"propTypes",{children:T.oneOfType([T.element,T.array]),hasChildren:T.bool,id:T.oneOfType([T.string,T.number]),placement:T.string,setRef:T.func.isRequired,target:T.oneOfType([T.object,T.string]),zIndex:T.number});var $r=(function(e){gt(n,e);var t=bt(n);function n(){return yt(this,n),t.apply(this,arguments)}return vt(n,[{key:"parentStyle",get:function(){var o=this.props,i=o.placement,a=o.styles,s=a.arrow.length,l={pointerEvents:"none",position:"absolute",width:"100%"};return i.startsWith("top")?(l.bottom=0,l.left=0,l.right=0,l.height=s):i.startsWith("bottom")?(l.left=0,l.right=0,l.top=0,l.height=s):i.startsWith("left")?(l.right=0,l.top=0,l.bottom=0):i.startsWith("right")&&(l.left=0,l.top=0),l}},{key:"render",value:function(){var o=this.props,i=o.placement,a=o.setArrowRef,s=o.styles,l=s.arrow,u=l.color,f=l.display,c=l.length,d=l.margin,p=l.position,h=l.spread,v={display:f,position:p},O,y=h,m=c;return i.startsWith("top")?(O="0,0 ".concat(y/2,",").concat(m," ").concat(y,",0"),v.bottom=0,v.marginLeft=d,v.marginRight=d):i.startsWith("bottom")?(O="".concat(y,",").concat(m," ").concat(y/2,",0 0,").concat(m),v.top=0,v.marginLeft=d,v.marginRight=d):i.startsWith("left")?(m=h,y=c,O="0,0 ".concat(y,",").concat(m/2," 0,").concat(m),v.right=0,v.marginTop=d,v.marginBottom=d):i.startsWith("right")&&(m=h,y=c,O="".concat(y,",").concat(m," ").concat(y,",0 0,").concat(m/2),v.left=0,v.marginTop=d,v.marginBottom=d),w.createElement("div",{className:"__floater__arrow",style:this.parentStyle},w.createElement("span",{ref:a,style:v},w.createElement("svg",{width:y,height:m,version:"1.1",xmlns:"http://www.w3.org/2000/svg"},w.createElement("polygon",{points:O,fill:u}))))}}]),n})(w.Component);ne($r,"propTypes",{placement:T.string.isRequired,setArrowRef:T.func.isRequired,styles:T.object.isRequired});var Ra=["color","height","width"];function Hr(e){var t=e.handleClick,n=e.styles,r=n.color,o=n.height,i=n.width,a=Fr(n,Ra);return w.createElement("button",{"aria-label":"close",onClick:t,style:a,type:"button"},w.createElement("svg",{width:"".concat(i,"px"),height:"".concat(o,"px"),viewBox:"0 0 18 18",version:"1.1",xmlns:"http://www.w3.org/2000/svg",preserveAspectRatio:"xMidYMid"},w.createElement("g",null,w.createElement("path",{d:"M8.13911129,9.00268191 L0.171521827,17.0258467 C-0.0498027049,17.248715 -0.0498027049,17.6098394 0.171521827,17.8327545 C0.28204354,17.9443526 0.427188206,17.9998706 0.572051765,17.9998706 C0.71714958,17.9998706 0.862013139,17.9443526 0.972581703,17.8327545 L9.0000937,9.74924618 L17.0276057,17.8327545 C17.1384085,17.9443526 17.2832721,17.9998706 17.4281356,17.9998706 C17.5729992,17.9998706 17.718097,17.9443526 17.8286656,17.8327545 C18.0499901,17.6098862 18.0499901,17.2487618 17.8286656,17.0258467 L9.86135722,9.00268191 L17.8340066,0.973848225 C18.0553311,0.750979934 18.0553311,0.389855532 17.8340066,0.16694039 C17.6126821,-0.0556467968 17.254037,-0.0556467968 17.0329467,0.16694039 L9.00042166,8.25611765 L0.967006424,0.167268345 C0.745681892,-0.0553188426 0.387317931,-0.0553188426 0.165993399,0.167268345 C-0.0553311331,0.390136635 -0.0553311331,0.751261038 0.165993399,0.974176179 L8.13920499,9.00268191 L8.13911129,9.00268191 Z",fill:r}))))}Hr.propTypes={handleClick:T.func.isRequired,styles:T.object.isRequired};function Ur(e){var t=e.content,n=e.footer,r=e.handleClick,o=e.open,i=e.positionWrapper,a=e.showCloseButton,s=e.title,l=e.styles,u={content:w.isValidElement(t)?t:w.createElement("div",{className:"__floater__content",style:l.content},t)};return s&&(u.title=w.isValidElement(s)?s:w.createElement("div",{className:"__floater__title",style:l.title},s)),n&&(u.footer=w.isValidElement(n)?n:w.createElement("div",{className:"__floater__footer",style:l.footer},n)),(a||i)&&!g.boolean(o)&&(u.close=w.createElement(Hr,{styles:l.close,handleClick:r})),w.createElement("div",{className:"__floater__container",style:l.container},u.close,u.title,u.content,u.footer)}Ur.propTypes={content:T.node.isRequired,footer:T.node,handleClick:T.func.isRequired,open:T.bool,positionWrapper:T.bool.isRequired,showCloseButton:T.bool.isRequired,styles:T.object.isRequired,title:T.node};var zr=(function(e){gt(n,e);var t=bt(n);function n(){return yt(this,n),t.apply(this,arguments)}return vt(n,[{key:"style",get:function(){var o=this.props,i=o.disableAnimation,a=o.component,s=o.placement,l=o.hideArrow,u=o.status,f=o.styles,c=f.arrow.length,d=f.floater,p=f.floaterCentered,h=f.floaterClosing,v=f.floaterOpening,O=f.floaterWithAnimation,y=f.floaterWithComponent,m={};return l||(s.startsWith("top")?m.padding="0 0 ".concat(c,"px"):s.startsWith("bottom")?m.padding="".concat(c,"px 0 0"):s.startsWith("left")?m.padding="0 ".concat(c,"px 0 0"):s.startsWith("right")&&(m.padding="0 0 0 ".concat(c,"px"))),[$.OPENING,$.OPEN].indexOf(u)!==-1&&(m=K(K({},m),v)),u===$.CLOSING&&(m=K(K({},m),h)),u===$.OPEN&&!i&&(m=K(K({},m),O)),s==="center"&&(m=K(K({},m),p)),a&&(m=K(K({},m),y)),K(K({},d),m)}},{key:"render",value:function(){var o=this.props,i=o.component,a=o.handleClick,s=o.hideArrow,l=o.setFloaterRef,u=o.status,f={},c=["__floater"];return i?w.isValidElement(i)?f.content=w.cloneElement(i,{closeFn:a}):f.content=i({closeFn:a}):f.content=w.createElement(Ur,this.props),u===$.OPEN&&c.push("__floater__open"),s||(f.arrow=w.createElement($r,this.props)),w.createElement("div",{ref:l,className:c.join(" "),style:this.style},w.createElement("div",{className:"__floater__body"},f.content,f.arrow))}}]),n})(w.Component);ne(zr,"propTypes",{component:T.oneOfType([T.func,T.element]),content:T.node,disableAnimation:T.bool.isRequired,footer:T.node,handleClick:T.func.isRequired,hideArrow:T.bool.isRequired,open:T.bool,placement:T.string.isRequired,positionWrapper:T.bool.isRequired,setArrowRef:T.func.isRequired,setFloaterRef:T.func.isRequired,showCloseButton:T.bool,status:T.string.isRequired,styles:T.object.isRequired,title:T.node});var Yr=(function(e){gt(n,e);var t=bt(n);function n(){return yt(this,n),t.apply(this,arguments)}return vt(n,[{key:"render",value:function(){var o=this.props,i=o.children,a=o.handleClick,s=o.handleMouseEnter,l=o.handleMouseLeave,u=o.setChildRef,f=o.setWrapperRef,c=o.style,d=o.styles,p;if(i)if(w.Children.count(i)===1)if(!w.isValidElement(i))p=w.createElement("span",null,i);else{var h=g.function(i.type)?"innerRef":"ref";p=w.cloneElement(w.Children.only(i),ne({},h,u))}else p=i;return p?w.createElement("span",{ref:f,style:K(K({},d),c),onClick:a,onMouseEnter:s,onMouseLeave:l},p):null}}]),n})(w.Component);ne(Yr,"propTypes",{children:T.node,handleClick:T.func.isRequired,handleMouseEnter:T.func.isRequired,handleMouseLeave:T.func.isRequired,setChildRef:T.func.isRequired,setWrapperRef:T.func.isRequired,style:T.object,styles:T.object.isRequired});var Wa={zIndex:100};function Aa(e){var t=ye(Wa,e.options||{});return{wrapper:{cursor:"help",display:"inline-flex",flexDirection:"column",zIndex:t.zIndex},wrapperPosition:{left:-1e3,position:"absolute",top:-1e3,visibility:"hidden"},floater:{display:"inline-block",filter:"drop-shadow(0 0 3px rgba(0, 0, 0, 0.3))",maxWidth:300,opacity:0,position:"relative",transition:"opacity 0.3s",visibility:"hidden",zIndex:t.zIndex},floaterOpening:{opacity:1,visibility:"visible"},floaterWithAnimation:{opacity:1,transition:"opacity 0.3s, transform 0.2s",visibility:"visible"},floaterWithComponent:{maxWidth:"100%"},floaterClosing:{opacity:0,visibility:"visible"},floaterCentered:{left:"50%",position:"fixed",top:"50%",transform:"translate(-50%, -50%)"},container:{backgroundColor:"#fff",color:"#666",minHeight:60,minWidth:200,padding:20,position:"relative",zIndex:10},title:{borderBottom:"1px solid #555",color:"#555",fontSize:18,marginBottom:5,paddingBottom:6,paddingRight:18},content:{fontSize:15},close:{backgroundColor:"transparent",border:0,borderRadius:0,color:"#555",fontSize:0,height:15,outline:"none",padding:10,position:"absolute",right:0,top:0,width:15,WebkitAppearance:"none"},footer:{borderTop:"1px solid #ccc",fontSize:13,marginTop:10,paddingTop:5},arrow:{color:"#fff",display:"inline-flex",length:16,margin:8,position:"absolute",spread:32},options:t}}var _a=["arrow","flip","offset"],ja=["position","top","right","bottom","left"],vn=(function(e){gt(n,e);var t=bt(n);function n(r){var o;return yt(this,n),o=t.call(this,r),ne(xe(o),"setArrowRef",function(i){o.arrowRef=i}),ne(xe(o),"setChildRef",function(i){o.childRef=i}),ne(xe(o),"setFloaterRef",function(i){o.floaterRef=i}),ne(xe(o),"setWrapperRef",function(i){o.wrapperRef=i}),ne(xe(o),"handleTransitionEnd",function(){var i=o.state.status,a=o.props.callback;o.wrapperPopper&&o.wrapperPopper.instance.update(),o.setState({status:i===$.OPENING?$.OPEN:$.IDLE},function(){var s=o.state.status;a(s===$.OPEN?"open":"close",o.props)})}),ne(xe(o),"handleClick",function(){var i=o.props,a=i.event,s=i.open;if(!g.boolean(s)){var l=o.state,u=l.positionWrapper,f=l.status;(o.event==="click"||o.event==="hover"&&u)&&(St({title:"click",data:[{event:a,status:f===$.OPEN?"closing":"opening"}],debug:o.debug}),o.toggle())}}),ne(xe(o),"handleMouseEnter",function(){var i=o.props,a=i.event,s=i.open;if(!(g.boolean(s)||Kt())){var l=o.state.status;o.event==="hover"&&l===$.IDLE&&(St({title:"mouseEnter",data:[{key:"originalEvent",value:a}],debug:o.debug}),clearTimeout(o.eventDelayTimeout),o.toggle())}}),ne(xe(o),"handleMouseLeave",function(){var i=o.props,a=i.event,s=i.eventDelay,l=i.open;if(!(g.boolean(l)||Kt())){var u=o.state,f=u.status,c=u.positionWrapper;o.event==="hover"&&(St({title:"mouseLeave",data:[{key:"originalEvent",value:a}],debug:o.debug}),s?[$.OPENING,$.OPEN].indexOf(f)!==-1&&!c&&!o.eventDelayTimeout&&(o.eventDelayTimeout=setTimeout(function(){delete o.eventDelayTimeout,o.toggle()},s*1e3)):o.toggle($.IDLE))}}),o.state={currentPlacement:r.placement,needsUpdate:!1,positionWrapper:r.wrapperOptions.position&&!!r.target,status:$.INIT,statusWrapper:$.INIT},o._isMounted=!1,o.hasMounted=!1,Oe()&&window.addEventListener("load",function(){o.popper&&o.popper.instance.update(),o.wrapperPopper&&o.wrapperPopper.instance.update()}),o}return vt(n,[{key:"componentDidMount",value:function(){if(Oe()){var o=this.state.positionWrapper,i=this.props,a=i.children,s=i.open,l=i.target;this._isMounted=!0,St({title:"init",data:{hasChildren:!!a,hasTarget:!!l,isControlled:g.boolean(s),positionWrapper:o,target:this.target,floater:this.floaterRef},debug:this.debug}),this.hasMounted||(this.initPopper(),this.hasMounted=!0),!a&&l&&g.boolean(s)}}},{key:"componentDidUpdate",value:function(o,i){if(Oe()){var a=this.props,s=a.autoOpen,l=a.open,u=a.target,f=a.wrapperOptions,c=va(i,this.state),d=c.changedFrom,p=c.changed;if(o.open!==l){var h;g.boolean(l)&&(h=l?$.OPENING:$.CLOSING),this.toggle(h)}(o.wrapperOptions.position!==f.position||o.target!==u)&&this.changeWrapperPosition(this.props),p("status",$.IDLE)&&l?this.toggle($.OPEN):d("status",$.INIT,$.IDLE)&&s&&this.toggle($.OPEN),this.popper&&p("status",$.OPENING)&&this.popper.instance.update(),this.floaterRef&&(p("status",$.OPENING)||p("status",$.CLOSING))&&Ia(this.floaterRef,"transitionend",this.handleTransitionEnd),p("needsUpdate",!0)&&this.rebuildPopper()}}},{key:"componentWillUnmount",value:function(){Oe()&&(this._isMounted=!1,this.popper&&this.popper.instance.destroy(),this.wrapperPopper&&this.wrapperPopper.instance.destroy())}},{key:"initPopper",value:function(){var o=this,i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.target,a=this.state.positionWrapper,s=this.props,l=s.disableFlip,u=s.getPopper,f=s.hideArrow,c=s.offset,d=s.placement,p=s.wrapperOptions,h=d==="top"||d==="bottom"?"flip":["right","bottom-end","top-end","left","top-start","bottom-start"];if(d==="center")this.setState({status:$.IDLE});else if(i&&this.floaterRef){var v=this.options,O=v.arrow,y=v.flip,m=v.offset,S=Fr(v,_a);new ut(i,this.floaterRef,{placement:d,modifiers:K({arrow:K({enabled:!f,element:this.arrowRef},O),flip:K({enabled:!l,behavior:h},y),offset:K({offset:"0, ".concat(c,"px")},m)},S),onCreate:function(C){var M;if(o.popper=C,!((M=o.floaterRef)!==null&&M!==void 0&&M.isConnected)){o.setState({needsUpdate:!0});return}u(C,"floater"),o._isMounted&&o.setState({currentPlacement:C.placement,status:$.IDLE}),d!==C.placement&&setTimeout(function(){C.instance.update()},1)},onUpdate:function(C){o.popper=C;var M=o.state.currentPlacement;o._isMounted&&C.placement!==M&&o.setState({currentPlacement:C.placement})}})}if(a){var D=g.undefined(p.offset)?0:p.offset;new ut(this.target,this.wrapperRef,{placement:p.placement||d,modifiers:{arrow:{enabled:!1},offset:{offset:"0, ".concat(D,"px")},flip:{enabled:!1}},onCreate:function(C){o.wrapperPopper=C,o._isMounted&&o.setState({statusWrapper:$.IDLE}),u(C,"wrapper"),d!==C.placement&&setTimeout(function(){C.instance.update()},1)}})}}},{key:"rebuildPopper",value:function(){var o=this;this.floaterRefInterval=setInterval(function(){var i;(i=o.floaterRef)!==null&&i!==void 0&&i.isConnected&&(clearInterval(o.floaterRefInterval),o.setState({needsUpdate:!1}),o.initPopper())},50)}},{key:"changeWrapperPosition",value:function(o){var i=o.target,a=o.wrapperOptions;this.setState({positionWrapper:a.position&&!!i})}},{key:"toggle",value:function(o){var i=this.state.status,a=i===$.OPEN?$.CLOSING:$.OPENING;g.undefined(o)||(a=o),this.setState({status:a})}},{key:"debug",get:function(){var o=this.props.debug;return o||Oe()&&"ReactFloaterDebug"in window&&!!window.ReactFloaterDebug}},{key:"event",get:function(){var o=this.props,i=o.disableHoverToClick,a=o.event;return a==="hover"&&Kt()&&!i?"click":a}},{key:"options",get:function(){var o=this.props.options;return ye(Ea,o||{})}},{key:"styles",get:function(){var o=this,i=this.state,a=i.status,s=i.positionWrapper,l=i.statusWrapper,u=this.props.styles,f=ye(Aa(u),u);if(s){var c;[$.IDLE].indexOf(a)===-1||[$.IDLE].indexOf(l)===-1?c=f.wrapperPosition:c=this.wrapperPopper.styles,f.wrapper=K(K({},f.wrapper),c)}if(this.target){var d=window.getComputedStyle(this.target);this.wrapperStyles?f.wrapper=K(K({},f.wrapper),this.wrapperStyles):["relative","static"].indexOf(d.position)===-1&&(this.wrapperStyles={},s||(ja.forEach(function(p){o.wrapperStyles[p]=d[p]}),f.wrapper=K(K({},f.wrapper),this.wrapperStyles),this.target.style.position="relative",this.target.style.top="auto",this.target.style.right="auto",this.target.style.bottom="auto",this.target.style.left="auto"))}return f}},{key:"target",get:function(){if(!Oe())return null;var o=this.props.target;return o?g.domElement(o)?o:document.querySelector(o):this.childRef||this.wrapperRef}},{key:"render",value:function(){var o=this.state,i=o.currentPlacement,a=o.positionWrapper,s=o.status,l=this.props,u=l.children,f=l.component,c=l.content,d=l.disableAnimation,p=l.footer,h=l.hideArrow,v=l.id,O=l.open,y=l.showCloseButton,m=l.style,S=l.target,D=l.title,E=w.createElement(Yr,{handleClick:this.handleClick,handleMouseEnter:this.handleMouseEnter,handleMouseLeave:this.handleMouseLeave,setChildRef:this.setChildRef,setWrapperRef:this.setWrapperRef,style:m,styles:this.styles.wrapper},u),C={};return a?C.wrapperInPortal=E:C.wrapperAsChildren=E,w.createElement("span",null,w.createElement(Br,{hasChildren:!!u,id:v,placement:i,setRef:this.setFloaterRef,target:S,zIndex:this.styles.options.zIndex},w.createElement(zr,{component:f,content:c,disableAnimation:d,footer:p,handleClick:this.handleClick,hideArrow:h||i==="center",open:O,placement:i,positionWrapper:a,setArrowRef:this.setArrowRef,setFloaterRef:this.setFloaterRef,showCloseButton:y,status:s,styles:this.styles,title:D}),C.wrapperInPortal),C.wrapperAsChildren)}}]),n})(w.Component);ne(vn,"propTypes",{autoOpen:T.bool,callback:T.func,children:T.node,component:Zn(T.oneOfType([T.func,T.element]),function(e){return!e.content}),content:Zn(T.node,function(e){return!e.component}),debug:T.bool,disableAnimation:T.bool,disableFlip:T.bool,disableHoverToClick:T.bool,event:T.oneOf(["hover","click"]),eventDelay:T.number,footer:T.node,getPopper:T.func,hideArrow:T.bool,id:T.oneOfType([T.string,T.number]),offset:T.number,open:T.bool,options:T.object,placement:T.oneOf(["top","top-start","top-end","bottom","bottom-start","bottom-end","left","left-start","left-end","right","right-start","right-end","auto","center"]),showCloseButton:T.bool,style:T.object,styles:T.object,target:T.oneOfType([T.object,T.string]),title:T.node,wrapperOptions:T.shape({offset:T.number,placement:T.oneOf(["top","top-start","top-end","bottom","bottom-start","bottom-end","left","left-start","left-end","right","right-start","right-end","auto"]),position:T.bool})});ne(vn,"defaultProps",{autoOpen:!1,callback:Jn,debug:!1,disableAnimation:!1,disableFlip:!1,disableHoverToClick:!1,event:"click",eventDelay:.4,getPopper:Jn,hideArrow:!1,offset:15,placement:"bottom",showCloseButton:!1,styles:{},target:null,wrapperOptions:{position:!1}});var Fa=Object.defineProperty,La=(e,t,n)=>t in e?Fa(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,P=(e,t,n)=>La(e,typeof t!="symbol"?t+"":t,n),z={INIT:"init",START:"start",STOP:"stop",RESET:"reset",PREV:"prev",NEXT:"next",GO:"go",CLOSE:"close",SKIP:"skip",UPDATE:"update"},me={TOUR_START:"tour:start",STEP_BEFORE:"step:before",BEACON:"beacon",TOOLTIP:"tooltip",STEP_AFTER:"step:after",TOUR_END:"tour:end",TOUR_STATUS:"tour:status",TARGET_NOT_FOUND:"error:target_not_found"},A={INIT:"init",READY:"ready",BEACON:"beacon",TOOLTIP:"tooltip",COMPLETE:"complete",ERROR:"error"},B={IDLE:"idle",READY:"ready",WAITING:"waiting",RUNNING:"running",PAUSED:"paused",SKIPPED:"skipped",FINISHED:"finished"};function Re(){var e;return!!(typeof window<"u"&&((e=window.document)!=null&&e.createElement))}function qr(e){return e?e.getBoundingClientRect():null}function Ba(e=!1){const{body:t,documentElement:n}=document;if(!t||!n)return 0;if(e){const r=[t.scrollHeight,t.offsetHeight,n.clientHeight,n.scrollHeight,n.offsetHeight].sort((i,a)=>i-a),o=Math.floor(r.length/2);return r.length%2===0?(r[o-1]+r[o])/2:r[o]}return Math.max(t.scrollHeight,t.offsetHeight,n.clientHeight,n.scrollHeight,n.offsetHeight)}function Ne(e){if(typeof e=="string")try{return document.querySelector(e)}catch{return null}return e}function $a(e){return!e||e.nodeType!==1?null:getComputedStyle(e)}function ft(e,t,n){if(!e)return Fe();const r=wr(e);if(r){if(r.isSameNode(Fe()))return n?document:Fe();if(!(r.scrollHeight>r.offsetHeight)&&!t)return r.style.overflow="initial",Fe()}return r}function At(e,t){if(!e)return!1;const n=ft(e,t);return n?!n.isSameNode(Fe()):!1}function Ha(e){return e.offsetParent!==document.body}function Xe(e,t="fixed"){if(!e||!(e instanceof HTMLElement))return!1;const{nodeName:n}=e,r=$a(e);return n==="BODY"||n==="HTML"?!1:r&&r.position===t?!0:e.parentNode?Xe(e.parentNode,t):!1}function Ua(e){var t;if(!e)return!1;let n=e;for(;n&&n!==document.body;){if(n instanceof HTMLElement){const{display:r,visibility:o}=getComputedStyle(n);if(r==="none"||o==="hidden")return!1}n=(t=n.parentElement)!=null?t:null}return!0}function za(e,t,n){var r,o,i;const a=qr(e),s=ft(e,n),l=At(e,n),u=Xe(e);let f=0,c=(r=a?.top)!=null?r:0;if(l&&u){const d=(o=e?.offsetTop)!=null?o:0,p=(i=s?.scrollTop)!=null?i:0;c=d-p}else s instanceof HTMLElement&&(f=s.scrollTop,!l&&!Xe(e)&&(c+=f),s.isSameNode(Fe())||(c+=Fe().scrollTop));return Math.floor(c-t)}function Ya(e,t,n){var r;if(!e)return 0;const{offsetTop:o=0,scrollTop:i=0}=(r=wr(e))!=null?r:{};let a=e.getBoundingClientRect().top+i;o&&(At(e,n)||Ha(e))&&(a-=o);const s=Math.floor(a-t);return s<0?0:s}function Fe(){var e;return(e=document.scrollingElement)!=null?e:document.documentElement}function qa(e,t){const{duration:n,element:r}=t;return new Promise((o,i)=>{const{scrollTop:a}=r,s=e>a?e-a:a-e;fs.top(r,e,{duration:s<100?50:n},l=>l&&l.message!=="Element already at target scroll position"?i(l):o())})}var st=kt.createPortal!==void 0;function Gr(e=navigator.userAgent){let t=e;return typeof window>"u"?t="node":document.documentMode?t="ie":/Edge/.test(e)?t="edge":window.opera||e.includes(" OPR/")?t="opera":typeof window.InstallTrigger<"u"?t="firefox":window.chrome?t="chrome":/(Version\/([\d._]+).*Safari|CriOS|FxiOS| Mobile\/)/.test(e)&&(t="safari"),t}function Tt(e){return Object.prototype.toString.call(e).slice(8,-1).toLowerCase()}function Se(e,t={}){const{defaultValue:n,step:r,steps:o}=t;let i=An(e);if(i)(i.includes("{step}")||i.includes("{steps}"))&&r&&o&&(i=i.replace("{step}",r.toString()).replace("{steps}",o.toString()));else if(b.isValidElement(e)&&!Object.values(e.props).length&&Tt(e.type)==="function"){const a=e.type({});i=Se(a,t)}else i=An(n);return i}function Ga(e,t){return!N.plainObject(e)||!N.array(t)?!1:Object.keys(e).every(n=>t.includes(n))}function Va(e){const t=/^#?([\da-f])([\da-f])([\da-f])$/i,n=e.replace(t,(o,i,a,s)=>i+i+a+a+s+s),r=/^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i.exec(n);return r?[parseInt(r[1],16),parseInt(r[2],16),parseInt(r[3],16)]:[]}function Xn(e){return e.disableBeacon||e.placement==="center"}function Qn(){return!["chrome","safari","firefox","opera"].includes(Gr())}function $e({data:e,debug:t=!1,title:n,warn:r=!1}){const o=r?console.warn||console.error:console.log;t&&(n&&e?(console.groupCollapsed(`%creact-joyride: ${n}`,"color: #ff0044; font-weight: bold; font-size: 12px;"),Array.isArray(e)?e.forEach(i=>{N.plainObject(i)&&i.key?o.apply(console,[i.key,i.value]):o.apply(console,[i])}):o.apply(console,[e]),console.groupEnd()):console.error("Missing title or data props"))}function Ka(e){return Object.keys(e)}function Vr(e,...t){if(!N.plainObject(e))throw new TypeError("Expected an object");const n={};for(const r in e)({}).hasOwnProperty.call(e,r)&&(t.includes(r)||(n[r]=e[r]));return n}function Za(e,...t){if(!N.plainObject(e))throw new TypeError("Expected an object");if(!t.length)return e;const n={};for(const r in e)({}).hasOwnProperty.call(e,r)&&t.includes(r)&&(n[r]=e[r]);return n}function an(e,t,n){const r=i=>i.replace("{step}",String(t)).replace("{steps}",String(n));if(Tt(e)==="string")return r(e);if(!b.isValidElement(e))return e;const{children:o}=e.props;if(Tt(o)==="string"&&o.includes("{step}"))return b.cloneElement(e,{children:r(o)});if(Array.isArray(o))return b.cloneElement(e,{children:o.map(i=>typeof i=="string"?r(i):an(i,t,n))});if(Tt(e.type)==="function"&&!Object.values(e.props).length){const i=e.type({});return an(i,t,n)}return e}function Ja(e){const{isFirstStep:t,lifecycle:n,previousLifecycle:r,scrollToFirstStep:o,step:i,target:a}=e;return!i.disableScrolling&&(!t||o||n===A.TOOLTIP)&&i.placement!=="center"&&(!i.isFixed||!Xe(a))&&r!==n&&[A.BEACON,A.TOOLTIP].includes(n)}var Xa={options:{preventOverflow:{boundariesElement:"scrollParent"}},wrapperOptions:{offset:-18,position:!0}},Kr={back:"Back",close:"Close",last:"Last",next:"Next",nextLabelWithProgress:"Next (Step {step} of {steps})",open:"Open the dialog",skip:"Skip"},Qa={event:"click",placement:"bottom",offset:10,disableBeacon:!1,disableCloseOnEsc:!1,disableOverlay:!1,disableOverlayClose:!1,disableScrollParentFix:!1,disableScrolling:!1,hideBackButton:!1,hideCloseButton:!1,hideFooter:!1,isFixed:!1,locale:Kr,showProgress:!1,showSkipButton:!1,spotlightClicks:!1,spotlightPadding:10},el={continuous:!1,debug:!1,disableCloseOnEsc:!1,disableOverlay:!1,disableOverlayClose:!1,disableScrolling:!1,disableScrollParentFix:!1,getHelpers:void 0,hideBackButton:!1,run:!0,scrollOffset:20,scrollDuration:300,scrollToFirstStep:!1,showSkipButton:!1,showProgress:!1,spotlightClicks:!1,spotlightPadding:10,steps:[]},tl={arrowColor:"#fff",backgroundColor:"#fff",beaconSize:36,overlayColor:"rgba(0, 0, 0, 0.5)",primaryColor:"#f04",spotlightShadow:"0 0 15px rgba(0, 0, 0, 0.5)",textColor:"#333",width:380,zIndex:100},at={backgroundColor:"transparent",border:0,borderRadius:0,color:"#555",cursor:"pointer",fontSize:16,lineHeight:1,padding:8,WebkitAppearance:"none"},er={borderRadius:4,position:"absolute"};function nl(e,t){var n,r,o,i,a;const{floaterProps:s,styles:l}=e,u=ye((n=t.floaterProps)!=null?n:{},s??{}),f=ye(l??{},(r=t.styles)!=null?r:{}),c=ye(tl,f.options||{}),d=t.placement==="center"||t.disableBeacon;let{width:p}=c;window.innerWidth>480&&(p=380),"width"in c&&(p=typeof c.width=="number"&&window.innerWidthZr(n,t)):($e({title:"validateSteps",data:"steps must be an array",warn:!0,debug:t}),!1)}var Jr={action:"init",controlled:!1,index:0,lifecycle:A.INIT,origin:null,size:0,status:B.IDLE},nr=Ka(Vr(Jr,"controlled","size")),ol=class{constructor(e){P(this,"beaconPopper"),P(this,"tooltipPopper"),P(this,"data",new Map),P(this,"listener"),P(this,"store",new Map),P(this,"addListener",o=>{this.listener=o}),P(this,"setSteps",o=>{const{size:i,status:a}=this.getState(),s={size:o.length,status:a};this.data.set("steps",o),a===B.WAITING&&!i&&o.length&&(s.status=B.RUNNING),this.setState(s)}),P(this,"getPopper",o=>o==="beacon"?this.beaconPopper:this.tooltipPopper),P(this,"setPopper",(o,i)=>{o==="beacon"?this.beaconPopper=i:this.tooltipPopper=i}),P(this,"cleanupPoppers",()=>{this.beaconPopper=null,this.tooltipPopper=null}),P(this,"close",(o=null)=>{const{index:i,status:a}=this.getState();a===B.RUNNING&&this.setState({...this.getNextState({action:z.CLOSE,index:i+1,origin:o})})}),P(this,"go",o=>{const{controlled:i,status:a}=this.getState();if(i||a!==B.RUNNING)return;const s=this.getSteps()[o];this.setState({...this.getNextState({action:z.GO,index:o}),status:s?a:B.FINISHED})}),P(this,"info",()=>this.getState()),P(this,"next",()=>{const{index:o,status:i}=this.getState();i===B.RUNNING&&this.setState(this.getNextState({action:z.NEXT,index:o+1}))}),P(this,"open",()=>{const{status:o}=this.getState();o===B.RUNNING&&this.setState({...this.getNextState({action:z.UPDATE,lifecycle:A.TOOLTIP})})}),P(this,"prev",()=>{const{index:o,status:i}=this.getState();i===B.RUNNING&&this.setState({...this.getNextState({action:z.PREV,index:o-1})})}),P(this,"reset",(o=!1)=>{const{controlled:i}=this.getState();i||this.setState({...this.getNextState({action:z.RESET,index:0}),status:o?B.RUNNING:B.READY})}),P(this,"skip",()=>{const{status:o}=this.getState();o===B.RUNNING&&this.setState({action:z.SKIP,lifecycle:A.INIT,status:B.SKIPPED})}),P(this,"start",o=>{const{index:i,size:a}=this.getState();this.setState({...this.getNextState({action:z.START,index:N.number(o)?o:i},!0),status:a?B.RUNNING:B.WAITING})}),P(this,"stop",(o=!1)=>{const{index:i,status:a}=this.getState();[B.FINISHED,B.SKIPPED].includes(a)||this.setState({...this.getNextState({action:z.STOP,index:i+(o?1:0)}),status:B.PAUSED})}),P(this,"update",o=>{var i,a;if(!Ga(o,nr))throw new Error(`State is not valid. Valid keys: ${nr.join(", ")}`);this.setState({...this.getNextState({...this.getState(),...o,action:(i=o.action)!=null?i:z.UPDATE,origin:(a=o.origin)!=null?a:null},!0)})});const{continuous:t=!1,stepIndex:n,steps:r=[]}=e??{};this.setState({action:z.INIT,controlled:N.number(n),continuous:t,index:N.number(n)?n:0,lifecycle:A.INIT,origin:null,status:r.length?B.READY:B.IDLE},!0),this.beaconPopper=null,this.tooltipPopper=null,this.listener=null,this.setSteps(r)}getState(){return this.store.size?{action:this.store.get("action")||"",controlled:this.store.get("controlled")||!1,index:parseInt(this.store.get("index"),10),lifecycle:this.store.get("lifecycle")||"",origin:this.store.get("origin")||null,size:this.store.get("size")||0,status:this.store.get("status")||""}:{...Jr}}getNextState(e,t=!1){var n,r,o,i,a;const{action:s,controlled:l,index:u,size:f,status:c}=this.getState(),d=N.number(e.index)?e.index:u,p=l&&!t?u:Math.min(Math.max(d,0),f);return{action:(n=e.action)!=null?n:s,controlled:l,index:p,lifecycle:(r=e.lifecycle)!=null?r:A.INIT,origin:(o=e.origin)!=null?o:null,size:(i=e.size)!=null?i:f,status:p===f?B.FINISHED:(a=e.status)!=null?a:c}}getSteps(){const e=this.data.get("steps");return Array.isArray(e)?e:[]}hasUpdatedState(e){const t=JSON.stringify(e),n=JSON.stringify(this.getState());return t!==n}setState(e,t=!1){const n=this.getState(),{action:r,index:o,lifecycle:i,origin:a=null,size:s,status:l}={...n,...e};this.store.set("action",r),this.store.set("index",o),this.store.set("lifecycle",i),this.store.set("origin",a),this.store.set("size",s),this.store.set("status",l),t&&(this.store.set("controlled",e.controlled),this.store.set("continuous",e.continuous)),this.listener&&this.hasUpdatedState(n)&&this.listener(this.getState())}getHelpers(){return{close:this.close,go:this.go,info:this.info,next:this.next,open:this.open,prev:this.prev,reset:this.reset,skip:this.skip}}};function il(e){return new ol(e)}function sl({styles:e}){return b.createElement("div",{key:"JoyrideSpotlight",className:"react-joyride__spotlight","data-test-id":"spotlight",style:e})}var al=sl,ll=class extends b.Component{constructor(){super(...arguments),P(this,"isActive",!1),P(this,"resizeTimeout"),P(this,"scrollTimeout"),P(this,"scrollParent"),P(this,"state",{isScrolling:!1,mouseOverSpotlight:!1,showSpotlight:!0}),P(this,"hideSpotlight",()=>{const{continuous:e,disableOverlay:t,lifecycle:n}=this.props,r=[A.INIT,A.BEACON,A.COMPLETE,A.ERROR];return t||(e?r.includes(n):n!==A.TOOLTIP)}),P(this,"handleMouseMove",e=>{const{mouseOverSpotlight:t}=this.state,{height:n,left:r,position:o,top:i,width:a}=this.spotlightStyles,s=o==="fixed"?e.clientY:e.pageY,l=o==="fixed"?e.clientX:e.pageX,u=s>=i&&s<=i+n,c=l>=r&&l<=r+a&&u;c!==t&&this.updateState({mouseOverSpotlight:c})}),P(this,"handleScroll",()=>{const{target:e}=this.props,t=Ne(e);if(this.scrollParent!==document){const{isScrolling:n}=this.state;n||this.updateState({isScrolling:!0,showSpotlight:!1}),clearTimeout(this.scrollTimeout),this.scrollTimeout=window.setTimeout(()=>{this.updateState({isScrolling:!1,showSpotlight:!0})},50)}else Xe(t,"sticky")&&this.updateState({})}),P(this,"handleResize",()=>{clearTimeout(this.resizeTimeout),this.resizeTimeout=window.setTimeout(()=>{this.isActive&&this.forceUpdate()},100)})}componentDidMount(){const{debug:e,disableScrolling:t,disableScrollParentFix:n=!1,target:r}=this.props,o=Ne(r);this.scrollParent=ft(o??document.body,n,!0),this.isActive=!0,window.addEventListener("resize",this.handleResize)}componentDidUpdate(e){var t;const{disableScrollParentFix:n,lifecycle:r,spotlightClicks:o,target:i}=this.props,{changed:a}=Mt(e,this.props);if(a("target")||a("disableScrollParentFix")){const s=Ne(i);this.scrollParent=ft(s??document.body,n,!0)}a("lifecycle",A.TOOLTIP)&&((t=this.scrollParent)==null||t.addEventListener("scroll",this.handleScroll,{passive:!0}),setTimeout(()=>{const{isScrolling:s}=this.state;s||this.updateState({showSpotlight:!0})},100)),(a("spotlightClicks")||a("disableOverlay")||a("lifecycle"))&&(o&&r===A.TOOLTIP?window.addEventListener("mousemove",this.handleMouseMove,!1):r!==A.TOOLTIP&&window.removeEventListener("mousemove",this.handleMouseMove))}componentWillUnmount(){var e;this.isActive=!1,window.removeEventListener("mousemove",this.handleMouseMove),window.removeEventListener("resize",this.handleResize),clearTimeout(this.resizeTimeout),clearTimeout(this.scrollTimeout),(e=this.scrollParent)==null||e.removeEventListener("scroll",this.handleScroll)}get overlayStyles(){const{mouseOverSpotlight:e}=this.state,{disableOverlayClose:t,placement:n,styles:r}=this.props;let o=r.overlay;return Qn()&&(o=n==="center"?r.overlayLegacyCenter:r.overlayLegacy),{cursor:t?"default":"pointer",height:Ba(),pointerEvents:e?"none":"auto",...o}}get spotlightStyles(){var e,t,n;const{showSpotlight:r}=this.state,{disableScrollParentFix:o=!1,spotlightClicks:i,spotlightPadding:a=0,styles:s,target:l}=this.props,u=Ne(l),f=qr(u),c=Xe(u),d=za(u,a,o);return{...Qn()?s.spotlightLegacy:s.spotlight,height:Math.round(((e=f?.height)!=null?e:0)+a*2),left:Math.round(((t=f?.left)!=null?t:0)-a),opacity:r?1:0,pointerEvents:i?"none":"auto",position:c?"fixed":"absolute",top:d,transition:"opacity 0.2s",width:Math.round(((n=f?.width)!=null?n:0)+a*2)}}updateState(e){this.isActive&&this.setState(t=>({...t,...e}))}render(){const{showSpotlight:e}=this.state,{onClickOverlay:t,placement:n}=this.props,{hideSpotlight:r,overlayStyles:o,spotlightStyles:i}=this;if(r())return null;let a=n!=="center"&&e&&b.createElement(al,{styles:i});if(Gr()==="safari"){const{mixBlendMode:s,zIndex:l,...u}=o;a=b.createElement("div",{style:{...u}},a),delete o.backgroundColor}return b.createElement("div",{className:"react-joyride__overlay","data-test-id":"overlay",onClick:t,role:"presentation",style:o},a)}},cl=class extends b.Component{constructor(){super(...arguments),P(this,"node",null)}componentDidMount(){const{id:e}=this.props;Re()&&(this.node=document.createElement("div"),this.node.id=e,document.body.appendChild(this.node),st||this.renderReact15())}componentDidUpdate(){Re()&&(st||this.renderReact15())}componentWillUnmount(){!Re()||!this.node||(st||kt.unmountComponentAtNode(this.node),this.node.parentNode===document.body&&(document.body.removeChild(this.node),this.node=null))}renderReact15(){if(!Re())return;const{children:e}=this.props;this.node&&kt.unstable_renderSubtreeIntoContainer(this,e,this.node)}renderReact16(){if(!Re()||!st)return null;const{children:e}=this.props;return this.node?kt.createPortal(e,this.node):null}render(){return st?this.renderReact16():null}},ul=class{constructor(e,t){if(P(this,"element"),P(this,"options"),P(this,"canBeTabbed",n=>{const{tabIndex:r}=n;return r===null||r<0?!1:this.canHaveFocus(n)}),P(this,"canHaveFocus",n=>{const r=/input|select|textarea|button|object/,o=n.nodeName.toLowerCase();return(r.test(o)&&!n.getAttribute("disabled")||o==="a"&&!!n.getAttribute("href"))&&this.isVisible(n)}),P(this,"findValidTabElements",()=>[].slice.call(this.element.querySelectorAll("*"),0).filter(this.canBeTabbed)),P(this,"handleKeyDown",n=>{const{code:r="Tab"}=this.options;n.code===r&&this.interceptTab(n)}),P(this,"interceptTab",n=>{n.preventDefault();const r=this.findValidTabElements(),{shiftKey:o}=n;if(!r.length)return;let i=document.activeElement?r.indexOf(document.activeElement):0;i===-1||!o&&i+1===r.length?i=0:o&&i===0?i=r.length-1:i+=o?-1:1,r[i].focus()}),P(this,"isHidden",n=>{const r=n.offsetWidth<=0&&n.offsetHeight<=0,o=window.getComputedStyle(n);return r&&!n.innerHTML?!0:r&&o.getPropertyValue("overflow")!=="visible"||o.getPropertyValue("display")==="none"}),P(this,"isVisible",n=>{let r=n;for(;r;)if(r instanceof HTMLElement){if(r===document.body)break;if(this.isHidden(r))return!1;r=r.parentNode}return!0}),P(this,"removeScope",()=>{window.removeEventListener("keydown",this.handleKeyDown)}),P(this,"checkFocus",n=>{document.activeElement!==n&&(n.focus(),window.requestAnimationFrame(()=>this.checkFocus(n)))}),P(this,"setFocus",()=>{const{selector:n}=this.options;if(!n)return;const r=this.element.querySelector(n);r&&window.requestAnimationFrame(()=>this.checkFocus(r))}),!(e instanceof HTMLElement))throw new TypeError("Invalid parameter: element must be an HTMLElement");this.element=e,this.options=t,window.addEventListener("keydown",this.handleKeyDown,!1),this.setFocus()}},fl=class extends b.Component{constructor(e){if(super(e),P(this,"beacon",null),P(this,"setBeaconRef",o=>{this.beacon=o}),e.beaconComponent)return;const t=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.id="joyride-beacon-animation",e.nonce&&n.setAttribute("nonce",e.nonce),n.appendChild(document.createTextNode(` + @keyframes joyride-beacon-inner { + 20% { + opacity: 0.9; + } + + 90% { + opacity: 0.7; + } + } + + @keyframes joyride-beacon-outer { + 0% { + transform: scale(1); + } + + 45% { + opacity: 0.7; + transform: scale(0.75); + } + + 100% { + opacity: 0.9; + transform: scale(1); + } + } + `)),t.appendChild(n)}componentDidMount(){const{shouldFocus:e}=this.props;setTimeout(()=>{N.domElement(this.beacon)&&e&&this.beacon.focus()},0)}componentWillUnmount(){const e=document.getElementById("joyride-beacon-animation");e?.parentNode&&e.parentNode.removeChild(e)}render(){const{beaconComponent:e,continuous:t,index:n,isLastStep:r,locale:o,onClickOrHover:i,size:a,step:s,styles:l}=this.props,u=Se(o.open),f={"aria-label":u,onClick:i,onMouseEnter:i,ref:this.setBeaconRef,title:u};let c;if(e){const d=e;c=b.createElement(d,{continuous:t,index:n,isLastStep:r,size:a,step:s,...f})}else c=b.createElement("button",{key:"JoyrideBeacon",className:"react-joyride__beacon","data-test-id":"button-beacon",style:l.beacon,type:"button",...f},b.createElement("span",{style:l.beaconInner}),b.createElement("span",{style:l.beaconOuter}));return c}};function dl({styles:e,...t}){const{color:n,height:r,width:o,...i}=e;return w.createElement("button",{style:i,type:"button",...t},w.createElement("svg",{height:typeof r=="number"?`${r}px`:r,preserveAspectRatio:"xMidYMid",version:"1.1",viewBox:"0 0 18 18",width:typeof o=="number"?`${o}px`:o,xmlns:"http://www.w3.org/2000/svg"},w.createElement("g",null,w.createElement("path",{d:"M8.13911129,9.00268191 L0.171521827,17.0258467 C-0.0498027049,17.248715 -0.0498027049,17.6098394 0.171521827,17.8327545 C0.28204354,17.9443526 0.427188206,17.9998706 0.572051765,17.9998706 C0.71714958,17.9998706 0.862013139,17.9443526 0.972581703,17.8327545 L9.0000937,9.74924618 L17.0276057,17.8327545 C17.1384085,17.9443526 17.2832721,17.9998706 17.4281356,17.9998706 C17.5729992,17.9998706 17.718097,17.9443526 17.8286656,17.8327545 C18.0499901,17.6098862 18.0499901,17.2487618 17.8286656,17.0258467 L9.86135722,9.00268191 L17.8340066,0.973848225 C18.0553311,0.750979934 18.0553311,0.389855532 17.8340066,0.16694039 C17.6126821,-0.0556467968 17.254037,-0.0556467968 17.0329467,0.16694039 L9.00042166,8.25611765 L0.967006424,0.167268345 C0.745681892,-0.0553188426 0.387317931,-0.0553188426 0.165993399,0.167268345 C-0.0553311331,0.390136635 -0.0553311331,0.751261038 0.165993399,0.974176179 L8.13920499,9.00268191 L8.13911129,9.00268191 Z",fill:n}))))}var pl=dl;function hl(e){const{backProps:t,closeProps:n,index:r,isLastStep:o,primaryProps:i,skipProps:a,step:s,tooltipProps:l}=e,{content:u,hideBackButton:f,hideCloseButton:c,hideFooter:d,showSkipButton:p,styles:h,title:v}=s,O={};return O.primary=b.createElement("button",{"data-test-id":"button-primary",style:h.buttonNext,type:"button",...i}),p&&!o&&(O.skip=b.createElement("button",{"aria-live":"off","data-test-id":"button-skip",style:h.buttonSkip,type:"button",...a})),!f&&r>0&&(O.back=b.createElement("button",{"data-test-id":"button-back",style:h.buttonBack,type:"button",...t})),O.close=!c&&b.createElement(pl,{"data-test-id":"button-close",styles:h.buttonClose,...n}),b.createElement("div",{key:"JoyrideTooltip","aria-label":Se(v??u),className:"react-joyride__tooltip",style:h.tooltip,...l},b.createElement("div",{style:h.tooltipContainer},v&&b.createElement("h1",{"aria-label":Se(v),style:h.tooltipTitle},v),b.createElement("div",{style:h.tooltipContent},u)),!d&&b.createElement("div",{style:h.tooltipFooter},b.createElement("div",{style:h.tooltipFooterSpacer},O.skip),O.back,O.primary),O.close)}var ml=hl,yl=class extends b.Component{constructor(){super(...arguments),P(this,"handleClickBack",e=>{e.preventDefault();const{helpers:t}=this.props;t.prev()}),P(this,"handleClickClose",e=>{e.preventDefault();const{helpers:t}=this.props;t.close("button_close")}),P(this,"handleClickPrimary",e=>{e.preventDefault();const{continuous:t,helpers:n}=this.props;if(!t){n.close("button_primary");return}n.next()}),P(this,"handleClickSkip",e=>{e.preventDefault();const{helpers:t}=this.props;t.skip()}),P(this,"getElementsProps",()=>{const{continuous:e,index:t,isLastStep:n,setTooltipRef:r,size:o,step:i}=this.props,{back:a,close:s,last:l,next:u,nextLabelWithProgress:f,skip:c}=i.locale,d=Se(a),p=Se(s),h=Se(l),v=Se(u),O=Se(c);let y=s,m=p;if(e){if(y=u,m=v,i.showProgress&&!n){const S=Se(f,{step:t+1,steps:o});y=an(f,t+1,o),m=S}n&&(y=l,m=h)}return{backProps:{"aria-label":d,children:a,"data-action":"back",onClick:this.handleClickBack,role:"button",title:d},closeProps:{"aria-label":p,children:s,"data-action":"close",onClick:this.handleClickClose,role:"button",title:p},primaryProps:{"aria-label":m,children:y,"data-action":"primary",onClick:this.handleClickPrimary,role:"button",title:m},skipProps:{"aria-label":O,children:c,"data-action":"skip",onClick:this.handleClickSkip,role:"button",title:O},tooltipProps:{"aria-modal":!0,ref:r,role:"alertdialog"}}})}render(){const{continuous:e,index:t,isLastStep:n,setTooltipRef:r,size:o,step:i}=this.props,{beaconComponent:a,tooltipComponent:s,...l}=i;let u;if(s){const f={...this.getElementsProps(),continuous:e,index:t,isLastStep:n,size:o,step:l,setTooltipRef:r},c=s;u=b.createElement(c,{...f})}else u=b.createElement(ml,{...this.getElementsProps(),continuous:e,index:t,isLastStep:n,size:o,step:i});return u}},vl=class extends b.Component{constructor(){super(...arguments),P(this,"scope",null),P(this,"tooltip",null),P(this,"handleClickHoverBeacon",e=>{const{step:t,store:n}=this.props;e.type==="mouseenter"&&t.event!=="hover"||n.update({lifecycle:A.TOOLTIP})}),P(this,"setTooltipRef",e=>{this.tooltip=e}),P(this,"setPopper",(e,t)=>{var n;const{action:r,lifecycle:o,step:i,store:a}=this.props;t==="wrapper"?a.setPopper("beacon",e):a.setPopper("tooltip",e),a.getPopper("beacon")&&(a.getPopper("tooltip")||i.placement==="center")&&o===A.INIT&&a.update({action:r,lifecycle:A.READY}),(n=i.floaterProps)!=null&&n.getPopper&&i.floaterProps.getPopper(e,t)}),P(this,"renderTooltip",e=>{const{continuous:t,helpers:n,index:r,size:o,step:i}=this.props;return b.createElement(yl,{continuous:t,helpers:n,index:r,isLastStep:r+1===o,setTooltipRef:this.setTooltipRef,size:o,step:i,...e})})}componentDidMount(){const{debug:e,index:t}=this.props;$e({title:`step:${t}`,data:[{key:"props",value:this.props}],debug:e})}componentDidUpdate(e){var t;const{action:n,callback:r,continuous:o,controlled:i,debug:a,helpers:s,index:l,lifecycle:u,shouldScroll:f,status:c,step:d,store:p}=this.props,{changed:h,changedFrom:v}=Mt(e,this.props),O=s.info(),y=o&&n!==z.CLOSE&&(l>0||n===z.PREV),m=h("action")||h("index")||h("lifecycle")||h("status"),S=v("lifecycle",[A.TOOLTIP,A.INIT],A.INIT),D=h("action",[z.NEXT,z.PREV,z.SKIP,z.CLOSE]),E=i&&l===e.index;if(D&&(S||E)&&r({...O,index:e.index,lifecycle:A.COMPLETE,step:e.step,type:me.STEP_AFTER}),d.placement==="center"&&c===B.RUNNING&&h("index")&&n!==z.START&&u===A.INIT&&p.update({lifecycle:A.READY}),m){const C=Ne(d.target),M=!!C;M&&Ua(C)?(v("status",B.READY,B.RUNNING)||v("lifecycle",A.INIT,A.READY))&&r({...O,step:d,type:me.STEP_BEFORE}):(console.warn(M?"Target not visible":"Target not mounted",d),r({...O,type:me.TARGET_NOT_FOUND,step:d}),i||p.update({index:l+(n===z.PREV?-1:1)}))}v("lifecycle",A.INIT,A.READY)&&p.update({lifecycle:Xn(d)||y?A.TOOLTIP:A.BEACON}),h("index")&&$e({title:`step:${u}`,data:[{key:"props",value:this.props}],debug:a}),h("lifecycle",A.BEACON)&&r({...O,step:d,type:me.BEACON}),h("lifecycle",A.TOOLTIP)&&(r({...O,step:d,type:me.TOOLTIP}),f&&this.tooltip&&(this.scope=new ul(this.tooltip,{selector:"[data-action=primary]"}),this.scope.setFocus())),v("lifecycle",[A.TOOLTIP,A.INIT],A.INIT)&&((t=this.scope)==null||t.removeScope(),p.cleanupPoppers())}componentWillUnmount(){var e;(e=this.scope)==null||e.removeScope()}get open(){const{lifecycle:e,step:t}=this.props;return Xn(t)||e===A.TOOLTIP}render(){const{continuous:e,debug:t,index:n,nonce:r,shouldScroll:o,size:i,step:a}=this.props,s=Ne(a.target);return!Zr(a)||!N.domElement(s)?null:b.createElement("div",{key:`JoyrideStep-${n}`,className:"react-joyride__step"},b.createElement(vn,{...a.floaterProps,component:this.renderTooltip,debug:t,getPopper:this.setPopper,id:`react-joyride-step-${n}`,open:this.open,placement:a.placement,target:a.target},b.createElement(fl,{beaconComponent:a.beaconComponent,continuous:e,index:n,isLastStep:n+1===i,locale:a.locale,nonce:r,onClickOrHover:this.handleClickHoverBeacon,shouldFocus:o,size:i,step:a,styles:a.styles})))}},Xr=class extends b.Component{constructor(e){super(e),P(this,"helpers"),P(this,"store"),P(this,"callback",a=>{const{callback:s}=this.props;N.function(s)&&s(a)}),P(this,"handleKeyboard",a=>{const{index:s,lifecycle:l}=this.state,{steps:u}=this.props,f=u[s];l===A.TOOLTIP&&a.code==="Escape"&&f&&!f.disableCloseOnEsc&&this.store.close("keyboard")}),P(this,"handleClickOverlay",()=>{const{index:a}=this.state,{steps:s}=this.props;Ye(this.props,s[a]).disableOverlayClose||this.helpers.close("overlay")}),P(this,"syncState",a=>{this.setState(a)});const{debug:t,getHelpers:n,run:r=!0,stepIndex:o}=e;this.store=il({...e,controlled:r&&N.number(o)}),this.helpers=this.store.getHelpers();const{addListener:i}=this.store;$e({title:"init",data:[{key:"props",value:this.props},{key:"state",value:this.state}],debug:t}),i(this.syncState),n&&n(this.helpers),this.state=this.store.getState()}componentDidMount(){if(!Re())return;const{debug:e,disableCloseOnEsc:t,run:n,steps:r}=this.props,{start:o}=this.store;tr(r,e)&&n&&o(),t||document.body.addEventListener("keydown",this.handleKeyboard,{passive:!0})}componentDidUpdate(e,t){if(!Re())return;const{action:n,controlled:r,index:o,status:i}=this.state,{debug:a,run:s,stepIndex:l,steps:u}=this.props,{stepIndex:f,steps:c}=e,{reset:d,setSteps:p,start:h,stop:v,update:O}=this.store,{changed:y}=Mt(e,this.props),{changed:m,changedFrom:S}=Mt(t,this.state),D=Ye(this.props,u[o]),E=!oe(c,u),C=N.number(l)&&y("stepIndex"),M=Ne(D.target);if(E&&(tr(u,a)?p(u):console.warn("Steps are not valid",u)),y("run")&&(s?h(l):v()),C){let Y=N.number(f)&&f=0?v:0,r===B.RUNNING&&qa(v,{element:h,duration:a}).then(()=>{setTimeout(()=>{var m;(m=this.store.getPopper("tooltip"))==null||m.instance.update()},10)})}}render(){if(!Re())return null;const{index:e,lifecycle:t,status:n}=this.state,{continuous:r=!1,debug:o=!1,nonce:i,scrollToFirstStep:a=!1,steps:s}=this.props,l=n===B.RUNNING,u={};if(l&&s[e]){const f=Ye(this.props,s[e]);u.step=b.createElement(vl,{...this.state,callback:this.callback,continuous:r,debug:o,helpers:this.helpers,nonce:i,shouldScroll:!f.disableScrolling&&(e!==0||a),step:f,store:this.store}),u.overlay=b.createElement(cl,{id:"react-joyride-portal"},b.createElement(ll,{...f,continuous:r,debug:o,lifecycle:t,onClickOverlay:this.handleClickOverlay}))}return b.createElement("div",{className:"react-joyride"},u.step,u.overlay)}};P(Xr,"defaultProps",el);var iu=Xr;function gl(e,t,n="long"){return new Intl.DateTimeFormat("en-US",{hour:"numeric",timeZone:e,timeZoneName:n}).format(t).split(/\s/g).slice(2).join(" ")}const bl={},lt={};function Le(e,t){try{const r=(bl[e]||=new Intl.DateTimeFormat("en-US",{timeZone:e,timeZoneName:"longOffset"}).format)(t).split("GMT")[1];return r in lt?lt[r]:rr(r,r.split(":"))}catch{if(e in lt)return lt[e];const n=e?.match(wl);return n?rr(e,n.slice(1)):NaN}}const wl=/([+-]\d\d):?(\d\d)?/;function rr(e,t){const n=+(t[0]||0),r=+(t[1]||0),o=+(t[2]||0)/60;return lt[e]=n*60+r>0?n*60+r+o:n*60-r-o}class Ce extends Date{constructor(...t){super(),t.length>1&&typeof t[t.length-1]=="string"&&(this.timeZone=t.pop()),this.internal=new Date,isNaN(Le(this.timeZone,this))?this.setTime(NaN):t.length?typeof t[0]=="number"&&(t.length===1||t.length===2&&typeof t[1]!="number")?this.setTime(t[0]):typeof t[0]=="string"?this.setTime(+new Date(t[0])):t[0]instanceof Date?this.setTime(+t[0]):(this.setTime(+new Date(...t)),Qr(this),ln(this)):this.setTime(Date.now())}static tz(t,...n){return n.length?new Ce(...n,t):new Ce(Date.now(),t)}withTimeZone(t){return new Ce(+this,t)}getTimezoneOffset(){const t=-Le(this.timeZone,this);return t>0?Math.floor(t):Math.ceil(t)}setTime(t){return Date.prototype.setTime.apply(this,arguments),ln(this),+this}[Symbol.for("constructDateFrom")](t){return new Ce(+new Date(t),this.timeZone)}}const or=/^(get|set)(?!UTC)/;Object.getOwnPropertyNames(Date.prototype).forEach(e=>{if(!or.test(e))return;const t=e.replace(or,"$1UTC");Ce.prototype[t]&&(e.startsWith("get")?Ce.prototype[e]=function(){return this.internal[t]()}:(Ce.prototype[e]=function(){return Date.prototype[t].apply(this.internal,arguments),Ol(this),+this},Ce.prototype[t]=function(){return Date.prototype[t].apply(this,arguments),ln(this),+this}))});function ln(e){e.internal.setTime(+e),e.internal.setUTCSeconds(e.internal.getUTCSeconds()-Math.round(-Le(e.timeZone,e)*60))}function Ol(e){Date.prototype.setFullYear.call(e,e.internal.getUTCFullYear(),e.internal.getUTCMonth(),e.internal.getUTCDate()),Date.prototype.setHours.call(e,e.internal.getUTCHours(),e.internal.getUTCMinutes(),e.internal.getUTCSeconds(),e.internal.getUTCMilliseconds()),Qr(e)}function Qr(e){const t=Le(e.timeZone,e),n=t>0?Math.floor(t):Math.ceil(t),r=new Date(+e);r.setUTCHours(r.getUTCHours()-1);const o=-new Date(+e).getTimezoneOffset(),i=-new Date(+r).getTimezoneOffset(),a=o-i,s=Date.prototype.getHours.apply(e)!==e.internal.getUTCHours();a&&s&&e.internal.setUTCMinutes(e.internal.getUTCMinutes()+a);const l=o-n;l&&Date.prototype.setUTCMinutes.call(e,Date.prototype.getUTCMinutes.call(e)+l);const u=new Date(+e);u.setUTCSeconds(0);const f=o>0?u.getSeconds():(u.getSeconds()-60)%60,c=Math.round(-(Le(e.timeZone,e)*60))%60;(c||f)&&(e.internal.setUTCSeconds(e.internal.getUTCSeconds()+c),Date.prototype.setUTCSeconds.call(e,Date.prototype.getUTCSeconds.call(e)+c+f));const d=Le(e.timeZone,e),p=d>0?Math.floor(d):Math.ceil(d),v=-new Date(+e).getTimezoneOffset()-p,O=p!==n,y=v-l;if(O&&y){Date.prototype.setUTCMinutes.call(e,Date.prototype.getUTCMinutes.call(e)+y);const m=Le(e.timeZone,e),S=m>0?Math.floor(m):Math.ceil(m),D=p-S;D&&(e.internal.setUTCMinutes(e.internal.getUTCMinutes()+D),Date.prototype.setUTCMinutes.call(e,Date.prototype.getUTCMinutes.call(e)+D))}}class te extends Ce{static tz(t,...n){return n.length?new te(...n,t):new te(Date.now(),t)}toISOString(){const[t,n,r]=this.tzComponents(),o=`${t}${n}:${r}`;return this.internal.toISOString().slice(0,-1)+o}toString(){return`${this.toDateString()} ${this.toTimeString()}`}toDateString(){const[t,n,r,o]=this.internal.toUTCString().split(" ");return`${t?.slice(0,-1)} ${r} ${n} ${o}`}toTimeString(){const t=this.internal.toUTCString().split(" ")[4],[n,r,o]=this.tzComponents();return`${t} GMT${n}${r}${o} (${gl(this.timeZone,this)})`}toLocaleString(t,n){return Date.prototype.toLocaleString.call(this,t,{...n,timeZone:n?.timeZone||this.timeZone})}toLocaleDateString(t,n){return Date.prototype.toLocaleDateString.call(this,t,{...n,timeZone:n?.timeZone||this.timeZone})}toLocaleTimeString(t,n){return Date.prototype.toLocaleTimeString.call(this,t,{...n,timeZone:n?.timeZone||this.timeZone})}tzComponents(){const t=this.getTimezoneOffset(),n=t>0?"-":"+",r=String(Math.floor(Math.abs(t)/60)).padStart(2,"0"),o=String(Math.abs(t)%60).padStart(2,"0");return[n,r,o]}withTimeZone(t){return new te(+this,t)}[Symbol.for("constructDateFrom")](t){return new te(+new Date(t),this.timeZone)}}const ir=5,Sl=4;function El(e,t){const n=t.startOfMonth(e),r=n.getDay()>0?n.getDay():7,o=t.addDays(e,-r+1),i=t.addDays(o,ir*7-1);return t.getMonth(e)===t.getMonth(i)?ir:Sl}function eo(e,t){const n=t.startOfMonth(e),r=n.getDay();return r===1?n:r===0?t.addDays(n,-6):t.addDays(n,-1*(r-1))}function kl(e,t){const n=eo(e,t),r=El(e,t);return t.addDays(n,r*7-1)}class fe{constructor(t,n){this.Date=Date,this.today=()=>this.overrides?.today?this.overrides.today():this.options.timeZone?te.tz(this.options.timeZone):new this.Date,this.newDate=(r,o,i)=>this.overrides?.newDate?this.overrides.newDate(r,o,i):this.options.timeZone?new te(r,o,i,this.options.timeZone):new Date(r,o,i),this.addDays=(r,o)=>this.overrides?.addDays?this.overrides.addDays(r,o):Yo(r,o),this.addMonths=(r,o)=>this.overrides?.addMonths?this.overrides.addMonths(r,o):qo(r,o),this.addWeeks=(r,o)=>this.overrides?.addWeeks?this.overrides.addWeeks(r,o):Go(r,o),this.addYears=(r,o)=>this.overrides?.addYears?this.overrides.addYears(r,o):Vo(r,o),this.differenceInCalendarDays=(r,o)=>this.overrides?.differenceInCalendarDays?this.overrides.differenceInCalendarDays(r,o):Ko(r,o),this.differenceInCalendarMonths=(r,o)=>this.overrides?.differenceInCalendarMonths?this.overrides.differenceInCalendarMonths(r,o):Zo(r,o),this.eachMonthOfInterval=r=>this.overrides?.eachMonthOfInterval?this.overrides.eachMonthOfInterval(r):Jo(r),this.eachYearOfInterval=r=>{const o=this.overrides?.eachYearOfInterval?this.overrides.eachYearOfInterval(r):Xo(r),i=new Set(o.map(s=>this.getYear(s)));if(i.size===o.length)return o;const a=[];return i.forEach(s=>{a.push(new Date(s,0,1))}),a},this.endOfBroadcastWeek=r=>this.overrides?.endOfBroadcastWeek?this.overrides.endOfBroadcastWeek(r):kl(r,this),this.endOfISOWeek=r=>this.overrides?.endOfISOWeek?this.overrides.endOfISOWeek(r):Qo(r),this.endOfMonth=r=>this.overrides?.endOfMonth?this.overrides.endOfMonth(r):ei(r),this.endOfWeek=(r,o)=>this.overrides?.endOfWeek?this.overrides.endOfWeek(r,o):ti(r,this.options),this.endOfYear=r=>this.overrides?.endOfYear?this.overrides.endOfYear(r):ni(r),this.format=(r,o,i)=>{const a=this.overrides?.format?this.overrides.format(r,o,this.options):ri(r,o,this.options);return this.options.numerals&&this.options.numerals!=="latn"?this.replaceDigits(a):a},this.getISOWeek=r=>this.overrides?.getISOWeek?this.overrides.getISOWeek(r):oi(r),this.getMonth=(r,o)=>this.overrides?.getMonth?this.overrides.getMonth(r,this.options):ii(r,this.options),this.getYear=(r,o)=>this.overrides?.getYear?this.overrides.getYear(r,this.options):si(r,this.options),this.getWeek=(r,o)=>this.overrides?.getWeek?this.overrides.getWeek(r,this.options):ai(r,this.options),this.isAfter=(r,o)=>this.overrides?.isAfter?this.overrides.isAfter(r,o):li(r,o),this.isBefore=(r,o)=>this.overrides?.isBefore?this.overrides.isBefore(r,o):ci(r,o),this.isDate=r=>this.overrides?.isDate?this.overrides.isDate(r):ui(r),this.isSameDay=(r,o)=>this.overrides?.isSameDay?this.overrides.isSameDay(r,o):fi(r,o),this.isSameMonth=(r,o)=>this.overrides?.isSameMonth?this.overrides.isSameMonth(r,o):di(r,o),this.isSameYear=(r,o)=>this.overrides?.isSameYear?this.overrides.isSameYear(r,o):pi(r,o),this.max=r=>this.overrides?.max?this.overrides.max(r):hi(r),this.min=r=>this.overrides?.min?this.overrides.min(r):mi(r),this.setMonth=(r,o)=>this.overrides?.setMonth?this.overrides.setMonth(r,o):yi(r,o),this.setYear=(r,o)=>this.overrides?.setYear?this.overrides.setYear(r,o):vi(r,o),this.startOfBroadcastWeek=(r,o)=>this.overrides?.startOfBroadcastWeek?this.overrides.startOfBroadcastWeek(r,this):eo(r,this),this.startOfDay=r=>this.overrides?.startOfDay?this.overrides.startOfDay(r):gi(r),this.startOfISOWeek=r=>this.overrides?.startOfISOWeek?this.overrides.startOfISOWeek(r):bi(r),this.startOfMonth=r=>this.overrides?.startOfMonth?this.overrides.startOfMonth(r):wi(r),this.startOfWeek=(r,o)=>this.overrides?.startOfWeek?this.overrides.startOfWeek(r,this.options):Oi(r,this.options),this.startOfYear=r=>this.overrides?.startOfYear?this.overrides.startOfYear(r):Si(r),this.options={locale:cr,...t},this.overrides=n}getDigitMap(){const{numerals:t="latn"}=this.options,n=new Intl.NumberFormat("en-US",{numberingSystem:t}),r={};for(let o=0;o<10;o++)r[o.toString()]=n.format(o);return r}replaceDigits(t){const n=this.getDigitMap();return t.replace(/\d/g,r=>n[r]||r)}formatNumber(t){return this.replaceDigits(t.toString())}getMonthYearOrder(){const t=this.options.locale?.code;return t&&fe.yearFirstLocales.has(t)?"year-first":"month-first"}formatMonthYear(t){const{locale:n,timeZone:r,numerals:o}=this.options,i=n?.code;if(i&&fe.yearFirstLocales.has(i))try{return new Intl.DateTimeFormat(i,{month:"long",year:"numeric",timeZone:r,numberingSystem:o}).format(t)}catch{}const a=this.getMonthYearOrder()==="year-first"?"y LLLL":"LLLL y";return this.format(t,a)}}fe.yearFirstLocales=new Set(["eu","hu","ja","ja-Hira","ja-JP","ko","ko-KR","lt","lt-LT","lv","lv-LV","mn","mn-MN","zh","zh-CN","zh-HK","zh-TW"]);const Te=new fe;class to{constructor(t,n,r=Te){this.date=t,this.displayMonth=n,this.outside=!!(n&&!r.isSameMonth(t,n)),this.dateLib=r}isEqualTo(t){return this.dateLib.isSameDay(t.date,this.date)&&this.dateLib.isSameMonth(t.displayMonth,this.displayMonth)}}class Cl{constructor(t,n){this.date=t,this.weeks=n}}class Tl{constructor(t,n){this.days=n,this.weekNumber=t}}function Ml(e){return w.createElement("button",{...e})}function xl(e){return w.createElement("span",{...e})}function Nl(e){const{size:t=24,orientation:n="left",className:r}=e;return w.createElement("svg",{className:r,width:t,height:t,viewBox:"0 0 24 24"},n==="up"&&w.createElement("polygon",{points:"6.77 17 12.5 11.43 18.24 17 20 15.28 12.5 8 5 15.28"}),n==="down"&&w.createElement("polygon",{points:"6.77 8 12.5 13.57 18.24 8 20 9.72 12.5 17 5 9.72"}),n==="left"&&w.createElement("polygon",{points:"16 18.112 9.81111111 12 16 5.87733333 14.0888889 4 6 12 14.0888889 20"}),n==="right"&&w.createElement("polygon",{points:"8 18.112 14.18888889 12 8 5.87733333 9.91111111 4 18 12 9.91111111 20"}))}function Pl(e){const{day:t,modifiers:n,...r}=e;return w.createElement("td",{...r})}function Dl(e){const{day:t,modifiers:n,...r}=e,o=w.useRef(null);return w.useEffect(()=>{n.focused&&o.current?.focus()},[n.focused]),w.createElement("button",{ref:o,...r})}var I;(function(e){e.Root="root",e.Chevron="chevron",e.Day="day",e.DayButton="day_button",e.CaptionLabel="caption_label",e.Dropdowns="dropdowns",e.Dropdown="dropdown",e.DropdownRoot="dropdown_root",e.Footer="footer",e.MonthGrid="month_grid",e.MonthCaption="month_caption",e.MonthsDropdown="months_dropdown",e.Month="month",e.Months="months",e.Nav="nav",e.NextMonthButton="button_next",e.PreviousMonthButton="button_previous",e.Week="week",e.Weeks="weeks",e.Weekday="weekday",e.Weekdays="weekdays",e.WeekNumber="week_number",e.WeekNumberHeader="week_number_header",e.YearsDropdown="years_dropdown"})(I||(I={}));var Z;(function(e){e.disabled="disabled",e.hidden="hidden",e.outside="outside",e.focused="focused",e.today="today"})(Z||(Z={}));var ve;(function(e){e.range_end="range_end",e.range_middle="range_middle",e.range_start="range_start",e.selected="selected"})(ve||(ve={}));var ue;(function(e){e.weeks_before_enter="weeks_before_enter",e.weeks_before_exit="weeks_before_exit",e.weeks_after_enter="weeks_after_enter",e.weeks_after_exit="weeks_after_exit",e.caption_after_enter="caption_after_enter",e.caption_after_exit="caption_after_exit",e.caption_before_enter="caption_before_enter",e.caption_before_exit="caption_before_exit"})(ue||(ue={}));function Il(e){const{options:t,className:n,components:r,classNames:o,...i}=e,a=[o[I.Dropdown],n].join(" "),s=t?.find(({value:l})=>l===i.value);return w.createElement("span",{"data-disabled":i.disabled,className:o[I.DropdownRoot]},w.createElement(r.Select,{className:a,...i},t?.map(({value:l,label:u,disabled:f})=>w.createElement(r.Option,{key:l,value:l,disabled:f},u))),w.createElement("span",{className:o[I.CaptionLabel],"aria-hidden":!0},s?.label,w.createElement(r.Chevron,{orientation:"down",size:18,className:o[I.Chevron]})))}function Rl(e){return w.createElement("div",{...e})}function Wl(e){return w.createElement("div",{...e})}function Al(e){const{calendarMonth:t,displayIndex:n,...r}=e;return w.createElement("div",{...r},e.children)}function _l(e){const{calendarMonth:t,displayIndex:n,...r}=e;return w.createElement("div",{...r})}function jl(e){return w.createElement("table",{...e})}function Fl(e){return w.createElement("div",{...e})}const no=b.createContext(void 0);function wt(){const e=b.useContext(no);if(e===void 0)throw new Error("useDayPicker() must be used within a custom component.");return e}function Ll(e){const{components:t}=wt();return w.createElement(t.Dropdown,{...e})}function Bl(e){const{onPreviousClick:t,onNextClick:n,previousMonth:r,nextMonth:o,...i}=e,{components:a,classNames:s,labels:{labelPrevious:l,labelNext:u}}=wt(),f=b.useCallback(d=>{o&&n?.(d)},[o,n]),c=b.useCallback(d=>{r&&t?.(d)},[r,t]);return w.createElement("nav",{...i},w.createElement(a.PreviousMonthButton,{type:"button",className:s[I.PreviousMonthButton],tabIndex:r?void 0:-1,"aria-disabled":r?void 0:!0,"aria-label":l(r),onClick:c},w.createElement(a.Chevron,{disabled:r?void 0:!0,className:s[I.Chevron],orientation:"left"})),w.createElement(a.NextMonthButton,{type:"button",className:s[I.NextMonthButton],tabIndex:o?void 0:-1,"aria-disabled":o?void 0:!0,"aria-label":u(o),onClick:f},w.createElement(a.Chevron,{disabled:o?void 0:!0,orientation:"right",className:s[I.Chevron]})))}function $l(e){const{components:t}=wt();return w.createElement(t.Button,{...e})}function Hl(e){return w.createElement("option",{...e})}function Ul(e){const{components:t}=wt();return w.createElement(t.Button,{...e})}function zl(e){const{rootRef:t,...n}=e;return w.createElement("div",{...n,ref:t})}function Yl(e){return w.createElement("select",{...e})}function ql(e){const{week:t,...n}=e;return w.createElement("tr",{...n})}function Gl(e){return w.createElement("th",{...e})}function Vl(e){return w.createElement("thead",{"aria-hidden":!0},w.createElement("tr",{...e}))}function Kl(e){const{week:t,...n}=e;return w.createElement("th",{...n})}function Zl(e){return w.createElement("th",{...e})}function Jl(e){return w.createElement("tbody",{...e})}function Xl(e){const{components:t}=wt();return w.createElement(t.Dropdown,{...e})}const Ql=Object.freeze(Object.defineProperty({__proto__:null,Button:Ml,CaptionLabel:xl,Chevron:Nl,Day:Pl,DayButton:Dl,Dropdown:Il,DropdownNav:Rl,Footer:Wl,Month:Al,MonthCaption:_l,MonthGrid:jl,Months:Fl,MonthsDropdown:Ll,Nav:Bl,NextMonthButton:$l,Option:Hl,PreviousMonthButton:Ul,Root:zl,Select:Yl,Week:ql,WeekNumber:Kl,WeekNumberHeader:Zl,Weekday:Gl,Weekdays:Vl,Weeks:Jl,YearsDropdown:Xl},Symbol.toStringTag,{value:"Module"}));function Pe(e,t,n=!1,r=Te){let{from:o,to:i}=e;const{differenceInCalendarDays:a,isSameDay:s}=r;return o&&i?(a(i,o)<0&&([o,i]=[i,o]),a(t,o)>=(n?1:0)&&a(i,t)>=(n?1:0)):!n&&i?s(i,t):!n&&o?s(o,t):!1}function ro(e){return!!(e&&typeof e=="object"&&"before"in e&&"after"in e)}function gn(e){return!!(e&&typeof e=="object"&&"from"in e)}function oo(e){return!!(e&&typeof e=="object"&&"after"in e)}function io(e){return!!(e&&typeof e=="object"&&"before"in e)}function so(e){return!!(e&&typeof e=="object"&&"dayOfWeek"in e)}function ao(e,t){return Array.isArray(e)&&e.every(t.isDate)}function De(e,t,n=Te){const r=Array.isArray(t)?t:[t],{isSameDay:o,differenceInCalendarDays:i,isAfter:a}=n;return r.some(s=>{if(typeof s=="boolean")return s;if(n.isDate(s))return o(e,s);if(ao(s,n))return s.includes(e);if(gn(s))return Pe(s,e,!1,n);if(so(s))return Array.isArray(s.dayOfWeek)?s.dayOfWeek.includes(e.getDay()):s.dayOfWeek===e.getDay();if(ro(s)){const l=i(s.before,e),u=i(s.after,e),f=l>0,c=u<0;return a(s.before,s.after)?c&&f:f||c}return oo(s)?i(e,s.after)>0:io(s)?i(s.before,e)>0:typeof s=="function"?s(e):!1})}function ec(e,t,n,r,o){const{disabled:i,hidden:a,modifiers:s,showOutsideDays:l,broadcastCalendar:u,today:f}=t,{isSameDay:c,isSameMonth:d,startOfMonth:p,isBefore:h,endOfMonth:v,isAfter:O}=o,y=n&&p(n),m=r&&v(r),S={[Z.focused]:[],[Z.outside]:[],[Z.disabled]:[],[Z.hidden]:[],[Z.today]:[]},D={};for(const E of e){const{date:C,displayMonth:M}=E,j=!!(M&&!d(C,M)),J=!!(y&&h(C,y)),Y=!!(m&&O(C,m)),Q=!!(i&&De(C,i,o)),re=!!(a&&De(C,a,o))||J||Y||!u&&!l&&j||u&&l===!1&&j,Me=c(C,f??o.today());j&&S.outside.push(E),Q&&S.disabled.push(E),re&&S.hidden.push(E),Me&&S.today.push(E),s&&Object.keys(s).forEach(le=>{const de=s?.[le];de&&De(C,de,o)&&(D[le]?D[le].push(E):D[le]=[E])})}return E=>{const C={[Z.focused]:!1,[Z.disabled]:!1,[Z.hidden]:!1,[Z.outside]:!1,[Z.today]:!1},M={};for(const j in S){const J=S[j];C[j]=J.some(Y=>Y===E)}for(const j in D)M[j]=D[j].some(J=>J===E);return{...C,...M}}}function tc(e,t,n={}){return Object.entries(e).filter(([,o])=>o===!0).reduce((o,[i])=>(n[i]?o.push(n[i]):t[Z[i]]?o.push(t[Z[i]]):t[ve[i]]&&o.push(t[ve[i]]),o),[t[I.Day]])}function nc(e){return{...Ql,...e}}function rc(e){const t={"data-mode":e.mode??void 0,"data-required":"required"in e?e.required:void 0,"data-multiple-months":e.numberOfMonths&&e.numberOfMonths>1||void 0,"data-week-numbers":e.showWeekNumber||void 0,"data-broadcast-calendar":e.broadcastCalendar||void 0,"data-nav-layout":e.navLayout||void 0};return Object.entries(e).forEach(([n,r])=>{n.startsWith("data-")&&(t[n]=r)}),t}function oc(){const e={};for(const t in I)e[I[t]]=`rdp-${I[t]}`;for(const t in Z)e[Z[t]]=`rdp-${Z[t]}`;for(const t in ve)e[ve[t]]=`rdp-${ve[t]}`;for(const t in ue)e[ue[t]]=`rdp-${ue[t]}`;return e}function lo(e,t,n){return(n??new fe(t)).formatMonthYear(e)}const ic=lo;function sc(e,t,n){return(n??new fe(t)).format(e,"d")}function ac(e,t=Te){return t.format(e,"LLLL")}function lc(e,t,n){return(n??new fe(t)).format(e,"cccccc")}function cc(e,t=Te){return e<10?t.formatNumber(`0${e.toLocaleString()}`):t.formatNumber(`${e.toLocaleString()}`)}function uc(){return""}function co(e,t=Te){return t.format(e,"yyyy")}const fc=co,dc=Object.freeze(Object.defineProperty({__proto__:null,formatCaption:lo,formatDay:sc,formatMonthCaption:ic,formatMonthDropdown:ac,formatWeekNumber:cc,formatWeekNumberHeader:uc,formatWeekdayName:lc,formatYearCaption:fc,formatYearDropdown:co},Symbol.toStringTag,{value:"Module"}));function pc(e){return e?.formatMonthCaption&&!e.formatCaption&&(e.formatCaption=e.formatMonthCaption),e?.formatYearCaption&&!e.formatYearDropdown&&(e.formatYearDropdown=e.formatYearCaption),{...dc,...e}}function hc(e,t,n,r,o){const{startOfMonth:i,startOfYear:a,endOfYear:s,eachMonthOfInterval:l,getMonth:u}=o;return l({start:a(e),end:s(e)}).map(d=>{const p=r.formatMonthDropdown(d,o),h=u(d),v=t&&di(n)||!1;return{value:h,label:p,disabled:v}})}function mc(e,t={},n={}){let r={...t?.[I.Day]};return Object.entries(e).filter(([,o])=>o===!0).forEach(([o])=>{r={...r,...n?.[o]}}),r}function yc(e,t,n){const r=e.today(),o=t?e.startOfISOWeek(r):e.startOfWeek(r),i=[];for(let a=0;a<7;a++){const s=e.addDays(o,a);i.push(s)}return i}function vc(e,t,n,r,o=!1){if(!e||!t)return;const{startOfYear:i,endOfYear:a,eachYearOfInterval:s,getYear:l}=r,u=i(e),f=a(t),c=s({start:u,end:f});return o&&c.reverse(),c.map(d=>{const p=n.formatYearDropdown(d,r);return{value:l(d),label:p,disabled:!1}})}function uo(e,t,n,r){let o=(r??new fe(n)).format(e,"PPPP");return t.today&&(o=`Today, ${o}`),t.selected&&(o=`${o}, selected`),o}const gc=uo;function fo(e,t,n){return(n??new fe(t)).formatMonthYear(e)}const bc=fo;function wc(e,t,n,r){let o=(r??new fe(n)).format(e,"PPPP");return t?.today&&(o=`Today, ${o}`),o}function Oc(e){return"Choose the Month"}function Sc(){return""}function Ec(e){return"Go to the Next Month"}function kc(e){return"Go to the Previous Month"}function Cc(e,t,n){return(n??new fe(t)).format(e,"cccc")}function Tc(e,t){return`Week ${e}`}function Mc(e){return"Week Number"}function xc(e){return"Choose the Year"}const Nc=Object.freeze(Object.defineProperty({__proto__:null,labelCaption:bc,labelDay:gc,labelDayButton:uo,labelGrid:fo,labelGridcell:wc,labelMonthDropdown:Oc,labelNav:Sc,labelNext:Ec,labelPrevious:kc,labelWeekNumber:Tc,labelWeekNumberHeader:Mc,labelWeekday:Cc,labelYearDropdown:xc},Symbol.toStringTag,{value:"Module"})),Ot=e=>e instanceof HTMLElement?e:null,Zt=e=>[...e.querySelectorAll("[data-animated-month]")??[]],Pc=e=>Ot(e.querySelector("[data-animated-month]")),Jt=e=>Ot(e.querySelector("[data-animated-caption]")),Xt=e=>Ot(e.querySelector("[data-animated-weeks]")),Dc=e=>Ot(e.querySelector("[data-animated-nav]")),Ic=e=>Ot(e.querySelector("[data-animated-weekdays]"));function Rc(e,t,{classNames:n,months:r,focused:o,dateLib:i}){const a=b.useRef(null),s=b.useRef(r),l=b.useRef(!1);b.useLayoutEffect(()=>{const u=s.current;if(s.current=r,!t||!e.current||!(e.current instanceof HTMLElement)||r.length===0||u.length===0||r.length!==u.length)return;const f=i.isSameMonth(r[0].date,u[0].date),c=i.isAfter(r[0].date,u[0].date),d=c?n[ue.caption_after_enter]:n[ue.caption_before_enter],p=c?n[ue.weeks_after_enter]:n[ue.weeks_before_enter],h=a.current,v=e.current.cloneNode(!0);if(v instanceof HTMLElement?(Zt(v).forEach(S=>{if(!(S instanceof HTMLElement))return;const D=Pc(S);D&&S.contains(D)&&S.removeChild(D);const E=Jt(S);E&&E.classList.remove(d);const C=Xt(S);C&&C.classList.remove(p)}),a.current=v):a.current=null,l.current||f||o)return;const O=h instanceof HTMLElement?Zt(h):[],y=Zt(e.current);if(y?.every(m=>m instanceof HTMLElement)&&O&&O.every(m=>m instanceof HTMLElement)){l.current=!0,e.current.style.isolation="isolate";const m=Dc(e.current);m&&(m.style.zIndex="1"),y.forEach((S,D)=>{const E=O[D];if(!E)return;S.style.position="relative",S.style.overflow="hidden";const C=Jt(S);C&&C.classList.add(d);const M=Xt(S);M&&M.classList.add(p);const j=()=>{l.current=!1,e.current&&(e.current.style.isolation=""),m&&(m.style.zIndex=""),C&&C.classList.remove(d),M&&M.classList.remove(p),S.style.position="",S.style.overflow="",S.contains(E)&&S.removeChild(E)};E.style.pointerEvents="none",E.style.position="absolute",E.style.overflow="hidden",E.setAttribute("aria-hidden","true");const J=Ic(E);J&&(J.style.opacity="0");const Y=Jt(E);Y&&(Y.classList.add(c?n[ue.caption_before_exit]:n[ue.caption_after_exit]),Y.addEventListener("animationend",j));const Q=Xt(E);Q&&Q.classList.add(c?n[ue.weeks_before_exit]:n[ue.weeks_after_exit]),S.insertBefore(E,S.firstChild)})}})}function Wc(e,t,n,r){const o=e[0],i=e[e.length-1],{ISOWeek:a,fixedWeeks:s,broadcastCalendar:l}=n??{},{addDays:u,differenceInCalendarDays:f,differenceInCalendarMonths:c,endOfBroadcastWeek:d,endOfISOWeek:p,endOfMonth:h,endOfWeek:v,isAfter:O,startOfBroadcastWeek:y,startOfISOWeek:m,startOfWeek:S}=r,D=l?y(o,r):a?m(o):S(o),E=l?d(i):a?p(h(i)):v(h(i)),C=f(E,D),M=c(i,o)+1,j=[];for(let Q=0;Q<=C;Q++){const re=u(D,Q);if(t&&O(re,t))break;j.push(re)}const Y=(l?35:42)*M;if(s&&j.length{const o=r.weeks.reduce((i,a)=>i.concat(a.days.slice()),t.slice());return n.concat(o.slice())},t.slice())}function _c(e,t,n,r){const{numberOfMonths:o=1}=n,i=[];for(let a=0;at)break;i.push(s)}return i}function sr(e,t,n,r){const{month:o,defaultMonth:i,today:a=r.today(),numberOfMonths:s=1}=e;let l=o||i||a;const{differenceInCalendarMonths:u,addMonths:f,startOfMonth:c}=r;if(n&&u(n,l){const y=n.broadcastCalendar?c(O,r):n.ISOWeek?d(O):p(O),m=n.broadcastCalendar?i(O):n.ISOWeek?a(s(O)):l(s(O)),S=t.filter(M=>M>=y&&M<=m),D=n.broadcastCalendar?35:42;if(n.fixedWeeks&&S.length{const J=D-S.length;return j>m&&j<=o(m,J)});S.push(...M)}const E=S.reduce((M,j)=>{const J=n.ISOWeek?u(j):f(j),Y=M.find(re=>re.weekNumber===J),Q=new to(j,O,r);return Y?Y.days.push(Q):M.push(new Tl(J,[Q])),M},[]),C=new Cl(O,E);return v.push(C),v},[]);return n.reverseMonths?h.reverse():h}function Fc(e,t){let{startMonth:n,endMonth:r}=e;const{startOfYear:o,startOfDay:i,startOfMonth:a,endOfMonth:s,addYears:l,endOfYear:u,newDate:f,today:c}=t,{fromYear:d,toYear:p,fromMonth:h,toMonth:v}=e;!n&&h&&(n=h),!n&&d&&(n=t.newDate(d,0,1)),!r&&v&&(r=v),!r&&p&&(r=f(p,11,31));const O=e.captionLayout==="dropdown"||e.captionLayout==="dropdown-years";return n?n=a(n):d?n=f(d,0,1):!n&&O&&(n=o(l(e.today??c(),-100))),r?r=s(r):p?r=f(p,11,31):!r&&O&&(r=u(e.today??c())),[n&&i(n),r&&i(r)]}function Lc(e,t,n,r){if(n.disableNavigation)return;const{pagedNavigation:o,numberOfMonths:i=1}=n,{startOfMonth:a,addMonths:s,differenceInCalendarMonths:l}=r,u=o?i:1,f=a(e);if(!t)return s(f,u);if(!(l(t,e)n.concat(r.weeks.slice()),t.slice())}function _t(e,t){const[n,r]=b.useState(e);return[t===void 0?n:t,r]}function Hc(e,t){const[n,r]=Fc(e,t),{startOfMonth:o,endOfMonth:i}=t,a=sr(e,n,r,t),[s,l]=_t(a,e.month?a:void 0);b.useEffect(()=>{const C=sr(e,n,r,t);l(C)},[e.timeZone]);const u=_c(s,r,e,t),f=Wc(u,e.endMonth?i(e.endMonth):void 0,e,t),c=jc(u,f,e,t),d=$c(c),p=Ac(c),h=Bc(s,n,e,t),v=Lc(s,r,e,t),{disableNavigation:O,onMonthChange:y}=e,m=C=>d.some(M=>M.days.some(j=>j.isEqualTo(C))),S=C=>{if(O)return;let M=o(C);n&&Mo(r)&&(M=o(r)),l(M),y?.(M)};return{months:c,weeks:d,days:p,navStart:n,navEnd:r,previousMonth:h,nextMonth:v,goToMonth:S,goToDay:C=>{m(C)||S(C.date)}}}var we;(function(e){e[e.Today=0]="Today",e[e.Selected=1]="Selected",e[e.LastFocused=2]="LastFocused",e[e.FocusedModifier=3]="FocusedModifier"})(we||(we={}));function ar(e){return!e[Z.disabled]&&!e[Z.hidden]&&!e[Z.outside]}function Uc(e,t,n,r){let o,i=-1;for(const a of e){const s=t(a);ar(s)&&(s[Z.focused]&&iar(t(a)))),o}function zc(e,t,n,r,o,i,a){const{ISOWeek:s,broadcastCalendar:l}=i,{addDays:u,addMonths:f,addWeeks:c,addYears:d,endOfBroadcastWeek:p,endOfISOWeek:h,endOfWeek:v,max:O,min:y,startOfBroadcastWeek:m,startOfISOWeek:S,startOfWeek:D}=a;let C={day:u,week:c,month:f,year:d,startOfWeek:M=>l?m(M,a):s?S(M):D(M),endOfWeek:M=>l?p(M):s?h(M):v(M)}[e](n,t==="after"?1:-1);return t==="before"&&r?C=O([r,C]):t==="after"&&o&&(C=y([o,C])),C}function po(e,t,n,r,o,i,a,s=0){if(s>365)return;const l=zc(e,t,n.date,r,o,i,a),u=!!(i.disabled&&De(l,i.disabled,a)),f=!!(i.hidden&&De(l,i.hidden,a)),c=l,d=new to(l,c,a);return!u&&!f?d:po(e,t,d,r,o,i,a,s+1)}function Yc(e,t,n,r,o){const{autoFocus:i}=e,[a,s]=b.useState(),l=Uc(t.days,n,r||(()=>!1),a),[u,f]=b.useState(i?l:void 0);return{isFocusTarget:v=>!!l?.isEqualTo(v),setFocused:f,focused:u,blur:()=>{s(u),f(void 0)},moveFocus:(v,O)=>{if(!u)return;const y=po(v,O,u,t.navStart,t.navEnd,e,o);y&&(e.disableNavigation&&!t.days.some(S=>S.isEqualTo(y))||(t.goToDay(y),f(y)))}}}function qc(e,t){const{selected:n,required:r,onSelect:o}=e,[i,a]=_t(n,o?n:void 0),s=o?n:i,{isSameDay:l}=t,u=p=>s?.some(h=>l(h,p))??!1,{min:f,max:c}=e;return{selected:s,select:(p,h,v)=>{let O=[...s??[]];if(u(p)){if(s?.length===f||r&&s?.length===1)return;O=s?.filter(y=>!l(y,p))}else s?.length===c?O=[p]:O=[...O,p];return o||a(O),o?.(O,p,h,v),O},isSelected:u}}function Gc(e,t,n=0,r=0,o=!1,i=Te){const{from:a,to:s}=t||{},{isSameDay:l,isAfter:u,isBefore:f}=i;let c;if(!a&&!s)c={from:e,to:n>0?void 0:e};else if(a&&!s)l(a,e)?n===0?c={from:a,to:e}:o?c={from:a,to:void 0}:c=void 0:f(e,a)?c={from:e,to:a}:c={from:a,to:e};else if(a&&s)if(l(a,e)&&l(s,e))o?c={from:a,to:s}:c=void 0;else if(l(a,e))c={from:a,to:n>0?void 0:e};else if(l(s,e))c={from:e,to:n>0?void 0:e};else if(f(e,a))c={from:e,to:s};else if(u(e,a))c={from:a,to:e};else if(u(e,s))c={from:a,to:e};else throw new Error("Invalid range");if(c?.from&&c?.to){const d=i.differenceInCalendarDays(c.to,c.from);r>0&&d>r?c={from:e,to:void 0}:n>1&&dtypeof s!="function").some(s=>typeof s=="boolean"?s:n.isDate(s)?Pe(e,s,!1,n):ao(s,n)?s.some(l=>Pe(e,l,!1,n)):gn(s)?s.from&&s.to?lr(e,{from:s.from,to:s.to},n):!1:so(s)?Vc(e,s.dayOfWeek,n):ro(s)?n.isAfter(s.before,s.after)?lr(e,{from:n.addDays(s.after,1),to:n.addDays(s.before,-1)},n):De(e.from,s,n)||De(e.to,s,n):oo(s)||io(s)?De(e.from,s,n)||De(e.to,s,n):!1))return!0;const a=r.filter(s=>typeof s=="function");if(a.length){let s=e.from;const l=n.differenceInCalendarDays(e.to,e.from);for(let u=0;u<=l;u++){if(a.some(f=>f(s)))return!0;s=n.addDays(s,1)}}return!1}function Zc(e,t){const{disabled:n,excludeDisabled:r,selected:o,required:i,onSelect:a}=e,[s,l]=_t(o,a?o:void 0),u=a?o:s;return{selected:u,select:(d,p,h)=>{const{min:v,max:O}=e,y=d?Gc(d,u,v,O,i,t):void 0;return r&&n&&y?.from&&y.to&&Kc({from:y.from,to:y.to},n,t)&&(y.from=d,y.to=void 0),a||l(y),a?.(y,d,p,h),y},isSelected:d=>u&&Pe(u,d,!1,t)}}function Jc(e,t){const{selected:n,required:r,onSelect:o}=e,[i,a]=_t(n,o?n:void 0),s=o?n:i,{isSameDay:l}=t;return{selected:s,select:(c,d,p)=>{let h=c;return!r&&s&&s&&l(c,s)&&(h=void 0),o||a(h),o?.(h,c,d,p),h},isSelected:c=>s?l(s,c):!1}}function Xc(e,t){const n=Jc(e,t),r=qc(e,t),o=Zc(e,t);switch(e.mode){case"single":return n;case"multiple":return r;case"range":return o;default:return}}function su(e){let t=e;t.timeZone&&(t={...e},t.today&&(t.today=new te(t.today,t.timeZone)),t.month&&(t.month=new te(t.month,t.timeZone)),t.defaultMonth&&(t.defaultMonth=new te(t.defaultMonth,t.timeZone)),t.startMonth&&(t.startMonth=new te(t.startMonth,t.timeZone)),t.endMonth&&(t.endMonth=new te(t.endMonth,t.timeZone)),t.mode==="single"&&t.selected?t.selected=new te(t.selected,t.timeZone):t.mode==="multiple"&&t.selected?t.selected=t.selected?.map(L=>new te(L,t.timeZone)):t.mode==="range"&&t.selected&&(t.selected={from:t.selected.from?new te(t.selected.from,t.timeZone):void 0,to:t.selected.to?new te(t.selected.to,t.timeZone):void 0}));const{components:n,formatters:r,labels:o,dateLib:i,locale:a,classNames:s}=b.useMemo(()=>{const L={...cr,...t.locale};return{dateLib:new fe({locale:L,weekStartsOn:t.broadcastCalendar?1:t.weekStartsOn,firstWeekContainsDate:t.firstWeekContainsDate,useAdditionalWeekYearTokens:t.useAdditionalWeekYearTokens,useAdditionalDayOfYearTokens:t.useAdditionalDayOfYearTokens,timeZone:t.timeZone,numerals:t.numerals},t.dateLib),components:nc(t.components),formatters:pc(t.formatters),labels:{...Nc,...t.labels},locale:L,classNames:{...oc(),...t.classNames}}},[t.locale,t.broadcastCalendar,t.weekStartsOn,t.firstWeekContainsDate,t.useAdditionalWeekYearTokens,t.useAdditionalDayOfYearTokens,t.timeZone,t.numerals,t.dateLib,t.components,t.formatters,t.labels,t.classNames]),{captionLayout:l,mode:u,navLayout:f,numberOfMonths:c=1,onDayBlur:d,onDayClick:p,onDayFocus:h,onDayKeyDown:v,onDayMouseEnter:O,onDayMouseLeave:y,onNextClick:m,onPrevClick:S,showWeekNumber:D,styles:E}=t,{formatCaption:C,formatDay:M,formatMonthDropdown:j,formatWeekNumber:J,formatWeekNumberHeader:Y,formatWeekdayName:Q,formatYearDropdown:re}=r,Me=Hc(t,i),{days:le,months:de,navStart:Ie,navEnd:je,previousMonth:ie,nextMonth:se,goToMonth:pe}=Me,Ue=ec(le,t,Ie,je,i),{isSelected:k,select:W,selected:F}=Xc(t,i)??{},{blur:R,focused:U,isFocusTarget:G,moveFocus:ee,setFocused:X}=Yc(t,Me,Ue,k??(()=>!1),i),{labelDayButton:ze,labelGridcell:ho,labelGrid:mo,labelMonthDropdown:yo,labelNav:bn,labelPrevious:vo,labelNext:go,labelWeekday:bo,labelWeekNumber:wo,labelWeekNumberHeader:Oo,labelYearDropdown:So}=o,Eo=b.useMemo(()=>yc(i,t.ISOWeek),[i,t.ISOWeek]),wn=u!==void 0||p!==void 0,jt=b.useCallback(()=>{ie&&(pe(ie),S?.(ie))},[ie,pe,S]),Ft=b.useCallback(()=>{se&&(pe(se),m?.(se))},[pe,se,m]),ko=b.useCallback((L,V)=>_=>{_.preventDefault(),_.stopPropagation(),X(L),W?.(L.date,V,_),p?.(L.date,V,_)},[W,p,X]),Co=b.useCallback((L,V)=>_=>{X(L),h?.(L.date,V,_)},[h,X]),To=b.useCallback((L,V)=>_=>{R(),d?.(L.date,V,_)},[R,d]),Mo=b.useCallback((L,V)=>_=>{const q={ArrowLeft:[_.shiftKey?"month":"day",t.dir==="rtl"?"after":"before"],ArrowRight:[_.shiftKey?"month":"day",t.dir==="rtl"?"before":"after"],ArrowDown:[_.shiftKey?"year":"week","after"],ArrowUp:[_.shiftKey?"year":"week","before"],PageUp:[_.shiftKey?"year":"month","before"],PageDown:[_.shiftKey?"year":"month","after"],Home:["startOfWeek","before"],End:["endOfWeek","after"]};if(q[_.key]){_.preventDefault(),_.stopPropagation();const[ce,H]=q[_.key];ee(ce,H)}v?.(L.date,V,_)},[ee,v,t.dir]),xo=b.useCallback((L,V)=>_=>{O?.(L.date,V,_)},[O]),No=b.useCallback((L,V)=>_=>{y?.(L.date,V,_)},[y]),Po=b.useCallback(L=>V=>{const _=Number(V.target.value),q=i.setMonth(i.startOfMonth(L),_);pe(q)},[i,pe]),Do=b.useCallback(L=>V=>{const _=Number(V.target.value),q=i.setYear(i.startOfMonth(L),_);pe(q)},[i,pe]),{className:Io,style:Ro}=b.useMemo(()=>({className:[s[I.Root],t.className].filter(Boolean).join(" "),style:{...E?.[I.Root],...t.style}}),[s,t.className,t.style,E]),Wo=rc(t),On=b.useRef(null);Rc(On,!!t.animate,{classNames:s,months:de,focused:U,dateLib:i});const Ao={dayPickerProps:t,selected:F,select:W,isSelected:k,months:de,nextMonth:se,previousMonth:ie,goToMonth:pe,getModifiers:Ue,components:n,classNames:s,styles:E,labels:o,formatters:r};return w.createElement(no.Provider,{value:Ao},w.createElement(n.Root,{rootRef:t.animate?On:void 0,className:Io,style:Ro,dir:t.dir,id:t.id,lang:t.lang,nonce:t.nonce,title:t.title,role:t.role,"aria-label":t["aria-label"],"aria-labelledby":t["aria-labelledby"],...Wo},w.createElement(n.Months,{className:s[I.Months],style:E?.[I.Months]},!t.hideNavigation&&!f&&w.createElement(n.Nav,{"data-animated-nav":t.animate?"true":void 0,className:s[I.Nav],style:E?.[I.Nav],"aria-label":bn(),onPreviousClick:jt,onNextClick:Ft,previousMonth:ie,nextMonth:se}),de.map((L,V)=>w.createElement(n.Month,{"data-animated-month":t.animate?"true":void 0,className:s[I.Month],style:E?.[I.Month],key:V,displayIndex:V,calendarMonth:L},f==="around"&&!t.hideNavigation&&V===0&&w.createElement(n.PreviousMonthButton,{type:"button",className:s[I.PreviousMonthButton],tabIndex:ie?void 0:-1,"aria-disabled":ie?void 0:!0,"aria-label":vo(ie),onClick:jt,"data-animated-button":t.animate?"true":void 0},w.createElement(n.Chevron,{disabled:ie?void 0:!0,className:s[I.Chevron],orientation:t.dir==="rtl"?"right":"left"})),w.createElement(n.MonthCaption,{"data-animated-caption":t.animate?"true":void 0,className:s[I.MonthCaption],style:E?.[I.MonthCaption],calendarMonth:L,displayIndex:V},l?.startsWith("dropdown")?w.createElement(n.DropdownNav,{className:s[I.Dropdowns],style:E?.[I.Dropdowns]},(()=>{const _=l==="dropdown"||l==="dropdown-months"?w.createElement(n.MonthsDropdown,{key:"month",className:s[I.MonthsDropdown],"aria-label":yo(),classNames:s,components:n,disabled:!!t.disableNavigation,onChange:Po(L.date),options:hc(L.date,Ie,je,r,i),style:E?.[I.Dropdown],value:i.getMonth(L.date)}):w.createElement("span",{key:"month"},j(L.date,i)),q=l==="dropdown"||l==="dropdown-years"?w.createElement(n.YearsDropdown,{key:"year",className:s[I.YearsDropdown],"aria-label":So(i.options),classNames:s,components:n,disabled:!!t.disableNavigation,onChange:Do(L.date),options:vc(Ie,je,r,i,!!t.reverseYears),style:E?.[I.Dropdown],value:i.getYear(L.date)}):w.createElement("span",{key:"year"},re(L.date,i));return i.getMonthYearOrder()==="year-first"?[q,_]:[_,q]})(),w.createElement("span",{role:"status","aria-live":"polite",style:{border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",width:"1px",whiteSpace:"nowrap",wordWrap:"normal"}},C(L.date,i.options,i))):w.createElement(n.CaptionLabel,{className:s[I.CaptionLabel],role:"status","aria-live":"polite"},C(L.date,i.options,i))),f==="around"&&!t.hideNavigation&&V===c-1&&w.createElement(n.NextMonthButton,{type:"button",className:s[I.NextMonthButton],tabIndex:se?void 0:-1,"aria-disabled":se?void 0:!0,"aria-label":go(se),onClick:Ft,"data-animated-button":t.animate?"true":void 0},w.createElement(n.Chevron,{disabled:se?void 0:!0,className:s[I.Chevron],orientation:t.dir==="rtl"?"left":"right"})),V===c-1&&f==="after"&&!t.hideNavigation&&w.createElement(n.Nav,{"data-animated-nav":t.animate?"true":void 0,className:s[I.Nav],style:E?.[I.Nav],"aria-label":bn(),onPreviousClick:jt,onNextClick:Ft,previousMonth:ie,nextMonth:se}),w.createElement(n.MonthGrid,{role:"grid","aria-multiselectable":u==="multiple"||u==="range","aria-label":mo(L.date,i.options,i)||void 0,className:s[I.MonthGrid],style:E?.[I.MonthGrid]},!t.hideWeekdays&&w.createElement(n.Weekdays,{"data-animated-weekdays":t.animate?"true":void 0,className:s[I.Weekdays],style:E?.[I.Weekdays]},D&&w.createElement(n.WeekNumberHeader,{"aria-label":Oo(i.options),className:s[I.WeekNumberHeader],style:E?.[I.WeekNumberHeader],scope:"col"},Y()),Eo.map(_=>w.createElement(n.Weekday,{"aria-label":bo(_,i.options,i),className:s[I.Weekday],key:String(_),style:E?.[I.Weekday],scope:"col"},Q(_,i.options,i)))),w.createElement(n.Weeks,{"data-animated-weeks":t.animate?"true":void 0,className:s[I.Weeks],style:E?.[I.Weeks]},L.weeks.map(_=>w.createElement(n.Week,{className:s[I.Week],key:_.weekNumber,style:E?.[I.Week],week:_},D&&w.createElement(n.WeekNumber,{week:_,style:E?.[I.WeekNumber],"aria-label":wo(_.weekNumber,{locale:a}),className:s[I.WeekNumber],scope:"row",role:"rowheader"},J(_.weekNumber,i)),_.days.map(q=>{const{date:ce}=q,H=Ue(q);if(H[Z.focused]=!H.hidden&&!!U?.isEqualTo(q),H[ve.selected]=k?.(ce)||H.selected,gn(F)){const{from:Lt,to:Bt}=F;H[ve.range_start]=!!(Lt&&Bt&&i.isSameDay(ce,Lt)),H[ve.range_end]=!!(Lt&&Bt&&i.isSameDay(ce,Bt)),H[ve.range_middle]=Pe(F,ce,!0,i)}const _o=mc(H,E,t.modifiersStyles),jo=tc(H,s,t.modifiersClassNames),Fo=!wn&&!H.hidden?ho(ce,H,i.options,i):void 0;return w.createElement(n.Day,{key:`${i.format(ce,"yyyy-MM-dd")}_${i.format(q.displayMonth,"yyyy-MM")}`,day:q,modifiers:H,className:jo.join(" "),style:_o,role:"gridcell","aria-selected":H.selected||void 0,"aria-label":Fo,"data-day":i.format(ce,"yyyy-MM-dd"),"data-month":q.outside?i.format(ce,"yyyy-MM"):void 0,"data-selected":H.selected||void 0,"data-disabled":H.disabled||void 0,"data-hidden":H.hidden||void 0,"data-outside":q.outside||void 0,"data-focused":H.focused||void 0,"data-today":H.today||void 0},!H.hidden&&wn?w.createElement(n.DayButton,{className:s[I.DayButton],style:E?.[I.DayButton],type:"button",day:q,modifiers:H,disabled:H.disabled||void 0,tabIndex:G(q)?0:-1,"aria-label":ze(ce,H,i.options,i),onClick:ko(q,H),onBlur:To(q,H),onFocus:Co(q,H),onKeyDown:Mo(q,H),onMouseEnter:xo(q,H),onMouseLeave:No(q,H)},M(ce,i.options,i)):!H.hidden&&M(q.date,i.options,i))})))))))),t.footer&&w.createElement(n.Footer,{className:s[I.Footer],style:E?.[I.Footer],role:"status","aria-live":"polite"},t.footer)))}export{su as D,ou as _,iu as c,oc as g}; diff --git a/webui/dist/assets/radix-core-BlBHu_Lw.js b/webui/dist/assets/radix-core-BlBHu_Lw.js new file mode 100644 index 00000000..2195079c --- /dev/null +++ b/webui/dist/assets/radix-core-BlBHu_Lw.js @@ -0,0 +1,45 @@ +import{r as i,j as v,R as Ee,a as sn,b as Ye,c as ds}from"./router-CWhjJi2n.js";function N(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),n===!1||!r.defaultPrevented)return t?.(r)}}function fs(e,t){const n=i.createContext(t),o=s=>{const{children:a,...c}=s,l=i.useMemo(()=>c,Object.values(c));return v.jsx(n.Provider,{value:l,children:a})};o.displayName=e+"Provider";function r(s){const a=i.useContext(n);if(a)return a;if(t!==void 0)return t;throw new Error(`\`${s}\` must be used within \`${e}\``)}return[o,r]}function Oe(e,t=[]){let n=[];function o(s,a){const c=i.createContext(a),l=n.length;n=[...n,a];const u=p=>{const{scope:y,children:h,...x}=p,d=y?.[e]?.[l]||c,m=i.useMemo(()=>x,Object.values(x));return v.jsx(d.Provider,{value:m,children:h})};u.displayName=s+"Provider";function f(p,y){const h=y?.[e]?.[l]||c,x=i.useContext(h);if(x)return x;if(a!==void 0)return a;throw new Error(`\`${p}\` must be used within \`${s}\``)}return[u,f]}const r=()=>{const s=n.map(a=>i.createContext(a));return function(c){const l=c?.[e]||s;return i.useMemo(()=>({[`__scope${e}`]:{...c,[e]:l}}),[c,l])}};return r.scopeName=e,[o,ps(r,...t)]}function ps(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const o=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(s){const a=o.reduce((c,{useScope:l,scopeName:u})=>{const p=l(s)[`__scope${u}`];return{...c,...p}},{});return i.useMemo(()=>({[`__scope${t.scopeName}`]:a}),[a])}};return n.scopeName=t.scopeName,n}function Pn(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function $e(...e){return t=>{let n=!1;const o=e.map(r=>{const s=Pn(r,t);return!n&&typeof s=="function"&&(n=!0),s});if(n)return()=>{for(let r=0;r{const{children:s,...a}=o,c=i.Children.toArray(s),l=c.find(vs);if(l){const u=l.props.children,f=c.map(p=>p===l?i.Children.count(u)>1?i.Children.only(null):i.isValidElement(u)?u.props.children:null:p);return v.jsx(t,{...a,ref:r,children:i.isValidElement(u)?i.cloneElement(u,void 0,f):null})}return v.jsx(t,{...a,ref:r,children:s})});return n.displayName=`${e}.Slot`,n}function ms(e){const t=i.forwardRef((n,o)=>{const{children:r,...s}=n;if(i.isValidElement(r)){const a=ys(r),c=gs(s,r.props);return r.type!==i.Fragment&&(c.ref=o?$e(o,a):a),i.cloneElement(r,c)}return i.Children.count(r)>1?i.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var hs=Symbol("radix.slottable");function vs(e){return i.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===hs}function gs(e,t){const n={...t};for(const o in t){const r=e[o],s=t[o];/^on[A-Z]/.test(o)?r&&s?n[o]=(...c)=>{const l=s(...c);return r(...c),l}:r&&(n[o]=r):o==="style"?n[o]={...r,...s}:o==="className"&&(n[o]=[r,s].filter(Boolean).join(" "))}return{...e,...n}}function ys(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function eo(e){const t=e+"CollectionProvider",[n,o]=Oe(t),[r,s]=n(t,{collectionRef:{current:null},itemMap:new Map}),a=d=>{const{scope:m,children:w}=d,g=Ee.useRef(null),C=Ee.useRef(new Map).current;return v.jsx(r,{scope:m,itemMap:C,collectionRef:g,children:w})};a.displayName=t;const c=e+"CollectionSlot",l=An(c),u=Ee.forwardRef((d,m)=>{const{scope:w,children:g}=d,C=s(c,w),b=B(m,C.collectionRef);return v.jsx(l,{ref:b,children:g})});u.displayName=c;const f=e+"CollectionItemSlot",p="data-radix-collection-item",y=An(f),h=Ee.forwardRef((d,m)=>{const{scope:w,children:g,...C}=d,b=Ee.useRef(null),E=B(m,b),R=s(f,w);return Ee.useEffect(()=>(R.itemMap.set(b,{ref:b,...C}),()=>void R.itemMap.delete(b))),v.jsx(y,{[p]:"",ref:E,children:g})});h.displayName=f;function x(d){const m=s(e+"CollectionConsumer",d);return Ee.useCallback(()=>{const g=m.collectionRef.current;if(!g)return[];const C=Array.from(g.querySelectorAll(`[${p}]`));return Array.from(m.itemMap.values()).sort((R,S)=>C.indexOf(R.ref.current)-C.indexOf(S.ref.current))},[m.collectionRef,m.itemMap])}return[{Provider:a,Slot:u,ItemSlot:h},x,o]}var z=globalThis?.document?i.useLayoutEffect:()=>{},ws=sn[" useId ".trim().toString()]||(()=>{}),xs=0;function Se(e){const[t,n]=i.useState(ws());return z(()=>{n(o=>o??String(xs++))},[e]),t?`radix-${t}`:""}function Cs(e){const t=bs(e),n=i.forwardRef((o,r)=>{const{children:s,...a}=o,c=i.Children.toArray(s),l=c.find(Ss);if(l){const u=l.props.children,f=c.map(p=>p===l?i.Children.count(u)>1?i.Children.only(null):i.isValidElement(u)?u.props.children:null:p);return v.jsx(t,{...a,ref:r,children:i.isValidElement(u)?i.cloneElement(u,void 0,f):null})}return v.jsx(t,{...a,ref:r,children:s})});return n.displayName=`${e}.Slot`,n}function bs(e){const t=i.forwardRef((n,o)=>{const{children:r,...s}=n;if(i.isValidElement(r)){const a=Rs(r),c=Ts(s,r.props);return r.type!==i.Fragment&&(c.ref=o?$e(o,a):a),i.cloneElement(r,c)}return i.Children.count(r)>1?i.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Es=Symbol("radix.slottable");function Ss(e){return i.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Es}function Ts(e,t){const n={...t};for(const o in t){const r=e[o],s=t[o];/^on[A-Z]/.test(o)?r&&s?n[o]=(...c)=>{const l=s(...c);return r(...c),l}:r&&(n[o]=r):o==="style"?n[o]={...r,...s}:o==="className"&&(n[o]=[r,s].filter(Boolean).join(" "))}return{...e,...n}}function Rs(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Ps=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],D=Ps.reduce((e,t)=>{const n=Cs(`Primitive.${t}`),o=i.forwardRef((r,s)=>{const{asChild:a,...c}=r,l=a?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),v.jsx(l,{...c,ref:s})});return o.displayName=`Primitive.${t}`,{...e,[t]:o}},{});function to(e,t){e&&Ye.flushSync(()=>e.dispatchEvent(t))}function ee(e){const t=i.useRef(e);return i.useEffect(()=>{t.current=e}),i.useMemo(()=>(...n)=>t.current?.(...n),[])}var As=sn[" useInsertionEffect ".trim().toString()]||z;function ke({prop:e,defaultProp:t,onChange:n=()=>{},caller:o}){const[r,s,a]=Os({defaultProp:t,onChange:n}),c=e!==void 0,l=c?e:r;{const f=i.useRef(e!==void 0);i.useEffect(()=>{const p=f.current;p!==c&&console.warn(`${o} is changing from ${p?"controlled":"uncontrolled"} to ${c?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),f.current=c},[c,o])}const u=i.useCallback(f=>{if(c){const p=Is(f)?f(e):f;p!==e&&a.current?.(p)}else s(f)},[c,e,s,a]);return[l,u]}function Os({defaultProp:e,onChange:t}){const[n,o]=i.useState(e),r=i.useRef(n),s=i.useRef(t);return As(()=>{s.current=t},[t]),i.useEffect(()=>{r.current!==n&&(s.current?.(n),r.current=n)},[n,r]),[n,o,s]}function Is(e){return typeof e=="function"}var Ns=i.createContext(void 0);function _s(e){const t=i.useContext(Ns);return e||t||"ltr"}function Ds(e,t){return i.useReducer((n,o)=>t[n][o]??n,e)}var ye=e=>{const{present:t,children:n}=e,o=Ms(t),r=typeof n=="function"?n({present:o.isPresent}):i.Children.only(n),s=B(o.ref,Ls(r));return typeof n=="function"||o.isPresent?i.cloneElement(r,{ref:s}):null};ye.displayName="Presence";function Ms(e){const[t,n]=i.useState(),o=i.useRef(null),r=i.useRef(e),s=i.useRef("none"),a=e?"mounted":"unmounted",[c,l]=Ds(a,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return i.useEffect(()=>{const u=Je(o.current);s.current=c==="mounted"?u:"none"},[c]),z(()=>{const u=o.current,f=r.current;if(f!==e){const y=s.current,h=Je(u);e?l("MOUNT"):h==="none"||u?.display==="none"?l("UNMOUNT"):l(f&&y!==h?"ANIMATION_OUT":"UNMOUNT"),r.current=e}},[e,l]),z(()=>{if(t){let u;const f=t.ownerDocument.defaultView??window,p=h=>{const d=Je(o.current).includes(CSS.escape(h.animationName));if(h.target===t&&d&&(l("ANIMATION_END"),!r.current)){const m=t.style.animationFillMode;t.style.animationFillMode="forwards",u=f.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=m)})}},y=h=>{h.target===t&&(s.current=Je(o.current))};return t.addEventListener("animationstart",y),t.addEventListener("animationcancel",p),t.addEventListener("animationend",p),()=>{f.clearTimeout(u),t.removeEventListener("animationstart",y),t.removeEventListener("animationcancel",p),t.removeEventListener("animationend",p)}}else l("ANIMATION_END")},[t,l]),{isPresent:["mounted","unmountSuspended"].includes(c),ref:i.useCallback(u=>{o.current=u?getComputedStyle(u):null,n(u)},[])}}function Je(e){return e?.animationName||"none"}function Ls(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function On(e,[t,n]){return Math.min(n,Math.max(t,e))}var ks=Symbol.for("react.lazy"),lt=sn[" use ".trim().toString()];function js(e){return typeof e=="object"&&e!==null&&"then"in e}function no(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===ks&&"_payload"in e&&js(e._payload)}function oo(e){const t=Fs(e),n=i.forwardRef((o,r)=>{let{children:s,...a}=o;no(s)&&typeof lt=="function"&&(s=lt(s._payload));const c=i.Children.toArray(s),l=c.find(Ws);if(l){const u=l.props.children,f=c.map(p=>p===l?i.Children.count(u)>1?i.Children.only(null):i.isValidElement(u)?u.props.children:null:p);return v.jsx(t,{...a,ref:r,children:i.isValidElement(u)?i.cloneElement(u,void 0,f):null})}return v.jsx(t,{...a,ref:r,children:s})});return n.displayName=`${e}.Slot`,n}var Ul=oo("Slot");function Fs(e){const t=i.forwardRef((n,o)=>{let{children:r,...s}=n;if(no(r)&&typeof lt=="function"&&(r=lt(r._payload)),i.isValidElement(r)){const a=Vs(r),c=Bs(s,r.props);return r.type!==i.Fragment&&(c.ref=o?$e(o,a):a),i.cloneElement(r,c)}return i.Children.count(r)>1?i.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var $s=Symbol("radix.slottable");function Ws(e){return i.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===$s}function Bs(e,t){const n={...t};for(const o in t){const r=e[o],s=t[o];/^on[A-Z]/.test(o)?r&&s?n[o]=(...c)=>{const l=s(...c);return r(...c),l}:r&&(n[o]=r):o==="style"?n[o]={...r,...s}:o==="className"&&(n[o]=[r,s].filter(Boolean).join(" "))}return{...e,...n}}function Vs(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function ro(e){const t=i.useRef({value:e,previous:e});return i.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}function so(e){const[t,n]=i.useState(void 0);return z(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const o=new ResizeObserver(r=>{if(!Array.isArray(r)||!r.length)return;const s=r[0];let a,c;if("borderBoxSize"in s){const l=s.borderBoxSize,u=Array.isArray(l)?l[0]:l;a=u.inlineSize,c=u.blockSize}else a=e.offsetWidth,c=e.offsetHeight;n({width:a,height:c})});return o.observe(e,{box:"border-box"}),()=>o.unobserve(e)}else n(void 0)},[e]),t}var Hs=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Us=Hs.reduce((e,t)=>{const n=oo(`Primitive.${t}`),o=i.forwardRef((r,s)=>{const{asChild:a,...c}=r,l=a?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),v.jsx(l,{...c,ref:s})});return o.displayName=`Primitive.${t}`,{...e,[t]:o}},{}),Ks="Label",io=i.forwardRef((e,t)=>v.jsx(Us.label,{...e,ref:t,onMouseDown:n=>{n.target.closest("button, input, select, textarea")||(e.onMouseDown?.(n),!n.defaultPrevented&&n.detail>1&&n.preventDefault())}}));io.displayName=Ks;var Kl=io;function zs(e,t=globalThis?.document){const n=ee(e);i.useEffect(()=>{const o=r=>{r.key==="Escape"&&n(r)};return t.addEventListener("keydown",o,{capture:!0}),()=>t.removeEventListener("keydown",o,{capture:!0})},[n,t])}var Ys="DismissableLayer",Ut="dismissableLayer.update",Xs="dismissableLayer.pointerDownOutside",Gs="dismissableLayer.focusOutside",In,ao=i.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Xe=i.forwardRef((e,t)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:o,onPointerDownOutside:r,onFocusOutside:s,onInteractOutside:a,onDismiss:c,...l}=e,u=i.useContext(ao),[f,p]=i.useState(null),y=f?.ownerDocument??globalThis?.document,[,h]=i.useState({}),x=B(t,S=>p(S)),d=Array.from(u.layers),[m]=[...u.layersWithOutsidePointerEventsDisabled].slice(-1),w=d.indexOf(m),g=f?d.indexOf(f):-1,C=u.layersWithOutsidePointerEventsDisabled.size>0,b=g>=w,E=Zs(S=>{const O=S.target,M=[...u.branches].some(L=>L.contains(O));!b||M||(r?.(S),a?.(S),S.defaultPrevented||c?.())},y),R=Qs(S=>{const O=S.target;[...u.branches].some(L=>L.contains(O))||(s?.(S),a?.(S),S.defaultPrevented||c?.())},y);return zs(S=>{g===u.layers.size-1&&(o?.(S),!S.defaultPrevented&&c&&(S.preventDefault(),c()))},y),i.useEffect(()=>{if(f)return n&&(u.layersWithOutsidePointerEventsDisabled.size===0&&(In=y.body.style.pointerEvents,y.body.style.pointerEvents="none"),u.layersWithOutsidePointerEventsDisabled.add(f)),u.layers.add(f),Nn(),()=>{n&&u.layersWithOutsidePointerEventsDisabled.size===1&&(y.body.style.pointerEvents=In)}},[f,y,n,u]),i.useEffect(()=>()=>{f&&(u.layers.delete(f),u.layersWithOutsidePointerEventsDisabled.delete(f),Nn())},[f,u]),i.useEffect(()=>{const S=()=>h({});return document.addEventListener(Ut,S),()=>document.removeEventListener(Ut,S)},[]),v.jsx(D.div,{...l,ref:x,style:{pointerEvents:C?b?"auto":"none":void 0,...e.style},onFocusCapture:N(e.onFocusCapture,R.onFocusCapture),onBlurCapture:N(e.onBlurCapture,R.onBlurCapture),onPointerDownCapture:N(e.onPointerDownCapture,E.onPointerDownCapture)})});Xe.displayName=Ys;var qs="DismissableLayerBranch",co=i.forwardRef((e,t)=>{const n=i.useContext(ao),o=i.useRef(null),r=B(t,o);return i.useEffect(()=>{const s=o.current;if(s)return n.branches.add(s),()=>{n.branches.delete(s)}},[n.branches]),v.jsx(D.div,{...e,ref:r})});co.displayName=qs;function Zs(e,t=globalThis?.document){const n=ee(e),o=i.useRef(!1),r=i.useRef(()=>{});return i.useEffect(()=>{const s=c=>{if(c.target&&!o.current){let l=function(){lo(Xs,n,u,{discrete:!0})};const u={originalEvent:c};c.pointerType==="touch"?(t.removeEventListener("click",r.current),r.current=l,t.addEventListener("click",r.current,{once:!0})):l()}else t.removeEventListener("click",r.current);o.current=!1},a=window.setTimeout(()=>{t.addEventListener("pointerdown",s)},0);return()=>{window.clearTimeout(a),t.removeEventListener("pointerdown",s),t.removeEventListener("click",r.current)}},[t,n]),{onPointerDownCapture:()=>o.current=!0}}function Qs(e,t=globalThis?.document){const n=ee(e),o=i.useRef(!1);return i.useEffect(()=>{const r=s=>{s.target&&!o.current&&lo(Gs,n,{originalEvent:s},{discrete:!1})};return t.addEventListener("focusin",r),()=>t.removeEventListener("focusin",r)},[t,n]),{onFocusCapture:()=>o.current=!0,onBlurCapture:()=>o.current=!1}}function Nn(){const e=new CustomEvent(Ut);document.dispatchEvent(e)}function lo(e,t,n,{discrete:o}){const r=n.originalEvent.target,s=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&r.addEventListener(e,t,{once:!0}),o?to(r,s):r.dispatchEvent(s)}var Js=Xe,ei=co,Mt="focusScope.autoFocusOnMount",Lt="focusScope.autoFocusOnUnmount",_n={bubbles:!1,cancelable:!0},ti="FocusScope",an=i.forwardRef((e,t)=>{const{loop:n=!1,trapped:o=!1,onMountAutoFocus:r,onUnmountAutoFocus:s,...a}=e,[c,l]=i.useState(null),u=ee(r),f=ee(s),p=i.useRef(null),y=B(t,d=>l(d)),h=i.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;i.useEffect(()=>{if(o){let d=function(C){if(h.paused||!c)return;const b=C.target;c.contains(b)?p.current=b:me(p.current,{select:!0})},m=function(C){if(h.paused||!c)return;const b=C.relatedTarget;b!==null&&(c.contains(b)||me(p.current,{select:!0}))},w=function(C){if(document.activeElement===document.body)for(const E of C)E.removedNodes.length>0&&me(c)};document.addEventListener("focusin",d),document.addEventListener("focusout",m);const g=new MutationObserver(w);return c&&g.observe(c,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",d),document.removeEventListener("focusout",m),g.disconnect()}}},[o,c,h.paused]),i.useEffect(()=>{if(c){Mn.add(h);const d=document.activeElement;if(!c.contains(d)){const w=new CustomEvent(Mt,_n);c.addEventListener(Mt,u),c.dispatchEvent(w),w.defaultPrevented||(ni(ai(uo(c)),{select:!0}),document.activeElement===d&&me(c))}return()=>{c.removeEventListener(Mt,u),setTimeout(()=>{const w=new CustomEvent(Lt,_n);c.addEventListener(Lt,f),c.dispatchEvent(w),w.defaultPrevented||me(d??document.body,{select:!0}),c.removeEventListener(Lt,f),Mn.remove(h)},0)}}},[c,u,f,h]);const x=i.useCallback(d=>{if(!n&&!o||h.paused)return;const m=d.key==="Tab"&&!d.altKey&&!d.ctrlKey&&!d.metaKey,w=document.activeElement;if(m&&w){const g=d.currentTarget,[C,b]=oi(g);C&&b?!d.shiftKey&&w===b?(d.preventDefault(),n&&me(C,{select:!0})):d.shiftKey&&w===C&&(d.preventDefault(),n&&me(b,{select:!0})):w===g&&d.preventDefault()}},[n,o,h.paused]);return v.jsx(D.div,{tabIndex:-1,...a,ref:y,onKeyDown:x})});an.displayName=ti;function ni(e,{select:t=!1}={}){const n=document.activeElement;for(const o of e)if(me(o,{select:t}),document.activeElement!==n)return}function oi(e){const t=uo(e),n=Dn(t,e),o=Dn(t.reverse(),e);return[n,o]}function uo(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>{const r=o.tagName==="INPUT"&&o.type==="hidden";return o.disabled||o.hidden||r?NodeFilter.FILTER_SKIP:o.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function Dn(e,t){for(const n of e)if(!ri(n,{upTo:t}))return n}function ri(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function si(e){return e instanceof HTMLInputElement&&"select"in e}function me(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&si(e)&&t&&e.select()}}var Mn=ii();function ii(){let e=[];return{add(t){const n=e[0];t!==n&&n?.pause(),e=Ln(e,t),e.unshift(t)},remove(t){e=Ln(e,t),e[0]?.resume()}}}function Ln(e,t){const n=[...e],o=n.indexOf(t);return o!==-1&&n.splice(o,1),n}function ai(e){return e.filter(t=>t.tagName!=="A")}var ci="Portal",Ge=i.forwardRef((e,t)=>{const{container:n,...o}=e,[r,s]=i.useState(!1);z(()=>s(!0),[]);const a=n||r&&globalThis?.document?.body;return a?ds.createPortal(v.jsx(D.div,{...o,ref:t}),a):null});Ge.displayName=ci;var kt=0;function fo(){i.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??kn()),document.body.insertAdjacentElement("beforeend",e[1]??kn()),kt++,()=>{kt===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(t=>t.remove()),kt--}},[])}function kn(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var se=function(){return se=Object.assign||function(t){for(var n,o=1,r=arguments.length;o"u")return Ti;var t=Ri(e),n=document.documentElement.clientWidth,o=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,o-n+t[2]-t[0])}},Ai=vo(),Me="data-scroll-locked",Oi=function(e,t,n,o){var r=e.left,s=e.top,a=e.right,c=e.gap;return n===void 0&&(n="margin"),` + .`.concat(ui,` { + overflow: hidden `).concat(o,`; + padding-right: `).concat(c,"px ").concat(o,`; + } + body[`).concat(Me,`] { + overflow: hidden `).concat(o,`; + overscroll-behavior: contain; + `).concat([t&&"position: relative ".concat(o,";"),n==="margin"&&` + padding-left: `.concat(r,`px; + padding-top: `).concat(s,`px; + padding-right: `).concat(a,`px; + margin-left:0; + margin-top:0; + margin-right: `).concat(c,"px ").concat(o,`; + `),n==="padding"&&"padding-right: ".concat(c,"px ").concat(o,";")].filter(Boolean).join(""),` + } + + .`).concat(it,` { + right: `).concat(c,"px ").concat(o,`; + } + + .`).concat(at,` { + margin-right: `).concat(c,"px ").concat(o,`; + } + + .`).concat(it," .").concat(it,` { + right: 0 `).concat(o,`; + } + + .`).concat(at," .").concat(at,` { + margin-right: 0 `).concat(o,`; + } + + body[`).concat(Me,`] { + `).concat(di,": ").concat(c,`px; + } +`)},Fn=function(){var e=parseInt(document.body.getAttribute(Me)||"0",10);return isFinite(e)?e:0},Ii=function(){i.useEffect(function(){return document.body.setAttribute(Me,(Fn()+1).toString()),function(){var e=Fn()-1;e<=0?document.body.removeAttribute(Me):document.body.setAttribute(Me,e.toString())}},[])},Ni=function(e){var t=e.noRelative,n=e.noImportant,o=e.gapMode,r=o===void 0?"margin":o;Ii();var s=i.useMemo(function(){return Pi(r)},[r]);return i.createElement(Ai,{styles:Oi(s,!t,r,n?"":"!important")})},Kt=!1;if(typeof window<"u")try{var et=Object.defineProperty({},"passive",{get:function(){return Kt=!0,!0}});window.addEventListener("test",et,et),window.removeEventListener("test",et,et)}catch{Kt=!1}var Ne=Kt?{passive:!1}:!1,_i=function(e){return e.tagName==="TEXTAREA"},go=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!_i(e)&&n[t]==="visible")},Di=function(e){return go(e,"overflowY")},Mi=function(e){return go(e,"overflowX")},$n=function(e,t){var n=t.ownerDocument,o=t;do{typeof ShadowRoot<"u"&&o instanceof ShadowRoot&&(o=o.host);var r=yo(e,o);if(r){var s=wo(e,o),a=s[1],c=s[2];if(a>c)return!0}o=o.parentNode}while(o&&o!==n.body);return!1},Li=function(e){var t=e.scrollTop,n=e.scrollHeight,o=e.clientHeight;return[t,n,o]},ki=function(e){var t=e.scrollLeft,n=e.scrollWidth,o=e.clientWidth;return[t,n,o]},yo=function(e,t){return e==="v"?Di(t):Mi(t)},wo=function(e,t){return e==="v"?Li(t):ki(t)},ji=function(e,t){return e==="h"&&t==="rtl"?-1:1},Fi=function(e,t,n,o,r){var s=ji(e,window.getComputedStyle(t).direction),a=s*o,c=n.target,l=t.contains(c),u=!1,f=a>0,p=0,y=0;do{if(!c)break;var h=wo(e,c),x=h[0],d=h[1],m=h[2],w=d-m-s*x;(x||w)&&yo(e,c)&&(p+=w,y+=x);var g=c.parentNode;c=g&&g.nodeType===Node.DOCUMENT_FRAGMENT_NODE?g.host:g}while(!l&&c!==document.body||l&&(t.contains(c)||t===c));return(f&&Math.abs(p)<1||!f&&Math.abs(y)<1)&&(u=!0),u},tt=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},Wn=function(e){return[e.deltaX,e.deltaY]},Bn=function(e){return e&&"current"in e?e.current:e},$i=function(e,t){return e[0]===t[0]&&e[1]===t[1]},Wi=function(e){return` + .block-interactivity-`.concat(e,` {pointer-events: none;} + .allow-interactivity-`).concat(e,` {pointer-events: all;} +`)},Bi=0,_e=[];function Vi(e){var t=i.useRef([]),n=i.useRef([0,0]),o=i.useRef(),r=i.useState(Bi++)[0],s=i.useState(vo)[0],a=i.useRef(e);i.useEffect(function(){a.current=e},[e]),i.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(r));var d=li([e.lockRef.current],(e.shards||[]).map(Bn),!0).filter(Boolean);return d.forEach(function(m){return m.classList.add("allow-interactivity-".concat(r))}),function(){document.body.classList.remove("block-interactivity-".concat(r)),d.forEach(function(m){return m.classList.remove("allow-interactivity-".concat(r))})}}},[e.inert,e.lockRef.current,e.shards]);var c=i.useCallback(function(d,m){if("touches"in d&&d.touches.length===2||d.type==="wheel"&&d.ctrlKey)return!a.current.allowPinchZoom;var w=tt(d),g=n.current,C="deltaX"in d?d.deltaX:g[0]-w[0],b="deltaY"in d?d.deltaY:g[1]-w[1],E,R=d.target,S=Math.abs(C)>Math.abs(b)?"h":"v";if("touches"in d&&S==="h"&&R.type==="range")return!1;var O=$n(S,R);if(!O)return!0;if(O?E=S:(E=S==="v"?"h":"v",O=$n(S,R)),!O)return!1;if(!o.current&&"changedTouches"in d&&(C||b)&&(o.current=E),!E)return!0;var M=o.current||E;return Fi(M,m,d,M==="h"?C:b)},[]),l=i.useCallback(function(d){var m=d;if(!(!_e.length||_e[_e.length-1]!==s)){var w="deltaY"in m?Wn(m):tt(m),g=t.current.filter(function(E){return E.name===m.type&&(E.target===m.target||m.target===E.shadowParent)&&$i(E.delta,w)})[0];if(g&&g.should){m.cancelable&&m.preventDefault();return}if(!g){var C=(a.current.shards||[]).map(Bn).filter(Boolean).filter(function(E){return E.contains(m.target)}),b=C.length>0?c(m,C[0]):!a.current.noIsolation;b&&m.cancelable&&m.preventDefault()}}},[]),u=i.useCallback(function(d,m,w,g){var C={name:d,delta:m,target:w,should:g,shadowParent:Hi(w)};t.current.push(C),setTimeout(function(){t.current=t.current.filter(function(b){return b!==C})},1)},[]),f=i.useCallback(function(d){n.current=tt(d),o.current=void 0},[]),p=i.useCallback(function(d){u(d.type,Wn(d),d.target,c(d,e.lockRef.current))},[]),y=i.useCallback(function(d){u(d.type,tt(d),d.target,c(d,e.lockRef.current))},[]);i.useEffect(function(){return _e.push(s),e.setCallbacks({onScrollCapture:p,onWheelCapture:p,onTouchMoveCapture:y}),document.addEventListener("wheel",l,Ne),document.addEventListener("touchmove",l,Ne),document.addEventListener("touchstart",f,Ne),function(){_e=_e.filter(function(d){return d!==s}),document.removeEventListener("wheel",l,Ne),document.removeEventListener("touchmove",l,Ne),document.removeEventListener("touchstart",f,Ne)}},[]);var h=e.removeScrollBar,x=e.inert;return i.createElement(i.Fragment,null,x?i.createElement(s,{styles:Wi(r)}):null,h?i.createElement(Ni,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function Hi(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const Ui=yi(ho,Vi);var cn=i.forwardRef(function(e,t){return i.createElement(vt,se({},e,{ref:t,sideCar:Ui}))});cn.classNames=vt.classNames;var Ki=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},De=new WeakMap,nt=new WeakMap,ot={},Wt=0,xo=function(e){return e&&(e.host||xo(e.parentNode))},zi=function(e,t){return t.map(function(n){if(e.contains(n))return n;var o=xo(n);return o&&e.contains(o)?o:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return!!n})},Yi=function(e,t,n,o){var r=zi(t,Array.isArray(e)?e:[e]);ot[n]||(ot[n]=new WeakMap);var s=ot[n],a=[],c=new Set,l=new Set(r),u=function(p){!p||c.has(p)||(c.add(p),u(p.parentNode))};r.forEach(u);var f=function(p){!p||l.has(p)||Array.prototype.forEach.call(p.children,function(y){if(c.has(y))f(y);else try{var h=y.getAttribute(o),x=h!==null&&h!=="false",d=(De.get(y)||0)+1,m=(s.get(y)||0)+1;De.set(y,d),s.set(y,m),a.push(y),d===1&&x&&nt.set(y,!0),m===1&&y.setAttribute(n,"true"),x||y.setAttribute(o,"true")}catch(w){console.error("aria-hidden: cannot operate on ",y,w)}})};return f(t),c.clear(),Wt++,function(){a.forEach(function(p){var y=De.get(p)-1,h=s.get(p)-1;De.set(p,y),s.set(p,h),y||(nt.has(p)||p.removeAttribute(o),nt.delete(p)),h||p.removeAttribute(n)}),Wt--,Wt||(De=new WeakMap,De=new WeakMap,nt=new WeakMap,ot={})}},Co=function(e,t,n){n===void 0&&(n="data-aria-hidden");var o=Array.from(Array.isArray(e)?e:[e]),r=Ki(e);return r?(o.push.apply(o,Array.from(r.querySelectorAll("[aria-live], script"))),Yi(o,r,n,"aria-hidden")):function(){return null}};function Xi(e){const t=Gi(e),n=i.forwardRef((o,r)=>{const{children:s,...a}=o,c=i.Children.toArray(s),l=c.find(Zi);if(l){const u=l.props.children,f=c.map(p=>p===l?i.Children.count(u)>1?i.Children.only(null):i.isValidElement(u)?u.props.children:null:p);return v.jsx(t,{...a,ref:r,children:i.isValidElement(u)?i.cloneElement(u,void 0,f):null})}return v.jsx(t,{...a,ref:r,children:s})});return n.displayName=`${e}.Slot`,n}function Gi(e){const t=i.forwardRef((n,o)=>{const{children:r,...s}=n;if(i.isValidElement(r)){const a=Ji(r),c=Qi(s,r.props);return r.type!==i.Fragment&&(c.ref=o?$e(o,a):a),i.cloneElement(r,c)}return i.Children.count(r)>1?i.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var qi=Symbol("radix.slottable");function Zi(e){return i.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===qi}function Qi(e,t){const n={...t};for(const o in t){const r=e[o],s=t[o];/^on[A-Z]/.test(o)?r&&s?n[o]=(...c)=>{const l=s(...c);return r(...c),l}:r&&(n[o]=r):o==="style"?n[o]={...r,...s}:o==="className"&&(n[o]=[r,s].filter(Boolean).join(" "))}return{...e,...n}}function Ji(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var gt="Dialog",[bo,zl]=Oe(gt),[ea,oe]=bo(gt),Eo=e=>{const{__scopeDialog:t,children:n,open:o,defaultOpen:r,onOpenChange:s,modal:a=!0}=e,c=i.useRef(null),l=i.useRef(null),[u,f]=ke({prop:o,defaultProp:r??!1,onChange:s,caller:gt});return v.jsx(ea,{scope:t,triggerRef:c,contentRef:l,contentId:Se(),titleId:Se(),descriptionId:Se(),open:u,onOpenChange:f,onOpenToggle:i.useCallback(()=>f(p=>!p),[f]),modal:a,children:n})};Eo.displayName=gt;var So="DialogTrigger",To=i.forwardRef((e,t)=>{const{__scopeDialog:n,...o}=e,r=oe(So,n),s=B(t,r.triggerRef);return v.jsx(D.button,{type:"button","aria-haspopup":"dialog","aria-expanded":r.open,"aria-controls":r.contentId,"data-state":dn(r.open),...o,ref:s,onClick:N(e.onClick,r.onOpenToggle)})});To.displayName=So;var ln="DialogPortal",[ta,Ro]=bo(ln,{forceMount:void 0}),Po=e=>{const{__scopeDialog:t,forceMount:n,children:o,container:r}=e,s=oe(ln,t);return v.jsx(ta,{scope:t,forceMount:n,children:i.Children.map(o,a=>v.jsx(ye,{present:n||s.open,children:v.jsx(Ge,{asChild:!0,container:r,children:a})}))})};Po.displayName=ln;var ut="DialogOverlay",Ao=i.forwardRef((e,t)=>{const n=Ro(ut,e.__scopeDialog),{forceMount:o=n.forceMount,...r}=e,s=oe(ut,e.__scopeDialog);return s.modal?v.jsx(ye,{present:o||s.open,children:v.jsx(oa,{...r,ref:t})}):null});Ao.displayName=ut;var na=Xi("DialogOverlay.RemoveScroll"),oa=i.forwardRef((e,t)=>{const{__scopeDialog:n,...o}=e,r=oe(ut,n);return v.jsx(cn,{as:na,allowPinchZoom:!0,shards:[r.contentRef],children:v.jsx(D.div,{"data-state":dn(r.open),...o,ref:t,style:{pointerEvents:"auto",...o.style}})})}),Te="DialogContent",Oo=i.forwardRef((e,t)=>{const n=Ro(Te,e.__scopeDialog),{forceMount:o=n.forceMount,...r}=e,s=oe(Te,e.__scopeDialog);return v.jsx(ye,{present:o||s.open,children:s.modal?v.jsx(ra,{...r,ref:t}):v.jsx(sa,{...r,ref:t})})});Oo.displayName=Te;var ra=i.forwardRef((e,t)=>{const n=oe(Te,e.__scopeDialog),o=i.useRef(null),r=B(t,n.contentRef,o);return i.useEffect(()=>{const s=o.current;if(s)return Co(s)},[]),v.jsx(Io,{...e,ref:r,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:N(e.onCloseAutoFocus,s=>{s.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:N(e.onPointerDownOutside,s=>{const a=s.detail.originalEvent,c=a.button===0&&a.ctrlKey===!0;(a.button===2||c)&&s.preventDefault()}),onFocusOutside:N(e.onFocusOutside,s=>s.preventDefault())})}),sa=i.forwardRef((e,t)=>{const n=oe(Te,e.__scopeDialog),o=i.useRef(!1),r=i.useRef(!1);return v.jsx(Io,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:s=>{e.onCloseAutoFocus?.(s),s.defaultPrevented||(o.current||n.triggerRef.current?.focus(),s.preventDefault()),o.current=!1,r.current=!1},onInteractOutside:s=>{e.onInteractOutside?.(s),s.defaultPrevented||(o.current=!0,s.detail.originalEvent.type==="pointerdown"&&(r.current=!0));const a=s.target;n.triggerRef.current?.contains(a)&&s.preventDefault(),s.detail.originalEvent.type==="focusin"&&r.current&&s.preventDefault()}})}),Io=i.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:o,onOpenAutoFocus:r,onCloseAutoFocus:s,...a}=e,c=oe(Te,n),l=i.useRef(null),u=B(t,l);return fo(),v.jsxs(v.Fragment,{children:[v.jsx(an,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:r,onUnmountAutoFocus:s,children:v.jsx(Xe,{role:"dialog",id:c.contentId,"aria-describedby":c.descriptionId,"aria-labelledby":c.titleId,"data-state":dn(c.open),...a,ref:u,onDismiss:()=>c.onOpenChange(!1)})}),v.jsxs(v.Fragment,{children:[v.jsx(ia,{titleId:c.titleId}),v.jsx(ca,{contentRef:l,descriptionId:c.descriptionId})]})]})}),un="DialogTitle",No=i.forwardRef((e,t)=>{const{__scopeDialog:n,...o}=e,r=oe(un,n);return v.jsx(D.h2,{id:r.titleId,...o,ref:t})});No.displayName=un;var _o="DialogDescription",Do=i.forwardRef((e,t)=>{const{__scopeDialog:n,...o}=e,r=oe(_o,n);return v.jsx(D.p,{id:r.descriptionId,...o,ref:t})});Do.displayName=_o;var Mo="DialogClose",Lo=i.forwardRef((e,t)=>{const{__scopeDialog:n,...o}=e,r=oe(Mo,n);return v.jsx(D.button,{type:"button",...o,ref:t,onClick:N(e.onClick,()=>r.onOpenChange(!1))})});Lo.displayName=Mo;function dn(e){return e?"open":"closed"}var ko="DialogTitleWarning",[Yl,jo]=fs(ko,{contentName:Te,titleName:un,docsSlug:"dialog"}),ia=({titleId:e})=>{const t=jo(ko),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users. + +If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component. + +For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return i.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},aa="DialogDescriptionWarning",ca=({contentRef:e,descriptionId:t})=>{const o=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${jo(aa).contentName}}.`;return i.useEffect(()=>{const r=e.current?.getAttribute("aria-describedby");t&&r&&(document.getElementById(t)||console.warn(o))},[o,e,t]),null},Xl=Eo,Gl=To,ql=Po,Zl=Ao,Ql=Oo,Jl=No,eu=Do,tu=Lo;const la=["top","right","bottom","left"],ve=Math.min,G=Math.max,dt=Math.round,rt=Math.floor,ae=e=>({x:e,y:e}),ua={left:"right",right:"left",bottom:"top",top:"bottom"},da={start:"end",end:"start"};function zt(e,t,n){return G(e,ve(t,n))}function fe(e,t){return typeof e=="function"?e(t):e}function pe(e){return e.split("-")[0]}function We(e){return e.split("-")[1]}function fn(e){return e==="x"?"y":"x"}function pn(e){return e==="y"?"height":"width"}const fa=new Set(["top","bottom"]);function ie(e){return fa.has(pe(e))?"y":"x"}function mn(e){return fn(ie(e))}function pa(e,t,n){n===void 0&&(n=!1);const o=We(e),r=mn(e),s=pn(r);let a=r==="x"?o===(n?"end":"start")?"right":"left":o==="start"?"bottom":"top";return t.reference[s]>t.floating[s]&&(a=ft(a)),[a,ft(a)]}function ma(e){const t=ft(e);return[Yt(e),t,Yt(t)]}function Yt(e){return e.replace(/start|end/g,t=>da[t])}const Vn=["left","right"],Hn=["right","left"],ha=["top","bottom"],va=["bottom","top"];function ga(e,t,n){switch(e){case"top":case"bottom":return n?t?Hn:Vn:t?Vn:Hn;case"left":case"right":return t?ha:va;default:return[]}}function ya(e,t,n,o){const r=We(e);let s=ga(pe(e),n==="start",o);return r&&(s=s.map(a=>a+"-"+r),t&&(s=s.concat(s.map(Yt)))),s}function ft(e){return e.replace(/left|right|bottom|top/g,t=>ua[t])}function wa(e){return{top:0,right:0,bottom:0,left:0,...e}}function Fo(e){return typeof e!="number"?wa(e):{top:e,right:e,bottom:e,left:e}}function pt(e){const{x:t,y:n,width:o,height:r}=e;return{width:o,height:r,top:n,left:t,right:t+o,bottom:n+r,x:t,y:n}}function Un(e,t,n){let{reference:o,floating:r}=e;const s=ie(t),a=mn(t),c=pn(a),l=pe(t),u=s==="y",f=o.x+o.width/2-r.width/2,p=o.y+o.height/2-r.height/2,y=o[c]/2-r[c]/2;let h;switch(l){case"top":h={x:f,y:o.y-r.height};break;case"bottom":h={x:f,y:o.y+o.height};break;case"right":h={x:o.x+o.width,y:p};break;case"left":h={x:o.x-r.width,y:p};break;default:h={x:o.x,y:o.y}}switch(We(t)){case"start":h[a]-=y*(n&&u?-1:1);break;case"end":h[a]+=y*(n&&u?-1:1);break}return h}const xa=async(e,t,n)=>{const{placement:o="bottom",strategy:r="absolute",middleware:s=[],platform:a}=n,c=s.filter(Boolean),l=await(a.isRTL==null?void 0:a.isRTL(t));let u=await a.getElementRects({reference:e,floating:t,strategy:r}),{x:f,y:p}=Un(u,o,l),y=o,h={},x=0;for(let d=0;d({name:"arrow",options:e,async fn(t){const{x:n,y:o,placement:r,rects:s,platform:a,elements:c,middlewareData:l}=t,{element:u,padding:f=0}=fe(e,t)||{};if(u==null)return{};const p=Fo(f),y={x:n,y:o},h=mn(r),x=pn(h),d=await a.getDimensions(u),m=h==="y",w=m?"top":"left",g=m?"bottom":"right",C=m?"clientHeight":"clientWidth",b=s.reference[x]+s.reference[h]-y[h]-s.floating[x],E=y[h]-s.reference[h],R=await(a.getOffsetParent==null?void 0:a.getOffsetParent(u));let S=R?R[C]:0;(!S||!await(a.isElement==null?void 0:a.isElement(R)))&&(S=c.floating[C]||s.floating[x]);const O=b/2-E/2,M=S/2-d[x]/2-1,L=ve(p[w],M),k=ve(p[g],M),$=L,F=S-d[x]-k,T=S/2-d[x]/2+O,j=zt($,T,F),I=!l.arrow&&We(r)!=null&&T!==j&&s.reference[x]/2-(T<$?L:k)-d[x]/2<0,_=I?T<$?T-$:T-F:0;return{[h]:y[h]+_,data:{[h]:j,centerOffset:T-j-_,...I&&{alignmentOffset:_}},reset:I}}}),ba=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n,o;const{placement:r,middlewareData:s,rects:a,initialPlacement:c,platform:l,elements:u}=t,{mainAxis:f=!0,crossAxis:p=!0,fallbackPlacements:y,fallbackStrategy:h="bestFit",fallbackAxisSideDirection:x="none",flipAlignment:d=!0,...m}=fe(e,t);if((n=s.arrow)!=null&&n.alignmentOffset)return{};const w=pe(r),g=ie(c),C=pe(c)===c,b=await(l.isRTL==null?void 0:l.isRTL(u.floating)),E=y||(C||!d?[ft(c)]:ma(c)),R=x!=="none";!y&&R&&E.push(...ya(c,d,x,b));const S=[c,...E],O=await Ue(t,m),M=[];let L=((o=s.flip)==null?void 0:o.overflows)||[];if(f&&M.push(O[w]),p){const T=pa(r,a,b);M.push(O[T[0]],O[T[1]])}if(L=[...L,{placement:r,overflows:M}],!M.every(T=>T<=0)){var k,$;const T=(((k=s.flip)==null?void 0:k.index)||0)+1,j=S[T];if(j&&(!(p==="alignment"?g!==ie(j):!1)||L.every(P=>ie(P.placement)===g?P.overflows[0]>0:!0)))return{data:{index:T,overflows:L},reset:{placement:j}};let I=($=L.filter(_=>_.overflows[0]<=0).sort((_,P)=>_.overflows[1]-P.overflows[1])[0])==null?void 0:$.placement;if(!I)switch(h){case"bestFit":{var F;const _=(F=L.filter(P=>{if(R){const W=ie(P.placement);return W===g||W==="y"}return!0}).map(P=>[P.placement,P.overflows.filter(W=>W>0).reduce((W,Y)=>W+Y,0)]).sort((P,W)=>P[1]-W[1])[0])==null?void 0:F[0];_&&(I=_);break}case"initialPlacement":I=c;break}if(r!==I)return{reset:{placement:I}}}return{}}}};function Kn(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function zn(e){return la.some(t=>e[t]>=0)}const Ea=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:o="referenceHidden",...r}=fe(e,t);switch(o){case"referenceHidden":{const s=await Ue(t,{...r,elementContext:"reference"}),a=Kn(s,n.reference);return{data:{referenceHiddenOffsets:a,referenceHidden:zn(a)}}}case"escaped":{const s=await Ue(t,{...r,altBoundary:!0}),a=Kn(s,n.floating);return{data:{escapedOffsets:a,escaped:zn(a)}}}default:return{}}}}},$o=new Set(["left","top"]);async function Sa(e,t){const{placement:n,platform:o,elements:r}=e,s=await(o.isRTL==null?void 0:o.isRTL(r.floating)),a=pe(n),c=We(n),l=ie(n)==="y",u=$o.has(a)?-1:1,f=s&&l?-1:1,p=fe(t,e);let{mainAxis:y,crossAxis:h,alignmentAxis:x}=typeof p=="number"?{mainAxis:p,crossAxis:0,alignmentAxis:null}:{mainAxis:p.mainAxis||0,crossAxis:p.crossAxis||0,alignmentAxis:p.alignmentAxis};return c&&typeof x=="number"&&(h=c==="end"?x*-1:x),l?{x:h*f,y:y*u}:{x:y*u,y:h*f}}const Ta=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,o;const{x:r,y:s,placement:a,middlewareData:c}=t,l=await Sa(t,e);return a===((n=c.offset)==null?void 0:n.placement)&&(o=c.arrow)!=null&&o.alignmentOffset?{}:{x:r+l.x,y:s+l.y,data:{...l,placement:a}}}}},Ra=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:o,placement:r}=t,{mainAxis:s=!0,crossAxis:a=!1,limiter:c={fn:m=>{let{x:w,y:g}=m;return{x:w,y:g}}},...l}=fe(e,t),u={x:n,y:o},f=await Ue(t,l),p=ie(pe(r)),y=fn(p);let h=u[y],x=u[p];if(s){const m=y==="y"?"top":"left",w=y==="y"?"bottom":"right",g=h+f[m],C=h-f[w];h=zt(g,h,C)}if(a){const m=p==="y"?"top":"left",w=p==="y"?"bottom":"right",g=x+f[m],C=x-f[w];x=zt(g,x,C)}const d=c.fn({...t,[y]:h,[p]:x});return{...d,data:{x:d.x-n,y:d.y-o,enabled:{[y]:s,[p]:a}}}}}},Pa=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:o,placement:r,rects:s,middlewareData:a}=t,{offset:c=0,mainAxis:l=!0,crossAxis:u=!0}=fe(e,t),f={x:n,y:o},p=ie(r),y=fn(p);let h=f[y],x=f[p];const d=fe(c,t),m=typeof d=="number"?{mainAxis:d,crossAxis:0}:{mainAxis:0,crossAxis:0,...d};if(l){const C=y==="y"?"height":"width",b=s.reference[y]-s.floating[C]+m.mainAxis,E=s.reference[y]+s.reference[C]-m.mainAxis;hE&&(h=E)}if(u){var w,g;const C=y==="y"?"width":"height",b=$o.has(pe(r)),E=s.reference[p]-s.floating[C]+(b&&((w=a.offset)==null?void 0:w[p])||0)+(b?0:m.crossAxis),R=s.reference[p]+s.reference[C]+(b?0:((g=a.offset)==null?void 0:g[p])||0)-(b?m.crossAxis:0);xR&&(x=R)}return{[y]:h,[p]:x}}}},Aa=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var n,o;const{placement:r,rects:s,platform:a,elements:c}=t,{apply:l=()=>{},...u}=fe(e,t),f=await Ue(t,u),p=pe(r),y=We(r),h=ie(r)==="y",{width:x,height:d}=s.floating;let m,w;p==="top"||p==="bottom"?(m=p,w=y===(await(a.isRTL==null?void 0:a.isRTL(c.floating))?"start":"end")?"left":"right"):(w=p,m=y==="end"?"top":"bottom");const g=d-f.top-f.bottom,C=x-f.left-f.right,b=ve(d-f[m],g),E=ve(x-f[w],C),R=!t.middlewareData.shift;let S=b,O=E;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(O=C),(o=t.middlewareData.shift)!=null&&o.enabled.y&&(S=g),R&&!y){const L=G(f.left,0),k=G(f.right,0),$=G(f.top,0),F=G(f.bottom,0);h?O=x-2*(L!==0||k!==0?L+k:G(f.left,f.right)):S=d-2*($!==0||F!==0?$+F:G(f.top,f.bottom))}await l({...t,availableWidth:O,availableHeight:S});const M=await a.getDimensions(c.floating);return x!==M.width||d!==M.height?{reset:{rects:!0}}:{}}}};function yt(){return typeof window<"u"}function Be(e){return Wo(e)?(e.nodeName||"").toLowerCase():"#document"}function q(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function le(e){var t;return(t=(Wo(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function Wo(e){return yt()?e instanceof Node||e instanceof q(e).Node:!1}function te(e){return yt()?e instanceof Element||e instanceof q(e).Element:!1}function ce(e){return yt()?e instanceof HTMLElement||e instanceof q(e).HTMLElement:!1}function Yn(e){return!yt()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof q(e).ShadowRoot}const Oa=new Set(["inline","contents"]);function qe(e){const{overflow:t,overflowX:n,overflowY:o,display:r}=ne(e);return/auto|scroll|overlay|hidden|clip/.test(t+o+n)&&!Oa.has(r)}const Ia=new Set(["table","td","th"]);function Na(e){return Ia.has(Be(e))}const _a=[":popover-open",":modal"];function wt(e){return _a.some(t=>{try{return e.matches(t)}catch{return!1}})}const Da=["transform","translate","scale","rotate","perspective"],Ma=["transform","translate","scale","rotate","perspective","filter"],La=["paint","layout","strict","content"];function hn(e){const t=vn(),n=te(e)?ne(e):e;return Da.some(o=>n[o]?n[o]!=="none":!1)||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||Ma.some(o=>(n.willChange||"").includes(o))||La.some(o=>(n.contain||"").includes(o))}function ka(e){let t=ge(e);for(;ce(t)&&!je(t);){if(hn(t))return t;if(wt(t))return null;t=ge(t)}return null}function vn(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const ja=new Set(["html","body","#document"]);function je(e){return ja.has(Be(e))}function ne(e){return q(e).getComputedStyle(e)}function xt(e){return te(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function ge(e){if(Be(e)==="html")return e;const t=e.assignedSlot||e.parentNode||Yn(e)&&e.host||le(e);return Yn(t)?t.host:t}function Bo(e){const t=ge(e);return je(t)?e.ownerDocument?e.ownerDocument.body:e.body:ce(t)&&qe(t)?t:Bo(t)}function Ke(e,t,n){var o;t===void 0&&(t=[]),n===void 0&&(n=!0);const r=Bo(e),s=r===((o=e.ownerDocument)==null?void 0:o.body),a=q(r);if(s){const c=Xt(a);return t.concat(a,a.visualViewport||[],qe(r)?r:[],c&&n?Ke(c):[])}return t.concat(r,Ke(r,[],n))}function Xt(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Vo(e){const t=ne(e);let n=parseFloat(t.width)||0,o=parseFloat(t.height)||0;const r=ce(e),s=r?e.offsetWidth:n,a=r?e.offsetHeight:o,c=dt(n)!==s||dt(o)!==a;return c&&(n=s,o=a),{width:n,height:o,$:c}}function gn(e){return te(e)?e:e.contextElement}function Le(e){const t=gn(e);if(!ce(t))return ae(1);const n=t.getBoundingClientRect(),{width:o,height:r,$:s}=Vo(t);let a=(s?dt(n.width):n.width)/o,c=(s?dt(n.height):n.height)/r;return(!a||!Number.isFinite(a))&&(a=1),(!c||!Number.isFinite(c))&&(c=1),{x:a,y:c}}const Fa=ae(0);function Ho(e){const t=q(e);return!vn()||!t.visualViewport?Fa:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function $a(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==q(e)?!1:t}function Re(e,t,n,o){t===void 0&&(t=!1),n===void 0&&(n=!1);const r=e.getBoundingClientRect(),s=gn(e);let a=ae(1);t&&(o?te(o)&&(a=Le(o)):a=Le(e));const c=$a(s,n,o)?Ho(s):ae(0);let l=(r.left+c.x)/a.x,u=(r.top+c.y)/a.y,f=r.width/a.x,p=r.height/a.y;if(s){const y=q(s),h=o&&te(o)?q(o):o;let x=y,d=Xt(x);for(;d&&o&&h!==x;){const m=Le(d),w=d.getBoundingClientRect(),g=ne(d),C=w.left+(d.clientLeft+parseFloat(g.paddingLeft))*m.x,b=w.top+(d.clientTop+parseFloat(g.paddingTop))*m.y;l*=m.x,u*=m.y,f*=m.x,p*=m.y,l+=C,u+=b,x=q(d),d=Xt(x)}}return pt({width:f,height:p,x:l,y:u})}function Ct(e,t){const n=xt(e).scrollLeft;return t?t.left+n:Re(le(e)).left+n}function Uo(e,t){const n=e.getBoundingClientRect(),o=n.left+t.scrollLeft-Ct(e,n),r=n.top+t.scrollTop;return{x:o,y:r}}function Wa(e){let{elements:t,rect:n,offsetParent:o,strategy:r}=e;const s=r==="fixed",a=le(o),c=t?wt(t.floating):!1;if(o===a||c&&s)return n;let l={scrollLeft:0,scrollTop:0},u=ae(1);const f=ae(0),p=ce(o);if((p||!p&&!s)&&((Be(o)!=="body"||qe(a))&&(l=xt(o)),ce(o))){const h=Re(o);u=Le(o),f.x=h.x+o.clientLeft,f.y=h.y+o.clientTop}const y=a&&!p&&!s?Uo(a,l):ae(0);return{width:n.width*u.x,height:n.height*u.y,x:n.x*u.x-l.scrollLeft*u.x+f.x+y.x,y:n.y*u.y-l.scrollTop*u.y+f.y+y.y}}function Ba(e){return Array.from(e.getClientRects())}function Va(e){const t=le(e),n=xt(e),o=e.ownerDocument.body,r=G(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),s=G(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight);let a=-n.scrollLeft+Ct(e);const c=-n.scrollTop;return ne(o).direction==="rtl"&&(a+=G(t.clientWidth,o.clientWidth)-r),{width:r,height:s,x:a,y:c}}const Xn=25;function Ha(e,t){const n=q(e),o=le(e),r=n.visualViewport;let s=o.clientWidth,a=o.clientHeight,c=0,l=0;if(r){s=r.width,a=r.height;const f=vn();(!f||f&&t==="fixed")&&(c=r.offsetLeft,l=r.offsetTop)}const u=Ct(o);if(u<=0){const f=o.ownerDocument,p=f.body,y=getComputedStyle(p),h=f.compatMode==="CSS1Compat"&&parseFloat(y.marginLeft)+parseFloat(y.marginRight)||0,x=Math.abs(o.clientWidth-p.clientWidth-h);x<=Xn&&(s-=x)}else u<=Xn&&(s+=u);return{width:s,height:a,x:c,y:l}}const Ua=new Set(["absolute","fixed"]);function Ka(e,t){const n=Re(e,!0,t==="fixed"),o=n.top+e.clientTop,r=n.left+e.clientLeft,s=ce(e)?Le(e):ae(1),a=e.clientWidth*s.x,c=e.clientHeight*s.y,l=r*s.x,u=o*s.y;return{width:a,height:c,x:l,y:u}}function Gn(e,t,n){let o;if(t==="viewport")o=Ha(e,n);else if(t==="document")o=Va(le(e));else if(te(t))o=Ka(t,n);else{const r=Ho(e);o={x:t.x-r.x,y:t.y-r.y,width:t.width,height:t.height}}return pt(o)}function Ko(e,t){const n=ge(e);return n===t||!te(n)||je(n)?!1:ne(n).position==="fixed"||Ko(n,t)}function za(e,t){const n=t.get(e);if(n)return n;let o=Ke(e,[],!1).filter(c=>te(c)&&Be(c)!=="body"),r=null;const s=ne(e).position==="fixed";let a=s?ge(e):e;for(;te(a)&&!je(a);){const c=ne(a),l=hn(a);!l&&c.position==="fixed"&&(r=null),(s?!l&&!r:!l&&c.position==="static"&&!!r&&Ua.has(r.position)||qe(a)&&!l&&Ko(e,a))?o=o.filter(f=>f!==a):r=c,a=ge(a)}return t.set(e,o),o}function Ya(e){let{element:t,boundary:n,rootBoundary:o,strategy:r}=e;const a=[...n==="clippingAncestors"?wt(t)?[]:za(t,this._c):[].concat(n),o],c=a[0],l=a.reduce((u,f)=>{const p=Gn(t,f,r);return u.top=G(p.top,u.top),u.right=ve(p.right,u.right),u.bottom=ve(p.bottom,u.bottom),u.left=G(p.left,u.left),u},Gn(t,c,r));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function Xa(e){const{width:t,height:n}=Vo(e);return{width:t,height:n}}function Ga(e,t,n){const o=ce(t),r=le(t),s=n==="fixed",a=Re(e,!0,s,t);let c={scrollLeft:0,scrollTop:0};const l=ae(0);function u(){l.x=Ct(r)}if(o||!o&&!s)if((Be(t)!=="body"||qe(r))&&(c=xt(t)),o){const h=Re(t,!0,s,t);l.x=h.x+t.clientLeft,l.y=h.y+t.clientTop}else r&&u();s&&!o&&r&&u();const f=r&&!o&&!s?Uo(r,c):ae(0),p=a.left+c.scrollLeft-l.x-f.x,y=a.top+c.scrollTop-l.y-f.y;return{x:p,y,width:a.width,height:a.height}}function Bt(e){return ne(e).position==="static"}function qn(e,t){if(!ce(e)||ne(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return le(e)===n&&(n=n.ownerDocument.body),n}function zo(e,t){const n=q(e);if(wt(e))return n;if(!ce(e)){let r=ge(e);for(;r&&!je(r);){if(te(r)&&!Bt(r))return r;r=ge(r)}return n}let o=qn(e,t);for(;o&&Na(o)&&Bt(o);)o=qn(o,t);return o&&je(o)&&Bt(o)&&!hn(o)?n:o||ka(e)||n}const qa=async function(e){const t=this.getOffsetParent||zo,n=this.getDimensions,o=await n(e.floating);return{reference:Ga(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:o.width,height:o.height}}};function Za(e){return ne(e).direction==="rtl"}const Qa={convertOffsetParentRelativeRectToViewportRelativeRect:Wa,getDocumentElement:le,getClippingRect:Ya,getOffsetParent:zo,getElementRects:qa,getClientRects:Ba,getDimensions:Xa,getScale:Le,isElement:te,isRTL:Za};function Yo(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Ja(e,t){let n=null,o;const r=le(e);function s(){var c;clearTimeout(o),(c=n)==null||c.disconnect(),n=null}function a(c,l){c===void 0&&(c=!1),l===void 0&&(l=1),s();const u=e.getBoundingClientRect(),{left:f,top:p,width:y,height:h}=u;if(c||t(),!y||!h)return;const x=rt(p),d=rt(r.clientWidth-(f+y)),m=rt(r.clientHeight-(p+h)),w=rt(f),C={rootMargin:-x+"px "+-d+"px "+-m+"px "+-w+"px",threshold:G(0,ve(1,l))||1};let b=!0;function E(R){const S=R[0].intersectionRatio;if(S!==l){if(!b)return a();S?a(!1,S):o=setTimeout(()=>{a(!1,1e-7)},1e3)}S===1&&!Yo(u,e.getBoundingClientRect())&&a(),b=!1}try{n=new IntersectionObserver(E,{...C,root:r.ownerDocument})}catch{n=new IntersectionObserver(E,C)}n.observe(e)}return a(!0),s}function ec(e,t,n,o){o===void 0&&(o={});const{ancestorScroll:r=!0,ancestorResize:s=!0,elementResize:a=typeof ResizeObserver=="function",layoutShift:c=typeof IntersectionObserver=="function",animationFrame:l=!1}=o,u=gn(e),f=r||s?[...u?Ke(u):[],...Ke(t)]:[];f.forEach(w=>{r&&w.addEventListener("scroll",n,{passive:!0}),s&&w.addEventListener("resize",n)});const p=u&&c?Ja(u,n):null;let y=-1,h=null;a&&(h=new ResizeObserver(w=>{let[g]=w;g&&g.target===u&&h&&(h.unobserve(t),cancelAnimationFrame(y),y=requestAnimationFrame(()=>{var C;(C=h)==null||C.observe(t)})),n()}),u&&!l&&h.observe(u),h.observe(t));let x,d=l?Re(e):null;l&&m();function m(){const w=Re(e);d&&!Yo(d,w)&&n(),d=w,x=requestAnimationFrame(m)}return n(),()=>{var w;f.forEach(g=>{r&&g.removeEventListener("scroll",n),s&&g.removeEventListener("resize",n)}),p?.(),(w=h)==null||w.disconnect(),h=null,l&&cancelAnimationFrame(x)}}const tc=Ta,nc=Ra,oc=ba,rc=Aa,sc=Ea,Zn=Ca,ic=Pa,ac=(e,t,n)=>{const o=new Map,r={platform:Qa,...n},s={...r.platform,_c:o};return xa(e,t,{...r,platform:s})};var cc=typeof document<"u",lc=function(){},ct=cc?i.useLayoutEffect:lc;function mt(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,o,r;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(o=n;o--!==0;)if(!mt(e[o],t[o]))return!1;return!0}if(r=Object.keys(e),n=r.length,n!==Object.keys(t).length)return!1;for(o=n;o--!==0;)if(!{}.hasOwnProperty.call(t,r[o]))return!1;for(o=n;o--!==0;){const s=r[o];if(!(s==="_owner"&&e.$$typeof)&&!mt(e[s],t[s]))return!1}return!0}return e!==e&&t!==t}function Xo(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Qn(e,t){const n=Xo(e);return Math.round(t*n)/n}function Vt(e){const t=i.useRef(e);return ct(()=>{t.current=e}),t}function uc(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:o=[],platform:r,elements:{reference:s,floating:a}={},transform:c=!0,whileElementsMounted:l,open:u}=e,[f,p]=i.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[y,h]=i.useState(o);mt(y,o)||h(o);const[x,d]=i.useState(null),[m,w]=i.useState(null),g=i.useCallback(P=>{P!==R.current&&(R.current=P,d(P))},[]),C=i.useCallback(P=>{P!==S.current&&(S.current=P,w(P))},[]),b=s||x,E=a||m,R=i.useRef(null),S=i.useRef(null),O=i.useRef(f),M=l!=null,L=Vt(l),k=Vt(r),$=Vt(u),F=i.useCallback(()=>{if(!R.current||!S.current)return;const P={placement:t,strategy:n,middleware:y};k.current&&(P.platform=k.current),ac(R.current,S.current,P).then(W=>{const Y={...W,isPositioned:$.current!==!1};T.current&&!mt(O.current,Y)&&(O.current=Y,Ye.flushSync(()=>{p(Y)}))})},[y,t,n,k,$]);ct(()=>{u===!1&&O.current.isPositioned&&(O.current.isPositioned=!1,p(P=>({...P,isPositioned:!1})))},[u]);const T=i.useRef(!1);ct(()=>(T.current=!0,()=>{T.current=!1}),[]),ct(()=>{if(b&&(R.current=b),E&&(S.current=E),b&&E){if(L.current)return L.current(b,E,F);F()}},[b,E,F,L,M]);const j=i.useMemo(()=>({reference:R,floating:S,setReference:g,setFloating:C}),[g,C]),I=i.useMemo(()=>({reference:b,floating:E}),[b,E]),_=i.useMemo(()=>{const P={position:n,left:0,top:0};if(!I.floating)return P;const W=Qn(I.floating,f.x),Y=Qn(I.floating,f.y);return c?{...P,transform:"translate("+W+"px, "+Y+"px)",...Xo(I.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:W,top:Y}},[n,c,I.floating,f.x,f.y]);return i.useMemo(()=>({...f,update:F,refs:j,elements:I,floatingStyles:_}),[f,F,j,I,_])}const dc=e=>{function t(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:o,padding:r}=typeof e=="function"?e(n):e;return o&&t(o)?o.current!=null?Zn({element:o.current,padding:r}).fn(n):{}:o?Zn({element:o,padding:r}).fn(n):{}}}},fc=(e,t)=>({...tc(e),options:[e,t]}),pc=(e,t)=>({...nc(e),options:[e,t]}),mc=(e,t)=>({...ic(e),options:[e,t]}),hc=(e,t)=>({...oc(e),options:[e,t]}),vc=(e,t)=>({...rc(e),options:[e,t]}),gc=(e,t)=>({...sc(e),options:[e,t]}),yc=(e,t)=>({...dc(e),options:[e,t]});var wc="Arrow",Go=i.forwardRef((e,t)=>{const{children:n,width:o=10,height:r=5,...s}=e;return v.jsx(D.svg,{...s,ref:t,width:o,height:r,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:v.jsx("polygon",{points:"0,0 30,0 15,10"})})});Go.displayName=wc;var xc=Go,yn="Popper",[qo,bt]=Oe(yn),[Cc,Zo]=qo(yn),Qo=e=>{const{__scopePopper:t,children:n}=e,[o,r]=i.useState(null);return v.jsx(Cc,{scope:t,anchor:o,onAnchorChange:r,children:n})};Qo.displayName=yn;var Jo="PopperAnchor",er=i.forwardRef((e,t)=>{const{__scopePopper:n,virtualRef:o,...r}=e,s=Zo(Jo,n),a=i.useRef(null),c=B(t,a),l=i.useRef(null);return i.useEffect(()=>{const u=l.current;l.current=o?.current||a.current,u!==l.current&&s.onAnchorChange(l.current)}),o?null:v.jsx(D.div,{...r,ref:c})});er.displayName=Jo;var wn="PopperContent",[bc,Ec]=qo(wn),tr=i.forwardRef((e,t)=>{const{__scopePopper:n,side:o="bottom",sideOffset:r=0,align:s="center",alignOffset:a=0,arrowPadding:c=0,avoidCollisions:l=!0,collisionBoundary:u=[],collisionPadding:f=0,sticky:p="partial",hideWhenDetached:y=!1,updatePositionStrategy:h="optimized",onPlaced:x,...d}=e,m=Zo(wn,n),[w,g]=i.useState(null),C=B(t,A=>g(A)),[b,E]=i.useState(null),R=so(b),S=R?.width??0,O=R?.height??0,M=o+(s!=="center"?"-"+s:""),L=typeof f=="number"?f:{top:0,right:0,bottom:0,left:0,...f},k=Array.isArray(u)?u:[u],$=k.length>0,F={padding:L,boundary:k.filter(Tc),altBoundary:$},{refs:T,floatingStyles:j,placement:I,isPositioned:_,middlewareData:P}=uc({strategy:"fixed",placement:M,whileElementsMounted:(...A)=>ec(...A,{animationFrame:h==="always"}),elements:{reference:m.anchor},middleware:[fc({mainAxis:r+O,alignmentAxis:a}),l&&pc({mainAxis:!0,crossAxis:!1,limiter:p==="partial"?mc():void 0,...F}),l&&hc({...F}),vc({...F,apply:({elements:A,rects:U,availableWidth:X,availableHeight:V})=>{const{width:H,height:K}=U.reference,Z=A.floating.style;Z.setProperty("--radix-popper-available-width",`${X}px`),Z.setProperty("--radix-popper-available-height",`${V}px`),Z.setProperty("--radix-popper-anchor-width",`${H}px`),Z.setProperty("--radix-popper-anchor-height",`${K}px`)}}),b&&yc({element:b,padding:c}),Rc({arrowWidth:S,arrowHeight:O}),y&&gc({strategy:"referenceHidden",...F})]}),[W,Y]=rr(I),ue=ee(x);z(()=>{_&&ue?.()},[_,ue]);const de=P.arrow?.x,re=P.arrow?.y,Q=P.arrow?.centerOffset!==0,[Ie,Ce]=i.useState();return z(()=>{w&&Ce(window.getComputedStyle(w).zIndex)},[w]),v.jsx("div",{ref:T.setFloating,"data-radix-popper-content-wrapper":"",style:{...j,transform:_?j.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Ie,"--radix-popper-transform-origin":[P.transformOrigin?.x,P.transformOrigin?.y].join(" "),...P.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:v.jsx(bc,{scope:n,placedSide:W,onArrowChange:E,arrowX:de,arrowY:re,shouldHideArrow:Q,children:v.jsx(D.div,{"data-side":W,"data-align":Y,...d,ref:C,style:{...d.style,animation:_?void 0:"none"}})})})});tr.displayName=wn;var nr="PopperArrow",Sc={top:"bottom",right:"left",bottom:"top",left:"right"},or=i.forwardRef(function(t,n){const{__scopePopper:o,...r}=t,s=Ec(nr,o),a=Sc[s.placedSide];return v.jsx("span",{ref:s.onArrowChange,style:{position:"absolute",left:s.arrowX,top:s.arrowY,[a]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[s.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[s.placedSide],visibility:s.shouldHideArrow?"hidden":void 0},children:v.jsx(xc,{...r,ref:n,style:{...r.style,display:"block"}})})});or.displayName=nr;function Tc(e){return e!==null}var Rc=e=>({name:"transformOrigin",options:e,fn(t){const{placement:n,rects:o,middlewareData:r}=t,a=r.arrow?.centerOffset!==0,c=a?0:e.arrowWidth,l=a?0:e.arrowHeight,[u,f]=rr(n),p={start:"0%",center:"50%",end:"100%"}[f],y=(r.arrow?.x??0)+c/2,h=(r.arrow?.y??0)+l/2;let x="",d="";return u==="bottom"?(x=a?p:`${y}px`,d=`${-l}px`):u==="top"?(x=a?p:`${y}px`,d=`${o.floating.height+l}px`):u==="right"?(x=`${-l}px`,d=a?p:`${h}px`):u==="left"&&(x=`${o.floating.width+l}px`,d=a?p:`${h}px`),{data:{x,y:d}}}});function rr(e){const[t,n="center"]=e.split("-");return[t,n]}var sr=Qo,ir=er,ar=tr,cr=or;function Pc(e){const t=Ac(e),n=i.forwardRef((o,r)=>{const{children:s,...a}=o,c=i.Children.toArray(s),l=c.find(Ic);if(l){const u=l.props.children,f=c.map(p=>p===l?i.Children.count(u)>1?i.Children.only(null):i.isValidElement(u)?u.props.children:null:p);return v.jsx(t,{...a,ref:r,children:i.isValidElement(u)?i.cloneElement(u,void 0,f):null})}return v.jsx(t,{...a,ref:r,children:s})});return n.displayName=`${e}.Slot`,n}function Ac(e){const t=i.forwardRef((n,o)=>{const{children:r,...s}=n;if(i.isValidElement(r)){const a=_c(r),c=Nc(s,r.props);return r.type!==i.Fragment&&(c.ref=o?$e(o,a):a),i.cloneElement(r,c)}return i.Children.count(r)>1?i.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Oc=Symbol("radix.slottable");function Ic(e){return i.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Oc}function Nc(e,t){const n={...t};for(const o in t){const r=e[o],s=t[o];/^on[A-Z]/.test(o)?r&&s?n[o]=(...c)=>{const l=s(...c);return r(...c),l}:r&&(n[o]=r):o==="style"?n[o]={...r,...s}:o==="className"&&(n[o]=[r,s].filter(Boolean).join(" "))}return{...e,...n}}function _c(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var lr=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),Dc="VisuallyHidden",Et=i.forwardRef((e,t)=>v.jsx(D.span,{...e,ref:t,style:{...lr,...e.style}}));Et.displayName=Dc;var Mc=Et,Lc=[" ","Enter","ArrowUp","ArrowDown"],kc=[" ","Enter"],Pe="Select",[St,Tt,jc]=eo(Pe),[Ve]=Oe(Pe,[jc,bt]),Rt=bt(),[Fc,we]=Ve(Pe),[$c,Wc]=Ve(Pe),ur=e=>{const{__scopeSelect:t,children:n,open:o,defaultOpen:r,onOpenChange:s,value:a,defaultValue:c,onValueChange:l,dir:u,name:f,autoComplete:p,disabled:y,required:h,form:x}=e,d=Rt(t),[m,w]=i.useState(null),[g,C]=i.useState(null),[b,E]=i.useState(!1),R=_s(u),[S,O]=ke({prop:o,defaultProp:r??!1,onChange:s,caller:Pe}),[M,L]=ke({prop:a,defaultProp:c,onChange:l,caller:Pe}),k=i.useRef(null),$=m?x||!!m.closest("form"):!0,[F,T]=i.useState(new Set),j=Array.from(F).map(I=>I.props.value).join(";");return v.jsx(sr,{...d,children:v.jsxs(Fc,{required:h,scope:t,trigger:m,onTriggerChange:w,valueNode:g,onValueNodeChange:C,valueNodeHasChildren:b,onValueNodeHasChildrenChange:E,contentId:Se(),value:M,onValueChange:L,open:S,onOpenChange:O,dir:R,triggerPointerDownPosRef:k,disabled:y,children:[v.jsx(St.Provider,{scope:t,children:v.jsx($c,{scope:e.__scopeSelect,onNativeOptionAdd:i.useCallback(I=>{T(_=>new Set(_).add(I))},[]),onNativeOptionRemove:i.useCallback(I=>{T(_=>{const P=new Set(_);return P.delete(I),P})},[]),children:n})}),$?v.jsxs(Mr,{"aria-hidden":!0,required:h,tabIndex:-1,name:f,autoComplete:p,value:M,onChange:I=>L(I.target.value),disabled:y,form:x,children:[M===void 0?v.jsx("option",{value:""}):null,Array.from(F)]},j):null]})})};ur.displayName=Pe;var dr="SelectTrigger",fr=i.forwardRef((e,t)=>{const{__scopeSelect:n,disabled:o=!1,...r}=e,s=Rt(n),a=we(dr,n),c=a.disabled||o,l=B(t,a.onTriggerChange),u=Tt(n),f=i.useRef("touch"),[p,y,h]=kr(d=>{const m=u().filter(C=>!C.disabled),w=m.find(C=>C.value===a.value),g=jr(m,d,w);g!==void 0&&a.onValueChange(g.value)}),x=d=>{c||(a.onOpenChange(!0),h()),d&&(a.triggerPointerDownPosRef.current={x:Math.round(d.pageX),y:Math.round(d.pageY)})};return v.jsx(ir,{asChild:!0,...s,children:v.jsx(D.button,{type:"button",role:"combobox","aria-controls":a.contentId,"aria-expanded":a.open,"aria-required":a.required,"aria-autocomplete":"none",dir:a.dir,"data-state":a.open?"open":"closed",disabled:c,"data-disabled":c?"":void 0,"data-placeholder":Lr(a.value)?"":void 0,...r,ref:l,onClick:N(r.onClick,d=>{d.currentTarget.focus(),f.current!=="mouse"&&x(d)}),onPointerDown:N(r.onPointerDown,d=>{f.current=d.pointerType;const m=d.target;m.hasPointerCapture(d.pointerId)&&m.releasePointerCapture(d.pointerId),d.button===0&&d.ctrlKey===!1&&d.pointerType==="mouse"&&(x(d),d.preventDefault())}),onKeyDown:N(r.onKeyDown,d=>{const m=p.current!=="";!(d.ctrlKey||d.altKey||d.metaKey)&&d.key.length===1&&y(d.key),!(m&&d.key===" ")&&Lc.includes(d.key)&&(x(),d.preventDefault())})})})});fr.displayName=dr;var pr="SelectValue",mr=i.forwardRef((e,t)=>{const{__scopeSelect:n,className:o,style:r,children:s,placeholder:a="",...c}=e,l=we(pr,n),{onValueNodeHasChildrenChange:u}=l,f=s!==void 0,p=B(t,l.onValueNodeChange);return z(()=>{u(f)},[u,f]),v.jsx(D.span,{...c,ref:p,style:{pointerEvents:"none"},children:Lr(l.value)?v.jsx(v.Fragment,{children:a}):s})});mr.displayName=pr;var Bc="SelectIcon",hr=i.forwardRef((e,t)=>{const{__scopeSelect:n,children:o,...r}=e;return v.jsx(D.span,{"aria-hidden":!0,...r,ref:t,children:o||"▼"})});hr.displayName=Bc;var Vc="SelectPortal",vr=e=>v.jsx(Ge,{asChild:!0,...e});vr.displayName=Vc;var Ae="SelectContent",gr=i.forwardRef((e,t)=>{const n=we(Ae,e.__scopeSelect),[o,r]=i.useState();if(z(()=>{r(new DocumentFragment)},[]),!n.open){const s=o;return s?Ye.createPortal(v.jsx(yr,{scope:e.__scopeSelect,children:v.jsx(St.Slot,{scope:e.__scopeSelect,children:v.jsx("div",{children:e.children})})}),s):null}return v.jsx(wr,{...e,ref:t})});gr.displayName=Ae;var J=10,[yr,xe]=Ve(Ae),Hc="SelectContentImpl",Uc=Pc("SelectContent.RemoveScroll"),wr=i.forwardRef((e,t)=>{const{__scopeSelect:n,position:o="item-aligned",onCloseAutoFocus:r,onEscapeKeyDown:s,onPointerDownOutside:a,side:c,sideOffset:l,align:u,alignOffset:f,arrowPadding:p,collisionBoundary:y,collisionPadding:h,sticky:x,hideWhenDetached:d,avoidCollisions:m,...w}=e,g=we(Ae,n),[C,b]=i.useState(null),[E,R]=i.useState(null),S=B(t,A=>b(A)),[O,M]=i.useState(null),[L,k]=i.useState(null),$=Tt(n),[F,T]=i.useState(!1),j=i.useRef(!1);i.useEffect(()=>{if(C)return Co(C)},[C]),fo();const I=i.useCallback(A=>{const[U,...X]=$().map(K=>K.ref.current),[V]=X.slice(-1),H=document.activeElement;for(const K of A)if(K===H||(K?.scrollIntoView({block:"nearest"}),K===U&&E&&(E.scrollTop=0),K===V&&E&&(E.scrollTop=E.scrollHeight),K?.focus(),document.activeElement!==H))return},[$,E]),_=i.useCallback(()=>I([O,C]),[I,O,C]);i.useEffect(()=>{F&&_()},[F,_]);const{onOpenChange:P,triggerPointerDownPosRef:W}=g;i.useEffect(()=>{if(C){let A={x:0,y:0};const U=V=>{A={x:Math.abs(Math.round(V.pageX)-(W.current?.x??0)),y:Math.abs(Math.round(V.pageY)-(W.current?.y??0))}},X=V=>{A.x<=10&&A.y<=10?V.preventDefault():C.contains(V.target)||P(!1),document.removeEventListener("pointermove",U),W.current=null};return W.current!==null&&(document.addEventListener("pointermove",U),document.addEventListener("pointerup",X,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",U),document.removeEventListener("pointerup",X,{capture:!0})}}},[C,P,W]),i.useEffect(()=>{const A=()=>P(!1);return window.addEventListener("blur",A),window.addEventListener("resize",A),()=>{window.removeEventListener("blur",A),window.removeEventListener("resize",A)}},[P]);const[Y,ue]=kr(A=>{const U=$().filter(H=>!H.disabled),X=U.find(H=>H.ref.current===document.activeElement),V=jr(U,A,X);V&&setTimeout(()=>V.ref.current.focus())}),de=i.useCallback((A,U,X)=>{const V=!j.current&&!X;(g.value!==void 0&&g.value===U||V)&&(M(A),V&&(j.current=!0))},[g.value]),re=i.useCallback(()=>C?.focus(),[C]),Q=i.useCallback((A,U,X)=>{const V=!j.current&&!X;(g.value!==void 0&&g.value===U||V)&&k(A)},[g.value]),Ie=o==="popper"?Gt:xr,Ce=Ie===Gt?{side:c,sideOffset:l,align:u,alignOffset:f,arrowPadding:p,collisionBoundary:y,collisionPadding:h,sticky:x,hideWhenDetached:d,avoidCollisions:m}:{};return v.jsx(yr,{scope:n,content:C,viewport:E,onViewportChange:R,itemRefCallback:de,selectedItem:O,onItemLeave:re,itemTextRefCallback:Q,focusSelectedItem:_,selectedItemText:L,position:o,isPositioned:F,searchRef:Y,children:v.jsx(cn,{as:Uc,allowPinchZoom:!0,children:v.jsx(an,{asChild:!0,trapped:g.open,onMountAutoFocus:A=>{A.preventDefault()},onUnmountAutoFocus:N(r,A=>{g.trigger?.focus({preventScroll:!0}),A.preventDefault()}),children:v.jsx(Xe,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:s,onPointerDownOutside:a,onFocusOutside:A=>A.preventDefault(),onDismiss:()=>g.onOpenChange(!1),children:v.jsx(Ie,{role:"listbox",id:g.contentId,"data-state":g.open?"open":"closed",dir:g.dir,onContextMenu:A=>A.preventDefault(),...w,...Ce,onPlaced:()=>T(!0),ref:S,style:{display:"flex",flexDirection:"column",outline:"none",...w.style},onKeyDown:N(w.onKeyDown,A=>{const U=A.ctrlKey||A.altKey||A.metaKey;if(A.key==="Tab"&&A.preventDefault(),!U&&A.key.length===1&&ue(A.key),["ArrowUp","ArrowDown","Home","End"].includes(A.key)){let V=$().filter(H=>!H.disabled).map(H=>H.ref.current);if(["ArrowUp","End"].includes(A.key)&&(V=V.slice().reverse()),["ArrowUp","ArrowDown"].includes(A.key)){const H=A.target,K=V.indexOf(H);V=V.slice(K+1)}setTimeout(()=>I(V)),A.preventDefault()}})})})})})})});wr.displayName=Hc;var Kc="SelectItemAlignedPosition",xr=i.forwardRef((e,t)=>{const{__scopeSelect:n,onPlaced:o,...r}=e,s=we(Ae,n),a=xe(Ae,n),[c,l]=i.useState(null),[u,f]=i.useState(null),p=B(t,S=>f(S)),y=Tt(n),h=i.useRef(!1),x=i.useRef(!0),{viewport:d,selectedItem:m,selectedItemText:w,focusSelectedItem:g}=a,C=i.useCallback(()=>{if(s.trigger&&s.valueNode&&c&&u&&d&&m&&w){const S=s.trigger.getBoundingClientRect(),O=u.getBoundingClientRect(),M=s.valueNode.getBoundingClientRect(),L=w.getBoundingClientRect();if(s.dir!=="rtl"){const H=L.left-O.left,K=M.left-H,Z=S.left-K,be=S.width+Z,Nt=Math.max(be,O.width),_t=window.innerWidth-J,Dt=On(K,[J,Math.max(J,_t-Nt)]);c.style.minWidth=be+"px",c.style.left=Dt+"px"}else{const H=O.right-L.right,K=window.innerWidth-M.right-H,Z=window.innerWidth-S.right-K,be=S.width+Z,Nt=Math.max(be,O.width),_t=window.innerWidth-J,Dt=On(K,[J,Math.max(J,_t-Nt)]);c.style.minWidth=be+"px",c.style.right=Dt+"px"}const k=y(),$=window.innerHeight-J*2,F=d.scrollHeight,T=window.getComputedStyle(u),j=parseInt(T.borderTopWidth,10),I=parseInt(T.paddingTop,10),_=parseInt(T.borderBottomWidth,10),P=parseInt(T.paddingBottom,10),W=j+I+F+P+_,Y=Math.min(m.offsetHeight*5,W),ue=window.getComputedStyle(d),de=parseInt(ue.paddingTop,10),re=parseInt(ue.paddingBottom,10),Q=S.top+S.height/2-J,Ie=$-Q,Ce=m.offsetHeight/2,A=m.offsetTop+Ce,U=j+I+A,X=W-U;if(U<=Q){const H=k.length>0&&m===k[k.length-1].ref.current;c.style.bottom="0px";const K=u.clientHeight-d.offsetTop-d.offsetHeight,Z=Math.max(Ie,Ce+(H?re:0)+K+_),be=U+Z;c.style.height=be+"px"}else{const H=k.length>0&&m===k[0].ref.current;c.style.top="0px";const Z=Math.max(Q,j+d.offsetTop+(H?de:0)+Ce)+X;c.style.height=Z+"px",d.scrollTop=U-Q+d.offsetTop}c.style.margin=`${J}px 0`,c.style.minHeight=Y+"px",c.style.maxHeight=$+"px",o?.(),requestAnimationFrame(()=>h.current=!0)}},[y,s.trigger,s.valueNode,c,u,d,m,w,s.dir,o]);z(()=>C(),[C]);const[b,E]=i.useState();z(()=>{u&&E(window.getComputedStyle(u).zIndex)},[u]);const R=i.useCallback(S=>{S&&x.current===!0&&(C(),g?.(),x.current=!1)},[C,g]);return v.jsx(Yc,{scope:n,contentWrapper:c,shouldExpandOnScrollRef:h,onScrollButtonChange:R,children:v.jsx("div",{ref:l,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:b},children:v.jsx(D.div,{...r,ref:p,style:{boxSizing:"border-box",maxHeight:"100%",...r.style}})})})});xr.displayName=Kc;var zc="SelectPopperPosition",Gt=i.forwardRef((e,t)=>{const{__scopeSelect:n,align:o="start",collisionPadding:r=J,...s}=e,a=Rt(n);return v.jsx(ar,{...a,...s,ref:t,align:o,collisionPadding:r,style:{boxSizing:"border-box",...s.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});Gt.displayName=zc;var[Yc,xn]=Ve(Ae,{}),qt="SelectViewport",Cr=i.forwardRef((e,t)=>{const{__scopeSelect:n,nonce:o,...r}=e,s=xe(qt,n),a=xn(qt,n),c=B(t,s.onViewportChange),l=i.useRef(0);return v.jsxs(v.Fragment,{children:[v.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:o}),v.jsx(St.Slot,{scope:n,children:v.jsx(D.div,{"data-radix-select-viewport":"",role:"presentation",...r,ref:c,style:{position:"relative",flex:1,overflow:"hidden auto",...r.style},onScroll:N(r.onScroll,u=>{const f=u.currentTarget,{contentWrapper:p,shouldExpandOnScrollRef:y}=a;if(y?.current&&p){const h=Math.abs(l.current-f.scrollTop);if(h>0){const x=window.innerHeight-J*2,d=parseFloat(p.style.minHeight),m=parseFloat(p.style.height),w=Math.max(d,m);if(w0?b:0,p.style.justifyContent="flex-end")}}}l.current=f.scrollTop})})})]})});Cr.displayName=qt;var br="SelectGroup",[Xc,Gc]=Ve(br),qc=i.forwardRef((e,t)=>{const{__scopeSelect:n,...o}=e,r=Se();return v.jsx(Xc,{scope:n,id:r,children:v.jsx(D.div,{role:"group","aria-labelledby":r,...o,ref:t})})});qc.displayName=br;var Er="SelectLabel",Sr=i.forwardRef((e,t)=>{const{__scopeSelect:n,...o}=e,r=Gc(Er,n);return v.jsx(D.div,{id:r.id,...o,ref:t})});Sr.displayName=Er;var ht="SelectItem",[Zc,Tr]=Ve(ht),Rr=i.forwardRef((e,t)=>{const{__scopeSelect:n,value:o,disabled:r=!1,textValue:s,...a}=e,c=we(ht,n),l=xe(ht,n),u=c.value===o,[f,p]=i.useState(s??""),[y,h]=i.useState(!1),x=B(t,g=>l.itemRefCallback?.(g,o,r)),d=Se(),m=i.useRef("touch"),w=()=>{r||(c.onValueChange(o),c.onOpenChange(!1))};if(o==="")throw new Error("A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return v.jsx(Zc,{scope:n,value:o,disabled:r,textId:d,isSelected:u,onItemTextChange:i.useCallback(g=>{p(C=>C||(g?.textContent??"").trim())},[]),children:v.jsx(St.ItemSlot,{scope:n,value:o,disabled:r,textValue:f,children:v.jsx(D.div,{role:"option","aria-labelledby":d,"data-highlighted":y?"":void 0,"aria-selected":u&&y,"data-state":u?"checked":"unchecked","aria-disabled":r||void 0,"data-disabled":r?"":void 0,tabIndex:r?void 0:-1,...a,ref:x,onFocus:N(a.onFocus,()=>h(!0)),onBlur:N(a.onBlur,()=>h(!1)),onClick:N(a.onClick,()=>{m.current!=="mouse"&&w()}),onPointerUp:N(a.onPointerUp,()=>{m.current==="mouse"&&w()}),onPointerDown:N(a.onPointerDown,g=>{m.current=g.pointerType}),onPointerMove:N(a.onPointerMove,g=>{m.current=g.pointerType,r?l.onItemLeave?.():m.current==="mouse"&&g.currentTarget.focus({preventScroll:!0})}),onPointerLeave:N(a.onPointerLeave,g=>{g.currentTarget===document.activeElement&&l.onItemLeave?.()}),onKeyDown:N(a.onKeyDown,g=>{l.searchRef?.current!==""&&g.key===" "||(kc.includes(g.key)&&w(),g.key===" "&&g.preventDefault())})})})})});Rr.displayName=ht;var He="SelectItemText",Pr=i.forwardRef((e,t)=>{const{__scopeSelect:n,className:o,style:r,...s}=e,a=we(He,n),c=xe(He,n),l=Tr(He,n),u=Wc(He,n),[f,p]=i.useState(null),y=B(t,w=>p(w),l.onItemTextChange,w=>c.itemTextRefCallback?.(w,l.value,l.disabled)),h=f?.textContent,x=i.useMemo(()=>v.jsx("option",{value:l.value,disabled:l.disabled,children:h},l.value),[l.disabled,l.value,h]),{onNativeOptionAdd:d,onNativeOptionRemove:m}=u;return z(()=>(d(x),()=>m(x)),[d,m,x]),v.jsxs(v.Fragment,{children:[v.jsx(D.span,{id:l.textId,...s,ref:y}),l.isSelected&&a.valueNode&&!a.valueNodeHasChildren?Ye.createPortal(s.children,a.valueNode):null]})});Pr.displayName=He;var Ar="SelectItemIndicator",Or=i.forwardRef((e,t)=>{const{__scopeSelect:n,...o}=e;return Tr(Ar,n).isSelected?v.jsx(D.span,{"aria-hidden":!0,...o,ref:t}):null});Or.displayName=Ar;var Zt="SelectScrollUpButton",Ir=i.forwardRef((e,t)=>{const n=xe(Zt,e.__scopeSelect),o=xn(Zt,e.__scopeSelect),[r,s]=i.useState(!1),a=B(t,o.onScrollButtonChange);return z(()=>{if(n.viewport&&n.isPositioned){let c=function(){const u=l.scrollTop>0;s(u)};const l=n.viewport;return c(),l.addEventListener("scroll",c),()=>l.removeEventListener("scroll",c)}},[n.viewport,n.isPositioned]),r?v.jsx(_r,{...e,ref:a,onAutoScroll:()=>{const{viewport:c,selectedItem:l}=n;c&&l&&(c.scrollTop=c.scrollTop-l.offsetHeight)}}):null});Ir.displayName=Zt;var Qt="SelectScrollDownButton",Nr=i.forwardRef((e,t)=>{const n=xe(Qt,e.__scopeSelect),o=xn(Qt,e.__scopeSelect),[r,s]=i.useState(!1),a=B(t,o.onScrollButtonChange);return z(()=>{if(n.viewport&&n.isPositioned){let c=function(){const u=l.scrollHeight-l.clientHeight,f=Math.ceil(l.scrollTop)l.removeEventListener("scroll",c)}},[n.viewport,n.isPositioned]),r?v.jsx(_r,{...e,ref:a,onAutoScroll:()=>{const{viewport:c,selectedItem:l}=n;c&&l&&(c.scrollTop=c.scrollTop+l.offsetHeight)}}):null});Nr.displayName=Qt;var _r=i.forwardRef((e,t)=>{const{__scopeSelect:n,onAutoScroll:o,...r}=e,s=xe("SelectScrollButton",n),a=i.useRef(null),c=Tt(n),l=i.useCallback(()=>{a.current!==null&&(window.clearInterval(a.current),a.current=null)},[]);return i.useEffect(()=>()=>l(),[l]),z(()=>{c().find(f=>f.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:"nearest"})},[c]),v.jsx(D.div,{"aria-hidden":!0,...r,ref:t,style:{flexShrink:0,...r.style},onPointerDown:N(r.onPointerDown,()=>{a.current===null&&(a.current=window.setInterval(o,50))}),onPointerMove:N(r.onPointerMove,()=>{s.onItemLeave?.(),a.current===null&&(a.current=window.setInterval(o,50))}),onPointerLeave:N(r.onPointerLeave,()=>{l()})})}),Qc="SelectSeparator",Dr=i.forwardRef((e,t)=>{const{__scopeSelect:n,...o}=e;return v.jsx(D.div,{"aria-hidden":!0,...o,ref:t})});Dr.displayName=Qc;var Jt="SelectArrow",Jc=i.forwardRef((e,t)=>{const{__scopeSelect:n,...o}=e,r=Rt(n),s=we(Jt,n),a=xe(Jt,n);return s.open&&a.position==="popper"?v.jsx(cr,{...r,...o,ref:t}):null});Jc.displayName=Jt;var el="SelectBubbleInput",Mr=i.forwardRef(({__scopeSelect:e,value:t,...n},o)=>{const r=i.useRef(null),s=B(o,r),a=ro(t);return i.useEffect(()=>{const c=r.current;if(!c)return;const l=window.HTMLSelectElement.prototype,f=Object.getOwnPropertyDescriptor(l,"value").set;if(a!==t&&f){const p=new Event("change",{bubbles:!0});f.call(c,t),c.dispatchEvent(p)}},[a,t]),v.jsx(D.select,{...n,style:{...lr,...n.style},ref:s,defaultValue:t})});Mr.displayName=el;function Lr(e){return e===""||e===void 0}function kr(e){const t=ee(e),n=i.useRef(""),o=i.useRef(0),r=i.useCallback(a=>{const c=n.current+a;t(c),(function l(u){n.current=u,window.clearTimeout(o.current),u!==""&&(o.current=window.setTimeout(()=>l(""),1e3))})(c)},[t]),s=i.useCallback(()=>{n.current="",window.clearTimeout(o.current)},[]);return i.useEffect(()=>()=>window.clearTimeout(o.current),[]),[n,r,s]}function jr(e,t,n){const r=t.length>1&&Array.from(t).every(u=>u===t[0])?t[0]:t,s=n?e.indexOf(n):-1;let a=tl(e,Math.max(s,0));r.length===1&&(a=a.filter(u=>u!==n));const l=a.find(u=>u.textValue.toLowerCase().startsWith(r.toLowerCase()));return l!==n?l:void 0}function tl(e,t){return e.map((n,o)=>e[(t+o)%e.length])}var nu=ur,ou=fr,ru=mr,su=hr,iu=vr,au=gr,cu=Cr,lu=Sr,uu=Rr,du=Pr,fu=Or,pu=Ir,mu=Nr,hu=Dr,Pt="Checkbox",[nl]=Oe(Pt),[ol,Cn]=nl(Pt);function rl(e){const{__scopeCheckbox:t,checked:n,children:o,defaultChecked:r,disabled:s,form:a,name:c,onCheckedChange:l,required:u,value:f="on",internal_do_not_use_render:p}=e,[y,h]=ke({prop:n,defaultProp:r??!1,onChange:l,caller:Pt}),[x,d]=i.useState(null),[m,w]=i.useState(null),g=i.useRef(!1),C=x?!!a||!!x.closest("form"):!0,b={checked:y,disabled:s,setChecked:h,control:x,setControl:d,name:c,form:a,value:f,hasConsumerStoppedPropagationRef:g,required:u,defaultChecked:he(r)?!1:r,isFormControl:C,bubbleInput:m,setBubbleInput:w};return v.jsx(ol,{scope:t,...b,children:al(p)?p(b):o})}var Fr="CheckboxTrigger",$r=i.forwardRef(({__scopeCheckbox:e,onKeyDown:t,onClick:n,...o},r)=>{const{control:s,value:a,disabled:c,checked:l,required:u,setControl:f,setChecked:p,hasConsumerStoppedPropagationRef:y,isFormControl:h,bubbleInput:x}=Cn(Fr,e),d=B(r,f),m=i.useRef(l);return i.useEffect(()=>{const w=s?.form;if(w){const g=()=>p(m.current);return w.addEventListener("reset",g),()=>w.removeEventListener("reset",g)}},[s,p]),v.jsx(D.button,{type:"button",role:"checkbox","aria-checked":he(l)?"mixed":l,"aria-required":u,"data-state":Hr(l),"data-disabled":c?"":void 0,disabled:c,value:a,...o,ref:d,onKeyDown:N(t,w=>{w.key==="Enter"&&w.preventDefault()}),onClick:N(n,w=>{p(g=>he(g)?!0:!g),x&&h&&(y.current=w.isPropagationStopped(),y.current||w.stopPropagation())})})});$r.displayName=Fr;var sl=i.forwardRef((e,t)=>{const{__scopeCheckbox:n,name:o,checked:r,defaultChecked:s,required:a,disabled:c,value:l,onCheckedChange:u,form:f,...p}=e;return v.jsx(rl,{__scopeCheckbox:n,checked:r,defaultChecked:s,disabled:c,required:a,onCheckedChange:u,name:o,form:f,value:l,internal_do_not_use_render:({isFormControl:y})=>v.jsxs(v.Fragment,{children:[v.jsx($r,{...p,ref:t,__scopeCheckbox:n}),y&&v.jsx(Vr,{__scopeCheckbox:n})]})})});sl.displayName=Pt;var Wr="CheckboxIndicator",il=i.forwardRef((e,t)=>{const{__scopeCheckbox:n,forceMount:o,...r}=e,s=Cn(Wr,n);return v.jsx(ye,{present:o||he(s.checked)||s.checked===!0,children:v.jsx(D.span,{"data-state":Hr(s.checked),"data-disabled":s.disabled?"":void 0,...r,ref:t,style:{pointerEvents:"none",...e.style}})})});il.displayName=Wr;var Br="CheckboxBubbleInput",Vr=i.forwardRef(({__scopeCheckbox:e,...t},n)=>{const{control:o,hasConsumerStoppedPropagationRef:r,checked:s,defaultChecked:a,required:c,disabled:l,name:u,value:f,form:p,bubbleInput:y,setBubbleInput:h}=Cn(Br,e),x=B(n,h),d=ro(s),m=so(o);i.useEffect(()=>{const g=y;if(!g)return;const C=window.HTMLInputElement.prototype,E=Object.getOwnPropertyDescriptor(C,"checked").set,R=!r.current;if(d!==s&&E){const S=new Event("click",{bubbles:R});g.indeterminate=he(s),E.call(g,he(s)?!1:s),g.dispatchEvent(S)}},[y,d,s,r]);const w=i.useRef(he(s)?!1:s);return v.jsx(D.input,{type:"checkbox","aria-hidden":!0,defaultChecked:a??w.current,required:c,disabled:l,name:u,value:f,form:p,...t,tabIndex:-1,ref:x,style:{...t.style,...m,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});Vr.displayName=Br;function al(e){return typeof e=="function"}function he(e){return e==="indeterminate"}function Hr(e){return he(e)?"indeterminate":e?"checked":"unchecked"}var cl=Symbol("radix.slottable");function ll(e){const t=({children:n})=>v.jsx(v.Fragment,{children:n});return t.displayName=`${e}.Slottable`,t.__radixId=cl,t}var[At]=Oe("Tooltip",[bt]),Ot=bt(),Ur="TooltipProvider",ul=700,en="tooltip.open",[dl,bn]=At(Ur),Kr=e=>{const{__scopeTooltip:t,delayDuration:n=ul,skipDelayDuration:o=300,disableHoverableContent:r=!1,children:s}=e,a=i.useRef(!0),c=i.useRef(!1),l=i.useRef(0);return i.useEffect(()=>{const u=l.current;return()=>window.clearTimeout(u)},[]),v.jsx(dl,{scope:t,isOpenDelayedRef:a,delayDuration:n,onOpen:i.useCallback(()=>{window.clearTimeout(l.current),a.current=!1},[]),onClose:i.useCallback(()=>{window.clearTimeout(l.current),l.current=window.setTimeout(()=>a.current=!0,o)},[o]),isPointerInTransitRef:c,onPointerInTransitChange:i.useCallback(u=>{c.current=u},[]),disableHoverableContent:r,children:s})};Kr.displayName=Ur;var ze="Tooltip",[fl,Ze]=At(ze),zr=e=>{const{__scopeTooltip:t,children:n,open:o,defaultOpen:r,onOpenChange:s,disableHoverableContent:a,delayDuration:c}=e,l=bn(ze,e.__scopeTooltip),u=Ot(t),[f,p]=i.useState(null),y=Se(),h=i.useRef(0),x=a??l.disableHoverableContent,d=c??l.delayDuration,m=i.useRef(!1),[w,g]=ke({prop:o,defaultProp:r??!1,onChange:S=>{S?(l.onOpen(),document.dispatchEvent(new CustomEvent(en))):l.onClose(),s?.(S)},caller:ze}),C=i.useMemo(()=>w?m.current?"delayed-open":"instant-open":"closed",[w]),b=i.useCallback(()=>{window.clearTimeout(h.current),h.current=0,m.current=!1,g(!0)},[g]),E=i.useCallback(()=>{window.clearTimeout(h.current),h.current=0,g(!1)},[g]),R=i.useCallback(()=>{window.clearTimeout(h.current),h.current=window.setTimeout(()=>{m.current=!0,g(!0),h.current=0},d)},[d,g]);return i.useEffect(()=>()=>{h.current&&(window.clearTimeout(h.current),h.current=0)},[]),v.jsx(sr,{...u,children:v.jsx(fl,{scope:t,contentId:y,open:w,stateAttribute:C,trigger:f,onTriggerChange:p,onTriggerEnter:i.useCallback(()=>{l.isOpenDelayedRef.current?R():b()},[l.isOpenDelayedRef,R,b]),onTriggerLeave:i.useCallback(()=>{x?E():(window.clearTimeout(h.current),h.current=0)},[E,x]),onOpen:b,onClose:E,disableHoverableContent:x,children:n})})};zr.displayName=ze;var tn="TooltipTrigger",Yr=i.forwardRef((e,t)=>{const{__scopeTooltip:n,...o}=e,r=Ze(tn,n),s=bn(tn,n),a=Ot(n),c=i.useRef(null),l=B(t,c,r.onTriggerChange),u=i.useRef(!1),f=i.useRef(!1),p=i.useCallback(()=>u.current=!1,[]);return i.useEffect(()=>()=>document.removeEventListener("pointerup",p),[p]),v.jsx(ir,{asChild:!0,...a,children:v.jsx(D.button,{"aria-describedby":r.open?r.contentId:void 0,"data-state":r.stateAttribute,...o,ref:l,onPointerMove:N(e.onPointerMove,y=>{y.pointerType!=="touch"&&!f.current&&!s.isPointerInTransitRef.current&&(r.onTriggerEnter(),f.current=!0)}),onPointerLeave:N(e.onPointerLeave,()=>{r.onTriggerLeave(),f.current=!1}),onPointerDown:N(e.onPointerDown,()=>{r.open&&r.onClose(),u.current=!0,document.addEventListener("pointerup",p,{once:!0})}),onFocus:N(e.onFocus,()=>{u.current||r.onOpen()}),onBlur:N(e.onBlur,r.onClose),onClick:N(e.onClick,r.onClose)})})});Yr.displayName=tn;var En="TooltipPortal",[pl,ml]=At(En,{forceMount:void 0}),Xr=e=>{const{__scopeTooltip:t,forceMount:n,children:o,container:r}=e,s=Ze(En,t);return v.jsx(pl,{scope:t,forceMount:n,children:v.jsx(ye,{present:n||s.open,children:v.jsx(Ge,{asChild:!0,container:r,children:o})})})};Xr.displayName=En;var Fe="TooltipContent",Gr=i.forwardRef((e,t)=>{const n=ml(Fe,e.__scopeTooltip),{forceMount:o=n.forceMount,side:r="top",...s}=e,a=Ze(Fe,e.__scopeTooltip);return v.jsx(ye,{present:o||a.open,children:a.disableHoverableContent?v.jsx(qr,{side:r,...s,ref:t}):v.jsx(hl,{side:r,...s,ref:t})})}),hl=i.forwardRef((e,t)=>{const n=Ze(Fe,e.__scopeTooltip),o=bn(Fe,e.__scopeTooltip),r=i.useRef(null),s=B(t,r),[a,c]=i.useState(null),{trigger:l,onClose:u}=n,f=r.current,{onPointerInTransitChange:p}=o,y=i.useCallback(()=>{c(null),p(!1)},[p]),h=i.useCallback((x,d)=>{const m=x.currentTarget,w={x:x.clientX,y:x.clientY},g=xl(w,m.getBoundingClientRect()),C=Cl(w,g),b=bl(d.getBoundingClientRect()),E=Sl([...C,...b]);c(E),p(!0)},[p]);return i.useEffect(()=>()=>y(),[y]),i.useEffect(()=>{if(l&&f){const x=m=>h(m,f),d=m=>h(m,l);return l.addEventListener("pointerleave",x),f.addEventListener("pointerleave",d),()=>{l.removeEventListener("pointerleave",x),f.removeEventListener("pointerleave",d)}}},[l,f,h,y]),i.useEffect(()=>{if(a){const x=d=>{const m=d.target,w={x:d.clientX,y:d.clientY},g=l?.contains(m)||f?.contains(m),C=!El(w,a);g?y():C&&(y(),u())};return document.addEventListener("pointermove",x),()=>document.removeEventListener("pointermove",x)}},[l,f,a,u,y]),v.jsx(qr,{...e,ref:s})}),[vl,gl]=At(ze,{isInside:!1}),yl=ll("TooltipContent"),qr=i.forwardRef((e,t)=>{const{__scopeTooltip:n,children:o,"aria-label":r,onEscapeKeyDown:s,onPointerDownOutside:a,...c}=e,l=Ze(Fe,n),u=Ot(n),{onClose:f}=l;return i.useEffect(()=>(document.addEventListener(en,f),()=>document.removeEventListener(en,f)),[f]),i.useEffect(()=>{if(l.trigger){const p=y=>{y.target?.contains(l.trigger)&&f()};return window.addEventListener("scroll",p,{capture:!0}),()=>window.removeEventListener("scroll",p,{capture:!0})}},[l.trigger,f]),v.jsx(Xe,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:s,onPointerDownOutside:a,onFocusOutside:p=>p.preventDefault(),onDismiss:f,children:v.jsxs(ar,{"data-state":l.stateAttribute,...u,...c,ref:t,style:{...c.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[v.jsx(yl,{children:o}),v.jsx(vl,{scope:n,isInside:!0,children:v.jsx(Mc,{id:l.contentId,role:"tooltip",children:r||o})})]})})});Gr.displayName=Fe;var Zr="TooltipArrow",wl=i.forwardRef((e,t)=>{const{__scopeTooltip:n,...o}=e,r=Ot(n);return gl(Zr,n).isInside?null:v.jsx(cr,{...r,...o,ref:t})});wl.displayName=Zr;function xl(e,t){const n=Math.abs(t.top-e.y),o=Math.abs(t.bottom-e.y),r=Math.abs(t.right-e.x),s=Math.abs(t.left-e.x);switch(Math.min(n,o,r,s)){case s:return"left";case r:return"right";case n:return"top";case o:return"bottom";default:throw new Error("unreachable")}}function Cl(e,t,n=5){const o=[];switch(t){case"top":o.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":o.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":o.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":o.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return o}function bl(e){const{top:t,right:n,bottom:o,left:r}=e;return[{x:r,y:t},{x:n,y:t},{x:n,y:o},{x:r,y:o}]}function El(e,t){const{x:n,y:o}=e;let r=!1;for(let s=0,a=t.length-1;so!=y>o&&n<(p-u)*(o-f)/(y-f)+u&&(r=!r)}return r}function Sl(e){const t=e.slice();return t.sort((n,o)=>n.xo.x?1:n.yo.y?1:0),Tl(t)}function Tl(e){if(e.length<=1)return e.slice();const t=[];for(let o=0;o=2;){const s=t[t.length-1],a=t[t.length-2];if((s.x-a.x)*(r.y-a.y)>=(s.y-a.y)*(r.x-a.x))t.pop();else break}t.push(r)}t.pop();const n=[];for(let o=e.length-1;o>=0;o--){const r=e[o];for(;n.length>=2;){const s=n[n.length-1],a=n[n.length-2];if((s.x-a.x)*(r.y-a.y)>=(s.y-a.y)*(r.x-a.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var vu=Kr,gu=zr,yu=Yr,wu=Xr,xu=Gr,Sn="ToastProvider",[Tn,Rl,Pl]=eo("Toast"),[Qr]=Oe("Toast",[Pl]),[Al,It]=Qr(Sn),Jr=e=>{const{__scopeToast:t,label:n="Notification",duration:o=5e3,swipeDirection:r="right",swipeThreshold:s=50,children:a}=e,[c,l]=i.useState(null),[u,f]=i.useState(0),p=i.useRef(!1),y=i.useRef(!1);return n.trim()||console.error(`Invalid prop \`label\` supplied to \`${Sn}\`. Expected non-empty \`string\`.`),v.jsx(Tn.Provider,{scope:t,children:v.jsx(Al,{scope:t,label:n,duration:o,swipeDirection:r,swipeThreshold:s,toastCount:u,viewport:c,onViewportChange:l,onToastAdd:i.useCallback(()=>f(h=>h+1),[]),onToastRemove:i.useCallback(()=>f(h=>h-1),[]),isFocusedToastEscapeKeyDownRef:p,isClosePausedRef:y,children:a})})};Jr.displayName=Sn;var es="ToastViewport",Ol=["F8"],nn="toast.viewportPause",on="toast.viewportResume",ts=i.forwardRef((e,t)=>{const{__scopeToast:n,hotkey:o=Ol,label:r="Notifications ({hotkey})",...s}=e,a=It(es,n),c=Rl(n),l=i.useRef(null),u=i.useRef(null),f=i.useRef(null),p=i.useRef(null),y=B(t,p,a.onViewportChange),h=o.join("+").replace(/Key/g,"").replace(/Digit/g,""),x=a.toastCount>0;i.useEffect(()=>{const m=w=>{o.length!==0&&o.every(C=>w[C]||w.code===C)&&p.current?.focus()};return document.addEventListener("keydown",m),()=>document.removeEventListener("keydown",m)},[o]),i.useEffect(()=>{const m=l.current,w=p.current;if(x&&m&&w){const g=()=>{if(!a.isClosePausedRef.current){const R=new CustomEvent(nn);w.dispatchEvent(R),a.isClosePausedRef.current=!0}},C=()=>{if(a.isClosePausedRef.current){const R=new CustomEvent(on);w.dispatchEvent(R),a.isClosePausedRef.current=!1}},b=R=>{!m.contains(R.relatedTarget)&&C()},E=()=>{m.contains(document.activeElement)||C()};return m.addEventListener("focusin",g),m.addEventListener("focusout",b),m.addEventListener("pointermove",g),m.addEventListener("pointerleave",E),window.addEventListener("blur",g),window.addEventListener("focus",C),()=>{m.removeEventListener("focusin",g),m.removeEventListener("focusout",b),m.removeEventListener("pointermove",g),m.removeEventListener("pointerleave",E),window.removeEventListener("blur",g),window.removeEventListener("focus",C)}}},[x,a.isClosePausedRef]);const d=i.useCallback(({tabbingDirection:m})=>{const g=c().map(C=>{const b=C.ref.current,E=[b,...Vl(b)];return m==="forwards"?E:E.reverse()});return(m==="forwards"?g.reverse():g).flat()},[c]);return i.useEffect(()=>{const m=p.current;if(m){const w=g=>{const C=g.altKey||g.ctrlKey||g.metaKey;if(g.key==="Tab"&&!C){const E=document.activeElement,R=g.shiftKey;if(g.target===m&&R){u.current?.focus();return}const M=d({tabbingDirection:R?"backwards":"forwards"}),L=M.findIndex(k=>k===E);Ht(M.slice(L+1))?g.preventDefault():R?u.current?.focus():f.current?.focus()}};return m.addEventListener("keydown",w),()=>m.removeEventListener("keydown",w)}},[c,d]),v.jsxs(ei,{ref:l,role:"region","aria-label":r.replace("{hotkey}",h),tabIndex:-1,style:{pointerEvents:x?void 0:"none"},children:[x&&v.jsx(rn,{ref:u,onFocusFromOutsideViewport:()=>{const m=d({tabbingDirection:"forwards"});Ht(m)}}),v.jsx(Tn.Slot,{scope:n,children:v.jsx(D.ol,{tabIndex:-1,...s,ref:y})}),x&&v.jsx(rn,{ref:f,onFocusFromOutsideViewport:()=>{const m=d({tabbingDirection:"backwards"});Ht(m)}})]})});ts.displayName=es;var ns="ToastFocusProxy",rn=i.forwardRef((e,t)=>{const{__scopeToast:n,onFocusFromOutsideViewport:o,...r}=e,s=It(ns,n);return v.jsx(Et,{tabIndex:0,...r,ref:t,style:{position:"fixed"},onFocus:a=>{const c=a.relatedTarget;!s.viewport?.contains(c)&&o()}})});rn.displayName=ns;var Qe="Toast",Il="toast.swipeStart",Nl="toast.swipeMove",_l="toast.swipeCancel",Dl="toast.swipeEnd",os=i.forwardRef((e,t)=>{const{forceMount:n,open:o,defaultOpen:r,onOpenChange:s,...a}=e,[c,l]=ke({prop:o,defaultProp:r??!0,onChange:s,caller:Qe});return v.jsx(ye,{present:n||c,children:v.jsx(kl,{open:c,...a,ref:t,onClose:()=>l(!1),onPause:ee(e.onPause),onResume:ee(e.onResume),onSwipeStart:N(e.onSwipeStart,u=>{u.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:N(e.onSwipeMove,u=>{const{x:f,y:p}=u.detail.delta;u.currentTarget.setAttribute("data-swipe","move"),u.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${f}px`),u.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${p}px`)}),onSwipeCancel:N(e.onSwipeCancel,u=>{u.currentTarget.setAttribute("data-swipe","cancel"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),u.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:N(e.onSwipeEnd,u=>{const{x:f,y:p}=u.detail.delta;u.currentTarget.setAttribute("data-swipe","end"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),u.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${f}px`),u.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${p}px`),l(!1)})})})});os.displayName=Qe;var[Ml,Ll]=Qr(Qe,{onClose(){}}),kl=i.forwardRef((e,t)=>{const{__scopeToast:n,type:o="foreground",duration:r,open:s,onClose:a,onEscapeKeyDown:c,onPause:l,onResume:u,onSwipeStart:f,onSwipeMove:p,onSwipeCancel:y,onSwipeEnd:h,...x}=e,d=It(Qe,n),[m,w]=i.useState(null),g=B(t,T=>w(T)),C=i.useRef(null),b=i.useRef(null),E=r||d.duration,R=i.useRef(0),S=i.useRef(E),O=i.useRef(0),{onToastAdd:M,onToastRemove:L}=d,k=ee(()=>{m?.contains(document.activeElement)&&d.viewport?.focus(),a()}),$=i.useCallback(T=>{!T||T===1/0||(window.clearTimeout(O.current),R.current=new Date().getTime(),O.current=window.setTimeout(k,T))},[k]);i.useEffect(()=>{const T=d.viewport;if(T){const j=()=>{$(S.current),u?.()},I=()=>{const _=new Date().getTime()-R.current;S.current=S.current-_,window.clearTimeout(O.current),l?.()};return T.addEventListener(nn,I),T.addEventListener(on,j),()=>{T.removeEventListener(nn,I),T.removeEventListener(on,j)}}},[d.viewport,E,l,u,$]),i.useEffect(()=>{s&&!d.isClosePausedRef.current&&$(E)},[s,E,d.isClosePausedRef,$]),i.useEffect(()=>(M(),()=>L()),[M,L]);const F=i.useMemo(()=>m?us(m):null,[m]);return d.viewport?v.jsxs(v.Fragment,{children:[F&&v.jsx(jl,{__scopeToast:n,role:"status","aria-live":o==="foreground"?"assertive":"polite",children:F}),v.jsx(Ml,{scope:n,onClose:k,children:Ye.createPortal(v.jsx(Tn.ItemSlot,{scope:n,children:v.jsx(Js,{asChild:!0,onEscapeKeyDown:N(c,()=>{d.isFocusedToastEscapeKeyDownRef.current||k(),d.isFocusedToastEscapeKeyDownRef.current=!1}),children:v.jsx(D.li,{tabIndex:0,"data-state":s?"open":"closed","data-swipe-direction":d.swipeDirection,...x,ref:g,style:{userSelect:"none",touchAction:"none",...e.style},onKeyDown:N(e.onKeyDown,T=>{T.key==="Escape"&&(c?.(T.nativeEvent),T.nativeEvent.defaultPrevented||(d.isFocusedToastEscapeKeyDownRef.current=!0,k()))}),onPointerDown:N(e.onPointerDown,T=>{T.button===0&&(C.current={x:T.clientX,y:T.clientY})}),onPointerMove:N(e.onPointerMove,T=>{if(!C.current)return;const j=T.clientX-C.current.x,I=T.clientY-C.current.y,_=!!b.current,P=["left","right"].includes(d.swipeDirection),W=["left","up"].includes(d.swipeDirection)?Math.min:Math.max,Y=P?W(0,j):0,ue=P?0:W(0,I),de=T.pointerType==="touch"?10:2,re={x:Y,y:ue},Q={originalEvent:T,delta:re};_?(b.current=re,st(Nl,p,Q,{discrete:!1})):Jn(re,d.swipeDirection,de)?(b.current=re,st(Il,f,Q,{discrete:!1}),T.target.setPointerCapture(T.pointerId)):(Math.abs(j)>de||Math.abs(I)>de)&&(C.current=null)}),onPointerUp:N(e.onPointerUp,T=>{const j=b.current,I=T.target;if(I.hasPointerCapture(T.pointerId)&&I.releasePointerCapture(T.pointerId),b.current=null,C.current=null,j){const _=T.currentTarget,P={originalEvent:T,delta:j};Jn(j,d.swipeDirection,d.swipeThreshold)?st(Dl,h,P,{discrete:!0}):st(_l,y,P,{discrete:!0}),_.addEventListener("click",W=>W.preventDefault(),{once:!0})}})})})}),d.viewport)})]}):null}),jl=e=>{const{__scopeToast:t,children:n,...o}=e,r=It(Qe,t),[s,a]=i.useState(!1),[c,l]=i.useState(!1);return Wl(()=>a(!0)),i.useEffect(()=>{const u=window.setTimeout(()=>l(!0),1e3);return()=>window.clearTimeout(u)},[]),c?null:v.jsx(Ge,{asChild:!0,children:v.jsx(Et,{...o,children:s&&v.jsxs(v.Fragment,{children:[r.label," ",n]})})})},Fl="ToastTitle",rs=i.forwardRef((e,t)=>{const{__scopeToast:n,...o}=e;return v.jsx(D.div,{...o,ref:t})});rs.displayName=Fl;var $l="ToastDescription",ss=i.forwardRef((e,t)=>{const{__scopeToast:n,...o}=e;return v.jsx(D.div,{...o,ref:t})});ss.displayName=$l;var is="ToastAction",as=i.forwardRef((e,t)=>{const{altText:n,...o}=e;return n.trim()?v.jsx(ls,{altText:n,asChild:!0,children:v.jsx(Rn,{...o,ref:t})}):(console.error(`Invalid prop \`altText\` supplied to \`${is}\`. Expected non-empty \`string\`.`),null)});as.displayName=is;var cs="ToastClose",Rn=i.forwardRef((e,t)=>{const{__scopeToast:n,...o}=e,r=Ll(cs,n);return v.jsx(ls,{asChild:!0,children:v.jsx(D.button,{type:"button",...o,ref:t,onClick:N(e.onClick,r.onClose)})})});Rn.displayName=cs;var ls=i.forwardRef((e,t)=>{const{__scopeToast:n,altText:o,...r}=e;return v.jsx(D.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":o||void 0,...r,ref:t})});function us(e){const t=[];return Array.from(e.childNodes).forEach(o=>{if(o.nodeType===o.TEXT_NODE&&o.textContent&&t.push(o.textContent),Bl(o)){const r=o.ariaHidden||o.hidden||o.style.display==="none",s=o.dataset.radixToastAnnounceExclude==="";if(!r)if(s){const a=o.dataset.radixToastAnnounceAlt;a&&t.push(a)}else t.push(...us(o))}}),t}function st(e,t,n,{discrete:o}){const r=n.originalEvent.currentTarget,s=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:n});t&&r.addEventListener(e,t,{once:!0}),o?to(r,s):r.dispatchEvent(s)}var Jn=(e,t,n=0)=>{const o=Math.abs(e.x),r=Math.abs(e.y),s=o>r;return t==="left"||t==="right"?s&&o>n:!s&&r>n};function Wl(e=()=>{}){const t=ee(e);z(()=>{let n=0,o=0;return n=window.requestAnimationFrame(()=>o=window.requestAnimationFrame(t)),()=>{window.cancelAnimationFrame(n),window.cancelAnimationFrame(o)}},[t])}function Bl(e){return e.nodeType===e.ELEMENT_NODE}function Vl(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>{const r=o.tagName==="INPUT"&&o.type==="hidden";return o.disabled||o.hidden||r?NodeFilter.FILTER_SKIP:o.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function Ht(e){const t=document.activeElement;return e.some(n=>n===t?!0:(n.focus(),document.activeElement!==t))}var Cu=Jr,bu=ts,Eu=os,Su=rs,Tu=ss,Ru=as,Pu=Rn;export{ru as $,sr as A,ir as B,Ql as C,eu as D,cr as E,an as F,to as G,Kl as H,ou as I,su as J,pu as K,mu as L,iu as M,au as N,Zl as O,D as P,lu as Q,Xl as R,Ul as S,Jl as T,uu as U,cu as V,Yl as W,fu as X,du as Y,hu as Z,nu as _,eo as a,sl as a0,il as a1,wu as a2,xu as a3,vu as a4,gu as a5,yu as a6,bu as a7,Eu as a8,Ru as a9,Pu as aa,Su as ab,Tu as ac,Cu as ad,N as b,Oe as c,B as d,_s as e,ke as f,ee as g,ye as h,z as i,On as j,oo as k,ro as l,so as m,zl as n,ql as o,tu as p,Gl as q,$e as r,Ge as s,bt as t,Se as u,Co as v,cn as w,fo as x,Xe as y,ar as z}; diff --git a/webui/dist/assets/radix-extra-Cw1azsjZ.js b/webui/dist/assets/radix-extra-Cw1azsjZ.js new file mode 100644 index 00000000..d86d108d --- /dev/null +++ b/webui/dist/assets/radix-extra-Cw1azsjZ.js @@ -0,0 +1,12 @@ +import{r as a,j as l,d as nr}from"./router-CWhjJi2n.js";import{c as G,a as Ge,u as ne,P as _,b as g,d as A,e as pe,f as Q,g as k,h as B,i as ue,j as Ue,k as He,l as _t,m as Et,n as yt,O as rr,o as ar,W as sr,C as ir,T as cr,D as lr,p as Mt,R as ur,q as dr,r as We,s as At,t as _e,v as Tt,w as It,x as Nt,F as Dt,y as Ot,z as jt,A as ze,B as Ye,E as Lt,G as fr}from"./radix-core-BlBHu_Lw.js";var Fe="rovingFocusGroup.onEntryFocus",pr={bubbles:!1,cancelable:!0},ve="RovingFocusGroup",[$e,Ft,vr]=Ge(ve),[mr,Ee]=G(ve,[vr]),[hr,gr]=mr(ve),$t=a.forwardRef((e,t)=>l.jsx($e.Provider,{scope:e.__scopeRovingFocusGroup,children:l.jsx($e.Slot,{scope:e.__scopeRovingFocusGroup,children:l.jsx(xr,{...e,ref:t})})}));$t.displayName=ve;var xr=a.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:o,orientation:n,loop:r=!1,dir:s,currentTabStopId:i,defaultCurrentTabStopId:c,onCurrentTabStopIdChange:u,onEntryFocus:p,preventScrollOnEntryFocus:f=!1,...d}=e,v=a.useRef(null),m=A(t,v),h=pe(s),[C,x]=Q({prop:i,defaultProp:c??null,onChange:u,caller:ve}),[S,R]=a.useState(!1),w=k(p),P=Ft(o),I=a.useRef(!1),[j,N]=a.useState(0);return a.useEffect(()=>{const T=v.current;if(T)return T.addEventListener(Fe,w),()=>T.removeEventListener(Fe,w)},[w]),l.jsx(hr,{scope:o,orientation:n,dir:h,loop:r,currentTabStopId:C,onItemFocus:a.useCallback(T=>x(T),[x]),onItemShiftTab:a.useCallback(()=>R(!0),[]),onFocusableItemAdd:a.useCallback(()=>N(T=>T+1),[]),onFocusableItemRemove:a.useCallback(()=>N(T=>T-1),[]),children:l.jsx(_.div,{tabIndex:S||j===0?-1:0,"data-orientation":n,...d,ref:m,style:{outline:"none",...e.style},onMouseDown:g(e.onMouseDown,()=>{I.current=!0}),onFocus:g(e.onFocus,T=>{const E=!I.current;if(T.target===T.currentTarget&&E&&!S){const M=new CustomEvent(Fe,pr);if(T.currentTarget.dispatchEvent(M),!M.defaultPrevented){const y=P().filter(O=>O.focusable),L=y.find(O=>O.active),W=y.find(O=>O.id===C),Z=[L,W,...y].filter(Boolean).map(O=>O.ref.current);Bt(Z,f)}}I.current=!1}),onBlur:g(e.onBlur,()=>R(!1))})})}),kt="RovingFocusGroupItem",Vt=a.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:o,focusable:n=!0,active:r=!1,tabStopId:s,children:i,...c}=e,u=ne(),p=s||u,f=gr(kt,o),d=f.currentTabStopId===p,v=Ft(o),{onFocusableItemAdd:m,onFocusableItemRemove:h,currentTabStopId:C}=f;return a.useEffect(()=>{if(n)return m(),()=>h()},[n,m,h]),l.jsx($e.ItemSlot,{scope:o,id:p,focusable:n,active:r,children:l.jsx(_.span,{tabIndex:d?0:-1,"data-orientation":f.orientation,...c,ref:t,onMouseDown:g(e.onMouseDown,x=>{n?f.onItemFocus(p):x.preventDefault()}),onFocus:g(e.onFocus,()=>f.onItemFocus(p)),onKeyDown:g(e.onKeyDown,x=>{if(x.key==="Tab"&&x.shiftKey){f.onItemShiftTab();return}if(x.target!==x.currentTarget)return;const S=br(x,f.orientation,f.dir);if(S!==void 0){if(x.metaKey||x.ctrlKey||x.altKey||x.shiftKey)return;x.preventDefault();let w=v().filter(P=>P.focusable).map(P=>P.ref.current);if(S==="last")w.reverse();else if(S==="prev"||S==="next"){S==="prev"&&w.reverse();const P=w.indexOf(x.currentTarget);w=f.loop?wr(w,P+1):w.slice(P+1)}setTimeout(()=>Bt(w))}}),children:typeof i=="function"?i({isCurrentTabStop:d,hasTabStop:C!=null}):i})})});Vt.displayName=kt;var Sr={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function Cr(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function br(e,t,o){const n=Cr(e.key,o);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(n))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(n)))return Sr[n]}function Bt(e,t=!1){const o=document.activeElement;for(const n of e)if(n===o||(n.focus({preventScroll:t}),document.activeElement!==o))return}function wr(e,t){return e.map((o,n)=>e[(t+n)%e.length])}var Kt=$t,Gt=Vt,ye="Tabs",[Pr]=G(ye,[Ee]),Ut=Ee(),[Rr,Xe]=Pr(ye),Ht=a.forwardRef((e,t)=>{const{__scopeTabs:o,value:n,onValueChange:r,defaultValue:s,orientation:i="horizontal",dir:c,activationMode:u="automatic",...p}=e,f=pe(c),[d,v]=Q({prop:n,onChange:r,defaultProp:s??"",caller:ye});return l.jsx(Rr,{scope:o,baseId:ne(),value:d,onValueChange:v,orientation:i,dir:f,activationMode:u,children:l.jsx(_.div,{dir:f,"data-orientation":i,...p,ref:t})})});Ht.displayName=ye;var Wt="TabsList",zt=a.forwardRef((e,t)=>{const{__scopeTabs:o,loop:n=!0,...r}=e,s=Xe(Wt,o),i=Ut(o);return l.jsx(Kt,{asChild:!0,...i,orientation:s.orientation,dir:s.dir,loop:n,children:l.jsx(_.div,{role:"tablist","aria-orientation":s.orientation,...r,ref:t})})});zt.displayName=Wt;var Yt="TabsTrigger",Xt=a.forwardRef((e,t)=>{const{__scopeTabs:o,value:n,disabled:r=!1,...s}=e,i=Xe(Yt,o),c=Ut(o),u=Jt(i.baseId,n),p=Qt(i.baseId,n),f=n===i.value;return l.jsx(Gt,{asChild:!0,...c,focusable:!r,active:f,children:l.jsx(_.button,{type:"button",role:"tab","aria-selected":f,"aria-controls":p,"data-state":f?"active":"inactive","data-disabled":r?"":void 0,disabled:r,id:u,...s,ref:t,onMouseDown:g(e.onMouseDown,d=>{!r&&d.button===0&&d.ctrlKey===!1?i.onValueChange(n):d.preventDefault()}),onKeyDown:g(e.onKeyDown,d=>{[" ","Enter"].includes(d.key)&&i.onValueChange(n)}),onFocus:g(e.onFocus,()=>{const d=i.activationMode!=="manual";!f&&!r&&d&&i.onValueChange(n)})})})});Xt.displayName=Yt;var qt="TabsContent",Zt=a.forwardRef((e,t)=>{const{__scopeTabs:o,value:n,forceMount:r,children:s,...i}=e,c=Xe(qt,o),u=Jt(c.baseId,n),p=Qt(c.baseId,n),f=n===c.value,d=a.useRef(f);return a.useEffect(()=>{const v=requestAnimationFrame(()=>d.current=!1);return()=>cancelAnimationFrame(v)},[]),l.jsx(B,{present:r||f,children:({present:v})=>l.jsx(_.div,{"data-state":f?"active":"inactive","data-orientation":c.orientation,role:"tabpanel","aria-labelledby":u,hidden:!v,id:p,tabIndex:0,...i,ref:t,style:{...e.style,animationDuration:d.current?"0s":void 0},children:v&&s})})});Zt.displayName=qt;function Jt(e,t){return`${e}-trigger-${t}`}function Qt(e,t){return`${e}-content-${t}`}var xi=Ht,Si=zt,Ci=Xt,bi=Zt;function _r(e,t){return a.useReducer((o,n)=>t[o][n]??o,e)}var qe="ScrollArea",[eo]=G(qe),[Er,K]=eo(qe),to=a.forwardRef((e,t)=>{const{__scopeScrollArea:o,type:n="hover",dir:r,scrollHideDelay:s=600,...i}=e,[c,u]=a.useState(null),[p,f]=a.useState(null),[d,v]=a.useState(null),[m,h]=a.useState(null),[C,x]=a.useState(null),[S,R]=a.useState(0),[w,P]=a.useState(0),[I,j]=a.useState(!1),[N,T]=a.useState(!1),E=A(t,y=>u(y)),M=pe(r);return l.jsx(Er,{scope:o,type:n,dir:M,scrollHideDelay:s,scrollArea:c,viewport:p,onViewportChange:f,content:d,onContentChange:v,scrollbarX:m,onScrollbarXChange:h,scrollbarXEnabled:I,onScrollbarXEnabledChange:j,scrollbarY:C,onScrollbarYChange:x,scrollbarYEnabled:N,onScrollbarYEnabledChange:T,onCornerWidthChange:R,onCornerHeightChange:P,children:l.jsx(_.div,{dir:M,...i,ref:E,style:{position:"relative","--radix-scroll-area-corner-width":S+"px","--radix-scroll-area-corner-height":w+"px",...e.style}})})});to.displayName=qe;var oo="ScrollAreaViewport",no=a.forwardRef((e,t)=>{const{__scopeScrollArea:o,children:n,nonce:r,...s}=e,i=K(oo,o),c=a.useRef(null),u=A(t,c,i.onViewportChange);return l.jsxs(l.Fragment,{children:[l.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:r}),l.jsx(_.div,{"data-radix-scroll-area-viewport":"",...s,ref:u,style:{overflowX:i.scrollbarXEnabled?"scroll":"hidden",overflowY:i.scrollbarYEnabled?"scroll":"hidden",...e.style},children:l.jsx("div",{ref:i.onContentChange,style:{minWidth:"100%",display:"table"},children:n})})]})});no.displayName=oo;var U="ScrollAreaScrollbar",yr=a.forwardRef((e,t)=>{const{forceMount:o,...n}=e,r=K(U,e.__scopeScrollArea),{onScrollbarXEnabledChange:s,onScrollbarYEnabledChange:i}=r,c=e.orientation==="horizontal";return a.useEffect(()=>(c?s(!0):i(!0),()=>{c?s(!1):i(!1)}),[c,s,i]),r.type==="hover"?l.jsx(Mr,{...n,ref:t,forceMount:o}):r.type==="scroll"?l.jsx(Ar,{...n,ref:t,forceMount:o}):r.type==="auto"?l.jsx(ro,{...n,ref:t,forceMount:o}):r.type==="always"?l.jsx(Ze,{...n,ref:t}):null});yr.displayName=U;var Mr=a.forwardRef((e,t)=>{const{forceMount:o,...n}=e,r=K(U,e.__scopeScrollArea),[s,i]=a.useState(!1);return a.useEffect(()=>{const c=r.scrollArea;let u=0;if(c){const p=()=>{window.clearTimeout(u),i(!0)},f=()=>{u=window.setTimeout(()=>i(!1),r.scrollHideDelay)};return c.addEventListener("pointerenter",p),c.addEventListener("pointerleave",f),()=>{window.clearTimeout(u),c.removeEventListener("pointerenter",p),c.removeEventListener("pointerleave",f)}}},[r.scrollArea,r.scrollHideDelay]),l.jsx(B,{present:o||s,children:l.jsx(ro,{"data-state":s?"visible":"hidden",...n,ref:t})})}),Ar=a.forwardRef((e,t)=>{const{forceMount:o,...n}=e,r=K(U,e.__scopeScrollArea),s=e.orientation==="horizontal",i=Ae(()=>u("SCROLL_END"),100),[c,u]=_r("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return a.useEffect(()=>{if(c==="idle"){const p=window.setTimeout(()=>u("HIDE"),r.scrollHideDelay);return()=>window.clearTimeout(p)}},[c,r.scrollHideDelay,u]),a.useEffect(()=>{const p=r.viewport,f=s?"scrollLeft":"scrollTop";if(p){let d=p[f];const v=()=>{const m=p[f];d!==m&&(u("SCROLL"),i()),d=m};return p.addEventListener("scroll",v),()=>p.removeEventListener("scroll",v)}},[r.viewport,s,u,i]),l.jsx(B,{present:o||c!=="hidden",children:l.jsx(Ze,{"data-state":c==="hidden"?"hidden":"visible",...n,ref:t,onPointerEnter:g(e.onPointerEnter,()=>u("POINTER_ENTER")),onPointerLeave:g(e.onPointerLeave,()=>u("POINTER_LEAVE"))})})}),ro=a.forwardRef((e,t)=>{const o=K(U,e.__scopeScrollArea),{forceMount:n,...r}=e,[s,i]=a.useState(!1),c=e.orientation==="horizontal",u=Ae(()=>{if(o.viewport){const p=o.viewport.offsetWidth{const{orientation:o="vertical",...n}=e,r=K(U,e.__scopeScrollArea),s=a.useRef(null),i=a.useRef(0),[c,u]=a.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),p=co(c.viewport,c.content),f={...n,sizes:c,onSizesChange:u,hasThumb:p>0&&p<1,onThumbChange:v=>s.current=v,onThumbPointerUp:()=>i.current=0,onThumbPointerDown:v=>i.current=v};function d(v,m){return Lr(v,i.current,c,m)}return o==="horizontal"?l.jsx(Tr,{...f,ref:t,onThumbPositionChange:()=>{if(r.viewport&&s.current){const v=r.viewport.scrollLeft,m=St(v,c,r.dir);s.current.style.transform=`translate3d(${m}px, 0, 0)`}},onWheelScroll:v=>{r.viewport&&(r.viewport.scrollLeft=v)},onDragScroll:v=>{r.viewport&&(r.viewport.scrollLeft=d(v,r.dir))}}):o==="vertical"?l.jsx(Ir,{...f,ref:t,onThumbPositionChange:()=>{if(r.viewport&&s.current){const v=r.viewport.scrollTop,m=St(v,c);s.current.style.transform=`translate3d(0, ${m}px, 0)`}},onWheelScroll:v=>{r.viewport&&(r.viewport.scrollTop=v)},onDragScroll:v=>{r.viewport&&(r.viewport.scrollTop=d(v))}}):null}),Tr=a.forwardRef((e,t)=>{const{sizes:o,onSizesChange:n,...r}=e,s=K(U,e.__scopeScrollArea),[i,c]=a.useState(),u=a.useRef(null),p=A(t,u,s.onScrollbarXChange);return a.useEffect(()=>{u.current&&c(getComputedStyle(u.current))},[u]),l.jsx(so,{"data-orientation":"horizontal",...r,ref:p,sizes:o,style:{bottom:0,left:s.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:s.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":Me(o)+"px",...e.style},onThumbPointerDown:f=>e.onThumbPointerDown(f.x),onDragScroll:f=>e.onDragScroll(f.x),onWheelScroll:(f,d)=>{if(s.viewport){const v=s.viewport.scrollLeft+f.deltaX;e.onWheelScroll(v),uo(v,d)&&f.preventDefault()}},onResize:()=>{u.current&&s.viewport&&i&&n({content:s.viewport.scrollWidth,viewport:s.viewport.offsetWidth,scrollbar:{size:u.current.clientWidth,paddingStart:be(i.paddingLeft),paddingEnd:be(i.paddingRight)}})}})}),Ir=a.forwardRef((e,t)=>{const{sizes:o,onSizesChange:n,...r}=e,s=K(U,e.__scopeScrollArea),[i,c]=a.useState(),u=a.useRef(null),p=A(t,u,s.onScrollbarYChange);return a.useEffect(()=>{u.current&&c(getComputedStyle(u.current))},[u]),l.jsx(so,{"data-orientation":"vertical",...r,ref:p,sizes:o,style:{top:0,right:s.dir==="ltr"?0:void 0,left:s.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":Me(o)+"px",...e.style},onThumbPointerDown:f=>e.onThumbPointerDown(f.y),onDragScroll:f=>e.onDragScroll(f.y),onWheelScroll:(f,d)=>{if(s.viewport){const v=s.viewport.scrollTop+f.deltaY;e.onWheelScroll(v),uo(v,d)&&f.preventDefault()}},onResize:()=>{u.current&&s.viewport&&i&&n({content:s.viewport.scrollHeight,viewport:s.viewport.offsetHeight,scrollbar:{size:u.current.clientHeight,paddingStart:be(i.paddingTop),paddingEnd:be(i.paddingBottom)}})}})}),[Nr,ao]=eo(U),so=a.forwardRef((e,t)=>{const{__scopeScrollArea:o,sizes:n,hasThumb:r,onThumbChange:s,onThumbPointerUp:i,onThumbPointerDown:c,onThumbPositionChange:u,onDragScroll:p,onWheelScroll:f,onResize:d,...v}=e,m=K(U,o),[h,C]=a.useState(null),x=A(t,E=>C(E)),S=a.useRef(null),R=a.useRef(""),w=m.viewport,P=n.content-n.viewport,I=k(f),j=k(u),N=Ae(d,10);function T(E){if(S.current){const M=E.clientX-S.current.left,y=E.clientY-S.current.top;p({x:M,y})}}return a.useEffect(()=>{const E=M=>{const y=M.target;h?.contains(y)&&I(M,P)};return document.addEventListener("wheel",E,{passive:!1}),()=>document.removeEventListener("wheel",E,{passive:!1})},[w,h,P,I]),a.useEffect(j,[n,j]),re(h,N),re(m.content,N),l.jsx(Nr,{scope:o,scrollbar:h,hasThumb:r,onThumbChange:k(s),onThumbPointerUp:k(i),onThumbPositionChange:j,onThumbPointerDown:k(c),children:l.jsx(_.div,{...v,ref:x,style:{position:"absolute",...v.style},onPointerDown:g(e.onPointerDown,E=>{E.button===0&&(E.target.setPointerCapture(E.pointerId),S.current=h.getBoundingClientRect(),R.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",m.viewport&&(m.viewport.style.scrollBehavior="auto"),T(E))}),onPointerMove:g(e.onPointerMove,T),onPointerUp:g(e.onPointerUp,E=>{const M=E.target;M.hasPointerCapture(E.pointerId)&&M.releasePointerCapture(E.pointerId),document.body.style.webkitUserSelect=R.current,m.viewport&&(m.viewport.style.scrollBehavior=""),S.current=null})})})}),Ce="ScrollAreaThumb",Dr=a.forwardRef((e,t)=>{const{forceMount:o,...n}=e,r=ao(Ce,e.__scopeScrollArea);return l.jsx(B,{present:o||r.hasThumb,children:l.jsx(Or,{ref:t,...n})})}),Or=a.forwardRef((e,t)=>{const{__scopeScrollArea:o,style:n,...r}=e,s=K(Ce,o),i=ao(Ce,o),{onThumbPositionChange:c}=i,u=A(t,d=>i.onThumbChange(d)),p=a.useRef(void 0),f=Ae(()=>{p.current&&(p.current(),p.current=void 0)},100);return a.useEffect(()=>{const d=s.viewport;if(d){const v=()=>{if(f(),!p.current){const m=Fr(d,c);p.current=m,c()}};return c(),d.addEventListener("scroll",v),()=>d.removeEventListener("scroll",v)}},[s.viewport,f,c]),l.jsx(_.div,{"data-state":i.hasThumb?"visible":"hidden",...r,ref:u,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...n},onPointerDownCapture:g(e.onPointerDownCapture,d=>{const m=d.target.getBoundingClientRect(),h=d.clientX-m.left,C=d.clientY-m.top;i.onThumbPointerDown({x:h,y:C})}),onPointerUp:g(e.onPointerUp,i.onThumbPointerUp)})});Dr.displayName=Ce;var Je="ScrollAreaCorner",io=a.forwardRef((e,t)=>{const o=K(Je,e.__scopeScrollArea),n=!!(o.scrollbarX&&o.scrollbarY);return o.type!=="scroll"&&n?l.jsx(jr,{...e,ref:t}):null});io.displayName=Je;var jr=a.forwardRef((e,t)=>{const{__scopeScrollArea:o,...n}=e,r=K(Je,o),[s,i]=a.useState(0),[c,u]=a.useState(0),p=!!(s&&c);return re(r.scrollbarX,()=>{const f=r.scrollbarX?.offsetHeight||0;r.onCornerHeightChange(f),u(f)}),re(r.scrollbarY,()=>{const f=r.scrollbarY?.offsetWidth||0;r.onCornerWidthChange(f),i(f)}),p?l.jsx(_.div,{...n,ref:t,style:{width:s,height:c,position:"absolute",right:r.dir==="ltr"?0:void 0,left:r.dir==="rtl"?0:void 0,bottom:0,...e.style}}):null});function be(e){return e?parseInt(e,10):0}function co(e,t){const o=e/t;return isNaN(o)?0:o}function Me(e){const t=co(e.viewport,e.content),o=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,n=(e.scrollbar.size-o)*t;return Math.max(n,18)}function Lr(e,t,o,n="ltr"){const r=Me(o),s=r/2,i=t||s,c=r-i,u=o.scrollbar.paddingStart+i,p=o.scrollbar.size-o.scrollbar.paddingEnd-c,f=o.content-o.viewport,d=n==="ltr"?[0,f]:[f*-1,0];return lo([u,p],d)(e)}function St(e,t,o="ltr"){const n=Me(t),r=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,s=t.scrollbar.size-r,i=t.content-t.viewport,c=s-n,u=o==="ltr"?[0,i]:[i*-1,0],p=Ue(e,u);return lo([0,i],[0,c])(p)}function lo(e,t){return o=>{if(e[0]===e[1]||t[0]===t[1])return t[0];const n=(t[1]-t[0])/(e[1]-e[0]);return t[0]+n*(o-e[0])}}function uo(e,t){return e>0&&e{})=>{let o={left:e.scrollLeft,top:e.scrollTop},n=0;return(function r(){const s={left:e.scrollLeft,top:e.scrollTop},i=o.left!==s.left,c=o.top!==s.top;(i||c)&&t(),o=s,n=window.requestAnimationFrame(r)})(),()=>window.cancelAnimationFrame(n)};function Ae(e,t){const o=k(e),n=a.useRef(0);return a.useEffect(()=>()=>window.clearTimeout(n.current),[]),a.useCallback(()=>{window.clearTimeout(n.current),n.current=window.setTimeout(o,t)},[o,t])}function re(e,t){const o=k(t);ue(()=>{let n=0;if(e){const r=new ResizeObserver(()=>{cancelAnimationFrame(n),n=window.requestAnimationFrame(o)});return r.observe(e),()=>{window.cancelAnimationFrame(n),r.unobserve(e)}}},[e,o])}var wi=to,Pi=no,Ri=io;function $r(e,t=[]){let o=[];function n(s,i){const c=a.createContext(i);c.displayName=s+"Context";const u=o.length;o=[...o,i];const p=d=>{const{scope:v,children:m,...h}=d,C=v?.[e]?.[u]||c,x=a.useMemo(()=>h,Object.values(h));return l.jsx(C.Provider,{value:x,children:m})};p.displayName=s+"Provider";function f(d,v){const m=v?.[e]?.[u]||c,h=a.useContext(m);if(h)return h;if(i!==void 0)return i;throw new Error(`\`${d}\` must be used within \`${s}\``)}return[p,f]}const r=()=>{const s=o.map(i=>a.createContext(i));return function(c){const u=c?.[e]||s;return a.useMemo(()=>({[`__scope${e}`]:{...c,[e]:u}}),[c,u])}};return r.scopeName=e,[n,kr(r,...t)]}function kr(...e){const t=e[0];if(e.length===1)return t;const o=()=>{const n=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(s){const i=n.reduce((c,{useScope:u,scopeName:p})=>{const d=u(s)[`__scope${p}`];return{...c,...d}},{});return a.useMemo(()=>({[`__scope${t.scopeName}`]:i}),[i])}};return o.scopeName=t.scopeName,o}var Vr=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],fo=Vr.reduce((e,t)=>{const o=He(`Primitive.${t}`),n=a.forwardRef((r,s)=>{const{asChild:i,...c}=r,u=i?o:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),l.jsx(u,{...c,ref:s})});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{}),Qe="Progress",et=100,[Br]=$r(Qe),[Kr,Gr]=Br(Qe),po=a.forwardRef((e,t)=>{const{__scopeProgress:o,value:n=null,max:r,getValueLabel:s=Ur,...i}=e;(r||r===0)&&!Ct(r)&&console.error(Hr(`${r}`,"Progress"));const c=Ct(r)?r:et;n!==null&&!bt(n,c)&&console.error(Wr(`${n}`,"Progress"));const u=bt(n,c)?n:null,p=we(u)?s(u,c):void 0;return l.jsx(Kr,{scope:o,value:u,max:c,children:l.jsx(fo.div,{"aria-valuemax":c,"aria-valuemin":0,"aria-valuenow":we(u)?u:void 0,"aria-valuetext":p,role:"progressbar","data-state":ho(u,c),"data-value":u??void 0,"data-max":c,...i,ref:t})})});po.displayName=Qe;var vo="ProgressIndicator",mo=a.forwardRef((e,t)=>{const{__scopeProgress:o,...n}=e,r=Gr(vo,o);return l.jsx(fo.div,{"data-state":ho(r.value,r.max),"data-value":r.value??void 0,"data-max":r.max,...n,ref:t})});mo.displayName=vo;function Ur(e,t){return`${Math.round(e/t*100)}%`}function ho(e,t){return e==null?"indeterminate":e===t?"complete":"loading"}function we(e){return typeof e=="number"}function Ct(e){return we(e)&&!isNaN(e)&&e>0}function bt(e,t){return we(e)&&!isNaN(e)&&e<=t&&e>=0}function Hr(e,t){return`Invalid prop \`max\` of value \`${e}\` supplied to \`${t}\`. Only numbers greater than 0 are valid max values. Defaulting to \`${et}\`.`}function Wr(e,t){return`Invalid prop \`value\` of value \`${e}\` supplied to \`${t}\`. The \`value\` prop must be: + - a positive number + - less than the value passed to \`max\` (or ${et} if no \`max\` prop is set) + - \`null\` or \`undefined\` if the progress is indeterminate. + +Defaulting to \`null\`.`}var _i=po,Ei=mo,Te="Switch",[zr]=G(Te),[Yr,Xr]=zr(Te),go=a.forwardRef((e,t)=>{const{__scopeSwitch:o,name:n,checked:r,defaultChecked:s,required:i,disabled:c,value:u="on",onCheckedChange:p,form:f,...d}=e,[v,m]=a.useState(null),h=A(t,w=>m(w)),C=a.useRef(!1),x=v?f||!!v.closest("form"):!0,[S,R]=Q({prop:r,defaultProp:s??!1,onChange:p,caller:Te});return l.jsxs(Yr,{scope:o,checked:S,disabled:c,children:[l.jsx(_.button,{type:"button",role:"switch","aria-checked":S,"aria-required":i,"data-state":bo(S),"data-disabled":c?"":void 0,disabled:c,value:u,...d,ref:h,onClick:g(e.onClick,w=>{R(P=>!P),x&&(C.current=w.isPropagationStopped(),C.current||w.stopPropagation())})}),x&&l.jsx(Co,{control:v,bubbles:!C.current,name:n,value:u,checked:S,required:i,disabled:c,form:f,style:{transform:"translateX(-100%)"}})]})});go.displayName=Te;var xo="SwitchThumb",So=a.forwardRef((e,t)=>{const{__scopeSwitch:o,...n}=e,r=Xr(xo,o);return l.jsx(_.span,{"data-state":bo(r.checked),"data-disabled":r.disabled?"":void 0,...n,ref:t})});So.displayName=xo;var qr="SwitchBubbleInput",Co=a.forwardRef(({__scopeSwitch:e,control:t,checked:o,bubbles:n=!0,...r},s)=>{const i=a.useRef(null),c=A(i,s),u=_t(o),p=Et(t);return a.useEffect(()=>{const f=i.current;if(!f)return;const d=window.HTMLInputElement.prototype,m=Object.getOwnPropertyDescriptor(d,"checked").set;if(u!==o&&m){const h=new Event("click",{bubbles:n});m.call(f,o),f.dispatchEvent(h)}},[u,o,n]),l.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:o,...r,tabIndex:-1,ref:c,style:{...r.style,...p,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});Co.displayName=qr;function bo(e){return e?"checked":"unchecked"}var yi=go,Mi=So,wo=["PageUp","PageDown"],Po=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],Ro={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},se="Slider",[ke,Zr,Jr]=Ge(se),[_o]=G(se,[Jr]),[Qr,Ie]=_o(se),Eo=a.forwardRef((e,t)=>{const{name:o,min:n=0,max:r=100,step:s=1,orientation:i="horizontal",disabled:c=!1,minStepsBetweenThumbs:u=0,defaultValue:p=[n],value:f,onValueChange:d=()=>{},onValueCommit:v=()=>{},inverted:m=!1,form:h,...C}=e,x=a.useRef(new Set),S=a.useRef(0),w=i==="horizontal"?ea:ta,[P=[],I]=Q({prop:f,defaultProp:p,onChange:y=>{[...x.current][S.current]?.focus(),d(y)}}),j=a.useRef(P);function N(y){const L=sa(P,y);M(y,L)}function T(y){M(y,S.current)}function E(){const y=j.current[S.current];P[S.current]!==y&&v(P)}function M(y,L,{commit:W}={commit:!1}){const q=ua(s),Z=da(Math.round((y-n)/s)*s+n,q),O=Ue(Z,[n,r]);I((z=[])=>{const F=ra(z,O,L);if(la(F,u*s)){S.current=F.indexOf(O);const b=String(F)!==String(z);return b&&W&&v(F),b?F:z}else return z})}return l.jsx(Qr,{scope:e.__scopeSlider,name:o,disabled:c,min:n,max:r,valueIndexToChangeRef:S,thumbs:x.current,values:P,orientation:i,form:h,children:l.jsx(ke.Provider,{scope:e.__scopeSlider,children:l.jsx(ke.Slot,{scope:e.__scopeSlider,children:l.jsx(w,{"aria-disabled":c,"data-disabled":c?"":void 0,...C,ref:t,onPointerDown:g(C.onPointerDown,()=>{c||(j.current=P)}),min:n,max:r,inverted:m,onSlideStart:c?void 0:N,onSlideMove:c?void 0:T,onSlideEnd:c?void 0:E,onHomeKeyDown:()=>!c&&M(n,0,{commit:!0}),onEndKeyDown:()=>!c&&M(r,P.length-1,{commit:!0}),onStepKeyDown:({event:y,direction:L})=>{if(!c){const Z=wo.includes(y.key)||y.shiftKey&&Po.includes(y.key)?10:1,O=S.current,z=P[O],F=s*Z*L;M(z+F,O,{commit:!0})}}})})})})});Eo.displayName=se;var[yo,Mo]=_o(se,{startEdge:"left",endEdge:"right",size:"width",direction:1}),ea=a.forwardRef((e,t)=>{const{min:o,max:n,dir:r,inverted:s,onSlideStart:i,onSlideMove:c,onSlideEnd:u,onStepKeyDown:p,...f}=e,[d,v]=a.useState(null),m=A(t,w=>v(w)),h=a.useRef(void 0),C=pe(r),x=C==="ltr",S=x&&!s||!x&&s;function R(w){const P=h.current||d.getBoundingClientRect(),I=[0,P.width],N=tt(I,S?[o,n]:[n,o]);return h.current=P,N(w-P.left)}return l.jsx(yo,{scope:e.__scopeSlider,startEdge:S?"left":"right",endEdge:S?"right":"left",direction:S?1:-1,size:"width",children:l.jsx(Ao,{dir:C,"data-orientation":"horizontal",...f,ref:m,style:{...f.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:w=>{const P=R(w.clientX);i?.(P)},onSlideMove:w=>{const P=R(w.clientX);c?.(P)},onSlideEnd:()=>{h.current=void 0,u?.()},onStepKeyDown:w=>{const I=Ro[S?"from-left":"from-right"].includes(w.key);p?.({event:w,direction:I?-1:1})}})})}),ta=a.forwardRef((e,t)=>{const{min:o,max:n,inverted:r,onSlideStart:s,onSlideMove:i,onSlideEnd:c,onStepKeyDown:u,...p}=e,f=a.useRef(null),d=A(t,f),v=a.useRef(void 0),m=!r;function h(C){const x=v.current||f.current.getBoundingClientRect(),S=[0,x.height],w=tt(S,m?[n,o]:[o,n]);return v.current=x,w(C-x.top)}return l.jsx(yo,{scope:e.__scopeSlider,startEdge:m?"bottom":"top",endEdge:m?"top":"bottom",size:"height",direction:m?1:-1,children:l.jsx(Ao,{"data-orientation":"vertical",...p,ref:d,style:{...p.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:C=>{const x=h(C.clientY);s?.(x)},onSlideMove:C=>{const x=h(C.clientY);i?.(x)},onSlideEnd:()=>{v.current=void 0,c?.()},onStepKeyDown:C=>{const S=Ro[m?"from-bottom":"from-top"].includes(C.key);u?.({event:C,direction:S?-1:1})}})})}),Ao=a.forwardRef((e,t)=>{const{__scopeSlider:o,onSlideStart:n,onSlideMove:r,onSlideEnd:s,onHomeKeyDown:i,onEndKeyDown:c,onStepKeyDown:u,...p}=e,f=Ie(se,o);return l.jsx(_.span,{...p,ref:t,onKeyDown:g(e.onKeyDown,d=>{d.key==="Home"?(i(d),d.preventDefault()):d.key==="End"?(c(d),d.preventDefault()):wo.concat(Po).includes(d.key)&&(u(d),d.preventDefault())}),onPointerDown:g(e.onPointerDown,d=>{const v=d.target;v.setPointerCapture(d.pointerId),d.preventDefault(),f.thumbs.has(v)?v.focus():n(d)}),onPointerMove:g(e.onPointerMove,d=>{d.target.hasPointerCapture(d.pointerId)&&r(d)}),onPointerUp:g(e.onPointerUp,d=>{const v=d.target;v.hasPointerCapture(d.pointerId)&&(v.releasePointerCapture(d.pointerId),s(d))})})}),To="SliderTrack",Io=a.forwardRef((e,t)=>{const{__scopeSlider:o,...n}=e,r=Ie(To,o);return l.jsx(_.span,{"data-disabled":r.disabled?"":void 0,"data-orientation":r.orientation,...n,ref:t})});Io.displayName=To;var Ve="SliderRange",No=a.forwardRef((e,t)=>{const{__scopeSlider:o,...n}=e,r=Ie(Ve,o),s=Mo(Ve,o),i=a.useRef(null),c=A(t,i),u=r.values.length,p=r.values.map(v=>jo(v,r.min,r.max)),f=u>1?Math.min(...p):0,d=100-Math.max(...p);return l.jsx(_.span,{"data-orientation":r.orientation,"data-disabled":r.disabled?"":void 0,...n,ref:c,style:{...e.style,[s.startEdge]:f+"%",[s.endEdge]:d+"%"}})});No.displayName=Ve;var Be="SliderThumb",Do=a.forwardRef((e,t)=>{const o=Zr(e.__scopeSlider),[n,r]=a.useState(null),s=A(t,c=>r(c)),i=a.useMemo(()=>n?o().findIndex(c=>c.ref.current===n):-1,[o,n]);return l.jsx(oa,{...e,ref:s,index:i})}),oa=a.forwardRef((e,t)=>{const{__scopeSlider:o,index:n,name:r,...s}=e,i=Ie(Be,o),c=Mo(Be,o),[u,p]=a.useState(null),f=A(t,R=>p(R)),d=u?i.form||!!u.closest("form"):!0,v=Et(u),m=i.values[n],h=m===void 0?0:jo(m,i.min,i.max),C=aa(n,i.values.length),x=v?.[c.size],S=x?ia(x,h,c.direction):0;return a.useEffect(()=>{if(u)return i.thumbs.add(u),()=>{i.thumbs.delete(u)}},[u,i.thumbs]),l.jsxs("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[c.startEdge]:`calc(${h}% + ${S}px)`},children:[l.jsx(ke.ItemSlot,{scope:e.__scopeSlider,children:l.jsx(_.span,{role:"slider","aria-label":e["aria-label"]||C,"aria-valuemin":i.min,"aria-valuenow":m,"aria-valuemax":i.max,"aria-orientation":i.orientation,"data-orientation":i.orientation,"data-disabled":i.disabled?"":void 0,tabIndex:i.disabled?void 0:0,...s,ref:f,style:m===void 0?{display:"none"}:e.style,onFocus:g(e.onFocus,()=>{i.valueIndexToChangeRef.current=n})})}),d&&l.jsx(Oo,{name:r??(i.name?i.name+(i.values.length>1?"[]":""):void 0),form:i.form,value:m},n)]})});Do.displayName=Be;var na="RadioBubbleInput",Oo=a.forwardRef(({__scopeSlider:e,value:t,...o},n)=>{const r=a.useRef(null),s=A(r,n),i=_t(t);return a.useEffect(()=>{const c=r.current;if(!c)return;const u=window.HTMLInputElement.prototype,f=Object.getOwnPropertyDescriptor(u,"value").set;if(i!==t&&f){const d=new Event("input",{bubbles:!0});f.call(c,t),c.dispatchEvent(d)}},[i,t]),l.jsx(_.input,{style:{display:"none"},...o,ref:s,defaultValue:t})});Oo.displayName=na;function ra(e=[],t,o){const n=[...e];return n[o]=t,n.sort((r,s)=>r-s)}function jo(e,t,o){const s=100/(o-t)*(e-t);return Ue(s,[0,100])}function aa(e,t){return t>2?`Value ${e+1} of ${t}`:t===2?["Minimum","Maximum"][e]:void 0}function sa(e,t){if(e.length===1)return 0;const o=e.map(r=>Math.abs(r-t)),n=Math.min(...o);return o.indexOf(n)}function ia(e,t,o){const n=e/2,s=tt([0,50],[0,n]);return(n-s(t)*o)*o}function ca(e){return e.slice(0,-1).map((t,o)=>e[o+1]-t)}function la(e,t){if(t>0){const o=ca(e);return Math.min(...o)>=t}return!0}function tt(e,t){return o=>{if(e[0]===e[1]||t[0]===t[1])return t[0];const n=(t[1]-t[0])/(e[1]-e[0]);return t[0]+n*(o-e[0])}}function ua(e){return(String(e).split(".")[1]||"").length}function da(e,t){const o=Math.pow(10,t);return Math.round(e*o)/o}var Ai=Eo,Ti=Io,Ii=No,Ni=Do,fa=Symbol("radix.slottable");function pa(e){const t=({children:o})=>l.jsx(l.Fragment,{children:o});return t.displayName=`${e}.Slottable`,t.__radixId=fa,t}var Lo="AlertDialog",[va]=G(Lo,[yt]),H=yt(),Fo=e=>{const{__scopeAlertDialog:t,...o}=e,n=H(t);return l.jsx(ur,{...n,...o,modal:!0})};Fo.displayName=Lo;var ma="AlertDialogTrigger",$o=a.forwardRef((e,t)=>{const{__scopeAlertDialog:o,...n}=e,r=H(o);return l.jsx(dr,{...r,...n,ref:t})});$o.displayName=ma;var ha="AlertDialogPortal",ko=e=>{const{__scopeAlertDialog:t,...o}=e,n=H(t);return l.jsx(ar,{...n,...o})};ko.displayName=ha;var ga="AlertDialogOverlay",Vo=a.forwardRef((e,t)=>{const{__scopeAlertDialog:o,...n}=e,r=H(o);return l.jsx(rr,{...r,...n,ref:t})});Vo.displayName=ga;var oe="AlertDialogContent",[xa,Sa]=va(oe),Ca=pa("AlertDialogContent"),Bo=a.forwardRef((e,t)=>{const{__scopeAlertDialog:o,children:n,...r}=e,s=H(o),i=a.useRef(null),c=A(t,i),u=a.useRef(null);return l.jsx(sr,{contentName:oe,titleName:Ko,docsSlug:"alert-dialog",children:l.jsx(xa,{scope:o,cancelRef:u,children:l.jsxs(ir,{role:"alertdialog",...s,...r,ref:c,onOpenAutoFocus:g(r.onOpenAutoFocus,p=>{p.preventDefault(),u.current?.focus({preventScroll:!0})}),onPointerDownOutside:p=>p.preventDefault(),onInteractOutside:p=>p.preventDefault(),children:[l.jsx(Ca,{children:n}),l.jsx(wa,{contentRef:i})]})})})});Bo.displayName=oe;var Ko="AlertDialogTitle",Go=a.forwardRef((e,t)=>{const{__scopeAlertDialog:o,...n}=e,r=H(o);return l.jsx(cr,{...r,...n,ref:t})});Go.displayName=Ko;var Uo="AlertDialogDescription",Ho=a.forwardRef((e,t)=>{const{__scopeAlertDialog:o,...n}=e,r=H(o);return l.jsx(lr,{...r,...n,ref:t})});Ho.displayName=Uo;var ba="AlertDialogAction",Wo=a.forwardRef((e,t)=>{const{__scopeAlertDialog:o,...n}=e,r=H(o);return l.jsx(Mt,{...r,...n,ref:t})});Wo.displayName=ba;var zo="AlertDialogCancel",Yo=a.forwardRef((e,t)=>{const{__scopeAlertDialog:o,...n}=e,{cancelRef:r}=Sa(zo,o),s=H(o),i=A(t,r);return l.jsx(Mt,{...s,...n,ref:i})});Yo.displayName=zo;var wa=({contentRef:e})=>{const t=`\`${oe}\` requires a description for the component to be accessible for screen reader users. + +You can add a description to the \`${oe}\` by passing a \`${Uo}\` component as a child, which also benefits sighted users by adding visible context to the dialog. + +Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${oe}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component. + +For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;return a.useEffect(()=>{document.getElementById(e.current?.getAttribute("aria-describedby"))||console.warn(t)},[t,e]),null},Di=Fo,Oi=$o,ji=ko,Li=Vo,Fi=Bo,$i=Wo,ki=Yo,Vi=Go,Bi=Ho,Pa=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Ra=Pa.reduce((e,t)=>{const o=He(`Primitive.${t}`),n=a.forwardRef((r,s)=>{const{asChild:i,...c}=r,u=i?o:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),l.jsx(u,{...c,ref:s})});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{}),_a="Separator",wt="horizontal",Ea=["horizontal","vertical"],Xo=a.forwardRef((e,t)=>{const{decorative:o,orientation:n=wt,...r}=e,s=ya(n)?n:wt,c=o?{role:"none"}:{"aria-orientation":s==="vertical"?s:void 0,role:"separator"};return l.jsx(Ra.div,{"data-orientation":s,...c,...r,ref:t})});Xo.displayName=_a;function ya(e){return Ea.includes(e)}var Ki=Xo;function Ma(e){const t=Aa(e),o=a.forwardRef((n,r)=>{const{children:s,...i}=n,c=a.Children.toArray(s),u=c.find(Ia);if(u){const p=u.props.children,f=c.map(d=>d===u?a.Children.count(p)>1?a.Children.only(null):a.isValidElement(p)?p.props.children:null:d);return l.jsx(t,{...i,ref:r,children:a.isValidElement(p)?a.cloneElement(p,void 0,f):null})}return l.jsx(t,{...i,ref:r,children:s})});return o.displayName=`${e}.Slot`,o}function Aa(e){const t=a.forwardRef((o,n)=>{const{children:r,...s}=o;if(a.isValidElement(r)){const i=Da(r),c=Na(s,r.props);return r.type!==a.Fragment&&(c.ref=n?We(n,i):i),a.cloneElement(r,c)}return a.Children.count(r)>1?a.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Ta=Symbol("radix.slottable");function Ia(e){return a.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Ta}function Na(e,t){const o={...t};for(const n in t){const r=e[n],s=t[n];/^on[A-Z]/.test(n)?r&&s?o[n]=(...c)=>{const u=s(...c);return r(...c),u}:r&&(o[n]=r):n==="style"?o[n]={...r,...s}:n==="className"&&(o[n]=[r,s].filter(Boolean).join(" "))}return{...e,...o}}function Da(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,o=t&&"isReactWarning"in t&&t.isReactWarning;return o?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,o=t&&"isReactWarning"in t&&t.isReactWarning,o?e.props.ref:e.props.ref||e.ref)}var Ne="Popover",[qo]=G(Ne,[_e]),me=_e(),[Oa,Y]=qo(Ne),Zo=e=>{const{__scopePopover:t,children:o,open:n,defaultOpen:r,onOpenChange:s,modal:i=!1}=e,c=me(t),u=a.useRef(null),[p,f]=a.useState(!1),[d,v]=Q({prop:n,defaultProp:r??!1,onChange:s,caller:Ne});return l.jsx(ze,{...c,children:l.jsx(Oa,{scope:t,contentId:ne(),triggerRef:u,open:d,onOpenChange:v,onOpenToggle:a.useCallback(()=>v(m=>!m),[v]),hasCustomAnchor:p,onCustomAnchorAdd:a.useCallback(()=>f(!0),[]),onCustomAnchorRemove:a.useCallback(()=>f(!1),[]),modal:i,children:o})})};Zo.displayName=Ne;var Jo="PopoverAnchor",ja=a.forwardRef((e,t)=>{const{__scopePopover:o,...n}=e,r=Y(Jo,o),s=me(o),{onCustomAnchorAdd:i,onCustomAnchorRemove:c}=r;return a.useEffect(()=>(i(),()=>c()),[i,c]),l.jsx(Ye,{...s,...n,ref:t})});ja.displayName=Jo;var Qo="PopoverTrigger",en=a.forwardRef((e,t)=>{const{__scopePopover:o,...n}=e,r=Y(Qo,o),s=me(o),i=A(t,r.triggerRef),c=l.jsx(_.button,{type:"button","aria-haspopup":"dialog","aria-expanded":r.open,"aria-controls":r.contentId,"data-state":an(r.open),...n,ref:i,onClick:g(e.onClick,r.onOpenToggle)});return r.hasCustomAnchor?c:l.jsx(Ye,{asChild:!0,...s,children:c})});en.displayName=Qo;var ot="PopoverPortal",[La,Fa]=qo(ot,{forceMount:void 0}),tn=e=>{const{__scopePopover:t,forceMount:o,children:n,container:r}=e,s=Y(ot,t);return l.jsx(La,{scope:t,forceMount:o,children:l.jsx(B,{present:o||s.open,children:l.jsx(At,{asChild:!0,container:r,children:n})})})};tn.displayName=ot;var ae="PopoverContent",on=a.forwardRef((e,t)=>{const o=Fa(ae,e.__scopePopover),{forceMount:n=o.forceMount,...r}=e,s=Y(ae,e.__scopePopover);return l.jsx(B,{present:n||s.open,children:s.modal?l.jsx(ka,{...r,ref:t}):l.jsx(Va,{...r,ref:t})})});on.displayName=ae;var $a=Ma("PopoverContent.RemoveScroll"),ka=a.forwardRef((e,t)=>{const o=Y(ae,e.__scopePopover),n=a.useRef(null),r=A(t,n),s=a.useRef(!1);return a.useEffect(()=>{const i=n.current;if(i)return Tt(i)},[]),l.jsx(It,{as:$a,allowPinchZoom:!0,children:l.jsx(nn,{...e,ref:r,trapFocus:o.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:g(e.onCloseAutoFocus,i=>{i.preventDefault(),s.current||o.triggerRef.current?.focus()}),onPointerDownOutside:g(e.onPointerDownOutside,i=>{const c=i.detail.originalEvent,u=c.button===0&&c.ctrlKey===!0,p=c.button===2||u;s.current=p},{checkForDefaultPrevented:!1}),onFocusOutside:g(e.onFocusOutside,i=>i.preventDefault(),{checkForDefaultPrevented:!1})})})}),Va=a.forwardRef((e,t)=>{const o=Y(ae,e.__scopePopover),n=a.useRef(!1),r=a.useRef(!1);return l.jsx(nn,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:s=>{e.onCloseAutoFocus?.(s),s.defaultPrevented||(n.current||o.triggerRef.current?.focus(),s.preventDefault()),n.current=!1,r.current=!1},onInteractOutside:s=>{e.onInteractOutside?.(s),s.defaultPrevented||(n.current=!0,s.detail.originalEvent.type==="pointerdown"&&(r.current=!0));const i=s.target;o.triggerRef.current?.contains(i)&&s.preventDefault(),s.detail.originalEvent.type==="focusin"&&r.current&&s.preventDefault()}})}),nn=a.forwardRef((e,t)=>{const{__scopePopover:o,trapFocus:n,onOpenAutoFocus:r,onCloseAutoFocus:s,disableOutsidePointerEvents:i,onEscapeKeyDown:c,onPointerDownOutside:u,onFocusOutside:p,onInteractOutside:f,...d}=e,v=Y(ae,o),m=me(o);return Nt(),l.jsx(Dt,{asChild:!0,loop:!0,trapped:n,onMountAutoFocus:r,onUnmountAutoFocus:s,children:l.jsx(Ot,{asChild:!0,disableOutsidePointerEvents:i,onInteractOutside:f,onEscapeKeyDown:c,onPointerDownOutside:u,onFocusOutside:p,onDismiss:()=>v.onOpenChange(!1),children:l.jsx(jt,{"data-state":an(v.open),role:"dialog",id:v.contentId,...m,...d,ref:t,style:{...d.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),rn="PopoverClose",Ba=a.forwardRef((e,t)=>{const{__scopePopover:o,...n}=e,r=Y(rn,o);return l.jsx(_.button,{type:"button",...n,ref:t,onClick:g(e.onClick,()=>r.onOpenChange(!1))})});Ba.displayName=rn;var Ka="PopoverArrow",Ga=a.forwardRef((e,t)=>{const{__scopePopover:o,...n}=e,r=me(o);return l.jsx(Lt,{...r,...n,ref:t})});Ga.displayName=Ka;function an(e){return e?"open":"closed"}var Gi=Zo,Ui=en,Hi=tn,Wi=on,De="Collapsible",[Ua]=G(De),[Ha,nt]=Ua(De),sn=a.forwardRef((e,t)=>{const{__scopeCollapsible:o,open:n,defaultOpen:r,disabled:s,onOpenChange:i,...c}=e,[u,p]=Q({prop:n,defaultProp:r??!1,onChange:i,caller:De});return l.jsx(Ha,{scope:o,disabled:s,contentId:ne(),open:u,onOpenToggle:a.useCallback(()=>p(f=>!f),[p]),children:l.jsx(_.div,{"data-state":at(u),"data-disabled":s?"":void 0,...c,ref:t})})});sn.displayName=De;var cn="CollapsibleTrigger",Wa=a.forwardRef((e,t)=>{const{__scopeCollapsible:o,...n}=e,r=nt(cn,o);return l.jsx(_.button,{type:"button","aria-controls":r.contentId,"aria-expanded":r.open||!1,"data-state":at(r.open),"data-disabled":r.disabled?"":void 0,disabled:r.disabled,...n,ref:t,onClick:g(e.onClick,r.onOpenToggle)})});Wa.displayName=cn;var rt="CollapsibleContent",za=a.forwardRef((e,t)=>{const{forceMount:o,...n}=e,r=nt(rt,e.__scopeCollapsible);return l.jsx(B,{present:o||r.open,children:({present:s})=>l.jsx(Ya,{...n,ref:t,present:s})})});za.displayName=rt;var Ya=a.forwardRef((e,t)=>{const{__scopeCollapsible:o,present:n,children:r,...s}=e,i=nt(rt,o),[c,u]=a.useState(n),p=a.useRef(null),f=A(t,p),d=a.useRef(0),v=d.current,m=a.useRef(0),h=m.current,C=i.open||c,x=a.useRef(C),S=a.useRef(void 0);return a.useEffect(()=>{const R=requestAnimationFrame(()=>x.current=!1);return()=>cancelAnimationFrame(R)},[]),ue(()=>{const R=p.current;if(R){S.current=S.current||{transitionDuration:R.style.transitionDuration,animationName:R.style.animationName},R.style.transitionDuration="0s",R.style.animationName="none";const w=R.getBoundingClientRect();d.current=w.height,m.current=w.width,x.current||(R.style.transitionDuration=S.current.transitionDuration,R.style.animationName=S.current.animationName),u(n)}},[i.open,n]),l.jsx(_.div,{"data-state":at(i.open),"data-disabled":i.disabled?"":void 0,id:i.contentId,hidden:!C,...s,ref:f,style:{"--radix-collapsible-content-height":v?`${v}px`:void 0,"--radix-collapsible-content-width":h?`${h}px`:void 0,...e.style},children:C&&r})});function at(e){return e?"open":"closed"}var zi=sn;function Xa(e,t=[]){let o=[];function n(s,i){const c=a.createContext(i);c.displayName=s+"Context";const u=o.length;o=[...o,i];const p=d=>{const{scope:v,children:m,...h}=d,C=v?.[e]?.[u]||c,x=a.useMemo(()=>h,Object.values(h));return l.jsx(C.Provider,{value:x,children:m})};p.displayName=s+"Provider";function f(d,v){const m=v?.[e]?.[u]||c,h=a.useContext(m);if(h)return h;if(i!==void 0)return i;throw new Error(`\`${d}\` must be used within \`${s}\``)}return[p,f]}const r=()=>{const s=o.map(i=>a.createContext(i));return function(c){const u=c?.[e]||s;return a.useMemo(()=>({[`__scope${e}`]:{...c,[e]:u}}),[c,u])}};return r.scopeName=e,[n,qa(r,...t)]}function qa(...e){const t=e[0];if(e.length===1)return t;const o=()=>{const n=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(s){const i=n.reduce((c,{useScope:u,scopeName:p})=>{const d=u(s)[`__scope${p}`];return{...c,...d}},{});return a.useMemo(()=>({[`__scope${t.scopeName}`]:i}),[i])}};return o.scopeName=t.scopeName,o}var Za=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],st=Za.reduce((e,t)=>{const o=He(`Primitive.${t}`),n=a.forwardRef((r,s)=>{const{asChild:i,...c}=r,u=i?o:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),l.jsx(u,{...c,ref:s})});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{}),Ja=nr();function Qa(){return Ja.useSyncExternalStore(es,()=>!0,()=>!1)}function es(){return()=>{}}var it="Avatar",[ts]=Xa(it),[os,ln]=ts(it),un=a.forwardRef((e,t)=>{const{__scopeAvatar:o,...n}=e,[r,s]=a.useState("idle");return l.jsx(os,{scope:o,imageLoadingStatus:r,onImageLoadingStatusChange:s,children:l.jsx(st.span,{...n,ref:t})})});un.displayName=it;var dn="AvatarImage",fn=a.forwardRef((e,t)=>{const{__scopeAvatar:o,src:n,onLoadingStatusChange:r=()=>{},...s}=e,i=ln(dn,o),c=ns(n,s),u=k(p=>{r(p),i.onImageLoadingStatusChange(p)});return ue(()=>{c!=="idle"&&u(c)},[c,u]),c==="loaded"?l.jsx(st.img,{...s,ref:t,src:n}):null});fn.displayName=dn;var pn="AvatarFallback",vn=a.forwardRef((e,t)=>{const{__scopeAvatar:o,delayMs:n,...r}=e,s=ln(pn,o),[i,c]=a.useState(n===void 0);return a.useEffect(()=>{if(n!==void 0){const u=window.setTimeout(()=>c(!0),n);return()=>window.clearTimeout(u)}},[n]),i&&s.imageLoadingStatus!=="loaded"?l.jsx(st.span,{...r,ref:t}):null});vn.displayName=pn;function Pt(e,t){return e?t?(e.src!==t&&(e.src=t),e.complete&&e.naturalWidth>0?"loaded":"loading"):"error":"idle"}function ns(e,{referrerPolicy:t,crossOrigin:o}){const n=Qa(),r=a.useRef(null),s=n?(r.current||(r.current=new window.Image),r.current):null,[i,c]=a.useState(()=>Pt(s,e));return ue(()=>{c(Pt(s,e))},[s,e]),ue(()=>{const u=d=>()=>{c(d)};if(!s)return;const p=u("loaded"),f=u("error");return s.addEventListener("load",p),s.addEventListener("error",f),t&&(s.referrerPolicy=t),typeof o=="string"&&(s.crossOrigin=o),()=>{s.removeEventListener("load",p),s.removeEventListener("error",f)}},[s,o,t]),i}var Yi=un,Xi=fn,qi=vn;function rs(e){const t=as(e),o=a.forwardRef((n,r)=>{const{children:s,...i}=n,c=a.Children.toArray(s),u=c.find(is);if(u){const p=u.props.children,f=c.map(d=>d===u?a.Children.count(p)>1?a.Children.only(null):a.isValidElement(p)?p.props.children:null:d);return l.jsx(t,{...i,ref:r,children:a.isValidElement(p)?a.cloneElement(p,void 0,f):null})}return l.jsx(t,{...i,ref:r,children:s})});return o.displayName=`${e}.Slot`,o}function as(e){const t=a.forwardRef((o,n)=>{const{children:r,...s}=o;if(a.isValidElement(r)){const i=ls(r),c=cs(s,r.props);return r.type!==a.Fragment&&(c.ref=n?We(n,i):i),a.cloneElement(r,c)}return a.Children.count(r)>1?a.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var ss=Symbol("radix.slottable");function is(e){return a.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===ss}function cs(e,t){const o={...t};for(const n in t){const r=e[n],s=t[n];/^on[A-Z]/.test(n)?r&&s?o[n]=(...c)=>{const u=s(...c);return r(...c),u}:r&&(o[n]=r):n==="style"?o[n]={...r,...s}:n==="className"&&(o[n]=[r,s].filter(Boolean).join(" "))}return{...e,...o}}function ls(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,o=t&&"isReactWarning"in t&&t.isReactWarning;return o?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,o=t&&"isReactWarning"in t&&t.isReactWarning,o?e.props.ref:e.props.ref||e.ref)}var Ke=["Enter"," "],us=["ArrowDown","PageUp","Home"],mn=["ArrowUp","PageDown","End"],ds=[...us,...mn],fs={ltr:[...Ke,"ArrowRight"],rtl:[...Ke,"ArrowLeft"]},ps={ltr:["ArrowLeft"],rtl:["ArrowRight"]},he="Menu",[de,vs,ms]=Ge(he),[ee,hn]=G(he,[ms,_e,Ee]),ge=_e(),gn=Ee(),[xn,X]=ee(he),[hs,xe]=ee(he),Sn=e=>{const{__scopeMenu:t,open:o=!1,children:n,dir:r,onOpenChange:s,modal:i=!0}=e,c=ge(t),[u,p]=a.useState(null),f=a.useRef(!1),d=k(s),v=pe(r);return a.useEffect(()=>{const m=()=>{f.current=!0,document.addEventListener("pointerdown",h,{capture:!0,once:!0}),document.addEventListener("pointermove",h,{capture:!0,once:!0})},h=()=>f.current=!1;return document.addEventListener("keydown",m,{capture:!0}),()=>{document.removeEventListener("keydown",m,{capture:!0}),document.removeEventListener("pointerdown",h,{capture:!0}),document.removeEventListener("pointermove",h,{capture:!0})}},[]),l.jsx(ze,{...c,children:l.jsx(xn,{scope:t,open:o,onOpenChange:d,content:u,onContentChange:p,children:l.jsx(hs,{scope:t,onClose:a.useCallback(()=>d(!1),[d]),isUsingKeyboardRef:f,dir:v,modal:i,children:n})})})};Sn.displayName=he;var gs="MenuAnchor",ct=a.forwardRef((e,t)=>{const{__scopeMenu:o,...n}=e,r=ge(o);return l.jsx(Ye,{...r,...n,ref:t})});ct.displayName=gs;var lt="MenuPortal",[xs,Cn]=ee(lt,{forceMount:void 0}),bn=e=>{const{__scopeMenu:t,forceMount:o,children:n,container:r}=e,s=X(lt,t);return l.jsx(xs,{scope:t,forceMount:o,children:l.jsx(B,{present:o||s.open,children:l.jsx(At,{asChild:!0,container:r,children:n})})})};bn.displayName=lt;var V="MenuContent",[Ss,ut]=ee(V),wn=a.forwardRef((e,t)=>{const o=Cn(V,e.__scopeMenu),{forceMount:n=o.forceMount,...r}=e,s=X(V,e.__scopeMenu),i=xe(V,e.__scopeMenu);return l.jsx(de.Provider,{scope:e.__scopeMenu,children:l.jsx(B,{present:n||s.open,children:l.jsx(de.Slot,{scope:e.__scopeMenu,children:i.modal?l.jsx(Cs,{...r,ref:t}):l.jsx(bs,{...r,ref:t})})})})}),Cs=a.forwardRef((e,t)=>{const o=X(V,e.__scopeMenu),n=a.useRef(null),r=A(t,n);return a.useEffect(()=>{const s=n.current;if(s)return Tt(s)},[]),l.jsx(dt,{...e,ref:r,trapFocus:o.open,disableOutsidePointerEvents:o.open,disableOutsideScroll:!0,onFocusOutside:g(e.onFocusOutside,s=>s.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>o.onOpenChange(!1)})}),bs=a.forwardRef((e,t)=>{const o=X(V,e.__scopeMenu);return l.jsx(dt,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>o.onOpenChange(!1)})}),ws=rs("MenuContent.ScrollLock"),dt=a.forwardRef((e,t)=>{const{__scopeMenu:o,loop:n=!1,trapFocus:r,onOpenAutoFocus:s,onCloseAutoFocus:i,disableOutsidePointerEvents:c,onEntryFocus:u,onEscapeKeyDown:p,onPointerDownOutside:f,onFocusOutside:d,onInteractOutside:v,onDismiss:m,disableOutsideScroll:h,...C}=e,x=X(V,o),S=xe(V,o),R=ge(o),w=gn(o),P=vs(o),[I,j]=a.useState(null),N=a.useRef(null),T=A(t,N,x.onContentChange),E=a.useRef(0),M=a.useRef(""),y=a.useRef(0),L=a.useRef(null),W=a.useRef("right"),q=a.useRef(0),Z=h?It:a.Fragment,O=h?{as:ws,allowPinchZoom:!0}:void 0,z=b=>{const te=M.current+b,J=P().filter($=>!$.disabled),ie=document.activeElement,je=J.find($=>$.ref.current===ie)?.textValue,Le=J.map($=>$.textValue),gt=Os(Le,te,je),ce=J.find($=>$.textValue===gt)?.ref.current;(function $(xt){M.current=xt,window.clearTimeout(E.current),xt!==""&&(E.current=window.setTimeout(()=>$(""),1e3))})(te),ce&&setTimeout(()=>ce.focus())};a.useEffect(()=>()=>window.clearTimeout(E.current),[]),Nt();const F=a.useCallback(b=>W.current===L.current?.side&&Ls(b,L.current?.area),[]);return l.jsx(Ss,{scope:o,searchRef:M,onItemEnter:a.useCallback(b=>{F(b)&&b.preventDefault()},[F]),onItemLeave:a.useCallback(b=>{F(b)||(N.current?.focus(),j(null))},[F]),onTriggerLeave:a.useCallback(b=>{F(b)&&b.preventDefault()},[F]),pointerGraceTimerRef:y,onPointerGraceIntentChange:a.useCallback(b=>{L.current=b},[]),children:l.jsx(Z,{...O,children:l.jsx(Dt,{asChild:!0,trapped:r,onMountAutoFocus:g(s,b=>{b.preventDefault(),N.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:i,children:l.jsx(Ot,{asChild:!0,disableOutsidePointerEvents:c,onEscapeKeyDown:p,onPointerDownOutside:f,onFocusOutside:d,onInteractOutside:v,onDismiss:m,children:l.jsx(Kt,{asChild:!0,...w,dir:S.dir,orientation:"vertical",loop:n,currentTabStopId:I,onCurrentTabStopIdChange:j,onEntryFocus:g(u,b=>{S.isUsingKeyboardRef.current||b.preventDefault()}),preventScrollOnEntryFocus:!0,children:l.jsx(jt,{role:"menu","aria-orientation":"vertical","data-state":kn(x.open),"data-radix-menu-content":"",dir:S.dir,...R,...C,ref:T,style:{outline:"none",...C.style},onKeyDown:g(C.onKeyDown,b=>{const J=b.target.closest("[data-radix-menu-content]")===b.currentTarget,ie=b.ctrlKey||b.altKey||b.metaKey,je=b.key.length===1;J&&(b.key==="Tab"&&b.preventDefault(),!ie&&je&&z(b.key));const Le=N.current;if(b.target!==Le||!ds.includes(b.key))return;b.preventDefault();const ce=P().filter($=>!$.disabled).map($=>$.ref.current);mn.includes(b.key)&&ce.reverse(),Ns(ce)}),onBlur:g(e.onBlur,b=>{b.currentTarget.contains(b.target)||(window.clearTimeout(E.current),M.current="")}),onPointerMove:g(e.onPointerMove,fe(b=>{const te=b.target,J=q.current!==b.clientX;if(b.currentTarget.contains(te)&&J){const ie=b.clientX>q.current?"right":"left";W.current=ie,q.current=b.clientX}}))})})})})})})});wn.displayName=V;var Ps="MenuGroup",ft=a.forwardRef((e,t)=>{const{__scopeMenu:o,...n}=e;return l.jsx(_.div,{role:"group",...n,ref:t})});ft.displayName=Ps;var Rs="MenuLabel",Pn=a.forwardRef((e,t)=>{const{__scopeMenu:o,...n}=e;return l.jsx(_.div,{...n,ref:t})});Pn.displayName=Rs;var Pe="MenuItem",Rt="menu.itemSelect",Oe=a.forwardRef((e,t)=>{const{disabled:o=!1,onSelect:n,...r}=e,s=a.useRef(null),i=xe(Pe,e.__scopeMenu),c=ut(Pe,e.__scopeMenu),u=A(t,s),p=a.useRef(!1),f=()=>{const d=s.current;if(!o&&d){const v=new CustomEvent(Rt,{bubbles:!0,cancelable:!0});d.addEventListener(Rt,m=>n?.(m),{once:!0}),fr(d,v),v.defaultPrevented?p.current=!1:i.onClose()}};return l.jsx(Rn,{...r,ref:u,disabled:o,onClick:g(e.onClick,f),onPointerDown:d=>{e.onPointerDown?.(d),p.current=!0},onPointerUp:g(e.onPointerUp,d=>{p.current||d.currentTarget?.click()}),onKeyDown:g(e.onKeyDown,d=>{const v=c.searchRef.current!=="";o||v&&d.key===" "||Ke.includes(d.key)&&(d.currentTarget.click(),d.preventDefault())})})});Oe.displayName=Pe;var Rn=a.forwardRef((e,t)=>{const{__scopeMenu:o,disabled:n=!1,textValue:r,...s}=e,i=ut(Pe,o),c=gn(o),u=a.useRef(null),p=A(t,u),[f,d]=a.useState(!1),[v,m]=a.useState("");return a.useEffect(()=>{const h=u.current;h&&m((h.textContent??"").trim())},[s.children]),l.jsx(de.ItemSlot,{scope:o,disabled:n,textValue:r??v,children:l.jsx(Gt,{asChild:!0,...c,focusable:!n,children:l.jsx(_.div,{role:"menuitem","data-highlighted":f?"":void 0,"aria-disabled":n||void 0,"data-disabled":n?"":void 0,...s,ref:p,onPointerMove:g(e.onPointerMove,fe(h=>{n?i.onItemLeave(h):(i.onItemEnter(h),h.defaultPrevented||h.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:g(e.onPointerLeave,fe(h=>i.onItemLeave(h))),onFocus:g(e.onFocus,()=>d(!0)),onBlur:g(e.onBlur,()=>d(!1))})})})}),_s="MenuCheckboxItem",_n=a.forwardRef((e,t)=>{const{checked:o=!1,onCheckedChange:n,...r}=e;return l.jsx(Tn,{scope:e.__scopeMenu,checked:o,children:l.jsx(Oe,{role:"menuitemcheckbox","aria-checked":Re(o)?"mixed":o,...r,ref:t,"data-state":mt(o),onSelect:g(r.onSelect,()=>n?.(Re(o)?!0:!o),{checkForDefaultPrevented:!1})})})});_n.displayName=_s;var En="MenuRadioGroup",[Es,ys]=ee(En,{value:void 0,onValueChange:()=>{}}),yn=a.forwardRef((e,t)=>{const{value:o,onValueChange:n,...r}=e,s=k(n);return l.jsx(Es,{scope:e.__scopeMenu,value:o,onValueChange:s,children:l.jsx(ft,{...r,ref:t})})});yn.displayName=En;var Mn="MenuRadioItem",An=a.forwardRef((e,t)=>{const{value:o,...n}=e,r=ys(Mn,e.__scopeMenu),s=o===r.value;return l.jsx(Tn,{scope:e.__scopeMenu,checked:s,children:l.jsx(Oe,{role:"menuitemradio","aria-checked":s,...n,ref:t,"data-state":mt(s),onSelect:g(n.onSelect,()=>r.onValueChange?.(o),{checkForDefaultPrevented:!1})})})});An.displayName=Mn;var pt="MenuItemIndicator",[Tn,Ms]=ee(pt,{checked:!1}),In=a.forwardRef((e,t)=>{const{__scopeMenu:o,forceMount:n,...r}=e,s=Ms(pt,o);return l.jsx(B,{present:n||Re(s.checked)||s.checked===!0,children:l.jsx(_.span,{...r,ref:t,"data-state":mt(s.checked)})})});In.displayName=pt;var As="MenuSeparator",Nn=a.forwardRef((e,t)=>{const{__scopeMenu:o,...n}=e;return l.jsx(_.div,{role:"separator","aria-orientation":"horizontal",...n,ref:t})});Nn.displayName=As;var Ts="MenuArrow",Dn=a.forwardRef((e,t)=>{const{__scopeMenu:o,...n}=e,r=ge(o);return l.jsx(Lt,{...r,...n,ref:t})});Dn.displayName=Ts;var vt="MenuSub",[Is,On]=ee(vt),jn=e=>{const{__scopeMenu:t,children:o,open:n=!1,onOpenChange:r}=e,s=X(vt,t),i=ge(t),[c,u]=a.useState(null),[p,f]=a.useState(null),d=k(r);return a.useEffect(()=>(s.open===!1&&d(!1),()=>d(!1)),[s.open,d]),l.jsx(ze,{...i,children:l.jsx(xn,{scope:t,open:n,onOpenChange:d,content:p,onContentChange:f,children:l.jsx(Is,{scope:t,contentId:ne(),triggerId:ne(),trigger:c,onTriggerChange:u,children:o})})})};jn.displayName=vt;var le="MenuSubTrigger",Ln=a.forwardRef((e,t)=>{const o=X(le,e.__scopeMenu),n=xe(le,e.__scopeMenu),r=On(le,e.__scopeMenu),s=ut(le,e.__scopeMenu),i=a.useRef(null),{pointerGraceTimerRef:c,onPointerGraceIntentChange:u}=s,p={__scopeMenu:e.__scopeMenu},f=a.useCallback(()=>{i.current&&window.clearTimeout(i.current),i.current=null},[]);return a.useEffect(()=>f,[f]),a.useEffect(()=>{const d=c.current;return()=>{window.clearTimeout(d),u(null)}},[c,u]),l.jsx(ct,{asChild:!0,...p,children:l.jsx(Rn,{id:r.triggerId,"aria-haspopup":"menu","aria-expanded":o.open,"aria-controls":r.contentId,"data-state":kn(o.open),...e,ref:We(t,r.onTriggerChange),onClick:d=>{e.onClick?.(d),!(e.disabled||d.defaultPrevented)&&(d.currentTarget.focus(),o.open||o.onOpenChange(!0))},onPointerMove:g(e.onPointerMove,fe(d=>{s.onItemEnter(d),!d.defaultPrevented&&!e.disabled&&!o.open&&!i.current&&(s.onPointerGraceIntentChange(null),i.current=window.setTimeout(()=>{o.onOpenChange(!0),f()},100))})),onPointerLeave:g(e.onPointerLeave,fe(d=>{f();const v=o.content?.getBoundingClientRect();if(v){const m=o.content?.dataset.side,h=m==="right",C=h?-5:5,x=v[h?"left":"right"],S=v[h?"right":"left"];s.onPointerGraceIntentChange({area:[{x:d.clientX+C,y:d.clientY},{x,y:v.top},{x:S,y:v.top},{x:S,y:v.bottom},{x,y:v.bottom}],side:m}),window.clearTimeout(c.current),c.current=window.setTimeout(()=>s.onPointerGraceIntentChange(null),300)}else{if(s.onTriggerLeave(d),d.defaultPrevented)return;s.onPointerGraceIntentChange(null)}})),onKeyDown:g(e.onKeyDown,d=>{const v=s.searchRef.current!=="";e.disabled||v&&d.key===" "||fs[n.dir].includes(d.key)&&(o.onOpenChange(!0),o.content?.focus(),d.preventDefault())})})})});Ln.displayName=le;var Fn="MenuSubContent",$n=a.forwardRef((e,t)=>{const o=Cn(V,e.__scopeMenu),{forceMount:n=o.forceMount,...r}=e,s=X(V,e.__scopeMenu),i=xe(V,e.__scopeMenu),c=On(Fn,e.__scopeMenu),u=a.useRef(null),p=A(t,u);return l.jsx(de.Provider,{scope:e.__scopeMenu,children:l.jsx(B,{present:n||s.open,children:l.jsx(de.Slot,{scope:e.__scopeMenu,children:l.jsx(dt,{id:c.contentId,"aria-labelledby":c.triggerId,...r,ref:p,align:"start",side:i.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:f=>{i.isUsingKeyboardRef.current&&u.current?.focus(),f.preventDefault()},onCloseAutoFocus:f=>f.preventDefault(),onFocusOutside:g(e.onFocusOutside,f=>{f.target!==c.trigger&&s.onOpenChange(!1)}),onEscapeKeyDown:g(e.onEscapeKeyDown,f=>{i.onClose(),f.preventDefault()}),onKeyDown:g(e.onKeyDown,f=>{const d=f.currentTarget.contains(f.target),v=ps[i.dir].includes(f.key);d&&v&&(s.onOpenChange(!1),c.trigger?.focus(),f.preventDefault())})})})})})});$n.displayName=Fn;function kn(e){return e?"open":"closed"}function Re(e){return e==="indeterminate"}function mt(e){return Re(e)?"indeterminate":e?"checked":"unchecked"}function Ns(e){const t=document.activeElement;for(const o of e)if(o===t||(o.focus(),document.activeElement!==t))return}function Ds(e,t){return e.map((o,n)=>e[(t+n)%e.length])}function Os(e,t,o){const r=t.length>1&&Array.from(t).every(p=>p===t[0])?t[0]:t,s=o?e.indexOf(o):-1;let i=Ds(e,Math.max(s,0));r.length===1&&(i=i.filter(p=>p!==o));const u=i.find(p=>p.toLowerCase().startsWith(r.toLowerCase()));return u!==o?u:void 0}function js(e,t){const{x:o,y:n}=e;let r=!1;for(let s=0,i=t.length-1;sn!=v>n&&o<(d-p)*(n-f)/(v-f)+p&&(r=!r)}return r}function Ls(e,t){if(!t)return!1;const o={x:e.clientX,y:e.clientY};return js(o,t)}function fe(e){return t=>t.pointerType==="mouse"?e(t):void 0}var Fs=Sn,$s=ct,ks=bn,Vs=wn,Bs=ft,Ks=Pn,Gs=Oe,Us=_n,Hs=yn,Ws=An,zs=In,Ys=Nn,Xs=Dn,qs=jn,Zs=Ln,Js=$n,ht="ContextMenu",[Qs]=G(ht,[hn]),D=hn(),[ei,Vn]=Qs(ht),Bn=e=>{const{__scopeContextMenu:t,children:o,onOpenChange:n,dir:r,modal:s=!0}=e,[i,c]=a.useState(!1),u=D(t),p=k(n),f=a.useCallback(d=>{c(d),p(d)},[p]);return l.jsx(ei,{scope:t,open:i,onOpenChange:f,modal:s,children:l.jsx(Fs,{...u,dir:r,open:i,onOpenChange:f,modal:s,children:o})})};Bn.displayName=ht;var Kn="ContextMenuTrigger",Gn=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,disabled:n=!1,...r}=e,s=Vn(Kn,o),i=D(o),c=a.useRef({x:0,y:0}),u=a.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...c.current})}),p=a.useRef(0),f=a.useCallback(()=>window.clearTimeout(p.current),[]),d=v=>{c.current={x:v.clientX,y:v.clientY},s.onOpenChange(!0)};return a.useEffect(()=>f,[f]),a.useEffect(()=>void(n&&f()),[n,f]),l.jsxs(l.Fragment,{children:[l.jsx($s,{...i,virtualRef:u}),l.jsx(_.span,{"data-state":s.open?"open":"closed","data-disabled":n?"":void 0,...r,ref:t,style:{WebkitTouchCallout:"none",...e.style},onContextMenu:n?e.onContextMenu:g(e.onContextMenu,v=>{f(),d(v),v.preventDefault()}),onPointerDown:n?e.onPointerDown:g(e.onPointerDown,Se(v=>{f(),p.current=window.setTimeout(()=>d(v),700)})),onPointerMove:n?e.onPointerMove:g(e.onPointerMove,Se(f)),onPointerCancel:n?e.onPointerCancel:g(e.onPointerCancel,Se(f)),onPointerUp:n?e.onPointerUp:g(e.onPointerUp,Se(f))})]})});Gn.displayName=Kn;var ti="ContextMenuPortal",Un=e=>{const{__scopeContextMenu:t,...o}=e,n=D(t);return l.jsx(ks,{...n,...o})};Un.displayName=ti;var Hn="ContextMenuContent",Wn=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,...n}=e,r=Vn(Hn,o),s=D(o),i=a.useRef(!1);return l.jsx(Vs,{...s,...n,ref:t,side:"right",sideOffset:2,align:"start",onCloseAutoFocus:c=>{e.onCloseAutoFocus?.(c),!c.defaultPrevented&&i.current&&c.preventDefault(),i.current=!1},onInteractOutside:c=>{e.onInteractOutside?.(c),!c.defaultPrevented&&!r.modal&&(i.current=!0)},style:{...e.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});Wn.displayName=Hn;var oi="ContextMenuGroup",ni=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,...n}=e,r=D(o);return l.jsx(Bs,{...r,...n,ref:t})});ni.displayName=oi;var ri="ContextMenuLabel",zn=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,...n}=e,r=D(o);return l.jsx(Ks,{...r,...n,ref:t})});zn.displayName=ri;var ai="ContextMenuItem",Yn=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,...n}=e,r=D(o);return l.jsx(Gs,{...r,...n,ref:t})});Yn.displayName=ai;var si="ContextMenuCheckboxItem",Xn=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,...n}=e,r=D(o);return l.jsx(Us,{...r,...n,ref:t})});Xn.displayName=si;var ii="ContextMenuRadioGroup",ci=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,...n}=e,r=D(o);return l.jsx(Hs,{...r,...n,ref:t})});ci.displayName=ii;var li="ContextMenuRadioItem",qn=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,...n}=e,r=D(o);return l.jsx(Ws,{...r,...n,ref:t})});qn.displayName=li;var ui="ContextMenuItemIndicator",Zn=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,...n}=e,r=D(o);return l.jsx(zs,{...r,...n,ref:t})});Zn.displayName=ui;var di="ContextMenuSeparator",Jn=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,...n}=e,r=D(o);return l.jsx(Ys,{...r,...n,ref:t})});Jn.displayName=di;var fi="ContextMenuArrow",pi=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,...n}=e,r=D(o);return l.jsx(Xs,{...r,...n,ref:t})});pi.displayName=fi;var Qn="ContextMenuSub",er=e=>{const{__scopeContextMenu:t,children:o,onOpenChange:n,open:r,defaultOpen:s}=e,i=D(t),[c,u]=Q({prop:r,defaultProp:s??!1,onChange:n,caller:Qn});return l.jsx(qs,{...i,open:c,onOpenChange:u,children:o})};er.displayName=Qn;var vi="ContextMenuSubTrigger",tr=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,...n}=e,r=D(o);return l.jsx(Zs,{...r,...n,ref:t})});tr.displayName=vi;var mi="ContextMenuSubContent",or=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,...n}=e,r=D(o);return l.jsx(Js,{...r,...n,ref:t,style:{...e.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});or.displayName=mi;function Se(e){return t=>t.pointerType!=="mouse"?e(t):void 0}var Zi=Bn,Ji=Gn,Qi=Un,ec=Wn,tc=zn,oc=Yn,nc=Xn,rc=qn,ac=Zn,sc=Jn,ic=er,cc=tr,lc=or;export{$i as A,lc as B,bi as C,Bi as D,Qi as E,qi as F,ec as G,oc as H,Ei as I,nc as J,ac as K,Si as L,rc as M,tc as N,Li as O,ji as P,sc as Q,xi as R,yr as S,Ci as T,Zi as U,Pi as V,Ji as W,ic as X,wi as a,Ri as b,Dr as c,_i as d,yi as e,Mi as f,Ai as g,Ti as h,Ii as i,Ni as j,Fi as k,Vi as l,ki as m,Di as n,Oi as o,Ki as p,Hi as q,Wi as r,Gi as s,Ui as t,zi as u,Wa as v,za as w,Yi as x,Xi as y,cc as z}; diff --git a/webui/dist/assets/reactflow-B3n3_Vkw.js b/webui/dist/assets/reactflow-B3n3_Vkw.js new file mode 100644 index 00000000..d4b54604 --- /dev/null +++ b/webui/dist/assets/reactflow-B3n3_Vkw.js @@ -0,0 +1,2 @@ +import{u as Rc,R as P,r as T}from"./router-CWhjJi2n.js";import{i as Ac,b as Oo,c as Mc,d as Fo,e as Ic,f as qc,g as Tc,r as ea,h as Pc,j as co,k as ta,l as We,m as lo,n as Dc,o as zc,p as na,q as ra,s as oa,t as fo,u as ho,v as po,w as Lc,x as $c,y as Oc,z as Fc,A as Hc,B as Vc,C as Bc,D as go,E as Wt,F as Gc,G as Uc,H as mo,I as Yc,J as Wc,K as ia,L as sa,M as aa,N as ua,O as Zt,P as ca,Q as la,R as Zc,S as Xc,T as Kc,U as jc,V as Qc,W as Jc,X as el,Y as tl,Z as da,$ as fa,a0 as nl,a1 as rl,a2 as ol,a3 as il,a4 as sl,a5 as al,a6 as ul,a7 as cl,a8 as ll,a9 as dl,aa as fl,ab as hl,ac as pl,ad as gl,ae as ml,af as vl}from"./charts-Dhri-zxi.js";function ce(e){if(typeof e=="string"||typeof e=="number")return""+e;let t="";if(Array.isArray(e))for(let n=0,r;n{let t;const n=new Set,r=(u,d)=>{const f=typeof u=="function"?u(t):u;if(!Object.is(f,t)){const h=t;t=d??(typeof f!="object"||f===null)?f:Object.assign({},t,f),n.forEach(_=>_(t,h))}},o=()=>t,c={setState:r,getState:o,getInitialState:()=>l,subscribe:u=>(n.add(u),()=>n.delete(u)),destroy:()=>{(yl?"production":void 0)!=="production"&&console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}},l=t=e(r,o,c);return c},wl=e=>e?Ho(e):Ho,{useDebugValue:_l}=P,{useSyncExternalStoreWithSelector:El}=Rc,bl=e=>e;function ha(e,t=bl,n){const r=El(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,n);return _l(r),r}const Vo=(e,t)=>{const n=wl(e),r=(o,i=t)=>ha(n,o,i);return Object.assign(r,n),r},xl=(e,t)=>e?Vo(e,t):Vo;function ue(e,t){if(Object.is(e,t))return!0;if(typeof e!="object"||e===null||typeof t!="object"||t===null)return!1;if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(const[r,o]of e)if(!Object.is(o,t.get(r)))return!1;return!0}if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(const r of e)if(!t.has(r))return!1;return!0}const n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(const r of n)if(!Object.prototype.hasOwnProperty.call(t,r)||!Object.is(e[r],t[r]))return!1;return!0}var Sl={value:()=>{}};function Xt(){for(var e=0,t=arguments.length,n={},r;e=0&&(r=n.slice(o+1),n=n.slice(0,o)),n&&!t.hasOwnProperty(n))throw new Error("unknown type: "+n);return{type:n,name:r}})}Pt.prototype=Xt.prototype={constructor:Pt,on:function(e,t){var n=this._,r=Nl(e+"",n),o,i=-1,s=r.length;if(arguments.length<2){for(;++i0)for(var n=new Array(o),r=0,o,i;r=0&&(t=e.slice(0,n))!=="xmlns"&&(e=e.slice(n+1)),Go.hasOwnProperty(t)?{space:Go[t],local:e}:e}function kl(e){return function(){var t=this.ownerDocument,n=this.namespaceURI;return n===Kr&&t.documentElement.namespaceURI===Kr?t.createElement(e):t.createElementNS(n,e)}}function Rl(e){return function(){return this.ownerDocument.createElementNS(e.space,e.local)}}function pa(e){var t=Kt(e);return(t.local?Rl:kl)(t)}function Al(){}function vo(e){return e==null?Al:function(){return this.querySelector(e)}}function Ml(e){typeof e!="function"&&(e=vo(e));for(var t=this._groups,n=t.length,r=new Array(n),o=0;o=E&&(E=y+1);!(b=g[E])&&++E<_;);v._next=b||null}}return s=new pe(s,r),s._enter=a,s._exit=c,s}function Kl(e){return typeof e=="object"&&"length"in e?e:Array.from(e)}function jl(){return new pe(this._exit||this._groups.map(ya),this._parents)}function Ql(e,t,n){var r=this.enter(),o=this,i=this.exit();return typeof e=="function"?(r=e(r),r&&(r=r.selection())):r=r.append(e+""),t!=null&&(o=t(o),o&&(o=o.selection())),n==null?i.remove():n(i),r&&o?r.merge(o).order():o}function Jl(e){for(var t=e.selection?e.selection():e,n=this._groups,r=t._groups,o=n.length,i=r.length,s=Math.min(o,i),a=new Array(o),c=0;c=0;)(s=r[o])&&(i&&s.compareDocumentPosition(i)^4&&i.parentNode.insertBefore(s,i),i=s);return this}function td(e){e||(e=nd);function t(d,f){return d&&f?e(d.__data__,f.__data__):!d-!f}for(var n=this._groups,r=n.length,o=new Array(r),i=0;it?1:e>=t?0:NaN}function rd(){var e=arguments[0];return arguments[0]=this,e.apply(null,arguments),this}function od(){return Array.from(this)}function id(){for(var e=this._groups,t=0,n=e.length;t1?this.each((t==null?md:typeof t=="function"?yd:vd)(e,t,n??"")):at(this.node(),e)}function at(e,t){return e.style.getPropertyValue(t)||wa(e).getComputedStyle(e,null).getPropertyValue(t)}function _d(e){return function(){delete this[e]}}function Ed(e,t){return function(){this[e]=t}}function bd(e,t){return function(){var n=t.apply(this,arguments);n==null?delete this[e]:this[e]=n}}function xd(e,t){return arguments.length>1?this.each((t==null?_d:typeof t=="function"?bd:Ed)(e,t)):this.node()[e]}function _a(e){return e.trim().split(/^|\s+/)}function yo(e){return e.classList||new Ea(e)}function Ea(e){this._node=e,this._names=_a(e.getAttribute("class")||"")}Ea.prototype={add:function(e){var t=this._names.indexOf(e);t<0&&(this._names.push(e),this._node.setAttribute("class",this._names.join(" ")))},remove:function(e){var t=this._names.indexOf(e);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(e){return this._names.indexOf(e)>=0}};function ba(e,t){for(var n=yo(e),r=-1,o=t.length;++r=0&&(n=t.slice(r+1),t=t.slice(0,r)),{type:t,name:n}})}function jd(e){return function(){var t=this.__on;if(t){for(var n=0,r=-1,o=t.length,i;n()=>e;function jr(e,{sourceEvent:t,subject:n,target:r,identifier:o,active:i,x:s,y:a,dx:c,dy:l,dispatch:u}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:o,enumerable:!0,configurable:!0},active:{value:i,enumerable:!0,configurable:!0},x:{value:s,enumerable:!0,configurable:!0},y:{value:a,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:l,enumerable:!0,configurable:!0},_:{value:u}})}jr.prototype.on=function(){var e=this._.on.apply(this._,arguments);return e===this._?this:e};function uf(e){return!e.ctrlKey&&!e.button}function cf(){return this.parentNode}function lf(e,t){return t??{x:e.x,y:e.y}}function df(){return navigator.maxTouchPoints||"ontouchstart"in this}function ff(){var e=uf,t=cf,n=lf,r=df,o={},i=Xt("start","drag","end"),s=0,a,c,l,u,d=0;function f(v){v.on("mousedown.drag",h).filter(r).on("touchstart.drag",g).on("touchmove.drag",p,af).on("touchend.drag touchcancel.drag",y).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function h(v,b){if(!(u||!e.call(this,v,b))){var x=E(this,t.call(this,v,b),v,b,"mouse");x&&(ge(v.view).on("mousemove.drag",_,Et).on("mouseup.drag",m,Et),Ca(v.view),an(v),l=!1,a=v.clientX,c=v.clientY,x("start",v))}}function _(v){if(it(v),!l){var b=v.clientX-a,x=v.clientY-c;l=b*b+x*x>d}o.mouse("drag",v)}function m(v){ge(v.view).on("mousemove.drag mouseup.drag",null),ka(v.view,l),it(v),o.mouse("end",v)}function g(v,b){if(e.call(this,v,b)){var x=v.changedTouches,C=t.call(this,v,b),q=x.length,k,A;for(k=0;k=0&&e._call.call(void 0,t),e=e._next;--ut}function Uo(){Ue=(Ft=bt.now())+jt,ut=yt=0;try{pf()}finally{ut=0,mf(),Ue=0}}function gf(){var e=bt.now(),t=e-Ft;t>Ra&&(jt-=t,Ft=e)}function mf(){for(var e,t=Ot,n,r=1/0;t;)t._call?(r>t._time&&(r=t._time),e=t,t=t._next):(n=t._next,t._next=null,t=e?e._next=n:Ot=n);wt=e,Qr(r)}function Qr(e){if(!ut){yt&&(yt=clearTimeout(yt));var t=e-Ue;t>24?(e<1/0&&(yt=setTimeout(Uo,e-bt.now()-jt)),ht&&(ht=clearInterval(ht))):(ht||(Ft=bt.now(),ht=setInterval(gf,Ra)),ut=1,Aa(Uo))}}function Yo(e,t,n){var r=new Ht;return t=t==null?0:+t,r.restart(o=>{r.stop(),e(o+t)},t,n),r}var vf=Xt("start","end","cancel","interrupt"),yf=[],Ia=0,Wo=1,Jr=2,Dt=3,Zo=4,eo=5,zt=6;function Qt(e,t,n,r,o,i){var s=e.__transition;if(!s)e.__transition={};else if(n in s)return;wf(e,n,{name:t,index:r,group:o,on:vf,tween:yf,time:i.time,delay:i.delay,duration:i.duration,ease:i.ease,timer:null,state:Ia})}function _o(e,t){var n=Ee(e,t);if(n.state>Ia)throw new Error("too late; already scheduled");return n}function Se(e,t){var n=Ee(e,t);if(n.state>Dt)throw new Error("too late; already running");return n}function Ee(e,t){var n=e.__transition;if(!n||!(n=n[t]))throw new Error("transition not found");return n}function wf(e,t,n){var r=e.__transition,o;r[t]=n,n.timer=Ma(i,0,n.time);function i(l){n.state=Wo,n.timer.restart(s,n.delay,n.time),n.delay<=l&&s(l-n.delay)}function s(l){var u,d,f,h;if(n.state!==Wo)return c();for(u in r)if(h=r[u],h.name===n.name){if(h.state===Dt)return Yo(s);h.state===Zo?(h.state=zt,h.timer.stop(),h.on.call("interrupt",e,e.__data__,h.index,h.group),delete r[u]):+uJr&&r.state=0&&(t=t.slice(0,n)),!t||t==="start"})}function Xf(e,t,n){var r,o,i=Zf(t)?_o:Se;return function(){var s=i(this,e),a=s.on;a!==r&&(o=(r=a).copy()).on(t,n),s.on=o}}function Kf(e,t){var n=this._id;return arguments.length<2?Ee(this.node(),n).on.on(e):this.each(Xf(n,e,t))}function jf(e){return function(){var t=this.parentNode;for(var n in this.__transition)if(+n!==e)return;t&&t.removeChild(this)}}function Qf(){return this.on("end.remove",jf(this._id))}function Jf(e){var t=this._name,n=this._id;typeof e!="function"&&(e=vo(e));for(var r=this._groups,o=r.length,i=new Array(o),s=0;s()=>e;function Sh(e,{sourceEvent:t,target:n,transform:r,dispatch:o}){Object.defineProperties(this,{type:{value:e,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:o}})}function Re(e,t,n){this.k=e,this.x=t,this.y=n}Re.prototype={constructor:Re,scale:function(e){return e===1?this:new Re(this.k*e,this.x,this.y)},translate:function(e,t){return e===0&t===0?this:new Re(this.k,this.x+this.k*e,this.y+this.k*t)},apply:function(e){return[e[0]*this.k+this.x,e[1]*this.k+this.y]},applyX:function(e){return e*this.k+this.x},applyY:function(e){return e*this.k+this.y},invert:function(e){return[(e[0]-this.x)/this.k,(e[1]-this.y)/this.k]},invertX:function(e){return(e-this.x)/this.k},invertY:function(e){return(e-this.y)/this.k},rescaleX:function(e){return e.copy().domain(e.range().map(this.invertX,this).map(e.invert,e))},rescaleY:function(e){return e.copy().domain(e.range().map(this.invertY,this).map(e.invert,e))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Ae=new Re(1,0,0);Re.prototype;function un(e){e.stopImmediatePropagation()}function pt(e){e.preventDefault(),e.stopImmediatePropagation()}function Nh(e){return(!e.ctrlKey||e.type==="wheel")&&!e.button}function Ch(){var e=this;return e instanceof SVGElement?(e=e.ownerSVGElement||e,e.hasAttribute("viewBox")?(e=e.viewBox.baseVal,[[e.x,e.y],[e.x+e.width,e.y+e.height]]):[[0,0],[e.width.baseVal.value,e.height.baseVal.value]]):[[0,0],[e.clientWidth,e.clientHeight]]}function Xo(){return this.__zoom||Ae}function kh(e){return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*(e.ctrlKey?10:1)}function Rh(){return navigator.maxTouchPoints||"ontouchstart"in this}function Ah(e,t,n){var r=e.invertX(t[0][0])-n[0][0],o=e.invertX(t[1][0])-n[1][0],i=e.invertY(t[0][1])-n[0][1],s=e.invertY(t[1][1])-n[1][1];return e.translate(o>r?(r+o)/2:Math.min(0,r)||Math.max(0,o),s>i?(i+s)/2:Math.min(0,i)||Math.max(0,s))}function Da(){var e=Nh,t=Ch,n=Ah,r=kh,o=Rh,i=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],a=250,c=Tc,l=Xt("start","zoom","end"),u,d,f,h=500,_=150,m=0,g=10;function p(w){w.property("__zoom",Xo).on("wheel.zoom",q,{passive:!1}).on("mousedown.zoom",k).on("dblclick.zoom",A).filter(o).on("touchstart.zoom",D).on("touchmove.zoom",$).on("touchend.zoom touchcancel.zoom",L).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}p.transform=function(w,R,N,O){var H=w.selection?w.selection():w;H.property("__zoom",Xo),w!==H?b(w,R,N,O):H.interrupt().each(function(){x(this,arguments).event(O).start().zoom(null,typeof R=="function"?R.apply(this,arguments):R).end()})},p.scaleBy=function(w,R,N,O){p.scaleTo(w,function(){var H=this.__zoom.k,M=typeof R=="function"?R.apply(this,arguments):R;return H*M},N,O)},p.scaleTo=function(w,R,N,O){p.transform(w,function(){var H=t.apply(this,arguments),M=this.__zoom,F=N==null?v(H):typeof N=="function"?N.apply(this,arguments):N,B=M.invert(F),G=typeof R=="function"?R.apply(this,arguments):R;return n(E(y(M,G),F,B),H,s)},N,O)},p.translateBy=function(w,R,N,O){p.transform(w,function(){return n(this.__zoom.translate(typeof R=="function"?R.apply(this,arguments):R,typeof N=="function"?N.apply(this,arguments):N),t.apply(this,arguments),s)},null,O)},p.translateTo=function(w,R,N,O,H){p.transform(w,function(){var M=t.apply(this,arguments),F=this.__zoom,B=O==null?v(M):typeof O=="function"?O.apply(this,arguments):O;return n(Ae.translate(B[0],B[1]).scale(F.k).translate(typeof R=="function"?-R.apply(this,arguments):-R,typeof N=="function"?-N.apply(this,arguments):-N),M,s)},O,H)};function y(w,R){return R=Math.max(i[0],Math.min(i[1],R)),R===w.k?w:new Re(R,w.x,w.y)}function E(w,R,N){var O=R[0]-N[0]*w.k,H=R[1]-N[1]*w.k;return O===w.x&&H===w.y?w:new Re(w.k,O,H)}function v(w){return[(+w[0][0]+ +w[1][0])/2,(+w[0][1]+ +w[1][1])/2]}function b(w,R,N,O){w.on("start.zoom",function(){x(this,arguments).event(O).start()}).on("interrupt.zoom end.zoom",function(){x(this,arguments).event(O).end()}).tween("zoom",function(){var H=this,M=arguments,F=x(H,M).event(O),B=t.apply(H,M),G=N==null?v(B):typeof N=="function"?N.apply(H,M):N,U=Math.max(B[1][0]-B[0][0],B[1][1]-B[0][1]),S=H.__zoom,I=typeof R=="function"?R.apply(H,M):R,z=c(S.invert(G).concat(U/S.k),I.invert(G).concat(U/I.k));return function(V){if(V===1)V=I;else{var Y=z(V),W=U/Y[2];V=new Re(W,G[0]-Y[0]*W,G[1]-Y[1]*W)}F.zoom(null,V)}})}function x(w,R,N){return!N&&w.__zooming||new C(w,R)}function C(w,R){this.that=w,this.args=R,this.active=0,this.sourceEvent=null,this.extent=t.apply(w,R),this.taps=0}C.prototype={event:function(w){return w&&(this.sourceEvent=w),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(w,R){return this.mouse&&w!=="mouse"&&(this.mouse[1]=R.invert(this.mouse[0])),this.touch0&&w!=="touch"&&(this.touch0[1]=R.invert(this.touch0[0])),this.touch1&&w!=="touch"&&(this.touch1[1]=R.invert(this.touch1[0])),this.that.__zoom=R,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(w){var R=ge(this.that).datum();l.call(w,this.that,new Sh(w,{sourceEvent:this.sourceEvent,target:p,transform:this.that.__zoom,dispatch:l}),R)}};function q(w,...R){if(!e.apply(this,arguments))return;var N=x(this,R).event(w),O=this.__zoom,H=Math.max(i[0],Math.min(i[1],O.k*Math.pow(2,r.apply(this,arguments)))),M=ye(w);if(N.wheel)(N.mouse[0][0]!==M[0]||N.mouse[0][1]!==M[1])&&(N.mouse[1]=O.invert(N.mouse[0]=M)),clearTimeout(N.wheel);else{if(O.k===H)return;N.mouse=[M,O.invert(M)],Lt(this),N.start()}pt(w),N.wheel=setTimeout(F,_),N.zoom("mouse",n(E(y(O,H),N.mouse[0],N.mouse[1]),N.extent,s));function F(){N.wheel=null,N.end()}}function k(w,...R){if(f||!e.apply(this,arguments))return;var N=w.currentTarget,O=x(this,R,!0).event(w),H=ge(w.view).on("mousemove.zoom",G,!0).on("mouseup.zoom",U,!0),M=ye(w,N),F=w.clientX,B=w.clientY;Ca(w.view),un(w),O.mouse=[M,this.__zoom.invert(M)],Lt(this),O.start();function G(S){if(pt(S),!O.moved){var I=S.clientX-F,z=S.clientY-B;O.moved=I*I+z*z>m}O.event(S).zoom("mouse",n(E(O.that.__zoom,O.mouse[0]=ye(S,N),O.mouse[1]),O.extent,s))}function U(S){H.on("mousemove.zoom mouseup.zoom",null),ka(S.view,O.moved),pt(S),O.event(S).end()}}function A(w,...R){if(e.apply(this,arguments)){var N=this.__zoom,O=ye(w.changedTouches?w.changedTouches[0]:w,this),H=N.invert(O),M=N.k*(w.shiftKey?.5:2),F=n(E(y(N,M),O,H),t.apply(this,R),s);pt(w),a>0?ge(this).transition().duration(a).call(b,F,O,w):ge(this).call(p.transform,F,O,w)}}function D(w,...R){if(e.apply(this,arguments)){var N=w.touches,O=N.length,H=x(this,R,w.changedTouches.length===O).event(w),M,F,B,G;for(un(w),F=0;F"[React Flow]: Seems like you have not used zustand provider as an ancestor. Help: https://reactflow.dev/error#001",error002:()=>"It looks like you've created a new nodeTypes or edgeTypes object. If this wasn't on purpose please define the nodeTypes/edgeTypes outside of the component or memoize them.",error003:e=>`Node type "${e}" not found. Using fallback type "default".`,error004:()=>"The React Flow parent container needs a width and a height to render the graph.",error005:()=>"Only child nodes can use a parent extent.",error006:()=>"Can't create edge. An edge needs a source and a target.",error007:e=>`The old edge with id=${e} does not exist.`,error009:e=>`Marker type "${e}" doesn't exist.`,error008:(e,t)=>`Couldn't create edge for ${e?"target":"source"} handle id: "${e?t.targetHandle:t.sourceHandle}", edge id: ${t.id}.`,error010:()=>"Handle: No node id found. Make sure to only use a Handle inside a custom Node.",error011:e=>`Edge type "${e}" not found. Using fallback type "default".`,error012:e=>`Node with id "${e}" does not exist, it may have been removed. This can happen when a node is deleted before the "onNodeClick" handler is called.`},za=Ie.error001();function re(e,t){const n=T.useContext(Jt);if(n===null)throw new Error(za);return ha(n,e,t)}const ae=()=>{const e=T.useContext(Jt);if(e===null)throw new Error(za);return T.useMemo(()=>({getState:e.getState,setState:e.setState,subscribe:e.subscribe,destroy:e.destroy}),[e])},Ih=e=>e.userSelectionActive?"none":"all";function bo({position:e,children:t,className:n,style:r,...o}){const i=re(Ih),s=`${e}`.split("-");return P.createElement("div",{className:ce(["react-flow__panel",n,...s]),style:{...r,pointerEvents:i},...o},t)}function qh({proOptions:e,position:t="bottom-right"}){return e?.hideAttribution?null:P.createElement(bo,{position:t,className:"react-flow__attribution","data-message":"Please only hide this attribution when you are subscribed to React Flow Pro: https://reactflow.dev/pro"},P.createElement("a",{href:"https://reactflow.dev",target:"_blank",rel:"noopener noreferrer","aria-label":"React Flow attribution"},"React Flow"))}const Th=({x:e,y:t,label:n,labelStyle:r={},labelShowBg:o=!0,labelBgStyle:i={},labelBgPadding:s=[2,4],labelBgBorderRadius:a=2,children:c,className:l,...u})=>{const d=T.useRef(null),[f,h]=T.useState({x:0,y:0,width:0,height:0}),_=ce(["react-flow__edge-textwrapper",l]);return T.useEffect(()=>{if(d.current){const m=d.current.getBBox();h({x:m.x,y:m.y,width:m.width,height:m.height})}},[n]),typeof n>"u"||!n?null:P.createElement("g",{transform:`translate(${e-f.width/2} ${t-f.height/2})`,className:_,visibility:f.width?"visible":"hidden",...u},o&&P.createElement("rect",{width:f.width+2*s[0],x:-s[0],y:-s[1],height:f.height+2*s[1],className:"react-flow__edge-textbg",style:i,rx:a,ry:a}),P.createElement("text",{className:"react-flow__edge-text",y:f.height/2,dy:"0.3em",ref:d,style:r},n),c)};var Ph=T.memo(Th);const xo=e=>({width:e.offsetWidth,height:e.offsetHeight}),ct=(e,t=0,n=1)=>Math.min(Math.max(e,t),n),So=(e={x:0,y:0},t)=>({x:ct(e.x,t[0][0],t[1][0]),y:ct(e.y,t[0][1],t[1][1])}),Ko=(e,t,n)=>en?-ct(Math.abs(e-n),1,50)/50:0,La=(e,t)=>{const n=Ko(e.x,35,t.width-35)*20,r=Ko(e.y,35,t.height-35)*20;return[n,r]},$a=e=>e.getRootNode?.()||window?.document,Oa=(e,t)=>({x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x2,t.x2),y2:Math.max(e.y2,t.y2)}),xt=({x:e,y:t,width:n,height:r})=>({x:e,y:t,x2:e+n,y2:t+r}),Fa=({x:e,y:t,x2:n,y2:r})=>({x:e,y:t,width:n-e,height:r-t}),jo=e=>({...e.positionAbsolute||{x:0,y:0},width:e.width||0,height:e.height||0}),Dh=(e,t)=>Fa(Oa(xt(e),xt(t))),to=(e,t)=>{const n=Math.max(0,Math.min(e.x+e.width,t.x+t.width)-Math.max(e.x,t.x)),r=Math.max(0,Math.min(e.y+e.height,t.y+t.height)-Math.max(e.y,t.y));return Math.ceil(n*r)},zh=e=>me(e.width)&&me(e.height)&&me(e.x)&&me(e.y),me=e=>!isNaN(e)&&isFinite(e),se=Symbol.for("internals"),Ha=["Enter"," ","Escape"],Lh=(e,t)=>{},$h=e=>"nativeEvent"in e;function no(e){const n=($h(e)?e.nativeEvent:e).composedPath?.()?.[0]||e.target;return["INPUT","SELECT","TEXTAREA"].includes(n?.nodeName)||n?.hasAttribute("contenteditable")||!!n?.closest(".nokey")}const Va=e=>"clientX"in e,De=(e,t)=>{const n=Va(e),r=n?e.clientX:e.touches?.[0].clientX,o=n?e.clientY:e.touches?.[0].clientY;return{x:r-(t?.left??0),y:o-(t?.top??0)}},Vt=()=>typeof navigator<"u"&&navigator?.userAgent?.indexOf("Mac")>=0,kt=({id:e,path:t,labelX:n,labelY:r,label:o,labelStyle:i,labelShowBg:s,labelBgStyle:a,labelBgPadding:c,labelBgBorderRadius:l,style:u,markerEnd:d,markerStart:f,interactionWidth:h=20})=>P.createElement(P.Fragment,null,P.createElement("path",{id:e,style:u,d:t,fill:"none",className:"react-flow__edge-path",markerEnd:d,markerStart:f}),h&&P.createElement("path",{d:t,fill:"none",strokeOpacity:0,strokeWidth:h,className:"react-flow__edge-interaction"}),o&&me(n)&&me(r)?P.createElement(Ph,{x:n,y:r,label:o,labelStyle:i,labelShowBg:s,labelBgStyle:a,labelBgPadding:c,labelBgBorderRadius:l}):null);kt.displayName="BaseEdge";function gt(e,t,n){return n===void 0?n:r=>{const o=t().edges.find(i=>i.id===e);o&&n(r,{...o})}}function Ba({sourceX:e,sourceY:t,targetX:n,targetY:r}){const o=Math.abs(n-e)/2,i=n{const[g,p,y]=Ua({sourceX:e,sourceY:t,sourcePosition:o,targetX:n,targetY:r,targetPosition:i});return P.createElement(kt,{path:g,labelX:p,labelY:y,label:s,labelStyle:a,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:_,interactionWidth:m})});No.displayName="SimpleBezierEdge";const Jo={[X.Left]:{x:-1,y:0},[X.Right]:{x:1,y:0},[X.Top]:{x:0,y:-1},[X.Bottom]:{x:0,y:1}},Oh=({source:e,sourcePosition:t=X.Bottom,target:n})=>t===X.Left||t===X.Right?e.xMath.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2));function Fh({source:e,sourcePosition:t=X.Bottom,target:n,targetPosition:r=X.Top,center:o,offset:i}){const s=Jo[t],a=Jo[r],c={x:e.x+s.x*i,y:e.y+s.y*i},l={x:n.x+a.x*i,y:n.y+a.y*i},u=Oh({source:c,sourcePosition:t,target:l}),d=u.x!==0?"x":"y",f=u[d];let h=[],_,m;const g={x:0,y:0},p={x:0,y:0},[y,E,v,b]=Ba({sourceX:e.x,sourceY:e.y,targetX:n.x,targetY:n.y});if(s[d]*a[d]===-1){_=o.x??y,m=o.y??E;const C=[{x:_,y:c.y},{x:_,y:l.y}],q=[{x:c.x,y:m},{x:l.x,y:m}];s[d]===f?h=d==="x"?C:q:h=d==="x"?q:C}else{const C=[{x:c.x,y:l.y}],q=[{x:l.x,y:c.y}];if(d==="x"?h=s.x===f?q:C:h=s.y===f?C:q,t===r){const L=Math.abs(e[d]-n[d]);if(L<=i){const w=Math.min(i-1,i-L);s[d]===f?g[d]=(c[d]>e[d]?-1:1)*w:p[d]=(l[d]>n[d]?-1:1)*w}}if(t!==r){const L=d==="x"?"y":"x",w=s[d]===a[L],R=c[L]>l[L],N=c[L]=$?(_=(k.x+A.x)/2,m=h[0].y):(_=h[0].x,m=(k.y+A.y)/2)}return[[e,{x:c.x+g.x,y:c.y+g.y},...h,{x:l.x+p.x,y:l.y+p.y},n],_,m,v,b]}function Hh(e,t,n,r){const o=Math.min(ei(e,t)/2,ei(t,n)/2,r),{x:i,y:s}=t;if(e.x===i&&i===n.x||e.y===s&&s===n.y)return`L${i} ${s}`;if(e.y===s){const l=e.x{let E="";return y>0&&y{const[p,y,E]=ro({sourceX:e,sourceY:t,sourcePosition:d,targetX:n,targetY:r,targetPosition:f,borderRadius:m?.borderRadius,offset:m?.offset});return P.createElement(kt,{path:p,labelX:y,labelY:E,label:o,labelStyle:i,labelShowBg:s,labelBgStyle:a,labelBgPadding:c,labelBgBorderRadius:l,style:u,markerEnd:h,markerStart:_,interactionWidth:g})});en.displayName="SmoothStepEdge";const Co=T.memo(e=>P.createElement(en,{...e,pathOptions:T.useMemo(()=>({borderRadius:0,offset:e.pathOptions?.offset}),[e.pathOptions?.offset])}));Co.displayName="StepEdge";function Vh({sourceX:e,sourceY:t,targetX:n,targetY:r}){const[o,i,s,a]=Ba({sourceX:e,sourceY:t,targetX:n,targetY:r});return[`M ${e},${t}L ${n},${r}`,o,i,s,a]}const ko=T.memo(({sourceX:e,sourceY:t,targetX:n,targetY:r,label:o,labelStyle:i,labelShowBg:s,labelBgStyle:a,labelBgPadding:c,labelBgBorderRadius:l,style:u,markerEnd:d,markerStart:f,interactionWidth:h})=>{const[_,m,g]=Vh({sourceX:e,sourceY:t,targetX:n,targetY:r});return P.createElement(kt,{path:_,labelX:m,labelY:g,label:o,labelStyle:i,labelShowBg:s,labelBgStyle:a,labelBgPadding:c,labelBgBorderRadius:l,style:u,markerEnd:d,markerStart:f,interactionWidth:h})});ko.displayName="StraightEdge";function Mt(e,t){return e>=0?.5*e:t*25*Math.sqrt(-e)}function ti({pos:e,x1:t,y1:n,x2:r,y2:o,c:i}){switch(e){case X.Left:return[t-Mt(t-r,i),n];case X.Right:return[t+Mt(r-t,i),n];case X.Top:return[t,n-Mt(n-o,i)];case X.Bottom:return[t,n+Mt(o-n,i)]}}function Ya({sourceX:e,sourceY:t,sourcePosition:n=X.Bottom,targetX:r,targetY:o,targetPosition:i=X.Top,curvature:s=.25}){const[a,c]=ti({pos:n,x1:e,y1:t,x2:r,y2:o,c:s}),[l,u]=ti({pos:i,x1:r,y1:o,x2:e,y2:t,c:s}),[d,f,h,_]=Ga({sourceX:e,sourceY:t,targetX:r,targetY:o,sourceControlX:a,sourceControlY:c,targetControlX:l,targetControlY:u});return[`M${e},${t} C${a},${c} ${l},${u} ${r},${o}`,d,f,h,_]}const Gt=T.memo(({sourceX:e,sourceY:t,targetX:n,targetY:r,sourcePosition:o=X.Bottom,targetPosition:i=X.Top,label:s,labelStyle:a,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:_,pathOptions:m,interactionWidth:g})=>{const[p,y,E]=Ya({sourceX:e,sourceY:t,sourcePosition:o,targetX:n,targetY:r,targetPosition:i,curvature:m?.curvature});return P.createElement(kt,{path:p,labelX:y,labelY:E,label:s,labelStyle:a,labelShowBg:c,labelBgStyle:l,labelBgPadding:u,labelBgBorderRadius:d,style:f,markerEnd:h,markerStart:_,interactionWidth:g})});Gt.displayName="BezierEdge";const Ro=T.createContext(null),Bh=Ro.Provider;Ro.Consumer;const Gh=()=>T.useContext(Ro),Uh=e=>"id"in e&&"source"in e&&"target"in e,Yh=({source:e,sourceHandle:t,target:n,targetHandle:r})=>`reactflow__edge-${e}${t||""}-${n}${r||""}`,oo=(e,t)=>typeof e>"u"?"":typeof e=="string"?e:`${t?`${t}__`:""}${Object.keys(e).sort().map(r=>`${r}=${e[r]}`).join("&")}`,Wh=(e,t)=>t.some(n=>n.source===e.source&&n.target===e.target&&(n.sourceHandle===e.sourceHandle||!n.sourceHandle&&!e.sourceHandle)&&(n.targetHandle===e.targetHandle||!n.targetHandle&&!e.targetHandle)),Zh=(e,t)=>{if(!e.source||!e.target)return t;let n;return Uh(e)?n={...e}:n={...e,id:Yh(e)},Wh(n,t)?t:t.concat(n)},io=({x:e,y:t},[n,r,o],i,[s,a])=>{const c={x:(e-n)/o,y:(t-r)/o};return i?{x:s*Math.round(c.x/s),y:a*Math.round(c.y/a)}:c},Wa=({x:e,y:t},[n,r,o])=>({x:e*o+n,y:t*o+r}),Ge=(e,t=[0,0])=>{if(!e)return{x:0,y:0,positionAbsolute:{x:0,y:0}};const n=(e.width??0)*t[0],r=(e.height??0)*t[1],o={x:e.position.x-n,y:e.position.y-r};return{...o,positionAbsolute:e.positionAbsolute?{x:e.positionAbsolute.x-n,y:e.positionAbsolute.y-r}:o}},tn=(e,t=[0,0])=>{if(e.length===0)return{x:0,y:0,width:0,height:0};const n=e.reduce((r,o)=>{const{x:i,y:s}=Ge(o,t).positionAbsolute;return Oa(r,xt({x:i,y:s,width:o.width||0,height:o.height||0}))},{x:1/0,y:1/0,x2:-1/0,y2:-1/0});return Fa(n)},Za=(e,t,[n,r,o]=[0,0,1],i=!1,s=!1,a=[0,0])=>{const c={x:(t.x-n)/o,y:(t.y-r)/o,width:t.width/o,height:t.height/o},l=[];return e.forEach(u=>{const{width:d,height:f,selectable:h=!0,hidden:_=!1}=u;if(s&&!h||_)return!1;const{positionAbsolute:m}=Ge(u,a),g={x:m.x,y:m.y,width:d||0,height:f||0},p=to(c,g),y=typeof d>"u"||typeof f>"u"||d===null||f===null,E=i&&p>0,v=(d||0)*(f||0);(y||E||p>=v||u.dragging)&&l.push(u)}),l},Xa=(e,t)=>{const n=e.map(r=>r.id);return t.filter(r=>n.includes(r.source)||n.includes(r.target))},Ka=(e,t,n,r,o,i=.1)=>{const s=t/(e.width*(1+i)),a=n/(e.height*(1+i)),c=Math.min(s,a),l=ct(c,r,o),u=e.x+e.width/2,d=e.y+e.height/2,f=t/2-u*l,h=n/2-d*l;return{x:f,y:h,zoom:l}},Ve=(e,t=0)=>e.transition().duration(t);function ni(e,t,n,r){return(t[n]||[]).reduce((o,i)=>(`${e.id}-${i.id}-${n}`!==r&&o.push({id:i.id||null,type:n,nodeId:e.id,x:(e.positionAbsolute?.x??0)+i.x+i.width/2,y:(e.positionAbsolute?.y??0)+i.y+i.height/2}),o),[])}function Xh(e,t,n,r,o,i){const{x:s,y:a}=De(e),l=t.elementsFromPoint(s,a).find(_=>_.classList.contains("react-flow__handle"));if(l){const _=l.getAttribute("data-nodeid");if(_){const m=Ao(void 0,l),g=l.getAttribute("data-handleid"),p=i({nodeId:_,id:g,type:m});if(p){const y=o.find(E=>E.nodeId===_&&E.type===m&&E.id===g);return{handle:{id:g,type:m,nodeId:_,x:y?.x||n.x,y:y?.y||n.y},validHandleResult:p}}}}let u=[],d=1/0;if(o.forEach(_=>{const m=Math.sqrt((_.x-n.x)**2+(_.y-n.y)**2);if(m<=r){const g=i(_);m<=d&&(m_.isValid),h=u.some(({handle:_})=>_.type==="target");return u.find(({handle:_,validHandleResult:m})=>h?_.type==="target":f?m.isValid:!0)||u[0]}const Kh={source:null,target:null,sourceHandle:null,targetHandle:null},ja=()=>({handleDomNode:null,isValid:!1,connection:Kh,endHandle:null});function Qa(e,t,n,r,o,i,s){const a=o==="target",c=s.querySelector(`.react-flow__handle[data-id="${e?.nodeId}-${e?.id}-${e?.type}"]`),l={...ja(),handleDomNode:c};if(c){const u=Ao(void 0,c),d=c.getAttribute("data-nodeid"),f=c.getAttribute("data-handleid"),h=c.classList.contains("connectable"),_=c.classList.contains("connectableend"),m={source:a?d:n,sourceHandle:a?f:r,target:a?n:d,targetHandle:a?r:f};l.connection=m,h&&_&&(t===Ye.Strict?a&&u==="source"||!a&&u==="target":d!==n||f!==r)&&(l.endHandle={nodeId:d,handleId:f,type:u},l.isValid=i(m))}return l}function jh({nodes:e,nodeId:t,handleId:n,handleType:r}){return e.reduce((o,i)=>{if(i[se]){const{handleBounds:s}=i[se];let a=[],c=[];s&&(a=ni(i,s,"source",`${t}-${n}-${r}`),c=ni(i,s,"target",`${t}-${n}-${r}`)),o.push(...a,...c)}return o},[])}function Ao(e,t){return e||(t?.classList.contains("target")?"target":t?.classList.contains("source")?"source":null)}function cn(e){e?.classList.remove("valid","connecting","react-flow__handle-valid","react-flow__handle-connecting")}function Qh(e,t){let n=null;return t?n="valid":e&&!t&&(n="invalid"),n}function Ja({event:e,handleId:t,nodeId:n,onConnect:r,isTarget:o,getState:i,setState:s,isValidConnection:a,edgeUpdaterType:c,onReconnectEnd:l}){const u=$a(e.target),{connectionMode:d,domNode:f,autoPanOnConnect:h,connectionRadius:_,onConnectStart:m,panBy:g,getNodes:p,cancelConnection:y}=i();let E=0,v;const{x:b,y:x}=De(e),C=u?.elementFromPoint(b,x),q=Ao(c,C),k=f?.getBoundingClientRect();if(!k||!q)return;let A,D=De(e,k),$=!1,L=null,w=!1,R=null;const N=jh({nodes:p(),nodeId:n,handleId:t,handleType:q}),O=()=>{if(!h)return;const[F,B]=La(D,k);g({x:F,y:B}),E=requestAnimationFrame(O)};s({connectionPosition:D,connectionStatus:null,connectionNodeId:n,connectionHandleId:t,connectionHandleType:q,connectionStartHandle:{nodeId:n,handleId:t,type:q},connectionEndHandle:null}),m?.(e,{nodeId:n,handleId:t,handleType:q});function H(F){const{transform:B}=i();D=De(F,k);const{handle:G,validHandleResult:U}=Xh(F,u,io(D,B,!1,[1,1]),_,N,S=>Qa(S,d,n,t,o?"target":"source",a,u));if(v=G,$||(O(),$=!0),R=U.handleDomNode,L=U.connection,w=U.isValid,s({connectionPosition:v&&w?Wa({x:v.x,y:v.y},B):D,connectionStatus:Qh(!!v,w),connectionEndHandle:U.endHandle}),!v&&!w&&!R)return cn(A);L.source!==L.target&&R&&(cn(A),A=R,R.classList.add("connecting","react-flow__handle-connecting"),R.classList.toggle("valid",w),R.classList.toggle("react-flow__handle-valid",w))}function M(F){(v||R)&&L&&w&&r?.(L),i().onConnectEnd?.(F),c&&l?.(F),cn(A),y(),cancelAnimationFrame(E),$=!1,w=!1,L=null,R=null,u.removeEventListener("mousemove",H),u.removeEventListener("mouseup",M),u.removeEventListener("touchmove",H),u.removeEventListener("touchend",M)}u.addEventListener("mousemove",H),u.addEventListener("mouseup",M),u.addEventListener("touchmove",H),u.addEventListener("touchend",M)}const ri=()=>!0,Jh=e=>({connectionStartHandle:e.connectionStartHandle,connectOnClick:e.connectOnClick,noPanClassName:e.noPanClassName}),ep=(e,t,n)=>r=>{const{connectionStartHandle:o,connectionEndHandle:i,connectionClickStartHandle:s}=r;return{connecting:o?.nodeId===e&&o?.handleId===t&&o?.type===n||i?.nodeId===e&&i?.handleId===t&&i?.type===n,clickConnecting:s?.nodeId===e&&s?.handleId===t&&s?.type===n}},eu=T.forwardRef(({type:e="source",position:t=X.Top,isValidConnection:n,isConnectable:r=!0,isConnectableStart:o=!0,isConnectableEnd:i=!0,id:s,onConnect:a,children:c,className:l,onMouseDown:u,onTouchStart:d,...f},h)=>{const _=s||null,m=e==="target",g=ae(),p=Gh(),{connectOnClick:y,noPanClassName:E}=re(Jh,ue),{connecting:v,clickConnecting:b}=re(ep(p,_,e),ue);p||g.getState().onError?.("010",Ie.error010());const x=k=>{const{defaultEdgeOptions:A,onConnect:D,hasDefaultEdges:$}=g.getState(),L={...A,...k};if($){const{edges:w,setEdges:R}=g.getState();R(Zh(L,w))}D?.(L),a?.(L)},C=k=>{if(!p)return;const A=Va(k);o&&(A&&k.button===0||!A)&&Ja({event:k,handleId:_,nodeId:p,onConnect:x,isTarget:m,getState:g.getState,setState:g.setState,isValidConnection:n||g.getState().isValidConnection||ri}),A?u?.(k):d?.(k)},q=k=>{const{onClickConnectStart:A,onClickConnectEnd:D,connectionClickStartHandle:$,connectionMode:L,isValidConnection:w}=g.getState();if(!p||!$&&!o)return;if(!$){A?.(k,{nodeId:p,handleId:_,handleType:e}),g.setState({connectionClickStartHandle:{nodeId:p,type:e,handleId:_}});return}const R=$a(k.target),N=n||w||ri,{connection:O,isValid:H}=Qa({nodeId:p,id:_,type:e},L,$.nodeId,$.handleId||null,$.type,N,R);H&&x(O),D?.(k),g.setState({connectionClickStartHandle:null})};return P.createElement("div",{"data-handleid":_,"data-nodeid":p,"data-handlepos":t,"data-id":`${p}-${_}-${e}`,className:ce(["react-flow__handle",`react-flow__handle-${t}`,"nodrag",E,l,{source:!m,target:m,connectable:r,connectablestart:o,connectableend:i,connecting:b,connectionindicator:r&&(o&&!v||i&&v)}]),onMouseDown:C,onTouchStart:C,onClick:y?q:void 0,ref:h,...f},c)});eu.displayName="Handle";var Ut=T.memo(eu);const tu=({data:e,isConnectable:t,targetPosition:n=X.Top,sourcePosition:r=X.Bottom})=>P.createElement(P.Fragment,null,P.createElement(Ut,{type:"target",position:n,isConnectable:t}),e?.label,P.createElement(Ut,{type:"source",position:r,isConnectable:t}));tu.displayName="DefaultNode";var so=T.memo(tu);const nu=({data:e,isConnectable:t,sourcePosition:n=X.Bottom})=>P.createElement(P.Fragment,null,e?.label,P.createElement(Ut,{type:"source",position:n,isConnectable:t}));nu.displayName="InputNode";var ru=T.memo(nu);const ou=({data:e,isConnectable:t,targetPosition:n=X.Top})=>P.createElement(P.Fragment,null,P.createElement(Ut,{type:"target",position:n,isConnectable:t}),e?.label);ou.displayName="OutputNode";var iu=T.memo(ou);const Mo=()=>null;Mo.displayName="GroupNode";const tp=e=>({selectedNodes:e.getNodes().filter(t=>t.selected),selectedEdges:e.edges.filter(t=>t.selected).map(t=>({...t}))}),It=e=>e.id;function np(e,t){return ue(e.selectedNodes.map(It),t.selectedNodes.map(It))&&ue(e.selectedEdges.map(It),t.selectedEdges.map(It))}const su=T.memo(({onSelectionChange:e})=>{const t=ae(),{selectedNodes:n,selectedEdges:r}=re(tp,np);return T.useEffect(()=>{const o={nodes:n,edges:r};e?.(o),t.getState().onSelectionChange.forEach(i=>i(o))},[n,r,e]),null});su.displayName="SelectionListener";const rp=e=>!!e.onSelectionChange;function op({onSelectionChange:e}){const t=re(rp);return e||t?P.createElement(su,{onSelectionChange:e}):null}const ip=e=>({setNodes:e.setNodes,setEdges:e.setEdges,setDefaultNodesAndEdges:e.setDefaultNodesAndEdges,setMinZoom:e.setMinZoom,setMaxZoom:e.setMaxZoom,setTranslateExtent:e.setTranslateExtent,setNodeExtent:e.setNodeExtent,reset:e.reset});function et(e,t){T.useEffect(()=>{typeof e<"u"&&t(e)},[e])}function j(e,t,n){T.useEffect(()=>{typeof t<"u"&&n({[e]:t})},[t])}const sp=({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:o,onConnectStart:i,onConnectEnd:s,onClickConnectStart:a,onClickConnectEnd:c,nodesDraggable:l,nodesConnectable:u,nodesFocusable:d,edgesFocusable:f,edgesUpdatable:h,elevateNodesOnSelect:_,minZoom:m,maxZoom:g,nodeExtent:p,onNodesChange:y,onEdgesChange:E,elementsSelectable:v,connectionMode:b,snapGrid:x,snapToGrid:C,translateExtent:q,connectOnClick:k,defaultEdgeOptions:A,fitView:D,fitViewOptions:$,onNodesDelete:L,onEdgesDelete:w,onNodeDrag:R,onNodeDragStart:N,onNodeDragStop:O,onSelectionDrag:H,onSelectionDragStart:M,onSelectionDragStop:F,noPanClassName:B,nodeOrigin:G,rfId:U,autoPanOnConnect:S,autoPanOnNodeDrag:I,onError:z,connectionRadius:V,isValidConnection:Y,nodeDragThreshold:W})=>{const{setNodes:K,setEdges:ee,setDefaultNodesAndEdges:ie,setMinZoom:te,setMaxZoom:Q,setTranslateExtent:ne,setNodeExtent:le,reset:J}=re(ip,ue),Z=ae();return T.useEffect(()=>{const fe=r?.map(Ne=>({...Ne,...A}));return ie(n,fe),()=>{J()}},[]),j("defaultEdgeOptions",A,Z.setState),j("connectionMode",b,Z.setState),j("onConnect",o,Z.setState),j("onConnectStart",i,Z.setState),j("onConnectEnd",s,Z.setState),j("onClickConnectStart",a,Z.setState),j("onClickConnectEnd",c,Z.setState),j("nodesDraggable",l,Z.setState),j("nodesConnectable",u,Z.setState),j("nodesFocusable",d,Z.setState),j("edgesFocusable",f,Z.setState),j("edgesUpdatable",h,Z.setState),j("elementsSelectable",v,Z.setState),j("elevateNodesOnSelect",_,Z.setState),j("snapToGrid",C,Z.setState),j("snapGrid",x,Z.setState),j("onNodesChange",y,Z.setState),j("onEdgesChange",E,Z.setState),j("connectOnClick",k,Z.setState),j("fitViewOnInit",D,Z.setState),j("fitViewOnInitOptions",$,Z.setState),j("onNodesDelete",L,Z.setState),j("onEdgesDelete",w,Z.setState),j("onNodeDrag",R,Z.setState),j("onNodeDragStart",N,Z.setState),j("onNodeDragStop",O,Z.setState),j("onSelectionDrag",H,Z.setState),j("onSelectionDragStart",M,Z.setState),j("onSelectionDragStop",F,Z.setState),j("noPanClassName",B,Z.setState),j("nodeOrigin",G,Z.setState),j("rfId",U,Z.setState),j("autoPanOnConnect",S,Z.setState),j("autoPanOnNodeDrag",I,Z.setState),j("onError",z,Z.setState),j("connectionRadius",V,Z.setState),j("isValidConnection",Y,Z.setState),j("nodeDragThreshold",W,Z.setState),et(e,K),et(t,ee),et(m,te),et(g,Q),et(q,ne),et(p,le),null},oi={display:"none"},ap={position:"absolute",width:1,height:1,margin:-1,border:0,padding:0,overflow:"hidden",clip:"rect(0px, 0px, 0px, 0px)",clipPath:"inset(100%)"},au="react-flow__node-desc",uu="react-flow__edge-desc",up="react-flow__aria-live",cp=e=>e.ariaLiveMessage;function lp({rfId:e}){const t=re(cp);return P.createElement("div",{id:`${up}-${e}`,"aria-live":"assertive","aria-atomic":"true",style:ap},t)}function dp({rfId:e,disableKeyboardA11y:t}){return P.createElement(P.Fragment,null,P.createElement("div",{id:`${au}-${e}`,style:oi},"Press enter or space to select a node.",!t&&"You can then use the arrow keys to move the node around."," Press delete to remove it and escape to cancel."," "),P.createElement("div",{id:`${uu}-${e}`,style:oi},"Press enter or space to select an edge. You can then press delete to remove it or escape to cancel."),!t&&P.createElement(lp,{rfId:e}))}var Nt=(e=null,t={actInsideInputWithModifier:!0})=>{const[n,r]=T.useState(!1),o=T.useRef(!1),i=T.useRef(new Set([])),[s,a]=T.useMemo(()=>{if(e!==null){const l=(Array.isArray(e)?e:[e]).filter(d=>typeof d=="string").map(d=>d.split("+")),u=l.reduce((d,f)=>d.concat(...f),[]);return[l,u]}return[[],[]]},[e]);return T.useEffect(()=>{const c=typeof document<"u"?document:null,l=t?.target||c;if(e!==null){const u=h=>{if(o.current=h.ctrlKey||h.metaKey||h.shiftKey,(!o.current||o.current&&!t.actInsideInputWithModifier)&&no(h))return!1;const m=si(h.code,a);i.current.add(h[m]),ii(s,i.current,!1)&&(h.preventDefault(),r(!0))},d=h=>{if((!o.current||o.current&&!t.actInsideInputWithModifier)&&no(h))return!1;const m=si(h.code,a);ii(s,i.current,!0)?(r(!1),i.current.clear()):i.current.delete(h[m]),h.key==="Meta"&&i.current.clear(),o.current=!1},f=()=>{i.current.clear(),r(!1)};return l?.addEventListener("keydown",u),l?.addEventListener("keyup",d),window.addEventListener("blur",f),()=>{l?.removeEventListener("keydown",u),l?.removeEventListener("keyup",d),window.removeEventListener("blur",f)}}},[e,r]),n};function ii(e,t,n){return e.filter(r=>n||r.length===t.size).some(r=>r.every(o=>t.has(o)))}function si(e,t){return t.includes(e)?"code":"key"}function cu(e,t,n,r){const o=e.parentNode||e.parentId;if(!o)return n;const i=t.get(o),s=Ge(i,r);return cu(i,t,{x:(n.x??0)+s.x,y:(n.y??0)+s.y,z:(i[se]?.z??0)>(n.z??0)?i[se]?.z??0:n.z??0},r)}function lu(e,t,n){e.forEach(r=>{const o=r.parentNode||r.parentId;if(o&&!e.has(o))throw new Error(`Parent node ${o} not found`);if(o||n?.[r.id]){const{x:i,y:s,z:a}=cu(r,e,{...r.position,z:r[se]?.z??0},t);r.positionAbsolute={x:i,y:s},r[se].z=a,n?.[r.id]&&(r[se].isParent=!0)}})}function ln(e,t,n,r){const o=new Map,i={},s=r?1e3:0;return e.forEach(a=>{const c=(me(a.zIndex)?a.zIndex:0)+(a.selected?s:0),l=t.get(a.id),u={...a,positionAbsolute:{x:a.position.x,y:a.position.y}},d=a.parentNode||a.parentId;d&&(i[d]=!0);const f=l?.type&&l?.type!==a.type;Object.defineProperty(u,se,{enumerable:!1,value:{handleBounds:f?void 0:l?.[se]?.handleBounds,z:c}}),o.set(a.id,u)}),lu(o,n,i),o}function du(e,t={}){const{getNodes:n,width:r,height:o,minZoom:i,maxZoom:s,d3Zoom:a,d3Selection:c,fitViewOnInitDone:l,fitViewOnInit:u,nodeOrigin:d}=e(),f=t.initial&&!l&&u;if(a&&c&&(f||!t.initial)){const _=n().filter(g=>{const p=t.includeHiddenNodes?g.width&&g.height:!g.hidden;return t.nodes?.length?p&&t.nodes.some(y=>y.id===g.id):p}),m=_.every(g=>g.width&&g.height);if(_.length>0&&m){const g=tn(_,d),{x:p,y,zoom:E}=Ka(g,r,o,t.minZoom??i,t.maxZoom??s,t.padding??.1),v=Ae.translate(p,y).scale(E);return typeof t.duration=="number"&&t.duration>0?a.transform(Ve(c,t.duration),v):a.transform(c,v),!0}}return!1}function fp(e,t){return e.forEach(n=>{const r=t.get(n.id);r&&t.set(r.id,{...r,[se]:r[se],selected:n.selected})}),new Map(t)}function hp(e,t){return t.map(n=>{const r=e.find(o=>o.id===n.id);return r&&(n.selected=r.selected),n})}function qt({changedNodes:e,changedEdges:t,get:n,set:r}){const{nodeInternals:o,edges:i,onNodesChange:s,onEdgesChange:a,hasDefaultNodes:c,hasDefaultEdges:l}=n();e?.length&&(c&&r({nodeInternals:fp(e,o)}),s?.(e)),t?.length&&(l&&r({edges:hp(t,i)}),a?.(t))}const tt=()=>{},pp={zoomIn:tt,zoomOut:tt,zoomTo:tt,getZoom:()=>1,setViewport:tt,getViewport:()=>({x:0,y:0,zoom:1}),fitView:()=>!1,setCenter:tt,fitBounds:tt,project:e=>e,screenToFlowPosition:e=>e,flowToScreenPosition:e=>e,viewportInitialized:!1},gp=e=>({d3Zoom:e.d3Zoom,d3Selection:e.d3Selection}),mp=()=>{const e=ae(),{d3Zoom:t,d3Selection:n}=re(gp,ue);return T.useMemo(()=>n&&t?{zoomIn:o=>t.scaleBy(Ve(n,o?.duration),1.2),zoomOut:o=>t.scaleBy(Ve(n,o?.duration),1/1.2),zoomTo:(o,i)=>t.scaleTo(Ve(n,i?.duration),o),getZoom:()=>e.getState().transform[2],setViewport:(o,i)=>{const[s,a,c]=e.getState().transform,l=Ae.translate(o.x??s,o.y??a).scale(o.zoom??c);t.transform(Ve(n,i?.duration),l)},getViewport:()=>{const[o,i,s]=e.getState().transform;return{x:o,y:i,zoom:s}},fitView:o=>du(e.getState,o),setCenter:(o,i,s)=>{const{width:a,height:c,maxZoom:l}=e.getState(),u=typeof s?.zoom<"u"?s.zoom:l,d=a/2-o*u,f=c/2-i*u,h=Ae.translate(d,f).scale(u);t.transform(Ve(n,s?.duration),h)},fitBounds:(o,i)=>{const{width:s,height:a,minZoom:c,maxZoom:l}=e.getState(),{x:u,y:d,zoom:f}=Ka(o,s,a,c,l,i?.padding??.1),h=Ae.translate(u,d).scale(f);t.transform(Ve(n,i?.duration),h)},project:o=>{const{transform:i,snapToGrid:s,snapGrid:a}=e.getState();return console.warn("[DEPRECATED] `project` is deprecated. Instead use `screenToFlowPosition`. There is no need to subtract the react flow bounds anymore! https://reactflow.dev/api-reference/types/react-flow-instance#screen-to-flow-position"),io(o,i,s,a)},screenToFlowPosition:o=>{const{transform:i,snapToGrid:s,snapGrid:a,domNode:c}=e.getState();if(!c)return o;const{x:l,y:u}=c.getBoundingClientRect(),d={x:o.x-l,y:o.y-u};return io(d,i,s,a)},flowToScreenPosition:o=>{const{transform:i,domNode:s}=e.getState();if(!s)return o;const{x:a,y:c}=s.getBoundingClientRect(),l=Wa(o,i);return{x:l.x+a,y:l.y+c}},viewportInitialized:!0}:pp,[t,n])};function Io(){const e=mp(),t=ae(),n=T.useCallback(()=>t.getState().getNodes().map(m=>({...m})),[]),r=T.useCallback(m=>t.getState().nodeInternals.get(m),[]),o=T.useCallback(()=>{const{edges:m=[]}=t.getState();return m.map(g=>({...g}))},[]),i=T.useCallback(m=>{const{edges:g=[]}=t.getState();return g.find(p=>p.id===m)},[]),s=T.useCallback(m=>{const{getNodes:g,setNodes:p,hasDefaultNodes:y,onNodesChange:E}=t.getState(),v=g(),b=typeof m=="function"?m(v):m;if(y)p(b);else if(E){const x=b.length===0?v.map(C=>({type:"remove",id:C.id})):b.map(C=>({item:C,type:"reset"}));E(x)}},[]),a=T.useCallback(m=>{const{edges:g=[],setEdges:p,hasDefaultEdges:y,onEdgesChange:E}=t.getState(),v=typeof m=="function"?m(g):m;if(y)p(v);else if(E){const b=v.length===0?g.map(x=>({type:"remove",id:x.id})):v.map(x=>({item:x,type:"reset"}));E(b)}},[]),c=T.useCallback(m=>{const g=Array.isArray(m)?m:[m],{getNodes:p,setNodes:y,hasDefaultNodes:E,onNodesChange:v}=t.getState();if(E){const x=[...p(),...g];y(x)}else if(v){const b=g.map(x=>({item:x,type:"add"}));v(b)}},[]),l=T.useCallback(m=>{const g=Array.isArray(m)?m:[m],{edges:p=[],setEdges:y,hasDefaultEdges:E,onEdgesChange:v}=t.getState();if(E)y([...p,...g]);else if(v){const b=g.map(x=>({item:x,type:"add"}));v(b)}},[]),u=T.useCallback(()=>{const{getNodes:m,edges:g=[],transform:p}=t.getState(),[y,E,v]=p;return{nodes:m().map(b=>({...b})),edges:g.map(b=>({...b})),viewport:{x:y,y:E,zoom:v}}},[]),d=T.useCallback(({nodes:m,edges:g})=>{const{nodeInternals:p,getNodes:y,edges:E,hasDefaultNodes:v,hasDefaultEdges:b,onNodesDelete:x,onEdgesDelete:C,onNodesChange:q,onEdgesChange:k}=t.getState(),A=(m||[]).map(R=>R.id),D=(g||[]).map(R=>R.id),$=y().reduce((R,N)=>{const O=N.parentNode||N.parentId,H=!A.includes(N.id)&&O&&R.find(F=>F.id===O);return(typeof N.deletable=="boolean"?N.deletable:!0)&&(A.includes(N.id)||H)&&R.push(N),R},[]),L=E.filter(R=>typeof R.deletable=="boolean"?R.deletable:!0),w=L.filter(R=>D.includes(R.id));if($||w){const R=Xa($,L),N=[...w,...R],O=N.reduce((H,M)=>(H.includes(M.id)||H.push(M.id),H),[]);if((b||v)&&(b&&t.setState({edges:E.filter(H=>!O.includes(H.id))}),v&&($.forEach(H=>{p.delete(H.id)}),t.setState({nodeInternals:new Map(p)}))),O.length>0&&(C?.(N),k&&k(O.map(H=>({id:H,type:"remove"})))),$.length>0&&(x?.($),q)){const H=$.map(M=>({id:M.id,type:"remove"}));q(H)}}},[]),f=T.useCallback(m=>{const g=zh(m),p=g?null:t.getState().nodeInternals.get(m.id);return!g&&!p?[null,null,g]:[g?m:jo(p),p,g]},[]),h=T.useCallback((m,g=!0,p)=>{const[y,E,v]=f(m);return y?(p||t.getState().getNodes()).filter(b=>{if(!v&&(b.id===E.id||!b.positionAbsolute))return!1;const x=jo(b),C=to(x,y);return g&&C>0||C>=y.width*y.height}):[]},[]),_=T.useCallback((m,g,p=!0)=>{const[y]=f(m);if(!y)return!1;const E=to(y,g);return p&&E>0||E>=y.width*y.height},[]);return T.useMemo(()=>({...e,getNodes:n,getNode:r,getEdges:o,getEdge:i,setNodes:s,setEdges:a,addNodes:c,addEdges:l,toObject:u,deleteElements:d,getIntersectingNodes:h,isNodeIntersecting:_}),[e,n,r,o,i,s,a,c,l,u,d,h,_])}const vp={actInsideInputWithModifier:!1};var yp=({deleteKeyCode:e,multiSelectionKeyCode:t})=>{const n=ae(),{deleteElements:r}=Io(),o=Nt(e,vp),i=Nt(t);T.useEffect(()=>{if(o){const{edges:s,getNodes:a}=n.getState(),c=a().filter(u=>u.selected),l=s.filter(u=>u.selected);r({nodes:c,edges:l}),n.setState({nodesSelectionActive:!1})}},[o]),T.useEffect(()=>{n.setState({multiSelectionActive:i})},[i])};function wp(e){const t=ae();T.useEffect(()=>{let n;const r=()=>{if(!e.current)return;const o=xo(e.current);(o.height===0||o.width===0)&&t.getState().onError?.("004",Ie.error004()),t.setState({width:o.width||500,height:o.height||500})};return r(),window.addEventListener("resize",r),e.current&&(n=new ResizeObserver(()=>r()),n.observe(e.current)),()=>{window.removeEventListener("resize",r),n&&e.current&&n.unobserve(e.current)}},[])}const qo={position:"absolute",width:"100%",height:"100%",top:0,left:0},_p=(e,t)=>e.x!==t.x||e.y!==t.y||e.zoom!==t.k,Tt=e=>({x:e.x,y:e.y,zoom:e.k}),nt=(e,t)=>e.target.closest(`.${t}`),ai=(e,t)=>t===2&&Array.isArray(e)&&e.includes(2),ui=e=>{const t=e.ctrlKey&&Vt()?10:1;return-e.deltaY*(e.deltaMode===1?.05:e.deltaMode?1:.002)*t},Ep=e=>({d3Zoom:e.d3Zoom,d3Selection:e.d3Selection,d3ZoomHandler:e.d3ZoomHandler,userSelectionActive:e.userSelectionActive}),bp=({onMove:e,onMoveStart:t,onMoveEnd:n,onPaneContextMenu:r,zoomOnScroll:o=!0,zoomOnPinch:i=!0,panOnScroll:s=!1,panOnScrollSpeed:a=.5,panOnScrollMode:c=Be.Free,zoomOnDoubleClick:l=!0,elementsSelectable:u,panOnDrag:d=!0,defaultViewport:f,translateExtent:h,minZoom:_,maxZoom:m,zoomActivationKeyCode:g,preventScrolling:p=!0,children:y,noWheelClassName:E,noPanClassName:v})=>{const b=T.useRef(),x=ae(),C=T.useRef(!1),q=T.useRef(!1),k=T.useRef(null),A=T.useRef({x:0,y:0,zoom:0}),{d3Zoom:D,d3Selection:$,d3ZoomHandler:L,userSelectionActive:w}=re(Ep,ue),R=Nt(g),N=T.useRef(0),O=T.useRef(!1),H=T.useRef();return wp(k),T.useEffect(()=>{if(k.current){const M=k.current.getBoundingClientRect(),F=Da().scaleExtent([_,m]).translateExtent(h),B=ge(k.current).call(F),G=Ae.translate(f.x,f.y).scale(ct(f.zoom,_,m)),U=[[0,0],[M.width,M.height]],S=F.constrain()(G,U,h);F.transform(B,S),F.wheelDelta(ui),x.setState({d3Zoom:F,d3Selection:B,d3ZoomHandler:B.on("wheel.zoom"),transform:[S.x,S.y,S.k],domNode:k.current.closest(".react-flow")})}},[]),T.useEffect(()=>{$&&D&&(s&&!R&&!w?$.on("wheel.zoom",M=>{if(nt(M,E))return!1;M.preventDefault(),M.stopImmediatePropagation();const F=$.property("__zoom").k||1;if(M.ctrlKey&&i){const Y=ye(M),W=ui(M),K=F*Math.pow(2,W);D.scaleTo($,K,Y,M);return}const B=M.deltaMode===1?20:1;let G=c===Be.Vertical?0:M.deltaX*B,U=c===Be.Horizontal?0:M.deltaY*B;!Vt()&&M.shiftKey&&c!==Be.Vertical&&(G=M.deltaY*B,U=0),D.translateBy($,-(G/F)*a,-(U/F)*a,{internal:!0});const S=Tt($.property("__zoom")),{onViewportChangeStart:I,onViewportChange:z,onViewportChangeEnd:V}=x.getState();clearTimeout(H.current),O.current||(O.current=!0,t?.(M,S),I?.(S)),O.current&&(e?.(M,S),z?.(S),H.current=setTimeout(()=>{n?.(M,S),V?.(S),O.current=!1},150))},{passive:!1}):typeof L<"u"&&$.on("wheel.zoom",function(M,F){if(!p&&M.type==="wheel"&&!M.ctrlKey||nt(M,E))return null;M.preventDefault(),L.call(this,M,F)},{passive:!1}))},[w,s,c,$,D,L,R,i,p,E,t,e,n]),T.useEffect(()=>{D&&D.on("start",M=>{if(!M.sourceEvent||M.sourceEvent.internal)return null;N.current=M.sourceEvent?.button;const{onViewportChangeStart:F}=x.getState(),B=Tt(M.transform);C.current=!0,A.current=B,M.sourceEvent?.type==="mousedown"&&x.setState({paneDragging:!0}),F?.(B),t?.(M.sourceEvent,B)})},[D,t]),T.useEffect(()=>{D&&(w&&!C.current?D.on("zoom",null):w||D.on("zoom",M=>{const{onViewportChange:F}=x.getState();if(x.setState({transform:[M.transform.x,M.transform.y,M.transform.k]}),q.current=!!(r&&ai(d,N.current??0)),(e||F)&&!M.sourceEvent?.internal){const B=Tt(M.transform);F?.(B),e?.(M.sourceEvent,B)}}))},[w,D,e,d,r]),T.useEffect(()=>{D&&D.on("end",M=>{if(!M.sourceEvent||M.sourceEvent.internal)return null;const{onViewportChangeEnd:F}=x.getState();if(C.current=!1,x.setState({paneDragging:!1}),r&&ai(d,N.current??0)&&!q.current&&r(M.sourceEvent),q.current=!1,(n||F)&&_p(A.current,M.transform)){const B=Tt(M.transform);A.current=B,clearTimeout(b.current),b.current=setTimeout(()=>{F?.(B),n?.(M.sourceEvent,B)},s?150:0)}})},[D,s,d,n,r]),T.useEffect(()=>{D&&D.filter(M=>{const F=R||o,B=i&&M.ctrlKey;if((d===!0||Array.isArray(d)&&d.includes(1))&&M.button===1&&M.type==="mousedown"&&(nt(M,"react-flow__node")||nt(M,"react-flow__edge")))return!0;if(!d&&!F&&!s&&!l&&!i||w||!l&&M.type==="dblclick"||nt(M,E)&&M.type==="wheel"||nt(M,v)&&(M.type!=="wheel"||s&&M.type==="wheel"&&!R)||!i&&M.ctrlKey&&M.type==="wheel"||!F&&!s&&!B&&M.type==="wheel"||!d&&(M.type==="mousedown"||M.type==="touchstart")||Array.isArray(d)&&!d.includes(M.button)&&M.type==="mousedown")return!1;const G=Array.isArray(d)&&d.includes(M.button)||!M.button||M.button<=1;return(!M.ctrlKey||M.type==="wheel")&&G})},[w,D,o,i,s,l,d,u,R]),P.createElement("div",{className:"react-flow__renderer",ref:k,style:qo},y)},xp=e=>({userSelectionActive:e.userSelectionActive,userSelectionRect:e.userSelectionRect});function Sp(){const{userSelectionActive:e,userSelectionRect:t}=re(xp,ue);return e&&t?P.createElement("div",{className:"react-flow__selection react-flow__container",style:{width:t.width,height:t.height,transform:`translate(${t.x}px, ${t.y}px)`}}):null}function ci(e,t){const n=t.parentNode||t.parentId,r=e.find(o=>o.id===n);if(r){const o=t.position.x+t.width-r.width,i=t.position.y+t.height-r.height;if(o>0||i>0||t.position.x<0||t.position.y<0){if(r.style={...r.style},r.style.width=r.style.width??r.width,r.style.height=r.style.height??r.height,o>0&&(r.style.width+=o),i>0&&(r.style.height+=i),t.position.x<0){const s=Math.abs(t.position.x);r.position.x=r.position.x-s,r.style.width+=s,t.position.x=0}if(t.position.y<0){const s=Math.abs(t.position.y);r.position.y=r.position.y-s,r.style.height+=s,t.position.y=0}r.width=r.style.width,r.height=r.style.height}}}function fu(e,t){if(e.some(r=>r.type==="reset"))return e.filter(r=>r.type==="reset").map(r=>r.item);const n=e.filter(r=>r.type==="add").map(r=>r.item);return t.reduce((r,o)=>{const i=e.filter(a=>a.id===o.id);if(i.length===0)return r.push(o),r;const s={...o};for(const a of i)if(a)switch(a.type){case"select":{s.selected=a.selected;break}case"position":{typeof a.position<"u"&&(s.position=a.position),typeof a.positionAbsolute<"u"&&(s.positionAbsolute=a.positionAbsolute),typeof a.dragging<"u"&&(s.dragging=a.dragging),s.expandParent&&ci(r,s);break}case"dimensions":{typeof a.dimensions<"u"&&(s.width=a.dimensions.width,s.height=a.dimensions.height),typeof a.updateStyle<"u"&&(s.style={...s.style||{},...a.dimensions}),typeof a.resizing=="boolean"&&(s.resizing=a.resizing),s.expandParent&&ci(r,s);break}case"remove":return r}return r.push(s),r},n)}function hu(e,t){return fu(e,t)}function Np(e,t){return fu(e,t)}const Te=(e,t)=>({id:e,type:"select",selected:t});function ot(e,t){return e.reduce((n,r)=>{const o=t.includes(r.id);return!r.selected&&o?(r.selected=!0,n.push(Te(r.id,!0))):r.selected&&!o&&(r.selected=!1,n.push(Te(r.id,!1))),n},[])}const dn=(e,t)=>n=>{n.target===t.current&&e?.(n)},Cp=e=>({userSelectionActive:e.userSelectionActive,elementsSelectable:e.elementsSelectable,dragging:e.paneDragging}),pu=T.memo(({isSelecting:e,selectionMode:t=St.Full,panOnDrag:n,onSelectionStart:r,onSelectionEnd:o,onPaneClick:i,onPaneContextMenu:s,onPaneScroll:a,onPaneMouseEnter:c,onPaneMouseMove:l,onPaneMouseLeave:u,children:d})=>{const f=T.useRef(null),h=ae(),_=T.useRef(0),m=T.useRef(0),g=T.useRef(),{userSelectionActive:p,elementsSelectable:y,dragging:E}=re(Cp,ue),v=()=>{h.setState({userSelectionActive:!1,userSelectionRect:null}),_.current=0,m.current=0},b=L=>{i?.(L),h.getState().resetSelectedElements(),h.setState({nodesSelectionActive:!1})},x=L=>{if(Array.isArray(n)&&n?.includes(2)){L.preventDefault();return}s?.(L)},C=a?L=>a(L):void 0,q=L=>{const{resetSelectedElements:w,domNode:R}=h.getState();if(g.current=R?.getBoundingClientRect(),!y||!e||L.button!==0||L.target!==f.current||!g.current)return;const{x:N,y:O}=De(L,g.current);w(),h.setState({userSelectionRect:{width:0,height:0,startX:N,startY:O,x:N,y:O}}),r?.(L)},k=L=>{const{userSelectionRect:w,nodeInternals:R,edges:N,transform:O,onNodesChange:H,onEdgesChange:M,nodeOrigin:F,getNodes:B}=h.getState();if(!e||!g.current||!w)return;h.setState({userSelectionActive:!0,nodesSelectionActive:!1});const G=De(L,g.current),U=w.startX??0,S=w.startY??0,I={...w,x:G.xK.id),W=V.map(K=>K.id);if(_.current!==W.length){_.current=W.length;const K=ot(z,W);K.length&&H?.(K)}if(m.current!==Y.length){m.current=Y.length;const K=ot(N,Y);K.length&&M?.(K)}h.setState({userSelectionRect:I})},A=L=>{if(L.button!==0)return;const{userSelectionRect:w}=h.getState();!p&&w&&L.target===f.current&&b?.(L),h.setState({nodesSelectionActive:_.current>0}),v(),o?.(L)},D=L=>{p&&(h.setState({nodesSelectionActive:_.current>0}),o?.(L)),v()},$=y&&(e||p);return P.createElement("div",{className:ce(["react-flow__pane",{dragging:E,selection:e}]),onClick:$?void 0:dn(b,f),onContextMenu:dn(x,f),onWheel:dn(C,f),onMouseEnter:$?void 0:c,onMouseDown:$?q:void 0,onMouseMove:$?k:l,onMouseUp:$?A:void 0,onMouseLeave:$?D:u,ref:f,style:qo},d,P.createElement(Sp,null))});pu.displayName="Pane";function gu(e,t){const n=e.parentNode||e.parentId;if(!n)return!1;const r=t.get(n);return r?r.selected?!0:gu(r,t):!1}function li(e,t,n){let r=e;do{if(r?.matches(t))return!0;if(r===n.current)return!1;r=r.parentElement}while(r);return!1}function kp(e,t,n,r){return Array.from(e.values()).filter(o=>(o.selected||o.id===r)&&(!o.parentNode||o.parentId||!gu(o,e))&&(o.draggable||t&&typeof o.draggable>"u")).map(o=>({id:o.id,position:o.position||{x:0,y:0},positionAbsolute:o.positionAbsolute||{x:0,y:0},distance:{x:n.x-(o.positionAbsolute?.x??0),y:n.y-(o.positionAbsolute?.y??0)},delta:{x:0,y:0},extent:o.extent,parentNode:o.parentNode||o.parentId,parentId:o.parentNode||o.parentId,width:o.width,height:o.height,expandParent:o.expandParent}))}function Rp(e,t){return!t||t==="parent"?t:[t[0],[t[1][0]-(e.width||0),t[1][1]-(e.height||0)]]}function mu(e,t,n,r,o=[0,0],i){const s=Rp(e,e.extent||r);let a=s;const c=e.parentNode||e.parentId;if(e.extent==="parent"&&!e.expandParent)if(c&&e.width&&e.height){const d=n.get(c),{x:f,y:h}=Ge(d,o).positionAbsolute;a=d&&me(f)&&me(h)&&me(d.width)&&me(d.height)?[[f+e.width*o[0],h+e.height*o[1]],[f+d.width-e.width+e.width*o[0],h+d.height-e.height+e.height*o[1]]]:a}else i?.("005",Ie.error005()),a=s;else if(e.extent&&c&&e.extent!=="parent"){const d=n.get(c),{x:f,y:h}=Ge(d,o).positionAbsolute;a=[[e.extent[0][0]+f,e.extent[0][1]+h],[e.extent[1][0]+f,e.extent[1][1]+h]]}let l={x:0,y:0};if(c){const d=n.get(c);l=Ge(d,o).positionAbsolute}const u=a&&a!=="parent"?So(t,a):t;return{position:{x:u.x-l.x,y:u.y-l.y},positionAbsolute:u}}function fn({nodeId:e,dragItems:t,nodeInternals:n}){const r=t.map(o=>({...n.get(o.id),position:o.position,positionAbsolute:o.positionAbsolute}));return[e?r.find(o=>o.id===e):r[0],r]}const di=(e,t,n,r)=>{const o=t.querySelectorAll(e);if(!o||!o.length)return null;const i=Array.from(o),s=t.getBoundingClientRect(),a={x:s.width*r[0],y:s.height*r[1]};return i.map(c=>{const l=c.getBoundingClientRect();return{id:c.getAttribute("data-handleid"),position:c.getAttribute("data-handlepos"),x:(l.left-s.left-a.x)/n,y:(l.top-s.top-a.y)/n,...xo(c)}})};function mt(e,t,n){return n===void 0?n:r=>{const o=t().nodeInternals.get(e);o&&n(r,{...o})}}function ao({id:e,store:t,unselect:n=!1,nodeRef:r}){const{addSelectedNodes:o,unselectNodesAndEdges:i,multiSelectionActive:s,nodeInternals:a,onError:c}=t.getState(),l=a.get(e);if(!l){c?.("012",Ie.error012(e));return}t.setState({nodesSelectionActive:!1}),l.selected?(n||l.selected&&s)&&(i({nodes:[l],edges:[]}),requestAnimationFrame(()=>r?.current?.blur())):o([e])}function Ap(){const e=ae();return T.useCallback(({sourceEvent:n})=>{const{transform:r,snapGrid:o,snapToGrid:i}=e.getState(),s=n.touches?n.touches[0].clientX:n.clientX,a=n.touches?n.touches[0].clientY:n.clientY,c={x:(s-r[0])/r[2],y:(a-r[1])/r[2]};return{xSnapped:i?o[0]*Math.round(c.x/o[0]):c.x,ySnapped:i?o[1]*Math.round(c.y/o[1]):c.y,...c}},[])}function hn(e){return(t,n,r)=>e?.(t,r)}function vu({nodeRef:e,disabled:t=!1,noDragClassName:n,handleSelector:r,nodeId:o,isSelectable:i,selectNodesOnDrag:s}){const a=ae(),[c,l]=T.useState(!1),u=T.useRef([]),d=T.useRef({x:null,y:null}),f=T.useRef(0),h=T.useRef(null),_=T.useRef({x:0,y:0}),m=T.useRef(null),g=T.useRef(!1),p=T.useRef(!1),y=T.useRef(!1),E=Ap();return T.useEffect(()=>{if(e?.current){const v=ge(e.current),b=({x:q,y:k})=>{const{nodeInternals:A,onNodeDrag:D,onSelectionDrag:$,updateNodePositions:L,nodeExtent:w,snapGrid:R,snapToGrid:N,nodeOrigin:O,onError:H}=a.getState();d.current={x:q,y:k};let M=!1,F={x:0,y:0,x2:0,y2:0};if(u.current.length>1&&w){const G=tn(u.current,O);F=xt(G)}if(u.current=u.current.map(G=>{const U={x:q-G.distance.x,y:k-G.distance.y};N&&(U.x=R[0]*Math.round(U.x/R[0]),U.y=R[1]*Math.round(U.y/R[1]));const S=[[w[0][0],w[0][1]],[w[1][0],w[1][1]]];u.current.length>1&&w&&!G.extent&&(S[0][0]=G.positionAbsolute.x-F.x+w[0][0],S[1][0]=G.positionAbsolute.x+(G.width??0)-F.x2+w[1][0],S[0][1]=G.positionAbsolute.y-F.y+w[0][1],S[1][1]=G.positionAbsolute.y+(G.height??0)-F.y2+w[1][1]);const I=mu(G,U,A,S,O,H);return M=M||G.position.x!==I.position.x||G.position.y!==I.position.y,G.position=I.position,G.positionAbsolute=I.positionAbsolute,G}),!M)return;L(u.current,!0,!0),l(!0);const B=o?D:hn($);if(B&&m.current){const[G,U]=fn({nodeId:o,dragItems:u.current,nodeInternals:A});B(m.current,G,U)}},x=()=>{if(!h.current)return;const[q,k]=La(_.current,h.current);if(q!==0||k!==0){const{transform:A,panBy:D}=a.getState();d.current.x=(d.current.x??0)-q/A[2],d.current.y=(d.current.y??0)-k/A[2],D({x:q,y:k})&&b(d.current)}f.current=requestAnimationFrame(x)},C=q=>{const{nodeInternals:k,multiSelectionActive:A,nodesDraggable:D,unselectNodesAndEdges:$,onNodeDragStart:L,onSelectionDragStart:w}=a.getState();p.current=!0;const R=o?L:hn(w);(!s||!i)&&!A&&o&&(k.get(o)?.selected||$()),o&&i&&s&&ao({id:o,store:a,nodeRef:e});const N=E(q);if(d.current=N,u.current=kp(k,D,N,o),R&&u.current){const[O,H]=fn({nodeId:o,dragItems:u.current,nodeInternals:k});R(q.sourceEvent,O,H)}};if(t)v.on(".drag",null);else{const q=ff().on("start",k=>{const{domNode:A,nodeDragThreshold:D}=a.getState();D===0&&C(k),y.current=!1;const $=E(k);d.current=$,h.current=A?.getBoundingClientRect()||null,_.current=De(k.sourceEvent,h.current)}).on("drag",k=>{const A=E(k),{autoPanOnNodeDrag:D,nodeDragThreshold:$}=a.getState();if(k.sourceEvent.type==="touchmove"&&k.sourceEvent.touches.length>1&&(y.current=!0),!y.current){if(!g.current&&p.current&&D&&(g.current=!0,x()),!p.current){const L=A.xSnapped-(d?.current?.x??0),w=A.ySnapped-(d?.current?.y??0);Math.sqrt(L*L+w*w)>$&&C(k)}(d.current.x!==A.xSnapped||d.current.y!==A.ySnapped)&&u.current&&p.current&&(m.current=k.sourceEvent,_.current=De(k.sourceEvent,h.current),b(A))}}).on("end",k=>{if(!(!p.current||y.current)&&(l(!1),g.current=!1,p.current=!1,cancelAnimationFrame(f.current),u.current)){const{updateNodePositions:A,nodeInternals:D,onNodeDragStop:$,onSelectionDragStop:L}=a.getState(),w=o?$:hn(L);if(A(u.current,!1,!1),w){const[R,N]=fn({nodeId:o,dragItems:u.current,nodeInternals:D});w(k.sourceEvent,R,N)}}}).filter(k=>{const A=k.target;return!k.button&&(!n||!li(A,`.${n}`,e))&&(!r||li(A,r,e))});return v.call(q),()=>{v.on(".drag",null)}}}},[e,t,n,r,i,a,o,s,E]),c}function yu(){const e=ae();return T.useCallback(n=>{const{nodeInternals:r,nodeExtent:o,updateNodePositions:i,getNodes:s,snapToGrid:a,snapGrid:c,onError:l,nodesDraggable:u}=e.getState(),d=s().filter(y=>y.selected&&(y.draggable||u&&typeof y.draggable>"u")),f=a?c[0]:5,h=a?c[1]:5,_=n.isShiftPressed?4:1,m=n.x*f*_,g=n.y*h*_,p=d.map(y=>{if(y.positionAbsolute){const E={x:y.positionAbsolute.x+m,y:y.positionAbsolute.y+g};a&&(E.x=c[0]*Math.round(E.x/c[0]),E.y=c[1]*Math.round(E.y/c[1]));const{positionAbsolute:v,position:b}=mu(y,E,r,o,void 0,l);y.position=b,y.positionAbsolute=v}return y});i(p,!0,!1)},[])}const st={ArrowUp:{x:0,y:-1},ArrowDown:{x:0,y:1},ArrowLeft:{x:-1,y:0},ArrowRight:{x:1,y:0}};var vt=e=>{const t=({id:n,type:r,data:o,xPos:i,yPos:s,xPosOrigin:a,yPosOrigin:c,selected:l,onClick:u,onMouseEnter:d,onMouseMove:f,onMouseLeave:h,onContextMenu:_,onDoubleClick:m,style:g,className:p,isDraggable:y,isSelectable:E,isConnectable:v,isFocusable:b,selectNodesOnDrag:x,sourcePosition:C,targetPosition:q,hidden:k,resizeObserver:A,dragHandle:D,zIndex:$,isParent:L,noDragClassName:w,noPanClassName:R,initialized:N,disableKeyboardA11y:O,ariaLabel:H,rfId:M,hasHandleBounds:F})=>{const B=ae(),G=T.useRef(null),U=T.useRef(null),S=T.useRef(C),I=T.useRef(q),z=T.useRef(r),V=E||y||u||d||f||h,Y=yu(),W=mt(n,B.getState,d),K=mt(n,B.getState,f),ee=mt(n,B.getState,h),ie=mt(n,B.getState,_),te=mt(n,B.getState,m),Q=J=>{const{nodeDragThreshold:Z}=B.getState();if(E&&(!x||!y||Z>0)&&ao({id:n,store:B,nodeRef:G}),u){const fe=B.getState().nodeInternals.get(n);fe&&u(J,{...fe})}},ne=J=>{if(!no(J)&&!O)if(Ha.includes(J.key)&&E){const Z=J.key==="Escape";ao({id:n,store:B,unselect:Z,nodeRef:G})}else y&&l&&Object.prototype.hasOwnProperty.call(st,J.key)&&(B.setState({ariaLiveMessage:`Moved selected node ${J.key.replace("Arrow","").toLowerCase()}. New position, x: ${~~i}, y: ${~~s}`}),Y({x:st[J.key].x,y:st[J.key].y,isShiftPressed:J.shiftKey}))};T.useEffect(()=>()=>{U.current&&(A?.unobserve(U.current),U.current=null)},[]),T.useEffect(()=>{if(G.current&&!k){const J=G.current;(!N||!F||U.current!==J)&&(U.current&&A?.unobserve(U.current),A?.observe(J),U.current=J)}},[k,N,F]),T.useEffect(()=>{const J=z.current!==r,Z=S.current!==C,fe=I.current!==q;G.current&&(J||Z||fe)&&(J&&(z.current=r),Z&&(S.current=C),fe&&(I.current=q),B.getState().updateNodeDimensions([{id:n,nodeElement:G.current,forceUpdate:!0}]))},[n,r,C,q]);const le=vu({nodeRef:G,disabled:k||!y,noDragClassName:w,handleSelector:D,nodeId:n,isSelectable:E,selectNodesOnDrag:x});return k?null:P.createElement("div",{className:ce(["react-flow__node",`react-flow__node-${r}`,{[R]:y},p,{selected:l,selectable:E,parent:L,dragging:le}]),ref:G,style:{zIndex:$,transform:`translate(${a}px,${c}px)`,pointerEvents:V?"all":"none",visibility:N?"visible":"hidden",...g},"data-id":n,"data-testid":`rf__node-${n}`,onMouseEnter:W,onMouseMove:K,onMouseLeave:ee,onContextMenu:ie,onClick:Q,onDoubleClick:te,onKeyDown:b?ne:void 0,tabIndex:b?0:void 0,role:b?"button":void 0,"aria-describedby":O?void 0:`${au}-${M}`,"aria-label":H},P.createElement(Bh,{value:n},P.createElement(e,{id:n,data:o,type:r,xPos:i,yPos:s,selected:l,isConnectable:v,sourcePosition:C,targetPosition:q,dragging:le,dragHandle:D,zIndex:$})))};return t.displayName="NodeWrapper",T.memo(t)};const Mp=e=>{const t=e.getNodes().filter(n=>n.selected);return{...tn(t,e.nodeOrigin),transformString:`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`,userSelectionActive:e.userSelectionActive}};function Ip({onSelectionContextMenu:e,noPanClassName:t,disableKeyboardA11y:n}){const r=ae(),{width:o,height:i,x:s,y:a,transformString:c,userSelectionActive:l}=re(Mp,ue),u=yu(),d=T.useRef(null);if(T.useEffect(()=>{n||d.current?.focus({preventScroll:!0})},[n]),vu({nodeRef:d}),l||!o||!i)return null;const f=e?_=>{const m=r.getState().getNodes().filter(g=>g.selected);e(_,m)}:void 0,h=_=>{Object.prototype.hasOwnProperty.call(st,_.key)&&u({x:st[_.key].x,y:st[_.key].y,isShiftPressed:_.shiftKey})};return P.createElement("div",{className:ce(["react-flow__nodesselection","react-flow__container",t]),style:{transform:c}},P.createElement("div",{ref:d,className:"react-flow__nodesselection-rect",onContextMenu:f,tabIndex:n?void 0:-1,onKeyDown:n?void 0:h,style:{width:o,height:i,top:a,left:s}}))}var qp=T.memo(Ip);const Tp=e=>e.nodesSelectionActive,wu=({children:e,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:o,onPaneContextMenu:i,onPaneScroll:s,deleteKeyCode:a,onMove:c,onMoveStart:l,onMoveEnd:u,selectionKeyCode:d,selectionOnDrag:f,selectionMode:h,onSelectionStart:_,onSelectionEnd:m,multiSelectionKeyCode:g,panActivationKeyCode:p,zoomActivationKeyCode:y,elementsSelectable:E,zoomOnScroll:v,zoomOnPinch:b,panOnScroll:x,panOnScrollSpeed:C,panOnScrollMode:q,zoomOnDoubleClick:k,panOnDrag:A,defaultViewport:D,translateExtent:$,minZoom:L,maxZoom:w,preventScrolling:R,onSelectionContextMenu:N,noWheelClassName:O,noPanClassName:H,disableKeyboardA11y:M})=>{const F=re(Tp),B=Nt(d),G=Nt(p),U=G||A,S=G||x,I=B||f&&U!==!0;return yp({deleteKeyCode:a,multiSelectionKeyCode:g}),P.createElement(bp,{onMove:c,onMoveStart:l,onMoveEnd:u,onPaneContextMenu:i,elementsSelectable:E,zoomOnScroll:v,zoomOnPinch:b,panOnScroll:S,panOnScrollSpeed:C,panOnScrollMode:q,zoomOnDoubleClick:k,panOnDrag:!B&&U,defaultViewport:D,translateExtent:$,minZoom:L,maxZoom:w,zoomActivationKeyCode:y,preventScrolling:R,noWheelClassName:O,noPanClassName:H},P.createElement(pu,{onSelectionStart:_,onSelectionEnd:m,onPaneClick:t,onPaneMouseEnter:n,onPaneMouseMove:r,onPaneMouseLeave:o,onPaneContextMenu:i,onPaneScroll:s,panOnDrag:U,isSelecting:!!I,selectionMode:h},e,F&&P.createElement(qp,{onSelectionContextMenu:N,noPanClassName:H,disableKeyboardA11y:M})))};wu.displayName="FlowRenderer";var Pp=T.memo(wu);function Dp(e){return re(T.useCallback(n=>e?Za(n.nodeInternals,{x:0,y:0,width:n.width,height:n.height},n.transform,!0):n.getNodes(),[e]))}function zp(e){const t={input:vt(e.input||ru),default:vt(e.default||so),output:vt(e.output||iu),group:vt(e.group||Mo)},n={},r=Object.keys(e).filter(o=>!["input","default","output","group"].includes(o)).reduce((o,i)=>(o[i]=vt(e[i]||so),o),n);return{...t,...r}}const Lp=({x:e,y:t,width:n,height:r,origin:o})=>!n||!r?{x:e,y:t}:o[0]<0||o[1]<0||o[0]>1||o[1]>1?{x:e,y:t}:{x:e-n*o[0],y:t-r*o[1]},$p=e=>({nodesDraggable:e.nodesDraggable,nodesConnectable:e.nodesConnectable,nodesFocusable:e.nodesFocusable,elementsSelectable:e.elementsSelectable,updateNodeDimensions:e.updateNodeDimensions,onError:e.onError}),_u=e=>{const{nodesDraggable:t,nodesConnectable:n,nodesFocusable:r,elementsSelectable:o,updateNodeDimensions:i,onError:s}=re($p,ue),a=Dp(e.onlyRenderVisibleElements),c=T.useRef(),l=T.useMemo(()=>{if(typeof ResizeObserver>"u")return null;const u=new ResizeObserver(d=>{const f=d.map(h=>({id:h.target.getAttribute("data-id"),nodeElement:h.target,forceUpdate:!0}));i(f)});return c.current=u,u},[]);return T.useEffect(()=>()=>{c?.current?.disconnect()},[]),P.createElement("div",{className:"react-flow__nodes",style:qo},a.map(u=>{let d=u.type||"default";e.nodeTypes[d]||(s?.("003",Ie.error003(d)),d="default");const f=e.nodeTypes[d]||e.nodeTypes.default,h=!!(u.draggable||t&&typeof u.draggable>"u"),_=!!(u.selectable||o&&typeof u.selectable>"u"),m=!!(u.connectable||n&&typeof u.connectable>"u"),g=!!(u.focusable||r&&typeof u.focusable>"u"),p=e.nodeExtent?So(u.positionAbsolute,e.nodeExtent):u.positionAbsolute,y=p?.x??0,E=p?.y??0,v=Lp({x:y,y:E,width:u.width??0,height:u.height??0,origin:e.nodeOrigin});return P.createElement(f,{key:u.id,id:u.id,className:u.className,style:u.style,type:d,data:u.data,sourcePosition:u.sourcePosition||X.Bottom,targetPosition:u.targetPosition||X.Top,hidden:u.hidden,xPos:y,yPos:E,xPosOrigin:v.x,yPosOrigin:v.y,selectNodesOnDrag:e.selectNodesOnDrag,onClick:e.onNodeClick,onMouseEnter:e.onNodeMouseEnter,onMouseMove:e.onNodeMouseMove,onMouseLeave:e.onNodeMouseLeave,onContextMenu:e.onNodeContextMenu,onDoubleClick:e.onNodeDoubleClick,selected:!!u.selected,isDraggable:h,isSelectable:_,isConnectable:m,isFocusable:g,resizeObserver:l,dragHandle:u.dragHandle,zIndex:u[se]?.z??0,isParent:!!u[se]?.isParent,noDragClassName:e.noDragClassName,noPanClassName:e.noPanClassName,initialized:!!u.width&&!!u.height,rfId:e.rfId,disableKeyboardA11y:e.disableKeyboardA11y,ariaLabel:u.ariaLabel,hasHandleBounds:!!u[se]?.handleBounds})}))};_u.displayName="NodeRenderer";var Op=T.memo(_u);const Fp=(e,t,n)=>n===X.Left?e-t:n===X.Right?e+t:e,Hp=(e,t,n)=>n===X.Top?e-t:n===X.Bottom?e+t:e,fi="react-flow__edgeupdater",hi=({position:e,centerX:t,centerY:n,radius:r=10,onMouseDown:o,onMouseEnter:i,onMouseOut:s,type:a})=>P.createElement("circle",{onMouseDown:o,onMouseEnter:i,onMouseOut:s,className:ce([fi,`${fi}-${a}`]),cx:Fp(t,r,e),cy:Hp(n,r,e),r,stroke:"transparent",fill:"transparent"}),Vp=()=>!0;var rt=e=>{const t=({id:n,className:r,type:o,data:i,onClick:s,onEdgeDoubleClick:a,selected:c,animated:l,label:u,labelStyle:d,labelShowBg:f,labelBgStyle:h,labelBgPadding:_,labelBgBorderRadius:m,style:g,source:p,target:y,sourceX:E,sourceY:v,targetX:b,targetY:x,sourcePosition:C,targetPosition:q,elementsSelectable:k,hidden:A,sourceHandleId:D,targetHandleId:$,onContextMenu:L,onMouseEnter:w,onMouseMove:R,onMouseLeave:N,reconnectRadius:O,onReconnect:H,onReconnectStart:M,onReconnectEnd:F,markerEnd:B,markerStart:G,rfId:U,ariaLabel:S,isFocusable:I,isReconnectable:z,pathOptions:V,interactionWidth:Y,disableKeyboardA11y:W})=>{const K=T.useRef(null),[ee,ie]=T.useState(!1),[te,Q]=T.useState(!1),ne=ae(),le=T.useMemo(()=>`url('#${oo(G,U)}')`,[G,U]),J=T.useMemo(()=>`url('#${oo(B,U)}')`,[B,U]);if(A)return null;const Z=de=>{const{edges:be,addSelectedEdges:$e,unselectNodesAndEdges:Oe,multiSelectionActive:Je}=ne.getState(),xe=be.find(Fe=>Fe.id===n);xe&&(k&&(ne.setState({nodesSelectionActive:!1}),xe.selected&&Je?(Oe({nodes:[],edges:[xe]}),K.current?.blur()):$e([n])),s&&s(de,xe))},fe=gt(n,ne.getState,a),Ne=gt(n,ne.getState,L),lt=gt(n,ne.getState,w),Ze=gt(n,ne.getState,R),Xe=gt(n,ne.getState,N),Ce=(de,be)=>{if(de.button!==0)return;const{edges:$e,isValidConnection:Oe}=ne.getState(),Je=be?y:p,xe=(be?$:D)||null,Fe=be?"target":"source",nn=Oe||Vp,rn=be,ft=$e.find(He=>He.id===n);Q(!0),M?.(de,ft,Fe);const on=He=>{Q(!1),F?.(He,ft,Fe)};Ja({event:de,handleId:xe,nodeId:Je,onConnect:He=>H?.(ft,He),isTarget:rn,getState:ne.getState,setState:ne.setState,isValidConnection:nn,edgeUpdaterType:Fe,onReconnectEnd:on})},Ke=de=>Ce(de,!0),ze=de=>Ce(de,!1),Le=()=>ie(!0),je=()=>ie(!1),Qe=!k&&!s,dt=de=>{if(!W&&Ha.includes(de.key)&&k){const{unselectNodesAndEdges:be,addSelectedEdges:$e,edges:Oe}=ne.getState();de.key==="Escape"?(K.current?.blur(),be({edges:[Oe.find(xe=>xe.id===n)]})):$e([n])}};return P.createElement("g",{className:ce(["react-flow__edge",`react-flow__edge-${o}`,r,{selected:c,animated:l,inactive:Qe,updating:ee}]),onClick:Z,onDoubleClick:fe,onContextMenu:Ne,onMouseEnter:lt,onMouseMove:Ze,onMouseLeave:Xe,onKeyDown:I?dt:void 0,tabIndex:I?0:void 0,role:I?"button":"img","data-testid":`rf__edge-${n}`,"aria-label":S===null?void 0:S||`Edge from ${p} to ${y}`,"aria-describedby":I?`${uu}-${U}`:void 0,ref:K},!te&&P.createElement(e,{id:n,source:p,target:y,selected:c,animated:l,label:u,labelStyle:d,labelShowBg:f,labelBgStyle:h,labelBgPadding:_,labelBgBorderRadius:m,data:i,style:g,sourceX:E,sourceY:v,targetX:b,targetY:x,sourcePosition:C,targetPosition:q,sourceHandleId:D,targetHandleId:$,markerStart:le,markerEnd:J,pathOptions:V,interactionWidth:Y}),z&&P.createElement(P.Fragment,null,(z==="source"||z===!0)&&P.createElement(hi,{position:C,centerX:E,centerY:v,radius:O,onMouseDown:Ke,onMouseEnter:Le,onMouseOut:je,type:"source"}),(z==="target"||z===!0)&&P.createElement(hi,{position:q,centerX:b,centerY:x,radius:O,onMouseDown:ze,onMouseEnter:Le,onMouseOut:je,type:"target"})))};return t.displayName="EdgeWrapper",T.memo(t)};function Bp(e){const t={default:rt(e.default||Gt),straight:rt(e.bezier||ko),step:rt(e.step||Co),smoothstep:rt(e.step||en),simplebezier:rt(e.simplebezier||No)},n={},r=Object.keys(e).filter(o=>!["default","bezier"].includes(o)).reduce((o,i)=>(o[i]=rt(e[i]||Gt),o),n);return{...t,...r}}function pi(e,t,n=null){const r=(n?.x||0)+t.x,o=(n?.y||0)+t.y,i=n?.width||t.width,s=n?.height||t.height;switch(e){case X.Top:return{x:r+i/2,y:o};case X.Right:return{x:r+i,y:o+s/2};case X.Bottom:return{x:r+i/2,y:o+s};case X.Left:return{x:r,y:o+s/2}}}function gi(e,t){return e?e.length===1||!t?e[0]:t&&e.find(n=>n.id===t)||null:null}const Gp=(e,t,n,r,o,i)=>{const s=pi(n,e,t),a=pi(i,r,o);return{sourceX:s.x,sourceY:s.y,targetX:a.x,targetY:a.y}};function Up({sourcePos:e,targetPos:t,sourceWidth:n,sourceHeight:r,targetWidth:o,targetHeight:i,width:s,height:a,transform:c}){const l={x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),x2:Math.max(e.x+n,t.x+o),y2:Math.max(e.y+r,t.y+i)};l.x===l.x2&&(l.x2+=1),l.y===l.y2&&(l.y2+=1);const u=xt({x:(0-c[0])/c[2],y:(0-c[1])/c[2],width:s/c[2],height:a/c[2]}),d=Math.max(0,Math.min(u.x2,l.x2)-Math.max(u.x,l.x)),f=Math.max(0,Math.min(u.y2,l.y2)-Math.max(u.y,l.y));return Math.ceil(d*f)>0}function mi(e){const t=e?.[se]?.handleBounds||null,n=t&&e?.width&&e?.height&&typeof e?.positionAbsolute?.x<"u"&&typeof e?.positionAbsolute?.y<"u";return[{x:e?.positionAbsolute?.x||0,y:e?.positionAbsolute?.y||0,width:e?.width||0,height:e?.height||0},t,!!n]}const Yp=[{level:0,isMaxLevel:!0,edges:[]}];function Wp(e,t,n=!1){let r=-1;const o=e.reduce((s,a)=>{const c=me(a.zIndex);let l=c?a.zIndex:0;if(n){const u=t.get(a.target),d=t.get(a.source),f=a.selected||u?.selected||d?.selected,h=Math.max(d?.[se]?.z||0,u?.[se]?.z||0,1e3);l=(c?a.zIndex:0)+(f?h:0)}return s[l]?s[l].push(a):s[l]=[a],r=l>r?l:r,s},{}),i=Object.entries(o).map(([s,a])=>{const c=+s;return{edges:a,level:c,isMaxLevel:c===r}});return i.length===0?Yp:i}function Zp(e,t,n){const r=re(T.useCallback(o=>e?o.edges.filter(i=>{const s=t.get(i.source),a=t.get(i.target);return s?.width&&s?.height&&a?.width&&a?.height&&Up({sourcePos:s.positionAbsolute||{x:0,y:0},targetPos:a.positionAbsolute||{x:0,y:0},sourceWidth:s.width,sourceHeight:s.height,targetWidth:a.width,targetHeight:a.height,width:o.width,height:o.height,transform:o.transform})}):o.edges,[e,t]));return Wp(r,t,n)}const Xp=({color:e="none",strokeWidth:t=1})=>P.createElement("polyline",{style:{stroke:e,strokeWidth:t},strokeLinecap:"round",strokeLinejoin:"round",fill:"none",points:"-5,-4 0,0 -5,4"}),Kp=({color:e="none",strokeWidth:t=1})=>P.createElement("polyline",{style:{stroke:e,fill:e,strokeWidth:t},strokeLinecap:"round",strokeLinejoin:"round",points:"-5,-4 0,0 -5,4 -5,-4"}),vi={[Bt.Arrow]:Xp,[Bt.ArrowClosed]:Kp};function jp(e){const t=ae();return T.useMemo(()=>Object.prototype.hasOwnProperty.call(vi,e)?vi[e]:(t.getState().onError?.("009",Ie.error009(e)),null),[e])}const Qp=({id:e,type:t,color:n,width:r=12.5,height:o=12.5,markerUnits:i="strokeWidth",strokeWidth:s,orient:a="auto-start-reverse"})=>{const c=jp(t);return c?P.createElement("marker",{className:"react-flow__arrowhead",id:e,markerWidth:`${r}`,markerHeight:`${o}`,viewBox:"-10 -10 20 20",markerUnits:i,orient:a,refX:"0",refY:"0"},P.createElement(c,{color:n,strokeWidth:s})):null},Jp=({defaultColor:e,rfId:t})=>n=>{const r=[];return n.edges.reduce((o,i)=>([i.markerStart,i.markerEnd].forEach(s=>{if(s&&typeof s=="object"){const a=oo(s,t);r.includes(a)||(o.push({id:a,color:s.color||e,...s}),r.push(a))}}),o),[]).sort((o,i)=>o.id.localeCompare(i.id))},Eu=({defaultColor:e,rfId:t})=>{const n=re(T.useCallback(Jp({defaultColor:e,rfId:t}),[e,t]),(r,o)=>!(r.length!==o.length||r.some((i,s)=>i.id!==o[s].id)));return P.createElement("defs",null,n.map(r=>P.createElement(Qp,{id:r.id,key:r.id,type:r.type,color:r.color,width:r.width,height:r.height,markerUnits:r.markerUnits,strokeWidth:r.strokeWidth,orient:r.orient})))};Eu.displayName="MarkerDefinitions";var eg=T.memo(Eu);const tg=e=>({nodesConnectable:e.nodesConnectable,edgesFocusable:e.edgesFocusable,edgesUpdatable:e.edgesUpdatable,elementsSelectable:e.elementsSelectable,width:e.width,height:e.height,connectionMode:e.connectionMode,nodeInternals:e.nodeInternals,onError:e.onError}),bu=({defaultMarkerColor:e,onlyRenderVisibleElements:t,elevateEdgesOnSelect:n,rfId:r,edgeTypes:o,noPanClassName:i,onEdgeContextMenu:s,onEdgeMouseEnter:a,onEdgeMouseMove:c,onEdgeMouseLeave:l,onEdgeClick:u,onEdgeDoubleClick:d,onReconnect:f,onReconnectStart:h,onReconnectEnd:_,reconnectRadius:m,children:g,disableKeyboardA11y:p})=>{const{edgesFocusable:y,edgesUpdatable:E,elementsSelectable:v,width:b,height:x,connectionMode:C,nodeInternals:q,onError:k}=re(tg,ue),A=Zp(t,q,n);return b?P.createElement(P.Fragment,null,A.map(({level:D,edges:$,isMaxLevel:L})=>P.createElement("svg",{key:D,style:{zIndex:D},width:b,height:x,className:"react-flow__edges react-flow__container"},L&&P.createElement(eg,{defaultColor:e,rfId:r}),P.createElement("g",null,$.map(w=>{const[R,N,O]=mi(q.get(w.source)),[H,M,F]=mi(q.get(w.target));if(!O||!F)return null;let B=w.type||"default";o[B]||(k?.("011",Ie.error011(B)),B="default");const G=o[B]||o.default,U=C===Ye.Strict?M.target:(M.target??[]).concat(M.source??[]),S=gi(N.source,w.sourceHandle),I=gi(U,w.targetHandle),z=S?.position||X.Bottom,V=I?.position||X.Top,Y=!!(w.focusable||y&&typeof w.focusable>"u"),W=w.reconnectable||w.updatable,K=typeof f<"u"&&(W||E&&typeof W>"u");if(!S||!I)return k?.("008",Ie.error008(S,w)),null;const{sourceX:ee,sourceY:ie,targetX:te,targetY:Q}=Gp(R,S,z,H,I,V);return P.createElement(G,{key:w.id,id:w.id,className:ce([w.className,i]),type:B,data:w.data,selected:!!w.selected,animated:!!w.animated,hidden:!!w.hidden,label:w.label,labelStyle:w.labelStyle,labelShowBg:w.labelShowBg,labelBgStyle:w.labelBgStyle,labelBgPadding:w.labelBgPadding,labelBgBorderRadius:w.labelBgBorderRadius,style:w.style,source:w.source,target:w.target,sourceHandleId:w.sourceHandle,targetHandleId:w.targetHandle,markerEnd:w.markerEnd,markerStart:w.markerStart,sourceX:ee,sourceY:ie,targetX:te,targetY:Q,sourcePosition:z,targetPosition:V,elementsSelectable:v,onContextMenu:s,onMouseEnter:a,onMouseMove:c,onMouseLeave:l,onClick:u,onEdgeDoubleClick:d,onReconnect:f,onReconnectStart:h,onReconnectEnd:_,reconnectRadius:m,rfId:r,ariaLabel:w.ariaLabel,isFocusable:Y,isReconnectable:K,pathOptions:"pathOptions"in w?w.pathOptions:void 0,interactionWidth:w.interactionWidth,disableKeyboardA11y:p})})))),g):null};bu.displayName="EdgeRenderer";var ng=T.memo(bu);const rg=e=>`translate(${e.transform[0]}px,${e.transform[1]}px) scale(${e.transform[2]})`;function og({children:e}){const t=re(rg);return P.createElement("div",{className:"react-flow__viewport react-flow__container",style:{transform:t}},e)}function ig(e){const t=Io(),n=T.useRef(!1);T.useEffect(()=>{!n.current&&t.viewportInitialized&&e&&(setTimeout(()=>e(t),1),n.current=!0)},[e,t.viewportInitialized])}const sg={[X.Left]:X.Right,[X.Right]:X.Left,[X.Top]:X.Bottom,[X.Bottom]:X.Top},xu=({nodeId:e,handleType:t,style:n,type:r=Pe.Bezier,CustomComponent:o,connectionStatus:i})=>{const{fromNode:s,handleId:a,toX:c,toY:l,connectionMode:u}=re(T.useCallback(x=>({fromNode:x.nodeInternals.get(e),handleId:x.connectionHandleId,toX:(x.connectionPosition.x-x.transform[0])/x.transform[2],toY:(x.connectionPosition.y-x.transform[1])/x.transform[2],connectionMode:x.connectionMode}),[e]),ue),d=s?.[se]?.handleBounds;let f=d?.[t];if(u===Ye.Loose&&(f=f||d?.[t==="source"?"target":"source"]),!s||!f)return null;const h=a?f.find(x=>x.id===a):f[0],_=h?h.x+h.width/2:(s.width??0)/2,m=h?h.y+h.height/2:s.height??0,g=(s.positionAbsolute?.x??0)+_,p=(s.positionAbsolute?.y??0)+m,y=h?.position,E=y?sg[y]:null;if(!y||!E)return null;if(o)return P.createElement(o,{connectionLineType:r,connectionLineStyle:n,fromNode:s,fromHandle:h,fromX:g,fromY:p,toX:c,toY:l,fromPosition:y,toPosition:E,connectionStatus:i});let v="";const b={sourceX:g,sourceY:p,sourcePosition:y,targetX:c,targetY:l,targetPosition:E};return r===Pe.Bezier?[v]=Ya(b):r===Pe.Step?[v]=ro({...b,borderRadius:0}):r===Pe.SmoothStep?[v]=ro(b):r===Pe.SimpleBezier?[v]=Ua(b):v=`M${g},${p} ${c},${l}`,P.createElement("path",{d:v,fill:"none",className:"react-flow__connection-path",style:n})};xu.displayName="ConnectionLine";const ag=e=>({nodeId:e.connectionNodeId,handleType:e.connectionHandleType,nodesConnectable:e.nodesConnectable,connectionStatus:e.connectionStatus,width:e.width,height:e.height});function ug({containerStyle:e,style:t,type:n,component:r}){const{nodeId:o,handleType:i,nodesConnectable:s,width:a,height:c,connectionStatus:l}=re(ag,ue);return!(o&&i&&a&&s)?null:P.createElement("svg",{style:e,width:a,height:c,className:"react-flow__edges react-flow__connectionline react-flow__container"},P.createElement("g",{className:ce(["react-flow__connection",l])},P.createElement(xu,{nodeId:o,handleType:i,style:t,type:n,CustomComponent:r,connectionStatus:l})))}function yi(e,t){return T.useRef(null),ae(),T.useMemo(()=>t(e),[e])}const Su=({nodeTypes:e,edgeTypes:t,onMove:n,onMoveStart:r,onMoveEnd:o,onInit:i,onNodeClick:s,onEdgeClick:a,onNodeDoubleClick:c,onEdgeDoubleClick:l,onNodeMouseEnter:u,onNodeMouseMove:d,onNodeMouseLeave:f,onNodeContextMenu:h,onSelectionContextMenu:_,onSelectionStart:m,onSelectionEnd:g,connectionLineType:p,connectionLineStyle:y,connectionLineComponent:E,connectionLineContainerStyle:v,selectionKeyCode:b,selectionOnDrag:x,selectionMode:C,multiSelectionKeyCode:q,panActivationKeyCode:k,zoomActivationKeyCode:A,deleteKeyCode:D,onlyRenderVisibleElements:$,elementsSelectable:L,selectNodesOnDrag:w,defaultViewport:R,translateExtent:N,minZoom:O,maxZoom:H,preventScrolling:M,defaultMarkerColor:F,zoomOnScroll:B,zoomOnPinch:G,panOnScroll:U,panOnScrollSpeed:S,panOnScrollMode:I,zoomOnDoubleClick:z,panOnDrag:V,onPaneClick:Y,onPaneMouseEnter:W,onPaneMouseMove:K,onPaneMouseLeave:ee,onPaneScroll:ie,onPaneContextMenu:te,onEdgeContextMenu:Q,onEdgeMouseEnter:ne,onEdgeMouseMove:le,onEdgeMouseLeave:J,onReconnect:Z,onReconnectStart:fe,onReconnectEnd:Ne,reconnectRadius:lt,noDragClassName:Ze,noWheelClassName:Xe,noPanClassName:Ce,elevateEdgesOnSelect:Ke,disableKeyboardA11y:ze,nodeOrigin:Le,nodeExtent:je,rfId:Qe})=>{const dt=yi(e,zp),de=yi(t,Bp);return ig(i),P.createElement(Pp,{onPaneClick:Y,onPaneMouseEnter:W,onPaneMouseMove:K,onPaneMouseLeave:ee,onPaneContextMenu:te,onPaneScroll:ie,deleteKeyCode:D,selectionKeyCode:b,selectionOnDrag:x,selectionMode:C,onSelectionStart:m,onSelectionEnd:g,multiSelectionKeyCode:q,panActivationKeyCode:k,zoomActivationKeyCode:A,elementsSelectable:L,onMove:n,onMoveStart:r,onMoveEnd:o,zoomOnScroll:B,zoomOnPinch:G,zoomOnDoubleClick:z,panOnScroll:U,panOnScrollSpeed:S,panOnScrollMode:I,panOnDrag:V,defaultViewport:R,translateExtent:N,minZoom:O,maxZoom:H,onSelectionContextMenu:_,preventScrolling:M,noDragClassName:Ze,noWheelClassName:Xe,noPanClassName:Ce,disableKeyboardA11y:ze},P.createElement(og,null,P.createElement(ng,{edgeTypes:de,onEdgeClick:a,onEdgeDoubleClick:l,onlyRenderVisibleElements:$,onEdgeContextMenu:Q,onEdgeMouseEnter:ne,onEdgeMouseMove:le,onEdgeMouseLeave:J,onReconnect:Z,onReconnectStart:fe,onReconnectEnd:Ne,reconnectRadius:lt,defaultMarkerColor:F,noPanClassName:Ce,elevateEdgesOnSelect:!!Ke,disableKeyboardA11y:ze,rfId:Qe},P.createElement(ug,{style:y,type:p,component:E,containerStyle:v})),P.createElement("div",{className:"react-flow__edgelabel-renderer"}),P.createElement(Op,{nodeTypes:dt,onNodeClick:s,onNodeDoubleClick:c,onNodeMouseEnter:u,onNodeMouseMove:d,onNodeMouseLeave:f,onNodeContextMenu:h,selectNodesOnDrag:w,onlyRenderVisibleElements:$,noPanClassName:Ce,noDragClassName:Ze,disableKeyboardA11y:ze,nodeOrigin:Le,nodeExtent:je,rfId:Qe})))};Su.displayName="GraphView";var cg=T.memo(Su);const uo=[[Number.NEGATIVE_INFINITY,Number.NEGATIVE_INFINITY],[Number.POSITIVE_INFINITY,Number.POSITIVE_INFINITY]],qe={rfId:"1",width:0,height:0,transform:[0,0,1],nodeInternals:new Map,edges:[],onNodesChange:null,onEdgesChange:null,hasDefaultNodes:!1,hasDefaultEdges:!1,d3Zoom:null,d3Selection:null,d3ZoomHandler:void 0,minZoom:.5,maxZoom:2,translateExtent:uo,nodeExtent:uo,nodesSelectionActive:!1,userSelectionActive:!1,userSelectionRect:null,connectionNodeId:null,connectionHandleId:null,connectionHandleType:"source",connectionPosition:{x:0,y:0},connectionStatus:null,connectionMode:Ye.Strict,domNode:null,paneDragging:!1,noPanClassName:"nopan",nodeOrigin:[0,0],nodeDragThreshold:0,snapGrid:[15,15],snapToGrid:!1,nodesDraggable:!0,nodesConnectable:!0,nodesFocusable:!0,edgesFocusable:!0,edgesUpdatable:!0,elementsSelectable:!0,elevateNodesOnSelect:!0,fitViewOnInit:!1,fitViewOnInitDone:!1,fitViewOnInitOptions:void 0,onSelectionChange:[],multiSelectionActive:!1,connectionStartHandle:null,connectionEndHandle:null,connectionClickStartHandle:null,connectOnClick:!0,ariaLiveMessage:"",autoPanOnConnect:!0,autoPanOnNodeDrag:!0,connectionRadius:20,onError:Lh,isValidConnection:void 0},lg=()=>xl((e,t)=>({...qe,setNodes:n=>{const{nodeInternals:r,nodeOrigin:o,elevateNodesOnSelect:i}=t();e({nodeInternals:ln(n,r,o,i)})},getNodes:()=>Array.from(t().nodeInternals.values()),setEdges:n=>{const{defaultEdgeOptions:r={}}=t();e({edges:n.map(o=>({...r,...o}))})},setDefaultNodesAndEdges:(n,r)=>{const o=typeof n<"u",i=typeof r<"u",s=o?ln(n,new Map,t().nodeOrigin,t().elevateNodesOnSelect):new Map;e({nodeInternals:s,edges:i?r:[],hasDefaultNodes:o,hasDefaultEdges:i})},updateNodeDimensions:n=>{const{onNodesChange:r,nodeInternals:o,fitViewOnInit:i,fitViewOnInitDone:s,fitViewOnInitOptions:a,domNode:c,nodeOrigin:l}=t(),u=c?.querySelector(".react-flow__viewport");if(!u)return;const d=window.getComputedStyle(u),{m22:f}=new window.DOMMatrixReadOnly(d.transform),h=n.reduce((m,g)=>{const p=o.get(g.id);if(p?.hidden)o.set(p.id,{...p,[se]:{...p[se],handleBounds:void 0}});else if(p){const y=xo(g.nodeElement);!!(y.width&&y.height&&(p.width!==y.width||p.height!==y.height||g.forceUpdate))&&(o.set(p.id,{...p,[se]:{...p[se],handleBounds:{source:di(".source",g.nodeElement,f,l),target:di(".target",g.nodeElement,f,l)}},...y}),m.push({id:p.id,type:"dimensions",dimensions:y}))}return m},[]);lu(o,l);const _=s||i&&!s&&du(t,{initial:!0,...a});e({nodeInternals:new Map(o),fitViewOnInitDone:_}),h?.length>0&&r?.(h)},updateNodePositions:(n,r=!0,o=!1)=>{const{triggerNodeChanges:i}=t(),s=n.map(a=>{const c={id:a.id,type:"position",dragging:o};return r&&(c.positionAbsolute=a.positionAbsolute,c.position=a.position),c});i(s)},triggerNodeChanges:n=>{const{onNodesChange:r,nodeInternals:o,hasDefaultNodes:i,nodeOrigin:s,getNodes:a,elevateNodesOnSelect:c}=t();if(n?.length){if(i){const l=hu(n,a()),u=ln(l,o,s,c);e({nodeInternals:u})}r?.(n)}},addSelectedNodes:n=>{const{multiSelectionActive:r,edges:o,getNodes:i}=t();let s,a=null;r?s=n.map(c=>Te(c,!0)):(s=ot(i(),n),a=ot(o,[])),qt({changedNodes:s,changedEdges:a,get:t,set:e})},addSelectedEdges:n=>{const{multiSelectionActive:r,edges:o,getNodes:i}=t();let s,a=null;r?s=n.map(c=>Te(c,!0)):(s=ot(o,n),a=ot(i(),[])),qt({changedNodes:a,changedEdges:s,get:t,set:e})},unselectNodesAndEdges:({nodes:n,edges:r}={})=>{const{edges:o,getNodes:i}=t(),s=n||i(),a=r||o,c=s.map(u=>(u.selected=!1,Te(u.id,!1))),l=a.map(u=>Te(u.id,!1));qt({changedNodes:c,changedEdges:l,get:t,set:e})},setMinZoom:n=>{const{d3Zoom:r,maxZoom:o}=t();r?.scaleExtent([n,o]),e({minZoom:n})},setMaxZoom:n=>{const{d3Zoom:r,minZoom:o}=t();r?.scaleExtent([o,n]),e({maxZoom:n})},setTranslateExtent:n=>{t().d3Zoom?.translateExtent(n),e({translateExtent:n})},resetSelectedElements:()=>{const{edges:n,getNodes:r}=t(),i=r().filter(a=>a.selected).map(a=>Te(a.id,!1)),s=n.filter(a=>a.selected).map(a=>Te(a.id,!1));qt({changedNodes:i,changedEdges:s,get:t,set:e})},setNodeExtent:n=>{const{nodeInternals:r}=t();r.forEach(o=>{o.positionAbsolute=So(o.position,n)}),e({nodeExtent:n,nodeInternals:new Map(r)})},panBy:n=>{const{transform:r,width:o,height:i,d3Zoom:s,d3Selection:a,translateExtent:c}=t();if(!s||!a||!n.x&&!n.y)return!1;const l=Ae.translate(r[0]+n.x,r[1]+n.y).scale(r[2]),u=[[0,0],[o,i]],d=s?.constrain()(l,u,c);return s.transform(a,d),r[0]!==d.x||r[1]!==d.y||r[2]!==d.k},cancelConnection:()=>e({connectionNodeId:qe.connectionNodeId,connectionHandleId:qe.connectionHandleId,connectionHandleType:qe.connectionHandleType,connectionStatus:qe.connectionStatus,connectionStartHandle:qe.connectionStartHandle,connectionEndHandle:qe.connectionEndHandle}),reset:()=>e({...qe})}),Object.is),Nu=({children:e})=>{const t=T.useRef(null);return t.current||(t.current=lg()),P.createElement(Mh,{value:t.current},e)};Nu.displayName="ReactFlowProvider";const Cu=({children:e})=>T.useContext(Jt)?P.createElement(P.Fragment,null,e):P.createElement(Nu,null,e);Cu.displayName="ReactFlowWrapper";const dg={input:ru,default:so,output:iu,group:Mo},fg={default:Gt,straight:ko,step:Co,smoothstep:en,simplebezier:No},hg=[0,0],pg=[15,15],gg={x:0,y:0,zoom:1},mg={width:"100%",height:"100%",overflow:"hidden",position:"relative",zIndex:0},vg=T.forwardRef(({nodes:e,edges:t,defaultNodes:n,defaultEdges:r,className:o,nodeTypes:i=dg,edgeTypes:s=fg,onNodeClick:a,onEdgeClick:c,onInit:l,onMove:u,onMoveStart:d,onMoveEnd:f,onConnect:h,onConnectStart:_,onConnectEnd:m,onClickConnectStart:g,onClickConnectEnd:p,onNodeMouseEnter:y,onNodeMouseMove:E,onNodeMouseLeave:v,onNodeContextMenu:b,onNodeDoubleClick:x,onNodeDragStart:C,onNodeDrag:q,onNodeDragStop:k,onNodesDelete:A,onEdgesDelete:D,onSelectionChange:$,onSelectionDragStart:L,onSelectionDrag:w,onSelectionDragStop:R,onSelectionContextMenu:N,onSelectionStart:O,onSelectionEnd:H,connectionMode:M=Ye.Strict,connectionLineType:F=Pe.Bezier,connectionLineStyle:B,connectionLineComponent:G,connectionLineContainerStyle:U,deleteKeyCode:S="Backspace",selectionKeyCode:I="Shift",selectionOnDrag:z=!1,selectionMode:V=St.Full,panActivationKeyCode:Y="Space",multiSelectionKeyCode:W=Vt()?"Meta":"Control",zoomActivationKeyCode:K=Vt()?"Meta":"Control",snapToGrid:ee=!1,snapGrid:ie=pg,onlyRenderVisibleElements:te=!1,selectNodesOnDrag:Q=!0,nodesDraggable:ne,nodesConnectable:le,nodesFocusable:J,nodeOrigin:Z=hg,edgesFocusable:fe,edgesUpdatable:Ne,elementsSelectable:lt,defaultViewport:Ze=gg,minZoom:Xe=.5,maxZoom:Ce=2,translateExtent:Ke=uo,preventScrolling:ze=!0,nodeExtent:Le,defaultMarkerColor:je="#b1b1b7",zoomOnScroll:Qe=!0,zoomOnPinch:dt=!0,panOnScroll:de=!1,panOnScrollSpeed:be=.5,panOnScrollMode:$e=Be.Free,zoomOnDoubleClick:Oe=!0,panOnDrag:Je=!0,onPaneClick:xe,onPaneMouseEnter:Fe,onPaneMouseMove:nn,onPaneMouseLeave:rn,onPaneScroll:ft,onPaneContextMenu:on,children:Do,onEdgeContextMenu:He,onEdgeDoubleClick:Xu,onEdgeMouseEnter:Ku,onEdgeMouseMove:ju,onEdgeMouseLeave:Qu,onEdgeUpdate:Ju,onEdgeUpdateStart:ec,onEdgeUpdateEnd:tc,onReconnect:nc,onReconnectStart:rc,onReconnectEnd:oc,reconnectRadius:ic=10,edgeUpdaterRadius:sc=10,onNodesChange:ac,onEdgesChange:uc,noDragClassName:cc="nodrag",noWheelClassName:lc="nowheel",noPanClassName:zo="nopan",fitView:dc=!1,fitViewOptions:fc,connectOnClick:hc=!0,attributionPosition:pc,proOptions:gc,defaultEdgeOptions:mc,elevateNodesOnSelect:vc=!0,elevateEdgesOnSelect:yc=!1,disableKeyboardA11y:Lo=!1,autoPanOnConnect:wc=!0,autoPanOnNodeDrag:_c=!0,connectionRadius:Ec=20,isValidConnection:bc,onError:xc,style:Sc,id:$o,nodeDragThreshold:Nc,...Cc},kc)=>{const sn=$o||"1";return P.createElement("div",{...Cc,style:{...Sc,...mg},ref:kc,className:ce(["react-flow",o]),"data-testid":"rf__wrapper",id:$o},P.createElement(Cu,null,P.createElement(cg,{onInit:l,onMove:u,onMoveStart:d,onMoveEnd:f,onNodeClick:a,onEdgeClick:c,onNodeMouseEnter:y,onNodeMouseMove:E,onNodeMouseLeave:v,onNodeContextMenu:b,onNodeDoubleClick:x,nodeTypes:i,edgeTypes:s,connectionLineType:F,connectionLineStyle:B,connectionLineComponent:G,connectionLineContainerStyle:U,selectionKeyCode:I,selectionOnDrag:z,selectionMode:V,deleteKeyCode:S,multiSelectionKeyCode:W,panActivationKeyCode:Y,zoomActivationKeyCode:K,onlyRenderVisibleElements:te,selectNodesOnDrag:Q,defaultViewport:Ze,translateExtent:Ke,minZoom:Xe,maxZoom:Ce,preventScrolling:ze,zoomOnScroll:Qe,zoomOnPinch:dt,zoomOnDoubleClick:Oe,panOnScroll:de,panOnScrollSpeed:be,panOnScrollMode:$e,panOnDrag:Je,onPaneClick:xe,onPaneMouseEnter:Fe,onPaneMouseMove:nn,onPaneMouseLeave:rn,onPaneScroll:ft,onPaneContextMenu:on,onSelectionContextMenu:N,onSelectionStart:O,onSelectionEnd:H,onEdgeContextMenu:He,onEdgeDoubleClick:Xu,onEdgeMouseEnter:Ku,onEdgeMouseMove:ju,onEdgeMouseLeave:Qu,onReconnect:nc??Ju,onReconnectStart:rc??ec,onReconnectEnd:oc??tc,reconnectRadius:ic??sc,defaultMarkerColor:je,noDragClassName:cc,noWheelClassName:lc,noPanClassName:zo,elevateEdgesOnSelect:yc,rfId:sn,disableKeyboardA11y:Lo,nodeOrigin:Z,nodeExtent:Le}),P.createElement(sp,{nodes:e,edges:t,defaultNodes:n,defaultEdges:r,onConnect:h,onConnectStart:_,onConnectEnd:m,onClickConnectStart:g,onClickConnectEnd:p,nodesDraggable:ne,nodesConnectable:le,nodesFocusable:J,edgesFocusable:fe,edgesUpdatable:Ne,elementsSelectable:lt,elevateNodesOnSelect:vc,minZoom:Xe,maxZoom:Ce,nodeExtent:Le,onNodesChange:ac,onEdgesChange:uc,snapToGrid:ee,snapGrid:ie,connectionMode:M,translateExtent:Ke,connectOnClick:hc,defaultEdgeOptions:mc,fitView:dc,fitViewOptions:fc,onNodesDelete:A,onEdgesDelete:D,onNodeDragStart:C,onNodeDrag:q,onNodeDragStop:k,onSelectionDrag:w,onSelectionDragStart:L,onSelectionDragStop:R,noPanClassName:zo,nodeOrigin:Z,rfId:sn,autoPanOnConnect:wc,autoPanOnNodeDrag:_c,onError:xc,connectionRadius:Ec,isValidConnection:bc,nodeDragThreshold:Nc}),P.createElement(op,{onSelectionChange:$}),Do,P.createElement(qh,{proOptions:gc,position:pc}),P.createElement(dp,{rfId:sn,disableKeyboardA11y:Lo})))});vg.displayName="ReactFlow";function ku(e){return t=>{const[n,r]=T.useState(t),o=T.useCallback(i=>r(s=>e(i,s)),[]);return[n,r,o]}}const jm=ku(hu),Qm=ku(Np),Ru=({id:e,x:t,y:n,width:r,height:o,style:i,color:s,strokeColor:a,strokeWidth:c,className:l,borderRadius:u,shapeRendering:d,onClick:f,selected:h})=>{const{background:_,backgroundColor:m}=i||{},g=s||_||m;return P.createElement("rect",{className:ce(["react-flow__minimap-node",{selected:h},l]),x:t,y:n,rx:u,ry:u,width:r,height:o,fill:g,stroke:a,strokeWidth:c,shapeRendering:d,onClick:f?p=>f(p,e):void 0})};Ru.displayName="MiniMapNode";var yg=T.memo(Ru);const wg=e=>e.nodeOrigin,_g=e=>e.getNodes().filter(t=>!t.hidden&&t.width&&t.height),pn=e=>e instanceof Function?e:()=>e;function Eg({nodeStrokeColor:e="transparent",nodeColor:t="#e2e2e2",nodeClassName:n="",nodeBorderRadius:r=5,nodeStrokeWidth:o=2,nodeComponent:i=yg,onClick:s}){const a=re(_g,ue),c=re(wg),l=pn(t),u=pn(e),d=pn(n),f=typeof window>"u"||window.chrome?"crispEdges":"geometricPrecision";return P.createElement(P.Fragment,null,a.map(h=>{const{x:_,y:m}=Ge(h,c).positionAbsolute;return P.createElement(i,{key:h.id,x:_,y:m,width:h.width,height:h.height,style:h.style,selected:h.selected,className:d(h),color:l(h),borderRadius:r,strokeColor:u(h),strokeWidth:o,shapeRendering:f,onClick:s,id:h.id})}))}var bg=T.memo(Eg);const xg=200,Sg=150,Ng=e=>{const t=e.getNodes(),n={x:-e.transform[0]/e.transform[2],y:-e.transform[1]/e.transform[2],width:e.width/e.transform[2],height:e.height/e.transform[2]};return{viewBB:n,boundingRect:t.length>0?Dh(tn(t,e.nodeOrigin),n):n,rfId:e.rfId}},Cg="react-flow__minimap-desc";function Au({style:e,className:t,nodeStrokeColor:n="transparent",nodeColor:r="#e2e2e2",nodeClassName:o="",nodeBorderRadius:i=5,nodeStrokeWidth:s=2,nodeComponent:a,maskColor:c="rgb(240, 240, 240, 0.6)",maskStrokeColor:l="none",maskStrokeWidth:u=1,position:d="bottom-right",onClick:f,onNodeClick:h,pannable:_=!1,zoomable:m=!1,ariaLabel:g="React Flow mini map",inversePan:p=!1,zoomStep:y=10,offsetScale:E=5}){const v=ae(),b=T.useRef(null),{boundingRect:x,viewBB:C,rfId:q}=re(Ng,ue),k=e?.width??xg,A=e?.height??Sg,D=x.width/k,$=x.height/A,L=Math.max(D,$),w=L*k,R=L*A,N=E*L,O=x.x-(w-x.width)/2-N,H=x.y-(R-x.height)/2-N,M=w+N*2,F=R+N*2,B=`${Cg}-${q}`,G=T.useRef(0);G.current=L,T.useEffect(()=>{if(b.current){const I=ge(b.current),z=W=>{const{transform:K,d3Selection:ee,d3Zoom:ie}=v.getState();if(W.sourceEvent.type!=="wheel"||!ee||!ie)return;const te=-W.sourceEvent.deltaY*(W.sourceEvent.deltaMode===1?.05:W.sourceEvent.deltaMode?1:.002)*y,Q=K[2]*Math.pow(2,te);ie.scaleTo(ee,Q)},V=W=>{const{transform:K,d3Selection:ee,d3Zoom:ie,translateExtent:te,width:Q,height:ne}=v.getState();if(W.sourceEvent.type!=="mousemove"||!ee||!ie)return;const le=G.current*Math.max(1,K[2])*(p?-1:1),J={x:K[0]-W.sourceEvent.movementX*le,y:K[1]-W.sourceEvent.movementY*le},Z=[[0,0],[Q,ne]],fe=Ae.translate(J.x,J.y).scale(K[2]),Ne=ie.constrain()(fe,Z,te);ie.transform(ee,Ne)},Y=Da().on("zoom",_?V:null).on("zoom.wheel",m?z:null);return I.call(Y),()=>{I.on("zoom",null)}}},[_,m,p,y]);const U=f?I=>{const z=ye(I);f(I,{x:z[0],y:z[1]})}:void 0,S=h?(I,z)=>{const V=v.getState().nodeInternals.get(z);h(I,V)}:void 0;return P.createElement(bo,{position:d,style:e,className:ce(["react-flow__minimap",t]),"data-testid":"rf__minimap"},P.createElement("svg",{width:k,height:A,viewBox:`${O} ${H} ${M} ${F}`,role:"img","aria-labelledby":B,ref:b,onClick:U},g&&P.createElement("title",{id:B},g),P.createElement(bg,{onClick:S,nodeColor:r,nodeStrokeColor:n,nodeBorderRadius:i,nodeClassName:o,nodeStrokeWidth:s,nodeComponent:a}),P.createElement("path",{className:"react-flow__minimap-mask",d:`M${O-N},${H-N}h${M+N*2}v${F+N*2}h${-M-N*2}z + M${C.x},${C.y}h${C.width}v${C.height}h${-C.width}z`,fill:c,fillRule:"evenodd",stroke:l,strokeWidth:u,pointerEvents:"none"})))}Au.displayName="MiniMap";var Jm=T.memo(Au);function kg(){return P.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32"},P.createElement("path",{d:"M32 18.133H18.133V32h-4.266V18.133H0v-4.266h13.867V0h4.266v13.867H32z"}))}function Rg(){return P.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 5"},P.createElement("path",{d:"M0 0h32v4.2H0z"}))}function Ag(){return P.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 30"},P.createElement("path",{d:"M3.692 4.63c0-.53.4-.938.939-.938h5.215V0H4.708C2.13 0 0 2.054 0 4.63v5.216h3.692V4.631zM27.354 0h-5.2v3.692h5.17c.53 0 .984.4.984.939v5.215H32V4.631A4.624 4.624 0 0027.354 0zm.954 24.83c0 .532-.4.94-.939.94h-5.215v3.768h5.215c2.577 0 4.631-2.13 4.631-4.707v-5.139h-3.692v5.139zm-23.677.94c-.531 0-.939-.4-.939-.94v-5.138H0v5.139c0 2.577 2.13 4.707 4.708 4.707h5.138V25.77H4.631z"}))}function Mg(){return P.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},P.createElement("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0 8 0 4.571 3.429 4.571 7.619v3.048H3.048A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047zm4.724-13.866H7.467V7.619c0-2.59 2.133-4.724 4.723-4.724 2.591 0 4.724 2.133 4.724 4.724v3.048z"}))}function Ig(){return P.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 25 32"},P.createElement("path",{d:"M21.333 10.667H19.81V7.619C19.81 3.429 16.38 0 12.19 0c-4.114 1.828-1.37 2.133.305 2.438 1.676.305 4.42 2.59 4.42 5.181v3.048H3.047A3.056 3.056 0 000 13.714v15.238A3.056 3.056 0 003.048 32h18.285a3.056 3.056 0 003.048-3.048V13.714a3.056 3.056 0 00-3.048-3.047zM12.19 24.533a3.056 3.056 0 01-3.047-3.047 3.056 3.056 0 013.047-3.048 3.056 3.056 0 013.048 3.048 3.056 3.056 0 01-3.048 3.047z"}))}const _t=({children:e,className:t,...n})=>P.createElement("button",{type:"button",className:ce(["react-flow__controls-button",t]),...n},e);_t.displayName="ControlButton";const qg=e=>({isInteractive:e.nodesDraggable||e.nodesConnectable||e.elementsSelectable,minZoomReached:e.transform[2]<=e.minZoom,maxZoomReached:e.transform[2]>=e.maxZoom}),Mu=({style:e,showZoom:t=!0,showFitView:n=!0,showInteractive:r=!0,fitViewOptions:o,onZoomIn:i,onZoomOut:s,onFitView:a,onInteractiveChange:c,className:l,children:u,position:d="bottom-left"})=>{const f=ae(),[h,_]=T.useState(!1),{isInteractive:m,minZoomReached:g,maxZoomReached:p}=re(qg,ue),{zoomIn:y,zoomOut:E,fitView:v}=Io();if(T.useEffect(()=>{_(!0)},[]),!h)return null;const b=()=>{y(),i?.()},x=()=>{E(),s?.()},C=()=>{v(o),a?.()},q=()=>{f.setState({nodesDraggable:!m,nodesConnectable:!m,elementsSelectable:!m}),c?.(!m)};return P.createElement(bo,{className:ce(["react-flow__controls",l]),position:d,style:e,"data-testid":"rf__controls"},t&&P.createElement(P.Fragment,null,P.createElement(_t,{onClick:b,className:"react-flow__controls-zoomin",title:"zoom in","aria-label":"zoom in",disabled:p},P.createElement(kg,null)),P.createElement(_t,{onClick:x,className:"react-flow__controls-zoomout",title:"zoom out","aria-label":"zoom out",disabled:g},P.createElement(Rg,null))),n&&P.createElement(_t,{className:"react-flow__controls-fitview",onClick:C,title:"fit view","aria-label":"fit view"},P.createElement(Ag,null)),r&&P.createElement(_t,{className:"react-flow__controls-interactive",onClick:q,title:"toggle interactivity","aria-label":"toggle interactivity"},m?P.createElement(Ig,null):P.createElement(Mg,null)),u)};Mu.displayName="Controls";var ev=T.memo(Mu),we;(function(e){e.Lines="lines",e.Dots="dots",e.Cross="cross"})(we||(we={}));function Tg({color:e,dimensions:t,lineWidth:n}){return P.createElement("path",{stroke:e,strokeWidth:n,d:`M${t[0]/2} 0 V${t[1]} M0 ${t[1]/2} H${t[0]}`})}function Pg({color:e,radius:t}){return P.createElement("circle",{cx:t,cy:t,r:t,fill:e})}const Dg={[we.Dots]:"#91919a",[we.Lines]:"#eee",[we.Cross]:"#e2e2e2"},zg={[we.Dots]:1,[we.Lines]:1,[we.Cross]:6},Lg=e=>({transform:e.transform,patternId:`pattern-${e.rfId}`});function Iu({id:e,variant:t=we.Dots,gap:n=20,size:r,lineWidth:o=1,offset:i=2,color:s,style:a,className:c}){const l=T.useRef(null),{transform:u,patternId:d}=re(Lg,ue),f=s||Dg[t],h=r||zg[t],_=t===we.Dots,m=t===we.Cross,g=Array.isArray(n)?n:[n,n],p=[g[0]*u[2]||1,g[1]*u[2]||1],y=h*u[2],E=m?[y,y]:p,v=_?[y/i,y/i]:[E[0]/i,E[1]/i];return P.createElement("svg",{className:ce(["react-flow__background",c]),style:{...a,position:"absolute",width:"100%",height:"100%",top:0,left:0},ref:l,"data-testid":"rf__background"},P.createElement("pattern",{id:d+e,x:u[0]%p[0],y:u[1]%p[1],width:p[0],height:p[1],patternUnits:"userSpaceOnUse",patternTransform:`translate(-${v[0]},-${v[1]})`},_?P.createElement(Pg,{color:f,radius:y/i}):P.createElement(Tg,{dimensions:E,color:f,lineWidth:o})),P.createElement("rect",{x:"0",y:"0",width:"100%",height:"100%",fill:`url(#${d+e})`}))}Iu.displayName="Background";var tv=T.memo(Iu);function To(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var gn,wi;function $g(){if(wi)return gn;wi=1;var e=ea(),t=4;function n(r){return e(r,t)}return gn=n,gn}var mn,_i;function qu(){if(_i)return mn;_i=1;var e=Pc();function t(n){return typeof n=="function"?n:e}return mn=t,mn}var vn,Ei;function Tu(){if(Ei)return vn;Ei=1;var e=ta(),t=co(),n=qu(),r=We();function o(i,s){var a=r(i)?e:t;return a(i,n(s))}return vn=o,vn}var yn,bi;function Pu(){return bi||(bi=1,yn=Tu()),yn}var wn,xi;function Og(){if(xi)return wn;xi=1;var e=co();function t(n,r){var o=[];return e(n,function(i,s,a){r(i,s,a)&&o.push(i)}),o}return wn=t,wn}var _n,Si;function Du(){if(Si)return _n;Si=1;var e=Dc(),t=Og(),n=lo(),r=We();function o(i,s){var a=r(i)?e:t;return a(i,n(s,3))}return _n=o,_n}var En,Ni;function Fg(){if(Ni)return En;Ni=1;var e=Object.prototype,t=e.hasOwnProperty;function n(r,o){return r!=null&&t.call(r,o)}return En=n,En}var bn,Ci;function zu(){if(Ci)return bn;Ci=1;var e=Fg(),t=zc();function n(r,o){return r!=null&&t(r,o,e)}return bn=n,bn}var xn,ki;function Hg(){if(ki)return xn;ki=1;var e=na(),t=ra(),n=oa(),r=We(),o=fo(),i=ho(),s=Lc(),a=po(),c="[object Map]",l="[object Set]",u=Object.prototype,d=u.hasOwnProperty;function f(h){if(h==null)return!0;if(o(h)&&(r(h)||typeof h=="string"||typeof h.splice=="function"||i(h)||a(h)||n(h)))return!h.length;var _=t(h);if(_==c||_==l)return!h.size;if(s(h))return!e(h).length;for(var m in h)if(d.call(h,m))return!1;return!0}return xn=f,xn}var Sn,Ri;function Lu(){if(Ri)return Sn;Ri=1;function e(t){return t===void 0}return Sn=e,Sn}var Nn,Ai;function Vg(){if(Ai)return Nn;Ai=1;function e(t,n,r,o){var i=-1,s=t==null?0:t.length;for(o&&s&&(r=t[++i]);++i1?h.setNode(_,d):h.setNode(_)}),this},o.prototype.setNode=function(u,d){return e.has(this._nodes,u)?(arguments.length>1&&(this._nodes[u]=d),this):(this._nodes[u]=arguments.length>1?d:this._defaultNodeLabelFn(u),this._isCompound&&(this._parent[u]=n,this._children[u]={},this._children[n][u]=!0),this._in[u]={},this._preds[u]={},this._out[u]={},this._sucs[u]={},++this._nodeCount,this)},o.prototype.node=function(u){return this._nodes[u]},o.prototype.hasNode=function(u){return e.has(this._nodes,u)},o.prototype.removeNode=function(u){var d=this;if(e.has(this._nodes,u)){var f=function(h){d.removeEdge(d._edgeObjs[h])};delete this._nodes[u],this._isCompound&&(this._removeFromParentsChildList(u),delete this._parent[u],e.each(this.children(u),function(h){d.setParent(h)}),delete this._children[u]),e.each(e.keys(this._in[u]),f),delete this._in[u],delete this._preds[u],e.each(e.keys(this._out[u]),f),delete this._out[u],delete this._sucs[u],--this._nodeCount}return this},o.prototype.setParent=function(u,d){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(e.isUndefined(d))d=n;else{d+="";for(var f=d;!e.isUndefined(f);f=this.parent(f))if(f===u)throw new Error("Setting "+d+" as parent of "+u+" would create a cycle");this.setNode(d)}return this.setNode(u),this._removeFromParentsChildList(u),this._parent[u]=d,this._children[d][u]=!0,this},o.prototype._removeFromParentsChildList=function(u){delete this._children[this._parent[u]][u]},o.prototype.parent=function(u){if(this._isCompound){var d=this._parent[u];if(d!==n)return d}},o.prototype.children=function(u){if(e.isUndefined(u)&&(u=n),this._isCompound){var d=this._children[u];if(d)return e.keys(d)}else{if(u===n)return this.nodes();if(this.hasNode(u))return[]}},o.prototype.predecessors=function(u){var d=this._preds[u];if(d)return e.keys(d)},o.prototype.successors=function(u){var d=this._sucs[u];if(d)return e.keys(d)},o.prototype.neighbors=function(u){var d=this.predecessors(u);if(d)return e.union(d,this.successors(u))},o.prototype.isLeaf=function(u){var d;return this.isDirected()?d=this.successors(u):d=this.neighbors(u),d.length===0},o.prototype.filterNodes=function(u){var d=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});d.setGraph(this.graph());var f=this;e.each(this._nodes,function(m,g){u(g)&&d.setNode(g,m)}),e.each(this._edgeObjs,function(m){d.hasNode(m.v)&&d.hasNode(m.w)&&d.setEdge(m,f.edge(m))});var h={};function _(m){var g=f.parent(m);return g===void 0||d.hasNode(g)?(h[m]=g,g):g in h?h[g]:_(g)}return this._isCompound&&e.each(d.nodes(),function(m){d.setParent(m,_(m))}),d},o.prototype.setDefaultEdgeLabel=function(u){return e.isFunction(u)||(u=e.constant(u)),this._defaultEdgeLabelFn=u,this},o.prototype.edgeCount=function(){return this._edgeCount},o.prototype.edges=function(){return e.values(this._edgeObjs)},o.prototype.setPath=function(u,d){var f=this,h=arguments;return e.reduce(u,function(_,m){return h.length>1?f.setEdge(_,m,d):f.setEdge(_,m),m}),this},o.prototype.setEdge=function(){var u,d,f,h,_=!1,m=arguments[0];typeof m=="object"&&m!==null&&"v"in m?(u=m.v,d=m.w,f=m.name,arguments.length===2&&(h=arguments[1],_=!0)):(u=m,d=arguments[1],f=arguments[3],arguments.length>2&&(h=arguments[2],_=!0)),u=""+u,d=""+d,e.isUndefined(f)||(f=""+f);var g=a(this._isDirected,u,d,f);if(e.has(this._edgeLabels,g))return _&&(this._edgeLabels[g]=h),this;if(!e.isUndefined(f)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(u),this.setNode(d),this._edgeLabels[g]=_?h:this._defaultEdgeLabelFn(u,d,f);var p=c(this._isDirected,u,d,f);return u=p.v,d=p.w,Object.freeze(p),this._edgeObjs[g]=p,i(this._preds[d],u),i(this._sucs[u],d),this._in[d][g]=p,this._out[u][g]=p,this._edgeCount++,this},o.prototype.edge=function(u,d,f){var h=arguments.length===1?l(this._isDirected,arguments[0]):a(this._isDirected,u,d,f);return this._edgeLabels[h]},o.prototype.hasEdge=function(u,d,f){var h=arguments.length===1?l(this._isDirected,arguments[0]):a(this._isDirected,u,d,f);return e.has(this._edgeLabels,h)},o.prototype.removeEdge=function(u,d,f){var h=arguments.length===1?l(this._isDirected,arguments[0]):a(this._isDirected,u,d,f),_=this._edgeObjs[h];return _&&(u=_.v,d=_.w,delete this._edgeLabels[h],delete this._edgeObjs[h],s(this._preds[d],u),s(this._sucs[u],d),delete this._in[d][h],delete this._out[u][h],this._edgeCount--),this},o.prototype.inEdges=function(u,d){var f=this._in[u];if(f){var h=e.values(f);return d?e.filter(h,function(_){return _.v===d}):h}},o.prototype.outEdges=function(u,d){var f=this._out[u];if(f){var h=e.values(f);return d?e.filter(h,function(_){return _.w===d}):h}},o.prototype.nodeEdges=function(u,d){var f=this.inEdges(u,d);if(f)return f.concat(this.outEdges(u,d))};function i(u,d){u[d]?u[d]++:u[d]=1}function s(u,d){--u[d]||delete u[d]}function a(u,d,f,h){var _=""+d,m=""+f;if(!u&&_>m){var g=_;_=m,m=g}return _+r+m+r+(e.isUndefined(h)?t:h)}function c(u,d,f,h){var _=""+d,m=""+f;if(!u&&_>m){var g=_;_=m,m=g}var p={v:_,w:m};return h&&(p.name=h),p}function l(u,d){return a(u,d.v,d.w,d.name)}return $n}var On,Bi;function jg(){return Bi||(Bi=1,On="2.1.8"),On}var Fn,Gi;function Qg(){return Gi||(Gi=1,Fn={Graph:Po(),version:jg()}),Fn}var Hn,Ui;function Jg(){if(Ui)return Hn;Ui=1;var e=ve(),t=Po();Hn={write:n,read:i};function n(s){var a={options:{directed:s.isDirected(),multigraph:s.isMultigraph(),compound:s.isCompound()},nodes:r(s),edges:o(s)};return e.isUndefined(s.graph())||(a.value=e.clone(s.graph())),a}function r(s){return e.map(s.nodes(),function(a){var c=s.node(a),l=s.parent(a),u={v:a};return e.isUndefined(c)||(u.value=c),e.isUndefined(l)||(u.parent=l),u})}function o(s){return e.map(s.edges(),function(a){var c=s.edge(a),l={v:a.v,w:a.w};return e.isUndefined(a.name)||(l.name=a.name),e.isUndefined(c)||(l.value=c),l})}function i(s){var a=new t(s.options).setGraph(s.value);return e.each(s.nodes,function(c){a.setNode(c.v,c.value),c.parent&&a.setParent(c.v,c.parent)}),e.each(s.edges,function(c){a.setEdge({v:c.v,w:c.w,name:c.name},c.value)}),a}return Hn}var Vn,Yi;function em(){if(Yi)return Vn;Yi=1;var e=ve();Vn=t;function t(n){var r={},o=[],i;function s(a){e.has(r,a)||(r[a]=!0,i.push(a),e.each(n.successors(a),s),e.each(n.predecessors(a),s))}return e.each(n.nodes(),function(a){i=[],s(a),i.length&&o.push(i)}),o}return Vn}var Bn,Wi;function Hu(){if(Wi)return Bn;Wi=1;var e=ve();Bn=t;function t(){this._arr=[],this._keyIndices={}}return t.prototype.size=function(){return this._arr.length},t.prototype.keys=function(){return this._arr.map(function(n){return n.key})},t.prototype.has=function(n){return e.has(this._keyIndices,n)},t.prototype.priority=function(n){var r=this._keyIndices[n];if(r!==void 0)return this._arr[r].priority},t.prototype.min=function(){if(this.size()===0)throw new Error("Queue underflow");return this._arr[0].key},t.prototype.add=function(n,r){var o=this._keyIndices;if(n=String(n),!e.has(o,n)){var i=this._arr,s=i.length;return o[n]=s,i.push({key:n,priority:r}),this._decrease(s),!0}return!1},t.prototype.removeMin=function(){this._swap(0,this._arr.length-1);var n=this._arr.pop();return delete this._keyIndices[n.key],this._heapify(0),n.key},t.prototype.decrease=function(n,r){var o=this._keyIndices[n];if(r>this._arr[o].priority)throw new Error("New priority is greater than current priority. Key: "+n+" Old: "+this._arr[o].priority+" New: "+r);this._arr[o].priority=r,this._decrease(o)},t.prototype._heapify=function(n){var r=this._arr,o=2*n,i=o+1,s=n;o>1,!(r[i].priority0&&(d=u.removeMin(),f=l[d],f.distance!==Number.POSITIVE_INFINITY);)c(d).forEach(h);return l}return Gn}var Un,Xi;function tm(){if(Xi)return Un;Xi=1;var e=Vu(),t=ve();Un=n;function n(r,o,i){return t.transform(r.nodes(),function(s,a){s[a]=e(r,a,o,i)},{})}return Un}var Yn,Ki;function Bu(){if(Ki)return Yn;Ki=1;var e=ve();Yn=t;function t(n){var r=0,o=[],i={},s=[];function a(c){var l=i[c]={onStack:!0,lowlink:r,index:r++};if(o.push(c),n.successors(c).forEach(function(f){e.has(i,f)?i[f].onStack&&(l.lowlink=Math.min(l.lowlink,i[f].index)):(a(f),l.lowlink=Math.min(l.lowlink,i[f].lowlink))}),l.lowlink===l.index){var u=[],d;do d=o.pop(),i[d].onStack=!1,u.push(d);while(c!==d);s.push(u)}}return n.nodes().forEach(function(c){e.has(i,c)||a(c)}),s}return Yn}var Wn,ji;function nm(){if(ji)return Wn;ji=1;var e=ve(),t=Bu();Wn=n;function n(r){return e.filter(t(r),function(o){return o.length>1||o.length===1&&r.hasEdge(o[0],o[0])})}return Wn}var Zn,Qi;function rm(){if(Qi)return Zn;Qi=1;var e=ve();Zn=n;var t=e.constant(1);function n(o,i,s){return r(o,i||t,s||function(a){return o.outEdges(a)})}function r(o,i,s){var a={},c=o.nodes();return c.forEach(function(l){a[l]={},a[l][l]={distance:0},c.forEach(function(u){l!==u&&(a[l][u]={distance:Number.POSITIVE_INFINITY})}),s(l).forEach(function(u){var d=u.v===l?u.w:u.v,f=i(u);a[l][d]={distance:f,predecessor:l}})}),c.forEach(function(l){var u=a[l];c.forEach(function(d){var f=a[d];c.forEach(function(h){var _=f[l],m=u[h],g=f[h],p=_.distance+m.distance;p0;){if(l=c.removeMin(),e.has(a,l))s.setEdge(l,a[l]);else{if(d)throw new Error("Input graph is not connected: "+o);d=!0}o.nodeEdges(l).forEach(u)}return s}return er}var tr,is;function um(){return is||(is=1,tr={components:em(),dijkstra:Vu(),dijkstraAll:tm(),findCycles:nm(),floydWarshall:rm(),isAcyclic:om(),postorder:im(),preorder:sm(),prim:am(),tarjan:Bu(),topsort:Gu()}),tr}var nr,ss;function cm(){if(ss)return nr;ss=1;var e=Qg();return nr={Graph:e.Graph,json:Jg(),alg:um(),version:e.version},nr}var rr,as;function _e(){if(as)return rr;as=1;var e;if(typeof To=="function")try{e=cm()}catch{}return e||(e=window.graphlib),rr=e,rr}var or,us;function lm(){if(us)return or;us=1;var e=ea(),t=1,n=4;function r(o){return e(o,t|n)}return or=r,or}var ir,cs;function dm(){if(cs)return ir;cs=1;var e=mo(),t=ca(),n=ua(),r=Zt(),o=Object.prototype,i=o.hasOwnProperty,s=e(function(a,c){a=Object(a);var l=-1,u=c.length,d=u>2?c[2]:void 0;for(d&&n(c[0],c[1],d)&&(u=1);++l1?i[a-1]:void 0,l=a>2?i[2]:void 0;for(c=r.length>3&&typeof c=="function"?(a--,c):void 0,l&&t(i[0],i[1],l)&&(c=a<3?void 0:c,a=1),o=Object(o);++s0;--g)if(m=u[g].dequeue(),m){f=f.concat(s(l,u,d,m,!0));break}}}return f}function s(l,u,d,f,h){var _=h?[]:void 0;return e.forEach(l.inEdges(f.v),function(m){var g=l.edge(m),p=l.node(m.v);h&&_.push({v:m.v,w:m.w}),p.out-=g,c(u,d,p)}),e.forEach(l.outEdges(f.v),function(m){var g=l.edge(m),p=m.w,y=l.node(p);y.in-=g,c(u,d,y)}),l.removeNode(f.v),_}function a(l,u){var d=new t,f=0,h=0;e.forEach(l.nodes(),function(g){d.setNode(g,{v:g,in:0,out:0})}),e.forEach(l.edges(),function(g){var p=d.edge(g.v,g.w)||0,y=u(g),E=p+y;d.setEdge(g.v,g.w,E),h=Math.max(h,d.node(g.v).out+=y),f=Math.max(f,d.node(g.w).in+=y)});var _=e.range(h+f+3).map(function(){return new n}),m=f+1;return e.forEach(d.nodes(),function(g){c(_,m,d.node(g))}),{graph:d,buckets:_,zeroIdx:m}}function c(l,u,d){d.out?d.in?l[d.out-d.in+u].enqueue(d):l[l.length-1].enqueue(d):l[0].enqueue(d)}return xr}var Sr,Rs;function km(){if(Rs)return Sr;Rs=1;var e=oe(),t=Cm();Sr={run:n,undo:o};function n(i){var s=i.graph().acyclicer==="greedy"?t(i,a(i)):r(i);e.forEach(s,function(c){var l=i.edge(c);i.removeEdge(c),l.forwardName=c.name,l.reversed=!0,i.setEdge(c.w,c.v,l,e.uniqueId("rev"))});function a(c){return function(l){return c.edge(l).weight}}}function r(i){var s=[],a={},c={};function l(u){e.has(c,u)||(c[u]=!0,a[u]=!0,e.forEach(i.outEdges(u),function(d){e.has(a,d.w)?s.push(d):l(d.w)}),delete a[u])}return e.forEach(i.nodes(),l),s}function o(i){e.forEach(i.edges(),function(s){var a=i.edge(s);if(a.reversed){i.removeEdge(s);var c=a.forwardName;delete a.reversed,delete a.forwardName,i.setEdge(s.w,s.v,a,c)}})}return Sr}var Nr,As;function he(){if(As)return Nr;As=1;var e=oe(),t=_e().Graph;Nr={addDummyNode:n,simplify:r,asNonCompoundGraph:o,successorWeights:i,predecessorWeights:s,intersectRect:a,buildLayerMatrix:c,normalizeRanks:l,removeEmptyRanks:u,addBorderNode:d,maxRank:f,partition:h,time:_,notime:m};function n(g,p,y,E){var v;do v=e.uniqueId(E);while(g.hasNode(v));return y.dummy=p,g.setNode(v,y),v}function r(g){var p=new t().setGraph(g.graph());return e.forEach(g.nodes(),function(y){p.setNode(y,g.node(y))}),e.forEach(g.edges(),function(y){var E=p.edge(y.v,y.w)||{weight:0,minlen:1},v=g.edge(y);p.setEdge(y.v,y.w,{weight:E.weight+v.weight,minlen:Math.max(E.minlen,v.minlen)})}),p}function o(g){var p=new t({multigraph:g.isMultigraph()}).setGraph(g.graph());return e.forEach(g.nodes(),function(y){g.children(y).length||p.setNode(y,g.node(y))}),e.forEach(g.edges(),function(y){p.setEdge(y,g.edge(y))}),p}function i(g){var p=e.map(g.nodes(),function(y){var E={};return e.forEach(g.outEdges(y),function(v){E[v.w]=(E[v.w]||0)+g.edge(v).weight}),E});return e.zipObject(g.nodes(),p)}function s(g){var p=e.map(g.nodes(),function(y){var E={};return e.forEach(g.inEdges(y),function(v){E[v.v]=(E[v.v]||0)+g.edge(v).weight}),E});return e.zipObject(g.nodes(),p)}function a(g,p){var y=g.x,E=g.y,v=p.x-y,b=p.y-E,x=g.width/2,C=g.height/2;if(!v&&!b)throw new Error("Not possible to find intersection inside of the rectangle");var q,k;return Math.abs(b)*x>Math.abs(v)*C?(b<0&&(C=-C),q=C*v/b,k=C):(v<0&&(x=-x),q=x,k=x*b/v),{x:y+q,y:E+k}}function c(g){var p=e.map(e.range(f(g)+1),function(){return[]});return e.forEach(g.nodes(),function(y){var E=g.node(y),v=E.rank;e.isUndefined(v)||(p[v][E.order]=y)}),p}function l(g){var p=e.min(e.map(g.nodes(),function(y){return g.node(y).rank}));e.forEach(g.nodes(),function(y){var E=g.node(y);e.has(E,"rank")&&(E.rank-=p)})}function u(g){var p=e.min(e.map(g.nodes(),function(b){return g.node(b).rank})),y=[];e.forEach(g.nodes(),function(b){var x=g.node(b).rank-p;y[x]||(y[x]=[]),y[x].push(b)});var E=0,v=g.graph().nodeRankFactor;e.forEach(y,function(b,x){e.isUndefined(b)&&x%v!==0?--E:E&&e.forEach(b,function(C){g.node(C).rank+=E})})}function d(g,p,y,E){var v={width:0,height:0};return arguments.length>=4&&(v.rank=y,v.order=E),n(g,"border",v,p)}function f(g){return e.max(e.map(g.nodes(),function(p){var y=g.node(p).rank;if(!e.isUndefined(y))return y}))}function h(g,p){var y={lhs:[],rhs:[]};return e.forEach(g,function(E){p(E)?y.lhs.push(E):y.rhs.push(E)}),y}function _(g,p){var y=e.now();try{return p()}finally{console.log(g+" time: "+(e.now()-y)+"ms")}}function m(g,p){return p()}return Nr}var Cr,Ms;function Rm(){if(Ms)return Cr;Ms=1;var e=oe(),t=he();Cr={run:n,undo:o};function n(i){i.graph().dummyChains=[],e.forEach(i.edges(),function(s){r(i,s)})}function r(i,s){var a=s.v,c=i.node(a).rank,l=s.w,u=i.node(l).rank,d=s.name,f=i.edge(s),h=f.labelRank;if(u!==c+1){i.removeEdge(s);var _,m,g;for(g=0,++c;ck.lim&&(A=k,D=!0);var $=e.filter(v.edges(),function(L){return D===y(E,E.node(L.v),A)&&D!==y(E,E.node(L.w),A)});return e.minBy($,function(L){return n(v,L)})}function m(E,v,b,x){var C=b.v,q=b.w;E.removeEdge(C,q),E.setEdge(x.v,x.w,{}),d(E),c(E,v),g(E,v)}function g(E,v){var b=e.find(E.nodes(),function(C){return!v.node(C).parent}),x=o(E,b);x=x.slice(1),e.forEach(x,function(C){var q=E.node(C).parent,k=v.edge(C,q),A=!1;k||(k=v.edge(q,C),A=!0),v.node(C).rank=v.node(q).rank+(A?k.minlen:-k.minlen)})}function p(E,v,b){return E.hasEdge(v,b)}function y(E,v,b){return b.low<=v.lim&&v.lim<=b.lim}return Ar}var Mr,Ps;function Mm(){if(Ps)return Mr;Ps=1;var e=Yt(),t=e.longestPath,n=Zu(),r=Am();Mr=o;function o(c){switch(c.graph().ranker){case"network-simplex":a(c);break;case"tight-tree":s(c);break;case"longest-path":i(c);break;default:a(c)}}var i=t;function s(c){t(c),n(c)}function a(c){r(c)}return Mr}var Ir,Ds;function Im(){if(Ds)return Ir;Ds=1;var e=oe();Ir=t;function t(o){var i=r(o);e.forEach(o.graph().dummyChains,function(s){for(var a=o.node(s),c=a.edgeObj,l=n(o,i,c.v,c.w),u=l.path,d=l.lca,f=0,h=u[f],_=!0;s!==c.w;){if(a=o.node(s),_){for(;(h=u[f])!==d&&o.node(h).maxRanku||d>i[f].lim));for(h=f,f=a;(f=o.parent(f))!==h;)l.push(f);return{path:c.concat(l.reverse()),lca:h}}function r(o){var i={},s=0;function a(c){var l=s;e.forEach(o.children(c),a),i[c]={low:l,lim:s++}}return e.forEach(o.children(),a),i}return Ir}var qr,zs;function qm(){if(zs)return qr;zs=1;var e=oe(),t=he();qr={run:n,cleanup:s};function n(a){var c=t.addDummyNode(a,"root",{},"_root"),l=o(a),u=e.max(e.values(l))-1,d=2*u+1;a.graph().nestingRoot=c,e.forEach(a.edges(),function(h){a.edge(h).minlen*=d});var f=i(a)+1;e.forEach(a.children(),function(h){r(a,c,d,f,u,l,h)}),a.graph().nodeRankFactor=d}function r(a,c,l,u,d,f,h){var _=a.children(h);if(!_.length){h!==c&&a.setEdge(c,h,{weight:0,minlen:l});return}var m=t.addBorderNode(a,"_bt"),g=t.addBorderNode(a,"_bb"),p=a.node(h);a.setParent(m,h),p.borderTop=m,a.setParent(g,h),p.borderBottom=g,e.forEach(_,function(y){r(a,c,l,u,d,f,y);var E=a.node(y),v=E.borderTop?E.borderTop:y,b=E.borderBottom?E.borderBottom:y,x=E.borderTop?u:2*u,C=v!==b?1:d-f[h]+1;a.setEdge(m,v,{weight:x,minlen:C,nestingEdge:!0}),a.setEdge(b,g,{weight:x,minlen:C,nestingEdge:!0})}),a.parent(h)||a.setEdge(c,m,{weight:0,minlen:d+f[h]})}function o(a){var c={};function l(u,d){var f=a.children(u);f&&f.length&&e.forEach(f,function(h){l(h,d+1)}),c[u]=d}return e.forEach(a.children(),function(u){l(u,1)}),c}function i(a){return e.reduce(a.edges(),function(c,l){return c+a.edge(l).weight},0)}function s(a){var c=a.graph();a.removeNode(c.nestingRoot),delete c.nestingRoot,e.forEach(a.edges(),function(l){var u=a.edge(l);u.nestingEdge&&a.removeEdge(l)})}return qr}var Tr,Ls;function Tm(){if(Ls)return Tr;Ls=1;var e=oe(),t=he();Tr=n;function n(o){function i(s){var a=o.children(s),c=o.node(s);if(a.length&&e.forEach(a,i),e.has(c,"minRank")){c.borderLeft=[],c.borderRight=[];for(var l=c.minRank,u=c.maxRank+1;l0;)h%2&&(_+=u[h+1]),h=h-1>>1,u[h]+=f.weight;d+=f.weight*_})),d}return zr}var Lr,Hs;function Lm(){if(Hs)return Lr;Hs=1;var e=oe();Lr=t;function t(n,r){return e.map(r,function(o){var i=n.inEdges(o);if(i.length){var s=e.reduce(i,function(a,c){var l=n.edge(c),u=n.node(c.v);return{sum:a.sum+l.weight*u.order,weight:a.weight+l.weight}},{sum:0,weight:0});return{v:o,barycenter:s.sum/s.weight,weight:s.weight}}else return{v:o}})}return Lr}var $r,Vs;function $m(){if(Vs)return $r;Vs=1;var e=oe();$r=t;function t(o,i){var s={};e.forEach(o,function(c,l){var u=s[c.v]={indegree:0,in:[],out:[],vs:[c.v],i:l};e.isUndefined(c.barycenter)||(u.barycenter=c.barycenter,u.weight=c.weight)}),e.forEach(i.edges(),function(c){var l=s[c.v],u=s[c.w];!e.isUndefined(l)&&!e.isUndefined(u)&&(u.indegree++,l.out.push(s[c.w]))});var a=e.filter(s,function(c){return!c.indegree});return n(a)}function n(o){var i=[];function s(l){return function(u){u.merged||(e.isUndefined(u.barycenter)||e.isUndefined(l.barycenter)||u.barycenter>=l.barycenter)&&r(l,u)}}function a(l){return function(u){u.in.push(l),--u.indegree===0&&o.push(u)}}for(;o.length;){var c=o.pop();i.push(c),e.forEach(c.in.reverse(),s(c)),e.forEach(c.out,a(c))}return e.map(e.filter(i,function(l){return!l.merged}),function(l){return e.pick(l,["vs","i","barycenter","weight"])})}function r(o,i){var s=0,a=0;o.weight&&(s+=o.barycenter*o.weight,a+=o.weight),i.weight&&(s+=i.barycenter*i.weight,a+=i.weight),o.vs=i.vs.concat(o.vs),o.barycenter=s/a,o.weight=a,o.i=Math.min(i.i,o.i),i.merged=!0}return $r}var Or,Bs;function Om(){if(Bs)return Or;Bs=1;var e=oe(),t=he();Or=n;function n(i,s){var a=t.partition(i,function(m){return e.has(m,"barycenter")}),c=a.lhs,l=e.sortBy(a.rhs,function(m){return-m.i}),u=[],d=0,f=0,h=0;c.sort(o(!!s)),h=r(u,l,h),e.forEach(c,function(m){h+=m.vs.length,u.push(m.vs),d+=m.barycenter*m.weight,f+=m.weight,h=r(u,l,h)});var _={vs:e.flatten(u,!0)};return f&&(_.barycenter=d/f,_.weight=f),_}function r(i,s,a){for(var c;s.length&&(c=e.last(s)).i<=a;)s.pop(),i.push(c.vs),a++;return a}function o(i){return function(s,a){return s.barycentera.barycenter?1:i?a.i-s.i:s.i-a.i}}return Or}var Fr,Gs;function Fm(){if(Gs)return Fr;Gs=1;var e=oe(),t=Lm(),n=$m(),r=Om();Fr=o;function o(a,c,l,u){var d=a.children(c),f=a.node(c),h=f?f.borderLeft:void 0,_=f?f.borderRight:void 0,m={};h&&(d=e.filter(d,function(b){return b!==h&&b!==_}));var g=t(a,d);e.forEach(g,function(b){if(a.children(b.v).length){var x=o(a,b.v,l,u);m[b.v]=x,e.has(x,"barycenter")&&s(b,x)}});var p=n(g,l);i(p,m);var y=r(p,u);if(h&&(y.vs=e.flatten([h,y.vs,_],!0),a.predecessors(h).length)){var E=a.node(a.predecessors(h)[0]),v=a.node(a.predecessors(_)[0]);e.has(y,"barycenter")||(y.barycenter=0,y.weight=0),y.barycenter=(y.barycenter*y.weight+E.order+v.order)/(y.weight+2),y.weight+=2}return y}function i(a,c){e.forEach(a,function(l){l.vs=e.flatten(l.vs.map(function(u){return c[u]?c[u].vs:u}),!0)})}function s(a,c){e.isUndefined(a.barycenter)?(a.barycenter=c.barycenter,a.weight=c.weight):(a.barycenter=(a.barycenter*a.weight+c.barycenter*c.weight)/(a.weight+c.weight),a.weight+=c.weight)}return Fr}var Hr,Us;function Hm(){if(Us)return Hr;Us=1;var e=oe(),t=_e().Graph;Hr=n;function n(o,i,s){var a=r(o),c=new t({compound:!0}).setGraph({root:a}).setDefaultNodeLabel(function(l){return o.node(l)});return e.forEach(o.nodes(),function(l){var u=o.node(l),d=o.parent(l);(u.rank===i||u.minRank<=i&&i<=u.maxRank)&&(c.setNode(l),c.setParent(l,d||a),e.forEach(o[s](l),function(f){var h=f.v===l?f.w:f.v,_=c.edge(h,l),m=e.isUndefined(_)?0:_.weight;c.setEdge(h,l,{weight:o.edge(f).weight+m})}),e.has(u,"minRank")&&c.setNode(l,{borderLeft:u.borderLeft[i],borderRight:u.borderRight[i]}))}),c}function r(o){for(var i;o.hasNode(i=e.uniqueId("_root")););return i}return Hr}var Vr,Ys;function Vm(){if(Ys)return Vr;Ys=1;var e=oe();Vr=t;function t(n,r,o){var i={},s;e.forEach(o,function(a){for(var c=n.parent(a),l,u;c;){if(l=n.parent(c),l?(u=i[l],i[l]=c):(u=s,s=c),u&&u!==c){r.setEdge(u,c);return}c=l}})}return Vr}var Br,Ws;function Bm(){if(Ws)return Br;Ws=1;var e=oe(),t=Dm(),n=zm(),r=Fm(),o=Hm(),i=Vm(),s=_e().Graph,a=he();Br=c;function c(f){var h=a.maxRank(f),_=l(f,e.range(1,h+1),"inEdges"),m=l(f,e.range(h-1,-1,-1),"outEdges"),g=t(f);d(f,g);for(var p=Number.POSITIVE_INFINITY,y,E=0,v=0;v<4;++E,++v){u(E%2?_:m,E%4>=2),g=a.buildLayerMatrix(f);var b=n(f,g);bA)&&s(E,L,D)})})}function b(x,C){var q=-1,k,A=0;return e.forEach(C,function(D,$){if(p.node(D).dummy==="border"){var L=p.predecessors(D);L.length&&(k=p.node(L[0]).order,v(C,A,$,q,k),A=$,q=k)}v(C,A,C.length,k,x.length)}),C}return e.reduce(y,b),E}function i(p,y){if(p.node(y).dummy)return e.find(p.predecessors(y),function(E){return p.node(E).dummy})}function s(p,y,E){if(y>E){var v=y;y=E,E=v}var b=p[y];b||(p[y]=b={}),b[E]=!0}function a(p,y,E){if(y>E){var v=y;y=E,E=v}return e.has(p[y],E)}function c(p,y,E,v){var b={},x={},C={};return e.forEach(y,function(q){e.forEach(q,function(k,A){b[k]=k,x[k]=k,C[k]=A})}),e.forEach(y,function(q){var k=-1;e.forEach(q,function(A){var D=v(A);if(D.length){D=e.sortBy(D,function(N){return C[N]});for(var $=(D.length-1)/2,L=Math.floor($),w=Math.ceil($);L<=w;++L){var R=D[L];x[A]===A&&ks[n]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}var v=_s(),_=se();const it=oe(_),En=Ps({__proto__:null,default:it},[_]),Xt=new WeakMap,ws=new WeakMap,Et={current:[]};let Nt=!1,gt=0;const mt=new Set,wt=new Map;function Ge(t){for(const o of t){if(Et.current.includes(o))continue;Et.current.push(o),o.recompute();const e=ws.get(o);if(e)for(const s of e){const n=Xt.get(s);n?.length&&Ge(n)}}}function xs(t){const o={prevVal:t.prevState,currentVal:t.state};for(const e of t.listeners)e(o)}function bs(t){const o={prevVal:t.prevState,currentVal:t.state};for(const e of t.listeners)e(o)}function Je(t){if(gt>0&&!wt.has(t)&&wt.set(t,t.prevState),mt.add(t),!(gt>0)&&!Nt)try{for(Nt=!0;mt.size>0;){const o=Array.from(mt);mt.clear();for(const e of o){const s=wt.get(e)??e.prevState;e.prevState=s,xs(e)}for(const e of o){const s=Xt.get(e);s&&(Et.current.push(e),Ge(s))}for(const e of o){const s=Xt.get(e);if(s)for(const n of s)bs(n)}}}finally{Nt=!1,Et.current=[],wt.clear()}}function vt(t){gt++;try{t()}finally{if(gt--,gt===0){const o=mt.values().next().value;o&&Je(o)}}}function Cs(t){return typeof t=="function"}class Ms{constructor(o,e){this.listeners=new Set,this.subscribe=s=>{var n,r;this.listeners.add(s);const i=(r=(n=this.options)==null?void 0:n.onSubscribe)==null?void 0:r.call(n,s,this);return()=>{this.listeners.delete(s),i?.()}},this.prevState=o,this.state=o,this.options=e}setState(o){var e,s,n;this.prevState=this.state,(e=this.options)!=null&&e.updateFn?this.state=this.options.updateFn(this.prevState)(o):Cs(o)?this.state=o(this.prevState):this.state=o,(n=(s=this.options)==null?void 0:s.onUpdate)==null||n.call(s),Je(this)}}const q="__TSR_index",Re="popstate",Pe="beforeunload";function Ls(t){let o=t.getLocation();const e=new Set,s=i=>{o=t.getLocation(),e.forEach(a=>a({location:o,action:i}))},n=i=>{t.notifyOnIndexChange??!0?s(i):o=t.getLocation()},r=async({task:i,navigateOpts:a,...c})=>{if(a?.ignoreBlocker??!1){i();return}const l=t.getBlockers?.()??[],h=c.type==="PUSH"||c.type==="REPLACE";if(typeof document<"u"&&l.length&&h)for(const d of l){const f=Tt(c.path,c.state);if(await d.blockerFn({currentLocation:o,nextLocation:f,action:c.type})){t.onBlocked?.();return}}i()};return{get location(){return o},get length(){return t.getLength()},subscribers:e,subscribe:i=>(e.add(i),()=>{e.delete(i)}),push:(i,a,c)=>{const u=o.state[q];a=we(u+1,a),r({task:()=>{t.pushState(i,a),s({type:"PUSH"})},navigateOpts:c,type:"PUSH",path:i,state:a})},replace:(i,a,c)=>{const u=o.state[q];a=we(u,a),r({task:()=>{t.replaceState(i,a),s({type:"REPLACE"})},navigateOpts:c,type:"REPLACE",path:i,state:a})},go:(i,a)=>{r({task:()=>{t.go(i),n({type:"GO",index:i})},navigateOpts:a,type:"GO"})},back:i=>{r({task:()=>{t.back(i?.ignoreBlocker??!1),n({type:"BACK"})},navigateOpts:i,type:"BACK"})},forward:i=>{r({task:()=>{t.forward(i?.ignoreBlocker??!1),n({type:"FORWARD"})},navigateOpts:i,type:"FORWARD"})},canGoBack:()=>o.state[q]!==0,createHref:i=>t.createHref(i),block:i=>{if(!t.setBlockers)return()=>{};const a=t.getBlockers?.()??[];return t.setBlockers([...a,i]),()=>{const c=t.getBlockers?.()??[];t.setBlockers?.(c.filter(u=>u!==i))}},flush:()=>t.flush?.(),destroy:()=>t.destroy?.(),notify:s}}function we(t,o){o||(o={});const e=ne();return{...o,key:e,__TSR_key:e,[q]:t}}function Es(t){const o=typeof document<"u"?window:void 0,e=o.history.pushState,s=o.history.replaceState;let n=[];const r=()=>n,i=S=>n=S,a=(S=>S),c=(()=>Tt(`${o.location.pathname}${o.location.search}${o.location.hash}`,o.history.state));if(!o.history.state?.__TSR_key&&!o.history.state?.key){const S=ne();o.history.replaceState({[q]:0,key:S,__TSR_key:S},"")}let u=c(),l,h=!1,d=!1,f=!1,p=!1;const m=()=>u;let g,y;const w=()=>{g&&(R._ignoreSubscribers=!0,(g.isPush?o.history.pushState:o.history.replaceState)(g.state,"",g.href),R._ignoreSubscribers=!1,g=void 0,y=void 0,l=void 0)},P=(S,C,M)=>{const T=a(C);y||(l=u),u=Tt(C,M),g={href:T,state:M,isPush:g?.isPush||S==="push"},y||(y=Promise.resolve().then(()=>w()))},b=S=>{u=c(),R.notify({type:S})},E=async()=>{if(d){d=!1;return}const S=c(),C=S.state[q]-u.state[q],M=C===1,T=C===-1,I=!M&&!T||h;h=!1;const Y=I?"GO":T?"BACK":"FORWARD",D=I?{type:"GO",index:C}:{type:T?"BACK":"FORWARD"};if(f)f=!1;else{const X=r();if(typeof document<"u"&&X.length){for(const pe of X)if(await pe.blockerFn({currentLocation:u,nextLocation:S,action:Y})){d=!0,o.history.go(1),R.notify(D);return}}}u=c(),R.notify(D)},x=S=>{if(p){p=!1;return}let C=!1;const M=r();if(typeof document<"u"&&M.length)for(const T of M){const I=T.enableBeforeUnload??!0;if(I===!0){C=!0;break}if(typeof I=="function"&&I()===!0){C=!0;break}}if(C)return S.preventDefault(),S.returnValue=""},R=Ls({getLocation:m,getLength:()=>o.history.length,pushState:(S,C)=>P("push",S,C),replaceState:(S,C)=>P("replace",S,C),back:S=>(S&&(f=!0),p=!0,o.history.back()),forward:S=>{S&&(f=!0),p=!0,o.history.forward()},go:S=>{h=!0,o.history.go(S)},createHref:S=>a(S),flush:w,destroy:()=>{o.history.pushState=e,o.history.replaceState=s,o.removeEventListener(Pe,x,{capture:!0}),o.removeEventListener(Re,E)},onBlocked:()=>{l&&u!==l&&(u=l)},getBlockers:r,setBlockers:i,notifyOnIndexChange:!1});return o.addEventListener(Pe,x,{capture:!0}),o.addEventListener(Re,E),o.history.pushState=function(...S){const C=e.apply(o.history,S);return R._ignoreSubscribers||b("PUSH"),C},o.history.replaceState=function(...S){const C=s.apply(o.history,S);return R._ignoreSubscribers||b("REPLACE"),C},R}function Tt(t,o){const e=t.indexOf("#"),s=t.indexOf("?"),n=ne();return{href:t,pathname:t.substring(0,e>0?s>0?Math.min(e,s):e:s>0?s:t.length),hash:e>-1?t.substring(e):"",search:s>-1?t.slice(s,e===-1?void 0:e):"",state:o||{[q]:0,key:n,__TSR_key:n}}}function ne(){return(Math.random()+1).toString(36).substring(7)}function Zt(t){return t[t.length-1]}function Ts(t){return typeof t=="function"}function Q(t,o){return Ts(t)?t(o):t}const Is=Object.prototype.hasOwnProperty;function B(t,o){if(t===o)return t;const e=o,s=Ce(t)&&Ce(e);if(!s&&!(It(t)&&It(e)))return e;const n=s?t:xe(t);if(!n)return e;const r=s?e:xe(e);if(!r)return e;const i=n.length,a=r.length,c=s?new Array(a):{};let u=0;for(let l=0;l"u")return!0;const e=o.prototype;return!(!be(e)||!e.hasOwnProperty("isPrototypeOf"))}function be(t){return Object.prototype.toString.call(t)==="[object Object]"}function Ce(t){return Array.isArray(t)&&t.length===Object.keys(t).length}function tt(t,o,e){if(t===o)return!0;if(typeof t!=typeof o)return!1;if(Array.isArray(t)&&Array.isArray(o)){if(t.length!==o.length)return!1;for(let s=0,n=t.length;sn||!tt(t[i],o[i],e)))return!1;return n===r}return!1}function at(t){let o,e;const s=new Promise((n,r)=>{o=n,e=r});return s.status="pending",s.resolve=n=>{s.status="resolved",s.value=n,o(n),t?.(n)},s.reject=n=>{s.status="rejected",e(n)},s}function G(t){return!!(t&&typeof t=="object"&&typeof t.then=="function")}const Os=Array.from(new Map([["%","%25"],["\\","%5C"]]).values());function Me(t,o=Os){function e(n,r,i=0){for(let a=i;a{try{return decodeURI(a)}catch{return a}})}}if(t===""||!/%[0-9A-Fa-f]{2}/g.test(t))return t;const s=t.replaceAll(/%[0-9a-f]{2}/g,n=>n.toUpperCase());return e(s,o)}var ks="Invariant failed";function K(t,o){if(!t)throw new Error(ks)}const N=0,st=1,ct=2,lt=3;function U(t){return re(t.filter(o=>o!==void 0).join("/"))}function re(t){return t.replace(/\/{2,}/g,"/")}function ie(t){return t==="/"?t:t.replace(/^\/{1,}/,"")}function J(t){return t==="/"?t:t.replace(/\/{1,}$/,"")}function Mt(t){return J(ie(t))}function Ot(t,o){return t?.endsWith("/")&&t!=="/"&&t!==`${o}/`?t.slice(0,-1):t}function Fs(t,o,e){return Ot(t,e)===Ot(o,e)}function As(t){const{type:o,value:e}=t;if(o===N)return e;const{prefixSegment:s,suffixSegment:n}=t;if(o===st){const r=e.substring(1);if(s&&n)return`${s}{$${r}}${n}`;if(s)return`${s}{$${r}}`;if(n)return`{$${r}}${n}`}if(o===lt){const r=e.substring(1);return s&&n?`${s}{-$${r}}${n}`:s?`${s}{-$${r}}`:n?`{-$${r}}${n}`:`{-$${r}}`}if(o===ct){if(s&&n)return`${s}{$}${n}`;if(s)return`${s}{$}`;if(n)return`{$}${n}`}return e}function Bs({base:t,to:o,trailingSlash:e="never",parseCache:s}){let n=ut(t,s).slice();const r=ut(o,s);n.length>1&&Zt(n)?.value==="/"&&n.pop();for(let c=0,u=r.length;c1&&(Zt(n).value==="/"?e==="never"&&n.pop():e==="always"&&n.push({type:N,value:"/"}));const i=n.map(As);return U(i)}const ut=(t,o)=>{if(!t)return[];const e=o?.get(t);if(e)return e;const s=Ws(t);return o?.set(t,s),s},Ds=/^\$.{1,}$/,zs=/^(.*?)\{(\$[a-zA-Z_$][a-zA-Z0-9_$]*)\}(.*)$/,$s=/^(.*?)\{-(\$[a-zA-Z_$][a-zA-Z0-9_$]*)\}(.*)$/,js=/^\$$/,Ns=/^(.*?)\{\$\}(.*)$/;function Ws(t){t=re(t);const o=[];if(t.slice(0,1)==="/"&&(t=t.substring(1),o.push({type:N,value:"/"})),!t)return o;const e=t.split("/").filter(Boolean);return o.push(...e.map(s=>{const n=s.match(Ns);if(n){const a=n[1],c=n[2];return{type:ct,value:"$",prefixSegment:a||void 0,suffixSegment:c||void 0}}const r=s.match($s);if(r){const a=r[1],c=r[2],u=r[3];return{type:lt,value:c,prefixSegment:a||void 0,suffixSegment:u||void 0}}const i=s.match(zs);if(i){const a=i[1],c=i[2],u=i[3];return{type:st,value:""+c,prefixSegment:a||void 0,suffixSegment:u||void 0}}if(Ds.test(s)){const a=s.substring(1);return{type:st,value:"$"+a,prefixSegment:void 0,suffixSegment:void 0}}return js.test(s)?{type:ct,value:"$",prefixSegment:void 0,suffixSegment:void 0}:{type:N,value:s}})),t.slice(-1)==="/"&&(t=t.substring(1),o.push({type:N,value:"/"})),o}function Wt({path:t,params:o,decodeCharMap:e,parseCache:s}){const n=ut(t,s);function r(u){const l=o[u],h=typeof l=="string";return u==="*"||u==="_splat"?h?encodeURI(l):l:h?Vs(l,e):l}let i=!1;const a={},c=U(n.map(u=>{if(u.type===N)return u.value;if(u.type===ct){a._splat=o._splat,a["*"]=o._splat;const l=u.prefixSegment||"",h=u.suffixSegment||"";if(!o._splat)return i=!0,l||h?`${l}${h}`:void 0;const d=r("_splat");return`${l}${d}${h}`}if(u.type===st){const l=u.value.substring(1);!i&&!(l in o)&&(i=!0),a[l]=o[l];const h=u.prefixSegment||"",d=u.suffixSegment||"";return`${h}${r(l)??"undefined"}${d}`}if(u.type===lt){const l=u.value.substring(1),h=u.prefixSegment||"",d=u.suffixSegment||"";return!(l in o)||o[l]==null?h||d?`${h}${d}`:void 0:(a[l]=o[l],`${h}${r(l)??""}${d}`)}return u.value}));return{usedParams:a,interpolatedPath:c,isMissingParams:i}}function Vs(t,o){let e=encodeURIComponent(t);if(o)for(const[s,n]of o)e=e.replaceAll(s,n);return e}function Qt(t,o,e){const s=Us(t,o,e);if(!(o.to&&!s))return s??{}}function Us(t,{to:o,fuzzy:e,caseSensitive:s},n){const r=o,i=ut(t.startsWith("/")?t:`/${t}`,n),a=ut(r.startsWith("/")?r:`/${r}`,n),c={};return Ks(i,a,c,e,s)?c:void 0}function Ks(t,o,e,s,n){let r=0,i=0;for(;rm.value)));h&&p.startsWith(h)&&(p=p.slice(h.length)),d&&p.endsWith(d)&&(p=p.slice(0,p.length-d.length)),l=p}else l=decodeURI(U(u.map(h=>h.value)));return e["*"]=l,e._splat=l,!0}if(c.type===N){if(c.value==="/"&&!a?.value){i++;continue}if(a){if(n){if(c.value!==a.value)return!1}else if(c.value.toLowerCase()!==a.value.toLowerCase())return!1;r++,i++;continue}else return!1}if(c.type===st){if(!a||a.value==="/")return!1;let u="",l=!1;if(c.prefixSegment||c.suffixSegment){const h=c.prefixSegment||"",d=c.suffixSegment||"",f=a.value;if(h&&!f.startsWith(h)||d&&!f.endsWith(d))return!1;let p=f;h&&p.startsWith(h)&&(p=p.slice(h.length)),d&&p.endsWith(d)&&(p=p.slice(0,p.length-d.length)),u=decodeURIComponent(p),l=!0}else u=decodeURIComponent(a.value),l=!0;l&&(e[c.value.substring(1)]=u,r++),i++;continue}if(c.type===lt){if(!a){i++;continue}if(a.value==="/"){i++;continue}let u="",l=!1;if(c.prefixSegment||c.suffixSegment){const h=c.prefixSegment||"",d=c.suffixSegment||"",f=a.value;if((!h||f.startsWith(h))&&(!d||f.endsWith(d))){let p=f;h&&p.startsWith(h)&&(p=p.slice(h.length)),d&&p.endsWith(d)&&(p=p.slice(0,p.length-d.length)),u=decodeURIComponent(p),l=!0}}else{let h=!0;for(let d=i+1;d=o.length)return e["**"]=U(t.slice(r).map(u=>u.value)),!!s&&o[o.length-1]?.value!=="/";if(i=t.length){for(let u=i;u{if(s.isRoot||!s.path)return;const r=ie(s.fullPath);let i=ut(r),a=0;for(;i.length>a+1&&i[a]?.value==="/";)a++;a>0&&(i=i.slice(a));let c=0,u=!1;const l=i.map((h,d)=>{if(h.value==="/")return Hs;if(h.type===N)return qs;let f;h.type===st?f=Gs:h.type===lt?(f=Js,c++):f=Ys;for(let p=d+1;p{const r=Math.min(s.scores.length,n.scores.length);for(let i=0;in.parsed[i].value?1:-1;return s.index-n.index}).map((s,n)=>(s.child.rank=n,s.child))}function so({routeTree:t,initRoute:o}){const e={},s={},n=i=>{i.forEach((a,c)=>{o?.(a,c);const u=e[a.id];if(K(!u,`Duplicate routes found with id: ${String(a.id)}`),e[a.id]=a,!a.isRoot&&a.path){const h=J(a.fullPath);(!s[h]||a.fullPath.endsWith("/"))&&(s[h]=a)}const l=a.children;l?.length&&n(l)})};n([t]);const r=eo(Object.values(e));return{routesById:e,routesByPath:s,flatRoutes:r}}function $(t){return!!t?.isNotFound}function oo(){try{if(typeof window<"u"&&typeof window.sessionStorage=="object")return window.sessionStorage}catch{}}const kt="tsr-scroll-restoration-v1_3",no=(t,o)=>{let e;return(...s)=>{e||(e=setTimeout(()=>{t(...s),e=null},o))}};function ro(){const t=oo();if(!t)return null;const o=t.getItem(kt);let e=o?JSON.parse(o):{};return{state:e,set:s=>(e=Q(s,e)||e,t.setItem(kt,JSON.stringify(e)))}}const xt=ro(),te=t=>t.state.__TSR_key||t.href;function io(t){const o=[];let e;for(;e=t.parentNode;)o.push(`${t.tagName}:nth-child(${Array.prototype.indexOf.call(e.children,t)+1})`),t=e;return`${o.reverse().join(" > ")}`.toLowerCase()}let Ft=!1;function Ye({storageKey:t,key:o,behavior:e,shouldScrollRestoration:s,scrollToTopSelectors:n,location:r}){let i;try{i=JSON.parse(sessionStorage.getItem(t)||"{}")}catch(u){console.error(u);return}const a=o||window.history.state?.__TSR_key,c=i[a];Ft=!0;t:{if(s&&c&&Object.keys(c).length>0){for(const h in c){const d=c[h];if(h==="window")window.scrollTo({top:d.scrollY,left:d.scrollX,behavior:e});else if(h){const f=document.querySelector(h);f&&(f.scrollLeft=d.scrollX,f.scrollTop=d.scrollY)}}break t}const u=(r??window.location).hash.split("#",2)[1];if(u){const h=window.history.state?.__hashScrollIntoViewOptions??!0;if(h){const d=document.getElementById(u);d&&d.scrollIntoView(h)}break t}const l={top:0,left:0,behavior:e};if(window.scrollTo(l),n)for(const h of n){if(h==="window")continue;const d=typeof h=="function"?h():document.querySelector(h);d&&d.scrollTo(l)}}Ft=!1}function ao(t,o){if(!xt&&!t.isServer||((t.options.scrollRestoration??!1)&&(t.isScrollRestoring=!0),t.isServer||t.isScrollRestorationSetup||!xt))return;t.isScrollRestorationSetup=!0,Ft=!1;const s=t.options.getScrollRestorationKey||te;window.history.scrollRestoration="manual";const n=r=>{if(Ft||!t.isScrollRestoring)return;let i="";if(r.target===document||r.target===window)i="window";else{const c=r.target.getAttribute("data-scroll-restoration-id");c?i=`[data-scroll-restoration-id="${c}"]`:i=io(r.target)}const a=s(t.state.location);xt.set(c=>{const u=c[a]||={},l=u[i]||={};if(i==="window")l.scrollX=window.scrollX||0,l.scrollY=window.scrollY||0;else if(i){const h=document.querySelector(i);h&&(l.scrollX=h.scrollLeft||0,l.scrollY=h.scrollTop||0)}return c})};typeof document<"u"&&document.addEventListener("scroll",no(n,100),!0),t.subscribe("onRendered",r=>{const i=s(r.toLocation);if(!t.resetNextScroll){t.resetNextScroll=!0;return}typeof t.options.scrollRestoration=="function"&&!t.options.scrollRestoration({location:t.latestLocation})||(Ye({storageKey:kt,key:i,behavior:t.options.scrollRestorationBehavior,shouldScrollRestoration:t.isScrollRestoring,scrollToTopSelectors:t.options.scrollToTopSelectors,location:t.history.location}),t.isScrollRestoring&&xt.set(a=>(a[i]||={},a)))})}function co(t){if(typeof document<"u"&&document.querySelector){const o=t.state.location.state.__hashScrollIntoViewOptions??!0;if(o&&t.state.location.hash!==""){const e=document.getElementById(t.state.location.hash);e&&e.scrollIntoView(o)}}}function lo(t,o=String){const e=new URLSearchParams;for(const s in t){const n=t[s];n!==void 0&&e.set(s,o(n))}return e.toString()}function Vt(t){return t?t==="false"?!1:t==="true"?!0:+t*0===0&&+t+""===t?+t:t:""}function uo(t){const o=new URLSearchParams(t),e={};for(const[s,n]of o.entries()){const r=e[s];r==null?e[s]=Vt(n):Array.isArray(r)?r.push(Vt(n)):e[s]=[r,Vt(n)]}return e}const ho=po(JSON.parse),fo=mo(JSON.stringify,JSON.parse);function po(t){return o=>{o[0]==="?"&&(o=o.substring(1));const e=uo(o);for(const s in e){const n=e[s];if(typeof n=="string")try{e[s]=t(n)}catch{}}return e}}function mo(t,o){const e=typeof o=="function";function s(n){if(typeof n=="object"&&n!==null)try{return t(n)}catch{}else if(e&&typeof n=="string")try{return o(n),t(n)}catch{}return n}return n=>{const r=lo(n,s);return r?`?${r}`:""}}const A="__root__";function go(t){if(t.statusCode=t.statusCode||t.code||307,!t.reloadDocument&&typeof t.href=="string")try{new URL(t.href),t.reloadDocument=!0}catch{}const o=new Headers(t.headers);t.href&&o.get("Location")===null&&o.set("Location",t.href);const e=new Response(null,{status:t.statusCode,headers:o});if(e.options=t,t.throw)throw e;return e}function j(t){return t instanceof Response&&!!t.options}function vo(t){const o=new Map;let e,s;const n=r=>{r.next&&(r.prev?(r.prev.next=r.next,r.next.prev=r.prev,r.next=void 0,s&&(s.next=r,r.prev=s)):(r.next.prev=void 0,e=r.next,r.next=void 0,s&&(r.prev=s,s.next=r)),s=r)};return{get(r){const i=o.get(r);if(i)return n(i),i.value},set(r,i){if(o.size>=t&&e){const c=e;o.delete(c.key),c.next&&(e=c.next,c.next.prev=void 0),c===s&&(s=void 0)}const a=o.get(r);if(a)a.value=i,n(a);else{const c={key:r,value:i,prev:s};s&&(s.next=c),s=c,e||(e=c),o.set(r,c)}}}}const Lt=t=>{if(!t.rendered)return t.rendered=!0,t.onReady?.()},Bt=(t,o)=>!!(t.preload&&!t.router.state.matches.some(e=>e.id===o)),Xe=(t,o)=>{const e=t.router.routesById[o.routeId??""]??t.router.routeTree;!e.options.notFoundComponent&&t.router.options?.defaultNotFoundComponent&&(e.options.notFoundComponent=t.router.options.defaultNotFoundComponent),K(e.options.notFoundComponent);const s=t.matches.find(n=>n.routeId===e.id);K(s,"Could not find match for route: "+e.id),t.updateMatch(s.id,n=>({...n,status:"notFound",error:o,isFetching:!1})),o.routerCode==="BEFORE_LOAD"&&e.parentRoute&&(o.routeId=e.parentRoute.id,Xe(t,o))},H=(t,o,e)=>{if(!(!j(e)&&!$(e))){if(j(e)&&e.redirectHandled&&!e.options.reloadDocument)throw e;if(o){o._nonReactive.beforeLoadPromise?.resolve(),o._nonReactive.loaderPromise?.resolve(),o._nonReactive.beforeLoadPromise=void 0,o._nonReactive.loaderPromise=void 0;const s=j(e)?"redirected":"notFound";o._nonReactive.error=e,t.updateMatch(o.id,n=>({...n,status:s,isFetching:!1,error:e})),$(e)&&!e.routeId&&(e.routeId=o.routeId),o._nonReactive.loadPromise?.resolve()}throw j(e)?(t.rendered=!0,e.options._fromLocation=t.location,e.redirectHandled=!0,e=t.router.resolveRedirect(e),e):(Xe(t,e),e)}},Ze=(t,o)=>{const e=t.router.getMatch(o);return!!(!t.router.isServer&&e._nonReactive.dehydrated||t.router.isServer&&e.ssr===!1)},dt=(t,o,e,s)=>{const{id:n,routeId:r}=t.matches[o],i=t.router.looseRoutesById[r];if(e instanceof Promise)throw e;e.routerCode=s,t.firstBadMatchIndex??=o,H(t,t.router.getMatch(n),e);try{i.options.onError?.(e)}catch(a){e=a,H(t,t.router.getMatch(n),e)}t.updateMatch(n,a=>(a._nonReactive.beforeLoadPromise?.resolve(),a._nonReactive.beforeLoadPromise=void 0,a._nonReactive.loadPromise?.resolve(),{...a,error:e,status:"error",isFetching:!1,updatedAt:Date.now(),abortController:new AbortController}))},yo=(t,o,e,s)=>{const n=t.router.getMatch(o),r=t.matches[e-1]?.id,i=r?t.router.getMatch(r):void 0;if(t.router.isShell()){n.ssr=s.id===A;return}if(i?.ssr===!1){n.ssr=!1;return}const a=f=>f===!0&&i?.ssr==="data-only"?"data-only":f,c=t.router.options.defaultSsr??!0;if(s.options.ssr===void 0){n.ssr=a(c);return}if(typeof s.options.ssr!="function"){n.ssr=a(s.options.ssr);return}const{search:u,params:l}=n,h={search:bt(u,n.searchError),params:bt(l,n.paramsError),location:t.location,matches:t.matches.map(f=>({index:f.index,pathname:f.pathname,fullPath:f.fullPath,staticData:f.staticData,id:f.id,routeId:f.routeId,search:bt(f.search,f.searchError),params:bt(f.params,f.paramsError),ssr:f.ssr}))},d=s.options.ssr(h);if(G(d))return d.then(f=>{n.ssr=a(f??c)});n.ssr=a(d??c)},Qe=(t,o,e,s)=>{if(s._nonReactive.pendingTimeout!==void 0)return;const n=e.options.pendingMs??t.router.options.defaultPendingMs;if(!!(t.onReady&&!t.router.isServer&&!Bt(t,o)&&(e.options.loader||e.options.beforeLoad||ss(e))&&typeof n=="number"&&n!==1/0&&(e.options.pendingComponent??t.router.options?.defaultPendingComponent))){const i=setTimeout(()=>{Lt(t)},n);s._nonReactive.pendingTimeout=i}},So=(t,o,e)=>{const s=t.router.getMatch(o);if(!s._nonReactive.beforeLoadPromise&&!s._nonReactive.loaderPromise)return;Qe(t,o,e,s);const n=()=>{const r=t.router.getMatch(o);r.preload&&(r.status==="redirected"||r.status==="notFound")&&H(t,r,r.error)};return s._nonReactive.beforeLoadPromise?s._nonReactive.beforeLoadPromise.then(n):n()},_o=(t,o,e,s)=>{const n=t.router.getMatch(o),r=n._nonReactive.loadPromise;n._nonReactive.loadPromise=at(()=>{r?.resolve()});const{paramsError:i,searchError:a}=n;i&&dt(t,e,i,"PARSE_PARAMS"),a&&dt(t,e,a,"VALIDATE_SEARCH"),Qe(t,o,s,n);const c=new AbortController,u=t.matches[e-1]?.id,d={...(u?t.router.getMatch(u):void 0)?.context??t.router.options.context??void 0,...n.__routeContext};let f=!1;const p=()=>{f||(f=!0,t.updateMatch(o,R=>({...R,isFetching:"beforeLoad",fetchCount:R.fetchCount+1,abortController:c,context:d})))},m=()=>{n._nonReactive.beforeLoadPromise?.resolve(),n._nonReactive.beforeLoadPromise=void 0,t.updateMatch(o,R=>({...R,isFetching:!1}))};if(!s.options.beforeLoad){vt(()=>{p(),m()});return}n._nonReactive.beforeLoadPromise=at();const{search:g,params:y,cause:w}=n,P=Bt(t,o),b={search:g,abortController:c,params:y,preload:P,context:d,location:t.location,navigate:R=>t.router.navigate({...R,_fromLocation:t.location}),buildLocation:t.router.buildLocation,cause:P?"preload":w,matches:t.matches,...t.router.options.additionalContext},E=R=>{if(R===void 0){vt(()=>{p(),m()});return}(j(R)||$(R))&&(p(),dt(t,e,R,"BEFORE_LOAD")),vt(()=>{p(),t.updateMatch(o,S=>({...S,__beforeLoadContext:R,context:{...S.context,...R}})),m()})};let x;try{if(x=s.options.beforeLoad(b),G(x))return p(),x.catch(R=>{dt(t,e,R,"BEFORE_LOAD")}).then(E)}catch(R){p(),dt(t,e,R,"BEFORE_LOAD")}E(x)},Ro=(t,o)=>{const{id:e,routeId:s}=t.matches[o],n=t.router.looseRoutesById[s],r=()=>{if(t.router.isServer){const c=yo(t,e,o,n);if(G(c))return c.then(a)}return a()},i=()=>_o(t,e,o,n),a=()=>{if(Ze(t,e))return;const c=So(t,e,n);return G(c)?c.then(i):i()};return r()},yt=(t,o,e)=>{const s=t.router.getMatch(o);if(!s||!e.options.head&&!e.options.scripts&&!e.options.headers)return;const n={matches:t.matches,match:s,params:s.params,loaderData:s.loaderData};return Promise.all([e.options.head?.(n),e.options.scripts?.(n),e.options.headers?.(n)]).then(([r,i,a])=>{const c=r?.meta,u=r?.links,l=r?.scripts,h=r?.styles;return{meta:c,links:u,headScripts:l,headers:a,scripts:i,styles:h}})},ts=(t,o,e,s)=>{const n=t.matchPromises[e-1],{params:r,loaderDeps:i,abortController:a,cause:c}=t.router.getMatch(o);let u=t.router.options.context??{};for(let h=0;h<=e;h++){const d=t.matches[h];if(!d)continue;const f=t.router.getMatch(d.id);f&&(u={...u,...f.__routeContext??{},...f.__beforeLoadContext??{}})}const l=Bt(t,o);return{params:r,deps:i,preload:!!l,parentMatchPromise:n,abortController:a,context:u,location:t.location,navigate:h=>t.router.navigate({...h,_fromLocation:t.location}),cause:l?"preload":c,route:s,...t.router.options.additionalContext}},Ie=async(t,o,e,s)=>{try{const n=t.router.getMatch(o);try{(!t.router.isServer||n.ssr===!0)&&es(s);const r=s.options.loader?.(ts(t,o,e,s)),i=s.options.loader&&G(r);if(!!(i||s._lazyPromise||s._componentsPromise||s.options.head||s.options.scripts||s.options.headers||n._nonReactive.minPendingPromise)&&t.updateMatch(o,h=>({...h,isFetching:"loader"})),s.options.loader){const h=i?await r:r;H(t,t.router.getMatch(o),h),h!==void 0&&t.updateMatch(o,d=>({...d,loaderData:h}))}s._lazyPromise&&await s._lazyPromise;const c=yt(t,o,s),u=c?await c:void 0,l=n._nonReactive.minPendingPromise;l&&await l,s._componentsPromise&&await s._componentsPromise,t.updateMatch(o,h=>({...h,error:void 0,status:"success",isFetching:!1,updatedAt:Date.now(),...u}))}catch(r){let i=r;const a=n._nonReactive.minPendingPromise;a&&await a,$(r)&&await s.options.notFoundComponent?.preload?.(),H(t,t.router.getMatch(o),r);try{s.options.onError?.(r)}catch(l){i=l,H(t,t.router.getMatch(o),l)}const c=yt(t,o,s),u=c?await c:void 0;t.updateMatch(o,l=>({...l,error:i,status:"error",isFetching:!1,...u}))}}catch(n){const r=t.router.getMatch(o);if(r){const i=yt(t,o,s);if(i){const a=await i;t.updateMatch(o,c=>({...c,...a}))}r._nonReactive.loaderPromise=void 0}H(t,r,n)}},Po=async(t,o)=>{const{id:e,routeId:s}=t.matches[o];let n=!1,r=!1;const i=t.router.looseRoutesById[s];if(Ze(t,e)){if(t.router.isServer){const u=yt(t,e,i);if(u){const l=await u;t.updateMatch(e,h=>({...h,...l}))}return t.router.getMatch(e)}}else{const u=t.router.getMatch(e);if(u._nonReactive.loaderPromise){if(u.status==="success"&&!t.sync&&!u.preload)return u;await u._nonReactive.loaderPromise;const l=t.router.getMatch(e),h=l._nonReactive.error||l.error;h&&H(t,l,h)}else{const l=Date.now()-u.updatedAt,h=Bt(t,e),d=h?i.options.preloadStaleTime??t.router.options.defaultPreloadStaleTime??3e4:i.options.staleTime??t.router.options.defaultStaleTime??0,f=i.options.shouldReload,p=typeof f=="function"?f(ts(t,e,o,i)):f,m=!!h&&!t.router.state.matches.some(P=>P.id===e),g=t.router.getMatch(e);g._nonReactive.loaderPromise=at(),m!==g.preload&&t.updateMatch(e,P=>({...P,preload:m}));const{status:y,invalid:w}=g;if(n=y==="success"&&(w||(p??l>d)),!(h&&i.options.preload===!1))if(n&&!t.sync)r=!0,(async()=>{try{await Ie(t,e,o,i);const P=t.router.getMatch(e);P._nonReactive.loaderPromise?.resolve(),P._nonReactive.loadPromise?.resolve(),P._nonReactive.loaderPromise=void 0}catch(P){j(P)&&await t.router.navigate(P.options)}})();else if(y!=="success"||n&&t.sync)await Ie(t,e,o,i);else{const P=yt(t,e,i);if(P){const b=await P;t.updateMatch(e,E=>({...E,...b}))}}}}const a=t.router.getMatch(e);r||(a._nonReactive.loaderPromise?.resolve(),a._nonReactive.loadPromise?.resolve()),clearTimeout(a._nonReactive.pendingTimeout),a._nonReactive.pendingTimeout=void 0,r||(a._nonReactive.loaderPromise=void 0),a._nonReactive.dehydrated=void 0;const c=r?a.isFetching:!1;return c!==a.isFetching||a.invalid!==!1?(t.updateMatch(e,u=>({...u,isFetching:c,invalid:!1})),t.router.getMatch(e)):a};async function Oe(t){const o=Object.assign(t,{matchPromises:[]});!o.router.isServer&&o.router.state.matches.some(e=>e._forcePending)&&Lt(o);try{for(let n=0;n{const{id:e,...s}=o.options;Object.assign(t.options,s),t._lazyLoaded=!0,t._lazyPromise=void 0}):t._lazyLoaded=!0),!t._componentsLoaded&&t._componentsPromise===void 0){const o=()=>{const e=[];for(const s of os){const n=t.options[s]?.preload;n&&e.push(n())}if(e.length)return Promise.all(e).then(()=>{t._componentsLoaded=!0,t._componentsPromise=void 0});t._componentsLoaded=!0,t._componentsPromise=void 0};t._componentsPromise=t._lazyPromise?t._lazyPromise.then(o):o()}return t._componentsPromise}function bt(t,o){return o?{status:"error",error:o}:{status:"success",value:t}}function ss(t){for(const o of os)if(t.options[o]?.preload)return!0;return!1}const os=["component","errorComponent","pendingComponent","notFoundComponent"];function wo(t){return{input:({url:o})=>{for(const e of t)o=ns(e,o);return o},output:({url:o})=>{for(let e=t.length-1;e>=0;e--)o=rs(t[e],o);return o}}}function xo(t){const o=Mt(t.basepath),e=`/${o}`,s=`${e}/`,n=t.caseSensitive?e:e.toLowerCase(),r=t.caseSensitive?s:s.toLowerCase();return{input:({url:i})=>{const a=t.caseSensitive?i.pathname:i.pathname.toLowerCase();return a===n?i.pathname="/":a.startsWith(r)&&(i.pathname=i.pathname.slice(e.length)),i},output:({url:i})=>(i.pathname=U(["/",o,i.pathname]),i)}}function ns(t,o){const e=t?.input?.({url:o});if(e){if(typeof e=="string")return new URL(e);if(e instanceof URL)return e}return o}function rs(t,o){const e=t?.output?.({url:o});if(e){if(typeof e=="string")return new URL(e);if(e instanceof URL)return e}return o}function et(t){const o=t.resolvedLocation,e=t.location,s=o?.pathname!==e.pathname,n=o?.href!==e.href,r=o?.hash!==e.hash;return{fromLocation:o,toLocation:e,pathChanged:s,hrefChanged:n,hashChanged:r}}class bo{constructor(o){this.tempLocationKey=`${Math.round(Math.random()*1e7)}`,this.resetNextScroll=!0,this.shouldViewTransition=void 0,this.isViewTransitionTypesSupported=void 0,this.subscribers=new Set,this.isScrollRestoring=!1,this.isScrollRestorationSetup=!1,this.startTransition=e=>e(),this.update=e=>{e.notFoundRoute&&console.warn("The notFoundRoute API is deprecated and will be removed in the next major version. See https://tanstack.com/router/v1/docs/framework/react/guide/not-found-errors#migrating-from-notfoundroute for more info.");const s=this.options,n=this.basepath??s?.basepath??"/",r=this.basepath===void 0,i=s?.rewrite;this.options={...s,...e},this.isServer=this.options.isServer??typeof document>"u",this.pathParamsDecodeCharMap=this.options.pathParamsAllowedCharacters?new Map(this.options.pathParamsAllowedCharacters.map(d=>[encodeURIComponent(d),d])):void 0,(!this.history||this.options.history&&this.options.history!==this.history)&&(this.options.history?this.history=this.options.history:this.isServer||(this.history=Es())),this.origin=this.options.origin,this.origin||(!this.isServer&&window?.origin&&window.origin!=="null"?this.origin=window.origin:this.origin="http://localhost"),this.history&&this.updateLatestLocation(),this.options.routeTree!==this.routeTree&&(this.routeTree=this.options.routeTree,this.buildRouteTree()),!this.__store&&this.latestLocation&&(this.__store=new Ms(Mo(this.latestLocation),{onUpdate:()=>{this.__store.state={...this.state,cachedMatches:this.state.cachedMatches.filter(d=>!["redirected"].includes(d.status))}}}),ao(this));let a=!1;const c=this.options.basepath??"/",u=this.options.rewrite;if(r||n!==c||i!==u){this.basepath=c;const d=[];Mt(c)!==""&&d.push(xo({basepath:c})),u&&d.push(u),this.rewrite=d.length===0?void 0:d.length===1?d[0]:wo(d),this.history&&this.updateLatestLocation(),a=!0}a&&this.__store&&(this.__store.state={...this.state,location:this.latestLocation}),typeof window<"u"&&"CSS"in window&&typeof window.CSS?.supports=="function"&&(this.isViewTransitionTypesSupported=window.CSS.supports("selector(:active-view-transition-type(a)"))},this.updateLatestLocation=()=>{this.latestLocation=this.parseLocation(this.history.location,this.latestLocation)},this.buildRouteTree=()=>{const{routesById:e,routesByPath:s,flatRoutes:n}=so({routeTree:this.routeTree,initRoute:(i,a)=>{i.init({originalIndex:a})}});this.routesById=e,this.routesByPath=s,this.flatRoutes=n;const r=this.options.notFoundRoute;r&&(r.init({originalIndex:99999999999}),this.routesById[r.id]=r)},this.subscribe=(e,s)=>{const n={eventType:e,fn:s};return this.subscribers.add(n),()=>{this.subscribers.delete(n)}},this.emit=e=>{this.subscribers.forEach(s=>{s.eventType===e.type&&s.fn(e)})},this.parseLocation=(e,s)=>{const n=({href:c,state:u})=>{const l=new URL(c,this.origin),h=ns(this.rewrite,l),d=this.options.parseSearch(h.search),f=this.options.stringifySearch(d);h.search=f;const p=h.href.replace(h.origin,""),{pathname:m,hash:g}=h;return{href:p,publicHref:c,url:h.href,pathname:Me(m),searchStr:f,search:B(s?.search,d),hash:g.split("#").reverse()[0]??"",state:B(s?.state,u)}},r=n(e),{__tempLocation:i,__tempKey:a}=r.state;if(i&&(!a||a===this.tempLocationKey)){const c=n(i);return c.state.key=r.state.key,c.state.__TSR_key=r.state.__TSR_key,delete c.state.__tempLocation,{...c,maskedLocation:r}}return r},this.resolvePathWithBase=(e,s)=>Bs({base:e,to:re(s),trailingSlash:this.options.trailingSlash,parseCache:this.parsePathnameCache}),this.matchRoutes=(e,s,n)=>typeof e=="string"?this.matchRoutesInternal({pathname:e,search:s},n):this.matchRoutesInternal(e,s),this.parsePathnameCache=vo(1e3),this.getMatchedRoutes=(e,s)=>Lo({pathname:e,routePathname:s,caseSensitive:this.options.caseSensitive,routesByPath:this.routesByPath,routesById:this.routesById,flatRoutes:this.flatRoutes,parseCache:this.parsePathnameCache}),this.cancelMatch=e=>{const s=this.getMatch(e);s&&(s.abortController.abort(),clearTimeout(s._nonReactive.pendingTimeout),s._nonReactive.pendingTimeout=void 0)},this.cancelMatches=()=>{const e=this.state.matches.filter(r=>r.status==="pending"),s=this.state.matches.filter(r=>r.isFetching==="loader");new Set([...this.state.pendingMatches??[],...e,...s]).forEach(r=>{this.cancelMatch(r.id)})},this.buildLocation=e=>{const s=(r={})=>{const i=r._fromLocation||this.pendingBuiltLocation||this.latestLocation,a=this.matchRoutes(i,{_buildLocation:!0}),c=Zt(a);r.from;const u=r.unsafeRelative==="path"?i.pathname:r.from??c.fullPath,l=this.resolvePathWithBase(u,"."),h=c.search,d={...c.params},f=r.to?this.resolvePathWithBase(l,`${r.to}`):this.resolvePathWithBase(l,"."),p=r.params===!1||r.params===null?{}:(r.params??!0)===!0?d:Object.assign(d,Q(r.params,d)),m=Wt({path:f,params:p,parseCache:this.parsePathnameCache}).interpolatedPath,g=this.matchRoutes(m,void 0,{_buildLocation:!0}).map(M=>this.looseRoutesById[M.routeId]);if(Object.keys(p).length>0)for(const M of g){const T=M.options.params?.stringify??M.options.stringifyParams;T&&Object.assign(p,T(p))}const y=e.leaveParams?f:Me(Wt({path:f,params:p,decodeCharMap:this.pathParamsDecodeCharMap,parseCache:this.parsePathnameCache}).interpolatedPath);let w=h;if(e._includeValidateSearch&&this.options.search?.strict){const M={};g.forEach(T=>{if(T.options.validateSearch)try{Object.assign(M,ee(T.options.validateSearch,{...M,...w}))}catch{}}),w=M}w=Eo({search:w,dest:r,destRoutes:g,_includeValidateSearch:e._includeValidateSearch}),w=B(h,w);const P=this.options.stringifySearch(w),b=r.hash===!0?i.hash:r.hash?Q(r.hash,i.hash):void 0,E=b?`#${b}`:"";let x=r.state===!0?i.state:r.state?Q(r.state,i.state):{};x=B(i.state,x);const R=`${y}${P}${E}`,S=new URL(R,this.origin),C=rs(this.rewrite,S);return{publicHref:C.pathname+C.search+C.hash,href:R,url:C.href,pathname:y,search:w,searchStr:P,state:x,hash:b??"",unmaskOnReload:r.unmaskOnReload}},n=(r={},i)=>{const a=s(r);let c=i?s(i):void 0;if(!c){let u={};const l=this.options.routeMasks?.find(h=>{const d=Qt(a.pathname,{to:h.from,caseSensitive:!1,fuzzy:!1},this.parsePathnameCache);return d?(u=d,!0):!1});if(l){const{from:h,...d}=l;i={from:e.from,...d,params:u},c=s(i)}}return c&&(a.maskedLocation=c),a};return e.mask?n(e,{from:e.from,...e.mask}):n(e)},this.commitLocation=({viewTransition:e,ignoreBlocker:s,...n})=>{const r=()=>{const c=["key","__TSR_key","__TSR_index","__hashScrollIntoViewOptions"];c.forEach(l=>{n.state[l]=this.latestLocation.state[l]});const u=tt(n.state,this.latestLocation.state);return c.forEach(l=>{delete n.state[l]}),u},i=J(this.latestLocation.href)===J(n.href),a=this.commitLocationPromise;if(this.commitLocationPromise=at(()=>{a?.resolve()}),i&&r())this.load();else{let{maskedLocation:c,hashScrollIntoView:u,...l}=n;c&&(l={...c,state:{...c.state,__tempKey:void 0,__tempLocation:{...l,search:l.searchStr,state:{...l.state,__tempKey:void 0,__tempLocation:void 0,__TSR_key:void 0,key:void 0}}}},(l.unmaskOnReload??this.options.unmaskOnReload??!1)&&(l.state.__tempKey=this.tempLocationKey)),l.state.__hashScrollIntoViewOptions=u??this.options.defaultHashScrollIntoView??!0,this.shouldViewTransition=e,this.history[n.replace?"replace":"push"](l.publicHref,l.state,{ignoreBlocker:s})}return this.resetNextScroll=n.resetScroll??!0,this.history.subscribers.size||this.load(),this.commitLocationPromise},this.buildAndCommitLocation=({replace:e,resetScroll:s,hashScrollIntoView:n,viewTransition:r,ignoreBlocker:i,href:a,...c}={})=>{if(a){const h=this.history.location.state.__TSR_index,d=Tt(a,{__TSR_index:e?h:h+1});c.to=d.pathname,c.search=this.options.parseSearch(d.search),c.hash=d.hash.slice(1)}const u=this.buildLocation({...c,_includeValidateSearch:!0});this.pendingBuiltLocation=u;const l=this.commitLocation({...u,viewTransition:r,replace:e,resetScroll:s,hashScrollIntoView:n,ignoreBlocker:i});return Promise.resolve().then(()=>{this.pendingBuiltLocation===u&&(this.pendingBuiltLocation=void 0)}),l},this.navigate=({to:e,reloadDocument:s,href:n,...r})=>{if(!s&&n)try{new URL(`${n}`),s=!0}catch{}return s?(n||(n=this.buildLocation({to:e,...r}).url),r.replace?window.location.replace(n):window.location.href=n,Promise.resolve()):this.buildAndCommitLocation({...r,href:n,to:e,_isNavigate:!0})},this.beforeLoad=()=>{if(this.cancelMatches(),this.updateLatestLocation(),this.isServer){const s=this.buildLocation({to:this.latestLocation.pathname,search:!0,params:!0,hash:!0,state:!0,_includeValidateSearch:!0}),n=r=>{try{return encodeURI(decodeURI(r))}catch{return r}};if(Mt(n(this.latestLocation.href))!==Mt(n(s.href))){let r=s.url;throw this.origin&&r.startsWith(this.origin)&&(r=r.replace(this.origin,"")||"/"),go({href:r})}}const e=this.matchRoutes(this.latestLocation);this.__store.setState(s=>({...s,status:"pending",statusCode:200,isLoading:!0,location:this.latestLocation,pendingMatches:e,cachedMatches:s.cachedMatches.filter(n=>!e.some(r=>r.id===n.id))}))},this.load=async e=>{let s,n,r;for(r=new Promise(a=>{this.startTransition(async()=>{try{this.beforeLoad();const c=this.latestLocation,u=this.state.resolvedLocation;this.state.redirect||this.emit({type:"onBeforeNavigate",...et({resolvedLocation:u,location:c})}),this.emit({type:"onBeforeLoad",...et({resolvedLocation:u,location:c})}),await Oe({router:this,sync:e?.sync,matches:this.state.pendingMatches,location:c,updateMatch:this.updateMatch,onReady:async()=>{this.startTransition(()=>{this.startViewTransition(async()=>{let l=[],h=[],d=[];vt(()=>{this.__store.setState(f=>{const p=f.matches,m=f.pendingMatches||f.matches;return l=p.filter(g=>!m.some(y=>y.id===g.id)),h=m.filter(g=>!p.some(y=>y.id===g.id)),d=m.filter(g=>p.some(y=>y.id===g.id)),{...f,isLoading:!1,loadedAt:Date.now(),matches:m,pendingMatches:void 0,cachedMatches:[...f.cachedMatches,...l.filter(g=>g.status!=="error")]}}),this.clearExpiredCache()}),[[l,"onLeave"],[h,"onEnter"],[d,"onStay"]].forEach(([f,p])=>{f.forEach(m=>{this.looseRoutesById[m.routeId].options[p]?.(m)})})})})}})}catch(c){j(c)?(s=c,this.isServer||this.navigate({...s.options,replace:!0,ignoreBlocker:!0})):$(c)&&(n=c),this.__store.setState(u=>({...u,statusCode:s?s.status:n?404:u.matches.some(l=>l.status==="error")?500:200,redirect:s}))}this.latestLoadPromise===r&&(this.commitLocationPromise?.resolve(),this.latestLoadPromise=void 0,this.commitLocationPromise=void 0),a()})}),this.latestLoadPromise=r,await r;this.latestLoadPromise&&r!==this.latestLoadPromise;)await this.latestLoadPromise;let i;this.hasNotFoundMatch()?i=404:this.__store.state.matches.some(a=>a.status==="error")&&(i=500),i!==void 0&&this.__store.setState(a=>({...a,statusCode:i}))},this.startViewTransition=e=>{const s=this.shouldViewTransition??this.options.defaultViewTransition;if(delete this.shouldViewTransition,s&&typeof document<"u"&&"startViewTransition"in document&&typeof document.startViewTransition=="function"){let n;if(typeof s=="object"&&this.isViewTransitionTypesSupported){const r=this.latestLocation,i=this.state.resolvedLocation,a=typeof s.types=="function"?s.types(et({resolvedLocation:i,location:r})):s.types;if(a===!1){e();return}n={update:e,types:a}}else n=e;document.startViewTransition(n)}else e()},this.updateMatch=(e,s)=>{this.startTransition(()=>{const n=this.state.pendingMatches?.some(r=>r.id===e)?"pendingMatches":this.state.matches.some(r=>r.id===e)?"matches":this.state.cachedMatches.some(r=>r.id===e)?"cachedMatches":"";n&&this.__store.setState(r=>({...r,[n]:r[n]?.map(i=>i.id===e?s(i):i)}))})},this.getMatch=e=>{const s=n=>n.id===e;return this.state.cachedMatches.find(s)??this.state.pendingMatches?.find(s)??this.state.matches.find(s)},this.invalidate=e=>{const s=n=>e?.filter?.(n)??!0?{...n,invalid:!0,...e?.forcePending||n.status==="error"?{status:"pending",error:void 0}:void 0}:n;return this.__store.setState(n=>({...n,matches:n.matches.map(s),cachedMatches:n.cachedMatches.map(s),pendingMatches:n.pendingMatches?.map(s)})),this.shouldViewTransition=!1,this.load({sync:e?.sync})},this.resolveRedirect=e=>{if(!e.options.href){const s=this.buildLocation(e.options);let n=s.url;this.origin&&n.startsWith(this.origin)&&(n=n.replace(this.origin,"")||"/"),e.options.href=s.href,e.headers.set("Location",n)}return e.headers.get("Location")||e.headers.set("Location",e.options.href),e},this.clearCache=e=>{const s=e?.filter;s!==void 0?this.__store.setState(n=>({...n,cachedMatches:n.cachedMatches.filter(r=>!s(r))})):this.__store.setState(n=>({...n,cachedMatches:[]}))},this.clearExpiredCache=()=>{const e=s=>{const n=this.looseRoutesById[s.routeId];if(!n.options.loader)return!0;const r=(s.preload?n.options.preloadGcTime??this.options.defaultPreloadGcTime:n.options.gcTime??this.options.defaultGcTime)??300*1e3;return s.status==="error"?!0:Date.now()-s.updatedAt>=r};this.clearCache({filter:e})},this.loadRouteChunk=es,this.preloadRoute=async e=>{const s=this.buildLocation(e);let n=this.matchRoutes(s,{throwOnError:!0,preload:!0,dest:e});const r=new Set([...this.state.matches,...this.state.pendingMatches??[]].map(a=>a.id)),i=new Set([...r,...this.state.cachedMatches.map(a=>a.id)]);vt(()=>{n.forEach(a=>{i.has(a.id)||this.__store.setState(c=>({...c,cachedMatches:[...c.cachedMatches,a]}))})});try{return n=await Oe({router:this,matches:n,location:s,preload:!0,updateMatch:(a,c)=>{r.has(a)?n=n.map(u=>u.id===a?c(u):u):this.updateMatch(a,c)}}),n}catch(a){if(j(a))return a.options.reloadDocument?void 0:await this.preloadRoute({...a.options,_fromLocation:s});$(a)||console.error(a);return}},this.matchRoute=(e,s)=>{const n={...e,to:e.to?this.resolvePathWithBase(e.from||"",e.to):void 0,params:e.params||{},leaveParams:!0},r=this.buildLocation(n);if(s?.pending&&this.state.status!=="pending")return!1;const a=(s?.pending===void 0?!this.state.isLoading:s.pending)?this.latestLocation:this.state.resolvedLocation||this.state.location,c=Qt(a.pathname,{...s,to:r.pathname},this.parsePathnameCache);return!c||e.params&&!tt(c,e.params,{partial:!0})?!1:c&&(s?.includeSearch??!0)?tt(a.search,r.search,{partial:!0})?c:!1:c},this.hasNotFoundMatch=()=>this.__store.state.matches.some(e=>e.status==="notFound"||e.globalNotFound),this.update({defaultPreloadDelay:50,defaultPendingMs:1e3,defaultPendingMinMs:500,context:void 0,...o,caseSensitive:o.caseSensitive??!1,notFoundMode:o.notFoundMode??"fuzzy",stringifySearch:o.stringifySearch??fo,parseSearch:o.parseSearch??ho}),typeof document<"u"&&(self.__TSR_ROUTER__=this)}isShell(){return!!this.options.isShell}isPrerendering(){return!!this.options.isPrerendering}get state(){return this.__store.state}get looseRoutesById(){return this.routesById}matchRoutesInternal(o,e){const{foundRoute:s,matchedRoutes:n,routeParams:r}=this.getMatchedRoutes(o.pathname,e?.dest?.to);let i=!1;(s?s.path!=="/"&&r["**"]:J(o.pathname))&&(this.options.notFoundRoute?n.push(this.options.notFoundRoute):i=!0);const a=(()=>{if(i){if(this.options.notFoundMode!=="root")for(let l=n.length-1;l>=0;l--){const h=n[l];if(h.children)return h.id}return A}})(),c=[],u=l=>l?.id?l.context??this.options.context??void 0:this.options.context??void 0;return n.forEach((l,h)=>{const d=c[h-1],[f,p,m]=(()=>{const I=d?.search??o.search,Y=d?._strictSearch??void 0;try{const D=ee(l.options.validateSearch,{...I})??void 0;return[{...I,...D},{...Y,...D},void 0]}catch(D){let X=D;if(D instanceof At||(X=new At(D.message,{cause:D})),e?.throwOnError)throw X;return[I,{},X]}})(),g=l.options.loaderDeps?.({search:f})??"",y=g?JSON.stringify(g):"",{interpolatedPath:w,usedParams:P}=Wt({path:l.fullPath,params:r,decodeCharMap:this.pathParamsDecodeCharMap}),b=l.id+w+y,E=this.getMatch(b),x=this.state.matches.find(I=>I.routeId===l.id),R=E?._strictParams??P;let S;if(!E){const I=l.options.params?.parse??l.options.parseParams;if(I)try{Object.assign(R,I(R))}catch(Y){if(S=new Co(Y.message,{cause:Y}),e?.throwOnError)throw S}}Object.assign(r,R);const C=x?"stay":"enter";let M;if(E)M={...E,cause:C,params:x?B(x.params,r):r,_strictParams:R,search:B(x?x.search:E.search,f),_strictSearch:p};else{const I=l.options.loader||l.options.beforeLoad||l.lazyFn||ss(l)?"pending":"success";M={id:b,index:h,routeId:l.id,params:x?B(x.params,r):r,_strictParams:R,pathname:w,updatedAt:Date.now(),search:x?B(x.search,f):f,_strictSearch:p,searchError:void 0,status:I,isFetching:!1,error:void 0,paramsError:S,__routeContext:void 0,_nonReactive:{loadPromise:at()},__beforeLoadContext:void 0,context:{},abortController:new AbortController,fetchCount:0,cause:C,loaderDeps:x?B(x.loaderDeps,g):g,invalid:!1,preload:!1,links:void 0,scripts:void 0,headScripts:void 0,meta:void 0,staticData:l.options.staticData||{},fullPath:l.fullPath}}e?.preload||(M.globalNotFound=a===l.id),M.searchError=m;const T=u(d);M.context={...T,...M.__routeContext,...M.__beforeLoadContext},c.push(M)}),c.forEach((l,h)=>{const d=this.looseRoutesById[l.routeId];if(!this.getMatch(l.id)&&e?._buildLocation!==!0){const p=c[h-1],m=u(p);if(d.options.context){const g={deps:l.loaderDeps,params:l.params,context:m??{},location:o,navigate:y=>this.navigate({...y,_fromLocation:o}),buildLocation:this.buildLocation,cause:l.cause,abortController:l.abortController,preload:!!l.preload,matches:c};l.__routeContext=d.options.context(g)??void 0}l.context={...m,...l.__routeContext,...l.__beforeLoadContext}}}),c}}class At extends Error{}class Co extends Error{}function Mo(t){return{loadedAt:0,isLoading:!1,isTransitioning:!1,status:"idle",resolvedLocation:void 0,location:t,matches:[],pendingMatches:[],cachedMatches:[],statusCode:200}}function ee(t,o){if(t==null)return{};if("~standard"in t){const e=t["~standard"].validate(o);if(e instanceof Promise)throw new At("Async validation not supported");if(e.issues)throw new At(JSON.stringify(e.issues,void 0,2),{cause:e});return e.value}return"parse"in t?t.parse(o):typeof t=="function"?t(o):{}}function Lo({pathname:t,routePathname:o,caseSensitive:e,routesByPath:s,routesById:n,flatRoutes:r,parseCache:i}){let a={};const c=J(t),u=f=>Qt(c,{to:f.fullPath,caseSensitive:f.options?.caseSensitive??e,fuzzy:!0},i);let l=o!==void 0?s[o]:void 0;if(l)a=u(l);else{let f;for(const p of r){const m=u(p);if(m)if(p.path!=="/"&&m["**"])f||(f={foundRoute:p,routeParams:m});else{l=p,a=m;break}}!l&&f&&(l=f.foundRoute,a=f.routeParams)}let h=l||n[A];const d=[h];for(;h.parentRoute;)h=h.parentRoute,d.push(h);return d.reverse(),{matchedRoutes:d,routeParams:a,foundRoute:l}}function Eo({search:t,dest:o,destRoutes:e,_includeValidateSearch:s}){const n=e.reduce((a,c)=>{const u=[];if("search"in c.options)c.options.search?.middlewares&&u.push(...c.options.search.middlewares);else if(c.options.preSearchFilters||c.options.postSearchFilters){const l=({search:h,next:d})=>{let f=h;"preSearchFilters"in c.options&&c.options.preSearchFilters&&(f=c.options.preSearchFilters.reduce((m,g)=>g(m),h));const p=d(f);return"postSearchFilters"in c.options&&c.options.postSearchFilters?c.options.postSearchFilters.reduce((m,g)=>g(m),p):p};u.push(l)}if(s&&c.options.validateSearch){const l=({search:h,next:d})=>{const f=d(h);try{return{...f,...ee(c.options.validateSearch,f)??void 0}}catch{return f}};u.push(l)}return a.concat(u)},[])??[],r=({search:a})=>o.search?o.search===!0?a:Q(o.search,a):{};n.push(r);const i=(a,c)=>{if(a>=n.length)return c;const u=n[a];return u({search:c,next:h=>i(a+1,h)})};return i(0,t)}const To="Error preloading route! ☝️";class is{constructor(o){if(this.init=e=>{this.originalIndex=e.originalIndex;const s=this.options,n=!s?.path&&!s?.id;this.parentRoute=this.options.getParentRoute?.(),n?this._path=A:this.parentRoute||K(!1);let r=n?A:s?.path;r&&r!=="/"&&(r=ie(r));const i=s?.id||r;let a=n?A:U([this.parentRoute.id===A?"":this.parentRoute.id,i]);r===A&&(r="/"),a!==A&&(a=U(["/",a]));const c=a===A?"/":U([this.parentRoute.fullPath,r]);this._path=r,this._id=a,this._fullPath=c,this._to=c},this.addChildren=e=>this._addFileChildren(e),this._addFileChildren=e=>(Array.isArray(e)&&(this.children=e),typeof e=="object"&&e!==null&&(this.children=Object.values(e)),this),this._addFileTypes=()=>this,this.updateLoader=e=>(Object.assign(this.options,e),this),this.update=e=>(Object.assign(this.options,e),this),this.lazy=e=>(this.lazyFn=e,this),this.options=o||{},this.isRoot=!o?.getParentRoute,o?.id&&o?.path)throw new Error("Route cannot have both an 'id' and a 'path' option.")}get to(){return this._to}get id(){return this._id}get path(){return this._path}get fullPath(){return this._fullPath}}class Io extends is{constructor(o){super(o)}}function ae(t){const o=t.errorComponent??Dt;return v.jsx(Oo,{getResetKey:t.getResetKey,onCatch:t.onCatch,children:({error:e,reset:s})=>e?_.createElement(o,{error:e,reset:s}):t.children})}class Oo extends _.Component{constructor(){super(...arguments),this.state={error:null}}static getDerivedStateFromProps(o){return{resetKey:o.getResetKey()}}static getDerivedStateFromError(o){return{error:o}}reset(){this.setState({error:null})}componentDidUpdate(o,e){e.error&&e.resetKey!==this.state.resetKey&&this.reset()}componentDidCatch(o,e){this.props.onCatch&&this.props.onCatch(o,e)}render(){return this.props.children({error:this.state.resetKey!==this.props.getResetKey()?null:this.state.error,reset:()=>{this.reset()}})}}function Dt({error:t}){const[o,e]=_.useState(!1);return v.jsxs("div",{style:{padding:".5rem",maxWidth:"100%"},children:[v.jsxs("div",{style:{display:"flex",alignItems:"center",gap:".5rem"},children:[v.jsx("strong",{style:{fontSize:"1rem"},children:"Something went wrong!"}),v.jsx("button",{style:{appearance:"none",fontSize:".6em",border:"1px solid currentColor",padding:".1rem .2rem",fontWeight:"bold",borderRadius:".25rem"},onClick:()=>e(s=>!s),children:o?"Hide Error":"Show Error"})]}),v.jsx("div",{style:{height:".25rem"}}),o?v.jsx("div",{children:v.jsx("pre",{style:{fontSize:".7em",border:"1px solid red",borderRadius:".25rem",padding:".3rem",color:"red",overflow:"auto"},children:t.message?v.jsx("code",{children:t.message}):null})}):null]})}function ko({children:t,fallback:o=null}){return Fo()?v.jsx(it.Fragment,{children:t}):v.jsx(it.Fragment,{children:o})}function Fo(){return it.useSyncExternalStore(Ao,()=>!0,()=>!1)}function Ao(){return()=>{}}var Ut={exports:{}},Kt={},Ht={exports:{}},qt={};var ke;function Bo(){if(ke)return qt;ke=1;var t=se();function o(h,d){return h===d&&(h!==0||1/h===1/d)||h!==h&&d!==d}var e=typeof Object.is=="function"?Object.is:o,s=t.useState,n=t.useEffect,r=t.useLayoutEffect,i=t.useDebugValue;function a(h,d){var f=d(),p=s({inst:{value:f,getSnapshot:d}}),m=p[0].inst,g=p[1];return r(function(){m.value=f,m.getSnapshot=d,c(m)&&g({inst:m})},[h,f,d]),n(function(){return c(m)&&g({inst:m}),h(function(){c(m)&&g({inst:m})})},[h]),i(f),f}function c(h){var d=h.getSnapshot;h=h.value;try{var f=d();return!e(h,f)}catch{return!0}}function u(h,d){return d()}var l=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?u:a;return qt.useSyncExternalStore=t.useSyncExternalStore!==void 0?t.useSyncExternalStore:l,qt}var Fe;function Do(){return Fe||(Fe=1,Ht.exports=Bo()),Ht.exports}var Ae;function zo(){if(Ae)return Kt;Ae=1;var t=se(),o=Do();function e(u,l){return u===l&&(u!==0||1/u===1/l)||u!==u&&l!==l}var s=typeof Object.is=="function"?Object.is:e,n=o.useSyncExternalStore,r=t.useRef,i=t.useEffect,a=t.useMemo,c=t.useDebugValue;return Kt.useSyncExternalStoreWithSelector=function(u,l,h,d,f){var p=r(null);if(p.current===null){var m={hasValue:!1,value:null};p.current=m}else m=p.current;p=a(function(){function y(x){if(!w){if(w=!0,P=x,x=d(x),f!==void 0&&m.hasValue){var R=m.value;if(f(R,x))return b=R}return b=x}if(R=b,s(P,x))return R;var S=d(x);return f!==void 0&&f(R,S)?(P=x,R):(P=x,b=S)}var w=!1,P,b,E=h===void 0?null:h;return[function(){return y(l())},E===null?void 0:function(){return y(E())}]},[l,h,d,f]);var g=n(u,p[0],p[1]);return i(function(){m.hasValue=!0,m.value=g},[g]),c(g),g},Kt}var Be;function $o(){return Be||(Be=1,Ut.exports=zo()),Ut.exports}var as=$o();const Tn=oe(as);function jo(t,o=s=>s,e={}){const s=e.equal??No;return as.useSyncExternalStoreWithSelector(t.subscribe,()=>t.state,()=>t.state,o,s)}function No(t,o){if(Object.is(t,o))return!0;if(typeof t!="object"||t===null||typeof o!="object"||o===null)return!1;if(t instanceof Map&&o instanceof Map){if(t.size!==o.size)return!1;for(const[s,n]of t)if(!o.has(s)||!Object.is(n,o.get(s)))return!1;return!0}if(t instanceof Set&&o instanceof Set){if(t.size!==o.size)return!1;for(const s of t)if(!o.has(s))return!1;return!0}if(t instanceof Date&&o instanceof Date)return t.getTime()===o.getTime();const e=De(t);if(e.length!==De(o).length)return!1;for(let s=0;s"u"?Gt:window.__TSR_ROUTER_CONTEXT__?window.__TSR_ROUTER_CONTEXT__:(window.__TSR_ROUTER_CONTEXT__=Gt,Gt)}function F(t){const o=_.useContext(cs());return t?.warn,o}function k(t){const o=F({warn:t?.router===void 0}),e=t?.router||o,s=_.useRef(void 0);return jo(e.__store,n=>{if(t?.select){if(t.structuralSharing??e.options.defaultStructuralSharing){const r=B(s.current,t.select(n));return s.current=r,r}return t.select(n)}return n})}const zt=_.createContext(void 0),Wo=_.createContext(void 0);function W(t){const o=_.useContext(t.from?Wo:zt);return k({select:s=>{const n=s.matches.find(r=>t.from?t.from===r.routeId:r.id===o);if(K(!((t.shouldThrow??!0)&&!n),`Could not find ${t.from?`an active match from "${t.from}"`:"a nearest match!"}`),n!==void 0)return t.select?t.select(n):n},structuralSharing:t.structuralSharing})}function ce(t){return W({from:t.from,strict:t.strict,structuralSharing:t.structuralSharing,select:o=>t.select?t.select(o.loaderData):o.loaderData})}function le(t){const{select:o,...e}=t;return W({...e,select:s=>o?o(s.loaderDeps):s.loaderDeps})}function ue(t){return W({from:t.from,shouldThrow:t.shouldThrow,structuralSharing:t.structuralSharing,strict:t.strict,select:o=>{const e=t.strict===!1?o.params:o._strictParams;return t.select?t.select(e):e}})}function he(t){return W({from:t.from,strict:t.strict,shouldThrow:t.shouldThrow,structuralSharing:t.structuralSharing,select:o=>t.select?t.select(o.search):o.search})}function de(t){const o=F();return _.useCallback(e=>o.navigate({...e,from:e.from??t?.from}),[t?.from,o])}var fe=Rs();const In=oe(fe),Ct=typeof window<"u"?_.useLayoutEffect:_.useEffect;function Jt(t){const o=_.useRef({value:t,prev:null}),e=o.current.value;return t!==e&&(o.current={value:t,prev:e}),o.current.prev}function Vo(t,o,e={},s={}){_.useEffect(()=>{if(!t.current||s.disabled||typeof IntersectionObserver!="function")return;const n=new IntersectionObserver(([r])=>{o(r)},e);return n.observe(t.current),()=>{n.disconnect()}},[o,e,s.disabled,t])}function Uo(t){const o=_.useRef(null);return _.useImperativeHandle(t,()=>o.current,[]),o}function Ko(t,o){const e=F(),[s,n]=_.useState(!1),r=_.useRef(!1),i=Uo(o),{activeProps:a,inactiveProps:c,activeOptions:u,to:l,preload:h,preloadDelay:d,hashScrollIntoView:f,replace:p,startTransition:m,resetScroll:g,viewTransition:y,children:w,target:P,disabled:b,style:E,className:x,onClick:R,onFocus:S,onMouseEnter:C,onMouseLeave:M,onTouchStart:T,ignoreBlocker:I,params:Y,search:D,hash:X,state:pe,mask:fs,reloadDocument:xn,unsafeRelative:bn,from:Cn,_fromLocation:Mn,...me}=t,ps=k({select:L=>L.location.search,structuralSharing:!0}),ge=t.from,ht=_.useMemo(()=>({...t,from:ge}),[e,ps,ge,t._fromLocation,t.hash,t.to,t.search,t.params,t.state,t.mask,t.unsafeRelative]),V=_.useMemo(()=>e.buildLocation({...ht}),[e,ht]),St=_.useMemo(()=>{if(b)return;let L=V.maskedLocation?V.maskedLocation.url:V.url,O=!1;return e.origin&&(L.startsWith(e.origin)?L=e.history.createHref(L.replace(e.origin,""))||"/":O=!0),{href:L,external:O}},[b,V.maskedLocation,V.url,e.origin,e.history]),_t=_.useMemo(()=>{if(St?.external)return St.href;try{return new URL(l),l}catch{}},[l,St]),ot=t.reloadDocument||_t?!1:h??e.options.defaultPreload,$t=d??e.options.defaultPreloadDelay??0,jt=k({select:L=>{if(_t)return!1;if(u?.exact){if(!Fs(L.location.pathname,V.pathname,e.basepath))return!1}else{const O=Ot(L.location.pathname,e.basepath),z=Ot(V.pathname,e.basepath);if(!(O.startsWith(z)&&(O.length===z.length||O[z.length]==="/")))return!1}return(u?.includeSearch??!0)&&!tt(L.location.search,V.search,{partial:!u?.exact,ignoreUndefined:!u?.explicitUndefined})?!1:u?.includeHash?L.location.hash===V.hash:!0}}),Z=_.useCallback(()=>{e.preloadRoute({...ht}).catch(L=>{console.warn(L),console.warn(To)})},[e,ht]),ms=_.useCallback(L=>{L?.isIntersecting&&Z()},[Z]);Vo(i,ms,Yo,{disabled:!!b||ot!=="viewport"}),_.useEffect(()=>{r.current||!b&&ot==="render"&&(Z(),r.current=!0)},[b,Z,ot]);const gs=L=>{const O=L.currentTarget.getAttribute("target"),z=P!==void 0?P:O;if(!b&&!Xo(L)&&!L.defaultPrevented&&(!z||z==="_self")&&L.button===0){L.preventDefault(),fe.flushSync(()=>{n(!0)});const _e=e.subscribe("onResolved",()=>{_e(),n(!1)});e.navigate({...ht,replace:p,resetScroll:g,hashScrollIntoView:f,startTransition:m,viewTransition:y,ignoreBlocker:I})}};if(_t)return{...me,ref:i,href:_t,...w&&{children:w},...P&&{target:P},...b&&{disabled:b},...E&&{style:E},...x&&{className:x},...R&&{onClick:R},...S&&{onFocus:S},...C&&{onMouseEnter:C},...M&&{onMouseLeave:M},...T&&{onTouchStart:T}};const ve=L=>{b||ot&&Z()},vs=ve,ys=L=>{if(!(b||!ot))if(!$t)Z();else{const O=L.target;if(ft.has(O))return;const z=setTimeout(()=>{ft.delete(O),Z()},$t);ft.set(O,z)}},Ss=L=>{if(b||!ot||!$t)return;const O=L.target,z=ft.get(O);z&&(clearTimeout(z),ft.delete(O))},Rt=jt?Q(a,{})??Ho:Yt,Pt=jt?Yt:Q(c,{})??Yt,ye=[x,Rt.className,Pt.className].filter(Boolean).join(" "),Se=(E||Rt.style||Pt.style)&&{...E,...Rt.style,...Pt.style};return{...me,...Rt,...Pt,href:St?.href,ref:i,onClick:pt([R,gs]),onFocus:pt([S,ve]),onMouseEnter:pt([C,ys]),onMouseLeave:pt([M,Ss]),onTouchStart:pt([T,vs]),disabled:!!b,target:P,...Se&&{style:Se},...ye&&{className:ye},...b&&qo,...jt&&Go,...s&&Jo}}const Yt={},Ho={className:"active"},qo={role:"link","aria-disabled":!0},Go={"data-status":"active","aria-current":"page"},Jo={"data-transitioning":"transitioning"},ft=new WeakMap,Yo={rootMargin:"100px"},pt=t=>o=>{for(const e of t)if(e){if(o.defaultPrevented)return;e(o)}},ls=_.forwardRef((t,o)=>{const{_asChild:e,...s}=t,{type:n,ref:r,...i}=Ko(s,o),a=typeof s.children=="function"?s.children({isActive:i["data-status"]==="active"}):s.children;return e===void 0&&delete i.disabled,_.createElement(e||"a",{...i,ref:r},a)});function Xo(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}class Zo extends is{constructor(o){super(o),this.useMatch=e=>W({select:e?.select,from:this.id,structuralSharing:e?.structuralSharing}),this.useRouteContext=e=>W({...e,from:this.id,select:s=>e?.select?e.select(s.context):s.context}),this.useSearch=e=>he({select:e?.select,structuralSharing:e?.structuralSharing,from:this.id}),this.useParams=e=>ue({select:e?.select,structuralSharing:e?.structuralSharing,from:this.id}),this.useLoaderDeps=e=>le({...e,from:this.id}),this.useLoaderData=e=>ce({...e,from:this.id}),this.useNavigate=()=>de({from:this.fullPath}),this.Link=it.forwardRef((e,s)=>v.jsx(ls,{ref:s,from:this.fullPath,...e})),this.$$typeof=Symbol.for("react.memo")}}function Qo(t){return new Zo(t)}class tn extends Io{constructor(o){super(o),this.useMatch=e=>W({select:e?.select,from:this.id,structuralSharing:e?.structuralSharing}),this.useRouteContext=e=>W({...e,from:this.id,select:s=>e?.select?e.select(s.context):s.context}),this.useSearch=e=>he({select:e?.select,structuralSharing:e?.structuralSharing,from:this.id}),this.useParams=e=>ue({select:e?.select,structuralSharing:e?.structuralSharing,from:this.id}),this.useLoaderDeps=e=>le({...e,from:this.id}),this.useLoaderData=e=>ce({...e,from:this.id}),this.useNavigate=()=>de({from:this.fullPath}),this.Link=it.forwardRef((e,s)=>v.jsx(ls,{ref:s,from:this.fullPath,...e})),this.$$typeof=Symbol.for("react.memo")}}function On(t){return new tn(t)}function ze(t){return typeof t=="object"?new $e(t,{silent:!0}).createRoute(t):new $e(t,{silent:!0}).createRoute}class $e{constructor(o,e){this.path=o,this.createRoute=s=>{this.silent;const n=Qo(s);return n.isRoot=!1,n},this.silent=e?.silent}}class je{constructor(o){this.useMatch=e=>W({select:e?.select,from:this.options.id,structuralSharing:e?.structuralSharing}),this.useRouteContext=e=>W({from:this.options.id,select:s=>e?.select?e.select(s.context):s.context}),this.useSearch=e=>he({select:e?.select,structuralSharing:e?.structuralSharing,from:this.options.id}),this.useParams=e=>ue({select:e?.select,structuralSharing:e?.structuralSharing,from:this.options.id}),this.useLoaderDeps=e=>le({...e,from:this.options.id}),this.useLoaderData=e=>ce({...e,from:this.options.id}),this.useNavigate=()=>{const e=F();return de({from:e.routesById[this.options.id].fullPath})},this.options=o,this.$$typeof=Symbol.for("react.memo")}}function Ne(t){return typeof t=="object"?new je(t):o=>new je({id:t,...o})}function en(){const t=F(),o=_.useRef({router:t,mounted:!1}),[e,s]=_.useState(!1),{hasPendingMatches:n,isLoading:r}=k({select:h=>({isLoading:h.isLoading,hasPendingMatches:h.matches.some(d=>d.status==="pending")}),structuralSharing:!0}),i=Jt(r),a=r||e||n,c=Jt(a),u=r||n,l=Jt(u);return t.startTransition=h=>{s(!0),_.startTransition(()=>{h(),s(!1)})},_.useEffect(()=>{const h=t.history.subscribe(t.load),d=t.buildLocation({to:t.latestLocation.pathname,search:!0,params:!0,hash:!0,state:!0,_includeValidateSearch:!0});return J(t.latestLocation.href)!==J(d.href)&&t.commitLocation({...d,replace:!0}),()=>{h()}},[t,t.history]),Ct(()=>{if(typeof window<"u"&&t.ssr||o.current.router===t&&o.current.mounted)return;o.current={router:t,mounted:!0},(async()=>{try{await t.load()}catch(d){console.error(d)}})()},[t]),Ct(()=>{i&&!r&&t.emit({type:"onLoad",...et(t.state)})},[i,t,r]),Ct(()=>{l&&!u&&t.emit({type:"onBeforeRouteMount",...et(t.state)})},[u,l,t]),Ct(()=>{c&&!a&&(t.emit({type:"onResolved",...et(t.state)}),t.__store.setState(h=>({...h,status:"idle",resolvedLocation:h.location})),co(t))},[a,c,t]),null}function sn(t){const o=k({select:e=>`not-found-${e.location.pathname}-${e.status}`});return v.jsx(ae,{getResetKey:()=>o,onCatch:(e,s)=>{if($(e))t.onCatch?.(e,s);else throw e},errorComponent:({error:e})=>{if($(e))return t.fallback?.(e);throw e},children:t.children})}function on(){return v.jsx("p",{children:"Not Found"})}function rt(t){return v.jsx(v.Fragment,{children:t.children})}function us(t,o,e){return o.options.notFoundComponent?v.jsx(o.options.notFoundComponent,{data:e}):t.options.defaultNotFoundComponent?v.jsx(t.options.defaultNotFoundComponent,{data:e}):v.jsx(on,{})}function nn({children:t}){const o=F();return o.isServer?v.jsx("script",{nonce:o.options.ssr?.nonce,className:"$tsr",dangerouslySetInnerHTML:{__html:[t].filter(Boolean).join(` +`)+";$_TSR.c()"}}):null}function rn(){const t=F();if(!t.isScrollRestoring||!t.isServer||typeof t.options.scrollRestoration=="function"&&!t.options.scrollRestoration({location:t.latestLocation}))return null;const e=(t.options.getScrollRestorationKey||te)(t.latestLocation),s=e!==te(t.latestLocation)?e:void 0,n={storageKey:kt,shouldScrollRestoration:!0};return s&&(n.key=s),v.jsx(nn,{children:`(${Ye.toString()})(${JSON.stringify(n)})`})}const hs=_.memo(function({matchId:o}){const e=F(),s=k({select:y=>{const w=y.matches.find(P=>P.id===o);return K(w),{routeId:w.routeId,ssr:w.ssr,_displayPending:w._displayPending}},structuralSharing:!0}),n=e.routesById[s.routeId],r=n.options.pendingComponent??e.options.defaultPendingComponent,i=r?v.jsx(r,{}):null,a=n.options.errorComponent??e.options.defaultErrorComponent,c=n.options.onCatch??e.options.defaultOnCatch,u=n.isRoot?n.options.notFoundComponent??e.options.notFoundRoute?.options.component:n.options.notFoundComponent,l=s.ssr===!1||s.ssr==="data-only",h=(!n.isRoot||n.options.wrapInSuspense||l)&&(n.options.wrapInSuspense??r??(n.options.errorComponent?.preload||l))?_.Suspense:rt,d=a?ae:rt,f=u?sn:rt,p=k({select:y=>y.loadedAt}),m=k({select:y=>{const w=y.matches.findIndex(P=>P.id===o);return y.matches[w-1]?.routeId}}),g=n.isRoot?n.options.shellComponent??rt:rt;return v.jsxs(g,{children:[v.jsx(zt.Provider,{value:o,children:v.jsx(h,{fallback:i,children:v.jsx(d,{getResetKey:()=>p,errorComponent:a||Dt,onCatch:(y,w)=>{if($(y))throw y;c?.(y,w)},children:v.jsx(f,{fallback:y=>{if(!u||y.routeId&&y.routeId!==s.routeId||!y.routeId&&!n.isRoot)throw y;return _.createElement(u,y)},children:l||s._displayPending?v.jsx(ko,{fallback:i,children:v.jsx(We,{matchId:o})}):v.jsx(We,{matchId:o})})})})}),m===A&&e.options.scrollRestoration?v.jsxs(v.Fragment,{children:[v.jsx(an,{}),v.jsx(rn,{})]}):null]})});function an(){const t=F(),o=_.useRef(void 0);return v.jsx("script",{suppressHydrationWarning:!0,ref:e=>{e&&(o.current===void 0||o.current.href!==t.latestLocation.href)&&(t.emit({type:"onRendered",...et(t.state)}),o.current=t.latestLocation)}},t.latestLocation.state.__TSR_key)}const We=_.memo(function({matchId:o}){const e=F(),{match:s,key:n,routeId:r}=k({select:c=>{const u=c.matches.find(p=>p.id===o),l=u.routeId,d=(e.routesById[l].options.remountDeps??e.options.defaultRemountDeps)?.({routeId:l,loaderDeps:u.loaderDeps,params:u._strictParams,search:u._strictSearch});return{key:d?JSON.stringify(d):void 0,routeId:l,match:{id:u.id,status:u.status,error:u.error,_forcePending:u._forcePending,_displayPending:u._displayPending}}},structuralSharing:!0}),i=e.routesById[r],a=_.useMemo(()=>{const c=i.options.component??e.options.defaultComponent;return c?v.jsx(c,{},n):v.jsx(cn,{})},[n,i.options.component,e.options.defaultComponent]);if(s._displayPending)throw e.getMatch(s.id)?._nonReactive.displayPendingPromise;if(s._forcePending)throw e.getMatch(s.id)?._nonReactive.minPendingPromise;if(s.status==="pending"){const c=i.options.pendingMinMs??e.options.defaultPendingMinMs;if(c){const u=e.getMatch(s.id);if(u&&!u._nonReactive.minPendingPromise&&!e.isServer){const l=at();u._nonReactive.minPendingPromise=l,setTimeout(()=>{l.resolve(),u._nonReactive.minPendingPromise=void 0},c)}}throw e.getMatch(s.id)?._nonReactive.loadPromise}if(s.status==="notFound")return K($(s.error)),us(e,i,s.error);if(s.status==="redirected")throw K(j(s.error)),e.getMatch(s.id)?._nonReactive.loadPromise;if(s.status==="error"){if(e.isServer){const c=(i.options.errorComponent??e.options.defaultErrorComponent)||Dt;return v.jsx(c,{error:s.error,reset:void 0,info:{componentStack:""}})}throw s.error}return a}),cn=_.memo(function(){const o=F(),e=_.useContext(zt),s=k({select:u=>u.matches.find(l=>l.id===e)?.routeId}),n=o.routesById[s],r=k({select:u=>{const h=u.matches.find(d=>d.id===e);return K(h),h.globalNotFound}}),i=k({select:u=>{const l=u.matches,h=l.findIndex(d=>d.id===e);return l[h+1]?.id}}),a=o.options.defaultPendingComponent?v.jsx(o.options.defaultPendingComponent,{}):null;if(r)return us(o,n,void 0);if(!i)return null;const c=v.jsx(hs,{matchId:i});return s===A?v.jsx(_.Suspense,{fallback:a,children:c}):c});function ln(){const t=F(),e=t.routesById[A].options.pendingComponent??t.options.defaultPendingComponent,s=e?v.jsx(e,{}):null,n=t.isServer||typeof document<"u"&&t.ssr?rt:_.Suspense,r=v.jsxs(n,{fallback:s,children:[!t.isServer&&v.jsx(en,{}),v.jsx(un,{})]});return t.options.InnerWrap?v.jsx(t.options.InnerWrap,{children:r}):r}function un(){const t=F(),o=k({select:n=>n.matches[0]?.id}),e=k({select:n=>n.loadedAt}),s=o?v.jsx(hs,{matchId:o}):null;return v.jsx(zt.Provider,{value:o,children:t.options.disableGlobalCatchBoundary?s:v.jsx(ae,{getResetKey:()=>e,errorComponent:Dt,onCatch:n=>{n.message||n.toString()},children:s})})}function kn(){const t=F();return k({select:o=>[o.location.href,o.resolvedLocation?.href,o.status],structuralSharing:!0}),_.useCallback(o=>{const{pending:e,caseSensitive:s,fuzzy:n,includeSearch:r,...i}=o;return t.matchRoute(i,{pending:e,caseSensitive:s,fuzzy:n,includeSearch:r})},[t])}const Fn=t=>new hn(t);class hn extends bo{constructor(o){super(o)}}typeof globalThis<"u"?(globalThis.createFileRoute=ze,globalThis.createLazyFileRoute=Ne):typeof window<"u"&&(window.createFileRoute=ze,window.createLazyFileRoute=Ne);function dn({router:t,children:o,...e}){Object.keys(e).length>0&&t.update({...t.options,...e,context:{...t.options.context,...e.context}});const s=cs(),n=v.jsx(s.Provider,{value:t,children:o});return t.options.Wrap?v.jsx(t.options.Wrap,{children:n}):n}function An({router:t,...o}){return v.jsx(dn,{router:t,...o,children:v.jsx(ln,{})})}function nt(t,o,e){let s=e.initialDeps??[],n;function r(){var i,a,c,u;let l;e.key&&((i=e.debug)!=null&&i.call(e))&&(l=Date.now());const h=t();if(!(h.length!==s.length||h.some((p,m)=>s[m]!==p)))return n;s=h;let f;if(e.key&&((a=e.debug)!=null&&a.call(e))&&(f=Date.now()),n=o(...h),e.key&&((c=e.debug)!=null&&c.call(e))){const p=Math.round((Date.now()-l)*100)/100,m=Math.round((Date.now()-f)*100)/100,g=m/16,y=(w,P)=>{for(w=String(w);w.length{s=i},r}function Ve(t,o){if(t===void 0)throw new Error("Unexpected undefined");return t}const fn=(t,o)=>Math.abs(t-o)<1.01,pn=(t,o,e)=>{let s;return function(...n){t.clearTimeout(s),s=t.setTimeout(()=>o.apply(this,n),e)}},Ue=t=>{const{offsetWidth:o,offsetHeight:e}=t;return{width:o,height:e}},mn=t=>t,gn=t=>{const o=Math.max(t.startIndex-t.overscan,0),e=Math.min(t.endIndex+t.overscan,t.count-1),s=[];for(let n=o;n<=e;n++)s.push(n);return s},vn=(t,o)=>{const e=t.scrollElement;if(!e)return;const s=t.targetWindow;if(!s)return;const n=i=>{const{width:a,height:c}=i;o({width:Math.round(a),height:Math.round(c)})};if(n(Ue(e)),!s.ResizeObserver)return()=>{};const r=new s.ResizeObserver(i=>{const a=()=>{const c=i[0];if(c?.borderBoxSize){const u=c.borderBoxSize[0];if(u){n({width:u.inlineSize,height:u.blockSize});return}}n(Ue(e))};t.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(a):a()});return r.observe(e,{box:"border-box"}),()=>{r.unobserve(e)}},Ke={passive:!0},He=typeof window>"u"?!0:"onscrollend"in window,yn=(t,o)=>{const e=t.scrollElement;if(!e)return;const s=t.targetWindow;if(!s)return;let n=0;const r=t.options.useScrollendEvent&&He?()=>{}:pn(s,()=>{o(n,!1)},t.options.isScrollingResetDelay),i=l=>()=>{const{horizontal:h,isRtl:d}=t.options;n=h?e.scrollLeft*(d&&-1||1):e.scrollTop,r(),o(n,l)},a=i(!0),c=i(!1);c(),e.addEventListener("scroll",a,Ke);const u=t.options.useScrollendEvent&&He;return u&&e.addEventListener("scrollend",c,Ke),()=>{e.removeEventListener("scroll",a),u&&e.removeEventListener("scrollend",c)}},Sn=(t,o,e)=>{if(o?.borderBoxSize){const s=o.borderBoxSize[0];if(s)return Math.round(s[e.options.horizontal?"inlineSize":"blockSize"])}return t[e.options.horizontal?"offsetWidth":"offsetHeight"]},_n=(t,{adjustments:o=0,behavior:e},s)=>{var n,r;const i=t+o;(r=(n=s.scrollElement)==null?void 0:n.scrollTo)==null||r.call(n,{[s.options.horizontal?"left":"top"]:i,behavior:e})};class Rn{constructor(o){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.measurementsCache=[],this.itemSizeCache=new Map,this.pendingMeasuredCacheIndexes=[],this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.observer=(()=>{let e=null;const s=()=>e||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:e=new this.targetWindow.ResizeObserver(n=>{n.forEach(r=>{const i=()=>{this._measureElement(r.target,r)};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(i):i()})}));return{disconnect:()=>{var n;(n=s())==null||n.disconnect(),e=null},observe:n=>{var r;return(r=s())==null?void 0:r.observe(n,{box:"border-box"})},unobserve:n=>{var r;return(r=s())==null?void 0:r.unobserve(n)}}})(),this.range=null,this.setOptions=e=>{Object.entries(e).forEach(([s,n])=>{typeof n>"u"&&delete e[s]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:mn,rangeExtractor:gn,onChange:()=>{},measureElement:Sn,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:"data-index",initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,...e}},this.notify=e=>{var s,n;(n=(s=this.options).onChange)==null||n.call(s,this,e)},this.maybeNotify=nt(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{var e;const s=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==s){if(this.cleanup(),!s){this.maybeNotify();return}this.scrollElement=s,this.scrollElement&&"ownerDocument"in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=((e=this.scrollElement)==null?void 0:e.window)??null,this.elementsCache.forEach(n=>{this.observer.observe(n)}),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0}),this.unsubs.push(this.options.observeElementRect(this,n=>{this.scrollRect=n,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(n,r)=>{this.scrollAdjustments=0,this.scrollDirection=r?this.getScrollOffset()this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?"width":"height"]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset=="function"?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(e,s)=>{const n=new Map,r=new Map;for(let i=s-1;i>=0;i--){const a=e[i];if(n.has(a.lane))continue;const c=r.get(a.lane);if(c==null||a.end>c.end?r.set(a.lane,a):a.endi.end===a.end?i.index-a.index:i.end-a.end)[0]:void 0},this.getMeasurementOptions=nt(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled],(e,s,n,r,i)=>(this.pendingMeasuredCacheIndexes=[],{count:e,paddingStart:s,scrollMargin:n,getItemKey:r,enabled:i}),{key:!1}),this.getMeasurements=nt(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:e,paddingStart:s,scrollMargin:n,getItemKey:r,enabled:i},a)=>{if(!i)return this.measurementsCache=[],this.itemSizeCache.clear(),[];this.measurementsCache.length===0&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(l=>{this.itemSizeCache.set(l.key,l.size)}));const c=this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[];const u=this.measurementsCache.slice(0,c);for(let l=c;lthis.options.debug}),this.calculateRange=nt(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,s,n,r)=>this.range=e.length>0&&s>0?Pn({measurements:e,outerSize:s,scrollOffset:n,lanes:r}):null,{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=nt(()=>{let e=null,s=null;const n=this.calculateRange();return n&&(e=n.startIndex,s=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,s]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,s]},(e,s,n,r,i)=>r===null||i===null?[]:e({startIndex:r,endIndex:i,overscan:s,count:n}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{const s=this.options.indexAttribute,n=e.getAttribute(s);return n?parseInt(n,10):(console.warn(`Missing attribute name '${s}={index}' on measured element.`),-1)},this._measureElement=(e,s)=>{const n=this.indexFromElement(e),r=this.measurementsCache[n];if(!r)return;const i=r.key,a=this.elementsCache.get(i);a!==e&&(a&&this.observer.unobserve(a),this.observer.observe(e),this.elementsCache.set(i,e)),e.isConnected&&this.resizeItem(n,this.options.measureElement(e,s,this))},this.resizeItem=(e,s)=>{const n=this.measurementsCache[e];if(!n)return;const r=this.itemSizeCache.get(n.key)??n.size,i=s-r;i!==0&&((this.shouldAdjustScrollPositionOnItemSizeChange!==void 0?this.shouldAdjustScrollPositionOnItemSizeChange(n,i,this):n.start{if(!e){this.elementsCache.forEach((s,n)=>{s.isConnected||(this.observer.unobserve(s),this.elementsCache.delete(n))});return}this._measureElement(e,void 0)},this.getVirtualItems=nt(()=>[this.getVirtualIndexes(),this.getMeasurements()],(e,s)=>{const n=[];for(let r=0,i=e.length;rthis.options.debug}),this.getVirtualItemForOffset=e=>{const s=this.getMeasurements();if(s.length!==0)return Ve(s[ds(0,s.length-1,n=>Ve(s[n]).start,e)])},this.getOffsetForAlignment=(e,s,n=0)=>{const r=this.getSize(),i=this.getScrollOffset();s==="auto"&&(s=e>=i+r?"end":"start"),s==="center"?e+=(n-r)/2:s==="end"&&(e-=r);const a=this.getTotalSize()+this.options.scrollMargin-r;return Math.max(Math.min(a,e),0)},this.getOffsetForIndex=(e,s="auto")=>{e=Math.max(0,Math.min(e,this.options.count-1));const n=this.measurementsCache[e];if(!n)return;const r=this.getSize(),i=this.getScrollOffset();if(s==="auto")if(n.end>=i+r-this.options.scrollPaddingEnd)s="end";else if(n.start<=i+this.options.scrollPaddingStart)s="start";else return[i,s];const a=s==="end"?n.end+this.options.scrollPaddingEnd:n.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(a,s,n.size),s]},this.isDynamicMode=()=>this.elementsCache.size>0,this.scrollToOffset=(e,{align:s="start",behavior:n}={})=>{n==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getOffsetForAlignment(e,s),{adjustments:void 0,behavior:n})},this.scrollToIndex=(e,{align:s="auto",behavior:n}={})=>{n==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),e=Math.max(0,Math.min(e,this.options.count-1));let r=0;const i=10,a=u=>{if(!this.targetWindow)return;const l=this.getOffsetForIndex(e,u);if(!l){console.warn("Failed to get offset for index:",e);return}const[h,d]=l;this._scrollToOffset(h,{adjustments:void 0,behavior:n}),this.targetWindow.requestAnimationFrame(()=>{const f=this.getScrollOffset(),p=this.getOffsetForIndex(e,d);if(!p){console.warn("Failed to get offset for index:",e);return}fn(p[0],f)||c(d)})},c=u=>{this.targetWindow&&(r++,ra(u)):console.warn(`Failed to scroll to index ${e} after ${i} attempts.`))};a(s)},this.scrollBy=(e,{behavior:s}={})=>{s==="smooth"&&this.isDynamicMode()&&console.warn("The `smooth` scroll behavior is not fully supported with dynamic size."),this._scrollToOffset(this.getScrollOffset()+e,{adjustments:void 0,behavior:s})},this.getTotalSize=()=>{var e;const s=this.getMeasurements();let n;if(s.length===0)n=this.options.paddingStart;else if(this.options.lanes===1)n=((e=s[s.length-1])==null?void 0:e.end)??0;else{const r=Array(this.options.lanes).fill(null);let i=s.length-1;for(;i>=0&&r.some(a=>a===null);){const a=s[i];r[a.lane]===null&&(r[a.lane]=a.end),i--}n=Math.max(...r.filter(a=>a!==null))}return Math.max(n-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(e,{adjustments:s,behavior:n})=>{this.options.scrollToFn(e,{behavior:n,adjustments:s},this)},this.measure=()=>{this.itemSizeCache=new Map,this.notify(!1)},this.setOptions(o)}}const ds=(t,o,e,s)=>{for(;t<=o;){const n=(t+o)/2|0,r=e(n);if(rs)o=n-1;else return n}return t>0?t-1:0};function Pn({measurements:t,outerSize:o,scrollOffset:e,lanes:s}){const n=t.length-1,r=c=>t[c].start;if(t.length<=s)return{startIndex:0,endIndex:n};let i=ds(0,n,r,e),a=i;if(s===1)for(;a1){const c=Array(s).fill(0);for(;al=0&&u.some(l=>l>=e);){const l=t[i];u[l.lane]=l.start,i--}i=Math.max(0,i-i%s),a=Math.min(n,a+(s-1-a%s))}return{startIndex:i,endIndex:a}}const qe=typeof document<"u"?_.useLayoutEffect:_.useEffect;function wn(t){const o=_.useReducer(()=>({}),{})[1],e={...t,onChange:(n,r)=>{var i;r?fe.flushSync(o):o(),(i=t.onChange)==null||i.call(t,n,r)}},[s]=_.useState(()=>new Rn(e));return s.setOptions(e),qe(()=>s._didMount(),[]),qe(()=>s._willUpdate()),s}function Bn(t){return wn({observeElementRect:vn,observeElementOffset:yn,scrollToFn:_n,...t})}export{ls as L,cn as O,it as R,En as a,fe as b,In as c,Do as d,de as e,Bn as f,kn as g,On as h,K as i,v as j,Qo as k,Fn as l,go as m,An as n,_ as r,Tn as u}; diff --git a/webui/dist/assets/router-DQNkr8RI.js b/webui/dist/assets/router-DQNkr8RI.js deleted file mode 100644 index 70f3abb1..00000000 --- a/webui/dist/assets/router-DQNkr8RI.js +++ /dev/null @@ -1,2 +0,0 @@ -import{r as po,a as ee,g as oe,b as mo}from"./react-vendor-Dtc2IqVY.js";function go(t,o){for(var e=0;es[n]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}var g=po(),R=ee();const rt=oe(R),hn=go({__proto__:null,default:rt},[R]),Yt=new WeakMap,yo=new WeakMap,bt={current:[]};let Nt=!1,mt=0;const pt=new Set,Pt=new Map;function Ue(t){for(const o of t){if(bt.current.includes(o))continue;bt.current.push(o),o.recompute();const e=yo.get(o);if(e)for(const s of e){const n=Yt.get(s);n?.length&&Ue(n)}}}function vo(t){const o={prevVal:t.prevState,currentVal:t.state};for(const e of t.listeners)e(o)}function So(t){const o={prevVal:t.prevState,currentVal:t.state};for(const e of t.listeners)e(o)}function Ve(t){if(mt>0&&!Pt.has(t)&&Pt.set(t,t.prevState),pt.add(t),!(mt>0)&&!Nt)try{for(Nt=!0;pt.size>0;){const o=Array.from(pt);pt.clear();for(const e of o){const s=Pt.get(e)??e.prevState;e.prevState=s,vo(e)}for(const e of o){const s=Yt.get(e);s&&(bt.current.push(e),Ue(s))}for(const e of o){const s=Yt.get(e);if(s)for(const n of s)So(n)}}}finally{Nt=!1,bt.current=[],Pt.clear()}}function gt(t){mt++;try{t()}finally{if(mt--,mt===0){const o=pt.values().next().value;o&&Ve(o)}}}function _o(t){return typeof t=="function"}class Ro{constructor(o,e){this.listeners=new Set,this.subscribe=s=>{var n,r;this.listeners.add(s);const i=(r=(n=this.options)==null?void 0:n.onSubscribe)==null?void 0:r.call(n,s,this);return()=>{this.listeners.delete(s),i?.()}},this.prevState=o,this.state=o,this.options=e}setState(o){var e,s,n;this.prevState=this.state,(e=this.options)!=null&&e.updateFn?this.state=this.options.updateFn(this.prevState)(o):_o(o)?this.state=o(this.prevState):this.state=o,(n=(s=this.options)==null?void 0:s.onUpdate)==null||n.call(s),Ve(this)}}const G="__TSR_index",Se="popstate",_e="beforeunload";function Po(t){let o=t.getLocation();const e=new Set,s=i=>{o=t.getLocation(),e.forEach(c=>c({location:o,action:i}))},n=i=>{t.notifyOnIndexChange??!0?s(i):o=t.getLocation()},r=async({task:i,navigateOpts:c,...a})=>{if(c?.ignoreBlocker??!1){i();return}const u=t.getBlockers?.()??[],h=a.type==="PUSH"||a.type==="REPLACE";if(typeof document<"u"&&u.length&&h)for(const f of u){const d=Et(a.path,a.state);if(await f.blockerFn({currentLocation:o,nextLocation:d,action:a.type})){t.onBlocked?.();return}}i()};return{get location(){return o},get length(){return t.getLength()},subscribers:e,subscribe:i=>(e.add(i),()=>{e.delete(i)}),push:(i,c,a)=>{const l=o.state[G];c=Re(l+1,c),r({task:()=>{t.pushState(i,c),s({type:"PUSH"})},navigateOpts:a,type:"PUSH",path:i,state:c})},replace:(i,c,a)=>{const l=o.state[G];c=Re(l,c),r({task:()=>{t.replaceState(i,c),s({type:"REPLACE"})},navigateOpts:a,type:"REPLACE",path:i,state:c})},go:(i,c)=>{r({task:()=>{t.go(i),n({type:"GO",index:i})},navigateOpts:c,type:"GO"})},back:i=>{r({task:()=>{t.back(i?.ignoreBlocker??!1),n({type:"BACK"})},navigateOpts:i,type:"BACK"})},forward:i=>{r({task:()=>{t.forward(i?.ignoreBlocker??!1),n({type:"FORWARD"})},navigateOpts:i,type:"FORWARD"})},canGoBack:()=>o.state[G]!==0,createHref:i=>t.createHref(i),block:i=>{if(!t.setBlockers)return()=>{};const c=t.getBlockers?.()??[];return t.setBlockers([...c,i]),()=>{const a=t.getBlockers?.()??[];t.setBlockers?.(a.filter(l=>l!==i))}},flush:()=>t.flush?.(),destroy:()=>t.destroy?.(),notify:s}}function Re(t,o){o||(o={});const e=se();return{...o,key:e,__TSR_key:e,[G]:t}}function wo(t){const o=typeof document<"u"?window:void 0,e=o.history.pushState,s=o.history.replaceState;let n=[];const r=()=>n,i=v=>n=v,c=(v=>v),a=(()=>Et(`${o.location.pathname}${o.location.search}${o.location.hash}`,o.history.state));if(!o.history.state?.__TSR_key&&!o.history.state?.key){const v=se();o.history.replaceState({[G]:0,key:v,__TSR_key:v},"")}let l=a(),u,h=!1,f=!1,d=!1,p=!1;const m=()=>l;let y,_;const x=()=>{y&&(S._ignoreSubscribers=!0,(y.isPush?o.history.pushState:o.history.replaceState)(y.state,"",y.href),S._ignoreSubscribers=!1,y=void 0,_=void 0,u=void 0)},P=(v,C,M)=>{const T=c(C);_||(u=l),l=Et(C,M),y={href:T,state:M,isPush:y?.isPush||v==="push"},_||(_=Promise.resolve().then(()=>x()))},L=v=>{l=a(),S.notify({type:v})},E=async()=>{if(f){f=!1;return}const v=a(),C=v.state[G]-l.state[G],M=C===1,T=C===-1,I=!M&&!T||h;h=!1;const Y=I?"GO":T?"BACK":"FORWARD",D=I?{type:"GO",index:C}:{type:T?"BACK":"FORWARD"};if(d)d=!1;else{const X=r();if(typeof document<"u"&&X.length){for(const fe of X)if(await fe.blockerFn({currentLocation:l,nextLocation:v,action:Y})){f=!0,o.history.go(1),S.notify(D);return}}}l=a(),S.notify(D)},w=v=>{if(p){p=!1;return}let C=!1;const M=r();if(typeof document<"u"&&M.length)for(const T of M){const I=T.enableBeforeUnload??!0;if(I===!0){C=!0;break}if(typeof I=="function"&&I()===!0){C=!0;break}}if(C)return v.preventDefault(),v.returnValue=""},S=Po({getLocation:m,getLength:()=>o.history.length,pushState:(v,C)=>P("push",v,C),replaceState:(v,C)=>P("replace",v,C),back:v=>(v&&(d=!0),p=!0,o.history.back()),forward:v=>{v&&(d=!0),p=!0,o.history.forward()},go:v=>{h=!0,o.history.go(v)},createHref:v=>c(v),flush:x,destroy:()=>{o.history.pushState=e,o.history.replaceState=s,o.removeEventListener(_e,w,{capture:!0}),o.removeEventListener(Se,E)},onBlocked:()=>{u&&l!==u&&(l=u)},getBlockers:r,setBlockers:i,notifyOnIndexChange:!1});return o.addEventListener(_e,w,{capture:!0}),o.addEventListener(Se,E),o.history.pushState=function(...v){const C=e.apply(o.history,v);return S._ignoreSubscribers||L("PUSH"),C},o.history.replaceState=function(...v){const C=s.apply(o.history,v);return S._ignoreSubscribers||L("REPLACE"),C},S}function Et(t,o){const e=t.indexOf("#"),s=t.indexOf("?"),n=se();return{href:t,pathname:t.substring(0,e>0?s>0?Math.min(e,s):e:s>0?s:t.length),hash:e>-1?t.substring(e):"",search:s>-1?t.slice(s,e===-1?void 0:e):"",state:o||{[G]:0,key:n,__TSR_key:n}}}function se(){return(Math.random()+1).toString(36).substring(7)}function Xt(t){return t[t.length-1]}function xo(t){return typeof t=="function"}function Q(t,o){return xo(t)?t(o):t}const Lo=Object.prototype.hasOwnProperty;function B(t,o){if(t===o)return t;const e=o,s=xe(t)&&xe(e);if(!s&&!(Tt(t)&&Tt(e)))return e;const n=s?t:Pe(t);if(!n)return e;const r=s?e:Pe(e);if(!r)return e;const i=n.length,c=r.length,a=s?new Array(c):{};let l=0;for(let u=0;u"u")return!0;const e=o.prototype;return!(!we(e)||!e.hasOwnProperty("isPrototypeOf"))}function we(t){return Object.prototype.toString.call(t)==="[object Object]"}function xe(t){return Array.isArray(t)&&t.length===Object.keys(t).length}function tt(t,o,e){if(t===o)return!0;if(typeof t!=typeof o)return!1;if(Array.isArray(t)&&Array.isArray(o)){if(t.length!==o.length)return!1;for(let s=0,n=t.length;sn||!tt(t[i],o[i],e)))return!1;return n===r}return!1}function it(t){let o,e;const s=new Promise((n,r)=>{o=n,e=r});return s.status="pending",s.resolve=n=>{s.status="resolved",s.value=n,o(n),t?.(n)},s.reject=n=>{s.status="rejected",e(n)},s}function q(t){return!!(t&&typeof t=="object"&&typeof t.then=="function")}const Co=Array.from(new Map([["%","%25"],["\\","%5C"]]).values());function Le(t,o=Co){function e(n,r,i=0){for(let c=i;c{try{return decodeURI(c)}catch{return c}})}}if(t===""||!/%[0-9A-Fa-f]{2}/g.test(t))return t;const s=t.replaceAll(/%[0-9a-f]{2}/g,n=>n.toUpperCase());return e(s,o)}var Mo="Invariant failed";function K(t,o){if(!t)throw new Error(Mo)}const U=0,ot=1,at=2,ct=3;function z(t){return ne(t.filter(o=>o!==void 0).join("/"))}function ne(t){return t.replace(/\/{2,}/g,"/")}function re(t){return t==="/"?t:t.replace(/^\/{1,}/,"")}function J(t){return t==="/"?t:t.replace(/\/{1,}$/,"")}function Ct(t){return J(re(t))}function It(t,o){return t?.endsWith("/")&&t!=="/"&&t!==`${o}/`?t.slice(0,-1):t}function bo(t,o,e){return It(t,e)===It(o,e)}function Eo(t){const{type:o,value:e}=t;if(o===U)return e;const{prefixSegment:s,suffixSegment:n}=t;if(o===ot){const r=e.substring(1);if(s&&n)return`${s}{$${r}}${n}`;if(s)return`${s}{$${r}}`;if(n)return`{$${r}}${n}`}if(o===ct){const r=e.substring(1);return s&&n?`${s}{-$${r}}${n}`:s?`${s}{-$${r}}`:n?`{-$${r}}${n}`:`{-$${r}}`}if(o===at){if(s&&n)return`${s}{$}${n}`;if(s)return`${s}{$}`;if(n)return`{$}${n}`}return e}function To({base:t,to:o,trailingSlash:e="never",parseCache:s}){let n=ut(t,s).slice();const r=ut(o,s);n.length>1&&Xt(n)?.value==="/"&&n.pop();for(let a=0,l=r.length;a1&&(Xt(n).value==="/"?e==="never"&&n.pop():e==="always"&&n.push({type:U,value:"/"}));const i=n.map(Eo);return z(i)}const ut=(t,o)=>{if(!t)return[];const e=o?.get(t);if(e)return e;const s=Bo(t);return o?.set(t,s),s},Io=/^\$.{1,}$/,ko=/^(.*?)\{(\$[a-zA-Z_$][a-zA-Z0-9_$]*)\}(.*)$/,Oo=/^(.*?)\{-(\$[a-zA-Z_$][a-zA-Z0-9_$]*)\}(.*)$/,Fo=/^\$$/,Ao=/^(.*?)\{\$\}(.*)$/;function Bo(t){t=ne(t);const o=[];if(t.slice(0,1)==="/"&&(t=t.substring(1),o.push({type:U,value:"/"})),!t)return o;const e=t.split("/").filter(Boolean);return o.push(...e.map(s=>{const n=s.match(Ao);if(n){const c=n[1],a=n[2];return{type:at,value:"$",prefixSegment:c||void 0,suffixSegment:a||void 0}}const r=s.match(Oo);if(r){const c=r[1],a=r[2],l=r[3];return{type:ct,value:a,prefixSegment:c||void 0,suffixSegment:l||void 0}}const i=s.match(ko);if(i){const c=i[1],a=i[2],l=i[3];return{type:ot,value:""+a,prefixSegment:c||void 0,suffixSegment:l||void 0}}if(Io.test(s)){const c=s.substring(1);return{type:ot,value:"$"+c,prefixSegment:void 0,suffixSegment:void 0}}return Fo.test(s)?{type:at,value:"$",prefixSegment:void 0,suffixSegment:void 0}:{type:U,value:s}})),t.slice(-1)==="/"&&(t=t.substring(1),o.push({type:U,value:"/"})),o}function Ut({path:t,params:o,decodeCharMap:e,parseCache:s}){const n=ut(t,s);function r(l){const u=o[l],h=typeof u=="string";return l==="*"||l==="_splat"?h?encodeURI(u):u:h?Do(u,e):u}let i=!1;const c={},a=z(n.map(l=>{if(l.type===U)return l.value;if(l.type===at){c._splat=o._splat,c["*"]=o._splat;const u=l.prefixSegment||"",h=l.suffixSegment||"";if(!o._splat)return i=!0,u||h?`${u}${h}`:void 0;const f=r("_splat");return`${u}${f}${h}`}if(l.type===ot){const u=l.value.substring(1);!i&&!(u in o)&&(i=!0),c[u]=o[u];const h=l.prefixSegment||"",f=l.suffixSegment||"";return`${h}${r(u)??"undefined"}${f}`}if(l.type===ct){const u=l.value.substring(1),h=l.prefixSegment||"",f=l.suffixSegment||"";return!(u in o)||o[u]==null?h||f?`${h}${f}`:void 0:(c[u]=o[u],`${h}${r(u)??""}${f}`)}return l.value}));return{usedParams:c,interpolatedPath:a,isMissingParams:i}}function Do(t,o){let e=encodeURIComponent(t);if(o)for(const[s,n]of o)e=e.replaceAll(s,n);return e}function Zt(t,o,e){const s=$o(t,o,e);if(!(o.to&&!s))return s??{}}function $o(t,{to:o,fuzzy:e,caseSensitive:s},n){const r=o,i=ut(t.startsWith("/")?t:`/${t}`,n),c=ut(r.startsWith("/")?r:`/${r}`,n),a={};return jo(i,c,a,e,s)?a:void 0}function jo(t,o,e,s,n){let r=0,i=0;for(;rm.value)));h&&p.startsWith(h)&&(p=p.slice(h.length)),f&&p.endsWith(f)&&(p=p.slice(0,p.length-f.length)),u=p}else u=decodeURI(z(l.map(h=>h.value)));return e["*"]=u,e._splat=u,!0}if(a.type===U){if(a.value==="/"&&!c?.value){i++;continue}if(c){if(n){if(a.value!==c.value)return!1}else if(a.value.toLowerCase()!==c.value.toLowerCase())return!1;r++,i++;continue}else return!1}if(a.type===ot){if(!c||c.value==="/")return!1;let l="",u=!1;if(a.prefixSegment||a.suffixSegment){const h=a.prefixSegment||"",f=a.suffixSegment||"",d=c.value;if(h&&!d.startsWith(h)||f&&!d.endsWith(f))return!1;let p=d;h&&p.startsWith(h)&&(p=p.slice(h.length)),f&&p.endsWith(f)&&(p=p.slice(0,p.length-f.length)),l=decodeURIComponent(p),u=!0}else l=decodeURIComponent(c.value),u=!0;u&&(e[a.value.substring(1)]=l,r++),i++;continue}if(a.type===ct){if(!c){i++;continue}if(c.value==="/"){i++;continue}let l="",u=!1;if(a.prefixSegment||a.suffixSegment){const h=a.prefixSegment||"",f=a.suffixSegment||"",d=c.value;if((!h||d.startsWith(h))&&(!f||d.endsWith(f))){let p=d;h&&p.startsWith(h)&&(p=p.slice(h.length)),f&&p.endsWith(f)&&(p=p.slice(0,p.length-f.length)),l=decodeURIComponent(p),u=!0}}else{let h=!0;for(let f=i+1;f=o.length)return e["**"]=z(t.slice(r).map(l=>l.value)),!!s&&o[o.length-1]?.value!=="/";if(i=t.length){for(let l=i;l{if(s.isRoot||!s.path)return;const r=re(s.fullPath);let i=ut(r),c=0;for(;i.length>c+1&&i[c]?.value==="/";)c++;c>0&&(i=i.slice(c));let a=0,l=!1;const u=i.map((h,f)=>{if(h.value==="/")return No;if(h.type===U)return Uo;let d;h.type===ot?d=Vo:h.type===ct?(d=Wo,a++):d=zo;for(let p=f+1;p{const r=Math.min(s.scores.length,n.scores.length);for(let i=0;in.parsed[i].value?1:-1;return s.index-n.index}).map((s,n)=>(s.child.rank=n,s.child))}function Yo({routeTree:t,initRoute:o}){const e={},s={},n=i=>{i.forEach((c,a)=>{o?.(c,a);const l=e[c.id];if(K(!l,`Duplicate routes found with id: ${String(c.id)}`),e[c.id]=c,!c.isRoot&&c.path){const h=J(c.fullPath);(!s[h]||c.fullPath.endsWith("/"))&&(s[h]=c)}const u=c.children;u?.length&&n(u)})};n([t]);const r=Jo(Object.values(e));return{routesById:e,routesByPath:s,flatRoutes:r}}function j(t){return!!t?.isNotFound}function Xo(){try{if(typeof window<"u"&&typeof window.sessionStorage=="object")return window.sessionStorage}catch{}}const kt="tsr-scroll-restoration-v1_3",Zo=(t,o)=>{let e;return(...s)=>{e||(e=setTimeout(()=>{t(...s),e=null},o))}};function Qo(){const t=Xo();if(!t)return null;const o=t.getItem(kt);let e=o?JSON.parse(o):{};return{state:e,set:s=>(e=Q(s,e)||e,t.setItem(kt,JSON.stringify(e)))}}const wt=Qo(),Qt=t=>t.state.__TSR_key||t.href;function ts(t){const o=[];let e;for(;e=t.parentNode;)o.push(`${t.tagName}:nth-child(${Array.prototype.indexOf.call(e.children,t)+1})`),t=e;return`${o.reverse().join(" > ")}`.toLowerCase()}let Ot=!1;function We({storageKey:t,key:o,behavior:e,shouldScrollRestoration:s,scrollToTopSelectors:n,location:r}){let i;try{i=JSON.parse(sessionStorage.getItem(t)||"{}")}catch(l){console.error(l);return}const c=o||window.history.state?.__TSR_key,a=i[c];Ot=!0;t:{if(s&&a&&Object.keys(a).length>0){for(const h in a){const f=a[h];if(h==="window")window.scrollTo({top:f.scrollY,left:f.scrollX,behavior:e});else if(h){const d=document.querySelector(h);d&&(d.scrollLeft=f.scrollX,d.scrollTop=f.scrollY)}}break t}const l=(r??window.location).hash.split("#",2)[1];if(l){const h=window.history.state?.__hashScrollIntoViewOptions??!0;if(h){const f=document.getElementById(l);f&&f.scrollIntoView(h)}break t}const u={top:0,left:0,behavior:e};if(window.scrollTo(u),n)for(const h of n){if(h==="window")continue;const f=typeof h=="function"?h():document.querySelector(h);f&&f.scrollTo(u)}}Ot=!1}function es(t,o){if(!wt&&!t.isServer||((t.options.scrollRestoration??!1)&&(t.isScrollRestoring=!0),t.isServer||t.isScrollRestorationSetup||!wt))return;t.isScrollRestorationSetup=!0,Ot=!1;const s=t.options.getScrollRestorationKey||Qt;window.history.scrollRestoration="manual";const n=r=>{if(Ot||!t.isScrollRestoring)return;let i="";if(r.target===document||r.target===window)i="window";else{const a=r.target.getAttribute("data-scroll-restoration-id");a?i=`[data-scroll-restoration-id="${a}"]`:i=ts(r.target)}const c=s(t.state.location);wt.set(a=>{const l=a[c]||={},u=l[i]||={};if(i==="window")u.scrollX=window.scrollX||0,u.scrollY=window.scrollY||0;else if(i){const h=document.querySelector(i);h&&(u.scrollX=h.scrollLeft||0,u.scrollY=h.scrollTop||0)}return a})};typeof document<"u"&&document.addEventListener("scroll",Zo(n,100),!0),t.subscribe("onRendered",r=>{const i=s(r.toLocation);if(!t.resetNextScroll){t.resetNextScroll=!0;return}typeof t.options.scrollRestoration=="function"&&!t.options.scrollRestoration({location:t.latestLocation})||(We({storageKey:kt,key:i,behavior:t.options.scrollRestorationBehavior,shouldScrollRestoration:t.isScrollRestoring,scrollToTopSelectors:t.options.scrollToTopSelectors,location:t.history.location}),t.isScrollRestoring&&wt.set(c=>(c[i]||={},c)))})}function os(t){if(typeof document<"u"&&document.querySelector){const o=t.state.location.state.__hashScrollIntoViewOptions??!0;if(o&&t.state.location.hash!==""){const e=document.getElementById(t.state.location.hash);e&&e.scrollIntoView(o)}}}function ss(t,o=String){const e=new URLSearchParams;for(const s in t){const n=t[s];n!==void 0&&e.set(s,o(n))}return e.toString()}function Vt(t){return t?t==="false"?!1:t==="true"?!0:+t*0===0&&+t+""===t?+t:t:""}function ns(t){const o=new URLSearchParams(t),e={};for(const[s,n]of o.entries()){const r=e[s];r==null?e[s]=Vt(n):Array.isArray(r)?r.push(Vt(n)):e[s]=[r,Vt(n)]}return e}const rs=as(JSON.parse),is=cs(JSON.stringify,JSON.parse);function as(t){return o=>{o[0]==="?"&&(o=o.substring(1));const e=ns(o);for(const s in e){const n=e[s];if(typeof n=="string")try{e[s]=t(n)}catch{}}return e}}function cs(t,o){const e=typeof o=="function";function s(n){if(typeof n=="object"&&n!==null)try{return t(n)}catch{}else if(e&&typeof n=="string")try{return o(n),t(n)}catch{}return n}return n=>{const r=ss(n,s);return r?`?${r}`:""}}const A="__root__";function us(t){if(t.statusCode=t.statusCode||t.code||307,!t.reloadDocument&&typeof t.href=="string")try{new URL(t.href),t.reloadDocument=!0}catch{}const o=new Headers(t.headers);t.href&&o.get("Location")===null&&o.set("Location",t.href);const e=new Response(null,{status:t.statusCode,headers:o});if(e.options=t,t.throw)throw e;return e}function N(t){return t instanceof Response&&!!t.options}function ls(t){const o=new Map;let e,s;const n=r=>{r.next&&(r.prev?(r.prev.next=r.next,r.next.prev=r.prev,r.next=void 0,s&&(s.next=r,r.prev=s)):(r.next.prev=void 0,e=r.next,r.next=void 0,s&&(r.prev=s,s.next=r)),s=r)};return{get(r){const i=o.get(r);if(i)return n(i),i.value},set(r,i){if(o.size>=t&&e){const a=e;o.delete(a.key),a.next&&(e=a.next,a.next.prev=void 0),a===s&&(s=void 0)}const c=o.get(r);if(c)c.value=i,n(c);else{const a={key:r,value:i,prev:s};s&&(s.next=a),s=a,e||(e=a),o.set(r,a)}}}}const Mt=t=>{if(!t.rendered)return t.rendered=!0,t.onReady?.()},At=(t,o)=>!!(t.preload&&!t.router.state.matches.some(e=>e.id===o)),ze=(t,o)=>{const e=t.router.routesById[o.routeId??""]??t.router.routeTree;!e.options.notFoundComponent&&t.router.options?.defaultNotFoundComponent&&(e.options.notFoundComponent=t.router.options.defaultNotFoundComponent),K(e.options.notFoundComponent);const s=t.matches.find(n=>n.routeId===e.id);K(s,"Could not find match for route: "+e.id),t.updateMatch(s.id,n=>({...n,status:"notFound",error:o,isFetching:!1})),o.routerCode==="BEFORE_LOAD"&&e.parentRoute&&(o.routeId=e.parentRoute.id,ze(t,o))},H=(t,o,e)=>{if(!(!N(e)&&!j(e))){if(N(e)&&e.redirectHandled&&!e.options.reloadDocument)throw e;if(o){o._nonReactive.beforeLoadPromise?.resolve(),o._nonReactive.loaderPromise?.resolve(),o._nonReactive.beforeLoadPromise=void 0,o._nonReactive.loaderPromise=void 0;const s=N(e)?"redirected":"notFound";o._nonReactive.error=e,t.updateMatch(o.id,n=>({...n,status:s,isFetching:!1,error:e})),j(e)&&!e.routeId&&(e.routeId=o.routeId),o._nonReactive.loadPromise?.resolve()}throw N(e)?(t.rendered=!0,e.options._fromLocation=t.location,e.redirectHandled=!0,e=t.router.resolveRedirect(e),e):(ze(t,e),e)}},Ke=(t,o)=>{const e=t.router.getMatch(o);return!!(!t.router.isServer&&e._nonReactive.dehydrated||t.router.isServer&&e.ssr===!1)},ht=(t,o,e,s)=>{const{id:n,routeId:r}=t.matches[o],i=t.router.looseRoutesById[r];if(e instanceof Promise)throw e;e.routerCode=s,t.firstBadMatchIndex??=o,H(t,t.router.getMatch(n),e);try{i.options.onError?.(e)}catch(c){e=c,H(t,t.router.getMatch(n),e)}t.updateMatch(n,c=>(c._nonReactive.beforeLoadPromise?.resolve(),c._nonReactive.beforeLoadPromise=void 0,c._nonReactive.loadPromise?.resolve(),{...c,error:e,status:"error",isFetching:!1,updatedAt:Date.now(),abortController:new AbortController}))},hs=(t,o,e,s)=>{const n=t.router.getMatch(o),r=t.matches[e-1]?.id,i=r?t.router.getMatch(r):void 0;if(t.router.isShell()){n.ssr=s.id===A;return}if(i?.ssr===!1){n.ssr=!1;return}const c=d=>d===!0&&i?.ssr==="data-only"?"data-only":d,a=t.router.options.defaultSsr??!0;if(s.options.ssr===void 0){n.ssr=c(a);return}if(typeof s.options.ssr!="function"){n.ssr=c(s.options.ssr);return}const{search:l,params:u}=n,h={search:xt(l,n.searchError),params:xt(u,n.paramsError),location:t.location,matches:t.matches.map(d=>({index:d.index,pathname:d.pathname,fullPath:d.fullPath,staticData:d.staticData,id:d.id,routeId:d.routeId,search:xt(d.search,d.searchError),params:xt(d.params,d.paramsError),ssr:d.ssr}))},f=s.options.ssr(h);if(q(f))return f.then(d=>{n.ssr=c(d??a)});n.ssr=c(f??a)},He=(t,o,e,s)=>{if(s._nonReactive.pendingTimeout!==void 0)return;const n=e.options.pendingMs??t.router.options.defaultPendingMs;if(!!(t.onReady&&!t.router.isServer&&!At(t,o)&&(e.options.loader||e.options.beforeLoad||Je(e))&&typeof n=="number"&&n!==1/0&&(e.options.pendingComponent??t.router.options?.defaultPendingComponent))){const i=setTimeout(()=>{Mt(t)},n);s._nonReactive.pendingTimeout=i}},fs=(t,o,e)=>{const s=t.router.getMatch(o);if(!s._nonReactive.beforeLoadPromise&&!s._nonReactive.loaderPromise)return;He(t,o,e,s);const n=()=>{const r=t.router.getMatch(o);r.preload&&(r.status==="redirected"||r.status==="notFound")&&H(t,r,r.error)};return s._nonReactive.beforeLoadPromise?s._nonReactive.beforeLoadPromise.then(n):n()},ds=(t,o,e,s)=>{const n=t.router.getMatch(o),r=n._nonReactive.loadPromise;n._nonReactive.loadPromise=it(()=>{r?.resolve()});const{paramsError:i,searchError:c}=n;i&&ht(t,e,i,"PARSE_PARAMS"),c&&ht(t,e,c,"VALIDATE_SEARCH"),He(t,o,s,n);const a=new AbortController,l=t.matches[e-1]?.id,f={...(l?t.router.getMatch(l):void 0)?.context??t.router.options.context??void 0,...n.__routeContext};let d=!1;const p=()=>{d||(d=!0,t.updateMatch(o,S=>({...S,isFetching:"beforeLoad",fetchCount:S.fetchCount+1,abortController:a,context:f})))},m=()=>{n._nonReactive.beforeLoadPromise?.resolve(),n._nonReactive.beforeLoadPromise=void 0,t.updateMatch(o,S=>({...S,isFetching:!1}))};if(!s.options.beforeLoad){gt(()=>{p(),m()});return}n._nonReactive.beforeLoadPromise=it();const{search:y,params:_,cause:x}=n,P=At(t,o),L={search:y,abortController:a,params:_,preload:P,context:f,location:t.location,navigate:S=>t.router.navigate({...S,_fromLocation:t.location}),buildLocation:t.router.buildLocation,cause:P?"preload":x,matches:t.matches,...t.router.options.additionalContext},E=S=>{if(S===void 0){gt(()=>{p(),m()});return}(N(S)||j(S))&&(p(),ht(t,e,S,"BEFORE_LOAD")),gt(()=>{p(),t.updateMatch(o,v=>({...v,__beforeLoadContext:S,context:{...v.context,...S}})),m()})};let w;try{if(w=s.options.beforeLoad(L),q(w))return p(),w.catch(S=>{ht(t,e,S,"BEFORE_LOAD")}).then(E)}catch(S){p(),ht(t,e,S,"BEFORE_LOAD")}E(w)},ps=(t,o)=>{const{id:e,routeId:s}=t.matches[o],n=t.router.looseRoutesById[s],r=()=>{if(t.router.isServer){const a=hs(t,e,o,n);if(q(a))return a.then(c)}return c()},i=()=>ds(t,e,o,n),c=()=>{if(Ke(t,e))return;const a=fs(t,e,n);return q(a)?a.then(i):i()};return r()},yt=(t,o,e)=>{const s=t.router.getMatch(o);if(!s||!e.options.head&&!e.options.scripts&&!e.options.headers)return;const n={matches:t.matches,match:s,params:s.params,loaderData:s.loaderData};return Promise.all([e.options.head?.(n),e.options.scripts?.(n),e.options.headers?.(n)]).then(([r,i,c])=>{const a=r?.meta,l=r?.links,u=r?.scripts,h=r?.styles;return{meta:a,links:l,headScripts:u,headers:c,scripts:i,styles:h}})},Ge=(t,o,e,s)=>{const n=t.matchPromises[e-1],{params:r,loaderDeps:i,abortController:c,cause:a}=t.router.getMatch(o);let l=t.router.options.context??{};for(let h=0;h<=e;h++){const f=t.matches[h];if(!f)continue;const d=t.router.getMatch(f.id);d&&(l={...l,...d.__routeContext??{},...d.__beforeLoadContext??{}})}const u=At(t,o);return{params:r,deps:i,preload:!!u,parentMatchPromise:n,abortController:c,context:l,location:t.location,navigate:h=>t.router.navigate({...h,_fromLocation:t.location}),cause:u?"preload":a,route:s,...t.router.options.additionalContext}},Ee=async(t,o,e,s)=>{try{const n=t.router.getMatch(o);try{(!t.router.isServer||n.ssr===!0)&&qe(s);const r=s.options.loader?.(Ge(t,o,e,s)),i=s.options.loader&&q(r);if(!!(i||s._lazyPromise||s._componentsPromise||s.options.head||s.options.scripts||s.options.headers||n._nonReactive.minPendingPromise)&&t.updateMatch(o,h=>({...h,isFetching:"loader"})),s.options.loader){const h=i?await r:r;H(t,t.router.getMatch(o),h),h!==void 0&&t.updateMatch(o,f=>({...f,loaderData:h}))}s._lazyPromise&&await s._lazyPromise;const a=yt(t,o,s),l=a?await a:void 0,u=n._nonReactive.minPendingPromise;u&&await u,s._componentsPromise&&await s._componentsPromise,t.updateMatch(o,h=>({...h,error:void 0,status:"success",isFetching:!1,updatedAt:Date.now(),...l}))}catch(r){let i=r;const c=n._nonReactive.minPendingPromise;c&&await c,j(r)&&await s.options.notFoundComponent?.preload?.(),H(t,t.router.getMatch(o),r);try{s.options.onError?.(r)}catch(u){i=u,H(t,t.router.getMatch(o),u)}const a=yt(t,o,s),l=a?await a:void 0;t.updateMatch(o,u=>({...u,error:i,status:"error",isFetching:!1,...l}))}}catch(n){const r=t.router.getMatch(o);if(r){const i=yt(t,o,s);if(i){const c=await i;t.updateMatch(o,a=>({...a,...c}))}r._nonReactive.loaderPromise=void 0}H(t,r,n)}},ms=async(t,o)=>{const{id:e,routeId:s}=t.matches[o];let n=!1,r=!1;const i=t.router.looseRoutesById[s];if(Ke(t,e)){if(t.router.isServer){const l=yt(t,e,i);if(l){const u=await l;t.updateMatch(e,h=>({...h,...u}))}return t.router.getMatch(e)}}else{const l=t.router.getMatch(e);if(l._nonReactive.loaderPromise){if(l.status==="success"&&!t.sync&&!l.preload)return l;await l._nonReactive.loaderPromise;const u=t.router.getMatch(e),h=u._nonReactive.error||u.error;h&&H(t,u,h)}else{const u=Date.now()-l.updatedAt,h=At(t,e),f=h?i.options.preloadStaleTime??t.router.options.defaultPreloadStaleTime??3e4:i.options.staleTime??t.router.options.defaultStaleTime??0,d=i.options.shouldReload,p=typeof d=="function"?d(Ge(t,e,o,i)):d,m=!!h&&!t.router.state.matches.some(P=>P.id===e),y=t.router.getMatch(e);y._nonReactive.loaderPromise=it(),m!==y.preload&&t.updateMatch(e,P=>({...P,preload:m}));const{status:_,invalid:x}=y;if(n=_==="success"&&(x||(p??u>f)),!(h&&i.options.preload===!1))if(n&&!t.sync)r=!0,(async()=>{try{await Ee(t,e,o,i);const P=t.router.getMatch(e);P._nonReactive.loaderPromise?.resolve(),P._nonReactive.loadPromise?.resolve(),P._nonReactive.loaderPromise=void 0}catch(P){N(P)&&await t.router.navigate(P.options)}})();else if(_!=="success"||n&&t.sync)await Ee(t,e,o,i);else{const P=yt(t,e,i);if(P){const L=await P;t.updateMatch(e,E=>({...E,...L}))}}}}const c=t.router.getMatch(e);r||(c._nonReactive.loaderPromise?.resolve(),c._nonReactive.loadPromise?.resolve()),clearTimeout(c._nonReactive.pendingTimeout),c._nonReactive.pendingTimeout=void 0,r||(c._nonReactive.loaderPromise=void 0),c._nonReactive.dehydrated=void 0;const a=r?c.isFetching:!1;return a!==c.isFetching||c.invalid!==!1?(t.updateMatch(e,l=>({...l,isFetching:a,invalid:!1})),t.router.getMatch(e)):c};async function Te(t){const o=Object.assign(t,{matchPromises:[]});!o.router.isServer&&o.router.state.matches.some(e=>e._forcePending)&&Mt(o);try{for(let n=0;n{const{id:e,...s}=o.options;Object.assign(t.options,s),t._lazyLoaded=!0,t._lazyPromise=void 0}):t._lazyLoaded=!0),!t._componentsLoaded&&t._componentsPromise===void 0){const o=()=>{const e=[];for(const s of Ye){const n=t.options[s]?.preload;n&&e.push(n())}if(e.length)return Promise.all(e).then(()=>{t._componentsLoaded=!0,t._componentsPromise=void 0});t._componentsLoaded=!0,t._componentsPromise=void 0};t._componentsPromise=t._lazyPromise?t._lazyPromise.then(o):o()}return t._componentsPromise}function xt(t,o){return o?{status:"error",error:o}:{status:"success",value:t}}function Je(t){for(const o of Ye)if(t.options[o]?.preload)return!0;return!1}const Ye=["component","errorComponent","pendingComponent","notFoundComponent"];function gs(t){return{input:({url:o})=>{for(const e of t)o=Xe(e,o);return o},output:({url:o})=>{for(let e=t.length-1;e>=0;e--)o=Ze(t[e],o);return o}}}function ys(t){const o=Ct(t.basepath),e=`/${o}`,s=`${e}/`,n=t.caseSensitive?e:e.toLowerCase(),r=t.caseSensitive?s:s.toLowerCase();return{input:({url:i})=>{const c=t.caseSensitive?i.pathname:i.pathname.toLowerCase();return c===n?i.pathname="/":c.startsWith(r)&&(i.pathname=i.pathname.slice(e.length)),i},output:({url:i})=>(i.pathname=z(["/",o,i.pathname]),i)}}function Xe(t,o){const e=t?.input?.({url:o});if(e){if(typeof e=="string")return new URL(e);if(e instanceof URL)return e}return o}function Ze(t,o){const e=t?.output?.({url:o});if(e){if(typeof e=="string")return new URL(e);if(e instanceof URL)return e}return o}function et(t){const o=t.resolvedLocation,e=t.location,s=o?.pathname!==e.pathname,n=o?.href!==e.href,r=o?.hash!==e.hash;return{fromLocation:o,toLocation:e,pathChanged:s,hrefChanged:n,hashChanged:r}}class vs{constructor(o){this.tempLocationKey=`${Math.round(Math.random()*1e7)}`,this.resetNextScroll=!0,this.shouldViewTransition=void 0,this.isViewTransitionTypesSupported=void 0,this.subscribers=new Set,this.isScrollRestoring=!1,this.isScrollRestorationSetup=!1,this.startTransition=e=>e(),this.update=e=>{e.notFoundRoute&&console.warn("The notFoundRoute API is deprecated and will be removed in the next major version. See https://tanstack.com/router/v1/docs/framework/react/guide/not-found-errors#migrating-from-notfoundroute for more info.");const s=this.options,n=this.basepath??s?.basepath??"/",r=this.basepath===void 0,i=s?.rewrite;this.options={...s,...e},this.isServer=this.options.isServer??typeof document>"u",this.pathParamsDecodeCharMap=this.options.pathParamsAllowedCharacters?new Map(this.options.pathParamsAllowedCharacters.map(f=>[encodeURIComponent(f),f])):void 0,(!this.history||this.options.history&&this.options.history!==this.history)&&(this.options.history?this.history=this.options.history:this.isServer||(this.history=wo())),this.origin=this.options.origin,this.origin||(!this.isServer&&window?.origin&&window.origin!=="null"?this.origin=window.origin:this.origin="http://localhost"),this.history&&this.updateLatestLocation(),this.options.routeTree!==this.routeTree&&(this.routeTree=this.options.routeTree,this.buildRouteTree()),!this.__store&&this.latestLocation&&(this.__store=new Ro(_s(this.latestLocation),{onUpdate:()=>{this.__store.state={...this.state,cachedMatches:this.state.cachedMatches.filter(f=>!["redirected"].includes(f.status))}}}),es(this));let c=!1;const a=this.options.basepath??"/",l=this.options.rewrite;if(r||n!==a||i!==l){this.basepath=a;const f=[];Ct(a)!==""&&f.push(ys({basepath:a})),l&&f.push(l),this.rewrite=f.length===0?void 0:f.length===1?f[0]:gs(f),this.history&&this.updateLatestLocation(),c=!0}c&&this.__store&&(this.__store.state={...this.state,location:this.latestLocation}),typeof window<"u"&&"CSS"in window&&typeof window.CSS?.supports=="function"&&(this.isViewTransitionTypesSupported=window.CSS.supports("selector(:active-view-transition-type(a)"))},this.updateLatestLocation=()=>{this.latestLocation=this.parseLocation(this.history.location,this.latestLocation)},this.buildRouteTree=()=>{const{routesById:e,routesByPath:s,flatRoutes:n}=Yo({routeTree:this.routeTree,initRoute:(i,c)=>{i.init({originalIndex:c})}});this.routesById=e,this.routesByPath=s,this.flatRoutes=n;const r=this.options.notFoundRoute;r&&(r.init({originalIndex:99999999999}),this.routesById[r.id]=r)},this.subscribe=(e,s)=>{const n={eventType:e,fn:s};return this.subscribers.add(n),()=>{this.subscribers.delete(n)}},this.emit=e=>{this.subscribers.forEach(s=>{s.eventType===e.type&&s.fn(e)})},this.parseLocation=(e,s)=>{const n=({href:a,state:l})=>{const u=new URL(a,this.origin),h=Xe(this.rewrite,u),f=this.options.parseSearch(h.search),d=this.options.stringifySearch(f);h.search=d;const p=h.href.replace(h.origin,""),{pathname:m,hash:y}=h;return{href:p,publicHref:a,url:h.href,pathname:Le(m),searchStr:d,search:B(s?.search,f),hash:y.split("#").reverse()[0]??"",state:B(s?.state,l)}},r=n(e),{__tempLocation:i,__tempKey:c}=r.state;if(i&&(!c||c===this.tempLocationKey)){const a=n(i);return a.state.key=r.state.key,a.state.__TSR_key=r.state.__TSR_key,delete a.state.__tempLocation,{...a,maskedLocation:r}}return r},this.resolvePathWithBase=(e,s)=>To({base:e,to:ne(s),trailingSlash:this.options.trailingSlash,parseCache:this.parsePathnameCache}),this.matchRoutes=(e,s,n)=>typeof e=="string"?this.matchRoutesInternal({pathname:e,search:s},n):this.matchRoutesInternal(e,s),this.parsePathnameCache=ls(1e3),this.getMatchedRoutes=(e,s)=>Rs({pathname:e,routePathname:s,caseSensitive:this.options.caseSensitive,routesByPath:this.routesByPath,routesById:this.routesById,flatRoutes:this.flatRoutes,parseCache:this.parsePathnameCache}),this.cancelMatch=e=>{const s=this.getMatch(e);s&&(s.abortController.abort(),clearTimeout(s._nonReactive.pendingTimeout),s._nonReactive.pendingTimeout=void 0)},this.cancelMatches=()=>{const e=this.state.matches.filter(r=>r.status==="pending"),s=this.state.matches.filter(r=>r.isFetching==="loader");new Set([...this.state.pendingMatches??[],...e,...s]).forEach(r=>{this.cancelMatch(r.id)})},this.buildLocation=e=>{const s=(r={})=>{const i=r._fromLocation||this.pendingBuiltLocation||this.latestLocation,c=this.matchRoutes(i,{_buildLocation:!0}),a=Xt(c);r.from;const l=r.unsafeRelative==="path"?i.pathname:r.from??a.fullPath,u=this.resolvePathWithBase(l,"."),h=a.search,f={...a.params},d=r.to?this.resolvePathWithBase(u,`${r.to}`):this.resolvePathWithBase(u,"."),p=r.params===!1||r.params===null?{}:(r.params??!0)===!0?f:Object.assign(f,Q(r.params,f)),m=Ut({path:d,params:p,parseCache:this.parsePathnameCache}).interpolatedPath,y=this.matchRoutes(m,void 0,{_buildLocation:!0}).map(M=>this.looseRoutesById[M.routeId]);if(Object.keys(p).length>0)for(const M of y){const T=M.options.params?.stringify??M.options.stringifyParams;T&&Object.assign(p,T(p))}const _=e.leaveParams?d:Le(Ut({path:d,params:p,decodeCharMap:this.pathParamsDecodeCharMap,parseCache:this.parsePathnameCache}).interpolatedPath);let x=h;if(e._includeValidateSearch&&this.options.search?.strict){const M={};y.forEach(T=>{if(T.options.validateSearch)try{Object.assign(M,te(T.options.validateSearch,{...M,...x}))}catch{}}),x=M}x=Ps({search:x,dest:r,destRoutes:y,_includeValidateSearch:e._includeValidateSearch}),x=B(h,x);const P=this.options.stringifySearch(x),L=r.hash===!0?i.hash:r.hash?Q(r.hash,i.hash):void 0,E=L?`#${L}`:"";let w=r.state===!0?i.state:r.state?Q(r.state,i.state):{};w=B(i.state,w);const S=`${_}${P}${E}`,v=new URL(S,this.origin),C=Ze(this.rewrite,v);return{publicHref:C.pathname+C.search+C.hash,href:S,url:C.href,pathname:_,search:x,searchStr:P,state:w,hash:L??"",unmaskOnReload:r.unmaskOnReload}},n=(r={},i)=>{const c=s(r);let a=i?s(i):void 0;if(!a){let l={};const u=this.options.routeMasks?.find(h=>{const f=Zt(c.pathname,{to:h.from,caseSensitive:!1,fuzzy:!1},this.parsePathnameCache);return f?(l=f,!0):!1});if(u){const{from:h,...f}=u;i={from:e.from,...f,params:l},a=s(i)}}return a&&(c.maskedLocation=a),c};return e.mask?n(e,{from:e.from,...e.mask}):n(e)},this.commitLocation=({viewTransition:e,ignoreBlocker:s,...n})=>{const r=()=>{const a=["key","__TSR_key","__TSR_index","__hashScrollIntoViewOptions"];a.forEach(u=>{n.state[u]=this.latestLocation.state[u]});const l=tt(n.state,this.latestLocation.state);return a.forEach(u=>{delete n.state[u]}),l},i=J(this.latestLocation.href)===J(n.href),c=this.commitLocationPromise;if(this.commitLocationPromise=it(()=>{c?.resolve()}),i&&r())this.load();else{let{maskedLocation:a,hashScrollIntoView:l,...u}=n;a&&(u={...a,state:{...a.state,__tempKey:void 0,__tempLocation:{...u,search:u.searchStr,state:{...u.state,__tempKey:void 0,__tempLocation:void 0,__TSR_key:void 0,key:void 0}}}},(u.unmaskOnReload??this.options.unmaskOnReload??!1)&&(u.state.__tempKey=this.tempLocationKey)),u.state.__hashScrollIntoViewOptions=l??this.options.defaultHashScrollIntoView??!0,this.shouldViewTransition=e,this.history[n.replace?"replace":"push"](u.publicHref,u.state,{ignoreBlocker:s})}return this.resetNextScroll=n.resetScroll??!0,this.history.subscribers.size||this.load(),this.commitLocationPromise},this.buildAndCommitLocation=({replace:e,resetScroll:s,hashScrollIntoView:n,viewTransition:r,ignoreBlocker:i,href:c,...a}={})=>{if(c){const h=this.history.location.state.__TSR_index,f=Et(c,{__TSR_index:e?h:h+1});a.to=f.pathname,a.search=this.options.parseSearch(f.search),a.hash=f.hash.slice(1)}const l=this.buildLocation({...a,_includeValidateSearch:!0});this.pendingBuiltLocation=l;const u=this.commitLocation({...l,viewTransition:r,replace:e,resetScroll:s,hashScrollIntoView:n,ignoreBlocker:i});return Promise.resolve().then(()=>{this.pendingBuiltLocation===l&&(this.pendingBuiltLocation=void 0)}),u},this.navigate=({to:e,reloadDocument:s,href:n,...r})=>{if(!s&&n)try{new URL(`${n}`),s=!0}catch{}return s?(n||(n=this.buildLocation({to:e,...r}).url),r.replace?window.location.replace(n):window.location.href=n,Promise.resolve()):this.buildAndCommitLocation({...r,href:n,to:e,_isNavigate:!0})},this.beforeLoad=()=>{if(this.cancelMatches(),this.updateLatestLocation(),this.isServer){const s=this.buildLocation({to:this.latestLocation.pathname,search:!0,params:!0,hash:!0,state:!0,_includeValidateSearch:!0}),n=r=>{try{return encodeURI(decodeURI(r))}catch{return r}};if(Ct(n(this.latestLocation.href))!==Ct(n(s.href))){let r=s.url;throw this.origin&&r.startsWith(this.origin)&&(r=r.replace(this.origin,"")||"/"),us({href:r})}}const e=this.matchRoutes(this.latestLocation);this.__store.setState(s=>({...s,status:"pending",statusCode:200,isLoading:!0,location:this.latestLocation,pendingMatches:e,cachedMatches:s.cachedMatches.filter(n=>!e.some(r=>r.id===n.id))}))},this.load=async e=>{let s,n,r;for(r=new Promise(c=>{this.startTransition(async()=>{try{this.beforeLoad();const a=this.latestLocation,l=this.state.resolvedLocation;this.state.redirect||this.emit({type:"onBeforeNavigate",...et({resolvedLocation:l,location:a})}),this.emit({type:"onBeforeLoad",...et({resolvedLocation:l,location:a})}),await Te({router:this,sync:e?.sync,matches:this.state.pendingMatches,location:a,updateMatch:this.updateMatch,onReady:async()=>{this.startTransition(()=>{this.startViewTransition(async()=>{let u=[],h=[],f=[];gt(()=>{this.__store.setState(d=>{const p=d.matches,m=d.pendingMatches||d.matches;return u=p.filter(y=>!m.some(_=>_.id===y.id)),h=m.filter(y=>!p.some(_=>_.id===y.id)),f=m.filter(y=>p.some(_=>_.id===y.id)),{...d,isLoading:!1,loadedAt:Date.now(),matches:m,pendingMatches:void 0,cachedMatches:[...d.cachedMatches,...u.filter(y=>y.status!=="error")]}}),this.clearExpiredCache()}),[[u,"onLeave"],[h,"onEnter"],[f,"onStay"]].forEach(([d,p])=>{d.forEach(m=>{this.looseRoutesById[m.routeId].options[p]?.(m)})})})})}})}catch(a){N(a)?(s=a,this.isServer||this.navigate({...s.options,replace:!0,ignoreBlocker:!0})):j(a)&&(n=a),this.__store.setState(l=>({...l,statusCode:s?s.status:n?404:l.matches.some(u=>u.status==="error")?500:200,redirect:s}))}this.latestLoadPromise===r&&(this.commitLocationPromise?.resolve(),this.latestLoadPromise=void 0,this.commitLocationPromise=void 0),c()})}),this.latestLoadPromise=r,await r;this.latestLoadPromise&&r!==this.latestLoadPromise;)await this.latestLoadPromise;let i;this.hasNotFoundMatch()?i=404:this.__store.state.matches.some(c=>c.status==="error")&&(i=500),i!==void 0&&this.__store.setState(c=>({...c,statusCode:i}))},this.startViewTransition=e=>{const s=this.shouldViewTransition??this.options.defaultViewTransition;if(delete this.shouldViewTransition,s&&typeof document<"u"&&"startViewTransition"in document&&typeof document.startViewTransition=="function"){let n;if(typeof s=="object"&&this.isViewTransitionTypesSupported){const r=this.latestLocation,i=this.state.resolvedLocation,c=typeof s.types=="function"?s.types(et({resolvedLocation:i,location:r})):s.types;if(c===!1){e();return}n={update:e,types:c}}else n=e;document.startViewTransition(n)}else e()},this.updateMatch=(e,s)=>{this.startTransition(()=>{const n=this.state.pendingMatches?.some(r=>r.id===e)?"pendingMatches":this.state.matches.some(r=>r.id===e)?"matches":this.state.cachedMatches.some(r=>r.id===e)?"cachedMatches":"";n&&this.__store.setState(r=>({...r,[n]:r[n]?.map(i=>i.id===e?s(i):i)}))})},this.getMatch=e=>{const s=n=>n.id===e;return this.state.cachedMatches.find(s)??this.state.pendingMatches?.find(s)??this.state.matches.find(s)},this.invalidate=e=>{const s=n=>e?.filter?.(n)??!0?{...n,invalid:!0,...e?.forcePending||n.status==="error"?{status:"pending",error:void 0}:void 0}:n;return this.__store.setState(n=>({...n,matches:n.matches.map(s),cachedMatches:n.cachedMatches.map(s),pendingMatches:n.pendingMatches?.map(s)})),this.shouldViewTransition=!1,this.load({sync:e?.sync})},this.resolveRedirect=e=>{if(!e.options.href){const s=this.buildLocation(e.options);let n=s.url;this.origin&&n.startsWith(this.origin)&&(n=n.replace(this.origin,"")||"/"),e.options.href=s.href,e.headers.set("Location",n)}return e.headers.get("Location")||e.headers.set("Location",e.options.href),e},this.clearCache=e=>{const s=e?.filter;s!==void 0?this.__store.setState(n=>({...n,cachedMatches:n.cachedMatches.filter(r=>!s(r))})):this.__store.setState(n=>({...n,cachedMatches:[]}))},this.clearExpiredCache=()=>{const e=s=>{const n=this.looseRoutesById[s.routeId];if(!n.options.loader)return!0;const r=(s.preload?n.options.preloadGcTime??this.options.defaultPreloadGcTime:n.options.gcTime??this.options.defaultGcTime)??300*1e3;return s.status==="error"?!0:Date.now()-s.updatedAt>=r};this.clearCache({filter:e})},this.loadRouteChunk=qe,this.preloadRoute=async e=>{const s=this.buildLocation(e);let n=this.matchRoutes(s,{throwOnError:!0,preload:!0,dest:e});const r=new Set([...this.state.matches,...this.state.pendingMatches??[]].map(c=>c.id)),i=new Set([...r,...this.state.cachedMatches.map(c=>c.id)]);gt(()=>{n.forEach(c=>{i.has(c.id)||this.__store.setState(a=>({...a,cachedMatches:[...a.cachedMatches,c]}))})});try{return n=await Te({router:this,matches:n,location:s,preload:!0,updateMatch:(c,a)=>{r.has(c)?n=n.map(l=>l.id===c?a(l):l):this.updateMatch(c,a)}}),n}catch(c){if(N(c))return c.options.reloadDocument?void 0:await this.preloadRoute({...c.options,_fromLocation:s});j(c)||console.error(c);return}},this.matchRoute=(e,s)=>{const n={...e,to:e.to?this.resolvePathWithBase(e.from||"",e.to):void 0,params:e.params||{},leaveParams:!0},r=this.buildLocation(n);if(s?.pending&&this.state.status!=="pending")return!1;const c=(s?.pending===void 0?!this.state.isLoading:s.pending)?this.latestLocation:this.state.resolvedLocation||this.state.location,a=Zt(c.pathname,{...s,to:r.pathname},this.parsePathnameCache);return!a||e.params&&!tt(a,e.params,{partial:!0})?!1:a&&(s?.includeSearch??!0)?tt(c.search,r.search,{partial:!0})?a:!1:a},this.hasNotFoundMatch=()=>this.__store.state.matches.some(e=>e.status==="notFound"||e.globalNotFound),this.update({defaultPreloadDelay:50,defaultPendingMs:1e3,defaultPendingMinMs:500,context:void 0,...o,caseSensitive:o.caseSensitive??!1,notFoundMode:o.notFoundMode??"fuzzy",stringifySearch:o.stringifySearch??is,parseSearch:o.parseSearch??rs}),typeof document<"u"&&(self.__TSR_ROUTER__=this)}isShell(){return!!this.options.isShell}isPrerendering(){return!!this.options.isPrerendering}get state(){return this.__store.state}get looseRoutesById(){return this.routesById}matchRoutesInternal(o,e){const{foundRoute:s,matchedRoutes:n,routeParams:r}=this.getMatchedRoutes(o.pathname,e?.dest?.to);let i=!1;(s?s.path!=="/"&&r["**"]:J(o.pathname))&&(this.options.notFoundRoute?n.push(this.options.notFoundRoute):i=!0);const c=(()=>{if(i){if(this.options.notFoundMode!=="root")for(let u=n.length-1;u>=0;u--){const h=n[u];if(h.children)return h.id}return A}})(),a=[],l=u=>u?.id?u.context??this.options.context??void 0:this.options.context??void 0;return n.forEach((u,h)=>{const f=a[h-1],[d,p,m]=(()=>{const I=f?.search??o.search,Y=f?._strictSearch??void 0;try{const D=te(u.options.validateSearch,{...I})??void 0;return[{...I,...D},{...Y,...D},void 0]}catch(D){let X=D;if(D instanceof Ft||(X=new Ft(D.message,{cause:D})),e?.throwOnError)throw X;return[I,{},X]}})(),y=u.options.loaderDeps?.({search:d})??"",_=y?JSON.stringify(y):"",{interpolatedPath:x,usedParams:P}=Ut({path:u.fullPath,params:r,decodeCharMap:this.pathParamsDecodeCharMap}),L=u.id+x+_,E=this.getMatch(L),w=this.state.matches.find(I=>I.routeId===u.id),S=E?._strictParams??P;let v;if(!E){const I=u.options.params?.parse??u.options.parseParams;if(I)try{Object.assign(S,I(S))}catch(Y){if(v=new Ss(Y.message,{cause:Y}),e?.throwOnError)throw v}}Object.assign(r,S);const C=w?"stay":"enter";let M;if(E)M={...E,cause:C,params:w?B(w.params,r):r,_strictParams:S,search:B(w?w.search:E.search,d),_strictSearch:p};else{const I=u.options.loader||u.options.beforeLoad||u.lazyFn||Je(u)?"pending":"success";M={id:L,index:h,routeId:u.id,params:w?B(w.params,r):r,_strictParams:S,pathname:x,updatedAt:Date.now(),search:w?B(w.search,d):d,_strictSearch:p,searchError:void 0,status:I,isFetching:!1,error:void 0,paramsError:v,__routeContext:void 0,_nonReactive:{loadPromise:it()},__beforeLoadContext:void 0,context:{},abortController:new AbortController,fetchCount:0,cause:C,loaderDeps:w?B(w.loaderDeps,y):y,invalid:!1,preload:!1,links:void 0,scripts:void 0,headScripts:void 0,meta:void 0,staticData:u.options.staticData||{},fullPath:u.fullPath}}e?.preload||(M.globalNotFound=c===u.id),M.searchError=m;const T=l(f);M.context={...T,...M.__routeContext,...M.__beforeLoadContext},a.push(M)}),a.forEach((u,h)=>{const f=this.looseRoutesById[u.routeId];if(!this.getMatch(u.id)&&e?._buildLocation!==!0){const p=a[h-1],m=l(p);if(f.options.context){const y={deps:u.loaderDeps,params:u.params,context:m??{},location:o,navigate:_=>this.navigate({..._,_fromLocation:o}),buildLocation:this.buildLocation,cause:u.cause,abortController:u.abortController,preload:!!u.preload,matches:a};u.__routeContext=f.options.context(y)??void 0}u.context={...m,...u.__routeContext,...u.__beforeLoadContext}}}),a}}class Ft extends Error{}class Ss extends Error{}function _s(t){return{loadedAt:0,isLoading:!1,isTransitioning:!1,status:"idle",resolvedLocation:void 0,location:t,matches:[],pendingMatches:[],cachedMatches:[],statusCode:200}}function te(t,o){if(t==null)return{};if("~standard"in t){const e=t["~standard"].validate(o);if(e instanceof Promise)throw new Ft("Async validation not supported");if(e.issues)throw new Ft(JSON.stringify(e.issues,void 0,2),{cause:e});return e.value}return"parse"in t?t.parse(o):typeof t=="function"?t(o):{}}function Rs({pathname:t,routePathname:o,caseSensitive:e,routesByPath:s,routesById:n,flatRoutes:r,parseCache:i}){let c={};const a=J(t),l=d=>Zt(a,{to:d.fullPath,caseSensitive:d.options?.caseSensitive??e,fuzzy:!0},i);let u=o!==void 0?s[o]:void 0;if(u)c=l(u);else{let d;for(const p of r){const m=l(p);if(m)if(p.path!=="/"&&m["**"])d||(d={foundRoute:p,routeParams:m});else{u=p,c=m;break}}!u&&d&&(u=d.foundRoute,c=d.routeParams)}let h=u||n[A];const f=[h];for(;h.parentRoute;)h=h.parentRoute,f.push(h);return f.reverse(),{matchedRoutes:f,routeParams:c,foundRoute:u}}function Ps({search:t,dest:o,destRoutes:e,_includeValidateSearch:s}){const n=e.reduce((c,a)=>{const l=[];if("search"in a.options)a.options.search?.middlewares&&l.push(...a.options.search.middlewares);else if(a.options.preSearchFilters||a.options.postSearchFilters){const u=({search:h,next:f})=>{let d=h;"preSearchFilters"in a.options&&a.options.preSearchFilters&&(d=a.options.preSearchFilters.reduce((m,y)=>y(m),h));const p=f(d);return"postSearchFilters"in a.options&&a.options.postSearchFilters?a.options.postSearchFilters.reduce((m,y)=>y(m),p):p};l.push(u)}if(s&&a.options.validateSearch){const u=({search:h,next:f})=>{const d=f(h);try{return{...d,...te(a.options.validateSearch,d)??void 0}}catch{return d}};l.push(u)}return c.concat(l)},[])??[],r=({search:c})=>o.search?o.search===!0?c:Q(o.search,c):{};n.push(r);const i=(c,a)=>{if(c>=n.length)return a;const l=n[c];return l({search:a,next:h=>i(c+1,h)})};return i(0,t)}const ws="Error preloading route! ☝️";class Qe{constructor(o){if(this.init=e=>{this.originalIndex=e.originalIndex;const s=this.options,n=!s?.path&&!s?.id;this.parentRoute=this.options.getParentRoute?.(),n?this._path=A:this.parentRoute||K(!1);let r=n?A:s?.path;r&&r!=="/"&&(r=re(r));const i=s?.id||r;let c=n?A:z([this.parentRoute.id===A?"":this.parentRoute.id,i]);r===A&&(r="/"),c!==A&&(c=z(["/",c]));const a=c===A?"/":z([this.parentRoute.fullPath,r]);this._path=r,this._id=c,this._fullPath=a,this._to=a},this.addChildren=e=>this._addFileChildren(e),this._addFileChildren=e=>(Array.isArray(e)&&(this.children=e),typeof e=="object"&&e!==null&&(this.children=Object.values(e)),this),this._addFileTypes=()=>this,this.updateLoader=e=>(Object.assign(this.options,e),this),this.update=e=>(Object.assign(this.options,e),this),this.lazy=e=>(this.lazyFn=e,this),this.options=o||{},this.isRoot=!o?.getParentRoute,o?.id&&o?.path)throw new Error("Route cannot have both an 'id' and a 'path' option.")}get to(){return this._to}get id(){return this._id}get path(){return this._path}get fullPath(){return this._fullPath}}class xs extends Qe{constructor(o){super(o)}}function ie(t){const o=t.errorComponent??Bt;return g.jsx(Ls,{getResetKey:t.getResetKey,onCatch:t.onCatch,children:({error:e,reset:s})=>e?R.createElement(o,{error:e,reset:s}):t.children})}class Ls extends R.Component{constructor(){super(...arguments),this.state={error:null}}static getDerivedStateFromProps(o){return{resetKey:o.getResetKey()}}static getDerivedStateFromError(o){return{error:o}}reset(){this.setState({error:null})}componentDidUpdate(o,e){e.error&&e.resetKey!==this.state.resetKey&&this.reset()}componentDidCatch(o,e){this.props.onCatch&&this.props.onCatch(o,e)}render(){return this.props.children({error:this.state.resetKey!==this.props.getResetKey()?null:this.state.error,reset:()=>{this.reset()}})}}function Bt({error:t}){const[o,e]=R.useState(!1);return g.jsxs("div",{style:{padding:".5rem",maxWidth:"100%"},children:[g.jsxs("div",{style:{display:"flex",alignItems:"center",gap:".5rem"},children:[g.jsx("strong",{style:{fontSize:"1rem"},children:"Something went wrong!"}),g.jsx("button",{style:{appearance:"none",fontSize:".6em",border:"1px solid currentColor",padding:".1rem .2rem",fontWeight:"bold",borderRadius:".25rem"},onClick:()=>e(s=>!s),children:o?"Hide Error":"Show Error"})]}),g.jsx("div",{style:{height:".25rem"}}),o?g.jsx("div",{children:g.jsx("pre",{style:{fontSize:".7em",border:"1px solid red",borderRadius:".25rem",padding:".3rem",color:"red",overflow:"auto"},children:t.message?g.jsx("code",{children:t.message}):null})}):null]})}function Cs({children:t,fallback:o=null}){return Ms()?g.jsx(rt.Fragment,{children:t}):g.jsx(rt.Fragment,{children:o})}function Ms(){return rt.useSyncExternalStore(bs,()=>!0,()=>!1)}function bs(){return()=>{}}var Wt={exports:{}},zt={},Kt={exports:{}},Ht={};var Ie;function Es(){if(Ie)return Ht;Ie=1;var t=ee();function o(h,f){return h===f&&(h!==0||1/h===1/f)||h!==h&&f!==f}var e=typeof Object.is=="function"?Object.is:o,s=t.useState,n=t.useEffect,r=t.useLayoutEffect,i=t.useDebugValue;function c(h,f){var d=f(),p=s({inst:{value:d,getSnapshot:f}}),m=p[0].inst,y=p[1];return r(function(){m.value=d,m.getSnapshot=f,a(m)&&y({inst:m})},[h,d,f]),n(function(){return a(m)&&y({inst:m}),h(function(){a(m)&&y({inst:m})})},[h]),i(d),d}function a(h){var f=h.getSnapshot;h=h.value;try{var d=f();return!e(h,d)}catch{return!0}}function l(h,f){return f()}var u=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?l:c;return Ht.useSyncExternalStore=t.useSyncExternalStore!==void 0?t.useSyncExternalStore:u,Ht}var ke;function Ts(){return ke||(ke=1,Kt.exports=Es()),Kt.exports}var Oe;function Is(){if(Oe)return zt;Oe=1;var t=ee(),o=Ts();function e(l,u){return l===u&&(l!==0||1/l===1/u)||l!==l&&u!==u}var s=typeof Object.is=="function"?Object.is:e,n=o.useSyncExternalStore,r=t.useRef,i=t.useEffect,c=t.useMemo,a=t.useDebugValue;return zt.useSyncExternalStoreWithSelector=function(l,u,h,f,d){var p=r(null);if(p.current===null){var m={hasValue:!1,value:null};p.current=m}else m=p.current;p=c(function(){function _(w){if(!x){if(x=!0,P=w,w=f(w),d!==void 0&&m.hasValue){var S=m.value;if(d(S,w))return L=S}return L=w}if(S=L,s(P,w))return S;var v=f(w);return d!==void 0&&d(S,v)?(P=w,S):(P=w,L=v)}var x=!1,P,L,E=h===void 0?null:h;return[function(){return _(u())},E===null?void 0:function(){return _(E())}]},[u,h,f,d]);var y=n(l,p[0],p[1]);return i(function(){m.hasValue=!0,m.value=y},[y]),a(y),y},zt}var Fe;function ks(){return Fe||(Fe=1,Wt.exports=Is()),Wt.exports}var to=ks();const fn=oe(to);function Os(t,o=s=>s,e={}){const s=e.equal??Fs;return to.useSyncExternalStoreWithSelector(t.subscribe,()=>t.state,()=>t.state,o,s)}function Fs(t,o){if(Object.is(t,o))return!0;if(typeof t!="object"||t===null||typeof o!="object"||o===null)return!1;if(t instanceof Map&&o instanceof Map){if(t.size!==o.size)return!1;for(const[s,n]of t)if(!o.has(s)||!Object.is(n,o.get(s)))return!1;return!0}if(t instanceof Set&&o instanceof Set){if(t.size!==o.size)return!1;for(const s of t)if(!o.has(s))return!1;return!0}if(t instanceof Date&&o instanceof Date)return t.getTime()===o.getTime();const e=Ae(t);if(e.length!==Ae(o).length)return!1;for(let s=0;s"u"?Gt:window.__TSR_ROUTER_CONTEXT__?window.__TSR_ROUTER_CONTEXT__:(window.__TSR_ROUTER_CONTEXT__=Gt,Gt)}function F(t){const o=R.useContext(eo());return t?.warn,o}function O(t){const o=F({warn:t?.router===void 0}),e=t?.router||o,s=R.useRef(void 0);return Os(e.__store,n=>{if(t?.select){if(t.structuralSharing??e.options.defaultStructuralSharing){const r=B(s.current,t.select(n));return s.current=r,r}return t.select(n)}return n})}const Dt=R.createContext(void 0),As=R.createContext(void 0);function V(t){const o=R.useContext(t.from?As:Dt);return O({select:s=>{const n=s.matches.find(r=>t.from?t.from===r.routeId:r.id===o);if(K(!((t.shouldThrow??!0)&&!n),`Could not find ${t.from?`an active match from "${t.from}"`:"a nearest match!"}`),n!==void 0)return t.select?t.select(n):n},structuralSharing:t.structuralSharing})}function ae(t){return V({from:t.from,strict:t.strict,structuralSharing:t.structuralSharing,select:o=>t.select?t.select(o.loaderData):o.loaderData})}function ce(t){const{select:o,...e}=t;return V({...e,select:s=>o?o(s.loaderDeps):s.loaderDeps})}function ue(t){return V({from:t.from,shouldThrow:t.shouldThrow,structuralSharing:t.structuralSharing,strict:t.strict,select:o=>{const e=t.strict===!1?o.params:o._strictParams;return t.select?t.select(e):e}})}function le(t){return V({from:t.from,strict:t.strict,shouldThrow:t.shouldThrow,structuralSharing:t.structuralSharing,select:o=>t.select?t.select(o.search):o.search})}function he(t){const o=F();return R.useCallback(e=>o.navigate({...e,from:e.from??t?.from}),[t?.from,o])}var oo=mo();const dn=oe(oo),Lt=typeof window<"u"?R.useLayoutEffect:R.useEffect;function qt(t){const o=R.useRef({value:t,prev:null}),e=o.current.value;return t!==e&&(o.current={value:t,prev:e}),o.current.prev}function Bs(t,o,e={},s={}){R.useEffect(()=>{if(!t.current||s.disabled||typeof IntersectionObserver!="function")return;const n=new IntersectionObserver(([r])=>{o(r)},e);return n.observe(t.current),()=>{n.disconnect()}},[o,e,s.disabled,t])}function Ds(t){const o=R.useRef(null);return R.useImperativeHandle(t,()=>o.current,[]),o}function $s(t,o){const e=F(),[s,n]=R.useState(!1),r=R.useRef(!1),i=Ds(o),{activeProps:c,inactiveProps:a,activeOptions:l,to:u,preload:h,preloadDelay:f,hashScrollIntoView:d,replace:p,startTransition:m,resetScroll:y,viewTransition:_,children:x,target:P,disabled:L,style:E,className:w,onClick:S,onFocus:v,onMouseEnter:C,onMouseLeave:M,onTouchStart:T,ignoreBlocker:I,params:Y,search:D,hash:X,state:fe,mask:io,reloadDocument:rn,unsafeRelative:an,from:cn,_fromLocation:un,...de}=t,ao=O({select:b=>b.location.search,structuralSharing:!0}),pe=t.from,lt=R.useMemo(()=>({...t,from:pe}),[e,ao,pe,t._fromLocation,t.hash,t.to,t.search,t.params,t.state,t.mask,t.unsafeRelative]),W=R.useMemo(()=>e.buildLocation({...lt}),[e,lt]),vt=R.useMemo(()=>{if(L)return;let b=W.maskedLocation?W.maskedLocation.url:W.url,k=!1;return e.origin&&(b.startsWith(e.origin)?b=e.history.createHref(b.replace(e.origin,""))||"/":k=!0),{href:b,external:k}},[L,W.maskedLocation,W.url,e.origin,e.history]),St=R.useMemo(()=>{if(vt?.external)return vt.href;try{return new URL(u),u}catch{}},[u,vt]),st=t.reloadDocument||St?!1:h??e.options.defaultPreload,$t=f??e.options.defaultPreloadDelay??0,jt=O({select:b=>{if(St)return!1;if(l?.exact){if(!bo(b.location.pathname,W.pathname,e.basepath))return!1}else{const k=It(b.location.pathname,e.basepath),$=It(W.pathname,e.basepath);if(!(k.startsWith($)&&(k.length===$.length||k[$.length]==="/")))return!1}return(l?.includeSearch??!0)&&!tt(b.location.search,W.search,{partial:!l?.exact,ignoreUndefined:!l?.explicitUndefined})?!1:l?.includeHash?b.location.hash===W.hash:!0}}),Z=R.useCallback(()=>{e.preloadRoute({...lt}).catch(b=>{console.warn(b),console.warn(ws)})},[e,lt]),co=R.useCallback(b=>{b?.isIntersecting&&Z()},[Z]);Bs(i,co,Ws,{disabled:!!L||st!=="viewport"}),R.useEffect(()=>{r.current||!L&&st==="render"&&(Z(),r.current=!0)},[L,Z,st]);const uo=b=>{const k=b.currentTarget.getAttribute("target"),$=P!==void 0?P:k;if(!L&&!zs(b)&&!b.defaultPrevented&&(!$||$==="_self")&&b.button===0){b.preventDefault(),oo.flushSync(()=>{n(!0)});const ve=e.subscribe("onResolved",()=>{ve(),n(!1)});e.navigate({...lt,replace:p,resetScroll:y,hashScrollIntoView:d,startTransition:m,viewTransition:_,ignoreBlocker:I})}};if(St)return{...de,ref:i,href:St,...x&&{children:x},...P&&{target:P},...L&&{disabled:L},...E&&{style:E},...w&&{className:w},...S&&{onClick:S},...v&&{onFocus:v},...C&&{onMouseEnter:C},...M&&{onMouseLeave:M},...T&&{onTouchStart:T}};const me=b=>{L||st&&Z()},lo=me,ho=b=>{if(!(L||!st))if(!$t)Z();else{const k=b.target;if(ft.has(k))return;const $=setTimeout(()=>{ft.delete(k),Z()},$t);ft.set(k,$)}},fo=b=>{if(L||!st||!$t)return;const k=b.target,$=ft.get(k);$&&(clearTimeout($),ft.delete(k))},_t=jt?Q(c,{})??js:Jt,Rt=jt?Jt:Q(a,{})??Jt,ge=[w,_t.className,Rt.className].filter(Boolean).join(" "),ye=(E||_t.style||Rt.style)&&{...E,..._t.style,...Rt.style};return{...de,..._t,...Rt,href:vt?.href,ref:i,onClick:dt([S,uo]),onFocus:dt([v,me]),onMouseEnter:dt([C,ho]),onMouseLeave:dt([M,fo]),onTouchStart:dt([T,lo]),disabled:!!L,target:P,...ye&&{style:ye},...ge&&{className:ge},...L&&Ns,...jt&&Us,...s&&Vs}}const Jt={},js={className:"active"},Ns={role:"link","aria-disabled":!0},Us={"data-status":"active","aria-current":"page"},Vs={"data-transitioning":"transitioning"},ft=new WeakMap,Ws={rootMargin:"100px"},dt=t=>o=>{for(const e of t)if(e){if(o.defaultPrevented)return;e(o)}},so=R.forwardRef((t,o)=>{const{_asChild:e,...s}=t,{type:n,ref:r,...i}=$s(s,o),c=typeof s.children=="function"?s.children({isActive:i["data-status"]==="active"}):s.children;return e===void 0&&delete i.disabled,R.createElement(e||"a",{...i,ref:r},c)});function zs(t){return!!(t.metaKey||t.altKey||t.ctrlKey||t.shiftKey)}class Ks extends Qe{constructor(o){super(o),this.useMatch=e=>V({select:e?.select,from:this.id,structuralSharing:e?.structuralSharing}),this.useRouteContext=e=>V({...e,from:this.id,select:s=>e?.select?e.select(s.context):s.context}),this.useSearch=e=>le({select:e?.select,structuralSharing:e?.structuralSharing,from:this.id}),this.useParams=e=>ue({select:e?.select,structuralSharing:e?.structuralSharing,from:this.id}),this.useLoaderDeps=e=>ce({...e,from:this.id}),this.useLoaderData=e=>ae({...e,from:this.id}),this.useNavigate=()=>he({from:this.fullPath}),this.Link=rt.forwardRef((e,s)=>g.jsx(so,{ref:s,from:this.fullPath,...e})),this.$$typeof=Symbol.for("react.memo")}}function Hs(t){return new Ks(t)}class Gs extends xs{constructor(o){super(o),this.useMatch=e=>V({select:e?.select,from:this.id,structuralSharing:e?.structuralSharing}),this.useRouteContext=e=>V({...e,from:this.id,select:s=>e?.select?e.select(s.context):s.context}),this.useSearch=e=>le({select:e?.select,structuralSharing:e?.structuralSharing,from:this.id}),this.useParams=e=>ue({select:e?.select,structuralSharing:e?.structuralSharing,from:this.id}),this.useLoaderDeps=e=>ce({...e,from:this.id}),this.useLoaderData=e=>ae({...e,from:this.id}),this.useNavigate=()=>he({from:this.fullPath}),this.Link=rt.forwardRef((e,s)=>g.jsx(so,{ref:s,from:this.fullPath,...e})),this.$$typeof=Symbol.for("react.memo")}}function pn(t){return new Gs(t)}function Be(t){return typeof t=="object"?new De(t,{silent:!0}).createRoute(t):new De(t,{silent:!0}).createRoute}class De{constructor(o,e){this.path=o,this.createRoute=s=>{this.silent;const n=Hs(s);return n.isRoot=!1,n},this.silent=e?.silent}}class $e{constructor(o){this.useMatch=e=>V({select:e?.select,from:this.options.id,structuralSharing:e?.structuralSharing}),this.useRouteContext=e=>V({from:this.options.id,select:s=>e?.select?e.select(s.context):s.context}),this.useSearch=e=>le({select:e?.select,structuralSharing:e?.structuralSharing,from:this.options.id}),this.useParams=e=>ue({select:e?.select,structuralSharing:e?.structuralSharing,from:this.options.id}),this.useLoaderDeps=e=>ce({...e,from:this.options.id}),this.useLoaderData=e=>ae({...e,from:this.options.id}),this.useNavigate=()=>{const e=F();return he({from:e.routesById[this.options.id].fullPath})},this.options=o,this.$$typeof=Symbol.for("react.memo")}}function je(t){return typeof t=="object"?new $e(t):o=>new $e({id:t,...o})}function qs(){const t=F(),o=R.useRef({router:t,mounted:!1}),[e,s]=R.useState(!1),{hasPendingMatches:n,isLoading:r}=O({select:h=>({isLoading:h.isLoading,hasPendingMatches:h.matches.some(f=>f.status==="pending")}),structuralSharing:!0}),i=qt(r),c=r||e||n,a=qt(c),l=r||n,u=qt(l);return t.startTransition=h=>{s(!0),R.startTransition(()=>{h(),s(!1)})},R.useEffect(()=>{const h=t.history.subscribe(t.load),f=t.buildLocation({to:t.latestLocation.pathname,search:!0,params:!0,hash:!0,state:!0,_includeValidateSearch:!0});return J(t.latestLocation.href)!==J(f.href)&&t.commitLocation({...f,replace:!0}),()=>{h()}},[t,t.history]),Lt(()=>{if(typeof window<"u"&&t.ssr||o.current.router===t&&o.current.mounted)return;o.current={router:t,mounted:!0},(async()=>{try{await t.load()}catch(f){console.error(f)}})()},[t]),Lt(()=>{i&&!r&&t.emit({type:"onLoad",...et(t.state)})},[i,t,r]),Lt(()=>{u&&!l&&t.emit({type:"onBeforeRouteMount",...et(t.state)})},[l,u,t]),Lt(()=>{a&&!c&&(t.emit({type:"onResolved",...et(t.state)}),t.__store.setState(h=>({...h,status:"idle",resolvedLocation:h.location})),os(t))},[c,a,t]),null}function Js(t){const o=O({select:e=>`not-found-${e.location.pathname}-${e.status}`});return g.jsx(ie,{getResetKey:()=>o,onCatch:(e,s)=>{if(j(e))t.onCatch?.(e,s);else throw e},errorComponent:({error:e})=>{if(j(e))return t.fallback?.(e);throw e},children:t.children})}function Ys(){return g.jsx("p",{children:"Not Found"})}function nt(t){return g.jsx(g.Fragment,{children:t.children})}function no(t,o,e){return o.options.notFoundComponent?g.jsx(o.options.notFoundComponent,{data:e}):t.options.defaultNotFoundComponent?g.jsx(t.options.defaultNotFoundComponent,{data:e}):g.jsx(Ys,{})}function Xs({children:t}){const o=F();return o.isServer?g.jsx("script",{nonce:o.options.ssr?.nonce,className:"$tsr",dangerouslySetInnerHTML:{__html:[t].filter(Boolean).join(` -`)+";$_TSR.c()"}}):null}function Zs(){const t=F();if(!t.isScrollRestoring||!t.isServer||typeof t.options.scrollRestoration=="function"&&!t.options.scrollRestoration({location:t.latestLocation}))return null;const e=(t.options.getScrollRestorationKey||Qt)(t.latestLocation),s=e!==Qt(t.latestLocation)?e:void 0,n={storageKey:kt,shouldScrollRestoration:!0};return s&&(n.key=s),g.jsx(Xs,{children:`(${We.toString()})(${JSON.stringify(n)})`})}const ro=R.memo(function({matchId:o}){const e=F(),s=O({select:_=>{const x=_.matches.find(P=>P.id===o);return K(x),{routeId:x.routeId,ssr:x.ssr,_displayPending:x._displayPending}},structuralSharing:!0}),n=e.routesById[s.routeId],r=n.options.pendingComponent??e.options.defaultPendingComponent,i=r?g.jsx(r,{}):null,c=n.options.errorComponent??e.options.defaultErrorComponent,a=n.options.onCatch??e.options.defaultOnCatch,l=n.isRoot?n.options.notFoundComponent??e.options.notFoundRoute?.options.component:n.options.notFoundComponent,u=s.ssr===!1||s.ssr==="data-only",h=(!n.isRoot||n.options.wrapInSuspense||u)&&(n.options.wrapInSuspense??r??(n.options.errorComponent?.preload||u))?R.Suspense:nt,f=c?ie:nt,d=l?Js:nt,p=O({select:_=>_.loadedAt}),m=O({select:_=>{const x=_.matches.findIndex(P=>P.id===o);return _.matches[x-1]?.routeId}}),y=n.isRoot?n.options.shellComponent??nt:nt;return g.jsxs(y,{children:[g.jsx(Dt.Provider,{value:o,children:g.jsx(h,{fallback:i,children:g.jsx(f,{getResetKey:()=>p,errorComponent:c||Bt,onCatch:(_,x)=>{if(j(_))throw _;a?.(_,x)},children:g.jsx(d,{fallback:_=>{if(!l||_.routeId&&_.routeId!==s.routeId||!_.routeId&&!n.isRoot)throw _;return R.createElement(l,_)},children:u||s._displayPending?g.jsx(Cs,{fallback:i,children:g.jsx(Ne,{matchId:o})}):g.jsx(Ne,{matchId:o})})})})}),m===A&&e.options.scrollRestoration?g.jsxs(g.Fragment,{children:[g.jsx(Qs,{}),g.jsx(Zs,{})]}):null]})});function Qs(){const t=F(),o=R.useRef(void 0);return g.jsx("script",{suppressHydrationWarning:!0,ref:e=>{e&&(o.current===void 0||o.current.href!==t.latestLocation.href)&&(t.emit({type:"onRendered",...et(t.state)}),o.current=t.latestLocation)}},t.latestLocation.state.__TSR_key)}const Ne=R.memo(function({matchId:o}){const e=F(),{match:s,key:n,routeId:r}=O({select:a=>{const l=a.matches.find(p=>p.id===o),u=l.routeId,f=(e.routesById[u].options.remountDeps??e.options.defaultRemountDeps)?.({routeId:u,loaderDeps:l.loaderDeps,params:l._strictParams,search:l._strictSearch});return{key:f?JSON.stringify(f):void 0,routeId:u,match:{id:l.id,status:l.status,error:l.error,_forcePending:l._forcePending,_displayPending:l._displayPending}}},structuralSharing:!0}),i=e.routesById[r],c=R.useMemo(()=>{const a=i.options.component??e.options.defaultComponent;return a?g.jsx(a,{},n):g.jsx(tn,{})},[n,i.options.component,e.options.defaultComponent]);if(s._displayPending)throw e.getMatch(s.id)?._nonReactive.displayPendingPromise;if(s._forcePending)throw e.getMatch(s.id)?._nonReactive.minPendingPromise;if(s.status==="pending"){const a=i.options.pendingMinMs??e.options.defaultPendingMinMs;if(a){const l=e.getMatch(s.id);if(l&&!l._nonReactive.minPendingPromise&&!e.isServer){const u=it();l._nonReactive.minPendingPromise=u,setTimeout(()=>{u.resolve(),l._nonReactive.minPendingPromise=void 0},a)}}throw e.getMatch(s.id)?._nonReactive.loadPromise}if(s.status==="notFound")return K(j(s.error)),no(e,i,s.error);if(s.status==="redirected")throw K(N(s.error)),e.getMatch(s.id)?._nonReactive.loadPromise;if(s.status==="error"){if(e.isServer){const a=(i.options.errorComponent??e.options.defaultErrorComponent)||Bt;return g.jsx(a,{error:s.error,reset:void 0,info:{componentStack:""}})}throw s.error}return c}),tn=R.memo(function(){const o=F(),e=R.useContext(Dt),s=O({select:l=>l.matches.find(u=>u.id===e)?.routeId}),n=o.routesById[s],r=O({select:l=>{const h=l.matches.find(f=>f.id===e);return K(h),h.globalNotFound}}),i=O({select:l=>{const u=l.matches,h=u.findIndex(f=>f.id===e);return u[h+1]?.id}}),c=o.options.defaultPendingComponent?g.jsx(o.options.defaultPendingComponent,{}):null;if(r)return no(o,n,void 0);if(!i)return null;const a=g.jsx(ro,{matchId:i});return s===A?g.jsx(R.Suspense,{fallback:c,children:a}):a});function en(){const t=F(),e=t.routesById[A].options.pendingComponent??t.options.defaultPendingComponent,s=e?g.jsx(e,{}):null,n=t.isServer||typeof document<"u"&&t.ssr?nt:R.Suspense,r=g.jsxs(n,{fallback:s,children:[!t.isServer&&g.jsx(qs,{}),g.jsx(on,{})]});return t.options.InnerWrap?g.jsx(t.options.InnerWrap,{children:r}):r}function on(){const t=F(),o=O({select:n=>n.matches[0]?.id}),e=O({select:n=>n.loadedAt}),s=o?g.jsx(ro,{matchId:o}):null;return g.jsx(Dt.Provider,{value:o,children:t.options.disableGlobalCatchBoundary?s:g.jsx(ie,{getResetKey:()=>e,errorComponent:Bt,onCatch:n=>{n.message||n.toString()},children:s})})}function mn(){const t=F();return O({select:o=>[o.location.href,o.resolvedLocation?.href,o.status],structuralSharing:!0}),R.useCallback(o=>{const{pending:e,caseSensitive:s,fuzzy:n,includeSearch:r,...i}=o;return t.matchRoute(i,{pending:e,caseSensitive:s,fuzzy:n,includeSearch:r})},[t])}const gn=t=>new sn(t);class sn extends vs{constructor(o){super(o)}}typeof globalThis<"u"?(globalThis.createFileRoute=Be,globalThis.createLazyFileRoute=je):typeof window<"u"&&(window.createFileRoute=Be,window.createLazyFileRoute=je);function nn({router:t,children:o,...e}){Object.keys(e).length>0&&t.update({...t.options,...e,context:{...t.options.context,...e.context}});const s=eo(),n=g.jsx(s.Provider,{value:t,children:o});return t.options.Wrap?g.jsx(t.options.Wrap,{children:n}):n}function yn({router:t,...o}){return g.jsx(nn,{router:t,...o,children:g.jsx(en,{})})}export{so as L,tn as O,rt as R,hn as a,oo as b,dn as c,fn as d,Ts as e,mn as f,pn as g,Hs as h,K as i,g as j,gn as k,us as l,yn as m,R as r,he as u}; diff --git a/webui/dist/assets/ui-vendor-BgfqR_Xz.js b/webui/dist/assets/ui-vendor-BgfqR_Xz.js deleted file mode 100644 index 93e393f0..00000000 --- a/webui/dist/assets/ui-vendor-BgfqR_Xz.js +++ /dev/null @@ -1,45 +0,0 @@ -import{r as a,j as x,R as we,a as Vt,b as at,c as yr}from"./router-DQNkr8RI.js";function k(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),n===!1||!r.defaultPrevented)return t?.(r)}}function wr(e,t){const n=a.createContext(t),o=i=>{const{children:c,...s}=i,l=a.useMemo(()=>s,Object.values(s));return x.jsx(n.Provider,{value:l,children:c})};o.displayName=e+"Provider";function r(i){const c=a.useContext(n);if(c)return c;if(t!==void 0)return t;throw new Error(`\`${i}\` must be used within \`${e}\``)}return[o,r]}function Ve(e,t=[]){let n=[];function o(i,c){const s=a.createContext(c),l=n.length;n=[...n,c];const u=p=>{const{scope:h,children:m,...w}=p,f=h?.[e]?.[l]||s,g=a.useMemo(()=>w,Object.values(w));return x.jsx(f.Provider,{value:g,children:m})};u.displayName=i+"Provider";function d(p,h){const m=h?.[e]?.[l]||s,w=a.useContext(m);if(w)return w;if(c!==void 0)return c;throw new Error(`\`${p}\` must be used within \`${i}\``)}return[u,d]}const r=()=>{const i=n.map(c=>a.createContext(c));return function(s){const l=s?.[e]||i;return a.useMemo(()=>({[`__scope${e}`]:{...s,[e]:l}}),[s,l])}};return r.scopeName=e,[o,xr(r,...t)]}function xr(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const o=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(i){const c=o.reduce((s,{useScope:l,scopeName:u})=>{const p=l(i)[`__scope${u}`];return{...s,...p}},{});return a.useMemo(()=>({[`__scope${t.scopeName}`]:c}),[c])}};return n.scopeName=t.scopeName,n}function sn(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function _e(...e){return t=>{let n=!1;const o=e.map(r=>{const i=sn(r,t);return!n&&typeof i=="function"&&(n=!0),i});if(n)return()=>{for(let r=0;r{const{children:i,...c}=o,s=a.Children.toArray(i),l=s.find(Cr);if(l){const u=l.props.children,d=s.map(p=>p===l?a.Children.count(u)>1?a.Children.only(null):a.isValidElement(u)?u.props.children:null:p);return x.jsx(t,{...c,ref:r,children:a.isValidElement(u)?a.cloneElement(u,void 0,d):null})}return x.jsx(t,{...c,ref:r,children:i})});return n.displayName=`${e}.Slot`,n}function Sr(e){const t=a.forwardRef((n,o)=>{const{children:r,...i}=n;if(a.isValidElement(r)){const c=Rr(r),s=Er(i,r.props);return r.type!==a.Fragment&&(s.ref=o?_e(o,c):c),a.cloneElement(r,s)}return a.Children.count(r)>1?a.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var br=Symbol("radix.slottable");function Cr(e){return a.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===br}function Er(e,t){const n={...t};for(const o in t){const r=e[o],i=t[o];/^on[A-Z]/.test(o)?r&&i?n[o]=(...s)=>{const l=i(...s);return r(...s),l}:r&&(n[o]=r):o==="style"?n[o]={...r,...i}:o==="className"&&(n[o]=[r,i].filter(Boolean).join(" "))}return{...e,...n}}function Rr(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function Pr(e){const t=e+"CollectionProvider",[n,o]=Ve(t),[r,i]=n(t,{collectionRef:{current:null},itemMap:new Map}),c=f=>{const{scope:g,children:y}=f,v=we.useRef(null),S=we.useRef(new Map).current;return x.jsx(r,{scope:g,itemMap:S,collectionRef:v,children:y})};c.displayName=t;const s=e+"CollectionSlot",l=cn(s),u=we.forwardRef((f,g)=>{const{scope:y,children:v}=f,S=i(s,y),b=H(g,S.collectionRef);return x.jsx(l,{ref:b,children:v})});u.displayName=s;const d=e+"CollectionItemSlot",p="data-radix-collection-item",h=cn(d),m=we.forwardRef((f,g)=>{const{scope:y,children:v,...S}=f,b=we.useRef(null),C=H(g,b),R=i(d,y);return we.useEffect(()=>(R.itemMap.set(b,{ref:b,...S}),()=>void R.itemMap.delete(b))),x.jsx(h,{[p]:"",ref:C,children:v})});m.displayName=d;function w(f){const g=i(e+"CollectionConsumer",f);return we.useCallback(()=>{const v=g.collectionRef.current;if(!v)return[];const S=Array.from(v.querySelectorAll(`[${p}]`));return Array.from(g.itemMap.values()).sort((R,E)=>S.indexOf(R.ref.current)-S.indexOf(E.ref.current))},[g.collectionRef,g.itemMap])}return[{Provider:c,Slot:u,ItemSlot:m},w,o]}var K=globalThis?.document?a.useLayoutEffect:()=>{},Ar=Vt[" useId ".trim().toString()]||(()=>{}),Or=0;function Te(e){const[t,n]=a.useState(Ar());return K(()=>{n(o=>o??String(Or++))},[e]),t?`radix-${t}`:""}function Tr(e){const t=Nr(e),n=a.forwardRef((o,r)=>{const{children:i,...c}=o,s=a.Children.toArray(i),l=s.find(Dr);if(l){const u=l.props.children,d=s.map(p=>p===l?a.Children.count(u)>1?a.Children.only(null):a.isValidElement(u)?u.props.children:null:p);return x.jsx(t,{...c,ref:r,children:a.isValidElement(u)?a.cloneElement(u,void 0,d):null})}return x.jsx(t,{...c,ref:r,children:i})});return n.displayName=`${e}.Slot`,n}function Nr(e){const t=a.forwardRef((n,o)=>{const{children:r,...i}=n;if(a.isValidElement(r)){const c=Mr(r),s=_r(i,r.props);return r.type!==a.Fragment&&(s.ref=o?_e(o,c):c),a.cloneElement(r,s)}return a.Children.count(r)>1?a.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Ir=Symbol("radix.slottable");function Dr(e){return a.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Ir}function _r(e,t){const n={...t};for(const o in t){const r=e[o],i=t[o];/^on[A-Z]/.test(o)?r&&i?n[o]=(...s)=>{const l=i(...s);return r(...s),l}:r&&(n[o]=r):o==="style"?n[o]={...r,...i}:o==="className"&&(n[o]=[r,i].filter(Boolean).join(" "))}return{...e,...n}}function Mr(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Lr=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],M=Lr.reduce((e,t)=>{const n=Tr(`Primitive.${t}`),o=a.forwardRef((r,i)=>{const{asChild:c,...s}=r,l=c?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),x.jsx(l,{...s,ref:i})});return o.displayName=`Primitive.${t}`,{...e,[t]:o}},{});function kr(e,t){e&&at.flushSync(()=>e.dispatchEvent(t))}function xe(e){const t=a.useRef(e);return a.useEffect(()=>{t.current=e}),a.useMemo(()=>(...n)=>t.current?.(...n),[])}var jr=Vt[" useInsertionEffect ".trim().toString()]||K;function et({prop:e,defaultProp:t,onChange:n=()=>{},caller:o}){const[r,i,c]=Fr({defaultProp:t,onChange:n}),s=e!==void 0,l=s?e:r;{const d=a.useRef(e!==void 0);a.useEffect(()=>{const p=d.current;p!==s&&console.warn(`${o} is changing from ${p?"controlled":"uncontrolled"} to ${s?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),d.current=s},[s,o])}const u=a.useCallback(d=>{if(s){const p=Wr(d)?d(e):d;p!==e&&c.current?.(p)}else i(d)},[s,e,i,c]);return[l,u]}function Fr({defaultProp:e,onChange:t}){const[n,o]=a.useState(e),r=a.useRef(n),i=a.useRef(t);return jr(()=>{i.current=t},[t]),a.useEffect(()=>{r.current!==n&&(i.current?.(n),r.current=n)},[n,r]),[n,o,i]}function Wr(e){return typeof e=="function"}var $r=a.createContext(void 0);function Br(e){const t=a.useContext($r);return e||t||"ltr"}function Vr(e,t){return a.useReducer((n,o)=>t[n][o]??n,e)}var He=e=>{const{present:t,children:n}=e,o=Hr(t),r=typeof n=="function"?n({present:o.isPresent}):a.Children.only(n),i=H(o.ref,Ur(r));return typeof n=="function"||o.isPresent?a.cloneElement(r,{ref:i}):null};He.displayName="Presence";function Hr(e){const[t,n]=a.useState(),o=a.useRef(null),r=a.useRef(e),i=a.useRef("none"),c=e?"mounted":"unmounted",[s,l]=Vr(c,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return a.useEffect(()=>{const u=ze(o.current);i.current=s==="mounted"?u:"none"},[s]),K(()=>{const u=o.current,d=r.current;if(d!==e){const h=i.current,m=ze(u);e?l("MOUNT"):m==="none"||u?.display==="none"?l("UNMOUNT"):l(d&&h!==m?"ANIMATION_OUT":"UNMOUNT"),r.current=e}},[e,l]),K(()=>{if(t){let u;const d=t.ownerDocument.defaultView??window,p=m=>{const f=ze(o.current).includes(CSS.escape(m.animationName));if(m.target===t&&f&&(l("ANIMATION_END"),!r.current)){const g=t.style.animationFillMode;t.style.animationFillMode="forwards",u=d.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=g)})}},h=m=>{m.target===t&&(i.current=ze(o.current))};return t.addEventListener("animationstart",h),t.addEventListener("animationcancel",p),t.addEventListener("animationend",p),()=>{d.clearTimeout(u),t.removeEventListener("animationstart",h),t.removeEventListener("animationcancel",p),t.removeEventListener("animationend",p)}}else l("ANIMATION_END")},[t,l]),{isPresent:["mounted","unmountSuspended"].includes(s),ref:a.useCallback(u=>{o.current=u?getComputedStyle(u):null,n(u)},[])}}function ze(e){return e?.animationName||"none"}function Ur(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function an(e,[t,n]){return Math.min(n,Math.max(t,e))}var zr=Symbol.for("react.lazy"),tt=Vt[" use ".trim().toString()];function Kr(e){return typeof e=="object"&&e!==null&&"then"in e}function Dn(e){return e!=null&&typeof e=="object"&&"$$typeof"in e&&e.$$typeof===zr&&"_payload"in e&&Kr(e._payload)}function _n(e){const t=Yr(e),n=a.forwardRef((o,r)=>{let{children:i,...c}=o;Dn(i)&&typeof tt=="function"&&(i=tt(i._payload));const s=a.Children.toArray(i),l=s.find(Gr);if(l){const u=l.props.children,d=s.map(p=>p===l?a.Children.count(u)>1?a.Children.only(null):a.isValidElement(u)?u.props.children:null:p);return x.jsx(t,{...c,ref:r,children:a.isValidElement(u)?a.cloneElement(u,void 0,d):null})}return x.jsx(t,{...c,ref:r,children:i})});return n.displayName=`${e}.Slot`,n}var wa=_n("Slot");function Yr(e){const t=a.forwardRef((n,o)=>{let{children:r,...i}=n;if(Dn(r)&&typeof tt=="function"&&(r=tt(r._payload)),a.isValidElement(r)){const c=Zr(r),s=qr(i,r.props);return r.type!==a.Fragment&&(s.ref=o?_e(o,c):c),a.cloneElement(r,s)}return a.Children.count(r)>1?a.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Xr=Symbol("radix.slottable");function Gr(e){return a.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Xr}function qr(e,t){const n={...t};for(const o in t){const r=e[o],i=t[o];/^on[A-Z]/.test(o)?r&&i?n[o]=(...s)=>{const l=i(...s);return r(...s),l}:r&&(n[o]=r):o==="style"?n[o]={...r,...i}:o==="className"&&(n[o]=[r,i].filter(Boolean).join(" "))}return{...e,...n}}function Zr(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}function Mn(e){const t=a.useRef({value:e,previous:e});return a.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}function Ln(e){const[t,n]=a.useState(void 0);return K(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const o=new ResizeObserver(r=>{if(!Array.isArray(r)||!r.length)return;const i=r[0];let c,s;if("borderBoxSize"in i){const l=i.borderBoxSize,u=Array.isArray(l)?l[0]:l;c=u.inlineSize,s=u.blockSize}else c=e.offsetWidth,s=e.offsetHeight;n({width:c,height:s})});return o.observe(e,{box:"border-box"}),()=>o.unobserve(e)}else n(void 0)},[e]),t}var Qr=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Jr=Qr.reduce((e,t)=>{const n=_n(`Primitive.${t}`),o=a.forwardRef((r,i)=>{const{asChild:c,...s}=r,l=c?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),x.jsx(l,{...s,ref:i})});return o.displayName=`Primitive.${t}`,{...e,[t]:o}},{}),ei="Label",kn=a.forwardRef((e,t)=>x.jsx(Jr.label,{...e,ref:t,onMouseDown:n=>{n.target.closest("button, input, select, textarea")||(e.onMouseDown?.(n),!n.defaultPrevented&&n.detail>1&&n.preventDefault())}}));kn.displayName=ei;var xa=kn;function ti(e,t=globalThis?.document){const n=xe(e);a.useEffect(()=>{const o=r=>{r.key==="Escape"&&n(r)};return t.addEventListener("keydown",o,{capture:!0}),()=>t.removeEventListener("keydown",o,{capture:!0})},[n,t])}var ni="DismissableLayer",Dt="dismissableLayer.update",oi="dismissableLayer.pointerDownOutside",ri="dismissableLayer.focusOutside",ln,jn=a.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),lt=a.forwardRef((e,t)=>{const{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:o,onPointerDownOutside:r,onFocusOutside:i,onInteractOutside:c,onDismiss:s,...l}=e,u=a.useContext(jn),[d,p]=a.useState(null),h=d?.ownerDocument??globalThis?.document,[,m]=a.useState({}),w=H(t,E=>p(E)),f=Array.from(u.layers),[g]=[...u.layersWithOutsidePointerEventsDisabled].slice(-1),y=f.indexOf(g),v=d?f.indexOf(d):-1,S=u.layersWithOutsidePointerEventsDisabled.size>0,b=v>=y,C=si(E=>{const O=E.target,_=[...u.branches].some(I=>I.contains(O));!b||_||(r?.(E),c?.(E),E.defaultPrevented||s?.())},h),R=ci(E=>{const O=E.target;[...u.branches].some(I=>I.contains(O))||(i?.(E),c?.(E),E.defaultPrevented||s?.())},h);return ti(E=>{v===u.layers.size-1&&(o?.(E),!E.defaultPrevented&&s&&(E.preventDefault(),s()))},h),a.useEffect(()=>{if(d)return n&&(u.layersWithOutsidePointerEventsDisabled.size===0&&(ln=h.body.style.pointerEvents,h.body.style.pointerEvents="none"),u.layersWithOutsidePointerEventsDisabled.add(d)),u.layers.add(d),un(),()=>{n&&u.layersWithOutsidePointerEventsDisabled.size===1&&(h.body.style.pointerEvents=ln)}},[d,h,n,u]),a.useEffect(()=>()=>{d&&(u.layers.delete(d),u.layersWithOutsidePointerEventsDisabled.delete(d),un())},[d,u]),a.useEffect(()=>{const E=()=>m({});return document.addEventListener(Dt,E),()=>document.removeEventListener(Dt,E)},[]),x.jsx(M.div,{...l,ref:w,style:{pointerEvents:S?b?"auto":"none":void 0,...e.style},onFocusCapture:k(e.onFocusCapture,R.onFocusCapture),onBlurCapture:k(e.onBlurCapture,R.onBlurCapture),onPointerDownCapture:k(e.onPointerDownCapture,C.onPointerDownCapture)})});lt.displayName=ni;var ii="DismissableLayerBranch",Fn=a.forwardRef((e,t)=>{const n=a.useContext(jn),o=a.useRef(null),r=H(t,o);return a.useEffect(()=>{const i=o.current;if(i)return n.branches.add(i),()=>{n.branches.delete(i)}},[n.branches]),x.jsx(M.div,{...e,ref:r})});Fn.displayName=ii;function si(e,t=globalThis?.document){const n=xe(e),o=a.useRef(!1),r=a.useRef(()=>{});return a.useEffect(()=>{const i=s=>{if(s.target&&!o.current){let l=function(){Wn(oi,n,u,{discrete:!0})};const u={originalEvent:s};s.pointerType==="touch"?(t.removeEventListener("click",r.current),r.current=l,t.addEventListener("click",r.current,{once:!0})):l()}else t.removeEventListener("click",r.current);o.current=!1},c=window.setTimeout(()=>{t.addEventListener("pointerdown",i)},0);return()=>{window.clearTimeout(c),t.removeEventListener("pointerdown",i),t.removeEventListener("click",r.current)}},[t,n]),{onPointerDownCapture:()=>o.current=!0}}function ci(e,t=globalThis?.document){const n=xe(e),o=a.useRef(!1);return a.useEffect(()=>{const r=i=>{i.target&&!o.current&&Wn(ri,n,{originalEvent:i},{discrete:!1})};return t.addEventListener("focusin",r),()=>t.removeEventListener("focusin",r)},[t,n]),{onFocusCapture:()=>o.current=!0,onBlurCapture:()=>o.current=!1}}function un(){const e=new CustomEvent(Dt);document.dispatchEvent(e)}function Wn(e,t,n,{discrete:o}){const r=n.originalEvent.target,i=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&r.addEventListener(e,t,{once:!0}),o?kr(r,i):r.dispatchEvent(i)}var Sa=lt,ba=Fn,Ct="focusScope.autoFocusOnMount",Et="focusScope.autoFocusOnUnmount",fn={bubbles:!1,cancelable:!0},ai="FocusScope",Ht=a.forwardRef((e,t)=>{const{loop:n=!1,trapped:o=!1,onMountAutoFocus:r,onUnmountAutoFocus:i,...c}=e,[s,l]=a.useState(null),u=xe(r),d=xe(i),p=a.useRef(null),h=H(t,f=>l(f)),m=a.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;a.useEffect(()=>{if(o){let f=function(S){if(m.paused||!s)return;const b=S.target;s.contains(b)?p.current=b:ue(p.current,{select:!0})},g=function(S){if(m.paused||!s)return;const b=S.relatedTarget;b!==null&&(s.contains(b)||ue(p.current,{select:!0}))},y=function(S){if(document.activeElement===document.body)for(const C of S)C.removedNodes.length>0&&ue(s)};document.addEventListener("focusin",f),document.addEventListener("focusout",g);const v=new MutationObserver(y);return s&&v.observe(s,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",f),document.removeEventListener("focusout",g),v.disconnect()}}},[o,s,m.paused]),a.useEffect(()=>{if(s){pn.add(m);const f=document.activeElement;if(!s.contains(f)){const y=new CustomEvent(Ct,fn);s.addEventListener(Ct,u),s.dispatchEvent(y),y.defaultPrevented||(li(mi($n(s)),{select:!0}),document.activeElement===f&&ue(s))}return()=>{s.removeEventListener(Ct,u),setTimeout(()=>{const y=new CustomEvent(Et,fn);s.addEventListener(Et,d),s.dispatchEvent(y),y.defaultPrevented||ue(f??document.body,{select:!0}),s.removeEventListener(Et,d),pn.remove(m)},0)}}},[s,u,d,m]);const w=a.useCallback(f=>{if(!n&&!o||m.paused)return;const g=f.key==="Tab"&&!f.altKey&&!f.ctrlKey&&!f.metaKey,y=document.activeElement;if(g&&y){const v=f.currentTarget,[S,b]=ui(v);S&&b?!f.shiftKey&&y===b?(f.preventDefault(),n&&ue(S,{select:!0})):f.shiftKey&&y===S&&(f.preventDefault(),n&&ue(b,{select:!0})):y===v&&f.preventDefault()}},[n,o,m.paused]);return x.jsx(M.div,{tabIndex:-1,...c,ref:h,onKeyDown:w})});Ht.displayName=ai;function li(e,{select:t=!1}={}){const n=document.activeElement;for(const o of e)if(ue(o,{select:t}),document.activeElement!==n)return}function ui(e){const t=$n(e),n=dn(t,e),o=dn(t.reverse(),e);return[n,o]}function $n(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>{const r=o.tagName==="INPUT"&&o.type==="hidden";return o.disabled||o.hidden||r?NodeFilter.FILTER_SKIP:o.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function dn(e,t){for(const n of e)if(!fi(n,{upTo:t}))return n}function fi(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function di(e){return e instanceof HTMLInputElement&&"select"in e}function ue(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&di(e)&&t&&e.select()}}var pn=pi();function pi(){let e=[];return{add(t){const n=e[0];t!==n&&n?.pause(),e=mn(e,t),e.unshift(t)},remove(t){e=mn(e,t),e[0]?.resume()}}}function mn(e,t){const n=[...e],o=n.indexOf(t);return o!==-1&&n.splice(o,1),n}function mi(e){return e.filter(t=>t.tagName!=="A")}var hi="Portal",Ut=a.forwardRef((e,t)=>{const{container:n,...o}=e,[r,i]=a.useState(!1);K(()=>i(!0),[]);const c=n||r&&globalThis?.document?.body;return c?yr.createPortal(x.jsx(M.div,{...o,ref:t}),c):null});Ut.displayName=hi;var Rt=0;function Bn(){a.useEffect(()=>{const e=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",e[0]??hn()),document.body.insertAdjacentElement("beforeend",e[1]??hn()),Rt++,()=>{Rt===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(t=>t.remove()),Rt--}},[])}function hn(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}var ne=function(){return ne=Object.assign||function(t){for(var n,o=1,r=arguments.length;o"u")return Di;var t=_i(e),n=document.documentElement.clientWidth,o=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,o-n+t[2]-t[0])}},Li=zn(),Ne="data-scroll-locked",ki=function(e,t,n,o){var r=e.left,i=e.top,c=e.right,s=e.gap;return n===void 0&&(n="margin"),` - .`.concat(vi,` { - overflow: hidden `).concat(o,`; - padding-right: `).concat(s,"px ").concat(o,`; - } - body[`).concat(Ne,`] { - overflow: hidden `).concat(o,`; - overscroll-behavior: contain; - `).concat([t&&"position: relative ".concat(o,";"),n==="margin"&&` - padding-left: `.concat(r,`px; - padding-top: `).concat(i,`px; - padding-right: `).concat(c,`px; - margin-left:0; - margin-top:0; - margin-right: `).concat(s,"px ").concat(o,`; - `),n==="padding"&&"padding-right: ".concat(s,"px ").concat(o,";")].filter(Boolean).join(""),` - } - - .`).concat(Ze,` { - right: `).concat(s,"px ").concat(o,`; - } - - .`).concat(Qe,` { - margin-right: `).concat(s,"px ").concat(o,`; - } - - .`).concat(Ze," .").concat(Ze,` { - right: 0 `).concat(o,`; - } - - .`).concat(Qe," .").concat(Qe,` { - margin-right: 0 `).concat(o,`; - } - - body[`).concat(Ne,`] { - `).concat(yi,": ").concat(s,`px; - } -`)},vn=function(){var e=parseInt(document.body.getAttribute(Ne)||"0",10);return isFinite(e)?e:0},ji=function(){a.useEffect(function(){return document.body.setAttribute(Ne,(vn()+1).toString()),function(){var e=vn()-1;e<=0?document.body.removeAttribute(Ne):document.body.setAttribute(Ne,e.toString())}},[])},Fi=function(e){var t=e.noRelative,n=e.noImportant,o=e.gapMode,r=o===void 0?"margin":o;ji();var i=a.useMemo(function(){return Mi(r)},[r]);return a.createElement(Li,{styles:ki(i,!t,r,n?"":"!important")})},_t=!1;if(typeof window<"u")try{var Ke=Object.defineProperty({},"passive",{get:function(){return _t=!0,!0}});window.addEventListener("test",Ke,Ke),window.removeEventListener("test",Ke,Ke)}catch{_t=!1}var Pe=_t?{passive:!1}:!1,Wi=function(e){return e.tagName==="TEXTAREA"},Kn=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!Wi(e)&&n[t]==="visible")},$i=function(e){return Kn(e,"overflowY")},Bi=function(e){return Kn(e,"overflowX")},yn=function(e,t){var n=t.ownerDocument,o=t;do{typeof ShadowRoot<"u"&&o instanceof ShadowRoot&&(o=o.host);var r=Yn(e,o);if(r){var i=Xn(e,o),c=i[1],s=i[2];if(c>s)return!0}o=o.parentNode}while(o&&o!==n.body);return!1},Vi=function(e){var t=e.scrollTop,n=e.scrollHeight,o=e.clientHeight;return[t,n,o]},Hi=function(e){var t=e.scrollLeft,n=e.scrollWidth,o=e.clientWidth;return[t,n,o]},Yn=function(e,t){return e==="v"?$i(t):Bi(t)},Xn=function(e,t){return e==="v"?Vi(t):Hi(t)},Ui=function(e,t){return e==="h"&&t==="rtl"?-1:1},zi=function(e,t,n,o,r){var i=Ui(e,window.getComputedStyle(t).direction),c=i*o,s=n.target,l=t.contains(s),u=!1,d=c>0,p=0,h=0;do{if(!s)break;var m=Xn(e,s),w=m[0],f=m[1],g=m[2],y=f-g-i*w;(w||y)&&Yn(e,s)&&(p+=y,h+=w);var v=s.parentNode;s=v&&v.nodeType===Node.DOCUMENT_FRAGMENT_NODE?v.host:v}while(!l&&s!==document.body||l&&(t.contains(s)||t===s));return(d&&Math.abs(p)<1||!d&&Math.abs(h)<1)&&(u=!0),u},Ye=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},wn=function(e){return[e.deltaX,e.deltaY]},xn=function(e){return e&&"current"in e?e.current:e},Ki=function(e,t){return e[0]===t[0]&&e[1]===t[1]},Yi=function(e){return` - .block-interactivity-`.concat(e,` {pointer-events: none;} - .allow-interactivity-`).concat(e,` {pointer-events: all;} -`)},Xi=0,Ae=[];function Gi(e){var t=a.useRef([]),n=a.useRef([0,0]),o=a.useRef(),r=a.useState(Xi++)[0],i=a.useState(zn)[0],c=a.useRef(e);a.useEffect(function(){c.current=e},[e]),a.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(r));var f=gi([e.lockRef.current],(e.shards||[]).map(xn),!0).filter(Boolean);return f.forEach(function(g){return g.classList.add("allow-interactivity-".concat(r))}),function(){document.body.classList.remove("block-interactivity-".concat(r)),f.forEach(function(g){return g.classList.remove("allow-interactivity-".concat(r))})}}},[e.inert,e.lockRef.current,e.shards]);var s=a.useCallback(function(f,g){if("touches"in f&&f.touches.length===2||f.type==="wheel"&&f.ctrlKey)return!c.current.allowPinchZoom;var y=Ye(f),v=n.current,S="deltaX"in f?f.deltaX:v[0]-y[0],b="deltaY"in f?f.deltaY:v[1]-y[1],C,R=f.target,E=Math.abs(S)>Math.abs(b)?"h":"v";if("touches"in f&&E==="h"&&R.type==="range")return!1;var O=yn(E,R);if(!O)return!0;if(O?C=E:(C=E==="v"?"h":"v",O=yn(E,R)),!O)return!1;if(!o.current&&"changedTouches"in f&&(S||b)&&(o.current=C),!C)return!0;var _=o.current||C;return zi(_,g,f,_==="h"?S:b)},[]),l=a.useCallback(function(f){var g=f;if(!(!Ae.length||Ae[Ae.length-1]!==i)){var y="deltaY"in g?wn(g):Ye(g),v=t.current.filter(function(C){return C.name===g.type&&(C.target===g.target||g.target===C.shadowParent)&&Ki(C.delta,y)})[0];if(v&&v.should){g.cancelable&&g.preventDefault();return}if(!v){var S=(c.current.shards||[]).map(xn).filter(Boolean).filter(function(C){return C.contains(g.target)}),b=S.length>0?s(g,S[0]):!c.current.noIsolation;b&&g.cancelable&&g.preventDefault()}}},[]),u=a.useCallback(function(f,g,y,v){var S={name:f,delta:g,target:y,should:v,shadowParent:qi(y)};t.current.push(S),setTimeout(function(){t.current=t.current.filter(function(b){return b!==S})},1)},[]),d=a.useCallback(function(f){n.current=Ye(f),o.current=void 0},[]),p=a.useCallback(function(f){u(f.type,wn(f),f.target,s(f,e.lockRef.current))},[]),h=a.useCallback(function(f){u(f.type,Ye(f),f.target,s(f,e.lockRef.current))},[]);a.useEffect(function(){return Ae.push(i),e.setCallbacks({onScrollCapture:p,onWheelCapture:p,onTouchMoveCapture:h}),document.addEventListener("wheel",l,Pe),document.addEventListener("touchmove",l,Pe),document.addEventListener("touchstart",d,Pe),function(){Ae=Ae.filter(function(f){return f!==i}),document.removeEventListener("wheel",l,Pe),document.removeEventListener("touchmove",l,Pe),document.removeEventListener("touchstart",d,Pe)}},[]);var m=e.removeScrollBar,w=e.inert;return a.createElement(a.Fragment,null,w?a.createElement(i,{styles:Yi(r)}):null,m?a.createElement(Fi,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function qi(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}const Zi=Ri(Un,Gi);var zt=a.forwardRef(function(e,t){return a.createElement(ut,ne({},e,{ref:t,sideCar:Zi}))});zt.classNames=ut.classNames;var Qi=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},Oe=new WeakMap,Xe=new WeakMap,Ge={},Tt=0,Gn=function(e){return e&&(e.host||Gn(e.parentNode))},Ji=function(e,t){return t.map(function(n){if(e.contains(n))return n;var o=Gn(n);return o&&e.contains(o)?o:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return!!n})},es=function(e,t,n,o){var r=Ji(t,Array.isArray(e)?e:[e]);Ge[n]||(Ge[n]=new WeakMap);var i=Ge[n],c=[],s=new Set,l=new Set(r),u=function(p){!p||s.has(p)||(s.add(p),u(p.parentNode))};r.forEach(u);var d=function(p){!p||l.has(p)||Array.prototype.forEach.call(p.children,function(h){if(s.has(h))d(h);else try{var m=h.getAttribute(o),w=m!==null&&m!=="false",f=(Oe.get(h)||0)+1,g=(i.get(h)||0)+1;Oe.set(h,f),i.set(h,g),c.push(h),f===1&&w&&Xe.set(h,!0),g===1&&h.setAttribute(n,"true"),w||h.setAttribute(o,"true")}catch(y){console.error("aria-hidden: cannot operate on ",h,y)}})};return d(t),s.clear(),Tt++,function(){c.forEach(function(p){var h=Oe.get(p)-1,m=i.get(p)-1;Oe.set(p,h),i.set(p,m),h||(Xe.has(p)||p.removeAttribute(o),Xe.delete(p)),m||p.removeAttribute(n)}),Tt--,Tt||(Oe=new WeakMap,Oe=new WeakMap,Xe=new WeakMap,Ge={})}},qn=function(e,t,n){n===void 0&&(n="data-aria-hidden");var o=Array.from(Array.isArray(e)?e:[e]),r=Qi(e);return r?(o.push.apply(o,Array.from(r.querySelectorAll("[aria-live], script"))),es(o,r,n,"aria-hidden")):function(){return null}};function ts(e){const t=ns(e),n=a.forwardRef((o,r)=>{const{children:i,...c}=o,s=a.Children.toArray(i),l=s.find(rs);if(l){const u=l.props.children,d=s.map(p=>p===l?a.Children.count(u)>1?a.Children.only(null):a.isValidElement(u)?u.props.children:null:p);return x.jsx(t,{...c,ref:r,children:a.isValidElement(u)?a.cloneElement(u,void 0,d):null})}return x.jsx(t,{...c,ref:r,children:i})});return n.displayName=`${e}.Slot`,n}function ns(e){const t=a.forwardRef((n,o)=>{const{children:r,...i}=n;if(a.isValidElement(r)){const c=ss(r),s=is(i,r.props);return r.type!==a.Fragment&&(s.ref=o?_e(o,c):c),a.cloneElement(r,s)}return a.Children.count(r)>1?a.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var os=Symbol("radix.slottable");function rs(e){return a.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===os}function is(e,t){const n={...t};for(const o in t){const r=e[o],i=t[o];/^on[A-Z]/.test(o)?r&&i?n[o]=(...s)=>{const l=i(...s);return r(...s),l}:r&&(n[o]=r):o==="style"?n[o]={...r,...i}:o==="className"&&(n[o]=[r,i].filter(Boolean).join(" "))}return{...e,...n}}function ss(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var ft="Dialog",[Zn,Ca]=Ve(ft),[cs,te]=Zn(ft),Qn=e=>{const{__scopeDialog:t,children:n,open:o,defaultOpen:r,onOpenChange:i,modal:c=!0}=e,s=a.useRef(null),l=a.useRef(null),[u,d]=et({prop:o,defaultProp:r??!1,onChange:i,caller:ft});return x.jsx(cs,{scope:t,triggerRef:s,contentRef:l,contentId:Te(),titleId:Te(),descriptionId:Te(),open:u,onOpenChange:d,onOpenToggle:a.useCallback(()=>d(p=>!p),[d]),modal:c,children:n})};Qn.displayName=ft;var Jn="DialogTrigger",eo=a.forwardRef((e,t)=>{const{__scopeDialog:n,...o}=e,r=te(Jn,n),i=H(t,r.triggerRef);return x.jsx(M.button,{type:"button","aria-haspopup":"dialog","aria-expanded":r.open,"aria-controls":r.contentId,"data-state":Xt(r.open),...o,ref:i,onClick:k(e.onClick,r.onOpenToggle)})});eo.displayName=Jn;var Kt="DialogPortal",[as,to]=Zn(Kt,{forceMount:void 0}),no=e=>{const{__scopeDialog:t,forceMount:n,children:o,container:r}=e,i=te(Kt,t);return x.jsx(as,{scope:t,forceMount:n,children:a.Children.map(o,c=>x.jsx(He,{present:n||i.open,children:x.jsx(Ut,{asChild:!0,container:r,children:c})}))})};no.displayName=Kt;var nt="DialogOverlay",oo=a.forwardRef((e,t)=>{const n=to(nt,e.__scopeDialog),{forceMount:o=n.forceMount,...r}=e,i=te(nt,e.__scopeDialog);return i.modal?x.jsx(He,{present:o||i.open,children:x.jsx(us,{...r,ref:t})}):null});oo.displayName=nt;var ls=ts("DialogOverlay.RemoveScroll"),us=a.forwardRef((e,t)=>{const{__scopeDialog:n,...o}=e,r=te(nt,n);return x.jsx(zt,{as:ls,allowPinchZoom:!0,shards:[r.contentRef],children:x.jsx(M.div,{"data-state":Xt(r.open),...o,ref:t,style:{pointerEvents:"auto",...o.style}})})}),Se="DialogContent",ro=a.forwardRef((e,t)=>{const n=to(Se,e.__scopeDialog),{forceMount:o=n.forceMount,...r}=e,i=te(Se,e.__scopeDialog);return x.jsx(He,{present:o||i.open,children:i.modal?x.jsx(fs,{...r,ref:t}):x.jsx(ds,{...r,ref:t})})});ro.displayName=Se;var fs=a.forwardRef((e,t)=>{const n=te(Se,e.__scopeDialog),o=a.useRef(null),r=H(t,n.contentRef,o);return a.useEffect(()=>{const i=o.current;if(i)return qn(i)},[]),x.jsx(io,{...e,ref:r,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:k(e.onCloseAutoFocus,i=>{i.preventDefault(),n.triggerRef.current?.focus()}),onPointerDownOutside:k(e.onPointerDownOutside,i=>{const c=i.detail.originalEvent,s=c.button===0&&c.ctrlKey===!0;(c.button===2||s)&&i.preventDefault()}),onFocusOutside:k(e.onFocusOutside,i=>i.preventDefault())})}),ds=a.forwardRef((e,t)=>{const n=te(Se,e.__scopeDialog),o=a.useRef(!1),r=a.useRef(!1);return x.jsx(io,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{e.onCloseAutoFocus?.(i),i.defaultPrevented||(o.current||n.triggerRef.current?.focus(),i.preventDefault()),o.current=!1,r.current=!1},onInteractOutside:i=>{e.onInteractOutside?.(i),i.defaultPrevented||(o.current=!0,i.detail.originalEvent.type==="pointerdown"&&(r.current=!0));const c=i.target;n.triggerRef.current?.contains(c)&&i.preventDefault(),i.detail.originalEvent.type==="focusin"&&r.current&&i.preventDefault()}})}),io=a.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:o,onOpenAutoFocus:r,onCloseAutoFocus:i,...c}=e,s=te(Se,n),l=a.useRef(null),u=H(t,l);return Bn(),x.jsxs(x.Fragment,{children:[x.jsx(Ht,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:r,onUnmountAutoFocus:i,children:x.jsx(lt,{role:"dialog",id:s.contentId,"aria-describedby":s.descriptionId,"aria-labelledby":s.titleId,"data-state":Xt(s.open),...c,ref:u,onDismiss:()=>s.onOpenChange(!1)})}),x.jsxs(x.Fragment,{children:[x.jsx(ps,{titleId:s.titleId}),x.jsx(hs,{contentRef:l,descriptionId:s.descriptionId})]})]})}),Yt="DialogTitle",so=a.forwardRef((e,t)=>{const{__scopeDialog:n,...o}=e,r=te(Yt,n);return x.jsx(M.h2,{id:r.titleId,...o,ref:t})});so.displayName=Yt;var co="DialogDescription",ao=a.forwardRef((e,t)=>{const{__scopeDialog:n,...o}=e,r=te(co,n);return x.jsx(M.p,{id:r.descriptionId,...o,ref:t})});ao.displayName=co;var lo="DialogClose",uo=a.forwardRef((e,t)=>{const{__scopeDialog:n,...o}=e,r=te(lo,n);return x.jsx(M.button,{type:"button",...o,ref:t,onClick:k(e.onClick,()=>r.onOpenChange(!1))})});uo.displayName=lo;function Xt(e){return e?"open":"closed"}var fo="DialogTitleWarning",[Ea,po]=wr(fo,{contentName:Se,titleName:Yt,docsSlug:"dialog"}),ps=({titleId:e})=>{const t=po(fo),n=`\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users. - -If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component. - -For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return a.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},ms="DialogDescriptionWarning",hs=({contentRef:e,descriptionId:t})=>{const o=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${po(ms).contentName}}.`;return a.useEffect(()=>{const r=e.current?.getAttribute("aria-describedby");t&&r&&(document.getElementById(t)||console.warn(o))},[o,e,t]),null},Ra=Qn,Pa=eo,Aa=no,Oa=oo,Ta=ro,Na=so,Ia=ao,Da=uo;const gs=["top","right","bottom","left"],de=Math.min,G=Math.max,ot=Math.round,qe=Math.floor,re=e=>({x:e,y:e}),vs={left:"right",right:"left",bottom:"top",top:"bottom"},ys={start:"end",end:"start"};function Mt(e,t,n){return G(e,de(t,n))}function ce(e,t){return typeof e=="function"?e(t):e}function ae(e){return e.split("-")[0]}function Me(e){return e.split("-")[1]}function Gt(e){return e==="x"?"y":"x"}function qt(e){return e==="y"?"height":"width"}const ws=new Set(["top","bottom"]);function oe(e){return ws.has(ae(e))?"y":"x"}function Zt(e){return Gt(oe(e))}function xs(e,t,n){n===void 0&&(n=!1);const o=Me(e),r=Zt(e),i=qt(r);let c=r==="x"?o===(n?"end":"start")?"right":"left":o==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(c=rt(c)),[c,rt(c)]}function Ss(e){const t=rt(e);return[Lt(e),t,Lt(t)]}function Lt(e){return e.replace(/start|end/g,t=>ys[t])}const Sn=["left","right"],bn=["right","left"],bs=["top","bottom"],Cs=["bottom","top"];function Es(e,t,n){switch(e){case"top":case"bottom":return n?t?bn:Sn:t?Sn:bn;case"left":case"right":return t?bs:Cs;default:return[]}}function Rs(e,t,n,o){const r=Me(e);let i=Es(ae(e),n==="start",o);return r&&(i=i.map(c=>c+"-"+r),t&&(i=i.concat(i.map(Lt)))),i}function rt(e){return e.replace(/left|right|bottom|top/g,t=>vs[t])}function Ps(e){return{top:0,right:0,bottom:0,left:0,...e}}function mo(e){return typeof e!="number"?Ps(e):{top:e,right:e,bottom:e,left:e}}function it(e){const{x:t,y:n,width:o,height:r}=e;return{width:o,height:r,top:n,left:t,right:t+o,bottom:n+r,x:t,y:n}}function Cn(e,t,n){let{reference:o,floating:r}=e;const i=oe(t),c=Zt(t),s=qt(c),l=ae(t),u=i==="y",d=o.x+o.width/2-r.width/2,p=o.y+o.height/2-r.height/2,h=o[s]/2-r[s]/2;let m;switch(l){case"top":m={x:d,y:o.y-r.height};break;case"bottom":m={x:d,y:o.y+o.height};break;case"right":m={x:o.x+o.width,y:p};break;case"left":m={x:o.x-r.width,y:p};break;default:m={x:o.x,y:o.y}}switch(Me(t)){case"start":m[c]-=h*(n&&u?-1:1);break;case"end":m[c]+=h*(n&&u?-1:1);break}return m}const As=async(e,t,n)=>{const{placement:o="bottom",strategy:r="absolute",middleware:i=[],platform:c}=n,s=i.filter(Boolean),l=await(c.isRTL==null?void 0:c.isRTL(t));let u=await c.getElementRects({reference:e,floating:t,strategy:r}),{x:d,y:p}=Cn(u,o,l),h=o,m={},w=0;for(let f=0;f({name:"arrow",options:e,async fn(t){const{x:n,y:o,placement:r,rects:i,platform:c,elements:s,middlewareData:l}=t,{element:u,padding:d=0}=ce(e,t)||{};if(u==null)return{};const p=mo(d),h={x:n,y:o},m=Zt(r),w=qt(m),f=await c.getDimensions(u),g=m==="y",y=g?"top":"left",v=g?"bottom":"right",S=g?"clientHeight":"clientWidth",b=i.reference[w]+i.reference[m]-h[m]-i.floating[w],C=h[m]-i.reference[m],R=await(c.getOffsetParent==null?void 0:c.getOffsetParent(u));let E=R?R[S]:0;(!E||!await(c.isElement==null?void 0:c.isElement(R)))&&(E=s.floating[S]||i.floating[w]);const O=b/2-C/2,_=E/2-f[w]/2-1,I=de(p[y],_),j=de(p[v],_),F=I,L=E-f[w]-j,N=E/2-f[w]/2+O,V=Mt(F,N,L),T=!l.arrow&&Me(r)!=null&&N!==V&&i.reference[w]/2-(NN<=0)){var j,F;const N=(((j=i.flip)==null?void 0:j.index)||0)+1,V=E[N];if(V&&(!(p==="alignment"?v!==oe(V):!1)||I.every(A=>oe(A.placement)===v?A.overflows[0]>0:!0)))return{data:{index:N,overflows:I},reset:{placement:V}};let T=(F=I.filter(D=>D.overflows[0]<=0).sort((D,A)=>D.overflows[1]-A.overflows[1])[0])==null?void 0:F.placement;if(!T)switch(m){case"bestFit":{var L;const D=(L=I.filter(A=>{if(R){const W=oe(A.placement);return W===v||W==="y"}return!0}).map(A=>[A.placement,A.overflows.filter(W=>W>0).reduce((W,X)=>W+X,0)]).sort((A,W)=>A[1]-W[1])[0])==null?void 0:L[0];D&&(T=D);break}case"initialPlacement":T=s;break}if(r!==T)return{reset:{placement:T}}}return{}}}};function En(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Rn(e){return gs.some(t=>e[t]>=0)}const Ns=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:o="referenceHidden",...r}=ce(e,t);switch(o){case"referenceHidden":{const i=await $e(t,{...r,elementContext:"reference"}),c=En(i,n.reference);return{data:{referenceHiddenOffsets:c,referenceHidden:Rn(c)}}}case"escaped":{const i=await $e(t,{...r,altBoundary:!0}),c=En(i,n.floating);return{data:{escapedOffsets:c,escaped:Rn(c)}}}default:return{}}}}},ho=new Set(["left","top"]);async function Is(e,t){const{placement:n,platform:o,elements:r}=e,i=await(o.isRTL==null?void 0:o.isRTL(r.floating)),c=ae(n),s=Me(n),l=oe(n)==="y",u=ho.has(c)?-1:1,d=i&&l?-1:1,p=ce(t,e);let{mainAxis:h,crossAxis:m,alignmentAxis:w}=typeof p=="number"?{mainAxis:p,crossAxis:0,alignmentAxis:null}:{mainAxis:p.mainAxis||0,crossAxis:p.crossAxis||0,alignmentAxis:p.alignmentAxis};return s&&typeof w=="number"&&(m=s==="end"?w*-1:w),l?{x:m*d,y:h*u}:{x:h*u,y:m*d}}const Ds=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,o;const{x:r,y:i,placement:c,middlewareData:s}=t,l=await Is(t,e);return c===((n=s.offset)==null?void 0:n.placement)&&(o=s.arrow)!=null&&o.alignmentOffset?{}:{x:r+l.x,y:i+l.y,data:{...l,placement:c}}}}},_s=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:o,placement:r}=t,{mainAxis:i=!0,crossAxis:c=!1,limiter:s={fn:g=>{let{x:y,y:v}=g;return{x:y,y:v}}},...l}=ce(e,t),u={x:n,y:o},d=await $e(t,l),p=oe(ae(r)),h=Gt(p);let m=u[h],w=u[p];if(i){const g=h==="y"?"top":"left",y=h==="y"?"bottom":"right",v=m+d[g],S=m-d[y];m=Mt(v,m,S)}if(c){const g=p==="y"?"top":"left",y=p==="y"?"bottom":"right",v=w+d[g],S=w-d[y];w=Mt(v,w,S)}const f=s.fn({...t,[h]:m,[p]:w});return{...f,data:{x:f.x-n,y:f.y-o,enabled:{[h]:i,[p]:c}}}}}},Ms=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:o,placement:r,rects:i,middlewareData:c}=t,{offset:s=0,mainAxis:l=!0,crossAxis:u=!0}=ce(e,t),d={x:n,y:o},p=oe(r),h=Gt(p);let m=d[h],w=d[p];const f=ce(s,t),g=typeof f=="number"?{mainAxis:f,crossAxis:0}:{mainAxis:0,crossAxis:0,...f};if(l){const S=h==="y"?"height":"width",b=i.reference[h]-i.floating[S]+g.mainAxis,C=i.reference[h]+i.reference[S]-g.mainAxis;mC&&(m=C)}if(u){var y,v;const S=h==="y"?"width":"height",b=ho.has(ae(r)),C=i.reference[p]-i.floating[S]+(b&&((y=c.offset)==null?void 0:y[p])||0)+(b?0:g.crossAxis),R=i.reference[p]+i.reference[S]+(b?0:((v=c.offset)==null?void 0:v[p])||0)-(b?g.crossAxis:0);wR&&(w=R)}return{[h]:m,[p]:w}}}},Ls=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var n,o;const{placement:r,rects:i,platform:c,elements:s}=t,{apply:l=()=>{},...u}=ce(e,t),d=await $e(t,u),p=ae(r),h=Me(r),m=oe(r)==="y",{width:w,height:f}=i.floating;let g,y;p==="top"||p==="bottom"?(g=p,y=h===(await(c.isRTL==null?void 0:c.isRTL(s.floating))?"start":"end")?"left":"right"):(y=p,g=h==="end"?"top":"bottom");const v=f-d.top-d.bottom,S=w-d.left-d.right,b=de(f-d[g],v),C=de(w-d[y],S),R=!t.middlewareData.shift;let E=b,O=C;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(O=S),(o=t.middlewareData.shift)!=null&&o.enabled.y&&(E=v),R&&!h){const I=G(d.left,0),j=G(d.right,0),F=G(d.top,0),L=G(d.bottom,0);m?O=w-2*(I!==0||j!==0?I+j:G(d.left,d.right)):E=f-2*(F!==0||L!==0?F+L:G(d.top,d.bottom))}await l({...t,availableWidth:O,availableHeight:E});const _=await c.getDimensions(s.floating);return w!==_.width||f!==_.height?{reset:{rects:!0}}:{}}}};function dt(){return typeof window<"u"}function Le(e){return go(e)?(e.nodeName||"").toLowerCase():"#document"}function q(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function se(e){var t;return(t=(go(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function go(e){return dt()?e instanceof Node||e instanceof q(e).Node:!1}function J(e){return dt()?e instanceof Element||e instanceof q(e).Element:!1}function ie(e){return dt()?e instanceof HTMLElement||e instanceof q(e).HTMLElement:!1}function Pn(e){return!dt()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof q(e).ShadowRoot}const ks=new Set(["inline","contents"]);function Ue(e){const{overflow:t,overflowX:n,overflowY:o,display:r}=ee(e);return/auto|scroll|overlay|hidden|clip/.test(t+o+n)&&!ks.has(r)}const js=new Set(["table","td","th"]);function Fs(e){return js.has(Le(e))}const Ws=[":popover-open",":modal"];function pt(e){return Ws.some(t=>{try{return e.matches(t)}catch{return!1}})}const $s=["transform","translate","scale","rotate","perspective"],Bs=["transform","translate","scale","rotate","perspective","filter"],Vs=["paint","layout","strict","content"];function Qt(e){const t=Jt(),n=J(e)?ee(e):e;return $s.some(o=>n[o]?n[o]!=="none":!1)||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||Bs.some(o=>(n.willChange||"").includes(o))||Vs.some(o=>(n.contain||"").includes(o))}function Hs(e){let t=pe(e);for(;ie(t)&&!De(t);){if(Qt(t))return t;if(pt(t))return null;t=pe(t)}return null}function Jt(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const Us=new Set(["html","body","#document"]);function De(e){return Us.has(Le(e))}function ee(e){return q(e).getComputedStyle(e)}function mt(e){return J(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function pe(e){if(Le(e)==="html")return e;const t=e.assignedSlot||e.parentNode||Pn(e)&&e.host||se(e);return Pn(t)?t.host:t}function vo(e){const t=pe(e);return De(t)?e.ownerDocument?e.ownerDocument.body:e.body:ie(t)&&Ue(t)?t:vo(t)}function Be(e,t,n){var o;t===void 0&&(t=[]),n===void 0&&(n=!0);const r=vo(e),i=r===((o=e.ownerDocument)==null?void 0:o.body),c=q(r);if(i){const s=kt(c);return t.concat(c,c.visualViewport||[],Ue(r)?r:[],s&&n?Be(s):[])}return t.concat(r,Be(r,[],n))}function kt(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function yo(e){const t=ee(e);let n=parseFloat(t.width)||0,o=parseFloat(t.height)||0;const r=ie(e),i=r?e.offsetWidth:n,c=r?e.offsetHeight:o,s=ot(n)!==i||ot(o)!==c;return s&&(n=i,o=c),{width:n,height:o,$:s}}function en(e){return J(e)?e:e.contextElement}function Ie(e){const t=en(e);if(!ie(t))return re(1);const n=t.getBoundingClientRect(),{width:o,height:r,$:i}=yo(t);let c=(i?ot(n.width):n.width)/o,s=(i?ot(n.height):n.height)/r;return(!c||!Number.isFinite(c))&&(c=1),(!s||!Number.isFinite(s))&&(s=1),{x:c,y:s}}const zs=re(0);function wo(e){const t=q(e);return!Jt()||!t.visualViewport?zs:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function Ks(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==q(e)?!1:t}function be(e,t,n,o){t===void 0&&(t=!1),n===void 0&&(n=!1);const r=e.getBoundingClientRect(),i=en(e);let c=re(1);t&&(o?J(o)&&(c=Ie(o)):c=Ie(e));const s=Ks(i,n,o)?wo(i):re(0);let l=(r.left+s.x)/c.x,u=(r.top+s.y)/c.y,d=r.width/c.x,p=r.height/c.y;if(i){const h=q(i),m=o&&J(o)?q(o):o;let w=h,f=kt(w);for(;f&&o&&m!==w;){const g=Ie(f),y=f.getBoundingClientRect(),v=ee(f),S=y.left+(f.clientLeft+parseFloat(v.paddingLeft))*g.x,b=y.top+(f.clientTop+parseFloat(v.paddingTop))*g.y;l*=g.x,u*=g.y,d*=g.x,p*=g.y,l+=S,u+=b,w=q(f),f=kt(w)}}return it({width:d,height:p,x:l,y:u})}function ht(e,t){const n=mt(e).scrollLeft;return t?t.left+n:be(se(e)).left+n}function xo(e,t){const n=e.getBoundingClientRect(),o=n.left+t.scrollLeft-ht(e,n),r=n.top+t.scrollTop;return{x:o,y:r}}function Ys(e){let{elements:t,rect:n,offsetParent:o,strategy:r}=e;const i=r==="fixed",c=se(o),s=t?pt(t.floating):!1;if(o===c||s&&i)return n;let l={scrollLeft:0,scrollTop:0},u=re(1);const d=re(0),p=ie(o);if((p||!p&&!i)&&((Le(o)!=="body"||Ue(c))&&(l=mt(o)),ie(o))){const m=be(o);u=Ie(o),d.x=m.x+o.clientLeft,d.y=m.y+o.clientTop}const h=c&&!p&&!i?xo(c,l):re(0);return{width:n.width*u.x,height:n.height*u.y,x:n.x*u.x-l.scrollLeft*u.x+d.x+h.x,y:n.y*u.y-l.scrollTop*u.y+d.y+h.y}}function Xs(e){return Array.from(e.getClientRects())}function Gs(e){const t=se(e),n=mt(e),o=e.ownerDocument.body,r=G(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),i=G(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight);let c=-n.scrollLeft+ht(e);const s=-n.scrollTop;return ee(o).direction==="rtl"&&(c+=G(t.clientWidth,o.clientWidth)-r),{width:r,height:i,x:c,y:s}}const An=25;function qs(e,t){const n=q(e),o=se(e),r=n.visualViewport;let i=o.clientWidth,c=o.clientHeight,s=0,l=0;if(r){i=r.width,c=r.height;const d=Jt();(!d||d&&t==="fixed")&&(s=r.offsetLeft,l=r.offsetTop)}const u=ht(o);if(u<=0){const d=o.ownerDocument,p=d.body,h=getComputedStyle(p),m=d.compatMode==="CSS1Compat"&&parseFloat(h.marginLeft)+parseFloat(h.marginRight)||0,w=Math.abs(o.clientWidth-p.clientWidth-m);w<=An&&(i-=w)}else u<=An&&(i+=u);return{width:i,height:c,x:s,y:l}}const Zs=new Set(["absolute","fixed"]);function Qs(e,t){const n=be(e,!0,t==="fixed"),o=n.top+e.clientTop,r=n.left+e.clientLeft,i=ie(e)?Ie(e):re(1),c=e.clientWidth*i.x,s=e.clientHeight*i.y,l=r*i.x,u=o*i.y;return{width:c,height:s,x:l,y:u}}function On(e,t,n){let o;if(t==="viewport")o=qs(e,n);else if(t==="document")o=Gs(se(e));else if(J(t))o=Qs(t,n);else{const r=wo(e);o={x:t.x-r.x,y:t.y-r.y,width:t.width,height:t.height}}return it(o)}function So(e,t){const n=pe(e);return n===t||!J(n)||De(n)?!1:ee(n).position==="fixed"||So(n,t)}function Js(e,t){const n=t.get(e);if(n)return n;let o=Be(e,[],!1).filter(s=>J(s)&&Le(s)!=="body"),r=null;const i=ee(e).position==="fixed";let c=i?pe(e):e;for(;J(c)&&!De(c);){const s=ee(c),l=Qt(c);!l&&s.position==="fixed"&&(r=null),(i?!l&&!r:!l&&s.position==="static"&&!!r&&Zs.has(r.position)||Ue(c)&&!l&&So(e,c))?o=o.filter(d=>d!==c):r=s,c=pe(c)}return t.set(e,o),o}function ec(e){let{element:t,boundary:n,rootBoundary:o,strategy:r}=e;const c=[...n==="clippingAncestors"?pt(t)?[]:Js(t,this._c):[].concat(n),o],s=c[0],l=c.reduce((u,d)=>{const p=On(t,d,r);return u.top=G(p.top,u.top),u.right=de(p.right,u.right),u.bottom=de(p.bottom,u.bottom),u.left=G(p.left,u.left),u},On(t,s,r));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function tc(e){const{width:t,height:n}=yo(e);return{width:t,height:n}}function nc(e,t,n){const o=ie(t),r=se(t),i=n==="fixed",c=be(e,!0,i,t);let s={scrollLeft:0,scrollTop:0};const l=re(0);function u(){l.x=ht(r)}if(o||!o&&!i)if((Le(t)!=="body"||Ue(r))&&(s=mt(t)),o){const m=be(t,!0,i,t);l.x=m.x+t.clientLeft,l.y=m.y+t.clientTop}else r&&u();i&&!o&&r&&u();const d=r&&!o&&!i?xo(r,s):re(0),p=c.left+s.scrollLeft-l.x-d.x,h=c.top+s.scrollTop-l.y-d.y;return{x:p,y:h,width:c.width,height:c.height}}function Nt(e){return ee(e).position==="static"}function Tn(e,t){if(!ie(e)||ee(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return se(e)===n&&(n=n.ownerDocument.body),n}function bo(e,t){const n=q(e);if(pt(e))return n;if(!ie(e)){let r=pe(e);for(;r&&!De(r);){if(J(r)&&!Nt(r))return r;r=pe(r)}return n}let o=Tn(e,t);for(;o&&Fs(o)&&Nt(o);)o=Tn(o,t);return o&&De(o)&&Nt(o)&&!Qt(o)?n:o||Hs(e)||n}const oc=async function(e){const t=this.getOffsetParent||bo,n=this.getDimensions,o=await n(e.floating);return{reference:nc(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:o.width,height:o.height}}};function rc(e){return ee(e).direction==="rtl"}const ic={convertOffsetParentRelativeRectToViewportRelativeRect:Ys,getDocumentElement:se,getClippingRect:ec,getOffsetParent:bo,getElementRects:oc,getClientRects:Xs,getDimensions:tc,getScale:Ie,isElement:J,isRTL:rc};function Co(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function sc(e,t){let n=null,o;const r=se(e);function i(){var s;clearTimeout(o),(s=n)==null||s.disconnect(),n=null}function c(s,l){s===void 0&&(s=!1),l===void 0&&(l=1),i();const u=e.getBoundingClientRect(),{left:d,top:p,width:h,height:m}=u;if(s||t(),!h||!m)return;const w=qe(p),f=qe(r.clientWidth-(d+h)),g=qe(r.clientHeight-(p+m)),y=qe(d),S={rootMargin:-w+"px "+-f+"px "+-g+"px "+-y+"px",threshold:G(0,de(1,l))||1};let b=!0;function C(R){const E=R[0].intersectionRatio;if(E!==l){if(!b)return c();E?c(!1,E):o=setTimeout(()=>{c(!1,1e-7)},1e3)}E===1&&!Co(u,e.getBoundingClientRect())&&c(),b=!1}try{n=new IntersectionObserver(C,{...S,root:r.ownerDocument})}catch{n=new IntersectionObserver(C,S)}n.observe(e)}return c(!0),i}function cc(e,t,n,o){o===void 0&&(o={});const{ancestorScroll:r=!0,ancestorResize:i=!0,elementResize:c=typeof ResizeObserver=="function",layoutShift:s=typeof IntersectionObserver=="function",animationFrame:l=!1}=o,u=en(e),d=r||i?[...u?Be(u):[],...Be(t)]:[];d.forEach(y=>{r&&y.addEventListener("scroll",n,{passive:!0}),i&&y.addEventListener("resize",n)});const p=u&&s?sc(u,n):null;let h=-1,m=null;c&&(m=new ResizeObserver(y=>{let[v]=y;v&&v.target===u&&m&&(m.unobserve(t),cancelAnimationFrame(h),h=requestAnimationFrame(()=>{var S;(S=m)==null||S.observe(t)})),n()}),u&&!l&&m.observe(u),m.observe(t));let w,f=l?be(e):null;l&&g();function g(){const y=be(e);f&&!Co(f,y)&&n(),f=y,w=requestAnimationFrame(g)}return n(),()=>{var y;d.forEach(v=>{r&&v.removeEventListener("scroll",n),i&&v.removeEventListener("resize",n)}),p?.(),(y=m)==null||y.disconnect(),m=null,l&&cancelAnimationFrame(w)}}const ac=Ds,lc=_s,uc=Ts,fc=Ls,dc=Ns,Nn=Os,pc=Ms,mc=(e,t,n)=>{const o=new Map,r={platform:ic,...n},i={...r.platform,_c:o};return As(e,t,{...r,platform:i})};var hc=typeof document<"u",gc=function(){},Je=hc?a.useLayoutEffect:gc;function st(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,o,r;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(o=n;o--!==0;)if(!st(e[o],t[o]))return!1;return!0}if(r=Object.keys(e),n=r.length,n!==Object.keys(t).length)return!1;for(o=n;o--!==0;)if(!{}.hasOwnProperty.call(t,r[o]))return!1;for(o=n;o--!==0;){const i=r[o];if(!(i==="_owner"&&e.$$typeof)&&!st(e[i],t[i]))return!1}return!0}return e!==e&&t!==t}function Eo(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function In(e,t){const n=Eo(e);return Math.round(t*n)/n}function It(e){const t=a.useRef(e);return Je(()=>{t.current=e}),t}function vc(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:o=[],platform:r,elements:{reference:i,floating:c}={},transform:s=!0,whileElementsMounted:l,open:u}=e,[d,p]=a.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[h,m]=a.useState(o);st(h,o)||m(o);const[w,f]=a.useState(null),[g,y]=a.useState(null),v=a.useCallback(A=>{A!==R.current&&(R.current=A,f(A))},[]),S=a.useCallback(A=>{A!==E.current&&(E.current=A,y(A))},[]),b=i||w,C=c||g,R=a.useRef(null),E=a.useRef(null),O=a.useRef(d),_=l!=null,I=It(l),j=It(r),F=It(u),L=a.useCallback(()=>{if(!R.current||!E.current)return;const A={placement:t,strategy:n,middleware:h};j.current&&(A.platform=j.current),mc(R.current,E.current,A).then(W=>{const X={...W,isPositioned:F.current!==!1};N.current&&!st(O.current,X)&&(O.current=X,at.flushSync(()=>{p(X)}))})},[h,t,n,j,F]);Je(()=>{u===!1&&O.current.isPositioned&&(O.current.isPositioned=!1,p(A=>({...A,isPositioned:!1})))},[u]);const N=a.useRef(!1);Je(()=>(N.current=!0,()=>{N.current=!1}),[]),Je(()=>{if(b&&(R.current=b),C&&(E.current=C),b&&C){if(I.current)return I.current(b,C,L);L()}},[b,C,L,I,_]);const V=a.useMemo(()=>({reference:R,floating:E,setReference:v,setFloating:S}),[v,S]),T=a.useMemo(()=>({reference:b,floating:C}),[b,C]),D=a.useMemo(()=>{const A={position:n,left:0,top:0};if(!T.floating)return A;const W=In(T.floating,d.x),X=In(T.floating,d.y);return s?{...A,transform:"translate("+W+"px, "+X+"px)",...Eo(T.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:W,top:X}},[n,s,T.floating,d.x,d.y]);return a.useMemo(()=>({...d,update:L,refs:V,elements:T,floatingStyles:D}),[d,L,V,T,D])}const yc=e=>{function t(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:o,padding:r}=typeof e=="function"?e(n):e;return o&&t(o)?o.current!=null?Nn({element:o.current,padding:r}).fn(n):{}:o?Nn({element:o,padding:r}).fn(n):{}}}},wc=(e,t)=>({...ac(e),options:[e,t]}),xc=(e,t)=>({...lc(e),options:[e,t]}),Sc=(e,t)=>({...pc(e),options:[e,t]}),bc=(e,t)=>({...uc(e),options:[e,t]}),Cc=(e,t)=>({...fc(e),options:[e,t]}),Ec=(e,t)=>({...dc(e),options:[e,t]}),Rc=(e,t)=>({...yc(e),options:[e,t]});var Pc="Arrow",Ro=a.forwardRef((e,t)=>{const{children:n,width:o=10,height:r=5,...i}=e;return x.jsx(M.svg,{...i,ref:t,width:o,height:r,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:x.jsx("polygon",{points:"0,0 30,0 15,10"})})});Ro.displayName=Pc;var Ac=Ro,tn="Popper",[Po,Ao]=Ve(tn),[Oc,Oo]=Po(tn),To=e=>{const{__scopePopper:t,children:n}=e,[o,r]=a.useState(null);return x.jsx(Oc,{scope:t,anchor:o,onAnchorChange:r,children:n})};To.displayName=tn;var No="PopperAnchor",Io=a.forwardRef((e,t)=>{const{__scopePopper:n,virtualRef:o,...r}=e,i=Oo(No,n),c=a.useRef(null),s=H(t,c),l=a.useRef(null);return a.useEffect(()=>{const u=l.current;l.current=o?.current||c.current,u!==l.current&&i.onAnchorChange(l.current)}),o?null:x.jsx(M.div,{...r,ref:s})});Io.displayName=No;var nn="PopperContent",[Tc,Nc]=Po(nn),Do=a.forwardRef((e,t)=>{const{__scopePopper:n,side:o="bottom",sideOffset:r=0,align:i="center",alignOffset:c=0,arrowPadding:s=0,avoidCollisions:l=!0,collisionBoundary:u=[],collisionPadding:d=0,sticky:p="partial",hideWhenDetached:h=!1,updatePositionStrategy:m="optimized",onPlaced:w,...f}=e,g=Oo(nn,n),[y,v]=a.useState(null),S=H(t,P=>v(P)),[b,C]=a.useState(null),R=Ln(b),E=R?.width??0,O=R?.height??0,_=o+(i!=="center"?"-"+i:""),I=typeof d=="number"?d:{top:0,right:0,bottom:0,left:0,...d},j=Array.isArray(u)?u:[u],F=j.length>0,L={padding:I,boundary:j.filter(Dc),altBoundary:F},{refs:N,floatingStyles:V,placement:T,isPositioned:D,middlewareData:A}=vc({strategy:"fixed",placement:_,whileElementsMounted:(...P)=>cc(...P,{animationFrame:m==="always"}),elements:{reference:g.anchor},middleware:[wc({mainAxis:r+O,alignmentAxis:c}),l&&xc({mainAxis:!0,crossAxis:!1,limiter:p==="partial"?Sc():void 0,...L}),l&&bc({...L}),Cc({...L,apply:({elements:P,rects:U,availableWidth:Y,availableHeight:$})=>{const{width:B,height:z}=U.reference,Z=P.floating.style;Z.setProperty("--radix-popper-available-width",`${Y}px`),Z.setProperty("--radix-popper-available-height",`${$}px`),Z.setProperty("--radix-popper-anchor-width",`${B}px`),Z.setProperty("--radix-popper-anchor-height",`${z}px`)}}),b&&Rc({element:b,padding:s}),_c({arrowWidth:E,arrowHeight:O}),h&&Ec({strategy:"referenceHidden",...L})]}),[W,X]=Lo(T),ge=xe(w);K(()=>{D&&ge?.()},[D,ge]);const je=A.arrow?.x,Fe=A.arrow?.y,le=A.arrow?.centerOffset!==0,[Re,ve]=a.useState();return K(()=>{y&&ve(window.getComputedStyle(y).zIndex)},[y]),x.jsx("div",{ref:N.setFloating,"data-radix-popper-content-wrapper":"",style:{...V,transform:D?V.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Re,"--radix-popper-transform-origin":[A.transformOrigin?.x,A.transformOrigin?.y].join(" "),...A.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:x.jsx(Tc,{scope:n,placedSide:W,onArrowChange:C,arrowX:je,arrowY:Fe,shouldHideArrow:le,children:x.jsx(M.div,{"data-side":W,"data-align":X,...f,ref:S,style:{...f.style,animation:D?void 0:"none"}})})})});Do.displayName=nn;var _o="PopperArrow",Ic={top:"bottom",right:"left",bottom:"top",left:"right"},Mo=a.forwardRef(function(t,n){const{__scopePopper:o,...r}=t,i=Nc(_o,o),c=Ic[i.placedSide];return x.jsx("span",{ref:i.onArrowChange,style:{position:"absolute",left:i.arrowX,top:i.arrowY,[c]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[i.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[i.placedSide],visibility:i.shouldHideArrow?"hidden":void 0},children:x.jsx(Ac,{...r,ref:n,style:{...r.style,display:"block"}})})});Mo.displayName=_o;function Dc(e){return e!==null}var _c=e=>({name:"transformOrigin",options:e,fn(t){const{placement:n,rects:o,middlewareData:r}=t,c=r.arrow?.centerOffset!==0,s=c?0:e.arrowWidth,l=c?0:e.arrowHeight,[u,d]=Lo(n),p={start:"0%",center:"50%",end:"100%"}[d],h=(r.arrow?.x??0)+s/2,m=(r.arrow?.y??0)+l/2;let w="",f="";return u==="bottom"?(w=c?p:`${h}px`,f=`${-l}px`):u==="top"?(w=c?p:`${h}px`,f=`${o.floating.height+l}px`):u==="right"?(w=`${-l}px`,f=c?p:`${m}px`):u==="left"&&(w=`${o.floating.width+l}px`,f=c?p:`${m}px`),{data:{x:w,y:f}}}});function Lo(e){const[t,n="center"]=e.split("-");return[t,n]}var Mc=To,Lc=Io,kc=Do,jc=Mo;function Fc(e){const t=Wc(e),n=a.forwardRef((o,r)=>{const{children:i,...c}=o,s=a.Children.toArray(i),l=s.find(Bc);if(l){const u=l.props.children,d=s.map(p=>p===l?a.Children.count(u)>1?a.Children.only(null):a.isValidElement(u)?u.props.children:null:p);return x.jsx(t,{...c,ref:r,children:a.isValidElement(u)?a.cloneElement(u,void 0,d):null})}return x.jsx(t,{...c,ref:r,children:i})});return n.displayName=`${e}.Slot`,n}function Wc(e){const t=a.forwardRef((n,o)=>{const{children:r,...i}=n;if(a.isValidElement(r)){const c=Hc(r),s=Vc(i,r.props);return r.type!==a.Fragment&&(s.ref=o?_e(o,c):c),a.cloneElement(r,s)}return a.Children.count(r)>1?a.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var $c=Symbol("radix.slottable");function Bc(e){return a.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===$c}function Vc(e,t){const n={...t};for(const o in t){const r=e[o],i=t[o];/^on[A-Z]/.test(o)?r&&i?n[o]=(...s)=>{const l=i(...s);return r(...s),l}:r&&(n[o]=r):o==="style"?n[o]={...r,...i}:o==="className"&&(n[o]=[r,i].filter(Boolean).join(" "))}return{...e,...n}}function Hc(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var ko=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),Uc="VisuallyHidden",jo=a.forwardRef((e,t)=>x.jsx(M.span,{...e,ref:t,style:{...ko,...e.style}}));jo.displayName=Uc;var _a=jo,zc=[" ","Enter","ArrowUp","ArrowDown"],Kc=[" ","Enter"],Ce="Select",[gt,vt,Yc]=Pr(Ce),[ke]=Ve(Ce,[Yc,Ao]),yt=Ao(),[Xc,me]=ke(Ce),[Gc,qc]=ke(Ce),Fo=e=>{const{__scopeSelect:t,children:n,open:o,defaultOpen:r,onOpenChange:i,value:c,defaultValue:s,onValueChange:l,dir:u,name:d,autoComplete:p,disabled:h,required:m,form:w}=e,f=yt(t),[g,y]=a.useState(null),[v,S]=a.useState(null),[b,C]=a.useState(!1),R=Br(u),[E,O]=et({prop:o,defaultProp:r??!1,onChange:i,caller:Ce}),[_,I]=et({prop:c,defaultProp:s,onChange:l,caller:Ce}),j=a.useRef(null),F=g?w||!!g.closest("form"):!0,[L,N]=a.useState(new Set),V=Array.from(L).map(T=>T.props.value).join(";");return x.jsx(Mc,{...f,children:x.jsxs(Xc,{required:m,scope:t,trigger:g,onTriggerChange:y,valueNode:v,onValueNodeChange:S,valueNodeHasChildren:b,onValueNodeHasChildrenChange:C,contentId:Te(),value:_,onValueChange:I,open:E,onOpenChange:O,dir:R,triggerPointerDownPosRef:j,disabled:h,children:[x.jsx(gt.Provider,{scope:t,children:x.jsx(Gc,{scope:e.__scopeSelect,onNativeOptionAdd:a.useCallback(T=>{N(D=>new Set(D).add(T))},[]),onNativeOptionRemove:a.useCallback(T=>{N(D=>{const A=new Set(D);return A.delete(T),A})},[]),children:n})}),F?x.jsxs(ar,{"aria-hidden":!0,required:m,tabIndex:-1,name:d,autoComplete:p,value:_,onChange:T=>I(T.target.value),disabled:h,form:w,children:[_===void 0?x.jsx("option",{value:""}):null,Array.from(L)]},V):null]})})};Fo.displayName=Ce;var Wo="SelectTrigger",$o=a.forwardRef((e,t)=>{const{__scopeSelect:n,disabled:o=!1,...r}=e,i=yt(n),c=me(Wo,n),s=c.disabled||o,l=H(t,c.onTriggerChange),u=vt(n),d=a.useRef("touch"),[p,h,m]=ur(f=>{const g=u().filter(S=>!S.disabled),y=g.find(S=>S.value===c.value),v=fr(g,f,y);v!==void 0&&c.onValueChange(v.value)}),w=f=>{s||(c.onOpenChange(!0),m()),f&&(c.triggerPointerDownPosRef.current={x:Math.round(f.pageX),y:Math.round(f.pageY)})};return x.jsx(Lc,{asChild:!0,...i,children:x.jsx(M.button,{type:"button",role:"combobox","aria-controls":c.contentId,"aria-expanded":c.open,"aria-required":c.required,"aria-autocomplete":"none",dir:c.dir,"data-state":c.open?"open":"closed",disabled:s,"data-disabled":s?"":void 0,"data-placeholder":lr(c.value)?"":void 0,...r,ref:l,onClick:k(r.onClick,f=>{f.currentTarget.focus(),d.current!=="mouse"&&w(f)}),onPointerDown:k(r.onPointerDown,f=>{d.current=f.pointerType;const g=f.target;g.hasPointerCapture(f.pointerId)&&g.releasePointerCapture(f.pointerId),f.button===0&&f.ctrlKey===!1&&f.pointerType==="mouse"&&(w(f),f.preventDefault())}),onKeyDown:k(r.onKeyDown,f=>{const g=p.current!=="";!(f.ctrlKey||f.altKey||f.metaKey)&&f.key.length===1&&h(f.key),!(g&&f.key===" ")&&zc.includes(f.key)&&(w(),f.preventDefault())})})})});$o.displayName=Wo;var Bo="SelectValue",Vo=a.forwardRef((e,t)=>{const{__scopeSelect:n,className:o,style:r,children:i,placeholder:c="",...s}=e,l=me(Bo,n),{onValueNodeHasChildrenChange:u}=l,d=i!==void 0,p=H(t,l.onValueNodeChange);return K(()=>{u(d)},[u,d]),x.jsx(M.span,{...s,ref:p,style:{pointerEvents:"none"},children:lr(l.value)?x.jsx(x.Fragment,{children:c}):i})});Vo.displayName=Bo;var Zc="SelectIcon",Ho=a.forwardRef((e,t)=>{const{__scopeSelect:n,children:o,...r}=e;return x.jsx(M.span,{"aria-hidden":!0,...r,ref:t,children:o||"▼"})});Ho.displayName=Zc;var Qc="SelectPortal",Uo=e=>x.jsx(Ut,{asChild:!0,...e});Uo.displayName=Qc;var Ee="SelectContent",zo=a.forwardRef((e,t)=>{const n=me(Ee,e.__scopeSelect),[o,r]=a.useState();if(K(()=>{r(new DocumentFragment)},[]),!n.open){const i=o;return i?at.createPortal(x.jsx(Ko,{scope:e.__scopeSelect,children:x.jsx(gt.Slot,{scope:e.__scopeSelect,children:x.jsx("div",{children:e.children})})}),i):null}return x.jsx(Yo,{...e,ref:t})});zo.displayName=Ee;var Q=10,[Ko,he]=ke(Ee),Jc="SelectContentImpl",ea=Fc("SelectContent.RemoveScroll"),Yo=a.forwardRef((e,t)=>{const{__scopeSelect:n,position:o="item-aligned",onCloseAutoFocus:r,onEscapeKeyDown:i,onPointerDownOutside:c,side:s,sideOffset:l,align:u,alignOffset:d,arrowPadding:p,collisionBoundary:h,collisionPadding:m,sticky:w,hideWhenDetached:f,avoidCollisions:g,...y}=e,v=me(Ee,n),[S,b]=a.useState(null),[C,R]=a.useState(null),E=H(t,P=>b(P)),[O,_]=a.useState(null),[I,j]=a.useState(null),F=vt(n),[L,N]=a.useState(!1),V=a.useRef(!1);a.useEffect(()=>{if(S)return qn(S)},[S]),Bn();const T=a.useCallback(P=>{const[U,...Y]=F().map(z=>z.ref.current),[$]=Y.slice(-1),B=document.activeElement;for(const z of P)if(z===B||(z?.scrollIntoView({block:"nearest"}),z===U&&C&&(C.scrollTop=0),z===$&&C&&(C.scrollTop=C.scrollHeight),z?.focus(),document.activeElement!==B))return},[F,C]),D=a.useCallback(()=>T([O,S]),[T,O,S]);a.useEffect(()=>{L&&D()},[L,D]);const{onOpenChange:A,triggerPointerDownPosRef:W}=v;a.useEffect(()=>{if(S){let P={x:0,y:0};const U=$=>{P={x:Math.abs(Math.round($.pageX)-(W.current?.x??0)),y:Math.abs(Math.round($.pageY)-(W.current?.y??0))}},Y=$=>{P.x<=10&&P.y<=10?$.preventDefault():S.contains($.target)||A(!1),document.removeEventListener("pointermove",U),W.current=null};return W.current!==null&&(document.addEventListener("pointermove",U),document.addEventListener("pointerup",Y,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",U),document.removeEventListener("pointerup",Y,{capture:!0})}}},[S,A,W]),a.useEffect(()=>{const P=()=>A(!1);return window.addEventListener("blur",P),window.addEventListener("resize",P),()=>{window.removeEventListener("blur",P),window.removeEventListener("resize",P)}},[A]);const[X,ge]=ur(P=>{const U=F().filter(B=>!B.disabled),Y=U.find(B=>B.ref.current===document.activeElement),$=fr(U,P,Y);$&&setTimeout(()=>$.ref.current.focus())}),je=a.useCallback((P,U,Y)=>{const $=!V.current&&!Y;(v.value!==void 0&&v.value===U||$)&&(_(P),$&&(V.current=!0))},[v.value]),Fe=a.useCallback(()=>S?.focus(),[S]),le=a.useCallback((P,U,Y)=>{const $=!V.current&&!Y;(v.value!==void 0&&v.value===U||$)&&j(P)},[v.value]),Re=o==="popper"?jt:Xo,ve=Re===jt?{side:s,sideOffset:l,align:u,alignOffset:d,arrowPadding:p,collisionBoundary:h,collisionPadding:m,sticky:w,hideWhenDetached:f,avoidCollisions:g}:{};return x.jsx(Ko,{scope:n,content:S,viewport:C,onViewportChange:R,itemRefCallback:je,selectedItem:O,onItemLeave:Fe,itemTextRefCallback:le,focusSelectedItem:D,selectedItemText:I,position:o,isPositioned:L,searchRef:X,children:x.jsx(zt,{as:ea,allowPinchZoom:!0,children:x.jsx(Ht,{asChild:!0,trapped:v.open,onMountAutoFocus:P=>{P.preventDefault()},onUnmountAutoFocus:k(r,P=>{v.trigger?.focus({preventScroll:!0}),P.preventDefault()}),children:x.jsx(lt,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:i,onPointerDownOutside:c,onFocusOutside:P=>P.preventDefault(),onDismiss:()=>v.onOpenChange(!1),children:x.jsx(Re,{role:"listbox",id:v.contentId,"data-state":v.open?"open":"closed",dir:v.dir,onContextMenu:P=>P.preventDefault(),...y,...ve,onPlaced:()=>N(!0),ref:E,style:{display:"flex",flexDirection:"column",outline:"none",...y.style},onKeyDown:k(y.onKeyDown,P=>{const U=P.ctrlKey||P.altKey||P.metaKey;if(P.key==="Tab"&&P.preventDefault(),!U&&P.key.length===1&&ge(P.key),["ArrowUp","ArrowDown","Home","End"].includes(P.key)){let $=F().filter(B=>!B.disabled).map(B=>B.ref.current);if(["ArrowUp","End"].includes(P.key)&&($=$.slice().reverse()),["ArrowUp","ArrowDown"].includes(P.key)){const B=P.target,z=$.indexOf(B);$=$.slice(z+1)}setTimeout(()=>T($)),P.preventDefault()}})})})})})})});Yo.displayName=Jc;var ta="SelectItemAlignedPosition",Xo=a.forwardRef((e,t)=>{const{__scopeSelect:n,onPlaced:o,...r}=e,i=me(Ee,n),c=he(Ee,n),[s,l]=a.useState(null),[u,d]=a.useState(null),p=H(t,E=>d(E)),h=vt(n),m=a.useRef(!1),w=a.useRef(!0),{viewport:f,selectedItem:g,selectedItemText:y,focusSelectedItem:v}=c,S=a.useCallback(()=>{if(i.trigger&&i.valueNode&&s&&u&&f&&g&&y){const E=i.trigger.getBoundingClientRect(),O=u.getBoundingClientRect(),_=i.valueNode.getBoundingClientRect(),I=y.getBoundingClientRect();if(i.dir!=="rtl"){const B=I.left-O.left,z=_.left-B,Z=E.left-z,ye=E.width+Z,xt=Math.max(ye,O.width),St=window.innerWidth-Q,bt=an(z,[Q,Math.max(Q,St-xt)]);s.style.minWidth=ye+"px",s.style.left=bt+"px"}else{const B=O.right-I.right,z=window.innerWidth-_.right-B,Z=window.innerWidth-E.right-z,ye=E.width+Z,xt=Math.max(ye,O.width),St=window.innerWidth-Q,bt=an(z,[Q,Math.max(Q,St-xt)]);s.style.minWidth=ye+"px",s.style.right=bt+"px"}const j=h(),F=window.innerHeight-Q*2,L=f.scrollHeight,N=window.getComputedStyle(u),V=parseInt(N.borderTopWidth,10),T=parseInt(N.paddingTop,10),D=parseInt(N.borderBottomWidth,10),A=parseInt(N.paddingBottom,10),W=V+T+L+A+D,X=Math.min(g.offsetHeight*5,W),ge=window.getComputedStyle(f),je=parseInt(ge.paddingTop,10),Fe=parseInt(ge.paddingBottom,10),le=E.top+E.height/2-Q,Re=F-le,ve=g.offsetHeight/2,P=g.offsetTop+ve,U=V+T+P,Y=W-U;if(U<=le){const B=j.length>0&&g===j[j.length-1].ref.current;s.style.bottom="0px";const z=u.clientHeight-f.offsetTop-f.offsetHeight,Z=Math.max(Re,ve+(B?Fe:0)+z+D),ye=U+Z;s.style.height=ye+"px"}else{const B=j.length>0&&g===j[0].ref.current;s.style.top="0px";const Z=Math.max(le,V+f.offsetTop+(B?je:0)+ve)+Y;s.style.height=Z+"px",f.scrollTop=U-le+f.offsetTop}s.style.margin=`${Q}px 0`,s.style.minHeight=X+"px",s.style.maxHeight=F+"px",o?.(),requestAnimationFrame(()=>m.current=!0)}},[h,i.trigger,i.valueNode,s,u,f,g,y,i.dir,o]);K(()=>S(),[S]);const[b,C]=a.useState();K(()=>{u&&C(window.getComputedStyle(u).zIndex)},[u]);const R=a.useCallback(E=>{E&&w.current===!0&&(S(),v?.(),w.current=!1)},[S,v]);return x.jsx(oa,{scope:n,contentWrapper:s,shouldExpandOnScrollRef:m,onScrollButtonChange:R,children:x.jsx("div",{ref:l,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:b},children:x.jsx(M.div,{...r,ref:p,style:{boxSizing:"border-box",maxHeight:"100%",...r.style}})})})});Xo.displayName=ta;var na="SelectPopperPosition",jt=a.forwardRef((e,t)=>{const{__scopeSelect:n,align:o="start",collisionPadding:r=Q,...i}=e,c=yt(n);return x.jsx(kc,{...c,...i,ref:t,align:o,collisionPadding:r,style:{boxSizing:"border-box",...i.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});jt.displayName=na;var[oa,on]=ke(Ee,{}),Ft="SelectViewport",Go=a.forwardRef((e,t)=>{const{__scopeSelect:n,nonce:o,...r}=e,i=he(Ft,n),c=on(Ft,n),s=H(t,i.onViewportChange),l=a.useRef(0);return x.jsxs(x.Fragment,{children:[x.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:o}),x.jsx(gt.Slot,{scope:n,children:x.jsx(M.div,{"data-radix-select-viewport":"",role:"presentation",...r,ref:s,style:{position:"relative",flex:1,overflow:"hidden auto",...r.style},onScroll:k(r.onScroll,u=>{const d=u.currentTarget,{contentWrapper:p,shouldExpandOnScrollRef:h}=c;if(h?.current&&p){const m=Math.abs(l.current-d.scrollTop);if(m>0){const w=window.innerHeight-Q*2,f=parseFloat(p.style.minHeight),g=parseFloat(p.style.height),y=Math.max(f,g);if(y0?b:0,p.style.justifyContent="flex-end")}}}l.current=d.scrollTop})})})]})});Go.displayName=Ft;var qo="SelectGroup",[ra,ia]=ke(qo),sa=a.forwardRef((e,t)=>{const{__scopeSelect:n,...o}=e,r=Te();return x.jsx(ra,{scope:n,id:r,children:x.jsx(M.div,{role:"group","aria-labelledby":r,...o,ref:t})})});sa.displayName=qo;var Zo="SelectLabel",Qo=a.forwardRef((e,t)=>{const{__scopeSelect:n,...o}=e,r=ia(Zo,n);return x.jsx(M.div,{id:r.id,...o,ref:t})});Qo.displayName=Zo;var ct="SelectItem",[ca,Jo]=ke(ct),er=a.forwardRef((e,t)=>{const{__scopeSelect:n,value:o,disabled:r=!1,textValue:i,...c}=e,s=me(ct,n),l=he(ct,n),u=s.value===o,[d,p]=a.useState(i??""),[h,m]=a.useState(!1),w=H(t,v=>l.itemRefCallback?.(v,o,r)),f=Te(),g=a.useRef("touch"),y=()=>{r||(s.onValueChange(o),s.onOpenChange(!1))};if(o==="")throw new Error("A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return x.jsx(ca,{scope:n,value:o,disabled:r,textId:f,isSelected:u,onItemTextChange:a.useCallback(v=>{p(S=>S||(v?.textContent??"").trim())},[]),children:x.jsx(gt.ItemSlot,{scope:n,value:o,disabled:r,textValue:d,children:x.jsx(M.div,{role:"option","aria-labelledby":f,"data-highlighted":h?"":void 0,"aria-selected":u&&h,"data-state":u?"checked":"unchecked","aria-disabled":r||void 0,"data-disabled":r?"":void 0,tabIndex:r?void 0:-1,...c,ref:w,onFocus:k(c.onFocus,()=>m(!0)),onBlur:k(c.onBlur,()=>m(!1)),onClick:k(c.onClick,()=>{g.current!=="mouse"&&y()}),onPointerUp:k(c.onPointerUp,()=>{g.current==="mouse"&&y()}),onPointerDown:k(c.onPointerDown,v=>{g.current=v.pointerType}),onPointerMove:k(c.onPointerMove,v=>{g.current=v.pointerType,r?l.onItemLeave?.():g.current==="mouse"&&v.currentTarget.focus({preventScroll:!0})}),onPointerLeave:k(c.onPointerLeave,v=>{v.currentTarget===document.activeElement&&l.onItemLeave?.()}),onKeyDown:k(c.onKeyDown,v=>{l.searchRef?.current!==""&&v.key===" "||(Kc.includes(v.key)&&y(),v.key===" "&&v.preventDefault())})})})})});er.displayName=ct;var We="SelectItemText",tr=a.forwardRef((e,t)=>{const{__scopeSelect:n,className:o,style:r,...i}=e,c=me(We,n),s=he(We,n),l=Jo(We,n),u=qc(We,n),[d,p]=a.useState(null),h=H(t,y=>p(y),l.onItemTextChange,y=>s.itemTextRefCallback?.(y,l.value,l.disabled)),m=d?.textContent,w=a.useMemo(()=>x.jsx("option",{value:l.value,disabled:l.disabled,children:m},l.value),[l.disabled,l.value,m]),{onNativeOptionAdd:f,onNativeOptionRemove:g}=u;return K(()=>(f(w),()=>g(w)),[f,g,w]),x.jsxs(x.Fragment,{children:[x.jsx(M.span,{id:l.textId,...i,ref:h}),l.isSelected&&c.valueNode&&!c.valueNodeHasChildren?at.createPortal(i.children,c.valueNode):null]})});tr.displayName=We;var nr="SelectItemIndicator",or=a.forwardRef((e,t)=>{const{__scopeSelect:n,...o}=e;return Jo(nr,n).isSelected?x.jsx(M.span,{"aria-hidden":!0,...o,ref:t}):null});or.displayName=nr;var Wt="SelectScrollUpButton",rr=a.forwardRef((e,t)=>{const n=he(Wt,e.__scopeSelect),o=on(Wt,e.__scopeSelect),[r,i]=a.useState(!1),c=H(t,o.onScrollButtonChange);return K(()=>{if(n.viewport&&n.isPositioned){let s=function(){const u=l.scrollTop>0;i(u)};const l=n.viewport;return s(),l.addEventListener("scroll",s),()=>l.removeEventListener("scroll",s)}},[n.viewport,n.isPositioned]),r?x.jsx(sr,{...e,ref:c,onAutoScroll:()=>{const{viewport:s,selectedItem:l}=n;s&&l&&(s.scrollTop=s.scrollTop-l.offsetHeight)}}):null});rr.displayName=Wt;var $t="SelectScrollDownButton",ir=a.forwardRef((e,t)=>{const n=he($t,e.__scopeSelect),o=on($t,e.__scopeSelect),[r,i]=a.useState(!1),c=H(t,o.onScrollButtonChange);return K(()=>{if(n.viewport&&n.isPositioned){let s=function(){const u=l.scrollHeight-l.clientHeight,d=Math.ceil(l.scrollTop)l.removeEventListener("scroll",s)}},[n.viewport,n.isPositioned]),r?x.jsx(sr,{...e,ref:c,onAutoScroll:()=>{const{viewport:s,selectedItem:l}=n;s&&l&&(s.scrollTop=s.scrollTop+l.offsetHeight)}}):null});ir.displayName=$t;var sr=a.forwardRef((e,t)=>{const{__scopeSelect:n,onAutoScroll:o,...r}=e,i=he("SelectScrollButton",n),c=a.useRef(null),s=vt(n),l=a.useCallback(()=>{c.current!==null&&(window.clearInterval(c.current),c.current=null)},[]);return a.useEffect(()=>()=>l(),[l]),K(()=>{s().find(d=>d.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:"nearest"})},[s]),x.jsx(M.div,{"aria-hidden":!0,...r,ref:t,style:{flexShrink:0,...r.style},onPointerDown:k(r.onPointerDown,()=>{c.current===null&&(c.current=window.setInterval(o,50))}),onPointerMove:k(r.onPointerMove,()=>{i.onItemLeave?.(),c.current===null&&(c.current=window.setInterval(o,50))}),onPointerLeave:k(r.onPointerLeave,()=>{l()})})}),aa="SelectSeparator",cr=a.forwardRef((e,t)=>{const{__scopeSelect:n,...o}=e;return x.jsx(M.div,{"aria-hidden":!0,...o,ref:t})});cr.displayName=aa;var Bt="SelectArrow",la=a.forwardRef((e,t)=>{const{__scopeSelect:n,...o}=e,r=yt(n),i=me(Bt,n),c=he(Bt,n);return i.open&&c.position==="popper"?x.jsx(jc,{...r,...o,ref:t}):null});la.displayName=Bt;var ua="SelectBubbleInput",ar=a.forwardRef(({__scopeSelect:e,value:t,...n},o)=>{const r=a.useRef(null),i=H(o,r),c=Mn(t);return a.useEffect(()=>{const s=r.current;if(!s)return;const l=window.HTMLSelectElement.prototype,d=Object.getOwnPropertyDescriptor(l,"value").set;if(c!==t&&d){const p=new Event("change",{bubbles:!0});d.call(s,t),s.dispatchEvent(p)}},[c,t]),x.jsx(M.select,{...n,style:{...ko,...n.style},ref:i,defaultValue:t})});ar.displayName=ua;function lr(e){return e===""||e===void 0}function ur(e){const t=xe(e),n=a.useRef(""),o=a.useRef(0),r=a.useCallback(c=>{const s=n.current+c;t(s),(function l(u){n.current=u,window.clearTimeout(o.current),u!==""&&(o.current=window.setTimeout(()=>l(""),1e3))})(s)},[t]),i=a.useCallback(()=>{n.current="",window.clearTimeout(o.current)},[]);return a.useEffect(()=>()=>window.clearTimeout(o.current),[]),[n,r,i]}function fr(e,t,n){const r=t.length>1&&Array.from(t).every(u=>u===t[0])?t[0]:t,i=n?e.indexOf(n):-1;let c=fa(e,Math.max(i,0));r.length===1&&(c=c.filter(u=>u!==n));const l=c.find(u=>u.textValue.toLowerCase().startsWith(r.toLowerCase()));return l!==n?l:void 0}function fa(e,t){return e.map((n,o)=>e[(t+o)%e.length])}var Ma=Fo,La=$o,ka=Vo,ja=Ho,Fa=Uo,Wa=zo,$a=Go,Ba=Qo,Va=er,Ha=tr,Ua=or,za=rr,Ka=ir,Ya=cr,wt="Checkbox",[da]=Ve(wt),[pa,rn]=da(wt);function ma(e){const{__scopeCheckbox:t,checked:n,children:o,defaultChecked:r,disabled:i,form:c,name:s,onCheckedChange:l,required:u,value:d="on",internal_do_not_use_render:p}=e,[h,m]=et({prop:n,defaultProp:r??!1,onChange:l,caller:wt}),[w,f]=a.useState(null),[g,y]=a.useState(null),v=a.useRef(!1),S=w?!!c||!!w.closest("form"):!0,b={checked:h,disabled:i,setChecked:m,control:w,setControl:f,name:s,form:c,value:d,hasConsumerStoppedPropagationRef:v,required:u,defaultChecked:fe(r)?!1:r,isFormControl:S,bubbleInput:g,setBubbleInput:y};return x.jsx(pa,{scope:t,...b,children:va(p)?p(b):o})}var dr="CheckboxTrigger",pr=a.forwardRef(({__scopeCheckbox:e,onKeyDown:t,onClick:n,...o},r)=>{const{control:i,value:c,disabled:s,checked:l,required:u,setControl:d,setChecked:p,hasConsumerStoppedPropagationRef:h,isFormControl:m,bubbleInput:w}=rn(dr,e),f=H(r,d),g=a.useRef(l);return a.useEffect(()=>{const y=i?.form;if(y){const v=()=>p(g.current);return y.addEventListener("reset",v),()=>y.removeEventListener("reset",v)}},[i,p]),x.jsx(M.button,{type:"button",role:"checkbox","aria-checked":fe(l)?"mixed":l,"aria-required":u,"data-state":vr(l),"data-disabled":s?"":void 0,disabled:s,value:c,...o,ref:f,onKeyDown:k(t,y=>{y.key==="Enter"&&y.preventDefault()}),onClick:k(n,y=>{p(v=>fe(v)?!0:!v),w&&m&&(h.current=y.isPropagationStopped(),h.current||y.stopPropagation())})})});pr.displayName=dr;var ha=a.forwardRef((e,t)=>{const{__scopeCheckbox:n,name:o,checked:r,defaultChecked:i,required:c,disabled:s,value:l,onCheckedChange:u,form:d,...p}=e;return x.jsx(ma,{__scopeCheckbox:n,checked:r,defaultChecked:i,disabled:s,required:c,onCheckedChange:u,name:o,form:d,value:l,internal_do_not_use_render:({isFormControl:h})=>x.jsxs(x.Fragment,{children:[x.jsx(pr,{...p,ref:t,__scopeCheckbox:n}),h&&x.jsx(gr,{__scopeCheckbox:n})]})})});ha.displayName=wt;var mr="CheckboxIndicator",ga=a.forwardRef((e,t)=>{const{__scopeCheckbox:n,forceMount:o,...r}=e,i=rn(mr,n);return x.jsx(He,{present:o||fe(i.checked)||i.checked===!0,children:x.jsx(M.span,{"data-state":vr(i.checked),"data-disabled":i.disabled?"":void 0,...r,ref:t,style:{pointerEvents:"none",...e.style}})})});ga.displayName=mr;var hr="CheckboxBubbleInput",gr=a.forwardRef(({__scopeCheckbox:e,...t},n)=>{const{control:o,hasConsumerStoppedPropagationRef:r,checked:i,defaultChecked:c,required:s,disabled:l,name:u,value:d,form:p,bubbleInput:h,setBubbleInput:m}=rn(hr,e),w=H(n,m),f=Mn(i),g=Ln(o);a.useEffect(()=>{const v=h;if(!v)return;const S=window.HTMLInputElement.prototype,C=Object.getOwnPropertyDescriptor(S,"checked").set,R=!r.current;if(f!==i&&C){const E=new Event("click",{bubbles:R});v.indeterminate=fe(i),C.call(v,fe(i)?!1:i),v.dispatchEvent(E)}},[h,f,i,r]);const y=a.useRef(fe(i)?!1:i);return x.jsx(M.input,{type:"checkbox","aria-hidden":!0,defaultChecked:c??y.current,required:s,disabled:l,name:u,value:d,form:p,...t,tabIndex:-1,ref:w,style:{...t.style,...g,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});gr.displayName=hr;function va(e){return typeof e=="function"}function fe(e){return e==="indeterminate"}function vr(e){return fe(e)?"indeterminate":e?"checked":"unchecked"}export{ha as $,Ha as A,Ya as B,Ta as C,Ia as D,Ma as E,ka as F,_e as G,Ut as H,ja as I,Ao as J,qn as K,Ba as L,zt as M,Bn as N,Oa as O,M as P,Ht as Q,xa as R,wa as S,Na as T,lt as U,$a as V,Ea as W,kc as X,Mc as Y,Lc as Z,jc as _,Pr as a,ga as a0,kr as a1,_a as a2,ba as a3,jo as a4,Sa as a5,k as b,Ve as c,H as d,Br as e,et as f,xe as g,He as h,K as i,an as j,_n as k,Mn as l,Ln as m,Aa as n,Da as o,Ra as p,Pa as q,Ca as r,La as s,za as t,Te as u,Ka as v,Fa as w,Wa as x,Va as y,Ua as z}; diff --git a/webui/dist/assets/uppy-DSH7n_-V.js b/webui/dist/assets/uppy-DSH7n_-V.js new file mode 100644 index 00000000..30adbfe5 --- /dev/null +++ b/webui/dist/assets/uppy-DSH7n_-V.js @@ -0,0 +1,11 @@ +import{ag as us,ah as hs}from"./charts-Dhri-zxi.js";import{g as ce}from"./react-vendor-Dtc2IqVY.js";import"./router-CWhjJi2n.js";import"./radix-extra-Cw1azsjZ.js";const cs=/^data:([^/]+\/[^,;]+(?:[^,]*?))(;base64)?,([\s\S]*)$/;function ps(i,e,t){const s=cs.exec(i),n=e.mimeType??s?.[1]??"plain/text";let r;if(s?.[2]!=null){const a=atob(decodeURIComponent(s[3])),o=new Uint8Array(a.length);for(let d=0;d(e+=`-${ms(t)}`,"/"))+e}function gs(i,e){let t=e||"uppy";return typeof i.name=="string"&&(t+=`-${At(i.name.toLowerCase())}`),i.type!==void 0&&(t+=`-${i.type}`),i.meta&&typeof i.meta.relativePath=="string"&&(t+=`-${At(i.meta.relativePath.toLowerCase())}`),i.data?.size!==void 0&&(t+=`-${i.data.size}`),i.data.lastModified!==void 0&&(t+=`-${i.data.lastModified}`),t}function ys(i){return!i.isRemote||!i.remote?!1:new Set(["box","dropbox","drive","facebook","unsplash"]).has(i.remote.provider)}function bs(i,e){if(ys(i))return i.id;const t=Fi(i);return gs({...i,type:t},e)}const re=Array.from;function vs(i){const e=re(i.files);return Promise.resolve(e)}function Si(i,e,t,{onSuccess:s}){i.readEntries(n=>{const r=[...e,...n];n.length?queueMicrotask(()=>{Si(i,r,t,{onSuccess:s})}):s(r)},n=>{t(n),s(e)})}function Pi(i,e){return i==null?i:{kind:i.isFile?"file":i.isDirectory?"directory":void 0,name:i.name,getFile(){return new Promise((t,s)=>i.file(t,s))},async*values(){const t=i.createReader();yield*await new Promise(n=>{Si(t,[],e,{onSuccess:r=>n(r.map(a=>Pi(a,e)))})})},isSameEntry:void 0}}async function*Ti(i,e,t=void 0){const s=()=>`${e}/${i.name}`;if(i.kind==="file"){const n=await i.getFile();n!=null?(n.relativePath=e?s():null,yield n):t!=null&&(yield t)}else if(i.kind==="directory")for await(const n of i.values())yield*Ti(n,e?s():i.name);else t!=null&&(yield t)}async function*ws(i,e){const t=await Promise.all(Array.from(i.items,async s=>{let n;return n??=Pi(typeof s.getAsEntry=="function"?s.getAsEntry():s.webkitGetAsEntry(),e),{fileSystemHandle:n,lastResortFile:s.getAsFile()}}));for(const{lastResortFile:s,fileSystemHandle:n}of t)if(n!=null)try{yield*Ti(n,"",s)}catch(r){s!=null?yield s:e(r)}else s!=null&&(yield s)}async function _s(i,e){const t=e?.logDropError??Function.prototype;try{const s=[];for await(const n of ws(i,t))s.push(n);return s}catch{return vs(i)}}function Fs(i){for(;i&&!i.dir;)i=i.parentNode;return i?.dir}function Ie(i){return i<10?`0${i}`:i.toString()}function Ce(){const i=new Date,e=Ie(i.getHours()),t=Ie(i.getMinutes()),s=Ie(i.getSeconds());return`${e}:${t}:${s}`}function Ss(){if(typeof window>"u")return!1;const i=document.body;return!(i==null||window==null||!("draggable"in i)||!("ondragstart"in i)||!("ondrop"in i)||!("FormData"in window)||!("FileReader"in window))}function Ut(i){return i.startsWith("blob:")}function Ot(i){return i?/^[^/]+\/(jpe?g|gif|png|svg|svg\+xml|bmp|webp|avif)$/.test(i):!1}function Ps(i){const e=Math.floor(i/3600)%24,t=Math.floor(i/60)%60,s=Math.floor(i%60);return{hours:e,minutes:t,seconds:s}}function Ts(i){const e=Ps(i),t=e.hours===0?"":`${e.hours}h`,s=e.minutes===0?"":`${e.hours===0?e.minutes:` ${e.minutes.toString(10).padStart(2,"0")}`}m`,n=e.hours!==0?"":`${e.minutes===0?e.seconds:` ${e.seconds.toString(10).padStart(2,"0")}`}s`;return`${t}${s}${n}`}function Cs(i,e,t){const s=[];return i.forEach(n=>typeof n!="string"?s.push(n):e[Symbol.split](n).forEach((r,a,o)=>{r!==""&&s.push(r),a{throw new Error(`missing string: ${i}`)};class Ci{locale;constructor(e,{onMissingKey:t=Es}={}){this.locale={strings:{},pluralize(s){return s===1?0:1}},Array.isArray(e)?e.forEach(this.#t,this):this.#t(e),this.#e=t}#e;#t(e){if(!e?.strings)return;const t=this.locale;Object.assign(this.locale,{strings:{...t.strings,...e.strings},pluralize:e.pluralize||t.pluralize})}translate(e,t){return this.translateArray(e,t).join("")}translateArray(e,t){let s=this.locale.strings[e];if(s==null&&(this.#e(e),s=e),typeof s=="object"){if(t&&typeof t.smart_count<"u"){const r=this.locale.pluralize(t.smart_count);return Nt(s[r],t)}throw new Error("Attempted to use a string with plural forms, but no value was given for %{smart_count}")}if(typeof s!="string")throw new Error("string was not a string");return Nt(s,t)}}const Be="...";function Ei(i,e){if(e===0)return"";if(i.length<=e)return i;if(e<=Be.length+1)return`${i.slice(0,e-1)}…`;const t=e-Be.length,s=Math.ceil(t/2),n=Math.floor(t/2);return i.slice(0,s)+Be+i.slice(-n)}var pe,S,ki,K,Dt,Ai,Ui,Oi,at,Qe,Je,oe={},Ni=[],ks=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,fe=Array.isArray;function H(i,e){for(var t in e)i[t]=e[t];return i}function ot(i){i&&i.parentNode&&i.parentNode.removeChild(i)}function lt(i,e,t){var s,n,r,a={};for(r in e)r=="key"?s=e[r]:r=="ref"?n=e[r]:a[r]=e[r];if(arguments.length>2&&(a.children=arguments.length>3?pe.call(arguments,2):t),typeof i=="function"&&i.defaultProps!=null)for(r in i.defaultProps)a[r]===void 0&&(a[r]=i.defaultProps[r]);return ae(i,a,s,n,null)}function ae(i,e,t,s,n){var r={type:i,props:e,key:t,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:n??++ki,__i:-1,__u:0};return n==null&&S.vnode!=null&&S.vnode(r),r}function As(){return{current:null}}function V(i){return i.children}function q(i,e){this.props=i,this.context=e}function Z(i,e){if(e==null)return i.__?Z(i.__,i.__i+1):null;for(var t;eo&&K.sort(Ui),i=K.shift(),o=K.length,i.__d&&(t=void 0,s=void 0,n=(s=(e=i).__v).__e,r=[],a=[],e.__P&&((t=H({},s)).__v=s.__v+1,S.vnode&&S.vnode(t),dt(e.__P,t,s,e.__n,e.__P.namespaceURI,32&s.__u?[n]:null,r,n??Z(s),!!(32&s.__u),a),t.__v=s.__v,t.__.__k[t.__i]=t,Mi(r,t,a),s.__e=s.__=null,t.__e!=n&&Di(t)));ke.__r=0}function Ii(i,e,t,s,n,r,a,o,d,u,c){var h,p,f,m,b,v,g,y=s&&s.__k||Ni,w=e.length;for(d=Us(t,e,y,d,w),h=0;h0?ae(a.type,a.props,a.key,a.ref?a.ref:null,a.__v):a).__=i,a.__b=i.__b+1,o=null,(u=a.__i=Os(a,t,d,h))!=-1&&(h--,(o=t[u])&&(o.__u|=2)),o==null||o.__v==null?(u==-1&&(n>c?p--:nd?p--:p++,a.__u|=4))):i.__k[r]=null;if(h)for(r=0;r(c?1:0)){for(n=t-1,r=t+1;n>=0||r=0?n--:r++])!=null&&(2&u.__u)==0&&o==u.key&&d==u.type)return a}return-1}function Bt(i,e,t){e[0]=="-"?i.setProperty(e,t??""):i[e]=t==null?"":typeof t!="number"||ks.test(e)?t:t+"px"}function ge(i,e,t,s,n){var r,a;e:if(e=="style")if(typeof t=="string")i.style.cssText=t;else{if(typeof s=="string"&&(i.style.cssText=s=""),s)for(e in s)t&&e in t||Bt(i.style,e,"");if(t)for(e in t)s&&t[e]==s[e]||Bt(i.style,e,t[e])}else if(e[0]=="o"&&e[1]=="n")r=e!=(e=e.replace(Oi,"$1")),a=e.toLowerCase(),e=a in i||e=="onFocusOut"||e=="onFocusIn"?a.slice(2):e.slice(2),i.l||(i.l={}),i.l[e+r]=t,t?s?t.u=s.u:(t.u=at,i.addEventListener(e,r?Je:Qe,r)):i.removeEventListener(e,r?Je:Qe,r);else{if(n=="http://www.w3.org/2000/svg")e=e.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(e!="width"&&e!="height"&&e!="href"&&e!="list"&&e!="form"&&e!="tabIndex"&&e!="download"&&e!="rowSpan"&&e!="colSpan"&&e!="role"&&e!="popover"&&e in i)try{i[e]=t??"";break e}catch{}typeof t=="function"||(t==null||t===!1&&e[4]!="-"?i.removeAttribute(e):i.setAttribute(e,e=="popover"&&t==1?"":t))}}function Mt(i){return function(e){if(this.l){var t=this.l[e.type+i];if(e.t==null)e.t=at++;else if(e.t0?i:fe(i)?i.map(xi):H({},i)}function Ns(i,e,t,s,n,r,a,o,d){var u,c,h,p,f,m,b,v=t.props,g=e.props,y=e.type;if(y=="svg"?n="http://www.w3.org/2000/svg":y=="math"?n="http://www.w3.org/1998/Math/MathML":n||(n="http://www.w3.org/1999/xhtml"),r!=null){for(u=0;u2&&(o.children=arguments.length>3?pe.call(arguments,2):t),ae(i.type,o,s||i.key,n||i.ref,null)}pe=Ni.slice,S={__e:function(i,e,t,s){for(var n,r,a;e=e.__;)if((n=e.__c)&&!n.__)try{if((r=n.constructor)&&r.getDerivedStateFromError!=null&&(n.setState(r.getDerivedStateFromError(i)),a=n.__d),n.componentDidCatch!=null&&(n.componentDidCatch(i,s||{}),a=n.__d),a)return n.__E=n}catch(o){i=o}throw i}},ki=0,q.prototype.setState=function(i,e){var t;t=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=H({},this.state),typeof i=="function"&&(i=i(H({},t),this.props)),i&&H(t,i),i!=null&&this.__v&&(e&&this._sb.push(e),It(this))},q.prototype.forceUpdate=function(i){this.__v&&(this.__e=!0,i&&this.__h.push(i),It(this))},q.prototype.render=V,K=[],Ai=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Ui=function(i,e){return i.__v.__b-e.__v.__b},ke.__r=0,Oi=/(PointerCapture)$|Capture$/i,at=0,Qe=Mt(!1),Je=Mt(!0);var Is=0;function l(i,e,t,s,n,r){e||(e={});var a,o,d=e;if("ref"in d)for(o in d={},e)o=="ref"?a=e[o]:d[o]=e[o];var u={type:i,props:d,key:t,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--Is,__i:-1,__u:0,__source:n,__self:r};if(typeof i=="function"&&(a=i.defaultProps))for(o in a)d[o]===void 0&&(d[o]=a[o]);return S.vnode&&S.vnode(u),u}var le,C,Me,Rt,de=0,zi=[],E=S,Lt=E.__b,zt=E.__r,$t=E.diffed,Ht=E.__c,qt=E.unmount,jt=E.__;function ht(i,e){E.__h&&E.__h(C,i,de||e),de=0;var t=C.__H||(C.__H={__:[],__h:[]});return i>=t.__.length&&t.__.push({}),t.__[i]}function ee(i){return de=1,Bs(Hi,i)}function Bs(i,e,t){var s=ht(le++,2);if(s.t=i,!s.__c&&(s.__=[Hi(void 0,e),function(o){var d=s.__N?s.__N[0]:s.__[0],u=s.t(d,o);d!==u&&(s.__N=[u,s.__[1]],s.__c.setState({}))}],s.__c=C,!C.__f)){var n=function(o,d,u){if(!s.__c.__H)return!0;var c=s.__c.__H.__.filter(function(p){return!!p.__c});if(c.every(function(p){return!p.__N}))return!r||r.call(this,o,d,u);var h=s.__c.props!==o;return c.forEach(function(p){if(p.__N){var f=p.__[0];p.__=p.__N,p.__N=void 0,f!==p.__[0]&&(h=!0)}}),r&&r.call(this,o,d,u)||h};C.__f=!0;var r=C.shouldComponentUpdate,a=C.componentWillUpdate;C.componentWillUpdate=function(o,d,u){if(this.__e){var c=r;r=void 0,n(o,d,u),r=c}a&&a.call(this,o,d,u)},C.shouldComponentUpdate=n}return s.__N||s.__}function Ae(i,e){var t=ht(le++,3);!E.__s&&$i(t.__H,e)&&(t.__=i,t.u=e,C.__H.__h.push(t))}function J(i){return de=5,ct(function(){return{current:i}},[])}function ct(i,e){var t=ht(le++,7);return $i(t.__H,e)&&(t.__=i(),t.__H=e,t.__h=i),t.__}function Ue(i,e){return de=8,ct(function(){return i},e)}function Ms(){for(var i;i=zi.shift();)if(i.__P&&i.__H)try{i.__H.__h.forEach(Ee),i.__H.__h.forEach(et),i.__H.__h=[]}catch(e){i.__H.__h=[],E.__e(e,i.__v)}}E.__b=function(i){C=null,Lt&&Lt(i)},E.__=function(i,e){i&&e.__k&&e.__k.__m&&(i.__m=e.__k.__m),jt&&jt(i,e)},E.__r=function(i){zt&&zt(i),le=0;var e=(C=i.__c).__H;e&&(Me===C?(e.__h=[],C.__h=[],e.__.forEach(function(t){t.__N&&(t.__=t.__N),t.u=t.__N=void 0})):(e.__h.forEach(Ee),e.__h.forEach(et),e.__h=[],le=0)),Me=C},E.diffed=function(i){$t&&$t(i);var e=i.__c;e&&e.__H&&(e.__H.__h.length&&(zi.push(e)!==1&&Rt===E.requestAnimationFrame||((Rt=E.requestAnimationFrame)||xs)(Ms)),e.__H.__.forEach(function(t){t.u&&(t.__H=t.u),t.u=void 0})),Me=C=null},E.__c=function(i,e){e.some(function(t){try{t.__h.forEach(Ee),t.__h=t.__h.filter(function(s){return!s.__||et(s)})}catch(s){e.some(function(n){n.__h&&(n.__h=[])}),e=[],E.__e(s,t.__v)}}),Ht&&Ht(i,e)},E.unmount=function(i){qt&&qt(i);var e,t=i.__c;t&&t.__H&&(t.__H.__.forEach(function(s){try{Ee(s)}catch(n){e=n}}),t.__H=void 0,e&&E.__e(e,t.__v))};var Vt=typeof requestAnimationFrame=="function";function xs(i){var e,t=function(){clearTimeout(s),Vt&&cancelAnimationFrame(e),setTimeout(i)},s=setTimeout(t,35);Vt&&(e=requestAnimationFrame(t))}function Ee(i){var e=C,t=i.__c;typeof t=="function"&&(i.__c=void 0,t()),C=e}function et(i){var e=C;i.__c=i.__(),C=e}function $i(i,e){return!i||i.length!==e.length||e.some(function(t,s){return t!==i[s]})}function Hi(i,e){return typeof e=="function"?e(i):e}const Rs={position:"relative",width:"100%",minHeight:"100%"},Ls={position:"absolute",top:0,left:0,width:"100%",overflow:"visible"};function zs({data:i,rowHeight:e,renderRow:t,overscanCount:s=10,padding:n=4,...r}){const a=J(null),[o,d]=ee(0),[u,c]=ee(0);Ae(()=>{function y(){a.current!=null&&u!==a.current.offsetHeight&&c(a.current.offsetHeight)}return y(),window.addEventListener("resize",y),()=>{window.removeEventListener("resize",y)}},[u]);const h=Ue(()=>{a.current&&d(a.current.scrollTop)},[]);let p=Math.floor(o/e),f=Math.floor(u/e);s&&(p=Math.max(0,p-p%s),f+=s);const m=p+f+n,b=i.slice(p,m),v={...Rs,height:i.length*e},g={...Ls,top:p*e};return l("div",{onScroll:h,ref:a,...r,children:l("div",{role:"presentation",style:v,children:l("div",{role:"presentation",style:g,children:b.map(t)})})})}class $s{uppy;opts;id;defaultLocale;i18n;i18nArray;type;VERSION;constructor(e,t){this.uppy=e,this.opts=t??{}}getPluginState(){const{plugins:e}=this.uppy.getState();return e?.[this.id]||{}}setPluginState(e){const{plugins:t}=this.uppy.getState();this.uppy.setState({plugins:{...t,[this.id]:{...t[this.id],...e}}})}setOptions(e){this.opts={...this.opts,...e},this.setPluginState(void 0),this.i18nInit()}i18nInit(){const e=new Ci([this.defaultLocale,this.uppy.locale,this.opts.locale]);this.i18n=e.translate.bind(e),this.i18nArray=e.translateArray.bind(e),this.setPluginState(void 0)}addTarget(e){throw new Error("Extend the addTarget method to add your plugin to another plugin's target")}install(){}uninstall(){}update(e){}afterUpdate(){}}const Hs={debug:()=>{},warn:()=>{},error:(...i)=>console.error(`[Uppy] [${Ce()}]`,...i)},qs={debug:(...i)=>console.debug(`[Uppy] [${Ce()}]`,...i),warn:(...i)=>console.warn(`[Uppy] [${Ce()}]`,...i),error:(...i)=>console.error(`[Uppy] [${Ce()}]`,...i)};var xe,Wt;function js(){return Wt||(Wt=1,xe=function(e){if(typeof e!="number"||Number.isNaN(e))throw new TypeError(`Expected a number, got ${typeof e}`);const t=e<0;let s=Math.abs(e);if(t&&(s=-s),s===0)return"0 B";const n=["B","KB","MB","GB","TB","PB","EB","ZB","YB"],r=Math.min(Math.floor(Math.log(s)/Math.log(1024)),n.length-1),a=Number(s/1024**r),o=n[r];return`${a>=10||a%1===0?Math.round(a):a.toFixed(1)} ${o}`}),xe}var Vs=js();const X=ce(Vs);var Re,Gt;function Ws(){if(Gt)return Re;Gt=1;function i(e,t){this.text=e=e||"",this.hasWild=~e.indexOf("*"),this.separator=t,this.parts=e.split(t)}return i.prototype.match=function(e){var t=!0,s=this.parts,n,r=s.length,a;if(typeof e=="string"||e instanceof String)if(!this.hasWild&&this.text!=e)t=!1;else{for(a=(e||"").split(this.separator),n=0;t&&n=2}return s?n(s.split(";")[0]):n},Le}var Ks=Gs();const Xs=ce(Ks),Ys={maxFileSize:null,minFileSize:null,maxTotalFileSize:null,maxNumberOfFiles:null,minNumberOfFiles:null,allowedFileTypes:null,requiredMetaFields:[]};class I extends Error{isUserFacing;file;constructor(e,t){super(e),this.isUserFacing=t?.isUserFacing??!0,t?.file&&(this.file=t.file)}isRestriction=!0}class Qs{getI18n;getOpts;constructor(e,t){this.getI18n=t,this.getOpts=()=>{const s=e();if(s.restrictions?.allowedFileTypes!=null&&!Array.isArray(s.restrictions.allowedFileTypes))throw new TypeError("`restrictions.allowedFileTypes` must be an array");return s}}validateAggregateRestrictions(e,t){const{maxTotalFileSize:s,maxNumberOfFiles:n}=this.getOpts().restrictions;if(n&&e.filter(a=>!a.isGhost).length+t.length>n)throw new I(`${this.getI18n()("youCanOnlyUploadX",{smart_count:n})}`);if(s){const r=[...e,...t].reduce((a,o)=>a+(o.size??0),0);if(r>s)throw new I(this.getI18n()("aggregateExceedsSize",{sizeAllowed:X(s),size:X(r)}))}}validateSingleFile(e){const{maxFileSize:t,minFileSize:s,allowedFileTypes:n}=this.getOpts().restrictions;if(n&&!n.some(a=>a.includes("/")?e.type?Xs(e.type.replace(/;.*?$/,""),a):!1:a[0]==="."&&e.extension?e.extension.toLowerCase()===a.slice(1).toLowerCase():!1)){const a=n.join(", ");throw new I(this.getI18n()("youCanOnlyUploadFileTypes",{types:a}),{file:e})}if(t&&e.size!=null&&e.size>t)throw new I(this.getI18n()("exceedsSize",{size:X(t),file:e.name??this.getI18n()("unnamed")}),{file:e});if(s&&e.size!=null&&e.size{this.validateSingleFile(s)}),this.validateAggregateRestrictions(e,t)}validateMinNumberOfFiles(e){const{minNumberOfFiles:t}=this.getOpts().restrictions;if(t&&Object.keys(e).length(t=s,e||(e=Promise.resolve().then(()=>(e=null,i(...t)))),e)}class ue extends $s{#e;isTargetDOMEl;el;parent;title;getTargetPlugin(e){let t;if(typeof e?.addTarget=="function")t=e,t instanceof ue||console.warn(new Error("The provided plugin is not an instance of UIPlugin. This is an indication of a bug with the way Uppy is bundled.",{cause:{targetPlugin:t,UIPlugin:ue}}));else if(typeof e=="function"){const s=e;this.uppy.iteratePlugins(n=>{n instanceof s&&(t=n)})}return t}mount(e,t){const s=t.id,n=fs(e);if(n){this.isTargetDOMEl=!0;const o=document.createElement("div");return o.classList.add("uppy-Root"),this.#e=Js(d=>{this.uppy.getPlugin(this.id)&&(xt(this.render(d,o),o),this.afterUpdate())}),this.uppy.log(`Installing ${s} to a DOM element '${e}'`),this.opts.replaceTargetContent&&(n.innerHTML=""),xt(this.render(this.uppy.getState(),o),o),this.el=o,n.appendChild(o),o.dir=this.opts.direction||Fs(o)||"ltr",this.onMount(),this.el}const r=this.getTargetPlugin(e);if(r)return this.uppy.log(`Installing ${s} to ${r.id}`),this.parent=r,this.el=r.addTarget(t),this.onMount(),this.el;this.uppy.log(`Not installing ${s}`);let a=`Invalid target option given to ${s}.`;throw typeof e=="function"?a+=" The given target is not a Plugin class. Please check that you're not specifying a React Component instead of a plugin. If you are using @uppy/* packages directly, make sure you have only 1 version of @uppy/core installed: run `npm ls @uppy/core` on the command line and verify that all the versions match and are deduped correctly.":a+="If you meant to target an HTML element, please make sure that the element exists. Check that the + - - - - - + + + + + + + + + + + + +
From 79e8962f6f4c5ba6d2a5b0dc140daf1694a3bb07 Mon Sep 17 00:00:00 2001 From: Ronifue Date: Sat, 29 Nov 2025 18:15:46 +0800 Subject: [PATCH 23/61] =?UTF-8?q?feat:=20=E4=BD=BF=E5=BE=97model=5Finfo.ex?= =?UTF-8?q?tra=5Fparams=E8=83=BD=E5=A4=9F=E5=8D=95=E7=8B=AC=E6=8C=87?= =?UTF-8?q?=E5=AE=9A=E6=A8=A1=E5=9E=8B=E7=9A=84temprature?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/llm_models/utils_model.py | 2 +- template/model_config_template.toml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/llm_models/utils_model.py b/src/llm_models/utils_model.py index 4f1725fd..30d06252 100644 --- a/src/llm_models/utils_model.py +++ b/src/llm_models/utils_model.py @@ -301,7 +301,7 @@ class LLMRequest: message_list=(compressed_messages or message_list), tool_options=tool_options, max_tokens=self.model_for_task.max_tokens if max_tokens is None else max_tokens, - temperature=self.model_for_task.temperature if temperature is None else temperature, + temperature=temperature if temperature is not None else (model_info.extra_params or {}).get("temperature", self.model_for_task.temperature), response_format=response_format, stream_response_handler=stream_response_handler, async_response_parser=async_response_parser, diff --git a/template/model_config_template.toml b/template/model_config_template.toml index 07e2af18..f188b551 100644 --- a/template/model_config_template.toml +++ b/template/model_config_template.toml @@ -56,6 +56,7 @@ price_in = 2.0 price_out = 3.0 [models.extra_params] # 可选的额外参数配置 enable_thinking = false # 不启用思考 +# temperature = 0.5 # 可选:为该模型单独指定温度,会覆盖任务配置中的温度 [[models]] model_identifier = "deepseek-ai/DeepSeek-V3.2-Exp" @@ -65,6 +66,7 @@ price_in = 2.0 price_out = 3.0 [models.extra_params] # 可选的额外参数配置 enable_thinking = true # 启用思考 +# temperature = 0.7 # 可选:为该模型单独指定温度,会覆盖任务配置中的温度 [[models]] model_identifier = "Qwen/Qwen3-Next-80B-A3B-Instruct" From 11aeb906ac55c65f55a2ad2410d92f9944ddc5fd Mon Sep 17 00:00:00 2001 From: Ronifue Date: Sat, 29 Nov 2025 19:59:23 +0800 Subject: [PATCH 24/61] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DWebUI=E9=87=8D?= =?UTF-8?q?=E5=90=AF=E5=90=8E=E6=97=A0=E6=B3=95=E4=BD=BF=E7=94=A8Ctrl+C?= =?UTF-8?q?=E5=81=9C=E6=AD=A2Maibot=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot.py | 71 +++++++++++++++++++++++++++++++++++++ src/webui/routers/system.py | 9 ++--- 2 files changed, 76 insertions(+), 4 deletions(-) diff --git a/bot.py b/bot.py index cecffde6..8a47fa48 100644 --- a/bot.py +++ b/bot.py @@ -5,10 +5,72 @@ import time import platform import traceback import shutil +import sys +import subprocess from dotenv import load_dotenv from pathlib import Path from rich.traceback import install +# 定义重启退出码 +RESTART_EXIT_CODE = 42 + +def run_runner_process(): + """ + Runner 进程逻辑:作为守护进程运行,负责启动和监控 Worker 进程。 + 处理重启请求 (退出码 42) 和 Ctrl+C 信号。 + """ + script_file = sys.argv[0] + python_executable = sys.executable + + # 设置环境变量,标记子进程为 Worker 进程 + env = os.environ.copy() + env["MAIBOT_WORKER_PROCESS"] = "1" + + while True: + print(f"正在启动 {script_file}...") + + # 启动子进程 (Worker) + # 使用 sys.executable 确保使用相同的 Python 解释器 + cmd = [python_executable, script_file] + sys.argv[1:] + + process = subprocess.Popen(cmd, env=env) + + try: + # 等待子进程结束 + return_code = process.wait() + + if return_code == RESTART_EXIT_CODE: + print("检测到重启请求 (退出码 42),正在重启...") + time.sleep(1) # 稍作等待 + continue + else: + print(f"程序已退出 (退出码 {return_code})") + sys.exit(return_code) + + except KeyboardInterrupt: + # 向子进程发送终止信号 + if process.poll() is None: + # 在 Windows 上,Ctrl+C 通常已经发送给了子进程(如果它们共享控制台) + # 但为了保险,我们可以尝试 terminate + try: + process.terminate() + process.wait(timeout=5) + except subprocess.TimeoutExpired: + print("子进程未响应,强制关闭...") + process.kill() + sys.exit(0) + +# 检查是否是 Worker 进程 +# 如果没有设置 MAIBOT_WORKER_PROCESS 环境变量,说明是直接运行的脚本, +# 此时应该作为 Runner 运行。 +if os.environ.get("MAIBOT_WORKER_PROCESS") != "1": + if __name__ == "__main__": + run_runner_process() + # 如果作为模块导入,不执行 Runner 逻辑,但也不应该执行下面的 Worker 逻辑 + sys.exit(0) + +# 以下是 Worker 进程的逻辑 + env_path = Path(__file__).parent / ".env" template_env_path = Path(__file__).parent / "template" / "template.env" @@ -254,6 +316,15 @@ if __name__ == "__main__": logger.error(f"优雅关闭时发生错误: {ge}") # 新增:检测外部请求关闭 + except SystemExit as e: + # 捕获 SystemExit (例如 sys.exit()) 并保留退出代码 + if isinstance(e.code, int): + exit_code = e.code + else: + exit_code = 1 if e.code else 0 + if exit_code == RESTART_EXIT_CODE: + logger.info("收到重启信号,准备退出并请求重启...") + except Exception as e: logger.error(f"主程序发生异常: {str(e)} {str(traceback.format_exc())}") exit_code = 1 # 标记发生错误 diff --git a/src/webui/routers/system.py b/src/webui/routers/system.py index b78540b5..dde63ced 100644 --- a/src/webui/routers/system.py +++ b/src/webui/routers/system.py @@ -39,7 +39,7 @@ async def restart_maibot(): """ 重启麦麦主程序 - 使用 os.execv 重启当前进程,配置更改将在重启后生效。 + 请求重启当前进程,配置更改将在重启后生效。 注意:此操作会使麦麦暂时离线。 """ import asyncio @@ -51,9 +51,10 @@ async def restart_maibot(): # 定义延迟重启的异步任务 async def delayed_restart(): await asyncio.sleep(0.5) # 延迟0.5秒,确保响应已发送 - python = sys.executable - args = [python] + sys.argv - os.execv(python, args) + # 使用 os._exit(42) 退出当前进程,配合外部 runner 脚本进行重启 + # 42 是约定的重启状态码 + print(f"[{datetime.now()}] WebUI 请求重启,退出代码 42") + os._exit(42) # 创建后台任务执行重启 asyncio.create_task(delayed_restart()) From e6096324552d49831134762b69bf1b1ccb3b98c3 Mon Sep 17 00:00:00 2001 From: SengokuCola <1026294844@qq.com> Date: Sat, 29 Nov 2025 20:06:18 +0800 Subject: [PATCH 25/61] =?UTF-8?q?fix=EF=BC=9A=E4=BF=AE=E5=A4=8D=E8=A1=A8?= =?UTF-8?q?=E6=83=85=E5=8C=85=E4=B8=8D=E4=BF=9D=E5=AD=98=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98/=E6=96=B0=E5=A2=9E=E7=BB=9F=E8=AE=A1=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/chat/utils/statistic.py | 91 ++++++++++++++-- src/chat/utils/utils_image.py | 54 +++++++++- src/config/config.py | 2 +- .../chat_history_summarizer.py | 102 +++++++++++------- src/plugin_system/base/plugin_base.py | 37 ++++--- 5 files changed, 218 insertions(+), 68 deletions(-) diff --git a/src/chat/utils/statistic.py b/src/chat/utils/statistic.py index 9b5497e9..fa865d48 100644 --- a/src/chat/utils/statistic.py +++ b/src/chat/utils/statistic.py @@ -227,6 +227,8 @@ class StatisticOutputTask(AsyncTask): "", self._format_model_classified_stat(stats["last_hour"]), "", + self._format_module_classified_stat(stats["last_hour"]), + "", self._format_chat_stat(stats["last_hour"]), self.SEP_LINE, "", @@ -737,11 +739,13 @@ class StatisticOutputTask(AsyncTask): """ if stats[TOTAL_REQ_CNT] <= 0: return "" - data_fmt = "{:<32} {:>10} {:>12} {:>12} {:>12} {:>9.2f}¥ {:>10.1f} {:>10.1f}" + data_fmt = "{:<32} {:>10} {:>12} {:>12} {:>12} {:>9.2f}¥ {:>10.1f} {:>10.1f} {:>12} {:>12}" + total_replies = stats.get(TOTAL_REPLY_CNT, 0) + output = [ "按模型分类统计:", - " 模型名称 调用次数 输入Token 输出Token Token总量 累计花费 平均耗时(秒) 标准差(秒)", + " 模型名称 调用次数 输入Token 输出Token Token总量 累计花费 平均耗时(秒) 标准差(秒) 每次回复平均调用次数 每次回复平均Token数", ] for model_name, count in sorted(stats[REQ_CNT_BY_MODEL].items()): name = f"{model_name[:29]}..." if len(model_name) > 32 else model_name @@ -751,11 +755,19 @@ class StatisticOutputTask(AsyncTask): cost = stats[COST_BY_MODEL][model_name] avg_time_cost = stats[AVG_TIME_COST_BY_MODEL][model_name] std_time_cost = stats[STD_TIME_COST_BY_MODEL][model_name] + + # 计算每次回复平均值 + avg_count_per_reply = count / total_replies if total_replies > 0 else 0.0 + avg_tokens_per_reply = tokens / total_replies if total_replies > 0 else 0.0 + # 格式化大数字 formatted_count = _format_large_number(count) formatted_in_tokens = _format_large_number(in_tokens) formatted_out_tokens = _format_large_number(out_tokens) formatted_tokens = _format_large_number(tokens) + formatted_avg_count = _format_large_number(avg_count_per_reply) if total_replies > 0 else "N/A" + formatted_avg_tokens = _format_large_number(avg_tokens_per_reply) if total_replies > 0 else "N/A" + output.append( data_fmt.format( name, @@ -766,6 +778,62 @@ class StatisticOutputTask(AsyncTask): cost, avg_time_cost, std_time_cost, + formatted_avg_count, + formatted_avg_tokens, + ) + ) + + output.append("") + return "\n".join(output) + + @staticmethod + def _format_module_classified_stat(stats: Dict[str, Any]) -> str: + """ + 格式化按模块分类的统计数据 + """ + if stats[TOTAL_REQ_CNT] <= 0: + return "" + data_fmt = "{:<32} {:>10} {:>12} {:>12} {:>12} {:>9.2f}¥ {:>10.1f} {:>10.1f} {:>12} {:>12}" + + total_replies = stats.get(TOTAL_REPLY_CNT, 0) + + output = [ + "按模块分类统计:", + " 模块名称 调用次数 输入Token 输出Token Token总量 累计花费 平均耗时(秒) 标准差(秒) 每次回复平均调用次数 每次回复平均Token数", + ] + for module_name, count in sorted(stats[REQ_CNT_BY_MODULE].items()): + name = f"{module_name[:29]}..." if len(module_name) > 32 else module_name + in_tokens = stats[IN_TOK_BY_MODULE][module_name] + out_tokens = stats[OUT_TOK_BY_MODULE][module_name] + tokens = stats[TOTAL_TOK_BY_MODULE][module_name] + cost = stats[COST_BY_MODULE][module_name] + avg_time_cost = stats[AVG_TIME_COST_BY_MODULE][module_name] + std_time_cost = stats[STD_TIME_COST_BY_MODULE][module_name] + + # 计算每次回复平均值 + avg_count_per_reply = count / total_replies if total_replies > 0 else 0.0 + avg_tokens_per_reply = tokens / total_replies if total_replies > 0 else 0.0 + + # 格式化大数字 + formatted_count = _format_large_number(count) + formatted_in_tokens = _format_large_number(in_tokens) + formatted_out_tokens = _format_large_number(out_tokens) + formatted_tokens = _format_large_number(tokens) + formatted_avg_count = _format_large_number(avg_count_per_reply) if total_replies > 0 else "N/A" + formatted_avg_tokens = _format_large_number(avg_tokens_per_reply) if total_replies > 0 else "N/A" + + output.append( + data_fmt.format( + name, + formatted_count, + formatted_in_tokens, + formatted_out_tokens, + formatted_tokens, + cost, + avg_time_cost, + std_time_cost, + formatted_avg_count, + formatted_avg_tokens, ) ) @@ -849,6 +917,7 @@ class StatisticOutputTask(AsyncTask): # format总在线时间 # 按模型分类统计 + total_replies = stat_data.get(TOTAL_REPLY_CNT, 0) model_rows = "\n".join( [ f"" @@ -860,11 +929,13 @@ class StatisticOutputTask(AsyncTask): f"{stat_data[COST_BY_MODEL][model_name]:.2f} ¥" f"{stat_data[AVG_TIME_COST_BY_MODEL][model_name]:.1f} 秒" f"{stat_data[STD_TIME_COST_BY_MODEL][model_name]:.1f} 秒" + f"{_format_large_number(count / total_replies, html=True) if total_replies > 0 else 'N/A'}" + f"{_format_large_number(stat_data[TOTAL_TOK_BY_MODEL][model_name] / total_replies, html=True) if total_replies > 0 else 'N/A'}" f"" for model_name, count in sorted(stat_data[REQ_CNT_BY_MODEL].items()) ] if stat_data[REQ_CNT_BY_MODEL] - else ["暂无数据"] + else ["暂无数据"] ) # 按请求类型分类统计 type_rows = "\n".join( @@ -878,11 +949,13 @@ class StatisticOutputTask(AsyncTask): f"{stat_data[COST_BY_TYPE][req_type]:.2f} ¥" f"{stat_data[AVG_TIME_COST_BY_TYPE][req_type]:.1f} 秒" f"{stat_data[STD_TIME_COST_BY_TYPE][req_type]:.1f} 秒" + f"{_format_large_number(count / total_replies, html=True) if total_replies > 0 else 'N/A'}" + f"{_format_large_number(stat_data[TOTAL_TOK_BY_TYPE][req_type] / total_replies, html=True) if total_replies > 0 else 'N/A'}" f"" for req_type, count in sorted(stat_data[REQ_CNT_BY_TYPE].items()) ] if stat_data[REQ_CNT_BY_TYPE] - else ["暂无数据"] + else ["暂无数据"] ) # 按模块分类统计 module_rows = "\n".join( @@ -896,11 +969,13 @@ class StatisticOutputTask(AsyncTask): f"{stat_data[COST_BY_MODULE][module_name]:.2f} ¥" f"{stat_data[AVG_TIME_COST_BY_MODULE][module_name]:.1f} 秒" f"{stat_data[STD_TIME_COST_BY_MODULE][module_name]:.1f} 秒" + f"{_format_large_number(count / total_replies, html=True) if total_replies > 0 else 'N/A'}" + f"{_format_large_number(stat_data[TOTAL_TOK_BY_MODULE][module_name] / total_replies, html=True) if total_replies > 0 else 'N/A'}" f"" for module_name, count in sorted(stat_data[REQ_CNT_BY_MODULE].items()) ] if stat_data[REQ_CNT_BY_MODULE] - else ["暂无数据"] + else ["暂无数据"] ) # 聊天消息统计 @@ -975,7 +1050,7 @@ class StatisticOutputTask(AsyncTask):

按模型分类统计

- + {model_rows} @@ -986,7 +1061,7 @@ class StatisticOutputTask(AsyncTask):
模型名称调用次数输入Token输出TokenToken总量累计花费平均耗时(秒)标准差(秒)
模型名称调用次数输入Token输出TokenToken总量累计花费平均耗时(秒)标准差(秒)每次回复平均调用次数每次回复平均Token数
- + {module_rows} @@ -998,7 +1073,7 @@ class StatisticOutputTask(AsyncTask):
模块名称调用次数输入Token输出TokenToken总量累计花费平均耗时(秒)标准差(秒)
模块名称调用次数输入Token输出TokenToken总量累计花费平均耗时(秒)标准差(秒)每次回复平均调用次数每次回复平均Token数
- + {type_rows} diff --git a/src/chat/utils/utils_image.py b/src/chat/utils/utils_image.py index 99b00204..56a3ae0f 100644 --- a/src/chat/utils/utils_image.py +++ b/src/chat/utils/utils_image.py @@ -164,6 +164,47 @@ class ImageManager: tag_str = ",".join(emotion_list) return f"[表情包:{tag_str}]" + async def _save_emoji_file_if_needed(self, image_base64: str, image_hash: str, image_format: str) -> None: + """如果启用了steal_emoji且表情包未注册,保存文件到data/emoji目录 + + Args: + image_base64: 图片的base64编码 + image_hash: 图片的MD5哈希值 + image_format: 图片格式 + """ + if not global_config.emoji.steal_emoji: + return + + try: + from src.chat.emoji_system.emoji_manager import EMOJI_DIR + from src.chat.emoji_system.emoji_manager import get_emoji_manager + + # 确保目录存在 + os.makedirs(EMOJI_DIR, exist_ok=True) + + # 检查是否已存在该表情包(通过哈希值) + emoji_manager = get_emoji_manager() + existing_emoji = await emoji_manager.get_emoji_from_manager(image_hash) + if existing_emoji: + logger.debug(f"[自动保存] 表情包已注册,跳过保存: {image_hash[:8]}...") + return + + # 生成文件名:使用哈希值前8位 + 格式 + filename = f"{image_hash[:8]}.{image_format}" + file_path = os.path.join(EMOJI_DIR, filename) + + # 检查文件是否已存在(可能之前保存过但未注册) + if not os.path.exists(file_path): + # 保存文件 + if base64_to_image(image_base64, file_path): + logger.info(f"[自动保存] 表情包已保存到 {file_path} (Hash: {image_hash[:8]}...)") + else: + logger.warning(f"[自动保存] 保存表情包文件失败: {file_path}") + else: + logger.debug(f"[自动保存] 表情包文件已存在,跳过: {file_path}") + except Exception as save_error: + logger.warning(f"[自动保存] 保存表情包文件时出错: {save_error}") + async def get_emoji_description(self, image_base64: str) -> str: """获取表情包描述,优先使用EmojiDescriptionCache表中的缓存数据""" try: @@ -193,12 +234,18 @@ class ImageManager: cache_record = EmojiDescriptionCache.get_or_none(EmojiDescriptionCache.emoji_hash == image_hash) if cache_record: # 优先使用情感标签,如果没有则使用详细描述 + result_text = "" if cache_record.emotion_tags: logger.info(f"[缓存命中] 使用EmojiDescriptionCache表中的情感标签: {cache_record.emotion_tags[:50]}...") - return f"[表情包:{cache_record.emotion_tags}]" + result_text = f"[表情包:{cache_record.emotion_tags}]" elif cache_record.description: logger.info(f"[缓存命中] 使用EmojiDescriptionCache表中的描述: {cache_record.description[:50]}...") - return f"[表情包:{cache_record.description}]" + result_text = f"[表情包:{cache_record.description}]" + + # 即使缓存命中,如果启用了steal_emoji,也检查是否需要保存文件 + if result_text: + await self._save_emoji_file_if_needed(image_base64, image_hash, image_format) + return result_text except Exception as e: logger.debug(f"查询EmojiDescriptionCache时出错: {e}") @@ -290,6 +337,9 @@ class ImageManager: except Exception as e: logger.error(f"保存表情包描述和情感标签缓存失败: {str(e)}") + # 如果启用了steal_emoji,自动保存表情包文件到data/emoji目录 + await self._save_emoji_file_if_needed(image_base64, image_hash, image_format) + return f"[表情包:{final_emotion}]" except Exception as e: diff --git a/src/config/config.py b/src/config/config.py index 1eca07fb..263a4256 100644 --- a/src/config/config.py +++ b/src/config/config.py @@ -56,7 +56,7 @@ TEMPLATE_DIR = os.path.join(PROJECT_ROOT, "template") # 考虑到,实际上配置文件中的mai_version是不会自动更新的,所以采用硬编码 # 对该字段的更新,请严格参照语义化版本规范:https://semver.org/lang/zh-CN/ -MMC_VERSION = "0.11.6-snapshot.1" +MMC_VERSION = "0.11.6" def get_key_comment(toml_table, key): diff --git a/src/hippo_memorizer/chat_history_summarizer.py b/src/hippo_memorizer/chat_history_summarizer.py index 3f1b62e0..357f46dd 100644 --- a/src/hippo_memorizer/chat_history_summarizer.py +++ b/src/hippo_memorizer/chat_history_summarizer.py @@ -8,8 +8,9 @@ import json import time import re from pathlib import Path -from typing import Dict, List, Optional, Set +from typing import Any, Dict, List, Optional, Set from dataclasses import dataclass, field +from json_repair import repair_json from src.common.logger import get_logger from src.common.data_models.database_data_model import DatabaseMessages @@ -369,12 +370,12 @@ class ChatHistorySummarizer: should_check = False # 条件1: 消息数量 >= 100,触发一次检查 - if message_count >= 50: + if message_count >= 80: should_check = True logger.info(f"{self.log_prefix} 触发检查条件: 消息数量达到 {message_count} 条(阈值: 100条)") # 条件2: 距离上一次检查 > 3600 秒(1小时),触发一次检查 - elif time_since_last_check > 1200: + elif time_since_last_check > 2400: should_check = True logger.info(f"{self.log_prefix} 触发检查条件: 距上次检查 {time_str}(阈值: 1小时)") @@ -483,11 +484,11 @@ class ChatHistorySummarizer: topics_to_finalize: List[str] = [] for topic, item in self.topic_cache.items(): if item.no_update_checks >= 3: - logger.info(f"{self.log_prefix} 话题[{topic}] 连续 5 次检查无新增内容,触发打包存储") + logger.info(f"{self.log_prefix} 话题[{topic}] 连续 3 次检查无新增内容,触发打包存储") topics_to_finalize.append(topic) continue - if len(item.messages) > 8: - logger.info(f"{self.log_prefix} 话题[{topic}] 消息条数超过 30,触发打包存储") + if len(item.messages) > 5: + logger.info(f"{self.log_prefix} 话题[{topic}] 消息条数超过 4,触发打包存储") topics_to_finalize.append(topic) for topic in topics_to_finalize: @@ -606,18 +607,42 @@ class ChatHistorySummarizer: max_tokens=800, ) - import re logger.info(f"{self.log_prefix} 话题识别LLM Prompt: {prompt}") logger.info(f"{self.log_prefix} 话题识别LLM Response: {response}") - json_str = response.strip() - # 移除可能的 markdown 代码块标记 - json_str = re.sub(r"^```json\s*", "", json_str, flags=re.MULTILINE) - json_str = re.sub(r"^```\s*", "", json_str, flags=re.MULTILINE) - json_str = json_str.strip() + # 尝试从响应中提取JSON代码块 + json_str = None + json_pattern = r"```json\s*(.*?)\s*```" + matches = re.findall(json_pattern, response, re.DOTALL) + + if matches: + # 找到JSON代码块,使用第一个匹配 + json_str = matches[0].strip() + else: + # 如果没有找到代码块,尝试查找JSON数组的开始和结束位置 + # 查找第一个 [ 和最后一个 ] + start_idx = response.find('[') + end_idx = response.rfind(']') + if start_idx != -1 and end_idx != -1 and end_idx > start_idx: + json_str = response[start_idx:end_idx + 1].strip() + else: + # 如果还是找不到,尝试直接使用整个响应(移除可能的markdown标记) + json_str = response.strip() + json_str = re.sub(r"^```json\s*", "", json_str, flags=re.MULTILINE) + json_str = re.sub(r"^```\s*", "", json_str, flags=re.MULTILINE) + json_str = json_str.strip() - # 尝试直接解析为 JSON 数组 - result = json.loads(json_str) + # 使用json_repair修复可能的JSON错误 + if json_str: + try: + repaired_json = repair_json(json_str) + result = json.loads(repaired_json) if isinstance(repaired_json, str) else repaired_json + except Exception as repair_error: + # 如果repair失败,尝试直接解析 + logger.warning(f"{self.log_prefix} JSON修复失败,尝试直接解析: {repair_error}") + result = json.loads(json_str) + else: + raise ValueError("无法从响应中提取JSON内容") if not isinstance(result, list): logger.error(f"{self.log_prefix} 话题识别返回的 JSON 不是列表: {result}") @@ -722,41 +747,30 @@ class ChatHistorySummarizer: ) # 解析JSON响应 - import re - - # 移除可能的markdown代码块标记 json_str = response.strip() json_str = re.sub(r"^```json\s*", "", json_str, flags=re.MULTILINE) json_str = re.sub(r"^```\s*", "", json_str, flags=re.MULTILINE) json_str = json_str.strip() - # 尝试找到JSON对象的开始和结束位置 - # 查找第一个 { 和最后一个匹配的 } + # 查找JSON对象的开始与结束 start_idx = json_str.find("{") if start_idx == -1: raise ValueError("未找到JSON对象开始标记") - # 从后往前查找最后一个 } end_idx = json_str.rfind("}") if end_idx == -1 or end_idx <= start_idx: - raise ValueError("未找到JSON对象结束标记") + logger.warning(f"{self.log_prefix} JSON缺少结束标记,尝试自动修复") + extracted_json = json_str[start_idx:] + else: + extracted_json = json_str[start_idx : end_idx + 1] - # 提取JSON字符串 - json_str = json_str[start_idx : end_idx + 1] - - # 尝试解析JSON - try: - result = json.loads(json_str) - except json.JSONDecodeError: - # 如果解析失败,尝试修复字符串值中的中文引号 - # 简单方法:将字符串值中的中文引号替换为转义的英文引号 - # 使用状态机方法:遍历字符串,在字符串值内部替换中文引号 - fixed_chars = [] + def _parse_with_quote_fix(payload: str) -> Dict[str, Any]: + fixed_chars: List[str] = [] in_string = False escape_next = False i = 0 - while i < len(json_str): - char = json_str[i] + while i < len(payload): + char = payload[i] if escape_next: fixed_chars.append(char) escape_next = False @@ -766,16 +780,28 @@ class ChatHistorySummarizer: elif char == '"' and not escape_next: fixed_chars.append(char) in_string = not in_string - elif in_string and (char == '"' or char == '"'): + elif in_string and char in {"“", "”"}: # 在字符串值内部,将中文引号替换为转义的英文引号 fixed_chars.append('\\"') else: fixed_chars.append(char) i += 1 - json_str = "".join(fixed_chars) - # 再次尝试解析 - result = json.loads(json_str) + repaired = "".join(fixed_chars) + return json.loads(repaired) + + try: + result = json.loads(extracted_json) + except json.JSONDecodeError: + try: + repaired_json = repair_json(extracted_json) + if isinstance(repaired_json, str): + result = json.loads(repaired_json) + else: + result = repaired_json + except Exception as repair_error: + logger.warning(f"{self.log_prefix} repair_json 失败,使用引号修复: {repair_error}") + result = _parse_with_quote_fix(extracted_json) keywords = result.get("keywords", []) summary = result.get("summary", "无概括") diff --git a/src/plugin_system/base/plugin_base.py b/src/plugin_system/base/plugin_base.py index 0b7f15d1..26b608f1 100644 --- a/src/plugin_system/base/plugin_base.py +++ b/src/plugin_system/base/plugin_base.py @@ -205,6 +205,22 @@ class PluginBase(ABC): return value + def _format_toml_value(self, value: Any) -> str: + """将Python值格式化为合法的TOML字符串""" + if isinstance(value, str): + return json.dumps(value, ensure_ascii=False) + if isinstance(value, bool): + return str(value).lower() + if isinstance(value, (int, float)): + return str(value) + if isinstance(value, list): + inner = ", ".join(self._format_toml_value(item) for item in value) + return f"[{inner}]" + if isinstance(value, dict): + items = [f"{k} = {self._format_toml_value(v)}" for k, v in value.items()] + return "{ " + ", ".join(items) + " }" + return json.dumps(value, ensure_ascii=False) + def _generate_and_save_default_config(self, config_file_path: str): """根据插件的Schema生成并保存默认配置文件""" if not self.config_schema: @@ -244,12 +260,7 @@ class PluginBase(ABC): # 添加字段值 value = field.default - if isinstance(value, str): - toml_str += f'{field_name} = "{value}"\n' - elif isinstance(value, bool): - toml_str += f"{field_name} = {str(value).lower()}\n" - else: - toml_str += f"{field_name} = {value}\n" + toml_str += f"{field_name} = {self._format_toml_value(value)}\n" toml_str += "\n" toml_str += "\n" @@ -422,19 +433,7 @@ class PluginBase(ABC): # 添加字段值(使用迁移后的值) value = section_data.get(field_name, field.default) - if isinstance(value, str): - toml_str += f'{field_name} = "{value}"\n' - elif isinstance(value, bool): - toml_str += f"{field_name} = {str(value).lower()}\n" - elif isinstance(value, list): - # 格式化列表 - if all(isinstance(item, str) for item in value): - formatted_list = "[" + ", ".join(f'"{item}"' for item in value) + "]" - else: - formatted_list = str(value) - toml_str += f"{field_name} = {formatted_list}\n" - else: - toml_str += f"{field_name} = {value}\n" + toml_str += f"{field_name} = {self._format_toml_value(value)}\n" toml_str += "\n" toml_str += "\n" From e6d1a6e87b40f628a81bb420bfec5f23238351dd Mon Sep 17 00:00:00 2001 From: Ronifue Date: Sat, 29 Nov 2025 20:22:25 +0800 Subject: [PATCH 26/61] =?UTF-8?q?feat:=20=E4=B8=BA=E6=89=80=E6=9C=89LLM?= =?UTF-8?q?=E7=9A=84=E8=AF=B7=E6=B1=82=E5=BC=82=E5=B8=B8=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=8E=9F=E5=A7=8B=E9=94=99=E8=AF=AF=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/llm_models/utils_model.py | 36 ++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/src/llm_models/utils_model.py b/src/llm_models/utils_model.py index 30d06252..060ec922 100644 --- a/src/llm_models/utils_model.py +++ b/src/llm_models/utils_model.py @@ -323,24 +323,19 @@ class LLMRequest: ) except EmptyResponseException as e: # 空回复:通常为临时问题,单独记录并重试 + original_error_info = self._get_original_error_info(e) retry_remain -= 1 if retry_remain <= 0: - logger.error(f"模型 '{model_info.name}' 在多次出现空回复后仍然失败。") + logger.error(f"模型 '{model_info.name}' 在多次出现空回复后仍然失败。{original_error_info}") raise ModelAttemptFailed(f"模型 '{model_info.name}' 重试耗尽", original_exception=e) from e - logger.warning(f"模型 '{model_info.name}' 返回空回复(可重试)。剩余重试次数: {retry_remain}") + logger.warning(f"模型 '{model_info.name}' 返回空回复(可重试){original_error_info}。剩余重试次数: {retry_remain}") await asyncio.sleep(api_provider.retry_interval) except NetworkConnectionError as e: # 网络错误:单独记录并重试 # 尝试从链式异常中获取原始错误信息以诊断具体原因 - original_error_info = "" - if e.__cause__: - original_error_type = type(e.__cause__).__name__ - original_error_msg = str(e.__cause__) - original_error_info = ( - f"\n 底层异常类型: {original_error_type}\n 底层异常信息: {original_error_msg}" - ) + original_error_info = self._get_original_error_info(e) retry_remain -= 1 if retry_remain <= 0: @@ -356,15 +351,17 @@ class LLMRequest: await asyncio.sleep(api_provider.retry_interval) except RespNotOkException as e: + original_error_info = self._get_original_error_info(e) + # 可重试的HTTP错误 if e.status_code == 429 or e.status_code >= 500: retry_remain -= 1 if retry_remain <= 0: - logger.error(f"模型 '{model_info.name}' 在遇到 {e.status_code} 错误并用尽重试次数后仍然失败。") + logger.error(f"模型 '{model_info.name}' 在遇到 {e.status_code} 错误并用尽重试次数后仍然失败。{original_error_info}") raise ModelAttemptFailed(f"模型 '{model_info.name}' 重试耗尽", original_exception=e) from e logger.warning( - f"模型 '{model_info.name}' 遇到可重试的HTTP错误: {str(e)}。剩余重试次数: {retry_remain}" + f"模型 '{model_info.name}' 遇到可重试的HTTP错误: {str(e)}{original_error_info}。剩余重试次数: {retry_remain}" ) await asyncio.sleep(api_provider.retry_interval) continue @@ -377,13 +374,15 @@ class LLMRequest: continue # 不可重试的HTTP错误 - logger.warning(f"模型 '{model_info.name}' 遇到不可重试的HTTP错误: {str(e)}") + logger.warning(f"模型 '{model_info.name}' 遇到不可重试的HTTP错误: {str(e)}{original_error_info}") raise ModelAttemptFailed(f"模型 '{model_info.name}' 遇到硬错误", original_exception=e) from e except Exception as e: logger.error(traceback.format_exc()) - logger.warning(f"模型 '{model_info.name}' 遇到未知的不可重试错误: {str(e)}") + original_error_info = self._get_original_error_info(e) + + logger.warning(f"模型 '{model_info.name}' 遇到未知的不可重试错误: {str(e)}{original_error_info}") raise ModelAttemptFailed(f"模型 '{model_info.name}' 遇到硬错误", original_exception=e) from e raise ModelAttemptFailed(f"模型 '{model_info.name}' 未被尝试,因为重试次数已配置为0或更少。") @@ -497,3 +496,14 @@ class LLMRequest: content = re.sub(r"(?:)?.*?", "", content, flags=re.DOTALL, count=1).strip() reasoning = match[1].strip() if match else "" return content, reasoning + + @staticmethod + def _get_original_error_info(e: Exception) -> str: + """获取原始错误信息""" + if e.__cause__: + original_error_type = type(e.__cause__).__name__ + original_error_msg = str(e.__cause__) + return ( + f"\n 底层异常类型: {original_error_type}\n 底层异常信息: {original_error_msg}" + ) + return "" From 2db63999107f5246882052500d74393a3829a892 Mon Sep 17 00:00:00 2001 From: Ronifue Date: Sat, 29 Nov 2025 20:40:07 +0800 Subject: [PATCH 27/61] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3logger?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot.py | 67 ++++++++++++++++++++----------------- src/webui/routers/system.py | 6 ++-- 2 files changed, 41 insertions(+), 32 deletions(-) diff --git a/bot.py b/bot.py index 8a47fa48..34dbbda4 100644 --- a/bot.py +++ b/bot.py @@ -10,6 +10,33 @@ import subprocess from dotenv import load_dotenv from pathlib import Path from rich.traceback import install +from src.common.logger import initialize_logging, get_logger, shutdown_logging + +# 设置工作目录为脚本所在目录 +script_dir = os.path.dirname(os.path.abspath(__file__)) +os.chdir(script_dir) + +env_path = Path(__file__).parent / ".env" +template_env_path = Path(__file__).parent / "template" / "template.env" + +if env_path.exists(): + load_dotenv(str(env_path), override=True) +else: + try: + if template_env_path.exists(): + shutil.copyfile(template_env_path, env_path) + print("未找到.env,已从 template/template.env 自动创建") + load_dotenv(str(env_path), override=True) + else: + print("未找到.env文件,也未找到模板 template/template.env") + raise FileNotFoundError(".env 文件不存在,请创建并配置所需的环境变量") + except Exception as e: + print(f"自动创建 .env 失败: {e}") + raise + +initialize_logging() +install(extra_lines=3) +logger = get_logger("main") # 定义重启退出码 RESTART_EXIT_CODE = 42 @@ -27,7 +54,7 @@ def run_runner_process(): env["MAIBOT_WORKER_PROCESS"] = "1" while True: - print(f"正在启动 {script_file}...") + logger.info(f"正在启动 {script_file}...") # 启动子进程 (Worker) # 使用 sys.executable 确保使用相同的 Python 解释器 @@ -40,11 +67,11 @@ def run_runner_process(): return_code = process.wait() if return_code == RESTART_EXIT_CODE: - print("检测到重启请求 (退出码 42),正在重启...") + logger.info("检测到重启请求 (退出码 42),正在重启...") time.sleep(1) # 稍作等待 continue else: - print(f"程序已退出 (退出码 {return_code})") + logger.info(f"程序已退出 (退出码 {return_code})") sys.exit(return_code) except KeyboardInterrupt: @@ -56,7 +83,7 @@ def run_runner_process(): process.terminate() process.wait(timeout=5) except subprocess.TimeoutExpired: - print("子进程未响应,强制关闭...") + logger.warning("子进程未响应,强制关闭...") process.kill() sys.exit(0) @@ -71,42 +98,22 @@ if os.environ.get("MAIBOT_WORKER_PROCESS") != "1": # 以下是 Worker 进程的逻辑 -env_path = Path(__file__).parent / ".env" -template_env_path = Path(__file__).parent / "template" / "template.env" - -if env_path.exists(): - load_dotenv(str(env_path), override=True) - print("成功加载环境变量配置") -else: - try: - if template_env_path.exists(): - shutil.copyfile(template_env_path, env_path) - print("未找到.env,已从 template/template.env 自动创建") - load_dotenv(str(env_path), override=True) - else: - print("未找到.env文件,也未找到模板 template/template.env") - raise FileNotFoundError(".env 文件不存在,请创建并配置所需的环境变量") - except Exception as e: - print(f"自动创建 .env 失败: {e}") - raise - # 最早期初始化日志系统,确保所有后续模块都使用正确的日志格式 -from src.common.logger import initialize_logging, get_logger, shutdown_logging # noqa - -initialize_logging() +# from src.common.logger import initialize_logging, get_logger, shutdown_logging # noqa +# initialize_logging() from src.main import MainSystem # noqa from src.manager.async_task_manager import async_task_manager # noqa -logger = get_logger("main") +# logger = get_logger("main") -install(extra_lines=3) +# install(extra_lines=3) # 设置工作目录为脚本所在目录 -script_dir = os.path.dirname(os.path.abspath(__file__)) -os.chdir(script_dir) +# script_dir = os.path.dirname(os.path.abspath(__file__)) +# os.chdir(script_dir) logger.info(f"已设置工作目录为: {script_dir}") diff --git a/src/webui/routers/system.py b/src/webui/routers/system.py index dde63ced..7499c06d 100644 --- a/src/webui/routers/system.py +++ b/src/webui/routers/system.py @@ -11,8 +11,10 @@ from datetime import datetime from fastapi import APIRouter, HTTPException from pydantic import BaseModel from src.config.config import MMC_VERSION +from src.common.logger import get_logger router = APIRouter(prefix="/system", tags=["system"]) +logger = get_logger("webui_system") # 记录启动时间 _start_time = time.time() @@ -46,14 +48,14 @@ async def restart_maibot(): try: # 记录重启操作 - print(f"[{datetime.now()}] WebUI 触发重启操作") + logger.info("WebUI 触发重启操作") # 定义延迟重启的异步任务 async def delayed_restart(): await asyncio.sleep(0.5) # 延迟0.5秒,确保响应已发送 # 使用 os._exit(42) 退出当前进程,配合外部 runner 脚本进行重启 # 42 是约定的重启状态码 - print(f"[{datetime.now()}] WebUI 请求重启,退出代码 42") + logger.info("WebUI 请求重启,退出代码 42") os._exit(42) # 创建后台任务执行重启 From dc84366bb5d6f3890398162482774a18f4617873 Mon Sep 17 00:00:00 2001 From: Ronifue Date: Sat, 29 Nov 2025 20:45:36 +0800 Subject: [PATCH 28/61] =?UTF-8?q?fix:=20=E2=80=9C#=E2=80=9D=20=E5=90=8E?= =?UTF-8?q?=E9=9D=A2=E4=B8=80=E5=AE=9A=E8=A6=81=E5=8A=A0=E7=A9=BA=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- template/bot_config_template.toml | 20 ++++++++++---------- template/model_config_template.toml | 6 +++--- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/template/bot_config_template.toml b/template/bot_config_template.toml index fcee2aa9..9daf8739 100644 --- a/template/bot_config_template.toml +++ b/template/bot_config_template.toml @@ -2,8 +2,8 @@ version = "6.23.5" #----以下是给开发人员阅读的,如果你只是部署了麦麦,不需要阅读---- -#如果你想要修改配置文件,请递增version的值 -#如果新增项目,请阅读src/config/official_configs.py中的说明 +# 如果你想要修改配置文件,请递增version的值 +# 如果新增项目,请阅读src/config/official_configs.py中的说明 # # 版本格式:主版本号.次版本号.修订号,版本号递增规则如下: # 主版本号:MMC版本更新 @@ -23,7 +23,7 @@ alias_names = ["麦叠", "牢麦"] # 麦麦的别名 [personality] # 建议120字以内,描述人格特质 和 身份特征 personality = "是一个女大学生,现在在读大二,会刷贴吧。" -#アイデンティティがない 生まれないらららら +# アイデンティティがない 生まれないらららら # 描述麦麦说话的表达风格,表达习惯,如要修改,可以酌情新增内容 reply_style = "请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景。可以参考贴吧,知乎和微博的回复风格。" @@ -85,11 +85,11 @@ reflect_operator_id = "" # 表达反思操作员ID,格式:platform:id:type ( allow_reflect = [] # 允许进行表达反思的聊天流ID列表,格式:["qq:123456:private", "qq:654321:group", ...],只有在此列表中的聊天流才会提出问题并跟踪。如果列表为空,则所有聊天流都可以进行表达反思(前提是 reflect = true) -[chat] #麦麦的聊天设置 -talk_value = 1 #聊天频率,越小越沉默,范围0-1 +[chat] # 麦麦的聊天设置 +talk_value = 1 # 聊天频率,越小越沉默,范围0-1 mentioned_bot_reply = true # 是否启用提及必回复 max_context_size = 30 # 上下文长度 -planner_smooth = 2 #规划器平滑,增大数值会减小planner负荷,略微降低反应速度,推荐1-5,0为关闭,必须大于等于0 +planner_smooth = 2 # 规划器平滑,增大数值会减小planner负荷,略微降低反应速度,推荐1-5,0为关闭,必须大于等于0 enable_talk_value_rules = true # 是否启用动态发言频率规则 @@ -143,8 +143,8 @@ ban_words = [ ban_msgs_regex = [ # 需要过滤的消息(原始消息)匹配的正则表达式,匹配到的消息将被过滤,若不了解正则表达式请勿修改 - #"https?://[^\\s]+", # 匹配https链接 - #"\\d{4}-\\d{2}-\\d{2}", # 匹配日期 + # "https?://[^\\s]+", # 匹配https链接 + # "\\d{4}-\\d{2}-\\d{2}", # 匹配日期 ] @@ -173,7 +173,7 @@ embedding_dimension = 1024 # 嵌入向量维度,应该与模型的输出维度 keyword_rules = [ { keywords = ["人机", "bot", "机器", "入机", "robot", "机器人", "ai", "AI"], reaction = "有人说你是人机或者机器人,否定这一事实,攻击或反问他。注意,只有认为你是机器人才回复,否则不要否认" }, { keywords = ["测试关键词回复", "test"], reaction = "回答测试成功" }, - #{ keywords = ["你好", "hello"], reaction = "你好,有什么可以帮你?" } + # { keywords = ["你好", "hello"], reaction = "你好,有什么可以帮你?" } # 在此处添加更多规则,格式同上 ] @@ -246,7 +246,7 @@ enable = true chat_prompts = [] -#此系统暂时移除,无效配置 +# 此系统暂时移除,无效配置 [relationship] enable_relationship = true # 是否启用关系系统 diff --git a/template/model_config_template.toml b/template/model_config_template.toml index f188b551..38f57a79 100644 --- a/template/model_config_template.toml +++ b/template/model_config_template.toml @@ -46,7 +46,7 @@ name = "deepseek-v3" # 模型名称(可随意命名,在后面 api_provider = "DeepSeek" # API服务商名称(对应在api_providers中配置的服务商名称) price_in = 2.0 # 输入价格(用于API调用统计,单位:元/ M token)(可选,若无该字段,默认值为0) price_out = 8.0 # 输出价格(用于API调用统计,单位:元/ M token)(可选,若无该字段,默认值为0) -#force_stream_mode = true # 强制流式输出模式(若模型不支持非流式输出,请取消该注释,启用强制流式输出,若无该字段,默认值为false) +# force_stream_mode = true # 强制流式输出模式(若模型不支持非流式输出,请取消该注释,启用强制流式输出,若无该字段,默认值为false) [[models]] model_identifier = "deepseek-ai/DeepSeek-V3.2-Exp" @@ -163,11 +163,11 @@ max_tokens = 256 [model_task_config.voice] # 语音识别模型 model_list = ["sensevoice-small"] -#嵌入模型 +# 嵌入模型 [model_task_config.embedding] model_list = ["bge-m3"] -#------------LPMM知识库模型------------ +# ------------LPMM知识库模型------------ [model_task_config.lpmm_entity_extract] # 实体提取模型 model_list = ["siliconflow-deepseek-v3.2"] From 78f3b75352c98720ad7aaef3482496a24b4ad892 Mon Sep 17 00:00:00 2001 From: Ronifue Date: Sat, 29 Nov 2025 21:50:49 +0800 Subject: [PATCH 29/61] =?UTF-8?q?feat:=20=E7=BB=9F=E4=B8=80=E5=AF=B9task?= =?UTF-8?q?=E4=B8=AD=E8=BF=87=E6=85=A2=E7=9A=84=E6=A8=A1=E5=9E=8B=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E8=AD=A6=E5=91=8A=EF=BC=8C=E5=B9=B6=E5=9C=A8model=5Fc?= =?UTF-8?q?onfig.toml=E4=B8=AD=E8=AE=BE=E5=AE=9A=E5=AF=B9=E5=BA=94task?= =?UTF-8?q?=E7=9A=84=E6=85=A2=E8=AF=B7=E6=B1=82=E9=98=88=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/chat/replyer/group_generator.py | 2 -- src/chat/replyer/private_generator.py | 2 -- src/config/api_ada_configs.py | 3 +++ src/llm_models/utils_model.py | 25 ++++++++++++++++++++++--- template/model_config_template.toml | 13 ++++++++++++- 5 files changed, 37 insertions(+), 8 deletions(-) diff --git a/src/chat/replyer/group_generator.py b/src/chat/replyer/group_generator.py index 2ee403cc..3dd52272 100644 --- a/src/chat/replyer/group_generator.py +++ b/src/chat/replyer/group_generator.py @@ -839,8 +839,6 @@ class DefaultReplyer: continue timing_logs.append(f"{chinese_name}: {duration:.1f}s") - if duration > 12: - logger.warning(f"回复生成前信息获取耗时过长: {chinese_name} 耗时: {duration:.1f}s,请使用更快的模型") logger.info(f"回复准备: {'; '.join(timing_logs)}; {almost_zero_str} <0.1s") expression_habits_block, selected_expressions = results_dict["expression_habits"] diff --git a/src/chat/replyer/private_generator.py b/src/chat/replyer/private_generator.py index 93543cf5..396e806f 100644 --- a/src/chat/replyer/private_generator.py +++ b/src/chat/replyer/private_generator.py @@ -760,8 +760,6 @@ class PrivateReplyer: continue timing_logs.append(f"{chinese_name}: {duration:.1f}s") - if duration > 12: - logger.warning(f"回复生成前信息获取耗时过长: {chinese_name} 耗时: {duration:.1f}s,请使用更快的模型") logger.info(f"回复准备: {'; '.join(timing_logs)}; {almost_zero_str} <0.1s") expression_habits_block, selected_expressions = results_dict["expression_habits"] diff --git a/src/config/api_ada_configs.py b/src/config/api_ada_configs.py index 3fc9c878..897e1f87 100644 --- a/src/config/api_ada_configs.py +++ b/src/config/api_ada_configs.py @@ -88,6 +88,9 @@ class TaskConfig(ConfigBase): temperature: float = 0.3 """模型温度""" + slow_threshold: float = 15.0 + """慢请求阈值(秒),超过此值会输出警告日志""" + @dataclass class ModelTaskConfig(ConfigBase): diff --git a/src/llm_models/utils_model.py b/src/llm_models/utils_model.py index 060ec922..648997b8 100644 --- a/src/llm_models/utils_model.py +++ b/src/llm_models/utils_model.py @@ -47,6 +47,21 @@ class LLMRequest: } """模型使用量记录,用于进行负载均衡,对应为(total_tokens, penalty, usage_penalty),惩罚值是为了能在某个模型请求不给力或正在被使用的时候进行调整""" + def _check_slow_request(self, time_cost: float, model_name: str) -> None: + """检查请求是否过慢并输出警告日志 + + Args: + time_cost: 请求耗时(秒) + model_name: 使用的模型名称 + """ + threshold = self.model_for_task.slow_threshold + if time_cost > threshold: + request_type_display = self.request_type or "未知任务" + logger.warning( + f"LLM请求耗时过长: {request_type_display} 使用模型 {model_name} 耗时 {time_cost:.1f}s(阈值: {threshold}s),请考虑使用更快的模型\n" + f"如果你认为该警告出现得过于频繁,请调整model_config.toml中对应任务的slow_threshold至符合你实际情况的合理值" + ) + async def generate_response_for_image( self, prompt: str, @@ -86,6 +101,8 @@ class LLMRequest: if not reasoning_content and content: content, extracted_reasoning = self._extract_reasoning(content) reasoning_content = extracted_reasoning + time_cost = time.time() - start_time + self._check_slow_request(time_cost, model_info.name) if usage := response.usage: llm_usage_recorder.record_usage_to_database( model_info=model_info, @@ -93,7 +110,7 @@ class LLMRequest: user_id="system", request_type=self.request_type, endpoint="/chat/completions", - time_cost=time.time() - start_time, + time_cost=time_cost, ) return content, (reasoning_content, model_info.name, tool_calls) @@ -198,7 +215,8 @@ class LLMRequest: tool_options=tool_built, ) - logger.debug(f"LLM请求总耗时: {time.time() - start_time}") + time_cost = time.time() - start_time + logger.debug(f"LLM请求总耗时: {time_cost}") logger.debug(f"LLM生成内容: {response}") content = response.content @@ -207,6 +225,7 @@ class LLMRequest: if not reasoning_content and content: content, extracted_reasoning = self._extract_reasoning(content) reasoning_content = extracted_reasoning + self._check_slow_request(time_cost, model_info.name) if usage := response.usage: llm_usage_recorder.record_usage_to_database( model_info=model_info, @@ -214,7 +233,7 @@ class LLMRequest: user_id="system", request_type=self.request_type, endpoint="/chat/completions", - time_cost=time.time() - start_time, + time_cost=time_cost, ) return content or "", (reasoning_content, model_info.name, tool_calls) diff --git a/template/model_config_template.toml b/template/model_config_template.toml index 38f57a79..1e072d13 100644 --- a/template/model_config_template.toml +++ b/template/model_config_template.toml @@ -1,5 +1,5 @@ [inner] -version = "1.8.1" +version = "1.8.2" # 配置文件版本号迭代规则同bot_config.toml @@ -135,37 +135,45 @@ price_out = 0 model_list = ["siliconflow-deepseek-v3.2"] # 使用的模型列表,每个子项对应上面的模型名称(name) temperature = 0.2 # 模型温度,新V3建议0.1-0.3 max_tokens = 2048 # 最大输出token数 +slow_threshold = 15.0 # 慢请求阈值(秒),模型等待回复时间超过此值会输出警告日志 [model_task_config.utils_small] # 在麦麦的一些组件中使用的小模型,消耗量较大,建议使用速度较快的小模型 model_list = ["qwen3-30b","qwen3-next-80b"] temperature = 0.7 max_tokens = 2048 +slow_threshold = 10.0 [model_task_config.tool_use] #工具调用模型,需要使用支持工具调用的模型 model_list = ["qwen3-30b","qwen3-next-80b"] temperature = 0.7 max_tokens = 800 +slow_threshold = 10.0 [model_task_config.replyer] # 首要回复模型,还用于表达器和表达方式学习 model_list = ["siliconflow-deepseek-v3.2","siliconflow-deepseek-v3.2-think","siliconflow-glm-4.6","siliconflow-glm-4.6-think"] temperature = 0.3 # 模型温度,新V3建议0.1-0.3 max_tokens = 2048 +slow_threshold = 25.0 [model_task_config.planner] #决策:负责决定麦麦该什么时候回复的模型 model_list = ["siliconflow-deepseek-v3.2"] temperature = 0.3 max_tokens = 800 +slow_threshold = 12.0 [model_task_config.vlm] # 图像识别模型 model_list = ["qwen3-vl-30"] max_tokens = 256 +slow_threshold = 15.0 [model_task_config.voice] # 语音识别模型 model_list = ["sensevoice-small"] +slow_threshold = 12.0 # 嵌入模型 [model_task_config.embedding] model_list = ["bge-m3"] +slow_threshold = 5.0 # ------------LPMM知识库模型------------ @@ -173,13 +181,16 @@ model_list = ["bge-m3"] model_list = ["siliconflow-deepseek-v3.2"] temperature = 0.2 max_tokens = 800 +slow_threshold = 20.0 [model_task_config.lpmm_rdf_build] # RDF构建模型 model_list = ["siliconflow-deepseek-v3.2"] temperature = 0.2 max_tokens = 800 +slow_threshold = 20.0 [model_task_config.lpmm_qa] # 问答模型 model_list = ["siliconflow-deepseek-v3.2"] temperature = 0.7 max_tokens = 800 +slow_threshold = 20.0 From 6470d27270bc00f0b37a1c0d861d3e22d05051df Mon Sep 17 00:00:00 2001 From: Ronifue Date: Sat, 29 Nov 2025 21:50:49 +0800 Subject: [PATCH 30/61] =?UTF-8?q?feat:=20=E7=BB=9F=E4=B8=80=E5=AF=B9task?= =?UTF-8?q?=E4=B8=AD=E8=BF=87=E6=85=A2=E7=9A=84=E6=A8=A1=E5=9E=8B=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E8=AD=A6=E5=91=8A=EF=BC=8C=E5=B9=B6=E5=9C=A8model=5Fc?= =?UTF-8?q?onfig.toml=E4=B8=AD=E8=AE=BE=E5=AE=9A=E5=AF=B9=E5=BA=94task?= =?UTF-8?q?=E7=9A=84=E6=85=A2=E8=AF=B7=E6=B1=82=E9=98=88=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/chat/replyer/group_generator.py | 2 -- src/chat/replyer/private_generator.py | 2 -- src/config/api_ada_configs.py | 3 +++ src/llm_models/utils_model.py | 25 ++++++++++++++++++++++--- template/model_config_template.toml | 13 ++++++++++++- 5 files changed, 37 insertions(+), 8 deletions(-) diff --git a/src/chat/replyer/group_generator.py b/src/chat/replyer/group_generator.py index 2ee403cc..3dd52272 100644 --- a/src/chat/replyer/group_generator.py +++ b/src/chat/replyer/group_generator.py @@ -839,8 +839,6 @@ class DefaultReplyer: continue timing_logs.append(f"{chinese_name}: {duration:.1f}s") - if duration > 12: - logger.warning(f"回复生成前信息获取耗时过长: {chinese_name} 耗时: {duration:.1f}s,请使用更快的模型") logger.info(f"回复准备: {'; '.join(timing_logs)}; {almost_zero_str} <0.1s") expression_habits_block, selected_expressions = results_dict["expression_habits"] diff --git a/src/chat/replyer/private_generator.py b/src/chat/replyer/private_generator.py index 93543cf5..396e806f 100644 --- a/src/chat/replyer/private_generator.py +++ b/src/chat/replyer/private_generator.py @@ -760,8 +760,6 @@ class PrivateReplyer: continue timing_logs.append(f"{chinese_name}: {duration:.1f}s") - if duration > 12: - logger.warning(f"回复生成前信息获取耗时过长: {chinese_name} 耗时: {duration:.1f}s,请使用更快的模型") logger.info(f"回复准备: {'; '.join(timing_logs)}; {almost_zero_str} <0.1s") expression_habits_block, selected_expressions = results_dict["expression_habits"] diff --git a/src/config/api_ada_configs.py b/src/config/api_ada_configs.py index 3fc9c878..897e1f87 100644 --- a/src/config/api_ada_configs.py +++ b/src/config/api_ada_configs.py @@ -88,6 +88,9 @@ class TaskConfig(ConfigBase): temperature: float = 0.3 """模型温度""" + slow_threshold: float = 15.0 + """慢请求阈值(秒),超过此值会输出警告日志""" + @dataclass class ModelTaskConfig(ConfigBase): diff --git a/src/llm_models/utils_model.py b/src/llm_models/utils_model.py index 060ec922..44ff2de3 100644 --- a/src/llm_models/utils_model.py +++ b/src/llm_models/utils_model.py @@ -47,6 +47,21 @@ class LLMRequest: } """模型使用量记录,用于进行负载均衡,对应为(total_tokens, penalty, usage_penalty),惩罚值是为了能在某个模型请求不给力或正在被使用的时候进行调整""" + def _check_slow_request(self, time_cost: float, model_name: str) -> None: + """检查请求是否过慢并输出警告日志 + + Args: + time_cost: 请求耗时(秒) + model_name: 使用的模型名称 + """ + threshold = self.model_for_task.slow_threshold + if time_cost > threshold: + request_type_display = self.request_type or "未知任务" + logger.warning( + f"LLM请求耗时过长: {request_type_display} 使用模型 {model_name} 耗时 {time_cost:.1f}s(阈值: {threshold}s),请考虑使用更快的模型\n" + f" 如果你认为该警告出现得过于频繁,请调整model_config.toml中对应任务的slow_threshold至符合你实际情况的合理值" + ) + async def generate_response_for_image( self, prompt: str, @@ -86,6 +101,8 @@ class LLMRequest: if not reasoning_content and content: content, extracted_reasoning = self._extract_reasoning(content) reasoning_content = extracted_reasoning + time_cost = time.time() - start_time + self._check_slow_request(time_cost, model_info.name) if usage := response.usage: llm_usage_recorder.record_usage_to_database( model_info=model_info, @@ -93,7 +110,7 @@ class LLMRequest: user_id="system", request_type=self.request_type, endpoint="/chat/completions", - time_cost=time.time() - start_time, + time_cost=time_cost, ) return content, (reasoning_content, model_info.name, tool_calls) @@ -198,7 +215,8 @@ class LLMRequest: tool_options=tool_built, ) - logger.debug(f"LLM请求总耗时: {time.time() - start_time}") + time_cost = time.time() - start_time + logger.debug(f"LLM请求总耗时: {time_cost}") logger.debug(f"LLM生成内容: {response}") content = response.content @@ -207,6 +225,7 @@ class LLMRequest: if not reasoning_content and content: content, extracted_reasoning = self._extract_reasoning(content) reasoning_content = extracted_reasoning + self._check_slow_request(time_cost, model_info.name) if usage := response.usage: llm_usage_recorder.record_usage_to_database( model_info=model_info, @@ -214,7 +233,7 @@ class LLMRequest: user_id="system", request_type=self.request_type, endpoint="/chat/completions", - time_cost=time.time() - start_time, + time_cost=time_cost, ) return content or "", (reasoning_content, model_info.name, tool_calls) diff --git a/template/model_config_template.toml b/template/model_config_template.toml index 38f57a79..1e072d13 100644 --- a/template/model_config_template.toml +++ b/template/model_config_template.toml @@ -1,5 +1,5 @@ [inner] -version = "1.8.1" +version = "1.8.2" # 配置文件版本号迭代规则同bot_config.toml @@ -135,37 +135,45 @@ price_out = 0 model_list = ["siliconflow-deepseek-v3.2"] # 使用的模型列表,每个子项对应上面的模型名称(name) temperature = 0.2 # 模型温度,新V3建议0.1-0.3 max_tokens = 2048 # 最大输出token数 +slow_threshold = 15.0 # 慢请求阈值(秒),模型等待回复时间超过此值会输出警告日志 [model_task_config.utils_small] # 在麦麦的一些组件中使用的小模型,消耗量较大,建议使用速度较快的小模型 model_list = ["qwen3-30b","qwen3-next-80b"] temperature = 0.7 max_tokens = 2048 +slow_threshold = 10.0 [model_task_config.tool_use] #工具调用模型,需要使用支持工具调用的模型 model_list = ["qwen3-30b","qwen3-next-80b"] temperature = 0.7 max_tokens = 800 +slow_threshold = 10.0 [model_task_config.replyer] # 首要回复模型,还用于表达器和表达方式学习 model_list = ["siliconflow-deepseek-v3.2","siliconflow-deepseek-v3.2-think","siliconflow-glm-4.6","siliconflow-glm-4.6-think"] temperature = 0.3 # 模型温度,新V3建议0.1-0.3 max_tokens = 2048 +slow_threshold = 25.0 [model_task_config.planner] #决策:负责决定麦麦该什么时候回复的模型 model_list = ["siliconflow-deepseek-v3.2"] temperature = 0.3 max_tokens = 800 +slow_threshold = 12.0 [model_task_config.vlm] # 图像识别模型 model_list = ["qwen3-vl-30"] max_tokens = 256 +slow_threshold = 15.0 [model_task_config.voice] # 语音识别模型 model_list = ["sensevoice-small"] +slow_threshold = 12.0 # 嵌入模型 [model_task_config.embedding] model_list = ["bge-m3"] +slow_threshold = 5.0 # ------------LPMM知识库模型------------ @@ -173,13 +181,16 @@ model_list = ["bge-m3"] model_list = ["siliconflow-deepseek-v3.2"] temperature = 0.2 max_tokens = 800 +slow_threshold = 20.0 [model_task_config.lpmm_rdf_build] # RDF构建模型 model_list = ["siliconflow-deepseek-v3.2"] temperature = 0.2 max_tokens = 800 +slow_threshold = 20.0 [model_task_config.lpmm_qa] # 问答模型 model_list = ["siliconflow-deepseek-v3.2"] temperature = 0.7 max_tokens = 800 +slow_threshold = 20.0 From 9b6ca0e0a58288c9d027d810da8448c286dbd850 Mon Sep 17 00:00:00 2001 From: Ronifue Date: Sun, 30 Nov 2025 14:24:51 +0800 Subject: [PATCH 31/61] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dlpmm=5Fsearch=5F?= =?UTF-8?q?knowledge=E5=B7=A5=E5=85=B7=E4=B8=ADlimit=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/built_in/knowledge/lpmm_get_knowledge.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/built_in/knowledge/lpmm_get_knowledge.py b/src/plugins/built_in/knowledge/lpmm_get_knowledge.py index 174bef1c..bb627e5e 100644 --- a/src/plugins/built_in/knowledge/lpmm_get_knowledge.py +++ b/src/plugins/built_in/knowledge/lpmm_get_knowledge.py @@ -15,7 +15,7 @@ class SearchKnowledgeFromLPMMTool(BaseTool): description = "从知识库中搜索相关信息,如果你需要知识,就使用这个工具" parameters = [ ("query", ToolParamType.STRING, "搜索查询关键词", True, None), - ("limit", ToolParamType.INTEGER, "希望返回的相关知识条数,默认5", False, 5), + ("limit", ToolParamType.INTEGER, "希望返回的相关知识条数,默认5", False, None), ] available_for_llm = global_config.lpmm_knowledge.enable From c790dcb705407ea2404f422b73e46877ed62e203 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Sun, 30 Nov 2025 15:53:39 +0800 Subject: [PATCH 32/61] feat: Enhance authentication mechanism to support token retrieval from both Cookie and Header - Added a new auth module to manage authentication-related functions. - Updated existing routes in expression_routes, person_routes, plugin_routes, and routes to utilize the new authentication methods. - Implemented CORS middleware in webui_server for development environment support. - Introduced functions to set and clear authentication cookies. - Enhanced token verification to prioritize Cookie over Header for improved security and flexibility. --- src/webui/auth.py | 127 ++++++++++++++++++++++++ src/webui/emoji_routes.py | 87 +++++++++-------- src/webui/expression_routes.py | 52 +++++----- src/webui/person_routes.py | 44 ++++----- src/webui/plugin_routes.py | 76 +++++++++------ src/webui/routes.py | 170 ++++++++++++++++++++++++++++----- src/webui/webui_server.py | 21 ++++ 7 files changed, 429 insertions(+), 148 deletions(-) create mode 100644 src/webui/auth.py diff --git a/src/webui/auth.py b/src/webui/auth.py new file mode 100644 index 00000000..8d52a5e3 --- /dev/null +++ b/src/webui/auth.py @@ -0,0 +1,127 @@ +""" +WebUI 认证模块 +提供统一的认证依赖,支持 Cookie 和 Header 两种方式 +""" + +from typing import Optional +from fastapi import HTTPException, Cookie, Header, Response, Request +from src.common.logger import get_logger +from .token_manager import get_token_manager + +logger = get_logger("webui.auth") + +# Cookie 配置 +COOKIE_NAME = "maibot_session" +COOKIE_MAX_AGE = 7 * 24 * 60 * 60 # 7天 + + +def get_current_token( + request: Request, + maibot_session: Optional[str] = Cookie(None), + authorization: Optional[str] = Header(None), +) -> str: + """ + 获取当前请求的 token,优先从 Cookie 获取,其次从 Header 获取 + + Args: + request: FastAPI Request 对象 + maibot_session: Cookie 中的 token + authorization: Authorization Header (Bearer token) + + Returns: + 验证通过的 token + + Raises: + HTTPException: 认证失败时抛出 401 错误 + """ + token = None + + # 优先从 Cookie 获取 + if maibot_session: + token = maibot_session + # 其次从 Header 获取(兼容旧版本) + elif authorization and authorization.startswith("Bearer "): + token = authorization.replace("Bearer ", "") + + if not token: + raise HTTPException(status_code=401, detail="未提供有效的认证信息") + + # 验证 token + token_manager = get_token_manager() + if not token_manager.verify_token(token): + raise HTTPException(status_code=401, detail="Token 无效或已过期") + + return token + + +def set_auth_cookie(response: Response, token: str) -> None: + """ + 设置认证 Cookie + + Args: + response: FastAPI Response 对象 + token: 要设置的 token + """ + response.set_cookie( + key=COOKIE_NAME, + value=token, + max_age=COOKIE_MAX_AGE, + httponly=True, # 防止 JS 读取 + samesite="lax", # 允许同站导航时发送 Cookie(兼容开发环境代理) + secure=False, # 本地开发不强制 HTTPS,生产环境建议设为 True + path="/", # 确保 Cookie 在所有路径下可用 + ) + logger.debug(f"已设置认证 Cookie: {token[:8]}...") + + +def clear_auth_cookie(response: Response) -> None: + """ + 清除认证 Cookie + + Args: + response: FastAPI Response 对象 + """ + response.delete_cookie( + key=COOKIE_NAME, + httponly=True, + samesite="lax", + path="/", + ) + logger.debug("已清除认证 Cookie") + + +def verify_auth_token_from_cookie_or_header( + maibot_session: Optional[str] = None, + authorization: Optional[str] = None, +) -> bool: + """ + 验证认证 Token,支持从 Cookie 或 Header 获取 + + Args: + maibot_session: Cookie 中的 token + authorization: Authorization header (Bearer token) + + Returns: + 验证成功返回 True + + Raises: + HTTPException: 认证失败时抛出 401 错误 + """ + token = None + + # 优先从 Cookie 获取 + if maibot_session: + token = maibot_session + # 其次从 Header 获取(兼容旧版本) + elif authorization and authorization.startswith("Bearer "): + token = authorization.replace("Bearer ", "") + + if not token: + raise HTTPException(status_code=401, detail="未提供有效的认证信息") + + # 验证 token + token_manager = get_token_manager() + if not token_manager.verify_token(token): + raise HTTPException(status_code=401, detail="Token 无效或已过期") + + return True diff --git a/src/webui/emoji_routes.py b/src/webui/emoji_routes.py index 94f77b95..c4d90ea2 100644 --- a/src/webui/emoji_routes.py +++ b/src/webui/emoji_routes.py @@ -1,12 +1,13 @@ """表情包管理 API 路由""" -from fastapi import APIRouter, HTTPException, Header, Query, UploadFile, File, Form +from fastapi import APIRouter, HTTPException, Header, Query, UploadFile, File, Form, Cookie from fastapi.responses import FileResponse from pydantic import BaseModel from typing import Optional, List, Annotated from src.common.logger import get_logger from src.common.database.database_model import Emoji from .token_manager import get_token_manager +from .auth import verify_auth_token_from_cookie_or_header import time import os import hashlib @@ -101,18 +102,12 @@ class BatchDeleteResponse(BaseModel): failed_ids: List[int] = [] -def verify_auth_token(authorization: Optional[str]) -> bool: - """验证认证 Token""" - if not authorization or not authorization.startswith("Bearer "): - raise HTTPException(status_code=401, detail="未提供有效的认证信息") - - token = authorization.replace("Bearer ", "") - token_manager = get_token_manager() - - if not token_manager.verify_token(token): - raise HTTPException(status_code=401, detail="Token 无效或已过期") - - return True +def verify_auth_token( + maibot_session: Optional[str] = None, + authorization: Optional[str] = None, +) -> bool: + """验证认证 Token,支持 Cookie 和 Header""" + return verify_auth_token_from_cookie_or_header(maibot_session, authorization) def emoji_to_response(emoji: Emoji) -> EmojiResponse: @@ -144,6 +139,7 @@ async def get_emoji_list( format: Optional[str] = Query(None, description="格式筛选"), sort_by: Optional[str] = Query("usage_count", description="排序字段"), sort_order: Optional[str] = Query("desc", description="排序方向"), + maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None), ): """ @@ -164,7 +160,7 @@ async def get_emoji_list( 表情包列表 """ try: - verify_auth_token(authorization) + verify_auth_token(maibot_session, authorization) # 构建查询 query = Emoji.select() @@ -222,7 +218,7 @@ async def get_emoji_list( @router.get("/{emoji_id}", response_model=EmojiDetailResponse) -async def get_emoji_detail(emoji_id: int, authorization: Optional[str] = Header(None)): +async def get_emoji_detail(emoji_id: int, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)): """ 获取表情包详细信息 @@ -234,7 +230,7 @@ async def get_emoji_detail(emoji_id: int, authorization: Optional[str] = Header( 表情包详细信息 """ try: - verify_auth_token(authorization) + verify_auth_token(maibot_session, authorization) emoji = Emoji.get_or_none(Emoji.id == emoji_id) @@ -251,7 +247,7 @@ async def get_emoji_detail(emoji_id: int, authorization: Optional[str] = Header( @router.patch("/{emoji_id}", response_model=EmojiUpdateResponse) -async def update_emoji(emoji_id: int, request: EmojiUpdateRequest, authorization: Optional[str] = Header(None)): +async def update_emoji(emoji_id: int, request: EmojiUpdateRequest, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)): """ 增量更新表情包(只更新提供的字段) @@ -264,7 +260,7 @@ async def update_emoji(emoji_id: int, request: EmojiUpdateRequest, authorization 更新结果 """ try: - verify_auth_token(authorization) + verify_auth_token(maibot_session, authorization) emoji = Emoji.get_or_none(Emoji.id == emoji_id) @@ -303,7 +299,7 @@ async def update_emoji(emoji_id: int, request: EmojiUpdateRequest, authorization @router.delete("/{emoji_id}", response_model=EmojiDeleteResponse) -async def delete_emoji(emoji_id: int, authorization: Optional[str] = Header(None)): +async def delete_emoji(emoji_id: int, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)): """ 删除表情包 @@ -315,7 +311,7 @@ async def delete_emoji(emoji_id: int, authorization: Optional[str] = Header(None 删除结果 """ try: - verify_auth_token(authorization) + verify_auth_token(maibot_session, authorization) emoji = Emoji.get_or_none(Emoji.id == emoji_id) @@ -340,7 +336,7 @@ async def delete_emoji(emoji_id: int, authorization: Optional[str] = Header(None @router.get("/stats/summary") -async def get_emoji_stats(authorization: Optional[str] = Header(None)): +async def get_emoji_stats(maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)): """ 获取表情包统计数据 @@ -351,7 +347,7 @@ async def get_emoji_stats(authorization: Optional[str] = Header(None)): 统计数据 """ try: - verify_auth_token(authorization) + verify_auth_token(maibot_session, authorization) total = Emoji.select().count() registered = Emoji.select().where(Emoji.is_registered).count() @@ -395,7 +391,7 @@ async def get_emoji_stats(authorization: Optional[str] = Header(None)): @router.post("/{emoji_id}/register", response_model=EmojiUpdateResponse) -async def register_emoji(emoji_id: int, authorization: Optional[str] = Header(None)): +async def register_emoji(emoji_id: int, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)): """ 注册表情包(快捷操作) @@ -407,7 +403,7 @@ async def register_emoji(emoji_id: int, authorization: Optional[str] = Header(No 更新结果 """ try: - verify_auth_token(authorization) + verify_auth_token(maibot_session, authorization) emoji = Emoji.get_or_none(Emoji.id == emoji_id) @@ -435,7 +431,7 @@ async def register_emoji(emoji_id: int, authorization: Optional[str] = Header(No @router.post("/{emoji_id}/ban", response_model=EmojiUpdateResponse) -async def ban_emoji(emoji_id: int, authorization: Optional[str] = Header(None)): +async def ban_emoji(emoji_id: int, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)): """ 禁用表情包(快捷操作) @@ -447,7 +443,7 @@ async def ban_emoji(emoji_id: int, authorization: Optional[str] = Header(None)): 更新结果 """ try: - verify_auth_token(authorization) + verify_auth_token(maibot_session, authorization) emoji = Emoji.get_or_none(Emoji.id == emoji_id) @@ -474,6 +470,7 @@ async def ban_emoji(emoji_id: int, authorization: Optional[str] = Header(None)): async def get_emoji_thumbnail( emoji_id: int, token: Optional[str] = Query(None, description="访问令牌"), + maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None), ): """ @@ -481,21 +478,31 @@ async def get_emoji_thumbnail( Args: emoji_id: 表情包ID - token: 访问令牌(通过 query parameter) + token: 访问令牌(通过 query parameter,用于向后兼容) + maibot_session: Cookie 中的 token authorization: Authorization header Returns: 表情包图片文件 """ try: - # 优先使用 query parameter 中的 token(用于 img 标签) - if token: - token_manager = get_token_manager() - if not token_manager.verify_token(token): - raise HTTPException(status_code=401, detail="Token 无效或已过期") - else: - # 如果没有 query token,则验证 Authorization header - verify_auth_token(authorization) + token_manager = get_token_manager() + is_valid = False + + # 1. 优先使用 Cookie + if maibot_session and token_manager.verify_token(maibot_session): + is_valid = True + # 2. 其次使用 query parameter(用于向后兼容 img 标签) + elif token and token_manager.verify_token(token): + is_valid = True + # 3. 最后使用 Authorization header + elif authorization and authorization.startswith("Bearer "): + auth_token = authorization.replace("Bearer ", "") + if token_manager.verify_token(auth_token): + is_valid = True + + if not is_valid: + raise HTTPException(status_code=401, detail="Token 无效或已过期") emoji = Emoji.get_or_none(Emoji.id == emoji_id) @@ -528,7 +535,7 @@ async def get_emoji_thumbnail( @router.post("/batch/delete", response_model=BatchDeleteResponse) -async def batch_delete_emojis(request: BatchDeleteRequest, authorization: Optional[str] = Header(None)): +async def batch_delete_emojis(request: BatchDeleteRequest, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)): """ 批量删除表情包 @@ -540,7 +547,7 @@ async def batch_delete_emojis(request: BatchDeleteRequest, authorization: Option 批量删除结果 """ try: - verify_auth_token(authorization) + verify_auth_token(maibot_session, authorization) if not request.emoji_ids: raise HTTPException(status_code=400, detail="未提供要删除的表情包ID") @@ -601,6 +608,7 @@ async def upload_emoji( description: DescriptionForm = "", emotion: EmotionForm = "", is_registered: IsRegisteredForm = True, + maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None), ): """ @@ -617,7 +625,7 @@ async def upload_emoji( 上传结果和表情包信息 """ try: - verify_auth_token(authorization) + verify_auth_token(maibot_session, authorization) # 验证文件类型 if not file.content_type: @@ -721,6 +729,7 @@ async def batch_upload_emoji( files: EmojiFiles, emotion: EmotionForm = "", is_registered: IsRegisteredForm = True, + maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None), ): """ @@ -736,7 +745,7 @@ async def batch_upload_emoji( 批量上传结果 """ try: - verify_auth_token(authorization) + verify_auth_token(maibot_session, authorization) results = { "success": True, diff --git a/src/webui/expression_routes.py b/src/webui/expression_routes.py index 40f87489..f92219ab 100644 --- a/src/webui/expression_routes.py +++ b/src/webui/expression_routes.py @@ -1,11 +1,12 @@ """表达方式管理 API 路由""" -from fastapi import APIRouter, HTTPException, Header, Query +from fastapi import APIRouter, HTTPException, Header, Query, Cookie from pydantic import BaseModel from typing import Optional, List, Dict from src.common.logger import get_logger from src.common.database.database_model import Expression, ChatStreams from .token_manager import get_token_manager +from .auth import verify_auth_token_from_cookie_or_header import time logger = get_logger("webui.expression") @@ -87,18 +88,12 @@ class ExpressionCreateResponse(BaseModel): data: ExpressionResponse -def verify_auth_token(authorization: Optional[str]) -> bool: - """验证认证 Token""" - if not authorization or not authorization.startswith("Bearer "): - raise HTTPException(status_code=401, detail="未提供有效的认证信息") - - token = authorization.replace("Bearer ", "") - token_manager = get_token_manager() - - if not token_manager.verify_token(token): - raise HTTPException(status_code=401, detail="Token 无效或已过期") - - return True +def verify_auth_token( + maibot_session: Optional[str] = None, + authorization: Optional[str] = None, +) -> bool: + """验证认证 Token,支持 Cookie 和 Header""" + return verify_auth_token_from_cookie_or_header(maibot_session, authorization) def expression_to_response(expression: Expression) -> ExpressionResponse: @@ -162,7 +157,7 @@ class ChatListResponse(BaseModel): @router.get("/chats", response_model=ChatListResponse) -async def get_chat_list(authorization: Optional[str] = Header(None)): +async def get_chat_list(maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)): """ 获取所有聊天列表(用于下拉选择) @@ -173,7 +168,7 @@ async def get_chat_list(authorization: Optional[str] = Header(None)): 聊天列表 """ try: - verify_auth_token(authorization) + verify_auth_token(maibot_session, authorization) chat_list = [] for cs in ChatStreams.select(): @@ -205,6 +200,7 @@ async def get_expression_list( page_size: int = Query(20, ge=1, le=100, description="每页数量"), search: Optional[str] = Query(None, description="搜索关键词"), chat_id: Optional[str] = Query(None, description="聊天ID筛选"), + maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None), ): """ @@ -221,7 +217,7 @@ async def get_expression_list( 表达方式列表 """ try: - verify_auth_token(authorization) + verify_auth_token(maibot_session, authorization) # 构建查询 query = Expression.select() @@ -265,7 +261,7 @@ async def get_expression_list( @router.get("/{expression_id}", response_model=ExpressionDetailResponse) -async def get_expression_detail(expression_id: int, authorization: Optional[str] = Header(None)): +async def get_expression_detail(expression_id: int, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)): """ 获取表达方式详细信息 @@ -277,7 +273,7 @@ async def get_expression_detail(expression_id: int, authorization: Optional[str] 表达方式详细信息 """ try: - verify_auth_token(authorization) + verify_auth_token(maibot_session, authorization) expression = Expression.get_or_none(Expression.id == expression_id) @@ -294,7 +290,7 @@ async def get_expression_detail(expression_id: int, authorization: Optional[str] @router.post("/", response_model=ExpressionCreateResponse) -async def create_expression(request: ExpressionCreateRequest, authorization: Optional[str] = Header(None)): +async def create_expression(request: ExpressionCreateRequest, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)): """ 创建新的表达方式 @@ -306,7 +302,7 @@ async def create_expression(request: ExpressionCreateRequest, authorization: Opt 创建结果 """ try: - verify_auth_token(authorization) + verify_auth_token(maibot_session, authorization) current_time = time.time() @@ -336,7 +332,7 @@ async def create_expression(request: ExpressionCreateRequest, authorization: Opt @router.patch("/{expression_id}", response_model=ExpressionUpdateResponse) async def update_expression( - expression_id: int, request: ExpressionUpdateRequest, authorization: Optional[str] = Header(None) + expression_id: int, request: ExpressionUpdateRequest, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None) ): """ 增量更新表达方式(只更新提供的字段) @@ -350,7 +346,7 @@ async def update_expression( 更新结果 """ try: - verify_auth_token(authorization) + verify_auth_token(maibot_session, authorization) expression = Expression.get_or_none(Expression.id == expression_id) @@ -386,7 +382,7 @@ async def update_expression( @router.delete("/{expression_id}", response_model=ExpressionDeleteResponse) -async def delete_expression(expression_id: int, authorization: Optional[str] = Header(None)): +async def delete_expression(expression_id: int, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)): """ 删除表达方式 @@ -398,7 +394,7 @@ async def delete_expression(expression_id: int, authorization: Optional[str] = H 删除结果 """ try: - verify_auth_token(authorization) + verify_auth_token(maibot_session, authorization) expression = Expression.get_or_none(Expression.id == expression_id) @@ -429,7 +425,7 @@ class BatchDeleteRequest(BaseModel): @router.post("/batch/delete", response_model=ExpressionDeleteResponse) -async def batch_delete_expressions(request: BatchDeleteRequest, authorization: Optional[str] = Header(None)): +async def batch_delete_expressions(request: BatchDeleteRequest, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)): """ 批量删除表达方式 @@ -441,7 +437,7 @@ async def batch_delete_expressions(request: BatchDeleteRequest, authorization: O 删除结果 """ try: - verify_auth_token(authorization) + verify_auth_token(maibot_session, authorization) if not request.ids: raise HTTPException(status_code=400, detail="未提供要删除的表达方式ID") @@ -470,7 +466,7 @@ async def batch_delete_expressions(request: BatchDeleteRequest, authorization: O @router.get("/stats/summary") -async def get_expression_stats(authorization: Optional[str] = Header(None)): +async def get_expression_stats(maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)): """ 获取表达方式统计数据 @@ -481,7 +477,7 @@ async def get_expression_stats(authorization: Optional[str] = Header(None)): 统计数据 """ try: - verify_auth_token(authorization) + verify_auth_token(maibot_session, authorization) total = Expression.select().count() diff --git a/src/webui/person_routes.py b/src/webui/person_routes.py index 5935a2fa..0b70a3a2 100644 --- a/src/webui/person_routes.py +++ b/src/webui/person_routes.py @@ -1,11 +1,12 @@ """人物信息管理 API 路由""" -from fastapi import APIRouter, HTTPException, Header, Query +from fastapi import APIRouter, HTTPException, Header, Query, Cookie from pydantic import BaseModel from typing import Optional, List, Dict from src.common.logger import get_logger from src.common.database.database_model import PersonInfo from .token_manager import get_token_manager +from .auth import verify_auth_token_from_cookie_or_header import json import time @@ -91,18 +92,12 @@ class BatchDeleteResponse(BaseModel): failed_ids: List[str] = [] -def verify_auth_token(authorization: Optional[str]) -> bool: - """验证认证 Token""" - if not authorization or not authorization.startswith("Bearer "): - raise HTTPException(status_code=401, detail="未提供有效的认证信息") - - token = authorization.replace("Bearer ", "") - token_manager = get_token_manager() - - if not token_manager.verify_token(token): - raise HTTPException(status_code=401, detail="Token 无效或已过期") - - return True +def verify_auth_token( + maibot_session: Optional[str] = None, + authorization: Optional[str] = None, +) -> bool: + """验证认证 Token,支持 Cookie 和 Header""" + return verify_auth_token_from_cookie_or_header(maibot_session, authorization) def parse_group_nick_name(group_nick_name_str: Optional[str]) -> Optional[List[Dict[str, str]]]: @@ -141,6 +136,7 @@ async def get_person_list( search: Optional[str] = Query(None, description="搜索关键词"), is_known: Optional[bool] = Query(None, description="是否已认识筛选"), platform: Optional[str] = Query(None, description="平台筛选"), + maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None), ): """ @@ -158,7 +154,7 @@ async def get_person_list( 人物信息列表 """ try: - verify_auth_token(authorization) + verify_auth_token(maibot_session, authorization) # 构建查询 query = PersonInfo.select() @@ -205,7 +201,7 @@ async def get_person_list( @router.get("/{person_id}", response_model=PersonDetailResponse) -async def get_person_detail(person_id: str, authorization: Optional[str] = Header(None)): +async def get_person_detail(person_id: str, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)): """ 获取人物详细信息 @@ -217,7 +213,7 @@ async def get_person_detail(person_id: str, authorization: Optional[str] = Heade 人物详细信息 """ try: - verify_auth_token(authorization) + verify_auth_token(maibot_session, authorization) person = PersonInfo.get_or_none(PersonInfo.person_id == person_id) @@ -234,7 +230,7 @@ async def get_person_detail(person_id: str, authorization: Optional[str] = Heade @router.patch("/{person_id}", response_model=PersonUpdateResponse) -async def update_person(person_id: str, request: PersonUpdateRequest, authorization: Optional[str] = Header(None)): +async def update_person(person_id: str, request: PersonUpdateRequest, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)): """ 增量更新人物信息(只更新提供的字段) @@ -247,7 +243,7 @@ async def update_person(person_id: str, request: PersonUpdateRequest, authorizat 更新结果 """ try: - verify_auth_token(authorization) + verify_auth_token(maibot_session, authorization) person = PersonInfo.get_or_none(PersonInfo.person_id == person_id) @@ -283,7 +279,7 @@ async def update_person(person_id: str, request: PersonUpdateRequest, authorizat @router.delete("/{person_id}", response_model=PersonDeleteResponse) -async def delete_person(person_id: str, authorization: Optional[str] = Header(None)): +async def delete_person(person_id: str, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)): """ 删除人物信息 @@ -295,7 +291,7 @@ async def delete_person(person_id: str, authorization: Optional[str] = Header(No 删除结果 """ try: - verify_auth_token(authorization) + verify_auth_token(maibot_session, authorization) person = PersonInfo.get_or_none(PersonInfo.person_id == person_id) @@ -320,7 +316,7 @@ async def delete_person(person_id: str, authorization: Optional[str] = Header(No @router.get("/stats/summary") -async def get_person_stats(authorization: Optional[str] = Header(None)): +async def get_person_stats(maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)): """ 获取人物信息统计数据 @@ -331,7 +327,7 @@ async def get_person_stats(authorization: Optional[str] = Header(None)): 统计数据 """ try: - verify_auth_token(authorization) + verify_auth_token(maibot_session, authorization) total = PersonInfo.select().count() known = PersonInfo.select().where(PersonInfo.is_known).count() @@ -353,7 +349,7 @@ async def get_person_stats(authorization: Optional[str] = Header(None)): @router.post("/batch/delete", response_model=BatchDeleteResponse) -async def batch_delete_persons(request: BatchDeleteRequest, authorization: Optional[str] = Header(None)): +async def batch_delete_persons(request: BatchDeleteRequest, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)): """ 批量删除人物信息 @@ -365,7 +361,7 @@ async def batch_delete_persons(request: BatchDeleteRequest, authorization: Optio 批量删除结果 """ try: - verify_auth_token(authorization) + verify_auth_token(maibot_session, authorization) if not request.person_ids: raise HTTPException(status_code=400, detail="未提供要删除的人物ID") diff --git a/src/webui/plugin_routes.py b/src/webui/plugin_routes.py index bf4784df..1f2d85da 100644 --- a/src/webui/plugin_routes.py +++ b/src/webui/plugin_routes.py @@ -1,4 +1,4 @@ -from fastapi import APIRouter, HTTPException, Header +from fastapi import APIRouter, HTTPException, Header, Cookie from pydantic import BaseModel, Field from typing import Optional, List, Dict, Any from pathlib import Path @@ -19,6 +19,20 @@ router = APIRouter(prefix="/plugins", tags=["插件管理"]) set_update_progress_callback(update_progress) +def get_token_from_cookie_or_header( + maibot_session: Optional[str] = None, + authorization: Optional[str] = None, +) -> Optional[str]: + """从 Cookie 或 Header 获取 token""" + # 优先从 Cookie 获取 + if maibot_session: + return maibot_session + # 其次从 Header 获取 + if authorization and authorization.startswith("Bearer "): + return authorization.replace("Bearer ", "") + return None + + def parse_version(version_str: str) -> tuple[int, int, int]: """ 解析版本号字符串 @@ -210,12 +224,12 @@ async def check_git_status() -> GitStatusResponse: @router.get("/mirrors", response_model=AvailableMirrorsResponse) -async def get_available_mirrors(authorization: Optional[str] = Header(None)) -> AvailableMirrorsResponse: +async def get_available_mirrors(maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)) -> AvailableMirrorsResponse: """ 获取所有可用的镜像源配置 """ # Token 验证 - token = authorization.replace("Bearer ", "") if authorization else None + token = get_token_from_cookie_or_header(maibot_session, authorization) token_manager = get_token_manager() if not token or not token_manager.verify_token(token): raise HTTPException(status_code=401, detail="未授权:无效的访问令牌") @@ -240,12 +254,12 @@ async def get_available_mirrors(authorization: Optional[str] = Header(None)) -> @router.post("/mirrors", response_model=MirrorConfigResponse) -async def add_mirror(request: AddMirrorRequest, authorization: Optional[str] = Header(None)) -> MirrorConfigResponse: +async def add_mirror(request: AddMirrorRequest, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)) -> MirrorConfigResponse: """ 添加新的镜像源 """ # Token 验证 - token = authorization.replace("Bearer ", "") if authorization else None + token = get_token_from_cookie_or_header(maibot_session, authorization) token_manager = get_token_manager() if not token or not token_manager.verify_token(token): raise HTTPException(status_code=401, detail="未授权:无效的访问令牌") @@ -280,13 +294,13 @@ async def add_mirror(request: AddMirrorRequest, authorization: Optional[str] = H @router.put("/mirrors/{mirror_id}", response_model=MirrorConfigResponse) async def update_mirror( - mirror_id: str, request: UpdateMirrorRequest, authorization: Optional[str] = Header(None) + mirror_id: str, request: UpdateMirrorRequest, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None) ) -> MirrorConfigResponse: """ 更新镜像源配置 """ # Token 验证 - token = authorization.replace("Bearer ", "") if authorization else None + token = get_token_from_cookie_or_header(maibot_session, authorization) token_manager = get_token_manager() if not token or not token_manager.verify_token(token): raise HTTPException(status_code=401, detail="未授权:无效的访问令牌") @@ -323,12 +337,12 @@ async def update_mirror( @router.delete("/mirrors/{mirror_id}") -async def delete_mirror(mirror_id: str, authorization: Optional[str] = Header(None)) -> Dict[str, Any]: +async def delete_mirror(mirror_id: str, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)) -> Dict[str, Any]: """ 删除镜像源 """ # Token 验证 - token = authorization.replace("Bearer ", "") if authorization else None + token = get_token_from_cookie_or_header(maibot_session, authorization) token_manager = get_token_manager() if not token or not token_manager.verify_token(token): raise HTTPException(status_code=401, detail="未授权:无效的访问令牌") @@ -346,7 +360,7 @@ async def delete_mirror(mirror_id: str, authorization: Optional[str] = Header(No @router.post("/fetch-raw", response_model=FetchRawFileResponse) async def fetch_raw_file( - request: FetchRawFileRequest, authorization: Optional[str] = Header(None) + request: FetchRawFileRequest, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None) ) -> FetchRawFileResponse: """ 获取 GitHub 仓库的 Raw 文件内容 @@ -356,7 +370,7 @@ async def fetch_raw_file( 注意:此接口可公开访问,用于获取插件仓库等公开资源 """ # Token 验证(可选,用于日志记录) - token = authorization.replace("Bearer ", "") if authorization else None + token = get_token_from_cookie_or_header(maibot_session, authorization) token_manager = get_token_manager() is_authenticated = token and token_manager.verify_token(token) @@ -431,7 +445,7 @@ async def fetch_raw_file( @router.post("/clone", response_model=CloneRepositoryResponse) async def clone_repository( - request: CloneRepositoryRequest, authorization: Optional[str] = Header(None) + request: CloneRepositoryRequest, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None) ) -> CloneRepositoryResponse: """ 克隆 GitHub 仓库到本地 @@ -439,7 +453,7 @@ async def clone_repository( 支持多镜像源自动切换和错误重试 """ # Token 验证 - token = authorization.replace("Bearer ", "") if authorization else None + token = get_token_from_cookie_or_header(maibot_session, authorization) token_manager = get_token_manager() if not token or not token_manager.verify_token(token): raise HTTPException(status_code=401, detail="未授权:无效的访问令牌") @@ -471,14 +485,14 @@ async def clone_repository( @router.post("/install") -async def install_plugin(request: InstallPluginRequest, authorization: Optional[str] = Header(None)) -> Dict[str, Any]: +async def install_plugin(request: InstallPluginRequest, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)) -> Dict[str, Any]: """ 安装插件 从 Git 仓库克隆插件到本地插件目录 """ # Token 验证 - token = authorization.replace("Bearer ", "") if authorization else None + token = get_token_from_cookie_or_header(maibot_session, authorization) token_manager = get_token_manager() if not token or not token_manager.verify_token(token): raise HTTPException(status_code=401, detail="未授权:无效的访问令牌") @@ -675,7 +689,7 @@ async def install_plugin(request: InstallPluginRequest, authorization: Optional[ @router.post("/uninstall") async def uninstall_plugin( - request: UninstallPluginRequest, authorization: Optional[str] = Header(None) + request: UninstallPluginRequest, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None) ) -> Dict[str, Any]: """ 卸载插件 @@ -683,7 +697,7 @@ async def uninstall_plugin( 删除插件目录及其所有文件 """ # Token 验证 - token = authorization.replace("Bearer ", "") if authorization else None + token = get_token_from_cookie_or_header(maibot_session, authorization) token_manager = get_token_manager() if not token or not token_manager.verify_token(token): raise HTTPException(status_code=401, detail="未授权:无效的访问令牌") @@ -810,14 +824,14 @@ async def uninstall_plugin( @router.post("/update") -async def update_plugin(request: UpdatePluginRequest, authorization: Optional[str] = Header(None)) -> Dict[str, Any]: +async def update_plugin(request: UpdatePluginRequest, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)) -> Dict[str, Any]: """ 更新插件 删除旧版本,重新克隆新版本 """ # Token 验证 - token = authorization.replace("Bearer ", "") if authorization else None + token = get_token_from_cookie_or_header(maibot_session, authorization) token_manager = get_token_manager() if not token or not token_manager.verify_token(token): raise HTTPException(status_code=401, detail="未授权:无效的访问令牌") @@ -1029,14 +1043,14 @@ async def update_plugin(request: UpdatePluginRequest, authorization: Optional[st @router.get("/installed") -async def get_installed_plugins(authorization: Optional[str] = Header(None)) -> Dict[str, Any]: +async def get_installed_plugins(maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)) -> Dict[str, Any]: """ 获取已安装的插件列表 扫描 plugins 目录,返回所有已安装插件的 ID 和基本信息 """ # Token 验证 - token = authorization.replace("Bearer ", "") if authorization else None + token = get_token_from_cookie_or_header(maibot_session, authorization) token_manager = get_token_manager() if not token or not token_manager.verify_token(token): raise HTTPException(status_code=401, detail="未授权:无效的访问令牌") @@ -1169,7 +1183,7 @@ class UpdatePluginConfigRequest(BaseModel): @router.get("/config/{plugin_id}/schema") -async def get_plugin_config_schema(plugin_id: str, authorization: Optional[str] = Header(None)) -> Dict[str, Any]: +async def get_plugin_config_schema(plugin_id: str, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)) -> Dict[str, Any]: """ 获取插件配置 Schema @@ -1177,7 +1191,7 @@ async def get_plugin_config_schema(plugin_id: str, authorization: Optional[str] 用于前端动态生成配置表单。 """ # Token 验证 - token = authorization.replace("Bearer ", "") if authorization else None + token = get_token_from_cookie_or_header(maibot_session, authorization) token_manager = get_token_manager() if not token or not token_manager.verify_token(token): raise HTTPException(status_code=401, detail="未授权:无效的访问令牌") @@ -1302,14 +1316,14 @@ async def get_plugin_config_schema(plugin_id: str, authorization: Optional[str] @router.get("/config/{plugin_id}") -async def get_plugin_config(plugin_id: str, authorization: Optional[str] = Header(None)) -> Dict[str, Any]: +async def get_plugin_config(plugin_id: str, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)) -> Dict[str, Any]: """ 获取插件当前配置值 返回插件的当前配置值。 """ # Token 验证 - token = authorization.replace("Bearer ", "") if authorization else None + token = get_token_from_cookie_or_header(maibot_session, authorization) token_manager = get_token_manager() if not token or not token_manager.verify_token(token): raise HTTPException(status_code=401, detail="未授权:无效的访问令牌") @@ -1358,7 +1372,7 @@ async def get_plugin_config(plugin_id: str, authorization: Optional[str] = Heade @router.put("/config/{plugin_id}") async def update_plugin_config( - plugin_id: str, request: UpdatePluginConfigRequest, authorization: Optional[str] = Header(None) + plugin_id: str, request: UpdatePluginConfigRequest, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None) ) -> Dict[str, Any]: """ 更新插件配置 @@ -1366,7 +1380,7 @@ async def update_plugin_config( 保存新的配置值到插件的配置文件。 """ # Token 验证 - token = authorization.replace("Bearer ", "") if authorization else None + token = get_token_from_cookie_or_header(maibot_session, authorization) token_manager = get_token_manager() if not token or not token_manager.verify_token(token): raise HTTPException(status_code=401, detail="未授权:无效的访问令牌") @@ -1431,14 +1445,14 @@ async def update_plugin_config( @router.post("/config/{plugin_id}/reset") -async def reset_plugin_config(plugin_id: str, authorization: Optional[str] = Header(None)) -> Dict[str, Any]: +async def reset_plugin_config(plugin_id: str, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)) -> Dict[str, Any]: """ 重置插件配置为默认值 删除当前配置文件,下次加载插件时将使用默认配置。 """ # Token 验证 - token = authorization.replace("Bearer ", "") if authorization else None + token = get_token_from_cookie_or_header(maibot_session, authorization) token_manager = get_token_manager() if not token or not token_manager.verify_token(token): raise HTTPException(status_code=401, detail="未授权:无效的访问令牌") @@ -1491,14 +1505,14 @@ async def reset_plugin_config(plugin_id: str, authorization: Optional[str] = Hea @router.post("/config/{plugin_id}/toggle") -async def toggle_plugin(plugin_id: str, authorization: Optional[str] = Header(None)) -> Dict[str, Any]: +async def toggle_plugin(plugin_id: str, maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None)) -> Dict[str, Any]: """ 切换插件启用状态 切换插件配置中的 enabled 字段。 """ # Token 验证 - token = authorization.replace("Bearer ", "") if authorization else None + token = get_token_from_cookie_or_header(maibot_session, authorization) token_manager = get_token_manager() if not token or not token_manager.verify_token(token): raise HTTPException(status_code=401, detail="未授权:无效的访问令牌") diff --git a/src/webui/routes.py b/src/webui/routes.py index 26eaf553..c3d6fd9e 100644 --- a/src/webui/routes.py +++ b/src/webui/routes.py @@ -1,10 +1,11 @@ """WebUI API 路由""" -from fastapi import APIRouter, HTTPException, Header +from fastapi import APIRouter, HTTPException, Header, Response, Request, Cookie from pydantic import BaseModel, Field from typing import Optional from src.common.logger import get_logger from .token_manager import get_token_manager +from .auth import set_auth_cookie, clear_auth_cookie from .config_routes import router as config_router from .statistics_routes import router as statistics_router from .person_routes import router as person_router @@ -51,6 +52,7 @@ class TokenVerifyResponse(BaseModel): valid: bool = Field(..., description="Token 是否有效") message: str = Field(..., description="验证结果消息") + is_first_setup: bool = Field(False, description="是否为首次设置") class TokenUpdateRequest(BaseModel): @@ -102,22 +104,27 @@ async def health_check(): @router.post("/auth/verify", response_model=TokenVerifyResponse) -async def verify_token(request: TokenVerifyRequest): +async def verify_token(request: TokenVerifyRequest, response: Response): """ - 验证访问令牌 + 验证访问令牌,验证成功后设置 HttpOnly Cookie Args: request: 包含 token 的验证请求 + response: FastAPI Response 对象 Returns: - 验证结果 + 验证结果(包含首次配置状态) """ try: token_manager = get_token_manager() is_valid = token_manager.verify_token(request.token) if is_valid: - return TokenVerifyResponse(valid=True, message="Token 验证成功") + # 设置 HttpOnly Cookie + set_auth_cookie(response, request.token) + # 同时返回首次配置状态,避免额外请求 + is_first_setup = token_manager.is_first_setup() + return TokenVerifyResponse(valid=True, message="Token 验证成功", is_first_setup=is_first_setup) else: return TokenVerifyResponse(valid=False, message="Token 无效或已过期") except Exception as e: @@ -125,24 +132,86 @@ async def verify_token(request: TokenVerifyRequest): raise HTTPException(status_code=500, detail="Token 验证失败") from e +@router.post("/auth/logout") +async def logout(response: Response): + """ + 登出并清除认证 Cookie + + Args: + response: FastAPI Response 对象 + + Returns: + 登出结果 + """ + clear_auth_cookie(response) + return {"success": True, "message": "已成功登出"} + + +@router.get("/auth/check") +async def check_auth_status( + request: Request, + maibot_session: Optional[str] = Cookie(None), + authorization: Optional[str] = Header(None), +): + """ + 检查当前认证状态(用于前端判断是否已登录) + + Returns: + 认证状态 + """ + try: + token = None + + # 优先从 Cookie 获取 + if maibot_session: + token = maibot_session + # 其次从 Header 获取 + elif authorization and authorization.startswith("Bearer "): + token = authorization.replace("Bearer ", "") + + if not token: + return {"authenticated": False} + + token_manager = get_token_manager() + if token_manager.verify_token(token): + return {"authenticated": True} + else: + return {"authenticated": False} + except Exception: + return {"authenticated": False} + + @router.post("/auth/update", response_model=TokenUpdateResponse) -async def update_token(request: TokenUpdateRequest, authorization: Optional[str] = Header(None)): +async def update_token( + request: TokenUpdateRequest, + response: Response, + req: Request, + maibot_session: Optional[str] = Cookie(None), + authorization: Optional[str] = Header(None), +): """ 更新访问令牌(需要当前有效的 token) Args: request: 包含新 token 的更新请求 + response: FastAPI Response 对象 + maibot_session: Cookie 中的 token authorization: Authorization header (Bearer token) Returns: 更新结果 """ try: - # 验证当前 token - if not authorization or not authorization.startswith("Bearer "): + # 验证当前 token(优先 Cookie,其次 Header) + current_token = None + if maibot_session: + current_token = maibot_session + elif authorization and authorization.startswith("Bearer "): + current_token = authorization.replace("Bearer ", "") + + if not current_token: raise HTTPException(status_code=401, detail="未提供有效的认证信息") - current_token = authorization.replace("Bearer ", "") token_manager = get_token_manager() if not token_manager.verify_token(current_token): @@ -150,6 +219,10 @@ async def update_token(request: TokenUpdateRequest, authorization: Optional[str] # 更新 token success, message = token_manager.update_token(request.new_token) + + # 如果更新成功,更新 Cookie + if success: + set_auth_cookie(response, request.new_token) return TokenUpdateResponse(success=success, message=message) except HTTPException: @@ -160,22 +233,34 @@ async def update_token(request: TokenUpdateRequest, authorization: Optional[str] @router.post("/auth/regenerate", response_model=TokenRegenerateResponse) -async def regenerate_token(authorization: Optional[str] = Header(None)): +async def regenerate_token( + response: Response, + request: Request, + maibot_session: Optional[str] = Cookie(None), + authorization: Optional[str] = Header(None), +): """ 重新生成访问令牌(需要当前有效的 token) Args: + response: FastAPI Response 对象 + maibot_session: Cookie 中的 token authorization: Authorization header (Bearer token) Returns: 新生成的 token """ try: - # 验证当前 token - if not authorization or not authorization.startswith("Bearer "): - raise HTTPException(status_code=401, detail="未提供有效的认证信息") + # 验证当前 token(优先 Cookie,其次 Header) + current_token = None + if maibot_session: + current_token = maibot_session + elif authorization and authorization.startswith("Bearer "): + current_token = authorization.replace("Bearer ", "") - current_token = authorization.replace("Bearer ", "") + if not current_token: + raise HTTPException(status_code=401, detail="未提供有效的认证信息") + token_manager = get_token_manager() if not token_manager.verify_token(current_token): @@ -183,6 +268,9 @@ async def regenerate_token(authorization: Optional[str] = Header(None)): # 重新生成 token new_token = token_manager.regenerate_token() + + # 更新 Cookie + set_auth_cookie(response, new_token) return TokenRegenerateResponse(success=True, token=new_token, message="Token 已重新生成") except HTTPException: @@ -193,22 +281,32 @@ async def regenerate_token(authorization: Optional[str] = Header(None)): @router.get("/setup/status", response_model=FirstSetupStatusResponse) -async def get_setup_status(authorization: Optional[str] = Header(None)): +async def get_setup_status( + request: Request, + maibot_session: Optional[str] = Cookie(None), + authorization: Optional[str] = Header(None), +): """ 获取首次配置状态 Args: + maibot_session: Cookie 中的 token authorization: Authorization header (Bearer token) Returns: 首次配置状态 """ try: - # 验证 token - if not authorization or not authorization.startswith("Bearer "): + # 验证 token(优先 Cookie,其次 Header) + current_token = None + if maibot_session: + current_token = maibot_session + elif authorization and authorization.startswith("Bearer "): + current_token = authorization.replace("Bearer ", "") + + if not current_token: raise HTTPException(status_code=401, detail="未提供有效的认证信息") - current_token = authorization.replace("Bearer ", "") token_manager = get_token_manager() if not token_manager.verify_token(current_token): @@ -226,22 +324,32 @@ async def get_setup_status(authorization: Optional[str] = Header(None)): @router.post("/setup/complete", response_model=CompleteSetupResponse) -async def complete_setup(authorization: Optional[str] = Header(None)): +async def complete_setup( + request: Request, + maibot_session: Optional[str] = Cookie(None), + authorization: Optional[str] = Header(None), +): """ 标记首次配置完成 Args: + maibot_session: Cookie 中的 token authorization: Authorization header (Bearer token) Returns: 完成结果 """ try: - # 验证 token - if not authorization or not authorization.startswith("Bearer "): + # 验证 token(优先 Cookie,其次 Header) + current_token = None + if maibot_session: + current_token = maibot_session + elif authorization and authorization.startswith("Bearer "): + current_token = authorization.replace("Bearer ", "") + + if not current_token: raise HTTPException(status_code=401, detail="未提供有效的认证信息") - current_token = authorization.replace("Bearer ", "") token_manager = get_token_manager() if not token_manager.verify_token(current_token): @@ -259,22 +367,32 @@ async def complete_setup(authorization: Optional[str] = Header(None)): @router.post("/setup/reset", response_model=ResetSetupResponse) -async def reset_setup(authorization: Optional[str] = Header(None)): +async def reset_setup( + request: Request, + maibot_session: Optional[str] = Cookie(None), + authorization: Optional[str] = Header(None), +): """ 重置首次配置状态,允许重新进入配置向导 Args: + maibot_session: Cookie 中的 token authorization: Authorization header (Bearer token) Returns: 重置结果 """ try: - # 验证 token - if not authorization or not authorization.startswith("Bearer "): + # 验证 token(优先 Cookie,其次 Header) + current_token = None + if maibot_session: + current_token = maibot_session + elif authorization and authorization.startswith("Bearer "): + current_token = authorization.replace("Bearer ", "") + + if not current_token: raise HTTPException(status_code=401, detail="未提供有效的认证信息") - current_token = authorization.replace("Bearer ", "") token_manager = get_token_manager() if not token_manager.verify_token(current_token): diff --git a/src/webui/webui_server.py b/src/webui/webui_server.py index 5997c3ba..ba6b7480 100644 --- a/src/webui/webui_server.py +++ b/src/webui/webui_server.py @@ -5,6 +5,7 @@ import asyncio import mimetypes from pathlib import Path from fastapi import FastAPI +from fastapi.middleware.cors import CORSMiddleware from fastapi.responses import FileResponse from uvicorn import Config, Server as UvicornServer from src.common.logger import get_logger @@ -21,6 +22,9 @@ class WebUIServer: self.app = FastAPI(title="MaiBot WebUI") self._server = None + # 配置 CORS(支持开发环境跨域请求) + self._setup_cors() + # 显示 Access Token self._show_access_token() @@ -28,6 +32,23 @@ class WebUIServer: self._register_api_routes() self._setup_static_files() + def _setup_cors(self): + """配置 CORS 中间件""" + # 开发环境需要允许前端开发服务器的跨域请求 + self.app.add_middleware( + CORSMiddleware, + allow_origins=[ + "http://localhost:5173", # Vite 开发服务器 + "http://127.0.0.1:5173", + "http://localhost:8001", # 生产环境 + "http://127.0.0.1:8001", + ], + allow_credentials=True, # 允许携带 Cookie + allow_methods=["*"], + allow_headers=["*"], + ) + logger.debug("✅ CORS 中间件已配置") + def _show_access_token(self): """显示 WebUI Access Token""" try: From 99f80c08daa97d1ef4840da05c775c0ce7610fa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Sun, 30 Nov 2025 16:06:16 +0800 Subject: [PATCH 33/61] WebUI d2dd4a0dd1a527574ded4a09e6c113175858d306 --- webui/dist/assets/index-B31Ybn7V.js | 52 +++++++++++++++++++++++++++++ webui/dist/assets/index-DuV8F13p.js | 52 ----------------------------- webui/dist/index.html | 2 +- 3 files changed, 53 insertions(+), 53 deletions(-) create mode 100644 webui/dist/assets/index-B31Ybn7V.js delete mode 100644 webui/dist/assets/index-DuV8F13p.js diff --git a/webui/dist/assets/index-B31Ybn7V.js b/webui/dist/assets/index-B31Ybn7V.js new file mode 100644 index 00000000..06eeb156 --- /dev/null +++ b/webui/dist/assets/index-B31Ybn7V.js @@ -0,0 +1,52 @@ +import{r as u,j as e,L as Kc,e as Jt,b as fy,f as py,g as gy,h as jy,k as lt,l as vy,m as yy,O as Np,n as Ny}from"./router-CWhjJi2n.js";import{a as by,b as wy,g as _y}from"./react-vendor-Dtc2IqVY.js";import{I as Sy,c as Cy,J as ai,K as qc,L as wu,M as ky,N as er,O as sr,P as Ty,n as _u}from"./utils-CCeOswSm.js";import{L as bp,T as wp,C as _p,R as Ey,a as Sp,V as zy,b as My,S as Cp,c as Ay,d as kp,I as Dy,e as Tp,f as Oy,g as Ep,h as Ry,i as Ly,j as Uy,O as zp,P as By,k as Mp,l as Ap,D as Dp,A as Op,m as Rp,n as Hy,o as qy,p as Lp,q as Gy,r as Up,s as Vy,t as Fy,u as $y,v as Qy,w as Yy,x as Bp,y as Hp,F as qp,z as Gp,B as Vp,E as Xy,G as Fp,H as $p,J as Qp,K as Yp,M as Xp,N as Kp,Q as Zp,U as Ky,W as Zy,X as Jy}from"./radix-extra-Cw1azsjZ.js";import{aj as Iy,ak as Py,al as Wy,am as eN,an as Gc,ao as Vc,ap as tr,aq as sN,ar as Su,as as Fc,at as tN,au as aN,av as lN}from"./charts-Dhri-zxi.js";import{S as nN,H as Jp,O as Ip,o as iN,C as Pp,p as Wp,T as eg,D as sg,R as rN,q as cN,I as tg,J as oN,K as ag,L as lg,M as dN,N as ng,V as uN,Q as ig,U as rg,X as mN,Y as hN,Z as cg,_ as xN,$ as fN,a0 as og,a1 as pN,a2 as gN,a3 as dg,a4 as jN,a5 as vN,a6 as yN,a7 as ug,a8 as mg,a9 as hg,aa as xg,ab as fg,ac as pg,ad as NN}from"./radix-core-BlBHu_Lw.js";import{R as pt,P as Nr,C as pa,a as Da,Z as ln,b as Wc,F as Aa,c as bN,S as Rl,A as wN,D as _N,d as eo,e as Wn,M as si,T as SN,X as li,f as gg,g as CN,I as Xt,h as ba,i as fa,j as so,E as mr,k as Zt,l as jg,H as kN,m as es,n as nl,U as hr,o as Ou,p as Ru,L as Yf,K as vg,q as ro,r as TN,s as dr,t as vt,u as EN,B as ir,v as to,w as $u,x as zN,y as MN,z as _t,G as xr,J as ti,N as Ll,O as fr,Q as AN,V as DN,W as br,Y as ot,_ as ao,$ as nn,a0 as wr,a1 as cn,a2 as il,a3 as _r,a4 as Qu,a5 as ON,a6 as RN,a7 as LN,a8 as rn,a9 as UN,aa as Lu,ab as pr,ac as BN,ad as HN,ae as Uu,af as qN,ag as yg,ah as Xf,ai as GN,aj as VN,ak as FN,al as Ol,am as Cu,an as Kf,ao as $N,ap as QN,aq as YN,ar as XN,as as KN,at as Ng,au as bg,av as wg,aw as ZN,ax as JN,ay as Zf,az as IN,aA as PN,aB as Jf,aC as WN,aD as eb}from"./icons-Bw5y5Hqz.js";import{S as sb,p as tb,j as ab,a as lb,E as If,R as nb,o as ib}from"./codemirror-BHeANvwm.js";import{_ as Lt,c as rb,g as _g,D as cb}from"./misc-Ii-X5qWA.js";import{u as ob,a as Pf,D as db,c as ub,S as mb,h as hb,b as xb,s as fb,K as pb,P as gb,d as jb,C as vb}from"./dnd-Dyi3CnuX.js";import{D as yb,U as Nb}from"./uppy-DSH7n_-V.js";import{M as bb,r as wb,a as _b,b as Sb}from"./markdown-A1ShuLvG.js";import{r as Cb,H as lo,P as no,u as kb,a as Tb,R as Eb,B as zb,b as Mb,C as Ab,M as Db,c as Ob}from"./reactflow-B3n3_Vkw.js";(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const h of document.querySelectorAll('link[rel="modulepreload"]'))d(h);new MutationObserver(h=>{for(const x of h)if(x.type==="childList")for(const f of x.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&d(f)}).observe(document,{childList:!0,subtree:!0});function c(h){const x={};return h.integrity&&(x.integrity=h.integrity),h.referrerPolicy&&(x.referrerPolicy=h.referrerPolicy),h.crossOrigin==="use-credentials"?x.credentials="include":h.crossOrigin==="anonymous"?x.credentials="omit":x.credentials="same-origin",x}function d(h){if(h.ep)return;h.ep=!0;const x=c(h);fetch(h.href,x)}})();var ku={exports:{}},ar={},Tu={exports:{}},Eu={};var Wf;function Rb(){return Wf||(Wf=1,(function(n){function r(N,G){var q=N.length;N.push(G);e:for(;0>>1,_=N[ie];if(0>>1;ieh($,q))de<_&&0>h(ge,$)?(N[ie]=ge,N[de]=q,ie=de):(N[ie]=$,N[xe]=q,ie=xe);else if(de<_&&0>h(ge,q))N[ie]=ge,N[de]=q,ie=de;else break e}}return G}function h(N,G){var q=N.sortIndex-G.sortIndex;return q!==0?q:N.id-G.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var x=performance;n.unstable_now=function(){return x.now()}}else{var f=Date,j=f.now();n.unstable_now=function(){return f.now()-j}}var p=[],w=[],v=1,k=null,T=3,E=!1,R=!1,K=!1,U=!1,A=typeof setTimeout=="function"?setTimeout:null,Z=typeof clearTimeout=="function"?clearTimeout:null,H=typeof setImmediate<"u"?setImmediate:null;function z(N){for(var G=c(w);G!==null;){if(G.callback===null)d(w);else if(G.startTime<=N)d(w),G.sortIndex=G.expirationTime,r(p,G);else break;G=c(w)}}function B(N){if(K=!1,z(N),!R)if(c(p)!==null)R=!0,X||(X=!0,ye());else{var G=c(w);G!==null&&_e(B,G.startTime-N)}}var X=!1,S=-1,O=5,te=-1;function he(){return U?!0:!(n.unstable_now()-teN&&he());){var ie=k.callback;if(typeof ie=="function"){k.callback=null,T=k.priorityLevel;var _=ie(k.expirationTime<=N);if(N=n.unstable_now(),typeof _=="function"){k.callback=_,z(N),G=!0;break s}k===c(p)&&d(p),z(N)}else d(p);k=c(p)}if(k!==null)G=!0;else{var me=c(w);me!==null&&_e(B,me.startTime-N),G=!1}}break e}finally{k=null,T=q,E=!1}G=void 0}}finally{G?ye():X=!1}}}var ye;if(typeof H=="function")ye=function(){H(Ne)};else if(typeof MessageChannel<"u"){var pe=new MessageChannel,je=pe.port2;pe.port1.onmessage=Ne,ye=function(){je.postMessage(null)}}else ye=function(){A(Ne,0)};function _e(N,G){S=A(function(){N(n.unstable_now())},G)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(N){N.callback=null},n.unstable_forceFrameRate=function(N){0>N||125ie?(N.sortIndex=q,r(w,N),c(p)===null&&N===c(w)&&(K?(Z(S),S=-1):K=!0,_e(B,q-ie))):(N.sortIndex=_,r(p,N),R||E||(R=!0,X||(X=!0,ye()))),N},n.unstable_shouldYield=he,n.unstable_wrapCallback=function(N){var G=T;return function(){var q=T;T=G;try{return N.apply(this,arguments)}finally{T=q}}}})(Eu)),Eu}var ep;function Lb(){return ep||(ep=1,Tu.exports=Rb()),Tu.exports}var sp;function Ub(){if(sp)return ar;sp=1;var n=Lb(),r=by(),c=wy();function d(s){var t="https://react.dev/errors/"+s;if(1_||(s.current=ie[_],ie[_]=null,_--)}function $(s,t){_++,ie[_]=s.current,s.current=t}var de=me(null),ge=me(null),le=me(null),L=me(null);function F(s,t){switch($(le,t),$(ge,s),$(de,null),t.nodeType){case 9:case 11:s=(s=t.documentElement)&&(s=s.namespaceURI)?ff(s):0;break;default:if(s=t.tagName,t=t.namespaceURI)t=ff(t),s=pf(t,s);else switch(s){case"svg":s=1;break;case"math":s=2;break;default:s=0}}xe(de),$(de,s)}function D(){xe(de),xe(ge),xe(le)}function ee(s){s.memoizedState!==null&&$(L,s);var t=de.current,a=pf(t,s.type);t!==a&&($(ge,s),$(de,a))}function we(s){ge.current===s&&(xe(de),xe(ge)),L.current===s&&(xe(L),Ji._currentValue=q)}var ze,ss;function Ze(s){if(ze===void 0)try{throw Error()}catch(a){var t=a.stack.trim().match(/\n( *(at )?)/);ze=t&&t[1]||"",ss=-1)":-1i||C[l]!==I[i]){var ae=` +`+C[l].replace(" at new "," at ");return s.displayName&&ae.includes("")&&(ae=ae.replace("",s.displayName)),ae}while(1<=l&&0<=i);break}}}finally{Ls=!1,Error.prepareStackTrace=a}return(a=s?s.displayName||s.name:"")?Ze(a):""}function re(s,t){switch(s.tag){case 26:case 27:case 5:return Ze(s.type);case 16:return Ze("Lazy");case 13:return s.child!==t&&t!==null?Ze("Suspense Fallback"):Ze("Suspense");case 19:return Ze("SuspenseList");case 0:case 15:return Gs(s.type,!1);case 11:return Gs(s.type.render,!1);case 1:return Gs(s.type,!0);case 31:return Ze("Activity");default:return""}}function be(s){try{var t="",a=null;do t+=re(s,a),a=s,s=s.return;while(s);return t}catch(l){return` +Error generating stack: `+l.message+` +`+l.stack}}var Xe=Object.prototype.hasOwnProperty,Ue=n.unstable_scheduleCallback,st=n.unstable_cancelCallback,It=n.unstable_shouldYield,bt=n.unstable_requestPaint,Je=n.unstable_now,Be=n.unstable_getCurrentPriorityLevel,jt=n.unstable_ImmediatePriority,nt=n.unstable_UserBlockingPriority,St=n.unstable_NormalPriority,Ct=n.unstable_LowPriority,rl=n.unstable_IdlePriority,cl=n.log,ol=n.unstable_setDisableYieldValue,Se=null,Oe=null;function it(s){if(typeof cl=="function"&&ol(s),Oe&&typeof Oe.setStrictMode=="function")try{Oe.setStrictMode(Se,s)}catch{}}var dt=Math.clz32?Math.clz32:ut,di=Math.log,on=Math.LN2;function ut(s){return s>>>=0,s===0?32:31-(di(s)/on|0)|0}var Pt=256,Wt=262144,Ua=4194304;function Ut(s){var t=s&42;if(t!==0)return t;switch(s&-s){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:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return s&261888;case 262144:case 524288:case 1048576:case 2097152:return s&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return s&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return s}}function Ba(s,t,a){var l=s.pendingLanes;if(l===0)return 0;var i=0,o=s.suspendedLanes,m=s.pingedLanes;s=s.warmLanes;var g=l&134217727;return g!==0?(l=g&~o,l!==0?i=Ut(l):(m&=g,m!==0?i=Ut(m):a||(a=g&~s,a!==0&&(i=Ut(a))))):(g=l&~o,g!==0?i=Ut(g):m!==0?i=Ut(m):a||(a=l&~s,a!==0&&(i=Ut(a)))),i===0?0:t!==0&&t!==i&&(t&o)===0&&(o=i&-i,a=t&-t,o>=a||o===32&&(a&4194048)!==0)?t:i}function _a(s,t){return(s.pendingLanes&~(s.suspendedLanes&~s.pingedLanes)&t)===0}function W(s,t){switch(s){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32: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 t+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 ve(){var s=Ua;return Ua<<=1,(Ua&62914560)===0&&(Ua=4194304),s}function Me(s){for(var t=[],a=0;31>a;a++)t.push(s);return t}function tt(s,t){s.pendingLanes|=t,t!==268435456&&(s.suspendedLanes=0,s.pingedLanes=0,s.warmLanes=0)}function Bt(s,t,a,l,i,o){var m=s.pendingLanes;s.pendingLanes=a,s.suspendedLanes=0,s.pingedLanes=0,s.warmLanes=0,s.expiredLanes&=a,s.entangledLanes&=a,s.errorRecoveryDisabledLanes&=a,s.shellSuspendCounter=0;var g=s.entanglements,C=s.expirationTimes,I=s.hiddenUpdates;for(a=m&~a;0"u")return null;try{return s.activeElement||s.body}catch{return s.body}}var oj=/[\n"\\]/g;function aa(s){return s.replace(oj,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function go(s,t,a,l,i,o,m,g){s.name="",m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"?s.type=m:s.removeAttribute("type"),t!=null?m==="number"?(t===0&&s.value===""||s.value!=t)&&(s.value=""+ta(t)):s.value!==""+ta(t)&&(s.value=""+ta(t)):m!=="submit"&&m!=="reset"||s.removeAttribute("value"),t!=null?jo(s,m,ta(t)):a!=null?jo(s,m,ta(a)):l!=null&&s.removeAttribute("value"),i==null&&o!=null&&(s.defaultChecked=!!o),i!=null&&(s.checked=i&&typeof i!="function"&&typeof i!="symbol"),g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"?s.name=""+ta(g):s.removeAttribute("name")}function cm(s,t,a,l,i,o,m,g){if(o!=null&&typeof o!="function"&&typeof o!="symbol"&&typeof o!="boolean"&&(s.type=o),t!=null||a!=null){if(!(o!=="submit"&&o!=="reset"||t!=null)){po(s);return}a=a!=null?""+ta(a):"",t=t!=null?""+ta(t):a,g||t===s.value||(s.value=t),s.defaultValue=t}l=l??i,l=typeof l!="function"&&typeof l!="symbol"&&!!l,s.checked=g?s.checked:!!l,s.defaultChecked=!!l,m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"&&(s.name=m),po(s)}function jo(s,t,a){t==="number"&&zr(s.ownerDocument)===s||s.defaultValue===""+a||(s.defaultValue=""+a)}function pn(s,t,a,l){if(s=s.options,t){t={};for(var i=0;i"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),wo=!1;if(Ga)try{var xi={};Object.defineProperty(xi,"passive",{get:function(){wo=!0}}),window.addEventListener("test",xi,xi),window.removeEventListener("test",xi,xi)}catch{wo=!1}var ul=null,_o=null,Ar=null;function fm(){if(Ar)return Ar;var s,t=_o,a=t.length,l,i="value"in ul?ul.value:ul.textContent,o=i.length;for(s=0;s=gi),Nm=" ",bm=!1;function wm(s,t){switch(s){case"keyup":return Uj.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function _m(s){return s=s.detail,typeof s=="object"&&"data"in s?s.data:null}var yn=!1;function Hj(s,t){switch(s){case"compositionend":return _m(t);case"keypress":return t.which!==32?null:(bm=!0,Nm);case"textInput":return s=t.data,s===Nm&&bm?null:s;default:return null}}function qj(s,t){if(yn)return s==="compositionend"||!Eo&&wm(s,t)?(s=fm(),Ar=_o=ul=null,yn=!1,s):null;switch(s){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:a,offset:t-s};s=l}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=Am(a)}}function Om(s,t){return s&&t?s===t?!0:s&&s.nodeType===3?!1:t&&t.nodeType===3?Om(s,t.parentNode):"contains"in s?s.contains(t):s.compareDocumentPosition?!!(s.compareDocumentPosition(t)&16):!1:!1}function Rm(s){s=s!=null&&s.ownerDocument!=null&&s.ownerDocument.defaultView!=null?s.ownerDocument.defaultView:window;for(var t=zr(s.document);t instanceof s.HTMLIFrameElement;){try{var a=typeof t.contentWindow.location.href=="string"}catch{a=!1}if(a)s=t.contentWindow;else break;t=zr(s.document)}return t}function Ao(s){var t=s&&s.nodeName&&s.nodeName.toLowerCase();return t&&(t==="input"&&(s.type==="text"||s.type==="search"||s.type==="tel"||s.type==="url"||s.type==="password")||t==="textarea"||s.contentEditable==="true")}var Kj=Ga&&"documentMode"in document&&11>=document.documentMode,Nn=null,Do=null,Ni=null,Oo=!1;function Lm(s,t,a){var l=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;Oo||Nn==null||Nn!==zr(l)||(l=Nn,"selectionStart"in l&&Ao(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),Ni&&yi(Ni,l)||(Ni=l,l=Sc(Do,"onSelect"),0>=m,i-=m,Ca=1<<32-dt(t)+i|a<Ie?(is=Te,Te=null):is=Te.sibling;var ys=P(V,Te,J[Ie],oe);if(ys===null){Te===null&&(Te=is);break}s&&Te&&ys.alternate===null&&t(V,Te),M=o(ys,M,Ie),vs===null?Ee=ys:vs.sibling=ys,vs=ys,Te=is}if(Ie===J.length)return a(V,Te),fs&&Fa(V,Ie),Ee;if(Te===null){for(;IeIe?(is=Te,Te=null):is=Te.sibling;var Dl=P(V,Te,ys.value,oe);if(Dl===null){Te===null&&(Te=is);break}s&&Te&&Dl.alternate===null&&t(V,Te),M=o(Dl,M,Ie),vs===null?Ee=Dl:vs.sibling=Dl,vs=Dl,Te=is}if(ys.done)return a(V,Te),fs&&Fa(V,Ie),Ee;if(Te===null){for(;!ys.done;Ie++,ys=J.next())ys=ue(V,ys.value,oe),ys!==null&&(M=o(ys,M,Ie),vs===null?Ee=ys:vs.sibling=ys,vs=ys);return fs&&Fa(V,Ie),Ee}for(Te=l(Te);!ys.done;Ie++,ys=J.next())ys=se(Te,V,Ie,ys.value,oe),ys!==null&&(s&&ys.alternate!==null&&Te.delete(ys.key===null?Ie:ys.key),M=o(ys,M,Ie),vs===null?Ee=ys:vs.sibling=ys,vs=ys);return s&&Te.forEach(function(xy){return t(V,xy)}),fs&&Fa(V,Ie),Ee}function ks(V,M,J,oe){if(typeof J=="object"&&J!==null&&J.type===K&&J.key===null&&(J=J.props.children),typeof J=="object"&&J!==null){switch(J.$$typeof){case E:e:{for(var Ee=J.key;M!==null;){if(M.key===Ee){if(Ee=J.type,Ee===K){if(M.tag===7){a(V,M.sibling),oe=i(M,J.props.children),oe.return=V,V=oe;break e}}else if(M.elementType===Ee||typeof Ee=="object"&&Ee!==null&&Ee.$$typeof===O&&Jl(Ee)===M.type){a(V,M.sibling),oe=i(M,J.props),ki(oe,J),oe.return=V,V=oe;break e}a(V,M);break}else t(V,M);M=M.sibling}J.type===K?(oe=Ql(J.props.children,V.mode,oe,J.key),oe.return=V,V=oe):(oe=Vr(J.type,J.key,J.props,null,V.mode,oe),ki(oe,J),oe.return=V,V=oe)}return m(V);case R:e:{for(Ee=J.key;M!==null;){if(M.key===Ee)if(M.tag===4&&M.stateNode.containerInfo===J.containerInfo&&M.stateNode.implementation===J.implementation){a(V,M.sibling),oe=i(M,J.children||[]),oe.return=V,V=oe;break e}else{a(V,M);break}else t(V,M);M=M.sibling}oe=Go(J,V.mode,oe),oe.return=V,V=oe}return m(V);case O:return J=Jl(J),ks(V,M,J,oe)}if(_e(J))return Ce(V,M,J,oe);if(ye(J)){if(Ee=ye(J),typeof Ee!="function")throw Error(d(150));return J=Ee.call(J),De(V,M,J,oe)}if(typeof J.then=="function")return ks(V,M,Zr(J),oe);if(J.$$typeof===H)return ks(V,M,Qr(V,J),oe);Jr(V,J)}return typeof J=="string"&&J!==""||typeof J=="number"||typeof J=="bigint"?(J=""+J,M!==null&&M.tag===6?(a(V,M.sibling),oe=i(M,J),oe.return=V,V=oe):(a(V,M),oe=qo(J,V.mode,oe),oe.return=V,V=oe),m(V)):a(V,M)}return function(V,M,J,oe){try{Ci=0;var Ee=ks(V,M,J,oe);return An=null,Ee}catch(Te){if(Te===Mn||Te===Xr)throw Te;var vs=qt(29,Te,null,V.mode);return vs.lanes=oe,vs.return=V,vs}finally{}}}var Pl=nh(!0),ih=nh(!1),pl=!1;function Wo(s){s.updateQueue={baseState:s.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function ed(s,t){s=s.updateQueue,t.updateQueue===s&&(t.updateQueue={baseState:s.baseState,firstBaseUpdate:s.firstBaseUpdate,lastBaseUpdate:s.lastBaseUpdate,shared:s.shared,callbacks:null})}function gl(s){return{lane:s,tag:0,payload:null,callback:null,next:null}}function jl(s,t,a){var l=s.updateQueue;if(l===null)return null;if(l=l.shared,(Ns&2)!==0){var i=l.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),l.pending=t,t=Gr(s),Fm(s,null,a),t}return qr(s,l,t,a),Gr(s)}function Ti(s,t,a){if(t=t.updateQueue,t!==null&&(t=t.shared,(a&4194048)!==0)){var l=t.lanes;l&=s.pendingLanes,a|=l,t.lanes=a,dl(s,a)}}function sd(s,t){var a=s.updateQueue,l=s.alternate;if(l!==null&&(l=l.updateQueue,a===l)){var i=null,o=null;if(a=a.firstBaseUpdate,a!==null){do{var m={lane:a.lane,tag:a.tag,payload:a.payload,callback:null,next:null};o===null?i=o=m:o=o.next=m,a=a.next}while(a!==null);o===null?i=o=t:o=o.next=t}else i=o=t;a={baseState:l.baseState,firstBaseUpdate:i,lastBaseUpdate:o,shared:l.shared,callbacks:l.callbacks},s.updateQueue=a;return}s=a.lastBaseUpdate,s===null?a.firstBaseUpdate=t:s.next=t,a.lastBaseUpdate=t}var td=!1;function Ei(){if(td){var s=zn;if(s!==null)throw s}}function zi(s,t,a,l){td=!1;var i=s.updateQueue;pl=!1;var o=i.firstBaseUpdate,m=i.lastBaseUpdate,g=i.shared.pending;if(g!==null){i.shared.pending=null;var C=g,I=C.next;C.next=null,m===null?o=I:m.next=I,m=C;var ae=s.alternate;ae!==null&&(ae=ae.updateQueue,g=ae.lastBaseUpdate,g!==m&&(g===null?ae.firstBaseUpdate=I:g.next=I,ae.lastBaseUpdate=C))}if(o!==null){var ue=i.baseState;m=0,ae=I=C=null,g=o;do{var P=g.lane&-536870913,se=P!==g.lane;if(se?(ns&P)===P:(l&P)===P){P!==0&&P===En&&(td=!0),ae!==null&&(ae=ae.next={lane:0,tag:g.tag,payload:g.payload,callback:null,next:null});e:{var Ce=s,De=g;P=t;var ks=a;switch(De.tag){case 1:if(Ce=De.payload,typeof Ce=="function"){ue=Ce.call(ks,ue,P);break e}ue=Ce;break e;case 3:Ce.flags=Ce.flags&-65537|128;case 0:if(Ce=De.payload,P=typeof Ce=="function"?Ce.call(ks,ue,P):Ce,P==null)break e;ue=k({},ue,P);break e;case 2:pl=!0}}P=g.callback,P!==null&&(s.flags|=64,se&&(s.flags|=8192),se=i.callbacks,se===null?i.callbacks=[P]:se.push(P))}else se={lane:P,tag:g.tag,payload:g.payload,callback:g.callback,next:null},ae===null?(I=ae=se,C=ue):ae=ae.next=se,m|=P;if(g=g.next,g===null){if(g=i.shared.pending,g===null)break;se=g,g=se.next,se.next=null,i.lastBaseUpdate=se,i.shared.pending=null}}while(!0);ae===null&&(C=ue),i.baseState=C,i.firstBaseUpdate=I,i.lastBaseUpdate=ae,o===null&&(i.shared.lanes=0),wl|=m,s.lanes=m,s.memoizedState=ue}}function rh(s,t){if(typeof s!="function")throw Error(d(191,s));s.call(t)}function ch(s,t){var a=s.callbacks;if(a!==null)for(s.callbacks=null,s=0;so?o:8;var m=N.T,g={};N.T=g,Nd(s,!1,t,a);try{var C=i(),I=N.S;if(I!==null&&I(g,C),C!==null&&typeof C=="object"&&typeof C.then=="function"){var ae=av(C,l);Di(s,t,ae,Qt(s))}else Di(s,t,l,Qt(s))}catch(ue){Di(s,t,{then:function(){},status:"rejected",reason:ue},Qt())}finally{G.p=o,m!==null&&g.types!==null&&(m.types=g.types),N.T=m}}function ov(){}function vd(s,t,a,l){if(s.tag!==5)throw Error(d(476));var i=qh(s).queue;Hh(s,i,t,q,a===null?ov:function(){return Gh(s),a(l)})}function qh(s){var t=s.memoizedState;if(t!==null)return t;t={memoizedState:q,baseState:q,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Xa,lastRenderedState:q},next:null};var a={};return t.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Xa,lastRenderedState:a},next:null},s.memoizedState=t,s=s.alternate,s!==null&&(s.memoizedState=t),t}function Gh(s){var t=qh(s);t.next===null&&(t=s.alternate.memoizedState),Di(s,t.next.queue,{},Qt())}function yd(){return ht(Ji)}function Vh(){return Ks().memoizedState}function Fh(){return Ks().memoizedState}function dv(s){for(var t=s.return;t!==null;){switch(t.tag){case 24:case 3:var a=Qt();s=gl(a);var l=jl(t,s,a);l!==null&&(Dt(l,t,a),Ti(l,t,a)),t={cache:Zo()},s.payload=t;return}t=t.return}}function uv(s,t,a){var l=Qt();a={lane:l,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},ic(s)?Qh(t,a):(a=Bo(s,t,a,l),a!==null&&(Dt(a,s,l),Yh(a,t,l)))}function $h(s,t,a){var l=Qt();Di(s,t,a,l)}function Di(s,t,a,l){var i={lane:l,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(ic(s))Qh(t,i);else{var o=s.alternate;if(s.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var m=t.lastRenderedState,g=o(m,a);if(i.hasEagerState=!0,i.eagerState=g,Ht(g,m))return qr(s,t,i,0),Es===null&&Hr(),!1}catch{}finally{}if(a=Bo(s,t,i,l),a!==null)return Dt(a,s,l),Yh(a,t,l),!0}return!1}function Nd(s,t,a,l){if(l={lane:2,revertLane:Wd(),gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},ic(s)){if(t)throw Error(d(479))}else t=Bo(s,a,l,2),t!==null&&Dt(t,s,2)}function ic(s){var t=s.alternate;return s===Ke||t!==null&&t===Ke}function Qh(s,t){On=Wr=!0;var a=s.pending;a===null?t.next=t:(t.next=a.next,a.next=t),s.pending=t}function Yh(s,t,a){if((a&4194048)!==0){var l=t.lanes;l&=s.pendingLanes,a|=l,t.lanes=a,dl(s,a)}}var Oi={readContext:ht,use:tc,useCallback:Vs,useContext:Vs,useEffect:Vs,useImperativeHandle:Vs,useLayoutEffect:Vs,useInsertionEffect:Vs,useMemo:Vs,useReducer:Vs,useRef:Vs,useState:Vs,useDebugValue:Vs,useDeferredValue:Vs,useTransition:Vs,useSyncExternalStore:Vs,useId:Vs,useHostTransitionStatus:Vs,useFormState:Vs,useActionState:Vs,useOptimistic:Vs,useMemoCache:Vs,useCacheRefresh:Vs};Oi.useEffectEvent=Vs;var Xh={readContext:ht,use:tc,useCallback:function(s,t){return wt().memoizedState=[s,t===void 0?null:t],s},useContext:ht,useEffect:zh,useImperativeHandle:function(s,t,a){a=a!=null?a.concat([s]):null,lc(4194308,4,Oh.bind(null,t,s),a)},useLayoutEffect:function(s,t){return lc(4194308,4,s,t)},useInsertionEffect:function(s,t){lc(4,2,s,t)},useMemo:function(s,t){var a=wt();t=t===void 0?null:t;var l=s();if(Wl){it(!0);try{s()}finally{it(!1)}}return a.memoizedState=[l,t],l},useReducer:function(s,t,a){var l=wt();if(a!==void 0){var i=a(t);if(Wl){it(!0);try{a(t)}finally{it(!1)}}}else i=t;return l.memoizedState=l.baseState=i,s={pending:null,lanes:0,dispatch:null,lastRenderedReducer:s,lastRenderedState:i},l.queue=s,s=s.dispatch=uv.bind(null,Ke,s),[l.memoizedState,s]},useRef:function(s){var t=wt();return s={current:s},t.memoizedState=s},useState:function(s){s=xd(s);var t=s.queue,a=$h.bind(null,Ke,t);return t.dispatch=a,[s.memoizedState,a]},useDebugValue:gd,useDeferredValue:function(s,t){var a=wt();return jd(a,s,t)},useTransition:function(){var s=xd(!1);return s=Hh.bind(null,Ke,s.queue,!0,!1),wt().memoizedState=s,[!1,s]},useSyncExternalStore:function(s,t,a){var l=Ke,i=wt();if(fs){if(a===void 0)throw Error(d(407));a=a()}else{if(a=t(),Es===null)throw Error(d(349));(ns&127)!==0||xh(l,t,a)}i.memoizedState=a;var o={value:a,getSnapshot:t};return i.queue=o,zh(ph.bind(null,l,o,s),[s]),l.flags|=2048,Ln(9,{destroy:void 0},fh.bind(null,l,o,a,t),null),a},useId:function(){var s=wt(),t=Es.identifierPrefix;if(fs){var a=ka,l=Ca;a=(l&~(1<<32-dt(l)-1)).toString(32)+a,t="_"+t+"R_"+a,a=ec++,0<\/script>",o=o.removeChild(o.firstChild);break;case"select":o=typeof l.is=="string"?m.createElement("select",{is:l.is}):m.createElement("select"),l.multiple?o.multiple=!0:l.size&&(o.size=l.size);break;default:o=typeof l.is=="string"?m.createElement(i,{is:l.is}):m.createElement(i)}}o[Ge]=t,o[xs]=l;e:for(m=t.child;m!==null;){if(m.tag===5||m.tag===6)o.appendChild(m.stateNode);else if(m.tag!==4&&m.tag!==27&&m.child!==null){m.child.return=m,m=m.child;continue}if(m===t)break e;for(;m.sibling===null;){if(m.return===null||m.return===t)break e;m=m.return}m.sibling.return=m.return,m=m.sibling}t.stateNode=o;e:switch(ft(o,i,l),i){case"button":case"input":case"select":case"textarea":l=!!l.autoFocus;break e;case"img":l=!0;break e;default:l=!1}l&&Za(t)}}return Os(t),Rd(t,t.type,s===null?null:s.memoizedProps,t.pendingProps,a),null;case 6:if(s&&t.stateNode!=null)s.memoizedProps!==l&&Za(t);else{if(typeof l!="string"&&t.stateNode===null)throw Error(d(166));if(s=le.current,kn(t)){if(s=t.stateNode,a=t.memoizedProps,l=null,i=mt,i!==null)switch(i.tag){case 27:case 5:l=i.memoizedProps}s[Ge]=t,s=!!(s.nodeValue===a||l!==null&&l.suppressHydrationWarning===!0||hf(s.nodeValue,a)),s||xl(t,!0)}else s=Cc(s).createTextNode(l),s[Ge]=t,t.stateNode=s}return Os(t),null;case 31:if(a=t.memoizedState,s===null||s.memoizedState!==null){if(l=kn(t),a!==null){if(s===null){if(!l)throw Error(d(318));if(s=t.memoizedState,s=s!==null?s.dehydrated:null,!s)throw Error(d(557));s[Ge]=t}else Yl(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Os(t),s=!1}else a=Qo(),s!==null&&s.memoizedState!==null&&(s.memoizedState.hydrationErrors=a),s=!0;if(!s)return t.flags&256?(Vt(t),t):(Vt(t),null);if((t.flags&128)!==0)throw Error(d(558))}return Os(t),null;case 13:if(l=t.memoizedState,s===null||s.memoizedState!==null&&s.memoizedState.dehydrated!==null){if(i=kn(t),l!==null&&l.dehydrated!==null){if(s===null){if(!i)throw Error(d(318));if(i=t.memoizedState,i=i!==null?i.dehydrated:null,!i)throw Error(d(317));i[Ge]=t}else Yl(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Os(t),i=!1}else i=Qo(),s!==null&&s.memoizedState!==null&&(s.memoizedState.hydrationErrors=i),i=!0;if(!i)return t.flags&256?(Vt(t),t):(Vt(t),null)}return Vt(t),(t.flags&128)!==0?(t.lanes=a,t):(a=l!==null,s=s!==null&&s.memoizedState!==null,a&&(l=t.child,i=null,l.alternate!==null&&l.alternate.memoizedState!==null&&l.alternate.memoizedState.cachePool!==null&&(i=l.alternate.memoizedState.cachePool.pool),o=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(o=l.memoizedState.cachePool.pool),o!==i&&(l.flags|=2048)),a!==s&&a&&(t.child.flags|=8192),uc(t,t.updateQueue),Os(t),null);case 4:return D(),s===null&&au(t.stateNode.containerInfo),Os(t),null;case 10:return Qa(t.type),Os(t),null;case 19:if(xe(Xs),l=t.memoizedState,l===null)return Os(t),null;if(i=(t.flags&128)!==0,o=l.rendering,o===null)if(i)Li(l,!1);else{if(Fs!==0||s!==null&&(s.flags&128)!==0)for(s=t.child;s!==null;){if(o=Pr(s),o!==null){for(t.flags|=128,Li(l,!1),s=o.updateQueue,t.updateQueue=s,uc(t,s),t.subtreeFlags=0,s=a,a=t.child;a!==null;)$m(a,s),a=a.sibling;return $(Xs,Xs.current&1|2),fs&&Fa(t,l.treeForkCount),t.child}s=s.sibling}l.tail!==null&&Je()>pc&&(t.flags|=128,i=!0,Li(l,!1),t.lanes=4194304)}else{if(!i)if(s=Pr(o),s!==null){if(t.flags|=128,i=!0,s=s.updateQueue,t.updateQueue=s,uc(t,s),Li(l,!0),l.tail===null&&l.tailMode==="hidden"&&!o.alternate&&!fs)return Os(t),null}else 2*Je()-l.renderingStartTime>pc&&a!==536870912&&(t.flags|=128,i=!0,Li(l,!1),t.lanes=4194304);l.isBackwards?(o.sibling=t.child,t.child=o):(s=l.last,s!==null?s.sibling=o:t.child=o,l.last=o)}return l.tail!==null?(s=l.tail,l.rendering=s,l.tail=s.sibling,l.renderingStartTime=Je(),s.sibling=null,a=Xs.current,$(Xs,i?a&1|2:a&1),fs&&Fa(t,l.treeForkCount),s):(Os(t),null);case 22:case 23:return Vt(t),ld(),l=t.memoizedState!==null,s!==null?s.memoizedState!==null!==l&&(t.flags|=8192):l&&(t.flags|=8192),l?(a&536870912)!==0&&(t.flags&128)===0&&(Os(t),t.subtreeFlags&6&&(t.flags|=8192)):Os(t),a=t.updateQueue,a!==null&&uc(t,a.retryQueue),a=null,s!==null&&s.memoizedState!==null&&s.memoizedState.cachePool!==null&&(a=s.memoizedState.cachePool.pool),l=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(l=t.memoizedState.cachePool.pool),l!==a&&(t.flags|=2048),s!==null&&xe(Zl),null;case 24:return a=null,s!==null&&(a=s.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),Qa(Is),Os(t),null;case 25:return null;case 30:return null}throw Error(d(156,t.tag))}function pv(s,t){switch(Fo(t),t.tag){case 1:return s=t.flags,s&65536?(t.flags=s&-65537|128,t):null;case 3:return Qa(Is),D(),s=t.flags,(s&65536)!==0&&(s&128)===0?(t.flags=s&-65537|128,t):null;case 26:case 27:case 5:return we(t),null;case 31:if(t.memoizedState!==null){if(Vt(t),t.alternate===null)throw Error(d(340));Yl()}return s=t.flags,s&65536?(t.flags=s&-65537|128,t):null;case 13:if(Vt(t),s=t.memoizedState,s!==null&&s.dehydrated!==null){if(t.alternate===null)throw Error(d(340));Yl()}return s=t.flags,s&65536?(t.flags=s&-65537|128,t):null;case 19:return xe(Xs),null;case 4:return D(),null;case 10:return Qa(t.type),null;case 22:case 23:return Vt(t),ld(),s!==null&&xe(Zl),s=t.flags,s&65536?(t.flags=s&-65537|128,t):null;case 24:return Qa(Is),null;case 25:return null;default:return null}}function gx(s,t){switch(Fo(t),t.tag){case 3:Qa(Is),D();break;case 26:case 27:case 5:we(t);break;case 4:D();break;case 31:t.memoizedState!==null&&Vt(t);break;case 13:Vt(t);break;case 19:xe(Xs);break;case 10:Qa(t.type);break;case 22:case 23:Vt(t),ld(),s!==null&&xe(Zl);break;case 24:Qa(Is)}}function Ui(s,t){try{var a=t.updateQueue,l=a!==null?a.lastEffect:null;if(l!==null){var i=l.next;a=i;do{if((a.tag&s)===s){l=void 0;var o=a.create,m=a.inst;l=o(),m.destroy=l}a=a.next}while(a!==i)}}catch(g){_s(t,t.return,g)}}function Nl(s,t,a){try{var l=t.updateQueue,i=l!==null?l.lastEffect:null;if(i!==null){var o=i.next;l=o;do{if((l.tag&s)===s){var m=l.inst,g=m.destroy;if(g!==void 0){m.destroy=void 0,i=t;var C=a,I=g;try{I()}catch(ae){_s(i,C,ae)}}}l=l.next}while(l!==o)}}catch(ae){_s(t,t.return,ae)}}function jx(s){var t=s.updateQueue;if(t!==null){var a=s.stateNode;try{ch(t,a)}catch(l){_s(s,s.return,l)}}}function vx(s,t,a){a.props=en(s.type,s.memoizedProps),a.state=s.memoizedState;try{a.componentWillUnmount()}catch(l){_s(s,t,l)}}function Bi(s,t){try{var a=s.ref;if(a!==null){switch(s.tag){case 26:case 27:case 5:var l=s.stateNode;break;case 30:l=s.stateNode;break;default:l=s.stateNode}typeof a=="function"?s.refCleanup=a(l):a.current=l}}catch(i){_s(s,t,i)}}function Ta(s,t){var a=s.ref,l=s.refCleanup;if(a!==null)if(typeof l=="function")try{l()}catch(i){_s(s,t,i)}finally{s.refCleanup=null,s=s.alternate,s!=null&&(s.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(i){_s(s,t,i)}else a.current=null}function yx(s){var t=s.type,a=s.memoizedProps,l=s.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":a.autoFocus&&l.focus();break e;case"img":a.src?l.src=a.src:a.srcSet&&(l.srcset=a.srcSet)}}catch(i){_s(s,s.return,i)}}function Ld(s,t,a){try{var l=s.stateNode;Bv(l,s.type,a,t),l[xs]=t}catch(i){_s(s,s.return,i)}}function Nx(s){return s.tag===5||s.tag===3||s.tag===26||s.tag===27&&Tl(s.type)||s.tag===4}function Ud(s){e:for(;;){for(;s.sibling===null;){if(s.return===null||Nx(s.return))return null;s=s.return}for(s.sibling.return=s.return,s=s.sibling;s.tag!==5&&s.tag!==6&&s.tag!==18;){if(s.tag===27&&Tl(s.type)||s.flags&2||s.child===null||s.tag===4)continue e;s.child.return=s,s=s.child}if(!(s.flags&2))return s.stateNode}}function Bd(s,t,a){var l=s.tag;if(l===5||l===6)s=s.stateNode,t?(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a).insertBefore(s,t):(t=a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,t.appendChild(s),a=a._reactRootContainer,a!=null||t.onclick!==null||(t.onclick=qa));else if(l!==4&&(l===27&&Tl(s.type)&&(a=s.stateNode,t=null),s=s.child,s!==null))for(Bd(s,t,a),s=s.sibling;s!==null;)Bd(s,t,a),s=s.sibling}function mc(s,t,a){var l=s.tag;if(l===5||l===6)s=s.stateNode,t?a.insertBefore(s,t):a.appendChild(s);else if(l!==4&&(l===27&&Tl(s.type)&&(a=s.stateNode),s=s.child,s!==null))for(mc(s,t,a),s=s.sibling;s!==null;)mc(s,t,a),s=s.sibling}function bx(s){var t=s.stateNode,a=s.memoizedProps;try{for(var l=s.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);ft(t,l,a),t[Ge]=s,t[xs]=a}catch(o){_s(s,s.return,o)}}var Ja=!1,et=!1,Hd=!1,wx=typeof WeakSet=="function"?WeakSet:Set,ct=null;function gv(s,t){if(s=s.containerInfo,iu=Dc,s=Rm(s),Ao(s)){if("selectionStart"in s)var a={start:s.selectionStart,end:s.selectionEnd};else e:{a=(a=s.ownerDocument)&&a.defaultView||window;var l=a.getSelection&&a.getSelection();if(l&&l.rangeCount!==0){a=l.anchorNode;var i=l.anchorOffset,o=l.focusNode;l=l.focusOffset;try{a.nodeType,o.nodeType}catch{a=null;break e}var m=0,g=-1,C=-1,I=0,ae=0,ue=s,P=null;s:for(;;){for(var se;ue!==a||i!==0&&ue.nodeType!==3||(g=m+i),ue!==o||l!==0&&ue.nodeType!==3||(C=m+l),ue.nodeType===3&&(m+=ue.nodeValue.length),(se=ue.firstChild)!==null;)P=ue,ue=se;for(;;){if(ue===s)break s;if(P===a&&++I===i&&(g=m),P===o&&++ae===l&&(C=m),(se=ue.nextSibling)!==null)break;ue=P,P=ue.parentNode}ue=se}a=g===-1||C===-1?null:{start:g,end:C}}else a=null}a=a||{start:0,end:0}}else a=null;for(ru={focusedElem:s,selectionRange:a},Dc=!1,ct=t;ct!==null;)if(t=ct,s=t.child,(t.subtreeFlags&1028)!==0&&s!==null)s.return=t,ct=s;else for(;ct!==null;){switch(t=ct,o=t.alternate,s=t.flags,t.tag){case 0:if((s&4)!==0&&(s=t.updateQueue,s=s!==null?s.events:null,s!==null))for(a=0;a title"))),ft(o,l,a),o[Ge]=s,rt(o),l=o;break e;case"link":var m=zf("link","href",i).get(l+(a.href||""));if(m){for(var g=0;gks&&(m=ks,ks=De,De=m);var V=Dm(g,De),M=Dm(g,ks);if(V&&M&&(se.rangeCount!==1||se.anchorNode!==V.node||se.anchorOffset!==V.offset||se.focusNode!==M.node||se.focusOffset!==M.offset)){var J=ue.createRange();J.setStart(V.node,V.offset),se.removeAllRanges(),De>ks?(se.addRange(J),se.extend(M.node,M.offset)):(J.setEnd(M.node,M.offset),se.addRange(J))}}}}for(ue=[],se=g;se=se.parentNode;)se.nodeType===1&&ue.push({element:se,left:se.scrollLeft,top:se.scrollTop});for(typeof g.focus=="function"&&g.focus(),g=0;ga?32:a,N.T=null,a=Yd,Yd=null;var o=Sl,m=sl;if(at=0,Gn=Sl=null,sl=0,(Ns&6)!==0)throw Error(d(331));var g=Ns;if(Ns|=4,Ox(o.current),Mx(o,o.current,m,a),Ns=g,$i(0,!1),Oe&&typeof Oe.onPostCommitFiberRoot=="function")try{Oe.onPostCommitFiberRoot(Se,o)}catch{}return!0}finally{G.p=i,N.T=l,Px(s,t)}}function ef(s,t,a){t=na(a,t),t=Sd(s.stateNode,t,2),s=jl(s,t,2),s!==null&&(tt(s,2),Ea(s))}function _s(s,t,a){if(s.tag===3)ef(s,s,a);else for(;t!==null;){if(t.tag===3){ef(t,s,a);break}else if(t.tag===1){var l=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof l.componentDidCatch=="function"&&(_l===null||!_l.has(l))){s=na(a,s),a=sx(2),l=jl(t,a,2),l!==null&&(tx(a,l,t,s),tt(l,2),Ea(l));break}}t=t.return}}function Jd(s,t,a){var l=s.pingCache;if(l===null){l=s.pingCache=new yv;var i=new Set;l.set(t,i)}else i=l.get(t),i===void 0&&(i=new Set,l.set(t,i));i.has(a)||(Vd=!0,i.add(a),s=Sv.bind(null,s,t,a),t.then(s,s))}function Sv(s,t,a){var l=s.pingCache;l!==null&&l.delete(t),s.pingedLanes|=s.suspendedLanes&a,s.warmLanes&=~a,Es===s&&(ns&a)===a&&(Fs===4||Fs===3&&(ns&62914560)===ns&&300>Je()-fc?(Ns&2)===0&&Vn(s,0):Fd|=a,qn===ns&&(qn=0)),Ea(s)}function sf(s,t){t===0&&(t=ve()),s=$l(s,t),s!==null&&(tt(s,t),Ea(s))}function Cv(s){var t=s.memoizedState,a=0;t!==null&&(a=t.retryLane),sf(s,a)}function kv(s,t){var a=0;switch(s.tag){case 31:case 13:var l=s.stateNode,i=s.memoizedState;i!==null&&(a=i.retryLane);break;case 19:l=s.stateNode;break;case 22:l=s.stateNode._retryCache;break;default:throw Error(d(314))}l!==null&&l.delete(t),sf(s,a)}function Tv(s,t){return Ue(s,t)}var bc=null,$n=null,Id=!1,wc=!1,Pd=!1,kl=0;function Ea(s){s!==$n&&s.next===null&&($n===null?bc=$n=s:$n=$n.next=s),wc=!0,Id||(Id=!0,zv())}function $i(s,t){if(!Pd&&wc){Pd=!0;do for(var a=!1,l=bc;l!==null;){if(s!==0){var i=l.pendingLanes;if(i===0)var o=0;else{var m=l.suspendedLanes,g=l.pingedLanes;o=(1<<31-dt(42|s)+1)-1,o&=i&~(m&~g),o=o&201326741?o&201326741|1:o?o|2:0}o!==0&&(a=!0,nf(l,o))}else o=ns,o=Ba(l,l===Es?o:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),(o&3)===0||_a(l,o)||(a=!0,nf(l,o));l=l.next}while(a);Pd=!1}}function Ev(){tf()}function tf(){wc=Id=!1;var s=0;kl!==0&&qv()&&(s=kl);for(var t=Je(),a=null,l=bc;l!==null;){var i=l.next,o=af(l,t);o===0?(l.next=null,a===null?bc=i:a.next=i,i===null&&($n=a)):(a=l,(s!==0||(o&3)!==0)&&(wc=!0)),l=i}at!==0&&at!==5||$i(s),kl!==0&&(kl=0)}function af(s,t){for(var a=s.suspendedLanes,l=s.pingedLanes,i=s.expirationTimes,o=s.pendingLanes&-62914561;0g)break;var ae=C.transferSize,ue=C.initiatorType;ae&&xf(ue)&&(C=C.responseEnd,m+=ae*(C"u"?null:document;function Cf(s,t,a){var l=Qn;if(l&&typeof t=="string"&&t){var i=aa(t);i='link[rel="'+s+'"][href="'+i+'"]',typeof a=="string"&&(i+='[crossorigin="'+a+'"]'),Sf.has(i)||(Sf.add(i),s={rel:s,crossOrigin:a,href:t},l.querySelector(i)===null&&(t=l.createElement("link"),ft(t,"link",s),rt(t),l.head.appendChild(t)))}}function Zv(s){tl.D(s),Cf("dns-prefetch",s,null)}function Jv(s,t){tl.C(s,t),Cf("preconnect",s,t)}function Iv(s,t,a){tl.L(s,t,a);var l=Qn;if(l&&s&&t){var i='link[rel="preload"][as="'+aa(t)+'"]';t==="image"&&a&&a.imageSrcSet?(i+='[imagesrcset="'+aa(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(i+='[imagesizes="'+aa(a.imageSizes)+'"]')):i+='[href="'+aa(s)+'"]';var o=i;switch(t){case"style":o=Yn(s);break;case"script":o=Xn(s)}ua.has(o)||(s=k({rel:"preload",href:t==="image"&&a&&a.imageSrcSet?void 0:s,as:t},a),ua.set(o,s),l.querySelector(i)!==null||t==="style"&&l.querySelector(Ki(o))||t==="script"&&l.querySelector(Zi(o))||(t=l.createElement("link"),ft(t,"link",s),rt(t),l.head.appendChild(t)))}}function Pv(s,t){tl.m(s,t);var a=Qn;if(a&&s){var l=t&&typeof t.as=="string"?t.as:"script",i='link[rel="modulepreload"][as="'+aa(l)+'"][href="'+aa(s)+'"]',o=i;switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":o=Xn(s)}if(!ua.has(o)&&(s=k({rel:"modulepreload",href:s},t),ua.set(o,s),a.querySelector(i)===null)){switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(Zi(o)))return}l=a.createElement("link"),ft(l,"link",s),rt(l),a.head.appendChild(l)}}}function Wv(s,t,a){tl.S(s,t,a);var l=Qn;if(l&&s){var i=xn(l).hoistableStyles,o=Yn(s);t=t||"default";var m=i.get(o);if(!m){var g={loading:0,preload:null};if(m=l.querySelector(Ki(o)))g.loading=5;else{s=k({rel:"stylesheet",href:s,"data-precedence":t},a),(a=ua.get(o))&&xu(s,a);var C=m=l.createElement("link");rt(C),ft(C,"link",s),C._p=new Promise(function(I,ae){C.onload=I,C.onerror=ae}),C.addEventListener("load",function(){g.loading|=1}),C.addEventListener("error",function(){g.loading|=2}),g.loading|=4,Tc(m,t,l)}m={type:"stylesheet",instance:m,count:1,state:g},i.set(o,m)}}}function ey(s,t){tl.X(s,t);var a=Qn;if(a&&s){var l=xn(a).hoistableScripts,i=Xn(s),o=l.get(i);o||(o=a.querySelector(Zi(i)),o||(s=k({src:s,async:!0},t),(t=ua.get(i))&&fu(s,t),o=a.createElement("script"),rt(o),ft(o,"link",s),a.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},l.set(i,o))}}function sy(s,t){tl.M(s,t);var a=Qn;if(a&&s){var l=xn(a).hoistableScripts,i=Xn(s),o=l.get(i);o||(o=a.querySelector(Zi(i)),o||(s=k({src:s,async:!0,type:"module"},t),(t=ua.get(i))&&fu(s,t),o=a.createElement("script"),rt(o),ft(o,"link",s),a.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},l.set(i,o))}}function kf(s,t,a,l){var i=(i=le.current)?kc(i):null;if(!i)throw Error(d(446));switch(s){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(t=Yn(a.href),a=xn(i).hoistableStyles,l=a.get(t),l||(l={type:"style",instance:null,count:0,state:null},a.set(t,l)),l):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){s=Yn(a.href);var o=xn(i).hoistableStyles,m=o.get(s);if(m||(i=i.ownerDocument||i,m={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},o.set(s,m),(o=i.querySelector(Ki(s)))&&!o._p&&(m.instance=o,m.state.loading=5),ua.has(s)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},ua.set(s,a),o||ty(i,s,a,m.state))),t&&l===null)throw Error(d(528,""));return m}if(t&&l!==null)throw Error(d(529,""));return null;case"script":return t=a.async,a=a.src,typeof a=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=Xn(a),a=xn(i).hoistableScripts,l=a.get(t),l||(l={type:"script",instance:null,count:0,state:null},a.set(t,l)),l):{type:"void",instance:null,count:0,state:null};default:throw Error(d(444,s))}}function Yn(s){return'href="'+aa(s)+'"'}function Ki(s){return'link[rel="stylesheet"]['+s+"]"}function Tf(s){return k({},s,{"data-precedence":s.precedence,precedence:null})}function ty(s,t,a,l){s.querySelector('link[rel="preload"][as="style"]['+t+"]")?l.loading=1:(t=s.createElement("link"),l.preload=t,t.addEventListener("load",function(){return l.loading|=1}),t.addEventListener("error",function(){return l.loading|=2}),ft(t,"link",a),rt(t),s.head.appendChild(t))}function Xn(s){return'[src="'+aa(s)+'"]'}function Zi(s){return"script[async]"+s}function Ef(s,t,a){if(t.count++,t.instance===null)switch(t.type){case"style":var l=s.querySelector('style[data-href~="'+aa(a.href)+'"]');if(l)return t.instance=l,rt(l),l;var i=k({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return l=(s.ownerDocument||s).createElement("style"),rt(l),ft(l,"style",i),Tc(l,a.precedence,s),t.instance=l;case"stylesheet":i=Yn(a.href);var o=s.querySelector(Ki(i));if(o)return t.state.loading|=4,t.instance=o,rt(o),o;l=Tf(a),(i=ua.get(i))&&xu(l,i),o=(s.ownerDocument||s).createElement("link"),rt(o);var m=o;return m._p=new Promise(function(g,C){m.onload=g,m.onerror=C}),ft(o,"link",l),t.state.loading|=4,Tc(o,a.precedence,s),t.instance=o;case"script":return o=Xn(a.src),(i=s.querySelector(Zi(o)))?(t.instance=i,rt(i),i):(l=a,(i=ua.get(o))&&(l=k({},a),fu(l,i)),s=s.ownerDocument||s,i=s.createElement("script"),rt(i),ft(i,"link",l),s.head.appendChild(i),t.instance=i);case"void":return null;default:throw Error(d(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(l=t.instance,t.state.loading|=4,Tc(l,a.precedence,s));return t.instance}function Tc(s,t,a){for(var l=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),i=l.length?l[l.length-1]:null,o=i,m=0;m title"):null)}function ay(s,t,a){if(a===1||t.itemProp!=null)return!1;switch(s){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return s=t.disabled,typeof t.precedence=="string"&&s==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Af(s){return!(s.type==="stylesheet"&&(s.state.loading&3)===0)}function ly(s,t,a,l){if(a.type==="stylesheet"&&(typeof l.media!="string"||matchMedia(l.media).matches!==!1)&&(a.state.loading&4)===0){if(a.instance===null){var i=Yn(l.href),o=t.querySelector(Ki(i));if(o){t=o._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(s.count++,s=zc.bind(s),t.then(s,s)),a.state.loading|=4,a.instance=o,rt(o);return}o=t.ownerDocument||t,l=Tf(l),(i=ua.get(i))&&xu(l,i),o=o.createElement("link"),rt(o);var m=o;m._p=new Promise(function(g,C){m.onload=g,m.onerror=C}),ft(o,"link",l),a.instance=o}s.stylesheets===null&&(s.stylesheets=new Map),s.stylesheets.set(a,t),(t=a.state.preload)&&(a.state.loading&3)===0&&(s.count++,a=zc.bind(s),t.addEventListener("load",a),t.addEventListener("error",a))}}var pu=0;function ny(s,t){return s.stylesheets&&s.count===0&&Ac(s,s.stylesheets),0pu?50:800)+t);return s.unsuspend=a,function(){s.unsuspend=null,clearTimeout(l),clearTimeout(i)}}:null}function zc(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Ac(this,this.stylesheets);else if(this.unsuspend){var s=this.unsuspend;this.unsuspend=null,s()}}}var Mc=null;function Ac(s,t){s.stylesheets=null,s.unsuspend!==null&&(s.count++,Mc=new Map,t.forEach(iy,s),Mc=null,zc.call(s))}function iy(s,t){if(!(t.state.loading&4)){var a=Mc.get(s);if(a)var l=a.get(null);else{a=new Map,Mc.set(s,a);for(var i=s.querySelectorAll("link[data-precedence],style[data-precedence]"),o=0;o"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(r){console.error(r)}}return n(),ku.exports=Ub(),ku.exports}var Hb=Bb();function Q(...n){return Sy(Cy(n))}const Fe=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("rounded-xl border bg-card text-card-foreground shadow",n),...r}));Fe.displayName="Card";const gs=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("flex flex-col space-y-1.5 p-6",n),...r}));gs.displayName="CardHeader";const js=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("font-semibold leading-none tracking-tight",n),...r}));js.displayName="CardTitle";const Zs=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("text-sm text-muted-foreground",n),...r}));Zs.displayName="CardDescription";const bs=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("p-6 pt-0",n),...r}));bs.displayName="CardContent";const Sg=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("flex items-center p-6 pt-0",n),...r}));Sg.displayName="CardFooter";const Kt=Ey,Rt=u.forwardRef(({className:n,...r},c)=>e.jsx(bp,{ref:c,className:Q("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",n),...r}));Rt.displayName=bp.displayName;const $e=u.forwardRef(({className:n,...r},c)=>e.jsx(wp,{ref:c,className:Q("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all duration-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",n),...r}));$e.displayName=wp.displayName;const We=u.forwardRef(({className:n,...r},c)=>e.jsx(_p,{ref:c,className:Q("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[state=active]:animate-in data-[state=active]:fade-in data-[state=active]:duration-300",n),...r}));We.displayName=_p.displayName;const Pe=u.forwardRef(({className:n,children:r,viewportRef:c,...d},h)=>e.jsxs(Sp,{ref:h,className:Q("relative overflow-hidden",n),...d,children:[e.jsx(zy,{ref:c,className:"h-full w-full rounded-[inherit]",children:r}),e.jsx(Bu,{}),e.jsx(Bu,{orientation:"horizontal"}),e.jsx(My,{})]}));Pe.displayName=Sp.displayName;const Bu=u.forwardRef(({className:n,orientation:r="vertical",...c},d)=>e.jsx(Cp,{ref:d,orientation:r,className:Q("flex touch-none select-none transition-colors",r==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",r==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",n),...c,children:e.jsx(Ay,{className:"relative flex-1 rounded-full bg-border"})}));Bu.displayName=Cp.displayName;function qb({className:n,...r}){return e.jsx("div",{className:Q("animate-pulse rounded-md bg-primary/10",n),...r})}const Sr=u.forwardRef(({className:n,value:r,...c},d)=>e.jsx(kp,{ref:d,className:Q("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",n),...c,children:e.jsx(Dy,{className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(r||0)}%)`}})}));Sr.displayName=kp.displayName;const Gb={light:"",dark:".dark"},Cg=u.createContext(null);function kg(){const n=u.useContext(Cg);if(!n)throw new Error("useChart must be used within a ");return n}const Zn=u.forwardRef(({id:n,className:r,children:c,config:d,...h},x)=>{const f=u.useId(),j=`chart-${n||f.replace(/:/g,"")}`;return e.jsx(Cg.Provider,{value:{config:d},children:e.jsxs("div",{"data-chart":j,ref:x,className:Q("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",r),...h,children:[e.jsx(Vb,{id:j,config:d}),e.jsx(Iy,{children:c})]})})});Zn.displayName="Chart";const Vb=({id:n,config:r})=>{const c=Object.entries(r).filter(([,d])=>d.theme||d.color);return c.length?e.jsx("style",{dangerouslySetInnerHTML:{__html:Object.entries(Gb).map(([d,h])=>` +${h} [data-chart=${n}] { +${c.map(([x,f])=>{const j=f.theme?.[d]||f.color;return j?` --color-${x}: ${j};`:null}).join(` +`)} +} +`).join(` +`)}}):null},lr=Py,Jn=u.forwardRef(({active:n,payload:r,className:c,indicator:d="dot",hideLabel:h=!1,hideIndicator:x=!1,label:f,labelFormatter:j,labelClassName:p,formatter:w,color:v,nameKey:k,labelKey:T},E)=>{const{config:R}=kg(),K=u.useMemo(()=>{if(h||!r?.length)return null;const[A]=r,Z=`${T||A?.dataKey||A?.name||"value"}`,H=Hu(R,A,Z),z=!T&&typeof f=="string"?R[f]?.label||f:H?.label;return j?e.jsx("div",{className:Q("font-medium",p),children:j(z,r)}):z?e.jsx("div",{className:Q("font-medium",p),children:z}):null},[f,j,r,h,p,R,T]);if(!n||!r?.length)return null;const U=r.length===1&&d!=="dot";return e.jsxs("div",{ref:E,className:Q("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",c),children:[U?null:K,e.jsx("div",{className:"grid gap-1.5",children:r.filter(A=>A.type!=="none").map((A,Z)=>{const H=`${k||A.name||A.dataKey||"value"}`,z=Hu(R,A,H),B=v||A.payload.fill||A.color;return e.jsx("div",{className:Q("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",d==="dot"&&"items-center"),children:w&&A?.value!==void 0&&A.name?w(A.value,A.name,A,Z,A.payload):e.jsxs(e.Fragment,{children:[z?.icon?e.jsx(z.icon,{}):!x&&e.jsx("div",{className:Q("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]",{"h-2.5 w-2.5":d==="dot","w-1":d==="line","w-0 border-[1.5px] border-dashed bg-transparent":d==="dashed","my-0.5":U&&d==="dashed"}),style:{"--color-bg":B,"--color-border":B}}),e.jsxs("div",{className:Q("flex flex-1 justify-between leading-none",U?"items-end":"items-center"),children:[e.jsxs("div",{className:"grid gap-1.5",children:[U?K:null,e.jsx("span",{className:"text-muted-foreground",children:z?.label||A.name})]}),A.value&&e.jsx("span",{className:"font-mono font-medium tabular-nums text-foreground",children:A.value.toLocaleString()})]})]})},A.dataKey)})})]})});Jn.displayName="ChartTooltip";const Fb=Wy,Tg=u.forwardRef(({className:n,hideIcon:r=!1,payload:c,verticalAlign:d="bottom",nameKey:h},x)=>{const{config:f}=kg();return c?.length?e.jsx("div",{ref:x,className:Q("flex items-center justify-center gap-4",d==="top"?"pb-3":"pt-3",n),children:c.filter(j=>j.type!=="none").map(j=>{const p=`${h||j.dataKey||"value"}`,w=Hu(f,j,p);return e.jsxs("div",{className:Q("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"),children:[w?.icon&&!r?e.jsx(w.icon,{}):e.jsx("div",{className:"h-2 w-2 shrink-0 rounded-[2px]",style:{backgroundColor:j.color}}),w?.label]},j.value)})}):null});Tg.displayName="ChartLegend";function Hu(n,r,c){if(typeof r!="object"||r===null)return;const d="payload"in r&&typeof r.payload=="object"&&r.payload!==null?r.payload:void 0;let h=c;return c in r&&typeof r[c]=="string"?h=r[c]:d&&c in d&&typeof d[c]=="string"&&(h=d[c]),h in n?n[h]:n[c]}const gr=ai("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),y=u.forwardRef(({className:n,variant:r,size:c,asChild:d=!1,...h},x)=>{const f=d?nN:"button";return e.jsx(f,{className:Q(gr({variant:r,size:c,className:n})),ref:x,...h})});y.displayName="Button";const $b=ai("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function Ye({className:n,variant:r,...c}){return e.jsx("div",{className:Q($b({variant:r}),n),...c})}const Qb=5,Yb=5e3;let zu=0;function Xb(){return zu=(zu+1)%Number.MAX_SAFE_INTEGER,zu.toString()}const Mu=new Map,ap=n=>{if(Mu.has(n))return;const r=setTimeout(()=>{Mu.delete(n),ur({type:"REMOVE_TOAST",toastId:n})},Yb);Mu.set(n,r)},Kb=(n,r)=>{switch(r.type){case"ADD_TOAST":return{...n,toasts:[r.toast,...n.toasts].slice(0,Qb)};case"UPDATE_TOAST":return{...n,toasts:n.toasts.map(c=>c.id===r.toast.id?{...c,...r.toast}:c)};case"DISMISS_TOAST":{const{toastId:c}=r;return c?ap(c):n.toasts.forEach(d=>{ap(d.id)}),{...n,toasts:n.toasts.map(d=>d.id===c||c===void 0?{...d,open:!1}:d)}}case"REMOVE_TOAST":return r.toastId===void 0?{...n,toasts:[]}:{...n,toasts:n.toasts.filter(c=>c.id!==r.toastId)}}},Zc=[];let Jc={toasts:[]};function ur(n){Jc=Kb(Jc,n),Zc.forEach(r=>{r(Jc)})}function Zb({...n}){const r=Xb(),c=h=>ur({type:"UPDATE_TOAST",toast:{...h,id:r}}),d=()=>ur({type:"DISMISS_TOAST",toastId:r});return ur({type:"ADD_TOAST",toast:{...n,id:r,open:!0,onOpenChange:h=>{h||d()}}}),{id:r,dismiss:d,update:c}}function Hs(){const[n,r]=u.useState(Jc);return u.useEffect(()=>(Zc.push(r),()=>{const c=Zc.indexOf(r);c>-1&&Zc.splice(c,1)}),[n]),{...n,toast:Zb,dismiss:c=>ur({type:"DISMISS_TOAST",toastId:c})}}const Jb=n=>{const r=[];for(let c=0;c{try{E(!0);const q=await qc.get("https://v1.hitokoto.cn/?c=a&c=b&c=c&c=d&c=h&c=i&c=k");k({hitokoto:q.data.hitokoto,from:q.data.from||q.data.from_who||"未知"})}catch(q){console.error("获取一言失败:",q),k({hitokoto:"人生就像一盒巧克力,你永远不知道下一颗是什么味道。",from:"阿甘正传"})}finally{E(!1)}},[]),z=u.useCallback(async()=>{try{const q=localStorage.getItem("access-token"),ie=await qc.get("/api/webui/system/status",{headers:{Authorization:`Bearer ${q}`}});K(ie.data)}catch(q){console.error("获取机器人状态失败:",q),K(null)}},[]),B=async()=>{if(!U)try{A(!0);const q=localStorage.getItem("access-token");await qc.post("/api/webui/system/restart",{},{headers:{Authorization:`Bearer ${q}`}}),Z({title:"重启中",description:"麦麦正在重启,请稍候..."}),setTimeout(()=>{z(),A(!1)},3e3)}catch(q){console.error("重启失败:",q),Z({title:"重启失败",description:"无法重启麦麦,请检查控制台",variant:"destructive"}),A(!1)}},X=u.useCallback(async()=>{try{const q=localStorage.getItem("access-token"),ie=await qc.get(`/api/webui/statistics/dashboard?hours=${f}`,{headers:{Authorization:`Bearer ${q}`}});r(ie.data),d(!1),x(100)}catch(q){console.error("Failed to fetch dashboard data:",q),d(!1),x(100)}},[f]);if(u.useEffect(()=>{if(!c)return;x(0);const q=setTimeout(()=>x(15),200),ie=setTimeout(()=>x(30),800),_=setTimeout(()=>x(45),2e3),me=setTimeout(()=>x(60),4e3),xe=setTimeout(()=>x(75),6500),$=setTimeout(()=>x(85),9e3),de=setTimeout(()=>x(92),11e3);return()=>{clearTimeout(q),clearTimeout(ie),clearTimeout(_),clearTimeout(me),clearTimeout(xe),clearTimeout($),clearTimeout(de)}},[c]),u.useEffect(()=>{X(),H(),z()},[X,H,z]),u.useEffect(()=>{if(!p)return;const q=setInterval(()=>{X(),z()},3e4);return()=>clearInterval(q)},[p,X,z]),c||!n)return e.jsx("div",{className:"flex items-center justify-center h-[calc(100vh-200px)]",children:e.jsxs("div",{className:"text-center space-y-6 w-full max-w-md px-4",children:[e.jsx(pt,{className:"h-12 w-12 animate-spin mx-auto text-primary"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-lg font-medium",children:"加载统计数据中..."}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"正在获取麦麦运行数据"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(Sr,{value:h,className:"h-2"}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:[h,"%"]})]})]})});const{summary:S,model_stats:O=[],hourly_data:te=[],daily_data:he=[],recent_activity:Ne=[]}=n,ye=S??{total_requests:0,total_cost:0,total_tokens:0,online_time:0,total_messages:0,total_replies:0,avg_response_time:0,cost_per_hour:0,tokens_per_hour:0},pe=q=>{const ie=Math.floor(q/3600),_=Math.floor(q%3600/60);return`${ie}小时${_}分钟`},je=q=>new Date(q).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),_e=Jb(O.length),N=O.map((q,ie)=>({name:q.model_name,value:q.request_count,fill:_e[ie]})),G={requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"},tokens:{label:"Tokens",color:"hsl(var(--chart-3))"}};return e.jsx(Pe,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"实时监控面板"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"麦麦运行状态和统计数据一览"})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(Kt,{value:f.toString(),onValueChange:q=>j(Number(q)),children:e.jsxs(Rt,{className:"grid grid-cols-3 w-full sm:w-auto",children:[e.jsx($e,{value:"24",children:"24小时"}),e.jsx($e,{value:"168",children:"7天"}),e.jsx($e,{value:"720",children:"30天"})]})}),e.jsxs(y,{variant:p?"default":"outline",size:"sm",onClick:()=>w(!p),className:"gap-2",children:[e.jsx(pt,{className:`h-4 w-4 ${p?"animate-spin":""}`}),e.jsx("span",{className:"hidden sm:inline",children:"自动刷新"})]}),e.jsx(y,{variant:"outline",size:"sm",onClick:X,children:e.jsx(pt,{className:"h-4 w-4"})})]})]}),e.jsxs("div",{className:"flex items-center gap-3 px-4 py-2 rounded-lg border border-dashed border-muted-foreground/30 bg-muted/20",children:[T?e.jsx(qb,{className:"h-5 flex-1"}):v?e.jsxs("p",{className:"flex-1 text-sm text-muted-foreground italic truncate",children:['"',v.hitokoto,'" —— ',v.from]}):null,e.jsx(y,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0",onClick:H,disabled:T,children:e.jsx(pt,{className:`h-3.5 w-3.5 ${T?"animate-spin":""}`})})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-3",children:[e.jsxs(Fe,{className:"lg:col-span-1",children:[e.jsx(gs,{className:"pb-3",children:e.jsxs(js,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(Nr,{className:"h-4 w-4"}),"麦麦状态"]})}),e.jsx(bs,{children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"flex items-center gap-2",children:R?.running?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-3 w-3 rounded-full bg-green-500 animate-pulse"}),e.jsxs(Ye,{variant:"outline",className:"text-green-600 border-green-300 bg-green-50",children:[e.jsx(pa,{className:"h-3 w-3 mr-1"}),"运行中"]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-3 w-3 rounded-full bg-red-500"}),e.jsxs(Ye,{variant:"outline",className:"text-red-600 border-red-300 bg-red-50",children:[e.jsx(Da,{className:"h-3 w-3 mr-1"}),"已停止"]})]})}),R&&e.jsxs("div",{className:"text-xs text-muted-foreground",children:[e.jsxs("span",{children:["v",R.version]}),e.jsx("span",{className:"mx-2",children:"|"}),e.jsxs("span",{children:["运行 ",pe(R.uptime)]})]})]})})]}),e.jsxs(Fe,{className:"lg:col-span-2",children:[e.jsx(gs,{className:"pb-3",children:e.jsxs(js,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(ln,{className:"h-4 w-4"}),"快速操作"]})}),e.jsx(bs,{children:e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(y,{variant:"outline",size:"sm",onClick:B,disabled:U,className:"gap-2",children:[e.jsx(Wc,{className:`h-4 w-4 ${U?"animate-spin":""}`}),U?"重启中...":"重启麦麦"]}),e.jsx(y,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Kc,{to:"/logs",children:[e.jsx(Aa,{className:"h-4 w-4"}),"查看日志"]})}),e.jsx(y,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Kc,{to:"/plugins",children:[e.jsx(bN,{className:"h-4 w-4"}),"插件管理"]})}),e.jsx(y,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Kc,{to:"/settings",children:[e.jsx(Rl,{className:"h-4 w-4"}),"系统设置"]})})]})})]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-4",children:[e.jsxs(Fe,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"总请求数"}),e.jsx(wN,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsx("div",{className:"text-2xl font-bold",children:ye.total_requests.toLocaleString()}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["最近",f<48?f+"小时":Math.floor(f/24)+"天"]})]})]}),e.jsxs(Fe,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"总花费"}),e.jsx(_N,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:["¥",ye.total_cost.toFixed(2)]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:ye.cost_per_hour>0?`¥${ye.cost_per_hour.toFixed(2)}/小时`:"暂无数据"})]})]}),e.jsxs(Fe,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"Token消耗"}),e.jsx(eo,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:[(ye.total_tokens/1e3).toFixed(1),"K"]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:ye.tokens_per_hour>0?`${(ye.tokens_per_hour/1e3).toFixed(1)}K/小时`:"暂无数据"})]})]}),e.jsxs(Fe,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"平均响应"}),e.jsx(ln,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:[ye.avg_response_time.toFixed(2),"s"]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"API平均耗时"})]})]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 sm:grid-cols-3",children:[e.jsxs(Fe,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"在线时长"}),e.jsx(Wn,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsx(bs,{children:e.jsx("div",{className:"text-xl font-bold",children:pe(ye.online_time)})})]}),e.jsxs(Fe,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"消息处理"}),e.jsx(si,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsx("div",{className:"text-xl font-bold",children:ye.total_messages.toLocaleString()}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["回复 ",ye.total_replies.toLocaleString()," 条"]})]})]}),e.jsxs(Fe,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"成本效率"}),e.jsx(SN,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsx("div",{className:"text-xl font-bold",children:ye.total_messages>0?`¥${(ye.total_cost/ye.total_messages*100).toFixed(2)}`:"¥0.00"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"每100条消息"})]})]})]}),e.jsxs(Kt,{defaultValue:"trends",className:"space-y-4",children:[e.jsxs(Rt,{className:"grid w-full grid-cols-2 sm:grid-cols-4",children:[e.jsx($e,{value:"trends",children:"趋势"}),e.jsx($e,{value:"models",children:"模型"}),e.jsx($e,{value:"activity",children:"活动"}),e.jsx($e,{value:"daily",children:"日统计"})]}),e.jsxs(We,{value:"trends",className:"space-y-4",children:[e.jsxs(Fe,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"请求趋势"}),e.jsxs(Zs,{children:["最近",f,"小时的请求量变化"]})]}),e.jsx(bs,{children:e.jsx(Zn,{config:G,className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:e.jsxs(eN,{data:te,children:[e.jsx(Gc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Vc,{dataKey:"timestamp",tickFormatter:q=>je(q),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{content:e.jsx(Jn,{labelFormatter:q=>je(q)})}),e.jsx(sN,{type:"monotone",dataKey:"requests",stroke:"var(--color-requests)",strokeWidth:2})]})})})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[e.jsxs(Fe,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"花费趋势"}),e.jsx(Zs,{children:"API调用成本变化"})]}),e.jsx(bs,{children:e.jsx(Zn,{config:G,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:e.jsxs(Su,{data:te,children:[e.jsx(Gc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Vc,{dataKey:"timestamp",tickFormatter:q=>je(q),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{content:e.jsx(Jn,{labelFormatter:q=>je(q)})}),e.jsx(Fc,{dataKey:"cost",fill:"var(--color-cost)"})]})})})]}),e.jsxs(Fe,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"Token消耗"}),e.jsx(Zs,{children:"Token使用量变化"})]}),e.jsx(bs,{children:e.jsx(Zn,{config:G,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:e.jsxs(Su,{data:te,children:[e.jsx(Gc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Vc,{dataKey:"timestamp",tickFormatter:q=>je(q),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{content:e.jsx(Jn,{labelFormatter:q=>je(q)})}),e.jsx(Fc,{dataKey:"tokens",fill:"var(--color-tokens)"})]})})})]})]})]}),e.jsx(We,{value:"models",className:"space-y-4",children:e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[e.jsxs(Fe,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"模型请求分布"}),e.jsxs(Zs,{children:["各模型使用占比 (共 ",O.length," 个模型)"]})]}),e.jsx(bs,{children:e.jsx(Zn,{config:Object.fromEntries(O.map((q,ie)=>[q.model_name,{label:q.model_name,color:_e[ie]}])),className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:e.jsxs(tN,{children:[e.jsx(lr,{content:e.jsx(Jn,{})}),e.jsx(aN,{data:N,cx:"50%",cy:"50%",labelLine:!1,label:({name:q,percent:ie})=>ie&&ie<.05?"":`${q} ${ie?(ie*100).toFixed(0):0}%`,outerRadius:100,dataKey:"value",children:N.map((q,ie)=>e.jsx(lN,{fill:q.fill},`cell-${ie}`))})]})})})]}),e.jsxs(Fe,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"模型详细统计"}),e.jsx(Zs,{children:"请求数、花费和性能"})]}),e.jsx(bs,{children:e.jsx(Pe,{className:"h-[300px] sm:h-[400px]",children:e.jsx("div",{className:"space-y-3",children:O.map((q,ie)=>e.jsxs("div",{className:"p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("h4",{className:"font-semibold text-sm truncate flex-1 min-w-0",children:q.model_name}),e.jsx("div",{className:"w-3 h-3 rounded-full ml-2 flex-shrink-0",style:{backgroundColor:`hsl(var(--chart-${ie%5+1}))`}})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"请求数:"}),e.jsx("span",{className:"ml-1 font-medium",children:q.request_count.toLocaleString()})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"花费:"}),e.jsxs("span",{className:"ml-1 font-medium",children:["¥",q.total_cost.toFixed(2)]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),e.jsxs("span",{className:"ml-1 font-medium",children:[(q.total_tokens/1e3).toFixed(1),"K"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"平均耗时:"}),e.jsxs("span",{className:"ml-1 font-medium",children:[q.avg_response_time.toFixed(2),"s"]})]})]})]},ie))})})})]})]})}),e.jsx(We,{value:"activity",children:e.jsxs(Fe,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"最近活动"}),e.jsx(Zs,{children:"最新的API调用记录"})]}),e.jsx(bs,{children:e.jsx(Pe,{className:"h-[400px] sm:h-[500px]",children:e.jsx("div",{className:"space-y-2",children:Ne.map((q,ie)=>e.jsxs("div",{className:"p-3 sm:p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-2 mb-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-sm truncate",children:q.model}),e.jsx("div",{className:"text-xs text-muted-foreground",children:q.request_type})]}),e.jsx("div",{className:"text-xs text-muted-foreground flex-shrink-0",children:je(q.timestamp)})]}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-2 text-xs",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),e.jsx("span",{className:"ml-1",children:q.tokens})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"花费:"}),e.jsxs("span",{className:"ml-1",children:["¥",q.cost.toFixed(4)]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"耗时:"}),e.jsxs("span",{className:"ml-1",children:[q.time_cost.toFixed(2),"s"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"状态:"}),e.jsx("span",{className:`ml-1 ${q.status==="success"?"text-green-600":"text-red-600"}`,children:q.status})]})]})]},ie))})})})]})}),e.jsx(We,{value:"daily",children:e.jsxs(Fe,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"每日统计"}),e.jsx(Zs,{children:"最近7天的数据汇总"})]}),e.jsx(bs,{children:e.jsx(Zn,{config:{requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"}},className:"h-[400px] sm:h-[500px] w-full aspect-auto",children:e.jsxs(Su,{data:he,children:[e.jsx(Gc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Vc,{dataKey:"timestamp",tickFormatter:q=>{const ie=new Date(q);return`${ie.getMonth()+1}/${ie.getDate()}`},stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{yAxisId:"left",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{yAxisId:"right",orientation:"right",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{content:e.jsx(Jn,{labelFormatter:q=>new Date(q).toLocaleDateString("zh-CN")})}),e.jsx(Fb,{content:e.jsx(Tg,{})}),e.jsx(Fc,{yAxisId:"left",dataKey:"requests",fill:"var(--color-requests)"}),e.jsx(Fc,{yAxisId:"right",dataKey:"cost",fill:"var(--color-cost)"})]})})})]})})]})]})})}const Pb={theme:"system",setTheme:()=>null},Eg=u.createContext(Pb),Yu=()=>{const n=u.useContext(Eg);if(n===void 0)throw new Error("useTheme must be used within a ThemeProvider");return n},Wb=(n,r,c)=>{const d=document.documentElement.classList.contains("no-animations");if(!document.startViewTransition||d){r(n);return}const h=c.clientX,x=c.clientY,f=Math.hypot(Math.max(h,innerWidth-h),Math.max(x,innerHeight-x));document.startViewTransition(()=>{r(n)}).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${h}px ${x}px)`,`circle(${f}px at ${h}px ${x}px)`]},{duration:500,easing:"ease-in-out",pseudoElement:"::view-transition-new(root)"})})},zg=u.createContext(void 0),Mg=()=>{const n=u.useContext(zg);if(n===void 0)throw new Error("useAnimation must be used within an AnimationProvider");return n},Ve=u.forwardRef(({className:n,...r},c)=>e.jsx(Tp,{className:Q("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",n),...r,ref:c,children:e.jsx(Oy,{className:Q("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));Ve.displayName=Tp.displayName;const e0=ai("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),b=u.forwardRef(({className:n,...r},c)=>e.jsx(Jp,{ref:c,className:Q(e0(),n),...r}));b.displayName=Jp.displayName;const ce=u.forwardRef(({className:n,type:r,...c},d)=>e.jsx("input",{type:r,className:Q("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",n),ref:d,...c}));ce.displayName="Input";const s0=[{id:"minLength",label:"长度至少 10 位",description:"Token 长度必须大于等于 10 个字符",validate:n=>n.length>=10},{id:"hasUppercase",label:"包含大写字母",description:"至少包含一个大写字母 (A-Z)",validate:n=>/[A-Z]/.test(n)},{id:"hasLowercase",label:"包含小写字母",description:"至少包含一个小写字母 (a-z)",validate:n=>/[a-z]/.test(n)},{id:"hasSpecialChar",label:"包含特殊符号",description:"至少包含一个特殊符号 (!@#$%^&*()_+-=[]{}|;:,.<>?/)",validate:n=>/[!@#$%^&*()_+\-=[\]{}|;:,.<>?/]/.test(n)}];function t0(n){const r=s0.map(d=>({id:d.id,label:d.label,description:d.description,passed:d.validate(n)}));return{isValid:r.every(d=>d.passed),rules:r}}const Xu="0.11.6 Beta",Ku="MaiBot Dashboard",a0=`${Ku} v${Xu}`,l0=(n="v")=>`${n}${Xu}`,Ot={THEME:"maibot-ui-theme",ACCENT_COLOR:"accent-color",ENABLE_ANIMATIONS:"maibot-animations",ENABLE_WAVES_BACKGROUND:"maibot-waves-background",LOG_CACHE_SIZE:"maibot-log-cache-size",LOG_AUTO_SCROLL:"maibot-log-auto-scroll",LOG_FONT_SIZE:"maibot-log-font-size",LOG_LINE_SPACING:"maibot-log-line-spacing",DATA_SYNC_INTERVAL:"maibot-data-sync-interval",WS_RECONNECT_INTERVAL:"maibot-ws-reconnect-interval",WS_MAX_RECONNECT_ATTEMPTS:"maibot-ws-max-reconnect-attempts",COMPLETED_TOURS:"maibot-completed-tours"},za={theme:"system",accentColor:"blue",enableAnimations:!0,enableWavesBackground:!0,logCacheSize:1e3,logAutoScroll:!0,logFontSize:"xs",logLineSpacing:4,dataSyncInterval:30,wsReconnectInterval:3e3,wsMaxReconnectAttempts:10};function $s(n){const r=Ag(n),c=localStorage.getItem(r);if(c===null)return za[n];const d=za[n];if(typeof d=="boolean")return c==="true";if(typeof d=="number"){const h=parseFloat(c);return isNaN(h)?d:h}return c}function Pn(n,r){const c=Ag(n);localStorage.setItem(c,String(r)),window.dispatchEvent(new CustomEvent("maibot-settings-change",{detail:{key:n,value:r}}))}function n0(){return{theme:$s("theme"),accentColor:$s("accentColor"),enableAnimations:$s("enableAnimations"),enableWavesBackground:$s("enableWavesBackground"),logCacheSize:$s("logCacheSize"),logAutoScroll:$s("logAutoScroll"),logFontSize:$s("logFontSize"),logLineSpacing:$s("logLineSpacing"),dataSyncInterval:$s("dataSyncInterval"),wsReconnectInterval:$s("wsReconnectInterval"),wsMaxReconnectAttempts:$s("wsMaxReconnectAttempts")}}function i0(){const n=n0(),r=localStorage.getItem(Ot.COMPLETED_TOURS),c=r?JSON.parse(r):[];return{...n,completedTours:c}}function r0(n){const r=[],c=[];for(const[d,h]of Object.entries(n)){if(d==="completedTours"){Array.isArray(h)?(localStorage.setItem(Ot.COMPLETED_TOURS,JSON.stringify(h)),r.push("completedTours")):c.push("completedTours");continue}if(d in za){const x=d,f=za[x];if(typeof h==typeof f){if(x==="theme"&&!["light","dark","system"].includes(h)){c.push(d);continue}if(x==="logFontSize"&&!["xs","sm","base"].includes(h)){c.push(d);continue}Pn(x,h),r.push(d)}else c.push(d)}else c.push(d)}return{success:r.length>0,imported:r,skipped:c}}function c0(){for(const n of Object.keys(za))Pn(n,za[n]);localStorage.removeItem(Ot.COMPLETED_TOURS),window.dispatchEvent(new CustomEvent("maibot-settings-reset"))}function o0(){const n=[],r=[],c=[];for(let d=0;dd.size-c.size),{used:n,items:localStorage.length,details:r}}function d0(n){if(n===0)return"0 B";const r=1024,c=["B","KB","MB"],d=Math.floor(Math.log(n)/Math.log(r));return parseFloat((n/Math.pow(r,d)).toFixed(2))+" "+c[d]}function Ag(n){return{theme:Ot.THEME,accentColor:Ot.ACCENT_COLOR,enableAnimations:Ot.ENABLE_ANIMATIONS,enableWavesBackground:Ot.ENABLE_WAVES_BACKGROUND,logCacheSize:Ot.LOG_CACHE_SIZE,logAutoScroll:Ot.LOG_AUTO_SCROLL,logFontSize:Ot.LOG_FONT_SIZE,logLineSpacing:Ot.LOG_LINE_SPACING,dataSyncInterval:Ot.DATA_SYNC_INTERVAL,wsReconnectInterval:Ot.WS_RECONNECT_INTERVAL,wsMaxReconnectAttempts:Ot.WS_MAX_RECONNECT_ATTEMPTS}[n]}const Ma=u.forwardRef(({className:n,...r},c)=>e.jsxs(Ep,{ref:c,className:Q("relative flex w-full touch-none select-none items-center",n),...r,children:[e.jsx(Ry,{className:"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20",children:e.jsx(Ly,{className:"absolute h-full bg-primary"})}),e.jsx(Uy,{className:"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"})]}));Ma.displayName=Ep.displayName;class u0{ws=null;reconnectTimeout=null;reconnectAttempts=0;heartbeatInterval=null;logCallbacks=new Set;connectionCallbacks=new Set;isConnected=!1;logCache=[];getMaxCacheSize(){return $s("logCacheSize")}getMaxReconnectAttempts(){return $s("wsMaxReconnectAttempts")}getReconnectInterval(){return $s("wsReconnectInterval")}getWebSocketUrl(){{const r=window.location.protocol==="https:"?"wss:":"ws:",c=window.location.host;return`${r}//${c}/ws/logs`}}connect(){if(this.ws?.readyState===WebSocket.OPEN||this.ws?.readyState===WebSocket.CONNECTING)return;const r=this.getWebSocketUrl();try{this.ws=new WebSocket(r),this.ws.onopen=()=>{this.isConnected=!0,this.reconnectAttempts=0,this.notifyConnection(!0),this.startHeartbeat()},this.ws.onmessage=c=>{try{if(c.data==="pong")return;const d=JSON.parse(c.data);this.notifyLog(d)}catch(d){console.error("解析日志消息失败:",d)}},this.ws.onerror=c=>{console.error("❌ WebSocket 错误:",c),this.isConnected=!1,this.notifyConnection(!1)},this.ws.onclose=()=>{this.isConnected=!1,this.notifyConnection(!1),this.stopHeartbeat(),this.attemptReconnect()}}catch(c){console.error("创建 WebSocket 连接失败:",c),this.attemptReconnect()}}attemptReconnect(){const r=this.getMaxReconnectAttempts();if(this.reconnectAttempts>=r)return;this.reconnectAttempts+=1;const c=this.getReconnectInterval(),d=Math.min(c*this.reconnectAttempts,3e4);this.reconnectTimeout=window.setTimeout(()=>{this.connect()},d)}startHeartbeat(){this.heartbeatInterval=window.setInterval(()=>{this.ws?.readyState===WebSocket.OPEN&&this.ws.send("ping")},3e4)}stopHeartbeat(){this.heartbeatInterval!==null&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}disconnect(){this.reconnectTimeout!==null&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.stopHeartbeat(),this.ws&&(this.ws.close(),this.ws=null),this.isConnected=!1,this.reconnectAttempts=0}onLog(r){return this.logCallbacks.add(r),()=>this.logCallbacks.delete(r)}onConnectionChange(r){return this.connectionCallbacks.add(r),r(this.isConnected),()=>this.connectionCallbacks.delete(r)}notifyLog(r){if(!this.logCache.some(d=>d.id===r.id)){this.logCache.push(r);const d=this.getMaxCacheSize();this.logCache.length>d&&(this.logCache=this.logCache.slice(-d)),this.logCallbacks.forEach(h=>{try{h(r)}catch(x){console.error("日志回调执行失败:",x)}})}}notifyConnection(r){this.connectionCallbacks.forEach(c=>{try{c(r)}catch(d){console.error("连接状态回调执行失败:",d)}})}getAllLogs(){return[...this.logCache]}clearLogs(){this.logCache=[]}getConnectionStatus(){return this.isConnected}}const an=new u0;typeof window<"u"&&an.connect();const Rs=rN,ni=cN,m0=iN,Zu=Wp,Dg=u.forwardRef(({className:n,...r},c)=>e.jsx(Ip,{ref:c,className:Q("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...r}));Dg.displayName=Ip.displayName;const zs=u.forwardRef(({className:n,children:r,preventOutsideClose:c=!1,...d},h)=>e.jsxs(m0,{children:[e.jsx(Dg,{}),e.jsxs(Pp,{ref:h,className:Q("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",n),onPointerDownOutside:c?x=>x.preventDefault():void 0,onInteractOutside:c?x=>x.preventDefault():void 0,...d,children:[r,e.jsxs(Wp,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[e.jsx(li,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));zs.displayName=Pp.displayName;const Ms=({className:n,...r})=>e.jsx("div",{className:Q("flex flex-col space-y-1.5 text-center sm:text-left",n),...r});Ms.displayName="DialogHeader";const Js=({className:n,...r})=>e.jsx("div",{className:Q("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",n),...r});Js.displayName="DialogFooter";const As=u.forwardRef(({className:n,...r},c)=>e.jsx(eg,{ref:c,className:Q("text-lg font-semibold leading-none tracking-tight",n),...r}));As.displayName=eg.displayName;const Ys=u.forwardRef(({className:n,...r},c)=>e.jsx(sg,{ref:c,className:Q("text-sm text-muted-foreground",n),...r}));Ys.displayName=sg.displayName;const ps=Hy,Qs=qy,h0=By,Og=u.forwardRef(({className:n,...r},c)=>e.jsx(zp,{className:Q("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...r,ref:c}));Og.displayName=zp.displayName;const rs=u.forwardRef(({className:n,...r},c)=>e.jsxs(h0,{children:[e.jsx(Og,{}),e.jsx(Mp,{ref:c,className:Q("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",n),...r})]}));rs.displayName=Mp.displayName;const cs=({className:n,...r})=>e.jsx("div",{className:Q("flex flex-col space-y-2 text-center sm:text-left",n),...r});cs.displayName="AlertDialogHeader";const os=({className:n,...r})=>e.jsx("div",{className:Q("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",n),...r});os.displayName="AlertDialogFooter";const ds=u.forwardRef(({className:n,...r},c)=>e.jsx(Ap,{ref:c,className:Q("text-lg font-semibold",n),...r}));ds.displayName=Ap.displayName;const us=u.forwardRef(({className:n,...r},c)=>e.jsx(Dp,{ref:c,className:Q("text-sm text-muted-foreground",n),...r}));us.displayName=Dp.displayName;const ms=u.forwardRef(({className:n,...r},c)=>e.jsx(Op,{ref:c,className:Q(gr(),n),...r}));ms.displayName=Op.displayName;const hs=u.forwardRef(({className:n,...r},c)=>e.jsx(Rp,{ref:c,className:Q(gr({variant:"outline"}),"mt-2 sm:mt-0",n),...r}));hs.displayName=Rp.displayName;function x0(){return e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"系统设置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理您的应用偏好设置"})]})}),e.jsxs(Kt,{defaultValue:"appearance",className:"w-full",children:[e.jsxs(Rt,{className:"grid w-full grid-cols-2 sm:grid-cols-4 gap-0.5 sm:gap-1 h-auto p-1",children:[e.jsxs($e,{value:"appearance",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(gg,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"外观"})]}),e.jsxs($e,{value:"security",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(CN,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"安全"})]}),e.jsxs($e,{value:"other",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(Rl,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"其他"})]}),e.jsxs($e,{value:"about",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(Xt,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"关于"})]})]}),e.jsxs(Pe,{className:"h-[calc(100vh-240px)] sm:h-[calc(100vh-280px)] mt-4 sm:mt-6",children:[e.jsx(We,{value:"appearance",className:"mt-0",children:e.jsx(f0,{})}),e.jsx(We,{value:"security",className:"mt-0",children:e.jsx(p0,{})}),e.jsx(We,{value:"other",className:"mt-0",children:e.jsx(g0,{})}),e.jsx(We,{value:"about",className:"mt-0",children:e.jsx(j0,{})})]})]})]})}function np(n){const r=document.documentElement,d={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[n];if(d)r.style.setProperty("--primary",d.hsl),d.gradient?(r.style.setProperty("--primary-gradient",d.gradient),r.classList.add("has-gradient")):(r.style.removeProperty("--primary-gradient"),r.classList.remove("has-gradient"));else if(n.startsWith("#")){const h=x=>{x=x.replace("#","");const f=parseInt(x.substring(0,2),16)/255,j=parseInt(x.substring(2,4),16)/255,p=parseInt(x.substring(4,6),16)/255,w=Math.max(f,j,p),v=Math.min(f,j,p);let k=0,T=0;const E=(w+v)/2;if(w!==v){const R=w-v;switch(T=E>.5?R/(2-w-v):R/(w+v),w){case f:k=((j-p)/R+(jlocalStorage.getItem("accent-color")||"blue");u.useEffect(()=>{const w=localStorage.getItem("accent-color")||"blue";np(w)},[]);const p=w=>{j(w),localStorage.setItem("accent-color",w),np(w)};return e.jsxs("div",{className:"space-y-6 sm:space-y-8",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题模式"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 sm:gap-4",children:[e.jsx(Au,{value:"light",current:n,onChange:r,label:"浅色",description:"始终使用浅色主题"}),e.jsx(Au,{value:"dark",current:n,onChange:r,label:"深色",description:"始终使用深色主题"}),e.jsx(Au,{value:"system",current:n,onChange:r,label:"跟随系统",description:"根据系统设置自动切换"})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题色"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"单色"}),e.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[e.jsx(ma,{value:"blue",current:f,onChange:p,label:"蓝色",colorClass:"bg-blue-500"}),e.jsx(ma,{value:"purple",current:f,onChange:p,label:"紫色",colorClass:"bg-purple-500"}),e.jsx(ma,{value:"green",current:f,onChange:p,label:"绿色",colorClass:"bg-green-500"}),e.jsx(ma,{value:"orange",current:f,onChange:p,label:"橙色",colorClass:"bg-orange-500"}),e.jsx(ma,{value:"pink",current:f,onChange:p,label:"粉色",colorClass:"bg-pink-500"}),e.jsx(ma,{value:"red",current:f,onChange:p,label:"红色",colorClass:"bg-red-500"})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"渐变色"}),e.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[e.jsx(ma,{value:"gradient-sunset",current:f,onChange:p,label:"日落",colorClass:"bg-gradient-to-r from-orange-500 to-pink-500"}),e.jsx(ma,{value:"gradient-ocean",current:f,onChange:p,label:"海洋",colorClass:"bg-gradient-to-r from-blue-500 to-cyan-500"}),e.jsx(ma,{value:"gradient-forest",current:f,onChange:p,label:"森林",colorClass:"bg-gradient-to-r from-green-500 to-emerald-500"}),e.jsx(ma,{value:"gradient-aurora",current:f,onChange:p,label:"极光",colorClass:"bg-gradient-to-r from-purple-500 to-pink-500"}),e.jsx(ma,{value:"gradient-fire",current:f,onChange:p,label:"烈焰",colorClass:"bg-gradient-to-r from-red-500 to-orange-500"}),e.jsx(ma,{value:"gradient-twilight",current:f,onChange:p,label:"暮光",colorClass:"bg-gradient-to-r from-indigo-500 to-purple-500"})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"自定义颜色"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 sm:gap-4",children:[e.jsx("div",{className:"flex-1",children:e.jsx("input",{type:"color",value:f.startsWith("#")?f:"#3b82f6",onChange:w=>p(w.target.value),className:"h-10 sm:h-12 w-full rounded-lg border-2 border-border cursor-pointer",title:"选择自定义颜色"})}),e.jsx("div",{className:"flex-1",children:e.jsx(ce,{type:"text",value:f,onChange:w=>p(w.target.value),placeholder:"#3b82f6",className:"font-mono text-sm"})})]}),e.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground mt-2",children:"点击色块选择颜色,或手动输入 HEX 颜色代码"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"动画效果"}),e.jsxs("div",{className:"space-y-2 sm:space-y-3",children:[e.jsx("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5 flex-1",children:[e.jsx(b,{htmlFor:"animations",className:"text-base font-medium cursor-pointer",children:"启用动画效果"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后将禁用所有过渡动画和特效,提升性能"})]}),e.jsx(Ve,{id:"animations",checked:c,onCheckedChange:d})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5 flex-1",children:[e.jsx(b,{htmlFor:"waves-background",className:"text-base font-medium cursor-pointer",children:"登录页波浪背景"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后登录页将使用纯色背景,适合低性能设备"})]}),e.jsx(Ve,{id:"waves-background",checked:h,onCheckedChange:x})]})})]})]})]})}function p0(){const n=Jt(),[r,c]=u.useState(""),[d,h]=u.useState(""),[x,f]=u.useState(!1),[j,p]=u.useState(!1),[w,v]=u.useState(!1),[k,T]=u.useState(!1),[E,R]=u.useState(!1),[K,U]=u.useState(!1),[A,Z]=u.useState(""),[H,z]=u.useState(!1),{toast:B}=Hs(),X=u.useMemo(()=>t0(d),[d]),S=async pe=>{if(!r){B({title:"无法复制",description:"Token 存储在安全 Cookie 中,请重新生成以获取新 Token",variant:"destructive"});return}try{await navigator.clipboard.writeText(pe),R(!0),B({title:"复制成功",description:"Token 已复制到剪贴板"}),setTimeout(()=>R(!1),2e3)}catch{B({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},O=async()=>{if(!d.trim()){B({title:"输入错误",description:"请输入新的 Token",variant:"destructive"});return}if(!X.isValid){const pe=X.rules.filter(je=>!je.passed).map(je=>je.label).join(", ");B({title:"格式错误",description:`Token 不符合要求: ${pe}`,variant:"destructive"});return}v(!0);try{const pe=await fetch("/api/webui/auth/update",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({new_token:d.trim()})}),je=await pe.json();pe.ok&&je.success?(h(""),c(d.trim()),B({title:"更新成功",description:"Access Token 已更新,即将跳转到登录页"}),setTimeout(()=>{n({to:"/auth"})},1500)):B({title:"更新失败",description:je.message||"无法更新 Token",variant:"destructive"})}catch(pe){console.error("更新 Token 错误:",pe),B({title:"更新失败",description:"连接服务器失败",variant:"destructive"})}finally{v(!1)}},te=async()=>{T(!0);try{const pe=await fetch("/api/webui/auth/regenerate",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include"}),je=await pe.json();pe.ok&&je.success?(c(je.token),Z(je.token),U(!0),z(!1),B({title:"生成成功",description:"新的 Access Token 已生成,请及时保存"})):B({title:"生成失败",description:je.message||"无法生成新 Token",variant:"destructive"})}catch(pe){console.error("生成 Token 错误:",pe),B({title:"生成失败",description:"连接服务器失败",variant:"destructive"})}finally{T(!1)}},he=async()=>{try{await navigator.clipboard.writeText(A),z(!0),B({title:"复制成功",description:"Token 已复制到剪贴板"})}catch{B({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},Ne=()=>{U(!1),setTimeout(()=>{Z(""),z(!1)},300),setTimeout(()=>{n({to:"/auth"})},500)},ye=pe=>{pe||Ne()};return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsx(Rs,{open:K,onOpenChange:ye,children:e.jsxs(zs,{className:"sm:max-w-md",children:[e.jsxs(Ms,{children:[e.jsxs(As,{className:"flex items-center gap-2",children:[e.jsx(ba,{className:"h-5 w-5 text-yellow-500"}),"新的 Access Token"]}),e.jsx(Ys,{children:"这是您的新 Token,请立即保存。关闭此窗口后将跳转到登录页面。"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"rounded-lg border-2 border-primary/20 bg-primary/5 p-4",children:[e.jsx(b,{className:"text-xs text-muted-foreground mb-2 block",children:"您的新 Token (64位安全令牌)"}),e.jsx("div",{className:"font-mono text-sm break-all select-all bg-background p-3 rounded border",children:A})]}),e.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ba,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5"}),e.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[e.jsx("p",{className:"font-semibold",children:"重要提示"}),e.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[e.jsx("li",{children:"此 Token 仅显示一次,关闭后无法再查看"}),e.jsx("li",{children:"请立即复制并保存到安全的位置"}),e.jsx("li",{children:"关闭窗口后将自动跳转到登录页面"}),e.jsx("li",{children:"请使用新 Token 重新登录系统"})]})]})]})})]}),e.jsxs(Js,{className:"gap-2 sm:gap-0",children:[e.jsx(y,{variant:"outline",onClick:he,className:"gap-2",children:H?e.jsxs(e.Fragment,{children:[e.jsx(fa,{className:"h-4 w-4 text-green-500"}),"已复制"]}):e.jsxs(e.Fragment,{children:[e.jsx(so,{className:"h-4 w-4"}),"复制 Token"]})}),e.jsx(y,{onClick:Ne,children:"我已保存,关闭"})]})]})}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"当前 Access Token"}),e.jsx("div",{className:"space-y-3 sm:space-y-4",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"current-token",className:"text-sm",children:"您的访问令牌"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(ce,{id:"current-token",type:x?"text":"password",value:r||"••••••••••••••••••••••••••••••••",readOnly:!0,className:"pr-10 font-mono text-sm",placeholder:"Token 存储在安全 Cookie 中"}),e.jsx("button",{onClick:()=>{r?f(!x):B({title:"无法查看",description:'Token 存储在安全 Cookie 中,如需新 Token 请点击"重新生成"'})},className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:x?"隐藏":"显示",children:x?e.jsx(mr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Zt,{className:"h-4 w-4 text-muted-foreground"})})]}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[e.jsx(y,{variant:"outline",size:"icon",onClick:()=>S(r),title:"复制到剪贴板",className:"flex-shrink-0",disabled:!r,children:E?e.jsx(fa,{className:"h-4 w-4 text-green-500"}):e.jsx(so,{className:"h-4 w-4"})}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(y,{variant:"outline",disabled:k,className:"gap-2 flex-1 sm:flex-none",children:[e.jsx(pt,{className:Q("h-4 w-4",k&&"animate-spin")}),e.jsx("span",{className:"hidden sm:inline",children:"重新生成"}),e.jsx("span",{className:"sm:hidden",children:"生成"})]})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认重新生成 Token"}),e.jsx(us,{children:"这将生成一个新的 64 位安全令牌,并使当前 Token 立即失效。 您需要使用新 Token 重新登录系统。此操作不可撤销,确定要继续吗?"})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:te,children:"确认生成"})]})]})]})]})]}),e.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground",children:"请妥善保管您的 Access Token,不要泄露给他人"})]})})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"自定义 Access Token"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"new-token",className:"text-sm",children:"新的访问令牌"}),e.jsxs("div",{className:"relative",children:[e.jsx(ce,{id:"new-token",type:j?"text":"password",value:d,onChange:pe=>h(pe.target.value),className:"pr-10 font-mono text-sm",placeholder:"输入自定义 Token"}),e.jsx("button",{onClick:()=>p(!j),className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:j?"隐藏":"显示",children:j?e.jsx(mr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Zt,{className:"h-4 w-4 text-muted-foreground"})})]}),d&&e.jsxs("div",{className:"mt-3 space-y-2 p-3 rounded-lg bg-muted/50",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"Token 安全要求:"}),e.jsx("div",{className:"space-y-1.5",children:X.rules.map(pe=>e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[pe.passed?e.jsx(pa,{className:"h-4 w-4 text-green-500 flex-shrink-0"}):e.jsx(jg,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),e.jsx("span",{className:Q(pe.passed?"text-green-600 dark:text-green-400":"text-muted-foreground"),children:pe.label})]},pe.id))}),X.isValid&&e.jsx("div",{className:"mt-2 pt-2 border-t border-border",children:e.jsxs("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[e.jsx(fa,{className:"h-4 w-4"}),e.jsx("span",{className:"font-medium",children:"Token 格式正确,可以使用"})]})})]})]}),e.jsx(y,{onClick:O,disabled:w||!X.isValid||!d,className:"w-full sm:w-auto",children:w?"更新中...":"更新自定义 Token"})]})]}),e.jsxs("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3 sm:p-4",children:[e.jsx("h4",{className:"text-sm sm:text-base font-semibold text-yellow-900 dark:text-yellow-200 mb-2",children:"安全提示"}),e.jsxs("ul",{className:"text-xs sm:text-sm text-yellow-800 dark:text-yellow-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"重新生成 Token 会创建系统随机生成的 64 位安全令牌"}),e.jsx("li",{children:"自定义 Token 必须满足所有安全要求才能使用"}),e.jsx("li",{children:"更新 Token 后,旧的 Token 将立即失效"}),e.jsx("li",{children:"请在安全的环境下查看和复制 Token"}),e.jsx("li",{children:"如果怀疑 Token 泄露,请立即重新生成或更新"}),e.jsx("li",{children:"建议使用系统生成的 Token 以获得最高安全性"})]})]})]})}function g0(){const n=Jt(),{toast:r}=Hs(),[c,d]=u.useState(!1),[h,x]=u.useState(!1),[f,j]=u.useState(()=>$s("logCacheSize")),[p,w]=u.useState(()=>$s("wsReconnectInterval")),[v,k]=u.useState(()=>$s("wsMaxReconnectAttempts")),[T,E]=u.useState(()=>$s("dataSyncInterval")),[R,K]=u.useState(()=>lp()),[U,A]=u.useState(!1),[Z,H]=u.useState(!1),z=u.useRef(null);if(h)throw new Error("这是一个手动触发的测试错误,用于验证错误边界组件是否正常工作。");const B=()=>{K(lp())},X=N=>{const G=N[0];j(G),Pn("logCacheSize",G)},S=N=>{const G=N[0];w(G),Pn("wsReconnectInterval",G)},O=N=>{const G=N[0];k(G),Pn("wsMaxReconnectAttempts",G)},te=N=>{const G=N[0];E(G),Pn("dataSyncInterval",G)},he=()=>{an.clearLogs(),r({title:"日志已清除",description:"日志缓存已清空"})},Ne=()=>{const N=o0();B(),r({title:"缓存已清除",description:`已清除 ${N.clearedKeys.length} 项缓存数据`})},ye=()=>{A(!0);try{const N=i0(),G=JSON.stringify(N,null,2),q=new Blob([G],{type:"application/json"}),ie=URL.createObjectURL(q),_=document.createElement("a");_.href=ie,_.download=`maibot-webui-settings-${new Date().toISOString().slice(0,10)}.json`,document.body.appendChild(_),_.click(),document.body.removeChild(_),URL.revokeObjectURL(ie),r({title:"导出成功",description:"设置已导出为 JSON 文件"})}catch(N){console.error("导出设置失败:",N),r({title:"导出失败",description:"无法导出设置",variant:"destructive"})}finally{A(!1)}},pe=N=>{const G=N.target.files?.[0];if(!G)return;H(!0);const q=new FileReader;q.onload=ie=>{try{const _=ie.target?.result,me=JSON.parse(_),xe=r0(me);xe.success?(j($s("logCacheSize")),w($s("wsReconnectInterval")),k($s("wsMaxReconnectAttempts")),E($s("dataSyncInterval")),B(),r({title:"导入成功",description:`成功导入 ${xe.imported.length} 项设置${xe.skipped.length>0?`,跳过 ${xe.skipped.length} 项`:""}`}),(xe.imported.includes("theme")||xe.imported.includes("accentColor"))&&r({title:"提示",description:"部分设置需要刷新页面才能完全生效"})):r({title:"导入失败",description:"没有有效的设置项可导入",variant:"destructive"})}catch(_){console.error("导入设置失败:",_),r({title:"导入失败",description:"文件格式无效",variant:"destructive"})}finally{H(!1),z.current&&(z.current.value="")}},q.readAsText(G)},je=()=>{c0(),j(za.logCacheSize),w(za.wsReconnectInterval),k(za.wsMaxReconnectAttempts),E(za.dataSyncInterval),B(),r({title:"已重置",description:"所有设置已恢复为默认值,刷新页面以应用更改"})},_e=async()=>{d(!0);try{const N=localStorage.getItem("access-token"),G=await fetch("/api/webui/setup/reset",{method:"POST",headers:{Authorization:`Bearer ${N}`}}),q=await G.json();G.ok&&q.success?(r({title:"重置成功",description:"即将进入初次配置向导"}),setTimeout(()=>{n({to:"/setup"})},1e3)):r({title:"重置失败",description:q.message||"无法重置配置状态",variant:"destructive"})}catch(N){console.error("重置配置状态错误:",N),r({title:"重置失败",description:"连接服务器失败",variant:"destructive"})}finally{d(!1)}};return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(eo,{className:"h-5 w-5"}),"性能与存储"]}),e.jsxs("div",{className:"space-y-4 sm:space-y-5",children:[e.jsxs("div",{className:"rounded-lg bg-muted/50 p-3 sm:p-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("span",{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(kN,{className:"h-4 w-4"}),"本地存储使用"]}),e.jsx(y,{variant:"ghost",size:"sm",onClick:B,className:"h-7 px-2",children:e.jsx(pt,{className:"h-3 w-3"})})]}),e.jsx("div",{className:"text-2xl font-bold text-primary",children:d0(R.used)}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:[R.items," 个存储项"]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"日志缓存大小"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[f," 条"]})]}),e.jsx(Ma,{value:[f],onValueChange:X,min:100,max:5e3,step:100,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"控制日志查看器最多缓存的日志条数,较大的值会占用更多内存"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"首页数据刷新间隔"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[T," 秒"]})]}),e.jsx(Ma,{value:[T],onValueChange:te,min:10,max:120,step:5,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"控制首页统计数据的自动刷新间隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"WebSocket 重连间隔"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[p/1e3," 秒"]})]}),e.jsx(Ma,{value:[p],onValueChange:S,min:1e3,max:1e4,step:500,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"日志 WebSocket 连接断开后的重连基础间隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"WebSocket 最大重连次数"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[v," 次"]})]}),e.jsx(Ma,{value:[v],onValueChange:O,min:3,max:30,step:1,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"连接失败后的最大重连尝试次数"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2 pt-2",children:[e.jsxs(y,{variant:"outline",size:"sm",onClick:he,className:"gap-2",children:[e.jsx(es,{className:"h-4 w-4"}),"清除日志缓存"]}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(y,{variant:"outline",size:"sm",className:"gap-2",children:[e.jsx(es,{className:"h-4 w-4"}),"清除本地缓存"]})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认清除本地缓存"}),e.jsx(us,{children:"这将清除所有本地缓存的设置和数据(不包括登录凭证)。 您可能需要重新配置部分偏好设置。确定要继续吗?"})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:Ne,children:"确认清除"})]})]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(nl,{className:"h-5 w-5"}),"导入/导出设置"]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"导出当前的界面设置以便备份,或从之前导出的文件中恢复设置。"}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(y,{variant:"outline",onClick:ye,disabled:U,className:"gap-2",children:[e.jsx(nl,{className:"h-4 w-4"}),U?"导出中...":"导出设置"]}),e.jsx("input",{ref:z,type:"file",accept:".json",onChange:pe,className:"hidden"}),e.jsxs(y,{variant:"outline",onClick:()=>z.current?.click(),disabled:Z,className:"gap-2",children:[e.jsx(hr,{className:"h-4 w-4"}),Z?"导入中...":"导入设置"]})]}),e.jsx("div",{className:"pt-2 border-t",children:e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(y,{variant:"outline",size:"sm",className:"gap-2 text-destructive hover:text-destructive",children:[e.jsx(Wc,{className:"h-4 w-4"}),"重置所有设置为默认值"]})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认重置所有设置"}),e.jsx(us,{children:"这将把所有界面设置恢复为默认值,包括主题、颜色、动画等偏好设置。 此操作不会影响您的登录状态。确定要继续吗?"})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:je,children:"确认重置"})]})]})]})})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"配置向导"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsx("div",{className:"space-y-2",children:e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"重新进行初次配置向导,可以帮助您重新设置系统的基础配置。"})}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(y,{variant:"outline",disabled:c,className:"gap-2",children:[e.jsx(Wc,{className:Q("h-4 w-4",c&&"animate-spin")}),"重新进行初次配置"]})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认重新配置"}),e.jsx(us,{children:"这将带您重新进入初次配置向导。您可以重新设置系统的基础配置项。确定要继续吗?"})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:_e,children:"确认重置"})]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border border-dashed border-yellow-500/50 bg-yellow-500/5 p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(ba,{className:"h-5 w-5 text-yellow-500"}),"开发者工具"]}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsx("div",{className:"space-y-2",children:e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"以下功能仅供开发调试使用,可能会导致页面崩溃或异常。"})}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(y,{variant:"destructive",className:"gap-2",children:[e.jsx(ba,{className:"h-4 w-4"}),"触发测试错误"]})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认触发错误"}),e.jsx(us,{children:"这将手动触发一个 React 错误,用于测试错误边界组件的显示效果。 页面将显示错误界面,您可以通过刷新页面或点击返回首页来恢复。"})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>x(!0),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认触发"})]})]})]})]})]})]})}function j0(){return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsx("div",{className:"rounded-lg border-2 border-primary/30 bg-gradient-to-r from-primary/5 to-primary/10 p-4 sm:p-6",children:e.jsxs("div",{className:"flex items-start gap-3 sm:gap-4",children:[e.jsx("div",{className:"flex-shrink-0 rounded-lg bg-primary/10 p-2 sm:p-3",children:e.jsx("svg",{className:"h-6 w-6 sm:h-8 sm:w-8 text-primary",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:"text-lg sm:text-xl font-bold text-foreground mb-2",children:"开源项目"}),e.jsx("p",{className:"text-sm sm:text-base text-muted-foreground mb-3",children:"本项目在 GitHub 开源,欢迎 Star ⭐ 支持!"}),e.jsxs("a",{href:"https://github.com/Mai-with-u/MaiBot-Dashboard",target:"_blank",rel:"noopener noreferrer",className:Q("inline-flex items-center gap-2 px-4 py-2 rounded-lg","bg-primary text-primary-foreground font-medium text-sm","hover:bg-primary/90 transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"),children:[e.jsx("svg",{className:"h-4 w-4",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})}),"前往 GitHub",e.jsx("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})})]})]})]})}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:["关于 ",Ku]}),e.jsxs("div",{className:"space-y-2 text-xs sm:text-sm text-muted-foreground",children:[e.jsxs("p",{children:["版本: ",Xu]}),e.jsx("p",{children:"麦麦(MaiBot)的现代化 Web 管理界面"})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"作者"}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"MaiBot 核心"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"Mai-with-u"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"WebUI"}),e.jsxs("p",{className:"text-xs sm:text-sm text-muted-foreground",children:["Mai-with-u ",e.jsx("a",{href:"https://github.com/DrSmoothl",target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"@MotricSeven"})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"技术栈"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-xs sm:text-sm text-muted-foreground",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"前端框架"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"React 19.2.0"}),e.jsx("li",{children:"TypeScript 5.7.2"}),e.jsx("li",{children:"Vite 6.0.7"}),e.jsx("li",{children:"TanStack Router 1.94.2"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"UI 组件"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"shadcn/ui"}),e.jsx("li",{children:"Radix UI"}),e.jsx("li",{children:"Tailwind CSS 3.4.17"}),e.jsx("li",{children:"Lucide Icons"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"后端"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"Python 3.12+"}),e.jsx("li",{children:"FastAPI"}),e.jsx("li",{children:"Uvicorn"}),e.jsx("li",{children:"WebSocket"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"构建工具"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"Bun / npm"}),e.jsx("li",{children:"ESLint 9.17.0"}),e.jsx("li",{children:"PostCSS"})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源库感谢"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mb-3",children:"本项目使用了以下优秀的开源库,感谢他们的贡献:"}),e.jsx(Pe,{className:"h-[300px] sm:h-[400px]",children:e.jsxs("div",{className:"space-y-4 pr-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"UI 框架与组件"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(qs,{name:"React",description:"用户界面构建库",license:"MIT"}),e.jsx(qs,{name:"shadcn/ui",description:"优雅的 React 组件库",license:"MIT"}),e.jsx(qs,{name:"Radix UI",description:"无样式的可访问组件库",license:"MIT"}),e.jsx(qs,{name:"Tailwind CSS",description:"实用优先的 CSS 框架",license:"MIT"}),e.jsx(qs,{name:"Lucide React",description:"精美的图标库",license:"ISC"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"路由与状态管理"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(qs,{name:"TanStack Router",description:"类型安全的路由库",license:"MIT"}),e.jsx(qs,{name:"Zustand",description:"轻量级状态管理",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"表单处理"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(qs,{name:"React Hook Form",description:"高性能表单库",license:"MIT"}),e.jsx(qs,{name:"Zod",description:"TypeScript 优先的 schema 验证",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"工具库"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(qs,{name:"clsx",description:"条件 className 构建工具",license:"MIT"}),e.jsx(qs,{name:"tailwind-merge",description:"Tailwind 类名合并工具",license:"MIT"}),e.jsx(qs,{name:"class-variance-authority",description:"组件变体管理",license:"Apache-2.0"}),e.jsx(qs,{name:"date-fns",description:"现代化日期处理库",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"动画效果"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(qs,{name:"Framer Motion",description:"React 动画库",license:"MIT"}),e.jsx(qs,{name:"vaul",description:"抽屉组件动画",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"后端框架"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(qs,{name:"FastAPI",description:"现代化 Python Web 框架",license:"MIT"}),e.jsx(qs,{name:"Uvicorn",description:"ASGI 服务器",license:"BSD-3-Clause"}),e.jsx(qs,{name:"Pydantic",description:"数据验证库",license:"MIT"}),e.jsx(qs,{name:"python-multipart",description:"文件上传支持",license:"Apache-2.0"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"开发工具"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(qs,{name:"TypeScript",description:"JavaScript 的超集",license:"Apache-2.0"}),e.jsx(qs,{name:"Vite",description:"下一代前端构建工具",license:"MIT"}),e.jsx(qs,{name:"ESLint",description:"JavaScript 代码检查工具",license:"MIT"}),e.jsx(qs,{name:"PostCSS",description:"CSS 转换工具",license:"MIT"})]})]})]})})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源许可"}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"rounded-lg bg-primary/5 border border-primary/20 p-3 sm:p-4",children:e.jsxs("div",{className:"flex items-start gap-2 sm:gap-3",children:[e.jsx("div",{className:"flex-shrink-0 mt-0.5",children:e.jsx("div",{className:"rounded-md bg-primary/10 px-2 py-1",children:e.jsx("span",{className:"text-xs sm:text-sm font-bold text-primary",children:"GPLv3"})})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm sm:text-base font-semibold text-foreground mb-1",children:"MaiBot WebUI"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目采用 GNU General Public License v3.0 开源许可证。 您可以自由地使用、修改和分发本软件,但必须保持相同的开源许可。"})]})]})}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目依赖的所有开源库均遵循各自的开源许可证(MIT、Apache-2.0、BSD 等)。 感谢所有开源贡献者的无私奉献。"})]})]})]})}function qs({name:n,description:r,license:c}){return e.jsxs("div",{className:"flex items-start justify-between gap-2 rounded-lg border bg-muted/30 p-2.5 sm:p-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium text-foreground truncate",children:n}),e.jsx("p",{className:"text-muted-foreground text-xs mt-0.5",children:r})]}),e.jsx("span",{className:"inline-flex items-center rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-medium text-primary flex-shrink-0",children:c})]})}function Au({value:n,current:r,onChange:c,label:d,description:h}){const x=r===n;return e.jsxs("button",{onClick:()=>c(n),className:Q("relative rounded-lg border-2 p-3 sm:p-4 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",x?"border-primary bg-accent":"border-border"),children:[x&&e.jsx("div",{className:"absolute top-2 right-2 sm:top-3 sm:right-3 h-2 w-2 rounded-full bg-primary"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-sm sm:text-base font-medium",children:d}),e.jsx("div",{className:"text-[10px] sm:text-xs text-muted-foreground",children:h})]}),e.jsxs("div",{className:"mt-2 sm:mt-3 flex gap-1",children:[n==="light"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-200"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-300"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-400"})]}),n==="dark"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-700"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-800"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-900"})]}),n==="system"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-200 to-slate-700"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-300 to-slate-800"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-400 to-slate-900"})]})]})]})}function ma({value:n,current:r,onChange:c,label:d,colorClass:h}){const x=r===n;return e.jsxs("button",{onClick:()=>c(n),className:Q("relative rounded-lg border-2 p-2 sm:p-3 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",x?"border-primary bg-accent":"border-border"),children:[x&&e.jsx("div",{className:"absolute top-1.5 right-1.5 sm:top-2 sm:right-2 h-1.5 w-1.5 sm:h-2 sm:w-2 rounded-full bg-primary"}),e.jsxs("div",{className:"flex flex-col items-center gap-1.5 sm:gap-2",children:[e.jsx("div",{className:Q("h-8 w-8 sm:h-10 sm:w-10 rounded-full",h)}),e.jsx("div",{className:"text-[10px] sm:text-xs font-medium text-center",children:d})]})]})}class v0{grad3;p;perm;constructor(r=0){this.grad3=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],this.p=[];for(let c=0;c<256;c++)this.p[c]=Math.floor(Math.random()*256);this.perm=[];for(let c=0;c<512;c++)this.perm[c]=this.p[c&255]}dot(r,c,d){return r[0]*c+r[1]*d}mix(r,c,d){return(1-d)*r+d*c}fade(r){return r*r*r*(r*(r*6-15)+10)}perlin2(r,c){const d=Math.floor(r)&255,h=Math.floor(c)&255;r-=Math.floor(r),c-=Math.floor(c);const x=this.fade(r),f=this.fade(c),j=this.perm[d]+h,p=this.perm[j],w=this.perm[j+1],v=this.perm[d+1]+h,k=this.perm[v],T=this.perm[v+1];return this.mix(this.mix(this.dot(this.grad3[p%12],r,c),this.dot(this.grad3[k%12],r-1,c),x),this.mix(this.dot(this.grad3[w%12],r,c-1),this.dot(this.grad3[T%12],r-1,c-1),x),f)}}function ip(){const n=u.useRef(null),r=u.useRef(null),c=u.useRef(void 0),d=u.useRef({mouse:{x:-10,y:0,lx:0,ly:0,sx:0,sy:0,v:0,vs:0,a:0,set:!1},lines:[],paths:[],noise:new v0(Math.random()),bounding:null});return u.useEffect(()=>{const h=r.current,x=n.current;if(!h||!x)return;const f=d.current,j=()=>{const K=h.getBoundingClientRect();f.bounding=K,x.style.width=`${K.width}px`,x.style.height=`${K.height}px`},p=()=>{if(!f.bounding)return;const{width:K,height:U}=f.bounding;f.lines=[],f.paths.forEach(te=>te.remove()),f.paths=[];const A=10,Z=32,H=K+200,z=U+30,B=Math.ceil(H/A),X=Math.ceil(z/Z),S=(K-A*B)/2,O=(U-Z*X)/2;for(let te=0;te<=B;te++){const he=[];for(let ye=0;ye<=X;ye++){const pe={x:S+A*te,y:O+Z*ye,wave:{x:0,y:0},cursor:{x:0,y:0,vx:0,vy:0}};he.push(pe)}const Ne=document.createElementNS("http://www.w3.org/2000/svg","path");x.appendChild(Ne),f.paths.push(Ne),f.lines.push(he)}},w=K=>{const{lines:U,mouse:A,noise:Z}=f;U.forEach(H=>{H.forEach(z=>{const B=Z.perlin2((z.x+K*.0125)*.002,(z.y+K*.005)*.0015)*12;z.wave.x=Math.cos(B)*32,z.wave.y=Math.sin(B)*16;const X=z.x-A.sx,S=z.y-A.sy,O=Math.hypot(X,S),te=Math.max(175,A.vs);if(O{const A={x:K.x+K.wave.x+(U?K.cursor.x:0),y:K.y+K.wave.y+(U?K.cursor.y:0)};return A.x=Math.round(A.x*10)/10,A.y=Math.round(A.y*10)/10,A},k=()=>{const{lines:K,paths:U}=f;K.forEach((A,Z)=>{let H=v(A[0],!1),z=`M ${H.x} ${H.y}`;A.forEach((B,X)=>{const S=X===A.length-1;H=v(B,!S),z+=`L ${H.x} ${H.y}`}),U[Z].setAttribute("d",z)})},T=K=>{const{mouse:U}=f;U.sx+=(U.x-U.sx)*.1,U.sy+=(U.y-U.sy)*.1;const A=U.x-U.lx,Z=U.y-U.ly,H=Math.hypot(A,Z);U.v=H,U.vs+=(H-U.vs)*.1,U.vs=Math.min(100,U.vs),U.lx=U.x,U.ly=U.y,U.a=Math.atan2(Z,A),h&&(h.style.setProperty("--x",`${U.sx}px`),h.style.setProperty("--y",`${U.sy}px`)),w(K),k(),c.current=requestAnimationFrame(T)},E=K=>{if(!f.bounding)return;const{mouse:U}=f;U.x=K.pageX-f.bounding.left,U.y=K.pageY-f.bounding.top+window.scrollY,U.set||(U.sx=U.x,U.sy=U.y,U.lx=U.x,U.ly=U.y,U.set=!0)},R=()=>{j(),p()};return j(),p(),window.addEventListener("resize",R),window.addEventListener("mousemove",E),c.current=requestAnimationFrame(T),()=>{window.removeEventListener("resize",R),window.removeEventListener("mousemove",E),c.current&&cancelAnimationFrame(c.current)}},[]),e.jsxs("div",{ref:r,className:"waves-background",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflow:"hidden",pointerEvents:"none"},children:[e.jsx("div",{className:"waves-cursor",style:{position:"absolute",top:0,left:0,width:"0.5rem",height:"0.5rem",background:"hsl(var(--primary) / 0.3)",borderRadius:"50%",transform:"translate3d(calc(var(--x, -0.5rem) - 50%), calc(var(--y, 50%) - 50%), 0)",willChange:"transform",pointerEvents:"none"}}),e.jsx("svg",{ref:n,style:{display:"block",width:"100%",height:"100%"},children:e.jsx("style",{children:` + path { + fill: none; + stroke: hsl(var(--primary) / 0.20); + stroke-width: 1px; + } + `})})]})}async function ke(n,r){const c={...r,credentials:"include",headers:{"Content-Type":"application/json",...r?.headers}},d=await fetch(n,c);if(d.status===401)throw window.location.href="/auth",new Error("认证失败,请重新登录");return d}function Ts(){return{"Content-Type":"application/json"}}async function y0(){try{await fetch("/api/webui/auth/logout",{method:"POST",credentials:"include"})}catch(n){console.error("登出请求失败:",n)}window.location.href="/auth"}async function Ju(){try{return(await(await fetch("/api/webui/auth/check",{method:"GET",credentials:"include"})).json()).authenticated===!0}catch{return!1}}function N0(){const[n,r]=u.useState(""),[c,d]=u.useState(!1),[h,x]=u.useState(""),[f,j]=u.useState(!0),p=Jt(),{enableWavesBackground:w,setEnableWavesBackground:v}=Mg(),{theme:k,setTheme:T}=Yu();u.useEffect(()=>{(async()=>{try{await Ju()&&p({to:"/"})}catch{}finally{j(!1)}})()},[p]);const R=k==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":k,K=()=>{T(R==="dark"?"light":"dark")},U=async A=>{if(A.preventDefault(),x(""),!n.trim()){x("请输入 Access Token");return}d(!0);try{const Z=await fetch("/api/webui/auth/verify",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:n.trim()})}),H=await Z.json();Z.ok&&H.valid?H.is_first_setup?p({to:"/setup"}):p({to:"/"}):x(H.message||"Token 验证失败,请检查后重试")}catch(Z){console.error("Token 验证错误:",Z),x("连接服务器失败,请检查网络连接")}finally{d(!1)}};return f?e.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[w&&e.jsx(ip,{}),e.jsx("div",{className:"text-muted-foreground",children:"正在检查登录状态..."})]}):e.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[w&&e.jsx(ip,{}),e.jsxs(Fe,{className:"relative z-10 w-full max-w-md shadow-2xl backdrop-blur-xl bg-card/80 border-border/50",children:[e.jsx("button",{onClick:K,className:"absolute right-4 top-4 rounded-lg p-2 hover:bg-accent transition-colors z-10 text-foreground",title:R==="dark"?"切换到浅色模式":"切换到深色模式",children:R==="dark"?e.jsx(Ou,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"}):e.jsx(Ru,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"})}),e.jsxs(gs,{className:"space-y-4 text-center",children:[e.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-2xl bg-primary/10",children:e.jsx(Yf,{className:"h-8 w-8 text-primary",strokeWidth:2,fill:"none"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(js,{className:"text-2xl font-bold",children:"欢迎使用 MaiBot"}),e.jsx(Zs,{className:"text-base",children:"请输入您的 Access Token 以继续访问系统"})]})]}),e.jsx(bs,{children:e.jsxs("form",{onSubmit:U,className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"token",className:"text-sm font-medium",children:"Access Token"}),e.jsxs("div",{className:"relative",children:[e.jsx(vg,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground",strokeWidth:2,fill:"none"}),e.jsx(ce,{id:"token",type:"password",placeholder:"请输入您的 Access Token",value:n,onChange:A=>r(A.target.value),className:Q("pl-10",h&&"border-red-500 focus-visible:ring-red-500"),disabled:c,autoFocus:!0,autoComplete:"off"})]})]}),h&&e.jsxs("div",{className:"flex items-center gap-2 rounded-md bg-red-50 p-3 text-sm text-red-600 dark:bg-red-950/50 dark:text-red-400",children:[e.jsx(Da,{className:"h-4 w-4 flex-shrink-0",strokeWidth:2,fill:"none"}),e.jsx("span",{children:h})]}),e.jsx(y,{type:"submit",className:"w-full",disabled:c,children:c?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent"}),"验证中..."]}):"验证并进入"}),e.jsxs(Rs,{children:[e.jsx(ni,{asChild:!0,children:e.jsxs("button",{className:"w-full text-center text-sm text-primary hover:text-primary/80 transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[e.jsx(ro,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我没有 Token,我该去哪里获得 Token?"]})}),e.jsxs(zs,{className:"sm:max-w-md",children:[e.jsxs(Ms,{children:[e.jsxs(As,{className:"flex items-center gap-2",children:[e.jsx(Yf,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"如何获取 Access Token"]}),e.jsx(Ys,{children:"Access Token 是访问 MaiBot WebUI 的唯一凭证,请按以下方式获取"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(TN,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx("h4",{className:"font-semibold text-sm",children:"方式一:查看启动日志"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"在 MaiBot 启动时,控制台会显示 WebUI Access Token。"}),e.jsxs("div",{className:"rounded bg-background p-2 font-mono text-xs",children:[e.jsx("p",{className:"text-muted-foreground",children:"🔑 WebUI Access Token: abc123..."}),e.jsx("p",{className:"text-muted-foreground",children:"💡 请使用此 Token 登录 WebUI"})]})]})]})}),e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Aa,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx("h4",{className:"font-semibold text-sm",children:"方式二:查看配置文件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Token 保存在项目根目录的配置文件中:"}),e.jsx("div",{className:"rounded bg-background p-2 font-mono text-xs break-all",children:e.jsx("code",{className:"text-primary",children:"data/webui.json"})}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["打开此文件,复制 ",e.jsx("code",{className:"px-1 py-0.5 bg-background rounded",children:"access_token"})," 字段的值"]})]})]})}),e.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Da,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[e.jsx("p",{className:"font-semibold",children:"安全提示"}),e.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[e.jsx("li",{children:"请妥善保管您的 Token,不要泄露给他人"}),e.jsx("li",{children:"如需重置 Token,请在登录后前往系统设置"})]})]})]})})]})]})]}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs("button",{className:"w-full text-center text-sm text-muted-foreground hover:text-foreground transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[e.jsx(ln,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我觉得这个界面很卡怎么办?"]})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsxs(ds,{className:"flex items-center gap-2",children:[e.jsx(ln,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"关闭背景动画"]}),e.jsx(us,{children:"背景动画可能会在低性能设备上造成卡顿。关闭动画可以显著提升界面流畅度。"})]}),e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭动画后,背景将变为纯色,但不影响任何功能的使用。您可以随时在系统设置中重新开启动画。"})}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>v(!1),children:"关闭动画"})]})]})]})]})})]}),e.jsx("div",{className:"absolute bottom-4 left-0 right-0 text-center text-xs text-muted-foreground",children:e.jsx("p",{children:a0})})]})}const Bs=u.forwardRef(({className:n,...r},c)=>e.jsx("textarea",{className:Q("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",n),ref:c,...r}));Bs.displayName="Textarea";const jr=u.forwardRef(({className:n,orientation:r="horizontal",decorative:c=!0,...d},h)=>e.jsx(Lp,{ref:h,decorative:c,orientation:r,className:Q("shrink-0 bg-border",r==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",n),...d}));jr.displayName=Lp.displayName;function b0({config:n,onChange:r}){const c=h=>{h.trim()&&!n.alias_names.includes(h.trim())&&r({...n,alias_names:[...n.alias_names,h.trim()]})},d=h=>{r({...n,alias_names:n.alias_names.filter((x,f)=>f!==h)})};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"qq_account",children:"QQ账号 *"}),e.jsx(ce,{id:"qq_account",type:"number",placeholder:"请输入机器人的QQ账号",value:n.qq_account||"",onChange:h=>r({...n,qq_account:Number(h.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人登录使用的QQ账号"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"nickname",children:"昵称 *"}),e.jsx(ce,{id:"nickname",placeholder:"请输入机器人的昵称",value:n.nickname,onChange:h=>r({...n,nickname:h.target.value})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的主要称呼名称"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{children:"别名"}),e.jsx("div",{className:"flex flex-wrap gap-2 mb-2",children:n.alias_names.map((h,x)=>e.jsxs(Ye,{variant:"secondary",className:"gap-1",children:[h,e.jsx("button",{type:"button",onClick:()=>d(x),className:"ml-1 hover:text-destructive",children:e.jsx(li,{className:"h-3 w-3"})})]},x))}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{id:"alias_input",placeholder:"输入别名后按回车添加",onKeyPress:h=>{h.key==="Enter"&&(c(h.target.value),h.target.value="")}}),e.jsx(y,{type:"button",variant:"outline",onClick:()=>{const h=document.getElementById("alias_input");h&&(c(h.value),h.value="")},children:"添加"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的其他称呼,可以添加多个"})]})]})}function w0({config:n,onChange:r}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"personality",children:"人格特征 *"}),e.jsx(Bs,{id:"personality",placeholder:"描述机器人的人格特质和身份特征(建议120字以内)",value:n.personality,onChange:c=>r({...n,personality:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:是一个女大学生,现在在读大二,会刷贴吧"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"reply_style",children:"表达风格 *"}),e.jsx(Bs,{id:"reply_style",placeholder:"描述机器人说话的表达风格、表达习惯",value:n.reply_style,onChange:c=>r({...n,reply_style:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:回复平淡一些,简短一些,说中文,参考贴吧、知乎和微博的回复风格"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"interest",children:"兴趣 *"}),e.jsx(Bs,{id:"interest",placeholder:"描述机器人感兴趣的话题",value:n.interest,onChange:c=>r({...n,interest:c.target.value}),rows:2}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"会影响机器人对什么话题进行回复"})]}),e.jsx(jr,{}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"plan_style",children:"群聊说话规则 *"}),e.jsx(Bs,{id:"plan_style",placeholder:"机器人在群聊中的行为风格和规则",value:n.plan_style,onChange:c=>r({...n,plan_style:c.target.value}),rows:4}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在群聊中如何行动,例如回复频率、条件等"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"private_plan_style",children:"私聊说话规则 *"}),e.jsx(Bs,{id:"private_plan_style",placeholder:"机器人在私聊中的行为风格和规则",value:n.private_plan_style,onChange:c=>r({...n,private_plan_style:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在私聊中的行为方式"})]})]})}function _0({config:n,onChange:r}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{htmlFor:"emoji_chance",children:"表情包激活概率"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[(n.emoji_chance*100).toFixed(0),"%"]})]}),e.jsx(ce,{id:"emoji_chance",type:"range",min:"0",max:"1",step:"0.1",value:n.emoji_chance,onChange:c=>r({...n,emoji_chance:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人发送表情包的概率"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"max_reg_num",children:"最大表情包数量"}),e.jsx(ce,{id:"max_reg_num",type:"number",min:"1",max:"200",value:n.max_reg_num,onChange:c=>r({...n,max_reg_num:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人最多保存的表情包数量"})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"do_replace",children:"达到最大数量时替换"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"开启后会删除旧表情包,关闭则不再收集新表情包"})]}),e.jsx(Ve,{id:"do_replace",checked:n.do_replace,onCheckedChange:c=>r({...n,do_replace:c})})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),e.jsx(ce,{id:"check_interval",type:"number",min:"1",max:"120",value:n.check_interval,onChange:c=>r({...n,check_interval:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包注册、破损、删除的时间间隔"})]}),e.jsx(jr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"steal_emoji",children:"偷取表情包"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人将一些表情包据为己有"})]}),e.jsx(Ve,{id:"steal_emoji",checked:n.steal_emoji,onCheckedChange:c=>r({...n,steal_emoji:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"content_filtration",children:"启用表情包过滤"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"只保存符合要求的表情包"})]}),e.jsx(Ve,{id:"content_filtration",checked:n.content_filtration,onCheckedChange:c=>r({...n,content_filtration:c})})]}),n.content_filtration&&e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"filtration_prompt",children:"过滤要求"}),e.jsx(ce,{id:"filtration_prompt",placeholder:"例如:符合公序良俗",value:n.filtration_prompt,onChange:c=>r({...n,filtration_prompt:c.target.value})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"描述表情包应该符合的要求"})]})]})}function S0({config:n,onChange:r}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"enable_tool",children:"启用工具系统"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人使用各种工具增强功能"})]}),e.jsx(Ve,{id:"enable_tool",checked:n.enable_tool,onCheckedChange:c=>r({...n,enable_tool:c})})]}),e.jsx(jr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"enable_mood",children:"启用情绪系统"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"让机器人具有情绪变化能力"})]}),e.jsx(Ve,{id:"enable_mood",checked:n.enable_mood,onCheckedChange:c=>r({...n,enable_mood:c})})]}),n.enable_mood&&e.jsxs("div",{className:"ml-6 space-y-6 border-l-2 border-primary/20 pl-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"mood_update_threshold",children:"情绪更新阈值"}),e.jsx(ce,{id:"mood_update_threshold",type:"number",min:"0.1",max:"10",step:"0.1",value:n.mood_update_threshold||1,onChange:c=>r({...n,mood_update_threshold:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"值越高,情绪更新越慢"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"emotion_style",children:"情感特征"}),e.jsx(Bs,{id:"emotion_style",placeholder:"描述情绪的变化情况,例如:情绪较为稳定,但遭遇特定事件时起伏较大",value:n.emotion_style||"",onChange:c=>r({...n,emotion_style:c.target.value}),rows:2}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"影响机器人的情绪变化方式"})]})]}),e.jsx(jr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"all_global",children:"启用全局黑话模式"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人学习和使用群组黑话"})]}),e.jsx(Ve,{id:"all_global",checked:n.all_global,onCheckedChange:c=>r({...n,all_global:c})})]})]})}function C0({config:n,onChange:r}){const[c,d]=u.useState(!1);return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"mt-0.5",children:e.jsx("svg",{className:"h-5 w-5 text-blue-600 dark:text-blue-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),e.jsxs("div",{className:"flex-1 text-sm",children:[e.jsx("p",{className:"font-medium text-blue-900 dark:text-blue-100 mb-1",children:"关于硅基流动 (SiliconFlow)"}),e.jsx("p",{className:"text-blue-700 dark:text-blue-300 mb-2",children:"硅基流动提供了完整的模型覆盖,包括 DeepSeek V3、Qwen、视觉模型、语音识别和嵌入模型。 只需一个 API Key 即可使用麦麦的所有功能!"}),e.jsxs("a",{href:"https://cloud.siliconflow.cn",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-blue-600 dark:text-blue-400 hover:underline font-medium",children:["前往硅基流动获取 API Key",e.jsx(dr,{className:"h-3 w-3"})]})]})]})}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"siliconflow_api_key",children:"SiliconFlow API Key *"}),e.jsxs("div",{className:"relative",children:[e.jsx(ce,{id:"siliconflow_api_key",type:c?"text":"password",placeholder:"sk-...",value:n.api_key,onChange:h=>r({api_key:h.target.value}),className:"font-mono pr-10"}),e.jsx(y,{type:"button",variant:"ghost",size:"sm",className:"absolute right-0 top-0 h-full px-3 hover:bg-transparent",onClick:()=>d(!c),children:c?e.jsx(mr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Zt,{className:"h-4 w-4 text-muted-foreground"})})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"请输入您的硅基流动 API 密钥。获取后,麦麦将自动配置所有必需的模型。"})]}),e.jsxs("div",{className:"rounded-lg bg-muted/50 p-4 text-sm space-y-2",children:[e.jsx("p",{className:"font-medium",children:"将自动配置以下模型:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 text-muted-foreground ml-2",children:[e.jsx("li",{children:"DeepSeek V3 - 主要对话和工具模型"}),e.jsx("li",{children:"Qwen3 30B - 高频小任务和工具调用"}),e.jsx("li",{children:"Qwen3 VL 30B - 图像识别"}),e.jsx("li",{children:"SenseVoice - 语音识别"}),e.jsx("li",{children:"BGE-M3 - 文本嵌入"}),e.jsx("li",{children:"知识库相关模型 (LPMM)"})]})]}),e.jsx("div",{className:"rounded-lg border border-amber-200 dark:border-amber-800 bg-amber-50 dark:bg-amber-950/30 p-4",children:e.jsxs("p",{className:"text-sm text-amber-900 dark:text-amber-100",children:[e.jsx("span",{className:"font-medium",children:"💡 提示:"}),'完成向导后,您可以在"系统设置 → 模型配置"中添加更多 API 提供商和模型。']})})]})}async function k0(){const n=await ke("/api/webui/config/bot",{method:"GET",headers:Ts()});if(!n.ok)throw new Error("读取Bot配置失败");const c=(await n.json()).config.bot||{};return{qq_account:c.qq_account||0,nickname:c.nickname||"",alias_names:c.alias_names||[]}}async function T0(){const n=await ke("/api/webui/config/bot",{method:"GET",headers:Ts()});if(!n.ok)throw new Error("读取人格配置失败");const c=(await n.json()).config.personality||{};return{personality:c.personality||"",reply_style:c.reply_style||"",interest:c.interest||"",plan_style:c.plan_style||"",private_plan_style:c.private_plan_style||""}}async function E0(){const n=await ke("/api/webui/config/bot",{method:"GET",headers:Ts()});if(!n.ok)throw new Error("读取表情包配置失败");const c=(await n.json()).config.emoji||{};return{emoji_chance:c.emoji_chance??.4,max_reg_num:c.max_reg_num??40,do_replace:c.do_replace??!0,check_interval:c.check_interval??10,steal_emoji:c.steal_emoji??!0,content_filtration:c.content_filtration??!1,filtration_prompt:c.filtration_prompt||""}}async function z0(){const n=await ke("/api/webui/config/bot",{method:"GET",headers:Ts()});if(!n.ok)throw new Error("读取其他配置失败");const c=(await n.json()).config,d=c.tool||{},h=c.mood||{},x=c.jargon||{};return{enable_tool:d.enable_tool??!0,enable_mood:h.enable_mood??!1,mood_update_threshold:h.mood_update_threshold,emotion_style:h.emotion_style,all_global:x.all_global??!0}}async function M0(){const n=await ke("/api/webui/config/model",{method:"GET",headers:Ts()});if(!n.ok)throw new Error("读取模型配置失败");return{api_key:((await n.json()).config.api_providers||[]).find(x=>x.name==="SiliconFlow")?.api_key||""}}async function A0(n){const r=await ke("/api/webui/config/bot/section/bot",{method:"POST",headers:Ts(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"保存Bot基础配置失败")}return await r.json()}async function D0(n){const r=await ke("/api/webui/config/bot/section/personality",{method:"POST",headers:Ts(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"保存人格配置失败")}return await r.json()}async function O0(n){const r=await ke("/api/webui/config/bot/section/emoji",{method:"POST",headers:Ts(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"保存表情包配置失败")}return await r.json()}async function R0(n){const r=[];r.push(ke("/api/webui/config/bot/section/tool",{method:"POST",headers:Ts(),body:JSON.stringify({enable_tool:n.enable_tool})})),r.push(ke("/api/webui/config/bot/section/jargon",{method:"POST",headers:Ts(),body:JSON.stringify({all_global:n.all_global})}));const c={enable_mood:n.enable_mood};n.enable_mood&&(c.mood_update_threshold=n.mood_update_threshold||1,c.emotion_style=n.emotion_style||""),r.push(ke("/api/webui/config/bot/section/mood",{method:"POST",headers:Ts(),body:JSON.stringify(c)}));const d=await Promise.all(r);for(const h of d)if(!h.ok){const x=await h.json();throw new Error(x.detail||"保存其他配置失败")}return{success:!0}}async function L0(n){const r=await ke("/api/webui/config/model",{method:"GET",headers:Ts()});if(!r.ok)throw new Error("读取模型配置失败");const d=(await r.json()).config,h=d.api_providers||[],x=h.findIndex(p=>p.name==="SiliconFlow");x>=0?h[x]={...h[x],api_key:n.api_key}:h.push({name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",api_key:n.api_key,client_type:"openai",max_retry:3,timeout:120,retry_interval:5});const f={...d,api_providers:h},j=await ke("/api/webui/config/model",{method:"POST",headers:Ts(),body:JSON.stringify(f)});if(!j.ok){const p=await j.json();throw new Error(p.detail||"保存模型配置失败")}return await j.json()}async function rp(){const n=localStorage.getItem("access-token"),r=await ke("/api/webui/setup/complete",{method:"POST",headers:{Authorization:`Bearer ${n}`}});if(!r.ok){const c=await r.json();throw new Error(c.message||"标记配置完成失败")}return await r.json()}async function co(){const n=await ke("/api/webui/system/restart",{method:"POST",headers:Ts()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"重启失败")}return await n.json()}async function U0(){const n=await ke("/api/webui/system/status",{method:"GET",headers:Ts()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取状态失败")}return await n.json()}function B0(){const n=Jt(),{toast:r}=Hs(),[c,d]=u.useState(0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,w]=u.useState(!0),[v,k]=u.useState({qq_account:0,nickname:"",alias_names:[]}),[T,E]=u.useState({personality:"是一个女大学生,现在在读大二,会刷贴吧。",reply_style:"请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景。可以参考贴吧,知乎和微博的回复风格。",interest:"对技术相关话题,游戏和动漫相关话题感兴趣,也对日常话题感兴趣,不喜欢太过沉重严肃的话题",plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 +2.如果相同的内容已经被执行,请不要重复执行 +3.请控制你的发言频率,不要太过频繁的发言 +4.如果有人对你感到厌烦,请减少回复 +5.如果有人对你进行攻击,或者情绪激动,请你以合适的方法应对`,private_plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 +2.如果相同的内容已经被执行,请不要重复执行 +3.某句话如果已经被回复过,不要重复回复`}),[R,K]=u.useState({emoji_chance:.4,max_reg_num:40,do_replace:!0,check_interval:10,steal_emoji:!0,content_filtration:!1,filtration_prompt:"符合公序良俗"}),[U,A]=u.useState({enable_tool:!0,enable_mood:!1,mood_update_threshold:1,emotion_style:"情绪较为稳定,但遇遇特定事件的时候起伏较大",all_global:!0}),[Z,H]=u.useState({api_key:""}),[z,B]=u.useState(!1),[X,S]=u.useState(""),O=[{id:"bot-basic",title:"Bot基础",description:"配置机器人的基本信息",icon:ir},{id:"personality",title:"人格配置",description:"定义机器人的性格和说话风格",icon:to},{id:"emoji",title:"表情包",description:"配置表情包相关设置",icon:$u},{id:"other",title:"其他设置",description:"工具、情绪系统等配置",icon:Rl},{id:"siliconflow",title:"API配置",description:"配置硅基流动API密钥",icon:vg}],te=(c+1)/O.length*100;u.useEffect(()=>{(async()=>{try{w(!0);const[G,q,ie,_,me]=await Promise.all([k0(),T0(),E0(),z0(),M0()]);k(G),E(q),K(ie),A(_),H(me)}catch(G){r({title:"加载配置失败",description:G instanceof Error?G.message:"无法加载现有配置,将使用默认值",variant:"destructive"})}finally{w(!1)}})()},[r]);const he=async()=>{j(!0);try{switch(c){case 0:await A0(v);break;case 1:await D0(T);break;case 2:await O0(R);break;case 3:await R0(U);break;case 4:await L0(Z);break}return r({title:"保存成功",description:`${O[c].title}配置已保存`}),!0}catch(N){return r({title:"保存失败",description:N instanceof Error?N.message:"未知错误",variant:"destructive"}),!1}finally{j(!1)}},Ne=async()=>{await he()&&c{c>0&&d(c-1)},pe=async()=>{x(!0),B(!0);try{if(S("正在保存API配置..."),!await he()){x(!1),B(!1);return}S("正在完成初始化..."),await rp(),S("正在重启麦麦..."),await co(),r({title:"配置完成",description:"麦麦正在重启以应用新配置..."}),S("等待麦麦重启完成...");const G=60;let q=0,ie=!1;for(;qsetTimeout(_,1e3));try{(await U0()).running&&(ie=!0,S("重启成功!正在跳转..."))}catch{q++}}if(!ie)throw new Error("重启超时,请手动检查麦麦状态");setTimeout(()=>{n({to:"/"})},1e3)}catch(N){B(!1),r({title:"配置失败",description:N instanceof Error?N.message:"未知错误",variant:"destructive"})}finally{x(!1)}},je=async()=>{try{await rp(),n({to:"/"})}catch(N){r({title:"跳过失败",description:N instanceof Error?N.message:"未知错误",variant:"destructive"})}},_e=()=>{switch(c){case 0:return e.jsx(b0,{config:v,onChange:k});case 1:return e.jsx(w0,{config:T,onChange:E});case 2:return e.jsx(_0,{config:R,onChange:K});case 3:return e.jsx(S0,{config:U,onChange:A});case 4:return e.jsx(C0,{config:Z,onChange:H});default:return null}};return e.jsxs("div",{className:"relative flex min-h-screen flex-col items-center justify-center overflow-hidden bg-gradient-to-br from-primary/5 via-background to-secondary/5 p-4 md:p-6",children:[z&&e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm",children:e.jsxs("div",{className:"mx-auto flex max-w-md flex-col items-center space-y-6 rounded-lg border bg-card p-8 text-center shadow-lg",children:[e.jsx("div",{className:"flex h-20 w-20 items-center justify-center rounded-full bg-primary/10",children:e.jsx(vt,{className:"h-10 w-10 animate-spin text-primary"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),e.jsx("p",{className:"text-muted-foreground",children:X})]}),e.jsx("div",{className:"w-full",children:e.jsx("div",{className:"h-2 w-full overflow-hidden rounded-full bg-secondary",children:e.jsx("div",{className:"h-full w-full animate-pulse bg-primary",style:{animation:"pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite"}})})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"请稍候,这可能需要一分钟..."})]})}),e.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[e.jsx("div",{className:"absolute left-1/4 top-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-primary/5 blur-3xl"}),e.jsx("div",{className:"absolute right-1/4 bottom-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-secondary/5 blur-3xl"})]}),p?e.jsxs("div",{className:"relative z-10 text-center",children:[e.jsx("div",{className:"mx-auto mb-4 flex h-16 w-16 items-center justify-center",children:e.jsx("div",{className:"h-12 w-12 animate-spin rounded-full border-4 border-primary border-t-transparent"})}),e.jsx("p",{className:"text-lg font-medium",children:"加载配置中..."}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"正在读取现有配置"})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"relative z-10 w-full max-w-4xl",children:[e.jsxs("div",{className:"mb-6 md:mb-8 text-center",children:[e.jsx("div",{className:"mx-auto mb-4 flex h-12 w-12 md:h-16 md:w-16 items-center justify-center rounded-2xl bg-primary/10",children:e.jsx(EN,{className:"h-6 w-6 md:h-8 md:w-8 text-primary",strokeWidth:2,fill:"none"})}),e.jsx("h1",{className:"mb-2 text-2xl md:text-3xl font-bold",children:"首次配置向导"}),e.jsxs("p",{className:"text-sm md:text-base text-muted-foreground",children:["让我们一起完成 ",Ku," 的初始配置"]})]}),e.jsxs("div",{className:"mb-6 md:mb-8",children:[e.jsxs("div",{className:"mb-2 flex items-center justify-between text-xs md:text-sm",children:[e.jsxs("span",{className:"text-muted-foreground",children:["步骤 ",c+1," / ",O.length]}),e.jsxs("span",{className:"font-medium text-primary",children:[Math.round(te),"%"]})]}),e.jsx(Sr,{value:te,className:"h-2"})]}),e.jsx("div",{className:"mb-6 md:mb-8 flex justify-between",children:O.map((N,G)=>{const q=N.icon;return e.jsxs("div",{className:Q("flex flex-1 flex-col items-center gap-1 md:gap-2",Gn({to:"/"}),className:"gap-2 w-full sm:w-auto",children:[e.jsx(xr,{className:"h-4 w-4"}),"返回首页"]}),e.jsxs(y,{size:"lg",variant:"outline",onClick:()=>window.history.back(),className:"gap-2 w-full sm:w-auto",children:[e.jsx(ti,{className:"h-4 w-4"}),"返回上一页"]})]}),e.jsx("div",{className:"mt-12 pt-8 border-t border-border",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:"如果您认为这是一个错误,请联系系统管理员"})})]})})}const He=xN,qe=fN,Re=u.forwardRef(({className:n,children:r,...c},d)=>e.jsxs(tg,{ref:d,className:Q("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",n),...c,children:[r,e.jsx(oN,{asChild:!0,children:e.jsx(Ll,{className:"h-4 w-4 opacity-50"})})]}));Re.displayName=tg.displayName;const Lg=u.forwardRef(({className:n,...r},c)=>e.jsx(ag,{ref:c,className:Q("flex cursor-default items-center justify-center py-1",n),...r,children:e.jsx(fr,{className:"h-4 w-4"})}));Lg.displayName=ag.displayName;const Ug=u.forwardRef(({className:n,...r},c)=>e.jsx(lg,{ref:c,className:Q("flex cursor-default items-center justify-center py-1",n),...r,children:e.jsx(Ll,{className:"h-4 w-4"})}));Ug.displayName=lg.displayName;const Le=u.forwardRef(({className:n,children:r,position:c="popper",...d},h)=>e.jsx(dN,{children:e.jsxs(ng,{ref:h,className:Q("relative z-[100] max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-hidden rounded-md border border-border bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",c==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",n),position:c,...d,children:[e.jsx(Lg,{}),e.jsx(uN,{className:Q("p-1",c==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:r}),e.jsx(Ug,{})]})}));Le.displayName=ng.displayName;const H0=u.forwardRef(({className:n,...r},c)=>e.jsx(ig,{ref:c,className:Q("px-2 py-1.5 text-sm font-semibold",n),...r}));H0.displayName=ig.displayName;const ne=u.forwardRef(({className:n,children:r,...c},d)=>e.jsxs(rg,{ref:d,className:Q("relative flex w-full cursor-default select-none items-center rounded-sm py-2 pl-2 pr-8 text-sm outline-none bg-white dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800 focus:bg-gray-100 dark:focus:bg-gray-800 data-[disabled]:pointer-events-none data-[disabled]:opacity-50",n),...c,children:[e.jsx("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(mN,{children:e.jsx(fa,{className:"h-4 w-4"})})}),e.jsx(hN,{children:r})]}));ne.displayName=rg.displayName;const q0=u.forwardRef(({className:n,...r},c)=>e.jsx(cg,{ref:c,className:Q("-mx-1 my-1 h-px bg-muted",n),...r}));q0.displayName=cg.displayName;const Oa=Vy,Ra=Fy,wa=u.forwardRef(({className:n,align:r="center",sideOffset:c=4,...d},h)=>e.jsx(Gy,{children:e.jsx(Up,{ref:h,align:r,sideOffset:c,className:Q("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]",n),...d})}));wa.displayName=Up.displayName;const Ul="/api/webui/config";async function cp(){const r=await(await ke(`${Ul}/bot`)).json();if(!r.success)throw new Error("获取配置数据失败");return r.config}async function ei(){const r=await(await ke(`${Ul}/model`)).json();if(!r.success)throw new Error("获取模型配置数据失败");return r.config}async function op(n){const c=await(await ke(`${Ul}/bot`,{method:"POST",body:JSON.stringify(n)})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function G0(){const r=await(await ke(`${Ul}/bot/raw`)).json();if(!r.success)throw new Error("获取配置源代码失败");return r.content}async function V0(n){const c=await(await ke(`${Ul}/bot/raw`,{method:"POST",body:JSON.stringify({raw_content:n})})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function io(n){const c=await(await ke(`${Ul}/model`,{method:"POST",body:JSON.stringify(n)})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function F0(n,r){const d=await(await ke(`${Ul}/bot/section/${n}`,{method:"POST",body:JSON.stringify(r)})).json();if(!d.success)throw new Error(d.message||`保存配置节 ${n} 失败`)}async function qu(n,r){const d=await(await ke(`${Ul}/model/section/${n}`,{method:"POST",body:JSON.stringify(r)})).json();if(!d.success)throw new Error(d.message||`保存配置节 ${n} 失败`)}async function $0(n,r="openai",c="/models"){const d=new URLSearchParams({provider_name:n,parser:r,endpoint:c}),h=await ke(`/api/webui/models/list?${d}`);if(!h.ok){const f=await h.json().catch(()=>({}));throw new Error(f.detail||`获取模型列表失败 (${h.status})`)}const x=await h.json();if(!x.success)throw new Error("获取模型列表失败");return x.models}async function Q0(n){const r=new URLSearchParams({provider_name:n}),c=await ke(`/api/webui/models/test-connection-by-name?${r}`,{method:"POST"});if(!c.ok){const d=await c.json().catch(()=>({}));throw new Error(d.detail||`测试连接失败 (${c.status})`)}return await c.json()}const Y0=ai("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"}}),ha=u.forwardRef(({className:n,variant:r,...c},d)=>e.jsx("div",{ref:d,role:"alert",className:Q(Y0({variant:r}),n),...c}));ha.displayName="Alert";const X0=u.forwardRef(({className:n,...r},c)=>e.jsx("h5",{ref:c,className:Q("mb-1 font-medium leading-none tracking-tight",n),...r}));X0.displayName="AlertTitle";const xa=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("text-sm [&_p]:leading-relaxed",n),...r}));xa.displayName="AlertDescription";function Iu({onRestartComplete:n,onRestartFailed:r}){const[c,d]=u.useState(0),[h,x]=u.useState("restarting"),[f,j]=u.useState(0),[p,w]=u.useState(0);u.useEffect(()=>{const T=setInterval(()=>{d(K=>K>=90?K:K+1)},200),E=setInterval(()=>{j(K=>K+1)},1e3),R=setTimeout(()=>{x("checking"),v()},3e3);return()=>{clearInterval(T),clearInterval(E),clearTimeout(R)}},[]);const v=()=>{const E=async()=>{try{if(w(K=>K+1),(await fetch("/api/webui/system/status",{method:"GET",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(3e3)})).ok)d(100),x("success"),setTimeout(()=>{n?.()},1500);else throw new Error("Status check failed")}catch{p<60?setTimeout(E,2e3):(x("failed"),r?.())}};E()},k=T=>{const E=Math.floor(T/60),R=T%60;return`${E}:${R.toString().padStart(2,"0")}`};return e.jsx("div",{className:"fixed inset-0 bg-background/95 backdrop-blur-sm z-50 flex items-center justify-center",children:e.jsxs("div",{className:"max-w-md w-full mx-4 space-y-8",children:[e.jsxs("div",{className:"flex flex-col items-center space-y-4",children:[h==="restarting"&&e.jsxs(e.Fragment,{children:[e.jsx(vt,{className:"h-16 w-16 text-primary animate-spin"}),e.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"请稍候,麦麦正在重启中..."})]}),h==="checking"&&e.jsxs(e.Fragment,{children:[e.jsx(vt,{className:"h-16 w-16 text-primary animate-spin"}),e.jsx("h2",{className:"text-2xl font-bold",children:"检查服务状态"}),e.jsxs("p",{className:"text-muted-foreground text-center",children:["等待服务恢复... (尝试 ",p,"/60)"]})]}),h==="success"&&e.jsxs(e.Fragment,{children:[e.jsx(pa,{className:"h-16 w-16 text-green-500"}),e.jsx("h2",{className:"text-2xl font-bold",children:"重启成功"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"正在跳转到登录页面..."})]}),h==="failed"&&e.jsxs(e.Fragment,{children:[e.jsx(Da,{className:"h-16 w-16 text-destructive"}),e.jsx("h2",{className:"text-2xl font-bold",children:"重启超时"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"服务未能在预期时间内恢复,请手动检查或刷新页面"})]})]}),h!=="failed"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(Sr,{value:c,className:"h-2"}),e.jsxs("div",{className:"flex justify-between text-sm text-muted-foreground",children:[e.jsxs("span",{children:[c,"%"]}),e.jsxs("span",{children:["已用时: ",k(f)]})]})]}),e.jsx("div",{className:"bg-muted/50 rounded-lg p-4 space-y-2",children:e.jsxs("p",{className:"text-sm text-muted-foreground",children:[h==="restarting"&&"🔄 配置已保存,正在重启主程序...",h==="checking"&&"⏳ 正在等待服务恢复,请勿关闭页面...",h==="success"&&"✅ 配置已生效,服务运行正常",h==="failed"&&"⚠️ 如果长时间无响应,请尝试手动重启"]})}),e.jsx("div",{className:"bg-yellow-500/10 border border-yellow-500/50 rounded-lg p-4",children:e.jsxs("p",{className:"text-sm text-yellow-900 dark:text-yellow-100",children:[e.jsx("strong",{children:"⚠️ 重要提示:"})," 由于技术原因,使用重启功能后,将无法再使用 ",e.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。如需结束程序,请使用脚本目录下的进程管理脚本。"]})}),h==="failed"&&e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{onClick:()=>window.location.reload(),className:"flex-1 px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary/90",children:"刷新页面"}),e.jsx("button",{onClick:()=>{x("checking"),w(0),v()},className:"flex-1 px-4 py-2 bg-secondary text-secondary-foreground rounded-md hover:bg-secondary/90",children:"重试检测"})]})]})})}const K0={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,r){let c;if(!r.inString&&(c=n.match(/^('''|"""|'|")/))&&(r.stringType=c[0],r.inString=!0),n.sol()&&!r.inString&&r.inArray===0&&(r.lhs=!0),r.inString){for(;r.inString;)if(n.match(r.stringType))r.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return r.lhs?"property":"string"}else{if(r.inArray&&n.peek()==="]")return n.next(),r.inArray--,"bracket";if(r.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(r.lhs&&n.eatWhile(function(d){return d!="="&&d!=" "}))return"property";if(r.lhs&&n.peek()==="=")return n.next(),r.lhs=!1,null;if(!r.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!r.lhs&&(n.match("true")||n.match("false")))return"atom";if(!r.lhs&&n.peek()==="[")return r.inArray++,n.next(),"bracket";if(!r.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}},Z0={python:[tb()],json:[ab(),lb()],toml:[sb.define(K0)],text:[]};function J0({value:n,onChange:r,language:c="text",readOnly:d=!1,height:h="400px",minHeight:x,maxHeight:f,placeholder:j,theme:p="dark",className:w=""}){const[v,k]=u.useState(!1);if(u.useEffect(()=>{k(!0)},[]),!v)return e.jsx("div",{className:`rounded-md border bg-muted animate-pulse ${w}`,style:{height:h,minHeight:x,maxHeight:f}});const T=[...Z0[c]||[],If.lineWrapping];return d&&T.push(If.editable.of(!1)),e.jsx("div",{className:`rounded-md overflow-hidden border ${w}`,children:e.jsx(nb,{value:n,height:h,minHeight:x,maxHeight:f,theme:p==="dark"?ib:void 0,extensions:T,onChange:r,placeholder:j,basicSetup:{lineNumbers:!0,highlightActiveLineGutter:!0,highlightSpecialChars:!0,history:!0,foldGutter:!0,drawSelection:!0,dropCursor:!0,allowMultipleSelections:!0,indentOnInput:!0,syntaxHighlighting:!0,bracketMatching:!0,closeBrackets:!0,autocompletion:!0,rectangularSelection:!0,crosshairCursor:!0,highlightActiveLine:!0,highlightSelectionMatches:!0,closeBracketsKeymap:!0,defaultKeymap:!0,searchKeymap:!0,historyKeymap:!0,foldKeymap:!0,completionKeymap:!0,lintKeymap:!0}})})}function I0(){const[n,r]=u.useState(!0),[c,d]=u.useState(!1),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,w]=u.useState(!1),[v,k]=u.useState(!1),[T,E]=u.useState("visual"),[R,K]=u.useState(""),[U,A]=u.useState(!1),{toast:Z}=Hs(),[H,z]=u.useState(null),[B,X]=u.useState(null),[S,O]=u.useState(null),[te,he]=u.useState(null),[Ne,ye]=u.useState(null),[pe,je]=u.useState(null),[_e,N]=u.useState(null),[G,q]=u.useState(null),[ie,_]=u.useState(null),[me,xe]=u.useState(null),[$,de]=u.useState(null),[ge,le]=u.useState(null),[L,F]=u.useState(null),[D,ee]=u.useState(null),[we,ze]=u.useState(null),[ss,Ze]=u.useState(null),[Ls,Gs]=u.useState(null),[re,be]=u.useState(null),Xe=u.useRef(null),Ue=u.useRef(!0),st=u.useRef({}),It=u.useCallback(async()=>{try{const Se=await G0();K(Se),A(!1)}catch(Se){Z({variant:"destructive",title:"加载失败",description:Se instanceof Error?Se.message:"加载源代码失败"})}},[Z]),bt=u.useCallback(async()=>{try{r(!0);const Se=await cp();st.current=Se,z(Se.bot),X(Se.personality);const Oe=Se.chat;Oe.talk_value_rules||(Oe.talk_value_rules=[]),O(Oe),he(Se.expression),ye(Se.emoji),je(Se.memory),N(Se.tool),q(Se.mood),_(Se.voice),xe(Se.lpmm_knowledge),de(Se.keyword_reaction),le(Se.response_post_process),F(Se.chinese_typo),ee(Se.response_splitter),ze(Se.log),Ze(Se.debug),Gs(Se.maim_message),be(Se.telemetry),j(!1),Ue.current=!1,await It()}catch(Se){console.error("加载配置失败:",Se),Z({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}finally{r(!1)}},[Z,It]);u.useEffect(()=>{bt()},[bt]);const Je=u.useCallback(async(Se,Oe)=>{if(!Ue.current)try{x(!0),await F0(Se,Oe),j(!1)}catch(it){console.error(`自动保存 ${Se} 失败:`,it),j(!0)}finally{x(!1)}},[]),Be=u.useCallback((Se,Oe)=>{Ue.current||(j(!0),Xe.current&&clearTimeout(Xe.current),Xe.current=setTimeout(()=>{Je(Se,Oe)},2e3))},[Je]);u.useEffect(()=>{H&&!Ue.current&&Be("bot",H)},[H,Be]),u.useEffect(()=>{B&&!Ue.current&&Be("personality",B)},[B,Be]),u.useEffect(()=>{S&&!Ue.current&&Be("chat",S)},[S,Be]),u.useEffect(()=>{te&&!Ue.current&&Be("expression",te)},[te,Be]),u.useEffect(()=>{Ne&&!Ue.current&&Be("emoji",Ne)},[Ne,Be]),u.useEffect(()=>{pe&&!Ue.current&&Be("memory",pe)},[pe,Be]),u.useEffect(()=>{_e&&!Ue.current&&Be("tool",_e)},[_e,Be]),u.useEffect(()=>{G&&!Ue.current&&Be("mood",G)},[G,Be]),u.useEffect(()=>{ie&&!Ue.current&&Be("voice",ie)},[ie,Be]),u.useEffect(()=>{me&&!Ue.current&&Be("lpmm_knowledge",me)},[me,Be]),u.useEffect(()=>{$&&!Ue.current&&Be("keyword_reaction",$)},[$,Be]),u.useEffect(()=>{ge&&!Ue.current&&Be("response_post_process",ge)},[ge,Be]),u.useEffect(()=>{L&&!Ue.current&&Be("chinese_typo",L)},[L,Be]),u.useEffect(()=>{D&&!Ue.current&&Be("response_splitter",D)},[D,Be]),u.useEffect(()=>{we&&!Ue.current&&Be("log",we)},[we,Be]),u.useEffect(()=>{ss&&!Ue.current&&Be("debug",ss)},[ss,Be]),u.useEffect(()=>{Ls&&!Ue.current&&Be("maim_message",Ls)},[Ls,Be]),u.useEffect(()=>{re&&!Ue.current&&Be("telemetry",re)},[re,Be]);const jt=async()=>{try{d(!0),await V0(R),j(!1),A(!1),Z({title:"保存成功",description:"配置已保存"}),await bt()}catch(Se){A(!0),Z({variant:"destructive",title:"保存失败",description:Se instanceof Error?Se.message:"保存配置失败"})}finally{d(!1)}},nt=async Se=>{if(f){Z({variant:"destructive",title:"切换失败",description:"请先保存当前更改"});return}if(E(Se),Se==="source")await It();else try{const Oe=await cp();st.current=Oe,z(Oe.bot),X(Oe.personality);const it=Oe.chat;it.talk_value_rules||(it.talk_value_rules=[]),O(it),he(Oe.expression),ye(Oe.emoji),je(Oe.memory),N(Oe.tool),q(Oe.mood),_(Oe.voice),xe(Oe.lpmm_knowledge),de(Oe.keyword_reaction),le(Oe.response_post_process),F(Oe.chinese_typo),ee(Oe.response_splitter),ze(Oe.log),Ze(Oe.debug),Gs(Oe.maim_message),be(Oe.telemetry),j(!1)}catch(Oe){console.error("加载配置失败:",Oe),Z({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}},St=async()=>{try{d(!0),Xe.current&&clearTimeout(Xe.current);const Se={...st.current,bot:H,personality:B,chat:S,expression:te,emoji:Ne,memory:pe,tool:_e,mood:G,voice:ie,lpmm_knowledge:me,keyword_reaction:$,response_post_process:ge,chinese_typo:L,response_splitter:D,log:we,debug:ss,maim_message:Ls,telemetry:re};await op(Se),j(!1),Z({title:"保存成功",description:"麦麦主程序配置已保存"})}catch(Se){console.error("保存配置失败:",Se),Z({title:"保存失败",description:Se.message,variant:"destructive"})}finally{d(!1)}},Ct=async()=>{try{w(!0),co().catch(()=>{}),k(!0)}catch(Se){console.error("重启失败:",Se),k(!1),Z({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),w(!1)}},rl=async()=>{try{d(!0),Xe.current&&clearTimeout(Xe.current);const Se={...st.current,bot:H,personality:B,chat:S,expression:te,emoji:Ne,memory:pe,tool:_e,mood:G,voice:ie,lpmm_knowledge:me,keyword_reaction:$,response_post_process:ge,chinese_typo:L,response_splitter:D,log:we,debug:ss,maim_message:Ls,telemetry:re};await op(Se),j(!1),Z({title:"保存成功",description:"配置已保存,即将重启麦麦..."}),await new Promise(Oe=>setTimeout(Oe,500)),await Ct()}catch(Se){console.error("保存失败:",Se),Z({title:"保存失败",description:Se.message,variant:"destructive"})}finally{d(!1)}},cl=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},ol=()=>{k(!1),w(!1),Z({title:"重启失败",description:"服务器未能在预期时间内恢复,请手动检查",variant:"destructive"})};return n?e.jsx(Pe,{className:"h-full",children:e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):e.jsx(Pe,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦主程序配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的核心功能和行为设置"})]}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto items-center",children:[e.jsx(Kt,{value:T,onValueChange:Se=>nt(Se),className:"w-auto",children:e.jsxs(Rt,{className:"h-9",children:[e.jsxs($e,{value:"visual",className:"text-xs sm:text-sm px-2 sm:px-3",children:[e.jsx(AN,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"可视化"]}),e.jsxs($e,{value:"source",className:"text-xs sm:text-sm px-2 sm:px-3",children:[e.jsx(DN,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"源代码"]})]})}),e.jsxs(y,{onClick:T==="visual"?St:jt,disabled:c||h||!f||p,size:"sm",variant:"outline",className:"flex-1 sm:flex-none",children:[e.jsx(br,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),c?"保存中...":h?"自动保存中...":f?"保存配置":"已保存"]}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(y,{disabled:c||h||p,size:"sm",className:"flex-1 sm:flex-none",children:[e.jsx(Nr,{className:"mr-2 h-4 w-4"}),p?"重启中...":f?"保存并重启":"重启麦麦"]})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认重启麦麦?"}),e.jsx(us,{className:"space-y-3",asChild:!0,children:e.jsxs("div",{children:[e.jsx("p",{children:f?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),e.jsxs(ha,{className:"border-yellow-500/50 bg-yellow-500/10",children:[e.jsx(Xt,{className:"h-4 w-4 text-yellow-600"}),e.jsxs(xa,{className:"text-yellow-900 dark:text-yellow-100",children:[e.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",e.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",e.jsxs(Rs,{children:[e.jsx(ni,{asChild:!0,children:e.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[e.jsx(ro,{className:"h-3 w-3"}),"如何结束程序?"]})}),e.jsxs(zs,{className:"max-w-2xl",children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"如何结束使用重启功能后的麦麦程序"}),e.jsx(Ys,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),e.jsxs(Kt,{defaultValue:"windows",className:"w-full",children:[e.jsxs(Rt,{className:"grid w-full grid-cols-3",children:[e.jsx($e,{value:"windows",children:"Windows"}),e.jsx($e,{value:"macos",children:"macOS"}),e.jsx($e,{value:"linux",children:"Linux"})]}),e.jsxs(We,{value:"windows",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),e.jsxs("li",{children:['在"进程"或"详细信息"标签页中找到 ',e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),e.jsx("li",{children:'右键点击并选择"结束任务"'})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),e.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),e.jsxs(We,{value:"macos",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"}),' 打开 Spotlight,搜索"活动监视器"']}),e.jsxs("li",{children:["在进程列表中找到 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),e.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:"ps aux | grep python | grep -v grep"}),e.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),e.jsx("p",{children:"kill -9 "}),e.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"pkill -9 python"})]})]})]}),e.jsxs(We,{value:"linux",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:"ps aux | grep python | grep -v grep"}),e.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),e.jsx("p",{children:"kill -9 "}),e.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),e.jsx("p",{children:'pkill -9 -f "bot.py"'}),e.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"pkill -9 python"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["在终端输入 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),e.jsx(Js,{children:e.jsx(Zu,{asChild:!0,children:e.jsx(y,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:f?rl:Ct,children:f?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsxs(ha,{children:[e.jsx(Xt,{className:"h-4 w-4"}),e.jsxs(xa,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),T==="source"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs(ha,{children:[e.jsx(Xt,{className:"h-4 w-4"}),e.jsxs(xa,{children:[e.jsx("strong",{children:"源代码模式(高级功能):"}),"直接编辑 TOML 配置文件。此功能仅适用于熟悉 TOML 语法的高级用户。保存时会在后端验证格式,只有格式完全正确才能保存。",U&&e.jsx("span",{className:"text-destructive font-semibold ml-2",children:"⚠️ 上次保存失败,请检查 TOML 格式"})]})]}),e.jsx(J0,{value:R,onChange:Se=>{K(Se),j(!0),U&&A(!1)},language:"toml",theme:"dark",height:"calc(100vh - 280px)",minHeight:"500px",placeholder:"TOML 配置内容"})]}),T==="visual"&&e.jsx(e.Fragment,{children:e.jsxs(Kt,{defaultValue:"bot",className:"w-full",children:[e.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:e.jsxs(Rt,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5 lg:grid-cols-10",children:[e.jsx($e,{value:"bot",className:"flex-shrink-0",children:"基本信息"}),e.jsx($e,{value:"personality",className:"flex-shrink-0",children:"人格"}),e.jsx($e,{value:"chat",className:"flex-shrink-0",children:"聊天"}),e.jsx($e,{value:"expression",className:"flex-shrink-0",children:"表达"}),e.jsx($e,{value:"features",className:"flex-shrink-0",children:"功能"}),e.jsx($e,{value:"processing",className:"flex-shrink-0",children:"处理"}),e.jsx($e,{value:"mood",className:"flex-shrink-0",children:"情绪"}),e.jsx($e,{value:"voice",className:"flex-shrink-0",children:"语音"}),e.jsx($e,{value:"lpmm",className:"flex-shrink-0",children:"知识库"}),e.jsx($e,{value:"other",className:"flex-shrink-0",children:"其他"})]})}),e.jsx(We,{value:"bot",className:"space-y-4",children:H&&e.jsx(P0,{config:H,onChange:z})}),e.jsx(We,{value:"personality",className:"space-y-4",children:B&&e.jsx(W0,{config:B,onChange:X})}),e.jsx(We,{value:"chat",className:"space-y-4",children:S&&e.jsx(ew,{config:S,onChange:O})}),e.jsx(We,{value:"expression",className:"space-y-4",children:te&&e.jsx(tw,{config:te,onChange:he})}),e.jsx(We,{value:"features",className:"space-y-4",children:Ne&&pe&&_e&&e.jsx(aw,{emojiConfig:Ne,memoryConfig:pe,toolConfig:_e,onEmojiChange:ye,onMemoryChange:je,onToolChange:N})}),e.jsx(We,{value:"processing",className:"space-y-4",children:$&&ge&&L&&D&&e.jsx(lw,{keywordReactionConfig:$,responsePostProcessConfig:ge,chineseTypoConfig:L,responseSplitterConfig:D,onKeywordReactionChange:de,onResponsePostProcessChange:le,onChineseTypoChange:F,onResponseSplitterChange:ee})}),e.jsx(We,{value:"mood",className:"space-y-4",children:G&&e.jsx(nw,{config:G,onChange:q})}),e.jsx(We,{value:"voice",className:"space-y-4",children:ie&&e.jsx(iw,{config:ie,onChange:_})}),e.jsx(We,{value:"lpmm",className:"space-y-4",children:me&&e.jsx(rw,{config:me,onChange:xe})}),e.jsxs(We,{value:"other",className:"space-y-4",children:[we&&e.jsx(cw,{config:we,onChange:ze}),ss&&e.jsx(ow,{config:ss,onChange:Ze}),Ls&&e.jsx(dw,{config:Ls,onChange:Gs}),re&&e.jsx(uw,{config:re,onChange:be})]})]})}),v&&e.jsx(Iu,{onRestartComplete:cl,onRestartFailed:ol})]})})}function P0({config:n,onChange:r}){const c=()=>{r({...n,platforms:[...n.platforms,""]})},d=p=>{r({...n,platforms:n.platforms.filter((w,v)=>v!==p)})},h=(p,w)=>{const v=[...n.platforms];v[p]=w,r({...n,platforms:v})},x=()=>{r({...n,alias_names:[...n.alias_names,""]})},f=p=>{r({...n,alias_names:n.alias_names.filter((w,v)=>v!==p)})},j=(p,w)=>{const v=[...n.alias_names];v[p]=w,r({...n,alias_names:v})};return e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"基本信息"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"platform",children:"平台"}),e.jsx(ce,{id:"platform",value:n.platform,onChange:p=>r({...n,platform:p.target.value}),placeholder:"qq"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"qq_account",children:"QQ账号"}),e.jsx(ce,{id:"qq_account",value:n.qq_account,onChange:p=>r({...n,qq_account:p.target.value}),placeholder:"123456789"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"nickname",children:"昵称"}),e.jsx(ce,{id:"nickname",value:n.nickname,onChange:p=>r({...n,nickname:p.target.value}),placeholder:"麦麦"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:"其他平台账号"}),e.jsxs(y,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(ot,{className:"h-4 w-4 mr-1"}),"添加"]})]}),e.jsxs("div",{className:"space-y-2",children:[n.platforms.map((p,w)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{value:p,onChange:v=>h(w,v.target.value),placeholder:"wx:114514"}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(y,{size:"icon",variant:"outline",children:e.jsx(es,{className:"h-4 w-4"})})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:['确定要删除平台账号 "',p||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>d(w),children:"删除"})]})]})]})]},w)),n.platforms.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无其他平台账号"})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:"别名"}),e.jsxs(y,{onClick:x,size:"sm",variant:"outline",children:[e.jsx(ot,{className:"h-4 w-4 mr-1"}),"添加"]})]}),e.jsxs("div",{className:"space-y-2",children:[n.alias_names.map((p,w)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{value:p,onChange:v=>j(w,v.target.value),placeholder:"小麦"}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(y,{size:"icon",variant:"outline",children:e.jsx(es,{className:"h-4 w-4"})})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:['确定要删除别名 "',p||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>f(w),children:"删除"})]})]})]})]},w)),n.alias_names.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无别名"})]})]})]})]})})}function W0({config:n,onChange:r}){const c=()=>{r({...n,states:[...n.states,""]})},d=x=>{r({...n,states:n.states.filter((f,j)=>j!==x)})},h=(x,f)=>{const j=[...n.states];j[x]=f,r({...n,states:j})};return e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"人格设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"personality",children:"人格特质"}),e.jsx(Bs,{id:"personality",value:n.personality,onChange:x=>r({...n,personality:x.target.value}),placeholder:"描述人格特质和身份特征(建议120字以内)",rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"建议120字以内,描述人格特质和身份特征"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"reply_style",children:"表达风格"}),e.jsx(Bs,{id:"reply_style",value:n.reply_style,onChange:x=>r({...n,reply_style:x.target.value}),placeholder:"描述说话的表达风格和习惯",rows:3})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"interest",children:"兴趣"}),e.jsx(Bs,{id:"interest",value:n.interest,onChange:x=>r({...n,interest:x.target.value}),placeholder:"会影响麦麦对什么话题进行回复",rows:2})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"plan_style",children:"说话规则与行为风格"}),e.jsx(Bs,{id:"plan_style",value:n.plan_style,onChange:x=>r({...n,plan_style:x.target.value}),placeholder:"麦麦的说话规则和行为风格",rows:5})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"visual_style",children:"识图规则"}),e.jsx(Bs,{id:"visual_style",value:n.visual_style,onChange:x=>r({...n,visual_style:x.target.value}),placeholder:"识图时的处理规则",rows:3})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"private_plan_style",children:"私聊规则"}),e.jsx(Bs,{id:"private_plan_style",value:n.private_plan_style,onChange:x=>r({...n,private_plan_style:x.target.value}),placeholder:"私聊的说话规则和行为风格",rows:4})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:"状态列表(人格多样性)"}),e.jsxs(y,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(ot,{className:"h-4 w-4 mr-1"}),"添加状态"]})]}),e.jsx("div",{className:"space-y-2",children:n.states.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Bs,{value:x,onChange:j=>h(f,j.target.value),placeholder:"描述一个人格状态",rows:2}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(y,{size:"icon",variant:"outline",children:e.jsx(es,{className:"h-4 w-4"})})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsx(us,{children:"确定要删除这个人格状态吗?此操作无法撤销。"})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>d(f),children:"删除"})]})]})]})]},f))})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"state_probability",children:"状态替换概率"}),e.jsx(ce,{id:"state_probability",type:"number",step:"0.1",min:"0",max:"1",value:n.state_probability,onChange:x=>r({...n,state_probability:parseFloat(x.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"每次构建人格时替换 personality 的概率(0.0-1.0)"})]})]})]})})}function ew({config:n,onChange:r}){const c=()=>{r({...n,talk_value_rules:[...n.talk_value_rules,{target:"",time:"00:00-23:59",value:1}]})},d=j=>{r({...n,talk_value_rules:n.talk_value_rules.filter((p,w)=>w!==j)})},h=(j,p,w)=>{const v=[...n.talk_value_rules];v[j]={...v[j],[p]:w},r({...n,talk_value_rules:v})},x=({value:j,onChange:p})=>{const[w,v]=u.useState("00"),[k,T]=u.useState("00"),[E,R]=u.useState("23"),[K,U]=u.useState("59");u.useEffect(()=>{const Z=j.split("-");if(Z.length===2){const[H,z]=Z,[B,X]=H.split(":"),[S,O]=z.split(":");B&&v(B.padStart(2,"0")),X&&T(X.padStart(2,"0")),S&&R(S.padStart(2,"0")),O&&U(O.padStart(2,"0"))}},[j]);const A=(Z,H,z,B)=>{const X=`${Z}:${H}-${z}:${B}`;p(X)};return e.jsxs(Oa,{children:[e.jsx(Ra,{asChild:!0,children:e.jsxs(y,{variant:"outline",className:"w-full justify-start font-mono text-sm",children:[e.jsx(Wn,{className:"h-4 w-4 mr-2"}),j||"选择时间段"]})}),e.jsx(wa,{className:"w-80",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"font-medium text-sm mb-3",children:"开始时间"}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-xs",children:"小时"}),e.jsxs(He,{value:w,onValueChange:Z=>{v(Z),A(Z,k,E,K)},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsx(Le,{children:Array.from({length:24},(Z,H)=>H).map(Z=>e.jsx(ne,{value:Z.toString().padStart(2,"0"),children:Z.toString().padStart(2,"0")},Z))})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-xs",children:"分钟"}),e.jsxs(He,{value:k,onValueChange:Z=>{T(Z),A(w,Z,E,K)},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsx(Le,{children:Array.from({length:60},(Z,H)=>H).map(Z=>e.jsx(ne,{value:Z.toString().padStart(2,"0"),children:Z.toString().padStart(2,"0")},Z))})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-medium text-sm mb-3",children:"结束时间"}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-xs",children:"小时"}),e.jsxs(He,{value:E,onValueChange:Z=>{R(Z),A(w,k,Z,K)},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsx(Le,{children:Array.from({length:24},(Z,H)=>H).map(Z=>e.jsx(ne,{value:Z.toString().padStart(2,"0"),children:Z.toString().padStart(2,"0")},Z))})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-xs",children:"分钟"}),e.jsxs(He,{value:K,onValueChange:Z=>{U(Z),A(w,k,E,Z)},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsx(Le,{children:Array.from({length:60},(Z,H)=>H).map(Z=>e.jsx(ne,{value:Z.toString().padStart(2,"0"),children:Z.toString().padStart(2,"0")},Z))})]})]})]})]})]})})]})},f=({rule:j})=>{const p=`{ target = "${j.target}", time = "${j.time}", value = ${j.value.toFixed(1)} }`;return e.jsxs(Oa,{children:[e.jsx(Ra,{asChild:!0,children:e.jsxs(y,{variant:"outline",size:"sm",children:[e.jsx(Zt,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(wa,{className:"w-96",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:p}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"聊天设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"talk_value",children:"聊天频率(基础值)"}),e.jsx(ce,{id:"talk_value",type:"number",step:"0.1",min:"0",max:"1",value:n.talk_value,onChange:j=>r({...n,talk_value:parseFloat(j.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"越小越沉默,范围 0-1"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"mentioned_bot_reply",checked:n.mentioned_bot_reply,onCheckedChange:j=>r({...n,mentioned_bot_reply:j})}),e.jsx(b,{htmlFor:"mentioned_bot_reply",className:"cursor-pointer",children:"启用提及必回复"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_context_size",children:"上下文长度"}),e.jsx(ce,{id:"max_context_size",type:"number",min:"1",value:n.max_context_size,onChange:j=>r({...n,max_context_size:parseInt(j.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"planner_smooth",children:"规划器平滑"}),e.jsx(ce,{id:"planner_smooth",type:"number",step:"1",min:"0",value:n.planner_smooth,onChange:j=>r({...n,planner_smooth:parseFloat(j.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"增大数值会减小 planner 负荷,推荐 1-5,0 为关闭"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"enable_talk_value_rules",checked:n.enable_talk_value_rules,onCheckedChange:j=>r({...n,enable_talk_value_rules:j})}),e.jsx(b,{htmlFor:"enable_talk_value_rules",className:"cursor-pointer",children:"启用动态发言频率规则"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"include_planner_reasoning",checked:n.include_planner_reasoning,onCheckedChange:j=>r({...n,include_planner_reasoning:j})}),e.jsx(b,{htmlFor:"include_planner_reasoning",className:"cursor-pointer",children:"将 planner 推理加入 replyer"})]})]})]}),n.enable_talk_value_rules&&e.jsxs("div",{className:"border-t pt-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"动态发言频率规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"按时段或聊天流ID调整发言频率,优先匹配具体聊天,再匹配全局规则"})]}),e.jsxs(y,{onClick:c,size:"sm",children:[e.jsx(ot,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),n.talk_value_rules&&n.talk_value_rules.length>0?e.jsx("div",{className:"space-y-4",children:n.talk_value_rules.map((j,p)=>e.jsxs("div",{className:"rounded-lg border p-4 bg-muted/50 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium text-muted-foreground",children:["规则 #",p+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(f,{rule:j}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(y,{variant:"ghost",size:"sm",children:e.jsx(es,{className:"h-4 w-4 text-destructive"})})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:["确定要删除规则 #",p+1," 吗?此操作无法撤销。"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>d(p),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"配置类型"}),e.jsxs(He,{value:j.target===""?"global":"specific",onValueChange:w=>{w==="global"?h(p,"target",""):h(p,"target","qq::group")},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"global",children:"全局配置"}),e.jsx(ne,{value:"specific",children:"详细配置"})]})]})]}),j.target!==""&&(()=>{const w=j.target.split(":"),v=w[0]||"qq",k=w[1]||"",T=w[2]||"group";return e.jsxs("div",{className:"grid gap-4 p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"平台"}),e.jsxs(He,{value:v,onValueChange:E=>{h(p,"target",`${E}:${k}:${T}`)},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"qq",children:"QQ"}),e.jsx(ne,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"群 ID"}),e.jsx(ce,{value:k,onChange:E=>{h(p,"target",`${v}:${E.target.value}:${T}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"类型"}),e.jsxs(He,{value:T,onValueChange:E=>{h(p,"target",`${v}:${k}:${E}`)},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"group",children:"群组(group)"}),e.jsx(ne,{value:"private",children:"私聊(private)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",j.target||"(未设置)"]})]})})(),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"时间段 (Time)"}),e.jsx(x,{value:j.time,onChange:w=>h(p,"time",w)}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"支持跨夜区间,例如 23:00-02:00"})]}),e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{htmlFor:`rule-value-${p}`,className:"text-xs font-medium",children:"发言频率值 (Value)"}),e.jsx(ce,{id:`rule-value-${p}`,type:"number",step:"0.01",min:"0.01",max:"1",value:j.value,onChange:w=>{const v=parseFloat(w.target.value);isNaN(v)||h(p,"value",Math.max(.01,Math.min(1,v)))},className:"w-20 h-8 text-xs"})]}),e.jsx(Ma,{value:[j.value],onValueChange:w=>h(p,"value",w[0]),min:.01,max:1,step:.01,className:"w-full"}),e.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[e.jsx("span",{children:"0.01 (极少发言)"}),e.jsx("span",{children:"0.5"}),e.jsx("span",{children:"1.0 (正常)"})]})]})]})]},p))}):e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:e.jsx("p",{className:"text-sm",children:'暂无规则,点击"添加规则"按钮创建'})}),e.jsxs("div",{className:"mt-4 p-4 bg-blue-50 dark:bg-blue-950/20 border border-blue-200 dark:border-blue-800 rounded-lg",children:[e.jsx("h5",{className:"text-sm font-semibold text-blue-900 dark:text-blue-100 mb-2",children:"📝 规则说明"}),e.jsxs("ul",{className:"text-xs text-blue-800 dark:text-blue-200 space-y-1",children:[e.jsxs("li",{children:["• ",e.jsx("strong",{children:"Target 为空"}),":全局规则,对所有聊天生效"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"Target 指定"}),":仅对特定聊天流生效(格式:platform:id:type)"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"优先级"}),":先匹配具体聊天流规则,再匹配全局规则"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"时间支持跨夜"}),":例如 23:00-02:00 表示晚上11点到次日凌晨2点"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"数值范围"}),":建议 0-1,0 表示完全沉默,1 表示正常发言"]})]})]})]})]})}function sw({member:n,groupIndex:r,memberIndex:c,availableChatIds:d,onUpdate:h,onRemove:x}){const f=d.includes(n)||n==="*",[j,p]=u.useState(!f);return e.jsxs("div",{className:"flex gap-2",children:[e.jsx("div",{className:"flex-1 flex gap-2",children:j?e.jsxs(e.Fragment,{children:[e.jsx(ce,{value:n,onChange:w=>h(r,c,w.target.value),placeholder:'输入 "*" 或 "qq:123456:group"',className:"flex-1"}),d.length>0&&e.jsx(y,{size:"sm",variant:"outline",onClick:()=>p(!1),title:"切换到下拉选择",children:"下拉"})]}):e.jsxs(e.Fragment,{children:[e.jsxs(He,{value:n,onValueChange:w=>h(r,c,w),children:[e.jsx(Re,{className:"flex-1",children:e.jsx(qe,{placeholder:"选择聊天流"})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"*",children:"* (全局共享)"}),d.map((w,v)=>e.jsx(ne,{value:w,children:w},v))]})]}),e.jsx(y,{size:"sm",variant:"outline",onClick:()=>p(!0),title:"切换到手动输入",children:"输入"})]})}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(y,{size:"icon",variant:"outline",children:e.jsx(es,{className:"h-4 w-4"})})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:['确定要删除组成员 "',n||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>x(r,c),children:"删除"})]})]})]})]})}function tw({config:n,onChange:r}){const c=()=>{r({...n,learning_list:[...n.learning_list,["","enable","enable","1.0"]]})},d=k=>{r({...n,learning_list:n.learning_list.filter((T,E)=>E!==k)})},h=(k,T,E)=>{const R=[...n.learning_list];R[k][T]=E,r({...n,learning_list:R})},x=({rule:k})=>{const T=`["${k[0]}", "${k[1]}", "${k[2]}", "${k[3]}"]`;return e.jsxs(Oa,{children:[e.jsx(Ra,{asChild:!0,children:e.jsxs(y,{variant:"outline",size:"sm",children:[e.jsx(Zt,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(wa,{className:"w-96",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:T}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},f=()=>{r({...n,expression_groups:[...n.expression_groups,[]]})},j=k=>{r({...n,expression_groups:n.expression_groups.filter((T,E)=>E!==k)})},p=k=>{const T=[...n.expression_groups];T[k]=[...T[k],""],r({...n,expression_groups:T})},w=(k,T)=>{const E=[...n.expression_groups];E[k]=E[k].filter((R,K)=>K!==T),r({...n,expression_groups:E})},v=(k,T,E)=>{const R=[...n.expression_groups];R[k][T]=E,r({...n,expression_groups:R})};return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达学习配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置麦麦如何学习和使用表达方式"})]}),e.jsxs(y,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(ot,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),e.jsxs("div",{className:"space-y-4",children:[n.learning_list.map((k,T)=>{const E=n.learning_list.some((H,z)=>z!==T&&H[0]===""),R=k[0]==="",K=k[0].split(":"),U=K[0]||"qq",A=K[1]||"",Z=K[2]||"group";return e.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["规则 ",T+1," ",R&&"(全局配置)"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(x,{rule:k}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(y,{size:"sm",variant:"ghost",children:e.jsx(es,{className:"h-4 w-4"})})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:["确定要删除学习规则 ",T+1," 吗?此操作无法撤销。"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>d(T),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"配置类型"}),e.jsxs(He,{value:R?"global":"specific",onValueChange:H=>{H==="global"?h(T,0,""):h(T,0,"qq::group")},disabled:E&&!R,children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"global",children:"全局配置"}),e.jsx(ne,{value:"specific",disabled:E&&!R,children:"详细配置"})]})]}),E&&!R&&e.jsx("p",{className:"text-xs text-amber-600",children:"已存在全局配置,无法创建新的全局配置"})]}),!R&&e.jsxs("div",{className:"grid gap-4 p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"平台"}),e.jsxs(He,{value:U,onValueChange:H=>{h(T,0,`${H}:${A}:${Z}`)},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"qq",children:"QQ"}),e.jsx(ne,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"群 ID"}),e.jsx(ce,{value:A,onChange:H=>{h(T,0,`${U}:${H.target.value}:${Z}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"类型"}),e.jsxs(He,{value:Z,onValueChange:H=>{h(T,0,`${U}:${A}:${H}`)},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"group",children:"群组(group)"}),e.jsx(ne,{value:"private",children:"私聊(private)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",k[0]||"(未设置)"]})]}),e.jsx("div",{className:"grid gap-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-xs font-medium",children:"使用学到的表达"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦使用从聊天中学到的表达方式"})]}),e.jsx(Ve,{checked:k[1]==="enable",onCheckedChange:H=>h(T,1,H?"enable":"disable")})]})}),e.jsx("div",{className:"grid gap-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-xs font-medium",children:"学习表达"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦从聊天中学习新的表达方式"})]}),e.jsx(Ve,{checked:k[2]==="enable",onCheckedChange:H=>h(T,2,H?"enable":"disable")})]})}),e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-xs font-medium",children:"学习强度"}),e.jsx(ce,{type:"number",step:"0.1",min:"0",max:"5",value:k[3],onChange:H=>{const z=parseFloat(H.target.value);isNaN(z)||h(T,3,Math.max(0,Math.min(5,z)).toFixed(1))},className:"w-20 h-8 text-xs"})]}),e.jsx(Ma,{value:[parseFloat(k[3])||1],onValueChange:H=>h(T,3,H[0].toFixed(1)),min:0,max:5,step:.1,className:"w-full"}),e.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[e.jsx("span",{children:"0 (不学习)"}),e.jsx("span",{children:"2.5"}),e.jsx("span",{children:"5.0 (快速学习)"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"影响学习频率,最短学习间隔 = 300/学习强度(秒)"})]})]})]},T)}),n.learning_list.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无学习规则,点击"添加规则"开始配置'})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达反思配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置麦麦主动向管理员询问表达方式是否合适的功能"})]}),e.jsx(Ve,{checked:n.reflect,onCheckedChange:k=>r({...n,reflect:k})})]}),n.reflect&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsx("span",{className:"text-sm font-medium",children:"反思操作员"})}),e.jsx("div",{className:"space-y-4",children:(()=>{const T=(n.reflect_operator_id||"").split(":"),E=T[0]||"qq",R=T[1]||"",K=T[2]||"private";return e.jsxs("div",{className:"grid gap-4 p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"平台"}),e.jsxs(He,{value:E,onValueChange:U=>{r({...n,reflect_operator_id:`${U}:${R}:${K}`})},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"qq",children:"QQ"}),e.jsx(ne,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"用户/群 ID"}),e.jsx(ce,{value:R,onChange:U=>{r({...n,reflect_operator_id:`${E}:${U.target.value}:${K}`})},placeholder:"输入 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"类型"}),e.jsxs(He,{value:K,onValueChange:U=>{r({...n,reflect_operator_id:`${E}:${R}:${U}`})},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"private",children:"私聊(private)"}),e.jsx(ne,{value:"group",children:"群组(group)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前操作员 ID:",n.reflect_operator_id||"(未设置)"]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦会向此操作员询问表达方式是否合适"})]})})()})]}),e.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-sm font-medium",children:"允许反思的聊天流"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"只有在此列表中的聊天流才会提出问题并跟踪。如果列表为空,则所有聊天流都可以进行表达反思"})]}),e.jsxs(y,{onClick:()=>{r({...n,allow_reflect:[...n.allow_reflect||[],"qq::group"]})},size:"sm",variant:"outline",children:[e.jsx(ot,{className:"h-4 w-4 mr-1"}),"添加聊天流"]})]}),e.jsxs("div",{className:"space-y-2",children:[(n.allow_reflect||[]).map((k,T)=>{const E=k.split(":"),R=E[0]||"qq",K=E[1]||"",U=E[2]||"group";return e.jsxs("div",{className:"flex items-center gap-2 p-3 rounded-lg bg-muted/50",children:[e.jsxs(He,{value:R,onValueChange:A=>{const Z=[...n.allow_reflect];Z[T]=`${A}:${K}:${U}`,r({...n,allow_reflect:Z})},children:[e.jsx(Re,{className:"w-24",children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"qq",children:"QQ"}),e.jsx(ne,{value:"wx",children:"微信"})]})]}),e.jsx(ce,{value:K,onChange:A=>{const Z=[...n.allow_reflect];Z[T]=`${R}:${A.target.value}:${U}`,r({...n,allow_reflect:Z})},placeholder:"ID",className:"flex-1 font-mono text-sm"}),e.jsxs(He,{value:U,onValueChange:A=>{const Z=[...n.allow_reflect];Z[T]=`${R}:${K}:${A}`,r({...n,allow_reflect:Z})},children:[e.jsx(Re,{className:"w-32",children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"group",children:"群组"}),e.jsx(ne,{value:"private",children:"私聊"})]})]}),e.jsx(y,{onClick:()=>{r({...n,allow_reflect:n.allow_reflect.filter((A,Z)=>Z!==T)})},size:"sm",variant:"ghost",children:e.jsx(es,{className:"h-4 w-4"})})]},T)}),(!n.allow_reflect||n.allow_reflect.length===0)&&e.jsx("div",{className:"text-center py-4 text-muted-foreground text-sm",children:"列表为空,所有聊天流都可以进行表达反思"})]})]})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达共享组配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置不同聊天流之间如何共享学到的表达方式"})]}),e.jsxs(y,{onClick:f,size:"sm",variant:"outline",children:[e.jsx(ot,{className:"h-4 w-4 mr-1"}),"添加共享组"]})]}),e.jsxs("div",{className:"space-y-4",children:[n.expression_groups.map((k,T)=>{const E=n.learning_list.map(R=>R[0]).filter(R=>R!=="");return e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["共享组 ",T+1,k.length===1&&k[0]==="*"&&"(全局共享)"]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(y,{onClick:()=>p(T),size:"sm",variant:"outline",children:e.jsx(ot,{className:"h-4 w-4"})}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(y,{size:"sm",variant:"ghost",children:e.jsx(es,{className:"h-4 w-4"})})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:["确定要删除共享组 ",T+1," 吗?此操作无法撤销。"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>j(T),children:"删除"})]})]})]})]})]}),e.jsx("div",{className:"space-y-2",children:k.map((R,K)=>e.jsx(sw,{member:R,groupIndex:T,memberIndex:K,availableChatIds:E,onUpdate:v,onRemove:w},`${T}-${K}`))}),e.jsx("p",{className:"text-xs text-muted-foreground",children:'提示:可以从下拉框选择已配置的聊天流,或手动输入。输入 "*" 启用全局共享'})]},T)}),n.expression_groups.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无共享组,点击"添加共享组"开始配置'})]})]})})]})}function aw({emojiConfig:n,memoryConfig:r,toolConfig:c,onEmojiChange:d,onMemoryChange:h,onToolChange:x}){return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"工具设置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"enable_tool",checked:c.enable_tool,onCheckedChange:f=>x({...c,enable_tool:f})}),e.jsx(b,{htmlFor:"enable_tool",className:"cursor-pointer",children:"启用工具系统"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"允许麦麦使用各种工具来增强功能"})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"记忆设置"}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_agent_iterations",children:"记忆思考深度"}),e.jsx(ce,{id:"max_agent_iterations",type:"number",min:"1",value:r.max_agent_iterations,onChange:f=>h({...r,max_agent_iterations:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"最低为 1(不深入思考)"})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"表情包设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"emoji_chance",children:"表情包激活概率"}),e.jsx(ce,{id:"emoji_chance",type:"number",step:"0.1",min:"0",max:"1",value:n.emoji_chance,onChange:f=>d({...n,emoji_chance:parseFloat(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"范围 0-1,越大越容易发送表情包"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_reg_num",children:"最大注册数量"}),e.jsx(ce,{id:"max_reg_num",type:"number",min:"1",value:n.max_reg_num,onChange:f=>d({...n,max_reg_num:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦最多可以注册的表情包数量"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),e.jsx(ce,{id:"check_interval",type:"number",min:"1",value:n.check_interval,onChange:f=>d({...n,check_interval:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包(注册、破损、删除)的时间间隔"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"do_replace",checked:n.do_replace,onCheckedChange:f=>d({...n,do_replace:f})}),e.jsx(b,{htmlFor:"do_replace",className:"cursor-pointer",children:"达到最大数量时替换表情包"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"steal_emoji",checked:n.steal_emoji,onCheckedChange:f=>d({...n,steal_emoji:f})}),e.jsx(b,{htmlFor:"steal_emoji",className:"cursor-pointer",children:"偷取表情包"})]}),e.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"允许麦麦将看到的表情包据为己有"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"content_filtration",checked:n.content_filtration,onCheckedChange:f=>d({...n,content_filtration:f})}),e.jsx(b,{htmlFor:"content_filtration",className:"cursor-pointer",children:"启用表情包过滤"})]}),n.content_filtration&&e.jsxs("div",{className:"grid gap-2 pl-6 border-l-2 border-primary/20",children:[e.jsx(b,{htmlFor:"filtration_prompt",children:"过滤要求"}),e.jsx(ce,{id:"filtration_prompt",value:n.filtration_prompt,onChange:f=>d({...n,filtration_prompt:f.target.value}),placeholder:"符合公序良俗"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"只有符合此要求的表情包才会被保存"})]})]})]})})]})}function lw({keywordReactionConfig:n,responsePostProcessConfig:r,chineseTypoConfig:c,responseSplitterConfig:d,onKeywordReactionChange:h,onResponsePostProcessChange:x,onChineseTypoChange:f,onResponseSplitterChange:j}){const p=()=>{h({...n,regex_rules:[...n.regex_rules,{regex:[""],reaction:""}]})},w=z=>{h({...n,regex_rules:n.regex_rules.filter((B,X)=>X!==z)})},v=(z,B,X)=>{const S=[...n.regex_rules];B==="regex"&&typeof X=="string"?S[z]={...S[z],regex:[X]}:B==="reaction"&&typeof X=="string"&&(S[z]={...S[z],reaction:X}),h({...n,regex_rules:S})},k=({regex:z,reaction:B,onRegexChange:X,onReactionChange:S})=>{const[O,te]=u.useState(!1),[he,Ne]=u.useState(""),[ye,pe]=u.useState(null),[je,_e]=u.useState(""),[N,G]=u.useState({}),[q,ie]=u.useState(""),_=u.useRef(null),[me,xe]=u.useState("build"),$=L=>L.replace(/\(\?P<([^>]+)>/g,"(?<$1>"),de=(L,F=0)=>{const D=_.current;if(!D)return;const ee=D.selectionStart||0,we=D.selectionEnd||0,ze=z.substring(0,ee)+L+z.substring(we);X(ze),setTimeout(()=>{const ss=ee+L.length+F;D.setSelectionRange(ss,ss),D.focus()},0)};u.useEffect(()=>{if(!z||!he){pe(null),G({}),ie(B),_e("");return}try{const L=$(z),F=new RegExp(L,"g"),D=he.match(F);pe(D),_e("");const we=new RegExp(L).exec(he);if(we&&we.groups){G(we.groups);let ze=B;Object.entries(we.groups).forEach(([ss,Ze])=>{ze=ze.replace(new RegExp(`\\[${ss}\\]`,"g"),Ze||"")}),ie(ze)}else G({}),ie(B)}catch(L){_e(L.message),pe(null),G({}),ie(B)}},[z,he,B]);const ge=()=>{if(!he||!ye||ye.length===0)return e.jsx("span",{className:"text-muted-foreground",children:he||"请输入测试文本"});try{const L=$(z),F=new RegExp(L,"g");let D=0;const ee=[];let we;for(;(we=F.exec(he))!==null;)we.index>D&&ee.push(e.jsx("span",{children:he.substring(D,we.index)},`text-${D}`)),ee.push(e.jsx("span",{className:"bg-yellow-200 dark:bg-yellow-900 font-semibold",children:we[0]},`match-${we.index}`)),D=we.index+we[0].length;return D)",desc:"Python风格命名捕获组",moveCursor:-1},{label:"非捕获组",pattern:"(?:)",desc:"分组但不保存匹配结果",moveCursor:-1}]},{category:"字符类",items:[{label:"字符集",pattern:"[]",desc:"匹配括号内的任意字符",moveCursor:-1},{label:"排除字符",pattern:"[^]",desc:"匹配不在括号内的字符",moveCursor:-1},{label:"范围",pattern:"[a-z]",desc:"匹配a到z的字符"},{label:"中文字符",pattern:"[\\u4e00-\\u9fa5]",desc:"匹配中文汉字"}]},{category:"常用模板",items:[{label:"捕获词语",pattern:"(?P\\S+)",desc:"捕获一个词语"},{label:"捕获句子",pattern:"(?P.+)",desc:"捕获整个句子"},{label:"捕获数字",pattern:"(?P\\d+)",desc:"捕获一个或多个数字"},{label:"可选词语",pattern:"(?:词语1|词语2)",desc:"匹配多个可选项之一"}]}];return e.jsxs(Rs,{open:O,onOpenChange:te,children:[e.jsx(ni,{asChild:!0,children:e.jsxs(y,{variant:"outline",size:"sm",children:[e.jsx(ao,{className:"h-4 w-4 mr-1"}),"正则编辑器"]})}),e.jsxs(zs,{className:"max-w-[95vw] sm:max-w-[900px] max-h-[90vh]",children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"正则表达式编辑器"}),e.jsx(Ys,{className:"text-sm",children:"使用可视化工具构建正则表达式,并实时测试效果"})]}),e.jsx(Pe,{className:"max-h-[calc(90vh-120px)]",children:e.jsxs(Kt,{value:me,onValueChange:L=>xe(L),className:"w-full",children:[e.jsxs(Rt,{className:"grid w-full grid-cols-2",children:[e.jsx($e,{value:"build",children:"🔧 构建器"}),e.jsx($e,{value:"test",children:"🧪 测试器"})]}),e.jsxs(We,{value:"build",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"正则表达式"}),e.jsx(ce,{ref:_,value:z,onChange:L=>X(L.target.value),className:"font-mono text-sm",placeholder:"点击下方按钮构建正则表达式..."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"Reaction 内容"}),e.jsx(Bs,{value:B,onChange:L=>S(L.target.value),placeholder:"使用 [捕获组名] 引用捕获的内容...",rows:3,className:"text-sm"})]}),e.jsxs("div",{className:"space-y-4 border-t pt-4",children:[le.map(L=>e.jsxs("div",{className:"space-y-2",children:[e.jsx("h5",{className:"text-xs font-semibold text-primary",children:L.category}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:L.items.map(F=>e.jsx(y,{variant:"outline",size:"sm",className:"justify-start h-auto py-2 px-3",onClick:()=>de(F.pattern,F.moveCursor||0),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsxs("div",{className:"flex items-center gap-2 w-full",children:[e.jsx("span",{className:"text-xs font-medium",children:F.label}),e.jsx("code",{className:"ml-auto text-xs bg-muted px-1.5 py-0.5 rounded font-mono",children:F.pattern})]}),e.jsx("span",{className:"text-xs text-muted-foreground mt-0.5",children:F.desc})]})},F.label))})]},L.category)),e.jsxs("div",{className:"space-y-2 border-t pt-4",children:[e.jsx("h5",{className:"text-xs font-semibold text-primary",children:"完整示例模板"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>X("^(?P\\S{1,20})是这样的$"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsxs("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:["^(?P\\S","{1,20}",")是这样的$"]}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「某事物是这样的」并捕获事物名称"})]})}),e.jsx(y,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>X("(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「我没要求你做某事」并捕获具体行为"})]})}),e.jsx(y,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>X("(?P.+?)(?:是|为什么|怎么)"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?P.+?)(?:是|为什么|怎么)"}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"捕获问题主题词"})]})})]})]})]}),e.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 使用提示"}),e.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"点击输入框设置光标位置,然后点击按钮插入模式"}),e.jsxs("li",{children:["命名捕获组格式:",e.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"(?P<名称>模式)"})]}),e.jsxs("li",{children:["在 reaction 中使用 ",e.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"[名称]"})," 引用捕获的内容"]}),e.jsx("li",{children:"切换到测试器标签页验证正则表达式效果"})]})]})]}),e.jsxs(We,{value:"test",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"当前正则表达式"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:z||"(未设置)"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"test-text",className:"text-sm font-medium",children:"测试文本"}),e.jsx(Bs,{id:"test-text",value:he,onChange:L=>Ne(L.target.value),placeholder:`在此输入要测试的文本... +例如:打游戏是这样的`,className:"min-h-[100px] text-sm"})]}),je&&e.jsxs("div",{className:"rounded-md bg-destructive/10 border border-destructive/20 p-3",children:[e.jsx("p",{className:"text-sm text-destructive font-medium",children:"正则表达式错误"}),e.jsx("p",{className:"text-xs text-destructive/80 mt-1",children:je})]}),!je&&he&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"flex items-center gap-2",children:ye&&ye.length>0?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-green-500"}),e.jsxs("span",{className:"text-sm font-medium text-green-600 dark:text-green-400",children:["匹配成功 (",ye.length," 处)"]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-gray-400"}),e.jsx("span",{className:"text-sm font-medium text-muted-foreground",children:"无匹配"})]})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"匹配高亮"}),e.jsx(Pe,{className:"h-40 rounded-md bg-muted p-3",children:e.jsx("div",{className:"text-sm break-words",children:ge()})})]}),Object.keys(N).length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"命名捕获组"}),e.jsx(Pe,{className:"h-32 rounded-md border p-3",children:e.jsx("div",{className:"space-y-2",children:Object.entries(N).map(([L,F])=>e.jsxs("div",{className:"flex items-start gap-2 text-sm",children:[e.jsxs("span",{className:"font-mono font-semibold text-primary min-w-[80px]",children:["[",L,"]"]}),e.jsx("span",{className:"text-muted-foreground",children:"="}),e.jsx("span",{className:"font-mono bg-muted px-2 py-0.5 rounded",children:F})]},L))})})]}),Object.keys(N).length>0&&B&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"Reaction 替换预览"}),e.jsx(Pe,{className:"h-48 rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3",children:e.jsx("div",{className:"text-sm break-words",children:q})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"reaction 中的 [name] 已被替换为对应的捕获组值"})]})]}),e.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 测试说明"}),e.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"匹配的文本会以黄色背景高亮显示"}),e.jsx("li",{children:"命名捕获组的值会显示在下方列表中"}),e.jsx("li",{children:"Reaction 替换预览显示最终生成的反应内容"}),e.jsx("li",{children:"如需修改正则,切换回构建器标签页"})]})]})]})]})})]})]})},T=()=>{h({...n,keyword_rules:[...n.keyword_rules,{keywords:[],reaction:""}]})},E=z=>{h({...n,keyword_rules:n.keyword_rules.filter((B,X)=>X!==z)})},R=(z,B,X)=>{const S=[...n.keyword_rules];typeof X=="string"&&(S[z]={...S[z],reaction:X}),h({...n,keyword_rules:S})},K=z=>{const B=[...n.keyword_rules];B[z]={...B[z],keywords:[...B[z].keywords||[],""]},h({...n,keyword_rules:B})},U=(z,B)=>{const X=[...n.keyword_rules];X[z]={...X[z],keywords:(X[z].keywords||[]).filter((S,O)=>O!==B)},h({...n,keyword_rules:X})},A=(z,B,X)=>{const S=[...n.keyword_rules],O=[...S[z].keywords||[]];O[B]=X,S[z]={...S[z],keywords:O},h({...n,keyword_rules:S})},Z=({rule:z})=>{const B=`{ regex = [${(z.regex||[]).map(X=>`"${X}"`).join(", ")}], reaction = "${z.reaction}" }`;return e.jsxs(Oa,{children:[e.jsx(Ra,{asChild:!0,children:e.jsxs(y,{variant:"outline",size:"sm",children:[e.jsx(Zt,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(wa,{className:"w-[95vw] sm:w-[500px]",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx(Pe,{className:"h-60 rounded-md bg-muted p-3",children:e.jsx("pre",{className:"font-mono text-xs break-all",children:B})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},H=({rule:z})=>{const B=`[[keyword_reaction.keyword_rules]] +keywords = [${(z.keywords||[]).map(X=>`"${X}"`).join(", ")}] +reaction = "${z.reaction}"`;return e.jsxs(Oa,{children:[e.jsx(Ra,{asChild:!0,children:e.jsxs(y,{variant:"outline",size:"sm",children:[e.jsx(Zt,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(wa,{className:"w-[95vw] sm:w-[500px]",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx(Pe,{className:"h-60 rounded-md bg-muted p-3",children:e.jsx("pre",{className:"font-mono text-xs whitespace-pre-wrap break-all",children:B})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"关键词反应配置"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"配置触发特定反应的关键词和正则表达式规则"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"正则表达式规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用正则表达式匹配消息内容"})]}),e.jsxs(y,{onClick:p,size:"sm",variant:"outline",children:[e.jsx(ot,{className:"h-4 w-4 mr-1"}),"添加正则规则"]})]}),e.jsxs("div",{className:"space-y-3",children:[n.regex_rules.map((z,B)=>e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["正则规则 ",B+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{regex:z.regex&&z.regex[0]||"",reaction:z.reaction,onRegexChange:X=>v(B,"regex",X),onReactionChange:X=>v(B,"reaction",X)}),e.jsx(Z,{rule:z}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(y,{size:"sm",variant:"ghost",children:e.jsx(es,{className:"h-4 w-4"})})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:["确定要删除正则规则 ",B+1," 吗?此操作无法撤销。"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>w(B),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"正则表达式(Python 语法)"}),e.jsx(ce,{value:z.regex&&z.regex[0]||"",onChange:X=>v(B,"regex",X.target.value),placeholder:"例如:^(?P\\\\S{1,20})是这样的$ (点击正则编辑器按钮可视化构建)",className:"font-mono text-sm"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:'支持命名捕获组 (?Ppattern),可在 reaction 中使用 [name] 引用。点击"正则编辑器"可视化构建和测试!'})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"反应内容"}),e.jsx(Bs,{value:z.reaction,onChange:X=>v(B,"reaction",X.target.value),placeholder:`触发后麦麦的反应... +可以使用 [捕获组名] 来引用正则表达式中的内容`,rows:3,className:"text-sm"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"使用 [捕获组名] 引用正则表达式中的命名捕获组,例如 [n] 会被替换为捕获的内容"})]})]})]},B)),n.regex_rules.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无正则规则,点击"添加正则规则"开始配置'})]})]}),e.jsxs("div",{className:"space-y-4 border-t pt-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"关键词规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用关键词列表匹配消息内容"})]}),e.jsxs(y,{onClick:T,size:"sm",variant:"outline",children:[e.jsx(ot,{className:"h-4 w-4 mr-1"}),"添加关键词规则"]})]}),e.jsxs("div",{className:"space-y-3",children:[n.keyword_rules.map((z,B)=>e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["关键词规则 ",B+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(H,{rule:z}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(y,{size:"sm",variant:"ghost",children:e.jsx(es,{className:"h-4 w-4"})})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:["确定要删除关键词规则 ",B+1," 吗?此操作无法撤销。"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>E(B),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-xs font-medium",children:"关键词列表"}),e.jsxs(y,{onClick:()=>K(B),size:"sm",variant:"ghost",children:[e.jsx(ot,{className:"h-3 w-3 mr-1"}),"添加关键词"]})]}),e.jsxs("div",{className:"space-y-2",children:[(z.keywords||[]).map((X,S)=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{value:X,onChange:O=>A(B,S,O.target.value),placeholder:"关键词",className:"flex-1"}),e.jsx(y,{onClick:()=>U(B,S),size:"sm",variant:"ghost",children:e.jsx(es,{className:"h-4 w-4"})})]},S)),(!z.keywords||z.keywords.length===0)&&e.jsx("p",{className:"text-xs text-muted-foreground text-center py-2",children:'暂无关键词,点击"添加关键词"开始配置'})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"反应内容"}),e.jsx(Bs,{value:z.reaction,onChange:X=>R(B,"reaction",X.target.value),placeholder:"触发后麦麦的反应...",rows:3,className:"text-sm"})]})]})]},B)),n.keyword_rules.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无关键词规则,点击"添加关键词规则"开始配置'})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"回复后处理配置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"enable_response_post_process",checked:r.enable_response_post_process,onCheckedChange:z=>x({...r,enable_response_post_process:z})}),e.jsx(b,{htmlFor:"enable_response_post_process",className:"cursor-pointer",children:"启用回复后处理"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"包括错别字生成器和回复分割器"})]}),r.enable_response_post_process&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"border-t pt-6 space-y-4",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[e.jsx(Ve,{id:"enable_chinese_typo",checked:c.enable,onCheckedChange:z=>f({...c,enable:z})}),e.jsx(b,{htmlFor:"enable_chinese_typo",className:"cursor-pointer font-semibold",children:"中文错别字生成器"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"为回复添加随机错别字,让麦麦的回复更自然"}),c.enable&&e.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"error_rate",className:"text-xs font-medium",children:"单字替换概率"}),e.jsx(ce,{id:"error_rate",type:"number",step:"0.001",min:"0",max:"1",value:c.error_rate,onChange:z=>f({...c,error_rate:parseFloat(z.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"min_freq",className:"text-xs font-medium",children:"最小字频阈值"}),e.jsx(ce,{id:"min_freq",type:"number",min:"0",value:c.min_freq,onChange:z=>f({...c,min_freq:parseInt(z.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"tone_error_rate",className:"text-xs font-medium",children:"声调错误概率"}),e.jsx(ce,{id:"tone_error_rate",type:"number",step:"0.01",min:"0",max:"1",value:c.tone_error_rate,onChange:z=>f({...c,tone_error_rate:parseFloat(z.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"word_replace_rate",className:"text-xs font-medium",children:"整词替换概率"}),e.jsx(ce,{id:"word_replace_rate",type:"number",step:"0.001",min:"0",max:"1",value:c.word_replace_rate,onChange:z=>f({...c,word_replace_rate:parseFloat(z.target.value)})})]})]})]})}),e.jsx("div",{className:"border-t pt-6 space-y-4",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[e.jsx(Ve,{id:"enable_response_splitter",checked:d.enable,onCheckedChange:z=>j({...d,enable:z})}),e.jsx(b,{htmlFor:"enable_response_splitter",className:"cursor-pointer font-semibold",children:"回复分割器"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"控制回复的长度和句子数量"}),d.enable&&e.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_length",className:"text-xs font-medium",children:"最大长度"}),e.jsx(ce,{id:"max_length",type:"number",min:"1",value:d.max_length,onChange:z=>j({...d,max_length:parseInt(z.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大字符数"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_sentence_num",className:"text-xs font-medium",children:"最大句子数"}),e.jsx(ce,{id:"max_sentence_num",type:"number",min:"1",value:d.max_sentence_num,onChange:z=>j({...d,max_sentence_num:parseInt(z.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大句子数量"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"enable_kaomoji_protection",checked:d.enable_kaomoji_protection,onCheckedChange:z=>j({...d,enable_kaomoji_protection:z})}),e.jsx(b,{htmlFor:"enable_kaomoji_protection",className:"cursor-pointer",children:"启用颜文字保护"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"enable_overflow_return_all",checked:d.enable_overflow_return_all,onCheckedChange:z=>j({...d,enable_overflow_return_all:z})}),e.jsx(b,{htmlFor:"enable_overflow_return_all",className:"cursor-pointer",children:"超出时一次性返回全部"})]}),e.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"当句子数量超出限制时,合并后一次性返回所有内容"})]})]})})]})]})]})}function nw({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"情绪设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{checked:n.enable_mood,onCheckedChange:c=>r({...n,enable_mood:c})}),e.jsx(b,{className:"cursor-pointer",children:"启用情绪系统"})]}),n.enable_mood&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"情绪更新阈值"}),e.jsx(ce,{type:"number",min:"1",value:n.mood_update_threshold,onChange:c=>r({...n,mood_update_threshold:parseInt(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"越高,更新越慢"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"情感特征"}),e.jsx(Bs,{value:n.emotion_style,onChange:c=>r({...n,emotion_style:c.target.value}),placeholder:"影响情绪的变化情况",rows:2})]})]})]})]})}function iw({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"语音设置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{checked:n.enable_asr,onCheckedChange:c=>r({...n,enable_asr:c})}),e.jsx(b,{className:"cursor-pointer",children:"启用语音识别"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"启用后麦麦可以识别语音消息,需要配置语音识别模型"})]})}function rw({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{checked:n.enable,onCheckedChange:c=>r({...n,enable:c})}),e.jsx(b,{className:"cursor-pointer",children:"启用 LPMM 知识库"})]}),n.enable&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"LPMM 模式"}),e.jsxs(He,{value:n.lpmm_mode,onValueChange:c=>r({...n,lpmm_mode:c}),children:[e.jsx(Re,{children:e.jsx(qe,{placeholder:"选择 LPMM 模式"})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"classic",children:"经典模式"}),e.jsx(ne,{value:"agent",children:"Agent 模式"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"同义词搜索 TopK"}),e.jsx(ce,{type:"number",min:"1",value:n.rag_synonym_search_top_k,onChange:c=>r({...n,rag_synonym_search_top_k:parseInt(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"同义词阈值"}),e.jsx(ce,{type:"number",step:"0.1",min:"0",max:"1",value:n.rag_synonym_threshold,onChange:c=>r({...n,rag_synonym_threshold:parseFloat(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"实体提取线程数"}),e.jsx(ce,{type:"number",min:"1",value:n.info_extraction_workers,onChange:c=>r({...n,info_extraction_workers:parseInt(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"嵌入向量维度"}),e.jsx(ce,{type:"number",min:"1",value:n.embedding_dimension,onChange:c=>r({...n,embedding_dimension:parseInt(c.target.value)})})]})]})]})]})]})}function cw({config:n,onChange:r}){const[c,d]=u.useState(""),[h,x]=u.useState("WARNING"),f=()=>{c&&!n.suppress_libraries.includes(c)&&(r({...n,suppress_libraries:[...n.suppress_libraries,c]}),d(""))},j=E=>{r({...n,suppress_libraries:n.suppress_libraries.filter(R=>R!==E)})},p=()=>{c&&!n.library_log_levels[c]&&(r({...n,library_log_levels:{...n.library_log_levels,[c]:h}}),d(""),x("WARNING"))},w=E=>{const R={...n.library_log_levels};delete R[E],r({...n,library_log_levels:R})},v=["DEBUG","INFO","WARNING","ERROR","CRITICAL"],k=["FULL","compact","lite"],T=["none","title","full"];return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"日志配置"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"日期格式"}),e.jsx(ce,{value:n.date_style,onChange:E=>r({...n,date_style:E.target.value}),placeholder:"例如: m-d H:i:s"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"m=月, d=日, H=时, i=分, s=秒"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"日志级别样式"}),e.jsxs(He,{value:n.log_level_style,onValueChange:E=>r({...n,log_level_style:E}),children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsx(Le,{children:k.map(E=>e.jsx(ne,{value:E,children:E},E))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"日志文本颜色"}),e.jsxs(He,{value:n.color_text,onValueChange:E=>r({...n,color_text:E}),children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsx(Le,{children:T.map(E=>e.jsx(ne,{value:E,children:E},E))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"全局日志级别"}),e.jsxs(He,{value:n.log_level,onValueChange:E=>r({...n,log_level:E}),children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsx(Le,{children:v.map(E=>e.jsx(ne,{value:E,children:E},E))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"控制台日志级别"}),e.jsxs(He,{value:n.console_log_level,onValueChange:E=>r({...n,console_log_level:E}),children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsx(Le,{children:v.map(E=>e.jsx(ne,{value:E,children:E},E))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"文件日志级别"}),e.jsxs(He,{value:n.file_log_level,onValueChange:E=>r({...n,file_log_level:E}),children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsx(Le,{children:v.map(E=>e.jsx(ne,{value:E,children:E},E))})]})]})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"mb-2 block",children:"完全屏蔽的库"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(ce,{value:c,onChange:E=>d(E.target.value),placeholder:"输入库名",className:"flex-1",onKeyDown:E=>{E.key==="Enter"&&(E.preventDefault(),f())}}),e.jsx(y,{onClick:f,size:"sm",className:"flex-shrink-0",children:e.jsx(ot,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:n.suppress_libraries.map(E=>e.jsxs("div",{className:"flex items-center gap-1 bg-secondary px-3 py-1 rounded-md",children:[e.jsx("span",{className:"text-sm",children:E}),e.jsx(y,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0",onClick:()=>j(E),children:e.jsx(es,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},E))})]}),e.jsxs("div",{children:[e.jsx(b,{className:"mb-2 block",children:"特定库的日志级别"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(ce,{value:c,onChange:E=>d(E.target.value),placeholder:"输入库名",className:"flex-1"}),e.jsxs(He,{value:h,onValueChange:x,children:[e.jsx(Re,{className:"w-32",children:e.jsx(qe,{})}),e.jsx(Le,{children:v.map(E=>e.jsx(ne,{value:E,children:E},E))})]}),e.jsx(y,{onClick:p,size:"sm",children:e.jsx(ot,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"space-y-2",children:Object.entries(n.library_log_levels).map(([E,R])=>e.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[e.jsx("span",{className:"text-sm font-medium",children:E}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:R}),e.jsx(y,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>w(E),children:e.jsx(es,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]})]},E))})]})]})}function ow({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"调试配置"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否在日志中显示提示词"})]}),e.jsx(Ve,{checked:n.show_prompt,onCheckedChange:c=>r({...n,show_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示回复器 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的提示词"})]}),e.jsx(Ve,{checked:n.show_replyer_prompt,onCheckedChange:c=>r({...n,show_replyer_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示回复器推理"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的推理过程"})]}),e.jsx(Ve,{checked:n.show_replyer_reasoning,onCheckedChange:c=>r({...n,show_replyer_reasoning:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示 Jargon Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示术语相关的提示词"})]}),e.jsx(Ve,{checked:n.show_jargon_prompt,onCheckedChange:c=>r({...n,show_jargon_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示记忆检索 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示记忆检索相关的提示词"})]}),e.jsx(Ve,{checked:n.show_memory_prompt,onCheckedChange:c=>r({...n,show_memory_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示 Planner Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 Planner 的提示词和原始返回结果"})]}),e.jsx(Ve,{checked:n.show_planner_prompt,onCheckedChange:c=>r({...n,show_planner_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示 LPMM 相关文段"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 LPMM 知识库找到的相关文段日志"})]}),e.jsx(Ve,{checked:n.show_lpmm_paragraph,onCheckedChange:c=>r({...n,show_lpmm_paragraph:c})})]})]})]})}function dw({config:n,onChange:r}){const[c,d]=u.useState(""),h=()=>{c&&!n.auth_token.includes(c)&&(r({...n,auth_token:[...n.auth_token,c]}),d(""))},x=f=>{r({...n,auth_token:n.auth_token.filter((j,p)=>p!==f)})};return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"MaimMessage 服务配置"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"启用自定义服务器"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否使用自定义的 MaimMessage 服务器"})]}),e.jsx(Ve,{checked:n.use_custom,onCheckedChange:f=>r({...n,use_custom:f})})]}),n.use_custom&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"主机地址"}),e.jsx(ce,{value:n.host,onChange:f=>r({...n,host:f.target.value}),placeholder:"127.0.0.1"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"端口号"}),e.jsx(ce,{type:"number",value:n.port,onChange:f=>r({...n,port:parseInt(f.target.value)}),placeholder:"8090"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"连接模式"}),e.jsxs(He,{value:n.mode,onValueChange:f=>r({...n,mode:f}),children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"ws",children:"WebSocket (ws)"}),e.jsx(ne,{value:"tcp",children:"TCP"})]})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{checked:n.use_wss,onCheckedChange:f=>r({...n,use_wss:f}),disabled:n.mode!=="ws"}),e.jsx(b,{children:"使用 WSS 安全连接"})]})]}),n.use_wss&&n.mode==="ws"&&e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"SSL 证书文件路径"}),e.jsx(ce,{value:n.cert_file,onChange:f=>r({...n,cert_file:f.target.value}),placeholder:"cert.pem"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"SSL 密钥文件路径"}),e.jsx(ce,{value:n.key_file,onChange:f=>r({...n,key_file:f.target.value}),placeholder:"key.pem"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"mb-2 block",children:"认证令牌"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:"用于 API 验证,为空则不启用验证"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(ce,{value:c,onChange:f=>d(f.target.value),placeholder:"输入认证令牌",onKeyDown:f=>{f.key==="Enter"&&(f.preventDefault(),h())}}),e.jsx(y,{onClick:h,size:"sm",children:e.jsx(ot,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"space-y-2",children:n.auth_token.map((f,j)=>e.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[e.jsx("span",{className:"text-sm font-mono",children:f}),e.jsx(y,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>x(j),children:e.jsx(es,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},j))})]})]})}function uw({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"统计信息"}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"启用统计信息发送"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"发送匿名统计信息,帮助我们了解全球有多少只麦麦在运行"})]}),e.jsx(Ve,{checked:n.enable,onCheckedChange:c=>r({...n,enable:c})})]})]})}const ii=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{className:"relative w-full overflow-auto",children:e.jsx("table",{ref:c,className:Q("w-full caption-bottom text-sm",n),...r})}));ii.displayName="Table";const ri=u.forwardRef(({className:n,...r},c)=>e.jsx("thead",{ref:c,className:Q("[&_tr]:border-b",n),...r}));ri.displayName="TableHeader";const ci=u.forwardRef(({className:n,...r},c)=>e.jsx("tbody",{ref:c,className:Q("[&_tr:last-child]:border-0",n),...r}));ci.displayName="TableBody";const mw=u.forwardRef(({className:n,...r},c)=>e.jsx("tfoot",{ref:c,className:Q("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",n),...r}));mw.displayName="TableFooter";const gt=u.forwardRef(({className:n,...r},c)=>e.jsx("tr",{ref:c,className:Q("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",n),...r}));gt.displayName="TableRow";const ls=u.forwardRef(({className:n,...r},c)=>e.jsx("th",{ref:c,className:Q("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",n),...r}));ls.displayName="TableHead";const Qe=u.forwardRef(({className:n,...r},c)=>e.jsx("td",{ref:c,className:Q("px-4 py-3 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",n),...r}));Qe.displayName="TableCell";const hw=u.forwardRef(({className:n,...r},c)=>e.jsx("caption",{ref:c,className:Q("mt-4 text-sm text-muted-foreground",n),...r}));hw.displayName="TableCaption";const oo=u.forwardRef(({className:n,...r},c)=>e.jsx(Lt,{ref:c,className:Q("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",n),...r}));oo.displayName=Lt.displayName;const uo=u.forwardRef(({className:n,...r},c)=>e.jsxs("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[e.jsx(_t,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),e.jsx(Lt.Input,{ref:c,className:Q("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",n),...r})]}));uo.displayName=Lt.Input.displayName;const mo=u.forwardRef(({className:n,...r},c)=>e.jsx(Lt.List,{ref:c,className:Q("max-h-[300px] overflow-y-auto overflow-x-hidden",n),...r}));mo.displayName=Lt.List.displayName;const ho=u.forwardRef((n,r)=>e.jsx(Lt.Empty,{ref:r,className:"py-6 text-center text-sm",...n}));ho.displayName=Lt.Empty.displayName;const vr=u.forwardRef(({className:n,...r},c)=>e.jsx(Lt.Group,{ref:c,className:Q("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",n),...r}));vr.displayName=Lt.Group.displayName;const xw=u.forwardRef(({className:n,...r},c)=>e.jsx(Lt.Separator,{ref:c,className:Q("-mx-1 h-px bg-border",n),...r}));xw.displayName=Lt.Separator.displayName;const yr=u.forwardRef(({className:n,...r},c)=>e.jsx(Lt.Item,{ref:c,className:Q("relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",n),...r}));yr.displayName=Lt.Item.displayName;const yt=u.forwardRef(({className:n,...r},c)=>e.jsx(og,{ref:c,className:Q("grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",n),...r,children:e.jsx(pN,{className:Q("grid place-content-center text-current"),children:e.jsx(fa,{className:"h-4 w-4"})})}));yt.displayName=og.displayName;const Bg=u.createContext(null),Hg="maibot-completed-tours";function fw(){try{const n=localStorage.getItem(Hg);return n?new Set(JSON.parse(n)):new Set}catch{return new Set}}function dp(n){localStorage.setItem(Hg,JSON.stringify([...n]))}function pw({children:n}){const[r,c]=u.useState({activeTourId:null,stepIndex:0,isRunning:!1}),d=u.useRef(new Map),[,h]=u.useState(0),[x,f]=u.useState(fw),j=u.useCallback((H,z)=>{d.current.set(H,z),h(B=>B+1)},[]),p=u.useCallback(H=>{d.current.delete(H),c(z=>z.activeTourId===H?{...z,activeTourId:null,isRunning:!1,stepIndex:0}:z)},[]),w=u.useCallback((H,z=0)=>{d.current.has(H)&&c({activeTourId:H,stepIndex:z,isRunning:!0})},[]),v=u.useCallback(()=>{c(H=>({...H,isRunning:!1}))},[]),k=u.useCallback(H=>{c(z=>({...z,stepIndex:H}))},[]),T=u.useCallback(()=>{c(H=>({...H,stepIndex:H.stepIndex+1}))},[]),E=u.useCallback(()=>{c(H=>({...H,stepIndex:Math.max(0,H.stepIndex-1)}))},[]),R=u.useCallback(()=>r.activeTourId?d.current.get(r.activeTourId)||[]:[],[r.activeTourId]),K=u.useCallback(H=>{f(z=>{const B=new Set(z);return B.add(H),dp(B),B})},[]),U=u.useCallback(H=>{const{action:z,index:B,status:X,type:S}=H,O=["finished","skipped"];if(z==="close"){c(te=>({...te,isRunning:!1,stepIndex:0}));return}O.includes(X)?c(te=>(X==="finished"&&te.activeTourId&&setTimeout(()=>K(te.activeTourId),0),{...te,isRunning:!1,stepIndex:0})):S==="step:after"&&(z==="next"?c(te=>({...te,stepIndex:B+1})):z==="prev"&&c(te=>({...te,stepIndex:B-1})))},[K]),A=u.useCallback(H=>x.has(H),[x]),Z=u.useCallback(H=>{f(z=>{const B=new Set(z);return B.delete(H),dp(B),B})},[]);return e.jsx(Bg.Provider,{value:{state:r,tours:d.current,registerTour:j,unregisterTour:p,startTour:w,stopTour:v,goToStep:k,nextStep:T,prevStep:E,getCurrentSteps:R,handleJoyrideCallback:U,isTourCompleted:A,markTourCompleted:K,resetTourCompleted:Z},children:n})}function Pu(){const n=u.useContext(Bg);if(!n)throw new Error("useTour must be used within a TourProvider");return n}const gw={options:{zIndex:1e4,primaryColor:"hsl(var(--primary))",textColor:"hsl(var(--foreground))",backgroundColor:"hsl(var(--background))",arrowColor:"hsl(var(--background))",overlayColor:"rgba(0, 0, 0, 0.5)"},tooltip:{borderRadius:"var(--radius)",padding:"1rem"},tooltipContainer:{textAlign:"left"},tooltipTitle:{fontSize:"1rem",fontWeight:600,marginBottom:"0.5rem"},tooltipContent:{fontSize:"0.875rem",padding:"0.5rem 0"},buttonNext:{backgroundColor:"hsl(var(--primary))",color:"hsl(var(--primary-foreground))",borderRadius:"calc(var(--radius) - 2px)",fontSize:"0.875rem",padding:"0.5rem 1rem"},buttonBack:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem",marginRight:"0.5rem"},buttonSkip:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem"},buttonClose:{color:"hsl(var(--muted-foreground))"},spotlight:{borderRadius:"var(--radius)"}},jw={back:"上一步",close:"关闭",last:"完成",next:"下一步",nextLabelWithProgress:"下一步 ({step}/{steps})",open:"打开对话框",skip:"跳过"};function vw(){const{state:n,getCurrentSteps:r,handleJoyrideCallback:c}=Pu(),d=r(),[h,x]=u.useState(!1),f=u.useRef(n.stepIndex),j=u.useRef(null);u.useEffect(()=>{f.current!==n.stepIndex&&(x(!1),f.current=n.stepIndex)},[n.stepIndex]),u.useEffect(()=>{if(!n.isRunning||d.length===0){x(!1);return}const v=d[n.stepIndex];if(!v){x(!1);return}const k=v.target;if(k==="body"){x(!0);return}x(!1);const T=setTimeout(()=>{const E=()=>{const A=document.querySelector(k);if(A){const Z=A.getBoundingClientRect();if(Z.width>0&&Z.height>0)return!0}return!1};if(E()){setTimeout(()=>x(!0),100);return}const R=setInterval(()=>{E()&&(clearInterval(R),setTimeout(()=>x(!0),100))},100),K=setTimeout(()=>{clearInterval(R),x(!0)},5e3),U=()=>{clearInterval(R),clearTimeout(K)};j.current=U},150);return()=>{clearTimeout(T),j.current&&(j.current(),j.current=null)}},[n.isRunning,n.stepIndex,d]);const p=u.useRef(null);if(u.useEffect(()=>{let v=document.getElementById("tour-portal-container");return v||(v=document.createElement("div"),v.id="tour-portal-container",v.style.cssText="position: fixed; top: 0; left: 0; z-index: 99999; pointer-events: none;",document.body.appendChild(v)),p.current=v,()=>{}},[]),!n.isRunning||d.length===0||!h)return null;const w=e.jsx(rb,{steps:d,stepIndex:n.stepIndex,run:n.isRunning,continuous:!0,showSkipButton:!0,showProgress:!0,disableOverlayClose:!0,disableScrolling:!1,disableScrollParentFix:!1,callback:c,styles:gw,locale:jw,scrollOffset:80,scrollToFirstStep:!0,floaterProps:{styles:{floater:{zIndex:99999}},disableAnimation:!0}},`tour-step-${n.stepIndex}`);return p.current?fy.createPortal(w,p.current):w}const ll="model-assignment-tour",qg=[{target:"body",content:"本引导旨在帮助你配置模型提供商和对应的模型,并为麦麦的各个组件分配合适的模型。",placement:"center",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="sidebar-model-provider"]',content:'第一步,你需要配置模型提供商。模型提供商决定了你要使用谁家的模型,无论是单一厂商(如 DeepSeek),还是模型平台(如 Siliconflow),都可以在这里进行配置。点击"下一步"进入配置页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-provider-button"]',content:'点击"添加提供商"按钮,开始配置你的模型提供商。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="provider-dialog"]',content:"在这里,你可以选择你想要配置的模型提供商,填写相关信息后保存即可。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-name-input"]',content:"这里的名称是你为这个模型提供商起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-apikey-input"]',content:"这里需要填写你从模型提供商那里获取的 API 密钥,用于验证和调用模型服务。对于不同的提供商,获取 API 密钥的方式可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-url-input"]',content:"这里需要填写模型提供商的 API 访问地址,确保填写正确以便系统能够连接到模型服务。对于不同的提供商,API 地址可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-template-select"]',content:"当然,如果你不知道如何填写这些信息,很多模型提供商在这里都提供了预设的模板供你选择,选择对应的模板后,相关信息会自动填充。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-save-button"]',content:"填写完所有信息后,点击保存按钮,模型提供商就配置完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-cancel-button"]',content:"因为这次咱们什么都没有填写,所以点击取消按钮退出吧。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="sidebar-model-management"]',content:'配置好模型提供商后,接下来我们需要为麦麦添加模型并分配功能。点击"下一步"进入模型管理页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-model-button"]',content:'在为麦麦的组件分配模型之前,首先需要添加你想要分配的模型,点击"添加模型"按钮开始添加。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="model-dialog"]',content:"在这里,你可以选择你之前配置好的模型提供商,然后选择对应的模型来添加。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-name-input"]',content:"这里的模型名称是你为这个模型起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-provider-select"]',content:"在这里选择你之前配置好的模型提供商,这样系统才能知道你要添加哪个提供商的模型。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-identifier-input"]',content:"这里需要填写你想要添加的模型的标识符,不同的模型提供商可能有不同的标识符格式,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-save-button"]',content:"填写完所有信息后,点击保存按钮,模型就添加完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-cancel-button"]',content:"当然,因为这次咱们什么都没有填写,所以直接点击取消按钮退出吧,等你准备好了再来添加模型。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="tasks-tab-trigger"]',content:'最后一步,添加好模型后,切换到"为模型分配功能"标签页,为麦麦的各个组件分配合适的模型。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="task-model-select"]',content:"在这里,你可以为每个组件选择一个或多个合适的模型,选择完成后配置会自动保存。恭喜你完成了模型配置的学习!",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1}],Gg={0:"/config/model",1:"/config/model",2:"/config/modelProvider",3:"/config/modelProvider",4:"/config/modelProvider",5:"/config/modelProvider",6:"/config/modelProvider",7:"/config/modelProvider",8:"/config/modelProvider",9:"/config/modelProvider",10:"/config/modelProvider",11:"/config/model",12:"/config/model",13:"/config/model",14:"/config/model",15:"/config/model",16:"/config/model",17:"/config/model",18:"/config/model",19:"/config/model"},rr=[{id:"siliconflow",name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",client_type:"openai",display_name:"硅基流动 (SiliconFlow)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"deepseek",name:"DeepSeek",base_url:"https://api.deepseek.com",client_type:"openai",display_name:"DeepSeek",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"rinkoai",name:"RinkoAI",base_url:"https://rinkoai.com/v1",client_type:"openai",display_name:"RinkoAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"zhipu",name:"ZhipuAI",base_url:"https://open.bigmodel.cn/api/paas/v4",client_type:"openai",display_name:"智谱 AI (ZhipuAI / GLM)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"moonshot",name:"Moonshot",base_url:"https://api.moonshot.cn/v1",client_type:"openai",display_name:"月之暗面 (Moonshot / Kimi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"doubao",name:"Doubao",base_url:"https://ark.cn-beijing.volces.com/api/v3",client_type:"openai",display_name:"字节豆包 (Doubao)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"alibaba",name:"Alibaba",base_url:"https://dashscope.aliyuncs.com/compatible-mode/v1",client_type:"openai",display_name:"阿里云百炼 (Alibaba Qwen)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"baichuan",name:"Baichuan",base_url:"https://api.baichuan-ai.com/v1",client_type:"openai",display_name:"百川智能 (Baichuan)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"minimax",name:"MiniMax",base_url:"https://api.minimax.chat/v1",client_type:"openai",display_name:"MiniMax (海螺 AI)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"stepfun",name:"StepFun",base_url:"https://api.stepfun.com/v1",client_type:"openai",display_name:"阶跃星辰 (StepFun)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"lingyi",name:"Lingyi",base_url:"https://api.lingyiwanwu.com/v1",client_type:"openai",display_name:"零一万物 (Lingyi / Yi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"openai",name:"OpenAI",base_url:"https://api.openai.com/v1",client_type:"openai",display_name:"OpenAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"xai",name:"xAI",base_url:"https://api.x.ai/v1",client_type:"openai",display_name:"xAI (Grok)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"anthropic",name:"Anthropic",base_url:"https://api.anthropic.com/v1",client_type:"openai",display_name:"Anthropic (Claude)"},{id:"gemini",name:"Gemini",base_url:"https://generativelanguage.googleapis.com/v1beta",client_type:"gemini",display_name:"Google Gemini",modelFetcher:{endpoint:"/models",parser:"gemini"}},{id:"cohere",name:"Cohere",base_url:"https://api.cohere.ai/v1",client_type:"openai",display_name:"Cohere"},{id:"groq",name:"Groq",base_url:"https://api.groq.com/openai/v1",client_type:"openai",display_name:"Groq",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"together",name:"Together AI",base_url:"https://api.together.xyz/v1",client_type:"openai",display_name:"Together AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"fireworks",name:"Fireworks",base_url:"https://api.fireworks.ai/inference/v1",client_type:"openai",display_name:"Fireworks AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"mistral",name:"Mistral",base_url:"https://api.mistral.ai/v1",client_type:"openai",display_name:"Mistral AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"perplexity",name:"Perplexity",base_url:"https://api.perplexity.ai",client_type:"openai",display_name:"Perplexity AI"},{id:"custom",name:"",base_url:"",client_type:"openai",display_name:"自定义"}];function up(n){return n?n.replace(/\/+$/,"").toLowerCase():""}function yw(n){if(!n)return null;const r=up(n);return rr.find(c=>c.id!=="custom"&&up(c.base_url)===r)||null}function Nw(){const[n,r]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,w]=u.useState(!1),[v,k]=u.useState(!1),[T,E]=u.useState(!1),[R,K]=u.useState(!1),[U,A]=u.useState(null),[Z,H]=u.useState(null),[z,B]=u.useState("custom"),[X,S]=u.useState(!1),[O,te]=u.useState(!1),[he,Ne]=u.useState(null),[ye,pe]=u.useState(!1),[je,_e]=u.useState(""),[N,G]=u.useState(new Set),[q,ie]=u.useState(!1),[_,me]=u.useState(1),[xe,$]=u.useState(20),[de,ge]=u.useState(""),[le,L]=u.useState({}),[F,D]=u.useState(new Set),[ee,we]=u.useState(new Map),{toast:ze}=Hs(),ss=Jt(),{state:Ze,goToStep:Ls,registerTour:Gs}=Pu(),re=u.useRef(null),be=u.useRef(!0);u.useEffect(()=>{Gs(ll,qg)},[Gs]),u.useEffect(()=>{if(Ze.activeTourId===ll&&Ze.isRunning){const W=Gg[Ze.stepIndex];W&&!window.location.pathname.endsWith(W.replace("/config/",""))&&ss({to:W})}},[Ze.stepIndex,Ze.activeTourId,Ze.isRunning,ss]);const Xe=u.useRef(Ze.stepIndex);u.useEffect(()=>{if(Ze.activeTourId===ll&&Ze.isRunning){const W=Xe.current,ve=Ze.stepIndex;W>=3&&W<=9&&ve<3&&K(!1),W>=10&&ve>=3&&ve<=9&&(L({}),B("custom"),A({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10}),H(null),pe(!1),K(!0)),Xe.current=ve}},[Ze.stepIndex,Ze.activeTourId,Ze.isRunning]),u.useEffect(()=>{if(Ze.activeTourId!==ll||!Ze.isRunning)return;const W=ve=>{const Me=ve.target,tt=Ze.stepIndex;tt===2&&Me.closest('[data-tour="add-provider-button"]')?setTimeout(()=>Ls(3),300):tt===9&&Me.closest('[data-tour="provider-cancel-button"]')&&setTimeout(()=>Ls(10),300)};return document.addEventListener("click",W,!0),()=>document.removeEventListener("click",W,!0)},[Ze,Ls]),u.useEffect(()=>{Ue()},[]);const Ue=async()=>{try{d(!0);const W=await ei();r(W.api_providers||[]),w(!1),be.current=!1}catch(W){console.error("加载配置失败:",W)}finally{d(!1)}},st=async()=>{try{k(!0),co().catch(()=>{}),E(!0)}catch(W){console.error("重启失败:",W),E(!1),ze({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),k(!1)}},It=async()=>{try{x(!0),re.current&&clearTimeout(re.current);const W=await ei();W.api_providers=n,await io(W),w(!1),ze({title:"保存成功",description:"正在重启麦麦..."}),await st()}catch(W){console.error("保存配置失败:",W),ze({title:"保存失败",description:W.message,variant:"destructive"}),x(!1)}},bt=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},Je=()=>{E(!1),k(!1),ze({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},Be=u.useCallback(async W=>{if(!be.current)try{j(!0),await qu("api_providers",W),w(!1)}catch(ve){console.error("自动保存失败:",ve),w(!0)}finally{j(!1)}},[]);u.useEffect(()=>{if(!be.current)return w(!0),re.current&&clearTimeout(re.current),re.current=setTimeout(()=>{Be(n)},2e3),()=>{re.current&&clearTimeout(re.current)}},[n,Be]);const jt=async()=>{try{x(!0),re.current&&clearTimeout(re.current);const W=await ei();W.api_providers=n,await io(W),w(!1),ze({title:"保存成功",description:"模型提供商配置已保存"})}catch(W){console.error("保存配置失败:",W),ze({title:"保存失败",description:W.message,variant:"destructive"})}finally{x(!1)}},nt=(W,ve)=>{if(L({}),W){const Me=rr.find(tt=>tt.base_url===W.base_url&&tt.client_type===W.client_type);B(Me?.id||"custom"),A(W)}else B("custom"),A({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10});H(ve),pe(!1),K(!0)},St=W=>{B(W),S(!1);const ve=rr.find(Me=>Me.id===W);ve&&ve.id!=="custom"?A(Me=>({...Me,name:ve.name,base_url:ve.base_url,client_type:ve.client_type})):ve?.id==="custom"&&A(Me=>({...Me,name:"",base_url:"",client_type:"openai"}))},Ct=u.useMemo(()=>z!=="custom",[z]),rl=async()=>{if(U?.api_key)try{await navigator.clipboard.writeText(U.api_key),ze({title:"复制成功",description:"API Key 已复制到剪贴板"})}catch{ze({title:"复制失败",description:"无法访问剪贴板",variant:"destructive"})}},cl=()=>{if(!U)return;const W={};if(U.name?.trim()||(W.name="请输入提供商名称"),U.base_url?.trim()||(W.base_url="请输入基础 URL"),U.api_key?.trim()||(W.api_key="请输入 API Key"),Object.keys(W).length>0){L(W);return}L({});const ve={...U,max_retry:U.max_retry??2,timeout:U.timeout??30,retry_interval:U.retry_interval??10};if(Z!==null){const Me=[...n];Me[Z]=ve,r(Me)}else r([...n,ve]);K(!1),A(null),H(null)},ol=W=>{if(!W&&U){const ve={...U,max_retry:U.max_retry??2,timeout:U.timeout??30,retry_interval:U.retry_interval??10};A(ve)}K(W)},Se=W=>{Ne(W),te(!0)},Oe=()=>{if(he!==null){const W=n.filter((ve,Me)=>Me!==he);r(W),ze({title:"删除成功",description:"提供商已从列表中移除"})}te(!1),Ne(null)},it=W=>{const ve=new Set(N);ve.has(W)?ve.delete(W):ve.add(W),G(ve)},dt=()=>{if(N.size===ut.length)G(new Set);else{const W=ut.map((ve,Me)=>n.findIndex(tt=>tt===ut[Me]));G(new Set(W))}},di=()=>{if(N.size===0){ze({title:"提示",description:"请先选择要删除的提供商",variant:"default"});return}ie(!0)},on=()=>{const W=n.filter((ve,Me)=>!N.has(Me));r(W),G(new Set),ie(!1),ze({title:"批量删除成功",description:`已删除 ${N.size} 个提供商`})},ut=n.filter(W=>{if(!je)return!0;const ve=je.toLowerCase();return W.name.toLowerCase().includes(ve)||W.base_url.toLowerCase().includes(ve)||W.client_type.toLowerCase().includes(ve)}),Pt=Math.ceil(ut.length/xe),Wt=ut.slice((_-1)*xe,_*xe),Ua=()=>{const W=parseInt(de);W>=1&&W<=Pt&&(me(W),ge(""))},Ut=async W=>{D(ve=>new Set(ve).add(W));try{const ve=await Q0(W);we(Me=>new Map(Me).set(W,ve)),ve.network_ok?ve.api_key_valid===!0?ze({title:"连接正常",description:`${W} 网络连接正常,API Key 有效 (${ve.latency_ms}ms)`}):ve.api_key_valid===!1?ze({title:"连接正常但 Key 无效",description:`${W} 网络连接正常,但 API Key 无效或已过期`,variant:"destructive"}):ze({title:"网络连接正常",description:`${W} 可以访问 (${ve.latency_ms}ms)`}):ze({title:"连接失败",description:ve.error||"无法连接到提供商",variant:"destructive"})}catch(ve){ze({title:"测试失败",description:ve.message,variant:"destructive"})}finally{D(ve=>{const Me=new Set(ve);return Me.delete(W),Me})}},Ba=async()=>{for(const W of n)await Ut(W.name)},_a=W=>{const ve=F.has(W),Me=ee.get(W);return ve?e.jsxs(Ye,{variant:"secondary",className:"gap-1",children:[e.jsx(vt,{className:"h-3 w-3 animate-spin"}),"测试中"]}):Me?Me.network_ok?Me.api_key_valid===!0?e.jsxs(Ye,{className:"gap-1 bg-green-600 hover:bg-green-700",children:[e.jsx(pa,{className:"h-3 w-3"}),"正常"]}):Me.api_key_valid===!1?e.jsxs(Ye,{variant:"destructive",className:"gap-1",children:[e.jsx(Da,{className:"h-3 w-3"}),"Key无效"]}):e.jsxs(Ye,{className:"gap-1 bg-blue-600 hover:bg-blue-700",children:[e.jsx(pa,{className:"h-3 w-3"}),"可访问"]}):e.jsxs(Ye,{variant:"destructive",className:"gap-1",children:[e.jsx(jg,{className:"h-3 w-3"}),"离线"]}):null};return c?e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})}):e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"AI模型厂商配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理 AI 模型厂商的 API 配置"})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[N.size>0&&e.jsxs(y,{onClick:di,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(es,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",N.size,")"]}),e.jsxs(y,{onClick:Ba,size:"sm",variant:"outline",className:"w-full sm:w-auto",disabled:n.length===0||F.size>0,children:[e.jsx(ln,{className:"mr-2 h-4 w-4"}),F.size>0?`测试中 (${F.size})`:"测试全部"]}),e.jsxs(y,{onClick:()=>nt(null,null),size:"sm",className:"w-full sm:w-auto","data-tour":"add-provider-button",children:[e.jsx(ot,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加提供商"]}),e.jsxs(y,{onClick:jt,disabled:h||f||!p||v,size:"sm",variant:"outline",className:"w-full sm:w-auto sm:min-w-[120px]",children:[e.jsx(br,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),h?"保存中...":f?"自动保存中...":p?"保存配置":"已保存"]}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(y,{disabled:h||f||v,size:"sm",className:"w-full sm:w-auto sm:min-w-[120px]",children:[e.jsx(Nr,{className:"mr-2 h-4 w-4"}),v?"重启中...":p?"保存并重启":"重启麦麦"]})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认重启麦麦?"}),e.jsx(us,{className:"space-y-3",asChild:!0,children:e.jsxs("div",{children:[e.jsx("p",{children:p?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),e.jsxs(ha,{className:"border-yellow-500/50 bg-yellow-500/10",children:[e.jsx(Xt,{className:"h-4 w-4 text-yellow-600"}),e.jsxs(xa,{className:"text-yellow-900 dark:text-yellow-100",children:[e.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",e.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",e.jsxs(Rs,{children:[e.jsx(ni,{asChild:!0,children:e.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[e.jsx(ro,{className:"h-3 w-3"}),"如何结束程序?"]})}),e.jsxs(zs,{className:"max-w-2xl",children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"如何结束使用重启功能后的麦麦程序"}),e.jsx(Ys,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),e.jsxs(Kt,{defaultValue:"windows",className:"w-full",children:[e.jsxs(Rt,{className:"grid w-full grid-cols-3",children:[e.jsx($e,{value:"windows",children:"Windows"}),e.jsx($e,{value:"macos",children:"macOS"}),e.jsx($e,{value:"linux",children:"Linux"})]}),e.jsxs(We,{value:"windows",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),e.jsxs("li",{children:["在“进程”或“详细信息”标签页中找到 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),e.jsx("li",{children:"右键点击并选择“结束任务”"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),e.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),e.jsxs(We,{value:"macos",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"})," 打开 Spotlight,搜索“活动监视器”"]}),e.jsxs("li",{children:["在进程列表中找到 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),e.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:"ps aux | grep python | grep -v grep"}),e.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),e.jsx("p",{children:"kill -9 "}),e.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"pkill -9 python"})]})]})]}),e.jsxs(We,{value:"linux",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:"ps aux | grep python | grep -v grep"}),e.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),e.jsx("p",{children:"kill -9 "}),e.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),e.jsx("p",{children:'pkill -9 -f "bot.py"'}),e.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"pkill -9 python"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["在终端输入 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),e.jsx(Js,{children:e.jsx(Zu,{asChild:!0,children:e.jsx(y,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:p?It:st,children:p?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsxs(ha,{children:[e.jsx(Xt,{className:"h-4 w-4"}),e.jsxs(xa,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),e.jsxs(Pe,{className:"h-[calc(100vh-260px)]",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2 mb-4",children:[e.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[e.jsx(_t,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索提供商名称、URL 或类型...",value:je,onChange:W=>_e(W.target.value),className:"pl-9"})]}),je&&e.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",ut.length," 个结果"]})]}),e.jsx("div",{className:"md:hidden space-y-3",children:ut.length===0?e.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:je?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'}):Wt.map((W,ve)=>{const Me=n.findIndex(tt=>tt===W);return e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("h3",{className:"font-semibold text-base truncate",children:W.name}),_a(W.name)]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1 break-all",children:W.base_url})]}),e.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[e.jsx(y,{variant:"outline",size:"sm",onClick:()=>Ut(W.name),disabled:F.has(W.name),title:"测试连接",children:F.has(W.name)?e.jsx(vt,{className:"h-4 w-4 animate-spin"}):e.jsx(ln,{className:"h-4 w-4"})}),e.jsx(y,{variant:"default",size:"sm",onClick:()=>nt(W,Me),children:e.jsx(nn,{className:"h-4 w-4",strokeWidth:2,fill:"none"})}),e.jsx(y,{size:"sm",onClick:()=>Se(Me),className:"bg-red-600 hover:bg-red-700 text-white",children:e.jsx(es,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"客户端类型"}),e.jsx("p",{className:"font-medium",children:W.client_type})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"最大重试"}),e.jsx("p",{className:"font-medium",children:W.max_retry})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"超时(秒)"}),e.jsx("p",{className:"font-medium",children:W.timeout})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"重试间隔(秒)"}),e.jsx("p",{className:"font-medium",children:W.retry_interval})]})]})]},ve)})}),e.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(ii,{children:[e.jsx(ri,{children:e.jsxs(gt,{children:[e.jsx(ls,{className:"w-12",children:e.jsx(yt,{checked:N.size===ut.length&&ut.length>0,onCheckedChange:dt})}),e.jsx(ls,{children:"状态"}),e.jsx(ls,{children:"名称"}),e.jsx(ls,{children:"基础URL"}),e.jsx(ls,{children:"客户端类型"}),e.jsx(ls,{className:"text-right",children:"最大重试"}),e.jsx(ls,{className:"text-right",children:"超时(秒)"}),e.jsx(ls,{className:"text-right",children:"重试间隔(秒)"}),e.jsx(ls,{className:"text-right",children:"操作"})]})}),e.jsx(ci,{children:Wt.length===0?e.jsx(gt,{children:e.jsx(Qe,{colSpan:9,className:"text-center text-muted-foreground py-8",children:je?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'})}):Wt.map((W,ve)=>{const Me=n.findIndex(tt=>tt===W);return e.jsxs(gt,{children:[e.jsx(Qe,{children:e.jsx(yt,{checked:N.has(Me),onCheckedChange:()=>it(Me)})}),e.jsx(Qe,{children:_a(W.name)||e.jsx(Ye,{variant:"outline",className:"text-muted-foreground",children:"未测试"})}),e.jsx(Qe,{className:"font-medium",children:W.name}),e.jsx(Qe,{className:"max-w-xs truncate",title:W.base_url,children:W.base_url}),e.jsx(Qe,{children:W.client_type}),e.jsx(Qe,{className:"text-right",children:W.max_retry}),e.jsx(Qe,{className:"text-right",children:W.timeout}),e.jsx(Qe,{className:"text-right",children:W.retry_interval}),e.jsx(Qe,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(y,{variant:"outline",size:"sm",onClick:()=>Ut(W.name),disabled:F.has(W.name),title:"测试连接",children:F.has(W.name)?e.jsx(vt,{className:"h-4 w-4 animate-spin"}):e.jsx(ln,{className:"h-4 w-4"})}),e.jsxs(y,{variant:"default",size:"sm",onClick:()=>nt(W,Me),children:[e.jsx(nn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(y,{size:"sm",onClick:()=>Se(Me),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(es,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},ve)})})]})})}),ut.length>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"page-size-provider",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(He,{value:xe.toString(),onValueChange:W=>{$(parseInt(W)),me(1),G(new Set)},children:[e.jsx(Re,{id:"page-size-provider",className:"w-20",children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"10",children:"10"}),e.jsx(ne,{value:"20",children:"20"}),e.jsx(ne,{value:"50",children:"50"}),e.jsx(ne,{value:"100",children:"100"})]})]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(_-1)*xe+1," 到"," ",Math.min(_*xe,ut.length)," 条,共 ",ut.length," 条"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{variant:"outline",size:"sm",onClick:()=>me(1),disabled:_===1,className:"hidden sm:flex",children:e.jsx(wr,{className:"h-4 w-4"})}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>me(W=>Math.max(1,W-1)),disabled:_===1,children:[e.jsx(cn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:de,onChange:W=>ge(W.target.value),onKeyDown:W=>W.key==="Enter"&&Ua(),placeholder:_.toString(),className:"w-16 h-8 text-center",min:1,max:Pt}),e.jsx(y,{variant:"outline",size:"sm",onClick:Ua,disabled:!de,className:"h-8",children:"跳转"})]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>me(W=>W+1),disabled:_>=Pt,children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(il,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(y,{variant:"outline",size:"sm",onClick:()=>me(Pt),disabled:_>=Pt,className:"hidden sm:flex",children:e.jsx(_r,{className:"h-4 w-4"})})]})]})]}),e.jsx(Rs,{open:R,onOpenChange:ol,children:e.jsxs(zs,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"provider-dialog",preventOutsideClose:Ze.isRunning,children:[e.jsxs(Ms,{children:[e.jsx(As,{children:Z!==null?"编辑提供商":"添加提供商"}),e.jsx(Ys,{children:"配置 API 提供商的连接信息和参数"})]}),e.jsxs("form",{onSubmit:W=>{W.preventDefault(),cl()},autoComplete:"off",children:[e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":"provider-template-select",children:[e.jsx(b,{htmlFor:"template",children:"提供商模板"}),e.jsxs(Oa,{open:X,onOpenChange:S,children:[e.jsx(Ra,{asChild:!0,children:e.jsxs(y,{variant:"outline",role:"combobox","aria-expanded":X,className:"w-full justify-between",children:[z?rr.find(W=>W.id===z)?.display_name:"选择提供商模板...",e.jsx(Qu,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(wa,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:e.jsxs(oo,{children:[e.jsx(uo,{placeholder:"搜索提供商模板..."}),e.jsx(Pe,{className:"h-[300px]",children:e.jsxs(mo,{className:"max-h-none overflow-visible",children:[e.jsx(ho,{children:"未找到匹配的模板"}),e.jsx(vr,{children:rr.map(W=>e.jsxs(yr,{value:W.display_name,onSelect:()=>St(W.id),children:[e.jsx(fa,{className:`mr-2 h-4 w-4 ${z===W.id?"opacity-100":"opacity-0"}`}),W.display_name]},W.id))})]})})]})})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"选择预设模板可自动填充 URL 和客户端类型,支持搜索"})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-name-input",children:[e.jsx(b,{htmlFor:"name",className:le.name?"text-destructive":"",children:"名称 *"}),e.jsx(ce,{id:"name",value:U?.name||"",onChange:W=>{A(ve=>ve?{...ve,name:W.target.value}:null),le.name&&L(ve=>({...ve,name:void 0}))},placeholder:"例如: DeepSeek, SiliconFlow",className:le.name?"border-destructive focus-visible:ring-destructive":""}),le.name&&e.jsx("p",{className:"text-xs text-destructive",children:le.name})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-url-input",children:[e.jsx(b,{htmlFor:"base_url",className:le.base_url?"text-destructive":"",children:"基础 URL *"}),e.jsx(ce,{id:"base_url",value:U?.base_url||"",onChange:W=>{A(ve=>ve?{...ve,base_url:W.target.value}:null),le.base_url&&L(ve=>({...ve,base_url:void 0}))},placeholder:"https://api.example.com/v1",disabled:Ct,className:`${Ct?"bg-muted cursor-not-allowed":""} ${le.base_url?"border-destructive focus-visible:ring-destructive":""}`}),le.base_url&&e.jsx("p",{className:"text-xs text-destructive",children:le.base_url}),Ct&&!le.base_url&&e.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时 URL 不可编辑,切换到"自定义"以手动配置'})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-apikey-input",children:[e.jsx(b,{htmlFor:"api_key",className:le.api_key?"text-destructive":"",children:"API Key *"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{id:"api_key",type:ye?"text":"password",value:U?.api_key||"",onChange:W=>{A(ve=>ve?{...ve,api_key:W.target.value}:null),le.api_key&&L(ve=>({...ve,api_key:void 0}))},placeholder:"sk-...",className:`flex-1 ${le.api_key?"border-destructive focus-visible:ring-destructive":""}`}),e.jsx(y,{type:"button",variant:"outline",size:"icon",onClick:()=>pe(!ye),title:ye?"隐藏密钥":"显示密钥",children:ye?e.jsx(mr,{className:"h-4 w-4"}):e.jsx(Zt,{className:"h-4 w-4"})}),e.jsx(y,{type:"button",variant:"outline",size:"icon",onClick:rl,title:"复制密钥",children:e.jsx(so,{className:"h-4 w-4"})})]}),le.api_key&&e.jsx("p",{className:"text-xs text-destructive",children:le.api_key})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"client_type",children:"客户端类型"}),e.jsxs(He,{value:U?.client_type||"openai",onValueChange:W=>A(ve=>ve?{...ve,client_type:W}:null),disabled:Ct,children:[e.jsx(Re,{id:"client_type",className:Ct?"bg-muted cursor-not-allowed":"",children:e.jsx(qe,{placeholder:"选择客户端类型"})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"openai",children:"OpenAI"}),e.jsx(ne,{value:"gemini",children:"Gemini"})]})]}),Ct&&e.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时客户端类型不可编辑,切换到"自定义"以手动配置'})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_retry",children:"最大重试"}),e.jsx(ce,{id:"max_retry",type:"number",min:"0",value:U?.max_retry??"",onChange:W=>{const ve=W.target.value===""?null:parseInt(W.target.value);A(Me=>Me?{...Me,max_retry:ve}:null)},placeholder:"默认: 2"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"timeout",children:"超时(秒)"}),e.jsx(ce,{id:"timeout",type:"number",min:"1",value:U?.timeout??"",onChange:W=>{const ve=W.target.value===""?null:parseInt(W.target.value);A(Me=>Me?{...Me,timeout:ve}:null)},placeholder:"默认: 30"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"retry_interval",children:"重试间隔(秒)"}),e.jsx(ce,{id:"retry_interval",type:"number",min:"1",value:U?.retry_interval??"",onChange:W=>{const ve=W.target.value===""?null:parseInt(W.target.value);A(Me=>Me?{...Me,retry_interval:ve}:null)},placeholder:"默认: 10"})]})]})]}),e.jsxs(Js,{children:[e.jsx(y,{type:"button",variant:"outline",onClick:()=>K(!1),"data-tour":"provider-cancel-button",children:"取消"}),e.jsx(y,{type:"submit","data-tour":"provider-save-button",children:"保存"})]})]})]})}),e.jsx(ps,{open:O,onOpenChange:te,children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:['确定要删除提供商 "',he!==null?n[he]?.name:"",'" 吗? 此操作无法撤销。']})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:Oe,children:"删除"})]})]})}),e.jsx(ps,{open:q,onOpenChange:ie,children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认批量删除"}),e.jsxs(us,{children:["确定要删除选中的 ",N.size," 个提供商吗? 此操作无法撤销。"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:on,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),T&&e.jsx(Iu,{onRestartComplete:bt,onRestartFailed:Je})]})}function bw({value:n,label:r,onRemove:c}){const{attributes:d,listeners:h,setNodeRef:x,transform:f,transition:j,isDragging:p}=jb({id:n}),w={transform:vb.Transform.toString(f),transition:j,opacity:p?.5:1};return e.jsx("div",{ref:x,style:w,className:Q("inline-flex items-center gap-1",p&&"shadow-lg"),children:e.jsxs(Ye,{variant:"secondary",className:"cursor-move hover:bg-secondary/80 flex items-center gap-1",children:[e.jsx("div",{...d,...h,className:"cursor-grab active:cursor-grabbing flex items-center",children:e.jsx(ON,{className:"h-3 w-3 text-muted-foreground"})}),e.jsx("span",{children:r}),e.jsx(li,{className:"ml-1 h-3 w-3 cursor-pointer hover:text-destructive",strokeWidth:2,fill:"none",onClick:v=>{v.stopPropagation(),c(n)}})]})})}function ww({options:n,selected:r,onChange:c,placeholder:d="选择选项...",emptyText:h="未找到选项",className:x}){const[f,j]=u.useState(!1),p=ob(Pf(gb,{activationConstraint:{distance:8}}),Pf(pb,{coordinateGetter:fb})),w=T=>{r.includes(T)?c(r.filter(E=>E!==T)):c([...r,T])},v=T=>{c(r.filter(E=>E!==T))},k=T=>{const{active:E,over:R}=T;if(R&&E.id!==R.id){const K=r.indexOf(E.id),U=r.indexOf(R.id);c(xb(r,K,U))}};return e.jsxs(Oa,{open:f,onOpenChange:j,children:[e.jsx(Ra,{asChild:!0,children:e.jsxs(y,{variant:"outline",role:"combobox","aria-expanded":f,className:Q("w-full justify-between min-h-10 h-auto",x),children:[e.jsx(db,{sensors:p,collisionDetection:ub,onDragEnd:k,children:e.jsx(mb,{items:r,strategy:hb,children:e.jsx("div",{className:"flex gap-1 flex-wrap flex-1",children:r.length===0?e.jsx("span",{className:"text-muted-foreground",children:d}):r.map(T=>{const E=n.find(R=>R.value===T);return e.jsx(bw,{value:T,label:E?.label||T,onRemove:v},T)})})})}),e.jsx(Qu,{className:"ml-2 h-4 w-4 shrink-0 opacity-50",strokeWidth:2,fill:"none"})]})}),e.jsx(wa,{className:"w-full p-0",align:"start",children:e.jsxs(oo,{children:[e.jsx(uo,{placeholder:"搜索...",className:"h-9"}),e.jsxs(mo,{children:[e.jsx(ho,{children:h}),e.jsx(vr,{children:n.map(T=>{const E=r.includes(T.value);return e.jsxs(yr,{value:T.value,onSelect:()=>w(T.value),children:[e.jsx("div",{className:Q("mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary",E?"bg-primary text-primary-foreground":"opacity-50 [&_svg]:invisible"),children:e.jsx(fa,{className:"h-3 w-3",strokeWidth:2,fill:"none"})}),e.jsx("span",{children:T.label})]},T.value)})})]})]})})]})}const mp=new Map,_w=300*1e3;function Sw(){const[n,r]=u.useState([]),[c,d]=u.useState([]),[h,x]=u.useState([]),[f,j]=u.useState([]),[p,w]=u.useState(null),[v,k]=u.useState(!0),[T,E]=u.useState(!1),[R,K]=u.useState(!1),[U,A]=u.useState(!1),[Z,H]=u.useState(!1),[z,B]=u.useState(!1),[X,S]=u.useState(!1),[O,te]=u.useState(null),[he,Ne]=u.useState(null),[ye,pe]=u.useState(!1),[je,_e]=u.useState(null),[N,G]=u.useState(""),[q,ie]=u.useState(new Set),[_,me]=u.useState(!1),[xe,$]=u.useState(1),[de,ge]=u.useState(20),[le,L]=u.useState(""),[F,D]=u.useState([]),[ee,we]=u.useState(!1),[ze,ss]=u.useState(null),[Ze,Ls]=u.useState(!1),[Gs,re]=u.useState(null),[be,Xe]=u.useState({}),{toast:Ue}=Hs(),st=Jt(),{registerTour:It,startTour:bt,state:Je,goToStep:Be}=Pu(),jt=u.useRef(null),nt=u.useRef(null),St=u.useRef(!0);u.useEffect(()=>{It(ll,qg)},[It]),u.useEffect(()=>{if(Je.activeTourId===ll&&Je.isRunning){const Y=Gg[Je.stepIndex];Y&&!window.location.pathname.endsWith(Y.replace("/config/",""))&&st({to:Y})}},[Je.stepIndex,Je.activeTourId,Je.isRunning,st]);const Ct=u.useRef(Je.stepIndex);u.useEffect(()=>{if(Je.activeTourId===ll&&Je.isRunning){const Y=Ct.current,fe=Je.stepIndex;Y>=12&&Y<=17&&fe<12&&S(!1),Ct.current=fe}},[Je.stepIndex,Je.activeTourId,Je.isRunning]),u.useEffect(()=>{if(Je.activeTourId!==ll||!Je.isRunning)return;const Y=fe=>{const Ae=fe.target,Ge=Je.stepIndex;Ge===2&&Ae.closest('[data-tour="add-provider-button"]')?setTimeout(()=>Be(3),300):Ge===9&&Ae.closest('[data-tour="provider-cancel-button"]')?setTimeout(()=>Be(10),300):Ge===11&&Ae.closest('[data-tour="add-model-button"]')?setTimeout(()=>Be(12),300):Ge===17&&Ae.closest('[data-tour="model-cancel-button"]')?setTimeout(()=>Be(18),300):Ge===18&&Ae.closest('[data-tour="tasks-tab-trigger"]')&&setTimeout(()=>Be(19),300)};return document.addEventListener("click",Y,!0),()=>document.removeEventListener("click",Y,!0)},[Je,Be]);const rl=()=>{bt(ll)};u.useEffect(()=>{cl()},[]);const cl=async()=>{try{k(!0);const Y=await ei(),fe=Y.models||[];r(fe),j(fe.map(Ge=>Ge.name));const Ae=Y.api_providers||[];d(Ae.map(Ge=>Ge.name)),x(Ae),w(Y.model_task_config||null),A(!1),St.current=!1}catch(Y){console.error("加载配置失败:",Y)}finally{k(!1)}},ol=u.useCallback(Y=>h.find(fe=>fe.name===Y),[h]),Se=u.useCallback(async(Y,fe=!1)=>{const Ae=ol(Y);if(!Ae?.base_url){D([]),re(null),ss('提供商配置不完整,请先在"模型提供商配置"中配置');return}if(!Ae.api_key){D([]),re(null),ss('该提供商未配置 API Key,请先在"模型提供商配置"中填写');return}const Ge=yw(Ae.base_url);if(re(Ge),!Ge?.modelFetcher){D([]),ss(null);return}const xs=`${Y}:${Ae.base_url}`,ea=mp.get(xs);if(!fe&&ea&&Date.now()-ea.timestamp<_w){D(ea.models),ss(null);return}we(!0),ss(null);try{const sa=await $0(Y,Ge.modelFetcher.parser,Ge.modelFetcher.endpoint);D(sa),mp.set(xs,{models:sa,timestamp:Date.now()})}catch(sa){console.error("获取模型列表失败:",sa);const Sa=sa.message||"获取模型列表失败";Sa.includes("无效")||Sa.includes("过期")||Sa.includes("API Key")?ss('API Key 无效或已过期,请检查"模型提供商配置"中的密钥'):Sa.includes("权限")?ss("没有权限获取模型列表,请检查 API Key 权限"):Sa.includes("timeout")||Sa.includes("超时")?ss("请求超时,请检查网络连接后重试"):Sa.includes("不支持")?ss("该提供商不支持自动获取模型列表,请手动输入"):ss(Sa),D([])}finally{we(!1)}},[ol]);u.useEffect(()=>{X&&O?.api_provider&&Se(O.api_provider)},[X,O?.api_provider,Se]);const Oe=async()=>{try{H(!0),co().catch(()=>{}),B(!0)}catch(Y){console.error("重启失败:",Y),B(!1),Ue({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),H(!1)}},it=async()=>{try{E(!0),jt.current&&clearTimeout(jt.current),nt.current&&clearTimeout(nt.current);const Y=await ei();Y.models=n,Y.model_task_config=p,await io(Y),A(!1),Ue({title:"保存成功",description:"正在重启麦麦..."}),await Oe()}catch(Y){console.error("保存配置失败:",Y),Ue({title:"保存失败",description:Y.message,variant:"destructive"}),E(!1)}},dt=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},di=()=>{B(!1),H(!1),Ue({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},on=u.useCallback(async Y=>{if(!St.current)try{K(!0),await qu("models",Y),A(!1)}catch(fe){console.error("自动保存模型列表失败:",fe),A(!0)}finally{K(!1)}},[]),ut=u.useCallback(async Y=>{if(!St.current)try{K(!0),await qu("model_task_config",Y),A(!1)}catch(fe){console.error("自动保存任务配置失败:",fe),A(!0)}finally{K(!1)}},[]);u.useEffect(()=>{if(!St.current)return A(!0),jt.current&&clearTimeout(jt.current),jt.current=setTimeout(()=>{on(n)},2e3),()=>{jt.current&&clearTimeout(jt.current)}},[n,on]),u.useEffect(()=>{if(!(St.current||!p))return A(!0),nt.current&&clearTimeout(nt.current),nt.current=setTimeout(()=>{ut(p)},2e3),()=>{nt.current&&clearTimeout(nt.current)}},[p,ut]);const Pt=async()=>{try{E(!0),jt.current&&clearTimeout(jt.current),nt.current&&clearTimeout(nt.current);const Y=await ei();Y.models=n,Y.model_task_config=p,await io(Y),A(!1),Ue({title:"保存成功",description:"模型配置已保存"}),await cl()}catch(Y){console.error("保存配置失败:",Y),Ue({title:"保存失败",description:Y.message,variant:"destructive"})}finally{E(!1)}},Wt=(Y,fe)=>{Xe({}),te(Y||{model_identifier:"",name:"",api_provider:c[0]||"",price_in:0,price_out:0,force_stream_mode:!1,extra_params:{}}),Ne(fe),S(!0)},Ua=()=>{if(!O)return;const Y={};if(O.name?.trim()||(Y.name="请输入模型名称"),O.api_provider?.trim()||(Y.api_provider="请选择 API 提供商"),O.model_identifier?.trim()||(Y.model_identifier="请输入模型标识符"),Object.keys(Y).length>0){Xe(Y);return}Xe({});const fe={...O,price_in:O.price_in??0,price_out:O.price_out??0};let Ae,Ge=null;if(he!==null?(Ge=n[he].name,Ae=[...n],Ae[he]=fe):Ae=[...n,fe],r(Ae),j(Ae.map(xs=>xs.name)),Ge&&Ge!==fe.name&&p){const xs=ea=>ea.map(sa=>sa===Ge?fe.name:sa);w({...p,utils:{...p.utils,model_list:xs(p.utils?.model_list||[])},utils_small:{...p.utils_small,model_list:xs(p.utils_small?.model_list||[])},tool_use:{...p.tool_use,model_list:xs(p.tool_use?.model_list||[])},replyer:{...p.replyer,model_list:xs(p.replyer?.model_list||[])},planner:{...p.planner,model_list:xs(p.planner?.model_list||[])},vlm:{...p.vlm,model_list:xs(p.vlm?.model_list||[])},voice:{...p.voice,model_list:xs(p.voice?.model_list||[])},embedding:{...p.embedding,model_list:xs(p.embedding?.model_list||[])},lpmm_entity_extract:{...p.lpmm_entity_extract,model_list:xs(p.lpmm_entity_extract?.model_list||[])},lpmm_rdf_build:{...p.lpmm_rdf_build,model_list:xs(p.lpmm_rdf_build?.model_list||[])},lpmm_qa:{...p.lpmm_qa,model_list:xs(p.lpmm_qa?.model_list||[])}})}S(!1),te(null),Ne(null)},Ut=Y=>{if(!Y&&O){const fe={...O,price_in:O.price_in??0,price_out:O.price_out??0};te(fe)}S(Y)},Ba=Y=>{_e(Y),pe(!0)},_a=()=>{if(je!==null){const Y=n.filter((fe,Ae)=>Ae!==je);r(Y),j(Y.map(fe=>fe.name)),Ue({title:"删除成功",description:"模型已从列表中移除"})}pe(!1),_e(null)},W=Y=>{const fe=new Set(q);fe.has(Y)?fe.delete(Y):fe.add(Y),ie(fe)},ve=()=>{if(q.size===kt.length)ie(new Set);else{const Y=kt.map((fe,Ae)=>n.findIndex(Ge=>Ge===kt[Ae]));ie(new Set(Y))}},Me=()=>{if(q.size===0){Ue({title:"提示",description:"请先选择要删除的模型",variant:"default"});return}me(!0)},tt=()=>{const Y=n.filter((fe,Ae)=>!q.has(Ae));r(Y),j(Y.map(fe=>fe.name)),ie(new Set),me(!1),Ue({title:"批量删除成功",description:`已删除 ${q.size} 个模型`})},Bt=(Y,fe,Ae)=>{p&&w({...p,[Y]:{...p[Y],[fe]:Ae}})},kt=n.filter(Y=>{if(!N)return!0;const fe=N.toLowerCase();return Y.name.toLowerCase().includes(fe)||Y.model_identifier.toLowerCase().includes(fe)||Y.api_provider.toLowerCase().includes(fe)}),dl=Math.ceil(kt.length/de),Hl=kt.slice((xe-1)*de,xe*de),dn=()=>{const Y=parseInt(le);Y>=1&&Y<=dl&&($(Y),L(""))},un=Y=>p?[p.utils?.model_list||[],p.utils_small?.model_list||[],p.tool_use?.model_list||[],p.replyer?.model_list||[],p.planner?.model_list||[],p.vlm?.model_list||[],p.voice?.model_list||[],p.embedding?.model_list||[],p.lpmm_entity_extract?.model_list||[],p.lpmm_rdf_build?.model_list||[],p.lpmm_qa?.model_list||[]].some(Ae=>Ae.includes(Y)):!1;return v?e.jsx(Pe,{className:"h-full",children:e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):e.jsx(Pe,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"模型管理与分配"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"添加模型并为模型分配功能"})]}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[e.jsxs(y,{onClick:Pt,disabled:T||R||!U||Z,size:"sm",variant:"outline",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[e.jsx(br,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),T?"保存中...":R?"自动保存中...":U?"保存配置":"已保存"]}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(y,{disabled:T||R||Z,size:"sm",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[e.jsx(Nr,{className:"mr-2 h-4 w-4"}),Z?"重启中...":U?"保存并重启":"重启麦麦"]})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认重启麦麦?"}),e.jsx(us,{className:"space-y-3",asChild:!0,children:e.jsxs("div",{children:[e.jsx("p",{children:U?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),e.jsxs(ha,{className:"border-yellow-500/50 bg-yellow-500/10",children:[e.jsx(Xt,{className:"h-4 w-4 text-yellow-600"}),e.jsxs(xa,{className:"text-yellow-900 dark:text-yellow-100",children:[e.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",e.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",e.jsxs(Rs,{children:[e.jsx(ni,{asChild:!0,children:e.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[e.jsx(ro,{className:"h-3 w-3"}),"如何结束程序?"]})}),e.jsxs(zs,{className:"max-w-2xl",children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"如何结束使用重启功能后的麦麦程序"}),e.jsx(Ys,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),e.jsxs(Kt,{defaultValue:"windows",className:"w-full",children:[e.jsxs(Rt,{className:"grid w-full grid-cols-3",children:[e.jsx($e,{value:"windows",children:"Windows"}),e.jsx($e,{value:"macos",children:"macOS"}),e.jsx($e,{value:"linux",children:"Linux"})]}),e.jsxs(We,{value:"windows",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),e.jsxs("li",{children:['在"进程"或"详细信息"标签页中找到 ',e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),e.jsx("li",{children:'右键点击并选择"结束任务"'})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),e.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),e.jsxs(We,{value:"macos",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"}),' 打开 Spotlight,搜索"活动监视器"']}),e.jsxs("li",{children:["在进程列表中找到 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),e.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:"ps aux | grep python | grep -v grep"}),e.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),e.jsx("p",{children:"kill -9 "}),e.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"pkill -9 python"})]})]})]}),e.jsxs(We,{value:"linux",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:"ps aux | grep python | grep -v grep"}),e.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),e.jsx("p",{children:"kill -9 "}),e.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),e.jsx("p",{children:'pkill -9 -f "bot.py"'}),e.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"pkill -9 python"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["在终端输入 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),e.jsx(Js,{children:e.jsx(Zu,{asChild:!0,children:e.jsx(y,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:U?it:Oe,children:U?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsxs(ha,{children:[e.jsx(Xt,{className:"h-4 w-4"}),e.jsxs(xa,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),e.jsxs(ha,{className:"hidden lg:flex border-primary/30 bg-primary/5 cursor-pointer hover:bg-primary/10 transition-colors",onClick:rl,children:[e.jsx(RN,{className:"h-4 w-4 text-primary"}),e.jsxs(xa,{className:"flex items-center justify-between",children:[e.jsxs("span",{children:[e.jsx("strong",{className:"text-primary",children:"新手引导:"}),"不知道如何配置模型?点击这里开始学习如何为麦麦的组件分配模型。"]}),e.jsx(y,{variant:"outline",size:"sm",className:"ml-4 shrink-0",children:"开始引导"})]})]}),e.jsxs(Kt,{defaultValue:"models",className:"w-full",children:[e.jsxs(Rt,{className:"grid w-full max-w-full sm:max-w-md grid-cols-2",children:[e.jsx($e,{value:"models",children:"添加模型"}),e.jsx($e,{value:"tasks","data-tour":"tasks-tab-trigger",children:"为模型分配功能"})]}),e.jsxs(We,{value:"models",className:"space-y-4 mt-0",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-2",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"配置可用的模型列表"}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[q.size>0&&e.jsxs(y,{onClick:Me,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(es,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",q.size,")"]}),e.jsxs(y,{onClick:()=>Wt(null,null),size:"sm",variant:"outline",className:"w-full sm:w-auto","data-tour":"add-model-button",children:[e.jsx(ot,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加模型"]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2",children:[e.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[e.jsx(_t,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索模型名称、标识符或提供商...",value:N,onChange:Y=>G(Y.target.value),className:"pl-9"})]}),N&&e.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",kt.length," 个结果"]})]}),e.jsx("div",{className:"md:hidden space-y-3",children:Hl.length===0?e.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:N?"未找到匹配的模型":"暂无模型配置"}):Hl.map((Y,fe)=>{const Ae=n.findIndex(xs=>xs===Y),Ge=un(Y.name);return e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("h3",{className:"font-semibold text-base",children:Y.name}),e.jsx(Ye,{variant:Ge?"default":"secondary",className:Ge?"bg-green-600 hover:bg-green-700":"",children:Ge?"已使用":"未使用"})]}),e.jsx("p",{className:"text-xs text-muted-foreground break-all",title:Y.model_identifier,children:Y.model_identifier})]}),e.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[e.jsxs(y,{variant:"default",size:"sm",onClick:()=>Wt(Y,Ae),children:[e.jsx(nn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(y,{size:"sm",onClick:()=>Ba(Ae),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(es,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"提供商"}),e.jsx("p",{className:"font-medium",children:Y.api_provider})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"强制流式"}),e.jsx("p",{className:"font-medium",children:Y.force_stream_mode?"是":"否"})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"输入价格"}),e.jsxs("p",{className:"font-medium",children:["¥",Y.price_in,"/M"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"输出价格"}),e.jsxs("p",{className:"font-medium",children:["¥",Y.price_out,"/M"]})]})]})]},fe)})}),e.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(ii,{children:[e.jsx(ri,{children:e.jsxs(gt,{children:[e.jsx(ls,{className:"w-12",children:e.jsx(yt,{checked:q.size===kt.length&&kt.length>0,onCheckedChange:ve})}),e.jsx(ls,{className:"w-24",children:"使用状态"}),e.jsx(ls,{children:"模型名称"}),e.jsx(ls,{children:"模型标识符"}),e.jsx(ls,{children:"提供商"}),e.jsx(ls,{className:"text-right",children:"输入价格"}),e.jsx(ls,{className:"text-right",children:"输出价格"}),e.jsx(ls,{className:"text-center",children:"强制流式"}),e.jsx(ls,{className:"text-right",children:"操作"})]})}),e.jsx(ci,{children:Hl.length===0?e.jsx(gt,{children:e.jsx(Qe,{colSpan:9,className:"text-center text-muted-foreground py-8",children:N?"未找到匹配的模型":"暂无模型配置"})}):Hl.map((Y,fe)=>{const Ae=n.findIndex(xs=>xs===Y),Ge=un(Y.name);return e.jsxs(gt,{children:[e.jsx(Qe,{children:e.jsx(yt,{checked:q.has(Ae),onCheckedChange:()=>W(Ae)})}),e.jsx(Qe,{children:e.jsx(Ye,{variant:Ge?"default":"secondary",className:Ge?"bg-green-600 hover:bg-green-700":"",children:Ge?"已使用":"未使用"})}),e.jsx(Qe,{className:"font-medium",children:Y.name}),e.jsx(Qe,{className:"max-w-xs truncate",title:Y.model_identifier,children:Y.model_identifier}),e.jsx(Qe,{children:Y.api_provider}),e.jsxs(Qe,{className:"text-right",children:["¥",Y.price_in,"/M"]}),e.jsxs(Qe,{className:"text-right",children:["¥",Y.price_out,"/M"]}),e.jsx(Qe,{className:"text-center",children:Y.force_stream_mode?"是":"否"}),e.jsx(Qe,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(y,{variant:"default",size:"sm",onClick:()=>Wt(Y,Ae),children:[e.jsx(nn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(y,{size:"sm",onClick:()=>Ba(Ae),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(es,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},fe)})})]})})}),kt.length>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"page-size-model",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(He,{value:de.toString(),onValueChange:Y=>{ge(parseInt(Y)),$(1),ie(new Set)},children:[e.jsx(Re,{id:"page-size-model",className:"w-20",children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"10",children:"10"}),e.jsx(ne,{value:"20",children:"20"}),e.jsx(ne,{value:"50",children:"50"}),e.jsx(ne,{value:"100",children:"100"})]})]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(xe-1)*de+1," 到"," ",Math.min(xe*de,kt.length)," 条,共 ",kt.length," 条"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{variant:"outline",size:"sm",onClick:()=>$(1),disabled:xe===1,className:"hidden sm:flex",children:e.jsx(wr,{className:"h-4 w-4"})}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>$(Y=>Math.max(1,Y-1)),disabled:xe===1,children:[e.jsx(cn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:le,onChange:Y=>L(Y.target.value),onKeyDown:Y=>Y.key==="Enter"&&dn(),placeholder:xe.toString(),className:"w-16 h-8 text-center",min:1,max:dl}),e.jsx(y,{variant:"outline",size:"sm",onClick:dn,disabled:!le,className:"h-8",children:"跳转"})]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>$(Y=>Y+1),disabled:xe>=dl,children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(il,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(y,{variant:"outline",size:"sm",onClick:()=>$(dl),disabled:xe>=dl,className:"hidden sm:flex",children:e.jsx(_r,{className:"h-4 w-4"})})]})]})]}),e.jsxs(We,{value:"tasks",className:"space-y-6 mt-0",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"为不同的任务配置使用的模型和参数"}),p&&e.jsxs("div",{className:"grid gap-4 sm:gap-6",children:[e.jsx(ya,{title:"组件模型 (utils)",description:"用于表情包、取名、关系、情绪变化等组件",taskConfig:p.utils,modelNames:f,onChange:(Y,fe)=>Bt("utils",Y,fe),dataTour:"task-model-select"}),e.jsx(ya,{title:"组件小模型 (utils_small)",description:"消耗量较大的组件,建议使用速度较快的小模型",taskConfig:p.utils_small,modelNames:f,onChange:(Y,fe)=>Bt("utils_small",Y,fe)}),e.jsx(ya,{title:"工具调用模型 (tool_use)",description:"需要使用支持工具调用的模型",taskConfig:p.tool_use,modelNames:f,onChange:(Y,fe)=>Bt("tool_use",Y,fe)}),e.jsx(ya,{title:"首要回复模型 (replyer)",description:"用于表达器和表达方式学习",taskConfig:p.replyer,modelNames:f,onChange:(Y,fe)=>Bt("replyer",Y,fe)}),e.jsx(ya,{title:"决策模型 (planner)",description:"负责决定麦麦该什么时候回复",taskConfig:p.planner,modelNames:f,onChange:(Y,fe)=>Bt("planner",Y,fe)}),e.jsx(ya,{title:"图像识别模型 (vlm)",description:"视觉语言模型",taskConfig:p.vlm,modelNames:f,onChange:(Y,fe)=>Bt("vlm",Y,fe),hideTemperature:!0}),e.jsx(ya,{title:"语音识别模型 (voice)",description:"语音转文字",taskConfig:p.voice,modelNames:f,onChange:(Y,fe)=>Bt("voice",Y,fe),hideTemperature:!0,hideMaxTokens:!0}),e.jsx(ya,{title:"嵌入模型 (embedding)",description:"用于向量化",taskConfig:p.embedding,modelNames:f,onChange:(Y,fe)=>Bt("embedding",Y,fe),hideTemperature:!0,hideMaxTokens:!0}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库模型"}),e.jsx(ya,{title:"实体提取模型 (lpmm_entity_extract)",description:"从文本中提取实体",taskConfig:p.lpmm_entity_extract,modelNames:f,onChange:(Y,fe)=>Bt("lpmm_entity_extract",Y,fe)}),e.jsx(ya,{title:"RDF 构建模型 (lpmm_rdf_build)",description:"构建知识图谱",taskConfig:p.lpmm_rdf_build,modelNames:f,onChange:(Y,fe)=>Bt("lpmm_rdf_build",Y,fe)}),e.jsx(ya,{title:"问答模型 (lpmm_qa)",description:"知识库问答",taskConfig:p.lpmm_qa,modelNames:f,onChange:(Y,fe)=>Bt("lpmm_qa",Y,fe)})]})]})]})]}),e.jsx(Rs,{open:X,onOpenChange:Ut,children:e.jsxs(zs,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"model-dialog",preventOutsideClose:Je.isRunning,children:[e.jsxs(Ms,{children:[e.jsx(As,{children:he!==null?"编辑模型":"添加模型"}),e.jsx(Ys,{children:"配置模型的基本信息和参数"})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":"model-name-input",children:[e.jsx(b,{htmlFor:"model_name",className:be.name?"text-destructive":"",children:"模型名称 *"}),e.jsx(ce,{id:"model_name",value:O?.name||"",onChange:Y=>{te(fe=>fe?{...fe,name:Y.target.value}:null),be.name&&Xe(fe=>({...fe,name:void 0}))},placeholder:"例如: qwen3-30b",className:be.name?"border-destructive focus-visible:ring-destructive":""}),be.name?e.jsx("p",{className:"text-xs text-destructive",children:be.name}):e.jsx("p",{className:"text-xs text-muted-foreground",children:"用于在任务配置中引用此模型"})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"model-provider-select",children:[e.jsx(b,{htmlFor:"api_provider",className:be.api_provider?"text-destructive":"",children:"API 提供商 *"}),e.jsxs(He,{value:O?.api_provider||"",onValueChange:Y=>{te(fe=>fe?{...fe,api_provider:Y}:null),D([]),ss(null),be.api_provider&&Xe(fe=>({...fe,api_provider:void 0}))},children:[e.jsx(Re,{id:"api_provider",className:be.api_provider?"border-destructive focus-visible:ring-destructive":"",children:e.jsx(qe,{placeholder:"选择提供商"})}),e.jsx(Le,{children:c.map(Y=>e.jsx(ne,{value:Y,children:Y},Y))})]}),be.api_provider&&e.jsx("p",{className:"text-xs text-destructive",children:be.api_provider})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"model-identifier-input",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{htmlFor:"model_identifier",className:be.model_identifier?"text-destructive":"",children:"模型标识符 *"}),Gs?.modelFetcher&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ye,{variant:"secondary",className:"text-xs",children:Gs.display_name}),e.jsx(y,{variant:"ghost",size:"sm",className:"h-6 px-2",onClick:()=>O?.api_provider&&Se(O.api_provider,!0),disabled:ee,children:ee?e.jsx(vt,{className:"h-3 w-3 animate-spin"}):e.jsx(pt,{className:"h-3 w-3"})})]})]}),Gs?.modelFetcher?e.jsxs(Oa,{open:Ze,onOpenChange:Ls,children:[e.jsx(Ra,{asChild:!0,children:e.jsxs(y,{variant:"outline",role:"combobox","aria-expanded":Ze,className:"w-full justify-between font-normal",disabled:ee||!!ze,children:[ee?e.jsxs("span",{className:"flex items-center gap-2 text-muted-foreground",children:[e.jsx(vt,{className:"h-4 w-4 animate-spin"}),"正在获取模型列表..."]}):ze?e.jsx("span",{className:"text-muted-foreground text-sm",children:"点击下方输入框手动填写"}):O?.model_identifier?e.jsx("span",{className:"truncate",children:O.model_identifier}):e.jsx("span",{className:"text-muted-foreground",children:"搜索或选择模型..."}),e.jsx(Qu,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(wa,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:e.jsxs(oo,{children:[e.jsx(uo,{placeholder:"搜索模型..."}),e.jsx(Pe,{className:"h-[300px]",children:e.jsxs(mo,{className:"max-h-none overflow-visible",children:[e.jsx(ho,{children:ze?e.jsxs("div",{className:"py-4 px-2 text-center space-y-2",children:[e.jsx("p",{className:"text-sm text-destructive",children:ze}),!ze.includes("API Key")&&e.jsx(y,{variant:"link",size:"sm",onClick:()=>O?.api_provider&&Se(O.api_provider,!0),children:"重试"})]}):"未找到匹配的模型"}),e.jsx(vr,{heading:"可用模型",children:F.map(Y=>e.jsxs(yr,{value:Y.id,onSelect:()=>{te(fe=>fe?{...fe,model_identifier:Y.id}:null),Ls(!1)},children:[e.jsx(fa,{className:`mr-2 h-4 w-4 ${O?.model_identifier===Y.id?"opacity-100":"opacity-0"}`}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{children:Y.id}),Y.name!==Y.id&&e.jsx("span",{className:"text-xs text-muted-foreground",children:Y.name})]})]},Y.id))}),e.jsx(vr,{heading:"手动输入",children:e.jsxs(yr,{value:"__manual_input__",onSelect:()=>{Ls(!1)},children:[e.jsx(nn,{className:"mr-2 h-4 w-4"}),"手动输入模型标识符..."]})})]})})]})})]}):e.jsx(ce,{id:"model_identifier",value:O?.model_identifier||"",onChange:Y=>{te(fe=>fe?{...fe,model_identifier:Y.target.value}:null),be.model_identifier&&Xe(fe=>({...fe,model_identifier:void 0}))},placeholder:"Qwen/Qwen3-30B-A3B-Instruct-2507",className:be.model_identifier?"border-destructive focus-visible:ring-destructive":""}),be.model_identifier&&e.jsx("p",{className:"text-xs text-destructive",children:be.model_identifier}),ze&&Gs?.modelFetcher&&!be.model_identifier&&e.jsxs(ha,{variant:"destructive",className:"mt-2 py-2",children:[e.jsx(Xt,{className:"h-4 w-4"}),e.jsx(xa,{className:"text-xs",children:ze})]}),Gs?.modelFetcher&&e.jsx(ce,{value:O?.model_identifier||"",onChange:Y=>{te(fe=>fe?{...fe,model_identifier:Y.target.value}:null),be.model_identifier&&Xe(fe=>({...fe,model_identifier:void 0}))},placeholder:"或手动输入模型标识符",className:`mt-2 ${be.model_identifier?"border-destructive focus-visible:ring-destructive":""}`}),!be.model_identifier&&e.jsx("p",{className:"text-xs text-muted-foreground",children:ze?'请手动输入模型标识符,或前往"模型提供商配置"检查 API Key':Gs?.modelFetcher?`已识别为 ${Gs.display_name},支持自动获取模型列表`:"API 提供商提供的模型 ID"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"price_in",children:"输入价格 (¥/M token)"}),e.jsx(ce,{id:"price_in",type:"number",step:"0.1",min:"0",value:O?.price_in??"",onChange:Y=>{const fe=Y.target.value===""?null:parseFloat(Y.target.value);te(Ae=>Ae?{...Ae,price_in:fe}:null)},placeholder:"默认: 0"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"price_out",children:"输出价格 (¥/M token)"}),e.jsx(ce,{id:"price_out",type:"number",step:"0.1",min:"0",value:O?.price_out??"",onChange:Y=>{const fe=Y.target.value===""?null:parseFloat(Y.target.value);te(Ae=>Ae?{...Ae,price_out:fe}:null)},placeholder:"默认: 0"})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"force_stream_mode",checked:O?.force_stream_mode||!1,onCheckedChange:Y=>te(fe=>fe?{...fe,force_stream_mode:Y}:null)}),e.jsx(b,{htmlFor:"force_stream_mode",className:"cursor-pointer",children:"强制流式输出模式"})]})]}),e.jsxs(Js,{children:[e.jsx(y,{variant:"outline",onClick:()=>S(!1),"data-tour":"model-cancel-button",children:"取消"}),e.jsx(y,{onClick:Ua,"data-tour":"model-save-button",children:"保存"})]})]})}),e.jsx(ps,{open:ye,onOpenChange:pe,children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:['确定要删除模型 "',je!==null?n[je]?.name:"",'" 吗? 此操作无法撤销。']})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:_a,children:"删除"})]})]})}),e.jsx(ps,{open:_,onOpenChange:me,children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认批量删除"}),e.jsxs(us,{children:["确定要删除选中的 ",q.size," 个模型吗? 此操作无法撤销。"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:tt,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),z&&e.jsx(Iu,{onRestartComplete:dt,onRestartFailed:di})]})})}function ya({title:n,description:r,taskConfig:c,modelNames:d,onChange:h,hideTemperature:x=!1,hideMaxTokens:f=!1,dataTour:j}){const p=w=>{h("model_list",w)};return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"font-semibold text-base sm:text-lg",children:n}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:r})]}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":j,children:[e.jsx(b,{children:"模型列表"}),e.jsx(ww,{options:d.map(w=>({label:w,value:w})),selected:c.model_list||[],onChange:p,placeholder:"选择模型...",emptyText:"暂无可用模型"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[!x&&e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:"温度"}),e.jsx(ce,{type:"number",step:"0.1",min:"0",max:"1",value:c.temperature??.3,onChange:w=>{const v=parseFloat(w.target.value);!isNaN(v)&&v>=0&&v<=1&&h("temperature",v)},className:"w-20 h-8 text-sm"})]}),e.jsx(Ma,{value:[c.temperature??.3],onValueChange:w=>h("temperature",w[0]),min:0,max:1,step:.1,className:"w-full"})]}),!f&&e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"最大 Token"}),e.jsx(ce,{type:"number",step:"1",min:"1",value:c.max_tokens??1024,onChange:w=>h("max_tokens",parseInt(w.target.value))})]})]})]})]})}const xo="/api/webui/config";async function Cw(){const r=await(await ke(`${xo}/adapter-config/path`)).json();return!r.success||!r.path?null:{path:r.path,lastModified:r.lastModified}}async function hp(n){const c=await(await ke(`${xo}/adapter-config/path`,{method:"POST",headers:Ts(),body:JSON.stringify({path:n})})).json();if(!c.success)throw new Error(c.message||"保存路径失败")}async function xp(n){const c=await(await ke(`${xo}/adapter-config?path=${encodeURIComponent(n)}`)).json();if(!c.success)throw new Error("读取配置文件失败");return c.content}async function fp(n,r){const d=await(await ke(`${xo}/adapter-config`,{method:"POST",headers:Ts(),body:JSON.stringify({path:n,content:r})})).json();if(!d.success)throw new Error(d.message||"保存配置失败")}const Yt={inner:{version:"0.1.2"},nickname:{nickname:""},napcat_server:{host:"localhost",port:8095,token:"",heartbeat_interval:30},maibot_server:{host:"localhost",port:8e3},chat:{group_list_type:"whitelist",group_list:[],private_list_type:"whitelist",private_list:[],ban_user_id:[],ban_qq_bot:!1,enable_poke:!0},voice:{use_tts:!1},debug:{level:"INFO"}},Du={oneclick:{name:"一键包",description:"使用一键包部署的适配器配置",path:"../MaiBot-Napcat-Adapter/config.toml",icon:rn},docker:{name:"Docker",description:"Docker Compose 部署的适配器配置",path:"/MaiMBot/adapters-config/config.toml",icon:LN}};function kw(){const[n,r]=u.useState("upload"),[c,d]=u.useState(null),[h,x]=u.useState(""),[f,j]=u.useState(""),[p,w]=u.useState("oneclick"),[v,k]=u.useState(""),[T,E]=u.useState(!1),[R,K]=u.useState(!1),[U,A]=u.useState(!1),[Z,H]=u.useState(!1),[z,B]=u.useState(null),X=u.useRef(null),{toast:S}=Hs(),O=u.useRef(null),te=L=>{if(!L.trim())return{valid:!1,error:"路径不能为空"};if(!L.toLowerCase().endsWith(".toml"))return{valid:!1,error:"文件必须是 .toml 格式"};const F=/^([a-zA-Z]:\\|\\\\[^\\]+\\[^\\]+\\).+\.toml$/i,D=/^(\/|~\/).+\.toml$/i,ee=/^(\.{1,2}[\\/]|[^:\\/]).+\.toml$/i,we=F.test(L),ze=D.test(L),ss=ee.test(L);return!we&&!ze&&!ss?{valid:!1,error:"路径格式错误"}:/[<>"|?*\x00-\x1F]/.test(L)?{valid:!1,error:"路径包含非法字符"}:{valid:!0,error:""}},he=L=>{if(j(L),L.trim()){const F=te(L);k(F.error)}else k("")},Ne=u.useCallback(async L=>{const F=Du[L];K(!0);try{const D=await xp(F.path),ee=xe(D);d(ee),w(L),j(F.path),await hp(F.path),S({title:"加载成功",description:`已从${F.name}预设加载配置`})}catch(D){console.error("加载预设配置失败:",D),S({title:"加载失败",description:D instanceof Error?D.message:"无法读取预设配置文件",variant:"destructive"})}finally{K(!1)}},[S]),ye=u.useCallback(async L=>{const F=te(L);if(!F.valid){k(F.error),S({title:"路径无效",description:F.error,variant:"destructive"});return}k(""),K(!0);try{const D=await xp(L),ee=xe(D);d(ee),j(L),await hp(L),S({title:"加载成功",description:"已从配置文件加载"})}catch(D){console.error("加载配置失败:",D),S({title:"加载失败",description:D instanceof Error?D.message:"无法读取配置文件",variant:"destructive"})}finally{K(!1)}},[S]);u.useEffect(()=>{(async()=>{try{const F=await Cw();if(F&&F.path){j(F.path);const D=Object.entries(Du).find(([,ee])=>ee.path===F.path);D?(r("preset"),w(D[0]),await Ne(D[0])):(r("path"),await ye(F.path))}}catch(F){console.error("加载保存的路径失败:",F)}})()},[ye,Ne]);const pe=u.useCallback(L=>{n!=="path"&&n!=="preset"||!f||(O.current&&clearTimeout(O.current),O.current=setTimeout(async()=>{E(!0);try{const F=$(L);await fp(f,F),S({title:"自动保存成功",description:"配置已保存到文件"})}catch(F){console.error("自动保存失败:",F),S({title:"自动保存失败",description:F instanceof Error?F.message:"保存配置失败",variant:"destructive"})}finally{E(!1)}},1e3))},[n,f,S]),je=async()=>{if(!c||!f)return;const L=te(f);if(!L.valid){S({title:"保存失败",description:L.error,variant:"destructive"});return}E(!0);try{const F=$(c);await fp(f,F),S({title:"保存成功",description:"配置已保存到文件"})}catch(F){console.error("保存失败:",F),S({title:"保存失败",description:F instanceof Error?F.message:"保存配置失败",variant:"destructive"})}finally{E(!1)}},_e=async()=>{f&&await ye(f)},N=L=>{if(L!==n){if(c){B(L),A(!0);return}G(L)}},G=L=>{d(null),x(""),k(""),r(L),L==="preset"&&Ne("oneclick"),S({title:"已切换模式",description:{upload:"现在可以上传配置文件",path:"现在可以指定配置文件路径",preset:"现在可以使用预设配置"}[L]})},q=()=>{z&&(G(z),B(null)),A(!1)},ie=()=>{if(c){H(!0);return}_()},_=()=>{j(""),d(null),k(""),S({title:"已清空",description:"路径和配置已清空"})},me=()=>{_(),H(!1)},xe=L=>{const F=JSON.parse(JSON.stringify(Yt)),D=L.split(` +`);let ee="";for(const we of D){const ze=we.trim();if(!ze||ze.startsWith("#"))continue;const ss=ze.match(/^\[(\w+)\]/);if(ss){ee=ss[1];continue}const Ze=ze.match(/^(\w+)\s*=\s*(.+)$/);if(Ze&&ee){const[,Ls,Gs]=Ze;let re=Gs.trim();const be=re.match(/^("[^"]*")/);if(be)re=be[1];else{const Ue=re.indexOf("#");Ue!==-1&&(re=re.substring(0,Ue).trim())}let Xe;if(re==="true")Xe=!0;else if(re==="false")Xe=!1;else if(re.startsWith("[")&&re.endsWith("]")){const Ue=re.slice(1,-1).trim();if(Ue){const st=Ue.split(",").map(bt=>{const Je=bt.trim();return isNaN(Number(Je))?Je.replace(/"/g,""):Number(Je)}),It=typeof st[0];Xe=st.every(bt=>typeof bt===It)?st:st.filter(bt=>typeof bt=="number")}else Xe=[]}else re.startsWith('"')&&re.endsWith('"')?Xe=re.slice(1,-1):isNaN(Number(re))?Xe=re.replace(/"/g,""):Xe=Number(re);if(ee in F){const Ue=F[ee];Ue[Ls]=Xe}}}return F},$=L=>{const F=[],D=(ee,we)=>ee===""||ee===null||ee===void 0?we:ee;return F.push("[inner]"),F.push(`version = "${D(L.inner.version,Yt.inner.version)}" # 版本号`),F.push("# 请勿修改版本号,除非你知道自己在做什么"),F.push(""),F.push("[nickname] # 现在没用"),F.push(`nickname = "${D(L.nickname.nickname,Yt.nickname.nickname)}"`),F.push(""),F.push("[napcat_server] # Napcat连接的ws服务设置"),F.push(`host = "${D(L.napcat_server.host,Yt.napcat_server.host)}" # Napcat设定的主机地址`),F.push(`port = ${D(L.napcat_server.port||0,Yt.napcat_server.port)} # Napcat设定的端口`),F.push(`token = "${D(L.napcat_server.token,Yt.napcat_server.token)}" # Napcat设定的访问令牌,若无则留空`),F.push(`heartbeat_interval = ${D(L.napcat_server.heartbeat_interval||0,Yt.napcat_server.heartbeat_interval)} # 与Napcat设置的心跳相同(按秒计)`),F.push(""),F.push("[maibot_server] # 连接麦麦的ws服务设置"),F.push(`host = "${D(L.maibot_server.host,Yt.maibot_server.host)}" # 麦麦在.env文件中设置的主机地址,即HOST字段`),F.push(`port = ${D(L.maibot_server.port||0,Yt.maibot_server.port)} # 麦麦在.env文件中设置的端口,即PORT字段`),F.push(""),F.push("[chat] # 黑白名单功能"),F.push(`group_list_type = "${D(L.chat.group_list_type,Yt.chat.group_list_type)}" # 群组名单类型,可选为:whitelist, blacklist`),F.push(`group_list = [${L.chat.group_list.join(", ")}] # 群组名单`),F.push("# 当group_list_type为whitelist时,只有群组名单中的群组可以聊天"),F.push("# 当group_list_type为blacklist时,群组名单中的任何群组无法聊天"),F.push(`private_list_type = "${D(L.chat.private_list_type,Yt.chat.private_list_type)}" # 私聊名单类型,可选为:whitelist, blacklist`),F.push(`private_list = [${L.chat.private_list.join(", ")}] # 私聊名单`),F.push("# 当private_list_type为whitelist时,只有私聊名单中的用户可以聊天"),F.push("# 当private_list_type为blacklist时,私聊名单中的任何用户无法聊天"),F.push(`ban_user_id = [${L.chat.ban_user_id.join(", ")}] # 全局禁止名单(全局禁止名单中的用户无法进行任何聊天)`),F.push(`ban_qq_bot = ${L.chat.ban_qq_bot} # 是否屏蔽QQ官方机器人`),F.push(`enable_poke = ${L.chat.enable_poke} # 是否启用戳一戳功能`),F.push(""),F.push("[voice] # 发送语音设置"),F.push(`use_tts = ${L.voice.use_tts} # 是否使用tts语音(请确保你配置了tts并有对应的adapter)`),F.push(""),F.push("[debug]"),F.push(`level = "${D(L.debug.level,Yt.debug.level)}" # 日志等级(DEBUG, INFO, WARNING, ERROR, CRITICAL)`),F.join(` +`)},de=L=>{const F=L.target.files?.[0];if(!F)return;const D=new FileReader;D.onload=ee=>{try{const we=ee.target?.result,ze=xe(we);d(ze),x(F.name),S({title:"上传成功",description:`已加载配置文件:${F.name}`})}catch(we){console.error("解析配置文件失败:",we),S({title:"解析失败",description:"配置文件格式错误,请检查文件内容",variant:"destructive"})}},D.readAsText(F)},ge=()=>{if(!c)return;const L=$(c),F=new Blob([L],{type:"text/plain;charset=utf-8"}),D=URL.createObjectURL(F),ee=document.createElement("a");ee.href=D,ee.download=h||"config.toml",document.body.appendChild(ee),ee.click(),document.body.removeChild(ee),URL.revokeObjectURL(D),S({title:"下载成功",description:"配置文件已下载,请手动覆盖并重启适配器"})},le=()=>{d(JSON.parse(JSON.stringify(Yt))),x("config.toml"),S({title:"已加载默认配置",description:"可以开始编辑配置"})};return e.jsx(Pe,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦适配器配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的 QQ 适配器的配置文件"})]})}),e.jsxs("div",{className:"flex items-start gap-2 p-3 rounded-lg border border-amber-500/50 bg-amber-500/10 text-amber-700 dark:text-amber-400",children:[e.jsx(Da,{className:"h-4 w-4 mt-0.5 flex-shrink-0"}),e.jsx("p",{className:"text-sm",children:"适配器配置保存之后使用 WebUI 的重启功能适配器并不会重启,需要手动重启适配器。"})]}),e.jsxs(Fe,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"工作模式"}),e.jsx(Zs,{children:"选择配置文件的管理方式"})]}),e.jsxs(bs,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3 md:gap-4",children:[e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="preset"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>N("preset"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(rn,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"预设模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"使用预设的部署配置"})]})]})}),e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="upload"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>N("upload"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(hr,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"上传文件模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"上传配置文件,编辑后下载并手动覆盖"})]})]})}),e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="path"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>N("path"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(UN,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"指定路径模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"指定配置文件路径,自动加载和保存"})]})]})})]}),n==="preset"&&e.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[e.jsx(b,{className:"text-sm md:text-base",children:"选择部署方式"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:Object.entries(Du).map(([L,F])=>{const D=F.icon,ee=p===L;return e.jsx("div",{className:`border-2 rounded-lg p-3 cursor-pointer transition-all ${ee?"border-primary bg-primary/5":"border-muted hover:border-primary/50"}`,onClick:()=>{w(L),Ne(L)},children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(D,{className:"h-5 w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h4",{className:"font-semibold text-sm",children:F.name}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:F.description}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1 font-mono break-all",children:F.path})]})]})},L)})})]}),n==="path"&&e.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"config-path",className:"text-sm md:text-base",children:"配置文件路径"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs("div",{className:"flex-1 space-y-1",children:[e.jsx(ce,{id:"config-path",value:f,onChange:L=>he(L.target.value),placeholder:"例: C:\\Adapter\\config.toml",className:`text-sm ${v?"border-destructive":""}`}),v&&e.jsx("p",{className:"text-xs text-destructive",children:v})]}),e.jsx(y,{onClick:()=>ye(f),disabled:R||!f||!!v,className:"w-full sm:w-auto",children:R?e.jsxs(e.Fragment,{children:[e.jsx(pt,{className:"h-4 w-4 animate-spin mr-2"}),e.jsx("span",{className:"sm:hidden",children:"加载中..."})]}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"sm:hidden",children:"加载配置"}),e.jsx("span",{className:"hidden sm:inline",children:"加载"})]})})]})]}),e.jsxs("details",{className:"rounded-lg bg-muted/50 p-3 group",children:[e.jsxs("summary",{className:"text-xs font-medium cursor-pointer select-none list-none flex items-center justify-between",children:[e.jsx("span",{children:"路径格式说明"}),e.jsx("svg",{className:"h-4 w-4 transition-transform group-open:rotate-180",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),e.jsxs("div",{className:"mt-2 space-y-2 text-xs text-muted-foreground",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Windows"})}),e.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[e.jsx("div",{children:"C:\\Adapter\\config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"D:\\MaiBot\\adapter\\config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"\\\\server\\share\\config.toml"})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Linux"})}),e.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[e.jsx("div",{children:"/opt/adapter/config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"/home/user/adapter/config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"~/adapter/config.toml"})]})]}),e.jsx("p",{className:"pt-1 border-t text-[10px] md:text-xs",children:"💡 配置会自动保存到指定文件,修改后 1 秒自动保存"})]})]})]})]})]}),e.jsxs(ha,{children:[e.jsx(Xt,{className:"h-4 w-4"}),e.jsx(xa,{children:n==="preset"?e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"预设模式:"}),"选择预设的部署方式,配置会自动加载,修改后 1 秒自动保存",T&&" (正在保存...)"]}):n==="upload"?e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"上传文件模式:"}),"上传配置文件 → 在线编辑 → 下载文件 → 手动覆盖并重启适配器"]}):e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"指定路径模式:"}),"指定配置文件路径后,配置会自动加载,修改后 1 秒自动保存",T&&" (正在保存...)"]})})]}),n==="upload"&&!c&&e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 w-full",children:[e.jsx("input",{ref:X,type:"file",accept:".toml",className:"hidden",onChange:de}),e.jsxs(y,{onClick:()=>X.current?.click(),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(hr,{className:"mr-2 h-4 w-4"}),"上传配置"]}),e.jsxs(y,{onClick:le,size:"sm",className:"w-full sm:w-auto",children:[e.jsx(Aa,{className:"mr-2 h-4 w-4"}),"使用默认配置"]})]}),n==="upload"&&c&&e.jsx("div",{className:"flex gap-2",children:e.jsxs(y,{onClick:ge,size:"sm",className:"w-full sm:w-auto",children:[e.jsx(nl,{className:"mr-2 h-4 w-4"}),"下载配置"]})}),(n==="preset"||n==="path")&&c&&e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs(y,{onClick:je,size:"sm",disabled:T||!!v,className:"w-full sm:w-auto",children:[e.jsx(br,{className:"mr-2 h-4 w-4"}),T?"保存中...":"立即保存"]}),e.jsxs(y,{onClick:_e,size:"sm",variant:"outline",disabled:R,className:"w-full sm:w-auto",children:[e.jsx(pt,{className:`mr-2 h-4 w-4 ${R?"animate-spin":""}`}),"刷新"]}),n==="path"&&e.jsxs(y,{onClick:ie,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(es,{className:"mr-2 h-4 w-4"}),"清空路径"]})]}),c?e.jsxs(Kt,{defaultValue:"napcat",className:"w-full",children:[e.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:e.jsxs(Rt,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5",children:[e.jsxs($e,{value:"napcat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"Napcat 连接"}),e.jsx("span",{className:"sm:hidden",children:"Napcat"})]}),e.jsxs($e,{value:"maibot",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"麦麦连接"}),e.jsx("span",{className:"sm:hidden",children:"麦麦"})]}),e.jsxs($e,{value:"chat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"聊天控制"}),e.jsx("span",{className:"sm:hidden",children:"聊天"})]}),e.jsxs($e,{value:"voice",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"语音设置"}),e.jsx("span",{className:"sm:hidden",children:"语音"})]}),e.jsx($e,{value:"debug",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:"调试"})]})}),e.jsx(We,{value:"napcat",className:"space-y-4",children:e.jsx(Tw,{config:c,onChange:L=>{d(L),pe(L)}})}),e.jsx(We,{value:"maibot",className:"space-y-4",children:e.jsx(Ew,{config:c,onChange:L=>{d(L),pe(L)}})}),e.jsx(We,{value:"chat",className:"space-y-4",children:e.jsx(zw,{config:c,onChange:L=>{d(L),pe(L)}})}),e.jsx(We,{value:"voice",className:"space-y-4",children:e.jsx(Mw,{config:c,onChange:L=>{d(L),pe(L)}})}),e.jsx(We,{value:"debug",className:"space-y-4",children:e.jsx(Aw,{config:c,onChange:L=>{d(L),pe(L)}})})]}):e.jsx("div",{className:"rounded-lg border bg-card p-6 md:p-12",children:e.jsxs("div",{className:"text-center space-y-3 md:space-y-4",children:[e.jsx(Aa,{className:"h-12 w-12 md:h-16 md:w-16 mx-auto text-muted-foreground"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold",children:"尚未加载配置"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-2 px-4",children:n==="preset"?"请选择预设的部署方式":n==="upload"?"请上传现有配置文件,或使用默认配置开始编辑":"请指定配置文件路径并点击加载按钮"})]})]})}),e.jsx(ps,{open:U,onOpenChange:A,children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认切换模式"}),e.jsxs(us,{children:["切换模式将清空当前配置,确定要继续吗?",e.jsx("br",{}),e.jsx("span",{className:"text-destructive font-medium",children:"请确保已保存重要配置"})]})]}),e.jsxs(os,{children:[e.jsx(hs,{onClick:()=>{A(!1),B(null)},children:"取消"}),e.jsx(ms,{onClick:q,children:"确认切换"})]})]})}),e.jsx(ps,{open:Z,onOpenChange:H,children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认清空路径"}),e.jsxs(us,{children:["清空路径将清除当前配置,确定要继续吗?",e.jsx("br",{}),e.jsx("span",{className:"text-muted-foreground text-sm",children:"此操作不会删除配置文件,只是清除界面中的配置"})]})]}),e.jsxs(os,{children:[e.jsx(hs,{onClick:()=>H(!1),children:"取消"}),e.jsx(ms,{onClick:me,className:"bg-destructive hover:bg-destructive/90",children:"确认清空"})]})]})})]})})}function Tw({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"Napcat WebSocket 服务设置"}),e.jsxs("div",{className:"grid gap-3 md:gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"napcat-host",className:"text-sm md:text-base",children:"主机地址"}),e.jsx(ce,{id:"napcat-host",value:n.napcat_server.host,onChange:c=>r({...n,napcat_server:{...n.napcat_server,host:c.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的主机地址"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"napcat-port",className:"text-sm md:text-base",children:"端口"}),e.jsx(ce,{id:"napcat-port",type:"number",value:n.napcat_server.port||"",onChange:c=>r({...n,napcat_server:{...n.napcat_server,port:c.target.value?parseInt(c.target.value):0}}),placeholder:"8095",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的端口(留空使用默认值 8095)"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"napcat-token",className:"text-sm md:text-base",children:"访问令牌(Token)"}),e.jsx(ce,{id:"napcat-token",type:"password",value:n.napcat_server.token,onChange:c=>r({...n,napcat_server:{...n.napcat_server,token:c.target.value}}),placeholder:"留空表示无需令牌",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的访问令牌,若无则留空"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"napcat-heartbeat",className:"text-sm md:text-base",children:"心跳间隔(秒)"}),e.jsx(ce,{id:"napcat-heartbeat",type:"number",value:n.napcat_server.heartbeat_interval||"",onChange:c=>r({...n,napcat_server:{...n.napcat_server,heartbeat_interval:c.target.value?parseInt(c.target.value):0}}),placeholder:"30",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"与 Napcat 设置的心跳间隔保持一致(留空使用默认值 30)"})]})]})]})})}function Ew({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"麦麦 WebSocket 服务设置"}),e.jsxs("div",{className:"grid gap-3 md:gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"maibot-host",className:"text-sm md:text-base",children:"主机地址"}),e.jsx(ce,{id:"maibot-host",value:n.maibot_server.host,onChange:c=>r({...n,maibot_server:{...n.maibot_server,host:c.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 HOST 字段"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"maibot-port",className:"text-sm md:text-base",children:"端口"}),e.jsx(ce,{id:"maibot-port",type:"number",value:n.maibot_server.port||"",onChange:c=>r({...n,maibot_server:{...n.maibot_server,port:c.target.value?parseInt(c.target.value):0}}),placeholder:"8000",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 PORT 字段(留空使用默认值 8000)"})]})]})]})})}function zw({config:n,onChange:r}){const c=x=>{const f={...n};x==="group"?f.chat.group_list=[...f.chat.group_list,0]:x==="private"?f.chat.private_list=[...f.chat.private_list,0]:f.chat.ban_user_id=[...f.chat.ban_user_id,0],r(f)},d=(x,f)=>{const j={...n};x==="group"?j.chat.group_list=j.chat.group_list.filter((p,w)=>w!==f):x==="private"?j.chat.private_list=j.chat.private_list.filter((p,w)=>w!==f):j.chat.ban_user_id=j.chat.ban_user_id.filter((p,w)=>w!==f),r(j)},h=(x,f,j)=>{const p={...n};x==="group"?p.chat.group_list[f]=j:x==="private"?p.chat.private_list[f]=j:p.chat.ban_user_id[f]=j,r(p)};return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"聊天黑白名单功能"}),e.jsxs("div",{className:"grid gap-4 md:gap-6",children:[e.jsxs("div",{className:"space-y-3 md:space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-sm md:text-base",children:"群组名单类型"}),e.jsxs(He,{value:n.chat.group_list_type,onValueChange:x=>r({...n,chat:{...n.chat,group_list_type:x}}),children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),e.jsx(ne,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsx(b,{className:"text-sm md:text-base",children:"群组列表"}),e.jsxs(y,{onClick:()=>c("group"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Aa,{className:"mr-1 h-4 w-4"}),"添加群号"]})]}),n.chat.group_list.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{type:"number",value:x,onChange:j=>h("group",f,parseInt(j.target.value)||0),placeholder:"输入群号",className:"text-sm md:text-base"}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(y,{size:"icon",variant:"outline",children:e.jsx(es,{className:"h-4 w-4"})})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:["确定要删除群号 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>d("group",f),children:"删除"})]})]})]})]},f)),n.chat.group_list.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无群组"})]})]}),e.jsxs("div",{className:"space-y-3 md:space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-sm md:text-base",children:"私聊名单类型"}),e.jsxs(He,{value:n.chat.private_list_type,onValueChange:x=>r({...n,chat:{...n.chat,private_list_type:x}}),children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),e.jsx(ne,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsx(b,{className:"text-sm md:text-base",children:"私聊列表"}),e.jsxs(y,{onClick:()=>c("private"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Aa,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),n.chat.private_list.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{type:"number",value:x,onChange:j=>h("private",f,parseInt(j.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(y,{size:"icon",variant:"outline",children:e.jsx(es,{className:"h-4 w-4"})})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:["确定要删除用户 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>d("private",f),children:"删除"})]})]})]})]},f)),n.chat.private_list.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无用户"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-sm md:text-base",children:"全局禁止名单"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"名单中的用户无法进行任何聊天"})]}),e.jsxs(y,{onClick:()=>c("ban"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Aa,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),n.chat.ban_user_id.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{type:"number",value:x,onChange:j=>h("ban",f,parseInt(j.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(y,{size:"icon",variant:"outline",children:e.jsx(es,{className:"h-4 w-4"})})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:["确定要从全局禁止名单中删除用户 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>d("ban",f),children:"删除"})]})]})]})]},f)),n.chat.ban_user_id.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无禁止用户"})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-sm md:text-base",children:"屏蔽QQ官方机器人"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否屏蔽来自QQ官方机器人的消息"})]}),e.jsx(Ve,{checked:n.chat.ban_qq_bot,onCheckedChange:x=>r({...n,chat:{...n.chat,ban_qq_bot:x}})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-sm md:text-base",children:"启用戳一戳功能"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否响应戳一戳消息"})]}),e.jsx(Ve,{checked:n.chat.enable_poke,onCheckedChange:x=>r({...n,chat:{...n.chat,enable_poke:x}})})]})]})]})})}function Mw({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"发送语音设置"}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-sm md:text-base",children:"使用 TTS 语音"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"请确保已配置 TTS 并有对应的适配器"})]}),e.jsx(Ve,{checked:n.voice.use_tts,onCheckedChange:c=>r({...n,voice:{use_tts:c}})})]})]})})}function Aw({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"调试设置"}),e.jsx("div",{className:"grid gap-3 md:gap-4",children:e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-sm md:text-base",children:"日志等级"}),e.jsxs(He,{value:n.debug.level,onValueChange:c=>r({...n,debug:{level:c}}),children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"DEBUG",children:"DEBUG(调试)"}),e.jsx(ne,{value:"INFO",children:"INFO(信息)"}),e.jsx(ne,{value:"WARNING",children:"WARNING(警告)"}),e.jsx(ne,{value:"ERROR",children:"ERROR(错误)"}),e.jsx(ne,{value:"CRITICAL",children:"CRITICAL(严重)"})]})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"设置适配器的日志输出等级"})]})})]})})}const Dw=["defaultChecked","defaultValue","suppressContentEditableWarning","suppressHydrationWarning","dangerouslySetInnerHTML","accessKey","className","contentEditable","contextMenu","dir","draggable","hidden","id","lang","placeholder","slot","spellCheck","style","tabIndex","title","translate","radioGroup","role","about","datatype","inlist","prefix","property","resource","typeof","vocab","autoCapitalize","autoCorrect","autoSave","color","itemProp","itemScope","itemType","itemID","itemRef","results","security","unselectable","inputMode","is","onCopy","onCopyCapture","onCut","onCutCapture","onPaste","onPasteCapture","onCompositionEnd","onCompositionEndCapture","onCompositionStart","onCompositionStartCapture","onCompositionUpdate","onCompositionUpdateCapture","onFocus","onFocusCapture","onBlur","onBlurCapture","onChange","onChangeCapture","onBeforeInput","onBeforeInputCapture","onInput","onInputCapture","onReset","onResetCapture","onSubmit","onSubmitCapture","onInvalid","onInvalidCapture","onLoad","onLoadCapture","onError","onErrorCapture","onKeyDown","onKeyDownCapture","onKeyPress","onKeyPressCapture","onKeyUp","onKeyUpCapture","onAbort","onAbortCapture","onCanPlay","onCanPlayCapture","onCanPlayThrough","onCanPlayThroughCapture","onDurationChange","onDurationChangeCapture","onEmptied","onEmptiedCapture","onEncrypted","onEncryptedCapture","onEnded","onEndedCapture","onLoadedData","onLoadedDataCapture","onLoadedMetadata","onLoadedMetadataCapture","onLoadStart","onLoadStartCapture","onPause","onPauseCapture","onPlay","onPlayCapture","onPlaying","onPlayingCapture","onProgress","onProgressCapture","onRateChange","onRateChangeCapture","onSeeked","onSeekedCapture","onSeeking","onSeekingCapture","onStalled","onStalledCapture","onSuspend","onSuspendCapture","onTimeUpdate","onTimeUpdateCapture","onVolumeChange","onVolumeChangeCapture","onWaiting","onWaitingCapture","onAuxClick","onAuxClickCapture","onClick","onClickCapture","onContextMenu","onContextMenuCapture","onDoubleClick","onDoubleClickCapture","onDrag","onDragCapture","onDragEnd","onDragEndCapture","onDragEnter","onDragEnterCapture","onDragExit","onDragExitCapture","onDragLeave","onDragLeaveCapture","onDragOver","onDragOverCapture","onDragStart","onDragStartCapture","onDrop","onDropCapture","onMouseDown","onMouseDownCapture","onMouseEnter","onMouseLeave","onMouseMove","onMouseMoveCapture","onMouseOut","onMouseOutCapture","onMouseOver","onMouseOverCapture","onMouseUp","onMouseUpCapture","onSelect","onSelectCapture","onTouchCancel","onTouchCancelCapture","onTouchEnd","onTouchEndCapture","onTouchMove","onTouchMoveCapture","onTouchStart","onTouchStartCapture","onPointerDown","onPointerDownCapture","onPointerMove","onPointerMoveCapture","onPointerUp","onPointerUpCapture","onPointerCancel","onPointerCancelCapture","onPointerEnter","onPointerEnterCapture","onPointerLeave","onPointerLeaveCapture","onPointerOver","onPointerOverCapture","onPointerOut","onPointerOutCapture","onGotPointerCapture","onGotPointerCaptureCapture","onLostPointerCapture","onLostPointerCaptureCapture","onScroll","onScrollCapture","onWheel","onWheelCapture","onAnimationStart","onAnimationStartCapture","onAnimationEnd","onAnimationEndCapture","onAnimationIteration","onAnimationIterationCapture","onTransitionEnd","onTransitionEndCapture"],Ow=/^(aria-|data-)/,Vg=n=>Object.fromEntries(Object.entries(n).filter(([r])=>Ow.test(r)||Dw.includes(r)));function Rw(n,r){const c=Vg(n);return Object.keys(n).some(d=>!Object.hasOwn(c,d)&&n[d]!==r[d])}class Lw extends u.Component{container;plugin;componentDidMount(){this.installPlugin()}componentDidUpdate(r){if(r.uppy!==this.props.uppy)this.uninstallPlugin(r),this.installPlugin();else if(Rw(this.props,r)){const{uppy:c,...d}={...this.props,target:this.container};this.plugin.setOptions(d)}}componentWillUnmount(){this.uninstallPlugin()}installPlugin(){const{uppy:r,...c}={id:"Dashboard",...this.props,inline:!0,target:this.container};r.use(yb,c),this.plugin=r.getPlugin(c.id)}uninstallPlugin(r=this.props){const{uppy:c}=r;c.removePlugin(this.plugin)}render(){return u.createElement("div",{className:"uppy-Container",ref:r=>{this.container=r},...Vg(this.props)})}}function Uw({content:n,className:r=""}){return e.jsx("div",{className:`prose prose-sm dark:prose-invert max-w-none ${r}`,children:e.jsx(bb,{remarkPlugins:[_b,Sb],rehypePlugins:[wb],components:{code({inline:c,className:d,children:h,...x}){return c?e.jsx("code",{className:"bg-muted px-1.5 py-0.5 rounded text-sm font-mono",...x,children:h}):e.jsx("code",{className:`${d} block bg-muted p-4 rounded-lg overflow-x-auto`,...x,children:h})},table({children:c,...d}){return e.jsx("div",{className:"overflow-x-auto",children:e.jsx("table",{className:"border-collapse border border-border",...d,children:c})})},th({children:c,...d}){return e.jsx("th",{className:"border border-border bg-muted px-4 py-2 text-left font-semibold",...d,children:c})},td({children:c,...d}){return e.jsx("td",{className:"border border-border px-4 py-2",...d,children:c})},a({children:c,...d}){return e.jsx("a",{className:"text-primary hover:underline",target:"_blank",rel:"noopener noreferrer",...d,children:c})},blockquote({children:c,...d}){return e.jsx("blockquote",{className:"border-l-4 border-primary pl-4 italic text-muted-foreground",...d,children:c})},h1({children:c,...d}){return e.jsx("h1",{className:"text-3xl font-bold mt-6 mb-4",...d,children:c})},h2({children:c,...d}){return e.jsx("h2",{className:"text-2xl font-bold mt-5 mb-3",...d,children:c})},h3({children:c,...d}){return e.jsx("h3",{className:"text-xl font-bold mt-4 mb-2",...d,children:c})},h4({children:c,...d}){return e.jsx("h4",{className:"text-lg font-semibold mt-3 mb-2",...d,children:c})},ul({children:c,...d}){return e.jsx("ul",{className:"list-disc list-inside space-y-1 my-2",...d,children:c})},ol({children:c,...d}){return e.jsx("ol",{className:"list-decimal list-inside space-y-1 my-2",...d,children:c})},p({children:c,...d}){return e.jsx("p",{className:"my-2 leading-relaxed",...d,children:c})},hr({...c}){return e.jsx("hr",{className:"my-4 border-border",...c})}},children:n})})}function Bw({children:n,className:r}){return e.jsx(Uw,{content:n,className:r})}const La="/api/webui/emoji";async function Hw(n){const r=new URLSearchParams;n.page&&r.append("page",n.page.toString()),n.page_size&&r.append("page_size",n.page_size.toString()),n.search&&r.append("search",n.search),n.is_registered!==void 0&&r.append("is_registered",n.is_registered.toString()),n.is_banned!==void 0&&r.append("is_banned",n.is_banned.toString()),n.format&&r.append("format",n.format),n.sort_by&&r.append("sort_by",n.sort_by),n.sort_order&&r.append("sort_order",n.sort_order);const c=await ke(`${La}/list?${r}`,{});if(!c.ok)throw new Error(`获取表情包列表失败: ${c.statusText}`);return c.json()}async function qw(n){const r=await ke(`${La}/${n}`,{});if(!r.ok)throw new Error(`获取表情包详情失败: ${r.statusText}`);return r.json()}async function Gw(n,r){const c=await ke(`${La}/${n}`,{method:"PATCH",body:JSON.stringify(r)});if(!c.ok)throw new Error(`更新表情包失败: ${c.statusText}`);return c.json()}async function Vw(n){const r=await ke(`${La}/${n}`,{method:"DELETE"});if(!r.ok)throw new Error(`删除表情包失败: ${r.statusText}`);return r.json()}async function Fw(){const n=await ke(`${La}/stats/summary`,{});if(!n.ok)throw new Error(`获取统计数据失败: ${n.statusText}`);return n.json()}async function $w(n){const r=await ke(`${La}/${n}/register`,{method:"POST"});if(!r.ok)throw new Error(`注册表情包失败: ${r.statusText}`);return r.json()}async function Qw(n){const r=await ke(`${La}/${n}/ban`,{method:"POST"});if(!r.ok)throw new Error(`封禁表情包失败: ${r.statusText}`);return r.json()}function Fg(n){return`${La}/${n}/thumbnail`}async function Yw(n){const r=await ke(`${La}/batch/delete`,{method:"POST",body:JSON.stringify({emoji_ids:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"批量删除失败")}return r.json()}function Xw(){return`${La}/upload`}function Kw(){const[n,r]=u.useState([]),[c,d]=u.useState(null),[h,x]=u.useState(!1),[f,j]=u.useState(1),[p,w]=u.useState(0),[v,k]=u.useState(20),[T,E]=u.useState("all"),[R,K]=u.useState("all"),[U,A]=u.useState("all"),[Z,H]=u.useState("usage_count"),[z,B]=u.useState("desc"),[X,S]=u.useState(null),[O,te]=u.useState(!1),[he,Ne]=u.useState(!1),[ye,pe]=u.useState(!1),[je,_e]=u.useState(new Set),[N,G]=u.useState(!1),[q,ie]=u.useState(""),[_,me]=u.useState("medium"),[xe,$]=u.useState(!1),{toast:de}=Hs(),ge=u.useCallback(async()=>{try{x(!0);const re=await Hw({page:f,page_size:v,is_registered:T==="all"?void 0:T==="registered",is_banned:R==="all"?void 0:R==="banned",format:U==="all"?void 0:U,sort_by:Z,sort_order:z});r(re.data),w(re.total)}catch(re){const be=re instanceof Error?re.message:"加载表情包列表失败";de({title:"错误",description:be,variant:"destructive"})}finally{x(!1)}},[f,v,T,R,U,Z,z,de]),le=async()=>{try{const re=await Fw();d(re.data)}catch(re){console.error("加载统计数据失败:",re)}};u.useEffect(()=>{ge()},[ge]),u.useEffect(()=>{le()},[]);const L=async re=>{try{const be=await qw(re.id);S(be.data),te(!0)}catch(be){const Xe=be instanceof Error?be.message:"加载详情失败";de({title:"错误",description:Xe,variant:"destructive"})}},F=re=>{S(re),Ne(!0)},D=re=>{S(re),pe(!0)},ee=async()=>{if(X)try{await Vw(X.id),de({title:"成功",description:"表情包已删除"}),pe(!1),S(null),ge(),le()}catch(re){const be=re instanceof Error?re.message:"删除失败";de({title:"错误",description:be,variant:"destructive"})}},we=async re=>{try{await $w(re.id),de({title:"成功",description:"表情包已注册"}),ge(),le()}catch(be){const Xe=be instanceof Error?be.message:"注册失败";de({title:"错误",description:Xe,variant:"destructive"})}},ze=async re=>{try{await Qw(re.id),de({title:"成功",description:"表情包已封禁"}),ge(),le()}catch(be){const Xe=be instanceof Error?be.message:"封禁失败";de({title:"错误",description:Xe,variant:"destructive"})}},ss=re=>{const be=new Set(je);be.has(re)?be.delete(re):be.add(re),_e(be)},Ze=async()=>{try{const re=await Yw(Array.from(je));de({title:"批量删除完成",description:re.message}),_e(new Set),G(!1),ge(),le()}catch(re){de({title:"批量删除失败",description:re instanceof Error?re.message:"批量删除失败",variant:"destructive"})}},Ls=()=>{const re=parseInt(q),be=Math.ceil(p/v);re>=1&&re<=be?(j(re),ie("")):de({title:"无效的页码",description:`请输入1-${be}之间的页码`,variant:"destructive"})},Gs=c?.formats?Object.keys(c.formats):[];return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsxs("div",{className:"mb-4 sm:mb-6 flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"表情包管理"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理麦麦的表情包资源"})]}),e.jsxs(y,{onClick:()=>$(!0),className:"gap-2",children:[e.jsx(hr,{className:"h-4 w-4"}),"上传表情包"]})]}),e.jsx(Pe,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[c&&e.jsxs("div",{className:"grid gap-4 grid-cols-2 lg:grid-cols-4",children:[e.jsx(Fe,{children:e.jsxs(gs,{className:"pb-2",children:[e.jsx(Zs,{children:"总数"}),e.jsx(js,{className:"text-2xl",children:c.total})]})}),e.jsx(Fe,{children:e.jsxs(gs,{className:"pb-2",children:[e.jsx(Zs,{children:"已注册"}),e.jsx(js,{className:"text-2xl text-green-600",children:c.registered})]})}),e.jsx(Fe,{children:e.jsxs(gs,{className:"pb-2",children:[e.jsx(Zs,{children:"已封禁"}),e.jsx(js,{className:"text-2xl text-red-600",children:c.banned})]})}),e.jsx(Fe,{children:e.jsxs(gs,{className:"pb-2",children:[e.jsx(Zs,{children:"未注册"}),e.jsx(js,{className:"text-2xl text-gray-600",children:c.unregistered})]})})]}),e.jsxs(Fe,{children:[e.jsx(gs,{children:e.jsxs(js,{className:"flex items-center gap-2",children:[e.jsx(Lu,{className:"h-5 w-5"}),"筛选和排序"]})}),e.jsxs(bs,{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"排序方式"}),e.jsxs(He,{value:`${Z}-${z}`,onValueChange:re=>{const[be,Xe]=re.split("-");H(be),B(Xe),j(1)},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"usage_count-desc",children:"使用次数 (多→少)"}),e.jsx(ne,{value:"usage_count-asc",children:"使用次数 (少→多)"}),e.jsx(ne,{value:"register_time-desc",children:"注册时间 (新→旧)"}),e.jsx(ne,{value:"register_time-asc",children:"注册时间 (旧→新)"}),e.jsx(ne,{value:"record_time-desc",children:"记录时间 (新→旧)"}),e.jsx(ne,{value:"record_time-asc",children:"记录时间 (旧→新)"}),e.jsx(ne,{value:"last_used_time-desc",children:"最后使用 (新→旧)"}),e.jsx(ne,{value:"last_used_time-asc",children:"最后使用 (旧→新)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"注册状态"}),e.jsxs(He,{value:T,onValueChange:re=>{E(re),j(1)},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部"}),e.jsx(ne,{value:"registered",children:"已注册"}),e.jsx(ne,{value:"unregistered",children:"未注册"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"封禁状态"}),e.jsxs(He,{value:R,onValueChange:re=>{K(re),j(1)},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部"}),e.jsx(ne,{value:"banned",children:"已封禁"}),e.jsx(ne,{value:"unbanned",children:"未封禁"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"格式"}),e.jsxs(He,{value:U,onValueChange:re=>{A(re),j(1)},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部"}),Gs.map(re=>e.jsxs(ne,{value:re,children:[re.toUpperCase()," (",c?.formats[re],")"]},re))]})]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 pt-4 border-t",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[je.size>0&&e.jsxs("span",{className:"text-sm text-muted-foreground",children:["已选择 ",je.size," 个表情包"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{className:"text-sm whitespace-nowrap",children:"卡片大小"}),e.jsxs(He,{value:_,onValueChange:re=>me(re),children:[e.jsx(Re,{className:"w-24",children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"small",children:"小"}),e.jsx(ne,{value:"medium",children:"中"}),e.jsx(ne,{value:"large",children:"大"})]})]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"emoji-page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(He,{value:v.toString(),onValueChange:re=>{k(parseInt(re)),j(1),_e(new Set)},children:[e.jsx(Re,{id:"emoji-page-size",className:"w-20",children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"20",children:"20"}),e.jsx(ne,{value:"40",children:"40"}),e.jsx(ne,{value:"60",children:"60"}),e.jsx(ne,{value:"100",children:"100"})]})]}),je.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(y,{variant:"outline",size:"sm",onClick:()=>_e(new Set),children:"取消选择"}),e.jsxs(y,{variant:"destructive",size:"sm",onClick:()=>G(!0),children:[e.jsx(es,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]}),e.jsx("div",{className:"flex justify-end pt-4 border-t",children:e.jsxs(y,{variant:"outline",size:"sm",onClick:ge,disabled:h,children:[e.jsx(pt,{className:`h-4 w-4 mr-2 ${h?"animate-spin":""}`}),"刷新"]})})]})]}),e.jsxs(Fe,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"表情包列表"}),e.jsxs(Zs,{children:["共 ",p," 个表情包,当前第 ",f," 页"]})]}),e.jsxs(bs,{children:[n.length===0?e.jsx("div",{className:"text-center py-12 text-muted-foreground",children:"暂无数据"}):e.jsx("div",{className:`grid gap-3 ${_==="small"?"grid-cols-3 sm:grid-cols-4 md:grid-cols-6 lg:grid-cols-8 xl:grid-cols-10":_==="medium"?"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 xl:grid-cols-8":"grid-cols-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5"}`,children:n.map(re=>e.jsxs("div",{className:`group relative rounded-lg border bg-card overflow-hidden hover:ring-2 hover:ring-primary transition-all cursor-pointer ${je.has(re.id)?"ring-2 ring-primary bg-primary/5":""}`,onClick:()=>ss(re.id),children:[e.jsx("div",{className:`absolute top-1 left-1 z-10 transition-opacity ${je.has(re.id)?"opacity-100":"opacity-0 group-hover:opacity-100"}`,children:e.jsx("div",{className:`w-5 h-5 rounded-full border-2 flex items-center justify-center ${je.has(re.id)?"bg-primary border-primary text-primary-foreground":"bg-background/80 border-muted-foreground/50"}`,children:je.has(re.id)&&e.jsx(pa,{className:"h-3 w-3"})})}),e.jsxs("div",{className:"absolute top-1 right-1 z-10 flex flex-col gap-0.5",children:[re.is_registered&&e.jsx(Ye,{variant:"default",className:"bg-green-600 text-[10px] px-1 py-0",children:"已注册"}),re.is_banned&&e.jsx(Ye,{variant:"destructive",className:"text-[10px] px-1 py-0",children:"已封禁"})]}),e.jsx("div",{className:`aspect-square bg-muted flex items-center justify-center overflow-hidden ${_==="small"?"p-1":_==="medium"?"p-2":"p-3"}`,children:e.jsx("img",{src:Fg(re.id),alt:"表情包",className:"w-full h-full object-contain",loading:"lazy",onError:be=>{const Xe=be.target;Xe.style.display="none";const Ue=Xe.parentElement;Ue&&(Ue.innerHTML='')}})}),e.jsxs("div",{className:`border-t bg-card ${_==="small"?"p-1":"p-2"}`,children:[e.jsxs("div",{className:"flex items-center justify-between gap-1 text-xs text-muted-foreground mb-1",children:[e.jsx(Ye,{variant:"outline",className:"text-[10px] px-1 py-0",children:re.format.toUpperCase()}),e.jsxs("span",{className:"font-mono",children:[re.usage_count,"次"]})]}),e.jsxs("div",{className:`flex gap-1 justify-center opacity-0 group-hover:opacity-100 transition-opacity ${_==="small"?"flex-wrap":""}`,children:[e.jsx(y,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:be=>{be.stopPropagation(),F(re)},title:"编辑",children:e.jsx(pr,{className:"h-3 w-3"})}),e.jsx(y,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:be=>{be.stopPropagation(),L(re)},title:"详情",children:e.jsx(Xt,{className:"h-3 w-3"})}),!re.is_registered&&e.jsx(y,{variant:"ghost",size:"icon",className:"h-6 w-6 text-green-600 hover:text-green-700",onClick:be=>{be.stopPropagation(),we(re)},title:"注册",children:e.jsx(pa,{className:"h-3 w-3"})}),!re.is_banned&&e.jsx(y,{variant:"ghost",size:"icon",className:"h-6 w-6 text-orange-600 hover:text-orange-700",onClick:be=>{be.stopPropagation(),ze(re)},title:"封禁",children:e.jsx(BN,{className:"h-3 w-3"})}),e.jsx(y,{variant:"ghost",size:"icon",className:"h-6 w-6 text-red-600 hover:text-red-700",onClick:be=>{be.stopPropagation(),D(re)},title:"删除",children:e.jsx(es,{className:"h-3 w-3"})})]})]})]},re.id))}),p>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["显示 ",(f-1)*v+1," 到"," ",Math.min(f*v,p)," 条,共 ",p," 条"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(wr,{className:"h-4 w-4"})}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>j(re=>Math.max(1,re-1)),disabled:f===1,children:[e.jsx(cn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:q,onChange:re=>ie(re.target.value),onKeyDown:re=>re.key==="Enter"&&Ls(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(p/v)}),e.jsx(y,{variant:"outline",size:"sm",onClick:Ls,disabled:!q,className:"h-8",children:"跳转"})]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>j(re=>re+1),disabled:f>=Math.ceil(p/v),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(il,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(y,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(p/v)),disabled:f>=Math.ceil(p/v),className:"hidden sm:flex",children:e.jsx(_r,{className:"h-4 w-4"})})]})]})]})]}),e.jsx(Zw,{emoji:X,open:O,onOpenChange:te}),e.jsx(Jw,{emoji:X,open:he,onOpenChange:Ne,onSuccess:()=>{ge(),le()}}),e.jsx(Iw,{open:xe,onOpenChange:$,onSuccess:()=>{ge(),le()}})]})}),e.jsx(ps,{open:N,onOpenChange:G,children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认批量删除"}),e.jsxs(us,{children:["你确定要删除选中的 ",je.size," 个表情包吗?此操作不可撤销。"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:Ze,children:"确认删除"})]})]})}),e.jsx(Rs,{open:ye,onOpenChange:pe,children:e.jsxs(zs,{children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"确认删除"}),e.jsx(Ys,{children:"确定要删除这个表情包吗?此操作无法撤销。"})]}),e.jsxs(Js,{children:[e.jsx(y,{variant:"outline",onClick:()=>pe(!1),children:"取消"}),e.jsx(y,{variant:"destructive",onClick:ee,children:"删除"})]})]})})]})}function Zw({emoji:n,open:r,onOpenChange:c}){if(!n)return null;const d=h=>h?new Date(h*1e3).toLocaleString("zh-CN"):"-";return e.jsx(Rs,{open:r,onOpenChange:c,children:e.jsxs(zs,{className:"max-w-2xl max-h-[90vh]",children:[e.jsx(Ms,{children:e.jsx(As,{children:"表情包详情"})}),e.jsx(Pe,{className:"max-h-[calc(90vh-8rem)] pr-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"flex justify-center",children:e.jsx("div",{className:"w-32 h-32 bg-muted rounded-lg flex items-center justify-center overflow-hidden",children:e.jsx("img",{src:Fg(n.id),alt:n.description||"表情包",className:"w-full h-full object-cover",onError:h=>{const x=h.target;x.style.display="none";const f=x.parentElement;f&&(f.innerHTML='')}})})}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"ID"}),e.jsx("div",{className:"mt-1 font-mono",children:n.id})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"格式"}),e.jsx("div",{className:"mt-1",children:e.jsx(Ye,{variant:"outline",children:n.format.toUpperCase()})})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"文件路径"}),e.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:n.full_path})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"哈希值"}),e.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:n.emoji_hash})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"描述"}),n.description?e.jsx("div",{className:"mt-1 rounded-lg border bg-muted/50 p-3",children:e.jsx(Bw,{className:"prose-sm",children:n.description})}):e.jsx("div",{className:"mt-1 text-sm text-muted-foreground",children:"-"})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"情绪"}),e.jsx("div",{className:"mt-1",children:n.emotion?e.jsx("span",{className:"text-sm",children:n.emotion}):e.jsx("span",{className:"text-sm text-muted-foreground",children:"-"})})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"状态"}),e.jsxs("div",{className:"mt-2 flex gap-2",children:[n.is_registered&&e.jsx(Ye,{variant:"default",className:"bg-green-600",children:"已注册"}),n.is_banned&&e.jsx(Ye,{variant:"destructive",children:"已封禁"}),!n.is_registered&&!n.is_banned&&e.jsx(Ye,{variant:"outline",children:"未注册"})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"使用次数"}),e.jsx("div",{className:"mt-1 font-mono text-lg",children:n.usage_count})]})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"记录时间"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.record_time)})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"注册时间"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.register_time)})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"最后使用"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.last_used_time)})]})]})})]})})}function Jw({emoji:n,open:r,onOpenChange:c,onSuccess:d}){const[h,x]=u.useState(""),[f,j]=u.useState(!1),[p,w]=u.useState(!1),[v,k]=u.useState(!1),{toast:T}=Hs();u.useEffect(()=>{n&&(x(n.emotion||""),j(n.is_registered),w(n.is_banned))},[n]);const E=async()=>{if(n)try{k(!0);const R=h.split(/[,,]/).map(K=>K.trim()).filter(Boolean).join(",");await Gw(n.id,{emotion:R||void 0,is_registered:f,is_banned:p}),T({title:"成功",description:"表情包信息已更新"}),c(!1),d()}catch(R){const K=R instanceof Error?R.message:"保存失败";T({title:"错误",description:K,variant:"destructive"})}finally{k(!1)}};return n?e.jsx(Rs,{open:r,onOpenChange:c,children:e.jsxs(zs,{className:"max-w-2xl",children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"编辑表情包"}),e.jsx(Ys,{children:"修改表情包的情绪和状态信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(b,{children:"情绪"}),e.jsx(Bs,{value:h,onChange:R=>x(R.target.value),placeholder:"输入情绪描述...",rows:2,className:"mt-1"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"输入情绪相关的文本描述"})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(yt,{id:"is_registered",checked:f,onCheckedChange:R=>{R===!0?(j(!0),w(!1)):j(!1)}}),e.jsx(b,{htmlFor:"is_registered",className:"cursor-pointer",children:"已注册"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(yt,{id:"is_banned",checked:p,onCheckedChange:R=>{R===!0?(w(!0),j(!1)):w(!1)}}),e.jsx(b,{htmlFor:"is_banned",className:"cursor-pointer",children:"已封禁"})]})]})]}),e.jsxs(Js,{children:[e.jsx(y,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(y,{onClick:E,disabled:v,children:v?"保存中...":"保存"})]})]})}):null}function Iw({open:n,onOpenChange:r,onSuccess:c}){const[d,h]=u.useState("select"),[x,f]=u.useState([]),[j,p]=u.useState(null),[w,v]=u.useState(!1),{toast:k}=Hs(),T=u.useMemo(()=>new Nb({id:"emoji-uploader",autoProceed:!1,restrictions:{maxFileSize:10485760,allowedFileTypes:["image/jpeg","image/png","image/gif","image/webp"],maxNumberOfFiles:20},locale:{pluralize:()=>0,strings:{addMoreFiles:"添加更多文件",addingMoreFiles:"正在添加更多文件",allowedFileTypes:"允许的文件类型:%{types}",cancel:"取消",closeModal:"关闭",complete:"完成",connectedToInternet:"已连接到互联网",copyLink:"复制链接",copyLinkToClipboardFallback:"复制下方链接",copyLinkToClipboardSuccess:"链接已复制到剪贴板",dashboardTitle:"选择文件",dashboardWindowTitle:"文件选择窗口(按 ESC 关闭)",done:"完成",dropHereOr:"拖放文件到这里或 %{browse}",dropHint:"将文件拖放到此处",dropPasteFiles:"将文件拖放到这里或 %{browseFiles}",dropPasteFolders:"将文件拖放到这里或 %{browseFolders}",dropPasteBoth:"将文件拖放到这里,%{browseFiles} 或 %{browseFolders}",dropPasteImportFiles:"将文件拖放到这里,%{browseFiles} 或从以下位置导入:",dropPasteImportFolders:"将文件拖放到这里,%{browseFolders} 或从以下位置导入:",dropPasteImportBoth:"将文件拖放到这里,%{browseFiles},%{browseFolders} 或从以下位置导入:",editFile:"编辑文件",editing:"正在编辑 %{file}",emptyFolderAdded:"未从空文件夹添加文件",exceedsSize:"%{file} 超过了最大允许大小 %{size}",failedToUpload:"上传 %{file} 失败",fileSource:"文件来源:%{name}",filesUploadedOfTotal:{0:"已上传 %{complete} / %{smart_count} 个文件",1:"已上传 %{complete} / %{smart_count} 个文件"},filter:"筛选",finishEditingFile:"完成编辑文件",folderAdded:{0:"已从 %{folder} 添加 %{smart_count} 个文件",1:"已从 %{folder} 添加 %{smart_count} 个文件"},generatingThumbnails:"正在生成缩略图...",import:"导入",importFiles:"从以下位置导入文件:",importFrom:"从 %{name} 导入",loading:"加载中...",logOut:"登出",myDevice:"我的设备",noFilesFound:"这里没有文件或文件夹",noInternetConnection:"无网络连接",openFolderNamed:"打开文件夹 %{name}",pause:"暂停",pauseUpload:"暂停上传",paused:"已暂停",poweredBy:"技术支持:%{uppy}",processingXFiles:{0:"正在处理 %{smart_count} 个文件",1:"正在处理 %{smart_count} 个文件"},recording:"录制中",removeFile:"移除文件",resetFilter:"重置筛选",resume:"继续",resumeUpload:"继续上传",retry:"重试",retryUpload:"重试上传",save:"保存",saveChanges:"保存更改",selectFileNamed:"选择文件 %{name}",selectX:{0:"选择 %{smart_count}",1:"选择 %{smart_count}"},smile:"笑一个!",startRecording:"开始录制视频",stopRecording:"停止录制视频",takePicture:"拍照",timedOut:"上传已停滞 %{seconds} 秒,正在中止。",upload:"下一步",uploadComplete:"上传完成",uploadFailed:"上传失败",uploadPaused:"上传已暂停",uploadXFiles:{0:"下一步(%{smart_count} 个文件)",1:"下一步(%{smart_count} 个文件)"},uploadXNewFiles:{0:"下一步(+%{smart_count} 个文件)",1:"下一步(+%{smart_count} 个文件)"},uploading:"正在上传",uploadingXFiles:{0:"正在上传 %{smart_count} 个文件",1:"正在上传 %{smart_count} 个文件"},xFilesSelected:{0:"已选择 %{smart_count} 个文件",1:"已选择 %{smart_count} 个文件"},xMoreFilesAdded:{0:"又添加了 %{smart_count} 个文件",1:"又添加了 %{smart_count} 个文件"},xTimeLeft:"剩余 %{time}",youCanOnlyUploadFileTypes:"您只能上传:%{types}",youCanOnlyUploadX:{0:"您只能上传 %{smart_count} 个文件",1:"您只能上传 %{smart_count} 个文件"},youHaveToAtLeastSelectX:{0:"您至少需要选择 %{smart_count} 个文件",1:"您至少需要选择 %{smart_count} 个文件"},browseFiles:"浏览文件",browseFolders:"浏览文件夹",cancelUpload:"取消上传",addMore:"添加更多",back:"返回",editFileWithFilename:"编辑文件 %{file}"}}}),[]);u.useEffect(()=>{const X=()=>{const S=T.getFiles();if(S.length===0)return;const O=S.map(te=>({id:te.id,name:te.name,previewUrl:te.preview||URL.createObjectURL(te.data),emotion:"",description:"",isRegistered:!0,file:te.data}));f(O),S.length===1?(p(O[0].id),h("edit-single")):h("edit-multiple")};return T.on("upload",X),()=>{T.off("upload",X)}},[T]),u.useEffect(()=>{n||(T.cancelAll(),h("select"),f([]),p(null),v(!1))},[n,T]);const E=u.useCallback((X,S)=>{f(O=>O.map(te=>te.id===X?{...te,...S}:te))},[]),R=u.useCallback(X=>X.emotion.trim().length>0,[]),K=u.useMemo(()=>x.length>0&&x.every(R),[x,R]),U=u.useMemo(()=>x.find(X=>X.id===j)||null,[x,j]),A=u.useCallback(()=>{(d==="edit-single"||d==="edit-multiple")&&(h("select"),f([]),p(null))},[d]),Z=u.useCallback(async()=>{if(!K){k({title:"请填写必填项",description:"每个表情包的情感标签都是必填的",variant:"destructive"});return}v(!0);const X=localStorage.getItem("access-token")||"";let S=0,O=0;try{for(const te of x){const he=new FormData;he.append("file",te.file),he.append("emotion",te.emotion),he.append("description",te.description),he.append("is_registered",te.isRegistered.toString());try{(await fetch(Xw(),{method:"POST",headers:{Authorization:`Bearer ${X}`},body:he})).ok?S++:O++}catch{O++}}O===0?(k({title:"上传成功",description:`成功上传 ${S} 个表情包`}),r(!1),c()):(k({title:"部分上传失败",description:`成功 ${S} 个,失败 ${O} 个`,variant:"destructive"}),c())}finally{v(!1)}},[K,x,k,r,c]),H=()=>e.jsx("div",{className:"space-y-4",children:e.jsx("div",{className:"border rounded-lg overflow-hidden w-full",children:e.jsx(Lw,{uppy:T,proudlyDisplayPoweredByUppy:!1,hideProgressDetails:!0,height:350,width:"100%",theme:"auto",note:"支持 JPG、PNG、GIF、WebP 格式,最多 20 个文件"})})}),z=()=>{const X=x[0];return X?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs(y,{variant:"ghost",size:"sm",onClick:A,children:[e.jsx(ti,{className:"h-4 w-4 mr-1"}),"返回"]}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"编辑表情包信息"})]}),e.jsxs("div",{className:"flex gap-6",children:[e.jsxs("div",{className:"flex-shrink-0",children:[e.jsx("div",{className:"w-32 h-32 rounded-lg border overflow-hidden bg-muted flex items-center justify-center",children:e.jsx("img",{src:X.previewUrl,alt:X.name,className:"max-w-full max-h-full object-contain"})}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2 text-center truncate max-w-32",children:X.name})]}),e.jsxs("div",{className:"flex-1 space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"single-emotion",children:["情感标签 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"single-emotion",value:X.emotion,onChange:S=>E(X.id,{emotion:S.target.value}),placeholder:"多个标签用逗号分隔,如:开心,高兴",className:X.emotion.trim()?"":"border-destructive"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"用于情感匹配,多个标签用逗号分隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"single-description",children:"描述"}),e.jsx(ce,{id:"single-description",value:X.description,onChange:S=>E(X.id,{description:S.target.value}),placeholder:"输入表情包描述..."})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(yt,{id:"single-is-registered",checked:X.isRegistered,onCheckedChange:S=>E(X.id,{isRegistered:S===!0})}),e.jsx(b,{htmlFor:"single-is-registered",className:"cursor-pointer",children:"上传后立即注册(可被麦麦使用)"})]})]})]}),e.jsx(Js,{children:e.jsx(y,{onClick:Z,disabled:!K||w,children:w?"上传中...":"上传"})})]}):null},B=()=>{const X=x.filter(R).length,S=x.length;return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs(y,{variant:"ghost",size:"sm",onClick:A,children:[e.jsx(ti,{className:"h-4 w-4 mr-1"}),"返回"]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["编辑表情包信息(",X,"/",S," 已完成)"]})]}),e.jsx(Ye,{variant:K?"default":"secondary",children:K?e.jsxs(e.Fragment,{children:[e.jsx(fa,{className:"h-3 w-3 mr-1"}),"全部完成"]}):e.jsxs(e.Fragment,{children:[e.jsx(li,{className:"h-3 w-3 mr-1"}),"未完成"]})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(Pe,{className:"h-[350px] pr-2",children:e.jsx("div",{className:"space-y-2",children:x.map(O=>{const te=R(O),he=j===O.id;return e.jsxs("div",{onClick:()=>p(O.id),className:` + flex items-center gap-3 p-3 rounded-lg border-2 cursor-pointer transition-all + ${he?"ring-2 ring-primary":""} + ${te?"border-green-500 bg-green-50 dark:bg-green-950/20":"border-border hover:border-muted-foreground/50"} + `,children:[e.jsx("div",{className:"w-12 h-12 rounded border overflow-hidden bg-muted flex-shrink-0 flex items-center justify-center",children:e.jsx("img",{src:O.previewUrl,alt:O.name,className:"max-w-full max-h-full object-contain"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm font-medium truncate",children:O.name}),e.jsx("p",{className:"text-xs text-muted-foreground truncate",children:O.emotion||"未填写情感标签"})]}),te?e.jsx(pa,{className:"h-5 w-5 text-green-500 flex-shrink-0"}):e.jsx("div",{className:"h-5 w-5 rounded-full border-2 border-muted-foreground/30 flex-shrink-0"})]},O.id)})})}),e.jsx("div",{className:"border rounded-lg p-4",children:U?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-16 h-16 rounded border overflow-hidden bg-muted flex items-center justify-center",children:e.jsx("img",{src:U.previewUrl,alt:U.name,className:"max-w-full max-h-full object-contain"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium truncate",children:U.name}),R(U)&&e.jsxs(Ye,{variant:"outline",className:"text-green-600 border-green-600",children:[e.jsx(fa,{className:"h-3 w-3 mr-1"}),"已完成"]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"multi-emotion",children:["情感标签 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"multi-emotion",value:U.emotion,onChange:O=>E(U.id,{emotion:O.target.value}),placeholder:"多个标签用逗号分隔,如:开心,高兴",className:U.emotion.trim()?"":"border-destructive"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"multi-description",children:"描述"}),e.jsx(ce,{id:"multi-description",value:U.description,onChange:O=>E(U.id,{description:O.target.value}),placeholder:"输入表情包描述..."})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(yt,{id:"multi-is-registered",checked:U.isRegistered,onCheckedChange:O=>E(U.id,{isRegistered:O===!0})}),e.jsx(b,{htmlFor:"multi-is-registered",className:"cursor-pointer text-sm",children:"上传后立即注册"})]})]}):e.jsx("div",{className:"h-full flex items-center justify-center text-muted-foreground",children:e.jsxs("div",{className:"text-center",children:[e.jsx(HN,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),e.jsx("p",{children:"点击左侧卡片编辑"})]})})})]}),e.jsx(Js,{children:e.jsx(y,{onClick:Z,disabled:!K||w,children:w?"上传中...":`上传全部 (${S})`})})]})};return e.jsx(Rs,{open:n,onOpenChange:r,children:e.jsxs(zs,{className:"max-w-3xl max-h-[90vh] overflow-hidden",children:[e.jsxs(Ms,{children:[e.jsxs(As,{className:"flex items-center gap-2",children:[e.jsx(hr,{className:"h-5 w-5"}),d==="select"&&"上传表情包 - 选择文件",d==="edit-single"&&"上传表情包 - 填写信息",d==="edit-multiple"&&"上传表情包 - 批量编辑"]}),e.jsxs(Ys,{children:[d==="select"&&"支持 JPG、PNG、GIF、WebP 格式,单个文件最大 10MB,可同时上传多个文件",d==="edit-single"&&"请填写表情包的情感标签(必填)和描述",d==="edit-multiple"&&"点击左侧卡片编辑每个表情包的信息,情感标签为必填项"]})]}),e.jsxs("div",{className:"overflow-y-auto pr-1",children:[d==="select"&&H(),d==="edit-single"&&z(),d==="edit-multiple"&&B()]})]})})}const Bl="/api/webui/expression";async function Pw(){const n=await ke(`${Bl}/chats`,{});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取聊天列表失败")}return n.json()}async function Ww(n){const r=new URLSearchParams;n.page&&r.append("page",n.page.toString()),n.page_size&&r.append("page_size",n.page_size.toString()),n.search&&r.append("search",n.search),n.chat_id&&r.append("chat_id",n.chat_id);const c=await ke(`${Bl}/list?${r}`,{});if(!c.ok){const d=await c.json();throw new Error(d.detail||"获取表达方式列表失败")}return c.json()}async function e1(n){const r=await ke(`${Bl}/${n}`,{});if(!r.ok){const c=await r.json();throw new Error(c.detail||"获取表达方式详情失败")}return r.json()}async function s1(n){const r=await ke(`${Bl}/`,{method:"POST",body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"创建表达方式失败")}return r.json()}async function t1(n,r){const c=await ke(`${Bl}/${n}`,{method:"PATCH",body:JSON.stringify(r)});if(!c.ok){const d=await c.json();throw new Error(d.detail||"更新表达方式失败")}return c.json()}async function a1(n){const r=await ke(`${Bl}/${n}`,{method:"DELETE"});if(!r.ok){const c=await r.json();throw new Error(c.detail||"删除表达方式失败")}return r.json()}async function l1(n){const r=await ke(`${Bl}/batch/delete`,{method:"POST",body:JSON.stringify({ids:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"批量删除表达方式失败")}return r.json()}async function n1(){const n=await ke(`${Bl}/stats/summary`,{});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取统计数据失败")}return n.json()}function i1(){const[n,r]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(0),[f,j]=u.useState(1),[p,w]=u.useState(20),[v,k]=u.useState(""),[T,E]=u.useState(null),[R,K]=u.useState(!1),[U,A]=u.useState(!1),[Z,H]=u.useState(!1),[z,B]=u.useState(null),[X,S]=u.useState(new Set),[O,te]=u.useState(!1),[he,Ne]=u.useState(""),[ye,pe]=u.useState({total:0,recent_7days:0,chat_count:0,top_chats:{}}),[je,_e]=u.useState([]),[N,G]=u.useState(new Map),{toast:q}=Hs(),ie=async()=>{try{d(!0);const ee=await Ww({page:f,page_size:p,search:v||void 0});r(ee.data),x(ee.total)}catch(ee){q({title:"加载失败",description:ee instanceof Error?ee.message:"无法加载表达方式",variant:"destructive"})}finally{d(!1)}},_=async()=>{try{const ee=await n1();ee?.data&&pe(ee.data)}catch(ee){console.error("加载统计数据失败:",ee)}},me=async()=>{try{const ee=await Pw();if(ee?.data){_e(ee.data);const we=new Map;ee.data.forEach(ze=>{we.set(ze.chat_id,ze.chat_name)}),G(we)}}catch(ee){console.error("加载聊天列表失败:",ee)}},xe=ee=>N.get(ee)||ee;u.useEffect(()=>{ie(),_(),me()},[f,p,v]);const $=async ee=>{try{const we=await e1(ee.id);E(we.data),K(!0)}catch(we){q({title:"加载详情失败",description:we instanceof Error?we.message:"无法加载表达方式详情",variant:"destructive"})}},de=ee=>{E(ee),A(!0)},ge=async ee=>{try{await a1(ee.id),q({title:"删除成功",description:`已删除表达方式: ${ee.situation}`}),B(null),ie(),_()}catch(we){q({title:"删除失败",description:we instanceof Error?we.message:"无法删除表达方式",variant:"destructive"})}},le=ee=>{const we=new Set(X);we.has(ee)?we.delete(ee):we.add(ee),S(we)},L=()=>{X.size===n.length&&n.length>0?S(new Set):S(new Set(n.map(ee=>ee.id)))},F=async()=>{try{await l1(Array.from(X)),q({title:"批量删除成功",description:`已删除 ${X.size} 个表达方式`}),S(new Set),te(!1),ie(),_()}catch(ee){q({title:"批量删除失败",description:ee instanceof Error?ee.message:"无法批量删除表达方式",variant:"destructive"})}},D=()=>{const ee=parseInt(he),we=Math.ceil(h/p);ee>=1&&ee<=we?(j(ee),Ne("")):q({title:"无效的页码",description:`请输入1-${we}之间的页码`,variant:"destructive"})};return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsx("div",{className:"mb-4 sm:mb-6",children:e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[e.jsx(si,{className:"h-8 w-8",strokeWidth:2}),"表达方式管理"]}),e.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦的表达方式和话术模板"})]}),e.jsxs(y,{onClick:()=>H(!0),className:"gap-2",children:[e.jsx(ot,{className:"h-4 w-4"}),"新增表达方式"]})]})}),e.jsx(Pe,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"总数量"}),e.jsx("div",{className:"text-2xl font-bold mt-1",children:ye.total})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"近7天新增"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:ye.recent_7days})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"关联聊天数"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-blue-600",children:ye.chat_count})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx(b,{htmlFor:"search",children:"搜索"}),e.jsx("div",{className:"flex flex-col sm:flex-row gap-2 mt-1.5",children:e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(_t,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{id:"search",placeholder:"搜索情境、风格或上下文...",value:v,onChange:ee=>k(ee.target.value),className:"pl-9"})]})}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[e.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:X.size>0&&e.jsxs("span",{children:["已选择 ",X.size," 个表达方式"]})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(He,{value:p.toString(),onValueChange:ee=>{w(parseInt(ee)),j(1),S(new Set)},children:[e.jsx(Re,{id:"page-size",className:"w-20",children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"10",children:"10"}),e.jsx(ne,{value:"20",children:"20"}),e.jsx(ne,{value:"50",children:"50"}),e.jsx(ne,{value:"100",children:"100"})]})]}),X.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(y,{variant:"outline",size:"sm",onClick:()=>S(new Set),children:"取消选择"}),e.jsxs(y,{variant:"destructive",size:"sm",onClick:()=>te(!0),children:[e.jsx(es,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card",children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(ii,{children:[e.jsx(ri,{children:e.jsxs(gt,{children:[e.jsx(ls,{className:"w-12",children:e.jsx(yt,{checked:X.size===n.length&&n.length>0,onCheckedChange:L})}),e.jsx(ls,{children:"情境"}),e.jsx(ls,{children:"风格"}),e.jsx(ls,{children:"聊天"}),e.jsx(ls,{className:"text-right",children:"操作"})]})}),e.jsx(ci,{children:c?e.jsx(gt,{children:e.jsx(Qe,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):n.length===0?e.jsx(gt,{children:e.jsx(Qe,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):n.map(ee=>e.jsxs(gt,{children:[e.jsx(Qe,{children:e.jsx(yt,{checked:X.has(ee.id),onCheckedChange:()=>le(ee.id)})}),e.jsx(Qe,{className:"font-medium max-w-xs truncate",children:ee.situation}),e.jsx(Qe,{className:"max-w-xs truncate",children:ee.style}),e.jsx(Qe,{className:"max-w-[200px] truncate",title:xe(ee.chat_id),style:{wordBreak:"keep-all"},children:e.jsx("span",{className:"whitespace-nowrap overflow-hidden text-ellipsis block",children:xe(ee.chat_id)})}),e.jsx(Qe,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(y,{variant:"default",size:"sm",onClick:()=>de(ee),children:[e.jsx(pr,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsx(y,{variant:"outline",size:"icon",className:"h-8 w-8",onClick:()=>$(ee),title:"查看详情",children:e.jsx(Zt,{className:"h-4 w-4"})}),e.jsxs(y,{size:"sm",onClick:()=>B(ee),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(es,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},ee.id))})]})}),e.jsx("div",{className:"md:hidden space-y-3 p-4",children:c?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):n.length===0?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):n.map(ee=>e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(yt,{checked:X.has(ee.id),onCheckedChange:()=>le(ee.id),className:"mt-1"}),e.jsxs("div",{className:"min-w-0 flex-1 overflow-hidden space-y-2",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"情境"}),e.jsx("h3",{className:"font-semibold text-sm line-clamp-2 w-full break-all",title:ee.situation,children:ee.situation})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"风格"}),e.jsx("p",{className:"text-sm line-clamp-2 w-full break-all",title:ee.style,children:ee.style})]})]})]}),e.jsxs("div",{className:"text-sm",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"聊天"}),e.jsx("p",{className:"text-sm truncate",title:xe(ee.chat_id),style:{wordBreak:"keep-all"},children:xe(ee.chat_id)})]}),e.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>de(ee),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(pr,{className:"h-3 w-3 mr-1"}),"编辑"]}),e.jsx(y,{variant:"outline",size:"sm",onClick:()=>$(ee),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:e.jsx(Zt,{className:"h-3 w-3"})}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>B(ee),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[e.jsx(es,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},ee.id))}),h>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",h," 条记录,第 ",f," / ",Math.ceil(h/p)," 页"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(wr,{className:"h-4 w-4"})}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>j(f-1),disabled:f===1,children:[e.jsx(cn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:he,onChange:ee=>Ne(ee.target.value),onKeyDown:ee=>ee.key==="Enter"&&D(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(h/p)}),e.jsx(y,{variant:"outline",size:"sm",onClick:D,disabled:!he,className:"h-8",children:"跳转"})]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>j(f+1),disabled:f>=Math.ceil(h/p),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(il,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(y,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(h/p)),disabled:f>=Math.ceil(h/p),className:"hidden sm:flex",children:e.jsx(_r,{className:"h-4 w-4"})})]})]})]})]})}),e.jsx(r1,{expression:T,open:R,onOpenChange:K,chatNameMap:N}),e.jsx(c1,{open:Z,onOpenChange:H,chatList:je,onSuccess:()=>{ie(),_(),H(!1)}}),e.jsx(o1,{expression:T,open:U,onOpenChange:A,chatList:je,onSuccess:()=>{ie(),_(),A(!1)}}),e.jsx(ps,{open:!!z,onOpenChange:()=>B(null),children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:['确定要删除表达方式 "',z?.situation,'" 吗? 此操作不可撤销。']})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>z&&ge(z),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),e.jsx(d1,{open:O,onOpenChange:te,onConfirm:F,count:X.size})]})}function r1({expression:n,open:r,onOpenChange:c,chatNameMap:d}){if(!n)return null;const h=f=>f?new Date(f*1e3).toLocaleString("zh-CN"):"-",x=f=>d.get(f)||f;return e.jsx(Rs,{open:r,onOpenChange:c,children:e.jsxs(zs,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"表达方式详情"}),e.jsx(Ys,{children:"查看表达方式的完整信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(nr,{label:"情境",value:n.situation}),e.jsx(nr,{label:"风格",value:n.style}),e.jsx(nr,{label:"聊天",value:x(n.chat_id)}),e.jsx(nr,{icon:Uu,label:"记录ID",value:n.id.toString(),mono:!0})]}),e.jsx("div",{className:"grid grid-cols-2 gap-4",children:e.jsx(nr,{icon:Wn,label:"创建时间",value:h(n.create_date)})})]}),e.jsx(Js,{children:e.jsx(y,{onClick:()=>c(!1),children:"关闭"})})]})})}function nr({icon:n,label:r,value:c,mono:d=!1}){return e.jsxs("div",{className:"space-y-1",children:[e.jsxs(b,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[n&&e.jsx(n,{className:"h-3 w-3"}),r]}),e.jsx("div",{className:Q("text-sm",d&&"font-mono",!c&&"text-muted-foreground"),children:c||"-"})]})}function c1({open:n,onOpenChange:r,chatList:c,onSuccess:d}){const[h,x]=u.useState({situation:"",style:"",chat_id:""}),[f,j]=u.useState(!1),{toast:p}=Hs(),w=async()=>{if(!h.situation||!h.style||!h.chat_id){p({title:"验证失败",description:"请填写必填字段:情境、风格和聊天",variant:"destructive"});return}try{j(!0),await s1(h),p({title:"创建成功",description:"表达方式已创建"}),x({situation:"",style:"",chat_id:""}),d()}catch(v){p({title:"创建失败",description:v instanceof Error?v.message:"无法创建表达方式",variant:"destructive"})}finally{j(!1)}};return e.jsx(Rs,{open:n,onOpenChange:r,children:e.jsxs(zs,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"新增表达方式"}),e.jsx(Ys,{children:"创建新的表达方式记录"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"situation",children:["情境 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"situation",value:h.situation,onChange:v=>x({...h,situation:v.target.value}),placeholder:"描述使用场景"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"style",children:["风格 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"style",value:h.style,onChange:v=>x({...h,style:v.target.value}),placeholder:"描述表达风格"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"chat_id",children:["聊天 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsxs(He,{value:h.chat_id,onValueChange:v=>x({...h,chat_id:v}),children:[e.jsx(Re,{children:e.jsx(qe,{placeholder:"选择关联的聊天"})}),e.jsx(Le,{children:c.map(v=>e.jsx(ne,{value:v.chat_id,children:e.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[v.chat_name,v.is_group&&e.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},v.chat_id))})]})]})]}),e.jsxs(Js,{children:[e.jsx(y,{variant:"outline",onClick:()=>r(!1),children:"取消"}),e.jsx(y,{onClick:w,disabled:f,children:f?"创建中...":"创建"})]})]})})}function o1({expression:n,open:r,onOpenChange:c,chatList:d,onSuccess:h}){const[x,f]=u.useState({}),[j,p]=u.useState(!1),{toast:w}=Hs();u.useEffect(()=>{n&&f({situation:n.situation,style:n.style,chat_id:n.chat_id})},[n]);const v=async()=>{if(n)try{p(!0),await t1(n.id,x),w({title:"保存成功",description:"表达方式已更新"}),h()}catch(k){w({title:"保存失败",description:k instanceof Error?k.message:"无法更新表达方式",variant:"destructive"})}finally{p(!1)}};return n?e.jsx(Rs,{open:r,onOpenChange:c,children:e.jsxs(zs,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"编辑表达方式"}),e.jsx(Ys,{children:"修改表达方式的信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit_situation",children:"情境"}),e.jsx(ce,{id:"edit_situation",value:x.situation||"",onChange:k=>f({...x,situation:k.target.value}),placeholder:"描述使用场景"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit_style",children:"风格"}),e.jsx(ce,{id:"edit_style",value:x.style||"",onChange:k=>f({...x,style:k.target.value}),placeholder:"描述表达风格"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit_chat_id",children:"聊天"}),e.jsxs(He,{value:x.chat_id||"",onValueChange:k=>f({...x,chat_id:k}),children:[e.jsx(Re,{children:e.jsx(qe,{placeholder:"选择关联的聊天"})}),e.jsx(Le,{children:d.map(k=>e.jsx(ne,{value:k.chat_id,children:e.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[k.chat_name,k.is_group&&e.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},k.chat_id))})]})]})]}),e.jsxs(Js,{children:[e.jsx(y,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(y,{onClick:v,disabled:j,children:j?"保存中...":"保存"})]})]})}):null}function d1({open:n,onOpenChange:r,onConfirm:c,count:d}){return e.jsx(ps,{open:n,onOpenChange:r,children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认批量删除"}),e.jsxs(us,{children:["您即将删除 ",d," 个表达方式,此操作无法撤销。确定要继续吗?"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:c,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认删除"})]})]})})}const oi="/api/webui/person";async function u1(n){const r=new URLSearchParams;n.page&&r.append("page",n.page.toString()),n.page_size&&r.append("page_size",n.page_size.toString()),n.search&&r.append("search",n.search),n.is_known!==void 0&&r.append("is_known",n.is_known.toString()),n.platform&&r.append("platform",n.platform);const c=await ke(`${oi}/list?${r}`,{headers:Ts()});if(!c.ok){const d=await c.json();throw new Error(d.detail||"获取人物列表失败")}return c.json()}async function m1(n){const r=await ke(`${oi}/${n}`,{headers:Ts()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"获取人物详情失败")}return r.json()}async function h1(n,r){const c=await ke(`${oi}/${n}`,{method:"PATCH",headers:Ts(),body:JSON.stringify(r)});if(!c.ok){const d=await c.json();throw new Error(d.detail||"更新人物信息失败")}return c.json()}async function x1(n){const r=await ke(`${oi}/${n}`,{method:"DELETE",headers:Ts()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"删除人物信息失败")}return r.json()}async function f1(){const n=await ke(`${oi}/stats/summary`,{headers:Ts()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取统计数据失败")}return n.json()}async function p1(n){const r=await ke(`${oi}/batch/delete`,{method:"POST",headers:Ts(),body:JSON.stringify({person_ids:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"批量删除失败")}return r.json()}function g1(){const[n,r]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(0),[f,j]=u.useState(1),[p,w]=u.useState(20),[v,k]=u.useState(""),[T,E]=u.useState(void 0),[R,K]=u.useState(void 0),[U,A]=u.useState(null),[Z,H]=u.useState(!1),[z,B]=u.useState(!1),[X,S]=u.useState(null),[O,te]=u.useState({total:0,known:0,unknown:0,platforms:{}}),[he,Ne]=u.useState(new Set),[ye,pe]=u.useState(!1),[je,_e]=u.useState(""),{toast:N}=Hs(),G=async()=>{try{d(!0);const D=await u1({page:f,page_size:p,search:v||void 0,is_known:T,platform:R});r(D.data),x(D.total)}catch(D){N({title:"加载失败",description:D instanceof Error?D.message:"无法加载人物信息",variant:"destructive"})}finally{d(!1)}},q=async()=>{try{const D=await f1();D?.data&&te(D.data)}catch(D){console.error("加载统计数据失败:",D)}};u.useEffect(()=>{G(),q()},[f,p,v,T,R]);const ie=async D=>{try{const ee=await m1(D.person_id);A(ee.data),H(!0)}catch(ee){N({title:"加载详情失败",description:ee instanceof Error?ee.message:"无法加载人物详情",variant:"destructive"})}},_=D=>{A(D),B(!0)},me=async D=>{try{await x1(D.person_id),N({title:"删除成功",description:`已删除人物信息: ${D.person_name||D.nickname||D.user_id}`}),S(null),G(),q()}catch(ee){N({title:"删除失败",description:ee instanceof Error?ee.message:"无法删除人物信息",variant:"destructive"})}},xe=u.useMemo(()=>Object.keys(O.platforms),[O.platforms]),$=D=>{const ee=new Set(he);ee.has(D)?ee.delete(D):ee.add(D),Ne(ee)},de=()=>{he.size===n.length&&n.length>0?Ne(new Set):Ne(new Set(n.map(D=>D.person_id)))},ge=()=>{if(he.size===0){N({title:"未选择任何人物",description:"请先选择要删除的人物",variant:"destructive"});return}pe(!0)},le=async()=>{try{const D=await p1(Array.from(he));N({title:"批量删除完成",description:D.message}),Ne(new Set),pe(!1),G(),q()}catch(D){N({title:"批量删除失败",description:D instanceof Error?D.message:"批量删除失败",variant:"destructive"})}},L=()=>{const D=parseInt(je),ee=Math.ceil(h/p);D>=1&&D<=ee?(j(D),_e("")):N({title:"无效的页码",description:`请输入1-${ee}之间的页码`,variant:"destructive"})},F=D=>D?new Date(D*1e3).toLocaleString("zh-CN"):"-";return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsx("div",{className:"mb-4 sm:mb-6",children:e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[e.jsx(qN,{className:"h-8 w-8",strokeWidth:2}),"人物信息管理"]}),e.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦认识的所有人物信息"})]})})}),e.jsx(Pe,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"总人数"}),e.jsx("div",{className:"text-2xl font-bold mt-1",children:O.total})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"已认识"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:O.known})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"未认识"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-muted-foreground",children:O.unknown})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-4 gap-4",children:[e.jsxs("div",{className:"sm:col-span-2",children:[e.jsx(b,{htmlFor:"search",children:"搜索"}),e.jsxs("div",{className:"relative mt-1.5",children:[e.jsx(_t,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{id:"search",placeholder:"搜索名称、昵称或用户ID...",value:v,onChange:D=>k(D.target.value),className:"pl-9"})]})]}),e.jsxs("div",{children:[e.jsx(b,{htmlFor:"filter-known",children:"认识状态"}),e.jsxs(He,{value:T===void 0?"all":T.toString(),onValueChange:D=>{E(D==="all"?void 0:D==="true"),j(1)},children:[e.jsx(Re,{id:"filter-known",className:"mt-1.5",children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部"}),e.jsx(ne,{value:"true",children:"已认识"}),e.jsx(ne,{value:"false",children:"未认识"})]})]})]}),e.jsxs("div",{children:[e.jsx(b,{htmlFor:"filter-platform",children:"平台"}),e.jsxs(He,{value:R||"all",onValueChange:D=>{K(D==="all"?void 0:D),j(1)},children:[e.jsx(Re,{id:"filter-platform",className:"mt-1.5",children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部平台"}),xe.map(D=>e.jsxs(ne,{value:D,children:[D," (",O.platforms[D],")"]},D))]})]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[e.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:he.size>0&&e.jsxs("span",{children:["已选择 ",he.size," 个人物"]})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(He,{value:p.toString(),onValueChange:D=>{w(parseInt(D)),j(1),Ne(new Set)},children:[e.jsx(Re,{id:"page-size",className:"w-20",children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"10",children:"10"}),e.jsx(ne,{value:"20",children:"20"}),e.jsx(ne,{value:"50",children:"50"}),e.jsx(ne,{value:"100",children:"100"})]})]}),he.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(y,{variant:"outline",size:"sm",onClick:()=>Ne(new Set),children:"取消选择"}),e.jsxs(y,{variant:"destructive",size:"sm",onClick:ge,children:[e.jsx(es,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card",children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(ii,{children:[e.jsx(ri,{children:e.jsxs(gt,{children:[e.jsx(ls,{className:"w-12",children:e.jsx(yt,{checked:n.length>0&&he.size===n.length,onCheckedChange:de,"aria-label":"全选"})}),e.jsx(ls,{children:"状态"}),e.jsx(ls,{children:"名称"}),e.jsx(ls,{children:"昵称"}),e.jsx(ls,{children:"平台"}),e.jsx(ls,{children:"用户ID"}),e.jsx(ls,{children:"最后更新"}),e.jsx(ls,{className:"text-right",children:"操作"})]})}),e.jsx(ci,{children:c?e.jsx(gt,{children:e.jsx(Qe,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):n.length===0?e.jsx(gt,{children:e.jsx(Qe,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):n.map(D=>e.jsxs(gt,{children:[e.jsx(Qe,{children:e.jsx(yt,{checked:he.has(D.person_id),onCheckedChange:()=>$(D.person_id),"aria-label":`选择 ${D.person_name||D.nickname||D.user_id}`})}),e.jsx(Qe,{children:e.jsx("div",{className:Q("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium",D.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:D.is_known?"已认识":"未认识"})}),e.jsx(Qe,{className:"font-medium",children:D.person_name||e.jsx("span",{className:"text-muted-foreground",children:"-"})}),e.jsx(Qe,{children:D.nickname||"-"}),e.jsx(Qe,{children:D.platform}),e.jsx(Qe,{className:"font-mono text-sm",children:D.user_id}),e.jsx(Qe,{className:"text-sm text-muted-foreground",children:F(D.last_know)}),e.jsx(Qe,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(y,{variant:"default",size:"sm",onClick:()=>ie(D),children:[e.jsx(Zt,{className:"h-4 w-4 mr-1"}),"详情"]}),e.jsxs(y,{variant:"default",size:"sm",onClick:()=>_(D),children:[e.jsx(pr,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsxs(y,{size:"sm",onClick:()=>S(D),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(es,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},D.id))})]})}),e.jsx("div",{className:"md:hidden space-y-3 p-4",children:c?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):n.length===0?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):n.map(D=>e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(yt,{checked:he.has(D.person_id),onCheckedChange:()=>$(D.person_id),className:"mt-1"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:Q("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium mb-2",D.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:D.is_known?"已认识":"未认识"}),e.jsx("h3",{className:"font-semibold text-sm line-clamp-1 w-full break-all",children:D.person_name||e.jsx("span",{className:"text-muted-foreground",children:"未命名"})}),D.nickname&&e.jsxs("p",{className:"text-xs text-muted-foreground mt-1 line-clamp-1 w-full break-all",children:["昵称: ",D.nickname]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"平台"}),e.jsx("p",{className:"font-medium text-xs",children:D.platform})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"用户ID"}),e.jsx("p",{className:"font-mono text-xs truncate",title:D.user_id,children:D.user_id})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"最后更新"}),e.jsx("p",{className:"text-xs",children:F(D.last_know)})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>ie(D),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(Zt,{className:"h-3 w-3 mr-1"}),"查看"]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>_(D),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(pr,{className:"h-3 w-3 mr-1"}),"编辑"]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>S(D),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[e.jsx(es,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},D.id))}),h>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",h," 条记录,第 ",f," / ",Math.ceil(h/p)," 页"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(wr,{className:"h-4 w-4"})}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>j(f-1),disabled:f===1,children:[e.jsx(cn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:je,onChange:D=>_e(D.target.value),onKeyDown:D=>D.key==="Enter"&&L(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(h/p)}),e.jsx(y,{variant:"outline",size:"sm",onClick:L,disabled:!je,className:"h-8",children:"跳转"})]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>j(f+1),disabled:f>=Math.ceil(h/p),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(il,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(y,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(h/p)),disabled:f>=Math.ceil(h/p),className:"hidden sm:flex",children:e.jsx(_r,{className:"h-4 w-4"})})]})]})]})]})}),e.jsx(j1,{person:U,open:Z,onOpenChange:H}),e.jsx(v1,{person:U,open:z,onOpenChange:B,onSuccess:()=>{G(),q(),B(!1)}}),e.jsx(ps,{open:!!X,onOpenChange:()=>S(null),children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:['确定要删除人物信息 "',X?.person_name||X?.nickname||X?.user_id,'" 吗? 此操作不可撤销。']})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>X&&me(X),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),e.jsx(ps,{open:ye,onOpenChange:pe,children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认批量删除"}),e.jsxs(us,{children:["确定要删除选中的 ",he.size," 个人物信息吗? 此操作不可撤销。"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:le,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})})]})}function j1({person:n,open:r,onOpenChange:c}){if(!n)return null;const d=h=>h?new Date(h*1e3).toLocaleString("zh-CN"):"-";return e.jsx(Rs,{open:r,onOpenChange:c,children:e.jsxs(zs,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"人物详情"}),e.jsxs(Ys,{children:["查看 ",n.person_name||n.nickname||n.user_id," 的完整信息"]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(al,{icon:to,label:"人物名称",value:n.person_name}),e.jsx(al,{icon:si,label:"昵称",value:n.nickname}),e.jsx(al,{icon:Uu,label:"用户ID",value:n.user_id,mono:!0}),e.jsx(al,{icon:Uu,label:"人物ID",value:n.person_id,mono:!0}),e.jsx(al,{label:"平台",value:n.platform}),e.jsx(al,{label:"状态",value:n.is_known?"已认识":"未认识"})]}),n.name_reason&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(b,{className:"text-xs text-muted-foreground",children:"名称设定原因"}),e.jsx("p",{className:"mt-1 text-sm",children:n.name_reason})]}),n.memory_points&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(b,{className:"text-xs text-muted-foreground",children:"个人印象"}),e.jsx("p",{className:"mt-1 text-sm whitespace-pre-wrap",children:n.memory_points})]}),n.group_nick_name&&n.group_nick_name.length>0&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(b,{className:"text-xs text-muted-foreground",children:"群昵称"}),e.jsx("div",{className:"mt-2 space-y-1",children:n.group_nick_name.map((h,x)=>e.jsxs("div",{className:"text-sm flex items-center gap-2",children:[e.jsx("span",{className:"font-mono text-xs text-muted-foreground",children:h.group_id}),e.jsx("span",{children:"→"}),e.jsx("span",{children:h.group_nick_name})]},x))})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsx(al,{icon:Wn,label:"认识时间",value:d(n.know_times)}),e.jsx(al,{icon:Wn,label:"首次记录",value:d(n.know_since)}),e.jsx(al,{icon:Wn,label:"最后更新",value:d(n.last_know)})]})]}),e.jsx(Js,{children:e.jsx(y,{onClick:()=>c(!1),children:"关闭"})})]})})}function al({icon:n,label:r,value:c,mono:d=!1}){return e.jsxs("div",{className:"space-y-1",children:[e.jsxs(b,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[n&&e.jsx(n,{className:"h-3 w-3"}),r]}),e.jsx("div",{className:Q("text-sm",d&&"font-mono",!c&&"text-muted-foreground"),children:c||"-"})]})}function v1({person:n,open:r,onOpenChange:c,onSuccess:d}){const[h,x]=u.useState({}),[f,j]=u.useState(!1),{toast:p}=Hs();u.useEffect(()=>{n&&x({person_name:n.person_name||"",name_reason:n.name_reason||"",nickname:n.nickname||"",memory_points:n.memory_points||"",is_known:n.is_known})},[n]);const w=async()=>{if(n)try{j(!0),await h1(n.person_id,h),p({title:"保存成功",description:"人物信息已更新"}),d()}catch(v){p({title:"保存失败",description:v instanceof Error?v.message:"无法更新人物信息",variant:"destructive"})}finally{j(!1)}};return n?e.jsx(Rs,{open:r,onOpenChange:c,children:e.jsxs(zs,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"编辑人物信息"}),e.jsxs(Ys,{children:["修改 ",n.person_name||n.nickname||n.user_id," 的信息"]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"person_name",children:"人物名称"}),e.jsx(ce,{id:"person_name",value:h.person_name||"",onChange:v=>x({...h,person_name:v.target.value}),placeholder:"为这个人设置一个名称"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"nickname",children:"昵称"}),e.jsx(ce,{id:"nickname",value:h.nickname||"",onChange:v=>x({...h,nickname:v.target.value}),placeholder:"昵称"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"name_reason",children:"名称设定原因"}),e.jsx(Bs,{id:"name_reason",value:h.name_reason||"",onChange:v=>x({...h,name_reason:v.target.value}),placeholder:"为什么这样称呼这个人?",rows:2})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"memory_points",children:"个人印象"}),e.jsx(Bs,{id:"memory_points",value:h.memory_points||"",onChange:v=>x({...h,memory_points:v.target.value}),placeholder:"对这个人的印象和记忆点...",rows:4})]}),e.jsxs("div",{className:"flex items-center justify-between rounded-lg border p-3",children:[e.jsxs("div",{children:[e.jsx(b,{htmlFor:"is_known",className:"text-base font-medium",children:"已认识"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"标记是否已经认识这个人"})]}),e.jsx(Ve,{id:"is_known",checked:h.is_known,onCheckedChange:v=>x({...h,is_known:v})})]})]}),e.jsxs(Js,{children:[e.jsx(y,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(y,{onClick:w,disabled:f,children:f?"保存中...":"保存"})]})]})}):null}var y1=Cb();const pp=_y(y1),Wu="/api/webui";async function N1(n=100,r="all"){const c=`${Wu}/knowledge/graph?limit=${n}&node_type=${r}`,d=await fetch(c);if(!d.ok)throw new Error(`获取知识图谱失败: ${d.status}`);return d.json()}async function b1(){const n=await fetch(`${Wu}/knowledge/stats`);if(!n.ok)throw new Error("获取知识图谱统计信息失败");return n.json()}async function w1(n){const r=await fetch(`${Wu}/knowledge/search?query=${encodeURIComponent(n)}`);if(!r.ok)throw new Error("搜索知识节点失败");return r.json()}const $g=u.memo(({data:n})=>e.jsxs("div",{className:"px-4 py-2 shadow-md rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700 min-w-[120px]",children:[e.jsx(lo,{type:"target",position:no.Top}),e.jsx("div",{className:"font-semibold text-white text-sm truncate max-w-[200px]",title:n.content,children:n.label}),e.jsx(lo,{type:"source",position:no.Bottom})]}));$g.displayName="EntityNode";const Qg=u.memo(({data:n})=>e.jsxs("div",{className:"px-3 py-2 shadow-md rounded-md bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700 min-w-[100px]",children:[e.jsx(lo,{type:"target",position:no.Top}),e.jsx("div",{className:"font-medium text-white text-xs truncate max-w-[150px]",title:n.content,children:n.label}),e.jsx(lo,{type:"source",position:no.Bottom})]}));Qg.displayName="ParagraphNode";const _1={entity:$g,paragraph:Qg};function S1(n,r){const c=new pp.graphlib.Graph;c.setDefaultEdgeLabel(()=>({})),c.setGraph({rankdir:"TB",ranksep:100,nodesep:80});const d=[],h=[];return n.forEach(x=>{c.setNode(x.id,{width:150,height:50})}),r.forEach(x=>{c.setEdge(x.source,x.target)}),pp.layout(c),n.forEach(x=>{const f=c.node(x.id);d.push({id:x.id,type:x.type,position:{x:f.x-75,y:f.y-25},data:{label:x.content.slice(0,20)+(x.content.length>20?"...":""),content:x.content}})}),r.forEach((x,f)=>{const j={id:`edge-${f}`,source:x.source,target:x.target,animated:n.length<=200&&x.weight>5,style:{strokeWidth:Math.min(x.weight/2,5),opacity:.6}};x.weight>10&&n.length<100&&(j.label=`${x.weight.toFixed(0)}`),h.push(j)}),{nodes:d,edges:h}}function C1(){const n=Jt(),[r,c]=u.useState(!1),[d,h]=u.useState(null),[x,f]=u.useState(""),[j,p]=u.useState("all"),[w,v]=u.useState(50),[k,T]=u.useState("50"),[E,R]=u.useState(!1),[K,U]=u.useState(!0),[A,Z]=u.useState(!1),[H,z]=u.useState(!1),[B,X,S]=kb([]),[O,te,he]=Tb([]),[Ne,ye]=u.useState(0),[pe,je]=u.useState(null),[_e,N]=u.useState(null),{toast:G}=Hs(),q=u.useCallback(le=>le.type==="entity"?"#6366f1":le.type==="paragraph"?"#10b981":"#6b7280",[]),ie=u.useCallback(async(le=!1)=>{try{if(!le&&w>200){z(!0);return}c(!0);const[L,F]=await Promise.all([N1(w,j),b1()]);if(h(F),L.nodes.length===0){G({title:"提示",description:"知识库为空,请先导入知识数据"}),X([]),te([]);return}const{nodes:D,edges:ee}=S1(L.nodes,L.edges);X(D),te(ee),ye(D.length),F&&F.total_nodes>w&&G({title:"提示",description:`知识图谱包含 ${F.total_nodes} 个节点,当前显示 ${D.length} 个`}),G({title:"加载成功",description:`已加载 ${D.length} 个节点,${ee.length} 条边`})}catch(L){console.error("加载知识图谱失败:",L),G({title:"加载失败",description:L instanceof Error?L.message:"未知错误",variant:"destructive"})}finally{c(!1)}},[w,j,G]),_=u.useCallback(async()=>{if(!x.trim()){G({title:"提示",description:"请输入搜索关键词"});return}try{const le=await w1(x);if(le.length===0){G({title:"未找到",description:"没有找到匹配的节点"});return}const L=new Set(le.map(F=>F.id));X(F=>F.map(D=>({...D,style:{...D.style,opacity:L.has(D.id)?1:.3,filter:L.has(D.id)?"brightness(1.2)":"brightness(0.8)"}}))),G({title:"搜索完成",description:`找到 ${le.length} 个匹配节点`})}catch(le){console.error("搜索失败:",le),G({title:"搜索失败",description:le instanceof Error?le.message:"未知错误",variant:"destructive"})}},[x,G]),me=u.useCallback(()=>{X(le=>le.map(L=>({...L,style:{...L.style,opacity:1,filter:"brightness(1)"}})))},[]),xe=u.useCallback(()=>{U(!1),Z(!0),ie()},[ie]),$=u.useCallback(()=>{z(!1),setTimeout(()=>{ie(!0)},0)},[ie]),de=u.useCallback((le,L)=>{B.find(D=>D.id===L.id)&&je({id:L.id,type:L.type,content:L.data.content})},[B]);u.useEffect(()=>{K||A&&ie()},[w,j,K,A]);const ge=u.useCallback((le,L)=>{const F=B.find(we=>we.id===L.source),D=B.find(we=>we.id===L.target),ee=O.find(we=>we.id===L.id);F&&D&&ee&&N({source:{id:F.id,type:F.type,content:F.data.content},target:{id:D.id,type:D.type,content:D.data.content},edge:{source:L.source,target:L.target,weight:parseFloat(L.label||"0")}})},[B,O]);return e.jsxs("div",{className:"h-full flex flex-col",children:[e.jsxs("div",{className:"flex-shrink-0 p-4 border-b bg-background",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦知识库图谱"}),e.jsx("p",{className:"text-muted-foreground mt-1",children:"可视化知识实体与关系网络"})]}),d&&e.jsxs("div",{className:"flex gap-2 flex-wrap",children:[e.jsxs(Ye,{variant:"outline",className:"gap-1",children:[e.jsx(eo,{className:"h-3 w-3"}),"节点: ",d.total_nodes]}),e.jsxs(Ye,{variant:"outline",className:"gap-1",children:[e.jsx(yg,{className:"h-3 w-3"}),"边: ",d.total_edges]}),e.jsxs(Ye,{variant:"outline",className:"gap-1",children:[e.jsx(Xt,{className:"h-3 w-3"}),"实体: ",d.entity_nodes]}),e.jsxs(Ye,{variant:"outline",className:"gap-1",children:[e.jsx(Aa,{className:"h-3 w-3"}),"段落: ",d.paragraph_nodes]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 mt-4",children:[e.jsxs("div",{className:"flex-1 flex gap-2",children:[e.jsx(ce,{placeholder:"搜索节点内容...",value:x,onChange:le=>f(le.target.value),onKeyDown:le=>le.key==="Enter"&&_(),className:"flex-1"}),e.jsx(y,{onClick:_,size:"sm",children:e.jsx(_t,{className:"h-4 w-4"})}),e.jsx(y,{onClick:me,variant:"outline",size:"sm",children:"重置"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(He,{value:j,onValueChange:le=>p(le),children:[e.jsx(Re,{className:"w-[120px]",children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部节点"}),e.jsx(ne,{value:"entity",children:"仅实体"}),e.jsx(ne,{value:"paragraph",children:"仅段落"})]})]}),e.jsxs(He,{value:w===1e4?"all":E?"custom":w.toString(),onValueChange:le=>{le==="custom"?(R(!0),T(w.toString())):le==="all"?(R(!1),v(1e4)):(R(!1),v(Number(le)))},children:[e.jsx(Re,{className:"w-[120px]",children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"50",children:"50 节点"}),e.jsx(ne,{value:"100",children:"100 节点"}),e.jsx(ne,{value:"200",children:"200 节点"}),e.jsx(ne,{value:"500",children:"500 节点"}),e.jsx(ne,{value:"1000",children:"1000 节点"}),e.jsx(ne,{value:"all",children:"全部 (最多10000)"}),e.jsx(ne,{value:"custom",children:"自定义..."})]})]}),E&&e.jsx(ce,{type:"number",min:"50",value:k,onChange:le=>T(le.target.value),onBlur:()=>{const le=parseInt(k);!isNaN(le)&&le>=50?v(le):(T("50"),v(50))},onKeyDown:le=>{if(le.key==="Enter"){const L=parseInt(k);!isNaN(L)&&L>=50?v(L):(T("50"),v(50))}},placeholder:"最少50个",className:"w-[120px]"}),e.jsx(y,{onClick:()=>ie(),variant:"outline",size:"sm",disabled:r,children:e.jsx(pt,{className:Q("h-4 w-4",r&&"animate-spin")})})]})]})]}),e.jsx("div",{className:"flex-1 relative",children:r?e.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx(pt,{className:"h-8 w-8 animate-spin mx-auto mb-2 text-muted-foreground"}),e.jsx("p",{className:"text-muted-foreground",children:"加载知识图谱中..."})]})}):B.length===0?e.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx(eo,{className:"h-12 w-12 mx-auto mb-4 text-muted-foreground"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"知识库为空"}),e.jsx("p",{className:"text-muted-foreground",children:"请先导入知识数据"})]})}):e.jsxs(Eb,{nodes:B,edges:O,onNodesChange:S,onEdgesChange:he,onNodeClick:de,onEdgeClick:ge,nodeTypes:_1,fitView:!0,minZoom:.05,maxZoom:1.5,defaultViewport:{x:0,y:0,zoom:.5},elevateNodesOnSelect:Ne<=500,nodesDraggable:Ne<=1e3,attributionPosition:"bottom-left",children:[e.jsx(zb,{variant:Mb.Dots,gap:12,size:1}),e.jsx(Ab,{}),Ne<=500&&e.jsx(Db,{nodeColor:q,nodeBorderRadius:8,pannable:!0,zoomable:!0}),e.jsxs(Ob,{position:"top-right",className:"bg-background/95 backdrop-blur-sm rounded-lg border p-3 shadow-lg",children:[e.jsx("div",{className:"text-sm font-semibold mb-2",children:"图例"}),e.jsxs("div",{className:"space-y-2 text-xs",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700"}),e.jsx("span",{children:"实体节点"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700"}),e.jsx("span",{children:"段落节点"})]}),Ne>200&&e.jsxs("div",{className:"mt-2 pt-2 border-t text-yellow-600 dark:text-yellow-500",children:[e.jsx("div",{className:"font-semibold",children:"性能模式"}),e.jsx("div",{children:"已禁用动画"}),Ne>500&&e.jsx("div",{children:"已禁用缩略图"})]})]})]})]})}),e.jsx(Rs,{open:!!pe,onOpenChange:le=>!le&&je(null),children:e.jsxs(zs,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsx(Ms,{children:e.jsx(As,{children:"节点详情"})}),pe&&e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"grid grid-cols-2 gap-4",children:e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"类型"}),e.jsx("div",{className:"mt-1",children:e.jsx(Ye,{variant:pe.type==="entity"?"default":"secondary",children:pe.type==="entity"?"🏷️ 实体":"📄 段落"})})]})}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"ID"}),e.jsx("code",{className:"mt-1 block p-2 bg-muted rounded text-xs break-all",children:pe.id})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"内容"}),e.jsx(Pe,{className:"mt-1 h-40 p-3 bg-muted rounded",children:e.jsx("p",{className:"text-sm whitespace-pre-wrap",children:pe.content})})]})]})]})}),e.jsx(Rs,{open:!!_e,onOpenChange:le=>!le&&N(null),children:e.jsxs(zs,{className:"max-w-2xl max-h-[80vh] overflow-hidden flex flex-col",children:[e.jsx(Ms,{children:e.jsx(As,{children:"边详情"})}),_e&&e.jsx(Pe,{className:"flex-1 pr-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-blue-50 dark:bg-blue-950 rounded border-2 border-blue-200 dark:border-blue-800",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"源节点"}),e.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:_e.source.content}),e.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[_e.source.id.slice(0,40),"..."]})]}),e.jsx("div",{className:"text-2xl text-muted-foreground flex-shrink-0",children:"→"}),e.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-green-50 dark:bg-green-950 rounded border-2 border-green-200 dark:border-green-800",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"目标节点"}),e.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:_e.target.content}),e.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[_e.target.id.slice(0,40),"..."]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"权重"}),e.jsx("div",{className:"mt-1",children:e.jsx(Ye,{variant:"outline",className:"text-base font-mono",children:_e.edge.weight.toFixed(4)})})]})]})})]})}),e.jsx(ps,{open:K,onOpenChange:U,children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"加载知识图谱"}),e.jsxs(us,{children:["知识图谱的动态展示会消耗较多系统资源。",e.jsx("br",{}),"确定要加载知识图谱吗?"]})]}),e.jsxs(os,{children:[e.jsx(hs,{onClick:()=>n({to:"/"}),children:"取消 (返回首页)"}),e.jsx(ms,{onClick:xe,children:"确认加载"})]})]})}),e.jsx(ps,{open:H,onOpenChange:z,children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"⚠️ 节点数量较多"}),e.jsx(us,{asChild:!0,children:e.jsxs("div",{children:[e.jsxs("p",{children:["您正在尝试加载 ",e.jsx("strong",{className:"text-orange-600",children:w>=1e4?"全部 (最多10000个)":w})," 个节点。"]}),e.jsx("p",{className:"mt-4",children:"节点数量过多可能导致:"}),e.jsxs("ul",{className:"list-disc list-inside mt-2 space-y-1",children:[e.jsx("li",{children:"页面加载时间较长"}),e.jsx("li",{children:"浏览器卡顿或崩溃"}),e.jsx("li",{children:"系统资源占用过高"})]}),e.jsx("p",{className:"mt-4",children:"建议先选择较少的节点数量 (50-200 个)。"})]})})]}),e.jsxs(os,{children:[e.jsx(hs,{onClick:()=>{z(!1),w>200&&(v(50),R(!1))},children:"取消"}),e.jsx(ms,{onClick:$,className:"bg-orange-600 hover:bg-orange-700",children:"我了解风险,继续加载"})]})]})})]})}function gp({className:n,classNames:r,showOutsideDays:c=!0,captionLayout:d="label",buttonVariant:h="ghost",formatters:x,components:f,...j}){const p=_g();return e.jsx(cb,{showOutsideDays:c,className:Q("bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,n),captionLayout:d,formatters:{formatMonthDropdown:w=>w.toLocaleString("default",{month:"short"}),...x},classNames:{root:Q("w-fit",p.root),months:Q("relative flex flex-col gap-4 md:flex-row",p.months),month:Q("flex w-full flex-col gap-4",p.month),nav:Q("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",p.nav),button_previous:Q(gr({variant:h}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",p.button_previous),button_next:Q(gr({variant:h}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",p.button_next),month_caption:Q("flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]",p.month_caption),dropdowns:Q("flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium",p.dropdowns),dropdown_root:Q("has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border",p.dropdown_root),dropdown:Q("bg-popover absolute inset-0 opacity-0",p.dropdown),caption_label:Q("select-none font-medium",d==="label"?"text-sm":"[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5",p.caption_label),table:"w-full border-collapse",weekdays:Q("flex",p.weekdays),weekday:Q("text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal",p.weekday),week:Q("mt-2 flex w-full",p.week),week_number_header:Q("w-[--cell-size] select-none",p.week_number_header),week_number:Q("text-muted-foreground select-none text-[0.8rem]",p.week_number),day:Q("group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md",p.day),range_start:Q("bg-accent rounded-l-md",p.range_start),range_middle:Q("rounded-none",p.range_middle),range_end:Q("bg-accent rounded-r-md",p.range_end),today:Q("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",p.today),outside:Q("text-muted-foreground aria-selected:text-muted-foreground",p.outside),disabled:Q("text-muted-foreground opacity-50",p.disabled),hidden:Q("invisible",p.hidden),...r},components:{Root:({className:w,rootRef:v,...k})=>e.jsx("div",{"data-slot":"calendar",ref:v,className:Q(w),...k}),Chevron:({className:w,orientation:v,...k})=>v==="left"?e.jsx(cn,{className:Q("size-4",w),...k}):v==="right"?e.jsx(il,{className:Q("size-4",w),...k}):e.jsx(Ll,{className:Q("size-4",w),...k}),DayButton:k1,WeekNumber:({children:w,...v})=>e.jsx("td",{...v,children:e.jsx("div",{className:"flex size-[--cell-size] items-center justify-center text-center",children:w})}),...f},...j})}function k1({className:n,day:r,modifiers:c,...d}){const h=_g(),x=u.useRef(null);return u.useEffect(()=>{c.focused&&x.current?.focus()},[c.focused]),e.jsx(y,{ref:x,variant:"ghost",size:"icon","data-day":r.date.toLocaleDateString(),"data-selected-single":c.selected&&!c.range_start&&!c.range_end&&!c.range_middle,"data-range-start":c.range_start,"data-range-end":c.range_end,"data-range-middle":c.range_middle,className:Q("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70",h.day,n),...d})}const T1={lessThanXSeconds:{one:"不到 1 秒",other:"不到 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分钟",lessThanXMinutes:{one:"不到 1 分钟",other:"不到 {{count}} 分钟"},xMinutes:{one:"1 分钟",other:"{{count}} 分钟"},xHours:{one:"1 小时",other:"{{count}} 小时"},aboutXHours:{one:"大约 1 小时",other:"大约 {{count}} 小时"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大约 1 个星期",other:"大约 {{count}} 个星期"},xWeeks:{one:"1 个星期",other:"{{count}} 个星期"},aboutXMonths:{one:"大约 1 个月",other:"大约 {{count}} 个月"},xMonths:{one:"1 个月",other:"{{count}} 个月"},aboutXYears:{one:"大约 1 年",other:"大约 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超过 1 年",other:"超过 {{count}} 年"},almostXYears:{one:"将近 1 年",other:"将近 {{count}} 年"}},E1=(n,r,c)=>{let d;const h=T1[n];return typeof h=="string"?d=h:r===1?d=h.one:d=h.other.replace("{{count}}",String(r)),c?.addSuffix?c.comparison&&c.comparison>0?d+"内":d+"前":d},z1={full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},M1={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},A1={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},D1={date:wu({formats:z1,defaultWidth:"full"}),time:wu({formats:M1,defaultWidth:"full"}),dateTime:wu({formats:A1,defaultWidth:"full"})};function jp(n,r,c){const d="eeee p";return ky(n,r,c)?d:n.getTime()>r.getTime()?"'下个'"+d:"'上个'"+d}const O1={lastWeek:jp,yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:jp,other:"PP p"},R1=(n,r,c,d)=>{const h=O1[n];return typeof h=="function"?h(r,c,d):h},L1={narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},U1={narrow:["1","2","3","4"],abbreviated:["第一季","第二季","第三季","第四季"],wide:["第一季度","第二季度","第三季度","第四季度"]},B1={narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},H1={narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["周日","周一","周二","周三","周四","周五","周六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},q1={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},G1={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},V1=(n,r)=>{const c=Number(n);switch(r?.unit){case"date":return c.toString()+"日";case"hour":return c.toString()+"时";case"minute":return c.toString()+"分";case"second":return c.toString()+"秒";default:return"第 "+c.toString()}},F1={ordinalNumber:V1,era:er({values:L1,defaultWidth:"wide"}),quarter:er({values:U1,defaultWidth:"wide",argumentCallback:n=>n-1}),month:er({values:B1,defaultWidth:"wide"}),day:er({values:H1,defaultWidth:"wide"}),dayPeriod:er({values:q1,defaultWidth:"wide",formattingValues:G1,defaultFormattingWidth:"wide"})},$1=/^(第\s*)?\d+(日|时|分|秒)?/i,Q1=/\d+/i,Y1={narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},X1={any:[/^(前)/i,/^(公元)/i]},K1={narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻钟/i},Z1={any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},J1={narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},I1={narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},P1={narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^周[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},W1={any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},e2={any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i},s2={any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},t2={ordinalNumber:Ty({matchPattern:$1,parsePattern:Q1,valueCallback:n=>parseInt(n,10)}),era:sr({matchPatterns:Y1,defaultMatchWidth:"wide",parsePatterns:X1,defaultParseWidth:"any"}),quarter:sr({matchPatterns:K1,defaultMatchWidth:"wide",parsePatterns:Z1,defaultParseWidth:"any",valueCallback:n=>n+1}),month:sr({matchPatterns:J1,defaultMatchWidth:"wide",parsePatterns:I1,defaultParseWidth:"any"}),day:sr({matchPatterns:P1,defaultMatchWidth:"wide",parsePatterns:W1,defaultParseWidth:"any"}),dayPeriod:sr({matchPatterns:e2,defaultMatchWidth:"any",parsePatterns:s2,defaultParseWidth:"any"})},$c={code:"zh-CN",formatDistance:E1,formatLong:D1,formatRelative:R1,localize:F1,match:t2,options:{weekStartsOn:1,firstWeekContainsDate:4}},Qc={xs:{label:"小",rowHeight:28,class:"text-[10px] sm:text-xs"},sm:{label:"中",rowHeight:36,class:"text-xs sm:text-sm"},base:{label:"大",rowHeight:44,class:"text-sm sm:text-base"}};function a2(){const[n,r]=u.useState([]),[c,d]=u.useState(""),[h,x]=u.useState("all"),[f,j]=u.useState("all"),[p,w]=u.useState(void 0),[v,k]=u.useState(void 0),[T,E]=u.useState(!0),[R,K]=u.useState(!1),[U,A]=u.useState("xs"),[Z,H]=u.useState(4),z=u.useRef(null);u.useEffect(()=>{const N=an.getAllLogs();r(N);const G=an.onLog(()=>{r(an.getAllLogs())}),q=an.onConnectionChange(ie=>{K(ie)});return()=>{G(),q()}},[]);const B=u.useMemo(()=>{const N=new Set(n.map(G=>G.module).filter(G=>G&&G.trim()!==""));return Array.from(N).sort()},[n]),X=N=>{switch(N){case"DEBUG":return"text-muted-foreground";case"INFO":return"text-blue-500 dark:text-blue-400";case"WARNING":return"text-yellow-600 dark:text-yellow-500";case"ERROR":return"text-red-600 dark:text-red-500";case"CRITICAL":return"text-red-700 dark:text-red-400 font-bold";default:return"text-foreground"}},S=N=>{switch(N){case"DEBUG":return"bg-gray-800/30 dark:bg-gray-800/50";case"INFO":return"bg-blue-900/20 dark:bg-blue-500/20";case"WARNING":return"bg-yellow-900/20 dark:bg-yellow-500/20";case"ERROR":return"bg-red-900/20 dark:bg-red-500/20";case"CRITICAL":return"bg-red-900/30 dark:bg-red-600/30";default:return"bg-gray-800/20 dark:bg-gray-800/30"}},O=()=>{window.location.reload()},te=()=>{an.clearLogs(),r([])},he=()=>{const N=pe.map(_=>`${_.timestamp} [${_.level.padEnd(8)}] [${_.module}] ${_.message}`).join(` +`),G=new Blob([N],{type:"text/plain;charset=utf-8"}),q=URL.createObjectURL(G),ie=document.createElement("a");ie.href=q,ie.download=`logs-${_u(new Date,"yyyy-MM-dd-HHmmss")}.txt`,ie.click(),URL.revokeObjectURL(q)},Ne=()=>{E(!T)},ye=()=>{w(void 0),k(void 0)},pe=u.useMemo(()=>n.filter(N=>{const G=c===""||N.message.toLowerCase().includes(c.toLowerCase())||N.module.toLowerCase().includes(c.toLowerCase()),q=h==="all"||N.level===h,ie=f==="all"||N.module===f;let _=!0;if(p||v){const me=new Date(N.timestamp);if(p){const xe=new Date(p);xe.setHours(0,0,0,0),_=_&&me>=xe}if(v){const xe=new Date(v);xe.setHours(23,59,59,999),_=_&&me<=xe}}return G&&q&&ie&&_}),[n,c,h,f,p,v]),je=Qc[U].rowHeight+Z,_e=py({count:pe.length,getScrollElement:()=>z.current,estimateSize:()=>je,overscan:15});return u.useEffect(()=>{T&&pe.length>0&&_e.scrollToIndex(pe.length-1,{align:"end",behavior:"auto"})},[pe.length,T,_e]),e.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[e.jsxs("div",{className:"flex-shrink-0 space-y-4 p-3 sm:p-4 lg:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-xl sm:text-2xl lg:text-3xl font-bold",children:"日志查看器"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:"实时查看和分析麦麦运行日志"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:Q("h-2.5 w-2.5 sm:h-3 sm:w-3 rounded-full",R?"bg-green-500 animate-pulse":"bg-red-500")}),e.jsx("span",{className:"text-xs sm:text-sm text-muted-foreground",children:R?"已连接":"未连接"})]})]}),e.jsx(Fe,{className:"p-3 sm:p-4",children:e.jsxs("div",{className:"flex flex-col gap-3 sm:gap-4",children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:gap-4",children:[e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(_t,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索日志...",value:c,onChange:N=>d(N.target.value),className:"pl-9 h-9 text-sm"})]}),e.jsxs(He,{value:h,onValueChange:x,children:[e.jsxs(Re,{className:"w-full sm:w-[140px] lg:w-[180px] h-9 text-sm",children:[e.jsx(Lu,{className:"h-4 w-4 mr-2"}),e.jsx(qe,{placeholder:"级别"})]}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部级别"}),e.jsx(ne,{value:"DEBUG",children:"DEBUG"}),e.jsx(ne,{value:"INFO",children:"INFO"}),e.jsx(ne,{value:"WARNING",children:"WARNING"}),e.jsx(ne,{value:"ERROR",children:"ERROR"}),e.jsx(ne,{value:"CRITICAL",children:"CRITICAL"})]})]}),e.jsxs(He,{value:f,onValueChange:j,children:[e.jsxs(Re,{className:"w-full sm:w-[160px] lg:w-[200px] h-9 text-sm",children:[e.jsx(Lu,{className:"h-4 w-4 mr-2"}),e.jsx(qe,{placeholder:"模块"})]}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部模块"}),B.map(N=>e.jsx(ne,{value:N,children:N},N))]})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:gap-4",children:[e.jsxs(Oa,{children:[e.jsx(Ra,{asChild:!0,children:e.jsxs(y,{variant:"outline",size:"sm",className:Q("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!p&&"text-muted-foreground"),children:[e.jsx(Xf,{className:"mr-2 h-4 w-4"}),e.jsx("span",{className:"text-xs sm:text-sm",children:p?_u(p,"PPP",{locale:$c}):"开始日期"})]})}),e.jsx(wa,{className:"w-auto p-0",align:"start",children:e.jsx(gp,{mode:"single",selected:p,onSelect:w,initialFocus:!0,locale:$c})})]}),e.jsxs(Oa,{children:[e.jsx(Ra,{asChild:!0,children:e.jsxs(y,{variant:"outline",size:"sm",className:Q("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!v&&"text-muted-foreground"),children:[e.jsx(Xf,{className:"mr-2 h-4 w-4"}),e.jsx("span",{className:"text-xs sm:text-sm",children:v?_u(v,"PPP",{locale:$c}):"结束日期"})]})}),e.jsx(wa,{className:"w-auto p-0",align:"start",children:e.jsx(gp,{mode:"single",selected:v,onSelect:k,initialFocus:!0,locale:$c})})]}),(p||v)&&e.jsxs(y,{variant:"outline",size:"sm",onClick:ye,className:"w-full sm:w-auto h-9",children:[e.jsx(li,{className:"h-4 w-4 sm:mr-2"}),e.jsx("span",{className:"hidden sm:inline text-sm",children:"清除时间筛选"}),e.jsx("span",{className:"sm:hidden text-sm",children:"清除"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center",children:[e.jsxs("div",{className:"flex gap-2 flex-wrap",children:[e.jsxs(y,{variant:T?"default":"outline",size:"sm",onClick:Ne,className:"flex-1 sm:flex-none h-9",children:[T?e.jsx(GN,{className:"h-4 w-4"}):e.jsx(VN,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:T?"自动滚动":"已暂停"})]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:O,className:"flex-1 sm:flex-none h-9",children:[e.jsx(pt,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"刷新"})]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:te,className:"flex-1 sm:flex-none h-9",children:[e.jsx(es,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"清空"})]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:he,className:"flex-1 sm:flex-none h-9",children:[e.jsx(nl,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"导出"})]})]}),e.jsx("div",{className:"flex-1 hidden sm:block"}),e.jsxs("div",{className:"text-xs sm:text-sm text-muted-foreground flex items-center justify-center sm:justify-end",children:[e.jsxs("span",{className:"font-mono",children:[pe.length," / ",n.length]}),e.jsx("span",{className:"ml-1",children:"条日志"})]})]}),e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-6 pt-2 border-t border-border/50",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(FN,{className:"h-4 w-4"}),e.jsx("span",{children:"字号"})]}),e.jsx("div",{className:"flex gap-1",children:Object.keys(Qc).map(N=>e.jsx(y,{variant:U===N?"default":"outline",size:"sm",onClick:()=>A(N),className:"h-7 px-3 text-xs",children:Qc[N].label},N))})]}),e.jsxs("div",{className:"flex items-center gap-3 flex-1 max-w-xs",children:[e.jsx("span",{className:"text-sm text-muted-foreground whitespace-nowrap",children:"行距"}),e.jsx(Ma,{value:[Z],onValueChange:([N])=>H(N),min:0,max:12,step:2,className:"flex-1"}),e.jsxs("span",{className:"text-xs text-muted-foreground w-8",children:[Z,"px"]})]})]})]})})]}),e.jsx("div",{className:"flex-1 min-h-0 px-3 sm:px-4 lg:px-6 pb-3 sm:pb-4 lg:pb-6",children:e.jsx(Fe,{className:"bg-black dark:bg-gray-950 border-gray-800 dark:border-gray-900 h-full",children:e.jsx(Pe,{viewportRef:z,className:"h-full",children:e.jsx("div",{className:Q("p-2 sm:p-3 font-mono relative",Qc[U].class),style:{height:`${_e.getTotalSize()}px`},children:pe.length===0?e.jsx("div",{className:"text-gray-500 dark:text-gray-600 text-center py-8 text-sm",children:"暂无日志数据"}):_e.getVirtualItems().map(N=>{const G=pe[N.index];return e.jsxs("div",{"data-index":N.index,ref:_e.measureElement,className:Q("absolute top-0 left-0 w-full px-2 sm:px-3 rounded hover:bg-white/5 transition-colors group",S(G.level)),style:{transform:`translateY(${N.start}px)`,paddingTop:`${Z/2}px`,paddingBottom:`${Z/2}px`},children:[e.jsxs("div",{className:"flex flex-col gap-0.5 sm:hidden",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-gray-500 dark:text-gray-600",children:G.timestamp}),e.jsxs("span",{className:Q("font-semibold",X(G.level)),children:["[",G.level,"]"]})]}),e.jsx("div",{className:"text-cyan-400 dark:text-cyan-500 truncate",children:G.module}),e.jsx("div",{className:"text-gray-300 dark:text-gray-400 whitespace-pre-wrap break-words",children:G.message})]}),e.jsxs("div",{className:"hidden sm:flex gap-2 items-start",children:[e.jsx("span",{className:"text-gray-500 dark:text-gray-600 flex-shrink-0 w-[130px] lg:w-[160px]",children:G.timestamp}),e.jsxs("span",{className:Q("flex-shrink-0 w-[65px] lg:w-[75px] font-semibold",X(G.level)),children:["[",G.level,"]"]}),e.jsx("span",{className:"text-cyan-400 dark:text-cyan-500 flex-shrink-0 w-[100px] lg:w-[130px] truncate",children:G.module}),e.jsx("span",{className:"text-gray-300 dark:text-gray-400 flex-1 whitespace-pre-wrap break-words",children:G.message})]})]},N.key)})})})})})]})}const l2="Mai-with-u",n2="plugin-repo",i2="main",r2="plugin_details.json";async function c2(){try{const n=await ke("/api/webui/plugins/fetch-raw",{method:"POST",body:JSON.stringify({owner:l2,repo:n2,branch:i2,file_path:r2})});if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);const r=await n.json();if(!r.success||!r.data)throw new Error(r.error||"获取插件列表失败");return JSON.parse(r.data).filter(h=>!h?.id||!h?.manifest?(console.warn("跳过无效插件数据:",h),!1):!h.manifest.name||!h.manifest.version?(console.warn("跳过缺少必需字段的插件:",h.id),!1):!0).map(h=>({id:h.id,manifest:{manifest_version:h.manifest.manifest_version||1,name:h.manifest.name,version:h.manifest.version,description:h.manifest.description||"",author:h.manifest.author||{name:"Unknown"},license:h.manifest.license||"Unknown",host_application:h.manifest.host_application||{min_version:"0.0.0"},homepage_url:h.manifest.homepage_url,repository_url:h.manifest.repository_url,keywords:h.manifest.keywords||[],categories:h.manifest.categories||[],default_locale:h.manifest.default_locale||"zh-CN",locales_path:h.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!1,published_at:new Date().toISOString(),updated_at:new Date().toISOString()}))}catch(n){throw console.error("Failed to fetch plugin list:",n),n}}async function o2(){try{const n=await ke("/api/webui/plugins/git-status");if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);return await n.json()}catch(n){return console.error("Failed to check Git status:",n),{installed:!1,error:"无法检测 Git 安装状态"}}}async function d2(){try{const n=await ke("/api/webui/plugins/version");if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);return await n.json()}catch(n){return console.error("Failed to get Maimai version:",n),{version:"0.0.0",version_major:0,version_minor:0,version_patch:0}}}function u2(n,r,c){const d=n.split(".").map(j=>parseInt(j)||0),h=d[0]||0,x=d[1]||0,f=d[2]||0;if(c.version_majorparseInt(k)||0),p=j[0]||0,w=j[1]||0,v=j[2]||0;if(c.version_major>p||c.version_major===p&&c.version_minor>w||c.version_major===p&&c.version_minor===w&&c.version_patch>v)return!1}return!0}function m2(n,r){const c=window.location.protocol==="https:"?"wss:":"ws:",d=window.location.host,h=new WebSocket(`${c}//${d}/api/webui/ws/plugin-progress`);return h.onopen=()=>{console.log("Plugin progress WebSocket connected");const x=setInterval(()=>{h.readyState===WebSocket.OPEN?h.send("ping"):clearInterval(x)},3e4)},h.onmessage=x=>{try{if(x.data==="pong")return;const f=JSON.parse(x.data);n(f)}catch(f){console.error("Failed to parse progress data:",f)}},h.onerror=x=>{console.error("Plugin progress WebSocket error:",x),r?.(x)},h.onclose=()=>{console.log("Plugin progress WebSocket disconnected")},h}async function cr(){try{const n=await ke("/api/webui/plugins/installed",{headers:Ts()});if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);const r=await n.json();if(!r.success)throw new Error(r.message||"获取已安装插件列表失败");return r.plugins||[]}catch(n){return console.error("Failed to get installed plugins:",n),[]}}function Yc(n,r){return r.some(c=>c.id===n)}function Xc(n,r){const c=r.find(d=>d.id===n);if(c)return c.manifest?.version||c.version}async function h2(n,r,c="main"){const d=await ke("/api/webui/plugins/install",{method:"POST",body:JSON.stringify({plugin_id:n,repository_url:r,branch:c})});if(!d.ok){const h=await d.json();throw new Error(h.detail||"安装失败")}return await d.json()}async function x2(n){const r=await ke("/api/webui/plugins/uninstall",{method:"POST",body:JSON.stringify({plugin_id:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"卸载失败")}return await r.json()}async function f2(n,r,c="main"){const d=await ke("/api/webui/plugins/update",{method:"POST",body:JSON.stringify({plugin_id:n,repository_url:r,branch:c})});if(!d.ok){const h=await d.json();throw new Error(h.detail||"更新失败")}return await d.json()}async function p2(n){const r=await ke(`/api/webui/plugins/config/${n}/schema`,{headers:Ts()});if(!r.ok){const d=await r.json();throw new Error(d.detail||"获取配置 Schema 失败")}const c=await r.json();if(!c.success)throw new Error(c.message||"获取配置 Schema 失败");return c.schema}async function g2(n){const r=await ke(`/api/webui/plugins/config/${n}`,{headers:Ts()});if(!r.ok){const d=await r.json();throw new Error(d.detail||"获取配置失败")}const c=await r.json();if(!c.success)throw new Error(c.message||"获取配置失败");return c.config}async function j2(n,r){const c=await ke(`/api/webui/plugins/config/${n}`,{method:"PUT",body:JSON.stringify({config:r})});if(!c.ok){const d=await c.json();throw new Error(d.detail||"保存配置失败")}return await c.json()}async function v2(n){const r=await ke(`/api/webui/plugins/config/${n}/reset`,{method:"POST",headers:Ts()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"重置配置失败")}return await r.json()}async function y2(n){const r=await ke(`/api/webui/plugins/config/${n}/toggle`,{method:"POST",headers:Ts()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"切换状态失败")}return await r.json()}const Cr="https://maibot-plugin-stats.maibot-webui.workers.dev";async function Yg(n){try{const r=await fetch(`${Cr}/stats/${n}`);return r.ok?await r.json():(console.error("Failed to fetch plugin stats:",r.statusText),null)}catch(r){return console.error("Error fetching plugin stats:",r),null}}async function N2(n,r){try{const c=r||em(),d=await fetch(`${Cr}/stats/like`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,user_id:c})}),h=await d.json();return d.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:d.ok?{success:!0,...h}:{success:!1,error:h.error||"点赞失败"}}catch(c){return console.error("Error liking plugin:",c),{success:!1,error:"网络错误"}}}async function b2(n,r){try{const c=r||em(),d=await fetch(`${Cr}/stats/dislike`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,user_id:c})}),h=await d.json();return d.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:d.ok?{success:!0,...h}:{success:!1,error:h.error||"点踩失败"}}catch(c){return console.error("Error disliking plugin:",c),{success:!1,error:"网络错误"}}}async function w2(n,r,c,d){if(r<1||r>5)return{success:!1,error:"评分必须在 1-5 之间"};try{const h=d||em(),x=await fetch(`${Cr}/stats/rate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,rating:r,comment:c,user_id:h})}),f=await x.json();return x.status===429?{success:!1,error:"每天最多评分 3 次"}:x.ok?{success:!0,...f}:{success:!1,error:f.error||"评分失败"}}catch(h){return console.error("Error rating plugin:",h),{success:!1,error:"网络错误"}}}async function _2(n){try{const r=await fetch(`${Cr}/stats/download`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n})}),c=await r.json();return r.status===429?(console.warn("Download recording rate limited"),{success:!0}):r.ok?{success:!0,...c}:(console.error("Failed to record download:",c.error),{success:!1,error:c.error})}catch(r){return console.error("Error recording download:",r),{success:!1,error:"网络错误"}}}function S2(){const n=navigator,r=[navigator.userAgent,navigator.language,navigator.languages?.join(",")||"",navigator.platform,navigator.hardwareConcurrency||0,screen.width,screen.height,screen.colorDepth,screen.pixelDepth,new Date().getTimezoneOffset(),Intl.DateTimeFormat().resolvedOptions().timeZone,navigator.maxTouchPoints||0,n.deviceMemory||0].join("|");let c=0;for(let d=0;d{x(!0);const A=await Yg(n);A&&d(A),x(!1)};u.useEffect(()=>{E()},[n]);const R=async()=>{const A=await N2(n);A.success?(T({title:"已点赞",description:"感谢你的支持!"}),E()):T({title:"点赞失败",description:A.error||"未知错误",variant:"destructive"})},K=async()=>{const A=await b2(n);A.success?(T({title:"已反馈",description:"感谢你的反馈!"}),E()):T({title:"操作失败",description:A.error||"未知错误",variant:"destructive"})},U=async()=>{if(f===0){T({title:"请选择评分",description:"至少选择 1 颗星",variant:"destructive"});return}const A=await w2(n,f,p||void 0);A.success?(T({title:"评分成功",description:"感谢你的评价!"}),k(!1),j(0),w(""),E()):T({title:"评分失败",description:A.error||"未知错误",variant:"destructive"})};return h?e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(nl,{className:"h-4 w-4"}),e.jsx("span",{children:"-"})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ol,{className:"h-4 w-4"}),e.jsx("span",{children:"-"})]})]}):c?r?e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",title:`下载量: ${c.downloads.toLocaleString()}`,children:[e.jsx(nl,{className:"h-4 w-4"}),e.jsx("span",{children:c.downloads.toLocaleString()})]}),e.jsxs("div",{className:"flex items-center gap-1",title:`评分: ${c.rating.toFixed(1)} (${c.rating_count} 条评价)`,children:[e.jsx(Ol,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsx("span",{children:c.rating.toFixed(1)})]}),e.jsxs("div",{className:"flex items-center gap-1",title:`点赞数: ${c.likes}`,children:[e.jsx(Cu,{className:"h-4 w-4"}),e.jsx("span",{children:c.likes})]})]}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-4",children:[e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(nl,{className:"h-5 w-5 text-muted-foreground mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.downloads.toLocaleString()}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"下载量"})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(Ol,{className:"h-5 w-5 text-yellow-400 mb-1 fill-yellow-400"}),e.jsx("span",{className:"text-2xl font-bold",children:c.rating.toFixed(1)}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:[c.rating_count," 条评价"]})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(Cu,{className:"h-5 w-5 text-green-500 mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.likes}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"点赞"})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(Kf,{className:"h-5 w-5 text-red-500 mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.dislikes}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"点踩"})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(y,{variant:"outline",size:"sm",onClick:R,children:[e.jsx(Cu,{className:"h-4 w-4 mr-1"}),"点赞"]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:K,children:[e.jsx(Kf,{className:"h-4 w-4 mr-1"}),"点踩"]}),e.jsxs(Rs,{open:v,onOpenChange:k,children:[e.jsx(ni,{asChild:!0,children:e.jsxs(y,{variant:"default",size:"sm",children:[e.jsx(Ol,{className:"h-4 w-4 mr-1"}),"评分"]})}),e.jsxs(zs,{children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"为插件评分"}),e.jsx(Ys,{children:"分享你的使用体验,帮助其他用户"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"flex flex-col items-center gap-2",children:[e.jsx("div",{className:"flex gap-2",children:[1,2,3,4,5].map(A=>e.jsx("button",{onClick:()=>j(A),className:"focus:outline-none",children:e.jsx(Ol,{className:`h-8 w-8 transition-colors ${A<=f?"fill-yellow-400 text-yellow-400":"text-muted-foreground hover:text-yellow-300"}`})},A))}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[f===0&&"点击星星进行评分",f===1&&"很差",f===2&&"一般",f===3&&"还行",f===4&&"不错",f===5&&"非常好"]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium mb-2 block",children:"评论(可选)"}),e.jsx(Bs,{value:p,onChange:A=>w(A.target.value),placeholder:"分享你的使用体验...",rows:4,maxLength:500}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 text-right",children:[p.length," / 500"]})]})]}),e.jsxs(Js,{children:[e.jsx(y,{variant:"outline",onClick:()=>k(!1),children:"取消"}),e.jsx(y,{onClick:U,disabled:f===0,children:"提交评分"})]})]})]})]}),c.recent_ratings&&c.recent_ratings.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"text-sm font-semibold",children:"最近评价"}),e.jsx("div",{className:"space-y-3",children:c.recent_ratings.map((A,Z)=>e.jsxs("div",{className:"p-3 rounded-lg border bg-muted/50",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("div",{className:"flex gap-1",children:[1,2,3,4,5].map(H=>e.jsx(Ol,{className:`h-3 w-3 ${H<=A.rating?"fill-yellow-400 text-yellow-400":"text-muted-foreground"}`},H))}),e.jsx("span",{className:"text-xs text-muted-foreground",children:new Date(A.created_at).toLocaleDateString()})]}),A.comment&&e.jsx("p",{className:"text-sm text-muted-foreground",children:A.comment})]},Z))})]})]}):null}const vp={"Group Management":"群组管理","Entertainment & Interaction":"娱乐互动","Utility Tools":"实用工具","Content Generation":"内容生成",Multimedia:"多媒体","External Integration":"外部集成","Data Analysis & Insights":"数据分析与洞察",Other:"其他"};function k2(){const n=Jt(),[r,c]=u.useState(null),[d,h]=u.useState(""),[x,f]=u.useState("all"),[j,p]=u.useState("all"),[w,v]=u.useState(!0),[k,T]=u.useState([]),[E,R]=u.useState(!0),[K,U]=u.useState(null),[A,Z]=u.useState(null),[H,z]=u.useState(null),[B,X]=u.useState(null),[,S]=u.useState([]),[O,te]=u.useState({}),{toast:he}=Hs(),Ne=async _=>{const me=_.map(async de=>{try{const ge=await Yg(de.id);return{id:de.id,stats:ge}}catch(ge){return console.warn(`Failed to load stats for ${de.id}:`,ge),{id:de.id,stats:null}}}),xe=await Promise.all(me),$={};xe.forEach(({id:de,stats:ge})=>{ge&&($[de]=ge)}),te($)};u.useEffect(()=>{let _=null,me=!1;return(async()=>{if(_=m2($=>{me||(z($),$.stage==="success"?setTimeout(()=>{me||z(null)},2e3):$.stage==="error"&&(R(!1),U($.error||"加载失败")))},$=>{console.error("WebSocket error:",$),me||he({title:"WebSocket 连接失败",description:"无法实时显示加载进度",variant:"destructive"})}),await new Promise($=>{if(!_){$();return}const de=()=>{_&&_.readyState===WebSocket.OPEN?(console.log("WebSocket connected, starting to load plugins"),$()):_&&_.readyState===WebSocket.CLOSED?(console.warn("WebSocket closed before loading plugins"),$()):setTimeout(de,100)};de()}),!me){const $=await o2();Z($),$.installed||he({title:"Git 未安装",description:$.error||"请先安装 Git 才能使用插件安装功能",variant:"destructive"})}if(!me){const $=await d2();X($)}if(!me)try{R(!0),U(null);const $=await c2();if(!me){const de=await cr();S(de);const ge=$.map(le=>{const L=Yc(le.id,de),F=Xc(le.id,de);return{...le,installed:L,installed_version:F}});for(const le of de)!ge.some(F=>F.id===le.id)&&le.manifest&&ge.push({id:le.id,manifest:{manifest_version:le.manifest.manifest_version||1,name:le.manifest.name,version:le.manifest.version,description:le.manifest.description||"",author:le.manifest.author,license:le.manifest.license||"Unknown",host_application:le.manifest.host_application,homepage_url:le.manifest.homepage_url,repository_url:le.manifest.repository_url,keywords:le.manifest.keywords||[],categories:le.manifest.categories||[],default_locale:le.manifest.default_locale||"zh-CN",locales_path:le.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!0,installed_version:le.manifest.version,published_at:new Date().toISOString(),updated_at:new Date().toISOString()});T(ge),Ne(ge)}}catch($){if(!me){const de=$ instanceof Error?$.message:"加载插件列表失败";U(de),he({title:"加载失败",description:de,variant:"destructive"})}}finally{me||R(!1)}})(),()=>{me=!0,_&&_.close()}},[he]);const ye=_=>{if(!_.installed&&B&&!pe(_))return e.jsxs(Ye,{variant:"destructive",className:"gap-1",children:[e.jsx(Da,{className:"h-3 w-3"}),"不兼容"]});if(_.installed){const me=_.installed_version?.trim(),xe=_.manifest.version?.trim();if(me!==xe){const $=me?.split(".").map(Number)||[0,0,0],de=xe?.split(".").map(Number)||[0,0,0];for(let ge=0;ge<3;ge++){if((de[ge]||0)>($[ge]||0))return e.jsxs(Ye,{variant:"outline",className:"gap-1 text-orange-600 border-orange-600",children:[e.jsx(Da,{className:"h-3 w-3"}),"可更新"]});if((de[ge]||0)<($[ge]||0))break}}return e.jsxs(Ye,{variant:"default",className:"gap-1",children:[e.jsx(pa,{className:"h-3 w-3"}),"已安装"]})}return null},pe=_=>!B||!_.manifest?.host_application?!0:u2(_.manifest.host_application.min_version,_.manifest.host_application.max_version,B),je=_=>{if(!_.installed||!_.installed_version||!_.manifest?.version)return!1;const me=_.installed_version.trim(),xe=_.manifest.version.trim();if(me===xe)return!1;const $=me.split(".").map(Number),de=xe.split(".").map(Number);for(let ge=0;ge<3;ge++){if((de[ge]||0)>($[ge]||0))return!0;if((de[ge]||0)<($[ge]||0))return!1}return!1},_e=k.filter(_=>{if(!_.manifest)return console.warn("[过滤] 跳过无 manifest 的插件:",_.id),!1;const me=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(ge=>ge.toLowerCase().includes(d.toLowerCase())),xe=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x);let $=!0;j==="installed"?$=_.installed===!0:j==="updates"&&($=_.installed===!0&&je(_));const de=!w||!B||pe(_);return me&&xe&&$&&de}),N=()=>{c(null)},G=async _=>{if(!A?.installed){he({title:"无法安装",description:"Git 未安装",variant:"destructive"});return}if(B&&!pe(_)){he({title:"无法安装",description:"插件与当前麦麦版本不兼容",variant:"destructive"});return}try{await h2(_.id,_.manifest.repository_url||"","main"),_2(_.id).catch(xe=>{console.warn("Failed to record download:",xe)}),he({title:"安装成功",description:`${_.manifest.name} 已成功安装`});const me=await cr();S(me),T(xe=>xe.map($=>{if($.id===_.id){const de=Yc($.id,me),ge=Xc($.id,me);return{...$,installed:de,installed_version:ge}}return $}))}catch(me){he({title:"安装失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}},q=async _=>{try{await x2(_.id),he({title:"卸载成功",description:`${_.manifest.name} 已成功卸载`});const me=await cr();S(me),T(xe=>xe.map($=>{if($.id===_.id){const de=Yc($.id,me),ge=Xc($.id,me);return{...$,installed:de,installed_version:ge}}return $}))}catch(me){he({title:"卸载失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}},ie=async _=>{if(!A?.installed){he({title:"无法更新",description:"Git 未安装",variant:"destructive"});return}try{const me=await f2(_.id,_.manifest.repository_url||"","main");he({title:"更新成功",description:`${_.manifest.name} 已从 ${me.old_version} 更新到 ${me.new_version}`});const xe=await cr();S(xe),T($=>$.map(de=>{if(de.id===_.id){const ge=Yc(de.id,xe),le=Xc(de.id,xe);return{...de,installed:ge,installed_version:le}}return de}))}catch(me){he({title:"更新失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}};return e.jsx(Pe,{className:"h-full",children:e.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件市场"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"浏览和管理麦麦的插件"})]}),e.jsxs(y,{onClick:()=>n({to:"/plugin-mirrors"}),children:[e.jsx($N,{className:"h-4 w-4 mr-2"}),"配置镜像源"]})]}),A&&!A.installed&&e.jsxs(Fe,{className:"border-orange-600 bg-orange-50 dark:bg-orange-950/20",children:[e.jsx(gs,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ba,{className:"h-5 w-5 text-orange-600"}),e.jsxs("div",{children:[e.jsx(js,{className:"text-lg text-orange-900 dark:text-orange-100",children:"Git 未安装"}),e.jsx(Zs,{className:"text-orange-800 dark:text-orange-200",children:A.error||"请先安装 Git 才能使用插件安装功能"})]})]})}),e.jsx(bs,{children:e.jsxs("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:["您可以从 ",e.jsx("a",{href:"https://git-scm.com/downloads",target:"_blank",rel:"noopener noreferrer",className:"underline font-medium",children:"git-scm.com"})," 下载并安装 Git。 安装完成后,请重启麦麦应用。"]})})]}),e.jsx(Fe,{className:"p-4",children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(_t,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索插件...",value:d,onChange:_=>h(_.target.value),className:"pl-9"})]}),e.jsxs(He,{value:x,onValueChange:f,children:[e.jsx(Re,{className:"w-full sm:w-[200px]",children:e.jsx(qe,{placeholder:"选择分类"})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部分类"}),e.jsx(ne,{value:"Group Management",children:"群组管理"}),e.jsx(ne,{value:"Entertainment & Interaction",children:"娱乐互动"}),e.jsx(ne,{value:"Utility Tools",children:"实用工具"}),e.jsx(ne,{value:"Content Generation",children:"内容生成"}),e.jsx(ne,{value:"Multimedia",children:"多媒体"}),e.jsx(ne,{value:"External Integration",children:"外部集成"}),e.jsx(ne,{value:"Data Analysis & Insights",children:"数据分析与洞察"}),e.jsx(ne,{value:"Other",children:"其他"})]})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(yt,{id:"compatible-only",checked:w,onCheckedChange:_=>v(_===!0)}),e.jsx("label",{htmlFor:"compatible-only",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer",children:"只显示兼容当前版本的插件"})]})]})}),e.jsx(Kt,{value:j,onValueChange:p,className:"w-full",children:e.jsxs(Rt,{className:"grid w-full grid-cols-3",children:[e.jsxs($e,{value:"all",children:["全部插件 (",k.filter(_=>{if(!_.manifest)return!1;const me=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(de=>de.toLowerCase().includes(d.toLowerCase())),xe=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x),$=!w||!B||pe(_);return me&&xe&&$}).length,")"]}),e.jsxs($e,{value:"installed",children:["已安装 (",k.filter(_=>{if(!_.manifest)return!1;const me=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(de=>de.toLowerCase().includes(d.toLowerCase())),xe=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x),$=!w||!B||pe(_);return _.installed&&me&&xe&&$}).length,")"]}),e.jsxs($e,{value:"updates",children:["可更新 (",k.filter(_=>{if(!_.manifest)return!1;const me=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(de=>de.toLowerCase().includes(d.toLowerCase())),xe=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x),$=!w||!B||pe(_);return _.installed&&je(_)&&me&&xe&&$}).length,")"]})]})}),H&&H.stage==="loading"&&e.jsx(Fe,{className:"p-4",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(vt,{className:"h-4 w-4 animate-spin"}),e.jsxs("span",{className:"text-sm font-medium",children:[H.operation==="fetch"&&"加载插件列表",H.operation==="install"&&`安装插件${H.plugin_id?`: ${H.plugin_id}`:""}`,H.operation==="uninstall"&&`卸载插件${H.plugin_id?`: ${H.plugin_id}`:""}`,H.operation==="update"&&`更新插件${H.plugin_id?`: ${H.plugin_id}`:""}`]})]}),e.jsxs("span",{className:"text-sm font-medium",children:[H.progress,"%"]})]}),e.jsx(Sr,{value:H.progress,className:"h-2"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:H.message}),H.operation==="fetch"&&H.total_plugins>0&&e.jsxs("div",{className:"text-xs text-muted-foreground text-center",children:["已加载 ",H.loaded_plugins," / ",H.total_plugins," 个插件"]})]})}),H&&H.stage==="error"&&H.error&&e.jsx(Fe,{className:"border-destructive bg-destructive/10",children:e.jsx(gs,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ba,{className:"h-5 w-5 text-destructive"}),e.jsxs("div",{children:[e.jsx(js,{className:"text-lg text-destructive",children:"加载失败"}),e.jsx(Zs,{className:"text-destructive/80",children:H.error})]})]})})}),E?e.jsxs("div",{className:"flex items-center justify-center py-12",children:[e.jsx(vt,{className:"h-8 w-8 animate-spin text-muted-foreground"}),e.jsx("span",{className:"ml-3 text-muted-foreground",children:"加载插件列表中..."})]}):K?e.jsx(Fe,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(ba,{className:"h-12 w-12 text-destructive mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:K}),e.jsx(y,{onClick:()=>window.location.reload(),children:"重新加载"})]})}):_e.length===0?e.jsx(Fe,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(_t,{className:"h-12 w-12 text-muted-foreground mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"未找到插件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:d||x!=="all"?"尝试调整搜索条件或筛选器":"暂无可用插件"})]})}):e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:_e.map(_=>e.jsxs(Fe,{className:"flex flex-col hover:shadow-lg transition-shadow h-full",children:[e.jsxs(gs,{children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsx(js,{className:"text-xl",children:_.manifest?.name||_.id}),e.jsxs("div",{className:"flex flex-col gap-1",children:[_.manifest?.categories&&_.manifest.categories[0]&&e.jsx(Ye,{variant:"secondary",className:"text-xs whitespace-nowrap",children:vp[_.manifest.categories[0]]||_.manifest.categories[0]}),ye(_)]})]}),e.jsx(Zs,{className:"line-clamp-2",children:_.manifest?.description||"无描述"})]}),e.jsx(bs,{className:"flex-1",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(nl,{className:"h-4 w-4"}),e.jsx("span",{children:(O[_.id]?.downloads??_.downloads??0).toLocaleString()})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ol,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsx("span",{children:(O[_.id]?.rating??_.rating??0).toFixed(1)})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[_.manifest?.keywords&&_.manifest.keywords.slice(0,3).map(me=>e.jsx(Ye,{variant:"outline",className:"text-xs",children:me},me)),_.manifest?.keywords&&_.manifest.keywords.length>3&&e.jsxs(Ye,{variant:"outline",className:"text-xs",children:["+",_.manifest.keywords.length-3]})]}),e.jsxs("div",{className:"text-xs text-muted-foreground pt-2 border-t space-y-1",children:[e.jsxs("div",{children:["v",_.manifest?.version||"unknown"," · ",_.manifest?.author?.name||"Unknown"]}),_.manifest?.host_application&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{children:"支持:"}),e.jsxs("span",{className:"font-medium",children:[_.manifest.host_application.min_version,_.manifest.host_application.max_version?` - ${_.manifest.host_application.max_version}`:" - 最新版本"]})]})]})]})}),e.jsx(Sg,{className:"pt-4",children:e.jsxs("div",{className:"flex items-center justify-end gap-2 w-full",children:[e.jsx(y,{variant:"outline",size:"sm",onClick:()=>c(_),children:"查看详情"}),_.installed?je(_)?e.jsxs(y,{size:"sm",disabled:!A?.installed,title:A?.installed?void 0:"Git 未安装",onClick:()=>ie(_),children:[e.jsx(pt,{className:"h-4 w-4 mr-1"}),"更新"]}):e.jsxs(y,{variant:"destructive",size:"sm",disabled:!A?.installed,title:A?.installed?void 0:"Git 未安装",onClick:()=>q(_),children:[e.jsx(es,{className:"h-4 w-4 mr-1"}),"卸载"]}):e.jsxs(y,{size:"sm",disabled:!A?.installed||H?.operation==="install"||B!==null&&!pe(_),title:A?.installed?B!==null&&!pe(_)?`不兼容当前版本 (需要 ${_.manifest?.host_application?.min_version||"未知"}${_.manifest?.host_application?.max_version?` - ${_.manifest.host_application.max_version}`:"+"},当前 ${B?.version})`:void 0:"Git 未安装",onClick:()=>G(_),children:[e.jsx(nl,{className:"h-4 w-4 mr-1"}),H?.operation==="install"&&H?.plugin_id===_.id?"安装中...":"安装"]})]})})]},_.id))}),e.jsx(Rs,{open:r!==null,onOpenChange:N,children:r&&r.manifest&&e.jsx(zs,{className:"max-w-2xl max-h-[80vh] p-0 flex flex-col",children:e.jsx(Pe,{className:"flex-1 overflow-auto",children:e.jsxs("div",{className:"p-6",children:[e.jsx(Ms,{children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"space-y-2 flex-1",children:[e.jsx(As,{className:"text-2xl",children:r.manifest.name}),e.jsxs(Ys,{children:["作者: ",r.manifest.author?.name||"Unknown",r.manifest.author?.url&&e.jsx("a",{href:r.manifest.author.url,target:"_blank",rel:"noopener noreferrer",className:"ml-2 text-primary hover:underline",children:e.jsx(dr,{className:"h-3 w-3 inline"})})]})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[r.manifest.categories&&r.manifest.categories[0]&&e.jsx(Ye,{variant:"secondary",children:vp[r.manifest.categories[0]]||r.manifest.categories[0]}),ye(r)]})]})}),e.jsxs("div",{className:"space-y-6",children:[e.jsx(C2,{pluginId:r.id}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"版本"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["v",r.manifest?.version||"unknown"]}),r.installed&&r.installed_version&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:["已安装: v",r.installed_version]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"下载量"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:(O[r.id]?.downloads??r.downloads??0).toLocaleString()})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"评分"}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ol,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[(O[r.id]?.rating??r.rating??0).toFixed(1)," (",O[r.id]?.rating_count??r.review_count??0,")"]})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"许可证"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:r.manifest.license||"Unknown"})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("p",{className:"text-sm font-medium",children:"支持版本"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:[r.manifest.host_application?.min_version||"未知",r.manifest.host_application?.max_version?` - ${r.manifest.host_application.max_version}`:" - 最新版本"]})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"关键词"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:r.manifest.keywords&&r.manifest.keywords.map(_=>e.jsx(Ye,{variant:"outline",children:_},_))})]}),r.detailed_description&&e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"详细说明"}),e.jsx("p",{className:"text-sm text-muted-foreground whitespace-pre-line",children:r.detailed_description})]}),!r.detailed_description&&e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"说明"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:r.manifest.description||"无描述"})]}),e.jsxs("div",{className:"space-y-2",children:[r.manifest.homepage_url&&e.jsxs("div",{className:"text-sm",children:[e.jsx("span",{className:"font-medium",children:"主页: "}),e.jsx("a",{href:r.manifest.homepage_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:r.manifest.homepage_url})]}),r.manifest.repository_url&&e.jsxs("div",{className:"text-sm",children:[e.jsx("span",{className:"font-medium",children:"仓库: "}),e.jsx("a",{href:r.manifest.repository_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:r.manifest.repository_url})]})]})]}),e.jsxs(Js,{children:[r.manifest.homepage_url&&e.jsxs(y,{onClick:()=>window.open(r.manifest.homepage_url,"_blank"),children:[e.jsx(dr,{className:"h-4 w-4 mr-2"}),"访问主页"]}),r.manifest.repository_url&&e.jsxs(y,{variant:"outline",onClick:()=>window.open(r.manifest.repository_url,"_blank"),children:[e.jsx(dr,{className:"h-4 w-4 mr-2"}),"查看仓库"]})]})]})})})})]})})}const Gu=$y,Vu=Qy,Fu=Yy;function T2({field:n,value:r,onChange:c}){const[d,h]=u.useState(!1);switch(n.ui_type){case"switch":return e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:n.label}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]}),e.jsx(Ve,{checked:!!r,onCheckedChange:c,disabled:n.disabled})]});case"number":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsx(ce,{type:"number",value:r??n.default,onChange:x=>c(parseFloat(x.target.value)||0),min:n.min,max:n.max,step:n.step??1,placeholder:n.placeholder,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"slider":return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:n.label}),e.jsx("span",{className:"text-sm text-muted-foreground",children:r??n.default})]}),e.jsx(Ma,{value:[r??n.default],onValueChange:x=>c(x[0]),min:n.min??0,max:n.max??100,step:n.step??1,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"select":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsxs(He,{value:String(r??n.default),onValueChange:c,disabled:n.disabled,children:[e.jsx(Re,{children:e.jsx(qe,{placeholder:n.placeholder??"请选择"})}),e.jsx(Le,{children:n.choices?.map(x=>e.jsx(ne,{value:String(x),children:String(x)},String(x)))})]}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"textarea":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsx(Bs,{value:r??n.default,onChange:x=>c(x.target.value),placeholder:n.placeholder,rows:n.rows??3,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"password":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsxs("div",{className:"relative",children:[e.jsx(ce,{type:d?"text":"password",value:r??"",onChange:x=>c(x.target.value),placeholder:n.placeholder,disabled:n.disabled,className:"pr-10"}),e.jsx(y,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-3",onClick:()=>h(!d),children:d?e.jsx(mr,{className:"h-4 w-4"}):e.jsx(Zt,{className:"h-4 w-4"})})]}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"text":default:return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsx(ce,{type:"text",value:r??n.default??"",onChange:x=>c(x.target.value),placeholder:n.placeholder,maxLength:n.max_length,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]})}}function yp({section:n,config:r,onChange:c}){const[d,h]=u.useState(!n.collapsed),x=Object.entries(n.fields).filter(([,f])=>!f.hidden).sort(([,f],[,j])=>f.order-j.order);return e.jsx(Gu,{open:d,onOpenChange:h,children:e.jsxs(Fe,{children:[e.jsx(Vu,{asChild:!0,children:e.jsxs(gs,{className:"cursor-pointer hover:bg-muted/50 transition-colors",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[d?e.jsx(Ll,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(il,{className:"h-4 w-4 text-muted-foreground"}),e.jsx(js,{className:"text-lg",children:n.title})]}),e.jsxs(Ye,{variant:"secondary",className:"text-xs",children:[x.length," 项"]})]}),n.description&&e.jsx(Zs,{className:"ml-6",children:n.description})]})}),e.jsx(Fu,{children:e.jsx(bs,{className:"space-y-4 pt-0",children:x.map(([f,j])=>e.jsx(T2,{field:j,value:r[n.name]?.[f],onChange:p=>c(n.name,f,p),sectionName:n.name},f))})})]})})}function E2({plugin:n,onBack:r}){const{toast:c}=Hs(),[d,h]=u.useState(null),[x,f]=u.useState({}),[j,p]=u.useState({}),[w,v]=u.useState(!0),[k,T]=u.useState(!1),[E,R]=u.useState(!1),[K,U]=u.useState(!1),A=u.useCallback(async()=>{v(!0);try{const[O,te]=await Promise.all([p2(n.id),g2(n.id)]);h(O),f(te),p(JSON.parse(JSON.stringify(te)))}catch(O){c({title:"加载配置失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}finally{v(!1)}},[n.id,c]);u.useEffect(()=>{A()},[A]),u.useEffect(()=>{R(JSON.stringify(x)!==JSON.stringify(j))},[x,j]);const Z=(O,te,he)=>{f(Ne=>({...Ne,[O]:{...Ne[O]||{},[te]:he}}))},H=async()=>{T(!0);try{await j2(n.id,x),p(JSON.parse(JSON.stringify(x))),c({title:"配置已保存",description:"更改将在插件重新加载后生效"})}catch(O){c({title:"保存失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}finally{T(!1)}},z=async()=>{try{await v2(n.id),c({title:"配置已重置",description:"下次加载插件时将使用默认配置"}),U(!1),A()}catch(O){c({title:"重置失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}},B=async()=>{try{const O=await y2(n.id);c({title:O.message,description:O.note}),A()}catch(O){c({title:"切换状态失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}};if(w)return e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx(vt,{className:"h-8 w-8 animate-spin text-muted-foreground"})});if(!d)return e.jsxs("div",{className:"flex flex-col items-center justify-center h-64 space-y-4",children:[e.jsx(Da,{className:"h-12 w-12 text-muted-foreground"}),e.jsx("p",{className:"text-muted-foreground",children:"无法加载配置"}),e.jsxs(y,{onClick:r,variant:"outline",children:[e.jsx(ti,{className:"h-4 w-4 mr-2"}),"返回"]})]});const X=Object.values(d.sections).sort((O,te)=>O.order-te.order),S=x.plugin?.enabled!==!1;return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(y,{variant:"ghost",size:"icon",onClick:r,children:e.jsx(ti,{className:"h-5 w-5"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:d.plugin_info.name||n.manifest.name}),e.jsxs("div",{className:"flex items-center gap-2 mt-1",children:[e.jsx(Ye,{variant:S?"default":"secondary",children:S?"已启用":"已禁用"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["v",d.plugin_info.version||n.manifest.version]})]})]})]}),e.jsxs("div",{className:"flex gap-2 ml-10 sm:ml-0",children:[e.jsxs(y,{variant:"outline",size:"sm",onClick:B,children:[e.jsx(Nr,{className:"h-4 w-4 mr-2"}),S?"禁用":"启用"]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>U(!0),children:[e.jsx(Wc,{className:"h-4 w-4 mr-2"}),"重置"]}),e.jsxs(y,{size:"sm",onClick:H,disabled:!E||k,children:[k?e.jsx(vt,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(br,{className:"h-4 w-4 mr-2"}),"保存"]})]})]}),E&&e.jsx(Fe,{className:"border-orange-200 bg-orange-50 dark:bg-orange-950/20 dark:border-orange-900",children:e.jsx(bs,{className:"py-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Xt,{className:"h-4 w-4 text-orange-600"}),e.jsx("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:"有未保存的更改"})]})})}),d.layout.type==="tabs"&&d.layout.tabs.length>0?e.jsxs(Kt,{defaultValue:d.layout.tabs[0]?.id,children:[e.jsx(Rt,{children:d.layout.tabs.map(O=>e.jsxs($e,{value:O.id,children:[O.title,O.badge&&e.jsx(Ye,{variant:"secondary",className:"ml-2 text-xs",children:O.badge})]},O.id))}),d.layout.tabs.map(O=>e.jsx(We,{value:O.id,className:"space-y-4 mt-4",children:O.sections.map(te=>{const he=d.sections[te];return he?e.jsx(yp,{section:he,config:x,onChange:Z},te):null})},O.id))]}):e.jsx("div",{className:"space-y-4",children:X.map(O=>e.jsx(yp,{section:O,config:x,onChange:Z},O.name))}),e.jsx(Rs,{open:K,onOpenChange:U,children:e.jsxs(zs,{children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"确认重置配置"}),e.jsx(Ys,{children:"这将删除当前配置文件,下次加载插件时将使用默认配置。此操作不可撤销。"})]}),e.jsxs(Js,{children:[e.jsx(y,{variant:"outline",onClick:()=>U(!1),children:"取消"}),e.jsx(y,{variant:"destructive",onClick:z,children:"确认重置"})]})]})})]})}function z2(){const{toast:n}=Hs(),[r,c]=u.useState([]),[d,h]=u.useState(!0),[x,f]=u.useState(""),[j,p]=u.useState(null),w=async()=>{h(!0);try{const E=await cr();c(E)}catch(E){n({title:"加载插件列表失败",description:E instanceof Error?E.message:"未知错误",variant:"destructive"})}finally{h(!1)}};u.useEffect(()=>{w()},[]);const v=r.filter(E=>{const R=x.toLowerCase();return E.id.toLowerCase().includes(R)||E.manifest.name.toLowerCase().includes(R)||E.manifest.description?.toLowerCase().includes(R)}),k=r.length,T=0;return j?e.jsx(Pe,{className:"h-full",children:e.jsx("div",{className:"p-4 sm:p-6",children:e.jsx(E2,{plugin:j,onBack:()=>p(null)})})}):e.jsx(Pe,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理和配置已安装的插件"})]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:w,children:[e.jsx(pt,{className:`h-4 w-4 mr-2 ${d?"animate-spin":""}`}),"刷新"]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-3",children:[e.jsxs(Fe,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"已安装插件"}),e.jsx(rn,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsx("div",{className:"text-2xl font-bold",children:r.length}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:d?"正在加载...":"个插件"})]})]}),e.jsxs(Fe,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"已启用"}),e.jsx(pa,{className:"h-4 w-4 text-green-600"})]}),e.jsxs(bs,{children:[e.jsx("div",{className:"text-2xl font-bold",children:k}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"运行中的插件"})]})]}),e.jsxs(Fe,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"已禁用"}),e.jsx(Da,{className:"h-4 w-4 text-orange-600"})]}),e.jsxs(bs,{children:[e.jsx("div",{className:"text-2xl font-bold",children:T}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"未激活的插件"})]})]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(_t,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索插件...",value:x,onChange:E=>f(E.target.value),className:"pl-9"})]}),e.jsxs(Fe,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"已安装的插件"}),e.jsx(Zs,{children:"点击插件查看和编辑配置"})]}),e.jsx(bs,{children:d?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(vt,{className:"h-8 w-8 animate-spin text-muted-foreground"})}):v.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 space-y-4",children:[e.jsx(rn,{className:"h-16 w-16 text-muted-foreground/50"}),e.jsxs("div",{className:"text-center space-y-2",children:[e.jsx("p",{className:"text-lg font-medium text-muted-foreground",children:x?"没有找到匹配的插件":"暂无已安装的插件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:x?"尝试其他搜索关键词":"前往插件市场安装插件"})]})]}):e.jsx("div",{className:"space-y-2",children:v.map(E=>e.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg border hover:bg-muted/50 cursor-pointer transition-colors",onClick:()=>p(E),children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[e.jsx("div",{className:"h-10 w-10 rounded-lg bg-primary/10 flex items-center justify-center flex-shrink-0",children:e.jsx(rn,{className:"h-5 w-5 text-primary"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-medium truncate",children:E.manifest.name}),e.jsxs(Ye,{variant:"secondary",className:"text-xs flex-shrink-0",children:["v",E.manifest.version]})]}),e.jsx("p",{className:"text-sm text-muted-foreground truncate",children:E.manifest.description||"暂无描述"})]})]}),e.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[e.jsx(y,{variant:"ghost",size:"sm",children:e.jsx(Rl,{className:"h-4 w-4"})}),e.jsx(il,{className:"h-4 w-4 text-muted-foreground"})]})]},E.id))})})]})]})})}function M2(){const n=Jt(),{toast:r}=Hs(),[c,d]=u.useState([]),[h,x]=u.useState(!0),[f,j]=u.useState(null),[p,w]=u.useState(null),[v,k]=u.useState(!1),[T,E]=u.useState(!1),[R,K]=u.useState({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),U=u.useCallback(async()=>{try{x(!0),j(null);const S=localStorage.getItem("access-token"),O=await fetch("/api/webui/plugins/mirrors",{headers:{Authorization:`Bearer ${S}`}});if(!O.ok)throw new Error("获取镜像源列表失败");const te=await O.json();d(te.mirrors||[])}catch(S){const O=S instanceof Error?S.message:"加载镜像源失败";j(O),r({title:"加载失败",description:O,variant:"destructive"})}finally{x(!1)}},[r]);u.useEffect(()=>{U()},[U]);const A=async()=>{try{const S=localStorage.getItem("access-token"),O=await fetch("/api/webui/plugins/mirrors",{method:"POST",headers:{Authorization:`Bearer ${S}`,"Content-Type":"application/json"},body:JSON.stringify(R)});if(!O.ok){const te=await O.json();throw new Error(te.detail||"添加镜像源失败")}r({title:"添加成功",description:"镜像源已添加"}),k(!1),K({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),U()}catch(S){r({title:"添加失败",description:S instanceof Error?S.message:"未知错误",variant:"destructive"})}},Z=async()=>{if(p)try{const S=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${p.id}`,{method:"PUT",headers:{Authorization:`Bearer ${S}`,"Content-Type":"application/json"},body:JSON.stringify({name:R.name,raw_prefix:R.raw_prefix,clone_prefix:R.clone_prefix,enabled:R.enabled,priority:R.priority})})).ok)throw new Error("更新镜像源失败");r({title:"更新成功",description:"镜像源已更新"}),E(!1),w(null),U()}catch(S){r({title:"更新失败",description:S instanceof Error?S.message:"未知错误",variant:"destructive"})}},H=async S=>{if(confirm("确定要删除这个镜像源吗?"))try{const O=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${S}`,{method:"DELETE",headers:{Authorization:`Bearer ${O}`}})).ok)throw new Error("删除镜像源失败");r({title:"删除成功",description:"镜像源已删除"}),U()}catch(O){r({title:"删除失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}},z=async S=>{try{const O=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${S.id}`,{method:"PUT",headers:{Authorization:`Bearer ${O}`,"Content-Type":"application/json"},body:JSON.stringify({enabled:!S.enabled})})).ok)throw new Error("更新状态失败");U()}catch(O){r({title:"更新失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}},B=S=>{w(S),K({id:S.id,name:S.name,raw_prefix:S.raw_prefix,clone_prefix:S.clone_prefix,enabled:S.enabled,priority:S.priority}),E(!0)},X=async(S,O)=>{const te=O==="up"?S.priority-1:S.priority+1;if(!(te<1))try{const he=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${S.id}`,{method:"PUT",headers:{Authorization:`Bearer ${he}`,"Content-Type":"application/json"},body:JSON.stringify({priority:te})})).ok)throw new Error("更新优先级失败");U()}catch(he){r({title:"更新失败",description:he instanceof Error?he.message:"未知错误",variant:"destructive"})}};return e.jsx(Pe,{className:"h-full",children:e.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(y,{variant:"ghost",size:"icon",onClick:()=>n({to:"/plugins"}),children:e.jsx(ti,{className:"h-5 w-5"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"镜像源配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理 Git 克隆和文件下载的镜像源"})]})]}),e.jsxs(y,{onClick:()=>k(!0),children:[e.jsx(ot,{className:"h-4 w-4 mr-2"}),"添加镜像源"]})]}),h?e.jsx(Fe,{className:"p-6",children:e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(vt,{className:"h-8 w-8 animate-spin text-primary"})})}):f?e.jsx(Fe,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(ba,{className:"h-12 w-12 text-destructive mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:f}),e.jsx(y,{onClick:U,children:"重新加载"})]})}):e.jsxs(Fe,{children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(ii,{children:[e.jsx(ri,{children:e.jsxs(gt,{children:[e.jsx(ls,{children:"状态"}),e.jsx(ls,{children:"名称"}),e.jsx(ls,{children:"ID"}),e.jsx(ls,{children:"优先级"}),e.jsx(ls,{className:"text-right",children:"操作"})]})}),e.jsx(ci,{children:c.map(S=>e.jsxs(gt,{children:[e.jsx(Qe,{children:e.jsx(Ve,{checked:S.enabled,onCheckedChange:()=>z(S)})}),e.jsx(Qe,{children:e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:S.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1",children:["Raw: ",S.raw_prefix]})]})}),e.jsx(Qe,{children:e.jsx(Ye,{variant:"outline",children:S.id})}),e.jsx(Qe,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-mono",children:S.priority}),e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx(y,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>X(S,"up"),disabled:S.priority===1,children:e.jsx(fr,{className:"h-3 w-3"})}),e.jsx(y,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>X(S,"down"),children:e.jsx(Ll,{className:"h-3 w-3"})})]})]})}),e.jsx(Qe,{className:"text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-2",children:[e.jsx(y,{variant:"ghost",size:"icon",onClick:()=>B(S),children:e.jsx(nn,{className:"h-4 w-4"})}),e.jsx(y,{variant:"ghost",size:"icon",onClick:()=>H(S.id),children:e.jsx(es,{className:"h-4 w-4 text-destructive"})})]})})]},S.id))})]})}),e.jsx("div",{className:"md:hidden p-4 space-y-4",children:c.map(S=>e.jsx(Fe,{className:"p-4",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-semibold",children:S.name}),S.enabled&&e.jsx(Ye,{variant:"default",className:"text-xs",children:"启用"})]}),e.jsx(Ye,{variant:"outline",className:"mt-1 text-xs",children:S.id})]}),e.jsx(Ve,{checked:S.enabled,onCheckedChange:()=>z(S)})]}),e.jsxs("div",{className:"text-sm space-y-1",children:[e.jsxs("div",{className:"text-muted-foreground",children:[e.jsx("span",{className:"font-medium",children:"Raw: "}),e.jsx("span",{className:"break-all",children:S.raw_prefix})]}),e.jsxs("div",{className:"text-muted-foreground",children:[e.jsx("span",{className:"font-medium",children:"优先级: "}),e.jsx("span",{className:"font-mono",children:S.priority})]})]}),e.jsxs("div",{className:"flex items-center gap-2 pt-2 border-t",children:[e.jsxs(y,{variant:"outline",size:"sm",className:"flex-1",onClick:()=>B(S),children:[e.jsx(nn,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsx(y,{variant:"outline",size:"sm",onClick:()=>X(S,"up"),disabled:S.priority===1,children:e.jsx(fr,{className:"h-4 w-4"})}),e.jsx(y,{variant:"outline",size:"sm",onClick:()=>X(S,"down"),children:e.jsx(Ll,{className:"h-4 w-4"})}),e.jsx(y,{variant:"destructive",size:"sm",onClick:()=>H(S.id),children:e.jsx(es,{className:"h-4 w-4"})})]})]})},S.id))})]}),e.jsx(Rs,{open:v,onOpenChange:k,children:e.jsxs(zs,{className:"max-w-lg",children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"添加镜像源"}),e.jsx(Ys,{children:"添加新的 Git 镜像源配置"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-id",children:"镜像源 ID *"}),e.jsx(ce,{id:"add-id",placeholder:"例如: my-mirror",value:R.id,onChange:S=>K({...R,id:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-name",children:"名称 *"}),e.jsx(ce,{id:"add-name",placeholder:"例如: 我的镜像源",value:R.name,onChange:S=>K({...R,name:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-raw",children:"Raw 文件前缀 *"}),e.jsx(ce,{id:"add-raw",placeholder:"https://example.com/raw",value:R.raw_prefix,onChange:S=>K({...R,raw_prefix:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-clone",children:"克隆前缀 *"}),e.jsx(ce,{id:"add-clone",placeholder:"https://example.com/clone",value:R.clone_prefix,onChange:S=>K({...R,clone_prefix:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-priority",children:"优先级"}),e.jsx(ce,{id:"add-priority",type:"number",min:"1",value:R.priority,onChange:S=>K({...R,priority:parseInt(S.target.value)||1})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"add-enabled",checked:R.enabled,onCheckedChange:S=>K({...R,enabled:S})}),e.jsx(b,{htmlFor:"add-enabled",children:"启用此镜像源"})]})]}),e.jsxs(Js,{children:[e.jsx(y,{variant:"outline",onClick:()=>k(!1),children:"取消"}),e.jsx(y,{onClick:A,children:"添加"})]})]})}),e.jsx(Rs,{open:T,onOpenChange:E,children:e.jsxs(zs,{className:"max-w-lg",children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"编辑镜像源"}),e.jsx(Ys,{children:"修改镜像源配置"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"镜像源 ID"}),e.jsx(ce,{value:R.id,disabled:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit-name",children:"名称 *"}),e.jsx(ce,{id:"edit-name",value:R.name,onChange:S=>K({...R,name:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit-raw",children:"Raw 文件前缀 *"}),e.jsx(ce,{id:"edit-raw",value:R.raw_prefix,onChange:S=>K({...R,raw_prefix:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit-clone",children:"克隆前缀 *"}),e.jsx(ce,{id:"edit-clone",value:R.clone_prefix,onChange:S=>K({...R,clone_prefix:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit-priority",children:"优先级"}),e.jsx(ce,{id:"edit-priority",type:"number",min:"1",value:R.priority,onChange:S=>K({...R,priority:parseInt(S.target.value)||1})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"edit-enabled",checked:R.enabled,onCheckedChange:S=>K({...R,enabled:S})}),e.jsx(b,{htmlFor:"edit-enabled",children:"启用此镜像源"})]})]}),e.jsxs(Js,{children:[e.jsx(y,{variant:"outline",onClick:()=>E(!1),children:"取消"}),e.jsx(y,{onClick:Z,children:"保存"})]})]})})]})})}const Ic=u.forwardRef(({className:n,...r},c)=>e.jsx(Bp,{ref:c,className:Q("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",n),...r}));Ic.displayName=Bp.displayName;const A2=u.forwardRef(({className:n,...r},c)=>e.jsx(Hp,{ref:c,className:Q("aspect-square h-full w-full",n),...r}));A2.displayName=Hp.displayName;const Pc=u.forwardRef(({className:n,...r},c)=>e.jsx(qp,{ref:c,className:Q("flex h-full w-full items-center justify-center rounded-full bg-muted",n),...r}));Pc.displayName=qp.displayName;function D2(){return"webui_"+Math.random().toString(36).substr(2,9)+"_"+Date.now().toString(36)}function O2(){const n="maibot_webui_user_id";let r=localStorage.getItem(n);return r||(r=D2(),localStorage.setItem(n,r)),r}function R2(){return localStorage.getItem("maibot_webui_user_name")||"WebUI用户"}function L2(n){localStorage.setItem("maibot_webui_user_name",n)}function U2(){const[n,r]=u.useState([]),[c,d]=u.useState(""),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,w]=u.useState(!1),[v,k]=u.useState(!0),[T,E]=u.useState(R2()),[R,K]=u.useState(!1),[U,A]=u.useState(""),[Z,H]=u.useState({}),z=u.useRef(O2()),B=u.useRef(null),X=u.useRef(null),S=u.useRef(null),O=u.useRef(0),te=u.useRef(new Set),{toast:he}=Hs(),Ne=$=>(O.current+=1,`${$}-${Date.now()}-${O.current}-${Math.random().toString(36).substr(2,9)}`),ye=u.useCallback(()=>{X.current?.scrollIntoView({behavior:"smooth"})},[]);u.useEffect(()=>{ye()},[n,ye]);const pe=u.useCallback(async()=>{k(!0);try{const $=`/api/chat/history?user_id=${z.current}&limit=50`;console.log("[Chat] 正在加载历史消息:",$);const de=await fetch($);if(console.log("[Chat] 历史消息响应状态:",de.status,de.statusText),console.log("[Chat] 响应 Content-Type:",de.headers.get("content-type")),de.ok){const ge=await de.text();console.log("[Chat] 响应内容前100字符:",ge.substring(0,100));try{const le=JSON.parse(ge);if(console.log("[Chat] 解析后的数据:",le),le.messages&&le.messages.length>0){const L=le.messages.map(F=>({id:F.id,type:F.type,content:F.content,timestamp:F.timestamp,sender:{name:F.sender_name||(F.is_bot?"麦麦":"WebUI用户"),user_id:F.user_id,is_bot:F.is_bot}}));r(L),console.log("[Chat] 已加载历史消息数量:",L.length),L.forEach(F=>{if(F.type==="bot"){const D=`bot-${F.content}-${Math.floor(F.timestamp*1e3)}`;te.current.add(D)}})}else console.log("[Chat] 没有历史消息")}catch(le){console.error("[Chat] JSON 解析失败:",le),console.error("[Chat] 原始响应内容:",ge)}}else{console.error("[Chat] 响应失败:",de.status);const ge=await de.text();console.error("[Chat] 错误响应内容:",ge.substring(0,200))}}catch($){console.error("[Chat] 加载历史消息失败:",$)}finally{k(!1)}},[]),je=u.useCallback(()=>{if(B.current?.readyState===WebSocket.OPEN||B.current?.readyState===WebSocket.CONNECTING){console.log("WebSocket 已存在,跳过连接");return}j(!0);const de=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/api/chat/ws?user_id=${encodeURIComponent(z.current)}&user_name=${encodeURIComponent(T)}`;console.log("正在连接 WebSocket:",de);try{const ge=new WebSocket(de);B.current=ge,ge.onopen=()=>{x(!0),j(!1),console.log("WebSocket 已连接")},ge.onmessage=le=>{try{const L=JSON.parse(le.data);switch(L.type){case"session_info":H({session_id:L.session_id,user_id:L.user_id,user_name:L.user_name,bot_name:L.bot_name});break;case"system":r(F=>[...F,{id:Ne("sys"),type:"system",content:L.content||"",timestamp:L.timestamp||Date.now()/1e3}]);break;case"user_message":r(F=>[...F,{id:L.message_id||Ne("user"),type:"user",content:L.content||"",timestamp:L.timestamp||Date.now()/1e3,sender:L.sender}]);break;case"bot_message":{w(!1);const F=`bot-${L.content}-${Math.floor((L.timestamp||0)*1e3)}`;if(te.current.has(F)){console.log("跳过重复的机器人消息");break}if(te.current.add(F),te.current.size>100){const D=te.current.values().next().value;D&&te.current.delete(D)}r(D=>[...D,{id:Ne("bot"),type:"bot",content:L.content||"",timestamp:L.timestamp||Date.now()/1e3,sender:L.sender}]);break}case"typing":w(L.is_typing||!1);break;case"error":r(F=>[...F,{id:Ne("error"),type:"error",content:L.content||"发生错误",timestamp:L.timestamp||Date.now()/1e3}]),he({title:"错误",description:L.content,variant:"destructive"});break;case"pong":break;default:console.log("未知消息类型:",L.type)}}catch(L){console.error("解析消息失败:",L)}},ge.onclose=()=>{x(!1),j(!1),B.current=null,console.log("WebSocket 已断开"),S.current&&clearTimeout(S.current),S.current=window.setTimeout(()=>{_e.current||je()},5e3)},ge.onerror=le=>{console.error("WebSocket 错误:",le),j(!1)}}catch(ge){console.error("创建 WebSocket 失败:",ge),j(!1)}},[he,T]),_e=u.useRef(!1);u.useEffect(()=>{_e.current=!1,pe();const $=setTimeout(()=>{_e.current||je()},100),de=setInterval(()=>{B.current?.readyState===WebSocket.OPEN&&B.current.send(JSON.stringify({type:"ping"}))},3e4);return()=>{_e.current=!0,clearTimeout($),clearInterval(de),S.current&&(clearTimeout(S.current),S.current=null),B.current&&(B.current.close(),B.current=null)}},[je,pe]);const N=u.useCallback(()=>{!c.trim()||!B.current||B.current.readyState!==WebSocket.OPEN||(B.current.send(JSON.stringify({type:"message",content:c.trim(),user_name:T})),d(""))},[c,T]),G=$=>{$.key==="Enter"&&!$.shiftKey&&($.preventDefault(),N())},q=()=>{A(T),K(!0)},ie=()=>{const $=U.trim()||"WebUI用户";E($),L2($),K(!1),B.current?.readyState===WebSocket.OPEN&&B.current.send(JSON.stringify({type:"update_nickname",user_name:$}))},_=()=>{A(""),K(!1)},me=$=>new Date($*1e3).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"}),xe=()=>{B.current&&B.current.close(),je()};return e.jsxs("div",{className:"h-full flex flex-col",children:[e.jsx("div",{className:"shrink-0 border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:e.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 sm:gap-3 min-w-0",children:[e.jsx(Ic,{className:"h-8 w-8 sm:h-10 sm:w-10 shrink-0",children:e.jsx(Pc,{className:"bg-primary/10 text-primary",children:e.jsx(ir,{className:"h-4 w-4 sm:h-5 sm:w-5"})})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h1",{className:"text-base sm:text-lg font-semibold truncate",children:Z.bot_name||"麦麦"}),e.jsx("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:h?e.jsxs(e.Fragment,{children:[e.jsx(QN,{className:"h-3 w-3 text-green-500"}),e.jsx("span",{className:"text-green-600 dark:text-green-400",children:"已连接"})]}):f?e.jsxs(e.Fragment,{children:[e.jsx(vt,{className:"h-3 w-3 animate-spin"}),e.jsx("span",{children:"连接中..."})]}):e.jsxs(e.Fragment,{children:[e.jsx(YN,{className:"h-3 w-3 text-red-500"}),e.jsx("span",{className:"text-red-600 dark:text-red-400",children:"未连接"})]})})]})]}),e.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[v&&e.jsx(vt,{className:"h-4 w-4 animate-spin text-muted-foreground"}),e.jsx(y,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:xe,disabled:f,title:"重新连接",children:e.jsx(pt,{className:Q("h-4 w-4",f&&"animate-spin")})})]})]}),e.jsxs("div",{className:"hidden sm:flex items-center gap-2 mt-2 text-sm text-muted-foreground",children:[e.jsx(to,{className:"h-3 w-3"}),e.jsx("span",{children:"当前身份:"}),R?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{value:U,onChange:$=>A($.target.value),onKeyDown:$=>{$.key==="Enter"&&ie(),$.key==="Escape"&&_()},className:"h-7 w-32",placeholder:"输入昵称",autoFocus:!0}),e.jsx(y,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:ie,children:"保存"}),e.jsx(y,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:_,children:"取消"})]}):e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"font-medium text-foreground",children:T}),e.jsx(y,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0",onClick:q,title:"修改昵称",children:e.jsx(XN,{className:"h-3 w-3"})})]})]})]})}),e.jsx("div",{className:"flex-1 overflow-hidden",children:e.jsx(Pe,{className:"h-full",children:e.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto space-y-3 sm:space-y-4",children:[n.length===0&&!v&&e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-muted-foreground",children:[e.jsx(ir,{className:"h-12 w-12 mb-4 opacity-50"}),e.jsxs("p",{className:"text-sm",children:["开始与 ",Z.bot_name||"麦麦"," 对话吧!"]})]}),n.map($=>e.jsxs("div",{className:Q("flex gap-2 sm:gap-3",$.type==="user"&&"flex-row-reverse",$.type==="system"&&"justify-center",$.type==="error"&&"justify-center"),children:[$.type==="system"&&e.jsx("div",{className:"text-xs text-muted-foreground bg-muted/50 px-3 py-1 rounded-full max-w-[90%]",children:$.content}),$.type==="error"&&e.jsx("div",{className:"text-xs text-red-600 dark:text-red-400 bg-red-100 dark:bg-red-900/30 px-3 py-1 rounded-full max-w-[90%]",children:$.content}),($.type==="user"||$.type==="bot")&&e.jsxs(e.Fragment,{children:[e.jsx(Ic,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:e.jsx(Pc,{className:Q("text-xs",$.type==="bot"?"bg-primary/10 text-primary":"bg-secondary text-secondary-foreground"),children:$.type==="bot"?e.jsx(ir,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}):e.jsx(to,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),e.jsxs("div",{className:Q("flex flex-col gap-1 max-w-[75%] sm:max-w-[70%]",$.type==="user"&&"items-end"),children:[e.jsxs("div",{className:"flex items-center gap-2 text-[10px] sm:text-xs text-muted-foreground",children:[e.jsx("span",{className:"hidden sm:inline",children:$.sender?.name||($.type==="bot"?Z.bot_name:T)}),e.jsx("span",{children:me($.timestamp)})]}),e.jsx("div",{className:Q("rounded-2xl px-3 py-2 text-sm whitespace-pre-wrap break-words",$.type==="bot"?"bg-muted rounded-tl-sm":"bg-primary text-primary-foreground rounded-tr-sm"),children:$.content})]})]})]},$.id)),p&&e.jsxs("div",{className:"flex gap-2 sm:gap-3",children:[e.jsx(Ic,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:e.jsx(Pc,{className:"bg-primary/10 text-primary",children:e.jsx(ir,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),e.jsx("div",{className:"bg-muted rounded-2xl rounded-tl-sm px-4 py-3",children:e.jsxs("div",{className:"flex gap-1",children:[e.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"0ms"}}),e.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"150ms"}}),e.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"300ms"}})]})})]}),e.jsx("div",{ref:X})]})})}),e.jsx("div",{className:"shrink-0 border-t bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:e.jsx("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{value:c,onChange:$=>d($.target.value),onKeyDown:G,placeholder:h?"输入消息...":"等待连接...",disabled:!h,className:"flex-1 h-10 sm:h-10"}),e.jsx(y,{onClick:N,disabled:!h||!c.trim(),size:"icon",className:"h-10 w-10 shrink-0",children:e.jsx(KN,{className:"h-4 w-4"})})]})})})]})}function B2(){const n=Jt(),[r,c]=u.useState(!0);return u.useEffect(()=>{let d=!1;return(async()=>{try{const x=await Ju();!d&&!x&&n({to:"/auth"})}catch{d||n({to:"/auth"})}finally{d||c(!1)}})(),()=>{d=!0}},[n]),{checking:r}}async function H2(){return await Ju()}const q2=ai("pointer-events-none inline-flex select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono font-medium opacity-100",{variants:{size:{sm:"h-5 text-[10px]",default:"h-6 text-xs",lg:"h-7 text-sm"}},defaultVariants:{size:"default"}}),Xg=u.forwardRef(({className:n,size:r,abbrTitle:c,children:d,...h},x)=>e.jsx("kbd",{className:Q(q2({size:r,className:n})),ref:x,...h,children:c?e.jsx("abbr",{title:c,children:d}):d}));Xg.displayName="Kbd";const G2=[{icon:xr,title:"首页",description:"查看仪表板概览",path:"/",category:"概览"},{icon:Aa,title:"麦麦主程序配置",description:"配置麦麦的核心设置",path:"/config/bot",category:"配置"},{icon:Ng,title:"麦麦模型提供商配置",description:"配置模型提供商",path:"/config/modelProvider",category:"配置"},{icon:bg,title:"麦麦模型配置",description:"配置模型参数",path:"/config/model",category:"配置"},{icon:$u,title:"表情包管理",description:"管理麦麦的表情包",path:"/resource/emoji",category:"资源"},{icon:si,title:"表达方式管理",description:"管理麦麦的表达方式",path:"/resource/expression",category:"资源"},{icon:wg,title:"人物信息管理",description:"管理人物信息",path:"/resource/person",category:"资源"},{icon:ZN,title:"统计信息",description:"查看使用统计",path:"/statistics",category:"监控"},{icon:rn,title:"插件市场",description:"浏览和安装插件",path:"/plugins",category:"扩展"},{icon:ao,title:"日志查看器",description:"查看系统日志",path:"/logs",category:"监控"},{icon:Rl,title:"系统设置",description:"配置系统参数",path:"/settings",category:"系统"}];function V2({open:n,onOpenChange:r}){const[c,d]=u.useState(""),[h,x]=u.useState(0),f=Jt(),j=G2.filter(v=>v.title.toLowerCase().includes(c.toLowerCase())||v.description.toLowerCase().includes(c.toLowerCase())||v.category.toLowerCase().includes(c.toLowerCase()));u.useEffect(()=>{n&&(d(""),x(0))},[n]);const p=u.useCallback(v=>{f({to:v}),r(!1)},[f,r]),w=u.useCallback(v=>{v.key==="ArrowDown"?(v.preventDefault(),x(k=>(k+1)%j.length)):v.key==="ArrowUp"?(v.preventDefault(),x(k=>(k-1+j.length)%j.length)):v.key==="Enter"&&j[h]&&(v.preventDefault(),p(j[h].path))},[j,h,p]);return e.jsx(Rs,{open:n,onOpenChange:r,children:e.jsxs(zs,{className:"max-w-2xl p-0 gap-0",children:[e.jsxs(Ms,{className:"px-4 pt-4 pb-0",children:[e.jsx(As,{className:"sr-only",children:"搜索"}),e.jsxs("div",{className:"relative",children:[e.jsx(_t,{className:"absolute left-3 top-1/2 h-5 w-5 -translate-y-1/2 text-muted-foreground"}),e.jsx(ce,{value:c,onChange:v=>{d(v.target.value),x(0)},onKeyDown:w,placeholder:"搜索页面...",className:"h-12 pl-11 text-base border-0 focus-visible:ring-0 shadow-none",autoFocus:!0})]})]}),e.jsx("div",{className:"border-t",children:e.jsx(Pe,{className:"h-[400px]",children:j.length>0?e.jsx("div",{className:"p-2",children:j.map((v,k)=>{const T=v.icon;return e.jsxs("button",{onClick:()=>p(v.path),onMouseEnter:()=>x(k),className:Q("w-full flex items-center gap-3 px-3 py-2.5 rounded-md text-left transition-colors",k===h?"bg-accent text-accent-foreground":"hover:bg-accent/50"),children:[e.jsx(T,{className:"h-5 w-5 flex-shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-sm",children:v.title}),e.jsx("div",{className:"text-xs text-muted-foreground truncate",children:v.description})]}),e.jsx("div",{className:"text-xs text-muted-foreground px-2 py-1 bg-muted rounded",children:v.category})]},v.path)})}):e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[e.jsx(_t,{className:"h-12 w-12 text-muted-foreground/50 mb-4"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:c?"未找到匹配的页面":"输入关键词开始搜索"})]})})}),e.jsx("div",{className:"border-t px-4 py-3 flex items-center justify-between text-xs text-muted-foreground",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↑"}),e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↓"}),"导航"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Enter"}),"选择"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Esc"}),"关闭"]})]})})]})})}const F2=Ky,$2=Zy,Q2=Jy,Kg=u.forwardRef(({className:n,inset:r,children:c,...d},h)=>e.jsxs(Gp,{ref:h,className:Q("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",r&&"pl-8",n),...d,children:[c,e.jsx(il,{className:"ml-auto h-4 w-4"})]}));Kg.displayName=Gp.displayName;const Zg=u.forwardRef(({className:n,...r},c)=>e.jsx(Vp,{ref:c,className:Q("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]",n),...r}));Zg.displayName=Vp.displayName;const Jg=u.forwardRef(({className:n,...r},c)=>e.jsx(Xy,{children:e.jsx(Fp,{ref:c,className:Q("z-50 max-h-[--radix-context-menu-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]",n),...r})}));Jg.displayName=Fp.displayName;const Na=u.forwardRef(({className:n,inset:r,...c},d)=>e.jsx($p,{ref:d,className:Q("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",r&&"pl-8",n),...c}));Na.displayName=$p.displayName;const Y2=u.forwardRef(({className:n,children:r,checked:c,...d},h)=>e.jsxs(Qp,{ref:h,className:Q("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",n),checked:c,...d,children:[e.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(Yp,{children:e.jsx(fa,{className:"h-4 w-4"})})}),r]}));Y2.displayName=Qp.displayName;const X2=u.forwardRef(({className:n,children:r,...c},d)=>e.jsxs(Xp,{ref:d,className:Q("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",n),...c,children:[e.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(Yp,{children:e.jsx(JN,{className:"h-2 w-2 fill-current"})})}),r]}));X2.displayName=Xp.displayName;const K2=u.forwardRef(({className:n,inset:r,...c},d)=>e.jsx(Kp,{ref:d,className:Q("px-2 py-1.5 text-sm font-semibold text-foreground",r&&"pl-8",n),...c}));K2.displayName=Kp.displayName;const or=u.forwardRef(({className:n,...r},c)=>e.jsx(Zp,{ref:c,className:Q("-mx-1 my-1 h-px bg-border",n),...r}));or.displayName=Zp.displayName;const In=({className:n,...r})=>e.jsx("span",{className:Q("ml-auto text-xs tracking-widest text-muted-foreground",n),...r});In.displayName="ContextMenuShortcut";const Z2=jN,J2=vN,I2=yN,Ig=u.forwardRef(({className:n,sideOffset:r=4,...c},d)=>e.jsx(gN,{children:e.jsx(dg,{ref:d,sideOffset:r,className:Q("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",n),...c})}));Ig.displayName=dg.displayName;function P2({children:n}){const{checking:r}=B2(),[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),{theme:p,setTheme:w}=Yu(),v=gy(),k=Jt();if(u.useEffect(()=>{const U=A=>{(A.metaKey||A.ctrlKey)&&A.key==="k"&&(A.preventDefault(),j(!0))};return window.addEventListener("keydown",U),()=>window.removeEventListener("keydown",U)},[]),r)return e.jsx("div",{className:"flex h-screen items-center justify-center bg-background",children:e.jsx("div",{className:"text-muted-foreground",children:"正在验证登录状态..."})});const T=[{title:"概览",items:[{icon:xr,label:"首页",path:"/"}]},{title:"麦麦配置编辑",items:[{icon:Aa,label:"麦麦主程序配置",path:"/config/bot"},{icon:Ng,label:"AI模型厂商配置",path:"/config/modelProvider",tourId:"sidebar-model-provider"},{icon:bg,label:"模型管理与分配",path:"/config/model",tourId:"sidebar-model-management"},{icon:Zf,label:"麦麦适配器配置",path:"/config/adapter"}]},{title:"麦麦资源管理",items:[{icon:$u,label:"表情包管理",path:"/resource/emoji"},{icon:si,label:"表达方式管理",path:"/resource/expression"},{icon:wg,label:"人物信息管理",path:"/resource/person"},{icon:yg,label:"知识库图谱可视化",path:"/resource/knowledge-graph"}]},{title:"扩展与监控",items:[{icon:rn,label:"插件市场",path:"/plugins"},{icon:Zf,label:"插件配置",path:"/plugin-config"},{icon:ao,label:"日志查看器",path:"/logs"},{icon:si,label:"本地聊天室",path:"/chat"}]},{title:"系统",items:[{icon:Rl,label:"系统设置",path:"/settings"}]}],R=p==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":p,K=async()=>{await y0()};return e.jsx(Z2,{delayDuration:300,children:e.jsxs("div",{className:"flex h-screen overflow-hidden",children:[e.jsxs("aside",{className:Q("fixed inset-y-0 left-0 z-50 flex flex-col border-r bg-card transition-all duration-300 lg:relative lg:z-0","w-64 lg:w-auto",c?"lg:w-64":"lg:w-16",h?"translate-x-0":"-translate-x-full lg:translate-x-0"),children:[e.jsx("div",{className:"flex h-16 items-center border-b px-4",children:e.jsxs("div",{className:Q("relative flex items-center justify-center flex-1 transition-all overflow-hidden","lg:flex-1",!c&&"lg:flex-none lg:w-8"),children:[e.jsxs("div",{className:Q("flex items-baseline gap-2",!c&&"lg:hidden"),children:[e.jsx("span",{className:"font-bold text-xl text-primary-gradient whitespace-nowrap",children:"MaiBot WebUI"}),e.jsx("span",{className:"text-xs text-primary/60 whitespace-nowrap",children:l0()})]}),!c&&e.jsx("span",{className:"hidden lg:block font-bold text-primary-gradient text-2xl",children:"M"})]})}),e.jsx(Pe,{className:Q("flex-1 overflow-x-hidden",!c&&"lg:w-16"),children:e.jsx("nav",{className:Q("p-4",!c&&"lg:p-2 lg:w-16"),children:e.jsx("ul",{className:Q("space-y-6",!c&&"lg:space-y-3 lg:w-full"),children:T.map((U,A)=>e.jsxs("li",{children:[e.jsx("div",{className:Q("px-3 h-[1.25rem]","mb-2",!c&&"lg:mb-1 lg:invisible"),children:e.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground/60 whitespace-nowrap",children:U.title})}),!c&&A>0&&e.jsx("div",{className:"hidden lg:block mb-2 border-t border-border"}),e.jsx("ul",{className:"space-y-1",children:U.items.map(Z=>{const H=v({to:Z.path}),z=Z.icon,B=e.jsxs(e.Fragment,{children:[H&&e.jsx("div",{className:"absolute left-0 top-1/2 h-8 w-1 -translate-y-1/2 rounded-r-full bg-primary transition-opacity duration-300"}),e.jsxs("div",{className:Q("flex items-center transition-all duration-300",c?"gap-3":"gap-3 lg:gap-0"),children:[e.jsx(z,{className:Q("h-5 w-5 flex-shrink-0",H&&"text-primary"),strokeWidth:2,fill:"none"}),e.jsx("span",{className:Q("text-sm font-medium whitespace-nowrap transition-all duration-300",H&&"font-semibold",c?"opacity-100 max-w-[200px]":"opacity-100 max-w-[200px] lg:opacity-0 lg:max-w-0 lg:overflow-hidden"),children:Z.label})]})]});return e.jsx("li",{className:"relative",children:e.jsxs(J2,{children:[e.jsx(I2,{asChild:!0,children:e.jsx(Kc,{to:Z.path,"data-tour":Z.tourId,className:Q("relative flex items-center rounded-lg py-2 transition-all duration-300","hover:bg-accent hover:text-accent-foreground",H?"bg-accent text-foreground":"text-muted-foreground hover:text-foreground",c?"px-3":"px-3 lg:px-0 lg:justify-center lg:w-12 lg:mx-auto"),onClick:()=>x(!1),children:B})}),!c&&e.jsx(Ig,{side:"right",className:"hidden lg:block",children:e.jsx("p",{children:Z.label})})]})},Z.path)})})]},U.title))})})})]}),h&&e.jsx("div",{className:"fixed inset-0 z-40 bg-black/50 lg:hidden",onClick:()=>x(!1)}),e.jsxs("div",{className:"flex flex-1 flex-col overflow-hidden",children:[e.jsxs("header",{className:"flex h-16 items-center justify-between border-b bg-card/80 backdrop-blur-md px-4 sticky top-0 z-10",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>x(!h),className:"rounded-lg p-2 hover:bg-accent lg:hidden",children:e.jsx(IN,{className:"h-5 w-5"})}),e.jsx("button",{onClick:()=>d(!c),className:"hidden rounded-lg p-2 hover:bg-accent lg:block",title:c?"收起侧边栏":"展开侧边栏",children:e.jsx(cn,{className:Q("h-5 w-5 transition-transform",!c&&"rotate-180")})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:()=>j(!0),className:"relative hidden md:flex items-center w-64 h-9 pl-9 pr-16 bg-background/50 border rounded-md hover:bg-accent/50 transition-colors text-left",children:[e.jsx(_t,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"搜索..."}),e.jsxs(Xg,{size:"sm",className:"absolute right-2 top-1/2 -translate-y-1/2",children:[e.jsx("span",{className:"text-xs",children:"⌘"}),"K"]})]}),e.jsx(V2,{open:f,onOpenChange:j}),e.jsxs(y,{variant:"ghost",size:"sm",onClick:()=>window.open("https://docs.mai-mai.org","_blank"),className:"gap-2",title:"查看麦麦文档",children:[e.jsx(PN,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:"麦麦文档"})]}),e.jsx("button",{onClick:U=>{Wb(R==="dark"?"light":"dark",w,U)},className:"rounded-lg p-2 hover:bg-accent",title:R==="dark"?"切换到浅色模式":"切换到深色模式",children:R==="dark"?e.jsx(Ou,{className:"h-5 w-5"}):e.jsx(Ru,{className:"h-5 w-5"})}),e.jsx("div",{className:"h-6 w-px bg-border"}),e.jsxs(y,{variant:"ghost",size:"sm",onClick:K,className:"gap-2",title:"登出系统",children:[e.jsx(Jf,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:"登出"})]})]})]}),e.jsxs(F2,{children:[e.jsx($2,{asChild:!0,children:e.jsx("main",{className:"flex-1 overflow-hidden bg-background",children:n})}),e.jsxs(Jg,{className:"w-64",children:[e.jsxs(Na,{onClick:()=>k({to:"/"}),children:[e.jsx(xr,{className:"mr-2 h-4 w-4"}),"首页"]}),e.jsxs(Na,{onClick:()=>k({to:"/settings"}),children:[e.jsx(Rl,{className:"mr-2 h-4 w-4"}),"系统设置"]}),e.jsxs(Na,{onClick:()=>k({to:"/logs"}),children:[e.jsx(ao,{className:"mr-2 h-4 w-4"}),"日志查看器"]}),e.jsx(or,{}),e.jsxs(Q2,{children:[e.jsxs(Kg,{children:[e.jsx(gg,{className:"mr-2 h-4 w-4"}),"切换主题"]}),e.jsxs(Zg,{className:"w-48",children:[e.jsxs(Na,{onClick:()=>w("light"),disabled:p==="light",children:[e.jsx(Ou,{className:"mr-2 h-4 w-4"}),"浅色",p==="light"&&e.jsx(In,{children:"✓"})]}),e.jsxs(Na,{onClick:()=>w("dark"),disabled:p==="dark",children:[e.jsx(Ru,{className:"mr-2 h-4 w-4"}),"深色",p==="dark"&&e.jsx(In,{children:"✓"})]}),e.jsxs(Na,{onClick:()=>w("system"),disabled:p==="system",children:[e.jsx(Rl,{className:"mr-2 h-4 w-4"}),"跟随系统",p==="system"&&e.jsx(In,{children:"✓"})]})]})]}),e.jsx(or,{}),e.jsxs(Na,{onClick:()=>window.location.reload(),children:[e.jsx(WN,{className:"mr-2 h-4 w-4"}),"刷新页面",e.jsx(In,{children:"⌘R"})]}),e.jsxs(Na,{onClick:()=>j(!0),children:[e.jsx(_t,{className:"mr-2 h-4 w-4"}),"搜索",e.jsx(In,{children:"⌘K"})]}),e.jsx(or,{}),e.jsxs(Na,{onClick:()=>window.open("https://docs.mai-mai.org","_blank"),children:[e.jsx(dr,{className:"mr-2 h-4 w-4"}),"麦麦文档"]}),e.jsx(or,{}),e.jsxs(Na,{onClick:K,className:"text-destructive focus:text-destructive",children:[e.jsx(Jf,{className:"mr-2 h-4 w-4"}),"登出系统"]})]})]})]})]})})}function W2(n){const r=n.split(` +`).slice(1),c=[];for(const d of r){const h=d.trim();if(!h.startsWith("at "))continue;const x=h.match(/at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?$/);x?c.push({functionName:x[1]||"",fileName:x[2],lineNumber:x[3],columnNumber:x[4],raw:h}):c.push({functionName:"",fileName:"",lineNumber:"",columnNumber:"",raw:h})}return c}function e_({error:n,errorInfo:r}){const[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),p=n.stack?W2(n.stack):[],w=async()=>{const v=` +Error: ${n.name} +Message: ${n.message} + +Stack Trace: +${n.stack||"No stack trace available"} + +Component Stack: +${r?.componentStack||"No component stack available"} + +URL: ${window.location.href} +User Agent: ${navigator.userAgent} +Time: ${new Date().toISOString()} + `.trim();try{await navigator.clipboard.writeText(v),j(!0),setTimeout(()=>j(!1),2e3)}catch(k){console.error("Failed to copy:",k)}};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(ha,{variant:"destructive",className:"border-red-500/50 bg-red-500/10",children:[e.jsx(ba,{className:"h-4 w-4"}),e.jsxs(xa,{className:"font-mono text-sm",children:[e.jsxs("span",{className:"font-semibold",children:[n.name,":"]})," ",n.message]})]}),p.length>0&&e.jsxs(Gu,{open:c,onOpenChange:d,children:[e.jsx(Vu,{asChild:!0,children:e.jsxs(y,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[e.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[e.jsx(eb,{className:"h-4 w-4"}),"Stack Trace (",p.length," frames)"]}),c?e.jsx(fr,{className:"h-4 w-4"}):e.jsx(Ll,{className:"h-4 w-4"})]})}),e.jsx(Fu,{children:e.jsx(Pe,{className:"h-[280px] rounded-md border bg-muted/30",children:e.jsx("div",{className:"p-3 space-y-1",children:p.map((v,k)=>e.jsx("div",{className:"font-mono text-xs p-2 rounded hover:bg-muted/50 transition-colors",children:e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsxs("span",{className:"text-muted-foreground w-6 text-right flex-shrink-0",children:[k+1,"."]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("span",{className:"text-primary font-medium",children:v.functionName}),v.fileName&&e.jsxs("div",{className:"text-muted-foreground mt-0.5 break-all",children:[v.fileName,v.lineNumber&&e.jsxs("span",{className:"text-yellow-600 dark:text-yellow-400",children:[":",v.lineNumber,":",v.columnNumber]})]})]})]})},k))})})})]}),r?.componentStack&&e.jsxs(Gu,{open:h,onOpenChange:x,children:[e.jsx(Vu,{asChild:!0,children:e.jsxs(y,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[e.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[e.jsx(ba,{className:"h-4 w-4"}),"Component Stack"]}),h?e.jsx(fr,{className:"h-4 w-4"}):e.jsx(Ll,{className:"h-4 w-4"})]})}),e.jsx(Fu,{children:e.jsx(Pe,{className:"h-[200px] rounded-md border bg-muted/30",children:e.jsx("pre",{className:"p-3 font-mono text-xs whitespace-pre-wrap text-muted-foreground",children:r.componentStack})})})]}),e.jsx(y,{variant:"outline",size:"sm",onClick:w,className:"w-full",children:f?e.jsxs(e.Fragment,{children:[e.jsx(fa,{className:"mr-2 h-4 w-4 text-green-500"}),"已复制到剪贴板"]}):e.jsxs(e.Fragment,{children:[e.jsx(so,{className:"mr-2 h-4 w-4"}),"复制错误信息"]})})]})}function Pg({error:n,errorInfo:r}){const c=()=>{window.location.href="/"},d=()=>{window.location.reload()};return e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background p-4",children:e.jsxs(Fe,{className:"w-full max-w-2xl shadow-lg",children:[e.jsxs(gs,{className:"text-center pb-2",children:[e.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30 mb-4",children:e.jsx(ba,{className:"h-8 w-8 text-red-600 dark:text-red-400"})}),e.jsx(js,{className:"text-2xl font-bold",children:"页面出现了问题"}),e.jsx(Zs,{className:"text-base mt-2",children:"应用程序遇到了意外错误。您可以尝试刷新页面或返回首页。"})]}),e.jsxs(bs,{className:"space-y-4",children:[e.jsx(e_,{error:n,errorInfo:r}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 pt-2",children:[e.jsxs(y,{onClick:d,className:"flex-1",children:[e.jsx(pt,{className:"mr-2 h-4 w-4"}),"刷新页面"]}),e.jsxs(y,{onClick:c,variant:"outline",className:"flex-1",children:[e.jsx(xr,{className:"mr-2 h-4 w-4"}),"返回首页"]})]}),e.jsx("p",{className:"text-xs text-center text-muted-foreground pt-2",children:"如果问题持续存在,请将错误信息复制并反馈给开发者"})]})]})})}class s_ extends u.Component{constructor(r){super(r),this.state={hasError:!1,error:null,errorInfo:null}}static getDerivedStateFromError(r){return{hasError:!0,error:r}}componentDidCatch(r,c){console.error("ErrorBoundary caught an error:",r,c),this.setState({errorInfo:c})}handleReset=()=>{this.setState({hasError:!1,error:null,errorInfo:null})};render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback:e.jsx(Pg,{error:this.state.error,errorInfo:this.state.errorInfo}):this.props.children}}function Wg({error:n}){return e.jsx(Pg,{error:n,errorInfo:null})}const kr=jy({component:()=>e.jsxs(e.Fragment,{children:[e.jsx(Np,{}),!1]}),beforeLoad:()=>{if(window.location.pathname==="/"&&!H2())throw yy({to:"/auth"})}}),t_=lt({getParentRoute:()=>kr,path:"/auth",component:N0}),a_=lt({getParentRoute:()=>kr,path:"/setup",component:B0}),Nt=lt({getParentRoute:()=>kr,id:"protected",component:()=>e.jsx(P2,{children:e.jsx(Np,{})}),errorComponent:({error:n})=>e.jsx(Wg,{error:n})}),l_=lt({getParentRoute:()=>Nt,path:"/",component:Ib}),n_=lt({getParentRoute:()=>Nt,path:"/config/bot",component:I0}),i_=lt({getParentRoute:()=>Nt,path:"/config/modelProvider",component:Nw}),r_=lt({getParentRoute:()=>Nt,path:"/config/model",component:Sw}),c_=lt({getParentRoute:()=>Nt,path:"/config/adapter",component:kw}),o_=lt({getParentRoute:()=>Nt,path:"/resource/emoji",component:Kw}),d_=lt({getParentRoute:()=>Nt,path:"/resource/expression",component:i1}),u_=lt({getParentRoute:()=>Nt,path:"/resource/person",component:g1}),m_=lt({getParentRoute:()=>Nt,path:"/resource/knowledge-graph",component:C1}),h_=lt({getParentRoute:()=>Nt,path:"/logs",component:a2}),x_=lt({getParentRoute:()=>Nt,path:"/chat",component:U2}),f_=lt({getParentRoute:()=>Nt,path:"/plugins",component:k2}),p_=lt({getParentRoute:()=>Nt,path:"/plugin-config",component:z2}),g_=lt({getParentRoute:()=>Nt,path:"/plugin-mirrors",component:M2}),j_=lt({getParentRoute:()=>Nt,path:"/settings",component:x0}),v_=lt({getParentRoute:()=>kr,path:"*",component:Rg}),y_=kr.addChildren([t_,a_,Nt.addChildren([l_,n_,i_,r_,c_,o_,d_,u_,m_,f_,p_,g_,h_,x_,j_]),v_]),N_=vy({routeTree:y_,defaultNotFoundComponent:Rg,defaultErrorComponent:({error:n})=>e.jsx(Wg,{error:n})});function b_({children:n,defaultTheme:r="system",storageKey:c="ui-theme",...d}){const[h,x]=u.useState(()=>localStorage.getItem(c)||r);u.useEffect(()=>{const j=window.document.documentElement;if(j.classList.remove("light","dark"),h==="system"){const p=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";j.classList.add(p);return}j.classList.add(h)},[h]),u.useEffect(()=>{const j=localStorage.getItem("accent-color");if(j){const p=document.documentElement,v={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[j];v&&(p.style.setProperty("--primary",v.hsl),v.gradient?(p.style.setProperty("--primary-gradient",v.gradient),p.classList.add("has-gradient")):(p.style.removeProperty("--primary-gradient"),p.classList.remove("has-gradient")))}},[]);const f={theme:h,setTheme:j=>{localStorage.setItem(c,j),x(j)}};return e.jsx(Eg.Provider,{...d,value:f,children:n})}function w_({children:n,defaultEnabled:r=!0,defaultWavesEnabled:c=!0,storageKey:d="enable-animations",wavesStorageKey:h="enable-waves-background"}){const[x,f]=u.useState(()=>{const v=localStorage.getItem(d);return v!==null?v==="true":r}),[j,p]=u.useState(()=>{const v=localStorage.getItem(h);return v!==null?v==="true":c});u.useEffect(()=>{const v=document.documentElement;x?v.classList.remove("no-animations"):v.classList.add("no-animations"),localStorage.setItem(d,String(x))},[x,d]),u.useEffect(()=>{localStorage.setItem(h,String(j))},[j,h]);const w={enableAnimations:x,setEnableAnimations:f,enableWavesBackground:j,setEnableWavesBackground:p};return e.jsx(zg.Provider,{value:w,children:n})}const __=NN,ej=u.forwardRef(({className:n,...r},c)=>e.jsx(ug,{ref:c,className:Q("fixed bottom-0 right-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:max-w-[420px] gap-2",n),...r}));ej.displayName=ug.displayName;const S_=ai("group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-slide-in-from-right data-[state=open]:animate-fade-in data-[state=closed]:animate-slide-out-to-right data-[state=closed]:animate-fade-out data-[swipe=end]:animate-slide-out-to-right",{variants:{variant:{default:"border bg-primary/5 text-foreground backdrop-blur-sm",destructive:"destructive group border-destructive bg-destructive/10 text-destructive-foreground backdrop-blur-sm"}},defaultVariants:{variant:"default"}}),sj=u.forwardRef(({className:n,variant:r,...c},d)=>e.jsx(mg,{ref:d,className:Q(S_({variant:r}),n),...c}));sj.displayName=mg.displayName;const C_=u.forwardRef(({className:n,...r},c)=>e.jsx(hg,{ref:c,className:Q("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",n),...r}));C_.displayName=hg.displayName;const tj=u.forwardRef(({className:n,...r},c)=>e.jsx(xg,{ref:c,className:Q("absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",n),"toast-close":"",...r,children:e.jsx(li,{className:"h-4 w-4"})}));tj.displayName=xg.displayName;const aj=u.forwardRef(({className:n,...r},c)=>e.jsx(fg,{ref:c,className:Q("text-sm font-semibold [&+div]:text-xs",n),...r}));aj.displayName=fg.displayName;const lj=u.forwardRef(({className:n,...r},c)=>e.jsx(pg,{ref:c,className:Q("text-sm opacity-90",n),...r}));lj.displayName=pg.displayName;function k_(){const{toasts:n}=Hs();return e.jsxs(__,{children:[n.map(function({id:r,title:c,description:d,action:h,...x}){return e.jsxs(sj,{...x,children:[e.jsxs("div",{className:"grid gap-1",children:[c&&e.jsx(aj,{children:c}),d&&e.jsx(lj,{children:d})]}),h,e.jsx(tj,{})]},r)}),e.jsx(ej,{})]})}Hb.createRoot(document.getElementById("root")).render(e.jsx(u.StrictMode,{children:e.jsx(s_,{children:e.jsx(b_,{defaultTheme:"system",children:e.jsx(w_,{children:e.jsxs(pw,{children:[e.jsx(Ny,{router:N_}),e.jsx(vw,{}),e.jsx(k_,{})]})})})})})); diff --git a/webui/dist/assets/index-DuV8F13p.js b/webui/dist/assets/index-DuV8F13p.js deleted file mode 100644 index 3dd4ef1e..00000000 --- a/webui/dist/assets/index-DuV8F13p.js +++ /dev/null @@ -1,52 +0,0 @@ -import{r as u,j as e,L as Kc,e as It,b as xy,f as fy,g as py,h as gy,k as lt,l as jy,m as vy,O as vp,n as yy}from"./router-CWhjJi2n.js";import{a as Ny,b as by,g as wy}from"./react-vendor-Dtc2IqVY.js";import{I as _y,c as Sy,J as ai,K as qc,L as wu,M as Cy,N as er,O as sr,P as ky,n as _u}from"./utils-CCeOswSm.js";import{L as yp,T as Np,C as bp,R as Ty,a as wp,V as Ey,b as zy,S as _p,c as My,d as Sp,I as Ay,e as Cp,f as Dy,g as kp,h as Oy,i as Ry,j as Ly,O as Tp,P as Uy,k as Ep,l as zp,D as Mp,A as Ap,m as Dp,n as By,o as Hy,p as Op,q as qy,r as Rp,s as Gy,t as Vy,u as Fy,v as Qy,w as $y,x as Lp,y as Up,F as Bp,z as Hp,B as qp,E as Yy,G as Gp,H as Vp,J as Fp,K as Qp,M as $p,N as Yp,Q as Xp,U as Xy,W as Ky,X as Zy}from"./radix-extra-Cw1azsjZ.js";import{aj as Iy,ak as Jy,al as Py,am as Wy,an as Gc,ao as Vc,ap as tr,aq as eN,ar as Su,as as Fc,at as sN,au as tN,av as aN}from"./charts-Dhri-zxi.js";import{S as lN,H as Kp,O as Zp,o as nN,C as Ip,p as Jp,T as Pp,D as Wp,R as iN,q as rN,I as eg,J as cN,K as sg,L as tg,M as oN,N as ag,V as dN,Q as lg,U as ng,X as uN,Y as mN,Z as ig,_ as hN,$ as xN,a0 as rg,a1 as fN,a2 as pN,a3 as cg,a4 as gN,a5 as jN,a6 as vN,a7 as og,a8 as dg,a9 as ug,aa as mg,ab as hg,ac as xg,ad as yN}from"./radix-core-BlBHu_Lw.js";import{R as ft,P as Nr,C as xa,a as Aa,Z as ln,b as Wc,F as Ma,c as NN,S as Rl,A as bN,D as wN,d as eo,e as Wn,M as si,T as _N,X as li,f as fg,g as SN,I as Xt,h as ya,i as ha,j as so,E as mr,k as Zt,l as pg,H as CN,m as ns,n as nl,U as hr,o as Ou,p as Ru,L as $f,K as gg,q as ro,r as kN,s as dr,t as vt,u as TN,B as ir,v as to,w as Qu,x as EN,y as zN,z as St,G as xr,J as ti,N as Ll,O as fr,Q as MN,V as AN,W as br,Y as gt,_ as ao,$ as nn,a0 as wr,a1 as cn,a2 as il,a3 as _r,a4 as $u,a5 as DN,a6 as ON,a7 as RN,a8 as rn,a9 as LN,aa as Lu,ab as pr,ac as UN,ad as BN,ae as Uu,af as HN,ag as jg,ah as Yf,ai as qN,aj as GN,ak as VN,al as Ol,am as Cu,an as Xf,ao as FN,ap as QN,aq as $N,ar as YN,as as XN,at as vg,au as yg,av as Ng,aw as KN,ax as ZN,ay as Kf,az as IN,aA as JN,aB as Zf,aC as PN,aD as WN}from"./icons-Bw5y5Hqz.js";import{S as eb,p as sb,j as tb,a as ab,E as If,R as lb,o as nb}from"./codemirror-BHeANvwm.js";import{_ as Lt,c as ib,g as bg,D as rb}from"./misc-Ii-X5qWA.js";import{u as cb,a as Jf,D as ob,c as db,S as ub,h as mb,b as hb,s as xb,K as fb,P as pb,d as gb,C as jb}from"./dnd-Dyi3CnuX.js";import{D as vb,U as yb}from"./uppy-DSH7n_-V.js";import{M as Nb,r as bb,a as wb,b as _b}from"./markdown-A1ShuLvG.js";import{r as Sb,H as lo,P as no,u as Cb,a as kb,R as Tb,B as Eb,b as zb,C as Mb,M as Ab,c as Db}from"./reactflow-B3n3_Vkw.js";(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const h of document.querySelectorAll('link[rel="modulepreload"]'))d(h);new MutationObserver(h=>{for(const x of h)if(x.type==="childList")for(const f of x.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&d(f)}).observe(document,{childList:!0,subtree:!0});function c(h){const x={};return h.integrity&&(x.integrity=h.integrity),h.referrerPolicy&&(x.referrerPolicy=h.referrerPolicy),h.crossOrigin==="use-credentials"?x.credentials="include":h.crossOrigin==="anonymous"?x.credentials="omit":x.credentials="same-origin",x}function d(h){if(h.ep)return;h.ep=!0;const x=c(h);fetch(h.href,x)}})();var ku={exports:{}},ar={},Tu={exports:{}},Eu={};var Pf;function Ob(){return Pf||(Pf=1,(function(n){function r(y,q){var H=y.length;y.push(q);e:for(;0>>1,S=y[ne];if(0>>1;neh(Q,H))oeh(ge,Q)?(y[ne]=ge,y[oe]=H,ne=oe):(y[ne]=Q,y[he]=H,ne=he);else if(oeh(ge,H))y[ne]=ge,y[oe]=H,ne=oe;else break e}}return q}function h(y,q){var H=y.sortIndex-q.sortIndex;return H!==0?H:y.id-q.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var x=performance;n.unstable_now=function(){return x.now()}}else{var f=Date,j=f.now();n.unstable_now=function(){return f.now()-j}}var g=[],_=[],v=1,k=null,z=3,T=!1,L=!1,K=!1,U=!1,R=typeof setTimeout=="function"?setTimeout:null,ee=typeof clearTimeout=="function"?clearTimeout:null,V=typeof setImmediate<"u"?setImmediate:null;function E(y){for(var q=c(_);q!==null;){if(q.callback===null)d(_);else if(q.startTime<=y)d(_),q.sortIndex=q.expirationTime,r(g,q);else break;q=c(_)}}function B(y){if(K=!1,E(y),!L)if(c(g)!==null)L=!0,X||(X=!0,ye());else{var q=c(_);q!==null&&Ne(B,q.startTime-y)}}var X=!1,w=-1,D=5,te=-1;function xe(){return U?!0:!(n.unstable_now()-tey&&xe());){var ne=k.callback;if(typeof ne=="function"){k.callback=null,z=k.priorityLevel;var S=ne(k.expirationTime<=y);if(y=n.unstable_now(),typeof S=="function"){k.callback=S,E(y),q=!0;break s}k===c(g)&&d(g),E(y)}else d(g);k=c(g)}if(k!==null)q=!0;else{var me=c(_);me!==null&&Ne(B,me.startTime-y),q=!1}}break e}finally{k=null,z=H,T=!1}q=void 0}}finally{q?ye():X=!1}}}var ye;if(typeof V=="function")ye=function(){V(be)};else if(typeof MessageChannel<"u"){var ve=new MessageChannel,pe=ve.port2;ve.port1.onmessage=be,ye=function(){pe.postMessage(null)}}else ye=function(){R(be,0)};function Ne(y,q){w=R(function(){y(n.unstable_now())},q)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(y){y.callback=null},n.unstable_forceFrameRate=function(y){0>y||125ne?(y.sortIndex=H,r(_,y),c(g)===null&&y===c(_)&&(K?(ee(w),w=-1):K=!0,Ne(B,H-ne))):(y.sortIndex=S,r(g,y),L||T||(L=!0,X||(X=!0,ye()))),y},n.unstable_shouldYield=xe,n.unstable_wrapCallback=function(y){var q=z;return function(){var H=z;z=q;try{return y.apply(this,arguments)}finally{z=H}}}})(Eu)),Eu}var Wf;function Rb(){return Wf||(Wf=1,Tu.exports=Ob()),Tu.exports}var ep;function Lb(){if(ep)return ar;ep=1;var n=Rb(),r=Ny(),c=by();function d(s){var t="https://react.dev/errors/"+s;if(1S||(s.current=ne[S],ne[S]=null,S--)}function Q(s,t){S++,ne[S]=s.current,s.current=t}var oe=me(null),ge=me(null),le=me(null),O=me(null);function F(s,t){switch(Q(le,t),Q(ge,s),Q(oe,null),t.nodeType){case 9:case 11:s=(s=t.documentElement)&&(s=s.namespaceURI)?xf(s):0;break;default:if(s=t.tagName,t=t.namespaceURI)t=xf(t),s=ff(t,s);else switch(s){case"svg":s=1;break;case"math":s=2;break;default:s=0}}he(oe),Q(oe,s)}function A(){he(oe),he(ge),he(le)}function W(s){s.memoizedState!==null&&Q(O,s);var t=oe.current,a=ff(t,s.type);t!==a&&(Q(ge,s),Q(oe,a))}function _e(s){ge.current===s&&(he(oe),he(ge)),O.current===s&&(he(O),Ii._currentValue=H)}var Me,ss;function Ie(s){if(Me===void 0)try{throw Error()}catch(a){var t=a.stack.trim().match(/\n( *(at )?)/);Me=t&&t[1]||"",ss=-1)":-1i||C[l]!==I[i]){var ae=` -`+C[l].replace(" at new "," at ");return s.displayName&&ae.includes("")&&(ae=ae.replace("",s.displayName)),ae}while(1<=l&&0<=i);break}}}finally{Rs=!1,Error.prepareStackTrace=a}return(a=s?s.displayName||s.name:"")?Ie(a):""}function ie(s,t){switch(s.tag){case 26:case 27:case 5:return Ie(s.type);case 16:return Ie("Lazy");case 13:return s.child!==t&&t!==null?Ie("Suspense Fallback"):Ie("Suspense");case 19:return Ie("SuspenseList");case 0:case 15:return qs(s.type,!1);case 11:return qs(s.type.render,!1);case 1:return qs(s.type,!0);case 31:return Ie("Activity");default:return""}}function we(s){try{var t="",a=null;do t+=ie(s,a),a=s,s=s.return;while(s);return t}catch(l){return` -Error generating stack: `+l.message+` -`+l.stack}}var Ke=Object.prototype.hasOwnProperty,Le=n.unstable_scheduleCallback,st=n.unstable_cancelCallback,Jt=n.unstable_shouldYield,bt=n.unstable_requestPaint,Je=n.unstable_now,Ue=n.unstable_getCurrentPriorityLevel,jt=n.unstable_ImmediatePriority,nt=n.unstable_UserBlockingPriority,Ct=n.unstable_NormalPriority,kt=n.unstable_LowPriority,rl=n.unstable_IdlePriority,cl=n.log,ol=n.unstable_setDisableYieldValue,Se=null,Re=null;function it(s){if(typeof cl=="function"&&ol(s),Re&&typeof Re.setStrictMode=="function")try{Re.setStrictMode(Se,s)}catch{}}var ot=Math.clz32?Math.clz32:dt,di=Math.log,on=Math.LN2;function dt(s){return s>>>=0,s===0?32:31-(di(s)/on|0)|0}var Pt=256,Wt=262144,La=4194304;function Ut(s){var t=s&42;if(t!==0)return t;switch(s&-s){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:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return s&261888;case 262144:case 524288:case 1048576:case 2097152:return s&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return s&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return s}}function Ua(s,t,a){var l=s.pendingLanes;if(l===0)return 0;var i=0,o=s.suspendedLanes,m=s.pingedLanes;s=s.warmLanes;var p=l&134217727;return p!==0?(l=p&~o,l!==0?i=Ut(l):(m&=p,m!==0?i=Ut(m):a||(a=p&~s,a!==0&&(i=Ut(a))))):(p=l&~o,p!==0?i=Ut(p):m!==0?i=Ut(m):a||(a=l&~s,a!==0&&(i=Ut(a)))),i===0?0:t!==0&&t!==i&&(t&o)===0&&(o=i&-i,a=t&-t,o>=a||o===32&&(a&4194048)!==0)?t:i}function ba(s,t){return(s.pendingLanes&~(s.suspendedLanes&~s.pingedLanes)&t)===0}function P(s,t){switch(s){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32: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 t+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 je(){var s=La;return La<<=1,(La&62914560)===0&&(La=4194304),s}function Ae(s){for(var t=[],a=0;31>a;a++)t.push(s);return t}function tt(s,t){s.pendingLanes|=t,t!==268435456&&(s.suspendedLanes=0,s.pingedLanes=0,s.warmLanes=0)}function Bt(s,t,a,l,i,o){var m=s.pendingLanes;s.pendingLanes=a,s.suspendedLanes=0,s.pingedLanes=0,s.warmLanes=0,s.expiredLanes&=a,s.entangledLanes&=a,s.errorRecoveryDisabledLanes&=a,s.shellSuspendCounter=0;var p=s.entanglements,C=s.expirationTimes,I=s.hiddenUpdates;for(a=m&~a;0"u")return null;try{return s.activeElement||s.body}catch{return s.body}}var cj=/[\n"\\]/g;function sa(s){return s.replace(cj,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function go(s,t,a,l,i,o,m,p){s.name="",m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"?s.type=m:s.removeAttribute("type"),t!=null?m==="number"?(t===0&&s.value===""||s.value!=t)&&(s.value=""+ea(t)):s.value!==""+ea(t)&&(s.value=""+ea(t)):m!=="submit"&&m!=="reset"||s.removeAttribute("value"),t!=null?jo(s,m,ea(t)):a!=null?jo(s,m,ea(a)):l!=null&&s.removeAttribute("value"),i==null&&o!=null&&(s.defaultChecked=!!o),i!=null&&(s.checked=i&&typeof i!="function"&&typeof i!="symbol"),p!=null&&typeof p!="function"&&typeof p!="symbol"&&typeof p!="boolean"?s.name=""+ea(p):s.removeAttribute("name")}function rm(s,t,a,l,i,o,m,p){if(o!=null&&typeof o!="function"&&typeof o!="symbol"&&typeof o!="boolean"&&(s.type=o),t!=null||a!=null){if(!(o!=="submit"&&o!=="reset"||t!=null)){po(s);return}a=a!=null?""+ea(a):"",t=t!=null?""+ea(t):a,p||t===s.value||(s.value=t),s.defaultValue=t}l=l??i,l=typeof l!="function"&&typeof l!="symbol"&&!!l,s.checked=p?s.checked:!!l,s.defaultChecked=!!l,m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"&&(s.name=m),po(s)}function jo(s,t,a){t==="number"&&zr(s.ownerDocument)===s||s.defaultValue===""+a||(s.defaultValue=""+a)}function pn(s,t,a,l){if(s=s.options,t){t={};for(var i=0;i"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),wo=!1;if(Ga)try{var xi={};Object.defineProperty(xi,"passive",{get:function(){wo=!0}}),window.addEventListener("test",xi,xi),window.removeEventListener("test",xi,xi)}catch{wo=!1}var ul=null,_o=null,Ar=null;function xm(){if(Ar)return Ar;var s,t=_o,a=t.length,l,i="value"in ul?ul.value:ul.textContent,o=i.length;for(s=0;s=gi),ym=" ",Nm=!1;function bm(s,t){switch(s){case"keyup":return Lj.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function wm(s){return s=s.detail,typeof s=="object"&&"data"in s?s.data:null}var yn=!1;function Bj(s,t){switch(s){case"compositionend":return wm(t);case"keypress":return t.which!==32?null:(Nm=!0,ym);case"textInput":return s=t.data,s===ym&&Nm?null:s;default:return null}}function Hj(s,t){if(yn)return s==="compositionend"||!Eo&&bm(s,t)?(s=xm(),Ar=_o=ul=null,yn=!1,s):null;switch(s){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:a,offset:t-s};s=l}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=Mm(a)}}function Dm(s,t){return s&&t?s===t?!0:s&&s.nodeType===3?!1:t&&t.nodeType===3?Dm(s,t.parentNode):"contains"in s?s.contains(t):s.compareDocumentPosition?!!(s.compareDocumentPosition(t)&16):!1:!1}function Om(s){s=s!=null&&s.ownerDocument!=null&&s.ownerDocument.defaultView!=null?s.ownerDocument.defaultView:window;for(var t=zr(s.document);t instanceof s.HTMLIFrameElement;){try{var a=typeof t.contentWindow.location.href=="string"}catch{a=!1}if(a)s=t.contentWindow;else break;t=zr(s.document)}return t}function Ao(s){var t=s&&s.nodeName&&s.nodeName.toLowerCase();return t&&(t==="input"&&(s.type==="text"||s.type==="search"||s.type==="tel"||s.type==="url"||s.type==="password")||t==="textarea"||s.contentEditable==="true")}var Xj=Ga&&"documentMode"in document&&11>=document.documentMode,Nn=null,Do=null,Ni=null,Oo=!1;function Rm(s,t,a){var l=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;Oo||Nn==null||Nn!==zr(l)||(l=Nn,"selectionStart"in l&&Ao(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),Ni&&yi(Ni,l)||(Ni=l,l=Sc(Do,"onSelect"),0>=m,i-=m,Sa=1<<32-ot(t)+i|a<Pe?(rs=Te,Te=null):rs=Te.sibling;var ys=J(G,Te,Z[Pe],re);if(ys===null){Te===null&&(Te=rs);break}s&&Te&&ys.alternate===null&&t(G,Te),M=o(ys,M,Pe),vs===null?Ee=ys:vs.sibling=ys,vs=ys,Te=rs}if(Pe===Z.length)return a(G,Te),fs&&Fa(G,Pe),Ee;if(Te===null){for(;PePe?(rs=Te,Te=null):rs=Te.sibling;var Dl=J(G,Te,ys.value,re);if(Dl===null){Te===null&&(Te=rs);break}s&&Te&&Dl.alternate===null&&t(G,Te),M=o(Dl,M,Pe),vs===null?Ee=Dl:vs.sibling=Dl,vs=Dl,Te=rs}if(ys.done)return a(G,Te),fs&&Fa(G,Pe),Ee;if(Te===null){for(;!ys.done;Pe++,ys=Z.next())ys=de(G,ys.value,re),ys!==null&&(M=o(ys,M,Pe),vs===null?Ee=ys:vs.sibling=ys,vs=ys);return fs&&Fa(G,Pe),Ee}for(Te=l(Te);!ys.done;Pe++,ys=Z.next())ys=se(Te,G,Pe,ys.value,re),ys!==null&&(s&&ys.alternate!==null&&Te.delete(ys.key===null?Pe:ys.key),M=o(ys,M,Pe),vs===null?Ee=ys:vs.sibling=ys,vs=ys);return s&&Te.forEach(function(hy){return t(G,hy)}),fs&&Fa(G,Pe),Ee}function ks(G,M,Z,re){if(typeof Z=="object"&&Z!==null&&Z.type===K&&Z.key===null&&(Z=Z.props.children),typeof Z=="object"&&Z!==null){switch(Z.$$typeof){case T:e:{for(var Ee=Z.key;M!==null;){if(M.key===Ee){if(Ee=Z.type,Ee===K){if(M.tag===7){a(G,M.sibling),re=i(M,Z.props.children),re.return=G,G=re;break e}}else if(M.elementType===Ee||typeof Ee=="object"&&Ee!==null&&Ee.$$typeof===D&&Il(Ee)===M.type){a(G,M.sibling),re=i(M,Z.props),ki(re,Z),re.return=G,G=re;break e}a(G,M);break}else t(G,M);M=M.sibling}Z.type===K?(re=$l(Z.props.children,G.mode,re,Z.key),re.return=G,G=re):(re=Vr(Z.type,Z.key,Z.props,null,G.mode,re),ki(re,Z),re.return=G,G=re)}return m(G);case L:e:{for(Ee=Z.key;M!==null;){if(M.key===Ee)if(M.tag===4&&M.stateNode.containerInfo===Z.containerInfo&&M.stateNode.implementation===Z.implementation){a(G,M.sibling),re=i(M,Z.children||[]),re.return=G,G=re;break e}else{a(G,M);break}else t(G,M);M=M.sibling}re=Go(Z,G.mode,re),re.return=G,G=re}return m(G);case D:return Z=Il(Z),ks(G,M,Z,re)}if(Ne(Z))return Ce(G,M,Z,re);if(ye(Z)){if(Ee=ye(Z),typeof Ee!="function")throw Error(d(150));return Z=Ee.call(Z),Oe(G,M,Z,re)}if(typeof Z.then=="function")return ks(G,M,Zr(Z),re);if(Z.$$typeof===V)return ks(G,M,$r(G,Z),re);Ir(G,Z)}return typeof Z=="string"&&Z!==""||typeof Z=="number"||typeof Z=="bigint"?(Z=""+Z,M!==null&&M.tag===6?(a(G,M.sibling),re=i(M,Z),re.return=G,G=re):(a(G,M),re=qo(Z,G.mode,re),re.return=G,G=re),m(G)):a(G,M)}return function(G,M,Z,re){try{Ci=0;var Ee=ks(G,M,Z,re);return An=null,Ee}catch(Te){if(Te===Mn||Te===Xr)throw Te;var vs=qt(29,Te,null,G.mode);return vs.lanes=re,vs.return=G,vs}finally{}}}var Pl=lh(!0),nh=lh(!1),pl=!1;function Wo(s){s.updateQueue={baseState:s.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function ed(s,t){s=s.updateQueue,t.updateQueue===s&&(t.updateQueue={baseState:s.baseState,firstBaseUpdate:s.firstBaseUpdate,lastBaseUpdate:s.lastBaseUpdate,shared:s.shared,callbacks:null})}function gl(s){return{lane:s,tag:0,payload:null,callback:null,next:null}}function jl(s,t,a){var l=s.updateQueue;if(l===null)return null;if(l=l.shared,(Ns&2)!==0){var i=l.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),l.pending=t,t=Gr(s),Vm(s,null,a),t}return qr(s,l,t,a),Gr(s)}function Ti(s,t,a){if(t=t.updateQueue,t!==null&&(t=t.shared,(a&4194048)!==0)){var l=t.lanes;l&=s.pendingLanes,a|=l,t.lanes=a,dl(s,a)}}function sd(s,t){var a=s.updateQueue,l=s.alternate;if(l!==null&&(l=l.updateQueue,a===l)){var i=null,o=null;if(a=a.firstBaseUpdate,a!==null){do{var m={lane:a.lane,tag:a.tag,payload:a.payload,callback:null,next:null};o===null?i=o=m:o=o.next=m,a=a.next}while(a!==null);o===null?i=o=t:o=o.next=t}else i=o=t;a={baseState:l.baseState,firstBaseUpdate:i,lastBaseUpdate:o,shared:l.shared,callbacks:l.callbacks},s.updateQueue=a;return}s=a.lastBaseUpdate,s===null?a.firstBaseUpdate=t:s.next=t,a.lastBaseUpdate=t}var td=!1;function Ei(){if(td){var s=zn;if(s!==null)throw s}}function zi(s,t,a,l){td=!1;var i=s.updateQueue;pl=!1;var o=i.firstBaseUpdate,m=i.lastBaseUpdate,p=i.shared.pending;if(p!==null){i.shared.pending=null;var C=p,I=C.next;C.next=null,m===null?o=I:m.next=I,m=C;var ae=s.alternate;ae!==null&&(ae=ae.updateQueue,p=ae.lastBaseUpdate,p!==m&&(p===null?ae.firstBaseUpdate=I:p.next=I,ae.lastBaseUpdate=C))}if(o!==null){var de=i.baseState;m=0,ae=I=C=null,p=o;do{var J=p.lane&-536870913,se=J!==p.lane;if(se?(is&J)===J:(l&J)===J){J!==0&&J===En&&(td=!0),ae!==null&&(ae=ae.next={lane:0,tag:p.tag,payload:p.payload,callback:null,next:null});e:{var Ce=s,Oe=p;J=t;var ks=a;switch(Oe.tag){case 1:if(Ce=Oe.payload,typeof Ce=="function"){de=Ce.call(ks,de,J);break e}de=Ce;break e;case 3:Ce.flags=Ce.flags&-65537|128;case 0:if(Ce=Oe.payload,J=typeof Ce=="function"?Ce.call(ks,de,J):Ce,J==null)break e;de=k({},de,J);break e;case 2:pl=!0}}J=p.callback,J!==null&&(s.flags|=64,se&&(s.flags|=8192),se=i.callbacks,se===null?i.callbacks=[J]:se.push(J))}else se={lane:J,tag:p.tag,payload:p.payload,callback:p.callback,next:null},ae===null?(I=ae=se,C=de):ae=ae.next=se,m|=J;if(p=p.next,p===null){if(p=i.shared.pending,p===null)break;se=p,p=se.next,se.next=null,i.lastBaseUpdate=se,i.shared.pending=null}}while(!0);ae===null&&(C=de),i.baseState=C,i.firstBaseUpdate=I,i.lastBaseUpdate=ae,o===null&&(i.shared.lanes=0),wl|=m,s.lanes=m,s.memoizedState=de}}function ih(s,t){if(typeof s!="function")throw Error(d(191,s));s.call(t)}function rh(s,t){var a=s.callbacks;if(a!==null)for(s.callbacks=null,s=0;so?o:8;var m=y.T,p={};y.T=p,Nd(s,!1,t,a);try{var C=i(),I=y.S;if(I!==null&&I(p,C),C!==null&&typeof C=="object"&&typeof C.then=="function"){var ae=tv(C,l);Di(s,t,ae,$t(s))}else Di(s,t,l,$t(s))}catch(de){Di(s,t,{then:function(){},status:"rejected",reason:de},$t())}finally{q.p=o,m!==null&&p.types!==null&&(m.types=p.types),y.T=m}}function cv(){}function vd(s,t,a,l){if(s.tag!==5)throw Error(d(476));var i=Hh(s).queue;Bh(s,i,t,H,a===null?cv:function(){return qh(s),a(l)})}function Hh(s){var t=s.memoizedState;if(t!==null)return t;t={memoizedState:H,baseState:H,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Xa,lastRenderedState:H},next:null};var a={};return t.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Xa,lastRenderedState:a},next:null},s.memoizedState=t,s=s.alternate,s!==null&&(s.memoizedState=t),t}function qh(s){var t=Hh(s);t.next===null&&(t=s.alternate.memoizedState),Di(s,t.next.queue,{},$t())}function yd(){return mt(Ii)}function Gh(){return Ks().memoizedState}function Vh(){return Ks().memoizedState}function ov(s){for(var t=s.return;t!==null;){switch(t.tag){case 24:case 3:var a=$t();s=gl(a);var l=jl(t,s,a);l!==null&&(Ot(l,t,a),Ti(l,t,a)),t={cache:Zo()},s.payload=t;return}t=t.return}}function dv(s,t,a){var l=$t();a={lane:l,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},ic(s)?Qh(t,a):(a=Bo(s,t,a,l),a!==null&&(Ot(a,s,l),$h(a,t,l)))}function Fh(s,t,a){var l=$t();Di(s,t,a,l)}function Di(s,t,a,l){var i={lane:l,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(ic(s))Qh(t,i);else{var o=s.alternate;if(s.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var m=t.lastRenderedState,p=o(m,a);if(i.hasEagerState=!0,i.eagerState=p,Ht(p,m))return qr(s,t,i,0),Ts===null&&Hr(),!1}catch{}finally{}if(a=Bo(s,t,i,l),a!==null)return Ot(a,s,l),$h(a,t,l),!0}return!1}function Nd(s,t,a,l){if(l={lane:2,revertLane:Wd(),gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},ic(s)){if(t)throw Error(d(479))}else t=Bo(s,a,l,2),t!==null&&Ot(t,s,2)}function ic(s){var t=s.alternate;return s===Ze||t!==null&&t===Ze}function Qh(s,t){On=Wr=!0;var a=s.pending;a===null?t.next=t:(t.next=a.next,a.next=t),s.pending=t}function $h(s,t,a){if((a&4194048)!==0){var l=t.lanes;l&=s.pendingLanes,a|=l,t.lanes=a,dl(s,a)}}var Oi={readContext:mt,use:tc,useCallback:Gs,useContext:Gs,useEffect:Gs,useImperativeHandle:Gs,useLayoutEffect:Gs,useInsertionEffect:Gs,useMemo:Gs,useReducer:Gs,useRef:Gs,useState:Gs,useDebugValue:Gs,useDeferredValue:Gs,useTransition:Gs,useSyncExternalStore:Gs,useId:Gs,useHostTransitionStatus:Gs,useFormState:Gs,useActionState:Gs,useOptimistic:Gs,useMemoCache:Gs,useCacheRefresh:Gs};Oi.useEffectEvent=Gs;var Yh={readContext:mt,use:tc,useCallback:function(s,t){return wt().memoizedState=[s,t===void 0?null:t],s},useContext:mt,useEffect:Eh,useImperativeHandle:function(s,t,a){a=a!=null?a.concat([s]):null,lc(4194308,4,Dh.bind(null,t,s),a)},useLayoutEffect:function(s,t){return lc(4194308,4,s,t)},useInsertionEffect:function(s,t){lc(4,2,s,t)},useMemo:function(s,t){var a=wt();t=t===void 0?null:t;var l=s();if(Wl){it(!0);try{s()}finally{it(!1)}}return a.memoizedState=[l,t],l},useReducer:function(s,t,a){var l=wt();if(a!==void 0){var i=a(t);if(Wl){it(!0);try{a(t)}finally{it(!1)}}}else i=t;return l.memoizedState=l.baseState=i,s={pending:null,lanes:0,dispatch:null,lastRenderedReducer:s,lastRenderedState:i},l.queue=s,s=s.dispatch=dv.bind(null,Ze,s),[l.memoizedState,s]},useRef:function(s){var t=wt();return s={current:s},t.memoizedState=s},useState:function(s){s=xd(s);var t=s.queue,a=Fh.bind(null,Ze,t);return t.dispatch=a,[s.memoizedState,a]},useDebugValue:gd,useDeferredValue:function(s,t){var a=wt();return jd(a,s,t)},useTransition:function(){var s=xd(!1);return s=Bh.bind(null,Ze,s.queue,!0,!1),wt().memoizedState=s,[!1,s]},useSyncExternalStore:function(s,t,a){var l=Ze,i=wt();if(fs){if(a===void 0)throw Error(d(407));a=a()}else{if(a=t(),Ts===null)throw Error(d(349));(is&127)!==0||hh(l,t,a)}i.memoizedState=a;var o={value:a,getSnapshot:t};return i.queue=o,Eh(fh.bind(null,l,o,s),[s]),l.flags|=2048,Ln(9,{destroy:void 0},xh.bind(null,l,o,a,t),null),a},useId:function(){var s=wt(),t=Ts.identifierPrefix;if(fs){var a=Ca,l=Sa;a=(l&~(1<<32-ot(l)-1)).toString(32)+a,t="_"+t+"R_"+a,a=ec++,0<\/script>",o=o.removeChild(o.firstChild);break;case"select":o=typeof l.is=="string"?m.createElement("select",{is:l.is}):m.createElement("select"),l.multiple?o.multiple=!0:l.size&&(o.size=l.size);break;default:o=typeof l.is=="string"?m.createElement(i,{is:l.is}):m.createElement(i)}}o[Fe]=t,o[Ys]=l;e:for(m=t.child;m!==null;){if(m.tag===5||m.tag===6)o.appendChild(m.stateNode);else if(m.tag!==4&&m.tag!==27&&m.child!==null){m.child.return=m,m=m.child;continue}if(m===t)break e;for(;m.sibling===null;){if(m.return===null||m.return===t)break e;m=m.return}m.sibling.return=m.return,m=m.sibling}t.stateNode=o;e:switch(xt(o,i,l),i){case"button":case"input":case"select":case"textarea":l=!!l.autoFocus;break e;case"img":l=!0;break e;default:l=!1}l&&Za(t)}}return Ds(t),Rd(t,t.type,s===null?null:s.memoizedProps,t.pendingProps,a),null;case 6:if(s&&t.stateNode!=null)s.memoizedProps!==l&&Za(t);else{if(typeof l!="string"&&t.stateNode===null)throw Error(d(166));if(s=le.current,kn(t)){if(s=t.stateNode,a=t.memoizedProps,l=null,i=ut,i!==null)switch(i.tag){case 27:case 5:l=i.memoizedProps}s[Fe]=t,s=!!(s.nodeValue===a||l!==null&&l.suppressHydrationWarning===!0||mf(s.nodeValue,a)),s||xl(t,!0)}else s=Cc(s).createTextNode(l),s[Fe]=t,t.stateNode=s}return Ds(t),null;case 31:if(a=t.memoizedState,s===null||s.memoizedState!==null){if(l=kn(t),a!==null){if(s===null){if(!l)throw Error(d(318));if(s=t.memoizedState,s=s!==null?s.dehydrated:null,!s)throw Error(d(557));s[Fe]=t}else Yl(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Ds(t),s=!1}else a=$o(),s!==null&&s.memoizedState!==null&&(s.memoizedState.hydrationErrors=a),s=!0;if(!s)return t.flags&256?(Vt(t),t):(Vt(t),null);if((t.flags&128)!==0)throw Error(d(558))}return Ds(t),null;case 13:if(l=t.memoizedState,s===null||s.memoizedState!==null&&s.memoizedState.dehydrated!==null){if(i=kn(t),l!==null&&l.dehydrated!==null){if(s===null){if(!i)throw Error(d(318));if(i=t.memoizedState,i=i!==null?i.dehydrated:null,!i)throw Error(d(317));i[Fe]=t}else Yl(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Ds(t),i=!1}else i=$o(),s!==null&&s.memoizedState!==null&&(s.memoizedState.hydrationErrors=i),i=!0;if(!i)return t.flags&256?(Vt(t),t):(Vt(t),null)}return Vt(t),(t.flags&128)!==0?(t.lanes=a,t):(a=l!==null,s=s!==null&&s.memoizedState!==null,a&&(l=t.child,i=null,l.alternate!==null&&l.alternate.memoizedState!==null&&l.alternate.memoizedState.cachePool!==null&&(i=l.alternate.memoizedState.cachePool.pool),o=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(o=l.memoizedState.cachePool.pool),o!==i&&(l.flags|=2048)),a!==s&&a&&(t.child.flags|=8192),uc(t,t.updateQueue),Ds(t),null);case 4:return A(),s===null&&au(t.stateNode.containerInfo),Ds(t),null;case 10:return $a(t.type),Ds(t),null;case 19:if(he(Xs),l=t.memoizedState,l===null)return Ds(t),null;if(i=(t.flags&128)!==0,o=l.rendering,o===null)if(i)Li(l,!1);else{if(Vs!==0||s!==null&&(s.flags&128)!==0)for(s=t.child;s!==null;){if(o=Pr(s),o!==null){for(t.flags|=128,Li(l,!1),s=o.updateQueue,t.updateQueue=s,uc(t,s),t.subtreeFlags=0,s=a,a=t.child;a!==null;)Fm(a,s),a=a.sibling;return Q(Xs,Xs.current&1|2),fs&&Fa(t,l.treeForkCount),t.child}s=s.sibling}l.tail!==null&&Je()>pc&&(t.flags|=128,i=!0,Li(l,!1),t.lanes=4194304)}else{if(!i)if(s=Pr(o),s!==null){if(t.flags|=128,i=!0,s=s.updateQueue,t.updateQueue=s,uc(t,s),Li(l,!0),l.tail===null&&l.tailMode==="hidden"&&!o.alternate&&!fs)return Ds(t),null}else 2*Je()-l.renderingStartTime>pc&&a!==536870912&&(t.flags|=128,i=!0,Li(l,!1),t.lanes=4194304);l.isBackwards?(o.sibling=t.child,t.child=o):(s=l.last,s!==null?s.sibling=o:t.child=o,l.last=o)}return l.tail!==null?(s=l.tail,l.rendering=s,l.tail=s.sibling,l.renderingStartTime=Je(),s.sibling=null,a=Xs.current,Q(Xs,i?a&1|2:a&1),fs&&Fa(t,l.treeForkCount),s):(Ds(t),null);case 22:case 23:return Vt(t),ld(),l=t.memoizedState!==null,s!==null?s.memoizedState!==null!==l&&(t.flags|=8192):l&&(t.flags|=8192),l?(a&536870912)!==0&&(t.flags&128)===0&&(Ds(t),t.subtreeFlags&6&&(t.flags|=8192)):Ds(t),a=t.updateQueue,a!==null&&uc(t,a.retryQueue),a=null,s!==null&&s.memoizedState!==null&&s.memoizedState.cachePool!==null&&(a=s.memoizedState.cachePool.pool),l=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(l=t.memoizedState.cachePool.pool),l!==a&&(t.flags|=2048),s!==null&&he(Zl),null;case 24:return a=null,s!==null&&(a=s.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),$a(Js),Ds(t),null;case 25:return null;case 30:return null}throw Error(d(156,t.tag))}function fv(s,t){switch(Fo(t),t.tag){case 1:return s=t.flags,s&65536?(t.flags=s&-65537|128,t):null;case 3:return $a(Js),A(),s=t.flags,(s&65536)!==0&&(s&128)===0?(t.flags=s&-65537|128,t):null;case 26:case 27:case 5:return _e(t),null;case 31:if(t.memoizedState!==null){if(Vt(t),t.alternate===null)throw Error(d(340));Yl()}return s=t.flags,s&65536?(t.flags=s&-65537|128,t):null;case 13:if(Vt(t),s=t.memoizedState,s!==null&&s.dehydrated!==null){if(t.alternate===null)throw Error(d(340));Yl()}return s=t.flags,s&65536?(t.flags=s&-65537|128,t):null;case 19:return he(Xs),null;case 4:return A(),null;case 10:return $a(t.type),null;case 22:case 23:return Vt(t),ld(),s!==null&&he(Zl),s=t.flags,s&65536?(t.flags=s&-65537|128,t):null;case 24:return $a(Js),null;case 25:return null;default:return null}}function px(s,t){switch(Fo(t),t.tag){case 3:$a(Js),A();break;case 26:case 27:case 5:_e(t);break;case 4:A();break;case 31:t.memoizedState!==null&&Vt(t);break;case 13:Vt(t);break;case 19:he(Xs);break;case 10:$a(t.type);break;case 22:case 23:Vt(t),ld(),s!==null&&he(Zl);break;case 24:$a(Js)}}function Ui(s,t){try{var a=t.updateQueue,l=a!==null?a.lastEffect:null;if(l!==null){var i=l.next;a=i;do{if((a.tag&s)===s){l=void 0;var o=a.create,m=a.inst;l=o(),m.destroy=l}a=a.next}while(a!==i)}}catch(p){_s(t,t.return,p)}}function Nl(s,t,a){try{var l=t.updateQueue,i=l!==null?l.lastEffect:null;if(i!==null){var o=i.next;l=o;do{if((l.tag&s)===s){var m=l.inst,p=m.destroy;if(p!==void 0){m.destroy=void 0,i=t;var C=a,I=p;try{I()}catch(ae){_s(i,C,ae)}}}l=l.next}while(l!==o)}}catch(ae){_s(t,t.return,ae)}}function gx(s){var t=s.updateQueue;if(t!==null){var a=s.stateNode;try{rh(t,a)}catch(l){_s(s,s.return,l)}}}function jx(s,t,a){a.props=en(s.type,s.memoizedProps),a.state=s.memoizedState;try{a.componentWillUnmount()}catch(l){_s(s,t,l)}}function Bi(s,t){try{var a=s.ref;if(a!==null){switch(s.tag){case 26:case 27:case 5:var l=s.stateNode;break;case 30:l=s.stateNode;break;default:l=s.stateNode}typeof a=="function"?s.refCleanup=a(l):a.current=l}}catch(i){_s(s,t,i)}}function ka(s,t){var a=s.ref,l=s.refCleanup;if(a!==null)if(typeof l=="function")try{l()}catch(i){_s(s,t,i)}finally{s.refCleanup=null,s=s.alternate,s!=null&&(s.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(i){_s(s,t,i)}else a.current=null}function vx(s){var t=s.type,a=s.memoizedProps,l=s.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":a.autoFocus&&l.focus();break e;case"img":a.src?l.src=a.src:a.srcSet&&(l.srcset=a.srcSet)}}catch(i){_s(s,s.return,i)}}function Ld(s,t,a){try{var l=s.stateNode;Uv(l,s.type,a,t),l[Ys]=t}catch(i){_s(s,s.return,i)}}function yx(s){return s.tag===5||s.tag===3||s.tag===26||s.tag===27&&Tl(s.type)||s.tag===4}function Ud(s){e:for(;;){for(;s.sibling===null;){if(s.return===null||yx(s.return))return null;s=s.return}for(s.sibling.return=s.return,s=s.sibling;s.tag!==5&&s.tag!==6&&s.tag!==18;){if(s.tag===27&&Tl(s.type)||s.flags&2||s.child===null||s.tag===4)continue e;s.child.return=s,s=s.child}if(!(s.flags&2))return s.stateNode}}function Bd(s,t,a){var l=s.tag;if(l===5||l===6)s=s.stateNode,t?(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a).insertBefore(s,t):(t=a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,t.appendChild(s),a=a._reactRootContainer,a!=null||t.onclick!==null||(t.onclick=qa));else if(l!==4&&(l===27&&Tl(s.type)&&(a=s.stateNode,t=null),s=s.child,s!==null))for(Bd(s,t,a),s=s.sibling;s!==null;)Bd(s,t,a),s=s.sibling}function mc(s,t,a){var l=s.tag;if(l===5||l===6)s=s.stateNode,t?a.insertBefore(s,t):a.appendChild(s);else if(l!==4&&(l===27&&Tl(s.type)&&(a=s.stateNode),s=s.child,s!==null))for(mc(s,t,a),s=s.sibling;s!==null;)mc(s,t,a),s=s.sibling}function Nx(s){var t=s.stateNode,a=s.memoizedProps;try{for(var l=s.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);xt(t,l,a),t[Fe]=s,t[Ys]=a}catch(o){_s(s,s.return,o)}}var Ia=!1,et=!1,Hd=!1,bx=typeof WeakSet=="function"?WeakSet:Set,ct=null;function pv(s,t){if(s=s.containerInfo,iu=Dc,s=Om(s),Ao(s)){if("selectionStart"in s)var a={start:s.selectionStart,end:s.selectionEnd};else e:{a=(a=s.ownerDocument)&&a.defaultView||window;var l=a.getSelection&&a.getSelection();if(l&&l.rangeCount!==0){a=l.anchorNode;var i=l.anchorOffset,o=l.focusNode;l=l.focusOffset;try{a.nodeType,o.nodeType}catch{a=null;break e}var m=0,p=-1,C=-1,I=0,ae=0,de=s,J=null;s:for(;;){for(var se;de!==a||i!==0&&de.nodeType!==3||(p=m+i),de!==o||l!==0&&de.nodeType!==3||(C=m+l),de.nodeType===3&&(m+=de.nodeValue.length),(se=de.firstChild)!==null;)J=de,de=se;for(;;){if(de===s)break s;if(J===a&&++I===i&&(p=m),J===o&&++ae===l&&(C=m),(se=de.nextSibling)!==null)break;de=J,J=de.parentNode}de=se}a=p===-1||C===-1?null:{start:p,end:C}}else a=null}a=a||{start:0,end:0}}else a=null;for(ru={focusedElem:s,selectionRange:a},Dc=!1,ct=t;ct!==null;)if(t=ct,s=t.child,(t.subtreeFlags&1028)!==0&&s!==null)s.return=t,ct=s;else for(;ct!==null;){switch(t=ct,o=t.alternate,s=t.flags,t.tag){case 0:if((s&4)!==0&&(s=t.updateQueue,s=s!==null?s.events:null,s!==null))for(a=0;a title"))),xt(o,l,a),o[Fe]=s,rt(o),l=o;break e;case"link":var m=Ef("link","href",i).get(l+(a.href||""));if(m){for(var p=0;pks&&(m=ks,ks=Oe,Oe=m);var G=Am(p,Oe),M=Am(p,ks);if(G&&M&&(se.rangeCount!==1||se.anchorNode!==G.node||se.anchorOffset!==G.offset||se.focusNode!==M.node||se.focusOffset!==M.offset)){var Z=de.createRange();Z.setStart(G.node,G.offset),se.removeAllRanges(),Oe>ks?(se.addRange(Z),se.extend(M.node,M.offset)):(Z.setEnd(M.node,M.offset),se.addRange(Z))}}}}for(de=[],se=p;se=se.parentNode;)se.nodeType===1&&de.push({element:se,left:se.scrollLeft,top:se.scrollTop});for(typeof p.focus=="function"&&p.focus(),p=0;pa?32:a,y.T=null,a=Yd,Yd=null;var o=Sl,m=sl;if(at=0,Gn=Sl=null,sl=0,(Ns&6)!==0)throw Error(d(331));var p=Ns;if(Ns|=4,Dx(o.current),zx(o,o.current,m,a),Ns=p,Qi(0,!1),Re&&typeof Re.onPostCommitFiberRoot=="function")try{Re.onPostCommitFiberRoot(Se,o)}catch{}return!0}finally{q.p=i,y.T=l,Jx(s,t)}}function Wx(s,t,a){t=aa(a,t),t=Sd(s.stateNode,t,2),s=jl(s,t,2),s!==null&&(tt(s,2),Ta(s))}function _s(s,t,a){if(s.tag===3)Wx(s,s,a);else for(;t!==null;){if(t.tag===3){Wx(t,s,a);break}else if(t.tag===1){var l=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof l.componentDidCatch=="function"&&(_l===null||!_l.has(l))){s=aa(a,s),a=ex(2),l=jl(t,a,2),l!==null&&(sx(a,l,t,s),tt(l,2),Ta(l));break}}t=t.return}}function Id(s,t,a){var l=s.pingCache;if(l===null){l=s.pingCache=new vv;var i=new Set;l.set(t,i)}else i=l.get(t),i===void 0&&(i=new Set,l.set(t,i));i.has(a)||(Vd=!0,i.add(a),s=_v.bind(null,s,t,a),t.then(s,s))}function _v(s,t,a){var l=s.pingCache;l!==null&&l.delete(t),s.pingedLanes|=s.suspendedLanes&a,s.warmLanes&=~a,Ts===s&&(is&a)===a&&(Vs===4||Vs===3&&(is&62914560)===is&&300>Je()-fc?(Ns&2)===0&&Vn(s,0):Fd|=a,qn===is&&(qn=0)),Ta(s)}function ef(s,t){t===0&&(t=je()),s=Ql(s,t),s!==null&&(tt(s,t),Ta(s))}function Sv(s){var t=s.memoizedState,a=0;t!==null&&(a=t.retryLane),ef(s,a)}function Cv(s,t){var a=0;switch(s.tag){case 31:case 13:var l=s.stateNode,i=s.memoizedState;i!==null&&(a=i.retryLane);break;case 19:l=s.stateNode;break;case 22:l=s.stateNode._retryCache;break;default:throw Error(d(314))}l!==null&&l.delete(t),ef(s,a)}function kv(s,t){return Le(s,t)}var bc=null,Qn=null,Jd=!1,wc=!1,Pd=!1,kl=0;function Ta(s){s!==Qn&&s.next===null&&(Qn===null?bc=Qn=s:Qn=Qn.next=s),wc=!0,Jd||(Jd=!0,Ev())}function Qi(s,t){if(!Pd&&wc){Pd=!0;do for(var a=!1,l=bc;l!==null;){if(s!==0){var i=l.pendingLanes;if(i===0)var o=0;else{var m=l.suspendedLanes,p=l.pingedLanes;o=(1<<31-ot(42|s)+1)-1,o&=i&~(m&~p),o=o&201326741?o&201326741|1:o?o|2:0}o!==0&&(a=!0,lf(l,o))}else o=is,o=Ua(l,l===Ts?o:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),(o&3)===0||ba(l,o)||(a=!0,lf(l,o));l=l.next}while(a);Pd=!1}}function Tv(){sf()}function sf(){wc=Jd=!1;var s=0;kl!==0&&Hv()&&(s=kl);for(var t=Je(),a=null,l=bc;l!==null;){var i=l.next,o=tf(l,t);o===0?(l.next=null,a===null?bc=i:a.next=i,i===null&&(Qn=a)):(a=l,(s!==0||(o&3)!==0)&&(wc=!0)),l=i}at!==0&&at!==5||Qi(s),kl!==0&&(kl=0)}function tf(s,t){for(var a=s.suspendedLanes,l=s.pingedLanes,i=s.expirationTimes,o=s.pendingLanes&-62914561;0p)break;var ae=C.transferSize,de=C.initiatorType;ae&&hf(de)&&(C=C.responseEnd,m+=ae*(C"u"?null:document;function Sf(s,t,a){var l=$n;if(l&&typeof t=="string"&&t){var i=sa(t);i='link[rel="'+s+'"][href="'+i+'"]',typeof a=="string"&&(i+='[crossorigin="'+a+'"]'),_f.has(i)||(_f.add(i),s={rel:s,crossOrigin:a,href:t},l.querySelector(i)===null&&(t=l.createElement("link"),xt(t,"link",s),rt(t),l.head.appendChild(t)))}}function Kv(s){tl.D(s),Sf("dns-prefetch",s,null)}function Zv(s,t){tl.C(s,t),Sf("preconnect",s,t)}function Iv(s,t,a){tl.L(s,t,a);var l=$n;if(l&&s&&t){var i='link[rel="preload"][as="'+sa(t)+'"]';t==="image"&&a&&a.imageSrcSet?(i+='[imagesrcset="'+sa(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(i+='[imagesizes="'+sa(a.imageSizes)+'"]')):i+='[href="'+sa(s)+'"]';var o=i;switch(t){case"style":o=Yn(s);break;case"script":o=Xn(s)}oa.has(o)||(s=k({rel:"preload",href:t==="image"&&a&&a.imageSrcSet?void 0:s,as:t},a),oa.set(o,s),l.querySelector(i)!==null||t==="style"&&l.querySelector(Ki(o))||t==="script"&&l.querySelector(Zi(o))||(t=l.createElement("link"),xt(t,"link",s),rt(t),l.head.appendChild(t)))}}function Jv(s,t){tl.m(s,t);var a=$n;if(a&&s){var l=t&&typeof t.as=="string"?t.as:"script",i='link[rel="modulepreload"][as="'+sa(l)+'"][href="'+sa(s)+'"]',o=i;switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":o=Xn(s)}if(!oa.has(o)&&(s=k({rel:"modulepreload",href:s},t),oa.set(o,s),a.querySelector(i)===null)){switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(Zi(o)))return}l=a.createElement("link"),xt(l,"link",s),rt(l),a.head.appendChild(l)}}}function Pv(s,t,a){tl.S(s,t,a);var l=$n;if(l&&s){var i=xn(l).hoistableStyles,o=Yn(s);t=t||"default";var m=i.get(o);if(!m){var p={loading:0,preload:null};if(m=l.querySelector(Ki(o)))p.loading=5;else{s=k({rel:"stylesheet",href:s,"data-precedence":t},a),(a=oa.get(o))&&xu(s,a);var C=m=l.createElement("link");rt(C),xt(C,"link",s),C._p=new Promise(function(I,ae){C.onload=I,C.onerror=ae}),C.addEventListener("load",function(){p.loading|=1}),C.addEventListener("error",function(){p.loading|=2}),p.loading|=4,Tc(m,t,l)}m={type:"stylesheet",instance:m,count:1,state:p},i.set(o,m)}}}function Wv(s,t){tl.X(s,t);var a=$n;if(a&&s){var l=xn(a).hoistableScripts,i=Xn(s),o=l.get(i);o||(o=a.querySelector(Zi(i)),o||(s=k({src:s,async:!0},t),(t=oa.get(i))&&fu(s,t),o=a.createElement("script"),rt(o),xt(o,"link",s),a.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},l.set(i,o))}}function ey(s,t){tl.M(s,t);var a=$n;if(a&&s){var l=xn(a).hoistableScripts,i=Xn(s),o=l.get(i);o||(o=a.querySelector(Zi(i)),o||(s=k({src:s,async:!0,type:"module"},t),(t=oa.get(i))&&fu(s,t),o=a.createElement("script"),rt(o),xt(o,"link",s),a.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},l.set(i,o))}}function Cf(s,t,a,l){var i=(i=le.current)?kc(i):null;if(!i)throw Error(d(446));switch(s){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(t=Yn(a.href),a=xn(i).hoistableStyles,l=a.get(t),l||(l={type:"style",instance:null,count:0,state:null},a.set(t,l)),l):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){s=Yn(a.href);var o=xn(i).hoistableStyles,m=o.get(s);if(m||(i=i.ownerDocument||i,m={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},o.set(s,m),(o=i.querySelector(Ki(s)))&&!o._p&&(m.instance=o,m.state.loading=5),oa.has(s)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},oa.set(s,a),o||sy(i,s,a,m.state))),t&&l===null)throw Error(d(528,""));return m}if(t&&l!==null)throw Error(d(529,""));return null;case"script":return t=a.async,a=a.src,typeof a=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=Xn(a),a=xn(i).hoistableScripts,l=a.get(t),l||(l={type:"script",instance:null,count:0,state:null},a.set(t,l)),l):{type:"void",instance:null,count:0,state:null};default:throw Error(d(444,s))}}function Yn(s){return'href="'+sa(s)+'"'}function Ki(s){return'link[rel="stylesheet"]['+s+"]"}function kf(s){return k({},s,{"data-precedence":s.precedence,precedence:null})}function sy(s,t,a,l){s.querySelector('link[rel="preload"][as="style"]['+t+"]")?l.loading=1:(t=s.createElement("link"),l.preload=t,t.addEventListener("load",function(){return l.loading|=1}),t.addEventListener("error",function(){return l.loading|=2}),xt(t,"link",a),rt(t),s.head.appendChild(t))}function Xn(s){return'[src="'+sa(s)+'"]'}function Zi(s){return"script[async]"+s}function Tf(s,t,a){if(t.count++,t.instance===null)switch(t.type){case"style":var l=s.querySelector('style[data-href~="'+sa(a.href)+'"]');if(l)return t.instance=l,rt(l),l;var i=k({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return l=(s.ownerDocument||s).createElement("style"),rt(l),xt(l,"style",i),Tc(l,a.precedence,s),t.instance=l;case"stylesheet":i=Yn(a.href);var o=s.querySelector(Ki(i));if(o)return t.state.loading|=4,t.instance=o,rt(o),o;l=kf(a),(i=oa.get(i))&&xu(l,i),o=(s.ownerDocument||s).createElement("link"),rt(o);var m=o;return m._p=new Promise(function(p,C){m.onload=p,m.onerror=C}),xt(o,"link",l),t.state.loading|=4,Tc(o,a.precedence,s),t.instance=o;case"script":return o=Xn(a.src),(i=s.querySelector(Zi(o)))?(t.instance=i,rt(i),i):(l=a,(i=oa.get(o))&&(l=k({},a),fu(l,i)),s=s.ownerDocument||s,i=s.createElement("script"),rt(i),xt(i,"link",l),s.head.appendChild(i),t.instance=i);case"void":return null;default:throw Error(d(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(l=t.instance,t.state.loading|=4,Tc(l,a.precedence,s));return t.instance}function Tc(s,t,a){for(var l=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),i=l.length?l[l.length-1]:null,o=i,m=0;m title"):null)}function ty(s,t,a){if(a===1||t.itemProp!=null)return!1;switch(s){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return s=t.disabled,typeof t.precedence=="string"&&s==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Mf(s){return!(s.type==="stylesheet"&&(s.state.loading&3)===0)}function ay(s,t,a,l){if(a.type==="stylesheet"&&(typeof l.media!="string"||matchMedia(l.media).matches!==!1)&&(a.state.loading&4)===0){if(a.instance===null){var i=Yn(l.href),o=t.querySelector(Ki(i));if(o){t=o._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(s.count++,s=zc.bind(s),t.then(s,s)),a.state.loading|=4,a.instance=o,rt(o);return}o=t.ownerDocument||t,l=kf(l),(i=oa.get(i))&&xu(l,i),o=o.createElement("link"),rt(o);var m=o;m._p=new Promise(function(p,C){m.onload=p,m.onerror=C}),xt(o,"link",l),a.instance=o}s.stylesheets===null&&(s.stylesheets=new Map),s.stylesheets.set(a,t),(t=a.state.preload)&&(a.state.loading&3)===0&&(s.count++,a=zc.bind(s),t.addEventListener("load",a),t.addEventListener("error",a))}}var pu=0;function ly(s,t){return s.stylesheets&&s.count===0&&Ac(s,s.stylesheets),0pu?50:800)+t);return s.unsuspend=a,function(){s.unsuspend=null,clearTimeout(l),clearTimeout(i)}}:null}function zc(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Ac(this,this.stylesheets);else if(this.unsuspend){var s=this.unsuspend;this.unsuspend=null,s()}}}var Mc=null;function Ac(s,t){s.stylesheets=null,s.unsuspend!==null&&(s.count++,Mc=new Map,t.forEach(ny,s),Mc=null,zc.call(s))}function ny(s,t){if(!(t.state.loading&4)){var a=Mc.get(s);if(a)var l=a.get(null);else{a=new Map,Mc.set(s,a);for(var i=s.querySelectorAll("link[data-precedence],style[data-precedence]"),o=0;o"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(r){console.error(r)}}return n(),ku.exports=Lb(),ku.exports}var Bb=Ub();function $(...n){return _y(Sy(n))}const Be=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:$("rounded-xl border bg-card text-card-foreground shadow",n),...r}));Be.displayName="Card";const gs=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:$("flex flex-col space-y-1.5 p-6",n),...r}));gs.displayName="CardHeader";const js=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:$("font-semibold leading-none tracking-tight",n),...r}));js.displayName="CardTitle";const Zs=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:$("text-sm text-muted-foreground",n),...r}));Zs.displayName="CardDescription";const bs=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:$("p-6 pt-0",n),...r}));bs.displayName="CardContent";const wg=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:$("flex items-center p-6 pt-0",n),...r}));wg.displayName="CardFooter";const Kt=Ty,Rt=u.forwardRef(({className:n,...r},c)=>e.jsx(yp,{ref:c,className:$("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",n),...r}));Rt.displayName=yp.displayName;const He=u.forwardRef(({className:n,...r},c)=>e.jsx(Np,{ref:c,className:$("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all duration-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",n),...r}));He.displayName=Np.displayName;const We=u.forwardRef(({className:n,...r},c)=>e.jsx(bp,{ref:c,className:$("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[state=active]:animate-in data-[state=active]:fade-in data-[state=active]:duration-300",n),...r}));We.displayName=bp.displayName;const es=u.forwardRef(({className:n,children:r,viewportRef:c,...d},h)=>e.jsxs(wp,{ref:h,className:$("relative overflow-hidden",n),...d,children:[e.jsx(Ey,{ref:c,className:"h-full w-full rounded-[inherit]",children:r}),e.jsx(Bu,{}),e.jsx(Bu,{orientation:"horizontal"}),e.jsx(zy,{})]}));es.displayName=wp.displayName;const Bu=u.forwardRef(({className:n,orientation:r="vertical",...c},d)=>e.jsx(_p,{ref:d,orientation:r,className:$("flex touch-none select-none transition-colors",r==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",r==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",n),...c,children:e.jsx(My,{className:"relative flex-1 rounded-full bg-border"})}));Bu.displayName=_p.displayName;function Hb({className:n,...r}){return e.jsx("div",{className:$("animate-pulse rounded-md bg-primary/10",n),...r})}const Sr=u.forwardRef(({className:n,value:r,...c},d)=>e.jsx(Sp,{ref:d,className:$("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",n),...c,children:e.jsx(Ay,{className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(r||0)}%)`}})}));Sr.displayName=Sp.displayName;const qb={light:"",dark:".dark"},_g=u.createContext(null);function Sg(){const n=u.useContext(_g);if(!n)throw new Error("useChart must be used within a ");return n}const Zn=u.forwardRef(({id:n,className:r,children:c,config:d,...h},x)=>{const f=u.useId(),j=`chart-${n||f.replace(/:/g,"")}`;return e.jsx(_g.Provider,{value:{config:d},children:e.jsxs("div",{"data-chart":j,ref:x,className:$("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",r),...h,children:[e.jsx(Gb,{id:j,config:d}),e.jsx(Iy,{children:c})]})})});Zn.displayName="Chart";const Gb=({id:n,config:r})=>{const c=Object.entries(r).filter(([,d])=>d.theme||d.color);return c.length?e.jsx("style",{dangerouslySetInnerHTML:{__html:Object.entries(qb).map(([d,h])=>` -${h} [data-chart=${n}] { -${c.map(([x,f])=>{const j=f.theme?.[d]||f.color;return j?` --color-${x}: ${j};`:null}).join(` -`)} -} -`).join(` -`)}}):null},lr=Jy,In=u.forwardRef(({active:n,payload:r,className:c,indicator:d="dot",hideLabel:h=!1,hideIndicator:x=!1,label:f,labelFormatter:j,labelClassName:g,formatter:_,color:v,nameKey:k,labelKey:z},T)=>{const{config:L}=Sg(),K=u.useMemo(()=>{if(h||!r?.length)return null;const[R]=r,ee=`${z||R?.dataKey||R?.name||"value"}`,V=Hu(L,R,ee),E=!z&&typeof f=="string"?L[f]?.label||f:V?.label;return j?e.jsx("div",{className:$("font-medium",g),children:j(E,r)}):E?e.jsx("div",{className:$("font-medium",g),children:E}):null},[f,j,r,h,g,L,z]);if(!n||!r?.length)return null;const U=r.length===1&&d!=="dot";return e.jsxs("div",{ref:T,className:$("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",c),children:[U?null:K,e.jsx("div",{className:"grid gap-1.5",children:r.filter(R=>R.type!=="none").map((R,ee)=>{const V=`${k||R.name||R.dataKey||"value"}`,E=Hu(L,R,V),B=v||R.payload.fill||R.color;return e.jsx("div",{className:$("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",d==="dot"&&"items-center"),children:_&&R?.value!==void 0&&R.name?_(R.value,R.name,R,ee,R.payload):e.jsxs(e.Fragment,{children:[E?.icon?e.jsx(E.icon,{}):!x&&e.jsx("div",{className:$("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]",{"h-2.5 w-2.5":d==="dot","w-1":d==="line","w-0 border-[1.5px] border-dashed bg-transparent":d==="dashed","my-0.5":U&&d==="dashed"}),style:{"--color-bg":B,"--color-border":B}}),e.jsxs("div",{className:$("flex flex-1 justify-between leading-none",U?"items-end":"items-center"),children:[e.jsxs("div",{className:"grid gap-1.5",children:[U?K:null,e.jsx("span",{className:"text-muted-foreground",children:E?.label||R.name})]}),R.value&&e.jsx("span",{className:"font-mono font-medium tabular-nums text-foreground",children:R.value.toLocaleString()})]})]})},R.dataKey)})})]})});In.displayName="ChartTooltip";const Vb=Py,Cg=u.forwardRef(({className:n,hideIcon:r=!1,payload:c,verticalAlign:d="bottom",nameKey:h},x)=>{const{config:f}=Sg();return c?.length?e.jsx("div",{ref:x,className:$("flex items-center justify-center gap-4",d==="top"?"pb-3":"pt-3",n),children:c.filter(j=>j.type!=="none").map(j=>{const g=`${h||j.dataKey||"value"}`,_=Hu(f,j,g);return e.jsxs("div",{className:$("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"),children:[_?.icon&&!r?e.jsx(_.icon,{}):e.jsx("div",{className:"h-2 w-2 shrink-0 rounded-[2px]",style:{backgroundColor:j.color}}),_?.label]},j.value)})}):null});Cg.displayName="ChartLegend";function Hu(n,r,c){if(typeof r!="object"||r===null)return;const d="payload"in r&&typeof r.payload=="object"&&r.payload!==null?r.payload:void 0;let h=c;return c in r&&typeof r[c]=="string"?h=r[c]:d&&c in d&&typeof d[c]=="string"&&(h=d[c]),h in n?n[h]:n[c]}const gr=ai("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),N=u.forwardRef(({className:n,variant:r,size:c,asChild:d=!1,...h},x)=>{const f=d?lN:"button";return e.jsx(f,{className:$(gr({variant:r,size:c,className:n})),ref:x,...h})});N.displayName="Button";const Fb=ai("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function Xe({className:n,variant:r,...c}){return e.jsx("div",{className:$(Fb({variant:r}),n),...c})}const Qb=5,$b=5e3;let zu=0;function Yb(){return zu=(zu+1)%Number.MAX_SAFE_INTEGER,zu.toString()}const Mu=new Map,tp=n=>{if(Mu.has(n))return;const r=setTimeout(()=>{Mu.delete(n),ur({type:"REMOVE_TOAST",toastId:n})},$b);Mu.set(n,r)},Xb=(n,r)=>{switch(r.type){case"ADD_TOAST":return{...n,toasts:[r.toast,...n.toasts].slice(0,Qb)};case"UPDATE_TOAST":return{...n,toasts:n.toasts.map(c=>c.id===r.toast.id?{...c,...r.toast}:c)};case"DISMISS_TOAST":{const{toastId:c}=r;return c?tp(c):n.toasts.forEach(d=>{tp(d.id)}),{...n,toasts:n.toasts.map(d=>d.id===c||c===void 0?{...d,open:!1}:d)}}case"REMOVE_TOAST":return r.toastId===void 0?{...n,toasts:[]}:{...n,toasts:n.toasts.filter(c=>c.id!==r.toastId)}}},Zc=[];let Ic={toasts:[]};function ur(n){Ic=Xb(Ic,n),Zc.forEach(r=>{r(Ic)})}function Kb({...n}){const r=Yb(),c=h=>ur({type:"UPDATE_TOAST",toast:{...h,id:r}}),d=()=>ur({type:"DISMISS_TOAST",toastId:r});return ur({type:"ADD_TOAST",toast:{...n,id:r,open:!0,onOpenChange:h=>{h||d()}}}),{id:r,dismiss:d,update:c}}function Bs(){const[n,r]=u.useState(Ic);return u.useEffect(()=>(Zc.push(r),()=>{const c=Zc.indexOf(r);c>-1&&Zc.splice(c,1)}),[n]),{...n,toast:Kb,dismiss:c=>ur({type:"DISMISS_TOAST",toastId:c})}}const Zb=n=>{const r=[];for(let c=0;c{try{T(!0);const H=await qc.get("https://v1.hitokoto.cn/?c=a&c=b&c=c&c=d&c=h&c=i&c=k");k({hitokoto:H.data.hitokoto,from:H.data.from||H.data.from_who||"未知"})}catch(H){console.error("获取一言失败:",H),k({hitokoto:"人生就像一盒巧克力,你永远不知道下一颗是什么味道。",from:"阿甘正传"})}finally{T(!1)}},[]),E=u.useCallback(async()=>{try{const H=localStorage.getItem("access-token"),ne=await qc.get("/api/webui/system/status",{headers:{Authorization:`Bearer ${H}`}});K(ne.data)}catch(H){console.error("获取机器人状态失败:",H),K(null)}},[]),B=async()=>{if(!U)try{R(!0);const H=localStorage.getItem("access-token");await qc.post("/api/webui/system/restart",{},{headers:{Authorization:`Bearer ${H}`}}),ee({title:"重启中",description:"麦麦正在重启,请稍候..."}),setTimeout(()=>{E(),R(!1)},3e3)}catch(H){console.error("重启失败:",H),ee({title:"重启失败",description:"无法重启麦麦,请检查控制台",variant:"destructive"}),R(!1)}},X=u.useCallback(async()=>{try{const H=localStorage.getItem("access-token"),ne=await qc.get(`/api/webui/statistics/dashboard?hours=${f}`,{headers:{Authorization:`Bearer ${H}`}});r(ne.data),d(!1),x(100)}catch(H){console.error("Failed to fetch dashboard data:",H),d(!1),x(100)}},[f]);if(u.useEffect(()=>{if(!c)return;x(0);const H=setTimeout(()=>x(15),200),ne=setTimeout(()=>x(30),800),S=setTimeout(()=>x(45),2e3),me=setTimeout(()=>x(60),4e3),he=setTimeout(()=>x(75),6500),Q=setTimeout(()=>x(85),9e3),oe=setTimeout(()=>x(92),11e3);return()=>{clearTimeout(H),clearTimeout(ne),clearTimeout(S),clearTimeout(me),clearTimeout(he),clearTimeout(Q),clearTimeout(oe)}},[c]),u.useEffect(()=>{X(),V(),E()},[X,V,E]),u.useEffect(()=>{if(!g)return;const H=setInterval(()=>{X(),E()},3e4);return()=>clearInterval(H)},[g,X,E]),c||!n)return e.jsx("div",{className:"flex items-center justify-center h-[calc(100vh-200px)]",children:e.jsxs("div",{className:"text-center space-y-6 w-full max-w-md px-4",children:[e.jsx(ft,{className:"h-12 w-12 animate-spin mx-auto text-primary"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-lg font-medium",children:"加载统计数据中..."}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"正在获取麦麦运行数据"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(Sr,{value:h,className:"h-2"}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:[h,"%"]})]})]})});const{summary:w,model_stats:D=[],hourly_data:te=[],daily_data:xe=[],recent_activity:be=[]}=n,ye=w??{total_requests:0,total_cost:0,total_tokens:0,online_time:0,total_messages:0,total_replies:0,avg_response_time:0,cost_per_hour:0,tokens_per_hour:0},ve=H=>{const ne=Math.floor(H/3600),S=Math.floor(H%3600/60);return`${ne}小时${S}分钟`},pe=H=>new Date(H).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),Ne=Zb(D.length),y=D.map((H,ne)=>({name:H.model_name,value:H.request_count,fill:Ne[ne]})),q={requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"},tokens:{label:"Tokens",color:"hsl(var(--chart-3))"}};return e.jsx(es,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"实时监控面板"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"麦麦运行状态和统计数据一览"})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(Kt,{value:f.toString(),onValueChange:H=>j(Number(H)),children:e.jsxs(Rt,{className:"grid grid-cols-3 w-full sm:w-auto",children:[e.jsx(He,{value:"24",children:"24小时"}),e.jsx(He,{value:"168",children:"7天"}),e.jsx(He,{value:"720",children:"30天"})]})}),e.jsxs(N,{variant:g?"default":"outline",size:"sm",onClick:()=>_(!g),className:"gap-2",children:[e.jsx(ft,{className:`h-4 w-4 ${g?"animate-spin":""}`}),e.jsx("span",{className:"hidden sm:inline",children:"自动刷新"})]}),e.jsx(N,{variant:"outline",size:"sm",onClick:X,children:e.jsx(ft,{className:"h-4 w-4"})})]})]}),e.jsxs("div",{className:"flex items-center gap-3 px-4 py-2 rounded-lg border border-dashed border-muted-foreground/30 bg-muted/20",children:[z?e.jsx(Hb,{className:"h-5 flex-1"}):v?e.jsxs("p",{className:"flex-1 text-sm text-muted-foreground italic truncate",children:['"',v.hitokoto,'" —— ',v.from]}):null,e.jsx(N,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0",onClick:V,disabled:z,children:e.jsx(ft,{className:`h-3.5 w-3.5 ${z?"animate-spin":""}`})})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-3",children:[e.jsxs(Be,{className:"lg:col-span-1",children:[e.jsx(gs,{className:"pb-3",children:e.jsxs(js,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(Nr,{className:"h-4 w-4"}),"麦麦状态"]})}),e.jsx(bs,{children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"flex items-center gap-2",children:L?.running?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-3 w-3 rounded-full bg-green-500 animate-pulse"}),e.jsxs(Xe,{variant:"outline",className:"text-green-600 border-green-300 bg-green-50",children:[e.jsx(xa,{className:"h-3 w-3 mr-1"}),"运行中"]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-3 w-3 rounded-full bg-red-500"}),e.jsxs(Xe,{variant:"outline",className:"text-red-600 border-red-300 bg-red-50",children:[e.jsx(Aa,{className:"h-3 w-3 mr-1"}),"已停止"]})]})}),L&&e.jsxs("div",{className:"text-xs text-muted-foreground",children:[e.jsxs("span",{children:["v",L.version]}),e.jsx("span",{className:"mx-2",children:"|"}),e.jsxs("span",{children:["运行 ",ve(L.uptime)]})]})]})})]}),e.jsxs(Be,{className:"lg:col-span-2",children:[e.jsx(gs,{className:"pb-3",children:e.jsxs(js,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(ln,{className:"h-4 w-4"}),"快速操作"]})}),e.jsx(bs,{children:e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(N,{variant:"outline",size:"sm",onClick:B,disabled:U,className:"gap-2",children:[e.jsx(Wc,{className:`h-4 w-4 ${U?"animate-spin":""}`}),U?"重启中...":"重启麦麦"]}),e.jsx(N,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Kc,{to:"/logs",children:[e.jsx(Ma,{className:"h-4 w-4"}),"查看日志"]})}),e.jsx(N,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Kc,{to:"/plugins",children:[e.jsx(NN,{className:"h-4 w-4"}),"插件管理"]})}),e.jsx(N,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Kc,{to:"/settings",children:[e.jsx(Rl,{className:"h-4 w-4"}),"系统设置"]})})]})})]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-4",children:[e.jsxs(Be,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"总请求数"}),e.jsx(bN,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsx("div",{className:"text-2xl font-bold",children:ye.total_requests.toLocaleString()}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["最近",f<48?f+"小时":Math.floor(f/24)+"天"]})]})]}),e.jsxs(Be,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"总花费"}),e.jsx(wN,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:["¥",ye.total_cost.toFixed(2)]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:ye.cost_per_hour>0?`¥${ye.cost_per_hour.toFixed(2)}/小时`:"暂无数据"})]})]}),e.jsxs(Be,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"Token消耗"}),e.jsx(eo,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:[(ye.total_tokens/1e3).toFixed(1),"K"]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:ye.tokens_per_hour>0?`${(ye.tokens_per_hour/1e3).toFixed(1)}K/小时`:"暂无数据"})]})]}),e.jsxs(Be,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"平均响应"}),e.jsx(ln,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:[ye.avg_response_time.toFixed(2),"s"]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"API平均耗时"})]})]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 sm:grid-cols-3",children:[e.jsxs(Be,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"在线时长"}),e.jsx(Wn,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsx(bs,{children:e.jsx("div",{className:"text-xl font-bold",children:ve(ye.online_time)})})]}),e.jsxs(Be,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"消息处理"}),e.jsx(si,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsx("div",{className:"text-xl font-bold",children:ye.total_messages.toLocaleString()}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["回复 ",ye.total_replies.toLocaleString()," 条"]})]})]}),e.jsxs(Be,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"成本效率"}),e.jsx(_N,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsx("div",{className:"text-xl font-bold",children:ye.total_messages>0?`¥${(ye.total_cost/ye.total_messages*100).toFixed(2)}`:"¥0.00"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"每100条消息"})]})]})]}),e.jsxs(Kt,{defaultValue:"trends",className:"space-y-4",children:[e.jsxs(Rt,{className:"grid w-full grid-cols-2 sm:grid-cols-4",children:[e.jsx(He,{value:"trends",children:"趋势"}),e.jsx(He,{value:"models",children:"模型"}),e.jsx(He,{value:"activity",children:"活动"}),e.jsx(He,{value:"daily",children:"日统计"})]}),e.jsxs(We,{value:"trends",className:"space-y-4",children:[e.jsxs(Be,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"请求趋势"}),e.jsxs(Zs,{children:["最近",f,"小时的请求量变化"]})]}),e.jsx(bs,{children:e.jsx(Zn,{config:q,className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:e.jsxs(Wy,{data:te,children:[e.jsx(Gc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Vc,{dataKey:"timestamp",tickFormatter:H=>pe(H),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{content:e.jsx(In,{labelFormatter:H=>pe(H)})}),e.jsx(eN,{type:"monotone",dataKey:"requests",stroke:"var(--color-requests)",strokeWidth:2})]})})})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[e.jsxs(Be,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"花费趋势"}),e.jsx(Zs,{children:"API调用成本变化"})]}),e.jsx(bs,{children:e.jsx(Zn,{config:q,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:e.jsxs(Su,{data:te,children:[e.jsx(Gc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Vc,{dataKey:"timestamp",tickFormatter:H=>pe(H),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{content:e.jsx(In,{labelFormatter:H=>pe(H)})}),e.jsx(Fc,{dataKey:"cost",fill:"var(--color-cost)"})]})})})]}),e.jsxs(Be,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"Token消耗"}),e.jsx(Zs,{children:"Token使用量变化"})]}),e.jsx(bs,{children:e.jsx(Zn,{config:q,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:e.jsxs(Su,{data:te,children:[e.jsx(Gc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Vc,{dataKey:"timestamp",tickFormatter:H=>pe(H),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{content:e.jsx(In,{labelFormatter:H=>pe(H)})}),e.jsx(Fc,{dataKey:"tokens",fill:"var(--color-tokens)"})]})})})]})]})]}),e.jsx(We,{value:"models",className:"space-y-4",children:e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[e.jsxs(Be,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"模型请求分布"}),e.jsxs(Zs,{children:["各模型使用占比 (共 ",D.length," 个模型)"]})]}),e.jsx(bs,{children:e.jsx(Zn,{config:Object.fromEntries(D.map((H,ne)=>[H.model_name,{label:H.model_name,color:Ne[ne]}])),className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:e.jsxs(sN,{children:[e.jsx(lr,{content:e.jsx(In,{})}),e.jsx(tN,{data:y,cx:"50%",cy:"50%",labelLine:!1,label:({name:H,percent:ne})=>ne&&ne<.05?"":`${H} ${ne?(ne*100).toFixed(0):0}%`,outerRadius:100,dataKey:"value",children:y.map((H,ne)=>e.jsx(aN,{fill:H.fill},`cell-${ne}`))})]})})})]}),e.jsxs(Be,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"模型详细统计"}),e.jsx(Zs,{children:"请求数、花费和性能"})]}),e.jsx(bs,{children:e.jsx(es,{className:"h-[300px] sm:h-[400px]",children:e.jsx("div",{className:"space-y-3",children:D.map((H,ne)=>e.jsxs("div",{className:"p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("h4",{className:"font-semibold text-sm truncate flex-1 min-w-0",children:H.model_name}),e.jsx("div",{className:"w-3 h-3 rounded-full ml-2 flex-shrink-0",style:{backgroundColor:`hsl(var(--chart-${ne%5+1}))`}})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"请求数:"}),e.jsx("span",{className:"ml-1 font-medium",children:H.request_count.toLocaleString()})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"花费:"}),e.jsxs("span",{className:"ml-1 font-medium",children:["¥",H.total_cost.toFixed(2)]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),e.jsxs("span",{className:"ml-1 font-medium",children:[(H.total_tokens/1e3).toFixed(1),"K"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"平均耗时:"}),e.jsxs("span",{className:"ml-1 font-medium",children:[H.avg_response_time.toFixed(2),"s"]})]})]})]},ne))})})})]})]})}),e.jsx(We,{value:"activity",children:e.jsxs(Be,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"最近活动"}),e.jsx(Zs,{children:"最新的API调用记录"})]}),e.jsx(bs,{children:e.jsx(es,{className:"h-[400px] sm:h-[500px]",children:e.jsx("div",{className:"space-y-2",children:be.map((H,ne)=>e.jsxs("div",{className:"p-3 sm:p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-2 mb-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-sm truncate",children:H.model}),e.jsx("div",{className:"text-xs text-muted-foreground",children:H.request_type})]}),e.jsx("div",{className:"text-xs text-muted-foreground flex-shrink-0",children:pe(H.timestamp)})]}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-2 text-xs",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),e.jsx("span",{className:"ml-1",children:H.tokens})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"花费:"}),e.jsxs("span",{className:"ml-1",children:["¥",H.cost.toFixed(4)]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"耗时:"}),e.jsxs("span",{className:"ml-1",children:[H.time_cost.toFixed(2),"s"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"状态:"}),e.jsx("span",{className:`ml-1 ${H.status==="success"?"text-green-600":"text-red-600"}`,children:H.status})]})]})]},ne))})})})]})}),e.jsx(We,{value:"daily",children:e.jsxs(Be,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"每日统计"}),e.jsx(Zs,{children:"最近7天的数据汇总"})]}),e.jsx(bs,{children:e.jsx(Zn,{config:{requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"}},className:"h-[400px] sm:h-[500px] w-full aspect-auto",children:e.jsxs(Su,{data:xe,children:[e.jsx(Gc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Vc,{dataKey:"timestamp",tickFormatter:H=>{const ne=new Date(H);return`${ne.getMonth()+1}/${ne.getDate()}`},stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{yAxisId:"left",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{yAxisId:"right",orientation:"right",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{content:e.jsx(In,{labelFormatter:H=>new Date(H).toLocaleDateString("zh-CN")})}),e.jsx(Vb,{content:e.jsx(Cg,{})}),e.jsx(Fc,{yAxisId:"left",dataKey:"requests",fill:"var(--color-requests)"}),e.jsx(Fc,{yAxisId:"right",dataKey:"cost",fill:"var(--color-cost)"})]})})})]})})]})]})})}const Jb={theme:"system",setTheme:()=>null},kg=u.createContext(Jb),Yu=()=>{const n=u.useContext(kg);if(n===void 0)throw new Error("useTheme must be used within a ThemeProvider");return n},Pb=(n,r,c)=>{const d=document.documentElement.classList.contains("no-animations");if(!document.startViewTransition||d){r(n);return}const h=c.clientX,x=c.clientY,f=Math.hypot(Math.max(h,innerWidth-h),Math.max(x,innerHeight-x));document.startViewTransition(()=>{r(n)}).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${h}px ${x}px)`,`circle(${f}px at ${h}px ${x}px)`]},{duration:500,easing:"ease-in-out",pseudoElement:"::view-transition-new(root)"})})},Tg=u.createContext(void 0),Eg=()=>{const n=u.useContext(Tg);if(n===void 0)throw new Error("useAnimation must be used within an AnimationProvider");return n},qe=u.forwardRef(({className:n,...r},c)=>e.jsx(Cp,{className:$("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",n),...r,ref:c,children:e.jsx(Dy,{className:$("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));qe.displayName=Cp.displayName;const Wb=ai("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),b=u.forwardRef(({className:n,...r},c)=>e.jsx(Kp,{ref:c,className:$(Wb(),n),...r}));b.displayName=Kp.displayName;const ce=u.forwardRef(({className:n,type:r,...c},d)=>e.jsx("input",{type:r,className:$("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",n),ref:d,...c}));ce.displayName="Input";const e0=[{id:"minLength",label:"长度至少 10 位",description:"Token 长度必须大于等于 10 个字符",validate:n=>n.length>=10},{id:"hasUppercase",label:"包含大写字母",description:"至少包含一个大写字母 (A-Z)",validate:n=>/[A-Z]/.test(n)},{id:"hasLowercase",label:"包含小写字母",description:"至少包含一个小写字母 (a-z)",validate:n=>/[a-z]/.test(n)},{id:"hasSpecialChar",label:"包含特殊符号",description:"至少包含一个特殊符号 (!@#$%^&*()_+-=[]{}|;:,.<>?/)",validate:n=>/[!@#$%^&*()_+\-=[\]{}|;:,.<>?/]/.test(n)}];function s0(n){const r=e0.map(d=>({id:d.id,label:d.label,description:d.description,passed:d.validate(n)}));return{isValid:r.every(d=>d.passed),rules:r}}const Xu="0.11.6 Beta",Ku="MaiBot Dashboard",t0=`${Ku} v${Xu}`,a0=(n="v")=>`${n}${Xu}`,_t={THEME:"maibot-ui-theme",ACCENT_COLOR:"accent-color",ENABLE_ANIMATIONS:"maibot-animations",ENABLE_WAVES_BACKGROUND:"maibot-waves-background",LOG_CACHE_SIZE:"maibot-log-cache-size",LOG_AUTO_SCROLL:"maibot-log-auto-scroll",LOG_FONT_SIZE:"maibot-log-font-size",LOG_LINE_SPACING:"maibot-log-line-spacing",DATA_SYNC_INTERVAL:"maibot-data-sync-interval",WS_RECONNECT_INTERVAL:"maibot-ws-reconnect-interval",WS_MAX_RECONNECT_ATTEMPTS:"maibot-ws-max-reconnect-attempts",ACCESS_TOKEN:"access-token",COMPLETED_TOURS:"maibot-completed-tours"},Ea={theme:"system",accentColor:"blue",enableAnimations:!0,enableWavesBackground:!0,logCacheSize:1e3,logAutoScroll:!0,logFontSize:"xs",logLineSpacing:4,dataSyncInterval:30,wsReconnectInterval:3e3,wsMaxReconnectAttempts:10};function Fs(n){const r=zg(n),c=localStorage.getItem(r);if(c===null)return Ea[n];const d=Ea[n];if(typeof d=="boolean")return c==="true";if(typeof d=="number"){const h=parseFloat(c);return isNaN(h)?d:h}return c}function Pn(n,r){const c=zg(n);localStorage.setItem(c,String(r)),window.dispatchEvent(new CustomEvent("maibot-settings-change",{detail:{key:n,value:r}}))}function l0(){return{theme:Fs("theme"),accentColor:Fs("accentColor"),enableAnimations:Fs("enableAnimations"),enableWavesBackground:Fs("enableWavesBackground"),logCacheSize:Fs("logCacheSize"),logAutoScroll:Fs("logAutoScroll"),logFontSize:Fs("logFontSize"),logLineSpacing:Fs("logLineSpacing"),dataSyncInterval:Fs("dataSyncInterval"),wsReconnectInterval:Fs("wsReconnectInterval"),wsMaxReconnectAttempts:Fs("wsMaxReconnectAttempts")}}function n0(){const n=l0(),r=localStorage.getItem(_t.COMPLETED_TOURS),c=r?JSON.parse(r):[];return{...n,completedTours:c}}function i0(n){const r=[],c=[];for(const[d,h]of Object.entries(n)){if(d==="completedTours"){Array.isArray(h)?(localStorage.setItem(_t.COMPLETED_TOURS,JSON.stringify(h)),r.push("completedTours")):c.push("completedTours");continue}if(d in Ea){const x=d,f=Ea[x];if(typeof h==typeof f){if(x==="theme"&&!["light","dark","system"].includes(h)){c.push(d);continue}if(x==="logFontSize"&&!["xs","sm","base"].includes(h)){c.push(d);continue}Pn(x,h),r.push(d)}else c.push(d)}else c.push(d)}return{success:r.length>0,imported:r,skipped:c}}function r0(){for(const n of Object.keys(Ea))Pn(n,Ea[n]);localStorage.removeItem(_t.COMPLETED_TOURS),window.dispatchEvent(new CustomEvent("maibot-settings-reset"))}function c0(){const n=[],r=[],c=new Set([_t.ACCESS_TOKEN]),d=[];for(let h=0;hd.size-c.size),{used:n,items:localStorage.length,details:r}}function o0(n){if(n===0)return"0 B";const r=1024,c=["B","KB","MB"],d=Math.floor(Math.log(n)/Math.log(r));return parseFloat((n/Math.pow(r,d)).toFixed(2))+" "+c[d]}function zg(n){return{theme:_t.THEME,accentColor:_t.ACCENT_COLOR,enableAnimations:_t.ENABLE_ANIMATIONS,enableWavesBackground:_t.ENABLE_WAVES_BACKGROUND,logCacheSize:_t.LOG_CACHE_SIZE,logAutoScroll:_t.LOG_AUTO_SCROLL,logFontSize:_t.LOG_FONT_SIZE,logLineSpacing:_t.LOG_LINE_SPACING,dataSyncInterval:_t.DATA_SYNC_INTERVAL,wsReconnectInterval:_t.WS_RECONNECT_INTERVAL,wsMaxReconnectAttempts:_t.WS_MAX_RECONNECT_ATTEMPTS}[n]}const za=u.forwardRef(({className:n,...r},c)=>e.jsxs(kp,{ref:c,className:$("relative flex w-full touch-none select-none items-center",n),...r,children:[e.jsx(Oy,{className:"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20",children:e.jsx(Ry,{className:"absolute h-full bg-primary"})}),e.jsx(Ly,{className:"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"})]}));za.displayName=kp.displayName;class d0{ws=null;reconnectTimeout=null;reconnectAttempts=0;heartbeatInterval=null;logCallbacks=new Set;connectionCallbacks=new Set;isConnected=!1;logCache=[];getMaxCacheSize(){return Fs("logCacheSize")}getMaxReconnectAttempts(){return Fs("wsMaxReconnectAttempts")}getReconnectInterval(){return Fs("wsReconnectInterval")}getWebSocketUrl(){{const r=window.location.protocol==="https:"?"wss:":"ws:",c=window.location.host;return`${r}//${c}/ws/logs`}}connect(){if(this.ws?.readyState===WebSocket.OPEN||this.ws?.readyState===WebSocket.CONNECTING)return;const r=this.getWebSocketUrl();try{this.ws=new WebSocket(r),this.ws.onopen=()=>{this.isConnected=!0,this.reconnectAttempts=0,this.notifyConnection(!0),this.startHeartbeat()},this.ws.onmessage=c=>{try{if(c.data==="pong")return;const d=JSON.parse(c.data);this.notifyLog(d)}catch(d){console.error("解析日志消息失败:",d)}},this.ws.onerror=c=>{console.error("❌ WebSocket 错误:",c),this.isConnected=!1,this.notifyConnection(!1)},this.ws.onclose=()=>{this.isConnected=!1,this.notifyConnection(!1),this.stopHeartbeat(),this.attemptReconnect()}}catch(c){console.error("创建 WebSocket 连接失败:",c),this.attemptReconnect()}}attemptReconnect(){const r=this.getMaxReconnectAttempts();if(this.reconnectAttempts>=r)return;this.reconnectAttempts+=1;const c=this.getReconnectInterval(),d=Math.min(c*this.reconnectAttempts,3e4);this.reconnectTimeout=window.setTimeout(()=>{this.connect()},d)}startHeartbeat(){this.heartbeatInterval=window.setInterval(()=>{this.ws?.readyState===WebSocket.OPEN&&this.ws.send("ping")},3e4)}stopHeartbeat(){this.heartbeatInterval!==null&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}disconnect(){this.reconnectTimeout!==null&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.stopHeartbeat(),this.ws&&(this.ws.close(),this.ws=null),this.isConnected=!1,this.reconnectAttempts=0}onLog(r){return this.logCallbacks.add(r),()=>this.logCallbacks.delete(r)}onConnectionChange(r){return this.connectionCallbacks.add(r),r(this.isConnected),()=>this.connectionCallbacks.delete(r)}notifyLog(r){if(!this.logCache.some(d=>d.id===r.id)){this.logCache.push(r);const d=this.getMaxCacheSize();this.logCache.length>d&&(this.logCache=this.logCache.slice(-d)),this.logCallbacks.forEach(h=>{try{h(r)}catch(x){console.error("日志回调执行失败:",x)}})}}notifyConnection(r){this.connectionCallbacks.forEach(c=>{try{c(r)}catch(d){console.error("连接状态回调执行失败:",d)}})}getAllLogs(){return[...this.logCache]}clearLogs(){this.logCache=[]}getConnectionStatus(){return this.isConnected}}const an=new d0;typeof window<"u"&&an.connect();const Os=iN,ni=rN,u0=nN,Zu=Jp,Mg=u.forwardRef(({className:n,...r},c)=>e.jsx(Zp,{ref:c,className:$("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...r}));Mg.displayName=Zp.displayName;const Es=u.forwardRef(({className:n,children:r,preventOutsideClose:c=!1,...d},h)=>e.jsxs(u0,{children:[e.jsx(Mg,{}),e.jsxs(Ip,{ref:h,className:$("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",n),onPointerDownOutside:c?x=>x.preventDefault():void 0,onInteractOutside:c?x=>x.preventDefault():void 0,...d,children:[r,e.jsxs(Jp,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[e.jsx(li,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Es.displayName=Ip.displayName;const zs=({className:n,...r})=>e.jsx("div",{className:$("flex flex-col space-y-1.5 text-center sm:text-left",n),...r});zs.displayName="DialogHeader";const Is=({className:n,...r})=>e.jsx("div",{className:$("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",n),...r});Is.displayName="DialogFooter";const Ms=u.forwardRef(({className:n,...r},c)=>e.jsx(Pp,{ref:c,className:$("text-lg font-semibold leading-none tracking-tight",n),...r}));Ms.displayName=Pp.displayName;const $s=u.forwardRef(({className:n,...r},c)=>e.jsx(Wp,{ref:c,className:$("text-sm text-muted-foreground",n),...r}));$s.displayName=Wp.displayName;const ps=By,Qs=Hy,m0=Uy,Ag=u.forwardRef(({className:n,...r},c)=>e.jsx(Tp,{className:$("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...r,ref:c}));Ag.displayName=Tp.displayName;const cs=u.forwardRef(({className:n,...r},c)=>e.jsxs(m0,{children:[e.jsx(Ag,{}),e.jsx(Ep,{ref:c,className:$("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",n),...r})]}));cs.displayName=Ep.displayName;const os=({className:n,...r})=>e.jsx("div",{className:$("flex flex-col space-y-2 text-center sm:text-left",n),...r});os.displayName="AlertDialogHeader";const ds=({className:n,...r})=>e.jsx("div",{className:$("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",n),...r});ds.displayName="AlertDialogFooter";const us=u.forwardRef(({className:n,...r},c)=>e.jsx(zp,{ref:c,className:$("text-lg font-semibold",n),...r}));us.displayName=zp.displayName;const ms=u.forwardRef(({className:n,...r},c)=>e.jsx(Mp,{ref:c,className:$("text-sm text-muted-foreground",n),...r}));ms.displayName=Mp.displayName;const hs=u.forwardRef(({className:n,...r},c)=>e.jsx(Ap,{ref:c,className:$(gr(),n),...r}));hs.displayName=Ap.displayName;const xs=u.forwardRef(({className:n,...r},c)=>e.jsx(Dp,{ref:c,className:$(gr({variant:"outline"}),"mt-2 sm:mt-0",n),...r}));xs.displayName=Dp.displayName;function h0(){return e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"系统设置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理您的应用偏好设置"})]})}),e.jsxs(Kt,{defaultValue:"appearance",className:"w-full",children:[e.jsxs(Rt,{className:"grid w-full grid-cols-2 sm:grid-cols-4 gap-0.5 sm:gap-1 h-auto p-1",children:[e.jsxs(He,{value:"appearance",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(fg,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"外观"})]}),e.jsxs(He,{value:"security",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(SN,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"安全"})]}),e.jsxs(He,{value:"other",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(Rl,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"其他"})]}),e.jsxs(He,{value:"about",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(Xt,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"关于"})]})]}),e.jsxs(es,{className:"h-[calc(100vh-240px)] sm:h-[calc(100vh-280px)] mt-4 sm:mt-6",children:[e.jsx(We,{value:"appearance",className:"mt-0",children:e.jsx(x0,{})}),e.jsx(We,{value:"security",className:"mt-0",children:e.jsx(f0,{})}),e.jsx(We,{value:"other",className:"mt-0",children:e.jsx(p0,{})}),e.jsx(We,{value:"about",className:"mt-0",children:e.jsx(g0,{})})]})]})]})}function lp(n){const r=document.documentElement,d={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[n];if(d)r.style.setProperty("--primary",d.hsl),d.gradient?(r.style.setProperty("--primary-gradient",d.gradient),r.classList.add("has-gradient")):(r.style.removeProperty("--primary-gradient"),r.classList.remove("has-gradient"));else if(n.startsWith("#")){const h=x=>{x=x.replace("#","");const f=parseInt(x.substring(0,2),16)/255,j=parseInt(x.substring(2,4),16)/255,g=parseInt(x.substring(4,6),16)/255,_=Math.max(f,j,g),v=Math.min(f,j,g);let k=0,z=0;const T=(_+v)/2;if(_!==v){const L=_-v;switch(z=T>.5?L/(2-_-v):L/(_+v),_){case f:k=((j-g)/L+(jlocalStorage.getItem("accent-color")||"blue");u.useEffect(()=>{const _=localStorage.getItem("accent-color")||"blue";lp(_)},[]);const g=_=>{j(_),localStorage.setItem("accent-color",_),lp(_)};return e.jsxs("div",{className:"space-y-6 sm:space-y-8",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题模式"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 sm:gap-4",children:[e.jsx(Au,{value:"light",current:n,onChange:r,label:"浅色",description:"始终使用浅色主题"}),e.jsx(Au,{value:"dark",current:n,onChange:r,label:"深色",description:"始终使用深色主题"}),e.jsx(Au,{value:"system",current:n,onChange:r,label:"跟随系统",description:"根据系统设置自动切换"})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题色"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"单色"}),e.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[e.jsx(da,{value:"blue",current:f,onChange:g,label:"蓝色",colorClass:"bg-blue-500"}),e.jsx(da,{value:"purple",current:f,onChange:g,label:"紫色",colorClass:"bg-purple-500"}),e.jsx(da,{value:"green",current:f,onChange:g,label:"绿色",colorClass:"bg-green-500"}),e.jsx(da,{value:"orange",current:f,onChange:g,label:"橙色",colorClass:"bg-orange-500"}),e.jsx(da,{value:"pink",current:f,onChange:g,label:"粉色",colorClass:"bg-pink-500"}),e.jsx(da,{value:"red",current:f,onChange:g,label:"红色",colorClass:"bg-red-500"})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"渐变色"}),e.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[e.jsx(da,{value:"gradient-sunset",current:f,onChange:g,label:"日落",colorClass:"bg-gradient-to-r from-orange-500 to-pink-500"}),e.jsx(da,{value:"gradient-ocean",current:f,onChange:g,label:"海洋",colorClass:"bg-gradient-to-r from-blue-500 to-cyan-500"}),e.jsx(da,{value:"gradient-forest",current:f,onChange:g,label:"森林",colorClass:"bg-gradient-to-r from-green-500 to-emerald-500"}),e.jsx(da,{value:"gradient-aurora",current:f,onChange:g,label:"极光",colorClass:"bg-gradient-to-r from-purple-500 to-pink-500"}),e.jsx(da,{value:"gradient-fire",current:f,onChange:g,label:"烈焰",colorClass:"bg-gradient-to-r from-red-500 to-orange-500"}),e.jsx(da,{value:"gradient-twilight",current:f,onChange:g,label:"暮光",colorClass:"bg-gradient-to-r from-indigo-500 to-purple-500"})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"自定义颜色"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 sm:gap-4",children:[e.jsx("div",{className:"flex-1",children:e.jsx("input",{type:"color",value:f.startsWith("#")?f:"#3b82f6",onChange:_=>g(_.target.value),className:"h-10 sm:h-12 w-full rounded-lg border-2 border-border cursor-pointer",title:"选择自定义颜色"})}),e.jsx("div",{className:"flex-1",children:e.jsx(ce,{type:"text",value:f,onChange:_=>g(_.target.value),placeholder:"#3b82f6",className:"font-mono text-sm"})})]}),e.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground mt-2",children:"点击色块选择颜色,或手动输入 HEX 颜色代码"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"动画效果"}),e.jsxs("div",{className:"space-y-2 sm:space-y-3",children:[e.jsx("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5 flex-1",children:[e.jsx(b,{htmlFor:"animations",className:"text-base font-medium cursor-pointer",children:"启用动画效果"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后将禁用所有过渡动画和特效,提升性能"})]}),e.jsx(qe,{id:"animations",checked:c,onCheckedChange:d})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5 flex-1",children:[e.jsx(b,{htmlFor:"waves-background",className:"text-base font-medium cursor-pointer",children:"登录页波浪背景"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后登录页将使用纯色背景,适合低性能设备"})]}),e.jsx(qe,{id:"waves-background",checked:h,onCheckedChange:x})]})})]})]})]})}function f0(){const n=It(),[r,c]=u.useState(""),[d,h]=u.useState(""),[x,f]=u.useState(!1),[j,g]=u.useState(!1),[_,v]=u.useState(!1),[k,z]=u.useState(!1),[T,L]=u.useState(!1),[K,U]=u.useState(!1),[R,ee]=u.useState(""),[V,E]=u.useState(!1),{toast:B}=Bs(),X=u.useMemo(()=>s0(d),[d]),w=()=>localStorage.getItem("access-token")||"",D=async pe=>{try{await navigator.clipboard.writeText(pe),L(!0),B({title:"复制成功",description:"Token 已复制到剪贴板"}),setTimeout(()=>L(!1),2e3)}catch{B({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},te=async()=>{if(!d.trim()){B({title:"输入错误",description:"请输入新的 Token",variant:"destructive"});return}if(!X.isValid){const pe=X.rules.filter(Ne=>!Ne.passed).map(Ne=>Ne.label).join(", ");B({title:"格式错误",description:`Token 不符合要求: ${pe}`,variant:"destructive"});return}v(!0);try{const pe=w(),Ne=await fetch("/api/webui/auth/update",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${pe}`},body:JSON.stringify({new_token:d.trim()})}),y=await Ne.json();Ne.ok&&y.success?(localStorage.setItem("access-token",d.trim()),h(""),r&&c(d.trim()),B({title:"更新成功",description:"Access Token 已更新,即将跳转到登录页"}),setTimeout(()=>{localStorage.removeItem("access-token"),n({to:"/auth"})},1500)):B({title:"更新失败",description:y.message||"无法更新 Token",variant:"destructive"})}catch(pe){console.error("更新 Token 错误:",pe),B({title:"更新失败",description:"连接服务器失败",variant:"destructive"})}finally{v(!1)}},xe=async()=>{z(!0);try{const pe=w(),Ne=await fetch("/api/webui/auth/regenerate",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${pe}`}}),y=await Ne.json();Ne.ok&&y.success?(localStorage.setItem("access-token",y.token),c(y.token),ee(y.token),U(!0),E(!1),B({title:"生成成功",description:"新的 Access Token 已生成,请及时保存"})):B({title:"生成失败",description:y.message||"无法生成新 Token",variant:"destructive"})}catch(pe){console.error("生成 Token 错误:",pe),B({title:"生成失败",description:"连接服务器失败",variant:"destructive"})}finally{z(!1)}},be=async()=>{try{await navigator.clipboard.writeText(R),E(!0),B({title:"复制成功",description:"Token 已复制到剪贴板"})}catch{B({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},ye=()=>{U(!1),setTimeout(()=>{ee(""),E(!1)},300),setTimeout(()=>{localStorage.removeItem("access-token"),n({to:"/auth"})},500)},ve=pe=>{pe||ye()};return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsx(Os,{open:K,onOpenChange:ve,children:e.jsxs(Es,{className:"sm:max-w-md",children:[e.jsxs(zs,{children:[e.jsxs(Ms,{className:"flex items-center gap-2",children:[e.jsx(ya,{className:"h-5 w-5 text-yellow-500"}),"新的 Access Token"]}),e.jsx($s,{children:"这是您的新 Token,请立即保存。关闭此窗口后将跳转到登录页面。"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"rounded-lg border-2 border-primary/20 bg-primary/5 p-4",children:[e.jsx(b,{className:"text-xs text-muted-foreground mb-2 block",children:"您的新 Token (64位安全令牌)"}),e.jsx("div",{className:"font-mono text-sm break-all select-all bg-background p-3 rounded border",children:R})]}),e.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ya,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5"}),e.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[e.jsx("p",{className:"font-semibold",children:"重要提示"}),e.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[e.jsx("li",{children:"此 Token 仅显示一次,关闭后无法再查看"}),e.jsx("li",{children:"请立即复制并保存到安全的位置"}),e.jsx("li",{children:"关闭窗口后将自动跳转到登录页面"}),e.jsx("li",{children:"请使用新 Token 重新登录系统"})]})]})]})})]}),e.jsxs(Is,{className:"gap-2 sm:gap-0",children:[e.jsx(N,{variant:"outline",onClick:be,className:"gap-2",children:V?e.jsxs(e.Fragment,{children:[e.jsx(ha,{className:"h-4 w-4 text-green-500"}),"已复制"]}):e.jsxs(e.Fragment,{children:[e.jsx(so,{className:"h-4 w-4"}),"复制 Token"]})}),e.jsx(N,{onClick:ye,children:"我已保存,关闭"})]})]})}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"当前 Access Token"}),e.jsx("div",{className:"space-y-3 sm:space-y-4",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"current-token",className:"text-sm",children:"您的访问令牌"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(ce,{id:"current-token",type:x?"text":"password",value:r||w(),readOnly:!0,className:"pr-10 font-mono text-sm",placeholder:"点击查看按钮显示 Token"}),e.jsx("button",{onClick:()=>{r||c(w()),f(!x)},className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:x?"隐藏":"显示",children:x?e.jsx(mr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Zt,{className:"h-4 w-4 text-muted-foreground"})})]}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[e.jsx(N,{variant:"outline",size:"icon",onClick:()=>D(w()),title:"复制到剪贴板",className:"flex-shrink-0",children:T?e.jsx(ha,{className:"h-4 w-4 text-green-500"}):e.jsx(so,{className:"h-4 w-4"})}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(N,{variant:"outline",disabled:k,className:"gap-2 flex-1 sm:flex-none",children:[e.jsx(ft,{className:$("h-4 w-4",k&&"animate-spin")}),e.jsx("span",{className:"hidden sm:inline",children:"重新生成"}),e.jsx("span",{className:"sm:hidden",children:"生成"})]})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认重新生成 Token"}),e.jsx(ms,{children:"这将生成一个新的 64 位安全令牌,并使当前 Token 立即失效。 您需要使用新 Token 重新登录系统。此操作不可撤销,确定要继续吗?"})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:xe,children:"确认生成"})]})]})]})]})]}),e.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground",children:"请妥善保管您的 Access Token,不要泄露给他人"})]})})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"自定义 Access Token"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"new-token",className:"text-sm",children:"新的访问令牌"}),e.jsxs("div",{className:"relative",children:[e.jsx(ce,{id:"new-token",type:j?"text":"password",value:d,onChange:pe=>h(pe.target.value),className:"pr-10 font-mono text-sm",placeholder:"输入自定义 Token"}),e.jsx("button",{onClick:()=>g(!j),className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:j?"隐藏":"显示",children:j?e.jsx(mr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Zt,{className:"h-4 w-4 text-muted-foreground"})})]}),d&&e.jsxs("div",{className:"mt-3 space-y-2 p-3 rounded-lg bg-muted/50",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"Token 安全要求:"}),e.jsx("div",{className:"space-y-1.5",children:X.rules.map(pe=>e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[pe.passed?e.jsx(xa,{className:"h-4 w-4 text-green-500 flex-shrink-0"}):e.jsx(pg,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),e.jsx("span",{className:$(pe.passed?"text-green-600 dark:text-green-400":"text-muted-foreground"),children:pe.label})]},pe.id))}),X.isValid&&e.jsx("div",{className:"mt-2 pt-2 border-t border-border",children:e.jsxs("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[e.jsx(ha,{className:"h-4 w-4"}),e.jsx("span",{className:"font-medium",children:"Token 格式正确,可以使用"})]})})]})]}),e.jsx(N,{onClick:te,disabled:_||!X.isValid||!d,className:"w-full sm:w-auto",children:_?"更新中...":"更新自定义 Token"})]})]}),e.jsxs("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3 sm:p-4",children:[e.jsx("h4",{className:"text-sm sm:text-base font-semibold text-yellow-900 dark:text-yellow-200 mb-2",children:"安全提示"}),e.jsxs("ul",{className:"text-xs sm:text-sm text-yellow-800 dark:text-yellow-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"重新生成 Token 会创建系统随机生成的 64 位安全令牌"}),e.jsx("li",{children:"自定义 Token 必须满足所有安全要求才能使用"}),e.jsx("li",{children:"更新 Token 后,旧的 Token 将立即失效"}),e.jsx("li",{children:"请在安全的环境下查看和复制 Token"}),e.jsx("li",{children:"如果怀疑 Token 泄露,请立即重新生成或更新"}),e.jsx("li",{children:"建议使用系统生成的 Token 以获得最高安全性"})]})]})]})}function p0(){const n=It(),{toast:r}=Bs(),[c,d]=u.useState(!1),[h,x]=u.useState(!1),[f,j]=u.useState(()=>Fs("logCacheSize")),[g,_]=u.useState(()=>Fs("wsReconnectInterval")),[v,k]=u.useState(()=>Fs("wsMaxReconnectAttempts")),[z,T]=u.useState(()=>Fs("dataSyncInterval")),[L,K]=u.useState(()=>ap()),[U,R]=u.useState(!1),[ee,V]=u.useState(!1),E=u.useRef(null);if(h)throw new Error("这是一个手动触发的测试错误,用于验证错误边界组件是否正常工作。");const B=()=>{K(ap())},X=y=>{const q=y[0];j(q),Pn("logCacheSize",q)},w=y=>{const q=y[0];_(q),Pn("wsReconnectInterval",q)},D=y=>{const q=y[0];k(q),Pn("wsMaxReconnectAttempts",q)},te=y=>{const q=y[0];T(q),Pn("dataSyncInterval",q)},xe=()=>{an.clearLogs(),r({title:"日志已清除",description:"日志缓存已清空"})},be=()=>{const y=c0();B(),r({title:"缓存已清除",description:`已清除 ${y.clearedKeys.length} 项缓存数据`})},ye=()=>{R(!0);try{const y=n0(),q=JSON.stringify(y,null,2),H=new Blob([q],{type:"application/json"}),ne=URL.createObjectURL(H),S=document.createElement("a");S.href=ne,S.download=`maibot-webui-settings-${new Date().toISOString().slice(0,10)}.json`,document.body.appendChild(S),S.click(),document.body.removeChild(S),URL.revokeObjectURL(ne),r({title:"导出成功",description:"设置已导出为 JSON 文件"})}catch(y){console.error("导出设置失败:",y),r({title:"导出失败",description:"无法导出设置",variant:"destructive"})}finally{R(!1)}},ve=y=>{const q=y.target.files?.[0];if(!q)return;V(!0);const H=new FileReader;H.onload=ne=>{try{const S=ne.target?.result,me=JSON.parse(S),he=i0(me);he.success?(j(Fs("logCacheSize")),_(Fs("wsReconnectInterval")),k(Fs("wsMaxReconnectAttempts")),T(Fs("dataSyncInterval")),B(),r({title:"导入成功",description:`成功导入 ${he.imported.length} 项设置${he.skipped.length>0?`,跳过 ${he.skipped.length} 项`:""}`}),(he.imported.includes("theme")||he.imported.includes("accentColor"))&&r({title:"提示",description:"部分设置需要刷新页面才能完全生效"})):r({title:"导入失败",description:"没有有效的设置项可导入",variant:"destructive"})}catch(S){console.error("导入设置失败:",S),r({title:"导入失败",description:"文件格式无效",variant:"destructive"})}finally{V(!1),E.current&&(E.current.value="")}},H.readAsText(q)},pe=()=>{r0(),j(Ea.logCacheSize),_(Ea.wsReconnectInterval),k(Ea.wsMaxReconnectAttempts),T(Ea.dataSyncInterval),B(),r({title:"已重置",description:"所有设置已恢复为默认值,刷新页面以应用更改"})},Ne=async()=>{d(!0);try{const y=localStorage.getItem("access-token"),q=await fetch("/api/webui/setup/reset",{method:"POST",headers:{Authorization:`Bearer ${y}`}}),H=await q.json();q.ok&&H.success?(r({title:"重置成功",description:"即将进入初次配置向导"}),setTimeout(()=>{n({to:"/setup"})},1e3)):r({title:"重置失败",description:H.message||"无法重置配置状态",variant:"destructive"})}catch(y){console.error("重置配置状态错误:",y),r({title:"重置失败",description:"连接服务器失败",variant:"destructive"})}finally{d(!1)}};return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(eo,{className:"h-5 w-5"}),"性能与存储"]}),e.jsxs("div",{className:"space-y-4 sm:space-y-5",children:[e.jsxs("div",{className:"rounded-lg bg-muted/50 p-3 sm:p-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("span",{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(CN,{className:"h-4 w-4"}),"本地存储使用"]}),e.jsx(N,{variant:"ghost",size:"sm",onClick:B,className:"h-7 px-2",children:e.jsx(ft,{className:"h-3 w-3"})})]}),e.jsx("div",{className:"text-2xl font-bold text-primary",children:o0(L.used)}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:[L.items," 个存储项"]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"日志缓存大小"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[f," 条"]})]}),e.jsx(za,{value:[f],onValueChange:X,min:100,max:5e3,step:100,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"控制日志查看器最多缓存的日志条数,较大的值会占用更多内存"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"首页数据刷新间隔"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[z," 秒"]})]}),e.jsx(za,{value:[z],onValueChange:te,min:10,max:120,step:5,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"控制首页统计数据的自动刷新间隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"WebSocket 重连间隔"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[g/1e3," 秒"]})]}),e.jsx(za,{value:[g],onValueChange:w,min:1e3,max:1e4,step:500,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"日志 WebSocket 连接断开后的重连基础间隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"WebSocket 最大重连次数"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[v," 次"]})]}),e.jsx(za,{value:[v],onValueChange:D,min:3,max:30,step:1,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"连接失败后的最大重连尝试次数"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2 pt-2",children:[e.jsxs(N,{variant:"outline",size:"sm",onClick:xe,className:"gap-2",children:[e.jsx(ns,{className:"h-4 w-4"}),"清除日志缓存"]}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",className:"gap-2",children:[e.jsx(ns,{className:"h-4 w-4"}),"清除本地缓存"]})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认清除本地缓存"}),e.jsx(ms,{children:"这将清除所有本地缓存的设置和数据(不包括登录凭证)。 您可能需要重新配置部分偏好设置。确定要继续吗?"})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:be,children:"确认清除"})]})]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(nl,{className:"h-5 w-5"}),"导入/导出设置"]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"导出当前的界面设置以便备份,或从之前导出的文件中恢复设置。"}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(N,{variant:"outline",onClick:ye,disabled:U,className:"gap-2",children:[e.jsx(nl,{className:"h-4 w-4"}),U?"导出中...":"导出设置"]}),e.jsx("input",{ref:E,type:"file",accept:".json",onChange:ve,className:"hidden"}),e.jsxs(N,{variant:"outline",onClick:()=>E.current?.click(),disabled:ee,className:"gap-2",children:[e.jsx(hr,{className:"h-4 w-4"}),ee?"导入中...":"导入设置"]})]}),e.jsx("div",{className:"pt-2 border-t",children:e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",className:"gap-2 text-destructive hover:text-destructive",children:[e.jsx(Wc,{className:"h-4 w-4"}),"重置所有设置为默认值"]})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认重置所有设置"}),e.jsx(ms,{children:"这将把所有界面设置恢复为默认值,包括主题、颜色、动画等偏好设置。 此操作不会影响您的登录状态。确定要继续吗?"})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:pe,children:"确认重置"})]})]})]})})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"配置向导"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsx("div",{className:"space-y-2",children:e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"重新进行初次配置向导,可以帮助您重新设置系统的基础配置。"})}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(N,{variant:"outline",disabled:c,className:"gap-2",children:[e.jsx(Wc,{className:$("h-4 w-4",c&&"animate-spin")}),"重新进行初次配置"]})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认重新配置"}),e.jsx(ms,{children:"这将带您重新进入初次配置向导。您可以重新设置系统的基础配置项。确定要继续吗?"})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:Ne,children:"确认重置"})]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border border-dashed border-yellow-500/50 bg-yellow-500/5 p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(ya,{className:"h-5 w-5 text-yellow-500"}),"开发者工具"]}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsx("div",{className:"space-y-2",children:e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"以下功能仅供开发调试使用,可能会导致页面崩溃或异常。"})}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(N,{variant:"destructive",className:"gap-2",children:[e.jsx(ya,{className:"h-4 w-4"}),"触发测试错误"]})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认触发错误"}),e.jsx(ms,{children:"这将手动触发一个 React 错误,用于测试错误边界组件的显示效果。 页面将显示错误界面,您可以通过刷新页面或点击返回首页来恢复。"})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>x(!0),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认触发"})]})]})]})]})]})]})}function g0(){return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsx("div",{className:"rounded-lg border-2 border-primary/30 bg-gradient-to-r from-primary/5 to-primary/10 p-4 sm:p-6",children:e.jsxs("div",{className:"flex items-start gap-3 sm:gap-4",children:[e.jsx("div",{className:"flex-shrink-0 rounded-lg bg-primary/10 p-2 sm:p-3",children:e.jsx("svg",{className:"h-6 w-6 sm:h-8 sm:w-8 text-primary",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:"text-lg sm:text-xl font-bold text-foreground mb-2",children:"开源项目"}),e.jsx("p",{className:"text-sm sm:text-base text-muted-foreground mb-3",children:"本项目在 GitHub 开源,欢迎 Star ⭐ 支持!"}),e.jsxs("a",{href:"https://github.com/Mai-with-u/MaiBot-Dashboard",target:"_blank",rel:"noopener noreferrer",className:$("inline-flex items-center gap-2 px-4 py-2 rounded-lg","bg-primary text-primary-foreground font-medium text-sm","hover:bg-primary/90 transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"),children:[e.jsx("svg",{className:"h-4 w-4",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})}),"前往 GitHub",e.jsx("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})})]})]})]})}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:["关于 ",Ku]}),e.jsxs("div",{className:"space-y-2 text-xs sm:text-sm text-muted-foreground",children:[e.jsxs("p",{children:["版本: ",Xu]}),e.jsx("p",{children:"麦麦(MaiBot)的现代化 Web 管理界面"})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"作者"}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"MaiBot 核心"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"Mai-with-u"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"WebUI"}),e.jsxs("p",{className:"text-xs sm:text-sm text-muted-foreground",children:["Mai-with-u ",e.jsx("a",{href:"https://github.com/DrSmoothl",target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"@MotricSeven"})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"技术栈"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-xs sm:text-sm text-muted-foreground",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"前端框架"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"React 19.2.0"}),e.jsx("li",{children:"TypeScript 5.7.2"}),e.jsx("li",{children:"Vite 6.0.7"}),e.jsx("li",{children:"TanStack Router 1.94.2"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"UI 组件"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"shadcn/ui"}),e.jsx("li",{children:"Radix UI"}),e.jsx("li",{children:"Tailwind CSS 3.4.17"}),e.jsx("li",{children:"Lucide Icons"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"后端"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"Python 3.12+"}),e.jsx("li",{children:"FastAPI"}),e.jsx("li",{children:"Uvicorn"}),e.jsx("li",{children:"WebSocket"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"构建工具"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"Bun / npm"}),e.jsx("li",{children:"ESLint 9.17.0"}),e.jsx("li",{children:"PostCSS"})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源库感谢"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mb-3",children:"本项目使用了以下优秀的开源库,感谢他们的贡献:"}),e.jsx(es,{className:"h-[300px] sm:h-[400px]",children:e.jsxs("div",{className:"space-y-4 pr-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"UI 框架与组件"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Hs,{name:"React",description:"用户界面构建库",license:"MIT"}),e.jsx(Hs,{name:"shadcn/ui",description:"优雅的 React 组件库",license:"MIT"}),e.jsx(Hs,{name:"Radix UI",description:"无样式的可访问组件库",license:"MIT"}),e.jsx(Hs,{name:"Tailwind CSS",description:"实用优先的 CSS 框架",license:"MIT"}),e.jsx(Hs,{name:"Lucide React",description:"精美的图标库",license:"ISC"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"路由与状态管理"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Hs,{name:"TanStack Router",description:"类型安全的路由库",license:"MIT"}),e.jsx(Hs,{name:"Zustand",description:"轻量级状态管理",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"表单处理"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Hs,{name:"React Hook Form",description:"高性能表单库",license:"MIT"}),e.jsx(Hs,{name:"Zod",description:"TypeScript 优先的 schema 验证",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"工具库"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Hs,{name:"clsx",description:"条件 className 构建工具",license:"MIT"}),e.jsx(Hs,{name:"tailwind-merge",description:"Tailwind 类名合并工具",license:"MIT"}),e.jsx(Hs,{name:"class-variance-authority",description:"组件变体管理",license:"Apache-2.0"}),e.jsx(Hs,{name:"date-fns",description:"现代化日期处理库",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"动画效果"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Hs,{name:"Framer Motion",description:"React 动画库",license:"MIT"}),e.jsx(Hs,{name:"vaul",description:"抽屉组件动画",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"后端框架"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Hs,{name:"FastAPI",description:"现代化 Python Web 框架",license:"MIT"}),e.jsx(Hs,{name:"Uvicorn",description:"ASGI 服务器",license:"BSD-3-Clause"}),e.jsx(Hs,{name:"Pydantic",description:"数据验证库",license:"MIT"}),e.jsx(Hs,{name:"python-multipart",description:"文件上传支持",license:"Apache-2.0"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"开发工具"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Hs,{name:"TypeScript",description:"JavaScript 的超集",license:"Apache-2.0"}),e.jsx(Hs,{name:"Vite",description:"下一代前端构建工具",license:"MIT"}),e.jsx(Hs,{name:"ESLint",description:"JavaScript 代码检查工具",license:"MIT"}),e.jsx(Hs,{name:"PostCSS",description:"CSS 转换工具",license:"MIT"})]})]})]})})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源许可"}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"rounded-lg bg-primary/5 border border-primary/20 p-3 sm:p-4",children:e.jsxs("div",{className:"flex items-start gap-2 sm:gap-3",children:[e.jsx("div",{className:"flex-shrink-0 mt-0.5",children:e.jsx("div",{className:"rounded-md bg-primary/10 px-2 py-1",children:e.jsx("span",{className:"text-xs sm:text-sm font-bold text-primary",children:"GPLv3"})})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm sm:text-base font-semibold text-foreground mb-1",children:"MaiBot WebUI"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目采用 GNU General Public License v3.0 开源许可证。 您可以自由地使用、修改和分发本软件,但必须保持相同的开源许可。"})]})]})}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目依赖的所有开源库均遵循各自的开源许可证(MIT、Apache-2.0、BSD 等)。 感谢所有开源贡献者的无私奉献。"})]})]})]})}function Hs({name:n,description:r,license:c}){return e.jsxs("div",{className:"flex items-start justify-between gap-2 rounded-lg border bg-muted/30 p-2.5 sm:p-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium text-foreground truncate",children:n}),e.jsx("p",{className:"text-muted-foreground text-xs mt-0.5",children:r})]}),e.jsx("span",{className:"inline-flex items-center rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-medium text-primary flex-shrink-0",children:c})]})}function Au({value:n,current:r,onChange:c,label:d,description:h}){const x=r===n;return e.jsxs("button",{onClick:()=>c(n),className:$("relative rounded-lg border-2 p-3 sm:p-4 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",x?"border-primary bg-accent":"border-border"),children:[x&&e.jsx("div",{className:"absolute top-2 right-2 sm:top-3 sm:right-3 h-2 w-2 rounded-full bg-primary"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-sm sm:text-base font-medium",children:d}),e.jsx("div",{className:"text-[10px] sm:text-xs text-muted-foreground",children:h})]}),e.jsxs("div",{className:"mt-2 sm:mt-3 flex gap-1",children:[n==="light"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-200"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-300"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-400"})]}),n==="dark"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-700"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-800"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-900"})]}),n==="system"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-200 to-slate-700"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-300 to-slate-800"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-400 to-slate-900"})]})]})]})}function da({value:n,current:r,onChange:c,label:d,colorClass:h}){const x=r===n;return e.jsxs("button",{onClick:()=>c(n),className:$("relative rounded-lg border-2 p-2 sm:p-3 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",x?"border-primary bg-accent":"border-border"),children:[x&&e.jsx("div",{className:"absolute top-1.5 right-1.5 sm:top-2 sm:right-2 h-1.5 w-1.5 sm:h-2 sm:w-2 rounded-full bg-primary"}),e.jsxs("div",{className:"flex flex-col items-center gap-1.5 sm:gap-2",children:[e.jsx("div",{className:$("h-8 w-8 sm:h-10 sm:w-10 rounded-full",h)}),e.jsx("div",{className:"text-[10px] sm:text-xs font-medium text-center",children:d})]})]})}class j0{grad3;p;perm;constructor(r=0){this.grad3=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],this.p=[];for(let c=0;c<256;c++)this.p[c]=Math.floor(Math.random()*256);this.perm=[];for(let c=0;c<512;c++)this.perm[c]=this.p[c&255]}dot(r,c,d){return r[0]*c+r[1]*d}mix(r,c,d){return(1-d)*r+d*c}fade(r){return r*r*r*(r*(r*6-15)+10)}perlin2(r,c){const d=Math.floor(r)&255,h=Math.floor(c)&255;r-=Math.floor(r),c-=Math.floor(c);const x=this.fade(r),f=this.fade(c),j=this.perm[d]+h,g=this.perm[j],_=this.perm[j+1],v=this.perm[d+1]+h,k=this.perm[v],z=this.perm[v+1];return this.mix(this.mix(this.dot(this.grad3[g%12],r,c),this.dot(this.grad3[k%12],r-1,c),x),this.mix(this.dot(this.grad3[_%12],r,c-1),this.dot(this.grad3[z%12],r-1,c-1),x),f)}}function v0(){const n=u.useRef(null),r=u.useRef(null),c=u.useRef(void 0),d=u.useRef({mouse:{x:-10,y:0,lx:0,ly:0,sx:0,sy:0,v:0,vs:0,a:0,set:!1},lines:[],paths:[],noise:new j0(Math.random()),bounding:null});return u.useEffect(()=>{const h=r.current,x=n.current;if(!h||!x)return;const f=d.current,j=()=>{const K=h.getBoundingClientRect();f.bounding=K,x.style.width=`${K.width}px`,x.style.height=`${K.height}px`},g=()=>{if(!f.bounding)return;const{width:K,height:U}=f.bounding;f.lines=[],f.paths.forEach(te=>te.remove()),f.paths=[];const R=10,ee=32,V=K+200,E=U+30,B=Math.ceil(V/R),X=Math.ceil(E/ee),w=(K-R*B)/2,D=(U-ee*X)/2;for(let te=0;te<=B;te++){const xe=[];for(let ye=0;ye<=X;ye++){const ve={x:w+R*te,y:D+ee*ye,wave:{x:0,y:0},cursor:{x:0,y:0,vx:0,vy:0}};xe.push(ve)}const be=document.createElementNS("http://www.w3.org/2000/svg","path");x.appendChild(be),f.paths.push(be),f.lines.push(xe)}},_=K=>{const{lines:U,mouse:R,noise:ee}=f;U.forEach(V=>{V.forEach(E=>{const B=ee.perlin2((E.x+K*.0125)*.002,(E.y+K*.005)*.0015)*12;E.wave.x=Math.cos(B)*32,E.wave.y=Math.sin(B)*16;const X=E.x-R.sx,w=E.y-R.sy,D=Math.hypot(X,w),te=Math.max(175,R.vs);if(D{const R={x:K.x+K.wave.x+(U?K.cursor.x:0),y:K.y+K.wave.y+(U?K.cursor.y:0)};return R.x=Math.round(R.x*10)/10,R.y=Math.round(R.y*10)/10,R},k=()=>{const{lines:K,paths:U}=f;K.forEach((R,ee)=>{let V=v(R[0],!1),E=`M ${V.x} ${V.y}`;R.forEach((B,X)=>{const w=X===R.length-1;V=v(B,!w),E+=`L ${V.x} ${V.y}`}),U[ee].setAttribute("d",E)})},z=K=>{const{mouse:U}=f;U.sx+=(U.x-U.sx)*.1,U.sy+=(U.y-U.sy)*.1;const R=U.x-U.lx,ee=U.y-U.ly,V=Math.hypot(R,ee);U.v=V,U.vs+=(V-U.vs)*.1,U.vs=Math.min(100,U.vs),U.lx=U.x,U.ly=U.y,U.a=Math.atan2(ee,R),h&&(h.style.setProperty("--x",`${U.sx}px`),h.style.setProperty("--y",`${U.sy}px`)),_(K),k(),c.current=requestAnimationFrame(z)},T=K=>{if(!f.bounding)return;const{mouse:U}=f;U.x=K.pageX-f.bounding.left,U.y=K.pageY-f.bounding.top+window.scrollY,U.set||(U.sx=U.x,U.sy=U.y,U.lx=U.x,U.ly=U.y,U.set=!0)},L=()=>{j(),g()};return j(),g(),window.addEventListener("resize",L),window.addEventListener("mousemove",T),c.current=requestAnimationFrame(z),()=>{window.removeEventListener("resize",L),window.removeEventListener("mousemove",T),c.current&&cancelAnimationFrame(c.current)}},[]),e.jsxs("div",{ref:r,className:"waves-background",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflow:"hidden",pointerEvents:"none"},children:[e.jsx("div",{className:"waves-cursor",style:{position:"absolute",top:0,left:0,width:"0.5rem",height:"0.5rem",background:"hsl(var(--primary) / 0.3)",borderRadius:"50%",transform:"translate3d(calc(var(--x, -0.5rem) - 50%), calc(var(--y, 50%) - 50%), 0)",willChange:"transform",pointerEvents:"none"}}),e.jsx("svg",{ref:n,style:{display:"block",width:"100%",height:"100%"},children:e.jsx("style",{children:` - path { - fill: none; - stroke: hsl(var(--primary) / 0.20); - stroke-width: 1px; - } - `})})]})}function y0(){const n=It();u.useEffect(()=>{localStorage.getItem("access-token")||n({to:"/auth"})},[n])}function Dg(){return!!localStorage.getItem("access-token")}function N0(){const[n,r]=u.useState(""),[c,d]=u.useState(!1),[h,x]=u.useState(""),f=It(),{enableWavesBackground:j,setEnableWavesBackground:g}=Eg(),{theme:_,setTheme:v}=Yu();u.useEffect(()=>{Dg()&&f({to:"/"})},[f]);const z=_==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":_,T=()=>{v(z==="dark"?"light":"dark")},L=async K=>{if(K.preventDefault(),x(""),!n.trim()){x("请输入 Access Token");return}d(!0);try{const U=await fetch("/api/webui/auth/verify",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:n.trim()})}),R=await U.json();if(U.ok&&R.valid){localStorage.setItem("access-token",n.trim());const ee=await fetch("/api/webui/setup/status",{method:"GET",headers:{Authorization:`Bearer ${n.trim()}`}}),V=await ee.json();ee.ok&&V.is_first_setup?f({to:"/setup"}):f({to:"/"})}else x(R.message||"Token 验证失败,请检查后重试")}catch(U){console.error("Token 验证错误:",U),x("连接服务器失败,请检查网络连接")}finally{d(!1)}};return e.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[j&&e.jsx(v0,{}),e.jsxs(Be,{className:"relative z-10 w-full max-w-md shadow-2xl backdrop-blur-xl bg-card/80 border-border/50",children:[e.jsx("button",{onClick:T,className:"absolute right-4 top-4 rounded-lg p-2 hover:bg-accent transition-colors z-10 text-foreground",title:z==="dark"?"切换到浅色模式":"切换到深色模式",children:z==="dark"?e.jsx(Ou,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"}):e.jsx(Ru,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"})}),e.jsxs(gs,{className:"space-y-4 text-center",children:[e.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-2xl bg-primary/10",children:e.jsx($f,{className:"h-8 w-8 text-primary",strokeWidth:2,fill:"none"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(js,{className:"text-2xl font-bold",children:"欢迎使用 MaiBot"}),e.jsx(Zs,{className:"text-base",children:"请输入您的 Access Token 以继续访问系统"})]})]}),e.jsx(bs,{children:e.jsxs("form",{onSubmit:L,className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"token",className:"text-sm font-medium",children:"Access Token"}),e.jsxs("div",{className:"relative",children:[e.jsx(gg,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground",strokeWidth:2,fill:"none"}),e.jsx(ce,{id:"token",type:"password",placeholder:"请输入您的 Access Token",value:n,onChange:K=>r(K.target.value),className:$("pl-10",h&&"border-red-500 focus-visible:ring-red-500"),disabled:c,autoFocus:!0,autoComplete:"off"})]})]}),h&&e.jsxs("div",{className:"flex items-center gap-2 rounded-md bg-red-50 p-3 text-sm text-red-600 dark:bg-red-950/50 dark:text-red-400",children:[e.jsx(Aa,{className:"h-4 w-4 flex-shrink-0",strokeWidth:2,fill:"none"}),e.jsx("span",{children:h})]}),e.jsx(N,{type:"submit",className:"w-full",disabled:c,children:c?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent"}),"验证中..."]}):"验证并进入"}),e.jsxs(Os,{children:[e.jsx(ni,{asChild:!0,children:e.jsxs("button",{className:"w-full text-center text-sm text-primary hover:text-primary/80 transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[e.jsx(ro,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我没有 Token,我该去哪里获得 Token?"]})}),e.jsxs(Es,{className:"sm:max-w-md",children:[e.jsxs(zs,{children:[e.jsxs(Ms,{className:"flex items-center gap-2",children:[e.jsx($f,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"如何获取 Access Token"]}),e.jsx($s,{children:"Access Token 是访问 MaiBot WebUI 的唯一凭证,请按以下方式获取"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(kN,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx("h4",{className:"font-semibold text-sm",children:"方式一:查看启动日志"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"在 MaiBot 启动时,控制台会显示 WebUI Access Token。"}),e.jsxs("div",{className:"rounded bg-background p-2 font-mono text-xs",children:[e.jsx("p",{className:"text-muted-foreground",children:"🔑 WebUI Access Token: abc123..."}),e.jsx("p",{className:"text-muted-foreground",children:"💡 请使用此 Token 登录 WebUI"})]})]})]})}),e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Ma,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx("h4",{className:"font-semibold text-sm",children:"方式二:查看配置文件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Token 保存在项目根目录的配置文件中:"}),e.jsx("div",{className:"rounded bg-background p-2 font-mono text-xs break-all",children:e.jsx("code",{className:"text-primary",children:"data/webui.json"})}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["打开此文件,复制 ",e.jsx("code",{className:"px-1 py-0.5 bg-background rounded",children:"access_token"})," 字段的值"]})]})]})}),e.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Aa,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[e.jsx("p",{className:"font-semibold",children:"安全提示"}),e.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[e.jsx("li",{children:"请妥善保管您的 Token,不要泄露给他人"}),e.jsx("li",{children:"如需重置 Token,请在登录后前往系统设置"})]})]})]})})]})]})]}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs("button",{className:"w-full text-center text-sm text-muted-foreground hover:text-foreground transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[e.jsx(ln,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我觉得这个界面很卡怎么办?"]})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsxs(us,{className:"flex items-center gap-2",children:[e.jsx(ln,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"关闭背景动画"]}),e.jsx(ms,{children:"背景动画可能会在低性能设备上造成卡顿。关闭动画可以显著提升界面流畅度。"})]}),e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭动画后,背景将变为纯色,但不影响任何功能的使用。您可以随时在系统设置中重新开启动画。"})}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>g(!1),children:"关闭动画"})]})]})]})]})})]}),e.jsx("div",{className:"absolute bottom-4 left-0 right-0 text-center text-xs text-muted-foreground",children:e.jsx("p",{children:t0})})]})}const Us=u.forwardRef(({className:n,...r},c)=>e.jsx("textarea",{className:$("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",n),ref:c,...r}));Us.displayName="Textarea";const jr=u.forwardRef(({className:n,orientation:r="horizontal",decorative:c=!0,...d},h)=>e.jsx(Op,{ref:h,decorative:c,orientation:r,className:$("shrink-0 bg-border",r==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",n),...d}));jr.displayName=Op.displayName;function b0({config:n,onChange:r}){const c=h=>{h.trim()&&!n.alias_names.includes(h.trim())&&r({...n,alias_names:[...n.alias_names,h.trim()]})},d=h=>{r({...n,alias_names:n.alias_names.filter((x,f)=>f!==h)})};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"qq_account",children:"QQ账号 *"}),e.jsx(ce,{id:"qq_account",type:"number",placeholder:"请输入机器人的QQ账号",value:n.qq_account||"",onChange:h=>r({...n,qq_account:Number(h.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人登录使用的QQ账号"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"nickname",children:"昵称 *"}),e.jsx(ce,{id:"nickname",placeholder:"请输入机器人的昵称",value:n.nickname,onChange:h=>r({...n,nickname:h.target.value})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的主要称呼名称"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{children:"别名"}),e.jsx("div",{className:"flex flex-wrap gap-2 mb-2",children:n.alias_names.map((h,x)=>e.jsxs(Xe,{variant:"secondary",className:"gap-1",children:[h,e.jsx("button",{type:"button",onClick:()=>d(x),className:"ml-1 hover:text-destructive",children:e.jsx(li,{className:"h-3 w-3"})})]},x))}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{id:"alias_input",placeholder:"输入别名后按回车添加",onKeyPress:h=>{h.key==="Enter"&&(c(h.target.value),h.target.value="")}}),e.jsx(N,{type:"button",variant:"outline",onClick:()=>{const h=document.getElementById("alias_input");h&&(c(h.value),h.value="")},children:"添加"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的其他称呼,可以添加多个"})]})]})}function w0({config:n,onChange:r}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"personality",children:"人格特征 *"}),e.jsx(Us,{id:"personality",placeholder:"描述机器人的人格特质和身份特征(建议120字以内)",value:n.personality,onChange:c=>r({...n,personality:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:是一个女大学生,现在在读大二,会刷贴吧"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"reply_style",children:"表达风格 *"}),e.jsx(Us,{id:"reply_style",placeholder:"描述机器人说话的表达风格、表达习惯",value:n.reply_style,onChange:c=>r({...n,reply_style:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:回复平淡一些,简短一些,说中文,参考贴吧、知乎和微博的回复风格"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"interest",children:"兴趣 *"}),e.jsx(Us,{id:"interest",placeholder:"描述机器人感兴趣的话题",value:n.interest,onChange:c=>r({...n,interest:c.target.value}),rows:2}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"会影响机器人对什么话题进行回复"})]}),e.jsx(jr,{}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"plan_style",children:"群聊说话规则 *"}),e.jsx(Us,{id:"plan_style",placeholder:"机器人在群聊中的行为风格和规则",value:n.plan_style,onChange:c=>r({...n,plan_style:c.target.value}),rows:4}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在群聊中如何行动,例如回复频率、条件等"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"private_plan_style",children:"私聊说话规则 *"}),e.jsx(Us,{id:"private_plan_style",placeholder:"机器人在私聊中的行为风格和规则",value:n.private_plan_style,onChange:c=>r({...n,private_plan_style:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在私聊中的行为方式"})]})]})}function _0({config:n,onChange:r}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{htmlFor:"emoji_chance",children:"表情包激活概率"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[(n.emoji_chance*100).toFixed(0),"%"]})]}),e.jsx(ce,{id:"emoji_chance",type:"range",min:"0",max:"1",step:"0.1",value:n.emoji_chance,onChange:c=>r({...n,emoji_chance:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人发送表情包的概率"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"max_reg_num",children:"最大表情包数量"}),e.jsx(ce,{id:"max_reg_num",type:"number",min:"1",max:"200",value:n.max_reg_num,onChange:c=>r({...n,max_reg_num:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人最多保存的表情包数量"})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"do_replace",children:"达到最大数量时替换"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"开启后会删除旧表情包,关闭则不再收集新表情包"})]}),e.jsx(qe,{id:"do_replace",checked:n.do_replace,onCheckedChange:c=>r({...n,do_replace:c})})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),e.jsx(ce,{id:"check_interval",type:"number",min:"1",max:"120",value:n.check_interval,onChange:c=>r({...n,check_interval:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包注册、破损、删除的时间间隔"})]}),e.jsx(jr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"steal_emoji",children:"偷取表情包"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人将一些表情包据为己有"})]}),e.jsx(qe,{id:"steal_emoji",checked:n.steal_emoji,onCheckedChange:c=>r({...n,steal_emoji:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"content_filtration",children:"启用表情包过滤"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"只保存符合要求的表情包"})]}),e.jsx(qe,{id:"content_filtration",checked:n.content_filtration,onCheckedChange:c=>r({...n,content_filtration:c})})]}),n.content_filtration&&e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"filtration_prompt",children:"过滤要求"}),e.jsx(ce,{id:"filtration_prompt",placeholder:"例如:符合公序良俗",value:n.filtration_prompt,onChange:c=>r({...n,filtration_prompt:c.target.value})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"描述表情包应该符合的要求"})]})]})}function S0({config:n,onChange:r}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"enable_tool",children:"启用工具系统"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人使用各种工具增强功能"})]}),e.jsx(qe,{id:"enable_tool",checked:n.enable_tool,onCheckedChange:c=>r({...n,enable_tool:c})})]}),e.jsx(jr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"enable_mood",children:"启用情绪系统"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"让机器人具有情绪变化能力"})]}),e.jsx(qe,{id:"enable_mood",checked:n.enable_mood,onCheckedChange:c=>r({...n,enable_mood:c})})]}),n.enable_mood&&e.jsxs("div",{className:"ml-6 space-y-6 border-l-2 border-primary/20 pl-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"mood_update_threshold",children:"情绪更新阈值"}),e.jsx(ce,{id:"mood_update_threshold",type:"number",min:"0.1",max:"10",step:"0.1",value:n.mood_update_threshold||1,onChange:c=>r({...n,mood_update_threshold:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"值越高,情绪更新越慢"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"emotion_style",children:"情感特征"}),e.jsx(Us,{id:"emotion_style",placeholder:"描述情绪的变化情况,例如:情绪较为稳定,但遭遇特定事件时起伏较大",value:n.emotion_style||"",onChange:c=>r({...n,emotion_style:c.target.value}),rows:2}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"影响机器人的情绪变化方式"})]})]}),e.jsx(jr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"all_global",children:"启用全局黑话模式"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人学习和使用群组黑话"})]}),e.jsx(qe,{id:"all_global",checked:n.all_global,onCheckedChange:c=>r({...n,all_global:c})})]})]})}function C0({config:n,onChange:r}){const[c,d]=u.useState(!1);return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"mt-0.5",children:e.jsx("svg",{className:"h-5 w-5 text-blue-600 dark:text-blue-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),e.jsxs("div",{className:"flex-1 text-sm",children:[e.jsx("p",{className:"font-medium text-blue-900 dark:text-blue-100 mb-1",children:"关于硅基流动 (SiliconFlow)"}),e.jsx("p",{className:"text-blue-700 dark:text-blue-300 mb-2",children:"硅基流动提供了完整的模型覆盖,包括 DeepSeek V3、Qwen、视觉模型、语音识别和嵌入模型。 只需一个 API Key 即可使用麦麦的所有功能!"}),e.jsxs("a",{href:"https://cloud.siliconflow.cn",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-blue-600 dark:text-blue-400 hover:underline font-medium",children:["前往硅基流动获取 API Key",e.jsx(dr,{className:"h-3 w-3"})]})]})]})}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"siliconflow_api_key",children:"SiliconFlow API Key *"}),e.jsxs("div",{className:"relative",children:[e.jsx(ce,{id:"siliconflow_api_key",type:c?"text":"password",placeholder:"sk-...",value:n.api_key,onChange:h=>r({api_key:h.target.value}),className:"font-mono pr-10"}),e.jsx(N,{type:"button",variant:"ghost",size:"sm",className:"absolute right-0 top-0 h-full px-3 hover:bg-transparent",onClick:()=>d(!c),children:c?e.jsx(mr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Zt,{className:"h-4 w-4 text-muted-foreground"})})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"请输入您的硅基流动 API 密钥。获取后,麦麦将自动配置所有必需的模型。"})]}),e.jsxs("div",{className:"rounded-lg bg-muted/50 p-4 text-sm space-y-2",children:[e.jsx("p",{className:"font-medium",children:"将自动配置以下模型:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 text-muted-foreground ml-2",children:[e.jsx("li",{children:"DeepSeek V3 - 主要对话和工具模型"}),e.jsx("li",{children:"Qwen3 30B - 高频小任务和工具调用"}),e.jsx("li",{children:"Qwen3 VL 30B - 图像识别"}),e.jsx("li",{children:"SenseVoice - 语音识别"}),e.jsx("li",{children:"BGE-M3 - 文本嵌入"}),e.jsx("li",{children:"知识库相关模型 (LPMM)"})]})]}),e.jsx("div",{className:"rounded-lg border border-amber-200 dark:border-amber-800 bg-amber-50 dark:bg-amber-950/30 p-4",children:e.jsxs("p",{className:"text-sm text-amber-900 dark:text-amber-100",children:[e.jsx("span",{className:"font-medium",children:"💡 提示:"}),'完成向导后,您可以在"系统设置 → 模型配置"中添加更多 API 提供商和模型。']})})]})}async function ke(n,r){const c=await fetch(n,r);if(c.status===401)throw localStorage.removeItem("access-token"),window.location.href="/auth",new Error("认证失败,请重新登录");return c}function ze(){return{"Content-Type":"application/json",Authorization:`Bearer ${localStorage.getItem("access-token")}`}}async function k0(){const n=await ke("/api/webui/config/bot",{method:"GET",headers:ze()});if(!n.ok)throw new Error("读取Bot配置失败");const c=(await n.json()).config.bot||{};return{qq_account:c.qq_account||0,nickname:c.nickname||"",alias_names:c.alias_names||[]}}async function T0(){const n=await ke("/api/webui/config/bot",{method:"GET",headers:ze()});if(!n.ok)throw new Error("读取人格配置失败");const c=(await n.json()).config.personality||{};return{personality:c.personality||"",reply_style:c.reply_style||"",interest:c.interest||"",plan_style:c.plan_style||"",private_plan_style:c.private_plan_style||""}}async function E0(){const n=await ke("/api/webui/config/bot",{method:"GET",headers:ze()});if(!n.ok)throw new Error("读取表情包配置失败");const c=(await n.json()).config.emoji||{};return{emoji_chance:c.emoji_chance??.4,max_reg_num:c.max_reg_num??40,do_replace:c.do_replace??!0,check_interval:c.check_interval??10,steal_emoji:c.steal_emoji??!0,content_filtration:c.content_filtration??!1,filtration_prompt:c.filtration_prompt||""}}async function z0(){const n=await ke("/api/webui/config/bot",{method:"GET",headers:ze()});if(!n.ok)throw new Error("读取其他配置失败");const c=(await n.json()).config,d=c.tool||{},h=c.mood||{},x=c.jargon||{};return{enable_tool:d.enable_tool??!0,enable_mood:h.enable_mood??!1,mood_update_threshold:h.mood_update_threshold,emotion_style:h.emotion_style,all_global:x.all_global??!0}}async function M0(){const n=await ke("/api/webui/config/model",{method:"GET",headers:ze()});if(!n.ok)throw new Error("读取模型配置失败");return{api_key:((await n.json()).config.api_providers||[]).find(x=>x.name==="SiliconFlow")?.api_key||""}}async function A0(n){const r=await ke("/api/webui/config/bot/section/bot",{method:"POST",headers:ze(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"保存Bot基础配置失败")}return await r.json()}async function D0(n){const r=await ke("/api/webui/config/bot/section/personality",{method:"POST",headers:ze(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"保存人格配置失败")}return await r.json()}async function O0(n){const r=await ke("/api/webui/config/bot/section/emoji",{method:"POST",headers:ze(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"保存表情包配置失败")}return await r.json()}async function R0(n){const r=[];r.push(ke("/api/webui/config/bot/section/tool",{method:"POST",headers:ze(),body:JSON.stringify({enable_tool:n.enable_tool})})),r.push(ke("/api/webui/config/bot/section/jargon",{method:"POST",headers:ze(),body:JSON.stringify({all_global:n.all_global})}));const c={enable_mood:n.enable_mood};n.enable_mood&&(c.mood_update_threshold=n.mood_update_threshold||1,c.emotion_style=n.emotion_style||""),r.push(ke("/api/webui/config/bot/section/mood",{method:"POST",headers:ze(),body:JSON.stringify(c)}));const d=await Promise.all(r);for(const h of d)if(!h.ok){const x=await h.json();throw new Error(x.detail||"保存其他配置失败")}return{success:!0}}async function L0(n){const r=await ke("/api/webui/config/model",{method:"GET",headers:ze()});if(!r.ok)throw new Error("读取模型配置失败");const d=(await r.json()).config,h=d.api_providers||[],x=h.findIndex(g=>g.name==="SiliconFlow");x>=0?h[x]={...h[x],api_key:n.api_key}:h.push({name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",api_key:n.api_key,client_type:"openai",max_retry:3,timeout:120,retry_interval:5});const f={...d,api_providers:h},j=await ke("/api/webui/config/model",{method:"POST",headers:ze(),body:JSON.stringify(f)});if(!j.ok){const g=await j.json();throw new Error(g.detail||"保存模型配置失败")}return await j.json()}async function np(){const n=localStorage.getItem("access-token"),r=await ke("/api/webui/setup/complete",{method:"POST",headers:{Authorization:`Bearer ${n}`}});if(!r.ok){const c=await r.json();throw new Error(c.message||"标记配置完成失败")}return await r.json()}async function co(){const n=await ke("/api/webui/system/restart",{method:"POST",headers:ze()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"重启失败")}return await n.json()}async function U0(){const n=await ke("/api/webui/system/status",{method:"GET",headers:ze()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取状态失败")}return await n.json()}function B0(){const n=It(),{toast:r}=Bs(),[c,d]=u.useState(0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[g,_]=u.useState(!0),[v,k]=u.useState({qq_account:0,nickname:"",alias_names:[]}),[z,T]=u.useState({personality:"是一个女大学生,现在在读大二,会刷贴吧。",reply_style:"请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景。可以参考贴吧,知乎和微博的回复风格。",interest:"对技术相关话题,游戏和动漫相关话题感兴趣,也对日常话题感兴趣,不喜欢太过沉重严肃的话题",plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 -2.如果相同的内容已经被执行,请不要重复执行 -3.请控制你的发言频率,不要太过频繁的发言 -4.如果有人对你感到厌烦,请减少回复 -5.如果有人对你进行攻击,或者情绪激动,请你以合适的方法应对`,private_plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 -2.如果相同的内容已经被执行,请不要重复执行 -3.某句话如果已经被回复过,不要重复回复`}),[L,K]=u.useState({emoji_chance:.4,max_reg_num:40,do_replace:!0,check_interval:10,steal_emoji:!0,content_filtration:!1,filtration_prompt:"符合公序良俗"}),[U,R]=u.useState({enable_tool:!0,enable_mood:!1,mood_update_threshold:1,emotion_style:"情绪较为稳定,但遇遇特定事件的时候起伏较大",all_global:!0}),[ee,V]=u.useState({api_key:""}),[E,B]=u.useState(!1),[X,w]=u.useState(""),D=[{id:"bot-basic",title:"Bot基础",description:"配置机器人的基本信息",icon:ir},{id:"personality",title:"人格配置",description:"定义机器人的性格和说话风格",icon:to},{id:"emoji",title:"表情包",description:"配置表情包相关设置",icon:Qu},{id:"other",title:"其他设置",description:"工具、情绪系统等配置",icon:Rl},{id:"siliconflow",title:"API配置",description:"配置硅基流动API密钥",icon:gg}],te=(c+1)/D.length*100;u.useEffect(()=>{(async()=>{try{_(!0);const[q,H,ne,S,me]=await Promise.all([k0(),T0(),E0(),z0(),M0()]);k(q),T(H),K(ne),R(S),V(me)}catch(q){r({title:"加载配置失败",description:q instanceof Error?q.message:"无法加载现有配置,将使用默认值",variant:"destructive"})}finally{_(!1)}})()},[r]);const xe=async()=>{j(!0);try{switch(c){case 0:await A0(v);break;case 1:await D0(z);break;case 2:await O0(L);break;case 3:await R0(U);break;case 4:await L0(ee);break}return r({title:"保存成功",description:`${D[c].title}配置已保存`}),!0}catch(y){return r({title:"保存失败",description:y instanceof Error?y.message:"未知错误",variant:"destructive"}),!1}finally{j(!1)}},be=async()=>{await xe()&&c{c>0&&d(c-1)},ve=async()=>{x(!0),B(!0);try{if(w("正在保存API配置..."),!await xe()){x(!1),B(!1);return}w("正在完成初始化..."),await np(),w("正在重启麦麦..."),await co(),r({title:"配置完成",description:"麦麦正在重启以应用新配置..."}),w("等待麦麦重启完成...");const q=60;let H=0,ne=!1;for(;HsetTimeout(S,1e3));try{(await U0()).running&&(ne=!0,w("重启成功!正在跳转..."))}catch{H++}}if(!ne)throw new Error("重启超时,请手动检查麦麦状态");setTimeout(()=>{n({to:"/"})},1e3)}catch(y){B(!1),r({title:"配置失败",description:y instanceof Error?y.message:"未知错误",variant:"destructive"})}finally{x(!1)}},pe=async()=>{try{await np(),n({to:"/"})}catch(y){r({title:"跳过失败",description:y instanceof Error?y.message:"未知错误",variant:"destructive"})}},Ne=()=>{switch(c){case 0:return e.jsx(b0,{config:v,onChange:k});case 1:return e.jsx(w0,{config:z,onChange:T});case 2:return e.jsx(_0,{config:L,onChange:K});case 3:return e.jsx(S0,{config:U,onChange:R});case 4:return e.jsx(C0,{config:ee,onChange:V});default:return null}};return e.jsxs("div",{className:"relative flex min-h-screen flex-col items-center justify-center overflow-hidden bg-gradient-to-br from-primary/5 via-background to-secondary/5 p-4 md:p-6",children:[E&&e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm",children:e.jsxs("div",{className:"mx-auto flex max-w-md flex-col items-center space-y-6 rounded-lg border bg-card p-8 text-center shadow-lg",children:[e.jsx("div",{className:"flex h-20 w-20 items-center justify-center rounded-full bg-primary/10",children:e.jsx(vt,{className:"h-10 w-10 animate-spin text-primary"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),e.jsx("p",{className:"text-muted-foreground",children:X})]}),e.jsx("div",{className:"w-full",children:e.jsx("div",{className:"h-2 w-full overflow-hidden rounded-full bg-secondary",children:e.jsx("div",{className:"h-full w-full animate-pulse bg-primary",style:{animation:"pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite"}})})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"请稍候,这可能需要一分钟..."})]})}),e.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[e.jsx("div",{className:"absolute left-1/4 top-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-primary/5 blur-3xl"}),e.jsx("div",{className:"absolute right-1/4 bottom-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-secondary/5 blur-3xl"})]}),g?e.jsxs("div",{className:"relative z-10 text-center",children:[e.jsx("div",{className:"mx-auto mb-4 flex h-16 w-16 items-center justify-center",children:e.jsx("div",{className:"h-12 w-12 animate-spin rounded-full border-4 border-primary border-t-transparent"})}),e.jsx("p",{className:"text-lg font-medium",children:"加载配置中..."}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"正在读取现有配置"})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"relative z-10 w-full max-w-4xl",children:[e.jsxs("div",{className:"mb-6 md:mb-8 text-center",children:[e.jsx("div",{className:"mx-auto mb-4 flex h-12 w-12 md:h-16 md:w-16 items-center justify-center rounded-2xl bg-primary/10",children:e.jsx(TN,{className:"h-6 w-6 md:h-8 md:w-8 text-primary",strokeWidth:2,fill:"none"})}),e.jsx("h1",{className:"mb-2 text-2xl md:text-3xl font-bold",children:"首次配置向导"}),e.jsxs("p",{className:"text-sm md:text-base text-muted-foreground",children:["让我们一起完成 ",Ku," 的初始配置"]})]}),e.jsxs("div",{className:"mb-6 md:mb-8",children:[e.jsxs("div",{className:"mb-2 flex items-center justify-between text-xs md:text-sm",children:[e.jsxs("span",{className:"text-muted-foreground",children:["步骤 ",c+1," / ",D.length]}),e.jsxs("span",{className:"font-medium text-primary",children:[Math.round(te),"%"]})]}),e.jsx(Sr,{value:te,className:"h-2"})]}),e.jsx("div",{className:"mb-6 md:mb-8 flex justify-between",children:D.map((y,q)=>{const H=y.icon;return e.jsxs("div",{className:$("flex flex-1 flex-col items-center gap-1 md:gap-2",qn({to:"/"}),className:"gap-2 w-full sm:w-auto",children:[e.jsx(xr,{className:"h-4 w-4"}),"返回首页"]}),e.jsxs(N,{size:"lg",variant:"outline",onClick:()=>window.history.back(),className:"gap-2 w-full sm:w-auto",children:[e.jsx(ti,{className:"h-4 w-4"}),"返回上一页"]})]}),e.jsx("div",{className:"mt-12 pt-8 border-t border-border",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:"如果您认为这是一个错误,请联系系统管理员"})})]})})}const Qe=hN,$e=xN,Ge=u.forwardRef(({className:n,children:r,...c},d)=>e.jsxs(eg,{ref:d,className:$("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",n),...c,children:[r,e.jsx(cN,{asChild:!0,children:e.jsx(Ll,{className:"h-4 w-4 opacity-50"})})]}));Ge.displayName=eg.displayName;const Rg=u.forwardRef(({className:n,...r},c)=>e.jsx(sg,{ref:c,className:$("flex cursor-default items-center justify-center py-1",n),...r,children:e.jsx(fr,{className:"h-4 w-4"})}));Rg.displayName=sg.displayName;const Lg=u.forwardRef(({className:n,...r},c)=>e.jsx(tg,{ref:c,className:$("flex cursor-default items-center justify-center py-1",n),...r,children:e.jsx(Ll,{className:"h-4 w-4"})}));Lg.displayName=tg.displayName;const Ve=u.forwardRef(({className:n,children:r,position:c="popper",...d},h)=>e.jsx(oN,{children:e.jsxs(ag,{ref:h,className:$("relative z-[100] max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-hidden rounded-md border border-border bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",c==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",n),position:c,...d,children:[e.jsx(Rg,{}),e.jsx(dN,{className:$("p-1",c==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:r}),e.jsx(Lg,{})]})}));Ve.displayName=ag.displayName;const H0=u.forwardRef(({className:n,...r},c)=>e.jsx(lg,{ref:c,className:$("px-2 py-1.5 text-sm font-semibold",n),...r}));H0.displayName=lg.displayName;const ue=u.forwardRef(({className:n,children:r,...c},d)=>e.jsxs(ng,{ref:d,className:$("relative flex w-full cursor-default select-none items-center rounded-sm py-2 pl-2 pr-8 text-sm outline-none bg-white dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800 focus:bg-gray-100 dark:focus:bg-gray-800 data-[disabled]:pointer-events-none data-[disabled]:opacity-50",n),...c,children:[e.jsx("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(uN,{children:e.jsx(ha,{className:"h-4 w-4"})})}),e.jsx(mN,{children:r})]}));ue.displayName=ng.displayName;const q0=u.forwardRef(({className:n,...r},c)=>e.jsx(ig,{ref:c,className:$("-mx-1 my-1 h-px bg-muted",n),...r}));q0.displayName=ig.displayName;const Da=Gy,Oa=Vy,Na=u.forwardRef(({className:n,align:r="center",sideOffset:c=4,...d},h)=>e.jsx(qy,{children:e.jsx(Rp,{ref:h,align:r,sideOffset:c,className:$("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]",n),...d})}));Na.displayName=Rp.displayName;const Ul="/api/webui/config";async function ip(){const r=await(await ke(`${Ul}/bot`)).json();if(!r.success)throw new Error("获取配置数据失败");return r.config}async function ei(){const r=await(await ke(`${Ul}/model`)).json();if(!r.success)throw new Error("获取模型配置数据失败");return r.config}async function rp(n){const c=await(await ke(`${Ul}/bot`,{method:"POST",headers:ze(),body:JSON.stringify(n)})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function G0(){const r=await(await ke(`${Ul}/bot/raw`)).json();if(!r.success)throw new Error("获取配置源代码失败");return r.content}async function V0(n){const c=await(await ke(`${Ul}/bot/raw`,{method:"POST",headers:ze(),body:JSON.stringify({raw_content:n})})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function io(n){const c=await(await ke(`${Ul}/model`,{method:"POST",headers:ze(),body:JSON.stringify(n)})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function F0(n,r){const d=await(await ke(`${Ul}/bot/section/${n}`,{method:"POST",headers:ze(),body:JSON.stringify(r)})).json();if(!d.success)throw new Error(d.message||`保存配置节 ${n} 失败`)}async function qu(n,r){const d=await(await ke(`${Ul}/model/section/${n}`,{method:"POST",headers:ze(),body:JSON.stringify(r)})).json();if(!d.success)throw new Error(d.message||`保存配置节 ${n} 失败`)}async function Q0(n,r="openai",c="/models"){const d=new URLSearchParams({provider_name:n,parser:r,endpoint:c}),h=await ke(`/api/webui/models/list?${d}`);if(!h.ok){const f=await h.json().catch(()=>({}));throw new Error(f.detail||`获取模型列表失败 (${h.status})`)}const x=await h.json();if(!x.success)throw new Error("获取模型列表失败");return x.models}async function $0(n){const r=new URLSearchParams({provider_name:n}),c=await ke(`/api/webui/models/test-connection-by-name?${r}`,{method:"POST"});if(!c.ok){const d=await c.json().catch(()=>({}));throw new Error(d.detail||`测试连接失败 (${c.status})`)}return await c.json()}const Y0=ai("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"}}),ua=u.forwardRef(({className:n,variant:r,...c},d)=>e.jsx("div",{ref:d,role:"alert",className:$(Y0({variant:r}),n),...c}));ua.displayName="Alert";const X0=u.forwardRef(({className:n,...r},c)=>e.jsx("h5",{ref:c,className:$("mb-1 font-medium leading-none tracking-tight",n),...r}));X0.displayName="AlertTitle";const ma=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:$("text-sm [&_p]:leading-relaxed",n),...r}));ma.displayName="AlertDescription";function Iu({onRestartComplete:n,onRestartFailed:r}){const[c,d]=u.useState(0),[h,x]=u.useState("restarting"),[f,j]=u.useState(0),[g,_]=u.useState(0);u.useEffect(()=>{const z=setInterval(()=>{d(K=>K>=90?K:K+1)},200),T=setInterval(()=>{j(K=>K+1)},1e3),L=setTimeout(()=>{x("checking"),v()},3e3);return()=>{clearInterval(z),clearInterval(T),clearTimeout(L)}},[]);const v=()=>{const T=async()=>{try{if(_(K=>K+1),(await fetch("/api/webui/system/status",{method:"GET",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(3e3)})).ok)d(100),x("success"),setTimeout(()=>{n?.()},1500);else throw new Error("Status check failed")}catch{g<60?setTimeout(T,2e3):(x("failed"),r?.())}};T()},k=z=>{const T=Math.floor(z/60),L=z%60;return`${T}:${L.toString().padStart(2,"0")}`};return e.jsx("div",{className:"fixed inset-0 bg-background/95 backdrop-blur-sm z-50 flex items-center justify-center",children:e.jsxs("div",{className:"max-w-md w-full mx-4 space-y-8",children:[e.jsxs("div",{className:"flex flex-col items-center space-y-4",children:[h==="restarting"&&e.jsxs(e.Fragment,{children:[e.jsx(vt,{className:"h-16 w-16 text-primary animate-spin"}),e.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"请稍候,麦麦正在重启中..."})]}),h==="checking"&&e.jsxs(e.Fragment,{children:[e.jsx(vt,{className:"h-16 w-16 text-primary animate-spin"}),e.jsx("h2",{className:"text-2xl font-bold",children:"检查服务状态"}),e.jsxs("p",{className:"text-muted-foreground text-center",children:["等待服务恢复... (尝试 ",g,"/60)"]})]}),h==="success"&&e.jsxs(e.Fragment,{children:[e.jsx(xa,{className:"h-16 w-16 text-green-500"}),e.jsx("h2",{className:"text-2xl font-bold",children:"重启成功"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"正在跳转到登录页面..."})]}),h==="failed"&&e.jsxs(e.Fragment,{children:[e.jsx(Aa,{className:"h-16 w-16 text-destructive"}),e.jsx("h2",{className:"text-2xl font-bold",children:"重启超时"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"服务未能在预期时间内恢复,请手动检查或刷新页面"})]})]}),h!=="failed"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(Sr,{value:c,className:"h-2"}),e.jsxs("div",{className:"flex justify-between text-sm text-muted-foreground",children:[e.jsxs("span",{children:[c,"%"]}),e.jsxs("span",{children:["已用时: ",k(f)]})]})]}),e.jsx("div",{className:"bg-muted/50 rounded-lg p-4 space-y-2",children:e.jsxs("p",{className:"text-sm text-muted-foreground",children:[h==="restarting"&&"🔄 配置已保存,正在重启主程序...",h==="checking"&&"⏳ 正在等待服务恢复,请勿关闭页面...",h==="success"&&"✅ 配置已生效,服务运行正常",h==="failed"&&"⚠️ 如果长时间无响应,请尝试手动重启"]})}),e.jsx("div",{className:"bg-yellow-500/10 border border-yellow-500/50 rounded-lg p-4",children:e.jsxs("p",{className:"text-sm text-yellow-900 dark:text-yellow-100",children:[e.jsx("strong",{children:"⚠️ 重要提示:"})," 由于技术原因,使用重启功能后,将无法再使用 ",e.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。如需结束程序,请使用脚本目录下的进程管理脚本。"]})}),h==="failed"&&e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{onClick:()=>window.location.reload(),className:"flex-1 px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary/90",children:"刷新页面"}),e.jsx("button",{onClick:()=>{x("checking"),_(0),v()},className:"flex-1 px-4 py-2 bg-secondary text-secondary-foreground rounded-md hover:bg-secondary/90",children:"重试检测"})]})]})})}const K0={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,r){let c;if(!r.inString&&(c=n.match(/^('''|"""|'|")/))&&(r.stringType=c[0],r.inString=!0),n.sol()&&!r.inString&&r.inArray===0&&(r.lhs=!0),r.inString){for(;r.inString;)if(n.match(r.stringType))r.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return r.lhs?"property":"string"}else{if(r.inArray&&n.peek()==="]")return n.next(),r.inArray--,"bracket";if(r.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(r.lhs&&n.eatWhile(function(d){return d!="="&&d!=" "}))return"property";if(r.lhs&&n.peek()==="=")return n.next(),r.lhs=!1,null;if(!r.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!r.lhs&&(n.match("true")||n.match("false")))return"atom";if(!r.lhs&&n.peek()==="[")return r.inArray++,n.next(),"bracket";if(!r.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}},Z0={python:[sb()],json:[tb(),ab()],toml:[eb.define(K0)],text:[]};function I0({value:n,onChange:r,language:c="text",readOnly:d=!1,height:h="400px",minHeight:x,maxHeight:f,placeholder:j,theme:g="dark",className:_=""}){const[v,k]=u.useState(!1);if(u.useEffect(()=>{k(!0)},[]),!v)return e.jsx("div",{className:`rounded-md border bg-muted animate-pulse ${_}`,style:{height:h,minHeight:x,maxHeight:f}});const z=[...Z0[c]||[],If.lineWrapping];return d&&z.push(If.editable.of(!1)),e.jsx("div",{className:`rounded-md overflow-hidden border ${_}`,children:e.jsx(lb,{value:n,height:h,minHeight:x,maxHeight:f,theme:g==="dark"?nb:void 0,extensions:z,onChange:r,placeholder:j,basicSetup:{lineNumbers:!0,highlightActiveLineGutter:!0,highlightSpecialChars:!0,history:!0,foldGutter:!0,drawSelection:!0,dropCursor:!0,allowMultipleSelections:!0,indentOnInput:!0,syntaxHighlighting:!0,bracketMatching:!0,closeBrackets:!0,autocompletion:!0,rectangularSelection:!0,crosshairCursor:!0,highlightActiveLine:!0,highlightSelectionMatches:!0,closeBracketsKeymap:!0,defaultKeymap:!0,searchKeymap:!0,historyKeymap:!0,foldKeymap:!0,completionKeymap:!0,lintKeymap:!0}})})}function J0(){const[n,r]=u.useState(!0),[c,d]=u.useState(!1),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[g,_]=u.useState(!1),[v,k]=u.useState(!1),[z,T]=u.useState("visual"),[L,K]=u.useState(""),[U,R]=u.useState(!1),{toast:ee}=Bs(),[V,E]=u.useState(null),[B,X]=u.useState(null),[w,D]=u.useState(null),[te,xe]=u.useState(null),[be,ye]=u.useState(null),[ve,pe]=u.useState(null),[Ne,y]=u.useState(null),[q,H]=u.useState(null),[ne,S]=u.useState(null),[me,he]=u.useState(null),[Q,oe]=u.useState(null),[ge,le]=u.useState(null),[O,F]=u.useState(null),[A,W]=u.useState(null),[_e,Me]=u.useState(null),[ss,Ie]=u.useState(null),[Rs,qs]=u.useState(null),[ie,we]=u.useState(null),Ke=u.useRef(null),Le=u.useRef(!0),st=u.useRef({}),Jt=u.useCallback(async()=>{try{const Se=await G0();K(Se),R(!1)}catch(Se){ee({variant:"destructive",title:"加载失败",description:Se instanceof Error?Se.message:"加载源代码失败"})}},[ee]),bt=u.useCallback(async()=>{try{r(!0);const Se=await ip();st.current=Se,E(Se.bot),X(Se.personality);const Re=Se.chat;Re.talk_value_rules||(Re.talk_value_rules=[]),D(Re),xe(Se.expression),ye(Se.emoji),pe(Se.memory),y(Se.tool),H(Se.mood),S(Se.voice),he(Se.lpmm_knowledge),oe(Se.keyword_reaction),le(Se.response_post_process),F(Se.chinese_typo),W(Se.response_splitter),Me(Se.log),Ie(Se.debug),qs(Se.maim_message),we(Se.telemetry),j(!1),Le.current=!1,await Jt()}catch(Se){console.error("加载配置失败:",Se),ee({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}finally{r(!1)}},[ee,Jt]);u.useEffect(()=>{bt()},[bt]);const Je=u.useCallback(async(Se,Re)=>{if(!Le.current)try{x(!0),await F0(Se,Re),j(!1)}catch(it){console.error(`自动保存 ${Se} 失败:`,it),j(!0)}finally{x(!1)}},[]),Ue=u.useCallback((Se,Re)=>{Le.current||(j(!0),Ke.current&&clearTimeout(Ke.current),Ke.current=setTimeout(()=>{Je(Se,Re)},2e3))},[Je]);u.useEffect(()=>{V&&!Le.current&&Ue("bot",V)},[V,Ue]),u.useEffect(()=>{B&&!Le.current&&Ue("personality",B)},[B,Ue]),u.useEffect(()=>{w&&!Le.current&&Ue("chat",w)},[w,Ue]),u.useEffect(()=>{te&&!Le.current&&Ue("expression",te)},[te,Ue]),u.useEffect(()=>{be&&!Le.current&&Ue("emoji",be)},[be,Ue]),u.useEffect(()=>{ve&&!Le.current&&Ue("memory",ve)},[ve,Ue]),u.useEffect(()=>{Ne&&!Le.current&&Ue("tool",Ne)},[Ne,Ue]),u.useEffect(()=>{q&&!Le.current&&Ue("mood",q)},[q,Ue]),u.useEffect(()=>{ne&&!Le.current&&Ue("voice",ne)},[ne,Ue]),u.useEffect(()=>{me&&!Le.current&&Ue("lpmm_knowledge",me)},[me,Ue]),u.useEffect(()=>{Q&&!Le.current&&Ue("keyword_reaction",Q)},[Q,Ue]),u.useEffect(()=>{ge&&!Le.current&&Ue("response_post_process",ge)},[ge,Ue]),u.useEffect(()=>{O&&!Le.current&&Ue("chinese_typo",O)},[O,Ue]),u.useEffect(()=>{A&&!Le.current&&Ue("response_splitter",A)},[A,Ue]),u.useEffect(()=>{_e&&!Le.current&&Ue("log",_e)},[_e,Ue]),u.useEffect(()=>{ss&&!Le.current&&Ue("debug",ss)},[ss,Ue]),u.useEffect(()=>{Rs&&!Le.current&&Ue("maim_message",Rs)},[Rs,Ue]),u.useEffect(()=>{ie&&!Le.current&&Ue("telemetry",ie)},[ie,Ue]);const jt=async()=>{try{d(!0),await V0(L),j(!1),R(!1),ee({title:"保存成功",description:"配置已保存"}),await bt()}catch(Se){R(!0),ee({variant:"destructive",title:"保存失败",description:Se instanceof Error?Se.message:"保存配置失败"})}finally{d(!1)}},nt=async Se=>{if(f){ee({variant:"destructive",title:"切换失败",description:"请先保存当前更改"});return}if(T(Se),Se==="source")await Jt();else try{const Re=await ip();st.current=Re,E(Re.bot),X(Re.personality);const it=Re.chat;it.talk_value_rules||(it.talk_value_rules=[]),D(it),xe(Re.expression),ye(Re.emoji),pe(Re.memory),y(Re.tool),H(Re.mood),S(Re.voice),he(Re.lpmm_knowledge),oe(Re.keyword_reaction),le(Re.response_post_process),F(Re.chinese_typo),W(Re.response_splitter),Me(Re.log),Ie(Re.debug),qs(Re.maim_message),we(Re.telemetry),j(!1)}catch(Re){console.error("加载配置失败:",Re),ee({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}},Ct=async()=>{try{d(!0),Ke.current&&clearTimeout(Ke.current);const Se={...st.current,bot:V,personality:B,chat:w,expression:te,emoji:be,memory:ve,tool:Ne,mood:q,voice:ne,lpmm_knowledge:me,keyword_reaction:Q,response_post_process:ge,chinese_typo:O,response_splitter:A,log:_e,debug:ss,maim_message:Rs,telemetry:ie};await rp(Se),j(!1),ee({title:"保存成功",description:"麦麦主程序配置已保存"})}catch(Se){console.error("保存配置失败:",Se),ee({title:"保存失败",description:Se.message,variant:"destructive"})}finally{d(!1)}},kt=async()=>{try{_(!0),co().catch(()=>{}),k(!0)}catch(Se){console.error("重启失败:",Se),k(!1),ee({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),_(!1)}},rl=async()=>{try{d(!0),Ke.current&&clearTimeout(Ke.current);const Se={...st.current,bot:V,personality:B,chat:w,expression:te,emoji:be,memory:ve,tool:Ne,mood:q,voice:ne,lpmm_knowledge:me,keyword_reaction:Q,response_post_process:ge,chinese_typo:O,response_splitter:A,log:_e,debug:ss,maim_message:Rs,telemetry:ie};await rp(Se),j(!1),ee({title:"保存成功",description:"配置已保存,即将重启麦麦..."}),await new Promise(Re=>setTimeout(Re,500)),await kt()}catch(Se){console.error("保存失败:",Se),ee({title:"保存失败",description:Se.message,variant:"destructive"})}finally{d(!1)}},cl=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},ol=()=>{k(!1),_(!1),ee({title:"重启失败",description:"服务器未能在预期时间内恢复,请手动检查",variant:"destructive"})};return n?e.jsx(es,{className:"h-full",children:e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):e.jsx(es,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦主程序配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的核心功能和行为设置"})]}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto items-center",children:[e.jsx(Kt,{value:z,onValueChange:Se=>nt(Se),className:"w-auto",children:e.jsxs(Rt,{className:"h-9",children:[e.jsxs(He,{value:"visual",className:"text-xs sm:text-sm px-2 sm:px-3",children:[e.jsx(MN,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"可视化"]}),e.jsxs(He,{value:"source",className:"text-xs sm:text-sm px-2 sm:px-3",children:[e.jsx(AN,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"源代码"]})]})}),e.jsxs(N,{onClick:z==="visual"?Ct:jt,disabled:c||h||!f||g,size:"sm",variant:"outline",className:"flex-1 sm:flex-none",children:[e.jsx(br,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),c?"保存中...":h?"自动保存中...":f?"保存配置":"已保存"]}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(N,{disabled:c||h||g,size:"sm",className:"flex-1 sm:flex-none",children:[e.jsx(Nr,{className:"mr-2 h-4 w-4"}),g?"重启中...":f?"保存并重启":"重启麦麦"]})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认重启麦麦?"}),e.jsx(ms,{className:"space-y-3",asChild:!0,children:e.jsxs("div",{children:[e.jsx("p",{children:f?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),e.jsxs(ua,{className:"border-yellow-500/50 bg-yellow-500/10",children:[e.jsx(Xt,{className:"h-4 w-4 text-yellow-600"}),e.jsxs(ma,{className:"text-yellow-900 dark:text-yellow-100",children:[e.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",e.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",e.jsxs(Os,{children:[e.jsx(ni,{asChild:!0,children:e.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[e.jsx(ro,{className:"h-3 w-3"}),"如何结束程序?"]})}),e.jsxs(Es,{className:"max-w-2xl",children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"如何结束使用重启功能后的麦麦程序"}),e.jsx($s,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),e.jsxs(Kt,{defaultValue:"windows",className:"w-full",children:[e.jsxs(Rt,{className:"grid w-full grid-cols-3",children:[e.jsx(He,{value:"windows",children:"Windows"}),e.jsx(He,{value:"macos",children:"macOS"}),e.jsx(He,{value:"linux",children:"Linux"})]}),e.jsxs(We,{value:"windows",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),e.jsxs("li",{children:['在"进程"或"详细信息"标签页中找到 ',e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),e.jsx("li",{children:'右键点击并选择"结束任务"'})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),e.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),e.jsxs(We,{value:"macos",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"}),' 打开 Spotlight,搜索"活动监视器"']}),e.jsxs("li",{children:["在进程列表中找到 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),e.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:"ps aux | grep python | grep -v grep"}),e.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),e.jsx("p",{children:"kill -9 "}),e.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"pkill -9 python"})]})]})]}),e.jsxs(We,{value:"linux",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:"ps aux | grep python | grep -v grep"}),e.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),e.jsx("p",{children:"kill -9 "}),e.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),e.jsx("p",{children:'pkill -9 -f "bot.py"'}),e.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"pkill -9 python"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["在终端输入 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),e.jsx(Is,{children:e.jsx(Zu,{asChild:!0,children:e.jsx(N,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:f?rl:kt,children:f?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsxs(ua,{children:[e.jsx(Xt,{className:"h-4 w-4"}),e.jsxs(ma,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),z==="source"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs(ua,{children:[e.jsx(Xt,{className:"h-4 w-4"}),e.jsxs(ma,{children:[e.jsx("strong",{children:"源代码模式(高级功能):"}),"直接编辑 TOML 配置文件。此功能仅适用于熟悉 TOML 语法的高级用户。保存时会在后端验证格式,只有格式完全正确才能保存。",U&&e.jsx("span",{className:"text-destructive font-semibold ml-2",children:"⚠️ 上次保存失败,请检查 TOML 格式"})]})]}),e.jsx(I0,{value:L,onChange:Se=>{K(Se),j(!0),U&&R(!1)},language:"toml",theme:"dark",height:"calc(100vh - 280px)",minHeight:"500px",placeholder:"TOML 配置内容"})]}),z==="visual"&&e.jsx(e.Fragment,{children:e.jsxs(Kt,{defaultValue:"bot",className:"w-full",children:[e.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:e.jsxs(Rt,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5 lg:grid-cols-10",children:[e.jsx(He,{value:"bot",className:"flex-shrink-0",children:"基本信息"}),e.jsx(He,{value:"personality",className:"flex-shrink-0",children:"人格"}),e.jsx(He,{value:"chat",className:"flex-shrink-0",children:"聊天"}),e.jsx(He,{value:"expression",className:"flex-shrink-0",children:"表达"}),e.jsx(He,{value:"features",className:"flex-shrink-0",children:"功能"}),e.jsx(He,{value:"processing",className:"flex-shrink-0",children:"处理"}),e.jsx(He,{value:"mood",className:"flex-shrink-0",children:"情绪"}),e.jsx(He,{value:"voice",className:"flex-shrink-0",children:"语音"}),e.jsx(He,{value:"lpmm",className:"flex-shrink-0",children:"知识库"}),e.jsx(He,{value:"other",className:"flex-shrink-0",children:"其他"})]})}),e.jsx(We,{value:"bot",className:"space-y-4",children:V&&e.jsx(P0,{config:V,onChange:E})}),e.jsx(We,{value:"personality",className:"space-y-4",children:B&&e.jsx(W0,{config:B,onChange:X})}),e.jsx(We,{value:"chat",className:"space-y-4",children:w&&e.jsx(ew,{config:w,onChange:D})}),e.jsx(We,{value:"expression",className:"space-y-4",children:te&&e.jsx(tw,{config:te,onChange:xe})}),e.jsx(We,{value:"features",className:"space-y-4",children:be&&ve&&Ne&&e.jsx(aw,{emojiConfig:be,memoryConfig:ve,toolConfig:Ne,onEmojiChange:ye,onMemoryChange:pe,onToolChange:y})}),e.jsx(We,{value:"processing",className:"space-y-4",children:Q&&ge&&O&&A&&e.jsx(lw,{keywordReactionConfig:Q,responsePostProcessConfig:ge,chineseTypoConfig:O,responseSplitterConfig:A,onKeywordReactionChange:oe,onResponsePostProcessChange:le,onChineseTypoChange:F,onResponseSplitterChange:W})}),e.jsx(We,{value:"mood",className:"space-y-4",children:q&&e.jsx(nw,{config:q,onChange:H})}),e.jsx(We,{value:"voice",className:"space-y-4",children:ne&&e.jsx(iw,{config:ne,onChange:S})}),e.jsx(We,{value:"lpmm",className:"space-y-4",children:me&&e.jsx(rw,{config:me,onChange:he})}),e.jsxs(We,{value:"other",className:"space-y-4",children:[_e&&e.jsx(cw,{config:_e,onChange:Me}),ss&&e.jsx(ow,{config:ss,onChange:Ie}),Rs&&e.jsx(dw,{config:Rs,onChange:qs}),ie&&e.jsx(uw,{config:ie,onChange:we})]})]})}),v&&e.jsx(Iu,{onRestartComplete:cl,onRestartFailed:ol})]})})}function P0({config:n,onChange:r}){const c=()=>{r({...n,platforms:[...n.platforms,""]})},d=g=>{r({...n,platforms:n.platforms.filter((_,v)=>v!==g)})},h=(g,_)=>{const v=[...n.platforms];v[g]=_,r({...n,platforms:v})},x=()=>{r({...n,alias_names:[...n.alias_names,""]})},f=g=>{r({...n,alias_names:n.alias_names.filter((_,v)=>v!==g)})},j=(g,_)=>{const v=[...n.alias_names];v[g]=_,r({...n,alias_names:v})};return e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"基本信息"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"platform",children:"平台"}),e.jsx(ce,{id:"platform",value:n.platform,onChange:g=>r({...n,platform:g.target.value}),placeholder:"qq"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"qq_account",children:"QQ账号"}),e.jsx(ce,{id:"qq_account",value:n.qq_account,onChange:g=>r({...n,qq_account:g.target.value}),placeholder:"123456789"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"nickname",children:"昵称"}),e.jsx(ce,{id:"nickname",value:n.nickname,onChange:g=>r({...n,nickname:g.target.value}),placeholder:"麦麦"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:"其他平台账号"}),e.jsxs(N,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(gt,{className:"h-4 w-4 mr-1"}),"添加"]})]}),e.jsxs("div",{className:"space-y-2",children:[n.platforms.map((g,_)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{value:g,onChange:v=>h(_,v.target.value),placeholder:"wx:114514"}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(N,{size:"icon",variant:"outline",children:e.jsx(ns,{className:"h-4 w-4"})})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:['确定要删除平台账号 "',g||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>d(_),children:"删除"})]})]})]})]},_)),n.platforms.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无其他平台账号"})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:"别名"}),e.jsxs(N,{onClick:x,size:"sm",variant:"outline",children:[e.jsx(gt,{className:"h-4 w-4 mr-1"}),"添加"]})]}),e.jsxs("div",{className:"space-y-2",children:[n.alias_names.map((g,_)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{value:g,onChange:v=>j(_,v.target.value),placeholder:"小麦"}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(N,{size:"icon",variant:"outline",children:e.jsx(ns,{className:"h-4 w-4"})})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:['确定要删除别名 "',g||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>f(_),children:"删除"})]})]})]})]},_)),n.alias_names.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无别名"})]})]})]})]})})}function W0({config:n,onChange:r}){const c=()=>{r({...n,states:[...n.states,""]})},d=x=>{r({...n,states:n.states.filter((f,j)=>j!==x)})},h=(x,f)=>{const j=[...n.states];j[x]=f,r({...n,states:j})};return e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"人格设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"personality",children:"人格特质"}),e.jsx(Us,{id:"personality",value:n.personality,onChange:x=>r({...n,personality:x.target.value}),placeholder:"描述人格特质和身份特征(建议120字以内)",rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"建议120字以内,描述人格特质和身份特征"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"reply_style",children:"表达风格"}),e.jsx(Us,{id:"reply_style",value:n.reply_style,onChange:x=>r({...n,reply_style:x.target.value}),placeholder:"描述说话的表达风格和习惯",rows:3})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"interest",children:"兴趣"}),e.jsx(Us,{id:"interest",value:n.interest,onChange:x=>r({...n,interest:x.target.value}),placeholder:"会影响麦麦对什么话题进行回复",rows:2})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"plan_style",children:"说话规则与行为风格"}),e.jsx(Us,{id:"plan_style",value:n.plan_style,onChange:x=>r({...n,plan_style:x.target.value}),placeholder:"麦麦的说话规则和行为风格",rows:5})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"visual_style",children:"识图规则"}),e.jsx(Us,{id:"visual_style",value:n.visual_style,onChange:x=>r({...n,visual_style:x.target.value}),placeholder:"识图时的处理规则",rows:3})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"private_plan_style",children:"私聊规则"}),e.jsx(Us,{id:"private_plan_style",value:n.private_plan_style,onChange:x=>r({...n,private_plan_style:x.target.value}),placeholder:"私聊的说话规则和行为风格",rows:4})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:"状态列表(人格多样性)"}),e.jsxs(N,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(gt,{className:"h-4 w-4 mr-1"}),"添加状态"]})]}),e.jsx("div",{className:"space-y-2",children:n.states.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Us,{value:x,onChange:j=>h(f,j.target.value),placeholder:"描述一个人格状态",rows:2}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(N,{size:"icon",variant:"outline",children:e.jsx(ns,{className:"h-4 w-4"})})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsx(ms,{children:"确定要删除这个人格状态吗?此操作无法撤销。"})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>d(f),children:"删除"})]})]})]})]},f))})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"state_probability",children:"状态替换概率"}),e.jsx(ce,{id:"state_probability",type:"number",step:"0.1",min:"0",max:"1",value:n.state_probability,onChange:x=>r({...n,state_probability:parseFloat(x.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"每次构建人格时替换 personality 的概率(0.0-1.0)"})]})]})]})})}function ew({config:n,onChange:r}){const c=()=>{r({...n,talk_value_rules:[...n.talk_value_rules,{target:"",time:"00:00-23:59",value:1}]})},d=j=>{r({...n,talk_value_rules:n.talk_value_rules.filter((g,_)=>_!==j)})},h=(j,g,_)=>{const v=[...n.talk_value_rules];v[j]={...v[j],[g]:_},r({...n,talk_value_rules:v})},x=({value:j,onChange:g})=>{const[_,v]=u.useState("00"),[k,z]=u.useState("00"),[T,L]=u.useState("23"),[K,U]=u.useState("59");u.useEffect(()=>{const ee=j.split("-");if(ee.length===2){const[V,E]=ee,[B,X]=V.split(":"),[w,D]=E.split(":");B&&v(B.padStart(2,"0")),X&&z(X.padStart(2,"0")),w&&L(w.padStart(2,"0")),D&&U(D.padStart(2,"0"))}},[j]);const R=(ee,V,E,B)=>{const X=`${ee}:${V}-${E}:${B}`;g(X)};return e.jsxs(Da,{children:[e.jsx(Oa,{asChild:!0,children:e.jsxs(N,{variant:"outline",className:"w-full justify-start font-mono text-sm",children:[e.jsx(Wn,{className:"h-4 w-4 mr-2"}),j||"选择时间段"]})}),e.jsx(Na,{className:"w-80",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"font-medium text-sm mb-3",children:"开始时间"}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-xs",children:"小时"}),e.jsxs(Qe,{value:_,onValueChange:ee=>{v(ee),R(ee,k,T,K)},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsx(Ve,{children:Array.from({length:24},(ee,V)=>V).map(ee=>e.jsx(ue,{value:ee.toString().padStart(2,"0"),children:ee.toString().padStart(2,"0")},ee))})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-xs",children:"分钟"}),e.jsxs(Qe,{value:k,onValueChange:ee=>{z(ee),R(_,ee,T,K)},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsx(Ve,{children:Array.from({length:60},(ee,V)=>V).map(ee=>e.jsx(ue,{value:ee.toString().padStart(2,"0"),children:ee.toString().padStart(2,"0")},ee))})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-medium text-sm mb-3",children:"结束时间"}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-xs",children:"小时"}),e.jsxs(Qe,{value:T,onValueChange:ee=>{L(ee),R(_,k,ee,K)},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsx(Ve,{children:Array.from({length:24},(ee,V)=>V).map(ee=>e.jsx(ue,{value:ee.toString().padStart(2,"0"),children:ee.toString().padStart(2,"0")},ee))})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-xs",children:"分钟"}),e.jsxs(Qe,{value:K,onValueChange:ee=>{U(ee),R(_,k,T,ee)},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsx(Ve,{children:Array.from({length:60},(ee,V)=>V).map(ee=>e.jsx(ue,{value:ee.toString().padStart(2,"0"),children:ee.toString().padStart(2,"0")},ee))})]})]})]})]})]})})]})},f=({rule:j})=>{const g=`{ target = "${j.target}", time = "${j.time}", value = ${j.value.toFixed(1)} }`;return e.jsxs(Da,{children:[e.jsx(Oa,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",children:[e.jsx(Zt,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(Na,{className:"w-96",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:g}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"聊天设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"talk_value",children:"聊天频率(基础值)"}),e.jsx(ce,{id:"talk_value",type:"number",step:"0.1",min:"0",max:"1",value:n.talk_value,onChange:j=>r({...n,talk_value:parseFloat(j.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"越小越沉默,范围 0-1"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"mentioned_bot_reply",checked:n.mentioned_bot_reply,onCheckedChange:j=>r({...n,mentioned_bot_reply:j})}),e.jsx(b,{htmlFor:"mentioned_bot_reply",className:"cursor-pointer",children:"启用提及必回复"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_context_size",children:"上下文长度"}),e.jsx(ce,{id:"max_context_size",type:"number",min:"1",value:n.max_context_size,onChange:j=>r({...n,max_context_size:parseInt(j.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"planner_smooth",children:"规划器平滑"}),e.jsx(ce,{id:"planner_smooth",type:"number",step:"1",min:"0",value:n.planner_smooth,onChange:j=>r({...n,planner_smooth:parseFloat(j.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"增大数值会减小 planner 负荷,推荐 1-5,0 为关闭"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"enable_talk_value_rules",checked:n.enable_talk_value_rules,onCheckedChange:j=>r({...n,enable_talk_value_rules:j})}),e.jsx(b,{htmlFor:"enable_talk_value_rules",className:"cursor-pointer",children:"启用动态发言频率规则"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"include_planner_reasoning",checked:n.include_planner_reasoning,onCheckedChange:j=>r({...n,include_planner_reasoning:j})}),e.jsx(b,{htmlFor:"include_planner_reasoning",className:"cursor-pointer",children:"将 planner 推理加入 replyer"})]})]})]}),n.enable_talk_value_rules&&e.jsxs("div",{className:"border-t pt-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"动态发言频率规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"按时段或聊天流ID调整发言频率,优先匹配具体聊天,再匹配全局规则"})]}),e.jsxs(N,{onClick:c,size:"sm",children:[e.jsx(gt,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),n.talk_value_rules&&n.talk_value_rules.length>0?e.jsx("div",{className:"space-y-4",children:n.talk_value_rules.map((j,g)=>e.jsxs("div",{className:"rounded-lg border p-4 bg-muted/50 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium text-muted-foreground",children:["规则 #",g+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(f,{rule:j}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(N,{variant:"ghost",size:"sm",children:e.jsx(ns,{className:"h-4 w-4 text-destructive"})})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:["确定要删除规则 #",g+1," 吗?此操作无法撤销。"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>d(g),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"配置类型"}),e.jsxs(Qe,{value:j.target===""?"global":"specific",onValueChange:_=>{_==="global"?h(g,"target",""):h(g,"target","qq::group")},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"global",children:"全局配置"}),e.jsx(ue,{value:"specific",children:"详细配置"})]})]})]}),j.target!==""&&(()=>{const _=j.target.split(":"),v=_[0]||"qq",k=_[1]||"",z=_[2]||"group";return e.jsxs("div",{className:"grid gap-4 p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"平台"}),e.jsxs(Qe,{value:v,onValueChange:T=>{h(g,"target",`${T}:${k}:${z}`)},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"qq",children:"QQ"}),e.jsx(ue,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"群 ID"}),e.jsx(ce,{value:k,onChange:T=>{h(g,"target",`${v}:${T.target.value}:${z}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"类型"}),e.jsxs(Qe,{value:z,onValueChange:T=>{h(g,"target",`${v}:${k}:${T}`)},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"group",children:"群组(group)"}),e.jsx(ue,{value:"private",children:"私聊(private)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",j.target||"(未设置)"]})]})})(),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"时间段 (Time)"}),e.jsx(x,{value:j.time,onChange:_=>h(g,"time",_)}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"支持跨夜区间,例如 23:00-02:00"})]}),e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{htmlFor:`rule-value-${g}`,className:"text-xs font-medium",children:"发言频率值 (Value)"}),e.jsx(ce,{id:`rule-value-${g}`,type:"number",step:"0.01",min:"0.01",max:"1",value:j.value,onChange:_=>{const v=parseFloat(_.target.value);isNaN(v)||h(g,"value",Math.max(.01,Math.min(1,v)))},className:"w-20 h-8 text-xs"})]}),e.jsx(za,{value:[j.value],onValueChange:_=>h(g,"value",_[0]),min:.01,max:1,step:.01,className:"w-full"}),e.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[e.jsx("span",{children:"0.01 (极少发言)"}),e.jsx("span",{children:"0.5"}),e.jsx("span",{children:"1.0 (正常)"})]})]})]})]},g))}):e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:e.jsx("p",{className:"text-sm",children:'暂无规则,点击"添加规则"按钮创建'})}),e.jsxs("div",{className:"mt-4 p-4 bg-blue-50 dark:bg-blue-950/20 border border-blue-200 dark:border-blue-800 rounded-lg",children:[e.jsx("h5",{className:"text-sm font-semibold text-blue-900 dark:text-blue-100 mb-2",children:"📝 规则说明"}),e.jsxs("ul",{className:"text-xs text-blue-800 dark:text-blue-200 space-y-1",children:[e.jsxs("li",{children:["• ",e.jsx("strong",{children:"Target 为空"}),":全局规则,对所有聊天生效"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"Target 指定"}),":仅对特定聊天流生效(格式:platform:id:type)"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"优先级"}),":先匹配具体聊天流规则,再匹配全局规则"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"时间支持跨夜"}),":例如 23:00-02:00 表示晚上11点到次日凌晨2点"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"数值范围"}),":建议 0-1,0 表示完全沉默,1 表示正常发言"]})]})]})]})]})}function sw({member:n,groupIndex:r,memberIndex:c,availableChatIds:d,onUpdate:h,onRemove:x}){const f=d.includes(n)||n==="*",[j,g]=u.useState(!f);return e.jsxs("div",{className:"flex gap-2",children:[e.jsx("div",{className:"flex-1 flex gap-2",children:j?e.jsxs(e.Fragment,{children:[e.jsx(ce,{value:n,onChange:_=>h(r,c,_.target.value),placeholder:'输入 "*" 或 "qq:123456:group"',className:"flex-1"}),d.length>0&&e.jsx(N,{size:"sm",variant:"outline",onClick:()=>g(!1),title:"切换到下拉选择",children:"下拉"})]}):e.jsxs(e.Fragment,{children:[e.jsxs(Qe,{value:n,onValueChange:_=>h(r,c,_),children:[e.jsx(Ge,{className:"flex-1",children:e.jsx($e,{placeholder:"选择聊天流"})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"*",children:"* (全局共享)"}),d.map((_,v)=>e.jsx(ue,{value:_,children:_},v))]})]}),e.jsx(N,{size:"sm",variant:"outline",onClick:()=>g(!0),title:"切换到手动输入",children:"输入"})]})}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(N,{size:"icon",variant:"outline",children:e.jsx(ns,{className:"h-4 w-4"})})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:['确定要删除组成员 "',n||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>x(r,c),children:"删除"})]})]})]})]})}function tw({config:n,onChange:r}){const c=()=>{r({...n,learning_list:[...n.learning_list,["","enable","enable","1.0"]]})},d=k=>{r({...n,learning_list:n.learning_list.filter((z,T)=>T!==k)})},h=(k,z,T)=>{const L=[...n.learning_list];L[k][z]=T,r({...n,learning_list:L})},x=({rule:k})=>{const z=`["${k[0]}", "${k[1]}", "${k[2]}", "${k[3]}"]`;return e.jsxs(Da,{children:[e.jsx(Oa,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",children:[e.jsx(Zt,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(Na,{className:"w-96",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:z}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},f=()=>{r({...n,expression_groups:[...n.expression_groups,[]]})},j=k=>{r({...n,expression_groups:n.expression_groups.filter((z,T)=>T!==k)})},g=k=>{const z=[...n.expression_groups];z[k]=[...z[k],""],r({...n,expression_groups:z})},_=(k,z)=>{const T=[...n.expression_groups];T[k]=T[k].filter((L,K)=>K!==z),r({...n,expression_groups:T})},v=(k,z,T)=>{const L=[...n.expression_groups];L[k][z]=T,r({...n,expression_groups:L})};return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达学习配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置麦麦如何学习和使用表达方式"})]}),e.jsxs(N,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(gt,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),e.jsxs("div",{className:"space-y-4",children:[n.learning_list.map((k,z)=>{const T=n.learning_list.some((V,E)=>E!==z&&V[0]===""),L=k[0]==="",K=k[0].split(":"),U=K[0]||"qq",R=K[1]||"",ee=K[2]||"group";return e.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["规则 ",z+1," ",L&&"(全局配置)"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(x,{rule:k}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(N,{size:"sm",variant:"ghost",children:e.jsx(ns,{className:"h-4 w-4"})})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:["确定要删除学习规则 ",z+1," 吗?此操作无法撤销。"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>d(z),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"配置类型"}),e.jsxs(Qe,{value:L?"global":"specific",onValueChange:V=>{V==="global"?h(z,0,""):h(z,0,"qq::group")},disabled:T&&!L,children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"global",children:"全局配置"}),e.jsx(ue,{value:"specific",disabled:T&&!L,children:"详细配置"})]})]}),T&&!L&&e.jsx("p",{className:"text-xs text-amber-600",children:"已存在全局配置,无法创建新的全局配置"})]}),!L&&e.jsxs("div",{className:"grid gap-4 p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"平台"}),e.jsxs(Qe,{value:U,onValueChange:V=>{h(z,0,`${V}:${R}:${ee}`)},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"qq",children:"QQ"}),e.jsx(ue,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"群 ID"}),e.jsx(ce,{value:R,onChange:V=>{h(z,0,`${U}:${V.target.value}:${ee}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"类型"}),e.jsxs(Qe,{value:ee,onValueChange:V=>{h(z,0,`${U}:${R}:${V}`)},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"group",children:"群组(group)"}),e.jsx(ue,{value:"private",children:"私聊(private)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",k[0]||"(未设置)"]})]}),e.jsx("div",{className:"grid gap-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-xs font-medium",children:"使用学到的表达"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦使用从聊天中学到的表达方式"})]}),e.jsx(qe,{checked:k[1]==="enable",onCheckedChange:V=>h(z,1,V?"enable":"disable")})]})}),e.jsx("div",{className:"grid gap-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-xs font-medium",children:"学习表达"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦从聊天中学习新的表达方式"})]}),e.jsx(qe,{checked:k[2]==="enable",onCheckedChange:V=>h(z,2,V?"enable":"disable")})]})}),e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-xs font-medium",children:"学习强度"}),e.jsx(ce,{type:"number",step:"0.1",min:"0",max:"5",value:k[3],onChange:V=>{const E=parseFloat(V.target.value);isNaN(E)||h(z,3,Math.max(0,Math.min(5,E)).toFixed(1))},className:"w-20 h-8 text-xs"})]}),e.jsx(za,{value:[parseFloat(k[3])||1],onValueChange:V=>h(z,3,V[0].toFixed(1)),min:0,max:5,step:.1,className:"w-full"}),e.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[e.jsx("span",{children:"0 (不学习)"}),e.jsx("span",{children:"2.5"}),e.jsx("span",{children:"5.0 (快速学习)"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"影响学习频率,最短学习间隔 = 300/学习强度(秒)"})]})]})]},z)}),n.learning_list.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无学习规则,点击"添加规则"开始配置'})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达共享组配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置不同聊天流之间如何共享学到的表达方式"})]}),e.jsxs(N,{onClick:f,size:"sm",variant:"outline",children:[e.jsx(gt,{className:"h-4 w-4 mr-1"}),"添加共享组"]})]}),e.jsxs("div",{className:"space-y-4",children:[n.expression_groups.map((k,z)=>{const T=n.learning_list.map(L=>L[0]).filter(L=>L!=="");return e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["共享组 ",z+1,k.length===1&&k[0]==="*"&&"(全局共享)"]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(N,{onClick:()=>g(z),size:"sm",variant:"outline",children:e.jsx(gt,{className:"h-4 w-4"})}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(N,{size:"sm",variant:"ghost",children:e.jsx(ns,{className:"h-4 w-4"})})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:["确定要删除共享组 ",z+1," 吗?此操作无法撤销。"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>j(z),children:"删除"})]})]})]})]})]}),e.jsx("div",{className:"space-y-2",children:k.map((L,K)=>e.jsx(sw,{member:L,groupIndex:z,memberIndex:K,availableChatIds:T,onUpdate:v,onRemove:_},`${z}-${K}`))}),e.jsx("p",{className:"text-xs text-muted-foreground",children:'提示:可以从下拉框选择已配置的聊天流,或手动输入。输入 "*" 启用全局共享'})]},z)}),n.expression_groups.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无共享组,点击"添加共享组"开始配置'})]})]})})]})}function aw({emojiConfig:n,memoryConfig:r,toolConfig:c,onEmojiChange:d,onMemoryChange:h,onToolChange:x}){return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"工具设置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"enable_tool",checked:c.enable_tool,onCheckedChange:f=>x({...c,enable_tool:f})}),e.jsx(b,{htmlFor:"enable_tool",className:"cursor-pointer",children:"启用工具系统"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"允许麦麦使用各种工具来增强功能"})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"记忆设置"}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_agent_iterations",children:"记忆思考深度"}),e.jsx(ce,{id:"max_agent_iterations",type:"number",min:"1",value:r.max_agent_iterations,onChange:f=>h({...r,max_agent_iterations:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"最低为 1(不深入思考)"})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"表情包设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"emoji_chance",children:"表情包激活概率"}),e.jsx(ce,{id:"emoji_chance",type:"number",step:"0.1",min:"0",max:"1",value:n.emoji_chance,onChange:f=>d({...n,emoji_chance:parseFloat(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"范围 0-1,越大越容易发送表情包"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_reg_num",children:"最大注册数量"}),e.jsx(ce,{id:"max_reg_num",type:"number",min:"1",value:n.max_reg_num,onChange:f=>d({...n,max_reg_num:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦最多可以注册的表情包数量"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),e.jsx(ce,{id:"check_interval",type:"number",min:"1",value:n.check_interval,onChange:f=>d({...n,check_interval:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包(注册、破损、删除)的时间间隔"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"do_replace",checked:n.do_replace,onCheckedChange:f=>d({...n,do_replace:f})}),e.jsx(b,{htmlFor:"do_replace",className:"cursor-pointer",children:"达到最大数量时替换表情包"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"steal_emoji",checked:n.steal_emoji,onCheckedChange:f=>d({...n,steal_emoji:f})}),e.jsx(b,{htmlFor:"steal_emoji",className:"cursor-pointer",children:"偷取表情包"})]}),e.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"允许麦麦将看到的表情包据为己有"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"content_filtration",checked:n.content_filtration,onCheckedChange:f=>d({...n,content_filtration:f})}),e.jsx(b,{htmlFor:"content_filtration",className:"cursor-pointer",children:"启用表情包过滤"})]}),n.content_filtration&&e.jsxs("div",{className:"grid gap-2 pl-6 border-l-2 border-primary/20",children:[e.jsx(b,{htmlFor:"filtration_prompt",children:"过滤要求"}),e.jsx(ce,{id:"filtration_prompt",value:n.filtration_prompt,onChange:f=>d({...n,filtration_prompt:f.target.value}),placeholder:"符合公序良俗"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"只有符合此要求的表情包才会被保存"})]})]})]})})]})}function lw({keywordReactionConfig:n,responsePostProcessConfig:r,chineseTypoConfig:c,responseSplitterConfig:d,onKeywordReactionChange:h,onResponsePostProcessChange:x,onChineseTypoChange:f,onResponseSplitterChange:j}){const g=()=>{h({...n,regex_rules:[...n.regex_rules,{regex:[""],reaction:""}]})},_=E=>{h({...n,regex_rules:n.regex_rules.filter((B,X)=>X!==E)})},v=(E,B,X)=>{const w=[...n.regex_rules];B==="regex"&&typeof X=="string"?w[E]={...w[E],regex:[X]}:B==="reaction"&&typeof X=="string"&&(w[E]={...w[E],reaction:X}),h({...n,regex_rules:w})},k=({regex:E,reaction:B,onRegexChange:X,onReactionChange:w})=>{const[D,te]=u.useState(!1),[xe,be]=u.useState(""),[ye,ve]=u.useState(null),[pe,Ne]=u.useState(""),[y,q]=u.useState({}),[H,ne]=u.useState(""),S=u.useRef(null),[me,he]=u.useState("build"),Q=O=>O.replace(/\(\?P<([^>]+)>/g,"(?<$1>"),oe=(O,F=0)=>{const A=S.current;if(!A)return;const W=A.selectionStart||0,_e=A.selectionEnd||0,Me=E.substring(0,W)+O+E.substring(_e);X(Me),setTimeout(()=>{const ss=W+O.length+F;A.setSelectionRange(ss,ss),A.focus()},0)};u.useEffect(()=>{if(!E||!xe){ve(null),q({}),ne(B),Ne("");return}try{const O=Q(E),F=new RegExp(O,"g"),A=xe.match(F);ve(A),Ne("");const _e=new RegExp(O).exec(xe);if(_e&&_e.groups){q(_e.groups);let Me=B;Object.entries(_e.groups).forEach(([ss,Ie])=>{Me=Me.replace(new RegExp(`\\[${ss}\\]`,"g"),Ie||"")}),ne(Me)}else q({}),ne(B)}catch(O){Ne(O.message),ve(null),q({}),ne(B)}},[E,xe,B]);const ge=()=>{if(!xe||!ye||ye.length===0)return e.jsx("span",{className:"text-muted-foreground",children:xe||"请输入测试文本"});try{const O=Q(E),F=new RegExp(O,"g");let A=0;const W=[];let _e;for(;(_e=F.exec(xe))!==null;)_e.index>A&&W.push(e.jsx("span",{children:xe.substring(A,_e.index)},`text-${A}`)),W.push(e.jsx("span",{className:"bg-yellow-200 dark:bg-yellow-900 font-semibold",children:_e[0]},`match-${_e.index}`)),A=_e.index+_e[0].length;return A)",desc:"Python风格命名捕获组",moveCursor:-1},{label:"非捕获组",pattern:"(?:)",desc:"分组但不保存匹配结果",moveCursor:-1}]},{category:"字符类",items:[{label:"字符集",pattern:"[]",desc:"匹配括号内的任意字符",moveCursor:-1},{label:"排除字符",pattern:"[^]",desc:"匹配不在括号内的字符",moveCursor:-1},{label:"范围",pattern:"[a-z]",desc:"匹配a到z的字符"},{label:"中文字符",pattern:"[\\u4e00-\\u9fa5]",desc:"匹配中文汉字"}]},{category:"常用模板",items:[{label:"捕获词语",pattern:"(?P\\S+)",desc:"捕获一个词语"},{label:"捕获句子",pattern:"(?P.+)",desc:"捕获整个句子"},{label:"捕获数字",pattern:"(?P\\d+)",desc:"捕获一个或多个数字"},{label:"可选词语",pattern:"(?:词语1|词语2)",desc:"匹配多个可选项之一"}]}];return e.jsxs(Os,{open:D,onOpenChange:te,children:[e.jsx(ni,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",children:[e.jsx(ao,{className:"h-4 w-4 mr-1"}),"正则编辑器"]})}),e.jsxs(Es,{className:"max-w-[95vw] sm:max-w-[900px] max-h-[90vh]",children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"正则表达式编辑器"}),e.jsx($s,{className:"text-sm",children:"使用可视化工具构建正则表达式,并实时测试效果"})]}),e.jsx(es,{className:"max-h-[calc(90vh-120px)]",children:e.jsxs(Kt,{value:me,onValueChange:O=>he(O),className:"w-full",children:[e.jsxs(Rt,{className:"grid w-full grid-cols-2",children:[e.jsx(He,{value:"build",children:"🔧 构建器"}),e.jsx(He,{value:"test",children:"🧪 测试器"})]}),e.jsxs(We,{value:"build",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"正则表达式"}),e.jsx(ce,{ref:S,value:E,onChange:O=>X(O.target.value),className:"font-mono text-sm",placeholder:"点击下方按钮构建正则表达式..."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"Reaction 内容"}),e.jsx(Us,{value:B,onChange:O=>w(O.target.value),placeholder:"使用 [捕获组名] 引用捕获的内容...",rows:3,className:"text-sm"})]}),e.jsxs("div",{className:"space-y-4 border-t pt-4",children:[le.map(O=>e.jsxs("div",{className:"space-y-2",children:[e.jsx("h5",{className:"text-xs font-semibold text-primary",children:O.category}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:O.items.map(F=>e.jsx(N,{variant:"outline",size:"sm",className:"justify-start h-auto py-2 px-3",onClick:()=>oe(F.pattern,F.moveCursor||0),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsxs("div",{className:"flex items-center gap-2 w-full",children:[e.jsx("span",{className:"text-xs font-medium",children:F.label}),e.jsx("code",{className:"ml-auto text-xs bg-muted px-1.5 py-0.5 rounded font-mono",children:F.pattern})]}),e.jsx("span",{className:"text-xs text-muted-foreground mt-0.5",children:F.desc})]})},F.label))})]},O.category)),e.jsxs("div",{className:"space-y-2 border-t pt-4",children:[e.jsx("h5",{className:"text-xs font-semibold text-primary",children:"完整示例模板"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>X("^(?P\\S{1,20})是这样的$"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsxs("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:["^(?P\\S","{1,20}",")是这样的$"]}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「某事物是这样的」并捕获事物名称"})]})}),e.jsx(N,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>X("(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「我没要求你做某事」并捕获具体行为"})]})}),e.jsx(N,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>X("(?P.+?)(?:是|为什么|怎么)"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?P.+?)(?:是|为什么|怎么)"}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"捕获问题主题词"})]})})]})]})]}),e.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 使用提示"}),e.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"点击输入框设置光标位置,然后点击按钮插入模式"}),e.jsxs("li",{children:["命名捕获组格式:",e.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"(?P<名称>模式)"})]}),e.jsxs("li",{children:["在 reaction 中使用 ",e.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"[名称]"})," 引用捕获的内容"]}),e.jsx("li",{children:"切换到测试器标签页验证正则表达式效果"})]})]})]}),e.jsxs(We,{value:"test",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"当前正则表达式"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:E||"(未设置)"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"test-text",className:"text-sm font-medium",children:"测试文本"}),e.jsx(Us,{id:"test-text",value:xe,onChange:O=>be(O.target.value),placeholder:`在此输入要测试的文本... -例如:打游戏是这样的`,className:"min-h-[100px] text-sm"})]}),pe&&e.jsxs("div",{className:"rounded-md bg-destructive/10 border border-destructive/20 p-3",children:[e.jsx("p",{className:"text-sm text-destructive font-medium",children:"正则表达式错误"}),e.jsx("p",{className:"text-xs text-destructive/80 mt-1",children:pe})]}),!pe&&xe&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"flex items-center gap-2",children:ye&&ye.length>0?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-green-500"}),e.jsxs("span",{className:"text-sm font-medium text-green-600 dark:text-green-400",children:["匹配成功 (",ye.length," 处)"]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-gray-400"}),e.jsx("span",{className:"text-sm font-medium text-muted-foreground",children:"无匹配"})]})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"匹配高亮"}),e.jsx(es,{className:"h-40 rounded-md bg-muted p-3",children:e.jsx("div",{className:"text-sm break-words",children:ge()})})]}),Object.keys(y).length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"命名捕获组"}),e.jsx(es,{className:"h-32 rounded-md border p-3",children:e.jsx("div",{className:"space-y-2",children:Object.entries(y).map(([O,F])=>e.jsxs("div",{className:"flex items-start gap-2 text-sm",children:[e.jsxs("span",{className:"font-mono font-semibold text-primary min-w-[80px]",children:["[",O,"]"]}),e.jsx("span",{className:"text-muted-foreground",children:"="}),e.jsx("span",{className:"font-mono bg-muted px-2 py-0.5 rounded",children:F})]},O))})})]}),Object.keys(y).length>0&&B&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"Reaction 替换预览"}),e.jsx(es,{className:"h-48 rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3",children:e.jsx("div",{className:"text-sm break-words",children:H})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"reaction 中的 [name] 已被替换为对应的捕获组值"})]})]}),e.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 测试说明"}),e.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"匹配的文本会以黄色背景高亮显示"}),e.jsx("li",{children:"命名捕获组的值会显示在下方列表中"}),e.jsx("li",{children:"Reaction 替换预览显示最终生成的反应内容"}),e.jsx("li",{children:"如需修改正则,切换回构建器标签页"})]})]})]})]})})]})]})},z=()=>{h({...n,keyword_rules:[...n.keyword_rules,{keywords:[],reaction:""}]})},T=E=>{h({...n,keyword_rules:n.keyword_rules.filter((B,X)=>X!==E)})},L=(E,B,X)=>{const w=[...n.keyword_rules];typeof X=="string"&&(w[E]={...w[E],reaction:X}),h({...n,keyword_rules:w})},K=E=>{const B=[...n.keyword_rules];B[E]={...B[E],keywords:[...B[E].keywords||[],""]},h({...n,keyword_rules:B})},U=(E,B)=>{const X=[...n.keyword_rules];X[E]={...X[E],keywords:(X[E].keywords||[]).filter((w,D)=>D!==B)},h({...n,keyword_rules:X})},R=(E,B,X)=>{const w=[...n.keyword_rules],D=[...w[E].keywords||[]];D[B]=X,w[E]={...w[E],keywords:D},h({...n,keyword_rules:w})},ee=({rule:E})=>{const B=`{ regex = [${(E.regex||[]).map(X=>`"${X}"`).join(", ")}], reaction = "${E.reaction}" }`;return e.jsxs(Da,{children:[e.jsx(Oa,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",children:[e.jsx(Zt,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(Na,{className:"w-[95vw] sm:w-[500px]",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx(es,{className:"h-60 rounded-md bg-muted p-3",children:e.jsx("pre",{className:"font-mono text-xs break-all",children:B})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},V=({rule:E})=>{const B=`[[keyword_reaction.keyword_rules]] -keywords = [${(E.keywords||[]).map(X=>`"${X}"`).join(", ")}] -reaction = "${E.reaction}"`;return e.jsxs(Da,{children:[e.jsx(Oa,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",children:[e.jsx(Zt,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(Na,{className:"w-[95vw] sm:w-[500px]",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx(es,{className:"h-60 rounded-md bg-muted p-3",children:e.jsx("pre",{className:"font-mono text-xs whitespace-pre-wrap break-all",children:B})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"关键词反应配置"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"配置触发特定反应的关键词和正则表达式规则"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"正则表达式规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用正则表达式匹配消息内容"})]}),e.jsxs(N,{onClick:g,size:"sm",variant:"outline",children:[e.jsx(gt,{className:"h-4 w-4 mr-1"}),"添加正则规则"]})]}),e.jsxs("div",{className:"space-y-3",children:[n.regex_rules.map((E,B)=>e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["正则规则 ",B+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{regex:E.regex&&E.regex[0]||"",reaction:E.reaction,onRegexChange:X=>v(B,"regex",X),onReactionChange:X=>v(B,"reaction",X)}),e.jsx(ee,{rule:E}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(N,{size:"sm",variant:"ghost",children:e.jsx(ns,{className:"h-4 w-4"})})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:["确定要删除正则规则 ",B+1," 吗?此操作无法撤销。"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>_(B),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"正则表达式(Python 语法)"}),e.jsx(ce,{value:E.regex&&E.regex[0]||"",onChange:X=>v(B,"regex",X.target.value),placeholder:"例如:^(?P\\\\S{1,20})是这样的$ (点击正则编辑器按钮可视化构建)",className:"font-mono text-sm"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:'支持命名捕获组 (?Ppattern),可在 reaction 中使用 [name] 引用。点击"正则编辑器"可视化构建和测试!'})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"反应内容"}),e.jsx(Us,{value:E.reaction,onChange:X=>v(B,"reaction",X.target.value),placeholder:`触发后麦麦的反应... -可以使用 [捕获组名] 来引用正则表达式中的内容`,rows:3,className:"text-sm"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"使用 [捕获组名] 引用正则表达式中的命名捕获组,例如 [n] 会被替换为捕获的内容"})]})]})]},B)),n.regex_rules.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无正则规则,点击"添加正则规则"开始配置'})]})]}),e.jsxs("div",{className:"space-y-4 border-t pt-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"关键词规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用关键词列表匹配消息内容"})]}),e.jsxs(N,{onClick:z,size:"sm",variant:"outline",children:[e.jsx(gt,{className:"h-4 w-4 mr-1"}),"添加关键词规则"]})]}),e.jsxs("div",{className:"space-y-3",children:[n.keyword_rules.map((E,B)=>e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["关键词规则 ",B+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(V,{rule:E}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(N,{size:"sm",variant:"ghost",children:e.jsx(ns,{className:"h-4 w-4"})})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:["确定要删除关键词规则 ",B+1," 吗?此操作无法撤销。"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>T(B),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-xs font-medium",children:"关键词列表"}),e.jsxs(N,{onClick:()=>K(B),size:"sm",variant:"ghost",children:[e.jsx(gt,{className:"h-3 w-3 mr-1"}),"添加关键词"]})]}),e.jsxs("div",{className:"space-y-2",children:[(E.keywords||[]).map((X,w)=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{value:X,onChange:D=>R(B,w,D.target.value),placeholder:"关键词",className:"flex-1"}),e.jsx(N,{onClick:()=>U(B,w),size:"sm",variant:"ghost",children:e.jsx(ns,{className:"h-4 w-4"})})]},w)),(!E.keywords||E.keywords.length===0)&&e.jsx("p",{className:"text-xs text-muted-foreground text-center py-2",children:'暂无关键词,点击"添加关键词"开始配置'})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"反应内容"}),e.jsx(Us,{value:E.reaction,onChange:X=>L(B,"reaction",X.target.value),placeholder:"触发后麦麦的反应...",rows:3,className:"text-sm"})]})]})]},B)),n.keyword_rules.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无关键词规则,点击"添加关键词规则"开始配置'})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"回复后处理配置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"enable_response_post_process",checked:r.enable_response_post_process,onCheckedChange:E=>x({...r,enable_response_post_process:E})}),e.jsx(b,{htmlFor:"enable_response_post_process",className:"cursor-pointer",children:"启用回复后处理"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"包括错别字生成器和回复分割器"})]}),r.enable_response_post_process&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"border-t pt-6 space-y-4",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[e.jsx(qe,{id:"enable_chinese_typo",checked:c.enable,onCheckedChange:E=>f({...c,enable:E})}),e.jsx(b,{htmlFor:"enable_chinese_typo",className:"cursor-pointer font-semibold",children:"中文错别字生成器"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"为回复添加随机错别字,让麦麦的回复更自然"}),c.enable&&e.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"error_rate",className:"text-xs font-medium",children:"单字替换概率"}),e.jsx(ce,{id:"error_rate",type:"number",step:"0.001",min:"0",max:"1",value:c.error_rate,onChange:E=>f({...c,error_rate:parseFloat(E.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"min_freq",className:"text-xs font-medium",children:"最小字频阈值"}),e.jsx(ce,{id:"min_freq",type:"number",min:"0",value:c.min_freq,onChange:E=>f({...c,min_freq:parseInt(E.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"tone_error_rate",className:"text-xs font-medium",children:"声调错误概率"}),e.jsx(ce,{id:"tone_error_rate",type:"number",step:"0.01",min:"0",max:"1",value:c.tone_error_rate,onChange:E=>f({...c,tone_error_rate:parseFloat(E.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"word_replace_rate",className:"text-xs font-medium",children:"整词替换概率"}),e.jsx(ce,{id:"word_replace_rate",type:"number",step:"0.001",min:"0",max:"1",value:c.word_replace_rate,onChange:E=>f({...c,word_replace_rate:parseFloat(E.target.value)})})]})]})]})}),e.jsx("div",{className:"border-t pt-6 space-y-4",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[e.jsx(qe,{id:"enable_response_splitter",checked:d.enable,onCheckedChange:E=>j({...d,enable:E})}),e.jsx(b,{htmlFor:"enable_response_splitter",className:"cursor-pointer font-semibold",children:"回复分割器"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"控制回复的长度和句子数量"}),d.enable&&e.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_length",className:"text-xs font-medium",children:"最大长度"}),e.jsx(ce,{id:"max_length",type:"number",min:"1",value:d.max_length,onChange:E=>j({...d,max_length:parseInt(E.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大字符数"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_sentence_num",className:"text-xs font-medium",children:"最大句子数"}),e.jsx(ce,{id:"max_sentence_num",type:"number",min:"1",value:d.max_sentence_num,onChange:E=>j({...d,max_sentence_num:parseInt(E.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大句子数量"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"enable_kaomoji_protection",checked:d.enable_kaomoji_protection,onCheckedChange:E=>j({...d,enable_kaomoji_protection:E})}),e.jsx(b,{htmlFor:"enable_kaomoji_protection",className:"cursor-pointer",children:"启用颜文字保护"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"enable_overflow_return_all",checked:d.enable_overflow_return_all,onCheckedChange:E=>j({...d,enable_overflow_return_all:E})}),e.jsx(b,{htmlFor:"enable_overflow_return_all",className:"cursor-pointer",children:"超出时一次性返回全部"})]}),e.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"当句子数量超出限制时,合并后一次性返回所有内容"})]})]})})]})]})]})}function nw({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"情绪设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{checked:n.enable_mood,onCheckedChange:c=>r({...n,enable_mood:c})}),e.jsx(b,{className:"cursor-pointer",children:"启用情绪系统"})]}),n.enable_mood&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"情绪更新阈值"}),e.jsx(ce,{type:"number",min:"1",value:n.mood_update_threshold,onChange:c=>r({...n,mood_update_threshold:parseInt(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"越高,更新越慢"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"情感特征"}),e.jsx(Us,{value:n.emotion_style,onChange:c=>r({...n,emotion_style:c.target.value}),placeholder:"影响情绪的变化情况",rows:2})]})]})]})]})}function iw({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"语音设置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{checked:n.enable_asr,onCheckedChange:c=>r({...n,enable_asr:c})}),e.jsx(b,{className:"cursor-pointer",children:"启用语音识别"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"启用后麦麦可以识别语音消息,需要配置语音识别模型"})]})}function rw({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{checked:n.enable,onCheckedChange:c=>r({...n,enable:c})}),e.jsx(b,{className:"cursor-pointer",children:"启用 LPMM 知识库"})]}),n.enable&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"LPMM 模式"}),e.jsxs(Qe,{value:n.lpmm_mode,onValueChange:c=>r({...n,lpmm_mode:c}),children:[e.jsx(Ge,{children:e.jsx($e,{placeholder:"选择 LPMM 模式"})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"classic",children:"经典模式"}),e.jsx(ue,{value:"agent",children:"Agent 模式"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"同义词搜索 TopK"}),e.jsx(ce,{type:"number",min:"1",value:n.rag_synonym_search_top_k,onChange:c=>r({...n,rag_synonym_search_top_k:parseInt(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"同义词阈值"}),e.jsx(ce,{type:"number",step:"0.1",min:"0",max:"1",value:n.rag_synonym_threshold,onChange:c=>r({...n,rag_synonym_threshold:parseFloat(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"实体提取线程数"}),e.jsx(ce,{type:"number",min:"1",value:n.info_extraction_workers,onChange:c=>r({...n,info_extraction_workers:parseInt(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"嵌入向量维度"}),e.jsx(ce,{type:"number",min:"1",value:n.embedding_dimension,onChange:c=>r({...n,embedding_dimension:parseInt(c.target.value)})})]})]})]})]})]})}function cw({config:n,onChange:r}){const[c,d]=u.useState(""),[h,x]=u.useState("WARNING"),f=()=>{c&&!n.suppress_libraries.includes(c)&&(r({...n,suppress_libraries:[...n.suppress_libraries,c]}),d(""))},j=T=>{r({...n,suppress_libraries:n.suppress_libraries.filter(L=>L!==T)})},g=()=>{c&&!n.library_log_levels[c]&&(r({...n,library_log_levels:{...n.library_log_levels,[c]:h}}),d(""),x("WARNING"))},_=T=>{const L={...n.library_log_levels};delete L[T],r({...n,library_log_levels:L})},v=["DEBUG","INFO","WARNING","ERROR","CRITICAL"],k=["FULL","compact","lite"],z=["none","title","full"];return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"日志配置"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"日期格式"}),e.jsx(ce,{value:n.date_style,onChange:T=>r({...n,date_style:T.target.value}),placeholder:"例如: m-d H:i:s"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"m=月, d=日, H=时, i=分, s=秒"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"日志级别样式"}),e.jsxs(Qe,{value:n.log_level_style,onValueChange:T=>r({...n,log_level_style:T}),children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsx(Ve,{children:k.map(T=>e.jsx(ue,{value:T,children:T},T))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"日志文本颜色"}),e.jsxs(Qe,{value:n.color_text,onValueChange:T=>r({...n,color_text:T}),children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsx(Ve,{children:z.map(T=>e.jsx(ue,{value:T,children:T},T))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"全局日志级别"}),e.jsxs(Qe,{value:n.log_level,onValueChange:T=>r({...n,log_level:T}),children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsx(Ve,{children:v.map(T=>e.jsx(ue,{value:T,children:T},T))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"控制台日志级别"}),e.jsxs(Qe,{value:n.console_log_level,onValueChange:T=>r({...n,console_log_level:T}),children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsx(Ve,{children:v.map(T=>e.jsx(ue,{value:T,children:T},T))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"文件日志级别"}),e.jsxs(Qe,{value:n.file_log_level,onValueChange:T=>r({...n,file_log_level:T}),children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsx(Ve,{children:v.map(T=>e.jsx(ue,{value:T,children:T},T))})]})]})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"mb-2 block",children:"完全屏蔽的库"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(ce,{value:c,onChange:T=>d(T.target.value),placeholder:"输入库名",className:"flex-1",onKeyDown:T=>{T.key==="Enter"&&(T.preventDefault(),f())}}),e.jsx(N,{onClick:f,size:"sm",className:"flex-shrink-0",children:e.jsx(gt,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:n.suppress_libraries.map(T=>e.jsxs("div",{className:"flex items-center gap-1 bg-secondary px-3 py-1 rounded-md",children:[e.jsx("span",{className:"text-sm",children:T}),e.jsx(N,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0",onClick:()=>j(T),children:e.jsx(ns,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},T))})]}),e.jsxs("div",{children:[e.jsx(b,{className:"mb-2 block",children:"特定库的日志级别"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(ce,{value:c,onChange:T=>d(T.target.value),placeholder:"输入库名",className:"flex-1"}),e.jsxs(Qe,{value:h,onValueChange:x,children:[e.jsx(Ge,{className:"w-32",children:e.jsx($e,{})}),e.jsx(Ve,{children:v.map(T=>e.jsx(ue,{value:T,children:T},T))})]}),e.jsx(N,{onClick:g,size:"sm",children:e.jsx(gt,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"space-y-2",children:Object.entries(n.library_log_levels).map(([T,L])=>e.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[e.jsx("span",{className:"text-sm font-medium",children:T}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:L}),e.jsx(N,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>_(T),children:e.jsx(ns,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]})]},T))})]})]})}function ow({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"调试配置"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否在日志中显示提示词"})]}),e.jsx(qe,{checked:n.show_prompt,onCheckedChange:c=>r({...n,show_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示回复器 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的提示词"})]}),e.jsx(qe,{checked:n.show_replyer_prompt,onCheckedChange:c=>r({...n,show_replyer_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示回复器推理"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的推理过程"})]}),e.jsx(qe,{checked:n.show_replyer_reasoning,onCheckedChange:c=>r({...n,show_replyer_reasoning:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示 Jargon Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示术语相关的提示词"})]}),e.jsx(qe,{checked:n.show_jargon_prompt,onCheckedChange:c=>r({...n,show_jargon_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示记忆检索 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示记忆检索相关的提示词"})]}),e.jsx(qe,{checked:n.show_memory_prompt,onCheckedChange:c=>r({...n,show_memory_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示 Planner Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 Planner 的提示词和原始返回结果"})]}),e.jsx(qe,{checked:n.show_planner_prompt,onCheckedChange:c=>r({...n,show_planner_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示 LPMM 相关文段"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 LPMM 知识库找到的相关文段日志"})]}),e.jsx(qe,{checked:n.show_lpmm_paragraph,onCheckedChange:c=>r({...n,show_lpmm_paragraph:c})})]})]})]})}function dw({config:n,onChange:r}){const[c,d]=u.useState(""),h=()=>{c&&!n.auth_token.includes(c)&&(r({...n,auth_token:[...n.auth_token,c]}),d(""))},x=f=>{r({...n,auth_token:n.auth_token.filter((j,g)=>g!==f)})};return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"MaimMessage 服务配置"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"启用自定义服务器"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否使用自定义的 MaimMessage 服务器"})]}),e.jsx(qe,{checked:n.use_custom,onCheckedChange:f=>r({...n,use_custom:f})})]}),n.use_custom&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"主机地址"}),e.jsx(ce,{value:n.host,onChange:f=>r({...n,host:f.target.value}),placeholder:"127.0.0.1"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"端口号"}),e.jsx(ce,{type:"number",value:n.port,onChange:f=>r({...n,port:parseInt(f.target.value)}),placeholder:"8090"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"连接模式"}),e.jsxs(Qe,{value:n.mode,onValueChange:f=>r({...n,mode:f}),children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"ws",children:"WebSocket (ws)"}),e.jsx(ue,{value:"tcp",children:"TCP"})]})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{checked:n.use_wss,onCheckedChange:f=>r({...n,use_wss:f}),disabled:n.mode!=="ws"}),e.jsx(b,{children:"使用 WSS 安全连接"})]})]}),n.use_wss&&n.mode==="ws"&&e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"SSL 证书文件路径"}),e.jsx(ce,{value:n.cert_file,onChange:f=>r({...n,cert_file:f.target.value}),placeholder:"cert.pem"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"SSL 密钥文件路径"}),e.jsx(ce,{value:n.key_file,onChange:f=>r({...n,key_file:f.target.value}),placeholder:"key.pem"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"mb-2 block",children:"认证令牌"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:"用于 API 验证,为空则不启用验证"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(ce,{value:c,onChange:f=>d(f.target.value),placeholder:"输入认证令牌",onKeyDown:f=>{f.key==="Enter"&&(f.preventDefault(),h())}}),e.jsx(N,{onClick:h,size:"sm",children:e.jsx(gt,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"space-y-2",children:n.auth_token.map((f,j)=>e.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[e.jsx("span",{className:"text-sm font-mono",children:f}),e.jsx(N,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>x(j),children:e.jsx(ns,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},j))})]})]})}function uw({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"统计信息"}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"启用统计信息发送"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"发送匿名统计信息,帮助我们了解全球有多少只麦麦在运行"})]}),e.jsx(qe,{checked:n.enable,onCheckedChange:c=>r({...n,enable:c})})]})]})}const ii=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{className:"relative w-full overflow-auto",children:e.jsx("table",{ref:c,className:$("w-full caption-bottom text-sm",n),...r})}));ii.displayName="Table";const ri=u.forwardRef(({className:n,...r},c)=>e.jsx("thead",{ref:c,className:$("[&_tr]:border-b",n),...r}));ri.displayName="TableHeader";const ci=u.forwardRef(({className:n,...r},c)=>e.jsx("tbody",{ref:c,className:$("[&_tr:last-child]:border-0",n),...r}));ci.displayName="TableBody";const mw=u.forwardRef(({className:n,...r},c)=>e.jsx("tfoot",{ref:c,className:$("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",n),...r}));mw.displayName="TableFooter";const pt=u.forwardRef(({className:n,...r},c)=>e.jsx("tr",{ref:c,className:$("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",n),...r}));pt.displayName="TableRow";const ls=u.forwardRef(({className:n,...r},c)=>e.jsx("th",{ref:c,className:$("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",n),...r}));ls.displayName="TableHead";const Ye=u.forwardRef(({className:n,...r},c)=>e.jsx("td",{ref:c,className:$("px-4 py-3 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",n),...r}));Ye.displayName="TableCell";const hw=u.forwardRef(({className:n,...r},c)=>e.jsx("caption",{ref:c,className:$("mt-4 text-sm text-muted-foreground",n),...r}));hw.displayName="TableCaption";const oo=u.forwardRef(({className:n,...r},c)=>e.jsx(Lt,{ref:c,className:$("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",n),...r}));oo.displayName=Lt.displayName;const uo=u.forwardRef(({className:n,...r},c)=>e.jsxs("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[e.jsx(St,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),e.jsx(Lt.Input,{ref:c,className:$("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",n),...r})]}));uo.displayName=Lt.Input.displayName;const mo=u.forwardRef(({className:n,...r},c)=>e.jsx(Lt.List,{ref:c,className:$("max-h-[300px] overflow-y-auto overflow-x-hidden",n),...r}));mo.displayName=Lt.List.displayName;const ho=u.forwardRef((n,r)=>e.jsx(Lt.Empty,{ref:r,className:"py-6 text-center text-sm",...n}));ho.displayName=Lt.Empty.displayName;const vr=u.forwardRef(({className:n,...r},c)=>e.jsx(Lt.Group,{ref:c,className:$("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",n),...r}));vr.displayName=Lt.Group.displayName;const xw=u.forwardRef(({className:n,...r},c)=>e.jsx(Lt.Separator,{ref:c,className:$("-mx-1 h-px bg-border",n),...r}));xw.displayName=Lt.Separator.displayName;const yr=u.forwardRef(({className:n,...r},c)=>e.jsx(Lt.Item,{ref:c,className:$("relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",n),...r}));yr.displayName=Lt.Item.displayName;const yt=u.forwardRef(({className:n,...r},c)=>e.jsx(rg,{ref:c,className:$("grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",n),...r,children:e.jsx(fN,{className:$("grid place-content-center text-current"),children:e.jsx(ha,{className:"h-4 w-4"})})}));yt.displayName=rg.displayName;const Ug=u.createContext(null),Bg="maibot-completed-tours";function fw(){try{const n=localStorage.getItem(Bg);return n?new Set(JSON.parse(n)):new Set}catch{return new Set}}function cp(n){localStorage.setItem(Bg,JSON.stringify([...n]))}function pw({children:n}){const[r,c]=u.useState({activeTourId:null,stepIndex:0,isRunning:!1}),d=u.useRef(new Map),[,h]=u.useState(0),[x,f]=u.useState(fw),j=u.useCallback((V,E)=>{d.current.set(V,E),h(B=>B+1)},[]),g=u.useCallback(V=>{d.current.delete(V),c(E=>E.activeTourId===V?{...E,activeTourId:null,isRunning:!1,stepIndex:0}:E)},[]),_=u.useCallback((V,E=0)=>{d.current.has(V)&&c({activeTourId:V,stepIndex:E,isRunning:!0})},[]),v=u.useCallback(()=>{c(V=>({...V,isRunning:!1}))},[]),k=u.useCallback(V=>{c(E=>({...E,stepIndex:V}))},[]),z=u.useCallback(()=>{c(V=>({...V,stepIndex:V.stepIndex+1}))},[]),T=u.useCallback(()=>{c(V=>({...V,stepIndex:Math.max(0,V.stepIndex-1)}))},[]),L=u.useCallback(()=>r.activeTourId?d.current.get(r.activeTourId)||[]:[],[r.activeTourId]),K=u.useCallback(V=>{f(E=>{const B=new Set(E);return B.add(V),cp(B),B})},[]),U=u.useCallback(V=>{const{action:E,index:B,status:X,type:w}=V,D=["finished","skipped"];if(E==="close"){c(te=>({...te,isRunning:!1,stepIndex:0}));return}D.includes(X)?c(te=>(X==="finished"&&te.activeTourId&&setTimeout(()=>K(te.activeTourId),0),{...te,isRunning:!1,stepIndex:0})):w==="step:after"&&(E==="next"?c(te=>({...te,stepIndex:B+1})):E==="prev"&&c(te=>({...te,stepIndex:B-1})))},[K]),R=u.useCallback(V=>x.has(V),[x]),ee=u.useCallback(V=>{f(E=>{const B=new Set(E);return B.delete(V),cp(B),B})},[]);return e.jsx(Ug.Provider,{value:{state:r,tours:d.current,registerTour:j,unregisterTour:g,startTour:_,stopTour:v,goToStep:k,nextStep:z,prevStep:T,getCurrentSteps:L,handleJoyrideCallback:U,isTourCompleted:R,markTourCompleted:K,resetTourCompleted:ee},children:n})}function Ju(){const n=u.useContext(Ug);if(!n)throw new Error("useTour must be used within a TourProvider");return n}const gw={options:{zIndex:1e4,primaryColor:"hsl(var(--primary))",textColor:"hsl(var(--foreground))",backgroundColor:"hsl(var(--background))",arrowColor:"hsl(var(--background))",overlayColor:"rgba(0, 0, 0, 0.5)"},tooltip:{borderRadius:"var(--radius)",padding:"1rem"},tooltipContainer:{textAlign:"left"},tooltipTitle:{fontSize:"1rem",fontWeight:600,marginBottom:"0.5rem"},tooltipContent:{fontSize:"0.875rem",padding:"0.5rem 0"},buttonNext:{backgroundColor:"hsl(var(--primary))",color:"hsl(var(--primary-foreground))",borderRadius:"calc(var(--radius) - 2px)",fontSize:"0.875rem",padding:"0.5rem 1rem"},buttonBack:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem",marginRight:"0.5rem"},buttonSkip:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem"},buttonClose:{color:"hsl(var(--muted-foreground))"},spotlight:{borderRadius:"var(--radius)"}},jw={back:"上一步",close:"关闭",last:"完成",next:"下一步",nextLabelWithProgress:"下一步 ({step}/{steps})",open:"打开对话框",skip:"跳过"};function vw(){const{state:n,getCurrentSteps:r,handleJoyrideCallback:c}=Ju(),d=r(),[h,x]=u.useState(!1),f=u.useRef(n.stepIndex),j=u.useRef(null);u.useEffect(()=>{f.current!==n.stepIndex&&(x(!1),f.current=n.stepIndex)},[n.stepIndex]),u.useEffect(()=>{if(!n.isRunning||d.length===0){x(!1);return}const v=d[n.stepIndex];if(!v){x(!1);return}const k=v.target;if(k==="body"){x(!0);return}x(!1);const z=setTimeout(()=>{const T=()=>{const R=document.querySelector(k);if(R){const ee=R.getBoundingClientRect();if(ee.width>0&&ee.height>0)return!0}return!1};if(T()){setTimeout(()=>x(!0),100);return}const L=setInterval(()=>{T()&&(clearInterval(L),setTimeout(()=>x(!0),100))},100),K=setTimeout(()=>{clearInterval(L),x(!0)},5e3),U=()=>{clearInterval(L),clearTimeout(K)};j.current=U},150);return()=>{clearTimeout(z),j.current&&(j.current(),j.current=null)}},[n.isRunning,n.stepIndex,d]);const g=u.useRef(null);if(u.useEffect(()=>{let v=document.getElementById("tour-portal-container");return v||(v=document.createElement("div"),v.id="tour-portal-container",v.style.cssText="position: fixed; top: 0; left: 0; z-index: 99999; pointer-events: none;",document.body.appendChild(v)),g.current=v,()=>{}},[]),!n.isRunning||d.length===0||!h)return null;const _=e.jsx(ib,{steps:d,stepIndex:n.stepIndex,run:n.isRunning,continuous:!0,showSkipButton:!0,showProgress:!0,disableOverlayClose:!0,disableScrolling:!1,disableScrollParentFix:!1,callback:c,styles:gw,locale:jw,scrollOffset:80,scrollToFirstStep:!0,floaterProps:{styles:{floater:{zIndex:99999}},disableAnimation:!0}},`tour-step-${n.stepIndex}`);return g.current?xy.createPortal(_,g.current):_}const ll="model-assignment-tour",Hg=[{target:"body",content:"本引导旨在帮助你配置模型提供商和对应的模型,并为麦麦的各个组件分配合适的模型。",placement:"center",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="sidebar-model-provider"]',content:'第一步,你需要配置模型提供商。模型提供商决定了你要使用谁家的模型,无论是单一厂商(如 DeepSeek),还是模型平台(如 Siliconflow),都可以在这里进行配置。点击"下一步"进入配置页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-provider-button"]',content:'点击"添加提供商"按钮,开始配置你的模型提供商。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="provider-dialog"]',content:"在这里,你可以选择你想要配置的模型提供商,填写相关信息后保存即可。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-name-input"]',content:"这里的名称是你为这个模型提供商起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-apikey-input"]',content:"这里需要填写你从模型提供商那里获取的 API 密钥,用于验证和调用模型服务。对于不同的提供商,获取 API 密钥的方式可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-url-input"]',content:"这里需要填写模型提供商的 API 访问地址,确保填写正确以便系统能够连接到模型服务。对于不同的提供商,API 地址可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-template-select"]',content:"当然,如果你不知道如何填写这些信息,很多模型提供商在这里都提供了预设的模板供你选择,选择对应的模板后,相关信息会自动填充。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-save-button"]',content:"填写完所有信息后,点击保存按钮,模型提供商就配置完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-cancel-button"]',content:"因为这次咱们什么都没有填写,所以点击取消按钮退出吧。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="sidebar-model-management"]',content:'配置好模型提供商后,接下来我们需要为麦麦添加模型并分配功能。点击"下一步"进入模型管理页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-model-button"]',content:'在为麦麦的组件分配模型之前,首先需要添加你想要分配的模型,点击"添加模型"按钮开始添加。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="model-dialog"]',content:"在这里,你可以选择你之前配置好的模型提供商,然后选择对应的模型来添加。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-name-input"]',content:"这里的模型名称是你为这个模型起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-provider-select"]',content:"在这里选择你之前配置好的模型提供商,这样系统才能知道你要添加哪个提供商的模型。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-identifier-input"]',content:"这里需要填写你想要添加的模型的标识符,不同的模型提供商可能有不同的标识符格式,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-save-button"]',content:"填写完所有信息后,点击保存按钮,模型就添加完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-cancel-button"]',content:"当然,因为这次咱们什么都没有填写,所以直接点击取消按钮退出吧,等你准备好了再来添加模型。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="tasks-tab-trigger"]',content:'最后一步,添加好模型后,切换到"为模型分配功能"标签页,为麦麦的各个组件分配合适的模型。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="task-model-select"]',content:"在这里,你可以为每个组件选择一个或多个合适的模型,选择完成后配置会自动保存。恭喜你完成了模型配置的学习!",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1}],qg={0:"/config/model",1:"/config/model",2:"/config/modelProvider",3:"/config/modelProvider",4:"/config/modelProvider",5:"/config/modelProvider",6:"/config/modelProvider",7:"/config/modelProvider",8:"/config/modelProvider",9:"/config/modelProvider",10:"/config/modelProvider",11:"/config/model",12:"/config/model",13:"/config/model",14:"/config/model",15:"/config/model",16:"/config/model",17:"/config/model",18:"/config/model",19:"/config/model"},rr=[{id:"siliconflow",name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",client_type:"openai",display_name:"硅基流动 (SiliconFlow)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"deepseek",name:"DeepSeek",base_url:"https://api.deepseek.com",client_type:"openai",display_name:"DeepSeek",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"rinkoai",name:"RinkoAI",base_url:"https://rinkoai.com/v1",client_type:"openai",display_name:"RinkoAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"zhipu",name:"ZhipuAI",base_url:"https://open.bigmodel.cn/api/paas/v4",client_type:"openai",display_name:"智谱 AI (ZhipuAI / GLM)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"moonshot",name:"Moonshot",base_url:"https://api.moonshot.cn/v1",client_type:"openai",display_name:"月之暗面 (Moonshot / Kimi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"doubao",name:"Doubao",base_url:"https://ark.cn-beijing.volces.com/api/v3",client_type:"openai",display_name:"字节豆包 (Doubao)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"alibaba",name:"Alibaba",base_url:"https://dashscope.aliyuncs.com/compatible-mode/v1",client_type:"openai",display_name:"阿里云百炼 (Alibaba Qwen)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"baichuan",name:"Baichuan",base_url:"https://api.baichuan-ai.com/v1",client_type:"openai",display_name:"百川智能 (Baichuan)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"minimax",name:"MiniMax",base_url:"https://api.minimax.chat/v1",client_type:"openai",display_name:"MiniMax (海螺 AI)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"stepfun",name:"StepFun",base_url:"https://api.stepfun.com/v1",client_type:"openai",display_name:"阶跃星辰 (StepFun)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"lingyi",name:"Lingyi",base_url:"https://api.lingyiwanwu.com/v1",client_type:"openai",display_name:"零一万物 (Lingyi / Yi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"openai",name:"OpenAI",base_url:"https://api.openai.com/v1",client_type:"openai",display_name:"OpenAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"xai",name:"xAI",base_url:"https://api.x.ai/v1",client_type:"openai",display_name:"xAI (Grok)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"anthropic",name:"Anthropic",base_url:"https://api.anthropic.com/v1",client_type:"openai",display_name:"Anthropic (Claude)"},{id:"gemini",name:"Gemini",base_url:"https://generativelanguage.googleapis.com/v1beta",client_type:"gemini",display_name:"Google Gemini",modelFetcher:{endpoint:"/models",parser:"gemini"}},{id:"cohere",name:"Cohere",base_url:"https://api.cohere.ai/v1",client_type:"openai",display_name:"Cohere"},{id:"groq",name:"Groq",base_url:"https://api.groq.com/openai/v1",client_type:"openai",display_name:"Groq",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"together",name:"Together AI",base_url:"https://api.together.xyz/v1",client_type:"openai",display_name:"Together AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"fireworks",name:"Fireworks",base_url:"https://api.fireworks.ai/inference/v1",client_type:"openai",display_name:"Fireworks AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"mistral",name:"Mistral",base_url:"https://api.mistral.ai/v1",client_type:"openai",display_name:"Mistral AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"perplexity",name:"Perplexity",base_url:"https://api.perplexity.ai",client_type:"openai",display_name:"Perplexity AI"},{id:"custom",name:"",base_url:"",client_type:"openai",display_name:"自定义"}];function op(n){return n?n.replace(/\/+$/,"").toLowerCase():""}function yw(n){if(!n)return null;const r=op(n);return rr.find(c=>c.id!=="custom"&&op(c.base_url)===r)||null}function Nw(){const[n,r]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[g,_]=u.useState(!1),[v,k]=u.useState(!1),[z,T]=u.useState(!1),[L,K]=u.useState(!1),[U,R]=u.useState(null),[ee,V]=u.useState(null),[E,B]=u.useState("custom"),[X,w]=u.useState(!1),[D,te]=u.useState(!1),[xe,be]=u.useState(null),[ye,ve]=u.useState(!1),[pe,Ne]=u.useState(""),[y,q]=u.useState(new Set),[H,ne]=u.useState(!1),[S,me]=u.useState(1),[he,Q]=u.useState(20),[oe,ge]=u.useState(""),[le,O]=u.useState({}),[F,A]=u.useState(new Set),[W,_e]=u.useState(new Map),{toast:Me}=Bs(),ss=It(),{state:Ie,goToStep:Rs,registerTour:qs}=Ju(),ie=u.useRef(null),we=u.useRef(!0);u.useEffect(()=>{qs(ll,Hg)},[qs]),u.useEffect(()=>{if(Ie.activeTourId===ll&&Ie.isRunning){const P=qg[Ie.stepIndex];P&&!window.location.pathname.endsWith(P.replace("/config/",""))&&ss({to:P})}},[Ie.stepIndex,Ie.activeTourId,Ie.isRunning,ss]);const Ke=u.useRef(Ie.stepIndex);u.useEffect(()=>{if(Ie.activeTourId===ll&&Ie.isRunning){const P=Ke.current,je=Ie.stepIndex;P>=3&&P<=9&&je<3&&K(!1),P>=10&&je>=3&&je<=9&&(O({}),B("custom"),R({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10}),V(null),ve(!1),K(!0)),Ke.current=je}},[Ie.stepIndex,Ie.activeTourId,Ie.isRunning]),u.useEffect(()=>{if(Ie.activeTourId!==ll||!Ie.isRunning)return;const P=je=>{const Ae=je.target,tt=Ie.stepIndex;tt===2&&Ae.closest('[data-tour="add-provider-button"]')?setTimeout(()=>Rs(3),300):tt===9&&Ae.closest('[data-tour="provider-cancel-button"]')&&setTimeout(()=>Rs(10),300)};return document.addEventListener("click",P,!0),()=>document.removeEventListener("click",P,!0)},[Ie,Rs]),u.useEffect(()=>{Le()},[]);const Le=async()=>{try{d(!0);const P=await ei();r(P.api_providers||[]),_(!1),we.current=!1}catch(P){console.error("加载配置失败:",P)}finally{d(!1)}},st=async()=>{try{k(!0),co().catch(()=>{}),T(!0)}catch(P){console.error("重启失败:",P),T(!1),Me({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),k(!1)}},Jt=async()=>{try{x(!0),ie.current&&clearTimeout(ie.current);const P=await ei();P.api_providers=n,await io(P),_(!1),Me({title:"保存成功",description:"正在重启麦麦..."}),await st()}catch(P){console.error("保存配置失败:",P),Me({title:"保存失败",description:P.message,variant:"destructive"}),x(!1)}},bt=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},Je=()=>{T(!1),k(!1),Me({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},Ue=u.useCallback(async P=>{if(!we.current)try{j(!0),await qu("api_providers",P),_(!1)}catch(je){console.error("自动保存失败:",je),_(!0)}finally{j(!1)}},[]);u.useEffect(()=>{if(!we.current)return _(!0),ie.current&&clearTimeout(ie.current),ie.current=setTimeout(()=>{Ue(n)},2e3),()=>{ie.current&&clearTimeout(ie.current)}},[n,Ue]);const jt=async()=>{try{x(!0),ie.current&&clearTimeout(ie.current);const P=await ei();P.api_providers=n,await io(P),_(!1),Me({title:"保存成功",description:"模型提供商配置已保存"})}catch(P){console.error("保存配置失败:",P),Me({title:"保存失败",description:P.message,variant:"destructive"})}finally{x(!1)}},nt=(P,je)=>{if(O({}),P){const Ae=rr.find(tt=>tt.base_url===P.base_url&&tt.client_type===P.client_type);B(Ae?.id||"custom"),R(P)}else B("custom"),R({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10});V(je),ve(!1),K(!0)},Ct=P=>{B(P),w(!1);const je=rr.find(Ae=>Ae.id===P);je&&je.id!=="custom"?R(Ae=>({...Ae,name:je.name,base_url:je.base_url,client_type:je.client_type})):je?.id==="custom"&&R(Ae=>({...Ae,name:"",base_url:"",client_type:"openai"}))},kt=u.useMemo(()=>E!=="custom",[E]),rl=async()=>{if(U?.api_key)try{await navigator.clipboard.writeText(U.api_key),Me({title:"复制成功",description:"API Key 已复制到剪贴板"})}catch{Me({title:"复制失败",description:"无法访问剪贴板",variant:"destructive"})}},cl=()=>{if(!U)return;const P={};if(U.name?.trim()||(P.name="请输入提供商名称"),U.base_url?.trim()||(P.base_url="请输入基础 URL"),U.api_key?.trim()||(P.api_key="请输入 API Key"),Object.keys(P).length>0){O(P);return}O({});const je={...U,max_retry:U.max_retry??2,timeout:U.timeout??30,retry_interval:U.retry_interval??10};if(ee!==null){const Ae=[...n];Ae[ee]=je,r(Ae)}else r([...n,je]);K(!1),R(null),V(null)},ol=P=>{if(!P&&U){const je={...U,max_retry:U.max_retry??2,timeout:U.timeout??30,retry_interval:U.retry_interval??10};R(je)}K(P)},Se=P=>{be(P),te(!0)},Re=()=>{if(xe!==null){const P=n.filter((je,Ae)=>Ae!==xe);r(P),Me({title:"删除成功",description:"提供商已从列表中移除"})}te(!1),be(null)},it=P=>{const je=new Set(y);je.has(P)?je.delete(P):je.add(P),q(je)},ot=()=>{if(y.size===dt.length)q(new Set);else{const P=dt.map((je,Ae)=>n.findIndex(tt=>tt===dt[Ae]));q(new Set(P))}},di=()=>{if(y.size===0){Me({title:"提示",description:"请先选择要删除的提供商",variant:"default"});return}ne(!0)},on=()=>{const P=n.filter((je,Ae)=>!y.has(Ae));r(P),q(new Set),ne(!1),Me({title:"批量删除成功",description:`已删除 ${y.size} 个提供商`})},dt=n.filter(P=>{if(!pe)return!0;const je=pe.toLowerCase();return P.name.toLowerCase().includes(je)||P.base_url.toLowerCase().includes(je)||P.client_type.toLowerCase().includes(je)}),Pt=Math.ceil(dt.length/he),Wt=dt.slice((S-1)*he,S*he),La=()=>{const P=parseInt(oe);P>=1&&P<=Pt&&(me(P),ge(""))},Ut=async P=>{A(je=>new Set(je).add(P));try{const je=await $0(P);_e(Ae=>new Map(Ae).set(P,je)),je.network_ok?je.api_key_valid===!0?Me({title:"连接正常",description:`${P} 网络连接正常,API Key 有效 (${je.latency_ms}ms)`}):je.api_key_valid===!1?Me({title:"连接正常但 Key 无效",description:`${P} 网络连接正常,但 API Key 无效或已过期`,variant:"destructive"}):Me({title:"网络连接正常",description:`${P} 可以访问 (${je.latency_ms}ms)`}):Me({title:"连接失败",description:je.error||"无法连接到提供商",variant:"destructive"})}catch(je){Me({title:"测试失败",description:je.message,variant:"destructive"})}finally{A(je=>{const Ae=new Set(je);return Ae.delete(P),Ae})}},Ua=async()=>{for(const P of n)await Ut(P.name)},ba=P=>{const je=F.has(P),Ae=W.get(P);return je?e.jsxs(Xe,{variant:"secondary",className:"gap-1",children:[e.jsx(vt,{className:"h-3 w-3 animate-spin"}),"测试中"]}):Ae?Ae.network_ok?Ae.api_key_valid===!0?e.jsxs(Xe,{className:"gap-1 bg-green-600 hover:bg-green-700",children:[e.jsx(xa,{className:"h-3 w-3"}),"正常"]}):Ae.api_key_valid===!1?e.jsxs(Xe,{variant:"destructive",className:"gap-1",children:[e.jsx(Aa,{className:"h-3 w-3"}),"Key无效"]}):e.jsxs(Xe,{className:"gap-1 bg-blue-600 hover:bg-blue-700",children:[e.jsx(xa,{className:"h-3 w-3"}),"可访问"]}):e.jsxs(Xe,{variant:"destructive",className:"gap-1",children:[e.jsx(pg,{className:"h-3 w-3"}),"离线"]}):null};return c?e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})}):e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"AI模型厂商配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理 AI 模型厂商的 API 配置"})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[y.size>0&&e.jsxs(N,{onClick:di,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(ns,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",y.size,")"]}),e.jsxs(N,{onClick:Ua,size:"sm",variant:"outline",className:"w-full sm:w-auto",disabled:n.length===0||F.size>0,children:[e.jsx(ln,{className:"mr-2 h-4 w-4"}),F.size>0?`测试中 (${F.size})`:"测试全部"]}),e.jsxs(N,{onClick:()=>nt(null,null),size:"sm",className:"w-full sm:w-auto","data-tour":"add-provider-button",children:[e.jsx(gt,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加提供商"]}),e.jsxs(N,{onClick:jt,disabled:h||f||!g||v,size:"sm",variant:"outline",className:"w-full sm:w-auto sm:min-w-[120px]",children:[e.jsx(br,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),h?"保存中...":f?"自动保存中...":g?"保存配置":"已保存"]}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(N,{disabled:h||f||v,size:"sm",className:"w-full sm:w-auto sm:min-w-[120px]",children:[e.jsx(Nr,{className:"mr-2 h-4 w-4"}),v?"重启中...":g?"保存并重启":"重启麦麦"]})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认重启麦麦?"}),e.jsx(ms,{className:"space-y-3",asChild:!0,children:e.jsxs("div",{children:[e.jsx("p",{children:g?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),e.jsxs(ua,{className:"border-yellow-500/50 bg-yellow-500/10",children:[e.jsx(Xt,{className:"h-4 w-4 text-yellow-600"}),e.jsxs(ma,{className:"text-yellow-900 dark:text-yellow-100",children:[e.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",e.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",e.jsxs(Os,{children:[e.jsx(ni,{asChild:!0,children:e.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[e.jsx(ro,{className:"h-3 w-3"}),"如何结束程序?"]})}),e.jsxs(Es,{className:"max-w-2xl",children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"如何结束使用重启功能后的麦麦程序"}),e.jsx($s,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),e.jsxs(Kt,{defaultValue:"windows",className:"w-full",children:[e.jsxs(Rt,{className:"grid w-full grid-cols-3",children:[e.jsx(He,{value:"windows",children:"Windows"}),e.jsx(He,{value:"macos",children:"macOS"}),e.jsx(He,{value:"linux",children:"Linux"})]}),e.jsxs(We,{value:"windows",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),e.jsxs("li",{children:["在“进程”或“详细信息”标签页中找到 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),e.jsx("li",{children:"右键点击并选择“结束任务”"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),e.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),e.jsxs(We,{value:"macos",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"})," 打开 Spotlight,搜索“活动监视器”"]}),e.jsxs("li",{children:["在进程列表中找到 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),e.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:"ps aux | grep python | grep -v grep"}),e.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),e.jsx("p",{children:"kill -9 "}),e.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"pkill -9 python"})]})]})]}),e.jsxs(We,{value:"linux",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:"ps aux | grep python | grep -v grep"}),e.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),e.jsx("p",{children:"kill -9 "}),e.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),e.jsx("p",{children:'pkill -9 -f "bot.py"'}),e.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"pkill -9 python"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["在终端输入 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),e.jsx(Is,{children:e.jsx(Zu,{asChild:!0,children:e.jsx(N,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:g?Jt:st,children:g?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsxs(ua,{children:[e.jsx(Xt,{className:"h-4 w-4"}),e.jsxs(ma,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),e.jsxs(es,{className:"h-[calc(100vh-260px)]",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2 mb-4",children:[e.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[e.jsx(St,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索提供商名称、URL 或类型...",value:pe,onChange:P=>Ne(P.target.value),className:"pl-9"})]}),pe&&e.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",dt.length," 个结果"]})]}),e.jsx("div",{className:"md:hidden space-y-3",children:dt.length===0?e.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:pe?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'}):Wt.map((P,je)=>{const Ae=n.findIndex(tt=>tt===P);return e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("h3",{className:"font-semibold text-base truncate",children:P.name}),ba(P.name)]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1 break-all",children:P.base_url})]}),e.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>Ut(P.name),disabled:F.has(P.name),title:"测试连接",children:F.has(P.name)?e.jsx(vt,{className:"h-4 w-4 animate-spin"}):e.jsx(ln,{className:"h-4 w-4"})}),e.jsx(N,{variant:"default",size:"sm",onClick:()=>nt(P,Ae),children:e.jsx(nn,{className:"h-4 w-4",strokeWidth:2,fill:"none"})}),e.jsx(N,{size:"sm",onClick:()=>Se(Ae),className:"bg-red-600 hover:bg-red-700 text-white",children:e.jsx(ns,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"客户端类型"}),e.jsx("p",{className:"font-medium",children:P.client_type})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"最大重试"}),e.jsx("p",{className:"font-medium",children:P.max_retry})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"超时(秒)"}),e.jsx("p",{className:"font-medium",children:P.timeout})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"重试间隔(秒)"}),e.jsx("p",{className:"font-medium",children:P.retry_interval})]})]})]},je)})}),e.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(ii,{children:[e.jsx(ri,{children:e.jsxs(pt,{children:[e.jsx(ls,{className:"w-12",children:e.jsx(yt,{checked:y.size===dt.length&&dt.length>0,onCheckedChange:ot})}),e.jsx(ls,{children:"状态"}),e.jsx(ls,{children:"名称"}),e.jsx(ls,{children:"基础URL"}),e.jsx(ls,{children:"客户端类型"}),e.jsx(ls,{className:"text-right",children:"最大重试"}),e.jsx(ls,{className:"text-right",children:"超时(秒)"}),e.jsx(ls,{className:"text-right",children:"重试间隔(秒)"}),e.jsx(ls,{className:"text-right",children:"操作"})]})}),e.jsx(ci,{children:Wt.length===0?e.jsx(pt,{children:e.jsx(Ye,{colSpan:9,className:"text-center text-muted-foreground py-8",children:pe?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'})}):Wt.map((P,je)=>{const Ae=n.findIndex(tt=>tt===P);return e.jsxs(pt,{children:[e.jsx(Ye,{children:e.jsx(yt,{checked:y.has(Ae),onCheckedChange:()=>it(Ae)})}),e.jsx(Ye,{children:ba(P.name)||e.jsx(Xe,{variant:"outline",className:"text-muted-foreground",children:"未测试"})}),e.jsx(Ye,{className:"font-medium",children:P.name}),e.jsx(Ye,{className:"max-w-xs truncate",title:P.base_url,children:P.base_url}),e.jsx(Ye,{children:P.client_type}),e.jsx(Ye,{className:"text-right",children:P.max_retry}),e.jsx(Ye,{className:"text-right",children:P.timeout}),e.jsx(Ye,{className:"text-right",children:P.retry_interval}),e.jsx(Ye,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>Ut(P.name),disabled:F.has(P.name),title:"测试连接",children:F.has(P.name)?e.jsx(vt,{className:"h-4 w-4 animate-spin"}):e.jsx(ln,{className:"h-4 w-4"})}),e.jsxs(N,{variant:"default",size:"sm",onClick:()=>nt(P,Ae),children:[e.jsx(nn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(N,{size:"sm",onClick:()=>Se(Ae),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(ns,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},je)})})]})})}),dt.length>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"page-size-provider",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(Qe,{value:he.toString(),onValueChange:P=>{Q(parseInt(P)),me(1),q(new Set)},children:[e.jsx(Ge,{id:"page-size-provider",className:"w-20",children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"10",children:"10"}),e.jsx(ue,{value:"20",children:"20"}),e.jsx(ue,{value:"50",children:"50"}),e.jsx(ue,{value:"100",children:"100"})]})]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(S-1)*he+1," 到"," ",Math.min(S*he,dt.length)," 条,共 ",dt.length," 条"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>me(1),disabled:S===1,className:"hidden sm:flex",children:e.jsx(wr,{className:"h-4 w-4"})}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>me(P=>Math.max(1,P-1)),disabled:S===1,children:[e.jsx(cn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:oe,onChange:P=>ge(P.target.value),onKeyDown:P=>P.key==="Enter"&&La(),placeholder:S.toString(),className:"w-16 h-8 text-center",min:1,max:Pt}),e.jsx(N,{variant:"outline",size:"sm",onClick:La,disabled:!oe,className:"h-8",children:"跳转"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>me(P=>P+1),disabled:S>=Pt,children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(il,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>me(Pt),disabled:S>=Pt,className:"hidden sm:flex",children:e.jsx(_r,{className:"h-4 w-4"})})]})]})]}),e.jsx(Os,{open:L,onOpenChange:ol,children:e.jsxs(Es,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"provider-dialog",preventOutsideClose:Ie.isRunning,children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:ee!==null?"编辑提供商":"添加提供商"}),e.jsx($s,{children:"配置 API 提供商的连接信息和参数"})]}),e.jsxs("form",{onSubmit:P=>{P.preventDefault(),cl()},autoComplete:"off",children:[e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":"provider-template-select",children:[e.jsx(b,{htmlFor:"template",children:"提供商模板"}),e.jsxs(Da,{open:X,onOpenChange:w,children:[e.jsx(Oa,{asChild:!0,children:e.jsxs(N,{variant:"outline",role:"combobox","aria-expanded":X,className:"w-full justify-between",children:[E?rr.find(P=>P.id===E)?.display_name:"选择提供商模板...",e.jsx($u,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(Na,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:e.jsxs(oo,{children:[e.jsx(uo,{placeholder:"搜索提供商模板..."}),e.jsx(es,{className:"h-[300px]",children:e.jsxs(mo,{className:"max-h-none overflow-visible",children:[e.jsx(ho,{children:"未找到匹配的模板"}),e.jsx(vr,{children:rr.map(P=>e.jsxs(yr,{value:P.display_name,onSelect:()=>Ct(P.id),children:[e.jsx(ha,{className:`mr-2 h-4 w-4 ${E===P.id?"opacity-100":"opacity-0"}`}),P.display_name]},P.id))})]})})]})})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"选择预设模板可自动填充 URL 和客户端类型,支持搜索"})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-name-input",children:[e.jsx(b,{htmlFor:"name",className:le.name?"text-destructive":"",children:"名称 *"}),e.jsx(ce,{id:"name",value:U?.name||"",onChange:P=>{R(je=>je?{...je,name:P.target.value}:null),le.name&&O(je=>({...je,name:void 0}))},placeholder:"例如: DeepSeek, SiliconFlow",className:le.name?"border-destructive focus-visible:ring-destructive":""}),le.name&&e.jsx("p",{className:"text-xs text-destructive",children:le.name})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-url-input",children:[e.jsx(b,{htmlFor:"base_url",className:le.base_url?"text-destructive":"",children:"基础 URL *"}),e.jsx(ce,{id:"base_url",value:U?.base_url||"",onChange:P=>{R(je=>je?{...je,base_url:P.target.value}:null),le.base_url&&O(je=>({...je,base_url:void 0}))},placeholder:"https://api.example.com/v1",disabled:kt,className:`${kt?"bg-muted cursor-not-allowed":""} ${le.base_url?"border-destructive focus-visible:ring-destructive":""}`}),le.base_url&&e.jsx("p",{className:"text-xs text-destructive",children:le.base_url}),kt&&!le.base_url&&e.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时 URL 不可编辑,切换到"自定义"以手动配置'})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-apikey-input",children:[e.jsx(b,{htmlFor:"api_key",className:le.api_key?"text-destructive":"",children:"API Key *"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{id:"api_key",type:ye?"text":"password",value:U?.api_key||"",onChange:P=>{R(je=>je?{...je,api_key:P.target.value}:null),le.api_key&&O(je=>({...je,api_key:void 0}))},placeholder:"sk-...",className:`flex-1 ${le.api_key?"border-destructive focus-visible:ring-destructive":""}`}),e.jsx(N,{type:"button",variant:"outline",size:"icon",onClick:()=>ve(!ye),title:ye?"隐藏密钥":"显示密钥",children:ye?e.jsx(mr,{className:"h-4 w-4"}):e.jsx(Zt,{className:"h-4 w-4"})}),e.jsx(N,{type:"button",variant:"outline",size:"icon",onClick:rl,title:"复制密钥",children:e.jsx(so,{className:"h-4 w-4"})})]}),le.api_key&&e.jsx("p",{className:"text-xs text-destructive",children:le.api_key})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"client_type",children:"客户端类型"}),e.jsxs(Qe,{value:U?.client_type||"openai",onValueChange:P=>R(je=>je?{...je,client_type:P}:null),disabled:kt,children:[e.jsx(Ge,{id:"client_type",className:kt?"bg-muted cursor-not-allowed":"",children:e.jsx($e,{placeholder:"选择客户端类型"})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"openai",children:"OpenAI"}),e.jsx(ue,{value:"gemini",children:"Gemini"})]})]}),kt&&e.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时客户端类型不可编辑,切换到"自定义"以手动配置'})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_retry",children:"最大重试"}),e.jsx(ce,{id:"max_retry",type:"number",min:"0",value:U?.max_retry??"",onChange:P=>{const je=P.target.value===""?null:parseInt(P.target.value);R(Ae=>Ae?{...Ae,max_retry:je}:null)},placeholder:"默认: 2"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"timeout",children:"超时(秒)"}),e.jsx(ce,{id:"timeout",type:"number",min:"1",value:U?.timeout??"",onChange:P=>{const je=P.target.value===""?null:parseInt(P.target.value);R(Ae=>Ae?{...Ae,timeout:je}:null)},placeholder:"默认: 30"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"retry_interval",children:"重试间隔(秒)"}),e.jsx(ce,{id:"retry_interval",type:"number",min:"1",value:U?.retry_interval??"",onChange:P=>{const je=P.target.value===""?null:parseInt(P.target.value);R(Ae=>Ae?{...Ae,retry_interval:je}:null)},placeholder:"默认: 10"})]})]})]}),e.jsxs(Is,{children:[e.jsx(N,{type:"button",variant:"outline",onClick:()=>K(!1),"data-tour":"provider-cancel-button",children:"取消"}),e.jsx(N,{type:"submit","data-tour":"provider-save-button",children:"保存"})]})]})]})}),e.jsx(ps,{open:D,onOpenChange:te,children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:['确定要删除提供商 "',xe!==null?n[xe]?.name:"",'" 吗? 此操作无法撤销。']})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:Re,children:"删除"})]})]})}),e.jsx(ps,{open:H,onOpenChange:ne,children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认批量删除"}),e.jsxs(ms,{children:["确定要删除选中的 ",y.size," 个提供商吗? 此操作无法撤销。"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:on,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),z&&e.jsx(Iu,{onRestartComplete:bt,onRestartFailed:Je})]})}function bw({value:n,label:r,onRemove:c}){const{attributes:d,listeners:h,setNodeRef:x,transform:f,transition:j,isDragging:g}=gb({id:n}),_={transform:jb.Transform.toString(f),transition:j,opacity:g?.5:1};return e.jsx("div",{ref:x,style:_,className:$("inline-flex items-center gap-1",g&&"shadow-lg"),children:e.jsxs(Xe,{variant:"secondary",className:"cursor-move hover:bg-secondary/80 flex items-center gap-1",children:[e.jsx("div",{...d,...h,className:"cursor-grab active:cursor-grabbing flex items-center",children:e.jsx(DN,{className:"h-3 w-3 text-muted-foreground"})}),e.jsx("span",{children:r}),e.jsx(li,{className:"ml-1 h-3 w-3 cursor-pointer hover:text-destructive",strokeWidth:2,fill:"none",onClick:v=>{v.stopPropagation(),c(n)}})]})})}function ww({options:n,selected:r,onChange:c,placeholder:d="选择选项...",emptyText:h="未找到选项",className:x}){const[f,j]=u.useState(!1),g=cb(Jf(pb,{activationConstraint:{distance:8}}),Jf(fb,{coordinateGetter:xb})),_=z=>{r.includes(z)?c(r.filter(T=>T!==z)):c([...r,z])},v=z=>{c(r.filter(T=>T!==z))},k=z=>{const{active:T,over:L}=z;if(L&&T.id!==L.id){const K=r.indexOf(T.id),U=r.indexOf(L.id);c(hb(r,K,U))}};return e.jsxs(Da,{open:f,onOpenChange:j,children:[e.jsx(Oa,{asChild:!0,children:e.jsxs(N,{variant:"outline",role:"combobox","aria-expanded":f,className:$("w-full justify-between min-h-10 h-auto",x),children:[e.jsx(ob,{sensors:g,collisionDetection:db,onDragEnd:k,children:e.jsx(ub,{items:r,strategy:mb,children:e.jsx("div",{className:"flex gap-1 flex-wrap flex-1",children:r.length===0?e.jsx("span",{className:"text-muted-foreground",children:d}):r.map(z=>{const T=n.find(L=>L.value===z);return e.jsx(bw,{value:z,label:T?.label||z,onRemove:v},z)})})})}),e.jsx($u,{className:"ml-2 h-4 w-4 shrink-0 opacity-50",strokeWidth:2,fill:"none"})]})}),e.jsx(Na,{className:"w-full p-0",align:"start",children:e.jsxs(oo,{children:[e.jsx(uo,{placeholder:"搜索...",className:"h-9"}),e.jsxs(mo,{children:[e.jsx(ho,{children:h}),e.jsx(vr,{children:n.map(z=>{const T=r.includes(z.value);return e.jsxs(yr,{value:z.value,onSelect:()=>_(z.value),children:[e.jsx("div",{className:$("mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary",T?"bg-primary text-primary-foreground":"opacity-50 [&_svg]:invisible"),children:e.jsx(ha,{className:"h-3 w-3",strokeWidth:2,fill:"none"})}),e.jsx("span",{children:z.label})]},z.value)})})]})]})})]})}const dp=new Map,_w=300*1e3;function Sw(){const[n,r]=u.useState([]),[c,d]=u.useState([]),[h,x]=u.useState([]),[f,j]=u.useState([]),[g,_]=u.useState(null),[v,k]=u.useState(!0),[z,T]=u.useState(!1),[L,K]=u.useState(!1),[U,R]=u.useState(!1),[ee,V]=u.useState(!1),[E,B]=u.useState(!1),[X,w]=u.useState(!1),[D,te]=u.useState(null),[xe,be]=u.useState(null),[ye,ve]=u.useState(!1),[pe,Ne]=u.useState(null),[y,q]=u.useState(""),[H,ne]=u.useState(new Set),[S,me]=u.useState(!1),[he,Q]=u.useState(1),[oe,ge]=u.useState(20),[le,O]=u.useState(""),[F,A]=u.useState([]),[W,_e]=u.useState(!1),[Me,ss]=u.useState(null),[Ie,Rs]=u.useState(!1),[qs,ie]=u.useState(null),[we,Ke]=u.useState({}),{toast:Le}=Bs(),st=It(),{registerTour:Jt,startTour:bt,state:Je,goToStep:Ue}=Ju(),jt=u.useRef(null),nt=u.useRef(null),Ct=u.useRef(!0);u.useEffect(()=>{Jt(ll,Hg)},[Jt]),u.useEffect(()=>{if(Je.activeTourId===ll&&Je.isRunning){const Y=qg[Je.stepIndex];Y&&!window.location.pathname.endsWith(Y.replace("/config/",""))&&st({to:Y})}},[Je.stepIndex,Je.activeTourId,Je.isRunning,st]);const kt=u.useRef(Je.stepIndex);u.useEffect(()=>{if(Je.activeTourId===ll&&Je.isRunning){const Y=kt.current,fe=Je.stepIndex;Y>=12&&Y<=17&&fe<12&&w(!1),kt.current=fe}},[Je.stepIndex,Je.activeTourId,Je.isRunning]),u.useEffect(()=>{if(Je.activeTourId!==ll||!Je.isRunning)return;const Y=fe=>{const De=fe.target,Fe=Je.stepIndex;Fe===2&&De.closest('[data-tour="add-provider-button"]')?setTimeout(()=>Ue(3),300):Fe===9&&De.closest('[data-tour="provider-cancel-button"]')?setTimeout(()=>Ue(10),300):Fe===11&&De.closest('[data-tour="add-model-button"]')?setTimeout(()=>Ue(12),300):Fe===17&&De.closest('[data-tour="model-cancel-button"]')?setTimeout(()=>Ue(18),300):Fe===18&&De.closest('[data-tour="tasks-tab-trigger"]')&&setTimeout(()=>Ue(19),300)};return document.addEventListener("click",Y,!0),()=>document.removeEventListener("click",Y,!0)},[Je,Ue]);const rl=()=>{bt(ll)};u.useEffect(()=>{cl()},[]);const cl=async()=>{try{k(!0);const Y=await ei(),fe=Y.models||[];r(fe),j(fe.map(Fe=>Fe.name));const De=Y.api_providers||[];d(De.map(Fe=>Fe.name)),x(De),_(Y.model_task_config||null),R(!1),Ct.current=!1}catch(Y){console.error("加载配置失败:",Y)}finally{k(!1)}},ol=u.useCallback(Y=>h.find(fe=>fe.name===Y),[h]),Se=u.useCallback(async(Y,fe=!1)=>{const De=ol(Y);if(!De?.base_url){A([]),ie(null),ss('提供商配置不完整,请先在"模型提供商配置"中配置');return}if(!De.api_key){A([]),ie(null),ss('该提供商未配置 API Key,请先在"模型提供商配置"中填写');return}const Fe=yw(De.base_url);if(ie(Fe),!Fe?.modelFetcher){A([]),ss(null);return}const Ys=`${Y}:${De.base_url}`,wa=dp.get(Ys);if(!fe&&wa&&Date.now()-wa.timestamp<_w){A(wa.models),ss(null);return}_e(!0),ss(null);try{const Ba=await Q0(Y,Fe.modelFetcher.parser,Fe.modelFetcher.endpoint);A(Ba),dp.set(Ys,{models:Ba,timestamp:Date.now()})}catch(Ba){console.error("获取模型列表失败:",Ba);const _a=Ba.message||"获取模型列表失败";_a.includes("无效")||_a.includes("过期")||_a.includes("API Key")?ss('API Key 无效或已过期,请检查"模型提供商配置"中的密钥'):_a.includes("权限")?ss("没有权限获取模型列表,请检查 API Key 权限"):_a.includes("timeout")||_a.includes("超时")?ss("请求超时,请检查网络连接后重试"):_a.includes("不支持")?ss("该提供商不支持自动获取模型列表,请手动输入"):ss(_a),A([])}finally{_e(!1)}},[ol]);u.useEffect(()=>{X&&D?.api_provider&&Se(D.api_provider)},[X,D?.api_provider,Se]);const Re=async()=>{try{V(!0),co().catch(()=>{}),B(!0)}catch(Y){console.error("重启失败:",Y),B(!1),Le({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),V(!1)}},it=async()=>{try{T(!0),jt.current&&clearTimeout(jt.current),nt.current&&clearTimeout(nt.current);const Y=await ei();Y.models=n,Y.model_task_config=g,await io(Y),R(!1),Le({title:"保存成功",description:"正在重启麦麦..."}),await Re()}catch(Y){console.error("保存配置失败:",Y),Le({title:"保存失败",description:Y.message,variant:"destructive"}),T(!1)}},ot=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},di=()=>{B(!1),V(!1),Le({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},on=u.useCallback(async Y=>{if(!Ct.current)try{K(!0),await qu("models",Y),R(!1)}catch(fe){console.error("自动保存模型列表失败:",fe),R(!0)}finally{K(!1)}},[]),dt=u.useCallback(async Y=>{if(!Ct.current)try{K(!0),await qu("model_task_config",Y),R(!1)}catch(fe){console.error("自动保存任务配置失败:",fe),R(!0)}finally{K(!1)}},[]);u.useEffect(()=>{if(!Ct.current)return R(!0),jt.current&&clearTimeout(jt.current),jt.current=setTimeout(()=>{on(n)},2e3),()=>{jt.current&&clearTimeout(jt.current)}},[n,on]),u.useEffect(()=>{if(!(Ct.current||!g))return R(!0),nt.current&&clearTimeout(nt.current),nt.current=setTimeout(()=>{dt(g)},2e3),()=>{nt.current&&clearTimeout(nt.current)}},[g,dt]);const Pt=async()=>{try{T(!0),jt.current&&clearTimeout(jt.current),nt.current&&clearTimeout(nt.current);const Y=await ei();Y.models=n,Y.model_task_config=g,await io(Y),R(!1),Le({title:"保存成功",description:"模型配置已保存"}),await cl()}catch(Y){console.error("保存配置失败:",Y),Le({title:"保存失败",description:Y.message,variant:"destructive"})}finally{T(!1)}},Wt=(Y,fe)=>{Ke({}),te(Y||{model_identifier:"",name:"",api_provider:c[0]||"",price_in:0,price_out:0,force_stream_mode:!1,extra_params:{}}),be(fe),w(!0)},La=()=>{if(!D)return;const Y={};if(D.name?.trim()||(Y.name="请输入模型名称"),D.api_provider?.trim()||(Y.api_provider="请选择 API 提供商"),D.model_identifier?.trim()||(Y.model_identifier="请输入模型标识符"),Object.keys(Y).length>0){Ke(Y);return}Ke({});const fe={...D,price_in:D.price_in??0,price_out:D.price_out??0};let De;xe!==null?(De=[...n],De[xe]=fe):De=[...n,fe],r(De),j(De.map(Fe=>Fe.name)),w(!1),te(null),be(null)},Ut=Y=>{if(!Y&&D){const fe={...D,price_in:D.price_in??0,price_out:D.price_out??0};te(fe)}w(Y)},Ua=Y=>{Ne(Y),ve(!0)},ba=()=>{if(pe!==null){const Y=n.filter((fe,De)=>De!==pe);r(Y),j(Y.map(fe=>fe.name)),Le({title:"删除成功",description:"模型已从列表中移除"})}ve(!1),Ne(null)},P=Y=>{const fe=new Set(H);fe.has(Y)?fe.delete(Y):fe.add(Y),ne(fe)},je=()=>{if(H.size===Tt.length)ne(new Set);else{const Y=Tt.map((fe,De)=>n.findIndex(Fe=>Fe===Tt[De]));ne(new Set(Y))}},Ae=()=>{if(H.size===0){Le({title:"提示",description:"请先选择要删除的模型",variant:"default"});return}me(!0)},tt=()=>{const Y=n.filter((fe,De)=>!H.has(De));r(Y),j(Y.map(fe=>fe.name)),ne(new Set),me(!1),Le({title:"批量删除成功",description:`已删除 ${H.size} 个模型`})},Bt=(Y,fe,De)=>{g&&_({...g,[Y]:{...g[Y],[fe]:De}})},Tt=n.filter(Y=>{if(!y)return!0;const fe=y.toLowerCase();return Y.name.toLowerCase().includes(fe)||Y.model_identifier.toLowerCase().includes(fe)||Y.api_provider.toLowerCase().includes(fe)}),dl=Math.ceil(Tt.length/oe),Hl=Tt.slice((he-1)*oe,he*oe),dn=()=>{const Y=parseInt(le);Y>=1&&Y<=dl&&(Q(Y),O(""))},un=Y=>g?[g.utils?.model_list||[],g.utils_small?.model_list||[],g.tool_use?.model_list||[],g.replyer?.model_list||[],g.planner?.model_list||[],g.vlm?.model_list||[],g.voice?.model_list||[],g.embedding?.model_list||[],g.lpmm_entity_extract?.model_list||[],g.lpmm_rdf_build?.model_list||[],g.lpmm_qa?.model_list||[]].some(De=>De.includes(Y)):!1;return v?e.jsx(es,{className:"h-full",children:e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):e.jsx(es,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"模型管理与分配"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"添加模型并为模型分配功能"})]}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[e.jsxs(N,{onClick:Pt,disabled:z||L||!U||ee,size:"sm",variant:"outline",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[e.jsx(br,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),z?"保存中...":L?"自动保存中...":U?"保存配置":"已保存"]}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(N,{disabled:z||L||ee,size:"sm",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[e.jsx(Nr,{className:"mr-2 h-4 w-4"}),ee?"重启中...":U?"保存并重启":"重启麦麦"]})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认重启麦麦?"}),e.jsx(ms,{className:"space-y-3",asChild:!0,children:e.jsxs("div",{children:[e.jsx("p",{children:U?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),e.jsxs(ua,{className:"border-yellow-500/50 bg-yellow-500/10",children:[e.jsx(Xt,{className:"h-4 w-4 text-yellow-600"}),e.jsxs(ma,{className:"text-yellow-900 dark:text-yellow-100",children:[e.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",e.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",e.jsxs(Os,{children:[e.jsx(ni,{asChild:!0,children:e.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[e.jsx(ro,{className:"h-3 w-3"}),"如何结束程序?"]})}),e.jsxs(Es,{className:"max-w-2xl",children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"如何结束使用重启功能后的麦麦程序"}),e.jsx($s,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),e.jsxs(Kt,{defaultValue:"windows",className:"w-full",children:[e.jsxs(Rt,{className:"grid w-full grid-cols-3",children:[e.jsx(He,{value:"windows",children:"Windows"}),e.jsx(He,{value:"macos",children:"macOS"}),e.jsx(He,{value:"linux",children:"Linux"})]}),e.jsxs(We,{value:"windows",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),e.jsxs("li",{children:['在"进程"或"详细信息"标签页中找到 ',e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),e.jsx("li",{children:'右键点击并选择"结束任务"'})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),e.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),e.jsxs(We,{value:"macos",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"}),' 打开 Spotlight,搜索"活动监视器"']}),e.jsxs("li",{children:["在进程列表中找到 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),e.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:"ps aux | grep python | grep -v grep"}),e.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),e.jsx("p",{children:"kill -9 "}),e.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"pkill -9 python"})]})]})]}),e.jsxs(We,{value:"linux",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:"ps aux | grep python | grep -v grep"}),e.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),e.jsx("p",{children:"kill -9 "}),e.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),e.jsx("p",{children:'pkill -9 -f "bot.py"'}),e.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"pkill -9 python"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["在终端输入 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),e.jsx(Is,{children:e.jsx(Zu,{asChild:!0,children:e.jsx(N,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:U?it:Re,children:U?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsxs(ua,{children:[e.jsx(Xt,{className:"h-4 w-4"}),e.jsxs(ma,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),e.jsxs(ua,{className:"hidden lg:flex border-primary/30 bg-primary/5 cursor-pointer hover:bg-primary/10 transition-colors",onClick:rl,children:[e.jsx(ON,{className:"h-4 w-4 text-primary"}),e.jsxs(ma,{className:"flex items-center justify-between",children:[e.jsxs("span",{children:[e.jsx("strong",{className:"text-primary",children:"新手引导:"}),"不知道如何配置模型?点击这里开始学习如何为麦麦的组件分配模型。"]}),e.jsx(N,{variant:"outline",size:"sm",className:"ml-4 shrink-0",children:"开始引导"})]})]}),e.jsxs(Kt,{defaultValue:"models",className:"w-full",children:[e.jsxs(Rt,{className:"grid w-full max-w-full sm:max-w-md grid-cols-2",children:[e.jsx(He,{value:"models",children:"添加模型"}),e.jsx(He,{value:"tasks","data-tour":"tasks-tab-trigger",children:"为模型分配功能"})]}),e.jsxs(We,{value:"models",className:"space-y-4 mt-0",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-2",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"配置可用的模型列表"}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[H.size>0&&e.jsxs(N,{onClick:Ae,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(ns,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",H.size,")"]}),e.jsxs(N,{onClick:()=>Wt(null,null),size:"sm",variant:"outline",className:"w-full sm:w-auto","data-tour":"add-model-button",children:[e.jsx(gt,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加模型"]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2",children:[e.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[e.jsx(St,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索模型名称、标识符或提供商...",value:y,onChange:Y=>q(Y.target.value),className:"pl-9"})]}),y&&e.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",Tt.length," 个结果"]})]}),e.jsx("div",{className:"md:hidden space-y-3",children:Hl.length===0?e.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:y?"未找到匹配的模型":"暂无模型配置"}):Hl.map((Y,fe)=>{const De=n.findIndex(Ys=>Ys===Y),Fe=un(Y.name);return e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("h3",{className:"font-semibold text-base",children:Y.name}),e.jsx(Xe,{variant:Fe?"default":"secondary",className:Fe?"bg-green-600 hover:bg-green-700":"",children:Fe?"已使用":"未使用"})]}),e.jsx("p",{className:"text-xs text-muted-foreground break-all",title:Y.model_identifier,children:Y.model_identifier})]}),e.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[e.jsxs(N,{variant:"default",size:"sm",onClick:()=>Wt(Y,De),children:[e.jsx(nn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(N,{size:"sm",onClick:()=>Ua(De),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(ns,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"提供商"}),e.jsx("p",{className:"font-medium",children:Y.api_provider})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"强制流式"}),e.jsx("p",{className:"font-medium",children:Y.force_stream_mode?"是":"否"})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"输入价格"}),e.jsxs("p",{className:"font-medium",children:["¥",Y.price_in,"/M"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"输出价格"}),e.jsxs("p",{className:"font-medium",children:["¥",Y.price_out,"/M"]})]})]})]},fe)})}),e.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(ii,{children:[e.jsx(ri,{children:e.jsxs(pt,{children:[e.jsx(ls,{className:"w-12",children:e.jsx(yt,{checked:H.size===Tt.length&&Tt.length>0,onCheckedChange:je})}),e.jsx(ls,{className:"w-24",children:"使用状态"}),e.jsx(ls,{children:"模型名称"}),e.jsx(ls,{children:"模型标识符"}),e.jsx(ls,{children:"提供商"}),e.jsx(ls,{className:"text-right",children:"输入价格"}),e.jsx(ls,{className:"text-right",children:"输出价格"}),e.jsx(ls,{className:"text-center",children:"强制流式"}),e.jsx(ls,{className:"text-right",children:"操作"})]})}),e.jsx(ci,{children:Hl.length===0?e.jsx(pt,{children:e.jsx(Ye,{colSpan:9,className:"text-center text-muted-foreground py-8",children:y?"未找到匹配的模型":"暂无模型配置"})}):Hl.map((Y,fe)=>{const De=n.findIndex(Ys=>Ys===Y),Fe=un(Y.name);return e.jsxs(pt,{children:[e.jsx(Ye,{children:e.jsx(yt,{checked:H.has(De),onCheckedChange:()=>P(De)})}),e.jsx(Ye,{children:e.jsx(Xe,{variant:Fe?"default":"secondary",className:Fe?"bg-green-600 hover:bg-green-700":"",children:Fe?"已使用":"未使用"})}),e.jsx(Ye,{className:"font-medium",children:Y.name}),e.jsx(Ye,{className:"max-w-xs truncate",title:Y.model_identifier,children:Y.model_identifier}),e.jsx(Ye,{children:Y.api_provider}),e.jsxs(Ye,{className:"text-right",children:["¥",Y.price_in,"/M"]}),e.jsxs(Ye,{className:"text-right",children:["¥",Y.price_out,"/M"]}),e.jsx(Ye,{className:"text-center",children:Y.force_stream_mode?"是":"否"}),e.jsx(Ye,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(N,{variant:"default",size:"sm",onClick:()=>Wt(Y,De),children:[e.jsx(nn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(N,{size:"sm",onClick:()=>Ua(De),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(ns,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},fe)})})]})})}),Tt.length>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"page-size-model",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(Qe,{value:oe.toString(),onValueChange:Y=>{ge(parseInt(Y)),Q(1),ne(new Set)},children:[e.jsx(Ge,{id:"page-size-model",className:"w-20",children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"10",children:"10"}),e.jsx(ue,{value:"20",children:"20"}),e.jsx(ue,{value:"50",children:"50"}),e.jsx(ue,{value:"100",children:"100"})]})]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(he-1)*oe+1," 到"," ",Math.min(he*oe,Tt.length)," 条,共 ",Tt.length," 条"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>Q(1),disabled:he===1,className:"hidden sm:flex",children:e.jsx(wr,{className:"h-4 w-4"})}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>Q(Y=>Math.max(1,Y-1)),disabled:he===1,children:[e.jsx(cn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:le,onChange:Y=>O(Y.target.value),onKeyDown:Y=>Y.key==="Enter"&&dn(),placeholder:he.toString(),className:"w-16 h-8 text-center",min:1,max:dl}),e.jsx(N,{variant:"outline",size:"sm",onClick:dn,disabled:!le,className:"h-8",children:"跳转"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>Q(Y=>Y+1),disabled:he>=dl,children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(il,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>Q(dl),disabled:he>=dl,className:"hidden sm:flex",children:e.jsx(_r,{className:"h-4 w-4"})})]})]})]}),e.jsxs(We,{value:"tasks",className:"space-y-6 mt-0",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"为不同的任务配置使用的模型和参数"}),g&&e.jsxs("div",{className:"grid gap-4 sm:gap-6",children:[e.jsx(ja,{title:"组件模型 (utils)",description:"用于表情包、取名、关系、情绪变化等组件",taskConfig:g.utils,modelNames:f,onChange:(Y,fe)=>Bt("utils",Y,fe),dataTour:"task-model-select"}),e.jsx(ja,{title:"组件小模型 (utils_small)",description:"消耗量较大的组件,建议使用速度较快的小模型",taskConfig:g.utils_small,modelNames:f,onChange:(Y,fe)=>Bt("utils_small",Y,fe)}),e.jsx(ja,{title:"工具调用模型 (tool_use)",description:"需要使用支持工具调用的模型",taskConfig:g.tool_use,modelNames:f,onChange:(Y,fe)=>Bt("tool_use",Y,fe)}),e.jsx(ja,{title:"首要回复模型 (replyer)",description:"用于表达器和表达方式学习",taskConfig:g.replyer,modelNames:f,onChange:(Y,fe)=>Bt("replyer",Y,fe)}),e.jsx(ja,{title:"决策模型 (planner)",description:"负责决定麦麦该什么时候回复",taskConfig:g.planner,modelNames:f,onChange:(Y,fe)=>Bt("planner",Y,fe)}),e.jsx(ja,{title:"图像识别模型 (vlm)",description:"视觉语言模型",taskConfig:g.vlm,modelNames:f,onChange:(Y,fe)=>Bt("vlm",Y,fe),hideTemperature:!0}),e.jsx(ja,{title:"语音识别模型 (voice)",description:"语音转文字",taskConfig:g.voice,modelNames:f,onChange:(Y,fe)=>Bt("voice",Y,fe),hideTemperature:!0,hideMaxTokens:!0}),e.jsx(ja,{title:"嵌入模型 (embedding)",description:"用于向量化",taskConfig:g.embedding,modelNames:f,onChange:(Y,fe)=>Bt("embedding",Y,fe),hideTemperature:!0,hideMaxTokens:!0}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库模型"}),e.jsx(ja,{title:"实体提取模型 (lpmm_entity_extract)",description:"从文本中提取实体",taskConfig:g.lpmm_entity_extract,modelNames:f,onChange:(Y,fe)=>Bt("lpmm_entity_extract",Y,fe)}),e.jsx(ja,{title:"RDF 构建模型 (lpmm_rdf_build)",description:"构建知识图谱",taskConfig:g.lpmm_rdf_build,modelNames:f,onChange:(Y,fe)=>Bt("lpmm_rdf_build",Y,fe)}),e.jsx(ja,{title:"问答模型 (lpmm_qa)",description:"知识库问答",taskConfig:g.lpmm_qa,modelNames:f,onChange:(Y,fe)=>Bt("lpmm_qa",Y,fe)})]})]})]})]}),e.jsx(Os,{open:X,onOpenChange:Ut,children:e.jsxs(Es,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"model-dialog",preventOutsideClose:Je.isRunning,children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:xe!==null?"编辑模型":"添加模型"}),e.jsx($s,{children:"配置模型的基本信息和参数"})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":"model-name-input",children:[e.jsx(b,{htmlFor:"model_name",className:we.name?"text-destructive":"",children:"模型名称 *"}),e.jsx(ce,{id:"model_name",value:D?.name||"",onChange:Y=>{te(fe=>fe?{...fe,name:Y.target.value}:null),we.name&&Ke(fe=>({...fe,name:void 0}))},placeholder:"例如: qwen3-30b",className:we.name?"border-destructive focus-visible:ring-destructive":""}),we.name?e.jsx("p",{className:"text-xs text-destructive",children:we.name}):e.jsx("p",{className:"text-xs text-muted-foreground",children:"用于在任务配置中引用此模型"})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"model-provider-select",children:[e.jsx(b,{htmlFor:"api_provider",className:we.api_provider?"text-destructive":"",children:"API 提供商 *"}),e.jsxs(Qe,{value:D?.api_provider||"",onValueChange:Y=>{te(fe=>fe?{...fe,api_provider:Y}:null),A([]),ss(null),we.api_provider&&Ke(fe=>({...fe,api_provider:void 0}))},children:[e.jsx(Ge,{id:"api_provider",className:we.api_provider?"border-destructive focus-visible:ring-destructive":"",children:e.jsx($e,{placeholder:"选择提供商"})}),e.jsx(Ve,{children:c.map(Y=>e.jsx(ue,{value:Y,children:Y},Y))})]}),we.api_provider&&e.jsx("p",{className:"text-xs text-destructive",children:we.api_provider})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"model-identifier-input",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{htmlFor:"model_identifier",className:we.model_identifier?"text-destructive":"",children:"模型标识符 *"}),qs?.modelFetcher&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Xe,{variant:"secondary",className:"text-xs",children:qs.display_name}),e.jsx(N,{variant:"ghost",size:"sm",className:"h-6 px-2",onClick:()=>D?.api_provider&&Se(D.api_provider,!0),disabled:W,children:W?e.jsx(vt,{className:"h-3 w-3 animate-spin"}):e.jsx(ft,{className:"h-3 w-3"})})]})]}),qs?.modelFetcher?e.jsxs(Da,{open:Ie,onOpenChange:Rs,children:[e.jsx(Oa,{asChild:!0,children:e.jsxs(N,{variant:"outline",role:"combobox","aria-expanded":Ie,className:"w-full justify-between font-normal",disabled:W||!!Me,children:[W?e.jsxs("span",{className:"flex items-center gap-2 text-muted-foreground",children:[e.jsx(vt,{className:"h-4 w-4 animate-spin"}),"正在获取模型列表..."]}):Me?e.jsx("span",{className:"text-muted-foreground text-sm",children:"点击下方输入框手动填写"}):D?.model_identifier?e.jsx("span",{className:"truncate",children:D.model_identifier}):e.jsx("span",{className:"text-muted-foreground",children:"搜索或选择模型..."}),e.jsx($u,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(Na,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:e.jsxs(oo,{children:[e.jsx(uo,{placeholder:"搜索模型..."}),e.jsx(es,{className:"h-[300px]",children:e.jsxs(mo,{className:"max-h-none overflow-visible",children:[e.jsx(ho,{children:Me?e.jsxs("div",{className:"py-4 px-2 text-center space-y-2",children:[e.jsx("p",{className:"text-sm text-destructive",children:Me}),!Me.includes("API Key")&&e.jsx(N,{variant:"link",size:"sm",onClick:()=>D?.api_provider&&Se(D.api_provider,!0),children:"重试"})]}):"未找到匹配的模型"}),e.jsx(vr,{heading:"可用模型",children:F.map(Y=>e.jsxs(yr,{value:Y.id,onSelect:()=>{te(fe=>fe?{...fe,model_identifier:Y.id}:null),Rs(!1)},children:[e.jsx(ha,{className:`mr-2 h-4 w-4 ${D?.model_identifier===Y.id?"opacity-100":"opacity-0"}`}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{children:Y.id}),Y.name!==Y.id&&e.jsx("span",{className:"text-xs text-muted-foreground",children:Y.name})]})]},Y.id))}),e.jsx(vr,{heading:"手动输入",children:e.jsxs(yr,{value:"__manual_input__",onSelect:()=>{Rs(!1)},children:[e.jsx(nn,{className:"mr-2 h-4 w-4"}),"手动输入模型标识符..."]})})]})})]})})]}):e.jsx(ce,{id:"model_identifier",value:D?.model_identifier||"",onChange:Y=>{te(fe=>fe?{...fe,model_identifier:Y.target.value}:null),we.model_identifier&&Ke(fe=>({...fe,model_identifier:void 0}))},placeholder:"Qwen/Qwen3-30B-A3B-Instruct-2507",className:we.model_identifier?"border-destructive focus-visible:ring-destructive":""}),we.model_identifier&&e.jsx("p",{className:"text-xs text-destructive",children:we.model_identifier}),Me&&qs?.modelFetcher&&!we.model_identifier&&e.jsxs(ua,{variant:"destructive",className:"mt-2 py-2",children:[e.jsx(Xt,{className:"h-4 w-4"}),e.jsx(ma,{className:"text-xs",children:Me})]}),qs?.modelFetcher&&e.jsx(ce,{value:D?.model_identifier||"",onChange:Y=>{te(fe=>fe?{...fe,model_identifier:Y.target.value}:null),we.model_identifier&&Ke(fe=>({...fe,model_identifier:void 0}))},placeholder:"或手动输入模型标识符",className:`mt-2 ${we.model_identifier?"border-destructive focus-visible:ring-destructive":""}`}),!we.model_identifier&&e.jsx("p",{className:"text-xs text-muted-foreground",children:Me?'请手动输入模型标识符,或前往"模型提供商配置"检查 API Key':qs?.modelFetcher?`已识别为 ${qs.display_name},支持自动获取模型列表`:"API 提供商提供的模型 ID"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"price_in",children:"输入价格 (¥/M token)"}),e.jsx(ce,{id:"price_in",type:"number",step:"0.1",min:"0",value:D?.price_in??"",onChange:Y=>{const fe=Y.target.value===""?null:parseFloat(Y.target.value);te(De=>De?{...De,price_in:fe}:null)},placeholder:"默认: 0"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"price_out",children:"输出价格 (¥/M token)"}),e.jsx(ce,{id:"price_out",type:"number",step:"0.1",min:"0",value:D?.price_out??"",onChange:Y=>{const fe=Y.target.value===""?null:parseFloat(Y.target.value);te(De=>De?{...De,price_out:fe}:null)},placeholder:"默认: 0"})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"force_stream_mode",checked:D?.force_stream_mode||!1,onCheckedChange:Y=>te(fe=>fe?{...fe,force_stream_mode:Y}:null)}),e.jsx(b,{htmlFor:"force_stream_mode",className:"cursor-pointer",children:"强制流式输出模式"})]})]}),e.jsxs(Is,{children:[e.jsx(N,{variant:"outline",onClick:()=>w(!1),"data-tour":"model-cancel-button",children:"取消"}),e.jsx(N,{onClick:La,"data-tour":"model-save-button",children:"保存"})]})]})}),e.jsx(ps,{open:ye,onOpenChange:ve,children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:['确定要删除模型 "',pe!==null?n[pe]?.name:"",'" 吗? 此操作无法撤销。']})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:ba,children:"删除"})]})]})}),e.jsx(ps,{open:S,onOpenChange:me,children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认批量删除"}),e.jsxs(ms,{children:["确定要删除选中的 ",H.size," 个模型吗? 此操作无法撤销。"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:tt,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),E&&e.jsx(Iu,{onRestartComplete:ot,onRestartFailed:di})]})})}function ja({title:n,description:r,taskConfig:c,modelNames:d,onChange:h,hideTemperature:x=!1,hideMaxTokens:f=!1,dataTour:j}){const g=_=>{h("model_list",_)};return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"font-semibold text-base sm:text-lg",children:n}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:r})]}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":j,children:[e.jsx(b,{children:"模型列表"}),e.jsx(ww,{options:d.map(_=>({label:_,value:_})),selected:c.model_list||[],onChange:g,placeholder:"选择模型...",emptyText:"暂无可用模型"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[!x&&e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:"温度"}),e.jsx(ce,{type:"number",step:"0.1",min:"0",max:"1",value:c.temperature??.3,onChange:_=>{const v=parseFloat(_.target.value);!isNaN(v)&&v>=0&&v<=1&&h("temperature",v)},className:"w-20 h-8 text-sm"})]}),e.jsx(za,{value:[c.temperature??.3],onValueChange:_=>h("temperature",_[0]),min:0,max:1,step:.1,className:"w-full"})]}),!f&&e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"最大 Token"}),e.jsx(ce,{type:"number",step:"1",min:"1",value:c.max_tokens??1024,onChange:_=>h("max_tokens",parseInt(_.target.value))})]})]})]})]})}const xo="/api/webui/config";async function Cw(){const r=await(await ke(`${xo}/adapter-config/path`)).json();return!r.success||!r.path?null:{path:r.path,lastModified:r.lastModified}}async function up(n){const c=await(await ke(`${xo}/adapter-config/path`,{method:"POST",headers:ze(),body:JSON.stringify({path:n})})).json();if(!c.success)throw new Error(c.message||"保存路径失败")}async function mp(n){const c=await(await ke(`${xo}/adapter-config?path=${encodeURIComponent(n)}`)).json();if(!c.success)throw new Error("读取配置文件失败");return c.content}async function hp(n,r){const d=await(await ke(`${xo}/adapter-config`,{method:"POST",headers:ze(),body:JSON.stringify({path:n,content:r})})).json();if(!d.success)throw new Error(d.message||"保存配置失败")}const Yt={inner:{version:"0.1.2"},nickname:{nickname:""},napcat_server:{host:"localhost",port:8095,token:"",heartbeat_interval:30},maibot_server:{host:"localhost",port:8e3},chat:{group_list_type:"whitelist",group_list:[],private_list_type:"whitelist",private_list:[],ban_user_id:[],ban_qq_bot:!1,enable_poke:!0},voice:{use_tts:!1},debug:{level:"INFO"}},Du={oneclick:{name:"一键包",description:"使用一键包部署的适配器配置",path:"../MaiBot-Napcat-Adapter/config.toml",icon:rn},docker:{name:"Docker",description:"Docker Compose 部署的适配器配置",path:"/MaiMBot/adapters-config/config.toml",icon:RN}};function kw(){const[n,r]=u.useState("upload"),[c,d]=u.useState(null),[h,x]=u.useState(""),[f,j]=u.useState(""),[g,_]=u.useState("oneclick"),[v,k]=u.useState(""),[z,T]=u.useState(!1),[L,K]=u.useState(!1),[U,R]=u.useState(!1),[ee,V]=u.useState(!1),[E,B]=u.useState(null),X=u.useRef(null),{toast:w}=Bs(),D=u.useRef(null),te=O=>{if(!O.trim())return{valid:!1,error:"路径不能为空"};if(!O.toLowerCase().endsWith(".toml"))return{valid:!1,error:"文件必须是 .toml 格式"};const F=/^([a-zA-Z]:\\|\\\\[^\\]+\\[^\\]+\\).+\.toml$/i,A=/^(\/|~\/).+\.toml$/i,W=/^(\.{1,2}[\\/]|[^:\\/]).+\.toml$/i,_e=F.test(O),Me=A.test(O),ss=W.test(O);return!_e&&!Me&&!ss?{valid:!1,error:"路径格式错误"}:/[<>"|?*\x00-\x1F]/.test(O)?{valid:!1,error:"路径包含非法字符"}:{valid:!0,error:""}},xe=O=>{if(j(O),O.trim()){const F=te(O);k(F.error)}else k("")},be=u.useCallback(async O=>{const F=Du[O];K(!0);try{const A=await mp(F.path),W=he(A);d(W),_(O),j(F.path),await up(F.path),w({title:"加载成功",description:`已从${F.name}预设加载配置`})}catch(A){console.error("加载预设配置失败:",A),w({title:"加载失败",description:A instanceof Error?A.message:"无法读取预设配置文件",variant:"destructive"})}finally{K(!1)}},[w]),ye=u.useCallback(async O=>{const F=te(O);if(!F.valid){k(F.error),w({title:"路径无效",description:F.error,variant:"destructive"});return}k(""),K(!0);try{const A=await mp(O),W=he(A);d(W),j(O),await up(O),w({title:"加载成功",description:"已从配置文件加载"})}catch(A){console.error("加载配置失败:",A),w({title:"加载失败",description:A instanceof Error?A.message:"无法读取配置文件",variant:"destructive"})}finally{K(!1)}},[w]);u.useEffect(()=>{(async()=>{try{const F=await Cw();if(F&&F.path){j(F.path);const A=Object.entries(Du).find(([,W])=>W.path===F.path);A?(r("preset"),_(A[0]),await be(A[0])):(r("path"),await ye(F.path))}}catch(F){console.error("加载保存的路径失败:",F)}})()},[ye,be]);const ve=u.useCallback(O=>{n!=="path"&&n!=="preset"||!f||(D.current&&clearTimeout(D.current),D.current=setTimeout(async()=>{T(!0);try{const F=Q(O);await hp(f,F),w({title:"自动保存成功",description:"配置已保存到文件"})}catch(F){console.error("自动保存失败:",F),w({title:"自动保存失败",description:F instanceof Error?F.message:"保存配置失败",variant:"destructive"})}finally{T(!1)}},1e3))},[n,f,w]),pe=async()=>{if(!c||!f)return;const O=te(f);if(!O.valid){w({title:"保存失败",description:O.error,variant:"destructive"});return}T(!0);try{const F=Q(c);await hp(f,F),w({title:"保存成功",description:"配置已保存到文件"})}catch(F){console.error("保存失败:",F),w({title:"保存失败",description:F instanceof Error?F.message:"保存配置失败",variant:"destructive"})}finally{T(!1)}},Ne=async()=>{f&&await ye(f)},y=O=>{if(O!==n){if(c){B(O),R(!0);return}q(O)}},q=O=>{d(null),x(""),k(""),r(O),O==="preset"&&be("oneclick"),w({title:"已切换模式",description:{upload:"现在可以上传配置文件",path:"现在可以指定配置文件路径",preset:"现在可以使用预设配置"}[O]})},H=()=>{E&&(q(E),B(null)),R(!1)},ne=()=>{if(c){V(!0);return}S()},S=()=>{j(""),d(null),k(""),w({title:"已清空",description:"路径和配置已清空"})},me=()=>{S(),V(!1)},he=O=>{const F=JSON.parse(JSON.stringify(Yt)),A=O.split(` -`);let W="";for(const _e of A){const Me=_e.trim();if(!Me||Me.startsWith("#"))continue;const ss=Me.match(/^\[(\w+)\]/);if(ss){W=ss[1];continue}const Ie=Me.match(/^(\w+)\s*=\s*(.+)$/);if(Ie&&W){const[,Rs,qs]=Ie;let ie=qs.trim();const we=ie.match(/^("[^"]*")/);if(we)ie=we[1];else{const Le=ie.indexOf("#");Le!==-1&&(ie=ie.substring(0,Le).trim())}let Ke;if(ie==="true")Ke=!0;else if(ie==="false")Ke=!1;else if(ie.startsWith("[")&&ie.endsWith("]")){const Le=ie.slice(1,-1).trim();if(Le){const st=Le.split(",").map(bt=>{const Je=bt.trim();return isNaN(Number(Je))?Je.replace(/"/g,""):Number(Je)}),Jt=typeof st[0];Ke=st.every(bt=>typeof bt===Jt)?st:st.filter(bt=>typeof bt=="number")}else Ke=[]}else ie.startsWith('"')&&ie.endsWith('"')?Ke=ie.slice(1,-1):isNaN(Number(ie))?Ke=ie.replace(/"/g,""):Ke=Number(ie);if(W in F){const Le=F[W];Le[Rs]=Ke}}}return F},Q=O=>{const F=[],A=(W,_e)=>W===""||W===null||W===void 0?_e:W;return F.push("[inner]"),F.push(`version = "${A(O.inner.version,Yt.inner.version)}" # 版本号`),F.push("# 请勿修改版本号,除非你知道自己在做什么"),F.push(""),F.push("[nickname] # 现在没用"),F.push(`nickname = "${A(O.nickname.nickname,Yt.nickname.nickname)}"`),F.push(""),F.push("[napcat_server] # Napcat连接的ws服务设置"),F.push(`host = "${A(O.napcat_server.host,Yt.napcat_server.host)}" # Napcat设定的主机地址`),F.push(`port = ${A(O.napcat_server.port||0,Yt.napcat_server.port)} # Napcat设定的端口`),F.push(`token = "${A(O.napcat_server.token,Yt.napcat_server.token)}" # Napcat设定的访问令牌,若无则留空`),F.push(`heartbeat_interval = ${A(O.napcat_server.heartbeat_interval||0,Yt.napcat_server.heartbeat_interval)} # 与Napcat设置的心跳相同(按秒计)`),F.push(""),F.push("[maibot_server] # 连接麦麦的ws服务设置"),F.push(`host = "${A(O.maibot_server.host,Yt.maibot_server.host)}" # 麦麦在.env文件中设置的主机地址,即HOST字段`),F.push(`port = ${A(O.maibot_server.port||0,Yt.maibot_server.port)} # 麦麦在.env文件中设置的端口,即PORT字段`),F.push(""),F.push("[chat] # 黑白名单功能"),F.push(`group_list_type = "${A(O.chat.group_list_type,Yt.chat.group_list_type)}" # 群组名单类型,可选为:whitelist, blacklist`),F.push(`group_list = [${O.chat.group_list.join(", ")}] # 群组名单`),F.push("# 当group_list_type为whitelist时,只有群组名单中的群组可以聊天"),F.push("# 当group_list_type为blacklist时,群组名单中的任何群组无法聊天"),F.push(`private_list_type = "${A(O.chat.private_list_type,Yt.chat.private_list_type)}" # 私聊名单类型,可选为:whitelist, blacklist`),F.push(`private_list = [${O.chat.private_list.join(", ")}] # 私聊名单`),F.push("# 当private_list_type为whitelist时,只有私聊名单中的用户可以聊天"),F.push("# 当private_list_type为blacklist时,私聊名单中的任何用户无法聊天"),F.push(`ban_user_id = [${O.chat.ban_user_id.join(", ")}] # 全局禁止名单(全局禁止名单中的用户无法进行任何聊天)`),F.push(`ban_qq_bot = ${O.chat.ban_qq_bot} # 是否屏蔽QQ官方机器人`),F.push(`enable_poke = ${O.chat.enable_poke} # 是否启用戳一戳功能`),F.push(""),F.push("[voice] # 发送语音设置"),F.push(`use_tts = ${O.voice.use_tts} # 是否使用tts语音(请确保你配置了tts并有对应的adapter)`),F.push(""),F.push("[debug]"),F.push(`level = "${A(O.debug.level,Yt.debug.level)}" # 日志等级(DEBUG, INFO, WARNING, ERROR, CRITICAL)`),F.join(` -`)},oe=O=>{const F=O.target.files?.[0];if(!F)return;const A=new FileReader;A.onload=W=>{try{const _e=W.target?.result,Me=he(_e);d(Me),x(F.name),w({title:"上传成功",description:`已加载配置文件:${F.name}`})}catch(_e){console.error("解析配置文件失败:",_e),w({title:"解析失败",description:"配置文件格式错误,请检查文件内容",variant:"destructive"})}},A.readAsText(F)},ge=()=>{if(!c)return;const O=Q(c),F=new Blob([O],{type:"text/plain;charset=utf-8"}),A=URL.createObjectURL(F),W=document.createElement("a");W.href=A,W.download=h||"config.toml",document.body.appendChild(W),W.click(),document.body.removeChild(W),URL.revokeObjectURL(A),w({title:"下载成功",description:"配置文件已下载,请手动覆盖并重启适配器"})},le=()=>{d(JSON.parse(JSON.stringify(Yt))),x("config.toml"),w({title:"已加载默认配置",description:"可以开始编辑配置"})};return e.jsx(es,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦适配器配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的 QQ 适配器的配置文件"})]})}),e.jsxs("div",{className:"flex items-start gap-2 p-3 rounded-lg border border-amber-500/50 bg-amber-500/10 text-amber-700 dark:text-amber-400",children:[e.jsx(Aa,{className:"h-4 w-4 mt-0.5 flex-shrink-0"}),e.jsx("p",{className:"text-sm",children:"适配器配置保存之后使用 WebUI 的重启功能适配器并不会重启,需要手动重启适配器。"})]}),e.jsxs(Be,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"工作模式"}),e.jsx(Zs,{children:"选择配置文件的管理方式"})]}),e.jsxs(bs,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3 md:gap-4",children:[e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="preset"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>y("preset"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(rn,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"预设模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"使用预设的部署配置"})]})]})}),e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="upload"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>y("upload"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(hr,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"上传文件模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"上传配置文件,编辑后下载并手动覆盖"})]})]})}),e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="path"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>y("path"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(LN,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"指定路径模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"指定配置文件路径,自动加载和保存"})]})]})})]}),n==="preset"&&e.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[e.jsx(b,{className:"text-sm md:text-base",children:"选择部署方式"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:Object.entries(Du).map(([O,F])=>{const A=F.icon,W=g===O;return e.jsx("div",{className:`border-2 rounded-lg p-3 cursor-pointer transition-all ${W?"border-primary bg-primary/5":"border-muted hover:border-primary/50"}`,onClick:()=>{_(O),be(O)},children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(A,{className:"h-5 w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h4",{className:"font-semibold text-sm",children:F.name}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:F.description}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1 font-mono break-all",children:F.path})]})]})},O)})})]}),n==="path"&&e.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"config-path",className:"text-sm md:text-base",children:"配置文件路径"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs("div",{className:"flex-1 space-y-1",children:[e.jsx(ce,{id:"config-path",value:f,onChange:O=>xe(O.target.value),placeholder:"例: C:\\Adapter\\config.toml",className:`text-sm ${v?"border-destructive":""}`}),v&&e.jsx("p",{className:"text-xs text-destructive",children:v})]}),e.jsx(N,{onClick:()=>ye(f),disabled:L||!f||!!v,className:"w-full sm:w-auto",children:L?e.jsxs(e.Fragment,{children:[e.jsx(ft,{className:"h-4 w-4 animate-spin mr-2"}),e.jsx("span",{className:"sm:hidden",children:"加载中..."})]}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"sm:hidden",children:"加载配置"}),e.jsx("span",{className:"hidden sm:inline",children:"加载"})]})})]})]}),e.jsxs("details",{className:"rounded-lg bg-muted/50 p-3 group",children:[e.jsxs("summary",{className:"text-xs font-medium cursor-pointer select-none list-none flex items-center justify-between",children:[e.jsx("span",{children:"路径格式说明"}),e.jsx("svg",{className:"h-4 w-4 transition-transform group-open:rotate-180",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),e.jsxs("div",{className:"mt-2 space-y-2 text-xs text-muted-foreground",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Windows"})}),e.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[e.jsx("div",{children:"C:\\Adapter\\config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"D:\\MaiBot\\adapter\\config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"\\\\server\\share\\config.toml"})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Linux"})}),e.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[e.jsx("div",{children:"/opt/adapter/config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"/home/user/adapter/config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"~/adapter/config.toml"})]})]}),e.jsx("p",{className:"pt-1 border-t text-[10px] md:text-xs",children:"💡 配置会自动保存到指定文件,修改后 1 秒自动保存"})]})]})]})]})]}),e.jsxs(ua,{children:[e.jsx(Xt,{className:"h-4 w-4"}),e.jsx(ma,{children:n==="preset"?e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"预设模式:"}),"选择预设的部署方式,配置会自动加载,修改后 1 秒自动保存",z&&" (正在保存...)"]}):n==="upload"?e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"上传文件模式:"}),"上传配置文件 → 在线编辑 → 下载文件 → 手动覆盖并重启适配器"]}):e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"指定路径模式:"}),"指定配置文件路径后,配置会自动加载,修改后 1 秒自动保存",z&&" (正在保存...)"]})})]}),n==="upload"&&!c&&e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 w-full",children:[e.jsx("input",{ref:X,type:"file",accept:".toml",className:"hidden",onChange:oe}),e.jsxs(N,{onClick:()=>X.current?.click(),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(hr,{className:"mr-2 h-4 w-4"}),"上传配置"]}),e.jsxs(N,{onClick:le,size:"sm",className:"w-full sm:w-auto",children:[e.jsx(Ma,{className:"mr-2 h-4 w-4"}),"使用默认配置"]})]}),n==="upload"&&c&&e.jsx("div",{className:"flex gap-2",children:e.jsxs(N,{onClick:ge,size:"sm",className:"w-full sm:w-auto",children:[e.jsx(nl,{className:"mr-2 h-4 w-4"}),"下载配置"]})}),(n==="preset"||n==="path")&&c&&e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs(N,{onClick:pe,size:"sm",disabled:z||!!v,className:"w-full sm:w-auto",children:[e.jsx(br,{className:"mr-2 h-4 w-4"}),z?"保存中...":"立即保存"]}),e.jsxs(N,{onClick:Ne,size:"sm",variant:"outline",disabled:L,className:"w-full sm:w-auto",children:[e.jsx(ft,{className:`mr-2 h-4 w-4 ${L?"animate-spin":""}`}),"刷新"]}),n==="path"&&e.jsxs(N,{onClick:ne,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(ns,{className:"mr-2 h-4 w-4"}),"清空路径"]})]}),c?e.jsxs(Kt,{defaultValue:"napcat",className:"w-full",children:[e.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:e.jsxs(Rt,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5",children:[e.jsxs(He,{value:"napcat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"Napcat 连接"}),e.jsx("span",{className:"sm:hidden",children:"Napcat"})]}),e.jsxs(He,{value:"maibot",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"麦麦连接"}),e.jsx("span",{className:"sm:hidden",children:"麦麦"})]}),e.jsxs(He,{value:"chat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"聊天控制"}),e.jsx("span",{className:"sm:hidden",children:"聊天"})]}),e.jsxs(He,{value:"voice",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"语音设置"}),e.jsx("span",{className:"sm:hidden",children:"语音"})]}),e.jsx(He,{value:"debug",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:"调试"})]})}),e.jsx(We,{value:"napcat",className:"space-y-4",children:e.jsx(Tw,{config:c,onChange:O=>{d(O),ve(O)}})}),e.jsx(We,{value:"maibot",className:"space-y-4",children:e.jsx(Ew,{config:c,onChange:O=>{d(O),ve(O)}})}),e.jsx(We,{value:"chat",className:"space-y-4",children:e.jsx(zw,{config:c,onChange:O=>{d(O),ve(O)}})}),e.jsx(We,{value:"voice",className:"space-y-4",children:e.jsx(Mw,{config:c,onChange:O=>{d(O),ve(O)}})}),e.jsx(We,{value:"debug",className:"space-y-4",children:e.jsx(Aw,{config:c,onChange:O=>{d(O),ve(O)}})})]}):e.jsx("div",{className:"rounded-lg border bg-card p-6 md:p-12",children:e.jsxs("div",{className:"text-center space-y-3 md:space-y-4",children:[e.jsx(Ma,{className:"h-12 w-12 md:h-16 md:w-16 mx-auto text-muted-foreground"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold",children:"尚未加载配置"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-2 px-4",children:n==="preset"?"请选择预设的部署方式":n==="upload"?"请上传现有配置文件,或使用默认配置开始编辑":"请指定配置文件路径并点击加载按钮"})]})]})}),e.jsx(ps,{open:U,onOpenChange:R,children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认切换模式"}),e.jsxs(ms,{children:["切换模式将清空当前配置,确定要继续吗?",e.jsx("br",{}),e.jsx("span",{className:"text-destructive font-medium",children:"请确保已保存重要配置"})]})]}),e.jsxs(ds,{children:[e.jsx(xs,{onClick:()=>{R(!1),B(null)},children:"取消"}),e.jsx(hs,{onClick:H,children:"确认切换"})]})]})}),e.jsx(ps,{open:ee,onOpenChange:V,children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认清空路径"}),e.jsxs(ms,{children:["清空路径将清除当前配置,确定要继续吗?",e.jsx("br",{}),e.jsx("span",{className:"text-muted-foreground text-sm",children:"此操作不会删除配置文件,只是清除界面中的配置"})]})]}),e.jsxs(ds,{children:[e.jsx(xs,{onClick:()=>V(!1),children:"取消"}),e.jsx(hs,{onClick:me,className:"bg-destructive hover:bg-destructive/90",children:"确认清空"})]})]})})]})})}function Tw({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"Napcat WebSocket 服务设置"}),e.jsxs("div",{className:"grid gap-3 md:gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"napcat-host",className:"text-sm md:text-base",children:"主机地址"}),e.jsx(ce,{id:"napcat-host",value:n.napcat_server.host,onChange:c=>r({...n,napcat_server:{...n.napcat_server,host:c.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的主机地址"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"napcat-port",className:"text-sm md:text-base",children:"端口"}),e.jsx(ce,{id:"napcat-port",type:"number",value:n.napcat_server.port||"",onChange:c=>r({...n,napcat_server:{...n.napcat_server,port:c.target.value?parseInt(c.target.value):0}}),placeholder:"8095",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的端口(留空使用默认值 8095)"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"napcat-token",className:"text-sm md:text-base",children:"访问令牌(Token)"}),e.jsx(ce,{id:"napcat-token",type:"password",value:n.napcat_server.token,onChange:c=>r({...n,napcat_server:{...n.napcat_server,token:c.target.value}}),placeholder:"留空表示无需令牌",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的访问令牌,若无则留空"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"napcat-heartbeat",className:"text-sm md:text-base",children:"心跳间隔(秒)"}),e.jsx(ce,{id:"napcat-heartbeat",type:"number",value:n.napcat_server.heartbeat_interval||"",onChange:c=>r({...n,napcat_server:{...n.napcat_server,heartbeat_interval:c.target.value?parseInt(c.target.value):0}}),placeholder:"30",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"与 Napcat 设置的心跳间隔保持一致(留空使用默认值 30)"})]})]})]})})}function Ew({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"麦麦 WebSocket 服务设置"}),e.jsxs("div",{className:"grid gap-3 md:gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"maibot-host",className:"text-sm md:text-base",children:"主机地址"}),e.jsx(ce,{id:"maibot-host",value:n.maibot_server.host,onChange:c=>r({...n,maibot_server:{...n.maibot_server,host:c.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 HOST 字段"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"maibot-port",className:"text-sm md:text-base",children:"端口"}),e.jsx(ce,{id:"maibot-port",type:"number",value:n.maibot_server.port||"",onChange:c=>r({...n,maibot_server:{...n.maibot_server,port:c.target.value?parseInt(c.target.value):0}}),placeholder:"8000",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 PORT 字段(留空使用默认值 8000)"})]})]})]})})}function zw({config:n,onChange:r}){const c=x=>{const f={...n};x==="group"?f.chat.group_list=[...f.chat.group_list,0]:x==="private"?f.chat.private_list=[...f.chat.private_list,0]:f.chat.ban_user_id=[...f.chat.ban_user_id,0],r(f)},d=(x,f)=>{const j={...n};x==="group"?j.chat.group_list=j.chat.group_list.filter((g,_)=>_!==f):x==="private"?j.chat.private_list=j.chat.private_list.filter((g,_)=>_!==f):j.chat.ban_user_id=j.chat.ban_user_id.filter((g,_)=>_!==f),r(j)},h=(x,f,j)=>{const g={...n};x==="group"?g.chat.group_list[f]=j:x==="private"?g.chat.private_list[f]=j:g.chat.ban_user_id[f]=j,r(g)};return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"聊天黑白名单功能"}),e.jsxs("div",{className:"grid gap-4 md:gap-6",children:[e.jsxs("div",{className:"space-y-3 md:space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-sm md:text-base",children:"群组名单类型"}),e.jsxs(Qe,{value:n.chat.group_list_type,onValueChange:x=>r({...n,chat:{...n.chat,group_list_type:x}}),children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),e.jsx(ue,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsx(b,{className:"text-sm md:text-base",children:"群组列表"}),e.jsxs(N,{onClick:()=>c("group"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Ma,{className:"mr-1 h-4 w-4"}),"添加群号"]})]}),n.chat.group_list.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{type:"number",value:x,onChange:j=>h("group",f,parseInt(j.target.value)||0),placeholder:"输入群号",className:"text-sm md:text-base"}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(N,{size:"icon",variant:"outline",children:e.jsx(ns,{className:"h-4 w-4"})})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:["确定要删除群号 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>d("group",f),children:"删除"})]})]})]})]},f)),n.chat.group_list.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无群组"})]})]}),e.jsxs("div",{className:"space-y-3 md:space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-sm md:text-base",children:"私聊名单类型"}),e.jsxs(Qe,{value:n.chat.private_list_type,onValueChange:x=>r({...n,chat:{...n.chat,private_list_type:x}}),children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),e.jsx(ue,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsx(b,{className:"text-sm md:text-base",children:"私聊列表"}),e.jsxs(N,{onClick:()=>c("private"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Ma,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),n.chat.private_list.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{type:"number",value:x,onChange:j=>h("private",f,parseInt(j.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(N,{size:"icon",variant:"outline",children:e.jsx(ns,{className:"h-4 w-4"})})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:["确定要删除用户 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>d("private",f),children:"删除"})]})]})]})]},f)),n.chat.private_list.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无用户"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-sm md:text-base",children:"全局禁止名单"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"名单中的用户无法进行任何聊天"})]}),e.jsxs(N,{onClick:()=>c("ban"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Ma,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),n.chat.ban_user_id.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{type:"number",value:x,onChange:j=>h("ban",f,parseInt(j.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(N,{size:"icon",variant:"outline",children:e.jsx(ns,{className:"h-4 w-4"})})}),e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:["确定要从全局禁止名单中删除用户 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>d("ban",f),children:"删除"})]})]})]})]},f)),n.chat.ban_user_id.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无禁止用户"})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-sm md:text-base",children:"屏蔽QQ官方机器人"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否屏蔽来自QQ官方机器人的消息"})]}),e.jsx(qe,{checked:n.chat.ban_qq_bot,onCheckedChange:x=>r({...n,chat:{...n.chat,ban_qq_bot:x}})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-sm md:text-base",children:"启用戳一戳功能"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否响应戳一戳消息"})]}),e.jsx(qe,{checked:n.chat.enable_poke,onCheckedChange:x=>r({...n,chat:{...n.chat,enable_poke:x}})})]})]})]})})}function Mw({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"发送语音设置"}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-sm md:text-base",children:"使用 TTS 语音"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"请确保已配置 TTS 并有对应的适配器"})]}),e.jsx(qe,{checked:n.voice.use_tts,onCheckedChange:c=>r({...n,voice:{use_tts:c}})})]})]})})}function Aw({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"调试设置"}),e.jsx("div",{className:"grid gap-3 md:gap-4",children:e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-sm md:text-base",children:"日志等级"}),e.jsxs(Qe,{value:n.debug.level,onValueChange:c=>r({...n,debug:{level:c}}),children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"DEBUG",children:"DEBUG(调试)"}),e.jsx(ue,{value:"INFO",children:"INFO(信息)"}),e.jsx(ue,{value:"WARNING",children:"WARNING(警告)"}),e.jsx(ue,{value:"ERROR",children:"ERROR(错误)"}),e.jsx(ue,{value:"CRITICAL",children:"CRITICAL(严重)"})]})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"设置适配器的日志输出等级"})]})})]})})}const Dw=["defaultChecked","defaultValue","suppressContentEditableWarning","suppressHydrationWarning","dangerouslySetInnerHTML","accessKey","className","contentEditable","contextMenu","dir","draggable","hidden","id","lang","placeholder","slot","spellCheck","style","tabIndex","title","translate","radioGroup","role","about","datatype","inlist","prefix","property","resource","typeof","vocab","autoCapitalize","autoCorrect","autoSave","color","itemProp","itemScope","itemType","itemID","itemRef","results","security","unselectable","inputMode","is","onCopy","onCopyCapture","onCut","onCutCapture","onPaste","onPasteCapture","onCompositionEnd","onCompositionEndCapture","onCompositionStart","onCompositionStartCapture","onCompositionUpdate","onCompositionUpdateCapture","onFocus","onFocusCapture","onBlur","onBlurCapture","onChange","onChangeCapture","onBeforeInput","onBeforeInputCapture","onInput","onInputCapture","onReset","onResetCapture","onSubmit","onSubmitCapture","onInvalid","onInvalidCapture","onLoad","onLoadCapture","onError","onErrorCapture","onKeyDown","onKeyDownCapture","onKeyPress","onKeyPressCapture","onKeyUp","onKeyUpCapture","onAbort","onAbortCapture","onCanPlay","onCanPlayCapture","onCanPlayThrough","onCanPlayThroughCapture","onDurationChange","onDurationChangeCapture","onEmptied","onEmptiedCapture","onEncrypted","onEncryptedCapture","onEnded","onEndedCapture","onLoadedData","onLoadedDataCapture","onLoadedMetadata","onLoadedMetadataCapture","onLoadStart","onLoadStartCapture","onPause","onPauseCapture","onPlay","onPlayCapture","onPlaying","onPlayingCapture","onProgress","onProgressCapture","onRateChange","onRateChangeCapture","onSeeked","onSeekedCapture","onSeeking","onSeekingCapture","onStalled","onStalledCapture","onSuspend","onSuspendCapture","onTimeUpdate","onTimeUpdateCapture","onVolumeChange","onVolumeChangeCapture","onWaiting","onWaitingCapture","onAuxClick","onAuxClickCapture","onClick","onClickCapture","onContextMenu","onContextMenuCapture","onDoubleClick","onDoubleClickCapture","onDrag","onDragCapture","onDragEnd","onDragEndCapture","onDragEnter","onDragEnterCapture","onDragExit","onDragExitCapture","onDragLeave","onDragLeaveCapture","onDragOver","onDragOverCapture","onDragStart","onDragStartCapture","onDrop","onDropCapture","onMouseDown","onMouseDownCapture","onMouseEnter","onMouseLeave","onMouseMove","onMouseMoveCapture","onMouseOut","onMouseOutCapture","onMouseOver","onMouseOverCapture","onMouseUp","onMouseUpCapture","onSelect","onSelectCapture","onTouchCancel","onTouchCancelCapture","onTouchEnd","onTouchEndCapture","onTouchMove","onTouchMoveCapture","onTouchStart","onTouchStartCapture","onPointerDown","onPointerDownCapture","onPointerMove","onPointerMoveCapture","onPointerUp","onPointerUpCapture","onPointerCancel","onPointerCancelCapture","onPointerEnter","onPointerEnterCapture","onPointerLeave","onPointerLeaveCapture","onPointerOver","onPointerOverCapture","onPointerOut","onPointerOutCapture","onGotPointerCapture","onGotPointerCaptureCapture","onLostPointerCapture","onLostPointerCaptureCapture","onScroll","onScrollCapture","onWheel","onWheelCapture","onAnimationStart","onAnimationStartCapture","onAnimationEnd","onAnimationEndCapture","onAnimationIteration","onAnimationIterationCapture","onTransitionEnd","onTransitionEndCapture"],Ow=/^(aria-|data-)/,Gg=n=>Object.fromEntries(Object.entries(n).filter(([r])=>Ow.test(r)||Dw.includes(r)));function Rw(n,r){const c=Gg(n);return Object.keys(n).some(d=>!Object.hasOwn(c,d)&&n[d]!==r[d])}class Lw extends u.Component{container;plugin;componentDidMount(){this.installPlugin()}componentDidUpdate(r){if(r.uppy!==this.props.uppy)this.uninstallPlugin(r),this.installPlugin();else if(Rw(this.props,r)){const{uppy:c,...d}={...this.props,target:this.container};this.plugin.setOptions(d)}}componentWillUnmount(){this.uninstallPlugin()}installPlugin(){const{uppy:r,...c}={id:"Dashboard",...this.props,inline:!0,target:this.container};r.use(vb,c),this.plugin=r.getPlugin(c.id)}uninstallPlugin(r=this.props){const{uppy:c}=r;c.removePlugin(this.plugin)}render(){return u.createElement("div",{className:"uppy-Container",ref:r=>{this.container=r},...Gg(this.props)})}}function Uw({content:n,className:r=""}){return e.jsx("div",{className:`prose prose-sm dark:prose-invert max-w-none ${r}`,children:e.jsx(Nb,{remarkPlugins:[wb,_b],rehypePlugins:[bb],components:{code({inline:c,className:d,children:h,...x}){return c?e.jsx("code",{className:"bg-muted px-1.5 py-0.5 rounded text-sm font-mono",...x,children:h}):e.jsx("code",{className:`${d} block bg-muted p-4 rounded-lg overflow-x-auto`,...x,children:h})},table({children:c,...d}){return e.jsx("div",{className:"overflow-x-auto",children:e.jsx("table",{className:"border-collapse border border-border",...d,children:c})})},th({children:c,...d}){return e.jsx("th",{className:"border border-border bg-muted px-4 py-2 text-left font-semibold",...d,children:c})},td({children:c,...d}){return e.jsx("td",{className:"border border-border px-4 py-2",...d,children:c})},a({children:c,...d}){return e.jsx("a",{className:"text-primary hover:underline",target:"_blank",rel:"noopener noreferrer",...d,children:c})},blockquote({children:c,...d}){return e.jsx("blockquote",{className:"border-l-4 border-primary pl-4 italic text-muted-foreground",...d,children:c})},h1({children:c,...d}){return e.jsx("h1",{className:"text-3xl font-bold mt-6 mb-4",...d,children:c})},h2({children:c,...d}){return e.jsx("h2",{className:"text-2xl font-bold mt-5 mb-3",...d,children:c})},h3({children:c,...d}){return e.jsx("h3",{className:"text-xl font-bold mt-4 mb-2",...d,children:c})},h4({children:c,...d}){return e.jsx("h4",{className:"text-lg font-semibold mt-3 mb-2",...d,children:c})},ul({children:c,...d}){return e.jsx("ul",{className:"list-disc list-inside space-y-1 my-2",...d,children:c})},ol({children:c,...d}){return e.jsx("ol",{className:"list-decimal list-inside space-y-1 my-2",...d,children:c})},p({children:c,...d}){return e.jsx("p",{className:"my-2 leading-relaxed",...d,children:c})},hr({...c}){return e.jsx("hr",{className:"my-4 border-border",...c})}},children:n})})}function Bw({children:n,className:r}){return e.jsx(Uw,{content:n,className:r})}const Ra="/api/webui/emoji";async function Hw(n){const r=new URLSearchParams;n.page&&r.append("page",n.page.toString()),n.page_size&&r.append("page_size",n.page_size.toString()),n.search&&r.append("search",n.search),n.is_registered!==void 0&&r.append("is_registered",n.is_registered.toString()),n.is_banned!==void 0&&r.append("is_banned",n.is_banned.toString()),n.format&&r.append("format",n.format),n.sort_by&&r.append("sort_by",n.sort_by),n.sort_order&&r.append("sort_order",n.sort_order);const c=await ke(`${Ra}/list?${r}`,{headers:ze()});if(!c.ok)throw new Error(`获取表情包列表失败: ${c.statusText}`);return c.json()}async function qw(n){const r=await ke(`${Ra}/${n}`,{headers:ze()});if(!r.ok)throw new Error(`获取表情包详情失败: ${r.statusText}`);return r.json()}async function Gw(n,r){const c=await ke(`${Ra}/${n}`,{method:"PATCH",headers:ze(),body:JSON.stringify(r)});if(!c.ok)throw new Error(`更新表情包失败: ${c.statusText}`);return c.json()}async function Vw(n){const r=await ke(`${Ra}/${n}`,{method:"DELETE",headers:ze()});if(!r.ok)throw new Error(`删除表情包失败: ${r.statusText}`);return r.json()}async function Fw(){const n=await ke(`${Ra}/stats/summary`,{headers:ze()});if(!n.ok)throw new Error(`获取统计数据失败: ${n.statusText}`);return n.json()}async function Qw(n){const r=await ke(`${Ra}/${n}/register`,{method:"POST",headers:ze()});if(!r.ok)throw new Error(`注册表情包失败: ${r.statusText}`);return r.json()}async function $w(n){const r=await ke(`${Ra}/${n}/ban`,{method:"POST",headers:ze()});if(!r.ok)throw new Error(`封禁表情包失败: ${r.statusText}`);return r.json()}function Vg(n){const r=localStorage.getItem("access-token");return`${Ra}/${n}/thumbnail?token=${encodeURIComponent(r||"")}`}async function Yw(n){const r=await ke(`${Ra}/batch/delete`,{method:"POST",headers:ze(),body:JSON.stringify({emoji_ids:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"批量删除失败")}return r.json()}function Xw(){return`${Ra}/upload`}function Kw(){const[n,r]=u.useState([]),[c,d]=u.useState(null),[h,x]=u.useState(!1),[f,j]=u.useState(1),[g,_]=u.useState(0),[v,k]=u.useState(20),[z,T]=u.useState("all"),[L,K]=u.useState("all"),[U,R]=u.useState("all"),[ee,V]=u.useState("usage_count"),[E,B]=u.useState("desc"),[X,w]=u.useState(null),[D,te]=u.useState(!1),[xe,be]=u.useState(!1),[ye,ve]=u.useState(!1),[pe,Ne]=u.useState(new Set),[y,q]=u.useState(!1),[H,ne]=u.useState(""),[S,me]=u.useState("medium"),[he,Q]=u.useState(!1),{toast:oe}=Bs(),ge=u.useCallback(async()=>{try{x(!0);const ie=await Hw({page:f,page_size:v,is_registered:z==="all"?void 0:z==="registered",is_banned:L==="all"?void 0:L==="banned",format:U==="all"?void 0:U,sort_by:ee,sort_order:E});r(ie.data),_(ie.total)}catch(ie){const we=ie instanceof Error?ie.message:"加载表情包列表失败";oe({title:"错误",description:we,variant:"destructive"})}finally{x(!1)}},[f,v,z,L,U,ee,E,oe]),le=async()=>{try{const ie=await Fw();d(ie.data)}catch(ie){console.error("加载统计数据失败:",ie)}};u.useEffect(()=>{ge()},[ge]),u.useEffect(()=>{le()},[]);const O=async ie=>{try{const we=await qw(ie.id);w(we.data),te(!0)}catch(we){const Ke=we instanceof Error?we.message:"加载详情失败";oe({title:"错误",description:Ke,variant:"destructive"})}},F=ie=>{w(ie),be(!0)},A=ie=>{w(ie),ve(!0)},W=async()=>{if(X)try{await Vw(X.id),oe({title:"成功",description:"表情包已删除"}),ve(!1),w(null),ge(),le()}catch(ie){const we=ie instanceof Error?ie.message:"删除失败";oe({title:"错误",description:we,variant:"destructive"})}},_e=async ie=>{try{await Qw(ie.id),oe({title:"成功",description:"表情包已注册"}),ge(),le()}catch(we){const Ke=we instanceof Error?we.message:"注册失败";oe({title:"错误",description:Ke,variant:"destructive"})}},Me=async ie=>{try{await $w(ie.id),oe({title:"成功",description:"表情包已封禁"}),ge(),le()}catch(we){const Ke=we instanceof Error?we.message:"封禁失败";oe({title:"错误",description:Ke,variant:"destructive"})}},ss=ie=>{const we=new Set(pe);we.has(ie)?we.delete(ie):we.add(ie),Ne(we)},Ie=async()=>{try{const ie=await Yw(Array.from(pe));oe({title:"批量删除完成",description:ie.message}),Ne(new Set),q(!1),ge(),le()}catch(ie){oe({title:"批量删除失败",description:ie instanceof Error?ie.message:"批量删除失败",variant:"destructive"})}},Rs=()=>{const ie=parseInt(H),we=Math.ceil(g/v);ie>=1&&ie<=we?(j(ie),ne("")):oe({title:"无效的页码",description:`请输入1-${we}之间的页码`,variant:"destructive"})},qs=c?.formats?Object.keys(c.formats):[];return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsxs("div",{className:"mb-4 sm:mb-6 flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"表情包管理"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理麦麦的表情包资源"})]}),e.jsxs(N,{onClick:()=>Q(!0),className:"gap-2",children:[e.jsx(hr,{className:"h-4 w-4"}),"上传表情包"]})]}),e.jsx(es,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[c&&e.jsxs("div",{className:"grid gap-4 grid-cols-2 lg:grid-cols-4",children:[e.jsx(Be,{children:e.jsxs(gs,{className:"pb-2",children:[e.jsx(Zs,{children:"总数"}),e.jsx(js,{className:"text-2xl",children:c.total})]})}),e.jsx(Be,{children:e.jsxs(gs,{className:"pb-2",children:[e.jsx(Zs,{children:"已注册"}),e.jsx(js,{className:"text-2xl text-green-600",children:c.registered})]})}),e.jsx(Be,{children:e.jsxs(gs,{className:"pb-2",children:[e.jsx(Zs,{children:"已封禁"}),e.jsx(js,{className:"text-2xl text-red-600",children:c.banned})]})}),e.jsx(Be,{children:e.jsxs(gs,{className:"pb-2",children:[e.jsx(Zs,{children:"未注册"}),e.jsx(js,{className:"text-2xl text-gray-600",children:c.unregistered})]})})]}),e.jsxs(Be,{children:[e.jsx(gs,{children:e.jsxs(js,{className:"flex items-center gap-2",children:[e.jsx(Lu,{className:"h-5 w-5"}),"筛选和排序"]})}),e.jsxs(bs,{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"排序方式"}),e.jsxs(Qe,{value:`${ee}-${E}`,onValueChange:ie=>{const[we,Ke]=ie.split("-");V(we),B(Ke),j(1)},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"usage_count-desc",children:"使用次数 (多→少)"}),e.jsx(ue,{value:"usage_count-asc",children:"使用次数 (少→多)"}),e.jsx(ue,{value:"register_time-desc",children:"注册时间 (新→旧)"}),e.jsx(ue,{value:"register_time-asc",children:"注册时间 (旧→新)"}),e.jsx(ue,{value:"record_time-desc",children:"记录时间 (新→旧)"}),e.jsx(ue,{value:"record_time-asc",children:"记录时间 (旧→新)"}),e.jsx(ue,{value:"last_used_time-desc",children:"最后使用 (新→旧)"}),e.jsx(ue,{value:"last_used_time-asc",children:"最后使用 (旧→新)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"注册状态"}),e.jsxs(Qe,{value:z,onValueChange:ie=>{T(ie),j(1)},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"all",children:"全部"}),e.jsx(ue,{value:"registered",children:"已注册"}),e.jsx(ue,{value:"unregistered",children:"未注册"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"封禁状态"}),e.jsxs(Qe,{value:L,onValueChange:ie=>{K(ie),j(1)},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"all",children:"全部"}),e.jsx(ue,{value:"banned",children:"已封禁"}),e.jsx(ue,{value:"unbanned",children:"未封禁"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"格式"}),e.jsxs(Qe,{value:U,onValueChange:ie=>{R(ie),j(1)},children:[e.jsx(Ge,{children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"all",children:"全部"}),qs.map(ie=>e.jsxs(ue,{value:ie,children:[ie.toUpperCase()," (",c?.formats[ie],")"]},ie))]})]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 pt-4 border-t",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[pe.size>0&&e.jsxs("span",{className:"text-sm text-muted-foreground",children:["已选择 ",pe.size," 个表情包"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{className:"text-sm whitespace-nowrap",children:"卡片大小"}),e.jsxs(Qe,{value:S,onValueChange:ie=>me(ie),children:[e.jsx(Ge,{className:"w-24",children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"small",children:"小"}),e.jsx(ue,{value:"medium",children:"中"}),e.jsx(ue,{value:"large",children:"大"})]})]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"emoji-page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(Qe,{value:v.toString(),onValueChange:ie=>{k(parseInt(ie)),j(1),Ne(new Set)},children:[e.jsx(Ge,{id:"emoji-page-size",className:"w-20",children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"20",children:"20"}),e.jsx(ue,{value:"40",children:"40"}),e.jsx(ue,{value:"60",children:"60"}),e.jsx(ue,{value:"100",children:"100"})]})]}),pe.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>Ne(new Set),children:"取消选择"}),e.jsxs(N,{variant:"destructive",size:"sm",onClick:()=>q(!0),children:[e.jsx(ns,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]}),e.jsx("div",{className:"flex justify-end pt-4 border-t",children:e.jsxs(N,{variant:"outline",size:"sm",onClick:ge,disabled:h,children:[e.jsx(ft,{className:`h-4 w-4 mr-2 ${h?"animate-spin":""}`}),"刷新"]})})]})]}),e.jsxs(Be,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"表情包列表"}),e.jsxs(Zs,{children:["共 ",g," 个表情包,当前第 ",f," 页"]})]}),e.jsxs(bs,{children:[n.length===0?e.jsx("div",{className:"text-center py-12 text-muted-foreground",children:"暂无数据"}):e.jsx("div",{className:`grid gap-3 ${S==="small"?"grid-cols-3 sm:grid-cols-4 md:grid-cols-6 lg:grid-cols-8 xl:grid-cols-10":S==="medium"?"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 xl:grid-cols-8":"grid-cols-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5"}`,children:n.map(ie=>e.jsxs("div",{className:`group relative rounded-lg border bg-card overflow-hidden hover:ring-2 hover:ring-primary transition-all cursor-pointer ${pe.has(ie.id)?"ring-2 ring-primary bg-primary/5":""}`,onClick:()=>ss(ie.id),children:[e.jsx("div",{className:`absolute top-1 left-1 z-10 transition-opacity ${pe.has(ie.id)?"opacity-100":"opacity-0 group-hover:opacity-100"}`,children:e.jsx("div",{className:`w-5 h-5 rounded-full border-2 flex items-center justify-center ${pe.has(ie.id)?"bg-primary border-primary text-primary-foreground":"bg-background/80 border-muted-foreground/50"}`,children:pe.has(ie.id)&&e.jsx(xa,{className:"h-3 w-3"})})}),e.jsxs("div",{className:"absolute top-1 right-1 z-10 flex flex-col gap-0.5",children:[ie.is_registered&&e.jsx(Xe,{variant:"default",className:"bg-green-600 text-[10px] px-1 py-0",children:"已注册"}),ie.is_banned&&e.jsx(Xe,{variant:"destructive",className:"text-[10px] px-1 py-0",children:"已封禁"})]}),e.jsx("div",{className:`aspect-square bg-muted flex items-center justify-center overflow-hidden ${S==="small"?"p-1":S==="medium"?"p-2":"p-3"}`,children:e.jsx("img",{src:Vg(ie.id),alt:"表情包",className:"w-full h-full object-contain",loading:"lazy",onError:we=>{const Ke=we.target;Ke.style.display="none";const Le=Ke.parentElement;Le&&(Le.innerHTML='')}})}),e.jsxs("div",{className:`border-t bg-card ${S==="small"?"p-1":"p-2"}`,children:[e.jsxs("div",{className:"flex items-center justify-between gap-1 text-xs text-muted-foreground mb-1",children:[e.jsx(Xe,{variant:"outline",className:"text-[10px] px-1 py-0",children:ie.format.toUpperCase()}),e.jsxs("span",{className:"font-mono",children:[ie.usage_count,"次"]})]}),e.jsxs("div",{className:`flex gap-1 justify-center opacity-0 group-hover:opacity-100 transition-opacity ${S==="small"?"flex-wrap":""}`,children:[e.jsx(N,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:we=>{we.stopPropagation(),F(ie)},title:"编辑",children:e.jsx(pr,{className:"h-3 w-3"})}),e.jsx(N,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:we=>{we.stopPropagation(),O(ie)},title:"详情",children:e.jsx(Xt,{className:"h-3 w-3"})}),!ie.is_registered&&e.jsx(N,{variant:"ghost",size:"icon",className:"h-6 w-6 text-green-600 hover:text-green-700",onClick:we=>{we.stopPropagation(),_e(ie)},title:"注册",children:e.jsx(xa,{className:"h-3 w-3"})}),!ie.is_banned&&e.jsx(N,{variant:"ghost",size:"icon",className:"h-6 w-6 text-orange-600 hover:text-orange-700",onClick:we=>{we.stopPropagation(),Me(ie)},title:"封禁",children:e.jsx(UN,{className:"h-3 w-3"})}),e.jsx(N,{variant:"ghost",size:"icon",className:"h-6 w-6 text-red-600 hover:text-red-700",onClick:we=>{we.stopPropagation(),A(ie)},title:"删除",children:e.jsx(ns,{className:"h-3 w-3"})})]})]})]},ie.id))}),g>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["显示 ",(f-1)*v+1," 到"," ",Math.min(f*v,g)," 条,共 ",g," 条"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(wr,{className:"h-4 w-4"})}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>j(ie=>Math.max(1,ie-1)),disabled:f===1,children:[e.jsx(cn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:H,onChange:ie=>ne(ie.target.value),onKeyDown:ie=>ie.key==="Enter"&&Rs(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(g/v)}),e.jsx(N,{variant:"outline",size:"sm",onClick:Rs,disabled:!H,className:"h-8",children:"跳转"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>j(ie=>ie+1),disabled:f>=Math.ceil(g/v),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(il,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(g/v)),disabled:f>=Math.ceil(g/v),className:"hidden sm:flex",children:e.jsx(_r,{className:"h-4 w-4"})})]})]})]})]}),e.jsx(Zw,{emoji:X,open:D,onOpenChange:te}),e.jsx(Iw,{emoji:X,open:xe,onOpenChange:be,onSuccess:()=>{ge(),le()}}),e.jsx(Jw,{open:he,onOpenChange:Q,onSuccess:()=>{ge(),le()}})]})}),e.jsx(ps,{open:y,onOpenChange:q,children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认批量删除"}),e.jsxs(ms,{children:["你确定要删除选中的 ",pe.size," 个表情包吗?此操作不可撤销。"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:Ie,children:"确认删除"})]})]})}),e.jsx(Os,{open:ye,onOpenChange:ve,children:e.jsxs(Es,{children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"确认删除"}),e.jsx($s,{children:"确定要删除这个表情包吗?此操作无法撤销。"})]}),e.jsxs(Is,{children:[e.jsx(N,{variant:"outline",onClick:()=>ve(!1),children:"取消"}),e.jsx(N,{variant:"destructive",onClick:W,children:"删除"})]})]})})]})}function Zw({emoji:n,open:r,onOpenChange:c}){if(!n)return null;const d=h=>h?new Date(h*1e3).toLocaleString("zh-CN"):"-";return e.jsx(Os,{open:r,onOpenChange:c,children:e.jsxs(Es,{className:"max-w-2xl max-h-[90vh]",children:[e.jsx(zs,{children:e.jsx(Ms,{children:"表情包详情"})}),e.jsx(es,{className:"max-h-[calc(90vh-8rem)] pr-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"flex justify-center",children:e.jsx("div",{className:"w-32 h-32 bg-muted rounded-lg flex items-center justify-center overflow-hidden",children:e.jsx("img",{src:Vg(n.id),alt:n.description||"表情包",className:"w-full h-full object-cover",onError:h=>{const x=h.target;x.style.display="none";const f=x.parentElement;f&&(f.innerHTML='')}})})}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"ID"}),e.jsx("div",{className:"mt-1 font-mono",children:n.id})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"格式"}),e.jsx("div",{className:"mt-1",children:e.jsx(Xe,{variant:"outline",children:n.format.toUpperCase()})})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"文件路径"}),e.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:n.full_path})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"哈希值"}),e.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:n.emoji_hash})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"描述"}),n.description?e.jsx("div",{className:"mt-1 rounded-lg border bg-muted/50 p-3",children:e.jsx(Bw,{className:"prose-sm",children:n.description})}):e.jsx("div",{className:"mt-1 text-sm text-muted-foreground",children:"-"})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"情绪"}),e.jsx("div",{className:"mt-1",children:n.emotion?e.jsx("span",{className:"text-sm",children:n.emotion}):e.jsx("span",{className:"text-sm text-muted-foreground",children:"-"})})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"状态"}),e.jsxs("div",{className:"mt-2 flex gap-2",children:[n.is_registered&&e.jsx(Xe,{variant:"default",className:"bg-green-600",children:"已注册"}),n.is_banned&&e.jsx(Xe,{variant:"destructive",children:"已封禁"}),!n.is_registered&&!n.is_banned&&e.jsx(Xe,{variant:"outline",children:"未注册"})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"使用次数"}),e.jsx("div",{className:"mt-1 font-mono text-lg",children:n.usage_count})]})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"记录时间"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.record_time)})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"注册时间"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.register_time)})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"最后使用"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.last_used_time)})]})]})})]})})}function Iw({emoji:n,open:r,onOpenChange:c,onSuccess:d}){const[h,x]=u.useState(""),[f,j]=u.useState(!1),[g,_]=u.useState(!1),[v,k]=u.useState(!1),{toast:z}=Bs();u.useEffect(()=>{n&&(x(n.emotion||""),j(n.is_registered),_(n.is_banned))},[n]);const T=async()=>{if(n)try{k(!0);const L=h.split(/[,,]/).map(K=>K.trim()).filter(Boolean).join(",");await Gw(n.id,{emotion:L||void 0,is_registered:f,is_banned:g}),z({title:"成功",description:"表情包信息已更新"}),c(!1),d()}catch(L){const K=L instanceof Error?L.message:"保存失败";z({title:"错误",description:K,variant:"destructive"})}finally{k(!1)}};return n?e.jsx(Os,{open:r,onOpenChange:c,children:e.jsxs(Es,{className:"max-w-2xl",children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"编辑表情包"}),e.jsx($s,{children:"修改表情包的情绪和状态信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(b,{children:"情绪"}),e.jsx(Us,{value:h,onChange:L=>x(L.target.value),placeholder:"输入情绪描述...",rows:2,className:"mt-1"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"输入情绪相关的文本描述"})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(yt,{id:"is_registered",checked:f,onCheckedChange:L=>{L===!0?(j(!0),_(!1)):j(!1)}}),e.jsx(b,{htmlFor:"is_registered",className:"cursor-pointer",children:"已注册"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(yt,{id:"is_banned",checked:g,onCheckedChange:L=>{L===!0?(_(!0),j(!1)):_(!1)}}),e.jsx(b,{htmlFor:"is_banned",className:"cursor-pointer",children:"已封禁"})]})]})]}),e.jsxs(Is,{children:[e.jsx(N,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(N,{onClick:T,disabled:v,children:v?"保存中...":"保存"})]})]})}):null}function Jw({open:n,onOpenChange:r,onSuccess:c}){const[d,h]=u.useState("select"),[x,f]=u.useState([]),[j,g]=u.useState(null),[_,v]=u.useState(!1),{toast:k}=Bs(),z=u.useMemo(()=>new yb({id:"emoji-uploader",autoProceed:!1,restrictions:{maxFileSize:10485760,allowedFileTypes:["image/jpeg","image/png","image/gif","image/webp"],maxNumberOfFiles:20},locale:{pluralize:()=>0,strings:{addMoreFiles:"添加更多文件",addingMoreFiles:"正在添加更多文件",allowedFileTypes:"允许的文件类型:%{types}",cancel:"取消",closeModal:"关闭",complete:"完成",connectedToInternet:"已连接到互联网",copyLink:"复制链接",copyLinkToClipboardFallback:"复制下方链接",copyLinkToClipboardSuccess:"链接已复制到剪贴板",dashboardTitle:"选择文件",dashboardWindowTitle:"文件选择窗口(按 ESC 关闭)",done:"完成",dropHereOr:"拖放文件到这里或 %{browse}",dropHint:"将文件拖放到此处",dropPasteFiles:"将文件拖放到这里或 %{browseFiles}",dropPasteFolders:"将文件拖放到这里或 %{browseFolders}",dropPasteBoth:"将文件拖放到这里,%{browseFiles} 或 %{browseFolders}",dropPasteImportFiles:"将文件拖放到这里,%{browseFiles} 或从以下位置导入:",dropPasteImportFolders:"将文件拖放到这里,%{browseFolders} 或从以下位置导入:",dropPasteImportBoth:"将文件拖放到这里,%{browseFiles},%{browseFolders} 或从以下位置导入:",editFile:"编辑文件",editing:"正在编辑 %{file}",emptyFolderAdded:"未从空文件夹添加文件",exceedsSize:"%{file} 超过了最大允许大小 %{size}",failedToUpload:"上传 %{file} 失败",fileSource:"文件来源:%{name}",filesUploadedOfTotal:{0:"已上传 %{complete} / %{smart_count} 个文件",1:"已上传 %{complete} / %{smart_count} 个文件"},filter:"筛选",finishEditingFile:"完成编辑文件",folderAdded:{0:"已从 %{folder} 添加 %{smart_count} 个文件",1:"已从 %{folder} 添加 %{smart_count} 个文件"},generatingThumbnails:"正在生成缩略图...",import:"导入",importFiles:"从以下位置导入文件:",importFrom:"从 %{name} 导入",loading:"加载中...",logOut:"登出",myDevice:"我的设备",noFilesFound:"这里没有文件或文件夹",noInternetConnection:"无网络连接",openFolderNamed:"打开文件夹 %{name}",pause:"暂停",pauseUpload:"暂停上传",paused:"已暂停",poweredBy:"技术支持:%{uppy}",processingXFiles:{0:"正在处理 %{smart_count} 个文件",1:"正在处理 %{smart_count} 个文件"},recording:"录制中",removeFile:"移除文件",resetFilter:"重置筛选",resume:"继续",resumeUpload:"继续上传",retry:"重试",retryUpload:"重试上传",save:"保存",saveChanges:"保存更改",selectFileNamed:"选择文件 %{name}",selectX:{0:"选择 %{smart_count}",1:"选择 %{smart_count}"},smile:"笑一个!",startRecording:"开始录制视频",stopRecording:"停止录制视频",takePicture:"拍照",timedOut:"上传已停滞 %{seconds} 秒,正在中止。",upload:"下一步",uploadComplete:"上传完成",uploadFailed:"上传失败",uploadPaused:"上传已暂停",uploadXFiles:{0:"下一步(%{smart_count} 个文件)",1:"下一步(%{smart_count} 个文件)"},uploadXNewFiles:{0:"下一步(+%{smart_count} 个文件)",1:"下一步(+%{smart_count} 个文件)"},uploading:"正在上传",uploadingXFiles:{0:"正在上传 %{smart_count} 个文件",1:"正在上传 %{smart_count} 个文件"},xFilesSelected:{0:"已选择 %{smart_count} 个文件",1:"已选择 %{smart_count} 个文件"},xMoreFilesAdded:{0:"又添加了 %{smart_count} 个文件",1:"又添加了 %{smart_count} 个文件"},xTimeLeft:"剩余 %{time}",youCanOnlyUploadFileTypes:"您只能上传:%{types}",youCanOnlyUploadX:{0:"您只能上传 %{smart_count} 个文件",1:"您只能上传 %{smart_count} 个文件"},youHaveToAtLeastSelectX:{0:"您至少需要选择 %{smart_count} 个文件",1:"您至少需要选择 %{smart_count} 个文件"},browseFiles:"浏览文件",browseFolders:"浏览文件夹",cancelUpload:"取消上传",addMore:"添加更多",back:"返回",editFileWithFilename:"编辑文件 %{file}"}}}),[]);u.useEffect(()=>{const X=()=>{const w=z.getFiles();if(w.length===0)return;const D=w.map(te=>({id:te.id,name:te.name,previewUrl:te.preview||URL.createObjectURL(te.data),emotion:"",description:"",isRegistered:!0,file:te.data}));f(D),w.length===1?(g(D[0].id),h("edit-single")):h("edit-multiple")};return z.on("upload",X),()=>{z.off("upload",X)}},[z]),u.useEffect(()=>{n||(z.cancelAll(),h("select"),f([]),g(null),v(!1))},[n,z]);const T=u.useCallback((X,w)=>{f(D=>D.map(te=>te.id===X?{...te,...w}:te))},[]),L=u.useCallback(X=>X.emotion.trim().length>0,[]),K=u.useMemo(()=>x.length>0&&x.every(L),[x,L]),U=u.useMemo(()=>x.find(X=>X.id===j)||null,[x,j]),R=u.useCallback(()=>{(d==="edit-single"||d==="edit-multiple")&&(h("select"),f([]),g(null))},[d]),ee=u.useCallback(async()=>{if(!K){k({title:"请填写必填项",description:"每个表情包的情感标签都是必填的",variant:"destructive"});return}v(!0);const X=localStorage.getItem("access-token")||"";let w=0,D=0;try{for(const te of x){const xe=new FormData;xe.append("file",te.file),xe.append("emotion",te.emotion),xe.append("description",te.description),xe.append("is_registered",te.isRegistered.toString());try{(await fetch(Xw(),{method:"POST",headers:{Authorization:`Bearer ${X}`},body:xe})).ok?w++:D++}catch{D++}}D===0?(k({title:"上传成功",description:`成功上传 ${w} 个表情包`}),r(!1),c()):(k({title:"部分上传失败",description:`成功 ${w} 个,失败 ${D} 个`,variant:"destructive"}),c())}finally{v(!1)}},[K,x,k,r,c]),V=()=>e.jsx("div",{className:"space-y-4",children:e.jsx("div",{className:"border rounded-lg overflow-hidden w-full",children:e.jsx(Lw,{uppy:z,proudlyDisplayPoweredByUppy:!1,hideProgressDetails:!0,height:350,width:"100%",theme:"auto",note:"支持 JPG、PNG、GIF、WebP 格式,最多 20 个文件"})})}),E=()=>{const X=x[0];return X?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs(N,{variant:"ghost",size:"sm",onClick:R,children:[e.jsx(ti,{className:"h-4 w-4 mr-1"}),"返回"]}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"编辑表情包信息"})]}),e.jsxs("div",{className:"flex gap-6",children:[e.jsxs("div",{className:"flex-shrink-0",children:[e.jsx("div",{className:"w-32 h-32 rounded-lg border overflow-hidden bg-muted flex items-center justify-center",children:e.jsx("img",{src:X.previewUrl,alt:X.name,className:"max-w-full max-h-full object-contain"})}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2 text-center truncate max-w-32",children:X.name})]}),e.jsxs("div",{className:"flex-1 space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"single-emotion",children:["情感标签 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"single-emotion",value:X.emotion,onChange:w=>T(X.id,{emotion:w.target.value}),placeholder:"多个标签用逗号分隔,如:开心,高兴",className:X.emotion.trim()?"":"border-destructive"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"用于情感匹配,多个标签用逗号分隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"single-description",children:"描述"}),e.jsx(ce,{id:"single-description",value:X.description,onChange:w=>T(X.id,{description:w.target.value}),placeholder:"输入表情包描述..."})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(yt,{id:"single-is-registered",checked:X.isRegistered,onCheckedChange:w=>T(X.id,{isRegistered:w===!0})}),e.jsx(b,{htmlFor:"single-is-registered",className:"cursor-pointer",children:"上传后立即注册(可被麦麦使用)"})]})]})]}),e.jsx(Is,{children:e.jsx(N,{onClick:ee,disabled:!K||_,children:_?"上传中...":"上传"})})]}):null},B=()=>{const X=x.filter(L).length,w=x.length;return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs(N,{variant:"ghost",size:"sm",onClick:R,children:[e.jsx(ti,{className:"h-4 w-4 mr-1"}),"返回"]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["编辑表情包信息(",X,"/",w," 已完成)"]})]}),e.jsx(Xe,{variant:K?"default":"secondary",children:K?e.jsxs(e.Fragment,{children:[e.jsx(ha,{className:"h-3 w-3 mr-1"}),"全部完成"]}):e.jsxs(e.Fragment,{children:[e.jsx(li,{className:"h-3 w-3 mr-1"}),"未完成"]})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(es,{className:"h-[350px] pr-2",children:e.jsx("div",{className:"space-y-2",children:x.map(D=>{const te=L(D),xe=j===D.id;return e.jsxs("div",{onClick:()=>g(D.id),className:` - flex items-center gap-3 p-3 rounded-lg border-2 cursor-pointer transition-all - ${xe?"ring-2 ring-primary":""} - ${te?"border-green-500 bg-green-50 dark:bg-green-950/20":"border-border hover:border-muted-foreground/50"} - `,children:[e.jsx("div",{className:"w-12 h-12 rounded border overflow-hidden bg-muted flex-shrink-0 flex items-center justify-center",children:e.jsx("img",{src:D.previewUrl,alt:D.name,className:"max-w-full max-h-full object-contain"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm font-medium truncate",children:D.name}),e.jsx("p",{className:"text-xs text-muted-foreground truncate",children:D.emotion||"未填写情感标签"})]}),te?e.jsx(xa,{className:"h-5 w-5 text-green-500 flex-shrink-0"}):e.jsx("div",{className:"h-5 w-5 rounded-full border-2 border-muted-foreground/30 flex-shrink-0"})]},D.id)})})}),e.jsx("div",{className:"border rounded-lg p-4",children:U?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-16 h-16 rounded border overflow-hidden bg-muted flex items-center justify-center",children:e.jsx("img",{src:U.previewUrl,alt:U.name,className:"max-w-full max-h-full object-contain"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium truncate",children:U.name}),L(U)&&e.jsxs(Xe,{variant:"outline",className:"text-green-600 border-green-600",children:[e.jsx(ha,{className:"h-3 w-3 mr-1"}),"已完成"]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"multi-emotion",children:["情感标签 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"multi-emotion",value:U.emotion,onChange:D=>T(U.id,{emotion:D.target.value}),placeholder:"多个标签用逗号分隔,如:开心,高兴",className:U.emotion.trim()?"":"border-destructive"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"multi-description",children:"描述"}),e.jsx(ce,{id:"multi-description",value:U.description,onChange:D=>T(U.id,{description:D.target.value}),placeholder:"输入表情包描述..."})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(yt,{id:"multi-is-registered",checked:U.isRegistered,onCheckedChange:D=>T(U.id,{isRegistered:D===!0})}),e.jsx(b,{htmlFor:"multi-is-registered",className:"cursor-pointer text-sm",children:"上传后立即注册"})]})]}):e.jsx("div",{className:"h-full flex items-center justify-center text-muted-foreground",children:e.jsxs("div",{className:"text-center",children:[e.jsx(BN,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),e.jsx("p",{children:"点击左侧卡片编辑"})]})})})]}),e.jsx(Is,{children:e.jsx(N,{onClick:ee,disabled:!K||_,children:_?"上传中...":`上传全部 (${w})`})})]})};return e.jsx(Os,{open:n,onOpenChange:r,children:e.jsxs(Es,{className:"max-w-3xl max-h-[90vh] overflow-hidden",children:[e.jsxs(zs,{children:[e.jsxs(Ms,{className:"flex items-center gap-2",children:[e.jsx(hr,{className:"h-5 w-5"}),d==="select"&&"上传表情包 - 选择文件",d==="edit-single"&&"上传表情包 - 填写信息",d==="edit-multiple"&&"上传表情包 - 批量编辑"]}),e.jsxs($s,{children:[d==="select"&&"支持 JPG、PNG、GIF、WebP 格式,单个文件最大 10MB,可同时上传多个文件",d==="edit-single"&&"请填写表情包的情感标签(必填)和描述",d==="edit-multiple"&&"点击左侧卡片编辑每个表情包的信息,情感标签为必填项"]})]}),e.jsxs("div",{className:"overflow-y-auto pr-1",children:[d==="select"&&V(),d==="edit-single"&&E(),d==="edit-multiple"&&B()]})]})})}const Bl="/api/webui/expression";async function Pw(){const n=await ke(`${Bl}/chats`,{headers:ze()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取聊天列表失败")}return n.json()}async function Ww(n){const r=new URLSearchParams;n.page&&r.append("page",n.page.toString()),n.page_size&&r.append("page_size",n.page_size.toString()),n.search&&r.append("search",n.search),n.chat_id&&r.append("chat_id",n.chat_id);const c=await ke(`${Bl}/list?${r}`,{headers:ze()});if(!c.ok){const d=await c.json();throw new Error(d.detail||"获取表达方式列表失败")}return c.json()}async function e1(n){const r=await ke(`${Bl}/${n}`,{headers:ze()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"获取表达方式详情失败")}return r.json()}async function s1(n){const r=await ke(`${Bl}/`,{method:"POST",headers:ze(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"创建表达方式失败")}return r.json()}async function t1(n,r){const c=await ke(`${Bl}/${n}`,{method:"PATCH",headers:ze(),body:JSON.stringify(r)});if(!c.ok){const d=await c.json();throw new Error(d.detail||"更新表达方式失败")}return c.json()}async function a1(n){const r=await ke(`${Bl}/${n}`,{method:"DELETE",headers:ze()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"删除表达方式失败")}return r.json()}async function l1(n){const r=await ke(`${Bl}/batch/delete`,{method:"POST",headers:ze(),body:JSON.stringify({ids:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"批量删除表达方式失败")}return r.json()}async function n1(){const n=await ke(`${Bl}/stats/summary`,{headers:ze()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取统计数据失败")}return n.json()}function i1(){const[n,r]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(0),[f,j]=u.useState(1),[g,_]=u.useState(20),[v,k]=u.useState(""),[z,T]=u.useState(null),[L,K]=u.useState(!1),[U,R]=u.useState(!1),[ee,V]=u.useState(!1),[E,B]=u.useState(null),[X,w]=u.useState(new Set),[D,te]=u.useState(!1),[xe,be]=u.useState(""),[ye,ve]=u.useState({total:0,recent_7days:0,chat_count:0,top_chats:{}}),[pe,Ne]=u.useState([]),[y,q]=u.useState(new Map),{toast:H}=Bs(),ne=async()=>{try{d(!0);const W=await Ww({page:f,page_size:g,search:v||void 0});r(W.data),x(W.total)}catch(W){H({title:"加载失败",description:W instanceof Error?W.message:"无法加载表达方式",variant:"destructive"})}finally{d(!1)}},S=async()=>{try{const W=await n1();W?.data&&ve(W.data)}catch(W){console.error("加载统计数据失败:",W)}},me=async()=>{try{const W=await Pw();if(W?.data){Ne(W.data);const _e=new Map;W.data.forEach(Me=>{_e.set(Me.chat_id,Me.chat_name)}),q(_e)}}catch(W){console.error("加载聊天列表失败:",W)}},he=W=>y.get(W)||W;u.useEffect(()=>{ne(),S(),me()},[f,g,v]);const Q=async W=>{try{const _e=await e1(W.id);T(_e.data),K(!0)}catch(_e){H({title:"加载详情失败",description:_e instanceof Error?_e.message:"无法加载表达方式详情",variant:"destructive"})}},oe=W=>{T(W),R(!0)},ge=async W=>{try{await a1(W.id),H({title:"删除成功",description:`已删除表达方式: ${W.situation}`}),B(null),ne(),S()}catch(_e){H({title:"删除失败",description:_e instanceof Error?_e.message:"无法删除表达方式",variant:"destructive"})}},le=W=>{const _e=new Set(X);_e.has(W)?_e.delete(W):_e.add(W),w(_e)},O=()=>{X.size===n.length&&n.length>0?w(new Set):w(new Set(n.map(W=>W.id)))},F=async()=>{try{await l1(Array.from(X)),H({title:"批量删除成功",description:`已删除 ${X.size} 个表达方式`}),w(new Set),te(!1),ne(),S()}catch(W){H({title:"批量删除失败",description:W instanceof Error?W.message:"无法批量删除表达方式",variant:"destructive"})}},A=()=>{const W=parseInt(xe),_e=Math.ceil(h/g);W>=1&&W<=_e?(j(W),be("")):H({title:"无效的页码",description:`请输入1-${_e}之间的页码`,variant:"destructive"})};return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsx("div",{className:"mb-4 sm:mb-6",children:e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[e.jsx(si,{className:"h-8 w-8",strokeWidth:2}),"表达方式管理"]}),e.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦的表达方式和话术模板"})]}),e.jsxs(N,{onClick:()=>V(!0),className:"gap-2",children:[e.jsx(gt,{className:"h-4 w-4"}),"新增表达方式"]})]})}),e.jsx(es,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"总数量"}),e.jsx("div",{className:"text-2xl font-bold mt-1",children:ye.total})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"近7天新增"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:ye.recent_7days})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"关联聊天数"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-blue-600",children:ye.chat_count})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx(b,{htmlFor:"search",children:"搜索"}),e.jsx("div",{className:"flex flex-col sm:flex-row gap-2 mt-1.5",children:e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(St,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{id:"search",placeholder:"搜索情境、风格或上下文...",value:v,onChange:W=>k(W.target.value),className:"pl-9"})]})}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[e.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:X.size>0&&e.jsxs("span",{children:["已选择 ",X.size," 个表达方式"]})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(Qe,{value:g.toString(),onValueChange:W=>{_(parseInt(W)),j(1),w(new Set)},children:[e.jsx(Ge,{id:"page-size",className:"w-20",children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"10",children:"10"}),e.jsx(ue,{value:"20",children:"20"}),e.jsx(ue,{value:"50",children:"50"}),e.jsx(ue,{value:"100",children:"100"})]})]}),X.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>w(new Set),children:"取消选择"}),e.jsxs(N,{variant:"destructive",size:"sm",onClick:()=>te(!0),children:[e.jsx(ns,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card",children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(ii,{children:[e.jsx(ri,{children:e.jsxs(pt,{children:[e.jsx(ls,{className:"w-12",children:e.jsx(yt,{checked:X.size===n.length&&n.length>0,onCheckedChange:O})}),e.jsx(ls,{children:"情境"}),e.jsx(ls,{children:"风格"}),e.jsx(ls,{children:"聊天"}),e.jsx(ls,{className:"text-right",children:"操作"})]})}),e.jsx(ci,{children:c?e.jsx(pt,{children:e.jsx(Ye,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):n.length===0?e.jsx(pt,{children:e.jsx(Ye,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):n.map(W=>e.jsxs(pt,{children:[e.jsx(Ye,{children:e.jsx(yt,{checked:X.has(W.id),onCheckedChange:()=>le(W.id)})}),e.jsx(Ye,{className:"font-medium max-w-xs truncate",children:W.situation}),e.jsx(Ye,{className:"max-w-xs truncate",children:W.style}),e.jsx(Ye,{className:"max-w-[200px] truncate",title:he(W.chat_id),style:{wordBreak:"keep-all"},children:e.jsx("span",{className:"whitespace-nowrap overflow-hidden text-ellipsis block",children:he(W.chat_id)})}),e.jsx(Ye,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(N,{variant:"default",size:"sm",onClick:()=>oe(W),children:[e.jsx(pr,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsx(N,{variant:"outline",size:"icon",className:"h-8 w-8",onClick:()=>Q(W),title:"查看详情",children:e.jsx(Zt,{className:"h-4 w-4"})}),e.jsxs(N,{size:"sm",onClick:()=>B(W),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(ns,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},W.id))})]})}),e.jsx("div",{className:"md:hidden space-y-3 p-4",children:c?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):n.length===0?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):n.map(W=>e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(yt,{checked:X.has(W.id),onCheckedChange:()=>le(W.id),className:"mt-1"}),e.jsxs("div",{className:"min-w-0 flex-1 overflow-hidden space-y-2",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"情境"}),e.jsx("h3",{className:"font-semibold text-sm line-clamp-2 w-full break-all",title:W.situation,children:W.situation})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"风格"}),e.jsx("p",{className:"text-sm line-clamp-2 w-full break-all",title:W.style,children:W.style})]})]})]}),e.jsxs("div",{className:"text-sm",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"聊天"}),e.jsx("p",{className:"text-sm truncate",title:he(W.chat_id),style:{wordBreak:"keep-all"},children:he(W.chat_id)})]}),e.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>oe(W),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(pr,{className:"h-3 w-3 mr-1"}),"编辑"]}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>Q(W),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:e.jsx(Zt,{className:"h-3 w-3"})}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>B(W),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[e.jsx(ns,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},W.id))}),h>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",h," 条记录,第 ",f," / ",Math.ceil(h/g)," 页"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(wr,{className:"h-4 w-4"})}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>j(f-1),disabled:f===1,children:[e.jsx(cn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:xe,onChange:W=>be(W.target.value),onKeyDown:W=>W.key==="Enter"&&A(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(h/g)}),e.jsx(N,{variant:"outline",size:"sm",onClick:A,disabled:!xe,className:"h-8",children:"跳转"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>j(f+1),disabled:f>=Math.ceil(h/g),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(il,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(h/g)),disabled:f>=Math.ceil(h/g),className:"hidden sm:flex",children:e.jsx(_r,{className:"h-4 w-4"})})]})]})]})]})}),e.jsx(r1,{expression:z,open:L,onOpenChange:K,chatNameMap:y}),e.jsx(c1,{open:ee,onOpenChange:V,chatList:pe,onSuccess:()=>{ne(),S(),V(!1)}}),e.jsx(o1,{expression:z,open:U,onOpenChange:R,chatList:pe,onSuccess:()=>{ne(),S(),R(!1)}}),e.jsx(ps,{open:!!E,onOpenChange:()=>B(null),children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:['确定要删除表达方式 "',E?.situation,'" 吗? 此操作不可撤销。']})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>E&&ge(E),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),e.jsx(d1,{open:D,onOpenChange:te,onConfirm:F,count:X.size})]})}function r1({expression:n,open:r,onOpenChange:c,chatNameMap:d}){if(!n)return null;const h=f=>f?new Date(f*1e3).toLocaleString("zh-CN"):"-",x=f=>d.get(f)||f;return e.jsx(Os,{open:r,onOpenChange:c,children:e.jsxs(Es,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"表达方式详情"}),e.jsx($s,{children:"查看表达方式的完整信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(nr,{label:"情境",value:n.situation}),e.jsx(nr,{label:"风格",value:n.style}),e.jsx(nr,{label:"聊天",value:x(n.chat_id)}),e.jsx(nr,{icon:Uu,label:"记录ID",value:n.id.toString(),mono:!0})]}),e.jsx("div",{className:"grid grid-cols-2 gap-4",children:e.jsx(nr,{icon:Wn,label:"创建时间",value:h(n.create_date)})})]}),e.jsx(Is,{children:e.jsx(N,{onClick:()=>c(!1),children:"关闭"})})]})})}function nr({icon:n,label:r,value:c,mono:d=!1}){return e.jsxs("div",{className:"space-y-1",children:[e.jsxs(b,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[n&&e.jsx(n,{className:"h-3 w-3"}),r]}),e.jsx("div",{className:$("text-sm",d&&"font-mono",!c&&"text-muted-foreground"),children:c||"-"})]})}function c1({open:n,onOpenChange:r,chatList:c,onSuccess:d}){const[h,x]=u.useState({situation:"",style:"",chat_id:""}),[f,j]=u.useState(!1),{toast:g}=Bs(),_=async()=>{if(!h.situation||!h.style||!h.chat_id){g({title:"验证失败",description:"请填写必填字段:情境、风格和聊天",variant:"destructive"});return}try{j(!0),await s1(h),g({title:"创建成功",description:"表达方式已创建"}),x({situation:"",style:"",chat_id:""}),d()}catch(v){g({title:"创建失败",description:v instanceof Error?v.message:"无法创建表达方式",variant:"destructive"})}finally{j(!1)}};return e.jsx(Os,{open:n,onOpenChange:r,children:e.jsxs(Es,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"新增表达方式"}),e.jsx($s,{children:"创建新的表达方式记录"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"situation",children:["情境 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"situation",value:h.situation,onChange:v=>x({...h,situation:v.target.value}),placeholder:"描述使用场景"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"style",children:["风格 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"style",value:h.style,onChange:v=>x({...h,style:v.target.value}),placeholder:"描述表达风格"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"chat_id",children:["聊天 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsxs(Qe,{value:h.chat_id,onValueChange:v=>x({...h,chat_id:v}),children:[e.jsx(Ge,{children:e.jsx($e,{placeholder:"选择关联的聊天"})}),e.jsx(Ve,{children:c.map(v=>e.jsx(ue,{value:v.chat_id,children:e.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[v.chat_name,v.is_group&&e.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},v.chat_id))})]})]})]}),e.jsxs(Is,{children:[e.jsx(N,{variant:"outline",onClick:()=>r(!1),children:"取消"}),e.jsx(N,{onClick:_,disabled:f,children:f?"创建中...":"创建"})]})]})})}function o1({expression:n,open:r,onOpenChange:c,chatList:d,onSuccess:h}){const[x,f]=u.useState({}),[j,g]=u.useState(!1),{toast:_}=Bs();u.useEffect(()=>{n&&f({situation:n.situation,style:n.style,chat_id:n.chat_id})},[n]);const v=async()=>{if(n)try{g(!0),await t1(n.id,x),_({title:"保存成功",description:"表达方式已更新"}),h()}catch(k){_({title:"保存失败",description:k instanceof Error?k.message:"无法更新表达方式",variant:"destructive"})}finally{g(!1)}};return n?e.jsx(Os,{open:r,onOpenChange:c,children:e.jsxs(Es,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"编辑表达方式"}),e.jsx($s,{children:"修改表达方式的信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit_situation",children:"情境"}),e.jsx(ce,{id:"edit_situation",value:x.situation||"",onChange:k=>f({...x,situation:k.target.value}),placeholder:"描述使用场景"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit_style",children:"风格"}),e.jsx(ce,{id:"edit_style",value:x.style||"",onChange:k=>f({...x,style:k.target.value}),placeholder:"描述表达风格"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit_chat_id",children:"聊天"}),e.jsxs(Qe,{value:x.chat_id||"",onValueChange:k=>f({...x,chat_id:k}),children:[e.jsx(Ge,{children:e.jsx($e,{placeholder:"选择关联的聊天"})}),e.jsx(Ve,{children:d.map(k=>e.jsx(ue,{value:k.chat_id,children:e.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[k.chat_name,k.is_group&&e.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},k.chat_id))})]})]})]}),e.jsxs(Is,{children:[e.jsx(N,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(N,{onClick:v,disabled:j,children:j?"保存中...":"保存"})]})]})}):null}function d1({open:n,onOpenChange:r,onConfirm:c,count:d}){return e.jsx(ps,{open:n,onOpenChange:r,children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认批量删除"}),e.jsxs(ms,{children:["您即将删除 ",d," 个表达方式,此操作无法撤销。确定要继续吗?"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:c,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认删除"})]})]})})}const oi="/api/webui/person";async function u1(n){const r=new URLSearchParams;n.page&&r.append("page",n.page.toString()),n.page_size&&r.append("page_size",n.page_size.toString()),n.search&&r.append("search",n.search),n.is_known!==void 0&&r.append("is_known",n.is_known.toString()),n.platform&&r.append("platform",n.platform);const c=await ke(`${oi}/list?${r}`,{headers:ze()});if(!c.ok){const d=await c.json();throw new Error(d.detail||"获取人物列表失败")}return c.json()}async function m1(n){const r=await ke(`${oi}/${n}`,{headers:ze()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"获取人物详情失败")}return r.json()}async function h1(n,r){const c=await ke(`${oi}/${n}`,{method:"PATCH",headers:ze(),body:JSON.stringify(r)});if(!c.ok){const d=await c.json();throw new Error(d.detail||"更新人物信息失败")}return c.json()}async function x1(n){const r=await ke(`${oi}/${n}`,{method:"DELETE",headers:ze()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"删除人物信息失败")}return r.json()}async function f1(){const n=await ke(`${oi}/stats/summary`,{headers:ze()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取统计数据失败")}return n.json()}async function p1(n){const r=await ke(`${oi}/batch/delete`,{method:"POST",headers:ze(),body:JSON.stringify({person_ids:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"批量删除失败")}return r.json()}function g1(){const[n,r]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(0),[f,j]=u.useState(1),[g,_]=u.useState(20),[v,k]=u.useState(""),[z,T]=u.useState(void 0),[L,K]=u.useState(void 0),[U,R]=u.useState(null),[ee,V]=u.useState(!1),[E,B]=u.useState(!1),[X,w]=u.useState(null),[D,te]=u.useState({total:0,known:0,unknown:0,platforms:{}}),[xe,be]=u.useState(new Set),[ye,ve]=u.useState(!1),[pe,Ne]=u.useState(""),{toast:y}=Bs(),q=async()=>{try{d(!0);const A=await u1({page:f,page_size:g,search:v||void 0,is_known:z,platform:L});r(A.data),x(A.total)}catch(A){y({title:"加载失败",description:A instanceof Error?A.message:"无法加载人物信息",variant:"destructive"})}finally{d(!1)}},H=async()=>{try{const A=await f1();A?.data&&te(A.data)}catch(A){console.error("加载统计数据失败:",A)}};u.useEffect(()=>{q(),H()},[f,g,v,z,L]);const ne=async A=>{try{const W=await m1(A.person_id);R(W.data),V(!0)}catch(W){y({title:"加载详情失败",description:W instanceof Error?W.message:"无法加载人物详情",variant:"destructive"})}},S=A=>{R(A),B(!0)},me=async A=>{try{await x1(A.person_id),y({title:"删除成功",description:`已删除人物信息: ${A.person_name||A.nickname||A.user_id}`}),w(null),q(),H()}catch(W){y({title:"删除失败",description:W instanceof Error?W.message:"无法删除人物信息",variant:"destructive"})}},he=u.useMemo(()=>Object.keys(D.platforms),[D.platforms]),Q=A=>{const W=new Set(xe);W.has(A)?W.delete(A):W.add(A),be(W)},oe=()=>{xe.size===n.length&&n.length>0?be(new Set):be(new Set(n.map(A=>A.person_id)))},ge=()=>{if(xe.size===0){y({title:"未选择任何人物",description:"请先选择要删除的人物",variant:"destructive"});return}ve(!0)},le=async()=>{try{const A=await p1(Array.from(xe));y({title:"批量删除完成",description:A.message}),be(new Set),ve(!1),q(),H()}catch(A){y({title:"批量删除失败",description:A instanceof Error?A.message:"批量删除失败",variant:"destructive"})}},O=()=>{const A=parseInt(pe),W=Math.ceil(h/g);A>=1&&A<=W?(j(A),Ne("")):y({title:"无效的页码",description:`请输入1-${W}之间的页码`,variant:"destructive"})},F=A=>A?new Date(A*1e3).toLocaleString("zh-CN"):"-";return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsx("div",{className:"mb-4 sm:mb-6",children:e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[e.jsx(HN,{className:"h-8 w-8",strokeWidth:2}),"人物信息管理"]}),e.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦认识的所有人物信息"})]})})}),e.jsx(es,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"总人数"}),e.jsx("div",{className:"text-2xl font-bold mt-1",children:D.total})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"已认识"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:D.known})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"未认识"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-muted-foreground",children:D.unknown})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-4 gap-4",children:[e.jsxs("div",{className:"sm:col-span-2",children:[e.jsx(b,{htmlFor:"search",children:"搜索"}),e.jsxs("div",{className:"relative mt-1.5",children:[e.jsx(St,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{id:"search",placeholder:"搜索名称、昵称或用户ID...",value:v,onChange:A=>k(A.target.value),className:"pl-9"})]})]}),e.jsxs("div",{children:[e.jsx(b,{htmlFor:"filter-known",children:"认识状态"}),e.jsxs(Qe,{value:z===void 0?"all":z.toString(),onValueChange:A=>{T(A==="all"?void 0:A==="true"),j(1)},children:[e.jsx(Ge,{id:"filter-known",className:"mt-1.5",children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"all",children:"全部"}),e.jsx(ue,{value:"true",children:"已认识"}),e.jsx(ue,{value:"false",children:"未认识"})]})]})]}),e.jsxs("div",{children:[e.jsx(b,{htmlFor:"filter-platform",children:"平台"}),e.jsxs(Qe,{value:L||"all",onValueChange:A=>{K(A==="all"?void 0:A),j(1)},children:[e.jsx(Ge,{id:"filter-platform",className:"mt-1.5",children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"all",children:"全部平台"}),he.map(A=>e.jsxs(ue,{value:A,children:[A," (",D.platforms[A],")"]},A))]})]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[e.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:xe.size>0&&e.jsxs("span",{children:["已选择 ",xe.size," 个人物"]})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(Qe,{value:g.toString(),onValueChange:A=>{_(parseInt(A)),j(1),be(new Set)},children:[e.jsx(Ge,{id:"page-size",className:"w-20",children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"10",children:"10"}),e.jsx(ue,{value:"20",children:"20"}),e.jsx(ue,{value:"50",children:"50"}),e.jsx(ue,{value:"100",children:"100"})]})]}),xe.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>be(new Set),children:"取消选择"}),e.jsxs(N,{variant:"destructive",size:"sm",onClick:ge,children:[e.jsx(ns,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card",children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(ii,{children:[e.jsx(ri,{children:e.jsxs(pt,{children:[e.jsx(ls,{className:"w-12",children:e.jsx(yt,{checked:n.length>0&&xe.size===n.length,onCheckedChange:oe,"aria-label":"全选"})}),e.jsx(ls,{children:"状态"}),e.jsx(ls,{children:"名称"}),e.jsx(ls,{children:"昵称"}),e.jsx(ls,{children:"平台"}),e.jsx(ls,{children:"用户ID"}),e.jsx(ls,{children:"最后更新"}),e.jsx(ls,{className:"text-right",children:"操作"})]})}),e.jsx(ci,{children:c?e.jsx(pt,{children:e.jsx(Ye,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):n.length===0?e.jsx(pt,{children:e.jsx(Ye,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):n.map(A=>e.jsxs(pt,{children:[e.jsx(Ye,{children:e.jsx(yt,{checked:xe.has(A.person_id),onCheckedChange:()=>Q(A.person_id),"aria-label":`选择 ${A.person_name||A.nickname||A.user_id}`})}),e.jsx(Ye,{children:e.jsx("div",{className:$("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium",A.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:A.is_known?"已认识":"未认识"})}),e.jsx(Ye,{className:"font-medium",children:A.person_name||e.jsx("span",{className:"text-muted-foreground",children:"-"})}),e.jsx(Ye,{children:A.nickname||"-"}),e.jsx(Ye,{children:A.platform}),e.jsx(Ye,{className:"font-mono text-sm",children:A.user_id}),e.jsx(Ye,{className:"text-sm text-muted-foreground",children:F(A.last_know)}),e.jsx(Ye,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(N,{variant:"default",size:"sm",onClick:()=>ne(A),children:[e.jsx(Zt,{className:"h-4 w-4 mr-1"}),"详情"]}),e.jsxs(N,{variant:"default",size:"sm",onClick:()=>S(A),children:[e.jsx(pr,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsxs(N,{size:"sm",onClick:()=>w(A),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(ns,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},A.id))})]})}),e.jsx("div",{className:"md:hidden space-y-3 p-4",children:c?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):n.length===0?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):n.map(A=>e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(yt,{checked:xe.has(A.person_id),onCheckedChange:()=>Q(A.person_id),className:"mt-1"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:$("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium mb-2",A.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:A.is_known?"已认识":"未认识"}),e.jsx("h3",{className:"font-semibold text-sm line-clamp-1 w-full break-all",children:A.person_name||e.jsx("span",{className:"text-muted-foreground",children:"未命名"})}),A.nickname&&e.jsxs("p",{className:"text-xs text-muted-foreground mt-1 line-clamp-1 w-full break-all",children:["昵称: ",A.nickname]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"平台"}),e.jsx("p",{className:"font-medium text-xs",children:A.platform})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"用户ID"}),e.jsx("p",{className:"font-mono text-xs truncate",title:A.user_id,children:A.user_id})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"最后更新"}),e.jsx("p",{className:"text-xs",children:F(A.last_know)})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>ne(A),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(Zt,{className:"h-3 w-3 mr-1"}),"查看"]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>S(A),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(pr,{className:"h-3 w-3 mr-1"}),"编辑"]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>w(A),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[e.jsx(ns,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},A.id))}),h>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",h," 条记录,第 ",f," / ",Math.ceil(h/g)," 页"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(wr,{className:"h-4 w-4"})}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>j(f-1),disabled:f===1,children:[e.jsx(cn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:pe,onChange:A=>Ne(A.target.value),onKeyDown:A=>A.key==="Enter"&&O(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(h/g)}),e.jsx(N,{variant:"outline",size:"sm",onClick:O,disabled:!pe,className:"h-8",children:"跳转"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>j(f+1),disabled:f>=Math.ceil(h/g),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(il,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(h/g)),disabled:f>=Math.ceil(h/g),className:"hidden sm:flex",children:e.jsx(_r,{className:"h-4 w-4"})})]})]})]})]})}),e.jsx(j1,{person:U,open:ee,onOpenChange:V}),e.jsx(v1,{person:U,open:E,onOpenChange:B,onSuccess:()=>{q(),H(),B(!1)}}),e.jsx(ps,{open:!!X,onOpenChange:()=>w(null),children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认删除"}),e.jsxs(ms,{children:['确定要删除人物信息 "',X?.person_name||X?.nickname||X?.user_id,'" 吗? 此操作不可撤销。']})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:()=>X&&me(X),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),e.jsx(ps,{open:ye,onOpenChange:ve,children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"确认批量删除"}),e.jsxs(ms,{children:["确定要删除选中的 ",xe.size," 个人物信息吗? 此操作不可撤销。"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{children:"取消"}),e.jsx(hs,{onClick:le,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})})]})}function j1({person:n,open:r,onOpenChange:c}){if(!n)return null;const d=h=>h?new Date(h*1e3).toLocaleString("zh-CN"):"-";return e.jsx(Os,{open:r,onOpenChange:c,children:e.jsxs(Es,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"人物详情"}),e.jsxs($s,{children:["查看 ",n.person_name||n.nickname||n.user_id," 的完整信息"]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(al,{icon:to,label:"人物名称",value:n.person_name}),e.jsx(al,{icon:si,label:"昵称",value:n.nickname}),e.jsx(al,{icon:Uu,label:"用户ID",value:n.user_id,mono:!0}),e.jsx(al,{icon:Uu,label:"人物ID",value:n.person_id,mono:!0}),e.jsx(al,{label:"平台",value:n.platform}),e.jsx(al,{label:"状态",value:n.is_known?"已认识":"未认识"})]}),n.name_reason&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(b,{className:"text-xs text-muted-foreground",children:"名称设定原因"}),e.jsx("p",{className:"mt-1 text-sm",children:n.name_reason})]}),n.memory_points&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(b,{className:"text-xs text-muted-foreground",children:"个人印象"}),e.jsx("p",{className:"mt-1 text-sm whitespace-pre-wrap",children:n.memory_points})]}),n.group_nick_name&&n.group_nick_name.length>0&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(b,{className:"text-xs text-muted-foreground",children:"群昵称"}),e.jsx("div",{className:"mt-2 space-y-1",children:n.group_nick_name.map((h,x)=>e.jsxs("div",{className:"text-sm flex items-center gap-2",children:[e.jsx("span",{className:"font-mono text-xs text-muted-foreground",children:h.group_id}),e.jsx("span",{children:"→"}),e.jsx("span",{children:h.group_nick_name})]},x))})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsx(al,{icon:Wn,label:"认识时间",value:d(n.know_times)}),e.jsx(al,{icon:Wn,label:"首次记录",value:d(n.know_since)}),e.jsx(al,{icon:Wn,label:"最后更新",value:d(n.last_know)})]})]}),e.jsx(Is,{children:e.jsx(N,{onClick:()=>c(!1),children:"关闭"})})]})})}function al({icon:n,label:r,value:c,mono:d=!1}){return e.jsxs("div",{className:"space-y-1",children:[e.jsxs(b,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[n&&e.jsx(n,{className:"h-3 w-3"}),r]}),e.jsx("div",{className:$("text-sm",d&&"font-mono",!c&&"text-muted-foreground"),children:c||"-"})]})}function v1({person:n,open:r,onOpenChange:c,onSuccess:d}){const[h,x]=u.useState({}),[f,j]=u.useState(!1),{toast:g}=Bs();u.useEffect(()=>{n&&x({person_name:n.person_name||"",name_reason:n.name_reason||"",nickname:n.nickname||"",memory_points:n.memory_points||"",is_known:n.is_known})},[n]);const _=async()=>{if(n)try{j(!0),await h1(n.person_id,h),g({title:"保存成功",description:"人物信息已更新"}),d()}catch(v){g({title:"保存失败",description:v instanceof Error?v.message:"无法更新人物信息",variant:"destructive"})}finally{j(!1)}};return n?e.jsx(Os,{open:r,onOpenChange:c,children:e.jsxs(Es,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"编辑人物信息"}),e.jsxs($s,{children:["修改 ",n.person_name||n.nickname||n.user_id," 的信息"]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"person_name",children:"人物名称"}),e.jsx(ce,{id:"person_name",value:h.person_name||"",onChange:v=>x({...h,person_name:v.target.value}),placeholder:"为这个人设置一个名称"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"nickname",children:"昵称"}),e.jsx(ce,{id:"nickname",value:h.nickname||"",onChange:v=>x({...h,nickname:v.target.value}),placeholder:"昵称"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"name_reason",children:"名称设定原因"}),e.jsx(Us,{id:"name_reason",value:h.name_reason||"",onChange:v=>x({...h,name_reason:v.target.value}),placeholder:"为什么这样称呼这个人?",rows:2})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"memory_points",children:"个人印象"}),e.jsx(Us,{id:"memory_points",value:h.memory_points||"",onChange:v=>x({...h,memory_points:v.target.value}),placeholder:"对这个人的印象和记忆点...",rows:4})]}),e.jsxs("div",{className:"flex items-center justify-between rounded-lg border p-3",children:[e.jsxs("div",{children:[e.jsx(b,{htmlFor:"is_known",className:"text-base font-medium",children:"已认识"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"标记是否已经认识这个人"})]}),e.jsx(qe,{id:"is_known",checked:h.is_known,onCheckedChange:v=>x({...h,is_known:v})})]})]}),e.jsxs(Is,{children:[e.jsx(N,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(N,{onClick:_,disabled:f,children:f?"保存中...":"保存"})]})]})}):null}var y1=Sb();const xp=wy(y1),Pu="/api/webui";async function N1(n=100,r="all"){const c=`${Pu}/knowledge/graph?limit=${n}&node_type=${r}`,d=await fetch(c);if(!d.ok)throw new Error(`获取知识图谱失败: ${d.status}`);return d.json()}async function b1(){const n=await fetch(`${Pu}/knowledge/stats`);if(!n.ok)throw new Error("获取知识图谱统计信息失败");return n.json()}async function w1(n){const r=await fetch(`${Pu}/knowledge/search?query=${encodeURIComponent(n)}`);if(!r.ok)throw new Error("搜索知识节点失败");return r.json()}const Fg=u.memo(({data:n})=>e.jsxs("div",{className:"px-4 py-2 shadow-md rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700 min-w-[120px]",children:[e.jsx(lo,{type:"target",position:no.Top}),e.jsx("div",{className:"font-semibold text-white text-sm truncate max-w-[200px]",title:n.content,children:n.label}),e.jsx(lo,{type:"source",position:no.Bottom})]}));Fg.displayName="EntityNode";const Qg=u.memo(({data:n})=>e.jsxs("div",{className:"px-3 py-2 shadow-md rounded-md bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700 min-w-[100px]",children:[e.jsx(lo,{type:"target",position:no.Top}),e.jsx("div",{className:"font-medium text-white text-xs truncate max-w-[150px]",title:n.content,children:n.label}),e.jsx(lo,{type:"source",position:no.Bottom})]}));Qg.displayName="ParagraphNode";const _1={entity:Fg,paragraph:Qg};function S1(n,r){const c=new xp.graphlib.Graph;c.setDefaultEdgeLabel(()=>({})),c.setGraph({rankdir:"TB",ranksep:100,nodesep:80});const d=[],h=[];return n.forEach(x=>{c.setNode(x.id,{width:150,height:50})}),r.forEach(x=>{c.setEdge(x.source,x.target)}),xp.layout(c),n.forEach(x=>{const f=c.node(x.id);d.push({id:x.id,type:x.type,position:{x:f.x-75,y:f.y-25},data:{label:x.content.slice(0,20)+(x.content.length>20?"...":""),content:x.content}})}),r.forEach((x,f)=>{const j={id:`edge-${f}`,source:x.source,target:x.target,animated:n.length<=200&&x.weight>5,style:{strokeWidth:Math.min(x.weight/2,5),opacity:.6}};x.weight>10&&n.length<100&&(j.label=`${x.weight.toFixed(0)}`),h.push(j)}),{nodes:d,edges:h}}function C1(){const n=It(),[r,c]=u.useState(!1),[d,h]=u.useState(null),[x,f]=u.useState(""),[j,g]=u.useState("all"),[_,v]=u.useState(50),[k,z]=u.useState("50"),[T,L]=u.useState(!1),[K,U]=u.useState(!0),[R,ee]=u.useState(!1),[V,E]=u.useState(!1),[B,X,w]=Cb([]),[D,te,xe]=kb([]),[be,ye]=u.useState(0),[ve,pe]=u.useState(null),[Ne,y]=u.useState(null),{toast:q}=Bs(),H=u.useCallback(le=>le.type==="entity"?"#6366f1":le.type==="paragraph"?"#10b981":"#6b7280",[]),ne=u.useCallback(async(le=!1)=>{try{if(!le&&_>200){E(!0);return}c(!0);const[O,F]=await Promise.all([N1(_,j),b1()]);if(h(F),O.nodes.length===0){q({title:"提示",description:"知识库为空,请先导入知识数据"}),X([]),te([]);return}const{nodes:A,edges:W}=S1(O.nodes,O.edges);X(A),te(W),ye(A.length),F&&F.total_nodes>_&&q({title:"提示",description:`知识图谱包含 ${F.total_nodes} 个节点,当前显示 ${A.length} 个`}),q({title:"加载成功",description:`已加载 ${A.length} 个节点,${W.length} 条边`})}catch(O){console.error("加载知识图谱失败:",O),q({title:"加载失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}finally{c(!1)}},[_,j,q]),S=u.useCallback(async()=>{if(!x.trim()){q({title:"提示",description:"请输入搜索关键词"});return}try{const le=await w1(x);if(le.length===0){q({title:"未找到",description:"没有找到匹配的节点"});return}const O=new Set(le.map(F=>F.id));X(F=>F.map(A=>({...A,style:{...A.style,opacity:O.has(A.id)?1:.3,filter:O.has(A.id)?"brightness(1.2)":"brightness(0.8)"}}))),q({title:"搜索完成",description:`找到 ${le.length} 个匹配节点`})}catch(le){console.error("搜索失败:",le),q({title:"搜索失败",description:le instanceof Error?le.message:"未知错误",variant:"destructive"})}},[x,q]),me=u.useCallback(()=>{X(le=>le.map(O=>({...O,style:{...O.style,opacity:1,filter:"brightness(1)"}})))},[]),he=u.useCallback(()=>{U(!1),ee(!0),ne()},[ne]),Q=u.useCallback(()=>{E(!1),setTimeout(()=>{ne(!0)},0)},[ne]),oe=u.useCallback((le,O)=>{B.find(A=>A.id===O.id)&&pe({id:O.id,type:O.type,content:O.data.content})},[B]);u.useEffect(()=>{K||R&&ne()},[_,j,K,R]);const ge=u.useCallback((le,O)=>{const F=B.find(_e=>_e.id===O.source),A=B.find(_e=>_e.id===O.target),W=D.find(_e=>_e.id===O.id);F&&A&&W&&y({source:{id:F.id,type:F.type,content:F.data.content},target:{id:A.id,type:A.type,content:A.data.content},edge:{source:O.source,target:O.target,weight:parseFloat(O.label||"0")}})},[B,D]);return e.jsxs("div",{className:"h-full flex flex-col",children:[e.jsxs("div",{className:"flex-shrink-0 p-4 border-b bg-background",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦知识库图谱"}),e.jsx("p",{className:"text-muted-foreground mt-1",children:"可视化知识实体与关系网络"})]}),d&&e.jsxs("div",{className:"flex gap-2 flex-wrap",children:[e.jsxs(Xe,{variant:"outline",className:"gap-1",children:[e.jsx(eo,{className:"h-3 w-3"}),"节点: ",d.total_nodes]}),e.jsxs(Xe,{variant:"outline",className:"gap-1",children:[e.jsx(jg,{className:"h-3 w-3"}),"边: ",d.total_edges]}),e.jsxs(Xe,{variant:"outline",className:"gap-1",children:[e.jsx(Xt,{className:"h-3 w-3"}),"实体: ",d.entity_nodes]}),e.jsxs(Xe,{variant:"outline",className:"gap-1",children:[e.jsx(Ma,{className:"h-3 w-3"}),"段落: ",d.paragraph_nodes]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 mt-4",children:[e.jsxs("div",{className:"flex-1 flex gap-2",children:[e.jsx(ce,{placeholder:"搜索节点内容...",value:x,onChange:le=>f(le.target.value),onKeyDown:le=>le.key==="Enter"&&S(),className:"flex-1"}),e.jsx(N,{onClick:S,size:"sm",children:e.jsx(St,{className:"h-4 w-4"})}),e.jsx(N,{onClick:me,variant:"outline",size:"sm",children:"重置"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(Qe,{value:j,onValueChange:le=>g(le),children:[e.jsx(Ge,{className:"w-[120px]",children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"all",children:"全部节点"}),e.jsx(ue,{value:"entity",children:"仅实体"}),e.jsx(ue,{value:"paragraph",children:"仅段落"})]})]}),e.jsxs(Qe,{value:_===1e4?"all":T?"custom":_.toString(),onValueChange:le=>{le==="custom"?(L(!0),z(_.toString())):le==="all"?(L(!1),v(1e4)):(L(!1),v(Number(le)))},children:[e.jsx(Ge,{className:"w-[120px]",children:e.jsx($e,{})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"50",children:"50 节点"}),e.jsx(ue,{value:"100",children:"100 节点"}),e.jsx(ue,{value:"200",children:"200 节点"}),e.jsx(ue,{value:"500",children:"500 节点"}),e.jsx(ue,{value:"1000",children:"1000 节点"}),e.jsx(ue,{value:"all",children:"全部 (最多10000)"}),e.jsx(ue,{value:"custom",children:"自定义..."})]})]}),T&&e.jsx(ce,{type:"number",min:"50",value:k,onChange:le=>z(le.target.value),onBlur:()=>{const le=parseInt(k);!isNaN(le)&&le>=50?v(le):(z("50"),v(50))},onKeyDown:le=>{if(le.key==="Enter"){const O=parseInt(k);!isNaN(O)&&O>=50?v(O):(z("50"),v(50))}},placeholder:"最少50个",className:"w-[120px]"}),e.jsx(N,{onClick:()=>ne(),variant:"outline",size:"sm",disabled:r,children:e.jsx(ft,{className:$("h-4 w-4",r&&"animate-spin")})})]})]})]}),e.jsx("div",{className:"flex-1 relative",children:r?e.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx(ft,{className:"h-8 w-8 animate-spin mx-auto mb-2 text-muted-foreground"}),e.jsx("p",{className:"text-muted-foreground",children:"加载知识图谱中..."})]})}):B.length===0?e.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx(eo,{className:"h-12 w-12 mx-auto mb-4 text-muted-foreground"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"知识库为空"}),e.jsx("p",{className:"text-muted-foreground",children:"请先导入知识数据"})]})}):e.jsxs(Tb,{nodes:B,edges:D,onNodesChange:w,onEdgesChange:xe,onNodeClick:oe,onEdgeClick:ge,nodeTypes:_1,fitView:!0,minZoom:.05,maxZoom:1.5,defaultViewport:{x:0,y:0,zoom:.5},elevateNodesOnSelect:be<=500,nodesDraggable:be<=1e3,attributionPosition:"bottom-left",children:[e.jsx(Eb,{variant:zb.Dots,gap:12,size:1}),e.jsx(Mb,{}),be<=500&&e.jsx(Ab,{nodeColor:H,nodeBorderRadius:8,pannable:!0,zoomable:!0}),e.jsxs(Db,{position:"top-right",className:"bg-background/95 backdrop-blur-sm rounded-lg border p-3 shadow-lg",children:[e.jsx("div",{className:"text-sm font-semibold mb-2",children:"图例"}),e.jsxs("div",{className:"space-y-2 text-xs",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700"}),e.jsx("span",{children:"实体节点"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700"}),e.jsx("span",{children:"段落节点"})]}),be>200&&e.jsxs("div",{className:"mt-2 pt-2 border-t text-yellow-600 dark:text-yellow-500",children:[e.jsx("div",{className:"font-semibold",children:"性能模式"}),e.jsx("div",{children:"已禁用动画"}),be>500&&e.jsx("div",{children:"已禁用缩略图"})]})]})]})]})}),e.jsx(Os,{open:!!ve,onOpenChange:le=>!le&&pe(null),children:e.jsxs(Es,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsx(zs,{children:e.jsx(Ms,{children:"节点详情"})}),ve&&e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"grid grid-cols-2 gap-4",children:e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"类型"}),e.jsx("div",{className:"mt-1",children:e.jsx(Xe,{variant:ve.type==="entity"?"default":"secondary",children:ve.type==="entity"?"🏷️ 实体":"📄 段落"})})]})}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"ID"}),e.jsx("code",{className:"mt-1 block p-2 bg-muted rounded text-xs break-all",children:ve.id})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"内容"}),e.jsx(es,{className:"mt-1 h-40 p-3 bg-muted rounded",children:e.jsx("p",{className:"text-sm whitespace-pre-wrap",children:ve.content})})]})]})]})}),e.jsx(Os,{open:!!Ne,onOpenChange:le=>!le&&y(null),children:e.jsxs(Es,{className:"max-w-2xl max-h-[80vh] overflow-hidden flex flex-col",children:[e.jsx(zs,{children:e.jsx(Ms,{children:"边详情"})}),Ne&&e.jsx(es,{className:"flex-1 pr-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-blue-50 dark:bg-blue-950 rounded border-2 border-blue-200 dark:border-blue-800",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"源节点"}),e.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:Ne.source.content}),e.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[Ne.source.id.slice(0,40),"..."]})]}),e.jsx("div",{className:"text-2xl text-muted-foreground flex-shrink-0",children:"→"}),e.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-green-50 dark:bg-green-950 rounded border-2 border-green-200 dark:border-green-800",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"目标节点"}),e.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:Ne.target.content}),e.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[Ne.target.id.slice(0,40),"..."]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"权重"}),e.jsx("div",{className:"mt-1",children:e.jsx(Xe,{variant:"outline",className:"text-base font-mono",children:Ne.edge.weight.toFixed(4)})})]})]})})]})}),e.jsx(ps,{open:K,onOpenChange:U,children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"加载知识图谱"}),e.jsxs(ms,{children:["知识图谱的动态展示会消耗较多系统资源。",e.jsx("br",{}),"确定要加载知识图谱吗?"]})]}),e.jsxs(ds,{children:[e.jsx(xs,{onClick:()=>n({to:"/"}),children:"取消 (返回首页)"}),e.jsx(hs,{onClick:he,children:"确认加载"})]})]})}),e.jsx(ps,{open:V,onOpenChange:E,children:e.jsxs(cs,{children:[e.jsxs(os,{children:[e.jsx(us,{children:"⚠️ 节点数量较多"}),e.jsx(ms,{asChild:!0,children:e.jsxs("div",{children:[e.jsxs("p",{children:["您正在尝试加载 ",e.jsx("strong",{className:"text-orange-600",children:_>=1e4?"全部 (最多10000个)":_})," 个节点。"]}),e.jsx("p",{className:"mt-4",children:"节点数量过多可能导致:"}),e.jsxs("ul",{className:"list-disc list-inside mt-2 space-y-1",children:[e.jsx("li",{children:"页面加载时间较长"}),e.jsx("li",{children:"浏览器卡顿或崩溃"}),e.jsx("li",{children:"系统资源占用过高"})]}),e.jsx("p",{className:"mt-4",children:"建议先选择较少的节点数量 (50-200 个)。"})]})})]}),e.jsxs(ds,{children:[e.jsx(xs,{onClick:()=>{E(!1),_>200&&(v(50),L(!1))},children:"取消"}),e.jsx(hs,{onClick:Q,className:"bg-orange-600 hover:bg-orange-700",children:"我了解风险,继续加载"})]})]})})]})}function fp({className:n,classNames:r,showOutsideDays:c=!0,captionLayout:d="label",buttonVariant:h="ghost",formatters:x,components:f,...j}){const g=bg();return e.jsx(rb,{showOutsideDays:c,className:$("bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,n),captionLayout:d,formatters:{formatMonthDropdown:_=>_.toLocaleString("default",{month:"short"}),...x},classNames:{root:$("w-fit",g.root),months:$("relative flex flex-col gap-4 md:flex-row",g.months),month:$("flex w-full flex-col gap-4",g.month),nav:$("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",g.nav),button_previous:$(gr({variant:h}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",g.button_previous),button_next:$(gr({variant:h}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",g.button_next),month_caption:$("flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]",g.month_caption),dropdowns:$("flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium",g.dropdowns),dropdown_root:$("has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border",g.dropdown_root),dropdown:$("bg-popover absolute inset-0 opacity-0",g.dropdown),caption_label:$("select-none font-medium",d==="label"?"text-sm":"[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5",g.caption_label),table:"w-full border-collapse",weekdays:$("flex",g.weekdays),weekday:$("text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal",g.weekday),week:$("mt-2 flex w-full",g.week),week_number_header:$("w-[--cell-size] select-none",g.week_number_header),week_number:$("text-muted-foreground select-none text-[0.8rem]",g.week_number),day:$("group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md",g.day),range_start:$("bg-accent rounded-l-md",g.range_start),range_middle:$("rounded-none",g.range_middle),range_end:$("bg-accent rounded-r-md",g.range_end),today:$("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",g.today),outside:$("text-muted-foreground aria-selected:text-muted-foreground",g.outside),disabled:$("text-muted-foreground opacity-50",g.disabled),hidden:$("invisible",g.hidden),...r},components:{Root:({className:_,rootRef:v,...k})=>e.jsx("div",{"data-slot":"calendar",ref:v,className:$(_),...k}),Chevron:({className:_,orientation:v,...k})=>v==="left"?e.jsx(cn,{className:$("size-4",_),...k}):v==="right"?e.jsx(il,{className:$("size-4",_),...k}):e.jsx(Ll,{className:$("size-4",_),...k}),DayButton:k1,WeekNumber:({children:_,...v})=>e.jsx("td",{...v,children:e.jsx("div",{className:"flex size-[--cell-size] items-center justify-center text-center",children:_})}),...f},...j})}function k1({className:n,day:r,modifiers:c,...d}){const h=bg(),x=u.useRef(null);return u.useEffect(()=>{c.focused&&x.current?.focus()},[c.focused]),e.jsx(N,{ref:x,variant:"ghost",size:"icon","data-day":r.date.toLocaleDateString(),"data-selected-single":c.selected&&!c.range_start&&!c.range_end&&!c.range_middle,"data-range-start":c.range_start,"data-range-end":c.range_end,"data-range-middle":c.range_middle,className:$("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70",h.day,n),...d})}const T1={lessThanXSeconds:{one:"不到 1 秒",other:"不到 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分钟",lessThanXMinutes:{one:"不到 1 分钟",other:"不到 {{count}} 分钟"},xMinutes:{one:"1 分钟",other:"{{count}} 分钟"},xHours:{one:"1 小时",other:"{{count}} 小时"},aboutXHours:{one:"大约 1 小时",other:"大约 {{count}} 小时"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大约 1 个星期",other:"大约 {{count}} 个星期"},xWeeks:{one:"1 个星期",other:"{{count}} 个星期"},aboutXMonths:{one:"大约 1 个月",other:"大约 {{count}} 个月"},xMonths:{one:"1 个月",other:"{{count}} 个月"},aboutXYears:{one:"大约 1 年",other:"大约 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超过 1 年",other:"超过 {{count}} 年"},almostXYears:{one:"将近 1 年",other:"将近 {{count}} 年"}},E1=(n,r,c)=>{let d;const h=T1[n];return typeof h=="string"?d=h:r===1?d=h.one:d=h.other.replace("{{count}}",String(r)),c?.addSuffix?c.comparison&&c.comparison>0?d+"内":d+"前":d},z1={full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},M1={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},A1={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},D1={date:wu({formats:z1,defaultWidth:"full"}),time:wu({formats:M1,defaultWidth:"full"}),dateTime:wu({formats:A1,defaultWidth:"full"})};function pp(n,r,c){const d="eeee p";return Cy(n,r,c)?d:n.getTime()>r.getTime()?"'下个'"+d:"'上个'"+d}const O1={lastWeek:pp,yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:pp,other:"PP p"},R1=(n,r,c,d)=>{const h=O1[n];return typeof h=="function"?h(r,c,d):h},L1={narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},U1={narrow:["1","2","3","4"],abbreviated:["第一季","第二季","第三季","第四季"],wide:["第一季度","第二季度","第三季度","第四季度"]},B1={narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},H1={narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["周日","周一","周二","周三","周四","周五","周六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},q1={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},G1={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},V1=(n,r)=>{const c=Number(n);switch(r?.unit){case"date":return c.toString()+"日";case"hour":return c.toString()+"时";case"minute":return c.toString()+"分";case"second":return c.toString()+"秒";default:return"第 "+c.toString()}},F1={ordinalNumber:V1,era:er({values:L1,defaultWidth:"wide"}),quarter:er({values:U1,defaultWidth:"wide",argumentCallback:n=>n-1}),month:er({values:B1,defaultWidth:"wide"}),day:er({values:H1,defaultWidth:"wide"}),dayPeriod:er({values:q1,defaultWidth:"wide",formattingValues:G1,defaultFormattingWidth:"wide"})},Q1=/^(第\s*)?\d+(日|时|分|秒)?/i,$1=/\d+/i,Y1={narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},X1={any:[/^(前)/i,/^(公元)/i]},K1={narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻钟/i},Z1={any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},I1={narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},J1={narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},P1={narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^周[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},W1={any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},e2={any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i},s2={any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},t2={ordinalNumber:ky({matchPattern:Q1,parsePattern:$1,valueCallback:n=>parseInt(n,10)}),era:sr({matchPatterns:Y1,defaultMatchWidth:"wide",parsePatterns:X1,defaultParseWidth:"any"}),quarter:sr({matchPatterns:K1,defaultMatchWidth:"wide",parsePatterns:Z1,defaultParseWidth:"any",valueCallback:n=>n+1}),month:sr({matchPatterns:I1,defaultMatchWidth:"wide",parsePatterns:J1,defaultParseWidth:"any"}),day:sr({matchPatterns:P1,defaultMatchWidth:"wide",parsePatterns:W1,defaultParseWidth:"any"}),dayPeriod:sr({matchPatterns:e2,defaultMatchWidth:"any",parsePatterns:s2,defaultParseWidth:"any"})},Qc={code:"zh-CN",formatDistance:E1,formatLong:D1,formatRelative:R1,localize:F1,match:t2,options:{weekStartsOn:1,firstWeekContainsDate:4}},$c={xs:{label:"小",rowHeight:28,class:"text-[10px] sm:text-xs"},sm:{label:"中",rowHeight:36,class:"text-xs sm:text-sm"},base:{label:"大",rowHeight:44,class:"text-sm sm:text-base"}};function a2(){const[n,r]=u.useState([]),[c,d]=u.useState(""),[h,x]=u.useState("all"),[f,j]=u.useState("all"),[g,_]=u.useState(void 0),[v,k]=u.useState(void 0),[z,T]=u.useState(!0),[L,K]=u.useState(!1),[U,R]=u.useState("xs"),[ee,V]=u.useState(4),E=u.useRef(null);u.useEffect(()=>{const y=an.getAllLogs();r(y);const q=an.onLog(()=>{r(an.getAllLogs())}),H=an.onConnectionChange(ne=>{K(ne)});return()=>{q(),H()}},[]);const B=u.useMemo(()=>{const y=new Set(n.map(q=>q.module).filter(q=>q&&q.trim()!==""));return Array.from(y).sort()},[n]),X=y=>{switch(y){case"DEBUG":return"text-muted-foreground";case"INFO":return"text-blue-500 dark:text-blue-400";case"WARNING":return"text-yellow-600 dark:text-yellow-500";case"ERROR":return"text-red-600 dark:text-red-500";case"CRITICAL":return"text-red-700 dark:text-red-400 font-bold";default:return"text-foreground"}},w=y=>{switch(y){case"DEBUG":return"bg-gray-800/30 dark:bg-gray-800/50";case"INFO":return"bg-blue-900/20 dark:bg-blue-500/20";case"WARNING":return"bg-yellow-900/20 dark:bg-yellow-500/20";case"ERROR":return"bg-red-900/20 dark:bg-red-500/20";case"CRITICAL":return"bg-red-900/30 dark:bg-red-600/30";default:return"bg-gray-800/20 dark:bg-gray-800/30"}},D=()=>{window.location.reload()},te=()=>{an.clearLogs(),r([])},xe=()=>{const y=ve.map(S=>`${S.timestamp} [${S.level.padEnd(8)}] [${S.module}] ${S.message}`).join(` -`),q=new Blob([y],{type:"text/plain;charset=utf-8"}),H=URL.createObjectURL(q),ne=document.createElement("a");ne.href=H,ne.download=`logs-${_u(new Date,"yyyy-MM-dd-HHmmss")}.txt`,ne.click(),URL.revokeObjectURL(H)},be=()=>{T(!z)},ye=()=>{_(void 0),k(void 0)},ve=u.useMemo(()=>n.filter(y=>{const q=c===""||y.message.toLowerCase().includes(c.toLowerCase())||y.module.toLowerCase().includes(c.toLowerCase()),H=h==="all"||y.level===h,ne=f==="all"||y.module===f;let S=!0;if(g||v){const me=new Date(y.timestamp);if(g){const he=new Date(g);he.setHours(0,0,0,0),S=S&&me>=he}if(v){const he=new Date(v);he.setHours(23,59,59,999),S=S&&me<=he}}return q&&H&&ne&&S}),[n,c,h,f,g,v]),pe=$c[U].rowHeight+ee,Ne=fy({count:ve.length,getScrollElement:()=>E.current,estimateSize:()=>pe,overscan:15});return u.useEffect(()=>{z&&ve.length>0&&Ne.scrollToIndex(ve.length-1,{align:"end",behavior:"auto"})},[ve.length,z,Ne]),e.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[e.jsxs("div",{className:"flex-shrink-0 space-y-4 p-3 sm:p-4 lg:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-xl sm:text-2xl lg:text-3xl font-bold",children:"日志查看器"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:"实时查看和分析麦麦运行日志"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:$("h-2.5 w-2.5 sm:h-3 sm:w-3 rounded-full",L?"bg-green-500 animate-pulse":"bg-red-500")}),e.jsx("span",{className:"text-xs sm:text-sm text-muted-foreground",children:L?"已连接":"未连接"})]})]}),e.jsx(Be,{className:"p-3 sm:p-4",children:e.jsxs("div",{className:"flex flex-col gap-3 sm:gap-4",children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:gap-4",children:[e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(St,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索日志...",value:c,onChange:y=>d(y.target.value),className:"pl-9 h-9 text-sm"})]}),e.jsxs(Qe,{value:h,onValueChange:x,children:[e.jsxs(Ge,{className:"w-full sm:w-[140px] lg:w-[180px] h-9 text-sm",children:[e.jsx(Lu,{className:"h-4 w-4 mr-2"}),e.jsx($e,{placeholder:"级别"})]}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"all",children:"全部级别"}),e.jsx(ue,{value:"DEBUG",children:"DEBUG"}),e.jsx(ue,{value:"INFO",children:"INFO"}),e.jsx(ue,{value:"WARNING",children:"WARNING"}),e.jsx(ue,{value:"ERROR",children:"ERROR"}),e.jsx(ue,{value:"CRITICAL",children:"CRITICAL"})]})]}),e.jsxs(Qe,{value:f,onValueChange:j,children:[e.jsxs(Ge,{className:"w-full sm:w-[160px] lg:w-[200px] h-9 text-sm",children:[e.jsx(Lu,{className:"h-4 w-4 mr-2"}),e.jsx($e,{placeholder:"模块"})]}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"all",children:"全部模块"}),B.map(y=>e.jsx(ue,{value:y,children:y},y))]})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:gap-4",children:[e.jsxs(Da,{children:[e.jsx(Oa,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",className:$("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!g&&"text-muted-foreground"),children:[e.jsx(Yf,{className:"mr-2 h-4 w-4"}),e.jsx("span",{className:"text-xs sm:text-sm",children:g?_u(g,"PPP",{locale:Qc}):"开始日期"})]})}),e.jsx(Na,{className:"w-auto p-0",align:"start",children:e.jsx(fp,{mode:"single",selected:g,onSelect:_,initialFocus:!0,locale:Qc})})]}),e.jsxs(Da,{children:[e.jsx(Oa,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",className:$("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!v&&"text-muted-foreground"),children:[e.jsx(Yf,{className:"mr-2 h-4 w-4"}),e.jsx("span",{className:"text-xs sm:text-sm",children:v?_u(v,"PPP",{locale:Qc}):"结束日期"})]})}),e.jsx(Na,{className:"w-auto p-0",align:"start",children:e.jsx(fp,{mode:"single",selected:v,onSelect:k,initialFocus:!0,locale:Qc})})]}),(g||v)&&e.jsxs(N,{variant:"outline",size:"sm",onClick:ye,className:"w-full sm:w-auto h-9",children:[e.jsx(li,{className:"h-4 w-4 sm:mr-2"}),e.jsx("span",{className:"hidden sm:inline text-sm",children:"清除时间筛选"}),e.jsx("span",{className:"sm:hidden text-sm",children:"清除"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center",children:[e.jsxs("div",{className:"flex gap-2 flex-wrap",children:[e.jsxs(N,{variant:z?"default":"outline",size:"sm",onClick:be,className:"flex-1 sm:flex-none h-9",children:[z?e.jsx(qN,{className:"h-4 w-4"}):e.jsx(GN,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:z?"自动滚动":"已暂停"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:D,className:"flex-1 sm:flex-none h-9",children:[e.jsx(ft,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"刷新"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:te,className:"flex-1 sm:flex-none h-9",children:[e.jsx(ns,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"清空"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:xe,className:"flex-1 sm:flex-none h-9",children:[e.jsx(nl,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"导出"})]})]}),e.jsx("div",{className:"flex-1 hidden sm:block"}),e.jsxs("div",{className:"text-xs sm:text-sm text-muted-foreground flex items-center justify-center sm:justify-end",children:[e.jsxs("span",{className:"font-mono",children:[ve.length," / ",n.length]}),e.jsx("span",{className:"ml-1",children:"条日志"})]})]}),e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-6 pt-2 border-t border-border/50",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(VN,{className:"h-4 w-4"}),e.jsx("span",{children:"字号"})]}),e.jsx("div",{className:"flex gap-1",children:Object.keys($c).map(y=>e.jsx(N,{variant:U===y?"default":"outline",size:"sm",onClick:()=>R(y),className:"h-7 px-3 text-xs",children:$c[y].label},y))})]}),e.jsxs("div",{className:"flex items-center gap-3 flex-1 max-w-xs",children:[e.jsx("span",{className:"text-sm text-muted-foreground whitespace-nowrap",children:"行距"}),e.jsx(za,{value:[ee],onValueChange:([y])=>V(y),min:0,max:12,step:2,className:"flex-1"}),e.jsxs("span",{className:"text-xs text-muted-foreground w-8",children:[ee,"px"]})]})]})]})})]}),e.jsx("div",{className:"flex-1 min-h-0 px-3 sm:px-4 lg:px-6 pb-3 sm:pb-4 lg:pb-6",children:e.jsx(Be,{className:"bg-black dark:bg-gray-950 border-gray-800 dark:border-gray-900 h-full",children:e.jsx(es,{viewportRef:E,className:"h-full",children:e.jsx("div",{className:$("p-2 sm:p-3 font-mono relative",$c[U].class),style:{height:`${Ne.getTotalSize()}px`},children:ve.length===0?e.jsx("div",{className:"text-gray-500 dark:text-gray-600 text-center py-8 text-sm",children:"暂无日志数据"}):Ne.getVirtualItems().map(y=>{const q=ve[y.index];return e.jsxs("div",{"data-index":y.index,ref:Ne.measureElement,className:$("absolute top-0 left-0 w-full px-2 sm:px-3 rounded hover:bg-white/5 transition-colors group",w(q.level)),style:{transform:`translateY(${y.start}px)`,paddingTop:`${ee/2}px`,paddingBottom:`${ee/2}px`},children:[e.jsxs("div",{className:"flex flex-col gap-0.5 sm:hidden",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-gray-500 dark:text-gray-600",children:q.timestamp}),e.jsxs("span",{className:$("font-semibold",X(q.level)),children:["[",q.level,"]"]})]}),e.jsx("div",{className:"text-cyan-400 dark:text-cyan-500 truncate",children:q.module}),e.jsx("div",{className:"text-gray-300 dark:text-gray-400 whitespace-pre-wrap break-words",children:q.message})]}),e.jsxs("div",{className:"hidden sm:flex gap-2 items-start",children:[e.jsx("span",{className:"text-gray-500 dark:text-gray-600 flex-shrink-0 w-[130px] lg:w-[160px]",children:q.timestamp}),e.jsxs("span",{className:$("flex-shrink-0 w-[65px] lg:w-[75px] font-semibold",X(q.level)),children:["[",q.level,"]"]}),e.jsx("span",{className:"text-cyan-400 dark:text-cyan-500 flex-shrink-0 w-[100px] lg:w-[130px] truncate",children:q.module}),e.jsx("span",{className:"text-gray-300 dark:text-gray-400 flex-1 whitespace-pre-wrap break-words",children:q.message})]})]},y.key)})})})})})]})}const l2="Mai-with-u",n2="plugin-repo",i2="main",r2="plugin_details.json";async function c2(){try{const n=await ke("/api/webui/plugins/fetch-raw",{method:"POST",headers:ze(),body:JSON.stringify({owner:l2,repo:n2,branch:i2,file_path:r2})});if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);const r=await n.json();if(!r.success||!r.data)throw new Error(r.error||"获取插件列表失败");return JSON.parse(r.data).filter(h=>!h?.id||!h?.manifest?(console.warn("跳过无效插件数据:",h),!1):!h.manifest.name||!h.manifest.version?(console.warn("跳过缺少必需字段的插件:",h.id),!1):!0).map(h=>({id:h.id,manifest:{manifest_version:h.manifest.manifest_version||1,name:h.manifest.name,version:h.manifest.version,description:h.manifest.description||"",author:h.manifest.author||{name:"Unknown"},license:h.manifest.license||"Unknown",host_application:h.manifest.host_application||{min_version:"0.0.0"},homepage_url:h.manifest.homepage_url,repository_url:h.manifest.repository_url,keywords:h.manifest.keywords||[],categories:h.manifest.categories||[],default_locale:h.manifest.default_locale||"zh-CN",locales_path:h.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!1,published_at:new Date().toISOString(),updated_at:new Date().toISOString()}))}catch(n){throw console.error("Failed to fetch plugin list:",n),n}}async function o2(){try{const n=await ke("/api/webui/plugins/git-status");if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);return await n.json()}catch(n){return console.error("Failed to check Git status:",n),{installed:!1,error:"无法检测 Git 安装状态"}}}async function d2(){try{const n=await ke("/api/webui/plugins/version");if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);return await n.json()}catch(n){return console.error("Failed to get Maimai version:",n),{version:"0.0.0",version_major:0,version_minor:0,version_patch:0}}}function u2(n,r,c){const d=n.split(".").map(j=>parseInt(j)||0),h=d[0]||0,x=d[1]||0,f=d[2]||0;if(c.version_majorparseInt(k)||0),g=j[0]||0,_=j[1]||0,v=j[2]||0;if(c.version_major>g||c.version_major===g&&c.version_minor>_||c.version_major===g&&c.version_minor===_&&c.version_patch>v)return!1}return!0}function m2(n,r){const c=window.location.protocol==="https:"?"wss:":"ws:",d=window.location.host,h=new WebSocket(`${c}//${d}/api/webui/ws/plugin-progress`);return h.onopen=()=>{console.log("Plugin progress WebSocket connected");const x=setInterval(()=>{h.readyState===WebSocket.OPEN?h.send("ping"):clearInterval(x)},3e4)},h.onmessage=x=>{try{if(x.data==="pong")return;const f=JSON.parse(x.data);n(f)}catch(f){console.error("Failed to parse progress data:",f)}},h.onerror=x=>{console.error("Plugin progress WebSocket error:",x),r?.(x)},h.onclose=()=>{console.log("Plugin progress WebSocket disconnected")},h}async function cr(){try{const n=await ke("/api/webui/plugins/installed",{headers:ze()});if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);const r=await n.json();if(!r.success)throw new Error(r.message||"获取已安装插件列表失败");return r.plugins||[]}catch(n){return console.error("Failed to get installed plugins:",n),[]}}function Yc(n,r){return r.some(c=>c.id===n)}function Xc(n,r){const c=r.find(d=>d.id===n);if(c)return c.manifest?.version||c.version}async function h2(n,r,c="main"){const d=await ke("/api/webui/plugins/install",{method:"POST",headers:ze(),body:JSON.stringify({plugin_id:n,repository_url:r,branch:c})});if(!d.ok){const h=await d.json();throw new Error(h.detail||"安装失败")}return await d.json()}async function x2(n){const r=await ke("/api/webui/plugins/uninstall",{method:"POST",headers:ze(),body:JSON.stringify({plugin_id:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"卸载失败")}return await r.json()}async function f2(n,r,c="main"){const d=await ke("/api/webui/plugins/update",{method:"POST",headers:ze(),body:JSON.stringify({plugin_id:n,repository_url:r,branch:c})});if(!d.ok){const h=await d.json();throw new Error(h.detail||"更新失败")}return await d.json()}async function p2(n){const r=await ke(`/api/webui/plugins/config/${n}/schema`,{headers:ze()});if(!r.ok){const d=await r.json();throw new Error(d.detail||"获取配置 Schema 失败")}const c=await r.json();if(!c.success)throw new Error(c.message||"获取配置 Schema 失败");return c.schema}async function g2(n){const r=await ke(`/api/webui/plugins/config/${n}`,{headers:ze()});if(!r.ok){const d=await r.json();throw new Error(d.detail||"获取配置失败")}const c=await r.json();if(!c.success)throw new Error(c.message||"获取配置失败");return c.config}async function j2(n,r){const c=await ke(`/api/webui/plugins/config/${n}`,{method:"PUT",headers:ze(),body:JSON.stringify({config:r})});if(!c.ok){const d=await c.json();throw new Error(d.detail||"保存配置失败")}return await c.json()}async function v2(n){const r=await ke(`/api/webui/plugins/config/${n}/reset`,{method:"POST",headers:ze()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"重置配置失败")}return await r.json()}async function y2(n){const r=await ke(`/api/webui/plugins/config/${n}/toggle`,{method:"POST",headers:ze()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"切换状态失败")}return await r.json()}const Cr="https://maibot-plugin-stats.maibot-webui.workers.dev";async function $g(n){try{const r=await fetch(`${Cr}/stats/${n}`);return r.ok?await r.json():(console.error("Failed to fetch plugin stats:",r.statusText),null)}catch(r){return console.error("Error fetching plugin stats:",r),null}}async function N2(n,r){try{const c=r||Wu(),d=await fetch(`${Cr}/stats/like`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,user_id:c})}),h=await d.json();return d.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:d.ok?{success:!0,...h}:{success:!1,error:h.error||"点赞失败"}}catch(c){return console.error("Error liking plugin:",c),{success:!1,error:"网络错误"}}}async function b2(n,r){try{const c=r||Wu(),d=await fetch(`${Cr}/stats/dislike`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,user_id:c})}),h=await d.json();return d.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:d.ok?{success:!0,...h}:{success:!1,error:h.error||"点踩失败"}}catch(c){return console.error("Error disliking plugin:",c),{success:!1,error:"网络错误"}}}async function w2(n,r,c,d){if(r<1||r>5)return{success:!1,error:"评分必须在 1-5 之间"};try{const h=d||Wu(),x=await fetch(`${Cr}/stats/rate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,rating:r,comment:c,user_id:h})}),f=await x.json();return x.status===429?{success:!1,error:"每天最多评分 3 次"}:x.ok?{success:!0,...f}:{success:!1,error:f.error||"评分失败"}}catch(h){return console.error("Error rating plugin:",h),{success:!1,error:"网络错误"}}}async function _2(n){try{const r=await fetch(`${Cr}/stats/download`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n})}),c=await r.json();return r.status===429?(console.warn("Download recording rate limited"),{success:!0}):r.ok?{success:!0,...c}:(console.error("Failed to record download:",c.error),{success:!1,error:c.error})}catch(r){return console.error("Error recording download:",r),{success:!1,error:"网络错误"}}}function S2(){const n=navigator,r=[navigator.userAgent,navigator.language,navigator.languages?.join(",")||"",navigator.platform,navigator.hardwareConcurrency||0,screen.width,screen.height,screen.colorDepth,screen.pixelDepth,new Date().getTimezoneOffset(),Intl.DateTimeFormat().resolvedOptions().timeZone,navigator.maxTouchPoints||0,n.deviceMemory||0].join("|");let c=0;for(let d=0;d{x(!0);const R=await $g(n);R&&d(R),x(!1)};u.useEffect(()=>{T()},[n]);const L=async()=>{const R=await N2(n);R.success?(z({title:"已点赞",description:"感谢你的支持!"}),T()):z({title:"点赞失败",description:R.error||"未知错误",variant:"destructive"})},K=async()=>{const R=await b2(n);R.success?(z({title:"已反馈",description:"感谢你的反馈!"}),T()):z({title:"操作失败",description:R.error||"未知错误",variant:"destructive"})},U=async()=>{if(f===0){z({title:"请选择评分",description:"至少选择 1 颗星",variant:"destructive"});return}const R=await w2(n,f,g||void 0);R.success?(z({title:"评分成功",description:"感谢你的评价!"}),k(!1),j(0),_(""),T()):z({title:"评分失败",description:R.error||"未知错误",variant:"destructive"})};return h?e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(nl,{className:"h-4 w-4"}),e.jsx("span",{children:"-"})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ol,{className:"h-4 w-4"}),e.jsx("span",{children:"-"})]})]}):c?r?e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",title:`下载量: ${c.downloads.toLocaleString()}`,children:[e.jsx(nl,{className:"h-4 w-4"}),e.jsx("span",{children:c.downloads.toLocaleString()})]}),e.jsxs("div",{className:"flex items-center gap-1",title:`评分: ${c.rating.toFixed(1)} (${c.rating_count} 条评价)`,children:[e.jsx(Ol,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsx("span",{children:c.rating.toFixed(1)})]}),e.jsxs("div",{className:"flex items-center gap-1",title:`点赞数: ${c.likes}`,children:[e.jsx(Cu,{className:"h-4 w-4"}),e.jsx("span",{children:c.likes})]})]}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-4",children:[e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(nl,{className:"h-5 w-5 text-muted-foreground mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.downloads.toLocaleString()}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"下载量"})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(Ol,{className:"h-5 w-5 text-yellow-400 mb-1 fill-yellow-400"}),e.jsx("span",{className:"text-2xl font-bold",children:c.rating.toFixed(1)}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:[c.rating_count," 条评价"]})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(Cu,{className:"h-5 w-5 text-green-500 mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.likes}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"点赞"})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(Xf,{className:"h-5 w-5 text-red-500 mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.dislikes}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"点踩"})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(N,{variant:"outline",size:"sm",onClick:L,children:[e.jsx(Cu,{className:"h-4 w-4 mr-1"}),"点赞"]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:K,children:[e.jsx(Xf,{className:"h-4 w-4 mr-1"}),"点踩"]}),e.jsxs(Os,{open:v,onOpenChange:k,children:[e.jsx(ni,{asChild:!0,children:e.jsxs(N,{variant:"default",size:"sm",children:[e.jsx(Ol,{className:"h-4 w-4 mr-1"}),"评分"]})}),e.jsxs(Es,{children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"为插件评分"}),e.jsx($s,{children:"分享你的使用体验,帮助其他用户"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"flex flex-col items-center gap-2",children:[e.jsx("div",{className:"flex gap-2",children:[1,2,3,4,5].map(R=>e.jsx("button",{onClick:()=>j(R),className:"focus:outline-none",children:e.jsx(Ol,{className:`h-8 w-8 transition-colors ${R<=f?"fill-yellow-400 text-yellow-400":"text-muted-foreground hover:text-yellow-300"}`})},R))}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[f===0&&"点击星星进行评分",f===1&&"很差",f===2&&"一般",f===3&&"还行",f===4&&"不错",f===5&&"非常好"]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium mb-2 block",children:"评论(可选)"}),e.jsx(Us,{value:g,onChange:R=>_(R.target.value),placeholder:"分享你的使用体验...",rows:4,maxLength:500}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 text-right",children:[g.length," / 500"]})]})]}),e.jsxs(Is,{children:[e.jsx(N,{variant:"outline",onClick:()=>k(!1),children:"取消"}),e.jsx(N,{onClick:U,disabled:f===0,children:"提交评分"})]})]})]})]}),c.recent_ratings&&c.recent_ratings.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"text-sm font-semibold",children:"最近评价"}),e.jsx("div",{className:"space-y-3",children:c.recent_ratings.map((R,ee)=>e.jsxs("div",{className:"p-3 rounded-lg border bg-muted/50",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("div",{className:"flex gap-1",children:[1,2,3,4,5].map(V=>e.jsx(Ol,{className:`h-3 w-3 ${V<=R.rating?"fill-yellow-400 text-yellow-400":"text-muted-foreground"}`},V))}),e.jsx("span",{className:"text-xs text-muted-foreground",children:new Date(R.created_at).toLocaleDateString()})]}),R.comment&&e.jsx("p",{className:"text-sm text-muted-foreground",children:R.comment})]},ee))})]})]}):null}const gp={"Group Management":"群组管理","Entertainment & Interaction":"娱乐互动","Utility Tools":"实用工具","Content Generation":"内容生成",Multimedia:"多媒体","External Integration":"外部集成","Data Analysis & Insights":"数据分析与洞察",Other:"其他"};function k2(){const n=It(),[r,c]=u.useState(null),[d,h]=u.useState(""),[x,f]=u.useState("all"),[j,g]=u.useState("all"),[_,v]=u.useState(!0),[k,z]=u.useState([]),[T,L]=u.useState(!0),[K,U]=u.useState(null),[R,ee]=u.useState(null),[V,E]=u.useState(null),[B,X]=u.useState(null),[,w]=u.useState([]),[D,te]=u.useState({}),{toast:xe}=Bs(),be=async S=>{const me=S.map(async oe=>{try{const ge=await $g(oe.id);return{id:oe.id,stats:ge}}catch(ge){return console.warn(`Failed to load stats for ${oe.id}:`,ge),{id:oe.id,stats:null}}}),he=await Promise.all(me),Q={};he.forEach(({id:oe,stats:ge})=>{ge&&(Q[oe]=ge)}),te(Q)};u.useEffect(()=>{let S=null,me=!1;return(async()=>{if(S=m2(Q=>{me||(E(Q),Q.stage==="success"?setTimeout(()=>{me||E(null)},2e3):Q.stage==="error"&&(L(!1),U(Q.error||"加载失败")))},Q=>{console.error("WebSocket error:",Q),me||xe({title:"WebSocket 连接失败",description:"无法实时显示加载进度",variant:"destructive"})}),await new Promise(Q=>{if(!S){Q();return}const oe=()=>{S&&S.readyState===WebSocket.OPEN?(console.log("WebSocket connected, starting to load plugins"),Q()):S&&S.readyState===WebSocket.CLOSED?(console.warn("WebSocket closed before loading plugins"),Q()):setTimeout(oe,100)};oe()}),!me){const Q=await o2();ee(Q),Q.installed||xe({title:"Git 未安装",description:Q.error||"请先安装 Git 才能使用插件安装功能",variant:"destructive"})}if(!me){const Q=await d2();X(Q)}if(!me)try{L(!0),U(null);const Q=await c2();if(!me){const oe=await cr();w(oe);const ge=Q.map(le=>{const O=Yc(le.id,oe),F=Xc(le.id,oe);return{...le,installed:O,installed_version:F}});for(const le of oe)!ge.some(F=>F.id===le.id)&&le.manifest&&ge.push({id:le.id,manifest:{manifest_version:le.manifest.manifest_version||1,name:le.manifest.name,version:le.manifest.version,description:le.manifest.description||"",author:le.manifest.author,license:le.manifest.license||"Unknown",host_application:le.manifest.host_application,homepage_url:le.manifest.homepage_url,repository_url:le.manifest.repository_url,keywords:le.manifest.keywords||[],categories:le.manifest.categories||[],default_locale:le.manifest.default_locale||"zh-CN",locales_path:le.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!0,installed_version:le.manifest.version,published_at:new Date().toISOString(),updated_at:new Date().toISOString()});z(ge),be(ge)}}catch(Q){if(!me){const oe=Q instanceof Error?Q.message:"加载插件列表失败";U(oe),xe({title:"加载失败",description:oe,variant:"destructive"})}}finally{me||L(!1)}})(),()=>{me=!0,S&&S.close()}},[xe]);const ye=S=>{if(!S.installed&&B&&!ve(S))return e.jsxs(Xe,{variant:"destructive",className:"gap-1",children:[e.jsx(Aa,{className:"h-3 w-3"}),"不兼容"]});if(S.installed){const me=S.installed_version?.trim(),he=S.manifest.version?.trim();if(me!==he){const Q=me?.split(".").map(Number)||[0,0,0],oe=he?.split(".").map(Number)||[0,0,0];for(let ge=0;ge<3;ge++){if((oe[ge]||0)>(Q[ge]||0))return e.jsxs(Xe,{variant:"outline",className:"gap-1 text-orange-600 border-orange-600",children:[e.jsx(Aa,{className:"h-3 w-3"}),"可更新"]});if((oe[ge]||0)<(Q[ge]||0))break}}return e.jsxs(Xe,{variant:"default",className:"gap-1",children:[e.jsx(xa,{className:"h-3 w-3"}),"已安装"]})}return null},ve=S=>!B||!S.manifest?.host_application?!0:u2(S.manifest.host_application.min_version,S.manifest.host_application.max_version,B),pe=S=>{if(!S.installed||!S.installed_version||!S.manifest?.version)return!1;const me=S.installed_version.trim(),he=S.manifest.version.trim();if(me===he)return!1;const Q=me.split(".").map(Number),oe=he.split(".").map(Number);for(let ge=0;ge<3;ge++){if((oe[ge]||0)>(Q[ge]||0))return!0;if((oe[ge]||0)<(Q[ge]||0))return!1}return!1},Ne=k.filter(S=>{if(!S.manifest)return console.warn("[过滤] 跳过无 manifest 的插件:",S.id),!1;const me=d===""||S.manifest.name?.toLowerCase().includes(d.toLowerCase())||S.manifest.description?.toLowerCase().includes(d.toLowerCase())||S.manifest.keywords&&S.manifest.keywords.some(ge=>ge.toLowerCase().includes(d.toLowerCase())),he=x==="all"||S.manifest.categories&&S.manifest.categories.includes(x);let Q=!0;j==="installed"?Q=S.installed===!0:j==="updates"&&(Q=S.installed===!0&&pe(S));const oe=!_||!B||ve(S);return me&&he&&Q&&oe}),y=()=>{c(null)},q=async S=>{if(!R?.installed){xe({title:"无法安装",description:"Git 未安装",variant:"destructive"});return}if(B&&!ve(S)){xe({title:"无法安装",description:"插件与当前麦麦版本不兼容",variant:"destructive"});return}try{await h2(S.id,S.manifest.repository_url||"","main"),_2(S.id).catch(he=>{console.warn("Failed to record download:",he)}),xe({title:"安装成功",description:`${S.manifest.name} 已成功安装`});const me=await cr();w(me),z(he=>he.map(Q=>{if(Q.id===S.id){const oe=Yc(Q.id,me),ge=Xc(Q.id,me);return{...Q,installed:oe,installed_version:ge}}return Q}))}catch(me){xe({title:"安装失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}},H=async S=>{try{await x2(S.id),xe({title:"卸载成功",description:`${S.manifest.name} 已成功卸载`});const me=await cr();w(me),z(he=>he.map(Q=>{if(Q.id===S.id){const oe=Yc(Q.id,me),ge=Xc(Q.id,me);return{...Q,installed:oe,installed_version:ge}}return Q}))}catch(me){xe({title:"卸载失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}},ne=async S=>{if(!R?.installed){xe({title:"无法更新",description:"Git 未安装",variant:"destructive"});return}try{const me=await f2(S.id,S.manifest.repository_url||"","main");xe({title:"更新成功",description:`${S.manifest.name} 已从 ${me.old_version} 更新到 ${me.new_version}`});const he=await cr();w(he),z(Q=>Q.map(oe=>{if(oe.id===S.id){const ge=Yc(oe.id,he),le=Xc(oe.id,he);return{...oe,installed:ge,installed_version:le}}return oe}))}catch(me){xe({title:"更新失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}};return e.jsx(es,{className:"h-full",children:e.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件市场"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"浏览和管理麦麦的插件"})]}),e.jsxs(N,{onClick:()=>n({to:"/plugin-mirrors"}),children:[e.jsx(FN,{className:"h-4 w-4 mr-2"}),"配置镜像源"]})]}),R&&!R.installed&&e.jsxs(Be,{className:"border-orange-600 bg-orange-50 dark:bg-orange-950/20",children:[e.jsx(gs,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ya,{className:"h-5 w-5 text-orange-600"}),e.jsxs("div",{children:[e.jsx(js,{className:"text-lg text-orange-900 dark:text-orange-100",children:"Git 未安装"}),e.jsx(Zs,{className:"text-orange-800 dark:text-orange-200",children:R.error||"请先安装 Git 才能使用插件安装功能"})]})]})}),e.jsx(bs,{children:e.jsxs("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:["您可以从 ",e.jsx("a",{href:"https://git-scm.com/downloads",target:"_blank",rel:"noopener noreferrer",className:"underline font-medium",children:"git-scm.com"})," 下载并安装 Git。 安装完成后,请重启麦麦应用。"]})})]}),e.jsx(Be,{className:"p-4",children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(St,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索插件...",value:d,onChange:S=>h(S.target.value),className:"pl-9"})]}),e.jsxs(Qe,{value:x,onValueChange:f,children:[e.jsx(Ge,{className:"w-full sm:w-[200px]",children:e.jsx($e,{placeholder:"选择分类"})}),e.jsxs(Ve,{children:[e.jsx(ue,{value:"all",children:"全部分类"}),e.jsx(ue,{value:"Group Management",children:"群组管理"}),e.jsx(ue,{value:"Entertainment & Interaction",children:"娱乐互动"}),e.jsx(ue,{value:"Utility Tools",children:"实用工具"}),e.jsx(ue,{value:"Content Generation",children:"内容生成"}),e.jsx(ue,{value:"Multimedia",children:"多媒体"}),e.jsx(ue,{value:"External Integration",children:"外部集成"}),e.jsx(ue,{value:"Data Analysis & Insights",children:"数据分析与洞察"}),e.jsx(ue,{value:"Other",children:"其他"})]})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(yt,{id:"compatible-only",checked:_,onCheckedChange:S=>v(S===!0)}),e.jsx("label",{htmlFor:"compatible-only",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer",children:"只显示兼容当前版本的插件"})]})]})}),e.jsx(Kt,{value:j,onValueChange:g,className:"w-full",children:e.jsxs(Rt,{className:"grid w-full grid-cols-3",children:[e.jsxs(He,{value:"all",children:["全部插件 (",k.filter(S=>{if(!S.manifest)return!1;const me=d===""||S.manifest.name?.toLowerCase().includes(d.toLowerCase())||S.manifest.description?.toLowerCase().includes(d.toLowerCase())||S.manifest.keywords&&S.manifest.keywords.some(oe=>oe.toLowerCase().includes(d.toLowerCase())),he=x==="all"||S.manifest.categories&&S.manifest.categories.includes(x),Q=!_||!B||ve(S);return me&&he&&Q}).length,")"]}),e.jsxs(He,{value:"installed",children:["已安装 (",k.filter(S=>{if(!S.manifest)return!1;const me=d===""||S.manifest.name?.toLowerCase().includes(d.toLowerCase())||S.manifest.description?.toLowerCase().includes(d.toLowerCase())||S.manifest.keywords&&S.manifest.keywords.some(oe=>oe.toLowerCase().includes(d.toLowerCase())),he=x==="all"||S.manifest.categories&&S.manifest.categories.includes(x),Q=!_||!B||ve(S);return S.installed&&me&&he&&Q}).length,")"]}),e.jsxs(He,{value:"updates",children:["可更新 (",k.filter(S=>{if(!S.manifest)return!1;const me=d===""||S.manifest.name?.toLowerCase().includes(d.toLowerCase())||S.manifest.description?.toLowerCase().includes(d.toLowerCase())||S.manifest.keywords&&S.manifest.keywords.some(oe=>oe.toLowerCase().includes(d.toLowerCase())),he=x==="all"||S.manifest.categories&&S.manifest.categories.includes(x),Q=!_||!B||ve(S);return S.installed&&pe(S)&&me&&he&&Q}).length,")"]})]})}),V&&V.stage==="loading"&&e.jsx(Be,{className:"p-4",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(vt,{className:"h-4 w-4 animate-spin"}),e.jsxs("span",{className:"text-sm font-medium",children:[V.operation==="fetch"&&"加载插件列表",V.operation==="install"&&`安装插件${V.plugin_id?`: ${V.plugin_id}`:""}`,V.operation==="uninstall"&&`卸载插件${V.plugin_id?`: ${V.plugin_id}`:""}`,V.operation==="update"&&`更新插件${V.plugin_id?`: ${V.plugin_id}`:""}`]})]}),e.jsxs("span",{className:"text-sm font-medium",children:[V.progress,"%"]})]}),e.jsx(Sr,{value:V.progress,className:"h-2"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:V.message}),V.operation==="fetch"&&V.total_plugins>0&&e.jsxs("div",{className:"text-xs text-muted-foreground text-center",children:["已加载 ",V.loaded_plugins," / ",V.total_plugins," 个插件"]})]})}),V&&V.stage==="error"&&V.error&&e.jsx(Be,{className:"border-destructive bg-destructive/10",children:e.jsx(gs,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ya,{className:"h-5 w-5 text-destructive"}),e.jsxs("div",{children:[e.jsx(js,{className:"text-lg text-destructive",children:"加载失败"}),e.jsx(Zs,{className:"text-destructive/80",children:V.error})]})]})})}),T?e.jsxs("div",{className:"flex items-center justify-center py-12",children:[e.jsx(vt,{className:"h-8 w-8 animate-spin text-muted-foreground"}),e.jsx("span",{className:"ml-3 text-muted-foreground",children:"加载插件列表中..."})]}):K?e.jsx(Be,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(ya,{className:"h-12 w-12 text-destructive mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:K}),e.jsx(N,{onClick:()=>window.location.reload(),children:"重新加载"})]})}):Ne.length===0?e.jsx(Be,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(St,{className:"h-12 w-12 text-muted-foreground mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"未找到插件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:d||x!=="all"?"尝试调整搜索条件或筛选器":"暂无可用插件"})]})}):e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:Ne.map(S=>e.jsxs(Be,{className:"flex flex-col hover:shadow-lg transition-shadow h-full",children:[e.jsxs(gs,{children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsx(js,{className:"text-xl",children:S.manifest?.name||S.id}),e.jsxs("div",{className:"flex flex-col gap-1",children:[S.manifest?.categories&&S.manifest.categories[0]&&e.jsx(Xe,{variant:"secondary",className:"text-xs whitespace-nowrap",children:gp[S.manifest.categories[0]]||S.manifest.categories[0]}),ye(S)]})]}),e.jsx(Zs,{className:"line-clamp-2",children:S.manifest?.description||"无描述"})]}),e.jsx(bs,{className:"flex-1",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(nl,{className:"h-4 w-4"}),e.jsx("span",{children:(D[S.id]?.downloads??S.downloads??0).toLocaleString()})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ol,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsx("span",{children:(D[S.id]?.rating??S.rating??0).toFixed(1)})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[S.manifest?.keywords&&S.manifest.keywords.slice(0,3).map(me=>e.jsx(Xe,{variant:"outline",className:"text-xs",children:me},me)),S.manifest?.keywords&&S.manifest.keywords.length>3&&e.jsxs(Xe,{variant:"outline",className:"text-xs",children:["+",S.manifest.keywords.length-3]})]}),e.jsxs("div",{className:"text-xs text-muted-foreground pt-2 border-t space-y-1",children:[e.jsxs("div",{children:["v",S.manifest?.version||"unknown"," · ",S.manifest?.author?.name||"Unknown"]}),S.manifest?.host_application&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{children:"支持:"}),e.jsxs("span",{className:"font-medium",children:[S.manifest.host_application.min_version,S.manifest.host_application.max_version?` - ${S.manifest.host_application.max_version}`:" - 最新版本"]})]})]})]})}),e.jsx(wg,{className:"pt-4",children:e.jsxs("div",{className:"flex items-center justify-end gap-2 w-full",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>c(S),children:"查看详情"}),S.installed?pe(S)?e.jsxs(N,{size:"sm",disabled:!R?.installed,title:R?.installed?void 0:"Git 未安装",onClick:()=>ne(S),children:[e.jsx(ft,{className:"h-4 w-4 mr-1"}),"更新"]}):e.jsxs(N,{variant:"destructive",size:"sm",disabled:!R?.installed,title:R?.installed?void 0:"Git 未安装",onClick:()=>H(S),children:[e.jsx(ns,{className:"h-4 w-4 mr-1"}),"卸载"]}):e.jsxs(N,{size:"sm",disabled:!R?.installed||V?.operation==="install"||B!==null&&!ve(S),title:R?.installed?B!==null&&!ve(S)?`不兼容当前版本 (需要 ${S.manifest?.host_application?.min_version||"未知"}${S.manifest?.host_application?.max_version?` - ${S.manifest.host_application.max_version}`:"+"},当前 ${B?.version})`:void 0:"Git 未安装",onClick:()=>q(S),children:[e.jsx(nl,{className:"h-4 w-4 mr-1"}),V?.operation==="install"&&V?.plugin_id===S.id?"安装中...":"安装"]})]})})]},S.id))}),e.jsx(Os,{open:r!==null,onOpenChange:y,children:r&&r.manifest&&e.jsxs(Es,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsx(zs,{children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"space-y-2 flex-1",children:[e.jsx(Ms,{className:"text-2xl",children:r.manifest.name}),e.jsxs($s,{children:["作者: ",r.manifest.author?.name||"Unknown",r.manifest.author?.url&&e.jsx("a",{href:r.manifest.author.url,target:"_blank",rel:"noopener noreferrer",className:"ml-2 text-primary hover:underline",children:e.jsx(dr,{className:"h-3 w-3 inline"})})]})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[r.manifest.categories&&r.manifest.categories[0]&&e.jsx(Xe,{variant:"secondary",children:gp[r.manifest.categories[0]]||r.manifest.categories[0]}),ye(r)]})]})}),e.jsxs("div",{className:"space-y-6",children:[e.jsx(C2,{pluginId:r.id}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"版本"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["v",r.manifest?.version||"unknown"]}),r.installed&&r.installed_version&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:["已安装: v",r.installed_version]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"下载量"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:(D[r.id]?.downloads??r.downloads??0).toLocaleString()})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"评分"}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ol,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[(D[r.id]?.rating??r.rating??0).toFixed(1)," (",D[r.id]?.rating_count??r.review_count??0,")"]})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"许可证"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:r.manifest.license||"Unknown"})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("p",{className:"text-sm font-medium",children:"支持版本"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:[r.manifest.host_application?.min_version||"未知",r.manifest.host_application?.max_version?` - ${r.manifest.host_application.max_version}`:" - 最新版本"]})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"关键词"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:r.manifest.keywords&&r.manifest.keywords.map(S=>e.jsx(Xe,{variant:"outline",children:S},S))})]}),r.detailed_description&&e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"详细说明"}),e.jsx("p",{className:"text-sm text-muted-foreground whitespace-pre-line",children:r.detailed_description})]}),!r.detailed_description&&e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"说明"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:r.manifest.description||"无描述"})]}),e.jsxs("div",{className:"space-y-2",children:[r.manifest.homepage_url&&e.jsxs("div",{className:"text-sm",children:[e.jsx("span",{className:"font-medium",children:"主页: "}),e.jsx("a",{href:r.manifest.homepage_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:r.manifest.homepage_url})]}),r.manifest.repository_url&&e.jsxs("div",{className:"text-sm",children:[e.jsx("span",{className:"font-medium",children:"仓库: "}),e.jsx("a",{href:r.manifest.repository_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:r.manifest.repository_url})]})]})]}),e.jsxs(Is,{children:[r.manifest.homepage_url&&e.jsxs(N,{onClick:()=>window.open(r.manifest.homepage_url,"_blank"),children:[e.jsx(dr,{className:"h-4 w-4 mr-2"}),"访问主页"]}),r.manifest.repository_url&&e.jsxs(N,{variant:"outline",onClick:()=>window.open(r.manifest.repository_url,"_blank"),children:[e.jsx(dr,{className:"h-4 w-4 mr-2"}),"查看仓库"]})]})]})})]})})}const Gu=Fy,Vu=Qy,Fu=$y;function T2({field:n,value:r,onChange:c}){const[d,h]=u.useState(!1);switch(n.ui_type){case"switch":return e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:n.label}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]}),e.jsx(qe,{checked:!!r,onCheckedChange:c,disabled:n.disabled})]});case"number":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsx(ce,{type:"number",value:r??n.default,onChange:x=>c(parseFloat(x.target.value)||0),min:n.min,max:n.max,step:n.step??1,placeholder:n.placeholder,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"slider":return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:n.label}),e.jsx("span",{className:"text-sm text-muted-foreground",children:r??n.default})]}),e.jsx(za,{value:[r??n.default],onValueChange:x=>c(x[0]),min:n.min??0,max:n.max??100,step:n.step??1,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"select":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsxs(Qe,{value:String(r??n.default),onValueChange:c,disabled:n.disabled,children:[e.jsx(Ge,{children:e.jsx($e,{placeholder:n.placeholder??"请选择"})}),e.jsx(Ve,{children:n.choices?.map(x=>e.jsx(ue,{value:String(x),children:String(x)},String(x)))})]}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"textarea":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsx(Us,{value:r??n.default,onChange:x=>c(x.target.value),placeholder:n.placeholder,rows:n.rows??3,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"password":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsxs("div",{className:"relative",children:[e.jsx(ce,{type:d?"text":"password",value:r??"",onChange:x=>c(x.target.value),placeholder:n.placeholder,disabled:n.disabled,className:"pr-10"}),e.jsx(N,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-3",onClick:()=>h(!d),children:d?e.jsx(mr,{className:"h-4 w-4"}):e.jsx(Zt,{className:"h-4 w-4"})})]}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"text":default:return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsx(ce,{type:"text",value:r??n.default??"",onChange:x=>c(x.target.value),placeholder:n.placeholder,maxLength:n.max_length,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]})}}function jp({section:n,config:r,onChange:c}){const[d,h]=u.useState(!n.collapsed),x=Object.entries(n.fields).filter(([,f])=>!f.hidden).sort(([,f],[,j])=>f.order-j.order);return e.jsx(Gu,{open:d,onOpenChange:h,children:e.jsxs(Be,{children:[e.jsx(Vu,{asChild:!0,children:e.jsxs(gs,{className:"cursor-pointer hover:bg-muted/50 transition-colors",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[d?e.jsx(Ll,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(il,{className:"h-4 w-4 text-muted-foreground"}),e.jsx(js,{className:"text-lg",children:n.title})]}),e.jsxs(Xe,{variant:"secondary",className:"text-xs",children:[x.length," 项"]})]}),n.description&&e.jsx(Zs,{className:"ml-6",children:n.description})]})}),e.jsx(Fu,{children:e.jsx(bs,{className:"space-y-4 pt-0",children:x.map(([f,j])=>e.jsx(T2,{field:j,value:r[n.name]?.[f],onChange:g=>c(n.name,f,g),sectionName:n.name},f))})})]})})}function E2({plugin:n,onBack:r}){const{toast:c}=Bs(),[d,h]=u.useState(null),[x,f]=u.useState({}),[j,g]=u.useState({}),[_,v]=u.useState(!0),[k,z]=u.useState(!1),[T,L]=u.useState(!1),[K,U]=u.useState(!1),R=u.useCallback(async()=>{v(!0);try{const[D,te]=await Promise.all([p2(n.id),g2(n.id)]);h(D),f(te),g(JSON.parse(JSON.stringify(te)))}catch(D){c({title:"加载配置失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}finally{v(!1)}},[n.id,c]);u.useEffect(()=>{R()},[R]),u.useEffect(()=>{L(JSON.stringify(x)!==JSON.stringify(j))},[x,j]);const ee=(D,te,xe)=>{f(be=>({...be,[D]:{...be[D]||{},[te]:xe}}))},V=async()=>{z(!0);try{await j2(n.id,x),g(JSON.parse(JSON.stringify(x))),c({title:"配置已保存",description:"更改将在插件重新加载后生效"})}catch(D){c({title:"保存失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}finally{z(!1)}},E=async()=>{try{await v2(n.id),c({title:"配置已重置",description:"下次加载插件时将使用默认配置"}),U(!1),R()}catch(D){c({title:"重置失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}},B=async()=>{try{const D=await y2(n.id);c({title:D.message,description:D.note}),R()}catch(D){c({title:"切换状态失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}};if(_)return e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx(vt,{className:"h-8 w-8 animate-spin text-muted-foreground"})});if(!d)return e.jsxs("div",{className:"flex flex-col items-center justify-center h-64 space-y-4",children:[e.jsx(Aa,{className:"h-12 w-12 text-muted-foreground"}),e.jsx("p",{className:"text-muted-foreground",children:"无法加载配置"}),e.jsxs(N,{onClick:r,variant:"outline",children:[e.jsx(ti,{className:"h-4 w-4 mr-2"}),"返回"]})]});const X=Object.values(d.sections).sort((D,te)=>D.order-te.order),w=x.plugin?.enabled!==!1;return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(N,{variant:"ghost",size:"icon",onClick:r,children:e.jsx(ti,{className:"h-5 w-5"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:d.plugin_info.name||n.manifest.name}),e.jsxs("div",{className:"flex items-center gap-2 mt-1",children:[e.jsx(Xe,{variant:w?"default":"secondary",children:w?"已启用":"已禁用"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["v",d.plugin_info.version||n.manifest.version]})]})]})]}),e.jsxs("div",{className:"flex gap-2 ml-10 sm:ml-0",children:[e.jsxs(N,{variant:"outline",size:"sm",onClick:B,children:[e.jsx(Nr,{className:"h-4 w-4 mr-2"}),w?"禁用":"启用"]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>U(!0),children:[e.jsx(Wc,{className:"h-4 w-4 mr-2"}),"重置"]}),e.jsxs(N,{size:"sm",onClick:V,disabled:!T||k,children:[k?e.jsx(vt,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(br,{className:"h-4 w-4 mr-2"}),"保存"]})]})]}),T&&e.jsx(Be,{className:"border-orange-200 bg-orange-50 dark:bg-orange-950/20 dark:border-orange-900",children:e.jsx(bs,{className:"py-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Xt,{className:"h-4 w-4 text-orange-600"}),e.jsx("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:"有未保存的更改"})]})})}),d.layout.type==="tabs"&&d.layout.tabs.length>0?e.jsxs(Kt,{defaultValue:d.layout.tabs[0]?.id,children:[e.jsx(Rt,{children:d.layout.tabs.map(D=>e.jsxs(He,{value:D.id,children:[D.title,D.badge&&e.jsx(Xe,{variant:"secondary",className:"ml-2 text-xs",children:D.badge})]},D.id))}),d.layout.tabs.map(D=>e.jsx(We,{value:D.id,className:"space-y-4 mt-4",children:D.sections.map(te=>{const xe=d.sections[te];return xe?e.jsx(jp,{section:xe,config:x,onChange:ee},te):null})},D.id))]}):e.jsx("div",{className:"space-y-4",children:X.map(D=>e.jsx(jp,{section:D,config:x,onChange:ee},D.name))}),e.jsx(Os,{open:K,onOpenChange:U,children:e.jsxs(Es,{children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"确认重置配置"}),e.jsx($s,{children:"这将删除当前配置文件,下次加载插件时将使用默认配置。此操作不可撤销。"})]}),e.jsxs(Is,{children:[e.jsx(N,{variant:"outline",onClick:()=>U(!1),children:"取消"}),e.jsx(N,{variant:"destructive",onClick:E,children:"确认重置"})]})]})})]})}function z2(){const{toast:n}=Bs(),[r,c]=u.useState([]),[d,h]=u.useState(!0),[x,f]=u.useState(""),[j,g]=u.useState(null),_=async()=>{h(!0);try{const T=await cr();c(T)}catch(T){n({title:"加载插件列表失败",description:T instanceof Error?T.message:"未知错误",variant:"destructive"})}finally{h(!1)}};u.useEffect(()=>{_()},[]);const v=r.filter(T=>{const L=x.toLowerCase();return T.id.toLowerCase().includes(L)||T.manifest.name.toLowerCase().includes(L)||T.manifest.description?.toLowerCase().includes(L)}),k=r.length,z=0;return j?e.jsx(es,{className:"h-full",children:e.jsx("div",{className:"p-4 sm:p-6",children:e.jsx(E2,{plugin:j,onBack:()=>g(null)})})}):e.jsx(es,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理和配置已安装的插件"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:_,children:[e.jsx(ft,{className:`h-4 w-4 mr-2 ${d?"animate-spin":""}`}),"刷新"]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-3",children:[e.jsxs(Be,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"已安装插件"}),e.jsx(rn,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsx("div",{className:"text-2xl font-bold",children:r.length}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:d?"正在加载...":"个插件"})]})]}),e.jsxs(Be,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"已启用"}),e.jsx(xa,{className:"h-4 w-4 text-green-600"})]}),e.jsxs(bs,{children:[e.jsx("div",{className:"text-2xl font-bold",children:k}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"运行中的插件"})]})]}),e.jsxs(Be,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"已禁用"}),e.jsx(Aa,{className:"h-4 w-4 text-orange-600"})]}),e.jsxs(bs,{children:[e.jsx("div",{className:"text-2xl font-bold",children:z}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"未激活的插件"})]})]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(St,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索插件...",value:x,onChange:T=>f(T.target.value),className:"pl-9"})]}),e.jsxs(Be,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"已安装的插件"}),e.jsx(Zs,{children:"点击插件查看和编辑配置"})]}),e.jsx(bs,{children:d?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(vt,{className:"h-8 w-8 animate-spin text-muted-foreground"})}):v.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 space-y-4",children:[e.jsx(rn,{className:"h-16 w-16 text-muted-foreground/50"}),e.jsxs("div",{className:"text-center space-y-2",children:[e.jsx("p",{className:"text-lg font-medium text-muted-foreground",children:x?"没有找到匹配的插件":"暂无已安装的插件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:x?"尝试其他搜索关键词":"前往插件市场安装插件"})]})]}):e.jsx("div",{className:"space-y-2",children:v.map(T=>e.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg border hover:bg-muted/50 cursor-pointer transition-colors",onClick:()=>g(T),children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[e.jsx("div",{className:"h-10 w-10 rounded-lg bg-primary/10 flex items-center justify-center flex-shrink-0",children:e.jsx(rn,{className:"h-5 w-5 text-primary"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-medium truncate",children:T.manifest.name}),e.jsxs(Xe,{variant:"secondary",className:"text-xs flex-shrink-0",children:["v",T.manifest.version]})]}),e.jsx("p",{className:"text-sm text-muted-foreground truncate",children:T.manifest.description||"暂无描述"})]})]}),e.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[e.jsx(N,{variant:"ghost",size:"sm",children:e.jsx(Rl,{className:"h-4 w-4"})}),e.jsx(il,{className:"h-4 w-4 text-muted-foreground"})]})]},T.id))})})]})]})})}function M2(){const n=It(),{toast:r}=Bs(),[c,d]=u.useState([]),[h,x]=u.useState(!0),[f,j]=u.useState(null),[g,_]=u.useState(null),[v,k]=u.useState(!1),[z,T]=u.useState(!1),[L,K]=u.useState({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),U=u.useCallback(async()=>{try{x(!0),j(null);const w=localStorage.getItem("access-token"),D=await fetch("/api/webui/plugins/mirrors",{headers:{Authorization:`Bearer ${w}`}});if(!D.ok)throw new Error("获取镜像源列表失败");const te=await D.json();d(te.mirrors||[])}catch(w){const D=w instanceof Error?w.message:"加载镜像源失败";j(D),r({title:"加载失败",description:D,variant:"destructive"})}finally{x(!1)}},[r]);u.useEffect(()=>{U()},[U]);const R=async()=>{try{const w=localStorage.getItem("access-token"),D=await fetch("/api/webui/plugins/mirrors",{method:"POST",headers:{Authorization:`Bearer ${w}`,"Content-Type":"application/json"},body:JSON.stringify(L)});if(!D.ok){const te=await D.json();throw new Error(te.detail||"添加镜像源失败")}r({title:"添加成功",description:"镜像源已添加"}),k(!1),K({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),U()}catch(w){r({title:"添加失败",description:w instanceof Error?w.message:"未知错误",variant:"destructive"})}},ee=async()=>{if(g)try{const w=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${g.id}`,{method:"PUT",headers:{Authorization:`Bearer ${w}`,"Content-Type":"application/json"},body:JSON.stringify({name:L.name,raw_prefix:L.raw_prefix,clone_prefix:L.clone_prefix,enabled:L.enabled,priority:L.priority})})).ok)throw new Error("更新镜像源失败");r({title:"更新成功",description:"镜像源已更新"}),T(!1),_(null),U()}catch(w){r({title:"更新失败",description:w instanceof Error?w.message:"未知错误",variant:"destructive"})}},V=async w=>{if(confirm("确定要删除这个镜像源吗?"))try{const D=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${w}`,{method:"DELETE",headers:{Authorization:`Bearer ${D}`}})).ok)throw new Error("删除镜像源失败");r({title:"删除成功",description:"镜像源已删除"}),U()}catch(D){r({title:"删除失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}},E=async w=>{try{const D=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${w.id}`,{method:"PUT",headers:{Authorization:`Bearer ${D}`,"Content-Type":"application/json"},body:JSON.stringify({enabled:!w.enabled})})).ok)throw new Error("更新状态失败");U()}catch(D){r({title:"更新失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}},B=w=>{_(w),K({id:w.id,name:w.name,raw_prefix:w.raw_prefix,clone_prefix:w.clone_prefix,enabled:w.enabled,priority:w.priority}),T(!0)},X=async(w,D)=>{const te=D==="up"?w.priority-1:w.priority+1;if(!(te<1))try{const xe=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${w.id}`,{method:"PUT",headers:{Authorization:`Bearer ${xe}`,"Content-Type":"application/json"},body:JSON.stringify({priority:te})})).ok)throw new Error("更新优先级失败");U()}catch(xe){r({title:"更新失败",description:xe instanceof Error?xe.message:"未知错误",variant:"destructive"})}};return e.jsx(es,{className:"h-full",children:e.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(N,{variant:"ghost",size:"icon",onClick:()=>n({to:"/plugins"}),children:e.jsx(ti,{className:"h-5 w-5"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"镜像源配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理 Git 克隆和文件下载的镜像源"})]})]}),e.jsxs(N,{onClick:()=>k(!0),children:[e.jsx(gt,{className:"h-4 w-4 mr-2"}),"添加镜像源"]})]}),h?e.jsx(Be,{className:"p-6",children:e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(vt,{className:"h-8 w-8 animate-spin text-primary"})})}):f?e.jsx(Be,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(ya,{className:"h-12 w-12 text-destructive mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:f}),e.jsx(N,{onClick:U,children:"重新加载"})]})}):e.jsxs(Be,{children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(ii,{children:[e.jsx(ri,{children:e.jsxs(pt,{children:[e.jsx(ls,{children:"状态"}),e.jsx(ls,{children:"名称"}),e.jsx(ls,{children:"ID"}),e.jsx(ls,{children:"优先级"}),e.jsx(ls,{className:"text-right",children:"操作"})]})}),e.jsx(ci,{children:c.map(w=>e.jsxs(pt,{children:[e.jsx(Ye,{children:e.jsx(qe,{checked:w.enabled,onCheckedChange:()=>E(w)})}),e.jsx(Ye,{children:e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:w.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1",children:["Raw: ",w.raw_prefix]})]})}),e.jsx(Ye,{children:e.jsx(Xe,{variant:"outline",children:w.id})}),e.jsx(Ye,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-mono",children:w.priority}),e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx(N,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>X(w,"up"),disabled:w.priority===1,children:e.jsx(fr,{className:"h-3 w-3"})}),e.jsx(N,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>X(w,"down"),children:e.jsx(Ll,{className:"h-3 w-3"})})]})]})}),e.jsx(Ye,{className:"text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-2",children:[e.jsx(N,{variant:"ghost",size:"icon",onClick:()=>B(w),children:e.jsx(nn,{className:"h-4 w-4"})}),e.jsx(N,{variant:"ghost",size:"icon",onClick:()=>V(w.id),children:e.jsx(ns,{className:"h-4 w-4 text-destructive"})})]})})]},w.id))})]})}),e.jsx("div",{className:"md:hidden p-4 space-y-4",children:c.map(w=>e.jsx(Be,{className:"p-4",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-semibold",children:w.name}),w.enabled&&e.jsx(Xe,{variant:"default",className:"text-xs",children:"启用"})]}),e.jsx(Xe,{variant:"outline",className:"mt-1 text-xs",children:w.id})]}),e.jsx(qe,{checked:w.enabled,onCheckedChange:()=>E(w)})]}),e.jsxs("div",{className:"text-sm space-y-1",children:[e.jsxs("div",{className:"text-muted-foreground",children:[e.jsx("span",{className:"font-medium",children:"Raw: "}),e.jsx("span",{className:"break-all",children:w.raw_prefix})]}),e.jsxs("div",{className:"text-muted-foreground",children:[e.jsx("span",{className:"font-medium",children:"优先级: "}),e.jsx("span",{className:"font-mono",children:w.priority})]})]}),e.jsxs("div",{className:"flex items-center gap-2 pt-2 border-t",children:[e.jsxs(N,{variant:"outline",size:"sm",className:"flex-1",onClick:()=>B(w),children:[e.jsx(nn,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>X(w,"up"),disabled:w.priority===1,children:e.jsx(fr,{className:"h-4 w-4"})}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>X(w,"down"),children:e.jsx(Ll,{className:"h-4 w-4"})}),e.jsx(N,{variant:"destructive",size:"sm",onClick:()=>V(w.id),children:e.jsx(ns,{className:"h-4 w-4"})})]})]})},w.id))})]}),e.jsx(Os,{open:v,onOpenChange:k,children:e.jsxs(Es,{className:"max-w-lg",children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"添加镜像源"}),e.jsx($s,{children:"添加新的 Git 镜像源配置"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-id",children:"镜像源 ID *"}),e.jsx(ce,{id:"add-id",placeholder:"例如: my-mirror",value:L.id,onChange:w=>K({...L,id:w.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-name",children:"名称 *"}),e.jsx(ce,{id:"add-name",placeholder:"例如: 我的镜像源",value:L.name,onChange:w=>K({...L,name:w.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-raw",children:"Raw 文件前缀 *"}),e.jsx(ce,{id:"add-raw",placeholder:"https://example.com/raw",value:L.raw_prefix,onChange:w=>K({...L,raw_prefix:w.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-clone",children:"克隆前缀 *"}),e.jsx(ce,{id:"add-clone",placeholder:"https://example.com/clone",value:L.clone_prefix,onChange:w=>K({...L,clone_prefix:w.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-priority",children:"优先级"}),e.jsx(ce,{id:"add-priority",type:"number",min:"1",value:L.priority,onChange:w=>K({...L,priority:parseInt(w.target.value)||1})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"add-enabled",checked:L.enabled,onCheckedChange:w=>K({...L,enabled:w})}),e.jsx(b,{htmlFor:"add-enabled",children:"启用此镜像源"})]})]}),e.jsxs(Is,{children:[e.jsx(N,{variant:"outline",onClick:()=>k(!1),children:"取消"}),e.jsx(N,{onClick:R,children:"添加"})]})]})}),e.jsx(Os,{open:z,onOpenChange:T,children:e.jsxs(Es,{className:"max-w-lg",children:[e.jsxs(zs,{children:[e.jsx(Ms,{children:"编辑镜像源"}),e.jsx($s,{children:"修改镜像源配置"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"镜像源 ID"}),e.jsx(ce,{value:L.id,disabled:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit-name",children:"名称 *"}),e.jsx(ce,{id:"edit-name",value:L.name,onChange:w=>K({...L,name:w.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit-raw",children:"Raw 文件前缀 *"}),e.jsx(ce,{id:"edit-raw",value:L.raw_prefix,onChange:w=>K({...L,raw_prefix:w.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit-clone",children:"克隆前缀 *"}),e.jsx(ce,{id:"edit-clone",value:L.clone_prefix,onChange:w=>K({...L,clone_prefix:w.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit-priority",children:"优先级"}),e.jsx(ce,{id:"edit-priority",type:"number",min:"1",value:L.priority,onChange:w=>K({...L,priority:parseInt(w.target.value)||1})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(qe,{id:"edit-enabled",checked:L.enabled,onCheckedChange:w=>K({...L,enabled:w})}),e.jsx(b,{htmlFor:"edit-enabled",children:"启用此镜像源"})]})]}),e.jsxs(Is,{children:[e.jsx(N,{variant:"outline",onClick:()=>T(!1),children:"取消"}),e.jsx(N,{onClick:ee,children:"保存"})]})]})})]})})}const Jc=u.forwardRef(({className:n,...r},c)=>e.jsx(Lp,{ref:c,className:$("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",n),...r}));Jc.displayName=Lp.displayName;const A2=u.forwardRef(({className:n,...r},c)=>e.jsx(Up,{ref:c,className:$("aspect-square h-full w-full",n),...r}));A2.displayName=Up.displayName;const Pc=u.forwardRef(({className:n,...r},c)=>e.jsx(Bp,{ref:c,className:$("flex h-full w-full items-center justify-center rounded-full bg-muted",n),...r}));Pc.displayName=Bp.displayName;function D2(){return"webui_"+Math.random().toString(36).substr(2,9)+"_"+Date.now().toString(36)}function O2(){const n="maibot_webui_user_id";let r=localStorage.getItem(n);return r||(r=D2(),localStorage.setItem(n,r)),r}function R2(){return localStorage.getItem("maibot_webui_user_name")||"WebUI用户"}function L2(n){localStorage.setItem("maibot_webui_user_name",n)}function U2(){const[n,r]=u.useState([]),[c,d]=u.useState(""),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[g,_]=u.useState(!1),[v,k]=u.useState(!0),[z,T]=u.useState(R2()),[L,K]=u.useState(!1),[U,R]=u.useState(""),[ee,V]=u.useState({}),E=u.useRef(O2()),B=u.useRef(null),X=u.useRef(null),w=u.useRef(null),D=u.useRef(0),te=u.useRef(new Set),{toast:xe}=Bs(),be=Q=>(D.current+=1,`${Q}-${Date.now()}-${D.current}-${Math.random().toString(36).substr(2,9)}`),ye=u.useCallback(()=>{X.current?.scrollIntoView({behavior:"smooth"})},[]);u.useEffect(()=>{ye()},[n,ye]);const ve=u.useCallback(async()=>{k(!0);try{const Q=`/api/chat/history?user_id=${E.current}&limit=50`;console.log("[Chat] 正在加载历史消息:",Q);const oe=await fetch(Q);if(console.log("[Chat] 历史消息响应状态:",oe.status,oe.statusText),console.log("[Chat] 响应 Content-Type:",oe.headers.get("content-type")),oe.ok){const ge=await oe.text();console.log("[Chat] 响应内容前100字符:",ge.substring(0,100));try{const le=JSON.parse(ge);if(console.log("[Chat] 解析后的数据:",le),le.messages&&le.messages.length>0){const O=le.messages.map(F=>({id:F.id,type:F.type,content:F.content,timestamp:F.timestamp,sender:{name:F.sender_name||(F.is_bot?"麦麦":"WebUI用户"),user_id:F.user_id,is_bot:F.is_bot}}));r(O),console.log("[Chat] 已加载历史消息数量:",O.length),O.forEach(F=>{if(F.type==="bot"){const A=`bot-${F.content}-${Math.floor(F.timestamp*1e3)}`;te.current.add(A)}})}else console.log("[Chat] 没有历史消息")}catch(le){console.error("[Chat] JSON 解析失败:",le),console.error("[Chat] 原始响应内容:",ge)}}else{console.error("[Chat] 响应失败:",oe.status);const ge=await oe.text();console.error("[Chat] 错误响应内容:",ge.substring(0,200))}}catch(Q){console.error("[Chat] 加载历史消息失败:",Q)}finally{k(!1)}},[]),pe=u.useCallback(()=>{if(B.current?.readyState===WebSocket.OPEN||B.current?.readyState===WebSocket.CONNECTING){console.log("WebSocket 已存在,跳过连接");return}j(!0);const oe=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/api/chat/ws?user_id=${encodeURIComponent(E.current)}&user_name=${encodeURIComponent(z)}`;console.log("正在连接 WebSocket:",oe);try{const ge=new WebSocket(oe);B.current=ge,ge.onopen=()=>{x(!0),j(!1),console.log("WebSocket 已连接")},ge.onmessage=le=>{try{const O=JSON.parse(le.data);switch(O.type){case"session_info":V({session_id:O.session_id,user_id:O.user_id,user_name:O.user_name,bot_name:O.bot_name});break;case"system":r(F=>[...F,{id:be("sys"),type:"system",content:O.content||"",timestamp:O.timestamp||Date.now()/1e3}]);break;case"user_message":r(F=>[...F,{id:O.message_id||be("user"),type:"user",content:O.content||"",timestamp:O.timestamp||Date.now()/1e3,sender:O.sender}]);break;case"bot_message":{_(!1);const F=`bot-${O.content}-${Math.floor((O.timestamp||0)*1e3)}`;if(te.current.has(F)){console.log("跳过重复的机器人消息");break}if(te.current.add(F),te.current.size>100){const A=te.current.values().next().value;A&&te.current.delete(A)}r(A=>[...A,{id:be("bot"),type:"bot",content:O.content||"",timestamp:O.timestamp||Date.now()/1e3,sender:O.sender}]);break}case"typing":_(O.is_typing||!1);break;case"error":r(F=>[...F,{id:be("error"),type:"error",content:O.content||"发生错误",timestamp:O.timestamp||Date.now()/1e3}]),xe({title:"错误",description:O.content,variant:"destructive"});break;case"pong":break;default:console.log("未知消息类型:",O.type)}}catch(O){console.error("解析消息失败:",O)}},ge.onclose=()=>{x(!1),j(!1),B.current=null,console.log("WebSocket 已断开"),w.current&&clearTimeout(w.current),w.current=window.setTimeout(()=>{Ne.current||pe()},5e3)},ge.onerror=le=>{console.error("WebSocket 错误:",le),j(!1)}}catch(ge){console.error("创建 WebSocket 失败:",ge),j(!1)}},[xe,z]),Ne=u.useRef(!1);u.useEffect(()=>{Ne.current=!1,ve();const Q=setTimeout(()=>{Ne.current||pe()},100),oe=setInterval(()=>{B.current?.readyState===WebSocket.OPEN&&B.current.send(JSON.stringify({type:"ping"}))},3e4);return()=>{Ne.current=!0,clearTimeout(Q),clearInterval(oe),w.current&&(clearTimeout(w.current),w.current=null),B.current&&(B.current.close(),B.current=null)}},[pe,ve]);const y=u.useCallback(()=>{!c.trim()||!B.current||B.current.readyState!==WebSocket.OPEN||(B.current.send(JSON.stringify({type:"message",content:c.trim(),user_name:z})),d(""))},[c,z]),q=Q=>{Q.key==="Enter"&&!Q.shiftKey&&(Q.preventDefault(),y())},H=()=>{R(z),K(!0)},ne=()=>{const Q=U.trim()||"WebUI用户";T(Q),L2(Q),K(!1),B.current?.readyState===WebSocket.OPEN&&B.current.send(JSON.stringify({type:"update_nickname",user_name:Q}))},S=()=>{R(""),K(!1)},me=Q=>new Date(Q*1e3).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"}),he=()=>{B.current&&B.current.close(),pe()};return e.jsxs("div",{className:"h-full flex flex-col",children:[e.jsx("div",{className:"shrink-0 border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:e.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 sm:gap-3 min-w-0",children:[e.jsx(Jc,{className:"h-8 w-8 sm:h-10 sm:w-10 shrink-0",children:e.jsx(Pc,{className:"bg-primary/10 text-primary",children:e.jsx(ir,{className:"h-4 w-4 sm:h-5 sm:w-5"})})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h1",{className:"text-base sm:text-lg font-semibold truncate",children:ee.bot_name||"麦麦"}),e.jsx("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:h?e.jsxs(e.Fragment,{children:[e.jsx(QN,{className:"h-3 w-3 text-green-500"}),e.jsx("span",{className:"text-green-600 dark:text-green-400",children:"已连接"})]}):f?e.jsxs(e.Fragment,{children:[e.jsx(vt,{className:"h-3 w-3 animate-spin"}),e.jsx("span",{children:"连接中..."})]}):e.jsxs(e.Fragment,{children:[e.jsx($N,{className:"h-3 w-3 text-red-500"}),e.jsx("span",{className:"text-red-600 dark:text-red-400",children:"未连接"})]})})]})]}),e.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[v&&e.jsx(vt,{className:"h-4 w-4 animate-spin text-muted-foreground"}),e.jsx(N,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:he,disabled:f,title:"重新连接",children:e.jsx(ft,{className:$("h-4 w-4",f&&"animate-spin")})})]})]}),e.jsxs("div",{className:"hidden sm:flex items-center gap-2 mt-2 text-sm text-muted-foreground",children:[e.jsx(to,{className:"h-3 w-3"}),e.jsx("span",{children:"当前身份:"}),L?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{value:U,onChange:Q=>R(Q.target.value),onKeyDown:Q=>{Q.key==="Enter"&&ne(),Q.key==="Escape"&&S()},className:"h-7 w-32",placeholder:"输入昵称",autoFocus:!0}),e.jsx(N,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:ne,children:"保存"}),e.jsx(N,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:S,children:"取消"})]}):e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"font-medium text-foreground",children:z}),e.jsx(N,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0",onClick:H,title:"修改昵称",children:e.jsx(YN,{className:"h-3 w-3"})})]})]})]})}),e.jsx("div",{className:"flex-1 overflow-hidden",children:e.jsx(es,{className:"h-full",children:e.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto space-y-3 sm:space-y-4",children:[n.length===0&&!v&&e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-muted-foreground",children:[e.jsx(ir,{className:"h-12 w-12 mb-4 opacity-50"}),e.jsxs("p",{className:"text-sm",children:["开始与 ",ee.bot_name||"麦麦"," 对话吧!"]})]}),n.map(Q=>e.jsxs("div",{className:$("flex gap-2 sm:gap-3",Q.type==="user"&&"flex-row-reverse",Q.type==="system"&&"justify-center",Q.type==="error"&&"justify-center"),children:[Q.type==="system"&&e.jsx("div",{className:"text-xs text-muted-foreground bg-muted/50 px-3 py-1 rounded-full max-w-[90%]",children:Q.content}),Q.type==="error"&&e.jsx("div",{className:"text-xs text-red-600 dark:text-red-400 bg-red-100 dark:bg-red-900/30 px-3 py-1 rounded-full max-w-[90%]",children:Q.content}),(Q.type==="user"||Q.type==="bot")&&e.jsxs(e.Fragment,{children:[e.jsx(Jc,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:e.jsx(Pc,{className:$("text-xs",Q.type==="bot"?"bg-primary/10 text-primary":"bg-secondary text-secondary-foreground"),children:Q.type==="bot"?e.jsx(ir,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}):e.jsx(to,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),e.jsxs("div",{className:$("flex flex-col gap-1 max-w-[75%] sm:max-w-[70%]",Q.type==="user"&&"items-end"),children:[e.jsxs("div",{className:"flex items-center gap-2 text-[10px] sm:text-xs text-muted-foreground",children:[e.jsx("span",{className:"hidden sm:inline",children:Q.sender?.name||(Q.type==="bot"?ee.bot_name:z)}),e.jsx("span",{children:me(Q.timestamp)})]}),e.jsx("div",{className:$("rounded-2xl px-3 py-2 text-sm whitespace-pre-wrap break-words",Q.type==="bot"?"bg-muted rounded-tl-sm":"bg-primary text-primary-foreground rounded-tr-sm"),children:Q.content})]})]})]},Q.id)),g&&e.jsxs("div",{className:"flex gap-2 sm:gap-3",children:[e.jsx(Jc,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:e.jsx(Pc,{className:"bg-primary/10 text-primary",children:e.jsx(ir,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),e.jsx("div",{className:"bg-muted rounded-2xl rounded-tl-sm px-4 py-3",children:e.jsxs("div",{className:"flex gap-1",children:[e.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"0ms"}}),e.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"150ms"}}),e.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"300ms"}})]})})]}),e.jsx("div",{ref:X})]})})}),e.jsx("div",{className:"shrink-0 border-t bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:e.jsx("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{value:c,onChange:Q=>d(Q.target.value),onKeyDown:q,placeholder:h?"输入消息...":"等待连接...",disabled:!h,className:"flex-1 h-10 sm:h-10"}),e.jsx(N,{onClick:y,disabled:!h||!c.trim(),size:"icon",className:"h-10 w-10 shrink-0",children:e.jsx(XN,{className:"h-4 w-4"})})]})})})]})}const B2=ai("pointer-events-none inline-flex select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono font-medium opacity-100",{variants:{size:{sm:"h-5 text-[10px]",default:"h-6 text-xs",lg:"h-7 text-sm"}},defaultVariants:{size:"default"}}),Yg=u.forwardRef(({className:n,size:r,abbrTitle:c,children:d,...h},x)=>e.jsx("kbd",{className:$(B2({size:r,className:n})),ref:x,...h,children:c?e.jsx("abbr",{title:c,children:d}):d}));Yg.displayName="Kbd";const H2=[{icon:xr,title:"首页",description:"查看仪表板概览",path:"/",category:"概览"},{icon:Ma,title:"麦麦主程序配置",description:"配置麦麦的核心设置",path:"/config/bot",category:"配置"},{icon:vg,title:"麦麦模型提供商配置",description:"配置模型提供商",path:"/config/modelProvider",category:"配置"},{icon:yg,title:"麦麦模型配置",description:"配置模型参数",path:"/config/model",category:"配置"},{icon:Qu,title:"表情包管理",description:"管理麦麦的表情包",path:"/resource/emoji",category:"资源"},{icon:si,title:"表达方式管理",description:"管理麦麦的表达方式",path:"/resource/expression",category:"资源"},{icon:Ng,title:"人物信息管理",description:"管理人物信息",path:"/resource/person",category:"资源"},{icon:KN,title:"统计信息",description:"查看使用统计",path:"/statistics",category:"监控"},{icon:rn,title:"插件市场",description:"浏览和安装插件",path:"/plugins",category:"扩展"},{icon:ao,title:"日志查看器",description:"查看系统日志",path:"/logs",category:"监控"},{icon:Rl,title:"系统设置",description:"配置系统参数",path:"/settings",category:"系统"}];function q2({open:n,onOpenChange:r}){const[c,d]=u.useState(""),[h,x]=u.useState(0),f=It(),j=H2.filter(v=>v.title.toLowerCase().includes(c.toLowerCase())||v.description.toLowerCase().includes(c.toLowerCase())||v.category.toLowerCase().includes(c.toLowerCase()));u.useEffect(()=>{n&&(d(""),x(0))},[n]);const g=u.useCallback(v=>{f({to:v}),r(!1)},[f,r]),_=u.useCallback(v=>{v.key==="ArrowDown"?(v.preventDefault(),x(k=>(k+1)%j.length)):v.key==="ArrowUp"?(v.preventDefault(),x(k=>(k-1+j.length)%j.length)):v.key==="Enter"&&j[h]&&(v.preventDefault(),g(j[h].path))},[j,h,g]);return e.jsx(Os,{open:n,onOpenChange:r,children:e.jsxs(Es,{className:"max-w-2xl p-0 gap-0",children:[e.jsxs(zs,{className:"px-4 pt-4 pb-0",children:[e.jsx(Ms,{className:"sr-only",children:"搜索"}),e.jsxs("div",{className:"relative",children:[e.jsx(St,{className:"absolute left-3 top-1/2 h-5 w-5 -translate-y-1/2 text-muted-foreground"}),e.jsx(ce,{value:c,onChange:v=>{d(v.target.value),x(0)},onKeyDown:_,placeholder:"搜索页面...",className:"h-12 pl-11 text-base border-0 focus-visible:ring-0 shadow-none",autoFocus:!0})]})]}),e.jsx("div",{className:"border-t",children:e.jsx(es,{className:"h-[400px]",children:j.length>0?e.jsx("div",{className:"p-2",children:j.map((v,k)=>{const z=v.icon;return e.jsxs("button",{onClick:()=>g(v.path),onMouseEnter:()=>x(k),className:$("w-full flex items-center gap-3 px-3 py-2.5 rounded-md text-left transition-colors",k===h?"bg-accent text-accent-foreground":"hover:bg-accent/50"),children:[e.jsx(z,{className:"h-5 w-5 flex-shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-sm",children:v.title}),e.jsx("div",{className:"text-xs text-muted-foreground truncate",children:v.description})]}),e.jsx("div",{className:"text-xs text-muted-foreground px-2 py-1 bg-muted rounded",children:v.category})]},v.path)})}):e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[e.jsx(St,{className:"h-12 w-12 text-muted-foreground/50 mb-4"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:c?"未找到匹配的页面":"输入关键词开始搜索"})]})})}),e.jsx("div",{className:"border-t px-4 py-3 flex items-center justify-between text-xs text-muted-foreground",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↑"}),e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↓"}),"导航"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Enter"}),"选择"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Esc"}),"关闭"]})]})})]})})}const G2=Xy,V2=Ky,F2=Zy,Xg=u.forwardRef(({className:n,inset:r,children:c,...d},h)=>e.jsxs(Hp,{ref:h,className:$("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",r&&"pl-8",n),...d,children:[c,e.jsx(il,{className:"ml-auto h-4 w-4"})]}));Xg.displayName=Hp.displayName;const Kg=u.forwardRef(({className:n,...r},c)=>e.jsx(qp,{ref:c,className:$("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]",n),...r}));Kg.displayName=qp.displayName;const Zg=u.forwardRef(({className:n,...r},c)=>e.jsx(Yy,{children:e.jsx(Gp,{ref:c,className:$("z-50 max-h-[--radix-context-menu-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]",n),...r})}));Zg.displayName=Gp.displayName;const va=u.forwardRef(({className:n,inset:r,...c},d)=>e.jsx(Vp,{ref:d,className:$("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",r&&"pl-8",n),...c}));va.displayName=Vp.displayName;const Q2=u.forwardRef(({className:n,children:r,checked:c,...d},h)=>e.jsxs(Fp,{ref:h,className:$("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",n),checked:c,...d,children:[e.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(Qp,{children:e.jsx(ha,{className:"h-4 w-4"})})}),r]}));Q2.displayName=Fp.displayName;const $2=u.forwardRef(({className:n,children:r,...c},d)=>e.jsxs($p,{ref:d,className:$("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",n),...c,children:[e.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(Qp,{children:e.jsx(ZN,{className:"h-2 w-2 fill-current"})})}),r]}));$2.displayName=$p.displayName;const Y2=u.forwardRef(({className:n,inset:r,...c},d)=>e.jsx(Yp,{ref:d,className:$("px-2 py-1.5 text-sm font-semibold text-foreground",r&&"pl-8",n),...c}));Y2.displayName=Yp.displayName;const or=u.forwardRef(({className:n,...r},c)=>e.jsx(Xp,{ref:c,className:$("-mx-1 my-1 h-px bg-border",n),...r}));or.displayName=Xp.displayName;const Jn=({className:n,...r})=>e.jsx("span",{className:$("ml-auto text-xs tracking-widest text-muted-foreground",n),...r});Jn.displayName="ContextMenuShortcut";const X2=gN,K2=jN,Z2=vN,Ig=u.forwardRef(({className:n,sideOffset:r=4,...c},d)=>e.jsx(pN,{children:e.jsx(cg,{ref:d,sideOffset:r,className:$("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",n),...c})}));Ig.displayName=cg.displayName;function I2({children:n}){y0();const[r,c]=u.useState(!0),[d,h]=u.useState(!1),[x,f]=u.useState(!1),{theme:j,setTheme:g}=Yu(),_=py(),v=It();u.useEffect(()=>{const K=U=>{(U.metaKey||U.ctrlKey)&&U.key==="k"&&(U.preventDefault(),f(!0))};return window.addEventListener("keydown",K),()=>window.removeEventListener("keydown",K)},[]);const k=[{title:"概览",items:[{icon:xr,label:"首页",path:"/"}]},{title:"麦麦配置编辑",items:[{icon:Ma,label:"麦麦主程序配置",path:"/config/bot"},{icon:vg,label:"AI模型厂商配置",path:"/config/modelProvider",tourId:"sidebar-model-provider"},{icon:yg,label:"模型管理与分配",path:"/config/model",tourId:"sidebar-model-management"},{icon:Kf,label:"麦麦适配器配置",path:"/config/adapter"}]},{title:"麦麦资源管理",items:[{icon:Qu,label:"表情包管理",path:"/resource/emoji"},{icon:si,label:"表达方式管理",path:"/resource/expression"},{icon:Ng,label:"人物信息管理",path:"/resource/person"},{icon:jg,label:"知识库图谱可视化",path:"/resource/knowledge-graph"}]},{title:"扩展与监控",items:[{icon:rn,label:"插件市场",path:"/plugins"},{icon:Kf,label:"插件配置",path:"/plugin-config"},{icon:ao,label:"日志查看器",path:"/logs"},{icon:si,label:"本地聊天室",path:"/chat"}]},{title:"系统",items:[{icon:Rl,label:"系统设置",path:"/settings"}]}],T=j==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":j,L=()=>{localStorage.removeItem("access-token"),v({to:"/auth"})};return e.jsx(X2,{delayDuration:300,children:e.jsxs("div",{className:"flex h-screen overflow-hidden",children:[e.jsxs("aside",{className:$("fixed inset-y-0 left-0 z-50 flex flex-col border-r bg-card transition-all duration-300 lg:relative lg:z-0","w-64 lg:w-auto",r?"lg:w-64":"lg:w-16",d?"translate-x-0":"-translate-x-full lg:translate-x-0"),children:[e.jsx("div",{className:"flex h-16 items-center border-b px-4",children:e.jsxs("div",{className:$("relative flex items-center justify-center flex-1 transition-all overflow-hidden","lg:flex-1",!r&&"lg:flex-none lg:w-8"),children:[e.jsxs("div",{className:$("flex items-baseline gap-2",!r&&"lg:hidden"),children:[e.jsx("span",{className:"font-bold text-xl text-primary-gradient whitespace-nowrap",children:"MaiBot WebUI"}),e.jsx("span",{className:"text-xs text-primary/60 whitespace-nowrap",children:a0()})]}),!r&&e.jsx("span",{className:"hidden lg:block font-bold text-primary-gradient text-2xl",children:"M"})]})}),e.jsx(es,{className:$("flex-1 overflow-x-hidden",!r&&"lg:w-16"),children:e.jsx("nav",{className:$("p-4",!r&&"lg:p-2 lg:w-16"),children:e.jsx("ul",{className:$("space-y-6",!r&&"lg:space-y-3 lg:w-full"),children:k.map((K,U)=>e.jsxs("li",{children:[e.jsx("div",{className:$("px-3 h-[1.25rem]","mb-2",!r&&"lg:mb-1 lg:invisible"),children:e.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground/60 whitespace-nowrap",children:K.title})}),!r&&U>0&&e.jsx("div",{className:"hidden lg:block mb-2 border-t border-border"}),e.jsx("ul",{className:"space-y-1",children:K.items.map(R=>{const ee=_({to:R.path}),V=R.icon,E=e.jsxs(e.Fragment,{children:[ee&&e.jsx("div",{className:"absolute left-0 top-1/2 h-8 w-1 -translate-y-1/2 rounded-r-full bg-primary transition-opacity duration-300"}),e.jsxs("div",{className:$("flex items-center transition-all duration-300",r?"gap-3":"gap-3 lg:gap-0"),children:[e.jsx(V,{className:$("h-5 w-5 flex-shrink-0",ee&&"text-primary"),strokeWidth:2,fill:"none"}),e.jsx("span",{className:$("text-sm font-medium whitespace-nowrap transition-all duration-300",ee&&"font-semibold",r?"opacity-100 max-w-[200px]":"opacity-100 max-w-[200px] lg:opacity-0 lg:max-w-0 lg:overflow-hidden"),children:R.label})]})]});return e.jsx("li",{className:"relative",children:e.jsxs(K2,{children:[e.jsx(Z2,{asChild:!0,children:e.jsx(Kc,{to:R.path,"data-tour":R.tourId,className:$("relative flex items-center rounded-lg py-2 transition-all duration-300","hover:bg-accent hover:text-accent-foreground",ee?"bg-accent text-foreground":"text-muted-foreground hover:text-foreground",r?"px-3":"px-3 lg:px-0 lg:justify-center lg:w-12 lg:mx-auto"),onClick:()=>h(!1),children:E})}),!r&&e.jsx(Ig,{side:"right",className:"hidden lg:block",children:e.jsx("p",{children:R.label})})]})},R.path)})})]},K.title))})})})]}),d&&e.jsx("div",{className:"fixed inset-0 z-40 bg-black/50 lg:hidden",onClick:()=>h(!1)}),e.jsxs("div",{className:"flex flex-1 flex-col overflow-hidden",children:[e.jsxs("header",{className:"flex h-16 items-center justify-between border-b bg-card/80 backdrop-blur-md px-4 sticky top-0 z-10",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>h(!d),className:"rounded-lg p-2 hover:bg-accent lg:hidden",children:e.jsx(IN,{className:"h-5 w-5"})}),e.jsx("button",{onClick:()=>c(!r),className:"hidden rounded-lg p-2 hover:bg-accent lg:block",title:r?"收起侧边栏":"展开侧边栏",children:e.jsx(cn,{className:$("h-5 w-5 transition-transform",!r&&"rotate-180")})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:()=>f(!0),className:"relative hidden md:flex items-center w-64 h-9 pl-9 pr-16 bg-background/50 border rounded-md hover:bg-accent/50 transition-colors text-left",children:[e.jsx(St,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"搜索..."}),e.jsxs(Yg,{size:"sm",className:"absolute right-2 top-1/2 -translate-y-1/2",children:[e.jsx("span",{className:"text-xs",children:"⌘"}),"K"]})]}),e.jsx(q2,{open:x,onOpenChange:f}),e.jsxs(N,{variant:"ghost",size:"sm",onClick:()=>window.open("https://docs.mai-mai.org","_blank"),className:"gap-2",title:"查看麦麦文档",children:[e.jsx(JN,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:"麦麦文档"})]}),e.jsx("button",{onClick:K=>{Pb(T==="dark"?"light":"dark",g,K)},className:"rounded-lg p-2 hover:bg-accent",title:T==="dark"?"切换到浅色模式":"切换到深色模式",children:T==="dark"?e.jsx(Ou,{className:"h-5 w-5"}):e.jsx(Ru,{className:"h-5 w-5"})}),e.jsx("div",{className:"h-6 w-px bg-border"}),e.jsxs(N,{variant:"ghost",size:"sm",onClick:L,className:"gap-2",title:"登出系统",children:[e.jsx(Zf,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:"登出"})]})]})]}),e.jsxs(G2,{children:[e.jsx(V2,{asChild:!0,children:e.jsx("main",{className:"flex-1 overflow-hidden bg-background",children:n})}),e.jsxs(Zg,{className:"w-64",children:[e.jsxs(va,{onClick:()=>v({to:"/"}),children:[e.jsx(xr,{className:"mr-2 h-4 w-4"}),"首页"]}),e.jsxs(va,{onClick:()=>v({to:"/settings"}),children:[e.jsx(Rl,{className:"mr-2 h-4 w-4"}),"系统设置"]}),e.jsxs(va,{onClick:()=>v({to:"/logs"}),children:[e.jsx(ao,{className:"mr-2 h-4 w-4"}),"日志查看器"]}),e.jsx(or,{}),e.jsxs(F2,{children:[e.jsxs(Xg,{children:[e.jsx(fg,{className:"mr-2 h-4 w-4"}),"切换主题"]}),e.jsxs(Kg,{className:"w-48",children:[e.jsxs(va,{onClick:()=>g("light"),disabled:j==="light",children:[e.jsx(Ou,{className:"mr-2 h-4 w-4"}),"浅色",j==="light"&&e.jsx(Jn,{children:"✓"})]}),e.jsxs(va,{onClick:()=>g("dark"),disabled:j==="dark",children:[e.jsx(Ru,{className:"mr-2 h-4 w-4"}),"深色",j==="dark"&&e.jsx(Jn,{children:"✓"})]}),e.jsxs(va,{onClick:()=>g("system"),disabled:j==="system",children:[e.jsx(Rl,{className:"mr-2 h-4 w-4"}),"跟随系统",j==="system"&&e.jsx(Jn,{children:"✓"})]})]})]}),e.jsx(or,{}),e.jsxs(va,{onClick:()=>window.location.reload(),children:[e.jsx(PN,{className:"mr-2 h-4 w-4"}),"刷新页面",e.jsx(Jn,{children:"⌘R"})]}),e.jsxs(va,{onClick:()=>f(!0),children:[e.jsx(St,{className:"mr-2 h-4 w-4"}),"搜索",e.jsx(Jn,{children:"⌘K"})]}),e.jsx(or,{}),e.jsxs(va,{onClick:()=>window.open("https://docs.mai-mai.org","_blank"),children:[e.jsx(dr,{className:"mr-2 h-4 w-4"}),"麦麦文档"]}),e.jsx(or,{}),e.jsxs(va,{onClick:L,className:"text-destructive focus:text-destructive",children:[e.jsx(Zf,{className:"mr-2 h-4 w-4"}),"登出系统"]})]})]})]})]})})}function J2(n){const r=n.split(` -`).slice(1),c=[];for(const d of r){const h=d.trim();if(!h.startsWith("at "))continue;const x=h.match(/at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?$/);x?c.push({functionName:x[1]||"",fileName:x[2],lineNumber:x[3],columnNumber:x[4],raw:h}):c.push({functionName:"",fileName:"",lineNumber:"",columnNumber:"",raw:h})}return c}function P2({error:n,errorInfo:r}){const[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),g=n.stack?J2(n.stack):[],_=async()=>{const v=` -Error: ${n.name} -Message: ${n.message} - -Stack Trace: -${n.stack||"No stack trace available"} - -Component Stack: -${r?.componentStack||"No component stack available"} - -URL: ${window.location.href} -User Agent: ${navigator.userAgent} -Time: ${new Date().toISOString()} - `.trim();try{await navigator.clipboard.writeText(v),j(!0),setTimeout(()=>j(!1),2e3)}catch(k){console.error("Failed to copy:",k)}};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(ua,{variant:"destructive",className:"border-red-500/50 bg-red-500/10",children:[e.jsx(ya,{className:"h-4 w-4"}),e.jsxs(ma,{className:"font-mono text-sm",children:[e.jsxs("span",{className:"font-semibold",children:[n.name,":"]})," ",n.message]})]}),g.length>0&&e.jsxs(Gu,{open:c,onOpenChange:d,children:[e.jsx(Vu,{asChild:!0,children:e.jsxs(N,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[e.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[e.jsx(WN,{className:"h-4 w-4"}),"Stack Trace (",g.length," frames)"]}),c?e.jsx(fr,{className:"h-4 w-4"}):e.jsx(Ll,{className:"h-4 w-4"})]})}),e.jsx(Fu,{children:e.jsx(es,{className:"h-[280px] rounded-md border bg-muted/30",children:e.jsx("div",{className:"p-3 space-y-1",children:g.map((v,k)=>e.jsx("div",{className:"font-mono text-xs p-2 rounded hover:bg-muted/50 transition-colors",children:e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsxs("span",{className:"text-muted-foreground w-6 text-right flex-shrink-0",children:[k+1,"."]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("span",{className:"text-primary font-medium",children:v.functionName}),v.fileName&&e.jsxs("div",{className:"text-muted-foreground mt-0.5 break-all",children:[v.fileName,v.lineNumber&&e.jsxs("span",{className:"text-yellow-600 dark:text-yellow-400",children:[":",v.lineNumber,":",v.columnNumber]})]})]})]})},k))})})})]}),r?.componentStack&&e.jsxs(Gu,{open:h,onOpenChange:x,children:[e.jsx(Vu,{asChild:!0,children:e.jsxs(N,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[e.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[e.jsx(ya,{className:"h-4 w-4"}),"Component Stack"]}),h?e.jsx(fr,{className:"h-4 w-4"}):e.jsx(Ll,{className:"h-4 w-4"})]})}),e.jsx(Fu,{children:e.jsx(es,{className:"h-[200px] rounded-md border bg-muted/30",children:e.jsx("pre",{className:"p-3 font-mono text-xs whitespace-pre-wrap text-muted-foreground",children:r.componentStack})})})]}),e.jsx(N,{variant:"outline",size:"sm",onClick:_,className:"w-full",children:f?e.jsxs(e.Fragment,{children:[e.jsx(ha,{className:"mr-2 h-4 w-4 text-green-500"}),"已复制到剪贴板"]}):e.jsxs(e.Fragment,{children:[e.jsx(so,{className:"mr-2 h-4 w-4"}),"复制错误信息"]})})]})}function Jg({error:n,errorInfo:r}){const c=()=>{window.location.href="/"},d=()=>{window.location.reload()};return e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background p-4",children:e.jsxs(Be,{className:"w-full max-w-2xl shadow-lg",children:[e.jsxs(gs,{className:"text-center pb-2",children:[e.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30 mb-4",children:e.jsx(ya,{className:"h-8 w-8 text-red-600 dark:text-red-400"})}),e.jsx(js,{className:"text-2xl font-bold",children:"页面出现了问题"}),e.jsx(Zs,{className:"text-base mt-2",children:"应用程序遇到了意外错误。您可以尝试刷新页面或返回首页。"})]}),e.jsxs(bs,{className:"space-y-4",children:[e.jsx(P2,{error:n,errorInfo:r}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 pt-2",children:[e.jsxs(N,{onClick:d,className:"flex-1",children:[e.jsx(ft,{className:"mr-2 h-4 w-4"}),"刷新页面"]}),e.jsxs(N,{onClick:c,variant:"outline",className:"flex-1",children:[e.jsx(xr,{className:"mr-2 h-4 w-4"}),"返回首页"]})]}),e.jsx("p",{className:"text-xs text-center text-muted-foreground pt-2",children:"如果问题持续存在,请将错误信息复制并反馈给开发者"})]})]})})}class W2 extends u.Component{constructor(r){super(r),this.state={hasError:!1,error:null,errorInfo:null}}static getDerivedStateFromError(r){return{hasError:!0,error:r}}componentDidCatch(r,c){console.error("ErrorBoundary caught an error:",r,c),this.setState({errorInfo:c})}handleReset=()=>{this.setState({hasError:!1,error:null,errorInfo:null})};render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback:e.jsx(Jg,{error:this.state.error,errorInfo:this.state.errorInfo}):this.props.children}}function Pg({error:n}){return e.jsx(Jg,{error:n,errorInfo:null})}const kr=gy({component:()=>e.jsxs(e.Fragment,{children:[e.jsx(vp,{}),!1]}),beforeLoad:()=>{if(window.location.pathname==="/"&&!Dg())throw vy({to:"/auth"})}}),e_=lt({getParentRoute:()=>kr,path:"/auth",component:N0}),s_=lt({getParentRoute:()=>kr,path:"/setup",component:B0}),Nt=lt({getParentRoute:()=>kr,id:"protected",component:()=>e.jsx(I2,{children:e.jsx(vp,{})}),errorComponent:({error:n})=>e.jsx(Pg,{error:n})}),t_=lt({getParentRoute:()=>Nt,path:"/",component:Ib}),a_=lt({getParentRoute:()=>Nt,path:"/config/bot",component:J0}),l_=lt({getParentRoute:()=>Nt,path:"/config/modelProvider",component:Nw}),n_=lt({getParentRoute:()=>Nt,path:"/config/model",component:Sw}),i_=lt({getParentRoute:()=>Nt,path:"/config/adapter",component:kw}),r_=lt({getParentRoute:()=>Nt,path:"/resource/emoji",component:Kw}),c_=lt({getParentRoute:()=>Nt,path:"/resource/expression",component:i1}),o_=lt({getParentRoute:()=>Nt,path:"/resource/person",component:g1}),d_=lt({getParentRoute:()=>Nt,path:"/resource/knowledge-graph",component:C1}),u_=lt({getParentRoute:()=>Nt,path:"/logs",component:a2}),m_=lt({getParentRoute:()=>Nt,path:"/chat",component:U2}),h_=lt({getParentRoute:()=>Nt,path:"/plugins",component:k2}),x_=lt({getParentRoute:()=>Nt,path:"/plugin-config",component:z2}),f_=lt({getParentRoute:()=>Nt,path:"/plugin-mirrors",component:M2}),p_=lt({getParentRoute:()=>Nt,path:"/settings",component:h0}),g_=lt({getParentRoute:()=>kr,path:"*",component:Og}),j_=kr.addChildren([e_,s_,Nt.addChildren([t_,a_,l_,n_,i_,r_,c_,o_,d_,h_,x_,f_,u_,m_,p_]),g_]),v_=jy({routeTree:j_,defaultNotFoundComponent:Og,defaultErrorComponent:({error:n})=>e.jsx(Pg,{error:n})});function y_({children:n,defaultTheme:r="system",storageKey:c="ui-theme",...d}){const[h,x]=u.useState(()=>localStorage.getItem(c)||r);u.useEffect(()=>{const j=window.document.documentElement;if(j.classList.remove("light","dark"),h==="system"){const g=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";j.classList.add(g);return}j.classList.add(h)},[h]),u.useEffect(()=>{const j=localStorage.getItem("accent-color");if(j){const g=document.documentElement,v={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[j];v&&(g.style.setProperty("--primary",v.hsl),v.gradient?(g.style.setProperty("--primary-gradient",v.gradient),g.classList.add("has-gradient")):(g.style.removeProperty("--primary-gradient"),g.classList.remove("has-gradient")))}},[]);const f={theme:h,setTheme:j=>{localStorage.setItem(c,j),x(j)}};return e.jsx(kg.Provider,{...d,value:f,children:n})}function N_({children:n,defaultEnabled:r=!0,defaultWavesEnabled:c=!0,storageKey:d="enable-animations",wavesStorageKey:h="enable-waves-background"}){const[x,f]=u.useState(()=>{const v=localStorage.getItem(d);return v!==null?v==="true":r}),[j,g]=u.useState(()=>{const v=localStorage.getItem(h);return v!==null?v==="true":c});u.useEffect(()=>{const v=document.documentElement;x?v.classList.remove("no-animations"):v.classList.add("no-animations"),localStorage.setItem(d,String(x))},[x,d]),u.useEffect(()=>{localStorage.setItem(h,String(j))},[j,h]);const _={enableAnimations:x,setEnableAnimations:f,enableWavesBackground:j,setEnableWavesBackground:g};return e.jsx(Tg.Provider,{value:_,children:n})}const b_=yN,Wg=u.forwardRef(({className:n,...r},c)=>e.jsx(og,{ref:c,className:$("fixed bottom-0 right-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:max-w-[420px] gap-2",n),...r}));Wg.displayName=og.displayName;const w_=ai("group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-slide-in-from-right data-[state=open]:animate-fade-in data-[state=closed]:animate-slide-out-to-right data-[state=closed]:animate-fade-out data-[swipe=end]:animate-slide-out-to-right",{variants:{variant:{default:"border bg-primary/5 text-foreground backdrop-blur-sm",destructive:"destructive group border-destructive bg-destructive/10 text-destructive-foreground backdrop-blur-sm"}},defaultVariants:{variant:"default"}}),ej=u.forwardRef(({className:n,variant:r,...c},d)=>e.jsx(dg,{ref:d,className:$(w_({variant:r}),n),...c}));ej.displayName=dg.displayName;const __=u.forwardRef(({className:n,...r},c)=>e.jsx(ug,{ref:c,className:$("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",n),...r}));__.displayName=ug.displayName;const sj=u.forwardRef(({className:n,...r},c)=>e.jsx(mg,{ref:c,className:$("absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",n),"toast-close":"",...r,children:e.jsx(li,{className:"h-4 w-4"})}));sj.displayName=mg.displayName;const tj=u.forwardRef(({className:n,...r},c)=>e.jsx(hg,{ref:c,className:$("text-sm font-semibold [&+div]:text-xs",n),...r}));tj.displayName=hg.displayName;const aj=u.forwardRef(({className:n,...r},c)=>e.jsx(xg,{ref:c,className:$("text-sm opacity-90",n),...r}));aj.displayName=xg.displayName;function S_(){const{toasts:n}=Bs();return e.jsxs(b_,{children:[n.map(function({id:r,title:c,description:d,action:h,...x}){return e.jsxs(ej,{...x,children:[e.jsxs("div",{className:"grid gap-1",children:[c&&e.jsx(tj,{children:c}),d&&e.jsx(aj,{children:d})]}),h,e.jsx(sj,{})]},r)}),e.jsx(Wg,{})]})}Bb.createRoot(document.getElementById("root")).render(e.jsx(u.StrictMode,{children:e.jsx(W2,{children:e.jsx(y_,{defaultTheme:"system",children:e.jsx(N_,{children:e.jsxs(pw,{children:[e.jsx(yy,{router:v_}),e.jsx(vw,{}),e.jsx(S_,{})]})})})})})); diff --git a/webui/dist/index.html b/webui/dist/index.html index 08e50d5d..3c556267 100644 --- a/webui/dist/index.html +++ b/webui/dist/index.html @@ -7,7 +7,7 @@ MaiBot Dashboard - + From 3368c38d05362ad2fad116e2257c23331854a198 Mon Sep 17 00:00:00 2001 From: SengokuCola <1026294844@qq.com> Date: Sun, 30 Nov 2025 16:57:15 +0800 Subject: [PATCH 34/61] =?UTF-8?q?fix=EF=BC=9A=E4=BC=98=E5=8C=96=E9=83=A8?= =?UTF-8?q?=E5=88=86Log?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/chat/emoji_system/emoji_manager.py | 2 +- src/chat/utils/memory_forget_task.py | 4 +-- src/express/expression_selector.py | 3 +- .../chat_history_summarizer.py | 4 +-- src/jargon/jargon_explainer.py | 2 +- src/memory_system/memory_retrieval.py | 31 +++++++++++-------- src/plugin_system/apis/emoji_api.py | 2 +- src/plugin_system/core/tool_use.py | 2 +- 8 files changed, 27 insertions(+), 23 deletions(-) diff --git a/src/chat/emoji_system/emoji_manager.py b/src/chat/emoji_system/emoji_manager.py index f2609531..cfa86320 100644 --- a/src/chat/emoji_system/emoji_manager.py +++ b/src/chat/emoji_system/emoji_manager.py @@ -356,7 +356,7 @@ async def clean_unused_emojis(emoji_dir: str, emoji_objects: List["MaiEmoji"], r if cleaned_count > 0: logger.info(f"[清理] 在目录 {emoji_dir} 中清理了 {cleaned_count} 个破损表情包。") else: - logger.info(f"[清理] 目录 {emoji_dir} 中没有需要清理的。") + logger.debug(f"[清理] 目录 {emoji_dir} 中没有需要清理的。") except Exception as e: logger.error(f"[错误] 清理未使用表情包文件时出错 ({emoji_dir}): {str(e)}") diff --git a/src/chat/utils/memory_forget_task.py b/src/chat/utils/memory_forget_task.py index 15a912b4..cd9144a1 100644 --- a/src/chat/utils/memory_forget_task.py +++ b/src/chat/utils/memory_forget_task.py @@ -25,7 +25,7 @@ class MemoryForgetTask(AsyncTask): """执行遗忘检查""" try: current_time = time.time() - logger.info("[记忆遗忘] 开始遗忘检查...") + # logger.info("[记忆遗忘] 开始遗忘检查...") # 执行4个阶段的遗忘检查 await self._forget_stage_1(current_time) @@ -33,7 +33,7 @@ class MemoryForgetTask(AsyncTask): await self._forget_stage_3(current_time) await self._forget_stage_4(current_time) - logger.info("[记忆遗忘] 遗忘检查完成") + # logger.info("[记忆遗忘] 遗忘检查完成") except Exception as e: logger.error(f"[记忆遗忘] 执行遗忘检查时出错: {e}", exc_info=True) diff --git a/src/express/expression_selector.py b/src/express/expression_selector.py index 7ac5ef88..8d586d5d 100644 --- a/src/express/expression_selector.py +++ b/src/express/expression_selector.py @@ -151,7 +151,6 @@ class ExpressionSelector: else: selected_style = [] - logger.info(f"随机选择,为聊天室 {chat_id} 选择了 {len(selected_style)} 个表达方式") return selected_style except Exception as e: @@ -294,7 +293,7 @@ class ExpressionSelector: if valid_expressions: self.update_expressions_last_active_time(valid_expressions) - logger.info(f"classic模式从{len(all_expressions)}个情境中选择了{len(valid_expressions)}个") + logger.debug(f"从{len(all_expressions)}个情境中选择了{len(valid_expressions)}个") return valid_expressions, selected_ids except Exception as e: diff --git a/src/hippo_memorizer/chat_history_summarizer.py b/src/hippo_memorizer/chat_history_summarizer.py index 357f46dd..70847de0 100644 --- a/src/hippo_memorizer/chat_history_summarizer.py +++ b/src/hippo_memorizer/chat_history_summarizer.py @@ -326,7 +326,7 @@ class ChatHistorySummarizer: start_time=new_messages[0].time if new_messages else current_time, end_time=current_time, ) - logger.info(f"{self.log_prefix} 新建聊天检查批次: {len(new_messages)} 条消息") + logger.debug(f"{self.log_prefix} 新建聊天检查批次: {len(new_messages)} 条消息") # 创建批次后持久化 self._persist_topic_cache() @@ -362,7 +362,7 @@ class ChatHistorySummarizer: else: time_str = f"{time_since_last_check / 3600:.1f}小时" - logger.info( + logger.debug( f"{self.log_prefix} 批次状态检查 | 消息数: {message_count} | 距上次检查: {time_str}" ) diff --git a/src/jargon/jargon_explainer.py b/src/jargon/jargon_explainer.py index 67a008b5..02595080 100644 --- a/src/jargon/jargon_explainer.py +++ b/src/jargon/jargon_explainer.py @@ -138,7 +138,7 @@ class JargonExplainer: query_duration = query_time - start_time match_duration = match_time - query_time - logger.info( + logger.debug( f"黑话匹配完成: 查询耗时 {query_duration:.3f}s, 匹配耗时 {match_duration:.3f}s, " f"总耗时 {total_time:.3f}s, 匹配到 {len(matched_jargon)} 个黑话" ) diff --git a/src/memory_system/memory_retrieval.py b/src/memory_system/memory_retrieval.py index a4de5f26..c46036e6 100644 --- a/src/memory_system/memory_retrieval.py +++ b/src/memory_system/memory_retrieval.py @@ -114,9 +114,9 @@ def init_memory_retrieval_prompt(): **执行步骤:** **第一步:思考(Think)** 在思考中分析: -- 当前信息是否足够回答问题? +- 当前信息是否足够回答问题({question})? - **如果信息足够且能找到明确答案**,在思考中直接给出答案,格式为:found_answer(answer="你的答案内容") -- **如果需要尝试搜集更多信息,进一步调用工具,进入第二步行动环节 +- **如果信息不足以解答问题,需要尝试搜集更多信息,进一步调用工具,进入第二步行动环节 - **如果已有信息不足或无法找到答案,决定结束查询**,在思考中给出:not_enough_info(reason="结束查询的原因") **第二步:行动(Action)** @@ -229,6 +229,7 @@ async def _retrieve_concepts_with_jargon(concepts: List[str], chat_id: str) -> s from src.jargon.jargon_miner import search_jargon results = [] + exact_matches = [] # 收集所有精确匹配的概念 for concept in concepts: concept = concept.strip() if not concept: @@ -264,11 +265,15 @@ async def _retrieve_concepts_with_jargon(concepts: List[str], chat_id: str) -> s if meaning: output_parts.append(f"'{concept}' 为黑话或者网络简写,含义为:{meaning}") results.append(";".join(output_parts) if len(output_parts) > 1 else output_parts[0]) - logger.info(f"在jargon库中找到匹配(精确匹配): {concept},找到{len(jargon_results)}条结果") + exact_matches.append(concept) # 收集精确匹配的概念,稍后统一打印 else: # 未找到,不返回占位信息,只记录日志 logger.info(f"在jargon库中未找到匹配: {concept}") + # 合并所有精确匹配的日志 + if exact_matches: + logger.info(f"找到黑话: {', '.join(exact_matches)},共找到{len(exact_matches)}条结果") + if results: return "【概念检索结果】\n" + "\n".join(results) + "\n" return "" @@ -276,7 +281,7 @@ async def _retrieve_concepts_with_jargon(concepts: List[str], chat_id: str) -> s def _match_jargon_from_text(chat_text: str, chat_id: str) -> List[str]: """直接在聊天文本中匹配已知的jargon,返回出现过的黑话列表""" - print(chat_text) + # print(chat_text) if not chat_text or not chat_text.strip(): return [] @@ -310,10 +315,10 @@ def _match_jargon_from_text(chat_text: str, chat_id: str) -> List[str]: if re.search(search_pattern, chat_text, re.IGNORECASE): matched[content] = None - end_time = time.time() + # end_time = time.time() logger.info( - f"记忆检索黑话匹配: 查询耗时 {(query_time - start_time):.3f}s, " - f"匹配耗时 {(end_time - query_time):.3f}s, 总耗时 {(end_time - start_time):.3f}s, " + # f"记忆检索黑话匹配: 查询耗时 {(query_time - start_time):.3f}s, " + # f"匹配耗时 {(end_time - query_time):.3f}s, 总耗时 {(end_time - start_time):.3f}s, " f"匹配到 {len(matched)} 个黑话" ) @@ -827,7 +832,7 @@ def _store_thinking_back( create_time=now, update_time=now, ) - logger.info(f"已创建思考过程到数据库,问题: {question[:50]}...") + # logger.info(f"已创建思考过程到数据库,问题: {question[:50]}...") except Exception as e: logger.error(f"存储思考过程失败: {e}") @@ -851,14 +856,14 @@ async def _process_single_question( Returns: Optional[str]: 如果找到答案,返回格式化的结果字符串,否则返回None """ - logger.info(f"开始处理问题: {question}") + # logger.info(f"开始处理问题: {question}") _cleanup_stale_not_found_thinking_back() question_initial_info = initial_info or "" # 直接使用ReAct Agent查询(不再从thinking_back获取缓存) - logger.info(f"使用ReAct Agent查询,问题: {question[:50]}...") + # logger.info(f"使用ReAct Agent查询,问题: {question[:50]}...") jargon_concepts_for_agent = initial_jargon_concepts if global_config.memory.enable_jargon_detection else None @@ -942,7 +947,7 @@ async def build_memory_retrieval_prompt( if global_config.debug.show_memory_prompt: logger.info(f"记忆检索问题生成提示词: {question_prompt}") - logger.info(f"记忆检索问题生成响应: {response}") + # logger.info(f"记忆检索问题生成响应: {response}") if not success: logger.error(f"LLM生成问题失败: {response}") @@ -972,7 +977,7 @@ async def build_memory_retrieval_prompt( concept_info = await _retrieve_concepts_with_jargon(concepts, chat_id) if concept_info: initial_info += concept_info - logger.info(f"概念检索完成,结果: {concept_info[:200]}...") + logger.info(f"概念检索完成,结果: {concept_info}") else: logger.info("概念检索未找到任何结果") @@ -984,7 +989,7 @@ async def build_memory_retrieval_prompt( # 第二步:并行处理所有问题(使用配置的最大迭代次数/120秒超时) max_iterations = global_config.memory.max_agent_iterations - logger.info(f"问题数量: {len(questions)},设置最大迭代次数: {max_iterations},超时时间: 120秒") + logger.debug(f"问题数量: {len(questions)},设置最大迭代次数: {max_iterations},超时时间: 120秒") # 并行处理所有问题,将概念检索结果作为初始信息传递 question_tasks = [ diff --git a/src/plugin_system/apis/emoji_api.py b/src/plugin_system/apis/emoji_api.py index e1661887..e4d6fcd7 100644 --- a/src/plugin_system/apis/emoji_api.py +++ b/src/plugin_system/apis/emoji_api.py @@ -104,7 +104,7 @@ async def get_random(count: Optional[int] = 1) -> List[Tuple[str, str, str]]: return [] if len(valid_emojis) < count: - logger.warning( + logger.debug( f"[EmojiAPI] 有效表情包数量 ({len(valid_emojis)}) 少于请求的数量 ({count}),将返回所有有效表情包" ) count = len(valid_emojis) diff --git a/src/plugin_system/core/tool_use.py b/src/plugin_system/core/tool_use.py index 915ed7aa..6d60ee77 100644 --- a/src/plugin_system/core/tool_use.py +++ b/src/plugin_system/core/tool_use.py @@ -95,7 +95,7 @@ class ToolExecutor: # 如果没有可用工具,直接返回空内容 if not tools: - logger.info(f"{self.log_prefix}没有可用工具,直接返回空内容") + logger.debug(f"{self.log_prefix}没有可用工具,直接返回空内容") if return_details: return [], [], "" else: From 50acd8d847e19dbb58d22a60ba05b9661420d9a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Sun, 30 Nov 2025 17:31:54 +0800 Subject: [PATCH 35/61] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E7=BC=A9?= =?UTF-8?q?=E7=95=A5=E5=9B=BE=E7=BC=93=E5=AD=98=E7=AE=A1=E7=90=86=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=EF=BC=8C=E5=8C=85=E6=8B=AC=E7=94=9F=E6=88=90=E3=80=81?= =?UTF-8?q?=E6=B8=85=E7=90=86=E5=92=8C=E7=BB=9F=E8=AE=A1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/webui/emoji_routes.py | 422 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 408 insertions(+), 14 deletions(-) diff --git a/src/webui/emoji_routes.py b/src/webui/emoji_routes.py index c4d90ea2..1fe5be09 100644 --- a/src/webui/emoji_routes.py +++ b/src/webui/emoji_routes.py @@ -13,9 +13,134 @@ import os import hashlib from PIL import Image import io +from pathlib import Path +import threading logger = get_logger("webui.emoji") +# ==================== 缩略图缓存配置 ==================== +# 缩略图缓存目录 +THUMBNAIL_CACHE_DIR = Path("data/emoji_thumbnails") +# 缩略图尺寸 (宽, 高) +THUMBNAIL_SIZE = (200, 200) +# 缩略图质量 (WebP 格式, 1-100) +THUMBNAIL_QUALITY = 80 +# 缓存锁,防止并发生成同一缩略图 +_thumbnail_locks: dict[str, threading.Lock] = {} +_locks_lock = threading.Lock() + + +def _get_thumbnail_lock(file_hash: str) -> threading.Lock: + """获取指定文件哈希的锁,用于防止并发生成同一缩略图""" + with _locks_lock: + if file_hash not in _thumbnail_locks: + _thumbnail_locks[file_hash] = threading.Lock() + return _thumbnail_locks[file_hash] + + +def _ensure_thumbnail_cache_dir() -> Path: + """确保缩略图缓存目录存在""" + THUMBNAIL_CACHE_DIR.mkdir(parents=True, exist_ok=True) + return THUMBNAIL_CACHE_DIR + + +def _get_thumbnail_cache_path(file_hash: str) -> Path: + """获取缩略图缓存路径""" + return THUMBNAIL_CACHE_DIR / f"{file_hash}.webp" + + +def _generate_thumbnail(source_path: str, file_hash: str) -> Path: + """ + 生成缩略图并保存到缓存目录 + + Args: + source_path: 原图路径 + file_hash: 文件哈希值,用作缓存文件名 + + Returns: + 缩略图路径 + + Features: + - GIF: 提取第一帧作为缩略图 + - 所有格式统一转为 WebP + - 保持宽高比缩放 + """ + _ensure_thumbnail_cache_dir() + cache_path = _get_thumbnail_cache_path(file_hash) + + # 使用锁防止并发生成同一缩略图 + lock = _get_thumbnail_lock(file_hash) + with lock: + # 双重检查,可能在等待锁时已被其他线程生成 + if cache_path.exists(): + return cache_path + + try: + with Image.open(source_path) as img: + # GIF 处理:提取第一帧 + if hasattr(img, 'n_frames') and img.n_frames > 1: + img.seek(0) # 确保在第一帧 + + # 转换为 RGB/RGBA(WebP 支持透明度) + if img.mode in ('P', 'PA'): + # 调色板模式转换为 RGBA 以保留透明度 + img = img.convert('RGBA') + elif img.mode == 'LA': + img = img.convert('RGBA') + elif img.mode not in ('RGB', 'RGBA'): + img = img.convert('RGB') + + # 创建缩略图(保持宽高比) + img.thumbnail(THUMBNAIL_SIZE, Image.Resampling.LANCZOS) + + # 保存为 WebP 格式 + img.save(cache_path, 'WEBP', quality=THUMBNAIL_QUALITY, method=6) + + logger.debug(f"生成缩略图: {file_hash} -> {cache_path}") + + except Exception as e: + logger.warning(f"生成缩略图失败 {file_hash}: {e},将返回原图") + # 生成失败时不创建缓存文件,下次会重试 + raise + + return cache_path + + +def cleanup_orphaned_thumbnails() -> tuple[int, int]: + """ + 清理孤立的缩略图缓存(原图已不存在的缩略图) + + Returns: + (清理数量, 保留数量) + """ + if not THUMBNAIL_CACHE_DIR.exists(): + return 0, 0 + + # 获取所有表情包的哈希值 + valid_hashes = set() + for emoji in Emoji.select(Emoji.emoji_hash): + valid_hashes.add(emoji.emoji_hash) + + cleaned = 0 + kept = 0 + + for cache_file in THUMBNAIL_CACHE_DIR.glob("*.webp"): + file_hash = cache_file.stem + if file_hash not in valid_hashes: + try: + cache_file.unlink() + cleaned += 1 + logger.debug(f"清理孤立缩略图: {cache_file.name}") + except Exception as e: + logger.warning(f"清理缩略图失败 {cache_file.name}: {e}") + else: + kept += 1 + + if cleaned > 0: + logger.info(f"清理孤立缩略图: 删除 {cleaned} 个,保留 {kept} 个") + + return cleaned, kept + # 模块级别的类型别名(解决 B008 ruff 错误) EmojiFile = Annotated[UploadFile, File(description="表情包图片文件")] EmojiFiles = Annotated[List[UploadFile], File(description="多个表情包图片文件")] @@ -472,18 +597,26 @@ async def get_emoji_thumbnail( token: Optional[str] = Query(None, description="访问令牌"), maibot_session: Optional[str] = Cookie(None), authorization: Optional[str] = Header(None), + original: bool = Query(False, description="是否返回原图"), ): """ - 获取表情包缩略图 + 获取表情包缩略图(懒加载生成 + 缓存) Args: emoji_id: 表情包ID token: 访问令牌(通过 query parameter,用于向后兼容) maibot_session: Cookie 中的 token authorization: Authorization header + original: 是否返回原图(用于详情页查看原图) Returns: - 表情包图片文件 + 表情包缩略图(WebP 格式)或原图 + + Features: + - 懒加载:首次请求时生成缩略图 + - 缓存:后续请求直接返回缓存 + - GIF 支持:提取第一帧作为缩略图 + - 格式统一:所有缩略图统一为 WebP 格式 """ try: token_manager = get_token_manager() @@ -513,19 +646,55 @@ async def get_emoji_thumbnail( if not os.path.exists(emoji.full_path): raise HTTPException(status_code=404, detail="表情包文件不存在") - # 根据格式设置 MIME 类型 - mime_types = { - "png": "image/png", - "jpg": "image/jpeg", - "jpeg": "image/jpeg", - "gif": "image/gif", - "webp": "image/webp", - "bmp": "image/bmp", - } + # 如果请求原图,直接返回原文件 + if original: + mime_types = { + "png": "image/png", + "jpg": "image/jpeg", + "jpeg": "image/jpeg", + "gif": "image/gif", + "webp": "image/webp", + "bmp": "image/bmp", + } + media_type = mime_types.get(emoji.format.lower(), "application/octet-stream") + return FileResponse( + path=emoji.full_path, + media_type=media_type, + filename=f"{emoji.emoji_hash}.{emoji.format}" + ) - media_type = mime_types.get(emoji.format.lower(), "application/octet-stream") - - return FileResponse(path=emoji.full_path, media_type=media_type, filename=f"{emoji.emoji_hash}.{emoji.format}") + # 尝试获取或生成缩略图 + cache_path = _get_thumbnail_cache_path(emoji.emoji_hash) + + # 检查缓存是否存在 + if not cache_path.exists(): + try: + # 生成缩略图 + _generate_thumbnail(emoji.full_path, emoji.emoji_hash) + except Exception as e: + # 生成失败,回退到原图 + logger.warning(f"缩略图生成失败,返回原图: {e}") + mime_types = { + "png": "image/png", + "jpg": "image/jpeg", + "jpeg": "image/jpeg", + "gif": "image/gif", + "webp": "image/webp", + "bmp": "image/bmp", + } + media_type = mime_types.get(emoji.format.lower(), "application/octet-stream") + return FileResponse( + path=emoji.full_path, + media_type=media_type, + filename=f"{emoji.emoji_hash}.{emoji.format}" + ) + + # 返回缩略图 + return FileResponse( + path=str(cache_path), + media_type="image/webp", + filename=f"{emoji.emoji_hash}_thumb.webp" + ) except HTTPException: raise @@ -877,3 +1046,228 @@ async def batch_upload_emoji( except Exception as e: logger.exception(f"批量上传表情包失败: {e}") raise HTTPException(status_code=500, detail=f"批量上传失败: {str(e)}") from e + + +# ==================== 缩略图缓存管理 API ==================== + + +class ThumbnailCacheStatsResponse(BaseModel): + """缩略图缓存统计响应""" + + success: bool + cache_dir: str + total_count: int + total_size_mb: float + emoji_count: int + coverage_percent: float + + +class ThumbnailCleanupResponse(BaseModel): + """缩略图清理响应""" + + success: bool + message: str + cleaned_count: int + kept_count: int + + +class ThumbnailPreheatResponse(BaseModel): + """缩略图预热响应""" + + success: bool + message: str + generated_count: int + skipped_count: int + failed_count: int + + +@router.get("/thumbnail-cache/stats", response_model=ThumbnailCacheStatsResponse) +async def get_thumbnail_cache_stats( + maibot_session: Optional[str] = Cookie(None), + authorization: Optional[str] = Header(None), +): + """ + 获取缩略图缓存统计信息 + + Returns: + 缓存目录、缓存数量、总大小、覆盖率等统计信息 + """ + try: + verify_auth_token(maibot_session, authorization) + + _ensure_thumbnail_cache_dir() + + # 统计缓存文件 + cache_files = list(THUMBNAIL_CACHE_DIR.glob("*.webp")) + total_count = len(cache_files) + total_size = sum(f.stat().st_size for f in cache_files) + total_size_mb = round(total_size / (1024 * 1024), 2) + + # 统计表情包总数 + emoji_count = Emoji.select().count() + + # 计算覆盖率 + coverage_percent = round((total_count / emoji_count * 100) if emoji_count > 0 else 0, 1) + + return ThumbnailCacheStatsResponse( + success=True, + cache_dir=str(THUMBNAIL_CACHE_DIR.absolute()), + total_count=total_count, + total_size_mb=total_size_mb, + emoji_count=emoji_count, + coverage_percent=coverage_percent, + ) + + except HTTPException: + raise + except Exception as e: + logger.exception(f"获取缩略图缓存统计失败: {e}") + raise HTTPException(status_code=500, detail=f"获取统计失败: {str(e)}") from e + + +@router.post("/thumbnail-cache/cleanup", response_model=ThumbnailCleanupResponse) +async def cleanup_thumbnail_cache( + maibot_session: Optional[str] = Cookie(None), + authorization: Optional[str] = Header(None), +): + """ + 清理孤立的缩略图缓存(原图已删除的表情包对应的缩略图) + + Returns: + 清理结果 + """ + try: + verify_auth_token(maibot_session, authorization) + + cleaned, kept = cleanup_orphaned_thumbnails() + + return ThumbnailCleanupResponse( + success=True, + message=f"清理完成:删除 {cleaned} 个孤立缓存,保留 {kept} 个有效缓存", + cleaned_count=cleaned, + kept_count=kept, + ) + + except HTTPException: + raise + except Exception as e: + logger.exception(f"清理缩略图缓存失败: {e}") + raise HTTPException(status_code=500, detail=f"清理失败: {str(e)}") from e + + +@router.post("/thumbnail-cache/preheat", response_model=ThumbnailPreheatResponse) +async def preheat_thumbnail_cache( + limit: int = Query(100, ge=1, le=1000, description="最多预热数量"), + maibot_session: Optional[str] = Cookie(None), + authorization: Optional[str] = Header(None), +): + """ + 预热缩略图缓存(提前生成未缓存的缩略图) + + 优先处理使用次数高的表情包 + + Args: + limit: 最多预热数量 (1-1000) + + Returns: + 预热结果 + """ + try: + verify_auth_token(maibot_session, authorization) + + _ensure_thumbnail_cache_dir() + + # 获取使用次数最高的表情包(未缓存的优先) + emojis = ( + Emoji.select() + .where(Emoji.is_banned == False) # noqa: E712 Peewee ORM requires == for boolean comparison + .order_by(Emoji.usage_count.desc()) + .limit(limit * 2) # 多查一些,因为有些可能已缓存 + ) + + generated = 0 + skipped = 0 + failed = 0 + + for emoji in emojis: + if generated >= limit: + break + + cache_path = _get_thumbnail_cache_path(emoji.emoji_hash) + + # 已缓存,跳过 + if cache_path.exists(): + skipped += 1 + continue + + # 原文件不存在,跳过 + if not os.path.exists(emoji.full_path): + failed += 1 + continue + + try: + _generate_thumbnail(emoji.full_path, emoji.emoji_hash) + generated += 1 + except Exception as e: + logger.warning(f"预热缩略图失败 {emoji.emoji_hash}: {e}") + failed += 1 + + return ThumbnailPreheatResponse( + success=True, + message=f"预热完成:生成 {generated} 个,跳过 {skipped} 个已缓存,失败 {failed} 个", + generated_count=generated, + skipped_count=skipped, + failed_count=failed, + ) + + except HTTPException: + raise + except Exception as e: + logger.exception(f"预热缩略图缓存失败: {e}") + raise HTTPException(status_code=500, detail=f"预热失败: {str(e)}") from e + + +@router.delete("/thumbnail-cache/clear", response_model=ThumbnailCleanupResponse) +async def clear_all_thumbnail_cache( + maibot_session: Optional[str] = Cookie(None), + authorization: Optional[str] = Header(None), +): + """ + 清空所有缩略图缓存(下次访问时会重新生成) + + Returns: + 清理结果 + """ + try: + verify_auth_token(maibot_session, authorization) + + if not THUMBNAIL_CACHE_DIR.exists(): + return ThumbnailCleanupResponse( + success=True, + message="缓存目录不存在,无需清理", + cleaned_count=0, + kept_count=0, + ) + + cleaned = 0 + for cache_file in THUMBNAIL_CACHE_DIR.glob("*.webp"): + try: + cache_file.unlink() + cleaned += 1 + except Exception as e: + logger.warning(f"删除缓存文件失败 {cache_file.name}: {e}") + + logger.info(f"已清空缩略图缓存: 删除 {cleaned} 个文件") + + return ThumbnailCleanupResponse( + success=True, + message=f"已清空所有缩略图缓存:删除 {cleaned} 个文件", + cleaned_count=cleaned, + kept_count=0, + ) + + except HTTPException: + raise + except Exception as e: + logger.exception(f"清空缩略图缓存失败: {e}") + raise HTTPException(status_code=500, detail=f"清空失败: {str(e)}") from e From 11f79a73cb8e3d88329bb57c37d860248c9c11fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Sun, 30 Nov 2025 18:02:16 +0800 Subject: [PATCH 36/61] =?UTF-8?q?feat:=20=E5=A2=9E=E5=BC=BA=E7=BC=A9?= =?UTF-8?q?=E7=95=A5=E5=9B=BE=E7=94=9F=E6=88=90=E9=80=BB=E8=BE=91=EF=BC=8C?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E5=90=8E=E5=8F=B0=E5=BC=82=E6=AD=A5=E7=94=9F?= =?UTF-8?q?=E6=88=90=E5=B9=B6=E8=BF=94=E5=9B=9E=E7=94=9F=E6=88=90=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/webui/emoji_routes.py | 89 +++++++++++++++++++++++++++------------ 1 file changed, 61 insertions(+), 28 deletions(-) diff --git a/src/webui/emoji_routes.py b/src/webui/emoji_routes.py index 1fe5be09..0784a26a 100644 --- a/src/webui/emoji_routes.py +++ b/src/webui/emoji_routes.py @@ -1,7 +1,7 @@ -"""表情包管理 API 路由""" +""" 表情包管理 API 路由""" from fastapi import APIRouter, HTTPException, Header, Query, UploadFile, File, Form, Cookie -from fastapi.responses import FileResponse +from fastapi.responses import FileResponse, JSONResponse from pydantic import BaseModel from typing import Optional, List, Annotated from src.common.logger import get_logger @@ -15,6 +15,8 @@ from PIL import Image import io from pathlib import Path import threading +import asyncio +from concurrent.futures import ThreadPoolExecutor logger = get_logger("webui.emoji") @@ -28,6 +30,11 @@ THUMBNAIL_QUALITY = 80 # 缓存锁,防止并发生成同一缩略图 _thumbnail_locks: dict[str, threading.Lock] = {} _locks_lock = threading.Lock() +# 缩略图生成专用线程池(避免阻塞事件循环) +_thumbnail_executor = ThreadPoolExecutor(max_workers=2, thread_name_prefix="thumbnail") +# 正在生成中的缩略图哈希集合(防止重复提交任务) +_generating_thumbnails: set[str] = set() +_generating_lock = threading.Lock() def _get_thumbnail_lock(file_hash: str) -> threading.Lock: @@ -38,6 +45,21 @@ def _get_thumbnail_lock(file_hash: str) -> threading.Lock: return _thumbnail_locks[file_hash] +def _background_generate_thumbnail(source_path: str, file_hash: str) -> None: + """ + 后台生成缩略图(在线程池中执行) + + 生成完成后自动从 generating 集合中移除 + """ + try: + _generate_thumbnail(source_path, file_hash) + except Exception as e: + logger.warning(f"后台生成缩略图失败 {file_hash}: {e}") + finally: + with _generating_lock: + _generating_thumbnails.discard(file_hash) + + def _ensure_thumbnail_cache_dir() -> Path: """确保缩略图缓存目录存在""" THUMBNAIL_CACHE_DIR.mkdir(parents=True, exist_ok=True) @@ -667,33 +689,37 @@ async def get_emoji_thumbnail( cache_path = _get_thumbnail_cache_path(emoji.emoji_hash) # 检查缓存是否存在 - if not cache_path.exists(): - try: - # 生成缩略图 - _generate_thumbnail(emoji.full_path, emoji.emoji_hash) - except Exception as e: - # 生成失败,回退到原图 - logger.warning(f"缩略图生成失败,返回原图: {e}") - mime_types = { - "png": "image/png", - "jpg": "image/jpeg", - "jpeg": "image/jpeg", - "gif": "image/gif", - "webp": "image/webp", - "bmp": "image/bmp", - } - media_type = mime_types.get(emoji.format.lower(), "application/octet-stream") - return FileResponse( - path=emoji.full_path, - media_type=media_type, - filename=f"{emoji.emoji_hash}.{emoji.format}" + if cache_path.exists(): + # 缓存命中,直接返回 + return FileResponse( + path=str(cache_path), + media_type="image/webp", + filename=f"{emoji.emoji_hash}_thumb.webp" + ) + + # 缓存未命中,触发后台生成并返回 202 + with _generating_lock: + if emoji.emoji_hash not in _generating_thumbnails: + # 标记为正在生成 + _generating_thumbnails.add(emoji.emoji_hash) + # 提交到线程池后台生成 + _thumbnail_executor.submit( + _background_generate_thumbnail, + emoji.full_path, + emoji.emoji_hash ) - # 返回缩略图 - return FileResponse( - path=str(cache_path), - media_type="image/webp", - filename=f"{emoji.emoji_hash}_thumb.webp" + # 返回 202 Accepted,告诉前端缩略图正在生成中 + return JSONResponse( + status_code=202, + content={ + "status": "generating", + "message": "缩略图正在生成中,请稍后重试", + "emoji_id": emoji_id, + }, + headers={ + "Retry-After": "1", # 建议 1 秒后重试 + } ) except HTTPException: @@ -1206,7 +1232,14 @@ async def preheat_thumbnail_cache( continue try: - _generate_thumbnail(emoji.full_path, emoji.emoji_hash) + # 使用线程池异步生成缩略图,避免阻塞事件循环 + loop = asyncio.get_event_loop() + await loop.run_in_executor( + _thumbnail_executor, + _generate_thumbnail, + emoji.full_path, + emoji.emoji_hash + ) generated += 1 except Exception as e: logger.warning(f"预热缩略图失败 {emoji.emoji_hash}: {e}") From 66ab82f805cb504d4a3fd144e476787d89ffa5b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Sun, 30 Nov 2025 19:04:54 +0800 Subject: [PATCH 37/61] WebUI a1a47eb4e6fb85cff2d8a8c71192d566c552a319 --- webui/dist/assets/icons-Bw5y5Hqz.js | 1 - webui/dist/assets/icons-y1PBa0Co.js | 1 + webui/dist/assets/index-B31Ybn7V.js | 52 ------------------- webui/dist/assets/index-CUrrfy9B.css | 1 - webui/dist/assets/index-DFcwoEiz.js | 52 +++++++++++++++++++ webui/dist/assets/index-ceRg_XiX.css | 1 + .../{misc-Ii-X5qWA.js => misc-DyBU7ISD.js} | 2 +- ...ore-BlBHu_Lw.js => radix-core-C3XKqQJw.js} | 2 +- webui/dist/assets/radix-extra-BM7iD6Dt.js | 12 +++++ webui/dist/assets/radix-extra-Cw1azsjZ.js | 12 ----- .../{uppy-DSH7n_-V.js => uppy-BHC3OXBx.js} | 2 +- webui/dist/index.html | 14 ++--- 12 files changed, 76 insertions(+), 76 deletions(-) delete mode 100644 webui/dist/assets/icons-Bw5y5Hqz.js create mode 100644 webui/dist/assets/icons-y1PBa0Co.js delete mode 100644 webui/dist/assets/index-B31Ybn7V.js delete mode 100644 webui/dist/assets/index-CUrrfy9B.css create mode 100644 webui/dist/assets/index-DFcwoEiz.js create mode 100644 webui/dist/assets/index-ceRg_XiX.css rename webui/dist/assets/{misc-Ii-X5qWA.js => misc-DyBU7ISD.js} (99%) rename webui/dist/assets/{radix-core-BlBHu_Lw.js => radix-core-C3XKqQJw.js} (99%) create mode 100644 webui/dist/assets/radix-extra-BM7iD6Dt.js delete mode 100644 webui/dist/assets/radix-extra-Cw1azsjZ.js rename webui/dist/assets/{uppy-DSH7n_-V.js => uppy-BHC3OXBx.js} (99%) diff --git a/webui/dist/assets/icons-Bw5y5Hqz.js b/webui/dist/assets/icons-Bw5y5Hqz.js deleted file mode 100644 index 03fb32a7..00000000 --- a/webui/dist/assets/icons-Bw5y5Hqz.js +++ /dev/null @@ -1 +0,0 @@ -import{r as s}from"./router-CWhjJi2n.js";const _=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),M=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,c,o)=>o?o.toUpperCase():c.toLowerCase()),h=t=>{const a=M(t);return a.charAt(0).toUpperCase()+a.slice(1)},k=(...t)=>t.filter((a,c,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===c).join(" ").trim(),m=t=>{for(const a in t)if(a.startsWith("aria-")||a==="role"||a==="title")return!0};var v={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const x=s.forwardRef(({color:t="currentColor",size:a=24,strokeWidth:c=2,absoluteStrokeWidth:o,className:y="",children:n,iconNode:r,...d},p)=>s.createElement("svg",{ref:p,...v,width:a,height:a,stroke:t,strokeWidth:o?Number(c)*24/Number(a):c,className:k("lucide",y),...!n&&!m(d)&&{"aria-hidden":"true"},...d},[...r.map(([i,l])=>s.createElement(i,l)),...Array.isArray(n)?n:[n]]));const e=(t,a)=>{const c=s.forwardRef(({className:o,...y},n)=>s.createElement(x,{ref:n,iconNode:a,className:k(`lucide-${_(h(t))}`,`lucide-${t}`,o),...y}));return c.displayName=h(t),c};const f=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],y2=e("activity",f);const u=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],d2=e("arrow-left",u);const g=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],h2=e("arrow-right",g);const $=[["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],k2=e("ban",$);const N=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],r2=e("book-open",N);const w=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],p2=e("bot",w);const z=[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]],i2=e("boxes",z);const b=[["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z",key:"uouzyp"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M21 21a4 4 0 0 0-3.81-4",key:"1b0z45"}],["path",{d:"M21 5a4 4 0 0 1-3.55 3.97",key:"5cxbf6"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M3 21a4 4 0 0 1 3.81-4",key:"1fjd4g"}],["path",{d:"M3 5a4 4 0 0 0 3.55 3.97",key:"1d7oge"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M9 7.13V6a3 3 0 1 1 6 0v1.13",key:"1vgav8"}]],l2=e("bug",b);const q=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],_2=e("calendar",q);const C=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],M2=e("chart-column",C);const j=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],m2=e("check",j);const V=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],v2=e("chevron-down",V);const A=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],x2=e("chevron-left",A);const L=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],f2=e("chevron-right",L);const H=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],u2=e("chevron-up",H);const S=[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]],g2=e("chevrons-left",S);const P=[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]],$2=e("chevrons-right",P);const U=[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]],N2=e("chevrons-up-down",U);const T=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],w2=e("circle-alert",T);const Z=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],z2=e("circle-check",Z);const B=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],b2=e("circle-question-mark",B);const D=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662",key:"154egf"}]],q2=e("circle-user",D);const R=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],C2=e("circle-x",R);const E=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],j2=e("circle",E);const O=[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],V2=e("clock",O);const F=[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]],A2=e("code-xml",F);const I=[["path",{d:"M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z",key:"1t2lqe"}],["path",{d:"M10 21.9V14L2.1 9.1",key:"o7czzq"}],["path",{d:"m10 14 11.9-6.9",key:"zm5e20"}],["path",{d:"M14 19.8v-8.1",key:"159ecu"}],["path",{d:"M18 17.5V9.4",key:"11uown"}]],L2=e("container",I);const W=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],H2=e("copy",W);const G=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],S2=e("database",G);const K=[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]],P2=e("dollar-sign",K);const X=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],U2=e("download",X);const Q=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],T2=e("external-link",Q);const J=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],Z2=e("eye-off",J);const Y=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],B2=e("eye",Y);const e1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["circle",{cx:"11.5",cy:"14.5",r:"2.5",key:"1bq0ko"}],["path",{d:"M13.3 16.3 15 18",key:"2quom7"}]],D2=e("file-search",e1);const a1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],R2=e("file-text",a1);const t1=[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]],E2=e("folder-open",t1);const c1=[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]],O2=e("funnel",c1);const o1=[["path",{d:"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",key:"j76jl0"}],["path",{d:"M22 10v6",key:"1lu8f3"}],["path",{d:"M6 12.5V16a6 3 0 0 0 12 0v-3.5",key:"1r8lef"}]],F2=e("graduation-cap",o1);const n1=[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]],I2=e("grip-vertical",n1);const s1=[["line",{x1:"22",x2:"2",y1:"12",y2:"12",key:"1y58io"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}],["line",{x1:"6",x2:"6.01",y1:"16",y2:"16",key:"sgf278"}],["line",{x1:"10",x2:"10.01",y1:"16",y2:"16",key:"1l4acy"}]],W2=e("hard-drive",s1);const y1=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],G2=e("hash",y1);const d1=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]],K2=e("house",d1);const h1=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],X2=e("image",h1);const k1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],Q2=e("info",k1);const r1=[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]],J2=e("key",r1);const p1=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],Y2=e("loader-circle",p1);const i1=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],e0=e("lock",i1);const l1=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],a0=e("log-out",l1);const _1=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],t0=e("menu",_1);const M1=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]],c0=e("message-square",M1);const m1=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]],o0=e("moon",m1);const v1=[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]],n0=e("network",v1);const x1=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],s0=e("package",x1);const f1=[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]],y0=e("palette",f1);const u1=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]],d0=e("panels-top-left",u1);const g1=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]],h0=e("pause",g1);const $1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]],k0=e("pen",$1);const N1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],r0=e("pencil",N1);const w1=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],p0=e("play",w1);const z1=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],i0=e("plus",z1);const b1=[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]],l0=e("power",b1);const q1=[["path",{d:"M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z",key:"w46dr5"}]],_0=e("puzzle",q1);const C1=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],M0=e("refresh-cw",C1);const j1=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],m0=e("rotate-ccw",j1);const V1=[["path",{d:"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8",key:"1p45f6"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}]],v0=e("rotate-cw",V1);const A1=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],x0=e("save",A1);const L1=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],f0=e("search",L1);const H1=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],u0=e("send",H1);const S1=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],g0=e("server",S1);const P1=[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]],$0=e("settings-2",P1);const U1=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],N0=e("settings",U1);const T1=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]],w0=e("shield",T1);const Z1=[["path",{d:"M21 4v16",key:"7j8fe9"}],["path",{d:"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z",key:"zs4d6"}]],z0=e("skip-forward",Z1);const B1=[["path",{d:"M10 8h4",key:"1sr2af"}],["path",{d:"M12 21v-9",key:"17s77i"}],["path",{d:"M12 8V3",key:"13r4qs"}],["path",{d:"M17 16h4",key:"h1uq16"}],["path",{d:"M19 12V3",key:"o1uvq1"}],["path",{d:"M19 21v-5",key:"qua636"}],["path",{d:"M3 14h4",key:"bcjad9"}],["path",{d:"M5 10V3",key:"cb8scm"}],["path",{d:"M5 21v-7",key:"1w1uti"}]],b0=e("sliders-vertical",B1);const D1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]],q0=e("smile",D1);const R1=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],C0=e("sparkles",R1);const E1=[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]],j0=e("square-pen",E1);const O1=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],V0=e("star",O1);const F1=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],A0=e("sun",F1);const I1=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],L0=e("terminal",I1);const W1=[["path",{d:"M7 10v12",key:"1qc93n"}],["path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z",key:"emmmcr"}]],H0=e("thumbs-up",W1);const G1=[["path",{d:"M17 14V2",key:"8ymqnk"}],["path",{d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z",key:"m61m77"}]],S0=e("thumbs-down",G1);const K1=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],P0=e("trash-2",K1);const X1=[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]],U0=e("trending-up",X1);const Q1=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],T0=e("triangle-alert",Q1);const J1=[["path",{d:"M12 4v16",key:"1654pz"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2",key:"e0r10z"}],["path",{d:"M9 20h6",key:"s66wpe"}]],Z0=e("type",J1);const Y1=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],B0=e("upload",Y1);const e2=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],D0=e("user",e2);const a2=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],R0=e("users",a2);const t2=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],E0=e("wifi-off",t2);const c2=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]],O0=e("wifi",c2);const o2=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],F0=e("x",o2);const n2=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],I0=e("zap",n2);export{r0 as $,y2 as A,p2 as B,z2 as C,P2 as D,Z2 as E,R2 as F,K2 as G,W2 as H,Q2 as I,d2 as J,J2 as K,e0 as L,c0 as M,v2 as N,u2 as O,l0 as P,d0 as Q,M0 as R,N0 as S,U0 as T,B0 as U,A2 as V,x0 as W,F0 as X,i0 as Y,I0 as Z,D2 as _,w2 as a,g2 as a0,x2 as a1,f2 as a2,$2 as a3,N2 as a4,I2 as a5,F2 as a6,L2 as a7,s0 as a8,E2 as a9,r2 as aA,a0 as aB,v0 as aC,l2 as aD,O2 as aa,j0 as ab,k2 as ac,X2 as ad,G2 as ae,R0 as af,n0 as ag,_2 as ah,h0 as ai,p0 as aj,Z0 as ak,V0 as al,H0 as am,S0 as an,$0 as ao,O0 as ap,E0 as aq,k0 as ar,u0 as as,g0 as at,i2 as au,q2 as av,M2 as aw,j2 as ax,b0 as ay,t0 as az,m0 as b,_0 as c,S2 as d,V2 as e,y0 as f,w0 as g,T0 as h,m2 as i,H2 as j,B2 as k,C2 as l,P0 as m,U2 as n,A0 as o,o0 as p,b2 as q,L0 as r,T2 as s,Y2 as t,C0 as u,D0 as v,q0 as w,z0 as x,h2 as y,f0 as z}; diff --git a/webui/dist/assets/icons-y1PBa0Co.js b/webui/dist/assets/icons-y1PBa0Co.js new file mode 100644 index 00000000..a7774649 --- /dev/null +++ b/webui/dist/assets/icons-y1PBa0Co.js @@ -0,0 +1 @@ +import{r as s}from"./router-CWhjJi2n.js";const _=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),M=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,c,o)=>o?o.toUpperCase():c.toLowerCase()),d=t=>{const a=M(t);return a.charAt(0).toUpperCase()+a.slice(1)},k=(...t)=>t.filter((a,c,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===c).join(" ").trim(),m=t=>{for(const a in t)if(a.startsWith("aria-")||a==="role"||a==="title")return!0};var v={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const x=s.forwardRef(({color:t="currentColor",size:a=24,strokeWidth:c=2,absoluteStrokeWidth:o,className:y="",children:n,iconNode:r,...h},p)=>s.createElement("svg",{ref:p,...v,width:a,height:a,stroke:t,strokeWidth:o?Number(c)*24/Number(a):c,className:k("lucide",y),...!n&&!m(h)&&{"aria-hidden":"true"},...h},[...r.map(([i,l])=>s.createElement(i,l)),...Array.isArray(n)?n:[n]]));const e=(t,a)=>{const c=s.forwardRef(({className:o,...y},n)=>s.createElement(x,{ref:n,iconNode:a,className:k(`lucide-${_(d(t))}`,`lucide-${t}`,o),...y}));return c.displayName=d(t),c};const f=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],n2=e("activity",f);const u=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],s2=e("arrow-left",u);const g=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],y2=e("arrow-right",g);const $=[["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],h2=e("ban",$);const N=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],d2=e("book-open",N);const w=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],k2=e("bot",w);const z=[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]],r2=e("boxes",z);const b=[["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z",key:"uouzyp"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M21 21a4 4 0 0 0-3.81-4",key:"1b0z45"}],["path",{d:"M21 5a4 4 0 0 1-3.55 3.97",key:"5cxbf6"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M3 21a4 4 0 0 1 3.81-4",key:"1fjd4g"}],["path",{d:"M3 5a4 4 0 0 0 3.55 3.97",key:"1d7oge"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M9 7.13V6a3 3 0 1 1 6 0v1.13",key:"1vgav8"}]],p2=e("bug",b);const q=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],i2=e("calendar",q);const j=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],l2=e("chart-column",j);const C=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],_2=e("check",C);const V=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],M2=e("chevron-down",V);const A=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],m2=e("chevron-left",A);const H=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],v2=e("chevron-right",H);const L=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],x2=e("chevron-up",L);const S=[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]],f2=e("chevrons-left",S);const P=[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]],u2=e("chevrons-right",P);const U=[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]],g2=e("chevrons-up-down",U);const T=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],$2=e("circle-alert",T);const Z=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],N2=e("circle-check",Z);const B=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],w2=e("circle-question-mark",B);const D=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662",key:"154egf"}]],z2=e("circle-user",D);const E=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],b2=e("circle-x",E);const R=[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],q2=e("clock",R);const O=[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]],j2=e("code-xml",O);const F=[["path",{d:"M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z",key:"1t2lqe"}],["path",{d:"M10 21.9V14L2.1 9.1",key:"o7czzq"}],["path",{d:"m10 14 11.9-6.9",key:"zm5e20"}],["path",{d:"M14 19.8v-8.1",key:"159ecu"}],["path",{d:"M18 17.5V9.4",key:"11uown"}]],C2=e("container",F);const I=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],V2=e("copy",I);const W=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],A2=e("database",W);const G=[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]],H2=e("dollar-sign",G);const K=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],L2=e("download",K);const X=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],S2=e("external-link",X);const Q=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],P2=e("eye-off",Q);const J=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],U2=e("eye",J);const Y=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["circle",{cx:"11.5",cy:"14.5",r:"2.5",key:"1bq0ko"}],["path",{d:"M13.3 16.3 15 18",key:"2quom7"}]],T2=e("file-search",Y);const e1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],Z2=e("file-text",e1);const a1=[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]],B2=e("folder-open",a1);const t1=[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]],D2=e("funnel",t1);const c1=[["path",{d:"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",key:"j76jl0"}],["path",{d:"M22 10v6",key:"1lu8f3"}],["path",{d:"M6 12.5V16a6 3 0 0 0 12 0v-3.5",key:"1r8lef"}]],E2=e("graduation-cap",c1);const o1=[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]],R2=e("grip-vertical",o1);const n1=[["line",{x1:"22",x2:"2",y1:"12",y2:"12",key:"1y58io"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}],["line",{x1:"6",x2:"6.01",y1:"16",y2:"16",key:"sgf278"}],["line",{x1:"10",x2:"10.01",y1:"16",y2:"16",key:"1l4acy"}]],O2=e("hard-drive",n1);const s1=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],F2=e("hash",s1);const y1=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]],I2=e("house",y1);const h1=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],W2=e("image",h1);const d1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],G2=e("info",d1);const k1=[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]],K2=e("key",k1);const r1=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],X2=e("loader-circle",r1);const p1=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],Q2=e("lock",p1);const i1=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],J2=e("log-out",i1);const l1=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],Y2=e("menu",l1);const _1=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]],e0=e("message-square",_1);const M1=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]],a0=e("moon",M1);const m1=[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]],t0=e("network",m1);const v1=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],c0=e("package",v1);const x1=[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]],o0=e("palette",x1);const f1=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]],n0=e("panels-top-left",f1);const u1=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]],s0=e("pause",u1);const g1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]],y0=e("pen",g1);const $1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],h0=e("pencil",$1);const N1=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],d0=e("play",N1);const w1=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],k0=e("plus",w1);const z1=[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]],r0=e("power",z1);const b1=[["path",{d:"M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z",key:"w46dr5"}]],p0=e("puzzle",b1);const q1=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],i0=e("refresh-cw",q1);const j1=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],l0=e("rotate-ccw",j1);const C1=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],_0=e("save",C1);const V1=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],M0=e("search",V1);const A1=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],m0=e("send",A1);const H1=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],v0=e("server",H1);const L1=[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]],x0=e("settings-2",L1);const S1=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],f0=e("settings",S1);const P1=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]],u0=e("shield",P1);const U1=[["path",{d:"M21 4v16",key:"7j8fe9"}],["path",{d:"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z",key:"zs4d6"}]],g0=e("skip-forward",U1);const T1=[["path",{d:"M10 8h4",key:"1sr2af"}],["path",{d:"M12 21v-9",key:"17s77i"}],["path",{d:"M12 8V3",key:"13r4qs"}],["path",{d:"M17 16h4",key:"h1uq16"}],["path",{d:"M19 12V3",key:"o1uvq1"}],["path",{d:"M19 21v-5",key:"qua636"}],["path",{d:"M3 14h4",key:"bcjad9"}],["path",{d:"M5 10V3",key:"cb8scm"}],["path",{d:"M5 21v-7",key:"1w1uti"}]],$0=e("sliders-vertical",T1);const Z1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]],N0=e("smile",Z1);const B1=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],w0=e("sparkles",B1);const D1=[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]],z0=e("square-pen",D1);const E1=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],b0=e("star",E1);const R1=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],q0=e("sun",R1);const O1=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],j0=e("terminal",O1);const F1=[["path",{d:"M7 10v12",key:"1qc93n"}],["path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z",key:"emmmcr"}]],C0=e("thumbs-up",F1);const I1=[["path",{d:"M17 14V2",key:"8ymqnk"}],["path",{d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z",key:"m61m77"}]],V0=e("thumbs-down",I1);const W1=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],A0=e("trash-2",W1);const G1=[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]],H0=e("trending-up",G1);const K1=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],L0=e("triangle-alert",K1);const X1=[["path",{d:"M12 4v16",key:"1654pz"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2",key:"e0r10z"}],["path",{d:"M9 20h6",key:"s66wpe"}]],S0=e("type",X1);const Q1=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],P0=e("upload",Q1);const J1=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],U0=e("user",J1);const Y1=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],T0=e("users",Y1);const e2=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],Z0=e("wifi-off",e2);const a2=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]],B0=e("wifi",a2);const t2=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],D0=e("x",t2);const c2=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],E0=e("zap",c2);export{h0 as $,n2 as A,k2 as B,N2 as C,H2 as D,P2 as E,Z2 as F,I2 as G,O2 as H,G2 as I,s2 as J,K2 as K,Q2 as L,e0 as M,M2 as N,x2 as O,r0 as P,_0 as Q,i0 as R,f0 as S,H0 as T,P0 as U,n0 as V,j2 as W,D0 as X,k0 as Y,E0 as Z,T2 as _,$2 as a,f2 as a0,m2 as a1,v2 as a2,u2 as a3,g2 as a4,R2 as a5,E2 as a6,C2 as a7,c0 as a8,B2 as a9,J2 as aA,p2 as aB,W2 as aa,D2 as ab,z0 as ac,h2 as ad,F2 as ae,T0 as af,t0 as ag,i2 as ah,s0 as ai,d0 as aj,S0 as ak,b0 as al,C0 as am,V0 as an,x0 as ao,B0 as ap,Z0 as aq,y0 as ar,m0 as as,v0 as at,r2 as au,z2 as av,l2 as aw,$0 as ax,Y2 as ay,d2 as az,l0 as b,p0 as c,A2 as d,q2 as e,o0 as f,u0 as g,L0 as h,_2 as i,V2 as j,U2 as k,b2 as l,A0 as m,L2 as n,q0 as o,a0 as p,w2 as q,j0 as r,S2 as s,X2 as t,w0 as u,U0 as v,N0 as w,g0 as x,y2 as y,M0 as z}; diff --git a/webui/dist/assets/index-B31Ybn7V.js b/webui/dist/assets/index-B31Ybn7V.js deleted file mode 100644 index 06eeb156..00000000 --- a/webui/dist/assets/index-B31Ybn7V.js +++ /dev/null @@ -1,52 +0,0 @@ -import{r as u,j as e,L as Kc,e as Jt,b as fy,f as py,g as gy,h as jy,k as lt,l as vy,m as yy,O as Np,n as Ny}from"./router-CWhjJi2n.js";import{a as by,b as wy,g as _y}from"./react-vendor-Dtc2IqVY.js";import{I as Sy,c as Cy,J as ai,K as qc,L as wu,M as ky,N as er,O as sr,P as Ty,n as _u}from"./utils-CCeOswSm.js";import{L as bp,T as wp,C as _p,R as Ey,a as Sp,V as zy,b as My,S as Cp,c as Ay,d as kp,I as Dy,e as Tp,f as Oy,g as Ep,h as Ry,i as Ly,j as Uy,O as zp,P as By,k as Mp,l as Ap,D as Dp,A as Op,m as Rp,n as Hy,o as qy,p as Lp,q as Gy,r as Up,s as Vy,t as Fy,u as $y,v as Qy,w as Yy,x as Bp,y as Hp,F as qp,z as Gp,B as Vp,E as Xy,G as Fp,H as $p,J as Qp,K as Yp,M as Xp,N as Kp,Q as Zp,U as Ky,W as Zy,X as Jy}from"./radix-extra-Cw1azsjZ.js";import{aj as Iy,ak as Py,al as Wy,am as eN,an as Gc,ao as Vc,ap as tr,aq as sN,ar as Su,as as Fc,at as tN,au as aN,av as lN}from"./charts-Dhri-zxi.js";import{S as nN,H as Jp,O as Ip,o as iN,C as Pp,p as Wp,T as eg,D as sg,R as rN,q as cN,I as tg,J as oN,K as ag,L as lg,M as dN,N as ng,V as uN,Q as ig,U as rg,X as mN,Y as hN,Z as cg,_ as xN,$ as fN,a0 as og,a1 as pN,a2 as gN,a3 as dg,a4 as jN,a5 as vN,a6 as yN,a7 as ug,a8 as mg,a9 as hg,aa as xg,ab as fg,ac as pg,ad as NN}from"./radix-core-BlBHu_Lw.js";import{R as pt,P as Nr,C as pa,a as Da,Z as ln,b as Wc,F as Aa,c as bN,S as Rl,A as wN,D as _N,d as eo,e as Wn,M as si,T as SN,X as li,f as gg,g as CN,I as Xt,h as ba,i as fa,j as so,E as mr,k as Zt,l as jg,H as kN,m as es,n as nl,U as hr,o as Ou,p as Ru,L as Yf,K as vg,q as ro,r as TN,s as dr,t as vt,u as EN,B as ir,v as to,w as $u,x as zN,y as MN,z as _t,G as xr,J as ti,N as Ll,O as fr,Q as AN,V as DN,W as br,Y as ot,_ as ao,$ as nn,a0 as wr,a1 as cn,a2 as il,a3 as _r,a4 as Qu,a5 as ON,a6 as RN,a7 as LN,a8 as rn,a9 as UN,aa as Lu,ab as pr,ac as BN,ad as HN,ae as Uu,af as qN,ag as yg,ah as Xf,ai as GN,aj as VN,ak as FN,al as Ol,am as Cu,an as Kf,ao as $N,ap as QN,aq as YN,ar as XN,as as KN,at as Ng,au as bg,av as wg,aw as ZN,ax as JN,ay as Zf,az as IN,aA as PN,aB as Jf,aC as WN,aD as eb}from"./icons-Bw5y5Hqz.js";import{S as sb,p as tb,j as ab,a as lb,E as If,R as nb,o as ib}from"./codemirror-BHeANvwm.js";import{_ as Lt,c as rb,g as _g,D as cb}from"./misc-Ii-X5qWA.js";import{u as ob,a as Pf,D as db,c as ub,S as mb,h as hb,b as xb,s as fb,K as pb,P as gb,d as jb,C as vb}from"./dnd-Dyi3CnuX.js";import{D as yb,U as Nb}from"./uppy-DSH7n_-V.js";import{M as bb,r as wb,a as _b,b as Sb}from"./markdown-A1ShuLvG.js";import{r as Cb,H as lo,P as no,u as kb,a as Tb,R as Eb,B as zb,b as Mb,C as Ab,M as Db,c as Ob}from"./reactflow-B3n3_Vkw.js";(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const h of document.querySelectorAll('link[rel="modulepreload"]'))d(h);new MutationObserver(h=>{for(const x of h)if(x.type==="childList")for(const f of x.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&d(f)}).observe(document,{childList:!0,subtree:!0});function c(h){const x={};return h.integrity&&(x.integrity=h.integrity),h.referrerPolicy&&(x.referrerPolicy=h.referrerPolicy),h.crossOrigin==="use-credentials"?x.credentials="include":h.crossOrigin==="anonymous"?x.credentials="omit":x.credentials="same-origin",x}function d(h){if(h.ep)return;h.ep=!0;const x=c(h);fetch(h.href,x)}})();var ku={exports:{}},ar={},Tu={exports:{}},Eu={};var Wf;function Rb(){return Wf||(Wf=1,(function(n){function r(N,G){var q=N.length;N.push(G);e:for(;0>>1,_=N[ie];if(0>>1;ieh($,q))de<_&&0>h(ge,$)?(N[ie]=ge,N[de]=q,ie=de):(N[ie]=$,N[xe]=q,ie=xe);else if(de<_&&0>h(ge,q))N[ie]=ge,N[de]=q,ie=de;else break e}}return G}function h(N,G){var q=N.sortIndex-G.sortIndex;return q!==0?q:N.id-G.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var x=performance;n.unstable_now=function(){return x.now()}}else{var f=Date,j=f.now();n.unstable_now=function(){return f.now()-j}}var p=[],w=[],v=1,k=null,T=3,E=!1,R=!1,K=!1,U=!1,A=typeof setTimeout=="function"?setTimeout:null,Z=typeof clearTimeout=="function"?clearTimeout:null,H=typeof setImmediate<"u"?setImmediate:null;function z(N){for(var G=c(w);G!==null;){if(G.callback===null)d(w);else if(G.startTime<=N)d(w),G.sortIndex=G.expirationTime,r(p,G);else break;G=c(w)}}function B(N){if(K=!1,z(N),!R)if(c(p)!==null)R=!0,X||(X=!0,ye());else{var G=c(w);G!==null&&_e(B,G.startTime-N)}}var X=!1,S=-1,O=5,te=-1;function he(){return U?!0:!(n.unstable_now()-teN&&he());){var ie=k.callback;if(typeof ie=="function"){k.callback=null,T=k.priorityLevel;var _=ie(k.expirationTime<=N);if(N=n.unstable_now(),typeof _=="function"){k.callback=_,z(N),G=!0;break s}k===c(p)&&d(p),z(N)}else d(p);k=c(p)}if(k!==null)G=!0;else{var me=c(w);me!==null&&_e(B,me.startTime-N),G=!1}}break e}finally{k=null,T=q,E=!1}G=void 0}}finally{G?ye():X=!1}}}var ye;if(typeof H=="function")ye=function(){H(Ne)};else if(typeof MessageChannel<"u"){var pe=new MessageChannel,je=pe.port2;pe.port1.onmessage=Ne,ye=function(){je.postMessage(null)}}else ye=function(){A(Ne,0)};function _e(N,G){S=A(function(){N(n.unstable_now())},G)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(N){N.callback=null},n.unstable_forceFrameRate=function(N){0>N||125ie?(N.sortIndex=q,r(w,N),c(p)===null&&N===c(w)&&(K?(Z(S),S=-1):K=!0,_e(B,q-ie))):(N.sortIndex=_,r(p,N),R||E||(R=!0,X||(X=!0,ye()))),N},n.unstable_shouldYield=he,n.unstable_wrapCallback=function(N){var G=T;return function(){var q=T;T=G;try{return N.apply(this,arguments)}finally{T=q}}}})(Eu)),Eu}var ep;function Lb(){return ep||(ep=1,Tu.exports=Rb()),Tu.exports}var sp;function Ub(){if(sp)return ar;sp=1;var n=Lb(),r=by(),c=wy();function d(s){var t="https://react.dev/errors/"+s;if(1_||(s.current=ie[_],ie[_]=null,_--)}function $(s,t){_++,ie[_]=s.current,s.current=t}var de=me(null),ge=me(null),le=me(null),L=me(null);function F(s,t){switch($(le,t),$(ge,s),$(de,null),t.nodeType){case 9:case 11:s=(s=t.documentElement)&&(s=s.namespaceURI)?ff(s):0;break;default:if(s=t.tagName,t=t.namespaceURI)t=ff(t),s=pf(t,s);else switch(s){case"svg":s=1;break;case"math":s=2;break;default:s=0}}xe(de),$(de,s)}function D(){xe(de),xe(ge),xe(le)}function ee(s){s.memoizedState!==null&&$(L,s);var t=de.current,a=pf(t,s.type);t!==a&&($(ge,s),$(de,a))}function we(s){ge.current===s&&(xe(de),xe(ge)),L.current===s&&(xe(L),Ji._currentValue=q)}var ze,ss;function Ze(s){if(ze===void 0)try{throw Error()}catch(a){var t=a.stack.trim().match(/\n( *(at )?)/);ze=t&&t[1]||"",ss=-1)":-1i||C[l]!==I[i]){var ae=` -`+C[l].replace(" at new "," at ");return s.displayName&&ae.includes("")&&(ae=ae.replace("",s.displayName)),ae}while(1<=l&&0<=i);break}}}finally{Ls=!1,Error.prepareStackTrace=a}return(a=s?s.displayName||s.name:"")?Ze(a):""}function re(s,t){switch(s.tag){case 26:case 27:case 5:return Ze(s.type);case 16:return Ze("Lazy");case 13:return s.child!==t&&t!==null?Ze("Suspense Fallback"):Ze("Suspense");case 19:return Ze("SuspenseList");case 0:case 15:return Gs(s.type,!1);case 11:return Gs(s.type.render,!1);case 1:return Gs(s.type,!0);case 31:return Ze("Activity");default:return""}}function be(s){try{var t="",a=null;do t+=re(s,a),a=s,s=s.return;while(s);return t}catch(l){return` -Error generating stack: `+l.message+` -`+l.stack}}var Xe=Object.prototype.hasOwnProperty,Ue=n.unstable_scheduleCallback,st=n.unstable_cancelCallback,It=n.unstable_shouldYield,bt=n.unstable_requestPaint,Je=n.unstable_now,Be=n.unstable_getCurrentPriorityLevel,jt=n.unstable_ImmediatePriority,nt=n.unstable_UserBlockingPriority,St=n.unstable_NormalPriority,Ct=n.unstable_LowPriority,rl=n.unstable_IdlePriority,cl=n.log,ol=n.unstable_setDisableYieldValue,Se=null,Oe=null;function it(s){if(typeof cl=="function"&&ol(s),Oe&&typeof Oe.setStrictMode=="function")try{Oe.setStrictMode(Se,s)}catch{}}var dt=Math.clz32?Math.clz32:ut,di=Math.log,on=Math.LN2;function ut(s){return s>>>=0,s===0?32:31-(di(s)/on|0)|0}var Pt=256,Wt=262144,Ua=4194304;function Ut(s){var t=s&42;if(t!==0)return t;switch(s&-s){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:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return s&261888;case 262144:case 524288:case 1048576:case 2097152:return s&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return s&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return s}}function Ba(s,t,a){var l=s.pendingLanes;if(l===0)return 0;var i=0,o=s.suspendedLanes,m=s.pingedLanes;s=s.warmLanes;var g=l&134217727;return g!==0?(l=g&~o,l!==0?i=Ut(l):(m&=g,m!==0?i=Ut(m):a||(a=g&~s,a!==0&&(i=Ut(a))))):(g=l&~o,g!==0?i=Ut(g):m!==0?i=Ut(m):a||(a=l&~s,a!==0&&(i=Ut(a)))),i===0?0:t!==0&&t!==i&&(t&o)===0&&(o=i&-i,a=t&-t,o>=a||o===32&&(a&4194048)!==0)?t:i}function _a(s,t){return(s.pendingLanes&~(s.suspendedLanes&~s.pingedLanes)&t)===0}function W(s,t){switch(s){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32: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 t+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 ve(){var s=Ua;return Ua<<=1,(Ua&62914560)===0&&(Ua=4194304),s}function Me(s){for(var t=[],a=0;31>a;a++)t.push(s);return t}function tt(s,t){s.pendingLanes|=t,t!==268435456&&(s.suspendedLanes=0,s.pingedLanes=0,s.warmLanes=0)}function Bt(s,t,a,l,i,o){var m=s.pendingLanes;s.pendingLanes=a,s.suspendedLanes=0,s.pingedLanes=0,s.warmLanes=0,s.expiredLanes&=a,s.entangledLanes&=a,s.errorRecoveryDisabledLanes&=a,s.shellSuspendCounter=0;var g=s.entanglements,C=s.expirationTimes,I=s.hiddenUpdates;for(a=m&~a;0"u")return null;try{return s.activeElement||s.body}catch{return s.body}}var oj=/[\n"\\]/g;function aa(s){return s.replace(oj,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function go(s,t,a,l,i,o,m,g){s.name="",m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"?s.type=m:s.removeAttribute("type"),t!=null?m==="number"?(t===0&&s.value===""||s.value!=t)&&(s.value=""+ta(t)):s.value!==""+ta(t)&&(s.value=""+ta(t)):m!=="submit"&&m!=="reset"||s.removeAttribute("value"),t!=null?jo(s,m,ta(t)):a!=null?jo(s,m,ta(a)):l!=null&&s.removeAttribute("value"),i==null&&o!=null&&(s.defaultChecked=!!o),i!=null&&(s.checked=i&&typeof i!="function"&&typeof i!="symbol"),g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"?s.name=""+ta(g):s.removeAttribute("name")}function cm(s,t,a,l,i,o,m,g){if(o!=null&&typeof o!="function"&&typeof o!="symbol"&&typeof o!="boolean"&&(s.type=o),t!=null||a!=null){if(!(o!=="submit"&&o!=="reset"||t!=null)){po(s);return}a=a!=null?""+ta(a):"",t=t!=null?""+ta(t):a,g||t===s.value||(s.value=t),s.defaultValue=t}l=l??i,l=typeof l!="function"&&typeof l!="symbol"&&!!l,s.checked=g?s.checked:!!l,s.defaultChecked=!!l,m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"&&(s.name=m),po(s)}function jo(s,t,a){t==="number"&&zr(s.ownerDocument)===s||s.defaultValue===""+a||(s.defaultValue=""+a)}function pn(s,t,a,l){if(s=s.options,t){t={};for(var i=0;i"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),wo=!1;if(Ga)try{var xi={};Object.defineProperty(xi,"passive",{get:function(){wo=!0}}),window.addEventListener("test",xi,xi),window.removeEventListener("test",xi,xi)}catch{wo=!1}var ul=null,_o=null,Ar=null;function fm(){if(Ar)return Ar;var s,t=_o,a=t.length,l,i="value"in ul?ul.value:ul.textContent,o=i.length;for(s=0;s=gi),Nm=" ",bm=!1;function wm(s,t){switch(s){case"keyup":return Uj.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function _m(s){return s=s.detail,typeof s=="object"&&"data"in s?s.data:null}var yn=!1;function Hj(s,t){switch(s){case"compositionend":return _m(t);case"keypress":return t.which!==32?null:(bm=!0,Nm);case"textInput":return s=t.data,s===Nm&&bm?null:s;default:return null}}function qj(s,t){if(yn)return s==="compositionend"||!Eo&&wm(s,t)?(s=fm(),Ar=_o=ul=null,yn=!1,s):null;switch(s){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:a,offset:t-s};s=l}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=Am(a)}}function Om(s,t){return s&&t?s===t?!0:s&&s.nodeType===3?!1:t&&t.nodeType===3?Om(s,t.parentNode):"contains"in s?s.contains(t):s.compareDocumentPosition?!!(s.compareDocumentPosition(t)&16):!1:!1}function Rm(s){s=s!=null&&s.ownerDocument!=null&&s.ownerDocument.defaultView!=null?s.ownerDocument.defaultView:window;for(var t=zr(s.document);t instanceof s.HTMLIFrameElement;){try{var a=typeof t.contentWindow.location.href=="string"}catch{a=!1}if(a)s=t.contentWindow;else break;t=zr(s.document)}return t}function Ao(s){var t=s&&s.nodeName&&s.nodeName.toLowerCase();return t&&(t==="input"&&(s.type==="text"||s.type==="search"||s.type==="tel"||s.type==="url"||s.type==="password")||t==="textarea"||s.contentEditable==="true")}var Kj=Ga&&"documentMode"in document&&11>=document.documentMode,Nn=null,Do=null,Ni=null,Oo=!1;function Lm(s,t,a){var l=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;Oo||Nn==null||Nn!==zr(l)||(l=Nn,"selectionStart"in l&&Ao(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),Ni&&yi(Ni,l)||(Ni=l,l=Sc(Do,"onSelect"),0>=m,i-=m,Ca=1<<32-dt(t)+i|a<Ie?(is=Te,Te=null):is=Te.sibling;var ys=P(V,Te,J[Ie],oe);if(ys===null){Te===null&&(Te=is);break}s&&Te&&ys.alternate===null&&t(V,Te),M=o(ys,M,Ie),vs===null?Ee=ys:vs.sibling=ys,vs=ys,Te=is}if(Ie===J.length)return a(V,Te),fs&&Fa(V,Ie),Ee;if(Te===null){for(;IeIe?(is=Te,Te=null):is=Te.sibling;var Dl=P(V,Te,ys.value,oe);if(Dl===null){Te===null&&(Te=is);break}s&&Te&&Dl.alternate===null&&t(V,Te),M=o(Dl,M,Ie),vs===null?Ee=Dl:vs.sibling=Dl,vs=Dl,Te=is}if(ys.done)return a(V,Te),fs&&Fa(V,Ie),Ee;if(Te===null){for(;!ys.done;Ie++,ys=J.next())ys=ue(V,ys.value,oe),ys!==null&&(M=o(ys,M,Ie),vs===null?Ee=ys:vs.sibling=ys,vs=ys);return fs&&Fa(V,Ie),Ee}for(Te=l(Te);!ys.done;Ie++,ys=J.next())ys=se(Te,V,Ie,ys.value,oe),ys!==null&&(s&&ys.alternate!==null&&Te.delete(ys.key===null?Ie:ys.key),M=o(ys,M,Ie),vs===null?Ee=ys:vs.sibling=ys,vs=ys);return s&&Te.forEach(function(xy){return t(V,xy)}),fs&&Fa(V,Ie),Ee}function ks(V,M,J,oe){if(typeof J=="object"&&J!==null&&J.type===K&&J.key===null&&(J=J.props.children),typeof J=="object"&&J!==null){switch(J.$$typeof){case E:e:{for(var Ee=J.key;M!==null;){if(M.key===Ee){if(Ee=J.type,Ee===K){if(M.tag===7){a(V,M.sibling),oe=i(M,J.props.children),oe.return=V,V=oe;break e}}else if(M.elementType===Ee||typeof Ee=="object"&&Ee!==null&&Ee.$$typeof===O&&Jl(Ee)===M.type){a(V,M.sibling),oe=i(M,J.props),ki(oe,J),oe.return=V,V=oe;break e}a(V,M);break}else t(V,M);M=M.sibling}J.type===K?(oe=Ql(J.props.children,V.mode,oe,J.key),oe.return=V,V=oe):(oe=Vr(J.type,J.key,J.props,null,V.mode,oe),ki(oe,J),oe.return=V,V=oe)}return m(V);case R:e:{for(Ee=J.key;M!==null;){if(M.key===Ee)if(M.tag===4&&M.stateNode.containerInfo===J.containerInfo&&M.stateNode.implementation===J.implementation){a(V,M.sibling),oe=i(M,J.children||[]),oe.return=V,V=oe;break e}else{a(V,M);break}else t(V,M);M=M.sibling}oe=Go(J,V.mode,oe),oe.return=V,V=oe}return m(V);case O:return J=Jl(J),ks(V,M,J,oe)}if(_e(J))return Ce(V,M,J,oe);if(ye(J)){if(Ee=ye(J),typeof Ee!="function")throw Error(d(150));return J=Ee.call(J),De(V,M,J,oe)}if(typeof J.then=="function")return ks(V,M,Zr(J),oe);if(J.$$typeof===H)return ks(V,M,Qr(V,J),oe);Jr(V,J)}return typeof J=="string"&&J!==""||typeof J=="number"||typeof J=="bigint"?(J=""+J,M!==null&&M.tag===6?(a(V,M.sibling),oe=i(M,J),oe.return=V,V=oe):(a(V,M),oe=qo(J,V.mode,oe),oe.return=V,V=oe),m(V)):a(V,M)}return function(V,M,J,oe){try{Ci=0;var Ee=ks(V,M,J,oe);return An=null,Ee}catch(Te){if(Te===Mn||Te===Xr)throw Te;var vs=qt(29,Te,null,V.mode);return vs.lanes=oe,vs.return=V,vs}finally{}}}var Pl=nh(!0),ih=nh(!1),pl=!1;function Wo(s){s.updateQueue={baseState:s.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function ed(s,t){s=s.updateQueue,t.updateQueue===s&&(t.updateQueue={baseState:s.baseState,firstBaseUpdate:s.firstBaseUpdate,lastBaseUpdate:s.lastBaseUpdate,shared:s.shared,callbacks:null})}function gl(s){return{lane:s,tag:0,payload:null,callback:null,next:null}}function jl(s,t,a){var l=s.updateQueue;if(l===null)return null;if(l=l.shared,(Ns&2)!==0){var i=l.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),l.pending=t,t=Gr(s),Fm(s,null,a),t}return qr(s,l,t,a),Gr(s)}function Ti(s,t,a){if(t=t.updateQueue,t!==null&&(t=t.shared,(a&4194048)!==0)){var l=t.lanes;l&=s.pendingLanes,a|=l,t.lanes=a,dl(s,a)}}function sd(s,t){var a=s.updateQueue,l=s.alternate;if(l!==null&&(l=l.updateQueue,a===l)){var i=null,o=null;if(a=a.firstBaseUpdate,a!==null){do{var m={lane:a.lane,tag:a.tag,payload:a.payload,callback:null,next:null};o===null?i=o=m:o=o.next=m,a=a.next}while(a!==null);o===null?i=o=t:o=o.next=t}else i=o=t;a={baseState:l.baseState,firstBaseUpdate:i,lastBaseUpdate:o,shared:l.shared,callbacks:l.callbacks},s.updateQueue=a;return}s=a.lastBaseUpdate,s===null?a.firstBaseUpdate=t:s.next=t,a.lastBaseUpdate=t}var td=!1;function Ei(){if(td){var s=zn;if(s!==null)throw s}}function zi(s,t,a,l){td=!1;var i=s.updateQueue;pl=!1;var o=i.firstBaseUpdate,m=i.lastBaseUpdate,g=i.shared.pending;if(g!==null){i.shared.pending=null;var C=g,I=C.next;C.next=null,m===null?o=I:m.next=I,m=C;var ae=s.alternate;ae!==null&&(ae=ae.updateQueue,g=ae.lastBaseUpdate,g!==m&&(g===null?ae.firstBaseUpdate=I:g.next=I,ae.lastBaseUpdate=C))}if(o!==null){var ue=i.baseState;m=0,ae=I=C=null,g=o;do{var P=g.lane&-536870913,se=P!==g.lane;if(se?(ns&P)===P:(l&P)===P){P!==0&&P===En&&(td=!0),ae!==null&&(ae=ae.next={lane:0,tag:g.tag,payload:g.payload,callback:null,next:null});e:{var Ce=s,De=g;P=t;var ks=a;switch(De.tag){case 1:if(Ce=De.payload,typeof Ce=="function"){ue=Ce.call(ks,ue,P);break e}ue=Ce;break e;case 3:Ce.flags=Ce.flags&-65537|128;case 0:if(Ce=De.payload,P=typeof Ce=="function"?Ce.call(ks,ue,P):Ce,P==null)break e;ue=k({},ue,P);break e;case 2:pl=!0}}P=g.callback,P!==null&&(s.flags|=64,se&&(s.flags|=8192),se=i.callbacks,se===null?i.callbacks=[P]:se.push(P))}else se={lane:P,tag:g.tag,payload:g.payload,callback:g.callback,next:null},ae===null?(I=ae=se,C=ue):ae=ae.next=se,m|=P;if(g=g.next,g===null){if(g=i.shared.pending,g===null)break;se=g,g=se.next,se.next=null,i.lastBaseUpdate=se,i.shared.pending=null}}while(!0);ae===null&&(C=ue),i.baseState=C,i.firstBaseUpdate=I,i.lastBaseUpdate=ae,o===null&&(i.shared.lanes=0),wl|=m,s.lanes=m,s.memoizedState=ue}}function rh(s,t){if(typeof s!="function")throw Error(d(191,s));s.call(t)}function ch(s,t){var a=s.callbacks;if(a!==null)for(s.callbacks=null,s=0;so?o:8;var m=N.T,g={};N.T=g,Nd(s,!1,t,a);try{var C=i(),I=N.S;if(I!==null&&I(g,C),C!==null&&typeof C=="object"&&typeof C.then=="function"){var ae=av(C,l);Di(s,t,ae,Qt(s))}else Di(s,t,l,Qt(s))}catch(ue){Di(s,t,{then:function(){},status:"rejected",reason:ue},Qt())}finally{G.p=o,m!==null&&g.types!==null&&(m.types=g.types),N.T=m}}function ov(){}function vd(s,t,a,l){if(s.tag!==5)throw Error(d(476));var i=qh(s).queue;Hh(s,i,t,q,a===null?ov:function(){return Gh(s),a(l)})}function qh(s){var t=s.memoizedState;if(t!==null)return t;t={memoizedState:q,baseState:q,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Xa,lastRenderedState:q},next:null};var a={};return t.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Xa,lastRenderedState:a},next:null},s.memoizedState=t,s=s.alternate,s!==null&&(s.memoizedState=t),t}function Gh(s){var t=qh(s);t.next===null&&(t=s.alternate.memoizedState),Di(s,t.next.queue,{},Qt())}function yd(){return ht(Ji)}function Vh(){return Ks().memoizedState}function Fh(){return Ks().memoizedState}function dv(s){for(var t=s.return;t!==null;){switch(t.tag){case 24:case 3:var a=Qt();s=gl(a);var l=jl(t,s,a);l!==null&&(Dt(l,t,a),Ti(l,t,a)),t={cache:Zo()},s.payload=t;return}t=t.return}}function uv(s,t,a){var l=Qt();a={lane:l,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},ic(s)?Qh(t,a):(a=Bo(s,t,a,l),a!==null&&(Dt(a,s,l),Yh(a,t,l)))}function $h(s,t,a){var l=Qt();Di(s,t,a,l)}function Di(s,t,a,l){var i={lane:l,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(ic(s))Qh(t,i);else{var o=s.alternate;if(s.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var m=t.lastRenderedState,g=o(m,a);if(i.hasEagerState=!0,i.eagerState=g,Ht(g,m))return qr(s,t,i,0),Es===null&&Hr(),!1}catch{}finally{}if(a=Bo(s,t,i,l),a!==null)return Dt(a,s,l),Yh(a,t,l),!0}return!1}function Nd(s,t,a,l){if(l={lane:2,revertLane:Wd(),gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},ic(s)){if(t)throw Error(d(479))}else t=Bo(s,a,l,2),t!==null&&Dt(t,s,2)}function ic(s){var t=s.alternate;return s===Ke||t!==null&&t===Ke}function Qh(s,t){On=Wr=!0;var a=s.pending;a===null?t.next=t:(t.next=a.next,a.next=t),s.pending=t}function Yh(s,t,a){if((a&4194048)!==0){var l=t.lanes;l&=s.pendingLanes,a|=l,t.lanes=a,dl(s,a)}}var Oi={readContext:ht,use:tc,useCallback:Vs,useContext:Vs,useEffect:Vs,useImperativeHandle:Vs,useLayoutEffect:Vs,useInsertionEffect:Vs,useMemo:Vs,useReducer:Vs,useRef:Vs,useState:Vs,useDebugValue:Vs,useDeferredValue:Vs,useTransition:Vs,useSyncExternalStore:Vs,useId:Vs,useHostTransitionStatus:Vs,useFormState:Vs,useActionState:Vs,useOptimistic:Vs,useMemoCache:Vs,useCacheRefresh:Vs};Oi.useEffectEvent=Vs;var Xh={readContext:ht,use:tc,useCallback:function(s,t){return wt().memoizedState=[s,t===void 0?null:t],s},useContext:ht,useEffect:zh,useImperativeHandle:function(s,t,a){a=a!=null?a.concat([s]):null,lc(4194308,4,Oh.bind(null,t,s),a)},useLayoutEffect:function(s,t){return lc(4194308,4,s,t)},useInsertionEffect:function(s,t){lc(4,2,s,t)},useMemo:function(s,t){var a=wt();t=t===void 0?null:t;var l=s();if(Wl){it(!0);try{s()}finally{it(!1)}}return a.memoizedState=[l,t],l},useReducer:function(s,t,a){var l=wt();if(a!==void 0){var i=a(t);if(Wl){it(!0);try{a(t)}finally{it(!1)}}}else i=t;return l.memoizedState=l.baseState=i,s={pending:null,lanes:0,dispatch:null,lastRenderedReducer:s,lastRenderedState:i},l.queue=s,s=s.dispatch=uv.bind(null,Ke,s),[l.memoizedState,s]},useRef:function(s){var t=wt();return s={current:s},t.memoizedState=s},useState:function(s){s=xd(s);var t=s.queue,a=$h.bind(null,Ke,t);return t.dispatch=a,[s.memoizedState,a]},useDebugValue:gd,useDeferredValue:function(s,t){var a=wt();return jd(a,s,t)},useTransition:function(){var s=xd(!1);return s=Hh.bind(null,Ke,s.queue,!0,!1),wt().memoizedState=s,[!1,s]},useSyncExternalStore:function(s,t,a){var l=Ke,i=wt();if(fs){if(a===void 0)throw Error(d(407));a=a()}else{if(a=t(),Es===null)throw Error(d(349));(ns&127)!==0||xh(l,t,a)}i.memoizedState=a;var o={value:a,getSnapshot:t};return i.queue=o,zh(ph.bind(null,l,o,s),[s]),l.flags|=2048,Ln(9,{destroy:void 0},fh.bind(null,l,o,a,t),null),a},useId:function(){var s=wt(),t=Es.identifierPrefix;if(fs){var a=ka,l=Ca;a=(l&~(1<<32-dt(l)-1)).toString(32)+a,t="_"+t+"R_"+a,a=ec++,0<\/script>",o=o.removeChild(o.firstChild);break;case"select":o=typeof l.is=="string"?m.createElement("select",{is:l.is}):m.createElement("select"),l.multiple?o.multiple=!0:l.size&&(o.size=l.size);break;default:o=typeof l.is=="string"?m.createElement(i,{is:l.is}):m.createElement(i)}}o[Ge]=t,o[xs]=l;e:for(m=t.child;m!==null;){if(m.tag===5||m.tag===6)o.appendChild(m.stateNode);else if(m.tag!==4&&m.tag!==27&&m.child!==null){m.child.return=m,m=m.child;continue}if(m===t)break e;for(;m.sibling===null;){if(m.return===null||m.return===t)break e;m=m.return}m.sibling.return=m.return,m=m.sibling}t.stateNode=o;e:switch(ft(o,i,l),i){case"button":case"input":case"select":case"textarea":l=!!l.autoFocus;break e;case"img":l=!0;break e;default:l=!1}l&&Za(t)}}return Os(t),Rd(t,t.type,s===null?null:s.memoizedProps,t.pendingProps,a),null;case 6:if(s&&t.stateNode!=null)s.memoizedProps!==l&&Za(t);else{if(typeof l!="string"&&t.stateNode===null)throw Error(d(166));if(s=le.current,kn(t)){if(s=t.stateNode,a=t.memoizedProps,l=null,i=mt,i!==null)switch(i.tag){case 27:case 5:l=i.memoizedProps}s[Ge]=t,s=!!(s.nodeValue===a||l!==null&&l.suppressHydrationWarning===!0||hf(s.nodeValue,a)),s||xl(t,!0)}else s=Cc(s).createTextNode(l),s[Ge]=t,t.stateNode=s}return Os(t),null;case 31:if(a=t.memoizedState,s===null||s.memoizedState!==null){if(l=kn(t),a!==null){if(s===null){if(!l)throw Error(d(318));if(s=t.memoizedState,s=s!==null?s.dehydrated:null,!s)throw Error(d(557));s[Ge]=t}else Yl(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Os(t),s=!1}else a=Qo(),s!==null&&s.memoizedState!==null&&(s.memoizedState.hydrationErrors=a),s=!0;if(!s)return t.flags&256?(Vt(t),t):(Vt(t),null);if((t.flags&128)!==0)throw Error(d(558))}return Os(t),null;case 13:if(l=t.memoizedState,s===null||s.memoizedState!==null&&s.memoizedState.dehydrated!==null){if(i=kn(t),l!==null&&l.dehydrated!==null){if(s===null){if(!i)throw Error(d(318));if(i=t.memoizedState,i=i!==null?i.dehydrated:null,!i)throw Error(d(317));i[Ge]=t}else Yl(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Os(t),i=!1}else i=Qo(),s!==null&&s.memoizedState!==null&&(s.memoizedState.hydrationErrors=i),i=!0;if(!i)return t.flags&256?(Vt(t),t):(Vt(t),null)}return Vt(t),(t.flags&128)!==0?(t.lanes=a,t):(a=l!==null,s=s!==null&&s.memoizedState!==null,a&&(l=t.child,i=null,l.alternate!==null&&l.alternate.memoizedState!==null&&l.alternate.memoizedState.cachePool!==null&&(i=l.alternate.memoizedState.cachePool.pool),o=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(o=l.memoizedState.cachePool.pool),o!==i&&(l.flags|=2048)),a!==s&&a&&(t.child.flags|=8192),uc(t,t.updateQueue),Os(t),null);case 4:return D(),s===null&&au(t.stateNode.containerInfo),Os(t),null;case 10:return Qa(t.type),Os(t),null;case 19:if(xe(Xs),l=t.memoizedState,l===null)return Os(t),null;if(i=(t.flags&128)!==0,o=l.rendering,o===null)if(i)Li(l,!1);else{if(Fs!==0||s!==null&&(s.flags&128)!==0)for(s=t.child;s!==null;){if(o=Pr(s),o!==null){for(t.flags|=128,Li(l,!1),s=o.updateQueue,t.updateQueue=s,uc(t,s),t.subtreeFlags=0,s=a,a=t.child;a!==null;)$m(a,s),a=a.sibling;return $(Xs,Xs.current&1|2),fs&&Fa(t,l.treeForkCount),t.child}s=s.sibling}l.tail!==null&&Je()>pc&&(t.flags|=128,i=!0,Li(l,!1),t.lanes=4194304)}else{if(!i)if(s=Pr(o),s!==null){if(t.flags|=128,i=!0,s=s.updateQueue,t.updateQueue=s,uc(t,s),Li(l,!0),l.tail===null&&l.tailMode==="hidden"&&!o.alternate&&!fs)return Os(t),null}else 2*Je()-l.renderingStartTime>pc&&a!==536870912&&(t.flags|=128,i=!0,Li(l,!1),t.lanes=4194304);l.isBackwards?(o.sibling=t.child,t.child=o):(s=l.last,s!==null?s.sibling=o:t.child=o,l.last=o)}return l.tail!==null?(s=l.tail,l.rendering=s,l.tail=s.sibling,l.renderingStartTime=Je(),s.sibling=null,a=Xs.current,$(Xs,i?a&1|2:a&1),fs&&Fa(t,l.treeForkCount),s):(Os(t),null);case 22:case 23:return Vt(t),ld(),l=t.memoizedState!==null,s!==null?s.memoizedState!==null!==l&&(t.flags|=8192):l&&(t.flags|=8192),l?(a&536870912)!==0&&(t.flags&128)===0&&(Os(t),t.subtreeFlags&6&&(t.flags|=8192)):Os(t),a=t.updateQueue,a!==null&&uc(t,a.retryQueue),a=null,s!==null&&s.memoizedState!==null&&s.memoizedState.cachePool!==null&&(a=s.memoizedState.cachePool.pool),l=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(l=t.memoizedState.cachePool.pool),l!==a&&(t.flags|=2048),s!==null&&xe(Zl),null;case 24:return a=null,s!==null&&(a=s.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),Qa(Is),Os(t),null;case 25:return null;case 30:return null}throw Error(d(156,t.tag))}function pv(s,t){switch(Fo(t),t.tag){case 1:return s=t.flags,s&65536?(t.flags=s&-65537|128,t):null;case 3:return Qa(Is),D(),s=t.flags,(s&65536)!==0&&(s&128)===0?(t.flags=s&-65537|128,t):null;case 26:case 27:case 5:return we(t),null;case 31:if(t.memoizedState!==null){if(Vt(t),t.alternate===null)throw Error(d(340));Yl()}return s=t.flags,s&65536?(t.flags=s&-65537|128,t):null;case 13:if(Vt(t),s=t.memoizedState,s!==null&&s.dehydrated!==null){if(t.alternate===null)throw Error(d(340));Yl()}return s=t.flags,s&65536?(t.flags=s&-65537|128,t):null;case 19:return xe(Xs),null;case 4:return D(),null;case 10:return Qa(t.type),null;case 22:case 23:return Vt(t),ld(),s!==null&&xe(Zl),s=t.flags,s&65536?(t.flags=s&-65537|128,t):null;case 24:return Qa(Is),null;case 25:return null;default:return null}}function gx(s,t){switch(Fo(t),t.tag){case 3:Qa(Is),D();break;case 26:case 27:case 5:we(t);break;case 4:D();break;case 31:t.memoizedState!==null&&Vt(t);break;case 13:Vt(t);break;case 19:xe(Xs);break;case 10:Qa(t.type);break;case 22:case 23:Vt(t),ld(),s!==null&&xe(Zl);break;case 24:Qa(Is)}}function Ui(s,t){try{var a=t.updateQueue,l=a!==null?a.lastEffect:null;if(l!==null){var i=l.next;a=i;do{if((a.tag&s)===s){l=void 0;var o=a.create,m=a.inst;l=o(),m.destroy=l}a=a.next}while(a!==i)}}catch(g){_s(t,t.return,g)}}function Nl(s,t,a){try{var l=t.updateQueue,i=l!==null?l.lastEffect:null;if(i!==null){var o=i.next;l=o;do{if((l.tag&s)===s){var m=l.inst,g=m.destroy;if(g!==void 0){m.destroy=void 0,i=t;var C=a,I=g;try{I()}catch(ae){_s(i,C,ae)}}}l=l.next}while(l!==o)}}catch(ae){_s(t,t.return,ae)}}function jx(s){var t=s.updateQueue;if(t!==null){var a=s.stateNode;try{ch(t,a)}catch(l){_s(s,s.return,l)}}}function vx(s,t,a){a.props=en(s.type,s.memoizedProps),a.state=s.memoizedState;try{a.componentWillUnmount()}catch(l){_s(s,t,l)}}function Bi(s,t){try{var a=s.ref;if(a!==null){switch(s.tag){case 26:case 27:case 5:var l=s.stateNode;break;case 30:l=s.stateNode;break;default:l=s.stateNode}typeof a=="function"?s.refCleanup=a(l):a.current=l}}catch(i){_s(s,t,i)}}function Ta(s,t){var a=s.ref,l=s.refCleanup;if(a!==null)if(typeof l=="function")try{l()}catch(i){_s(s,t,i)}finally{s.refCleanup=null,s=s.alternate,s!=null&&(s.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(i){_s(s,t,i)}else a.current=null}function yx(s){var t=s.type,a=s.memoizedProps,l=s.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":a.autoFocus&&l.focus();break e;case"img":a.src?l.src=a.src:a.srcSet&&(l.srcset=a.srcSet)}}catch(i){_s(s,s.return,i)}}function Ld(s,t,a){try{var l=s.stateNode;Bv(l,s.type,a,t),l[xs]=t}catch(i){_s(s,s.return,i)}}function Nx(s){return s.tag===5||s.tag===3||s.tag===26||s.tag===27&&Tl(s.type)||s.tag===4}function Ud(s){e:for(;;){for(;s.sibling===null;){if(s.return===null||Nx(s.return))return null;s=s.return}for(s.sibling.return=s.return,s=s.sibling;s.tag!==5&&s.tag!==6&&s.tag!==18;){if(s.tag===27&&Tl(s.type)||s.flags&2||s.child===null||s.tag===4)continue e;s.child.return=s,s=s.child}if(!(s.flags&2))return s.stateNode}}function Bd(s,t,a){var l=s.tag;if(l===5||l===6)s=s.stateNode,t?(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a).insertBefore(s,t):(t=a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,t.appendChild(s),a=a._reactRootContainer,a!=null||t.onclick!==null||(t.onclick=qa));else if(l!==4&&(l===27&&Tl(s.type)&&(a=s.stateNode,t=null),s=s.child,s!==null))for(Bd(s,t,a),s=s.sibling;s!==null;)Bd(s,t,a),s=s.sibling}function mc(s,t,a){var l=s.tag;if(l===5||l===6)s=s.stateNode,t?a.insertBefore(s,t):a.appendChild(s);else if(l!==4&&(l===27&&Tl(s.type)&&(a=s.stateNode),s=s.child,s!==null))for(mc(s,t,a),s=s.sibling;s!==null;)mc(s,t,a),s=s.sibling}function bx(s){var t=s.stateNode,a=s.memoizedProps;try{for(var l=s.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);ft(t,l,a),t[Ge]=s,t[xs]=a}catch(o){_s(s,s.return,o)}}var Ja=!1,et=!1,Hd=!1,wx=typeof WeakSet=="function"?WeakSet:Set,ct=null;function gv(s,t){if(s=s.containerInfo,iu=Dc,s=Rm(s),Ao(s)){if("selectionStart"in s)var a={start:s.selectionStart,end:s.selectionEnd};else e:{a=(a=s.ownerDocument)&&a.defaultView||window;var l=a.getSelection&&a.getSelection();if(l&&l.rangeCount!==0){a=l.anchorNode;var i=l.anchorOffset,o=l.focusNode;l=l.focusOffset;try{a.nodeType,o.nodeType}catch{a=null;break e}var m=0,g=-1,C=-1,I=0,ae=0,ue=s,P=null;s:for(;;){for(var se;ue!==a||i!==0&&ue.nodeType!==3||(g=m+i),ue!==o||l!==0&&ue.nodeType!==3||(C=m+l),ue.nodeType===3&&(m+=ue.nodeValue.length),(se=ue.firstChild)!==null;)P=ue,ue=se;for(;;){if(ue===s)break s;if(P===a&&++I===i&&(g=m),P===o&&++ae===l&&(C=m),(se=ue.nextSibling)!==null)break;ue=P,P=ue.parentNode}ue=se}a=g===-1||C===-1?null:{start:g,end:C}}else a=null}a=a||{start:0,end:0}}else a=null;for(ru={focusedElem:s,selectionRange:a},Dc=!1,ct=t;ct!==null;)if(t=ct,s=t.child,(t.subtreeFlags&1028)!==0&&s!==null)s.return=t,ct=s;else for(;ct!==null;){switch(t=ct,o=t.alternate,s=t.flags,t.tag){case 0:if((s&4)!==0&&(s=t.updateQueue,s=s!==null?s.events:null,s!==null))for(a=0;a title"))),ft(o,l,a),o[Ge]=s,rt(o),l=o;break e;case"link":var m=zf("link","href",i).get(l+(a.href||""));if(m){for(var g=0;gks&&(m=ks,ks=De,De=m);var V=Dm(g,De),M=Dm(g,ks);if(V&&M&&(se.rangeCount!==1||se.anchorNode!==V.node||se.anchorOffset!==V.offset||se.focusNode!==M.node||se.focusOffset!==M.offset)){var J=ue.createRange();J.setStart(V.node,V.offset),se.removeAllRanges(),De>ks?(se.addRange(J),se.extend(M.node,M.offset)):(J.setEnd(M.node,M.offset),se.addRange(J))}}}}for(ue=[],se=g;se=se.parentNode;)se.nodeType===1&&ue.push({element:se,left:se.scrollLeft,top:se.scrollTop});for(typeof g.focus=="function"&&g.focus(),g=0;ga?32:a,N.T=null,a=Yd,Yd=null;var o=Sl,m=sl;if(at=0,Gn=Sl=null,sl=0,(Ns&6)!==0)throw Error(d(331));var g=Ns;if(Ns|=4,Ox(o.current),Mx(o,o.current,m,a),Ns=g,$i(0,!1),Oe&&typeof Oe.onPostCommitFiberRoot=="function")try{Oe.onPostCommitFiberRoot(Se,o)}catch{}return!0}finally{G.p=i,N.T=l,Px(s,t)}}function ef(s,t,a){t=na(a,t),t=Sd(s.stateNode,t,2),s=jl(s,t,2),s!==null&&(tt(s,2),Ea(s))}function _s(s,t,a){if(s.tag===3)ef(s,s,a);else for(;t!==null;){if(t.tag===3){ef(t,s,a);break}else if(t.tag===1){var l=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof l.componentDidCatch=="function"&&(_l===null||!_l.has(l))){s=na(a,s),a=sx(2),l=jl(t,a,2),l!==null&&(tx(a,l,t,s),tt(l,2),Ea(l));break}}t=t.return}}function Jd(s,t,a){var l=s.pingCache;if(l===null){l=s.pingCache=new yv;var i=new Set;l.set(t,i)}else i=l.get(t),i===void 0&&(i=new Set,l.set(t,i));i.has(a)||(Vd=!0,i.add(a),s=Sv.bind(null,s,t,a),t.then(s,s))}function Sv(s,t,a){var l=s.pingCache;l!==null&&l.delete(t),s.pingedLanes|=s.suspendedLanes&a,s.warmLanes&=~a,Es===s&&(ns&a)===a&&(Fs===4||Fs===3&&(ns&62914560)===ns&&300>Je()-fc?(Ns&2)===0&&Vn(s,0):Fd|=a,qn===ns&&(qn=0)),Ea(s)}function sf(s,t){t===0&&(t=ve()),s=$l(s,t),s!==null&&(tt(s,t),Ea(s))}function Cv(s){var t=s.memoizedState,a=0;t!==null&&(a=t.retryLane),sf(s,a)}function kv(s,t){var a=0;switch(s.tag){case 31:case 13:var l=s.stateNode,i=s.memoizedState;i!==null&&(a=i.retryLane);break;case 19:l=s.stateNode;break;case 22:l=s.stateNode._retryCache;break;default:throw Error(d(314))}l!==null&&l.delete(t),sf(s,a)}function Tv(s,t){return Ue(s,t)}var bc=null,$n=null,Id=!1,wc=!1,Pd=!1,kl=0;function Ea(s){s!==$n&&s.next===null&&($n===null?bc=$n=s:$n=$n.next=s),wc=!0,Id||(Id=!0,zv())}function $i(s,t){if(!Pd&&wc){Pd=!0;do for(var a=!1,l=bc;l!==null;){if(s!==0){var i=l.pendingLanes;if(i===0)var o=0;else{var m=l.suspendedLanes,g=l.pingedLanes;o=(1<<31-dt(42|s)+1)-1,o&=i&~(m&~g),o=o&201326741?o&201326741|1:o?o|2:0}o!==0&&(a=!0,nf(l,o))}else o=ns,o=Ba(l,l===Es?o:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),(o&3)===0||_a(l,o)||(a=!0,nf(l,o));l=l.next}while(a);Pd=!1}}function Ev(){tf()}function tf(){wc=Id=!1;var s=0;kl!==0&&qv()&&(s=kl);for(var t=Je(),a=null,l=bc;l!==null;){var i=l.next,o=af(l,t);o===0?(l.next=null,a===null?bc=i:a.next=i,i===null&&($n=a)):(a=l,(s!==0||(o&3)!==0)&&(wc=!0)),l=i}at!==0&&at!==5||$i(s),kl!==0&&(kl=0)}function af(s,t){for(var a=s.suspendedLanes,l=s.pingedLanes,i=s.expirationTimes,o=s.pendingLanes&-62914561;0g)break;var ae=C.transferSize,ue=C.initiatorType;ae&&xf(ue)&&(C=C.responseEnd,m+=ae*(C"u"?null:document;function Cf(s,t,a){var l=Qn;if(l&&typeof t=="string"&&t){var i=aa(t);i='link[rel="'+s+'"][href="'+i+'"]',typeof a=="string"&&(i+='[crossorigin="'+a+'"]'),Sf.has(i)||(Sf.add(i),s={rel:s,crossOrigin:a,href:t},l.querySelector(i)===null&&(t=l.createElement("link"),ft(t,"link",s),rt(t),l.head.appendChild(t)))}}function Zv(s){tl.D(s),Cf("dns-prefetch",s,null)}function Jv(s,t){tl.C(s,t),Cf("preconnect",s,t)}function Iv(s,t,a){tl.L(s,t,a);var l=Qn;if(l&&s&&t){var i='link[rel="preload"][as="'+aa(t)+'"]';t==="image"&&a&&a.imageSrcSet?(i+='[imagesrcset="'+aa(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(i+='[imagesizes="'+aa(a.imageSizes)+'"]')):i+='[href="'+aa(s)+'"]';var o=i;switch(t){case"style":o=Yn(s);break;case"script":o=Xn(s)}ua.has(o)||(s=k({rel:"preload",href:t==="image"&&a&&a.imageSrcSet?void 0:s,as:t},a),ua.set(o,s),l.querySelector(i)!==null||t==="style"&&l.querySelector(Ki(o))||t==="script"&&l.querySelector(Zi(o))||(t=l.createElement("link"),ft(t,"link",s),rt(t),l.head.appendChild(t)))}}function Pv(s,t){tl.m(s,t);var a=Qn;if(a&&s){var l=t&&typeof t.as=="string"?t.as:"script",i='link[rel="modulepreload"][as="'+aa(l)+'"][href="'+aa(s)+'"]',o=i;switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":o=Xn(s)}if(!ua.has(o)&&(s=k({rel:"modulepreload",href:s},t),ua.set(o,s),a.querySelector(i)===null)){switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(Zi(o)))return}l=a.createElement("link"),ft(l,"link",s),rt(l),a.head.appendChild(l)}}}function Wv(s,t,a){tl.S(s,t,a);var l=Qn;if(l&&s){var i=xn(l).hoistableStyles,o=Yn(s);t=t||"default";var m=i.get(o);if(!m){var g={loading:0,preload:null};if(m=l.querySelector(Ki(o)))g.loading=5;else{s=k({rel:"stylesheet",href:s,"data-precedence":t},a),(a=ua.get(o))&&xu(s,a);var C=m=l.createElement("link");rt(C),ft(C,"link",s),C._p=new Promise(function(I,ae){C.onload=I,C.onerror=ae}),C.addEventListener("load",function(){g.loading|=1}),C.addEventListener("error",function(){g.loading|=2}),g.loading|=4,Tc(m,t,l)}m={type:"stylesheet",instance:m,count:1,state:g},i.set(o,m)}}}function ey(s,t){tl.X(s,t);var a=Qn;if(a&&s){var l=xn(a).hoistableScripts,i=Xn(s),o=l.get(i);o||(o=a.querySelector(Zi(i)),o||(s=k({src:s,async:!0},t),(t=ua.get(i))&&fu(s,t),o=a.createElement("script"),rt(o),ft(o,"link",s),a.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},l.set(i,o))}}function sy(s,t){tl.M(s,t);var a=Qn;if(a&&s){var l=xn(a).hoistableScripts,i=Xn(s),o=l.get(i);o||(o=a.querySelector(Zi(i)),o||(s=k({src:s,async:!0,type:"module"},t),(t=ua.get(i))&&fu(s,t),o=a.createElement("script"),rt(o),ft(o,"link",s),a.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},l.set(i,o))}}function kf(s,t,a,l){var i=(i=le.current)?kc(i):null;if(!i)throw Error(d(446));switch(s){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(t=Yn(a.href),a=xn(i).hoistableStyles,l=a.get(t),l||(l={type:"style",instance:null,count:0,state:null},a.set(t,l)),l):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){s=Yn(a.href);var o=xn(i).hoistableStyles,m=o.get(s);if(m||(i=i.ownerDocument||i,m={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},o.set(s,m),(o=i.querySelector(Ki(s)))&&!o._p&&(m.instance=o,m.state.loading=5),ua.has(s)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},ua.set(s,a),o||ty(i,s,a,m.state))),t&&l===null)throw Error(d(528,""));return m}if(t&&l!==null)throw Error(d(529,""));return null;case"script":return t=a.async,a=a.src,typeof a=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=Xn(a),a=xn(i).hoistableScripts,l=a.get(t),l||(l={type:"script",instance:null,count:0,state:null},a.set(t,l)),l):{type:"void",instance:null,count:0,state:null};default:throw Error(d(444,s))}}function Yn(s){return'href="'+aa(s)+'"'}function Ki(s){return'link[rel="stylesheet"]['+s+"]"}function Tf(s){return k({},s,{"data-precedence":s.precedence,precedence:null})}function ty(s,t,a,l){s.querySelector('link[rel="preload"][as="style"]['+t+"]")?l.loading=1:(t=s.createElement("link"),l.preload=t,t.addEventListener("load",function(){return l.loading|=1}),t.addEventListener("error",function(){return l.loading|=2}),ft(t,"link",a),rt(t),s.head.appendChild(t))}function Xn(s){return'[src="'+aa(s)+'"]'}function Zi(s){return"script[async]"+s}function Ef(s,t,a){if(t.count++,t.instance===null)switch(t.type){case"style":var l=s.querySelector('style[data-href~="'+aa(a.href)+'"]');if(l)return t.instance=l,rt(l),l;var i=k({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return l=(s.ownerDocument||s).createElement("style"),rt(l),ft(l,"style",i),Tc(l,a.precedence,s),t.instance=l;case"stylesheet":i=Yn(a.href);var o=s.querySelector(Ki(i));if(o)return t.state.loading|=4,t.instance=o,rt(o),o;l=Tf(a),(i=ua.get(i))&&xu(l,i),o=(s.ownerDocument||s).createElement("link"),rt(o);var m=o;return m._p=new Promise(function(g,C){m.onload=g,m.onerror=C}),ft(o,"link",l),t.state.loading|=4,Tc(o,a.precedence,s),t.instance=o;case"script":return o=Xn(a.src),(i=s.querySelector(Zi(o)))?(t.instance=i,rt(i),i):(l=a,(i=ua.get(o))&&(l=k({},a),fu(l,i)),s=s.ownerDocument||s,i=s.createElement("script"),rt(i),ft(i,"link",l),s.head.appendChild(i),t.instance=i);case"void":return null;default:throw Error(d(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(l=t.instance,t.state.loading|=4,Tc(l,a.precedence,s));return t.instance}function Tc(s,t,a){for(var l=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),i=l.length?l[l.length-1]:null,o=i,m=0;m title"):null)}function ay(s,t,a){if(a===1||t.itemProp!=null)return!1;switch(s){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return s=t.disabled,typeof t.precedence=="string"&&s==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Af(s){return!(s.type==="stylesheet"&&(s.state.loading&3)===0)}function ly(s,t,a,l){if(a.type==="stylesheet"&&(typeof l.media!="string"||matchMedia(l.media).matches!==!1)&&(a.state.loading&4)===0){if(a.instance===null){var i=Yn(l.href),o=t.querySelector(Ki(i));if(o){t=o._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(s.count++,s=zc.bind(s),t.then(s,s)),a.state.loading|=4,a.instance=o,rt(o);return}o=t.ownerDocument||t,l=Tf(l),(i=ua.get(i))&&xu(l,i),o=o.createElement("link"),rt(o);var m=o;m._p=new Promise(function(g,C){m.onload=g,m.onerror=C}),ft(o,"link",l),a.instance=o}s.stylesheets===null&&(s.stylesheets=new Map),s.stylesheets.set(a,t),(t=a.state.preload)&&(a.state.loading&3)===0&&(s.count++,a=zc.bind(s),t.addEventListener("load",a),t.addEventListener("error",a))}}var pu=0;function ny(s,t){return s.stylesheets&&s.count===0&&Ac(s,s.stylesheets),0pu?50:800)+t);return s.unsuspend=a,function(){s.unsuspend=null,clearTimeout(l),clearTimeout(i)}}:null}function zc(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Ac(this,this.stylesheets);else if(this.unsuspend){var s=this.unsuspend;this.unsuspend=null,s()}}}var Mc=null;function Ac(s,t){s.stylesheets=null,s.unsuspend!==null&&(s.count++,Mc=new Map,t.forEach(iy,s),Mc=null,zc.call(s))}function iy(s,t){if(!(t.state.loading&4)){var a=Mc.get(s);if(a)var l=a.get(null);else{a=new Map,Mc.set(s,a);for(var i=s.querySelectorAll("link[data-precedence],style[data-precedence]"),o=0;o"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(r){console.error(r)}}return n(),ku.exports=Ub(),ku.exports}var Hb=Bb();function Q(...n){return Sy(Cy(n))}const Fe=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("rounded-xl border bg-card text-card-foreground shadow",n),...r}));Fe.displayName="Card";const gs=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("flex flex-col space-y-1.5 p-6",n),...r}));gs.displayName="CardHeader";const js=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("font-semibold leading-none tracking-tight",n),...r}));js.displayName="CardTitle";const Zs=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("text-sm text-muted-foreground",n),...r}));Zs.displayName="CardDescription";const bs=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("p-6 pt-0",n),...r}));bs.displayName="CardContent";const Sg=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("flex items-center p-6 pt-0",n),...r}));Sg.displayName="CardFooter";const Kt=Ey,Rt=u.forwardRef(({className:n,...r},c)=>e.jsx(bp,{ref:c,className:Q("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",n),...r}));Rt.displayName=bp.displayName;const $e=u.forwardRef(({className:n,...r},c)=>e.jsx(wp,{ref:c,className:Q("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all duration-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",n),...r}));$e.displayName=wp.displayName;const We=u.forwardRef(({className:n,...r},c)=>e.jsx(_p,{ref:c,className:Q("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[state=active]:animate-in data-[state=active]:fade-in data-[state=active]:duration-300",n),...r}));We.displayName=_p.displayName;const Pe=u.forwardRef(({className:n,children:r,viewportRef:c,...d},h)=>e.jsxs(Sp,{ref:h,className:Q("relative overflow-hidden",n),...d,children:[e.jsx(zy,{ref:c,className:"h-full w-full rounded-[inherit]",children:r}),e.jsx(Bu,{}),e.jsx(Bu,{orientation:"horizontal"}),e.jsx(My,{})]}));Pe.displayName=Sp.displayName;const Bu=u.forwardRef(({className:n,orientation:r="vertical",...c},d)=>e.jsx(Cp,{ref:d,orientation:r,className:Q("flex touch-none select-none transition-colors",r==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",r==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",n),...c,children:e.jsx(Ay,{className:"relative flex-1 rounded-full bg-border"})}));Bu.displayName=Cp.displayName;function qb({className:n,...r}){return e.jsx("div",{className:Q("animate-pulse rounded-md bg-primary/10",n),...r})}const Sr=u.forwardRef(({className:n,value:r,...c},d)=>e.jsx(kp,{ref:d,className:Q("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",n),...c,children:e.jsx(Dy,{className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(r||0)}%)`}})}));Sr.displayName=kp.displayName;const Gb={light:"",dark:".dark"},Cg=u.createContext(null);function kg(){const n=u.useContext(Cg);if(!n)throw new Error("useChart must be used within a ");return n}const Zn=u.forwardRef(({id:n,className:r,children:c,config:d,...h},x)=>{const f=u.useId(),j=`chart-${n||f.replace(/:/g,"")}`;return e.jsx(Cg.Provider,{value:{config:d},children:e.jsxs("div",{"data-chart":j,ref:x,className:Q("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",r),...h,children:[e.jsx(Vb,{id:j,config:d}),e.jsx(Iy,{children:c})]})})});Zn.displayName="Chart";const Vb=({id:n,config:r})=>{const c=Object.entries(r).filter(([,d])=>d.theme||d.color);return c.length?e.jsx("style",{dangerouslySetInnerHTML:{__html:Object.entries(Gb).map(([d,h])=>` -${h} [data-chart=${n}] { -${c.map(([x,f])=>{const j=f.theme?.[d]||f.color;return j?` --color-${x}: ${j};`:null}).join(` -`)} -} -`).join(` -`)}}):null},lr=Py,Jn=u.forwardRef(({active:n,payload:r,className:c,indicator:d="dot",hideLabel:h=!1,hideIndicator:x=!1,label:f,labelFormatter:j,labelClassName:p,formatter:w,color:v,nameKey:k,labelKey:T},E)=>{const{config:R}=kg(),K=u.useMemo(()=>{if(h||!r?.length)return null;const[A]=r,Z=`${T||A?.dataKey||A?.name||"value"}`,H=Hu(R,A,Z),z=!T&&typeof f=="string"?R[f]?.label||f:H?.label;return j?e.jsx("div",{className:Q("font-medium",p),children:j(z,r)}):z?e.jsx("div",{className:Q("font-medium",p),children:z}):null},[f,j,r,h,p,R,T]);if(!n||!r?.length)return null;const U=r.length===1&&d!=="dot";return e.jsxs("div",{ref:E,className:Q("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",c),children:[U?null:K,e.jsx("div",{className:"grid gap-1.5",children:r.filter(A=>A.type!=="none").map((A,Z)=>{const H=`${k||A.name||A.dataKey||"value"}`,z=Hu(R,A,H),B=v||A.payload.fill||A.color;return e.jsx("div",{className:Q("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",d==="dot"&&"items-center"),children:w&&A?.value!==void 0&&A.name?w(A.value,A.name,A,Z,A.payload):e.jsxs(e.Fragment,{children:[z?.icon?e.jsx(z.icon,{}):!x&&e.jsx("div",{className:Q("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]",{"h-2.5 w-2.5":d==="dot","w-1":d==="line","w-0 border-[1.5px] border-dashed bg-transparent":d==="dashed","my-0.5":U&&d==="dashed"}),style:{"--color-bg":B,"--color-border":B}}),e.jsxs("div",{className:Q("flex flex-1 justify-between leading-none",U?"items-end":"items-center"),children:[e.jsxs("div",{className:"grid gap-1.5",children:[U?K:null,e.jsx("span",{className:"text-muted-foreground",children:z?.label||A.name})]}),A.value&&e.jsx("span",{className:"font-mono font-medium tabular-nums text-foreground",children:A.value.toLocaleString()})]})]})},A.dataKey)})})]})});Jn.displayName="ChartTooltip";const Fb=Wy,Tg=u.forwardRef(({className:n,hideIcon:r=!1,payload:c,verticalAlign:d="bottom",nameKey:h},x)=>{const{config:f}=kg();return c?.length?e.jsx("div",{ref:x,className:Q("flex items-center justify-center gap-4",d==="top"?"pb-3":"pt-3",n),children:c.filter(j=>j.type!=="none").map(j=>{const p=`${h||j.dataKey||"value"}`,w=Hu(f,j,p);return e.jsxs("div",{className:Q("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"),children:[w?.icon&&!r?e.jsx(w.icon,{}):e.jsx("div",{className:"h-2 w-2 shrink-0 rounded-[2px]",style:{backgroundColor:j.color}}),w?.label]},j.value)})}):null});Tg.displayName="ChartLegend";function Hu(n,r,c){if(typeof r!="object"||r===null)return;const d="payload"in r&&typeof r.payload=="object"&&r.payload!==null?r.payload:void 0;let h=c;return c in r&&typeof r[c]=="string"?h=r[c]:d&&c in d&&typeof d[c]=="string"&&(h=d[c]),h in n?n[h]:n[c]}const gr=ai("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),y=u.forwardRef(({className:n,variant:r,size:c,asChild:d=!1,...h},x)=>{const f=d?nN:"button";return e.jsx(f,{className:Q(gr({variant:r,size:c,className:n})),ref:x,...h})});y.displayName="Button";const $b=ai("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function Ye({className:n,variant:r,...c}){return e.jsx("div",{className:Q($b({variant:r}),n),...c})}const Qb=5,Yb=5e3;let zu=0;function Xb(){return zu=(zu+1)%Number.MAX_SAFE_INTEGER,zu.toString()}const Mu=new Map,ap=n=>{if(Mu.has(n))return;const r=setTimeout(()=>{Mu.delete(n),ur({type:"REMOVE_TOAST",toastId:n})},Yb);Mu.set(n,r)},Kb=(n,r)=>{switch(r.type){case"ADD_TOAST":return{...n,toasts:[r.toast,...n.toasts].slice(0,Qb)};case"UPDATE_TOAST":return{...n,toasts:n.toasts.map(c=>c.id===r.toast.id?{...c,...r.toast}:c)};case"DISMISS_TOAST":{const{toastId:c}=r;return c?ap(c):n.toasts.forEach(d=>{ap(d.id)}),{...n,toasts:n.toasts.map(d=>d.id===c||c===void 0?{...d,open:!1}:d)}}case"REMOVE_TOAST":return r.toastId===void 0?{...n,toasts:[]}:{...n,toasts:n.toasts.filter(c=>c.id!==r.toastId)}}},Zc=[];let Jc={toasts:[]};function ur(n){Jc=Kb(Jc,n),Zc.forEach(r=>{r(Jc)})}function Zb({...n}){const r=Xb(),c=h=>ur({type:"UPDATE_TOAST",toast:{...h,id:r}}),d=()=>ur({type:"DISMISS_TOAST",toastId:r});return ur({type:"ADD_TOAST",toast:{...n,id:r,open:!0,onOpenChange:h=>{h||d()}}}),{id:r,dismiss:d,update:c}}function Hs(){const[n,r]=u.useState(Jc);return u.useEffect(()=>(Zc.push(r),()=>{const c=Zc.indexOf(r);c>-1&&Zc.splice(c,1)}),[n]),{...n,toast:Zb,dismiss:c=>ur({type:"DISMISS_TOAST",toastId:c})}}const Jb=n=>{const r=[];for(let c=0;c{try{E(!0);const q=await qc.get("https://v1.hitokoto.cn/?c=a&c=b&c=c&c=d&c=h&c=i&c=k");k({hitokoto:q.data.hitokoto,from:q.data.from||q.data.from_who||"未知"})}catch(q){console.error("获取一言失败:",q),k({hitokoto:"人生就像一盒巧克力,你永远不知道下一颗是什么味道。",from:"阿甘正传"})}finally{E(!1)}},[]),z=u.useCallback(async()=>{try{const q=localStorage.getItem("access-token"),ie=await qc.get("/api/webui/system/status",{headers:{Authorization:`Bearer ${q}`}});K(ie.data)}catch(q){console.error("获取机器人状态失败:",q),K(null)}},[]),B=async()=>{if(!U)try{A(!0);const q=localStorage.getItem("access-token");await qc.post("/api/webui/system/restart",{},{headers:{Authorization:`Bearer ${q}`}}),Z({title:"重启中",description:"麦麦正在重启,请稍候..."}),setTimeout(()=>{z(),A(!1)},3e3)}catch(q){console.error("重启失败:",q),Z({title:"重启失败",description:"无法重启麦麦,请检查控制台",variant:"destructive"}),A(!1)}},X=u.useCallback(async()=>{try{const q=localStorage.getItem("access-token"),ie=await qc.get(`/api/webui/statistics/dashboard?hours=${f}`,{headers:{Authorization:`Bearer ${q}`}});r(ie.data),d(!1),x(100)}catch(q){console.error("Failed to fetch dashboard data:",q),d(!1),x(100)}},[f]);if(u.useEffect(()=>{if(!c)return;x(0);const q=setTimeout(()=>x(15),200),ie=setTimeout(()=>x(30),800),_=setTimeout(()=>x(45),2e3),me=setTimeout(()=>x(60),4e3),xe=setTimeout(()=>x(75),6500),$=setTimeout(()=>x(85),9e3),de=setTimeout(()=>x(92),11e3);return()=>{clearTimeout(q),clearTimeout(ie),clearTimeout(_),clearTimeout(me),clearTimeout(xe),clearTimeout($),clearTimeout(de)}},[c]),u.useEffect(()=>{X(),H(),z()},[X,H,z]),u.useEffect(()=>{if(!p)return;const q=setInterval(()=>{X(),z()},3e4);return()=>clearInterval(q)},[p,X,z]),c||!n)return e.jsx("div",{className:"flex items-center justify-center h-[calc(100vh-200px)]",children:e.jsxs("div",{className:"text-center space-y-6 w-full max-w-md px-4",children:[e.jsx(pt,{className:"h-12 w-12 animate-spin mx-auto text-primary"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-lg font-medium",children:"加载统计数据中..."}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"正在获取麦麦运行数据"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(Sr,{value:h,className:"h-2"}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:[h,"%"]})]})]})});const{summary:S,model_stats:O=[],hourly_data:te=[],daily_data:he=[],recent_activity:Ne=[]}=n,ye=S??{total_requests:0,total_cost:0,total_tokens:0,online_time:0,total_messages:0,total_replies:0,avg_response_time:0,cost_per_hour:0,tokens_per_hour:0},pe=q=>{const ie=Math.floor(q/3600),_=Math.floor(q%3600/60);return`${ie}小时${_}分钟`},je=q=>new Date(q).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),_e=Jb(O.length),N=O.map((q,ie)=>({name:q.model_name,value:q.request_count,fill:_e[ie]})),G={requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"},tokens:{label:"Tokens",color:"hsl(var(--chart-3))"}};return e.jsx(Pe,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"实时监控面板"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"麦麦运行状态和统计数据一览"})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(Kt,{value:f.toString(),onValueChange:q=>j(Number(q)),children:e.jsxs(Rt,{className:"grid grid-cols-3 w-full sm:w-auto",children:[e.jsx($e,{value:"24",children:"24小时"}),e.jsx($e,{value:"168",children:"7天"}),e.jsx($e,{value:"720",children:"30天"})]})}),e.jsxs(y,{variant:p?"default":"outline",size:"sm",onClick:()=>w(!p),className:"gap-2",children:[e.jsx(pt,{className:`h-4 w-4 ${p?"animate-spin":""}`}),e.jsx("span",{className:"hidden sm:inline",children:"自动刷新"})]}),e.jsx(y,{variant:"outline",size:"sm",onClick:X,children:e.jsx(pt,{className:"h-4 w-4"})})]})]}),e.jsxs("div",{className:"flex items-center gap-3 px-4 py-2 rounded-lg border border-dashed border-muted-foreground/30 bg-muted/20",children:[T?e.jsx(qb,{className:"h-5 flex-1"}):v?e.jsxs("p",{className:"flex-1 text-sm text-muted-foreground italic truncate",children:['"',v.hitokoto,'" —— ',v.from]}):null,e.jsx(y,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0",onClick:H,disabled:T,children:e.jsx(pt,{className:`h-3.5 w-3.5 ${T?"animate-spin":""}`})})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-3",children:[e.jsxs(Fe,{className:"lg:col-span-1",children:[e.jsx(gs,{className:"pb-3",children:e.jsxs(js,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(Nr,{className:"h-4 w-4"}),"麦麦状态"]})}),e.jsx(bs,{children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"flex items-center gap-2",children:R?.running?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-3 w-3 rounded-full bg-green-500 animate-pulse"}),e.jsxs(Ye,{variant:"outline",className:"text-green-600 border-green-300 bg-green-50",children:[e.jsx(pa,{className:"h-3 w-3 mr-1"}),"运行中"]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-3 w-3 rounded-full bg-red-500"}),e.jsxs(Ye,{variant:"outline",className:"text-red-600 border-red-300 bg-red-50",children:[e.jsx(Da,{className:"h-3 w-3 mr-1"}),"已停止"]})]})}),R&&e.jsxs("div",{className:"text-xs text-muted-foreground",children:[e.jsxs("span",{children:["v",R.version]}),e.jsx("span",{className:"mx-2",children:"|"}),e.jsxs("span",{children:["运行 ",pe(R.uptime)]})]})]})})]}),e.jsxs(Fe,{className:"lg:col-span-2",children:[e.jsx(gs,{className:"pb-3",children:e.jsxs(js,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(ln,{className:"h-4 w-4"}),"快速操作"]})}),e.jsx(bs,{children:e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(y,{variant:"outline",size:"sm",onClick:B,disabled:U,className:"gap-2",children:[e.jsx(Wc,{className:`h-4 w-4 ${U?"animate-spin":""}`}),U?"重启中...":"重启麦麦"]}),e.jsx(y,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Kc,{to:"/logs",children:[e.jsx(Aa,{className:"h-4 w-4"}),"查看日志"]})}),e.jsx(y,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Kc,{to:"/plugins",children:[e.jsx(bN,{className:"h-4 w-4"}),"插件管理"]})}),e.jsx(y,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Kc,{to:"/settings",children:[e.jsx(Rl,{className:"h-4 w-4"}),"系统设置"]})})]})})]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-4",children:[e.jsxs(Fe,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"总请求数"}),e.jsx(wN,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsx("div",{className:"text-2xl font-bold",children:ye.total_requests.toLocaleString()}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["最近",f<48?f+"小时":Math.floor(f/24)+"天"]})]})]}),e.jsxs(Fe,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"总花费"}),e.jsx(_N,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:["¥",ye.total_cost.toFixed(2)]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:ye.cost_per_hour>0?`¥${ye.cost_per_hour.toFixed(2)}/小时`:"暂无数据"})]})]}),e.jsxs(Fe,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"Token消耗"}),e.jsx(eo,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:[(ye.total_tokens/1e3).toFixed(1),"K"]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:ye.tokens_per_hour>0?`${(ye.tokens_per_hour/1e3).toFixed(1)}K/小时`:"暂无数据"})]})]}),e.jsxs(Fe,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"平均响应"}),e.jsx(ln,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:[ye.avg_response_time.toFixed(2),"s"]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"API平均耗时"})]})]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 sm:grid-cols-3",children:[e.jsxs(Fe,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"在线时长"}),e.jsx(Wn,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsx(bs,{children:e.jsx("div",{className:"text-xl font-bold",children:pe(ye.online_time)})})]}),e.jsxs(Fe,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"消息处理"}),e.jsx(si,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsx("div",{className:"text-xl font-bold",children:ye.total_messages.toLocaleString()}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["回复 ",ye.total_replies.toLocaleString()," 条"]})]})]}),e.jsxs(Fe,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"成本效率"}),e.jsx(SN,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsx("div",{className:"text-xl font-bold",children:ye.total_messages>0?`¥${(ye.total_cost/ye.total_messages*100).toFixed(2)}`:"¥0.00"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"每100条消息"})]})]})]}),e.jsxs(Kt,{defaultValue:"trends",className:"space-y-4",children:[e.jsxs(Rt,{className:"grid w-full grid-cols-2 sm:grid-cols-4",children:[e.jsx($e,{value:"trends",children:"趋势"}),e.jsx($e,{value:"models",children:"模型"}),e.jsx($e,{value:"activity",children:"活动"}),e.jsx($e,{value:"daily",children:"日统计"})]}),e.jsxs(We,{value:"trends",className:"space-y-4",children:[e.jsxs(Fe,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"请求趋势"}),e.jsxs(Zs,{children:["最近",f,"小时的请求量变化"]})]}),e.jsx(bs,{children:e.jsx(Zn,{config:G,className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:e.jsxs(eN,{data:te,children:[e.jsx(Gc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Vc,{dataKey:"timestamp",tickFormatter:q=>je(q),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{content:e.jsx(Jn,{labelFormatter:q=>je(q)})}),e.jsx(sN,{type:"monotone",dataKey:"requests",stroke:"var(--color-requests)",strokeWidth:2})]})})})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[e.jsxs(Fe,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"花费趋势"}),e.jsx(Zs,{children:"API调用成本变化"})]}),e.jsx(bs,{children:e.jsx(Zn,{config:G,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:e.jsxs(Su,{data:te,children:[e.jsx(Gc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Vc,{dataKey:"timestamp",tickFormatter:q=>je(q),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{content:e.jsx(Jn,{labelFormatter:q=>je(q)})}),e.jsx(Fc,{dataKey:"cost",fill:"var(--color-cost)"})]})})})]}),e.jsxs(Fe,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"Token消耗"}),e.jsx(Zs,{children:"Token使用量变化"})]}),e.jsx(bs,{children:e.jsx(Zn,{config:G,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:e.jsxs(Su,{data:te,children:[e.jsx(Gc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Vc,{dataKey:"timestamp",tickFormatter:q=>je(q),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{content:e.jsx(Jn,{labelFormatter:q=>je(q)})}),e.jsx(Fc,{dataKey:"tokens",fill:"var(--color-tokens)"})]})})})]})]})]}),e.jsx(We,{value:"models",className:"space-y-4",children:e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[e.jsxs(Fe,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"模型请求分布"}),e.jsxs(Zs,{children:["各模型使用占比 (共 ",O.length," 个模型)"]})]}),e.jsx(bs,{children:e.jsx(Zn,{config:Object.fromEntries(O.map((q,ie)=>[q.model_name,{label:q.model_name,color:_e[ie]}])),className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:e.jsxs(tN,{children:[e.jsx(lr,{content:e.jsx(Jn,{})}),e.jsx(aN,{data:N,cx:"50%",cy:"50%",labelLine:!1,label:({name:q,percent:ie})=>ie&&ie<.05?"":`${q} ${ie?(ie*100).toFixed(0):0}%`,outerRadius:100,dataKey:"value",children:N.map((q,ie)=>e.jsx(lN,{fill:q.fill},`cell-${ie}`))})]})})})]}),e.jsxs(Fe,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"模型详细统计"}),e.jsx(Zs,{children:"请求数、花费和性能"})]}),e.jsx(bs,{children:e.jsx(Pe,{className:"h-[300px] sm:h-[400px]",children:e.jsx("div",{className:"space-y-3",children:O.map((q,ie)=>e.jsxs("div",{className:"p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("h4",{className:"font-semibold text-sm truncate flex-1 min-w-0",children:q.model_name}),e.jsx("div",{className:"w-3 h-3 rounded-full ml-2 flex-shrink-0",style:{backgroundColor:`hsl(var(--chart-${ie%5+1}))`}})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"请求数:"}),e.jsx("span",{className:"ml-1 font-medium",children:q.request_count.toLocaleString()})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"花费:"}),e.jsxs("span",{className:"ml-1 font-medium",children:["¥",q.total_cost.toFixed(2)]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),e.jsxs("span",{className:"ml-1 font-medium",children:[(q.total_tokens/1e3).toFixed(1),"K"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"平均耗时:"}),e.jsxs("span",{className:"ml-1 font-medium",children:[q.avg_response_time.toFixed(2),"s"]})]})]})]},ie))})})})]})]})}),e.jsx(We,{value:"activity",children:e.jsxs(Fe,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"最近活动"}),e.jsx(Zs,{children:"最新的API调用记录"})]}),e.jsx(bs,{children:e.jsx(Pe,{className:"h-[400px] sm:h-[500px]",children:e.jsx("div",{className:"space-y-2",children:Ne.map((q,ie)=>e.jsxs("div",{className:"p-3 sm:p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-2 mb-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-sm truncate",children:q.model}),e.jsx("div",{className:"text-xs text-muted-foreground",children:q.request_type})]}),e.jsx("div",{className:"text-xs text-muted-foreground flex-shrink-0",children:je(q.timestamp)})]}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-2 text-xs",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),e.jsx("span",{className:"ml-1",children:q.tokens})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"花费:"}),e.jsxs("span",{className:"ml-1",children:["¥",q.cost.toFixed(4)]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"耗时:"}),e.jsxs("span",{className:"ml-1",children:[q.time_cost.toFixed(2),"s"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"状态:"}),e.jsx("span",{className:`ml-1 ${q.status==="success"?"text-green-600":"text-red-600"}`,children:q.status})]})]})]},ie))})})})]})}),e.jsx(We,{value:"daily",children:e.jsxs(Fe,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"每日统计"}),e.jsx(Zs,{children:"最近7天的数据汇总"})]}),e.jsx(bs,{children:e.jsx(Zn,{config:{requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"}},className:"h-[400px] sm:h-[500px] w-full aspect-auto",children:e.jsxs(Su,{data:he,children:[e.jsx(Gc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Vc,{dataKey:"timestamp",tickFormatter:q=>{const ie=new Date(q);return`${ie.getMonth()+1}/${ie.getDate()}`},stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{yAxisId:"left",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{yAxisId:"right",orientation:"right",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{content:e.jsx(Jn,{labelFormatter:q=>new Date(q).toLocaleDateString("zh-CN")})}),e.jsx(Fb,{content:e.jsx(Tg,{})}),e.jsx(Fc,{yAxisId:"left",dataKey:"requests",fill:"var(--color-requests)"}),e.jsx(Fc,{yAxisId:"right",dataKey:"cost",fill:"var(--color-cost)"})]})})})]})})]})]})})}const Pb={theme:"system",setTheme:()=>null},Eg=u.createContext(Pb),Yu=()=>{const n=u.useContext(Eg);if(n===void 0)throw new Error("useTheme must be used within a ThemeProvider");return n},Wb=(n,r,c)=>{const d=document.documentElement.classList.contains("no-animations");if(!document.startViewTransition||d){r(n);return}const h=c.clientX,x=c.clientY,f=Math.hypot(Math.max(h,innerWidth-h),Math.max(x,innerHeight-x));document.startViewTransition(()=>{r(n)}).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${h}px ${x}px)`,`circle(${f}px at ${h}px ${x}px)`]},{duration:500,easing:"ease-in-out",pseudoElement:"::view-transition-new(root)"})})},zg=u.createContext(void 0),Mg=()=>{const n=u.useContext(zg);if(n===void 0)throw new Error("useAnimation must be used within an AnimationProvider");return n},Ve=u.forwardRef(({className:n,...r},c)=>e.jsx(Tp,{className:Q("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",n),...r,ref:c,children:e.jsx(Oy,{className:Q("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));Ve.displayName=Tp.displayName;const e0=ai("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),b=u.forwardRef(({className:n,...r},c)=>e.jsx(Jp,{ref:c,className:Q(e0(),n),...r}));b.displayName=Jp.displayName;const ce=u.forwardRef(({className:n,type:r,...c},d)=>e.jsx("input",{type:r,className:Q("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",n),ref:d,...c}));ce.displayName="Input";const s0=[{id:"minLength",label:"长度至少 10 位",description:"Token 长度必须大于等于 10 个字符",validate:n=>n.length>=10},{id:"hasUppercase",label:"包含大写字母",description:"至少包含一个大写字母 (A-Z)",validate:n=>/[A-Z]/.test(n)},{id:"hasLowercase",label:"包含小写字母",description:"至少包含一个小写字母 (a-z)",validate:n=>/[a-z]/.test(n)},{id:"hasSpecialChar",label:"包含特殊符号",description:"至少包含一个特殊符号 (!@#$%^&*()_+-=[]{}|;:,.<>?/)",validate:n=>/[!@#$%^&*()_+\-=[\]{}|;:,.<>?/]/.test(n)}];function t0(n){const r=s0.map(d=>({id:d.id,label:d.label,description:d.description,passed:d.validate(n)}));return{isValid:r.every(d=>d.passed),rules:r}}const Xu="0.11.6 Beta",Ku="MaiBot Dashboard",a0=`${Ku} v${Xu}`,l0=(n="v")=>`${n}${Xu}`,Ot={THEME:"maibot-ui-theme",ACCENT_COLOR:"accent-color",ENABLE_ANIMATIONS:"maibot-animations",ENABLE_WAVES_BACKGROUND:"maibot-waves-background",LOG_CACHE_SIZE:"maibot-log-cache-size",LOG_AUTO_SCROLL:"maibot-log-auto-scroll",LOG_FONT_SIZE:"maibot-log-font-size",LOG_LINE_SPACING:"maibot-log-line-spacing",DATA_SYNC_INTERVAL:"maibot-data-sync-interval",WS_RECONNECT_INTERVAL:"maibot-ws-reconnect-interval",WS_MAX_RECONNECT_ATTEMPTS:"maibot-ws-max-reconnect-attempts",COMPLETED_TOURS:"maibot-completed-tours"},za={theme:"system",accentColor:"blue",enableAnimations:!0,enableWavesBackground:!0,logCacheSize:1e3,logAutoScroll:!0,logFontSize:"xs",logLineSpacing:4,dataSyncInterval:30,wsReconnectInterval:3e3,wsMaxReconnectAttempts:10};function $s(n){const r=Ag(n),c=localStorage.getItem(r);if(c===null)return za[n];const d=za[n];if(typeof d=="boolean")return c==="true";if(typeof d=="number"){const h=parseFloat(c);return isNaN(h)?d:h}return c}function Pn(n,r){const c=Ag(n);localStorage.setItem(c,String(r)),window.dispatchEvent(new CustomEvent("maibot-settings-change",{detail:{key:n,value:r}}))}function n0(){return{theme:$s("theme"),accentColor:$s("accentColor"),enableAnimations:$s("enableAnimations"),enableWavesBackground:$s("enableWavesBackground"),logCacheSize:$s("logCacheSize"),logAutoScroll:$s("logAutoScroll"),logFontSize:$s("logFontSize"),logLineSpacing:$s("logLineSpacing"),dataSyncInterval:$s("dataSyncInterval"),wsReconnectInterval:$s("wsReconnectInterval"),wsMaxReconnectAttempts:$s("wsMaxReconnectAttempts")}}function i0(){const n=n0(),r=localStorage.getItem(Ot.COMPLETED_TOURS),c=r?JSON.parse(r):[];return{...n,completedTours:c}}function r0(n){const r=[],c=[];for(const[d,h]of Object.entries(n)){if(d==="completedTours"){Array.isArray(h)?(localStorage.setItem(Ot.COMPLETED_TOURS,JSON.stringify(h)),r.push("completedTours")):c.push("completedTours");continue}if(d in za){const x=d,f=za[x];if(typeof h==typeof f){if(x==="theme"&&!["light","dark","system"].includes(h)){c.push(d);continue}if(x==="logFontSize"&&!["xs","sm","base"].includes(h)){c.push(d);continue}Pn(x,h),r.push(d)}else c.push(d)}else c.push(d)}return{success:r.length>0,imported:r,skipped:c}}function c0(){for(const n of Object.keys(za))Pn(n,za[n]);localStorage.removeItem(Ot.COMPLETED_TOURS),window.dispatchEvent(new CustomEvent("maibot-settings-reset"))}function o0(){const n=[],r=[],c=[];for(let d=0;dd.size-c.size),{used:n,items:localStorage.length,details:r}}function d0(n){if(n===0)return"0 B";const r=1024,c=["B","KB","MB"],d=Math.floor(Math.log(n)/Math.log(r));return parseFloat((n/Math.pow(r,d)).toFixed(2))+" "+c[d]}function Ag(n){return{theme:Ot.THEME,accentColor:Ot.ACCENT_COLOR,enableAnimations:Ot.ENABLE_ANIMATIONS,enableWavesBackground:Ot.ENABLE_WAVES_BACKGROUND,logCacheSize:Ot.LOG_CACHE_SIZE,logAutoScroll:Ot.LOG_AUTO_SCROLL,logFontSize:Ot.LOG_FONT_SIZE,logLineSpacing:Ot.LOG_LINE_SPACING,dataSyncInterval:Ot.DATA_SYNC_INTERVAL,wsReconnectInterval:Ot.WS_RECONNECT_INTERVAL,wsMaxReconnectAttempts:Ot.WS_MAX_RECONNECT_ATTEMPTS}[n]}const Ma=u.forwardRef(({className:n,...r},c)=>e.jsxs(Ep,{ref:c,className:Q("relative flex w-full touch-none select-none items-center",n),...r,children:[e.jsx(Ry,{className:"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20",children:e.jsx(Ly,{className:"absolute h-full bg-primary"})}),e.jsx(Uy,{className:"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"})]}));Ma.displayName=Ep.displayName;class u0{ws=null;reconnectTimeout=null;reconnectAttempts=0;heartbeatInterval=null;logCallbacks=new Set;connectionCallbacks=new Set;isConnected=!1;logCache=[];getMaxCacheSize(){return $s("logCacheSize")}getMaxReconnectAttempts(){return $s("wsMaxReconnectAttempts")}getReconnectInterval(){return $s("wsReconnectInterval")}getWebSocketUrl(){{const r=window.location.protocol==="https:"?"wss:":"ws:",c=window.location.host;return`${r}//${c}/ws/logs`}}connect(){if(this.ws?.readyState===WebSocket.OPEN||this.ws?.readyState===WebSocket.CONNECTING)return;const r=this.getWebSocketUrl();try{this.ws=new WebSocket(r),this.ws.onopen=()=>{this.isConnected=!0,this.reconnectAttempts=0,this.notifyConnection(!0),this.startHeartbeat()},this.ws.onmessage=c=>{try{if(c.data==="pong")return;const d=JSON.parse(c.data);this.notifyLog(d)}catch(d){console.error("解析日志消息失败:",d)}},this.ws.onerror=c=>{console.error("❌ WebSocket 错误:",c),this.isConnected=!1,this.notifyConnection(!1)},this.ws.onclose=()=>{this.isConnected=!1,this.notifyConnection(!1),this.stopHeartbeat(),this.attemptReconnect()}}catch(c){console.error("创建 WebSocket 连接失败:",c),this.attemptReconnect()}}attemptReconnect(){const r=this.getMaxReconnectAttempts();if(this.reconnectAttempts>=r)return;this.reconnectAttempts+=1;const c=this.getReconnectInterval(),d=Math.min(c*this.reconnectAttempts,3e4);this.reconnectTimeout=window.setTimeout(()=>{this.connect()},d)}startHeartbeat(){this.heartbeatInterval=window.setInterval(()=>{this.ws?.readyState===WebSocket.OPEN&&this.ws.send("ping")},3e4)}stopHeartbeat(){this.heartbeatInterval!==null&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}disconnect(){this.reconnectTimeout!==null&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.stopHeartbeat(),this.ws&&(this.ws.close(),this.ws=null),this.isConnected=!1,this.reconnectAttempts=0}onLog(r){return this.logCallbacks.add(r),()=>this.logCallbacks.delete(r)}onConnectionChange(r){return this.connectionCallbacks.add(r),r(this.isConnected),()=>this.connectionCallbacks.delete(r)}notifyLog(r){if(!this.logCache.some(d=>d.id===r.id)){this.logCache.push(r);const d=this.getMaxCacheSize();this.logCache.length>d&&(this.logCache=this.logCache.slice(-d)),this.logCallbacks.forEach(h=>{try{h(r)}catch(x){console.error("日志回调执行失败:",x)}})}}notifyConnection(r){this.connectionCallbacks.forEach(c=>{try{c(r)}catch(d){console.error("连接状态回调执行失败:",d)}})}getAllLogs(){return[...this.logCache]}clearLogs(){this.logCache=[]}getConnectionStatus(){return this.isConnected}}const an=new u0;typeof window<"u"&&an.connect();const Rs=rN,ni=cN,m0=iN,Zu=Wp,Dg=u.forwardRef(({className:n,...r},c)=>e.jsx(Ip,{ref:c,className:Q("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...r}));Dg.displayName=Ip.displayName;const zs=u.forwardRef(({className:n,children:r,preventOutsideClose:c=!1,...d},h)=>e.jsxs(m0,{children:[e.jsx(Dg,{}),e.jsxs(Pp,{ref:h,className:Q("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",n),onPointerDownOutside:c?x=>x.preventDefault():void 0,onInteractOutside:c?x=>x.preventDefault():void 0,...d,children:[r,e.jsxs(Wp,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[e.jsx(li,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));zs.displayName=Pp.displayName;const Ms=({className:n,...r})=>e.jsx("div",{className:Q("flex flex-col space-y-1.5 text-center sm:text-left",n),...r});Ms.displayName="DialogHeader";const Js=({className:n,...r})=>e.jsx("div",{className:Q("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",n),...r});Js.displayName="DialogFooter";const As=u.forwardRef(({className:n,...r},c)=>e.jsx(eg,{ref:c,className:Q("text-lg font-semibold leading-none tracking-tight",n),...r}));As.displayName=eg.displayName;const Ys=u.forwardRef(({className:n,...r},c)=>e.jsx(sg,{ref:c,className:Q("text-sm text-muted-foreground",n),...r}));Ys.displayName=sg.displayName;const ps=Hy,Qs=qy,h0=By,Og=u.forwardRef(({className:n,...r},c)=>e.jsx(zp,{className:Q("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...r,ref:c}));Og.displayName=zp.displayName;const rs=u.forwardRef(({className:n,...r},c)=>e.jsxs(h0,{children:[e.jsx(Og,{}),e.jsx(Mp,{ref:c,className:Q("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",n),...r})]}));rs.displayName=Mp.displayName;const cs=({className:n,...r})=>e.jsx("div",{className:Q("flex flex-col space-y-2 text-center sm:text-left",n),...r});cs.displayName="AlertDialogHeader";const os=({className:n,...r})=>e.jsx("div",{className:Q("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",n),...r});os.displayName="AlertDialogFooter";const ds=u.forwardRef(({className:n,...r},c)=>e.jsx(Ap,{ref:c,className:Q("text-lg font-semibold",n),...r}));ds.displayName=Ap.displayName;const us=u.forwardRef(({className:n,...r},c)=>e.jsx(Dp,{ref:c,className:Q("text-sm text-muted-foreground",n),...r}));us.displayName=Dp.displayName;const ms=u.forwardRef(({className:n,...r},c)=>e.jsx(Op,{ref:c,className:Q(gr(),n),...r}));ms.displayName=Op.displayName;const hs=u.forwardRef(({className:n,...r},c)=>e.jsx(Rp,{ref:c,className:Q(gr({variant:"outline"}),"mt-2 sm:mt-0",n),...r}));hs.displayName=Rp.displayName;function x0(){return e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"系统设置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理您的应用偏好设置"})]})}),e.jsxs(Kt,{defaultValue:"appearance",className:"w-full",children:[e.jsxs(Rt,{className:"grid w-full grid-cols-2 sm:grid-cols-4 gap-0.5 sm:gap-1 h-auto p-1",children:[e.jsxs($e,{value:"appearance",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(gg,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"外观"})]}),e.jsxs($e,{value:"security",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(CN,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"安全"})]}),e.jsxs($e,{value:"other",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(Rl,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"其他"})]}),e.jsxs($e,{value:"about",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(Xt,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"关于"})]})]}),e.jsxs(Pe,{className:"h-[calc(100vh-240px)] sm:h-[calc(100vh-280px)] mt-4 sm:mt-6",children:[e.jsx(We,{value:"appearance",className:"mt-0",children:e.jsx(f0,{})}),e.jsx(We,{value:"security",className:"mt-0",children:e.jsx(p0,{})}),e.jsx(We,{value:"other",className:"mt-0",children:e.jsx(g0,{})}),e.jsx(We,{value:"about",className:"mt-0",children:e.jsx(j0,{})})]})]})]})}function np(n){const r=document.documentElement,d={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[n];if(d)r.style.setProperty("--primary",d.hsl),d.gradient?(r.style.setProperty("--primary-gradient",d.gradient),r.classList.add("has-gradient")):(r.style.removeProperty("--primary-gradient"),r.classList.remove("has-gradient"));else if(n.startsWith("#")){const h=x=>{x=x.replace("#","");const f=parseInt(x.substring(0,2),16)/255,j=parseInt(x.substring(2,4),16)/255,p=parseInt(x.substring(4,6),16)/255,w=Math.max(f,j,p),v=Math.min(f,j,p);let k=0,T=0;const E=(w+v)/2;if(w!==v){const R=w-v;switch(T=E>.5?R/(2-w-v):R/(w+v),w){case f:k=((j-p)/R+(jlocalStorage.getItem("accent-color")||"blue");u.useEffect(()=>{const w=localStorage.getItem("accent-color")||"blue";np(w)},[]);const p=w=>{j(w),localStorage.setItem("accent-color",w),np(w)};return e.jsxs("div",{className:"space-y-6 sm:space-y-8",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题模式"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 sm:gap-4",children:[e.jsx(Au,{value:"light",current:n,onChange:r,label:"浅色",description:"始终使用浅色主题"}),e.jsx(Au,{value:"dark",current:n,onChange:r,label:"深色",description:"始终使用深色主题"}),e.jsx(Au,{value:"system",current:n,onChange:r,label:"跟随系统",description:"根据系统设置自动切换"})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题色"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"单色"}),e.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[e.jsx(ma,{value:"blue",current:f,onChange:p,label:"蓝色",colorClass:"bg-blue-500"}),e.jsx(ma,{value:"purple",current:f,onChange:p,label:"紫色",colorClass:"bg-purple-500"}),e.jsx(ma,{value:"green",current:f,onChange:p,label:"绿色",colorClass:"bg-green-500"}),e.jsx(ma,{value:"orange",current:f,onChange:p,label:"橙色",colorClass:"bg-orange-500"}),e.jsx(ma,{value:"pink",current:f,onChange:p,label:"粉色",colorClass:"bg-pink-500"}),e.jsx(ma,{value:"red",current:f,onChange:p,label:"红色",colorClass:"bg-red-500"})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"渐变色"}),e.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[e.jsx(ma,{value:"gradient-sunset",current:f,onChange:p,label:"日落",colorClass:"bg-gradient-to-r from-orange-500 to-pink-500"}),e.jsx(ma,{value:"gradient-ocean",current:f,onChange:p,label:"海洋",colorClass:"bg-gradient-to-r from-blue-500 to-cyan-500"}),e.jsx(ma,{value:"gradient-forest",current:f,onChange:p,label:"森林",colorClass:"bg-gradient-to-r from-green-500 to-emerald-500"}),e.jsx(ma,{value:"gradient-aurora",current:f,onChange:p,label:"极光",colorClass:"bg-gradient-to-r from-purple-500 to-pink-500"}),e.jsx(ma,{value:"gradient-fire",current:f,onChange:p,label:"烈焰",colorClass:"bg-gradient-to-r from-red-500 to-orange-500"}),e.jsx(ma,{value:"gradient-twilight",current:f,onChange:p,label:"暮光",colorClass:"bg-gradient-to-r from-indigo-500 to-purple-500"})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"自定义颜色"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 sm:gap-4",children:[e.jsx("div",{className:"flex-1",children:e.jsx("input",{type:"color",value:f.startsWith("#")?f:"#3b82f6",onChange:w=>p(w.target.value),className:"h-10 sm:h-12 w-full rounded-lg border-2 border-border cursor-pointer",title:"选择自定义颜色"})}),e.jsx("div",{className:"flex-1",children:e.jsx(ce,{type:"text",value:f,onChange:w=>p(w.target.value),placeholder:"#3b82f6",className:"font-mono text-sm"})})]}),e.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground mt-2",children:"点击色块选择颜色,或手动输入 HEX 颜色代码"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"动画效果"}),e.jsxs("div",{className:"space-y-2 sm:space-y-3",children:[e.jsx("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5 flex-1",children:[e.jsx(b,{htmlFor:"animations",className:"text-base font-medium cursor-pointer",children:"启用动画效果"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后将禁用所有过渡动画和特效,提升性能"})]}),e.jsx(Ve,{id:"animations",checked:c,onCheckedChange:d})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5 flex-1",children:[e.jsx(b,{htmlFor:"waves-background",className:"text-base font-medium cursor-pointer",children:"登录页波浪背景"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后登录页将使用纯色背景,适合低性能设备"})]}),e.jsx(Ve,{id:"waves-background",checked:h,onCheckedChange:x})]})})]})]})]})}function p0(){const n=Jt(),[r,c]=u.useState(""),[d,h]=u.useState(""),[x,f]=u.useState(!1),[j,p]=u.useState(!1),[w,v]=u.useState(!1),[k,T]=u.useState(!1),[E,R]=u.useState(!1),[K,U]=u.useState(!1),[A,Z]=u.useState(""),[H,z]=u.useState(!1),{toast:B}=Hs(),X=u.useMemo(()=>t0(d),[d]),S=async pe=>{if(!r){B({title:"无法复制",description:"Token 存储在安全 Cookie 中,请重新生成以获取新 Token",variant:"destructive"});return}try{await navigator.clipboard.writeText(pe),R(!0),B({title:"复制成功",description:"Token 已复制到剪贴板"}),setTimeout(()=>R(!1),2e3)}catch{B({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},O=async()=>{if(!d.trim()){B({title:"输入错误",description:"请输入新的 Token",variant:"destructive"});return}if(!X.isValid){const pe=X.rules.filter(je=>!je.passed).map(je=>je.label).join(", ");B({title:"格式错误",description:`Token 不符合要求: ${pe}`,variant:"destructive"});return}v(!0);try{const pe=await fetch("/api/webui/auth/update",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({new_token:d.trim()})}),je=await pe.json();pe.ok&&je.success?(h(""),c(d.trim()),B({title:"更新成功",description:"Access Token 已更新,即将跳转到登录页"}),setTimeout(()=>{n({to:"/auth"})},1500)):B({title:"更新失败",description:je.message||"无法更新 Token",variant:"destructive"})}catch(pe){console.error("更新 Token 错误:",pe),B({title:"更新失败",description:"连接服务器失败",variant:"destructive"})}finally{v(!1)}},te=async()=>{T(!0);try{const pe=await fetch("/api/webui/auth/regenerate",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include"}),je=await pe.json();pe.ok&&je.success?(c(je.token),Z(je.token),U(!0),z(!1),B({title:"生成成功",description:"新的 Access Token 已生成,请及时保存"})):B({title:"生成失败",description:je.message||"无法生成新 Token",variant:"destructive"})}catch(pe){console.error("生成 Token 错误:",pe),B({title:"生成失败",description:"连接服务器失败",variant:"destructive"})}finally{T(!1)}},he=async()=>{try{await navigator.clipboard.writeText(A),z(!0),B({title:"复制成功",description:"Token 已复制到剪贴板"})}catch{B({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},Ne=()=>{U(!1),setTimeout(()=>{Z(""),z(!1)},300),setTimeout(()=>{n({to:"/auth"})},500)},ye=pe=>{pe||Ne()};return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsx(Rs,{open:K,onOpenChange:ye,children:e.jsxs(zs,{className:"sm:max-w-md",children:[e.jsxs(Ms,{children:[e.jsxs(As,{className:"flex items-center gap-2",children:[e.jsx(ba,{className:"h-5 w-5 text-yellow-500"}),"新的 Access Token"]}),e.jsx(Ys,{children:"这是您的新 Token,请立即保存。关闭此窗口后将跳转到登录页面。"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"rounded-lg border-2 border-primary/20 bg-primary/5 p-4",children:[e.jsx(b,{className:"text-xs text-muted-foreground mb-2 block",children:"您的新 Token (64位安全令牌)"}),e.jsx("div",{className:"font-mono text-sm break-all select-all bg-background p-3 rounded border",children:A})]}),e.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ba,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5"}),e.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[e.jsx("p",{className:"font-semibold",children:"重要提示"}),e.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[e.jsx("li",{children:"此 Token 仅显示一次,关闭后无法再查看"}),e.jsx("li",{children:"请立即复制并保存到安全的位置"}),e.jsx("li",{children:"关闭窗口后将自动跳转到登录页面"}),e.jsx("li",{children:"请使用新 Token 重新登录系统"})]})]})]})})]}),e.jsxs(Js,{className:"gap-2 sm:gap-0",children:[e.jsx(y,{variant:"outline",onClick:he,className:"gap-2",children:H?e.jsxs(e.Fragment,{children:[e.jsx(fa,{className:"h-4 w-4 text-green-500"}),"已复制"]}):e.jsxs(e.Fragment,{children:[e.jsx(so,{className:"h-4 w-4"}),"复制 Token"]})}),e.jsx(y,{onClick:Ne,children:"我已保存,关闭"})]})]})}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"当前 Access Token"}),e.jsx("div",{className:"space-y-3 sm:space-y-4",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"current-token",className:"text-sm",children:"您的访问令牌"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(ce,{id:"current-token",type:x?"text":"password",value:r||"••••••••••••••••••••••••••••••••",readOnly:!0,className:"pr-10 font-mono text-sm",placeholder:"Token 存储在安全 Cookie 中"}),e.jsx("button",{onClick:()=>{r?f(!x):B({title:"无法查看",description:'Token 存储在安全 Cookie 中,如需新 Token 请点击"重新生成"'})},className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:x?"隐藏":"显示",children:x?e.jsx(mr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Zt,{className:"h-4 w-4 text-muted-foreground"})})]}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[e.jsx(y,{variant:"outline",size:"icon",onClick:()=>S(r),title:"复制到剪贴板",className:"flex-shrink-0",disabled:!r,children:E?e.jsx(fa,{className:"h-4 w-4 text-green-500"}):e.jsx(so,{className:"h-4 w-4"})}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(y,{variant:"outline",disabled:k,className:"gap-2 flex-1 sm:flex-none",children:[e.jsx(pt,{className:Q("h-4 w-4",k&&"animate-spin")}),e.jsx("span",{className:"hidden sm:inline",children:"重新生成"}),e.jsx("span",{className:"sm:hidden",children:"生成"})]})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认重新生成 Token"}),e.jsx(us,{children:"这将生成一个新的 64 位安全令牌,并使当前 Token 立即失效。 您需要使用新 Token 重新登录系统。此操作不可撤销,确定要继续吗?"})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:te,children:"确认生成"})]})]})]})]})]}),e.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground",children:"请妥善保管您的 Access Token,不要泄露给他人"})]})})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"自定义 Access Token"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"new-token",className:"text-sm",children:"新的访问令牌"}),e.jsxs("div",{className:"relative",children:[e.jsx(ce,{id:"new-token",type:j?"text":"password",value:d,onChange:pe=>h(pe.target.value),className:"pr-10 font-mono text-sm",placeholder:"输入自定义 Token"}),e.jsx("button",{onClick:()=>p(!j),className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:j?"隐藏":"显示",children:j?e.jsx(mr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Zt,{className:"h-4 w-4 text-muted-foreground"})})]}),d&&e.jsxs("div",{className:"mt-3 space-y-2 p-3 rounded-lg bg-muted/50",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"Token 安全要求:"}),e.jsx("div",{className:"space-y-1.5",children:X.rules.map(pe=>e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[pe.passed?e.jsx(pa,{className:"h-4 w-4 text-green-500 flex-shrink-0"}):e.jsx(jg,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),e.jsx("span",{className:Q(pe.passed?"text-green-600 dark:text-green-400":"text-muted-foreground"),children:pe.label})]},pe.id))}),X.isValid&&e.jsx("div",{className:"mt-2 pt-2 border-t border-border",children:e.jsxs("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[e.jsx(fa,{className:"h-4 w-4"}),e.jsx("span",{className:"font-medium",children:"Token 格式正确,可以使用"})]})})]})]}),e.jsx(y,{onClick:O,disabled:w||!X.isValid||!d,className:"w-full sm:w-auto",children:w?"更新中...":"更新自定义 Token"})]})]}),e.jsxs("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3 sm:p-4",children:[e.jsx("h4",{className:"text-sm sm:text-base font-semibold text-yellow-900 dark:text-yellow-200 mb-2",children:"安全提示"}),e.jsxs("ul",{className:"text-xs sm:text-sm text-yellow-800 dark:text-yellow-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"重新生成 Token 会创建系统随机生成的 64 位安全令牌"}),e.jsx("li",{children:"自定义 Token 必须满足所有安全要求才能使用"}),e.jsx("li",{children:"更新 Token 后,旧的 Token 将立即失效"}),e.jsx("li",{children:"请在安全的环境下查看和复制 Token"}),e.jsx("li",{children:"如果怀疑 Token 泄露,请立即重新生成或更新"}),e.jsx("li",{children:"建议使用系统生成的 Token 以获得最高安全性"})]})]})]})}function g0(){const n=Jt(),{toast:r}=Hs(),[c,d]=u.useState(!1),[h,x]=u.useState(!1),[f,j]=u.useState(()=>$s("logCacheSize")),[p,w]=u.useState(()=>$s("wsReconnectInterval")),[v,k]=u.useState(()=>$s("wsMaxReconnectAttempts")),[T,E]=u.useState(()=>$s("dataSyncInterval")),[R,K]=u.useState(()=>lp()),[U,A]=u.useState(!1),[Z,H]=u.useState(!1),z=u.useRef(null);if(h)throw new Error("这是一个手动触发的测试错误,用于验证错误边界组件是否正常工作。");const B=()=>{K(lp())},X=N=>{const G=N[0];j(G),Pn("logCacheSize",G)},S=N=>{const G=N[0];w(G),Pn("wsReconnectInterval",G)},O=N=>{const G=N[0];k(G),Pn("wsMaxReconnectAttempts",G)},te=N=>{const G=N[0];E(G),Pn("dataSyncInterval",G)},he=()=>{an.clearLogs(),r({title:"日志已清除",description:"日志缓存已清空"})},Ne=()=>{const N=o0();B(),r({title:"缓存已清除",description:`已清除 ${N.clearedKeys.length} 项缓存数据`})},ye=()=>{A(!0);try{const N=i0(),G=JSON.stringify(N,null,2),q=new Blob([G],{type:"application/json"}),ie=URL.createObjectURL(q),_=document.createElement("a");_.href=ie,_.download=`maibot-webui-settings-${new Date().toISOString().slice(0,10)}.json`,document.body.appendChild(_),_.click(),document.body.removeChild(_),URL.revokeObjectURL(ie),r({title:"导出成功",description:"设置已导出为 JSON 文件"})}catch(N){console.error("导出设置失败:",N),r({title:"导出失败",description:"无法导出设置",variant:"destructive"})}finally{A(!1)}},pe=N=>{const G=N.target.files?.[0];if(!G)return;H(!0);const q=new FileReader;q.onload=ie=>{try{const _=ie.target?.result,me=JSON.parse(_),xe=r0(me);xe.success?(j($s("logCacheSize")),w($s("wsReconnectInterval")),k($s("wsMaxReconnectAttempts")),E($s("dataSyncInterval")),B(),r({title:"导入成功",description:`成功导入 ${xe.imported.length} 项设置${xe.skipped.length>0?`,跳过 ${xe.skipped.length} 项`:""}`}),(xe.imported.includes("theme")||xe.imported.includes("accentColor"))&&r({title:"提示",description:"部分设置需要刷新页面才能完全生效"})):r({title:"导入失败",description:"没有有效的设置项可导入",variant:"destructive"})}catch(_){console.error("导入设置失败:",_),r({title:"导入失败",description:"文件格式无效",variant:"destructive"})}finally{H(!1),z.current&&(z.current.value="")}},q.readAsText(G)},je=()=>{c0(),j(za.logCacheSize),w(za.wsReconnectInterval),k(za.wsMaxReconnectAttempts),E(za.dataSyncInterval),B(),r({title:"已重置",description:"所有设置已恢复为默认值,刷新页面以应用更改"})},_e=async()=>{d(!0);try{const N=localStorage.getItem("access-token"),G=await fetch("/api/webui/setup/reset",{method:"POST",headers:{Authorization:`Bearer ${N}`}}),q=await G.json();G.ok&&q.success?(r({title:"重置成功",description:"即将进入初次配置向导"}),setTimeout(()=>{n({to:"/setup"})},1e3)):r({title:"重置失败",description:q.message||"无法重置配置状态",variant:"destructive"})}catch(N){console.error("重置配置状态错误:",N),r({title:"重置失败",description:"连接服务器失败",variant:"destructive"})}finally{d(!1)}};return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(eo,{className:"h-5 w-5"}),"性能与存储"]}),e.jsxs("div",{className:"space-y-4 sm:space-y-5",children:[e.jsxs("div",{className:"rounded-lg bg-muted/50 p-3 sm:p-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("span",{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(kN,{className:"h-4 w-4"}),"本地存储使用"]}),e.jsx(y,{variant:"ghost",size:"sm",onClick:B,className:"h-7 px-2",children:e.jsx(pt,{className:"h-3 w-3"})})]}),e.jsx("div",{className:"text-2xl font-bold text-primary",children:d0(R.used)}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:[R.items," 个存储项"]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"日志缓存大小"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[f," 条"]})]}),e.jsx(Ma,{value:[f],onValueChange:X,min:100,max:5e3,step:100,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"控制日志查看器最多缓存的日志条数,较大的值会占用更多内存"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"首页数据刷新间隔"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[T," 秒"]})]}),e.jsx(Ma,{value:[T],onValueChange:te,min:10,max:120,step:5,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"控制首页统计数据的自动刷新间隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"WebSocket 重连间隔"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[p/1e3," 秒"]})]}),e.jsx(Ma,{value:[p],onValueChange:S,min:1e3,max:1e4,step:500,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"日志 WebSocket 连接断开后的重连基础间隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"WebSocket 最大重连次数"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[v," 次"]})]}),e.jsx(Ma,{value:[v],onValueChange:O,min:3,max:30,step:1,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"连接失败后的最大重连尝试次数"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2 pt-2",children:[e.jsxs(y,{variant:"outline",size:"sm",onClick:he,className:"gap-2",children:[e.jsx(es,{className:"h-4 w-4"}),"清除日志缓存"]}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(y,{variant:"outline",size:"sm",className:"gap-2",children:[e.jsx(es,{className:"h-4 w-4"}),"清除本地缓存"]})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认清除本地缓存"}),e.jsx(us,{children:"这将清除所有本地缓存的设置和数据(不包括登录凭证)。 您可能需要重新配置部分偏好设置。确定要继续吗?"})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:Ne,children:"确认清除"})]})]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(nl,{className:"h-5 w-5"}),"导入/导出设置"]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"导出当前的界面设置以便备份,或从之前导出的文件中恢复设置。"}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(y,{variant:"outline",onClick:ye,disabled:U,className:"gap-2",children:[e.jsx(nl,{className:"h-4 w-4"}),U?"导出中...":"导出设置"]}),e.jsx("input",{ref:z,type:"file",accept:".json",onChange:pe,className:"hidden"}),e.jsxs(y,{variant:"outline",onClick:()=>z.current?.click(),disabled:Z,className:"gap-2",children:[e.jsx(hr,{className:"h-4 w-4"}),Z?"导入中...":"导入设置"]})]}),e.jsx("div",{className:"pt-2 border-t",children:e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(y,{variant:"outline",size:"sm",className:"gap-2 text-destructive hover:text-destructive",children:[e.jsx(Wc,{className:"h-4 w-4"}),"重置所有设置为默认值"]})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认重置所有设置"}),e.jsx(us,{children:"这将把所有界面设置恢复为默认值,包括主题、颜色、动画等偏好设置。 此操作不会影响您的登录状态。确定要继续吗?"})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:je,children:"确认重置"})]})]})]})})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"配置向导"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsx("div",{className:"space-y-2",children:e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"重新进行初次配置向导,可以帮助您重新设置系统的基础配置。"})}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(y,{variant:"outline",disabled:c,className:"gap-2",children:[e.jsx(Wc,{className:Q("h-4 w-4",c&&"animate-spin")}),"重新进行初次配置"]})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认重新配置"}),e.jsx(us,{children:"这将带您重新进入初次配置向导。您可以重新设置系统的基础配置项。确定要继续吗?"})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:_e,children:"确认重置"})]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border border-dashed border-yellow-500/50 bg-yellow-500/5 p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(ba,{className:"h-5 w-5 text-yellow-500"}),"开发者工具"]}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsx("div",{className:"space-y-2",children:e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"以下功能仅供开发调试使用,可能会导致页面崩溃或异常。"})}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(y,{variant:"destructive",className:"gap-2",children:[e.jsx(ba,{className:"h-4 w-4"}),"触发测试错误"]})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认触发错误"}),e.jsx(us,{children:"这将手动触发一个 React 错误,用于测试错误边界组件的显示效果。 页面将显示错误界面,您可以通过刷新页面或点击返回首页来恢复。"})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>x(!0),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认触发"})]})]})]})]})]})]})}function j0(){return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsx("div",{className:"rounded-lg border-2 border-primary/30 bg-gradient-to-r from-primary/5 to-primary/10 p-4 sm:p-6",children:e.jsxs("div",{className:"flex items-start gap-3 sm:gap-4",children:[e.jsx("div",{className:"flex-shrink-0 rounded-lg bg-primary/10 p-2 sm:p-3",children:e.jsx("svg",{className:"h-6 w-6 sm:h-8 sm:w-8 text-primary",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:"text-lg sm:text-xl font-bold text-foreground mb-2",children:"开源项目"}),e.jsx("p",{className:"text-sm sm:text-base text-muted-foreground mb-3",children:"本项目在 GitHub 开源,欢迎 Star ⭐ 支持!"}),e.jsxs("a",{href:"https://github.com/Mai-with-u/MaiBot-Dashboard",target:"_blank",rel:"noopener noreferrer",className:Q("inline-flex items-center gap-2 px-4 py-2 rounded-lg","bg-primary text-primary-foreground font-medium text-sm","hover:bg-primary/90 transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"),children:[e.jsx("svg",{className:"h-4 w-4",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})}),"前往 GitHub",e.jsx("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})})]})]})]})}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:["关于 ",Ku]}),e.jsxs("div",{className:"space-y-2 text-xs sm:text-sm text-muted-foreground",children:[e.jsxs("p",{children:["版本: ",Xu]}),e.jsx("p",{children:"麦麦(MaiBot)的现代化 Web 管理界面"})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"作者"}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"MaiBot 核心"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"Mai-with-u"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"WebUI"}),e.jsxs("p",{className:"text-xs sm:text-sm text-muted-foreground",children:["Mai-with-u ",e.jsx("a",{href:"https://github.com/DrSmoothl",target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"@MotricSeven"})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"技术栈"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-xs sm:text-sm text-muted-foreground",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"前端框架"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"React 19.2.0"}),e.jsx("li",{children:"TypeScript 5.7.2"}),e.jsx("li",{children:"Vite 6.0.7"}),e.jsx("li",{children:"TanStack Router 1.94.2"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"UI 组件"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"shadcn/ui"}),e.jsx("li",{children:"Radix UI"}),e.jsx("li",{children:"Tailwind CSS 3.4.17"}),e.jsx("li",{children:"Lucide Icons"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"后端"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"Python 3.12+"}),e.jsx("li",{children:"FastAPI"}),e.jsx("li",{children:"Uvicorn"}),e.jsx("li",{children:"WebSocket"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"构建工具"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"Bun / npm"}),e.jsx("li",{children:"ESLint 9.17.0"}),e.jsx("li",{children:"PostCSS"})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源库感谢"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mb-3",children:"本项目使用了以下优秀的开源库,感谢他们的贡献:"}),e.jsx(Pe,{className:"h-[300px] sm:h-[400px]",children:e.jsxs("div",{className:"space-y-4 pr-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"UI 框架与组件"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(qs,{name:"React",description:"用户界面构建库",license:"MIT"}),e.jsx(qs,{name:"shadcn/ui",description:"优雅的 React 组件库",license:"MIT"}),e.jsx(qs,{name:"Radix UI",description:"无样式的可访问组件库",license:"MIT"}),e.jsx(qs,{name:"Tailwind CSS",description:"实用优先的 CSS 框架",license:"MIT"}),e.jsx(qs,{name:"Lucide React",description:"精美的图标库",license:"ISC"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"路由与状态管理"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(qs,{name:"TanStack Router",description:"类型安全的路由库",license:"MIT"}),e.jsx(qs,{name:"Zustand",description:"轻量级状态管理",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"表单处理"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(qs,{name:"React Hook Form",description:"高性能表单库",license:"MIT"}),e.jsx(qs,{name:"Zod",description:"TypeScript 优先的 schema 验证",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"工具库"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(qs,{name:"clsx",description:"条件 className 构建工具",license:"MIT"}),e.jsx(qs,{name:"tailwind-merge",description:"Tailwind 类名合并工具",license:"MIT"}),e.jsx(qs,{name:"class-variance-authority",description:"组件变体管理",license:"Apache-2.0"}),e.jsx(qs,{name:"date-fns",description:"现代化日期处理库",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"动画效果"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(qs,{name:"Framer Motion",description:"React 动画库",license:"MIT"}),e.jsx(qs,{name:"vaul",description:"抽屉组件动画",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"后端框架"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(qs,{name:"FastAPI",description:"现代化 Python Web 框架",license:"MIT"}),e.jsx(qs,{name:"Uvicorn",description:"ASGI 服务器",license:"BSD-3-Clause"}),e.jsx(qs,{name:"Pydantic",description:"数据验证库",license:"MIT"}),e.jsx(qs,{name:"python-multipart",description:"文件上传支持",license:"Apache-2.0"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"开发工具"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(qs,{name:"TypeScript",description:"JavaScript 的超集",license:"Apache-2.0"}),e.jsx(qs,{name:"Vite",description:"下一代前端构建工具",license:"MIT"}),e.jsx(qs,{name:"ESLint",description:"JavaScript 代码检查工具",license:"MIT"}),e.jsx(qs,{name:"PostCSS",description:"CSS 转换工具",license:"MIT"})]})]})]})})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源许可"}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"rounded-lg bg-primary/5 border border-primary/20 p-3 sm:p-4",children:e.jsxs("div",{className:"flex items-start gap-2 sm:gap-3",children:[e.jsx("div",{className:"flex-shrink-0 mt-0.5",children:e.jsx("div",{className:"rounded-md bg-primary/10 px-2 py-1",children:e.jsx("span",{className:"text-xs sm:text-sm font-bold text-primary",children:"GPLv3"})})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm sm:text-base font-semibold text-foreground mb-1",children:"MaiBot WebUI"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目采用 GNU General Public License v3.0 开源许可证。 您可以自由地使用、修改和分发本软件,但必须保持相同的开源许可。"})]})]})}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目依赖的所有开源库均遵循各自的开源许可证(MIT、Apache-2.0、BSD 等)。 感谢所有开源贡献者的无私奉献。"})]})]})]})}function qs({name:n,description:r,license:c}){return e.jsxs("div",{className:"flex items-start justify-between gap-2 rounded-lg border bg-muted/30 p-2.5 sm:p-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium text-foreground truncate",children:n}),e.jsx("p",{className:"text-muted-foreground text-xs mt-0.5",children:r})]}),e.jsx("span",{className:"inline-flex items-center rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-medium text-primary flex-shrink-0",children:c})]})}function Au({value:n,current:r,onChange:c,label:d,description:h}){const x=r===n;return e.jsxs("button",{onClick:()=>c(n),className:Q("relative rounded-lg border-2 p-3 sm:p-4 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",x?"border-primary bg-accent":"border-border"),children:[x&&e.jsx("div",{className:"absolute top-2 right-2 sm:top-3 sm:right-3 h-2 w-2 rounded-full bg-primary"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-sm sm:text-base font-medium",children:d}),e.jsx("div",{className:"text-[10px] sm:text-xs text-muted-foreground",children:h})]}),e.jsxs("div",{className:"mt-2 sm:mt-3 flex gap-1",children:[n==="light"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-200"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-300"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-400"})]}),n==="dark"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-700"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-800"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-900"})]}),n==="system"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-200 to-slate-700"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-300 to-slate-800"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-400 to-slate-900"})]})]})]})}function ma({value:n,current:r,onChange:c,label:d,colorClass:h}){const x=r===n;return e.jsxs("button",{onClick:()=>c(n),className:Q("relative rounded-lg border-2 p-2 sm:p-3 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",x?"border-primary bg-accent":"border-border"),children:[x&&e.jsx("div",{className:"absolute top-1.5 right-1.5 sm:top-2 sm:right-2 h-1.5 w-1.5 sm:h-2 sm:w-2 rounded-full bg-primary"}),e.jsxs("div",{className:"flex flex-col items-center gap-1.5 sm:gap-2",children:[e.jsx("div",{className:Q("h-8 w-8 sm:h-10 sm:w-10 rounded-full",h)}),e.jsx("div",{className:"text-[10px] sm:text-xs font-medium text-center",children:d})]})]})}class v0{grad3;p;perm;constructor(r=0){this.grad3=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],this.p=[];for(let c=0;c<256;c++)this.p[c]=Math.floor(Math.random()*256);this.perm=[];for(let c=0;c<512;c++)this.perm[c]=this.p[c&255]}dot(r,c,d){return r[0]*c+r[1]*d}mix(r,c,d){return(1-d)*r+d*c}fade(r){return r*r*r*(r*(r*6-15)+10)}perlin2(r,c){const d=Math.floor(r)&255,h=Math.floor(c)&255;r-=Math.floor(r),c-=Math.floor(c);const x=this.fade(r),f=this.fade(c),j=this.perm[d]+h,p=this.perm[j],w=this.perm[j+1],v=this.perm[d+1]+h,k=this.perm[v],T=this.perm[v+1];return this.mix(this.mix(this.dot(this.grad3[p%12],r,c),this.dot(this.grad3[k%12],r-1,c),x),this.mix(this.dot(this.grad3[w%12],r,c-1),this.dot(this.grad3[T%12],r-1,c-1),x),f)}}function ip(){const n=u.useRef(null),r=u.useRef(null),c=u.useRef(void 0),d=u.useRef({mouse:{x:-10,y:0,lx:0,ly:0,sx:0,sy:0,v:0,vs:0,a:0,set:!1},lines:[],paths:[],noise:new v0(Math.random()),bounding:null});return u.useEffect(()=>{const h=r.current,x=n.current;if(!h||!x)return;const f=d.current,j=()=>{const K=h.getBoundingClientRect();f.bounding=K,x.style.width=`${K.width}px`,x.style.height=`${K.height}px`},p=()=>{if(!f.bounding)return;const{width:K,height:U}=f.bounding;f.lines=[],f.paths.forEach(te=>te.remove()),f.paths=[];const A=10,Z=32,H=K+200,z=U+30,B=Math.ceil(H/A),X=Math.ceil(z/Z),S=(K-A*B)/2,O=(U-Z*X)/2;for(let te=0;te<=B;te++){const he=[];for(let ye=0;ye<=X;ye++){const pe={x:S+A*te,y:O+Z*ye,wave:{x:0,y:0},cursor:{x:0,y:0,vx:0,vy:0}};he.push(pe)}const Ne=document.createElementNS("http://www.w3.org/2000/svg","path");x.appendChild(Ne),f.paths.push(Ne),f.lines.push(he)}},w=K=>{const{lines:U,mouse:A,noise:Z}=f;U.forEach(H=>{H.forEach(z=>{const B=Z.perlin2((z.x+K*.0125)*.002,(z.y+K*.005)*.0015)*12;z.wave.x=Math.cos(B)*32,z.wave.y=Math.sin(B)*16;const X=z.x-A.sx,S=z.y-A.sy,O=Math.hypot(X,S),te=Math.max(175,A.vs);if(O{const A={x:K.x+K.wave.x+(U?K.cursor.x:0),y:K.y+K.wave.y+(U?K.cursor.y:0)};return A.x=Math.round(A.x*10)/10,A.y=Math.round(A.y*10)/10,A},k=()=>{const{lines:K,paths:U}=f;K.forEach((A,Z)=>{let H=v(A[0],!1),z=`M ${H.x} ${H.y}`;A.forEach((B,X)=>{const S=X===A.length-1;H=v(B,!S),z+=`L ${H.x} ${H.y}`}),U[Z].setAttribute("d",z)})},T=K=>{const{mouse:U}=f;U.sx+=(U.x-U.sx)*.1,U.sy+=(U.y-U.sy)*.1;const A=U.x-U.lx,Z=U.y-U.ly,H=Math.hypot(A,Z);U.v=H,U.vs+=(H-U.vs)*.1,U.vs=Math.min(100,U.vs),U.lx=U.x,U.ly=U.y,U.a=Math.atan2(Z,A),h&&(h.style.setProperty("--x",`${U.sx}px`),h.style.setProperty("--y",`${U.sy}px`)),w(K),k(),c.current=requestAnimationFrame(T)},E=K=>{if(!f.bounding)return;const{mouse:U}=f;U.x=K.pageX-f.bounding.left,U.y=K.pageY-f.bounding.top+window.scrollY,U.set||(U.sx=U.x,U.sy=U.y,U.lx=U.x,U.ly=U.y,U.set=!0)},R=()=>{j(),p()};return j(),p(),window.addEventListener("resize",R),window.addEventListener("mousemove",E),c.current=requestAnimationFrame(T),()=>{window.removeEventListener("resize",R),window.removeEventListener("mousemove",E),c.current&&cancelAnimationFrame(c.current)}},[]),e.jsxs("div",{ref:r,className:"waves-background",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflow:"hidden",pointerEvents:"none"},children:[e.jsx("div",{className:"waves-cursor",style:{position:"absolute",top:0,left:0,width:"0.5rem",height:"0.5rem",background:"hsl(var(--primary) / 0.3)",borderRadius:"50%",transform:"translate3d(calc(var(--x, -0.5rem) - 50%), calc(var(--y, 50%) - 50%), 0)",willChange:"transform",pointerEvents:"none"}}),e.jsx("svg",{ref:n,style:{display:"block",width:"100%",height:"100%"},children:e.jsx("style",{children:` - path { - fill: none; - stroke: hsl(var(--primary) / 0.20); - stroke-width: 1px; - } - `})})]})}async function ke(n,r){const c={...r,credentials:"include",headers:{"Content-Type":"application/json",...r?.headers}},d=await fetch(n,c);if(d.status===401)throw window.location.href="/auth",new Error("认证失败,请重新登录");return d}function Ts(){return{"Content-Type":"application/json"}}async function y0(){try{await fetch("/api/webui/auth/logout",{method:"POST",credentials:"include"})}catch(n){console.error("登出请求失败:",n)}window.location.href="/auth"}async function Ju(){try{return(await(await fetch("/api/webui/auth/check",{method:"GET",credentials:"include"})).json()).authenticated===!0}catch{return!1}}function N0(){const[n,r]=u.useState(""),[c,d]=u.useState(!1),[h,x]=u.useState(""),[f,j]=u.useState(!0),p=Jt(),{enableWavesBackground:w,setEnableWavesBackground:v}=Mg(),{theme:k,setTheme:T}=Yu();u.useEffect(()=>{(async()=>{try{await Ju()&&p({to:"/"})}catch{}finally{j(!1)}})()},[p]);const R=k==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":k,K=()=>{T(R==="dark"?"light":"dark")},U=async A=>{if(A.preventDefault(),x(""),!n.trim()){x("请输入 Access Token");return}d(!0);try{const Z=await fetch("/api/webui/auth/verify",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:n.trim()})}),H=await Z.json();Z.ok&&H.valid?H.is_first_setup?p({to:"/setup"}):p({to:"/"}):x(H.message||"Token 验证失败,请检查后重试")}catch(Z){console.error("Token 验证错误:",Z),x("连接服务器失败,请检查网络连接")}finally{d(!1)}};return f?e.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[w&&e.jsx(ip,{}),e.jsx("div",{className:"text-muted-foreground",children:"正在检查登录状态..."})]}):e.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[w&&e.jsx(ip,{}),e.jsxs(Fe,{className:"relative z-10 w-full max-w-md shadow-2xl backdrop-blur-xl bg-card/80 border-border/50",children:[e.jsx("button",{onClick:K,className:"absolute right-4 top-4 rounded-lg p-2 hover:bg-accent transition-colors z-10 text-foreground",title:R==="dark"?"切换到浅色模式":"切换到深色模式",children:R==="dark"?e.jsx(Ou,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"}):e.jsx(Ru,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"})}),e.jsxs(gs,{className:"space-y-4 text-center",children:[e.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-2xl bg-primary/10",children:e.jsx(Yf,{className:"h-8 w-8 text-primary",strokeWidth:2,fill:"none"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(js,{className:"text-2xl font-bold",children:"欢迎使用 MaiBot"}),e.jsx(Zs,{className:"text-base",children:"请输入您的 Access Token 以继续访问系统"})]})]}),e.jsx(bs,{children:e.jsxs("form",{onSubmit:U,className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"token",className:"text-sm font-medium",children:"Access Token"}),e.jsxs("div",{className:"relative",children:[e.jsx(vg,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground",strokeWidth:2,fill:"none"}),e.jsx(ce,{id:"token",type:"password",placeholder:"请输入您的 Access Token",value:n,onChange:A=>r(A.target.value),className:Q("pl-10",h&&"border-red-500 focus-visible:ring-red-500"),disabled:c,autoFocus:!0,autoComplete:"off"})]})]}),h&&e.jsxs("div",{className:"flex items-center gap-2 rounded-md bg-red-50 p-3 text-sm text-red-600 dark:bg-red-950/50 dark:text-red-400",children:[e.jsx(Da,{className:"h-4 w-4 flex-shrink-0",strokeWidth:2,fill:"none"}),e.jsx("span",{children:h})]}),e.jsx(y,{type:"submit",className:"w-full",disabled:c,children:c?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent"}),"验证中..."]}):"验证并进入"}),e.jsxs(Rs,{children:[e.jsx(ni,{asChild:!0,children:e.jsxs("button",{className:"w-full text-center text-sm text-primary hover:text-primary/80 transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[e.jsx(ro,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我没有 Token,我该去哪里获得 Token?"]})}),e.jsxs(zs,{className:"sm:max-w-md",children:[e.jsxs(Ms,{children:[e.jsxs(As,{className:"flex items-center gap-2",children:[e.jsx(Yf,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"如何获取 Access Token"]}),e.jsx(Ys,{children:"Access Token 是访问 MaiBot WebUI 的唯一凭证,请按以下方式获取"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(TN,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx("h4",{className:"font-semibold text-sm",children:"方式一:查看启动日志"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"在 MaiBot 启动时,控制台会显示 WebUI Access Token。"}),e.jsxs("div",{className:"rounded bg-background p-2 font-mono text-xs",children:[e.jsx("p",{className:"text-muted-foreground",children:"🔑 WebUI Access Token: abc123..."}),e.jsx("p",{className:"text-muted-foreground",children:"💡 请使用此 Token 登录 WebUI"})]})]})]})}),e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Aa,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx("h4",{className:"font-semibold text-sm",children:"方式二:查看配置文件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Token 保存在项目根目录的配置文件中:"}),e.jsx("div",{className:"rounded bg-background p-2 font-mono text-xs break-all",children:e.jsx("code",{className:"text-primary",children:"data/webui.json"})}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["打开此文件,复制 ",e.jsx("code",{className:"px-1 py-0.5 bg-background rounded",children:"access_token"})," 字段的值"]})]})]})}),e.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Da,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[e.jsx("p",{className:"font-semibold",children:"安全提示"}),e.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[e.jsx("li",{children:"请妥善保管您的 Token,不要泄露给他人"}),e.jsx("li",{children:"如需重置 Token,请在登录后前往系统设置"})]})]})]})})]})]})]}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs("button",{className:"w-full text-center text-sm text-muted-foreground hover:text-foreground transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[e.jsx(ln,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我觉得这个界面很卡怎么办?"]})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsxs(ds,{className:"flex items-center gap-2",children:[e.jsx(ln,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"关闭背景动画"]}),e.jsx(us,{children:"背景动画可能会在低性能设备上造成卡顿。关闭动画可以显著提升界面流畅度。"})]}),e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭动画后,背景将变为纯色,但不影响任何功能的使用。您可以随时在系统设置中重新开启动画。"})}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>v(!1),children:"关闭动画"})]})]})]})]})})]}),e.jsx("div",{className:"absolute bottom-4 left-0 right-0 text-center text-xs text-muted-foreground",children:e.jsx("p",{children:a0})})]})}const Bs=u.forwardRef(({className:n,...r},c)=>e.jsx("textarea",{className:Q("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",n),ref:c,...r}));Bs.displayName="Textarea";const jr=u.forwardRef(({className:n,orientation:r="horizontal",decorative:c=!0,...d},h)=>e.jsx(Lp,{ref:h,decorative:c,orientation:r,className:Q("shrink-0 bg-border",r==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",n),...d}));jr.displayName=Lp.displayName;function b0({config:n,onChange:r}){const c=h=>{h.trim()&&!n.alias_names.includes(h.trim())&&r({...n,alias_names:[...n.alias_names,h.trim()]})},d=h=>{r({...n,alias_names:n.alias_names.filter((x,f)=>f!==h)})};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"qq_account",children:"QQ账号 *"}),e.jsx(ce,{id:"qq_account",type:"number",placeholder:"请输入机器人的QQ账号",value:n.qq_account||"",onChange:h=>r({...n,qq_account:Number(h.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人登录使用的QQ账号"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"nickname",children:"昵称 *"}),e.jsx(ce,{id:"nickname",placeholder:"请输入机器人的昵称",value:n.nickname,onChange:h=>r({...n,nickname:h.target.value})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的主要称呼名称"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{children:"别名"}),e.jsx("div",{className:"flex flex-wrap gap-2 mb-2",children:n.alias_names.map((h,x)=>e.jsxs(Ye,{variant:"secondary",className:"gap-1",children:[h,e.jsx("button",{type:"button",onClick:()=>d(x),className:"ml-1 hover:text-destructive",children:e.jsx(li,{className:"h-3 w-3"})})]},x))}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{id:"alias_input",placeholder:"输入别名后按回车添加",onKeyPress:h=>{h.key==="Enter"&&(c(h.target.value),h.target.value="")}}),e.jsx(y,{type:"button",variant:"outline",onClick:()=>{const h=document.getElementById("alias_input");h&&(c(h.value),h.value="")},children:"添加"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的其他称呼,可以添加多个"})]})]})}function w0({config:n,onChange:r}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"personality",children:"人格特征 *"}),e.jsx(Bs,{id:"personality",placeholder:"描述机器人的人格特质和身份特征(建议120字以内)",value:n.personality,onChange:c=>r({...n,personality:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:是一个女大学生,现在在读大二,会刷贴吧"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"reply_style",children:"表达风格 *"}),e.jsx(Bs,{id:"reply_style",placeholder:"描述机器人说话的表达风格、表达习惯",value:n.reply_style,onChange:c=>r({...n,reply_style:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:回复平淡一些,简短一些,说中文,参考贴吧、知乎和微博的回复风格"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"interest",children:"兴趣 *"}),e.jsx(Bs,{id:"interest",placeholder:"描述机器人感兴趣的话题",value:n.interest,onChange:c=>r({...n,interest:c.target.value}),rows:2}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"会影响机器人对什么话题进行回复"})]}),e.jsx(jr,{}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"plan_style",children:"群聊说话规则 *"}),e.jsx(Bs,{id:"plan_style",placeholder:"机器人在群聊中的行为风格和规则",value:n.plan_style,onChange:c=>r({...n,plan_style:c.target.value}),rows:4}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在群聊中如何行动,例如回复频率、条件等"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"private_plan_style",children:"私聊说话规则 *"}),e.jsx(Bs,{id:"private_plan_style",placeholder:"机器人在私聊中的行为风格和规则",value:n.private_plan_style,onChange:c=>r({...n,private_plan_style:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在私聊中的行为方式"})]})]})}function _0({config:n,onChange:r}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{htmlFor:"emoji_chance",children:"表情包激活概率"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[(n.emoji_chance*100).toFixed(0),"%"]})]}),e.jsx(ce,{id:"emoji_chance",type:"range",min:"0",max:"1",step:"0.1",value:n.emoji_chance,onChange:c=>r({...n,emoji_chance:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人发送表情包的概率"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"max_reg_num",children:"最大表情包数量"}),e.jsx(ce,{id:"max_reg_num",type:"number",min:"1",max:"200",value:n.max_reg_num,onChange:c=>r({...n,max_reg_num:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人最多保存的表情包数量"})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"do_replace",children:"达到最大数量时替换"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"开启后会删除旧表情包,关闭则不再收集新表情包"})]}),e.jsx(Ve,{id:"do_replace",checked:n.do_replace,onCheckedChange:c=>r({...n,do_replace:c})})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),e.jsx(ce,{id:"check_interval",type:"number",min:"1",max:"120",value:n.check_interval,onChange:c=>r({...n,check_interval:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包注册、破损、删除的时间间隔"})]}),e.jsx(jr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"steal_emoji",children:"偷取表情包"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人将一些表情包据为己有"})]}),e.jsx(Ve,{id:"steal_emoji",checked:n.steal_emoji,onCheckedChange:c=>r({...n,steal_emoji:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"content_filtration",children:"启用表情包过滤"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"只保存符合要求的表情包"})]}),e.jsx(Ve,{id:"content_filtration",checked:n.content_filtration,onCheckedChange:c=>r({...n,content_filtration:c})})]}),n.content_filtration&&e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"filtration_prompt",children:"过滤要求"}),e.jsx(ce,{id:"filtration_prompt",placeholder:"例如:符合公序良俗",value:n.filtration_prompt,onChange:c=>r({...n,filtration_prompt:c.target.value})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"描述表情包应该符合的要求"})]})]})}function S0({config:n,onChange:r}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"enable_tool",children:"启用工具系统"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人使用各种工具增强功能"})]}),e.jsx(Ve,{id:"enable_tool",checked:n.enable_tool,onCheckedChange:c=>r({...n,enable_tool:c})})]}),e.jsx(jr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"enable_mood",children:"启用情绪系统"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"让机器人具有情绪变化能力"})]}),e.jsx(Ve,{id:"enable_mood",checked:n.enable_mood,onCheckedChange:c=>r({...n,enable_mood:c})})]}),n.enable_mood&&e.jsxs("div",{className:"ml-6 space-y-6 border-l-2 border-primary/20 pl-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"mood_update_threshold",children:"情绪更新阈值"}),e.jsx(ce,{id:"mood_update_threshold",type:"number",min:"0.1",max:"10",step:"0.1",value:n.mood_update_threshold||1,onChange:c=>r({...n,mood_update_threshold:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"值越高,情绪更新越慢"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"emotion_style",children:"情感特征"}),e.jsx(Bs,{id:"emotion_style",placeholder:"描述情绪的变化情况,例如:情绪较为稳定,但遭遇特定事件时起伏较大",value:n.emotion_style||"",onChange:c=>r({...n,emotion_style:c.target.value}),rows:2}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"影响机器人的情绪变化方式"})]})]}),e.jsx(jr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"all_global",children:"启用全局黑话模式"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人学习和使用群组黑话"})]}),e.jsx(Ve,{id:"all_global",checked:n.all_global,onCheckedChange:c=>r({...n,all_global:c})})]})]})}function C0({config:n,onChange:r}){const[c,d]=u.useState(!1);return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"mt-0.5",children:e.jsx("svg",{className:"h-5 w-5 text-blue-600 dark:text-blue-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),e.jsxs("div",{className:"flex-1 text-sm",children:[e.jsx("p",{className:"font-medium text-blue-900 dark:text-blue-100 mb-1",children:"关于硅基流动 (SiliconFlow)"}),e.jsx("p",{className:"text-blue-700 dark:text-blue-300 mb-2",children:"硅基流动提供了完整的模型覆盖,包括 DeepSeek V3、Qwen、视觉模型、语音识别和嵌入模型。 只需一个 API Key 即可使用麦麦的所有功能!"}),e.jsxs("a",{href:"https://cloud.siliconflow.cn",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-blue-600 dark:text-blue-400 hover:underline font-medium",children:["前往硅基流动获取 API Key",e.jsx(dr,{className:"h-3 w-3"})]})]})]})}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"siliconflow_api_key",children:"SiliconFlow API Key *"}),e.jsxs("div",{className:"relative",children:[e.jsx(ce,{id:"siliconflow_api_key",type:c?"text":"password",placeholder:"sk-...",value:n.api_key,onChange:h=>r({api_key:h.target.value}),className:"font-mono pr-10"}),e.jsx(y,{type:"button",variant:"ghost",size:"sm",className:"absolute right-0 top-0 h-full px-3 hover:bg-transparent",onClick:()=>d(!c),children:c?e.jsx(mr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Zt,{className:"h-4 w-4 text-muted-foreground"})})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"请输入您的硅基流动 API 密钥。获取后,麦麦将自动配置所有必需的模型。"})]}),e.jsxs("div",{className:"rounded-lg bg-muted/50 p-4 text-sm space-y-2",children:[e.jsx("p",{className:"font-medium",children:"将自动配置以下模型:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 text-muted-foreground ml-2",children:[e.jsx("li",{children:"DeepSeek V3 - 主要对话和工具模型"}),e.jsx("li",{children:"Qwen3 30B - 高频小任务和工具调用"}),e.jsx("li",{children:"Qwen3 VL 30B - 图像识别"}),e.jsx("li",{children:"SenseVoice - 语音识别"}),e.jsx("li",{children:"BGE-M3 - 文本嵌入"}),e.jsx("li",{children:"知识库相关模型 (LPMM)"})]})]}),e.jsx("div",{className:"rounded-lg border border-amber-200 dark:border-amber-800 bg-amber-50 dark:bg-amber-950/30 p-4",children:e.jsxs("p",{className:"text-sm text-amber-900 dark:text-amber-100",children:[e.jsx("span",{className:"font-medium",children:"💡 提示:"}),'完成向导后,您可以在"系统设置 → 模型配置"中添加更多 API 提供商和模型。']})})]})}async function k0(){const n=await ke("/api/webui/config/bot",{method:"GET",headers:Ts()});if(!n.ok)throw new Error("读取Bot配置失败");const c=(await n.json()).config.bot||{};return{qq_account:c.qq_account||0,nickname:c.nickname||"",alias_names:c.alias_names||[]}}async function T0(){const n=await ke("/api/webui/config/bot",{method:"GET",headers:Ts()});if(!n.ok)throw new Error("读取人格配置失败");const c=(await n.json()).config.personality||{};return{personality:c.personality||"",reply_style:c.reply_style||"",interest:c.interest||"",plan_style:c.plan_style||"",private_plan_style:c.private_plan_style||""}}async function E0(){const n=await ke("/api/webui/config/bot",{method:"GET",headers:Ts()});if(!n.ok)throw new Error("读取表情包配置失败");const c=(await n.json()).config.emoji||{};return{emoji_chance:c.emoji_chance??.4,max_reg_num:c.max_reg_num??40,do_replace:c.do_replace??!0,check_interval:c.check_interval??10,steal_emoji:c.steal_emoji??!0,content_filtration:c.content_filtration??!1,filtration_prompt:c.filtration_prompt||""}}async function z0(){const n=await ke("/api/webui/config/bot",{method:"GET",headers:Ts()});if(!n.ok)throw new Error("读取其他配置失败");const c=(await n.json()).config,d=c.tool||{},h=c.mood||{},x=c.jargon||{};return{enable_tool:d.enable_tool??!0,enable_mood:h.enable_mood??!1,mood_update_threshold:h.mood_update_threshold,emotion_style:h.emotion_style,all_global:x.all_global??!0}}async function M0(){const n=await ke("/api/webui/config/model",{method:"GET",headers:Ts()});if(!n.ok)throw new Error("读取模型配置失败");return{api_key:((await n.json()).config.api_providers||[]).find(x=>x.name==="SiliconFlow")?.api_key||""}}async function A0(n){const r=await ke("/api/webui/config/bot/section/bot",{method:"POST",headers:Ts(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"保存Bot基础配置失败")}return await r.json()}async function D0(n){const r=await ke("/api/webui/config/bot/section/personality",{method:"POST",headers:Ts(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"保存人格配置失败")}return await r.json()}async function O0(n){const r=await ke("/api/webui/config/bot/section/emoji",{method:"POST",headers:Ts(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"保存表情包配置失败")}return await r.json()}async function R0(n){const r=[];r.push(ke("/api/webui/config/bot/section/tool",{method:"POST",headers:Ts(),body:JSON.stringify({enable_tool:n.enable_tool})})),r.push(ke("/api/webui/config/bot/section/jargon",{method:"POST",headers:Ts(),body:JSON.stringify({all_global:n.all_global})}));const c={enable_mood:n.enable_mood};n.enable_mood&&(c.mood_update_threshold=n.mood_update_threshold||1,c.emotion_style=n.emotion_style||""),r.push(ke("/api/webui/config/bot/section/mood",{method:"POST",headers:Ts(),body:JSON.stringify(c)}));const d=await Promise.all(r);for(const h of d)if(!h.ok){const x=await h.json();throw new Error(x.detail||"保存其他配置失败")}return{success:!0}}async function L0(n){const r=await ke("/api/webui/config/model",{method:"GET",headers:Ts()});if(!r.ok)throw new Error("读取模型配置失败");const d=(await r.json()).config,h=d.api_providers||[],x=h.findIndex(p=>p.name==="SiliconFlow");x>=0?h[x]={...h[x],api_key:n.api_key}:h.push({name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",api_key:n.api_key,client_type:"openai",max_retry:3,timeout:120,retry_interval:5});const f={...d,api_providers:h},j=await ke("/api/webui/config/model",{method:"POST",headers:Ts(),body:JSON.stringify(f)});if(!j.ok){const p=await j.json();throw new Error(p.detail||"保存模型配置失败")}return await j.json()}async function rp(){const n=localStorage.getItem("access-token"),r=await ke("/api/webui/setup/complete",{method:"POST",headers:{Authorization:`Bearer ${n}`}});if(!r.ok){const c=await r.json();throw new Error(c.message||"标记配置完成失败")}return await r.json()}async function co(){const n=await ke("/api/webui/system/restart",{method:"POST",headers:Ts()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"重启失败")}return await n.json()}async function U0(){const n=await ke("/api/webui/system/status",{method:"GET",headers:Ts()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取状态失败")}return await n.json()}function B0(){const n=Jt(),{toast:r}=Hs(),[c,d]=u.useState(0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,w]=u.useState(!0),[v,k]=u.useState({qq_account:0,nickname:"",alias_names:[]}),[T,E]=u.useState({personality:"是一个女大学生,现在在读大二,会刷贴吧。",reply_style:"请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景。可以参考贴吧,知乎和微博的回复风格。",interest:"对技术相关话题,游戏和动漫相关话题感兴趣,也对日常话题感兴趣,不喜欢太过沉重严肃的话题",plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 -2.如果相同的内容已经被执行,请不要重复执行 -3.请控制你的发言频率,不要太过频繁的发言 -4.如果有人对你感到厌烦,请减少回复 -5.如果有人对你进行攻击,或者情绪激动,请你以合适的方法应对`,private_plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 -2.如果相同的内容已经被执行,请不要重复执行 -3.某句话如果已经被回复过,不要重复回复`}),[R,K]=u.useState({emoji_chance:.4,max_reg_num:40,do_replace:!0,check_interval:10,steal_emoji:!0,content_filtration:!1,filtration_prompt:"符合公序良俗"}),[U,A]=u.useState({enable_tool:!0,enable_mood:!1,mood_update_threshold:1,emotion_style:"情绪较为稳定,但遇遇特定事件的时候起伏较大",all_global:!0}),[Z,H]=u.useState({api_key:""}),[z,B]=u.useState(!1),[X,S]=u.useState(""),O=[{id:"bot-basic",title:"Bot基础",description:"配置机器人的基本信息",icon:ir},{id:"personality",title:"人格配置",description:"定义机器人的性格和说话风格",icon:to},{id:"emoji",title:"表情包",description:"配置表情包相关设置",icon:$u},{id:"other",title:"其他设置",description:"工具、情绪系统等配置",icon:Rl},{id:"siliconflow",title:"API配置",description:"配置硅基流动API密钥",icon:vg}],te=(c+1)/O.length*100;u.useEffect(()=>{(async()=>{try{w(!0);const[G,q,ie,_,me]=await Promise.all([k0(),T0(),E0(),z0(),M0()]);k(G),E(q),K(ie),A(_),H(me)}catch(G){r({title:"加载配置失败",description:G instanceof Error?G.message:"无法加载现有配置,将使用默认值",variant:"destructive"})}finally{w(!1)}})()},[r]);const he=async()=>{j(!0);try{switch(c){case 0:await A0(v);break;case 1:await D0(T);break;case 2:await O0(R);break;case 3:await R0(U);break;case 4:await L0(Z);break}return r({title:"保存成功",description:`${O[c].title}配置已保存`}),!0}catch(N){return r({title:"保存失败",description:N instanceof Error?N.message:"未知错误",variant:"destructive"}),!1}finally{j(!1)}},Ne=async()=>{await he()&&c{c>0&&d(c-1)},pe=async()=>{x(!0),B(!0);try{if(S("正在保存API配置..."),!await he()){x(!1),B(!1);return}S("正在完成初始化..."),await rp(),S("正在重启麦麦..."),await co(),r({title:"配置完成",description:"麦麦正在重启以应用新配置..."}),S("等待麦麦重启完成...");const G=60;let q=0,ie=!1;for(;qsetTimeout(_,1e3));try{(await U0()).running&&(ie=!0,S("重启成功!正在跳转..."))}catch{q++}}if(!ie)throw new Error("重启超时,请手动检查麦麦状态");setTimeout(()=>{n({to:"/"})},1e3)}catch(N){B(!1),r({title:"配置失败",description:N instanceof Error?N.message:"未知错误",variant:"destructive"})}finally{x(!1)}},je=async()=>{try{await rp(),n({to:"/"})}catch(N){r({title:"跳过失败",description:N instanceof Error?N.message:"未知错误",variant:"destructive"})}},_e=()=>{switch(c){case 0:return e.jsx(b0,{config:v,onChange:k});case 1:return e.jsx(w0,{config:T,onChange:E});case 2:return e.jsx(_0,{config:R,onChange:K});case 3:return e.jsx(S0,{config:U,onChange:A});case 4:return e.jsx(C0,{config:Z,onChange:H});default:return null}};return e.jsxs("div",{className:"relative flex min-h-screen flex-col items-center justify-center overflow-hidden bg-gradient-to-br from-primary/5 via-background to-secondary/5 p-4 md:p-6",children:[z&&e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm",children:e.jsxs("div",{className:"mx-auto flex max-w-md flex-col items-center space-y-6 rounded-lg border bg-card p-8 text-center shadow-lg",children:[e.jsx("div",{className:"flex h-20 w-20 items-center justify-center rounded-full bg-primary/10",children:e.jsx(vt,{className:"h-10 w-10 animate-spin text-primary"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),e.jsx("p",{className:"text-muted-foreground",children:X})]}),e.jsx("div",{className:"w-full",children:e.jsx("div",{className:"h-2 w-full overflow-hidden rounded-full bg-secondary",children:e.jsx("div",{className:"h-full w-full animate-pulse bg-primary",style:{animation:"pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite"}})})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"请稍候,这可能需要一分钟..."})]})}),e.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[e.jsx("div",{className:"absolute left-1/4 top-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-primary/5 blur-3xl"}),e.jsx("div",{className:"absolute right-1/4 bottom-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-secondary/5 blur-3xl"})]}),p?e.jsxs("div",{className:"relative z-10 text-center",children:[e.jsx("div",{className:"mx-auto mb-4 flex h-16 w-16 items-center justify-center",children:e.jsx("div",{className:"h-12 w-12 animate-spin rounded-full border-4 border-primary border-t-transparent"})}),e.jsx("p",{className:"text-lg font-medium",children:"加载配置中..."}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"正在读取现有配置"})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"relative z-10 w-full max-w-4xl",children:[e.jsxs("div",{className:"mb-6 md:mb-8 text-center",children:[e.jsx("div",{className:"mx-auto mb-4 flex h-12 w-12 md:h-16 md:w-16 items-center justify-center rounded-2xl bg-primary/10",children:e.jsx(EN,{className:"h-6 w-6 md:h-8 md:w-8 text-primary",strokeWidth:2,fill:"none"})}),e.jsx("h1",{className:"mb-2 text-2xl md:text-3xl font-bold",children:"首次配置向导"}),e.jsxs("p",{className:"text-sm md:text-base text-muted-foreground",children:["让我们一起完成 ",Ku," 的初始配置"]})]}),e.jsxs("div",{className:"mb-6 md:mb-8",children:[e.jsxs("div",{className:"mb-2 flex items-center justify-between text-xs md:text-sm",children:[e.jsxs("span",{className:"text-muted-foreground",children:["步骤 ",c+1," / ",O.length]}),e.jsxs("span",{className:"font-medium text-primary",children:[Math.round(te),"%"]})]}),e.jsx(Sr,{value:te,className:"h-2"})]}),e.jsx("div",{className:"mb-6 md:mb-8 flex justify-between",children:O.map((N,G)=>{const q=N.icon;return e.jsxs("div",{className:Q("flex flex-1 flex-col items-center gap-1 md:gap-2",Gn({to:"/"}),className:"gap-2 w-full sm:w-auto",children:[e.jsx(xr,{className:"h-4 w-4"}),"返回首页"]}),e.jsxs(y,{size:"lg",variant:"outline",onClick:()=>window.history.back(),className:"gap-2 w-full sm:w-auto",children:[e.jsx(ti,{className:"h-4 w-4"}),"返回上一页"]})]}),e.jsx("div",{className:"mt-12 pt-8 border-t border-border",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:"如果您认为这是一个错误,请联系系统管理员"})})]})})}const He=xN,qe=fN,Re=u.forwardRef(({className:n,children:r,...c},d)=>e.jsxs(tg,{ref:d,className:Q("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",n),...c,children:[r,e.jsx(oN,{asChild:!0,children:e.jsx(Ll,{className:"h-4 w-4 opacity-50"})})]}));Re.displayName=tg.displayName;const Lg=u.forwardRef(({className:n,...r},c)=>e.jsx(ag,{ref:c,className:Q("flex cursor-default items-center justify-center py-1",n),...r,children:e.jsx(fr,{className:"h-4 w-4"})}));Lg.displayName=ag.displayName;const Ug=u.forwardRef(({className:n,...r},c)=>e.jsx(lg,{ref:c,className:Q("flex cursor-default items-center justify-center py-1",n),...r,children:e.jsx(Ll,{className:"h-4 w-4"})}));Ug.displayName=lg.displayName;const Le=u.forwardRef(({className:n,children:r,position:c="popper",...d},h)=>e.jsx(dN,{children:e.jsxs(ng,{ref:h,className:Q("relative z-[100] max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-hidden rounded-md border border-border bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",c==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",n),position:c,...d,children:[e.jsx(Lg,{}),e.jsx(uN,{className:Q("p-1",c==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:r}),e.jsx(Ug,{})]})}));Le.displayName=ng.displayName;const H0=u.forwardRef(({className:n,...r},c)=>e.jsx(ig,{ref:c,className:Q("px-2 py-1.5 text-sm font-semibold",n),...r}));H0.displayName=ig.displayName;const ne=u.forwardRef(({className:n,children:r,...c},d)=>e.jsxs(rg,{ref:d,className:Q("relative flex w-full cursor-default select-none items-center rounded-sm py-2 pl-2 pr-8 text-sm outline-none bg-white dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800 focus:bg-gray-100 dark:focus:bg-gray-800 data-[disabled]:pointer-events-none data-[disabled]:opacity-50",n),...c,children:[e.jsx("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(mN,{children:e.jsx(fa,{className:"h-4 w-4"})})}),e.jsx(hN,{children:r})]}));ne.displayName=rg.displayName;const q0=u.forwardRef(({className:n,...r},c)=>e.jsx(cg,{ref:c,className:Q("-mx-1 my-1 h-px bg-muted",n),...r}));q0.displayName=cg.displayName;const Oa=Vy,Ra=Fy,wa=u.forwardRef(({className:n,align:r="center",sideOffset:c=4,...d},h)=>e.jsx(Gy,{children:e.jsx(Up,{ref:h,align:r,sideOffset:c,className:Q("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]",n),...d})}));wa.displayName=Up.displayName;const Ul="/api/webui/config";async function cp(){const r=await(await ke(`${Ul}/bot`)).json();if(!r.success)throw new Error("获取配置数据失败");return r.config}async function ei(){const r=await(await ke(`${Ul}/model`)).json();if(!r.success)throw new Error("获取模型配置数据失败");return r.config}async function op(n){const c=await(await ke(`${Ul}/bot`,{method:"POST",body:JSON.stringify(n)})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function G0(){const r=await(await ke(`${Ul}/bot/raw`)).json();if(!r.success)throw new Error("获取配置源代码失败");return r.content}async function V0(n){const c=await(await ke(`${Ul}/bot/raw`,{method:"POST",body:JSON.stringify({raw_content:n})})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function io(n){const c=await(await ke(`${Ul}/model`,{method:"POST",body:JSON.stringify(n)})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function F0(n,r){const d=await(await ke(`${Ul}/bot/section/${n}`,{method:"POST",body:JSON.stringify(r)})).json();if(!d.success)throw new Error(d.message||`保存配置节 ${n} 失败`)}async function qu(n,r){const d=await(await ke(`${Ul}/model/section/${n}`,{method:"POST",body:JSON.stringify(r)})).json();if(!d.success)throw new Error(d.message||`保存配置节 ${n} 失败`)}async function $0(n,r="openai",c="/models"){const d=new URLSearchParams({provider_name:n,parser:r,endpoint:c}),h=await ke(`/api/webui/models/list?${d}`);if(!h.ok){const f=await h.json().catch(()=>({}));throw new Error(f.detail||`获取模型列表失败 (${h.status})`)}const x=await h.json();if(!x.success)throw new Error("获取模型列表失败");return x.models}async function Q0(n){const r=new URLSearchParams({provider_name:n}),c=await ke(`/api/webui/models/test-connection-by-name?${r}`,{method:"POST"});if(!c.ok){const d=await c.json().catch(()=>({}));throw new Error(d.detail||`测试连接失败 (${c.status})`)}return await c.json()}const Y0=ai("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"}}),ha=u.forwardRef(({className:n,variant:r,...c},d)=>e.jsx("div",{ref:d,role:"alert",className:Q(Y0({variant:r}),n),...c}));ha.displayName="Alert";const X0=u.forwardRef(({className:n,...r},c)=>e.jsx("h5",{ref:c,className:Q("mb-1 font-medium leading-none tracking-tight",n),...r}));X0.displayName="AlertTitle";const xa=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("text-sm [&_p]:leading-relaxed",n),...r}));xa.displayName="AlertDescription";function Iu({onRestartComplete:n,onRestartFailed:r}){const[c,d]=u.useState(0),[h,x]=u.useState("restarting"),[f,j]=u.useState(0),[p,w]=u.useState(0);u.useEffect(()=>{const T=setInterval(()=>{d(K=>K>=90?K:K+1)},200),E=setInterval(()=>{j(K=>K+1)},1e3),R=setTimeout(()=>{x("checking"),v()},3e3);return()=>{clearInterval(T),clearInterval(E),clearTimeout(R)}},[]);const v=()=>{const E=async()=>{try{if(w(K=>K+1),(await fetch("/api/webui/system/status",{method:"GET",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(3e3)})).ok)d(100),x("success"),setTimeout(()=>{n?.()},1500);else throw new Error("Status check failed")}catch{p<60?setTimeout(E,2e3):(x("failed"),r?.())}};E()},k=T=>{const E=Math.floor(T/60),R=T%60;return`${E}:${R.toString().padStart(2,"0")}`};return e.jsx("div",{className:"fixed inset-0 bg-background/95 backdrop-blur-sm z-50 flex items-center justify-center",children:e.jsxs("div",{className:"max-w-md w-full mx-4 space-y-8",children:[e.jsxs("div",{className:"flex flex-col items-center space-y-4",children:[h==="restarting"&&e.jsxs(e.Fragment,{children:[e.jsx(vt,{className:"h-16 w-16 text-primary animate-spin"}),e.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"请稍候,麦麦正在重启中..."})]}),h==="checking"&&e.jsxs(e.Fragment,{children:[e.jsx(vt,{className:"h-16 w-16 text-primary animate-spin"}),e.jsx("h2",{className:"text-2xl font-bold",children:"检查服务状态"}),e.jsxs("p",{className:"text-muted-foreground text-center",children:["等待服务恢复... (尝试 ",p,"/60)"]})]}),h==="success"&&e.jsxs(e.Fragment,{children:[e.jsx(pa,{className:"h-16 w-16 text-green-500"}),e.jsx("h2",{className:"text-2xl font-bold",children:"重启成功"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"正在跳转到登录页面..."})]}),h==="failed"&&e.jsxs(e.Fragment,{children:[e.jsx(Da,{className:"h-16 w-16 text-destructive"}),e.jsx("h2",{className:"text-2xl font-bold",children:"重启超时"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"服务未能在预期时间内恢复,请手动检查或刷新页面"})]})]}),h!=="failed"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(Sr,{value:c,className:"h-2"}),e.jsxs("div",{className:"flex justify-between text-sm text-muted-foreground",children:[e.jsxs("span",{children:[c,"%"]}),e.jsxs("span",{children:["已用时: ",k(f)]})]})]}),e.jsx("div",{className:"bg-muted/50 rounded-lg p-4 space-y-2",children:e.jsxs("p",{className:"text-sm text-muted-foreground",children:[h==="restarting"&&"🔄 配置已保存,正在重启主程序...",h==="checking"&&"⏳ 正在等待服务恢复,请勿关闭页面...",h==="success"&&"✅ 配置已生效,服务运行正常",h==="failed"&&"⚠️ 如果长时间无响应,请尝试手动重启"]})}),e.jsx("div",{className:"bg-yellow-500/10 border border-yellow-500/50 rounded-lg p-4",children:e.jsxs("p",{className:"text-sm text-yellow-900 dark:text-yellow-100",children:[e.jsx("strong",{children:"⚠️ 重要提示:"})," 由于技术原因,使用重启功能后,将无法再使用 ",e.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。如需结束程序,请使用脚本目录下的进程管理脚本。"]})}),h==="failed"&&e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{onClick:()=>window.location.reload(),className:"flex-1 px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary/90",children:"刷新页面"}),e.jsx("button",{onClick:()=>{x("checking"),w(0),v()},className:"flex-1 px-4 py-2 bg-secondary text-secondary-foreground rounded-md hover:bg-secondary/90",children:"重试检测"})]})]})})}const K0={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,r){let c;if(!r.inString&&(c=n.match(/^('''|"""|'|")/))&&(r.stringType=c[0],r.inString=!0),n.sol()&&!r.inString&&r.inArray===0&&(r.lhs=!0),r.inString){for(;r.inString;)if(n.match(r.stringType))r.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return r.lhs?"property":"string"}else{if(r.inArray&&n.peek()==="]")return n.next(),r.inArray--,"bracket";if(r.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(r.lhs&&n.eatWhile(function(d){return d!="="&&d!=" "}))return"property";if(r.lhs&&n.peek()==="=")return n.next(),r.lhs=!1,null;if(!r.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!r.lhs&&(n.match("true")||n.match("false")))return"atom";if(!r.lhs&&n.peek()==="[")return r.inArray++,n.next(),"bracket";if(!r.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}},Z0={python:[tb()],json:[ab(),lb()],toml:[sb.define(K0)],text:[]};function J0({value:n,onChange:r,language:c="text",readOnly:d=!1,height:h="400px",minHeight:x,maxHeight:f,placeholder:j,theme:p="dark",className:w=""}){const[v,k]=u.useState(!1);if(u.useEffect(()=>{k(!0)},[]),!v)return e.jsx("div",{className:`rounded-md border bg-muted animate-pulse ${w}`,style:{height:h,minHeight:x,maxHeight:f}});const T=[...Z0[c]||[],If.lineWrapping];return d&&T.push(If.editable.of(!1)),e.jsx("div",{className:`rounded-md overflow-hidden border ${w}`,children:e.jsx(nb,{value:n,height:h,minHeight:x,maxHeight:f,theme:p==="dark"?ib:void 0,extensions:T,onChange:r,placeholder:j,basicSetup:{lineNumbers:!0,highlightActiveLineGutter:!0,highlightSpecialChars:!0,history:!0,foldGutter:!0,drawSelection:!0,dropCursor:!0,allowMultipleSelections:!0,indentOnInput:!0,syntaxHighlighting:!0,bracketMatching:!0,closeBrackets:!0,autocompletion:!0,rectangularSelection:!0,crosshairCursor:!0,highlightActiveLine:!0,highlightSelectionMatches:!0,closeBracketsKeymap:!0,defaultKeymap:!0,searchKeymap:!0,historyKeymap:!0,foldKeymap:!0,completionKeymap:!0,lintKeymap:!0}})})}function I0(){const[n,r]=u.useState(!0),[c,d]=u.useState(!1),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,w]=u.useState(!1),[v,k]=u.useState(!1),[T,E]=u.useState("visual"),[R,K]=u.useState(""),[U,A]=u.useState(!1),{toast:Z}=Hs(),[H,z]=u.useState(null),[B,X]=u.useState(null),[S,O]=u.useState(null),[te,he]=u.useState(null),[Ne,ye]=u.useState(null),[pe,je]=u.useState(null),[_e,N]=u.useState(null),[G,q]=u.useState(null),[ie,_]=u.useState(null),[me,xe]=u.useState(null),[$,de]=u.useState(null),[ge,le]=u.useState(null),[L,F]=u.useState(null),[D,ee]=u.useState(null),[we,ze]=u.useState(null),[ss,Ze]=u.useState(null),[Ls,Gs]=u.useState(null),[re,be]=u.useState(null),Xe=u.useRef(null),Ue=u.useRef(!0),st=u.useRef({}),It=u.useCallback(async()=>{try{const Se=await G0();K(Se),A(!1)}catch(Se){Z({variant:"destructive",title:"加载失败",description:Se instanceof Error?Se.message:"加载源代码失败"})}},[Z]),bt=u.useCallback(async()=>{try{r(!0);const Se=await cp();st.current=Se,z(Se.bot),X(Se.personality);const Oe=Se.chat;Oe.talk_value_rules||(Oe.talk_value_rules=[]),O(Oe),he(Se.expression),ye(Se.emoji),je(Se.memory),N(Se.tool),q(Se.mood),_(Se.voice),xe(Se.lpmm_knowledge),de(Se.keyword_reaction),le(Se.response_post_process),F(Se.chinese_typo),ee(Se.response_splitter),ze(Se.log),Ze(Se.debug),Gs(Se.maim_message),be(Se.telemetry),j(!1),Ue.current=!1,await It()}catch(Se){console.error("加载配置失败:",Se),Z({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}finally{r(!1)}},[Z,It]);u.useEffect(()=>{bt()},[bt]);const Je=u.useCallback(async(Se,Oe)=>{if(!Ue.current)try{x(!0),await F0(Se,Oe),j(!1)}catch(it){console.error(`自动保存 ${Se} 失败:`,it),j(!0)}finally{x(!1)}},[]),Be=u.useCallback((Se,Oe)=>{Ue.current||(j(!0),Xe.current&&clearTimeout(Xe.current),Xe.current=setTimeout(()=>{Je(Se,Oe)},2e3))},[Je]);u.useEffect(()=>{H&&!Ue.current&&Be("bot",H)},[H,Be]),u.useEffect(()=>{B&&!Ue.current&&Be("personality",B)},[B,Be]),u.useEffect(()=>{S&&!Ue.current&&Be("chat",S)},[S,Be]),u.useEffect(()=>{te&&!Ue.current&&Be("expression",te)},[te,Be]),u.useEffect(()=>{Ne&&!Ue.current&&Be("emoji",Ne)},[Ne,Be]),u.useEffect(()=>{pe&&!Ue.current&&Be("memory",pe)},[pe,Be]),u.useEffect(()=>{_e&&!Ue.current&&Be("tool",_e)},[_e,Be]),u.useEffect(()=>{G&&!Ue.current&&Be("mood",G)},[G,Be]),u.useEffect(()=>{ie&&!Ue.current&&Be("voice",ie)},[ie,Be]),u.useEffect(()=>{me&&!Ue.current&&Be("lpmm_knowledge",me)},[me,Be]),u.useEffect(()=>{$&&!Ue.current&&Be("keyword_reaction",$)},[$,Be]),u.useEffect(()=>{ge&&!Ue.current&&Be("response_post_process",ge)},[ge,Be]),u.useEffect(()=>{L&&!Ue.current&&Be("chinese_typo",L)},[L,Be]),u.useEffect(()=>{D&&!Ue.current&&Be("response_splitter",D)},[D,Be]),u.useEffect(()=>{we&&!Ue.current&&Be("log",we)},[we,Be]),u.useEffect(()=>{ss&&!Ue.current&&Be("debug",ss)},[ss,Be]),u.useEffect(()=>{Ls&&!Ue.current&&Be("maim_message",Ls)},[Ls,Be]),u.useEffect(()=>{re&&!Ue.current&&Be("telemetry",re)},[re,Be]);const jt=async()=>{try{d(!0),await V0(R),j(!1),A(!1),Z({title:"保存成功",description:"配置已保存"}),await bt()}catch(Se){A(!0),Z({variant:"destructive",title:"保存失败",description:Se instanceof Error?Se.message:"保存配置失败"})}finally{d(!1)}},nt=async Se=>{if(f){Z({variant:"destructive",title:"切换失败",description:"请先保存当前更改"});return}if(E(Se),Se==="source")await It();else try{const Oe=await cp();st.current=Oe,z(Oe.bot),X(Oe.personality);const it=Oe.chat;it.talk_value_rules||(it.talk_value_rules=[]),O(it),he(Oe.expression),ye(Oe.emoji),je(Oe.memory),N(Oe.tool),q(Oe.mood),_(Oe.voice),xe(Oe.lpmm_knowledge),de(Oe.keyword_reaction),le(Oe.response_post_process),F(Oe.chinese_typo),ee(Oe.response_splitter),ze(Oe.log),Ze(Oe.debug),Gs(Oe.maim_message),be(Oe.telemetry),j(!1)}catch(Oe){console.error("加载配置失败:",Oe),Z({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}},St=async()=>{try{d(!0),Xe.current&&clearTimeout(Xe.current);const Se={...st.current,bot:H,personality:B,chat:S,expression:te,emoji:Ne,memory:pe,tool:_e,mood:G,voice:ie,lpmm_knowledge:me,keyword_reaction:$,response_post_process:ge,chinese_typo:L,response_splitter:D,log:we,debug:ss,maim_message:Ls,telemetry:re};await op(Se),j(!1),Z({title:"保存成功",description:"麦麦主程序配置已保存"})}catch(Se){console.error("保存配置失败:",Se),Z({title:"保存失败",description:Se.message,variant:"destructive"})}finally{d(!1)}},Ct=async()=>{try{w(!0),co().catch(()=>{}),k(!0)}catch(Se){console.error("重启失败:",Se),k(!1),Z({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),w(!1)}},rl=async()=>{try{d(!0),Xe.current&&clearTimeout(Xe.current);const Se={...st.current,bot:H,personality:B,chat:S,expression:te,emoji:Ne,memory:pe,tool:_e,mood:G,voice:ie,lpmm_knowledge:me,keyword_reaction:$,response_post_process:ge,chinese_typo:L,response_splitter:D,log:we,debug:ss,maim_message:Ls,telemetry:re};await op(Se),j(!1),Z({title:"保存成功",description:"配置已保存,即将重启麦麦..."}),await new Promise(Oe=>setTimeout(Oe,500)),await Ct()}catch(Se){console.error("保存失败:",Se),Z({title:"保存失败",description:Se.message,variant:"destructive"})}finally{d(!1)}},cl=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},ol=()=>{k(!1),w(!1),Z({title:"重启失败",description:"服务器未能在预期时间内恢复,请手动检查",variant:"destructive"})};return n?e.jsx(Pe,{className:"h-full",children:e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):e.jsx(Pe,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦主程序配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的核心功能和行为设置"})]}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto items-center",children:[e.jsx(Kt,{value:T,onValueChange:Se=>nt(Se),className:"w-auto",children:e.jsxs(Rt,{className:"h-9",children:[e.jsxs($e,{value:"visual",className:"text-xs sm:text-sm px-2 sm:px-3",children:[e.jsx(AN,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"可视化"]}),e.jsxs($e,{value:"source",className:"text-xs sm:text-sm px-2 sm:px-3",children:[e.jsx(DN,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"源代码"]})]})}),e.jsxs(y,{onClick:T==="visual"?St:jt,disabled:c||h||!f||p,size:"sm",variant:"outline",className:"flex-1 sm:flex-none",children:[e.jsx(br,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),c?"保存中...":h?"自动保存中...":f?"保存配置":"已保存"]}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(y,{disabled:c||h||p,size:"sm",className:"flex-1 sm:flex-none",children:[e.jsx(Nr,{className:"mr-2 h-4 w-4"}),p?"重启中...":f?"保存并重启":"重启麦麦"]})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认重启麦麦?"}),e.jsx(us,{className:"space-y-3",asChild:!0,children:e.jsxs("div",{children:[e.jsx("p",{children:f?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),e.jsxs(ha,{className:"border-yellow-500/50 bg-yellow-500/10",children:[e.jsx(Xt,{className:"h-4 w-4 text-yellow-600"}),e.jsxs(xa,{className:"text-yellow-900 dark:text-yellow-100",children:[e.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",e.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",e.jsxs(Rs,{children:[e.jsx(ni,{asChild:!0,children:e.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[e.jsx(ro,{className:"h-3 w-3"}),"如何结束程序?"]})}),e.jsxs(zs,{className:"max-w-2xl",children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"如何结束使用重启功能后的麦麦程序"}),e.jsx(Ys,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),e.jsxs(Kt,{defaultValue:"windows",className:"w-full",children:[e.jsxs(Rt,{className:"grid w-full grid-cols-3",children:[e.jsx($e,{value:"windows",children:"Windows"}),e.jsx($e,{value:"macos",children:"macOS"}),e.jsx($e,{value:"linux",children:"Linux"})]}),e.jsxs(We,{value:"windows",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),e.jsxs("li",{children:['在"进程"或"详细信息"标签页中找到 ',e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),e.jsx("li",{children:'右键点击并选择"结束任务"'})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),e.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),e.jsxs(We,{value:"macos",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"}),' 打开 Spotlight,搜索"活动监视器"']}),e.jsxs("li",{children:["在进程列表中找到 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),e.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:"ps aux | grep python | grep -v grep"}),e.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),e.jsx("p",{children:"kill -9 "}),e.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"pkill -9 python"})]})]})]}),e.jsxs(We,{value:"linux",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:"ps aux | grep python | grep -v grep"}),e.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),e.jsx("p",{children:"kill -9 "}),e.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),e.jsx("p",{children:'pkill -9 -f "bot.py"'}),e.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"pkill -9 python"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["在终端输入 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),e.jsx(Js,{children:e.jsx(Zu,{asChild:!0,children:e.jsx(y,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:f?rl:Ct,children:f?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsxs(ha,{children:[e.jsx(Xt,{className:"h-4 w-4"}),e.jsxs(xa,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),T==="source"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs(ha,{children:[e.jsx(Xt,{className:"h-4 w-4"}),e.jsxs(xa,{children:[e.jsx("strong",{children:"源代码模式(高级功能):"}),"直接编辑 TOML 配置文件。此功能仅适用于熟悉 TOML 语法的高级用户。保存时会在后端验证格式,只有格式完全正确才能保存。",U&&e.jsx("span",{className:"text-destructive font-semibold ml-2",children:"⚠️ 上次保存失败,请检查 TOML 格式"})]})]}),e.jsx(J0,{value:R,onChange:Se=>{K(Se),j(!0),U&&A(!1)},language:"toml",theme:"dark",height:"calc(100vh - 280px)",minHeight:"500px",placeholder:"TOML 配置内容"})]}),T==="visual"&&e.jsx(e.Fragment,{children:e.jsxs(Kt,{defaultValue:"bot",className:"w-full",children:[e.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:e.jsxs(Rt,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5 lg:grid-cols-10",children:[e.jsx($e,{value:"bot",className:"flex-shrink-0",children:"基本信息"}),e.jsx($e,{value:"personality",className:"flex-shrink-0",children:"人格"}),e.jsx($e,{value:"chat",className:"flex-shrink-0",children:"聊天"}),e.jsx($e,{value:"expression",className:"flex-shrink-0",children:"表达"}),e.jsx($e,{value:"features",className:"flex-shrink-0",children:"功能"}),e.jsx($e,{value:"processing",className:"flex-shrink-0",children:"处理"}),e.jsx($e,{value:"mood",className:"flex-shrink-0",children:"情绪"}),e.jsx($e,{value:"voice",className:"flex-shrink-0",children:"语音"}),e.jsx($e,{value:"lpmm",className:"flex-shrink-0",children:"知识库"}),e.jsx($e,{value:"other",className:"flex-shrink-0",children:"其他"})]})}),e.jsx(We,{value:"bot",className:"space-y-4",children:H&&e.jsx(P0,{config:H,onChange:z})}),e.jsx(We,{value:"personality",className:"space-y-4",children:B&&e.jsx(W0,{config:B,onChange:X})}),e.jsx(We,{value:"chat",className:"space-y-4",children:S&&e.jsx(ew,{config:S,onChange:O})}),e.jsx(We,{value:"expression",className:"space-y-4",children:te&&e.jsx(tw,{config:te,onChange:he})}),e.jsx(We,{value:"features",className:"space-y-4",children:Ne&&pe&&_e&&e.jsx(aw,{emojiConfig:Ne,memoryConfig:pe,toolConfig:_e,onEmojiChange:ye,onMemoryChange:je,onToolChange:N})}),e.jsx(We,{value:"processing",className:"space-y-4",children:$&&ge&&L&&D&&e.jsx(lw,{keywordReactionConfig:$,responsePostProcessConfig:ge,chineseTypoConfig:L,responseSplitterConfig:D,onKeywordReactionChange:de,onResponsePostProcessChange:le,onChineseTypoChange:F,onResponseSplitterChange:ee})}),e.jsx(We,{value:"mood",className:"space-y-4",children:G&&e.jsx(nw,{config:G,onChange:q})}),e.jsx(We,{value:"voice",className:"space-y-4",children:ie&&e.jsx(iw,{config:ie,onChange:_})}),e.jsx(We,{value:"lpmm",className:"space-y-4",children:me&&e.jsx(rw,{config:me,onChange:xe})}),e.jsxs(We,{value:"other",className:"space-y-4",children:[we&&e.jsx(cw,{config:we,onChange:ze}),ss&&e.jsx(ow,{config:ss,onChange:Ze}),Ls&&e.jsx(dw,{config:Ls,onChange:Gs}),re&&e.jsx(uw,{config:re,onChange:be})]})]})}),v&&e.jsx(Iu,{onRestartComplete:cl,onRestartFailed:ol})]})})}function P0({config:n,onChange:r}){const c=()=>{r({...n,platforms:[...n.platforms,""]})},d=p=>{r({...n,platforms:n.platforms.filter((w,v)=>v!==p)})},h=(p,w)=>{const v=[...n.platforms];v[p]=w,r({...n,platforms:v})},x=()=>{r({...n,alias_names:[...n.alias_names,""]})},f=p=>{r({...n,alias_names:n.alias_names.filter((w,v)=>v!==p)})},j=(p,w)=>{const v=[...n.alias_names];v[p]=w,r({...n,alias_names:v})};return e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"基本信息"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"platform",children:"平台"}),e.jsx(ce,{id:"platform",value:n.platform,onChange:p=>r({...n,platform:p.target.value}),placeholder:"qq"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"qq_account",children:"QQ账号"}),e.jsx(ce,{id:"qq_account",value:n.qq_account,onChange:p=>r({...n,qq_account:p.target.value}),placeholder:"123456789"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"nickname",children:"昵称"}),e.jsx(ce,{id:"nickname",value:n.nickname,onChange:p=>r({...n,nickname:p.target.value}),placeholder:"麦麦"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:"其他平台账号"}),e.jsxs(y,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(ot,{className:"h-4 w-4 mr-1"}),"添加"]})]}),e.jsxs("div",{className:"space-y-2",children:[n.platforms.map((p,w)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{value:p,onChange:v=>h(w,v.target.value),placeholder:"wx:114514"}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(y,{size:"icon",variant:"outline",children:e.jsx(es,{className:"h-4 w-4"})})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:['确定要删除平台账号 "',p||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>d(w),children:"删除"})]})]})]})]},w)),n.platforms.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无其他平台账号"})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:"别名"}),e.jsxs(y,{onClick:x,size:"sm",variant:"outline",children:[e.jsx(ot,{className:"h-4 w-4 mr-1"}),"添加"]})]}),e.jsxs("div",{className:"space-y-2",children:[n.alias_names.map((p,w)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{value:p,onChange:v=>j(w,v.target.value),placeholder:"小麦"}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(y,{size:"icon",variant:"outline",children:e.jsx(es,{className:"h-4 w-4"})})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:['确定要删除别名 "',p||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>f(w),children:"删除"})]})]})]})]},w)),n.alias_names.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无别名"})]})]})]})]})})}function W0({config:n,onChange:r}){const c=()=>{r({...n,states:[...n.states,""]})},d=x=>{r({...n,states:n.states.filter((f,j)=>j!==x)})},h=(x,f)=>{const j=[...n.states];j[x]=f,r({...n,states:j})};return e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"人格设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"personality",children:"人格特质"}),e.jsx(Bs,{id:"personality",value:n.personality,onChange:x=>r({...n,personality:x.target.value}),placeholder:"描述人格特质和身份特征(建议120字以内)",rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"建议120字以内,描述人格特质和身份特征"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"reply_style",children:"表达风格"}),e.jsx(Bs,{id:"reply_style",value:n.reply_style,onChange:x=>r({...n,reply_style:x.target.value}),placeholder:"描述说话的表达风格和习惯",rows:3})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"interest",children:"兴趣"}),e.jsx(Bs,{id:"interest",value:n.interest,onChange:x=>r({...n,interest:x.target.value}),placeholder:"会影响麦麦对什么话题进行回复",rows:2})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"plan_style",children:"说话规则与行为风格"}),e.jsx(Bs,{id:"plan_style",value:n.plan_style,onChange:x=>r({...n,plan_style:x.target.value}),placeholder:"麦麦的说话规则和行为风格",rows:5})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"visual_style",children:"识图规则"}),e.jsx(Bs,{id:"visual_style",value:n.visual_style,onChange:x=>r({...n,visual_style:x.target.value}),placeholder:"识图时的处理规则",rows:3})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"private_plan_style",children:"私聊规则"}),e.jsx(Bs,{id:"private_plan_style",value:n.private_plan_style,onChange:x=>r({...n,private_plan_style:x.target.value}),placeholder:"私聊的说话规则和行为风格",rows:4})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:"状态列表(人格多样性)"}),e.jsxs(y,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(ot,{className:"h-4 w-4 mr-1"}),"添加状态"]})]}),e.jsx("div",{className:"space-y-2",children:n.states.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Bs,{value:x,onChange:j=>h(f,j.target.value),placeholder:"描述一个人格状态",rows:2}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(y,{size:"icon",variant:"outline",children:e.jsx(es,{className:"h-4 w-4"})})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsx(us,{children:"确定要删除这个人格状态吗?此操作无法撤销。"})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>d(f),children:"删除"})]})]})]})]},f))})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"state_probability",children:"状态替换概率"}),e.jsx(ce,{id:"state_probability",type:"number",step:"0.1",min:"0",max:"1",value:n.state_probability,onChange:x=>r({...n,state_probability:parseFloat(x.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"每次构建人格时替换 personality 的概率(0.0-1.0)"})]})]})]})})}function ew({config:n,onChange:r}){const c=()=>{r({...n,talk_value_rules:[...n.talk_value_rules,{target:"",time:"00:00-23:59",value:1}]})},d=j=>{r({...n,talk_value_rules:n.talk_value_rules.filter((p,w)=>w!==j)})},h=(j,p,w)=>{const v=[...n.talk_value_rules];v[j]={...v[j],[p]:w},r({...n,talk_value_rules:v})},x=({value:j,onChange:p})=>{const[w,v]=u.useState("00"),[k,T]=u.useState("00"),[E,R]=u.useState("23"),[K,U]=u.useState("59");u.useEffect(()=>{const Z=j.split("-");if(Z.length===2){const[H,z]=Z,[B,X]=H.split(":"),[S,O]=z.split(":");B&&v(B.padStart(2,"0")),X&&T(X.padStart(2,"0")),S&&R(S.padStart(2,"0")),O&&U(O.padStart(2,"0"))}},[j]);const A=(Z,H,z,B)=>{const X=`${Z}:${H}-${z}:${B}`;p(X)};return e.jsxs(Oa,{children:[e.jsx(Ra,{asChild:!0,children:e.jsxs(y,{variant:"outline",className:"w-full justify-start font-mono text-sm",children:[e.jsx(Wn,{className:"h-4 w-4 mr-2"}),j||"选择时间段"]})}),e.jsx(wa,{className:"w-80",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"font-medium text-sm mb-3",children:"开始时间"}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-xs",children:"小时"}),e.jsxs(He,{value:w,onValueChange:Z=>{v(Z),A(Z,k,E,K)},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsx(Le,{children:Array.from({length:24},(Z,H)=>H).map(Z=>e.jsx(ne,{value:Z.toString().padStart(2,"0"),children:Z.toString().padStart(2,"0")},Z))})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-xs",children:"分钟"}),e.jsxs(He,{value:k,onValueChange:Z=>{T(Z),A(w,Z,E,K)},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsx(Le,{children:Array.from({length:60},(Z,H)=>H).map(Z=>e.jsx(ne,{value:Z.toString().padStart(2,"0"),children:Z.toString().padStart(2,"0")},Z))})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-medium text-sm mb-3",children:"结束时间"}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-xs",children:"小时"}),e.jsxs(He,{value:E,onValueChange:Z=>{R(Z),A(w,k,Z,K)},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsx(Le,{children:Array.from({length:24},(Z,H)=>H).map(Z=>e.jsx(ne,{value:Z.toString().padStart(2,"0"),children:Z.toString().padStart(2,"0")},Z))})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-xs",children:"分钟"}),e.jsxs(He,{value:K,onValueChange:Z=>{U(Z),A(w,k,E,Z)},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsx(Le,{children:Array.from({length:60},(Z,H)=>H).map(Z=>e.jsx(ne,{value:Z.toString().padStart(2,"0"),children:Z.toString().padStart(2,"0")},Z))})]})]})]})]})]})})]})},f=({rule:j})=>{const p=`{ target = "${j.target}", time = "${j.time}", value = ${j.value.toFixed(1)} }`;return e.jsxs(Oa,{children:[e.jsx(Ra,{asChild:!0,children:e.jsxs(y,{variant:"outline",size:"sm",children:[e.jsx(Zt,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(wa,{className:"w-96",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:p}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"聊天设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"talk_value",children:"聊天频率(基础值)"}),e.jsx(ce,{id:"talk_value",type:"number",step:"0.1",min:"0",max:"1",value:n.talk_value,onChange:j=>r({...n,talk_value:parseFloat(j.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"越小越沉默,范围 0-1"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"mentioned_bot_reply",checked:n.mentioned_bot_reply,onCheckedChange:j=>r({...n,mentioned_bot_reply:j})}),e.jsx(b,{htmlFor:"mentioned_bot_reply",className:"cursor-pointer",children:"启用提及必回复"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_context_size",children:"上下文长度"}),e.jsx(ce,{id:"max_context_size",type:"number",min:"1",value:n.max_context_size,onChange:j=>r({...n,max_context_size:parseInt(j.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"planner_smooth",children:"规划器平滑"}),e.jsx(ce,{id:"planner_smooth",type:"number",step:"1",min:"0",value:n.planner_smooth,onChange:j=>r({...n,planner_smooth:parseFloat(j.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"增大数值会减小 planner 负荷,推荐 1-5,0 为关闭"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"enable_talk_value_rules",checked:n.enable_talk_value_rules,onCheckedChange:j=>r({...n,enable_talk_value_rules:j})}),e.jsx(b,{htmlFor:"enable_talk_value_rules",className:"cursor-pointer",children:"启用动态发言频率规则"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"include_planner_reasoning",checked:n.include_planner_reasoning,onCheckedChange:j=>r({...n,include_planner_reasoning:j})}),e.jsx(b,{htmlFor:"include_planner_reasoning",className:"cursor-pointer",children:"将 planner 推理加入 replyer"})]})]})]}),n.enable_talk_value_rules&&e.jsxs("div",{className:"border-t pt-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"动态发言频率规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"按时段或聊天流ID调整发言频率,优先匹配具体聊天,再匹配全局规则"})]}),e.jsxs(y,{onClick:c,size:"sm",children:[e.jsx(ot,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),n.talk_value_rules&&n.talk_value_rules.length>0?e.jsx("div",{className:"space-y-4",children:n.talk_value_rules.map((j,p)=>e.jsxs("div",{className:"rounded-lg border p-4 bg-muted/50 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium text-muted-foreground",children:["规则 #",p+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(f,{rule:j}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(y,{variant:"ghost",size:"sm",children:e.jsx(es,{className:"h-4 w-4 text-destructive"})})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:["确定要删除规则 #",p+1," 吗?此操作无法撤销。"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>d(p),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"配置类型"}),e.jsxs(He,{value:j.target===""?"global":"specific",onValueChange:w=>{w==="global"?h(p,"target",""):h(p,"target","qq::group")},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"global",children:"全局配置"}),e.jsx(ne,{value:"specific",children:"详细配置"})]})]})]}),j.target!==""&&(()=>{const w=j.target.split(":"),v=w[0]||"qq",k=w[1]||"",T=w[2]||"group";return e.jsxs("div",{className:"grid gap-4 p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"平台"}),e.jsxs(He,{value:v,onValueChange:E=>{h(p,"target",`${E}:${k}:${T}`)},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"qq",children:"QQ"}),e.jsx(ne,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"群 ID"}),e.jsx(ce,{value:k,onChange:E=>{h(p,"target",`${v}:${E.target.value}:${T}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"类型"}),e.jsxs(He,{value:T,onValueChange:E=>{h(p,"target",`${v}:${k}:${E}`)},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"group",children:"群组(group)"}),e.jsx(ne,{value:"private",children:"私聊(private)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",j.target||"(未设置)"]})]})})(),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"时间段 (Time)"}),e.jsx(x,{value:j.time,onChange:w=>h(p,"time",w)}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"支持跨夜区间,例如 23:00-02:00"})]}),e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{htmlFor:`rule-value-${p}`,className:"text-xs font-medium",children:"发言频率值 (Value)"}),e.jsx(ce,{id:`rule-value-${p}`,type:"number",step:"0.01",min:"0.01",max:"1",value:j.value,onChange:w=>{const v=parseFloat(w.target.value);isNaN(v)||h(p,"value",Math.max(.01,Math.min(1,v)))},className:"w-20 h-8 text-xs"})]}),e.jsx(Ma,{value:[j.value],onValueChange:w=>h(p,"value",w[0]),min:.01,max:1,step:.01,className:"w-full"}),e.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[e.jsx("span",{children:"0.01 (极少发言)"}),e.jsx("span",{children:"0.5"}),e.jsx("span",{children:"1.0 (正常)"})]})]})]})]},p))}):e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:e.jsx("p",{className:"text-sm",children:'暂无规则,点击"添加规则"按钮创建'})}),e.jsxs("div",{className:"mt-4 p-4 bg-blue-50 dark:bg-blue-950/20 border border-blue-200 dark:border-blue-800 rounded-lg",children:[e.jsx("h5",{className:"text-sm font-semibold text-blue-900 dark:text-blue-100 mb-2",children:"📝 规则说明"}),e.jsxs("ul",{className:"text-xs text-blue-800 dark:text-blue-200 space-y-1",children:[e.jsxs("li",{children:["• ",e.jsx("strong",{children:"Target 为空"}),":全局规则,对所有聊天生效"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"Target 指定"}),":仅对特定聊天流生效(格式:platform:id:type)"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"优先级"}),":先匹配具体聊天流规则,再匹配全局规则"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"时间支持跨夜"}),":例如 23:00-02:00 表示晚上11点到次日凌晨2点"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"数值范围"}),":建议 0-1,0 表示完全沉默,1 表示正常发言"]})]})]})]})]})}function sw({member:n,groupIndex:r,memberIndex:c,availableChatIds:d,onUpdate:h,onRemove:x}){const f=d.includes(n)||n==="*",[j,p]=u.useState(!f);return e.jsxs("div",{className:"flex gap-2",children:[e.jsx("div",{className:"flex-1 flex gap-2",children:j?e.jsxs(e.Fragment,{children:[e.jsx(ce,{value:n,onChange:w=>h(r,c,w.target.value),placeholder:'输入 "*" 或 "qq:123456:group"',className:"flex-1"}),d.length>0&&e.jsx(y,{size:"sm",variant:"outline",onClick:()=>p(!1),title:"切换到下拉选择",children:"下拉"})]}):e.jsxs(e.Fragment,{children:[e.jsxs(He,{value:n,onValueChange:w=>h(r,c,w),children:[e.jsx(Re,{className:"flex-1",children:e.jsx(qe,{placeholder:"选择聊天流"})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"*",children:"* (全局共享)"}),d.map((w,v)=>e.jsx(ne,{value:w,children:w},v))]})]}),e.jsx(y,{size:"sm",variant:"outline",onClick:()=>p(!0),title:"切换到手动输入",children:"输入"})]})}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(y,{size:"icon",variant:"outline",children:e.jsx(es,{className:"h-4 w-4"})})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:['确定要删除组成员 "',n||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>x(r,c),children:"删除"})]})]})]})]})}function tw({config:n,onChange:r}){const c=()=>{r({...n,learning_list:[...n.learning_list,["","enable","enable","1.0"]]})},d=k=>{r({...n,learning_list:n.learning_list.filter((T,E)=>E!==k)})},h=(k,T,E)=>{const R=[...n.learning_list];R[k][T]=E,r({...n,learning_list:R})},x=({rule:k})=>{const T=`["${k[0]}", "${k[1]}", "${k[2]}", "${k[3]}"]`;return e.jsxs(Oa,{children:[e.jsx(Ra,{asChild:!0,children:e.jsxs(y,{variant:"outline",size:"sm",children:[e.jsx(Zt,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(wa,{className:"w-96",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:T}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},f=()=>{r({...n,expression_groups:[...n.expression_groups,[]]})},j=k=>{r({...n,expression_groups:n.expression_groups.filter((T,E)=>E!==k)})},p=k=>{const T=[...n.expression_groups];T[k]=[...T[k],""],r({...n,expression_groups:T})},w=(k,T)=>{const E=[...n.expression_groups];E[k]=E[k].filter((R,K)=>K!==T),r({...n,expression_groups:E})},v=(k,T,E)=>{const R=[...n.expression_groups];R[k][T]=E,r({...n,expression_groups:R})};return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达学习配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置麦麦如何学习和使用表达方式"})]}),e.jsxs(y,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(ot,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),e.jsxs("div",{className:"space-y-4",children:[n.learning_list.map((k,T)=>{const E=n.learning_list.some((H,z)=>z!==T&&H[0]===""),R=k[0]==="",K=k[0].split(":"),U=K[0]||"qq",A=K[1]||"",Z=K[2]||"group";return e.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["规则 ",T+1," ",R&&"(全局配置)"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(x,{rule:k}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(y,{size:"sm",variant:"ghost",children:e.jsx(es,{className:"h-4 w-4"})})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:["确定要删除学习规则 ",T+1," 吗?此操作无法撤销。"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>d(T),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"配置类型"}),e.jsxs(He,{value:R?"global":"specific",onValueChange:H=>{H==="global"?h(T,0,""):h(T,0,"qq::group")},disabled:E&&!R,children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"global",children:"全局配置"}),e.jsx(ne,{value:"specific",disabled:E&&!R,children:"详细配置"})]})]}),E&&!R&&e.jsx("p",{className:"text-xs text-amber-600",children:"已存在全局配置,无法创建新的全局配置"})]}),!R&&e.jsxs("div",{className:"grid gap-4 p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"平台"}),e.jsxs(He,{value:U,onValueChange:H=>{h(T,0,`${H}:${A}:${Z}`)},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"qq",children:"QQ"}),e.jsx(ne,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"群 ID"}),e.jsx(ce,{value:A,onChange:H=>{h(T,0,`${U}:${H.target.value}:${Z}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"类型"}),e.jsxs(He,{value:Z,onValueChange:H=>{h(T,0,`${U}:${A}:${H}`)},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"group",children:"群组(group)"}),e.jsx(ne,{value:"private",children:"私聊(private)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",k[0]||"(未设置)"]})]}),e.jsx("div",{className:"grid gap-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-xs font-medium",children:"使用学到的表达"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦使用从聊天中学到的表达方式"})]}),e.jsx(Ve,{checked:k[1]==="enable",onCheckedChange:H=>h(T,1,H?"enable":"disable")})]})}),e.jsx("div",{className:"grid gap-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-xs font-medium",children:"学习表达"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦从聊天中学习新的表达方式"})]}),e.jsx(Ve,{checked:k[2]==="enable",onCheckedChange:H=>h(T,2,H?"enable":"disable")})]})}),e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-xs font-medium",children:"学习强度"}),e.jsx(ce,{type:"number",step:"0.1",min:"0",max:"5",value:k[3],onChange:H=>{const z=parseFloat(H.target.value);isNaN(z)||h(T,3,Math.max(0,Math.min(5,z)).toFixed(1))},className:"w-20 h-8 text-xs"})]}),e.jsx(Ma,{value:[parseFloat(k[3])||1],onValueChange:H=>h(T,3,H[0].toFixed(1)),min:0,max:5,step:.1,className:"w-full"}),e.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[e.jsx("span",{children:"0 (不学习)"}),e.jsx("span",{children:"2.5"}),e.jsx("span",{children:"5.0 (快速学习)"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"影响学习频率,最短学习间隔 = 300/学习强度(秒)"})]})]})]},T)}),n.learning_list.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无学习规则,点击"添加规则"开始配置'})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达反思配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置麦麦主动向管理员询问表达方式是否合适的功能"})]}),e.jsx(Ve,{checked:n.reflect,onCheckedChange:k=>r({...n,reflect:k})})]}),n.reflect&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsx("span",{className:"text-sm font-medium",children:"反思操作员"})}),e.jsx("div",{className:"space-y-4",children:(()=>{const T=(n.reflect_operator_id||"").split(":"),E=T[0]||"qq",R=T[1]||"",K=T[2]||"private";return e.jsxs("div",{className:"grid gap-4 p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"平台"}),e.jsxs(He,{value:E,onValueChange:U=>{r({...n,reflect_operator_id:`${U}:${R}:${K}`})},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"qq",children:"QQ"}),e.jsx(ne,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"用户/群 ID"}),e.jsx(ce,{value:R,onChange:U=>{r({...n,reflect_operator_id:`${E}:${U.target.value}:${K}`})},placeholder:"输入 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"类型"}),e.jsxs(He,{value:K,onValueChange:U=>{r({...n,reflect_operator_id:`${E}:${R}:${U}`})},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"private",children:"私聊(private)"}),e.jsx(ne,{value:"group",children:"群组(group)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前操作员 ID:",n.reflect_operator_id||"(未设置)"]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦会向此操作员询问表达方式是否合适"})]})})()})]}),e.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-sm font-medium",children:"允许反思的聊天流"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"只有在此列表中的聊天流才会提出问题并跟踪。如果列表为空,则所有聊天流都可以进行表达反思"})]}),e.jsxs(y,{onClick:()=>{r({...n,allow_reflect:[...n.allow_reflect||[],"qq::group"]})},size:"sm",variant:"outline",children:[e.jsx(ot,{className:"h-4 w-4 mr-1"}),"添加聊天流"]})]}),e.jsxs("div",{className:"space-y-2",children:[(n.allow_reflect||[]).map((k,T)=>{const E=k.split(":"),R=E[0]||"qq",K=E[1]||"",U=E[2]||"group";return e.jsxs("div",{className:"flex items-center gap-2 p-3 rounded-lg bg-muted/50",children:[e.jsxs(He,{value:R,onValueChange:A=>{const Z=[...n.allow_reflect];Z[T]=`${A}:${K}:${U}`,r({...n,allow_reflect:Z})},children:[e.jsx(Re,{className:"w-24",children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"qq",children:"QQ"}),e.jsx(ne,{value:"wx",children:"微信"})]})]}),e.jsx(ce,{value:K,onChange:A=>{const Z=[...n.allow_reflect];Z[T]=`${R}:${A.target.value}:${U}`,r({...n,allow_reflect:Z})},placeholder:"ID",className:"flex-1 font-mono text-sm"}),e.jsxs(He,{value:U,onValueChange:A=>{const Z=[...n.allow_reflect];Z[T]=`${R}:${K}:${A}`,r({...n,allow_reflect:Z})},children:[e.jsx(Re,{className:"w-32",children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"group",children:"群组"}),e.jsx(ne,{value:"private",children:"私聊"})]})]}),e.jsx(y,{onClick:()=>{r({...n,allow_reflect:n.allow_reflect.filter((A,Z)=>Z!==T)})},size:"sm",variant:"ghost",children:e.jsx(es,{className:"h-4 w-4"})})]},T)}),(!n.allow_reflect||n.allow_reflect.length===0)&&e.jsx("div",{className:"text-center py-4 text-muted-foreground text-sm",children:"列表为空,所有聊天流都可以进行表达反思"})]})]})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达共享组配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置不同聊天流之间如何共享学到的表达方式"})]}),e.jsxs(y,{onClick:f,size:"sm",variant:"outline",children:[e.jsx(ot,{className:"h-4 w-4 mr-1"}),"添加共享组"]})]}),e.jsxs("div",{className:"space-y-4",children:[n.expression_groups.map((k,T)=>{const E=n.learning_list.map(R=>R[0]).filter(R=>R!=="");return e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["共享组 ",T+1,k.length===1&&k[0]==="*"&&"(全局共享)"]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(y,{onClick:()=>p(T),size:"sm",variant:"outline",children:e.jsx(ot,{className:"h-4 w-4"})}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(y,{size:"sm",variant:"ghost",children:e.jsx(es,{className:"h-4 w-4"})})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:["确定要删除共享组 ",T+1," 吗?此操作无法撤销。"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>j(T),children:"删除"})]})]})]})]})]}),e.jsx("div",{className:"space-y-2",children:k.map((R,K)=>e.jsx(sw,{member:R,groupIndex:T,memberIndex:K,availableChatIds:E,onUpdate:v,onRemove:w},`${T}-${K}`))}),e.jsx("p",{className:"text-xs text-muted-foreground",children:'提示:可以从下拉框选择已配置的聊天流,或手动输入。输入 "*" 启用全局共享'})]},T)}),n.expression_groups.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无共享组,点击"添加共享组"开始配置'})]})]})})]})}function aw({emojiConfig:n,memoryConfig:r,toolConfig:c,onEmojiChange:d,onMemoryChange:h,onToolChange:x}){return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"工具设置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"enable_tool",checked:c.enable_tool,onCheckedChange:f=>x({...c,enable_tool:f})}),e.jsx(b,{htmlFor:"enable_tool",className:"cursor-pointer",children:"启用工具系统"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"允许麦麦使用各种工具来增强功能"})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"记忆设置"}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_agent_iterations",children:"记忆思考深度"}),e.jsx(ce,{id:"max_agent_iterations",type:"number",min:"1",value:r.max_agent_iterations,onChange:f=>h({...r,max_agent_iterations:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"最低为 1(不深入思考)"})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"表情包设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"emoji_chance",children:"表情包激活概率"}),e.jsx(ce,{id:"emoji_chance",type:"number",step:"0.1",min:"0",max:"1",value:n.emoji_chance,onChange:f=>d({...n,emoji_chance:parseFloat(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"范围 0-1,越大越容易发送表情包"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_reg_num",children:"最大注册数量"}),e.jsx(ce,{id:"max_reg_num",type:"number",min:"1",value:n.max_reg_num,onChange:f=>d({...n,max_reg_num:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦最多可以注册的表情包数量"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),e.jsx(ce,{id:"check_interval",type:"number",min:"1",value:n.check_interval,onChange:f=>d({...n,check_interval:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包(注册、破损、删除)的时间间隔"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"do_replace",checked:n.do_replace,onCheckedChange:f=>d({...n,do_replace:f})}),e.jsx(b,{htmlFor:"do_replace",className:"cursor-pointer",children:"达到最大数量时替换表情包"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"steal_emoji",checked:n.steal_emoji,onCheckedChange:f=>d({...n,steal_emoji:f})}),e.jsx(b,{htmlFor:"steal_emoji",className:"cursor-pointer",children:"偷取表情包"})]}),e.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"允许麦麦将看到的表情包据为己有"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"content_filtration",checked:n.content_filtration,onCheckedChange:f=>d({...n,content_filtration:f})}),e.jsx(b,{htmlFor:"content_filtration",className:"cursor-pointer",children:"启用表情包过滤"})]}),n.content_filtration&&e.jsxs("div",{className:"grid gap-2 pl-6 border-l-2 border-primary/20",children:[e.jsx(b,{htmlFor:"filtration_prompt",children:"过滤要求"}),e.jsx(ce,{id:"filtration_prompt",value:n.filtration_prompt,onChange:f=>d({...n,filtration_prompt:f.target.value}),placeholder:"符合公序良俗"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"只有符合此要求的表情包才会被保存"})]})]})]})})]})}function lw({keywordReactionConfig:n,responsePostProcessConfig:r,chineseTypoConfig:c,responseSplitterConfig:d,onKeywordReactionChange:h,onResponsePostProcessChange:x,onChineseTypoChange:f,onResponseSplitterChange:j}){const p=()=>{h({...n,regex_rules:[...n.regex_rules,{regex:[""],reaction:""}]})},w=z=>{h({...n,regex_rules:n.regex_rules.filter((B,X)=>X!==z)})},v=(z,B,X)=>{const S=[...n.regex_rules];B==="regex"&&typeof X=="string"?S[z]={...S[z],regex:[X]}:B==="reaction"&&typeof X=="string"&&(S[z]={...S[z],reaction:X}),h({...n,regex_rules:S})},k=({regex:z,reaction:B,onRegexChange:X,onReactionChange:S})=>{const[O,te]=u.useState(!1),[he,Ne]=u.useState(""),[ye,pe]=u.useState(null),[je,_e]=u.useState(""),[N,G]=u.useState({}),[q,ie]=u.useState(""),_=u.useRef(null),[me,xe]=u.useState("build"),$=L=>L.replace(/\(\?P<([^>]+)>/g,"(?<$1>"),de=(L,F=0)=>{const D=_.current;if(!D)return;const ee=D.selectionStart||0,we=D.selectionEnd||0,ze=z.substring(0,ee)+L+z.substring(we);X(ze),setTimeout(()=>{const ss=ee+L.length+F;D.setSelectionRange(ss,ss),D.focus()},0)};u.useEffect(()=>{if(!z||!he){pe(null),G({}),ie(B),_e("");return}try{const L=$(z),F=new RegExp(L,"g"),D=he.match(F);pe(D),_e("");const we=new RegExp(L).exec(he);if(we&&we.groups){G(we.groups);let ze=B;Object.entries(we.groups).forEach(([ss,Ze])=>{ze=ze.replace(new RegExp(`\\[${ss}\\]`,"g"),Ze||"")}),ie(ze)}else G({}),ie(B)}catch(L){_e(L.message),pe(null),G({}),ie(B)}},[z,he,B]);const ge=()=>{if(!he||!ye||ye.length===0)return e.jsx("span",{className:"text-muted-foreground",children:he||"请输入测试文本"});try{const L=$(z),F=new RegExp(L,"g");let D=0;const ee=[];let we;for(;(we=F.exec(he))!==null;)we.index>D&&ee.push(e.jsx("span",{children:he.substring(D,we.index)},`text-${D}`)),ee.push(e.jsx("span",{className:"bg-yellow-200 dark:bg-yellow-900 font-semibold",children:we[0]},`match-${we.index}`)),D=we.index+we[0].length;return D)",desc:"Python风格命名捕获组",moveCursor:-1},{label:"非捕获组",pattern:"(?:)",desc:"分组但不保存匹配结果",moveCursor:-1}]},{category:"字符类",items:[{label:"字符集",pattern:"[]",desc:"匹配括号内的任意字符",moveCursor:-1},{label:"排除字符",pattern:"[^]",desc:"匹配不在括号内的字符",moveCursor:-1},{label:"范围",pattern:"[a-z]",desc:"匹配a到z的字符"},{label:"中文字符",pattern:"[\\u4e00-\\u9fa5]",desc:"匹配中文汉字"}]},{category:"常用模板",items:[{label:"捕获词语",pattern:"(?P\\S+)",desc:"捕获一个词语"},{label:"捕获句子",pattern:"(?P.+)",desc:"捕获整个句子"},{label:"捕获数字",pattern:"(?P\\d+)",desc:"捕获一个或多个数字"},{label:"可选词语",pattern:"(?:词语1|词语2)",desc:"匹配多个可选项之一"}]}];return e.jsxs(Rs,{open:O,onOpenChange:te,children:[e.jsx(ni,{asChild:!0,children:e.jsxs(y,{variant:"outline",size:"sm",children:[e.jsx(ao,{className:"h-4 w-4 mr-1"}),"正则编辑器"]})}),e.jsxs(zs,{className:"max-w-[95vw] sm:max-w-[900px] max-h-[90vh]",children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"正则表达式编辑器"}),e.jsx(Ys,{className:"text-sm",children:"使用可视化工具构建正则表达式,并实时测试效果"})]}),e.jsx(Pe,{className:"max-h-[calc(90vh-120px)]",children:e.jsxs(Kt,{value:me,onValueChange:L=>xe(L),className:"w-full",children:[e.jsxs(Rt,{className:"grid w-full grid-cols-2",children:[e.jsx($e,{value:"build",children:"🔧 构建器"}),e.jsx($e,{value:"test",children:"🧪 测试器"})]}),e.jsxs(We,{value:"build",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"正则表达式"}),e.jsx(ce,{ref:_,value:z,onChange:L=>X(L.target.value),className:"font-mono text-sm",placeholder:"点击下方按钮构建正则表达式..."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"Reaction 内容"}),e.jsx(Bs,{value:B,onChange:L=>S(L.target.value),placeholder:"使用 [捕获组名] 引用捕获的内容...",rows:3,className:"text-sm"})]}),e.jsxs("div",{className:"space-y-4 border-t pt-4",children:[le.map(L=>e.jsxs("div",{className:"space-y-2",children:[e.jsx("h5",{className:"text-xs font-semibold text-primary",children:L.category}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:L.items.map(F=>e.jsx(y,{variant:"outline",size:"sm",className:"justify-start h-auto py-2 px-3",onClick:()=>de(F.pattern,F.moveCursor||0),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsxs("div",{className:"flex items-center gap-2 w-full",children:[e.jsx("span",{className:"text-xs font-medium",children:F.label}),e.jsx("code",{className:"ml-auto text-xs bg-muted px-1.5 py-0.5 rounded font-mono",children:F.pattern})]}),e.jsx("span",{className:"text-xs text-muted-foreground mt-0.5",children:F.desc})]})},F.label))})]},L.category)),e.jsxs("div",{className:"space-y-2 border-t pt-4",children:[e.jsx("h5",{className:"text-xs font-semibold text-primary",children:"完整示例模板"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>X("^(?P\\S{1,20})是这样的$"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsxs("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:["^(?P\\S","{1,20}",")是这样的$"]}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「某事物是这样的」并捕获事物名称"})]})}),e.jsx(y,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>X("(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「我没要求你做某事」并捕获具体行为"})]})}),e.jsx(y,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>X("(?P.+?)(?:是|为什么|怎么)"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?P.+?)(?:是|为什么|怎么)"}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"捕获问题主题词"})]})})]})]})]}),e.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 使用提示"}),e.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"点击输入框设置光标位置,然后点击按钮插入模式"}),e.jsxs("li",{children:["命名捕获组格式:",e.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"(?P<名称>模式)"})]}),e.jsxs("li",{children:["在 reaction 中使用 ",e.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"[名称]"})," 引用捕获的内容"]}),e.jsx("li",{children:"切换到测试器标签页验证正则表达式效果"})]})]})]}),e.jsxs(We,{value:"test",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"当前正则表达式"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:z||"(未设置)"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"test-text",className:"text-sm font-medium",children:"测试文本"}),e.jsx(Bs,{id:"test-text",value:he,onChange:L=>Ne(L.target.value),placeholder:`在此输入要测试的文本... -例如:打游戏是这样的`,className:"min-h-[100px] text-sm"})]}),je&&e.jsxs("div",{className:"rounded-md bg-destructive/10 border border-destructive/20 p-3",children:[e.jsx("p",{className:"text-sm text-destructive font-medium",children:"正则表达式错误"}),e.jsx("p",{className:"text-xs text-destructive/80 mt-1",children:je})]}),!je&&he&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"flex items-center gap-2",children:ye&&ye.length>0?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-green-500"}),e.jsxs("span",{className:"text-sm font-medium text-green-600 dark:text-green-400",children:["匹配成功 (",ye.length," 处)"]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-gray-400"}),e.jsx("span",{className:"text-sm font-medium text-muted-foreground",children:"无匹配"})]})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"匹配高亮"}),e.jsx(Pe,{className:"h-40 rounded-md bg-muted p-3",children:e.jsx("div",{className:"text-sm break-words",children:ge()})})]}),Object.keys(N).length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"命名捕获组"}),e.jsx(Pe,{className:"h-32 rounded-md border p-3",children:e.jsx("div",{className:"space-y-2",children:Object.entries(N).map(([L,F])=>e.jsxs("div",{className:"flex items-start gap-2 text-sm",children:[e.jsxs("span",{className:"font-mono font-semibold text-primary min-w-[80px]",children:["[",L,"]"]}),e.jsx("span",{className:"text-muted-foreground",children:"="}),e.jsx("span",{className:"font-mono bg-muted px-2 py-0.5 rounded",children:F})]},L))})})]}),Object.keys(N).length>0&&B&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"Reaction 替换预览"}),e.jsx(Pe,{className:"h-48 rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3",children:e.jsx("div",{className:"text-sm break-words",children:q})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"reaction 中的 [name] 已被替换为对应的捕获组值"})]})]}),e.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 测试说明"}),e.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"匹配的文本会以黄色背景高亮显示"}),e.jsx("li",{children:"命名捕获组的值会显示在下方列表中"}),e.jsx("li",{children:"Reaction 替换预览显示最终生成的反应内容"}),e.jsx("li",{children:"如需修改正则,切换回构建器标签页"})]})]})]})]})})]})]})},T=()=>{h({...n,keyword_rules:[...n.keyword_rules,{keywords:[],reaction:""}]})},E=z=>{h({...n,keyword_rules:n.keyword_rules.filter((B,X)=>X!==z)})},R=(z,B,X)=>{const S=[...n.keyword_rules];typeof X=="string"&&(S[z]={...S[z],reaction:X}),h({...n,keyword_rules:S})},K=z=>{const B=[...n.keyword_rules];B[z]={...B[z],keywords:[...B[z].keywords||[],""]},h({...n,keyword_rules:B})},U=(z,B)=>{const X=[...n.keyword_rules];X[z]={...X[z],keywords:(X[z].keywords||[]).filter((S,O)=>O!==B)},h({...n,keyword_rules:X})},A=(z,B,X)=>{const S=[...n.keyword_rules],O=[...S[z].keywords||[]];O[B]=X,S[z]={...S[z],keywords:O},h({...n,keyword_rules:S})},Z=({rule:z})=>{const B=`{ regex = [${(z.regex||[]).map(X=>`"${X}"`).join(", ")}], reaction = "${z.reaction}" }`;return e.jsxs(Oa,{children:[e.jsx(Ra,{asChild:!0,children:e.jsxs(y,{variant:"outline",size:"sm",children:[e.jsx(Zt,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(wa,{className:"w-[95vw] sm:w-[500px]",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx(Pe,{className:"h-60 rounded-md bg-muted p-3",children:e.jsx("pre",{className:"font-mono text-xs break-all",children:B})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},H=({rule:z})=>{const B=`[[keyword_reaction.keyword_rules]] -keywords = [${(z.keywords||[]).map(X=>`"${X}"`).join(", ")}] -reaction = "${z.reaction}"`;return e.jsxs(Oa,{children:[e.jsx(Ra,{asChild:!0,children:e.jsxs(y,{variant:"outline",size:"sm",children:[e.jsx(Zt,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(wa,{className:"w-[95vw] sm:w-[500px]",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx(Pe,{className:"h-60 rounded-md bg-muted p-3",children:e.jsx("pre",{className:"font-mono text-xs whitespace-pre-wrap break-all",children:B})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"关键词反应配置"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"配置触发特定反应的关键词和正则表达式规则"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"正则表达式规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用正则表达式匹配消息内容"})]}),e.jsxs(y,{onClick:p,size:"sm",variant:"outline",children:[e.jsx(ot,{className:"h-4 w-4 mr-1"}),"添加正则规则"]})]}),e.jsxs("div",{className:"space-y-3",children:[n.regex_rules.map((z,B)=>e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["正则规则 ",B+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{regex:z.regex&&z.regex[0]||"",reaction:z.reaction,onRegexChange:X=>v(B,"regex",X),onReactionChange:X=>v(B,"reaction",X)}),e.jsx(Z,{rule:z}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(y,{size:"sm",variant:"ghost",children:e.jsx(es,{className:"h-4 w-4"})})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:["确定要删除正则规则 ",B+1," 吗?此操作无法撤销。"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>w(B),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"正则表达式(Python 语法)"}),e.jsx(ce,{value:z.regex&&z.regex[0]||"",onChange:X=>v(B,"regex",X.target.value),placeholder:"例如:^(?P\\\\S{1,20})是这样的$ (点击正则编辑器按钮可视化构建)",className:"font-mono text-sm"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:'支持命名捕获组 (?Ppattern),可在 reaction 中使用 [name] 引用。点击"正则编辑器"可视化构建和测试!'})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"反应内容"}),e.jsx(Bs,{value:z.reaction,onChange:X=>v(B,"reaction",X.target.value),placeholder:`触发后麦麦的反应... -可以使用 [捕获组名] 来引用正则表达式中的内容`,rows:3,className:"text-sm"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"使用 [捕获组名] 引用正则表达式中的命名捕获组,例如 [n] 会被替换为捕获的内容"})]})]})]},B)),n.regex_rules.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无正则规则,点击"添加正则规则"开始配置'})]})]}),e.jsxs("div",{className:"space-y-4 border-t pt-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"关键词规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用关键词列表匹配消息内容"})]}),e.jsxs(y,{onClick:T,size:"sm",variant:"outline",children:[e.jsx(ot,{className:"h-4 w-4 mr-1"}),"添加关键词规则"]})]}),e.jsxs("div",{className:"space-y-3",children:[n.keyword_rules.map((z,B)=>e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["关键词规则 ",B+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(H,{rule:z}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(y,{size:"sm",variant:"ghost",children:e.jsx(es,{className:"h-4 w-4"})})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:["确定要删除关键词规则 ",B+1," 吗?此操作无法撤销。"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>E(B),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-xs font-medium",children:"关键词列表"}),e.jsxs(y,{onClick:()=>K(B),size:"sm",variant:"ghost",children:[e.jsx(ot,{className:"h-3 w-3 mr-1"}),"添加关键词"]})]}),e.jsxs("div",{className:"space-y-2",children:[(z.keywords||[]).map((X,S)=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{value:X,onChange:O=>A(B,S,O.target.value),placeholder:"关键词",className:"flex-1"}),e.jsx(y,{onClick:()=>U(B,S),size:"sm",variant:"ghost",children:e.jsx(es,{className:"h-4 w-4"})})]},S)),(!z.keywords||z.keywords.length===0)&&e.jsx("p",{className:"text-xs text-muted-foreground text-center py-2",children:'暂无关键词,点击"添加关键词"开始配置'})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"反应内容"}),e.jsx(Bs,{value:z.reaction,onChange:X=>R(B,"reaction",X.target.value),placeholder:"触发后麦麦的反应...",rows:3,className:"text-sm"})]})]})]},B)),n.keyword_rules.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无关键词规则,点击"添加关键词规则"开始配置'})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"回复后处理配置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"enable_response_post_process",checked:r.enable_response_post_process,onCheckedChange:z=>x({...r,enable_response_post_process:z})}),e.jsx(b,{htmlFor:"enable_response_post_process",className:"cursor-pointer",children:"启用回复后处理"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"包括错别字生成器和回复分割器"})]}),r.enable_response_post_process&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"border-t pt-6 space-y-4",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[e.jsx(Ve,{id:"enable_chinese_typo",checked:c.enable,onCheckedChange:z=>f({...c,enable:z})}),e.jsx(b,{htmlFor:"enable_chinese_typo",className:"cursor-pointer font-semibold",children:"中文错别字生成器"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"为回复添加随机错别字,让麦麦的回复更自然"}),c.enable&&e.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"error_rate",className:"text-xs font-medium",children:"单字替换概率"}),e.jsx(ce,{id:"error_rate",type:"number",step:"0.001",min:"0",max:"1",value:c.error_rate,onChange:z=>f({...c,error_rate:parseFloat(z.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"min_freq",className:"text-xs font-medium",children:"最小字频阈值"}),e.jsx(ce,{id:"min_freq",type:"number",min:"0",value:c.min_freq,onChange:z=>f({...c,min_freq:parseInt(z.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"tone_error_rate",className:"text-xs font-medium",children:"声调错误概率"}),e.jsx(ce,{id:"tone_error_rate",type:"number",step:"0.01",min:"0",max:"1",value:c.tone_error_rate,onChange:z=>f({...c,tone_error_rate:parseFloat(z.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"word_replace_rate",className:"text-xs font-medium",children:"整词替换概率"}),e.jsx(ce,{id:"word_replace_rate",type:"number",step:"0.001",min:"0",max:"1",value:c.word_replace_rate,onChange:z=>f({...c,word_replace_rate:parseFloat(z.target.value)})})]})]})]})}),e.jsx("div",{className:"border-t pt-6 space-y-4",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[e.jsx(Ve,{id:"enable_response_splitter",checked:d.enable,onCheckedChange:z=>j({...d,enable:z})}),e.jsx(b,{htmlFor:"enable_response_splitter",className:"cursor-pointer font-semibold",children:"回复分割器"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"控制回复的长度和句子数量"}),d.enable&&e.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_length",className:"text-xs font-medium",children:"最大长度"}),e.jsx(ce,{id:"max_length",type:"number",min:"1",value:d.max_length,onChange:z=>j({...d,max_length:parseInt(z.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大字符数"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_sentence_num",className:"text-xs font-medium",children:"最大句子数"}),e.jsx(ce,{id:"max_sentence_num",type:"number",min:"1",value:d.max_sentence_num,onChange:z=>j({...d,max_sentence_num:parseInt(z.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大句子数量"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"enable_kaomoji_protection",checked:d.enable_kaomoji_protection,onCheckedChange:z=>j({...d,enable_kaomoji_protection:z})}),e.jsx(b,{htmlFor:"enable_kaomoji_protection",className:"cursor-pointer",children:"启用颜文字保护"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"enable_overflow_return_all",checked:d.enable_overflow_return_all,onCheckedChange:z=>j({...d,enable_overflow_return_all:z})}),e.jsx(b,{htmlFor:"enable_overflow_return_all",className:"cursor-pointer",children:"超出时一次性返回全部"})]}),e.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"当句子数量超出限制时,合并后一次性返回所有内容"})]})]})})]})]})]})}function nw({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"情绪设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{checked:n.enable_mood,onCheckedChange:c=>r({...n,enable_mood:c})}),e.jsx(b,{className:"cursor-pointer",children:"启用情绪系统"})]}),n.enable_mood&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"情绪更新阈值"}),e.jsx(ce,{type:"number",min:"1",value:n.mood_update_threshold,onChange:c=>r({...n,mood_update_threshold:parseInt(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"越高,更新越慢"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"情感特征"}),e.jsx(Bs,{value:n.emotion_style,onChange:c=>r({...n,emotion_style:c.target.value}),placeholder:"影响情绪的变化情况",rows:2})]})]})]})]})}function iw({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"语音设置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{checked:n.enable_asr,onCheckedChange:c=>r({...n,enable_asr:c})}),e.jsx(b,{className:"cursor-pointer",children:"启用语音识别"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"启用后麦麦可以识别语音消息,需要配置语音识别模型"})]})}function rw({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{checked:n.enable,onCheckedChange:c=>r({...n,enable:c})}),e.jsx(b,{className:"cursor-pointer",children:"启用 LPMM 知识库"})]}),n.enable&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"LPMM 模式"}),e.jsxs(He,{value:n.lpmm_mode,onValueChange:c=>r({...n,lpmm_mode:c}),children:[e.jsx(Re,{children:e.jsx(qe,{placeholder:"选择 LPMM 模式"})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"classic",children:"经典模式"}),e.jsx(ne,{value:"agent",children:"Agent 模式"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"同义词搜索 TopK"}),e.jsx(ce,{type:"number",min:"1",value:n.rag_synonym_search_top_k,onChange:c=>r({...n,rag_synonym_search_top_k:parseInt(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"同义词阈值"}),e.jsx(ce,{type:"number",step:"0.1",min:"0",max:"1",value:n.rag_synonym_threshold,onChange:c=>r({...n,rag_synonym_threshold:parseFloat(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"实体提取线程数"}),e.jsx(ce,{type:"number",min:"1",value:n.info_extraction_workers,onChange:c=>r({...n,info_extraction_workers:parseInt(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"嵌入向量维度"}),e.jsx(ce,{type:"number",min:"1",value:n.embedding_dimension,onChange:c=>r({...n,embedding_dimension:parseInt(c.target.value)})})]})]})]})]})]})}function cw({config:n,onChange:r}){const[c,d]=u.useState(""),[h,x]=u.useState("WARNING"),f=()=>{c&&!n.suppress_libraries.includes(c)&&(r({...n,suppress_libraries:[...n.suppress_libraries,c]}),d(""))},j=E=>{r({...n,suppress_libraries:n.suppress_libraries.filter(R=>R!==E)})},p=()=>{c&&!n.library_log_levels[c]&&(r({...n,library_log_levels:{...n.library_log_levels,[c]:h}}),d(""),x("WARNING"))},w=E=>{const R={...n.library_log_levels};delete R[E],r({...n,library_log_levels:R})},v=["DEBUG","INFO","WARNING","ERROR","CRITICAL"],k=["FULL","compact","lite"],T=["none","title","full"];return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"日志配置"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"日期格式"}),e.jsx(ce,{value:n.date_style,onChange:E=>r({...n,date_style:E.target.value}),placeholder:"例如: m-d H:i:s"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"m=月, d=日, H=时, i=分, s=秒"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"日志级别样式"}),e.jsxs(He,{value:n.log_level_style,onValueChange:E=>r({...n,log_level_style:E}),children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsx(Le,{children:k.map(E=>e.jsx(ne,{value:E,children:E},E))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"日志文本颜色"}),e.jsxs(He,{value:n.color_text,onValueChange:E=>r({...n,color_text:E}),children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsx(Le,{children:T.map(E=>e.jsx(ne,{value:E,children:E},E))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"全局日志级别"}),e.jsxs(He,{value:n.log_level,onValueChange:E=>r({...n,log_level:E}),children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsx(Le,{children:v.map(E=>e.jsx(ne,{value:E,children:E},E))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"控制台日志级别"}),e.jsxs(He,{value:n.console_log_level,onValueChange:E=>r({...n,console_log_level:E}),children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsx(Le,{children:v.map(E=>e.jsx(ne,{value:E,children:E},E))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"文件日志级别"}),e.jsxs(He,{value:n.file_log_level,onValueChange:E=>r({...n,file_log_level:E}),children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsx(Le,{children:v.map(E=>e.jsx(ne,{value:E,children:E},E))})]})]})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"mb-2 block",children:"完全屏蔽的库"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(ce,{value:c,onChange:E=>d(E.target.value),placeholder:"输入库名",className:"flex-1",onKeyDown:E=>{E.key==="Enter"&&(E.preventDefault(),f())}}),e.jsx(y,{onClick:f,size:"sm",className:"flex-shrink-0",children:e.jsx(ot,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:n.suppress_libraries.map(E=>e.jsxs("div",{className:"flex items-center gap-1 bg-secondary px-3 py-1 rounded-md",children:[e.jsx("span",{className:"text-sm",children:E}),e.jsx(y,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0",onClick:()=>j(E),children:e.jsx(es,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},E))})]}),e.jsxs("div",{children:[e.jsx(b,{className:"mb-2 block",children:"特定库的日志级别"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(ce,{value:c,onChange:E=>d(E.target.value),placeholder:"输入库名",className:"flex-1"}),e.jsxs(He,{value:h,onValueChange:x,children:[e.jsx(Re,{className:"w-32",children:e.jsx(qe,{})}),e.jsx(Le,{children:v.map(E=>e.jsx(ne,{value:E,children:E},E))})]}),e.jsx(y,{onClick:p,size:"sm",children:e.jsx(ot,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"space-y-2",children:Object.entries(n.library_log_levels).map(([E,R])=>e.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[e.jsx("span",{className:"text-sm font-medium",children:E}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:R}),e.jsx(y,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>w(E),children:e.jsx(es,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]})]},E))})]})]})}function ow({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"调试配置"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否在日志中显示提示词"})]}),e.jsx(Ve,{checked:n.show_prompt,onCheckedChange:c=>r({...n,show_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示回复器 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的提示词"})]}),e.jsx(Ve,{checked:n.show_replyer_prompt,onCheckedChange:c=>r({...n,show_replyer_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示回复器推理"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的推理过程"})]}),e.jsx(Ve,{checked:n.show_replyer_reasoning,onCheckedChange:c=>r({...n,show_replyer_reasoning:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示 Jargon Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示术语相关的提示词"})]}),e.jsx(Ve,{checked:n.show_jargon_prompt,onCheckedChange:c=>r({...n,show_jargon_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示记忆检索 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示记忆检索相关的提示词"})]}),e.jsx(Ve,{checked:n.show_memory_prompt,onCheckedChange:c=>r({...n,show_memory_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示 Planner Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 Planner 的提示词和原始返回结果"})]}),e.jsx(Ve,{checked:n.show_planner_prompt,onCheckedChange:c=>r({...n,show_planner_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示 LPMM 相关文段"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 LPMM 知识库找到的相关文段日志"})]}),e.jsx(Ve,{checked:n.show_lpmm_paragraph,onCheckedChange:c=>r({...n,show_lpmm_paragraph:c})})]})]})]})}function dw({config:n,onChange:r}){const[c,d]=u.useState(""),h=()=>{c&&!n.auth_token.includes(c)&&(r({...n,auth_token:[...n.auth_token,c]}),d(""))},x=f=>{r({...n,auth_token:n.auth_token.filter((j,p)=>p!==f)})};return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"MaimMessage 服务配置"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"启用自定义服务器"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否使用自定义的 MaimMessage 服务器"})]}),e.jsx(Ve,{checked:n.use_custom,onCheckedChange:f=>r({...n,use_custom:f})})]}),n.use_custom&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"主机地址"}),e.jsx(ce,{value:n.host,onChange:f=>r({...n,host:f.target.value}),placeholder:"127.0.0.1"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"端口号"}),e.jsx(ce,{type:"number",value:n.port,onChange:f=>r({...n,port:parseInt(f.target.value)}),placeholder:"8090"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"连接模式"}),e.jsxs(He,{value:n.mode,onValueChange:f=>r({...n,mode:f}),children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"ws",children:"WebSocket (ws)"}),e.jsx(ne,{value:"tcp",children:"TCP"})]})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{checked:n.use_wss,onCheckedChange:f=>r({...n,use_wss:f}),disabled:n.mode!=="ws"}),e.jsx(b,{children:"使用 WSS 安全连接"})]})]}),n.use_wss&&n.mode==="ws"&&e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"SSL 证书文件路径"}),e.jsx(ce,{value:n.cert_file,onChange:f=>r({...n,cert_file:f.target.value}),placeholder:"cert.pem"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"SSL 密钥文件路径"}),e.jsx(ce,{value:n.key_file,onChange:f=>r({...n,key_file:f.target.value}),placeholder:"key.pem"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"mb-2 block",children:"认证令牌"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:"用于 API 验证,为空则不启用验证"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(ce,{value:c,onChange:f=>d(f.target.value),placeholder:"输入认证令牌",onKeyDown:f=>{f.key==="Enter"&&(f.preventDefault(),h())}}),e.jsx(y,{onClick:h,size:"sm",children:e.jsx(ot,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"space-y-2",children:n.auth_token.map((f,j)=>e.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[e.jsx("span",{className:"text-sm font-mono",children:f}),e.jsx(y,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>x(j),children:e.jsx(es,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},j))})]})]})}function uw({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"统计信息"}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"启用统计信息发送"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"发送匿名统计信息,帮助我们了解全球有多少只麦麦在运行"})]}),e.jsx(Ve,{checked:n.enable,onCheckedChange:c=>r({...n,enable:c})})]})]})}const ii=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{className:"relative w-full overflow-auto",children:e.jsx("table",{ref:c,className:Q("w-full caption-bottom text-sm",n),...r})}));ii.displayName="Table";const ri=u.forwardRef(({className:n,...r},c)=>e.jsx("thead",{ref:c,className:Q("[&_tr]:border-b",n),...r}));ri.displayName="TableHeader";const ci=u.forwardRef(({className:n,...r},c)=>e.jsx("tbody",{ref:c,className:Q("[&_tr:last-child]:border-0",n),...r}));ci.displayName="TableBody";const mw=u.forwardRef(({className:n,...r},c)=>e.jsx("tfoot",{ref:c,className:Q("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",n),...r}));mw.displayName="TableFooter";const gt=u.forwardRef(({className:n,...r},c)=>e.jsx("tr",{ref:c,className:Q("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",n),...r}));gt.displayName="TableRow";const ls=u.forwardRef(({className:n,...r},c)=>e.jsx("th",{ref:c,className:Q("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",n),...r}));ls.displayName="TableHead";const Qe=u.forwardRef(({className:n,...r},c)=>e.jsx("td",{ref:c,className:Q("px-4 py-3 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",n),...r}));Qe.displayName="TableCell";const hw=u.forwardRef(({className:n,...r},c)=>e.jsx("caption",{ref:c,className:Q("mt-4 text-sm text-muted-foreground",n),...r}));hw.displayName="TableCaption";const oo=u.forwardRef(({className:n,...r},c)=>e.jsx(Lt,{ref:c,className:Q("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",n),...r}));oo.displayName=Lt.displayName;const uo=u.forwardRef(({className:n,...r},c)=>e.jsxs("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[e.jsx(_t,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),e.jsx(Lt.Input,{ref:c,className:Q("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",n),...r})]}));uo.displayName=Lt.Input.displayName;const mo=u.forwardRef(({className:n,...r},c)=>e.jsx(Lt.List,{ref:c,className:Q("max-h-[300px] overflow-y-auto overflow-x-hidden",n),...r}));mo.displayName=Lt.List.displayName;const ho=u.forwardRef((n,r)=>e.jsx(Lt.Empty,{ref:r,className:"py-6 text-center text-sm",...n}));ho.displayName=Lt.Empty.displayName;const vr=u.forwardRef(({className:n,...r},c)=>e.jsx(Lt.Group,{ref:c,className:Q("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",n),...r}));vr.displayName=Lt.Group.displayName;const xw=u.forwardRef(({className:n,...r},c)=>e.jsx(Lt.Separator,{ref:c,className:Q("-mx-1 h-px bg-border",n),...r}));xw.displayName=Lt.Separator.displayName;const yr=u.forwardRef(({className:n,...r},c)=>e.jsx(Lt.Item,{ref:c,className:Q("relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",n),...r}));yr.displayName=Lt.Item.displayName;const yt=u.forwardRef(({className:n,...r},c)=>e.jsx(og,{ref:c,className:Q("grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",n),...r,children:e.jsx(pN,{className:Q("grid place-content-center text-current"),children:e.jsx(fa,{className:"h-4 w-4"})})}));yt.displayName=og.displayName;const Bg=u.createContext(null),Hg="maibot-completed-tours";function fw(){try{const n=localStorage.getItem(Hg);return n?new Set(JSON.parse(n)):new Set}catch{return new Set}}function dp(n){localStorage.setItem(Hg,JSON.stringify([...n]))}function pw({children:n}){const[r,c]=u.useState({activeTourId:null,stepIndex:0,isRunning:!1}),d=u.useRef(new Map),[,h]=u.useState(0),[x,f]=u.useState(fw),j=u.useCallback((H,z)=>{d.current.set(H,z),h(B=>B+1)},[]),p=u.useCallback(H=>{d.current.delete(H),c(z=>z.activeTourId===H?{...z,activeTourId:null,isRunning:!1,stepIndex:0}:z)},[]),w=u.useCallback((H,z=0)=>{d.current.has(H)&&c({activeTourId:H,stepIndex:z,isRunning:!0})},[]),v=u.useCallback(()=>{c(H=>({...H,isRunning:!1}))},[]),k=u.useCallback(H=>{c(z=>({...z,stepIndex:H}))},[]),T=u.useCallback(()=>{c(H=>({...H,stepIndex:H.stepIndex+1}))},[]),E=u.useCallback(()=>{c(H=>({...H,stepIndex:Math.max(0,H.stepIndex-1)}))},[]),R=u.useCallback(()=>r.activeTourId?d.current.get(r.activeTourId)||[]:[],[r.activeTourId]),K=u.useCallback(H=>{f(z=>{const B=new Set(z);return B.add(H),dp(B),B})},[]),U=u.useCallback(H=>{const{action:z,index:B,status:X,type:S}=H,O=["finished","skipped"];if(z==="close"){c(te=>({...te,isRunning:!1,stepIndex:0}));return}O.includes(X)?c(te=>(X==="finished"&&te.activeTourId&&setTimeout(()=>K(te.activeTourId),0),{...te,isRunning:!1,stepIndex:0})):S==="step:after"&&(z==="next"?c(te=>({...te,stepIndex:B+1})):z==="prev"&&c(te=>({...te,stepIndex:B-1})))},[K]),A=u.useCallback(H=>x.has(H),[x]),Z=u.useCallback(H=>{f(z=>{const B=new Set(z);return B.delete(H),dp(B),B})},[]);return e.jsx(Bg.Provider,{value:{state:r,tours:d.current,registerTour:j,unregisterTour:p,startTour:w,stopTour:v,goToStep:k,nextStep:T,prevStep:E,getCurrentSteps:R,handleJoyrideCallback:U,isTourCompleted:A,markTourCompleted:K,resetTourCompleted:Z},children:n})}function Pu(){const n=u.useContext(Bg);if(!n)throw new Error("useTour must be used within a TourProvider");return n}const gw={options:{zIndex:1e4,primaryColor:"hsl(var(--primary))",textColor:"hsl(var(--foreground))",backgroundColor:"hsl(var(--background))",arrowColor:"hsl(var(--background))",overlayColor:"rgba(0, 0, 0, 0.5)"},tooltip:{borderRadius:"var(--radius)",padding:"1rem"},tooltipContainer:{textAlign:"left"},tooltipTitle:{fontSize:"1rem",fontWeight:600,marginBottom:"0.5rem"},tooltipContent:{fontSize:"0.875rem",padding:"0.5rem 0"},buttonNext:{backgroundColor:"hsl(var(--primary))",color:"hsl(var(--primary-foreground))",borderRadius:"calc(var(--radius) - 2px)",fontSize:"0.875rem",padding:"0.5rem 1rem"},buttonBack:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem",marginRight:"0.5rem"},buttonSkip:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem"},buttonClose:{color:"hsl(var(--muted-foreground))"},spotlight:{borderRadius:"var(--radius)"}},jw={back:"上一步",close:"关闭",last:"完成",next:"下一步",nextLabelWithProgress:"下一步 ({step}/{steps})",open:"打开对话框",skip:"跳过"};function vw(){const{state:n,getCurrentSteps:r,handleJoyrideCallback:c}=Pu(),d=r(),[h,x]=u.useState(!1),f=u.useRef(n.stepIndex),j=u.useRef(null);u.useEffect(()=>{f.current!==n.stepIndex&&(x(!1),f.current=n.stepIndex)},[n.stepIndex]),u.useEffect(()=>{if(!n.isRunning||d.length===0){x(!1);return}const v=d[n.stepIndex];if(!v){x(!1);return}const k=v.target;if(k==="body"){x(!0);return}x(!1);const T=setTimeout(()=>{const E=()=>{const A=document.querySelector(k);if(A){const Z=A.getBoundingClientRect();if(Z.width>0&&Z.height>0)return!0}return!1};if(E()){setTimeout(()=>x(!0),100);return}const R=setInterval(()=>{E()&&(clearInterval(R),setTimeout(()=>x(!0),100))},100),K=setTimeout(()=>{clearInterval(R),x(!0)},5e3),U=()=>{clearInterval(R),clearTimeout(K)};j.current=U},150);return()=>{clearTimeout(T),j.current&&(j.current(),j.current=null)}},[n.isRunning,n.stepIndex,d]);const p=u.useRef(null);if(u.useEffect(()=>{let v=document.getElementById("tour-portal-container");return v||(v=document.createElement("div"),v.id="tour-portal-container",v.style.cssText="position: fixed; top: 0; left: 0; z-index: 99999; pointer-events: none;",document.body.appendChild(v)),p.current=v,()=>{}},[]),!n.isRunning||d.length===0||!h)return null;const w=e.jsx(rb,{steps:d,stepIndex:n.stepIndex,run:n.isRunning,continuous:!0,showSkipButton:!0,showProgress:!0,disableOverlayClose:!0,disableScrolling:!1,disableScrollParentFix:!1,callback:c,styles:gw,locale:jw,scrollOffset:80,scrollToFirstStep:!0,floaterProps:{styles:{floater:{zIndex:99999}},disableAnimation:!0}},`tour-step-${n.stepIndex}`);return p.current?fy.createPortal(w,p.current):w}const ll="model-assignment-tour",qg=[{target:"body",content:"本引导旨在帮助你配置模型提供商和对应的模型,并为麦麦的各个组件分配合适的模型。",placement:"center",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="sidebar-model-provider"]',content:'第一步,你需要配置模型提供商。模型提供商决定了你要使用谁家的模型,无论是单一厂商(如 DeepSeek),还是模型平台(如 Siliconflow),都可以在这里进行配置。点击"下一步"进入配置页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-provider-button"]',content:'点击"添加提供商"按钮,开始配置你的模型提供商。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="provider-dialog"]',content:"在这里,你可以选择你想要配置的模型提供商,填写相关信息后保存即可。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-name-input"]',content:"这里的名称是你为这个模型提供商起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-apikey-input"]',content:"这里需要填写你从模型提供商那里获取的 API 密钥,用于验证和调用模型服务。对于不同的提供商,获取 API 密钥的方式可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-url-input"]',content:"这里需要填写模型提供商的 API 访问地址,确保填写正确以便系统能够连接到模型服务。对于不同的提供商,API 地址可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-template-select"]',content:"当然,如果你不知道如何填写这些信息,很多模型提供商在这里都提供了预设的模板供你选择,选择对应的模板后,相关信息会自动填充。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-save-button"]',content:"填写完所有信息后,点击保存按钮,模型提供商就配置完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-cancel-button"]',content:"因为这次咱们什么都没有填写,所以点击取消按钮退出吧。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="sidebar-model-management"]',content:'配置好模型提供商后,接下来我们需要为麦麦添加模型并分配功能。点击"下一步"进入模型管理页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-model-button"]',content:'在为麦麦的组件分配模型之前,首先需要添加你想要分配的模型,点击"添加模型"按钮开始添加。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="model-dialog"]',content:"在这里,你可以选择你之前配置好的模型提供商,然后选择对应的模型来添加。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-name-input"]',content:"这里的模型名称是你为这个模型起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-provider-select"]',content:"在这里选择你之前配置好的模型提供商,这样系统才能知道你要添加哪个提供商的模型。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-identifier-input"]',content:"这里需要填写你想要添加的模型的标识符,不同的模型提供商可能有不同的标识符格式,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-save-button"]',content:"填写完所有信息后,点击保存按钮,模型就添加完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-cancel-button"]',content:"当然,因为这次咱们什么都没有填写,所以直接点击取消按钮退出吧,等你准备好了再来添加模型。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="tasks-tab-trigger"]',content:'最后一步,添加好模型后,切换到"为模型分配功能"标签页,为麦麦的各个组件分配合适的模型。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="task-model-select"]',content:"在这里,你可以为每个组件选择一个或多个合适的模型,选择完成后配置会自动保存。恭喜你完成了模型配置的学习!",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1}],Gg={0:"/config/model",1:"/config/model",2:"/config/modelProvider",3:"/config/modelProvider",4:"/config/modelProvider",5:"/config/modelProvider",6:"/config/modelProvider",7:"/config/modelProvider",8:"/config/modelProvider",9:"/config/modelProvider",10:"/config/modelProvider",11:"/config/model",12:"/config/model",13:"/config/model",14:"/config/model",15:"/config/model",16:"/config/model",17:"/config/model",18:"/config/model",19:"/config/model"},rr=[{id:"siliconflow",name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",client_type:"openai",display_name:"硅基流动 (SiliconFlow)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"deepseek",name:"DeepSeek",base_url:"https://api.deepseek.com",client_type:"openai",display_name:"DeepSeek",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"rinkoai",name:"RinkoAI",base_url:"https://rinkoai.com/v1",client_type:"openai",display_name:"RinkoAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"zhipu",name:"ZhipuAI",base_url:"https://open.bigmodel.cn/api/paas/v4",client_type:"openai",display_name:"智谱 AI (ZhipuAI / GLM)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"moonshot",name:"Moonshot",base_url:"https://api.moonshot.cn/v1",client_type:"openai",display_name:"月之暗面 (Moonshot / Kimi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"doubao",name:"Doubao",base_url:"https://ark.cn-beijing.volces.com/api/v3",client_type:"openai",display_name:"字节豆包 (Doubao)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"alibaba",name:"Alibaba",base_url:"https://dashscope.aliyuncs.com/compatible-mode/v1",client_type:"openai",display_name:"阿里云百炼 (Alibaba Qwen)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"baichuan",name:"Baichuan",base_url:"https://api.baichuan-ai.com/v1",client_type:"openai",display_name:"百川智能 (Baichuan)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"minimax",name:"MiniMax",base_url:"https://api.minimax.chat/v1",client_type:"openai",display_name:"MiniMax (海螺 AI)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"stepfun",name:"StepFun",base_url:"https://api.stepfun.com/v1",client_type:"openai",display_name:"阶跃星辰 (StepFun)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"lingyi",name:"Lingyi",base_url:"https://api.lingyiwanwu.com/v1",client_type:"openai",display_name:"零一万物 (Lingyi / Yi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"openai",name:"OpenAI",base_url:"https://api.openai.com/v1",client_type:"openai",display_name:"OpenAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"xai",name:"xAI",base_url:"https://api.x.ai/v1",client_type:"openai",display_name:"xAI (Grok)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"anthropic",name:"Anthropic",base_url:"https://api.anthropic.com/v1",client_type:"openai",display_name:"Anthropic (Claude)"},{id:"gemini",name:"Gemini",base_url:"https://generativelanguage.googleapis.com/v1beta",client_type:"gemini",display_name:"Google Gemini",modelFetcher:{endpoint:"/models",parser:"gemini"}},{id:"cohere",name:"Cohere",base_url:"https://api.cohere.ai/v1",client_type:"openai",display_name:"Cohere"},{id:"groq",name:"Groq",base_url:"https://api.groq.com/openai/v1",client_type:"openai",display_name:"Groq",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"together",name:"Together AI",base_url:"https://api.together.xyz/v1",client_type:"openai",display_name:"Together AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"fireworks",name:"Fireworks",base_url:"https://api.fireworks.ai/inference/v1",client_type:"openai",display_name:"Fireworks AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"mistral",name:"Mistral",base_url:"https://api.mistral.ai/v1",client_type:"openai",display_name:"Mistral AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"perplexity",name:"Perplexity",base_url:"https://api.perplexity.ai",client_type:"openai",display_name:"Perplexity AI"},{id:"custom",name:"",base_url:"",client_type:"openai",display_name:"自定义"}];function up(n){return n?n.replace(/\/+$/,"").toLowerCase():""}function yw(n){if(!n)return null;const r=up(n);return rr.find(c=>c.id!=="custom"&&up(c.base_url)===r)||null}function Nw(){const[n,r]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,w]=u.useState(!1),[v,k]=u.useState(!1),[T,E]=u.useState(!1),[R,K]=u.useState(!1),[U,A]=u.useState(null),[Z,H]=u.useState(null),[z,B]=u.useState("custom"),[X,S]=u.useState(!1),[O,te]=u.useState(!1),[he,Ne]=u.useState(null),[ye,pe]=u.useState(!1),[je,_e]=u.useState(""),[N,G]=u.useState(new Set),[q,ie]=u.useState(!1),[_,me]=u.useState(1),[xe,$]=u.useState(20),[de,ge]=u.useState(""),[le,L]=u.useState({}),[F,D]=u.useState(new Set),[ee,we]=u.useState(new Map),{toast:ze}=Hs(),ss=Jt(),{state:Ze,goToStep:Ls,registerTour:Gs}=Pu(),re=u.useRef(null),be=u.useRef(!0);u.useEffect(()=>{Gs(ll,qg)},[Gs]),u.useEffect(()=>{if(Ze.activeTourId===ll&&Ze.isRunning){const W=Gg[Ze.stepIndex];W&&!window.location.pathname.endsWith(W.replace("/config/",""))&&ss({to:W})}},[Ze.stepIndex,Ze.activeTourId,Ze.isRunning,ss]);const Xe=u.useRef(Ze.stepIndex);u.useEffect(()=>{if(Ze.activeTourId===ll&&Ze.isRunning){const W=Xe.current,ve=Ze.stepIndex;W>=3&&W<=9&&ve<3&&K(!1),W>=10&&ve>=3&&ve<=9&&(L({}),B("custom"),A({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10}),H(null),pe(!1),K(!0)),Xe.current=ve}},[Ze.stepIndex,Ze.activeTourId,Ze.isRunning]),u.useEffect(()=>{if(Ze.activeTourId!==ll||!Ze.isRunning)return;const W=ve=>{const Me=ve.target,tt=Ze.stepIndex;tt===2&&Me.closest('[data-tour="add-provider-button"]')?setTimeout(()=>Ls(3),300):tt===9&&Me.closest('[data-tour="provider-cancel-button"]')&&setTimeout(()=>Ls(10),300)};return document.addEventListener("click",W,!0),()=>document.removeEventListener("click",W,!0)},[Ze,Ls]),u.useEffect(()=>{Ue()},[]);const Ue=async()=>{try{d(!0);const W=await ei();r(W.api_providers||[]),w(!1),be.current=!1}catch(W){console.error("加载配置失败:",W)}finally{d(!1)}},st=async()=>{try{k(!0),co().catch(()=>{}),E(!0)}catch(W){console.error("重启失败:",W),E(!1),ze({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),k(!1)}},It=async()=>{try{x(!0),re.current&&clearTimeout(re.current);const W=await ei();W.api_providers=n,await io(W),w(!1),ze({title:"保存成功",description:"正在重启麦麦..."}),await st()}catch(W){console.error("保存配置失败:",W),ze({title:"保存失败",description:W.message,variant:"destructive"}),x(!1)}},bt=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},Je=()=>{E(!1),k(!1),ze({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},Be=u.useCallback(async W=>{if(!be.current)try{j(!0),await qu("api_providers",W),w(!1)}catch(ve){console.error("自动保存失败:",ve),w(!0)}finally{j(!1)}},[]);u.useEffect(()=>{if(!be.current)return w(!0),re.current&&clearTimeout(re.current),re.current=setTimeout(()=>{Be(n)},2e3),()=>{re.current&&clearTimeout(re.current)}},[n,Be]);const jt=async()=>{try{x(!0),re.current&&clearTimeout(re.current);const W=await ei();W.api_providers=n,await io(W),w(!1),ze({title:"保存成功",description:"模型提供商配置已保存"})}catch(W){console.error("保存配置失败:",W),ze({title:"保存失败",description:W.message,variant:"destructive"})}finally{x(!1)}},nt=(W,ve)=>{if(L({}),W){const Me=rr.find(tt=>tt.base_url===W.base_url&&tt.client_type===W.client_type);B(Me?.id||"custom"),A(W)}else B("custom"),A({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10});H(ve),pe(!1),K(!0)},St=W=>{B(W),S(!1);const ve=rr.find(Me=>Me.id===W);ve&&ve.id!=="custom"?A(Me=>({...Me,name:ve.name,base_url:ve.base_url,client_type:ve.client_type})):ve?.id==="custom"&&A(Me=>({...Me,name:"",base_url:"",client_type:"openai"}))},Ct=u.useMemo(()=>z!=="custom",[z]),rl=async()=>{if(U?.api_key)try{await navigator.clipboard.writeText(U.api_key),ze({title:"复制成功",description:"API Key 已复制到剪贴板"})}catch{ze({title:"复制失败",description:"无法访问剪贴板",variant:"destructive"})}},cl=()=>{if(!U)return;const W={};if(U.name?.trim()||(W.name="请输入提供商名称"),U.base_url?.trim()||(W.base_url="请输入基础 URL"),U.api_key?.trim()||(W.api_key="请输入 API Key"),Object.keys(W).length>0){L(W);return}L({});const ve={...U,max_retry:U.max_retry??2,timeout:U.timeout??30,retry_interval:U.retry_interval??10};if(Z!==null){const Me=[...n];Me[Z]=ve,r(Me)}else r([...n,ve]);K(!1),A(null),H(null)},ol=W=>{if(!W&&U){const ve={...U,max_retry:U.max_retry??2,timeout:U.timeout??30,retry_interval:U.retry_interval??10};A(ve)}K(W)},Se=W=>{Ne(W),te(!0)},Oe=()=>{if(he!==null){const W=n.filter((ve,Me)=>Me!==he);r(W),ze({title:"删除成功",description:"提供商已从列表中移除"})}te(!1),Ne(null)},it=W=>{const ve=new Set(N);ve.has(W)?ve.delete(W):ve.add(W),G(ve)},dt=()=>{if(N.size===ut.length)G(new Set);else{const W=ut.map((ve,Me)=>n.findIndex(tt=>tt===ut[Me]));G(new Set(W))}},di=()=>{if(N.size===0){ze({title:"提示",description:"请先选择要删除的提供商",variant:"default"});return}ie(!0)},on=()=>{const W=n.filter((ve,Me)=>!N.has(Me));r(W),G(new Set),ie(!1),ze({title:"批量删除成功",description:`已删除 ${N.size} 个提供商`})},ut=n.filter(W=>{if(!je)return!0;const ve=je.toLowerCase();return W.name.toLowerCase().includes(ve)||W.base_url.toLowerCase().includes(ve)||W.client_type.toLowerCase().includes(ve)}),Pt=Math.ceil(ut.length/xe),Wt=ut.slice((_-1)*xe,_*xe),Ua=()=>{const W=parseInt(de);W>=1&&W<=Pt&&(me(W),ge(""))},Ut=async W=>{D(ve=>new Set(ve).add(W));try{const ve=await Q0(W);we(Me=>new Map(Me).set(W,ve)),ve.network_ok?ve.api_key_valid===!0?ze({title:"连接正常",description:`${W} 网络连接正常,API Key 有效 (${ve.latency_ms}ms)`}):ve.api_key_valid===!1?ze({title:"连接正常但 Key 无效",description:`${W} 网络连接正常,但 API Key 无效或已过期`,variant:"destructive"}):ze({title:"网络连接正常",description:`${W} 可以访问 (${ve.latency_ms}ms)`}):ze({title:"连接失败",description:ve.error||"无法连接到提供商",variant:"destructive"})}catch(ve){ze({title:"测试失败",description:ve.message,variant:"destructive"})}finally{D(ve=>{const Me=new Set(ve);return Me.delete(W),Me})}},Ba=async()=>{for(const W of n)await Ut(W.name)},_a=W=>{const ve=F.has(W),Me=ee.get(W);return ve?e.jsxs(Ye,{variant:"secondary",className:"gap-1",children:[e.jsx(vt,{className:"h-3 w-3 animate-spin"}),"测试中"]}):Me?Me.network_ok?Me.api_key_valid===!0?e.jsxs(Ye,{className:"gap-1 bg-green-600 hover:bg-green-700",children:[e.jsx(pa,{className:"h-3 w-3"}),"正常"]}):Me.api_key_valid===!1?e.jsxs(Ye,{variant:"destructive",className:"gap-1",children:[e.jsx(Da,{className:"h-3 w-3"}),"Key无效"]}):e.jsxs(Ye,{className:"gap-1 bg-blue-600 hover:bg-blue-700",children:[e.jsx(pa,{className:"h-3 w-3"}),"可访问"]}):e.jsxs(Ye,{variant:"destructive",className:"gap-1",children:[e.jsx(jg,{className:"h-3 w-3"}),"离线"]}):null};return c?e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})}):e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"AI模型厂商配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理 AI 模型厂商的 API 配置"})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[N.size>0&&e.jsxs(y,{onClick:di,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(es,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",N.size,")"]}),e.jsxs(y,{onClick:Ba,size:"sm",variant:"outline",className:"w-full sm:w-auto",disabled:n.length===0||F.size>0,children:[e.jsx(ln,{className:"mr-2 h-4 w-4"}),F.size>0?`测试中 (${F.size})`:"测试全部"]}),e.jsxs(y,{onClick:()=>nt(null,null),size:"sm",className:"w-full sm:w-auto","data-tour":"add-provider-button",children:[e.jsx(ot,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加提供商"]}),e.jsxs(y,{onClick:jt,disabled:h||f||!p||v,size:"sm",variant:"outline",className:"w-full sm:w-auto sm:min-w-[120px]",children:[e.jsx(br,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),h?"保存中...":f?"自动保存中...":p?"保存配置":"已保存"]}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(y,{disabled:h||f||v,size:"sm",className:"w-full sm:w-auto sm:min-w-[120px]",children:[e.jsx(Nr,{className:"mr-2 h-4 w-4"}),v?"重启中...":p?"保存并重启":"重启麦麦"]})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认重启麦麦?"}),e.jsx(us,{className:"space-y-3",asChild:!0,children:e.jsxs("div",{children:[e.jsx("p",{children:p?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),e.jsxs(ha,{className:"border-yellow-500/50 bg-yellow-500/10",children:[e.jsx(Xt,{className:"h-4 w-4 text-yellow-600"}),e.jsxs(xa,{className:"text-yellow-900 dark:text-yellow-100",children:[e.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",e.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",e.jsxs(Rs,{children:[e.jsx(ni,{asChild:!0,children:e.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[e.jsx(ro,{className:"h-3 w-3"}),"如何结束程序?"]})}),e.jsxs(zs,{className:"max-w-2xl",children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"如何结束使用重启功能后的麦麦程序"}),e.jsx(Ys,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),e.jsxs(Kt,{defaultValue:"windows",className:"w-full",children:[e.jsxs(Rt,{className:"grid w-full grid-cols-3",children:[e.jsx($e,{value:"windows",children:"Windows"}),e.jsx($e,{value:"macos",children:"macOS"}),e.jsx($e,{value:"linux",children:"Linux"})]}),e.jsxs(We,{value:"windows",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),e.jsxs("li",{children:["在“进程”或“详细信息”标签页中找到 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),e.jsx("li",{children:"右键点击并选择“结束任务”"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),e.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),e.jsxs(We,{value:"macos",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"})," 打开 Spotlight,搜索“活动监视器”"]}),e.jsxs("li",{children:["在进程列表中找到 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),e.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:"ps aux | grep python | grep -v grep"}),e.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),e.jsx("p",{children:"kill -9 "}),e.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"pkill -9 python"})]})]})]}),e.jsxs(We,{value:"linux",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:"ps aux | grep python | grep -v grep"}),e.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),e.jsx("p",{children:"kill -9 "}),e.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),e.jsx("p",{children:'pkill -9 -f "bot.py"'}),e.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"pkill -9 python"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["在终端输入 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),e.jsx(Js,{children:e.jsx(Zu,{asChild:!0,children:e.jsx(y,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:p?It:st,children:p?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsxs(ha,{children:[e.jsx(Xt,{className:"h-4 w-4"}),e.jsxs(xa,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),e.jsxs(Pe,{className:"h-[calc(100vh-260px)]",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2 mb-4",children:[e.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[e.jsx(_t,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索提供商名称、URL 或类型...",value:je,onChange:W=>_e(W.target.value),className:"pl-9"})]}),je&&e.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",ut.length," 个结果"]})]}),e.jsx("div",{className:"md:hidden space-y-3",children:ut.length===0?e.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:je?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'}):Wt.map((W,ve)=>{const Me=n.findIndex(tt=>tt===W);return e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("h3",{className:"font-semibold text-base truncate",children:W.name}),_a(W.name)]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1 break-all",children:W.base_url})]}),e.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[e.jsx(y,{variant:"outline",size:"sm",onClick:()=>Ut(W.name),disabled:F.has(W.name),title:"测试连接",children:F.has(W.name)?e.jsx(vt,{className:"h-4 w-4 animate-spin"}):e.jsx(ln,{className:"h-4 w-4"})}),e.jsx(y,{variant:"default",size:"sm",onClick:()=>nt(W,Me),children:e.jsx(nn,{className:"h-4 w-4",strokeWidth:2,fill:"none"})}),e.jsx(y,{size:"sm",onClick:()=>Se(Me),className:"bg-red-600 hover:bg-red-700 text-white",children:e.jsx(es,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"客户端类型"}),e.jsx("p",{className:"font-medium",children:W.client_type})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"最大重试"}),e.jsx("p",{className:"font-medium",children:W.max_retry})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"超时(秒)"}),e.jsx("p",{className:"font-medium",children:W.timeout})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"重试间隔(秒)"}),e.jsx("p",{className:"font-medium",children:W.retry_interval})]})]})]},ve)})}),e.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(ii,{children:[e.jsx(ri,{children:e.jsxs(gt,{children:[e.jsx(ls,{className:"w-12",children:e.jsx(yt,{checked:N.size===ut.length&&ut.length>0,onCheckedChange:dt})}),e.jsx(ls,{children:"状态"}),e.jsx(ls,{children:"名称"}),e.jsx(ls,{children:"基础URL"}),e.jsx(ls,{children:"客户端类型"}),e.jsx(ls,{className:"text-right",children:"最大重试"}),e.jsx(ls,{className:"text-right",children:"超时(秒)"}),e.jsx(ls,{className:"text-right",children:"重试间隔(秒)"}),e.jsx(ls,{className:"text-right",children:"操作"})]})}),e.jsx(ci,{children:Wt.length===0?e.jsx(gt,{children:e.jsx(Qe,{colSpan:9,className:"text-center text-muted-foreground py-8",children:je?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'})}):Wt.map((W,ve)=>{const Me=n.findIndex(tt=>tt===W);return e.jsxs(gt,{children:[e.jsx(Qe,{children:e.jsx(yt,{checked:N.has(Me),onCheckedChange:()=>it(Me)})}),e.jsx(Qe,{children:_a(W.name)||e.jsx(Ye,{variant:"outline",className:"text-muted-foreground",children:"未测试"})}),e.jsx(Qe,{className:"font-medium",children:W.name}),e.jsx(Qe,{className:"max-w-xs truncate",title:W.base_url,children:W.base_url}),e.jsx(Qe,{children:W.client_type}),e.jsx(Qe,{className:"text-right",children:W.max_retry}),e.jsx(Qe,{className:"text-right",children:W.timeout}),e.jsx(Qe,{className:"text-right",children:W.retry_interval}),e.jsx(Qe,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(y,{variant:"outline",size:"sm",onClick:()=>Ut(W.name),disabled:F.has(W.name),title:"测试连接",children:F.has(W.name)?e.jsx(vt,{className:"h-4 w-4 animate-spin"}):e.jsx(ln,{className:"h-4 w-4"})}),e.jsxs(y,{variant:"default",size:"sm",onClick:()=>nt(W,Me),children:[e.jsx(nn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(y,{size:"sm",onClick:()=>Se(Me),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(es,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},ve)})})]})})}),ut.length>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"page-size-provider",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(He,{value:xe.toString(),onValueChange:W=>{$(parseInt(W)),me(1),G(new Set)},children:[e.jsx(Re,{id:"page-size-provider",className:"w-20",children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"10",children:"10"}),e.jsx(ne,{value:"20",children:"20"}),e.jsx(ne,{value:"50",children:"50"}),e.jsx(ne,{value:"100",children:"100"})]})]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(_-1)*xe+1," 到"," ",Math.min(_*xe,ut.length)," 条,共 ",ut.length," 条"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{variant:"outline",size:"sm",onClick:()=>me(1),disabled:_===1,className:"hidden sm:flex",children:e.jsx(wr,{className:"h-4 w-4"})}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>me(W=>Math.max(1,W-1)),disabled:_===1,children:[e.jsx(cn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:de,onChange:W=>ge(W.target.value),onKeyDown:W=>W.key==="Enter"&&Ua(),placeholder:_.toString(),className:"w-16 h-8 text-center",min:1,max:Pt}),e.jsx(y,{variant:"outline",size:"sm",onClick:Ua,disabled:!de,className:"h-8",children:"跳转"})]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>me(W=>W+1),disabled:_>=Pt,children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(il,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(y,{variant:"outline",size:"sm",onClick:()=>me(Pt),disabled:_>=Pt,className:"hidden sm:flex",children:e.jsx(_r,{className:"h-4 w-4"})})]})]})]}),e.jsx(Rs,{open:R,onOpenChange:ol,children:e.jsxs(zs,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"provider-dialog",preventOutsideClose:Ze.isRunning,children:[e.jsxs(Ms,{children:[e.jsx(As,{children:Z!==null?"编辑提供商":"添加提供商"}),e.jsx(Ys,{children:"配置 API 提供商的连接信息和参数"})]}),e.jsxs("form",{onSubmit:W=>{W.preventDefault(),cl()},autoComplete:"off",children:[e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":"provider-template-select",children:[e.jsx(b,{htmlFor:"template",children:"提供商模板"}),e.jsxs(Oa,{open:X,onOpenChange:S,children:[e.jsx(Ra,{asChild:!0,children:e.jsxs(y,{variant:"outline",role:"combobox","aria-expanded":X,className:"w-full justify-between",children:[z?rr.find(W=>W.id===z)?.display_name:"选择提供商模板...",e.jsx(Qu,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(wa,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:e.jsxs(oo,{children:[e.jsx(uo,{placeholder:"搜索提供商模板..."}),e.jsx(Pe,{className:"h-[300px]",children:e.jsxs(mo,{className:"max-h-none overflow-visible",children:[e.jsx(ho,{children:"未找到匹配的模板"}),e.jsx(vr,{children:rr.map(W=>e.jsxs(yr,{value:W.display_name,onSelect:()=>St(W.id),children:[e.jsx(fa,{className:`mr-2 h-4 w-4 ${z===W.id?"opacity-100":"opacity-0"}`}),W.display_name]},W.id))})]})})]})})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"选择预设模板可自动填充 URL 和客户端类型,支持搜索"})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-name-input",children:[e.jsx(b,{htmlFor:"name",className:le.name?"text-destructive":"",children:"名称 *"}),e.jsx(ce,{id:"name",value:U?.name||"",onChange:W=>{A(ve=>ve?{...ve,name:W.target.value}:null),le.name&&L(ve=>({...ve,name:void 0}))},placeholder:"例如: DeepSeek, SiliconFlow",className:le.name?"border-destructive focus-visible:ring-destructive":""}),le.name&&e.jsx("p",{className:"text-xs text-destructive",children:le.name})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-url-input",children:[e.jsx(b,{htmlFor:"base_url",className:le.base_url?"text-destructive":"",children:"基础 URL *"}),e.jsx(ce,{id:"base_url",value:U?.base_url||"",onChange:W=>{A(ve=>ve?{...ve,base_url:W.target.value}:null),le.base_url&&L(ve=>({...ve,base_url:void 0}))},placeholder:"https://api.example.com/v1",disabled:Ct,className:`${Ct?"bg-muted cursor-not-allowed":""} ${le.base_url?"border-destructive focus-visible:ring-destructive":""}`}),le.base_url&&e.jsx("p",{className:"text-xs text-destructive",children:le.base_url}),Ct&&!le.base_url&&e.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时 URL 不可编辑,切换到"自定义"以手动配置'})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-apikey-input",children:[e.jsx(b,{htmlFor:"api_key",className:le.api_key?"text-destructive":"",children:"API Key *"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{id:"api_key",type:ye?"text":"password",value:U?.api_key||"",onChange:W=>{A(ve=>ve?{...ve,api_key:W.target.value}:null),le.api_key&&L(ve=>({...ve,api_key:void 0}))},placeholder:"sk-...",className:`flex-1 ${le.api_key?"border-destructive focus-visible:ring-destructive":""}`}),e.jsx(y,{type:"button",variant:"outline",size:"icon",onClick:()=>pe(!ye),title:ye?"隐藏密钥":"显示密钥",children:ye?e.jsx(mr,{className:"h-4 w-4"}):e.jsx(Zt,{className:"h-4 w-4"})}),e.jsx(y,{type:"button",variant:"outline",size:"icon",onClick:rl,title:"复制密钥",children:e.jsx(so,{className:"h-4 w-4"})})]}),le.api_key&&e.jsx("p",{className:"text-xs text-destructive",children:le.api_key})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"client_type",children:"客户端类型"}),e.jsxs(He,{value:U?.client_type||"openai",onValueChange:W=>A(ve=>ve?{...ve,client_type:W}:null),disabled:Ct,children:[e.jsx(Re,{id:"client_type",className:Ct?"bg-muted cursor-not-allowed":"",children:e.jsx(qe,{placeholder:"选择客户端类型"})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"openai",children:"OpenAI"}),e.jsx(ne,{value:"gemini",children:"Gemini"})]})]}),Ct&&e.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时客户端类型不可编辑,切换到"自定义"以手动配置'})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_retry",children:"最大重试"}),e.jsx(ce,{id:"max_retry",type:"number",min:"0",value:U?.max_retry??"",onChange:W=>{const ve=W.target.value===""?null:parseInt(W.target.value);A(Me=>Me?{...Me,max_retry:ve}:null)},placeholder:"默认: 2"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"timeout",children:"超时(秒)"}),e.jsx(ce,{id:"timeout",type:"number",min:"1",value:U?.timeout??"",onChange:W=>{const ve=W.target.value===""?null:parseInt(W.target.value);A(Me=>Me?{...Me,timeout:ve}:null)},placeholder:"默认: 30"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"retry_interval",children:"重试间隔(秒)"}),e.jsx(ce,{id:"retry_interval",type:"number",min:"1",value:U?.retry_interval??"",onChange:W=>{const ve=W.target.value===""?null:parseInt(W.target.value);A(Me=>Me?{...Me,retry_interval:ve}:null)},placeholder:"默认: 10"})]})]})]}),e.jsxs(Js,{children:[e.jsx(y,{type:"button",variant:"outline",onClick:()=>K(!1),"data-tour":"provider-cancel-button",children:"取消"}),e.jsx(y,{type:"submit","data-tour":"provider-save-button",children:"保存"})]})]})]})}),e.jsx(ps,{open:O,onOpenChange:te,children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:['确定要删除提供商 "',he!==null?n[he]?.name:"",'" 吗? 此操作无法撤销。']})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:Oe,children:"删除"})]})]})}),e.jsx(ps,{open:q,onOpenChange:ie,children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认批量删除"}),e.jsxs(us,{children:["确定要删除选中的 ",N.size," 个提供商吗? 此操作无法撤销。"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:on,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),T&&e.jsx(Iu,{onRestartComplete:bt,onRestartFailed:Je})]})}function bw({value:n,label:r,onRemove:c}){const{attributes:d,listeners:h,setNodeRef:x,transform:f,transition:j,isDragging:p}=jb({id:n}),w={transform:vb.Transform.toString(f),transition:j,opacity:p?.5:1};return e.jsx("div",{ref:x,style:w,className:Q("inline-flex items-center gap-1",p&&"shadow-lg"),children:e.jsxs(Ye,{variant:"secondary",className:"cursor-move hover:bg-secondary/80 flex items-center gap-1",children:[e.jsx("div",{...d,...h,className:"cursor-grab active:cursor-grabbing flex items-center",children:e.jsx(ON,{className:"h-3 w-3 text-muted-foreground"})}),e.jsx("span",{children:r}),e.jsx(li,{className:"ml-1 h-3 w-3 cursor-pointer hover:text-destructive",strokeWidth:2,fill:"none",onClick:v=>{v.stopPropagation(),c(n)}})]})})}function ww({options:n,selected:r,onChange:c,placeholder:d="选择选项...",emptyText:h="未找到选项",className:x}){const[f,j]=u.useState(!1),p=ob(Pf(gb,{activationConstraint:{distance:8}}),Pf(pb,{coordinateGetter:fb})),w=T=>{r.includes(T)?c(r.filter(E=>E!==T)):c([...r,T])},v=T=>{c(r.filter(E=>E!==T))},k=T=>{const{active:E,over:R}=T;if(R&&E.id!==R.id){const K=r.indexOf(E.id),U=r.indexOf(R.id);c(xb(r,K,U))}};return e.jsxs(Oa,{open:f,onOpenChange:j,children:[e.jsx(Ra,{asChild:!0,children:e.jsxs(y,{variant:"outline",role:"combobox","aria-expanded":f,className:Q("w-full justify-between min-h-10 h-auto",x),children:[e.jsx(db,{sensors:p,collisionDetection:ub,onDragEnd:k,children:e.jsx(mb,{items:r,strategy:hb,children:e.jsx("div",{className:"flex gap-1 flex-wrap flex-1",children:r.length===0?e.jsx("span",{className:"text-muted-foreground",children:d}):r.map(T=>{const E=n.find(R=>R.value===T);return e.jsx(bw,{value:T,label:E?.label||T,onRemove:v},T)})})})}),e.jsx(Qu,{className:"ml-2 h-4 w-4 shrink-0 opacity-50",strokeWidth:2,fill:"none"})]})}),e.jsx(wa,{className:"w-full p-0",align:"start",children:e.jsxs(oo,{children:[e.jsx(uo,{placeholder:"搜索...",className:"h-9"}),e.jsxs(mo,{children:[e.jsx(ho,{children:h}),e.jsx(vr,{children:n.map(T=>{const E=r.includes(T.value);return e.jsxs(yr,{value:T.value,onSelect:()=>w(T.value),children:[e.jsx("div",{className:Q("mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary",E?"bg-primary text-primary-foreground":"opacity-50 [&_svg]:invisible"),children:e.jsx(fa,{className:"h-3 w-3",strokeWidth:2,fill:"none"})}),e.jsx("span",{children:T.label})]},T.value)})})]})]})})]})}const mp=new Map,_w=300*1e3;function Sw(){const[n,r]=u.useState([]),[c,d]=u.useState([]),[h,x]=u.useState([]),[f,j]=u.useState([]),[p,w]=u.useState(null),[v,k]=u.useState(!0),[T,E]=u.useState(!1),[R,K]=u.useState(!1),[U,A]=u.useState(!1),[Z,H]=u.useState(!1),[z,B]=u.useState(!1),[X,S]=u.useState(!1),[O,te]=u.useState(null),[he,Ne]=u.useState(null),[ye,pe]=u.useState(!1),[je,_e]=u.useState(null),[N,G]=u.useState(""),[q,ie]=u.useState(new Set),[_,me]=u.useState(!1),[xe,$]=u.useState(1),[de,ge]=u.useState(20),[le,L]=u.useState(""),[F,D]=u.useState([]),[ee,we]=u.useState(!1),[ze,ss]=u.useState(null),[Ze,Ls]=u.useState(!1),[Gs,re]=u.useState(null),[be,Xe]=u.useState({}),{toast:Ue}=Hs(),st=Jt(),{registerTour:It,startTour:bt,state:Je,goToStep:Be}=Pu(),jt=u.useRef(null),nt=u.useRef(null),St=u.useRef(!0);u.useEffect(()=>{It(ll,qg)},[It]),u.useEffect(()=>{if(Je.activeTourId===ll&&Je.isRunning){const Y=Gg[Je.stepIndex];Y&&!window.location.pathname.endsWith(Y.replace("/config/",""))&&st({to:Y})}},[Je.stepIndex,Je.activeTourId,Je.isRunning,st]);const Ct=u.useRef(Je.stepIndex);u.useEffect(()=>{if(Je.activeTourId===ll&&Je.isRunning){const Y=Ct.current,fe=Je.stepIndex;Y>=12&&Y<=17&&fe<12&&S(!1),Ct.current=fe}},[Je.stepIndex,Je.activeTourId,Je.isRunning]),u.useEffect(()=>{if(Je.activeTourId!==ll||!Je.isRunning)return;const Y=fe=>{const Ae=fe.target,Ge=Je.stepIndex;Ge===2&&Ae.closest('[data-tour="add-provider-button"]')?setTimeout(()=>Be(3),300):Ge===9&&Ae.closest('[data-tour="provider-cancel-button"]')?setTimeout(()=>Be(10),300):Ge===11&&Ae.closest('[data-tour="add-model-button"]')?setTimeout(()=>Be(12),300):Ge===17&&Ae.closest('[data-tour="model-cancel-button"]')?setTimeout(()=>Be(18),300):Ge===18&&Ae.closest('[data-tour="tasks-tab-trigger"]')&&setTimeout(()=>Be(19),300)};return document.addEventListener("click",Y,!0),()=>document.removeEventListener("click",Y,!0)},[Je,Be]);const rl=()=>{bt(ll)};u.useEffect(()=>{cl()},[]);const cl=async()=>{try{k(!0);const Y=await ei(),fe=Y.models||[];r(fe),j(fe.map(Ge=>Ge.name));const Ae=Y.api_providers||[];d(Ae.map(Ge=>Ge.name)),x(Ae),w(Y.model_task_config||null),A(!1),St.current=!1}catch(Y){console.error("加载配置失败:",Y)}finally{k(!1)}},ol=u.useCallback(Y=>h.find(fe=>fe.name===Y),[h]),Se=u.useCallback(async(Y,fe=!1)=>{const Ae=ol(Y);if(!Ae?.base_url){D([]),re(null),ss('提供商配置不完整,请先在"模型提供商配置"中配置');return}if(!Ae.api_key){D([]),re(null),ss('该提供商未配置 API Key,请先在"模型提供商配置"中填写');return}const Ge=yw(Ae.base_url);if(re(Ge),!Ge?.modelFetcher){D([]),ss(null);return}const xs=`${Y}:${Ae.base_url}`,ea=mp.get(xs);if(!fe&&ea&&Date.now()-ea.timestamp<_w){D(ea.models),ss(null);return}we(!0),ss(null);try{const sa=await $0(Y,Ge.modelFetcher.parser,Ge.modelFetcher.endpoint);D(sa),mp.set(xs,{models:sa,timestamp:Date.now()})}catch(sa){console.error("获取模型列表失败:",sa);const Sa=sa.message||"获取模型列表失败";Sa.includes("无效")||Sa.includes("过期")||Sa.includes("API Key")?ss('API Key 无效或已过期,请检查"模型提供商配置"中的密钥'):Sa.includes("权限")?ss("没有权限获取模型列表,请检查 API Key 权限"):Sa.includes("timeout")||Sa.includes("超时")?ss("请求超时,请检查网络连接后重试"):Sa.includes("不支持")?ss("该提供商不支持自动获取模型列表,请手动输入"):ss(Sa),D([])}finally{we(!1)}},[ol]);u.useEffect(()=>{X&&O?.api_provider&&Se(O.api_provider)},[X,O?.api_provider,Se]);const Oe=async()=>{try{H(!0),co().catch(()=>{}),B(!0)}catch(Y){console.error("重启失败:",Y),B(!1),Ue({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),H(!1)}},it=async()=>{try{E(!0),jt.current&&clearTimeout(jt.current),nt.current&&clearTimeout(nt.current);const Y=await ei();Y.models=n,Y.model_task_config=p,await io(Y),A(!1),Ue({title:"保存成功",description:"正在重启麦麦..."}),await Oe()}catch(Y){console.error("保存配置失败:",Y),Ue({title:"保存失败",description:Y.message,variant:"destructive"}),E(!1)}},dt=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},di=()=>{B(!1),H(!1),Ue({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},on=u.useCallback(async Y=>{if(!St.current)try{K(!0),await qu("models",Y),A(!1)}catch(fe){console.error("自动保存模型列表失败:",fe),A(!0)}finally{K(!1)}},[]),ut=u.useCallback(async Y=>{if(!St.current)try{K(!0),await qu("model_task_config",Y),A(!1)}catch(fe){console.error("自动保存任务配置失败:",fe),A(!0)}finally{K(!1)}},[]);u.useEffect(()=>{if(!St.current)return A(!0),jt.current&&clearTimeout(jt.current),jt.current=setTimeout(()=>{on(n)},2e3),()=>{jt.current&&clearTimeout(jt.current)}},[n,on]),u.useEffect(()=>{if(!(St.current||!p))return A(!0),nt.current&&clearTimeout(nt.current),nt.current=setTimeout(()=>{ut(p)},2e3),()=>{nt.current&&clearTimeout(nt.current)}},[p,ut]);const Pt=async()=>{try{E(!0),jt.current&&clearTimeout(jt.current),nt.current&&clearTimeout(nt.current);const Y=await ei();Y.models=n,Y.model_task_config=p,await io(Y),A(!1),Ue({title:"保存成功",description:"模型配置已保存"}),await cl()}catch(Y){console.error("保存配置失败:",Y),Ue({title:"保存失败",description:Y.message,variant:"destructive"})}finally{E(!1)}},Wt=(Y,fe)=>{Xe({}),te(Y||{model_identifier:"",name:"",api_provider:c[0]||"",price_in:0,price_out:0,force_stream_mode:!1,extra_params:{}}),Ne(fe),S(!0)},Ua=()=>{if(!O)return;const Y={};if(O.name?.trim()||(Y.name="请输入模型名称"),O.api_provider?.trim()||(Y.api_provider="请选择 API 提供商"),O.model_identifier?.trim()||(Y.model_identifier="请输入模型标识符"),Object.keys(Y).length>0){Xe(Y);return}Xe({});const fe={...O,price_in:O.price_in??0,price_out:O.price_out??0};let Ae,Ge=null;if(he!==null?(Ge=n[he].name,Ae=[...n],Ae[he]=fe):Ae=[...n,fe],r(Ae),j(Ae.map(xs=>xs.name)),Ge&&Ge!==fe.name&&p){const xs=ea=>ea.map(sa=>sa===Ge?fe.name:sa);w({...p,utils:{...p.utils,model_list:xs(p.utils?.model_list||[])},utils_small:{...p.utils_small,model_list:xs(p.utils_small?.model_list||[])},tool_use:{...p.tool_use,model_list:xs(p.tool_use?.model_list||[])},replyer:{...p.replyer,model_list:xs(p.replyer?.model_list||[])},planner:{...p.planner,model_list:xs(p.planner?.model_list||[])},vlm:{...p.vlm,model_list:xs(p.vlm?.model_list||[])},voice:{...p.voice,model_list:xs(p.voice?.model_list||[])},embedding:{...p.embedding,model_list:xs(p.embedding?.model_list||[])},lpmm_entity_extract:{...p.lpmm_entity_extract,model_list:xs(p.lpmm_entity_extract?.model_list||[])},lpmm_rdf_build:{...p.lpmm_rdf_build,model_list:xs(p.lpmm_rdf_build?.model_list||[])},lpmm_qa:{...p.lpmm_qa,model_list:xs(p.lpmm_qa?.model_list||[])}})}S(!1),te(null),Ne(null)},Ut=Y=>{if(!Y&&O){const fe={...O,price_in:O.price_in??0,price_out:O.price_out??0};te(fe)}S(Y)},Ba=Y=>{_e(Y),pe(!0)},_a=()=>{if(je!==null){const Y=n.filter((fe,Ae)=>Ae!==je);r(Y),j(Y.map(fe=>fe.name)),Ue({title:"删除成功",description:"模型已从列表中移除"})}pe(!1),_e(null)},W=Y=>{const fe=new Set(q);fe.has(Y)?fe.delete(Y):fe.add(Y),ie(fe)},ve=()=>{if(q.size===kt.length)ie(new Set);else{const Y=kt.map((fe,Ae)=>n.findIndex(Ge=>Ge===kt[Ae]));ie(new Set(Y))}},Me=()=>{if(q.size===0){Ue({title:"提示",description:"请先选择要删除的模型",variant:"default"});return}me(!0)},tt=()=>{const Y=n.filter((fe,Ae)=>!q.has(Ae));r(Y),j(Y.map(fe=>fe.name)),ie(new Set),me(!1),Ue({title:"批量删除成功",description:`已删除 ${q.size} 个模型`})},Bt=(Y,fe,Ae)=>{p&&w({...p,[Y]:{...p[Y],[fe]:Ae}})},kt=n.filter(Y=>{if(!N)return!0;const fe=N.toLowerCase();return Y.name.toLowerCase().includes(fe)||Y.model_identifier.toLowerCase().includes(fe)||Y.api_provider.toLowerCase().includes(fe)}),dl=Math.ceil(kt.length/de),Hl=kt.slice((xe-1)*de,xe*de),dn=()=>{const Y=parseInt(le);Y>=1&&Y<=dl&&($(Y),L(""))},un=Y=>p?[p.utils?.model_list||[],p.utils_small?.model_list||[],p.tool_use?.model_list||[],p.replyer?.model_list||[],p.planner?.model_list||[],p.vlm?.model_list||[],p.voice?.model_list||[],p.embedding?.model_list||[],p.lpmm_entity_extract?.model_list||[],p.lpmm_rdf_build?.model_list||[],p.lpmm_qa?.model_list||[]].some(Ae=>Ae.includes(Y)):!1;return v?e.jsx(Pe,{className:"h-full",children:e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):e.jsx(Pe,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"模型管理与分配"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"添加模型并为模型分配功能"})]}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[e.jsxs(y,{onClick:Pt,disabled:T||R||!U||Z,size:"sm",variant:"outline",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[e.jsx(br,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),T?"保存中...":R?"自动保存中...":U?"保存配置":"已保存"]}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsxs(y,{disabled:T||R||Z,size:"sm",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[e.jsx(Nr,{className:"mr-2 h-4 w-4"}),Z?"重启中...":U?"保存并重启":"重启麦麦"]})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认重启麦麦?"}),e.jsx(us,{className:"space-y-3",asChild:!0,children:e.jsxs("div",{children:[e.jsx("p",{children:U?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"}),e.jsxs(ha,{className:"border-yellow-500/50 bg-yellow-500/10",children:[e.jsx(Xt,{className:"h-4 w-4 text-yellow-600"}),e.jsxs(xa,{className:"text-yellow-900 dark:text-yellow-100",children:[e.jsx("strong",{children:"重要提示:"}),"由于技术原因,使用重启功能后,将无法再使用 ",e.jsx("code",{className:"px-1 py-0.5 bg-yellow-200 dark:bg-yellow-900 rounded",children:"Ctrl+C"})," 结束程序。",e.jsxs(Rs,{children:[e.jsx(ni,{asChild:!0,children:e.jsxs("button",{className:"ml-1 text-yellow-700 dark:text-yellow-300 underline hover:text-yellow-800 dark:hover:text-yellow-200 inline-flex items-center gap-1",children:[e.jsx(ro,{className:"h-3 w-3"}),"如何结束程序?"]})}),e.jsxs(zs,{className:"max-w-2xl",children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"如何结束使用重启功能后的麦麦程序"}),e.jsx(Ys,{children:"由于重启功能会使程序脱离终端控制,需要通过系统命令来结束进程"})]}),e.jsxs(Kt,{defaultValue:"windows",className:"w-full",children:[e.jsxs(Rt,{className:"grid w-full grid-cols-3",children:[e.jsx($e,{value:"windows",children:"Windows"}),e.jsx($e,{value:"macos",children:"macOS"}),e.jsx($e,{value:"linux",children:"Linux"})]}),e.jsxs(We,{value:"windows",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法一:使用任务管理器"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Ctrl + Shift + Esc"})," 打开任务管理器"]}),e.jsxs("li",{children:['在"进程"或"详细信息"标签页中找到 ',e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"python.exe"})]}),e.jsx("li",{children:'右键点击并选择"结束任务"'})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法二:使用命令行"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开 PowerShell 或命令提示符,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:'Get-Process python | Where-Object {$_.MainWindowTitle -eq ""}'}),e.jsx("p",{className:"mt-2",children:"# 结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"Stop-Process -Name python -Force"})]})]})]}),e.jsxs(We,{value:"macos",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法一:使用活动监视器"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Cmd + Space"}),' 打开 Spotlight,搜索"活动监视器"']}),e.jsxs("li",{children:["在进程列表中找到 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"Python"})]}),e.jsx("li",{children:"选中后点击左上角的 X 按钮结束进程"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"方法二:使用终端"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:"ps aux | grep python | grep -v grep"}),e.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),e.jsx("p",{children:"kill -9 "}),e.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"pkill -9 python"})]})]})]}),e.jsxs(We,{value:"linux",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"使用终端命令"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"打开终端,执行以下命令:"}),e.jsxs("div",{className:"bg-muted p-3 rounded-md font-mono text-sm",children:[e.jsx("p",{children:"# 查找麦麦进程"}),e.jsx("p",{children:"ps aux | grep python | grep -v grep"}),e.jsx("p",{className:"mt-2",children:"# 结束指定 PID 的进程"}),e.jsx("p",{children:"kill -9 "}),e.jsx("p",{className:"mt-2",children:"# 或使用 pkill 按名称结束"}),e.jsx("p",{children:'pkill -9 -f "bot.py"'}),e.jsx("p",{className:"mt-2",children:"# 或结束所有 Python 进程(谨慎使用)"}),e.jsx("p",{children:"pkill -9 python"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-semibold",children:"使用 htop(如已安装)"}),e.jsxs("ol",{className:"list-decimal list-inside space-y-1 text-sm text-muted-foreground",children:[e.jsxs("li",{children:["在终端输入 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"htop"})]}),e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F3"})," 搜索 python"]}),e.jsxs("li",{children:["按 ",e.jsx("code",{className:"px-1 py-0.5 bg-muted rounded",children:"F9"})," 发送信号,选择 SIGKILL"]})]})]})]})]}),e.jsx(Js,{children:e.jsx(Zu,{asChild:!0,children:e.jsx(y,{variant:"outline",children:"关闭"})})})]})]})]})]})]})})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:U?it:Oe,children:U?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsxs(ha,{children:[e.jsx(Xt,{className:"h-4 w-4"}),e.jsxs(xa,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),e.jsxs(ha,{className:"hidden lg:flex border-primary/30 bg-primary/5 cursor-pointer hover:bg-primary/10 transition-colors",onClick:rl,children:[e.jsx(RN,{className:"h-4 w-4 text-primary"}),e.jsxs(xa,{className:"flex items-center justify-between",children:[e.jsxs("span",{children:[e.jsx("strong",{className:"text-primary",children:"新手引导:"}),"不知道如何配置模型?点击这里开始学习如何为麦麦的组件分配模型。"]}),e.jsx(y,{variant:"outline",size:"sm",className:"ml-4 shrink-0",children:"开始引导"})]})]}),e.jsxs(Kt,{defaultValue:"models",className:"w-full",children:[e.jsxs(Rt,{className:"grid w-full max-w-full sm:max-w-md grid-cols-2",children:[e.jsx($e,{value:"models",children:"添加模型"}),e.jsx($e,{value:"tasks","data-tour":"tasks-tab-trigger",children:"为模型分配功能"})]}),e.jsxs(We,{value:"models",className:"space-y-4 mt-0",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-2",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"配置可用的模型列表"}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[q.size>0&&e.jsxs(y,{onClick:Me,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(es,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",q.size,")"]}),e.jsxs(y,{onClick:()=>Wt(null,null),size:"sm",variant:"outline",className:"w-full sm:w-auto","data-tour":"add-model-button",children:[e.jsx(ot,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加模型"]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2",children:[e.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[e.jsx(_t,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索模型名称、标识符或提供商...",value:N,onChange:Y=>G(Y.target.value),className:"pl-9"})]}),N&&e.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",kt.length," 个结果"]})]}),e.jsx("div",{className:"md:hidden space-y-3",children:Hl.length===0?e.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:N?"未找到匹配的模型":"暂无模型配置"}):Hl.map((Y,fe)=>{const Ae=n.findIndex(xs=>xs===Y),Ge=un(Y.name);return e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("h3",{className:"font-semibold text-base",children:Y.name}),e.jsx(Ye,{variant:Ge?"default":"secondary",className:Ge?"bg-green-600 hover:bg-green-700":"",children:Ge?"已使用":"未使用"})]}),e.jsx("p",{className:"text-xs text-muted-foreground break-all",title:Y.model_identifier,children:Y.model_identifier})]}),e.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[e.jsxs(y,{variant:"default",size:"sm",onClick:()=>Wt(Y,Ae),children:[e.jsx(nn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(y,{size:"sm",onClick:()=>Ba(Ae),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(es,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"提供商"}),e.jsx("p",{className:"font-medium",children:Y.api_provider})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"强制流式"}),e.jsx("p",{className:"font-medium",children:Y.force_stream_mode?"是":"否"})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"输入价格"}),e.jsxs("p",{className:"font-medium",children:["¥",Y.price_in,"/M"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"输出价格"}),e.jsxs("p",{className:"font-medium",children:["¥",Y.price_out,"/M"]})]})]})]},fe)})}),e.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(ii,{children:[e.jsx(ri,{children:e.jsxs(gt,{children:[e.jsx(ls,{className:"w-12",children:e.jsx(yt,{checked:q.size===kt.length&&kt.length>0,onCheckedChange:ve})}),e.jsx(ls,{className:"w-24",children:"使用状态"}),e.jsx(ls,{children:"模型名称"}),e.jsx(ls,{children:"模型标识符"}),e.jsx(ls,{children:"提供商"}),e.jsx(ls,{className:"text-right",children:"输入价格"}),e.jsx(ls,{className:"text-right",children:"输出价格"}),e.jsx(ls,{className:"text-center",children:"强制流式"}),e.jsx(ls,{className:"text-right",children:"操作"})]})}),e.jsx(ci,{children:Hl.length===0?e.jsx(gt,{children:e.jsx(Qe,{colSpan:9,className:"text-center text-muted-foreground py-8",children:N?"未找到匹配的模型":"暂无模型配置"})}):Hl.map((Y,fe)=>{const Ae=n.findIndex(xs=>xs===Y),Ge=un(Y.name);return e.jsxs(gt,{children:[e.jsx(Qe,{children:e.jsx(yt,{checked:q.has(Ae),onCheckedChange:()=>W(Ae)})}),e.jsx(Qe,{children:e.jsx(Ye,{variant:Ge?"default":"secondary",className:Ge?"bg-green-600 hover:bg-green-700":"",children:Ge?"已使用":"未使用"})}),e.jsx(Qe,{className:"font-medium",children:Y.name}),e.jsx(Qe,{className:"max-w-xs truncate",title:Y.model_identifier,children:Y.model_identifier}),e.jsx(Qe,{children:Y.api_provider}),e.jsxs(Qe,{className:"text-right",children:["¥",Y.price_in,"/M"]}),e.jsxs(Qe,{className:"text-right",children:["¥",Y.price_out,"/M"]}),e.jsx(Qe,{className:"text-center",children:Y.force_stream_mode?"是":"否"}),e.jsx(Qe,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(y,{variant:"default",size:"sm",onClick:()=>Wt(Y,Ae),children:[e.jsx(nn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(y,{size:"sm",onClick:()=>Ba(Ae),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(es,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},fe)})})]})})}),kt.length>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"page-size-model",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(He,{value:de.toString(),onValueChange:Y=>{ge(parseInt(Y)),$(1),ie(new Set)},children:[e.jsx(Re,{id:"page-size-model",className:"w-20",children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"10",children:"10"}),e.jsx(ne,{value:"20",children:"20"}),e.jsx(ne,{value:"50",children:"50"}),e.jsx(ne,{value:"100",children:"100"})]})]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(xe-1)*de+1," 到"," ",Math.min(xe*de,kt.length)," 条,共 ",kt.length," 条"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{variant:"outline",size:"sm",onClick:()=>$(1),disabled:xe===1,className:"hidden sm:flex",children:e.jsx(wr,{className:"h-4 w-4"})}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>$(Y=>Math.max(1,Y-1)),disabled:xe===1,children:[e.jsx(cn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:le,onChange:Y=>L(Y.target.value),onKeyDown:Y=>Y.key==="Enter"&&dn(),placeholder:xe.toString(),className:"w-16 h-8 text-center",min:1,max:dl}),e.jsx(y,{variant:"outline",size:"sm",onClick:dn,disabled:!le,className:"h-8",children:"跳转"})]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>$(Y=>Y+1),disabled:xe>=dl,children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(il,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(y,{variant:"outline",size:"sm",onClick:()=>$(dl),disabled:xe>=dl,className:"hidden sm:flex",children:e.jsx(_r,{className:"h-4 w-4"})})]})]})]}),e.jsxs(We,{value:"tasks",className:"space-y-6 mt-0",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"为不同的任务配置使用的模型和参数"}),p&&e.jsxs("div",{className:"grid gap-4 sm:gap-6",children:[e.jsx(ya,{title:"组件模型 (utils)",description:"用于表情包、取名、关系、情绪变化等组件",taskConfig:p.utils,modelNames:f,onChange:(Y,fe)=>Bt("utils",Y,fe),dataTour:"task-model-select"}),e.jsx(ya,{title:"组件小模型 (utils_small)",description:"消耗量较大的组件,建议使用速度较快的小模型",taskConfig:p.utils_small,modelNames:f,onChange:(Y,fe)=>Bt("utils_small",Y,fe)}),e.jsx(ya,{title:"工具调用模型 (tool_use)",description:"需要使用支持工具调用的模型",taskConfig:p.tool_use,modelNames:f,onChange:(Y,fe)=>Bt("tool_use",Y,fe)}),e.jsx(ya,{title:"首要回复模型 (replyer)",description:"用于表达器和表达方式学习",taskConfig:p.replyer,modelNames:f,onChange:(Y,fe)=>Bt("replyer",Y,fe)}),e.jsx(ya,{title:"决策模型 (planner)",description:"负责决定麦麦该什么时候回复",taskConfig:p.planner,modelNames:f,onChange:(Y,fe)=>Bt("planner",Y,fe)}),e.jsx(ya,{title:"图像识别模型 (vlm)",description:"视觉语言模型",taskConfig:p.vlm,modelNames:f,onChange:(Y,fe)=>Bt("vlm",Y,fe),hideTemperature:!0}),e.jsx(ya,{title:"语音识别模型 (voice)",description:"语音转文字",taskConfig:p.voice,modelNames:f,onChange:(Y,fe)=>Bt("voice",Y,fe),hideTemperature:!0,hideMaxTokens:!0}),e.jsx(ya,{title:"嵌入模型 (embedding)",description:"用于向量化",taskConfig:p.embedding,modelNames:f,onChange:(Y,fe)=>Bt("embedding",Y,fe),hideTemperature:!0,hideMaxTokens:!0}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库模型"}),e.jsx(ya,{title:"实体提取模型 (lpmm_entity_extract)",description:"从文本中提取实体",taskConfig:p.lpmm_entity_extract,modelNames:f,onChange:(Y,fe)=>Bt("lpmm_entity_extract",Y,fe)}),e.jsx(ya,{title:"RDF 构建模型 (lpmm_rdf_build)",description:"构建知识图谱",taskConfig:p.lpmm_rdf_build,modelNames:f,onChange:(Y,fe)=>Bt("lpmm_rdf_build",Y,fe)}),e.jsx(ya,{title:"问答模型 (lpmm_qa)",description:"知识库问答",taskConfig:p.lpmm_qa,modelNames:f,onChange:(Y,fe)=>Bt("lpmm_qa",Y,fe)})]})]})]})]}),e.jsx(Rs,{open:X,onOpenChange:Ut,children:e.jsxs(zs,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"model-dialog",preventOutsideClose:Je.isRunning,children:[e.jsxs(Ms,{children:[e.jsx(As,{children:he!==null?"编辑模型":"添加模型"}),e.jsx(Ys,{children:"配置模型的基本信息和参数"})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":"model-name-input",children:[e.jsx(b,{htmlFor:"model_name",className:be.name?"text-destructive":"",children:"模型名称 *"}),e.jsx(ce,{id:"model_name",value:O?.name||"",onChange:Y=>{te(fe=>fe?{...fe,name:Y.target.value}:null),be.name&&Xe(fe=>({...fe,name:void 0}))},placeholder:"例如: qwen3-30b",className:be.name?"border-destructive focus-visible:ring-destructive":""}),be.name?e.jsx("p",{className:"text-xs text-destructive",children:be.name}):e.jsx("p",{className:"text-xs text-muted-foreground",children:"用于在任务配置中引用此模型"})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"model-provider-select",children:[e.jsx(b,{htmlFor:"api_provider",className:be.api_provider?"text-destructive":"",children:"API 提供商 *"}),e.jsxs(He,{value:O?.api_provider||"",onValueChange:Y=>{te(fe=>fe?{...fe,api_provider:Y}:null),D([]),ss(null),be.api_provider&&Xe(fe=>({...fe,api_provider:void 0}))},children:[e.jsx(Re,{id:"api_provider",className:be.api_provider?"border-destructive focus-visible:ring-destructive":"",children:e.jsx(qe,{placeholder:"选择提供商"})}),e.jsx(Le,{children:c.map(Y=>e.jsx(ne,{value:Y,children:Y},Y))})]}),be.api_provider&&e.jsx("p",{className:"text-xs text-destructive",children:be.api_provider})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"model-identifier-input",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{htmlFor:"model_identifier",className:be.model_identifier?"text-destructive":"",children:"模型标识符 *"}),Gs?.modelFetcher&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ye,{variant:"secondary",className:"text-xs",children:Gs.display_name}),e.jsx(y,{variant:"ghost",size:"sm",className:"h-6 px-2",onClick:()=>O?.api_provider&&Se(O.api_provider,!0),disabled:ee,children:ee?e.jsx(vt,{className:"h-3 w-3 animate-spin"}):e.jsx(pt,{className:"h-3 w-3"})})]})]}),Gs?.modelFetcher?e.jsxs(Oa,{open:Ze,onOpenChange:Ls,children:[e.jsx(Ra,{asChild:!0,children:e.jsxs(y,{variant:"outline",role:"combobox","aria-expanded":Ze,className:"w-full justify-between font-normal",disabled:ee||!!ze,children:[ee?e.jsxs("span",{className:"flex items-center gap-2 text-muted-foreground",children:[e.jsx(vt,{className:"h-4 w-4 animate-spin"}),"正在获取模型列表..."]}):ze?e.jsx("span",{className:"text-muted-foreground text-sm",children:"点击下方输入框手动填写"}):O?.model_identifier?e.jsx("span",{className:"truncate",children:O.model_identifier}):e.jsx("span",{className:"text-muted-foreground",children:"搜索或选择模型..."}),e.jsx(Qu,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(wa,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:e.jsxs(oo,{children:[e.jsx(uo,{placeholder:"搜索模型..."}),e.jsx(Pe,{className:"h-[300px]",children:e.jsxs(mo,{className:"max-h-none overflow-visible",children:[e.jsx(ho,{children:ze?e.jsxs("div",{className:"py-4 px-2 text-center space-y-2",children:[e.jsx("p",{className:"text-sm text-destructive",children:ze}),!ze.includes("API Key")&&e.jsx(y,{variant:"link",size:"sm",onClick:()=>O?.api_provider&&Se(O.api_provider,!0),children:"重试"})]}):"未找到匹配的模型"}),e.jsx(vr,{heading:"可用模型",children:F.map(Y=>e.jsxs(yr,{value:Y.id,onSelect:()=>{te(fe=>fe?{...fe,model_identifier:Y.id}:null),Ls(!1)},children:[e.jsx(fa,{className:`mr-2 h-4 w-4 ${O?.model_identifier===Y.id?"opacity-100":"opacity-0"}`}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{children:Y.id}),Y.name!==Y.id&&e.jsx("span",{className:"text-xs text-muted-foreground",children:Y.name})]})]},Y.id))}),e.jsx(vr,{heading:"手动输入",children:e.jsxs(yr,{value:"__manual_input__",onSelect:()=>{Ls(!1)},children:[e.jsx(nn,{className:"mr-2 h-4 w-4"}),"手动输入模型标识符..."]})})]})})]})})]}):e.jsx(ce,{id:"model_identifier",value:O?.model_identifier||"",onChange:Y=>{te(fe=>fe?{...fe,model_identifier:Y.target.value}:null),be.model_identifier&&Xe(fe=>({...fe,model_identifier:void 0}))},placeholder:"Qwen/Qwen3-30B-A3B-Instruct-2507",className:be.model_identifier?"border-destructive focus-visible:ring-destructive":""}),be.model_identifier&&e.jsx("p",{className:"text-xs text-destructive",children:be.model_identifier}),ze&&Gs?.modelFetcher&&!be.model_identifier&&e.jsxs(ha,{variant:"destructive",className:"mt-2 py-2",children:[e.jsx(Xt,{className:"h-4 w-4"}),e.jsx(xa,{className:"text-xs",children:ze})]}),Gs?.modelFetcher&&e.jsx(ce,{value:O?.model_identifier||"",onChange:Y=>{te(fe=>fe?{...fe,model_identifier:Y.target.value}:null),be.model_identifier&&Xe(fe=>({...fe,model_identifier:void 0}))},placeholder:"或手动输入模型标识符",className:`mt-2 ${be.model_identifier?"border-destructive focus-visible:ring-destructive":""}`}),!be.model_identifier&&e.jsx("p",{className:"text-xs text-muted-foreground",children:ze?'请手动输入模型标识符,或前往"模型提供商配置"检查 API Key':Gs?.modelFetcher?`已识别为 ${Gs.display_name},支持自动获取模型列表`:"API 提供商提供的模型 ID"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"price_in",children:"输入价格 (¥/M token)"}),e.jsx(ce,{id:"price_in",type:"number",step:"0.1",min:"0",value:O?.price_in??"",onChange:Y=>{const fe=Y.target.value===""?null:parseFloat(Y.target.value);te(Ae=>Ae?{...Ae,price_in:fe}:null)},placeholder:"默认: 0"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"price_out",children:"输出价格 (¥/M token)"}),e.jsx(ce,{id:"price_out",type:"number",step:"0.1",min:"0",value:O?.price_out??"",onChange:Y=>{const fe=Y.target.value===""?null:parseFloat(Y.target.value);te(Ae=>Ae?{...Ae,price_out:fe}:null)},placeholder:"默认: 0"})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"force_stream_mode",checked:O?.force_stream_mode||!1,onCheckedChange:Y=>te(fe=>fe?{...fe,force_stream_mode:Y}:null)}),e.jsx(b,{htmlFor:"force_stream_mode",className:"cursor-pointer",children:"强制流式输出模式"})]})]}),e.jsxs(Js,{children:[e.jsx(y,{variant:"outline",onClick:()=>S(!1),"data-tour":"model-cancel-button",children:"取消"}),e.jsx(y,{onClick:Ua,"data-tour":"model-save-button",children:"保存"})]})]})}),e.jsx(ps,{open:ye,onOpenChange:pe,children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:['确定要删除模型 "',je!==null?n[je]?.name:"",'" 吗? 此操作无法撤销。']})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:_a,children:"删除"})]})]})}),e.jsx(ps,{open:_,onOpenChange:me,children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认批量删除"}),e.jsxs(us,{children:["确定要删除选中的 ",q.size," 个模型吗? 此操作无法撤销。"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:tt,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),z&&e.jsx(Iu,{onRestartComplete:dt,onRestartFailed:di})]})})}function ya({title:n,description:r,taskConfig:c,modelNames:d,onChange:h,hideTemperature:x=!1,hideMaxTokens:f=!1,dataTour:j}){const p=w=>{h("model_list",w)};return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"font-semibold text-base sm:text-lg",children:n}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:r})]}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":j,children:[e.jsx(b,{children:"模型列表"}),e.jsx(ww,{options:d.map(w=>({label:w,value:w})),selected:c.model_list||[],onChange:p,placeholder:"选择模型...",emptyText:"暂无可用模型"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[!x&&e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:"温度"}),e.jsx(ce,{type:"number",step:"0.1",min:"0",max:"1",value:c.temperature??.3,onChange:w=>{const v=parseFloat(w.target.value);!isNaN(v)&&v>=0&&v<=1&&h("temperature",v)},className:"w-20 h-8 text-sm"})]}),e.jsx(Ma,{value:[c.temperature??.3],onValueChange:w=>h("temperature",w[0]),min:0,max:1,step:.1,className:"w-full"})]}),!f&&e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"最大 Token"}),e.jsx(ce,{type:"number",step:"1",min:"1",value:c.max_tokens??1024,onChange:w=>h("max_tokens",parseInt(w.target.value))})]})]})]})]})}const xo="/api/webui/config";async function Cw(){const r=await(await ke(`${xo}/adapter-config/path`)).json();return!r.success||!r.path?null:{path:r.path,lastModified:r.lastModified}}async function hp(n){const c=await(await ke(`${xo}/adapter-config/path`,{method:"POST",headers:Ts(),body:JSON.stringify({path:n})})).json();if(!c.success)throw new Error(c.message||"保存路径失败")}async function xp(n){const c=await(await ke(`${xo}/adapter-config?path=${encodeURIComponent(n)}`)).json();if(!c.success)throw new Error("读取配置文件失败");return c.content}async function fp(n,r){const d=await(await ke(`${xo}/adapter-config`,{method:"POST",headers:Ts(),body:JSON.stringify({path:n,content:r})})).json();if(!d.success)throw new Error(d.message||"保存配置失败")}const Yt={inner:{version:"0.1.2"},nickname:{nickname:""},napcat_server:{host:"localhost",port:8095,token:"",heartbeat_interval:30},maibot_server:{host:"localhost",port:8e3},chat:{group_list_type:"whitelist",group_list:[],private_list_type:"whitelist",private_list:[],ban_user_id:[],ban_qq_bot:!1,enable_poke:!0},voice:{use_tts:!1},debug:{level:"INFO"}},Du={oneclick:{name:"一键包",description:"使用一键包部署的适配器配置",path:"../MaiBot-Napcat-Adapter/config.toml",icon:rn},docker:{name:"Docker",description:"Docker Compose 部署的适配器配置",path:"/MaiMBot/adapters-config/config.toml",icon:LN}};function kw(){const[n,r]=u.useState("upload"),[c,d]=u.useState(null),[h,x]=u.useState(""),[f,j]=u.useState(""),[p,w]=u.useState("oneclick"),[v,k]=u.useState(""),[T,E]=u.useState(!1),[R,K]=u.useState(!1),[U,A]=u.useState(!1),[Z,H]=u.useState(!1),[z,B]=u.useState(null),X=u.useRef(null),{toast:S}=Hs(),O=u.useRef(null),te=L=>{if(!L.trim())return{valid:!1,error:"路径不能为空"};if(!L.toLowerCase().endsWith(".toml"))return{valid:!1,error:"文件必须是 .toml 格式"};const F=/^([a-zA-Z]:\\|\\\\[^\\]+\\[^\\]+\\).+\.toml$/i,D=/^(\/|~\/).+\.toml$/i,ee=/^(\.{1,2}[\\/]|[^:\\/]).+\.toml$/i,we=F.test(L),ze=D.test(L),ss=ee.test(L);return!we&&!ze&&!ss?{valid:!1,error:"路径格式错误"}:/[<>"|?*\x00-\x1F]/.test(L)?{valid:!1,error:"路径包含非法字符"}:{valid:!0,error:""}},he=L=>{if(j(L),L.trim()){const F=te(L);k(F.error)}else k("")},Ne=u.useCallback(async L=>{const F=Du[L];K(!0);try{const D=await xp(F.path),ee=xe(D);d(ee),w(L),j(F.path),await hp(F.path),S({title:"加载成功",description:`已从${F.name}预设加载配置`})}catch(D){console.error("加载预设配置失败:",D),S({title:"加载失败",description:D instanceof Error?D.message:"无法读取预设配置文件",variant:"destructive"})}finally{K(!1)}},[S]),ye=u.useCallback(async L=>{const F=te(L);if(!F.valid){k(F.error),S({title:"路径无效",description:F.error,variant:"destructive"});return}k(""),K(!0);try{const D=await xp(L),ee=xe(D);d(ee),j(L),await hp(L),S({title:"加载成功",description:"已从配置文件加载"})}catch(D){console.error("加载配置失败:",D),S({title:"加载失败",description:D instanceof Error?D.message:"无法读取配置文件",variant:"destructive"})}finally{K(!1)}},[S]);u.useEffect(()=>{(async()=>{try{const F=await Cw();if(F&&F.path){j(F.path);const D=Object.entries(Du).find(([,ee])=>ee.path===F.path);D?(r("preset"),w(D[0]),await Ne(D[0])):(r("path"),await ye(F.path))}}catch(F){console.error("加载保存的路径失败:",F)}})()},[ye,Ne]);const pe=u.useCallback(L=>{n!=="path"&&n!=="preset"||!f||(O.current&&clearTimeout(O.current),O.current=setTimeout(async()=>{E(!0);try{const F=$(L);await fp(f,F),S({title:"自动保存成功",description:"配置已保存到文件"})}catch(F){console.error("自动保存失败:",F),S({title:"自动保存失败",description:F instanceof Error?F.message:"保存配置失败",variant:"destructive"})}finally{E(!1)}},1e3))},[n,f,S]),je=async()=>{if(!c||!f)return;const L=te(f);if(!L.valid){S({title:"保存失败",description:L.error,variant:"destructive"});return}E(!0);try{const F=$(c);await fp(f,F),S({title:"保存成功",description:"配置已保存到文件"})}catch(F){console.error("保存失败:",F),S({title:"保存失败",description:F instanceof Error?F.message:"保存配置失败",variant:"destructive"})}finally{E(!1)}},_e=async()=>{f&&await ye(f)},N=L=>{if(L!==n){if(c){B(L),A(!0);return}G(L)}},G=L=>{d(null),x(""),k(""),r(L),L==="preset"&&Ne("oneclick"),S({title:"已切换模式",description:{upload:"现在可以上传配置文件",path:"现在可以指定配置文件路径",preset:"现在可以使用预设配置"}[L]})},q=()=>{z&&(G(z),B(null)),A(!1)},ie=()=>{if(c){H(!0);return}_()},_=()=>{j(""),d(null),k(""),S({title:"已清空",description:"路径和配置已清空"})},me=()=>{_(),H(!1)},xe=L=>{const F=JSON.parse(JSON.stringify(Yt)),D=L.split(` -`);let ee="";for(const we of D){const ze=we.trim();if(!ze||ze.startsWith("#"))continue;const ss=ze.match(/^\[(\w+)\]/);if(ss){ee=ss[1];continue}const Ze=ze.match(/^(\w+)\s*=\s*(.+)$/);if(Ze&&ee){const[,Ls,Gs]=Ze;let re=Gs.trim();const be=re.match(/^("[^"]*")/);if(be)re=be[1];else{const Ue=re.indexOf("#");Ue!==-1&&(re=re.substring(0,Ue).trim())}let Xe;if(re==="true")Xe=!0;else if(re==="false")Xe=!1;else if(re.startsWith("[")&&re.endsWith("]")){const Ue=re.slice(1,-1).trim();if(Ue){const st=Ue.split(",").map(bt=>{const Je=bt.trim();return isNaN(Number(Je))?Je.replace(/"/g,""):Number(Je)}),It=typeof st[0];Xe=st.every(bt=>typeof bt===It)?st:st.filter(bt=>typeof bt=="number")}else Xe=[]}else re.startsWith('"')&&re.endsWith('"')?Xe=re.slice(1,-1):isNaN(Number(re))?Xe=re.replace(/"/g,""):Xe=Number(re);if(ee in F){const Ue=F[ee];Ue[Ls]=Xe}}}return F},$=L=>{const F=[],D=(ee,we)=>ee===""||ee===null||ee===void 0?we:ee;return F.push("[inner]"),F.push(`version = "${D(L.inner.version,Yt.inner.version)}" # 版本号`),F.push("# 请勿修改版本号,除非你知道自己在做什么"),F.push(""),F.push("[nickname] # 现在没用"),F.push(`nickname = "${D(L.nickname.nickname,Yt.nickname.nickname)}"`),F.push(""),F.push("[napcat_server] # Napcat连接的ws服务设置"),F.push(`host = "${D(L.napcat_server.host,Yt.napcat_server.host)}" # Napcat设定的主机地址`),F.push(`port = ${D(L.napcat_server.port||0,Yt.napcat_server.port)} # Napcat设定的端口`),F.push(`token = "${D(L.napcat_server.token,Yt.napcat_server.token)}" # Napcat设定的访问令牌,若无则留空`),F.push(`heartbeat_interval = ${D(L.napcat_server.heartbeat_interval||0,Yt.napcat_server.heartbeat_interval)} # 与Napcat设置的心跳相同(按秒计)`),F.push(""),F.push("[maibot_server] # 连接麦麦的ws服务设置"),F.push(`host = "${D(L.maibot_server.host,Yt.maibot_server.host)}" # 麦麦在.env文件中设置的主机地址,即HOST字段`),F.push(`port = ${D(L.maibot_server.port||0,Yt.maibot_server.port)} # 麦麦在.env文件中设置的端口,即PORT字段`),F.push(""),F.push("[chat] # 黑白名单功能"),F.push(`group_list_type = "${D(L.chat.group_list_type,Yt.chat.group_list_type)}" # 群组名单类型,可选为:whitelist, blacklist`),F.push(`group_list = [${L.chat.group_list.join(", ")}] # 群组名单`),F.push("# 当group_list_type为whitelist时,只有群组名单中的群组可以聊天"),F.push("# 当group_list_type为blacklist时,群组名单中的任何群组无法聊天"),F.push(`private_list_type = "${D(L.chat.private_list_type,Yt.chat.private_list_type)}" # 私聊名单类型,可选为:whitelist, blacklist`),F.push(`private_list = [${L.chat.private_list.join(", ")}] # 私聊名单`),F.push("# 当private_list_type为whitelist时,只有私聊名单中的用户可以聊天"),F.push("# 当private_list_type为blacklist时,私聊名单中的任何用户无法聊天"),F.push(`ban_user_id = [${L.chat.ban_user_id.join(", ")}] # 全局禁止名单(全局禁止名单中的用户无法进行任何聊天)`),F.push(`ban_qq_bot = ${L.chat.ban_qq_bot} # 是否屏蔽QQ官方机器人`),F.push(`enable_poke = ${L.chat.enable_poke} # 是否启用戳一戳功能`),F.push(""),F.push("[voice] # 发送语音设置"),F.push(`use_tts = ${L.voice.use_tts} # 是否使用tts语音(请确保你配置了tts并有对应的adapter)`),F.push(""),F.push("[debug]"),F.push(`level = "${D(L.debug.level,Yt.debug.level)}" # 日志等级(DEBUG, INFO, WARNING, ERROR, CRITICAL)`),F.join(` -`)},de=L=>{const F=L.target.files?.[0];if(!F)return;const D=new FileReader;D.onload=ee=>{try{const we=ee.target?.result,ze=xe(we);d(ze),x(F.name),S({title:"上传成功",description:`已加载配置文件:${F.name}`})}catch(we){console.error("解析配置文件失败:",we),S({title:"解析失败",description:"配置文件格式错误,请检查文件内容",variant:"destructive"})}},D.readAsText(F)},ge=()=>{if(!c)return;const L=$(c),F=new Blob([L],{type:"text/plain;charset=utf-8"}),D=URL.createObjectURL(F),ee=document.createElement("a");ee.href=D,ee.download=h||"config.toml",document.body.appendChild(ee),ee.click(),document.body.removeChild(ee),URL.revokeObjectURL(D),S({title:"下载成功",description:"配置文件已下载,请手动覆盖并重启适配器"})},le=()=>{d(JSON.parse(JSON.stringify(Yt))),x("config.toml"),S({title:"已加载默认配置",description:"可以开始编辑配置"})};return e.jsx(Pe,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦适配器配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的 QQ 适配器的配置文件"})]})}),e.jsxs("div",{className:"flex items-start gap-2 p-3 rounded-lg border border-amber-500/50 bg-amber-500/10 text-amber-700 dark:text-amber-400",children:[e.jsx(Da,{className:"h-4 w-4 mt-0.5 flex-shrink-0"}),e.jsx("p",{className:"text-sm",children:"适配器配置保存之后使用 WebUI 的重启功能适配器并不会重启,需要手动重启适配器。"})]}),e.jsxs(Fe,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"工作模式"}),e.jsx(Zs,{children:"选择配置文件的管理方式"})]}),e.jsxs(bs,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3 md:gap-4",children:[e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="preset"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>N("preset"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(rn,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"预设模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"使用预设的部署配置"})]})]})}),e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="upload"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>N("upload"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(hr,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"上传文件模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"上传配置文件,编辑后下载并手动覆盖"})]})]})}),e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="path"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>N("path"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(UN,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"指定路径模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"指定配置文件路径,自动加载和保存"})]})]})})]}),n==="preset"&&e.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[e.jsx(b,{className:"text-sm md:text-base",children:"选择部署方式"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:Object.entries(Du).map(([L,F])=>{const D=F.icon,ee=p===L;return e.jsx("div",{className:`border-2 rounded-lg p-3 cursor-pointer transition-all ${ee?"border-primary bg-primary/5":"border-muted hover:border-primary/50"}`,onClick:()=>{w(L),Ne(L)},children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(D,{className:"h-5 w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h4",{className:"font-semibold text-sm",children:F.name}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:F.description}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1 font-mono break-all",children:F.path})]})]})},L)})})]}),n==="path"&&e.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"config-path",className:"text-sm md:text-base",children:"配置文件路径"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs("div",{className:"flex-1 space-y-1",children:[e.jsx(ce,{id:"config-path",value:f,onChange:L=>he(L.target.value),placeholder:"例: C:\\Adapter\\config.toml",className:`text-sm ${v?"border-destructive":""}`}),v&&e.jsx("p",{className:"text-xs text-destructive",children:v})]}),e.jsx(y,{onClick:()=>ye(f),disabled:R||!f||!!v,className:"w-full sm:w-auto",children:R?e.jsxs(e.Fragment,{children:[e.jsx(pt,{className:"h-4 w-4 animate-spin mr-2"}),e.jsx("span",{className:"sm:hidden",children:"加载中..."})]}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"sm:hidden",children:"加载配置"}),e.jsx("span",{className:"hidden sm:inline",children:"加载"})]})})]})]}),e.jsxs("details",{className:"rounded-lg bg-muted/50 p-3 group",children:[e.jsxs("summary",{className:"text-xs font-medium cursor-pointer select-none list-none flex items-center justify-between",children:[e.jsx("span",{children:"路径格式说明"}),e.jsx("svg",{className:"h-4 w-4 transition-transform group-open:rotate-180",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),e.jsxs("div",{className:"mt-2 space-y-2 text-xs text-muted-foreground",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Windows"})}),e.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[e.jsx("div",{children:"C:\\Adapter\\config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"D:\\MaiBot\\adapter\\config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"\\\\server\\share\\config.toml"})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Linux"})}),e.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[e.jsx("div",{children:"/opt/adapter/config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"/home/user/adapter/config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"~/adapter/config.toml"})]})]}),e.jsx("p",{className:"pt-1 border-t text-[10px] md:text-xs",children:"💡 配置会自动保存到指定文件,修改后 1 秒自动保存"})]})]})]})]})]}),e.jsxs(ha,{children:[e.jsx(Xt,{className:"h-4 w-4"}),e.jsx(xa,{children:n==="preset"?e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"预设模式:"}),"选择预设的部署方式,配置会自动加载,修改后 1 秒自动保存",T&&" (正在保存...)"]}):n==="upload"?e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"上传文件模式:"}),"上传配置文件 → 在线编辑 → 下载文件 → 手动覆盖并重启适配器"]}):e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"指定路径模式:"}),"指定配置文件路径后,配置会自动加载,修改后 1 秒自动保存",T&&" (正在保存...)"]})})]}),n==="upload"&&!c&&e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 w-full",children:[e.jsx("input",{ref:X,type:"file",accept:".toml",className:"hidden",onChange:de}),e.jsxs(y,{onClick:()=>X.current?.click(),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(hr,{className:"mr-2 h-4 w-4"}),"上传配置"]}),e.jsxs(y,{onClick:le,size:"sm",className:"w-full sm:w-auto",children:[e.jsx(Aa,{className:"mr-2 h-4 w-4"}),"使用默认配置"]})]}),n==="upload"&&c&&e.jsx("div",{className:"flex gap-2",children:e.jsxs(y,{onClick:ge,size:"sm",className:"w-full sm:w-auto",children:[e.jsx(nl,{className:"mr-2 h-4 w-4"}),"下载配置"]})}),(n==="preset"||n==="path")&&c&&e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs(y,{onClick:je,size:"sm",disabled:T||!!v,className:"w-full sm:w-auto",children:[e.jsx(br,{className:"mr-2 h-4 w-4"}),T?"保存中...":"立即保存"]}),e.jsxs(y,{onClick:_e,size:"sm",variant:"outline",disabled:R,className:"w-full sm:w-auto",children:[e.jsx(pt,{className:`mr-2 h-4 w-4 ${R?"animate-spin":""}`}),"刷新"]}),n==="path"&&e.jsxs(y,{onClick:ie,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(es,{className:"mr-2 h-4 w-4"}),"清空路径"]})]}),c?e.jsxs(Kt,{defaultValue:"napcat",className:"w-full",children:[e.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:e.jsxs(Rt,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5",children:[e.jsxs($e,{value:"napcat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"Napcat 连接"}),e.jsx("span",{className:"sm:hidden",children:"Napcat"})]}),e.jsxs($e,{value:"maibot",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"麦麦连接"}),e.jsx("span",{className:"sm:hidden",children:"麦麦"})]}),e.jsxs($e,{value:"chat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"聊天控制"}),e.jsx("span",{className:"sm:hidden",children:"聊天"})]}),e.jsxs($e,{value:"voice",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"语音设置"}),e.jsx("span",{className:"sm:hidden",children:"语音"})]}),e.jsx($e,{value:"debug",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:"调试"})]})}),e.jsx(We,{value:"napcat",className:"space-y-4",children:e.jsx(Tw,{config:c,onChange:L=>{d(L),pe(L)}})}),e.jsx(We,{value:"maibot",className:"space-y-4",children:e.jsx(Ew,{config:c,onChange:L=>{d(L),pe(L)}})}),e.jsx(We,{value:"chat",className:"space-y-4",children:e.jsx(zw,{config:c,onChange:L=>{d(L),pe(L)}})}),e.jsx(We,{value:"voice",className:"space-y-4",children:e.jsx(Mw,{config:c,onChange:L=>{d(L),pe(L)}})}),e.jsx(We,{value:"debug",className:"space-y-4",children:e.jsx(Aw,{config:c,onChange:L=>{d(L),pe(L)}})})]}):e.jsx("div",{className:"rounded-lg border bg-card p-6 md:p-12",children:e.jsxs("div",{className:"text-center space-y-3 md:space-y-4",children:[e.jsx(Aa,{className:"h-12 w-12 md:h-16 md:w-16 mx-auto text-muted-foreground"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold",children:"尚未加载配置"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-2 px-4",children:n==="preset"?"请选择预设的部署方式":n==="upload"?"请上传现有配置文件,或使用默认配置开始编辑":"请指定配置文件路径并点击加载按钮"})]})]})}),e.jsx(ps,{open:U,onOpenChange:A,children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认切换模式"}),e.jsxs(us,{children:["切换模式将清空当前配置,确定要继续吗?",e.jsx("br",{}),e.jsx("span",{className:"text-destructive font-medium",children:"请确保已保存重要配置"})]})]}),e.jsxs(os,{children:[e.jsx(hs,{onClick:()=>{A(!1),B(null)},children:"取消"}),e.jsx(ms,{onClick:q,children:"确认切换"})]})]})}),e.jsx(ps,{open:Z,onOpenChange:H,children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认清空路径"}),e.jsxs(us,{children:["清空路径将清除当前配置,确定要继续吗?",e.jsx("br",{}),e.jsx("span",{className:"text-muted-foreground text-sm",children:"此操作不会删除配置文件,只是清除界面中的配置"})]})]}),e.jsxs(os,{children:[e.jsx(hs,{onClick:()=>H(!1),children:"取消"}),e.jsx(ms,{onClick:me,className:"bg-destructive hover:bg-destructive/90",children:"确认清空"})]})]})})]})})}function Tw({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"Napcat WebSocket 服务设置"}),e.jsxs("div",{className:"grid gap-3 md:gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"napcat-host",className:"text-sm md:text-base",children:"主机地址"}),e.jsx(ce,{id:"napcat-host",value:n.napcat_server.host,onChange:c=>r({...n,napcat_server:{...n.napcat_server,host:c.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的主机地址"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"napcat-port",className:"text-sm md:text-base",children:"端口"}),e.jsx(ce,{id:"napcat-port",type:"number",value:n.napcat_server.port||"",onChange:c=>r({...n,napcat_server:{...n.napcat_server,port:c.target.value?parseInt(c.target.value):0}}),placeholder:"8095",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的端口(留空使用默认值 8095)"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"napcat-token",className:"text-sm md:text-base",children:"访问令牌(Token)"}),e.jsx(ce,{id:"napcat-token",type:"password",value:n.napcat_server.token,onChange:c=>r({...n,napcat_server:{...n.napcat_server,token:c.target.value}}),placeholder:"留空表示无需令牌",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的访问令牌,若无则留空"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"napcat-heartbeat",className:"text-sm md:text-base",children:"心跳间隔(秒)"}),e.jsx(ce,{id:"napcat-heartbeat",type:"number",value:n.napcat_server.heartbeat_interval||"",onChange:c=>r({...n,napcat_server:{...n.napcat_server,heartbeat_interval:c.target.value?parseInt(c.target.value):0}}),placeholder:"30",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"与 Napcat 设置的心跳间隔保持一致(留空使用默认值 30)"})]})]})]})})}function Ew({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"麦麦 WebSocket 服务设置"}),e.jsxs("div",{className:"grid gap-3 md:gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"maibot-host",className:"text-sm md:text-base",children:"主机地址"}),e.jsx(ce,{id:"maibot-host",value:n.maibot_server.host,onChange:c=>r({...n,maibot_server:{...n.maibot_server,host:c.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 HOST 字段"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"maibot-port",className:"text-sm md:text-base",children:"端口"}),e.jsx(ce,{id:"maibot-port",type:"number",value:n.maibot_server.port||"",onChange:c=>r({...n,maibot_server:{...n.maibot_server,port:c.target.value?parseInt(c.target.value):0}}),placeholder:"8000",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 PORT 字段(留空使用默认值 8000)"})]})]})]})})}function zw({config:n,onChange:r}){const c=x=>{const f={...n};x==="group"?f.chat.group_list=[...f.chat.group_list,0]:x==="private"?f.chat.private_list=[...f.chat.private_list,0]:f.chat.ban_user_id=[...f.chat.ban_user_id,0],r(f)},d=(x,f)=>{const j={...n};x==="group"?j.chat.group_list=j.chat.group_list.filter((p,w)=>w!==f):x==="private"?j.chat.private_list=j.chat.private_list.filter((p,w)=>w!==f):j.chat.ban_user_id=j.chat.ban_user_id.filter((p,w)=>w!==f),r(j)},h=(x,f,j)=>{const p={...n};x==="group"?p.chat.group_list[f]=j:x==="private"?p.chat.private_list[f]=j:p.chat.ban_user_id[f]=j,r(p)};return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"聊天黑白名单功能"}),e.jsxs("div",{className:"grid gap-4 md:gap-6",children:[e.jsxs("div",{className:"space-y-3 md:space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-sm md:text-base",children:"群组名单类型"}),e.jsxs(He,{value:n.chat.group_list_type,onValueChange:x=>r({...n,chat:{...n.chat,group_list_type:x}}),children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),e.jsx(ne,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsx(b,{className:"text-sm md:text-base",children:"群组列表"}),e.jsxs(y,{onClick:()=>c("group"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Aa,{className:"mr-1 h-4 w-4"}),"添加群号"]})]}),n.chat.group_list.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{type:"number",value:x,onChange:j=>h("group",f,parseInt(j.target.value)||0),placeholder:"输入群号",className:"text-sm md:text-base"}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(y,{size:"icon",variant:"outline",children:e.jsx(es,{className:"h-4 w-4"})})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:["确定要删除群号 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>d("group",f),children:"删除"})]})]})]})]},f)),n.chat.group_list.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无群组"})]})]}),e.jsxs("div",{className:"space-y-3 md:space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-sm md:text-base",children:"私聊名单类型"}),e.jsxs(He,{value:n.chat.private_list_type,onValueChange:x=>r({...n,chat:{...n.chat,private_list_type:x}}),children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),e.jsx(ne,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsx(b,{className:"text-sm md:text-base",children:"私聊列表"}),e.jsxs(y,{onClick:()=>c("private"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Aa,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),n.chat.private_list.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{type:"number",value:x,onChange:j=>h("private",f,parseInt(j.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(y,{size:"icon",variant:"outline",children:e.jsx(es,{className:"h-4 w-4"})})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:["确定要删除用户 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>d("private",f),children:"删除"})]})]})]})]},f)),n.chat.private_list.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无用户"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-sm md:text-base",children:"全局禁止名单"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"名单中的用户无法进行任何聊天"})]}),e.jsxs(y,{onClick:()=>c("ban"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Aa,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),n.chat.ban_user_id.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{type:"number",value:x,onChange:j=>h("ban",f,parseInt(j.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),e.jsxs(ps,{children:[e.jsx(Qs,{asChild:!0,children:e.jsx(y,{size:"icon",variant:"outline",children:e.jsx(es,{className:"h-4 w-4"})})}),e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:["确定要从全局禁止名单中删除用户 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>d("ban",f),children:"删除"})]})]})]})]},f)),n.chat.ban_user_id.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无禁止用户"})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-sm md:text-base",children:"屏蔽QQ官方机器人"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否屏蔽来自QQ官方机器人的消息"})]}),e.jsx(Ve,{checked:n.chat.ban_qq_bot,onCheckedChange:x=>r({...n,chat:{...n.chat,ban_qq_bot:x}})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-sm md:text-base",children:"启用戳一戳功能"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否响应戳一戳消息"})]}),e.jsx(Ve,{checked:n.chat.enable_poke,onCheckedChange:x=>r({...n,chat:{...n.chat,enable_poke:x}})})]})]})]})})}function Mw({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"发送语音设置"}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-sm md:text-base",children:"使用 TTS 语音"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"请确保已配置 TTS 并有对应的适配器"})]}),e.jsx(Ve,{checked:n.voice.use_tts,onCheckedChange:c=>r({...n,voice:{use_tts:c}})})]})]})})}function Aw({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"调试设置"}),e.jsx("div",{className:"grid gap-3 md:gap-4",children:e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-sm md:text-base",children:"日志等级"}),e.jsxs(He,{value:n.debug.level,onValueChange:c=>r({...n,debug:{level:c}}),children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"DEBUG",children:"DEBUG(调试)"}),e.jsx(ne,{value:"INFO",children:"INFO(信息)"}),e.jsx(ne,{value:"WARNING",children:"WARNING(警告)"}),e.jsx(ne,{value:"ERROR",children:"ERROR(错误)"}),e.jsx(ne,{value:"CRITICAL",children:"CRITICAL(严重)"})]})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"设置适配器的日志输出等级"})]})})]})})}const Dw=["defaultChecked","defaultValue","suppressContentEditableWarning","suppressHydrationWarning","dangerouslySetInnerHTML","accessKey","className","contentEditable","contextMenu","dir","draggable","hidden","id","lang","placeholder","slot","spellCheck","style","tabIndex","title","translate","radioGroup","role","about","datatype","inlist","prefix","property","resource","typeof","vocab","autoCapitalize","autoCorrect","autoSave","color","itemProp","itemScope","itemType","itemID","itemRef","results","security","unselectable","inputMode","is","onCopy","onCopyCapture","onCut","onCutCapture","onPaste","onPasteCapture","onCompositionEnd","onCompositionEndCapture","onCompositionStart","onCompositionStartCapture","onCompositionUpdate","onCompositionUpdateCapture","onFocus","onFocusCapture","onBlur","onBlurCapture","onChange","onChangeCapture","onBeforeInput","onBeforeInputCapture","onInput","onInputCapture","onReset","onResetCapture","onSubmit","onSubmitCapture","onInvalid","onInvalidCapture","onLoad","onLoadCapture","onError","onErrorCapture","onKeyDown","onKeyDownCapture","onKeyPress","onKeyPressCapture","onKeyUp","onKeyUpCapture","onAbort","onAbortCapture","onCanPlay","onCanPlayCapture","onCanPlayThrough","onCanPlayThroughCapture","onDurationChange","onDurationChangeCapture","onEmptied","onEmptiedCapture","onEncrypted","onEncryptedCapture","onEnded","onEndedCapture","onLoadedData","onLoadedDataCapture","onLoadedMetadata","onLoadedMetadataCapture","onLoadStart","onLoadStartCapture","onPause","onPauseCapture","onPlay","onPlayCapture","onPlaying","onPlayingCapture","onProgress","onProgressCapture","onRateChange","onRateChangeCapture","onSeeked","onSeekedCapture","onSeeking","onSeekingCapture","onStalled","onStalledCapture","onSuspend","onSuspendCapture","onTimeUpdate","onTimeUpdateCapture","onVolumeChange","onVolumeChangeCapture","onWaiting","onWaitingCapture","onAuxClick","onAuxClickCapture","onClick","onClickCapture","onContextMenu","onContextMenuCapture","onDoubleClick","onDoubleClickCapture","onDrag","onDragCapture","onDragEnd","onDragEndCapture","onDragEnter","onDragEnterCapture","onDragExit","onDragExitCapture","onDragLeave","onDragLeaveCapture","onDragOver","onDragOverCapture","onDragStart","onDragStartCapture","onDrop","onDropCapture","onMouseDown","onMouseDownCapture","onMouseEnter","onMouseLeave","onMouseMove","onMouseMoveCapture","onMouseOut","onMouseOutCapture","onMouseOver","onMouseOverCapture","onMouseUp","onMouseUpCapture","onSelect","onSelectCapture","onTouchCancel","onTouchCancelCapture","onTouchEnd","onTouchEndCapture","onTouchMove","onTouchMoveCapture","onTouchStart","onTouchStartCapture","onPointerDown","onPointerDownCapture","onPointerMove","onPointerMoveCapture","onPointerUp","onPointerUpCapture","onPointerCancel","onPointerCancelCapture","onPointerEnter","onPointerEnterCapture","onPointerLeave","onPointerLeaveCapture","onPointerOver","onPointerOverCapture","onPointerOut","onPointerOutCapture","onGotPointerCapture","onGotPointerCaptureCapture","onLostPointerCapture","onLostPointerCaptureCapture","onScroll","onScrollCapture","onWheel","onWheelCapture","onAnimationStart","onAnimationStartCapture","onAnimationEnd","onAnimationEndCapture","onAnimationIteration","onAnimationIterationCapture","onTransitionEnd","onTransitionEndCapture"],Ow=/^(aria-|data-)/,Vg=n=>Object.fromEntries(Object.entries(n).filter(([r])=>Ow.test(r)||Dw.includes(r)));function Rw(n,r){const c=Vg(n);return Object.keys(n).some(d=>!Object.hasOwn(c,d)&&n[d]!==r[d])}class Lw extends u.Component{container;plugin;componentDidMount(){this.installPlugin()}componentDidUpdate(r){if(r.uppy!==this.props.uppy)this.uninstallPlugin(r),this.installPlugin();else if(Rw(this.props,r)){const{uppy:c,...d}={...this.props,target:this.container};this.plugin.setOptions(d)}}componentWillUnmount(){this.uninstallPlugin()}installPlugin(){const{uppy:r,...c}={id:"Dashboard",...this.props,inline:!0,target:this.container};r.use(yb,c),this.plugin=r.getPlugin(c.id)}uninstallPlugin(r=this.props){const{uppy:c}=r;c.removePlugin(this.plugin)}render(){return u.createElement("div",{className:"uppy-Container",ref:r=>{this.container=r},...Vg(this.props)})}}function Uw({content:n,className:r=""}){return e.jsx("div",{className:`prose prose-sm dark:prose-invert max-w-none ${r}`,children:e.jsx(bb,{remarkPlugins:[_b,Sb],rehypePlugins:[wb],components:{code({inline:c,className:d,children:h,...x}){return c?e.jsx("code",{className:"bg-muted px-1.5 py-0.5 rounded text-sm font-mono",...x,children:h}):e.jsx("code",{className:`${d} block bg-muted p-4 rounded-lg overflow-x-auto`,...x,children:h})},table({children:c,...d}){return e.jsx("div",{className:"overflow-x-auto",children:e.jsx("table",{className:"border-collapse border border-border",...d,children:c})})},th({children:c,...d}){return e.jsx("th",{className:"border border-border bg-muted px-4 py-2 text-left font-semibold",...d,children:c})},td({children:c,...d}){return e.jsx("td",{className:"border border-border px-4 py-2",...d,children:c})},a({children:c,...d}){return e.jsx("a",{className:"text-primary hover:underline",target:"_blank",rel:"noopener noreferrer",...d,children:c})},blockquote({children:c,...d}){return e.jsx("blockquote",{className:"border-l-4 border-primary pl-4 italic text-muted-foreground",...d,children:c})},h1({children:c,...d}){return e.jsx("h1",{className:"text-3xl font-bold mt-6 mb-4",...d,children:c})},h2({children:c,...d}){return e.jsx("h2",{className:"text-2xl font-bold mt-5 mb-3",...d,children:c})},h3({children:c,...d}){return e.jsx("h3",{className:"text-xl font-bold mt-4 mb-2",...d,children:c})},h4({children:c,...d}){return e.jsx("h4",{className:"text-lg font-semibold mt-3 mb-2",...d,children:c})},ul({children:c,...d}){return e.jsx("ul",{className:"list-disc list-inside space-y-1 my-2",...d,children:c})},ol({children:c,...d}){return e.jsx("ol",{className:"list-decimal list-inside space-y-1 my-2",...d,children:c})},p({children:c,...d}){return e.jsx("p",{className:"my-2 leading-relaxed",...d,children:c})},hr({...c}){return e.jsx("hr",{className:"my-4 border-border",...c})}},children:n})})}function Bw({children:n,className:r}){return e.jsx(Uw,{content:n,className:r})}const La="/api/webui/emoji";async function Hw(n){const r=new URLSearchParams;n.page&&r.append("page",n.page.toString()),n.page_size&&r.append("page_size",n.page_size.toString()),n.search&&r.append("search",n.search),n.is_registered!==void 0&&r.append("is_registered",n.is_registered.toString()),n.is_banned!==void 0&&r.append("is_banned",n.is_banned.toString()),n.format&&r.append("format",n.format),n.sort_by&&r.append("sort_by",n.sort_by),n.sort_order&&r.append("sort_order",n.sort_order);const c=await ke(`${La}/list?${r}`,{});if(!c.ok)throw new Error(`获取表情包列表失败: ${c.statusText}`);return c.json()}async function qw(n){const r=await ke(`${La}/${n}`,{});if(!r.ok)throw new Error(`获取表情包详情失败: ${r.statusText}`);return r.json()}async function Gw(n,r){const c=await ke(`${La}/${n}`,{method:"PATCH",body:JSON.stringify(r)});if(!c.ok)throw new Error(`更新表情包失败: ${c.statusText}`);return c.json()}async function Vw(n){const r=await ke(`${La}/${n}`,{method:"DELETE"});if(!r.ok)throw new Error(`删除表情包失败: ${r.statusText}`);return r.json()}async function Fw(){const n=await ke(`${La}/stats/summary`,{});if(!n.ok)throw new Error(`获取统计数据失败: ${n.statusText}`);return n.json()}async function $w(n){const r=await ke(`${La}/${n}/register`,{method:"POST"});if(!r.ok)throw new Error(`注册表情包失败: ${r.statusText}`);return r.json()}async function Qw(n){const r=await ke(`${La}/${n}/ban`,{method:"POST"});if(!r.ok)throw new Error(`封禁表情包失败: ${r.statusText}`);return r.json()}function Fg(n){return`${La}/${n}/thumbnail`}async function Yw(n){const r=await ke(`${La}/batch/delete`,{method:"POST",body:JSON.stringify({emoji_ids:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"批量删除失败")}return r.json()}function Xw(){return`${La}/upload`}function Kw(){const[n,r]=u.useState([]),[c,d]=u.useState(null),[h,x]=u.useState(!1),[f,j]=u.useState(1),[p,w]=u.useState(0),[v,k]=u.useState(20),[T,E]=u.useState("all"),[R,K]=u.useState("all"),[U,A]=u.useState("all"),[Z,H]=u.useState("usage_count"),[z,B]=u.useState("desc"),[X,S]=u.useState(null),[O,te]=u.useState(!1),[he,Ne]=u.useState(!1),[ye,pe]=u.useState(!1),[je,_e]=u.useState(new Set),[N,G]=u.useState(!1),[q,ie]=u.useState(""),[_,me]=u.useState("medium"),[xe,$]=u.useState(!1),{toast:de}=Hs(),ge=u.useCallback(async()=>{try{x(!0);const re=await Hw({page:f,page_size:v,is_registered:T==="all"?void 0:T==="registered",is_banned:R==="all"?void 0:R==="banned",format:U==="all"?void 0:U,sort_by:Z,sort_order:z});r(re.data),w(re.total)}catch(re){const be=re instanceof Error?re.message:"加载表情包列表失败";de({title:"错误",description:be,variant:"destructive"})}finally{x(!1)}},[f,v,T,R,U,Z,z,de]),le=async()=>{try{const re=await Fw();d(re.data)}catch(re){console.error("加载统计数据失败:",re)}};u.useEffect(()=>{ge()},[ge]),u.useEffect(()=>{le()},[]);const L=async re=>{try{const be=await qw(re.id);S(be.data),te(!0)}catch(be){const Xe=be instanceof Error?be.message:"加载详情失败";de({title:"错误",description:Xe,variant:"destructive"})}},F=re=>{S(re),Ne(!0)},D=re=>{S(re),pe(!0)},ee=async()=>{if(X)try{await Vw(X.id),de({title:"成功",description:"表情包已删除"}),pe(!1),S(null),ge(),le()}catch(re){const be=re instanceof Error?re.message:"删除失败";de({title:"错误",description:be,variant:"destructive"})}},we=async re=>{try{await $w(re.id),de({title:"成功",description:"表情包已注册"}),ge(),le()}catch(be){const Xe=be instanceof Error?be.message:"注册失败";de({title:"错误",description:Xe,variant:"destructive"})}},ze=async re=>{try{await Qw(re.id),de({title:"成功",description:"表情包已封禁"}),ge(),le()}catch(be){const Xe=be instanceof Error?be.message:"封禁失败";de({title:"错误",description:Xe,variant:"destructive"})}},ss=re=>{const be=new Set(je);be.has(re)?be.delete(re):be.add(re),_e(be)},Ze=async()=>{try{const re=await Yw(Array.from(je));de({title:"批量删除完成",description:re.message}),_e(new Set),G(!1),ge(),le()}catch(re){de({title:"批量删除失败",description:re instanceof Error?re.message:"批量删除失败",variant:"destructive"})}},Ls=()=>{const re=parseInt(q),be=Math.ceil(p/v);re>=1&&re<=be?(j(re),ie("")):de({title:"无效的页码",description:`请输入1-${be}之间的页码`,variant:"destructive"})},Gs=c?.formats?Object.keys(c.formats):[];return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsxs("div",{className:"mb-4 sm:mb-6 flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"表情包管理"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理麦麦的表情包资源"})]}),e.jsxs(y,{onClick:()=>$(!0),className:"gap-2",children:[e.jsx(hr,{className:"h-4 w-4"}),"上传表情包"]})]}),e.jsx(Pe,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[c&&e.jsxs("div",{className:"grid gap-4 grid-cols-2 lg:grid-cols-4",children:[e.jsx(Fe,{children:e.jsxs(gs,{className:"pb-2",children:[e.jsx(Zs,{children:"总数"}),e.jsx(js,{className:"text-2xl",children:c.total})]})}),e.jsx(Fe,{children:e.jsxs(gs,{className:"pb-2",children:[e.jsx(Zs,{children:"已注册"}),e.jsx(js,{className:"text-2xl text-green-600",children:c.registered})]})}),e.jsx(Fe,{children:e.jsxs(gs,{className:"pb-2",children:[e.jsx(Zs,{children:"已封禁"}),e.jsx(js,{className:"text-2xl text-red-600",children:c.banned})]})}),e.jsx(Fe,{children:e.jsxs(gs,{className:"pb-2",children:[e.jsx(Zs,{children:"未注册"}),e.jsx(js,{className:"text-2xl text-gray-600",children:c.unregistered})]})})]}),e.jsxs(Fe,{children:[e.jsx(gs,{children:e.jsxs(js,{className:"flex items-center gap-2",children:[e.jsx(Lu,{className:"h-5 w-5"}),"筛选和排序"]})}),e.jsxs(bs,{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"排序方式"}),e.jsxs(He,{value:`${Z}-${z}`,onValueChange:re=>{const[be,Xe]=re.split("-");H(be),B(Xe),j(1)},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"usage_count-desc",children:"使用次数 (多→少)"}),e.jsx(ne,{value:"usage_count-asc",children:"使用次数 (少→多)"}),e.jsx(ne,{value:"register_time-desc",children:"注册时间 (新→旧)"}),e.jsx(ne,{value:"register_time-asc",children:"注册时间 (旧→新)"}),e.jsx(ne,{value:"record_time-desc",children:"记录时间 (新→旧)"}),e.jsx(ne,{value:"record_time-asc",children:"记录时间 (旧→新)"}),e.jsx(ne,{value:"last_used_time-desc",children:"最后使用 (新→旧)"}),e.jsx(ne,{value:"last_used_time-asc",children:"最后使用 (旧→新)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"注册状态"}),e.jsxs(He,{value:T,onValueChange:re=>{E(re),j(1)},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部"}),e.jsx(ne,{value:"registered",children:"已注册"}),e.jsx(ne,{value:"unregistered",children:"未注册"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"封禁状态"}),e.jsxs(He,{value:R,onValueChange:re=>{K(re),j(1)},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部"}),e.jsx(ne,{value:"banned",children:"已封禁"}),e.jsx(ne,{value:"unbanned",children:"未封禁"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"格式"}),e.jsxs(He,{value:U,onValueChange:re=>{A(re),j(1)},children:[e.jsx(Re,{children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部"}),Gs.map(re=>e.jsxs(ne,{value:re,children:[re.toUpperCase()," (",c?.formats[re],")"]},re))]})]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 pt-4 border-t",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[je.size>0&&e.jsxs("span",{className:"text-sm text-muted-foreground",children:["已选择 ",je.size," 个表情包"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{className:"text-sm whitespace-nowrap",children:"卡片大小"}),e.jsxs(He,{value:_,onValueChange:re=>me(re),children:[e.jsx(Re,{className:"w-24",children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"small",children:"小"}),e.jsx(ne,{value:"medium",children:"中"}),e.jsx(ne,{value:"large",children:"大"})]})]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"emoji-page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(He,{value:v.toString(),onValueChange:re=>{k(parseInt(re)),j(1),_e(new Set)},children:[e.jsx(Re,{id:"emoji-page-size",className:"w-20",children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"20",children:"20"}),e.jsx(ne,{value:"40",children:"40"}),e.jsx(ne,{value:"60",children:"60"}),e.jsx(ne,{value:"100",children:"100"})]})]}),je.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(y,{variant:"outline",size:"sm",onClick:()=>_e(new Set),children:"取消选择"}),e.jsxs(y,{variant:"destructive",size:"sm",onClick:()=>G(!0),children:[e.jsx(es,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]}),e.jsx("div",{className:"flex justify-end pt-4 border-t",children:e.jsxs(y,{variant:"outline",size:"sm",onClick:ge,disabled:h,children:[e.jsx(pt,{className:`h-4 w-4 mr-2 ${h?"animate-spin":""}`}),"刷新"]})})]})]}),e.jsxs(Fe,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"表情包列表"}),e.jsxs(Zs,{children:["共 ",p," 个表情包,当前第 ",f," 页"]})]}),e.jsxs(bs,{children:[n.length===0?e.jsx("div",{className:"text-center py-12 text-muted-foreground",children:"暂无数据"}):e.jsx("div",{className:`grid gap-3 ${_==="small"?"grid-cols-3 sm:grid-cols-4 md:grid-cols-6 lg:grid-cols-8 xl:grid-cols-10":_==="medium"?"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 xl:grid-cols-8":"grid-cols-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5"}`,children:n.map(re=>e.jsxs("div",{className:`group relative rounded-lg border bg-card overflow-hidden hover:ring-2 hover:ring-primary transition-all cursor-pointer ${je.has(re.id)?"ring-2 ring-primary bg-primary/5":""}`,onClick:()=>ss(re.id),children:[e.jsx("div",{className:`absolute top-1 left-1 z-10 transition-opacity ${je.has(re.id)?"opacity-100":"opacity-0 group-hover:opacity-100"}`,children:e.jsx("div",{className:`w-5 h-5 rounded-full border-2 flex items-center justify-center ${je.has(re.id)?"bg-primary border-primary text-primary-foreground":"bg-background/80 border-muted-foreground/50"}`,children:je.has(re.id)&&e.jsx(pa,{className:"h-3 w-3"})})}),e.jsxs("div",{className:"absolute top-1 right-1 z-10 flex flex-col gap-0.5",children:[re.is_registered&&e.jsx(Ye,{variant:"default",className:"bg-green-600 text-[10px] px-1 py-0",children:"已注册"}),re.is_banned&&e.jsx(Ye,{variant:"destructive",className:"text-[10px] px-1 py-0",children:"已封禁"})]}),e.jsx("div",{className:`aspect-square bg-muted flex items-center justify-center overflow-hidden ${_==="small"?"p-1":_==="medium"?"p-2":"p-3"}`,children:e.jsx("img",{src:Fg(re.id),alt:"表情包",className:"w-full h-full object-contain",loading:"lazy",onError:be=>{const Xe=be.target;Xe.style.display="none";const Ue=Xe.parentElement;Ue&&(Ue.innerHTML='')}})}),e.jsxs("div",{className:`border-t bg-card ${_==="small"?"p-1":"p-2"}`,children:[e.jsxs("div",{className:"flex items-center justify-between gap-1 text-xs text-muted-foreground mb-1",children:[e.jsx(Ye,{variant:"outline",className:"text-[10px] px-1 py-0",children:re.format.toUpperCase()}),e.jsxs("span",{className:"font-mono",children:[re.usage_count,"次"]})]}),e.jsxs("div",{className:`flex gap-1 justify-center opacity-0 group-hover:opacity-100 transition-opacity ${_==="small"?"flex-wrap":""}`,children:[e.jsx(y,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:be=>{be.stopPropagation(),F(re)},title:"编辑",children:e.jsx(pr,{className:"h-3 w-3"})}),e.jsx(y,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:be=>{be.stopPropagation(),L(re)},title:"详情",children:e.jsx(Xt,{className:"h-3 w-3"})}),!re.is_registered&&e.jsx(y,{variant:"ghost",size:"icon",className:"h-6 w-6 text-green-600 hover:text-green-700",onClick:be=>{be.stopPropagation(),we(re)},title:"注册",children:e.jsx(pa,{className:"h-3 w-3"})}),!re.is_banned&&e.jsx(y,{variant:"ghost",size:"icon",className:"h-6 w-6 text-orange-600 hover:text-orange-700",onClick:be=>{be.stopPropagation(),ze(re)},title:"封禁",children:e.jsx(BN,{className:"h-3 w-3"})}),e.jsx(y,{variant:"ghost",size:"icon",className:"h-6 w-6 text-red-600 hover:text-red-700",onClick:be=>{be.stopPropagation(),D(re)},title:"删除",children:e.jsx(es,{className:"h-3 w-3"})})]})]})]},re.id))}),p>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["显示 ",(f-1)*v+1," 到"," ",Math.min(f*v,p)," 条,共 ",p," 条"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(wr,{className:"h-4 w-4"})}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>j(re=>Math.max(1,re-1)),disabled:f===1,children:[e.jsx(cn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:q,onChange:re=>ie(re.target.value),onKeyDown:re=>re.key==="Enter"&&Ls(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(p/v)}),e.jsx(y,{variant:"outline",size:"sm",onClick:Ls,disabled:!q,className:"h-8",children:"跳转"})]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>j(re=>re+1),disabled:f>=Math.ceil(p/v),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(il,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(y,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(p/v)),disabled:f>=Math.ceil(p/v),className:"hidden sm:flex",children:e.jsx(_r,{className:"h-4 w-4"})})]})]})]})]}),e.jsx(Zw,{emoji:X,open:O,onOpenChange:te}),e.jsx(Jw,{emoji:X,open:he,onOpenChange:Ne,onSuccess:()=>{ge(),le()}}),e.jsx(Iw,{open:xe,onOpenChange:$,onSuccess:()=>{ge(),le()}})]})}),e.jsx(ps,{open:N,onOpenChange:G,children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认批量删除"}),e.jsxs(us,{children:["你确定要删除选中的 ",je.size," 个表情包吗?此操作不可撤销。"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:Ze,children:"确认删除"})]})]})}),e.jsx(Rs,{open:ye,onOpenChange:pe,children:e.jsxs(zs,{children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"确认删除"}),e.jsx(Ys,{children:"确定要删除这个表情包吗?此操作无法撤销。"})]}),e.jsxs(Js,{children:[e.jsx(y,{variant:"outline",onClick:()=>pe(!1),children:"取消"}),e.jsx(y,{variant:"destructive",onClick:ee,children:"删除"})]})]})})]})}function Zw({emoji:n,open:r,onOpenChange:c}){if(!n)return null;const d=h=>h?new Date(h*1e3).toLocaleString("zh-CN"):"-";return e.jsx(Rs,{open:r,onOpenChange:c,children:e.jsxs(zs,{className:"max-w-2xl max-h-[90vh]",children:[e.jsx(Ms,{children:e.jsx(As,{children:"表情包详情"})}),e.jsx(Pe,{className:"max-h-[calc(90vh-8rem)] pr-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"flex justify-center",children:e.jsx("div",{className:"w-32 h-32 bg-muted rounded-lg flex items-center justify-center overflow-hidden",children:e.jsx("img",{src:Fg(n.id),alt:n.description||"表情包",className:"w-full h-full object-cover",onError:h=>{const x=h.target;x.style.display="none";const f=x.parentElement;f&&(f.innerHTML='')}})})}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"ID"}),e.jsx("div",{className:"mt-1 font-mono",children:n.id})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"格式"}),e.jsx("div",{className:"mt-1",children:e.jsx(Ye,{variant:"outline",children:n.format.toUpperCase()})})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"文件路径"}),e.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:n.full_path})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"哈希值"}),e.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:n.emoji_hash})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"描述"}),n.description?e.jsx("div",{className:"mt-1 rounded-lg border bg-muted/50 p-3",children:e.jsx(Bw,{className:"prose-sm",children:n.description})}):e.jsx("div",{className:"mt-1 text-sm text-muted-foreground",children:"-"})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"情绪"}),e.jsx("div",{className:"mt-1",children:n.emotion?e.jsx("span",{className:"text-sm",children:n.emotion}):e.jsx("span",{className:"text-sm text-muted-foreground",children:"-"})})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"状态"}),e.jsxs("div",{className:"mt-2 flex gap-2",children:[n.is_registered&&e.jsx(Ye,{variant:"default",className:"bg-green-600",children:"已注册"}),n.is_banned&&e.jsx(Ye,{variant:"destructive",children:"已封禁"}),!n.is_registered&&!n.is_banned&&e.jsx(Ye,{variant:"outline",children:"未注册"})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"使用次数"}),e.jsx("div",{className:"mt-1 font-mono text-lg",children:n.usage_count})]})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"记录时间"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.record_time)})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"注册时间"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.register_time)})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"最后使用"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.last_used_time)})]})]})})]})})}function Jw({emoji:n,open:r,onOpenChange:c,onSuccess:d}){const[h,x]=u.useState(""),[f,j]=u.useState(!1),[p,w]=u.useState(!1),[v,k]=u.useState(!1),{toast:T}=Hs();u.useEffect(()=>{n&&(x(n.emotion||""),j(n.is_registered),w(n.is_banned))},[n]);const E=async()=>{if(n)try{k(!0);const R=h.split(/[,,]/).map(K=>K.trim()).filter(Boolean).join(",");await Gw(n.id,{emotion:R||void 0,is_registered:f,is_banned:p}),T({title:"成功",description:"表情包信息已更新"}),c(!1),d()}catch(R){const K=R instanceof Error?R.message:"保存失败";T({title:"错误",description:K,variant:"destructive"})}finally{k(!1)}};return n?e.jsx(Rs,{open:r,onOpenChange:c,children:e.jsxs(zs,{className:"max-w-2xl",children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"编辑表情包"}),e.jsx(Ys,{children:"修改表情包的情绪和状态信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(b,{children:"情绪"}),e.jsx(Bs,{value:h,onChange:R=>x(R.target.value),placeholder:"输入情绪描述...",rows:2,className:"mt-1"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"输入情绪相关的文本描述"})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(yt,{id:"is_registered",checked:f,onCheckedChange:R=>{R===!0?(j(!0),w(!1)):j(!1)}}),e.jsx(b,{htmlFor:"is_registered",className:"cursor-pointer",children:"已注册"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(yt,{id:"is_banned",checked:p,onCheckedChange:R=>{R===!0?(w(!0),j(!1)):w(!1)}}),e.jsx(b,{htmlFor:"is_banned",className:"cursor-pointer",children:"已封禁"})]})]})]}),e.jsxs(Js,{children:[e.jsx(y,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(y,{onClick:E,disabled:v,children:v?"保存中...":"保存"})]})]})}):null}function Iw({open:n,onOpenChange:r,onSuccess:c}){const[d,h]=u.useState("select"),[x,f]=u.useState([]),[j,p]=u.useState(null),[w,v]=u.useState(!1),{toast:k}=Hs(),T=u.useMemo(()=>new Nb({id:"emoji-uploader",autoProceed:!1,restrictions:{maxFileSize:10485760,allowedFileTypes:["image/jpeg","image/png","image/gif","image/webp"],maxNumberOfFiles:20},locale:{pluralize:()=>0,strings:{addMoreFiles:"添加更多文件",addingMoreFiles:"正在添加更多文件",allowedFileTypes:"允许的文件类型:%{types}",cancel:"取消",closeModal:"关闭",complete:"完成",connectedToInternet:"已连接到互联网",copyLink:"复制链接",copyLinkToClipboardFallback:"复制下方链接",copyLinkToClipboardSuccess:"链接已复制到剪贴板",dashboardTitle:"选择文件",dashboardWindowTitle:"文件选择窗口(按 ESC 关闭)",done:"完成",dropHereOr:"拖放文件到这里或 %{browse}",dropHint:"将文件拖放到此处",dropPasteFiles:"将文件拖放到这里或 %{browseFiles}",dropPasteFolders:"将文件拖放到这里或 %{browseFolders}",dropPasteBoth:"将文件拖放到这里,%{browseFiles} 或 %{browseFolders}",dropPasteImportFiles:"将文件拖放到这里,%{browseFiles} 或从以下位置导入:",dropPasteImportFolders:"将文件拖放到这里,%{browseFolders} 或从以下位置导入:",dropPasteImportBoth:"将文件拖放到这里,%{browseFiles},%{browseFolders} 或从以下位置导入:",editFile:"编辑文件",editing:"正在编辑 %{file}",emptyFolderAdded:"未从空文件夹添加文件",exceedsSize:"%{file} 超过了最大允许大小 %{size}",failedToUpload:"上传 %{file} 失败",fileSource:"文件来源:%{name}",filesUploadedOfTotal:{0:"已上传 %{complete} / %{smart_count} 个文件",1:"已上传 %{complete} / %{smart_count} 个文件"},filter:"筛选",finishEditingFile:"完成编辑文件",folderAdded:{0:"已从 %{folder} 添加 %{smart_count} 个文件",1:"已从 %{folder} 添加 %{smart_count} 个文件"},generatingThumbnails:"正在生成缩略图...",import:"导入",importFiles:"从以下位置导入文件:",importFrom:"从 %{name} 导入",loading:"加载中...",logOut:"登出",myDevice:"我的设备",noFilesFound:"这里没有文件或文件夹",noInternetConnection:"无网络连接",openFolderNamed:"打开文件夹 %{name}",pause:"暂停",pauseUpload:"暂停上传",paused:"已暂停",poweredBy:"技术支持:%{uppy}",processingXFiles:{0:"正在处理 %{smart_count} 个文件",1:"正在处理 %{smart_count} 个文件"},recording:"录制中",removeFile:"移除文件",resetFilter:"重置筛选",resume:"继续",resumeUpload:"继续上传",retry:"重试",retryUpload:"重试上传",save:"保存",saveChanges:"保存更改",selectFileNamed:"选择文件 %{name}",selectX:{0:"选择 %{smart_count}",1:"选择 %{smart_count}"},smile:"笑一个!",startRecording:"开始录制视频",stopRecording:"停止录制视频",takePicture:"拍照",timedOut:"上传已停滞 %{seconds} 秒,正在中止。",upload:"下一步",uploadComplete:"上传完成",uploadFailed:"上传失败",uploadPaused:"上传已暂停",uploadXFiles:{0:"下一步(%{smart_count} 个文件)",1:"下一步(%{smart_count} 个文件)"},uploadXNewFiles:{0:"下一步(+%{smart_count} 个文件)",1:"下一步(+%{smart_count} 个文件)"},uploading:"正在上传",uploadingXFiles:{0:"正在上传 %{smart_count} 个文件",1:"正在上传 %{smart_count} 个文件"},xFilesSelected:{0:"已选择 %{smart_count} 个文件",1:"已选择 %{smart_count} 个文件"},xMoreFilesAdded:{0:"又添加了 %{smart_count} 个文件",1:"又添加了 %{smart_count} 个文件"},xTimeLeft:"剩余 %{time}",youCanOnlyUploadFileTypes:"您只能上传:%{types}",youCanOnlyUploadX:{0:"您只能上传 %{smart_count} 个文件",1:"您只能上传 %{smart_count} 个文件"},youHaveToAtLeastSelectX:{0:"您至少需要选择 %{smart_count} 个文件",1:"您至少需要选择 %{smart_count} 个文件"},browseFiles:"浏览文件",browseFolders:"浏览文件夹",cancelUpload:"取消上传",addMore:"添加更多",back:"返回",editFileWithFilename:"编辑文件 %{file}"}}}),[]);u.useEffect(()=>{const X=()=>{const S=T.getFiles();if(S.length===0)return;const O=S.map(te=>({id:te.id,name:te.name,previewUrl:te.preview||URL.createObjectURL(te.data),emotion:"",description:"",isRegistered:!0,file:te.data}));f(O),S.length===1?(p(O[0].id),h("edit-single")):h("edit-multiple")};return T.on("upload",X),()=>{T.off("upload",X)}},[T]),u.useEffect(()=>{n||(T.cancelAll(),h("select"),f([]),p(null),v(!1))},[n,T]);const E=u.useCallback((X,S)=>{f(O=>O.map(te=>te.id===X?{...te,...S}:te))},[]),R=u.useCallback(X=>X.emotion.trim().length>0,[]),K=u.useMemo(()=>x.length>0&&x.every(R),[x,R]),U=u.useMemo(()=>x.find(X=>X.id===j)||null,[x,j]),A=u.useCallback(()=>{(d==="edit-single"||d==="edit-multiple")&&(h("select"),f([]),p(null))},[d]),Z=u.useCallback(async()=>{if(!K){k({title:"请填写必填项",description:"每个表情包的情感标签都是必填的",variant:"destructive"});return}v(!0);const X=localStorage.getItem("access-token")||"";let S=0,O=0;try{for(const te of x){const he=new FormData;he.append("file",te.file),he.append("emotion",te.emotion),he.append("description",te.description),he.append("is_registered",te.isRegistered.toString());try{(await fetch(Xw(),{method:"POST",headers:{Authorization:`Bearer ${X}`},body:he})).ok?S++:O++}catch{O++}}O===0?(k({title:"上传成功",description:`成功上传 ${S} 个表情包`}),r(!1),c()):(k({title:"部分上传失败",description:`成功 ${S} 个,失败 ${O} 个`,variant:"destructive"}),c())}finally{v(!1)}},[K,x,k,r,c]),H=()=>e.jsx("div",{className:"space-y-4",children:e.jsx("div",{className:"border rounded-lg overflow-hidden w-full",children:e.jsx(Lw,{uppy:T,proudlyDisplayPoweredByUppy:!1,hideProgressDetails:!0,height:350,width:"100%",theme:"auto",note:"支持 JPG、PNG、GIF、WebP 格式,最多 20 个文件"})})}),z=()=>{const X=x[0];return X?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs(y,{variant:"ghost",size:"sm",onClick:A,children:[e.jsx(ti,{className:"h-4 w-4 mr-1"}),"返回"]}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"编辑表情包信息"})]}),e.jsxs("div",{className:"flex gap-6",children:[e.jsxs("div",{className:"flex-shrink-0",children:[e.jsx("div",{className:"w-32 h-32 rounded-lg border overflow-hidden bg-muted flex items-center justify-center",children:e.jsx("img",{src:X.previewUrl,alt:X.name,className:"max-w-full max-h-full object-contain"})}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2 text-center truncate max-w-32",children:X.name})]}),e.jsxs("div",{className:"flex-1 space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"single-emotion",children:["情感标签 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"single-emotion",value:X.emotion,onChange:S=>E(X.id,{emotion:S.target.value}),placeholder:"多个标签用逗号分隔,如:开心,高兴",className:X.emotion.trim()?"":"border-destructive"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"用于情感匹配,多个标签用逗号分隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"single-description",children:"描述"}),e.jsx(ce,{id:"single-description",value:X.description,onChange:S=>E(X.id,{description:S.target.value}),placeholder:"输入表情包描述..."})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(yt,{id:"single-is-registered",checked:X.isRegistered,onCheckedChange:S=>E(X.id,{isRegistered:S===!0})}),e.jsx(b,{htmlFor:"single-is-registered",className:"cursor-pointer",children:"上传后立即注册(可被麦麦使用)"})]})]})]}),e.jsx(Js,{children:e.jsx(y,{onClick:Z,disabled:!K||w,children:w?"上传中...":"上传"})})]}):null},B=()=>{const X=x.filter(R).length,S=x.length;return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs(y,{variant:"ghost",size:"sm",onClick:A,children:[e.jsx(ti,{className:"h-4 w-4 mr-1"}),"返回"]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["编辑表情包信息(",X,"/",S," 已完成)"]})]}),e.jsx(Ye,{variant:K?"default":"secondary",children:K?e.jsxs(e.Fragment,{children:[e.jsx(fa,{className:"h-3 w-3 mr-1"}),"全部完成"]}):e.jsxs(e.Fragment,{children:[e.jsx(li,{className:"h-3 w-3 mr-1"}),"未完成"]})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(Pe,{className:"h-[350px] pr-2",children:e.jsx("div",{className:"space-y-2",children:x.map(O=>{const te=R(O),he=j===O.id;return e.jsxs("div",{onClick:()=>p(O.id),className:` - flex items-center gap-3 p-3 rounded-lg border-2 cursor-pointer transition-all - ${he?"ring-2 ring-primary":""} - ${te?"border-green-500 bg-green-50 dark:bg-green-950/20":"border-border hover:border-muted-foreground/50"} - `,children:[e.jsx("div",{className:"w-12 h-12 rounded border overflow-hidden bg-muted flex-shrink-0 flex items-center justify-center",children:e.jsx("img",{src:O.previewUrl,alt:O.name,className:"max-w-full max-h-full object-contain"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm font-medium truncate",children:O.name}),e.jsx("p",{className:"text-xs text-muted-foreground truncate",children:O.emotion||"未填写情感标签"})]}),te?e.jsx(pa,{className:"h-5 w-5 text-green-500 flex-shrink-0"}):e.jsx("div",{className:"h-5 w-5 rounded-full border-2 border-muted-foreground/30 flex-shrink-0"})]},O.id)})})}),e.jsx("div",{className:"border rounded-lg p-4",children:U?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-16 h-16 rounded border overflow-hidden bg-muted flex items-center justify-center",children:e.jsx("img",{src:U.previewUrl,alt:U.name,className:"max-w-full max-h-full object-contain"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium truncate",children:U.name}),R(U)&&e.jsxs(Ye,{variant:"outline",className:"text-green-600 border-green-600",children:[e.jsx(fa,{className:"h-3 w-3 mr-1"}),"已完成"]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"multi-emotion",children:["情感标签 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"multi-emotion",value:U.emotion,onChange:O=>E(U.id,{emotion:O.target.value}),placeholder:"多个标签用逗号分隔,如:开心,高兴",className:U.emotion.trim()?"":"border-destructive"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"multi-description",children:"描述"}),e.jsx(ce,{id:"multi-description",value:U.description,onChange:O=>E(U.id,{description:O.target.value}),placeholder:"输入表情包描述..."})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(yt,{id:"multi-is-registered",checked:U.isRegistered,onCheckedChange:O=>E(U.id,{isRegistered:O===!0})}),e.jsx(b,{htmlFor:"multi-is-registered",className:"cursor-pointer text-sm",children:"上传后立即注册"})]})]}):e.jsx("div",{className:"h-full flex items-center justify-center text-muted-foreground",children:e.jsxs("div",{className:"text-center",children:[e.jsx(HN,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),e.jsx("p",{children:"点击左侧卡片编辑"})]})})})]}),e.jsx(Js,{children:e.jsx(y,{onClick:Z,disabled:!K||w,children:w?"上传中...":`上传全部 (${S})`})})]})};return e.jsx(Rs,{open:n,onOpenChange:r,children:e.jsxs(zs,{className:"max-w-3xl max-h-[90vh] overflow-hidden",children:[e.jsxs(Ms,{children:[e.jsxs(As,{className:"flex items-center gap-2",children:[e.jsx(hr,{className:"h-5 w-5"}),d==="select"&&"上传表情包 - 选择文件",d==="edit-single"&&"上传表情包 - 填写信息",d==="edit-multiple"&&"上传表情包 - 批量编辑"]}),e.jsxs(Ys,{children:[d==="select"&&"支持 JPG、PNG、GIF、WebP 格式,单个文件最大 10MB,可同时上传多个文件",d==="edit-single"&&"请填写表情包的情感标签(必填)和描述",d==="edit-multiple"&&"点击左侧卡片编辑每个表情包的信息,情感标签为必填项"]})]}),e.jsxs("div",{className:"overflow-y-auto pr-1",children:[d==="select"&&H(),d==="edit-single"&&z(),d==="edit-multiple"&&B()]})]})})}const Bl="/api/webui/expression";async function Pw(){const n=await ke(`${Bl}/chats`,{});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取聊天列表失败")}return n.json()}async function Ww(n){const r=new URLSearchParams;n.page&&r.append("page",n.page.toString()),n.page_size&&r.append("page_size",n.page_size.toString()),n.search&&r.append("search",n.search),n.chat_id&&r.append("chat_id",n.chat_id);const c=await ke(`${Bl}/list?${r}`,{});if(!c.ok){const d=await c.json();throw new Error(d.detail||"获取表达方式列表失败")}return c.json()}async function e1(n){const r=await ke(`${Bl}/${n}`,{});if(!r.ok){const c=await r.json();throw new Error(c.detail||"获取表达方式详情失败")}return r.json()}async function s1(n){const r=await ke(`${Bl}/`,{method:"POST",body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"创建表达方式失败")}return r.json()}async function t1(n,r){const c=await ke(`${Bl}/${n}`,{method:"PATCH",body:JSON.stringify(r)});if(!c.ok){const d=await c.json();throw new Error(d.detail||"更新表达方式失败")}return c.json()}async function a1(n){const r=await ke(`${Bl}/${n}`,{method:"DELETE"});if(!r.ok){const c=await r.json();throw new Error(c.detail||"删除表达方式失败")}return r.json()}async function l1(n){const r=await ke(`${Bl}/batch/delete`,{method:"POST",body:JSON.stringify({ids:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"批量删除表达方式失败")}return r.json()}async function n1(){const n=await ke(`${Bl}/stats/summary`,{});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取统计数据失败")}return n.json()}function i1(){const[n,r]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(0),[f,j]=u.useState(1),[p,w]=u.useState(20),[v,k]=u.useState(""),[T,E]=u.useState(null),[R,K]=u.useState(!1),[U,A]=u.useState(!1),[Z,H]=u.useState(!1),[z,B]=u.useState(null),[X,S]=u.useState(new Set),[O,te]=u.useState(!1),[he,Ne]=u.useState(""),[ye,pe]=u.useState({total:0,recent_7days:0,chat_count:0,top_chats:{}}),[je,_e]=u.useState([]),[N,G]=u.useState(new Map),{toast:q}=Hs(),ie=async()=>{try{d(!0);const ee=await Ww({page:f,page_size:p,search:v||void 0});r(ee.data),x(ee.total)}catch(ee){q({title:"加载失败",description:ee instanceof Error?ee.message:"无法加载表达方式",variant:"destructive"})}finally{d(!1)}},_=async()=>{try{const ee=await n1();ee?.data&&pe(ee.data)}catch(ee){console.error("加载统计数据失败:",ee)}},me=async()=>{try{const ee=await Pw();if(ee?.data){_e(ee.data);const we=new Map;ee.data.forEach(ze=>{we.set(ze.chat_id,ze.chat_name)}),G(we)}}catch(ee){console.error("加载聊天列表失败:",ee)}},xe=ee=>N.get(ee)||ee;u.useEffect(()=>{ie(),_(),me()},[f,p,v]);const $=async ee=>{try{const we=await e1(ee.id);E(we.data),K(!0)}catch(we){q({title:"加载详情失败",description:we instanceof Error?we.message:"无法加载表达方式详情",variant:"destructive"})}},de=ee=>{E(ee),A(!0)},ge=async ee=>{try{await a1(ee.id),q({title:"删除成功",description:`已删除表达方式: ${ee.situation}`}),B(null),ie(),_()}catch(we){q({title:"删除失败",description:we instanceof Error?we.message:"无法删除表达方式",variant:"destructive"})}},le=ee=>{const we=new Set(X);we.has(ee)?we.delete(ee):we.add(ee),S(we)},L=()=>{X.size===n.length&&n.length>0?S(new Set):S(new Set(n.map(ee=>ee.id)))},F=async()=>{try{await l1(Array.from(X)),q({title:"批量删除成功",description:`已删除 ${X.size} 个表达方式`}),S(new Set),te(!1),ie(),_()}catch(ee){q({title:"批量删除失败",description:ee instanceof Error?ee.message:"无法批量删除表达方式",variant:"destructive"})}},D=()=>{const ee=parseInt(he),we=Math.ceil(h/p);ee>=1&&ee<=we?(j(ee),Ne("")):q({title:"无效的页码",description:`请输入1-${we}之间的页码`,variant:"destructive"})};return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsx("div",{className:"mb-4 sm:mb-6",children:e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[e.jsx(si,{className:"h-8 w-8",strokeWidth:2}),"表达方式管理"]}),e.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦的表达方式和话术模板"})]}),e.jsxs(y,{onClick:()=>H(!0),className:"gap-2",children:[e.jsx(ot,{className:"h-4 w-4"}),"新增表达方式"]})]})}),e.jsx(Pe,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"总数量"}),e.jsx("div",{className:"text-2xl font-bold mt-1",children:ye.total})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"近7天新增"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:ye.recent_7days})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"关联聊天数"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-blue-600",children:ye.chat_count})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx(b,{htmlFor:"search",children:"搜索"}),e.jsx("div",{className:"flex flex-col sm:flex-row gap-2 mt-1.5",children:e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(_t,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{id:"search",placeholder:"搜索情境、风格或上下文...",value:v,onChange:ee=>k(ee.target.value),className:"pl-9"})]})}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[e.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:X.size>0&&e.jsxs("span",{children:["已选择 ",X.size," 个表达方式"]})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(He,{value:p.toString(),onValueChange:ee=>{w(parseInt(ee)),j(1),S(new Set)},children:[e.jsx(Re,{id:"page-size",className:"w-20",children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"10",children:"10"}),e.jsx(ne,{value:"20",children:"20"}),e.jsx(ne,{value:"50",children:"50"}),e.jsx(ne,{value:"100",children:"100"})]})]}),X.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(y,{variant:"outline",size:"sm",onClick:()=>S(new Set),children:"取消选择"}),e.jsxs(y,{variant:"destructive",size:"sm",onClick:()=>te(!0),children:[e.jsx(es,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card",children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(ii,{children:[e.jsx(ri,{children:e.jsxs(gt,{children:[e.jsx(ls,{className:"w-12",children:e.jsx(yt,{checked:X.size===n.length&&n.length>0,onCheckedChange:L})}),e.jsx(ls,{children:"情境"}),e.jsx(ls,{children:"风格"}),e.jsx(ls,{children:"聊天"}),e.jsx(ls,{className:"text-right",children:"操作"})]})}),e.jsx(ci,{children:c?e.jsx(gt,{children:e.jsx(Qe,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):n.length===0?e.jsx(gt,{children:e.jsx(Qe,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):n.map(ee=>e.jsxs(gt,{children:[e.jsx(Qe,{children:e.jsx(yt,{checked:X.has(ee.id),onCheckedChange:()=>le(ee.id)})}),e.jsx(Qe,{className:"font-medium max-w-xs truncate",children:ee.situation}),e.jsx(Qe,{className:"max-w-xs truncate",children:ee.style}),e.jsx(Qe,{className:"max-w-[200px] truncate",title:xe(ee.chat_id),style:{wordBreak:"keep-all"},children:e.jsx("span",{className:"whitespace-nowrap overflow-hidden text-ellipsis block",children:xe(ee.chat_id)})}),e.jsx(Qe,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(y,{variant:"default",size:"sm",onClick:()=>de(ee),children:[e.jsx(pr,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsx(y,{variant:"outline",size:"icon",className:"h-8 w-8",onClick:()=>$(ee),title:"查看详情",children:e.jsx(Zt,{className:"h-4 w-4"})}),e.jsxs(y,{size:"sm",onClick:()=>B(ee),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(es,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},ee.id))})]})}),e.jsx("div",{className:"md:hidden space-y-3 p-4",children:c?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):n.length===0?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):n.map(ee=>e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(yt,{checked:X.has(ee.id),onCheckedChange:()=>le(ee.id),className:"mt-1"}),e.jsxs("div",{className:"min-w-0 flex-1 overflow-hidden space-y-2",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"情境"}),e.jsx("h3",{className:"font-semibold text-sm line-clamp-2 w-full break-all",title:ee.situation,children:ee.situation})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"风格"}),e.jsx("p",{className:"text-sm line-clamp-2 w-full break-all",title:ee.style,children:ee.style})]})]})]}),e.jsxs("div",{className:"text-sm",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"聊天"}),e.jsx("p",{className:"text-sm truncate",title:xe(ee.chat_id),style:{wordBreak:"keep-all"},children:xe(ee.chat_id)})]}),e.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>de(ee),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(pr,{className:"h-3 w-3 mr-1"}),"编辑"]}),e.jsx(y,{variant:"outline",size:"sm",onClick:()=>$(ee),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:e.jsx(Zt,{className:"h-3 w-3"})}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>B(ee),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[e.jsx(es,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},ee.id))}),h>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",h," 条记录,第 ",f," / ",Math.ceil(h/p)," 页"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(wr,{className:"h-4 w-4"})}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>j(f-1),disabled:f===1,children:[e.jsx(cn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:he,onChange:ee=>Ne(ee.target.value),onKeyDown:ee=>ee.key==="Enter"&&D(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(h/p)}),e.jsx(y,{variant:"outline",size:"sm",onClick:D,disabled:!he,className:"h-8",children:"跳转"})]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>j(f+1),disabled:f>=Math.ceil(h/p),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(il,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(y,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(h/p)),disabled:f>=Math.ceil(h/p),className:"hidden sm:flex",children:e.jsx(_r,{className:"h-4 w-4"})})]})]})]})]})}),e.jsx(r1,{expression:T,open:R,onOpenChange:K,chatNameMap:N}),e.jsx(c1,{open:Z,onOpenChange:H,chatList:je,onSuccess:()=>{ie(),_(),H(!1)}}),e.jsx(o1,{expression:T,open:U,onOpenChange:A,chatList:je,onSuccess:()=>{ie(),_(),A(!1)}}),e.jsx(ps,{open:!!z,onOpenChange:()=>B(null),children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:['确定要删除表达方式 "',z?.situation,'" 吗? 此操作不可撤销。']})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>z&&ge(z),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),e.jsx(d1,{open:O,onOpenChange:te,onConfirm:F,count:X.size})]})}function r1({expression:n,open:r,onOpenChange:c,chatNameMap:d}){if(!n)return null;const h=f=>f?new Date(f*1e3).toLocaleString("zh-CN"):"-",x=f=>d.get(f)||f;return e.jsx(Rs,{open:r,onOpenChange:c,children:e.jsxs(zs,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"表达方式详情"}),e.jsx(Ys,{children:"查看表达方式的完整信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(nr,{label:"情境",value:n.situation}),e.jsx(nr,{label:"风格",value:n.style}),e.jsx(nr,{label:"聊天",value:x(n.chat_id)}),e.jsx(nr,{icon:Uu,label:"记录ID",value:n.id.toString(),mono:!0})]}),e.jsx("div",{className:"grid grid-cols-2 gap-4",children:e.jsx(nr,{icon:Wn,label:"创建时间",value:h(n.create_date)})})]}),e.jsx(Js,{children:e.jsx(y,{onClick:()=>c(!1),children:"关闭"})})]})})}function nr({icon:n,label:r,value:c,mono:d=!1}){return e.jsxs("div",{className:"space-y-1",children:[e.jsxs(b,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[n&&e.jsx(n,{className:"h-3 w-3"}),r]}),e.jsx("div",{className:Q("text-sm",d&&"font-mono",!c&&"text-muted-foreground"),children:c||"-"})]})}function c1({open:n,onOpenChange:r,chatList:c,onSuccess:d}){const[h,x]=u.useState({situation:"",style:"",chat_id:""}),[f,j]=u.useState(!1),{toast:p}=Hs(),w=async()=>{if(!h.situation||!h.style||!h.chat_id){p({title:"验证失败",description:"请填写必填字段:情境、风格和聊天",variant:"destructive"});return}try{j(!0),await s1(h),p({title:"创建成功",description:"表达方式已创建"}),x({situation:"",style:"",chat_id:""}),d()}catch(v){p({title:"创建失败",description:v instanceof Error?v.message:"无法创建表达方式",variant:"destructive"})}finally{j(!1)}};return e.jsx(Rs,{open:n,onOpenChange:r,children:e.jsxs(zs,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"新增表达方式"}),e.jsx(Ys,{children:"创建新的表达方式记录"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"situation",children:["情境 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"situation",value:h.situation,onChange:v=>x({...h,situation:v.target.value}),placeholder:"描述使用场景"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"style",children:["风格 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"style",value:h.style,onChange:v=>x({...h,style:v.target.value}),placeholder:"描述表达风格"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"chat_id",children:["聊天 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsxs(He,{value:h.chat_id,onValueChange:v=>x({...h,chat_id:v}),children:[e.jsx(Re,{children:e.jsx(qe,{placeholder:"选择关联的聊天"})}),e.jsx(Le,{children:c.map(v=>e.jsx(ne,{value:v.chat_id,children:e.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[v.chat_name,v.is_group&&e.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},v.chat_id))})]})]})]}),e.jsxs(Js,{children:[e.jsx(y,{variant:"outline",onClick:()=>r(!1),children:"取消"}),e.jsx(y,{onClick:w,disabled:f,children:f?"创建中...":"创建"})]})]})})}function o1({expression:n,open:r,onOpenChange:c,chatList:d,onSuccess:h}){const[x,f]=u.useState({}),[j,p]=u.useState(!1),{toast:w}=Hs();u.useEffect(()=>{n&&f({situation:n.situation,style:n.style,chat_id:n.chat_id})},[n]);const v=async()=>{if(n)try{p(!0),await t1(n.id,x),w({title:"保存成功",description:"表达方式已更新"}),h()}catch(k){w({title:"保存失败",description:k instanceof Error?k.message:"无法更新表达方式",variant:"destructive"})}finally{p(!1)}};return n?e.jsx(Rs,{open:r,onOpenChange:c,children:e.jsxs(zs,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"编辑表达方式"}),e.jsx(Ys,{children:"修改表达方式的信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit_situation",children:"情境"}),e.jsx(ce,{id:"edit_situation",value:x.situation||"",onChange:k=>f({...x,situation:k.target.value}),placeholder:"描述使用场景"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit_style",children:"风格"}),e.jsx(ce,{id:"edit_style",value:x.style||"",onChange:k=>f({...x,style:k.target.value}),placeholder:"描述表达风格"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit_chat_id",children:"聊天"}),e.jsxs(He,{value:x.chat_id||"",onValueChange:k=>f({...x,chat_id:k}),children:[e.jsx(Re,{children:e.jsx(qe,{placeholder:"选择关联的聊天"})}),e.jsx(Le,{children:d.map(k=>e.jsx(ne,{value:k.chat_id,children:e.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[k.chat_name,k.is_group&&e.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},k.chat_id))})]})]})]}),e.jsxs(Js,{children:[e.jsx(y,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(y,{onClick:v,disabled:j,children:j?"保存中...":"保存"})]})]})}):null}function d1({open:n,onOpenChange:r,onConfirm:c,count:d}){return e.jsx(ps,{open:n,onOpenChange:r,children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认批量删除"}),e.jsxs(us,{children:["您即将删除 ",d," 个表达方式,此操作无法撤销。确定要继续吗?"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:c,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认删除"})]})]})})}const oi="/api/webui/person";async function u1(n){const r=new URLSearchParams;n.page&&r.append("page",n.page.toString()),n.page_size&&r.append("page_size",n.page_size.toString()),n.search&&r.append("search",n.search),n.is_known!==void 0&&r.append("is_known",n.is_known.toString()),n.platform&&r.append("platform",n.platform);const c=await ke(`${oi}/list?${r}`,{headers:Ts()});if(!c.ok){const d=await c.json();throw new Error(d.detail||"获取人物列表失败")}return c.json()}async function m1(n){const r=await ke(`${oi}/${n}`,{headers:Ts()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"获取人物详情失败")}return r.json()}async function h1(n,r){const c=await ke(`${oi}/${n}`,{method:"PATCH",headers:Ts(),body:JSON.stringify(r)});if(!c.ok){const d=await c.json();throw new Error(d.detail||"更新人物信息失败")}return c.json()}async function x1(n){const r=await ke(`${oi}/${n}`,{method:"DELETE",headers:Ts()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"删除人物信息失败")}return r.json()}async function f1(){const n=await ke(`${oi}/stats/summary`,{headers:Ts()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取统计数据失败")}return n.json()}async function p1(n){const r=await ke(`${oi}/batch/delete`,{method:"POST",headers:Ts(),body:JSON.stringify({person_ids:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"批量删除失败")}return r.json()}function g1(){const[n,r]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(0),[f,j]=u.useState(1),[p,w]=u.useState(20),[v,k]=u.useState(""),[T,E]=u.useState(void 0),[R,K]=u.useState(void 0),[U,A]=u.useState(null),[Z,H]=u.useState(!1),[z,B]=u.useState(!1),[X,S]=u.useState(null),[O,te]=u.useState({total:0,known:0,unknown:0,platforms:{}}),[he,Ne]=u.useState(new Set),[ye,pe]=u.useState(!1),[je,_e]=u.useState(""),{toast:N}=Hs(),G=async()=>{try{d(!0);const D=await u1({page:f,page_size:p,search:v||void 0,is_known:T,platform:R});r(D.data),x(D.total)}catch(D){N({title:"加载失败",description:D instanceof Error?D.message:"无法加载人物信息",variant:"destructive"})}finally{d(!1)}},q=async()=>{try{const D=await f1();D?.data&&te(D.data)}catch(D){console.error("加载统计数据失败:",D)}};u.useEffect(()=>{G(),q()},[f,p,v,T,R]);const ie=async D=>{try{const ee=await m1(D.person_id);A(ee.data),H(!0)}catch(ee){N({title:"加载详情失败",description:ee instanceof Error?ee.message:"无法加载人物详情",variant:"destructive"})}},_=D=>{A(D),B(!0)},me=async D=>{try{await x1(D.person_id),N({title:"删除成功",description:`已删除人物信息: ${D.person_name||D.nickname||D.user_id}`}),S(null),G(),q()}catch(ee){N({title:"删除失败",description:ee instanceof Error?ee.message:"无法删除人物信息",variant:"destructive"})}},xe=u.useMemo(()=>Object.keys(O.platforms),[O.platforms]),$=D=>{const ee=new Set(he);ee.has(D)?ee.delete(D):ee.add(D),Ne(ee)},de=()=>{he.size===n.length&&n.length>0?Ne(new Set):Ne(new Set(n.map(D=>D.person_id)))},ge=()=>{if(he.size===0){N({title:"未选择任何人物",description:"请先选择要删除的人物",variant:"destructive"});return}pe(!0)},le=async()=>{try{const D=await p1(Array.from(he));N({title:"批量删除完成",description:D.message}),Ne(new Set),pe(!1),G(),q()}catch(D){N({title:"批量删除失败",description:D instanceof Error?D.message:"批量删除失败",variant:"destructive"})}},L=()=>{const D=parseInt(je),ee=Math.ceil(h/p);D>=1&&D<=ee?(j(D),_e("")):N({title:"无效的页码",description:`请输入1-${ee}之间的页码`,variant:"destructive"})},F=D=>D?new Date(D*1e3).toLocaleString("zh-CN"):"-";return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsx("div",{className:"mb-4 sm:mb-6",children:e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[e.jsx(qN,{className:"h-8 w-8",strokeWidth:2}),"人物信息管理"]}),e.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦认识的所有人物信息"})]})})}),e.jsx(Pe,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"总人数"}),e.jsx("div",{className:"text-2xl font-bold mt-1",children:O.total})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"已认识"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:O.known})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"未认识"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-muted-foreground",children:O.unknown})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-4 gap-4",children:[e.jsxs("div",{className:"sm:col-span-2",children:[e.jsx(b,{htmlFor:"search",children:"搜索"}),e.jsxs("div",{className:"relative mt-1.5",children:[e.jsx(_t,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{id:"search",placeholder:"搜索名称、昵称或用户ID...",value:v,onChange:D=>k(D.target.value),className:"pl-9"})]})]}),e.jsxs("div",{children:[e.jsx(b,{htmlFor:"filter-known",children:"认识状态"}),e.jsxs(He,{value:T===void 0?"all":T.toString(),onValueChange:D=>{E(D==="all"?void 0:D==="true"),j(1)},children:[e.jsx(Re,{id:"filter-known",className:"mt-1.5",children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部"}),e.jsx(ne,{value:"true",children:"已认识"}),e.jsx(ne,{value:"false",children:"未认识"})]})]})]}),e.jsxs("div",{children:[e.jsx(b,{htmlFor:"filter-platform",children:"平台"}),e.jsxs(He,{value:R||"all",onValueChange:D=>{K(D==="all"?void 0:D),j(1)},children:[e.jsx(Re,{id:"filter-platform",className:"mt-1.5",children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部平台"}),xe.map(D=>e.jsxs(ne,{value:D,children:[D," (",O.platforms[D],")"]},D))]})]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[e.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:he.size>0&&e.jsxs("span",{children:["已选择 ",he.size," 个人物"]})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(He,{value:p.toString(),onValueChange:D=>{w(parseInt(D)),j(1),Ne(new Set)},children:[e.jsx(Re,{id:"page-size",className:"w-20",children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"10",children:"10"}),e.jsx(ne,{value:"20",children:"20"}),e.jsx(ne,{value:"50",children:"50"}),e.jsx(ne,{value:"100",children:"100"})]})]}),he.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(y,{variant:"outline",size:"sm",onClick:()=>Ne(new Set),children:"取消选择"}),e.jsxs(y,{variant:"destructive",size:"sm",onClick:ge,children:[e.jsx(es,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card",children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(ii,{children:[e.jsx(ri,{children:e.jsxs(gt,{children:[e.jsx(ls,{className:"w-12",children:e.jsx(yt,{checked:n.length>0&&he.size===n.length,onCheckedChange:de,"aria-label":"全选"})}),e.jsx(ls,{children:"状态"}),e.jsx(ls,{children:"名称"}),e.jsx(ls,{children:"昵称"}),e.jsx(ls,{children:"平台"}),e.jsx(ls,{children:"用户ID"}),e.jsx(ls,{children:"最后更新"}),e.jsx(ls,{className:"text-right",children:"操作"})]})}),e.jsx(ci,{children:c?e.jsx(gt,{children:e.jsx(Qe,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):n.length===0?e.jsx(gt,{children:e.jsx(Qe,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):n.map(D=>e.jsxs(gt,{children:[e.jsx(Qe,{children:e.jsx(yt,{checked:he.has(D.person_id),onCheckedChange:()=>$(D.person_id),"aria-label":`选择 ${D.person_name||D.nickname||D.user_id}`})}),e.jsx(Qe,{children:e.jsx("div",{className:Q("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium",D.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:D.is_known?"已认识":"未认识"})}),e.jsx(Qe,{className:"font-medium",children:D.person_name||e.jsx("span",{className:"text-muted-foreground",children:"-"})}),e.jsx(Qe,{children:D.nickname||"-"}),e.jsx(Qe,{children:D.platform}),e.jsx(Qe,{className:"font-mono text-sm",children:D.user_id}),e.jsx(Qe,{className:"text-sm text-muted-foreground",children:F(D.last_know)}),e.jsx(Qe,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(y,{variant:"default",size:"sm",onClick:()=>ie(D),children:[e.jsx(Zt,{className:"h-4 w-4 mr-1"}),"详情"]}),e.jsxs(y,{variant:"default",size:"sm",onClick:()=>_(D),children:[e.jsx(pr,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsxs(y,{size:"sm",onClick:()=>S(D),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(es,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},D.id))})]})}),e.jsx("div",{className:"md:hidden space-y-3 p-4",children:c?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):n.length===0?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):n.map(D=>e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(yt,{checked:he.has(D.person_id),onCheckedChange:()=>$(D.person_id),className:"mt-1"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:Q("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium mb-2",D.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:D.is_known?"已认识":"未认识"}),e.jsx("h3",{className:"font-semibold text-sm line-clamp-1 w-full break-all",children:D.person_name||e.jsx("span",{className:"text-muted-foreground",children:"未命名"})}),D.nickname&&e.jsxs("p",{className:"text-xs text-muted-foreground mt-1 line-clamp-1 w-full break-all",children:["昵称: ",D.nickname]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"平台"}),e.jsx("p",{className:"font-medium text-xs",children:D.platform})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"用户ID"}),e.jsx("p",{className:"font-mono text-xs truncate",title:D.user_id,children:D.user_id})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"最后更新"}),e.jsx("p",{className:"text-xs",children:F(D.last_know)})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>ie(D),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(Zt,{className:"h-3 w-3 mr-1"}),"查看"]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>_(D),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(pr,{className:"h-3 w-3 mr-1"}),"编辑"]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>S(D),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[e.jsx(es,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},D.id))}),h>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",h," 条记录,第 ",f," / ",Math.ceil(h/p)," 页"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(wr,{className:"h-4 w-4"})}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>j(f-1),disabled:f===1,children:[e.jsx(cn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:je,onChange:D=>_e(D.target.value),onKeyDown:D=>D.key==="Enter"&&L(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(h/p)}),e.jsx(y,{variant:"outline",size:"sm",onClick:L,disabled:!je,className:"h-8",children:"跳转"})]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>j(f+1),disabled:f>=Math.ceil(h/p),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(il,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(y,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(h/p)),disabled:f>=Math.ceil(h/p),className:"hidden sm:flex",children:e.jsx(_r,{className:"h-4 w-4"})})]})]})]})]})}),e.jsx(j1,{person:U,open:Z,onOpenChange:H}),e.jsx(v1,{person:U,open:z,onOpenChange:B,onSuccess:()=>{G(),q(),B(!1)}}),e.jsx(ps,{open:!!X,onOpenChange:()=>S(null),children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认删除"}),e.jsxs(us,{children:['确定要删除人物信息 "',X?.person_name||X?.nickname||X?.user_id,'" 吗? 此操作不可撤销。']})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:()=>X&&me(X),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),e.jsx(ps,{open:ye,onOpenChange:pe,children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"确认批量删除"}),e.jsxs(us,{children:["确定要删除选中的 ",he.size," 个人物信息吗? 此操作不可撤销。"]})]}),e.jsxs(os,{children:[e.jsx(hs,{children:"取消"}),e.jsx(ms,{onClick:le,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})})]})}function j1({person:n,open:r,onOpenChange:c}){if(!n)return null;const d=h=>h?new Date(h*1e3).toLocaleString("zh-CN"):"-";return e.jsx(Rs,{open:r,onOpenChange:c,children:e.jsxs(zs,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"人物详情"}),e.jsxs(Ys,{children:["查看 ",n.person_name||n.nickname||n.user_id," 的完整信息"]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(al,{icon:to,label:"人物名称",value:n.person_name}),e.jsx(al,{icon:si,label:"昵称",value:n.nickname}),e.jsx(al,{icon:Uu,label:"用户ID",value:n.user_id,mono:!0}),e.jsx(al,{icon:Uu,label:"人物ID",value:n.person_id,mono:!0}),e.jsx(al,{label:"平台",value:n.platform}),e.jsx(al,{label:"状态",value:n.is_known?"已认识":"未认识"})]}),n.name_reason&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(b,{className:"text-xs text-muted-foreground",children:"名称设定原因"}),e.jsx("p",{className:"mt-1 text-sm",children:n.name_reason})]}),n.memory_points&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(b,{className:"text-xs text-muted-foreground",children:"个人印象"}),e.jsx("p",{className:"mt-1 text-sm whitespace-pre-wrap",children:n.memory_points})]}),n.group_nick_name&&n.group_nick_name.length>0&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(b,{className:"text-xs text-muted-foreground",children:"群昵称"}),e.jsx("div",{className:"mt-2 space-y-1",children:n.group_nick_name.map((h,x)=>e.jsxs("div",{className:"text-sm flex items-center gap-2",children:[e.jsx("span",{className:"font-mono text-xs text-muted-foreground",children:h.group_id}),e.jsx("span",{children:"→"}),e.jsx("span",{children:h.group_nick_name})]},x))})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsx(al,{icon:Wn,label:"认识时间",value:d(n.know_times)}),e.jsx(al,{icon:Wn,label:"首次记录",value:d(n.know_since)}),e.jsx(al,{icon:Wn,label:"最后更新",value:d(n.last_know)})]})]}),e.jsx(Js,{children:e.jsx(y,{onClick:()=>c(!1),children:"关闭"})})]})})}function al({icon:n,label:r,value:c,mono:d=!1}){return e.jsxs("div",{className:"space-y-1",children:[e.jsxs(b,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[n&&e.jsx(n,{className:"h-3 w-3"}),r]}),e.jsx("div",{className:Q("text-sm",d&&"font-mono",!c&&"text-muted-foreground"),children:c||"-"})]})}function v1({person:n,open:r,onOpenChange:c,onSuccess:d}){const[h,x]=u.useState({}),[f,j]=u.useState(!1),{toast:p}=Hs();u.useEffect(()=>{n&&x({person_name:n.person_name||"",name_reason:n.name_reason||"",nickname:n.nickname||"",memory_points:n.memory_points||"",is_known:n.is_known})},[n]);const w=async()=>{if(n)try{j(!0),await h1(n.person_id,h),p({title:"保存成功",description:"人物信息已更新"}),d()}catch(v){p({title:"保存失败",description:v instanceof Error?v.message:"无法更新人物信息",variant:"destructive"})}finally{j(!1)}};return n?e.jsx(Rs,{open:r,onOpenChange:c,children:e.jsxs(zs,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"编辑人物信息"}),e.jsxs(Ys,{children:["修改 ",n.person_name||n.nickname||n.user_id," 的信息"]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"person_name",children:"人物名称"}),e.jsx(ce,{id:"person_name",value:h.person_name||"",onChange:v=>x({...h,person_name:v.target.value}),placeholder:"为这个人设置一个名称"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"nickname",children:"昵称"}),e.jsx(ce,{id:"nickname",value:h.nickname||"",onChange:v=>x({...h,nickname:v.target.value}),placeholder:"昵称"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"name_reason",children:"名称设定原因"}),e.jsx(Bs,{id:"name_reason",value:h.name_reason||"",onChange:v=>x({...h,name_reason:v.target.value}),placeholder:"为什么这样称呼这个人?",rows:2})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"memory_points",children:"个人印象"}),e.jsx(Bs,{id:"memory_points",value:h.memory_points||"",onChange:v=>x({...h,memory_points:v.target.value}),placeholder:"对这个人的印象和记忆点...",rows:4})]}),e.jsxs("div",{className:"flex items-center justify-between rounded-lg border p-3",children:[e.jsxs("div",{children:[e.jsx(b,{htmlFor:"is_known",className:"text-base font-medium",children:"已认识"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"标记是否已经认识这个人"})]}),e.jsx(Ve,{id:"is_known",checked:h.is_known,onCheckedChange:v=>x({...h,is_known:v})})]})]}),e.jsxs(Js,{children:[e.jsx(y,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(y,{onClick:w,disabled:f,children:f?"保存中...":"保存"})]})]})}):null}var y1=Cb();const pp=_y(y1),Wu="/api/webui";async function N1(n=100,r="all"){const c=`${Wu}/knowledge/graph?limit=${n}&node_type=${r}`,d=await fetch(c);if(!d.ok)throw new Error(`获取知识图谱失败: ${d.status}`);return d.json()}async function b1(){const n=await fetch(`${Wu}/knowledge/stats`);if(!n.ok)throw new Error("获取知识图谱统计信息失败");return n.json()}async function w1(n){const r=await fetch(`${Wu}/knowledge/search?query=${encodeURIComponent(n)}`);if(!r.ok)throw new Error("搜索知识节点失败");return r.json()}const $g=u.memo(({data:n})=>e.jsxs("div",{className:"px-4 py-2 shadow-md rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700 min-w-[120px]",children:[e.jsx(lo,{type:"target",position:no.Top}),e.jsx("div",{className:"font-semibold text-white text-sm truncate max-w-[200px]",title:n.content,children:n.label}),e.jsx(lo,{type:"source",position:no.Bottom})]}));$g.displayName="EntityNode";const Qg=u.memo(({data:n})=>e.jsxs("div",{className:"px-3 py-2 shadow-md rounded-md bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700 min-w-[100px]",children:[e.jsx(lo,{type:"target",position:no.Top}),e.jsx("div",{className:"font-medium text-white text-xs truncate max-w-[150px]",title:n.content,children:n.label}),e.jsx(lo,{type:"source",position:no.Bottom})]}));Qg.displayName="ParagraphNode";const _1={entity:$g,paragraph:Qg};function S1(n,r){const c=new pp.graphlib.Graph;c.setDefaultEdgeLabel(()=>({})),c.setGraph({rankdir:"TB",ranksep:100,nodesep:80});const d=[],h=[];return n.forEach(x=>{c.setNode(x.id,{width:150,height:50})}),r.forEach(x=>{c.setEdge(x.source,x.target)}),pp.layout(c),n.forEach(x=>{const f=c.node(x.id);d.push({id:x.id,type:x.type,position:{x:f.x-75,y:f.y-25},data:{label:x.content.slice(0,20)+(x.content.length>20?"...":""),content:x.content}})}),r.forEach((x,f)=>{const j={id:`edge-${f}`,source:x.source,target:x.target,animated:n.length<=200&&x.weight>5,style:{strokeWidth:Math.min(x.weight/2,5),opacity:.6}};x.weight>10&&n.length<100&&(j.label=`${x.weight.toFixed(0)}`),h.push(j)}),{nodes:d,edges:h}}function C1(){const n=Jt(),[r,c]=u.useState(!1),[d,h]=u.useState(null),[x,f]=u.useState(""),[j,p]=u.useState("all"),[w,v]=u.useState(50),[k,T]=u.useState("50"),[E,R]=u.useState(!1),[K,U]=u.useState(!0),[A,Z]=u.useState(!1),[H,z]=u.useState(!1),[B,X,S]=kb([]),[O,te,he]=Tb([]),[Ne,ye]=u.useState(0),[pe,je]=u.useState(null),[_e,N]=u.useState(null),{toast:G}=Hs(),q=u.useCallback(le=>le.type==="entity"?"#6366f1":le.type==="paragraph"?"#10b981":"#6b7280",[]),ie=u.useCallback(async(le=!1)=>{try{if(!le&&w>200){z(!0);return}c(!0);const[L,F]=await Promise.all([N1(w,j),b1()]);if(h(F),L.nodes.length===0){G({title:"提示",description:"知识库为空,请先导入知识数据"}),X([]),te([]);return}const{nodes:D,edges:ee}=S1(L.nodes,L.edges);X(D),te(ee),ye(D.length),F&&F.total_nodes>w&&G({title:"提示",description:`知识图谱包含 ${F.total_nodes} 个节点,当前显示 ${D.length} 个`}),G({title:"加载成功",description:`已加载 ${D.length} 个节点,${ee.length} 条边`})}catch(L){console.error("加载知识图谱失败:",L),G({title:"加载失败",description:L instanceof Error?L.message:"未知错误",variant:"destructive"})}finally{c(!1)}},[w,j,G]),_=u.useCallback(async()=>{if(!x.trim()){G({title:"提示",description:"请输入搜索关键词"});return}try{const le=await w1(x);if(le.length===0){G({title:"未找到",description:"没有找到匹配的节点"});return}const L=new Set(le.map(F=>F.id));X(F=>F.map(D=>({...D,style:{...D.style,opacity:L.has(D.id)?1:.3,filter:L.has(D.id)?"brightness(1.2)":"brightness(0.8)"}}))),G({title:"搜索完成",description:`找到 ${le.length} 个匹配节点`})}catch(le){console.error("搜索失败:",le),G({title:"搜索失败",description:le instanceof Error?le.message:"未知错误",variant:"destructive"})}},[x,G]),me=u.useCallback(()=>{X(le=>le.map(L=>({...L,style:{...L.style,opacity:1,filter:"brightness(1)"}})))},[]),xe=u.useCallback(()=>{U(!1),Z(!0),ie()},[ie]),$=u.useCallback(()=>{z(!1),setTimeout(()=>{ie(!0)},0)},[ie]),de=u.useCallback((le,L)=>{B.find(D=>D.id===L.id)&&je({id:L.id,type:L.type,content:L.data.content})},[B]);u.useEffect(()=>{K||A&&ie()},[w,j,K,A]);const ge=u.useCallback((le,L)=>{const F=B.find(we=>we.id===L.source),D=B.find(we=>we.id===L.target),ee=O.find(we=>we.id===L.id);F&&D&&ee&&N({source:{id:F.id,type:F.type,content:F.data.content},target:{id:D.id,type:D.type,content:D.data.content},edge:{source:L.source,target:L.target,weight:parseFloat(L.label||"0")}})},[B,O]);return e.jsxs("div",{className:"h-full flex flex-col",children:[e.jsxs("div",{className:"flex-shrink-0 p-4 border-b bg-background",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦知识库图谱"}),e.jsx("p",{className:"text-muted-foreground mt-1",children:"可视化知识实体与关系网络"})]}),d&&e.jsxs("div",{className:"flex gap-2 flex-wrap",children:[e.jsxs(Ye,{variant:"outline",className:"gap-1",children:[e.jsx(eo,{className:"h-3 w-3"}),"节点: ",d.total_nodes]}),e.jsxs(Ye,{variant:"outline",className:"gap-1",children:[e.jsx(yg,{className:"h-3 w-3"}),"边: ",d.total_edges]}),e.jsxs(Ye,{variant:"outline",className:"gap-1",children:[e.jsx(Xt,{className:"h-3 w-3"}),"实体: ",d.entity_nodes]}),e.jsxs(Ye,{variant:"outline",className:"gap-1",children:[e.jsx(Aa,{className:"h-3 w-3"}),"段落: ",d.paragraph_nodes]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 mt-4",children:[e.jsxs("div",{className:"flex-1 flex gap-2",children:[e.jsx(ce,{placeholder:"搜索节点内容...",value:x,onChange:le=>f(le.target.value),onKeyDown:le=>le.key==="Enter"&&_(),className:"flex-1"}),e.jsx(y,{onClick:_,size:"sm",children:e.jsx(_t,{className:"h-4 w-4"})}),e.jsx(y,{onClick:me,variant:"outline",size:"sm",children:"重置"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(He,{value:j,onValueChange:le=>p(le),children:[e.jsx(Re,{className:"w-[120px]",children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部节点"}),e.jsx(ne,{value:"entity",children:"仅实体"}),e.jsx(ne,{value:"paragraph",children:"仅段落"})]})]}),e.jsxs(He,{value:w===1e4?"all":E?"custom":w.toString(),onValueChange:le=>{le==="custom"?(R(!0),T(w.toString())):le==="all"?(R(!1),v(1e4)):(R(!1),v(Number(le)))},children:[e.jsx(Re,{className:"w-[120px]",children:e.jsx(qe,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"50",children:"50 节点"}),e.jsx(ne,{value:"100",children:"100 节点"}),e.jsx(ne,{value:"200",children:"200 节点"}),e.jsx(ne,{value:"500",children:"500 节点"}),e.jsx(ne,{value:"1000",children:"1000 节点"}),e.jsx(ne,{value:"all",children:"全部 (最多10000)"}),e.jsx(ne,{value:"custom",children:"自定义..."})]})]}),E&&e.jsx(ce,{type:"number",min:"50",value:k,onChange:le=>T(le.target.value),onBlur:()=>{const le=parseInt(k);!isNaN(le)&&le>=50?v(le):(T("50"),v(50))},onKeyDown:le=>{if(le.key==="Enter"){const L=parseInt(k);!isNaN(L)&&L>=50?v(L):(T("50"),v(50))}},placeholder:"最少50个",className:"w-[120px]"}),e.jsx(y,{onClick:()=>ie(),variant:"outline",size:"sm",disabled:r,children:e.jsx(pt,{className:Q("h-4 w-4",r&&"animate-spin")})})]})]})]}),e.jsx("div",{className:"flex-1 relative",children:r?e.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx(pt,{className:"h-8 w-8 animate-spin mx-auto mb-2 text-muted-foreground"}),e.jsx("p",{className:"text-muted-foreground",children:"加载知识图谱中..."})]})}):B.length===0?e.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx(eo,{className:"h-12 w-12 mx-auto mb-4 text-muted-foreground"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"知识库为空"}),e.jsx("p",{className:"text-muted-foreground",children:"请先导入知识数据"})]})}):e.jsxs(Eb,{nodes:B,edges:O,onNodesChange:S,onEdgesChange:he,onNodeClick:de,onEdgeClick:ge,nodeTypes:_1,fitView:!0,minZoom:.05,maxZoom:1.5,defaultViewport:{x:0,y:0,zoom:.5},elevateNodesOnSelect:Ne<=500,nodesDraggable:Ne<=1e3,attributionPosition:"bottom-left",children:[e.jsx(zb,{variant:Mb.Dots,gap:12,size:1}),e.jsx(Ab,{}),Ne<=500&&e.jsx(Db,{nodeColor:q,nodeBorderRadius:8,pannable:!0,zoomable:!0}),e.jsxs(Ob,{position:"top-right",className:"bg-background/95 backdrop-blur-sm rounded-lg border p-3 shadow-lg",children:[e.jsx("div",{className:"text-sm font-semibold mb-2",children:"图例"}),e.jsxs("div",{className:"space-y-2 text-xs",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700"}),e.jsx("span",{children:"实体节点"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700"}),e.jsx("span",{children:"段落节点"})]}),Ne>200&&e.jsxs("div",{className:"mt-2 pt-2 border-t text-yellow-600 dark:text-yellow-500",children:[e.jsx("div",{className:"font-semibold",children:"性能模式"}),e.jsx("div",{children:"已禁用动画"}),Ne>500&&e.jsx("div",{children:"已禁用缩略图"})]})]})]})]})}),e.jsx(Rs,{open:!!pe,onOpenChange:le=>!le&&je(null),children:e.jsxs(zs,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsx(Ms,{children:e.jsx(As,{children:"节点详情"})}),pe&&e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"grid grid-cols-2 gap-4",children:e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"类型"}),e.jsx("div",{className:"mt-1",children:e.jsx(Ye,{variant:pe.type==="entity"?"default":"secondary",children:pe.type==="entity"?"🏷️ 实体":"📄 段落"})})]})}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"ID"}),e.jsx("code",{className:"mt-1 block p-2 bg-muted rounded text-xs break-all",children:pe.id})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"内容"}),e.jsx(Pe,{className:"mt-1 h-40 p-3 bg-muted rounded",children:e.jsx("p",{className:"text-sm whitespace-pre-wrap",children:pe.content})})]})]})]})}),e.jsx(Rs,{open:!!_e,onOpenChange:le=>!le&&N(null),children:e.jsxs(zs,{className:"max-w-2xl max-h-[80vh] overflow-hidden flex flex-col",children:[e.jsx(Ms,{children:e.jsx(As,{children:"边详情"})}),_e&&e.jsx(Pe,{className:"flex-1 pr-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-blue-50 dark:bg-blue-950 rounded border-2 border-blue-200 dark:border-blue-800",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"源节点"}),e.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:_e.source.content}),e.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[_e.source.id.slice(0,40),"..."]})]}),e.jsx("div",{className:"text-2xl text-muted-foreground flex-shrink-0",children:"→"}),e.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-green-50 dark:bg-green-950 rounded border-2 border-green-200 dark:border-green-800",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"目标节点"}),e.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:_e.target.content}),e.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[_e.target.id.slice(0,40),"..."]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"权重"}),e.jsx("div",{className:"mt-1",children:e.jsx(Ye,{variant:"outline",className:"text-base font-mono",children:_e.edge.weight.toFixed(4)})})]})]})})]})}),e.jsx(ps,{open:K,onOpenChange:U,children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"加载知识图谱"}),e.jsxs(us,{children:["知识图谱的动态展示会消耗较多系统资源。",e.jsx("br",{}),"确定要加载知识图谱吗?"]})]}),e.jsxs(os,{children:[e.jsx(hs,{onClick:()=>n({to:"/"}),children:"取消 (返回首页)"}),e.jsx(ms,{onClick:xe,children:"确认加载"})]})]})}),e.jsx(ps,{open:H,onOpenChange:z,children:e.jsxs(rs,{children:[e.jsxs(cs,{children:[e.jsx(ds,{children:"⚠️ 节点数量较多"}),e.jsx(us,{asChild:!0,children:e.jsxs("div",{children:[e.jsxs("p",{children:["您正在尝试加载 ",e.jsx("strong",{className:"text-orange-600",children:w>=1e4?"全部 (最多10000个)":w})," 个节点。"]}),e.jsx("p",{className:"mt-4",children:"节点数量过多可能导致:"}),e.jsxs("ul",{className:"list-disc list-inside mt-2 space-y-1",children:[e.jsx("li",{children:"页面加载时间较长"}),e.jsx("li",{children:"浏览器卡顿或崩溃"}),e.jsx("li",{children:"系统资源占用过高"})]}),e.jsx("p",{className:"mt-4",children:"建议先选择较少的节点数量 (50-200 个)。"})]})})]}),e.jsxs(os,{children:[e.jsx(hs,{onClick:()=>{z(!1),w>200&&(v(50),R(!1))},children:"取消"}),e.jsx(ms,{onClick:$,className:"bg-orange-600 hover:bg-orange-700",children:"我了解风险,继续加载"})]})]})})]})}function gp({className:n,classNames:r,showOutsideDays:c=!0,captionLayout:d="label",buttonVariant:h="ghost",formatters:x,components:f,...j}){const p=_g();return e.jsx(cb,{showOutsideDays:c,className:Q("bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,n),captionLayout:d,formatters:{formatMonthDropdown:w=>w.toLocaleString("default",{month:"short"}),...x},classNames:{root:Q("w-fit",p.root),months:Q("relative flex flex-col gap-4 md:flex-row",p.months),month:Q("flex w-full flex-col gap-4",p.month),nav:Q("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",p.nav),button_previous:Q(gr({variant:h}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",p.button_previous),button_next:Q(gr({variant:h}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",p.button_next),month_caption:Q("flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]",p.month_caption),dropdowns:Q("flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium",p.dropdowns),dropdown_root:Q("has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border",p.dropdown_root),dropdown:Q("bg-popover absolute inset-0 opacity-0",p.dropdown),caption_label:Q("select-none font-medium",d==="label"?"text-sm":"[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5",p.caption_label),table:"w-full border-collapse",weekdays:Q("flex",p.weekdays),weekday:Q("text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal",p.weekday),week:Q("mt-2 flex w-full",p.week),week_number_header:Q("w-[--cell-size] select-none",p.week_number_header),week_number:Q("text-muted-foreground select-none text-[0.8rem]",p.week_number),day:Q("group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md",p.day),range_start:Q("bg-accent rounded-l-md",p.range_start),range_middle:Q("rounded-none",p.range_middle),range_end:Q("bg-accent rounded-r-md",p.range_end),today:Q("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",p.today),outside:Q("text-muted-foreground aria-selected:text-muted-foreground",p.outside),disabled:Q("text-muted-foreground opacity-50",p.disabled),hidden:Q("invisible",p.hidden),...r},components:{Root:({className:w,rootRef:v,...k})=>e.jsx("div",{"data-slot":"calendar",ref:v,className:Q(w),...k}),Chevron:({className:w,orientation:v,...k})=>v==="left"?e.jsx(cn,{className:Q("size-4",w),...k}):v==="right"?e.jsx(il,{className:Q("size-4",w),...k}):e.jsx(Ll,{className:Q("size-4",w),...k}),DayButton:k1,WeekNumber:({children:w,...v})=>e.jsx("td",{...v,children:e.jsx("div",{className:"flex size-[--cell-size] items-center justify-center text-center",children:w})}),...f},...j})}function k1({className:n,day:r,modifiers:c,...d}){const h=_g(),x=u.useRef(null);return u.useEffect(()=>{c.focused&&x.current?.focus()},[c.focused]),e.jsx(y,{ref:x,variant:"ghost",size:"icon","data-day":r.date.toLocaleDateString(),"data-selected-single":c.selected&&!c.range_start&&!c.range_end&&!c.range_middle,"data-range-start":c.range_start,"data-range-end":c.range_end,"data-range-middle":c.range_middle,className:Q("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70",h.day,n),...d})}const T1={lessThanXSeconds:{one:"不到 1 秒",other:"不到 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分钟",lessThanXMinutes:{one:"不到 1 分钟",other:"不到 {{count}} 分钟"},xMinutes:{one:"1 分钟",other:"{{count}} 分钟"},xHours:{one:"1 小时",other:"{{count}} 小时"},aboutXHours:{one:"大约 1 小时",other:"大约 {{count}} 小时"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大约 1 个星期",other:"大约 {{count}} 个星期"},xWeeks:{one:"1 个星期",other:"{{count}} 个星期"},aboutXMonths:{one:"大约 1 个月",other:"大约 {{count}} 个月"},xMonths:{one:"1 个月",other:"{{count}} 个月"},aboutXYears:{one:"大约 1 年",other:"大约 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超过 1 年",other:"超过 {{count}} 年"},almostXYears:{one:"将近 1 年",other:"将近 {{count}} 年"}},E1=(n,r,c)=>{let d;const h=T1[n];return typeof h=="string"?d=h:r===1?d=h.one:d=h.other.replace("{{count}}",String(r)),c?.addSuffix?c.comparison&&c.comparison>0?d+"内":d+"前":d},z1={full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},M1={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},A1={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},D1={date:wu({formats:z1,defaultWidth:"full"}),time:wu({formats:M1,defaultWidth:"full"}),dateTime:wu({formats:A1,defaultWidth:"full"})};function jp(n,r,c){const d="eeee p";return ky(n,r,c)?d:n.getTime()>r.getTime()?"'下个'"+d:"'上个'"+d}const O1={lastWeek:jp,yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:jp,other:"PP p"},R1=(n,r,c,d)=>{const h=O1[n];return typeof h=="function"?h(r,c,d):h},L1={narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},U1={narrow:["1","2","3","4"],abbreviated:["第一季","第二季","第三季","第四季"],wide:["第一季度","第二季度","第三季度","第四季度"]},B1={narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},H1={narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["周日","周一","周二","周三","周四","周五","周六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},q1={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},G1={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},V1=(n,r)=>{const c=Number(n);switch(r?.unit){case"date":return c.toString()+"日";case"hour":return c.toString()+"时";case"minute":return c.toString()+"分";case"second":return c.toString()+"秒";default:return"第 "+c.toString()}},F1={ordinalNumber:V1,era:er({values:L1,defaultWidth:"wide"}),quarter:er({values:U1,defaultWidth:"wide",argumentCallback:n=>n-1}),month:er({values:B1,defaultWidth:"wide"}),day:er({values:H1,defaultWidth:"wide"}),dayPeriod:er({values:q1,defaultWidth:"wide",formattingValues:G1,defaultFormattingWidth:"wide"})},$1=/^(第\s*)?\d+(日|时|分|秒)?/i,Q1=/\d+/i,Y1={narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},X1={any:[/^(前)/i,/^(公元)/i]},K1={narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻钟/i},Z1={any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},J1={narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},I1={narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},P1={narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^周[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},W1={any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},e2={any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i},s2={any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},t2={ordinalNumber:Ty({matchPattern:$1,parsePattern:Q1,valueCallback:n=>parseInt(n,10)}),era:sr({matchPatterns:Y1,defaultMatchWidth:"wide",parsePatterns:X1,defaultParseWidth:"any"}),quarter:sr({matchPatterns:K1,defaultMatchWidth:"wide",parsePatterns:Z1,defaultParseWidth:"any",valueCallback:n=>n+1}),month:sr({matchPatterns:J1,defaultMatchWidth:"wide",parsePatterns:I1,defaultParseWidth:"any"}),day:sr({matchPatterns:P1,defaultMatchWidth:"wide",parsePatterns:W1,defaultParseWidth:"any"}),dayPeriod:sr({matchPatterns:e2,defaultMatchWidth:"any",parsePatterns:s2,defaultParseWidth:"any"})},$c={code:"zh-CN",formatDistance:E1,formatLong:D1,formatRelative:R1,localize:F1,match:t2,options:{weekStartsOn:1,firstWeekContainsDate:4}},Qc={xs:{label:"小",rowHeight:28,class:"text-[10px] sm:text-xs"},sm:{label:"中",rowHeight:36,class:"text-xs sm:text-sm"},base:{label:"大",rowHeight:44,class:"text-sm sm:text-base"}};function a2(){const[n,r]=u.useState([]),[c,d]=u.useState(""),[h,x]=u.useState("all"),[f,j]=u.useState("all"),[p,w]=u.useState(void 0),[v,k]=u.useState(void 0),[T,E]=u.useState(!0),[R,K]=u.useState(!1),[U,A]=u.useState("xs"),[Z,H]=u.useState(4),z=u.useRef(null);u.useEffect(()=>{const N=an.getAllLogs();r(N);const G=an.onLog(()=>{r(an.getAllLogs())}),q=an.onConnectionChange(ie=>{K(ie)});return()=>{G(),q()}},[]);const B=u.useMemo(()=>{const N=new Set(n.map(G=>G.module).filter(G=>G&&G.trim()!==""));return Array.from(N).sort()},[n]),X=N=>{switch(N){case"DEBUG":return"text-muted-foreground";case"INFO":return"text-blue-500 dark:text-blue-400";case"WARNING":return"text-yellow-600 dark:text-yellow-500";case"ERROR":return"text-red-600 dark:text-red-500";case"CRITICAL":return"text-red-700 dark:text-red-400 font-bold";default:return"text-foreground"}},S=N=>{switch(N){case"DEBUG":return"bg-gray-800/30 dark:bg-gray-800/50";case"INFO":return"bg-blue-900/20 dark:bg-blue-500/20";case"WARNING":return"bg-yellow-900/20 dark:bg-yellow-500/20";case"ERROR":return"bg-red-900/20 dark:bg-red-500/20";case"CRITICAL":return"bg-red-900/30 dark:bg-red-600/30";default:return"bg-gray-800/20 dark:bg-gray-800/30"}},O=()=>{window.location.reload()},te=()=>{an.clearLogs(),r([])},he=()=>{const N=pe.map(_=>`${_.timestamp} [${_.level.padEnd(8)}] [${_.module}] ${_.message}`).join(` -`),G=new Blob([N],{type:"text/plain;charset=utf-8"}),q=URL.createObjectURL(G),ie=document.createElement("a");ie.href=q,ie.download=`logs-${_u(new Date,"yyyy-MM-dd-HHmmss")}.txt`,ie.click(),URL.revokeObjectURL(q)},Ne=()=>{E(!T)},ye=()=>{w(void 0),k(void 0)},pe=u.useMemo(()=>n.filter(N=>{const G=c===""||N.message.toLowerCase().includes(c.toLowerCase())||N.module.toLowerCase().includes(c.toLowerCase()),q=h==="all"||N.level===h,ie=f==="all"||N.module===f;let _=!0;if(p||v){const me=new Date(N.timestamp);if(p){const xe=new Date(p);xe.setHours(0,0,0,0),_=_&&me>=xe}if(v){const xe=new Date(v);xe.setHours(23,59,59,999),_=_&&me<=xe}}return G&&q&&ie&&_}),[n,c,h,f,p,v]),je=Qc[U].rowHeight+Z,_e=py({count:pe.length,getScrollElement:()=>z.current,estimateSize:()=>je,overscan:15});return u.useEffect(()=>{T&&pe.length>0&&_e.scrollToIndex(pe.length-1,{align:"end",behavior:"auto"})},[pe.length,T,_e]),e.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[e.jsxs("div",{className:"flex-shrink-0 space-y-4 p-3 sm:p-4 lg:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-xl sm:text-2xl lg:text-3xl font-bold",children:"日志查看器"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:"实时查看和分析麦麦运行日志"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:Q("h-2.5 w-2.5 sm:h-3 sm:w-3 rounded-full",R?"bg-green-500 animate-pulse":"bg-red-500")}),e.jsx("span",{className:"text-xs sm:text-sm text-muted-foreground",children:R?"已连接":"未连接"})]})]}),e.jsx(Fe,{className:"p-3 sm:p-4",children:e.jsxs("div",{className:"flex flex-col gap-3 sm:gap-4",children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:gap-4",children:[e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(_t,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索日志...",value:c,onChange:N=>d(N.target.value),className:"pl-9 h-9 text-sm"})]}),e.jsxs(He,{value:h,onValueChange:x,children:[e.jsxs(Re,{className:"w-full sm:w-[140px] lg:w-[180px] h-9 text-sm",children:[e.jsx(Lu,{className:"h-4 w-4 mr-2"}),e.jsx(qe,{placeholder:"级别"})]}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部级别"}),e.jsx(ne,{value:"DEBUG",children:"DEBUG"}),e.jsx(ne,{value:"INFO",children:"INFO"}),e.jsx(ne,{value:"WARNING",children:"WARNING"}),e.jsx(ne,{value:"ERROR",children:"ERROR"}),e.jsx(ne,{value:"CRITICAL",children:"CRITICAL"})]})]}),e.jsxs(He,{value:f,onValueChange:j,children:[e.jsxs(Re,{className:"w-full sm:w-[160px] lg:w-[200px] h-9 text-sm",children:[e.jsx(Lu,{className:"h-4 w-4 mr-2"}),e.jsx(qe,{placeholder:"模块"})]}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部模块"}),B.map(N=>e.jsx(ne,{value:N,children:N},N))]})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:gap-4",children:[e.jsxs(Oa,{children:[e.jsx(Ra,{asChild:!0,children:e.jsxs(y,{variant:"outline",size:"sm",className:Q("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!p&&"text-muted-foreground"),children:[e.jsx(Xf,{className:"mr-2 h-4 w-4"}),e.jsx("span",{className:"text-xs sm:text-sm",children:p?_u(p,"PPP",{locale:$c}):"开始日期"})]})}),e.jsx(wa,{className:"w-auto p-0",align:"start",children:e.jsx(gp,{mode:"single",selected:p,onSelect:w,initialFocus:!0,locale:$c})})]}),e.jsxs(Oa,{children:[e.jsx(Ra,{asChild:!0,children:e.jsxs(y,{variant:"outline",size:"sm",className:Q("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!v&&"text-muted-foreground"),children:[e.jsx(Xf,{className:"mr-2 h-4 w-4"}),e.jsx("span",{className:"text-xs sm:text-sm",children:v?_u(v,"PPP",{locale:$c}):"结束日期"})]})}),e.jsx(wa,{className:"w-auto p-0",align:"start",children:e.jsx(gp,{mode:"single",selected:v,onSelect:k,initialFocus:!0,locale:$c})})]}),(p||v)&&e.jsxs(y,{variant:"outline",size:"sm",onClick:ye,className:"w-full sm:w-auto h-9",children:[e.jsx(li,{className:"h-4 w-4 sm:mr-2"}),e.jsx("span",{className:"hidden sm:inline text-sm",children:"清除时间筛选"}),e.jsx("span",{className:"sm:hidden text-sm",children:"清除"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center",children:[e.jsxs("div",{className:"flex gap-2 flex-wrap",children:[e.jsxs(y,{variant:T?"default":"outline",size:"sm",onClick:Ne,className:"flex-1 sm:flex-none h-9",children:[T?e.jsx(GN,{className:"h-4 w-4"}):e.jsx(VN,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:T?"自动滚动":"已暂停"})]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:O,className:"flex-1 sm:flex-none h-9",children:[e.jsx(pt,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"刷新"})]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:te,className:"flex-1 sm:flex-none h-9",children:[e.jsx(es,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"清空"})]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:he,className:"flex-1 sm:flex-none h-9",children:[e.jsx(nl,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"导出"})]})]}),e.jsx("div",{className:"flex-1 hidden sm:block"}),e.jsxs("div",{className:"text-xs sm:text-sm text-muted-foreground flex items-center justify-center sm:justify-end",children:[e.jsxs("span",{className:"font-mono",children:[pe.length," / ",n.length]}),e.jsx("span",{className:"ml-1",children:"条日志"})]})]}),e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-6 pt-2 border-t border-border/50",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(FN,{className:"h-4 w-4"}),e.jsx("span",{children:"字号"})]}),e.jsx("div",{className:"flex gap-1",children:Object.keys(Qc).map(N=>e.jsx(y,{variant:U===N?"default":"outline",size:"sm",onClick:()=>A(N),className:"h-7 px-3 text-xs",children:Qc[N].label},N))})]}),e.jsxs("div",{className:"flex items-center gap-3 flex-1 max-w-xs",children:[e.jsx("span",{className:"text-sm text-muted-foreground whitespace-nowrap",children:"行距"}),e.jsx(Ma,{value:[Z],onValueChange:([N])=>H(N),min:0,max:12,step:2,className:"flex-1"}),e.jsxs("span",{className:"text-xs text-muted-foreground w-8",children:[Z,"px"]})]})]})]})})]}),e.jsx("div",{className:"flex-1 min-h-0 px-3 sm:px-4 lg:px-6 pb-3 sm:pb-4 lg:pb-6",children:e.jsx(Fe,{className:"bg-black dark:bg-gray-950 border-gray-800 dark:border-gray-900 h-full",children:e.jsx(Pe,{viewportRef:z,className:"h-full",children:e.jsx("div",{className:Q("p-2 sm:p-3 font-mono relative",Qc[U].class),style:{height:`${_e.getTotalSize()}px`},children:pe.length===0?e.jsx("div",{className:"text-gray-500 dark:text-gray-600 text-center py-8 text-sm",children:"暂无日志数据"}):_e.getVirtualItems().map(N=>{const G=pe[N.index];return e.jsxs("div",{"data-index":N.index,ref:_e.measureElement,className:Q("absolute top-0 left-0 w-full px-2 sm:px-3 rounded hover:bg-white/5 transition-colors group",S(G.level)),style:{transform:`translateY(${N.start}px)`,paddingTop:`${Z/2}px`,paddingBottom:`${Z/2}px`},children:[e.jsxs("div",{className:"flex flex-col gap-0.5 sm:hidden",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-gray-500 dark:text-gray-600",children:G.timestamp}),e.jsxs("span",{className:Q("font-semibold",X(G.level)),children:["[",G.level,"]"]})]}),e.jsx("div",{className:"text-cyan-400 dark:text-cyan-500 truncate",children:G.module}),e.jsx("div",{className:"text-gray-300 dark:text-gray-400 whitespace-pre-wrap break-words",children:G.message})]}),e.jsxs("div",{className:"hidden sm:flex gap-2 items-start",children:[e.jsx("span",{className:"text-gray-500 dark:text-gray-600 flex-shrink-0 w-[130px] lg:w-[160px]",children:G.timestamp}),e.jsxs("span",{className:Q("flex-shrink-0 w-[65px] lg:w-[75px] font-semibold",X(G.level)),children:["[",G.level,"]"]}),e.jsx("span",{className:"text-cyan-400 dark:text-cyan-500 flex-shrink-0 w-[100px] lg:w-[130px] truncate",children:G.module}),e.jsx("span",{className:"text-gray-300 dark:text-gray-400 flex-1 whitespace-pre-wrap break-words",children:G.message})]})]},N.key)})})})})})]})}const l2="Mai-with-u",n2="plugin-repo",i2="main",r2="plugin_details.json";async function c2(){try{const n=await ke("/api/webui/plugins/fetch-raw",{method:"POST",body:JSON.stringify({owner:l2,repo:n2,branch:i2,file_path:r2})});if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);const r=await n.json();if(!r.success||!r.data)throw new Error(r.error||"获取插件列表失败");return JSON.parse(r.data).filter(h=>!h?.id||!h?.manifest?(console.warn("跳过无效插件数据:",h),!1):!h.manifest.name||!h.manifest.version?(console.warn("跳过缺少必需字段的插件:",h.id),!1):!0).map(h=>({id:h.id,manifest:{manifest_version:h.manifest.manifest_version||1,name:h.manifest.name,version:h.manifest.version,description:h.manifest.description||"",author:h.manifest.author||{name:"Unknown"},license:h.manifest.license||"Unknown",host_application:h.manifest.host_application||{min_version:"0.0.0"},homepage_url:h.manifest.homepage_url,repository_url:h.manifest.repository_url,keywords:h.manifest.keywords||[],categories:h.manifest.categories||[],default_locale:h.manifest.default_locale||"zh-CN",locales_path:h.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!1,published_at:new Date().toISOString(),updated_at:new Date().toISOString()}))}catch(n){throw console.error("Failed to fetch plugin list:",n),n}}async function o2(){try{const n=await ke("/api/webui/plugins/git-status");if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);return await n.json()}catch(n){return console.error("Failed to check Git status:",n),{installed:!1,error:"无法检测 Git 安装状态"}}}async function d2(){try{const n=await ke("/api/webui/plugins/version");if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);return await n.json()}catch(n){return console.error("Failed to get Maimai version:",n),{version:"0.0.0",version_major:0,version_minor:0,version_patch:0}}}function u2(n,r,c){const d=n.split(".").map(j=>parseInt(j)||0),h=d[0]||0,x=d[1]||0,f=d[2]||0;if(c.version_majorparseInt(k)||0),p=j[0]||0,w=j[1]||0,v=j[2]||0;if(c.version_major>p||c.version_major===p&&c.version_minor>w||c.version_major===p&&c.version_minor===w&&c.version_patch>v)return!1}return!0}function m2(n,r){const c=window.location.protocol==="https:"?"wss:":"ws:",d=window.location.host,h=new WebSocket(`${c}//${d}/api/webui/ws/plugin-progress`);return h.onopen=()=>{console.log("Plugin progress WebSocket connected");const x=setInterval(()=>{h.readyState===WebSocket.OPEN?h.send("ping"):clearInterval(x)},3e4)},h.onmessage=x=>{try{if(x.data==="pong")return;const f=JSON.parse(x.data);n(f)}catch(f){console.error("Failed to parse progress data:",f)}},h.onerror=x=>{console.error("Plugin progress WebSocket error:",x),r?.(x)},h.onclose=()=>{console.log("Plugin progress WebSocket disconnected")},h}async function cr(){try{const n=await ke("/api/webui/plugins/installed",{headers:Ts()});if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);const r=await n.json();if(!r.success)throw new Error(r.message||"获取已安装插件列表失败");return r.plugins||[]}catch(n){return console.error("Failed to get installed plugins:",n),[]}}function Yc(n,r){return r.some(c=>c.id===n)}function Xc(n,r){const c=r.find(d=>d.id===n);if(c)return c.manifest?.version||c.version}async function h2(n,r,c="main"){const d=await ke("/api/webui/plugins/install",{method:"POST",body:JSON.stringify({plugin_id:n,repository_url:r,branch:c})});if(!d.ok){const h=await d.json();throw new Error(h.detail||"安装失败")}return await d.json()}async function x2(n){const r=await ke("/api/webui/plugins/uninstall",{method:"POST",body:JSON.stringify({plugin_id:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"卸载失败")}return await r.json()}async function f2(n,r,c="main"){const d=await ke("/api/webui/plugins/update",{method:"POST",body:JSON.stringify({plugin_id:n,repository_url:r,branch:c})});if(!d.ok){const h=await d.json();throw new Error(h.detail||"更新失败")}return await d.json()}async function p2(n){const r=await ke(`/api/webui/plugins/config/${n}/schema`,{headers:Ts()});if(!r.ok){const d=await r.json();throw new Error(d.detail||"获取配置 Schema 失败")}const c=await r.json();if(!c.success)throw new Error(c.message||"获取配置 Schema 失败");return c.schema}async function g2(n){const r=await ke(`/api/webui/plugins/config/${n}`,{headers:Ts()});if(!r.ok){const d=await r.json();throw new Error(d.detail||"获取配置失败")}const c=await r.json();if(!c.success)throw new Error(c.message||"获取配置失败");return c.config}async function j2(n,r){const c=await ke(`/api/webui/plugins/config/${n}`,{method:"PUT",body:JSON.stringify({config:r})});if(!c.ok){const d=await c.json();throw new Error(d.detail||"保存配置失败")}return await c.json()}async function v2(n){const r=await ke(`/api/webui/plugins/config/${n}/reset`,{method:"POST",headers:Ts()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"重置配置失败")}return await r.json()}async function y2(n){const r=await ke(`/api/webui/plugins/config/${n}/toggle`,{method:"POST",headers:Ts()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"切换状态失败")}return await r.json()}const Cr="https://maibot-plugin-stats.maibot-webui.workers.dev";async function Yg(n){try{const r=await fetch(`${Cr}/stats/${n}`);return r.ok?await r.json():(console.error("Failed to fetch plugin stats:",r.statusText),null)}catch(r){return console.error("Error fetching plugin stats:",r),null}}async function N2(n,r){try{const c=r||em(),d=await fetch(`${Cr}/stats/like`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,user_id:c})}),h=await d.json();return d.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:d.ok?{success:!0,...h}:{success:!1,error:h.error||"点赞失败"}}catch(c){return console.error("Error liking plugin:",c),{success:!1,error:"网络错误"}}}async function b2(n,r){try{const c=r||em(),d=await fetch(`${Cr}/stats/dislike`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,user_id:c})}),h=await d.json();return d.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:d.ok?{success:!0,...h}:{success:!1,error:h.error||"点踩失败"}}catch(c){return console.error("Error disliking plugin:",c),{success:!1,error:"网络错误"}}}async function w2(n,r,c,d){if(r<1||r>5)return{success:!1,error:"评分必须在 1-5 之间"};try{const h=d||em(),x=await fetch(`${Cr}/stats/rate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,rating:r,comment:c,user_id:h})}),f=await x.json();return x.status===429?{success:!1,error:"每天最多评分 3 次"}:x.ok?{success:!0,...f}:{success:!1,error:f.error||"评分失败"}}catch(h){return console.error("Error rating plugin:",h),{success:!1,error:"网络错误"}}}async function _2(n){try{const r=await fetch(`${Cr}/stats/download`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n})}),c=await r.json();return r.status===429?(console.warn("Download recording rate limited"),{success:!0}):r.ok?{success:!0,...c}:(console.error("Failed to record download:",c.error),{success:!1,error:c.error})}catch(r){return console.error("Error recording download:",r),{success:!1,error:"网络错误"}}}function S2(){const n=navigator,r=[navigator.userAgent,navigator.language,navigator.languages?.join(",")||"",navigator.platform,navigator.hardwareConcurrency||0,screen.width,screen.height,screen.colorDepth,screen.pixelDepth,new Date().getTimezoneOffset(),Intl.DateTimeFormat().resolvedOptions().timeZone,navigator.maxTouchPoints||0,n.deviceMemory||0].join("|");let c=0;for(let d=0;d{x(!0);const A=await Yg(n);A&&d(A),x(!1)};u.useEffect(()=>{E()},[n]);const R=async()=>{const A=await N2(n);A.success?(T({title:"已点赞",description:"感谢你的支持!"}),E()):T({title:"点赞失败",description:A.error||"未知错误",variant:"destructive"})},K=async()=>{const A=await b2(n);A.success?(T({title:"已反馈",description:"感谢你的反馈!"}),E()):T({title:"操作失败",description:A.error||"未知错误",variant:"destructive"})},U=async()=>{if(f===0){T({title:"请选择评分",description:"至少选择 1 颗星",variant:"destructive"});return}const A=await w2(n,f,p||void 0);A.success?(T({title:"评分成功",description:"感谢你的评价!"}),k(!1),j(0),w(""),E()):T({title:"评分失败",description:A.error||"未知错误",variant:"destructive"})};return h?e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(nl,{className:"h-4 w-4"}),e.jsx("span",{children:"-"})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ol,{className:"h-4 w-4"}),e.jsx("span",{children:"-"})]})]}):c?r?e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",title:`下载量: ${c.downloads.toLocaleString()}`,children:[e.jsx(nl,{className:"h-4 w-4"}),e.jsx("span",{children:c.downloads.toLocaleString()})]}),e.jsxs("div",{className:"flex items-center gap-1",title:`评分: ${c.rating.toFixed(1)} (${c.rating_count} 条评价)`,children:[e.jsx(Ol,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsx("span",{children:c.rating.toFixed(1)})]}),e.jsxs("div",{className:"flex items-center gap-1",title:`点赞数: ${c.likes}`,children:[e.jsx(Cu,{className:"h-4 w-4"}),e.jsx("span",{children:c.likes})]})]}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-4",children:[e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(nl,{className:"h-5 w-5 text-muted-foreground mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.downloads.toLocaleString()}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"下载量"})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(Ol,{className:"h-5 w-5 text-yellow-400 mb-1 fill-yellow-400"}),e.jsx("span",{className:"text-2xl font-bold",children:c.rating.toFixed(1)}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:[c.rating_count," 条评价"]})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(Cu,{className:"h-5 w-5 text-green-500 mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.likes}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"点赞"})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(Kf,{className:"h-5 w-5 text-red-500 mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.dislikes}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"点踩"})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(y,{variant:"outline",size:"sm",onClick:R,children:[e.jsx(Cu,{className:"h-4 w-4 mr-1"}),"点赞"]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:K,children:[e.jsx(Kf,{className:"h-4 w-4 mr-1"}),"点踩"]}),e.jsxs(Rs,{open:v,onOpenChange:k,children:[e.jsx(ni,{asChild:!0,children:e.jsxs(y,{variant:"default",size:"sm",children:[e.jsx(Ol,{className:"h-4 w-4 mr-1"}),"评分"]})}),e.jsxs(zs,{children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"为插件评分"}),e.jsx(Ys,{children:"分享你的使用体验,帮助其他用户"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"flex flex-col items-center gap-2",children:[e.jsx("div",{className:"flex gap-2",children:[1,2,3,4,5].map(A=>e.jsx("button",{onClick:()=>j(A),className:"focus:outline-none",children:e.jsx(Ol,{className:`h-8 w-8 transition-colors ${A<=f?"fill-yellow-400 text-yellow-400":"text-muted-foreground hover:text-yellow-300"}`})},A))}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[f===0&&"点击星星进行评分",f===1&&"很差",f===2&&"一般",f===3&&"还行",f===4&&"不错",f===5&&"非常好"]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium mb-2 block",children:"评论(可选)"}),e.jsx(Bs,{value:p,onChange:A=>w(A.target.value),placeholder:"分享你的使用体验...",rows:4,maxLength:500}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 text-right",children:[p.length," / 500"]})]})]}),e.jsxs(Js,{children:[e.jsx(y,{variant:"outline",onClick:()=>k(!1),children:"取消"}),e.jsx(y,{onClick:U,disabled:f===0,children:"提交评分"})]})]})]})]}),c.recent_ratings&&c.recent_ratings.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"text-sm font-semibold",children:"最近评价"}),e.jsx("div",{className:"space-y-3",children:c.recent_ratings.map((A,Z)=>e.jsxs("div",{className:"p-3 rounded-lg border bg-muted/50",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("div",{className:"flex gap-1",children:[1,2,3,4,5].map(H=>e.jsx(Ol,{className:`h-3 w-3 ${H<=A.rating?"fill-yellow-400 text-yellow-400":"text-muted-foreground"}`},H))}),e.jsx("span",{className:"text-xs text-muted-foreground",children:new Date(A.created_at).toLocaleDateString()})]}),A.comment&&e.jsx("p",{className:"text-sm text-muted-foreground",children:A.comment})]},Z))})]})]}):null}const vp={"Group Management":"群组管理","Entertainment & Interaction":"娱乐互动","Utility Tools":"实用工具","Content Generation":"内容生成",Multimedia:"多媒体","External Integration":"外部集成","Data Analysis & Insights":"数据分析与洞察",Other:"其他"};function k2(){const n=Jt(),[r,c]=u.useState(null),[d,h]=u.useState(""),[x,f]=u.useState("all"),[j,p]=u.useState("all"),[w,v]=u.useState(!0),[k,T]=u.useState([]),[E,R]=u.useState(!0),[K,U]=u.useState(null),[A,Z]=u.useState(null),[H,z]=u.useState(null),[B,X]=u.useState(null),[,S]=u.useState([]),[O,te]=u.useState({}),{toast:he}=Hs(),Ne=async _=>{const me=_.map(async de=>{try{const ge=await Yg(de.id);return{id:de.id,stats:ge}}catch(ge){return console.warn(`Failed to load stats for ${de.id}:`,ge),{id:de.id,stats:null}}}),xe=await Promise.all(me),$={};xe.forEach(({id:de,stats:ge})=>{ge&&($[de]=ge)}),te($)};u.useEffect(()=>{let _=null,me=!1;return(async()=>{if(_=m2($=>{me||(z($),$.stage==="success"?setTimeout(()=>{me||z(null)},2e3):$.stage==="error"&&(R(!1),U($.error||"加载失败")))},$=>{console.error("WebSocket error:",$),me||he({title:"WebSocket 连接失败",description:"无法实时显示加载进度",variant:"destructive"})}),await new Promise($=>{if(!_){$();return}const de=()=>{_&&_.readyState===WebSocket.OPEN?(console.log("WebSocket connected, starting to load plugins"),$()):_&&_.readyState===WebSocket.CLOSED?(console.warn("WebSocket closed before loading plugins"),$()):setTimeout(de,100)};de()}),!me){const $=await o2();Z($),$.installed||he({title:"Git 未安装",description:$.error||"请先安装 Git 才能使用插件安装功能",variant:"destructive"})}if(!me){const $=await d2();X($)}if(!me)try{R(!0),U(null);const $=await c2();if(!me){const de=await cr();S(de);const ge=$.map(le=>{const L=Yc(le.id,de),F=Xc(le.id,de);return{...le,installed:L,installed_version:F}});for(const le of de)!ge.some(F=>F.id===le.id)&&le.manifest&&ge.push({id:le.id,manifest:{manifest_version:le.manifest.manifest_version||1,name:le.manifest.name,version:le.manifest.version,description:le.manifest.description||"",author:le.manifest.author,license:le.manifest.license||"Unknown",host_application:le.manifest.host_application,homepage_url:le.manifest.homepage_url,repository_url:le.manifest.repository_url,keywords:le.manifest.keywords||[],categories:le.manifest.categories||[],default_locale:le.manifest.default_locale||"zh-CN",locales_path:le.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!0,installed_version:le.manifest.version,published_at:new Date().toISOString(),updated_at:new Date().toISOString()});T(ge),Ne(ge)}}catch($){if(!me){const de=$ instanceof Error?$.message:"加载插件列表失败";U(de),he({title:"加载失败",description:de,variant:"destructive"})}}finally{me||R(!1)}})(),()=>{me=!0,_&&_.close()}},[he]);const ye=_=>{if(!_.installed&&B&&!pe(_))return e.jsxs(Ye,{variant:"destructive",className:"gap-1",children:[e.jsx(Da,{className:"h-3 w-3"}),"不兼容"]});if(_.installed){const me=_.installed_version?.trim(),xe=_.manifest.version?.trim();if(me!==xe){const $=me?.split(".").map(Number)||[0,0,0],de=xe?.split(".").map(Number)||[0,0,0];for(let ge=0;ge<3;ge++){if((de[ge]||0)>($[ge]||0))return e.jsxs(Ye,{variant:"outline",className:"gap-1 text-orange-600 border-orange-600",children:[e.jsx(Da,{className:"h-3 w-3"}),"可更新"]});if((de[ge]||0)<($[ge]||0))break}}return e.jsxs(Ye,{variant:"default",className:"gap-1",children:[e.jsx(pa,{className:"h-3 w-3"}),"已安装"]})}return null},pe=_=>!B||!_.manifest?.host_application?!0:u2(_.manifest.host_application.min_version,_.manifest.host_application.max_version,B),je=_=>{if(!_.installed||!_.installed_version||!_.manifest?.version)return!1;const me=_.installed_version.trim(),xe=_.manifest.version.trim();if(me===xe)return!1;const $=me.split(".").map(Number),de=xe.split(".").map(Number);for(let ge=0;ge<3;ge++){if((de[ge]||0)>($[ge]||0))return!0;if((de[ge]||0)<($[ge]||0))return!1}return!1},_e=k.filter(_=>{if(!_.manifest)return console.warn("[过滤] 跳过无 manifest 的插件:",_.id),!1;const me=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(ge=>ge.toLowerCase().includes(d.toLowerCase())),xe=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x);let $=!0;j==="installed"?$=_.installed===!0:j==="updates"&&($=_.installed===!0&&je(_));const de=!w||!B||pe(_);return me&&xe&&$&&de}),N=()=>{c(null)},G=async _=>{if(!A?.installed){he({title:"无法安装",description:"Git 未安装",variant:"destructive"});return}if(B&&!pe(_)){he({title:"无法安装",description:"插件与当前麦麦版本不兼容",variant:"destructive"});return}try{await h2(_.id,_.manifest.repository_url||"","main"),_2(_.id).catch(xe=>{console.warn("Failed to record download:",xe)}),he({title:"安装成功",description:`${_.manifest.name} 已成功安装`});const me=await cr();S(me),T(xe=>xe.map($=>{if($.id===_.id){const de=Yc($.id,me),ge=Xc($.id,me);return{...$,installed:de,installed_version:ge}}return $}))}catch(me){he({title:"安装失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}},q=async _=>{try{await x2(_.id),he({title:"卸载成功",description:`${_.manifest.name} 已成功卸载`});const me=await cr();S(me),T(xe=>xe.map($=>{if($.id===_.id){const de=Yc($.id,me),ge=Xc($.id,me);return{...$,installed:de,installed_version:ge}}return $}))}catch(me){he({title:"卸载失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}},ie=async _=>{if(!A?.installed){he({title:"无法更新",description:"Git 未安装",variant:"destructive"});return}try{const me=await f2(_.id,_.manifest.repository_url||"","main");he({title:"更新成功",description:`${_.manifest.name} 已从 ${me.old_version} 更新到 ${me.new_version}`});const xe=await cr();S(xe),T($=>$.map(de=>{if(de.id===_.id){const ge=Yc(de.id,xe),le=Xc(de.id,xe);return{...de,installed:ge,installed_version:le}}return de}))}catch(me){he({title:"更新失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}};return e.jsx(Pe,{className:"h-full",children:e.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件市场"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"浏览和管理麦麦的插件"})]}),e.jsxs(y,{onClick:()=>n({to:"/plugin-mirrors"}),children:[e.jsx($N,{className:"h-4 w-4 mr-2"}),"配置镜像源"]})]}),A&&!A.installed&&e.jsxs(Fe,{className:"border-orange-600 bg-orange-50 dark:bg-orange-950/20",children:[e.jsx(gs,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ba,{className:"h-5 w-5 text-orange-600"}),e.jsxs("div",{children:[e.jsx(js,{className:"text-lg text-orange-900 dark:text-orange-100",children:"Git 未安装"}),e.jsx(Zs,{className:"text-orange-800 dark:text-orange-200",children:A.error||"请先安装 Git 才能使用插件安装功能"})]})]})}),e.jsx(bs,{children:e.jsxs("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:["您可以从 ",e.jsx("a",{href:"https://git-scm.com/downloads",target:"_blank",rel:"noopener noreferrer",className:"underline font-medium",children:"git-scm.com"})," 下载并安装 Git。 安装完成后,请重启麦麦应用。"]})})]}),e.jsx(Fe,{className:"p-4",children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(_t,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索插件...",value:d,onChange:_=>h(_.target.value),className:"pl-9"})]}),e.jsxs(He,{value:x,onValueChange:f,children:[e.jsx(Re,{className:"w-full sm:w-[200px]",children:e.jsx(qe,{placeholder:"选择分类"})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部分类"}),e.jsx(ne,{value:"Group Management",children:"群组管理"}),e.jsx(ne,{value:"Entertainment & Interaction",children:"娱乐互动"}),e.jsx(ne,{value:"Utility Tools",children:"实用工具"}),e.jsx(ne,{value:"Content Generation",children:"内容生成"}),e.jsx(ne,{value:"Multimedia",children:"多媒体"}),e.jsx(ne,{value:"External Integration",children:"外部集成"}),e.jsx(ne,{value:"Data Analysis & Insights",children:"数据分析与洞察"}),e.jsx(ne,{value:"Other",children:"其他"})]})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(yt,{id:"compatible-only",checked:w,onCheckedChange:_=>v(_===!0)}),e.jsx("label",{htmlFor:"compatible-only",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer",children:"只显示兼容当前版本的插件"})]})]})}),e.jsx(Kt,{value:j,onValueChange:p,className:"w-full",children:e.jsxs(Rt,{className:"grid w-full grid-cols-3",children:[e.jsxs($e,{value:"all",children:["全部插件 (",k.filter(_=>{if(!_.manifest)return!1;const me=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(de=>de.toLowerCase().includes(d.toLowerCase())),xe=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x),$=!w||!B||pe(_);return me&&xe&&$}).length,")"]}),e.jsxs($e,{value:"installed",children:["已安装 (",k.filter(_=>{if(!_.manifest)return!1;const me=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(de=>de.toLowerCase().includes(d.toLowerCase())),xe=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x),$=!w||!B||pe(_);return _.installed&&me&&xe&&$}).length,")"]}),e.jsxs($e,{value:"updates",children:["可更新 (",k.filter(_=>{if(!_.manifest)return!1;const me=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(de=>de.toLowerCase().includes(d.toLowerCase())),xe=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x),$=!w||!B||pe(_);return _.installed&&je(_)&&me&&xe&&$}).length,")"]})]})}),H&&H.stage==="loading"&&e.jsx(Fe,{className:"p-4",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(vt,{className:"h-4 w-4 animate-spin"}),e.jsxs("span",{className:"text-sm font-medium",children:[H.operation==="fetch"&&"加载插件列表",H.operation==="install"&&`安装插件${H.plugin_id?`: ${H.plugin_id}`:""}`,H.operation==="uninstall"&&`卸载插件${H.plugin_id?`: ${H.plugin_id}`:""}`,H.operation==="update"&&`更新插件${H.plugin_id?`: ${H.plugin_id}`:""}`]})]}),e.jsxs("span",{className:"text-sm font-medium",children:[H.progress,"%"]})]}),e.jsx(Sr,{value:H.progress,className:"h-2"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:H.message}),H.operation==="fetch"&&H.total_plugins>0&&e.jsxs("div",{className:"text-xs text-muted-foreground text-center",children:["已加载 ",H.loaded_plugins," / ",H.total_plugins," 个插件"]})]})}),H&&H.stage==="error"&&H.error&&e.jsx(Fe,{className:"border-destructive bg-destructive/10",children:e.jsx(gs,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ba,{className:"h-5 w-5 text-destructive"}),e.jsxs("div",{children:[e.jsx(js,{className:"text-lg text-destructive",children:"加载失败"}),e.jsx(Zs,{className:"text-destructive/80",children:H.error})]})]})})}),E?e.jsxs("div",{className:"flex items-center justify-center py-12",children:[e.jsx(vt,{className:"h-8 w-8 animate-spin text-muted-foreground"}),e.jsx("span",{className:"ml-3 text-muted-foreground",children:"加载插件列表中..."})]}):K?e.jsx(Fe,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(ba,{className:"h-12 w-12 text-destructive mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:K}),e.jsx(y,{onClick:()=>window.location.reload(),children:"重新加载"})]})}):_e.length===0?e.jsx(Fe,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(_t,{className:"h-12 w-12 text-muted-foreground mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"未找到插件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:d||x!=="all"?"尝试调整搜索条件或筛选器":"暂无可用插件"})]})}):e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:_e.map(_=>e.jsxs(Fe,{className:"flex flex-col hover:shadow-lg transition-shadow h-full",children:[e.jsxs(gs,{children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsx(js,{className:"text-xl",children:_.manifest?.name||_.id}),e.jsxs("div",{className:"flex flex-col gap-1",children:[_.manifest?.categories&&_.manifest.categories[0]&&e.jsx(Ye,{variant:"secondary",className:"text-xs whitespace-nowrap",children:vp[_.manifest.categories[0]]||_.manifest.categories[0]}),ye(_)]})]}),e.jsx(Zs,{className:"line-clamp-2",children:_.manifest?.description||"无描述"})]}),e.jsx(bs,{className:"flex-1",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(nl,{className:"h-4 w-4"}),e.jsx("span",{children:(O[_.id]?.downloads??_.downloads??0).toLocaleString()})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ol,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsx("span",{children:(O[_.id]?.rating??_.rating??0).toFixed(1)})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[_.manifest?.keywords&&_.manifest.keywords.slice(0,3).map(me=>e.jsx(Ye,{variant:"outline",className:"text-xs",children:me},me)),_.manifest?.keywords&&_.manifest.keywords.length>3&&e.jsxs(Ye,{variant:"outline",className:"text-xs",children:["+",_.manifest.keywords.length-3]})]}),e.jsxs("div",{className:"text-xs text-muted-foreground pt-2 border-t space-y-1",children:[e.jsxs("div",{children:["v",_.manifest?.version||"unknown"," · ",_.manifest?.author?.name||"Unknown"]}),_.manifest?.host_application&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{children:"支持:"}),e.jsxs("span",{className:"font-medium",children:[_.manifest.host_application.min_version,_.manifest.host_application.max_version?` - ${_.manifest.host_application.max_version}`:" - 最新版本"]})]})]})]})}),e.jsx(Sg,{className:"pt-4",children:e.jsxs("div",{className:"flex items-center justify-end gap-2 w-full",children:[e.jsx(y,{variant:"outline",size:"sm",onClick:()=>c(_),children:"查看详情"}),_.installed?je(_)?e.jsxs(y,{size:"sm",disabled:!A?.installed,title:A?.installed?void 0:"Git 未安装",onClick:()=>ie(_),children:[e.jsx(pt,{className:"h-4 w-4 mr-1"}),"更新"]}):e.jsxs(y,{variant:"destructive",size:"sm",disabled:!A?.installed,title:A?.installed?void 0:"Git 未安装",onClick:()=>q(_),children:[e.jsx(es,{className:"h-4 w-4 mr-1"}),"卸载"]}):e.jsxs(y,{size:"sm",disabled:!A?.installed||H?.operation==="install"||B!==null&&!pe(_),title:A?.installed?B!==null&&!pe(_)?`不兼容当前版本 (需要 ${_.manifest?.host_application?.min_version||"未知"}${_.manifest?.host_application?.max_version?` - ${_.manifest.host_application.max_version}`:"+"},当前 ${B?.version})`:void 0:"Git 未安装",onClick:()=>G(_),children:[e.jsx(nl,{className:"h-4 w-4 mr-1"}),H?.operation==="install"&&H?.plugin_id===_.id?"安装中...":"安装"]})]})})]},_.id))}),e.jsx(Rs,{open:r!==null,onOpenChange:N,children:r&&r.manifest&&e.jsx(zs,{className:"max-w-2xl max-h-[80vh] p-0 flex flex-col",children:e.jsx(Pe,{className:"flex-1 overflow-auto",children:e.jsxs("div",{className:"p-6",children:[e.jsx(Ms,{children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"space-y-2 flex-1",children:[e.jsx(As,{className:"text-2xl",children:r.manifest.name}),e.jsxs(Ys,{children:["作者: ",r.manifest.author?.name||"Unknown",r.manifest.author?.url&&e.jsx("a",{href:r.manifest.author.url,target:"_blank",rel:"noopener noreferrer",className:"ml-2 text-primary hover:underline",children:e.jsx(dr,{className:"h-3 w-3 inline"})})]})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[r.manifest.categories&&r.manifest.categories[0]&&e.jsx(Ye,{variant:"secondary",children:vp[r.manifest.categories[0]]||r.manifest.categories[0]}),ye(r)]})]})}),e.jsxs("div",{className:"space-y-6",children:[e.jsx(C2,{pluginId:r.id}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"版本"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["v",r.manifest?.version||"unknown"]}),r.installed&&r.installed_version&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:["已安装: v",r.installed_version]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"下载量"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:(O[r.id]?.downloads??r.downloads??0).toLocaleString()})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"评分"}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ol,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[(O[r.id]?.rating??r.rating??0).toFixed(1)," (",O[r.id]?.rating_count??r.review_count??0,")"]})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"许可证"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:r.manifest.license||"Unknown"})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("p",{className:"text-sm font-medium",children:"支持版本"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:[r.manifest.host_application?.min_version||"未知",r.manifest.host_application?.max_version?` - ${r.manifest.host_application.max_version}`:" - 最新版本"]})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"关键词"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:r.manifest.keywords&&r.manifest.keywords.map(_=>e.jsx(Ye,{variant:"outline",children:_},_))})]}),r.detailed_description&&e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"详细说明"}),e.jsx("p",{className:"text-sm text-muted-foreground whitespace-pre-line",children:r.detailed_description})]}),!r.detailed_description&&e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"说明"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:r.manifest.description||"无描述"})]}),e.jsxs("div",{className:"space-y-2",children:[r.manifest.homepage_url&&e.jsxs("div",{className:"text-sm",children:[e.jsx("span",{className:"font-medium",children:"主页: "}),e.jsx("a",{href:r.manifest.homepage_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:r.manifest.homepage_url})]}),r.manifest.repository_url&&e.jsxs("div",{className:"text-sm",children:[e.jsx("span",{className:"font-medium",children:"仓库: "}),e.jsx("a",{href:r.manifest.repository_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:r.manifest.repository_url})]})]})]}),e.jsxs(Js,{children:[r.manifest.homepage_url&&e.jsxs(y,{onClick:()=>window.open(r.manifest.homepage_url,"_blank"),children:[e.jsx(dr,{className:"h-4 w-4 mr-2"}),"访问主页"]}),r.manifest.repository_url&&e.jsxs(y,{variant:"outline",onClick:()=>window.open(r.manifest.repository_url,"_blank"),children:[e.jsx(dr,{className:"h-4 w-4 mr-2"}),"查看仓库"]})]})]})})})})]})})}const Gu=$y,Vu=Qy,Fu=Yy;function T2({field:n,value:r,onChange:c}){const[d,h]=u.useState(!1);switch(n.ui_type){case"switch":return e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:n.label}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]}),e.jsx(Ve,{checked:!!r,onCheckedChange:c,disabled:n.disabled})]});case"number":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsx(ce,{type:"number",value:r??n.default,onChange:x=>c(parseFloat(x.target.value)||0),min:n.min,max:n.max,step:n.step??1,placeholder:n.placeholder,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"slider":return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:n.label}),e.jsx("span",{className:"text-sm text-muted-foreground",children:r??n.default})]}),e.jsx(Ma,{value:[r??n.default],onValueChange:x=>c(x[0]),min:n.min??0,max:n.max??100,step:n.step??1,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"select":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsxs(He,{value:String(r??n.default),onValueChange:c,disabled:n.disabled,children:[e.jsx(Re,{children:e.jsx(qe,{placeholder:n.placeholder??"请选择"})}),e.jsx(Le,{children:n.choices?.map(x=>e.jsx(ne,{value:String(x),children:String(x)},String(x)))})]}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"textarea":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsx(Bs,{value:r??n.default,onChange:x=>c(x.target.value),placeholder:n.placeholder,rows:n.rows??3,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"password":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsxs("div",{className:"relative",children:[e.jsx(ce,{type:d?"text":"password",value:r??"",onChange:x=>c(x.target.value),placeholder:n.placeholder,disabled:n.disabled,className:"pr-10"}),e.jsx(y,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-3",onClick:()=>h(!d),children:d?e.jsx(mr,{className:"h-4 w-4"}):e.jsx(Zt,{className:"h-4 w-4"})})]}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"text":default:return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsx(ce,{type:"text",value:r??n.default??"",onChange:x=>c(x.target.value),placeholder:n.placeholder,maxLength:n.max_length,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]})}}function yp({section:n,config:r,onChange:c}){const[d,h]=u.useState(!n.collapsed),x=Object.entries(n.fields).filter(([,f])=>!f.hidden).sort(([,f],[,j])=>f.order-j.order);return e.jsx(Gu,{open:d,onOpenChange:h,children:e.jsxs(Fe,{children:[e.jsx(Vu,{asChild:!0,children:e.jsxs(gs,{className:"cursor-pointer hover:bg-muted/50 transition-colors",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[d?e.jsx(Ll,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(il,{className:"h-4 w-4 text-muted-foreground"}),e.jsx(js,{className:"text-lg",children:n.title})]}),e.jsxs(Ye,{variant:"secondary",className:"text-xs",children:[x.length," 项"]})]}),n.description&&e.jsx(Zs,{className:"ml-6",children:n.description})]})}),e.jsx(Fu,{children:e.jsx(bs,{className:"space-y-4 pt-0",children:x.map(([f,j])=>e.jsx(T2,{field:j,value:r[n.name]?.[f],onChange:p=>c(n.name,f,p),sectionName:n.name},f))})})]})})}function E2({plugin:n,onBack:r}){const{toast:c}=Hs(),[d,h]=u.useState(null),[x,f]=u.useState({}),[j,p]=u.useState({}),[w,v]=u.useState(!0),[k,T]=u.useState(!1),[E,R]=u.useState(!1),[K,U]=u.useState(!1),A=u.useCallback(async()=>{v(!0);try{const[O,te]=await Promise.all([p2(n.id),g2(n.id)]);h(O),f(te),p(JSON.parse(JSON.stringify(te)))}catch(O){c({title:"加载配置失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}finally{v(!1)}},[n.id,c]);u.useEffect(()=>{A()},[A]),u.useEffect(()=>{R(JSON.stringify(x)!==JSON.stringify(j))},[x,j]);const Z=(O,te,he)=>{f(Ne=>({...Ne,[O]:{...Ne[O]||{},[te]:he}}))},H=async()=>{T(!0);try{await j2(n.id,x),p(JSON.parse(JSON.stringify(x))),c({title:"配置已保存",description:"更改将在插件重新加载后生效"})}catch(O){c({title:"保存失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}finally{T(!1)}},z=async()=>{try{await v2(n.id),c({title:"配置已重置",description:"下次加载插件时将使用默认配置"}),U(!1),A()}catch(O){c({title:"重置失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}},B=async()=>{try{const O=await y2(n.id);c({title:O.message,description:O.note}),A()}catch(O){c({title:"切换状态失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}};if(w)return e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx(vt,{className:"h-8 w-8 animate-spin text-muted-foreground"})});if(!d)return e.jsxs("div",{className:"flex flex-col items-center justify-center h-64 space-y-4",children:[e.jsx(Da,{className:"h-12 w-12 text-muted-foreground"}),e.jsx("p",{className:"text-muted-foreground",children:"无法加载配置"}),e.jsxs(y,{onClick:r,variant:"outline",children:[e.jsx(ti,{className:"h-4 w-4 mr-2"}),"返回"]})]});const X=Object.values(d.sections).sort((O,te)=>O.order-te.order),S=x.plugin?.enabled!==!1;return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(y,{variant:"ghost",size:"icon",onClick:r,children:e.jsx(ti,{className:"h-5 w-5"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:d.plugin_info.name||n.manifest.name}),e.jsxs("div",{className:"flex items-center gap-2 mt-1",children:[e.jsx(Ye,{variant:S?"default":"secondary",children:S?"已启用":"已禁用"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["v",d.plugin_info.version||n.manifest.version]})]})]})]}),e.jsxs("div",{className:"flex gap-2 ml-10 sm:ml-0",children:[e.jsxs(y,{variant:"outline",size:"sm",onClick:B,children:[e.jsx(Nr,{className:"h-4 w-4 mr-2"}),S?"禁用":"启用"]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:()=>U(!0),children:[e.jsx(Wc,{className:"h-4 w-4 mr-2"}),"重置"]}),e.jsxs(y,{size:"sm",onClick:H,disabled:!E||k,children:[k?e.jsx(vt,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(br,{className:"h-4 w-4 mr-2"}),"保存"]})]})]}),E&&e.jsx(Fe,{className:"border-orange-200 bg-orange-50 dark:bg-orange-950/20 dark:border-orange-900",children:e.jsx(bs,{className:"py-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Xt,{className:"h-4 w-4 text-orange-600"}),e.jsx("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:"有未保存的更改"})]})})}),d.layout.type==="tabs"&&d.layout.tabs.length>0?e.jsxs(Kt,{defaultValue:d.layout.tabs[0]?.id,children:[e.jsx(Rt,{children:d.layout.tabs.map(O=>e.jsxs($e,{value:O.id,children:[O.title,O.badge&&e.jsx(Ye,{variant:"secondary",className:"ml-2 text-xs",children:O.badge})]},O.id))}),d.layout.tabs.map(O=>e.jsx(We,{value:O.id,className:"space-y-4 mt-4",children:O.sections.map(te=>{const he=d.sections[te];return he?e.jsx(yp,{section:he,config:x,onChange:Z},te):null})},O.id))]}):e.jsx("div",{className:"space-y-4",children:X.map(O=>e.jsx(yp,{section:O,config:x,onChange:Z},O.name))}),e.jsx(Rs,{open:K,onOpenChange:U,children:e.jsxs(zs,{children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"确认重置配置"}),e.jsx(Ys,{children:"这将删除当前配置文件,下次加载插件时将使用默认配置。此操作不可撤销。"})]}),e.jsxs(Js,{children:[e.jsx(y,{variant:"outline",onClick:()=>U(!1),children:"取消"}),e.jsx(y,{variant:"destructive",onClick:z,children:"确认重置"})]})]})})]})}function z2(){const{toast:n}=Hs(),[r,c]=u.useState([]),[d,h]=u.useState(!0),[x,f]=u.useState(""),[j,p]=u.useState(null),w=async()=>{h(!0);try{const E=await cr();c(E)}catch(E){n({title:"加载插件列表失败",description:E instanceof Error?E.message:"未知错误",variant:"destructive"})}finally{h(!1)}};u.useEffect(()=>{w()},[]);const v=r.filter(E=>{const R=x.toLowerCase();return E.id.toLowerCase().includes(R)||E.manifest.name.toLowerCase().includes(R)||E.manifest.description?.toLowerCase().includes(R)}),k=r.length,T=0;return j?e.jsx(Pe,{className:"h-full",children:e.jsx("div",{className:"p-4 sm:p-6",children:e.jsx(E2,{plugin:j,onBack:()=>p(null)})})}):e.jsx(Pe,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理和配置已安装的插件"})]}),e.jsxs(y,{variant:"outline",size:"sm",onClick:w,children:[e.jsx(pt,{className:`h-4 w-4 mr-2 ${d?"animate-spin":""}`}),"刷新"]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-3",children:[e.jsxs(Fe,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"已安装插件"}),e.jsx(rn,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(bs,{children:[e.jsx("div",{className:"text-2xl font-bold",children:r.length}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:d?"正在加载...":"个插件"})]})]}),e.jsxs(Fe,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"已启用"}),e.jsx(pa,{className:"h-4 w-4 text-green-600"})]}),e.jsxs(bs,{children:[e.jsx("div",{className:"text-2xl font-bold",children:k}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"运行中的插件"})]})]}),e.jsxs(Fe,{children:[e.jsxs(gs,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(js,{className:"text-sm font-medium",children:"已禁用"}),e.jsx(Da,{className:"h-4 w-4 text-orange-600"})]}),e.jsxs(bs,{children:[e.jsx("div",{className:"text-2xl font-bold",children:T}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"未激活的插件"})]})]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(_t,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索插件...",value:x,onChange:E=>f(E.target.value),className:"pl-9"})]}),e.jsxs(Fe,{children:[e.jsxs(gs,{children:[e.jsx(js,{children:"已安装的插件"}),e.jsx(Zs,{children:"点击插件查看和编辑配置"})]}),e.jsx(bs,{children:d?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(vt,{className:"h-8 w-8 animate-spin text-muted-foreground"})}):v.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 space-y-4",children:[e.jsx(rn,{className:"h-16 w-16 text-muted-foreground/50"}),e.jsxs("div",{className:"text-center space-y-2",children:[e.jsx("p",{className:"text-lg font-medium text-muted-foreground",children:x?"没有找到匹配的插件":"暂无已安装的插件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:x?"尝试其他搜索关键词":"前往插件市场安装插件"})]})]}):e.jsx("div",{className:"space-y-2",children:v.map(E=>e.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg border hover:bg-muted/50 cursor-pointer transition-colors",onClick:()=>p(E),children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[e.jsx("div",{className:"h-10 w-10 rounded-lg bg-primary/10 flex items-center justify-center flex-shrink-0",children:e.jsx(rn,{className:"h-5 w-5 text-primary"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-medium truncate",children:E.manifest.name}),e.jsxs(Ye,{variant:"secondary",className:"text-xs flex-shrink-0",children:["v",E.manifest.version]})]}),e.jsx("p",{className:"text-sm text-muted-foreground truncate",children:E.manifest.description||"暂无描述"})]})]}),e.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[e.jsx(y,{variant:"ghost",size:"sm",children:e.jsx(Rl,{className:"h-4 w-4"})}),e.jsx(il,{className:"h-4 w-4 text-muted-foreground"})]})]},E.id))})})]})]})})}function M2(){const n=Jt(),{toast:r}=Hs(),[c,d]=u.useState([]),[h,x]=u.useState(!0),[f,j]=u.useState(null),[p,w]=u.useState(null),[v,k]=u.useState(!1),[T,E]=u.useState(!1),[R,K]=u.useState({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),U=u.useCallback(async()=>{try{x(!0),j(null);const S=localStorage.getItem("access-token"),O=await fetch("/api/webui/plugins/mirrors",{headers:{Authorization:`Bearer ${S}`}});if(!O.ok)throw new Error("获取镜像源列表失败");const te=await O.json();d(te.mirrors||[])}catch(S){const O=S instanceof Error?S.message:"加载镜像源失败";j(O),r({title:"加载失败",description:O,variant:"destructive"})}finally{x(!1)}},[r]);u.useEffect(()=>{U()},[U]);const A=async()=>{try{const S=localStorage.getItem("access-token"),O=await fetch("/api/webui/plugins/mirrors",{method:"POST",headers:{Authorization:`Bearer ${S}`,"Content-Type":"application/json"},body:JSON.stringify(R)});if(!O.ok){const te=await O.json();throw new Error(te.detail||"添加镜像源失败")}r({title:"添加成功",description:"镜像源已添加"}),k(!1),K({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),U()}catch(S){r({title:"添加失败",description:S instanceof Error?S.message:"未知错误",variant:"destructive"})}},Z=async()=>{if(p)try{const S=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${p.id}`,{method:"PUT",headers:{Authorization:`Bearer ${S}`,"Content-Type":"application/json"},body:JSON.stringify({name:R.name,raw_prefix:R.raw_prefix,clone_prefix:R.clone_prefix,enabled:R.enabled,priority:R.priority})})).ok)throw new Error("更新镜像源失败");r({title:"更新成功",description:"镜像源已更新"}),E(!1),w(null),U()}catch(S){r({title:"更新失败",description:S instanceof Error?S.message:"未知错误",variant:"destructive"})}},H=async S=>{if(confirm("确定要删除这个镜像源吗?"))try{const O=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${S}`,{method:"DELETE",headers:{Authorization:`Bearer ${O}`}})).ok)throw new Error("删除镜像源失败");r({title:"删除成功",description:"镜像源已删除"}),U()}catch(O){r({title:"删除失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}},z=async S=>{try{const O=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${S.id}`,{method:"PUT",headers:{Authorization:`Bearer ${O}`,"Content-Type":"application/json"},body:JSON.stringify({enabled:!S.enabled})})).ok)throw new Error("更新状态失败");U()}catch(O){r({title:"更新失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}},B=S=>{w(S),K({id:S.id,name:S.name,raw_prefix:S.raw_prefix,clone_prefix:S.clone_prefix,enabled:S.enabled,priority:S.priority}),E(!0)},X=async(S,O)=>{const te=O==="up"?S.priority-1:S.priority+1;if(!(te<1))try{const he=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${S.id}`,{method:"PUT",headers:{Authorization:`Bearer ${he}`,"Content-Type":"application/json"},body:JSON.stringify({priority:te})})).ok)throw new Error("更新优先级失败");U()}catch(he){r({title:"更新失败",description:he instanceof Error?he.message:"未知错误",variant:"destructive"})}};return e.jsx(Pe,{className:"h-full",children:e.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(y,{variant:"ghost",size:"icon",onClick:()=>n({to:"/plugins"}),children:e.jsx(ti,{className:"h-5 w-5"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"镜像源配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理 Git 克隆和文件下载的镜像源"})]})]}),e.jsxs(y,{onClick:()=>k(!0),children:[e.jsx(ot,{className:"h-4 w-4 mr-2"}),"添加镜像源"]})]}),h?e.jsx(Fe,{className:"p-6",children:e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(vt,{className:"h-8 w-8 animate-spin text-primary"})})}):f?e.jsx(Fe,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(ba,{className:"h-12 w-12 text-destructive mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:f}),e.jsx(y,{onClick:U,children:"重新加载"})]})}):e.jsxs(Fe,{children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(ii,{children:[e.jsx(ri,{children:e.jsxs(gt,{children:[e.jsx(ls,{children:"状态"}),e.jsx(ls,{children:"名称"}),e.jsx(ls,{children:"ID"}),e.jsx(ls,{children:"优先级"}),e.jsx(ls,{className:"text-right",children:"操作"})]})}),e.jsx(ci,{children:c.map(S=>e.jsxs(gt,{children:[e.jsx(Qe,{children:e.jsx(Ve,{checked:S.enabled,onCheckedChange:()=>z(S)})}),e.jsx(Qe,{children:e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:S.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1",children:["Raw: ",S.raw_prefix]})]})}),e.jsx(Qe,{children:e.jsx(Ye,{variant:"outline",children:S.id})}),e.jsx(Qe,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-mono",children:S.priority}),e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx(y,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>X(S,"up"),disabled:S.priority===1,children:e.jsx(fr,{className:"h-3 w-3"})}),e.jsx(y,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>X(S,"down"),children:e.jsx(Ll,{className:"h-3 w-3"})})]})]})}),e.jsx(Qe,{className:"text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-2",children:[e.jsx(y,{variant:"ghost",size:"icon",onClick:()=>B(S),children:e.jsx(nn,{className:"h-4 w-4"})}),e.jsx(y,{variant:"ghost",size:"icon",onClick:()=>H(S.id),children:e.jsx(es,{className:"h-4 w-4 text-destructive"})})]})})]},S.id))})]})}),e.jsx("div",{className:"md:hidden p-4 space-y-4",children:c.map(S=>e.jsx(Fe,{className:"p-4",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-semibold",children:S.name}),S.enabled&&e.jsx(Ye,{variant:"default",className:"text-xs",children:"启用"})]}),e.jsx(Ye,{variant:"outline",className:"mt-1 text-xs",children:S.id})]}),e.jsx(Ve,{checked:S.enabled,onCheckedChange:()=>z(S)})]}),e.jsxs("div",{className:"text-sm space-y-1",children:[e.jsxs("div",{className:"text-muted-foreground",children:[e.jsx("span",{className:"font-medium",children:"Raw: "}),e.jsx("span",{className:"break-all",children:S.raw_prefix})]}),e.jsxs("div",{className:"text-muted-foreground",children:[e.jsx("span",{className:"font-medium",children:"优先级: "}),e.jsx("span",{className:"font-mono",children:S.priority})]})]}),e.jsxs("div",{className:"flex items-center gap-2 pt-2 border-t",children:[e.jsxs(y,{variant:"outline",size:"sm",className:"flex-1",onClick:()=>B(S),children:[e.jsx(nn,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsx(y,{variant:"outline",size:"sm",onClick:()=>X(S,"up"),disabled:S.priority===1,children:e.jsx(fr,{className:"h-4 w-4"})}),e.jsx(y,{variant:"outline",size:"sm",onClick:()=>X(S,"down"),children:e.jsx(Ll,{className:"h-4 w-4"})}),e.jsx(y,{variant:"destructive",size:"sm",onClick:()=>H(S.id),children:e.jsx(es,{className:"h-4 w-4"})})]})]})},S.id))})]}),e.jsx(Rs,{open:v,onOpenChange:k,children:e.jsxs(zs,{className:"max-w-lg",children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"添加镜像源"}),e.jsx(Ys,{children:"添加新的 Git 镜像源配置"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-id",children:"镜像源 ID *"}),e.jsx(ce,{id:"add-id",placeholder:"例如: my-mirror",value:R.id,onChange:S=>K({...R,id:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-name",children:"名称 *"}),e.jsx(ce,{id:"add-name",placeholder:"例如: 我的镜像源",value:R.name,onChange:S=>K({...R,name:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-raw",children:"Raw 文件前缀 *"}),e.jsx(ce,{id:"add-raw",placeholder:"https://example.com/raw",value:R.raw_prefix,onChange:S=>K({...R,raw_prefix:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-clone",children:"克隆前缀 *"}),e.jsx(ce,{id:"add-clone",placeholder:"https://example.com/clone",value:R.clone_prefix,onChange:S=>K({...R,clone_prefix:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-priority",children:"优先级"}),e.jsx(ce,{id:"add-priority",type:"number",min:"1",value:R.priority,onChange:S=>K({...R,priority:parseInt(S.target.value)||1})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"add-enabled",checked:R.enabled,onCheckedChange:S=>K({...R,enabled:S})}),e.jsx(b,{htmlFor:"add-enabled",children:"启用此镜像源"})]})]}),e.jsxs(Js,{children:[e.jsx(y,{variant:"outline",onClick:()=>k(!1),children:"取消"}),e.jsx(y,{onClick:A,children:"添加"})]})]})}),e.jsx(Rs,{open:T,onOpenChange:E,children:e.jsxs(zs,{className:"max-w-lg",children:[e.jsxs(Ms,{children:[e.jsx(As,{children:"编辑镜像源"}),e.jsx(Ys,{children:"修改镜像源配置"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"镜像源 ID"}),e.jsx(ce,{value:R.id,disabled:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit-name",children:"名称 *"}),e.jsx(ce,{id:"edit-name",value:R.name,onChange:S=>K({...R,name:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit-raw",children:"Raw 文件前缀 *"}),e.jsx(ce,{id:"edit-raw",value:R.raw_prefix,onChange:S=>K({...R,raw_prefix:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit-clone",children:"克隆前缀 *"}),e.jsx(ce,{id:"edit-clone",value:R.clone_prefix,onChange:S=>K({...R,clone_prefix:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit-priority",children:"优先级"}),e.jsx(ce,{id:"edit-priority",type:"number",min:"1",value:R.priority,onChange:S=>K({...R,priority:parseInt(S.target.value)||1})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ve,{id:"edit-enabled",checked:R.enabled,onCheckedChange:S=>K({...R,enabled:S})}),e.jsx(b,{htmlFor:"edit-enabled",children:"启用此镜像源"})]})]}),e.jsxs(Js,{children:[e.jsx(y,{variant:"outline",onClick:()=>E(!1),children:"取消"}),e.jsx(y,{onClick:Z,children:"保存"})]})]})})]})})}const Ic=u.forwardRef(({className:n,...r},c)=>e.jsx(Bp,{ref:c,className:Q("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",n),...r}));Ic.displayName=Bp.displayName;const A2=u.forwardRef(({className:n,...r},c)=>e.jsx(Hp,{ref:c,className:Q("aspect-square h-full w-full",n),...r}));A2.displayName=Hp.displayName;const Pc=u.forwardRef(({className:n,...r},c)=>e.jsx(qp,{ref:c,className:Q("flex h-full w-full items-center justify-center rounded-full bg-muted",n),...r}));Pc.displayName=qp.displayName;function D2(){return"webui_"+Math.random().toString(36).substr(2,9)+"_"+Date.now().toString(36)}function O2(){const n="maibot_webui_user_id";let r=localStorage.getItem(n);return r||(r=D2(),localStorage.setItem(n,r)),r}function R2(){return localStorage.getItem("maibot_webui_user_name")||"WebUI用户"}function L2(n){localStorage.setItem("maibot_webui_user_name",n)}function U2(){const[n,r]=u.useState([]),[c,d]=u.useState(""),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,w]=u.useState(!1),[v,k]=u.useState(!0),[T,E]=u.useState(R2()),[R,K]=u.useState(!1),[U,A]=u.useState(""),[Z,H]=u.useState({}),z=u.useRef(O2()),B=u.useRef(null),X=u.useRef(null),S=u.useRef(null),O=u.useRef(0),te=u.useRef(new Set),{toast:he}=Hs(),Ne=$=>(O.current+=1,`${$}-${Date.now()}-${O.current}-${Math.random().toString(36).substr(2,9)}`),ye=u.useCallback(()=>{X.current?.scrollIntoView({behavior:"smooth"})},[]);u.useEffect(()=>{ye()},[n,ye]);const pe=u.useCallback(async()=>{k(!0);try{const $=`/api/chat/history?user_id=${z.current}&limit=50`;console.log("[Chat] 正在加载历史消息:",$);const de=await fetch($);if(console.log("[Chat] 历史消息响应状态:",de.status,de.statusText),console.log("[Chat] 响应 Content-Type:",de.headers.get("content-type")),de.ok){const ge=await de.text();console.log("[Chat] 响应内容前100字符:",ge.substring(0,100));try{const le=JSON.parse(ge);if(console.log("[Chat] 解析后的数据:",le),le.messages&&le.messages.length>0){const L=le.messages.map(F=>({id:F.id,type:F.type,content:F.content,timestamp:F.timestamp,sender:{name:F.sender_name||(F.is_bot?"麦麦":"WebUI用户"),user_id:F.user_id,is_bot:F.is_bot}}));r(L),console.log("[Chat] 已加载历史消息数量:",L.length),L.forEach(F=>{if(F.type==="bot"){const D=`bot-${F.content}-${Math.floor(F.timestamp*1e3)}`;te.current.add(D)}})}else console.log("[Chat] 没有历史消息")}catch(le){console.error("[Chat] JSON 解析失败:",le),console.error("[Chat] 原始响应内容:",ge)}}else{console.error("[Chat] 响应失败:",de.status);const ge=await de.text();console.error("[Chat] 错误响应内容:",ge.substring(0,200))}}catch($){console.error("[Chat] 加载历史消息失败:",$)}finally{k(!1)}},[]),je=u.useCallback(()=>{if(B.current?.readyState===WebSocket.OPEN||B.current?.readyState===WebSocket.CONNECTING){console.log("WebSocket 已存在,跳过连接");return}j(!0);const de=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/api/chat/ws?user_id=${encodeURIComponent(z.current)}&user_name=${encodeURIComponent(T)}`;console.log("正在连接 WebSocket:",de);try{const ge=new WebSocket(de);B.current=ge,ge.onopen=()=>{x(!0),j(!1),console.log("WebSocket 已连接")},ge.onmessage=le=>{try{const L=JSON.parse(le.data);switch(L.type){case"session_info":H({session_id:L.session_id,user_id:L.user_id,user_name:L.user_name,bot_name:L.bot_name});break;case"system":r(F=>[...F,{id:Ne("sys"),type:"system",content:L.content||"",timestamp:L.timestamp||Date.now()/1e3}]);break;case"user_message":r(F=>[...F,{id:L.message_id||Ne("user"),type:"user",content:L.content||"",timestamp:L.timestamp||Date.now()/1e3,sender:L.sender}]);break;case"bot_message":{w(!1);const F=`bot-${L.content}-${Math.floor((L.timestamp||0)*1e3)}`;if(te.current.has(F)){console.log("跳过重复的机器人消息");break}if(te.current.add(F),te.current.size>100){const D=te.current.values().next().value;D&&te.current.delete(D)}r(D=>[...D,{id:Ne("bot"),type:"bot",content:L.content||"",timestamp:L.timestamp||Date.now()/1e3,sender:L.sender}]);break}case"typing":w(L.is_typing||!1);break;case"error":r(F=>[...F,{id:Ne("error"),type:"error",content:L.content||"发生错误",timestamp:L.timestamp||Date.now()/1e3}]),he({title:"错误",description:L.content,variant:"destructive"});break;case"pong":break;default:console.log("未知消息类型:",L.type)}}catch(L){console.error("解析消息失败:",L)}},ge.onclose=()=>{x(!1),j(!1),B.current=null,console.log("WebSocket 已断开"),S.current&&clearTimeout(S.current),S.current=window.setTimeout(()=>{_e.current||je()},5e3)},ge.onerror=le=>{console.error("WebSocket 错误:",le),j(!1)}}catch(ge){console.error("创建 WebSocket 失败:",ge),j(!1)}},[he,T]),_e=u.useRef(!1);u.useEffect(()=>{_e.current=!1,pe();const $=setTimeout(()=>{_e.current||je()},100),de=setInterval(()=>{B.current?.readyState===WebSocket.OPEN&&B.current.send(JSON.stringify({type:"ping"}))},3e4);return()=>{_e.current=!0,clearTimeout($),clearInterval(de),S.current&&(clearTimeout(S.current),S.current=null),B.current&&(B.current.close(),B.current=null)}},[je,pe]);const N=u.useCallback(()=>{!c.trim()||!B.current||B.current.readyState!==WebSocket.OPEN||(B.current.send(JSON.stringify({type:"message",content:c.trim(),user_name:T})),d(""))},[c,T]),G=$=>{$.key==="Enter"&&!$.shiftKey&&($.preventDefault(),N())},q=()=>{A(T),K(!0)},ie=()=>{const $=U.trim()||"WebUI用户";E($),L2($),K(!1),B.current?.readyState===WebSocket.OPEN&&B.current.send(JSON.stringify({type:"update_nickname",user_name:$}))},_=()=>{A(""),K(!1)},me=$=>new Date($*1e3).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"}),xe=()=>{B.current&&B.current.close(),je()};return e.jsxs("div",{className:"h-full flex flex-col",children:[e.jsx("div",{className:"shrink-0 border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:e.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 sm:gap-3 min-w-0",children:[e.jsx(Ic,{className:"h-8 w-8 sm:h-10 sm:w-10 shrink-0",children:e.jsx(Pc,{className:"bg-primary/10 text-primary",children:e.jsx(ir,{className:"h-4 w-4 sm:h-5 sm:w-5"})})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h1",{className:"text-base sm:text-lg font-semibold truncate",children:Z.bot_name||"麦麦"}),e.jsx("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:h?e.jsxs(e.Fragment,{children:[e.jsx(QN,{className:"h-3 w-3 text-green-500"}),e.jsx("span",{className:"text-green-600 dark:text-green-400",children:"已连接"})]}):f?e.jsxs(e.Fragment,{children:[e.jsx(vt,{className:"h-3 w-3 animate-spin"}),e.jsx("span",{children:"连接中..."})]}):e.jsxs(e.Fragment,{children:[e.jsx(YN,{className:"h-3 w-3 text-red-500"}),e.jsx("span",{className:"text-red-600 dark:text-red-400",children:"未连接"})]})})]})]}),e.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[v&&e.jsx(vt,{className:"h-4 w-4 animate-spin text-muted-foreground"}),e.jsx(y,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:xe,disabled:f,title:"重新连接",children:e.jsx(pt,{className:Q("h-4 w-4",f&&"animate-spin")})})]})]}),e.jsxs("div",{className:"hidden sm:flex items-center gap-2 mt-2 text-sm text-muted-foreground",children:[e.jsx(to,{className:"h-3 w-3"}),e.jsx("span",{children:"当前身份:"}),R?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{value:U,onChange:$=>A($.target.value),onKeyDown:$=>{$.key==="Enter"&&ie(),$.key==="Escape"&&_()},className:"h-7 w-32",placeholder:"输入昵称",autoFocus:!0}),e.jsx(y,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:ie,children:"保存"}),e.jsx(y,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:_,children:"取消"})]}):e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"font-medium text-foreground",children:T}),e.jsx(y,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0",onClick:q,title:"修改昵称",children:e.jsx(XN,{className:"h-3 w-3"})})]})]})]})}),e.jsx("div",{className:"flex-1 overflow-hidden",children:e.jsx(Pe,{className:"h-full",children:e.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto space-y-3 sm:space-y-4",children:[n.length===0&&!v&&e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-muted-foreground",children:[e.jsx(ir,{className:"h-12 w-12 mb-4 opacity-50"}),e.jsxs("p",{className:"text-sm",children:["开始与 ",Z.bot_name||"麦麦"," 对话吧!"]})]}),n.map($=>e.jsxs("div",{className:Q("flex gap-2 sm:gap-3",$.type==="user"&&"flex-row-reverse",$.type==="system"&&"justify-center",$.type==="error"&&"justify-center"),children:[$.type==="system"&&e.jsx("div",{className:"text-xs text-muted-foreground bg-muted/50 px-3 py-1 rounded-full max-w-[90%]",children:$.content}),$.type==="error"&&e.jsx("div",{className:"text-xs text-red-600 dark:text-red-400 bg-red-100 dark:bg-red-900/30 px-3 py-1 rounded-full max-w-[90%]",children:$.content}),($.type==="user"||$.type==="bot")&&e.jsxs(e.Fragment,{children:[e.jsx(Ic,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:e.jsx(Pc,{className:Q("text-xs",$.type==="bot"?"bg-primary/10 text-primary":"bg-secondary text-secondary-foreground"),children:$.type==="bot"?e.jsx(ir,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}):e.jsx(to,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),e.jsxs("div",{className:Q("flex flex-col gap-1 max-w-[75%] sm:max-w-[70%]",$.type==="user"&&"items-end"),children:[e.jsxs("div",{className:"flex items-center gap-2 text-[10px] sm:text-xs text-muted-foreground",children:[e.jsx("span",{className:"hidden sm:inline",children:$.sender?.name||($.type==="bot"?Z.bot_name:T)}),e.jsx("span",{children:me($.timestamp)})]}),e.jsx("div",{className:Q("rounded-2xl px-3 py-2 text-sm whitespace-pre-wrap break-words",$.type==="bot"?"bg-muted rounded-tl-sm":"bg-primary text-primary-foreground rounded-tr-sm"),children:$.content})]})]})]},$.id)),p&&e.jsxs("div",{className:"flex gap-2 sm:gap-3",children:[e.jsx(Ic,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:e.jsx(Pc,{className:"bg-primary/10 text-primary",children:e.jsx(ir,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),e.jsx("div",{className:"bg-muted rounded-2xl rounded-tl-sm px-4 py-3",children:e.jsxs("div",{className:"flex gap-1",children:[e.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"0ms"}}),e.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"150ms"}}),e.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"300ms"}})]})})]}),e.jsx("div",{ref:X})]})})}),e.jsx("div",{className:"shrink-0 border-t bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:e.jsx("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{value:c,onChange:$=>d($.target.value),onKeyDown:G,placeholder:h?"输入消息...":"等待连接...",disabled:!h,className:"flex-1 h-10 sm:h-10"}),e.jsx(y,{onClick:N,disabled:!h||!c.trim(),size:"icon",className:"h-10 w-10 shrink-0",children:e.jsx(KN,{className:"h-4 w-4"})})]})})})]})}function B2(){const n=Jt(),[r,c]=u.useState(!0);return u.useEffect(()=>{let d=!1;return(async()=>{try{const x=await Ju();!d&&!x&&n({to:"/auth"})}catch{d||n({to:"/auth"})}finally{d||c(!1)}})(),()=>{d=!0}},[n]),{checking:r}}async function H2(){return await Ju()}const q2=ai("pointer-events-none inline-flex select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono font-medium opacity-100",{variants:{size:{sm:"h-5 text-[10px]",default:"h-6 text-xs",lg:"h-7 text-sm"}},defaultVariants:{size:"default"}}),Xg=u.forwardRef(({className:n,size:r,abbrTitle:c,children:d,...h},x)=>e.jsx("kbd",{className:Q(q2({size:r,className:n})),ref:x,...h,children:c?e.jsx("abbr",{title:c,children:d}):d}));Xg.displayName="Kbd";const G2=[{icon:xr,title:"首页",description:"查看仪表板概览",path:"/",category:"概览"},{icon:Aa,title:"麦麦主程序配置",description:"配置麦麦的核心设置",path:"/config/bot",category:"配置"},{icon:Ng,title:"麦麦模型提供商配置",description:"配置模型提供商",path:"/config/modelProvider",category:"配置"},{icon:bg,title:"麦麦模型配置",description:"配置模型参数",path:"/config/model",category:"配置"},{icon:$u,title:"表情包管理",description:"管理麦麦的表情包",path:"/resource/emoji",category:"资源"},{icon:si,title:"表达方式管理",description:"管理麦麦的表达方式",path:"/resource/expression",category:"资源"},{icon:wg,title:"人物信息管理",description:"管理人物信息",path:"/resource/person",category:"资源"},{icon:ZN,title:"统计信息",description:"查看使用统计",path:"/statistics",category:"监控"},{icon:rn,title:"插件市场",description:"浏览和安装插件",path:"/plugins",category:"扩展"},{icon:ao,title:"日志查看器",description:"查看系统日志",path:"/logs",category:"监控"},{icon:Rl,title:"系统设置",description:"配置系统参数",path:"/settings",category:"系统"}];function V2({open:n,onOpenChange:r}){const[c,d]=u.useState(""),[h,x]=u.useState(0),f=Jt(),j=G2.filter(v=>v.title.toLowerCase().includes(c.toLowerCase())||v.description.toLowerCase().includes(c.toLowerCase())||v.category.toLowerCase().includes(c.toLowerCase()));u.useEffect(()=>{n&&(d(""),x(0))},[n]);const p=u.useCallback(v=>{f({to:v}),r(!1)},[f,r]),w=u.useCallback(v=>{v.key==="ArrowDown"?(v.preventDefault(),x(k=>(k+1)%j.length)):v.key==="ArrowUp"?(v.preventDefault(),x(k=>(k-1+j.length)%j.length)):v.key==="Enter"&&j[h]&&(v.preventDefault(),p(j[h].path))},[j,h,p]);return e.jsx(Rs,{open:n,onOpenChange:r,children:e.jsxs(zs,{className:"max-w-2xl p-0 gap-0",children:[e.jsxs(Ms,{className:"px-4 pt-4 pb-0",children:[e.jsx(As,{className:"sr-only",children:"搜索"}),e.jsxs("div",{className:"relative",children:[e.jsx(_t,{className:"absolute left-3 top-1/2 h-5 w-5 -translate-y-1/2 text-muted-foreground"}),e.jsx(ce,{value:c,onChange:v=>{d(v.target.value),x(0)},onKeyDown:w,placeholder:"搜索页面...",className:"h-12 pl-11 text-base border-0 focus-visible:ring-0 shadow-none",autoFocus:!0})]})]}),e.jsx("div",{className:"border-t",children:e.jsx(Pe,{className:"h-[400px]",children:j.length>0?e.jsx("div",{className:"p-2",children:j.map((v,k)=>{const T=v.icon;return e.jsxs("button",{onClick:()=>p(v.path),onMouseEnter:()=>x(k),className:Q("w-full flex items-center gap-3 px-3 py-2.5 rounded-md text-left transition-colors",k===h?"bg-accent text-accent-foreground":"hover:bg-accent/50"),children:[e.jsx(T,{className:"h-5 w-5 flex-shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-sm",children:v.title}),e.jsx("div",{className:"text-xs text-muted-foreground truncate",children:v.description})]}),e.jsx("div",{className:"text-xs text-muted-foreground px-2 py-1 bg-muted rounded",children:v.category})]},v.path)})}):e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[e.jsx(_t,{className:"h-12 w-12 text-muted-foreground/50 mb-4"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:c?"未找到匹配的页面":"输入关键词开始搜索"})]})})}),e.jsx("div",{className:"border-t px-4 py-3 flex items-center justify-between text-xs text-muted-foreground",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↑"}),e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↓"}),"导航"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Enter"}),"选择"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Esc"}),"关闭"]})]})})]})})}const F2=Ky,$2=Zy,Q2=Jy,Kg=u.forwardRef(({className:n,inset:r,children:c,...d},h)=>e.jsxs(Gp,{ref:h,className:Q("flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground",r&&"pl-8",n),...d,children:[c,e.jsx(il,{className:"ml-auto h-4 w-4"})]}));Kg.displayName=Gp.displayName;const Zg=u.forwardRef(({className:n,...r},c)=>e.jsx(Vp,{ref:c,className:Q("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]",n),...r}));Zg.displayName=Vp.displayName;const Jg=u.forwardRef(({className:n,...r},c)=>e.jsx(Xy,{children:e.jsx(Fp,{ref:c,className:Q("z-50 max-h-[--radix-context-menu-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-context-menu-content-transform-origin]",n),...r})}));Jg.displayName=Fp.displayName;const Na=u.forwardRef(({className:n,inset:r,...c},d)=>e.jsx($p,{ref:d,className:Q("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",r&&"pl-8",n),...c}));Na.displayName=$p.displayName;const Y2=u.forwardRef(({className:n,children:r,checked:c,...d},h)=>e.jsxs(Qp,{ref:h,className:Q("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",n),checked:c,...d,children:[e.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(Yp,{children:e.jsx(fa,{className:"h-4 w-4"})})}),r]}));Y2.displayName=Qp.displayName;const X2=u.forwardRef(({className:n,children:r,...c},d)=>e.jsxs(Xp,{ref:d,className:Q("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",n),...c,children:[e.jsx("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(Yp,{children:e.jsx(JN,{className:"h-2 w-2 fill-current"})})}),r]}));X2.displayName=Xp.displayName;const K2=u.forwardRef(({className:n,inset:r,...c},d)=>e.jsx(Kp,{ref:d,className:Q("px-2 py-1.5 text-sm font-semibold text-foreground",r&&"pl-8",n),...c}));K2.displayName=Kp.displayName;const or=u.forwardRef(({className:n,...r},c)=>e.jsx(Zp,{ref:c,className:Q("-mx-1 my-1 h-px bg-border",n),...r}));or.displayName=Zp.displayName;const In=({className:n,...r})=>e.jsx("span",{className:Q("ml-auto text-xs tracking-widest text-muted-foreground",n),...r});In.displayName="ContextMenuShortcut";const Z2=jN,J2=vN,I2=yN,Ig=u.forwardRef(({className:n,sideOffset:r=4,...c},d)=>e.jsx(gN,{children:e.jsx(dg,{ref:d,sideOffset:r,className:Q("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",n),...c})}));Ig.displayName=dg.displayName;function P2({children:n}){const{checking:r}=B2(),[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),{theme:p,setTheme:w}=Yu(),v=gy(),k=Jt();if(u.useEffect(()=>{const U=A=>{(A.metaKey||A.ctrlKey)&&A.key==="k"&&(A.preventDefault(),j(!0))};return window.addEventListener("keydown",U),()=>window.removeEventListener("keydown",U)},[]),r)return e.jsx("div",{className:"flex h-screen items-center justify-center bg-background",children:e.jsx("div",{className:"text-muted-foreground",children:"正在验证登录状态..."})});const T=[{title:"概览",items:[{icon:xr,label:"首页",path:"/"}]},{title:"麦麦配置编辑",items:[{icon:Aa,label:"麦麦主程序配置",path:"/config/bot"},{icon:Ng,label:"AI模型厂商配置",path:"/config/modelProvider",tourId:"sidebar-model-provider"},{icon:bg,label:"模型管理与分配",path:"/config/model",tourId:"sidebar-model-management"},{icon:Zf,label:"麦麦适配器配置",path:"/config/adapter"}]},{title:"麦麦资源管理",items:[{icon:$u,label:"表情包管理",path:"/resource/emoji"},{icon:si,label:"表达方式管理",path:"/resource/expression"},{icon:wg,label:"人物信息管理",path:"/resource/person"},{icon:yg,label:"知识库图谱可视化",path:"/resource/knowledge-graph"}]},{title:"扩展与监控",items:[{icon:rn,label:"插件市场",path:"/plugins"},{icon:Zf,label:"插件配置",path:"/plugin-config"},{icon:ao,label:"日志查看器",path:"/logs"},{icon:si,label:"本地聊天室",path:"/chat"}]},{title:"系统",items:[{icon:Rl,label:"系统设置",path:"/settings"}]}],R=p==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":p,K=async()=>{await y0()};return e.jsx(Z2,{delayDuration:300,children:e.jsxs("div",{className:"flex h-screen overflow-hidden",children:[e.jsxs("aside",{className:Q("fixed inset-y-0 left-0 z-50 flex flex-col border-r bg-card transition-all duration-300 lg:relative lg:z-0","w-64 lg:w-auto",c?"lg:w-64":"lg:w-16",h?"translate-x-0":"-translate-x-full lg:translate-x-0"),children:[e.jsx("div",{className:"flex h-16 items-center border-b px-4",children:e.jsxs("div",{className:Q("relative flex items-center justify-center flex-1 transition-all overflow-hidden","lg:flex-1",!c&&"lg:flex-none lg:w-8"),children:[e.jsxs("div",{className:Q("flex items-baseline gap-2",!c&&"lg:hidden"),children:[e.jsx("span",{className:"font-bold text-xl text-primary-gradient whitespace-nowrap",children:"MaiBot WebUI"}),e.jsx("span",{className:"text-xs text-primary/60 whitespace-nowrap",children:l0()})]}),!c&&e.jsx("span",{className:"hidden lg:block font-bold text-primary-gradient text-2xl",children:"M"})]})}),e.jsx(Pe,{className:Q("flex-1 overflow-x-hidden",!c&&"lg:w-16"),children:e.jsx("nav",{className:Q("p-4",!c&&"lg:p-2 lg:w-16"),children:e.jsx("ul",{className:Q("space-y-6",!c&&"lg:space-y-3 lg:w-full"),children:T.map((U,A)=>e.jsxs("li",{children:[e.jsx("div",{className:Q("px-3 h-[1.25rem]","mb-2",!c&&"lg:mb-1 lg:invisible"),children:e.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground/60 whitespace-nowrap",children:U.title})}),!c&&A>0&&e.jsx("div",{className:"hidden lg:block mb-2 border-t border-border"}),e.jsx("ul",{className:"space-y-1",children:U.items.map(Z=>{const H=v({to:Z.path}),z=Z.icon,B=e.jsxs(e.Fragment,{children:[H&&e.jsx("div",{className:"absolute left-0 top-1/2 h-8 w-1 -translate-y-1/2 rounded-r-full bg-primary transition-opacity duration-300"}),e.jsxs("div",{className:Q("flex items-center transition-all duration-300",c?"gap-3":"gap-3 lg:gap-0"),children:[e.jsx(z,{className:Q("h-5 w-5 flex-shrink-0",H&&"text-primary"),strokeWidth:2,fill:"none"}),e.jsx("span",{className:Q("text-sm font-medium whitespace-nowrap transition-all duration-300",H&&"font-semibold",c?"opacity-100 max-w-[200px]":"opacity-100 max-w-[200px] lg:opacity-0 lg:max-w-0 lg:overflow-hidden"),children:Z.label})]})]});return e.jsx("li",{className:"relative",children:e.jsxs(J2,{children:[e.jsx(I2,{asChild:!0,children:e.jsx(Kc,{to:Z.path,"data-tour":Z.tourId,className:Q("relative flex items-center rounded-lg py-2 transition-all duration-300","hover:bg-accent hover:text-accent-foreground",H?"bg-accent text-foreground":"text-muted-foreground hover:text-foreground",c?"px-3":"px-3 lg:px-0 lg:justify-center lg:w-12 lg:mx-auto"),onClick:()=>x(!1),children:B})}),!c&&e.jsx(Ig,{side:"right",className:"hidden lg:block",children:e.jsx("p",{children:Z.label})})]})},Z.path)})})]},U.title))})})})]}),h&&e.jsx("div",{className:"fixed inset-0 z-40 bg-black/50 lg:hidden",onClick:()=>x(!1)}),e.jsxs("div",{className:"flex flex-1 flex-col overflow-hidden",children:[e.jsxs("header",{className:"flex h-16 items-center justify-between border-b bg-card/80 backdrop-blur-md px-4 sticky top-0 z-10",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>x(!h),className:"rounded-lg p-2 hover:bg-accent lg:hidden",children:e.jsx(IN,{className:"h-5 w-5"})}),e.jsx("button",{onClick:()=>d(!c),className:"hidden rounded-lg p-2 hover:bg-accent lg:block",title:c?"收起侧边栏":"展开侧边栏",children:e.jsx(cn,{className:Q("h-5 w-5 transition-transform",!c&&"rotate-180")})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:()=>j(!0),className:"relative hidden md:flex items-center w-64 h-9 pl-9 pr-16 bg-background/50 border rounded-md hover:bg-accent/50 transition-colors text-left",children:[e.jsx(_t,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"搜索..."}),e.jsxs(Xg,{size:"sm",className:"absolute right-2 top-1/2 -translate-y-1/2",children:[e.jsx("span",{className:"text-xs",children:"⌘"}),"K"]})]}),e.jsx(V2,{open:f,onOpenChange:j}),e.jsxs(y,{variant:"ghost",size:"sm",onClick:()=>window.open("https://docs.mai-mai.org","_blank"),className:"gap-2",title:"查看麦麦文档",children:[e.jsx(PN,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:"麦麦文档"})]}),e.jsx("button",{onClick:U=>{Wb(R==="dark"?"light":"dark",w,U)},className:"rounded-lg p-2 hover:bg-accent",title:R==="dark"?"切换到浅色模式":"切换到深色模式",children:R==="dark"?e.jsx(Ou,{className:"h-5 w-5"}):e.jsx(Ru,{className:"h-5 w-5"})}),e.jsx("div",{className:"h-6 w-px bg-border"}),e.jsxs(y,{variant:"ghost",size:"sm",onClick:K,className:"gap-2",title:"登出系统",children:[e.jsx(Jf,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:"登出"})]})]})]}),e.jsxs(F2,{children:[e.jsx($2,{asChild:!0,children:e.jsx("main",{className:"flex-1 overflow-hidden bg-background",children:n})}),e.jsxs(Jg,{className:"w-64",children:[e.jsxs(Na,{onClick:()=>k({to:"/"}),children:[e.jsx(xr,{className:"mr-2 h-4 w-4"}),"首页"]}),e.jsxs(Na,{onClick:()=>k({to:"/settings"}),children:[e.jsx(Rl,{className:"mr-2 h-4 w-4"}),"系统设置"]}),e.jsxs(Na,{onClick:()=>k({to:"/logs"}),children:[e.jsx(ao,{className:"mr-2 h-4 w-4"}),"日志查看器"]}),e.jsx(or,{}),e.jsxs(Q2,{children:[e.jsxs(Kg,{children:[e.jsx(gg,{className:"mr-2 h-4 w-4"}),"切换主题"]}),e.jsxs(Zg,{className:"w-48",children:[e.jsxs(Na,{onClick:()=>w("light"),disabled:p==="light",children:[e.jsx(Ou,{className:"mr-2 h-4 w-4"}),"浅色",p==="light"&&e.jsx(In,{children:"✓"})]}),e.jsxs(Na,{onClick:()=>w("dark"),disabled:p==="dark",children:[e.jsx(Ru,{className:"mr-2 h-4 w-4"}),"深色",p==="dark"&&e.jsx(In,{children:"✓"})]}),e.jsxs(Na,{onClick:()=>w("system"),disabled:p==="system",children:[e.jsx(Rl,{className:"mr-2 h-4 w-4"}),"跟随系统",p==="system"&&e.jsx(In,{children:"✓"})]})]})]}),e.jsx(or,{}),e.jsxs(Na,{onClick:()=>window.location.reload(),children:[e.jsx(WN,{className:"mr-2 h-4 w-4"}),"刷新页面",e.jsx(In,{children:"⌘R"})]}),e.jsxs(Na,{onClick:()=>j(!0),children:[e.jsx(_t,{className:"mr-2 h-4 w-4"}),"搜索",e.jsx(In,{children:"⌘K"})]}),e.jsx(or,{}),e.jsxs(Na,{onClick:()=>window.open("https://docs.mai-mai.org","_blank"),children:[e.jsx(dr,{className:"mr-2 h-4 w-4"}),"麦麦文档"]}),e.jsx(or,{}),e.jsxs(Na,{onClick:K,className:"text-destructive focus:text-destructive",children:[e.jsx(Jf,{className:"mr-2 h-4 w-4"}),"登出系统"]})]})]})]})]})})}function W2(n){const r=n.split(` -`).slice(1),c=[];for(const d of r){const h=d.trim();if(!h.startsWith("at "))continue;const x=h.match(/at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?$/);x?c.push({functionName:x[1]||"",fileName:x[2],lineNumber:x[3],columnNumber:x[4],raw:h}):c.push({functionName:"",fileName:"",lineNumber:"",columnNumber:"",raw:h})}return c}function e_({error:n,errorInfo:r}){const[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),p=n.stack?W2(n.stack):[],w=async()=>{const v=` -Error: ${n.name} -Message: ${n.message} - -Stack Trace: -${n.stack||"No stack trace available"} - -Component Stack: -${r?.componentStack||"No component stack available"} - -URL: ${window.location.href} -User Agent: ${navigator.userAgent} -Time: ${new Date().toISOString()} - `.trim();try{await navigator.clipboard.writeText(v),j(!0),setTimeout(()=>j(!1),2e3)}catch(k){console.error("Failed to copy:",k)}};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(ha,{variant:"destructive",className:"border-red-500/50 bg-red-500/10",children:[e.jsx(ba,{className:"h-4 w-4"}),e.jsxs(xa,{className:"font-mono text-sm",children:[e.jsxs("span",{className:"font-semibold",children:[n.name,":"]})," ",n.message]})]}),p.length>0&&e.jsxs(Gu,{open:c,onOpenChange:d,children:[e.jsx(Vu,{asChild:!0,children:e.jsxs(y,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[e.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[e.jsx(eb,{className:"h-4 w-4"}),"Stack Trace (",p.length," frames)"]}),c?e.jsx(fr,{className:"h-4 w-4"}):e.jsx(Ll,{className:"h-4 w-4"})]})}),e.jsx(Fu,{children:e.jsx(Pe,{className:"h-[280px] rounded-md border bg-muted/30",children:e.jsx("div",{className:"p-3 space-y-1",children:p.map((v,k)=>e.jsx("div",{className:"font-mono text-xs p-2 rounded hover:bg-muted/50 transition-colors",children:e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsxs("span",{className:"text-muted-foreground w-6 text-right flex-shrink-0",children:[k+1,"."]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("span",{className:"text-primary font-medium",children:v.functionName}),v.fileName&&e.jsxs("div",{className:"text-muted-foreground mt-0.5 break-all",children:[v.fileName,v.lineNumber&&e.jsxs("span",{className:"text-yellow-600 dark:text-yellow-400",children:[":",v.lineNumber,":",v.columnNumber]})]})]})]})},k))})})})]}),r?.componentStack&&e.jsxs(Gu,{open:h,onOpenChange:x,children:[e.jsx(Vu,{asChild:!0,children:e.jsxs(y,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[e.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[e.jsx(ba,{className:"h-4 w-4"}),"Component Stack"]}),h?e.jsx(fr,{className:"h-4 w-4"}):e.jsx(Ll,{className:"h-4 w-4"})]})}),e.jsx(Fu,{children:e.jsx(Pe,{className:"h-[200px] rounded-md border bg-muted/30",children:e.jsx("pre",{className:"p-3 font-mono text-xs whitespace-pre-wrap text-muted-foreground",children:r.componentStack})})})]}),e.jsx(y,{variant:"outline",size:"sm",onClick:w,className:"w-full",children:f?e.jsxs(e.Fragment,{children:[e.jsx(fa,{className:"mr-2 h-4 w-4 text-green-500"}),"已复制到剪贴板"]}):e.jsxs(e.Fragment,{children:[e.jsx(so,{className:"mr-2 h-4 w-4"}),"复制错误信息"]})})]})}function Pg({error:n,errorInfo:r}){const c=()=>{window.location.href="/"},d=()=>{window.location.reload()};return e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background p-4",children:e.jsxs(Fe,{className:"w-full max-w-2xl shadow-lg",children:[e.jsxs(gs,{className:"text-center pb-2",children:[e.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30 mb-4",children:e.jsx(ba,{className:"h-8 w-8 text-red-600 dark:text-red-400"})}),e.jsx(js,{className:"text-2xl font-bold",children:"页面出现了问题"}),e.jsx(Zs,{className:"text-base mt-2",children:"应用程序遇到了意外错误。您可以尝试刷新页面或返回首页。"})]}),e.jsxs(bs,{className:"space-y-4",children:[e.jsx(e_,{error:n,errorInfo:r}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 pt-2",children:[e.jsxs(y,{onClick:d,className:"flex-1",children:[e.jsx(pt,{className:"mr-2 h-4 w-4"}),"刷新页面"]}),e.jsxs(y,{onClick:c,variant:"outline",className:"flex-1",children:[e.jsx(xr,{className:"mr-2 h-4 w-4"}),"返回首页"]})]}),e.jsx("p",{className:"text-xs text-center text-muted-foreground pt-2",children:"如果问题持续存在,请将错误信息复制并反馈给开发者"})]})]})})}class s_ extends u.Component{constructor(r){super(r),this.state={hasError:!1,error:null,errorInfo:null}}static getDerivedStateFromError(r){return{hasError:!0,error:r}}componentDidCatch(r,c){console.error("ErrorBoundary caught an error:",r,c),this.setState({errorInfo:c})}handleReset=()=>{this.setState({hasError:!1,error:null,errorInfo:null})};render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback:e.jsx(Pg,{error:this.state.error,errorInfo:this.state.errorInfo}):this.props.children}}function Wg({error:n}){return e.jsx(Pg,{error:n,errorInfo:null})}const kr=jy({component:()=>e.jsxs(e.Fragment,{children:[e.jsx(Np,{}),!1]}),beforeLoad:()=>{if(window.location.pathname==="/"&&!H2())throw yy({to:"/auth"})}}),t_=lt({getParentRoute:()=>kr,path:"/auth",component:N0}),a_=lt({getParentRoute:()=>kr,path:"/setup",component:B0}),Nt=lt({getParentRoute:()=>kr,id:"protected",component:()=>e.jsx(P2,{children:e.jsx(Np,{})}),errorComponent:({error:n})=>e.jsx(Wg,{error:n})}),l_=lt({getParentRoute:()=>Nt,path:"/",component:Ib}),n_=lt({getParentRoute:()=>Nt,path:"/config/bot",component:I0}),i_=lt({getParentRoute:()=>Nt,path:"/config/modelProvider",component:Nw}),r_=lt({getParentRoute:()=>Nt,path:"/config/model",component:Sw}),c_=lt({getParentRoute:()=>Nt,path:"/config/adapter",component:kw}),o_=lt({getParentRoute:()=>Nt,path:"/resource/emoji",component:Kw}),d_=lt({getParentRoute:()=>Nt,path:"/resource/expression",component:i1}),u_=lt({getParentRoute:()=>Nt,path:"/resource/person",component:g1}),m_=lt({getParentRoute:()=>Nt,path:"/resource/knowledge-graph",component:C1}),h_=lt({getParentRoute:()=>Nt,path:"/logs",component:a2}),x_=lt({getParentRoute:()=>Nt,path:"/chat",component:U2}),f_=lt({getParentRoute:()=>Nt,path:"/plugins",component:k2}),p_=lt({getParentRoute:()=>Nt,path:"/plugin-config",component:z2}),g_=lt({getParentRoute:()=>Nt,path:"/plugin-mirrors",component:M2}),j_=lt({getParentRoute:()=>Nt,path:"/settings",component:x0}),v_=lt({getParentRoute:()=>kr,path:"*",component:Rg}),y_=kr.addChildren([t_,a_,Nt.addChildren([l_,n_,i_,r_,c_,o_,d_,u_,m_,f_,p_,g_,h_,x_,j_]),v_]),N_=vy({routeTree:y_,defaultNotFoundComponent:Rg,defaultErrorComponent:({error:n})=>e.jsx(Wg,{error:n})});function b_({children:n,defaultTheme:r="system",storageKey:c="ui-theme",...d}){const[h,x]=u.useState(()=>localStorage.getItem(c)||r);u.useEffect(()=>{const j=window.document.documentElement;if(j.classList.remove("light","dark"),h==="system"){const p=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";j.classList.add(p);return}j.classList.add(h)},[h]),u.useEffect(()=>{const j=localStorage.getItem("accent-color");if(j){const p=document.documentElement,v={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[j];v&&(p.style.setProperty("--primary",v.hsl),v.gradient?(p.style.setProperty("--primary-gradient",v.gradient),p.classList.add("has-gradient")):(p.style.removeProperty("--primary-gradient"),p.classList.remove("has-gradient")))}},[]);const f={theme:h,setTheme:j=>{localStorage.setItem(c,j),x(j)}};return e.jsx(Eg.Provider,{...d,value:f,children:n})}function w_({children:n,defaultEnabled:r=!0,defaultWavesEnabled:c=!0,storageKey:d="enable-animations",wavesStorageKey:h="enable-waves-background"}){const[x,f]=u.useState(()=>{const v=localStorage.getItem(d);return v!==null?v==="true":r}),[j,p]=u.useState(()=>{const v=localStorage.getItem(h);return v!==null?v==="true":c});u.useEffect(()=>{const v=document.documentElement;x?v.classList.remove("no-animations"):v.classList.add("no-animations"),localStorage.setItem(d,String(x))},[x,d]),u.useEffect(()=>{localStorage.setItem(h,String(j))},[j,h]);const w={enableAnimations:x,setEnableAnimations:f,enableWavesBackground:j,setEnableWavesBackground:p};return e.jsx(zg.Provider,{value:w,children:n})}const __=NN,ej=u.forwardRef(({className:n,...r},c)=>e.jsx(ug,{ref:c,className:Q("fixed bottom-0 right-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:max-w-[420px] gap-2",n),...r}));ej.displayName=ug.displayName;const S_=ai("group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-slide-in-from-right data-[state=open]:animate-fade-in data-[state=closed]:animate-slide-out-to-right data-[state=closed]:animate-fade-out data-[swipe=end]:animate-slide-out-to-right",{variants:{variant:{default:"border bg-primary/5 text-foreground backdrop-blur-sm",destructive:"destructive group border-destructive bg-destructive/10 text-destructive-foreground backdrop-blur-sm"}},defaultVariants:{variant:"default"}}),sj=u.forwardRef(({className:n,variant:r,...c},d)=>e.jsx(mg,{ref:d,className:Q(S_({variant:r}),n),...c}));sj.displayName=mg.displayName;const C_=u.forwardRef(({className:n,...r},c)=>e.jsx(hg,{ref:c,className:Q("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",n),...r}));C_.displayName=hg.displayName;const tj=u.forwardRef(({className:n,...r},c)=>e.jsx(xg,{ref:c,className:Q("absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",n),"toast-close":"",...r,children:e.jsx(li,{className:"h-4 w-4"})}));tj.displayName=xg.displayName;const aj=u.forwardRef(({className:n,...r},c)=>e.jsx(fg,{ref:c,className:Q("text-sm font-semibold [&+div]:text-xs",n),...r}));aj.displayName=fg.displayName;const lj=u.forwardRef(({className:n,...r},c)=>e.jsx(pg,{ref:c,className:Q("text-sm opacity-90",n),...r}));lj.displayName=pg.displayName;function k_(){const{toasts:n}=Hs();return e.jsxs(__,{children:[n.map(function({id:r,title:c,description:d,action:h,...x}){return e.jsxs(sj,{...x,children:[e.jsxs("div",{className:"grid gap-1",children:[c&&e.jsx(aj,{children:c}),d&&e.jsx(lj,{children:d})]}),h,e.jsx(tj,{})]},r)}),e.jsx(ej,{})]})}Hb.createRoot(document.getElementById("root")).render(e.jsx(u.StrictMode,{children:e.jsx(s_,{children:e.jsx(b_,{defaultTheme:"system",children:e.jsx(w_,{children:e.jsxs(pw,{children:[e.jsx(Ny,{router:N_}),e.jsx(vw,{}),e.jsx(k_,{})]})})})})})); diff --git a/webui/dist/assets/index-CUrrfy9B.css b/webui/dist/assets/index-CUrrfy9B.css deleted file mode 100644 index 3696bf9e..00000000 --- a/webui/dist/assets/index-CUrrfy9B.css +++ /dev/null @@ -1 +0,0 @@ -@charset "UTF-8";*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 0 0% 100%;--foreground: 222.2 84% 4.9%;--card: 0 0% 100%;--card-foreground: 222.2 84% 4.9%;--popover: 0 0% 100%;--popover-foreground: 222.2 84% 4.9%;--primary: 221.2 83.2% 53.3%;--primary-foreground: 210 40% 98%;--primary-gradient: none;--secondary: 210 40% 96.1%;--secondary-foreground: 222.2 47.4% 11.2%;--muted: 210 40% 96.1%;--muted-foreground: 215.4 16.3% 46.9%;--accent: 210 40% 96.1%;--accent-foreground: 222.2 47.4% 11.2%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 210 40% 98%;--border: 214.3 31.8% 91.4%;--input: 214.3 31.8% 91.4%;--ring: 221.2 83.2% 53.3%;--radius: .5rem;--chart-1: 221.2 83.2% 53.3%;--chart-2: 160 60% 45%;--chart-3: 30 80% 55%;--chart-4: 280 65% 60%;--chart-5: 340 75% 55%}.dark{--background: 222.2 84% 4.9%;--foreground: 210 40% 98%;--card: 222.2 84% 4.9%;--card-foreground: 210 40% 98%;--popover: 222.2 84% 4.9%;--popover-foreground: 210 40% 98%;--primary: 217.2 91.2% 59.8%;--primary-foreground: 222.2 47.4% 11.2%;--primary-gradient: none;--secondary: 217.2 32.6% 17.5%;--secondary-foreground: 210 40% 98%;--muted: 217.2 32.6% 17.5%;--muted-foreground: 215 20.2% 65.1%;--accent: 217.2 32.6% 17.5%;--accent-foreground: 210 40% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 210 40% 98%;--border: 217.2 32.6% 17.5%;--input: 217.2 32.6% 17.5%;--ring: 224.3 76.3% 48%;--chart-1: 217.2 91.2% 59.8%;--chart-2: 160 60% 50%;--chart-3: 30 80% 60%;--chart-4: 280 65% 65%;--chart-5: 340 75% 60%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-1\/4{bottom:25%}.bottom-4{bottom:1rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.left-1\/4{left:25%}.left-2{left:.5rem}.left-2\.5{left:.625rem}.left-3{left:.75rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-1\.5{right:.375rem}.right-1\/4{right:25%}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-1\/4{top:25%}.top-2{top:.5rem}.top-2\.5{top:.625rem}.top-3{top:.75rem}.top-4{top:1rem}.top-\[50\%\]{top:50%}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.order-1{order:1}.order-2{order:2}.col-span-2{grid-column:span 2 / span 2}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-mt-2{margin-top:-.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-10{margin-left:2.5rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-auto{aspect-ratio:auto}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:16 / 9}.size-4{width:1rem;height:1rem}.size-\[--cell-size\]{width:var(--cell-size);height:var(--cell-size)}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[--cell-size\]{height:var(--cell-size)}.h-\[1\.25rem\]{height:1.25rem}.h-\[1px\]{height:1px}.h-\[200px\]{height:200px}.h-\[250px\]{height:250px}.h-\[280px\]{height:280px}.h-\[300px\]{height:300px}.h-\[350px\]{height:350px}.h-\[400px\]{height:400px}.h-\[calc\(100vh-200px\)\]{height:calc(100vh - 200px)}.h-\[calc\(100vh-240px\)\]{height:calc(100vh - 240px)}.h-\[calc\(100vh-260px\)\]{height:calc(100vh - 260px)}.h-\[calc\(100vh-4rem\)\]{height:calc(100vh - 4rem)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\[--radix-context-menu-content-available-height\]{max-height:var(--radix-context-menu-content-available-height)}.max-h-\[--radix-select-content-available-height\]{max-height:var(--radix-select-content-available-height)}.max-h-\[300px\]{max-height:300px}.max-h-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[calc\(90vh-120px\)\]{max-height:calc(90vh - 120px)}.max-h-\[calc\(90vh-8rem\)\]{max-height:calc(90vh - 8rem)}.max-h-full{max-height:100%}.max-h-none{max-height:none}.max-h-screen{max-height:100vh}.min-h-0{min-height:0px}.min-h-10{min-height:2.5rem}.min-h-\[100px\]{min-height:100px}.min-h-\[300px\]{min-height:300px}.min-h-\[60px\]{min-height:60px}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-96{width:24rem}.w-\[--cell-size\]{width:var(--cell-size)}.w-\[100px\]{width:100px}.w-\[120px\]{width:120px}.w-\[130px\]{width:130px}.w-\[1px\]{width:1px}.w-\[65px\]{width:65px}.w-\[95vw\]{width:95vw}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[--cell-size\]{min-width:var(--cell-size)}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[80px\]{min-width:80px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-32{max-width:8rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-\[150px\]{max-width:150px}.max-w-\[200px\]{max-width:200px}.max-w-\[60px\]{max-width:60px}.max-w-\[75\%\]{max-width:75%}.max-w-\[90\%\]{max-width:90%}.max-w-\[95vw\]{max-width:95vw}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\[--radix-context-menu-content-transform-origin\]{transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\[--radix-popover-content-transform-origin\]{transform-origin:var(--radix-popover-content-transform-origin)}.origin-\[--radix-select-content-transform-origin\]{transform-origin:var(--radix-select-content-transform-origin)}.origin-\[--radix-tooltip-content-transform-origin\]{transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.rounded-tr-sm{border-top-right-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-\[1\.5px\]{border-width:1.5px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[--color-border\]{border-color:var(--color-border)}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-500\/50{border-color:#f59e0b80}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-700{--tw-border-opacity: 1;border-color:rgb(29 78 216 / var(--tw-border-opacity, 1))}.border-border{border-color:hsl(var(--border))}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-current{border-color:currentColor}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-green-300{--tw-border-opacity: 1;border-color:rgb(134 239 172 / var(--tw-border-opacity, 1))}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.border-green-600{--tw-border-opacity: 1;border-color:rgb(22 163 74 / var(--tw-border-opacity, 1))}.border-green-700{--tw-border-opacity: 1;border-color:rgb(21 128 61 / var(--tw-border-opacity, 1))}.border-input{border-color:hsl(var(--input))}.border-muted{border-color:hsl(var(--muted))}.border-muted-foreground\/30{border-color:hsl(var(--muted-foreground) / .3)}.border-muted-foreground\/50{border-color:hsl(var(--muted-foreground) / .5)}.border-orange-200{--tw-border-opacity: 1;border-color:rgb(254 215 170 / var(--tw-border-opacity, 1))}.border-orange-600{--tw-border-opacity: 1;border-color:rgb(234 88 12 / var(--tw-border-opacity, 1))}.border-primary{border-color:hsl(var(--primary))}.border-primary\/20{border-color:hsl(var(--primary) / .2)}.border-primary\/30{border-color:hsl(var(--primary) / .3)}.border-primary\/50{border-color:hsl(var(--primary) / .5)}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-red-500\/50{border-color:#ef444480}.border-transparent{border-color:transparent}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-yellow-500\/50{border-color:#eab30880}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\[--color-bg\]{background-color:var(--color-bg)}.bg-accent{background-color:hsl(var(--accent))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-background{background-color:hsl(var(--background))}.bg-background\/50{background-color:hsl(var(--background) / .5)}.bg-background\/80{background-color:hsl(var(--background) / .8)}.bg-background\/95{background-color:hsl(var(--background) / .95)}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-black\/50{background-color:#00000080}.bg-black\/80{background-color:#000c}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-blue-900\/20{background-color:#1e3a8a33}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-card\/80{background-color:hsl(var(--card) / .8)}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-800\/20{background-color:#1f293733}.bg-gray-800\/30{background-color:#1f29374d}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground\/50{background-color:hsl(var(--muted-foreground) / .5)}.bg-muted\/20{background-color:hsl(var(--muted) / .2)}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-orange-600{--tw-bg-opacity: 1;background-color:rgb(234 88 12 / var(--tw-bg-opacity, 1))}.bg-pink-500{--tw-bg-opacity: 1;background-color:rgb(236 72 153 / var(--tw-bg-opacity, 1))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/20{background-color:hsl(var(--primary) / .2)}.bg-primary\/5{background-color:hsl(var(--primary) / .05)}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(168 85 247 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-red-900\/20{background-color:#7f1d1d33}.bg-red-900\/30{background-color:#7f1d1d4d}.bg-secondary{background-color:hsl(var(--secondary))}.bg-secondary\/5{background-color:hsl(var(--secondary) / .05)}.bg-slate-200{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity, 1))}.bg-slate-300{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity, 1))}.bg-slate-400{--tw-bg-opacity: 1;background-color:rgb(148 163 184 / var(--tw-bg-opacity, 1))}.bg-slate-700{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-200{--tw-bg-opacity: 1;background-color:rgb(254 240 138 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-yellow-500\/10{background-color:#eab3081a}.bg-yellow-500\/5{background-color:#eab3080d}.bg-yellow-900\/20{background-color:#713f1233}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-blue-500{--tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-500{--tw-gradient-from: #22c55e var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 197 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-500{--tw-gradient-from: #f97316 var(--tw-gradient-from-position);--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-primary\/5{--tw-gradient-from: hsl(var(--primary) / .05) var(--tw-gradient-from-position);--tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-500{--tw-gradient-from: #a855f7 var(--tw-gradient-from-position);--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-500{--tw-gradient-from: #ef4444 var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 68 68 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-200{--tw-gradient-from: #e2e8f0 var(--tw-gradient-from-position);--tw-gradient-to: rgb(226 232 240 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-300{--tw-gradient-from: #cbd5e1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(203 213 225 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-400{--tw-gradient-from: #94a3b8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(148 163 184 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-background{--tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), hsl(var(--background)) var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-blue-600{--tw-gradient-to: #2563eb var(--tw-gradient-to-position)}.to-cyan-500{--tw-gradient-to: #06b6d4 var(--tw-gradient-to-position)}.to-emerald-500{--tw-gradient-to: #10b981 var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to: #16a34a var(--tw-gradient-to-position)}.to-orange-500{--tw-gradient-to: #f97316 var(--tw-gradient-to-position)}.to-pink-500{--tw-gradient-to: #ec4899 var(--tw-gradient-to-position)}.to-primary\/10{--tw-gradient-to: hsl(var(--primary) / .1) var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to: #a855f7 var(--tw-gradient-to-position)}.to-secondary\/5{--tw-gradient-to: hsl(var(--secondary) / .05) var(--tw-gradient-to-position)}.to-slate-700{--tw-gradient-to: #334155 var(--tw-gradient-to-position)}.to-slate-800{--tw-gradient-to: #1e293b var(--tw-gradient-to-position)}.to-slate-900{--tw-gradient-to: #0f172a var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.fill-yellow-400{fill:#facc15}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[1px\]{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[--cell-size\]{padding-left:var(--cell-size);padding-right:var(--cell-size)}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pl-10{padding-left:2.5rem}.pl-11{padding-left:2.75rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-1{padding-right:.25rem}.pr-10{padding-right:2.5rem}.pr-16{padding-right:4rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.text-\[150px\]{font-size:150px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/50{color:hsl(var(--foreground) / .5)}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/50{color:hsl(var(--muted-foreground) / .5)}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-800{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.text-orange-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary\/10{color:hsl(var(--primary) / .1)}.text-primary\/30{color:hsl(var(--primary) / .3)}.text-primary\/60{color:hsl(var(--primary) / .6)}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-700{--tw-text-opacity: 1;color:rgb(161 98 7 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.text-yellow-900{--tw-text-opacity: 1;color:rgb(113 63 18 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-primary{--tw-ring-color: hsl(var(--primary))}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur-3xl{--tw-blur: blur(64px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.text-primary-gradient{color:hsl(var(--primary))}.has-gradient .text-primary-gradient{background:var(--primary-gradient);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.\[--cell-size\:2rem\]{--cell-size: 2rem}.no-animations *,.no-animations *:before,.no-animations *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.no-animations *:hover{transition-duration:.01ms!important}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:999}.__floater{z-index:99999!important;pointer-events:auto!important}.react-joyride__overlay,.react-joyride__spotlight{z-index:99998!important}.react-joyride__tooltip{pointer-events:auto!important}#tour-portal-container *{pointer-events:auto}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:border-muted-foreground\/50:hover{border-color:hsl(var(--muted-foreground) / .5)}.hover\:border-primary\/50:hover{border-color:hsl(var(--primary) / .5)}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent) / .5)}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-orange-700:hover{--tw-bg-opacity: 1;background-color:rgb(194 65 12 / var(--tw-bg-opacity, 1))}.hover\:bg-primary\/10:hover{background-color:hsl(var(--primary) / .1)}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-secondary:hover{background-color:hsl(var(--secondary))}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-secondary\/90:hover{background-color:hsl(var(--secondary) / .9)}.hover\:bg-transparent:hover{background-color:transparent}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-green-700:hover{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.hover\:text-orange-700:hover{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.hover\:text-primary\/80:hover{color:hsl(var(--primary) / .8)}.hover\:text-red-700:hover{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.hover\:text-yellow-300:hover{--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.hover\:text-yellow-800:hover{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:ring-2:hover{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.hover\:ring-primary:hover{--tw-ring-color: hsl(var(--primary))}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-gray-100:focus{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-red-500:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.active\:cursor-grabbing:active{cursor:grabbing}.active\:border-primary\/70:active{border-color:hsl(var(--primary) / .7)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group[open] .group-open\:rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:opacity-100{opacity:1}.group.destructive .group-\[\.destructive\]\:border-muted\/40{border-color:hsl(var(--muted) / .4)}.group.destructive .group-\[\.destructive\]\:text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:hover\:text-red-50:hover{--tw-text-opacity: 1;color:rgb(254 242 242 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-red-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(248 113 113 / var(--tw-ring-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-offset-red-600:focus{--tw-ring-offset-color: #dc2626}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-selected\:text-muted-foreground[aria-selected=true]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true],.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked],.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x: var(--radix-toast-swipe-end-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x: var(--radix-toast-swipe-move-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes fade-out{0%{opacity:1}to{opacity:0}}.data-\[state\=closed\]\:animate-fade-out[data-state=closed]{animation:fade-out .15s ease-in}.data-\[state\=closed\]\:animate-slide-out-to-right[data-state=closed]{animation:slide-out-to-right .2s ease-in}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.data-\[state\=open\]\:animate-fade-in[data-state=open]{animation:fade-in .2s ease-out}@keyframes slide-in-from-right{0%{transform:translate(100%)}to{transform:translate(0)}}.data-\[state\=open\]\:animate-slide-in-from-right[data-state=open]{animation:slide-in-from-right .3s ease-out}@keyframes slide-out-to-right{0%{transform:translate(0)}to{transform:translate(100%)}}.data-\[swipe\=end\]\:animate-slide-out-to-right[data-swipe=end]{animation:slide-out-to-right .2s ease-in}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) - 2px)}.data-\[selected\=true\]\:rounded-none[data-selected=true]{border-radius:0}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:hsl(var(--primary))}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:hsl(var(--accent))}.data-\[range-start\=true\]\:bg-primary[data-range-start=true],.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:hsl(var(--primary))}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:hsl(var(--primary-foreground))}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:hsl(var(--accent-foreground))}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true],.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:hsl(var(--primary-foreground))}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:opacity-50[data-disabled=true],.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.data-\[state\=active\]\:duration-300[data-state=active]{transition-duration:.3s}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:relative{position:relative}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:z-10{z-index:10}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:border-ring{border-color:hsl(var(--ring))}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-\[3px\]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}@supports (backdrop-filter: var(--tw)){.supports-\[backdrop-filter\]\:bg-background\/60{background-color:hsl(var(--background) / .6)}}.dark\:border-amber-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(146 64 14 / var(--tw-border-opacity, 1))}.dark\:border-blue-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity, 1))}.dark\:border-gray-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(17 24 39 / var(--tw-border-opacity, 1))}.dark\:border-green-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(22 101 52 / var(--tw-border-opacity, 1))}.dark\:border-orange-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(124 45 18 / var(--tw-border-opacity, 1))}.dark\:border-yellow-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(113 63 18 / var(--tw-border-opacity, 1))}.dark\:bg-amber-950\/30:is(.dark *){background-color:#451a034d}.dark\:bg-blue-500\/20:is(.dark *){background-color:#3b82f633}.dark\:bg-blue-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 37 84 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950\/20:is(.dark *){background-color:#17255433}.dark\:bg-blue-950\/30:is(.dark *){background-color:#1725544d}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800\/30:is(.dark *){background-color:#1f29374d}.dark\:bg-gray-800\/50:is(.dark *){background-color:#1f293780}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(3 7 18 / var(--tw-bg-opacity, 1))}.dark\:bg-green-900\/30:is(.dark *){background-color:#14532d4d}.dark\:bg-green-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(5 46 22 / var(--tw-bg-opacity, 1))}.dark\:bg-green-950\/20:is(.dark *){background-color:#052e1633}.dark\:bg-orange-950\/20:is(.dark *){background-color:#43140733}.dark\:bg-red-500\/20:is(.dark *){background-color:#ef444433}.dark\:bg-red-600\/30:is(.dark *){background-color:#dc26264d}.dark\:bg-red-900\/30:is(.dark *){background-color:#7f1d1d4d}.dark\:bg-red-950\/50:is(.dark *){background-color:#450a0a80}.dark\:bg-yellow-500\/20:is(.dark *){background-color:#eab30833}.dark\:bg-yellow-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1))}.dark\:bg-yellow-950\/30:is(.dark *){background-color:#4220064d}.dark\:text-amber-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 243 199 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-blue-100:is(.dark *){--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-200:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-cyan-500:is(.dark *){--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-orange-100:is(.dark *){--tw-text-opacity: 1;color:rgb(255 237 213 / var(--tw-text-opacity, 1))}.dark\:text-orange-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 215 170 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-red-500:is(.dark *){--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.dark\:text-yellow-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 249 195 / var(--tw-text-opacity, 1))}.dark\:text-yellow-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.dark\:text-yellow-400:is(.dark *){--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.dark\:text-yellow-500:is(.dark *){--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:hover\:text-yellow-200:hover:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:focus\:bg-gray-800:focus:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}@media(min-width:640px){.sm\:right-2{right:.5rem}.sm\:right-3{right:.75rem}.sm\:top-2{top:.5rem}.sm\:top-3{top:.75rem}.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:mb-3{margin-bottom:.75rem}.sm\:mb-4{margin-bottom:1rem}.sm\:mb-6{margin-bottom:1.5rem}.sm\:ml-0{margin-left:0}.sm\:ml-1{margin-left:.25rem}.sm\:mr-1{margin-right:.25rem}.sm\:mr-2{margin-right:.5rem}.sm\:mt-0{margin-top:0}.sm\:mt-2{margin-top:.5rem}.sm\:mt-3{margin-top:.75rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-12{height:3rem}.sm\:h-2{height:.5rem}.sm\:h-24{height:6rem}.sm\:h-3{height:.75rem}.sm\:h-4{height:1rem}.sm\:h-5{height:1.25rem}.sm\:h-8{height:2rem}.sm\:h-\[300px\]{height:300px}.sm\:h-\[400px\]{height:400px}.sm\:h-\[500px\]{height:500px}.sm\:h-\[calc\(100vh-280px\)\]{height:calc(100vh - 280px)}.sm\:w-10{width:2.5rem}.sm\:w-2{width:.5rem}.sm\:w-24{width:6rem}.sm\:w-3{width:.75rem}.sm\:w-4{width:1rem}.sm\:w-5{width:1.25rem}.sm\:w-8{width:2rem}.sm\:w-\[140px\]{width:140px}.sm\:w-\[160px\]{width:160px}.sm\:w-\[200px\]{width:200px}.sm\:w-\[500px\]{width:500px}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:min-w-\[120px\]{min-width:120px}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-\[420px\]{max-width:420px}.sm\:max-w-\[70\%\]{max-width:70%}.sm\:max-w-\[900px\]{max-width:900px}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:flex-1{flex:1 1 0%}.sm\:flex-none{flex:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-0{gap:0px}.sm\:gap-1{gap:.25rem}.sm\:gap-2{gap:.5rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:gap-6{gap:1.5rem}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.sm\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.sm\:space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.sm\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.sm\:space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-\[200px\]{font-size:200px}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:768px){.md\:top-4{top:1rem}.md\:mb-4{margin-bottom:1rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-8{margin-bottom:2rem}.md\:mt-8{margin-top:2rem}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-16{height:4rem}.md\:h-4{height:1rem}.md\:h-5{height:1.25rem}.md\:h-8{height:2rem}.md\:h-96{height:24rem}.md\:h-\[500px\]{height:500px}.md\:min-h-\[400px\]{min-height:400px}.md\:w-16{width:4rem}.md\:w-4{width:1rem}.md\:w-5{width:1.25rem}.md\:w-8{width:2rem}.md\:w-96{width:24rem}.md\:max-w-none{max-width:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:gap-2{gap:.5rem}.md\:gap-3{gap:.75rem}.md\:gap-4{gap:1rem}.md\:gap-6{gap:1.5rem}.md\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.md\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.md\:whitespace-normal{white-space:normal}.md\:p-12{padding:3rem}.md\:p-4{padding:1rem}.md\:p-6{padding:1.5rem}.md\:p-8{padding:2rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:1024px){.lg\:invisible{visibility:hidden}.lg\:relative{position:relative}.lg\:z-0{z-index:0}.lg\:col-span-1{grid-column:span 1 / span 1}.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:mb-1{margin-bottom:.25rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-12{width:3rem}.lg\:w-16{width:4rem}.lg\:w-64{width:16rem}.lg\:w-8{width:2rem}.lg\:w-\[130px\]{width:130px}.lg\:w-\[160px\]{width:160px}.lg\:w-\[180px\]{width:180px}.lg\:w-\[200px\]{width:200px}.lg\:w-\[240px\]{width:240px}.lg\:w-\[75px\]{width:75px}.lg\:w-auto{width:auto}.lg\:w-full{width:100%}.lg\:max-w-0{max-width:0px}.lg\:flex-1{flex:1 1 0%}.lg\:flex-none{flex:none}.lg\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:justify-center{justify-content:center}.lg\:gap-0{gap:0px}.lg\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.lg\:overflow-hidden{overflow:hidden}.lg\:p-2{padding:.5rem}.lg\:p-6{padding:1.5rem}.lg\:px-0{padding-left:0;padding-right:0}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:pb-6{padding-bottom:1.5rem}.lg\:text-3xl{font-size:1.875rem;line-height:2.25rem}.lg\:opacity-0{opacity:0}}@media(min-width:1280px){.xl\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}}.\[\&\+div\]\:text-xs+div{font-size:.75rem;line-height:1rem}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>span\]\:text-xs>span{font-size:.75rem;line-height:1rem}.\[\&\>span\]\:opacity-70>span{opacity:.7}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y: -3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-4>svg{top:1rem}.\[\&\>svg\]\:size-3\.5>svg{width:.875rem;height:.875rem}.\[\&\>svg\]\:h-2\.5>svg{height:.625rem}.\[\&\>svg\]\:h-3>svg{height:.75rem}.\[\&\>svg\]\:w-2\.5>svg{width:.625rem}.\[\&\>svg\]\:w-3>svg{width:.75rem}.\[\&\>svg\]\:text-foreground>svg{color:hsl(var(--foreground))}.\[\&\>svg\]\:text-muted-foreground>svg{color:hsl(var(--muted-foreground))}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:1.75rem}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:hsl(var(--muted-foreground))}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:hsl(var(--border) / .5)}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:hsl(var(--border))}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-layer\]\:outline-none .recharts-layer{outline:2px solid transparent;outline-offset:2px}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector,.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:hsl(var(--muted))}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-sector\]\:outline-none .recharts-sector,.\[\&_\.recharts-surface\]\:outline-none .recharts-surface{outline:2px solid transparent;outline-offset:2px}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:1.25rem}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:invisible svg{visibility:hidden}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent,[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:transparent}.uppy-Root{box-sizing:border-box;color:#333;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;line-height:1;position:relative;text-align:left;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.uppy-Root[dir=rtl],[dir=rtl] .uppy-Root{text-align:right}.uppy-Root *,.uppy-Root :after,.uppy-Root :before{box-sizing:inherit}.uppy-Root [hidden]{display:none}.uppy-u-reset{all:initial;-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;line-height:1}[dir=rtl] .uppy-u-reset{text-align:right}.uppy-c-textInput{background-color:#fff;border:1px solid #ddd;border-radius:4px;font-family:inherit;font-size:14px;line-height:1.5;padding:6px 8px}.uppy-size--md .uppy-c-textInput{padding:8px 10px}.uppy-c-textInput:focus{border-color:#1269cf99;box-shadow:0 0 0 3px #1269cf26;outline:none}[data-uppy-theme=dark] .uppy-c-textInput{background-color:#333;border-color:#333;color:#eaeaea}[data-uppy-theme=dark] .uppy-c-textInput:focus{border-color:#525252;box-shadow:none}.uppy-c-icon{display:inline-block;max-height:100%;max-width:100%;overflow:hidden;fill:currentColor}.uppy-c-btn{align-items:center;color:inherit;display:inline-flex;font-family:inherit;font-size:inherit;font-weight:500;justify-content:center;line-height:1;transition-duration:.3s;transition-property:background-color,color;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.uppy-c-btn,[dir=rtl] .uppy-c-btn{text-align:center}.uppy-c-btn:not(:disabled):not(.disabled){cursor:pointer}.uppy-c-btn::-moz-focus-inner{border:0}.uppy-c-btn-primary{background-color:#1269cf;border-radius:4px;color:#fff;font-size:14px;padding:10px 18px}.uppy-c-btn-primary:not(:disabled):hover{background-color:#0e51a0}.uppy-c-btn-primary:focus{box-shadow:0 0 0 3px #1269cf66;outline:none}.uppy-size--md .uppy-c-btn-primary{padding:13px 22px}[data-uppy-theme=dark] .uppy-c-btn-primary{color:#eaeaea}[data-uppy-theme=dark] .uppy-c-btn-primary:focus{outline:none}[data-uppy-theme=dark] .uppy-c-btn-primary::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-c-btn-primary:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-c-btn-primary.uppy-c-btn--disabled{background-color:#8eb2db}.uppy-c-btn-link{background-color:initial;border-radius:4px;color:#525252;font-size:14px;line-height:1;padding:10px 15px}.uppy-c-btn-link:hover{color:#333}.uppy-c-btn-link:focus{box-shadow:0 0 0 3px #1269cf40;outline:none}.uppy-size--md .uppy-c-btn-link{padding:13px 18px}[data-uppy-theme=dark] .uppy-c-btn-link{color:#eaeaea}[data-uppy-theme=dark] .uppy-c-btn-link:focus{outline:none}[data-uppy-theme=dark] .uppy-c-btn-link::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-c-btn-link:focus{box-shadow:0 0 0 2px #aae1ffd9}[data-uppy-theme=dark] .uppy-c-btn-link:hover{color:#939393}.uppy-ProviderBrowser-viewType--grid ul.uppy-ProviderBrowser-list,.uppy-ProviderBrowser-viewType--unsplash ul.uppy-ProviderBrowser-list{align-items:flex-start;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;padding:6px}.uppy-ProviderBrowser-viewType--grid ul.uppy-ProviderBrowser-list:after,.uppy-ProviderBrowser-viewType--unsplash ul.uppy-ProviderBrowser-list:after{content:"";flex:auto}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem{margin:0;position:relative;width:50%}.uppy-size--md .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem,.uppy-size--md .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem{width:33.3333%}.uppy-size--lg .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem,.uppy-size--lg .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem{width:25%}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem:before,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem:before{content:"";display:block;padding-top:100%}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--selected img,.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--selected svg,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--selected img,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--selected svg{opacity:.85}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--disabled,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--disabled{opacity:.5}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner{background-color:#93939333}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner,[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner{background-color:#eaeaea33}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview svg,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview svg{height:30%;width:30%;fill:#000000b3}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview svg,[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview svg{fill:#fffc}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner{border-radius:4px;height:calc(100% - 14px);inset:7px;overflow:hidden;position:absolute;text-align:center;width:calc(100% - 14px)}@media(hover:none){.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner .uppy-ProviderBrowserItem-author{display:block}}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner,[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner{box-shadow:0 0 0 3px #aae1ffb3}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner img,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner img{border-radius:4px;height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-author{background:#0000004d;bottom:0;color:#fff;display:none;font-size:12px;font-weight:500;left:0;margin:0;padding:5px;position:absolute;text-decoration:none;width:100%}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-author:hover,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-author:hover{background:#0006;text-decoration:underline}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox{background-color:#1269cf;border-radius:50%;height:26px;opacity:0;position:absolute;right:16px;top:16px;width:26px;z-index:1002}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox:after,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox:after{height:7px;inset-inline-start:7px;top:8px;width:12px}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox{opacity:1}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:hover+label .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:hover+label .uppy-ProviderBrowserItem-author{display:block}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label{box-shadow:0 0 0 3px #1269cf80}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label:focus,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label:focus{outline:none}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label::-moz-focus-inner,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label::-moz-focus-inner{border:0}.uppy-ProviderBrowser-viewType--list{background-color:#fff}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--list{background-color:#1f1f1f}.uppy-ProviderBrowser-viewType--list li.uppy-ProviderBrowserItem{align-items:center;display:flex;margin:0;padding:7px 15px}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--list li.uppy-ProviderBrowserItem{color:#eaeaea}.uppy-ProviderBrowser-viewType--list li.uppy-ProviderBrowserItem--disabled{opacity:.6}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox{background-color:#fff;border:1px solid #cfcfcf;border-radius:3px;height:17px;margin-inline-end:15px;width:17px}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox:focus{border:1px solid #1269cf;box-shadow:0 0 0 3px #1269cf40;outline:none}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox:after{height:5px;inset-inline-start:3px;opacity:0;top:4px;width:9px}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox:focus{border-color:#02baf2b3;box-shadow:0 0 0 3px #02baf233}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox,.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-partial .uppy-ProviderBrowserItem-checkbox{background-color:#1269cf;border-color:#1269cf}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox:after,.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-partial .uppy-ProviderBrowserItem-checkbox:after{opacity:1}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner{align-items:center;color:inherit;display:flex;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;overflow:hidden;padding:2px;text-overflow:ellipsis;white-space:nowrap}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner:focus{outline:none;text-decoration:underline}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner img,.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner svg{margin-inline-end:8px}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner span{line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--disabled .uppy-ProviderBrowserItem-inner{cursor:default}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-iconWrap{margin-inline-end:7px;width:20px}.uppy-ProviderBrowserItem-checkbox{cursor:pointer;flex-shrink:0;position:relative}.uppy-ProviderBrowserItem-checkbox:disabled,.uppy-ProviderBrowserItem-checkbox:disabled:after{cursor:default}[data-uppy-theme=dark] .uppy-ProviderBrowserItem-checkbox{background-color:#1f1f1f;border-color:#939393}[data-uppy-theme=dark] .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox{background-color:#333}.uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox:after{border-bottom:2px solid #eaeaea;border-left:2px solid #eaeaea;content:"";cursor:pointer;position:absolute;transform:rotate(-45deg)}.uppy-ProviderBrowserItem--is-partial .uppy-ProviderBrowserItem-checkbox:after{background-color:#eaeaea!important;content:""!important;height:2px!important;left:20%!important;position:absolute!important;right:20%!important;top:50%!important;transform:translateY(-50%)!important}.uppy-SearchProvider{align-items:center;display:flex;flex:1;flex-direction:column;height:100%;justify-content:center;width:100%}[data-uppy-theme=dark] .uppy-SearchProvider{background-color:#1f1f1f}.uppy-SearchProvider-input{margin-bottom:15px;max-width:650px;width:90%}.uppy-size--md .uppy-SearchProvider-input{margin-bottom:20px}.uppy-SearchProvider-input::-webkit-search-cancel-button{display:none}.uppy-SearchProvider-searchButton{padding:13px 25px}.uppy-size--md .uppy-SearchProvider-searchButton{padding:13px 30px}.uppy-DashboardContent-panelBody{align-items:center;display:flex;flex:1;justify-content:center}[data-uppy-theme=dark] .uppy-DashboardContent-panelBody{background-color:#1f1f1f}.uppy-Provider-auth,.uppy-Provider-empty,.uppy-Provider-error,.uppy-Provider-loading{align-items:center;color:#939393;display:flex;flex:1;flex-flow:column wrap;justify-content:center}.uppy-Provider-empty{color:#939393}.uppy-Provider-authIcon svg{height:75px;width:100px}.uppy-Provider-authTitle{color:#757575;font-size:17px;font-weight:400;line-height:1.4;margin-bottom:30px;max-width:500px;padding:0 15px;text-align:center}.uppy-size--md .uppy-Provider-authTitle{font-size:20px}[data-uppy-theme=dark] .uppy-Provider-authTitle{color:#cfcfcf}.uppy-Provider-btn-google{align-items:center;background:#4285f4;display:flex;padding:8px 12px!important}.uppy-Provider-btn-google:hover{background-color:#1266f1}.uppy-Provider-btn-google:focus{box-shadow:0 0 0 3px #4285f466;outline:none}.uppy-Provider-btn-google svg{margin-right:8px}.uppy-Provider-breadcrumbs{color:#525252;flex:1;font-size:12px;margin-bottom:10px;text-align:start}.uppy-size--md .uppy-Provider-breadcrumbs{margin-bottom:0}[data-uppy-theme=dark] .uppy-Provider-breadcrumbs{color:#eaeaea}.uppy-Provider-breadcrumbsIcon{color:#525252;display:inline-block;line-height:1;margin-inline-end:4px;vertical-align:middle}.uppy-Provider-breadcrumbsIcon svg{height:13px;width:13px;fill:#525252}.uppy-Provider-breadcrumbs button{border-radius:3px;display:inline-block;line-height:inherit;padding:4px}.uppy-Provider-breadcrumbs button:focus{outline:none}.uppy-Provider-breadcrumbs button::-moz-focus-inner{border:0}.uppy-Provider-breadcrumbs button:hover{color:#0e51a0}.uppy-Provider-breadcrumbs button:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-Provider-breadcrumbs button:focus{background-color:#333}.uppy-Provider-breadcrumbs button:not(:last-of-type){text-decoration:underline}.uppy-Provider-breadcrumbs button:last-of-type{color:#333;cursor:normal;font-weight:500;pointer-events:none}.uppy-Provider-breadcrumbs button:hover{cursor:pointer}[data-uppy-theme=dark] .uppy-Provider-breadcrumbs button{color:#eaeaea}.uppy-ProviderBrowser{display:flex;flex:1;flex-direction:column;font-size:14px;font-weight:400;height:100%}.uppy-ProviderBrowser-user{color:#333;font-weight:500;margin:0 8px 0 0}[data-uppy-theme=dark] .uppy-ProviderBrowser-user{color:#eaeaea}.uppy-ProviderBrowser-user:after{color:#939393;content:"·";font-weight:400;inset-inline-start:4px;position:relative}.uppy-ProviderBrowser-header{border-bottom:1px solid #eaeaea;position:relative;z-index:1001}[data-uppy-theme=dark] .uppy-ProviderBrowser-header{border-bottom:1px solid #333}.uppy-ProviderBrowser-headerBar{background-color:#fafafa;color:#757575;font-size:12px;line-height:1.4;padding:7px 15px;z-index:1001}.uppy-size--md .uppy-ProviderBrowser-headerBar{align-items:center;display:flex}[data-uppy-theme=dark] .uppy-ProviderBrowser-headerBar{background-color:#1f1f1f}.uppy-ProviderBrowser-headerBar--simple{display:block;justify-content:center;text-align:center}.uppy-ProviderBrowser-headerBar--simple .uppy-Provider-breadcrumbsWrap{display:inline-block;flex:none;vertical-align:middle}.uppy-ProviderBrowser-searchFilter{align-items:center;display:flex;height:30px;margin-bottom:15px;margin-top:15px;padding-left:8px;padding-right:8px;position:relative;width:100%}.uppy-ProviderBrowser-searchFilterInput{background-color:#eaeaea;border:0;border-radius:4px;color:#333;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;font-size:13px;height:30px;line-height:1.4;outline:0;padding-inline-end:30px;padding-inline-start:30px;width:100%;z-index:1001}.uppy-ProviderBrowser-searchFilterInput::-webkit-search-cancel-button{display:none}[data-uppy-theme=dark] .uppy-ProviderBrowser-searchFilterInput{background-color:#1f1f1f;color:#eaeaea}.uppy-ProviderBrowser-searchFilterInput:focus{background-color:#cfcfcf;border:0}[data-uppy-theme=dark] .uppy-ProviderBrowser-searchFilterInput:focus{background-color:#333}.uppy-ProviderBrowser-searchFilterIcon{color:#757575;height:12px;inset-inline-start:16px;position:absolute;width:12px;z-index:1002}.uppy-ProviderBrowser-searchFilterInput::-moz-placeholder{color:#939393;opacity:1}.uppy-ProviderBrowser-searchFilterInput::placeholder{color:#939393;opacity:1}.uppy-ProviderBrowser-searchFilterReset{border-radius:3px;color:#939393;cursor:pointer;height:22px;inset-inline-end:16px;padding:6px;position:absolute;width:22px;z-index:1002}.uppy-ProviderBrowser-searchFilterReset:focus{outline:none}.uppy-ProviderBrowser-searchFilterReset::-moz-focus-inner{border:0}.uppy-ProviderBrowser-searchFilterReset:focus{box-shadow:0 0 0 3px #1269cf80}.uppy-ProviderBrowser-searchFilterReset:hover{color:#757575}.uppy-ProviderBrowser-searchFilterReset svg{vertical-align:text-top}.uppy-ProviderBrowser-userLogout{border-radius:3px;color:#1269cf;cursor:pointer;line-height:inherit;padding:4px}.uppy-ProviderBrowser-userLogout:focus{outline:none}.uppy-ProviderBrowser-userLogout::-moz-focus-inner{border:0}.uppy-ProviderBrowser-userLogout:hover{color:#0e51a0}.uppy-ProviderBrowser-userLogout:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-ProviderBrowser-userLogout:focus{background-color:#333}.uppy-ProviderBrowser-userLogout:hover{text-decoration:underline}[data-uppy-theme=dark] .uppy-ProviderBrowser-userLogout{color:#eaeaea}.uppy-ProviderBrowser-body{flex:1;position:relative}.uppy-ProviderBrowser-list{background-color:#fff;border-spacing:0;display:block;flex:1;height:100%;inset:0;list-style:none;margin:0;overflow-x:hidden;overflow-y:auto;padding:0;position:absolute;width:100%;-webkit-overflow-scrolling:touch}[data-uppy-theme=dark] .uppy-ProviderBrowser-list{background-color:#1f1f1f}.uppy-ProviderBrowser-list:focus{outline:none}.uppy-ProviderBrowserItem-inner{cursor:pointer;font-size:13px;font-weight:500}.uppy-ProviderBrowser-footer{align-items:center;background-color:#fff;border-top:1px solid #eaeaea;display:flex;justify-content:space-between;padding:15px}.uppy-ProviderBrowser-footer button{margin-inline-end:8px}[data-uppy-theme=dark] .uppy-ProviderBrowser-footer{background-color:#1f1f1f;border-top:1px solid #333}.uppy-ProviderBrowser-footer-buttons{flex-shrink:0}.uppy-ProviderBrowser-footer-error{color:#e32437;line-height:18px}@media(max-width:426px){.uppy-ProviderBrowser-footer{align-items:stretch;flex-direction:column-reverse}.uppy-ProviderBrowser-footer-error{padding-bottom:10px}}.picker-dialog-bg{z-index:20000!important}.picker-dialog{z-index:20001!important}.uppy-Dashboard-Item-previewInnerWrap{align-items:center;border-radius:3px;box-shadow:0 0 2px #0006;display:flex;flex-direction:column;height:100%;justify-content:center;overflow:hidden;position:relative;width:100%}.uppy-size--md .uppy-Dashboard-Item-previewInnerWrap{box-shadow:0 1px 2px #00000026}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-previewInnerWrap{box-shadow:none}.uppy-Dashboard-Item-previewInnerWrap:after{background-color:#000000a6;content:"";display:none;inset:0;position:absolute;z-index:1001}.uppy-Dashboard-Item-previewLink{inset:0;position:absolute;z-index:1002}.uppy-Dashboard-Item-previewLink:focus{box-shadow:inset 0 0 0 3px #579df0}[data-uppy-theme=dark] .uppy-Dashboard-Item-previewLink:focus{box-shadow:inset 0 0 0 3px #016c8d}.uppy-Dashboard-Item-preview img.uppy-Dashboard-Item-previewImg{border-radius:3px;height:100%;-o-object-fit:cover;object-fit:cover;transform:translateZ(0);width:100%}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-preview img.uppy-Dashboard-Item-previewImg{height:auto;max-height:100%;max-width:100%;-o-object-fit:contain;object-fit:contain;padding:10px;width:auto}.uppy-Dashboard-Item-progress{color:#fff;left:50%;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);transition:all .35 ease;width:120px;z-index:1002}.uppy-Dashboard-Item-progressIndicator{color:#fff;display:inline-block;height:38px;opacity:.9;width:38px}.uppy-size--md .uppy-Dashboard-Item-progressIndicator{height:55px;width:55px}button.uppy-Dashboard-Item-progressIndicator{cursor:pointer}button.uppy-Dashboard-Item-progressIndicator:focus{outline:none}button.uppy-Dashboard-Item-progressIndicator::-moz-focus-inner{border:0}button.uppy-Dashboard-Item-progressIndicator:focus .uppy-Dashboard-Item-progressIcon--bg,button.uppy-Dashboard-Item-progressIndicator:focus .uppy-Dashboard-Item-progressIcon--retry{fill:#579df0}.uppy-Dashboard-Item-progressIcon--circle{height:100%;width:100%}.uppy-Dashboard-Item-progressIcon--bg{stroke:#fff6}.uppy-Dashboard-Item-progressIcon--progress{transition:stroke-dashoffset .5s ease-out;stroke:#fff}.uppy-Dashboard-Item-progressIcon--play{transition:all .2s;fill:#fff;stroke:#fff}.uppy-Dashboard-Item-progressIcon--cancel{transition:all .2s;fill:#fff}.uppy-Dashboard-Item-progressIcon--pause{transition:all .2s;fill:#fff;stroke:#fff}.uppy-Dashboard-Item-progressIcon--check{transition:all .2s;fill:#fff}.uppy-Dashboard-Item-progressIcon--retry{fill:#fff}.uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progress{inset-inline-end:-8px;inset-inline-start:auto;top:-9px;transform:none;width:auto}.uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-progressIndicator{height:18px;width:18px}.uppy-size--md .uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-progressIndicator{height:28px;width:28px}.uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progressIndicator{height:18px;opacity:1;width:18px}.uppy-size--md .uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progressIndicator{height:22px;width:22px}.uppy-Dashboard-Item.is-processing .uppy-Dashboard-Item-progress{opacity:0}.uppy-Dashboard-Item-fileInfo{padding-inline-end:5px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfo{padding-inline-end:10px}.uppy-size--md.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfo{padding-inline-end:15px}.uppy-Dashboard-Item-name{font-size:12px;font-weight:500;line-height:1.3;margin-bottom:5px;word-wrap:anywhere;word-break:break-all}[data-uppy-theme=dark] .uppy-Dashboard-Item-name{color:#eaeaea}.uppy-size--md.uppy-Dashboard--singleFile .uppy-Dashboard-Item-name{font-size:14px;line-height:1.4}.uppy-Dashboard-Item-fileName{align-items:baseline;display:flex}.uppy-Dashboard-Item-fileName button{margin-left:5px}.uppy-Dashboard-Item-author{color:#757575;display:inline-block;font-size:11px;font-weight:400;line-height:1;margin-bottom:5px;vertical-align:bottom}.uppy-Dashboard-Item-author a{color:#757575}.uppy-Dashboard-Item-status{color:#757575;font-size:11px;font-weight:400;line-height:1}[data-uppy-theme=dark] .uppy-Dashboard-Item-status{color:#bbb}.uppy-Dashboard-Item-statusSize{display:inline-block;margin-bottom:5px;text-transform:uppercase;vertical-align:bottom}.uppy-Dashboard-Item-reSelect{color:#1269cf;font-family:inherit;font-size:inherit;font-weight:600}.uppy-Dashboard-Item-errorMessage{background-color:#fdeff1;color:#a51523;font-size:11px;font-weight:500;line-height:1.3;padding:5px 6px}.uppy-Dashboard-Item-errorMessageBtn{color:#a51523;cursor:pointer;font-size:11px;font-weight:500;text-decoration:underline}.uppy-Dashboard-Item-preview .uppy-Dashboard-Item-errorMessage{display:none}.uppy-size--md .uppy-Dashboard-Item-preview .uppy-Dashboard-Item-errorMessage{border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-top:1px solid #f7c2c8;bottom:0;display:block;left:0;line-height:1.4;padding:6px 8px;position:absolute;right:0}.uppy-Dashboard-Item-fileInfo .uppy-Dashboard-Item-errorMessage{border:1px solid #f7c2c8;border-radius:3px;display:inline-block;position:static}.uppy-size--md .uppy-Dashboard-Item-fileInfo .uppy-Dashboard-Item-errorMessage{display:none}.uppy-Dashboard-Item-action{color:#939393;cursor:pointer}.uppy-Dashboard-Item-action:focus{outline:none}.uppy-Dashboard-Item-action::-moz-focus-inner{border:0}.uppy-Dashboard-Item-action:focus{box-shadow:0 0 0 3px #1269cf80}.uppy-Dashboard-Item-action:hover{color:#1f1f1f;opacity:1}[data-uppy-theme=dark] .uppy-Dashboard-Item-action{color:#cfcfcf}[data-uppy-theme=dark] .uppy-Dashboard-Item-action:focus{outline:none}[data-uppy-theme=dark] .uppy-Dashboard-Item-action::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-Dashboard-Item-action:focus{box-shadow:0 0 0 2px #aae1ffd9}[data-uppy-theme=dark] .uppy-Dashboard-Item-action:hover{color:#eaeaea}.uppy-Dashboard-Item-action--remove{color:#1f1f1f;opacity:.95}.uppy-Dashboard-Item-action--remove:hover{color:#000;opacity:1}.uppy-size--md .uppy-Dashboard-Item-action--remove{height:18px;inset-inline-end:-8px;padding:0;position:absolute;top:-8px;width:18px;z-index:1002}.uppy-size--md .uppy-Dashboard-Item-action--remove:focus{border-radius:50%}.uppy-Dashboard--singleFile.uppy-size--height-md .uppy-Dashboard-Item-action--remove{inset-inline-end:8px;position:absolute;top:8px}[data-uppy-theme=dark] .uppy-Dashboard-Item-action--remove{color:#525252}[data-uppy-theme=dark] .uppy-Dashboard-Item-action--remove:hover{color:#333}.uppy-Dashboard:not(.uppy-size--md):not(.uppy-Dashboard--singleFile.uppy-size--height-md) .uppy-Dashboard-Item-actionWrapper{align-items:center;display:flex}.uppy-Dashboard:not(.uppy-size--md):not(.uppy-Dashboard--singleFile.uppy-size--height-md) .uppy-Dashboard-Item-action{height:22px;margin-left:3px;padding:3px;width:22px}.uppy-Dashboard:not(.uppy-size--md):not(.uppy-Dashboard--singleFile.uppy-size--height-md) .uppy-Dashboard-Item-action:focus{border-radius:3px}.uppy-size--md .uppy-Dashboard-Item-action--copyLink,.uppy-size--md .uppy-Dashboard-Item-action--edit{height:16px;padding:0;width:16px}.uppy-size--md .uppy-Dashboard-Item-action--copyLink:focus,.uppy-size--md .uppy-Dashboard-Item-action--edit:focus{border-radius:3px}.uppy-Dashboard-Item{align-items:center;border-bottom:1px solid #eaeaea;display:flex;padding:10px}.uppy-Dashboard:not(.uppy-Dashboard--singleFile) .uppy-Dashboard-Item{padding-inline-end:0}[data-uppy-theme=dark] .uppy-Dashboard-Item{border-bottom:1px solid #333}.uppy-size--md .uppy-Dashboard-Item{border-bottom:0;display:block;float:inline-start;height:215px;margin:5px 15px;padding:0;position:relative;width:calc(33.333% - 30px)}.uppy-size--lg .uppy-Dashboard-Item{height:190px;margin:5px 15px;padding:0;width:calc(25% - 30px)}.uppy-size--xl .uppy-Dashboard-Item{height:210px;padding:0;width:calc(20% - 30px)}.uppy-Dashboard--singleFile .uppy-Dashboard-Item{border-bottom:0;display:flex;flex-direction:column;height:100%;max-width:400px;padding:15px;position:relative;width:100%}.uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-previewInnerWrap{opacity:.2}.uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-name{opacity:.7}.uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-preview:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='35' height='39' viewBox='0 0 35 39'%3E%3Cpath fill='%2523000' d='M1.708 38.66c1.709 0 3.417-3.417 6.834-3.417s5.125 3.417 8.61 3.417c3.348 0 5.056-3.417 8.473-3.417 4.305 0 5.125 3.417 6.833 3.417.889 0 1.709-.889 1.709-1.709v-19.68C34.167-5.757 0-5.757 0 17.271v19.68c0 .82.888 1.709 1.708 1.709m8.542-17.084a3.383 3.383 0 0 1-3.417-3.416 3.383 3.383 0 0 1 3.417-3.417 3.383 3.383 0 0 1 3.417 3.417 3.383 3.383 0 0 1-3.417 3.416m13.667 0A3.383 3.383 0 0 1 20.5 18.16a3.383 3.383 0 0 1 3.417-3.417 3.383 3.383 0 0 1 3.416 3.417 3.383 3.383 0 0 1-3.416 3.416'/%3E%3C/svg%3E");background-position:50% 10px;background-repeat:no-repeat;background-size:25px;content:"";inset:0;opacity:.5;position:absolute;z-index:1005}.uppy-size--md .uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-preview:before{background-position:50% 50%;background-size:40px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-preview:before{background-position:50% 50%;background-size:30%}.uppy-Dashboard-Item-preview{flex-grow:0;flex-shrink:0;height:50px;position:relative;width:50px}.uppy-size--md .uppy-Dashboard-Item-preview{height:140px;width:100%}.uppy-size--lg .uppy-Dashboard-Item-preview{height:120px}.uppy-size--xl .uppy-Dashboard-Item-preview{height:140px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-preview{flex-grow:1;max-height:75%;width:100%}.uppy-Dashboard--singleFile.uppy-size--md .uppy-Dashboard-Item-preview{max-height:100%}.uppy-Dashboard-Item-fileInfoAndButtons{align-items:center;display:flex;flex-grow:1;justify-content:space-between;padding-inline-end:8px;padding-inline-start:12px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfoAndButtons,.uppy-size--md .uppy-Dashboard-Item-fileInfoAndButtons{align-items:flex-start;padding:9px 0 0}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfoAndButtons{flex-grow:0;width:100%}.uppy-Dashboard-Item-fileInfo{flex-grow:1;flex-shrink:1}.uppy-Dashboard-Item-actionWrapper{flex-grow:0;flex-shrink:0}.uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-previewInnerWrap:after,.uppy-Dashboard-Item.is-inprogress .uppy-Dashboard-Item-previewInnerWrap:after{display:block}.uppy-Dashboard-Item-errorDetails{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#939393;border:none;border-radius:50%;color:#fff;cursor:help;flex-shrink:0;font-size:10px;font-weight:600;height:13px;inset-inline-start:2px;line-height:12px;position:relative;text-align:center;top:0;width:13px}.uppy-Dashboard-Item-errorDetails:after{line-height:1.3;word-wrap:break-word}.uppy-Dashboard-FileCard{background-color:#fff;border-radius:5px;box-shadow:0 0 10px 4px #0000001a;display:flex;flex-direction:column;height:100%;inset:0;position:absolute;width:100%;z-index:1005}.uppy-Dashboard-FileCard .uppy-DashboardContent-bar{border-top-left-radius:5px;border-top-right-radius:5px}.uppy-Dashboard-FileCard .uppy-Dashboard-FileCard-actions{border-bottom-left-radius:5px;border-bottom-right-radius:5px}.uppy-Dashboard-FileCard-inner{display:flex;flex-direction:column;flex-grow:1;flex-shrink:1;height:100%;min-height:0}.uppy-Dashboard-FileCard-preview{align-items:center;border-bottom:1px solid #eaeaea;display:flex;flex-grow:0;flex-shrink:1;height:60%;justify-content:center;min-height:0;position:relative}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-preview{background-color:#333;border-bottom:0}.uppy-Dashboard-FileCard-preview img.uppy-Dashboard-Item-previewImg{border-radius:3px;box-shadow:0 3px 20px #00000026;flex:0 0 auto;max-height:90%;max-width:90%;-o-object-fit:cover;object-fit:cover}.uppy-Dashboard-FileCard-edit{background-color:#00000080;border-radius:50px;color:#fff;font-size:13px;inset-inline-end:10px;padding:7px 15px;position:absolute;top:10px}.uppy-Dashboard-FileCard-edit:focus{outline:none}.uppy-Dashboard-FileCard-edit::-moz-focus-inner{border:0}.uppy-Dashboard-FileCard-edit:focus{box-shadow:0 0 0 3px #1269cf80}.uppy-Dashboard-FileCard-edit:hover{background-color:#000c}.uppy-Dashboard-FileCard-info{flex-grow:0;flex-shrink:0;height:40%;overflow-y:auto;padding:30px 20px 20px;-webkit-overflow-scrolling:touch}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-info{background-color:#1f1f1f}.uppy-Dashboard-FileCard-fieldset{border:0;font-size:0;margin:auto auto 12px;max-width:640px;padding:0}.uppy-Dashboard-FileCard-label{color:#525252;display:inline-block;font-size:12px;vertical-align:middle;width:22%}.uppy-size--md .uppy-Dashboard-FileCard-label{font-size:14px}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-label{color:#eaeaea}.uppy-Dashboard-FileCard-input{display:inline-block;vertical-align:middle;width:78%}.uppy-Dashboard-FileCard-actions{align-items:center;background-color:#fafafa;border-top:1px solid #eaeaea;display:flex;flex-grow:0;flex-shrink:0;height:55px;padding:0 15px}.uppy-size--md .uppy-Dashboard-FileCard-actions{height:65px}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-actions{background-color:#1f1f1f;border-top:1px solid #333}.uppy-Dashboard-FileCard-actionsBtn{margin-inline-end:10px}.uppy-Informer{bottom:60px;left:0;position:absolute;right:0;text-align:center;z-index:1005}.uppy-Informer span>div{margin-bottom:6px}.uppy-Informer-animated{opacity:0;transform:translateY(350%);transition:all .3s ease-in;z-index:-1000}.uppy-Informer p{background-color:#757575;border-radius:18px;color:#fff;display:inline-block;font-size:12px;font-weight:400;line-height:1.4;margin:0;max-width:90%;padding:6px 15px}.uppy-size--md .uppy-Informer p{font-size:14px;line-height:1.3;max-width:500px;padding:10px 20px}[data-uppy-theme=dark] .uppy-Informer p{background-color:#333}.uppy-Informer p span{background-color:#fff;border-radius:50%;color:#525252;display:inline-block;font-size:10px;height:13px;inset-inline-start:3px;line-height:12px;margin-inline-start:-1px;position:relative;top:-1px;vertical-align:middle;width:13px}.uppy-Informer p span:hover{cursor:help}.uppy-Informer p span:after{line-height:1.3;word-wrap:break-word}.uppy-Root [aria-label][role~=tooltip]{position:relative}.uppy-Root [aria-label][role~=tooltip]:after,.uppy-Root [aria-label][role~=tooltip]:before{backface-visibility:hidden;box-sizing:border-box;opacity:0;pointer-events:none;position:absolute;transform:translateZ(0);transform-origin:top;transition:all var(--microtip-transition-duration,.18s) var(--microtip-transition-easing,ease-in-out) var(--microtip-transition-delay,0s);will-change:transform;z-index:10}.uppy-Root [aria-label][role~=tooltip]:before{background-size:100% auto!important;content:""}.uppy-Root [aria-label][role~=tooltip]:after{background:#111111e6;border-radius:4px;box-sizing:initial;color:#fff;content:attr(aria-label);font-size:var(--microtip-font-size,13px);font-weight:var(--microtip-font-weight,normal);padding:.5em 1em;text-transform:var(--microtip-text-transform,none);white-space:nowrap}.uppy-Root [aria-label][role~=tooltip]:focus:after,.uppy-Root [aria-label][role~=tooltip]:focus:before,.uppy-Root [aria-label][role~=tooltip]:hover:after,.uppy-Root [aria-label][role~=tooltip]:hover:before{opacity:1;pointer-events:auto}.uppy-Root [role~=tooltip][data-microtip-position|=top]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M2.658 0h32.004c-6 0-11.627 12.002-16.002 12.002S8.594 0 2.658 0'/%3E%3C/svg%3E") no-repeat;bottom:100%;height:6px;left:50%;margin-bottom:5px;transform:translate3d(-50%,0,0);width:18px}.uppy-Root [role~=tooltip][data-microtip-position|=top]:after{bottom:100%;left:50%;margin-bottom:11px;transform:translate3d(-50%,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=top]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position|=top]:hover:before{transform:translate3d(-50%,-5px,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-left]:after{bottom:100%;transform:translate3d(calc(-100% + 16px),0,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-left]:hover:after{transform:translate3d(calc(-100% + 16px),-5px,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-right]:after{bottom:100%;transform:translate3d(-16px,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-right]:hover:after{transform:translate3d(-16px,-5px,0)}.uppy-Root [role~=tooltip][data-microtip-position|=bottom]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M33.342 12H1.338c6 0 11.627-12.002 16.002-12.002S27.406 12 33.342 12'/%3E%3C/svg%3E") no-repeat;bottom:auto;height:6px;left:50%;margin-bottom:0;margin-top:5px;top:100%;transform:translate3d(-50%,-10px,0);width:18px}.uppy-Root [role~=tooltip][data-microtip-position|=bottom]:after{left:50%;margin-top:11px;top:100%;transform:translate3d(-50%,-10px,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position|=bottom]:hover:before{transform:translate3d(-50%,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-left]:after{top:100%;transform:translate3d(calc(-100% + 16px),-10px,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-left]:hover:after{transform:translate3d(calc(-100% + 16px),0,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-right]:after{top:100%;transform:translate3d(-16px,-10px,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-right]:hover:after{transform:translate3d(-16px,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=left]:after,.uppy-Root [role~=tooltip][data-microtip-position=left]:before{inset:50% 100% auto auto;transform:translate3d(10px,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-position=left]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='36'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M0 33.342V1.338c0 6 12.002 11.627 12.002 16.002S0 27.406 0 33.342'/%3E%3C/svg%3E") no-repeat;height:18px;margin-bottom:0;margin-right:5px;width:6px}.uppy-Root [role~=tooltip][data-microtip-position=left]:after{margin-right:11px}.uppy-Root [role~=tooltip][data-microtip-position=left]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position=left]:hover:before{transform:translate3d(0,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-position=right]:after,.uppy-Root [role~=tooltip][data-microtip-position=right]:before{bottom:auto;left:100%;top:50%;transform:translate3d(-10px,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-position=right]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='36'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M12 2.658v32.004c0-6-12.002-11.627-12.002-16.002S12 8.594 12 2.658'/%3E%3C/svg%3E") no-repeat;height:18px;margin-bottom:0;margin-left:5px;width:6px}.uppy-Root [role~=tooltip][data-microtip-position=right]:after{margin-left:11px}.uppy-Root [role~=tooltip][data-microtip-position=right]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position=right]:hover:before{transform:translate3d(0,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-size=small]:after{white-space:normal;width:80px}.uppy-Root [role~=tooltip][data-microtip-size=medium]:after{white-space:normal;width:150px}.uppy-Root [role~=tooltip][data-microtip-size=large]:after{white-space:normal;width:260px}.uppy-StatusBar{background-color:#fff;color:#fff;display:flex;font-size:12px;font-weight:400;height:46px;line-height:40px;position:relative;transition:height .2s;z-index:1001}[data-uppy-theme=dark] .uppy-StatusBar{background-color:#1f1f1f}.uppy-StatusBar:before{background-color:#eaeaea;content:"";height:2px;inset:0;position:absolute;width:100%}[data-uppy-theme=dark] .uppy-StatusBar:before{background-color:#757575}.uppy-StatusBar[aria-hidden=true]{height:0;overflow-y:hidden}.uppy-StatusBar.is-complete .uppy-StatusBar-progress{background-color:#1bb240}.uppy-StatusBar.is-error .uppy-StatusBar-progress{background-color:#e32437}.uppy-StatusBar.is-complete .uppy-StatusBar-statusIndicator{color:#1bb240}.uppy-StatusBar.is-error .uppy-StatusBar-statusIndicator{color:#e32437}.uppy-StatusBar:not([aria-hidden=true]).is-waiting{background-color:#fff;border-top:1px solid #eaeaea;height:65px}[data-uppy-theme=dark] .uppy-StatusBar:not([aria-hidden=true]).is-waiting{background-color:#1f1f1f;border-top:1px solid #333}.uppy-StatusBar-progress{background-color:#1269cf;height:2px;position:absolute;transition:background-color,width .3s ease-out;z-index:1001}.uppy-StatusBar-progress.is-indeterminate{animation:uppy-StatusBar-ProgressStripes 1s linear infinite;background-image:linear-gradient(45deg,#0000004d 25%,#0000 0 50%,#0000004d 0 75%,#0000 0,#0000);background-size:64px 64px}@keyframes uppy-StatusBar-ProgressStripes{0%{background-position:0 0}to{background-position:64px 0}}.uppy-StatusBar.is-postprocessing .uppy-StatusBar-progress,.uppy-StatusBar.is-preprocessing .uppy-StatusBar-progress{background-color:#f6a623}.uppy-StatusBar.is-waiting .uppy-StatusBar-progress{display:none}.uppy-StatusBar-content{align-items:center;color:#333;display:flex;height:100%;padding-inline-start:10px;position:relative;text-overflow:ellipsis;white-space:nowrap;z-index:1002}.uppy-size--md .uppy-StatusBar-content{padding-inline-start:15px}[data-uppy-theme=dark] .uppy-StatusBar-content{color:#eaeaea}.uppy-StatusBar-status{display:flex;flex-direction:column;font-weight:400;justify-content:center;line-height:1.4;padding-inline-end:.3em}.uppy-StatusBar-statusPrimary{display:flex;font-weight:500;line-height:1}.uppy-StatusBar-statusPrimary button.uppy-StatusBar-details{margin-left:5px}[data-uppy-theme=dark] .uppy-StatusBar-statusPrimary{color:#eaeaea}.uppy-StatusBar-statusSecondary{color:#757575;display:inline-block;font-size:11px;line-height:1.2;margin-top:1px;white-space:nowrap}[data-uppy-theme=dark] .uppy-StatusBar-statusSecondary{color:#bbb}.uppy-StatusBar-statusSecondaryHint{display:inline-block;line-height:1;margin-inline-end:5px;vertical-align:middle}.uppy-size--md .uppy-StatusBar-statusSecondaryHint{margin-inline-end:8px}.uppy-StatusBar-statusIndicator{color:#525252;margin-inline-end:7px;position:relative;top:1px}.uppy-StatusBar-statusIndicator svg{vertical-align:text-bottom}.uppy-StatusBar-actions{align-items:center;bottom:0;display:flex;inset-inline-end:10px;position:absolute;top:0;z-index:1004}.uppy-StatusBar.is-waiting .uppy-StatusBar-actions{background-color:#fafafa;height:100%;padding:0 15px;position:static;width:100%}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actions{background-color:#1f1f1f}.uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts{flex-direction:column;height:90px}.uppy-size--md .uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts{flex-direction:row;height:65px}.uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts .uppy-StatusBar-actions{flex-direction:column;justify-content:center}.uppy-size--md .uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts .uppy-StatusBar-actions{flex-direction:row;justify-content:normal}.uppy-StatusBar-actionCircleBtn{cursor:pointer;line-height:1;margin:3px;opacity:.9}.uppy-StatusBar-actionCircleBtn:focus{outline:none}.uppy-StatusBar-actionCircleBtn::-moz-focus-inner{border:0}.uppy-StatusBar-actionCircleBtn:focus{box-shadow:0 0 0 3px #1269cf80}[data-uppy-theme=dark] .uppy-StatusBar-actionCircleBtn:focus{outline:none}[data-uppy-theme=dark] .uppy-StatusBar-actionCircleBtn::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-StatusBar-actionCircleBtn:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-StatusBar-actionCircleBtn:hover{opacity:1}.uppy-StatusBar-actionCircleBtn:focus{border-radius:50%}.uppy-StatusBar-actionCircleBtn svg{vertical-align:bottom}.uppy-StatusBar-actionBtn{color:#1269cf;display:inline-block;font-size:10px;line-height:inherit;vertical-align:middle}.uppy-size--md .uppy-StatusBar-actionBtn{font-size:11px}.uppy-StatusBar-actionBtn--disabled{opacity:.4}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--disabled{opacity:.7}.uppy-StatusBar-actionBtn--retry{background-color:#ff4b23;border-radius:8px;color:#fff;height:16px;line-height:1;margin-inline-end:6px;padding:1px 6px 3px 18px;position:relative}.uppy-StatusBar-actionBtn--retry:focus{outline:none}.uppy-StatusBar-actionBtn--retry::-moz-focus-inner{border:0}.uppy-StatusBar-actionBtn--retry:focus{box-shadow:0 0 0 3px #1269cf80}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--retry:focus{outline:none}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--retry::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--retry:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-StatusBar-actionBtn--retry:hover{background-color:#f92d00}.uppy-StatusBar-actionBtn--retry svg{inset-inline-start:6px;position:absolute;top:3px}.uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload{background-color:#1bb240;color:#fff;font-size:14px;line-height:1;padding:15px 10px;width:100%}.uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload:hover{background-color:#189c38}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload{background-color:#1c8b37}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload:hover{background-color:#18762f}.uppy-size--md .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload{padding:13px 22px;width:auto}.uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload.uppy-StatusBar-actionBtn--disabled:hover{background-color:#1bb240;cursor:not-allowed}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload.uppy-StatusBar-actionBtn--disabled:hover{background-color:#1c8b37}.uppy-StatusBar:not(.is-waiting) .uppy-StatusBar-actionBtn--upload{background-color:initial;color:#1269cf}.uppy-StatusBar-actionBtn--uploadNewlyAdded{border-radius:3px;padding-inline-end:3px;padding-bottom:1px;padding-inline-start:3px}.uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{outline:none}.uppy-StatusBar-actionBtn--uploadNewlyAdded::-moz-focus-inner{border:0}.uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{box-shadow:0 0 0 3px #1269cf80}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{outline:none}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--uploadNewlyAdded::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-StatusBar.is-postprocessing .uppy-StatusBar-actionBtn--uploadNewlyAdded,.uppy-StatusBar.is-preprocessing .uppy-StatusBar-actionBtn--uploadNewlyAdded{display:none}.uppy-StatusBar-actionBtn--done{border-radius:3px;line-height:1;padding:7px 8px}.uppy-StatusBar-actionBtn--done:focus{outline:none}.uppy-StatusBar-actionBtn--done::-moz-focus-inner{border:0}.uppy-StatusBar-actionBtn--done:hover{color:#0e51a0}.uppy-StatusBar-actionBtn--done:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--done:focus{background-color:#333}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--done{color:#02baf2}.uppy-size--md .uppy-StatusBar-actionBtn--done{font-size:14px}.uppy-StatusBar-serviceMsg{color:#000;font-size:11px;line-height:1.1;padding-left:10px}.uppy-size--md .uppy-StatusBar-serviceMsg{font-size:14px;padding-left:15px}[data-uppy-theme=dark] .uppy-StatusBar-serviceMsg{color:#eaeaea}.uppy-StatusBar-serviceMsg-ghostsIcon{left:6px;opacity:.5;position:relative;top:2px;vertical-align:text-bottom;width:10px}.uppy-size--md .uppy-StatusBar-serviceMsg-ghostsIcon{left:10px;top:1px;width:15px}.uppy-StatusBar-details{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#939393;border-radius:50%;color:#fff;cursor:help;display:inline-block;font-size:10px;font-weight:600;height:13px;inset-inline-start:2px;line-height:12px;position:relative;text-align:center;top:0;vertical-align:middle;width:13px}.uppy-StatusBar-details:after{line-height:1.3;word-wrap:break-word}.uppy-StatusBar-spinner{animation-duration:1s;animation-iteration-count:infinite;animation-name:uppy-StatusBar-spinnerAnimation;animation-timing-function:linear;fill:#1269cf;margin-inline-end:10px}.uppy-StatusBar.is-postprocessing .uppy-StatusBar-spinner,.uppy-StatusBar.is-preprocessing .uppy-StatusBar-spinner{fill:#f6a623}@keyframes uppy-StatusBar-spinnerAnimation{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.uppy-transition-slideDownUp-enter{opacity:.01;transform:translate3d(0,-105%,0);transition:transform .25s ease-in-out,opacity .25s ease-in-out}.uppy-transition-slideDownUp-enter.uppy-transition-slideDownUp-enter-active{opacity:1;transform:translateZ(0)}.uppy-transition-slideDownUp-leave{opacity:1;transform:translateZ(0);transition:transform .25s ease-in-out,opacity .25s ease-in-out}.uppy-transition-slideDownUp-leave.uppy-transition-slideDownUp-leave-active{opacity:.01;transform:translate3d(0,-105%,0)}@keyframes uppy-Dashboard-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes uppy-Dashboard-fadeOut{0%{opacity:1}to{opacity:0}}@keyframes uppy-Dashboard-slideDownAndFadeIn{0%{opacity:0;transform:translate3d(-50%,-70%,0)}to{opacity:1;transform:translate3d(-50%,-50%,0)}}@keyframes uppy-Dashboard-slideDownAndFadeIn--small{0%{opacity:0;transform:translate3d(0,-20%,0)}to{opacity:1;transform:translateZ(0)}}@keyframes uppy-Dashboard-slideUpFadeOut{0%{opacity:1;transform:translate3d(-50%,-50%,0)}to{opacity:0;transform:translate3d(-50%,-70%,0)}}@keyframes uppy-Dashboard-slideUpFadeOut--small{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20%,0)}}.uppy-Dashboard--modal{z-index:1001}.uppy-Dashboard--modal[aria-hidden=true]{display:none}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideDownAndFadeIn--small .3s cubic-bezier(0,0,.2,1)}@media only screen and (min-width:820px){.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideDownAndFadeIn .3s cubic-bezier(0,0,.2,1)}}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose>.uppy-Dashboard-overlay{animation:uppy-Dashboard-fadeIn .3s cubic-bezier(0,0,.2,1)}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose.uppy-Dashboard--isClosing>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideUpFadeOut--small .3s cubic-bezier(0,0,.2,1)}@media only screen and (min-width:820px){.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose.uppy-Dashboard--isClosing>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideUpFadeOut .3s cubic-bezier(0,0,.2,1)}}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose.uppy-Dashboard--isClosing>.uppy-Dashboard-overlay{animation:uppy-Dashboard-fadeOut .3s cubic-bezier(0,0,.2,1)}.uppy-Dashboard-isFixed{height:100vh;overflow:hidden}.uppy-Dashboard--modal .uppy-Dashboard-overlay{background-color:#00000080;inset:0;position:fixed;z-index:1001}.uppy-Dashboard-inner{background-color:#f4f4f4;border:1px solid #eaeaea;border-radius:5px;max-height:100%;max-width:100%;outline:none;position:relative}.uppy-size--md .uppy-Dashboard-inner{min-height:auto}@media only screen and (min-width:820px){.uppy-Dashboard-inner{height:500px;width:650px}}.uppy-Dashboard--modal .uppy-Dashboard-inner{z-index:1002}[data-uppy-theme=dark] .uppy-Dashboard-inner{background-color:#1f1f1f}.uppy-Dashboard--isDisabled .uppy-Dashboard-inner{cursor:not-allowed}.uppy-Dashboard-innerWrap{border-radius:5px;display:flex;flex-direction:column;height:100%;opacity:0;overflow:hidden;position:relative}.uppy-Dashboard--isInnerWrapVisible .uppy-Dashboard-innerWrap{opacity:1}.uppy-Dashboard--isDisabled .uppy-Dashboard-innerWrap{cursor:not-allowed;filter:grayscale(100%);opacity:.6;-webkit-user-select:none;-moz-user-select:none;user-select:none}.uppy-Dashboard--isDisabled .uppy-ProviderIconBg{fill:#9f9f9f}.uppy-Dashboard--isDisabled [aria-disabled],.uppy-Dashboard--isDisabled [disabled]{cursor:not-allowed;pointer-events:none}.uppy-Dashboard--modal .uppy-Dashboard-inner{border:none;inset:35px 15px 15px;position:fixed}@media only screen and (min-width:820px){.uppy-Dashboard--modal .uppy-Dashboard-inner{box-shadow:0 5px 15px 4px #00000026;left:50%;right:auto;top:50%;transform:translate(-50%,-50%)}}.uppy-Dashboard-close{color:#ffffffe6;cursor:pointer;display:block;font-size:27px;inset-inline-end:-2px;position:absolute;top:-33px;z-index:1005}.uppy-Dashboard-close:focus{outline:none}.uppy-Dashboard-close::-moz-focus-inner{border:0}.uppy-Dashboard-close:focus{color:#6eabf2}@media only screen and (min-width:820px){.uppy-Dashboard-close{font-size:35px;inset-inline-end:-35px;top:-10px}}.uppy-Dashboard-serviceMsg{background-color:#fffbf7;border-bottom:1px solid #edd4b9;border-top:1px solid #edd4b9;font-size:12px;font-weight:500;line-height:1.3;padding:12px 0;position:relative;top:-1px;z-index:1004}.uppy-size--md .uppy-Dashboard-serviceMsg{font-size:14px;line-height:1.4}[data-uppy-theme=dark] .uppy-Dashboard-serviceMsg{background-color:#1f1f1f;border-bottom:1px solid #333;border-top:1px solid #333;color:#eaeaea}.uppy-Dashboard-serviceMsg-title{display:block;line-height:1;margin-bottom:4px;padding-left:42px}.uppy-Dashboard-serviceMsg-text{padding:0 15px}.uppy-Dashboard-serviceMsg-actionBtn{color:#1269cf;font-size:inherit;font-weight:inherit;vertical-align:initial}[data-uppy-theme=dark] .uppy-Dashboard-serviceMsg-actionBtn{color:#02baf2e6}.uppy-Dashboard-serviceMsg-icon{left:15px;position:absolute;top:10px}.uppy-Dashboard-AddFiles{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;position:relative;text-align:center}[data-uppy-drag-drop-supported=true] .uppy-Dashboard-AddFiles{border:1px dashed #dfdfdf;border-radius:3px;height:calc(100% - 14px);margin:7px}.uppy-Dashboard-AddFilesPanel .uppy-Dashboard-AddFiles{border:none;height:calc(100% - 54px)}.uppy-Dashboard--modal .uppy-Dashboard-AddFiles{border-color:#cfcfcf}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles{border-color:#757575}.uppy-Dashboard-AddFiles-info{display:none;margin-top:auto;padding-bottom:15px;padding-top:15px}.uppy-size--height-md .uppy-Dashboard-AddFiles-info{display:block}.uppy-size--md .uppy-Dashboard-AddFiles-info{bottom:25px;left:0;padding-bottom:0;padding-top:30px;position:absolute;right:0}[data-uppy-num-acquirers="0"] .uppy-Dashboard-AddFiles-info{margin-top:0}.uppy-Dashboard-browse{color:#1269cf;cursor:pointer}.uppy-Dashboard-browse:focus{outline:none}.uppy-Dashboard-browse::-moz-focus-inner{border:0}.uppy-Dashboard-browse:focus,.uppy-Dashboard-browse:hover{border-bottom:1px solid #1269cf}[data-uppy-theme=dark] .uppy-Dashboard-browse{color:#02baf2e6}[data-uppy-theme=dark] .uppy-Dashboard-browse:focus,[data-uppy-theme=dark] .uppy-Dashboard-browse:hover{border-bottom:1px solid #02baf2}.uppy-Dashboard-browseBtn{display:block;font-size:14px;font-weight:500;margin-bottom:5px;margin-top:8px;width:100%}.uppy-size--md .uppy-Dashboard-browseBtn{font-size:15px;margin:15px auto;padding:13px 44px;width:auto}.uppy-Dashboard-AddFiles-list{display:flex;flex:1;flex-direction:column;margin-top:2px;overflow-y:auto;padding:2px 0;width:100%;-webkit-overflow-scrolling:touch}.uppy-size--md .uppy-Dashboard-AddFiles-list{flex:none;flex-direction:row;flex-wrap:wrap;justify-content:center;margin-top:15px;max-width:600px;overflow-y:visible;padding-top:0}.uppy-DashboardTab{border-bottom:1px solid #eaeaea;text-align:center;width:100%}[data-uppy-theme=dark] .uppy-DashboardTab{border-bottom:1px solid #333}.uppy-size--md .uppy-DashboardTab{border-bottom:none;display:inline-block;margin-bottom:10px;width:auto}.uppy-DashboardTab-btn{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:initial;color:#525252;cursor:pointer;flex-direction:row;height:100%;justify-content:left;padding:12px 15px;width:100%}.uppy-DashboardTab-btn:focus{outline:none}.uppy-size--md .uppy-DashboardTab-btn{border-radius:5px;flex-direction:column;margin-inline-end:1px;padding:10px 3px;width:86px}[data-uppy-theme=dark] .uppy-DashboardTab-btn{color:#eaeaea}.uppy-DashboardTab-btn::-moz-focus-inner{border:0}.uppy-DashboardTab-btn:hover{background-color:#e9ecef}[data-uppy-theme=dark] .uppy-DashboardTab-btn:hover{background-color:#333}.uppy-DashboardTab-btn:active,.uppy-DashboardTab-btn:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-DashboardTab-btn:active,[data-uppy-theme=dark] .uppy-DashboardTab-btn:focus{background-color:#525252}.uppy-DashboardTab-btn svg{display:inline-block;max-height:100%;max-width:100%;overflow:hidden;transition:transform .15s ease-in-out;vertical-align:text-top}.uppy-DashboardTab-inner{align-items:center;background-color:#fff;border-radius:8px;box-shadow:0 1px 1px #0000001a,0 1px 2px #0000001a,0 2px 3px #00000005;display:flex;height:32px;justify-content:center;margin-inline-end:10px;width:32px}.uppy-size--md .uppy-DashboardTab-inner{margin-inline-end:0}[data-uppy-theme=dark] .uppy-DashboardTab-inner{background-color:#323232;box-shadow:0 1px 1px #0003,0 1px 2px #0003,0 2px 3px #00000014}.uppy-DashboardTab-name{font-size:14px;font-weight:400}.uppy-size--md .uppy-DashboardTab-name{font-size:12px;line-height:15px;margin-bottom:0;margin-top:8px}.uppy-DashboardTab-iconMyDevice{color:#1269cf}[data-uppy-theme=dark] .uppy-DashboardTab-iconMyDevice{color:#02baf2}.uppy-DashboardTab-iconBox{color:#0061d5}[data-uppy-theme=dark] .uppy-DashboardTab-iconBox{color:#eaeaea}.uppy-DashboardTab-iconDropbox{color:#0061fe}[data-uppy-theme=dark] .uppy-DashboardTab-iconDropbox{color:#eaeaea}.uppy-DashboardTab-iconUnsplash{color:#111}[data-uppy-theme=dark] .uppy-DashboardTab-iconUnsplash{color:#eaeaea}.uppy-DashboardTab-iconWebdav{color:#111}[data-uppy-theme=dark] .uppy-DashboardTab-iconWebdav{color:#eaeaea}.uppy-DashboardTab-iconScreenRec{color:#2c3e50}[data-uppy-theme=dark] .uppy-DashboardTab-iconScreenRec{color:#eaeaea}.uppy-DashboardTab-iconAudio{color:#8030a3}[data-uppy-theme=dark] .uppy-DashboardTab-iconAudio{color:#bf6ee3}.uppy-Dashboard-input{height:.1px;opacity:0;overflow:hidden;position:absolute;width:.1px;z-index:-1}.uppy-DashboardContent-bar{align-items:center;background-color:#fafafa;border-bottom:1px solid #eaeaea;display:flex;flex-shrink:0;height:40px;justify-content:space-between;padding:0 10px;position:relative;width:100%;z-index:1004}.uppy-size--md .uppy-DashboardContent-bar{height:50px;padding:0 15px}[data-uppy-theme=dark] .uppy-DashboardContent-bar{background-color:#1f1f1f;border-bottom:1px solid #333}.uppy-DashboardContent-title{font-size:12px;font-weight:500;left:0;line-height:40px;margin:auto;max-width:170px;overflow-x:hidden;position:absolute;right:0;text-align:center;text-overflow:ellipsis;top:0;white-space:nowrap;width:100%}.uppy-size--md .uppy-DashboardContent-title{font-size:14px;line-height:50px;max-width:300px}[data-uppy-theme=dark] .uppy-DashboardContent-title{color:#eaeaea}.uppy-DashboardContent-back,.uppy-DashboardContent-save{-webkit-appearance:none;background:none;border:0;border-radius:3px;color:inherit;color:#1269cf;cursor:pointer;font-family:inherit;font-size:inherit;font-size:12px;font-weight:400;line-height:1;margin:0;margin-inline-start:-6px;padding:7px 6px}.uppy-DashboardContent-back:focus,.uppy-DashboardContent-save:focus{outline:none}.uppy-DashboardContent-back::-moz-focus-inner,.uppy-DashboardContent-save::-moz-focus-inner{border:0}.uppy-DashboardContent-back:hover,.uppy-DashboardContent-save:hover{color:#0e51a0}.uppy-DashboardContent-back:focus,.uppy-DashboardContent-save:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-DashboardContent-back:focus,[data-uppy-theme=dark] .uppy-DashboardContent-save:focus{background-color:#333}.uppy-size--md .uppy-DashboardContent-back,.uppy-size--md .uppy-DashboardContent-save{font-size:14px}[data-uppy-theme=dark] .uppy-DashboardContent-back,[data-uppy-theme=dark] .uppy-DashboardContent-save{color:#02baf2}.uppy-DashboardContent-addMore{-webkit-appearance:none;background:none;border:0;border-radius:3px;color:inherit;color:#1269cf;cursor:pointer;font-family:inherit;font-size:inherit;font-weight:500;height:29px;line-height:1;margin:0;margin-inline-end:-5px;padding:7px 8px;width:29px}.uppy-DashboardContent-addMore:focus{outline:none}.uppy-DashboardContent-addMore::-moz-focus-inner{border:0}.uppy-DashboardContent-addMore:hover{color:#0e51a0}.uppy-DashboardContent-addMore:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-DashboardContent-addMore:focus{background-color:#333}.uppy-size--md .uppy-DashboardContent-addMore{font-size:14px;height:auto;margin-inline-end:-8px;width:auto}[data-uppy-theme=dark] .uppy-DashboardContent-addMore{color:#02baf2}.uppy-DashboardContent-addMore svg{margin-inline-end:4px;vertical-align:initial}.uppy-size--md .uppy-DashboardContent-addMore svg{height:11px;width:11px}.uppy-DashboardContent-addMoreCaption{display:none}.uppy-size--md .uppy-DashboardContent-addMoreCaption{display:inline}.uppy-DashboardContent-panel{background-color:#f5f5f5;flex:1}.uppy-Dashboard-AddFilesPanel,.uppy-DashboardContent-panel{border-radius:5px;display:flex;flex-direction:column;inset:0;overflow:hidden;position:absolute;z-index:1005}.uppy-Dashboard-AddFilesPanel{background:#fafafa;background:linear-gradient(0deg,#fafafa 35%,#fafafad9);box-shadow:0 0 10px 5px #00000026}[data-uppy-theme=dark] .uppy-Dashboard-AddFilesPanel{background-color:#333;background-image:linear-gradient(0deg,#1f1f1f 35%,#1f1f1fd9)}.uppy-Dashboard--isAddFilesPanelVisible .uppy-Dashboard-files{filter:blur(2px)}.uppy-Dashboard-progress{bottom:0;height:12%;left:0;position:absolute;width:100%}.uppy-Dashboard-progressBarContainer.is-active{height:100%;left:0;position:absolute;top:0;width:100%;z-index:1004}.uppy-Dashboard-filesContainer{flex:1;margin:0;overflow-y:hidden;position:relative}.uppy-Dashboard-filesContainer:after{clear:both;content:"";display:table}.uppy-Dashboard-files{flex:1;margin:0;overflow-y:auto;padding:0 0 10px;-webkit-overflow-scrolling:touch}.uppy-size--md .uppy-Dashboard-files{padding-top:10px}.uppy-Dashboard--singleFile .uppy-Dashboard-filesInner{align-items:center;display:flex;height:100%;justify-content:center}.uppy-Dashboard-dropFilesHereHint{align-items:center;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48'%3E%3Cpath fill='%231269CF' d='M24 1v1C11.85 2 2 11.85 2 24s9.85 22 22 22 22-9.85 22-22S36.15 2 24 2zm0 0V0c13.254 0 24 10.746 24 24S37.254 48 24 48 0 37.254 0 24 10.746 0 24 0zm7.707 19.293a.999.999 0 1 1-1.414 1.414L25 16.414V34a1 1 0 1 1-2 0V16.414l-5.293 5.293a.999.999 0 1 1-1.414-1.414l7-7a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E");background-position:50% 50%;background-repeat:no-repeat;border:1px dashed #1269cf;border-radius:3px;color:#757575;display:flex;font-size:16px;justify-content:center;inset:7px;padding-top:90px;position:absolute;text-align:center;visibility:hidden;z-index:2000}[data-uppy-theme=dark] .uppy-Dashboard-dropFilesHereHint{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48'%3E%3Cpath fill='%2302BAF2' d='M24 1v1C11.85 2 2 11.85 2 24s9.85 22 22 22 22-9.85 22-22S36.15 2 24 2zm0 0V0c13.254 0 24 10.746 24 24S37.254 48 24 48 0 37.254 0 24 10.746 0 24 0zm7.707 19.293a.999.999 0 1 1-1.414 1.414L25 16.414V34a1 1 0 1 1-2 0V16.414l-5.293 5.293a.999.999 0 1 1-1.414-1.414l7-7a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E");border-color:#02baf2;color:#bbb}.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-dropFilesHereHint{pointer-events:none;visibility:visible}.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-files,.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-progressindicators,.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-serviceMsg,.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-DashboardContent-bar{opacity:.15}.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-AddFiles{opacity:.03}.uppy-Dashboard-AddFiles-title{color:#000;font-size:17px;font-weight:500;line-height:1.35;margin-bottom:5px;margin-top:15px;padding:0 15px;text-align:inline-start;width:100%}.uppy-size--md .uppy-Dashboard-AddFiles-title{font-size:21px;font-weight:400;margin-top:5px;max-width:480px;padding:0 35px;text-align:center}[data-uppy-num-acquirers="0"] .uppy-Dashboard-AddFiles-title{text-align:center}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles-title{color:#eaeaea}.uppy-Dashboard-AddFiles-title button{font-weight:500}.uppy-size--md .uppy-Dashboard-AddFiles-title button{font-weight:400}.uppy-Dashboard-note{color:#757575;font-size:14px;line-height:1.25;margin:auto;max-width:350px;padding:0 15px;text-align:center}.uppy-size--md .uppy-Dashboard-note{line-height:1.35;max-width:600px}[data-uppy-theme=dark] .uppy-Dashboard-note{color:#cfcfcf}a.uppy-Dashboard-poweredBy{color:#939393;display:inline-block;font-size:11px;margin-top:8px;text-align:center;text-decoration:none}.uppy-Dashboard-poweredByIcon{margin-left:1px;margin-right:1px;opacity:.9;position:relative;top:1px;vertical-align:text-top;fill:none;stroke:#939393}.uppy-Dashboard-Item-previewIcon{height:25px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:25px;z-index:100}.uppy-size--md .uppy-Dashboard-Item-previewIcon{height:38px;width:38px}.uppy-Dashboard-Item-previewIcon svg{height:100%;width:100%}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-previewIcon{height:100%;max-height:60%;max-width:60%;width:100%}.uppy-Dashboard-Item-previewIconWrap{height:76px;max-height:75%;position:relative}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-previewIconWrap{height:100%;width:100%}.uppy-Dashboard-Item-previewIconBg{filter:drop-shadow(rgba(0,0,0,.1) 0 1px 1px);height:100%;width:100%}.uppy-Dashboard-upload{height:50px;position:relative;width:50px}.uppy-size--md .uppy-Dashboard-upload{height:60px;width:60px}.uppy-Dashboard-upload .uppy-c-icon{position:relative;top:1px;width:50%}.uppy-Dashboard-uploadCount{background-color:#1bb240;border-radius:50%;color:#fff;font-size:8px;height:16px;inset-inline-end:-12px;line-height:16px;position:absolute;top:-12px;width:16px}.uppy-size--md .uppy-Dashboard-uploadCount{font-size:9px;height:18px;line-height:18px;width:18px}.uppy-Dashboard-inner{border:none!important;background:transparent!important}.uppy-Dashboard-innerWrap{border-radius:.5rem;overflow:hidden}.uppy-Dashboard-AddFiles{border:2px dashed hsl(var(--border))!important;border-radius:.5rem!important;background:hsl(var(--muted) / .3)!important;transition:all .2s ease}.uppy-Dashboard-AddFiles:hover{border-color:hsl(var(--primary))!important;background:hsl(var(--muted) / .5)!important}.uppy-Dashboard-AddFiles-title{color:hsl(var(--foreground))!important;font-weight:500!important}.uppy-Dashboard-AddFiles-info{color:hsl(var(--muted-foreground))!important}.uppy-Dashboard-browse{color:hsl(var(--primary))!important;font-weight:500!important}.uppy-Dashboard-browse:hover{text-decoration:underline!important}.uppy-Dashboard-files{background:transparent!important}.uppy-Dashboard-Item{border-bottom-color:hsl(var(--border))!important}.uppy-Dashboard-Item-name{color:hsl(var(--foreground))!important}.uppy-Dashboard-Item-status{color:hsl(var(--muted-foreground))!important}.uppy-StatusBar{background:hsl(var(--muted))!important;border-top:1px solid hsl(var(--border))!important}.uppy-StatusBar-progress{background:hsl(var(--primary))!important}.uppy-StatusBar-content{color:hsl(var(--foreground))!important}.uppy-StatusBar-actionBtn--upload{background:hsl(var(--primary))!important;color:hsl(var(--primary-foreground))!important;border-radius:.375rem!important;font-weight:500!important;padding:.5rem 1rem!important}.uppy-StatusBar-actionBtn--upload:hover{background:hsl(var(--primary) / .9)!important}.uppy-Dashboard-note{color:hsl(var(--muted-foreground))!important;font-size:.75rem!important}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles,.dark .uppy-Dashboard-AddFiles{background:hsl(var(--muted) / .2)!important}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles-title,.dark .uppy-Dashboard-AddFiles-title{color:hsl(var(--foreground))!important}[data-uppy-theme=dark] .uppy-StatusBar,.dark .uppy-StatusBar{background:hsl(var(--muted) / .5)!important}.uppy-Dashboard{font-family:inherit!important}.uppy-Dashboard-Item-preview{border-radius:.375rem!important;overflow:hidden}.uppy-Dashboard-Item-action--remove{color:hsl(var(--destructive))!important}.uppy-Dashboard-Item-action--remove:hover{opacity:.8}.uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progress{color:hsl(var(--success, 142 76% 36%))!important}.uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-progress{color:hsl(var(--destructive))!important}.uppy-Dashboard-files::-webkit-scrollbar{width:6px}.uppy-Dashboard-files::-webkit-scrollbar-track{background:transparent}.uppy-Dashboard-files::-webkit-scrollbar-thumb{background:hsl(var(--muted-foreground) / .3);border-radius:3px}.uppy-Dashboard-files::-webkit-scrollbar-thumb:hover{background:hsl(var(--muted-foreground) / .5)}@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(/assets/KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(/assets/KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(/assets/KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(/assets/KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(/assets/KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(/assets/KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.25"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:grab}.react-flow__node.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%} diff --git a/webui/dist/assets/index-DFcwoEiz.js b/webui/dist/assets/index-DFcwoEiz.js new file mode 100644 index 00000000..49524b8e --- /dev/null +++ b/webui/dist/assets/index-DFcwoEiz.js @@ -0,0 +1,52 @@ +import{r as u,j as e,L as Vc,e as ua,b as Jv,f as Iv,g as Pv,h as Wv,k as as,l as eb,m as tb,O as hp,n as sb}from"./router-CWhjJi2n.js";import{a as ab,b as lb,g as nb}from"./react-vendor-Dtc2IqVY.js";import{I as ib,c as rb,J as ei,K as Oc,L as gu,M as cb,N as Ii,O as Pi,P as ob,n as ju}from"./utils-CCeOswSm.js";import{L as xp,T as fp,C as pp,R as db,a as gp,V as ub,b as mb,S as jp,c as hb,d as vp,I as xb,e as bp,f as fb,g as yp,h as pb,i as gb,j as jb,O as Np,P as vb,k as wp,l as _p,D as Sp,A as Cp,m as kp,n as bb,o as yb,p as Tp,q as Nb,r as Ep,s as wb,t as _b,u as Sb,v as Cb,w as kb,x as zp,y as Ap,F as Mp}from"./radix-extra-BM7iD6Dt.js";import{aj as Tb,ak as Eb,al as zb,am as Ab,an as Rc,ao as Lc,ap as Wi,aq as Mb,ar as vu,as as Uc,at as Db,au as Ob,av as Rb}from"./charts-Dhri-zxi.js";import{S as Lb,G as Dp,O as Op,o as Ub,C as Rp,p as Bb,T as Lp,D as Up,R as Hb,q as qb,H as Bp,I as Gb,J as Hp,K as qp,L as Vb,M as Gp,V as Fb,N as Vp,Q as Fp,U as $b,X as Qb,Y as $p,Z as Yb,_ as Xb,$ as Qp,a0 as Kb,a1 as Zb,a2 as Yp,a3 as Jb,a4 as Ib,a5 as Pb,a6 as Xp,a7 as Kp,a8 as Zp,a9 as Jp,aa as Ip,ab as Pp,ac as Wb}from"./radix-core-C3XKqQJw.js";import{R as ps,P as fr,C as oa,a as Ea,Z as sn,b as Kc,F as Ta,c as ey,S as ti,A as ty,D as sy,d as Zc,e as Jn,M as Pn,T as ay,X as si,f as ly,g as ny,I as za,h as pa,i as ga,j as Jc,E as rr,k as Ys,l as Wp,H as iy,m as Pe,n as sl,U as cr,o as eg,p as tg,L as Hf,K as sg,q as ry,r as cy,s as Fc,t as vs,u as oy,B as ar,v as Ic,w as Lu,x as dy,y as uy,z as Os,G as to,J as Wn,N as Dl,O as or,Q as pr,V as my,W as hy,Y as cs,_ as Uu,$ as an,a0 as gr,a1 as nn,a2 as Ol,a3 as jr,a4 as Bu,a5 as xy,a6 as fy,a7 as py,a8 as ln,a9 as gy,aa as ag,ab as Tu,ac as dr,ad as jy,ae as Eu,af as vy,ag as lg,ah as qf,ai as by,aj as yy,ak as Ny,al as Ml,am as bu,an as Gf,ao as wy,ap as _y,aq as Sy,ar as Cy,as as ky,at as ng,au as ig,av as rg,aw as Ty,ax as Vf,ay as Ey,az as zy,aA as Ay,aB as My}from"./icons-y1PBa0Co.js";import{S as Dy,p as Oy,j as Ry,a as Ly,E as Ff,R as Uy,o as By}from"./codemirror-BHeANvwm.js";import{_ as Rs,c as Hy,g as cg,D as qy}from"./misc-DyBU7ISD.js";import{u as Gy,a as $f,D as Vy,c as Fy,S as $y,h as Qy,b as Yy,s as Xy,K as Ky,P as Zy,d as Jy,C as Iy}from"./dnd-Dyi3CnuX.js";import{D as Py,U as Wy}from"./uppy-BHC3OXBx.js";import{M as eN,r as tN,a as sN,b as aN}from"./markdown-A1ShuLvG.js";import{r as lN,H as Pc,P as Wc,u as nN,a as iN,R as rN,B as cN,b as oN,C as dN,M as uN,c as mN}from"./reactflow-B3n3_Vkw.js";(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const h of document.querySelectorAll('link[rel="modulepreload"]'))d(h);new MutationObserver(h=>{for(const x of h)if(x.type==="childList")for(const f of x.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&d(f)}).observe(document,{childList:!0,subtree:!0});function c(h){const x={};return h.integrity&&(x.integrity=h.integrity),h.referrerPolicy&&(x.referrerPolicy=h.referrerPolicy),h.crossOrigin==="use-credentials"?x.credentials="include":h.crossOrigin==="anonymous"?x.credentials="omit":x.credentials="same-origin",x}function d(h){if(h.ep)return;h.ep=!0;const x=c(h);fetch(h.href,x)}})();var yu={exports:{}},er={},Nu={exports:{}},wu={};var Qf;function hN(){return Qf||(Qf=1,(function(n){function r(y,q){var H=y.length;y.push(q);e:for(;0>>1,_=y[ie];if(0>>1;ieh(Q,H))de<_&&0>h(ge,Q)?(y[ie]=ge,y[de]=H,ie=de):(y[ie]=Q,y[xe]=H,ie=xe);else if(de<_&&0>h(ge,H))y[ie]=ge,y[de]=H,ie=de;else break e}}return q}function h(y,q){var H=y.sortIndex-q.sortIndex;return H!==0?H:y.id-q.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var x=performance;n.unstable_now=function(){return x.now()}}else{var f=Date,j=f.now();n.unstable_now=function(){return f.now()-j}}var p=[],w=[],v=1,k=null,T=3,E=!1,R=!1,F=!1,U=!1,M=typeof setTimeout=="function"?setTimeout:null,Z=typeof clearTimeout=="function"?clearTimeout:null,G=typeof setImmediate<"u"?setImmediate:null;function z(y){for(var q=c(w);q!==null;){if(q.callback===null)d(w);else if(q.startTime<=y)d(w),q.sortIndex=q.expirationTime,r(p,q);else break;q=c(w)}}function B(y){if(F=!1,z(y),!R)if(c(p)!==null)R=!0,X||(X=!0,be());else{var q=c(w);q!==null&&_e(B,q.startTime-y)}}var X=!1,S=-1,O=5,se=-1;function he(){return U?!0:!(n.unstable_now()-sey&&he());){var ie=k.callback;if(typeof ie=="function"){k.callback=null,T=k.priorityLevel;var _=ie(k.expirationTime<=y);if(y=n.unstable_now(),typeof _=="function"){k.callback=_,z(y),q=!0;break t}k===c(p)&&d(p),z(y)}else d(p);k=c(p)}if(k!==null)q=!0;else{var me=c(w);me!==null&&_e(B,me.startTime-y),q=!1}}break e}finally{k=null,T=H,E=!1}q=void 0}}finally{q?be():X=!1}}}var be;if(typeof G=="function")be=function(){G(ye)};else if(typeof MessageChannel<"u"){var pe=new MessageChannel,je=pe.port2;pe.port1.onmessage=ye,be=function(){je.postMessage(null)}}else be=function(){M(ye,0)};function _e(y,q){S=M(function(){y(n.unstable_now())},q)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(y){y.callback=null},n.unstable_forceFrameRate=function(y){0>y||125ie?(y.sortIndex=H,r(w,y),c(p)===null&&y===c(w)&&(F?(Z(S),S=-1):F=!0,_e(B,H-ie))):(y.sortIndex=_,r(p,y),R||E||(R=!0,X||(X=!0,be()))),y},n.unstable_shouldYield=he,n.unstable_wrapCallback=function(y){var q=T;return function(){var H=T;T=q;try{return y.apply(this,arguments)}finally{T=H}}}})(wu)),wu}var Yf;function xN(){return Yf||(Yf=1,Nu.exports=hN()),Nu.exports}var Xf;function fN(){if(Xf)return er;Xf=1;var n=xN(),r=ab(),c=lb();function d(t){var s="https://react.dev/errors/"+t;if(1_||(t.current=ie[_],ie[_]=null,_--)}function Q(t,s){_++,ie[_]=t.current,t.current=s}var de=me(null),ge=me(null),le=me(null),L=me(null);function $(t,s){switch(Q(le,s),Q(ge,t),Q(de,null),s.nodeType){case 9:case 11:t=(t=s.documentElement)&&(t=t.namespaceURI)?cf(t):0;break;default:if(t=s.tagName,s=s.namespaceURI)s=cf(s),t=of(s,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}xe(de),Q(de,t)}function D(){xe(de),xe(ge),xe(le)}function ee(t){t.memoizedState!==null&&Q(L,t);var s=de.current,a=of(s,t.type);s!==a&&(Q(ge,t),Q(de,a))}function Ne(t){ge.current===t&&(xe(de),xe(ge)),L.current===t&&(xe(L),Xi._currentValue=H)}var ze,We;function Xe(t){if(ze===void 0)try{throw Error()}catch(a){var s=a.stack.trim().match(/\n( *(at )?)/);ze=s&&s[1]||"",We=-1)":-1i||C[l]!==I[i]){var ae=` +`+C[l].replace(" at new "," at ");return t.displayName&&ae.includes("")&&(ae=ae.replace("",t.displayName)),ae}while(1<=l&&0<=i);break}}}finally{Mt=!1,Error.prepareStackTrace=a}return(a=t?t.displayName||t.name:"")?Xe(a):""}function re(t,s){switch(t.tag){case 26:case 27:case 5:return Xe(t.type);case 16:return Xe("Lazy");case 13:return t.child!==s&&s!==null?Xe("Suspense Fallback"):Xe("Suspense");case 19:return Xe("SuspenseList");case 0:case 15:return qt(t.type,!1);case 11:return qt(t.type.render,!1);case 1:return qt(t.type,!0);case 31:return Xe("Activity");default:return""}}function we(t){try{var s="",a=null;do s+=re(t,a),a=t,t=t.return;while(t);return s}catch(l){return` +Error generating stack: `+l.message+` +`+l.stack}}var Je=Object.prototype.hasOwnProperty,Fe=n.unstable_scheduleCallback,Wt=n.unstable_cancelCallback,Xs=n.unstable_shouldYield,Ns=n.unstable_requestPaint,Ke=n.unstable_now,Ue=n.unstable_getCurrentPriorityLevel,js=n.unstable_ImmediatePriority,ls=n.unstable_UserBlockingPriority,_s=n.unstable_NormalPriority,Ss=n.unstable_LowPriority,nl=n.unstable_IdlePriority,il=n.log,rl=n.unstable_setDisableYieldValue,Se=null,Oe=null;function ns(t){if(typeof il=="function"&&rl(t),Oe&&typeof Oe.setStrictMode=="function")try{Oe.setStrictMode(Se,t)}catch{}}var ds=Math.clz32?Math.clz32:us,ri=Math.log,rn=Math.LN2;function us(t){return t>>>=0,t===0?32:31-(ri(t)/rn|0)|0}var Ks=256,Zs=262144,Oa=4194304;function Ls(t){var s=t&42;if(s!==0)return s;switch(t&-t){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:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&261888;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function Ra(t,s,a){var l=t.pendingLanes;if(l===0)return 0;var i=0,o=t.suspendedLanes,m=t.pingedLanes;t=t.warmLanes;var g=l&134217727;return g!==0?(l=g&~o,l!==0?i=Ls(l):(m&=g,m!==0?i=Ls(m):a||(a=g&~t,a!==0&&(i=Ls(a))))):(g=l&~o,g!==0?i=Ls(g):m!==0?i=Ls(m):a||(a=l&~t,a!==0&&(i=Ls(a)))),i===0?0:s!==0&&s!==i&&(s&o)===0&&(o=i&-i,a=s&-s,o>=a||o===32&&(a&4194048)!==0)?s:i}function ba(t,s){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&s)===0}function W(t,s){switch(t){case 1:case 2:case 4:case 8:case 64:return s+250;case 16:case 32: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 s+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 ve(){var t=Oa;return Oa<<=1,(Oa&62914560)===0&&(Oa=4194304),t}function Ae(t){for(var s=[],a=0;31>a;a++)s.push(t);return s}function es(t,s){t.pendingLanes|=s,s!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function Us(t,s,a,l,i,o){var m=t.pendingLanes;t.pendingLanes=a,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=a,t.entangledLanes&=a,t.errorRecoveryDisabledLanes&=a,t.shellSuspendCounter=0;var g=t.entanglements,C=t.expirationTimes,I=t.hiddenUpdates;for(a=m&~a;0"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var $g=/[\n"\\]/g;function Ws(t){return t.replace($g,function(s){return"\\"+s.charCodeAt(0).toString(16)+" "})}function uo(t,s,a,l,i,o,m,g){t.name="",m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"?t.type=m:t.removeAttribute("type"),s!=null?m==="number"?(s===0&&t.value===""||t.value!=s)&&(t.value=""+Ps(s)):t.value!==""+Ps(s)&&(t.value=""+Ps(s)):m!=="submit"&&m!=="reset"||t.removeAttribute("value"),s!=null?mo(t,m,Ps(s)):a!=null?mo(t,m,Ps(a)):l!=null&&t.removeAttribute("value"),i==null&&o!=null&&(t.defaultChecked=!!o),i!=null&&(t.checked=i&&typeof i!="function"&&typeof i!="symbol"),g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"?t.name=""+Ps(g):t.removeAttribute("name")}function tm(t,s,a,l,i,o,m,g){if(o!=null&&typeof o!="function"&&typeof o!="symbol"&&typeof o!="boolean"&&(t.type=o),s!=null||a!=null){if(!(o!=="submit"&&o!=="reset"||s!=null)){oo(t);return}a=a!=null?""+Ps(a):"",s=s!=null?""+Ps(s):a,g||s===t.value||(t.value=s),t.defaultValue=s}l=l??i,l=typeof l!="function"&&typeof l!="symbol"&&!!l,t.checked=g?t.checked:!!l,t.defaultChecked=!!l,m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"&&(t.name=m),oo(t)}function mo(t,s,a){s==="number"&&_r(t.ownerDocument)===t||t.defaultValue===""+a||(t.defaultValue=""+a)}function xn(t,s,a,l){if(t=t.options,s){s={};for(var i=0;i"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),go=!1;if(Ba)try{var ui={};Object.defineProperty(ui,"passive",{get:function(){go=!0}}),window.addEventListener("test",ui,ui),window.removeEventListener("test",ui,ui)}catch{go=!1}var ol=null,jo=null,Cr=null;function cm(){if(Cr)return Cr;var t,s=jo,a=s.length,l,i="value"in ol?ol.value:ol.textContent,o=i.length;for(t=0;t=xi),xm=" ",fm=!1;function pm(t,s){switch(t){case"keyup":return jj.indexOf(s.keyCode)!==-1;case"keydown":return s.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function gm(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var jn=!1;function bj(t,s){switch(t){case"compositionend":return gm(s);case"keypress":return s.which!==32?null:(fm=!0,xm);case"textInput":return t=s.data,t===xm&&fm?null:t;default:return null}}function yj(t,s){if(jn)return t==="compositionend"||!wo&&pm(t,s)?(t=cm(),Cr=jo=ol=null,jn=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(s.ctrlKey||s.altKey||s.metaKey)||s.ctrlKey&&s.altKey){if(s.char&&1=s)return{node:a,offset:s-t};t=l}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=Sm(a)}}function km(t,s){return t&&s?t===s?!0:t&&t.nodeType===3?!1:s&&s.nodeType===3?km(t,s.parentNode):"contains"in t?t.contains(s):t.compareDocumentPosition?!!(t.compareDocumentPosition(s)&16):!1:!1}function Tm(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var s=_r(t.document);s instanceof t.HTMLIFrameElement;){try{var a=typeof s.contentWindow.location.href=="string"}catch{a=!1}if(a)t=s.contentWindow;else break;s=_r(t.document)}return s}function Co(t){var s=t&&t.nodeName&&t.nodeName.toLowerCase();return s&&(s==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||s==="textarea"||t.contentEditable==="true")}var Ej=Ba&&"documentMode"in document&&11>=document.documentMode,vn=null,ko=null,ji=null,To=!1;function Em(t,s,a){var l=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;To||vn==null||vn!==_r(l)||(l=vn,"selectionStart"in l&&Co(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),ji&&gi(ji,l)||(ji=l,l=vc(ko,"onSelect"),0>=m,i-=m,Na=1<<32-ds(s)+i|a<Ze?(nt=Te,Te=null):nt=Te.sibling;var vt=P(V,Te,J[Ze],oe);if(vt===null){Te===null&&(Te=nt);break}t&&Te&&vt.alternate===null&&s(V,Te),A=o(vt,A,Ze),jt===null?Ee=vt:jt.sibling=vt,jt=vt,Te=nt}if(Ze===J.length)return a(V,Te),xt&&qa(V,Ze),Ee;if(Te===null){for(;ZeZe?(nt=Te,Te=null):nt=Te.sibling;var Al=P(V,Te,vt.value,oe);if(Al===null){Te===null&&(Te=nt);break}t&&Te&&Al.alternate===null&&s(V,Te),A=o(Al,A,Ze),jt===null?Ee=Al:jt.sibling=Al,jt=Al,Te=nt}if(vt.done)return a(V,Te),xt&&qa(V,Ze),Ee;if(Te===null){for(;!vt.done;Ze++,vt=J.next())vt=ue(V,vt.value,oe),vt!==null&&(A=o(vt,A,Ze),jt===null?Ee=vt:jt.sibling=vt,jt=vt);return xt&&qa(V,Ze),Ee}for(Te=l(Te);!vt.done;Ze++,vt=J.next())vt=te(Te,V,Ze,vt.value,oe),vt!==null&&(t&&vt.alternate!==null&&Te.delete(vt.key===null?Ze:vt.key),A=o(vt,A,Ze),jt===null?Ee=vt:jt.sibling=vt,jt=vt);return t&&Te.forEach(function(Zv){return s(V,Zv)}),xt&&qa(V,Ze),Ee}function kt(V,A,J,oe){if(typeof J=="object"&&J!==null&&J.type===F&&J.key===null&&(J=J.props.children),typeof J=="object"&&J!==null){switch(J.$$typeof){case E:e:{for(var Ee=J.key;A!==null;){if(A.key===Ee){if(Ee=J.type,Ee===F){if(A.tag===7){a(V,A.sibling),oe=i(A,J.props.children),oe.return=V,V=oe;break e}}else if(A.elementType===Ee||typeof Ee=="object"&&Ee!==null&&Ee.$$typeof===O&&Kl(Ee)===A.type){a(V,A.sibling),oe=i(A,J.props),_i(oe,J),oe.return=V,V=oe;break e}a(V,A);break}else s(V,A);A=A.sibling}J.type===F?(oe=Fl(J.props.children,V.mode,oe,J.key),oe.return=V,V=oe):(oe=Lr(J.type,J.key,J.props,null,V.mode,oe),_i(oe,J),oe.return=V,V=oe)}return m(V);case R:e:{for(Ee=J.key;A!==null;){if(A.key===Ee)if(A.tag===4&&A.stateNode.containerInfo===J.containerInfo&&A.stateNode.implementation===J.implementation){a(V,A.sibling),oe=i(A,J.children||[]),oe.return=V,V=oe;break e}else{a(V,A);break}else s(V,A);A=A.sibling}oe=Ro(J,V.mode,oe),oe.return=V,V=oe}return m(V);case O:return J=Kl(J),kt(V,A,J,oe)}if(_e(J))return Ce(V,A,J,oe);if(be(J)){if(Ee=be(J),typeof Ee!="function")throw Error(d(150));return J=Ee.call(J),De(V,A,J,oe)}if(typeof J.then=="function")return kt(V,A,Fr(J),oe);if(J.$$typeof===G)return kt(V,A,Hr(V,J),oe);$r(V,J)}return typeof J=="string"&&J!==""||typeof J=="number"||typeof J=="bigint"?(J=""+J,A!==null&&A.tag===6?(a(V,A.sibling),oe=i(A,J),oe.return=V,V=oe):(a(V,A),oe=Oo(J,V.mode,oe),oe.return=V,V=oe),m(V)):a(V,A)}return function(V,A,J,oe){try{wi=0;var Ee=kt(V,A,J,oe);return zn=null,Ee}catch(Te){if(Te===En||Te===Gr)throw Te;var jt=Hs(29,Te,null,V.mode);return jt.lanes=oe,jt.return=V,jt}finally{}}}var Jl=Pm(!0),Wm=Pm(!1),xl=!1;function Xo(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Ko(t,s){t=t.updateQueue,s.updateQueue===t&&(s.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function fl(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function pl(t,s,a){var l=t.updateQueue;if(l===null)return null;if(l=l.shared,(bt&2)!==0){var i=l.pending;return i===null?s.next=s:(s.next=i.next,i.next=s),l.pending=s,s=Rr(t),Lm(t,null,a),s}return Or(t,l,s,a),Rr(t)}function Si(t,s,a){if(s=s.updateQueue,s!==null&&(s=s.shared,(a&4194048)!==0)){var l=s.lanes;l&=t.pendingLanes,a|=l,s.lanes=a,cl(t,a)}}function Zo(t,s){var a=t.updateQueue,l=t.alternate;if(l!==null&&(l=l.updateQueue,a===l)){var i=null,o=null;if(a=a.firstBaseUpdate,a!==null){do{var m={lane:a.lane,tag:a.tag,payload:a.payload,callback:null,next:null};o===null?i=o=m:o=o.next=m,a=a.next}while(a!==null);o===null?i=o=s:o=o.next=s}else i=o=s;a={baseState:l.baseState,firstBaseUpdate:i,lastBaseUpdate:o,shared:l.shared,callbacks:l.callbacks},t.updateQueue=a;return}t=a.lastBaseUpdate,t===null?a.firstBaseUpdate=s:t.next=s,a.lastBaseUpdate=s}var Jo=!1;function Ci(){if(Jo){var t=Tn;if(t!==null)throw t}}function ki(t,s,a,l){Jo=!1;var i=t.updateQueue;xl=!1;var o=i.firstBaseUpdate,m=i.lastBaseUpdate,g=i.shared.pending;if(g!==null){i.shared.pending=null;var C=g,I=C.next;C.next=null,m===null?o=I:m.next=I,m=C;var ae=t.alternate;ae!==null&&(ae=ae.updateQueue,g=ae.lastBaseUpdate,g!==m&&(g===null?ae.firstBaseUpdate=I:g.next=I,ae.lastBaseUpdate=C))}if(o!==null){var ue=i.baseState;m=0,ae=I=C=null,g=o;do{var P=g.lane&-536870913,te=P!==g.lane;if(te?(lt&P)===P:(l&P)===P){P!==0&&P===kn&&(Jo=!0),ae!==null&&(ae=ae.next={lane:0,tag:g.tag,payload:g.payload,callback:null,next:null});e:{var Ce=t,De=g;P=s;var kt=a;switch(De.tag){case 1:if(Ce=De.payload,typeof Ce=="function"){ue=Ce.call(kt,ue,P);break e}ue=Ce;break e;case 3:Ce.flags=Ce.flags&-65537|128;case 0:if(Ce=De.payload,P=typeof Ce=="function"?Ce.call(kt,ue,P):Ce,P==null)break e;ue=k({},ue,P);break e;case 2:xl=!0}}P=g.callback,P!==null&&(t.flags|=64,te&&(t.flags|=8192),te=i.callbacks,te===null?i.callbacks=[P]:te.push(P))}else te={lane:P,tag:g.tag,payload:g.payload,callback:g.callback,next:null},ae===null?(I=ae=te,C=ue):ae=ae.next=te,m|=P;if(g=g.next,g===null){if(g=i.shared.pending,g===null)break;te=g,g=te.next,te.next=null,i.lastBaseUpdate=te,i.shared.pending=null}}while(!0);ae===null&&(C=ue),i.baseState=C,i.firstBaseUpdate=I,i.lastBaseUpdate=ae,o===null&&(i.shared.lanes=0),yl|=m,t.lanes=m,t.memoizedState=ue}}function eh(t,s){if(typeof t!="function")throw Error(d(191,t));t.call(s)}function th(t,s){var a=t.callbacks;if(a!==null)for(t.callbacks=null,t=0;to?o:8;var m=y.T,g={};y.T=g,fd(t,!1,s,a);try{var C=i(),I=y.S;if(I!==null&&I(g,C),C!==null&&typeof C=="object"&&typeof C.then=="function"){var ae=Bj(C,l);zi(t,s,ae,$s(t))}else zi(t,s,l,$s(t))}catch(ue){zi(t,s,{then:function(){},status:"rejected",reason:ue},$s())}finally{q.p=o,m!==null&&g.types!==null&&(m.types=g.types),y.T=m}}function $j(){}function hd(t,s,a,l){if(t.tag!==5)throw Error(d(476));var i=Dh(t).queue;Mh(t,i,s,H,a===null?$j:function(){return Oh(t),a(l)})}function Dh(t){var s=t.memoizedState;if(s!==null)return s;s={memoizedState:H,baseState:H,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:$a,lastRenderedState:H},next:null};var a={};return s.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:$a,lastRenderedState:a},next:null},t.memoizedState=s,t=t.alternate,t!==null&&(t.memoizedState=s),s}function Oh(t){var s=Dh(t);s.next===null&&(s=t.alternate.memoizedState),zi(t,s.next.queue,{},$s())}function xd(){return hs(Xi)}function Rh(){return Xt().memoizedState}function Lh(){return Xt().memoizedState}function Qj(t){for(var s=t.return;s!==null;){switch(s.tag){case 24:case 3:var a=$s();t=fl(a);var l=pl(s,t,a);l!==null&&(Ms(l,s,a),Si(l,s,a)),s={cache:Fo()},t.payload=s;return}s=s.return}}function Yj(t,s,a){var l=$s();a={lane:l,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},ec(t)?Bh(s,a):(a=Mo(t,s,a,l),a!==null&&(Ms(a,t,l),Hh(a,s,l)))}function Uh(t,s,a){var l=$s();zi(t,s,a,l)}function zi(t,s,a,l){var i={lane:l,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(ec(t))Bh(s,i);else{var o=t.alternate;if(t.lanes===0&&(o===null||o.lanes===0)&&(o=s.lastRenderedReducer,o!==null))try{var m=s.lastRenderedState,g=o(m,a);if(i.hasEagerState=!0,i.eagerState=g,Bs(g,m))return Or(t,s,i,0),Et===null&&Dr(),!1}catch{}finally{}if(a=Mo(t,s,i,l),a!==null)return Ms(a,t,l),Hh(a,s,l),!0}return!1}function fd(t,s,a,l){if(l={lane:2,revertLane:Xd(),gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},ec(t)){if(s)throw Error(d(479))}else s=Mo(t,a,l,2),s!==null&&Ms(s,t,2)}function ec(t){var s=t.alternate;return t===Ye||s!==null&&s===Ye}function Bh(t,s){Mn=Xr=!0;var a=t.pending;a===null?s.next=s:(s.next=a.next,a.next=s),t.pending=s}function Hh(t,s,a){if((a&4194048)!==0){var l=s.lanes;l&=t.pendingLanes,a|=l,s.lanes=a,cl(t,a)}}var Ai={readContext:hs,use:Jr,useCallback:Gt,useContext:Gt,useEffect:Gt,useImperativeHandle:Gt,useLayoutEffect:Gt,useInsertionEffect:Gt,useMemo:Gt,useReducer:Gt,useRef:Gt,useState:Gt,useDebugValue:Gt,useDeferredValue:Gt,useTransition:Gt,useSyncExternalStore:Gt,useId:Gt,useHostTransitionStatus:Gt,useFormState:Gt,useActionState:Gt,useOptimistic:Gt,useMemoCache:Gt,useCacheRefresh:Gt};Ai.useEffectEvent=Gt;var qh={readContext:hs,use:Jr,useCallback:function(t,s){return ws().memoizedState=[t,s===void 0?null:s],t},useContext:hs,useEffect:wh,useImperativeHandle:function(t,s,a){a=a!=null?a.concat([t]):null,Pr(4194308,4,kh.bind(null,s,t),a)},useLayoutEffect:function(t,s){return Pr(4194308,4,t,s)},useInsertionEffect:function(t,s){Pr(4,2,t,s)},useMemo:function(t,s){var a=ws();s=s===void 0?null:s;var l=t();if(Il){ns(!0);try{t()}finally{ns(!1)}}return a.memoizedState=[l,s],l},useReducer:function(t,s,a){var l=ws();if(a!==void 0){var i=a(s);if(Il){ns(!0);try{a(s)}finally{ns(!1)}}}else i=s;return l.memoizedState=l.baseState=i,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:i},l.queue=t,t=t.dispatch=Yj.bind(null,Ye,t),[l.memoizedState,t]},useRef:function(t){var s=ws();return t={current:t},s.memoizedState=t},useState:function(t){t=cd(t);var s=t.queue,a=Uh.bind(null,Ye,s);return s.dispatch=a,[t.memoizedState,a]},useDebugValue:ud,useDeferredValue:function(t,s){var a=ws();return md(a,t,s)},useTransition:function(){var t=cd(!1);return t=Mh.bind(null,Ye,t.queue,!0,!1),ws().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,s,a){var l=Ye,i=ws();if(xt){if(a===void 0)throw Error(d(407));a=a()}else{if(a=s(),Et===null)throw Error(d(349));(lt&127)!==0||rh(l,s,a)}i.memoizedState=a;var o={value:a,getSnapshot:s};return i.queue=o,wh(oh.bind(null,l,o,t),[t]),l.flags|=2048,On(9,{destroy:void 0},ch.bind(null,l,o,a,s),null),a},useId:function(){var t=ws(),s=Et.identifierPrefix;if(xt){var a=wa,l=Na;a=(l&~(1<<32-ds(l)-1)).toString(32)+a,s="_"+s+"R_"+a,a=Kr++,0<\/script>",o=o.removeChild(o.firstChild);break;case"select":o=typeof l.is=="string"?m.createElement("select",{is:l.is}):m.createElement("select"),l.multiple?o.multiple=!0:l.size&&(o.size=l.size);break;default:o=typeof l.is=="string"?m.createElement(i,{is:l.is}):m.createElement(i)}}o[qe]=s,o[ht]=l;e:for(m=s.child;m!==null;){if(m.tag===5||m.tag===6)o.appendChild(m.stateNode);else if(m.tag!==4&&m.tag!==27&&m.child!==null){m.child.return=m,m=m.child;continue}if(m===s)break e;for(;m.sibling===null;){if(m.return===null||m.return===s)break e;m=m.return}m.sibling.return=m.return,m=m.sibling}s.stateNode=o;e:switch(fs(o,i,l),i){case"button":case"input":case"select":case"textarea":l=!!l.autoFocus;break e;case"img":l=!0;break e;default:l=!1}l&&Ya(s)}}return At(s),Ed(s,s.type,t===null?null:t.memoizedProps,s.pendingProps,a),null;case 6:if(t&&s.stateNode!=null)t.memoizedProps!==l&&Ya(s);else{if(typeof l!="string"&&s.stateNode===null)throw Error(d(166));if(t=le.current,Sn(s)){if(t=s.stateNode,a=s.memoizedProps,l=null,i=ms,i!==null)switch(i.tag){case 27:case 5:l=i.memoizedProps}t[qe]=s,t=!!(t.nodeValue===a||l!==null&&l.suppressHydrationWarning===!0||nf(t.nodeValue,a)),t||ml(s,!0)}else t=bc(t).createTextNode(l),t[qe]=s,s.stateNode=t}return At(s),null;case 31:if(a=s.memoizedState,t===null||t.memoizedState!==null){if(l=Sn(s),a!==null){if(t===null){if(!l)throw Error(d(318));if(t=s.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(d(557));t[qe]=s}else $l(),(s.flags&128)===0&&(s.memoizedState=null),s.flags|=4;At(s),t=!1}else a=Ho(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=a),t=!0;if(!t)return s.flags&256?(Gs(s),s):(Gs(s),null);if((s.flags&128)!==0)throw Error(d(558))}return At(s),null;case 13:if(l=s.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(i=Sn(s),l!==null&&l.dehydrated!==null){if(t===null){if(!i)throw Error(d(318));if(i=s.memoizedState,i=i!==null?i.dehydrated:null,!i)throw Error(d(317));i[qe]=s}else $l(),(s.flags&128)===0&&(s.memoizedState=null),s.flags|=4;At(s),i=!1}else i=Ho(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=i),i=!0;if(!i)return s.flags&256?(Gs(s),s):(Gs(s),null)}return Gs(s),(s.flags&128)!==0?(s.lanes=a,s):(a=l!==null,t=t!==null&&t.memoizedState!==null,a&&(l=s.child,i=null,l.alternate!==null&&l.alternate.memoizedState!==null&&l.alternate.memoizedState.cachePool!==null&&(i=l.alternate.memoizedState.cachePool.pool),o=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(o=l.memoizedState.cachePool.pool),o!==i&&(l.flags|=2048)),a!==t&&a&&(s.child.flags|=8192),nc(s,s.updateQueue),At(s),null);case 4:return D(),t===null&&Id(s.stateNode.containerInfo),At(s),null;case 10:return Va(s.type),At(s),null;case 19:if(xe(Yt),l=s.memoizedState,l===null)return At(s),null;if(i=(s.flags&128)!==0,o=l.rendering,o===null)if(i)Di(l,!1);else{if(Vt!==0||t!==null&&(t.flags&128)!==0)for(t=s.child;t!==null;){if(o=Yr(t),o!==null){for(s.flags|=128,Di(l,!1),t=o.updateQueue,s.updateQueue=t,nc(s,t),s.subtreeFlags=0,t=a,a=s.child;a!==null;)Um(a,t),a=a.sibling;return Q(Yt,Yt.current&1|2),xt&&qa(s,l.treeForkCount),s.child}t=t.sibling}l.tail!==null&&Ke()>dc&&(s.flags|=128,i=!0,Di(l,!1),s.lanes=4194304)}else{if(!i)if(t=Yr(o),t!==null){if(s.flags|=128,i=!0,t=t.updateQueue,s.updateQueue=t,nc(s,t),Di(l,!0),l.tail===null&&l.tailMode==="hidden"&&!o.alternate&&!xt)return At(s),null}else 2*Ke()-l.renderingStartTime>dc&&a!==536870912&&(s.flags|=128,i=!0,Di(l,!1),s.lanes=4194304);l.isBackwards?(o.sibling=s.child,s.child=o):(t=l.last,t!==null?t.sibling=o:s.child=o,l.last=o)}return l.tail!==null?(t=l.tail,l.rendering=t,l.tail=t.sibling,l.renderingStartTime=Ke(),t.sibling=null,a=Yt.current,Q(Yt,i?a&1|2:a&1),xt&&qa(s,l.treeForkCount),t):(At(s),null);case 22:case 23:return Gs(s),Po(),l=s.memoizedState!==null,t!==null?t.memoizedState!==null!==l&&(s.flags|=8192):l&&(s.flags|=8192),l?(a&536870912)!==0&&(s.flags&128)===0&&(At(s),s.subtreeFlags&6&&(s.flags|=8192)):At(s),a=s.updateQueue,a!==null&&nc(s,a.retryQueue),a=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),l=null,s.memoizedState!==null&&s.memoizedState.cachePool!==null&&(l=s.memoizedState.cachePool.pool),l!==a&&(s.flags|=2048),t!==null&&xe(Xl),null;case 24:return a=null,t!==null&&(a=t.memoizedState.cache),s.memoizedState.cache!==a&&(s.flags|=2048),Va(Zt),At(s),null;case 25:return null;case 30:return null}throw Error(d(156,s.tag))}function Ij(t,s){switch(Uo(s),s.tag){case 1:return t=s.flags,t&65536?(s.flags=t&-65537|128,s):null;case 3:return Va(Zt),D(),t=s.flags,(t&65536)!==0&&(t&128)===0?(s.flags=t&-65537|128,s):null;case 26:case 27:case 5:return Ne(s),null;case 31:if(s.memoizedState!==null){if(Gs(s),s.alternate===null)throw Error(d(340));$l()}return t=s.flags,t&65536?(s.flags=t&-65537|128,s):null;case 13:if(Gs(s),t=s.memoizedState,t!==null&&t.dehydrated!==null){if(s.alternate===null)throw Error(d(340));$l()}return t=s.flags,t&65536?(s.flags=t&-65537|128,s):null;case 19:return xe(Yt),null;case 4:return D(),null;case 10:return Va(s.type),null;case 22:case 23:return Gs(s),Po(),t!==null&&xe(Xl),t=s.flags,t&65536?(s.flags=t&-65537|128,s):null;case 24:return Va(Zt),null;case 25:return null;default:return null}}function dx(t,s){switch(Uo(s),s.tag){case 3:Va(Zt),D();break;case 26:case 27:case 5:Ne(s);break;case 4:D();break;case 31:s.memoizedState!==null&&Gs(s);break;case 13:Gs(s);break;case 19:xe(Yt);break;case 10:Va(s.type);break;case 22:case 23:Gs(s),Po(),t!==null&&xe(Xl);break;case 24:Va(Zt)}}function Oi(t,s){try{var a=s.updateQueue,l=a!==null?a.lastEffect:null;if(l!==null){var i=l.next;a=i;do{if((a.tag&t)===t){l=void 0;var o=a.create,m=a.inst;l=o(),m.destroy=l}a=a.next}while(a!==i)}}catch(g){wt(s,s.return,g)}}function vl(t,s,a){try{var l=s.updateQueue,i=l!==null?l.lastEffect:null;if(i!==null){var o=i.next;l=o;do{if((l.tag&t)===t){var m=l.inst,g=m.destroy;if(g!==void 0){m.destroy=void 0,i=s;var C=a,I=g;try{I()}catch(ae){wt(i,C,ae)}}}l=l.next}while(l!==o)}}catch(ae){wt(s,s.return,ae)}}function ux(t){var s=t.updateQueue;if(s!==null){var a=t.stateNode;try{th(s,a)}catch(l){wt(t,t.return,l)}}}function mx(t,s,a){a.props=Pl(t.type,t.memoizedProps),a.state=t.memoizedState;try{a.componentWillUnmount()}catch(l){wt(t,s,l)}}function Ri(t,s){try{var a=t.ref;if(a!==null){switch(t.tag){case 26:case 27:case 5:var l=t.stateNode;break;case 30:l=t.stateNode;break;default:l=t.stateNode}typeof a=="function"?t.refCleanup=a(l):a.current=l}}catch(i){wt(t,s,i)}}function _a(t,s){var a=t.ref,l=t.refCleanup;if(a!==null)if(typeof l=="function")try{l()}catch(i){wt(t,s,i)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(i){wt(t,s,i)}else a.current=null}function hx(t){var s=t.type,a=t.memoizedProps,l=t.stateNode;try{e:switch(s){case"button":case"input":case"select":case"textarea":a.autoFocus&&l.focus();break e;case"img":a.src?l.src=a.src:a.srcSet&&(l.srcset=a.srcSet)}}catch(i){wt(t,t.return,i)}}function zd(t,s,a){try{var l=t.stateNode;vv(l,t.type,a,s),l[ht]=s}catch(i){wt(t,t.return,i)}}function xx(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&Cl(t.type)||t.tag===4}function Ad(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||xx(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.tag===27&&Cl(t.type)||t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function Md(t,s,a){var l=t.tag;if(l===5||l===6)t=t.stateNode,s?(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a).insertBefore(t,s):(s=a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,s.appendChild(t),a=a._reactRootContainer,a!=null||s.onclick!==null||(s.onclick=Ua));else if(l!==4&&(l===27&&Cl(t.type)&&(a=t.stateNode,s=null),t=t.child,t!==null))for(Md(t,s,a),t=t.sibling;t!==null;)Md(t,s,a),t=t.sibling}function ic(t,s,a){var l=t.tag;if(l===5||l===6)t=t.stateNode,s?a.insertBefore(t,s):a.appendChild(t);else if(l!==4&&(l===27&&Cl(t.type)&&(a=t.stateNode),t=t.child,t!==null))for(ic(t,s,a),t=t.sibling;t!==null;)ic(t,s,a),t=t.sibling}function fx(t){var s=t.stateNode,a=t.memoizedProps;try{for(var l=t.type,i=s.attributes;i.length;)s.removeAttributeNode(i[0]);fs(s,l,a),s[qe]=t,s[ht]=a}catch(o){wt(t,t.return,o)}}var Xa=!1,Pt=!1,Dd=!1,px=typeof WeakSet=="function"?WeakSet:Set,rs=null;function Pj(t,s){if(t=t.containerInfo,eu=kc,t=Tm(t),Co(t)){if("selectionStart"in t)var a={start:t.selectionStart,end:t.selectionEnd};else e:{a=(a=t.ownerDocument)&&a.defaultView||window;var l=a.getSelection&&a.getSelection();if(l&&l.rangeCount!==0){a=l.anchorNode;var i=l.anchorOffset,o=l.focusNode;l=l.focusOffset;try{a.nodeType,o.nodeType}catch{a=null;break e}var m=0,g=-1,C=-1,I=0,ae=0,ue=t,P=null;t:for(;;){for(var te;ue!==a||i!==0&&ue.nodeType!==3||(g=m+i),ue!==o||l!==0&&ue.nodeType!==3||(C=m+l),ue.nodeType===3&&(m+=ue.nodeValue.length),(te=ue.firstChild)!==null;)P=ue,ue=te;for(;;){if(ue===t)break t;if(P===a&&++I===i&&(g=m),P===o&&++ae===l&&(C=m),(te=ue.nextSibling)!==null)break;ue=P,P=ue.parentNode}ue=te}a=g===-1||C===-1?null:{start:g,end:C}}else a=null}a=a||{start:0,end:0}}else a=null;for(tu={focusedElem:t,selectionRange:a},kc=!1,rs=s;rs!==null;)if(s=rs,t=s.child,(s.subtreeFlags&1028)!==0&&t!==null)t.return=s,rs=t;else for(;rs!==null;){switch(s=rs,o=s.alternate,t=s.flags,s.tag){case 0:if((t&4)!==0&&(t=s.updateQueue,t=t!==null?t.events:null,t!==null))for(a=0;a title"))),fs(o,l,a),o[qe]=t,is(o),l=o;break e;case"link":var m=wf("link","href",i).get(l+(a.href||""));if(m){for(var g=0;gkt&&(m=kt,kt=De,De=m);var V=Cm(g,De),A=Cm(g,kt);if(V&&A&&(te.rangeCount!==1||te.anchorNode!==V.node||te.anchorOffset!==V.offset||te.focusNode!==A.node||te.focusOffset!==A.offset)){var J=ue.createRange();J.setStart(V.node,V.offset),te.removeAllRanges(),De>kt?(te.addRange(J),te.extend(A.node,A.offset)):(J.setEnd(A.node,A.offset),te.addRange(J))}}}}for(ue=[],te=g;te=te.parentNode;)te.nodeType===1&&ue.push({element:te,left:te.scrollLeft,top:te.scrollTop});for(typeof g.focus=="function"&&g.focus(),g=0;ga?32:a,y.T=null,a=qd,qd=null;var o=wl,m=Pa;if(ts=0,Hn=wl=null,Pa=0,(bt&6)!==0)throw Error(d(331));var g=bt;if(bt|=4,kx(o.current),_x(o,o.current,m,a),bt=g,Gi(0,!1),Oe&&typeof Oe.onPostCommitFiberRoot=="function")try{Oe.onPostCommitFiberRoot(Se,o)}catch{}return!0}finally{q.p=i,y.T=l,Qx(t,s)}}function Xx(t,s,a){s=ta(a,s),s=vd(t.stateNode,s,2),t=pl(t,s,2),t!==null&&(es(t,2),Sa(t))}function wt(t,s,a){if(t.tag===3)Xx(t,t,a);else for(;s!==null;){if(s.tag===3){Xx(s,t,a);break}else if(s.tag===1){var l=s.stateNode;if(typeof s.type.getDerivedStateFromError=="function"||typeof l.componentDidCatch=="function"&&(Nl===null||!Nl.has(l))){t=ta(a,t),a=Kh(2),l=pl(s,a,2),l!==null&&(Zh(a,l,s,t),es(l,2),Sa(l));break}}s=s.return}}function $d(t,s,a){var l=t.pingCache;if(l===null){l=t.pingCache=new tv;var i=new Set;l.set(s,i)}else i=l.get(s),i===void 0&&(i=new Set,l.set(s,i));i.has(a)||(Ld=!0,i.add(a),t=iv.bind(null,t,s,a),s.then(t,t))}function iv(t,s,a){var l=t.pingCache;l!==null&&l.delete(s),t.pingedLanes|=t.suspendedLanes&a,t.warmLanes&=~a,Et===t&&(lt&a)===a&&(Vt===4||Vt===3&&(lt&62914560)===lt&&300>Ke()-oc?(bt&2)===0&&qn(t,0):Ud|=a,Bn===lt&&(Bn=0)),Sa(t)}function Kx(t,s){s===0&&(s=ve()),t=Vl(t,s),t!==null&&(es(t,s),Sa(t))}function rv(t){var s=t.memoizedState,a=0;s!==null&&(a=s.retryLane),Kx(t,a)}function cv(t,s){var a=0;switch(t.tag){case 31:case 13:var l=t.stateNode,i=t.memoizedState;i!==null&&(a=i.retryLane);break;case 19:l=t.stateNode;break;case 22:l=t.stateNode._retryCache;break;default:throw Error(d(314))}l!==null&&l.delete(s),Kx(t,a)}function ov(t,s){return Fe(t,s)}var pc=null,Vn=null,Qd=!1,gc=!1,Yd=!1,Sl=0;function Sa(t){t!==Vn&&t.next===null&&(Vn===null?pc=Vn=t:Vn=Vn.next=t),gc=!0,Qd||(Qd=!0,uv())}function Gi(t,s){if(!Yd&&gc){Yd=!0;do for(var a=!1,l=pc;l!==null;){if(t!==0){var i=l.pendingLanes;if(i===0)var o=0;else{var m=l.suspendedLanes,g=l.pingedLanes;o=(1<<31-ds(42|t)+1)-1,o&=i&~(m&~g),o=o&201326741?o&201326741|1:o?o|2:0}o!==0&&(a=!0,Px(l,o))}else o=lt,o=Ra(l,l===Et?o:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),(o&3)===0||ba(l,o)||(a=!0,Px(l,o));l=l.next}while(a);Yd=!1}}function dv(){Zx()}function Zx(){gc=Qd=!1;var t=0;Sl!==0&&yv()&&(t=Sl);for(var s=Ke(),a=null,l=pc;l!==null;){var i=l.next,o=Jx(l,s);o===0?(l.next=null,a===null?pc=i:a.next=i,i===null&&(Vn=a)):(a=l,(t!==0||(o&3)!==0)&&(gc=!0)),l=i}ts!==0&&ts!==5||Gi(t),Sl!==0&&(Sl=0)}function Jx(t,s){for(var a=t.suspendedLanes,l=t.pingedLanes,i=t.expirationTimes,o=t.pendingLanes&-62914561;0g)break;var ae=C.transferSize,ue=C.initiatorType;ae&&rf(ue)&&(C=C.responseEnd,m+=ae*(C"u"?null:document;function vf(t,s,a){var l=Fn;if(l&&typeof s=="string"&&s){var i=Ws(s);i='link[rel="'+t+'"][href="'+i+'"]',typeof a=="string"&&(i+='[crossorigin="'+a+'"]'),jf.has(i)||(jf.add(i),t={rel:t,crossOrigin:a,href:s},l.querySelector(i)===null&&(s=l.createElement("link"),fs(s,"link",t),is(s),l.head.appendChild(s)))}}function zv(t){Wa.D(t),vf("dns-prefetch",t,null)}function Av(t,s){Wa.C(t,s),vf("preconnect",t,s)}function Mv(t,s,a){Wa.L(t,s,a);var l=Fn;if(l&&t&&s){var i='link[rel="preload"][as="'+Ws(s)+'"]';s==="image"&&a&&a.imageSrcSet?(i+='[imagesrcset="'+Ws(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(i+='[imagesizes="'+Ws(a.imageSizes)+'"]')):i+='[href="'+Ws(t)+'"]';var o=i;switch(s){case"style":o=$n(t);break;case"script":o=Qn(t)}ra.has(o)||(t=k({rel:"preload",href:s==="image"&&a&&a.imageSrcSet?void 0:t,as:s},a),ra.set(o,t),l.querySelector(i)!==null||s==="style"&&l.querySelector(Qi(o))||s==="script"&&l.querySelector(Yi(o))||(s=l.createElement("link"),fs(s,"link",t),is(s),l.head.appendChild(s)))}}function Dv(t,s){Wa.m(t,s);var a=Fn;if(a&&t){var l=s&&typeof s.as=="string"?s.as:"script",i='link[rel="modulepreload"][as="'+Ws(l)+'"][href="'+Ws(t)+'"]',o=i;switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":o=Qn(t)}if(!ra.has(o)&&(t=k({rel:"modulepreload",href:t},s),ra.set(o,t),a.querySelector(i)===null)){switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(Yi(o)))return}l=a.createElement("link"),fs(l,"link",t),is(l),a.head.appendChild(l)}}}function Ov(t,s,a){Wa.S(t,s,a);var l=Fn;if(l&&t){var i=mn(l).hoistableStyles,o=$n(t);s=s||"default";var m=i.get(o);if(!m){var g={loading:0,preload:null};if(m=l.querySelector(Qi(o)))g.loading=5;else{t=k({rel:"stylesheet",href:t,"data-precedence":s},a),(a=ra.get(o))&&cu(t,a);var C=m=l.createElement("link");is(C),fs(C,"link",t),C._p=new Promise(function(I,ae){C.onload=I,C.onerror=ae}),C.addEventListener("load",function(){g.loading|=1}),C.addEventListener("error",function(){g.loading|=2}),g.loading|=4,Nc(m,s,l)}m={type:"stylesheet",instance:m,count:1,state:g},i.set(o,m)}}}function Rv(t,s){Wa.X(t,s);var a=Fn;if(a&&t){var l=mn(a).hoistableScripts,i=Qn(t),o=l.get(i);o||(o=a.querySelector(Yi(i)),o||(t=k({src:t,async:!0},s),(s=ra.get(i))&&ou(t,s),o=a.createElement("script"),is(o),fs(o,"link",t),a.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},l.set(i,o))}}function Lv(t,s){Wa.M(t,s);var a=Fn;if(a&&t){var l=mn(a).hoistableScripts,i=Qn(t),o=l.get(i);o||(o=a.querySelector(Yi(i)),o||(t=k({src:t,async:!0,type:"module"},s),(s=ra.get(i))&&ou(t,s),o=a.createElement("script"),is(o),fs(o,"link",t),a.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},l.set(i,o))}}function bf(t,s,a,l){var i=(i=le.current)?yc(i):null;if(!i)throw Error(d(446));switch(t){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(s=$n(a.href),a=mn(i).hoistableStyles,l=a.get(s),l||(l={type:"style",instance:null,count:0,state:null},a.set(s,l)),l):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){t=$n(a.href);var o=mn(i).hoistableStyles,m=o.get(t);if(m||(i=i.ownerDocument||i,m={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},o.set(t,m),(o=i.querySelector(Qi(t)))&&!o._p&&(m.instance=o,m.state.loading=5),ra.has(t)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},ra.set(t,a),o||Uv(i,t,a,m.state))),s&&l===null)throw Error(d(528,""));return m}if(s&&l!==null)throw Error(d(529,""));return null;case"script":return s=a.async,a=a.src,typeof a=="string"&&s&&typeof s!="function"&&typeof s!="symbol"?(s=Qn(a),a=mn(i).hoistableScripts,l=a.get(s),l||(l={type:"script",instance:null,count:0,state:null},a.set(s,l)),l):{type:"void",instance:null,count:0,state:null};default:throw Error(d(444,t))}}function $n(t){return'href="'+Ws(t)+'"'}function Qi(t){return'link[rel="stylesheet"]['+t+"]"}function yf(t){return k({},t,{"data-precedence":t.precedence,precedence:null})}function Uv(t,s,a,l){t.querySelector('link[rel="preload"][as="style"]['+s+"]")?l.loading=1:(s=t.createElement("link"),l.preload=s,s.addEventListener("load",function(){return l.loading|=1}),s.addEventListener("error",function(){return l.loading|=2}),fs(s,"link",a),is(s),t.head.appendChild(s))}function Qn(t){return'[src="'+Ws(t)+'"]'}function Yi(t){return"script[async]"+t}function Nf(t,s,a){if(s.count++,s.instance===null)switch(s.type){case"style":var l=t.querySelector('style[data-href~="'+Ws(a.href)+'"]');if(l)return s.instance=l,is(l),l;var i=k({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return l=(t.ownerDocument||t).createElement("style"),is(l),fs(l,"style",i),Nc(l,a.precedence,t),s.instance=l;case"stylesheet":i=$n(a.href);var o=t.querySelector(Qi(i));if(o)return s.state.loading|=4,s.instance=o,is(o),o;l=yf(a),(i=ra.get(i))&&cu(l,i),o=(t.ownerDocument||t).createElement("link"),is(o);var m=o;return m._p=new Promise(function(g,C){m.onload=g,m.onerror=C}),fs(o,"link",l),s.state.loading|=4,Nc(o,a.precedence,t),s.instance=o;case"script":return o=Qn(a.src),(i=t.querySelector(Yi(o)))?(s.instance=i,is(i),i):(l=a,(i=ra.get(o))&&(l=k({},a),ou(l,i)),t=t.ownerDocument||t,i=t.createElement("script"),is(i),fs(i,"link",l),t.head.appendChild(i),s.instance=i);case"void":return null;default:throw Error(d(443,s.type))}else s.type==="stylesheet"&&(s.state.loading&4)===0&&(l=s.instance,s.state.loading|=4,Nc(l,a.precedence,t));return s.instance}function Nc(t,s,a){for(var l=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),i=l.length?l[l.length-1]:null,o=i,m=0;m title"):null)}function Bv(t,s,a){if(a===1||s.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof s.precedence!="string"||typeof s.href!="string"||s.href==="")break;return!0;case"link":if(typeof s.rel!="string"||typeof s.href!="string"||s.href===""||s.onLoad||s.onError)break;switch(s.rel){case"stylesheet":return t=s.disabled,typeof s.precedence=="string"&&t==null;default:return!0}case"script":if(s.async&&typeof s.async!="function"&&typeof s.async!="symbol"&&!s.onLoad&&!s.onError&&s.src&&typeof s.src=="string")return!0}return!1}function Sf(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function Hv(t,s,a,l){if(a.type==="stylesheet"&&(typeof l.media!="string"||matchMedia(l.media).matches!==!1)&&(a.state.loading&4)===0){if(a.instance===null){var i=$n(l.href),o=s.querySelector(Qi(i));if(o){s=o._p,s!==null&&typeof s=="object"&&typeof s.then=="function"&&(t.count++,t=_c.bind(t),s.then(t,t)),a.state.loading|=4,a.instance=o,is(o);return}o=s.ownerDocument||s,l=yf(l),(i=ra.get(i))&&cu(l,i),o=o.createElement("link"),is(o);var m=o;m._p=new Promise(function(g,C){m.onload=g,m.onerror=C}),fs(o,"link",l),a.instance=o}t.stylesheets===null&&(t.stylesheets=new Map),t.stylesheets.set(a,s),(s=a.state.preload)&&(a.state.loading&3)===0&&(t.count++,a=_c.bind(t),s.addEventListener("load",a),s.addEventListener("error",a))}}var du=0;function qv(t,s){return t.stylesheets&&t.count===0&&Cc(t,t.stylesheets),0du?50:800)+s);return t.unsuspend=a,function(){t.unsuspend=null,clearTimeout(l),clearTimeout(i)}}:null}function _c(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Cc(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var Sc=null;function Cc(t,s){t.stylesheets=null,t.unsuspend!==null&&(t.count++,Sc=new Map,s.forEach(Gv,t),Sc=null,_c.call(t))}function Gv(t,s){if(!(s.state.loading&4)){var a=Sc.get(t);if(a)var l=a.get(null);else{a=new Map,Sc.set(t,a);for(var i=t.querySelectorAll("link[data-precedence],style[data-precedence]"),o=0;o"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(r){console.error(r)}}return n(),yu.exports=fN(),yu.exports}var gN=pN();function K(...n){return ib(rb(n))}const Ve=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:K("rounded-xl border bg-card text-card-foreground shadow",n),...r}));Ve.displayName="Card";const pt=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:K("flex flex-col space-y-1.5 p-6",n),...r}));pt.displayName="CardHeader";const gt=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:K("font-semibold leading-none tracking-tight",n),...r}));gt.displayName="CardTitle";const Kt=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:K("text-sm text-muted-foreground",n),...r}));Kt.displayName="CardDescription";const yt=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:K("p-6 pt-0",n),...r}));yt.displayName="CardContent";const og=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:K("flex items-center p-6 pt-0",n),...r}));og.displayName="CardFooter";const Aa=db,ja=u.forwardRef(({className:n,...r},c)=>e.jsx(xp,{ref:c,className:K("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",n),...r}));ja.displayName=xp.displayName;const st=u.forwardRef(({className:n,...r},c)=>e.jsx(fp,{ref:c,className:K("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all duration-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",n),...r}));st.displayName=fp.displayName;const _t=u.forwardRef(({className:n,...r},c)=>e.jsx(pp,{ref:c,className:K("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[state=active]:animate-in data-[state=active]:fade-in data-[state=active]:duration-300",n),...r}));_t.displayName=pp.displayName;const Ie=u.forwardRef(({className:n,children:r,viewportRef:c,...d},h)=>e.jsxs(gp,{ref:h,className:K("relative overflow-hidden",n),...d,children:[e.jsx(ub,{ref:c,className:"h-full w-full rounded-[inherit]",children:r}),e.jsx(zu,{}),e.jsx(zu,{orientation:"horizontal"}),e.jsx(mb,{})]}));Ie.displayName=gp.displayName;const zu=u.forwardRef(({className:n,orientation:r="vertical",...c},d)=>e.jsx(jp,{ref:d,orientation:r,className:K("flex touch-none select-none transition-colors",r==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",r==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",n),...c,children:e.jsx(hb,{className:"relative flex-1 rounded-full bg-border"})}));zu.displayName=jp.displayName;function dg({className:n,...r}){return e.jsx("div",{className:K("animate-pulse rounded-md bg-primary/10",n),...r})}const vr=u.forwardRef(({className:n,value:r,...c},d)=>e.jsx(vp,{ref:d,className:K("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",n),...c,children:e.jsx(xb,{className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(r||0)}%)`}})}));vr.displayName=vp.displayName;const jN={light:"",dark:".dark"},ug=u.createContext(null);function mg(){const n=u.useContext(ug);if(!n)throw new Error("useChart must be used within a ");return n}const Xn=u.forwardRef(({id:n,className:r,children:c,config:d,...h},x)=>{const f=u.useId(),j=`chart-${n||f.replace(/:/g,"")}`;return e.jsx(ug.Provider,{value:{config:d},children:e.jsxs("div",{"data-chart":j,ref:x,className:K("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",r),...h,children:[e.jsx(vN,{id:j,config:d}),e.jsx(Tb,{children:c})]})})});Xn.displayName="Chart";const vN=({id:n,config:r})=>{const c=Object.entries(r).filter(([,d])=>d.theme||d.color);return c.length?e.jsx("style",{dangerouslySetInnerHTML:{__html:Object.entries(jN).map(([d,h])=>` +${h} [data-chart=${n}] { +${c.map(([x,f])=>{const j=f.theme?.[d]||f.color;return j?` --color-${x}: ${j};`:null}).join(` +`)} +} +`).join(` +`)}}):null},tr=Eb,Kn=u.forwardRef(({active:n,payload:r,className:c,indicator:d="dot",hideLabel:h=!1,hideIndicator:x=!1,label:f,labelFormatter:j,labelClassName:p,formatter:w,color:v,nameKey:k,labelKey:T},E)=>{const{config:R}=mg(),F=u.useMemo(()=>{if(h||!r?.length)return null;const[M]=r,Z=`${T||M?.dataKey||M?.name||"value"}`,G=Au(R,M,Z),z=!T&&typeof f=="string"?R[f]?.label||f:G?.label;return j?e.jsx("div",{className:K("font-medium",p),children:j(z,r)}):z?e.jsx("div",{className:K("font-medium",p),children:z}):null},[f,j,r,h,p,R,T]);if(!n||!r?.length)return null;const U=r.length===1&&d!=="dot";return e.jsxs("div",{ref:E,className:K("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",c),children:[U?null:F,e.jsx("div",{className:"grid gap-1.5",children:r.filter(M=>M.type!=="none").map((M,Z)=>{const G=`${k||M.name||M.dataKey||"value"}`,z=Au(R,M,G),B=v||M.payload.fill||M.color;return e.jsx("div",{className:K("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",d==="dot"&&"items-center"),children:w&&M?.value!==void 0&&M.name?w(M.value,M.name,M,Z,M.payload):e.jsxs(e.Fragment,{children:[z?.icon?e.jsx(z.icon,{}):!x&&e.jsx("div",{className:K("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]",{"h-2.5 w-2.5":d==="dot","w-1":d==="line","w-0 border-[1.5px] border-dashed bg-transparent":d==="dashed","my-0.5":U&&d==="dashed"}),style:{"--color-bg":B,"--color-border":B}}),e.jsxs("div",{className:K("flex flex-1 justify-between leading-none",U?"items-end":"items-center"),children:[e.jsxs("div",{className:"grid gap-1.5",children:[U?F:null,e.jsx("span",{className:"text-muted-foreground",children:z?.label||M.name})]}),M.value&&e.jsx("span",{className:"font-mono font-medium tabular-nums text-foreground",children:M.value.toLocaleString()})]})]})},M.dataKey)})})]})});Kn.displayName="ChartTooltip";const bN=zb,hg=u.forwardRef(({className:n,hideIcon:r=!1,payload:c,verticalAlign:d="bottom",nameKey:h},x)=>{const{config:f}=mg();return c?.length?e.jsx("div",{ref:x,className:K("flex items-center justify-center gap-4",d==="top"?"pb-3":"pt-3",n),children:c.filter(j=>j.type!=="none").map(j=>{const p=`${h||j.dataKey||"value"}`,w=Au(f,j,p);return e.jsxs("div",{className:K("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"),children:[w?.icon&&!r?e.jsx(w.icon,{}):e.jsx("div",{className:"h-2 w-2 shrink-0 rounded-[2px]",style:{backgroundColor:j.color}}),w?.label]},j.value)})}):null});hg.displayName="ChartLegend";function Au(n,r,c){if(typeof r!="object"||r===null)return;const d="payload"in r&&typeof r.payload=="object"&&r.payload!==null?r.payload:void 0;let h=c;return c in r&&typeof r[c]=="string"?h=r[c]:d&&c in d&&typeof d[c]=="string"&&(h=d[c]),h in n?n[h]:n[c]}const ur=ei("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),b=u.forwardRef(({className:n,variant:r,size:c,asChild:d=!1,...h},x)=>{const f=d?Lb:"button";return e.jsx(f,{className:K(ur({variant:r,size:c,className:n})),ref:x,...h})});b.displayName="Button";const yN=ei("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function Qe({className:n,variant:r,...c}){return e.jsx("div",{className:K(yN({variant:r}),n),...c})}const NN=5,wN=5e3;let _u=0;function _N(){return _u=(_u+1)%Number.MAX_SAFE_INTEGER,_u.toString()}const Su=new Map,Zf=n=>{if(Su.has(n))return;const r=setTimeout(()=>{Su.delete(n),ir({type:"REMOVE_TOAST",toastId:n})},wN);Su.set(n,r)},SN=(n,r)=>{switch(r.type){case"ADD_TOAST":return{...n,toasts:[r.toast,...n.toasts].slice(0,NN)};case"UPDATE_TOAST":return{...n,toasts:n.toasts.map(c=>c.id===r.toast.id?{...c,...r.toast}:c)};case"DISMISS_TOAST":{const{toastId:c}=r;return c?Zf(c):n.toasts.forEach(d=>{Zf(d.id)}),{...n,toasts:n.toasts.map(d=>d.id===c||c===void 0?{...d,open:!1}:d)}}case"REMOVE_TOAST":return r.toastId===void 0?{...n,toasts:[]}:{...n,toasts:n.toasts.filter(c=>c.id!==r.toastId)}}},$c=[];let Qc={toasts:[]};function ir(n){Qc=SN(Qc,n),$c.forEach(r=>{r(Qc)})}function CN({...n}){const r=_N(),c=h=>ir({type:"UPDATE_TOAST",toast:{...h,id:r}}),d=()=>ir({type:"DISMISS_TOAST",toastId:r});return ir({type:"ADD_TOAST",toast:{...n,id:r,open:!0,onOpenChange:h=>{h||d()}}}),{id:r,dismiss:d,update:c}}function Rt(){const[n,r]=u.useState(Qc);return u.useEffect(()=>($c.push(r),()=>{const c=$c.indexOf(r);c>-1&&$c.splice(c,1)}),[n]),{...n,toast:CN,dismiss:c=>ir({type:"DISMISS_TOAST",toastId:c})}}const kN=n=>{const r=[];for(let c=0;c{try{E(!0);const H=await Oc.get("https://v1.hitokoto.cn/?c=a&c=b&c=c&c=d&c=h&c=i&c=k");k({hitokoto:H.data.hitokoto,from:H.data.from||H.data.from_who||"未知"})}catch(H){console.error("获取一言失败:",H),k({hitokoto:"人生就像一盒巧克力,你永远不知道下一颗是什么味道。",from:"阿甘正传"})}finally{E(!1)}},[]),z=u.useCallback(async()=>{try{const H=localStorage.getItem("access-token"),ie=await Oc.get("/api/webui/system/status",{headers:{Authorization:`Bearer ${H}`}});F(ie.data)}catch(H){console.error("获取机器人状态失败:",H),F(null)}},[]),B=async()=>{if(!U)try{M(!0);const H=localStorage.getItem("access-token");await Oc.post("/api/webui/system/restart",{},{headers:{Authorization:`Bearer ${H}`}}),Z({title:"重启中",description:"麦麦正在重启,请稍候..."}),setTimeout(()=>{z(),M(!1)},3e3)}catch(H){console.error("重启失败:",H),Z({title:"重启失败",description:"无法重启麦麦,请检查控制台",variant:"destructive"}),M(!1)}},X=u.useCallback(async()=>{try{const H=localStorage.getItem("access-token"),ie=await Oc.get(`/api/webui/statistics/dashboard?hours=${f}`,{headers:{Authorization:`Bearer ${H}`}});r(ie.data),d(!1),x(100)}catch(H){console.error("Failed to fetch dashboard data:",H),d(!1),x(100)}},[f]);if(u.useEffect(()=>{if(!c)return;x(0);const H=setTimeout(()=>x(15),200),ie=setTimeout(()=>x(30),800),_=setTimeout(()=>x(45),2e3),me=setTimeout(()=>x(60),4e3),xe=setTimeout(()=>x(75),6500),Q=setTimeout(()=>x(85),9e3),de=setTimeout(()=>x(92),11e3);return()=>{clearTimeout(H),clearTimeout(ie),clearTimeout(_),clearTimeout(me),clearTimeout(xe),clearTimeout(Q),clearTimeout(de)}},[c]),u.useEffect(()=>{X(),G(),z()},[X,G,z]),u.useEffect(()=>{if(!p)return;const H=setInterval(()=>{X(),z()},3e4);return()=>clearInterval(H)},[p,X,z]),c||!n)return e.jsx("div",{className:"flex items-center justify-center h-[calc(100vh-200px)]",children:e.jsxs("div",{className:"text-center space-y-6 w-full max-w-md px-4",children:[e.jsx(ps,{className:"h-12 w-12 animate-spin mx-auto text-primary"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-lg font-medium",children:"加载统计数据中..."}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"正在获取麦麦运行数据"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(vr,{value:h,className:"h-2"}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:[h,"%"]})]})]})});const{summary:S,model_stats:O=[],hourly_data:se=[],daily_data:he=[],recent_activity:ye=[]}=n,be=S??{total_requests:0,total_cost:0,total_tokens:0,online_time:0,total_messages:0,total_replies:0,avg_response_time:0,cost_per_hour:0,tokens_per_hour:0},pe=H=>{const ie=Math.floor(H/3600),_=Math.floor(H%3600/60);return`${ie}小时${_}分钟`},je=H=>new Date(H).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),_e=kN(O.length),y=O.map((H,ie)=>({name:H.model_name,value:H.request_count,fill:_e[ie]})),q={requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"},tokens:{label:"Tokens",color:"hsl(var(--chart-3))"}};return e.jsx(Ie,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"实时监控面板"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"麦麦运行状态和统计数据一览"})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(Aa,{value:f.toString(),onValueChange:H=>j(Number(H)),children:e.jsxs(ja,{className:"grid grid-cols-3 w-full sm:w-auto",children:[e.jsx(st,{value:"24",children:"24小时"}),e.jsx(st,{value:"168",children:"7天"}),e.jsx(st,{value:"720",children:"30天"})]})}),e.jsxs(b,{variant:p?"default":"outline",size:"sm",onClick:()=>w(!p),className:"gap-2",children:[e.jsx(ps,{className:`h-4 w-4 ${p?"animate-spin":""}`}),e.jsx("span",{className:"hidden sm:inline",children:"自动刷新"})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:X,children:e.jsx(ps,{className:"h-4 w-4"})})]})]}),e.jsxs("div",{className:"flex items-center gap-3 px-4 py-2 rounded-lg border border-dashed border-muted-foreground/30 bg-muted/20",children:[T?e.jsx(dg,{className:"h-5 flex-1"}):v?e.jsxs("p",{className:"flex-1 text-sm text-muted-foreground italic truncate",children:['"',v.hitokoto,'" —— ',v.from]}):null,e.jsx(b,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0",onClick:G,disabled:T,children:e.jsx(ps,{className:`h-3.5 w-3.5 ${T?"animate-spin":""}`})})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-3",children:[e.jsxs(Ve,{className:"lg:col-span-1",children:[e.jsx(pt,{className:"pb-3",children:e.jsxs(gt,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(fr,{className:"h-4 w-4"}),"麦麦状态"]})}),e.jsx(yt,{children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"flex items-center gap-2",children:R?.running?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-3 w-3 rounded-full bg-green-500 animate-pulse"}),e.jsxs(Qe,{variant:"outline",className:"text-green-600 border-green-300 bg-green-50",children:[e.jsx(oa,{className:"h-3 w-3 mr-1"}),"运行中"]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-3 w-3 rounded-full bg-red-500"}),e.jsxs(Qe,{variant:"outline",className:"text-red-600 border-red-300 bg-red-50",children:[e.jsx(Ea,{className:"h-3 w-3 mr-1"}),"已停止"]})]})}),R&&e.jsxs("div",{className:"text-xs text-muted-foreground",children:[e.jsxs("span",{children:["v",R.version]}),e.jsx("span",{className:"mx-2",children:"|"}),e.jsxs("span",{children:["运行 ",pe(R.uptime)]})]})]})})]}),e.jsxs(Ve,{className:"lg:col-span-2",children:[e.jsx(pt,{className:"pb-3",children:e.jsxs(gt,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(sn,{className:"h-4 w-4"}),"快速操作"]})}),e.jsx(yt,{children:e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(b,{variant:"outline",size:"sm",onClick:B,disabled:U,className:"gap-2",children:[e.jsx(Kc,{className:`h-4 w-4 ${U?"animate-spin":""}`}),U?"重启中...":"重启麦麦"]}),e.jsx(b,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Vc,{to:"/logs",children:[e.jsx(Ta,{className:"h-4 w-4"}),"查看日志"]})}),e.jsx(b,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Vc,{to:"/plugins",children:[e.jsx(ey,{className:"h-4 w-4"}),"插件管理"]})}),e.jsx(b,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Vc,{to:"/settings",children:[e.jsx(ti,{className:"h-4 w-4"}),"系统设置"]})})]})})]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-4",children:[e.jsxs(Ve,{children:[e.jsxs(pt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(gt,{className:"text-sm font-medium",children:"总请求数"}),e.jsx(ty,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(yt,{children:[e.jsx("div",{className:"text-2xl font-bold",children:be.total_requests.toLocaleString()}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["最近",f<48?f+"小时":Math.floor(f/24)+"天"]})]})]}),e.jsxs(Ve,{children:[e.jsxs(pt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(gt,{className:"text-sm font-medium",children:"总花费"}),e.jsx(sy,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(yt,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:["¥",be.total_cost.toFixed(2)]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:be.cost_per_hour>0?`¥${be.cost_per_hour.toFixed(2)}/小时`:"暂无数据"})]})]}),e.jsxs(Ve,{children:[e.jsxs(pt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(gt,{className:"text-sm font-medium",children:"Token消耗"}),e.jsx(Zc,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(yt,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:[(be.total_tokens/1e3).toFixed(1),"K"]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:be.tokens_per_hour>0?`${(be.tokens_per_hour/1e3).toFixed(1)}K/小时`:"暂无数据"})]})]}),e.jsxs(Ve,{children:[e.jsxs(pt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(gt,{className:"text-sm font-medium",children:"平均响应"}),e.jsx(sn,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(yt,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:[be.avg_response_time.toFixed(2),"s"]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"API平均耗时"})]})]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 sm:grid-cols-3",children:[e.jsxs(Ve,{children:[e.jsxs(pt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(gt,{className:"text-sm font-medium",children:"在线时长"}),e.jsx(Jn,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsx(yt,{children:e.jsx("div",{className:"text-xl font-bold",children:pe(be.online_time)})})]}),e.jsxs(Ve,{children:[e.jsxs(pt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(gt,{className:"text-sm font-medium",children:"消息处理"}),e.jsx(Pn,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(yt,{children:[e.jsx("div",{className:"text-xl font-bold",children:be.total_messages.toLocaleString()}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["回复 ",be.total_replies.toLocaleString()," 条"]})]})]}),e.jsxs(Ve,{children:[e.jsxs(pt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(gt,{className:"text-sm font-medium",children:"成本效率"}),e.jsx(ay,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(yt,{children:[e.jsx("div",{className:"text-xl font-bold",children:be.total_messages>0?`¥${(be.total_cost/be.total_messages*100).toFixed(2)}`:"¥0.00"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"每100条消息"})]})]})]}),e.jsxs(Aa,{defaultValue:"trends",className:"space-y-4",children:[e.jsxs(ja,{className:"grid w-full grid-cols-2 sm:grid-cols-4",children:[e.jsx(st,{value:"trends",children:"趋势"}),e.jsx(st,{value:"models",children:"模型"}),e.jsx(st,{value:"activity",children:"活动"}),e.jsx(st,{value:"daily",children:"日统计"})]}),e.jsxs(_t,{value:"trends",className:"space-y-4",children:[e.jsxs(Ve,{children:[e.jsxs(pt,{children:[e.jsx(gt,{children:"请求趋势"}),e.jsxs(Kt,{children:["最近",f,"小时的请求量变化"]})]}),e.jsx(yt,{children:e.jsx(Xn,{config:q,className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:e.jsxs(Ab,{data:se,children:[e.jsx(Rc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Lc,{dataKey:"timestamp",tickFormatter:H=>je(H),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(Wi,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{content:e.jsx(Kn,{labelFormatter:H=>je(H)})}),e.jsx(Mb,{type:"monotone",dataKey:"requests",stroke:"var(--color-requests)",strokeWidth:2})]})})})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[e.jsxs(Ve,{children:[e.jsxs(pt,{children:[e.jsx(gt,{children:"花费趋势"}),e.jsx(Kt,{children:"API调用成本变化"})]}),e.jsx(yt,{children:e.jsx(Xn,{config:q,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:e.jsxs(vu,{data:se,children:[e.jsx(Rc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Lc,{dataKey:"timestamp",tickFormatter:H=>je(H),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(Wi,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{content:e.jsx(Kn,{labelFormatter:H=>je(H)})}),e.jsx(Uc,{dataKey:"cost",fill:"var(--color-cost)"})]})})})]}),e.jsxs(Ve,{children:[e.jsxs(pt,{children:[e.jsx(gt,{children:"Token消耗"}),e.jsx(Kt,{children:"Token使用量变化"})]}),e.jsx(yt,{children:e.jsx(Xn,{config:q,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:e.jsxs(vu,{data:se,children:[e.jsx(Rc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Lc,{dataKey:"timestamp",tickFormatter:H=>je(H),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(Wi,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{content:e.jsx(Kn,{labelFormatter:H=>je(H)})}),e.jsx(Uc,{dataKey:"tokens",fill:"var(--color-tokens)"})]})})})]})]})]}),e.jsx(_t,{value:"models",className:"space-y-4",children:e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[e.jsxs(Ve,{children:[e.jsxs(pt,{children:[e.jsx(gt,{children:"模型请求分布"}),e.jsxs(Kt,{children:["各模型使用占比 (共 ",O.length," 个模型)"]})]}),e.jsx(yt,{children:e.jsx(Xn,{config:Object.fromEntries(O.map((H,ie)=>[H.model_name,{label:H.model_name,color:_e[ie]}])),className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:e.jsxs(Db,{children:[e.jsx(tr,{content:e.jsx(Kn,{})}),e.jsx(Ob,{data:y,cx:"50%",cy:"50%",labelLine:!1,label:({name:H,percent:ie})=>ie&&ie<.05?"":`${H} ${ie?(ie*100).toFixed(0):0}%`,outerRadius:100,dataKey:"value",children:y.map((H,ie)=>e.jsx(Rb,{fill:H.fill},`cell-${ie}`))})]})})})]}),e.jsxs(Ve,{children:[e.jsxs(pt,{children:[e.jsx(gt,{children:"模型详细统计"}),e.jsx(Kt,{children:"请求数、花费和性能"})]}),e.jsx(yt,{children:e.jsx(Ie,{className:"h-[300px] sm:h-[400px]",children:e.jsx("div",{className:"space-y-3",children:O.map((H,ie)=>e.jsxs("div",{className:"p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("h4",{className:"font-semibold text-sm truncate flex-1 min-w-0",children:H.model_name}),e.jsx("div",{className:"w-3 h-3 rounded-full ml-2 flex-shrink-0",style:{backgroundColor:`hsl(var(--chart-${ie%5+1}))`}})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"请求数:"}),e.jsx("span",{className:"ml-1 font-medium",children:H.request_count.toLocaleString()})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"花费:"}),e.jsxs("span",{className:"ml-1 font-medium",children:["¥",H.total_cost.toFixed(2)]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),e.jsxs("span",{className:"ml-1 font-medium",children:[(H.total_tokens/1e3).toFixed(1),"K"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"平均耗时:"}),e.jsxs("span",{className:"ml-1 font-medium",children:[H.avg_response_time.toFixed(2),"s"]})]})]})]},ie))})})})]})]})}),e.jsx(_t,{value:"activity",children:e.jsxs(Ve,{children:[e.jsxs(pt,{children:[e.jsx(gt,{children:"最近活动"}),e.jsx(Kt,{children:"最新的API调用记录"})]}),e.jsx(yt,{children:e.jsx(Ie,{className:"h-[400px] sm:h-[500px]",children:e.jsx("div",{className:"space-y-2",children:ye.map((H,ie)=>e.jsxs("div",{className:"p-3 sm:p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-2 mb-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-sm truncate",children:H.model}),e.jsx("div",{className:"text-xs text-muted-foreground",children:H.request_type})]}),e.jsx("div",{className:"text-xs text-muted-foreground flex-shrink-0",children:je(H.timestamp)})]}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-2 text-xs",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),e.jsx("span",{className:"ml-1",children:H.tokens})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"花费:"}),e.jsxs("span",{className:"ml-1",children:["¥",H.cost.toFixed(4)]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"耗时:"}),e.jsxs("span",{className:"ml-1",children:[H.time_cost.toFixed(2),"s"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"状态:"}),e.jsx("span",{className:`ml-1 ${H.status==="success"?"text-green-600":"text-red-600"}`,children:H.status})]})]})]},ie))})})})]})}),e.jsx(_t,{value:"daily",children:e.jsxs(Ve,{children:[e.jsxs(pt,{children:[e.jsx(gt,{children:"每日统计"}),e.jsx(Kt,{children:"最近7天的数据汇总"})]}),e.jsx(yt,{children:e.jsx(Xn,{config:{requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"}},className:"h-[400px] sm:h-[500px] w-full aspect-auto",children:e.jsxs(vu,{data:he,children:[e.jsx(Rc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Lc,{dataKey:"timestamp",tickFormatter:H=>{const ie=new Date(H);return`${ie.getMonth()+1}/${ie.getDate()}`},stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(Wi,{yAxisId:"left",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(Wi,{yAxisId:"right",orientation:"right",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{content:e.jsx(Kn,{labelFormatter:H=>new Date(H).toLocaleDateString("zh-CN")})}),e.jsx(bN,{content:e.jsx(hg,{})}),e.jsx(Uc,{yAxisId:"left",dataKey:"requests",fill:"var(--color-requests)"}),e.jsx(Uc,{yAxisId:"right",dataKey:"cost",fill:"var(--color-cost)"})]})})})]})})]})]})})}const EN={theme:"system",setTheme:()=>null},xg=u.createContext(EN),Hu=()=>{const n=u.useContext(xg);if(n===void 0)throw new Error("useTheme must be used within a ThemeProvider");return n},zN=(n,r,c)=>{const d=document.documentElement.classList.contains("no-animations");if(!document.startViewTransition||d){r(n);return}const h=c.clientX,x=c.clientY,f=Math.hypot(Math.max(h,innerWidth-h),Math.max(x,innerHeight-x));document.startViewTransition(()=>{r(n)}).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${h}px ${x}px)`,`circle(${f}px at ${h}px ${x}px)`]},{duration:500,easing:"ease-in-out",pseudoElement:"::view-transition-new(root)"})})},fg=u.createContext(void 0),pg=()=>{const n=u.useContext(fg);if(n===void 0)throw new Error("useAnimation must be used within an AnimationProvider");return n},Ge=u.forwardRef(({className:n,...r},c)=>e.jsx(bp,{className:K("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",n),...r,ref:c,children:e.jsx(fb,{className:K("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));Ge.displayName=bp.displayName;const AN=ei("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),N=u.forwardRef(({className:n,...r},c)=>e.jsx(Dp,{ref:c,className:K(AN(),n),...r}));N.displayName=Dp.displayName;const ce=u.forwardRef(({className:n,type:r,...c},d)=>e.jsx("input",{type:r,className:K("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",n),ref:d,...c}));ce.displayName="Input";const MN=[{id:"minLength",label:"长度至少 10 位",description:"Token 长度必须大于等于 10 个字符",validate:n=>n.length>=10},{id:"hasUppercase",label:"包含大写字母",description:"至少包含一个大写字母 (A-Z)",validate:n=>/[A-Z]/.test(n)},{id:"hasLowercase",label:"包含小写字母",description:"至少包含一个小写字母 (a-z)",validate:n=>/[a-z]/.test(n)},{id:"hasSpecialChar",label:"包含特殊符号",description:"至少包含一个特殊符号 (!@#$%^&*()_+-=[]{}|;:,.<>?/)",validate:n=>/[!@#$%^&*()_+\-=[\]{}|;:,.<>?/]/.test(n)}];function DN(n){const r=MN.map(d=>({id:d.id,label:d.label,description:d.description,passed:d.validate(n)}));return{isValid:r.every(d=>d.passed),rules:r}}const qu="0.11.6 Beta",Gu="MaiBot Dashboard",ON=`${Gu} v${qu}`,RN=(n="v")=>`${n}${qu}`,Ds={THEME:"maibot-ui-theme",ACCENT_COLOR:"accent-color",ENABLE_ANIMATIONS:"maibot-animations",ENABLE_WAVES_BACKGROUND:"maibot-waves-background",LOG_CACHE_SIZE:"maibot-log-cache-size",LOG_AUTO_SCROLL:"maibot-log-auto-scroll",LOG_FONT_SIZE:"maibot-log-font-size",LOG_LINE_SPACING:"maibot-log-line-spacing",DATA_SYNC_INTERVAL:"maibot-data-sync-interval",WS_RECONNECT_INTERVAL:"maibot-ws-reconnect-interval",WS_MAX_RECONNECT_ATTEMPTS:"maibot-ws-max-reconnect-attempts",COMPLETED_TOURS:"maibot-completed-tours"},Ca={theme:"system",accentColor:"blue",enableAnimations:!0,enableWavesBackground:!0,logCacheSize:1e3,logAutoScroll:!0,logFontSize:"xs",logLineSpacing:4,dataSyncInterval:30,wsReconnectInterval:3e3,wsMaxReconnectAttempts:10};function Ft(n){const r=gg(n),c=localStorage.getItem(r);if(c===null)return Ca[n];const d=Ca[n];if(typeof d=="boolean")return c==="true";if(typeof d=="number"){const h=parseFloat(c);return isNaN(h)?d:h}return c}function Zn(n,r){const c=gg(n);localStorage.setItem(c,String(r)),window.dispatchEvent(new CustomEvent("maibot-settings-change",{detail:{key:n,value:r}}))}function LN(){return{theme:Ft("theme"),accentColor:Ft("accentColor"),enableAnimations:Ft("enableAnimations"),enableWavesBackground:Ft("enableWavesBackground"),logCacheSize:Ft("logCacheSize"),logAutoScroll:Ft("logAutoScroll"),logFontSize:Ft("logFontSize"),logLineSpacing:Ft("logLineSpacing"),dataSyncInterval:Ft("dataSyncInterval"),wsReconnectInterval:Ft("wsReconnectInterval"),wsMaxReconnectAttempts:Ft("wsMaxReconnectAttempts")}}function UN(){const n=LN(),r=localStorage.getItem(Ds.COMPLETED_TOURS),c=r?JSON.parse(r):[];return{...n,completedTours:c}}function BN(n){const r=[],c=[];for(const[d,h]of Object.entries(n)){if(d==="completedTours"){Array.isArray(h)?(localStorage.setItem(Ds.COMPLETED_TOURS,JSON.stringify(h)),r.push("completedTours")):c.push("completedTours");continue}if(d in Ca){const x=d,f=Ca[x];if(typeof h==typeof f){if(x==="theme"&&!["light","dark","system"].includes(h)){c.push(d);continue}if(x==="logFontSize"&&!["xs","sm","base"].includes(h)){c.push(d);continue}Zn(x,h),r.push(d)}else c.push(d)}else c.push(d)}return{success:r.length>0,imported:r,skipped:c}}function HN(){for(const n of Object.keys(Ca))Zn(n,Ca[n]);localStorage.removeItem(Ds.COMPLETED_TOURS),window.dispatchEvent(new CustomEvent("maibot-settings-reset"))}function qN(){const n=[],r=[],c=[];for(let d=0;dd.size-c.size),{used:n,items:localStorage.length,details:r}}function GN(n){if(n===0)return"0 B";const r=1024,c=["B","KB","MB"],d=Math.floor(Math.log(n)/Math.log(r));return parseFloat((n/Math.pow(r,d)).toFixed(2))+" "+c[d]}function gg(n){return{theme:Ds.THEME,accentColor:Ds.ACCENT_COLOR,enableAnimations:Ds.ENABLE_ANIMATIONS,enableWavesBackground:Ds.ENABLE_WAVES_BACKGROUND,logCacheSize:Ds.LOG_CACHE_SIZE,logAutoScroll:Ds.LOG_AUTO_SCROLL,logFontSize:Ds.LOG_FONT_SIZE,logLineSpacing:Ds.LOG_LINE_SPACING,dataSyncInterval:Ds.DATA_SYNC_INTERVAL,wsReconnectInterval:Ds.WS_RECONNECT_INTERVAL,wsMaxReconnectAttempts:Ds.WS_MAX_RECONNECT_ATTEMPTS}[n]}const ka=u.forwardRef(({className:n,...r},c)=>e.jsxs(yp,{ref:c,className:K("relative flex w-full touch-none select-none items-center",n),...r,children:[e.jsx(pb,{className:"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20",children:e.jsx(gb,{className:"absolute h-full bg-primary"})}),e.jsx(jb,{className:"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"})]}));ka.displayName=yp.displayName;class VN{ws=null;reconnectTimeout=null;reconnectAttempts=0;heartbeatInterval=null;logCallbacks=new Set;connectionCallbacks=new Set;isConnected=!1;logCache=[];getMaxCacheSize(){return Ft("logCacheSize")}getMaxReconnectAttempts(){return Ft("wsMaxReconnectAttempts")}getReconnectInterval(){return Ft("wsReconnectInterval")}getWebSocketUrl(){{const r=window.location.protocol==="https:"?"wss:":"ws:",c=window.location.host;return`${r}//${c}/ws/logs`}}connect(){if(this.ws?.readyState===WebSocket.OPEN||this.ws?.readyState===WebSocket.CONNECTING)return;const r=this.getWebSocketUrl();try{this.ws=new WebSocket(r),this.ws.onopen=()=>{this.isConnected=!0,this.reconnectAttempts=0,this.notifyConnection(!0),this.startHeartbeat()},this.ws.onmessage=c=>{try{if(c.data==="pong")return;const d=JSON.parse(c.data);this.notifyLog(d)}catch(d){console.error("解析日志消息失败:",d)}},this.ws.onerror=c=>{console.error("❌ WebSocket 错误:",c),this.isConnected=!1,this.notifyConnection(!1)},this.ws.onclose=()=>{this.isConnected=!1,this.notifyConnection(!1),this.stopHeartbeat(),this.attemptReconnect()}}catch(c){console.error("创建 WebSocket 连接失败:",c),this.attemptReconnect()}}attemptReconnect(){const r=this.getMaxReconnectAttempts();if(this.reconnectAttempts>=r)return;this.reconnectAttempts+=1;const c=this.getReconnectInterval(),d=Math.min(c*this.reconnectAttempts,3e4);this.reconnectTimeout=window.setTimeout(()=>{this.connect()},d)}startHeartbeat(){this.heartbeatInterval=window.setInterval(()=>{this.ws?.readyState===WebSocket.OPEN&&this.ws.send("ping")},3e4)}stopHeartbeat(){this.heartbeatInterval!==null&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}disconnect(){this.reconnectTimeout!==null&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.stopHeartbeat(),this.ws&&(this.ws.close(),this.ws=null),this.isConnected=!1,this.reconnectAttempts=0}onLog(r){return this.logCallbacks.add(r),()=>this.logCallbacks.delete(r)}onConnectionChange(r){return this.connectionCallbacks.add(r),r(this.isConnected),()=>this.connectionCallbacks.delete(r)}notifyLog(r){if(!this.logCache.some(d=>d.id===r.id)){this.logCache.push(r);const d=this.getMaxCacheSize();this.logCache.length>d&&(this.logCache=this.logCache.slice(-d)),this.logCallbacks.forEach(h=>{try{h(r)}catch(x){console.error("日志回调执行失败:",x)}})}}notifyConnection(r){this.connectionCallbacks.forEach(c=>{try{c(r)}catch(d){console.error("连接状态回调执行失败:",d)}})}getAllLogs(){return[...this.logCache]}clearLogs(){this.logCache=[]}getConnectionStatus(){return this.isConnected}}const tn=new VN;typeof window<"u"&&tn.connect();const Qt=Hb,Vu=qb,FN=Ub,jg=u.forwardRef(({className:n,...r},c)=>e.jsx(Op,{ref:c,className:K("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...r}));jg.displayName=Op.displayName;const Ut=u.forwardRef(({className:n,children:r,preventOutsideClose:c=!1,...d},h)=>e.jsxs(FN,{children:[e.jsx(jg,{}),e.jsxs(Rp,{ref:h,className:K("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",n),onPointerDownOutside:c?x=>x.preventDefault():void 0,onInteractOutside:c?x=>x.preventDefault():void 0,...d,children:[r,e.jsxs(Bb,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[e.jsx(si,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Ut.displayName=Rp.displayName;const Bt=({className:n,...r})=>e.jsx("div",{className:K("flex flex-col space-y-1.5 text-center sm:text-left",n),...r});Bt.displayName="DialogHeader";const os=({className:n,...r})=>e.jsx("div",{className:K("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",n),...r});os.displayName="DialogFooter";const Ht=u.forwardRef(({className:n,...r},c)=>e.jsx(Lp,{ref:c,className:K("text-lg font-semibold leading-none tracking-tight",n),...r}));Ht.displayName=Lp.displayName;const ss=u.forwardRef(({className:n,...r},c)=>e.jsx(Up,{ref:c,className:K("text-sm text-muted-foreground",n),...r}));ss.displayName=Up.displayName;const ft=bb,$t=yb,$N=vb,vg=u.forwardRef(({className:n,...r},c)=>e.jsx(Np,{className:K("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...r,ref:c}));vg.displayName=Np.displayName;const it=u.forwardRef(({className:n,...r},c)=>e.jsxs($N,{children:[e.jsx(vg,{}),e.jsx(wp,{ref:c,className:K("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",n),...r})]}));it.displayName=wp.displayName;const rt=({className:n,...r})=>e.jsx("div",{className:K("flex flex-col space-y-2 text-center sm:text-left",n),...r});rt.displayName="AlertDialogHeader";const ct=({className:n,...r})=>e.jsx("div",{className:K("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",n),...r});ct.displayName="AlertDialogFooter";const ot=u.forwardRef(({className:n,...r},c)=>e.jsx(_p,{ref:c,className:K("text-lg font-semibold",n),...r}));ot.displayName=_p.displayName;const dt=u.forwardRef(({className:n,...r},c)=>e.jsx(Sp,{ref:c,className:K("text-sm text-muted-foreground",n),...r}));dt.displayName=Sp.displayName;const ut=u.forwardRef(({className:n,...r},c)=>e.jsx(Cp,{ref:c,className:K(ur(),n),...r}));ut.displayName=Cp.displayName;const mt=u.forwardRef(({className:n,...r},c)=>e.jsx(kp,{ref:c,className:K(ur({variant:"outline"}),"mt-2 sm:mt-0",n),...r}));mt.displayName=kp.displayName;function QN(){return e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"系统设置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理您的应用偏好设置"})]})}),e.jsxs(Aa,{defaultValue:"appearance",className:"w-full",children:[e.jsxs(ja,{className:"grid w-full grid-cols-2 sm:grid-cols-4 gap-0.5 sm:gap-1 h-auto p-1",children:[e.jsxs(st,{value:"appearance",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(ly,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"外观"})]}),e.jsxs(st,{value:"security",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(ny,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"安全"})]}),e.jsxs(st,{value:"other",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(ti,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"其他"})]}),e.jsxs(st,{value:"about",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(za,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"关于"})]})]}),e.jsxs(Ie,{className:"h-[calc(100vh-240px)] sm:h-[calc(100vh-280px)] mt-4 sm:mt-6",children:[e.jsx(_t,{value:"appearance",className:"mt-0",children:e.jsx(YN,{})}),e.jsx(_t,{value:"security",className:"mt-0",children:e.jsx(XN,{})}),e.jsx(_t,{value:"other",className:"mt-0",children:e.jsx(KN,{})}),e.jsx(_t,{value:"about",className:"mt-0",children:e.jsx(ZN,{})})]})]})]})}function If(n){const r=document.documentElement,d={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[n];if(d)r.style.setProperty("--primary",d.hsl),d.gradient?(r.style.setProperty("--primary-gradient",d.gradient),r.classList.add("has-gradient")):(r.style.removeProperty("--primary-gradient"),r.classList.remove("has-gradient"));else if(n.startsWith("#")){const h=x=>{x=x.replace("#","");const f=parseInt(x.substring(0,2),16)/255,j=parseInt(x.substring(2,4),16)/255,p=parseInt(x.substring(4,6),16)/255,w=Math.max(f,j,p),v=Math.min(f,j,p);let k=0,T=0;const E=(w+v)/2;if(w!==v){const R=w-v;switch(T=E>.5?R/(2-w-v):R/(w+v),w){case f:k=((j-p)/R+(jlocalStorage.getItem("accent-color")||"blue");u.useEffect(()=>{const w=localStorage.getItem("accent-color")||"blue";If(w)},[]);const p=w=>{j(w),localStorage.setItem("accent-color",w),If(w)};return e.jsxs("div",{className:"space-y-6 sm:space-y-8",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题模式"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 sm:gap-4",children:[e.jsx(Cu,{value:"light",current:n,onChange:r,label:"浅色",description:"始终使用浅色主题"}),e.jsx(Cu,{value:"dark",current:n,onChange:r,label:"深色",description:"始终使用深色主题"}),e.jsx(Cu,{value:"system",current:n,onChange:r,label:"跟随系统",description:"根据系统设置自动切换"})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题色"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"单色"}),e.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[e.jsx(ca,{value:"blue",current:f,onChange:p,label:"蓝色",colorClass:"bg-blue-500"}),e.jsx(ca,{value:"purple",current:f,onChange:p,label:"紫色",colorClass:"bg-purple-500"}),e.jsx(ca,{value:"green",current:f,onChange:p,label:"绿色",colorClass:"bg-green-500"}),e.jsx(ca,{value:"orange",current:f,onChange:p,label:"橙色",colorClass:"bg-orange-500"}),e.jsx(ca,{value:"pink",current:f,onChange:p,label:"粉色",colorClass:"bg-pink-500"}),e.jsx(ca,{value:"red",current:f,onChange:p,label:"红色",colorClass:"bg-red-500"})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"渐变色"}),e.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[e.jsx(ca,{value:"gradient-sunset",current:f,onChange:p,label:"日落",colorClass:"bg-gradient-to-r from-orange-500 to-pink-500"}),e.jsx(ca,{value:"gradient-ocean",current:f,onChange:p,label:"海洋",colorClass:"bg-gradient-to-r from-blue-500 to-cyan-500"}),e.jsx(ca,{value:"gradient-forest",current:f,onChange:p,label:"森林",colorClass:"bg-gradient-to-r from-green-500 to-emerald-500"}),e.jsx(ca,{value:"gradient-aurora",current:f,onChange:p,label:"极光",colorClass:"bg-gradient-to-r from-purple-500 to-pink-500"}),e.jsx(ca,{value:"gradient-fire",current:f,onChange:p,label:"烈焰",colorClass:"bg-gradient-to-r from-red-500 to-orange-500"}),e.jsx(ca,{value:"gradient-twilight",current:f,onChange:p,label:"暮光",colorClass:"bg-gradient-to-r from-indigo-500 to-purple-500"})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"自定义颜色"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 sm:gap-4",children:[e.jsx("div",{className:"flex-1",children:e.jsx("input",{type:"color",value:f.startsWith("#")?f:"#3b82f6",onChange:w=>p(w.target.value),className:"h-10 sm:h-12 w-full rounded-lg border-2 border-border cursor-pointer",title:"选择自定义颜色"})}),e.jsx("div",{className:"flex-1",children:e.jsx(ce,{type:"text",value:f,onChange:w=>p(w.target.value),placeholder:"#3b82f6",className:"font-mono text-sm"})})]}),e.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground mt-2",children:"点击色块选择颜色,或手动输入 HEX 颜色代码"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"动画效果"}),e.jsxs("div",{className:"space-y-2 sm:space-y-3",children:[e.jsx("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5 flex-1",children:[e.jsx(N,{htmlFor:"animations",className:"text-base font-medium cursor-pointer",children:"启用动画效果"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后将禁用所有过渡动画和特效,提升性能"})]}),e.jsx(Ge,{id:"animations",checked:c,onCheckedChange:d})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5 flex-1",children:[e.jsx(N,{htmlFor:"waves-background",className:"text-base font-medium cursor-pointer",children:"登录页波浪背景"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后登录页将使用纯色背景,适合低性能设备"})]}),e.jsx(Ge,{id:"waves-background",checked:h,onCheckedChange:x})]})})]})]})]})}function XN(){const n=ua(),[r,c]=u.useState(""),[d,h]=u.useState(""),[x,f]=u.useState(!1),[j,p]=u.useState(!1),[w,v]=u.useState(!1),[k,T]=u.useState(!1),[E,R]=u.useState(!1),[F,U]=u.useState(!1),[M,Z]=u.useState(""),[G,z]=u.useState(!1),{toast:B}=Rt(),X=u.useMemo(()=>DN(d),[d]),S=async pe=>{if(!r){B({title:"无法复制",description:"Token 存储在安全 Cookie 中,请重新生成以获取新 Token",variant:"destructive"});return}try{await navigator.clipboard.writeText(pe),R(!0),B({title:"复制成功",description:"Token 已复制到剪贴板"}),setTimeout(()=>R(!1),2e3)}catch{B({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},O=async()=>{if(!d.trim()){B({title:"输入错误",description:"请输入新的 Token",variant:"destructive"});return}if(!X.isValid){const pe=X.rules.filter(je=>!je.passed).map(je=>je.label).join(", ");B({title:"格式错误",description:`Token 不符合要求: ${pe}`,variant:"destructive"});return}v(!0);try{const pe=await fetch("/api/webui/auth/update",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({new_token:d.trim()})}),je=await pe.json();pe.ok&&je.success?(h(""),c(d.trim()),B({title:"更新成功",description:"Access Token 已更新,即将跳转到登录页"}),setTimeout(()=>{n({to:"/auth"})},1500)):B({title:"更新失败",description:je.message||"无法更新 Token",variant:"destructive"})}catch(pe){console.error("更新 Token 错误:",pe),B({title:"更新失败",description:"连接服务器失败",variant:"destructive"})}finally{v(!1)}},se=async()=>{T(!0);try{const pe=await fetch("/api/webui/auth/regenerate",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include"}),je=await pe.json();pe.ok&&je.success?(c(je.token),Z(je.token),U(!0),z(!1),B({title:"生成成功",description:"新的 Access Token 已生成,请及时保存"})):B({title:"生成失败",description:je.message||"无法生成新 Token",variant:"destructive"})}catch(pe){console.error("生成 Token 错误:",pe),B({title:"生成失败",description:"连接服务器失败",variant:"destructive"})}finally{T(!1)}},he=async()=>{try{await navigator.clipboard.writeText(M),z(!0),B({title:"复制成功",description:"Token 已复制到剪贴板"})}catch{B({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},ye=()=>{U(!1),setTimeout(()=>{Z(""),z(!1)},300),setTimeout(()=>{n({to:"/auth"})},500)},be=pe=>{pe||ye()};return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsx(Qt,{open:F,onOpenChange:be,children:e.jsxs(Ut,{className:"sm:max-w-md",children:[e.jsxs(Bt,{children:[e.jsxs(Ht,{className:"flex items-center gap-2",children:[e.jsx(pa,{className:"h-5 w-5 text-yellow-500"}),"新的 Access Token"]}),e.jsx(ss,{children:"这是您的新 Token,请立即保存。关闭此窗口后将跳转到登录页面。"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"rounded-lg border-2 border-primary/20 bg-primary/5 p-4",children:[e.jsx(N,{className:"text-xs text-muted-foreground mb-2 block",children:"您的新 Token (64位安全令牌)"}),e.jsx("div",{className:"font-mono text-sm break-all select-all bg-background p-3 rounded border",children:M})]}),e.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(pa,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5"}),e.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[e.jsx("p",{className:"font-semibold",children:"重要提示"}),e.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[e.jsx("li",{children:"此 Token 仅显示一次,关闭后无法再查看"}),e.jsx("li",{children:"请立即复制并保存到安全的位置"}),e.jsx("li",{children:"关闭窗口后将自动跳转到登录页面"}),e.jsx("li",{children:"请使用新 Token 重新登录系统"})]})]})]})})]}),e.jsxs(os,{className:"gap-2 sm:gap-0",children:[e.jsx(b,{variant:"outline",onClick:he,className:"gap-2",children:G?e.jsxs(e.Fragment,{children:[e.jsx(ga,{className:"h-4 w-4 text-green-500"}),"已复制"]}):e.jsxs(e.Fragment,{children:[e.jsx(Jc,{className:"h-4 w-4"}),"复制 Token"]})}),e.jsx(b,{onClick:ye,children:"我已保存,关闭"})]})]})}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"当前 Access Token"}),e.jsx("div",{className:"space-y-3 sm:space-y-4",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"current-token",className:"text-sm",children:"您的访问令牌"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(ce,{id:"current-token",type:x?"text":"password",value:r||"••••••••••••••••••••••••••••••••",readOnly:!0,className:"pr-10 font-mono text-sm",placeholder:"Token 存储在安全 Cookie 中"}),e.jsx("button",{onClick:()=>{r?f(!x):B({title:"无法查看",description:'Token 存储在安全 Cookie 中,如需新 Token 请点击"重新生成"'})},className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:x?"隐藏":"显示",children:x?e.jsx(rr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Ys,{className:"h-4 w-4 text-muted-foreground"})})]}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[e.jsx(b,{variant:"outline",size:"icon",onClick:()=>S(r),title:"复制到剪贴板",className:"flex-shrink-0",disabled:!r,children:E?e.jsx(ga,{className:"h-4 w-4 text-green-500"}):e.jsx(Jc,{className:"h-4 w-4"})}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsxs(b,{variant:"outline",disabled:k,className:"gap-2 flex-1 sm:flex-none",children:[e.jsx(ps,{className:K("h-4 w-4",k&&"animate-spin")}),e.jsx("span",{className:"hidden sm:inline",children:"重新生成"}),e.jsx("span",{className:"sm:hidden",children:"生成"})]})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认重新生成 Token"}),e.jsx(dt,{children:"这将生成一个新的 64 位安全令牌,并使当前 Token 立即失效。 您需要使用新 Token 重新登录系统。此操作不可撤销,确定要继续吗?"})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:se,children:"确认生成"})]})]})]})]})]}),e.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground",children:"请妥善保管您的 Access Token,不要泄露给他人"})]})})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"自定义 Access Token"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"new-token",className:"text-sm",children:"新的访问令牌"}),e.jsxs("div",{className:"relative",children:[e.jsx(ce,{id:"new-token",type:j?"text":"password",value:d,onChange:pe=>h(pe.target.value),className:"pr-10 font-mono text-sm",placeholder:"输入自定义 Token"}),e.jsx("button",{onClick:()=>p(!j),className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:j?"隐藏":"显示",children:j?e.jsx(rr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Ys,{className:"h-4 w-4 text-muted-foreground"})})]}),d&&e.jsxs("div",{className:"mt-3 space-y-2 p-3 rounded-lg bg-muted/50",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"Token 安全要求:"}),e.jsx("div",{className:"space-y-1.5",children:X.rules.map(pe=>e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[pe.passed?e.jsx(oa,{className:"h-4 w-4 text-green-500 flex-shrink-0"}):e.jsx(Wp,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),e.jsx("span",{className:K(pe.passed?"text-green-600 dark:text-green-400":"text-muted-foreground"),children:pe.label})]},pe.id))}),X.isValid&&e.jsx("div",{className:"mt-2 pt-2 border-t border-border",children:e.jsxs("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[e.jsx(ga,{className:"h-4 w-4"}),e.jsx("span",{className:"font-medium",children:"Token 格式正确,可以使用"})]})})]})]}),e.jsx(b,{onClick:O,disabled:w||!X.isValid||!d,className:"w-full sm:w-auto",children:w?"更新中...":"更新自定义 Token"})]})]}),e.jsxs("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3 sm:p-4",children:[e.jsx("h4",{className:"text-sm sm:text-base font-semibold text-yellow-900 dark:text-yellow-200 mb-2",children:"安全提示"}),e.jsxs("ul",{className:"text-xs sm:text-sm text-yellow-800 dark:text-yellow-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"重新生成 Token 会创建系统随机生成的 64 位安全令牌"}),e.jsx("li",{children:"自定义 Token 必须满足所有安全要求才能使用"}),e.jsx("li",{children:"更新 Token 后,旧的 Token 将立即失效"}),e.jsx("li",{children:"请在安全的环境下查看和复制 Token"}),e.jsx("li",{children:"如果怀疑 Token 泄露,请立即重新生成或更新"}),e.jsx("li",{children:"建议使用系统生成的 Token 以获得最高安全性"})]})]})]})}function KN(){const n=ua(),{toast:r}=Rt(),[c,d]=u.useState(!1),[h,x]=u.useState(!1),[f,j]=u.useState(()=>Ft("logCacheSize")),[p,w]=u.useState(()=>Ft("wsReconnectInterval")),[v,k]=u.useState(()=>Ft("wsMaxReconnectAttempts")),[T,E]=u.useState(()=>Ft("dataSyncInterval")),[R,F]=u.useState(()=>Jf()),[U,M]=u.useState(!1),[Z,G]=u.useState(!1),z=u.useRef(null);if(h)throw new Error("这是一个手动触发的测试错误,用于验证错误边界组件是否正常工作。");const B=()=>{F(Jf())},X=y=>{const q=y[0];j(q),Zn("logCacheSize",q)},S=y=>{const q=y[0];w(q),Zn("wsReconnectInterval",q)},O=y=>{const q=y[0];k(q),Zn("wsMaxReconnectAttempts",q)},se=y=>{const q=y[0];E(q),Zn("dataSyncInterval",q)},he=()=>{tn.clearLogs(),r({title:"日志已清除",description:"日志缓存已清空"})},ye=()=>{const y=qN();B(),r({title:"缓存已清除",description:`已清除 ${y.clearedKeys.length} 项缓存数据`})},be=()=>{M(!0);try{const y=UN(),q=JSON.stringify(y,null,2),H=new Blob([q],{type:"application/json"}),ie=URL.createObjectURL(H),_=document.createElement("a");_.href=ie,_.download=`maibot-webui-settings-${new Date().toISOString().slice(0,10)}.json`,document.body.appendChild(_),_.click(),document.body.removeChild(_),URL.revokeObjectURL(ie),r({title:"导出成功",description:"设置已导出为 JSON 文件"})}catch(y){console.error("导出设置失败:",y),r({title:"导出失败",description:"无法导出设置",variant:"destructive"})}finally{M(!1)}},pe=y=>{const q=y.target.files?.[0];if(!q)return;G(!0);const H=new FileReader;H.onload=ie=>{try{const _=ie.target?.result,me=JSON.parse(_),xe=BN(me);xe.success?(j(Ft("logCacheSize")),w(Ft("wsReconnectInterval")),k(Ft("wsMaxReconnectAttempts")),E(Ft("dataSyncInterval")),B(),r({title:"导入成功",description:`成功导入 ${xe.imported.length} 项设置${xe.skipped.length>0?`,跳过 ${xe.skipped.length} 项`:""}`}),(xe.imported.includes("theme")||xe.imported.includes("accentColor"))&&r({title:"提示",description:"部分设置需要刷新页面才能完全生效"})):r({title:"导入失败",description:"没有有效的设置项可导入",variant:"destructive"})}catch(_){console.error("导入设置失败:",_),r({title:"导入失败",description:"文件格式无效",variant:"destructive"})}finally{G(!1),z.current&&(z.current.value="")}},H.readAsText(q)},je=()=>{HN(),j(Ca.logCacheSize),w(Ca.wsReconnectInterval),k(Ca.wsMaxReconnectAttempts),E(Ca.dataSyncInterval),B(),r({title:"已重置",description:"所有设置已恢复为默认值,刷新页面以应用更改"})},_e=async()=>{d(!0);try{const y=localStorage.getItem("access-token"),q=await fetch("/api/webui/setup/reset",{method:"POST",headers:{Authorization:`Bearer ${y}`}}),H=await q.json();q.ok&&H.success?(r({title:"重置成功",description:"即将进入初次配置向导"}),setTimeout(()=>{n({to:"/setup"})},1e3)):r({title:"重置失败",description:H.message||"无法重置配置状态",variant:"destructive"})}catch(y){console.error("重置配置状态错误:",y),r({title:"重置失败",description:"连接服务器失败",variant:"destructive"})}finally{d(!1)}};return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(Zc,{className:"h-5 w-5"}),"性能与存储"]}),e.jsxs("div",{className:"space-y-4 sm:space-y-5",children:[e.jsxs("div",{className:"rounded-lg bg-muted/50 p-3 sm:p-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("span",{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(iy,{className:"h-4 w-4"}),"本地存储使用"]}),e.jsx(b,{variant:"ghost",size:"sm",onClick:B,className:"h-7 px-2",children:e.jsx(ps,{className:"h-3 w-3"})})]}),e.jsx("div",{className:"text-2xl font-bold text-primary",children:GN(R.used)}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:[R.items," 个存储项"]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{className:"text-sm font-medium",children:"日志缓存大小"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[f," 条"]})]}),e.jsx(ka,{value:[f],onValueChange:X,min:100,max:5e3,step:100,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"控制日志查看器最多缓存的日志条数,较大的值会占用更多内存"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{className:"text-sm font-medium",children:"首页数据刷新间隔"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[T," 秒"]})]}),e.jsx(ka,{value:[T],onValueChange:se,min:10,max:120,step:5,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"控制首页统计数据的自动刷新间隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{className:"text-sm font-medium",children:"WebSocket 重连间隔"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[p/1e3," 秒"]})]}),e.jsx(ka,{value:[p],onValueChange:S,min:1e3,max:1e4,step:500,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"日志 WebSocket 连接断开后的重连基础间隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{className:"text-sm font-medium",children:"WebSocket 最大重连次数"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[v," 次"]})]}),e.jsx(ka,{value:[v],onValueChange:O,min:3,max:30,step:1,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"连接失败后的最大重连尝试次数"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2 pt-2",children:[e.jsxs(b,{variant:"outline",size:"sm",onClick:he,className:"gap-2",children:[e.jsx(Pe,{className:"h-4 w-4"}),"清除日志缓存"]}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",className:"gap-2",children:[e.jsx(Pe,{className:"h-4 w-4"}),"清除本地缓存"]})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认清除本地缓存"}),e.jsx(dt,{children:"这将清除所有本地缓存的设置和数据(不包括登录凭证)。 您可能需要重新配置部分偏好设置。确定要继续吗?"})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:ye,children:"确认清除"})]})]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(sl,{className:"h-5 w-5"}),"导入/导出设置"]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"导出当前的界面设置以便备份,或从之前导出的文件中恢复设置。"}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(b,{variant:"outline",onClick:be,disabled:U,className:"gap-2",children:[e.jsx(sl,{className:"h-4 w-4"}),U?"导出中...":"导出设置"]}),e.jsx("input",{ref:z,type:"file",accept:".json",onChange:pe,className:"hidden"}),e.jsxs(b,{variant:"outline",onClick:()=>z.current?.click(),disabled:Z,className:"gap-2",children:[e.jsx(cr,{className:"h-4 w-4"}),Z?"导入中...":"导入设置"]})]}),e.jsx("div",{className:"pt-2 border-t",children:e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",className:"gap-2 text-destructive hover:text-destructive",children:[e.jsx(Kc,{className:"h-4 w-4"}),"重置所有设置为默认值"]})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认重置所有设置"}),e.jsx(dt,{children:"这将把所有界面设置恢复为默认值,包括主题、颜色、动画等偏好设置。 此操作不会影响您的登录状态。确定要继续吗?"})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:je,children:"确认重置"})]})]})]})})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"配置向导"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsx("div",{className:"space-y-2",children:e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"重新进行初次配置向导,可以帮助您重新设置系统的基础配置。"})}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsxs(b,{variant:"outline",disabled:c,className:"gap-2",children:[e.jsx(Kc,{className:K("h-4 w-4",c&&"animate-spin")}),"重新进行初次配置"]})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认重新配置"}),e.jsx(dt,{children:"这将带您重新进入初次配置向导。您可以重新设置系统的基础配置项。确定要继续吗?"})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:_e,children:"确认重置"})]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border border-dashed border-yellow-500/50 bg-yellow-500/5 p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(pa,{className:"h-5 w-5 text-yellow-500"}),"开发者工具"]}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsx("div",{className:"space-y-2",children:e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"以下功能仅供开发调试使用,可能会导致页面崩溃或异常。"})}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsxs(b,{variant:"destructive",className:"gap-2",children:[e.jsx(pa,{className:"h-4 w-4"}),"触发测试错误"]})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认触发错误"}),e.jsx(dt,{children:"这将手动触发一个 React 错误,用于测试错误边界组件的显示效果。 页面将显示错误界面,您可以通过刷新页面或点击返回首页来恢复。"})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>x(!0),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认触发"})]})]})]})]})]})]})}function ZN(){return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsx("div",{className:"rounded-lg border-2 border-primary/30 bg-gradient-to-r from-primary/5 to-primary/10 p-4 sm:p-6",children:e.jsxs("div",{className:"flex items-start gap-3 sm:gap-4",children:[e.jsx("div",{className:"flex-shrink-0 rounded-lg bg-primary/10 p-2 sm:p-3",children:e.jsx("svg",{className:"h-6 w-6 sm:h-8 sm:w-8 text-primary",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:"text-lg sm:text-xl font-bold text-foreground mb-2",children:"开源项目"}),e.jsx("p",{className:"text-sm sm:text-base text-muted-foreground mb-3",children:"本项目在 GitHub 开源,欢迎 Star ⭐ 支持!"}),e.jsxs("a",{href:"https://github.com/Mai-with-u/MaiBot-Dashboard",target:"_blank",rel:"noopener noreferrer",className:K("inline-flex items-center gap-2 px-4 py-2 rounded-lg","bg-primary text-primary-foreground font-medium text-sm","hover:bg-primary/90 transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"),children:[e.jsx("svg",{className:"h-4 w-4",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})}),"前往 GitHub",e.jsx("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})})]})]})]})}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:["关于 ",Gu]}),e.jsxs("div",{className:"space-y-2 text-xs sm:text-sm text-muted-foreground",children:[e.jsxs("p",{children:["版本: ",qu]}),e.jsx("p",{children:"麦麦(MaiBot)的现代化 Web 管理界面"})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"作者"}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"MaiBot 核心"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"Mai-with-u"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"WebUI"}),e.jsxs("p",{className:"text-xs sm:text-sm text-muted-foreground",children:["Mai-with-u ",e.jsx("a",{href:"https://github.com/DrSmoothl",target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"@MotricSeven"})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"技术栈"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-xs sm:text-sm text-muted-foreground",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"前端框架"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"React 19.2.0"}),e.jsx("li",{children:"TypeScript 5.7.2"}),e.jsx("li",{children:"Vite 6.0.7"}),e.jsx("li",{children:"TanStack Router 1.94.2"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"UI 组件"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"shadcn/ui"}),e.jsx("li",{children:"Radix UI"}),e.jsx("li",{children:"Tailwind CSS 3.4.17"}),e.jsx("li",{children:"Lucide Icons"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"后端"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"Python 3.12+"}),e.jsx("li",{children:"FastAPI"}),e.jsx("li",{children:"Uvicorn"}),e.jsx("li",{children:"WebSocket"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"构建工具"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"Bun / npm"}),e.jsx("li",{children:"ESLint 9.17.0"}),e.jsx("li",{children:"PostCSS"})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源库感谢"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mb-3",children:"本项目使用了以下优秀的开源库,感谢他们的贡献:"}),e.jsx(Ie,{className:"h-[300px] sm:h-[400px]",children:e.jsxs("div",{className:"space-y-4 pr-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"UI 框架与组件"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Lt,{name:"React",description:"用户界面构建库",license:"MIT"}),e.jsx(Lt,{name:"shadcn/ui",description:"优雅的 React 组件库",license:"MIT"}),e.jsx(Lt,{name:"Radix UI",description:"无样式的可访问组件库",license:"MIT"}),e.jsx(Lt,{name:"Tailwind CSS",description:"实用优先的 CSS 框架",license:"MIT"}),e.jsx(Lt,{name:"Lucide React",description:"精美的图标库",license:"ISC"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"路由与状态管理"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Lt,{name:"TanStack Router",description:"类型安全的路由库",license:"MIT"}),e.jsx(Lt,{name:"Zustand",description:"轻量级状态管理",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"表单处理"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Lt,{name:"React Hook Form",description:"高性能表单库",license:"MIT"}),e.jsx(Lt,{name:"Zod",description:"TypeScript 优先的 schema 验证",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"工具库"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Lt,{name:"clsx",description:"条件 className 构建工具",license:"MIT"}),e.jsx(Lt,{name:"tailwind-merge",description:"Tailwind 类名合并工具",license:"MIT"}),e.jsx(Lt,{name:"class-variance-authority",description:"组件变体管理",license:"Apache-2.0"}),e.jsx(Lt,{name:"date-fns",description:"现代化日期处理库",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"动画效果"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Lt,{name:"Framer Motion",description:"React 动画库",license:"MIT"}),e.jsx(Lt,{name:"vaul",description:"抽屉组件动画",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"后端框架"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Lt,{name:"FastAPI",description:"现代化 Python Web 框架",license:"MIT"}),e.jsx(Lt,{name:"Uvicorn",description:"ASGI 服务器",license:"BSD-3-Clause"}),e.jsx(Lt,{name:"Pydantic",description:"数据验证库",license:"MIT"}),e.jsx(Lt,{name:"python-multipart",description:"文件上传支持",license:"Apache-2.0"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"开发工具"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Lt,{name:"TypeScript",description:"JavaScript 的超集",license:"Apache-2.0"}),e.jsx(Lt,{name:"Vite",description:"下一代前端构建工具",license:"MIT"}),e.jsx(Lt,{name:"ESLint",description:"JavaScript 代码检查工具",license:"MIT"}),e.jsx(Lt,{name:"PostCSS",description:"CSS 转换工具",license:"MIT"})]})]})]})})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源许可"}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"rounded-lg bg-primary/5 border border-primary/20 p-3 sm:p-4",children:e.jsxs("div",{className:"flex items-start gap-2 sm:gap-3",children:[e.jsx("div",{className:"flex-shrink-0 mt-0.5",children:e.jsx("div",{className:"rounded-md bg-primary/10 px-2 py-1",children:e.jsx("span",{className:"text-xs sm:text-sm font-bold text-primary",children:"GPLv3"})})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm sm:text-base font-semibold text-foreground mb-1",children:"MaiBot WebUI"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目采用 GNU General Public License v3.0 开源许可证。 您可以自由地使用、修改和分发本软件,但必须保持相同的开源许可。"})]})]})}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目依赖的所有开源库均遵循各自的开源许可证(MIT、Apache-2.0、BSD 等)。 感谢所有开源贡献者的无私奉献。"})]})]})]})}function Lt({name:n,description:r,license:c}){return e.jsxs("div",{className:"flex items-start justify-between gap-2 rounded-lg border bg-muted/30 p-2.5 sm:p-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium text-foreground truncate",children:n}),e.jsx("p",{className:"text-muted-foreground text-xs mt-0.5",children:r})]}),e.jsx("span",{className:"inline-flex items-center rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-medium text-primary flex-shrink-0",children:c})]})}function Cu({value:n,current:r,onChange:c,label:d,description:h}){const x=r===n;return e.jsxs("button",{onClick:()=>c(n),className:K("relative rounded-lg border-2 p-3 sm:p-4 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",x?"border-primary bg-accent":"border-border"),children:[x&&e.jsx("div",{className:"absolute top-2 right-2 sm:top-3 sm:right-3 h-2 w-2 rounded-full bg-primary"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-sm sm:text-base font-medium",children:d}),e.jsx("div",{className:"text-[10px] sm:text-xs text-muted-foreground",children:h})]}),e.jsxs("div",{className:"mt-2 sm:mt-3 flex gap-1",children:[n==="light"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-200"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-300"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-400"})]}),n==="dark"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-700"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-800"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-900"})]}),n==="system"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-200 to-slate-700"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-300 to-slate-800"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-400 to-slate-900"})]})]})]})}function ca({value:n,current:r,onChange:c,label:d,colorClass:h}){const x=r===n;return e.jsxs("button",{onClick:()=>c(n),className:K("relative rounded-lg border-2 p-2 sm:p-3 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",x?"border-primary bg-accent":"border-border"),children:[x&&e.jsx("div",{className:"absolute top-1.5 right-1.5 sm:top-2 sm:right-2 h-1.5 w-1.5 sm:h-2 sm:w-2 rounded-full bg-primary"}),e.jsxs("div",{className:"flex flex-col items-center gap-1.5 sm:gap-2",children:[e.jsx("div",{className:K("h-8 w-8 sm:h-10 sm:w-10 rounded-full",h)}),e.jsx("div",{className:"text-[10px] sm:text-xs font-medium text-center",children:d})]})]})}class JN{grad3;p;perm;constructor(r=0){this.grad3=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],this.p=[];for(let c=0;c<256;c++)this.p[c]=Math.floor(Math.random()*256);this.perm=[];for(let c=0;c<512;c++)this.perm[c]=this.p[c&255]}dot(r,c,d){return r[0]*c+r[1]*d}mix(r,c,d){return(1-d)*r+d*c}fade(r){return r*r*r*(r*(r*6-15)+10)}perlin2(r,c){const d=Math.floor(r)&255,h=Math.floor(c)&255;r-=Math.floor(r),c-=Math.floor(c);const x=this.fade(r),f=this.fade(c),j=this.perm[d]+h,p=this.perm[j],w=this.perm[j+1],v=this.perm[d+1]+h,k=this.perm[v],T=this.perm[v+1];return this.mix(this.mix(this.dot(this.grad3[p%12],r,c),this.dot(this.grad3[k%12],r-1,c),x),this.mix(this.dot(this.grad3[w%12],r,c-1),this.dot(this.grad3[T%12],r-1,c-1),x),f)}}function Pf(){const n=u.useRef(null),r=u.useRef(null),c=u.useRef(void 0),d=u.useRef({mouse:{x:-10,y:0,lx:0,ly:0,sx:0,sy:0,v:0,vs:0,a:0,set:!1},lines:[],paths:[],noise:new JN(Math.random()),bounding:null});return u.useEffect(()=>{const h=r.current,x=n.current;if(!h||!x)return;const f=d.current,j=()=>{const F=h.getBoundingClientRect();f.bounding=F,x.style.width=`${F.width}px`,x.style.height=`${F.height}px`},p=()=>{if(!f.bounding)return;const{width:F,height:U}=f.bounding;f.lines=[],f.paths.forEach(se=>se.remove()),f.paths=[];const M=10,Z=32,G=F+200,z=U+30,B=Math.ceil(G/M),X=Math.ceil(z/Z),S=(F-M*B)/2,O=(U-Z*X)/2;for(let se=0;se<=B;se++){const he=[];for(let be=0;be<=X;be++){const pe={x:S+M*se,y:O+Z*be,wave:{x:0,y:0},cursor:{x:0,y:0,vx:0,vy:0}};he.push(pe)}const ye=document.createElementNS("http://www.w3.org/2000/svg","path");x.appendChild(ye),f.paths.push(ye),f.lines.push(he)}},w=F=>{const{lines:U,mouse:M,noise:Z}=f;U.forEach(G=>{G.forEach(z=>{const B=Z.perlin2((z.x+F*.0125)*.002,(z.y+F*.005)*.0015)*12;z.wave.x=Math.cos(B)*32,z.wave.y=Math.sin(B)*16;const X=z.x-M.sx,S=z.y-M.sy,O=Math.hypot(X,S),se=Math.max(175,M.vs);if(O{const M={x:F.x+F.wave.x+(U?F.cursor.x:0),y:F.y+F.wave.y+(U?F.cursor.y:0)};return M.x=Math.round(M.x*10)/10,M.y=Math.round(M.y*10)/10,M},k=()=>{const{lines:F,paths:U}=f;F.forEach((M,Z)=>{let G=v(M[0],!1),z=`M ${G.x} ${G.y}`;M.forEach((B,X)=>{const S=X===M.length-1;G=v(B,!S),z+=`L ${G.x} ${G.y}`}),U[Z].setAttribute("d",z)})},T=F=>{const{mouse:U}=f;U.sx+=(U.x-U.sx)*.1,U.sy+=(U.y-U.sy)*.1;const M=U.x-U.lx,Z=U.y-U.ly,G=Math.hypot(M,Z);U.v=G,U.vs+=(G-U.vs)*.1,U.vs=Math.min(100,U.vs),U.lx=U.x,U.ly=U.y,U.a=Math.atan2(Z,M),h&&(h.style.setProperty("--x",`${U.sx}px`),h.style.setProperty("--y",`${U.sy}px`)),w(F),k(),c.current=requestAnimationFrame(T)},E=F=>{if(!f.bounding)return;const{mouse:U}=f;U.x=F.pageX-f.bounding.left,U.y=F.pageY-f.bounding.top+window.scrollY,U.set||(U.sx=U.x,U.sy=U.y,U.lx=U.x,U.ly=U.y,U.set=!0)},R=()=>{j(),p()};return j(),p(),window.addEventListener("resize",R),window.addEventListener("mousemove",E),c.current=requestAnimationFrame(T),()=>{window.removeEventListener("resize",R),window.removeEventListener("mousemove",E),c.current&&cancelAnimationFrame(c.current)}},[]),e.jsxs("div",{ref:r,className:"waves-background",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflow:"hidden",pointerEvents:"none"},children:[e.jsx("div",{className:"waves-cursor",style:{position:"absolute",top:0,left:0,width:"0.5rem",height:"0.5rem",background:"hsl(var(--primary) / 0.3)",borderRadius:"50%",transform:"translate3d(calc(var(--x, -0.5rem) - 50%), calc(var(--y, 50%) - 50%), 0)",willChange:"transform",pointerEvents:"none"}}),e.jsx("svg",{ref:n,style:{display:"block",width:"100%",height:"100%"},children:e.jsx("style",{children:` + path { + fill: none; + stroke: hsl(var(--primary) / 0.20); + stroke-width: 1px; + } + `})})]})}async function ke(n,r){const c={...r,credentials:"include",headers:{"Content-Type":"application/json",...r?.headers}},d=await fetch(n,c);if(d.status===401)throw window.location.href="/auth",new Error("认证失败,请重新登录");return d}function Tt(){return{"Content-Type":"application/json"}}async function IN(){try{await fetch("/api/webui/auth/logout",{method:"POST",credentials:"include"})}catch(n){console.error("登出请求失败:",n)}window.location.href="/auth"}async function Fu(){try{return(await(await fetch("/api/webui/auth/check",{method:"GET",credentials:"include"})).json()).authenticated===!0}catch{return!1}}function PN(){const[n,r]=u.useState(""),[c,d]=u.useState(!1),[h,x]=u.useState(""),[f,j]=u.useState(!0),p=ua(),{enableWavesBackground:w,setEnableWavesBackground:v}=pg(),{theme:k,setTheme:T}=Hu();u.useEffect(()=>{(async()=>{try{await Fu()&&p({to:"/"})}catch{}finally{j(!1)}})()},[p]);const R=k==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":k,F=()=>{T(R==="dark"?"light":"dark")},U=async M=>{if(M.preventDefault(),x(""),!n.trim()){x("请输入 Access Token");return}d(!0);try{const Z=await fetch("/api/webui/auth/verify",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:n.trim()})}),G=await Z.json();Z.ok&&G.valid?G.is_first_setup?p({to:"/setup"}):p({to:"/"}):x(G.message||"Token 验证失败,请检查后重试")}catch(Z){console.error("Token 验证错误:",Z),x("连接服务器失败,请检查网络连接")}finally{d(!1)}};return f?e.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[w&&e.jsx(Pf,{}),e.jsx("div",{className:"text-muted-foreground",children:"正在检查登录状态..."})]}):e.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[w&&e.jsx(Pf,{}),e.jsxs(Ve,{className:"relative z-10 w-full max-w-md shadow-2xl backdrop-blur-xl bg-card/80 border-border/50",children:[e.jsx("button",{onClick:F,className:"absolute right-4 top-4 rounded-lg p-2 hover:bg-accent transition-colors z-10 text-foreground",title:R==="dark"?"切换到浅色模式":"切换到深色模式",children:R==="dark"?e.jsx(eg,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"}):e.jsx(tg,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"})}),e.jsxs(pt,{className:"space-y-4 text-center",children:[e.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-2xl bg-primary/10",children:e.jsx(Hf,{className:"h-8 w-8 text-primary",strokeWidth:2,fill:"none"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(gt,{className:"text-2xl font-bold",children:"欢迎使用 MaiBot"}),e.jsx(Kt,{className:"text-base",children:"请输入您的 Access Token 以继续访问系统"})]})]}),e.jsx(yt,{children:e.jsxs("form",{onSubmit:U,className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"token",className:"text-sm font-medium",children:"Access Token"}),e.jsxs("div",{className:"relative",children:[e.jsx(sg,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground",strokeWidth:2,fill:"none"}),e.jsx(ce,{id:"token",type:"password",placeholder:"请输入您的 Access Token",value:n,onChange:M=>r(M.target.value),className:K("pl-10",h&&"border-red-500 focus-visible:ring-red-500"),disabled:c,autoFocus:!0,autoComplete:"off"})]})]}),h&&e.jsxs("div",{className:"flex items-center gap-2 rounded-md bg-red-50 p-3 text-sm text-red-600 dark:bg-red-950/50 dark:text-red-400",children:[e.jsx(Ea,{className:"h-4 w-4 flex-shrink-0",strokeWidth:2,fill:"none"}),e.jsx("span",{children:h})]}),e.jsx(b,{type:"submit",className:"w-full",disabled:c,children:c?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent"}),"验证中..."]}):"验证并进入"}),e.jsxs(Qt,{children:[e.jsx(Vu,{asChild:!0,children:e.jsxs("button",{className:"w-full text-center text-sm text-primary hover:text-primary/80 transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[e.jsx(ry,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我没有 Token,我该去哪里获得 Token?"]})}),e.jsxs(Ut,{className:"sm:max-w-md",children:[e.jsxs(Bt,{children:[e.jsxs(Ht,{className:"flex items-center gap-2",children:[e.jsx(Hf,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"如何获取 Access Token"]}),e.jsx(ss,{children:"Access Token 是访问 MaiBot WebUI 的唯一凭证,请按以下方式获取"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(cy,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx("h4",{className:"font-semibold text-sm",children:"方式一:查看启动日志"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"在 MaiBot 启动时,控制台会显示 WebUI Access Token。"}),e.jsxs("div",{className:"rounded bg-background p-2 font-mono text-xs",children:[e.jsx("p",{className:"text-muted-foreground",children:"🔑 WebUI Access Token: abc123..."}),e.jsx("p",{className:"text-muted-foreground",children:"💡 请使用此 Token 登录 WebUI"})]})]})]})}),e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Ta,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx("h4",{className:"font-semibold text-sm",children:"方式二:查看配置文件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Token 保存在项目根目录的配置文件中:"}),e.jsx("div",{className:"rounded bg-background p-2 font-mono text-xs break-all",children:e.jsx("code",{className:"text-primary",children:"data/webui.json"})}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["打开此文件,复制 ",e.jsx("code",{className:"px-1 py-0.5 bg-background rounded",children:"access_token"})," 字段的值"]})]})]})}),e.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Ea,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[e.jsx("p",{className:"font-semibold",children:"安全提示"}),e.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[e.jsx("li",{children:"请妥善保管您的 Token,不要泄露给他人"}),e.jsx("li",{children:"如需重置 Token,请在登录后前往系统设置"})]})]})]})})]})]})]}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsxs("button",{className:"w-full text-center text-sm text-muted-foreground hover:text-foreground transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[e.jsx(sn,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我觉得这个界面很卡怎么办?"]})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsxs(ot,{className:"flex items-center gap-2",children:[e.jsx(sn,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"关闭背景动画"]}),e.jsx(dt,{children:"背景动画可能会在低性能设备上造成卡顿。关闭动画可以显著提升界面流畅度。"})]}),e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭动画后,背景将变为纯色,但不影响任何功能的使用。您可以随时在系统设置中重新开启动画。"})}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>v(!1),children:"关闭动画"})]})]})]})]})})]}),e.jsx("div",{className:"absolute bottom-4 left-0 right-0 text-center text-xs text-muted-foreground",children:e.jsx("p",{children:ON})})]})}const Ot=u.forwardRef(({className:n,...r},c)=>e.jsx("textarea",{className:K("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",n),ref:c,...r}));Ot.displayName="Textarea";const mr=u.forwardRef(({className:n,orientation:r="horizontal",decorative:c=!0,...d},h)=>e.jsx(Tp,{ref:h,decorative:c,orientation:r,className:K("shrink-0 bg-border",r==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",n),...d}));mr.displayName=Tp.displayName;function WN({config:n,onChange:r}){const c=h=>{h.trim()&&!n.alias_names.includes(h.trim())&&r({...n,alias_names:[...n.alias_names,h.trim()]})},d=h=>{r({...n,alias_names:n.alias_names.filter((x,f)=>f!==h)})};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"qq_account",children:"QQ账号 *"}),e.jsx(ce,{id:"qq_account",type:"number",placeholder:"请输入机器人的QQ账号",value:n.qq_account||"",onChange:h=>r({...n,qq_account:Number(h.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人登录使用的QQ账号"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"nickname",children:"昵称 *"}),e.jsx(ce,{id:"nickname",placeholder:"请输入机器人的昵称",value:n.nickname,onChange:h=>r({...n,nickname:h.target.value})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的主要称呼名称"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{children:"别名"}),e.jsx("div",{className:"flex flex-wrap gap-2 mb-2",children:n.alias_names.map((h,x)=>e.jsxs(Qe,{variant:"secondary",className:"gap-1",children:[h,e.jsx("button",{type:"button",onClick:()=>d(x),className:"ml-1 hover:text-destructive",children:e.jsx(si,{className:"h-3 w-3"})})]},x))}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{id:"alias_input",placeholder:"输入别名后按回车添加",onKeyPress:h=>{h.key==="Enter"&&(c(h.target.value),h.target.value="")}}),e.jsx(b,{type:"button",variant:"outline",onClick:()=>{const h=document.getElementById("alias_input");h&&(c(h.value),h.value="")},children:"添加"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的其他称呼,可以添加多个"})]})]})}function e0({config:n,onChange:r}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"personality",children:"人格特征 *"}),e.jsx(Ot,{id:"personality",placeholder:"描述机器人的人格特质和身份特征(建议120字以内)",value:n.personality,onChange:c=>r({...n,personality:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:是一个女大学生,现在在读大二,会刷贴吧"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"reply_style",children:"表达风格 *"}),e.jsx(Ot,{id:"reply_style",placeholder:"描述机器人说话的表达风格、表达习惯",value:n.reply_style,onChange:c=>r({...n,reply_style:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:回复平淡一些,简短一些,说中文,参考贴吧、知乎和微博的回复风格"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"interest",children:"兴趣 *"}),e.jsx(Ot,{id:"interest",placeholder:"描述机器人感兴趣的话题",value:n.interest,onChange:c=>r({...n,interest:c.target.value}),rows:2}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"会影响机器人对什么话题进行回复"})]}),e.jsx(mr,{}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"plan_style",children:"群聊说话规则 *"}),e.jsx(Ot,{id:"plan_style",placeholder:"机器人在群聊中的行为风格和规则",value:n.plan_style,onChange:c=>r({...n,plan_style:c.target.value}),rows:4}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在群聊中如何行动,例如回复频率、条件等"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"private_plan_style",children:"私聊说话规则 *"}),e.jsx(Ot,{id:"private_plan_style",placeholder:"机器人在私聊中的行为风格和规则",value:n.private_plan_style,onChange:c=>r({...n,private_plan_style:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在私聊中的行为方式"})]})]})}function t0({config:n,onChange:r}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{htmlFor:"emoji_chance",children:"表情包激活概率"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[(n.emoji_chance*100).toFixed(0),"%"]})]}),e.jsx(ce,{id:"emoji_chance",type:"range",min:"0",max:"1",step:"0.1",value:n.emoji_chance,onChange:c=>r({...n,emoji_chance:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人发送表情包的概率"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"max_reg_num",children:"最大表情包数量"}),e.jsx(ce,{id:"max_reg_num",type:"number",min:"1",max:"200",value:n.max_reg_num,onChange:c=>r({...n,max_reg_num:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人最多保存的表情包数量"})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(N,{htmlFor:"do_replace",children:"达到最大数量时替换"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"开启后会删除旧表情包,关闭则不再收集新表情包"})]}),e.jsx(Ge,{id:"do_replace",checked:n.do_replace,onCheckedChange:c=>r({...n,do_replace:c})})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),e.jsx(ce,{id:"check_interval",type:"number",min:"1",max:"120",value:n.check_interval,onChange:c=>r({...n,check_interval:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包注册、破损、删除的时间间隔"})]}),e.jsx(mr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(N,{htmlFor:"steal_emoji",children:"偷取表情包"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人将一些表情包据为己有"})]}),e.jsx(Ge,{id:"steal_emoji",checked:n.steal_emoji,onCheckedChange:c=>r({...n,steal_emoji:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(N,{htmlFor:"content_filtration",children:"启用表情包过滤"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"只保存符合要求的表情包"})]}),e.jsx(Ge,{id:"content_filtration",checked:n.content_filtration,onCheckedChange:c=>r({...n,content_filtration:c})})]}),n.content_filtration&&e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"filtration_prompt",children:"过滤要求"}),e.jsx(ce,{id:"filtration_prompt",placeholder:"例如:符合公序良俗",value:n.filtration_prompt,onChange:c=>r({...n,filtration_prompt:c.target.value})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"描述表情包应该符合的要求"})]})]})}function s0({config:n,onChange:r}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(N,{htmlFor:"enable_tool",children:"启用工具系统"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人使用各种工具增强功能"})]}),e.jsx(Ge,{id:"enable_tool",checked:n.enable_tool,onCheckedChange:c=>r({...n,enable_tool:c})})]}),e.jsx(mr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(N,{htmlFor:"enable_mood",children:"启用情绪系统"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"让机器人具有情绪变化能力"})]}),e.jsx(Ge,{id:"enable_mood",checked:n.enable_mood,onCheckedChange:c=>r({...n,enable_mood:c})})]}),n.enable_mood&&e.jsxs("div",{className:"ml-6 space-y-6 border-l-2 border-primary/20 pl-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"mood_update_threshold",children:"情绪更新阈值"}),e.jsx(ce,{id:"mood_update_threshold",type:"number",min:"0.1",max:"10",step:"0.1",value:n.mood_update_threshold||1,onChange:c=>r({...n,mood_update_threshold:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"值越高,情绪更新越慢"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"emotion_style",children:"情感特征"}),e.jsx(Ot,{id:"emotion_style",placeholder:"描述情绪的变化情况,例如:情绪较为稳定,但遭遇特定事件时起伏较大",value:n.emotion_style||"",onChange:c=>r({...n,emotion_style:c.target.value}),rows:2}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"影响机器人的情绪变化方式"})]})]}),e.jsx(mr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(N,{htmlFor:"all_global",children:"启用全局黑话模式"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人学习和使用群组黑话"})]}),e.jsx(Ge,{id:"all_global",checked:n.all_global,onCheckedChange:c=>r({...n,all_global:c})})]})]})}function a0({config:n,onChange:r}){const[c,d]=u.useState(!1);return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"mt-0.5",children:e.jsx("svg",{className:"h-5 w-5 text-blue-600 dark:text-blue-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),e.jsxs("div",{className:"flex-1 text-sm",children:[e.jsx("p",{className:"font-medium text-blue-900 dark:text-blue-100 mb-1",children:"关于硅基流动 (SiliconFlow)"}),e.jsx("p",{className:"text-blue-700 dark:text-blue-300 mb-2",children:"硅基流动提供了完整的模型覆盖,包括 DeepSeek V3、Qwen、视觉模型、语音识别和嵌入模型。 只需一个 API Key 即可使用麦麦的所有功能!"}),e.jsxs("a",{href:"https://cloud.siliconflow.cn",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-blue-600 dark:text-blue-400 hover:underline font-medium",children:["前往硅基流动获取 API Key",e.jsx(Fc,{className:"h-3 w-3"})]})]})]})}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"siliconflow_api_key",children:"SiliconFlow API Key *"}),e.jsxs("div",{className:"relative",children:[e.jsx(ce,{id:"siliconflow_api_key",type:c?"text":"password",placeholder:"sk-...",value:n.api_key,onChange:h=>r({api_key:h.target.value}),className:"font-mono pr-10"}),e.jsx(b,{type:"button",variant:"ghost",size:"sm",className:"absolute right-0 top-0 h-full px-3 hover:bg-transparent",onClick:()=>d(!c),children:c?e.jsx(rr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Ys,{className:"h-4 w-4 text-muted-foreground"})})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"请输入您的硅基流动 API 密钥。获取后,麦麦将自动配置所有必需的模型。"})]}),e.jsxs("div",{className:"rounded-lg bg-muted/50 p-4 text-sm space-y-2",children:[e.jsx("p",{className:"font-medium",children:"将自动配置以下模型:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 text-muted-foreground ml-2",children:[e.jsx("li",{children:"DeepSeek V3 - 主要对话和工具模型"}),e.jsx("li",{children:"Qwen3 30B - 高频小任务和工具调用"}),e.jsx("li",{children:"Qwen3 VL 30B - 图像识别"}),e.jsx("li",{children:"SenseVoice - 语音识别"}),e.jsx("li",{children:"BGE-M3 - 文本嵌入"}),e.jsx("li",{children:"知识库相关模型 (LPMM)"})]})]}),e.jsx("div",{className:"rounded-lg border border-amber-200 dark:border-amber-800 bg-amber-50 dark:bg-amber-950/30 p-4",children:e.jsxs("p",{className:"text-sm text-amber-900 dark:text-amber-100",children:[e.jsx("span",{className:"font-medium",children:"💡 提示:"}),'完成向导后,您可以在"系统设置 → 模型配置"中添加更多 API 提供商和模型。']})})]})}async function l0(){const n=await ke("/api/webui/config/bot",{method:"GET",headers:Tt()});if(!n.ok)throw new Error("读取Bot配置失败");const c=(await n.json()).config.bot||{};return{qq_account:c.qq_account||0,nickname:c.nickname||"",alias_names:c.alias_names||[]}}async function n0(){const n=await ke("/api/webui/config/bot",{method:"GET",headers:Tt()});if(!n.ok)throw new Error("读取人格配置失败");const c=(await n.json()).config.personality||{};return{personality:c.personality||"",reply_style:c.reply_style||"",interest:c.interest||"",plan_style:c.plan_style||"",private_plan_style:c.private_plan_style||""}}async function i0(){const n=await ke("/api/webui/config/bot",{method:"GET",headers:Tt()});if(!n.ok)throw new Error("读取表情包配置失败");const c=(await n.json()).config.emoji||{};return{emoji_chance:c.emoji_chance??.4,max_reg_num:c.max_reg_num??40,do_replace:c.do_replace??!0,check_interval:c.check_interval??10,steal_emoji:c.steal_emoji??!0,content_filtration:c.content_filtration??!1,filtration_prompt:c.filtration_prompt||""}}async function r0(){const n=await ke("/api/webui/config/bot",{method:"GET",headers:Tt()});if(!n.ok)throw new Error("读取其他配置失败");const c=(await n.json()).config,d=c.tool||{},h=c.mood||{},x=c.jargon||{};return{enable_tool:d.enable_tool??!0,enable_mood:h.enable_mood??!1,mood_update_threshold:h.mood_update_threshold,emotion_style:h.emotion_style,all_global:x.all_global??!0}}async function c0(){const n=await ke("/api/webui/config/model",{method:"GET",headers:Tt()});if(!n.ok)throw new Error("读取模型配置失败");return{api_key:((await n.json()).config.api_providers||[]).find(x=>x.name==="SiliconFlow")?.api_key||""}}async function o0(n){const r=await ke("/api/webui/config/bot/section/bot",{method:"POST",headers:Tt(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"保存Bot基础配置失败")}return await r.json()}async function d0(n){const r=await ke("/api/webui/config/bot/section/personality",{method:"POST",headers:Tt(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"保存人格配置失败")}return await r.json()}async function u0(n){const r=await ke("/api/webui/config/bot/section/emoji",{method:"POST",headers:Tt(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"保存表情包配置失败")}return await r.json()}async function m0(n){const r=[];r.push(ke("/api/webui/config/bot/section/tool",{method:"POST",headers:Tt(),body:JSON.stringify({enable_tool:n.enable_tool})})),r.push(ke("/api/webui/config/bot/section/jargon",{method:"POST",headers:Tt(),body:JSON.stringify({all_global:n.all_global})}));const c={enable_mood:n.enable_mood};n.enable_mood&&(c.mood_update_threshold=n.mood_update_threshold||1,c.emotion_style=n.emotion_style||""),r.push(ke("/api/webui/config/bot/section/mood",{method:"POST",headers:Tt(),body:JSON.stringify(c)}));const d=await Promise.all(r);for(const h of d)if(!h.ok){const x=await h.json();throw new Error(x.detail||"保存其他配置失败")}return{success:!0}}async function h0(n){const r=await ke("/api/webui/config/model",{method:"GET",headers:Tt()});if(!r.ok)throw new Error("读取模型配置失败");const d=(await r.json()).config,h=d.api_providers||[],x=h.findIndex(p=>p.name==="SiliconFlow");x>=0?h[x]={...h[x],api_key:n.api_key}:h.push({name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",api_key:n.api_key,client_type:"openai",max_retry:3,timeout:120,retry_interval:5});const f={...d,api_providers:h},j=await ke("/api/webui/config/model",{method:"POST",headers:Tt(),body:JSON.stringify(f)});if(!j.ok){const p=await j.json();throw new Error(p.detail||"保存模型配置失败")}return await j.json()}async function Wf(){const n=localStorage.getItem("access-token"),r=await ke("/api/webui/setup/complete",{method:"POST",headers:{Authorization:`Bearer ${n}`}});if(!r.ok){const c=await r.json();throw new Error(c.message||"标记配置完成失败")}return await r.json()}async function so(){const n=await ke("/api/webui/system/restart",{method:"POST",headers:Tt()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"重启失败")}return await n.json()}async function x0(){const n=await ke("/api/webui/system/status",{method:"GET",headers:Tt()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取状态失败")}return await n.json()}function f0(){const n=ua(),{toast:r}=Rt(),[c,d]=u.useState(0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,w]=u.useState(!0),[v,k]=u.useState({qq_account:0,nickname:"",alias_names:[]}),[T,E]=u.useState({personality:"是一个女大学生,现在在读大二,会刷贴吧。",reply_style:"请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景。可以参考贴吧,知乎和微博的回复风格。",interest:"对技术相关话题,游戏和动漫相关话题感兴趣,也对日常话题感兴趣,不喜欢太过沉重严肃的话题",plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 +2.如果相同的内容已经被执行,请不要重复执行 +3.请控制你的发言频率,不要太过频繁的发言 +4.如果有人对你感到厌烦,请减少回复 +5.如果有人对你进行攻击,或者情绪激动,请你以合适的方法应对`,private_plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 +2.如果相同的内容已经被执行,请不要重复执行 +3.某句话如果已经被回复过,不要重复回复`}),[R,F]=u.useState({emoji_chance:.4,max_reg_num:40,do_replace:!0,check_interval:10,steal_emoji:!0,content_filtration:!1,filtration_prompt:"符合公序良俗"}),[U,M]=u.useState({enable_tool:!0,enable_mood:!1,mood_update_threshold:1,emotion_style:"情绪较为稳定,但遇遇特定事件的时候起伏较大",all_global:!0}),[Z,G]=u.useState({api_key:""}),[z,B]=u.useState(!1),[X,S]=u.useState(""),O=[{id:"bot-basic",title:"Bot基础",description:"配置机器人的基本信息",icon:ar},{id:"personality",title:"人格配置",description:"定义机器人的性格和说话风格",icon:Ic},{id:"emoji",title:"表情包",description:"配置表情包相关设置",icon:Lu},{id:"other",title:"其他设置",description:"工具、情绪系统等配置",icon:ti},{id:"siliconflow",title:"API配置",description:"配置硅基流动API密钥",icon:sg}],se=(c+1)/O.length*100;u.useEffect(()=>{(async()=>{try{w(!0);const[q,H,ie,_,me]=await Promise.all([l0(),n0(),i0(),r0(),c0()]);k(q),E(H),F(ie),M(_),G(me)}catch(q){r({title:"加载配置失败",description:q instanceof Error?q.message:"无法加载现有配置,将使用默认值",variant:"destructive"})}finally{w(!1)}})()},[r]);const he=async()=>{j(!0);try{switch(c){case 0:await o0(v);break;case 1:await d0(T);break;case 2:await u0(R);break;case 3:await m0(U);break;case 4:await h0(Z);break}return r({title:"保存成功",description:`${O[c].title}配置已保存`}),!0}catch(y){return r({title:"保存失败",description:y instanceof Error?y.message:"未知错误",variant:"destructive"}),!1}finally{j(!1)}},ye=async()=>{await he()&&c{c>0&&d(c-1)},pe=async()=>{x(!0),B(!0);try{if(S("正在保存API配置..."),!await he()){x(!1),B(!1);return}S("正在完成初始化..."),await Wf(),S("正在重启麦麦..."),await so(),r({title:"配置完成",description:"麦麦正在重启以应用新配置..."}),S("等待麦麦重启完成...");const q=60;let H=0,ie=!1;for(;HsetTimeout(_,1e3));try{(await x0()).running&&(ie=!0,S("重启成功!正在跳转..."))}catch{H++}}if(!ie)throw new Error("重启超时,请手动检查麦麦状态");setTimeout(()=>{n({to:"/"})},1e3)}catch(y){B(!1),r({title:"配置失败",description:y instanceof Error?y.message:"未知错误",variant:"destructive"})}finally{x(!1)}},je=async()=>{try{await Wf(),n({to:"/"})}catch(y){r({title:"跳过失败",description:y instanceof Error?y.message:"未知错误",variant:"destructive"})}},_e=()=>{switch(c){case 0:return e.jsx(WN,{config:v,onChange:k});case 1:return e.jsx(e0,{config:T,onChange:E});case 2:return e.jsx(t0,{config:R,onChange:F});case 3:return e.jsx(s0,{config:U,onChange:M});case 4:return e.jsx(a0,{config:Z,onChange:G});default:return null}};return e.jsxs("div",{className:"relative flex min-h-screen flex-col items-center justify-center overflow-hidden bg-gradient-to-br from-primary/5 via-background to-secondary/5 p-4 md:p-6",children:[z&&e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm",children:e.jsxs("div",{className:"mx-auto flex max-w-md flex-col items-center space-y-6 rounded-lg border bg-card p-8 text-center shadow-lg",children:[e.jsx("div",{className:"flex h-20 w-20 items-center justify-center rounded-full bg-primary/10",children:e.jsx(vs,{className:"h-10 w-10 animate-spin text-primary"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),e.jsx("p",{className:"text-muted-foreground",children:X})]}),e.jsx("div",{className:"w-full",children:e.jsx("div",{className:"h-2 w-full overflow-hidden rounded-full bg-secondary",children:e.jsx("div",{className:"h-full w-full animate-pulse bg-primary",style:{animation:"pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite"}})})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"请稍候,这可能需要一分钟..."})]})}),e.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[e.jsx("div",{className:"absolute left-1/4 top-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-primary/5 blur-3xl"}),e.jsx("div",{className:"absolute right-1/4 bottom-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-secondary/5 blur-3xl"})]}),p?e.jsxs("div",{className:"relative z-10 text-center",children:[e.jsx("div",{className:"mx-auto mb-4 flex h-16 w-16 items-center justify-center",children:e.jsx("div",{className:"h-12 w-12 animate-spin rounded-full border-4 border-primary border-t-transparent"})}),e.jsx("p",{className:"text-lg font-medium",children:"加载配置中..."}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"正在读取现有配置"})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"relative z-10 w-full max-w-4xl",children:[e.jsxs("div",{className:"mb-6 md:mb-8 text-center",children:[e.jsx("div",{className:"mx-auto mb-4 flex h-12 w-12 md:h-16 md:w-16 items-center justify-center rounded-2xl bg-primary/10",children:e.jsx(oy,{className:"h-6 w-6 md:h-8 md:w-8 text-primary",strokeWidth:2,fill:"none"})}),e.jsx("h1",{className:"mb-2 text-2xl md:text-3xl font-bold",children:"首次配置向导"}),e.jsxs("p",{className:"text-sm md:text-base text-muted-foreground",children:["让我们一起完成 ",Gu," 的初始配置"]})]}),e.jsxs("div",{className:"mb-6 md:mb-8",children:[e.jsxs("div",{className:"mb-2 flex items-center justify-between text-xs md:text-sm",children:[e.jsxs("span",{className:"text-muted-foreground",children:["步骤 ",c+1," / ",O.length]}),e.jsxs("span",{className:"font-medium text-primary",children:[Math.round(se),"%"]})]}),e.jsx(vr,{value:se,className:"h-2"})]}),e.jsx("div",{className:"mb-6 md:mb-8 flex justify-between",children:O.map((y,q)=>{const H=y.icon;return e.jsxs("div",{className:K("flex flex-1 flex-col items-center gap-1 md:gap-2",qn({to:"/"}),className:"gap-2 w-full sm:w-auto",children:[e.jsx(to,{className:"h-4 w-4"}),"返回首页"]}),e.jsxs(b,{size:"lg",variant:"outline",onClick:()=>window.history.back(),className:"gap-2 w-full sm:w-auto",children:[e.jsx(Wn,{className:"h-4 w-4"}),"返回上一页"]})]}),e.jsx("div",{className:"mt-12 pt-8 border-t border-border",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:"如果您认为这是一个错误,请联系系统管理员"})})]})})}const Be=Yb,He=Xb,Re=u.forwardRef(({className:n,children:r,...c},d)=>e.jsxs(Bp,{ref:d,className:K("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",n),...c,children:[r,e.jsx(Gb,{asChild:!0,children:e.jsx(Dl,{className:"h-4 w-4 opacity-50"})})]}));Re.displayName=Bp.displayName;const yg=u.forwardRef(({className:n,...r},c)=>e.jsx(Hp,{ref:c,className:K("flex cursor-default items-center justify-center py-1",n),...r,children:e.jsx(or,{className:"h-4 w-4"})}));yg.displayName=Hp.displayName;const Ng=u.forwardRef(({className:n,...r},c)=>e.jsx(qp,{ref:c,className:K("flex cursor-default items-center justify-center py-1",n),...r,children:e.jsx(Dl,{className:"h-4 w-4"})}));Ng.displayName=qp.displayName;const Le=u.forwardRef(({className:n,children:r,position:c="popper",...d},h)=>e.jsx(Vb,{children:e.jsxs(Gp,{ref:h,className:K("relative z-[100] max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-hidden rounded-md border border-border bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",c==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",n),position:c,...d,children:[e.jsx(yg,{}),e.jsx(Fb,{className:K("p-1",c==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:r}),e.jsx(Ng,{})]})}));Le.displayName=Gp.displayName;const p0=u.forwardRef(({className:n,...r},c)=>e.jsx(Vp,{ref:c,className:K("px-2 py-1.5 text-sm font-semibold",n),...r}));p0.displayName=Vp.displayName;const ne=u.forwardRef(({className:n,children:r,...c},d)=>e.jsxs(Fp,{ref:d,className:K("relative flex w-full cursor-default select-none items-center rounded-sm py-2 pl-2 pr-8 text-sm outline-none bg-white dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800 focus:bg-gray-100 dark:focus:bg-gray-800 data-[disabled]:pointer-events-none data-[disabled]:opacity-50",n),...c,children:[e.jsx("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx($b,{children:e.jsx(ga,{className:"h-4 w-4"})})}),e.jsx(Qb,{children:r})]}));ne.displayName=Fp.displayName;const g0=u.forwardRef(({className:n,...r},c)=>e.jsx($p,{ref:c,className:K("-mx-1 my-1 h-px bg-muted",n),...r}));g0.displayName=$p.displayName;const Ma=wb,Da=_b,va=u.forwardRef(({className:n,align:r="center",sideOffset:c=4,...d},h)=>e.jsx(Nb,{children:e.jsx(Ep,{ref:h,align:r,sideOffset:c,className:K("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]",n),...d})}));va.displayName=Ep.displayName;const Rl="/api/webui/config";async function ep(){const r=await(await ke(`${Rl}/bot`)).json();if(!r.success)throw new Error("获取配置数据失败");return r.config}async function In(){const r=await(await ke(`${Rl}/model`)).json();if(!r.success)throw new Error("获取模型配置数据失败");return r.config}async function tp(n){const c=await(await ke(`${Rl}/bot`,{method:"POST",body:JSON.stringify(n)})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function j0(){const r=await(await ke(`${Rl}/bot/raw`)).json();if(!r.success)throw new Error("获取配置源代码失败");return r.content}async function v0(n){const c=await(await ke(`${Rl}/bot/raw`,{method:"POST",body:JSON.stringify({raw_content:n})})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function eo(n){const c=await(await ke(`${Rl}/model`,{method:"POST",body:JSON.stringify(n)})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function b0(n,r){const d=await(await ke(`${Rl}/bot/section/${n}`,{method:"POST",body:JSON.stringify(r)})).json();if(!d.success)throw new Error(d.message||`保存配置节 ${n} 失败`)}async function Mu(n,r){const d=await(await ke(`${Rl}/model/section/${n}`,{method:"POST",body:JSON.stringify(r)})).json();if(!d.success)throw new Error(d.message||`保存配置节 ${n} 失败`)}async function y0(n,r="openai",c="/models"){const d=new URLSearchParams({provider_name:n,parser:r,endpoint:c}),h=await ke(`/api/webui/models/list?${d}`);if(!h.ok){const f=await h.json().catch(()=>({}));throw new Error(f.detail||`获取模型列表失败 (${h.status})`)}const x=await h.json();if(!x.success)throw new Error("获取模型列表失败");return x.models}async function N0(n){const r=new URLSearchParams({provider_name:n}),c=await ke(`/api/webui/models/test-connection-by-name?${r}`,{method:"POST"});if(!c.ok){const d=await c.json().catch(()=>({}));throw new Error(d.detail||`测试连接失败 (${c.status})`)}return await c.json()}const w0=ei("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"}}),al=u.forwardRef(({className:n,variant:r,...c},d)=>e.jsx("div",{ref:d,role:"alert",className:K(w0({variant:r}),n),...c}));al.displayName="Alert";const _0=u.forwardRef(({className:n,...r},c)=>e.jsx("h5",{ref:c,className:K("mb-1 font-medium leading-none tracking-tight",n),...r}));_0.displayName="AlertTitle";const ll=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:K("text-sm [&_p]:leading-relaxed",n),...r}));ll.displayName="AlertDescription";function $u({onRestartComplete:n,onRestartFailed:r}){const[c,d]=u.useState(0),[h,x]=u.useState("restarting"),[f,j]=u.useState(0),[p,w]=u.useState(0);u.useEffect(()=>{const T=setInterval(()=>{d(F=>F>=90?F:F+1)},200),E=setInterval(()=>{j(F=>F+1)},1e3),R=setTimeout(()=>{x("checking"),v()},3e3);return()=>{clearInterval(T),clearInterval(E),clearTimeout(R)}},[]);const v=()=>{const E=async()=>{try{if(w(F=>F+1),(await fetch("/api/webui/system/status",{method:"GET",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(3e3)})).ok)d(100),x("success"),setTimeout(()=>{n?.()},1500);else throw new Error("Status check failed")}catch{p<60?setTimeout(E,2e3):(x("failed"),r?.())}};E()},k=T=>{const E=Math.floor(T/60),R=T%60;return`${E}:${R.toString().padStart(2,"0")}`};return e.jsx("div",{className:"fixed inset-0 bg-background/95 backdrop-blur-sm z-50 flex items-center justify-center",children:e.jsxs("div",{className:"max-w-md w-full mx-4 space-y-8",children:[e.jsxs("div",{className:"flex flex-col items-center space-y-4",children:[h==="restarting"&&e.jsxs(e.Fragment,{children:[e.jsx(vs,{className:"h-16 w-16 text-primary animate-spin"}),e.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"请稍候,麦麦正在重启中..."})]}),h==="checking"&&e.jsxs(e.Fragment,{children:[e.jsx(vs,{className:"h-16 w-16 text-primary animate-spin"}),e.jsx("h2",{className:"text-2xl font-bold",children:"检查服务状态"}),e.jsxs("p",{className:"text-muted-foreground text-center",children:["等待服务恢复... (尝试 ",p,"/60)"]})]}),h==="success"&&e.jsxs(e.Fragment,{children:[e.jsx(oa,{className:"h-16 w-16 text-green-500"}),e.jsx("h2",{className:"text-2xl font-bold",children:"重启成功"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"正在跳转到登录页面..."})]}),h==="failed"&&e.jsxs(e.Fragment,{children:[e.jsx(Ea,{className:"h-16 w-16 text-destructive"}),e.jsx("h2",{className:"text-2xl font-bold",children:"重启超时"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"服务未能在预期时间内恢复,请手动检查或刷新页面"})]})]}),h!=="failed"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(vr,{value:c,className:"h-2"}),e.jsxs("div",{className:"flex justify-between text-sm text-muted-foreground",children:[e.jsxs("span",{children:[c,"%"]}),e.jsxs("span",{children:["已用时: ",k(f)]})]})]}),e.jsx("div",{className:"bg-muted/50 rounded-lg p-4 space-y-2",children:e.jsxs("p",{className:"text-sm text-muted-foreground",children:[h==="restarting"&&"🔄 配置已保存,正在重启主程序...",h==="checking"&&"⏳ 正在等待服务恢复,请勿关闭页面...",h==="success"&&"✅ 配置已生效,服务运行正常",h==="failed"&&"⚠️ 如果长时间无响应,请尝试手动重启"]})}),h==="failed"&&e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{onClick:()=>window.location.reload(),className:"flex-1 px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary/90",children:"刷新页面"}),e.jsx("button",{onClick:()=>{x("checking"),w(0),v()},className:"flex-1 px-4 py-2 bg-secondary text-secondary-foreground rounded-md hover:bg-secondary/90",children:"重试检测"})]})]})})}const S0={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,r){let c;if(!r.inString&&(c=n.match(/^('''|"""|'|")/))&&(r.stringType=c[0],r.inString=!0),n.sol()&&!r.inString&&r.inArray===0&&(r.lhs=!0),r.inString){for(;r.inString;)if(n.match(r.stringType))r.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return r.lhs?"property":"string"}else{if(r.inArray&&n.peek()==="]")return n.next(),r.inArray--,"bracket";if(r.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(r.lhs&&n.eatWhile(function(d){return d!="="&&d!=" "}))return"property";if(r.lhs&&n.peek()==="=")return n.next(),r.lhs=!1,null;if(!r.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!r.lhs&&(n.match("true")||n.match("false")))return"atom";if(!r.lhs&&n.peek()==="[")return r.inArray++,n.next(),"bracket";if(!r.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}},C0={python:[Oy()],json:[Ry(),Ly()],toml:[Dy.define(S0)],text:[]};function k0({value:n,onChange:r,language:c="text",readOnly:d=!1,height:h="400px",minHeight:x,maxHeight:f,placeholder:j,theme:p="dark",className:w=""}){const[v,k]=u.useState(!1);if(u.useEffect(()=>{k(!0)},[]),!v)return e.jsx("div",{className:`rounded-md border bg-muted animate-pulse ${w}`,style:{height:h,minHeight:x,maxHeight:f}});const T=[...C0[c]||[],Ff.lineWrapping];return d&&T.push(Ff.editable.of(!1)),e.jsx("div",{className:`rounded-md overflow-hidden border ${w}`,children:e.jsx(Uy,{value:n,height:h,minHeight:x,maxHeight:f,theme:p==="dark"?By:void 0,extensions:T,onChange:r,placeholder:j,basicSetup:{lineNumbers:!0,highlightActiveLineGutter:!0,highlightSpecialChars:!0,history:!0,foldGutter:!0,drawSelection:!0,dropCursor:!0,allowMultipleSelections:!0,indentOnInput:!0,syntaxHighlighting:!0,bracketMatching:!0,closeBrackets:!0,autocompletion:!0,rectangularSelection:!0,crosshairCursor:!0,highlightActiveLine:!0,highlightSelectionMatches:!0,closeBracketsKeymap:!0,defaultKeymap:!0,searchKeymap:!0,historyKeymap:!0,foldKeymap:!0,completionKeymap:!0,lintKeymap:!0}})})}function T0(){const[n,r]=u.useState(!0),[c,d]=u.useState(!1),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,w]=u.useState(!1),[v,k]=u.useState(!1),[T,E]=u.useState("visual"),[R,F]=u.useState(""),[U,M]=u.useState(!1),{toast:Z}=Rt(),[G,z]=u.useState(null),[B,X]=u.useState(null),[S,O]=u.useState(null),[se,he]=u.useState(null),[ye,be]=u.useState(null),[pe,je]=u.useState(null),[_e,y]=u.useState(null),[q,H]=u.useState(null),[ie,_]=u.useState(null),[me,xe]=u.useState(null),[Q,de]=u.useState(null),[ge,le]=u.useState(null),[L,$]=u.useState(null),[D,ee]=u.useState(null),[Ne,ze]=u.useState(null),[We,Xe]=u.useState(null),[Mt,qt]=u.useState(null),[re,we]=u.useState(null),Je=u.useRef(null),Fe=u.useRef(!0),Wt=u.useRef({}),Xs=u.useCallback(async()=>{try{const Se=await j0();F(Se),M(!1)}catch(Se){Z({variant:"destructive",title:"加载失败",description:Se instanceof Error?Se.message:"加载源代码失败"})}},[Z]),Ns=u.useCallback(async()=>{try{r(!0);const Se=await ep();Wt.current=Se,z(Se.bot),X(Se.personality);const Oe=Se.chat;Oe.talk_value_rules||(Oe.talk_value_rules=[]),O(Oe),he(Se.expression),be(Se.emoji),je(Se.memory),y(Se.tool),H(Se.mood),_(Se.voice),xe(Se.lpmm_knowledge),de(Se.keyword_reaction),le(Se.response_post_process),$(Se.chinese_typo),ee(Se.response_splitter),ze(Se.log),Xe(Se.debug),qt(Se.maim_message),we(Se.telemetry),j(!1),Fe.current=!1,await Xs()}catch(Se){console.error("加载配置失败:",Se),Z({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}finally{r(!1)}},[Z,Xs]);u.useEffect(()=>{Ns()},[Ns]);const Ke=u.useCallback(async(Se,Oe)=>{if(!Fe.current)try{x(!0),await b0(Se,Oe),j(!1)}catch(ns){console.error(`自动保存 ${Se} 失败:`,ns),j(!0)}finally{x(!1)}},[]),Ue=u.useCallback((Se,Oe)=>{Fe.current||(j(!0),Je.current&&clearTimeout(Je.current),Je.current=setTimeout(()=>{Ke(Se,Oe)},2e3))},[Ke]);u.useEffect(()=>{G&&!Fe.current&&Ue("bot",G)},[G,Ue]),u.useEffect(()=>{B&&!Fe.current&&Ue("personality",B)},[B,Ue]),u.useEffect(()=>{S&&!Fe.current&&Ue("chat",S)},[S,Ue]),u.useEffect(()=>{se&&!Fe.current&&Ue("expression",se)},[se,Ue]),u.useEffect(()=>{ye&&!Fe.current&&Ue("emoji",ye)},[ye,Ue]),u.useEffect(()=>{pe&&!Fe.current&&Ue("memory",pe)},[pe,Ue]),u.useEffect(()=>{_e&&!Fe.current&&Ue("tool",_e)},[_e,Ue]),u.useEffect(()=>{q&&!Fe.current&&Ue("mood",q)},[q,Ue]),u.useEffect(()=>{ie&&!Fe.current&&Ue("voice",ie)},[ie,Ue]),u.useEffect(()=>{me&&!Fe.current&&Ue("lpmm_knowledge",me)},[me,Ue]),u.useEffect(()=>{Q&&!Fe.current&&Ue("keyword_reaction",Q)},[Q,Ue]),u.useEffect(()=>{ge&&!Fe.current&&Ue("response_post_process",ge)},[ge,Ue]),u.useEffect(()=>{L&&!Fe.current&&Ue("chinese_typo",L)},[L,Ue]),u.useEffect(()=>{D&&!Fe.current&&Ue("response_splitter",D)},[D,Ue]),u.useEffect(()=>{Ne&&!Fe.current&&Ue("log",Ne)},[Ne,Ue]),u.useEffect(()=>{We&&!Fe.current&&Ue("debug",We)},[We,Ue]),u.useEffect(()=>{Mt&&!Fe.current&&Ue("maim_message",Mt)},[Mt,Ue]),u.useEffect(()=>{re&&!Fe.current&&Ue("telemetry",re)},[re,Ue]);const js=async()=>{try{d(!0),await v0(R),j(!1),M(!1),Z({title:"保存成功",description:"配置已保存"}),await Ns()}catch(Se){M(!0),Z({variant:"destructive",title:"保存失败",description:Se instanceof Error?Se.message:"保存配置失败"})}finally{d(!1)}},ls=async Se=>{if(f){Z({variant:"destructive",title:"切换失败",description:"请先保存当前更改"});return}if(E(Se),Se==="source")await Xs();else try{const Oe=await ep();Wt.current=Oe,z(Oe.bot),X(Oe.personality);const ns=Oe.chat;ns.talk_value_rules||(ns.talk_value_rules=[]),O(ns),he(Oe.expression),be(Oe.emoji),je(Oe.memory),y(Oe.tool),H(Oe.mood),_(Oe.voice),xe(Oe.lpmm_knowledge),de(Oe.keyword_reaction),le(Oe.response_post_process),$(Oe.chinese_typo),ee(Oe.response_splitter),ze(Oe.log),Xe(Oe.debug),qt(Oe.maim_message),we(Oe.telemetry),j(!1)}catch(Oe){console.error("加载配置失败:",Oe),Z({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}},_s=async()=>{try{d(!0),Je.current&&clearTimeout(Je.current);const Se={...Wt.current,bot:G,personality:B,chat:S,expression:se,emoji:ye,memory:pe,tool:_e,mood:q,voice:ie,lpmm_knowledge:me,keyword_reaction:Q,response_post_process:ge,chinese_typo:L,response_splitter:D,log:Ne,debug:We,maim_message:Mt,telemetry:re};await tp(Se),j(!1),Z({title:"保存成功",description:"麦麦主程序配置已保存"})}catch(Se){console.error("保存配置失败:",Se),Z({title:"保存失败",description:Se.message,variant:"destructive"})}finally{d(!1)}},Ss=async()=>{try{w(!0),so().catch(()=>{}),k(!0)}catch(Se){console.error("重启失败:",Se),k(!1),Z({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),w(!1)}},nl=async()=>{try{d(!0),Je.current&&clearTimeout(Je.current);const Se={...Wt.current,bot:G,personality:B,chat:S,expression:se,emoji:ye,memory:pe,tool:_e,mood:q,voice:ie,lpmm_knowledge:me,keyword_reaction:Q,response_post_process:ge,chinese_typo:L,response_splitter:D,log:Ne,debug:We,maim_message:Mt,telemetry:re};await tp(Se),j(!1),Z({title:"保存成功",description:"配置已保存,即将重启麦麦..."}),await new Promise(Oe=>setTimeout(Oe,500)),await Ss()}catch(Se){console.error("保存失败:",Se),Z({title:"保存失败",description:Se.message,variant:"destructive"})}finally{d(!1)}},il=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},rl=()=>{k(!1),w(!1),Z({title:"重启失败",description:"服务器未能在预期时间内恢复,请手动检查",variant:"destructive"})};return n?e.jsx(Ie,{className:"h-full",children:e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):e.jsx(Ie,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:gap-4",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("h1",{className:"text-xl sm:text-2xl md:text-3xl font-bold",children:"麦麦主程序配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 text-xs sm:text-sm",children:"管理麦麦的核心功能和行为设置"})]}),e.jsxs("div",{className:"flex gap-2 flex-shrink-0",children:[e.jsxs(b,{onClick:T==="visual"?_s:js,disabled:c||h||!f||p,size:"sm",variant:"outline",className:"w-20 sm:w-24",children:[e.jsx(pr,{className:"h-4 w-4 flex-shrink-0",strokeWidth:2,fill:"none"}),e.jsx("span",{className:"ml-1 truncate text-xs sm:text-sm",children:c?"保存中":h?"自动":f?"保存":"已保存"})]}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsxs(b,{disabled:c||h||p,size:"sm",className:"w-20 sm:w-28",children:[e.jsx(fr,{className:"h-4 w-4 flex-shrink-0"}),e.jsx("span",{className:"ml-1 truncate text-xs sm:text-sm",children:p?"重启中":f?"保存重启":"重启"})]})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认重启麦麦?"}),e.jsx(dt,{asChild:!0,children:e.jsx("div",{children:e.jsx("p",{children:f?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"})})})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:f?nl:Ss,children:f?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsx("div",{className:"flex",children:e.jsx(Aa,{value:T,onValueChange:Se=>ls(Se),className:"w-full",children:e.jsxs(ja,{className:"h-8 sm:h-9 w-full grid grid-cols-2",children:[e.jsxs(st,{value:"visual",className:"text-xs sm:text-sm",children:[e.jsx(my,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"可视化编辑"]}),e.jsxs(st,{value:"source",className:"text-xs sm:text-sm",children:[e.jsx(hy,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"源代码编辑"]})]})})})]}),e.jsxs(al,{children:[e.jsx(za,{className:"h-4 w-4"}),e.jsxs(ll,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),T==="source"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs(al,{children:[e.jsx(za,{className:"h-4 w-4"}),e.jsxs(ll,{children:[e.jsx("strong",{children:"源代码模式(高级功能):"}),"直接编辑 TOML 配置文件。此功能仅适用于熟悉 TOML 语法的高级用户。保存时会在后端验证格式,只有格式完全正确才能保存。",U&&e.jsx("span",{className:"text-destructive font-semibold ml-2",children:"⚠️ 上次保存失败,请检查 TOML 格式"})]})]}),e.jsx(k0,{value:R,onChange:Se=>{F(Se),j(!0),U&&M(!1)},language:"toml",theme:"dark",height:"calc(100vh - 280px)",minHeight:"500px",placeholder:"TOML 配置内容"})]}),T==="visual"&&e.jsx(e.Fragment,{children:e.jsxs(Aa,{defaultValue:"bot",className:"w-full",children:[e.jsxs(ja,{className:"flex flex-wrap h-auto gap-1 p-1 sm:grid sm:grid-cols-5 lg:grid-cols-10",children:[e.jsx(st,{value:"bot",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"基本信息"}),e.jsx(st,{value:"personality",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"人格"}),e.jsx(st,{value:"chat",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"聊天"}),e.jsx(st,{value:"expression",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"表达"}),e.jsx(st,{value:"features",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"功能"}),e.jsx(st,{value:"processing",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"处理"}),e.jsx(st,{value:"mood",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"情绪"}),e.jsx(st,{value:"voice",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"语音"}),e.jsx(st,{value:"lpmm",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"知识库"}),e.jsx(st,{value:"other",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"其他"})]}),e.jsx(_t,{value:"bot",className:"space-y-4",children:G&&e.jsx(E0,{config:G,onChange:z})}),e.jsx(_t,{value:"personality",className:"space-y-4",children:B&&e.jsx(z0,{config:B,onChange:X})}),e.jsx(_t,{value:"chat",className:"space-y-4",children:S&&e.jsx(A0,{config:S,onChange:O})}),e.jsx(_t,{value:"expression",className:"space-y-4",children:se&&e.jsx(D0,{config:se,onChange:he})}),e.jsx(_t,{value:"features",className:"space-y-4",children:ye&&pe&&_e&&e.jsx(O0,{emojiConfig:ye,memoryConfig:pe,toolConfig:_e,onEmojiChange:be,onMemoryChange:je,onToolChange:y})}),e.jsx(_t,{value:"processing",className:"space-y-4",children:Q&&ge&&L&&D&&e.jsx(R0,{keywordReactionConfig:Q,responsePostProcessConfig:ge,chineseTypoConfig:L,responseSplitterConfig:D,onKeywordReactionChange:de,onResponsePostProcessChange:le,onChineseTypoChange:$,onResponseSplitterChange:ee})}),e.jsx(_t,{value:"mood",className:"space-y-4",children:q&&e.jsx(L0,{config:q,onChange:H})}),e.jsx(_t,{value:"voice",className:"space-y-4",children:ie&&e.jsx(U0,{config:ie,onChange:_})}),e.jsx(_t,{value:"lpmm",className:"space-y-4",children:me&&e.jsx(B0,{config:me,onChange:xe})}),e.jsxs(_t,{value:"other",className:"space-y-4",children:[Ne&&e.jsx(H0,{config:Ne,onChange:ze}),We&&e.jsx(q0,{config:We,onChange:Xe}),Mt&&e.jsx(G0,{config:Mt,onChange:qt}),re&&e.jsx(V0,{config:re,onChange:we})]})]})}),v&&e.jsx($u,{onRestartComplete:il,onRestartFailed:rl})]})})}function E0({config:n,onChange:r}){const c=()=>{r({...n,platforms:[...n.platforms,""]})},d=p=>{r({...n,platforms:n.platforms.filter((w,v)=>v!==p)})},h=(p,w)=>{const v=[...n.platforms];v[p]=w,r({...n,platforms:v})},x=()=>{r({...n,alias_names:[...n.alias_names,""]})},f=p=>{r({...n,alias_names:n.alias_names.filter((w,v)=>v!==p)})},j=(p,w)=>{const v=[...n.alias_names];v[p]=w,r({...n,alias_names:v})};return e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"基本信息"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"platform",children:"平台"}),e.jsx(ce,{id:"platform",value:n.platform,onChange:p=>r({...n,platform:p.target.value}),placeholder:"qq"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"qq_account",children:"QQ账号"}),e.jsx(ce,{id:"qq_account",value:n.qq_account,onChange:p=>r({...n,qq_account:p.target.value}),placeholder:"123456789"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"nickname",children:"昵称"}),e.jsx(ce,{id:"nickname",value:n.nickname,onChange:p=>r({...n,nickname:p.target.value}),placeholder:"麦麦"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{children:"其他平台账号"}),e.jsxs(b,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(cs,{className:"h-4 w-4 mr-1"}),"添加"]})]}),e.jsxs("div",{className:"space-y-2",children:[n.platforms.map((p,w)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{value:p,onChange:v=>h(w,v.target.value),placeholder:"wx:114514"}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(Pe,{className:"h-4 w-4"})})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:['确定要删除平台账号 "',p||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>d(w),children:"删除"})]})]})]})]},w)),n.platforms.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无其他平台账号"})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{children:"别名"}),e.jsxs(b,{onClick:x,size:"sm",variant:"outline",children:[e.jsx(cs,{className:"h-4 w-4 mr-1"}),"添加"]})]}),e.jsxs("div",{className:"space-y-2",children:[n.alias_names.map((p,w)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{value:p,onChange:v=>j(w,v.target.value),placeholder:"小麦"}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(Pe,{className:"h-4 w-4"})})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:['确定要删除别名 "',p||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>f(w),children:"删除"})]})]})]})]},w)),n.alias_names.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无别名"})]})]})]})]})})}function z0({config:n,onChange:r}){const c=()=>{r({...n,states:[...n.states,""]})},d=x=>{r({...n,states:n.states.filter((f,j)=>j!==x)})},h=(x,f)=>{const j=[...n.states];j[x]=f,r({...n,states:j})};return e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"人格设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"personality",children:"人格特质"}),e.jsx(Ot,{id:"personality",value:n.personality,onChange:x=>r({...n,personality:x.target.value}),placeholder:"描述人格特质和身份特征(建议120字以内)",rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"建议120字以内,描述人格特质和身份特征"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"reply_style",children:"表达风格"}),e.jsx(Ot,{id:"reply_style",value:n.reply_style,onChange:x=>r({...n,reply_style:x.target.value}),placeholder:"描述说话的表达风格和习惯",rows:3})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"interest",children:"兴趣"}),e.jsx(Ot,{id:"interest",value:n.interest,onChange:x=>r({...n,interest:x.target.value}),placeholder:"会影响麦麦对什么话题进行回复",rows:2})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"plan_style",children:"说话规则与行为风格"}),e.jsx(Ot,{id:"plan_style",value:n.plan_style,onChange:x=>r({...n,plan_style:x.target.value}),placeholder:"麦麦的说话规则和行为风格",rows:5})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"visual_style",children:"识图规则"}),e.jsx(Ot,{id:"visual_style",value:n.visual_style,onChange:x=>r({...n,visual_style:x.target.value}),placeholder:"识图时的处理规则",rows:3})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"private_plan_style",children:"私聊规则"}),e.jsx(Ot,{id:"private_plan_style",value:n.private_plan_style,onChange:x=>r({...n,private_plan_style:x.target.value}),placeholder:"私聊的说话规则和行为风格",rows:4})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{children:"状态列表(人格多样性)"}),e.jsxs(b,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(cs,{className:"h-4 w-4 mr-1"}),"添加状态"]})]}),e.jsx("div",{className:"space-y-2",children:n.states.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Ot,{value:x,onChange:j=>h(f,j.target.value),placeholder:"描述一个人格状态",rows:2}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(Pe,{className:"h-4 w-4"})})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsx(dt,{children:"确定要删除这个人格状态吗?此操作无法撤销。"})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>d(f),children:"删除"})]})]})]})]},f))})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"state_probability",children:"状态替换概率"}),e.jsx(ce,{id:"state_probability",type:"number",step:"0.1",min:"0",max:"1",value:n.state_probability,onChange:x=>r({...n,state_probability:parseFloat(x.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"每次构建人格时替换 personality 的概率(0.0-1.0)"})]})]})]})})}function A0({config:n,onChange:r}){const c=()=>{r({...n,talk_value_rules:[...n.talk_value_rules,{target:"",time:"00:00-23:59",value:1}]})},d=j=>{r({...n,talk_value_rules:n.talk_value_rules.filter((p,w)=>w!==j)})},h=(j,p,w)=>{const v=[...n.talk_value_rules];v[j]={...v[j],[p]:w},r({...n,talk_value_rules:v})},x=({value:j,onChange:p})=>{const[w,v]=u.useState("00"),[k,T]=u.useState("00"),[E,R]=u.useState("23"),[F,U]=u.useState("59");u.useEffect(()=>{const Z=j.split("-");if(Z.length===2){const[G,z]=Z,[B,X]=G.split(":"),[S,O]=z.split(":");B&&v(B.padStart(2,"0")),X&&T(X.padStart(2,"0")),S&&R(S.padStart(2,"0")),O&&U(O.padStart(2,"0"))}},[j]);const M=(Z,G,z,B)=>{const X=`${Z}:${G}-${z}:${B}`;p(X)};return e.jsxs(Ma,{children:[e.jsx(Da,{asChild:!0,children:e.jsxs(b,{variant:"outline",className:"w-full justify-start font-mono text-sm",children:[e.jsx(Jn,{className:"h-4 w-4 mr-2"}),j||"选择时间段"]})}),e.jsx(va,{className:"w-72 sm:w-80",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"font-medium text-sm mb-3",children:"开始时间"}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[e.jsxs("div",{children:[e.jsx(N,{className:"text-xs",children:"小时"}),e.jsxs(Be,{value:w,onValueChange:Z=>{v(Z),M(Z,k,E,F)},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsx(Le,{children:Array.from({length:24},(Z,G)=>G).map(Z=>e.jsx(ne,{value:Z.toString().padStart(2,"0"),children:Z.toString().padStart(2,"0")},Z))})]})]}),e.jsxs("div",{children:[e.jsx(N,{className:"text-xs",children:"分钟"}),e.jsxs(Be,{value:k,onValueChange:Z=>{T(Z),M(w,Z,E,F)},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsx(Le,{children:Array.from({length:60},(Z,G)=>G).map(Z=>e.jsx(ne,{value:Z.toString().padStart(2,"0"),children:Z.toString().padStart(2,"0")},Z))})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-medium text-sm mb-3",children:"结束时间"}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[e.jsxs("div",{children:[e.jsx(N,{className:"text-xs",children:"小时"}),e.jsxs(Be,{value:E,onValueChange:Z=>{R(Z),M(w,k,Z,F)},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsx(Le,{children:Array.from({length:24},(Z,G)=>G).map(Z=>e.jsx(ne,{value:Z.toString().padStart(2,"0"),children:Z.toString().padStart(2,"0")},Z))})]})]}),e.jsxs("div",{children:[e.jsx(N,{className:"text-xs",children:"分钟"}),e.jsxs(Be,{value:F,onValueChange:Z=>{U(Z),M(w,k,E,Z)},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsx(Le,{children:Array.from({length:60},(Z,G)=>G).map(Z=>e.jsx(ne,{value:Z.toString().padStart(2,"0"),children:Z.toString().padStart(2,"0")},Z))})]})]})]})]})]})})]})},f=({rule:j})=>{const p=`{ target = "${j.target}", time = "${j.time}", value = ${j.value.toFixed(1)} }`;return e.jsxs(Ma,{children:[e.jsx(Da,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",children:[e.jsx(Ys,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(va,{className:"w-80 sm:w-96",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:p}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"聊天设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"talk_value",children:"聊天频率(基础值)"}),e.jsx(ce,{id:"talk_value",type:"number",step:"0.1",min:"0",max:"1",value:n.talk_value,onChange:j=>r({...n,talk_value:parseFloat(j.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"越小越沉默,范围 0-1"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"mentioned_bot_reply",checked:n.mentioned_bot_reply,onCheckedChange:j=>r({...n,mentioned_bot_reply:j})}),e.jsx(N,{htmlFor:"mentioned_bot_reply",className:"cursor-pointer",children:"启用提及必回复"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"max_context_size",children:"上下文长度"}),e.jsx(ce,{id:"max_context_size",type:"number",min:"1",value:n.max_context_size,onChange:j=>r({...n,max_context_size:parseInt(j.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"planner_smooth",children:"规划器平滑"}),e.jsx(ce,{id:"planner_smooth",type:"number",step:"1",min:"0",value:n.planner_smooth,onChange:j=>r({...n,planner_smooth:parseFloat(j.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"增大数值会减小 planner 负荷,推荐 1-5,0 为关闭"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"enable_talk_value_rules",checked:n.enable_talk_value_rules,onCheckedChange:j=>r({...n,enable_talk_value_rules:j})}),e.jsx(N,{htmlFor:"enable_talk_value_rules",className:"cursor-pointer",children:"启用动态发言频率规则"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"include_planner_reasoning",checked:n.include_planner_reasoning,onCheckedChange:j=>r({...n,include_planner_reasoning:j})}),e.jsx(N,{htmlFor:"include_planner_reasoning",className:"cursor-pointer",children:"将 planner 推理加入 replyer"})]})]})]}),n.enable_talk_value_rules&&e.jsxs("div",{className:"border-t pt-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"动态发言频率规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"按时段或聊天流ID调整发言频率,优先匹配具体聊天,再匹配全局规则"})]}),e.jsxs(b,{onClick:c,size:"sm",children:[e.jsx(cs,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),n.talk_value_rules&&n.talk_value_rules.length>0?e.jsx("div",{className:"space-y-4",children:n.talk_value_rules.map((j,p)=>e.jsxs("div",{className:"rounded-lg border p-4 bg-muted/50 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium text-muted-foreground",children:["规则 #",p+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(f,{rule:j}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsx(b,{variant:"ghost",size:"sm",children:e.jsx(Pe,{className:"h-4 w-4 text-destructive"})})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:["确定要删除规则 #",p+1," 吗?此操作无法撤销。"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>d(p),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"配置类型"}),e.jsxs(Be,{value:j.target===""?"global":"specific",onValueChange:w=>{w==="global"?h(p,"target",""):h(p,"target","qq::group")},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"global",children:"全局配置"}),e.jsx(ne,{value:"specific",children:"详细配置"})]})]})]}),j.target!==""&&(()=>{const w=j.target.split(":"),v=w[0]||"qq",k=w[1]||"",T=w[2]||"group";return e.jsxs("div",{className:"grid gap-4 p-3 sm:p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"平台"}),e.jsxs(Be,{value:v,onValueChange:E=>{h(p,"target",`${E}:${k}:${T}`)},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"qq",children:"QQ"}),e.jsx(ne,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"群 ID"}),e.jsx(ce,{value:k,onChange:E=>{h(p,"target",`${v}:${E.target.value}:${T}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"类型"}),e.jsxs(Be,{value:T,onValueChange:E=>{h(p,"target",`${v}:${k}:${E}`)},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"group",children:"群组(group)"}),e.jsx(ne,{value:"private",children:"私聊(private)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",j.target||"(未设置)"]})]})})(),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"时间段 (Time)"}),e.jsx(x,{value:j.time,onChange:w=>h(p,"time",w)}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"支持跨夜区间,例如 23:00-02:00"})]}),e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{htmlFor:`rule-value-${p}`,className:"text-xs font-medium",children:"发言频率值 (Value)"}),e.jsx(ce,{id:`rule-value-${p}`,type:"number",step:"0.01",min:"0.01",max:"1",value:j.value,onChange:w=>{const v=parseFloat(w.target.value);isNaN(v)||h(p,"value",Math.max(.01,Math.min(1,v)))},className:"w-20 h-8 text-xs"})]}),e.jsx(ka,{value:[j.value],onValueChange:w=>h(p,"value",w[0]),min:.01,max:1,step:.01,className:"w-full"}),e.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[e.jsx("span",{children:"0.01 (极少发言)"}),e.jsx("span",{children:"0.5"}),e.jsx("span",{children:"1.0 (正常)"})]})]})]})]},p))}):e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:e.jsx("p",{className:"text-sm",children:'暂无规则,点击"添加规则"按钮创建'})}),e.jsxs("div",{className:"mt-4 p-4 bg-blue-50 dark:bg-blue-950/20 border border-blue-200 dark:border-blue-800 rounded-lg",children:[e.jsx("h5",{className:"text-sm font-semibold text-blue-900 dark:text-blue-100 mb-2",children:"📝 规则说明"}),e.jsxs("ul",{className:"text-xs text-blue-800 dark:text-blue-200 space-y-1",children:[e.jsxs("li",{children:["• ",e.jsx("strong",{children:"Target 为空"}),":全局规则,对所有聊天生效"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"Target 指定"}),":仅对特定聊天流生效(格式:platform:id:type)"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"优先级"}),":先匹配具体聊天流规则,再匹配全局规则"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"时间支持跨夜"}),":例如 23:00-02:00 表示晚上11点到次日凌晨2点"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"数值范围"}),":建议 0-1,0 表示完全沉默,1 表示正常发言"]})]})]})]})]})}function M0({member:n,groupIndex:r,memberIndex:c,availableChatIds:d,onUpdate:h,onRemove:x}){const f=d.includes(n)||n==="*",[j,p]=u.useState(!f);return e.jsxs("div",{className:"flex gap-2",children:[e.jsx("div",{className:"flex-1 flex gap-2",children:j?e.jsxs(e.Fragment,{children:[e.jsx(ce,{value:n,onChange:w=>h(r,c,w.target.value),placeholder:'输入 "*" 或 "qq:123456:group"',className:"flex-1"}),d.length>0&&e.jsx(b,{size:"sm",variant:"outline",onClick:()=>p(!1),title:"切换到下拉选择",children:"下拉"})]}):e.jsxs(e.Fragment,{children:[e.jsxs(Be,{value:n,onValueChange:w=>h(r,c,w),children:[e.jsx(Re,{className:"flex-1",children:e.jsx(He,{placeholder:"选择聊天流"})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"*",children:"* (全局共享)"}),d.map((w,v)=>e.jsx(ne,{value:w,children:w},v))]})]}),e.jsx(b,{size:"sm",variant:"outline",onClick:()=>p(!0),title:"切换到手动输入",children:"输入"})]})}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(Pe,{className:"h-4 w-4"})})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:['确定要删除组成员 "',n||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>x(r,c),children:"删除"})]})]})]})]})}function D0({config:n,onChange:r}){const c=()=>{r({...n,learning_list:[...n.learning_list,["","enable","enable","1.0"]]})},d=k=>{r({...n,learning_list:n.learning_list.filter((T,E)=>E!==k)})},h=(k,T,E)=>{const R=[...n.learning_list];R[k][T]=E,r({...n,learning_list:R})},x=({rule:k})=>{const T=`["${k[0]}", "${k[1]}", "${k[2]}", "${k[3]}"]`;return e.jsxs(Ma,{children:[e.jsx(Da,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",children:[e.jsx(Ys,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(va,{className:"w-80 sm:w-96",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:T}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},f=()=>{r({...n,expression_groups:[...n.expression_groups,[]]})},j=k=>{r({...n,expression_groups:n.expression_groups.filter((T,E)=>E!==k)})},p=k=>{const T=[...n.expression_groups];T[k]=[...T[k],""],r({...n,expression_groups:T})},w=(k,T)=>{const E=[...n.expression_groups];E[k]=E[k].filter((R,F)=>F!==T),r({...n,expression_groups:E})},v=(k,T,E)=>{const R=[...n.expression_groups];R[k][T]=E,r({...n,expression_groups:R})};return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达学习配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置麦麦如何学习和使用表达方式"})]}),e.jsxs(b,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(cs,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),e.jsxs("div",{className:"space-y-4",children:[n.learning_list.map((k,T)=>{const E=n.learning_list.some((G,z)=>z!==T&&G[0]===""),R=k[0]==="",F=k[0].split(":"),U=F[0]||"qq",M=F[1]||"",Z=F[2]||"group";return e.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["规则 ",T+1," ",R&&"(全局配置)"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(x,{rule:k}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsx(b,{size:"sm",variant:"ghost",children:e.jsx(Pe,{className:"h-4 w-4"})})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:["确定要删除学习规则 ",T+1," 吗?此操作无法撤销。"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>d(T),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"配置类型"}),e.jsxs(Be,{value:R?"global":"specific",onValueChange:G=>{G==="global"?h(T,0,""):h(T,0,"qq::group")},disabled:E&&!R,children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"global",children:"全局配置"}),e.jsx(ne,{value:"specific",disabled:E&&!R,children:"详细配置"})]})]}),E&&!R&&e.jsx("p",{className:"text-xs text-amber-600",children:"已存在全局配置,无法创建新的全局配置"})]}),!R&&e.jsxs("div",{className:"grid gap-4 p-3 sm:p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"平台"}),e.jsxs(Be,{value:U,onValueChange:G=>{h(T,0,`${G}:${M}:${Z}`)},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"qq",children:"QQ"}),e.jsx(ne,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"群 ID"}),e.jsx(ce,{value:M,onChange:G=>{h(T,0,`${U}:${G.target.value}:${Z}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"类型"}),e.jsxs(Be,{value:Z,onValueChange:G=>{h(T,0,`${U}:${M}:${G}`)},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"group",children:"群组(group)"}),e.jsx(ne,{value:"private",children:"私聊(private)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",k[0]||"(未设置)"]})]}),e.jsx("div",{className:"grid gap-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(N,{className:"text-xs font-medium",children:"使用学到的表达"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦使用从聊天中学到的表达方式"})]}),e.jsx(Ge,{checked:k[1]==="enable",onCheckedChange:G=>h(T,1,G?"enable":"disable")})]})}),e.jsx("div",{className:"grid gap-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(N,{className:"text-xs font-medium",children:"学习表达"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦从聊天中学习新的表达方式"})]}),e.jsx(Ge,{checked:k[2]==="enable",onCheckedChange:G=>h(T,2,G?"enable":"disable")})]})}),e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{className:"text-xs font-medium",children:"学习强度"}),e.jsx(ce,{type:"number",step:"0.1",min:"0",max:"5",value:k[3],onChange:G=>{const z=parseFloat(G.target.value);isNaN(z)||h(T,3,Math.max(0,Math.min(5,z)).toFixed(1))},className:"w-20 h-8 text-xs"})]}),e.jsx(ka,{value:[parseFloat(k[3])||1],onValueChange:G=>h(T,3,G[0].toFixed(1)),min:0,max:5,step:.1,className:"w-full"}),e.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[e.jsx("span",{children:"0 (不学习)"}),e.jsx("span",{children:"2.5"}),e.jsx("span",{children:"5.0 (快速学习)"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"影响学习频率,最短学习间隔 = 300/学习强度(秒)"})]})]})]},T)}),n.learning_list.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无学习规则,点击"添加规则"开始配置'})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达反思配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置麦麦主动向管理员询问表达方式是否合适的功能"})]}),e.jsx(Ge,{checked:n.reflect,onCheckedChange:k=>r({...n,reflect:k})})]}),n.reflect&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsx("span",{className:"text-sm font-medium",children:"反思操作员"})}),e.jsx("div",{className:"space-y-4",children:(()=>{const T=(n.reflect_operator_id||"").split(":"),E=T[0]||"qq",R=T[1]||"",F=T[2]||"private";return e.jsxs("div",{className:"grid gap-4 p-3 sm:p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"平台"}),e.jsxs(Be,{value:E,onValueChange:U=>{r({...n,reflect_operator_id:`${U}:${R}:${F}`})},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"qq",children:"QQ"}),e.jsx(ne,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"用户/群 ID"}),e.jsx(ce,{value:R,onChange:U=>{r({...n,reflect_operator_id:`${E}:${U.target.value}:${F}`})},placeholder:"输入 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"类型"}),e.jsxs(Be,{value:F,onValueChange:U=>{r({...n,reflect_operator_id:`${E}:${R}:${U}`})},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"private",children:"私聊(private)"}),e.jsx(ne,{value:"group",children:"群组(group)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前操作员 ID:",n.reflect_operator_id||"(未设置)"]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦会向此操作员询问表达方式是否合适"})]})})()})]}),e.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-sm font-medium",children:"允许反思的聊天流"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"只有在此列表中的聊天流才会提出问题并跟踪。如果列表为空,则所有聊天流都可以进行表达反思"})]}),e.jsxs(b,{onClick:()=>{r({...n,allow_reflect:[...n.allow_reflect||[],"qq::group"]})},size:"sm",variant:"outline",children:[e.jsx(cs,{className:"h-4 w-4 mr-1"}),"添加聊天流"]})]}),e.jsxs("div",{className:"space-y-2",children:[(n.allow_reflect||[]).map((k,T)=>{const E=k.split(":"),R=E[0]||"qq",F=E[1]||"",U=E[2]||"group";return e.jsxs("div",{className:"flex items-center gap-2 p-3 rounded-lg bg-muted/50",children:[e.jsxs(Be,{value:R,onValueChange:M=>{const Z=[...n.allow_reflect];Z[T]=`${M}:${F}:${U}`,r({...n,allow_reflect:Z})},children:[e.jsx(Re,{className:"w-24",children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"qq",children:"QQ"}),e.jsx(ne,{value:"wx",children:"微信"})]})]}),e.jsx(ce,{value:F,onChange:M=>{const Z=[...n.allow_reflect];Z[T]=`${R}:${M.target.value}:${U}`,r({...n,allow_reflect:Z})},placeholder:"ID",className:"flex-1 font-mono text-sm"}),e.jsxs(Be,{value:U,onValueChange:M=>{const Z=[...n.allow_reflect];Z[T]=`${R}:${F}:${M}`,r({...n,allow_reflect:Z})},children:[e.jsx(Re,{className:"w-32",children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"group",children:"群组"}),e.jsx(ne,{value:"private",children:"私聊"})]})]}),e.jsx(b,{onClick:()=>{r({...n,allow_reflect:n.allow_reflect.filter((M,Z)=>Z!==T)})},size:"sm",variant:"ghost",children:e.jsx(Pe,{className:"h-4 w-4"})})]},T)}),(!n.allow_reflect||n.allow_reflect.length===0)&&e.jsx("div",{className:"text-center py-4 text-muted-foreground text-sm",children:"列表为空,所有聊天流都可以进行表达反思"})]})]})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达共享组配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置不同聊天流之间如何共享学到的表达方式"})]}),e.jsxs(b,{onClick:f,size:"sm",variant:"outline",children:[e.jsx(cs,{className:"h-4 w-4 mr-1"}),"添加共享组"]})]}),e.jsxs("div",{className:"space-y-4",children:[n.expression_groups.map((k,T)=>{const E=n.learning_list.map(R=>R[0]).filter(R=>R!=="");return e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["共享组 ",T+1,k.length===1&&k[0]==="*"&&"(全局共享)"]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(b,{onClick:()=>p(T),size:"sm",variant:"outline",children:e.jsx(cs,{className:"h-4 w-4"})}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsx(b,{size:"sm",variant:"ghost",children:e.jsx(Pe,{className:"h-4 w-4"})})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:["确定要删除共享组 ",T+1," 吗?此操作无法撤销。"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>j(T),children:"删除"})]})]})]})]})]}),e.jsx("div",{className:"space-y-2",children:k.map((R,F)=>e.jsx(M0,{member:R,groupIndex:T,memberIndex:F,availableChatIds:E,onUpdate:v,onRemove:w},`${T}-${F}`))}),e.jsx("p",{className:"text-xs text-muted-foreground",children:'提示:可以从下拉框选择已配置的聊天流,或手动输入。输入 "*" 启用全局共享'})]},T)}),n.expression_groups.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无共享组,点击"添加共享组"开始配置'})]})]})})]})}function O0({emojiConfig:n,memoryConfig:r,toolConfig:c,onEmojiChange:d,onMemoryChange:h,onToolChange:x}){return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"工具设置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"enable_tool",checked:c.enable_tool,onCheckedChange:f=>x({...c,enable_tool:f})}),e.jsx(N,{htmlFor:"enable_tool",className:"cursor-pointer",children:"启用工具系统"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"允许麦麦使用各种工具来增强功能"})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"记忆设置"}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"max_agent_iterations",children:"记忆思考深度"}),e.jsx(ce,{id:"max_agent_iterations",type:"number",min:"1",value:r.max_agent_iterations,onChange:f=>h({...r,max_agent_iterations:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"最低为 1(不深入思考)"})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"表情包设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"emoji_chance",children:"表情包激活概率"}),e.jsx(ce,{id:"emoji_chance",type:"number",step:"0.1",min:"0",max:"1",value:n.emoji_chance,onChange:f=>d({...n,emoji_chance:parseFloat(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"范围 0-1,越大越容易发送表情包"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"max_reg_num",children:"最大注册数量"}),e.jsx(ce,{id:"max_reg_num",type:"number",min:"1",value:n.max_reg_num,onChange:f=>d({...n,max_reg_num:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦最多可以注册的表情包数量"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),e.jsx(ce,{id:"check_interval",type:"number",min:"1",value:n.check_interval,onChange:f=>d({...n,check_interval:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包(注册、破损、删除)的时间间隔"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"do_replace",checked:n.do_replace,onCheckedChange:f=>d({...n,do_replace:f})}),e.jsx(N,{htmlFor:"do_replace",className:"cursor-pointer",children:"达到最大数量时替换表情包"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"steal_emoji",checked:n.steal_emoji,onCheckedChange:f=>d({...n,steal_emoji:f})}),e.jsx(N,{htmlFor:"steal_emoji",className:"cursor-pointer",children:"偷取表情包"})]}),e.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"允许麦麦将看到的表情包据为己有"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"content_filtration",checked:n.content_filtration,onCheckedChange:f=>d({...n,content_filtration:f})}),e.jsx(N,{htmlFor:"content_filtration",className:"cursor-pointer",children:"启用表情包过滤"})]}),n.content_filtration&&e.jsxs("div",{className:"grid gap-2 pl-6 border-l-2 border-primary/20",children:[e.jsx(N,{htmlFor:"filtration_prompt",children:"过滤要求"}),e.jsx(ce,{id:"filtration_prompt",value:n.filtration_prompt,onChange:f=>d({...n,filtration_prompt:f.target.value}),placeholder:"符合公序良俗"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"只有符合此要求的表情包才会被保存"})]})]})]})})]})}function R0({keywordReactionConfig:n,responsePostProcessConfig:r,chineseTypoConfig:c,responseSplitterConfig:d,onKeywordReactionChange:h,onResponsePostProcessChange:x,onChineseTypoChange:f,onResponseSplitterChange:j}){const p=()=>{h({...n,regex_rules:[...n.regex_rules,{regex:[""],reaction:""}]})},w=z=>{h({...n,regex_rules:n.regex_rules.filter((B,X)=>X!==z)})},v=(z,B,X)=>{const S=[...n.regex_rules];B==="regex"&&typeof X=="string"?S[z]={...S[z],regex:[X]}:B==="reaction"&&typeof X=="string"&&(S[z]={...S[z],reaction:X}),h({...n,regex_rules:S})},k=({regex:z,reaction:B,onRegexChange:X,onReactionChange:S})=>{const[O,se]=u.useState(!1),[he,ye]=u.useState(""),[be,pe]=u.useState(null),[je,_e]=u.useState(""),[y,q]=u.useState({}),[H,ie]=u.useState(""),_=u.useRef(null),[me,xe]=u.useState("build"),Q=L=>L.replace(/\(\?P<([^>]+)>/g,"(?<$1>"),de=(L,$=0)=>{const D=_.current;if(!D)return;const ee=D.selectionStart||0,Ne=D.selectionEnd||0,ze=z.substring(0,ee)+L+z.substring(Ne);X(ze),setTimeout(()=>{const We=ee+L.length+$;D.setSelectionRange(We,We),D.focus()},0)};u.useEffect(()=>{if(!z||!he){pe(null),q({}),ie(B),_e("");return}try{const L=Q(z),$=new RegExp(L,"g"),D=he.match($);pe(D),_e("");const Ne=new RegExp(L).exec(he);if(Ne&&Ne.groups){q(Ne.groups);let ze=B;Object.entries(Ne.groups).forEach(([We,Xe])=>{ze=ze.replace(new RegExp(`\\[${We}\\]`,"g"),Xe||"")}),ie(ze)}else q({}),ie(B)}catch(L){_e(L.message),pe(null),q({}),ie(B)}},[z,he,B]);const ge=()=>{if(!he||!be||be.length===0)return e.jsx("span",{className:"text-muted-foreground",children:he||"请输入测试文本"});try{const L=Q(z),$=new RegExp(L,"g");let D=0;const ee=[];let Ne;for(;(Ne=$.exec(he))!==null;)Ne.index>D&&ee.push(e.jsx("span",{children:he.substring(D,Ne.index)},`text-${D}`)),ee.push(e.jsx("span",{className:"bg-yellow-200 dark:bg-yellow-900 font-semibold",children:Ne[0]},`match-${Ne.index}`)),D=Ne.index+Ne[0].length;return D)",desc:"Python风格命名捕获组",moveCursor:-1},{label:"非捕获组",pattern:"(?:)",desc:"分组但不保存匹配结果",moveCursor:-1}]},{category:"字符类",items:[{label:"字符集",pattern:"[]",desc:"匹配括号内的任意字符",moveCursor:-1},{label:"排除字符",pattern:"[^]",desc:"匹配不在括号内的字符",moveCursor:-1},{label:"范围",pattern:"[a-z]",desc:"匹配a到z的字符"},{label:"中文字符",pattern:"[\\u4e00-\\u9fa5]",desc:"匹配中文汉字"}]},{category:"常用模板",items:[{label:"捕获词语",pattern:"(?P\\S+)",desc:"捕获一个词语"},{label:"捕获句子",pattern:"(?P.+)",desc:"捕获整个句子"},{label:"捕获数字",pattern:"(?P\\d+)",desc:"捕获一个或多个数字"},{label:"可选词语",pattern:"(?:词语1|词语2)",desc:"匹配多个可选项之一"}]}];return e.jsxs(Qt,{open:O,onOpenChange:se,children:[e.jsx(Vu,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",children:[e.jsx(Uu,{className:"h-4 w-4 mr-1"}),"正则编辑器"]})}),e.jsxs(Ut,{className:"max-w-[95vw] sm:max-w-[900px] max-h-[90vh]",children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:"正则表达式编辑器"}),e.jsx(ss,{className:"text-sm",children:"使用可视化工具构建正则表达式,并实时测试效果"})]}),e.jsx(Ie,{className:"max-h-[calc(90vh-120px)]",children:e.jsxs(Aa,{value:me,onValueChange:L=>xe(L),className:"w-full",children:[e.jsxs(ja,{className:"grid w-full grid-cols-2",children:[e.jsx(st,{value:"build",children:"🔧 构建器"}),e.jsx(st,{value:"test",children:"🧪 测试器"})]}),e.jsxs(_t,{value:"build",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{className:"text-sm font-medium",children:"正则表达式"}),e.jsx(ce,{ref:_,value:z,onChange:L=>X(L.target.value),className:"font-mono text-sm",placeholder:"点击下方按钮构建正则表达式..."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{className:"text-sm font-medium",children:"Reaction 内容"}),e.jsx(Ot,{value:B,onChange:L=>S(L.target.value),placeholder:"使用 [捕获组名] 引用捕获的内容...",rows:3,className:"text-sm"})]}),e.jsxs("div",{className:"space-y-4 border-t pt-4",children:[le.map(L=>e.jsxs("div",{className:"space-y-2",children:[e.jsx("h5",{className:"text-xs font-semibold text-primary",children:L.category}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:L.items.map($=>e.jsx(b,{variant:"outline",size:"sm",className:"justify-start h-auto py-2 px-3",onClick:()=>de($.pattern,$.moveCursor||0),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsxs("div",{className:"flex items-center gap-2 w-full",children:[e.jsx("span",{className:"text-xs font-medium",children:$.label}),e.jsx("code",{className:"ml-auto text-xs bg-muted px-1.5 py-0.5 rounded font-mono",children:$.pattern})]}),e.jsx("span",{className:"text-xs text-muted-foreground mt-0.5",children:$.desc})]})},$.label))})]},L.category)),e.jsxs("div",{className:"space-y-2 border-t pt-4",children:[e.jsx("h5",{className:"text-xs font-semibold text-primary",children:"完整示例模板"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>X("^(?P\\S{1,20})是这样的$"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsxs("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:["^(?P\\S","{1,20}",")是这样的$"]}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「某事物是这样的」并捕获事物名称"})]})}),e.jsx(b,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>X("(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「我没要求你做某事」并捕获具体行为"})]})}),e.jsx(b,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>X("(?P.+?)(?:是|为什么|怎么)"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?P.+?)(?:是|为什么|怎么)"}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"捕获问题主题词"})]})})]})]})]}),e.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 使用提示"}),e.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"点击输入框设置光标位置,然后点击按钮插入模式"}),e.jsxs("li",{children:["命名捕获组格式:",e.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"(?P<名称>模式)"})]}),e.jsxs("li",{children:["在 reaction 中使用 ",e.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"[名称]"})," 引用捕获的内容"]}),e.jsx("li",{children:"切换到测试器标签页验证正则表达式效果"})]})]})]}),e.jsxs(_t,{value:"test",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{className:"text-sm font-medium",children:"当前正则表达式"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:z||"(未设置)"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"test-text",className:"text-sm font-medium",children:"测试文本"}),e.jsx(Ot,{id:"test-text",value:he,onChange:L=>ye(L.target.value),placeholder:`在此输入要测试的文本... +例如:打游戏是这样的`,className:"min-h-[100px] text-sm"})]}),je&&e.jsxs("div",{className:"rounded-md bg-destructive/10 border border-destructive/20 p-3",children:[e.jsx("p",{className:"text-sm text-destructive font-medium",children:"正则表达式错误"}),e.jsx("p",{className:"text-xs text-destructive/80 mt-1",children:je})]}),!je&&he&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"flex items-center gap-2",children:be&&be.length>0?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-green-500"}),e.jsxs("span",{className:"text-sm font-medium text-green-600 dark:text-green-400",children:["匹配成功 (",be.length," 处)"]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-gray-400"}),e.jsx("span",{className:"text-sm font-medium text-muted-foreground",children:"无匹配"})]})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{className:"text-sm font-medium",children:"匹配高亮"}),e.jsx(Ie,{className:"h-40 rounded-md bg-muted p-3",children:e.jsx("div",{className:"text-sm break-words",children:ge()})})]}),Object.keys(y).length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{className:"text-sm font-medium",children:"命名捕获组"}),e.jsx(Ie,{className:"h-32 rounded-md border p-3",children:e.jsx("div",{className:"space-y-2",children:Object.entries(y).map(([L,$])=>e.jsxs("div",{className:"flex items-start gap-2 text-sm",children:[e.jsxs("span",{className:"font-mono font-semibold text-primary min-w-[80px]",children:["[",L,"]"]}),e.jsx("span",{className:"text-muted-foreground",children:"="}),e.jsx("span",{className:"font-mono bg-muted px-2 py-0.5 rounded",children:$})]},L))})})]}),Object.keys(y).length>0&&B&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{className:"text-sm font-medium",children:"Reaction 替换预览"}),e.jsx(Ie,{className:"h-48 rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3",children:e.jsx("div",{className:"text-sm break-words",children:H})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"reaction 中的 [name] 已被替换为对应的捕获组值"})]})]}),e.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 测试说明"}),e.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"匹配的文本会以黄色背景高亮显示"}),e.jsx("li",{children:"命名捕获组的值会显示在下方列表中"}),e.jsx("li",{children:"Reaction 替换预览显示最终生成的反应内容"}),e.jsx("li",{children:"如需修改正则,切换回构建器标签页"})]})]})]})]})})]})]})},T=()=>{h({...n,keyword_rules:[...n.keyword_rules,{keywords:[],reaction:""}]})},E=z=>{h({...n,keyword_rules:n.keyword_rules.filter((B,X)=>X!==z)})},R=(z,B,X)=>{const S=[...n.keyword_rules];typeof X=="string"&&(S[z]={...S[z],reaction:X}),h({...n,keyword_rules:S})},F=z=>{const B=[...n.keyword_rules];B[z]={...B[z],keywords:[...B[z].keywords||[],""]},h({...n,keyword_rules:B})},U=(z,B)=>{const X=[...n.keyword_rules];X[z]={...X[z],keywords:(X[z].keywords||[]).filter((S,O)=>O!==B)},h({...n,keyword_rules:X})},M=(z,B,X)=>{const S=[...n.keyword_rules],O=[...S[z].keywords||[]];O[B]=X,S[z]={...S[z],keywords:O},h({...n,keyword_rules:S})},Z=({rule:z})=>{const B=`{ regex = [${(z.regex||[]).map(X=>`"${X}"`).join(", ")}], reaction = "${z.reaction}" }`;return e.jsxs(Ma,{children:[e.jsx(Da,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",children:[e.jsx(Ys,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(va,{className:"w-[95vw] sm:w-[500px]",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx(Ie,{className:"h-60 rounded-md bg-muted p-3",children:e.jsx("pre",{className:"font-mono text-xs break-all",children:B})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},G=({rule:z})=>{const B=`[[keyword_reaction.keyword_rules]] +keywords = [${(z.keywords||[]).map(X=>`"${X}"`).join(", ")}] +reaction = "${z.reaction}"`;return e.jsxs(Ma,{children:[e.jsx(Da,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",children:[e.jsx(Ys,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(va,{className:"w-[95vw] sm:w-[500px]",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx(Ie,{className:"h-60 rounded-md bg-muted p-3",children:e.jsx("pre",{className:"font-mono text-xs whitespace-pre-wrap break-all",children:B})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"关键词反应配置"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"配置触发特定反应的关键词和正则表达式规则"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"正则表达式规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用正则表达式匹配消息内容"})]}),e.jsxs(b,{onClick:p,size:"sm",variant:"outline",children:[e.jsx(cs,{className:"h-4 w-4 mr-1"}),"添加正则规则"]})]}),e.jsxs("div",{className:"space-y-3",children:[n.regex_rules.map((z,B)=>e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["正则规则 ",B+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{regex:z.regex&&z.regex[0]||"",reaction:z.reaction,onRegexChange:X=>v(B,"regex",X),onReactionChange:X=>v(B,"reaction",X)}),e.jsx(Z,{rule:z}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsx(b,{size:"sm",variant:"ghost",children:e.jsx(Pe,{className:"h-4 w-4"})})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:["确定要删除正则规则 ",B+1," 吗?此操作无法撤销。"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>w(B),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"正则表达式(Python 语法)"}),e.jsx(ce,{value:z.regex&&z.regex[0]||"",onChange:X=>v(B,"regex",X.target.value),placeholder:"例如:^(?P\\\\S{1,20})是这样的$ (点击正则编辑器按钮可视化构建)",className:"font-mono text-sm"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:'支持命名捕获组 (?Ppattern),可在 reaction 中使用 [name] 引用。点击"正则编辑器"可视化构建和测试!'})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"反应内容"}),e.jsx(Ot,{value:z.reaction,onChange:X=>v(B,"reaction",X.target.value),placeholder:`触发后麦麦的反应... +可以使用 [捕获组名] 来引用正则表达式中的内容`,rows:3,className:"text-sm"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"使用 [捕获组名] 引用正则表达式中的命名捕获组,例如 [n] 会被替换为捕获的内容"})]})]})]},B)),n.regex_rules.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无正则规则,点击"添加正则规则"开始配置'})]})]}),e.jsxs("div",{className:"space-y-4 border-t pt-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"关键词规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用关键词列表匹配消息内容"})]}),e.jsxs(b,{onClick:T,size:"sm",variant:"outline",children:[e.jsx(cs,{className:"h-4 w-4 mr-1"}),"添加关键词规则"]})]}),e.jsxs("div",{className:"space-y-3",children:[n.keyword_rules.map((z,B)=>e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["关键词规则 ",B+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(G,{rule:z}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsx(b,{size:"sm",variant:"ghost",children:e.jsx(Pe,{className:"h-4 w-4"})})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:["确定要删除关键词规则 ",B+1," 吗?此操作无法撤销。"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>E(B),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{className:"text-xs font-medium",children:"关键词列表"}),e.jsxs(b,{onClick:()=>F(B),size:"sm",variant:"ghost",children:[e.jsx(cs,{className:"h-3 w-3 mr-1"}),"添加关键词"]})]}),e.jsxs("div",{className:"space-y-2",children:[(z.keywords||[]).map((X,S)=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{value:X,onChange:O=>M(B,S,O.target.value),placeholder:"关键词",className:"flex-1"}),e.jsx(b,{onClick:()=>U(B,S),size:"sm",variant:"ghost",children:e.jsx(Pe,{className:"h-4 w-4"})})]},S)),(!z.keywords||z.keywords.length===0)&&e.jsx("p",{className:"text-xs text-muted-foreground text-center py-2",children:'暂无关键词,点击"添加关键词"开始配置'})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"反应内容"}),e.jsx(Ot,{value:z.reaction,onChange:X=>R(B,"reaction",X.target.value),placeholder:"触发后麦麦的反应...",rows:3,className:"text-sm"})]})]})]},B)),n.keyword_rules.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无关键词规则,点击"添加关键词规则"开始配置'})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"回复后处理配置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"enable_response_post_process",checked:r.enable_response_post_process,onCheckedChange:z=>x({...r,enable_response_post_process:z})}),e.jsx(N,{htmlFor:"enable_response_post_process",className:"cursor-pointer",children:"启用回复后处理"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"包括错别字生成器和回复分割器"})]}),r.enable_response_post_process&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"border-t pt-6 space-y-4",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[e.jsx(Ge,{id:"enable_chinese_typo",checked:c.enable,onCheckedChange:z=>f({...c,enable:z})}),e.jsx(N,{htmlFor:"enable_chinese_typo",className:"cursor-pointer font-semibold",children:"中文错别字生成器"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"为回复添加随机错别字,让麦麦的回复更自然"}),c.enable&&e.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"error_rate",className:"text-xs font-medium",children:"单字替换概率"}),e.jsx(ce,{id:"error_rate",type:"number",step:"0.001",min:"0",max:"1",value:c.error_rate,onChange:z=>f({...c,error_rate:parseFloat(z.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"min_freq",className:"text-xs font-medium",children:"最小字频阈值"}),e.jsx(ce,{id:"min_freq",type:"number",min:"0",value:c.min_freq,onChange:z=>f({...c,min_freq:parseInt(z.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"tone_error_rate",className:"text-xs font-medium",children:"声调错误概率"}),e.jsx(ce,{id:"tone_error_rate",type:"number",step:"0.01",min:"0",max:"1",value:c.tone_error_rate,onChange:z=>f({...c,tone_error_rate:parseFloat(z.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"word_replace_rate",className:"text-xs font-medium",children:"整词替换概率"}),e.jsx(ce,{id:"word_replace_rate",type:"number",step:"0.001",min:"0",max:"1",value:c.word_replace_rate,onChange:z=>f({...c,word_replace_rate:parseFloat(z.target.value)})})]})]})]})}),e.jsx("div",{className:"border-t pt-6 space-y-4",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[e.jsx(Ge,{id:"enable_response_splitter",checked:d.enable,onCheckedChange:z=>j({...d,enable:z})}),e.jsx(N,{htmlFor:"enable_response_splitter",className:"cursor-pointer font-semibold",children:"回复分割器"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"控制回复的长度和句子数量"}),d.enable&&e.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"max_length",className:"text-xs font-medium",children:"最大长度"}),e.jsx(ce,{id:"max_length",type:"number",min:"1",value:d.max_length,onChange:z=>j({...d,max_length:parseInt(z.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大字符数"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"max_sentence_num",className:"text-xs font-medium",children:"最大句子数"}),e.jsx(ce,{id:"max_sentence_num",type:"number",min:"1",value:d.max_sentence_num,onChange:z=>j({...d,max_sentence_num:parseInt(z.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大句子数量"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"enable_kaomoji_protection",checked:d.enable_kaomoji_protection,onCheckedChange:z=>j({...d,enable_kaomoji_protection:z})}),e.jsx(N,{htmlFor:"enable_kaomoji_protection",className:"cursor-pointer",children:"启用颜文字保护"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"enable_overflow_return_all",checked:d.enable_overflow_return_all,onCheckedChange:z=>j({...d,enable_overflow_return_all:z})}),e.jsx(N,{htmlFor:"enable_overflow_return_all",className:"cursor-pointer",children:"超出时一次性返回全部"})]}),e.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"当句子数量超出限制时,合并后一次性返回所有内容"})]})]})})]})]})]})}function L0({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"情绪设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{checked:n.enable_mood,onCheckedChange:c=>r({...n,enable_mood:c})}),e.jsx(N,{className:"cursor-pointer",children:"启用情绪系统"})]}),n.enable_mood&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"情绪更新阈值"}),e.jsx(ce,{type:"number",min:"1",value:n.mood_update_threshold,onChange:c=>r({...n,mood_update_threshold:parseInt(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"越高,更新越慢"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"情感特征"}),e.jsx(Ot,{value:n.emotion_style,onChange:c=>r({...n,emotion_style:c.target.value}),placeholder:"影响情绪的变化情况",rows:2})]})]})]})]})}function U0({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"语音设置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{checked:n.enable_asr,onCheckedChange:c=>r({...n,enable_asr:c})}),e.jsx(N,{className:"cursor-pointer",children:"启用语音识别"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"启用后麦麦可以识别语音消息,需要配置语音识别模型"})]})}function B0({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{checked:n.enable,onCheckedChange:c=>r({...n,enable:c})}),e.jsx(N,{className:"cursor-pointer",children:"启用 LPMM 知识库"})]}),n.enable&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"LPMM 模式"}),e.jsxs(Be,{value:n.lpmm_mode,onValueChange:c=>r({...n,lpmm_mode:c}),children:[e.jsx(Re,{children:e.jsx(He,{placeholder:"选择 LPMM 模式"})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"classic",children:"经典模式"}),e.jsx(ne,{value:"agent",children:"Agent 模式"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"同义词搜索 TopK"}),e.jsx(ce,{type:"number",min:"1",value:n.rag_synonym_search_top_k,onChange:c=>r({...n,rag_synonym_search_top_k:parseInt(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"同义词阈值"}),e.jsx(ce,{type:"number",step:"0.1",min:"0",max:"1",value:n.rag_synonym_threshold,onChange:c=>r({...n,rag_synonym_threshold:parseFloat(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"实体提取线程数"}),e.jsx(ce,{type:"number",min:"1",value:n.info_extraction_workers,onChange:c=>r({...n,info_extraction_workers:parseInt(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"嵌入向量维度"}),e.jsx(ce,{type:"number",min:"1",value:n.embedding_dimension,onChange:c=>r({...n,embedding_dimension:parseInt(c.target.value)})})]})]})]})]})]})}function H0({config:n,onChange:r}){const[c,d]=u.useState(""),[h,x]=u.useState("WARNING"),f=()=>{c&&!n.suppress_libraries.includes(c)&&(r({...n,suppress_libraries:[...n.suppress_libraries,c]}),d(""))},j=E=>{r({...n,suppress_libraries:n.suppress_libraries.filter(R=>R!==E)})},p=()=>{c&&!n.library_log_levels[c]&&(r({...n,library_log_levels:{...n.library_log_levels,[c]:h}}),d(""),x("WARNING"))},w=E=>{const R={...n.library_log_levels};delete R[E],r({...n,library_log_levels:R})},v=["DEBUG","INFO","WARNING","ERROR","CRITICAL"],k=["FULL","compact","lite"],T=["none","title","full"];return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"日志配置"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"日期格式"}),e.jsx(ce,{value:n.date_style,onChange:E=>r({...n,date_style:E.target.value}),placeholder:"例如: m-d H:i:s"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"m=月, d=日, H=时, i=分, s=秒"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"日志级别样式"}),e.jsxs(Be,{value:n.log_level_style,onValueChange:E=>r({...n,log_level_style:E}),children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsx(Le,{children:k.map(E=>e.jsx(ne,{value:E,children:E},E))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"日志文本颜色"}),e.jsxs(Be,{value:n.color_text,onValueChange:E=>r({...n,color_text:E}),children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsx(Le,{children:T.map(E=>e.jsx(ne,{value:E,children:E},E))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"全局日志级别"}),e.jsxs(Be,{value:n.log_level,onValueChange:E=>r({...n,log_level:E}),children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsx(Le,{children:v.map(E=>e.jsx(ne,{value:E,children:E},E))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"控制台日志级别"}),e.jsxs(Be,{value:n.console_log_level,onValueChange:E=>r({...n,console_log_level:E}),children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsx(Le,{children:v.map(E=>e.jsx(ne,{value:E,children:E},E))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"文件日志级别"}),e.jsxs(Be,{value:n.file_log_level,onValueChange:E=>r({...n,file_log_level:E}),children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsx(Le,{children:v.map(E=>e.jsx(ne,{value:E,children:E},E))})]})]})]})]}),e.jsxs("div",{children:[e.jsx(N,{className:"mb-2 block",children:"完全屏蔽的库"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(ce,{value:c,onChange:E=>d(E.target.value),placeholder:"输入库名",className:"flex-1",onKeyDown:E=>{E.key==="Enter"&&(E.preventDefault(),f())}}),e.jsx(b,{onClick:f,size:"sm",className:"flex-shrink-0",children:e.jsx(cs,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:n.suppress_libraries.map(E=>e.jsxs("div",{className:"flex items-center gap-1 bg-secondary px-3 py-1 rounded-md",children:[e.jsx("span",{className:"text-sm",children:E}),e.jsx(b,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0",onClick:()=>j(E),children:e.jsx(Pe,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},E))})]}),e.jsxs("div",{children:[e.jsx(N,{className:"mb-2 block",children:"特定库的日志级别"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(ce,{value:c,onChange:E=>d(E.target.value),placeholder:"输入库名",className:"flex-1"}),e.jsxs(Be,{value:h,onValueChange:x,children:[e.jsx(Re,{className:"w-32",children:e.jsx(He,{})}),e.jsx(Le,{children:v.map(E=>e.jsx(ne,{value:E,children:E},E))})]}),e.jsx(b,{onClick:p,size:"sm",children:e.jsx(cs,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"space-y-2",children:Object.entries(n.library_log_levels).map(([E,R])=>e.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[e.jsx("span",{className:"text-sm font-medium",children:E}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:R}),e.jsx(b,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>w(E),children:e.jsx(Pe,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]})]},E))})]})]})}function q0({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"调试配置"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(N,{children:"显示 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否在日志中显示提示词"})]}),e.jsx(Ge,{checked:n.show_prompt,onCheckedChange:c=>r({...n,show_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(N,{children:"显示回复器 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的提示词"})]}),e.jsx(Ge,{checked:n.show_replyer_prompt,onCheckedChange:c=>r({...n,show_replyer_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(N,{children:"显示回复器推理"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的推理过程"})]}),e.jsx(Ge,{checked:n.show_replyer_reasoning,onCheckedChange:c=>r({...n,show_replyer_reasoning:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(N,{children:"显示 Jargon Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示术语相关的提示词"})]}),e.jsx(Ge,{checked:n.show_jargon_prompt,onCheckedChange:c=>r({...n,show_jargon_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(N,{children:"显示记忆检索 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示记忆检索相关的提示词"})]}),e.jsx(Ge,{checked:n.show_memory_prompt,onCheckedChange:c=>r({...n,show_memory_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(N,{children:"显示 Planner Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 Planner 的提示词和原始返回结果"})]}),e.jsx(Ge,{checked:n.show_planner_prompt,onCheckedChange:c=>r({...n,show_planner_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(N,{children:"显示 LPMM 相关文段"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 LPMM 知识库找到的相关文段日志"})]}),e.jsx(Ge,{checked:n.show_lpmm_paragraph,onCheckedChange:c=>r({...n,show_lpmm_paragraph:c})})]})]})]})}function G0({config:n,onChange:r}){const[c,d]=u.useState(""),h=()=>{c&&!n.auth_token.includes(c)&&(r({...n,auth_token:[...n.auth_token,c]}),d(""))},x=f=>{r({...n,auth_token:n.auth_token.filter((j,p)=>p!==f)})};return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"MaimMessage 服务配置"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(N,{children:"启用自定义服务器"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否使用自定义的 MaimMessage 服务器"})]}),e.jsx(Ge,{checked:n.use_custom,onCheckedChange:f=>r({...n,use_custom:f})})]}),n.use_custom&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"主机地址"}),e.jsx(ce,{value:n.host,onChange:f=>r({...n,host:f.target.value}),placeholder:"127.0.0.1"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"端口号"}),e.jsx(ce,{type:"number",value:n.port,onChange:f=>r({...n,port:parseInt(f.target.value)}),placeholder:"8090"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"连接模式"}),e.jsxs(Be,{value:n.mode,onValueChange:f=>r({...n,mode:f}),children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"ws",children:"WebSocket (ws)"}),e.jsx(ne,{value:"tcp",children:"TCP"})]})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{checked:n.use_wss,onCheckedChange:f=>r({...n,use_wss:f}),disabled:n.mode!=="ws"}),e.jsx(N,{children:"使用 WSS 安全连接"})]})]}),n.use_wss&&n.mode==="ws"&&e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"SSL 证书文件路径"}),e.jsx(ce,{value:n.cert_file,onChange:f=>r({...n,cert_file:f.target.value}),placeholder:"cert.pem"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"SSL 密钥文件路径"}),e.jsx(ce,{value:n.key_file,onChange:f=>r({...n,key_file:f.target.value}),placeholder:"key.pem"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx(N,{className:"mb-2 block",children:"认证令牌"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:"用于 API 验证,为空则不启用验证"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(ce,{value:c,onChange:f=>d(f.target.value),placeholder:"输入认证令牌",onKeyDown:f=>{f.key==="Enter"&&(f.preventDefault(),h())}}),e.jsx(b,{onClick:h,size:"sm",children:e.jsx(cs,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"space-y-2",children:n.auth_token.map((f,j)=>e.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[e.jsx("span",{className:"text-sm font-mono",children:f}),e.jsx(b,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>x(j),children:e.jsx(Pe,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},j))})]})]})}function V0({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"统计信息"}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(N,{children:"启用统计信息发送"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"发送匿名统计信息,帮助我们了解全球有多少只麦麦在运行"})]}),e.jsx(Ge,{checked:n.enable,onCheckedChange:c=>r({...n,enable:c})})]})]})}const ai=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{className:"relative w-full overflow-auto",children:e.jsx("table",{ref:c,className:K("w-full caption-bottom text-sm",n),...r})}));ai.displayName="Table";const li=u.forwardRef(({className:n,...r},c)=>e.jsx("thead",{ref:c,className:K("[&_tr]:border-b",n),...r}));li.displayName="TableHeader";const ni=u.forwardRef(({className:n,...r},c)=>e.jsx("tbody",{ref:c,className:K("[&_tr:last-child]:border-0",n),...r}));ni.displayName="TableBody";const F0=u.forwardRef(({className:n,...r},c)=>e.jsx("tfoot",{ref:c,className:K("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",n),...r}));F0.displayName="TableFooter";const gs=u.forwardRef(({className:n,...r},c)=>e.jsx("tr",{ref:c,className:K("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",n),...r}));gs.displayName="TableRow";const at=u.forwardRef(({className:n,...r},c)=>e.jsx("th",{ref:c,className:K("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",n),...r}));at.displayName="TableHead";const $e=u.forwardRef(({className:n,...r},c)=>e.jsx("td",{ref:c,className:K("px-4 py-3 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",n),...r}));$e.displayName="TableCell";const $0=u.forwardRef(({className:n,...r},c)=>e.jsx("caption",{ref:c,className:K("mt-4 text-sm text-muted-foreground",n),...r}));$0.displayName="TableCaption";const ao=u.forwardRef(({className:n,...r},c)=>e.jsx(Rs,{ref:c,className:K("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",n),...r}));ao.displayName=Rs.displayName;const lo=u.forwardRef(({className:n,...r},c)=>e.jsxs("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[e.jsx(Os,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),e.jsx(Rs.Input,{ref:c,className:K("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",n),...r})]}));lo.displayName=Rs.Input.displayName;const no=u.forwardRef(({className:n,...r},c)=>e.jsx(Rs.List,{ref:c,className:K("max-h-[300px] overflow-y-auto overflow-x-hidden",n),...r}));no.displayName=Rs.List.displayName;const io=u.forwardRef((n,r)=>e.jsx(Rs.Empty,{ref:r,className:"py-6 text-center text-sm",...n}));io.displayName=Rs.Empty.displayName;const hr=u.forwardRef(({className:n,...r},c)=>e.jsx(Rs.Group,{ref:c,className:K("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",n),...r}));hr.displayName=Rs.Group.displayName;const Q0=u.forwardRef(({className:n,...r},c)=>e.jsx(Rs.Separator,{ref:c,className:K("-mx-1 h-px bg-border",n),...r}));Q0.displayName=Rs.Separator.displayName;const xr=u.forwardRef(({className:n,...r},c)=>e.jsx(Rs.Item,{ref:c,className:K("relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",n),...r}));xr.displayName=Rs.Item.displayName;const bs=u.forwardRef(({className:n,...r},c)=>e.jsx(Qp,{ref:c,className:K("grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",n),...r,children:e.jsx(Kb,{className:K("grid place-content-center text-current"),children:e.jsx(ga,{className:"h-4 w-4"})})}));bs.displayName=Qp.displayName;const wg=u.createContext(null),_g="maibot-completed-tours";function Y0(){try{const n=localStorage.getItem(_g);return n?new Set(JSON.parse(n)):new Set}catch{return new Set}}function sp(n){localStorage.setItem(_g,JSON.stringify([...n]))}function X0({children:n}){const[r,c]=u.useState({activeTourId:null,stepIndex:0,isRunning:!1}),d=u.useRef(new Map),[,h]=u.useState(0),[x,f]=u.useState(Y0),j=u.useCallback((G,z)=>{d.current.set(G,z),h(B=>B+1)},[]),p=u.useCallback(G=>{d.current.delete(G),c(z=>z.activeTourId===G?{...z,activeTourId:null,isRunning:!1,stepIndex:0}:z)},[]),w=u.useCallback((G,z=0)=>{d.current.has(G)&&c({activeTourId:G,stepIndex:z,isRunning:!0})},[]),v=u.useCallback(()=>{c(G=>({...G,isRunning:!1}))},[]),k=u.useCallback(G=>{c(z=>({...z,stepIndex:G}))},[]),T=u.useCallback(()=>{c(G=>({...G,stepIndex:G.stepIndex+1}))},[]),E=u.useCallback(()=>{c(G=>({...G,stepIndex:Math.max(0,G.stepIndex-1)}))},[]),R=u.useCallback(()=>r.activeTourId?d.current.get(r.activeTourId)||[]:[],[r.activeTourId]),F=u.useCallback(G=>{f(z=>{const B=new Set(z);return B.add(G),sp(B),B})},[]),U=u.useCallback(G=>{const{action:z,index:B,status:X,type:S}=G,O=["finished","skipped"];if(z==="close"){c(se=>({...se,isRunning:!1,stepIndex:0}));return}O.includes(X)?c(se=>(X==="finished"&&se.activeTourId&&setTimeout(()=>F(se.activeTourId),0),{...se,isRunning:!1,stepIndex:0})):S==="step:after"&&(z==="next"?c(se=>({...se,stepIndex:B+1})):z==="prev"&&c(se=>({...se,stepIndex:B-1})))},[F]),M=u.useCallback(G=>x.has(G),[x]),Z=u.useCallback(G=>{f(z=>{const B=new Set(z);return B.delete(G),sp(B),B})},[]);return e.jsx(wg.Provider,{value:{state:r,tours:d.current,registerTour:j,unregisterTour:p,startTour:w,stopTour:v,goToStep:k,nextStep:T,prevStep:E,getCurrentSteps:R,handleJoyrideCallback:U,isTourCompleted:M,markTourCompleted:F,resetTourCompleted:Z},children:n})}function Qu(){const n=u.useContext(wg);if(!n)throw new Error("useTour must be used within a TourProvider");return n}const K0={options:{zIndex:1e4,primaryColor:"hsl(var(--primary))",textColor:"hsl(var(--foreground))",backgroundColor:"hsl(var(--background))",arrowColor:"hsl(var(--background))",overlayColor:"rgba(0, 0, 0, 0.5)"},tooltip:{borderRadius:"var(--radius)",padding:"1rem"},tooltipContainer:{textAlign:"left"},tooltipTitle:{fontSize:"1rem",fontWeight:600,marginBottom:"0.5rem"},tooltipContent:{fontSize:"0.875rem",padding:"0.5rem 0"},buttonNext:{backgroundColor:"hsl(var(--primary))",color:"hsl(var(--primary-foreground))",borderRadius:"calc(var(--radius) - 2px)",fontSize:"0.875rem",padding:"0.5rem 1rem"},buttonBack:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem",marginRight:"0.5rem"},buttonSkip:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem"},buttonClose:{color:"hsl(var(--muted-foreground))"},spotlight:{borderRadius:"var(--radius)"}},Z0={back:"上一步",close:"关闭",last:"完成",next:"下一步",nextLabelWithProgress:"下一步 ({step}/{steps})",open:"打开对话框",skip:"跳过"};function J0(){const{state:n,getCurrentSteps:r,handleJoyrideCallback:c}=Qu(),d=r(),[h,x]=u.useState(!1),f=u.useRef(n.stepIndex),j=u.useRef(null);u.useEffect(()=>{f.current!==n.stepIndex&&(x(!1),f.current=n.stepIndex)},[n.stepIndex]),u.useEffect(()=>{if(!n.isRunning||d.length===0){x(!1);return}const v=d[n.stepIndex];if(!v){x(!1);return}const k=v.target;if(k==="body"){x(!0);return}x(!1);const T=setTimeout(()=>{const E=()=>{const M=document.querySelector(k);if(M){const Z=M.getBoundingClientRect();if(Z.width>0&&Z.height>0)return!0}return!1};if(E()){setTimeout(()=>x(!0),100);return}const R=setInterval(()=>{E()&&(clearInterval(R),setTimeout(()=>x(!0),100))},100),F=setTimeout(()=>{clearInterval(R),x(!0)},5e3),U=()=>{clearInterval(R),clearTimeout(F)};j.current=U},150);return()=>{clearTimeout(T),j.current&&(j.current(),j.current=null)}},[n.isRunning,n.stepIndex,d]);const p=u.useRef(null);if(u.useEffect(()=>{let v=document.getElementById("tour-portal-container");return v||(v=document.createElement("div"),v.id="tour-portal-container",v.style.cssText="position: fixed; top: 0; left: 0; z-index: 99999; pointer-events: none;",document.body.appendChild(v)),p.current=v,()=>{}},[]),!n.isRunning||d.length===0||!h)return null;const w=e.jsx(Hy,{steps:d,stepIndex:n.stepIndex,run:n.isRunning,continuous:!0,showSkipButton:!0,showProgress:!0,disableOverlayClose:!0,disableScrolling:!1,disableScrollParentFix:!1,callback:c,styles:K0,locale:Z0,scrollOffset:80,scrollToFirstStep:!0,floaterProps:{styles:{floater:{zIndex:99999}},disableAnimation:!0}},`tour-step-${n.stepIndex}`);return p.current?Jv.createPortal(w,p.current):w}const tl="model-assignment-tour",Sg=[{target:"body",content:"本引导旨在帮助你配置模型提供商和对应的模型,并为麦麦的各个组件分配合适的模型。",placement:"center",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="sidebar-model-provider"]',content:'第一步,你需要配置模型提供商。模型提供商决定了你要使用谁家的模型,无论是单一厂商(如 DeepSeek),还是模型平台(如 Siliconflow),都可以在这里进行配置。点击"下一步"进入配置页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-provider-button"]',content:'点击"添加提供商"按钮,开始配置你的模型提供商。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="provider-dialog"]',content:"在这里,你可以选择你想要配置的模型提供商,填写相关信息后保存即可。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-name-input"]',content:"这里的名称是你为这个模型提供商起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-apikey-input"]',content:"这里需要填写你从模型提供商那里获取的 API 密钥,用于验证和调用模型服务。对于不同的提供商,获取 API 密钥的方式可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-url-input"]',content:"这里需要填写模型提供商的 API 访问地址,确保填写正确以便系统能够连接到模型服务。对于不同的提供商,API 地址可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-template-select"]',content:"当然,如果你不知道如何填写这些信息,很多模型提供商在这里都提供了预设的模板供你选择,选择对应的模板后,相关信息会自动填充。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-save-button"]',content:"填写完所有信息后,点击保存按钮,模型提供商就配置完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-cancel-button"]',content:"因为这次咱们什么都没有填写,所以点击取消按钮退出吧。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="sidebar-model-management"]',content:'配置好模型提供商后,接下来我们需要为麦麦添加模型并分配功能。点击"下一步"进入模型管理页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-model-button"]',content:'在为麦麦的组件分配模型之前,首先需要添加你想要分配的模型,点击"添加模型"按钮开始添加。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="model-dialog"]',content:"在这里,你可以选择你之前配置好的模型提供商,然后选择对应的模型来添加。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-name-input"]',content:"这里的模型名称是你为这个模型起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-provider-select"]',content:"在这里选择你之前配置好的模型提供商,这样系统才能知道你要添加哪个提供商的模型。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-identifier-input"]',content:"这里需要填写你想要添加的模型的标识符,不同的模型提供商可能有不同的标识符格式,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-save-button"]',content:"填写完所有信息后,点击保存按钮,模型就添加完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-cancel-button"]',content:"当然,因为这次咱们什么都没有填写,所以直接点击取消按钮退出吧,等你准备好了再来添加模型。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="tasks-tab-trigger"]',content:'最后一步,添加好模型后,切换到"为模型分配功能"标签页,为麦麦的各个组件分配合适的模型。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="task-model-select"]',content:"在这里,你可以为每个组件选择一个或多个合适的模型,选择完成后配置会自动保存。恭喜你完成了模型配置的学习!",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1}],Cg={0:"/config/model",1:"/config/model",2:"/config/modelProvider",3:"/config/modelProvider",4:"/config/modelProvider",5:"/config/modelProvider",6:"/config/modelProvider",7:"/config/modelProvider",8:"/config/modelProvider",9:"/config/modelProvider",10:"/config/modelProvider",11:"/config/model",12:"/config/model",13:"/config/model",14:"/config/model",15:"/config/model",16:"/config/model",17:"/config/model",18:"/config/model",19:"/config/model"},lr=[{id:"siliconflow",name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",client_type:"openai",display_name:"硅基流动 (SiliconFlow)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"deepseek",name:"DeepSeek",base_url:"https://api.deepseek.com",client_type:"openai",display_name:"DeepSeek",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"rinkoai",name:"RinkoAI",base_url:"https://rinkoai.com/v1",client_type:"openai",display_name:"RinkoAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"zhipu",name:"ZhipuAI",base_url:"https://open.bigmodel.cn/api/paas/v4",client_type:"openai",display_name:"智谱 AI (ZhipuAI / GLM)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"moonshot",name:"Moonshot",base_url:"https://api.moonshot.cn/v1",client_type:"openai",display_name:"月之暗面 (Moonshot / Kimi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"doubao",name:"Doubao",base_url:"https://ark.cn-beijing.volces.com/api/v3",client_type:"openai",display_name:"字节豆包 (Doubao)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"alibaba",name:"Alibaba",base_url:"https://dashscope.aliyuncs.com/compatible-mode/v1",client_type:"openai",display_name:"阿里云百炼 (Alibaba Qwen)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"baichuan",name:"Baichuan",base_url:"https://api.baichuan-ai.com/v1",client_type:"openai",display_name:"百川智能 (Baichuan)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"minimax",name:"MiniMax",base_url:"https://api.minimax.chat/v1",client_type:"openai",display_name:"MiniMax (海螺 AI)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"stepfun",name:"StepFun",base_url:"https://api.stepfun.com/v1",client_type:"openai",display_name:"阶跃星辰 (StepFun)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"lingyi",name:"Lingyi",base_url:"https://api.lingyiwanwu.com/v1",client_type:"openai",display_name:"零一万物 (Lingyi / Yi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"openai",name:"OpenAI",base_url:"https://api.openai.com/v1",client_type:"openai",display_name:"OpenAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"xai",name:"xAI",base_url:"https://api.x.ai/v1",client_type:"openai",display_name:"xAI (Grok)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"anthropic",name:"Anthropic",base_url:"https://api.anthropic.com/v1",client_type:"openai",display_name:"Anthropic (Claude)"},{id:"gemini",name:"Gemini",base_url:"https://generativelanguage.googleapis.com/v1beta",client_type:"gemini",display_name:"Google Gemini",modelFetcher:{endpoint:"/models",parser:"gemini"}},{id:"cohere",name:"Cohere",base_url:"https://api.cohere.ai/v1",client_type:"openai",display_name:"Cohere"},{id:"groq",name:"Groq",base_url:"https://api.groq.com/openai/v1",client_type:"openai",display_name:"Groq",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"together",name:"Together AI",base_url:"https://api.together.xyz/v1",client_type:"openai",display_name:"Together AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"fireworks",name:"Fireworks",base_url:"https://api.fireworks.ai/inference/v1",client_type:"openai",display_name:"Fireworks AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"mistral",name:"Mistral",base_url:"https://api.mistral.ai/v1",client_type:"openai",display_name:"Mistral AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"perplexity",name:"Perplexity",base_url:"https://api.perplexity.ai",client_type:"openai",display_name:"Perplexity AI"},{id:"custom",name:"",base_url:"",client_type:"openai",display_name:"自定义"}];function ap(n){return n?n.replace(/\/+$/,"").toLowerCase():""}function I0(n){if(!n)return null;const r=ap(n);return lr.find(c=>c.id!=="custom"&&ap(c.base_url)===r)||null}function P0(){const[n,r]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,w]=u.useState(!1),[v,k]=u.useState(!1),[T,E]=u.useState(!1),[R,F]=u.useState(!1),[U,M]=u.useState(null),[Z,G]=u.useState(null),[z,B]=u.useState("custom"),[X,S]=u.useState(!1),[O,se]=u.useState(!1),[he,ye]=u.useState(null),[be,pe]=u.useState(!1),[je,_e]=u.useState(""),[y,q]=u.useState(new Set),[H,ie]=u.useState(!1),[_,me]=u.useState(1),[xe,Q]=u.useState(20),[de,ge]=u.useState(""),[le,L]=u.useState({}),[$,D]=u.useState(new Set),[ee,Ne]=u.useState(new Map),{toast:ze}=Rt(),We=ua(),{state:Xe,goToStep:Mt,registerTour:qt}=Qu(),re=u.useRef(null),we=u.useRef(!0);u.useEffect(()=>{qt(tl,Sg)},[qt]),u.useEffect(()=>{if(Xe.activeTourId===tl&&Xe.isRunning){const W=Cg[Xe.stepIndex];W&&!window.location.pathname.endsWith(W.replace("/config/",""))&&We({to:W})}},[Xe.stepIndex,Xe.activeTourId,Xe.isRunning,We]);const Je=u.useRef(Xe.stepIndex);u.useEffect(()=>{if(Xe.activeTourId===tl&&Xe.isRunning){const W=Je.current,ve=Xe.stepIndex;W>=3&&W<=9&&ve<3&&F(!1),W>=10&&ve>=3&&ve<=9&&(L({}),B("custom"),M({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10}),G(null),pe(!1),F(!0)),Je.current=ve}},[Xe.stepIndex,Xe.activeTourId,Xe.isRunning]),u.useEffect(()=>{if(Xe.activeTourId!==tl||!Xe.isRunning)return;const W=ve=>{const Ae=ve.target,es=Xe.stepIndex;es===2&&Ae.closest('[data-tour="add-provider-button"]')?setTimeout(()=>Mt(3),300):es===9&&Ae.closest('[data-tour="provider-cancel-button"]')&&setTimeout(()=>Mt(10),300)};return document.addEventListener("click",W,!0),()=>document.removeEventListener("click",W,!0)},[Xe,Mt]),u.useEffect(()=>{Fe()},[]);const Fe=async()=>{try{d(!0);const W=await In();r(W.api_providers||[]),w(!1),we.current=!1}catch(W){console.error("加载配置失败:",W)}finally{d(!1)}},Wt=async()=>{try{k(!0),so().catch(()=>{}),E(!0)}catch(W){console.error("重启失败:",W),E(!1),ze({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),k(!1)}},Xs=async()=>{try{x(!0),re.current&&clearTimeout(re.current);const W=await In();W.api_providers=n,await eo(W),w(!1),ze({title:"保存成功",description:"正在重启麦麦..."}),await Wt()}catch(W){console.error("保存配置失败:",W),ze({title:"保存失败",description:W.message,variant:"destructive"}),x(!1)}},Ns=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},Ke=()=>{E(!1),k(!1),ze({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},Ue=u.useCallback(async W=>{if(!we.current)try{j(!0),await Mu("api_providers",W),w(!1)}catch(ve){console.error("自动保存失败:",ve),w(!0)}finally{j(!1)}},[]);u.useEffect(()=>{if(!we.current)return w(!0),re.current&&clearTimeout(re.current),re.current=setTimeout(()=>{Ue(n)},2e3),()=>{re.current&&clearTimeout(re.current)}},[n,Ue]);const js=async()=>{try{x(!0),re.current&&clearTimeout(re.current);const W=await In();W.api_providers=n,await eo(W),w(!1),ze({title:"保存成功",description:"模型提供商配置已保存"})}catch(W){console.error("保存配置失败:",W),ze({title:"保存失败",description:W.message,variant:"destructive"})}finally{x(!1)}},ls=(W,ve)=>{if(L({}),W){const Ae=lr.find(es=>es.base_url===W.base_url&&es.client_type===W.client_type);B(Ae?.id||"custom"),M(W)}else B("custom"),M({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10});G(ve),pe(!1),F(!0)},_s=W=>{B(W),S(!1);const ve=lr.find(Ae=>Ae.id===W);ve&&ve.id!=="custom"?M(Ae=>({...Ae,name:ve.name,base_url:ve.base_url,client_type:ve.client_type})):ve?.id==="custom"&&M(Ae=>({...Ae,name:"",base_url:"",client_type:"openai"}))},Ss=u.useMemo(()=>z!=="custom",[z]),nl=async()=>{if(U?.api_key)try{await navigator.clipboard.writeText(U.api_key),ze({title:"复制成功",description:"API Key 已复制到剪贴板"})}catch{ze({title:"复制失败",description:"无法访问剪贴板",variant:"destructive"})}},il=()=>{if(!U)return;const W={};if(U.name?.trim()||(W.name="请输入提供商名称"),U.base_url?.trim()||(W.base_url="请输入基础 URL"),U.api_key?.trim()||(W.api_key="请输入 API Key"),Object.keys(W).length>0){L(W);return}L({});const ve={...U,max_retry:U.max_retry??2,timeout:U.timeout??30,retry_interval:U.retry_interval??10};if(Z!==null){const Ae=[...n];Ae[Z]=ve,r(Ae)}else r([...n,ve]);F(!1),M(null),G(null)},rl=W=>{if(!W&&U){const ve={...U,max_retry:U.max_retry??2,timeout:U.timeout??30,retry_interval:U.retry_interval??10};M(ve)}F(W)},Se=W=>{ye(W),se(!0)},Oe=()=>{if(he!==null){const W=n.filter((ve,Ae)=>Ae!==he);r(W),ze({title:"删除成功",description:"提供商已从列表中移除"})}se(!1),ye(null)},ns=W=>{const ve=new Set(y);ve.has(W)?ve.delete(W):ve.add(W),q(ve)},ds=()=>{if(y.size===us.length)q(new Set);else{const W=us.map((ve,Ae)=>n.findIndex(es=>es===us[Ae]));q(new Set(W))}},ri=()=>{if(y.size===0){ze({title:"提示",description:"请先选择要删除的提供商",variant:"default"});return}ie(!0)},rn=()=>{const W=n.filter((ve,Ae)=>!y.has(Ae));r(W),q(new Set),ie(!1),ze({title:"批量删除成功",description:`已删除 ${y.size} 个提供商`})},us=n.filter(W=>{if(!je)return!0;const ve=je.toLowerCase();return W.name.toLowerCase().includes(ve)||W.base_url.toLowerCase().includes(ve)||W.client_type.toLowerCase().includes(ve)}),Ks=Math.ceil(us.length/xe),Zs=us.slice((_-1)*xe,_*xe),Oa=()=>{const W=parseInt(de);W>=1&&W<=Ks&&(me(W),ge(""))},Ls=async W=>{D(ve=>new Set(ve).add(W));try{const ve=await N0(W);Ne(Ae=>new Map(Ae).set(W,ve)),ve.network_ok?ve.api_key_valid===!0?ze({title:"连接正常",description:`${W} 网络连接正常,API Key 有效 (${ve.latency_ms}ms)`}):ve.api_key_valid===!1?ze({title:"连接正常但 Key 无效",description:`${W} 网络连接正常,但 API Key 无效或已过期`,variant:"destructive"}):ze({title:"网络连接正常",description:`${W} 可以访问 (${ve.latency_ms}ms)`}):ze({title:"连接失败",description:ve.error||"无法连接到提供商",variant:"destructive"})}catch(ve){ze({title:"测试失败",description:ve.message,variant:"destructive"})}finally{D(ve=>{const Ae=new Set(ve);return Ae.delete(W),Ae})}},Ra=async()=>{for(const W of n)await Ls(W.name)},ba=W=>{const ve=$.has(W),Ae=ee.get(W);return ve?e.jsxs(Qe,{variant:"secondary",className:"gap-1",children:[e.jsx(vs,{className:"h-3 w-3 animate-spin"}),"测试中"]}):Ae?Ae.network_ok?Ae.api_key_valid===!0?e.jsxs(Qe,{className:"gap-1 bg-green-600 hover:bg-green-700",children:[e.jsx(oa,{className:"h-3 w-3"}),"正常"]}):Ae.api_key_valid===!1?e.jsxs(Qe,{variant:"destructive",className:"gap-1",children:[e.jsx(Ea,{className:"h-3 w-3"}),"Key无效"]}):e.jsxs(Qe,{className:"gap-1 bg-blue-600 hover:bg-blue-700",children:[e.jsx(oa,{className:"h-3 w-3"}),"可访问"]}):e.jsxs(Qe,{variant:"destructive",className:"gap-1",children:[e.jsx(Wp,{className:"h-3 w-3"}),"离线"]}):null};return c?e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})}):e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"AI模型厂商配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理 AI 模型厂商的 API 配置"})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[y.size>0&&e.jsxs(b,{onClick:ri,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(Pe,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",y.size,")"]}),e.jsxs(b,{onClick:Ra,size:"sm",variant:"outline",className:"w-full sm:w-auto",disabled:n.length===0||$.size>0,children:[e.jsx(sn,{className:"mr-2 h-4 w-4"}),$.size>0?`测试中 (${$.size})`:"测试全部"]}),e.jsxs(b,{onClick:()=>ls(null,null),size:"sm",className:"w-full sm:w-auto","data-tour":"add-provider-button",children:[e.jsx(cs,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加提供商"]}),e.jsxs(b,{onClick:js,disabled:h||f||!p||v,size:"sm",variant:"outline",className:"w-full sm:w-auto sm:min-w-[120px]",children:[e.jsx(pr,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),h?"保存中...":f?"自动保存中...":p?"保存配置":"已保存"]}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsxs(b,{disabled:h||f||v,size:"sm",className:"w-full sm:w-auto sm:min-w-[120px]",children:[e.jsx(fr,{className:"mr-2 h-4 w-4"}),v?"重启中...":p?"保存并重启":"重启麦麦"]})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认重启麦麦?"}),e.jsx(dt,{asChild:!0,children:e.jsx("div",{children:e.jsx("p",{children:p?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"})})})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:p?Xs:Wt,children:p?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsxs(al,{children:[e.jsx(za,{className:"h-4 w-4"}),e.jsxs(ll,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),e.jsxs(Ie,{className:"h-[calc(100vh-260px)]",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2 mb-4",children:[e.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[e.jsx(Os,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索提供商名称、URL 或类型...",value:je,onChange:W=>_e(W.target.value),className:"pl-9"})]}),je&&e.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",us.length," 个结果"]})]}),e.jsx("div",{className:"md:hidden space-y-3",children:us.length===0?e.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:je?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'}):Zs.map((W,ve)=>{const Ae=n.findIndex(es=>es===W);return e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("h3",{className:"font-semibold text-base truncate",children:W.name}),ba(W.name)]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1 break-all",children:W.base_url})]}),e.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>Ls(W.name),disabled:$.has(W.name),title:"测试连接",children:$.has(W.name)?e.jsx(vs,{className:"h-4 w-4 animate-spin"}):e.jsx(sn,{className:"h-4 w-4"})}),e.jsx(b,{variant:"default",size:"sm",onClick:()=>ls(W,Ae),children:e.jsx(an,{className:"h-4 w-4",strokeWidth:2,fill:"none"})}),e.jsx(b,{size:"sm",onClick:()=>Se(Ae),className:"bg-red-600 hover:bg-red-700 text-white",children:e.jsx(Pe,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"客户端类型"}),e.jsx("p",{className:"font-medium",children:W.client_type})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"最大重试"}),e.jsx("p",{className:"font-medium",children:W.max_retry})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"超时(秒)"}),e.jsx("p",{className:"font-medium",children:W.timeout})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"重试间隔(秒)"}),e.jsx("p",{className:"font-medium",children:W.retry_interval})]})]})]},ve)})}),e.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(ai,{children:[e.jsx(li,{children:e.jsxs(gs,{children:[e.jsx(at,{className:"w-12",children:e.jsx(bs,{checked:y.size===us.length&&us.length>0,onCheckedChange:ds})}),e.jsx(at,{children:"状态"}),e.jsx(at,{children:"名称"}),e.jsx(at,{children:"基础URL"}),e.jsx(at,{children:"客户端类型"}),e.jsx(at,{className:"text-right",children:"最大重试"}),e.jsx(at,{className:"text-right",children:"超时(秒)"}),e.jsx(at,{className:"text-right",children:"重试间隔(秒)"}),e.jsx(at,{className:"text-right",children:"操作"})]})}),e.jsx(ni,{children:Zs.length===0?e.jsx(gs,{children:e.jsx($e,{colSpan:9,className:"text-center text-muted-foreground py-8",children:je?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'})}):Zs.map((W,ve)=>{const Ae=n.findIndex(es=>es===W);return e.jsxs(gs,{children:[e.jsx($e,{children:e.jsx(bs,{checked:y.has(Ae),onCheckedChange:()=>ns(Ae)})}),e.jsx($e,{children:ba(W.name)||e.jsx(Qe,{variant:"outline",className:"text-muted-foreground",children:"未测试"})}),e.jsx($e,{className:"font-medium",children:W.name}),e.jsx($e,{className:"max-w-xs truncate",title:W.base_url,children:W.base_url}),e.jsx($e,{children:W.client_type}),e.jsx($e,{className:"text-right",children:W.max_retry}),e.jsx($e,{className:"text-right",children:W.timeout}),e.jsx($e,{className:"text-right",children:W.retry_interval}),e.jsx($e,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>Ls(W.name),disabled:$.has(W.name),title:"测试连接",children:$.has(W.name)?e.jsx(vs,{className:"h-4 w-4 animate-spin"}):e.jsx(sn,{className:"h-4 w-4"})}),e.jsxs(b,{variant:"default",size:"sm",onClick:()=>ls(W,Ae),children:[e.jsx(an,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(b,{size:"sm",onClick:()=>Se(Ae),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(Pe,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},ve)})})]})})}),us.length>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{htmlFor:"page-size-provider",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(Be,{value:xe.toString(),onValueChange:W=>{Q(parseInt(W)),me(1),q(new Set)},children:[e.jsx(Re,{id:"page-size-provider",className:"w-20",children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"10",children:"10"}),e.jsx(ne,{value:"20",children:"20"}),e.jsx(ne,{value:"50",children:"50"}),e.jsx(ne,{value:"100",children:"100"})]})]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(_-1)*xe+1," 到"," ",Math.min(_*xe,us.length)," 条,共 ",us.length," 条"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>me(1),disabled:_===1,className:"hidden sm:flex",children:e.jsx(gr,{className:"h-4 w-4"})}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>me(W=>Math.max(1,W-1)),disabled:_===1,children:[e.jsx(nn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:de,onChange:W=>ge(W.target.value),onKeyDown:W=>W.key==="Enter"&&Oa(),placeholder:_.toString(),className:"w-16 h-8 text-center",min:1,max:Ks}),e.jsx(b,{variant:"outline",size:"sm",onClick:Oa,disabled:!de,className:"h-8",children:"跳转"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>me(W=>W+1),disabled:_>=Ks,children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(Ol,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>me(Ks),disabled:_>=Ks,className:"hidden sm:flex",children:e.jsx(jr,{className:"h-4 w-4"})})]})]})]}),e.jsx(Qt,{open:R,onOpenChange:rl,children:e.jsxs(Ut,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"provider-dialog",preventOutsideClose:Xe.isRunning,children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:Z!==null?"编辑提供商":"添加提供商"}),e.jsx(ss,{children:"配置 API 提供商的连接信息和参数"})]}),e.jsxs("form",{onSubmit:W=>{W.preventDefault(),il()},autoComplete:"off",children:[e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":"provider-template-select",children:[e.jsx(N,{htmlFor:"template",children:"提供商模板"}),e.jsxs(Ma,{open:X,onOpenChange:S,children:[e.jsx(Da,{asChild:!0,children:e.jsxs(b,{variant:"outline",role:"combobox","aria-expanded":X,className:"w-full justify-between",children:[z?lr.find(W=>W.id===z)?.display_name:"选择提供商模板...",e.jsx(Bu,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(va,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:e.jsxs(ao,{children:[e.jsx(lo,{placeholder:"搜索提供商模板..."}),e.jsx(Ie,{className:"h-[300px]",children:e.jsxs(no,{className:"max-h-none overflow-visible",children:[e.jsx(io,{children:"未找到匹配的模板"}),e.jsx(hr,{children:lr.map(W=>e.jsxs(xr,{value:W.display_name,onSelect:()=>_s(W.id),children:[e.jsx(ga,{className:`mr-2 h-4 w-4 ${z===W.id?"opacity-100":"opacity-0"}`}),W.display_name]},W.id))})]})})]})})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"选择预设模板可自动填充 URL 和客户端类型,支持搜索"})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-name-input",children:[e.jsx(N,{htmlFor:"name",className:le.name?"text-destructive":"",children:"名称 *"}),e.jsx(ce,{id:"name",value:U?.name||"",onChange:W=>{M(ve=>ve?{...ve,name:W.target.value}:null),le.name&&L(ve=>({...ve,name:void 0}))},placeholder:"例如: DeepSeek, SiliconFlow",className:le.name?"border-destructive focus-visible:ring-destructive":""}),le.name&&e.jsx("p",{className:"text-xs text-destructive",children:le.name})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-url-input",children:[e.jsx(N,{htmlFor:"base_url",className:le.base_url?"text-destructive":"",children:"基础 URL *"}),e.jsx(ce,{id:"base_url",value:U?.base_url||"",onChange:W=>{M(ve=>ve?{...ve,base_url:W.target.value}:null),le.base_url&&L(ve=>({...ve,base_url:void 0}))},placeholder:"https://api.example.com/v1",disabled:Ss,className:`${Ss?"bg-muted cursor-not-allowed":""} ${le.base_url?"border-destructive focus-visible:ring-destructive":""}`}),le.base_url&&e.jsx("p",{className:"text-xs text-destructive",children:le.base_url}),Ss&&!le.base_url&&e.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时 URL 不可编辑,切换到"自定义"以手动配置'})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-apikey-input",children:[e.jsx(N,{htmlFor:"api_key",className:le.api_key?"text-destructive":"",children:"API Key *"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{id:"api_key",type:be?"text":"password",value:U?.api_key||"",onChange:W=>{M(ve=>ve?{...ve,api_key:W.target.value}:null),le.api_key&&L(ve=>({...ve,api_key:void 0}))},placeholder:"sk-...",className:`flex-1 ${le.api_key?"border-destructive focus-visible:ring-destructive":""}`}),e.jsx(b,{type:"button",variant:"outline",size:"icon",onClick:()=>pe(!be),title:be?"隐藏密钥":"显示密钥",children:be?e.jsx(rr,{className:"h-4 w-4"}):e.jsx(Ys,{className:"h-4 w-4"})}),e.jsx(b,{type:"button",variant:"outline",size:"icon",onClick:nl,title:"复制密钥",children:e.jsx(Jc,{className:"h-4 w-4"})})]}),le.api_key&&e.jsx("p",{className:"text-xs text-destructive",children:le.api_key})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"client_type",children:"客户端类型"}),e.jsxs(Be,{value:U?.client_type||"openai",onValueChange:W=>M(ve=>ve?{...ve,client_type:W}:null),disabled:Ss,children:[e.jsx(Re,{id:"client_type",className:Ss?"bg-muted cursor-not-allowed":"",children:e.jsx(He,{placeholder:"选择客户端类型"})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"openai",children:"OpenAI"}),e.jsx(ne,{value:"gemini",children:"Gemini"})]})]}),Ss&&e.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时客户端类型不可编辑,切换到"自定义"以手动配置'})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"max_retry",children:"最大重试"}),e.jsx(ce,{id:"max_retry",type:"number",min:"0",value:U?.max_retry??"",onChange:W=>{const ve=W.target.value===""?null:parseInt(W.target.value);M(Ae=>Ae?{...Ae,max_retry:ve}:null)},placeholder:"默认: 2"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"timeout",children:"超时(秒)"}),e.jsx(ce,{id:"timeout",type:"number",min:"1",value:U?.timeout??"",onChange:W=>{const ve=W.target.value===""?null:parseInt(W.target.value);M(Ae=>Ae?{...Ae,timeout:ve}:null)},placeholder:"默认: 30"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"retry_interval",children:"重试间隔(秒)"}),e.jsx(ce,{id:"retry_interval",type:"number",min:"1",value:U?.retry_interval??"",onChange:W=>{const ve=W.target.value===""?null:parseInt(W.target.value);M(Ae=>Ae?{...Ae,retry_interval:ve}:null)},placeholder:"默认: 10"})]})]})]}),e.jsxs(os,{children:[e.jsx(b,{type:"button",variant:"outline",onClick:()=>F(!1),"data-tour":"provider-cancel-button",children:"取消"}),e.jsx(b,{type:"submit","data-tour":"provider-save-button",children:"保存"})]})]})]})}),e.jsx(ft,{open:O,onOpenChange:se,children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:['确定要删除提供商 "',he!==null?n[he]?.name:"",'" 吗? 此操作无法撤销。']})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:Oe,children:"删除"})]})]})}),e.jsx(ft,{open:H,onOpenChange:ie,children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认批量删除"}),e.jsxs(dt,{children:["确定要删除选中的 ",y.size," 个提供商吗? 此操作无法撤销。"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:rn,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),T&&e.jsx($u,{onRestartComplete:Ns,onRestartFailed:Ke})]})}function W0({value:n,label:r,onRemove:c}){const{attributes:d,listeners:h,setNodeRef:x,transform:f,transition:j,isDragging:p}=Jy({id:n}),w={transform:Iy.Transform.toString(f),transition:j,opacity:p?.5:1};return e.jsx("div",{ref:x,style:w,className:K("inline-flex items-center gap-1",p&&"shadow-lg"),children:e.jsxs(Qe,{variant:"secondary",className:"cursor-move hover:bg-secondary/80 flex items-center gap-1",children:[e.jsx("div",{...d,...h,className:"cursor-grab active:cursor-grabbing flex items-center",children:e.jsx(xy,{className:"h-3 w-3 text-muted-foreground"})}),e.jsx("span",{children:r}),e.jsx(si,{className:"ml-1 h-3 w-3 cursor-pointer hover:text-destructive",strokeWidth:2,fill:"none",onClick:v=>{v.stopPropagation(),c(n)}})]})})}function ew({options:n,selected:r,onChange:c,placeholder:d="选择选项...",emptyText:h="未找到选项",className:x}){const[f,j]=u.useState(!1),p=Gy($f(Zy,{activationConstraint:{distance:8}}),$f(Ky,{coordinateGetter:Xy})),w=T=>{r.includes(T)?c(r.filter(E=>E!==T)):c([...r,T])},v=T=>{c(r.filter(E=>E!==T))},k=T=>{const{active:E,over:R}=T;if(R&&E.id!==R.id){const F=r.indexOf(E.id),U=r.indexOf(R.id);c(Yy(r,F,U))}};return e.jsxs(Ma,{open:f,onOpenChange:j,children:[e.jsx(Da,{asChild:!0,children:e.jsxs(b,{variant:"outline",role:"combobox","aria-expanded":f,className:K("w-full justify-between min-h-10 h-auto",x),children:[e.jsx(Vy,{sensors:p,collisionDetection:Fy,onDragEnd:k,children:e.jsx($y,{items:r,strategy:Qy,children:e.jsx("div",{className:"flex gap-1 flex-wrap flex-1",children:r.length===0?e.jsx("span",{className:"text-muted-foreground",children:d}):r.map(T=>{const E=n.find(R=>R.value===T);return e.jsx(W0,{value:T,label:E?.label||T,onRemove:v},T)})})})}),e.jsx(Bu,{className:"ml-2 h-4 w-4 shrink-0 opacity-50",strokeWidth:2,fill:"none"})]})}),e.jsx(va,{className:"w-full p-0",align:"start",children:e.jsxs(ao,{children:[e.jsx(lo,{placeholder:"搜索...",className:"h-9"}),e.jsxs(no,{children:[e.jsx(io,{children:h}),e.jsx(hr,{children:n.map(T=>{const E=r.includes(T.value);return e.jsxs(xr,{value:T.value,onSelect:()=>w(T.value),children:[e.jsx("div",{className:K("mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary",E?"bg-primary text-primary-foreground":"opacity-50 [&_svg]:invisible"),children:e.jsx(ga,{className:"h-3 w-3",strokeWidth:2,fill:"none"})}),e.jsx("span",{children:T.label})]},T.value)})})]})]})})]})}const lp=new Map,tw=300*1e3;function sw(){const[n,r]=u.useState([]),[c,d]=u.useState([]),[h,x]=u.useState([]),[f,j]=u.useState([]),[p,w]=u.useState(null),[v,k]=u.useState(!0),[T,E]=u.useState(!1),[R,F]=u.useState(!1),[U,M]=u.useState(!1),[Z,G]=u.useState(!1),[z,B]=u.useState(!1),[X,S]=u.useState(!1),[O,se]=u.useState(null),[he,ye]=u.useState(null),[be,pe]=u.useState(!1),[je,_e]=u.useState(null),[y,q]=u.useState(""),[H,ie]=u.useState(new Set),[_,me]=u.useState(!1),[xe,Q]=u.useState(1),[de,ge]=u.useState(20),[le,L]=u.useState(""),[$,D]=u.useState([]),[ee,Ne]=u.useState(!1),[ze,We]=u.useState(null),[Xe,Mt]=u.useState(!1),[qt,re]=u.useState(null),[we,Je]=u.useState({}),{toast:Fe}=Rt(),Wt=ua(),{registerTour:Xs,startTour:Ns,state:Ke,goToStep:Ue}=Qu(),js=u.useRef(null),ls=u.useRef(null),_s=u.useRef(!0);u.useEffect(()=>{Xs(tl,Sg)},[Xs]),u.useEffect(()=>{if(Ke.activeTourId===tl&&Ke.isRunning){const Y=Cg[Ke.stepIndex];Y&&!window.location.pathname.endsWith(Y.replace("/config/",""))&&Wt({to:Y})}},[Ke.stepIndex,Ke.activeTourId,Ke.isRunning,Wt]);const Ss=u.useRef(Ke.stepIndex);u.useEffect(()=>{if(Ke.activeTourId===tl&&Ke.isRunning){const Y=Ss.current,fe=Ke.stepIndex;Y>=12&&Y<=17&&fe<12&&S(!1),Ss.current=fe}},[Ke.stepIndex,Ke.activeTourId,Ke.isRunning]),u.useEffect(()=>{if(Ke.activeTourId!==tl||!Ke.isRunning)return;const Y=fe=>{const Me=fe.target,qe=Ke.stepIndex;qe===2&&Me.closest('[data-tour="add-provider-button"]')?setTimeout(()=>Ue(3),300):qe===9&&Me.closest('[data-tour="provider-cancel-button"]')?setTimeout(()=>Ue(10),300):qe===11&&Me.closest('[data-tour="add-model-button"]')?setTimeout(()=>Ue(12),300):qe===17&&Me.closest('[data-tour="model-cancel-button"]')?setTimeout(()=>Ue(18),300):qe===18&&Me.closest('[data-tour="tasks-tab-trigger"]')&&setTimeout(()=>Ue(19),300)};return document.addEventListener("click",Y,!0),()=>document.removeEventListener("click",Y,!0)},[Ke,Ue]);const nl=()=>{Ns(tl)};u.useEffect(()=>{il()},[]);const il=async()=>{try{k(!0);const Y=await In(),fe=Y.models||[];r(fe),j(fe.map(qe=>qe.name));const Me=Y.api_providers||[];d(Me.map(qe=>qe.name)),x(Me),w(Y.model_task_config||null),M(!1),_s.current=!1}catch(Y){console.error("加载配置失败:",Y)}finally{k(!1)}},rl=u.useCallback(Y=>h.find(fe=>fe.name===Y),[h]),Se=u.useCallback(async(Y,fe=!1)=>{const Me=rl(Y);if(!Me?.base_url){D([]),re(null),We('提供商配置不完整,请先在"模型提供商配置"中配置');return}if(!Me.api_key){D([]),re(null),We('该提供商未配置 API Key,请先在"模型提供商配置"中填写');return}const qe=I0(Me.base_url);if(re(qe),!qe?.modelFetcher){D([]),We(null);return}const ht=`${Y}:${Me.base_url}`,Js=lp.get(ht);if(!fe&&Js&&Date.now()-Js.timestamp{X&&O?.api_provider&&Se(O.api_provider)},[X,O?.api_provider,Se]);const Oe=async()=>{try{G(!0),so().catch(()=>{}),B(!0)}catch(Y){console.error("重启失败:",Y),B(!1),Fe({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),G(!1)}},ns=async()=>{try{E(!0),js.current&&clearTimeout(js.current),ls.current&&clearTimeout(ls.current);const Y=await In();Y.models=n,Y.model_task_config=p,await eo(Y),M(!1),Fe({title:"保存成功",description:"正在重启麦麦..."}),await Oe()}catch(Y){console.error("保存配置失败:",Y),Fe({title:"保存失败",description:Y.message,variant:"destructive"}),E(!1)}},ds=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},ri=()=>{B(!1),G(!1),Fe({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},rn=u.useCallback(async Y=>{if(!_s.current)try{F(!0),await Mu("models",Y),M(!1)}catch(fe){console.error("自动保存模型列表失败:",fe),M(!0)}finally{F(!1)}},[]),us=u.useCallback(async Y=>{if(!_s.current)try{F(!0),await Mu("model_task_config",Y),M(!1)}catch(fe){console.error("自动保存任务配置失败:",fe),M(!0)}finally{F(!1)}},[]);u.useEffect(()=>{if(!_s.current)return M(!0),js.current&&clearTimeout(js.current),js.current=setTimeout(()=>{rn(n)},2e3),()=>{js.current&&clearTimeout(js.current)}},[n,rn]),u.useEffect(()=>{if(!(_s.current||!p))return M(!0),ls.current&&clearTimeout(ls.current),ls.current=setTimeout(()=>{us(p)},2e3),()=>{ls.current&&clearTimeout(ls.current)}},[p,us]);const Ks=async()=>{try{E(!0),js.current&&clearTimeout(js.current),ls.current&&clearTimeout(ls.current);const Y=await In();Y.models=n,Y.model_task_config=p,await eo(Y),M(!1),Fe({title:"保存成功",description:"模型配置已保存"}),await il()}catch(Y){console.error("保存配置失败:",Y),Fe({title:"保存失败",description:Y.message,variant:"destructive"})}finally{E(!1)}},Zs=(Y,fe)=>{Je({}),se(Y||{model_identifier:"",name:"",api_provider:c[0]||"",price_in:0,price_out:0,force_stream_mode:!1,extra_params:{}}),ye(fe),S(!0)},Oa=()=>{if(!O)return;const Y={};if(O.name?.trim()||(Y.name="请输入模型名称"),O.api_provider?.trim()||(Y.api_provider="请选择 API 提供商"),O.model_identifier?.trim()||(Y.model_identifier="请输入模型标识符"),Object.keys(Y).length>0){Je(Y);return}Je({});const fe={...O,price_in:O.price_in??0,price_out:O.price_out??0};let Me,qe=null;if(he!==null?(qe=n[he].name,Me=[...n],Me[he]=fe):Me=[...n,fe],r(Me),j(Me.map(ht=>ht.name)),qe&&qe!==fe.name&&p){const ht=Js=>Js.map(Is=>Is===qe?fe.name:Is);w({...p,utils:{...p.utils,model_list:ht(p.utils?.model_list||[])},utils_small:{...p.utils_small,model_list:ht(p.utils_small?.model_list||[])},tool_use:{...p.tool_use,model_list:ht(p.tool_use?.model_list||[])},replyer:{...p.replyer,model_list:ht(p.replyer?.model_list||[])},planner:{...p.planner,model_list:ht(p.planner?.model_list||[])},vlm:{...p.vlm,model_list:ht(p.vlm?.model_list||[])},voice:{...p.voice,model_list:ht(p.voice?.model_list||[])},embedding:{...p.embedding,model_list:ht(p.embedding?.model_list||[])},lpmm_entity_extract:{...p.lpmm_entity_extract,model_list:ht(p.lpmm_entity_extract?.model_list||[])},lpmm_rdf_build:{...p.lpmm_rdf_build,model_list:ht(p.lpmm_rdf_build?.model_list||[])},lpmm_qa:{...p.lpmm_qa,model_list:ht(p.lpmm_qa?.model_list||[])}})}S(!1),se(null),ye(null)},Ls=Y=>{if(!Y&&O){const fe={...O,price_in:O.price_in??0,price_out:O.price_out??0};se(fe)}S(Y)},Ra=Y=>{_e(Y),pe(!0)},ba=()=>{if(je!==null){const Y=n.filter((fe,Me)=>Me!==je);r(Y),j(Y.map(fe=>fe.name)),Fe({title:"删除成功",description:"模型已从列表中移除"})}pe(!1),_e(null)},W=Y=>{const fe=new Set(H);fe.has(Y)?fe.delete(Y):fe.add(Y),ie(fe)},ve=()=>{if(H.size===Cs.length)ie(new Set);else{const Y=Cs.map((fe,Me)=>n.findIndex(qe=>qe===Cs[Me]));ie(new Set(Y))}},Ae=()=>{if(H.size===0){Fe({title:"提示",description:"请先选择要删除的模型",variant:"default"});return}me(!0)},es=()=>{const Y=n.filter((fe,Me)=>!H.has(Me));r(Y),j(Y.map(fe=>fe.name)),ie(new Set),me(!1),Fe({title:"批量删除成功",description:`已删除 ${H.size} 个模型`})},Us=(Y,fe,Me)=>{p&&w({...p,[Y]:{...p[Y],[fe]:Me}})},Cs=n.filter(Y=>{if(!y)return!0;const fe=y.toLowerCase();return Y.name.toLowerCase().includes(fe)||Y.model_identifier.toLowerCase().includes(fe)||Y.api_provider.toLowerCase().includes(fe)}),cl=Math.ceil(Cs.length/de),Ul=Cs.slice((xe-1)*de,xe*de),cn=()=>{const Y=parseInt(le);Y>=1&&Y<=cl&&(Q(Y),L(""))},on=Y=>p?[p.utils?.model_list||[],p.utils_small?.model_list||[],p.tool_use?.model_list||[],p.replyer?.model_list||[],p.planner?.model_list||[],p.vlm?.model_list||[],p.voice?.model_list||[],p.embedding?.model_list||[],p.lpmm_entity_extract?.model_list||[],p.lpmm_rdf_build?.model_list||[],p.lpmm_qa?.model_list||[]].some(Me=>Me.includes(Y)):!1;return v?e.jsx(Ie,{className:"h-full",children:e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):e.jsx(Ie,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"模型管理与分配"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"添加模型并为模型分配功能"})]}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[e.jsxs(b,{onClick:Ks,disabled:T||R||!U||Z,size:"sm",variant:"outline",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[e.jsx(pr,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),T?"保存中...":R?"自动保存中...":U?"保存配置":"已保存"]}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsxs(b,{disabled:T||R||Z,size:"sm",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[e.jsx(fr,{className:"mr-2 h-4 w-4"}),Z?"重启中...":U?"保存并重启":"重启麦麦"]})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认重启麦麦?"}),e.jsx(dt,{asChild:!0,children:e.jsx("div",{children:e.jsx("p",{children:U?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"})})})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:U?ns:Oe,children:U?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsxs(al,{children:[e.jsx(za,{className:"h-4 w-4"}),e.jsxs(ll,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),e.jsxs(al,{className:"hidden lg:flex border-primary/30 bg-primary/5 cursor-pointer hover:bg-primary/10 transition-colors",onClick:nl,children:[e.jsx(fy,{className:"h-4 w-4 text-primary"}),e.jsxs(ll,{className:"flex items-center justify-between",children:[e.jsxs("span",{children:[e.jsx("strong",{className:"text-primary",children:"新手引导:"}),"不知道如何配置模型?点击这里开始学习如何为麦麦的组件分配模型。"]}),e.jsx(b,{variant:"outline",size:"sm",className:"ml-4 shrink-0",children:"开始引导"})]})]}),e.jsxs(Aa,{defaultValue:"models",className:"w-full",children:[e.jsxs(ja,{className:"grid w-full max-w-full sm:max-w-md grid-cols-2",children:[e.jsx(st,{value:"models",children:"添加模型"}),e.jsx(st,{value:"tasks","data-tour":"tasks-tab-trigger",children:"为模型分配功能"})]}),e.jsxs(_t,{value:"models",className:"space-y-4 mt-0",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-2",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"配置可用的模型列表"}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[H.size>0&&e.jsxs(b,{onClick:Ae,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(Pe,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",H.size,")"]}),e.jsxs(b,{onClick:()=>Zs(null,null),size:"sm",variant:"outline",className:"w-full sm:w-auto","data-tour":"add-model-button",children:[e.jsx(cs,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加模型"]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2",children:[e.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[e.jsx(Os,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索模型名称、标识符或提供商...",value:y,onChange:Y=>q(Y.target.value),className:"pl-9"})]}),y&&e.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",Cs.length," 个结果"]})]}),e.jsx("div",{className:"md:hidden space-y-3",children:Ul.length===0?e.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:y?"未找到匹配的模型":"暂无模型配置"}):Ul.map((Y,fe)=>{const Me=n.findIndex(ht=>ht===Y),qe=on(Y.name);return e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("h3",{className:"font-semibold text-base",children:Y.name}),e.jsx(Qe,{variant:qe?"default":"secondary",className:qe?"bg-green-600 hover:bg-green-700":"",children:qe?"已使用":"未使用"})]}),e.jsx("p",{className:"text-xs text-muted-foreground break-all",title:Y.model_identifier,children:Y.model_identifier})]}),e.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[e.jsxs(b,{variant:"default",size:"sm",onClick:()=>Zs(Y,Me),children:[e.jsx(an,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(b,{size:"sm",onClick:()=>Ra(Me),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(Pe,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"提供商"}),e.jsx("p",{className:"font-medium",children:Y.api_provider})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"强制流式"}),e.jsx("p",{className:"font-medium",children:Y.force_stream_mode?"是":"否"})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"输入价格"}),e.jsxs("p",{className:"font-medium",children:["¥",Y.price_in,"/M"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"输出价格"}),e.jsxs("p",{className:"font-medium",children:["¥",Y.price_out,"/M"]})]})]})]},fe)})}),e.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(ai,{children:[e.jsx(li,{children:e.jsxs(gs,{children:[e.jsx(at,{className:"w-12",children:e.jsx(bs,{checked:H.size===Cs.length&&Cs.length>0,onCheckedChange:ve})}),e.jsx(at,{className:"w-24",children:"使用状态"}),e.jsx(at,{children:"模型名称"}),e.jsx(at,{children:"模型标识符"}),e.jsx(at,{children:"提供商"}),e.jsx(at,{className:"text-right",children:"输入价格"}),e.jsx(at,{className:"text-right",children:"输出价格"}),e.jsx(at,{className:"text-center",children:"强制流式"}),e.jsx(at,{className:"text-right",children:"操作"})]})}),e.jsx(ni,{children:Ul.length===0?e.jsx(gs,{children:e.jsx($e,{colSpan:9,className:"text-center text-muted-foreground py-8",children:y?"未找到匹配的模型":"暂无模型配置"})}):Ul.map((Y,fe)=>{const Me=n.findIndex(ht=>ht===Y),qe=on(Y.name);return e.jsxs(gs,{children:[e.jsx($e,{children:e.jsx(bs,{checked:H.has(Me),onCheckedChange:()=>W(Me)})}),e.jsx($e,{children:e.jsx(Qe,{variant:qe?"default":"secondary",className:qe?"bg-green-600 hover:bg-green-700":"",children:qe?"已使用":"未使用"})}),e.jsx($e,{className:"font-medium",children:Y.name}),e.jsx($e,{className:"max-w-xs truncate",title:Y.model_identifier,children:Y.model_identifier}),e.jsx($e,{children:Y.api_provider}),e.jsxs($e,{className:"text-right",children:["¥",Y.price_in,"/M"]}),e.jsxs($e,{className:"text-right",children:["¥",Y.price_out,"/M"]}),e.jsx($e,{className:"text-center",children:Y.force_stream_mode?"是":"否"}),e.jsx($e,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(b,{variant:"default",size:"sm",onClick:()=>Zs(Y,Me),children:[e.jsx(an,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(b,{size:"sm",onClick:()=>Ra(Me),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(Pe,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},fe)})})]})})}),Cs.length>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{htmlFor:"page-size-model",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(Be,{value:de.toString(),onValueChange:Y=>{ge(parseInt(Y)),Q(1),ie(new Set)},children:[e.jsx(Re,{id:"page-size-model",className:"w-20",children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"10",children:"10"}),e.jsx(ne,{value:"20",children:"20"}),e.jsx(ne,{value:"50",children:"50"}),e.jsx(ne,{value:"100",children:"100"})]})]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(xe-1)*de+1," 到"," ",Math.min(xe*de,Cs.length)," 条,共 ",Cs.length," 条"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>Q(1),disabled:xe===1,className:"hidden sm:flex",children:e.jsx(gr,{className:"h-4 w-4"})}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>Q(Y=>Math.max(1,Y-1)),disabled:xe===1,children:[e.jsx(nn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:le,onChange:Y=>L(Y.target.value),onKeyDown:Y=>Y.key==="Enter"&&cn(),placeholder:xe.toString(),className:"w-16 h-8 text-center",min:1,max:cl}),e.jsx(b,{variant:"outline",size:"sm",onClick:cn,disabled:!le,className:"h-8",children:"跳转"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>Q(Y=>Y+1),disabled:xe>=cl,children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(Ol,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>Q(cl),disabled:xe>=cl,className:"hidden sm:flex",children:e.jsx(jr,{className:"h-4 w-4"})})]})]})]}),e.jsxs(_t,{value:"tasks",className:"space-y-6 mt-0",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"为不同的任务配置使用的模型和参数"}),p&&e.jsxs("div",{className:"grid gap-4 sm:gap-6",children:[e.jsx(fa,{title:"组件模型 (utils)",description:"用于表情包、取名、关系、情绪变化等组件",taskConfig:p.utils,modelNames:f,onChange:(Y,fe)=>Us("utils",Y,fe),dataTour:"task-model-select"}),e.jsx(fa,{title:"组件小模型 (utils_small)",description:"消耗量较大的组件,建议使用速度较快的小模型",taskConfig:p.utils_small,modelNames:f,onChange:(Y,fe)=>Us("utils_small",Y,fe)}),e.jsx(fa,{title:"工具调用模型 (tool_use)",description:"需要使用支持工具调用的模型",taskConfig:p.tool_use,modelNames:f,onChange:(Y,fe)=>Us("tool_use",Y,fe)}),e.jsx(fa,{title:"首要回复模型 (replyer)",description:"用于表达器和表达方式学习",taskConfig:p.replyer,modelNames:f,onChange:(Y,fe)=>Us("replyer",Y,fe)}),e.jsx(fa,{title:"决策模型 (planner)",description:"负责决定麦麦该什么时候回复",taskConfig:p.planner,modelNames:f,onChange:(Y,fe)=>Us("planner",Y,fe)}),e.jsx(fa,{title:"图像识别模型 (vlm)",description:"视觉语言模型",taskConfig:p.vlm,modelNames:f,onChange:(Y,fe)=>Us("vlm",Y,fe),hideTemperature:!0}),e.jsx(fa,{title:"语音识别模型 (voice)",description:"语音转文字",taskConfig:p.voice,modelNames:f,onChange:(Y,fe)=>Us("voice",Y,fe),hideTemperature:!0,hideMaxTokens:!0}),e.jsx(fa,{title:"嵌入模型 (embedding)",description:"用于向量化",taskConfig:p.embedding,modelNames:f,onChange:(Y,fe)=>Us("embedding",Y,fe),hideTemperature:!0,hideMaxTokens:!0}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库模型"}),e.jsx(fa,{title:"实体提取模型 (lpmm_entity_extract)",description:"从文本中提取实体",taskConfig:p.lpmm_entity_extract,modelNames:f,onChange:(Y,fe)=>Us("lpmm_entity_extract",Y,fe)}),e.jsx(fa,{title:"RDF 构建模型 (lpmm_rdf_build)",description:"构建知识图谱",taskConfig:p.lpmm_rdf_build,modelNames:f,onChange:(Y,fe)=>Us("lpmm_rdf_build",Y,fe)}),e.jsx(fa,{title:"问答模型 (lpmm_qa)",description:"知识库问答",taskConfig:p.lpmm_qa,modelNames:f,onChange:(Y,fe)=>Us("lpmm_qa",Y,fe)})]})]})]})]}),e.jsx(Qt,{open:X,onOpenChange:Ls,children:e.jsxs(Ut,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"model-dialog",preventOutsideClose:Ke.isRunning,children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:he!==null?"编辑模型":"添加模型"}),e.jsx(ss,{children:"配置模型的基本信息和参数"})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":"model-name-input",children:[e.jsx(N,{htmlFor:"model_name",className:we.name?"text-destructive":"",children:"模型名称 *"}),e.jsx(ce,{id:"model_name",value:O?.name||"",onChange:Y=>{se(fe=>fe?{...fe,name:Y.target.value}:null),we.name&&Je(fe=>({...fe,name:void 0}))},placeholder:"例如: qwen3-30b",className:we.name?"border-destructive focus-visible:ring-destructive":""}),we.name?e.jsx("p",{className:"text-xs text-destructive",children:we.name}):e.jsx("p",{className:"text-xs text-muted-foreground",children:"用于在任务配置中引用此模型"})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"model-provider-select",children:[e.jsx(N,{htmlFor:"api_provider",className:we.api_provider?"text-destructive":"",children:"API 提供商 *"}),e.jsxs(Be,{value:O?.api_provider||"",onValueChange:Y=>{se(fe=>fe?{...fe,api_provider:Y}:null),D([]),We(null),we.api_provider&&Je(fe=>({...fe,api_provider:void 0}))},children:[e.jsx(Re,{id:"api_provider",className:we.api_provider?"border-destructive focus-visible:ring-destructive":"",children:e.jsx(He,{placeholder:"选择提供商"})}),e.jsx(Le,{children:c.map(Y=>e.jsx(ne,{value:Y,children:Y},Y))})]}),we.api_provider&&e.jsx("p",{className:"text-xs text-destructive",children:we.api_provider})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"model-identifier-input",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{htmlFor:"model_identifier",className:we.model_identifier?"text-destructive":"",children:"模型标识符 *"}),qt?.modelFetcher&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Qe,{variant:"secondary",className:"text-xs",children:qt.display_name}),e.jsx(b,{variant:"ghost",size:"sm",className:"h-6 px-2",onClick:()=>O?.api_provider&&Se(O.api_provider,!0),disabled:ee,children:ee?e.jsx(vs,{className:"h-3 w-3 animate-spin"}):e.jsx(ps,{className:"h-3 w-3"})})]})]}),qt?.modelFetcher?e.jsxs(Ma,{open:Xe,onOpenChange:Mt,children:[e.jsx(Da,{asChild:!0,children:e.jsxs(b,{variant:"outline",role:"combobox","aria-expanded":Xe,className:"w-full justify-between font-normal",disabled:ee||!!ze,children:[ee?e.jsxs("span",{className:"flex items-center gap-2 text-muted-foreground",children:[e.jsx(vs,{className:"h-4 w-4 animate-spin"}),"正在获取模型列表..."]}):ze?e.jsx("span",{className:"text-muted-foreground text-sm",children:"点击下方输入框手动填写"}):O?.model_identifier?e.jsx("span",{className:"truncate",children:O.model_identifier}):e.jsx("span",{className:"text-muted-foreground",children:"搜索或选择模型..."}),e.jsx(Bu,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(va,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:e.jsxs(ao,{children:[e.jsx(lo,{placeholder:"搜索模型..."}),e.jsx(Ie,{className:"h-[300px]",children:e.jsxs(no,{className:"max-h-none overflow-visible",children:[e.jsx(io,{children:ze?e.jsxs("div",{className:"py-4 px-2 text-center space-y-2",children:[e.jsx("p",{className:"text-sm text-destructive",children:ze}),!ze.includes("API Key")&&e.jsx(b,{variant:"link",size:"sm",onClick:()=>O?.api_provider&&Se(O.api_provider,!0),children:"重试"})]}):"未找到匹配的模型"}),e.jsx(hr,{heading:"可用模型",children:$.map(Y=>e.jsxs(xr,{value:Y.id,onSelect:()=>{se(fe=>fe?{...fe,model_identifier:Y.id}:null),Mt(!1)},children:[e.jsx(ga,{className:`mr-2 h-4 w-4 ${O?.model_identifier===Y.id?"opacity-100":"opacity-0"}`}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{children:Y.id}),Y.name!==Y.id&&e.jsx("span",{className:"text-xs text-muted-foreground",children:Y.name})]})]},Y.id))}),e.jsx(hr,{heading:"手动输入",children:e.jsxs(xr,{value:"__manual_input__",onSelect:()=>{Mt(!1)},children:[e.jsx(an,{className:"mr-2 h-4 w-4"}),"手动输入模型标识符..."]})})]})})]})})]}):e.jsx(ce,{id:"model_identifier",value:O?.model_identifier||"",onChange:Y=>{se(fe=>fe?{...fe,model_identifier:Y.target.value}:null),we.model_identifier&&Je(fe=>({...fe,model_identifier:void 0}))},placeholder:"Qwen/Qwen3-30B-A3B-Instruct-2507",className:we.model_identifier?"border-destructive focus-visible:ring-destructive":""}),we.model_identifier&&e.jsx("p",{className:"text-xs text-destructive",children:we.model_identifier}),ze&&qt?.modelFetcher&&!we.model_identifier&&e.jsxs(al,{variant:"destructive",className:"mt-2 py-2",children:[e.jsx(za,{className:"h-4 w-4"}),e.jsx(ll,{className:"text-xs",children:ze})]}),qt?.modelFetcher&&e.jsx(ce,{value:O?.model_identifier||"",onChange:Y=>{se(fe=>fe?{...fe,model_identifier:Y.target.value}:null),we.model_identifier&&Je(fe=>({...fe,model_identifier:void 0}))},placeholder:"或手动输入模型标识符",className:`mt-2 ${we.model_identifier?"border-destructive focus-visible:ring-destructive":""}`}),!we.model_identifier&&e.jsx("p",{className:"text-xs text-muted-foreground",children:ze?'请手动输入模型标识符,或前往"模型提供商配置"检查 API Key':qt?.modelFetcher?`已识别为 ${qt.display_name},支持自动获取模型列表`:"API 提供商提供的模型 ID"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"price_in",children:"输入价格 (¥/M token)"}),e.jsx(ce,{id:"price_in",type:"number",step:"0.1",min:"0",value:O?.price_in??"",onChange:Y=>{const fe=Y.target.value===""?null:parseFloat(Y.target.value);se(Me=>Me?{...Me,price_in:fe}:null)},placeholder:"默认: 0"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"price_out",children:"输出价格 (¥/M token)"}),e.jsx(ce,{id:"price_out",type:"number",step:"0.1",min:"0",value:O?.price_out??"",onChange:Y=>{const fe=Y.target.value===""?null:parseFloat(Y.target.value);se(Me=>Me?{...Me,price_out:fe}:null)},placeholder:"默认: 0"})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"force_stream_mode",checked:O?.force_stream_mode||!1,onCheckedChange:Y=>se(fe=>fe?{...fe,force_stream_mode:Y}:null)}),e.jsx(N,{htmlFor:"force_stream_mode",className:"cursor-pointer",children:"强制流式输出模式"})]})]}),e.jsxs(os,{children:[e.jsx(b,{variant:"outline",onClick:()=>S(!1),"data-tour":"model-cancel-button",children:"取消"}),e.jsx(b,{onClick:Oa,"data-tour":"model-save-button",children:"保存"})]})]})}),e.jsx(ft,{open:be,onOpenChange:pe,children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:['确定要删除模型 "',je!==null?n[je]?.name:"",'" 吗? 此操作无法撤销。']})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:ba,children:"删除"})]})]})}),e.jsx(ft,{open:_,onOpenChange:me,children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认批量删除"}),e.jsxs(dt,{children:["确定要删除选中的 ",H.size," 个模型吗? 此操作无法撤销。"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:es,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),z&&e.jsx($u,{onRestartComplete:ds,onRestartFailed:ri})]})})}function fa({title:n,description:r,taskConfig:c,modelNames:d,onChange:h,hideTemperature:x=!1,hideMaxTokens:f=!1,dataTour:j}){const p=w=>{h("model_list",w)};return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"font-semibold text-base sm:text-lg",children:n}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:r})]}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":j,children:[e.jsx(N,{children:"模型列表"}),e.jsx(ew,{options:d.map(w=>({label:w,value:w})),selected:c.model_list||[],onChange:p,placeholder:"选择模型...",emptyText:"暂无可用模型"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[!x&&e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{children:"温度"}),e.jsx(ce,{type:"number",step:"0.1",min:"0",max:"1",value:c.temperature??.3,onChange:w=>{const v=parseFloat(w.target.value);!isNaN(v)&&v>=0&&v<=1&&h("temperature",v)},className:"w-20 h-8 text-sm"})]}),e.jsx(ka,{value:[c.temperature??.3],onValueChange:w=>h("temperature",w[0]),min:0,max:1,step:.1,className:"w-full"})]}),!f&&e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"最大 Token"}),e.jsx(ce,{type:"number",step:"1",min:"1",value:c.max_tokens??1024,onChange:w=>h("max_tokens",parseInt(w.target.value))})]})]})]})]})}const ro="/api/webui/config";async function aw(){const r=await(await ke(`${ro}/adapter-config/path`)).json();return!r.success||!r.path?null:{path:r.path,lastModified:r.lastModified}}async function np(n){const c=await(await ke(`${ro}/adapter-config/path`,{method:"POST",headers:Tt(),body:JSON.stringify({path:n})})).json();if(!c.success)throw new Error(c.message||"保存路径失败")}async function ip(n){const c=await(await ke(`${ro}/adapter-config?path=${encodeURIComponent(n)}`)).json();if(!c.success)throw new Error("读取配置文件失败");return c.content}async function rp(n,r){const d=await(await ke(`${ro}/adapter-config`,{method:"POST",headers:Tt(),body:JSON.stringify({path:n,content:r})})).json();if(!d.success)throw new Error(d.message||"保存配置失败")}const Qs={inner:{version:"0.1.2"},nickname:{nickname:""},napcat_server:{host:"localhost",port:8095,token:"",heartbeat_interval:30},maibot_server:{host:"localhost",port:8e3},chat:{group_list_type:"whitelist",group_list:[],private_list_type:"whitelist",private_list:[],ban_user_id:[],ban_qq_bot:!1,enable_poke:!0},voice:{use_tts:!1},debug:{level:"INFO"}},ku={oneclick:{name:"一键包",description:"使用一键包部署的适配器配置",path:"../MaiBot-Napcat-Adapter/config.toml",icon:ln},docker:{name:"Docker",description:"Docker Compose 部署的适配器配置",path:"/MaiMBot/adapters-config/config.toml",icon:py}};function lw(){const[n,r]=u.useState("upload"),[c,d]=u.useState(null),[h,x]=u.useState(""),[f,j]=u.useState(""),[p,w]=u.useState("oneclick"),[v,k]=u.useState(""),[T,E]=u.useState(!1),[R,F]=u.useState(!1),[U,M]=u.useState(!1),[Z,G]=u.useState(!1),[z,B]=u.useState(null),X=u.useRef(null),{toast:S}=Rt(),O=u.useRef(null),se=L=>{if(!L.trim())return{valid:!1,error:"路径不能为空"};if(!L.toLowerCase().endsWith(".toml"))return{valid:!1,error:"文件必须是 .toml 格式"};const $=/^([a-zA-Z]:\\|\\\\[^\\]+\\[^\\]+\\).+\.toml$/i,D=/^(\/|~\/).+\.toml$/i,ee=/^(\.{1,2}[\\/]|[^:\\/]).+\.toml$/i,Ne=$.test(L),ze=D.test(L),We=ee.test(L);return!Ne&&!ze&&!We?{valid:!1,error:"路径格式错误"}:/[<>"|?*\x00-\x1F]/.test(L)?{valid:!1,error:"路径包含非法字符"}:{valid:!0,error:""}},he=L=>{if(j(L),L.trim()){const $=se(L);k($.error)}else k("")},ye=u.useCallback(async L=>{const $=ku[L];F(!0);try{const D=await ip($.path),ee=xe(D);d(ee),w(L),j($.path),await np($.path),S({title:"加载成功",description:`已从${$.name}预设加载配置`})}catch(D){console.error("加载预设配置失败:",D),S({title:"加载失败",description:D instanceof Error?D.message:"无法读取预设配置文件",variant:"destructive"})}finally{F(!1)}},[S]),be=u.useCallback(async L=>{const $=se(L);if(!$.valid){k($.error),S({title:"路径无效",description:$.error,variant:"destructive"});return}k(""),F(!0);try{const D=await ip(L),ee=xe(D);d(ee),j(L),await np(L),S({title:"加载成功",description:"已从配置文件加载"})}catch(D){console.error("加载配置失败:",D),S({title:"加载失败",description:D instanceof Error?D.message:"无法读取配置文件",variant:"destructive"})}finally{F(!1)}},[S]);u.useEffect(()=>{(async()=>{try{const $=await aw();if($&&$.path){j($.path);const D=Object.entries(ku).find(([,ee])=>ee.path===$.path);D?(r("preset"),w(D[0]),await ye(D[0])):(r("path"),await be($.path))}}catch($){console.error("加载保存的路径失败:",$)}})()},[be,ye]);const pe=u.useCallback(L=>{n!=="path"&&n!=="preset"||!f||(O.current&&clearTimeout(O.current),O.current=setTimeout(async()=>{E(!0);try{const $=Q(L);await rp(f,$),S({title:"自动保存成功",description:"配置已保存到文件"})}catch($){console.error("自动保存失败:",$),S({title:"自动保存失败",description:$ instanceof Error?$.message:"保存配置失败",variant:"destructive"})}finally{E(!1)}},1e3))},[n,f,S]),je=async()=>{if(!c||!f)return;const L=se(f);if(!L.valid){S({title:"保存失败",description:L.error,variant:"destructive"});return}E(!0);try{const $=Q(c);await rp(f,$),S({title:"保存成功",description:"配置已保存到文件"})}catch($){console.error("保存失败:",$),S({title:"保存失败",description:$ instanceof Error?$.message:"保存配置失败",variant:"destructive"})}finally{E(!1)}},_e=async()=>{f&&await be(f)},y=L=>{if(L!==n){if(c){B(L),M(!0);return}q(L)}},q=L=>{d(null),x(""),k(""),r(L),L==="preset"&&ye("oneclick"),S({title:"已切换模式",description:{upload:"现在可以上传配置文件",path:"现在可以指定配置文件路径",preset:"现在可以使用预设配置"}[L]})},H=()=>{z&&(q(z),B(null)),M(!1)},ie=()=>{if(c){G(!0);return}_()},_=()=>{j(""),d(null),k(""),S({title:"已清空",description:"路径和配置已清空"})},me=()=>{_(),G(!1)},xe=L=>{const $=JSON.parse(JSON.stringify(Qs)),D=L.split(` +`);let ee="";for(const Ne of D){const ze=Ne.trim();if(!ze||ze.startsWith("#"))continue;const We=ze.match(/^\[(\w+)\]/);if(We){ee=We[1];continue}const Xe=ze.match(/^(\w+)\s*=\s*(.+)$/);if(Xe&&ee){const[,Mt,qt]=Xe;let re=qt.trim();const we=re.match(/^("[^"]*")/);if(we)re=we[1];else{const Fe=re.indexOf("#");Fe!==-1&&(re=re.substring(0,Fe).trim())}let Je;if(re==="true")Je=!0;else if(re==="false")Je=!1;else if(re.startsWith("[")&&re.endsWith("]")){const Fe=re.slice(1,-1).trim();if(Fe){const Wt=Fe.split(",").map(Ns=>{const Ke=Ns.trim();return isNaN(Number(Ke))?Ke.replace(/"/g,""):Number(Ke)}),Xs=typeof Wt[0];Je=Wt.every(Ns=>typeof Ns===Xs)?Wt:Wt.filter(Ns=>typeof Ns=="number")}else Je=[]}else re.startsWith('"')&&re.endsWith('"')?Je=re.slice(1,-1):isNaN(Number(re))?Je=re.replace(/"/g,""):Je=Number(re);if(ee in $){const Fe=$[ee];Fe[Mt]=Je}}}return $},Q=L=>{const $=[],D=(ee,Ne)=>ee===""||ee===null||ee===void 0?Ne:ee;return $.push("[inner]"),$.push(`version = "${D(L.inner.version,Qs.inner.version)}" # 版本号`),$.push("# 请勿修改版本号,除非你知道自己在做什么"),$.push(""),$.push("[nickname] # 现在没用"),$.push(`nickname = "${D(L.nickname.nickname,Qs.nickname.nickname)}"`),$.push(""),$.push("[napcat_server] # Napcat连接的ws服务设置"),$.push(`host = "${D(L.napcat_server.host,Qs.napcat_server.host)}" # Napcat设定的主机地址`),$.push(`port = ${D(L.napcat_server.port||0,Qs.napcat_server.port)} # Napcat设定的端口`),$.push(`token = "${D(L.napcat_server.token,Qs.napcat_server.token)}" # Napcat设定的访问令牌,若无则留空`),$.push(`heartbeat_interval = ${D(L.napcat_server.heartbeat_interval||0,Qs.napcat_server.heartbeat_interval)} # 与Napcat设置的心跳相同(按秒计)`),$.push(""),$.push("[maibot_server] # 连接麦麦的ws服务设置"),$.push(`host = "${D(L.maibot_server.host,Qs.maibot_server.host)}" # 麦麦在.env文件中设置的主机地址,即HOST字段`),$.push(`port = ${D(L.maibot_server.port||0,Qs.maibot_server.port)} # 麦麦在.env文件中设置的端口,即PORT字段`),$.push(""),$.push("[chat] # 黑白名单功能"),$.push(`group_list_type = "${D(L.chat.group_list_type,Qs.chat.group_list_type)}" # 群组名单类型,可选为:whitelist, blacklist`),$.push(`group_list = [${L.chat.group_list.join(", ")}] # 群组名单`),$.push("# 当group_list_type为whitelist时,只有群组名单中的群组可以聊天"),$.push("# 当group_list_type为blacklist时,群组名单中的任何群组无法聊天"),$.push(`private_list_type = "${D(L.chat.private_list_type,Qs.chat.private_list_type)}" # 私聊名单类型,可选为:whitelist, blacklist`),$.push(`private_list = [${L.chat.private_list.join(", ")}] # 私聊名单`),$.push("# 当private_list_type为whitelist时,只有私聊名单中的用户可以聊天"),$.push("# 当private_list_type为blacklist时,私聊名单中的任何用户无法聊天"),$.push(`ban_user_id = [${L.chat.ban_user_id.join(", ")}] # 全局禁止名单(全局禁止名单中的用户无法进行任何聊天)`),$.push(`ban_qq_bot = ${L.chat.ban_qq_bot} # 是否屏蔽QQ官方机器人`),$.push(`enable_poke = ${L.chat.enable_poke} # 是否启用戳一戳功能`),$.push(""),$.push("[voice] # 发送语音设置"),$.push(`use_tts = ${L.voice.use_tts} # 是否使用tts语音(请确保你配置了tts并有对应的adapter)`),$.push(""),$.push("[debug]"),$.push(`level = "${D(L.debug.level,Qs.debug.level)}" # 日志等级(DEBUG, INFO, WARNING, ERROR, CRITICAL)`),$.join(` +`)},de=L=>{const $=L.target.files?.[0];if(!$)return;const D=new FileReader;D.onload=ee=>{try{const Ne=ee.target?.result,ze=xe(Ne);d(ze),x($.name),S({title:"上传成功",description:`已加载配置文件:${$.name}`})}catch(Ne){console.error("解析配置文件失败:",Ne),S({title:"解析失败",description:"配置文件格式错误,请检查文件内容",variant:"destructive"})}},D.readAsText($)},ge=()=>{if(!c)return;const L=Q(c),$=new Blob([L],{type:"text/plain;charset=utf-8"}),D=URL.createObjectURL($),ee=document.createElement("a");ee.href=D,ee.download=h||"config.toml",document.body.appendChild(ee),ee.click(),document.body.removeChild(ee),URL.revokeObjectURL(D),S({title:"下载成功",description:"配置文件已下载,请手动覆盖并重启适配器"})},le=()=>{d(JSON.parse(JSON.stringify(Qs))),x("config.toml"),S({title:"已加载默认配置",description:"可以开始编辑配置"})};return e.jsx(Ie,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦适配器配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的 QQ 适配器的配置文件"})]})}),e.jsxs("div",{className:"flex items-start gap-2 p-3 rounded-lg border border-amber-500/50 bg-amber-500/10 text-amber-700 dark:text-amber-400",children:[e.jsx(Ea,{className:"h-4 w-4 mt-0.5 flex-shrink-0"}),e.jsx("p",{className:"text-sm",children:"适配器配置保存之后使用 WebUI 的重启功能适配器并不会重启,需要手动重启适配器。"})]}),e.jsxs(Ve,{children:[e.jsxs(pt,{children:[e.jsx(gt,{children:"工作模式"}),e.jsx(Kt,{children:"选择配置文件的管理方式"})]}),e.jsxs(yt,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3 md:gap-4",children:[e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="preset"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>y("preset"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(ln,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"预设模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"使用预设的部署配置"})]})]})}),e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="upload"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>y("upload"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(cr,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"上传文件模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"上传配置文件,编辑后下载并手动覆盖"})]})]})}),e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="path"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>y("path"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(gy,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"指定路径模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"指定配置文件路径,自动加载和保存"})]})]})})]}),n==="preset"&&e.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[e.jsx(N,{className:"text-sm md:text-base",children:"选择部署方式"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:Object.entries(ku).map(([L,$])=>{const D=$.icon,ee=p===L;return e.jsx("div",{className:`border-2 rounded-lg p-3 cursor-pointer transition-all ${ee?"border-primary bg-primary/5":"border-muted hover:border-primary/50"}`,onClick:()=>{w(L),ye(L)},children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(D,{className:"h-5 w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h4",{className:"font-semibold text-sm",children:$.name}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:$.description}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1 font-mono break-all",children:$.path})]})]})},L)})})]}),n==="path"&&e.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"config-path",className:"text-sm md:text-base",children:"配置文件路径"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs("div",{className:"flex-1 space-y-1",children:[e.jsx(ce,{id:"config-path",value:f,onChange:L=>he(L.target.value),placeholder:"例: C:\\Adapter\\config.toml",className:`text-sm ${v?"border-destructive":""}`}),v&&e.jsx("p",{className:"text-xs text-destructive",children:v})]}),e.jsx(b,{onClick:()=>be(f),disabled:R||!f||!!v,className:"w-full sm:w-auto",children:R?e.jsxs(e.Fragment,{children:[e.jsx(ps,{className:"h-4 w-4 animate-spin mr-2"}),e.jsx("span",{className:"sm:hidden",children:"加载中..."})]}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"sm:hidden",children:"加载配置"}),e.jsx("span",{className:"hidden sm:inline",children:"加载"})]})})]})]}),e.jsxs("details",{className:"rounded-lg bg-muted/50 p-3 group",children:[e.jsxs("summary",{className:"text-xs font-medium cursor-pointer select-none list-none flex items-center justify-between",children:[e.jsx("span",{children:"路径格式说明"}),e.jsx("svg",{className:"h-4 w-4 transition-transform group-open:rotate-180",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),e.jsxs("div",{className:"mt-2 space-y-2 text-xs text-muted-foreground",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Windows"})}),e.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[e.jsx("div",{children:"C:\\Adapter\\config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"D:\\MaiBot\\adapter\\config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"\\\\server\\share\\config.toml"})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Linux"})}),e.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[e.jsx("div",{children:"/opt/adapter/config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"/home/user/adapter/config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"~/adapter/config.toml"})]})]}),e.jsx("p",{className:"pt-1 border-t text-[10px] md:text-xs",children:"💡 配置会自动保存到指定文件,修改后 1 秒自动保存"})]})]})]})]})]}),e.jsxs(al,{children:[e.jsx(za,{className:"h-4 w-4"}),e.jsx(ll,{children:n==="preset"?e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"预设模式:"}),"选择预设的部署方式,配置会自动加载,修改后 1 秒自动保存",T&&" (正在保存...)"]}):n==="upload"?e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"上传文件模式:"}),"上传配置文件 → 在线编辑 → 下载文件 → 手动覆盖并重启适配器"]}):e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"指定路径模式:"}),"指定配置文件路径后,配置会自动加载,修改后 1 秒自动保存",T&&" (正在保存...)"]})})]}),n==="upload"&&!c&&e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 w-full",children:[e.jsx("input",{ref:X,type:"file",accept:".toml",className:"hidden",onChange:de}),e.jsxs(b,{onClick:()=>X.current?.click(),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(cr,{className:"mr-2 h-4 w-4"}),"上传配置"]}),e.jsxs(b,{onClick:le,size:"sm",className:"w-full sm:w-auto",children:[e.jsx(Ta,{className:"mr-2 h-4 w-4"}),"使用默认配置"]})]}),n==="upload"&&c&&e.jsx("div",{className:"flex gap-2",children:e.jsxs(b,{onClick:ge,size:"sm",className:"w-full sm:w-auto",children:[e.jsx(sl,{className:"mr-2 h-4 w-4"}),"下载配置"]})}),(n==="preset"||n==="path")&&c&&e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs(b,{onClick:je,size:"sm",disabled:T||!!v,className:"w-full sm:w-auto",children:[e.jsx(pr,{className:"mr-2 h-4 w-4"}),T?"保存中...":"立即保存"]}),e.jsxs(b,{onClick:_e,size:"sm",variant:"outline",disabled:R,className:"w-full sm:w-auto",children:[e.jsx(ps,{className:`mr-2 h-4 w-4 ${R?"animate-spin":""}`}),"刷新"]}),n==="path"&&e.jsxs(b,{onClick:ie,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(Pe,{className:"mr-2 h-4 w-4"}),"清空路径"]})]}),c?e.jsxs(Aa,{defaultValue:"napcat",className:"w-full",children:[e.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:e.jsxs(ja,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5",children:[e.jsxs(st,{value:"napcat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"Napcat 连接"}),e.jsx("span",{className:"sm:hidden",children:"Napcat"})]}),e.jsxs(st,{value:"maibot",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"麦麦连接"}),e.jsx("span",{className:"sm:hidden",children:"麦麦"})]}),e.jsxs(st,{value:"chat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"聊天控制"}),e.jsx("span",{className:"sm:hidden",children:"聊天"})]}),e.jsxs(st,{value:"voice",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"语音设置"}),e.jsx("span",{className:"sm:hidden",children:"语音"})]}),e.jsx(st,{value:"debug",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:"调试"})]})}),e.jsx(_t,{value:"napcat",className:"space-y-4",children:e.jsx(nw,{config:c,onChange:L=>{d(L),pe(L)}})}),e.jsx(_t,{value:"maibot",className:"space-y-4",children:e.jsx(iw,{config:c,onChange:L=>{d(L),pe(L)}})}),e.jsx(_t,{value:"chat",className:"space-y-4",children:e.jsx(rw,{config:c,onChange:L=>{d(L),pe(L)}})}),e.jsx(_t,{value:"voice",className:"space-y-4",children:e.jsx(cw,{config:c,onChange:L=>{d(L),pe(L)}})}),e.jsx(_t,{value:"debug",className:"space-y-4",children:e.jsx(ow,{config:c,onChange:L=>{d(L),pe(L)}})})]}):e.jsx("div",{className:"rounded-lg border bg-card p-6 md:p-12",children:e.jsxs("div",{className:"text-center space-y-3 md:space-y-4",children:[e.jsx(Ta,{className:"h-12 w-12 md:h-16 md:w-16 mx-auto text-muted-foreground"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold",children:"尚未加载配置"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-2 px-4",children:n==="preset"?"请选择预设的部署方式":n==="upload"?"请上传现有配置文件,或使用默认配置开始编辑":"请指定配置文件路径并点击加载按钮"})]})]})}),e.jsx(ft,{open:U,onOpenChange:M,children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认切换模式"}),e.jsxs(dt,{children:["切换模式将清空当前配置,确定要继续吗?",e.jsx("br",{}),e.jsx("span",{className:"text-destructive font-medium",children:"请确保已保存重要配置"})]})]}),e.jsxs(ct,{children:[e.jsx(mt,{onClick:()=>{M(!1),B(null)},children:"取消"}),e.jsx(ut,{onClick:H,children:"确认切换"})]})]})}),e.jsx(ft,{open:Z,onOpenChange:G,children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认清空路径"}),e.jsxs(dt,{children:["清空路径将清除当前配置,确定要继续吗?",e.jsx("br",{}),e.jsx("span",{className:"text-muted-foreground text-sm",children:"此操作不会删除配置文件,只是清除界面中的配置"})]})]}),e.jsxs(ct,{children:[e.jsx(mt,{onClick:()=>G(!1),children:"取消"}),e.jsx(ut,{onClick:me,className:"bg-destructive hover:bg-destructive/90",children:"确认清空"})]})]})})]})})}function nw({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"Napcat WebSocket 服务设置"}),e.jsxs("div",{className:"grid gap-3 md:gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"napcat-host",className:"text-sm md:text-base",children:"主机地址"}),e.jsx(ce,{id:"napcat-host",value:n.napcat_server.host,onChange:c=>r({...n,napcat_server:{...n.napcat_server,host:c.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的主机地址"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"napcat-port",className:"text-sm md:text-base",children:"端口"}),e.jsx(ce,{id:"napcat-port",type:"number",value:n.napcat_server.port||"",onChange:c=>r({...n,napcat_server:{...n.napcat_server,port:c.target.value?parseInt(c.target.value):0}}),placeholder:"8095",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的端口(留空使用默认值 8095)"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"napcat-token",className:"text-sm md:text-base",children:"访问令牌(Token)"}),e.jsx(ce,{id:"napcat-token",type:"password",value:n.napcat_server.token,onChange:c=>r({...n,napcat_server:{...n.napcat_server,token:c.target.value}}),placeholder:"留空表示无需令牌",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的访问令牌,若无则留空"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"napcat-heartbeat",className:"text-sm md:text-base",children:"心跳间隔(秒)"}),e.jsx(ce,{id:"napcat-heartbeat",type:"number",value:n.napcat_server.heartbeat_interval||"",onChange:c=>r({...n,napcat_server:{...n.napcat_server,heartbeat_interval:c.target.value?parseInt(c.target.value):0}}),placeholder:"30",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"与 Napcat 设置的心跳间隔保持一致(留空使用默认值 30)"})]})]})]})})}function iw({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"麦麦 WebSocket 服务设置"}),e.jsxs("div",{className:"grid gap-3 md:gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"maibot-host",className:"text-sm md:text-base",children:"主机地址"}),e.jsx(ce,{id:"maibot-host",value:n.maibot_server.host,onChange:c=>r({...n,maibot_server:{...n.maibot_server,host:c.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 HOST 字段"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"maibot-port",className:"text-sm md:text-base",children:"端口"}),e.jsx(ce,{id:"maibot-port",type:"number",value:n.maibot_server.port||"",onChange:c=>r({...n,maibot_server:{...n.maibot_server,port:c.target.value?parseInt(c.target.value):0}}),placeholder:"8000",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 PORT 字段(留空使用默认值 8000)"})]})]})]})})}function rw({config:n,onChange:r}){const c=x=>{const f={...n};x==="group"?f.chat.group_list=[...f.chat.group_list,0]:x==="private"?f.chat.private_list=[...f.chat.private_list,0]:f.chat.ban_user_id=[...f.chat.ban_user_id,0],r(f)},d=(x,f)=>{const j={...n};x==="group"?j.chat.group_list=j.chat.group_list.filter((p,w)=>w!==f):x==="private"?j.chat.private_list=j.chat.private_list.filter((p,w)=>w!==f):j.chat.ban_user_id=j.chat.ban_user_id.filter((p,w)=>w!==f),r(j)},h=(x,f,j)=>{const p={...n};x==="group"?p.chat.group_list[f]=j:x==="private"?p.chat.private_list[f]=j:p.chat.ban_user_id[f]=j,r(p)};return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"聊天黑白名单功能"}),e.jsxs("div",{className:"grid gap-4 md:gap-6",children:[e.jsxs("div",{className:"space-y-3 md:space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-sm md:text-base",children:"群组名单类型"}),e.jsxs(Be,{value:n.chat.group_list_type,onValueChange:x=>r({...n,chat:{...n.chat,group_list_type:x}}),children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),e.jsx(ne,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsx(N,{className:"text-sm md:text-base",children:"群组列表"}),e.jsxs(b,{onClick:()=>c("group"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Ta,{className:"mr-1 h-4 w-4"}),"添加群号"]})]}),n.chat.group_list.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{type:"number",value:x,onChange:j=>h("group",f,parseInt(j.target.value)||0),placeholder:"输入群号",className:"text-sm md:text-base"}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(Pe,{className:"h-4 w-4"})})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:["确定要删除群号 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>d("group",f),children:"删除"})]})]})]})]},f)),n.chat.group_list.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无群组"})]})]}),e.jsxs("div",{className:"space-y-3 md:space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-sm md:text-base",children:"私聊名单类型"}),e.jsxs(Be,{value:n.chat.private_list_type,onValueChange:x=>r({...n,chat:{...n.chat,private_list_type:x}}),children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),e.jsx(ne,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsx(N,{className:"text-sm md:text-base",children:"私聊列表"}),e.jsxs(b,{onClick:()=>c("private"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Ta,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),n.chat.private_list.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{type:"number",value:x,onChange:j=>h("private",f,parseInt(j.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(Pe,{className:"h-4 w-4"})})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:["确定要删除用户 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>d("private",f),children:"删除"})]})]})]})]},f)),n.chat.private_list.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无用户"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsxs("div",{children:[e.jsx(N,{className:"text-sm md:text-base",children:"全局禁止名单"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"名单中的用户无法进行任何聊天"})]}),e.jsxs(b,{onClick:()=>c("ban"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Ta,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),n.chat.ban_user_id.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{type:"number",value:x,onChange:j=>h("ban",f,parseInt(j.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(Pe,{className:"h-4 w-4"})})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:["确定要从全局禁止名单中删除用户 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>d("ban",f),children:"删除"})]})]})]})]},f)),n.chat.ban_user_id.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无禁止用户"})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(N,{className:"text-sm md:text-base",children:"屏蔽QQ官方机器人"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否屏蔽来自QQ官方机器人的消息"})]}),e.jsx(Ge,{checked:n.chat.ban_qq_bot,onCheckedChange:x=>r({...n,chat:{...n.chat,ban_qq_bot:x}})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(N,{className:"text-sm md:text-base",children:"启用戳一戳功能"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否响应戳一戳消息"})]}),e.jsx(Ge,{checked:n.chat.enable_poke,onCheckedChange:x=>r({...n,chat:{...n.chat,enable_poke:x}})})]})]})]})})}function cw({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"发送语音设置"}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(N,{className:"text-sm md:text-base",children:"使用 TTS 语音"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"请确保已配置 TTS 并有对应的适配器"})]}),e.jsx(Ge,{checked:n.voice.use_tts,onCheckedChange:c=>r({...n,voice:{use_tts:c}})})]})]})})}function ow({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"调试设置"}),e.jsx("div",{className:"grid gap-3 md:gap-4",children:e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-sm md:text-base",children:"日志等级"}),e.jsxs(Be,{value:n.debug.level,onValueChange:c=>r({...n,debug:{level:c}}),children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"DEBUG",children:"DEBUG(调试)"}),e.jsx(ne,{value:"INFO",children:"INFO(信息)"}),e.jsx(ne,{value:"WARNING",children:"WARNING(警告)"}),e.jsx(ne,{value:"ERROR",children:"ERROR(错误)"}),e.jsx(ne,{value:"CRITICAL",children:"CRITICAL(严重)"})]})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"设置适配器的日志输出等级"})]})})]})})}const dw=["defaultChecked","defaultValue","suppressContentEditableWarning","suppressHydrationWarning","dangerouslySetInnerHTML","accessKey","className","contentEditable","contextMenu","dir","draggable","hidden","id","lang","placeholder","slot","spellCheck","style","tabIndex","title","translate","radioGroup","role","about","datatype","inlist","prefix","property","resource","typeof","vocab","autoCapitalize","autoCorrect","autoSave","color","itemProp","itemScope","itemType","itemID","itemRef","results","security","unselectable","inputMode","is","onCopy","onCopyCapture","onCut","onCutCapture","onPaste","onPasteCapture","onCompositionEnd","onCompositionEndCapture","onCompositionStart","onCompositionStartCapture","onCompositionUpdate","onCompositionUpdateCapture","onFocus","onFocusCapture","onBlur","onBlurCapture","onChange","onChangeCapture","onBeforeInput","onBeforeInputCapture","onInput","onInputCapture","onReset","onResetCapture","onSubmit","onSubmitCapture","onInvalid","onInvalidCapture","onLoad","onLoadCapture","onError","onErrorCapture","onKeyDown","onKeyDownCapture","onKeyPress","onKeyPressCapture","onKeyUp","onKeyUpCapture","onAbort","onAbortCapture","onCanPlay","onCanPlayCapture","onCanPlayThrough","onCanPlayThroughCapture","onDurationChange","onDurationChangeCapture","onEmptied","onEmptiedCapture","onEncrypted","onEncryptedCapture","onEnded","onEndedCapture","onLoadedData","onLoadedDataCapture","onLoadedMetadata","onLoadedMetadataCapture","onLoadStart","onLoadStartCapture","onPause","onPauseCapture","onPlay","onPlayCapture","onPlaying","onPlayingCapture","onProgress","onProgressCapture","onRateChange","onRateChangeCapture","onSeeked","onSeekedCapture","onSeeking","onSeekingCapture","onStalled","onStalledCapture","onSuspend","onSuspendCapture","onTimeUpdate","onTimeUpdateCapture","onVolumeChange","onVolumeChangeCapture","onWaiting","onWaitingCapture","onAuxClick","onAuxClickCapture","onClick","onClickCapture","onContextMenu","onContextMenuCapture","onDoubleClick","onDoubleClickCapture","onDrag","onDragCapture","onDragEnd","onDragEndCapture","onDragEnter","onDragEnterCapture","onDragExit","onDragExitCapture","onDragLeave","onDragLeaveCapture","onDragOver","onDragOverCapture","onDragStart","onDragStartCapture","onDrop","onDropCapture","onMouseDown","onMouseDownCapture","onMouseEnter","onMouseLeave","onMouseMove","onMouseMoveCapture","onMouseOut","onMouseOutCapture","onMouseOver","onMouseOverCapture","onMouseUp","onMouseUpCapture","onSelect","onSelectCapture","onTouchCancel","onTouchCancelCapture","onTouchEnd","onTouchEndCapture","onTouchMove","onTouchMoveCapture","onTouchStart","onTouchStartCapture","onPointerDown","onPointerDownCapture","onPointerMove","onPointerMoveCapture","onPointerUp","onPointerUpCapture","onPointerCancel","onPointerCancelCapture","onPointerEnter","onPointerEnterCapture","onPointerLeave","onPointerLeaveCapture","onPointerOver","onPointerOverCapture","onPointerOut","onPointerOutCapture","onGotPointerCapture","onGotPointerCaptureCapture","onLostPointerCapture","onLostPointerCaptureCapture","onScroll","onScrollCapture","onWheel","onWheelCapture","onAnimationStart","onAnimationStartCapture","onAnimationEnd","onAnimationEndCapture","onAnimationIteration","onAnimationIterationCapture","onTransitionEnd","onTransitionEndCapture"],uw=/^(aria-|data-)/,kg=n=>Object.fromEntries(Object.entries(n).filter(([r])=>uw.test(r)||dw.includes(r)));function mw(n,r){const c=kg(n);return Object.keys(n).some(d=>!Object.hasOwn(c,d)&&n[d]!==r[d])}class hw extends u.Component{container;plugin;componentDidMount(){this.installPlugin()}componentDidUpdate(r){if(r.uppy!==this.props.uppy)this.uninstallPlugin(r),this.installPlugin();else if(mw(this.props,r)){const{uppy:c,...d}={...this.props,target:this.container};this.plugin.setOptions(d)}}componentWillUnmount(){this.uninstallPlugin()}installPlugin(){const{uppy:r,...c}={id:"Dashboard",...this.props,inline:!0,target:this.container};r.use(Py,c),this.plugin=r.getPlugin(c.id)}uninstallPlugin(r=this.props){const{uppy:c}=r;c.removePlugin(this.plugin)}render(){return u.createElement("div",{className:"uppy-Container",ref:r=>{this.container=r},...kg(this.props)})}}function xw({src:n,alt:r="表情包",className:c,maxRetries:d=5,retryInterval:h=1500}){const[x,f]=u.useState("loading"),[j,p]=u.useState(0),[w,v]=u.useState(null),k=u.useCallback(async()=>{try{const T=await fetch(n,{credentials:"include"});if(T.status===202){f("generating"),j{p(F=>F+1)},h):f("error");return}if(!T.ok){f("error");return}const E=await T.blob(),R=URL.createObjectURL(E);v(R),f("loaded")}catch(T){console.error("加载缩略图失败:",T),f("error")}},[n,j,d,h]);return u.useEffect(()=>{f("loading"),p(0),v(null)},[n]),u.useEffect(()=>{k()},[k]),u.useEffect(()=>()=>{w&&URL.revokeObjectURL(w)},[w]),x==="loading"||x==="generating"?e.jsx(dg,{className:K("w-full h-full",c)}):x==="error"||!w?e.jsx("div",{className:K("w-full h-full flex items-center justify-center bg-muted",c),children:e.jsx(ag,{className:"h-8 w-8 text-muted-foreground"})}):e.jsx("img",{src:w,alt:r,className:K("w-full h-full object-contain",c)})}function fw({content:n,className:r=""}){return e.jsx("div",{className:`prose prose-sm dark:prose-invert max-w-none ${r}`,children:e.jsx(eN,{remarkPlugins:[sN,aN],rehypePlugins:[tN],components:{code({inline:c,className:d,children:h,...x}){return c?e.jsx("code",{className:"bg-muted px-1.5 py-0.5 rounded text-sm font-mono",...x,children:h}):e.jsx("code",{className:`${d} block bg-muted p-4 rounded-lg overflow-x-auto`,...x,children:h})},table({children:c,...d}){return e.jsx("div",{className:"overflow-x-auto",children:e.jsx("table",{className:"border-collapse border border-border",...d,children:c})})},th({children:c,...d}){return e.jsx("th",{className:"border border-border bg-muted px-4 py-2 text-left font-semibold",...d,children:c})},td({children:c,...d}){return e.jsx("td",{className:"border border-border px-4 py-2",...d,children:c})},a({children:c,...d}){return e.jsx("a",{className:"text-primary hover:underline",target:"_blank",rel:"noopener noreferrer",...d,children:c})},blockquote({children:c,...d}){return e.jsx("blockquote",{className:"border-l-4 border-primary pl-4 italic text-muted-foreground",...d,children:c})},h1({children:c,...d}){return e.jsx("h1",{className:"text-3xl font-bold mt-6 mb-4",...d,children:c})},h2({children:c,...d}){return e.jsx("h2",{className:"text-2xl font-bold mt-5 mb-3",...d,children:c})},h3({children:c,...d}){return e.jsx("h3",{className:"text-xl font-bold mt-4 mb-2",...d,children:c})},h4({children:c,...d}){return e.jsx("h4",{className:"text-lg font-semibold mt-3 mb-2",...d,children:c})},ul({children:c,...d}){return e.jsx("ul",{className:"list-disc list-inside space-y-1 my-2",...d,children:c})},ol({children:c,...d}){return e.jsx("ol",{className:"list-decimal list-inside space-y-1 my-2",...d,children:c})},p({children:c,...d}){return e.jsx("p",{className:"my-2 leading-relaxed",...d,children:c})},hr({...c}){return e.jsx("hr",{className:"my-4 border-border",...c})}},children:n})})}function pw({children:n,className:r}){return e.jsx(fw,{content:n,className:r})}const da="/api/webui/emoji";async function gw(n){const r=new URLSearchParams;n.page&&r.append("page",n.page.toString()),n.page_size&&r.append("page_size",n.page_size.toString()),n.search&&r.append("search",n.search),n.is_registered!==void 0&&r.append("is_registered",n.is_registered.toString()),n.is_banned!==void 0&&r.append("is_banned",n.is_banned.toString()),n.format&&r.append("format",n.format),n.sort_by&&r.append("sort_by",n.sort_by),n.sort_order&&r.append("sort_order",n.sort_order);const c=await ke(`${da}/list?${r}`,{});if(!c.ok)throw new Error(`获取表情包列表失败: ${c.statusText}`);return c.json()}async function jw(n){const r=await ke(`${da}/${n}`,{});if(!r.ok)throw new Error(`获取表情包详情失败: ${r.statusText}`);return r.json()}async function vw(n,r){const c=await ke(`${da}/${n}`,{method:"PATCH",body:JSON.stringify(r)});if(!c.ok)throw new Error(`更新表情包失败: ${c.statusText}`);return c.json()}async function bw(n){const r=await ke(`${da}/${n}`,{method:"DELETE"});if(!r.ok)throw new Error(`删除表情包失败: ${r.statusText}`);return r.json()}async function yw(){const n=await ke(`${da}/stats/summary`,{});if(!n.ok)throw new Error(`获取统计数据失败: ${n.statusText}`);return n.json()}async function Nw(n){const r=await ke(`${da}/${n}/register`,{method:"POST"});if(!r.ok)throw new Error(`注册表情包失败: ${r.statusText}`);return r.json()}async function ww(n){const r=await ke(`${da}/${n}/ban`,{method:"POST"});if(!r.ok)throw new Error(`封禁表情包失败: ${r.statusText}`);return r.json()}function _w(n,r=!1){return r?`${da}/${n}/thumbnail?original=true`:`${da}/${n}/thumbnail`}function Sw(n){return`${da}/${n}/thumbnail?original=true`}async function Cw(n){const r=await ke(`${da}/batch/delete`,{method:"POST",body:JSON.stringify({emoji_ids:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"批量删除失败")}return r.json()}function kw(){return`${da}/upload`}function Tw(){const[n,r]=u.useState([]),[c,d]=u.useState(null),[h,x]=u.useState(!1),[f,j]=u.useState(1),[p,w]=u.useState(0),[v,k]=u.useState(20),[T,E]=u.useState("all"),[R,F]=u.useState("all"),[U,M]=u.useState("all"),[Z,G]=u.useState("usage_count"),[z,B]=u.useState("desc"),[X,S]=u.useState(null),[O,se]=u.useState(!1),[he,ye]=u.useState(!1),[be,pe]=u.useState(!1),[je,_e]=u.useState(new Set),[y,q]=u.useState(!1),[H,ie]=u.useState(""),[_,me]=u.useState("medium"),[xe,Q]=u.useState(!1),{toast:de}=Rt(),ge=u.useCallback(async()=>{try{x(!0);const re=await gw({page:f,page_size:v,is_registered:T==="all"?void 0:T==="registered",is_banned:R==="all"?void 0:R==="banned",format:U==="all"?void 0:U,sort_by:Z,sort_order:z});r(re.data),w(re.total)}catch(re){const we=re instanceof Error?re.message:"加载表情包列表失败";de({title:"错误",description:we,variant:"destructive"})}finally{x(!1)}},[f,v,T,R,U,Z,z,de]),le=async()=>{try{const re=await yw();d(re.data)}catch(re){console.error("加载统计数据失败:",re)}};u.useEffect(()=>{ge()},[ge]),u.useEffect(()=>{le()},[]);const L=async re=>{try{const we=await jw(re.id);S(we.data),se(!0)}catch(we){const Je=we instanceof Error?we.message:"加载详情失败";de({title:"错误",description:Je,variant:"destructive"})}},$=re=>{S(re),ye(!0)},D=re=>{S(re),pe(!0)},ee=async()=>{if(X)try{await bw(X.id),de({title:"成功",description:"表情包已删除"}),pe(!1),S(null),ge(),le()}catch(re){const we=re instanceof Error?re.message:"删除失败";de({title:"错误",description:we,variant:"destructive"})}},Ne=async re=>{try{await Nw(re.id),de({title:"成功",description:"表情包已注册"}),ge(),le()}catch(we){const Je=we instanceof Error?we.message:"注册失败";de({title:"错误",description:Je,variant:"destructive"})}},ze=async re=>{try{await ww(re.id),de({title:"成功",description:"表情包已封禁"}),ge(),le()}catch(we){const Je=we instanceof Error?we.message:"封禁失败";de({title:"错误",description:Je,variant:"destructive"})}},We=re=>{const we=new Set(je);we.has(re)?we.delete(re):we.add(re),_e(we)},Xe=async()=>{try{const re=await Cw(Array.from(je));de({title:"批量删除完成",description:re.message}),_e(new Set),q(!1),ge(),le()}catch(re){de({title:"批量删除失败",description:re instanceof Error?re.message:"批量删除失败",variant:"destructive"})}},Mt=()=>{const re=parseInt(H),we=Math.ceil(p/v);re>=1&&re<=we?(j(re),ie("")):de({title:"无效的页码",description:`请输入1-${we}之间的页码`,variant:"destructive"})},qt=c?.formats?Object.keys(c.formats):[];return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsxs("div",{className:"mb-4 sm:mb-6 flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"表情包管理"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理麦麦的表情包资源"})]}),e.jsxs(b,{onClick:()=>Q(!0),className:"gap-2",children:[e.jsx(cr,{className:"h-4 w-4"}),"上传表情包"]})]}),e.jsx(Ie,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[c&&e.jsxs("div",{className:"grid gap-4 grid-cols-2 lg:grid-cols-4",children:[e.jsx(Ve,{children:e.jsxs(pt,{className:"pb-2",children:[e.jsx(Kt,{children:"总数"}),e.jsx(gt,{className:"text-2xl",children:c.total})]})}),e.jsx(Ve,{children:e.jsxs(pt,{className:"pb-2",children:[e.jsx(Kt,{children:"已注册"}),e.jsx(gt,{className:"text-2xl text-green-600",children:c.registered})]})}),e.jsx(Ve,{children:e.jsxs(pt,{className:"pb-2",children:[e.jsx(Kt,{children:"已封禁"}),e.jsx(gt,{className:"text-2xl text-red-600",children:c.banned})]})}),e.jsx(Ve,{children:e.jsxs(pt,{className:"pb-2",children:[e.jsx(Kt,{children:"未注册"}),e.jsx(gt,{className:"text-2xl text-gray-600",children:c.unregistered})]})})]}),e.jsxs(Ve,{children:[e.jsx(pt,{children:e.jsxs(gt,{className:"flex items-center gap-2",children:[e.jsx(Tu,{className:"h-5 w-5"}),"筛选和排序"]})}),e.jsxs(yt,{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:"排序方式"}),e.jsxs(Be,{value:`${Z}-${z}`,onValueChange:re=>{const[we,Je]=re.split("-");G(we),B(Je),j(1)},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"usage_count-desc",children:"使用次数 (多→少)"}),e.jsx(ne,{value:"usage_count-asc",children:"使用次数 (少→多)"}),e.jsx(ne,{value:"register_time-desc",children:"注册时间 (新→旧)"}),e.jsx(ne,{value:"register_time-asc",children:"注册时间 (旧→新)"}),e.jsx(ne,{value:"record_time-desc",children:"记录时间 (新→旧)"}),e.jsx(ne,{value:"record_time-asc",children:"记录时间 (旧→新)"}),e.jsx(ne,{value:"last_used_time-desc",children:"最后使用 (新→旧)"}),e.jsx(ne,{value:"last_used_time-asc",children:"最后使用 (旧→新)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:"注册状态"}),e.jsxs(Be,{value:T,onValueChange:re=>{E(re),j(1)},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部"}),e.jsx(ne,{value:"registered",children:"已注册"}),e.jsx(ne,{value:"unregistered",children:"未注册"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:"封禁状态"}),e.jsxs(Be,{value:R,onValueChange:re=>{F(re),j(1)},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部"}),e.jsx(ne,{value:"banned",children:"已封禁"}),e.jsx(ne,{value:"unbanned",children:"未封禁"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:"格式"}),e.jsxs(Be,{value:U,onValueChange:re=>{M(re),j(1)},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部"}),qt.map(re=>e.jsxs(ne,{value:re,children:[re.toUpperCase()," (",c?.formats[re],")"]},re))]})]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 pt-4 border-t",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[je.size>0&&e.jsxs("span",{className:"text-sm text-muted-foreground",children:["已选择 ",je.size," 个表情包"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{className:"text-sm whitespace-nowrap",children:"卡片大小"}),e.jsxs(Be,{value:_,onValueChange:re=>me(re),children:[e.jsx(Re,{className:"w-24",children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"small",children:"小"}),e.jsx(ne,{value:"medium",children:"中"}),e.jsx(ne,{value:"large",children:"大"})]})]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{htmlFor:"emoji-page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(Be,{value:v.toString(),onValueChange:re=>{k(parseInt(re)),j(1),_e(new Set)},children:[e.jsx(Re,{id:"emoji-page-size",className:"w-20",children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"20",children:"20"}),e.jsx(ne,{value:"40",children:"40"}),e.jsx(ne,{value:"60",children:"60"}),e.jsx(ne,{value:"100",children:"100"})]})]}),je.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>_e(new Set),children:"取消选择"}),e.jsxs(b,{variant:"destructive",size:"sm",onClick:()=>q(!0),children:[e.jsx(Pe,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]}),e.jsx("div",{className:"flex justify-end pt-4 border-t",children:e.jsxs(b,{variant:"outline",size:"sm",onClick:ge,disabled:h,children:[e.jsx(ps,{className:`h-4 w-4 mr-2 ${h?"animate-spin":""}`}),"刷新"]})})]})]}),e.jsxs(Ve,{children:[e.jsxs(pt,{children:[e.jsx(gt,{children:"表情包列表"}),e.jsxs(Kt,{children:["共 ",p," 个表情包,当前第 ",f," 页"]})]}),e.jsxs(yt,{children:[n.length===0?e.jsx("div",{className:"text-center py-12 text-muted-foreground",children:"暂无数据"}):e.jsx("div",{className:`grid gap-3 ${_==="small"?"grid-cols-3 sm:grid-cols-4 md:grid-cols-6 lg:grid-cols-8 xl:grid-cols-10":_==="medium"?"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 xl:grid-cols-8":"grid-cols-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5"}`,children:n.map(re=>e.jsxs("div",{className:`group relative rounded-lg border bg-card overflow-hidden hover:ring-2 hover:ring-primary transition-all cursor-pointer ${je.has(re.id)?"ring-2 ring-primary bg-primary/5":""}`,onClick:()=>We(re.id),children:[e.jsx("div",{className:`absolute top-1 left-1 z-10 transition-opacity ${je.has(re.id)?"opacity-100":"opacity-0 group-hover:opacity-100"}`,children:e.jsx("div",{className:`w-5 h-5 rounded-full border-2 flex items-center justify-center ${je.has(re.id)?"bg-primary border-primary text-primary-foreground":"bg-background/80 border-muted-foreground/50"}`,children:je.has(re.id)&&e.jsx(oa,{className:"h-3 w-3"})})}),e.jsxs("div",{className:"absolute top-1 right-1 z-10 flex flex-col gap-0.5",children:[re.is_registered&&e.jsx(Qe,{variant:"default",className:"bg-green-600 text-[10px] px-1 py-0",children:"已注册"}),re.is_banned&&e.jsx(Qe,{variant:"destructive",className:"text-[10px] px-1 py-0",children:"已封禁"})]}),e.jsx("div",{className:`aspect-square bg-muted flex items-center justify-center overflow-hidden ${_==="small"?"p-1":_==="medium"?"p-2":"p-3"}`,children:e.jsx(xw,{src:_w(re.id),alt:"表情包"})}),e.jsxs("div",{className:`border-t bg-card ${_==="small"?"p-1":"p-2"}`,children:[e.jsxs("div",{className:"flex items-center justify-between gap-1 text-xs text-muted-foreground mb-1",children:[e.jsx(Qe,{variant:"outline",className:"text-[10px] px-1 py-0",children:re.format.toUpperCase()}),e.jsxs("span",{className:"font-mono",children:[re.usage_count,"次"]})]}),e.jsxs("div",{className:`flex gap-1 justify-center opacity-0 group-hover:opacity-100 transition-opacity ${_==="small"?"flex-wrap":""}`,children:[e.jsx(b,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:we=>{we.stopPropagation(),$(re)},title:"编辑",children:e.jsx(dr,{className:"h-3 w-3"})}),e.jsx(b,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:we=>{we.stopPropagation(),L(re)},title:"详情",children:e.jsx(za,{className:"h-3 w-3"})}),!re.is_registered&&e.jsx(b,{variant:"ghost",size:"icon",className:"h-6 w-6 text-green-600 hover:text-green-700",onClick:we=>{we.stopPropagation(),Ne(re)},title:"注册",children:e.jsx(oa,{className:"h-3 w-3"})}),!re.is_banned&&e.jsx(b,{variant:"ghost",size:"icon",className:"h-6 w-6 text-orange-600 hover:text-orange-700",onClick:we=>{we.stopPropagation(),ze(re)},title:"封禁",children:e.jsx(jy,{className:"h-3 w-3"})}),e.jsx(b,{variant:"ghost",size:"icon",className:"h-6 w-6 text-red-600 hover:text-red-700",onClick:we=>{we.stopPropagation(),D(re)},title:"删除",children:e.jsx(Pe,{className:"h-3 w-3"})})]})]})]},re.id))}),p>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["显示 ",(f-1)*v+1," 到"," ",Math.min(f*v,p)," 条,共 ",p," 条"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(gr,{className:"h-4 w-4"})}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>j(re=>Math.max(1,re-1)),disabled:f===1,children:[e.jsx(nn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:H,onChange:re=>ie(re.target.value),onKeyDown:re=>re.key==="Enter"&&Mt(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(p/v)}),e.jsx(b,{variant:"outline",size:"sm",onClick:Mt,disabled:!H,className:"h-8",children:"跳转"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>j(re=>re+1),disabled:f>=Math.ceil(p/v),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(Ol,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(p/v)),disabled:f>=Math.ceil(p/v),className:"hidden sm:flex",children:e.jsx(jr,{className:"h-4 w-4"})})]})]})]})]}),e.jsx(Ew,{emoji:X,open:O,onOpenChange:se}),e.jsx(zw,{emoji:X,open:he,onOpenChange:ye,onSuccess:()=>{ge(),le()}}),e.jsx(Aw,{open:xe,onOpenChange:Q,onSuccess:()=>{ge(),le()}})]})}),e.jsx(ft,{open:y,onOpenChange:q,children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认批量删除"}),e.jsxs(dt,{children:["你确定要删除选中的 ",je.size," 个表情包吗?此操作不可撤销。"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:Xe,children:"确认删除"})]})]})}),e.jsx(Qt,{open:be,onOpenChange:pe,children:e.jsxs(Ut,{children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:"确认删除"}),e.jsx(ss,{children:"确定要删除这个表情包吗?此操作无法撤销。"})]}),e.jsxs(os,{children:[e.jsx(b,{variant:"outline",onClick:()=>pe(!1),children:"取消"}),e.jsx(b,{variant:"destructive",onClick:ee,children:"删除"})]})]})})]})}function Ew({emoji:n,open:r,onOpenChange:c}){if(!n)return null;const d=h=>h?new Date(h*1e3).toLocaleString("zh-CN"):"-";return e.jsx(Qt,{open:r,onOpenChange:c,children:e.jsxs(Ut,{className:"max-w-2xl max-h-[90vh]",children:[e.jsx(Bt,{children:e.jsx(Ht,{children:"表情包详情"})}),e.jsx(Ie,{className:"max-h-[calc(90vh-8rem)] pr-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"flex justify-center",children:e.jsx("div",{className:"w-32 h-32 bg-muted rounded-lg flex items-center justify-center overflow-hidden",children:e.jsx("img",{src:Sw(n.id),alt:n.description||"表情包",className:"w-full h-full object-cover",onError:h=>{const x=h.target;x.style.display="none";const f=x.parentElement;f&&(f.innerHTML='')}})})}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(N,{className:"text-muted-foreground",children:"ID"}),e.jsx("div",{className:"mt-1 font-mono",children:n.id})]}),e.jsxs("div",{children:[e.jsx(N,{className:"text-muted-foreground",children:"格式"}),e.jsx("div",{className:"mt-1",children:e.jsx(Qe,{variant:"outline",children:n.format.toUpperCase()})})]})]}),e.jsxs("div",{children:[e.jsx(N,{className:"text-muted-foreground",children:"文件路径"}),e.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:n.full_path})]}),e.jsxs("div",{children:[e.jsx(N,{className:"text-muted-foreground",children:"哈希值"}),e.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:n.emoji_hash})]}),e.jsxs("div",{children:[e.jsx(N,{className:"text-muted-foreground",children:"描述"}),n.description?e.jsx("div",{className:"mt-1 rounded-lg border bg-muted/50 p-3",children:e.jsx(pw,{className:"prose-sm",children:n.description})}):e.jsx("div",{className:"mt-1 text-sm text-muted-foreground",children:"-"})]}),e.jsxs("div",{children:[e.jsx(N,{className:"text-muted-foreground",children:"情绪"}),e.jsx("div",{className:"mt-1",children:n.emotion?e.jsx("span",{className:"text-sm",children:n.emotion}):e.jsx("span",{className:"text-sm text-muted-foreground",children:"-"})})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(N,{className:"text-muted-foreground",children:"状态"}),e.jsxs("div",{className:"mt-2 flex gap-2",children:[n.is_registered&&e.jsx(Qe,{variant:"default",className:"bg-green-600",children:"已注册"}),n.is_banned&&e.jsx(Qe,{variant:"destructive",children:"已封禁"}),!n.is_registered&&!n.is_banned&&e.jsx(Qe,{variant:"outline",children:"未注册"})]})]}),e.jsxs("div",{children:[e.jsx(N,{className:"text-muted-foreground",children:"使用次数"}),e.jsx("div",{className:"mt-1 font-mono text-lg",children:n.usage_count})]})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(N,{className:"text-muted-foreground",children:"记录时间"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.record_time)})]}),e.jsxs("div",{children:[e.jsx(N,{className:"text-muted-foreground",children:"注册时间"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.register_time)})]})]}),e.jsxs("div",{children:[e.jsx(N,{className:"text-muted-foreground",children:"最后使用"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.last_used_time)})]})]})})]})})}function zw({emoji:n,open:r,onOpenChange:c,onSuccess:d}){const[h,x]=u.useState(""),[f,j]=u.useState(!1),[p,w]=u.useState(!1),[v,k]=u.useState(!1),{toast:T}=Rt();u.useEffect(()=>{n&&(x(n.emotion||""),j(n.is_registered),w(n.is_banned))},[n]);const E=async()=>{if(n)try{k(!0);const R=h.split(/[,,]/).map(F=>F.trim()).filter(Boolean).join(",");await vw(n.id,{emotion:R||void 0,is_registered:f,is_banned:p}),T({title:"成功",description:"表情包信息已更新"}),c(!1),d()}catch(R){const F=R instanceof Error?R.message:"保存失败";T({title:"错误",description:F,variant:"destructive"})}finally{k(!1)}};return n?e.jsx(Qt,{open:r,onOpenChange:c,children:e.jsxs(Ut,{className:"max-w-2xl",children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:"编辑表情包"}),e.jsx(ss,{children:"修改表情包的情绪和状态信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(N,{children:"情绪"}),e.jsx(Ot,{value:h,onChange:R=>x(R.target.value),placeholder:"输入情绪描述...",rows:2,className:"mt-1"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"输入情绪相关的文本描述"})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(bs,{id:"is_registered",checked:f,onCheckedChange:R=>{R===!0?(j(!0),w(!1)):j(!1)}}),e.jsx(N,{htmlFor:"is_registered",className:"cursor-pointer",children:"已注册"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(bs,{id:"is_banned",checked:p,onCheckedChange:R=>{R===!0?(w(!0),j(!1)):w(!1)}}),e.jsx(N,{htmlFor:"is_banned",className:"cursor-pointer",children:"已封禁"})]})]})]}),e.jsxs(os,{children:[e.jsx(b,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(b,{onClick:E,disabled:v,children:v?"保存中...":"保存"})]})]})}):null}function Aw({open:n,onOpenChange:r,onSuccess:c}){const[d,h]=u.useState("select"),[x,f]=u.useState([]),[j,p]=u.useState(null),[w,v]=u.useState(!1),{toast:k}=Rt(),T=u.useMemo(()=>new Wy({id:"emoji-uploader",autoProceed:!1,restrictions:{maxFileSize:10485760,allowedFileTypes:["image/jpeg","image/png","image/gif","image/webp"],maxNumberOfFiles:20},locale:{pluralize:()=>0,strings:{addMoreFiles:"添加更多文件",addingMoreFiles:"正在添加更多文件",allowedFileTypes:"允许的文件类型:%{types}",cancel:"取消",closeModal:"关闭",complete:"完成",connectedToInternet:"已连接到互联网",copyLink:"复制链接",copyLinkToClipboardFallback:"复制下方链接",copyLinkToClipboardSuccess:"链接已复制到剪贴板",dashboardTitle:"选择文件",dashboardWindowTitle:"文件选择窗口(按 ESC 关闭)",done:"完成",dropHereOr:"拖放文件到这里或 %{browse}",dropHint:"将文件拖放到此处",dropPasteFiles:"将文件拖放到这里或 %{browseFiles}",dropPasteFolders:"将文件拖放到这里或 %{browseFolders}",dropPasteBoth:"将文件拖放到这里,%{browseFiles} 或 %{browseFolders}",dropPasteImportFiles:"将文件拖放到这里,%{browseFiles} 或从以下位置导入:",dropPasteImportFolders:"将文件拖放到这里,%{browseFolders} 或从以下位置导入:",dropPasteImportBoth:"将文件拖放到这里,%{browseFiles},%{browseFolders} 或从以下位置导入:",editFile:"编辑文件",editing:"正在编辑 %{file}",emptyFolderAdded:"未从空文件夹添加文件",exceedsSize:"%{file} 超过了最大允许大小 %{size}",failedToUpload:"上传 %{file} 失败",fileSource:"文件来源:%{name}",filesUploadedOfTotal:{0:"已上传 %{complete} / %{smart_count} 个文件",1:"已上传 %{complete} / %{smart_count} 个文件"},filter:"筛选",finishEditingFile:"完成编辑文件",folderAdded:{0:"已从 %{folder} 添加 %{smart_count} 个文件",1:"已从 %{folder} 添加 %{smart_count} 个文件"},generatingThumbnails:"正在生成缩略图...",import:"导入",importFiles:"从以下位置导入文件:",importFrom:"从 %{name} 导入",loading:"加载中...",logOut:"登出",myDevice:"我的设备",noFilesFound:"这里没有文件或文件夹",noInternetConnection:"无网络连接",openFolderNamed:"打开文件夹 %{name}",pause:"暂停",pauseUpload:"暂停上传",paused:"已暂停",poweredBy:"技术支持:%{uppy}",processingXFiles:{0:"正在处理 %{smart_count} 个文件",1:"正在处理 %{smart_count} 个文件"},recording:"录制中",removeFile:"移除文件",resetFilter:"重置筛选",resume:"继续",resumeUpload:"继续上传",retry:"重试",retryUpload:"重试上传",save:"保存",saveChanges:"保存更改",selectFileNamed:"选择文件 %{name}",selectX:{0:"选择 %{smart_count}",1:"选择 %{smart_count}"},smile:"笑一个!",startRecording:"开始录制视频",stopRecording:"停止录制视频",takePicture:"拍照",timedOut:"上传已停滞 %{seconds} 秒,正在中止。",upload:"下一步",uploadComplete:"上传完成",uploadFailed:"上传失败",uploadPaused:"上传已暂停",uploadXFiles:{0:"下一步(%{smart_count} 个文件)",1:"下一步(%{smart_count} 个文件)"},uploadXNewFiles:{0:"下一步(+%{smart_count} 个文件)",1:"下一步(+%{smart_count} 个文件)"},uploading:"正在上传",uploadingXFiles:{0:"正在上传 %{smart_count} 个文件",1:"正在上传 %{smart_count} 个文件"},xFilesSelected:{0:"已选择 %{smart_count} 个文件",1:"已选择 %{smart_count} 个文件"},xMoreFilesAdded:{0:"又添加了 %{smart_count} 个文件",1:"又添加了 %{smart_count} 个文件"},xTimeLeft:"剩余 %{time}",youCanOnlyUploadFileTypes:"您只能上传:%{types}",youCanOnlyUploadX:{0:"您只能上传 %{smart_count} 个文件",1:"您只能上传 %{smart_count} 个文件"},youHaveToAtLeastSelectX:{0:"您至少需要选择 %{smart_count} 个文件",1:"您至少需要选择 %{smart_count} 个文件"},browseFiles:"浏览文件",browseFolders:"浏览文件夹",cancelUpload:"取消上传",addMore:"添加更多",back:"返回",editFileWithFilename:"编辑文件 %{file}"}}}),[]);u.useEffect(()=>{const X=()=>{const S=T.getFiles();if(S.length===0)return;const O=S.map(se=>({id:se.id,name:se.name,previewUrl:se.preview||URL.createObjectURL(se.data),emotion:"",description:"",isRegistered:!0,file:se.data}));f(O),S.length===1?(p(O[0].id),h("edit-single")):h("edit-multiple")};return T.on("upload",X),()=>{T.off("upload",X)}},[T]),u.useEffect(()=>{n||(T.cancelAll(),h("select"),f([]),p(null),v(!1))},[n,T]);const E=u.useCallback((X,S)=>{f(O=>O.map(se=>se.id===X?{...se,...S}:se))},[]),R=u.useCallback(X=>X.emotion.trim().length>0,[]),F=u.useMemo(()=>x.length>0&&x.every(R),[x,R]),U=u.useMemo(()=>x.find(X=>X.id===j)||null,[x,j]),M=u.useCallback(()=>{(d==="edit-single"||d==="edit-multiple")&&(h("select"),f([]),p(null))},[d]),Z=u.useCallback(async()=>{if(!F){k({title:"请填写必填项",description:"每个表情包的情感标签都是必填的",variant:"destructive"});return}v(!0);const X=localStorage.getItem("access-token")||"";let S=0,O=0;try{for(const se of x){const he=new FormData;he.append("file",se.file),he.append("emotion",se.emotion),he.append("description",se.description),he.append("is_registered",se.isRegistered.toString());try{(await fetch(kw(),{method:"POST",headers:{Authorization:`Bearer ${X}`},body:he})).ok?S++:O++}catch{O++}}O===0?(k({title:"上传成功",description:`成功上传 ${S} 个表情包`}),r(!1),c()):(k({title:"部分上传失败",description:`成功 ${S} 个,失败 ${O} 个`,variant:"destructive"}),c())}finally{v(!1)}},[F,x,k,r,c]),G=()=>e.jsx("div",{className:"space-y-4",children:e.jsx("div",{className:"border rounded-lg overflow-hidden w-full",children:e.jsx(hw,{uppy:T,proudlyDisplayPoweredByUppy:!1,hideProgressDetails:!0,height:350,width:"100%",theme:"auto",note:"支持 JPG、PNG、GIF、WebP 格式,最多 20 个文件"})})}),z=()=>{const X=x[0];return X?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs(b,{variant:"ghost",size:"sm",onClick:M,children:[e.jsx(Wn,{className:"h-4 w-4 mr-1"}),"返回"]}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"编辑表情包信息"})]}),e.jsxs("div",{className:"flex gap-6",children:[e.jsxs("div",{className:"flex-shrink-0",children:[e.jsx("div",{className:"w-32 h-32 rounded-lg border overflow-hidden bg-muted flex items-center justify-center",children:e.jsx("img",{src:X.previewUrl,alt:X.name,className:"max-w-full max-h-full object-contain"})}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2 text-center truncate max-w-32",children:X.name})]}),e.jsxs("div",{className:"flex-1 space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(N,{htmlFor:"single-emotion",children:["情感标签 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"single-emotion",value:X.emotion,onChange:S=>E(X.id,{emotion:S.target.value}),placeholder:"多个标签用逗号分隔,如:开心,高兴",className:X.emotion.trim()?"":"border-destructive"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"用于情感匹配,多个标签用逗号分隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"single-description",children:"描述"}),e.jsx(ce,{id:"single-description",value:X.description,onChange:S=>E(X.id,{description:S.target.value}),placeholder:"输入表情包描述..."})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(bs,{id:"single-is-registered",checked:X.isRegistered,onCheckedChange:S=>E(X.id,{isRegistered:S===!0})}),e.jsx(N,{htmlFor:"single-is-registered",className:"cursor-pointer",children:"上传后立即注册(可被麦麦使用)"})]})]})]}),e.jsx(os,{children:e.jsx(b,{onClick:Z,disabled:!F||w,children:w?"上传中...":"上传"})})]}):null},B=()=>{const X=x.filter(R).length,S=x.length;return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs(b,{variant:"ghost",size:"sm",onClick:M,children:[e.jsx(Wn,{className:"h-4 w-4 mr-1"}),"返回"]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["编辑表情包信息(",X,"/",S," 已完成)"]})]}),e.jsx(Qe,{variant:F?"default":"secondary",children:F?e.jsxs(e.Fragment,{children:[e.jsx(ga,{className:"h-3 w-3 mr-1"}),"全部完成"]}):e.jsxs(e.Fragment,{children:[e.jsx(si,{className:"h-3 w-3 mr-1"}),"未完成"]})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(Ie,{className:"h-[350px] pr-2",children:e.jsx("div",{className:"space-y-2",children:x.map(O=>{const se=R(O),he=j===O.id;return e.jsxs("div",{onClick:()=>p(O.id),className:` + flex items-center gap-3 p-3 rounded-lg border-2 cursor-pointer transition-all + ${he?"ring-2 ring-primary":""} + ${se?"border-green-500 bg-green-50 dark:bg-green-950/20":"border-border hover:border-muted-foreground/50"} + `,children:[e.jsx("div",{className:"w-12 h-12 rounded border overflow-hidden bg-muted flex-shrink-0 flex items-center justify-center",children:e.jsx("img",{src:O.previewUrl,alt:O.name,className:"max-w-full max-h-full object-contain"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm font-medium truncate",children:O.name}),e.jsx("p",{className:"text-xs text-muted-foreground truncate",children:O.emotion||"未填写情感标签"})]}),se?e.jsx(oa,{className:"h-5 w-5 text-green-500 flex-shrink-0"}):e.jsx("div",{className:"h-5 w-5 rounded-full border-2 border-muted-foreground/30 flex-shrink-0"})]},O.id)})})}),e.jsx("div",{className:"border rounded-lg p-4",children:U?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-16 h-16 rounded border overflow-hidden bg-muted flex items-center justify-center",children:e.jsx("img",{src:U.previewUrl,alt:U.name,className:"max-w-full max-h-full object-contain"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium truncate",children:U.name}),R(U)&&e.jsxs(Qe,{variant:"outline",className:"text-green-600 border-green-600",children:[e.jsx(ga,{className:"h-3 w-3 mr-1"}),"已完成"]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(N,{htmlFor:"multi-emotion",children:["情感标签 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"multi-emotion",value:U.emotion,onChange:O=>E(U.id,{emotion:O.target.value}),placeholder:"多个标签用逗号分隔,如:开心,高兴",className:U.emotion.trim()?"":"border-destructive"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"multi-description",children:"描述"}),e.jsx(ce,{id:"multi-description",value:U.description,onChange:O=>E(U.id,{description:O.target.value}),placeholder:"输入表情包描述..."})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(bs,{id:"multi-is-registered",checked:U.isRegistered,onCheckedChange:O=>E(U.id,{isRegistered:O===!0})}),e.jsx(N,{htmlFor:"multi-is-registered",className:"cursor-pointer text-sm",children:"上传后立即注册"})]})]}):e.jsx("div",{className:"h-full flex items-center justify-center text-muted-foreground",children:e.jsxs("div",{className:"text-center",children:[e.jsx(ag,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),e.jsx("p",{children:"点击左侧卡片编辑"})]})})})]}),e.jsx(os,{children:e.jsx(b,{onClick:Z,disabled:!F||w,children:w?"上传中...":`上传全部 (${S})`})})]})};return e.jsx(Qt,{open:n,onOpenChange:r,children:e.jsxs(Ut,{className:"max-w-3xl max-h-[90vh] overflow-hidden",children:[e.jsxs(Bt,{children:[e.jsxs(Ht,{className:"flex items-center gap-2",children:[e.jsx(cr,{className:"h-5 w-5"}),d==="select"&&"上传表情包 - 选择文件",d==="edit-single"&&"上传表情包 - 填写信息",d==="edit-multiple"&&"上传表情包 - 批量编辑"]}),e.jsxs(ss,{children:[d==="select"&&"支持 JPG、PNG、GIF、WebP 格式,单个文件最大 10MB,可同时上传多个文件",d==="edit-single"&&"请填写表情包的情感标签(必填)和描述",d==="edit-multiple"&&"点击左侧卡片编辑每个表情包的信息,情感标签为必填项"]})]}),e.jsxs("div",{className:"overflow-y-auto pr-1",children:[d==="select"&&G(),d==="edit-single"&&z(),d==="edit-multiple"&&B()]})]})})}const Ll="/api/webui/expression";async function Mw(){const n=await ke(`${Ll}/chats`,{});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取聊天列表失败")}return n.json()}async function Dw(n){const r=new URLSearchParams;n.page&&r.append("page",n.page.toString()),n.page_size&&r.append("page_size",n.page_size.toString()),n.search&&r.append("search",n.search),n.chat_id&&r.append("chat_id",n.chat_id);const c=await ke(`${Ll}/list?${r}`,{});if(!c.ok){const d=await c.json();throw new Error(d.detail||"获取表达方式列表失败")}return c.json()}async function Ow(n){const r=await ke(`${Ll}/${n}`,{});if(!r.ok){const c=await r.json();throw new Error(c.detail||"获取表达方式详情失败")}return r.json()}async function Rw(n){const r=await ke(`${Ll}/`,{method:"POST",body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"创建表达方式失败")}return r.json()}async function Lw(n,r){const c=await ke(`${Ll}/${n}`,{method:"PATCH",body:JSON.stringify(r)});if(!c.ok){const d=await c.json();throw new Error(d.detail||"更新表达方式失败")}return c.json()}async function Uw(n){const r=await ke(`${Ll}/${n}`,{method:"DELETE"});if(!r.ok){const c=await r.json();throw new Error(c.detail||"删除表达方式失败")}return r.json()}async function Bw(n){const r=await ke(`${Ll}/batch/delete`,{method:"POST",body:JSON.stringify({ids:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"批量删除表达方式失败")}return r.json()}async function Hw(){const n=await ke(`${Ll}/stats/summary`,{});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取统计数据失败")}return n.json()}function qw(){const[n,r]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(0),[f,j]=u.useState(1),[p,w]=u.useState(20),[v,k]=u.useState(""),[T,E]=u.useState(null),[R,F]=u.useState(!1),[U,M]=u.useState(!1),[Z,G]=u.useState(!1),[z,B]=u.useState(null),[X,S]=u.useState(new Set),[O,se]=u.useState(!1),[he,ye]=u.useState(""),[be,pe]=u.useState({total:0,recent_7days:0,chat_count:0,top_chats:{}}),[je,_e]=u.useState([]),[y,q]=u.useState(new Map),{toast:H}=Rt(),ie=async()=>{try{d(!0);const ee=await Dw({page:f,page_size:p,search:v||void 0});r(ee.data),x(ee.total)}catch(ee){H({title:"加载失败",description:ee instanceof Error?ee.message:"无法加载表达方式",variant:"destructive"})}finally{d(!1)}},_=async()=>{try{const ee=await Hw();ee?.data&&pe(ee.data)}catch(ee){console.error("加载统计数据失败:",ee)}},me=async()=>{try{const ee=await Mw();if(ee?.data){_e(ee.data);const Ne=new Map;ee.data.forEach(ze=>{Ne.set(ze.chat_id,ze.chat_name)}),q(Ne)}}catch(ee){console.error("加载聊天列表失败:",ee)}},xe=ee=>y.get(ee)||ee;u.useEffect(()=>{ie(),_(),me()},[f,p,v]);const Q=async ee=>{try{const Ne=await Ow(ee.id);E(Ne.data),F(!0)}catch(Ne){H({title:"加载详情失败",description:Ne instanceof Error?Ne.message:"无法加载表达方式详情",variant:"destructive"})}},de=ee=>{E(ee),M(!0)},ge=async ee=>{try{await Uw(ee.id),H({title:"删除成功",description:`已删除表达方式: ${ee.situation}`}),B(null),ie(),_()}catch(Ne){H({title:"删除失败",description:Ne instanceof Error?Ne.message:"无法删除表达方式",variant:"destructive"})}},le=ee=>{const Ne=new Set(X);Ne.has(ee)?Ne.delete(ee):Ne.add(ee),S(Ne)},L=()=>{X.size===n.length&&n.length>0?S(new Set):S(new Set(n.map(ee=>ee.id)))},$=async()=>{try{await Bw(Array.from(X)),H({title:"批量删除成功",description:`已删除 ${X.size} 个表达方式`}),S(new Set),se(!1),ie(),_()}catch(ee){H({title:"批量删除失败",description:ee instanceof Error?ee.message:"无法批量删除表达方式",variant:"destructive"})}},D=()=>{const ee=parseInt(he),Ne=Math.ceil(h/p);ee>=1&&ee<=Ne?(j(ee),ye("")):H({title:"无效的页码",description:`请输入1-${Ne}之间的页码`,variant:"destructive"})};return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsx("div",{className:"mb-4 sm:mb-6",children:e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[e.jsx(Pn,{className:"h-8 w-8",strokeWidth:2}),"表达方式管理"]}),e.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦的表达方式和话术模板"})]}),e.jsxs(b,{onClick:()=>G(!0),className:"gap-2",children:[e.jsx(cs,{className:"h-4 w-4"}),"新增表达方式"]})]})}),e.jsx(Ie,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"总数量"}),e.jsx("div",{className:"text-2xl font-bold mt-1",children:be.total})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"近7天新增"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:be.recent_7days})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"关联聊天数"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-blue-600",children:be.chat_count})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx(N,{htmlFor:"search",children:"搜索"}),e.jsx("div",{className:"flex flex-col sm:flex-row gap-2 mt-1.5",children:e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(Os,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{id:"search",placeholder:"搜索情境、风格或上下文...",value:v,onChange:ee=>k(ee.target.value),className:"pl-9"})]})}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[e.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:X.size>0&&e.jsxs("span",{children:["已选择 ",X.size," 个表达方式"]})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(Be,{value:p.toString(),onValueChange:ee=>{w(parseInt(ee)),j(1),S(new Set)},children:[e.jsx(Re,{id:"page-size",className:"w-20",children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"10",children:"10"}),e.jsx(ne,{value:"20",children:"20"}),e.jsx(ne,{value:"50",children:"50"}),e.jsx(ne,{value:"100",children:"100"})]})]}),X.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>S(new Set),children:"取消选择"}),e.jsxs(b,{variant:"destructive",size:"sm",onClick:()=>se(!0),children:[e.jsx(Pe,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card",children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(ai,{children:[e.jsx(li,{children:e.jsxs(gs,{children:[e.jsx(at,{className:"w-12",children:e.jsx(bs,{checked:X.size===n.length&&n.length>0,onCheckedChange:L})}),e.jsx(at,{children:"情境"}),e.jsx(at,{children:"风格"}),e.jsx(at,{children:"聊天"}),e.jsx(at,{className:"text-right",children:"操作"})]})}),e.jsx(ni,{children:c?e.jsx(gs,{children:e.jsx($e,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):n.length===0?e.jsx(gs,{children:e.jsx($e,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):n.map(ee=>e.jsxs(gs,{children:[e.jsx($e,{children:e.jsx(bs,{checked:X.has(ee.id),onCheckedChange:()=>le(ee.id)})}),e.jsx($e,{className:"font-medium max-w-xs truncate",children:ee.situation}),e.jsx($e,{className:"max-w-xs truncate",children:ee.style}),e.jsx($e,{className:"max-w-[200px] truncate",title:xe(ee.chat_id),style:{wordBreak:"keep-all"},children:e.jsx("span",{className:"whitespace-nowrap overflow-hidden text-ellipsis block",children:xe(ee.chat_id)})}),e.jsx($e,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(b,{variant:"default",size:"sm",onClick:()=>de(ee),children:[e.jsx(dr,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsx(b,{variant:"outline",size:"icon",className:"h-8 w-8",onClick:()=>Q(ee),title:"查看详情",children:e.jsx(Ys,{className:"h-4 w-4"})}),e.jsxs(b,{size:"sm",onClick:()=>B(ee),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(Pe,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},ee.id))})]})}),e.jsx("div",{className:"md:hidden space-y-3 p-4",children:c?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):n.length===0?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):n.map(ee=>e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(bs,{checked:X.has(ee.id),onCheckedChange:()=>le(ee.id),className:"mt-1"}),e.jsxs("div",{className:"min-w-0 flex-1 overflow-hidden space-y-2",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"情境"}),e.jsx("h3",{className:"font-semibold text-sm line-clamp-2 w-full break-all",title:ee.situation,children:ee.situation})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"风格"}),e.jsx("p",{className:"text-sm line-clamp-2 w-full break-all",title:ee.style,children:ee.style})]})]})]}),e.jsxs("div",{className:"text-sm",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"聊天"}),e.jsx("p",{className:"text-sm truncate",title:xe(ee.chat_id),style:{wordBreak:"keep-all"},children:xe(ee.chat_id)})]}),e.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>de(ee),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(dr,{className:"h-3 w-3 mr-1"}),"编辑"]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>Q(ee),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:e.jsx(Ys,{className:"h-3 w-3"})}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>B(ee),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[e.jsx(Pe,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},ee.id))}),h>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",h," 条记录,第 ",f," / ",Math.ceil(h/p)," 页"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(gr,{className:"h-4 w-4"})}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>j(f-1),disabled:f===1,children:[e.jsx(nn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:he,onChange:ee=>ye(ee.target.value),onKeyDown:ee=>ee.key==="Enter"&&D(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(h/p)}),e.jsx(b,{variant:"outline",size:"sm",onClick:D,disabled:!he,className:"h-8",children:"跳转"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>j(f+1),disabled:f>=Math.ceil(h/p),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(Ol,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(h/p)),disabled:f>=Math.ceil(h/p),className:"hidden sm:flex",children:e.jsx(jr,{className:"h-4 w-4"})})]})]})]})]})}),e.jsx(Gw,{expression:T,open:R,onOpenChange:F,chatNameMap:y}),e.jsx(Vw,{open:Z,onOpenChange:G,chatList:je,onSuccess:()=>{ie(),_(),G(!1)}}),e.jsx(Fw,{expression:T,open:U,onOpenChange:M,chatList:je,onSuccess:()=>{ie(),_(),M(!1)}}),e.jsx(ft,{open:!!z,onOpenChange:()=>B(null),children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:['确定要删除表达方式 "',z?.situation,'" 吗? 此操作不可撤销。']})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>z&&ge(z),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),e.jsx($w,{open:O,onOpenChange:se,onConfirm:$,count:X.size})]})}function Gw({expression:n,open:r,onOpenChange:c,chatNameMap:d}){if(!n)return null;const h=f=>f?new Date(f*1e3).toLocaleString("zh-CN"):"-",x=f=>d.get(f)||f;return e.jsx(Qt,{open:r,onOpenChange:c,children:e.jsxs(Ut,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:"表达方式详情"}),e.jsx(ss,{children:"查看表达方式的完整信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(sr,{label:"情境",value:n.situation}),e.jsx(sr,{label:"风格",value:n.style}),e.jsx(sr,{label:"聊天",value:x(n.chat_id)}),e.jsx(sr,{icon:Eu,label:"记录ID",value:n.id.toString(),mono:!0})]}),e.jsx("div",{className:"grid grid-cols-2 gap-4",children:e.jsx(sr,{icon:Jn,label:"创建时间",value:h(n.create_date)})})]}),e.jsx(os,{children:e.jsx(b,{onClick:()=>c(!1),children:"关闭"})})]})})}function sr({icon:n,label:r,value:c,mono:d=!1}){return e.jsxs("div",{className:"space-y-1",children:[e.jsxs(N,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[n&&e.jsx(n,{className:"h-3 w-3"}),r]}),e.jsx("div",{className:K("text-sm",d&&"font-mono",!c&&"text-muted-foreground"),children:c||"-"})]})}function Vw({open:n,onOpenChange:r,chatList:c,onSuccess:d}){const[h,x]=u.useState({situation:"",style:"",chat_id:""}),[f,j]=u.useState(!1),{toast:p}=Rt(),w=async()=>{if(!h.situation||!h.style||!h.chat_id){p({title:"验证失败",description:"请填写必填字段:情境、风格和聊天",variant:"destructive"});return}try{j(!0),await Rw(h),p({title:"创建成功",description:"表达方式已创建"}),x({situation:"",style:"",chat_id:""}),d()}catch(v){p({title:"创建失败",description:v instanceof Error?v.message:"无法创建表达方式",variant:"destructive"})}finally{j(!1)}};return e.jsx(Qt,{open:n,onOpenChange:r,children:e.jsxs(Ut,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:"新增表达方式"}),e.jsx(ss,{children:"创建新的表达方式记录"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(N,{htmlFor:"situation",children:["情境 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"situation",value:h.situation,onChange:v=>x({...h,situation:v.target.value}),placeholder:"描述使用场景"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(N,{htmlFor:"style",children:["风格 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"style",value:h.style,onChange:v=>x({...h,style:v.target.value}),placeholder:"描述表达风格"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(N,{htmlFor:"chat_id",children:["聊天 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsxs(Be,{value:h.chat_id,onValueChange:v=>x({...h,chat_id:v}),children:[e.jsx(Re,{children:e.jsx(He,{placeholder:"选择关联的聊天"})}),e.jsx(Le,{children:c.map(v=>e.jsx(ne,{value:v.chat_id,children:e.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[v.chat_name,v.is_group&&e.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},v.chat_id))})]})]})]}),e.jsxs(os,{children:[e.jsx(b,{variant:"outline",onClick:()=>r(!1),children:"取消"}),e.jsx(b,{onClick:w,disabled:f,children:f?"创建中...":"创建"})]})]})})}function Fw({expression:n,open:r,onOpenChange:c,chatList:d,onSuccess:h}){const[x,f]=u.useState({}),[j,p]=u.useState(!1),{toast:w}=Rt();u.useEffect(()=>{n&&f({situation:n.situation,style:n.style,chat_id:n.chat_id})},[n]);const v=async()=>{if(n)try{p(!0),await Lw(n.id,x),w({title:"保存成功",description:"表达方式已更新"}),h()}catch(k){w({title:"保存失败",description:k instanceof Error?k.message:"无法更新表达方式",variant:"destructive"})}finally{p(!1)}};return n?e.jsx(Qt,{open:r,onOpenChange:c,children:e.jsxs(Ut,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:"编辑表达方式"}),e.jsx(ss,{children:"修改表达方式的信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"edit_situation",children:"情境"}),e.jsx(ce,{id:"edit_situation",value:x.situation||"",onChange:k=>f({...x,situation:k.target.value}),placeholder:"描述使用场景"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"edit_style",children:"风格"}),e.jsx(ce,{id:"edit_style",value:x.style||"",onChange:k=>f({...x,style:k.target.value}),placeholder:"描述表达风格"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"edit_chat_id",children:"聊天"}),e.jsxs(Be,{value:x.chat_id||"",onValueChange:k=>f({...x,chat_id:k}),children:[e.jsx(Re,{children:e.jsx(He,{placeholder:"选择关联的聊天"})}),e.jsx(Le,{children:d.map(k=>e.jsx(ne,{value:k.chat_id,children:e.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[k.chat_name,k.is_group&&e.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},k.chat_id))})]})]})]}),e.jsxs(os,{children:[e.jsx(b,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(b,{onClick:v,disabled:j,children:j?"保存中...":"保存"})]})]})}):null}function $w({open:n,onOpenChange:r,onConfirm:c,count:d}){return e.jsx(ft,{open:n,onOpenChange:r,children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认批量删除"}),e.jsxs(dt,{children:["您即将删除 ",d," 个表达方式,此操作无法撤销。确定要继续吗?"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:c,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认删除"})]})]})})}const ii="/api/webui/person";async function Qw(n){const r=new URLSearchParams;n.page&&r.append("page",n.page.toString()),n.page_size&&r.append("page_size",n.page_size.toString()),n.search&&r.append("search",n.search),n.is_known!==void 0&&r.append("is_known",n.is_known.toString()),n.platform&&r.append("platform",n.platform);const c=await ke(`${ii}/list?${r}`,{headers:Tt()});if(!c.ok){const d=await c.json();throw new Error(d.detail||"获取人物列表失败")}return c.json()}async function Yw(n){const r=await ke(`${ii}/${n}`,{headers:Tt()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"获取人物详情失败")}return r.json()}async function Xw(n,r){const c=await ke(`${ii}/${n}`,{method:"PATCH",headers:Tt(),body:JSON.stringify(r)});if(!c.ok){const d=await c.json();throw new Error(d.detail||"更新人物信息失败")}return c.json()}async function Kw(n){const r=await ke(`${ii}/${n}`,{method:"DELETE",headers:Tt()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"删除人物信息失败")}return r.json()}async function Zw(){const n=await ke(`${ii}/stats/summary`,{headers:Tt()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取统计数据失败")}return n.json()}async function Jw(n){const r=await ke(`${ii}/batch/delete`,{method:"POST",headers:Tt(),body:JSON.stringify({person_ids:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"批量删除失败")}return r.json()}function Iw(){const[n,r]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(0),[f,j]=u.useState(1),[p,w]=u.useState(20),[v,k]=u.useState(""),[T,E]=u.useState(void 0),[R,F]=u.useState(void 0),[U,M]=u.useState(null),[Z,G]=u.useState(!1),[z,B]=u.useState(!1),[X,S]=u.useState(null),[O,se]=u.useState({total:0,known:0,unknown:0,platforms:{}}),[he,ye]=u.useState(new Set),[be,pe]=u.useState(!1),[je,_e]=u.useState(""),{toast:y}=Rt(),q=async()=>{try{d(!0);const D=await Qw({page:f,page_size:p,search:v||void 0,is_known:T,platform:R});r(D.data),x(D.total)}catch(D){y({title:"加载失败",description:D instanceof Error?D.message:"无法加载人物信息",variant:"destructive"})}finally{d(!1)}},H=async()=>{try{const D=await Zw();D?.data&&se(D.data)}catch(D){console.error("加载统计数据失败:",D)}};u.useEffect(()=>{q(),H()},[f,p,v,T,R]);const ie=async D=>{try{const ee=await Yw(D.person_id);M(ee.data),G(!0)}catch(ee){y({title:"加载详情失败",description:ee instanceof Error?ee.message:"无法加载人物详情",variant:"destructive"})}},_=D=>{M(D),B(!0)},me=async D=>{try{await Kw(D.person_id),y({title:"删除成功",description:`已删除人物信息: ${D.person_name||D.nickname||D.user_id}`}),S(null),q(),H()}catch(ee){y({title:"删除失败",description:ee instanceof Error?ee.message:"无法删除人物信息",variant:"destructive"})}},xe=u.useMemo(()=>Object.keys(O.platforms),[O.platforms]),Q=D=>{const ee=new Set(he);ee.has(D)?ee.delete(D):ee.add(D),ye(ee)},de=()=>{he.size===n.length&&n.length>0?ye(new Set):ye(new Set(n.map(D=>D.person_id)))},ge=()=>{if(he.size===0){y({title:"未选择任何人物",description:"请先选择要删除的人物",variant:"destructive"});return}pe(!0)},le=async()=>{try{const D=await Jw(Array.from(he));y({title:"批量删除完成",description:D.message}),ye(new Set),pe(!1),q(),H()}catch(D){y({title:"批量删除失败",description:D instanceof Error?D.message:"批量删除失败",variant:"destructive"})}},L=()=>{const D=parseInt(je),ee=Math.ceil(h/p);D>=1&&D<=ee?(j(D),_e("")):y({title:"无效的页码",description:`请输入1-${ee}之间的页码`,variant:"destructive"})},$=D=>D?new Date(D*1e3).toLocaleString("zh-CN"):"-";return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsx("div",{className:"mb-4 sm:mb-6",children:e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[e.jsx(vy,{className:"h-8 w-8",strokeWidth:2}),"人物信息管理"]}),e.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦认识的所有人物信息"})]})})}),e.jsx(Ie,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"总人数"}),e.jsx("div",{className:"text-2xl font-bold mt-1",children:O.total})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"已认识"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:O.known})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"未认识"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-muted-foreground",children:O.unknown})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-4 gap-4",children:[e.jsxs("div",{className:"sm:col-span-2",children:[e.jsx(N,{htmlFor:"search",children:"搜索"}),e.jsxs("div",{className:"relative mt-1.5",children:[e.jsx(Os,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{id:"search",placeholder:"搜索名称、昵称或用户ID...",value:v,onChange:D=>k(D.target.value),className:"pl-9"})]})]}),e.jsxs("div",{children:[e.jsx(N,{htmlFor:"filter-known",children:"认识状态"}),e.jsxs(Be,{value:T===void 0?"all":T.toString(),onValueChange:D=>{E(D==="all"?void 0:D==="true"),j(1)},children:[e.jsx(Re,{id:"filter-known",className:"mt-1.5",children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部"}),e.jsx(ne,{value:"true",children:"已认识"}),e.jsx(ne,{value:"false",children:"未认识"})]})]})]}),e.jsxs("div",{children:[e.jsx(N,{htmlFor:"filter-platform",children:"平台"}),e.jsxs(Be,{value:R||"all",onValueChange:D=>{F(D==="all"?void 0:D),j(1)},children:[e.jsx(Re,{id:"filter-platform",className:"mt-1.5",children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部平台"}),xe.map(D=>e.jsxs(ne,{value:D,children:[D," (",O.platforms[D],")"]},D))]})]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[e.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:he.size>0&&e.jsxs("span",{children:["已选择 ",he.size," 个人物"]})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(Be,{value:p.toString(),onValueChange:D=>{w(parseInt(D)),j(1),ye(new Set)},children:[e.jsx(Re,{id:"page-size",className:"w-20",children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"10",children:"10"}),e.jsx(ne,{value:"20",children:"20"}),e.jsx(ne,{value:"50",children:"50"}),e.jsx(ne,{value:"100",children:"100"})]})]}),he.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>ye(new Set),children:"取消选择"}),e.jsxs(b,{variant:"destructive",size:"sm",onClick:ge,children:[e.jsx(Pe,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card",children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(ai,{children:[e.jsx(li,{children:e.jsxs(gs,{children:[e.jsx(at,{className:"w-12",children:e.jsx(bs,{checked:n.length>0&&he.size===n.length,onCheckedChange:de,"aria-label":"全选"})}),e.jsx(at,{children:"状态"}),e.jsx(at,{children:"名称"}),e.jsx(at,{children:"昵称"}),e.jsx(at,{children:"平台"}),e.jsx(at,{children:"用户ID"}),e.jsx(at,{children:"最后更新"}),e.jsx(at,{className:"text-right",children:"操作"})]})}),e.jsx(ni,{children:c?e.jsx(gs,{children:e.jsx($e,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):n.length===0?e.jsx(gs,{children:e.jsx($e,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):n.map(D=>e.jsxs(gs,{children:[e.jsx($e,{children:e.jsx(bs,{checked:he.has(D.person_id),onCheckedChange:()=>Q(D.person_id),"aria-label":`选择 ${D.person_name||D.nickname||D.user_id}`})}),e.jsx($e,{children:e.jsx("div",{className:K("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium",D.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:D.is_known?"已认识":"未认识"})}),e.jsx($e,{className:"font-medium",children:D.person_name||e.jsx("span",{className:"text-muted-foreground",children:"-"})}),e.jsx($e,{children:D.nickname||"-"}),e.jsx($e,{children:D.platform}),e.jsx($e,{className:"font-mono text-sm",children:D.user_id}),e.jsx($e,{className:"text-sm text-muted-foreground",children:$(D.last_know)}),e.jsx($e,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(b,{variant:"default",size:"sm",onClick:()=>ie(D),children:[e.jsx(Ys,{className:"h-4 w-4 mr-1"}),"详情"]}),e.jsxs(b,{variant:"default",size:"sm",onClick:()=>_(D),children:[e.jsx(dr,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsxs(b,{size:"sm",onClick:()=>S(D),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(Pe,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},D.id))})]})}),e.jsx("div",{className:"md:hidden space-y-3 p-4",children:c?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):n.length===0?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):n.map(D=>e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(bs,{checked:he.has(D.person_id),onCheckedChange:()=>Q(D.person_id),className:"mt-1"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:K("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium mb-2",D.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:D.is_known?"已认识":"未认识"}),e.jsx("h3",{className:"font-semibold text-sm line-clamp-1 w-full break-all",children:D.person_name||e.jsx("span",{className:"text-muted-foreground",children:"未命名"})}),D.nickname&&e.jsxs("p",{className:"text-xs text-muted-foreground mt-1 line-clamp-1 w-full break-all",children:["昵称: ",D.nickname]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"平台"}),e.jsx("p",{className:"font-medium text-xs",children:D.platform})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"用户ID"}),e.jsx("p",{className:"font-mono text-xs truncate",title:D.user_id,children:D.user_id})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"最后更新"}),e.jsx("p",{className:"text-xs",children:$(D.last_know)})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>ie(D),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(Ys,{className:"h-3 w-3 mr-1"}),"查看"]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>_(D),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(dr,{className:"h-3 w-3 mr-1"}),"编辑"]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>S(D),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[e.jsx(Pe,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},D.id))}),h>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",h," 条记录,第 ",f," / ",Math.ceil(h/p)," 页"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(gr,{className:"h-4 w-4"})}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>j(f-1),disabled:f===1,children:[e.jsx(nn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:je,onChange:D=>_e(D.target.value),onKeyDown:D=>D.key==="Enter"&&L(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(h/p)}),e.jsx(b,{variant:"outline",size:"sm",onClick:L,disabled:!je,className:"h-8",children:"跳转"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>j(f+1),disabled:f>=Math.ceil(h/p),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(Ol,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(h/p)),disabled:f>=Math.ceil(h/p),className:"hidden sm:flex",children:e.jsx(jr,{className:"h-4 w-4"})})]})]})]})]})}),e.jsx(Pw,{person:U,open:Z,onOpenChange:G}),e.jsx(Ww,{person:U,open:z,onOpenChange:B,onSuccess:()=>{q(),H(),B(!1)}}),e.jsx(ft,{open:!!X,onOpenChange:()=>S(null),children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:['确定要删除人物信息 "',X?.person_name||X?.nickname||X?.user_id,'" 吗? 此操作不可撤销。']})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>X&&me(X),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),e.jsx(ft,{open:be,onOpenChange:pe,children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认批量删除"}),e.jsxs(dt,{children:["确定要删除选中的 ",he.size," 个人物信息吗? 此操作不可撤销。"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:le,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})})]})}function Pw({person:n,open:r,onOpenChange:c}){if(!n)return null;const d=h=>h?new Date(h*1e3).toLocaleString("zh-CN"):"-";return e.jsx(Qt,{open:r,onOpenChange:c,children:e.jsxs(Ut,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:"人物详情"}),e.jsxs(ss,{children:["查看 ",n.person_name||n.nickname||n.user_id," 的完整信息"]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(el,{icon:Ic,label:"人物名称",value:n.person_name}),e.jsx(el,{icon:Pn,label:"昵称",value:n.nickname}),e.jsx(el,{icon:Eu,label:"用户ID",value:n.user_id,mono:!0}),e.jsx(el,{icon:Eu,label:"人物ID",value:n.person_id,mono:!0}),e.jsx(el,{label:"平台",value:n.platform}),e.jsx(el,{label:"状态",value:n.is_known?"已认识":"未认识"})]}),n.name_reason&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(N,{className:"text-xs text-muted-foreground",children:"名称设定原因"}),e.jsx("p",{className:"mt-1 text-sm",children:n.name_reason})]}),n.memory_points&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(N,{className:"text-xs text-muted-foreground",children:"个人印象"}),e.jsx("p",{className:"mt-1 text-sm whitespace-pre-wrap",children:n.memory_points})]}),n.group_nick_name&&n.group_nick_name.length>0&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(N,{className:"text-xs text-muted-foreground",children:"群昵称"}),e.jsx("div",{className:"mt-2 space-y-1",children:n.group_nick_name.map((h,x)=>e.jsxs("div",{className:"text-sm flex items-center gap-2",children:[e.jsx("span",{className:"font-mono text-xs text-muted-foreground",children:h.group_id}),e.jsx("span",{children:"→"}),e.jsx("span",{children:h.group_nick_name})]},x))})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsx(el,{icon:Jn,label:"认识时间",value:d(n.know_times)}),e.jsx(el,{icon:Jn,label:"首次记录",value:d(n.know_since)}),e.jsx(el,{icon:Jn,label:"最后更新",value:d(n.last_know)})]})]}),e.jsx(os,{children:e.jsx(b,{onClick:()=>c(!1),children:"关闭"})})]})})}function el({icon:n,label:r,value:c,mono:d=!1}){return e.jsxs("div",{className:"space-y-1",children:[e.jsxs(N,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[n&&e.jsx(n,{className:"h-3 w-3"}),r]}),e.jsx("div",{className:K("text-sm",d&&"font-mono",!c&&"text-muted-foreground"),children:c||"-"})]})}function Ww({person:n,open:r,onOpenChange:c,onSuccess:d}){const[h,x]=u.useState({}),[f,j]=u.useState(!1),{toast:p}=Rt();u.useEffect(()=>{n&&x({person_name:n.person_name||"",name_reason:n.name_reason||"",nickname:n.nickname||"",memory_points:n.memory_points||"",is_known:n.is_known})},[n]);const w=async()=>{if(n)try{j(!0),await Xw(n.person_id,h),p({title:"保存成功",description:"人物信息已更新"}),d()}catch(v){p({title:"保存失败",description:v instanceof Error?v.message:"无法更新人物信息",variant:"destructive"})}finally{j(!1)}};return n?e.jsx(Qt,{open:r,onOpenChange:c,children:e.jsxs(Ut,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:"编辑人物信息"}),e.jsxs(ss,{children:["修改 ",n.person_name||n.nickname||n.user_id," 的信息"]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"person_name",children:"人物名称"}),e.jsx(ce,{id:"person_name",value:h.person_name||"",onChange:v=>x({...h,person_name:v.target.value}),placeholder:"为这个人设置一个名称"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"nickname",children:"昵称"}),e.jsx(ce,{id:"nickname",value:h.nickname||"",onChange:v=>x({...h,nickname:v.target.value}),placeholder:"昵称"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"name_reason",children:"名称设定原因"}),e.jsx(Ot,{id:"name_reason",value:h.name_reason||"",onChange:v=>x({...h,name_reason:v.target.value}),placeholder:"为什么这样称呼这个人?",rows:2})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"memory_points",children:"个人印象"}),e.jsx(Ot,{id:"memory_points",value:h.memory_points||"",onChange:v=>x({...h,memory_points:v.target.value}),placeholder:"对这个人的印象和记忆点...",rows:4})]}),e.jsxs("div",{className:"flex items-center justify-between rounded-lg border p-3",children:[e.jsxs("div",{children:[e.jsx(N,{htmlFor:"is_known",className:"text-base font-medium",children:"已认识"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"标记是否已经认识这个人"})]}),e.jsx(Ge,{id:"is_known",checked:h.is_known,onCheckedChange:v=>x({...h,is_known:v})})]})]}),e.jsxs(os,{children:[e.jsx(b,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(b,{onClick:w,disabled:f,children:f?"保存中...":"保存"})]})]})}):null}var e1=lN();const cp=nb(e1),Yu="/api/webui";async function t1(n=100,r="all"){const c=`${Yu}/knowledge/graph?limit=${n}&node_type=${r}`,d=await fetch(c);if(!d.ok)throw new Error(`获取知识图谱失败: ${d.status}`);return d.json()}async function s1(){const n=await fetch(`${Yu}/knowledge/stats`);if(!n.ok)throw new Error("获取知识图谱统计信息失败");return n.json()}async function a1(n){const r=await fetch(`${Yu}/knowledge/search?query=${encodeURIComponent(n)}`);if(!r.ok)throw new Error("搜索知识节点失败");return r.json()}const Tg=u.memo(({data:n})=>e.jsxs("div",{className:"px-4 py-2 shadow-md rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700 min-w-[120px]",children:[e.jsx(Pc,{type:"target",position:Wc.Top}),e.jsx("div",{className:"font-semibold text-white text-sm truncate max-w-[200px]",title:n.content,children:n.label}),e.jsx(Pc,{type:"source",position:Wc.Bottom})]}));Tg.displayName="EntityNode";const Eg=u.memo(({data:n})=>e.jsxs("div",{className:"px-3 py-2 shadow-md rounded-md bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700 min-w-[100px]",children:[e.jsx(Pc,{type:"target",position:Wc.Top}),e.jsx("div",{className:"font-medium text-white text-xs truncate max-w-[150px]",title:n.content,children:n.label}),e.jsx(Pc,{type:"source",position:Wc.Bottom})]}));Eg.displayName="ParagraphNode";const l1={entity:Tg,paragraph:Eg};function n1(n,r){const c=new cp.graphlib.Graph;c.setDefaultEdgeLabel(()=>({})),c.setGraph({rankdir:"TB",ranksep:100,nodesep:80});const d=[],h=[];return n.forEach(x=>{c.setNode(x.id,{width:150,height:50})}),r.forEach(x=>{c.setEdge(x.source,x.target)}),cp.layout(c),n.forEach(x=>{const f=c.node(x.id);d.push({id:x.id,type:x.type,position:{x:f.x-75,y:f.y-25},data:{label:x.content.slice(0,20)+(x.content.length>20?"...":""),content:x.content}})}),r.forEach((x,f)=>{const j={id:`edge-${f}`,source:x.source,target:x.target,animated:n.length<=200&&x.weight>5,style:{strokeWidth:Math.min(x.weight/2,5),opacity:.6}};x.weight>10&&n.length<100&&(j.label=`${x.weight.toFixed(0)}`),h.push(j)}),{nodes:d,edges:h}}function i1(){const n=ua(),[r,c]=u.useState(!1),[d,h]=u.useState(null),[x,f]=u.useState(""),[j,p]=u.useState("all"),[w,v]=u.useState(50),[k,T]=u.useState("50"),[E,R]=u.useState(!1),[F,U]=u.useState(!0),[M,Z]=u.useState(!1),[G,z]=u.useState(!1),[B,X,S]=nN([]),[O,se,he]=iN([]),[ye,be]=u.useState(0),[pe,je]=u.useState(null),[_e,y]=u.useState(null),{toast:q}=Rt(),H=u.useCallback(le=>le.type==="entity"?"#6366f1":le.type==="paragraph"?"#10b981":"#6b7280",[]),ie=u.useCallback(async(le=!1)=>{try{if(!le&&w>200){z(!0);return}c(!0);const[L,$]=await Promise.all([t1(w,j),s1()]);if(h($),L.nodes.length===0){q({title:"提示",description:"知识库为空,请先导入知识数据"}),X([]),se([]);return}const{nodes:D,edges:ee}=n1(L.nodes,L.edges);X(D),se(ee),be(D.length),$&&$.total_nodes>w&&q({title:"提示",description:`知识图谱包含 ${$.total_nodes} 个节点,当前显示 ${D.length} 个`}),q({title:"加载成功",description:`已加载 ${D.length} 个节点,${ee.length} 条边`})}catch(L){console.error("加载知识图谱失败:",L),q({title:"加载失败",description:L instanceof Error?L.message:"未知错误",variant:"destructive"})}finally{c(!1)}},[w,j,q]),_=u.useCallback(async()=>{if(!x.trim()){q({title:"提示",description:"请输入搜索关键词"});return}try{const le=await a1(x);if(le.length===0){q({title:"未找到",description:"没有找到匹配的节点"});return}const L=new Set(le.map($=>$.id));X($=>$.map(D=>({...D,style:{...D.style,opacity:L.has(D.id)?1:.3,filter:L.has(D.id)?"brightness(1.2)":"brightness(0.8)"}}))),q({title:"搜索完成",description:`找到 ${le.length} 个匹配节点`})}catch(le){console.error("搜索失败:",le),q({title:"搜索失败",description:le instanceof Error?le.message:"未知错误",variant:"destructive"})}},[x,q]),me=u.useCallback(()=>{X(le=>le.map(L=>({...L,style:{...L.style,opacity:1,filter:"brightness(1)"}})))},[]),xe=u.useCallback(()=>{U(!1),Z(!0),ie()},[ie]),Q=u.useCallback(()=>{z(!1),setTimeout(()=>{ie(!0)},0)},[ie]),de=u.useCallback((le,L)=>{B.find(D=>D.id===L.id)&&je({id:L.id,type:L.type,content:L.data.content})},[B]);u.useEffect(()=>{F||M&&ie()},[w,j,F,M]);const ge=u.useCallback((le,L)=>{const $=B.find(Ne=>Ne.id===L.source),D=B.find(Ne=>Ne.id===L.target),ee=O.find(Ne=>Ne.id===L.id);$&&D&&ee&&y({source:{id:$.id,type:$.type,content:$.data.content},target:{id:D.id,type:D.type,content:D.data.content},edge:{source:L.source,target:L.target,weight:parseFloat(L.label||"0")}})},[B,O]);return e.jsxs("div",{className:"h-full flex flex-col",children:[e.jsxs("div",{className:"flex-shrink-0 p-4 border-b bg-background",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦知识库图谱"}),e.jsx("p",{className:"text-muted-foreground mt-1",children:"可视化知识实体与关系网络"})]}),d&&e.jsxs("div",{className:"flex gap-2 flex-wrap",children:[e.jsxs(Qe,{variant:"outline",className:"gap-1",children:[e.jsx(Zc,{className:"h-3 w-3"}),"节点: ",d.total_nodes]}),e.jsxs(Qe,{variant:"outline",className:"gap-1",children:[e.jsx(lg,{className:"h-3 w-3"}),"边: ",d.total_edges]}),e.jsxs(Qe,{variant:"outline",className:"gap-1",children:[e.jsx(za,{className:"h-3 w-3"}),"实体: ",d.entity_nodes]}),e.jsxs(Qe,{variant:"outline",className:"gap-1",children:[e.jsx(Ta,{className:"h-3 w-3"}),"段落: ",d.paragraph_nodes]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 mt-4",children:[e.jsxs("div",{className:"flex-1 flex gap-2",children:[e.jsx(ce,{placeholder:"搜索节点内容...",value:x,onChange:le=>f(le.target.value),onKeyDown:le=>le.key==="Enter"&&_(),className:"flex-1"}),e.jsx(b,{onClick:_,size:"sm",children:e.jsx(Os,{className:"h-4 w-4"})}),e.jsx(b,{onClick:me,variant:"outline",size:"sm",children:"重置"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(Be,{value:j,onValueChange:le=>p(le),children:[e.jsx(Re,{className:"w-[120px]",children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部节点"}),e.jsx(ne,{value:"entity",children:"仅实体"}),e.jsx(ne,{value:"paragraph",children:"仅段落"})]})]}),e.jsxs(Be,{value:w===1e4?"all":E?"custom":w.toString(),onValueChange:le=>{le==="custom"?(R(!0),T(w.toString())):le==="all"?(R(!1),v(1e4)):(R(!1),v(Number(le)))},children:[e.jsx(Re,{className:"w-[120px]",children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"50",children:"50 节点"}),e.jsx(ne,{value:"100",children:"100 节点"}),e.jsx(ne,{value:"200",children:"200 节点"}),e.jsx(ne,{value:"500",children:"500 节点"}),e.jsx(ne,{value:"1000",children:"1000 节点"}),e.jsx(ne,{value:"all",children:"全部 (最多10000)"}),e.jsx(ne,{value:"custom",children:"自定义..."})]})]}),E&&e.jsx(ce,{type:"number",min:"50",value:k,onChange:le=>T(le.target.value),onBlur:()=>{const le=parseInt(k);!isNaN(le)&&le>=50?v(le):(T("50"),v(50))},onKeyDown:le=>{if(le.key==="Enter"){const L=parseInt(k);!isNaN(L)&&L>=50?v(L):(T("50"),v(50))}},placeholder:"最少50个",className:"w-[120px]"}),e.jsx(b,{onClick:()=>ie(),variant:"outline",size:"sm",disabled:r,children:e.jsx(ps,{className:K("h-4 w-4",r&&"animate-spin")})})]})]})]}),e.jsx("div",{className:"flex-1 relative",children:r?e.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx(ps,{className:"h-8 w-8 animate-spin mx-auto mb-2 text-muted-foreground"}),e.jsx("p",{className:"text-muted-foreground",children:"加载知识图谱中..."})]})}):B.length===0?e.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx(Zc,{className:"h-12 w-12 mx-auto mb-4 text-muted-foreground"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"知识库为空"}),e.jsx("p",{className:"text-muted-foreground",children:"请先导入知识数据"})]})}):e.jsxs(rN,{nodes:B,edges:O,onNodesChange:S,onEdgesChange:he,onNodeClick:de,onEdgeClick:ge,nodeTypes:l1,fitView:!0,minZoom:.05,maxZoom:1.5,defaultViewport:{x:0,y:0,zoom:.5},elevateNodesOnSelect:ye<=500,nodesDraggable:ye<=1e3,attributionPosition:"bottom-left",children:[e.jsx(cN,{variant:oN.Dots,gap:12,size:1}),e.jsx(dN,{}),ye<=500&&e.jsx(uN,{nodeColor:H,nodeBorderRadius:8,pannable:!0,zoomable:!0}),e.jsxs(mN,{position:"top-right",className:"bg-background/95 backdrop-blur-sm rounded-lg border p-3 shadow-lg",children:[e.jsx("div",{className:"text-sm font-semibold mb-2",children:"图例"}),e.jsxs("div",{className:"space-y-2 text-xs",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700"}),e.jsx("span",{children:"实体节点"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700"}),e.jsx("span",{children:"段落节点"})]}),ye>200&&e.jsxs("div",{className:"mt-2 pt-2 border-t text-yellow-600 dark:text-yellow-500",children:[e.jsx("div",{className:"font-semibold",children:"性能模式"}),e.jsx("div",{children:"已禁用动画"}),ye>500&&e.jsx("div",{children:"已禁用缩略图"})]})]})]})]})}),e.jsx(Qt,{open:!!pe,onOpenChange:le=>!le&&je(null),children:e.jsxs(Ut,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsx(Bt,{children:e.jsx(Ht,{children:"节点详情"})}),pe&&e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"grid grid-cols-2 gap-4",children:e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"类型"}),e.jsx("div",{className:"mt-1",children:e.jsx(Qe,{variant:pe.type==="entity"?"default":"secondary",children:pe.type==="entity"?"🏷️ 实体":"📄 段落"})})]})}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"ID"}),e.jsx("code",{className:"mt-1 block p-2 bg-muted rounded text-xs break-all",children:pe.id})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"内容"}),e.jsx(Ie,{className:"mt-1 h-40 p-3 bg-muted rounded",children:e.jsx("p",{className:"text-sm whitespace-pre-wrap",children:pe.content})})]})]})]})}),e.jsx(Qt,{open:!!_e,onOpenChange:le=>!le&&y(null),children:e.jsxs(Ut,{className:"max-w-2xl max-h-[80vh] overflow-hidden flex flex-col",children:[e.jsx(Bt,{children:e.jsx(Ht,{children:"边详情"})}),_e&&e.jsx(Ie,{className:"flex-1 pr-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-blue-50 dark:bg-blue-950 rounded border-2 border-blue-200 dark:border-blue-800",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"源节点"}),e.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:_e.source.content}),e.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[_e.source.id.slice(0,40),"..."]})]}),e.jsx("div",{className:"text-2xl text-muted-foreground flex-shrink-0",children:"→"}),e.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-green-50 dark:bg-green-950 rounded border-2 border-green-200 dark:border-green-800",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"目标节点"}),e.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:_e.target.content}),e.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[_e.target.id.slice(0,40),"..."]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"权重"}),e.jsx("div",{className:"mt-1",children:e.jsx(Qe,{variant:"outline",className:"text-base font-mono",children:_e.edge.weight.toFixed(4)})})]})]})})]})}),e.jsx(ft,{open:F,onOpenChange:U,children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"加载知识图谱"}),e.jsxs(dt,{children:["知识图谱的动态展示会消耗较多系统资源。",e.jsx("br",{}),"确定要加载知识图谱吗?"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{onClick:()=>n({to:"/"}),children:"取消 (返回首页)"}),e.jsx(ut,{onClick:xe,children:"确认加载"})]})]})}),e.jsx(ft,{open:G,onOpenChange:z,children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"⚠️ 节点数量较多"}),e.jsx(dt,{asChild:!0,children:e.jsxs("div",{children:[e.jsxs("p",{children:["您正在尝试加载 ",e.jsx("strong",{className:"text-orange-600",children:w>=1e4?"全部 (最多10000个)":w})," 个节点。"]}),e.jsx("p",{className:"mt-4",children:"节点数量过多可能导致:"}),e.jsxs("ul",{className:"list-disc list-inside mt-2 space-y-1",children:[e.jsx("li",{children:"页面加载时间较长"}),e.jsx("li",{children:"浏览器卡顿或崩溃"}),e.jsx("li",{children:"系统资源占用过高"})]}),e.jsx("p",{className:"mt-4",children:"建议先选择较少的节点数量 (50-200 个)。"})]})})]}),e.jsxs(ct,{children:[e.jsx(mt,{onClick:()=>{z(!1),w>200&&(v(50),R(!1))},children:"取消"}),e.jsx(ut,{onClick:Q,className:"bg-orange-600 hover:bg-orange-700",children:"我了解风险,继续加载"})]})]})})]})}function op({className:n,classNames:r,showOutsideDays:c=!0,captionLayout:d="label",buttonVariant:h="ghost",formatters:x,components:f,...j}){const p=cg();return e.jsx(qy,{showOutsideDays:c,className:K("bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,n),captionLayout:d,formatters:{formatMonthDropdown:w=>w.toLocaleString("default",{month:"short"}),...x},classNames:{root:K("w-fit",p.root),months:K("relative flex flex-col gap-4 md:flex-row",p.months),month:K("flex w-full flex-col gap-4",p.month),nav:K("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",p.nav),button_previous:K(ur({variant:h}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",p.button_previous),button_next:K(ur({variant:h}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",p.button_next),month_caption:K("flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]",p.month_caption),dropdowns:K("flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium",p.dropdowns),dropdown_root:K("has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border",p.dropdown_root),dropdown:K("bg-popover absolute inset-0 opacity-0",p.dropdown),caption_label:K("select-none font-medium",d==="label"?"text-sm":"[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5",p.caption_label),table:"w-full border-collapse",weekdays:K("flex",p.weekdays),weekday:K("text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal",p.weekday),week:K("mt-2 flex w-full",p.week),week_number_header:K("w-[--cell-size] select-none",p.week_number_header),week_number:K("text-muted-foreground select-none text-[0.8rem]",p.week_number),day:K("group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md",p.day),range_start:K("bg-accent rounded-l-md",p.range_start),range_middle:K("rounded-none",p.range_middle),range_end:K("bg-accent rounded-r-md",p.range_end),today:K("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",p.today),outside:K("text-muted-foreground aria-selected:text-muted-foreground",p.outside),disabled:K("text-muted-foreground opacity-50",p.disabled),hidden:K("invisible",p.hidden),...r},components:{Root:({className:w,rootRef:v,...k})=>e.jsx("div",{"data-slot":"calendar",ref:v,className:K(w),...k}),Chevron:({className:w,orientation:v,...k})=>v==="left"?e.jsx(nn,{className:K("size-4",w),...k}):v==="right"?e.jsx(Ol,{className:K("size-4",w),...k}):e.jsx(Dl,{className:K("size-4",w),...k}),DayButton:r1,WeekNumber:({children:w,...v})=>e.jsx("td",{...v,children:e.jsx("div",{className:"flex size-[--cell-size] items-center justify-center text-center",children:w})}),...f},...j})}function r1({className:n,day:r,modifiers:c,...d}){const h=cg(),x=u.useRef(null);return u.useEffect(()=>{c.focused&&x.current?.focus()},[c.focused]),e.jsx(b,{ref:x,variant:"ghost",size:"icon","data-day":r.date.toLocaleDateString(),"data-selected-single":c.selected&&!c.range_start&&!c.range_end&&!c.range_middle,"data-range-start":c.range_start,"data-range-end":c.range_end,"data-range-middle":c.range_middle,className:K("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70",h.day,n),...d})}const c1={lessThanXSeconds:{one:"不到 1 秒",other:"不到 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分钟",lessThanXMinutes:{one:"不到 1 分钟",other:"不到 {{count}} 分钟"},xMinutes:{one:"1 分钟",other:"{{count}} 分钟"},xHours:{one:"1 小时",other:"{{count}} 小时"},aboutXHours:{one:"大约 1 小时",other:"大约 {{count}} 小时"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大约 1 个星期",other:"大约 {{count}} 个星期"},xWeeks:{one:"1 个星期",other:"{{count}} 个星期"},aboutXMonths:{one:"大约 1 个月",other:"大约 {{count}} 个月"},xMonths:{one:"1 个月",other:"{{count}} 个月"},aboutXYears:{one:"大约 1 年",other:"大约 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超过 1 年",other:"超过 {{count}} 年"},almostXYears:{one:"将近 1 年",other:"将近 {{count}} 年"}},o1=(n,r,c)=>{let d;const h=c1[n];return typeof h=="string"?d=h:r===1?d=h.one:d=h.other.replace("{{count}}",String(r)),c?.addSuffix?c.comparison&&c.comparison>0?d+"内":d+"前":d},d1={full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},u1={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},m1={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},h1={date:gu({formats:d1,defaultWidth:"full"}),time:gu({formats:u1,defaultWidth:"full"}),dateTime:gu({formats:m1,defaultWidth:"full"})};function dp(n,r,c){const d="eeee p";return cb(n,r,c)?d:n.getTime()>r.getTime()?"'下个'"+d:"'上个'"+d}const x1={lastWeek:dp,yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:dp,other:"PP p"},f1=(n,r,c,d)=>{const h=x1[n];return typeof h=="function"?h(r,c,d):h},p1={narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},g1={narrow:["1","2","3","4"],abbreviated:["第一季","第二季","第三季","第四季"],wide:["第一季度","第二季度","第三季度","第四季度"]},j1={narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},v1={narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["周日","周一","周二","周三","周四","周五","周六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},b1={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},y1={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},N1=(n,r)=>{const c=Number(n);switch(r?.unit){case"date":return c.toString()+"日";case"hour":return c.toString()+"时";case"minute":return c.toString()+"分";case"second":return c.toString()+"秒";default:return"第 "+c.toString()}},w1={ordinalNumber:N1,era:Ii({values:p1,defaultWidth:"wide"}),quarter:Ii({values:g1,defaultWidth:"wide",argumentCallback:n=>n-1}),month:Ii({values:j1,defaultWidth:"wide"}),day:Ii({values:v1,defaultWidth:"wide"}),dayPeriod:Ii({values:b1,defaultWidth:"wide",formattingValues:y1,defaultFormattingWidth:"wide"})},_1=/^(第\s*)?\d+(日|时|分|秒)?/i,S1=/\d+/i,C1={narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},k1={any:[/^(前)/i,/^(公元)/i]},T1={narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻钟/i},E1={any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},z1={narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},A1={narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},M1={narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^周[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},D1={any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},O1={any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i},R1={any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},L1={ordinalNumber:ob({matchPattern:_1,parsePattern:S1,valueCallback:n=>parseInt(n,10)}),era:Pi({matchPatterns:C1,defaultMatchWidth:"wide",parsePatterns:k1,defaultParseWidth:"any"}),quarter:Pi({matchPatterns:T1,defaultMatchWidth:"wide",parsePatterns:E1,defaultParseWidth:"any",valueCallback:n=>n+1}),month:Pi({matchPatterns:z1,defaultMatchWidth:"wide",parsePatterns:A1,defaultParseWidth:"any"}),day:Pi({matchPatterns:M1,defaultMatchWidth:"wide",parsePatterns:D1,defaultParseWidth:"any"}),dayPeriod:Pi({matchPatterns:O1,defaultMatchWidth:"any",parsePatterns:R1,defaultParseWidth:"any"})},Bc={code:"zh-CN",formatDistance:o1,formatLong:h1,formatRelative:f1,localize:w1,match:L1,options:{weekStartsOn:1,firstWeekContainsDate:4}},Hc={xs:{label:"小",rowHeight:28,class:"text-[10px] sm:text-xs"},sm:{label:"中",rowHeight:36,class:"text-xs sm:text-sm"},base:{label:"大",rowHeight:44,class:"text-sm sm:text-base"}};function U1(){const[n,r]=u.useState([]),[c,d]=u.useState(""),[h,x]=u.useState("all"),[f,j]=u.useState("all"),[p,w]=u.useState(void 0),[v,k]=u.useState(void 0),[T,E]=u.useState(!0),[R,F]=u.useState(!1),[U,M]=u.useState("xs"),[Z,G]=u.useState(4),z=u.useRef(null);u.useEffect(()=>{const y=tn.getAllLogs();r(y);const q=tn.onLog(()=>{r(tn.getAllLogs())}),H=tn.onConnectionChange(ie=>{F(ie)});return()=>{q(),H()}},[]);const B=u.useMemo(()=>{const y=new Set(n.map(q=>q.module).filter(q=>q&&q.trim()!==""));return Array.from(y).sort()},[n]),X=y=>{switch(y){case"DEBUG":return"text-muted-foreground";case"INFO":return"text-blue-500 dark:text-blue-400";case"WARNING":return"text-yellow-600 dark:text-yellow-500";case"ERROR":return"text-red-600 dark:text-red-500";case"CRITICAL":return"text-red-700 dark:text-red-400 font-bold";default:return"text-foreground"}},S=y=>{switch(y){case"DEBUG":return"bg-gray-800/30 dark:bg-gray-800/50";case"INFO":return"bg-blue-900/20 dark:bg-blue-500/20";case"WARNING":return"bg-yellow-900/20 dark:bg-yellow-500/20";case"ERROR":return"bg-red-900/20 dark:bg-red-500/20";case"CRITICAL":return"bg-red-900/30 dark:bg-red-600/30";default:return"bg-gray-800/20 dark:bg-gray-800/30"}},O=()=>{window.location.reload()},se=()=>{tn.clearLogs(),r([])},he=()=>{const y=pe.map(_=>`${_.timestamp} [${_.level.padEnd(8)}] [${_.module}] ${_.message}`).join(` +`),q=new Blob([y],{type:"text/plain;charset=utf-8"}),H=URL.createObjectURL(q),ie=document.createElement("a");ie.href=H,ie.download=`logs-${ju(new Date,"yyyy-MM-dd-HHmmss")}.txt`,ie.click(),URL.revokeObjectURL(H)},ye=()=>{E(!T)},be=()=>{w(void 0),k(void 0)},pe=u.useMemo(()=>n.filter(y=>{const q=c===""||y.message.toLowerCase().includes(c.toLowerCase())||y.module.toLowerCase().includes(c.toLowerCase()),H=h==="all"||y.level===h,ie=f==="all"||y.module===f;let _=!0;if(p||v){const me=new Date(y.timestamp);if(p){const xe=new Date(p);xe.setHours(0,0,0,0),_=_&&me>=xe}if(v){const xe=new Date(v);xe.setHours(23,59,59,999),_=_&&me<=xe}}return q&&H&&ie&&_}),[n,c,h,f,p,v]),je=Hc[U].rowHeight+Z,_e=Iv({count:pe.length,getScrollElement:()=>z.current,estimateSize:()=>je,overscan:15});return u.useEffect(()=>{T&&pe.length>0&&_e.scrollToIndex(pe.length-1,{align:"end",behavior:"auto"})},[pe.length,T,_e]),e.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[e.jsxs("div",{className:"flex-shrink-0 space-y-4 p-3 sm:p-4 lg:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-xl sm:text-2xl lg:text-3xl font-bold",children:"日志查看器"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:"实时查看和分析麦麦运行日志"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:K("h-2.5 w-2.5 sm:h-3 sm:w-3 rounded-full",R?"bg-green-500 animate-pulse":"bg-red-500")}),e.jsx("span",{className:"text-xs sm:text-sm text-muted-foreground",children:R?"已连接":"未连接"})]})]}),e.jsx(Ve,{className:"p-3 sm:p-4",children:e.jsxs("div",{className:"flex flex-col gap-3 sm:gap-4",children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:gap-4",children:[e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(Os,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索日志...",value:c,onChange:y=>d(y.target.value),className:"pl-9 h-9 text-sm"})]}),e.jsxs(Be,{value:h,onValueChange:x,children:[e.jsxs(Re,{className:"w-full sm:w-[140px] lg:w-[180px] h-9 text-sm",children:[e.jsx(Tu,{className:"h-4 w-4 mr-2"}),e.jsx(He,{placeholder:"级别"})]}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部级别"}),e.jsx(ne,{value:"DEBUG",children:"DEBUG"}),e.jsx(ne,{value:"INFO",children:"INFO"}),e.jsx(ne,{value:"WARNING",children:"WARNING"}),e.jsx(ne,{value:"ERROR",children:"ERROR"}),e.jsx(ne,{value:"CRITICAL",children:"CRITICAL"})]})]}),e.jsxs(Be,{value:f,onValueChange:j,children:[e.jsxs(Re,{className:"w-full sm:w-[160px] lg:w-[200px] h-9 text-sm",children:[e.jsx(Tu,{className:"h-4 w-4 mr-2"}),e.jsx(He,{placeholder:"模块"})]}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部模块"}),B.map(y=>e.jsx(ne,{value:y,children:y},y))]})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:gap-4",children:[e.jsxs(Ma,{children:[e.jsx(Da,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",className:K("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!p&&"text-muted-foreground"),children:[e.jsx(qf,{className:"mr-2 h-4 w-4"}),e.jsx("span",{className:"text-xs sm:text-sm",children:p?ju(p,"PPP",{locale:Bc}):"开始日期"})]})}),e.jsx(va,{className:"w-auto p-0",align:"start",children:e.jsx(op,{mode:"single",selected:p,onSelect:w,initialFocus:!0,locale:Bc})})]}),e.jsxs(Ma,{children:[e.jsx(Da,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",className:K("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!v&&"text-muted-foreground"),children:[e.jsx(qf,{className:"mr-2 h-4 w-4"}),e.jsx("span",{className:"text-xs sm:text-sm",children:v?ju(v,"PPP",{locale:Bc}):"结束日期"})]})}),e.jsx(va,{className:"w-auto p-0",align:"start",children:e.jsx(op,{mode:"single",selected:v,onSelect:k,initialFocus:!0,locale:Bc})})]}),(p||v)&&e.jsxs(b,{variant:"outline",size:"sm",onClick:be,className:"w-full sm:w-auto h-9",children:[e.jsx(si,{className:"h-4 w-4 sm:mr-2"}),e.jsx("span",{className:"hidden sm:inline text-sm",children:"清除时间筛选"}),e.jsx("span",{className:"sm:hidden text-sm",children:"清除"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center",children:[e.jsxs("div",{className:"flex gap-2 flex-wrap",children:[e.jsxs(b,{variant:T?"default":"outline",size:"sm",onClick:ye,className:"flex-1 sm:flex-none h-9",children:[T?e.jsx(by,{className:"h-4 w-4"}):e.jsx(yy,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:T?"自动滚动":"已暂停"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:O,className:"flex-1 sm:flex-none h-9",children:[e.jsx(ps,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"刷新"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:se,className:"flex-1 sm:flex-none h-9",children:[e.jsx(Pe,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"清空"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:he,className:"flex-1 sm:flex-none h-9",children:[e.jsx(sl,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"导出"})]})]}),e.jsx("div",{className:"flex-1 hidden sm:block"}),e.jsxs("div",{className:"text-xs sm:text-sm text-muted-foreground flex items-center justify-center sm:justify-end",children:[e.jsxs("span",{className:"font-mono",children:[pe.length," / ",n.length]}),e.jsx("span",{className:"ml-1",children:"条日志"})]})]}),e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-6 pt-2 border-t border-border/50",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(Ny,{className:"h-4 w-4"}),e.jsx("span",{children:"字号"})]}),e.jsx("div",{className:"flex gap-1",children:Object.keys(Hc).map(y=>e.jsx(b,{variant:U===y?"default":"outline",size:"sm",onClick:()=>M(y),className:"h-7 px-3 text-xs",children:Hc[y].label},y))})]}),e.jsxs("div",{className:"flex items-center gap-3 flex-1 max-w-xs",children:[e.jsx("span",{className:"text-sm text-muted-foreground whitespace-nowrap",children:"行距"}),e.jsx(ka,{value:[Z],onValueChange:([y])=>G(y),min:0,max:12,step:2,className:"flex-1"}),e.jsxs("span",{className:"text-xs text-muted-foreground w-8",children:[Z,"px"]})]})]})]})})]}),e.jsx("div",{className:"flex-1 min-h-0 px-3 sm:px-4 lg:px-6 pb-3 sm:pb-4 lg:pb-6",children:e.jsx(Ve,{className:"bg-black dark:bg-gray-950 border-gray-800 dark:border-gray-900 h-full",children:e.jsx(Ie,{viewportRef:z,className:"h-full",children:e.jsx("div",{className:K("p-2 sm:p-3 font-mono relative",Hc[U].class),style:{height:`${_e.getTotalSize()}px`},children:pe.length===0?e.jsx("div",{className:"text-gray-500 dark:text-gray-600 text-center py-8 text-sm",children:"暂无日志数据"}):_e.getVirtualItems().map(y=>{const q=pe[y.index];return e.jsxs("div",{"data-index":y.index,ref:_e.measureElement,className:K("absolute top-0 left-0 w-full px-2 sm:px-3 rounded hover:bg-white/5 transition-colors group",S(q.level)),style:{transform:`translateY(${y.start}px)`,paddingTop:`${Z/2}px`,paddingBottom:`${Z/2}px`},children:[e.jsxs("div",{className:"flex flex-col gap-0.5 sm:hidden",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-gray-500 dark:text-gray-600",children:q.timestamp}),e.jsxs("span",{className:K("font-semibold",X(q.level)),children:["[",q.level,"]"]})]}),e.jsx("div",{className:"text-cyan-400 dark:text-cyan-500 truncate",children:q.module}),e.jsx("div",{className:"text-gray-300 dark:text-gray-400 whitespace-pre-wrap break-words",children:q.message})]}),e.jsxs("div",{className:"hidden sm:flex gap-2 items-start",children:[e.jsx("span",{className:"text-gray-500 dark:text-gray-600 flex-shrink-0 w-[130px] lg:w-[160px]",children:q.timestamp}),e.jsxs("span",{className:K("flex-shrink-0 w-[65px] lg:w-[75px] font-semibold",X(q.level)),children:["[",q.level,"]"]}),e.jsx("span",{className:"text-cyan-400 dark:text-cyan-500 flex-shrink-0 w-[100px] lg:w-[130px] truncate",children:q.module}),e.jsx("span",{className:"text-gray-300 dark:text-gray-400 flex-1 whitespace-pre-wrap break-words",children:q.message})]})]},y.key)})})})})})]})}const B1="Mai-with-u",H1="plugin-repo",q1="main",G1="plugin_details.json";async function V1(){try{const n=await ke("/api/webui/plugins/fetch-raw",{method:"POST",body:JSON.stringify({owner:B1,repo:H1,branch:q1,file_path:G1})});if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);const r=await n.json();if(!r.success||!r.data)throw new Error(r.error||"获取插件列表失败");return JSON.parse(r.data).filter(h=>!h?.id||!h?.manifest?(console.warn("跳过无效插件数据:",h),!1):!h.manifest.name||!h.manifest.version?(console.warn("跳过缺少必需字段的插件:",h.id),!1):!0).map(h=>({id:h.id,manifest:{manifest_version:h.manifest.manifest_version||1,name:h.manifest.name,version:h.manifest.version,description:h.manifest.description||"",author:h.manifest.author||{name:"Unknown"},license:h.manifest.license||"Unknown",host_application:h.manifest.host_application||{min_version:"0.0.0"},homepage_url:h.manifest.homepage_url,repository_url:h.manifest.repository_url,keywords:h.manifest.keywords||[],categories:h.manifest.categories||[],default_locale:h.manifest.default_locale||"zh-CN",locales_path:h.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!1,published_at:new Date().toISOString(),updated_at:new Date().toISOString()}))}catch(n){throw console.error("Failed to fetch plugin list:",n),n}}async function F1(){try{const n=await ke("/api/webui/plugins/git-status");if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);return await n.json()}catch(n){return console.error("Failed to check Git status:",n),{installed:!1,error:"无法检测 Git 安装状态"}}}async function $1(){try{const n=await ke("/api/webui/plugins/version");if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);return await n.json()}catch(n){return console.error("Failed to get Maimai version:",n),{version:"0.0.0",version_major:0,version_minor:0,version_patch:0}}}function Q1(n,r,c){const d=n.split(".").map(j=>parseInt(j)||0),h=d[0]||0,x=d[1]||0,f=d[2]||0;if(c.version_majorparseInt(k)||0),p=j[0]||0,w=j[1]||0,v=j[2]||0;if(c.version_major>p||c.version_major===p&&c.version_minor>w||c.version_major===p&&c.version_minor===w&&c.version_patch>v)return!1}return!0}function Y1(n,r){const c=window.location.protocol==="https:"?"wss:":"ws:",d=window.location.host,h=new WebSocket(`${c}//${d}/api/webui/ws/plugin-progress`);return h.onopen=()=>{console.log("Plugin progress WebSocket connected");const x=setInterval(()=>{h.readyState===WebSocket.OPEN?h.send("ping"):clearInterval(x)},3e4)},h.onmessage=x=>{try{if(x.data==="pong")return;const f=JSON.parse(x.data);n(f)}catch(f){console.error("Failed to parse progress data:",f)}},h.onerror=x=>{console.error("Plugin progress WebSocket error:",x),r?.(x)},h.onclose=()=>{console.log("Plugin progress WebSocket disconnected")},h}async function nr(){try{const n=await ke("/api/webui/plugins/installed",{headers:Tt()});if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);const r=await n.json();if(!r.success)throw new Error(r.message||"获取已安装插件列表失败");return r.plugins||[]}catch(n){return console.error("Failed to get installed plugins:",n),[]}}function qc(n,r){return r.some(c=>c.id===n)}function Gc(n,r){const c=r.find(d=>d.id===n);if(c)return c.manifest?.version||c.version}async function X1(n,r,c="main"){const d=await ke("/api/webui/plugins/install",{method:"POST",body:JSON.stringify({plugin_id:n,repository_url:r,branch:c})});if(!d.ok){const h=await d.json();throw new Error(h.detail||"安装失败")}return await d.json()}async function K1(n){const r=await ke("/api/webui/plugins/uninstall",{method:"POST",body:JSON.stringify({plugin_id:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"卸载失败")}return await r.json()}async function Z1(n,r,c="main"){const d=await ke("/api/webui/plugins/update",{method:"POST",body:JSON.stringify({plugin_id:n,repository_url:r,branch:c})});if(!d.ok){const h=await d.json();throw new Error(h.detail||"更新失败")}return await d.json()}async function J1(n){const r=await ke(`/api/webui/plugins/config/${n}/schema`,{headers:Tt()});if(!r.ok){const d=await r.json();throw new Error(d.detail||"获取配置 Schema 失败")}const c=await r.json();if(!c.success)throw new Error(c.message||"获取配置 Schema 失败");return c.schema}async function I1(n){const r=await ke(`/api/webui/plugins/config/${n}`,{headers:Tt()});if(!r.ok){const d=await r.json();throw new Error(d.detail||"获取配置失败")}const c=await r.json();if(!c.success)throw new Error(c.message||"获取配置失败");return c.config}async function P1(n,r){const c=await ke(`/api/webui/plugins/config/${n}`,{method:"PUT",body:JSON.stringify({config:r})});if(!c.ok){const d=await c.json();throw new Error(d.detail||"保存配置失败")}return await c.json()}async function W1(n){const r=await ke(`/api/webui/plugins/config/${n}/reset`,{method:"POST",headers:Tt()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"重置配置失败")}return await r.json()}async function e2(n){const r=await ke(`/api/webui/plugins/config/${n}/toggle`,{method:"POST",headers:Tt()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"切换状态失败")}return await r.json()}const br="https://maibot-plugin-stats.maibot-webui.workers.dev";async function zg(n){try{const r=await fetch(`${br}/stats/${n}`);return r.ok?await r.json():(console.error("Failed to fetch plugin stats:",r.statusText),null)}catch(r){return console.error("Error fetching plugin stats:",r),null}}async function t2(n,r){try{const c=r||Xu(),d=await fetch(`${br}/stats/like`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,user_id:c})}),h=await d.json();return d.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:d.ok?{success:!0,...h}:{success:!1,error:h.error||"点赞失败"}}catch(c){return console.error("Error liking plugin:",c),{success:!1,error:"网络错误"}}}async function s2(n,r){try{const c=r||Xu(),d=await fetch(`${br}/stats/dislike`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,user_id:c})}),h=await d.json();return d.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:d.ok?{success:!0,...h}:{success:!1,error:h.error||"点踩失败"}}catch(c){return console.error("Error disliking plugin:",c),{success:!1,error:"网络错误"}}}async function a2(n,r,c,d){if(r<1||r>5)return{success:!1,error:"评分必须在 1-5 之间"};try{const h=d||Xu(),x=await fetch(`${br}/stats/rate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,rating:r,comment:c,user_id:h})}),f=await x.json();return x.status===429?{success:!1,error:"每天最多评分 3 次"}:x.ok?{success:!0,...f}:{success:!1,error:f.error||"评分失败"}}catch(h){return console.error("Error rating plugin:",h),{success:!1,error:"网络错误"}}}async function l2(n){try{const r=await fetch(`${br}/stats/download`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n})}),c=await r.json();return r.status===429?(console.warn("Download recording rate limited"),{success:!0}):r.ok?{success:!0,...c}:(console.error("Failed to record download:",c.error),{success:!1,error:c.error})}catch(r){return console.error("Error recording download:",r),{success:!1,error:"网络错误"}}}function n2(){const n=navigator,r=[navigator.userAgent,navigator.language,navigator.languages?.join(",")||"",navigator.platform,navigator.hardwareConcurrency||0,screen.width,screen.height,screen.colorDepth,screen.pixelDepth,new Date().getTimezoneOffset(),Intl.DateTimeFormat().resolvedOptions().timeZone,navigator.maxTouchPoints||0,n.deviceMemory||0].join("|");let c=0;for(let d=0;d{x(!0);const M=await zg(n);M&&d(M),x(!1)};u.useEffect(()=>{E()},[n]);const R=async()=>{const M=await t2(n);M.success?(T({title:"已点赞",description:"感谢你的支持!"}),E()):T({title:"点赞失败",description:M.error||"未知错误",variant:"destructive"})},F=async()=>{const M=await s2(n);M.success?(T({title:"已反馈",description:"感谢你的反馈!"}),E()):T({title:"操作失败",description:M.error||"未知错误",variant:"destructive"})},U=async()=>{if(f===0){T({title:"请选择评分",description:"至少选择 1 颗星",variant:"destructive"});return}const M=await a2(n,f,p||void 0);M.success?(T({title:"评分成功",description:"感谢你的评价!"}),k(!1),j(0),w(""),E()):T({title:"评分失败",description:M.error||"未知错误",variant:"destructive"})};return h?e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(sl,{className:"h-4 w-4"}),e.jsx("span",{children:"-"})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ml,{className:"h-4 w-4"}),e.jsx("span",{children:"-"})]})]}):c?r?e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",title:`下载量: ${c.downloads.toLocaleString()}`,children:[e.jsx(sl,{className:"h-4 w-4"}),e.jsx("span",{children:c.downloads.toLocaleString()})]}),e.jsxs("div",{className:"flex items-center gap-1",title:`评分: ${c.rating.toFixed(1)} (${c.rating_count} 条评价)`,children:[e.jsx(Ml,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsx("span",{children:c.rating.toFixed(1)})]}),e.jsxs("div",{className:"flex items-center gap-1",title:`点赞数: ${c.likes}`,children:[e.jsx(bu,{className:"h-4 w-4"}),e.jsx("span",{children:c.likes})]})]}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-4",children:[e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(sl,{className:"h-5 w-5 text-muted-foreground mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.downloads.toLocaleString()}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"下载量"})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(Ml,{className:"h-5 w-5 text-yellow-400 mb-1 fill-yellow-400"}),e.jsx("span",{className:"text-2xl font-bold",children:c.rating.toFixed(1)}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:[c.rating_count," 条评价"]})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(bu,{className:"h-5 w-5 text-green-500 mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.likes}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"点赞"})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(Gf,{className:"h-5 w-5 text-red-500 mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.dislikes}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"点踩"})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(b,{variant:"outline",size:"sm",onClick:R,children:[e.jsx(bu,{className:"h-4 w-4 mr-1"}),"点赞"]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:F,children:[e.jsx(Gf,{className:"h-4 w-4 mr-1"}),"点踩"]}),e.jsxs(Qt,{open:v,onOpenChange:k,children:[e.jsx(Vu,{asChild:!0,children:e.jsxs(b,{variant:"default",size:"sm",children:[e.jsx(Ml,{className:"h-4 w-4 mr-1"}),"评分"]})}),e.jsxs(Ut,{children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:"为插件评分"}),e.jsx(ss,{children:"分享你的使用体验,帮助其他用户"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"flex flex-col items-center gap-2",children:[e.jsx("div",{className:"flex gap-2",children:[1,2,3,4,5].map(M=>e.jsx("button",{onClick:()=>j(M),className:"focus:outline-none",children:e.jsx(Ml,{className:`h-8 w-8 transition-colors ${M<=f?"fill-yellow-400 text-yellow-400":"text-muted-foreground hover:text-yellow-300"}`})},M))}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[f===0&&"点击星星进行评分",f===1&&"很差",f===2&&"一般",f===3&&"还行",f===4&&"不错",f===5&&"非常好"]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium mb-2 block",children:"评论(可选)"}),e.jsx(Ot,{value:p,onChange:M=>w(M.target.value),placeholder:"分享你的使用体验...",rows:4,maxLength:500}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 text-right",children:[p.length," / 500"]})]})]}),e.jsxs(os,{children:[e.jsx(b,{variant:"outline",onClick:()=>k(!1),children:"取消"}),e.jsx(b,{onClick:U,disabled:f===0,children:"提交评分"})]})]})]})]}),c.recent_ratings&&c.recent_ratings.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"text-sm font-semibold",children:"最近评价"}),e.jsx("div",{className:"space-y-3",children:c.recent_ratings.map((M,Z)=>e.jsxs("div",{className:"p-3 rounded-lg border bg-muted/50",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("div",{className:"flex gap-1",children:[1,2,3,4,5].map(G=>e.jsx(Ml,{className:`h-3 w-3 ${G<=M.rating?"fill-yellow-400 text-yellow-400":"text-muted-foreground"}`},G))}),e.jsx("span",{className:"text-xs text-muted-foreground",children:new Date(M.created_at).toLocaleDateString()})]}),M.comment&&e.jsx("p",{className:"text-sm text-muted-foreground",children:M.comment})]},Z))})]})]}):null}const up={"Group Management":"群组管理","Entertainment & Interaction":"娱乐互动","Utility Tools":"实用工具","Content Generation":"内容生成",Multimedia:"多媒体","External Integration":"外部集成","Data Analysis & Insights":"数据分析与洞察",Other:"其他"};function r2(){const n=ua(),[r,c]=u.useState(null),[d,h]=u.useState(""),[x,f]=u.useState("all"),[j,p]=u.useState("all"),[w,v]=u.useState(!0),[k,T]=u.useState([]),[E,R]=u.useState(!0),[F,U]=u.useState(null),[M,Z]=u.useState(null),[G,z]=u.useState(null),[B,X]=u.useState(null),[,S]=u.useState([]),[O,se]=u.useState({}),{toast:he}=Rt(),ye=async _=>{const me=_.map(async de=>{try{const ge=await zg(de.id);return{id:de.id,stats:ge}}catch(ge){return console.warn(`Failed to load stats for ${de.id}:`,ge),{id:de.id,stats:null}}}),xe=await Promise.all(me),Q={};xe.forEach(({id:de,stats:ge})=>{ge&&(Q[de]=ge)}),se(Q)};u.useEffect(()=>{let _=null,me=!1;return(async()=>{if(_=Y1(Q=>{me||(z(Q),Q.stage==="success"?setTimeout(()=>{me||z(null)},2e3):Q.stage==="error"&&(R(!1),U(Q.error||"加载失败")))},Q=>{console.error("WebSocket error:",Q),me||he({title:"WebSocket 连接失败",description:"无法实时显示加载进度",variant:"destructive"})}),await new Promise(Q=>{if(!_){Q();return}const de=()=>{_&&_.readyState===WebSocket.OPEN?(console.log("WebSocket connected, starting to load plugins"),Q()):_&&_.readyState===WebSocket.CLOSED?(console.warn("WebSocket closed before loading plugins"),Q()):setTimeout(de,100)};de()}),!me){const Q=await F1();Z(Q),Q.installed||he({title:"Git 未安装",description:Q.error||"请先安装 Git 才能使用插件安装功能",variant:"destructive"})}if(!me){const Q=await $1();X(Q)}if(!me)try{R(!0),U(null);const Q=await V1();if(!me){const de=await nr();S(de);const ge=Q.map(le=>{const L=qc(le.id,de),$=Gc(le.id,de);return{...le,installed:L,installed_version:$}});for(const le of de)!ge.some($=>$.id===le.id)&&le.manifest&&ge.push({id:le.id,manifest:{manifest_version:le.manifest.manifest_version||1,name:le.manifest.name,version:le.manifest.version,description:le.manifest.description||"",author:le.manifest.author,license:le.manifest.license||"Unknown",host_application:le.manifest.host_application,homepage_url:le.manifest.homepage_url,repository_url:le.manifest.repository_url,keywords:le.manifest.keywords||[],categories:le.manifest.categories||[],default_locale:le.manifest.default_locale||"zh-CN",locales_path:le.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!0,installed_version:le.manifest.version,published_at:new Date().toISOString(),updated_at:new Date().toISOString()});T(ge),ye(ge)}}catch(Q){if(!me){const de=Q instanceof Error?Q.message:"加载插件列表失败";U(de),he({title:"加载失败",description:de,variant:"destructive"})}}finally{me||R(!1)}})(),()=>{me=!0,_&&_.close()}},[he]);const be=_=>{if(!_.installed&&B&&!pe(_))return e.jsxs(Qe,{variant:"destructive",className:"gap-1",children:[e.jsx(Ea,{className:"h-3 w-3"}),"不兼容"]});if(_.installed){const me=_.installed_version?.trim(),xe=_.manifest.version?.trim();if(me!==xe){const Q=me?.split(".").map(Number)||[0,0,0],de=xe?.split(".").map(Number)||[0,0,0];for(let ge=0;ge<3;ge++){if((de[ge]||0)>(Q[ge]||0))return e.jsxs(Qe,{variant:"outline",className:"gap-1 text-orange-600 border-orange-600",children:[e.jsx(Ea,{className:"h-3 w-3"}),"可更新"]});if((de[ge]||0)<(Q[ge]||0))break}}return e.jsxs(Qe,{variant:"default",className:"gap-1",children:[e.jsx(oa,{className:"h-3 w-3"}),"已安装"]})}return null},pe=_=>!B||!_.manifest?.host_application?!0:Q1(_.manifest.host_application.min_version,_.manifest.host_application.max_version,B),je=_=>{if(!_.installed||!_.installed_version||!_.manifest?.version)return!1;const me=_.installed_version.trim(),xe=_.manifest.version.trim();if(me===xe)return!1;const Q=me.split(".").map(Number),de=xe.split(".").map(Number);for(let ge=0;ge<3;ge++){if((de[ge]||0)>(Q[ge]||0))return!0;if((de[ge]||0)<(Q[ge]||0))return!1}return!1},_e=k.filter(_=>{if(!_.manifest)return console.warn("[过滤] 跳过无 manifest 的插件:",_.id),!1;const me=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(ge=>ge.toLowerCase().includes(d.toLowerCase())),xe=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x);let Q=!0;j==="installed"?Q=_.installed===!0:j==="updates"&&(Q=_.installed===!0&&je(_));const de=!w||!B||pe(_);return me&&xe&&Q&&de}),y=()=>{c(null)},q=async _=>{if(!M?.installed){he({title:"无法安装",description:"Git 未安装",variant:"destructive"});return}if(B&&!pe(_)){he({title:"无法安装",description:"插件与当前麦麦版本不兼容",variant:"destructive"});return}try{await X1(_.id,_.manifest.repository_url||"","main"),l2(_.id).catch(xe=>{console.warn("Failed to record download:",xe)}),he({title:"安装成功",description:`${_.manifest.name} 已成功安装`});const me=await nr();S(me),T(xe=>xe.map(Q=>{if(Q.id===_.id){const de=qc(Q.id,me),ge=Gc(Q.id,me);return{...Q,installed:de,installed_version:ge}}return Q}))}catch(me){he({title:"安装失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}},H=async _=>{try{await K1(_.id),he({title:"卸载成功",description:`${_.manifest.name} 已成功卸载`});const me=await nr();S(me),T(xe=>xe.map(Q=>{if(Q.id===_.id){const de=qc(Q.id,me),ge=Gc(Q.id,me);return{...Q,installed:de,installed_version:ge}}return Q}))}catch(me){he({title:"卸载失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}},ie=async _=>{if(!M?.installed){he({title:"无法更新",description:"Git 未安装",variant:"destructive"});return}try{const me=await Z1(_.id,_.manifest.repository_url||"","main");he({title:"更新成功",description:`${_.manifest.name} 已从 ${me.old_version} 更新到 ${me.new_version}`});const xe=await nr();S(xe),T(Q=>Q.map(de=>{if(de.id===_.id){const ge=qc(de.id,xe),le=Gc(de.id,xe);return{...de,installed:ge,installed_version:le}}return de}))}catch(me){he({title:"更新失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}};return e.jsx(Ie,{className:"h-full",children:e.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件市场"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"浏览和管理麦麦的插件"})]}),e.jsxs(b,{onClick:()=>n({to:"/plugin-mirrors"}),children:[e.jsx(wy,{className:"h-4 w-4 mr-2"}),"配置镜像源"]})]}),M&&!M.installed&&e.jsxs(Ve,{className:"border-orange-600 bg-orange-50 dark:bg-orange-950/20",children:[e.jsx(pt,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(pa,{className:"h-5 w-5 text-orange-600"}),e.jsxs("div",{children:[e.jsx(gt,{className:"text-lg text-orange-900 dark:text-orange-100",children:"Git 未安装"}),e.jsx(Kt,{className:"text-orange-800 dark:text-orange-200",children:M.error||"请先安装 Git 才能使用插件安装功能"})]})]})}),e.jsx(yt,{children:e.jsxs("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:["您可以从 ",e.jsx("a",{href:"https://git-scm.com/downloads",target:"_blank",rel:"noopener noreferrer",className:"underline font-medium",children:"git-scm.com"})," 下载并安装 Git。 安装完成后,请重启麦麦应用。"]})})]}),e.jsx(Ve,{className:"p-4",children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(Os,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索插件...",value:d,onChange:_=>h(_.target.value),className:"pl-9"})]}),e.jsxs(Be,{value:x,onValueChange:f,children:[e.jsx(Re,{className:"w-full sm:w-[200px]",children:e.jsx(He,{placeholder:"选择分类"})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部分类"}),e.jsx(ne,{value:"Group Management",children:"群组管理"}),e.jsx(ne,{value:"Entertainment & Interaction",children:"娱乐互动"}),e.jsx(ne,{value:"Utility Tools",children:"实用工具"}),e.jsx(ne,{value:"Content Generation",children:"内容生成"}),e.jsx(ne,{value:"Multimedia",children:"多媒体"}),e.jsx(ne,{value:"External Integration",children:"外部集成"}),e.jsx(ne,{value:"Data Analysis & Insights",children:"数据分析与洞察"}),e.jsx(ne,{value:"Other",children:"其他"})]})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(bs,{id:"compatible-only",checked:w,onCheckedChange:_=>v(_===!0)}),e.jsx("label",{htmlFor:"compatible-only",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer",children:"只显示兼容当前版本的插件"})]})]})}),e.jsx(Aa,{value:j,onValueChange:p,className:"w-full",children:e.jsxs(ja,{className:"grid w-full grid-cols-3",children:[e.jsxs(st,{value:"all",children:["全部插件 (",k.filter(_=>{if(!_.manifest)return!1;const me=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(de=>de.toLowerCase().includes(d.toLowerCase())),xe=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x),Q=!w||!B||pe(_);return me&&xe&&Q}).length,")"]}),e.jsxs(st,{value:"installed",children:["已安装 (",k.filter(_=>{if(!_.manifest)return!1;const me=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(de=>de.toLowerCase().includes(d.toLowerCase())),xe=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x),Q=!w||!B||pe(_);return _.installed&&me&&xe&&Q}).length,")"]}),e.jsxs(st,{value:"updates",children:["可更新 (",k.filter(_=>{if(!_.manifest)return!1;const me=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(de=>de.toLowerCase().includes(d.toLowerCase())),xe=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x),Q=!w||!B||pe(_);return _.installed&&je(_)&&me&&xe&&Q}).length,")"]})]})}),G&&G.stage==="loading"&&e.jsx(Ve,{className:"p-4",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(vs,{className:"h-4 w-4 animate-spin"}),e.jsxs("span",{className:"text-sm font-medium",children:[G.operation==="fetch"&&"加载插件列表",G.operation==="install"&&`安装插件${G.plugin_id?`: ${G.plugin_id}`:""}`,G.operation==="uninstall"&&`卸载插件${G.plugin_id?`: ${G.plugin_id}`:""}`,G.operation==="update"&&`更新插件${G.plugin_id?`: ${G.plugin_id}`:""}`]})]}),e.jsxs("span",{className:"text-sm font-medium",children:[G.progress,"%"]})]}),e.jsx(vr,{value:G.progress,className:"h-2"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:G.message}),G.operation==="fetch"&&G.total_plugins>0&&e.jsxs("div",{className:"text-xs text-muted-foreground text-center",children:["已加载 ",G.loaded_plugins," / ",G.total_plugins," 个插件"]})]})}),G&&G.stage==="error"&&G.error&&e.jsx(Ve,{className:"border-destructive bg-destructive/10",children:e.jsx(pt,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(pa,{className:"h-5 w-5 text-destructive"}),e.jsxs("div",{children:[e.jsx(gt,{className:"text-lg text-destructive",children:"加载失败"}),e.jsx(Kt,{className:"text-destructive/80",children:G.error})]})]})})}),E?e.jsxs("div",{className:"flex items-center justify-center py-12",children:[e.jsx(vs,{className:"h-8 w-8 animate-spin text-muted-foreground"}),e.jsx("span",{className:"ml-3 text-muted-foreground",children:"加载插件列表中..."})]}):F?e.jsx(Ve,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(pa,{className:"h-12 w-12 text-destructive mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:F}),e.jsx(b,{onClick:()=>window.location.reload(),children:"重新加载"})]})}):_e.length===0?e.jsx(Ve,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(Os,{className:"h-12 w-12 text-muted-foreground mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"未找到插件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:d||x!=="all"?"尝试调整搜索条件或筛选器":"暂无可用插件"})]})}):e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:_e.map(_=>e.jsxs(Ve,{className:"flex flex-col hover:shadow-lg transition-shadow h-full",children:[e.jsxs(pt,{children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsx(gt,{className:"text-xl",children:_.manifest?.name||_.id}),e.jsxs("div",{className:"flex flex-col gap-1",children:[_.manifest?.categories&&_.manifest.categories[0]&&e.jsx(Qe,{variant:"secondary",className:"text-xs whitespace-nowrap",children:up[_.manifest.categories[0]]||_.manifest.categories[0]}),be(_)]})]}),e.jsx(Kt,{className:"line-clamp-2",children:_.manifest?.description||"无描述"})]}),e.jsx(yt,{className:"flex-1",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(sl,{className:"h-4 w-4"}),e.jsx("span",{children:(O[_.id]?.downloads??_.downloads??0).toLocaleString()})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ml,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsx("span",{children:(O[_.id]?.rating??_.rating??0).toFixed(1)})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[_.manifest?.keywords&&_.manifest.keywords.slice(0,3).map(me=>e.jsx(Qe,{variant:"outline",className:"text-xs",children:me},me)),_.manifest?.keywords&&_.manifest.keywords.length>3&&e.jsxs(Qe,{variant:"outline",className:"text-xs",children:["+",_.manifest.keywords.length-3]})]}),e.jsxs("div",{className:"text-xs text-muted-foreground pt-2 border-t space-y-1",children:[e.jsxs("div",{children:["v",_.manifest?.version||"unknown"," · ",_.manifest?.author?.name||"Unknown"]}),_.manifest?.host_application&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{children:"支持:"}),e.jsxs("span",{className:"font-medium",children:[_.manifest.host_application.min_version,_.manifest.host_application.max_version?` - ${_.manifest.host_application.max_version}`:" - 最新版本"]})]})]})]})}),e.jsx(og,{className:"pt-4",children:e.jsxs("div",{className:"flex items-center justify-end gap-2 w-full",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>c(_),children:"查看详情"}),_.installed?je(_)?e.jsxs(b,{size:"sm",disabled:!M?.installed,title:M?.installed?void 0:"Git 未安装",onClick:()=>ie(_),children:[e.jsx(ps,{className:"h-4 w-4 mr-1"}),"更新"]}):e.jsxs(b,{variant:"destructive",size:"sm",disabled:!M?.installed,title:M?.installed?void 0:"Git 未安装",onClick:()=>H(_),children:[e.jsx(Pe,{className:"h-4 w-4 mr-1"}),"卸载"]}):e.jsxs(b,{size:"sm",disabled:!M?.installed||G?.operation==="install"||B!==null&&!pe(_),title:M?.installed?B!==null&&!pe(_)?`不兼容当前版本 (需要 ${_.manifest?.host_application?.min_version||"未知"}${_.manifest?.host_application?.max_version?` - ${_.manifest.host_application.max_version}`:"+"},当前 ${B?.version})`:void 0:"Git 未安装",onClick:()=>q(_),children:[e.jsx(sl,{className:"h-4 w-4 mr-1"}),G?.operation==="install"&&G?.plugin_id===_.id?"安装中...":"安装"]})]})})]},_.id))}),e.jsx(Qt,{open:r!==null,onOpenChange:y,children:r&&r.manifest&&e.jsx(Ut,{className:"max-w-2xl max-h-[80vh] p-0 flex flex-col",children:e.jsx(Ie,{className:"flex-1 overflow-auto",children:e.jsxs("div",{className:"p-6",children:[e.jsx(Bt,{children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"space-y-2 flex-1",children:[e.jsx(Ht,{className:"text-2xl",children:r.manifest.name}),e.jsxs(ss,{children:["作者: ",r.manifest.author?.name||"Unknown",r.manifest.author?.url&&e.jsx("a",{href:r.manifest.author.url,target:"_blank",rel:"noopener noreferrer",className:"ml-2 text-primary hover:underline",children:e.jsx(Fc,{className:"h-3 w-3 inline"})})]})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[r.manifest.categories&&r.manifest.categories[0]&&e.jsx(Qe,{variant:"secondary",children:up[r.manifest.categories[0]]||r.manifest.categories[0]}),be(r)]})]})}),e.jsxs("div",{className:"space-y-6",children:[e.jsx(i2,{pluginId:r.id}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"版本"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["v",r.manifest?.version||"unknown"]}),r.installed&&r.installed_version&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:["已安装: v",r.installed_version]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"下载量"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:(O[r.id]?.downloads??r.downloads??0).toLocaleString()})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"评分"}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ml,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[(O[r.id]?.rating??r.rating??0).toFixed(1)," (",O[r.id]?.rating_count??r.review_count??0,")"]})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"许可证"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:r.manifest.license||"Unknown"})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("p",{className:"text-sm font-medium",children:"支持版本"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:[r.manifest.host_application?.min_version||"未知",r.manifest.host_application?.max_version?` - ${r.manifest.host_application.max_version}`:" - 最新版本"]})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"关键词"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:r.manifest.keywords&&r.manifest.keywords.map(_=>e.jsx(Qe,{variant:"outline",children:_},_))})]}),r.detailed_description&&e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"详细说明"}),e.jsx("p",{className:"text-sm text-muted-foreground whitespace-pre-line",children:r.detailed_description})]}),!r.detailed_description&&e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"说明"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:r.manifest.description||"无描述"})]}),e.jsxs("div",{className:"space-y-2",children:[r.manifest.homepage_url&&e.jsxs("div",{className:"text-sm",children:[e.jsx("span",{className:"font-medium",children:"主页: "}),e.jsx("a",{href:r.manifest.homepage_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:r.manifest.homepage_url})]}),r.manifest.repository_url&&e.jsxs("div",{className:"text-sm",children:[e.jsx("span",{className:"font-medium",children:"仓库: "}),e.jsx("a",{href:r.manifest.repository_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:r.manifest.repository_url})]})]})]}),e.jsxs(os,{children:[r.manifest.homepage_url&&e.jsxs(b,{onClick:()=>window.open(r.manifest.homepage_url,"_blank"),children:[e.jsx(Fc,{className:"h-4 w-4 mr-2"}),"访问主页"]}),r.manifest.repository_url&&e.jsxs(b,{variant:"outline",onClick:()=>window.open(r.manifest.repository_url,"_blank"),children:[e.jsx(Fc,{className:"h-4 w-4 mr-2"}),"查看仓库"]})]})]})})})})]})})}const Du=Sb,Ou=Cb,Ru=kb;function c2({field:n,value:r,onChange:c}){const[d,h]=u.useState(!1);switch(n.ui_type){case"switch":return e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(N,{children:n.label}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]}),e.jsx(Ge,{checked:!!r,onCheckedChange:c,disabled:n.disabled})]});case"number":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:n.label}),e.jsx(ce,{type:"number",value:r??n.default,onChange:x=>c(parseFloat(x.target.value)||0),min:n.min,max:n.max,step:n.step??1,placeholder:n.placeholder,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"slider":return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{children:n.label}),e.jsx("span",{className:"text-sm text-muted-foreground",children:r??n.default})]}),e.jsx(ka,{value:[r??n.default],onValueChange:x=>c(x[0]),min:n.min??0,max:n.max??100,step:n.step??1,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"select":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:n.label}),e.jsxs(Be,{value:String(r??n.default),onValueChange:c,disabled:n.disabled,children:[e.jsx(Re,{children:e.jsx(He,{placeholder:n.placeholder??"请选择"})}),e.jsx(Le,{children:n.choices?.map(x=>e.jsx(ne,{value:String(x),children:String(x)},String(x)))})]}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"textarea":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:n.label}),e.jsx(Ot,{value:r??n.default,onChange:x=>c(x.target.value),placeholder:n.placeholder,rows:n.rows??3,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"password":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:n.label}),e.jsxs("div",{className:"relative",children:[e.jsx(ce,{type:d?"text":"password",value:r??"",onChange:x=>c(x.target.value),placeholder:n.placeholder,disabled:n.disabled,className:"pr-10"}),e.jsx(b,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-3",onClick:()=>h(!d),children:d?e.jsx(rr,{className:"h-4 w-4"}):e.jsx(Ys,{className:"h-4 w-4"})})]}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"text":default:return e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:n.label}),e.jsx(ce,{type:"text",value:r??n.default??"",onChange:x=>c(x.target.value),placeholder:n.placeholder,maxLength:n.max_length,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]})}}function mp({section:n,config:r,onChange:c}){const[d,h]=u.useState(!n.collapsed),x=Object.entries(n.fields).filter(([,f])=>!f.hidden).sort(([,f],[,j])=>f.order-j.order);return e.jsx(Du,{open:d,onOpenChange:h,children:e.jsxs(Ve,{children:[e.jsx(Ou,{asChild:!0,children:e.jsxs(pt,{className:"cursor-pointer hover:bg-muted/50 transition-colors",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[d?e.jsx(Dl,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Ol,{className:"h-4 w-4 text-muted-foreground"}),e.jsx(gt,{className:"text-lg",children:n.title})]}),e.jsxs(Qe,{variant:"secondary",className:"text-xs",children:[x.length," 项"]})]}),n.description&&e.jsx(Kt,{className:"ml-6",children:n.description})]})}),e.jsx(Ru,{children:e.jsx(yt,{className:"space-y-4 pt-0",children:x.map(([f,j])=>e.jsx(c2,{field:j,value:r[n.name]?.[f],onChange:p=>c(n.name,f,p),sectionName:n.name},f))})})]})})}function o2({plugin:n,onBack:r}){const{toast:c}=Rt(),[d,h]=u.useState(null),[x,f]=u.useState({}),[j,p]=u.useState({}),[w,v]=u.useState(!0),[k,T]=u.useState(!1),[E,R]=u.useState(!1),[F,U]=u.useState(!1),M=u.useCallback(async()=>{v(!0);try{const[O,se]=await Promise.all([J1(n.id),I1(n.id)]);h(O),f(se),p(JSON.parse(JSON.stringify(se)))}catch(O){c({title:"加载配置失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}finally{v(!1)}},[n.id,c]);u.useEffect(()=>{M()},[M]),u.useEffect(()=>{R(JSON.stringify(x)!==JSON.stringify(j))},[x,j]);const Z=(O,se,he)=>{f(ye=>({...ye,[O]:{...ye[O]||{},[se]:he}}))},G=async()=>{T(!0);try{await P1(n.id,x),p(JSON.parse(JSON.stringify(x))),c({title:"配置已保存",description:"更改将在插件重新加载后生效"})}catch(O){c({title:"保存失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}finally{T(!1)}},z=async()=>{try{await W1(n.id),c({title:"配置已重置",description:"下次加载插件时将使用默认配置"}),U(!1),M()}catch(O){c({title:"重置失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}},B=async()=>{try{const O=await e2(n.id);c({title:O.message,description:O.note}),M()}catch(O){c({title:"切换状态失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}};if(w)return e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx(vs,{className:"h-8 w-8 animate-spin text-muted-foreground"})});if(!d)return e.jsxs("div",{className:"flex flex-col items-center justify-center h-64 space-y-4",children:[e.jsx(Ea,{className:"h-12 w-12 text-muted-foreground"}),e.jsx("p",{className:"text-muted-foreground",children:"无法加载配置"}),e.jsxs(b,{onClick:r,variant:"outline",children:[e.jsx(Wn,{className:"h-4 w-4 mr-2"}),"返回"]})]});const X=Object.values(d.sections).sort((O,se)=>O.order-se.order),S=x.plugin?.enabled!==!1;return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(b,{variant:"ghost",size:"icon",onClick:r,children:e.jsx(Wn,{className:"h-5 w-5"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:d.plugin_info.name||n.manifest.name}),e.jsxs("div",{className:"flex items-center gap-2 mt-1",children:[e.jsx(Qe,{variant:S?"default":"secondary",children:S?"已启用":"已禁用"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["v",d.plugin_info.version||n.manifest.version]})]})]})]}),e.jsxs("div",{className:"flex gap-2 ml-10 sm:ml-0",children:[e.jsxs(b,{variant:"outline",size:"sm",onClick:B,children:[e.jsx(fr,{className:"h-4 w-4 mr-2"}),S?"禁用":"启用"]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>U(!0),children:[e.jsx(Kc,{className:"h-4 w-4 mr-2"}),"重置"]}),e.jsxs(b,{size:"sm",onClick:G,disabled:!E||k,children:[k?e.jsx(vs,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(pr,{className:"h-4 w-4 mr-2"}),"保存"]})]})]}),E&&e.jsx(Ve,{className:"border-orange-200 bg-orange-50 dark:bg-orange-950/20 dark:border-orange-900",children:e.jsx(yt,{className:"py-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(za,{className:"h-4 w-4 text-orange-600"}),e.jsx("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:"有未保存的更改"})]})})}),d.layout.type==="tabs"&&d.layout.tabs.length>0?e.jsxs(Aa,{defaultValue:d.layout.tabs[0]?.id,children:[e.jsx(ja,{children:d.layout.tabs.map(O=>e.jsxs(st,{value:O.id,children:[O.title,O.badge&&e.jsx(Qe,{variant:"secondary",className:"ml-2 text-xs",children:O.badge})]},O.id))}),d.layout.tabs.map(O=>e.jsx(_t,{value:O.id,className:"space-y-4 mt-4",children:O.sections.map(se=>{const he=d.sections[se];return he?e.jsx(mp,{section:he,config:x,onChange:Z},se):null})},O.id))]}):e.jsx("div",{className:"space-y-4",children:X.map(O=>e.jsx(mp,{section:O,config:x,onChange:Z},O.name))}),e.jsx(Qt,{open:F,onOpenChange:U,children:e.jsxs(Ut,{children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:"确认重置配置"}),e.jsx(ss,{children:"这将删除当前配置文件,下次加载插件时将使用默认配置。此操作不可撤销。"})]}),e.jsxs(os,{children:[e.jsx(b,{variant:"outline",onClick:()=>U(!1),children:"取消"}),e.jsx(b,{variant:"destructive",onClick:z,children:"确认重置"})]})]})})]})}function d2(){const{toast:n}=Rt(),[r,c]=u.useState([]),[d,h]=u.useState(!0),[x,f]=u.useState(""),[j,p]=u.useState(null),w=async()=>{h(!0);try{const E=await nr();c(E)}catch(E){n({title:"加载插件列表失败",description:E instanceof Error?E.message:"未知错误",variant:"destructive"})}finally{h(!1)}};u.useEffect(()=>{w()},[]);const v=r.filter(E=>{const R=x.toLowerCase();return E.id.toLowerCase().includes(R)||E.manifest.name.toLowerCase().includes(R)||E.manifest.description?.toLowerCase().includes(R)}),k=r.length,T=0;return j?e.jsx(Ie,{className:"h-full",children:e.jsx("div",{className:"p-4 sm:p-6",children:e.jsx(o2,{plugin:j,onBack:()=>p(null)})})}):e.jsx(Ie,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理和配置已安装的插件"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:w,children:[e.jsx(ps,{className:`h-4 w-4 mr-2 ${d?"animate-spin":""}`}),"刷新"]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-3",children:[e.jsxs(Ve,{children:[e.jsxs(pt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(gt,{className:"text-sm font-medium",children:"已安装插件"}),e.jsx(ln,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(yt,{children:[e.jsx("div",{className:"text-2xl font-bold",children:r.length}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:d?"正在加载...":"个插件"})]})]}),e.jsxs(Ve,{children:[e.jsxs(pt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(gt,{className:"text-sm font-medium",children:"已启用"}),e.jsx(oa,{className:"h-4 w-4 text-green-600"})]}),e.jsxs(yt,{children:[e.jsx("div",{className:"text-2xl font-bold",children:k}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"运行中的插件"})]})]}),e.jsxs(Ve,{children:[e.jsxs(pt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(gt,{className:"text-sm font-medium",children:"已禁用"}),e.jsx(Ea,{className:"h-4 w-4 text-orange-600"})]}),e.jsxs(yt,{children:[e.jsx("div",{className:"text-2xl font-bold",children:T}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"未激活的插件"})]})]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(Os,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索插件...",value:x,onChange:E=>f(E.target.value),className:"pl-9"})]}),e.jsxs(Ve,{children:[e.jsxs(pt,{children:[e.jsx(gt,{children:"已安装的插件"}),e.jsx(Kt,{children:"点击插件查看和编辑配置"})]}),e.jsx(yt,{children:d?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(vs,{className:"h-8 w-8 animate-spin text-muted-foreground"})}):v.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 space-y-4",children:[e.jsx(ln,{className:"h-16 w-16 text-muted-foreground/50"}),e.jsxs("div",{className:"text-center space-y-2",children:[e.jsx("p",{className:"text-lg font-medium text-muted-foreground",children:x?"没有找到匹配的插件":"暂无已安装的插件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:x?"尝试其他搜索关键词":"前往插件市场安装插件"})]})]}):e.jsx("div",{className:"space-y-2",children:v.map(E=>e.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg border hover:bg-muted/50 cursor-pointer transition-colors",onClick:()=>p(E),children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[e.jsx("div",{className:"h-10 w-10 rounded-lg bg-primary/10 flex items-center justify-center flex-shrink-0",children:e.jsx(ln,{className:"h-5 w-5 text-primary"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-medium truncate",children:E.manifest.name}),e.jsxs(Qe,{variant:"secondary",className:"text-xs flex-shrink-0",children:["v",E.manifest.version]})]}),e.jsx("p",{className:"text-sm text-muted-foreground truncate",children:E.manifest.description||"暂无描述"})]})]}),e.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[e.jsx(b,{variant:"ghost",size:"sm",children:e.jsx(ti,{className:"h-4 w-4"})}),e.jsx(Ol,{className:"h-4 w-4 text-muted-foreground"})]})]},E.id))})})]})]})})}function u2(){const n=ua(),{toast:r}=Rt(),[c,d]=u.useState([]),[h,x]=u.useState(!0),[f,j]=u.useState(null),[p,w]=u.useState(null),[v,k]=u.useState(!1),[T,E]=u.useState(!1),[R,F]=u.useState({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),U=u.useCallback(async()=>{try{x(!0),j(null);const S=localStorage.getItem("access-token"),O=await fetch("/api/webui/plugins/mirrors",{headers:{Authorization:`Bearer ${S}`}});if(!O.ok)throw new Error("获取镜像源列表失败");const se=await O.json();d(se.mirrors||[])}catch(S){const O=S instanceof Error?S.message:"加载镜像源失败";j(O),r({title:"加载失败",description:O,variant:"destructive"})}finally{x(!1)}},[r]);u.useEffect(()=>{U()},[U]);const M=async()=>{try{const S=localStorage.getItem("access-token"),O=await fetch("/api/webui/plugins/mirrors",{method:"POST",headers:{Authorization:`Bearer ${S}`,"Content-Type":"application/json"},body:JSON.stringify(R)});if(!O.ok){const se=await O.json();throw new Error(se.detail||"添加镜像源失败")}r({title:"添加成功",description:"镜像源已添加"}),k(!1),F({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),U()}catch(S){r({title:"添加失败",description:S instanceof Error?S.message:"未知错误",variant:"destructive"})}},Z=async()=>{if(p)try{const S=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${p.id}`,{method:"PUT",headers:{Authorization:`Bearer ${S}`,"Content-Type":"application/json"},body:JSON.stringify({name:R.name,raw_prefix:R.raw_prefix,clone_prefix:R.clone_prefix,enabled:R.enabled,priority:R.priority})})).ok)throw new Error("更新镜像源失败");r({title:"更新成功",description:"镜像源已更新"}),E(!1),w(null),U()}catch(S){r({title:"更新失败",description:S instanceof Error?S.message:"未知错误",variant:"destructive"})}},G=async S=>{if(confirm("确定要删除这个镜像源吗?"))try{const O=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${S}`,{method:"DELETE",headers:{Authorization:`Bearer ${O}`}})).ok)throw new Error("删除镜像源失败");r({title:"删除成功",description:"镜像源已删除"}),U()}catch(O){r({title:"删除失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}},z=async S=>{try{const O=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${S.id}`,{method:"PUT",headers:{Authorization:`Bearer ${O}`,"Content-Type":"application/json"},body:JSON.stringify({enabled:!S.enabled})})).ok)throw new Error("更新状态失败");U()}catch(O){r({title:"更新失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}},B=S=>{w(S),F({id:S.id,name:S.name,raw_prefix:S.raw_prefix,clone_prefix:S.clone_prefix,enabled:S.enabled,priority:S.priority}),E(!0)},X=async(S,O)=>{const se=O==="up"?S.priority-1:S.priority+1;if(!(se<1))try{const he=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${S.id}`,{method:"PUT",headers:{Authorization:`Bearer ${he}`,"Content-Type":"application/json"},body:JSON.stringify({priority:se})})).ok)throw new Error("更新优先级失败");U()}catch(he){r({title:"更新失败",description:he instanceof Error?he.message:"未知错误",variant:"destructive"})}};return e.jsx(Ie,{className:"h-full",children:e.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(b,{variant:"ghost",size:"icon",onClick:()=>n({to:"/plugins"}),children:e.jsx(Wn,{className:"h-5 w-5"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"镜像源配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理 Git 克隆和文件下载的镜像源"})]})]}),e.jsxs(b,{onClick:()=>k(!0),children:[e.jsx(cs,{className:"h-4 w-4 mr-2"}),"添加镜像源"]})]}),h?e.jsx(Ve,{className:"p-6",children:e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(vs,{className:"h-8 w-8 animate-spin text-primary"})})}):f?e.jsx(Ve,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(pa,{className:"h-12 w-12 text-destructive mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:f}),e.jsx(b,{onClick:U,children:"重新加载"})]})}):e.jsxs(Ve,{children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(ai,{children:[e.jsx(li,{children:e.jsxs(gs,{children:[e.jsx(at,{children:"状态"}),e.jsx(at,{children:"名称"}),e.jsx(at,{children:"ID"}),e.jsx(at,{children:"优先级"}),e.jsx(at,{className:"text-right",children:"操作"})]})}),e.jsx(ni,{children:c.map(S=>e.jsxs(gs,{children:[e.jsx($e,{children:e.jsx(Ge,{checked:S.enabled,onCheckedChange:()=>z(S)})}),e.jsx($e,{children:e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:S.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1",children:["Raw: ",S.raw_prefix]})]})}),e.jsx($e,{children:e.jsx(Qe,{variant:"outline",children:S.id})}),e.jsx($e,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-mono",children:S.priority}),e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx(b,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>X(S,"up"),disabled:S.priority===1,children:e.jsx(or,{className:"h-3 w-3"})}),e.jsx(b,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>X(S,"down"),children:e.jsx(Dl,{className:"h-3 w-3"})})]})]})}),e.jsx($e,{className:"text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-2",children:[e.jsx(b,{variant:"ghost",size:"icon",onClick:()=>B(S),children:e.jsx(an,{className:"h-4 w-4"})}),e.jsx(b,{variant:"ghost",size:"icon",onClick:()=>G(S.id),children:e.jsx(Pe,{className:"h-4 w-4 text-destructive"})})]})})]},S.id))})]})}),e.jsx("div",{className:"md:hidden p-4 space-y-4",children:c.map(S=>e.jsx(Ve,{className:"p-4",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-semibold",children:S.name}),S.enabled&&e.jsx(Qe,{variant:"default",className:"text-xs",children:"启用"})]}),e.jsx(Qe,{variant:"outline",className:"mt-1 text-xs",children:S.id})]}),e.jsx(Ge,{checked:S.enabled,onCheckedChange:()=>z(S)})]}),e.jsxs("div",{className:"text-sm space-y-1",children:[e.jsxs("div",{className:"text-muted-foreground",children:[e.jsx("span",{className:"font-medium",children:"Raw: "}),e.jsx("span",{className:"break-all",children:S.raw_prefix})]}),e.jsxs("div",{className:"text-muted-foreground",children:[e.jsx("span",{className:"font-medium",children:"优先级: "}),e.jsx("span",{className:"font-mono",children:S.priority})]})]}),e.jsxs("div",{className:"flex items-center gap-2 pt-2 border-t",children:[e.jsxs(b,{variant:"outline",size:"sm",className:"flex-1",onClick:()=>B(S),children:[e.jsx(an,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>X(S,"up"),disabled:S.priority===1,children:e.jsx(or,{className:"h-4 w-4"})}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>X(S,"down"),children:e.jsx(Dl,{className:"h-4 w-4"})}),e.jsx(b,{variant:"destructive",size:"sm",onClick:()=>G(S.id),children:e.jsx(Pe,{className:"h-4 w-4"})})]})]})},S.id))})]}),e.jsx(Qt,{open:v,onOpenChange:k,children:e.jsxs(Ut,{className:"max-w-lg",children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:"添加镜像源"}),e.jsx(ss,{children:"添加新的 Git 镜像源配置"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"add-id",children:"镜像源 ID *"}),e.jsx(ce,{id:"add-id",placeholder:"例如: my-mirror",value:R.id,onChange:S=>F({...R,id:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"add-name",children:"名称 *"}),e.jsx(ce,{id:"add-name",placeholder:"例如: 我的镜像源",value:R.name,onChange:S=>F({...R,name:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"add-raw",children:"Raw 文件前缀 *"}),e.jsx(ce,{id:"add-raw",placeholder:"https://example.com/raw",value:R.raw_prefix,onChange:S=>F({...R,raw_prefix:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"add-clone",children:"克隆前缀 *"}),e.jsx(ce,{id:"add-clone",placeholder:"https://example.com/clone",value:R.clone_prefix,onChange:S=>F({...R,clone_prefix:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"add-priority",children:"优先级"}),e.jsx(ce,{id:"add-priority",type:"number",min:"1",value:R.priority,onChange:S=>F({...R,priority:parseInt(S.target.value)||1})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"add-enabled",checked:R.enabled,onCheckedChange:S=>F({...R,enabled:S})}),e.jsx(N,{htmlFor:"add-enabled",children:"启用此镜像源"})]})]}),e.jsxs(os,{children:[e.jsx(b,{variant:"outline",onClick:()=>k(!1),children:"取消"}),e.jsx(b,{onClick:M,children:"添加"})]})]})}),e.jsx(Qt,{open:T,onOpenChange:E,children:e.jsxs(Ut,{className:"max-w-lg",children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:"编辑镜像源"}),e.jsx(ss,{children:"修改镜像源配置"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:"镜像源 ID"}),e.jsx(ce,{value:R.id,disabled:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"edit-name",children:"名称 *"}),e.jsx(ce,{id:"edit-name",value:R.name,onChange:S=>F({...R,name:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"edit-raw",children:"Raw 文件前缀 *"}),e.jsx(ce,{id:"edit-raw",value:R.raw_prefix,onChange:S=>F({...R,raw_prefix:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"edit-clone",children:"克隆前缀 *"}),e.jsx(ce,{id:"edit-clone",value:R.clone_prefix,onChange:S=>F({...R,clone_prefix:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"edit-priority",children:"优先级"}),e.jsx(ce,{id:"edit-priority",type:"number",min:"1",value:R.priority,onChange:S=>F({...R,priority:parseInt(S.target.value)||1})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"edit-enabled",checked:R.enabled,onCheckedChange:S=>F({...R,enabled:S})}),e.jsx(N,{htmlFor:"edit-enabled",children:"启用此镜像源"})]})]}),e.jsxs(os,{children:[e.jsx(b,{variant:"outline",onClick:()=>E(!1),children:"取消"}),e.jsx(b,{onClick:Z,children:"保存"})]})]})})]})})}const Yc=u.forwardRef(({className:n,...r},c)=>e.jsx(zp,{ref:c,className:K("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",n),...r}));Yc.displayName=zp.displayName;const m2=u.forwardRef(({className:n,...r},c)=>e.jsx(Ap,{ref:c,className:K("aspect-square h-full w-full",n),...r}));m2.displayName=Ap.displayName;const Xc=u.forwardRef(({className:n,...r},c)=>e.jsx(Mp,{ref:c,className:K("flex h-full w-full items-center justify-center rounded-full bg-muted",n),...r}));Xc.displayName=Mp.displayName;function h2(){return"webui_"+Math.random().toString(36).substr(2,9)+"_"+Date.now().toString(36)}function x2(){const n="maibot_webui_user_id";let r=localStorage.getItem(n);return r||(r=h2(),localStorage.setItem(n,r)),r}function f2(){return localStorage.getItem("maibot_webui_user_name")||"WebUI用户"}function p2(n){localStorage.setItem("maibot_webui_user_name",n)}function g2(){const[n,r]=u.useState([]),[c,d]=u.useState(""),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,w]=u.useState(!1),[v,k]=u.useState(!0),[T,E]=u.useState(f2()),[R,F]=u.useState(!1),[U,M]=u.useState(""),[Z,G]=u.useState({}),z=u.useRef(x2()),B=u.useRef(null),X=u.useRef(null),S=u.useRef(null),O=u.useRef(0),se=u.useRef(new Set),{toast:he}=Rt(),ye=Q=>(O.current+=1,`${Q}-${Date.now()}-${O.current}-${Math.random().toString(36).substr(2,9)}`),be=u.useCallback(()=>{X.current?.scrollIntoView({behavior:"smooth"})},[]);u.useEffect(()=>{be()},[n,be]);const pe=u.useCallback(async()=>{k(!0);try{const Q=`/api/chat/history?user_id=${z.current}&limit=50`;console.log("[Chat] 正在加载历史消息:",Q);const de=await fetch(Q);if(console.log("[Chat] 历史消息响应状态:",de.status,de.statusText),console.log("[Chat] 响应 Content-Type:",de.headers.get("content-type")),de.ok){const ge=await de.text();console.log("[Chat] 响应内容前100字符:",ge.substring(0,100));try{const le=JSON.parse(ge);if(console.log("[Chat] 解析后的数据:",le),le.messages&&le.messages.length>0){const L=le.messages.map($=>({id:$.id,type:$.type,content:$.content,timestamp:$.timestamp,sender:{name:$.sender_name||($.is_bot?"麦麦":"WebUI用户"),user_id:$.user_id,is_bot:$.is_bot}}));r(L),console.log("[Chat] 已加载历史消息数量:",L.length),L.forEach($=>{if($.type==="bot"){const D=`bot-${$.content}-${Math.floor($.timestamp*1e3)}`;se.current.add(D)}})}else console.log("[Chat] 没有历史消息")}catch(le){console.error("[Chat] JSON 解析失败:",le),console.error("[Chat] 原始响应内容:",ge)}}else{console.error("[Chat] 响应失败:",de.status);const ge=await de.text();console.error("[Chat] 错误响应内容:",ge.substring(0,200))}}catch(Q){console.error("[Chat] 加载历史消息失败:",Q)}finally{k(!1)}},[]),je=u.useCallback(()=>{if(B.current?.readyState===WebSocket.OPEN||B.current?.readyState===WebSocket.CONNECTING){console.log("WebSocket 已存在,跳过连接");return}j(!0);const de=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/api/chat/ws?user_id=${encodeURIComponent(z.current)}&user_name=${encodeURIComponent(T)}`;console.log("正在连接 WebSocket:",de);try{const ge=new WebSocket(de);B.current=ge,ge.onopen=()=>{x(!0),j(!1),console.log("WebSocket 已连接")},ge.onmessage=le=>{try{const L=JSON.parse(le.data);switch(L.type){case"session_info":G({session_id:L.session_id,user_id:L.user_id,user_name:L.user_name,bot_name:L.bot_name});break;case"system":r($=>[...$,{id:ye("sys"),type:"system",content:L.content||"",timestamp:L.timestamp||Date.now()/1e3}]);break;case"user_message":r($=>[...$,{id:L.message_id||ye("user"),type:"user",content:L.content||"",timestamp:L.timestamp||Date.now()/1e3,sender:L.sender}]);break;case"bot_message":{w(!1);const $=`bot-${L.content}-${Math.floor((L.timestamp||0)*1e3)}`;if(se.current.has($)){console.log("跳过重复的机器人消息");break}if(se.current.add($),se.current.size>100){const D=se.current.values().next().value;D&&se.current.delete(D)}r(D=>[...D,{id:ye("bot"),type:"bot",content:L.content||"",timestamp:L.timestamp||Date.now()/1e3,sender:L.sender}]);break}case"typing":w(L.is_typing||!1);break;case"error":r($=>[...$,{id:ye("error"),type:"error",content:L.content||"发生错误",timestamp:L.timestamp||Date.now()/1e3}]),he({title:"错误",description:L.content,variant:"destructive"});break;case"pong":break;default:console.log("未知消息类型:",L.type)}}catch(L){console.error("解析消息失败:",L)}},ge.onclose=()=>{x(!1),j(!1),B.current=null,console.log("WebSocket 已断开"),S.current&&clearTimeout(S.current),S.current=window.setTimeout(()=>{_e.current||je()},5e3)},ge.onerror=le=>{console.error("WebSocket 错误:",le),j(!1)}}catch(ge){console.error("创建 WebSocket 失败:",ge),j(!1)}},[he,T]),_e=u.useRef(!1);u.useEffect(()=>{_e.current=!1,pe();const Q=setTimeout(()=>{_e.current||je()},100),de=setInterval(()=>{B.current?.readyState===WebSocket.OPEN&&B.current.send(JSON.stringify({type:"ping"}))},3e4);return()=>{_e.current=!0,clearTimeout(Q),clearInterval(de),S.current&&(clearTimeout(S.current),S.current=null),B.current&&(B.current.close(),B.current=null)}},[je,pe]);const y=u.useCallback(()=>{!c.trim()||!B.current||B.current.readyState!==WebSocket.OPEN||(B.current.send(JSON.stringify({type:"message",content:c.trim(),user_name:T})),d(""))},[c,T]),q=Q=>{Q.key==="Enter"&&!Q.shiftKey&&(Q.preventDefault(),y())},H=()=>{M(T),F(!0)},ie=()=>{const Q=U.trim()||"WebUI用户";E(Q),p2(Q),F(!1),B.current?.readyState===WebSocket.OPEN&&B.current.send(JSON.stringify({type:"update_nickname",user_name:Q}))},_=()=>{M(""),F(!1)},me=Q=>new Date(Q*1e3).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"}),xe=()=>{B.current&&B.current.close(),je()};return e.jsxs("div",{className:"h-full flex flex-col",children:[e.jsx("div",{className:"shrink-0 border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:e.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 sm:gap-3 min-w-0",children:[e.jsx(Yc,{className:"h-8 w-8 sm:h-10 sm:w-10 shrink-0",children:e.jsx(Xc,{className:"bg-primary/10 text-primary",children:e.jsx(ar,{className:"h-4 w-4 sm:h-5 sm:w-5"})})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h1",{className:"text-base sm:text-lg font-semibold truncate",children:Z.bot_name||"麦麦"}),e.jsx("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:h?e.jsxs(e.Fragment,{children:[e.jsx(_y,{className:"h-3 w-3 text-green-500"}),e.jsx("span",{className:"text-green-600 dark:text-green-400",children:"已连接"})]}):f?e.jsxs(e.Fragment,{children:[e.jsx(vs,{className:"h-3 w-3 animate-spin"}),e.jsx("span",{children:"连接中..."})]}):e.jsxs(e.Fragment,{children:[e.jsx(Sy,{className:"h-3 w-3 text-red-500"}),e.jsx("span",{className:"text-red-600 dark:text-red-400",children:"未连接"})]})})]})]}),e.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[v&&e.jsx(vs,{className:"h-4 w-4 animate-spin text-muted-foreground"}),e.jsx(b,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:xe,disabled:f,title:"重新连接",children:e.jsx(ps,{className:K("h-4 w-4",f&&"animate-spin")})})]})]}),e.jsxs("div",{className:"hidden sm:flex items-center gap-2 mt-2 text-sm text-muted-foreground",children:[e.jsx(Ic,{className:"h-3 w-3"}),e.jsx("span",{children:"当前身份:"}),R?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{value:U,onChange:Q=>M(Q.target.value),onKeyDown:Q=>{Q.key==="Enter"&&ie(),Q.key==="Escape"&&_()},className:"h-7 w-32",placeholder:"输入昵称",autoFocus:!0}),e.jsx(b,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:ie,children:"保存"}),e.jsx(b,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:_,children:"取消"})]}):e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"font-medium text-foreground",children:T}),e.jsx(b,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0",onClick:H,title:"修改昵称",children:e.jsx(Cy,{className:"h-3 w-3"})})]})]})]})}),e.jsx("div",{className:"flex-1 overflow-hidden",children:e.jsx(Ie,{className:"h-full",children:e.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto space-y-3 sm:space-y-4",children:[n.length===0&&!v&&e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-muted-foreground",children:[e.jsx(ar,{className:"h-12 w-12 mb-4 opacity-50"}),e.jsxs("p",{className:"text-sm",children:["开始与 ",Z.bot_name||"麦麦"," 对话吧!"]})]}),n.map(Q=>e.jsxs("div",{className:K("flex gap-2 sm:gap-3",Q.type==="user"&&"flex-row-reverse",Q.type==="system"&&"justify-center",Q.type==="error"&&"justify-center"),children:[Q.type==="system"&&e.jsx("div",{className:"text-xs text-muted-foreground bg-muted/50 px-3 py-1 rounded-full max-w-[90%]",children:Q.content}),Q.type==="error"&&e.jsx("div",{className:"text-xs text-red-600 dark:text-red-400 bg-red-100 dark:bg-red-900/30 px-3 py-1 rounded-full max-w-[90%]",children:Q.content}),(Q.type==="user"||Q.type==="bot")&&e.jsxs(e.Fragment,{children:[e.jsx(Yc,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:e.jsx(Xc,{className:K("text-xs",Q.type==="bot"?"bg-primary/10 text-primary":"bg-secondary text-secondary-foreground"),children:Q.type==="bot"?e.jsx(ar,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}):e.jsx(Ic,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),e.jsxs("div",{className:K("flex flex-col gap-1 max-w-[75%] sm:max-w-[70%]",Q.type==="user"&&"items-end"),children:[e.jsxs("div",{className:"flex items-center gap-2 text-[10px] sm:text-xs text-muted-foreground",children:[e.jsx("span",{className:"hidden sm:inline",children:Q.sender?.name||(Q.type==="bot"?Z.bot_name:T)}),e.jsx("span",{children:me(Q.timestamp)})]}),e.jsx("div",{className:K("rounded-2xl px-3 py-2 text-sm whitespace-pre-wrap break-words",Q.type==="bot"?"bg-muted rounded-tl-sm":"bg-primary text-primary-foreground rounded-tr-sm"),children:Q.content})]})]})]},Q.id)),p&&e.jsxs("div",{className:"flex gap-2 sm:gap-3",children:[e.jsx(Yc,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:e.jsx(Xc,{className:"bg-primary/10 text-primary",children:e.jsx(ar,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),e.jsx("div",{className:"bg-muted rounded-2xl rounded-tl-sm px-4 py-3",children:e.jsxs("div",{className:"flex gap-1",children:[e.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"0ms"}}),e.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"150ms"}}),e.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"300ms"}})]})})]}),e.jsx("div",{ref:X})]})})}),e.jsx("div",{className:"shrink-0 border-t bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:e.jsx("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{value:c,onChange:Q=>d(Q.target.value),onKeyDown:q,placeholder:h?"输入消息...":"等待连接...",disabled:!h,className:"flex-1 h-10 sm:h-10"}),e.jsx(b,{onClick:y,disabled:!h||!c.trim(),size:"icon",className:"h-10 w-10 shrink-0",children:e.jsx(ky,{className:"h-4 w-4"})})]})})})]})}function j2(){const n=ua(),[r,c]=u.useState(!0);return u.useEffect(()=>{let d=!1;return(async()=>{try{const x=await Fu();!d&&!x&&n({to:"/auth"})}catch{d||n({to:"/auth"})}finally{d||c(!1)}})(),()=>{d=!0}},[n]),{checking:r}}async function v2(){return await Fu()}const b2=ei("pointer-events-none inline-flex select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono font-medium opacity-100",{variants:{size:{sm:"h-5 text-[10px]",default:"h-6 text-xs",lg:"h-7 text-sm"}},defaultVariants:{size:"default"}}),Ag=u.forwardRef(({className:n,size:r,abbrTitle:c,children:d,...h},x)=>e.jsx("kbd",{className:K(b2({size:r,className:n})),ref:x,...h,children:c?e.jsx("abbr",{title:c,children:d}):d}));Ag.displayName="Kbd";const y2=[{icon:to,title:"首页",description:"查看仪表板概览",path:"/",category:"概览"},{icon:Ta,title:"麦麦主程序配置",description:"配置麦麦的核心设置",path:"/config/bot",category:"配置"},{icon:ng,title:"麦麦模型提供商配置",description:"配置模型提供商",path:"/config/modelProvider",category:"配置"},{icon:ig,title:"麦麦模型配置",description:"配置模型参数",path:"/config/model",category:"配置"},{icon:Lu,title:"表情包管理",description:"管理麦麦的表情包",path:"/resource/emoji",category:"资源"},{icon:Pn,title:"表达方式管理",description:"管理麦麦的表达方式",path:"/resource/expression",category:"资源"},{icon:rg,title:"人物信息管理",description:"管理人物信息",path:"/resource/person",category:"资源"},{icon:Ty,title:"统计信息",description:"查看使用统计",path:"/statistics",category:"监控"},{icon:ln,title:"插件市场",description:"浏览和安装插件",path:"/plugins",category:"扩展"},{icon:Uu,title:"日志查看器",description:"查看系统日志",path:"/logs",category:"监控"},{icon:ti,title:"系统设置",description:"配置系统参数",path:"/settings",category:"系统"}];function N2({open:n,onOpenChange:r}){const[c,d]=u.useState(""),[h,x]=u.useState(0),f=ua(),j=y2.filter(v=>v.title.toLowerCase().includes(c.toLowerCase())||v.description.toLowerCase().includes(c.toLowerCase())||v.category.toLowerCase().includes(c.toLowerCase()));u.useEffect(()=>{n&&(d(""),x(0))},[n]);const p=u.useCallback(v=>{f({to:v}),r(!1)},[f,r]),w=u.useCallback(v=>{v.key==="ArrowDown"?(v.preventDefault(),x(k=>(k+1)%j.length)):v.key==="ArrowUp"?(v.preventDefault(),x(k=>(k-1+j.length)%j.length)):v.key==="Enter"&&j[h]&&(v.preventDefault(),p(j[h].path))},[j,h,p]);return e.jsx(Qt,{open:n,onOpenChange:r,children:e.jsxs(Ut,{className:"max-w-2xl p-0 gap-0",children:[e.jsxs(Bt,{className:"px-4 pt-4 pb-0",children:[e.jsx(Ht,{className:"sr-only",children:"搜索"}),e.jsxs("div",{className:"relative",children:[e.jsx(Os,{className:"absolute left-3 top-1/2 h-5 w-5 -translate-y-1/2 text-muted-foreground"}),e.jsx(ce,{value:c,onChange:v=>{d(v.target.value),x(0)},onKeyDown:w,placeholder:"搜索页面...",className:"h-12 pl-11 text-base border-0 focus-visible:ring-0 shadow-none",autoFocus:!0})]})]}),e.jsx("div",{className:"border-t",children:e.jsx(Ie,{className:"h-[400px]",children:j.length>0?e.jsx("div",{className:"p-2",children:j.map((v,k)=>{const T=v.icon;return e.jsxs("button",{onClick:()=>p(v.path),onMouseEnter:()=>x(k),className:K("w-full flex items-center gap-3 px-3 py-2.5 rounded-md text-left transition-colors",k===h?"bg-accent text-accent-foreground":"hover:bg-accent/50"),children:[e.jsx(T,{className:"h-5 w-5 flex-shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-sm",children:v.title}),e.jsx("div",{className:"text-xs text-muted-foreground truncate",children:v.description})]}),e.jsx("div",{className:"text-xs text-muted-foreground px-2 py-1 bg-muted rounded",children:v.category})]},v.path)})}):e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[e.jsx(Os,{className:"h-12 w-12 text-muted-foreground/50 mb-4"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:c?"未找到匹配的页面":"输入关键词开始搜索"})]})})}),e.jsx("div",{className:"border-t px-4 py-3 flex items-center justify-between text-xs text-muted-foreground",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↑"}),e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↓"}),"导航"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Enter"}),"选择"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Esc"}),"关闭"]})]})})]})})}const w2=Jb,_2=Ib,S2=Pb,Mg=u.forwardRef(({className:n,sideOffset:r=4,...c},d)=>e.jsx(Zb,{children:e.jsx(Yp,{ref:d,sideOffset:r,className:K("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",n),...c})}));Mg.displayName=Yp.displayName;function C2({children:n}){const{checking:r}=j2(),[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),{theme:p,setTheme:w}=Hu(),v=Pv();if(u.useEffect(()=>{const F=U=>{(U.metaKey||U.ctrlKey)&&U.key==="k"&&(U.preventDefault(),j(!0))};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[]),r)return e.jsx("div",{className:"flex h-screen items-center justify-center bg-background",children:e.jsx("div",{className:"text-muted-foreground",children:"正在验证登录状态..."})});const k=[{title:"概览",items:[{icon:to,label:"首页",path:"/"}]},{title:"麦麦配置编辑",items:[{icon:Ta,label:"麦麦主程序配置",path:"/config/bot"},{icon:ng,label:"AI模型厂商配置",path:"/config/modelProvider",tourId:"sidebar-model-provider"},{icon:ig,label:"模型管理与分配",path:"/config/model",tourId:"sidebar-model-management"},{icon:Vf,label:"麦麦适配器配置",path:"/config/adapter"}]},{title:"麦麦资源管理",items:[{icon:Lu,label:"表情包管理",path:"/resource/emoji"},{icon:Pn,label:"表达方式管理",path:"/resource/expression"},{icon:rg,label:"人物信息管理",path:"/resource/person"},{icon:lg,label:"知识库图谱可视化",path:"/resource/knowledge-graph"}]},{title:"扩展与监控",items:[{icon:ln,label:"插件市场",path:"/plugins"},{icon:Vf,label:"插件配置",path:"/plugin-config"},{icon:Uu,label:"日志查看器",path:"/logs"},{icon:Pn,label:"本地聊天室",path:"/chat"}]},{title:"系统",items:[{icon:ti,label:"系统设置",path:"/settings"}]}],E=p==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":p,R=async()=>{await IN()};return e.jsx(w2,{delayDuration:300,children:e.jsxs("div",{className:"flex h-screen overflow-hidden",children:[e.jsxs("aside",{className:K("fixed inset-y-0 left-0 z-50 flex flex-col border-r bg-card transition-all duration-300 lg:relative lg:z-0","w-64 lg:w-auto",c?"lg:w-64":"lg:w-16",h?"translate-x-0":"-translate-x-full lg:translate-x-0"),children:[e.jsx("div",{className:"flex h-16 items-center border-b px-4",children:e.jsxs("div",{className:K("relative flex items-center justify-center flex-1 transition-all overflow-hidden","lg:flex-1",!c&&"lg:flex-none lg:w-8"),children:[e.jsxs("div",{className:K("flex items-baseline gap-2",!c&&"lg:hidden"),children:[e.jsx("span",{className:"font-bold text-xl text-primary-gradient whitespace-nowrap",children:"MaiBot WebUI"}),e.jsx("span",{className:"text-xs text-primary/60 whitespace-nowrap",children:RN()})]}),!c&&e.jsx("span",{className:"hidden lg:block font-bold text-primary-gradient text-2xl",children:"M"})]})}),e.jsx(Ie,{className:K("flex-1 overflow-x-hidden",!c&&"lg:w-16"),children:e.jsx("nav",{className:K("p-4",!c&&"lg:p-2 lg:w-16"),children:e.jsx("ul",{className:K("space-y-6",!c&&"lg:space-y-3 lg:w-full"),children:k.map((F,U)=>e.jsxs("li",{children:[e.jsx("div",{className:K("px-3 h-[1.25rem]","mb-2",!c&&"lg:mb-1 lg:invisible"),children:e.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground/60 whitespace-nowrap",children:F.title})}),!c&&U>0&&e.jsx("div",{className:"hidden lg:block mb-2 border-t border-border"}),e.jsx("ul",{className:"space-y-1",children:F.items.map(M=>{const Z=v({to:M.path}),G=M.icon,z=e.jsxs(e.Fragment,{children:[Z&&e.jsx("div",{className:"absolute left-0 top-1/2 h-8 w-1 -translate-y-1/2 rounded-r-full bg-primary transition-opacity duration-300"}),e.jsxs("div",{className:K("flex items-center transition-all duration-300",c?"gap-3":"gap-3 lg:gap-0"),children:[e.jsx(G,{className:K("h-5 w-5 flex-shrink-0",Z&&"text-primary"),strokeWidth:2,fill:"none"}),e.jsx("span",{className:K("text-sm font-medium whitespace-nowrap transition-all duration-300",Z&&"font-semibold",c?"opacity-100 max-w-[200px]":"opacity-100 max-w-[200px] lg:opacity-0 lg:max-w-0 lg:overflow-hidden"),children:M.label})]})]});return e.jsx("li",{className:"relative",children:e.jsxs(_2,{children:[e.jsx(S2,{asChild:!0,children:e.jsx(Vc,{to:M.path,"data-tour":M.tourId,className:K("relative flex items-center rounded-lg py-2 transition-all duration-300","hover:bg-accent hover:text-accent-foreground",Z?"bg-accent text-foreground":"text-muted-foreground hover:text-foreground",c?"px-3":"px-3 lg:px-0 lg:justify-center lg:w-12 lg:mx-auto"),onClick:()=>x(!1),children:z})}),!c&&e.jsx(Mg,{side:"right",className:"hidden lg:block",children:e.jsx("p",{children:M.label})})]})},M.path)})})]},F.title))})})})]}),h&&e.jsx("div",{className:"fixed inset-0 z-40 bg-black/50 lg:hidden",onClick:()=>x(!1)}),e.jsxs("div",{className:"flex flex-1 flex-col overflow-hidden",children:[e.jsxs("header",{className:"flex h-16 items-center justify-between border-b bg-card/80 backdrop-blur-md px-4 sticky top-0 z-10",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>x(!h),className:"rounded-lg p-2 hover:bg-accent lg:hidden",children:e.jsx(Ey,{className:"h-5 w-5"})}),e.jsx("button",{onClick:()=>d(!c),className:"hidden rounded-lg p-2 hover:bg-accent lg:block",title:c?"收起侧边栏":"展开侧边栏",children:e.jsx(nn,{className:K("h-5 w-5 transition-transform",!c&&"rotate-180")})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:()=>j(!0),className:"relative hidden md:flex items-center w-64 h-9 pl-9 pr-16 bg-background/50 border rounded-md hover:bg-accent/50 transition-colors text-left",children:[e.jsx(Os,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"搜索..."}),e.jsxs(Ag,{size:"sm",className:"absolute right-2 top-1/2 -translate-y-1/2",children:[e.jsx("span",{className:"text-xs",children:"⌘"}),"K"]})]}),e.jsx(N2,{open:f,onOpenChange:j}),e.jsxs(b,{variant:"ghost",size:"sm",onClick:()=>window.open("https://docs.mai-mai.org","_blank"),className:"gap-2",title:"查看麦麦文档",children:[e.jsx(zy,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:"麦麦文档"})]}),e.jsx("button",{onClick:F=>{zN(E==="dark"?"light":"dark",w,F)},className:"rounded-lg p-2 hover:bg-accent",title:E==="dark"?"切换到浅色模式":"切换到深色模式",children:E==="dark"?e.jsx(eg,{className:"h-5 w-5"}):e.jsx(tg,{className:"h-5 w-5"})}),e.jsx("div",{className:"h-6 w-px bg-border"}),e.jsxs(b,{variant:"ghost",size:"sm",onClick:R,className:"gap-2",title:"登出系统",children:[e.jsx(Ay,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:"登出"})]})]})]}),e.jsx("main",{className:"flex-1 overflow-hidden bg-background",children:n})]})]})})}function k2(n){const r=n.split(` +`).slice(1),c=[];for(const d of r){const h=d.trim();if(!h.startsWith("at "))continue;const x=h.match(/at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?$/);x?c.push({functionName:x[1]||"",fileName:x[2],lineNumber:x[3],columnNumber:x[4],raw:h}):c.push({functionName:"",fileName:"",lineNumber:"",columnNumber:"",raw:h})}return c}function T2({error:n,errorInfo:r}){const[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),p=n.stack?k2(n.stack):[],w=async()=>{const v=` +Error: ${n.name} +Message: ${n.message} + +Stack Trace: +${n.stack||"No stack trace available"} + +Component Stack: +${r?.componentStack||"No component stack available"} + +URL: ${window.location.href} +User Agent: ${navigator.userAgent} +Time: ${new Date().toISOString()} + `.trim();try{await navigator.clipboard.writeText(v),j(!0),setTimeout(()=>j(!1),2e3)}catch(k){console.error("Failed to copy:",k)}};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(al,{variant:"destructive",className:"border-red-500/50 bg-red-500/10",children:[e.jsx(pa,{className:"h-4 w-4"}),e.jsxs(ll,{className:"font-mono text-sm",children:[e.jsxs("span",{className:"font-semibold",children:[n.name,":"]})," ",n.message]})]}),p.length>0&&e.jsxs(Du,{open:c,onOpenChange:d,children:[e.jsx(Ou,{asChild:!0,children:e.jsxs(b,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[e.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[e.jsx(My,{className:"h-4 w-4"}),"Stack Trace (",p.length," frames)"]}),c?e.jsx(or,{className:"h-4 w-4"}):e.jsx(Dl,{className:"h-4 w-4"})]})}),e.jsx(Ru,{children:e.jsx(Ie,{className:"h-[280px] rounded-md border bg-muted/30",children:e.jsx("div",{className:"p-3 space-y-1",children:p.map((v,k)=>e.jsx("div",{className:"font-mono text-xs p-2 rounded hover:bg-muted/50 transition-colors",children:e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsxs("span",{className:"text-muted-foreground w-6 text-right flex-shrink-0",children:[k+1,"."]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("span",{className:"text-primary font-medium",children:v.functionName}),v.fileName&&e.jsxs("div",{className:"text-muted-foreground mt-0.5 break-all",children:[v.fileName,v.lineNumber&&e.jsxs("span",{className:"text-yellow-600 dark:text-yellow-400",children:[":",v.lineNumber,":",v.columnNumber]})]})]})]})},k))})})})]}),r?.componentStack&&e.jsxs(Du,{open:h,onOpenChange:x,children:[e.jsx(Ou,{asChild:!0,children:e.jsxs(b,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[e.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[e.jsx(pa,{className:"h-4 w-4"}),"Component Stack"]}),h?e.jsx(or,{className:"h-4 w-4"}):e.jsx(Dl,{className:"h-4 w-4"})]})}),e.jsx(Ru,{children:e.jsx(Ie,{className:"h-[200px] rounded-md border bg-muted/30",children:e.jsx("pre",{className:"p-3 font-mono text-xs whitespace-pre-wrap text-muted-foreground",children:r.componentStack})})})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:w,className:"w-full",children:f?e.jsxs(e.Fragment,{children:[e.jsx(ga,{className:"mr-2 h-4 w-4 text-green-500"}),"已复制到剪贴板"]}):e.jsxs(e.Fragment,{children:[e.jsx(Jc,{className:"mr-2 h-4 w-4"}),"复制错误信息"]})})]})}function Dg({error:n,errorInfo:r}){const c=()=>{window.location.href="/"},d=()=>{window.location.reload()};return e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background p-4",children:e.jsxs(Ve,{className:"w-full max-w-2xl shadow-lg",children:[e.jsxs(pt,{className:"text-center pb-2",children:[e.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30 mb-4",children:e.jsx(pa,{className:"h-8 w-8 text-red-600 dark:text-red-400"})}),e.jsx(gt,{className:"text-2xl font-bold",children:"页面出现了问题"}),e.jsx(Kt,{className:"text-base mt-2",children:"应用程序遇到了意外错误。您可以尝试刷新页面或返回首页。"})]}),e.jsxs(yt,{className:"space-y-4",children:[e.jsx(T2,{error:n,errorInfo:r}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 pt-2",children:[e.jsxs(b,{onClick:d,className:"flex-1",children:[e.jsx(ps,{className:"mr-2 h-4 w-4"}),"刷新页面"]}),e.jsxs(b,{onClick:c,variant:"outline",className:"flex-1",children:[e.jsx(to,{className:"mr-2 h-4 w-4"}),"返回首页"]})]}),e.jsx("p",{className:"text-xs text-center text-muted-foreground pt-2",children:"如果问题持续存在,请将错误信息复制并反馈给开发者"})]})]})})}class E2 extends u.Component{constructor(r){super(r),this.state={hasError:!1,error:null,errorInfo:null}}static getDerivedStateFromError(r){return{hasError:!0,error:r}}componentDidCatch(r,c){console.error("ErrorBoundary caught an error:",r,c),this.setState({errorInfo:c})}handleReset=()=>{this.setState({hasError:!1,error:null,errorInfo:null})};render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback:e.jsx(Dg,{error:this.state.error,errorInfo:this.state.errorInfo}):this.props.children}}function Og({error:n}){return e.jsx(Dg,{error:n,errorInfo:null})}const yr=Wv({component:()=>e.jsxs(e.Fragment,{children:[e.jsx(hp,{}),!1]}),beforeLoad:()=>{if(window.location.pathname==="/"&&!v2())throw tb({to:"/auth"})}}),z2=as({getParentRoute:()=>yr,path:"/auth",component:PN}),A2=as({getParentRoute:()=>yr,path:"/setup",component:f0}),ys=as({getParentRoute:()=>yr,id:"protected",component:()=>e.jsx(C2,{children:e.jsx(hp,{})}),errorComponent:({error:n})=>e.jsx(Og,{error:n})}),M2=as({getParentRoute:()=>ys,path:"/",component:TN}),D2=as({getParentRoute:()=>ys,path:"/config/bot",component:T0}),O2=as({getParentRoute:()=>ys,path:"/config/modelProvider",component:P0}),R2=as({getParentRoute:()=>ys,path:"/config/model",component:sw}),L2=as({getParentRoute:()=>ys,path:"/config/adapter",component:lw}),U2=as({getParentRoute:()=>ys,path:"/resource/emoji",component:Tw}),B2=as({getParentRoute:()=>ys,path:"/resource/expression",component:qw}),H2=as({getParentRoute:()=>ys,path:"/resource/person",component:Iw}),q2=as({getParentRoute:()=>ys,path:"/resource/knowledge-graph",component:i1}),G2=as({getParentRoute:()=>ys,path:"/logs",component:U1}),V2=as({getParentRoute:()=>ys,path:"/chat",component:g2}),F2=as({getParentRoute:()=>ys,path:"/plugins",component:r2}),$2=as({getParentRoute:()=>ys,path:"/plugin-config",component:d2}),Q2=as({getParentRoute:()=>ys,path:"/plugin-mirrors",component:u2}),Y2=as({getParentRoute:()=>ys,path:"/settings",component:QN}),X2=as({getParentRoute:()=>yr,path:"*",component:bg}),K2=yr.addChildren([z2,A2,ys.addChildren([M2,D2,O2,R2,L2,U2,B2,H2,q2,F2,$2,Q2,G2,V2,Y2]),X2]),Z2=eb({routeTree:K2,defaultNotFoundComponent:bg,defaultErrorComponent:({error:n})=>e.jsx(Og,{error:n})});function J2({children:n,defaultTheme:r="system",storageKey:c="ui-theme",...d}){const[h,x]=u.useState(()=>localStorage.getItem(c)||r);u.useEffect(()=>{const j=window.document.documentElement;if(j.classList.remove("light","dark"),h==="system"){const p=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";j.classList.add(p);return}j.classList.add(h)},[h]),u.useEffect(()=>{const j=localStorage.getItem("accent-color");if(j){const p=document.documentElement,v={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[j];v&&(p.style.setProperty("--primary",v.hsl),v.gradient?(p.style.setProperty("--primary-gradient",v.gradient),p.classList.add("has-gradient")):(p.style.removeProperty("--primary-gradient"),p.classList.remove("has-gradient")))}},[]);const f={theme:h,setTheme:j=>{localStorage.setItem(c,j),x(j)}};return e.jsx(xg.Provider,{...d,value:f,children:n})}function I2({children:n,defaultEnabled:r=!0,defaultWavesEnabled:c=!0,storageKey:d="enable-animations",wavesStorageKey:h="enable-waves-background"}){const[x,f]=u.useState(()=>{const v=localStorage.getItem(d);return v!==null?v==="true":r}),[j,p]=u.useState(()=>{const v=localStorage.getItem(h);return v!==null?v==="true":c});u.useEffect(()=>{const v=document.documentElement;x?v.classList.remove("no-animations"):v.classList.add("no-animations"),localStorage.setItem(d,String(x))},[x,d]),u.useEffect(()=>{localStorage.setItem(h,String(j))},[j,h]);const w={enableAnimations:x,setEnableAnimations:f,enableWavesBackground:j,setEnableWavesBackground:p};return e.jsx(fg.Provider,{value:w,children:n})}const P2=Wb,Rg=u.forwardRef(({className:n,...r},c)=>e.jsx(Xp,{ref:c,className:K("fixed bottom-0 right-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:max-w-[420px] gap-2",n),...r}));Rg.displayName=Xp.displayName;const W2=ei("group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-slide-in-from-right data-[state=open]:animate-fade-in data-[state=closed]:animate-slide-out-to-right data-[state=closed]:animate-fade-out data-[swipe=end]:animate-slide-out-to-right",{variants:{variant:{default:"border bg-primary/5 text-foreground backdrop-blur-sm",destructive:"destructive group border-destructive bg-destructive/10 text-destructive-foreground backdrop-blur-sm"}},defaultVariants:{variant:"default"}}),Lg=u.forwardRef(({className:n,variant:r,...c},d)=>e.jsx(Kp,{ref:d,className:K(W2({variant:r}),n),...c}));Lg.displayName=Kp.displayName;const e_=u.forwardRef(({className:n,...r},c)=>e.jsx(Zp,{ref:c,className:K("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",n),...r}));e_.displayName=Zp.displayName;const Ug=u.forwardRef(({className:n,...r},c)=>e.jsx(Jp,{ref:c,className:K("absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",n),"toast-close":"",...r,children:e.jsx(si,{className:"h-4 w-4"})}));Ug.displayName=Jp.displayName;const Bg=u.forwardRef(({className:n,...r},c)=>e.jsx(Ip,{ref:c,className:K("text-sm font-semibold [&+div]:text-xs",n),...r}));Bg.displayName=Ip.displayName;const Hg=u.forwardRef(({className:n,...r},c)=>e.jsx(Pp,{ref:c,className:K("text-sm opacity-90",n),...r}));Hg.displayName=Pp.displayName;function t_(){const{toasts:n}=Rt();return e.jsxs(P2,{children:[n.map(function({id:r,title:c,description:d,action:h,...x}){return e.jsxs(Lg,{...x,children:[e.jsxs("div",{className:"grid gap-1",children:[c&&e.jsx(Bg,{children:c}),d&&e.jsx(Hg,{children:d})]}),h,e.jsx(Ug,{})]},r)}),e.jsx(Rg,{})]})}gN.createRoot(document.getElementById("root")).render(e.jsx(u.StrictMode,{children:e.jsx(E2,{children:e.jsx(J2,{defaultTheme:"system",children:e.jsx(I2,{children:e.jsxs(X0,{children:[e.jsx(sb,{router:Z2}),e.jsx(J0,{}),e.jsx(t_,{})]})})})})})); diff --git a/webui/dist/assets/index-ceRg_XiX.css b/webui/dist/assets/index-ceRg_XiX.css new file mode 100644 index 00000000..0ac3fa6c --- /dev/null +++ b/webui/dist/assets/index-ceRg_XiX.css @@ -0,0 +1 @@ +@charset "UTF-8";*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 0 0% 100%;--foreground: 222.2 84% 4.9%;--card: 0 0% 100%;--card-foreground: 222.2 84% 4.9%;--popover: 0 0% 100%;--popover-foreground: 222.2 84% 4.9%;--primary: 221.2 83.2% 53.3%;--primary-foreground: 210 40% 98%;--primary-gradient: none;--secondary: 210 40% 96.1%;--secondary-foreground: 222.2 47.4% 11.2%;--muted: 210 40% 96.1%;--muted-foreground: 215.4 16.3% 46.9%;--accent: 210 40% 96.1%;--accent-foreground: 222.2 47.4% 11.2%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 210 40% 98%;--border: 214.3 31.8% 91.4%;--input: 214.3 31.8% 91.4%;--ring: 221.2 83.2% 53.3%;--radius: .5rem;--chart-1: 221.2 83.2% 53.3%;--chart-2: 160 60% 45%;--chart-3: 30 80% 55%;--chart-4: 280 65% 60%;--chart-5: 340 75% 55%}.dark{--background: 222.2 84% 4.9%;--foreground: 210 40% 98%;--card: 222.2 84% 4.9%;--card-foreground: 210 40% 98%;--popover: 222.2 84% 4.9%;--popover-foreground: 210 40% 98%;--primary: 217.2 91.2% 59.8%;--primary-foreground: 222.2 47.4% 11.2%;--primary-gradient: none;--secondary: 217.2 32.6% 17.5%;--secondary-foreground: 210 40% 98%;--muted: 217.2 32.6% 17.5%;--muted-foreground: 215 20.2% 65.1%;--accent: 217.2 32.6% 17.5%;--accent-foreground: 210 40% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 210 40% 98%;--border: 217.2 32.6% 17.5%;--input: 217.2 32.6% 17.5%;--ring: 224.3 76.3% 48%;--chart-1: 217.2 91.2% 59.8%;--chart-2: 160 60% 50%;--chart-3: 30 80% 60%;--chart-4: 280 65% 65%;--chart-5: 340 75% 60%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-1\/4{bottom:25%}.bottom-4{bottom:1rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.left-1\/4{left:25%}.left-2{left:.5rem}.left-2\.5{left:.625rem}.left-3{left:.75rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-1\.5{right:.375rem}.right-1\/4{right:25%}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-1\/4{top:25%}.top-2{top:.5rem}.top-2\.5{top:.625rem}.top-3{top:.75rem}.top-4{top:1rem}.top-\[50\%\]{top:50%}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.order-1{order:1}.order-2{order:2}.col-span-2{grid-column:span 2 / span 2}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-mt-2{margin-top:-.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-10{margin-left:2.5rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-auto{aspect-ratio:auto}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:16 / 9}.size-4{width:1rem;height:1rem}.size-\[--cell-size\]{width:var(--cell-size);height:var(--cell-size)}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[--cell-size\]{height:var(--cell-size)}.h-\[1\.25rem\]{height:1.25rem}.h-\[1px\]{height:1px}.h-\[200px\]{height:200px}.h-\[250px\]{height:250px}.h-\[280px\]{height:280px}.h-\[300px\]{height:300px}.h-\[350px\]{height:350px}.h-\[400px\]{height:400px}.h-\[calc\(100vh-200px\)\]{height:calc(100vh - 200px)}.h-\[calc\(100vh-240px\)\]{height:calc(100vh - 240px)}.h-\[calc\(100vh-260px\)\]{height:calc(100vh - 260px)}.h-\[calc\(100vh-4rem\)\]{height:calc(100vh - 4rem)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\[--radix-context-menu-content-available-height\]{max-height:var(--radix-context-menu-content-available-height)}.max-h-\[--radix-select-content-available-height\]{max-height:var(--radix-select-content-available-height)}.max-h-\[300px\]{max-height:300px}.max-h-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[calc\(90vh-120px\)\]{max-height:calc(90vh - 120px)}.max-h-\[calc\(90vh-8rem\)\]{max-height:calc(90vh - 8rem)}.max-h-full{max-height:100%}.max-h-none{max-height:none}.max-h-screen{max-height:100vh}.min-h-0{min-height:0px}.min-h-10{min-height:2.5rem}.min-h-\[100px\]{min-height:100px}.min-h-\[300px\]{min-height:300px}.min-h-\[60px\]{min-height:60px}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-\[--cell-size\]{width:var(--cell-size)}.w-\[100px\]{width:100px}.w-\[120px\]{width:120px}.w-\[130px\]{width:130px}.w-\[1px\]{width:1px}.w-\[65px\]{width:65px}.w-\[95vw\]{width:95vw}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[--cell-size\]{min-width:var(--cell-size)}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[80px\]{min-width:80px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-32{max-width:8rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-\[150px\]{max-width:150px}.max-w-\[200px\]{max-width:200px}.max-w-\[60px\]{max-width:60px}.max-w-\[75\%\]{max-width:75%}.max-w-\[90\%\]{max-width:90%}.max-w-\[95vw\]{max-width:95vw}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\[--radix-context-menu-content-transform-origin\]{transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\[--radix-popover-content-transform-origin\]{transform-origin:var(--radix-popover-content-transform-origin)}.origin-\[--radix-select-content-transform-origin\]{transform-origin:var(--radix-select-content-transform-origin)}.origin-\[--radix-tooltip-content-transform-origin\]{transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.rounded-tr-sm{border-top-right-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-\[1\.5px\]{border-width:1.5px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[--color-border\]{border-color:var(--color-border)}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-500\/50{border-color:#f59e0b80}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-700{--tw-border-opacity: 1;border-color:rgb(29 78 216 / var(--tw-border-opacity, 1))}.border-border{border-color:hsl(var(--border))}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-current{border-color:currentColor}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-green-300{--tw-border-opacity: 1;border-color:rgb(134 239 172 / var(--tw-border-opacity, 1))}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.border-green-600{--tw-border-opacity: 1;border-color:rgb(22 163 74 / var(--tw-border-opacity, 1))}.border-green-700{--tw-border-opacity: 1;border-color:rgb(21 128 61 / var(--tw-border-opacity, 1))}.border-input{border-color:hsl(var(--input))}.border-muted{border-color:hsl(var(--muted))}.border-muted-foreground\/30{border-color:hsl(var(--muted-foreground) / .3)}.border-muted-foreground\/50{border-color:hsl(var(--muted-foreground) / .5)}.border-orange-200{--tw-border-opacity: 1;border-color:rgb(254 215 170 / var(--tw-border-opacity, 1))}.border-orange-600{--tw-border-opacity: 1;border-color:rgb(234 88 12 / var(--tw-border-opacity, 1))}.border-primary{border-color:hsl(var(--primary))}.border-primary\/20{border-color:hsl(var(--primary) / .2)}.border-primary\/30{border-color:hsl(var(--primary) / .3)}.border-primary\/50{border-color:hsl(var(--primary) / .5)}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-red-500\/50{border-color:#ef444480}.border-transparent{border-color:transparent}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-yellow-500\/50{border-color:#eab30880}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\[--color-bg\]{background-color:var(--color-bg)}.bg-accent{background-color:hsl(var(--accent))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-background{background-color:hsl(var(--background))}.bg-background\/50{background-color:hsl(var(--background) / .5)}.bg-background\/80{background-color:hsl(var(--background) / .8)}.bg-background\/95{background-color:hsl(var(--background) / .95)}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-black\/50{background-color:#00000080}.bg-black\/80{background-color:#000c}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-blue-900\/20{background-color:#1e3a8a33}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-card\/80{background-color:hsl(var(--card) / .8)}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-800\/20{background-color:#1f293733}.bg-gray-800\/30{background-color:#1f29374d}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground\/50{background-color:hsl(var(--muted-foreground) / .5)}.bg-muted\/20{background-color:hsl(var(--muted) / .2)}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-orange-600{--tw-bg-opacity: 1;background-color:rgb(234 88 12 / var(--tw-bg-opacity, 1))}.bg-pink-500{--tw-bg-opacity: 1;background-color:rgb(236 72 153 / var(--tw-bg-opacity, 1))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/20{background-color:hsl(var(--primary) / .2)}.bg-primary\/5{background-color:hsl(var(--primary) / .05)}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(168 85 247 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-red-900\/20{background-color:#7f1d1d33}.bg-red-900\/30{background-color:#7f1d1d4d}.bg-secondary{background-color:hsl(var(--secondary))}.bg-secondary\/5{background-color:hsl(var(--secondary) / .05)}.bg-slate-200{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity, 1))}.bg-slate-300{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity, 1))}.bg-slate-400{--tw-bg-opacity: 1;background-color:rgb(148 163 184 / var(--tw-bg-opacity, 1))}.bg-slate-700{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-200{--tw-bg-opacity: 1;background-color:rgb(254 240 138 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-yellow-500\/5{background-color:#eab3080d}.bg-yellow-900\/20{background-color:#713f1233}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-blue-500{--tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-500{--tw-gradient-from: #22c55e var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 197 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-500{--tw-gradient-from: #f97316 var(--tw-gradient-from-position);--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-primary\/5{--tw-gradient-from: hsl(var(--primary) / .05) var(--tw-gradient-from-position);--tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-500{--tw-gradient-from: #a855f7 var(--tw-gradient-from-position);--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-500{--tw-gradient-from: #ef4444 var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 68 68 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-200{--tw-gradient-from: #e2e8f0 var(--tw-gradient-from-position);--tw-gradient-to: rgb(226 232 240 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-300{--tw-gradient-from: #cbd5e1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(203 213 225 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-400{--tw-gradient-from: #94a3b8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(148 163 184 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-background{--tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), hsl(var(--background)) var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-blue-600{--tw-gradient-to: #2563eb var(--tw-gradient-to-position)}.to-cyan-500{--tw-gradient-to: #06b6d4 var(--tw-gradient-to-position)}.to-emerald-500{--tw-gradient-to: #10b981 var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to: #16a34a var(--tw-gradient-to-position)}.to-orange-500{--tw-gradient-to: #f97316 var(--tw-gradient-to-position)}.to-pink-500{--tw-gradient-to: #ec4899 var(--tw-gradient-to-position)}.to-primary\/10{--tw-gradient-to: hsl(var(--primary) / .1) var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to: #a855f7 var(--tw-gradient-to-position)}.to-secondary\/5{--tw-gradient-to: hsl(var(--secondary) / .05) var(--tw-gradient-to-position)}.to-slate-700{--tw-gradient-to: #334155 var(--tw-gradient-to-position)}.to-slate-800{--tw-gradient-to: #1e293b var(--tw-gradient-to-position)}.to-slate-900{--tw-gradient-to: #0f172a var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.fill-yellow-400{fill:#facc15}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[1px\]{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[--cell-size\]{padding-left:var(--cell-size);padding-right:var(--cell-size)}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pl-10{padding-left:2.5rem}.pl-11{padding-left:2.75rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-1{padding-right:.25rem}.pr-10{padding-right:2.5rem}.pr-16{padding-right:4rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.text-\[150px\]{font-size:150px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/50{color:hsl(var(--foreground) / .5)}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/50{color:hsl(var(--muted-foreground) / .5)}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-800{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.text-orange-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary\/10{color:hsl(var(--primary) / .1)}.text-primary\/30{color:hsl(var(--primary) / .3)}.text-primary\/60{color:hsl(var(--primary) / .6)}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.text-yellow-900{--tw-text-opacity: 1;color:rgb(113 63 18 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-primary{--tw-ring-color: hsl(var(--primary))}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur-3xl{--tw-blur: blur(64px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.text-primary-gradient{color:hsl(var(--primary))}.has-gradient .text-primary-gradient{background:var(--primary-gradient);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.\[--cell-size\:2rem\]{--cell-size: 2rem}.no-animations *,.no-animations *:before,.no-animations *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.no-animations *:hover{transition-duration:.01ms!important}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:999}.__floater{z-index:99999!important;pointer-events:auto!important}.react-joyride__overlay,.react-joyride__spotlight{z-index:99998!important}.react-joyride__tooltip{pointer-events:auto!important}#tour-portal-container *{pointer-events:auto}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:border-muted-foreground\/50:hover{border-color:hsl(var(--muted-foreground) / .5)}.hover\:border-primary\/50:hover{border-color:hsl(var(--primary) / .5)}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent) / .5)}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-orange-700:hover{--tw-bg-opacity: 1;background-color:rgb(194 65 12 / var(--tw-bg-opacity, 1))}.hover\:bg-primary\/10:hover{background-color:hsl(var(--primary) / .1)}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-secondary:hover{background-color:hsl(var(--secondary))}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-secondary\/90:hover{background-color:hsl(var(--secondary) / .9)}.hover\:bg-transparent:hover{background-color:transparent}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-green-700:hover{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.hover\:text-orange-700:hover{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.hover\:text-primary\/80:hover{color:hsl(var(--primary) / .8)}.hover\:text-red-700:hover{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.hover\:text-yellow-300:hover{--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:ring-2:hover{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.hover\:ring-primary:hover{--tw-ring-color: hsl(var(--primary))}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-gray-100:focus{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-red-500:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.active\:cursor-grabbing:active{cursor:grabbing}.active\:border-primary\/70:active{border-color:hsl(var(--primary) / .7)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group[open] .group-open\:rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:opacity-100{opacity:1}.group.destructive .group-\[\.destructive\]\:border-muted\/40{border-color:hsl(var(--muted) / .4)}.group.destructive .group-\[\.destructive\]\:text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:hover\:text-red-50:hover{--tw-text-opacity: 1;color:rgb(254 242 242 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-red-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(248 113 113 / var(--tw-ring-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-offset-red-600:focus{--tw-ring-offset-color: #dc2626}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-selected\:text-muted-foreground[aria-selected=true]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true],.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked],.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x: var(--radix-toast-swipe-end-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x: var(--radix-toast-swipe-move-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes fade-out{0%{opacity:1}to{opacity:0}}.data-\[state\=closed\]\:animate-fade-out[data-state=closed]{animation:fade-out .15s ease-in}.data-\[state\=closed\]\:animate-slide-out-to-right[data-state=closed]{animation:slide-out-to-right .2s ease-in}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.data-\[state\=open\]\:animate-fade-in[data-state=open]{animation:fade-in .2s ease-out}@keyframes slide-in-from-right{0%{transform:translate(100%)}to{transform:translate(0)}}.data-\[state\=open\]\:animate-slide-in-from-right[data-state=open]{animation:slide-in-from-right .3s ease-out}@keyframes slide-out-to-right{0%{transform:translate(0)}to{transform:translate(100%)}}.data-\[swipe\=end\]\:animate-slide-out-to-right[data-swipe=end]{animation:slide-out-to-right .2s ease-in}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) - 2px)}.data-\[selected\=true\]\:rounded-none[data-selected=true]{border-radius:0}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:hsl(var(--primary))}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:hsl(var(--accent))}.data-\[range-start\=true\]\:bg-primary[data-range-start=true],.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:hsl(var(--primary))}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:hsl(var(--primary-foreground))}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:hsl(var(--accent-foreground))}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true],.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:hsl(var(--primary-foreground))}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:opacity-50[data-disabled=true],.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.data-\[state\=active\]\:duration-300[data-state=active]{transition-duration:.3s}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:relative{position:relative}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:z-10{z-index:10}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:border-ring{border-color:hsl(var(--ring))}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-\[3px\]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}@supports (backdrop-filter: var(--tw)){.supports-\[backdrop-filter\]\:bg-background\/60{background-color:hsl(var(--background) / .6)}}.dark\:border-amber-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(146 64 14 / var(--tw-border-opacity, 1))}.dark\:border-blue-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity, 1))}.dark\:border-gray-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(17 24 39 / var(--tw-border-opacity, 1))}.dark\:border-green-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(22 101 52 / var(--tw-border-opacity, 1))}.dark\:border-orange-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(124 45 18 / var(--tw-border-opacity, 1))}.dark\:border-yellow-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(113 63 18 / var(--tw-border-opacity, 1))}.dark\:bg-amber-950\/30:is(.dark *){background-color:#451a034d}.dark\:bg-blue-500\/20:is(.dark *){background-color:#3b82f633}.dark\:bg-blue-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 37 84 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950\/20:is(.dark *){background-color:#17255433}.dark\:bg-blue-950\/30:is(.dark *){background-color:#1725544d}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800\/30:is(.dark *){background-color:#1f29374d}.dark\:bg-gray-800\/50:is(.dark *){background-color:#1f293780}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(3 7 18 / var(--tw-bg-opacity, 1))}.dark\:bg-green-900\/30:is(.dark *){background-color:#14532d4d}.dark\:bg-green-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(5 46 22 / var(--tw-bg-opacity, 1))}.dark\:bg-green-950\/20:is(.dark *){background-color:#052e1633}.dark\:bg-orange-950\/20:is(.dark *){background-color:#43140733}.dark\:bg-red-500\/20:is(.dark *){background-color:#ef444433}.dark\:bg-red-600\/30:is(.dark *){background-color:#dc26264d}.dark\:bg-red-900\/30:is(.dark *){background-color:#7f1d1d4d}.dark\:bg-red-950\/50:is(.dark *){background-color:#450a0a80}.dark\:bg-yellow-500\/20:is(.dark *){background-color:#eab30833}.dark\:bg-yellow-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1))}.dark\:bg-yellow-950\/30:is(.dark *){background-color:#4220064d}.dark\:text-amber-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 243 199 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-blue-100:is(.dark *){--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-200:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-cyan-500:is(.dark *){--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-orange-100:is(.dark *){--tw-text-opacity: 1;color:rgb(255 237 213 / var(--tw-text-opacity, 1))}.dark\:text-orange-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 215 170 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-red-500:is(.dark *){--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.dark\:text-yellow-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.dark\:text-yellow-400:is(.dark *){--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.dark\:text-yellow-500:is(.dark *){--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:focus\:bg-gray-800:focus:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}@media(min-width:640px){.sm\:right-2{right:.5rem}.sm\:right-3{right:.75rem}.sm\:top-2{top:.5rem}.sm\:top-3{top:.75rem}.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:mb-3{margin-bottom:.75rem}.sm\:mb-4{margin-bottom:1rem}.sm\:mb-6{margin-bottom:1.5rem}.sm\:ml-0{margin-left:0}.sm\:ml-1{margin-left:.25rem}.sm\:mr-1{margin-right:.25rem}.sm\:mr-2{margin-right:.5rem}.sm\:mt-0{margin-top:0}.sm\:mt-2{margin-top:.5rem}.sm\:mt-3{margin-top:.75rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-12{height:3rem}.sm\:h-2{height:.5rem}.sm\:h-24{height:6rem}.sm\:h-3{height:.75rem}.sm\:h-4{height:1rem}.sm\:h-5{height:1.25rem}.sm\:h-8{height:2rem}.sm\:h-9{height:2.25rem}.sm\:h-\[300px\]{height:300px}.sm\:h-\[400px\]{height:400px}.sm\:h-\[500px\]{height:500px}.sm\:h-\[calc\(100vh-280px\)\]{height:calc(100vh - 280px)}.sm\:w-10{width:2.5rem}.sm\:w-2{width:.5rem}.sm\:w-24{width:6rem}.sm\:w-28{width:7rem}.sm\:w-3{width:.75rem}.sm\:w-4{width:1rem}.sm\:w-5{width:1.25rem}.sm\:w-8{width:2rem}.sm\:w-80{width:20rem}.sm\:w-96{width:24rem}.sm\:w-\[140px\]{width:140px}.sm\:w-\[160px\]{width:160px}.sm\:w-\[200px\]{width:200px}.sm\:w-\[500px\]{width:500px}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:min-w-\[120px\]{min-width:120px}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-\[420px\]{max-width:420px}.sm\:max-w-\[70\%\]{max-width:70%}.sm\:max-w-\[900px\]{max-width:900px}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:flex-1{flex:1 1 0%}.sm\:flex-none{flex:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-0{gap:0px}.sm\:gap-1{gap:.25rem}.sm\:gap-2{gap:.5rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:gap-6{gap:1.5rem}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.sm\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.sm\:space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.sm\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.sm\:space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:py-2{padding-top:.5rem;padding-bottom:.5rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-\[200px\]{font-size:200px}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:768px){.md\:top-4{top:1rem}.md\:mb-4{margin-bottom:1rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-8{margin-bottom:2rem}.md\:mt-8{margin-top:2rem}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-16{height:4rem}.md\:h-4{height:1rem}.md\:h-5{height:1.25rem}.md\:h-8{height:2rem}.md\:h-96{height:24rem}.md\:h-\[500px\]{height:500px}.md\:min-h-\[400px\]{min-height:400px}.md\:w-16{width:4rem}.md\:w-4{width:1rem}.md\:w-5{width:1.25rem}.md\:w-8{width:2rem}.md\:w-96{width:24rem}.md\:max-w-none{max-width:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:gap-2{gap:.5rem}.md\:gap-3{gap:.75rem}.md\:gap-4{gap:1rem}.md\:gap-6{gap:1.5rem}.md\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.md\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.md\:whitespace-normal{white-space:normal}.md\:p-12{padding:3rem}.md\:p-4{padding:1rem}.md\:p-6{padding:1.5rem}.md\:p-8{padding:2rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:1024px){.lg\:invisible{visibility:hidden}.lg\:relative{position:relative}.lg\:z-0{z-index:0}.lg\:col-span-1{grid-column:span 1 / span 1}.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:mb-1{margin-bottom:.25rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-12{width:3rem}.lg\:w-16{width:4rem}.lg\:w-64{width:16rem}.lg\:w-8{width:2rem}.lg\:w-\[130px\]{width:130px}.lg\:w-\[160px\]{width:160px}.lg\:w-\[180px\]{width:180px}.lg\:w-\[200px\]{width:200px}.lg\:w-\[240px\]{width:240px}.lg\:w-\[75px\]{width:75px}.lg\:w-auto{width:auto}.lg\:w-full{width:100%}.lg\:max-w-0{max-width:0px}.lg\:flex-1{flex:1 1 0%}.lg\:flex-none{flex:none}.lg\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:justify-center{justify-content:center}.lg\:gap-0{gap:0px}.lg\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.lg\:overflow-hidden{overflow:hidden}.lg\:p-2{padding:.5rem}.lg\:p-6{padding:1.5rem}.lg\:px-0{padding-left:0;padding-right:0}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:pb-6{padding-bottom:1.5rem}.lg\:text-3xl{font-size:1.875rem;line-height:2.25rem}.lg\:opacity-0{opacity:0}}@media(min-width:1280px){.xl\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}}.\[\&\+div\]\:text-xs+div{font-size:.75rem;line-height:1rem}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>span\]\:text-xs>span{font-size:.75rem;line-height:1rem}.\[\&\>span\]\:opacity-70>span{opacity:.7}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y: -3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-4>svg{top:1rem}.\[\&\>svg\]\:size-3\.5>svg{width:.875rem;height:.875rem}.\[\&\>svg\]\:h-2\.5>svg{height:.625rem}.\[\&\>svg\]\:h-3>svg{height:.75rem}.\[\&\>svg\]\:w-2\.5>svg{width:.625rem}.\[\&\>svg\]\:w-3>svg{width:.75rem}.\[\&\>svg\]\:text-foreground>svg{color:hsl(var(--foreground))}.\[\&\>svg\]\:text-muted-foreground>svg{color:hsl(var(--muted-foreground))}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:1.75rem}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:hsl(var(--muted-foreground))}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:hsl(var(--border) / .5)}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:hsl(var(--border))}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-layer\]\:outline-none .recharts-layer{outline:2px solid transparent;outline-offset:2px}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector,.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:hsl(var(--muted))}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-sector\]\:outline-none .recharts-sector,.\[\&_\.recharts-surface\]\:outline-none .recharts-surface{outline:2px solid transparent;outline-offset:2px}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:1.25rem}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:invisible svg{visibility:hidden}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent,[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:transparent}.uppy-Root{box-sizing:border-box;color:#333;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;line-height:1;position:relative;text-align:left;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.uppy-Root[dir=rtl],[dir=rtl] .uppy-Root{text-align:right}.uppy-Root *,.uppy-Root :after,.uppy-Root :before{box-sizing:inherit}.uppy-Root [hidden]{display:none}.uppy-u-reset{all:initial;-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;line-height:1}[dir=rtl] .uppy-u-reset{text-align:right}.uppy-c-textInput{background-color:#fff;border:1px solid #ddd;border-radius:4px;font-family:inherit;font-size:14px;line-height:1.5;padding:6px 8px}.uppy-size--md .uppy-c-textInput{padding:8px 10px}.uppy-c-textInput:focus{border-color:#1269cf99;box-shadow:0 0 0 3px #1269cf26;outline:none}[data-uppy-theme=dark] .uppy-c-textInput{background-color:#333;border-color:#333;color:#eaeaea}[data-uppy-theme=dark] .uppy-c-textInput:focus{border-color:#525252;box-shadow:none}.uppy-c-icon{display:inline-block;max-height:100%;max-width:100%;overflow:hidden;fill:currentColor}.uppy-c-btn{align-items:center;color:inherit;display:inline-flex;font-family:inherit;font-size:inherit;font-weight:500;justify-content:center;line-height:1;transition-duration:.3s;transition-property:background-color,color;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.uppy-c-btn,[dir=rtl] .uppy-c-btn{text-align:center}.uppy-c-btn:not(:disabled):not(.disabled){cursor:pointer}.uppy-c-btn::-moz-focus-inner{border:0}.uppy-c-btn-primary{background-color:#1269cf;border-radius:4px;color:#fff;font-size:14px;padding:10px 18px}.uppy-c-btn-primary:not(:disabled):hover{background-color:#0e51a0}.uppy-c-btn-primary:focus{box-shadow:0 0 0 3px #1269cf66;outline:none}.uppy-size--md .uppy-c-btn-primary{padding:13px 22px}[data-uppy-theme=dark] .uppy-c-btn-primary{color:#eaeaea}[data-uppy-theme=dark] .uppy-c-btn-primary:focus{outline:none}[data-uppy-theme=dark] .uppy-c-btn-primary::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-c-btn-primary:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-c-btn-primary.uppy-c-btn--disabled{background-color:#8eb2db}.uppy-c-btn-link{background-color:initial;border-radius:4px;color:#525252;font-size:14px;line-height:1;padding:10px 15px}.uppy-c-btn-link:hover{color:#333}.uppy-c-btn-link:focus{box-shadow:0 0 0 3px #1269cf40;outline:none}.uppy-size--md .uppy-c-btn-link{padding:13px 18px}[data-uppy-theme=dark] .uppy-c-btn-link{color:#eaeaea}[data-uppy-theme=dark] .uppy-c-btn-link:focus{outline:none}[data-uppy-theme=dark] .uppy-c-btn-link::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-c-btn-link:focus{box-shadow:0 0 0 2px #aae1ffd9}[data-uppy-theme=dark] .uppy-c-btn-link:hover{color:#939393}.uppy-ProviderBrowser-viewType--grid ul.uppy-ProviderBrowser-list,.uppy-ProviderBrowser-viewType--unsplash ul.uppy-ProviderBrowser-list{align-items:flex-start;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;padding:6px}.uppy-ProviderBrowser-viewType--grid ul.uppy-ProviderBrowser-list:after,.uppy-ProviderBrowser-viewType--unsplash ul.uppy-ProviderBrowser-list:after{content:"";flex:auto}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem{margin:0;position:relative;width:50%}.uppy-size--md .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem,.uppy-size--md .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem{width:33.3333%}.uppy-size--lg .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem,.uppy-size--lg .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem{width:25%}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem:before,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem:before{content:"";display:block;padding-top:100%}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--selected img,.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--selected svg,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--selected img,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--selected svg{opacity:.85}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--disabled,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--disabled{opacity:.5}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner{background-color:#93939333}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner,[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner{background-color:#eaeaea33}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview svg,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview svg{height:30%;width:30%;fill:#000000b3}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview svg,[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview svg{fill:#fffc}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner{border-radius:4px;height:calc(100% - 14px);inset:7px;overflow:hidden;position:absolute;text-align:center;width:calc(100% - 14px)}@media(hover:none){.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner .uppy-ProviderBrowserItem-author{display:block}}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner,[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner{box-shadow:0 0 0 3px #aae1ffb3}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner img,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner img{border-radius:4px;height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-author{background:#0000004d;bottom:0;color:#fff;display:none;font-size:12px;font-weight:500;left:0;margin:0;padding:5px;position:absolute;text-decoration:none;width:100%}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-author:hover,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-author:hover{background:#0006;text-decoration:underline}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox{background-color:#1269cf;border-radius:50%;height:26px;opacity:0;position:absolute;right:16px;top:16px;width:26px;z-index:1002}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox:after,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox:after{height:7px;inset-inline-start:7px;top:8px;width:12px}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox{opacity:1}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:hover+label .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:hover+label .uppy-ProviderBrowserItem-author{display:block}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label{box-shadow:0 0 0 3px #1269cf80}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label:focus,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label:focus{outline:none}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label::-moz-focus-inner,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label::-moz-focus-inner{border:0}.uppy-ProviderBrowser-viewType--list{background-color:#fff}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--list{background-color:#1f1f1f}.uppy-ProviderBrowser-viewType--list li.uppy-ProviderBrowserItem{align-items:center;display:flex;margin:0;padding:7px 15px}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--list li.uppy-ProviderBrowserItem{color:#eaeaea}.uppy-ProviderBrowser-viewType--list li.uppy-ProviderBrowserItem--disabled{opacity:.6}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox{background-color:#fff;border:1px solid #cfcfcf;border-radius:3px;height:17px;margin-inline-end:15px;width:17px}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox:focus{border:1px solid #1269cf;box-shadow:0 0 0 3px #1269cf40;outline:none}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox:after{height:5px;inset-inline-start:3px;opacity:0;top:4px;width:9px}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox:focus{border-color:#02baf2b3;box-shadow:0 0 0 3px #02baf233}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox,.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-partial .uppy-ProviderBrowserItem-checkbox{background-color:#1269cf;border-color:#1269cf}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox:after,.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-partial .uppy-ProviderBrowserItem-checkbox:after{opacity:1}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner{align-items:center;color:inherit;display:flex;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;overflow:hidden;padding:2px;text-overflow:ellipsis;white-space:nowrap}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner:focus{outline:none;text-decoration:underline}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner img,.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner svg{margin-inline-end:8px}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner span{line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--disabled .uppy-ProviderBrowserItem-inner{cursor:default}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-iconWrap{margin-inline-end:7px;width:20px}.uppy-ProviderBrowserItem-checkbox{cursor:pointer;flex-shrink:0;position:relative}.uppy-ProviderBrowserItem-checkbox:disabled,.uppy-ProviderBrowserItem-checkbox:disabled:after{cursor:default}[data-uppy-theme=dark] .uppy-ProviderBrowserItem-checkbox{background-color:#1f1f1f;border-color:#939393}[data-uppy-theme=dark] .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox{background-color:#333}.uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox:after{border-bottom:2px solid #eaeaea;border-left:2px solid #eaeaea;content:"";cursor:pointer;position:absolute;transform:rotate(-45deg)}.uppy-ProviderBrowserItem--is-partial .uppy-ProviderBrowserItem-checkbox:after{background-color:#eaeaea!important;content:""!important;height:2px!important;left:20%!important;position:absolute!important;right:20%!important;top:50%!important;transform:translateY(-50%)!important}.uppy-SearchProvider{align-items:center;display:flex;flex:1;flex-direction:column;height:100%;justify-content:center;width:100%}[data-uppy-theme=dark] .uppy-SearchProvider{background-color:#1f1f1f}.uppy-SearchProvider-input{margin-bottom:15px;max-width:650px;width:90%}.uppy-size--md .uppy-SearchProvider-input{margin-bottom:20px}.uppy-SearchProvider-input::-webkit-search-cancel-button{display:none}.uppy-SearchProvider-searchButton{padding:13px 25px}.uppy-size--md .uppy-SearchProvider-searchButton{padding:13px 30px}.uppy-DashboardContent-panelBody{align-items:center;display:flex;flex:1;justify-content:center}[data-uppy-theme=dark] .uppy-DashboardContent-panelBody{background-color:#1f1f1f}.uppy-Provider-auth,.uppy-Provider-empty,.uppy-Provider-error,.uppy-Provider-loading{align-items:center;color:#939393;display:flex;flex:1;flex-flow:column wrap;justify-content:center}.uppy-Provider-empty{color:#939393}.uppy-Provider-authIcon svg{height:75px;width:100px}.uppy-Provider-authTitle{color:#757575;font-size:17px;font-weight:400;line-height:1.4;margin-bottom:30px;max-width:500px;padding:0 15px;text-align:center}.uppy-size--md .uppy-Provider-authTitle{font-size:20px}[data-uppy-theme=dark] .uppy-Provider-authTitle{color:#cfcfcf}.uppy-Provider-btn-google{align-items:center;background:#4285f4;display:flex;padding:8px 12px!important}.uppy-Provider-btn-google:hover{background-color:#1266f1}.uppy-Provider-btn-google:focus{box-shadow:0 0 0 3px #4285f466;outline:none}.uppy-Provider-btn-google svg{margin-right:8px}.uppy-Provider-breadcrumbs{color:#525252;flex:1;font-size:12px;margin-bottom:10px;text-align:start}.uppy-size--md .uppy-Provider-breadcrumbs{margin-bottom:0}[data-uppy-theme=dark] .uppy-Provider-breadcrumbs{color:#eaeaea}.uppy-Provider-breadcrumbsIcon{color:#525252;display:inline-block;line-height:1;margin-inline-end:4px;vertical-align:middle}.uppy-Provider-breadcrumbsIcon svg{height:13px;width:13px;fill:#525252}.uppy-Provider-breadcrumbs button{border-radius:3px;display:inline-block;line-height:inherit;padding:4px}.uppy-Provider-breadcrumbs button:focus{outline:none}.uppy-Provider-breadcrumbs button::-moz-focus-inner{border:0}.uppy-Provider-breadcrumbs button:hover{color:#0e51a0}.uppy-Provider-breadcrumbs button:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-Provider-breadcrumbs button:focus{background-color:#333}.uppy-Provider-breadcrumbs button:not(:last-of-type){text-decoration:underline}.uppy-Provider-breadcrumbs button:last-of-type{color:#333;cursor:normal;font-weight:500;pointer-events:none}.uppy-Provider-breadcrumbs button:hover{cursor:pointer}[data-uppy-theme=dark] .uppy-Provider-breadcrumbs button{color:#eaeaea}.uppy-ProviderBrowser{display:flex;flex:1;flex-direction:column;font-size:14px;font-weight:400;height:100%}.uppy-ProviderBrowser-user{color:#333;font-weight:500;margin:0 8px 0 0}[data-uppy-theme=dark] .uppy-ProviderBrowser-user{color:#eaeaea}.uppy-ProviderBrowser-user:after{color:#939393;content:"·";font-weight:400;inset-inline-start:4px;position:relative}.uppy-ProviderBrowser-header{border-bottom:1px solid #eaeaea;position:relative;z-index:1001}[data-uppy-theme=dark] .uppy-ProviderBrowser-header{border-bottom:1px solid #333}.uppy-ProviderBrowser-headerBar{background-color:#fafafa;color:#757575;font-size:12px;line-height:1.4;padding:7px 15px;z-index:1001}.uppy-size--md .uppy-ProviderBrowser-headerBar{align-items:center;display:flex}[data-uppy-theme=dark] .uppy-ProviderBrowser-headerBar{background-color:#1f1f1f}.uppy-ProviderBrowser-headerBar--simple{display:block;justify-content:center;text-align:center}.uppy-ProviderBrowser-headerBar--simple .uppy-Provider-breadcrumbsWrap{display:inline-block;flex:none;vertical-align:middle}.uppy-ProviderBrowser-searchFilter{align-items:center;display:flex;height:30px;margin-bottom:15px;margin-top:15px;padding-left:8px;padding-right:8px;position:relative;width:100%}.uppy-ProviderBrowser-searchFilterInput{background-color:#eaeaea;border:0;border-radius:4px;color:#333;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;font-size:13px;height:30px;line-height:1.4;outline:0;padding-inline-end:30px;padding-inline-start:30px;width:100%;z-index:1001}.uppy-ProviderBrowser-searchFilterInput::-webkit-search-cancel-button{display:none}[data-uppy-theme=dark] .uppy-ProviderBrowser-searchFilterInput{background-color:#1f1f1f;color:#eaeaea}.uppy-ProviderBrowser-searchFilterInput:focus{background-color:#cfcfcf;border:0}[data-uppy-theme=dark] .uppy-ProviderBrowser-searchFilterInput:focus{background-color:#333}.uppy-ProviderBrowser-searchFilterIcon{color:#757575;height:12px;inset-inline-start:16px;position:absolute;width:12px;z-index:1002}.uppy-ProviderBrowser-searchFilterInput::-moz-placeholder{color:#939393;opacity:1}.uppy-ProviderBrowser-searchFilterInput::placeholder{color:#939393;opacity:1}.uppy-ProviderBrowser-searchFilterReset{border-radius:3px;color:#939393;cursor:pointer;height:22px;inset-inline-end:16px;padding:6px;position:absolute;width:22px;z-index:1002}.uppy-ProviderBrowser-searchFilterReset:focus{outline:none}.uppy-ProviderBrowser-searchFilterReset::-moz-focus-inner{border:0}.uppy-ProviderBrowser-searchFilterReset:focus{box-shadow:0 0 0 3px #1269cf80}.uppy-ProviderBrowser-searchFilterReset:hover{color:#757575}.uppy-ProviderBrowser-searchFilterReset svg{vertical-align:text-top}.uppy-ProviderBrowser-userLogout{border-radius:3px;color:#1269cf;cursor:pointer;line-height:inherit;padding:4px}.uppy-ProviderBrowser-userLogout:focus{outline:none}.uppy-ProviderBrowser-userLogout::-moz-focus-inner{border:0}.uppy-ProviderBrowser-userLogout:hover{color:#0e51a0}.uppy-ProviderBrowser-userLogout:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-ProviderBrowser-userLogout:focus{background-color:#333}.uppy-ProviderBrowser-userLogout:hover{text-decoration:underline}[data-uppy-theme=dark] .uppy-ProviderBrowser-userLogout{color:#eaeaea}.uppy-ProviderBrowser-body{flex:1;position:relative}.uppy-ProviderBrowser-list{background-color:#fff;border-spacing:0;display:block;flex:1;height:100%;inset:0;list-style:none;margin:0;overflow-x:hidden;overflow-y:auto;padding:0;position:absolute;width:100%;-webkit-overflow-scrolling:touch}[data-uppy-theme=dark] .uppy-ProviderBrowser-list{background-color:#1f1f1f}.uppy-ProviderBrowser-list:focus{outline:none}.uppy-ProviderBrowserItem-inner{cursor:pointer;font-size:13px;font-weight:500}.uppy-ProviderBrowser-footer{align-items:center;background-color:#fff;border-top:1px solid #eaeaea;display:flex;justify-content:space-between;padding:15px}.uppy-ProviderBrowser-footer button{margin-inline-end:8px}[data-uppy-theme=dark] .uppy-ProviderBrowser-footer{background-color:#1f1f1f;border-top:1px solid #333}.uppy-ProviderBrowser-footer-buttons{flex-shrink:0}.uppy-ProviderBrowser-footer-error{color:#e32437;line-height:18px}@media(max-width:426px){.uppy-ProviderBrowser-footer{align-items:stretch;flex-direction:column-reverse}.uppy-ProviderBrowser-footer-error{padding-bottom:10px}}.picker-dialog-bg{z-index:20000!important}.picker-dialog{z-index:20001!important}.uppy-Dashboard-Item-previewInnerWrap{align-items:center;border-radius:3px;box-shadow:0 0 2px #0006;display:flex;flex-direction:column;height:100%;justify-content:center;overflow:hidden;position:relative;width:100%}.uppy-size--md .uppy-Dashboard-Item-previewInnerWrap{box-shadow:0 1px 2px #00000026}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-previewInnerWrap{box-shadow:none}.uppy-Dashboard-Item-previewInnerWrap:after{background-color:#000000a6;content:"";display:none;inset:0;position:absolute;z-index:1001}.uppy-Dashboard-Item-previewLink{inset:0;position:absolute;z-index:1002}.uppy-Dashboard-Item-previewLink:focus{box-shadow:inset 0 0 0 3px #579df0}[data-uppy-theme=dark] .uppy-Dashboard-Item-previewLink:focus{box-shadow:inset 0 0 0 3px #016c8d}.uppy-Dashboard-Item-preview img.uppy-Dashboard-Item-previewImg{border-radius:3px;height:100%;-o-object-fit:cover;object-fit:cover;transform:translateZ(0);width:100%}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-preview img.uppy-Dashboard-Item-previewImg{height:auto;max-height:100%;max-width:100%;-o-object-fit:contain;object-fit:contain;padding:10px;width:auto}.uppy-Dashboard-Item-progress{color:#fff;left:50%;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);transition:all .35 ease;width:120px;z-index:1002}.uppy-Dashboard-Item-progressIndicator{color:#fff;display:inline-block;height:38px;opacity:.9;width:38px}.uppy-size--md .uppy-Dashboard-Item-progressIndicator{height:55px;width:55px}button.uppy-Dashboard-Item-progressIndicator{cursor:pointer}button.uppy-Dashboard-Item-progressIndicator:focus{outline:none}button.uppy-Dashboard-Item-progressIndicator::-moz-focus-inner{border:0}button.uppy-Dashboard-Item-progressIndicator:focus .uppy-Dashboard-Item-progressIcon--bg,button.uppy-Dashboard-Item-progressIndicator:focus .uppy-Dashboard-Item-progressIcon--retry{fill:#579df0}.uppy-Dashboard-Item-progressIcon--circle{height:100%;width:100%}.uppy-Dashboard-Item-progressIcon--bg{stroke:#fff6}.uppy-Dashboard-Item-progressIcon--progress{transition:stroke-dashoffset .5s ease-out;stroke:#fff}.uppy-Dashboard-Item-progressIcon--play{transition:all .2s;fill:#fff;stroke:#fff}.uppy-Dashboard-Item-progressIcon--cancel{transition:all .2s;fill:#fff}.uppy-Dashboard-Item-progressIcon--pause{transition:all .2s;fill:#fff;stroke:#fff}.uppy-Dashboard-Item-progressIcon--check{transition:all .2s;fill:#fff}.uppy-Dashboard-Item-progressIcon--retry{fill:#fff}.uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progress{inset-inline-end:-8px;inset-inline-start:auto;top:-9px;transform:none;width:auto}.uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-progressIndicator{height:18px;width:18px}.uppy-size--md .uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-progressIndicator{height:28px;width:28px}.uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progressIndicator{height:18px;opacity:1;width:18px}.uppy-size--md .uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progressIndicator{height:22px;width:22px}.uppy-Dashboard-Item.is-processing .uppy-Dashboard-Item-progress{opacity:0}.uppy-Dashboard-Item-fileInfo{padding-inline-end:5px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfo{padding-inline-end:10px}.uppy-size--md.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfo{padding-inline-end:15px}.uppy-Dashboard-Item-name{font-size:12px;font-weight:500;line-height:1.3;margin-bottom:5px;word-wrap:anywhere;word-break:break-all}[data-uppy-theme=dark] .uppy-Dashboard-Item-name{color:#eaeaea}.uppy-size--md.uppy-Dashboard--singleFile .uppy-Dashboard-Item-name{font-size:14px;line-height:1.4}.uppy-Dashboard-Item-fileName{align-items:baseline;display:flex}.uppy-Dashboard-Item-fileName button{margin-left:5px}.uppy-Dashboard-Item-author{color:#757575;display:inline-block;font-size:11px;font-weight:400;line-height:1;margin-bottom:5px;vertical-align:bottom}.uppy-Dashboard-Item-author a{color:#757575}.uppy-Dashboard-Item-status{color:#757575;font-size:11px;font-weight:400;line-height:1}[data-uppy-theme=dark] .uppy-Dashboard-Item-status{color:#bbb}.uppy-Dashboard-Item-statusSize{display:inline-block;margin-bottom:5px;text-transform:uppercase;vertical-align:bottom}.uppy-Dashboard-Item-reSelect{color:#1269cf;font-family:inherit;font-size:inherit;font-weight:600}.uppy-Dashboard-Item-errorMessage{background-color:#fdeff1;color:#a51523;font-size:11px;font-weight:500;line-height:1.3;padding:5px 6px}.uppy-Dashboard-Item-errorMessageBtn{color:#a51523;cursor:pointer;font-size:11px;font-weight:500;text-decoration:underline}.uppy-Dashboard-Item-preview .uppy-Dashboard-Item-errorMessage{display:none}.uppy-size--md .uppy-Dashboard-Item-preview .uppy-Dashboard-Item-errorMessage{border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-top:1px solid #f7c2c8;bottom:0;display:block;left:0;line-height:1.4;padding:6px 8px;position:absolute;right:0}.uppy-Dashboard-Item-fileInfo .uppy-Dashboard-Item-errorMessage{border:1px solid #f7c2c8;border-radius:3px;display:inline-block;position:static}.uppy-size--md .uppy-Dashboard-Item-fileInfo .uppy-Dashboard-Item-errorMessage{display:none}.uppy-Dashboard-Item-action{color:#939393;cursor:pointer}.uppy-Dashboard-Item-action:focus{outline:none}.uppy-Dashboard-Item-action::-moz-focus-inner{border:0}.uppy-Dashboard-Item-action:focus{box-shadow:0 0 0 3px #1269cf80}.uppy-Dashboard-Item-action:hover{color:#1f1f1f;opacity:1}[data-uppy-theme=dark] .uppy-Dashboard-Item-action{color:#cfcfcf}[data-uppy-theme=dark] .uppy-Dashboard-Item-action:focus{outline:none}[data-uppy-theme=dark] .uppy-Dashboard-Item-action::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-Dashboard-Item-action:focus{box-shadow:0 0 0 2px #aae1ffd9}[data-uppy-theme=dark] .uppy-Dashboard-Item-action:hover{color:#eaeaea}.uppy-Dashboard-Item-action--remove{color:#1f1f1f;opacity:.95}.uppy-Dashboard-Item-action--remove:hover{color:#000;opacity:1}.uppy-size--md .uppy-Dashboard-Item-action--remove{height:18px;inset-inline-end:-8px;padding:0;position:absolute;top:-8px;width:18px;z-index:1002}.uppy-size--md .uppy-Dashboard-Item-action--remove:focus{border-radius:50%}.uppy-Dashboard--singleFile.uppy-size--height-md .uppy-Dashboard-Item-action--remove{inset-inline-end:8px;position:absolute;top:8px}[data-uppy-theme=dark] .uppy-Dashboard-Item-action--remove{color:#525252}[data-uppy-theme=dark] .uppy-Dashboard-Item-action--remove:hover{color:#333}.uppy-Dashboard:not(.uppy-size--md):not(.uppy-Dashboard--singleFile.uppy-size--height-md) .uppy-Dashboard-Item-actionWrapper{align-items:center;display:flex}.uppy-Dashboard:not(.uppy-size--md):not(.uppy-Dashboard--singleFile.uppy-size--height-md) .uppy-Dashboard-Item-action{height:22px;margin-left:3px;padding:3px;width:22px}.uppy-Dashboard:not(.uppy-size--md):not(.uppy-Dashboard--singleFile.uppy-size--height-md) .uppy-Dashboard-Item-action:focus{border-radius:3px}.uppy-size--md .uppy-Dashboard-Item-action--copyLink,.uppy-size--md .uppy-Dashboard-Item-action--edit{height:16px;padding:0;width:16px}.uppy-size--md .uppy-Dashboard-Item-action--copyLink:focus,.uppy-size--md .uppy-Dashboard-Item-action--edit:focus{border-radius:3px}.uppy-Dashboard-Item{align-items:center;border-bottom:1px solid #eaeaea;display:flex;padding:10px}.uppy-Dashboard:not(.uppy-Dashboard--singleFile) .uppy-Dashboard-Item{padding-inline-end:0}[data-uppy-theme=dark] .uppy-Dashboard-Item{border-bottom:1px solid #333}.uppy-size--md .uppy-Dashboard-Item{border-bottom:0;display:block;float:inline-start;height:215px;margin:5px 15px;padding:0;position:relative;width:calc(33.333% - 30px)}.uppy-size--lg .uppy-Dashboard-Item{height:190px;margin:5px 15px;padding:0;width:calc(25% - 30px)}.uppy-size--xl .uppy-Dashboard-Item{height:210px;padding:0;width:calc(20% - 30px)}.uppy-Dashboard--singleFile .uppy-Dashboard-Item{border-bottom:0;display:flex;flex-direction:column;height:100%;max-width:400px;padding:15px;position:relative;width:100%}.uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-previewInnerWrap{opacity:.2}.uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-name{opacity:.7}.uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-preview:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='35' height='39' viewBox='0 0 35 39'%3E%3Cpath fill='%2523000' d='M1.708 38.66c1.709 0 3.417-3.417 6.834-3.417s5.125 3.417 8.61 3.417c3.348 0 5.056-3.417 8.473-3.417 4.305 0 5.125 3.417 6.833 3.417.889 0 1.709-.889 1.709-1.709v-19.68C34.167-5.757 0-5.757 0 17.271v19.68c0 .82.888 1.709 1.708 1.709m8.542-17.084a3.383 3.383 0 0 1-3.417-3.416 3.383 3.383 0 0 1 3.417-3.417 3.383 3.383 0 0 1 3.417 3.417 3.383 3.383 0 0 1-3.417 3.416m13.667 0A3.383 3.383 0 0 1 20.5 18.16a3.383 3.383 0 0 1 3.417-3.417 3.383 3.383 0 0 1 3.416 3.417 3.383 3.383 0 0 1-3.416 3.416'/%3E%3C/svg%3E");background-position:50% 10px;background-repeat:no-repeat;background-size:25px;content:"";inset:0;opacity:.5;position:absolute;z-index:1005}.uppy-size--md .uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-preview:before{background-position:50% 50%;background-size:40px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-preview:before{background-position:50% 50%;background-size:30%}.uppy-Dashboard-Item-preview{flex-grow:0;flex-shrink:0;height:50px;position:relative;width:50px}.uppy-size--md .uppy-Dashboard-Item-preview{height:140px;width:100%}.uppy-size--lg .uppy-Dashboard-Item-preview{height:120px}.uppy-size--xl .uppy-Dashboard-Item-preview{height:140px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-preview{flex-grow:1;max-height:75%;width:100%}.uppy-Dashboard--singleFile.uppy-size--md .uppy-Dashboard-Item-preview{max-height:100%}.uppy-Dashboard-Item-fileInfoAndButtons{align-items:center;display:flex;flex-grow:1;justify-content:space-between;padding-inline-end:8px;padding-inline-start:12px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfoAndButtons,.uppy-size--md .uppy-Dashboard-Item-fileInfoAndButtons{align-items:flex-start;padding:9px 0 0}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfoAndButtons{flex-grow:0;width:100%}.uppy-Dashboard-Item-fileInfo{flex-grow:1;flex-shrink:1}.uppy-Dashboard-Item-actionWrapper{flex-grow:0;flex-shrink:0}.uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-previewInnerWrap:after,.uppy-Dashboard-Item.is-inprogress .uppy-Dashboard-Item-previewInnerWrap:after{display:block}.uppy-Dashboard-Item-errorDetails{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#939393;border:none;border-radius:50%;color:#fff;cursor:help;flex-shrink:0;font-size:10px;font-weight:600;height:13px;inset-inline-start:2px;line-height:12px;position:relative;text-align:center;top:0;width:13px}.uppy-Dashboard-Item-errorDetails:after{line-height:1.3;word-wrap:break-word}.uppy-Dashboard-FileCard{background-color:#fff;border-radius:5px;box-shadow:0 0 10px 4px #0000001a;display:flex;flex-direction:column;height:100%;inset:0;position:absolute;width:100%;z-index:1005}.uppy-Dashboard-FileCard .uppy-DashboardContent-bar{border-top-left-radius:5px;border-top-right-radius:5px}.uppy-Dashboard-FileCard .uppy-Dashboard-FileCard-actions{border-bottom-left-radius:5px;border-bottom-right-radius:5px}.uppy-Dashboard-FileCard-inner{display:flex;flex-direction:column;flex-grow:1;flex-shrink:1;height:100%;min-height:0}.uppy-Dashboard-FileCard-preview{align-items:center;border-bottom:1px solid #eaeaea;display:flex;flex-grow:0;flex-shrink:1;height:60%;justify-content:center;min-height:0;position:relative}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-preview{background-color:#333;border-bottom:0}.uppy-Dashboard-FileCard-preview img.uppy-Dashboard-Item-previewImg{border-radius:3px;box-shadow:0 3px 20px #00000026;flex:0 0 auto;max-height:90%;max-width:90%;-o-object-fit:cover;object-fit:cover}.uppy-Dashboard-FileCard-edit{background-color:#00000080;border-radius:50px;color:#fff;font-size:13px;inset-inline-end:10px;padding:7px 15px;position:absolute;top:10px}.uppy-Dashboard-FileCard-edit:focus{outline:none}.uppy-Dashboard-FileCard-edit::-moz-focus-inner{border:0}.uppy-Dashboard-FileCard-edit:focus{box-shadow:0 0 0 3px #1269cf80}.uppy-Dashboard-FileCard-edit:hover{background-color:#000c}.uppy-Dashboard-FileCard-info{flex-grow:0;flex-shrink:0;height:40%;overflow-y:auto;padding:30px 20px 20px;-webkit-overflow-scrolling:touch}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-info{background-color:#1f1f1f}.uppy-Dashboard-FileCard-fieldset{border:0;font-size:0;margin:auto auto 12px;max-width:640px;padding:0}.uppy-Dashboard-FileCard-label{color:#525252;display:inline-block;font-size:12px;vertical-align:middle;width:22%}.uppy-size--md .uppy-Dashboard-FileCard-label{font-size:14px}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-label{color:#eaeaea}.uppy-Dashboard-FileCard-input{display:inline-block;vertical-align:middle;width:78%}.uppy-Dashboard-FileCard-actions{align-items:center;background-color:#fafafa;border-top:1px solid #eaeaea;display:flex;flex-grow:0;flex-shrink:0;height:55px;padding:0 15px}.uppy-size--md .uppy-Dashboard-FileCard-actions{height:65px}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-actions{background-color:#1f1f1f;border-top:1px solid #333}.uppy-Dashboard-FileCard-actionsBtn{margin-inline-end:10px}.uppy-Informer{bottom:60px;left:0;position:absolute;right:0;text-align:center;z-index:1005}.uppy-Informer span>div{margin-bottom:6px}.uppy-Informer-animated{opacity:0;transform:translateY(350%);transition:all .3s ease-in;z-index:-1000}.uppy-Informer p{background-color:#757575;border-radius:18px;color:#fff;display:inline-block;font-size:12px;font-weight:400;line-height:1.4;margin:0;max-width:90%;padding:6px 15px}.uppy-size--md .uppy-Informer p{font-size:14px;line-height:1.3;max-width:500px;padding:10px 20px}[data-uppy-theme=dark] .uppy-Informer p{background-color:#333}.uppy-Informer p span{background-color:#fff;border-radius:50%;color:#525252;display:inline-block;font-size:10px;height:13px;inset-inline-start:3px;line-height:12px;margin-inline-start:-1px;position:relative;top:-1px;vertical-align:middle;width:13px}.uppy-Informer p span:hover{cursor:help}.uppy-Informer p span:after{line-height:1.3;word-wrap:break-word}.uppy-Root [aria-label][role~=tooltip]{position:relative}.uppy-Root [aria-label][role~=tooltip]:after,.uppy-Root [aria-label][role~=tooltip]:before{backface-visibility:hidden;box-sizing:border-box;opacity:0;pointer-events:none;position:absolute;transform:translateZ(0);transform-origin:top;transition:all var(--microtip-transition-duration,.18s) var(--microtip-transition-easing,ease-in-out) var(--microtip-transition-delay,0s);will-change:transform;z-index:10}.uppy-Root [aria-label][role~=tooltip]:before{background-size:100% auto!important;content:""}.uppy-Root [aria-label][role~=tooltip]:after{background:#111111e6;border-radius:4px;box-sizing:initial;color:#fff;content:attr(aria-label);font-size:var(--microtip-font-size,13px);font-weight:var(--microtip-font-weight,normal);padding:.5em 1em;text-transform:var(--microtip-text-transform,none);white-space:nowrap}.uppy-Root [aria-label][role~=tooltip]:focus:after,.uppy-Root [aria-label][role~=tooltip]:focus:before,.uppy-Root [aria-label][role~=tooltip]:hover:after,.uppy-Root [aria-label][role~=tooltip]:hover:before{opacity:1;pointer-events:auto}.uppy-Root [role~=tooltip][data-microtip-position|=top]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M2.658 0h32.004c-6 0-11.627 12.002-16.002 12.002S8.594 0 2.658 0'/%3E%3C/svg%3E") no-repeat;bottom:100%;height:6px;left:50%;margin-bottom:5px;transform:translate3d(-50%,0,0);width:18px}.uppy-Root [role~=tooltip][data-microtip-position|=top]:after{bottom:100%;left:50%;margin-bottom:11px;transform:translate3d(-50%,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=top]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position|=top]:hover:before{transform:translate3d(-50%,-5px,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-left]:after{bottom:100%;transform:translate3d(calc(-100% + 16px),0,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-left]:hover:after{transform:translate3d(calc(-100% + 16px),-5px,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-right]:after{bottom:100%;transform:translate3d(-16px,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-right]:hover:after{transform:translate3d(-16px,-5px,0)}.uppy-Root [role~=tooltip][data-microtip-position|=bottom]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M33.342 12H1.338c6 0 11.627-12.002 16.002-12.002S27.406 12 33.342 12'/%3E%3C/svg%3E") no-repeat;bottom:auto;height:6px;left:50%;margin-bottom:0;margin-top:5px;top:100%;transform:translate3d(-50%,-10px,0);width:18px}.uppy-Root [role~=tooltip][data-microtip-position|=bottom]:after{left:50%;margin-top:11px;top:100%;transform:translate3d(-50%,-10px,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position|=bottom]:hover:before{transform:translate3d(-50%,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-left]:after{top:100%;transform:translate3d(calc(-100% + 16px),-10px,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-left]:hover:after{transform:translate3d(calc(-100% + 16px),0,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-right]:after{top:100%;transform:translate3d(-16px,-10px,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-right]:hover:after{transform:translate3d(-16px,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=left]:after,.uppy-Root [role~=tooltip][data-microtip-position=left]:before{inset:50% 100% auto auto;transform:translate3d(10px,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-position=left]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='36'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M0 33.342V1.338c0 6 12.002 11.627 12.002 16.002S0 27.406 0 33.342'/%3E%3C/svg%3E") no-repeat;height:18px;margin-bottom:0;margin-right:5px;width:6px}.uppy-Root [role~=tooltip][data-microtip-position=left]:after{margin-right:11px}.uppy-Root [role~=tooltip][data-microtip-position=left]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position=left]:hover:before{transform:translate3d(0,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-position=right]:after,.uppy-Root [role~=tooltip][data-microtip-position=right]:before{bottom:auto;left:100%;top:50%;transform:translate3d(-10px,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-position=right]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='36'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M12 2.658v32.004c0-6-12.002-11.627-12.002-16.002S12 8.594 12 2.658'/%3E%3C/svg%3E") no-repeat;height:18px;margin-bottom:0;margin-left:5px;width:6px}.uppy-Root [role~=tooltip][data-microtip-position=right]:after{margin-left:11px}.uppy-Root [role~=tooltip][data-microtip-position=right]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position=right]:hover:before{transform:translate3d(0,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-size=small]:after{white-space:normal;width:80px}.uppy-Root [role~=tooltip][data-microtip-size=medium]:after{white-space:normal;width:150px}.uppy-Root [role~=tooltip][data-microtip-size=large]:after{white-space:normal;width:260px}.uppy-StatusBar{background-color:#fff;color:#fff;display:flex;font-size:12px;font-weight:400;height:46px;line-height:40px;position:relative;transition:height .2s;z-index:1001}[data-uppy-theme=dark] .uppy-StatusBar{background-color:#1f1f1f}.uppy-StatusBar:before{background-color:#eaeaea;content:"";height:2px;inset:0;position:absolute;width:100%}[data-uppy-theme=dark] .uppy-StatusBar:before{background-color:#757575}.uppy-StatusBar[aria-hidden=true]{height:0;overflow-y:hidden}.uppy-StatusBar.is-complete .uppy-StatusBar-progress{background-color:#1bb240}.uppy-StatusBar.is-error .uppy-StatusBar-progress{background-color:#e32437}.uppy-StatusBar.is-complete .uppy-StatusBar-statusIndicator{color:#1bb240}.uppy-StatusBar.is-error .uppy-StatusBar-statusIndicator{color:#e32437}.uppy-StatusBar:not([aria-hidden=true]).is-waiting{background-color:#fff;border-top:1px solid #eaeaea;height:65px}[data-uppy-theme=dark] .uppy-StatusBar:not([aria-hidden=true]).is-waiting{background-color:#1f1f1f;border-top:1px solid #333}.uppy-StatusBar-progress{background-color:#1269cf;height:2px;position:absolute;transition:background-color,width .3s ease-out;z-index:1001}.uppy-StatusBar-progress.is-indeterminate{animation:uppy-StatusBar-ProgressStripes 1s linear infinite;background-image:linear-gradient(45deg,#0000004d 25%,#0000 0 50%,#0000004d 0 75%,#0000 0,#0000);background-size:64px 64px}@keyframes uppy-StatusBar-ProgressStripes{0%{background-position:0 0}to{background-position:64px 0}}.uppy-StatusBar.is-postprocessing .uppy-StatusBar-progress,.uppy-StatusBar.is-preprocessing .uppy-StatusBar-progress{background-color:#f6a623}.uppy-StatusBar.is-waiting .uppy-StatusBar-progress{display:none}.uppy-StatusBar-content{align-items:center;color:#333;display:flex;height:100%;padding-inline-start:10px;position:relative;text-overflow:ellipsis;white-space:nowrap;z-index:1002}.uppy-size--md .uppy-StatusBar-content{padding-inline-start:15px}[data-uppy-theme=dark] .uppy-StatusBar-content{color:#eaeaea}.uppy-StatusBar-status{display:flex;flex-direction:column;font-weight:400;justify-content:center;line-height:1.4;padding-inline-end:.3em}.uppy-StatusBar-statusPrimary{display:flex;font-weight:500;line-height:1}.uppy-StatusBar-statusPrimary button.uppy-StatusBar-details{margin-left:5px}[data-uppy-theme=dark] .uppy-StatusBar-statusPrimary{color:#eaeaea}.uppy-StatusBar-statusSecondary{color:#757575;display:inline-block;font-size:11px;line-height:1.2;margin-top:1px;white-space:nowrap}[data-uppy-theme=dark] .uppy-StatusBar-statusSecondary{color:#bbb}.uppy-StatusBar-statusSecondaryHint{display:inline-block;line-height:1;margin-inline-end:5px;vertical-align:middle}.uppy-size--md .uppy-StatusBar-statusSecondaryHint{margin-inline-end:8px}.uppy-StatusBar-statusIndicator{color:#525252;margin-inline-end:7px;position:relative;top:1px}.uppy-StatusBar-statusIndicator svg{vertical-align:text-bottom}.uppy-StatusBar-actions{align-items:center;bottom:0;display:flex;inset-inline-end:10px;position:absolute;top:0;z-index:1004}.uppy-StatusBar.is-waiting .uppy-StatusBar-actions{background-color:#fafafa;height:100%;padding:0 15px;position:static;width:100%}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actions{background-color:#1f1f1f}.uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts{flex-direction:column;height:90px}.uppy-size--md .uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts{flex-direction:row;height:65px}.uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts .uppy-StatusBar-actions{flex-direction:column;justify-content:center}.uppy-size--md .uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts .uppy-StatusBar-actions{flex-direction:row;justify-content:normal}.uppy-StatusBar-actionCircleBtn{cursor:pointer;line-height:1;margin:3px;opacity:.9}.uppy-StatusBar-actionCircleBtn:focus{outline:none}.uppy-StatusBar-actionCircleBtn::-moz-focus-inner{border:0}.uppy-StatusBar-actionCircleBtn:focus{box-shadow:0 0 0 3px #1269cf80}[data-uppy-theme=dark] .uppy-StatusBar-actionCircleBtn:focus{outline:none}[data-uppy-theme=dark] .uppy-StatusBar-actionCircleBtn::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-StatusBar-actionCircleBtn:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-StatusBar-actionCircleBtn:hover{opacity:1}.uppy-StatusBar-actionCircleBtn:focus{border-radius:50%}.uppy-StatusBar-actionCircleBtn svg{vertical-align:bottom}.uppy-StatusBar-actionBtn{color:#1269cf;display:inline-block;font-size:10px;line-height:inherit;vertical-align:middle}.uppy-size--md .uppy-StatusBar-actionBtn{font-size:11px}.uppy-StatusBar-actionBtn--disabled{opacity:.4}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--disabled{opacity:.7}.uppy-StatusBar-actionBtn--retry{background-color:#ff4b23;border-radius:8px;color:#fff;height:16px;line-height:1;margin-inline-end:6px;padding:1px 6px 3px 18px;position:relative}.uppy-StatusBar-actionBtn--retry:focus{outline:none}.uppy-StatusBar-actionBtn--retry::-moz-focus-inner{border:0}.uppy-StatusBar-actionBtn--retry:focus{box-shadow:0 0 0 3px #1269cf80}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--retry:focus{outline:none}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--retry::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--retry:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-StatusBar-actionBtn--retry:hover{background-color:#f92d00}.uppy-StatusBar-actionBtn--retry svg{inset-inline-start:6px;position:absolute;top:3px}.uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload{background-color:#1bb240;color:#fff;font-size:14px;line-height:1;padding:15px 10px;width:100%}.uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload:hover{background-color:#189c38}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload{background-color:#1c8b37}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload:hover{background-color:#18762f}.uppy-size--md .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload{padding:13px 22px;width:auto}.uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload.uppy-StatusBar-actionBtn--disabled:hover{background-color:#1bb240;cursor:not-allowed}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload.uppy-StatusBar-actionBtn--disabled:hover{background-color:#1c8b37}.uppy-StatusBar:not(.is-waiting) .uppy-StatusBar-actionBtn--upload{background-color:initial;color:#1269cf}.uppy-StatusBar-actionBtn--uploadNewlyAdded{border-radius:3px;padding-inline-end:3px;padding-bottom:1px;padding-inline-start:3px}.uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{outline:none}.uppy-StatusBar-actionBtn--uploadNewlyAdded::-moz-focus-inner{border:0}.uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{box-shadow:0 0 0 3px #1269cf80}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{outline:none}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--uploadNewlyAdded::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-StatusBar.is-postprocessing .uppy-StatusBar-actionBtn--uploadNewlyAdded,.uppy-StatusBar.is-preprocessing .uppy-StatusBar-actionBtn--uploadNewlyAdded{display:none}.uppy-StatusBar-actionBtn--done{border-radius:3px;line-height:1;padding:7px 8px}.uppy-StatusBar-actionBtn--done:focus{outline:none}.uppy-StatusBar-actionBtn--done::-moz-focus-inner{border:0}.uppy-StatusBar-actionBtn--done:hover{color:#0e51a0}.uppy-StatusBar-actionBtn--done:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--done:focus{background-color:#333}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--done{color:#02baf2}.uppy-size--md .uppy-StatusBar-actionBtn--done{font-size:14px}.uppy-StatusBar-serviceMsg{color:#000;font-size:11px;line-height:1.1;padding-left:10px}.uppy-size--md .uppy-StatusBar-serviceMsg{font-size:14px;padding-left:15px}[data-uppy-theme=dark] .uppy-StatusBar-serviceMsg{color:#eaeaea}.uppy-StatusBar-serviceMsg-ghostsIcon{left:6px;opacity:.5;position:relative;top:2px;vertical-align:text-bottom;width:10px}.uppy-size--md .uppy-StatusBar-serviceMsg-ghostsIcon{left:10px;top:1px;width:15px}.uppy-StatusBar-details{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#939393;border-radius:50%;color:#fff;cursor:help;display:inline-block;font-size:10px;font-weight:600;height:13px;inset-inline-start:2px;line-height:12px;position:relative;text-align:center;top:0;vertical-align:middle;width:13px}.uppy-StatusBar-details:after{line-height:1.3;word-wrap:break-word}.uppy-StatusBar-spinner{animation-duration:1s;animation-iteration-count:infinite;animation-name:uppy-StatusBar-spinnerAnimation;animation-timing-function:linear;fill:#1269cf;margin-inline-end:10px}.uppy-StatusBar.is-postprocessing .uppy-StatusBar-spinner,.uppy-StatusBar.is-preprocessing .uppy-StatusBar-spinner{fill:#f6a623}@keyframes uppy-StatusBar-spinnerAnimation{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.uppy-transition-slideDownUp-enter{opacity:.01;transform:translate3d(0,-105%,0);transition:transform .25s ease-in-out,opacity .25s ease-in-out}.uppy-transition-slideDownUp-enter.uppy-transition-slideDownUp-enter-active{opacity:1;transform:translateZ(0)}.uppy-transition-slideDownUp-leave{opacity:1;transform:translateZ(0);transition:transform .25s ease-in-out,opacity .25s ease-in-out}.uppy-transition-slideDownUp-leave.uppy-transition-slideDownUp-leave-active{opacity:.01;transform:translate3d(0,-105%,0)}@keyframes uppy-Dashboard-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes uppy-Dashboard-fadeOut{0%{opacity:1}to{opacity:0}}@keyframes uppy-Dashboard-slideDownAndFadeIn{0%{opacity:0;transform:translate3d(-50%,-70%,0)}to{opacity:1;transform:translate3d(-50%,-50%,0)}}@keyframes uppy-Dashboard-slideDownAndFadeIn--small{0%{opacity:0;transform:translate3d(0,-20%,0)}to{opacity:1;transform:translateZ(0)}}@keyframes uppy-Dashboard-slideUpFadeOut{0%{opacity:1;transform:translate3d(-50%,-50%,0)}to{opacity:0;transform:translate3d(-50%,-70%,0)}}@keyframes uppy-Dashboard-slideUpFadeOut--small{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20%,0)}}.uppy-Dashboard--modal{z-index:1001}.uppy-Dashboard--modal[aria-hidden=true]{display:none}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideDownAndFadeIn--small .3s cubic-bezier(0,0,.2,1)}@media only screen and (min-width:820px){.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideDownAndFadeIn .3s cubic-bezier(0,0,.2,1)}}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose>.uppy-Dashboard-overlay{animation:uppy-Dashboard-fadeIn .3s cubic-bezier(0,0,.2,1)}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose.uppy-Dashboard--isClosing>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideUpFadeOut--small .3s cubic-bezier(0,0,.2,1)}@media only screen and (min-width:820px){.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose.uppy-Dashboard--isClosing>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideUpFadeOut .3s cubic-bezier(0,0,.2,1)}}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose.uppy-Dashboard--isClosing>.uppy-Dashboard-overlay{animation:uppy-Dashboard-fadeOut .3s cubic-bezier(0,0,.2,1)}.uppy-Dashboard-isFixed{height:100vh;overflow:hidden}.uppy-Dashboard--modal .uppy-Dashboard-overlay{background-color:#00000080;inset:0;position:fixed;z-index:1001}.uppy-Dashboard-inner{background-color:#f4f4f4;border:1px solid #eaeaea;border-radius:5px;max-height:100%;max-width:100%;outline:none;position:relative}.uppy-size--md .uppy-Dashboard-inner{min-height:auto}@media only screen and (min-width:820px){.uppy-Dashboard-inner{height:500px;width:650px}}.uppy-Dashboard--modal .uppy-Dashboard-inner{z-index:1002}[data-uppy-theme=dark] .uppy-Dashboard-inner{background-color:#1f1f1f}.uppy-Dashboard--isDisabled .uppy-Dashboard-inner{cursor:not-allowed}.uppy-Dashboard-innerWrap{border-radius:5px;display:flex;flex-direction:column;height:100%;opacity:0;overflow:hidden;position:relative}.uppy-Dashboard--isInnerWrapVisible .uppy-Dashboard-innerWrap{opacity:1}.uppy-Dashboard--isDisabled .uppy-Dashboard-innerWrap{cursor:not-allowed;filter:grayscale(100%);opacity:.6;-webkit-user-select:none;-moz-user-select:none;user-select:none}.uppy-Dashboard--isDisabled .uppy-ProviderIconBg{fill:#9f9f9f}.uppy-Dashboard--isDisabled [aria-disabled],.uppy-Dashboard--isDisabled [disabled]{cursor:not-allowed;pointer-events:none}.uppy-Dashboard--modal .uppy-Dashboard-inner{border:none;inset:35px 15px 15px;position:fixed}@media only screen and (min-width:820px){.uppy-Dashboard--modal .uppy-Dashboard-inner{box-shadow:0 5px 15px 4px #00000026;left:50%;right:auto;top:50%;transform:translate(-50%,-50%)}}.uppy-Dashboard-close{color:#ffffffe6;cursor:pointer;display:block;font-size:27px;inset-inline-end:-2px;position:absolute;top:-33px;z-index:1005}.uppy-Dashboard-close:focus{outline:none}.uppy-Dashboard-close::-moz-focus-inner{border:0}.uppy-Dashboard-close:focus{color:#6eabf2}@media only screen and (min-width:820px){.uppy-Dashboard-close{font-size:35px;inset-inline-end:-35px;top:-10px}}.uppy-Dashboard-serviceMsg{background-color:#fffbf7;border-bottom:1px solid #edd4b9;border-top:1px solid #edd4b9;font-size:12px;font-weight:500;line-height:1.3;padding:12px 0;position:relative;top:-1px;z-index:1004}.uppy-size--md .uppy-Dashboard-serviceMsg{font-size:14px;line-height:1.4}[data-uppy-theme=dark] .uppy-Dashboard-serviceMsg{background-color:#1f1f1f;border-bottom:1px solid #333;border-top:1px solid #333;color:#eaeaea}.uppy-Dashboard-serviceMsg-title{display:block;line-height:1;margin-bottom:4px;padding-left:42px}.uppy-Dashboard-serviceMsg-text{padding:0 15px}.uppy-Dashboard-serviceMsg-actionBtn{color:#1269cf;font-size:inherit;font-weight:inherit;vertical-align:initial}[data-uppy-theme=dark] .uppy-Dashboard-serviceMsg-actionBtn{color:#02baf2e6}.uppy-Dashboard-serviceMsg-icon{left:15px;position:absolute;top:10px}.uppy-Dashboard-AddFiles{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;position:relative;text-align:center}[data-uppy-drag-drop-supported=true] .uppy-Dashboard-AddFiles{border:1px dashed #dfdfdf;border-radius:3px;height:calc(100% - 14px);margin:7px}.uppy-Dashboard-AddFilesPanel .uppy-Dashboard-AddFiles{border:none;height:calc(100% - 54px)}.uppy-Dashboard--modal .uppy-Dashboard-AddFiles{border-color:#cfcfcf}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles{border-color:#757575}.uppy-Dashboard-AddFiles-info{display:none;margin-top:auto;padding-bottom:15px;padding-top:15px}.uppy-size--height-md .uppy-Dashboard-AddFiles-info{display:block}.uppy-size--md .uppy-Dashboard-AddFiles-info{bottom:25px;left:0;padding-bottom:0;padding-top:30px;position:absolute;right:0}[data-uppy-num-acquirers="0"] .uppy-Dashboard-AddFiles-info{margin-top:0}.uppy-Dashboard-browse{color:#1269cf;cursor:pointer}.uppy-Dashboard-browse:focus{outline:none}.uppy-Dashboard-browse::-moz-focus-inner{border:0}.uppy-Dashboard-browse:focus,.uppy-Dashboard-browse:hover{border-bottom:1px solid #1269cf}[data-uppy-theme=dark] .uppy-Dashboard-browse{color:#02baf2e6}[data-uppy-theme=dark] .uppy-Dashboard-browse:focus,[data-uppy-theme=dark] .uppy-Dashboard-browse:hover{border-bottom:1px solid #02baf2}.uppy-Dashboard-browseBtn{display:block;font-size:14px;font-weight:500;margin-bottom:5px;margin-top:8px;width:100%}.uppy-size--md .uppy-Dashboard-browseBtn{font-size:15px;margin:15px auto;padding:13px 44px;width:auto}.uppy-Dashboard-AddFiles-list{display:flex;flex:1;flex-direction:column;margin-top:2px;overflow-y:auto;padding:2px 0;width:100%;-webkit-overflow-scrolling:touch}.uppy-size--md .uppy-Dashboard-AddFiles-list{flex:none;flex-direction:row;flex-wrap:wrap;justify-content:center;margin-top:15px;max-width:600px;overflow-y:visible;padding-top:0}.uppy-DashboardTab{border-bottom:1px solid #eaeaea;text-align:center;width:100%}[data-uppy-theme=dark] .uppy-DashboardTab{border-bottom:1px solid #333}.uppy-size--md .uppy-DashboardTab{border-bottom:none;display:inline-block;margin-bottom:10px;width:auto}.uppy-DashboardTab-btn{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:initial;color:#525252;cursor:pointer;flex-direction:row;height:100%;justify-content:left;padding:12px 15px;width:100%}.uppy-DashboardTab-btn:focus{outline:none}.uppy-size--md .uppy-DashboardTab-btn{border-radius:5px;flex-direction:column;margin-inline-end:1px;padding:10px 3px;width:86px}[data-uppy-theme=dark] .uppy-DashboardTab-btn{color:#eaeaea}.uppy-DashboardTab-btn::-moz-focus-inner{border:0}.uppy-DashboardTab-btn:hover{background-color:#e9ecef}[data-uppy-theme=dark] .uppy-DashboardTab-btn:hover{background-color:#333}.uppy-DashboardTab-btn:active,.uppy-DashboardTab-btn:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-DashboardTab-btn:active,[data-uppy-theme=dark] .uppy-DashboardTab-btn:focus{background-color:#525252}.uppy-DashboardTab-btn svg{display:inline-block;max-height:100%;max-width:100%;overflow:hidden;transition:transform .15s ease-in-out;vertical-align:text-top}.uppy-DashboardTab-inner{align-items:center;background-color:#fff;border-radius:8px;box-shadow:0 1px 1px #0000001a,0 1px 2px #0000001a,0 2px 3px #00000005;display:flex;height:32px;justify-content:center;margin-inline-end:10px;width:32px}.uppy-size--md .uppy-DashboardTab-inner{margin-inline-end:0}[data-uppy-theme=dark] .uppy-DashboardTab-inner{background-color:#323232;box-shadow:0 1px 1px #0003,0 1px 2px #0003,0 2px 3px #00000014}.uppy-DashboardTab-name{font-size:14px;font-weight:400}.uppy-size--md .uppy-DashboardTab-name{font-size:12px;line-height:15px;margin-bottom:0;margin-top:8px}.uppy-DashboardTab-iconMyDevice{color:#1269cf}[data-uppy-theme=dark] .uppy-DashboardTab-iconMyDevice{color:#02baf2}.uppy-DashboardTab-iconBox{color:#0061d5}[data-uppy-theme=dark] .uppy-DashboardTab-iconBox{color:#eaeaea}.uppy-DashboardTab-iconDropbox{color:#0061fe}[data-uppy-theme=dark] .uppy-DashboardTab-iconDropbox{color:#eaeaea}.uppy-DashboardTab-iconUnsplash{color:#111}[data-uppy-theme=dark] .uppy-DashboardTab-iconUnsplash{color:#eaeaea}.uppy-DashboardTab-iconWebdav{color:#111}[data-uppy-theme=dark] .uppy-DashboardTab-iconWebdav{color:#eaeaea}.uppy-DashboardTab-iconScreenRec{color:#2c3e50}[data-uppy-theme=dark] .uppy-DashboardTab-iconScreenRec{color:#eaeaea}.uppy-DashboardTab-iconAudio{color:#8030a3}[data-uppy-theme=dark] .uppy-DashboardTab-iconAudio{color:#bf6ee3}.uppy-Dashboard-input{height:.1px;opacity:0;overflow:hidden;position:absolute;width:.1px;z-index:-1}.uppy-DashboardContent-bar{align-items:center;background-color:#fafafa;border-bottom:1px solid #eaeaea;display:flex;flex-shrink:0;height:40px;justify-content:space-between;padding:0 10px;position:relative;width:100%;z-index:1004}.uppy-size--md .uppy-DashboardContent-bar{height:50px;padding:0 15px}[data-uppy-theme=dark] .uppy-DashboardContent-bar{background-color:#1f1f1f;border-bottom:1px solid #333}.uppy-DashboardContent-title{font-size:12px;font-weight:500;left:0;line-height:40px;margin:auto;max-width:170px;overflow-x:hidden;position:absolute;right:0;text-align:center;text-overflow:ellipsis;top:0;white-space:nowrap;width:100%}.uppy-size--md .uppy-DashboardContent-title{font-size:14px;line-height:50px;max-width:300px}[data-uppy-theme=dark] .uppy-DashboardContent-title{color:#eaeaea}.uppy-DashboardContent-back,.uppy-DashboardContent-save{-webkit-appearance:none;background:none;border:0;border-radius:3px;color:inherit;color:#1269cf;cursor:pointer;font-family:inherit;font-size:inherit;font-size:12px;font-weight:400;line-height:1;margin:0;margin-inline-start:-6px;padding:7px 6px}.uppy-DashboardContent-back:focus,.uppy-DashboardContent-save:focus{outline:none}.uppy-DashboardContent-back::-moz-focus-inner,.uppy-DashboardContent-save::-moz-focus-inner{border:0}.uppy-DashboardContent-back:hover,.uppy-DashboardContent-save:hover{color:#0e51a0}.uppy-DashboardContent-back:focus,.uppy-DashboardContent-save:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-DashboardContent-back:focus,[data-uppy-theme=dark] .uppy-DashboardContent-save:focus{background-color:#333}.uppy-size--md .uppy-DashboardContent-back,.uppy-size--md .uppy-DashboardContent-save{font-size:14px}[data-uppy-theme=dark] .uppy-DashboardContent-back,[data-uppy-theme=dark] .uppy-DashboardContent-save{color:#02baf2}.uppy-DashboardContent-addMore{-webkit-appearance:none;background:none;border:0;border-radius:3px;color:inherit;color:#1269cf;cursor:pointer;font-family:inherit;font-size:inherit;font-weight:500;height:29px;line-height:1;margin:0;margin-inline-end:-5px;padding:7px 8px;width:29px}.uppy-DashboardContent-addMore:focus{outline:none}.uppy-DashboardContent-addMore::-moz-focus-inner{border:0}.uppy-DashboardContent-addMore:hover{color:#0e51a0}.uppy-DashboardContent-addMore:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-DashboardContent-addMore:focus{background-color:#333}.uppy-size--md .uppy-DashboardContent-addMore{font-size:14px;height:auto;margin-inline-end:-8px;width:auto}[data-uppy-theme=dark] .uppy-DashboardContent-addMore{color:#02baf2}.uppy-DashboardContent-addMore svg{margin-inline-end:4px;vertical-align:initial}.uppy-size--md .uppy-DashboardContent-addMore svg{height:11px;width:11px}.uppy-DashboardContent-addMoreCaption{display:none}.uppy-size--md .uppy-DashboardContent-addMoreCaption{display:inline}.uppy-DashboardContent-panel{background-color:#f5f5f5;flex:1}.uppy-Dashboard-AddFilesPanel,.uppy-DashboardContent-panel{border-radius:5px;display:flex;flex-direction:column;inset:0;overflow:hidden;position:absolute;z-index:1005}.uppy-Dashboard-AddFilesPanel{background:#fafafa;background:linear-gradient(0deg,#fafafa 35%,#fafafad9);box-shadow:0 0 10px 5px #00000026}[data-uppy-theme=dark] .uppy-Dashboard-AddFilesPanel{background-color:#333;background-image:linear-gradient(0deg,#1f1f1f 35%,#1f1f1fd9)}.uppy-Dashboard--isAddFilesPanelVisible .uppy-Dashboard-files{filter:blur(2px)}.uppy-Dashboard-progress{bottom:0;height:12%;left:0;position:absolute;width:100%}.uppy-Dashboard-progressBarContainer.is-active{height:100%;left:0;position:absolute;top:0;width:100%;z-index:1004}.uppy-Dashboard-filesContainer{flex:1;margin:0;overflow-y:hidden;position:relative}.uppy-Dashboard-filesContainer:after{clear:both;content:"";display:table}.uppy-Dashboard-files{flex:1;margin:0;overflow-y:auto;padding:0 0 10px;-webkit-overflow-scrolling:touch}.uppy-size--md .uppy-Dashboard-files{padding-top:10px}.uppy-Dashboard--singleFile .uppy-Dashboard-filesInner{align-items:center;display:flex;height:100%;justify-content:center}.uppy-Dashboard-dropFilesHereHint{align-items:center;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48'%3E%3Cpath fill='%231269CF' d='M24 1v1C11.85 2 2 11.85 2 24s9.85 22 22 22 22-9.85 22-22S36.15 2 24 2zm0 0V0c13.254 0 24 10.746 24 24S37.254 48 24 48 0 37.254 0 24 10.746 0 24 0zm7.707 19.293a.999.999 0 1 1-1.414 1.414L25 16.414V34a1 1 0 1 1-2 0V16.414l-5.293 5.293a.999.999 0 1 1-1.414-1.414l7-7a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E");background-position:50% 50%;background-repeat:no-repeat;border:1px dashed #1269cf;border-radius:3px;color:#757575;display:flex;font-size:16px;justify-content:center;inset:7px;padding-top:90px;position:absolute;text-align:center;visibility:hidden;z-index:2000}[data-uppy-theme=dark] .uppy-Dashboard-dropFilesHereHint{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48'%3E%3Cpath fill='%2302BAF2' d='M24 1v1C11.85 2 2 11.85 2 24s9.85 22 22 22 22-9.85 22-22S36.15 2 24 2zm0 0V0c13.254 0 24 10.746 24 24S37.254 48 24 48 0 37.254 0 24 10.746 0 24 0zm7.707 19.293a.999.999 0 1 1-1.414 1.414L25 16.414V34a1 1 0 1 1-2 0V16.414l-5.293 5.293a.999.999 0 1 1-1.414-1.414l7-7a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E");border-color:#02baf2;color:#bbb}.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-dropFilesHereHint{pointer-events:none;visibility:visible}.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-files,.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-progressindicators,.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-serviceMsg,.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-DashboardContent-bar{opacity:.15}.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-AddFiles{opacity:.03}.uppy-Dashboard-AddFiles-title{color:#000;font-size:17px;font-weight:500;line-height:1.35;margin-bottom:5px;margin-top:15px;padding:0 15px;text-align:inline-start;width:100%}.uppy-size--md .uppy-Dashboard-AddFiles-title{font-size:21px;font-weight:400;margin-top:5px;max-width:480px;padding:0 35px;text-align:center}[data-uppy-num-acquirers="0"] .uppy-Dashboard-AddFiles-title{text-align:center}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles-title{color:#eaeaea}.uppy-Dashboard-AddFiles-title button{font-weight:500}.uppy-size--md .uppy-Dashboard-AddFiles-title button{font-weight:400}.uppy-Dashboard-note{color:#757575;font-size:14px;line-height:1.25;margin:auto;max-width:350px;padding:0 15px;text-align:center}.uppy-size--md .uppy-Dashboard-note{line-height:1.35;max-width:600px}[data-uppy-theme=dark] .uppy-Dashboard-note{color:#cfcfcf}a.uppy-Dashboard-poweredBy{color:#939393;display:inline-block;font-size:11px;margin-top:8px;text-align:center;text-decoration:none}.uppy-Dashboard-poweredByIcon{margin-left:1px;margin-right:1px;opacity:.9;position:relative;top:1px;vertical-align:text-top;fill:none;stroke:#939393}.uppy-Dashboard-Item-previewIcon{height:25px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:25px;z-index:100}.uppy-size--md .uppy-Dashboard-Item-previewIcon{height:38px;width:38px}.uppy-Dashboard-Item-previewIcon svg{height:100%;width:100%}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-previewIcon{height:100%;max-height:60%;max-width:60%;width:100%}.uppy-Dashboard-Item-previewIconWrap{height:76px;max-height:75%;position:relative}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-previewIconWrap{height:100%;width:100%}.uppy-Dashboard-Item-previewIconBg{filter:drop-shadow(rgba(0,0,0,.1) 0 1px 1px);height:100%;width:100%}.uppy-Dashboard-upload{height:50px;position:relative;width:50px}.uppy-size--md .uppy-Dashboard-upload{height:60px;width:60px}.uppy-Dashboard-upload .uppy-c-icon{position:relative;top:1px;width:50%}.uppy-Dashboard-uploadCount{background-color:#1bb240;border-radius:50%;color:#fff;font-size:8px;height:16px;inset-inline-end:-12px;line-height:16px;position:absolute;top:-12px;width:16px}.uppy-size--md .uppy-Dashboard-uploadCount{font-size:9px;height:18px;line-height:18px;width:18px}.uppy-Dashboard-inner{border:none!important;background:transparent!important}.uppy-Dashboard-innerWrap{border-radius:.5rem;overflow:hidden}.uppy-Dashboard-AddFiles{border:2px dashed hsl(var(--border))!important;border-radius:.5rem!important;background:hsl(var(--muted) / .3)!important;transition:all .2s ease}.uppy-Dashboard-AddFiles:hover{border-color:hsl(var(--primary))!important;background:hsl(var(--muted) / .5)!important}.uppy-Dashboard-AddFiles-title{color:hsl(var(--foreground))!important;font-weight:500!important}.uppy-Dashboard-AddFiles-info{color:hsl(var(--muted-foreground))!important}.uppy-Dashboard-browse{color:hsl(var(--primary))!important;font-weight:500!important}.uppy-Dashboard-browse:hover{text-decoration:underline!important}.uppy-Dashboard-files{background:transparent!important}.uppy-Dashboard-Item{border-bottom-color:hsl(var(--border))!important}.uppy-Dashboard-Item-name{color:hsl(var(--foreground))!important}.uppy-Dashboard-Item-status{color:hsl(var(--muted-foreground))!important}.uppy-StatusBar{background:hsl(var(--muted))!important;border-top:1px solid hsl(var(--border))!important}.uppy-StatusBar-progress{background:hsl(var(--primary))!important}.uppy-StatusBar-content{color:hsl(var(--foreground))!important}.uppy-StatusBar-actionBtn--upload{background:hsl(var(--primary))!important;color:hsl(var(--primary-foreground))!important;border-radius:.375rem!important;font-weight:500!important;padding:.5rem 1rem!important}.uppy-StatusBar-actionBtn--upload:hover{background:hsl(var(--primary) / .9)!important}.uppy-Dashboard-note{color:hsl(var(--muted-foreground))!important;font-size:.75rem!important}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles,.dark .uppy-Dashboard-AddFiles{background:hsl(var(--muted) / .2)!important}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles-title,.dark .uppy-Dashboard-AddFiles-title{color:hsl(var(--foreground))!important}[data-uppy-theme=dark] .uppy-StatusBar,.dark .uppy-StatusBar{background:hsl(var(--muted) / .5)!important}.uppy-Dashboard{font-family:inherit!important}.uppy-Dashboard-Item-preview{border-radius:.375rem!important;overflow:hidden}.uppy-Dashboard-Item-action--remove{color:hsl(var(--destructive))!important}.uppy-Dashboard-Item-action--remove:hover{opacity:.8}.uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progress{color:hsl(var(--success, 142 76% 36%))!important}.uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-progress{color:hsl(var(--destructive))!important}.uppy-Dashboard-files::-webkit-scrollbar{width:6px}.uppy-Dashboard-files::-webkit-scrollbar-track{background:transparent}.uppy-Dashboard-files::-webkit-scrollbar-thumb{background:hsl(var(--muted-foreground) / .3);border-radius:3px}.uppy-Dashboard-files::-webkit-scrollbar-thumb:hover{background:hsl(var(--muted-foreground) / .5)}@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(/assets/KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(/assets/KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(/assets/KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(/assets/KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(/assets/KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(/assets/KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.25"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:grab}.react-flow__node.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%} diff --git a/webui/dist/assets/misc-Ii-X5qWA.js b/webui/dist/assets/misc-DyBU7ISD.js similarity index 99% rename from webui/dist/assets/misc-Ii-X5qWA.js rename to webui/dist/assets/misc-DyBU7ISD.js index b03b5728..922264e9 100644 --- a/webui/dist/assets/misc-Ii-X5qWA.js +++ b/webui/dist/assets/misc-DyBU7ISD.js @@ -1,4 +1,4 @@ -import{k as Lo,u as Ve,R as Bo,o as $o,O as Ho,C as Uo,r as ct}from"./radix-core-BlBHu_Lw.js";import{r as b,j as zo,R as w,c as Et,b as kt}from"./router-CWhjJi2n.js";import{g as Dt}from"./react-vendor-Dtc2IqVY.js";import{ai as T}from"./charts-Dhri-zxi.js";import{a as Yo,b as qo,d as Go,e as Vo,f as Ko,g as Zo,h as Jo,i as Xo,j as Qo,k as ei,l as ti,m as ni,n as ri,o as oi,p as ii,q as si,r as ai,s as li,t as ci,u as ui,v as fi,w as di,x as pi,y as hi,z as mi,A as yi,B as vi,C as gi,D as bi,E as wi,F as Oi,G as Si,H as cr}from"./utils-CCeOswSm.js";var Sn=1,Ei=.9,ki=.8,Ci=.17,$t=.1,Ht=.999,Ti=.9999,Mi=.99,xi=/[\\\/_+.#"@\[\(\{&]/,Ni=/[\\\/_+.#"@\[\(\{&]/g,Pi=/[\s-]/,ur=/[\s-]/g;function Qt(e,t,n,r,o,i,a){if(i===t.length)return o===e.length?Sn:Mi;var s=`${o},${i}`;if(a[s]!==void 0)return a[s];for(var l=r.charAt(i),u=n.indexOf(l,o),f=0,c,d,p,h;u>=0;)c=Qt(e,t,n,r,u+1,i+1,a),c>f&&(u===o?c*=Sn:xi.test(e.charAt(u-1))?(c*=ki,p=e.slice(o,u-1).match(Ni),p&&o>0&&(c*=Math.pow(Ht,p.length))):Pi.test(e.charAt(u-1))?(c*=Ei,h=e.slice(o,u-1).match(ur),h&&o>0&&(c*=Math.pow(Ht,h.length))):(c*=Ci,o>0&&(c*=Math.pow(Ht,u-o))),e.charAt(u)!==t.charAt(i)&&(c*=Ti)),(c<$t&&n.charAt(u-1)===r.charAt(i+1)||r.charAt(i+1)===r.charAt(i)&&n.charAt(u-1)!==r.charAt(i))&&(d=Qt(e,t,n,r,u+1,i+2,a),d*$t>c&&(c=d*$t)),c>f&&(f=c),u=n.indexOf(l,u+1);return a[s]=f,f}function En(e){return e.toLowerCase().replace(ur," ")}function Di(e,t,n){return e=n&&n.length>0?`${e+" "+n.join(" ")}`:e,Qt(e,t,En(e),En(t),0,0,{})}var Ii=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],_e=Ii.reduce((e,t)=>{const n=Lo(`Primitive.${t}`),r=b.forwardRef((o,i)=>{const{asChild:a,...s}=o,l=a?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),zo.jsx(l,{...s,ref:i})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{}),nt='[cmdk-group=""]',Ut='[cmdk-group-items=""]',Ri='[cmdk-group-heading=""]',fr='[cmdk-item=""]',kn=`${fr}:not([aria-disabled="true"])`,en="cmdk-item-select",qe="data-value",Wi=(e,t,n)=>Di(e,t,n),dr=b.createContext(void 0),dt=()=>b.useContext(dr),pr=b.createContext(void 0),cn=()=>b.useContext(pr),hr=b.createContext(void 0),mr=b.forwardRef((e,t)=>{let n=Ge(()=>{var k,W;return{search:"",value:(W=(k=e.value)!=null?k:e.defaultValue)!=null?W:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),r=Ge(()=>new Set),o=Ge(()=>new Map),i=Ge(()=>new Map),a=Ge(()=>new Set),s=yr(e),{label:l,children:u,value:f,onValueChange:c,filter:d,shouldFilter:p,loop:h,disablePointerSelection:v=!1,vimBindings:O=!0,...y}=e,m=Ve(),S=Ve(),D=Ve(),E=b.useRef(null),C=Yi();Be(()=>{if(f!==void 0){let k=f.trim();n.current.value=k,M.emit()}},[f]),Be(()=>{C(6,Me)},[]);let M=b.useMemo(()=>({subscribe:k=>(a.current.add(k),()=>a.current.delete(k)),snapshot:()=>n.current,setState:(k,W,F)=>{var R,U,G,ee;if(!Object.is(n.current[k],W)){if(n.current[k]=W,k==="search")re(),Y(),C(1,Q);else if(k==="value"){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let X=document.getElementById(D);X?X.focus():(R=document.getElementById(m))==null||R.focus()}if(C(7,()=>{var X;n.current.selectedItemId=(X=le())==null?void 0:X.id,M.emit()}),F||C(5,Me),((U=s.current)==null?void 0:U.value)!==void 0){let X=W??"";(ee=(G=s.current).onValueChange)==null||ee.call(G,X);return}}M.emit()}},emit:()=>{a.current.forEach(k=>k())}}),[]),j=b.useMemo(()=>({value:(k,W,F)=>{var R;W!==((R=i.current.get(k))==null?void 0:R.value)&&(i.current.set(k,{value:W,keywords:F}),n.current.filtered.items.set(k,J(W,F)),C(2,()=>{Y(),M.emit()}))},item:(k,W)=>(r.current.add(k),W&&(o.current.has(W)?o.current.get(W).add(k):o.current.set(W,new Set([k]))),C(3,()=>{re(),Y(),n.current.value||Q(),M.emit()}),()=>{i.current.delete(k),r.current.delete(k),n.current.filtered.items.delete(k);let F=le();C(4,()=>{re(),F?.getAttribute("id")===k&&Q(),M.emit()})}),group:k=>(o.current.has(k)||o.current.set(k,new Set),()=>{i.current.delete(k),o.current.delete(k)}),filter:()=>s.current.shouldFilter,label:l||e["aria-label"],getDisablePointerSelection:()=>s.current.disablePointerSelection,listId:m,inputId:D,labelId:S,listInnerRef:E}),[]);function J(k,W){var F,R;let U=(R=(F=s.current)==null?void 0:F.filter)!=null?R:Wi;return k?U(k,n.current.search,W):0}function Y(){if(!n.current.search||s.current.shouldFilter===!1)return;let k=n.current.filtered.items,W=[];n.current.filtered.groups.forEach(R=>{let U=o.current.get(R),G=0;U.forEach(ee=>{let X=k.get(ee);G=Math.max(X,G)}),W.push([R,G])});let F=E.current;de().sort((R,U)=>{var G,ee;let X=R.getAttribute("id"),ze=U.getAttribute("id");return((G=k.get(ze))!=null?G:0)-((ee=k.get(X))!=null?ee:0)}).forEach(R=>{let U=R.closest(Ut);U?U.appendChild(R.parentElement===U?R:R.closest(`${Ut} > *`)):F.appendChild(R.parentElement===F?R:R.closest(`${Ut} > *`))}),W.sort((R,U)=>U[1]-R[1]).forEach(R=>{var U;let G=(U=E.current)==null?void 0:U.querySelector(`${nt}[${qe}="${encodeURIComponent(R[0])}"]`);G?.parentElement.appendChild(G)})}function Q(){let k=de().find(F=>F.getAttribute("aria-disabled")!=="true"),W=k?.getAttribute(qe);M.setState("value",W||void 0)}function re(){var k,W,F,R;if(!n.current.search||s.current.shouldFilter===!1){n.current.filtered.count=r.current.size;return}n.current.filtered.groups=new Set;let U=0;for(let G of r.current){let ee=(W=(k=i.current.get(G))==null?void 0:k.value)!=null?W:"",X=(R=(F=i.current.get(G))==null?void 0:F.keywords)!=null?R:[],ze=J(ee,X);n.current.filtered.items.set(G,ze),ze>0&&U++}for(let[G,ee]of o.current)for(let X of ee)if(n.current.filtered.items.get(X)>0){n.current.filtered.groups.add(G);break}n.current.filtered.count=U}function Me(){var k,W,F;let R=le();R&&(((k=R.parentElement)==null?void 0:k.firstChild)===R&&((F=(W=R.closest(nt))==null?void 0:W.querySelector(Ri))==null||F.scrollIntoView({block:"nearest"})),R.scrollIntoView({block:"nearest"}))}function le(){var k;return(k=E.current)==null?void 0:k.querySelector(`${fr}[aria-selected="true"]`)}function de(){var k;return Array.from(((k=E.current)==null?void 0:k.querySelectorAll(kn))||[])}function Ie(k){let W=de()[k];W&&M.setState("value",W.getAttribute(qe))}function je(k){var W;let F=le(),R=de(),U=R.findIndex(ee=>ee===F),G=R[U+k];(W=s.current)!=null&&W.loop&&(G=U+k<0?R[R.length-1]:U+k===R.length?R[0]:R[U+k]),G&&M.setState("value",G.getAttribute(qe))}function ie(k){let W=le(),F=W?.closest(nt),R;for(;F&&!R;)F=k>0?Ui(F,nt):zi(F,nt),R=F?.querySelector(kn);R?M.setState("value",R.getAttribute(qe)):je(k)}let se=()=>Ie(de().length-1),pe=k=>{k.preventDefault(),k.metaKey?se():k.altKey?ie(1):je(1)},Ue=k=>{k.preventDefault(),k.metaKey?Ie(0):k.altKey?ie(-1):je(-1)};return b.createElement(_e.div,{ref:t,tabIndex:-1,...y,"cmdk-root":"",onKeyDown:k=>{var W;(W=y.onKeyDown)==null||W.call(y,k);let F=k.nativeEvent.isComposing||k.keyCode===229;if(!(k.defaultPrevented||F))switch(k.key){case"n":case"j":{O&&k.ctrlKey&&pe(k);break}case"ArrowDown":{pe(k);break}case"p":case"k":{O&&k.ctrlKey&&Ue(k);break}case"ArrowUp":{Ue(k);break}case"Home":{k.preventDefault(),Ie(0);break}case"End":{k.preventDefault(),se();break}case"Enter":{k.preventDefault();let R=le();if(R){let U=new Event(en);R.dispatchEvent(U)}}}}},b.createElement("label",{"cmdk-label":"",htmlFor:j.inputId,id:j.labelId,style:Gi},l),It(e,k=>b.createElement(pr.Provider,{value:M},b.createElement(dr.Provider,{value:j},k))))}),Ai=b.forwardRef((e,t)=>{var n,r;let o=Ve(),i=b.useRef(null),a=b.useContext(hr),s=dt(),l=yr(e),u=(r=(n=l.current)==null?void 0:n.forceMount)!=null?r:a?.forceMount;Be(()=>{if(!u)return s.item(o,a?.id)},[u]);let f=vr(o,i,[e.value,e.children,i],e.keywords),c=cn(),d=We(C=>C.value&&C.value===f.current),p=We(C=>u||s.filter()===!1?!0:C.search?C.filtered.items.get(o)>0:!0);b.useEffect(()=>{let C=i.current;if(!(!C||e.disabled))return C.addEventListener(en,h),()=>C.removeEventListener(en,h)},[p,e.onSelect,e.disabled]);function h(){var C,M;v(),(M=(C=l.current).onSelect)==null||M.call(C,f.current)}function v(){c.setState("value",f.current,!0)}if(!p)return null;let{disabled:O,value:y,onSelect:m,forceMount:S,keywords:D,...E}=e;return b.createElement(_e.div,{ref:ct(i,t),...E,id:o,"cmdk-item":"",role:"option","aria-disabled":!!O,"aria-selected":!!d,"data-disabled":!!O,"data-selected":!!d,onPointerMove:O||s.getDisablePointerSelection()?void 0:v,onClick:O?void 0:h},e.children)}),_i=b.forwardRef((e,t)=>{let{heading:n,children:r,forceMount:o,...i}=e,a=Ve(),s=b.useRef(null),l=b.useRef(null),u=Ve(),f=dt(),c=We(p=>o||f.filter()===!1?!0:p.search?p.filtered.groups.has(a):!0);Be(()=>f.group(a),[]),vr(a,s,[e.value,e.heading,l]);let d=b.useMemo(()=>({id:a,forceMount:o}),[o]);return b.createElement(_e.div,{ref:ct(s,t),...i,"cmdk-group":"",role:"presentation",hidden:c?void 0:!0},n&&b.createElement("div",{ref:l,"cmdk-group-heading":"","aria-hidden":!0,id:u},n),It(e,p=>b.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":n?u:void 0},b.createElement(hr.Provider,{value:d},p))))}),ji=b.forwardRef((e,t)=>{let{alwaysRender:n,...r}=e,o=b.useRef(null),i=We(a=>!a.search);return!n&&!i?null:b.createElement(_e.div,{ref:ct(o,t),...r,"cmdk-separator":"",role:"separator"})}),Fi=b.forwardRef((e,t)=>{let{onValueChange:n,...r}=e,o=e.value!=null,i=cn(),a=We(u=>u.search),s=We(u=>u.selectedItemId),l=dt();return b.useEffect(()=>{e.value!=null&&i.setState("search",e.value)},[e.value]),b.createElement(_e.input,{ref:t,...r,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":l.listId,"aria-labelledby":l.labelId,"aria-activedescendant":s,id:l.inputId,type:"text",value:o?e.value:a,onChange:u=>{o||i.setState("search",u.target.value),n?.(u.target.value)}})}),Li=b.forwardRef((e,t)=>{let{children:n,label:r="Suggestions",...o}=e,i=b.useRef(null),a=b.useRef(null),s=We(u=>u.selectedItemId),l=dt();return b.useEffect(()=>{if(a.current&&i.current){let u=a.current,f=i.current,c,d=new ResizeObserver(()=>{c=requestAnimationFrame(()=>{let p=u.offsetHeight;f.style.setProperty("--cmdk-list-height",p.toFixed(1)+"px")})});return d.observe(u),()=>{cancelAnimationFrame(c),d.unobserve(u)}}},[]),b.createElement(_e.div,{ref:ct(i,t),...o,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":s,"aria-label":r,id:l.listId},It(e,u=>b.createElement("div",{ref:ct(a,l.listInnerRef),"cmdk-list-sizer":""},u)))}),Bi=b.forwardRef((e,t)=>{let{open:n,onOpenChange:r,overlayClassName:o,contentClassName:i,container:a,...s}=e;return b.createElement(Bo,{open:n,onOpenChange:r},b.createElement($o,{container:a},b.createElement(Ho,{"cmdk-overlay":"",className:o}),b.createElement(Uo,{"aria-label":e.label,"cmdk-dialog":"",className:i},b.createElement(mr,{ref:t,...s}))))}),$i=b.forwardRef((e,t)=>We(n=>n.filtered.count===0)?b.createElement(_e.div,{ref:t,...e,"cmdk-empty":"",role:"presentation"}):null),Hi=b.forwardRef((e,t)=>{let{progress:n,children:r,label:o="Loading...",...i}=e;return b.createElement(_e.div,{ref:t,...i,"cmdk-loading":"",role:"progressbar","aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":o},It(e,a=>b.createElement("div",{"aria-hidden":!0},a)))}),ou=Object.assign(mr,{List:Li,Item:Ai,Input:Fi,Group:_i,Separator:ji,Dialog:Bi,Empty:$i,Loading:Hi});function Ui(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return n;n=n.nextElementSibling}}function zi(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return n;n=n.previousElementSibling}}function yr(e){let t=b.useRef(e);return Be(()=>{t.current=e}),t}var Be=typeof window>"u"?b.useEffect:b.useLayoutEffect;function Ge(e){let t=b.useRef();return t.current===void 0&&(t.current=e()),t}function We(e){let t=cn(),n=()=>e(t.snapshot());return b.useSyncExternalStore(t.subscribe,n,n)}function vr(e,t,n,r=[]){let o=b.useRef(),i=dt();return Be(()=>{var a;let s=(()=>{var u;for(let f of n){if(typeof f=="string")return f.trim();if(typeof f=="object"&&"current"in f)return f.current?(u=f.current.textContent)==null?void 0:u.trim():o.current}})(),l=r.map(u=>u.trim());i.value(e,s,l),(a=t.current)==null||a.setAttribute(qe,s),o.current=s}),o}var Yi=()=>{let[e,t]=b.useState(),n=Ge(()=>new Map);return Be(()=>{n.current.forEach(r=>r()),n.current=new Map},[e]),(r,o)=>{n.current.set(r,o),t({})}};function qi(e){let t=e.type;return typeof t=="function"?t(e.props):"render"in t?t.render(e.props):e}function It({asChild:e,children:t},n){return e&&b.isValidElement(t)?b.cloneElement(qi(t),{ref:t.ref},n(t.props.children)):n(t)}var Gi={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};function gr(e){return t=>typeof t===e}var Vi=gr("function"),Ki=e=>e===null,Cn=e=>Object.prototype.toString.call(e).slice(8,-1)==="RegExp",Tn=e=>!Zi(e)&&!Ki(e)&&(Vi(e)||typeof e=="object"),Zi=gr("undefined");function Ji(e,t){const{length:n}=e;if(n!==t.length)return!1;for(let r=n;r--!==0;)if(!oe(e[r],t[r]))return!1;return!0}function Xi(e,t){if(e.byteLength!==t.byteLength)return!1;const n=new DataView(e.buffer),r=new DataView(t.buffer);let o=e.byteLength;for(;o--;)if(n.getUint8(o)!==r.getUint8(o))return!1;return!0}function Qi(e,t){if(e.size!==t.size)return!1;for(const n of e.entries())if(!t.has(n[0]))return!1;for(const n of e.entries())if(!oe(n[1],t.get(n[0])))return!1;return!0}function es(e,t){if(e.size!==t.size)return!1;for(const n of e.entries())if(!t.has(n[0]))return!1;return!0}function oe(e,t){if(e===t)return!0;if(e&&Tn(e)&&t&&Tn(t)){if(e.constructor!==t.constructor)return!1;if(Array.isArray(e)&&Array.isArray(t))return Ji(e,t);if(e instanceof Map&&t instanceof Map)return Qi(e,t);if(e instanceof Set&&t instanceof Set)return es(e,t);if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(t))return Xi(e,t);if(Cn(e)&&Cn(t))return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let o=n.length;o--!==0;)if(!Object.prototype.hasOwnProperty.call(t,n[o]))return!1;for(let o=n.length;o--!==0;){const i=n[o];if(!(i==="_owner"&&e.$$typeof)&&!oe(e[i],t[i]))return!1}return!0}return Number.isNaN(e)&&Number.isNaN(t)?!0:e===t}var ts=["Array","ArrayBuffer","AsyncFunction","AsyncGenerator","AsyncGeneratorFunction","Date","Error","Function","Generator","GeneratorFunction","HTMLElement","Map","Object","Promise","RegExp","Set","WeakMap","WeakSet"],ns=["bigint","boolean","null","number","string","symbol","undefined"];function Rt(e){const t=Object.prototype.toString.call(e).slice(8,-1);if(/HTML\w+Element/.test(t))return"HTMLElement";if(rs(t))return t}function ge(e){return t=>Rt(t)===e}function rs(e){return ts.includes(e)}function Qe(e){return t=>typeof t===e}function os(e){return ns.includes(e)}var is=["innerHTML","ownerDocument","style","attributes","nodeValue"];function x(e){if(e===null)return"null";switch(typeof e){case"bigint":return"bigint";case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"symbol":return"symbol";case"undefined":return"undefined"}if(x.array(e))return"Array";if(x.plainFunction(e))return"Function";const t=Rt(e);return t||"Object"}x.array=Array.isArray;x.arrayOf=(e,t)=>!x.array(e)&&!x.function(t)?!1:e.every(n=>t(n));x.asyncGeneratorFunction=e=>Rt(e)==="AsyncGeneratorFunction";x.asyncFunction=ge("AsyncFunction");x.bigint=Qe("bigint");x.boolean=e=>e===!0||e===!1;x.date=ge("Date");x.defined=e=>!x.undefined(e);x.domElement=e=>x.object(e)&&!x.plainObject(e)&&e.nodeType===1&&x.string(e.nodeName)&&is.every(t=>t in e);x.empty=e=>x.string(e)&&e.length===0||x.array(e)&&e.length===0||x.object(e)&&!x.map(e)&&!x.set(e)&&Object.keys(e).length===0||x.set(e)&&e.size===0||x.map(e)&&e.size===0;x.error=ge("Error");x.function=Qe("function");x.generator=e=>x.iterable(e)&&x.function(e.next)&&x.function(e.throw);x.generatorFunction=ge("GeneratorFunction");x.instanceOf=(e,t)=>!e||!t?!1:Object.getPrototypeOf(e)===t.prototype;x.iterable=e=>!x.nullOrUndefined(e)&&x.function(e[Symbol.iterator]);x.map=ge("Map");x.nan=e=>Number.isNaN(e);x.null=e=>e===null;x.nullOrUndefined=e=>x.null(e)||x.undefined(e);x.number=e=>Qe("number")(e)&&!x.nan(e);x.numericString=e=>x.string(e)&&e.length>0&&!Number.isNaN(Number(e));x.object=e=>!x.nullOrUndefined(e)&&(x.function(e)||typeof e=="object");x.oneOf=(e,t)=>x.array(e)?e.indexOf(t)>-1:!1;x.plainFunction=ge("Function");x.plainObject=e=>{if(Rt(e)!=="Object")return!1;const t=Object.getPrototypeOf(e);return t===null||t===Object.getPrototypeOf({})};x.primitive=e=>x.null(e)||os(typeof e);x.promise=ge("Promise");x.propertyOf=(e,t,n)=>{if(!x.object(e)||!t)return!1;const r=e[t];return x.function(n)?n(r):x.defined(r)};x.regexp=ge("RegExp");x.set=ge("Set");x.string=Qe("string");x.symbol=Qe("symbol");x.undefined=Qe("undefined");x.weakMap=ge("WeakMap");x.weakSet=ge("WeakSet");var N=x;function ss(...e){return e.every(t=>N.string(t)||N.array(t)||N.plainObject(t))}function as(e,t,n){return br(e,t)?[e,t].every(N.array)?!e.some(Dn(n))&&t.some(Dn(n)):[e,t].every(N.plainObject)?!Object.entries(e).some(Pn(n))&&Object.entries(t).some(Pn(n)):t===n:!1}function Mn(e,t,n){const{actual:r,key:o,previous:i,type:a}=n,s=Ee(e,o),l=Ee(t,o);let u=[s,l].every(N.number)&&(a==="increased"?sl);return N.undefined(r)||(u=u&&l===r),N.undefined(i)||(u=u&&s===i),u}function xn(e,t,n){const{key:r,type:o,value:i}=n,a=Ee(e,r),s=Ee(t,r),l=o==="added"?a:s,u=o==="added"?s:a;if(!N.nullOrUndefined(i)){if(N.defined(l)){if(N.array(l)||N.plainObject(l))return as(l,u,i)}else return oe(u,i);return!1}return[a,s].every(N.array)?!u.every(un(l)):[a,s].every(N.plainObject)?ls(Object.keys(l),Object.keys(u)):![a,s].every(f=>N.primitive(f)&&N.defined(f))&&(o==="added"?!N.defined(a)&&N.defined(s):N.defined(a)&&!N.defined(s))}function Nn(e,t,{key:n}={}){let r=Ee(e,n),o=Ee(t,n);if(!br(r,o))throw new TypeError("Inputs have different types");if(!ss(r,o))throw new TypeError("Inputs don't have length");return[r,o].every(N.plainObject)&&(r=Object.keys(r),o=Object.keys(o)),[r,o]}function Pn(e){return([t,n])=>N.array(e)?oe(e,n)||e.some(r=>oe(r,n)||N.array(n)&&un(n)(r)):N.plainObject(e)&&e[t]?!!e[t]&&oe(e[t],n):oe(e,n)}function ls(e,t){return t.some(n=>!e.includes(n))}function Dn(e){return t=>N.array(e)?e.some(n=>oe(n,t)||N.array(t)&&un(t)(n)):oe(e,t)}function rt(e,t){return N.array(e)?e.some(n=>oe(n,t)):oe(e,t)}function un(e){return t=>e.some(n=>oe(n,t))}function br(...e){return e.every(N.array)||e.every(N.number)||e.every(N.plainObject)||e.every(N.string)}function Ee(e,t){return N.plainObject(e)||N.array(e)?N.string(t)?t.split(".").reduce((r,o)=>r&&r[o],e):N.number(t)?e[t]:e:e}function Mt(e,t){if([e,t].some(N.nullOrUndefined))throw new Error("Missing required parameters");if(![e,t].every(f=>N.plainObject(f)||N.array(f)))throw new Error("Expected plain objects or array");return{added:(f,c)=>{try{return xn(e,t,{key:f,type:"added",value:c})}catch{return!1}},changed:(f,c,d)=>{try{const p=Ee(e,f),h=Ee(t,f),v=N.defined(c),O=N.defined(d);if(v||O){const y=O?rt(d,p):!rt(c,p),m=rt(c,h);return y&&m}return[p,h].every(N.array)||[p,h].every(N.plainObject)?!oe(p,h):p!==h}catch{return!1}},changedFrom:(f,c,d)=>{if(!N.defined(f))return!1;try{const p=Ee(e,f),h=Ee(t,f),v=N.defined(d);return rt(c,p)&&(v?rt(d,h):!v)}catch{return!1}},decreased:(f,c,d)=>{if(!N.defined(f))return!1;try{return Mn(e,t,{key:f,actual:c,previous:d,type:"decreased"})}catch{return!1}},emptied:f=>{try{const[c,d]=Nn(e,t,{key:f});return!!c.length&&!d.length}catch{return!1}},filled:f=>{try{const[c,d]=Nn(e,t,{key:f});return!c.length&&!!d.length}catch{return!1}},increased:(f,c,d)=>{if(!N.defined(f))return!1;try{return Mn(e,t,{key:f,actual:c,previous:d,type:"increased"})}catch{return!1}},removed:(f,c)=>{try{return xn(e,t,{key:f,type:"removed",value:c})}catch{return!1}}}}var zt,In;function cs(){if(In)return zt;In=1;var e=new Error("Element already at target scroll position"),t=new Error("Scroll cancelled"),n=Math.min,r=Date.now;zt={left:o("scrollLeft"),top:o("scrollTop")};function o(s){return function(u,f,c,d){c=c||{},typeof c=="function"&&(d=c,c={}),typeof d!="function"&&(d=a);var p=r(),h=u[s],v=c.ease||i,O=isNaN(c.duration)?350:+c.duration,y=!1;return h===f?d(e,u[s]):requestAnimationFrame(S),m;function m(){y=!0}function S(D){if(y)return d(t,u[s]);var E=r(),C=n(1,(E-p)/O),M=v(C);u[s]=M*(f-h)+h,C<1?requestAnimationFrame(S):requestAnimationFrame(function(){d(null,u[s])})}}}function i(s){return .5*(1-Math.cos(Math.PI*s))}function a(){}return zt}var us=cs();const fs=Dt(us);var Ct={exports:{}},ds=Ct.exports,Rn;function ps(){return Rn||(Rn=1,(function(e){(function(t,n){e.exports?e.exports=n():t.Scrollparent=n()})(ds,function(){function t(r){var o=getComputedStyle(r,null).getPropertyValue("overflow");return o.indexOf("scroll")>-1||o.indexOf("auto")>-1}function n(r){if(r instanceof HTMLElement||r instanceof SVGElement){for(var o=r.parentNode;o.parentNode;){if(t(o))return o;o=o.parentNode}return document.scrollingElement||document.documentElement}}return n})})(Ct)),Ct.exports}var hs=ps();const wr=Dt(hs);var Yt,Wn;function ms(){if(Wn)return Yt;Wn=1;var e=function(r){return Object.prototype.hasOwnProperty.call(r,"props")},t=function(r,o){return r+n(o)},n=function(r){return r===null||typeof r=="boolean"||typeof r>"u"?"":typeof r=="number"?r.toString():typeof r=="string"?r:Array.isArray(r)?r.reduce(t,""):e(r)&&Object.prototype.hasOwnProperty.call(r.props,"children")?n(r.props.children):""};return n.default=n,Yt=n,Yt}var ys=ms();const An=Dt(ys);var qt,_n;function vs(){if(_n)return qt;_n=1;var e=function(m){return t(m)&&!n(m)};function t(y){return!!y&&typeof y=="object"}function n(y){var m=Object.prototype.toString.call(y);return m==="[object RegExp]"||m==="[object Date]"||i(y)}var r=typeof Symbol=="function"&&Symbol.for,o=r?Symbol.for("react.element"):60103;function i(y){return y.$$typeof===o}function a(y){return Array.isArray(y)?[]:{}}function s(y,m){return m.clone!==!1&&m.isMergeableObject(y)?v(a(y),y,m):y}function l(y,m,S){return y.concat(m).map(function(D){return s(D,S)})}function u(y,m){if(!m.customMerge)return v;var S=m.customMerge(y);return typeof S=="function"?S:v}function f(y){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(y).filter(function(m){return Object.propertyIsEnumerable.call(y,m)}):[]}function c(y){return Object.keys(y).concat(f(y))}function d(y,m){try{return m in y}catch{return!1}}function p(y,m){return d(y,m)&&!(Object.hasOwnProperty.call(y,m)&&Object.propertyIsEnumerable.call(y,m))}function h(y,m,S){var D={};return S.isMergeableObject(y)&&c(y).forEach(function(E){D[E]=s(y[E],S)}),c(m).forEach(function(E){p(y,E)||(d(y,E)&&S.isMergeableObject(m[E])?D[E]=u(E,S)(y[E],m[E],S):D[E]=s(m[E],S))}),D}function v(y,m,S){S=S||{},S.arrayMerge=S.arrayMerge||l,S.isMergeableObject=S.isMergeableObject||e,S.cloneUnlessOtherwiseSpecified=s;var D=Array.isArray(m),E=Array.isArray(y),C=D===E;return C?D?S.arrayMerge(y,m,S):h(y,m,S):s(m,S)}v.all=function(m,S){if(!Array.isArray(m))throw new Error("first argument should be an array");return m.reduce(function(D,E){return v(D,E,S)},{})};var O=v;return qt=O,qt}var gs=vs();const ye=Dt(gs);var pt=typeof window<"u"&&typeof document<"u"&&typeof navigator<"u",bs=(function(){for(var e=["Edge","Trident","Firefox"],t=0;t=0)return 1;return 0})();function ws(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then(function(){t=!1,e()}))}}function Os(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},bs))}}var Ss=pt&&window.Promise,Es=Ss?ws:Os;function Or(e){var t={};return e&&t.toString.call(e)==="[object Function]"}function He(e,t){if(e.nodeType!==1)return[];var n=e.ownerDocument.defaultView,r=n.getComputedStyle(e,null);return t?r[t]:r}function fn(e){return e.nodeName==="HTML"?e:e.parentNode||e.host}function ht(e){if(!e)return document.body;switch(e.nodeName){case"HTML":case"BODY":return e.ownerDocument.body;case"#document":return e.body}var t=He(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/(auto|scroll|overlay)/.test(n+o+r)?e:ht(fn(e))}function Sr(e){return e&&e.referenceNode?e.referenceNode:e}var jn=pt&&!!(window.MSInputMethodContext&&document.documentMode),Fn=pt&&/MSIE 10/.test(navigator.userAgent);function et(e){return e===11?jn:e===10?Fn:jn||Fn}function Ke(e){if(!e)return document.documentElement;for(var t=et(10)?document.body:null,n=e.offsetParent||null;n===t&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var r=n&&n.nodeName;return!r||r==="BODY"||r==="HTML"?e?e.ownerDocument.documentElement:document.documentElement:["TH","TD","TABLE"].indexOf(n.nodeName)!==-1&&He(n,"position")==="static"?Ke(n):n}function ks(e){var t=e.nodeName;return t==="BODY"?!1:t==="HTML"||Ke(e.firstElementChild)===e}function tn(e){return e.parentNode!==null?tn(e.parentNode):e}function xt(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var n=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,r=n?e:t,o=n?t:e,i=document.createRange();i.setStart(r,0),i.setEnd(o,0);var a=i.commonAncestorContainer;if(e!==a&&t!==a||r.contains(o))return ks(a)?a:Ke(a);var s=tn(e);return s.host?xt(s.host,t):xt(e,tn(t).host)}function Ze(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"top",n=t==="top"?"scrollTop":"scrollLeft",r=e.nodeName;if(r==="BODY"||r==="HTML"){var o=e.ownerDocument.documentElement,i=e.ownerDocument.scrollingElement||o;return i[n]}return e[n]}function Cs(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,r=Ze(t,"top"),o=Ze(t,"left"),i=n?-1:1;return e.top+=r*i,e.bottom+=r*i,e.left+=o*i,e.right+=o*i,e}function Ln(e,t){var n=t==="x"?"Left":"Top",r=n==="Left"?"Right":"Bottom";return parseFloat(e["border"+n+"Width"])+parseFloat(e["border"+r+"Width"])}function Bn(e,t,n,r){return Math.max(t["offset"+e],t["scroll"+e],n["client"+e],n["offset"+e],n["scroll"+e],et(10)?parseInt(n["offset"+e])+parseInt(r["margin"+(e==="Height"?"Top":"Left")])+parseInt(r["margin"+(e==="Height"?"Bottom":"Right")]):0)}function Er(e){var t=e.body,n=e.documentElement,r=et(10)&&getComputedStyle(n);return{height:Bn("Height",t,n,r),width:Bn("Width",t,n,r)}}var Ts=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},Ms=(function(){function e(t,n){for(var r=0;r2&&arguments[2]!==void 0?arguments[2]:!1,r=et(10),o=t.nodeName==="HTML",i=nn(e),a=nn(t),s=ht(e),l=He(t),u=parseFloat(l.borderTopWidth),f=parseFloat(l.borderLeftWidth);n&&o&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var c=Ae({top:i.top-a.top-u,left:i.left-a.left-f,width:i.width,height:i.height});if(c.marginTop=0,c.marginLeft=0,!r&&o){var d=parseFloat(l.marginTop),p=parseFloat(l.marginLeft);c.top-=u-d,c.bottom-=u-d,c.left-=f-p,c.right-=f-p,c.marginTop=d,c.marginLeft=p}return(r&&!n?t.contains(s):t===s&&s.nodeName!=="BODY")&&(c=Cs(c,t)),c}function xs(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=e.ownerDocument.documentElement,r=dn(e,n),o=Math.max(n.clientWidth,window.innerWidth||0),i=Math.max(n.clientHeight,window.innerHeight||0),a=t?0:Ze(n),s=t?0:Ze(n,"left"),l={top:a-r.top+r.marginTop,left:s-r.left+r.marginLeft,width:o,height:i};return Ae(l)}function kr(e){var t=e.nodeName;if(t==="BODY"||t==="HTML")return!1;if(He(e,"position")==="fixed")return!0;var n=fn(e);return n?kr(n):!1}function Cr(e){if(!e||!e.parentElement||et())return document.documentElement;for(var t=e.parentElement;t&&He(t,"transform")==="none";)t=t.parentElement;return t||document.documentElement}function pn(e,t,n,r){var o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1,i={top:0,left:0},a=o?Cr(e):xt(e,Sr(t));if(r==="viewport")i=xs(a,o);else{var s=void 0;r==="scrollParent"?(s=ht(fn(t)),s.nodeName==="BODY"&&(s=e.ownerDocument.documentElement)):r==="window"?s=e.ownerDocument.documentElement:s=r;var l=dn(s,a,o);if(s.nodeName==="HTML"&&!kr(a)){var u=Er(e.ownerDocument),f=u.height,c=u.width;i.top+=l.top-l.marginTop,i.bottom=f+l.top,i.left+=l.left-l.marginLeft,i.right=c+l.left}else i=l}n=n||0;var d=typeof n=="number";return i.left+=d?n:n.left||0,i.top+=d?n:n.top||0,i.right-=d?n:n.right||0,i.bottom-=d?n:n.bottom||0,i}function Ns(e){var t=e.width,n=e.height;return t*n}function Tr(e,t,n,r,o){var i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0;if(e.indexOf("auto")===-1)return e;var a=pn(n,r,i,o),s={top:{width:a.width,height:t.top-a.top},right:{width:a.right-t.right,height:a.height},bottom:{width:a.width,height:a.bottom-t.bottom},left:{width:t.left-a.left,height:a.height}},l=Object.keys(s).map(function(d){return he({key:d},s[d],{area:Ns(s[d])})}).sort(function(d,p){return p.area-d.area}),u=l.filter(function(d){var p=d.width,h=d.height;return p>=n.clientWidth&&h>=n.clientHeight}),f=u.length>0?u[0].key:l[0].key,c=e.split("-")[1];return f+(c?"-"+c:"")}function Mr(e,t,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,o=r?Cr(t):xt(t,Sr(n));return dn(n,o,r)}function xr(e){var t=e.ownerDocument.defaultView,n=t.getComputedStyle(e),r=parseFloat(n.marginTop||0)+parseFloat(n.marginBottom||0),o=parseFloat(n.marginLeft||0)+parseFloat(n.marginRight||0),i={width:e.offsetWidth+o,height:e.offsetHeight+r};return i}function Nt(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(n){return t[n]})}function Nr(e,t,n){n=n.split("-")[0];var r=xr(e),o={width:r.width,height:r.height},i=["right","left"].indexOf(n)!==-1,a=i?"top":"left",s=i?"left":"top",l=i?"height":"width",u=i?"width":"height";return o[a]=t[a]+t[l]/2-r[l]/2,n===s?o[s]=t[s]-r[u]:o[s]=t[Nt(s)],o}function mt(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function Ps(e,t,n){if(Array.prototype.findIndex)return e.findIndex(function(o){return o[t]===n});var r=mt(e,function(o){return o[t]===n});return e.indexOf(r)}function Pr(e,t,n){var r=n===void 0?e:e.slice(0,Ps(e,"name",n));return r.forEach(function(o){o.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var i=o.function||o.fn;o.enabled&&Or(i)&&(t.offsets.popper=Ae(t.offsets.popper),t.offsets.reference=Ae(t.offsets.reference),t=i(t,o))}),t}function Ds(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=Mr(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=Tr(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=Nr(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",e=Pr(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function Dr(e,t){return e.some(function(n){var r=n.name,o=n.enabled;return o&&r===t})}function hn(e){for(var t=[!1,"ms","Webkit","Moz","O"],n=e.charAt(0).toUpperCase()+e.slice(1),r=0;ra[p]&&(e.offsets.popper[c]+=s[c]+h-a[p]),e.offsets.popper=Ae(e.offsets.popper);var v=s[c]+s[u]/2-h/2,O=He(e.instance.popper),y=parseFloat(O["margin"+f]),m=parseFloat(O["border"+f+"Width"]),S=v-e.offsets.popper[c]-y-m;return S=Math.max(Math.min(a[u]-h,S),0),e.arrowElement=r,e.offsets.arrow=(n={},Je(n,c,Math.round(S)),Je(n,d,""),n),e}function zs(e){return e==="end"?"start":e==="start"?"end":e}var Ar=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],Gt=Ar.slice(3);function $n(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=Gt.indexOf(e),r=Gt.slice(n+1).concat(Gt.slice(0,n));return t?r.reverse():r}var Vt={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function Ys(e,t){if(Dr(e.instance.modifiers,"inner")||e.flipped&&e.placement===e.originalPlacement)return e;var n=pn(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),r=e.placement.split("-")[0],o=Nt(r),i=e.placement.split("-")[1]||"",a=[];switch(t.behavior){case Vt.FLIP:a=[r,o];break;case Vt.CLOCKWISE:a=$n(r);break;case Vt.COUNTERCLOCKWISE:a=$n(r,!0);break;default:a=t.behavior}return a.forEach(function(s,l){if(r!==s||a.length===l+1)return e;r=e.placement.split("-")[0],o=Nt(r);var u=e.offsets.popper,f=e.offsets.reference,c=Math.floor,d=r==="left"&&c(u.right)>c(f.left)||r==="right"&&c(u.left)c(f.top)||r==="bottom"&&c(u.top)c(n.right),v=c(u.top)c(n.bottom),y=r==="left"&&p||r==="right"&&h||r==="top"&&v||r==="bottom"&&O,m=["top","bottom"].indexOf(r)!==-1,S=!!t.flipVariations&&(m&&i==="start"&&p||m&&i==="end"&&h||!m&&i==="start"&&v||!m&&i==="end"&&O),D=!!t.flipVariationsByContent&&(m&&i==="start"&&h||m&&i==="end"&&p||!m&&i==="start"&&O||!m&&i==="end"&&v),E=S||D;(d||y||E)&&(e.flipped=!0,(d||y)&&(r=a[l+1]),E&&(i=zs(i)),e.placement=r+(i?"-"+i:""),e.offsets.popper=he({},e.offsets.popper,Nr(e.instance.popper,e.offsets.reference,e.placement)),e=Pr(e.instance.modifiers,e,"flip"))}),e}function qs(e){var t=e.offsets,n=t.popper,r=t.reference,o=e.placement.split("-")[0],i=Math.floor,a=["top","bottom"].indexOf(o)!==-1,s=a?"right":"bottom",l=a?"left":"top",u=a?"width":"height";return n[s]i(r[s])&&(e.offsets.popper[l]=i(r[s])),e}function Gs(e,t,n,r){var o=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),i=+o[1],a=o[2];if(!i)return e;if(a.indexOf("%")===0){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=r}var l=Ae(s);return l[t]/100*i}else if(a==="vh"||a==="vw"){var u=void 0;return a==="vh"?u=Math.max(document.documentElement.clientHeight,window.innerHeight||0):u=Math.max(document.documentElement.clientWidth,window.innerWidth||0),u/100*i}else return i}function Vs(e,t,n,r){var o=[0,0],i=["right","left"].indexOf(r)!==-1,a=e.split(/(\+|\-)/).map(function(f){return f.trim()}),s=a.indexOf(mt(a,function(f){return f.search(/,|\s/)!==-1}));a[s]&&a[s].indexOf(",")===-1&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,u=s!==-1?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return u=u.map(function(f,c){var d=(c===1?!i:i)?"height":"width",p=!1;return f.reduce(function(h,v){return h[h.length-1]===""&&["+","-"].indexOf(v)!==-1?(h[h.length-1]=v,p=!0,h):p?(h[h.length-1]+=v,p=!1,h):h.concat(v)},[]).map(function(h){return Gs(h,d,t,n)})}),u.forEach(function(f,c){f.forEach(function(d,p){mn(d)&&(o[c]+=d*(f[p-1]==="-"?-1:1))})}),o}function Ks(e,t){var n=t.offset,r=e.placement,o=e.offsets,i=o.popper,a=o.reference,s=r.split("-")[0],l=void 0;return mn(+n)?l=[+n,0]:l=Vs(n,i,a,s),s==="left"?(i.top+=l[0],i.left-=l[1]):s==="right"?(i.top+=l[0],i.left+=l[1]):s==="top"?(i.left+=l[0],i.top-=l[1]):s==="bottom"&&(i.left+=l[0],i.top+=l[1]),e.popper=i,e}function Zs(e,t){var n=t.boundariesElement||Ke(e.instance.popper);e.instance.reference===n&&(n=Ke(n));var r=hn("transform"),o=e.instance.popper.style,i=o.top,a=o.left,s=o[r];o.top="",o.left="",o[r]="";var l=pn(e.instance.popper,e.instance.reference,t.padding,n,e.positionFixed);o.top=i,o.left=a,o[r]=s,t.boundaries=l;var u=t.priority,f=e.offsets.popper,c={primary:function(p){var h=f[p];return f[p]l[p]&&!t.escapeWithReference&&(v=Math.min(f[h],l[p]-(p==="right"?f.width:f.height))),Je({},h,v)}};return u.forEach(function(d){var p=["left","top"].indexOf(d)!==-1?"primary":"secondary";f=he({},f,c[p](d))}),e.offsets.popper=f,e}function Js(e){var t=e.placement,n=t.split("-")[0],r=t.split("-")[1];if(r){var o=e.offsets,i=o.reference,a=o.popper,s=["bottom","top"].indexOf(n)!==-1,l=s?"left":"top",u=s?"width":"height",f={start:Je({},l,i[l]),end:Je({},l,i[l]+i[u]-a[u])};e.offsets.popper=he({},a,f[r])}return e}function Xs(e){if(!Wr(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=mt(e.instance.modifiers,function(r){return r.name==="preventOverflow"}).boundaries;if(t.bottomn.right||t.top>n.bottom||t.right2&&arguments[2]!==void 0?arguments[2]:{};Ts(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(r.update)},this.update=Es(this.update.bind(this)),this.options=he({},e.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(he({},e.Defaults.modifiers,o.modifiers)).forEach(function(a){r.options.modifiers[a]=he({},e.Defaults.modifiers[a]||{},o.modifiers?o.modifiers[a]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(a){return he({name:a},r.options.modifiers[a])}).sort(function(a,s){return a.order-s.order}),this.modifiers.forEach(function(a){a.enabled&&Or(a.onLoad)&&a.onLoad(r.reference,r.popper,r.options,a,r.state)}),this.update();var i=this.options.eventsEnabled;i&&this.enableEventListeners(),this.state.eventsEnabled=i}return Ms(e,[{key:"update",value:function(){return Ds.call(this)}},{key:"destroy",value:function(){return Is.call(this)}},{key:"enableEventListeners",value:function(){return Ws.call(this)}},{key:"disableEventListeners",value:function(){return _s.call(this)}}]),e})();ut.Utils=(typeof window<"u"?window:global).PopperUtils;ut.placements=Ar;ut.Defaults=ta;var na=["innerHTML","ownerDocument","style","attributes","nodeValue"],ra=["Array","ArrayBuffer","AsyncFunction","AsyncGenerator","AsyncGeneratorFunction","Date","Error","Function","Generator","GeneratorFunction","HTMLElement","Map","Object","Promise","RegExp","Set","WeakMap","WeakSet"],oa=["bigint","boolean","null","number","string","symbol","undefined"];function Wt(e){var t=Object.prototype.toString.call(e).slice(8,-1);if(/HTML\w+Element/.test(t))return"HTMLElement";if(ia(t))return t}function be(e){return function(t){return Wt(t)===e}}function ia(e){return ra.includes(e)}function tt(e){return function(t){return typeof t===e}}function sa(e){return oa.includes(e)}function g(e){if(e===null)return"null";switch(typeof e){case"bigint":return"bigint";case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"symbol":return"symbol";case"undefined":return"undefined"}if(g.array(e))return"Array";if(g.plainFunction(e))return"Function";var t=Wt(e);return t||"Object"}g.array=Array.isArray;g.arrayOf=function(e,t){return!g.array(e)&&!g.function(t)?!1:e.every(function(n){return t(n)})};g.asyncGeneratorFunction=function(e){return Wt(e)==="AsyncGeneratorFunction"};g.asyncFunction=be("AsyncFunction");g.bigint=tt("bigint");g.boolean=function(e){return e===!0||e===!1};g.date=be("Date");g.defined=function(e){return!g.undefined(e)};g.domElement=function(e){return g.object(e)&&!g.plainObject(e)&&e.nodeType===1&&g.string(e.nodeName)&&na.every(function(t){return t in e})};g.empty=function(e){return g.string(e)&&e.length===0||g.array(e)&&e.length===0||g.object(e)&&!g.map(e)&&!g.set(e)&&Object.keys(e).length===0||g.set(e)&&e.size===0||g.map(e)&&e.size===0};g.error=be("Error");g.function=tt("function");g.generator=function(e){return g.iterable(e)&&g.function(e.next)&&g.function(e.throw)};g.generatorFunction=be("GeneratorFunction");g.instanceOf=function(e,t){return!e||!t?!1:Object.getPrototypeOf(e)===t.prototype};g.iterable=function(e){return!g.nullOrUndefined(e)&&g.function(e[Symbol.iterator])};g.map=be("Map");g.nan=function(e){return Number.isNaN(e)};g.null=function(e){return e===null};g.nullOrUndefined=function(e){return g.null(e)||g.undefined(e)};g.number=function(e){return tt("number")(e)&&!g.nan(e)};g.numericString=function(e){return g.string(e)&&e.length>0&&!Number.isNaN(Number(e))};g.object=function(e){return!g.nullOrUndefined(e)&&(g.function(e)||typeof e=="object")};g.oneOf=function(e,t){return g.array(e)?e.indexOf(t)>-1:!1};g.plainFunction=be("Function");g.plainObject=function(e){if(Wt(e)!=="Object")return!1;var t=Object.getPrototypeOf(e);return t===null||t===Object.getPrototypeOf({})};g.primitive=function(e){return g.null(e)||sa(typeof e)};g.promise=be("Promise");g.propertyOf=function(e,t,n){if(!g.object(e)||!t)return!1;var r=e[t];return g.function(n)?n(r):g.defined(r)};g.regexp=be("RegExp");g.set=be("Set");g.string=tt("string");g.symbol=tt("symbol");g.undefined=tt("undefined");g.weakMap=be("WeakMap");g.weakSet=be("WeakSet");function _r(e){return function(t){return typeof t===e}}var aa=_r("function"),la=function(e){return e===null},Hn=function(e){return Object.prototype.toString.call(e).slice(8,-1)==="RegExp"},Un=function(e){return!ca(e)&&!la(e)&&(aa(e)||typeof e=="object")},ca=_r("undefined"),on=function(e){var t=typeof Symbol=="function"&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};function ua(e,t){var n=e.length;if(n!==t.length)return!1;for(var r=n;r--!==0;)if(!ae(e[r],t[r]))return!1;return!0}function fa(e,t){if(e.byteLength!==t.byteLength)return!1;for(var n=new DataView(e.buffer),r=new DataView(t.buffer),o=e.byteLength;o--;)if(n.getUint8(o)!==r.getUint8(o))return!1;return!0}function da(e,t){var n,r,o,i;if(e.size!==t.size)return!1;try{for(var a=on(e.entries()),s=a.next();!s.done;s=a.next()){var l=s.value;if(!t.has(l[0]))return!1}}catch(c){n={error:c}}finally{try{s&&!s.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}try{for(var u=on(e.entries()),f=u.next();!f.done;f=u.next()){var l=f.value;if(!ae(l[1],t.get(l[0])))return!1}}catch(c){o={error:c}}finally{try{f&&!f.done&&(i=u.return)&&i.call(u)}finally{if(o)throw o.error}}return!0}function pa(e,t){var n,r;if(e.size!==t.size)return!1;try{for(var o=on(e.entries()),i=o.next();!i.done;i=o.next()){var a=i.value;if(!t.has(a[0]))return!1}}catch(s){n={error:s}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return!0}function ae(e,t){if(e===t)return!0;if(e&&Un(e)&&t&&Un(t)){if(e.constructor!==t.constructor)return!1;if(Array.isArray(e)&&Array.isArray(t))return ua(e,t);if(e instanceof Map&&t instanceof Map)return da(e,t);if(e instanceof Set&&t instanceof Set)return pa(e,t);if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(t))return fa(e,t);if(Hn(e)&&Hn(t))return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var o=n.length;o--!==0;)if(!Object.prototype.hasOwnProperty.call(t,n[o]))return!1;for(var o=n.length;o--!==0;){var i=n[o];if(!(i==="_owner"&&e.$$typeof)&&!ae(e[i],t[i]))return!1}return!0}return Number.isNaN(e)&&Number.isNaN(t)?!0:e===t}function ha(){for(var e=[],t=0;tl);return g.undefined(r)||(u=u&&l===r),g.undefined(i)||(u=u&&s===i),u}function Yn(e,t,n){var r=n.key,o=n.type,i=n.value,a=ke(e,r),s=ke(t,r),l=o==="added"?a:s,u=o==="added"?s:a;if(!g.nullOrUndefined(i)){if(g.defined(l)){if(g.array(l)||g.plainObject(l))return ma(l,u,i)}else return ae(u,i);return!1}return[a,s].every(g.array)?!u.every(yn(l)):[a,s].every(g.plainObject)?ya(Object.keys(l),Object.keys(u)):![a,s].every(function(f){return g.primitive(f)&&g.defined(f)})&&(o==="added"?!g.defined(a)&&g.defined(s):g.defined(a)&&!g.defined(s))}function qn(e,t,n){var r=n===void 0?{}:n,o=r.key,i=ke(e,o),a=ke(t,o);if(!jr(i,a))throw new TypeError("Inputs have different types");if(!ha(i,a))throw new TypeError("Inputs don't have length");return[i,a].every(g.plainObject)&&(i=Object.keys(i),a=Object.keys(a)),[i,a]}function Gn(e){return function(t){var n=t[0],r=t[1];return g.array(e)?ae(e,r)||e.some(function(o){return ae(o,r)||g.array(r)&&yn(r)(o)}):g.plainObject(e)&&e[n]?!!e[n]&&ae(e[n],r):ae(e,r)}}function ya(e,t){return t.some(function(n){return!e.includes(n)})}function Vn(e){return function(t){return g.array(e)?e.some(function(n){return ae(n,t)||g.array(t)&&yn(t)(n)}):ae(e,t)}}function ot(e,t){return g.array(e)?e.some(function(n){return ae(n,t)}):ae(e,t)}function yn(e){return function(t){return e.some(function(n){return ae(n,t)})}}function jr(){for(var e=[],t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function wa(e,t){if(e==null)return{};var n={},r=Object.keys(e),o,i;for(i=0;i=0)&&(n[o]=e[o]);return n}function Fr(e,t){if(e==null)return{};var n=wa(e,t),r,o;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function xe(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Oa(e,t){if(t&&(typeof t=="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return xe(e)}function bt(e){var t=ba();return function(){var r=Pt(e),o;if(t){var i=Pt(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return Oa(this,o)}}function Sa(e,t){if(typeof e!="object"||e===null)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Lr(e){var t=Sa(e,"string");return typeof t=="symbol"?t:String(t)}var Ea={flip:{padding:20},preventOverflow:{padding:10}},ka="The typeValidator argument must be a function with the signature function(props, propName, componentName).",Ca="The error message is optional, but must be a string if provided.";function Ta(e,t,n,r){return typeof e=="boolean"?e:typeof e=="function"?e(t,n,r):e?!!e:!1}function Ma(e,t){return Object.hasOwnProperty.call(e,t)}function xa(e,t,n,r){return new Error("Required ".concat(e[t]," `").concat(t,"` was not specified in `").concat(n,"`."))}function Na(e,t){if(typeof e!="function")throw new TypeError(ka);if(t&&typeof t!="string")throw new TypeError(Ca)}function Zn(e,t,n){return Na(e,n),function(r,o,i){for(var a=arguments.length,s=new Array(a>3?a-3:0),l=3;l3&&arguments[3]!==void 0?arguments[3]:!1;e.addEventListener(t,n,r)}function Da(e,t,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;e.removeEventListener(t,n,r)}function Ia(e,t,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,o;o=function(a){n(a),Da(e,t,o)},Pa(e,t,o,r)}function Jn(){}var Br=(function(e){gt(n,e);var t=bt(n);function n(){return yt(this,n),t.apply(this,arguments)}return vt(n,[{key:"componentDidMount",value:function(){Oe()&&(this.node||this.appendNode(),it||this.renderPortal())}},{key:"componentDidUpdate",value:function(){Oe()&&(it||this.renderPortal())}},{key:"componentWillUnmount",value:function(){!Oe()||!this.node||(it||Et.unmountComponentAtNode(this.node),this.node&&this.node.parentNode===document.body&&(document.body.removeChild(this.node),this.node=void 0))}},{key:"appendNode",value:function(){var o=this.props,i=o.id,a=o.zIndex;this.node||(this.node=document.createElement("div"),i&&(this.node.id=i),a&&(this.node.style.zIndex=a),document.body.appendChild(this.node))}},{key:"renderPortal",value:function(){if(!Oe())return null;var o=this.props,i=o.children,a=o.setRef;if(this.node||this.appendNode(),it)return Et.createPortal(i,this.node);var s=Et.unstable_renderSubtreeIntoContainer(this,i.length>1?w.createElement("div",null,i):i[0],this.node);return a(s),null}},{key:"renderReact16",value:function(){var o=this.props,i=o.hasChildren,a=o.placement,s=o.target;return i?this.renderPortal():s||a==="center"?this.renderPortal():null}},{key:"render",value:function(){return it?this.renderReact16():null}}]),n})(w.Component);ne(Br,"propTypes",{children:T.oneOfType([T.element,T.array]),hasChildren:T.bool,id:T.oneOfType([T.string,T.number]),placement:T.string,setRef:T.func.isRequired,target:T.oneOfType([T.object,T.string]),zIndex:T.number});var $r=(function(e){gt(n,e);var t=bt(n);function n(){return yt(this,n),t.apply(this,arguments)}return vt(n,[{key:"parentStyle",get:function(){var o=this.props,i=o.placement,a=o.styles,s=a.arrow.length,l={pointerEvents:"none",position:"absolute",width:"100%"};return i.startsWith("top")?(l.bottom=0,l.left=0,l.right=0,l.height=s):i.startsWith("bottom")?(l.left=0,l.right=0,l.top=0,l.height=s):i.startsWith("left")?(l.right=0,l.top=0,l.bottom=0):i.startsWith("right")&&(l.left=0,l.top=0),l}},{key:"render",value:function(){var o=this.props,i=o.placement,a=o.setArrowRef,s=o.styles,l=s.arrow,u=l.color,f=l.display,c=l.length,d=l.margin,p=l.position,h=l.spread,v={display:f,position:p},O,y=h,m=c;return i.startsWith("top")?(O="0,0 ".concat(y/2,",").concat(m," ").concat(y,",0"),v.bottom=0,v.marginLeft=d,v.marginRight=d):i.startsWith("bottom")?(O="".concat(y,",").concat(m," ").concat(y/2,",0 0,").concat(m),v.top=0,v.marginLeft=d,v.marginRight=d):i.startsWith("left")?(m=h,y=c,O="0,0 ".concat(y,",").concat(m/2," 0,").concat(m),v.right=0,v.marginTop=d,v.marginBottom=d):i.startsWith("right")&&(m=h,y=c,O="".concat(y,",").concat(m," ").concat(y,",0 0,").concat(m/2),v.left=0,v.marginTop=d,v.marginBottom=d),w.createElement("div",{className:"__floater__arrow",style:this.parentStyle},w.createElement("span",{ref:a,style:v},w.createElement("svg",{width:y,height:m,version:"1.1",xmlns:"http://www.w3.org/2000/svg"},w.createElement("polygon",{points:O,fill:u}))))}}]),n})(w.Component);ne($r,"propTypes",{placement:T.string.isRequired,setArrowRef:T.func.isRequired,styles:T.object.isRequired});var Ra=["color","height","width"];function Hr(e){var t=e.handleClick,n=e.styles,r=n.color,o=n.height,i=n.width,a=Fr(n,Ra);return w.createElement("button",{"aria-label":"close",onClick:t,style:a,type:"button"},w.createElement("svg",{width:"".concat(i,"px"),height:"".concat(o,"px"),viewBox:"0 0 18 18",version:"1.1",xmlns:"http://www.w3.org/2000/svg",preserveAspectRatio:"xMidYMid"},w.createElement("g",null,w.createElement("path",{d:"M8.13911129,9.00268191 L0.171521827,17.0258467 C-0.0498027049,17.248715 -0.0498027049,17.6098394 0.171521827,17.8327545 C0.28204354,17.9443526 0.427188206,17.9998706 0.572051765,17.9998706 C0.71714958,17.9998706 0.862013139,17.9443526 0.972581703,17.8327545 L9.0000937,9.74924618 L17.0276057,17.8327545 C17.1384085,17.9443526 17.2832721,17.9998706 17.4281356,17.9998706 C17.5729992,17.9998706 17.718097,17.9443526 17.8286656,17.8327545 C18.0499901,17.6098862 18.0499901,17.2487618 17.8286656,17.0258467 L9.86135722,9.00268191 L17.8340066,0.973848225 C18.0553311,0.750979934 18.0553311,0.389855532 17.8340066,0.16694039 C17.6126821,-0.0556467968 17.254037,-0.0556467968 17.0329467,0.16694039 L9.00042166,8.25611765 L0.967006424,0.167268345 C0.745681892,-0.0553188426 0.387317931,-0.0553188426 0.165993399,0.167268345 C-0.0553311331,0.390136635 -0.0553311331,0.751261038 0.165993399,0.974176179 L8.13920499,9.00268191 L8.13911129,9.00268191 Z",fill:r}))))}Hr.propTypes={handleClick:T.func.isRequired,styles:T.object.isRequired};function Ur(e){var t=e.content,n=e.footer,r=e.handleClick,o=e.open,i=e.positionWrapper,a=e.showCloseButton,s=e.title,l=e.styles,u={content:w.isValidElement(t)?t:w.createElement("div",{className:"__floater__content",style:l.content},t)};return s&&(u.title=w.isValidElement(s)?s:w.createElement("div",{className:"__floater__title",style:l.title},s)),n&&(u.footer=w.isValidElement(n)?n:w.createElement("div",{className:"__floater__footer",style:l.footer},n)),(a||i)&&!g.boolean(o)&&(u.close=w.createElement(Hr,{styles:l.close,handleClick:r})),w.createElement("div",{className:"__floater__container",style:l.container},u.close,u.title,u.content,u.footer)}Ur.propTypes={content:T.node.isRequired,footer:T.node,handleClick:T.func.isRequired,open:T.bool,positionWrapper:T.bool.isRequired,showCloseButton:T.bool.isRequired,styles:T.object.isRequired,title:T.node};var zr=(function(e){gt(n,e);var t=bt(n);function n(){return yt(this,n),t.apply(this,arguments)}return vt(n,[{key:"style",get:function(){var o=this.props,i=o.disableAnimation,a=o.component,s=o.placement,l=o.hideArrow,u=o.status,f=o.styles,c=f.arrow.length,d=f.floater,p=f.floaterCentered,h=f.floaterClosing,v=f.floaterOpening,O=f.floaterWithAnimation,y=f.floaterWithComponent,m={};return l||(s.startsWith("top")?m.padding="0 0 ".concat(c,"px"):s.startsWith("bottom")?m.padding="".concat(c,"px 0 0"):s.startsWith("left")?m.padding="0 ".concat(c,"px 0 0"):s.startsWith("right")&&(m.padding="0 0 0 ".concat(c,"px"))),[$.OPENING,$.OPEN].indexOf(u)!==-1&&(m=K(K({},m),v)),u===$.CLOSING&&(m=K(K({},m),h)),u===$.OPEN&&!i&&(m=K(K({},m),O)),s==="center"&&(m=K(K({},m),p)),a&&(m=K(K({},m),y)),K(K({},d),m)}},{key:"render",value:function(){var o=this.props,i=o.component,a=o.handleClick,s=o.hideArrow,l=o.setFloaterRef,u=o.status,f={},c=["__floater"];return i?w.isValidElement(i)?f.content=w.cloneElement(i,{closeFn:a}):f.content=i({closeFn:a}):f.content=w.createElement(Ur,this.props),u===$.OPEN&&c.push("__floater__open"),s||(f.arrow=w.createElement($r,this.props)),w.createElement("div",{ref:l,className:c.join(" "),style:this.style},w.createElement("div",{className:"__floater__body"},f.content,f.arrow))}}]),n})(w.Component);ne(zr,"propTypes",{component:T.oneOfType([T.func,T.element]),content:T.node,disableAnimation:T.bool.isRequired,footer:T.node,handleClick:T.func.isRequired,hideArrow:T.bool.isRequired,open:T.bool,placement:T.string.isRequired,positionWrapper:T.bool.isRequired,setArrowRef:T.func.isRequired,setFloaterRef:T.func.isRequired,showCloseButton:T.bool,status:T.string.isRequired,styles:T.object.isRequired,title:T.node});var Yr=(function(e){gt(n,e);var t=bt(n);function n(){return yt(this,n),t.apply(this,arguments)}return vt(n,[{key:"render",value:function(){var o=this.props,i=o.children,a=o.handleClick,s=o.handleMouseEnter,l=o.handleMouseLeave,u=o.setChildRef,f=o.setWrapperRef,c=o.style,d=o.styles,p;if(i)if(w.Children.count(i)===1)if(!w.isValidElement(i))p=w.createElement("span",null,i);else{var h=g.function(i.type)?"innerRef":"ref";p=w.cloneElement(w.Children.only(i),ne({},h,u))}else p=i;return p?w.createElement("span",{ref:f,style:K(K({},d),c),onClick:a,onMouseEnter:s,onMouseLeave:l},p):null}}]),n})(w.Component);ne(Yr,"propTypes",{children:T.node,handleClick:T.func.isRequired,handleMouseEnter:T.func.isRequired,handleMouseLeave:T.func.isRequired,setChildRef:T.func.isRequired,setWrapperRef:T.func.isRequired,style:T.object,styles:T.object.isRequired});var Wa={zIndex:100};function Aa(e){var t=ye(Wa,e.options||{});return{wrapper:{cursor:"help",display:"inline-flex",flexDirection:"column",zIndex:t.zIndex},wrapperPosition:{left:-1e3,position:"absolute",top:-1e3,visibility:"hidden"},floater:{display:"inline-block",filter:"drop-shadow(0 0 3px rgba(0, 0, 0, 0.3))",maxWidth:300,opacity:0,position:"relative",transition:"opacity 0.3s",visibility:"hidden",zIndex:t.zIndex},floaterOpening:{opacity:1,visibility:"visible"},floaterWithAnimation:{opacity:1,transition:"opacity 0.3s, transform 0.2s",visibility:"visible"},floaterWithComponent:{maxWidth:"100%"},floaterClosing:{opacity:0,visibility:"visible"},floaterCentered:{left:"50%",position:"fixed",top:"50%",transform:"translate(-50%, -50%)"},container:{backgroundColor:"#fff",color:"#666",minHeight:60,minWidth:200,padding:20,position:"relative",zIndex:10},title:{borderBottom:"1px solid #555",color:"#555",fontSize:18,marginBottom:5,paddingBottom:6,paddingRight:18},content:{fontSize:15},close:{backgroundColor:"transparent",border:0,borderRadius:0,color:"#555",fontSize:0,height:15,outline:"none",padding:10,position:"absolute",right:0,top:0,width:15,WebkitAppearance:"none"},footer:{borderTop:"1px solid #ccc",fontSize:13,marginTop:10,paddingTop:5},arrow:{color:"#fff",display:"inline-flex",length:16,margin:8,position:"absolute",spread:32},options:t}}var _a=["arrow","flip","offset"],ja=["position","top","right","bottom","left"],vn=(function(e){gt(n,e);var t=bt(n);function n(r){var o;return yt(this,n),o=t.call(this,r),ne(xe(o),"setArrowRef",function(i){o.arrowRef=i}),ne(xe(o),"setChildRef",function(i){o.childRef=i}),ne(xe(o),"setFloaterRef",function(i){o.floaterRef=i}),ne(xe(o),"setWrapperRef",function(i){o.wrapperRef=i}),ne(xe(o),"handleTransitionEnd",function(){var i=o.state.status,a=o.props.callback;o.wrapperPopper&&o.wrapperPopper.instance.update(),o.setState({status:i===$.OPENING?$.OPEN:$.IDLE},function(){var s=o.state.status;a(s===$.OPEN?"open":"close",o.props)})}),ne(xe(o),"handleClick",function(){var i=o.props,a=i.event,s=i.open;if(!g.boolean(s)){var l=o.state,u=l.positionWrapper,f=l.status;(o.event==="click"||o.event==="hover"&&u)&&(St({title:"click",data:[{event:a,status:f===$.OPEN?"closing":"opening"}],debug:o.debug}),o.toggle())}}),ne(xe(o),"handleMouseEnter",function(){var i=o.props,a=i.event,s=i.open;if(!(g.boolean(s)||Kt())){var l=o.state.status;o.event==="hover"&&l===$.IDLE&&(St({title:"mouseEnter",data:[{key:"originalEvent",value:a}],debug:o.debug}),clearTimeout(o.eventDelayTimeout),o.toggle())}}),ne(xe(o),"handleMouseLeave",function(){var i=o.props,a=i.event,s=i.eventDelay,l=i.open;if(!(g.boolean(l)||Kt())){var u=o.state,f=u.status,c=u.positionWrapper;o.event==="hover"&&(St({title:"mouseLeave",data:[{key:"originalEvent",value:a}],debug:o.debug}),s?[$.OPENING,$.OPEN].indexOf(f)!==-1&&!c&&!o.eventDelayTimeout&&(o.eventDelayTimeout=setTimeout(function(){delete o.eventDelayTimeout,o.toggle()},s*1e3)):o.toggle($.IDLE))}}),o.state={currentPlacement:r.placement,needsUpdate:!1,positionWrapper:r.wrapperOptions.position&&!!r.target,status:$.INIT,statusWrapper:$.INIT},o._isMounted=!1,o.hasMounted=!1,Oe()&&window.addEventListener("load",function(){o.popper&&o.popper.instance.update(),o.wrapperPopper&&o.wrapperPopper.instance.update()}),o}return vt(n,[{key:"componentDidMount",value:function(){if(Oe()){var o=this.state.positionWrapper,i=this.props,a=i.children,s=i.open,l=i.target;this._isMounted=!0,St({title:"init",data:{hasChildren:!!a,hasTarget:!!l,isControlled:g.boolean(s),positionWrapper:o,target:this.target,floater:this.floaterRef},debug:this.debug}),this.hasMounted||(this.initPopper(),this.hasMounted=!0),!a&&l&&g.boolean(s)}}},{key:"componentDidUpdate",value:function(o,i){if(Oe()){var a=this.props,s=a.autoOpen,l=a.open,u=a.target,f=a.wrapperOptions,c=va(i,this.state),d=c.changedFrom,p=c.changed;if(o.open!==l){var h;g.boolean(l)&&(h=l?$.OPENING:$.CLOSING),this.toggle(h)}(o.wrapperOptions.position!==f.position||o.target!==u)&&this.changeWrapperPosition(this.props),p("status",$.IDLE)&&l?this.toggle($.OPEN):d("status",$.INIT,$.IDLE)&&s&&this.toggle($.OPEN),this.popper&&p("status",$.OPENING)&&this.popper.instance.update(),this.floaterRef&&(p("status",$.OPENING)||p("status",$.CLOSING))&&Ia(this.floaterRef,"transitionend",this.handleTransitionEnd),p("needsUpdate",!0)&&this.rebuildPopper()}}},{key:"componentWillUnmount",value:function(){Oe()&&(this._isMounted=!1,this.popper&&this.popper.instance.destroy(),this.wrapperPopper&&this.wrapperPopper.instance.destroy())}},{key:"initPopper",value:function(){var o=this,i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.target,a=this.state.positionWrapper,s=this.props,l=s.disableFlip,u=s.getPopper,f=s.hideArrow,c=s.offset,d=s.placement,p=s.wrapperOptions,h=d==="top"||d==="bottom"?"flip":["right","bottom-end","top-end","left","top-start","bottom-start"];if(d==="center")this.setState({status:$.IDLE});else if(i&&this.floaterRef){var v=this.options,O=v.arrow,y=v.flip,m=v.offset,S=Fr(v,_a);new ut(i,this.floaterRef,{placement:d,modifiers:K({arrow:K({enabled:!f,element:this.arrowRef},O),flip:K({enabled:!l,behavior:h},y),offset:K({offset:"0, ".concat(c,"px")},m)},S),onCreate:function(C){var M;if(o.popper=C,!((M=o.floaterRef)!==null&&M!==void 0&&M.isConnected)){o.setState({needsUpdate:!0});return}u(C,"floater"),o._isMounted&&o.setState({currentPlacement:C.placement,status:$.IDLE}),d!==C.placement&&setTimeout(function(){C.instance.update()},1)},onUpdate:function(C){o.popper=C;var M=o.state.currentPlacement;o._isMounted&&C.placement!==M&&o.setState({currentPlacement:C.placement})}})}if(a){var D=g.undefined(p.offset)?0:p.offset;new ut(this.target,this.wrapperRef,{placement:p.placement||d,modifiers:{arrow:{enabled:!1},offset:{offset:"0, ".concat(D,"px")},flip:{enabled:!1}},onCreate:function(C){o.wrapperPopper=C,o._isMounted&&o.setState({statusWrapper:$.IDLE}),u(C,"wrapper"),d!==C.placement&&setTimeout(function(){C.instance.update()},1)}})}}},{key:"rebuildPopper",value:function(){var o=this;this.floaterRefInterval=setInterval(function(){var i;(i=o.floaterRef)!==null&&i!==void 0&&i.isConnected&&(clearInterval(o.floaterRefInterval),o.setState({needsUpdate:!1}),o.initPopper())},50)}},{key:"changeWrapperPosition",value:function(o){var i=o.target,a=o.wrapperOptions;this.setState({positionWrapper:a.position&&!!i})}},{key:"toggle",value:function(o){var i=this.state.status,a=i===$.OPEN?$.CLOSING:$.OPENING;g.undefined(o)||(a=o),this.setState({status:a})}},{key:"debug",get:function(){var o=this.props.debug;return o||Oe()&&"ReactFloaterDebug"in window&&!!window.ReactFloaterDebug}},{key:"event",get:function(){var o=this.props,i=o.disableHoverToClick,a=o.event;return a==="hover"&&Kt()&&!i?"click":a}},{key:"options",get:function(){var o=this.props.options;return ye(Ea,o||{})}},{key:"styles",get:function(){var o=this,i=this.state,a=i.status,s=i.positionWrapper,l=i.statusWrapper,u=this.props.styles,f=ye(Aa(u),u);if(s){var c;[$.IDLE].indexOf(a)===-1||[$.IDLE].indexOf(l)===-1?c=f.wrapperPosition:c=this.wrapperPopper.styles,f.wrapper=K(K({},f.wrapper),c)}if(this.target){var d=window.getComputedStyle(this.target);this.wrapperStyles?f.wrapper=K(K({},f.wrapper),this.wrapperStyles):["relative","static"].indexOf(d.position)===-1&&(this.wrapperStyles={},s||(ja.forEach(function(p){o.wrapperStyles[p]=d[p]}),f.wrapper=K(K({},f.wrapper),this.wrapperStyles),this.target.style.position="relative",this.target.style.top="auto",this.target.style.right="auto",this.target.style.bottom="auto",this.target.style.left="auto"))}return f}},{key:"target",get:function(){if(!Oe())return null;var o=this.props.target;return o?g.domElement(o)?o:document.querySelector(o):this.childRef||this.wrapperRef}},{key:"render",value:function(){var o=this.state,i=o.currentPlacement,a=o.positionWrapper,s=o.status,l=this.props,u=l.children,f=l.component,c=l.content,d=l.disableAnimation,p=l.footer,h=l.hideArrow,v=l.id,O=l.open,y=l.showCloseButton,m=l.style,S=l.target,D=l.title,E=w.createElement(Yr,{handleClick:this.handleClick,handleMouseEnter:this.handleMouseEnter,handleMouseLeave:this.handleMouseLeave,setChildRef:this.setChildRef,setWrapperRef:this.setWrapperRef,style:m,styles:this.styles.wrapper},u),C={};return a?C.wrapperInPortal=E:C.wrapperAsChildren=E,w.createElement("span",null,w.createElement(Br,{hasChildren:!!u,id:v,placement:i,setRef:this.setFloaterRef,target:S,zIndex:this.styles.options.zIndex},w.createElement(zr,{component:f,content:c,disableAnimation:d,footer:p,handleClick:this.handleClick,hideArrow:h||i==="center",open:O,placement:i,positionWrapper:a,setArrowRef:this.setArrowRef,setFloaterRef:this.setFloaterRef,showCloseButton:y,status:s,styles:this.styles,title:D}),C.wrapperInPortal),C.wrapperAsChildren)}}]),n})(w.Component);ne(vn,"propTypes",{autoOpen:T.bool,callback:T.func,children:T.node,component:Zn(T.oneOfType([T.func,T.element]),function(e){return!e.content}),content:Zn(T.node,function(e){return!e.component}),debug:T.bool,disableAnimation:T.bool,disableFlip:T.bool,disableHoverToClick:T.bool,event:T.oneOf(["hover","click"]),eventDelay:T.number,footer:T.node,getPopper:T.func,hideArrow:T.bool,id:T.oneOfType([T.string,T.number]),offset:T.number,open:T.bool,options:T.object,placement:T.oneOf(["top","top-start","top-end","bottom","bottom-start","bottom-end","left","left-start","left-end","right","right-start","right-end","auto","center"]),showCloseButton:T.bool,style:T.object,styles:T.object,target:T.oneOfType([T.object,T.string]),title:T.node,wrapperOptions:T.shape({offset:T.number,placement:T.oneOf(["top","top-start","top-end","bottom","bottom-start","bottom-end","left","left-start","left-end","right","right-start","right-end","auto"]),position:T.bool})});ne(vn,"defaultProps",{autoOpen:!1,callback:Jn,debug:!1,disableAnimation:!1,disableFlip:!1,disableHoverToClick:!1,event:"click",eventDelay:.4,getPopper:Jn,hideArrow:!1,offset:15,placement:"bottom",showCloseButton:!1,styles:{},target:null,wrapperOptions:{position:!1}});var Fa=Object.defineProperty,La=(e,t,n)=>t in e?Fa(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,P=(e,t,n)=>La(e,typeof t!="symbol"?t+"":t,n),z={INIT:"init",START:"start",STOP:"stop",RESET:"reset",PREV:"prev",NEXT:"next",GO:"go",CLOSE:"close",SKIP:"skip",UPDATE:"update"},me={TOUR_START:"tour:start",STEP_BEFORE:"step:before",BEACON:"beacon",TOOLTIP:"tooltip",STEP_AFTER:"step:after",TOUR_END:"tour:end",TOUR_STATUS:"tour:status",TARGET_NOT_FOUND:"error:target_not_found"},A={INIT:"init",READY:"ready",BEACON:"beacon",TOOLTIP:"tooltip",COMPLETE:"complete",ERROR:"error"},B={IDLE:"idle",READY:"ready",WAITING:"waiting",RUNNING:"running",PAUSED:"paused",SKIPPED:"skipped",FINISHED:"finished"};function Re(){var e;return!!(typeof window<"u"&&((e=window.document)!=null&&e.createElement))}function qr(e){return e?e.getBoundingClientRect():null}function Ba(e=!1){const{body:t,documentElement:n}=document;if(!t||!n)return 0;if(e){const r=[t.scrollHeight,t.offsetHeight,n.clientHeight,n.scrollHeight,n.offsetHeight].sort((i,a)=>i-a),o=Math.floor(r.length/2);return r.length%2===0?(r[o-1]+r[o])/2:r[o]}return Math.max(t.scrollHeight,t.offsetHeight,n.clientHeight,n.scrollHeight,n.offsetHeight)}function Ne(e){if(typeof e=="string")try{return document.querySelector(e)}catch{return null}return e}function $a(e){return!e||e.nodeType!==1?null:getComputedStyle(e)}function ft(e,t,n){if(!e)return Fe();const r=wr(e);if(r){if(r.isSameNode(Fe()))return n?document:Fe();if(!(r.scrollHeight>r.offsetHeight)&&!t)return r.style.overflow="initial",Fe()}return r}function At(e,t){if(!e)return!1;const n=ft(e,t);return n?!n.isSameNode(Fe()):!1}function Ha(e){return e.offsetParent!==document.body}function Xe(e,t="fixed"){if(!e||!(e instanceof HTMLElement))return!1;const{nodeName:n}=e,r=$a(e);return n==="BODY"||n==="HTML"?!1:r&&r.position===t?!0:e.parentNode?Xe(e.parentNode,t):!1}function Ua(e){var t;if(!e)return!1;let n=e;for(;n&&n!==document.body;){if(n instanceof HTMLElement){const{display:r,visibility:o}=getComputedStyle(n);if(r==="none"||o==="hidden")return!1}n=(t=n.parentElement)!=null?t:null}return!0}function za(e,t,n){var r,o,i;const a=qr(e),s=ft(e,n),l=At(e,n),u=Xe(e);let f=0,c=(r=a?.top)!=null?r:0;if(l&&u){const d=(o=e?.offsetTop)!=null?o:0,p=(i=s?.scrollTop)!=null?i:0;c=d-p}else s instanceof HTMLElement&&(f=s.scrollTop,!l&&!Xe(e)&&(c+=f),s.isSameNode(Fe())||(c+=Fe().scrollTop));return Math.floor(c-t)}function Ya(e,t,n){var r;if(!e)return 0;const{offsetTop:o=0,scrollTop:i=0}=(r=wr(e))!=null?r:{};let a=e.getBoundingClientRect().top+i;o&&(At(e,n)||Ha(e))&&(a-=o);const s=Math.floor(a-t);return s<0?0:s}function Fe(){var e;return(e=document.scrollingElement)!=null?e:document.documentElement}function qa(e,t){const{duration:n,element:r}=t;return new Promise((o,i)=>{const{scrollTop:a}=r,s=e>a?e-a:a-e;fs.top(r,e,{duration:s<100?50:n},l=>l&&l.message!=="Element already at target scroll position"?i(l):o())})}var st=kt.createPortal!==void 0;function Gr(e=navigator.userAgent){let t=e;return typeof window>"u"?t="node":document.documentMode?t="ie":/Edge/.test(e)?t="edge":window.opera||e.includes(" OPR/")?t="opera":typeof window.InstallTrigger<"u"?t="firefox":window.chrome?t="chrome":/(Version\/([\d._]+).*Safari|CriOS|FxiOS| Mobile\/)/.test(e)&&(t="safari"),t}function Tt(e){return Object.prototype.toString.call(e).slice(8,-1).toLowerCase()}function Se(e,t={}){const{defaultValue:n,step:r,steps:o}=t;let i=An(e);if(i)(i.includes("{step}")||i.includes("{steps}"))&&r&&o&&(i=i.replace("{step}",r.toString()).replace("{steps}",o.toString()));else if(b.isValidElement(e)&&!Object.values(e.props).length&&Tt(e.type)==="function"){const a=e.type({});i=Se(a,t)}else i=An(n);return i}function Ga(e,t){return!N.plainObject(e)||!N.array(t)?!1:Object.keys(e).every(n=>t.includes(n))}function Va(e){const t=/^#?([\da-f])([\da-f])([\da-f])$/i,n=e.replace(t,(o,i,a,s)=>i+i+a+a+s+s),r=/^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i.exec(n);return r?[parseInt(r[1],16),parseInt(r[2],16),parseInt(r[3],16)]:[]}function Xn(e){return e.disableBeacon||e.placement==="center"}function Qn(){return!["chrome","safari","firefox","opera"].includes(Gr())}function $e({data:e,debug:t=!1,title:n,warn:r=!1}){const o=r?console.warn||console.error:console.log;t&&(n&&e?(console.groupCollapsed(`%creact-joyride: ${n}`,"color: #ff0044; font-weight: bold; font-size: 12px;"),Array.isArray(e)?e.forEach(i=>{N.plainObject(i)&&i.key?o.apply(console,[i.key,i.value]):o.apply(console,[i])}):o.apply(console,[e]),console.groupEnd()):console.error("Missing title or data props"))}function Ka(e){return Object.keys(e)}function Vr(e,...t){if(!N.plainObject(e))throw new TypeError("Expected an object");const n={};for(const r in e)({}).hasOwnProperty.call(e,r)&&(t.includes(r)||(n[r]=e[r]));return n}function Za(e,...t){if(!N.plainObject(e))throw new TypeError("Expected an object");if(!t.length)return e;const n={};for(const r in e)({}).hasOwnProperty.call(e,r)&&t.includes(r)&&(n[r]=e[r]);return n}function an(e,t,n){const r=i=>i.replace("{step}",String(t)).replace("{steps}",String(n));if(Tt(e)==="string")return r(e);if(!b.isValidElement(e))return e;const{children:o}=e.props;if(Tt(o)==="string"&&o.includes("{step}"))return b.cloneElement(e,{children:r(o)});if(Array.isArray(o))return b.cloneElement(e,{children:o.map(i=>typeof i=="string"?r(i):an(i,t,n))});if(Tt(e.type)==="function"&&!Object.values(e.props).length){const i=e.type({});return an(i,t,n)}return e}function Ja(e){const{isFirstStep:t,lifecycle:n,previousLifecycle:r,scrollToFirstStep:o,step:i,target:a}=e;return!i.disableScrolling&&(!t||o||n===A.TOOLTIP)&&i.placement!=="center"&&(!i.isFixed||!Xe(a))&&r!==n&&[A.BEACON,A.TOOLTIP].includes(n)}var Xa={options:{preventOverflow:{boundariesElement:"scrollParent"}},wrapperOptions:{offset:-18,position:!0}},Kr={back:"Back",close:"Close",last:"Last",next:"Next",nextLabelWithProgress:"Next (Step {step} of {steps})",open:"Open the dialog",skip:"Skip"},Qa={event:"click",placement:"bottom",offset:10,disableBeacon:!1,disableCloseOnEsc:!1,disableOverlay:!1,disableOverlayClose:!1,disableScrollParentFix:!1,disableScrolling:!1,hideBackButton:!1,hideCloseButton:!1,hideFooter:!1,isFixed:!1,locale:Kr,showProgress:!1,showSkipButton:!1,spotlightClicks:!1,spotlightPadding:10},el={continuous:!1,debug:!1,disableCloseOnEsc:!1,disableOverlay:!1,disableOverlayClose:!1,disableScrolling:!1,disableScrollParentFix:!1,getHelpers:void 0,hideBackButton:!1,run:!0,scrollOffset:20,scrollDuration:300,scrollToFirstStep:!1,showSkipButton:!1,showProgress:!1,spotlightClicks:!1,spotlightPadding:10,steps:[]},tl={arrowColor:"#fff",backgroundColor:"#fff",beaconSize:36,overlayColor:"rgba(0, 0, 0, 0.5)",primaryColor:"#f04",spotlightShadow:"0 0 15px rgba(0, 0, 0, 0.5)",textColor:"#333",width:380,zIndex:100},at={backgroundColor:"transparent",border:0,borderRadius:0,color:"#555",cursor:"pointer",fontSize:16,lineHeight:1,padding:8,WebkitAppearance:"none"},er={borderRadius:4,position:"absolute"};function nl(e,t){var n,r,o,i,a;const{floaterProps:s,styles:l}=e,u=ye((n=t.floaterProps)!=null?n:{},s??{}),f=ye(l??{},(r=t.styles)!=null?r:{}),c=ye(tl,f.options||{}),d=t.placement==="center"||t.disableBeacon;let{width:p}=c;window.innerWidth>480&&(p=380),"width"in c&&(p=typeof c.width=="number"&&window.innerWidthZr(n,t)):($e({title:"validateSteps",data:"steps must be an array",warn:!0,debug:t}),!1)}var Jr={action:"init",controlled:!1,index:0,lifecycle:A.INIT,origin:null,size:0,status:B.IDLE},nr=Ka(Vr(Jr,"controlled","size")),ol=class{constructor(e){P(this,"beaconPopper"),P(this,"tooltipPopper"),P(this,"data",new Map),P(this,"listener"),P(this,"store",new Map),P(this,"addListener",o=>{this.listener=o}),P(this,"setSteps",o=>{const{size:i,status:a}=this.getState(),s={size:o.length,status:a};this.data.set("steps",o),a===B.WAITING&&!i&&o.length&&(s.status=B.RUNNING),this.setState(s)}),P(this,"getPopper",o=>o==="beacon"?this.beaconPopper:this.tooltipPopper),P(this,"setPopper",(o,i)=>{o==="beacon"?this.beaconPopper=i:this.tooltipPopper=i}),P(this,"cleanupPoppers",()=>{this.beaconPopper=null,this.tooltipPopper=null}),P(this,"close",(o=null)=>{const{index:i,status:a}=this.getState();a===B.RUNNING&&this.setState({...this.getNextState({action:z.CLOSE,index:i+1,origin:o})})}),P(this,"go",o=>{const{controlled:i,status:a}=this.getState();if(i||a!==B.RUNNING)return;const s=this.getSteps()[o];this.setState({...this.getNextState({action:z.GO,index:o}),status:s?a:B.FINISHED})}),P(this,"info",()=>this.getState()),P(this,"next",()=>{const{index:o,status:i}=this.getState();i===B.RUNNING&&this.setState(this.getNextState({action:z.NEXT,index:o+1}))}),P(this,"open",()=>{const{status:o}=this.getState();o===B.RUNNING&&this.setState({...this.getNextState({action:z.UPDATE,lifecycle:A.TOOLTIP})})}),P(this,"prev",()=>{const{index:o,status:i}=this.getState();i===B.RUNNING&&this.setState({...this.getNextState({action:z.PREV,index:o-1})})}),P(this,"reset",(o=!1)=>{const{controlled:i}=this.getState();i||this.setState({...this.getNextState({action:z.RESET,index:0}),status:o?B.RUNNING:B.READY})}),P(this,"skip",()=>{const{status:o}=this.getState();o===B.RUNNING&&this.setState({action:z.SKIP,lifecycle:A.INIT,status:B.SKIPPED})}),P(this,"start",o=>{const{index:i,size:a}=this.getState();this.setState({...this.getNextState({action:z.START,index:N.number(o)?o:i},!0),status:a?B.RUNNING:B.WAITING})}),P(this,"stop",(o=!1)=>{const{index:i,status:a}=this.getState();[B.FINISHED,B.SKIPPED].includes(a)||this.setState({...this.getNextState({action:z.STOP,index:i+(o?1:0)}),status:B.PAUSED})}),P(this,"update",o=>{var i,a;if(!Ga(o,nr))throw new Error(`State is not valid. Valid keys: ${nr.join(", ")}`);this.setState({...this.getNextState({...this.getState(),...o,action:(i=o.action)!=null?i:z.UPDATE,origin:(a=o.origin)!=null?a:null},!0)})});const{continuous:t=!1,stepIndex:n,steps:r=[]}=e??{};this.setState({action:z.INIT,controlled:N.number(n),continuous:t,index:N.number(n)?n:0,lifecycle:A.INIT,origin:null,status:r.length?B.READY:B.IDLE},!0),this.beaconPopper=null,this.tooltipPopper=null,this.listener=null,this.setSteps(r)}getState(){return this.store.size?{action:this.store.get("action")||"",controlled:this.store.get("controlled")||!1,index:parseInt(this.store.get("index"),10),lifecycle:this.store.get("lifecycle")||"",origin:this.store.get("origin")||null,size:this.store.get("size")||0,status:this.store.get("status")||""}:{...Jr}}getNextState(e,t=!1){var n,r,o,i,a;const{action:s,controlled:l,index:u,size:f,status:c}=this.getState(),d=N.number(e.index)?e.index:u,p=l&&!t?u:Math.min(Math.max(d,0),f);return{action:(n=e.action)!=null?n:s,controlled:l,index:p,lifecycle:(r=e.lifecycle)!=null?r:A.INIT,origin:(o=e.origin)!=null?o:null,size:(i=e.size)!=null?i:f,status:p===f?B.FINISHED:(a=e.status)!=null?a:c}}getSteps(){const e=this.data.get("steps");return Array.isArray(e)?e:[]}hasUpdatedState(e){const t=JSON.stringify(e),n=JSON.stringify(this.getState());return t!==n}setState(e,t=!1){const n=this.getState(),{action:r,index:o,lifecycle:i,origin:a=null,size:s,status:l}={...n,...e};this.store.set("action",r),this.store.set("index",o),this.store.set("lifecycle",i),this.store.set("origin",a),this.store.set("size",s),this.store.set("status",l),t&&(this.store.set("controlled",e.controlled),this.store.set("continuous",e.continuous)),this.listener&&this.hasUpdatedState(n)&&this.listener(this.getState())}getHelpers(){return{close:this.close,go:this.go,info:this.info,next:this.next,open:this.open,prev:this.prev,reset:this.reset,skip:this.skip}}};function il(e){return new ol(e)}function sl({styles:e}){return b.createElement("div",{key:"JoyrideSpotlight",className:"react-joyride__spotlight","data-test-id":"spotlight",style:e})}var al=sl,ll=class extends b.Component{constructor(){super(...arguments),P(this,"isActive",!1),P(this,"resizeTimeout"),P(this,"scrollTimeout"),P(this,"scrollParent"),P(this,"state",{isScrolling:!1,mouseOverSpotlight:!1,showSpotlight:!0}),P(this,"hideSpotlight",()=>{const{continuous:e,disableOverlay:t,lifecycle:n}=this.props,r=[A.INIT,A.BEACON,A.COMPLETE,A.ERROR];return t||(e?r.includes(n):n!==A.TOOLTIP)}),P(this,"handleMouseMove",e=>{const{mouseOverSpotlight:t}=this.state,{height:n,left:r,position:o,top:i,width:a}=this.spotlightStyles,s=o==="fixed"?e.clientY:e.pageY,l=o==="fixed"?e.clientX:e.pageX,u=s>=i&&s<=i+n,c=l>=r&&l<=r+a&&u;c!==t&&this.updateState({mouseOverSpotlight:c})}),P(this,"handleScroll",()=>{const{target:e}=this.props,t=Ne(e);if(this.scrollParent!==document){const{isScrolling:n}=this.state;n||this.updateState({isScrolling:!0,showSpotlight:!1}),clearTimeout(this.scrollTimeout),this.scrollTimeout=window.setTimeout(()=>{this.updateState({isScrolling:!1,showSpotlight:!0})},50)}else Xe(t,"sticky")&&this.updateState({})}),P(this,"handleResize",()=>{clearTimeout(this.resizeTimeout),this.resizeTimeout=window.setTimeout(()=>{this.isActive&&this.forceUpdate()},100)})}componentDidMount(){const{debug:e,disableScrolling:t,disableScrollParentFix:n=!1,target:r}=this.props,o=Ne(r);this.scrollParent=ft(o??document.body,n,!0),this.isActive=!0,window.addEventListener("resize",this.handleResize)}componentDidUpdate(e){var t;const{disableScrollParentFix:n,lifecycle:r,spotlightClicks:o,target:i}=this.props,{changed:a}=Mt(e,this.props);if(a("target")||a("disableScrollParentFix")){const s=Ne(i);this.scrollParent=ft(s??document.body,n,!0)}a("lifecycle",A.TOOLTIP)&&((t=this.scrollParent)==null||t.addEventListener("scroll",this.handleScroll,{passive:!0}),setTimeout(()=>{const{isScrolling:s}=this.state;s||this.updateState({showSpotlight:!0})},100)),(a("spotlightClicks")||a("disableOverlay")||a("lifecycle"))&&(o&&r===A.TOOLTIP?window.addEventListener("mousemove",this.handleMouseMove,!1):r!==A.TOOLTIP&&window.removeEventListener("mousemove",this.handleMouseMove))}componentWillUnmount(){var e;this.isActive=!1,window.removeEventListener("mousemove",this.handleMouseMove),window.removeEventListener("resize",this.handleResize),clearTimeout(this.resizeTimeout),clearTimeout(this.scrollTimeout),(e=this.scrollParent)==null||e.removeEventListener("scroll",this.handleScroll)}get overlayStyles(){const{mouseOverSpotlight:e}=this.state,{disableOverlayClose:t,placement:n,styles:r}=this.props;let o=r.overlay;return Qn()&&(o=n==="center"?r.overlayLegacyCenter:r.overlayLegacy),{cursor:t?"default":"pointer",height:Ba(),pointerEvents:e?"none":"auto",...o}}get spotlightStyles(){var e,t,n;const{showSpotlight:r}=this.state,{disableScrollParentFix:o=!1,spotlightClicks:i,spotlightPadding:a=0,styles:s,target:l}=this.props,u=Ne(l),f=qr(u),c=Xe(u),d=za(u,a,o);return{...Qn()?s.spotlightLegacy:s.spotlight,height:Math.round(((e=f?.height)!=null?e:0)+a*2),left:Math.round(((t=f?.left)!=null?t:0)-a),opacity:r?1:0,pointerEvents:i?"none":"auto",position:c?"fixed":"absolute",top:d,transition:"opacity 0.2s",width:Math.round(((n=f?.width)!=null?n:0)+a*2)}}updateState(e){this.isActive&&this.setState(t=>({...t,...e}))}render(){const{showSpotlight:e}=this.state,{onClickOverlay:t,placement:n}=this.props,{hideSpotlight:r,overlayStyles:o,spotlightStyles:i}=this;if(r())return null;let a=n!=="center"&&e&&b.createElement(al,{styles:i});if(Gr()==="safari"){const{mixBlendMode:s,zIndex:l,...u}=o;a=b.createElement("div",{style:{...u}},a),delete o.backgroundColor}return b.createElement("div",{className:"react-joyride__overlay","data-test-id":"overlay",onClick:t,role:"presentation",style:o},a)}},cl=class extends b.Component{constructor(){super(...arguments),P(this,"node",null)}componentDidMount(){const{id:e}=this.props;Re()&&(this.node=document.createElement("div"),this.node.id=e,document.body.appendChild(this.node),st||this.renderReact15())}componentDidUpdate(){Re()&&(st||this.renderReact15())}componentWillUnmount(){!Re()||!this.node||(st||kt.unmountComponentAtNode(this.node),this.node.parentNode===document.body&&(document.body.removeChild(this.node),this.node=null))}renderReact15(){if(!Re())return;const{children:e}=this.props;this.node&&kt.unstable_renderSubtreeIntoContainer(this,e,this.node)}renderReact16(){if(!Re()||!st)return null;const{children:e}=this.props;return this.node?kt.createPortal(e,this.node):null}render(){return st?this.renderReact16():null}},ul=class{constructor(e,t){if(P(this,"element"),P(this,"options"),P(this,"canBeTabbed",n=>{const{tabIndex:r}=n;return r===null||r<0?!1:this.canHaveFocus(n)}),P(this,"canHaveFocus",n=>{const r=/input|select|textarea|button|object/,o=n.nodeName.toLowerCase();return(r.test(o)&&!n.getAttribute("disabled")||o==="a"&&!!n.getAttribute("href"))&&this.isVisible(n)}),P(this,"findValidTabElements",()=>[].slice.call(this.element.querySelectorAll("*"),0).filter(this.canBeTabbed)),P(this,"handleKeyDown",n=>{const{code:r="Tab"}=this.options;n.code===r&&this.interceptTab(n)}),P(this,"interceptTab",n=>{n.preventDefault();const r=this.findValidTabElements(),{shiftKey:o}=n;if(!r.length)return;let i=document.activeElement?r.indexOf(document.activeElement):0;i===-1||!o&&i+1===r.length?i=0:o&&i===0?i=r.length-1:i+=o?-1:1,r[i].focus()}),P(this,"isHidden",n=>{const r=n.offsetWidth<=0&&n.offsetHeight<=0,o=window.getComputedStyle(n);return r&&!n.innerHTML?!0:r&&o.getPropertyValue("overflow")!=="visible"||o.getPropertyValue("display")==="none"}),P(this,"isVisible",n=>{let r=n;for(;r;)if(r instanceof HTMLElement){if(r===document.body)break;if(this.isHidden(r))return!1;r=r.parentNode}return!0}),P(this,"removeScope",()=>{window.removeEventListener("keydown",this.handleKeyDown)}),P(this,"checkFocus",n=>{document.activeElement!==n&&(n.focus(),window.requestAnimationFrame(()=>this.checkFocus(n)))}),P(this,"setFocus",()=>{const{selector:n}=this.options;if(!n)return;const r=this.element.querySelector(n);r&&window.requestAnimationFrame(()=>this.checkFocus(r))}),!(e instanceof HTMLElement))throw new TypeError("Invalid parameter: element must be an HTMLElement");this.element=e,this.options=t,window.addEventListener("keydown",this.handleKeyDown,!1),this.setFocus()}},fl=class extends b.Component{constructor(e){if(super(e),P(this,"beacon",null),P(this,"setBeaconRef",o=>{this.beacon=o}),e.beaconComponent)return;const t=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.id="joyride-beacon-animation",e.nonce&&n.setAttribute("nonce",e.nonce),n.appendChild(document.createTextNode(` +import{k as Lo,u as Ve,R as Bo,o as $o,O as Ho,C as Uo,r as ct}from"./radix-core-C3XKqQJw.js";import{r as b,j as zo,R as w,c as Et,b as kt}from"./router-CWhjJi2n.js";import{g as Dt}from"./react-vendor-Dtc2IqVY.js";import{ai as T}from"./charts-Dhri-zxi.js";import{a as Yo,b as qo,d as Go,e as Vo,f as Ko,g as Zo,h as Jo,i as Xo,j as Qo,k as ei,l as ti,m as ni,n as ri,o as oi,p as ii,q as si,r as ai,s as li,t as ci,u as ui,v as fi,w as di,x as pi,y as hi,z as mi,A as yi,B as vi,C as gi,D as bi,E as wi,F as Oi,G as Si,H as cr}from"./utils-CCeOswSm.js";var Sn=1,Ei=.9,ki=.8,Ci=.17,$t=.1,Ht=.999,Ti=.9999,Mi=.99,xi=/[\\\/_+.#"@\[\(\{&]/,Ni=/[\\\/_+.#"@\[\(\{&]/g,Pi=/[\s-]/,ur=/[\s-]/g;function Qt(e,t,n,r,o,i,a){if(i===t.length)return o===e.length?Sn:Mi;var s=`${o},${i}`;if(a[s]!==void 0)return a[s];for(var l=r.charAt(i),u=n.indexOf(l,o),f=0,c,d,p,h;u>=0;)c=Qt(e,t,n,r,u+1,i+1,a),c>f&&(u===o?c*=Sn:xi.test(e.charAt(u-1))?(c*=ki,p=e.slice(o,u-1).match(Ni),p&&o>0&&(c*=Math.pow(Ht,p.length))):Pi.test(e.charAt(u-1))?(c*=Ei,h=e.slice(o,u-1).match(ur),h&&o>0&&(c*=Math.pow(Ht,h.length))):(c*=Ci,o>0&&(c*=Math.pow(Ht,u-o))),e.charAt(u)!==t.charAt(i)&&(c*=Ti)),(c<$t&&n.charAt(u-1)===r.charAt(i+1)||r.charAt(i+1)===r.charAt(i)&&n.charAt(u-1)!==r.charAt(i))&&(d=Qt(e,t,n,r,u+1,i+2,a),d*$t>c&&(c=d*$t)),c>f&&(f=c),u=n.indexOf(l,u+1);return a[s]=f,f}function En(e){return e.toLowerCase().replace(ur," ")}function Di(e,t,n){return e=n&&n.length>0?`${e+" "+n.join(" ")}`:e,Qt(e,t,En(e),En(t),0,0,{})}var Ii=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],_e=Ii.reduce((e,t)=>{const n=Lo(`Primitive.${t}`),r=b.forwardRef((o,i)=>{const{asChild:a,...s}=o,l=a?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),zo.jsx(l,{...s,ref:i})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{}),nt='[cmdk-group=""]',Ut='[cmdk-group-items=""]',Ri='[cmdk-group-heading=""]',fr='[cmdk-item=""]',kn=`${fr}:not([aria-disabled="true"])`,en="cmdk-item-select",qe="data-value",Wi=(e,t,n)=>Di(e,t,n),dr=b.createContext(void 0),dt=()=>b.useContext(dr),pr=b.createContext(void 0),cn=()=>b.useContext(pr),hr=b.createContext(void 0),mr=b.forwardRef((e,t)=>{let n=Ge(()=>{var k,W;return{search:"",value:(W=(k=e.value)!=null?k:e.defaultValue)!=null?W:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),r=Ge(()=>new Set),o=Ge(()=>new Map),i=Ge(()=>new Map),a=Ge(()=>new Set),s=yr(e),{label:l,children:u,value:f,onValueChange:c,filter:d,shouldFilter:p,loop:h,disablePointerSelection:v=!1,vimBindings:O=!0,...y}=e,m=Ve(),S=Ve(),D=Ve(),E=b.useRef(null),C=Yi();Be(()=>{if(f!==void 0){let k=f.trim();n.current.value=k,M.emit()}},[f]),Be(()=>{C(6,Me)},[]);let M=b.useMemo(()=>({subscribe:k=>(a.current.add(k),()=>a.current.delete(k)),snapshot:()=>n.current,setState:(k,W,F)=>{var R,U,G,ee;if(!Object.is(n.current[k],W)){if(n.current[k]=W,k==="search")re(),Y(),C(1,Q);else if(k==="value"){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let X=document.getElementById(D);X?X.focus():(R=document.getElementById(m))==null||R.focus()}if(C(7,()=>{var X;n.current.selectedItemId=(X=le())==null?void 0:X.id,M.emit()}),F||C(5,Me),((U=s.current)==null?void 0:U.value)!==void 0){let X=W??"";(ee=(G=s.current).onValueChange)==null||ee.call(G,X);return}}M.emit()}},emit:()=>{a.current.forEach(k=>k())}}),[]),j=b.useMemo(()=>({value:(k,W,F)=>{var R;W!==((R=i.current.get(k))==null?void 0:R.value)&&(i.current.set(k,{value:W,keywords:F}),n.current.filtered.items.set(k,J(W,F)),C(2,()=>{Y(),M.emit()}))},item:(k,W)=>(r.current.add(k),W&&(o.current.has(W)?o.current.get(W).add(k):o.current.set(W,new Set([k]))),C(3,()=>{re(),Y(),n.current.value||Q(),M.emit()}),()=>{i.current.delete(k),r.current.delete(k),n.current.filtered.items.delete(k);let F=le();C(4,()=>{re(),F?.getAttribute("id")===k&&Q(),M.emit()})}),group:k=>(o.current.has(k)||o.current.set(k,new Set),()=>{i.current.delete(k),o.current.delete(k)}),filter:()=>s.current.shouldFilter,label:l||e["aria-label"],getDisablePointerSelection:()=>s.current.disablePointerSelection,listId:m,inputId:D,labelId:S,listInnerRef:E}),[]);function J(k,W){var F,R;let U=(R=(F=s.current)==null?void 0:F.filter)!=null?R:Wi;return k?U(k,n.current.search,W):0}function Y(){if(!n.current.search||s.current.shouldFilter===!1)return;let k=n.current.filtered.items,W=[];n.current.filtered.groups.forEach(R=>{let U=o.current.get(R),G=0;U.forEach(ee=>{let X=k.get(ee);G=Math.max(X,G)}),W.push([R,G])});let F=E.current;de().sort((R,U)=>{var G,ee;let X=R.getAttribute("id"),ze=U.getAttribute("id");return((G=k.get(ze))!=null?G:0)-((ee=k.get(X))!=null?ee:0)}).forEach(R=>{let U=R.closest(Ut);U?U.appendChild(R.parentElement===U?R:R.closest(`${Ut} > *`)):F.appendChild(R.parentElement===F?R:R.closest(`${Ut} > *`))}),W.sort((R,U)=>U[1]-R[1]).forEach(R=>{var U;let G=(U=E.current)==null?void 0:U.querySelector(`${nt}[${qe}="${encodeURIComponent(R[0])}"]`);G?.parentElement.appendChild(G)})}function Q(){let k=de().find(F=>F.getAttribute("aria-disabled")!=="true"),W=k?.getAttribute(qe);M.setState("value",W||void 0)}function re(){var k,W,F,R;if(!n.current.search||s.current.shouldFilter===!1){n.current.filtered.count=r.current.size;return}n.current.filtered.groups=new Set;let U=0;for(let G of r.current){let ee=(W=(k=i.current.get(G))==null?void 0:k.value)!=null?W:"",X=(R=(F=i.current.get(G))==null?void 0:F.keywords)!=null?R:[],ze=J(ee,X);n.current.filtered.items.set(G,ze),ze>0&&U++}for(let[G,ee]of o.current)for(let X of ee)if(n.current.filtered.items.get(X)>0){n.current.filtered.groups.add(G);break}n.current.filtered.count=U}function Me(){var k,W,F;let R=le();R&&(((k=R.parentElement)==null?void 0:k.firstChild)===R&&((F=(W=R.closest(nt))==null?void 0:W.querySelector(Ri))==null||F.scrollIntoView({block:"nearest"})),R.scrollIntoView({block:"nearest"}))}function le(){var k;return(k=E.current)==null?void 0:k.querySelector(`${fr}[aria-selected="true"]`)}function de(){var k;return Array.from(((k=E.current)==null?void 0:k.querySelectorAll(kn))||[])}function Ie(k){let W=de()[k];W&&M.setState("value",W.getAttribute(qe))}function je(k){var W;let F=le(),R=de(),U=R.findIndex(ee=>ee===F),G=R[U+k];(W=s.current)!=null&&W.loop&&(G=U+k<0?R[R.length-1]:U+k===R.length?R[0]:R[U+k]),G&&M.setState("value",G.getAttribute(qe))}function ie(k){let W=le(),F=W?.closest(nt),R;for(;F&&!R;)F=k>0?Ui(F,nt):zi(F,nt),R=F?.querySelector(kn);R?M.setState("value",R.getAttribute(qe)):je(k)}let se=()=>Ie(de().length-1),pe=k=>{k.preventDefault(),k.metaKey?se():k.altKey?ie(1):je(1)},Ue=k=>{k.preventDefault(),k.metaKey?Ie(0):k.altKey?ie(-1):je(-1)};return b.createElement(_e.div,{ref:t,tabIndex:-1,...y,"cmdk-root":"",onKeyDown:k=>{var W;(W=y.onKeyDown)==null||W.call(y,k);let F=k.nativeEvent.isComposing||k.keyCode===229;if(!(k.defaultPrevented||F))switch(k.key){case"n":case"j":{O&&k.ctrlKey&&pe(k);break}case"ArrowDown":{pe(k);break}case"p":case"k":{O&&k.ctrlKey&&Ue(k);break}case"ArrowUp":{Ue(k);break}case"Home":{k.preventDefault(),Ie(0);break}case"End":{k.preventDefault(),se();break}case"Enter":{k.preventDefault();let R=le();if(R){let U=new Event(en);R.dispatchEvent(U)}}}}},b.createElement("label",{"cmdk-label":"",htmlFor:j.inputId,id:j.labelId,style:Gi},l),It(e,k=>b.createElement(pr.Provider,{value:M},b.createElement(dr.Provider,{value:j},k))))}),Ai=b.forwardRef((e,t)=>{var n,r;let o=Ve(),i=b.useRef(null),a=b.useContext(hr),s=dt(),l=yr(e),u=(r=(n=l.current)==null?void 0:n.forceMount)!=null?r:a?.forceMount;Be(()=>{if(!u)return s.item(o,a?.id)},[u]);let f=vr(o,i,[e.value,e.children,i],e.keywords),c=cn(),d=We(C=>C.value&&C.value===f.current),p=We(C=>u||s.filter()===!1?!0:C.search?C.filtered.items.get(o)>0:!0);b.useEffect(()=>{let C=i.current;if(!(!C||e.disabled))return C.addEventListener(en,h),()=>C.removeEventListener(en,h)},[p,e.onSelect,e.disabled]);function h(){var C,M;v(),(M=(C=l.current).onSelect)==null||M.call(C,f.current)}function v(){c.setState("value",f.current,!0)}if(!p)return null;let{disabled:O,value:y,onSelect:m,forceMount:S,keywords:D,...E}=e;return b.createElement(_e.div,{ref:ct(i,t),...E,id:o,"cmdk-item":"",role:"option","aria-disabled":!!O,"aria-selected":!!d,"data-disabled":!!O,"data-selected":!!d,onPointerMove:O||s.getDisablePointerSelection()?void 0:v,onClick:O?void 0:h},e.children)}),_i=b.forwardRef((e,t)=>{let{heading:n,children:r,forceMount:o,...i}=e,a=Ve(),s=b.useRef(null),l=b.useRef(null),u=Ve(),f=dt(),c=We(p=>o||f.filter()===!1?!0:p.search?p.filtered.groups.has(a):!0);Be(()=>f.group(a),[]),vr(a,s,[e.value,e.heading,l]);let d=b.useMemo(()=>({id:a,forceMount:o}),[o]);return b.createElement(_e.div,{ref:ct(s,t),...i,"cmdk-group":"",role:"presentation",hidden:c?void 0:!0},n&&b.createElement("div",{ref:l,"cmdk-group-heading":"","aria-hidden":!0,id:u},n),It(e,p=>b.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":n?u:void 0},b.createElement(hr.Provider,{value:d},p))))}),ji=b.forwardRef((e,t)=>{let{alwaysRender:n,...r}=e,o=b.useRef(null),i=We(a=>!a.search);return!n&&!i?null:b.createElement(_e.div,{ref:ct(o,t),...r,"cmdk-separator":"",role:"separator"})}),Fi=b.forwardRef((e,t)=>{let{onValueChange:n,...r}=e,o=e.value!=null,i=cn(),a=We(u=>u.search),s=We(u=>u.selectedItemId),l=dt();return b.useEffect(()=>{e.value!=null&&i.setState("search",e.value)},[e.value]),b.createElement(_e.input,{ref:t,...r,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":l.listId,"aria-labelledby":l.labelId,"aria-activedescendant":s,id:l.inputId,type:"text",value:o?e.value:a,onChange:u=>{o||i.setState("search",u.target.value),n?.(u.target.value)}})}),Li=b.forwardRef((e,t)=>{let{children:n,label:r="Suggestions",...o}=e,i=b.useRef(null),a=b.useRef(null),s=We(u=>u.selectedItemId),l=dt();return b.useEffect(()=>{if(a.current&&i.current){let u=a.current,f=i.current,c,d=new ResizeObserver(()=>{c=requestAnimationFrame(()=>{let p=u.offsetHeight;f.style.setProperty("--cmdk-list-height",p.toFixed(1)+"px")})});return d.observe(u),()=>{cancelAnimationFrame(c),d.unobserve(u)}}},[]),b.createElement(_e.div,{ref:ct(i,t),...o,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":s,"aria-label":r,id:l.listId},It(e,u=>b.createElement("div",{ref:ct(a,l.listInnerRef),"cmdk-list-sizer":""},u)))}),Bi=b.forwardRef((e,t)=>{let{open:n,onOpenChange:r,overlayClassName:o,contentClassName:i,container:a,...s}=e;return b.createElement(Bo,{open:n,onOpenChange:r},b.createElement($o,{container:a},b.createElement(Ho,{"cmdk-overlay":"",className:o}),b.createElement(Uo,{"aria-label":e.label,"cmdk-dialog":"",className:i},b.createElement(mr,{ref:t,...s}))))}),$i=b.forwardRef((e,t)=>We(n=>n.filtered.count===0)?b.createElement(_e.div,{ref:t,...e,"cmdk-empty":"",role:"presentation"}):null),Hi=b.forwardRef((e,t)=>{let{progress:n,children:r,label:o="Loading...",...i}=e;return b.createElement(_e.div,{ref:t,...i,"cmdk-loading":"",role:"progressbar","aria-valuenow":n,"aria-valuemin":0,"aria-valuemax":100,"aria-label":o},It(e,a=>b.createElement("div",{"aria-hidden":!0},a)))}),ou=Object.assign(mr,{List:Li,Item:Ai,Input:Fi,Group:_i,Separator:ji,Dialog:Bi,Empty:$i,Loading:Hi});function Ui(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return n;n=n.nextElementSibling}}function zi(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return n;n=n.previousElementSibling}}function yr(e){let t=b.useRef(e);return Be(()=>{t.current=e}),t}var Be=typeof window>"u"?b.useEffect:b.useLayoutEffect;function Ge(e){let t=b.useRef();return t.current===void 0&&(t.current=e()),t}function We(e){let t=cn(),n=()=>e(t.snapshot());return b.useSyncExternalStore(t.subscribe,n,n)}function vr(e,t,n,r=[]){let o=b.useRef(),i=dt();return Be(()=>{var a;let s=(()=>{var u;for(let f of n){if(typeof f=="string")return f.trim();if(typeof f=="object"&&"current"in f)return f.current?(u=f.current.textContent)==null?void 0:u.trim():o.current}})(),l=r.map(u=>u.trim());i.value(e,s,l),(a=t.current)==null||a.setAttribute(qe,s),o.current=s}),o}var Yi=()=>{let[e,t]=b.useState(),n=Ge(()=>new Map);return Be(()=>{n.current.forEach(r=>r()),n.current=new Map},[e]),(r,o)=>{n.current.set(r,o),t({})}};function qi(e){let t=e.type;return typeof t=="function"?t(e.props):"render"in t?t.render(e.props):e}function It({asChild:e,children:t},n){return e&&b.isValidElement(t)?b.cloneElement(qi(t),{ref:t.ref},n(t.props.children)):n(t)}var Gi={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"};function gr(e){return t=>typeof t===e}var Vi=gr("function"),Ki=e=>e===null,Cn=e=>Object.prototype.toString.call(e).slice(8,-1)==="RegExp",Tn=e=>!Zi(e)&&!Ki(e)&&(Vi(e)||typeof e=="object"),Zi=gr("undefined");function Ji(e,t){const{length:n}=e;if(n!==t.length)return!1;for(let r=n;r--!==0;)if(!oe(e[r],t[r]))return!1;return!0}function Xi(e,t){if(e.byteLength!==t.byteLength)return!1;const n=new DataView(e.buffer),r=new DataView(t.buffer);let o=e.byteLength;for(;o--;)if(n.getUint8(o)!==r.getUint8(o))return!1;return!0}function Qi(e,t){if(e.size!==t.size)return!1;for(const n of e.entries())if(!t.has(n[0]))return!1;for(const n of e.entries())if(!oe(n[1],t.get(n[0])))return!1;return!0}function es(e,t){if(e.size!==t.size)return!1;for(const n of e.entries())if(!t.has(n[0]))return!1;return!0}function oe(e,t){if(e===t)return!0;if(e&&Tn(e)&&t&&Tn(t)){if(e.constructor!==t.constructor)return!1;if(Array.isArray(e)&&Array.isArray(t))return Ji(e,t);if(e instanceof Map&&t instanceof Map)return Qi(e,t);if(e instanceof Set&&t instanceof Set)return es(e,t);if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(t))return Xi(e,t);if(Cn(e)&&Cn(t))return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let o=n.length;o--!==0;)if(!Object.prototype.hasOwnProperty.call(t,n[o]))return!1;for(let o=n.length;o--!==0;){const i=n[o];if(!(i==="_owner"&&e.$$typeof)&&!oe(e[i],t[i]))return!1}return!0}return Number.isNaN(e)&&Number.isNaN(t)?!0:e===t}var ts=["Array","ArrayBuffer","AsyncFunction","AsyncGenerator","AsyncGeneratorFunction","Date","Error","Function","Generator","GeneratorFunction","HTMLElement","Map","Object","Promise","RegExp","Set","WeakMap","WeakSet"],ns=["bigint","boolean","null","number","string","symbol","undefined"];function Rt(e){const t=Object.prototype.toString.call(e).slice(8,-1);if(/HTML\w+Element/.test(t))return"HTMLElement";if(rs(t))return t}function ge(e){return t=>Rt(t)===e}function rs(e){return ts.includes(e)}function Qe(e){return t=>typeof t===e}function os(e){return ns.includes(e)}var is=["innerHTML","ownerDocument","style","attributes","nodeValue"];function x(e){if(e===null)return"null";switch(typeof e){case"bigint":return"bigint";case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"symbol":return"symbol";case"undefined":return"undefined"}if(x.array(e))return"Array";if(x.plainFunction(e))return"Function";const t=Rt(e);return t||"Object"}x.array=Array.isArray;x.arrayOf=(e,t)=>!x.array(e)&&!x.function(t)?!1:e.every(n=>t(n));x.asyncGeneratorFunction=e=>Rt(e)==="AsyncGeneratorFunction";x.asyncFunction=ge("AsyncFunction");x.bigint=Qe("bigint");x.boolean=e=>e===!0||e===!1;x.date=ge("Date");x.defined=e=>!x.undefined(e);x.domElement=e=>x.object(e)&&!x.plainObject(e)&&e.nodeType===1&&x.string(e.nodeName)&&is.every(t=>t in e);x.empty=e=>x.string(e)&&e.length===0||x.array(e)&&e.length===0||x.object(e)&&!x.map(e)&&!x.set(e)&&Object.keys(e).length===0||x.set(e)&&e.size===0||x.map(e)&&e.size===0;x.error=ge("Error");x.function=Qe("function");x.generator=e=>x.iterable(e)&&x.function(e.next)&&x.function(e.throw);x.generatorFunction=ge("GeneratorFunction");x.instanceOf=(e,t)=>!e||!t?!1:Object.getPrototypeOf(e)===t.prototype;x.iterable=e=>!x.nullOrUndefined(e)&&x.function(e[Symbol.iterator]);x.map=ge("Map");x.nan=e=>Number.isNaN(e);x.null=e=>e===null;x.nullOrUndefined=e=>x.null(e)||x.undefined(e);x.number=e=>Qe("number")(e)&&!x.nan(e);x.numericString=e=>x.string(e)&&e.length>0&&!Number.isNaN(Number(e));x.object=e=>!x.nullOrUndefined(e)&&(x.function(e)||typeof e=="object");x.oneOf=(e,t)=>x.array(e)?e.indexOf(t)>-1:!1;x.plainFunction=ge("Function");x.plainObject=e=>{if(Rt(e)!=="Object")return!1;const t=Object.getPrototypeOf(e);return t===null||t===Object.getPrototypeOf({})};x.primitive=e=>x.null(e)||os(typeof e);x.promise=ge("Promise");x.propertyOf=(e,t,n)=>{if(!x.object(e)||!t)return!1;const r=e[t];return x.function(n)?n(r):x.defined(r)};x.regexp=ge("RegExp");x.set=ge("Set");x.string=Qe("string");x.symbol=Qe("symbol");x.undefined=Qe("undefined");x.weakMap=ge("WeakMap");x.weakSet=ge("WeakSet");var N=x;function ss(...e){return e.every(t=>N.string(t)||N.array(t)||N.plainObject(t))}function as(e,t,n){return br(e,t)?[e,t].every(N.array)?!e.some(Dn(n))&&t.some(Dn(n)):[e,t].every(N.plainObject)?!Object.entries(e).some(Pn(n))&&Object.entries(t).some(Pn(n)):t===n:!1}function Mn(e,t,n){const{actual:r,key:o,previous:i,type:a}=n,s=Ee(e,o),l=Ee(t,o);let u=[s,l].every(N.number)&&(a==="increased"?sl);return N.undefined(r)||(u=u&&l===r),N.undefined(i)||(u=u&&s===i),u}function xn(e,t,n){const{key:r,type:o,value:i}=n,a=Ee(e,r),s=Ee(t,r),l=o==="added"?a:s,u=o==="added"?s:a;if(!N.nullOrUndefined(i)){if(N.defined(l)){if(N.array(l)||N.plainObject(l))return as(l,u,i)}else return oe(u,i);return!1}return[a,s].every(N.array)?!u.every(un(l)):[a,s].every(N.plainObject)?ls(Object.keys(l),Object.keys(u)):![a,s].every(f=>N.primitive(f)&&N.defined(f))&&(o==="added"?!N.defined(a)&&N.defined(s):N.defined(a)&&!N.defined(s))}function Nn(e,t,{key:n}={}){let r=Ee(e,n),o=Ee(t,n);if(!br(r,o))throw new TypeError("Inputs have different types");if(!ss(r,o))throw new TypeError("Inputs don't have length");return[r,o].every(N.plainObject)&&(r=Object.keys(r),o=Object.keys(o)),[r,o]}function Pn(e){return([t,n])=>N.array(e)?oe(e,n)||e.some(r=>oe(r,n)||N.array(n)&&un(n)(r)):N.plainObject(e)&&e[t]?!!e[t]&&oe(e[t],n):oe(e,n)}function ls(e,t){return t.some(n=>!e.includes(n))}function Dn(e){return t=>N.array(e)?e.some(n=>oe(n,t)||N.array(t)&&un(t)(n)):oe(e,t)}function rt(e,t){return N.array(e)?e.some(n=>oe(n,t)):oe(e,t)}function un(e){return t=>e.some(n=>oe(n,t))}function br(...e){return e.every(N.array)||e.every(N.number)||e.every(N.plainObject)||e.every(N.string)}function Ee(e,t){return N.plainObject(e)||N.array(e)?N.string(t)?t.split(".").reduce((r,o)=>r&&r[o],e):N.number(t)?e[t]:e:e}function Mt(e,t){if([e,t].some(N.nullOrUndefined))throw new Error("Missing required parameters");if(![e,t].every(f=>N.plainObject(f)||N.array(f)))throw new Error("Expected plain objects or array");return{added:(f,c)=>{try{return xn(e,t,{key:f,type:"added",value:c})}catch{return!1}},changed:(f,c,d)=>{try{const p=Ee(e,f),h=Ee(t,f),v=N.defined(c),O=N.defined(d);if(v||O){const y=O?rt(d,p):!rt(c,p),m=rt(c,h);return y&&m}return[p,h].every(N.array)||[p,h].every(N.plainObject)?!oe(p,h):p!==h}catch{return!1}},changedFrom:(f,c,d)=>{if(!N.defined(f))return!1;try{const p=Ee(e,f),h=Ee(t,f),v=N.defined(d);return rt(c,p)&&(v?rt(d,h):!v)}catch{return!1}},decreased:(f,c,d)=>{if(!N.defined(f))return!1;try{return Mn(e,t,{key:f,actual:c,previous:d,type:"decreased"})}catch{return!1}},emptied:f=>{try{const[c,d]=Nn(e,t,{key:f});return!!c.length&&!d.length}catch{return!1}},filled:f=>{try{const[c,d]=Nn(e,t,{key:f});return!c.length&&!!d.length}catch{return!1}},increased:(f,c,d)=>{if(!N.defined(f))return!1;try{return Mn(e,t,{key:f,actual:c,previous:d,type:"increased"})}catch{return!1}},removed:(f,c)=>{try{return xn(e,t,{key:f,type:"removed",value:c})}catch{return!1}}}}var zt,In;function cs(){if(In)return zt;In=1;var e=new Error("Element already at target scroll position"),t=new Error("Scroll cancelled"),n=Math.min,r=Date.now;zt={left:o("scrollLeft"),top:o("scrollTop")};function o(s){return function(u,f,c,d){c=c||{},typeof c=="function"&&(d=c,c={}),typeof d!="function"&&(d=a);var p=r(),h=u[s],v=c.ease||i,O=isNaN(c.duration)?350:+c.duration,y=!1;return h===f?d(e,u[s]):requestAnimationFrame(S),m;function m(){y=!0}function S(D){if(y)return d(t,u[s]);var E=r(),C=n(1,(E-p)/O),M=v(C);u[s]=M*(f-h)+h,C<1?requestAnimationFrame(S):requestAnimationFrame(function(){d(null,u[s])})}}}function i(s){return .5*(1-Math.cos(Math.PI*s))}function a(){}return zt}var us=cs();const fs=Dt(us);var Ct={exports:{}},ds=Ct.exports,Rn;function ps(){return Rn||(Rn=1,(function(e){(function(t,n){e.exports?e.exports=n():t.Scrollparent=n()})(ds,function(){function t(r){var o=getComputedStyle(r,null).getPropertyValue("overflow");return o.indexOf("scroll")>-1||o.indexOf("auto")>-1}function n(r){if(r instanceof HTMLElement||r instanceof SVGElement){for(var o=r.parentNode;o.parentNode;){if(t(o))return o;o=o.parentNode}return document.scrollingElement||document.documentElement}}return n})})(Ct)),Ct.exports}var hs=ps();const wr=Dt(hs);var Yt,Wn;function ms(){if(Wn)return Yt;Wn=1;var e=function(r){return Object.prototype.hasOwnProperty.call(r,"props")},t=function(r,o){return r+n(o)},n=function(r){return r===null||typeof r=="boolean"||typeof r>"u"?"":typeof r=="number"?r.toString():typeof r=="string"?r:Array.isArray(r)?r.reduce(t,""):e(r)&&Object.prototype.hasOwnProperty.call(r.props,"children")?n(r.props.children):""};return n.default=n,Yt=n,Yt}var ys=ms();const An=Dt(ys);var qt,_n;function vs(){if(_n)return qt;_n=1;var e=function(m){return t(m)&&!n(m)};function t(y){return!!y&&typeof y=="object"}function n(y){var m=Object.prototype.toString.call(y);return m==="[object RegExp]"||m==="[object Date]"||i(y)}var r=typeof Symbol=="function"&&Symbol.for,o=r?Symbol.for("react.element"):60103;function i(y){return y.$$typeof===o}function a(y){return Array.isArray(y)?[]:{}}function s(y,m){return m.clone!==!1&&m.isMergeableObject(y)?v(a(y),y,m):y}function l(y,m,S){return y.concat(m).map(function(D){return s(D,S)})}function u(y,m){if(!m.customMerge)return v;var S=m.customMerge(y);return typeof S=="function"?S:v}function f(y){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(y).filter(function(m){return Object.propertyIsEnumerable.call(y,m)}):[]}function c(y){return Object.keys(y).concat(f(y))}function d(y,m){try{return m in y}catch{return!1}}function p(y,m){return d(y,m)&&!(Object.hasOwnProperty.call(y,m)&&Object.propertyIsEnumerable.call(y,m))}function h(y,m,S){var D={};return S.isMergeableObject(y)&&c(y).forEach(function(E){D[E]=s(y[E],S)}),c(m).forEach(function(E){p(y,E)||(d(y,E)&&S.isMergeableObject(m[E])?D[E]=u(E,S)(y[E],m[E],S):D[E]=s(m[E],S))}),D}function v(y,m,S){S=S||{},S.arrayMerge=S.arrayMerge||l,S.isMergeableObject=S.isMergeableObject||e,S.cloneUnlessOtherwiseSpecified=s;var D=Array.isArray(m),E=Array.isArray(y),C=D===E;return C?D?S.arrayMerge(y,m,S):h(y,m,S):s(m,S)}v.all=function(m,S){if(!Array.isArray(m))throw new Error("first argument should be an array");return m.reduce(function(D,E){return v(D,E,S)},{})};var O=v;return qt=O,qt}var gs=vs();const ye=Dt(gs);var pt=typeof window<"u"&&typeof document<"u"&&typeof navigator<"u",bs=(function(){for(var e=["Edge","Trident","Firefox"],t=0;t=0)return 1;return 0})();function ws(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then(function(){t=!1,e()}))}}function Os(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},bs))}}var Ss=pt&&window.Promise,Es=Ss?ws:Os;function Or(e){var t={};return e&&t.toString.call(e)==="[object Function]"}function He(e,t){if(e.nodeType!==1)return[];var n=e.ownerDocument.defaultView,r=n.getComputedStyle(e,null);return t?r[t]:r}function fn(e){return e.nodeName==="HTML"?e:e.parentNode||e.host}function ht(e){if(!e)return document.body;switch(e.nodeName){case"HTML":case"BODY":return e.ownerDocument.body;case"#document":return e.body}var t=He(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/(auto|scroll|overlay)/.test(n+o+r)?e:ht(fn(e))}function Sr(e){return e&&e.referenceNode?e.referenceNode:e}var jn=pt&&!!(window.MSInputMethodContext&&document.documentMode),Fn=pt&&/MSIE 10/.test(navigator.userAgent);function et(e){return e===11?jn:e===10?Fn:jn||Fn}function Ke(e){if(!e)return document.documentElement;for(var t=et(10)?document.body:null,n=e.offsetParent||null;n===t&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var r=n&&n.nodeName;return!r||r==="BODY"||r==="HTML"?e?e.ownerDocument.documentElement:document.documentElement:["TH","TD","TABLE"].indexOf(n.nodeName)!==-1&&He(n,"position")==="static"?Ke(n):n}function ks(e){var t=e.nodeName;return t==="BODY"?!1:t==="HTML"||Ke(e.firstElementChild)===e}function tn(e){return e.parentNode!==null?tn(e.parentNode):e}function xt(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var n=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,r=n?e:t,o=n?t:e,i=document.createRange();i.setStart(r,0),i.setEnd(o,0);var a=i.commonAncestorContainer;if(e!==a&&t!==a||r.contains(o))return ks(a)?a:Ke(a);var s=tn(e);return s.host?xt(s.host,t):xt(e,tn(t).host)}function Ze(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"top",n=t==="top"?"scrollTop":"scrollLeft",r=e.nodeName;if(r==="BODY"||r==="HTML"){var o=e.ownerDocument.documentElement,i=e.ownerDocument.scrollingElement||o;return i[n]}return e[n]}function Cs(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,r=Ze(t,"top"),o=Ze(t,"left"),i=n?-1:1;return e.top+=r*i,e.bottom+=r*i,e.left+=o*i,e.right+=o*i,e}function Ln(e,t){var n=t==="x"?"Left":"Top",r=n==="Left"?"Right":"Bottom";return parseFloat(e["border"+n+"Width"])+parseFloat(e["border"+r+"Width"])}function Bn(e,t,n,r){return Math.max(t["offset"+e],t["scroll"+e],n["client"+e],n["offset"+e],n["scroll"+e],et(10)?parseInt(n["offset"+e])+parseInt(r["margin"+(e==="Height"?"Top":"Left")])+parseInt(r["margin"+(e==="Height"?"Bottom":"Right")]):0)}function Er(e){var t=e.body,n=e.documentElement,r=et(10)&&getComputedStyle(n);return{height:Bn("Height",t,n,r),width:Bn("Width",t,n,r)}}var Ts=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},Ms=(function(){function e(t,n){for(var r=0;r2&&arguments[2]!==void 0?arguments[2]:!1,r=et(10),o=t.nodeName==="HTML",i=nn(e),a=nn(t),s=ht(e),l=He(t),u=parseFloat(l.borderTopWidth),f=parseFloat(l.borderLeftWidth);n&&o&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var c=Ae({top:i.top-a.top-u,left:i.left-a.left-f,width:i.width,height:i.height});if(c.marginTop=0,c.marginLeft=0,!r&&o){var d=parseFloat(l.marginTop),p=parseFloat(l.marginLeft);c.top-=u-d,c.bottom-=u-d,c.left-=f-p,c.right-=f-p,c.marginTop=d,c.marginLeft=p}return(r&&!n?t.contains(s):t===s&&s.nodeName!=="BODY")&&(c=Cs(c,t)),c}function xs(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=e.ownerDocument.documentElement,r=dn(e,n),o=Math.max(n.clientWidth,window.innerWidth||0),i=Math.max(n.clientHeight,window.innerHeight||0),a=t?0:Ze(n),s=t?0:Ze(n,"left"),l={top:a-r.top+r.marginTop,left:s-r.left+r.marginLeft,width:o,height:i};return Ae(l)}function kr(e){var t=e.nodeName;if(t==="BODY"||t==="HTML")return!1;if(He(e,"position")==="fixed")return!0;var n=fn(e);return n?kr(n):!1}function Cr(e){if(!e||!e.parentElement||et())return document.documentElement;for(var t=e.parentElement;t&&He(t,"transform")==="none";)t=t.parentElement;return t||document.documentElement}function pn(e,t,n,r){var o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1,i={top:0,left:0},a=o?Cr(e):xt(e,Sr(t));if(r==="viewport")i=xs(a,o);else{var s=void 0;r==="scrollParent"?(s=ht(fn(t)),s.nodeName==="BODY"&&(s=e.ownerDocument.documentElement)):r==="window"?s=e.ownerDocument.documentElement:s=r;var l=dn(s,a,o);if(s.nodeName==="HTML"&&!kr(a)){var u=Er(e.ownerDocument),f=u.height,c=u.width;i.top+=l.top-l.marginTop,i.bottom=f+l.top,i.left+=l.left-l.marginLeft,i.right=c+l.left}else i=l}n=n||0;var d=typeof n=="number";return i.left+=d?n:n.left||0,i.top+=d?n:n.top||0,i.right-=d?n:n.right||0,i.bottom-=d?n:n.bottom||0,i}function Ns(e){var t=e.width,n=e.height;return t*n}function Tr(e,t,n,r,o){var i=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0;if(e.indexOf("auto")===-1)return e;var a=pn(n,r,i,o),s={top:{width:a.width,height:t.top-a.top},right:{width:a.right-t.right,height:a.height},bottom:{width:a.width,height:a.bottom-t.bottom},left:{width:t.left-a.left,height:a.height}},l=Object.keys(s).map(function(d){return he({key:d},s[d],{area:Ns(s[d])})}).sort(function(d,p){return p.area-d.area}),u=l.filter(function(d){var p=d.width,h=d.height;return p>=n.clientWidth&&h>=n.clientHeight}),f=u.length>0?u[0].key:l[0].key,c=e.split("-")[1];return f+(c?"-"+c:"")}function Mr(e,t,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null,o=r?Cr(t):xt(t,Sr(n));return dn(n,o,r)}function xr(e){var t=e.ownerDocument.defaultView,n=t.getComputedStyle(e),r=parseFloat(n.marginTop||0)+parseFloat(n.marginBottom||0),o=parseFloat(n.marginLeft||0)+parseFloat(n.marginRight||0),i={width:e.offsetWidth+o,height:e.offsetHeight+r};return i}function Nt(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,function(n){return t[n]})}function Nr(e,t,n){n=n.split("-")[0];var r=xr(e),o={width:r.width,height:r.height},i=["right","left"].indexOf(n)!==-1,a=i?"top":"left",s=i?"left":"top",l=i?"height":"width",u=i?"width":"height";return o[a]=t[a]+t[l]/2-r[l]/2,n===s?o[s]=t[s]-r[u]:o[s]=t[Nt(s)],o}function mt(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function Ps(e,t,n){if(Array.prototype.findIndex)return e.findIndex(function(o){return o[t]===n});var r=mt(e,function(o){return o[t]===n});return e.indexOf(r)}function Pr(e,t,n){var r=n===void 0?e:e.slice(0,Ps(e,"name",n));return r.forEach(function(o){o.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var i=o.function||o.fn;o.enabled&&Or(i)&&(t.offsets.popper=Ae(t.offsets.popper),t.offsets.reference=Ae(t.offsets.reference),t=i(t,o))}),t}function Ds(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=Mr(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=Tr(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=Nr(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",e=Pr(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function Dr(e,t){return e.some(function(n){var r=n.name,o=n.enabled;return o&&r===t})}function hn(e){for(var t=[!1,"ms","Webkit","Moz","O"],n=e.charAt(0).toUpperCase()+e.slice(1),r=0;ra[p]&&(e.offsets.popper[c]+=s[c]+h-a[p]),e.offsets.popper=Ae(e.offsets.popper);var v=s[c]+s[u]/2-h/2,O=He(e.instance.popper),y=parseFloat(O["margin"+f]),m=parseFloat(O["border"+f+"Width"]),S=v-e.offsets.popper[c]-y-m;return S=Math.max(Math.min(a[u]-h,S),0),e.arrowElement=r,e.offsets.arrow=(n={},Je(n,c,Math.round(S)),Je(n,d,""),n),e}function zs(e){return e==="end"?"start":e==="start"?"end":e}var Ar=["auto-start","auto","auto-end","top-start","top","top-end","right-start","right","right-end","bottom-end","bottom","bottom-start","left-end","left","left-start"],Gt=Ar.slice(3);function $n(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=Gt.indexOf(e),r=Gt.slice(n+1).concat(Gt.slice(0,n));return t?r.reverse():r}var Vt={FLIP:"flip",CLOCKWISE:"clockwise",COUNTERCLOCKWISE:"counterclockwise"};function Ys(e,t){if(Dr(e.instance.modifiers,"inner")||e.flipped&&e.placement===e.originalPlacement)return e;var n=pn(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),r=e.placement.split("-")[0],o=Nt(r),i=e.placement.split("-")[1]||"",a=[];switch(t.behavior){case Vt.FLIP:a=[r,o];break;case Vt.CLOCKWISE:a=$n(r);break;case Vt.COUNTERCLOCKWISE:a=$n(r,!0);break;default:a=t.behavior}return a.forEach(function(s,l){if(r!==s||a.length===l+1)return e;r=e.placement.split("-")[0],o=Nt(r);var u=e.offsets.popper,f=e.offsets.reference,c=Math.floor,d=r==="left"&&c(u.right)>c(f.left)||r==="right"&&c(u.left)c(f.top)||r==="bottom"&&c(u.top)c(n.right),v=c(u.top)c(n.bottom),y=r==="left"&&p||r==="right"&&h||r==="top"&&v||r==="bottom"&&O,m=["top","bottom"].indexOf(r)!==-1,S=!!t.flipVariations&&(m&&i==="start"&&p||m&&i==="end"&&h||!m&&i==="start"&&v||!m&&i==="end"&&O),D=!!t.flipVariationsByContent&&(m&&i==="start"&&h||m&&i==="end"&&p||!m&&i==="start"&&O||!m&&i==="end"&&v),E=S||D;(d||y||E)&&(e.flipped=!0,(d||y)&&(r=a[l+1]),E&&(i=zs(i)),e.placement=r+(i?"-"+i:""),e.offsets.popper=he({},e.offsets.popper,Nr(e.instance.popper,e.offsets.reference,e.placement)),e=Pr(e.instance.modifiers,e,"flip"))}),e}function qs(e){var t=e.offsets,n=t.popper,r=t.reference,o=e.placement.split("-")[0],i=Math.floor,a=["top","bottom"].indexOf(o)!==-1,s=a?"right":"bottom",l=a?"left":"top",u=a?"width":"height";return n[s]i(r[s])&&(e.offsets.popper[l]=i(r[s])),e}function Gs(e,t,n,r){var o=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),i=+o[1],a=o[2];if(!i)return e;if(a.indexOf("%")===0){var s=void 0;switch(a){case"%p":s=n;break;case"%":case"%r":default:s=r}var l=Ae(s);return l[t]/100*i}else if(a==="vh"||a==="vw"){var u=void 0;return a==="vh"?u=Math.max(document.documentElement.clientHeight,window.innerHeight||0):u=Math.max(document.documentElement.clientWidth,window.innerWidth||0),u/100*i}else return i}function Vs(e,t,n,r){var o=[0,0],i=["right","left"].indexOf(r)!==-1,a=e.split(/(\+|\-)/).map(function(f){return f.trim()}),s=a.indexOf(mt(a,function(f){return f.search(/,|\s/)!==-1}));a[s]&&a[s].indexOf(",")===-1&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,u=s!==-1?[a.slice(0,s).concat([a[s].split(l)[0]]),[a[s].split(l)[1]].concat(a.slice(s+1))]:[a];return u=u.map(function(f,c){var d=(c===1?!i:i)?"height":"width",p=!1;return f.reduce(function(h,v){return h[h.length-1]===""&&["+","-"].indexOf(v)!==-1?(h[h.length-1]=v,p=!0,h):p?(h[h.length-1]+=v,p=!1,h):h.concat(v)},[]).map(function(h){return Gs(h,d,t,n)})}),u.forEach(function(f,c){f.forEach(function(d,p){mn(d)&&(o[c]+=d*(f[p-1]==="-"?-1:1))})}),o}function Ks(e,t){var n=t.offset,r=e.placement,o=e.offsets,i=o.popper,a=o.reference,s=r.split("-")[0],l=void 0;return mn(+n)?l=[+n,0]:l=Vs(n,i,a,s),s==="left"?(i.top+=l[0],i.left-=l[1]):s==="right"?(i.top+=l[0],i.left+=l[1]):s==="top"?(i.left+=l[0],i.top-=l[1]):s==="bottom"&&(i.left+=l[0],i.top+=l[1]),e.popper=i,e}function Zs(e,t){var n=t.boundariesElement||Ke(e.instance.popper);e.instance.reference===n&&(n=Ke(n));var r=hn("transform"),o=e.instance.popper.style,i=o.top,a=o.left,s=o[r];o.top="",o.left="",o[r]="";var l=pn(e.instance.popper,e.instance.reference,t.padding,n,e.positionFixed);o.top=i,o.left=a,o[r]=s,t.boundaries=l;var u=t.priority,f=e.offsets.popper,c={primary:function(p){var h=f[p];return f[p]l[p]&&!t.escapeWithReference&&(v=Math.min(f[h],l[p]-(p==="right"?f.width:f.height))),Je({},h,v)}};return u.forEach(function(d){var p=["left","top"].indexOf(d)!==-1?"primary":"secondary";f=he({},f,c[p](d))}),e.offsets.popper=f,e}function Js(e){var t=e.placement,n=t.split("-")[0],r=t.split("-")[1];if(r){var o=e.offsets,i=o.reference,a=o.popper,s=["bottom","top"].indexOf(n)!==-1,l=s?"left":"top",u=s?"width":"height",f={start:Je({},l,i[l]),end:Je({},l,i[l]+i[u]-a[u])};e.offsets.popper=he({},a,f[r])}return e}function Xs(e){if(!Wr(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=mt(e.instance.modifiers,function(r){return r.name==="preventOverflow"}).boundaries;if(t.bottomn.right||t.top>n.bottom||t.right2&&arguments[2]!==void 0?arguments[2]:{};Ts(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(r.update)},this.update=Es(this.update.bind(this)),this.options=he({},e.Defaults,o),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(he({},e.Defaults.modifiers,o.modifiers)).forEach(function(a){r.options.modifiers[a]=he({},e.Defaults.modifiers[a]||{},o.modifiers?o.modifiers[a]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(a){return he({name:a},r.options.modifiers[a])}).sort(function(a,s){return a.order-s.order}),this.modifiers.forEach(function(a){a.enabled&&Or(a.onLoad)&&a.onLoad(r.reference,r.popper,r.options,a,r.state)}),this.update();var i=this.options.eventsEnabled;i&&this.enableEventListeners(),this.state.eventsEnabled=i}return Ms(e,[{key:"update",value:function(){return Ds.call(this)}},{key:"destroy",value:function(){return Is.call(this)}},{key:"enableEventListeners",value:function(){return Ws.call(this)}},{key:"disableEventListeners",value:function(){return _s.call(this)}}]),e})();ut.Utils=(typeof window<"u"?window:global).PopperUtils;ut.placements=Ar;ut.Defaults=ta;var na=["innerHTML","ownerDocument","style","attributes","nodeValue"],ra=["Array","ArrayBuffer","AsyncFunction","AsyncGenerator","AsyncGeneratorFunction","Date","Error","Function","Generator","GeneratorFunction","HTMLElement","Map","Object","Promise","RegExp","Set","WeakMap","WeakSet"],oa=["bigint","boolean","null","number","string","symbol","undefined"];function Wt(e){var t=Object.prototype.toString.call(e).slice(8,-1);if(/HTML\w+Element/.test(t))return"HTMLElement";if(ia(t))return t}function be(e){return function(t){return Wt(t)===e}}function ia(e){return ra.includes(e)}function tt(e){return function(t){return typeof t===e}}function sa(e){return oa.includes(e)}function g(e){if(e===null)return"null";switch(typeof e){case"bigint":return"bigint";case"boolean":return"boolean";case"number":return"number";case"string":return"string";case"symbol":return"symbol";case"undefined":return"undefined"}if(g.array(e))return"Array";if(g.plainFunction(e))return"Function";var t=Wt(e);return t||"Object"}g.array=Array.isArray;g.arrayOf=function(e,t){return!g.array(e)&&!g.function(t)?!1:e.every(function(n){return t(n)})};g.asyncGeneratorFunction=function(e){return Wt(e)==="AsyncGeneratorFunction"};g.asyncFunction=be("AsyncFunction");g.bigint=tt("bigint");g.boolean=function(e){return e===!0||e===!1};g.date=be("Date");g.defined=function(e){return!g.undefined(e)};g.domElement=function(e){return g.object(e)&&!g.plainObject(e)&&e.nodeType===1&&g.string(e.nodeName)&&na.every(function(t){return t in e})};g.empty=function(e){return g.string(e)&&e.length===0||g.array(e)&&e.length===0||g.object(e)&&!g.map(e)&&!g.set(e)&&Object.keys(e).length===0||g.set(e)&&e.size===0||g.map(e)&&e.size===0};g.error=be("Error");g.function=tt("function");g.generator=function(e){return g.iterable(e)&&g.function(e.next)&&g.function(e.throw)};g.generatorFunction=be("GeneratorFunction");g.instanceOf=function(e,t){return!e||!t?!1:Object.getPrototypeOf(e)===t.prototype};g.iterable=function(e){return!g.nullOrUndefined(e)&&g.function(e[Symbol.iterator])};g.map=be("Map");g.nan=function(e){return Number.isNaN(e)};g.null=function(e){return e===null};g.nullOrUndefined=function(e){return g.null(e)||g.undefined(e)};g.number=function(e){return tt("number")(e)&&!g.nan(e)};g.numericString=function(e){return g.string(e)&&e.length>0&&!Number.isNaN(Number(e))};g.object=function(e){return!g.nullOrUndefined(e)&&(g.function(e)||typeof e=="object")};g.oneOf=function(e,t){return g.array(e)?e.indexOf(t)>-1:!1};g.plainFunction=be("Function");g.plainObject=function(e){if(Wt(e)!=="Object")return!1;var t=Object.getPrototypeOf(e);return t===null||t===Object.getPrototypeOf({})};g.primitive=function(e){return g.null(e)||sa(typeof e)};g.promise=be("Promise");g.propertyOf=function(e,t,n){if(!g.object(e)||!t)return!1;var r=e[t];return g.function(n)?n(r):g.defined(r)};g.regexp=be("RegExp");g.set=be("Set");g.string=tt("string");g.symbol=tt("symbol");g.undefined=tt("undefined");g.weakMap=be("WeakMap");g.weakSet=be("WeakSet");function _r(e){return function(t){return typeof t===e}}var aa=_r("function"),la=function(e){return e===null},Hn=function(e){return Object.prototype.toString.call(e).slice(8,-1)==="RegExp"},Un=function(e){return!ca(e)&&!la(e)&&(aa(e)||typeof e=="object")},ca=_r("undefined"),on=function(e){var t=typeof Symbol=="function"&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&typeof e.length=="number")return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")};function ua(e,t){var n=e.length;if(n!==t.length)return!1;for(var r=n;r--!==0;)if(!ae(e[r],t[r]))return!1;return!0}function fa(e,t){if(e.byteLength!==t.byteLength)return!1;for(var n=new DataView(e.buffer),r=new DataView(t.buffer),o=e.byteLength;o--;)if(n.getUint8(o)!==r.getUint8(o))return!1;return!0}function da(e,t){var n,r,o,i;if(e.size!==t.size)return!1;try{for(var a=on(e.entries()),s=a.next();!s.done;s=a.next()){var l=s.value;if(!t.has(l[0]))return!1}}catch(c){n={error:c}}finally{try{s&&!s.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}try{for(var u=on(e.entries()),f=u.next();!f.done;f=u.next()){var l=f.value;if(!ae(l[1],t.get(l[0])))return!1}}catch(c){o={error:c}}finally{try{f&&!f.done&&(i=u.return)&&i.call(u)}finally{if(o)throw o.error}}return!0}function pa(e,t){var n,r;if(e.size!==t.size)return!1;try{for(var o=on(e.entries()),i=o.next();!i.done;i=o.next()){var a=i.value;if(!t.has(a[0]))return!1}}catch(s){n={error:s}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}return!0}function ae(e,t){if(e===t)return!0;if(e&&Un(e)&&t&&Un(t)){if(e.constructor!==t.constructor)return!1;if(Array.isArray(e)&&Array.isArray(t))return ua(e,t);if(e instanceof Map&&t instanceof Map)return da(e,t);if(e instanceof Set&&t instanceof Set)return pa(e,t);if(ArrayBuffer.isView(e)&&ArrayBuffer.isView(t))return fa(e,t);if(Hn(e)&&Hn(t))return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var o=n.length;o--!==0;)if(!Object.prototype.hasOwnProperty.call(t,n[o]))return!1;for(var o=n.length;o--!==0;){var i=n[o];if(!(i==="_owner"&&e.$$typeof)&&!ae(e[i],t[i]))return!1}return!0}return Number.isNaN(e)&&Number.isNaN(t)?!0:e===t}function ha(){for(var e=[],t=0;tl);return g.undefined(r)||(u=u&&l===r),g.undefined(i)||(u=u&&s===i),u}function Yn(e,t,n){var r=n.key,o=n.type,i=n.value,a=ke(e,r),s=ke(t,r),l=o==="added"?a:s,u=o==="added"?s:a;if(!g.nullOrUndefined(i)){if(g.defined(l)){if(g.array(l)||g.plainObject(l))return ma(l,u,i)}else return ae(u,i);return!1}return[a,s].every(g.array)?!u.every(yn(l)):[a,s].every(g.plainObject)?ya(Object.keys(l),Object.keys(u)):![a,s].every(function(f){return g.primitive(f)&&g.defined(f)})&&(o==="added"?!g.defined(a)&&g.defined(s):g.defined(a)&&!g.defined(s))}function qn(e,t,n){var r=n===void 0?{}:n,o=r.key,i=ke(e,o),a=ke(t,o);if(!jr(i,a))throw new TypeError("Inputs have different types");if(!ha(i,a))throw new TypeError("Inputs don't have length");return[i,a].every(g.plainObject)&&(i=Object.keys(i),a=Object.keys(a)),[i,a]}function Gn(e){return function(t){var n=t[0],r=t[1];return g.array(e)?ae(e,r)||e.some(function(o){return ae(o,r)||g.array(r)&&yn(r)(o)}):g.plainObject(e)&&e[n]?!!e[n]&&ae(e[n],r):ae(e,r)}}function ya(e,t){return t.some(function(n){return!e.includes(n)})}function Vn(e){return function(t){return g.array(e)?e.some(function(n){return ae(n,t)||g.array(t)&&yn(t)(n)}):ae(e,t)}}function ot(e,t){return g.array(e)?e.some(function(n){return ae(n,t)}):ae(e,t)}function yn(e){return function(t){return e.some(function(n){return ae(n,t)})}}function jr(){for(var e=[],t=0;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function wa(e,t){if(e==null)return{};var n={},r=Object.keys(e),o,i;for(i=0;i=0)&&(n[o]=e[o]);return n}function Fr(e,t){if(e==null)return{};var n=wa(e,t),r,o;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function xe(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Oa(e,t){if(t&&(typeof t=="object"||typeof t=="function"))return t;if(t!==void 0)throw new TypeError("Derived constructors may only return object or undefined");return xe(e)}function bt(e){var t=ba();return function(){var r=Pt(e),o;if(t){var i=Pt(this).constructor;o=Reflect.construct(r,arguments,i)}else o=r.apply(this,arguments);return Oa(this,o)}}function Sa(e,t){if(typeof e!="object"||e===null)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Lr(e){var t=Sa(e,"string");return typeof t=="symbol"?t:String(t)}var Ea={flip:{padding:20},preventOverflow:{padding:10}},ka="The typeValidator argument must be a function with the signature function(props, propName, componentName).",Ca="The error message is optional, but must be a string if provided.";function Ta(e,t,n,r){return typeof e=="boolean"?e:typeof e=="function"?e(t,n,r):e?!!e:!1}function Ma(e,t){return Object.hasOwnProperty.call(e,t)}function xa(e,t,n,r){return new Error("Required ".concat(e[t]," `").concat(t,"` was not specified in `").concat(n,"`."))}function Na(e,t){if(typeof e!="function")throw new TypeError(ka);if(t&&typeof t!="string")throw new TypeError(Ca)}function Zn(e,t,n){return Na(e,n),function(r,o,i){for(var a=arguments.length,s=new Array(a>3?a-3:0),l=3;l3&&arguments[3]!==void 0?arguments[3]:!1;e.addEventListener(t,n,r)}function Da(e,t,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;e.removeEventListener(t,n,r)}function Ia(e,t,n){var r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1,o;o=function(a){n(a),Da(e,t,o)},Pa(e,t,o,r)}function Jn(){}var Br=(function(e){gt(n,e);var t=bt(n);function n(){return yt(this,n),t.apply(this,arguments)}return vt(n,[{key:"componentDidMount",value:function(){Oe()&&(this.node||this.appendNode(),it||this.renderPortal())}},{key:"componentDidUpdate",value:function(){Oe()&&(it||this.renderPortal())}},{key:"componentWillUnmount",value:function(){!Oe()||!this.node||(it||Et.unmountComponentAtNode(this.node),this.node&&this.node.parentNode===document.body&&(document.body.removeChild(this.node),this.node=void 0))}},{key:"appendNode",value:function(){var o=this.props,i=o.id,a=o.zIndex;this.node||(this.node=document.createElement("div"),i&&(this.node.id=i),a&&(this.node.style.zIndex=a),document.body.appendChild(this.node))}},{key:"renderPortal",value:function(){if(!Oe())return null;var o=this.props,i=o.children,a=o.setRef;if(this.node||this.appendNode(),it)return Et.createPortal(i,this.node);var s=Et.unstable_renderSubtreeIntoContainer(this,i.length>1?w.createElement("div",null,i):i[0],this.node);return a(s),null}},{key:"renderReact16",value:function(){var o=this.props,i=o.hasChildren,a=o.placement,s=o.target;return i?this.renderPortal():s||a==="center"?this.renderPortal():null}},{key:"render",value:function(){return it?this.renderReact16():null}}]),n})(w.Component);ne(Br,"propTypes",{children:T.oneOfType([T.element,T.array]),hasChildren:T.bool,id:T.oneOfType([T.string,T.number]),placement:T.string,setRef:T.func.isRequired,target:T.oneOfType([T.object,T.string]),zIndex:T.number});var $r=(function(e){gt(n,e);var t=bt(n);function n(){return yt(this,n),t.apply(this,arguments)}return vt(n,[{key:"parentStyle",get:function(){var o=this.props,i=o.placement,a=o.styles,s=a.arrow.length,l={pointerEvents:"none",position:"absolute",width:"100%"};return i.startsWith("top")?(l.bottom=0,l.left=0,l.right=0,l.height=s):i.startsWith("bottom")?(l.left=0,l.right=0,l.top=0,l.height=s):i.startsWith("left")?(l.right=0,l.top=0,l.bottom=0):i.startsWith("right")&&(l.left=0,l.top=0),l}},{key:"render",value:function(){var o=this.props,i=o.placement,a=o.setArrowRef,s=o.styles,l=s.arrow,u=l.color,f=l.display,c=l.length,d=l.margin,p=l.position,h=l.spread,v={display:f,position:p},O,y=h,m=c;return i.startsWith("top")?(O="0,0 ".concat(y/2,",").concat(m," ").concat(y,",0"),v.bottom=0,v.marginLeft=d,v.marginRight=d):i.startsWith("bottom")?(O="".concat(y,",").concat(m," ").concat(y/2,",0 0,").concat(m),v.top=0,v.marginLeft=d,v.marginRight=d):i.startsWith("left")?(m=h,y=c,O="0,0 ".concat(y,",").concat(m/2," 0,").concat(m),v.right=0,v.marginTop=d,v.marginBottom=d):i.startsWith("right")&&(m=h,y=c,O="".concat(y,",").concat(m," ").concat(y,",0 0,").concat(m/2),v.left=0,v.marginTop=d,v.marginBottom=d),w.createElement("div",{className:"__floater__arrow",style:this.parentStyle},w.createElement("span",{ref:a,style:v},w.createElement("svg",{width:y,height:m,version:"1.1",xmlns:"http://www.w3.org/2000/svg"},w.createElement("polygon",{points:O,fill:u}))))}}]),n})(w.Component);ne($r,"propTypes",{placement:T.string.isRequired,setArrowRef:T.func.isRequired,styles:T.object.isRequired});var Ra=["color","height","width"];function Hr(e){var t=e.handleClick,n=e.styles,r=n.color,o=n.height,i=n.width,a=Fr(n,Ra);return w.createElement("button",{"aria-label":"close",onClick:t,style:a,type:"button"},w.createElement("svg",{width:"".concat(i,"px"),height:"".concat(o,"px"),viewBox:"0 0 18 18",version:"1.1",xmlns:"http://www.w3.org/2000/svg",preserveAspectRatio:"xMidYMid"},w.createElement("g",null,w.createElement("path",{d:"M8.13911129,9.00268191 L0.171521827,17.0258467 C-0.0498027049,17.248715 -0.0498027049,17.6098394 0.171521827,17.8327545 C0.28204354,17.9443526 0.427188206,17.9998706 0.572051765,17.9998706 C0.71714958,17.9998706 0.862013139,17.9443526 0.972581703,17.8327545 L9.0000937,9.74924618 L17.0276057,17.8327545 C17.1384085,17.9443526 17.2832721,17.9998706 17.4281356,17.9998706 C17.5729992,17.9998706 17.718097,17.9443526 17.8286656,17.8327545 C18.0499901,17.6098862 18.0499901,17.2487618 17.8286656,17.0258467 L9.86135722,9.00268191 L17.8340066,0.973848225 C18.0553311,0.750979934 18.0553311,0.389855532 17.8340066,0.16694039 C17.6126821,-0.0556467968 17.254037,-0.0556467968 17.0329467,0.16694039 L9.00042166,8.25611765 L0.967006424,0.167268345 C0.745681892,-0.0553188426 0.387317931,-0.0553188426 0.165993399,0.167268345 C-0.0553311331,0.390136635 -0.0553311331,0.751261038 0.165993399,0.974176179 L8.13920499,9.00268191 L8.13911129,9.00268191 Z",fill:r}))))}Hr.propTypes={handleClick:T.func.isRequired,styles:T.object.isRequired};function Ur(e){var t=e.content,n=e.footer,r=e.handleClick,o=e.open,i=e.positionWrapper,a=e.showCloseButton,s=e.title,l=e.styles,u={content:w.isValidElement(t)?t:w.createElement("div",{className:"__floater__content",style:l.content},t)};return s&&(u.title=w.isValidElement(s)?s:w.createElement("div",{className:"__floater__title",style:l.title},s)),n&&(u.footer=w.isValidElement(n)?n:w.createElement("div",{className:"__floater__footer",style:l.footer},n)),(a||i)&&!g.boolean(o)&&(u.close=w.createElement(Hr,{styles:l.close,handleClick:r})),w.createElement("div",{className:"__floater__container",style:l.container},u.close,u.title,u.content,u.footer)}Ur.propTypes={content:T.node.isRequired,footer:T.node,handleClick:T.func.isRequired,open:T.bool,positionWrapper:T.bool.isRequired,showCloseButton:T.bool.isRequired,styles:T.object.isRequired,title:T.node};var zr=(function(e){gt(n,e);var t=bt(n);function n(){return yt(this,n),t.apply(this,arguments)}return vt(n,[{key:"style",get:function(){var o=this.props,i=o.disableAnimation,a=o.component,s=o.placement,l=o.hideArrow,u=o.status,f=o.styles,c=f.arrow.length,d=f.floater,p=f.floaterCentered,h=f.floaterClosing,v=f.floaterOpening,O=f.floaterWithAnimation,y=f.floaterWithComponent,m={};return l||(s.startsWith("top")?m.padding="0 0 ".concat(c,"px"):s.startsWith("bottom")?m.padding="".concat(c,"px 0 0"):s.startsWith("left")?m.padding="0 ".concat(c,"px 0 0"):s.startsWith("right")&&(m.padding="0 0 0 ".concat(c,"px"))),[$.OPENING,$.OPEN].indexOf(u)!==-1&&(m=K(K({},m),v)),u===$.CLOSING&&(m=K(K({},m),h)),u===$.OPEN&&!i&&(m=K(K({},m),O)),s==="center"&&(m=K(K({},m),p)),a&&(m=K(K({},m),y)),K(K({},d),m)}},{key:"render",value:function(){var o=this.props,i=o.component,a=o.handleClick,s=o.hideArrow,l=o.setFloaterRef,u=o.status,f={},c=["__floater"];return i?w.isValidElement(i)?f.content=w.cloneElement(i,{closeFn:a}):f.content=i({closeFn:a}):f.content=w.createElement(Ur,this.props),u===$.OPEN&&c.push("__floater__open"),s||(f.arrow=w.createElement($r,this.props)),w.createElement("div",{ref:l,className:c.join(" "),style:this.style},w.createElement("div",{className:"__floater__body"},f.content,f.arrow))}}]),n})(w.Component);ne(zr,"propTypes",{component:T.oneOfType([T.func,T.element]),content:T.node,disableAnimation:T.bool.isRequired,footer:T.node,handleClick:T.func.isRequired,hideArrow:T.bool.isRequired,open:T.bool,placement:T.string.isRequired,positionWrapper:T.bool.isRequired,setArrowRef:T.func.isRequired,setFloaterRef:T.func.isRequired,showCloseButton:T.bool,status:T.string.isRequired,styles:T.object.isRequired,title:T.node});var Yr=(function(e){gt(n,e);var t=bt(n);function n(){return yt(this,n),t.apply(this,arguments)}return vt(n,[{key:"render",value:function(){var o=this.props,i=o.children,a=o.handleClick,s=o.handleMouseEnter,l=o.handleMouseLeave,u=o.setChildRef,f=o.setWrapperRef,c=o.style,d=o.styles,p;if(i)if(w.Children.count(i)===1)if(!w.isValidElement(i))p=w.createElement("span",null,i);else{var h=g.function(i.type)?"innerRef":"ref";p=w.cloneElement(w.Children.only(i),ne({},h,u))}else p=i;return p?w.createElement("span",{ref:f,style:K(K({},d),c),onClick:a,onMouseEnter:s,onMouseLeave:l},p):null}}]),n})(w.Component);ne(Yr,"propTypes",{children:T.node,handleClick:T.func.isRequired,handleMouseEnter:T.func.isRequired,handleMouseLeave:T.func.isRequired,setChildRef:T.func.isRequired,setWrapperRef:T.func.isRequired,style:T.object,styles:T.object.isRequired});var Wa={zIndex:100};function Aa(e){var t=ye(Wa,e.options||{});return{wrapper:{cursor:"help",display:"inline-flex",flexDirection:"column",zIndex:t.zIndex},wrapperPosition:{left:-1e3,position:"absolute",top:-1e3,visibility:"hidden"},floater:{display:"inline-block",filter:"drop-shadow(0 0 3px rgba(0, 0, 0, 0.3))",maxWidth:300,opacity:0,position:"relative",transition:"opacity 0.3s",visibility:"hidden",zIndex:t.zIndex},floaterOpening:{opacity:1,visibility:"visible"},floaterWithAnimation:{opacity:1,transition:"opacity 0.3s, transform 0.2s",visibility:"visible"},floaterWithComponent:{maxWidth:"100%"},floaterClosing:{opacity:0,visibility:"visible"},floaterCentered:{left:"50%",position:"fixed",top:"50%",transform:"translate(-50%, -50%)"},container:{backgroundColor:"#fff",color:"#666",minHeight:60,minWidth:200,padding:20,position:"relative",zIndex:10},title:{borderBottom:"1px solid #555",color:"#555",fontSize:18,marginBottom:5,paddingBottom:6,paddingRight:18},content:{fontSize:15},close:{backgroundColor:"transparent",border:0,borderRadius:0,color:"#555",fontSize:0,height:15,outline:"none",padding:10,position:"absolute",right:0,top:0,width:15,WebkitAppearance:"none"},footer:{borderTop:"1px solid #ccc",fontSize:13,marginTop:10,paddingTop:5},arrow:{color:"#fff",display:"inline-flex",length:16,margin:8,position:"absolute",spread:32},options:t}}var _a=["arrow","flip","offset"],ja=["position","top","right","bottom","left"],vn=(function(e){gt(n,e);var t=bt(n);function n(r){var o;return yt(this,n),o=t.call(this,r),ne(xe(o),"setArrowRef",function(i){o.arrowRef=i}),ne(xe(o),"setChildRef",function(i){o.childRef=i}),ne(xe(o),"setFloaterRef",function(i){o.floaterRef=i}),ne(xe(o),"setWrapperRef",function(i){o.wrapperRef=i}),ne(xe(o),"handleTransitionEnd",function(){var i=o.state.status,a=o.props.callback;o.wrapperPopper&&o.wrapperPopper.instance.update(),o.setState({status:i===$.OPENING?$.OPEN:$.IDLE},function(){var s=o.state.status;a(s===$.OPEN?"open":"close",o.props)})}),ne(xe(o),"handleClick",function(){var i=o.props,a=i.event,s=i.open;if(!g.boolean(s)){var l=o.state,u=l.positionWrapper,f=l.status;(o.event==="click"||o.event==="hover"&&u)&&(St({title:"click",data:[{event:a,status:f===$.OPEN?"closing":"opening"}],debug:o.debug}),o.toggle())}}),ne(xe(o),"handleMouseEnter",function(){var i=o.props,a=i.event,s=i.open;if(!(g.boolean(s)||Kt())){var l=o.state.status;o.event==="hover"&&l===$.IDLE&&(St({title:"mouseEnter",data:[{key:"originalEvent",value:a}],debug:o.debug}),clearTimeout(o.eventDelayTimeout),o.toggle())}}),ne(xe(o),"handleMouseLeave",function(){var i=o.props,a=i.event,s=i.eventDelay,l=i.open;if(!(g.boolean(l)||Kt())){var u=o.state,f=u.status,c=u.positionWrapper;o.event==="hover"&&(St({title:"mouseLeave",data:[{key:"originalEvent",value:a}],debug:o.debug}),s?[$.OPENING,$.OPEN].indexOf(f)!==-1&&!c&&!o.eventDelayTimeout&&(o.eventDelayTimeout=setTimeout(function(){delete o.eventDelayTimeout,o.toggle()},s*1e3)):o.toggle($.IDLE))}}),o.state={currentPlacement:r.placement,needsUpdate:!1,positionWrapper:r.wrapperOptions.position&&!!r.target,status:$.INIT,statusWrapper:$.INIT},o._isMounted=!1,o.hasMounted=!1,Oe()&&window.addEventListener("load",function(){o.popper&&o.popper.instance.update(),o.wrapperPopper&&o.wrapperPopper.instance.update()}),o}return vt(n,[{key:"componentDidMount",value:function(){if(Oe()){var o=this.state.positionWrapper,i=this.props,a=i.children,s=i.open,l=i.target;this._isMounted=!0,St({title:"init",data:{hasChildren:!!a,hasTarget:!!l,isControlled:g.boolean(s),positionWrapper:o,target:this.target,floater:this.floaterRef},debug:this.debug}),this.hasMounted||(this.initPopper(),this.hasMounted=!0),!a&&l&&g.boolean(s)}}},{key:"componentDidUpdate",value:function(o,i){if(Oe()){var a=this.props,s=a.autoOpen,l=a.open,u=a.target,f=a.wrapperOptions,c=va(i,this.state),d=c.changedFrom,p=c.changed;if(o.open!==l){var h;g.boolean(l)&&(h=l?$.OPENING:$.CLOSING),this.toggle(h)}(o.wrapperOptions.position!==f.position||o.target!==u)&&this.changeWrapperPosition(this.props),p("status",$.IDLE)&&l?this.toggle($.OPEN):d("status",$.INIT,$.IDLE)&&s&&this.toggle($.OPEN),this.popper&&p("status",$.OPENING)&&this.popper.instance.update(),this.floaterRef&&(p("status",$.OPENING)||p("status",$.CLOSING))&&Ia(this.floaterRef,"transitionend",this.handleTransitionEnd),p("needsUpdate",!0)&&this.rebuildPopper()}}},{key:"componentWillUnmount",value:function(){Oe()&&(this._isMounted=!1,this.popper&&this.popper.instance.destroy(),this.wrapperPopper&&this.wrapperPopper.instance.destroy())}},{key:"initPopper",value:function(){var o=this,i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.target,a=this.state.positionWrapper,s=this.props,l=s.disableFlip,u=s.getPopper,f=s.hideArrow,c=s.offset,d=s.placement,p=s.wrapperOptions,h=d==="top"||d==="bottom"?"flip":["right","bottom-end","top-end","left","top-start","bottom-start"];if(d==="center")this.setState({status:$.IDLE});else if(i&&this.floaterRef){var v=this.options,O=v.arrow,y=v.flip,m=v.offset,S=Fr(v,_a);new ut(i,this.floaterRef,{placement:d,modifiers:K({arrow:K({enabled:!f,element:this.arrowRef},O),flip:K({enabled:!l,behavior:h},y),offset:K({offset:"0, ".concat(c,"px")},m)},S),onCreate:function(C){var M;if(o.popper=C,!((M=o.floaterRef)!==null&&M!==void 0&&M.isConnected)){o.setState({needsUpdate:!0});return}u(C,"floater"),o._isMounted&&o.setState({currentPlacement:C.placement,status:$.IDLE}),d!==C.placement&&setTimeout(function(){C.instance.update()},1)},onUpdate:function(C){o.popper=C;var M=o.state.currentPlacement;o._isMounted&&C.placement!==M&&o.setState({currentPlacement:C.placement})}})}if(a){var D=g.undefined(p.offset)?0:p.offset;new ut(this.target,this.wrapperRef,{placement:p.placement||d,modifiers:{arrow:{enabled:!1},offset:{offset:"0, ".concat(D,"px")},flip:{enabled:!1}},onCreate:function(C){o.wrapperPopper=C,o._isMounted&&o.setState({statusWrapper:$.IDLE}),u(C,"wrapper"),d!==C.placement&&setTimeout(function(){C.instance.update()},1)}})}}},{key:"rebuildPopper",value:function(){var o=this;this.floaterRefInterval=setInterval(function(){var i;(i=o.floaterRef)!==null&&i!==void 0&&i.isConnected&&(clearInterval(o.floaterRefInterval),o.setState({needsUpdate:!1}),o.initPopper())},50)}},{key:"changeWrapperPosition",value:function(o){var i=o.target,a=o.wrapperOptions;this.setState({positionWrapper:a.position&&!!i})}},{key:"toggle",value:function(o){var i=this.state.status,a=i===$.OPEN?$.CLOSING:$.OPENING;g.undefined(o)||(a=o),this.setState({status:a})}},{key:"debug",get:function(){var o=this.props.debug;return o||Oe()&&"ReactFloaterDebug"in window&&!!window.ReactFloaterDebug}},{key:"event",get:function(){var o=this.props,i=o.disableHoverToClick,a=o.event;return a==="hover"&&Kt()&&!i?"click":a}},{key:"options",get:function(){var o=this.props.options;return ye(Ea,o||{})}},{key:"styles",get:function(){var o=this,i=this.state,a=i.status,s=i.positionWrapper,l=i.statusWrapper,u=this.props.styles,f=ye(Aa(u),u);if(s){var c;[$.IDLE].indexOf(a)===-1||[$.IDLE].indexOf(l)===-1?c=f.wrapperPosition:c=this.wrapperPopper.styles,f.wrapper=K(K({},f.wrapper),c)}if(this.target){var d=window.getComputedStyle(this.target);this.wrapperStyles?f.wrapper=K(K({},f.wrapper),this.wrapperStyles):["relative","static"].indexOf(d.position)===-1&&(this.wrapperStyles={},s||(ja.forEach(function(p){o.wrapperStyles[p]=d[p]}),f.wrapper=K(K({},f.wrapper),this.wrapperStyles),this.target.style.position="relative",this.target.style.top="auto",this.target.style.right="auto",this.target.style.bottom="auto",this.target.style.left="auto"))}return f}},{key:"target",get:function(){if(!Oe())return null;var o=this.props.target;return o?g.domElement(o)?o:document.querySelector(o):this.childRef||this.wrapperRef}},{key:"render",value:function(){var o=this.state,i=o.currentPlacement,a=o.positionWrapper,s=o.status,l=this.props,u=l.children,f=l.component,c=l.content,d=l.disableAnimation,p=l.footer,h=l.hideArrow,v=l.id,O=l.open,y=l.showCloseButton,m=l.style,S=l.target,D=l.title,E=w.createElement(Yr,{handleClick:this.handleClick,handleMouseEnter:this.handleMouseEnter,handleMouseLeave:this.handleMouseLeave,setChildRef:this.setChildRef,setWrapperRef:this.setWrapperRef,style:m,styles:this.styles.wrapper},u),C={};return a?C.wrapperInPortal=E:C.wrapperAsChildren=E,w.createElement("span",null,w.createElement(Br,{hasChildren:!!u,id:v,placement:i,setRef:this.setFloaterRef,target:S,zIndex:this.styles.options.zIndex},w.createElement(zr,{component:f,content:c,disableAnimation:d,footer:p,handleClick:this.handleClick,hideArrow:h||i==="center",open:O,placement:i,positionWrapper:a,setArrowRef:this.setArrowRef,setFloaterRef:this.setFloaterRef,showCloseButton:y,status:s,styles:this.styles,title:D}),C.wrapperInPortal),C.wrapperAsChildren)}}]),n})(w.Component);ne(vn,"propTypes",{autoOpen:T.bool,callback:T.func,children:T.node,component:Zn(T.oneOfType([T.func,T.element]),function(e){return!e.content}),content:Zn(T.node,function(e){return!e.component}),debug:T.bool,disableAnimation:T.bool,disableFlip:T.bool,disableHoverToClick:T.bool,event:T.oneOf(["hover","click"]),eventDelay:T.number,footer:T.node,getPopper:T.func,hideArrow:T.bool,id:T.oneOfType([T.string,T.number]),offset:T.number,open:T.bool,options:T.object,placement:T.oneOf(["top","top-start","top-end","bottom","bottom-start","bottom-end","left","left-start","left-end","right","right-start","right-end","auto","center"]),showCloseButton:T.bool,style:T.object,styles:T.object,target:T.oneOfType([T.object,T.string]),title:T.node,wrapperOptions:T.shape({offset:T.number,placement:T.oneOf(["top","top-start","top-end","bottom","bottom-start","bottom-end","left","left-start","left-end","right","right-start","right-end","auto"]),position:T.bool})});ne(vn,"defaultProps",{autoOpen:!1,callback:Jn,debug:!1,disableAnimation:!1,disableFlip:!1,disableHoverToClick:!1,event:"click",eventDelay:.4,getPopper:Jn,hideArrow:!1,offset:15,placement:"bottom",showCloseButton:!1,styles:{},target:null,wrapperOptions:{position:!1}});var Fa=Object.defineProperty,La=(e,t,n)=>t in e?Fa(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,P=(e,t,n)=>La(e,typeof t!="symbol"?t+"":t,n),z={INIT:"init",START:"start",STOP:"stop",RESET:"reset",PREV:"prev",NEXT:"next",GO:"go",CLOSE:"close",SKIP:"skip",UPDATE:"update"},me={TOUR_START:"tour:start",STEP_BEFORE:"step:before",BEACON:"beacon",TOOLTIP:"tooltip",STEP_AFTER:"step:after",TOUR_END:"tour:end",TOUR_STATUS:"tour:status",TARGET_NOT_FOUND:"error:target_not_found"},A={INIT:"init",READY:"ready",BEACON:"beacon",TOOLTIP:"tooltip",COMPLETE:"complete",ERROR:"error"},B={IDLE:"idle",READY:"ready",WAITING:"waiting",RUNNING:"running",PAUSED:"paused",SKIPPED:"skipped",FINISHED:"finished"};function Re(){var e;return!!(typeof window<"u"&&((e=window.document)!=null&&e.createElement))}function qr(e){return e?e.getBoundingClientRect():null}function Ba(e=!1){const{body:t,documentElement:n}=document;if(!t||!n)return 0;if(e){const r=[t.scrollHeight,t.offsetHeight,n.clientHeight,n.scrollHeight,n.offsetHeight].sort((i,a)=>i-a),o=Math.floor(r.length/2);return r.length%2===0?(r[o-1]+r[o])/2:r[o]}return Math.max(t.scrollHeight,t.offsetHeight,n.clientHeight,n.scrollHeight,n.offsetHeight)}function Ne(e){if(typeof e=="string")try{return document.querySelector(e)}catch{return null}return e}function $a(e){return!e||e.nodeType!==1?null:getComputedStyle(e)}function ft(e,t,n){if(!e)return Fe();const r=wr(e);if(r){if(r.isSameNode(Fe()))return n?document:Fe();if(!(r.scrollHeight>r.offsetHeight)&&!t)return r.style.overflow="initial",Fe()}return r}function At(e,t){if(!e)return!1;const n=ft(e,t);return n?!n.isSameNode(Fe()):!1}function Ha(e){return e.offsetParent!==document.body}function Xe(e,t="fixed"){if(!e||!(e instanceof HTMLElement))return!1;const{nodeName:n}=e,r=$a(e);return n==="BODY"||n==="HTML"?!1:r&&r.position===t?!0:e.parentNode?Xe(e.parentNode,t):!1}function Ua(e){var t;if(!e)return!1;let n=e;for(;n&&n!==document.body;){if(n instanceof HTMLElement){const{display:r,visibility:o}=getComputedStyle(n);if(r==="none"||o==="hidden")return!1}n=(t=n.parentElement)!=null?t:null}return!0}function za(e,t,n){var r,o,i;const a=qr(e),s=ft(e,n),l=At(e,n),u=Xe(e);let f=0,c=(r=a?.top)!=null?r:0;if(l&&u){const d=(o=e?.offsetTop)!=null?o:0,p=(i=s?.scrollTop)!=null?i:0;c=d-p}else s instanceof HTMLElement&&(f=s.scrollTop,!l&&!Xe(e)&&(c+=f),s.isSameNode(Fe())||(c+=Fe().scrollTop));return Math.floor(c-t)}function Ya(e,t,n){var r;if(!e)return 0;const{offsetTop:o=0,scrollTop:i=0}=(r=wr(e))!=null?r:{};let a=e.getBoundingClientRect().top+i;o&&(At(e,n)||Ha(e))&&(a-=o);const s=Math.floor(a-t);return s<0?0:s}function Fe(){var e;return(e=document.scrollingElement)!=null?e:document.documentElement}function qa(e,t){const{duration:n,element:r}=t;return new Promise((o,i)=>{const{scrollTop:a}=r,s=e>a?e-a:a-e;fs.top(r,e,{duration:s<100?50:n},l=>l&&l.message!=="Element already at target scroll position"?i(l):o())})}var st=kt.createPortal!==void 0;function Gr(e=navigator.userAgent){let t=e;return typeof window>"u"?t="node":document.documentMode?t="ie":/Edge/.test(e)?t="edge":window.opera||e.includes(" OPR/")?t="opera":typeof window.InstallTrigger<"u"?t="firefox":window.chrome?t="chrome":/(Version\/([\d._]+).*Safari|CriOS|FxiOS| Mobile\/)/.test(e)&&(t="safari"),t}function Tt(e){return Object.prototype.toString.call(e).slice(8,-1).toLowerCase()}function Se(e,t={}){const{defaultValue:n,step:r,steps:o}=t;let i=An(e);if(i)(i.includes("{step}")||i.includes("{steps}"))&&r&&o&&(i=i.replace("{step}",r.toString()).replace("{steps}",o.toString()));else if(b.isValidElement(e)&&!Object.values(e.props).length&&Tt(e.type)==="function"){const a=e.type({});i=Se(a,t)}else i=An(n);return i}function Ga(e,t){return!N.plainObject(e)||!N.array(t)?!1:Object.keys(e).every(n=>t.includes(n))}function Va(e){const t=/^#?([\da-f])([\da-f])([\da-f])$/i,n=e.replace(t,(o,i,a,s)=>i+i+a+a+s+s),r=/^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i.exec(n);return r?[parseInt(r[1],16),parseInt(r[2],16),parseInt(r[3],16)]:[]}function Xn(e){return e.disableBeacon||e.placement==="center"}function Qn(){return!["chrome","safari","firefox","opera"].includes(Gr())}function $e({data:e,debug:t=!1,title:n,warn:r=!1}){const o=r?console.warn||console.error:console.log;t&&(n&&e?(console.groupCollapsed(`%creact-joyride: ${n}`,"color: #ff0044; font-weight: bold; font-size: 12px;"),Array.isArray(e)?e.forEach(i=>{N.plainObject(i)&&i.key?o.apply(console,[i.key,i.value]):o.apply(console,[i])}):o.apply(console,[e]),console.groupEnd()):console.error("Missing title or data props"))}function Ka(e){return Object.keys(e)}function Vr(e,...t){if(!N.plainObject(e))throw new TypeError("Expected an object");const n={};for(const r in e)({}).hasOwnProperty.call(e,r)&&(t.includes(r)||(n[r]=e[r]));return n}function Za(e,...t){if(!N.plainObject(e))throw new TypeError("Expected an object");if(!t.length)return e;const n={};for(const r in e)({}).hasOwnProperty.call(e,r)&&t.includes(r)&&(n[r]=e[r]);return n}function an(e,t,n){const r=i=>i.replace("{step}",String(t)).replace("{steps}",String(n));if(Tt(e)==="string")return r(e);if(!b.isValidElement(e))return e;const{children:o}=e.props;if(Tt(o)==="string"&&o.includes("{step}"))return b.cloneElement(e,{children:r(o)});if(Array.isArray(o))return b.cloneElement(e,{children:o.map(i=>typeof i=="string"?r(i):an(i,t,n))});if(Tt(e.type)==="function"&&!Object.values(e.props).length){const i=e.type({});return an(i,t,n)}return e}function Ja(e){const{isFirstStep:t,lifecycle:n,previousLifecycle:r,scrollToFirstStep:o,step:i,target:a}=e;return!i.disableScrolling&&(!t||o||n===A.TOOLTIP)&&i.placement!=="center"&&(!i.isFixed||!Xe(a))&&r!==n&&[A.BEACON,A.TOOLTIP].includes(n)}var Xa={options:{preventOverflow:{boundariesElement:"scrollParent"}},wrapperOptions:{offset:-18,position:!0}},Kr={back:"Back",close:"Close",last:"Last",next:"Next",nextLabelWithProgress:"Next (Step {step} of {steps})",open:"Open the dialog",skip:"Skip"},Qa={event:"click",placement:"bottom",offset:10,disableBeacon:!1,disableCloseOnEsc:!1,disableOverlay:!1,disableOverlayClose:!1,disableScrollParentFix:!1,disableScrolling:!1,hideBackButton:!1,hideCloseButton:!1,hideFooter:!1,isFixed:!1,locale:Kr,showProgress:!1,showSkipButton:!1,spotlightClicks:!1,spotlightPadding:10},el={continuous:!1,debug:!1,disableCloseOnEsc:!1,disableOverlay:!1,disableOverlayClose:!1,disableScrolling:!1,disableScrollParentFix:!1,getHelpers:void 0,hideBackButton:!1,run:!0,scrollOffset:20,scrollDuration:300,scrollToFirstStep:!1,showSkipButton:!1,showProgress:!1,spotlightClicks:!1,spotlightPadding:10,steps:[]},tl={arrowColor:"#fff",backgroundColor:"#fff",beaconSize:36,overlayColor:"rgba(0, 0, 0, 0.5)",primaryColor:"#f04",spotlightShadow:"0 0 15px rgba(0, 0, 0, 0.5)",textColor:"#333",width:380,zIndex:100},at={backgroundColor:"transparent",border:0,borderRadius:0,color:"#555",cursor:"pointer",fontSize:16,lineHeight:1,padding:8,WebkitAppearance:"none"},er={borderRadius:4,position:"absolute"};function nl(e,t){var n,r,o,i,a;const{floaterProps:s,styles:l}=e,u=ye((n=t.floaterProps)!=null?n:{},s??{}),f=ye(l??{},(r=t.styles)!=null?r:{}),c=ye(tl,f.options||{}),d=t.placement==="center"||t.disableBeacon;let{width:p}=c;window.innerWidth>480&&(p=380),"width"in c&&(p=typeof c.width=="number"&&window.innerWidthZr(n,t)):($e({title:"validateSteps",data:"steps must be an array",warn:!0,debug:t}),!1)}var Jr={action:"init",controlled:!1,index:0,lifecycle:A.INIT,origin:null,size:0,status:B.IDLE},nr=Ka(Vr(Jr,"controlled","size")),ol=class{constructor(e){P(this,"beaconPopper"),P(this,"tooltipPopper"),P(this,"data",new Map),P(this,"listener"),P(this,"store",new Map),P(this,"addListener",o=>{this.listener=o}),P(this,"setSteps",o=>{const{size:i,status:a}=this.getState(),s={size:o.length,status:a};this.data.set("steps",o),a===B.WAITING&&!i&&o.length&&(s.status=B.RUNNING),this.setState(s)}),P(this,"getPopper",o=>o==="beacon"?this.beaconPopper:this.tooltipPopper),P(this,"setPopper",(o,i)=>{o==="beacon"?this.beaconPopper=i:this.tooltipPopper=i}),P(this,"cleanupPoppers",()=>{this.beaconPopper=null,this.tooltipPopper=null}),P(this,"close",(o=null)=>{const{index:i,status:a}=this.getState();a===B.RUNNING&&this.setState({...this.getNextState({action:z.CLOSE,index:i+1,origin:o})})}),P(this,"go",o=>{const{controlled:i,status:a}=this.getState();if(i||a!==B.RUNNING)return;const s=this.getSteps()[o];this.setState({...this.getNextState({action:z.GO,index:o}),status:s?a:B.FINISHED})}),P(this,"info",()=>this.getState()),P(this,"next",()=>{const{index:o,status:i}=this.getState();i===B.RUNNING&&this.setState(this.getNextState({action:z.NEXT,index:o+1}))}),P(this,"open",()=>{const{status:o}=this.getState();o===B.RUNNING&&this.setState({...this.getNextState({action:z.UPDATE,lifecycle:A.TOOLTIP})})}),P(this,"prev",()=>{const{index:o,status:i}=this.getState();i===B.RUNNING&&this.setState({...this.getNextState({action:z.PREV,index:o-1})})}),P(this,"reset",(o=!1)=>{const{controlled:i}=this.getState();i||this.setState({...this.getNextState({action:z.RESET,index:0}),status:o?B.RUNNING:B.READY})}),P(this,"skip",()=>{const{status:o}=this.getState();o===B.RUNNING&&this.setState({action:z.SKIP,lifecycle:A.INIT,status:B.SKIPPED})}),P(this,"start",o=>{const{index:i,size:a}=this.getState();this.setState({...this.getNextState({action:z.START,index:N.number(o)?o:i},!0),status:a?B.RUNNING:B.WAITING})}),P(this,"stop",(o=!1)=>{const{index:i,status:a}=this.getState();[B.FINISHED,B.SKIPPED].includes(a)||this.setState({...this.getNextState({action:z.STOP,index:i+(o?1:0)}),status:B.PAUSED})}),P(this,"update",o=>{var i,a;if(!Ga(o,nr))throw new Error(`State is not valid. Valid keys: ${nr.join(", ")}`);this.setState({...this.getNextState({...this.getState(),...o,action:(i=o.action)!=null?i:z.UPDATE,origin:(a=o.origin)!=null?a:null},!0)})});const{continuous:t=!1,stepIndex:n,steps:r=[]}=e??{};this.setState({action:z.INIT,controlled:N.number(n),continuous:t,index:N.number(n)?n:0,lifecycle:A.INIT,origin:null,status:r.length?B.READY:B.IDLE},!0),this.beaconPopper=null,this.tooltipPopper=null,this.listener=null,this.setSteps(r)}getState(){return this.store.size?{action:this.store.get("action")||"",controlled:this.store.get("controlled")||!1,index:parseInt(this.store.get("index"),10),lifecycle:this.store.get("lifecycle")||"",origin:this.store.get("origin")||null,size:this.store.get("size")||0,status:this.store.get("status")||""}:{...Jr}}getNextState(e,t=!1){var n,r,o,i,a;const{action:s,controlled:l,index:u,size:f,status:c}=this.getState(),d=N.number(e.index)?e.index:u,p=l&&!t?u:Math.min(Math.max(d,0),f);return{action:(n=e.action)!=null?n:s,controlled:l,index:p,lifecycle:(r=e.lifecycle)!=null?r:A.INIT,origin:(o=e.origin)!=null?o:null,size:(i=e.size)!=null?i:f,status:p===f?B.FINISHED:(a=e.status)!=null?a:c}}getSteps(){const e=this.data.get("steps");return Array.isArray(e)?e:[]}hasUpdatedState(e){const t=JSON.stringify(e),n=JSON.stringify(this.getState());return t!==n}setState(e,t=!1){const n=this.getState(),{action:r,index:o,lifecycle:i,origin:a=null,size:s,status:l}={...n,...e};this.store.set("action",r),this.store.set("index",o),this.store.set("lifecycle",i),this.store.set("origin",a),this.store.set("size",s),this.store.set("status",l),t&&(this.store.set("controlled",e.controlled),this.store.set("continuous",e.continuous)),this.listener&&this.hasUpdatedState(n)&&this.listener(this.getState())}getHelpers(){return{close:this.close,go:this.go,info:this.info,next:this.next,open:this.open,prev:this.prev,reset:this.reset,skip:this.skip}}};function il(e){return new ol(e)}function sl({styles:e}){return b.createElement("div",{key:"JoyrideSpotlight",className:"react-joyride__spotlight","data-test-id":"spotlight",style:e})}var al=sl,ll=class extends b.Component{constructor(){super(...arguments),P(this,"isActive",!1),P(this,"resizeTimeout"),P(this,"scrollTimeout"),P(this,"scrollParent"),P(this,"state",{isScrolling:!1,mouseOverSpotlight:!1,showSpotlight:!0}),P(this,"hideSpotlight",()=>{const{continuous:e,disableOverlay:t,lifecycle:n}=this.props,r=[A.INIT,A.BEACON,A.COMPLETE,A.ERROR];return t||(e?r.includes(n):n!==A.TOOLTIP)}),P(this,"handleMouseMove",e=>{const{mouseOverSpotlight:t}=this.state,{height:n,left:r,position:o,top:i,width:a}=this.spotlightStyles,s=o==="fixed"?e.clientY:e.pageY,l=o==="fixed"?e.clientX:e.pageX,u=s>=i&&s<=i+n,c=l>=r&&l<=r+a&&u;c!==t&&this.updateState({mouseOverSpotlight:c})}),P(this,"handleScroll",()=>{const{target:e}=this.props,t=Ne(e);if(this.scrollParent!==document){const{isScrolling:n}=this.state;n||this.updateState({isScrolling:!0,showSpotlight:!1}),clearTimeout(this.scrollTimeout),this.scrollTimeout=window.setTimeout(()=>{this.updateState({isScrolling:!1,showSpotlight:!0})},50)}else Xe(t,"sticky")&&this.updateState({})}),P(this,"handleResize",()=>{clearTimeout(this.resizeTimeout),this.resizeTimeout=window.setTimeout(()=>{this.isActive&&this.forceUpdate()},100)})}componentDidMount(){const{debug:e,disableScrolling:t,disableScrollParentFix:n=!1,target:r}=this.props,o=Ne(r);this.scrollParent=ft(o??document.body,n,!0),this.isActive=!0,window.addEventListener("resize",this.handleResize)}componentDidUpdate(e){var t;const{disableScrollParentFix:n,lifecycle:r,spotlightClicks:o,target:i}=this.props,{changed:a}=Mt(e,this.props);if(a("target")||a("disableScrollParentFix")){const s=Ne(i);this.scrollParent=ft(s??document.body,n,!0)}a("lifecycle",A.TOOLTIP)&&((t=this.scrollParent)==null||t.addEventListener("scroll",this.handleScroll,{passive:!0}),setTimeout(()=>{const{isScrolling:s}=this.state;s||this.updateState({showSpotlight:!0})},100)),(a("spotlightClicks")||a("disableOverlay")||a("lifecycle"))&&(o&&r===A.TOOLTIP?window.addEventListener("mousemove",this.handleMouseMove,!1):r!==A.TOOLTIP&&window.removeEventListener("mousemove",this.handleMouseMove))}componentWillUnmount(){var e;this.isActive=!1,window.removeEventListener("mousemove",this.handleMouseMove),window.removeEventListener("resize",this.handleResize),clearTimeout(this.resizeTimeout),clearTimeout(this.scrollTimeout),(e=this.scrollParent)==null||e.removeEventListener("scroll",this.handleScroll)}get overlayStyles(){const{mouseOverSpotlight:e}=this.state,{disableOverlayClose:t,placement:n,styles:r}=this.props;let o=r.overlay;return Qn()&&(o=n==="center"?r.overlayLegacyCenter:r.overlayLegacy),{cursor:t?"default":"pointer",height:Ba(),pointerEvents:e?"none":"auto",...o}}get spotlightStyles(){var e,t,n;const{showSpotlight:r}=this.state,{disableScrollParentFix:o=!1,spotlightClicks:i,spotlightPadding:a=0,styles:s,target:l}=this.props,u=Ne(l),f=qr(u),c=Xe(u),d=za(u,a,o);return{...Qn()?s.spotlightLegacy:s.spotlight,height:Math.round(((e=f?.height)!=null?e:0)+a*2),left:Math.round(((t=f?.left)!=null?t:0)-a),opacity:r?1:0,pointerEvents:i?"none":"auto",position:c?"fixed":"absolute",top:d,transition:"opacity 0.2s",width:Math.round(((n=f?.width)!=null?n:0)+a*2)}}updateState(e){this.isActive&&this.setState(t=>({...t,...e}))}render(){const{showSpotlight:e}=this.state,{onClickOverlay:t,placement:n}=this.props,{hideSpotlight:r,overlayStyles:o,spotlightStyles:i}=this;if(r())return null;let a=n!=="center"&&e&&b.createElement(al,{styles:i});if(Gr()==="safari"){const{mixBlendMode:s,zIndex:l,...u}=o;a=b.createElement("div",{style:{...u}},a),delete o.backgroundColor}return b.createElement("div",{className:"react-joyride__overlay","data-test-id":"overlay",onClick:t,role:"presentation",style:o},a)}},cl=class extends b.Component{constructor(){super(...arguments),P(this,"node",null)}componentDidMount(){const{id:e}=this.props;Re()&&(this.node=document.createElement("div"),this.node.id=e,document.body.appendChild(this.node),st||this.renderReact15())}componentDidUpdate(){Re()&&(st||this.renderReact15())}componentWillUnmount(){!Re()||!this.node||(st||kt.unmountComponentAtNode(this.node),this.node.parentNode===document.body&&(document.body.removeChild(this.node),this.node=null))}renderReact15(){if(!Re())return;const{children:e}=this.props;this.node&&kt.unstable_renderSubtreeIntoContainer(this,e,this.node)}renderReact16(){if(!Re()||!st)return null;const{children:e}=this.props;return this.node?kt.createPortal(e,this.node):null}render(){return st?this.renderReact16():null}},ul=class{constructor(e,t){if(P(this,"element"),P(this,"options"),P(this,"canBeTabbed",n=>{const{tabIndex:r}=n;return r===null||r<0?!1:this.canHaveFocus(n)}),P(this,"canHaveFocus",n=>{const r=/input|select|textarea|button|object/,o=n.nodeName.toLowerCase();return(r.test(o)&&!n.getAttribute("disabled")||o==="a"&&!!n.getAttribute("href"))&&this.isVisible(n)}),P(this,"findValidTabElements",()=>[].slice.call(this.element.querySelectorAll("*"),0).filter(this.canBeTabbed)),P(this,"handleKeyDown",n=>{const{code:r="Tab"}=this.options;n.code===r&&this.interceptTab(n)}),P(this,"interceptTab",n=>{n.preventDefault();const r=this.findValidTabElements(),{shiftKey:o}=n;if(!r.length)return;let i=document.activeElement?r.indexOf(document.activeElement):0;i===-1||!o&&i+1===r.length?i=0:o&&i===0?i=r.length-1:i+=o?-1:1,r[i].focus()}),P(this,"isHidden",n=>{const r=n.offsetWidth<=0&&n.offsetHeight<=0,o=window.getComputedStyle(n);return r&&!n.innerHTML?!0:r&&o.getPropertyValue("overflow")!=="visible"||o.getPropertyValue("display")==="none"}),P(this,"isVisible",n=>{let r=n;for(;r;)if(r instanceof HTMLElement){if(r===document.body)break;if(this.isHidden(r))return!1;r=r.parentNode}return!0}),P(this,"removeScope",()=>{window.removeEventListener("keydown",this.handleKeyDown)}),P(this,"checkFocus",n=>{document.activeElement!==n&&(n.focus(),window.requestAnimationFrame(()=>this.checkFocus(n)))}),P(this,"setFocus",()=>{const{selector:n}=this.options;if(!n)return;const r=this.element.querySelector(n);r&&window.requestAnimationFrame(()=>this.checkFocus(r))}),!(e instanceof HTMLElement))throw new TypeError("Invalid parameter: element must be an HTMLElement");this.element=e,this.options=t,window.addEventListener("keydown",this.handleKeyDown,!1),this.setFocus()}},fl=class extends b.Component{constructor(e){if(super(e),P(this,"beacon",null),P(this,"setBeaconRef",o=>{this.beacon=o}),e.beaconComponent)return;const t=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.id="joyride-beacon-animation",e.nonce&&n.setAttribute("nonce",e.nonce),n.appendChild(document.createTextNode(` @keyframes joyride-beacon-inner { 20% { opacity: 0.9; diff --git a/webui/dist/assets/radix-core-BlBHu_Lw.js b/webui/dist/assets/radix-core-C3XKqQJw.js similarity index 99% rename from webui/dist/assets/radix-core-BlBHu_Lw.js rename to webui/dist/assets/radix-core-C3XKqQJw.js index 2195079c..d16e79af 100644 --- a/webui/dist/assets/radix-core-BlBHu_Lw.js +++ b/webui/dist/assets/radix-core-C3XKqQJw.js @@ -42,4 +42,4 @@ import{r as i,j as v,R as Ee,a as sn,b as Ye,c as ds}from"./router-CWhjJi2n.js"; If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component. -For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return i.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},aa="DialogDescriptionWarning",ca=({contentRef:e,descriptionId:t})=>{const o=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${jo(aa).contentName}}.`;return i.useEffect(()=>{const r=e.current?.getAttribute("aria-describedby");t&&r&&(document.getElementById(t)||console.warn(o))},[o,e,t]),null},Xl=Eo,Gl=To,ql=Po,Zl=Ao,Ql=Oo,Jl=No,eu=Do,tu=Lo;const la=["top","right","bottom","left"],ve=Math.min,G=Math.max,dt=Math.round,rt=Math.floor,ae=e=>({x:e,y:e}),ua={left:"right",right:"left",bottom:"top",top:"bottom"},da={start:"end",end:"start"};function zt(e,t,n){return G(e,ve(t,n))}function fe(e,t){return typeof e=="function"?e(t):e}function pe(e){return e.split("-")[0]}function We(e){return e.split("-")[1]}function fn(e){return e==="x"?"y":"x"}function pn(e){return e==="y"?"height":"width"}const fa=new Set(["top","bottom"]);function ie(e){return fa.has(pe(e))?"y":"x"}function mn(e){return fn(ie(e))}function pa(e,t,n){n===void 0&&(n=!1);const o=We(e),r=mn(e),s=pn(r);let a=r==="x"?o===(n?"end":"start")?"right":"left":o==="start"?"bottom":"top";return t.reference[s]>t.floating[s]&&(a=ft(a)),[a,ft(a)]}function ma(e){const t=ft(e);return[Yt(e),t,Yt(t)]}function Yt(e){return e.replace(/start|end/g,t=>da[t])}const Vn=["left","right"],Hn=["right","left"],ha=["top","bottom"],va=["bottom","top"];function ga(e,t,n){switch(e){case"top":case"bottom":return n?t?Hn:Vn:t?Vn:Hn;case"left":case"right":return t?ha:va;default:return[]}}function ya(e,t,n,o){const r=We(e);let s=ga(pe(e),n==="start",o);return r&&(s=s.map(a=>a+"-"+r),t&&(s=s.concat(s.map(Yt)))),s}function ft(e){return e.replace(/left|right|bottom|top/g,t=>ua[t])}function wa(e){return{top:0,right:0,bottom:0,left:0,...e}}function Fo(e){return typeof e!="number"?wa(e):{top:e,right:e,bottom:e,left:e}}function pt(e){const{x:t,y:n,width:o,height:r}=e;return{width:o,height:r,top:n,left:t,right:t+o,bottom:n+r,x:t,y:n}}function Un(e,t,n){let{reference:o,floating:r}=e;const s=ie(t),a=mn(t),c=pn(a),l=pe(t),u=s==="y",f=o.x+o.width/2-r.width/2,p=o.y+o.height/2-r.height/2,y=o[c]/2-r[c]/2;let h;switch(l){case"top":h={x:f,y:o.y-r.height};break;case"bottom":h={x:f,y:o.y+o.height};break;case"right":h={x:o.x+o.width,y:p};break;case"left":h={x:o.x-r.width,y:p};break;default:h={x:o.x,y:o.y}}switch(We(t)){case"start":h[a]-=y*(n&&u?-1:1);break;case"end":h[a]+=y*(n&&u?-1:1);break}return h}const xa=async(e,t,n)=>{const{placement:o="bottom",strategy:r="absolute",middleware:s=[],platform:a}=n,c=s.filter(Boolean),l=await(a.isRTL==null?void 0:a.isRTL(t));let u=await a.getElementRects({reference:e,floating:t,strategy:r}),{x:f,y:p}=Un(u,o,l),y=o,h={},x=0;for(let d=0;d({name:"arrow",options:e,async fn(t){const{x:n,y:o,placement:r,rects:s,platform:a,elements:c,middlewareData:l}=t,{element:u,padding:f=0}=fe(e,t)||{};if(u==null)return{};const p=Fo(f),y={x:n,y:o},h=mn(r),x=pn(h),d=await a.getDimensions(u),m=h==="y",w=m?"top":"left",g=m?"bottom":"right",C=m?"clientHeight":"clientWidth",b=s.reference[x]+s.reference[h]-y[h]-s.floating[x],E=y[h]-s.reference[h],R=await(a.getOffsetParent==null?void 0:a.getOffsetParent(u));let S=R?R[C]:0;(!S||!await(a.isElement==null?void 0:a.isElement(R)))&&(S=c.floating[C]||s.floating[x]);const O=b/2-E/2,M=S/2-d[x]/2-1,L=ve(p[w],M),k=ve(p[g],M),$=L,F=S-d[x]-k,T=S/2-d[x]/2+O,j=zt($,T,F),I=!l.arrow&&We(r)!=null&&T!==j&&s.reference[x]/2-(T<$?L:k)-d[x]/2<0,_=I?T<$?T-$:T-F:0;return{[h]:y[h]+_,data:{[h]:j,centerOffset:T-j-_,...I&&{alignmentOffset:_}},reset:I}}}),ba=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n,o;const{placement:r,middlewareData:s,rects:a,initialPlacement:c,platform:l,elements:u}=t,{mainAxis:f=!0,crossAxis:p=!0,fallbackPlacements:y,fallbackStrategy:h="bestFit",fallbackAxisSideDirection:x="none",flipAlignment:d=!0,...m}=fe(e,t);if((n=s.arrow)!=null&&n.alignmentOffset)return{};const w=pe(r),g=ie(c),C=pe(c)===c,b=await(l.isRTL==null?void 0:l.isRTL(u.floating)),E=y||(C||!d?[ft(c)]:ma(c)),R=x!=="none";!y&&R&&E.push(...ya(c,d,x,b));const S=[c,...E],O=await Ue(t,m),M=[];let L=((o=s.flip)==null?void 0:o.overflows)||[];if(f&&M.push(O[w]),p){const T=pa(r,a,b);M.push(O[T[0]],O[T[1]])}if(L=[...L,{placement:r,overflows:M}],!M.every(T=>T<=0)){var k,$;const T=(((k=s.flip)==null?void 0:k.index)||0)+1,j=S[T];if(j&&(!(p==="alignment"?g!==ie(j):!1)||L.every(P=>ie(P.placement)===g?P.overflows[0]>0:!0)))return{data:{index:T,overflows:L},reset:{placement:j}};let I=($=L.filter(_=>_.overflows[0]<=0).sort((_,P)=>_.overflows[1]-P.overflows[1])[0])==null?void 0:$.placement;if(!I)switch(h){case"bestFit":{var F;const _=(F=L.filter(P=>{if(R){const W=ie(P.placement);return W===g||W==="y"}return!0}).map(P=>[P.placement,P.overflows.filter(W=>W>0).reduce((W,Y)=>W+Y,0)]).sort((P,W)=>P[1]-W[1])[0])==null?void 0:F[0];_&&(I=_);break}case"initialPlacement":I=c;break}if(r!==I)return{reset:{placement:I}}}return{}}}};function Kn(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function zn(e){return la.some(t=>e[t]>=0)}const Ea=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:o="referenceHidden",...r}=fe(e,t);switch(o){case"referenceHidden":{const s=await Ue(t,{...r,elementContext:"reference"}),a=Kn(s,n.reference);return{data:{referenceHiddenOffsets:a,referenceHidden:zn(a)}}}case"escaped":{const s=await Ue(t,{...r,altBoundary:!0}),a=Kn(s,n.floating);return{data:{escapedOffsets:a,escaped:zn(a)}}}default:return{}}}}},$o=new Set(["left","top"]);async function Sa(e,t){const{placement:n,platform:o,elements:r}=e,s=await(o.isRTL==null?void 0:o.isRTL(r.floating)),a=pe(n),c=We(n),l=ie(n)==="y",u=$o.has(a)?-1:1,f=s&&l?-1:1,p=fe(t,e);let{mainAxis:y,crossAxis:h,alignmentAxis:x}=typeof p=="number"?{mainAxis:p,crossAxis:0,alignmentAxis:null}:{mainAxis:p.mainAxis||0,crossAxis:p.crossAxis||0,alignmentAxis:p.alignmentAxis};return c&&typeof x=="number"&&(h=c==="end"?x*-1:x),l?{x:h*f,y:y*u}:{x:y*u,y:h*f}}const Ta=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,o;const{x:r,y:s,placement:a,middlewareData:c}=t,l=await Sa(t,e);return a===((n=c.offset)==null?void 0:n.placement)&&(o=c.arrow)!=null&&o.alignmentOffset?{}:{x:r+l.x,y:s+l.y,data:{...l,placement:a}}}}},Ra=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:o,placement:r}=t,{mainAxis:s=!0,crossAxis:a=!1,limiter:c={fn:m=>{let{x:w,y:g}=m;return{x:w,y:g}}},...l}=fe(e,t),u={x:n,y:o},f=await Ue(t,l),p=ie(pe(r)),y=fn(p);let h=u[y],x=u[p];if(s){const m=y==="y"?"top":"left",w=y==="y"?"bottom":"right",g=h+f[m],C=h-f[w];h=zt(g,h,C)}if(a){const m=p==="y"?"top":"left",w=p==="y"?"bottom":"right",g=x+f[m],C=x-f[w];x=zt(g,x,C)}const d=c.fn({...t,[y]:h,[p]:x});return{...d,data:{x:d.x-n,y:d.y-o,enabled:{[y]:s,[p]:a}}}}}},Pa=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:o,placement:r,rects:s,middlewareData:a}=t,{offset:c=0,mainAxis:l=!0,crossAxis:u=!0}=fe(e,t),f={x:n,y:o},p=ie(r),y=fn(p);let h=f[y],x=f[p];const d=fe(c,t),m=typeof d=="number"?{mainAxis:d,crossAxis:0}:{mainAxis:0,crossAxis:0,...d};if(l){const C=y==="y"?"height":"width",b=s.reference[y]-s.floating[C]+m.mainAxis,E=s.reference[y]+s.reference[C]-m.mainAxis;hE&&(h=E)}if(u){var w,g;const C=y==="y"?"width":"height",b=$o.has(pe(r)),E=s.reference[p]-s.floating[C]+(b&&((w=a.offset)==null?void 0:w[p])||0)+(b?0:m.crossAxis),R=s.reference[p]+s.reference[C]+(b?0:((g=a.offset)==null?void 0:g[p])||0)-(b?m.crossAxis:0);xR&&(x=R)}return{[y]:h,[p]:x}}}},Aa=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var n,o;const{placement:r,rects:s,platform:a,elements:c}=t,{apply:l=()=>{},...u}=fe(e,t),f=await Ue(t,u),p=pe(r),y=We(r),h=ie(r)==="y",{width:x,height:d}=s.floating;let m,w;p==="top"||p==="bottom"?(m=p,w=y===(await(a.isRTL==null?void 0:a.isRTL(c.floating))?"start":"end")?"left":"right"):(w=p,m=y==="end"?"top":"bottom");const g=d-f.top-f.bottom,C=x-f.left-f.right,b=ve(d-f[m],g),E=ve(x-f[w],C),R=!t.middlewareData.shift;let S=b,O=E;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(O=C),(o=t.middlewareData.shift)!=null&&o.enabled.y&&(S=g),R&&!y){const L=G(f.left,0),k=G(f.right,0),$=G(f.top,0),F=G(f.bottom,0);h?O=x-2*(L!==0||k!==0?L+k:G(f.left,f.right)):S=d-2*($!==0||F!==0?$+F:G(f.top,f.bottom))}await l({...t,availableWidth:O,availableHeight:S});const M=await a.getDimensions(c.floating);return x!==M.width||d!==M.height?{reset:{rects:!0}}:{}}}};function yt(){return typeof window<"u"}function Be(e){return Wo(e)?(e.nodeName||"").toLowerCase():"#document"}function q(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function le(e){var t;return(t=(Wo(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function Wo(e){return yt()?e instanceof Node||e instanceof q(e).Node:!1}function te(e){return yt()?e instanceof Element||e instanceof q(e).Element:!1}function ce(e){return yt()?e instanceof HTMLElement||e instanceof q(e).HTMLElement:!1}function Yn(e){return!yt()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof q(e).ShadowRoot}const Oa=new Set(["inline","contents"]);function qe(e){const{overflow:t,overflowX:n,overflowY:o,display:r}=ne(e);return/auto|scroll|overlay|hidden|clip/.test(t+o+n)&&!Oa.has(r)}const Ia=new Set(["table","td","th"]);function Na(e){return Ia.has(Be(e))}const _a=[":popover-open",":modal"];function wt(e){return _a.some(t=>{try{return e.matches(t)}catch{return!1}})}const Da=["transform","translate","scale","rotate","perspective"],Ma=["transform","translate","scale","rotate","perspective","filter"],La=["paint","layout","strict","content"];function hn(e){const t=vn(),n=te(e)?ne(e):e;return Da.some(o=>n[o]?n[o]!=="none":!1)||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||Ma.some(o=>(n.willChange||"").includes(o))||La.some(o=>(n.contain||"").includes(o))}function ka(e){let t=ge(e);for(;ce(t)&&!je(t);){if(hn(t))return t;if(wt(t))return null;t=ge(t)}return null}function vn(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const ja=new Set(["html","body","#document"]);function je(e){return ja.has(Be(e))}function ne(e){return q(e).getComputedStyle(e)}function xt(e){return te(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function ge(e){if(Be(e)==="html")return e;const t=e.assignedSlot||e.parentNode||Yn(e)&&e.host||le(e);return Yn(t)?t.host:t}function Bo(e){const t=ge(e);return je(t)?e.ownerDocument?e.ownerDocument.body:e.body:ce(t)&&qe(t)?t:Bo(t)}function Ke(e,t,n){var o;t===void 0&&(t=[]),n===void 0&&(n=!0);const r=Bo(e),s=r===((o=e.ownerDocument)==null?void 0:o.body),a=q(r);if(s){const c=Xt(a);return t.concat(a,a.visualViewport||[],qe(r)?r:[],c&&n?Ke(c):[])}return t.concat(r,Ke(r,[],n))}function Xt(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Vo(e){const t=ne(e);let n=parseFloat(t.width)||0,o=parseFloat(t.height)||0;const r=ce(e),s=r?e.offsetWidth:n,a=r?e.offsetHeight:o,c=dt(n)!==s||dt(o)!==a;return c&&(n=s,o=a),{width:n,height:o,$:c}}function gn(e){return te(e)?e:e.contextElement}function Le(e){const t=gn(e);if(!ce(t))return ae(1);const n=t.getBoundingClientRect(),{width:o,height:r,$:s}=Vo(t);let a=(s?dt(n.width):n.width)/o,c=(s?dt(n.height):n.height)/r;return(!a||!Number.isFinite(a))&&(a=1),(!c||!Number.isFinite(c))&&(c=1),{x:a,y:c}}const Fa=ae(0);function Ho(e){const t=q(e);return!vn()||!t.visualViewport?Fa:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function $a(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==q(e)?!1:t}function Re(e,t,n,o){t===void 0&&(t=!1),n===void 0&&(n=!1);const r=e.getBoundingClientRect(),s=gn(e);let a=ae(1);t&&(o?te(o)&&(a=Le(o)):a=Le(e));const c=$a(s,n,o)?Ho(s):ae(0);let l=(r.left+c.x)/a.x,u=(r.top+c.y)/a.y,f=r.width/a.x,p=r.height/a.y;if(s){const y=q(s),h=o&&te(o)?q(o):o;let x=y,d=Xt(x);for(;d&&o&&h!==x;){const m=Le(d),w=d.getBoundingClientRect(),g=ne(d),C=w.left+(d.clientLeft+parseFloat(g.paddingLeft))*m.x,b=w.top+(d.clientTop+parseFloat(g.paddingTop))*m.y;l*=m.x,u*=m.y,f*=m.x,p*=m.y,l+=C,u+=b,x=q(d),d=Xt(x)}}return pt({width:f,height:p,x:l,y:u})}function Ct(e,t){const n=xt(e).scrollLeft;return t?t.left+n:Re(le(e)).left+n}function Uo(e,t){const n=e.getBoundingClientRect(),o=n.left+t.scrollLeft-Ct(e,n),r=n.top+t.scrollTop;return{x:o,y:r}}function Wa(e){let{elements:t,rect:n,offsetParent:o,strategy:r}=e;const s=r==="fixed",a=le(o),c=t?wt(t.floating):!1;if(o===a||c&&s)return n;let l={scrollLeft:0,scrollTop:0},u=ae(1);const f=ae(0),p=ce(o);if((p||!p&&!s)&&((Be(o)!=="body"||qe(a))&&(l=xt(o)),ce(o))){const h=Re(o);u=Le(o),f.x=h.x+o.clientLeft,f.y=h.y+o.clientTop}const y=a&&!p&&!s?Uo(a,l):ae(0);return{width:n.width*u.x,height:n.height*u.y,x:n.x*u.x-l.scrollLeft*u.x+f.x+y.x,y:n.y*u.y-l.scrollTop*u.y+f.y+y.y}}function Ba(e){return Array.from(e.getClientRects())}function Va(e){const t=le(e),n=xt(e),o=e.ownerDocument.body,r=G(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),s=G(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight);let a=-n.scrollLeft+Ct(e);const c=-n.scrollTop;return ne(o).direction==="rtl"&&(a+=G(t.clientWidth,o.clientWidth)-r),{width:r,height:s,x:a,y:c}}const Xn=25;function Ha(e,t){const n=q(e),o=le(e),r=n.visualViewport;let s=o.clientWidth,a=o.clientHeight,c=0,l=0;if(r){s=r.width,a=r.height;const f=vn();(!f||f&&t==="fixed")&&(c=r.offsetLeft,l=r.offsetTop)}const u=Ct(o);if(u<=0){const f=o.ownerDocument,p=f.body,y=getComputedStyle(p),h=f.compatMode==="CSS1Compat"&&parseFloat(y.marginLeft)+parseFloat(y.marginRight)||0,x=Math.abs(o.clientWidth-p.clientWidth-h);x<=Xn&&(s-=x)}else u<=Xn&&(s+=u);return{width:s,height:a,x:c,y:l}}const Ua=new Set(["absolute","fixed"]);function Ka(e,t){const n=Re(e,!0,t==="fixed"),o=n.top+e.clientTop,r=n.left+e.clientLeft,s=ce(e)?Le(e):ae(1),a=e.clientWidth*s.x,c=e.clientHeight*s.y,l=r*s.x,u=o*s.y;return{width:a,height:c,x:l,y:u}}function Gn(e,t,n){let o;if(t==="viewport")o=Ha(e,n);else if(t==="document")o=Va(le(e));else if(te(t))o=Ka(t,n);else{const r=Ho(e);o={x:t.x-r.x,y:t.y-r.y,width:t.width,height:t.height}}return pt(o)}function Ko(e,t){const n=ge(e);return n===t||!te(n)||je(n)?!1:ne(n).position==="fixed"||Ko(n,t)}function za(e,t){const n=t.get(e);if(n)return n;let o=Ke(e,[],!1).filter(c=>te(c)&&Be(c)!=="body"),r=null;const s=ne(e).position==="fixed";let a=s?ge(e):e;for(;te(a)&&!je(a);){const c=ne(a),l=hn(a);!l&&c.position==="fixed"&&(r=null),(s?!l&&!r:!l&&c.position==="static"&&!!r&&Ua.has(r.position)||qe(a)&&!l&&Ko(e,a))?o=o.filter(f=>f!==a):r=c,a=ge(a)}return t.set(e,o),o}function Ya(e){let{element:t,boundary:n,rootBoundary:o,strategy:r}=e;const a=[...n==="clippingAncestors"?wt(t)?[]:za(t,this._c):[].concat(n),o],c=a[0],l=a.reduce((u,f)=>{const p=Gn(t,f,r);return u.top=G(p.top,u.top),u.right=ve(p.right,u.right),u.bottom=ve(p.bottom,u.bottom),u.left=G(p.left,u.left),u},Gn(t,c,r));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function Xa(e){const{width:t,height:n}=Vo(e);return{width:t,height:n}}function Ga(e,t,n){const o=ce(t),r=le(t),s=n==="fixed",a=Re(e,!0,s,t);let c={scrollLeft:0,scrollTop:0};const l=ae(0);function u(){l.x=Ct(r)}if(o||!o&&!s)if((Be(t)!=="body"||qe(r))&&(c=xt(t)),o){const h=Re(t,!0,s,t);l.x=h.x+t.clientLeft,l.y=h.y+t.clientTop}else r&&u();s&&!o&&r&&u();const f=r&&!o&&!s?Uo(r,c):ae(0),p=a.left+c.scrollLeft-l.x-f.x,y=a.top+c.scrollTop-l.y-f.y;return{x:p,y,width:a.width,height:a.height}}function Bt(e){return ne(e).position==="static"}function qn(e,t){if(!ce(e)||ne(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return le(e)===n&&(n=n.ownerDocument.body),n}function zo(e,t){const n=q(e);if(wt(e))return n;if(!ce(e)){let r=ge(e);for(;r&&!je(r);){if(te(r)&&!Bt(r))return r;r=ge(r)}return n}let o=qn(e,t);for(;o&&Na(o)&&Bt(o);)o=qn(o,t);return o&&je(o)&&Bt(o)&&!hn(o)?n:o||ka(e)||n}const qa=async function(e){const t=this.getOffsetParent||zo,n=this.getDimensions,o=await n(e.floating);return{reference:Ga(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:o.width,height:o.height}}};function Za(e){return ne(e).direction==="rtl"}const Qa={convertOffsetParentRelativeRectToViewportRelativeRect:Wa,getDocumentElement:le,getClippingRect:Ya,getOffsetParent:zo,getElementRects:qa,getClientRects:Ba,getDimensions:Xa,getScale:Le,isElement:te,isRTL:Za};function Yo(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Ja(e,t){let n=null,o;const r=le(e);function s(){var c;clearTimeout(o),(c=n)==null||c.disconnect(),n=null}function a(c,l){c===void 0&&(c=!1),l===void 0&&(l=1),s();const u=e.getBoundingClientRect(),{left:f,top:p,width:y,height:h}=u;if(c||t(),!y||!h)return;const x=rt(p),d=rt(r.clientWidth-(f+y)),m=rt(r.clientHeight-(p+h)),w=rt(f),C={rootMargin:-x+"px "+-d+"px "+-m+"px "+-w+"px",threshold:G(0,ve(1,l))||1};let b=!0;function E(R){const S=R[0].intersectionRatio;if(S!==l){if(!b)return a();S?a(!1,S):o=setTimeout(()=>{a(!1,1e-7)},1e3)}S===1&&!Yo(u,e.getBoundingClientRect())&&a(),b=!1}try{n=new IntersectionObserver(E,{...C,root:r.ownerDocument})}catch{n=new IntersectionObserver(E,C)}n.observe(e)}return a(!0),s}function ec(e,t,n,o){o===void 0&&(o={});const{ancestorScroll:r=!0,ancestorResize:s=!0,elementResize:a=typeof ResizeObserver=="function",layoutShift:c=typeof IntersectionObserver=="function",animationFrame:l=!1}=o,u=gn(e),f=r||s?[...u?Ke(u):[],...Ke(t)]:[];f.forEach(w=>{r&&w.addEventListener("scroll",n,{passive:!0}),s&&w.addEventListener("resize",n)});const p=u&&c?Ja(u,n):null;let y=-1,h=null;a&&(h=new ResizeObserver(w=>{let[g]=w;g&&g.target===u&&h&&(h.unobserve(t),cancelAnimationFrame(y),y=requestAnimationFrame(()=>{var C;(C=h)==null||C.observe(t)})),n()}),u&&!l&&h.observe(u),h.observe(t));let x,d=l?Re(e):null;l&&m();function m(){const w=Re(e);d&&!Yo(d,w)&&n(),d=w,x=requestAnimationFrame(m)}return n(),()=>{var w;f.forEach(g=>{r&&g.removeEventListener("scroll",n),s&&g.removeEventListener("resize",n)}),p?.(),(w=h)==null||w.disconnect(),h=null,l&&cancelAnimationFrame(x)}}const tc=Ta,nc=Ra,oc=ba,rc=Aa,sc=Ea,Zn=Ca,ic=Pa,ac=(e,t,n)=>{const o=new Map,r={platform:Qa,...n},s={...r.platform,_c:o};return xa(e,t,{...r,platform:s})};var cc=typeof document<"u",lc=function(){},ct=cc?i.useLayoutEffect:lc;function mt(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,o,r;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(o=n;o--!==0;)if(!mt(e[o],t[o]))return!1;return!0}if(r=Object.keys(e),n=r.length,n!==Object.keys(t).length)return!1;for(o=n;o--!==0;)if(!{}.hasOwnProperty.call(t,r[o]))return!1;for(o=n;o--!==0;){const s=r[o];if(!(s==="_owner"&&e.$$typeof)&&!mt(e[s],t[s]))return!1}return!0}return e!==e&&t!==t}function Xo(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Qn(e,t){const n=Xo(e);return Math.round(t*n)/n}function Vt(e){const t=i.useRef(e);return ct(()=>{t.current=e}),t}function uc(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:o=[],platform:r,elements:{reference:s,floating:a}={},transform:c=!0,whileElementsMounted:l,open:u}=e,[f,p]=i.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[y,h]=i.useState(o);mt(y,o)||h(o);const[x,d]=i.useState(null),[m,w]=i.useState(null),g=i.useCallback(P=>{P!==R.current&&(R.current=P,d(P))},[]),C=i.useCallback(P=>{P!==S.current&&(S.current=P,w(P))},[]),b=s||x,E=a||m,R=i.useRef(null),S=i.useRef(null),O=i.useRef(f),M=l!=null,L=Vt(l),k=Vt(r),$=Vt(u),F=i.useCallback(()=>{if(!R.current||!S.current)return;const P={placement:t,strategy:n,middleware:y};k.current&&(P.platform=k.current),ac(R.current,S.current,P).then(W=>{const Y={...W,isPositioned:$.current!==!1};T.current&&!mt(O.current,Y)&&(O.current=Y,Ye.flushSync(()=>{p(Y)}))})},[y,t,n,k,$]);ct(()=>{u===!1&&O.current.isPositioned&&(O.current.isPositioned=!1,p(P=>({...P,isPositioned:!1})))},[u]);const T=i.useRef(!1);ct(()=>(T.current=!0,()=>{T.current=!1}),[]),ct(()=>{if(b&&(R.current=b),E&&(S.current=E),b&&E){if(L.current)return L.current(b,E,F);F()}},[b,E,F,L,M]);const j=i.useMemo(()=>({reference:R,floating:S,setReference:g,setFloating:C}),[g,C]),I=i.useMemo(()=>({reference:b,floating:E}),[b,E]),_=i.useMemo(()=>{const P={position:n,left:0,top:0};if(!I.floating)return P;const W=Qn(I.floating,f.x),Y=Qn(I.floating,f.y);return c?{...P,transform:"translate("+W+"px, "+Y+"px)",...Xo(I.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:W,top:Y}},[n,c,I.floating,f.x,f.y]);return i.useMemo(()=>({...f,update:F,refs:j,elements:I,floatingStyles:_}),[f,F,j,I,_])}const dc=e=>{function t(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:o,padding:r}=typeof e=="function"?e(n):e;return o&&t(o)?o.current!=null?Zn({element:o.current,padding:r}).fn(n):{}:o?Zn({element:o,padding:r}).fn(n):{}}}},fc=(e,t)=>({...tc(e),options:[e,t]}),pc=(e,t)=>({...nc(e),options:[e,t]}),mc=(e,t)=>({...ic(e),options:[e,t]}),hc=(e,t)=>({...oc(e),options:[e,t]}),vc=(e,t)=>({...rc(e),options:[e,t]}),gc=(e,t)=>({...sc(e),options:[e,t]}),yc=(e,t)=>({...dc(e),options:[e,t]});var wc="Arrow",Go=i.forwardRef((e,t)=>{const{children:n,width:o=10,height:r=5,...s}=e;return v.jsx(D.svg,{...s,ref:t,width:o,height:r,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:v.jsx("polygon",{points:"0,0 30,0 15,10"})})});Go.displayName=wc;var xc=Go,yn="Popper",[qo,bt]=Oe(yn),[Cc,Zo]=qo(yn),Qo=e=>{const{__scopePopper:t,children:n}=e,[o,r]=i.useState(null);return v.jsx(Cc,{scope:t,anchor:o,onAnchorChange:r,children:n})};Qo.displayName=yn;var Jo="PopperAnchor",er=i.forwardRef((e,t)=>{const{__scopePopper:n,virtualRef:o,...r}=e,s=Zo(Jo,n),a=i.useRef(null),c=B(t,a),l=i.useRef(null);return i.useEffect(()=>{const u=l.current;l.current=o?.current||a.current,u!==l.current&&s.onAnchorChange(l.current)}),o?null:v.jsx(D.div,{...r,ref:c})});er.displayName=Jo;var wn="PopperContent",[bc,Ec]=qo(wn),tr=i.forwardRef((e,t)=>{const{__scopePopper:n,side:o="bottom",sideOffset:r=0,align:s="center",alignOffset:a=0,arrowPadding:c=0,avoidCollisions:l=!0,collisionBoundary:u=[],collisionPadding:f=0,sticky:p="partial",hideWhenDetached:y=!1,updatePositionStrategy:h="optimized",onPlaced:x,...d}=e,m=Zo(wn,n),[w,g]=i.useState(null),C=B(t,A=>g(A)),[b,E]=i.useState(null),R=so(b),S=R?.width??0,O=R?.height??0,M=o+(s!=="center"?"-"+s:""),L=typeof f=="number"?f:{top:0,right:0,bottom:0,left:0,...f},k=Array.isArray(u)?u:[u],$=k.length>0,F={padding:L,boundary:k.filter(Tc),altBoundary:$},{refs:T,floatingStyles:j,placement:I,isPositioned:_,middlewareData:P}=uc({strategy:"fixed",placement:M,whileElementsMounted:(...A)=>ec(...A,{animationFrame:h==="always"}),elements:{reference:m.anchor},middleware:[fc({mainAxis:r+O,alignmentAxis:a}),l&&pc({mainAxis:!0,crossAxis:!1,limiter:p==="partial"?mc():void 0,...F}),l&&hc({...F}),vc({...F,apply:({elements:A,rects:U,availableWidth:X,availableHeight:V})=>{const{width:H,height:K}=U.reference,Z=A.floating.style;Z.setProperty("--radix-popper-available-width",`${X}px`),Z.setProperty("--radix-popper-available-height",`${V}px`),Z.setProperty("--radix-popper-anchor-width",`${H}px`),Z.setProperty("--radix-popper-anchor-height",`${K}px`)}}),b&&yc({element:b,padding:c}),Rc({arrowWidth:S,arrowHeight:O}),y&&gc({strategy:"referenceHidden",...F})]}),[W,Y]=rr(I),ue=ee(x);z(()=>{_&&ue?.()},[_,ue]);const de=P.arrow?.x,re=P.arrow?.y,Q=P.arrow?.centerOffset!==0,[Ie,Ce]=i.useState();return z(()=>{w&&Ce(window.getComputedStyle(w).zIndex)},[w]),v.jsx("div",{ref:T.setFloating,"data-radix-popper-content-wrapper":"",style:{...j,transform:_?j.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Ie,"--radix-popper-transform-origin":[P.transformOrigin?.x,P.transformOrigin?.y].join(" "),...P.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:v.jsx(bc,{scope:n,placedSide:W,onArrowChange:E,arrowX:de,arrowY:re,shouldHideArrow:Q,children:v.jsx(D.div,{"data-side":W,"data-align":Y,...d,ref:C,style:{...d.style,animation:_?void 0:"none"}})})})});tr.displayName=wn;var nr="PopperArrow",Sc={top:"bottom",right:"left",bottom:"top",left:"right"},or=i.forwardRef(function(t,n){const{__scopePopper:o,...r}=t,s=Ec(nr,o),a=Sc[s.placedSide];return v.jsx("span",{ref:s.onArrowChange,style:{position:"absolute",left:s.arrowX,top:s.arrowY,[a]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[s.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[s.placedSide],visibility:s.shouldHideArrow?"hidden":void 0},children:v.jsx(xc,{...r,ref:n,style:{...r.style,display:"block"}})})});or.displayName=nr;function Tc(e){return e!==null}var Rc=e=>({name:"transformOrigin",options:e,fn(t){const{placement:n,rects:o,middlewareData:r}=t,a=r.arrow?.centerOffset!==0,c=a?0:e.arrowWidth,l=a?0:e.arrowHeight,[u,f]=rr(n),p={start:"0%",center:"50%",end:"100%"}[f],y=(r.arrow?.x??0)+c/2,h=(r.arrow?.y??0)+l/2;let x="",d="";return u==="bottom"?(x=a?p:`${y}px`,d=`${-l}px`):u==="top"?(x=a?p:`${y}px`,d=`${o.floating.height+l}px`):u==="right"?(x=`${-l}px`,d=a?p:`${h}px`):u==="left"&&(x=`${o.floating.width+l}px`,d=a?p:`${h}px`),{data:{x,y:d}}}});function rr(e){const[t,n="center"]=e.split("-");return[t,n]}var sr=Qo,ir=er,ar=tr,cr=or;function Pc(e){const t=Ac(e),n=i.forwardRef((o,r)=>{const{children:s,...a}=o,c=i.Children.toArray(s),l=c.find(Ic);if(l){const u=l.props.children,f=c.map(p=>p===l?i.Children.count(u)>1?i.Children.only(null):i.isValidElement(u)?u.props.children:null:p);return v.jsx(t,{...a,ref:r,children:i.isValidElement(u)?i.cloneElement(u,void 0,f):null})}return v.jsx(t,{...a,ref:r,children:s})});return n.displayName=`${e}.Slot`,n}function Ac(e){const t=i.forwardRef((n,o)=>{const{children:r,...s}=n;if(i.isValidElement(r)){const a=_c(r),c=Nc(s,r.props);return r.type!==i.Fragment&&(c.ref=o?$e(o,a):a),i.cloneElement(r,c)}return i.Children.count(r)>1?i.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Oc=Symbol("radix.slottable");function Ic(e){return i.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Oc}function Nc(e,t){const n={...t};for(const o in t){const r=e[o],s=t[o];/^on[A-Z]/.test(o)?r&&s?n[o]=(...c)=>{const l=s(...c);return r(...c),l}:r&&(n[o]=r):o==="style"?n[o]={...r,...s}:o==="className"&&(n[o]=[r,s].filter(Boolean).join(" "))}return{...e,...n}}function _c(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var lr=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),Dc="VisuallyHidden",Et=i.forwardRef((e,t)=>v.jsx(D.span,{...e,ref:t,style:{...lr,...e.style}}));Et.displayName=Dc;var Mc=Et,Lc=[" ","Enter","ArrowUp","ArrowDown"],kc=[" ","Enter"],Pe="Select",[St,Tt,jc]=eo(Pe),[Ve]=Oe(Pe,[jc,bt]),Rt=bt(),[Fc,we]=Ve(Pe),[$c,Wc]=Ve(Pe),ur=e=>{const{__scopeSelect:t,children:n,open:o,defaultOpen:r,onOpenChange:s,value:a,defaultValue:c,onValueChange:l,dir:u,name:f,autoComplete:p,disabled:y,required:h,form:x}=e,d=Rt(t),[m,w]=i.useState(null),[g,C]=i.useState(null),[b,E]=i.useState(!1),R=_s(u),[S,O]=ke({prop:o,defaultProp:r??!1,onChange:s,caller:Pe}),[M,L]=ke({prop:a,defaultProp:c,onChange:l,caller:Pe}),k=i.useRef(null),$=m?x||!!m.closest("form"):!0,[F,T]=i.useState(new Set),j=Array.from(F).map(I=>I.props.value).join(";");return v.jsx(sr,{...d,children:v.jsxs(Fc,{required:h,scope:t,trigger:m,onTriggerChange:w,valueNode:g,onValueNodeChange:C,valueNodeHasChildren:b,onValueNodeHasChildrenChange:E,contentId:Se(),value:M,onValueChange:L,open:S,onOpenChange:O,dir:R,triggerPointerDownPosRef:k,disabled:y,children:[v.jsx(St.Provider,{scope:t,children:v.jsx($c,{scope:e.__scopeSelect,onNativeOptionAdd:i.useCallback(I=>{T(_=>new Set(_).add(I))},[]),onNativeOptionRemove:i.useCallback(I=>{T(_=>{const P=new Set(_);return P.delete(I),P})},[]),children:n})}),$?v.jsxs(Mr,{"aria-hidden":!0,required:h,tabIndex:-1,name:f,autoComplete:p,value:M,onChange:I=>L(I.target.value),disabled:y,form:x,children:[M===void 0?v.jsx("option",{value:""}):null,Array.from(F)]},j):null]})})};ur.displayName=Pe;var dr="SelectTrigger",fr=i.forwardRef((e,t)=>{const{__scopeSelect:n,disabled:o=!1,...r}=e,s=Rt(n),a=we(dr,n),c=a.disabled||o,l=B(t,a.onTriggerChange),u=Tt(n),f=i.useRef("touch"),[p,y,h]=kr(d=>{const m=u().filter(C=>!C.disabled),w=m.find(C=>C.value===a.value),g=jr(m,d,w);g!==void 0&&a.onValueChange(g.value)}),x=d=>{c||(a.onOpenChange(!0),h()),d&&(a.triggerPointerDownPosRef.current={x:Math.round(d.pageX),y:Math.round(d.pageY)})};return v.jsx(ir,{asChild:!0,...s,children:v.jsx(D.button,{type:"button",role:"combobox","aria-controls":a.contentId,"aria-expanded":a.open,"aria-required":a.required,"aria-autocomplete":"none",dir:a.dir,"data-state":a.open?"open":"closed",disabled:c,"data-disabled":c?"":void 0,"data-placeholder":Lr(a.value)?"":void 0,...r,ref:l,onClick:N(r.onClick,d=>{d.currentTarget.focus(),f.current!=="mouse"&&x(d)}),onPointerDown:N(r.onPointerDown,d=>{f.current=d.pointerType;const m=d.target;m.hasPointerCapture(d.pointerId)&&m.releasePointerCapture(d.pointerId),d.button===0&&d.ctrlKey===!1&&d.pointerType==="mouse"&&(x(d),d.preventDefault())}),onKeyDown:N(r.onKeyDown,d=>{const m=p.current!=="";!(d.ctrlKey||d.altKey||d.metaKey)&&d.key.length===1&&y(d.key),!(m&&d.key===" ")&&Lc.includes(d.key)&&(x(),d.preventDefault())})})})});fr.displayName=dr;var pr="SelectValue",mr=i.forwardRef((e,t)=>{const{__scopeSelect:n,className:o,style:r,children:s,placeholder:a="",...c}=e,l=we(pr,n),{onValueNodeHasChildrenChange:u}=l,f=s!==void 0,p=B(t,l.onValueNodeChange);return z(()=>{u(f)},[u,f]),v.jsx(D.span,{...c,ref:p,style:{pointerEvents:"none"},children:Lr(l.value)?v.jsx(v.Fragment,{children:a}):s})});mr.displayName=pr;var Bc="SelectIcon",hr=i.forwardRef((e,t)=>{const{__scopeSelect:n,children:o,...r}=e;return v.jsx(D.span,{"aria-hidden":!0,...r,ref:t,children:o||"▼"})});hr.displayName=Bc;var Vc="SelectPortal",vr=e=>v.jsx(Ge,{asChild:!0,...e});vr.displayName=Vc;var Ae="SelectContent",gr=i.forwardRef((e,t)=>{const n=we(Ae,e.__scopeSelect),[o,r]=i.useState();if(z(()=>{r(new DocumentFragment)},[]),!n.open){const s=o;return s?Ye.createPortal(v.jsx(yr,{scope:e.__scopeSelect,children:v.jsx(St.Slot,{scope:e.__scopeSelect,children:v.jsx("div",{children:e.children})})}),s):null}return v.jsx(wr,{...e,ref:t})});gr.displayName=Ae;var J=10,[yr,xe]=Ve(Ae),Hc="SelectContentImpl",Uc=Pc("SelectContent.RemoveScroll"),wr=i.forwardRef((e,t)=>{const{__scopeSelect:n,position:o="item-aligned",onCloseAutoFocus:r,onEscapeKeyDown:s,onPointerDownOutside:a,side:c,sideOffset:l,align:u,alignOffset:f,arrowPadding:p,collisionBoundary:y,collisionPadding:h,sticky:x,hideWhenDetached:d,avoidCollisions:m,...w}=e,g=we(Ae,n),[C,b]=i.useState(null),[E,R]=i.useState(null),S=B(t,A=>b(A)),[O,M]=i.useState(null),[L,k]=i.useState(null),$=Tt(n),[F,T]=i.useState(!1),j=i.useRef(!1);i.useEffect(()=>{if(C)return Co(C)},[C]),fo();const I=i.useCallback(A=>{const[U,...X]=$().map(K=>K.ref.current),[V]=X.slice(-1),H=document.activeElement;for(const K of A)if(K===H||(K?.scrollIntoView({block:"nearest"}),K===U&&E&&(E.scrollTop=0),K===V&&E&&(E.scrollTop=E.scrollHeight),K?.focus(),document.activeElement!==H))return},[$,E]),_=i.useCallback(()=>I([O,C]),[I,O,C]);i.useEffect(()=>{F&&_()},[F,_]);const{onOpenChange:P,triggerPointerDownPosRef:W}=g;i.useEffect(()=>{if(C){let A={x:0,y:0};const U=V=>{A={x:Math.abs(Math.round(V.pageX)-(W.current?.x??0)),y:Math.abs(Math.round(V.pageY)-(W.current?.y??0))}},X=V=>{A.x<=10&&A.y<=10?V.preventDefault():C.contains(V.target)||P(!1),document.removeEventListener("pointermove",U),W.current=null};return W.current!==null&&(document.addEventListener("pointermove",U),document.addEventListener("pointerup",X,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",U),document.removeEventListener("pointerup",X,{capture:!0})}}},[C,P,W]),i.useEffect(()=>{const A=()=>P(!1);return window.addEventListener("blur",A),window.addEventListener("resize",A),()=>{window.removeEventListener("blur",A),window.removeEventListener("resize",A)}},[P]);const[Y,ue]=kr(A=>{const U=$().filter(H=>!H.disabled),X=U.find(H=>H.ref.current===document.activeElement),V=jr(U,A,X);V&&setTimeout(()=>V.ref.current.focus())}),de=i.useCallback((A,U,X)=>{const V=!j.current&&!X;(g.value!==void 0&&g.value===U||V)&&(M(A),V&&(j.current=!0))},[g.value]),re=i.useCallback(()=>C?.focus(),[C]),Q=i.useCallback((A,U,X)=>{const V=!j.current&&!X;(g.value!==void 0&&g.value===U||V)&&k(A)},[g.value]),Ie=o==="popper"?Gt:xr,Ce=Ie===Gt?{side:c,sideOffset:l,align:u,alignOffset:f,arrowPadding:p,collisionBoundary:y,collisionPadding:h,sticky:x,hideWhenDetached:d,avoidCollisions:m}:{};return v.jsx(yr,{scope:n,content:C,viewport:E,onViewportChange:R,itemRefCallback:de,selectedItem:O,onItemLeave:re,itemTextRefCallback:Q,focusSelectedItem:_,selectedItemText:L,position:o,isPositioned:F,searchRef:Y,children:v.jsx(cn,{as:Uc,allowPinchZoom:!0,children:v.jsx(an,{asChild:!0,trapped:g.open,onMountAutoFocus:A=>{A.preventDefault()},onUnmountAutoFocus:N(r,A=>{g.trigger?.focus({preventScroll:!0}),A.preventDefault()}),children:v.jsx(Xe,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:s,onPointerDownOutside:a,onFocusOutside:A=>A.preventDefault(),onDismiss:()=>g.onOpenChange(!1),children:v.jsx(Ie,{role:"listbox",id:g.contentId,"data-state":g.open?"open":"closed",dir:g.dir,onContextMenu:A=>A.preventDefault(),...w,...Ce,onPlaced:()=>T(!0),ref:S,style:{display:"flex",flexDirection:"column",outline:"none",...w.style},onKeyDown:N(w.onKeyDown,A=>{const U=A.ctrlKey||A.altKey||A.metaKey;if(A.key==="Tab"&&A.preventDefault(),!U&&A.key.length===1&&ue(A.key),["ArrowUp","ArrowDown","Home","End"].includes(A.key)){let V=$().filter(H=>!H.disabled).map(H=>H.ref.current);if(["ArrowUp","End"].includes(A.key)&&(V=V.slice().reverse()),["ArrowUp","ArrowDown"].includes(A.key)){const H=A.target,K=V.indexOf(H);V=V.slice(K+1)}setTimeout(()=>I(V)),A.preventDefault()}})})})})})})});wr.displayName=Hc;var Kc="SelectItemAlignedPosition",xr=i.forwardRef((e,t)=>{const{__scopeSelect:n,onPlaced:o,...r}=e,s=we(Ae,n),a=xe(Ae,n),[c,l]=i.useState(null),[u,f]=i.useState(null),p=B(t,S=>f(S)),y=Tt(n),h=i.useRef(!1),x=i.useRef(!0),{viewport:d,selectedItem:m,selectedItemText:w,focusSelectedItem:g}=a,C=i.useCallback(()=>{if(s.trigger&&s.valueNode&&c&&u&&d&&m&&w){const S=s.trigger.getBoundingClientRect(),O=u.getBoundingClientRect(),M=s.valueNode.getBoundingClientRect(),L=w.getBoundingClientRect();if(s.dir!=="rtl"){const H=L.left-O.left,K=M.left-H,Z=S.left-K,be=S.width+Z,Nt=Math.max(be,O.width),_t=window.innerWidth-J,Dt=On(K,[J,Math.max(J,_t-Nt)]);c.style.minWidth=be+"px",c.style.left=Dt+"px"}else{const H=O.right-L.right,K=window.innerWidth-M.right-H,Z=window.innerWidth-S.right-K,be=S.width+Z,Nt=Math.max(be,O.width),_t=window.innerWidth-J,Dt=On(K,[J,Math.max(J,_t-Nt)]);c.style.minWidth=be+"px",c.style.right=Dt+"px"}const k=y(),$=window.innerHeight-J*2,F=d.scrollHeight,T=window.getComputedStyle(u),j=parseInt(T.borderTopWidth,10),I=parseInt(T.paddingTop,10),_=parseInt(T.borderBottomWidth,10),P=parseInt(T.paddingBottom,10),W=j+I+F+P+_,Y=Math.min(m.offsetHeight*5,W),ue=window.getComputedStyle(d),de=parseInt(ue.paddingTop,10),re=parseInt(ue.paddingBottom,10),Q=S.top+S.height/2-J,Ie=$-Q,Ce=m.offsetHeight/2,A=m.offsetTop+Ce,U=j+I+A,X=W-U;if(U<=Q){const H=k.length>0&&m===k[k.length-1].ref.current;c.style.bottom="0px";const K=u.clientHeight-d.offsetTop-d.offsetHeight,Z=Math.max(Ie,Ce+(H?re:0)+K+_),be=U+Z;c.style.height=be+"px"}else{const H=k.length>0&&m===k[0].ref.current;c.style.top="0px";const Z=Math.max(Q,j+d.offsetTop+(H?de:0)+Ce)+X;c.style.height=Z+"px",d.scrollTop=U-Q+d.offsetTop}c.style.margin=`${J}px 0`,c.style.minHeight=Y+"px",c.style.maxHeight=$+"px",o?.(),requestAnimationFrame(()=>h.current=!0)}},[y,s.trigger,s.valueNode,c,u,d,m,w,s.dir,o]);z(()=>C(),[C]);const[b,E]=i.useState();z(()=>{u&&E(window.getComputedStyle(u).zIndex)},[u]);const R=i.useCallback(S=>{S&&x.current===!0&&(C(),g?.(),x.current=!1)},[C,g]);return v.jsx(Yc,{scope:n,contentWrapper:c,shouldExpandOnScrollRef:h,onScrollButtonChange:R,children:v.jsx("div",{ref:l,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:b},children:v.jsx(D.div,{...r,ref:p,style:{boxSizing:"border-box",maxHeight:"100%",...r.style}})})})});xr.displayName=Kc;var zc="SelectPopperPosition",Gt=i.forwardRef((e,t)=>{const{__scopeSelect:n,align:o="start",collisionPadding:r=J,...s}=e,a=Rt(n);return v.jsx(ar,{...a,...s,ref:t,align:o,collisionPadding:r,style:{boxSizing:"border-box",...s.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});Gt.displayName=zc;var[Yc,xn]=Ve(Ae,{}),qt="SelectViewport",Cr=i.forwardRef((e,t)=>{const{__scopeSelect:n,nonce:o,...r}=e,s=xe(qt,n),a=xn(qt,n),c=B(t,s.onViewportChange),l=i.useRef(0);return v.jsxs(v.Fragment,{children:[v.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:o}),v.jsx(St.Slot,{scope:n,children:v.jsx(D.div,{"data-radix-select-viewport":"",role:"presentation",...r,ref:c,style:{position:"relative",flex:1,overflow:"hidden auto",...r.style},onScroll:N(r.onScroll,u=>{const f=u.currentTarget,{contentWrapper:p,shouldExpandOnScrollRef:y}=a;if(y?.current&&p){const h=Math.abs(l.current-f.scrollTop);if(h>0){const x=window.innerHeight-J*2,d=parseFloat(p.style.minHeight),m=parseFloat(p.style.height),w=Math.max(d,m);if(w0?b:0,p.style.justifyContent="flex-end")}}}l.current=f.scrollTop})})})]})});Cr.displayName=qt;var br="SelectGroup",[Xc,Gc]=Ve(br),qc=i.forwardRef((e,t)=>{const{__scopeSelect:n,...o}=e,r=Se();return v.jsx(Xc,{scope:n,id:r,children:v.jsx(D.div,{role:"group","aria-labelledby":r,...o,ref:t})})});qc.displayName=br;var Er="SelectLabel",Sr=i.forwardRef((e,t)=>{const{__scopeSelect:n,...o}=e,r=Gc(Er,n);return v.jsx(D.div,{id:r.id,...o,ref:t})});Sr.displayName=Er;var ht="SelectItem",[Zc,Tr]=Ve(ht),Rr=i.forwardRef((e,t)=>{const{__scopeSelect:n,value:o,disabled:r=!1,textValue:s,...a}=e,c=we(ht,n),l=xe(ht,n),u=c.value===o,[f,p]=i.useState(s??""),[y,h]=i.useState(!1),x=B(t,g=>l.itemRefCallback?.(g,o,r)),d=Se(),m=i.useRef("touch"),w=()=>{r||(c.onValueChange(o),c.onOpenChange(!1))};if(o==="")throw new Error("A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return v.jsx(Zc,{scope:n,value:o,disabled:r,textId:d,isSelected:u,onItemTextChange:i.useCallback(g=>{p(C=>C||(g?.textContent??"").trim())},[]),children:v.jsx(St.ItemSlot,{scope:n,value:o,disabled:r,textValue:f,children:v.jsx(D.div,{role:"option","aria-labelledby":d,"data-highlighted":y?"":void 0,"aria-selected":u&&y,"data-state":u?"checked":"unchecked","aria-disabled":r||void 0,"data-disabled":r?"":void 0,tabIndex:r?void 0:-1,...a,ref:x,onFocus:N(a.onFocus,()=>h(!0)),onBlur:N(a.onBlur,()=>h(!1)),onClick:N(a.onClick,()=>{m.current!=="mouse"&&w()}),onPointerUp:N(a.onPointerUp,()=>{m.current==="mouse"&&w()}),onPointerDown:N(a.onPointerDown,g=>{m.current=g.pointerType}),onPointerMove:N(a.onPointerMove,g=>{m.current=g.pointerType,r?l.onItemLeave?.():m.current==="mouse"&&g.currentTarget.focus({preventScroll:!0})}),onPointerLeave:N(a.onPointerLeave,g=>{g.currentTarget===document.activeElement&&l.onItemLeave?.()}),onKeyDown:N(a.onKeyDown,g=>{l.searchRef?.current!==""&&g.key===" "||(kc.includes(g.key)&&w(),g.key===" "&&g.preventDefault())})})})})});Rr.displayName=ht;var He="SelectItemText",Pr=i.forwardRef((e,t)=>{const{__scopeSelect:n,className:o,style:r,...s}=e,a=we(He,n),c=xe(He,n),l=Tr(He,n),u=Wc(He,n),[f,p]=i.useState(null),y=B(t,w=>p(w),l.onItemTextChange,w=>c.itemTextRefCallback?.(w,l.value,l.disabled)),h=f?.textContent,x=i.useMemo(()=>v.jsx("option",{value:l.value,disabled:l.disabled,children:h},l.value),[l.disabled,l.value,h]),{onNativeOptionAdd:d,onNativeOptionRemove:m}=u;return z(()=>(d(x),()=>m(x)),[d,m,x]),v.jsxs(v.Fragment,{children:[v.jsx(D.span,{id:l.textId,...s,ref:y}),l.isSelected&&a.valueNode&&!a.valueNodeHasChildren?Ye.createPortal(s.children,a.valueNode):null]})});Pr.displayName=He;var Ar="SelectItemIndicator",Or=i.forwardRef((e,t)=>{const{__scopeSelect:n,...o}=e;return Tr(Ar,n).isSelected?v.jsx(D.span,{"aria-hidden":!0,...o,ref:t}):null});Or.displayName=Ar;var Zt="SelectScrollUpButton",Ir=i.forwardRef((e,t)=>{const n=xe(Zt,e.__scopeSelect),o=xn(Zt,e.__scopeSelect),[r,s]=i.useState(!1),a=B(t,o.onScrollButtonChange);return z(()=>{if(n.viewport&&n.isPositioned){let c=function(){const u=l.scrollTop>0;s(u)};const l=n.viewport;return c(),l.addEventListener("scroll",c),()=>l.removeEventListener("scroll",c)}},[n.viewport,n.isPositioned]),r?v.jsx(_r,{...e,ref:a,onAutoScroll:()=>{const{viewport:c,selectedItem:l}=n;c&&l&&(c.scrollTop=c.scrollTop-l.offsetHeight)}}):null});Ir.displayName=Zt;var Qt="SelectScrollDownButton",Nr=i.forwardRef((e,t)=>{const n=xe(Qt,e.__scopeSelect),o=xn(Qt,e.__scopeSelect),[r,s]=i.useState(!1),a=B(t,o.onScrollButtonChange);return z(()=>{if(n.viewport&&n.isPositioned){let c=function(){const u=l.scrollHeight-l.clientHeight,f=Math.ceil(l.scrollTop)l.removeEventListener("scroll",c)}},[n.viewport,n.isPositioned]),r?v.jsx(_r,{...e,ref:a,onAutoScroll:()=>{const{viewport:c,selectedItem:l}=n;c&&l&&(c.scrollTop=c.scrollTop+l.offsetHeight)}}):null});Nr.displayName=Qt;var _r=i.forwardRef((e,t)=>{const{__scopeSelect:n,onAutoScroll:o,...r}=e,s=xe("SelectScrollButton",n),a=i.useRef(null),c=Tt(n),l=i.useCallback(()=>{a.current!==null&&(window.clearInterval(a.current),a.current=null)},[]);return i.useEffect(()=>()=>l(),[l]),z(()=>{c().find(f=>f.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:"nearest"})},[c]),v.jsx(D.div,{"aria-hidden":!0,...r,ref:t,style:{flexShrink:0,...r.style},onPointerDown:N(r.onPointerDown,()=>{a.current===null&&(a.current=window.setInterval(o,50))}),onPointerMove:N(r.onPointerMove,()=>{s.onItemLeave?.(),a.current===null&&(a.current=window.setInterval(o,50))}),onPointerLeave:N(r.onPointerLeave,()=>{l()})})}),Qc="SelectSeparator",Dr=i.forwardRef((e,t)=>{const{__scopeSelect:n,...o}=e;return v.jsx(D.div,{"aria-hidden":!0,...o,ref:t})});Dr.displayName=Qc;var Jt="SelectArrow",Jc=i.forwardRef((e,t)=>{const{__scopeSelect:n,...o}=e,r=Rt(n),s=we(Jt,n),a=xe(Jt,n);return s.open&&a.position==="popper"?v.jsx(cr,{...r,...o,ref:t}):null});Jc.displayName=Jt;var el="SelectBubbleInput",Mr=i.forwardRef(({__scopeSelect:e,value:t,...n},o)=>{const r=i.useRef(null),s=B(o,r),a=ro(t);return i.useEffect(()=>{const c=r.current;if(!c)return;const l=window.HTMLSelectElement.prototype,f=Object.getOwnPropertyDescriptor(l,"value").set;if(a!==t&&f){const p=new Event("change",{bubbles:!0});f.call(c,t),c.dispatchEvent(p)}},[a,t]),v.jsx(D.select,{...n,style:{...lr,...n.style},ref:s,defaultValue:t})});Mr.displayName=el;function Lr(e){return e===""||e===void 0}function kr(e){const t=ee(e),n=i.useRef(""),o=i.useRef(0),r=i.useCallback(a=>{const c=n.current+a;t(c),(function l(u){n.current=u,window.clearTimeout(o.current),u!==""&&(o.current=window.setTimeout(()=>l(""),1e3))})(c)},[t]),s=i.useCallback(()=>{n.current="",window.clearTimeout(o.current)},[]);return i.useEffect(()=>()=>window.clearTimeout(o.current),[]),[n,r,s]}function jr(e,t,n){const r=t.length>1&&Array.from(t).every(u=>u===t[0])?t[0]:t,s=n?e.indexOf(n):-1;let a=tl(e,Math.max(s,0));r.length===1&&(a=a.filter(u=>u!==n));const l=a.find(u=>u.textValue.toLowerCase().startsWith(r.toLowerCase()));return l!==n?l:void 0}function tl(e,t){return e.map((n,o)=>e[(t+o)%e.length])}var nu=ur,ou=fr,ru=mr,su=hr,iu=vr,au=gr,cu=Cr,lu=Sr,uu=Rr,du=Pr,fu=Or,pu=Ir,mu=Nr,hu=Dr,Pt="Checkbox",[nl]=Oe(Pt),[ol,Cn]=nl(Pt);function rl(e){const{__scopeCheckbox:t,checked:n,children:o,defaultChecked:r,disabled:s,form:a,name:c,onCheckedChange:l,required:u,value:f="on",internal_do_not_use_render:p}=e,[y,h]=ke({prop:n,defaultProp:r??!1,onChange:l,caller:Pt}),[x,d]=i.useState(null),[m,w]=i.useState(null),g=i.useRef(!1),C=x?!!a||!!x.closest("form"):!0,b={checked:y,disabled:s,setChecked:h,control:x,setControl:d,name:c,form:a,value:f,hasConsumerStoppedPropagationRef:g,required:u,defaultChecked:he(r)?!1:r,isFormControl:C,bubbleInput:m,setBubbleInput:w};return v.jsx(ol,{scope:t,...b,children:al(p)?p(b):o})}var Fr="CheckboxTrigger",$r=i.forwardRef(({__scopeCheckbox:e,onKeyDown:t,onClick:n,...o},r)=>{const{control:s,value:a,disabled:c,checked:l,required:u,setControl:f,setChecked:p,hasConsumerStoppedPropagationRef:y,isFormControl:h,bubbleInput:x}=Cn(Fr,e),d=B(r,f),m=i.useRef(l);return i.useEffect(()=>{const w=s?.form;if(w){const g=()=>p(m.current);return w.addEventListener("reset",g),()=>w.removeEventListener("reset",g)}},[s,p]),v.jsx(D.button,{type:"button",role:"checkbox","aria-checked":he(l)?"mixed":l,"aria-required":u,"data-state":Hr(l),"data-disabled":c?"":void 0,disabled:c,value:a,...o,ref:d,onKeyDown:N(t,w=>{w.key==="Enter"&&w.preventDefault()}),onClick:N(n,w=>{p(g=>he(g)?!0:!g),x&&h&&(y.current=w.isPropagationStopped(),y.current||w.stopPropagation())})})});$r.displayName=Fr;var sl=i.forwardRef((e,t)=>{const{__scopeCheckbox:n,name:o,checked:r,defaultChecked:s,required:a,disabled:c,value:l,onCheckedChange:u,form:f,...p}=e;return v.jsx(rl,{__scopeCheckbox:n,checked:r,defaultChecked:s,disabled:c,required:a,onCheckedChange:u,name:o,form:f,value:l,internal_do_not_use_render:({isFormControl:y})=>v.jsxs(v.Fragment,{children:[v.jsx($r,{...p,ref:t,__scopeCheckbox:n}),y&&v.jsx(Vr,{__scopeCheckbox:n})]})})});sl.displayName=Pt;var Wr="CheckboxIndicator",il=i.forwardRef((e,t)=>{const{__scopeCheckbox:n,forceMount:o,...r}=e,s=Cn(Wr,n);return v.jsx(ye,{present:o||he(s.checked)||s.checked===!0,children:v.jsx(D.span,{"data-state":Hr(s.checked),"data-disabled":s.disabled?"":void 0,...r,ref:t,style:{pointerEvents:"none",...e.style}})})});il.displayName=Wr;var Br="CheckboxBubbleInput",Vr=i.forwardRef(({__scopeCheckbox:e,...t},n)=>{const{control:o,hasConsumerStoppedPropagationRef:r,checked:s,defaultChecked:a,required:c,disabled:l,name:u,value:f,form:p,bubbleInput:y,setBubbleInput:h}=Cn(Br,e),x=B(n,h),d=ro(s),m=so(o);i.useEffect(()=>{const g=y;if(!g)return;const C=window.HTMLInputElement.prototype,E=Object.getOwnPropertyDescriptor(C,"checked").set,R=!r.current;if(d!==s&&E){const S=new Event("click",{bubbles:R});g.indeterminate=he(s),E.call(g,he(s)?!1:s),g.dispatchEvent(S)}},[y,d,s,r]);const w=i.useRef(he(s)?!1:s);return v.jsx(D.input,{type:"checkbox","aria-hidden":!0,defaultChecked:a??w.current,required:c,disabled:l,name:u,value:f,form:p,...t,tabIndex:-1,ref:x,style:{...t.style,...m,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});Vr.displayName=Br;function al(e){return typeof e=="function"}function he(e){return e==="indeterminate"}function Hr(e){return he(e)?"indeterminate":e?"checked":"unchecked"}var cl=Symbol("radix.slottable");function ll(e){const t=({children:n})=>v.jsx(v.Fragment,{children:n});return t.displayName=`${e}.Slottable`,t.__radixId=cl,t}var[At]=Oe("Tooltip",[bt]),Ot=bt(),Ur="TooltipProvider",ul=700,en="tooltip.open",[dl,bn]=At(Ur),Kr=e=>{const{__scopeTooltip:t,delayDuration:n=ul,skipDelayDuration:o=300,disableHoverableContent:r=!1,children:s}=e,a=i.useRef(!0),c=i.useRef(!1),l=i.useRef(0);return i.useEffect(()=>{const u=l.current;return()=>window.clearTimeout(u)},[]),v.jsx(dl,{scope:t,isOpenDelayedRef:a,delayDuration:n,onOpen:i.useCallback(()=>{window.clearTimeout(l.current),a.current=!1},[]),onClose:i.useCallback(()=>{window.clearTimeout(l.current),l.current=window.setTimeout(()=>a.current=!0,o)},[o]),isPointerInTransitRef:c,onPointerInTransitChange:i.useCallback(u=>{c.current=u},[]),disableHoverableContent:r,children:s})};Kr.displayName=Ur;var ze="Tooltip",[fl,Ze]=At(ze),zr=e=>{const{__scopeTooltip:t,children:n,open:o,defaultOpen:r,onOpenChange:s,disableHoverableContent:a,delayDuration:c}=e,l=bn(ze,e.__scopeTooltip),u=Ot(t),[f,p]=i.useState(null),y=Se(),h=i.useRef(0),x=a??l.disableHoverableContent,d=c??l.delayDuration,m=i.useRef(!1),[w,g]=ke({prop:o,defaultProp:r??!1,onChange:S=>{S?(l.onOpen(),document.dispatchEvent(new CustomEvent(en))):l.onClose(),s?.(S)},caller:ze}),C=i.useMemo(()=>w?m.current?"delayed-open":"instant-open":"closed",[w]),b=i.useCallback(()=>{window.clearTimeout(h.current),h.current=0,m.current=!1,g(!0)},[g]),E=i.useCallback(()=>{window.clearTimeout(h.current),h.current=0,g(!1)},[g]),R=i.useCallback(()=>{window.clearTimeout(h.current),h.current=window.setTimeout(()=>{m.current=!0,g(!0),h.current=0},d)},[d,g]);return i.useEffect(()=>()=>{h.current&&(window.clearTimeout(h.current),h.current=0)},[]),v.jsx(sr,{...u,children:v.jsx(fl,{scope:t,contentId:y,open:w,stateAttribute:C,trigger:f,onTriggerChange:p,onTriggerEnter:i.useCallback(()=>{l.isOpenDelayedRef.current?R():b()},[l.isOpenDelayedRef,R,b]),onTriggerLeave:i.useCallback(()=>{x?E():(window.clearTimeout(h.current),h.current=0)},[E,x]),onOpen:b,onClose:E,disableHoverableContent:x,children:n})})};zr.displayName=ze;var tn="TooltipTrigger",Yr=i.forwardRef((e,t)=>{const{__scopeTooltip:n,...o}=e,r=Ze(tn,n),s=bn(tn,n),a=Ot(n),c=i.useRef(null),l=B(t,c,r.onTriggerChange),u=i.useRef(!1),f=i.useRef(!1),p=i.useCallback(()=>u.current=!1,[]);return i.useEffect(()=>()=>document.removeEventListener("pointerup",p),[p]),v.jsx(ir,{asChild:!0,...a,children:v.jsx(D.button,{"aria-describedby":r.open?r.contentId:void 0,"data-state":r.stateAttribute,...o,ref:l,onPointerMove:N(e.onPointerMove,y=>{y.pointerType!=="touch"&&!f.current&&!s.isPointerInTransitRef.current&&(r.onTriggerEnter(),f.current=!0)}),onPointerLeave:N(e.onPointerLeave,()=>{r.onTriggerLeave(),f.current=!1}),onPointerDown:N(e.onPointerDown,()=>{r.open&&r.onClose(),u.current=!0,document.addEventListener("pointerup",p,{once:!0})}),onFocus:N(e.onFocus,()=>{u.current||r.onOpen()}),onBlur:N(e.onBlur,r.onClose),onClick:N(e.onClick,r.onClose)})})});Yr.displayName=tn;var En="TooltipPortal",[pl,ml]=At(En,{forceMount:void 0}),Xr=e=>{const{__scopeTooltip:t,forceMount:n,children:o,container:r}=e,s=Ze(En,t);return v.jsx(pl,{scope:t,forceMount:n,children:v.jsx(ye,{present:n||s.open,children:v.jsx(Ge,{asChild:!0,container:r,children:o})})})};Xr.displayName=En;var Fe="TooltipContent",Gr=i.forwardRef((e,t)=>{const n=ml(Fe,e.__scopeTooltip),{forceMount:o=n.forceMount,side:r="top",...s}=e,a=Ze(Fe,e.__scopeTooltip);return v.jsx(ye,{present:o||a.open,children:a.disableHoverableContent?v.jsx(qr,{side:r,...s,ref:t}):v.jsx(hl,{side:r,...s,ref:t})})}),hl=i.forwardRef((e,t)=>{const n=Ze(Fe,e.__scopeTooltip),o=bn(Fe,e.__scopeTooltip),r=i.useRef(null),s=B(t,r),[a,c]=i.useState(null),{trigger:l,onClose:u}=n,f=r.current,{onPointerInTransitChange:p}=o,y=i.useCallback(()=>{c(null),p(!1)},[p]),h=i.useCallback((x,d)=>{const m=x.currentTarget,w={x:x.clientX,y:x.clientY},g=xl(w,m.getBoundingClientRect()),C=Cl(w,g),b=bl(d.getBoundingClientRect()),E=Sl([...C,...b]);c(E),p(!0)},[p]);return i.useEffect(()=>()=>y(),[y]),i.useEffect(()=>{if(l&&f){const x=m=>h(m,f),d=m=>h(m,l);return l.addEventListener("pointerleave",x),f.addEventListener("pointerleave",d),()=>{l.removeEventListener("pointerleave",x),f.removeEventListener("pointerleave",d)}}},[l,f,h,y]),i.useEffect(()=>{if(a){const x=d=>{const m=d.target,w={x:d.clientX,y:d.clientY},g=l?.contains(m)||f?.contains(m),C=!El(w,a);g?y():C&&(y(),u())};return document.addEventListener("pointermove",x),()=>document.removeEventListener("pointermove",x)}},[l,f,a,u,y]),v.jsx(qr,{...e,ref:s})}),[vl,gl]=At(ze,{isInside:!1}),yl=ll("TooltipContent"),qr=i.forwardRef((e,t)=>{const{__scopeTooltip:n,children:o,"aria-label":r,onEscapeKeyDown:s,onPointerDownOutside:a,...c}=e,l=Ze(Fe,n),u=Ot(n),{onClose:f}=l;return i.useEffect(()=>(document.addEventListener(en,f),()=>document.removeEventListener(en,f)),[f]),i.useEffect(()=>{if(l.trigger){const p=y=>{y.target?.contains(l.trigger)&&f()};return window.addEventListener("scroll",p,{capture:!0}),()=>window.removeEventListener("scroll",p,{capture:!0})}},[l.trigger,f]),v.jsx(Xe,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:s,onPointerDownOutside:a,onFocusOutside:p=>p.preventDefault(),onDismiss:f,children:v.jsxs(ar,{"data-state":l.stateAttribute,...u,...c,ref:t,style:{...c.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[v.jsx(yl,{children:o}),v.jsx(vl,{scope:n,isInside:!0,children:v.jsx(Mc,{id:l.contentId,role:"tooltip",children:r||o})})]})})});Gr.displayName=Fe;var Zr="TooltipArrow",wl=i.forwardRef((e,t)=>{const{__scopeTooltip:n,...o}=e,r=Ot(n);return gl(Zr,n).isInside?null:v.jsx(cr,{...r,...o,ref:t})});wl.displayName=Zr;function xl(e,t){const n=Math.abs(t.top-e.y),o=Math.abs(t.bottom-e.y),r=Math.abs(t.right-e.x),s=Math.abs(t.left-e.x);switch(Math.min(n,o,r,s)){case s:return"left";case r:return"right";case n:return"top";case o:return"bottom";default:throw new Error("unreachable")}}function Cl(e,t,n=5){const o=[];switch(t){case"top":o.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":o.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":o.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":o.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return o}function bl(e){const{top:t,right:n,bottom:o,left:r}=e;return[{x:r,y:t},{x:n,y:t},{x:n,y:o},{x:r,y:o}]}function El(e,t){const{x:n,y:o}=e;let r=!1;for(let s=0,a=t.length-1;so!=y>o&&n<(p-u)*(o-f)/(y-f)+u&&(r=!r)}return r}function Sl(e){const t=e.slice();return t.sort((n,o)=>n.xo.x?1:n.yo.y?1:0),Tl(t)}function Tl(e){if(e.length<=1)return e.slice();const t=[];for(let o=0;o=2;){const s=t[t.length-1],a=t[t.length-2];if((s.x-a.x)*(r.y-a.y)>=(s.y-a.y)*(r.x-a.x))t.pop();else break}t.push(r)}t.pop();const n=[];for(let o=e.length-1;o>=0;o--){const r=e[o];for(;n.length>=2;){const s=n[n.length-1],a=n[n.length-2];if((s.x-a.x)*(r.y-a.y)>=(s.y-a.y)*(r.x-a.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var vu=Kr,gu=zr,yu=Yr,wu=Xr,xu=Gr,Sn="ToastProvider",[Tn,Rl,Pl]=eo("Toast"),[Qr]=Oe("Toast",[Pl]),[Al,It]=Qr(Sn),Jr=e=>{const{__scopeToast:t,label:n="Notification",duration:o=5e3,swipeDirection:r="right",swipeThreshold:s=50,children:a}=e,[c,l]=i.useState(null),[u,f]=i.useState(0),p=i.useRef(!1),y=i.useRef(!1);return n.trim()||console.error(`Invalid prop \`label\` supplied to \`${Sn}\`. Expected non-empty \`string\`.`),v.jsx(Tn.Provider,{scope:t,children:v.jsx(Al,{scope:t,label:n,duration:o,swipeDirection:r,swipeThreshold:s,toastCount:u,viewport:c,onViewportChange:l,onToastAdd:i.useCallback(()=>f(h=>h+1),[]),onToastRemove:i.useCallback(()=>f(h=>h-1),[]),isFocusedToastEscapeKeyDownRef:p,isClosePausedRef:y,children:a})})};Jr.displayName=Sn;var es="ToastViewport",Ol=["F8"],nn="toast.viewportPause",on="toast.viewportResume",ts=i.forwardRef((e,t)=>{const{__scopeToast:n,hotkey:o=Ol,label:r="Notifications ({hotkey})",...s}=e,a=It(es,n),c=Rl(n),l=i.useRef(null),u=i.useRef(null),f=i.useRef(null),p=i.useRef(null),y=B(t,p,a.onViewportChange),h=o.join("+").replace(/Key/g,"").replace(/Digit/g,""),x=a.toastCount>0;i.useEffect(()=>{const m=w=>{o.length!==0&&o.every(C=>w[C]||w.code===C)&&p.current?.focus()};return document.addEventListener("keydown",m),()=>document.removeEventListener("keydown",m)},[o]),i.useEffect(()=>{const m=l.current,w=p.current;if(x&&m&&w){const g=()=>{if(!a.isClosePausedRef.current){const R=new CustomEvent(nn);w.dispatchEvent(R),a.isClosePausedRef.current=!0}},C=()=>{if(a.isClosePausedRef.current){const R=new CustomEvent(on);w.dispatchEvent(R),a.isClosePausedRef.current=!1}},b=R=>{!m.contains(R.relatedTarget)&&C()},E=()=>{m.contains(document.activeElement)||C()};return m.addEventListener("focusin",g),m.addEventListener("focusout",b),m.addEventListener("pointermove",g),m.addEventListener("pointerleave",E),window.addEventListener("blur",g),window.addEventListener("focus",C),()=>{m.removeEventListener("focusin",g),m.removeEventListener("focusout",b),m.removeEventListener("pointermove",g),m.removeEventListener("pointerleave",E),window.removeEventListener("blur",g),window.removeEventListener("focus",C)}}},[x,a.isClosePausedRef]);const d=i.useCallback(({tabbingDirection:m})=>{const g=c().map(C=>{const b=C.ref.current,E=[b,...Vl(b)];return m==="forwards"?E:E.reverse()});return(m==="forwards"?g.reverse():g).flat()},[c]);return i.useEffect(()=>{const m=p.current;if(m){const w=g=>{const C=g.altKey||g.ctrlKey||g.metaKey;if(g.key==="Tab"&&!C){const E=document.activeElement,R=g.shiftKey;if(g.target===m&&R){u.current?.focus();return}const M=d({tabbingDirection:R?"backwards":"forwards"}),L=M.findIndex(k=>k===E);Ht(M.slice(L+1))?g.preventDefault():R?u.current?.focus():f.current?.focus()}};return m.addEventListener("keydown",w),()=>m.removeEventListener("keydown",w)}},[c,d]),v.jsxs(ei,{ref:l,role:"region","aria-label":r.replace("{hotkey}",h),tabIndex:-1,style:{pointerEvents:x?void 0:"none"},children:[x&&v.jsx(rn,{ref:u,onFocusFromOutsideViewport:()=>{const m=d({tabbingDirection:"forwards"});Ht(m)}}),v.jsx(Tn.Slot,{scope:n,children:v.jsx(D.ol,{tabIndex:-1,...s,ref:y})}),x&&v.jsx(rn,{ref:f,onFocusFromOutsideViewport:()=>{const m=d({tabbingDirection:"backwards"});Ht(m)}})]})});ts.displayName=es;var ns="ToastFocusProxy",rn=i.forwardRef((e,t)=>{const{__scopeToast:n,onFocusFromOutsideViewport:o,...r}=e,s=It(ns,n);return v.jsx(Et,{tabIndex:0,...r,ref:t,style:{position:"fixed"},onFocus:a=>{const c=a.relatedTarget;!s.viewport?.contains(c)&&o()}})});rn.displayName=ns;var Qe="Toast",Il="toast.swipeStart",Nl="toast.swipeMove",_l="toast.swipeCancel",Dl="toast.swipeEnd",os=i.forwardRef((e,t)=>{const{forceMount:n,open:o,defaultOpen:r,onOpenChange:s,...a}=e,[c,l]=ke({prop:o,defaultProp:r??!0,onChange:s,caller:Qe});return v.jsx(ye,{present:n||c,children:v.jsx(kl,{open:c,...a,ref:t,onClose:()=>l(!1),onPause:ee(e.onPause),onResume:ee(e.onResume),onSwipeStart:N(e.onSwipeStart,u=>{u.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:N(e.onSwipeMove,u=>{const{x:f,y:p}=u.detail.delta;u.currentTarget.setAttribute("data-swipe","move"),u.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${f}px`),u.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${p}px`)}),onSwipeCancel:N(e.onSwipeCancel,u=>{u.currentTarget.setAttribute("data-swipe","cancel"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),u.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:N(e.onSwipeEnd,u=>{const{x:f,y:p}=u.detail.delta;u.currentTarget.setAttribute("data-swipe","end"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),u.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${f}px`),u.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${p}px`),l(!1)})})})});os.displayName=Qe;var[Ml,Ll]=Qr(Qe,{onClose(){}}),kl=i.forwardRef((e,t)=>{const{__scopeToast:n,type:o="foreground",duration:r,open:s,onClose:a,onEscapeKeyDown:c,onPause:l,onResume:u,onSwipeStart:f,onSwipeMove:p,onSwipeCancel:y,onSwipeEnd:h,...x}=e,d=It(Qe,n),[m,w]=i.useState(null),g=B(t,T=>w(T)),C=i.useRef(null),b=i.useRef(null),E=r||d.duration,R=i.useRef(0),S=i.useRef(E),O=i.useRef(0),{onToastAdd:M,onToastRemove:L}=d,k=ee(()=>{m?.contains(document.activeElement)&&d.viewport?.focus(),a()}),$=i.useCallback(T=>{!T||T===1/0||(window.clearTimeout(O.current),R.current=new Date().getTime(),O.current=window.setTimeout(k,T))},[k]);i.useEffect(()=>{const T=d.viewport;if(T){const j=()=>{$(S.current),u?.()},I=()=>{const _=new Date().getTime()-R.current;S.current=S.current-_,window.clearTimeout(O.current),l?.()};return T.addEventListener(nn,I),T.addEventListener(on,j),()=>{T.removeEventListener(nn,I),T.removeEventListener(on,j)}}},[d.viewport,E,l,u,$]),i.useEffect(()=>{s&&!d.isClosePausedRef.current&&$(E)},[s,E,d.isClosePausedRef,$]),i.useEffect(()=>(M(),()=>L()),[M,L]);const F=i.useMemo(()=>m?us(m):null,[m]);return d.viewport?v.jsxs(v.Fragment,{children:[F&&v.jsx(jl,{__scopeToast:n,role:"status","aria-live":o==="foreground"?"assertive":"polite",children:F}),v.jsx(Ml,{scope:n,onClose:k,children:Ye.createPortal(v.jsx(Tn.ItemSlot,{scope:n,children:v.jsx(Js,{asChild:!0,onEscapeKeyDown:N(c,()=>{d.isFocusedToastEscapeKeyDownRef.current||k(),d.isFocusedToastEscapeKeyDownRef.current=!1}),children:v.jsx(D.li,{tabIndex:0,"data-state":s?"open":"closed","data-swipe-direction":d.swipeDirection,...x,ref:g,style:{userSelect:"none",touchAction:"none",...e.style},onKeyDown:N(e.onKeyDown,T=>{T.key==="Escape"&&(c?.(T.nativeEvent),T.nativeEvent.defaultPrevented||(d.isFocusedToastEscapeKeyDownRef.current=!0,k()))}),onPointerDown:N(e.onPointerDown,T=>{T.button===0&&(C.current={x:T.clientX,y:T.clientY})}),onPointerMove:N(e.onPointerMove,T=>{if(!C.current)return;const j=T.clientX-C.current.x,I=T.clientY-C.current.y,_=!!b.current,P=["left","right"].includes(d.swipeDirection),W=["left","up"].includes(d.swipeDirection)?Math.min:Math.max,Y=P?W(0,j):0,ue=P?0:W(0,I),de=T.pointerType==="touch"?10:2,re={x:Y,y:ue},Q={originalEvent:T,delta:re};_?(b.current=re,st(Nl,p,Q,{discrete:!1})):Jn(re,d.swipeDirection,de)?(b.current=re,st(Il,f,Q,{discrete:!1}),T.target.setPointerCapture(T.pointerId)):(Math.abs(j)>de||Math.abs(I)>de)&&(C.current=null)}),onPointerUp:N(e.onPointerUp,T=>{const j=b.current,I=T.target;if(I.hasPointerCapture(T.pointerId)&&I.releasePointerCapture(T.pointerId),b.current=null,C.current=null,j){const _=T.currentTarget,P={originalEvent:T,delta:j};Jn(j,d.swipeDirection,d.swipeThreshold)?st(Dl,h,P,{discrete:!0}):st(_l,y,P,{discrete:!0}),_.addEventListener("click",W=>W.preventDefault(),{once:!0})}})})})}),d.viewport)})]}):null}),jl=e=>{const{__scopeToast:t,children:n,...o}=e,r=It(Qe,t),[s,a]=i.useState(!1),[c,l]=i.useState(!1);return Wl(()=>a(!0)),i.useEffect(()=>{const u=window.setTimeout(()=>l(!0),1e3);return()=>window.clearTimeout(u)},[]),c?null:v.jsx(Ge,{asChild:!0,children:v.jsx(Et,{...o,children:s&&v.jsxs(v.Fragment,{children:[r.label," ",n]})})})},Fl="ToastTitle",rs=i.forwardRef((e,t)=>{const{__scopeToast:n,...o}=e;return v.jsx(D.div,{...o,ref:t})});rs.displayName=Fl;var $l="ToastDescription",ss=i.forwardRef((e,t)=>{const{__scopeToast:n,...o}=e;return v.jsx(D.div,{...o,ref:t})});ss.displayName=$l;var is="ToastAction",as=i.forwardRef((e,t)=>{const{altText:n,...o}=e;return n.trim()?v.jsx(ls,{altText:n,asChild:!0,children:v.jsx(Rn,{...o,ref:t})}):(console.error(`Invalid prop \`altText\` supplied to \`${is}\`. Expected non-empty \`string\`.`),null)});as.displayName=is;var cs="ToastClose",Rn=i.forwardRef((e,t)=>{const{__scopeToast:n,...o}=e,r=Ll(cs,n);return v.jsx(ls,{asChild:!0,children:v.jsx(D.button,{type:"button",...o,ref:t,onClick:N(e.onClick,r.onClose)})})});Rn.displayName=cs;var ls=i.forwardRef((e,t)=>{const{__scopeToast:n,altText:o,...r}=e;return v.jsx(D.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":o||void 0,...r,ref:t})});function us(e){const t=[];return Array.from(e.childNodes).forEach(o=>{if(o.nodeType===o.TEXT_NODE&&o.textContent&&t.push(o.textContent),Bl(o)){const r=o.ariaHidden||o.hidden||o.style.display==="none",s=o.dataset.radixToastAnnounceExclude==="";if(!r)if(s){const a=o.dataset.radixToastAnnounceAlt;a&&t.push(a)}else t.push(...us(o))}}),t}function st(e,t,n,{discrete:o}){const r=n.originalEvent.currentTarget,s=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:n});t&&r.addEventListener(e,t,{once:!0}),o?to(r,s):r.dispatchEvent(s)}var Jn=(e,t,n=0)=>{const o=Math.abs(e.x),r=Math.abs(e.y),s=o>r;return t==="left"||t==="right"?s&&o>n:!s&&r>n};function Wl(e=()=>{}){const t=ee(e);z(()=>{let n=0,o=0;return n=window.requestAnimationFrame(()=>o=window.requestAnimationFrame(t)),()=>{window.cancelAnimationFrame(n),window.cancelAnimationFrame(o)}},[t])}function Bl(e){return e.nodeType===e.ELEMENT_NODE}function Vl(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>{const r=o.tagName==="INPUT"&&o.type==="hidden";return o.disabled||o.hidden||r?NodeFilter.FILTER_SKIP:o.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function Ht(e){const t=document.activeElement;return e.some(n=>n===t?!0:(n.focus(),document.activeElement!==t))}var Cu=Jr,bu=ts,Eu=os,Su=rs,Tu=ss,Ru=as,Pu=Rn;export{ru as $,sr as A,ir as B,Ql as C,eu as D,cr as E,an as F,to as G,Kl as H,ou as I,su as J,pu as K,mu as L,iu as M,au as N,Zl as O,D as P,lu as Q,Xl as R,Ul as S,Jl as T,uu as U,cu as V,Yl as W,fu as X,du as Y,hu as Z,nu as _,eo as a,sl as a0,il as a1,wu as a2,xu as a3,vu as a4,gu as a5,yu as a6,bu as a7,Eu as a8,Ru as a9,Pu as aa,Su as ab,Tu as ac,Cu as ad,N as b,Oe as c,B as d,_s as e,ke as f,ee as g,ye as h,z as i,On as j,oo as k,ro as l,so as m,zl as n,ql as o,tu as p,Gl as q,$e as r,Ge as s,bt as t,Se as u,Co as v,cn as w,fo as x,Xe as y,ar as z}; +For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;return i.useEffect(()=>{e&&(document.getElementById(e)||console.error(n))},[n,e]),null},aa="DialogDescriptionWarning",ca=({contentRef:e,descriptionId:t})=>{const o=`Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${jo(aa).contentName}}.`;return i.useEffect(()=>{const r=e.current?.getAttribute("aria-describedby");t&&r&&(document.getElementById(t)||console.warn(o))},[o,e,t]),null},Xl=Eo,Gl=To,ql=Po,Zl=Ao,Ql=Oo,Jl=No,eu=Do,tu=Lo;const la=["top","right","bottom","left"],ve=Math.min,G=Math.max,dt=Math.round,rt=Math.floor,ae=e=>({x:e,y:e}),ua={left:"right",right:"left",bottom:"top",top:"bottom"},da={start:"end",end:"start"};function zt(e,t,n){return G(e,ve(t,n))}function fe(e,t){return typeof e=="function"?e(t):e}function pe(e){return e.split("-")[0]}function We(e){return e.split("-")[1]}function fn(e){return e==="x"?"y":"x"}function pn(e){return e==="y"?"height":"width"}const fa=new Set(["top","bottom"]);function ie(e){return fa.has(pe(e))?"y":"x"}function mn(e){return fn(ie(e))}function pa(e,t,n){n===void 0&&(n=!1);const o=We(e),r=mn(e),s=pn(r);let a=r==="x"?o===(n?"end":"start")?"right":"left":o==="start"?"bottom":"top";return t.reference[s]>t.floating[s]&&(a=ft(a)),[a,ft(a)]}function ma(e){const t=ft(e);return[Yt(e),t,Yt(t)]}function Yt(e){return e.replace(/start|end/g,t=>da[t])}const Vn=["left","right"],Hn=["right","left"],ha=["top","bottom"],va=["bottom","top"];function ga(e,t,n){switch(e){case"top":case"bottom":return n?t?Hn:Vn:t?Vn:Hn;case"left":case"right":return t?ha:va;default:return[]}}function ya(e,t,n,o){const r=We(e);let s=ga(pe(e),n==="start",o);return r&&(s=s.map(a=>a+"-"+r),t&&(s=s.concat(s.map(Yt)))),s}function ft(e){return e.replace(/left|right|bottom|top/g,t=>ua[t])}function wa(e){return{top:0,right:0,bottom:0,left:0,...e}}function Fo(e){return typeof e!="number"?wa(e):{top:e,right:e,bottom:e,left:e}}function pt(e){const{x:t,y:n,width:o,height:r}=e;return{width:o,height:r,top:n,left:t,right:t+o,bottom:n+r,x:t,y:n}}function Un(e,t,n){let{reference:o,floating:r}=e;const s=ie(t),a=mn(t),c=pn(a),l=pe(t),u=s==="y",f=o.x+o.width/2-r.width/2,p=o.y+o.height/2-r.height/2,y=o[c]/2-r[c]/2;let h;switch(l){case"top":h={x:f,y:o.y-r.height};break;case"bottom":h={x:f,y:o.y+o.height};break;case"right":h={x:o.x+o.width,y:p};break;case"left":h={x:o.x-r.width,y:p};break;default:h={x:o.x,y:o.y}}switch(We(t)){case"start":h[a]-=y*(n&&u?-1:1);break;case"end":h[a]+=y*(n&&u?-1:1);break}return h}const xa=async(e,t,n)=>{const{placement:o="bottom",strategy:r="absolute",middleware:s=[],platform:a}=n,c=s.filter(Boolean),l=await(a.isRTL==null?void 0:a.isRTL(t));let u=await a.getElementRects({reference:e,floating:t,strategy:r}),{x:f,y:p}=Un(u,o,l),y=o,h={},x=0;for(let d=0;d({name:"arrow",options:e,async fn(t){const{x:n,y:o,placement:r,rects:s,platform:a,elements:c,middlewareData:l}=t,{element:u,padding:f=0}=fe(e,t)||{};if(u==null)return{};const p=Fo(f),y={x:n,y:o},h=mn(r),x=pn(h),d=await a.getDimensions(u),m=h==="y",w=m?"top":"left",g=m?"bottom":"right",C=m?"clientHeight":"clientWidth",b=s.reference[x]+s.reference[h]-y[h]-s.floating[x],E=y[h]-s.reference[h],R=await(a.getOffsetParent==null?void 0:a.getOffsetParent(u));let S=R?R[C]:0;(!S||!await(a.isElement==null?void 0:a.isElement(R)))&&(S=c.floating[C]||s.floating[x]);const O=b/2-E/2,M=S/2-d[x]/2-1,L=ve(p[w],M),k=ve(p[g],M),$=L,F=S-d[x]-k,T=S/2-d[x]/2+O,j=zt($,T,F),I=!l.arrow&&We(r)!=null&&T!==j&&s.reference[x]/2-(T<$?L:k)-d[x]/2<0,_=I?T<$?T-$:T-F:0;return{[h]:y[h]+_,data:{[h]:j,centerOffset:T-j-_,...I&&{alignmentOffset:_}},reset:I}}}),ba=function(e){return e===void 0&&(e={}),{name:"flip",options:e,async fn(t){var n,o;const{placement:r,middlewareData:s,rects:a,initialPlacement:c,platform:l,elements:u}=t,{mainAxis:f=!0,crossAxis:p=!0,fallbackPlacements:y,fallbackStrategy:h="bestFit",fallbackAxisSideDirection:x="none",flipAlignment:d=!0,...m}=fe(e,t);if((n=s.arrow)!=null&&n.alignmentOffset)return{};const w=pe(r),g=ie(c),C=pe(c)===c,b=await(l.isRTL==null?void 0:l.isRTL(u.floating)),E=y||(C||!d?[ft(c)]:ma(c)),R=x!=="none";!y&&R&&E.push(...ya(c,d,x,b));const S=[c,...E],O=await Ue(t,m),M=[];let L=((o=s.flip)==null?void 0:o.overflows)||[];if(f&&M.push(O[w]),p){const T=pa(r,a,b);M.push(O[T[0]],O[T[1]])}if(L=[...L,{placement:r,overflows:M}],!M.every(T=>T<=0)){var k,$;const T=(((k=s.flip)==null?void 0:k.index)||0)+1,j=S[T];if(j&&(!(p==="alignment"?g!==ie(j):!1)||L.every(P=>ie(P.placement)===g?P.overflows[0]>0:!0)))return{data:{index:T,overflows:L},reset:{placement:j}};let I=($=L.filter(_=>_.overflows[0]<=0).sort((_,P)=>_.overflows[1]-P.overflows[1])[0])==null?void 0:$.placement;if(!I)switch(h){case"bestFit":{var F;const _=(F=L.filter(P=>{if(R){const W=ie(P.placement);return W===g||W==="y"}return!0}).map(P=>[P.placement,P.overflows.filter(W=>W>0).reduce((W,Y)=>W+Y,0)]).sort((P,W)=>P[1]-W[1])[0])==null?void 0:F[0];_&&(I=_);break}case"initialPlacement":I=c;break}if(r!==I)return{reset:{placement:I}}}return{}}}};function Kn(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function zn(e){return la.some(t=>e[t]>=0)}const Ea=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:o="referenceHidden",...r}=fe(e,t);switch(o){case"referenceHidden":{const s=await Ue(t,{...r,elementContext:"reference"}),a=Kn(s,n.reference);return{data:{referenceHiddenOffsets:a,referenceHidden:zn(a)}}}case"escaped":{const s=await Ue(t,{...r,altBoundary:!0}),a=Kn(s,n.floating);return{data:{escapedOffsets:a,escaped:zn(a)}}}default:return{}}}}},$o=new Set(["left","top"]);async function Sa(e,t){const{placement:n,platform:o,elements:r}=e,s=await(o.isRTL==null?void 0:o.isRTL(r.floating)),a=pe(n),c=We(n),l=ie(n)==="y",u=$o.has(a)?-1:1,f=s&&l?-1:1,p=fe(t,e);let{mainAxis:y,crossAxis:h,alignmentAxis:x}=typeof p=="number"?{mainAxis:p,crossAxis:0,alignmentAxis:null}:{mainAxis:p.mainAxis||0,crossAxis:p.crossAxis||0,alignmentAxis:p.alignmentAxis};return c&&typeof x=="number"&&(h=c==="end"?x*-1:x),l?{x:h*f,y:y*u}:{x:y*u,y:h*f}}const Ta=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,o;const{x:r,y:s,placement:a,middlewareData:c}=t,l=await Sa(t,e);return a===((n=c.offset)==null?void 0:n.placement)&&(o=c.arrow)!=null&&o.alignmentOffset?{}:{x:r+l.x,y:s+l.y,data:{...l,placement:a}}}}},Ra=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:o,placement:r}=t,{mainAxis:s=!0,crossAxis:a=!1,limiter:c={fn:m=>{let{x:w,y:g}=m;return{x:w,y:g}}},...l}=fe(e,t),u={x:n,y:o},f=await Ue(t,l),p=ie(pe(r)),y=fn(p);let h=u[y],x=u[p];if(s){const m=y==="y"?"top":"left",w=y==="y"?"bottom":"right",g=h+f[m],C=h-f[w];h=zt(g,h,C)}if(a){const m=p==="y"?"top":"left",w=p==="y"?"bottom":"right",g=x+f[m],C=x-f[w];x=zt(g,x,C)}const d=c.fn({...t,[y]:h,[p]:x});return{...d,data:{x:d.x-n,y:d.y-o,enabled:{[y]:s,[p]:a}}}}}},Pa=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:o,placement:r,rects:s,middlewareData:a}=t,{offset:c=0,mainAxis:l=!0,crossAxis:u=!0}=fe(e,t),f={x:n,y:o},p=ie(r),y=fn(p);let h=f[y],x=f[p];const d=fe(c,t),m=typeof d=="number"?{mainAxis:d,crossAxis:0}:{mainAxis:0,crossAxis:0,...d};if(l){const C=y==="y"?"height":"width",b=s.reference[y]-s.floating[C]+m.mainAxis,E=s.reference[y]+s.reference[C]-m.mainAxis;hE&&(h=E)}if(u){var w,g;const C=y==="y"?"width":"height",b=$o.has(pe(r)),E=s.reference[p]-s.floating[C]+(b&&((w=a.offset)==null?void 0:w[p])||0)+(b?0:m.crossAxis),R=s.reference[p]+s.reference[C]+(b?0:((g=a.offset)==null?void 0:g[p])||0)-(b?m.crossAxis:0);xR&&(x=R)}return{[y]:h,[p]:x}}}},Aa=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){var n,o;const{placement:r,rects:s,platform:a,elements:c}=t,{apply:l=()=>{},...u}=fe(e,t),f=await Ue(t,u),p=pe(r),y=We(r),h=ie(r)==="y",{width:x,height:d}=s.floating;let m,w;p==="top"||p==="bottom"?(m=p,w=y===(await(a.isRTL==null?void 0:a.isRTL(c.floating))?"start":"end")?"left":"right"):(w=p,m=y==="end"?"top":"bottom");const g=d-f.top-f.bottom,C=x-f.left-f.right,b=ve(d-f[m],g),E=ve(x-f[w],C),R=!t.middlewareData.shift;let S=b,O=E;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(O=C),(o=t.middlewareData.shift)!=null&&o.enabled.y&&(S=g),R&&!y){const L=G(f.left,0),k=G(f.right,0),$=G(f.top,0),F=G(f.bottom,0);h?O=x-2*(L!==0||k!==0?L+k:G(f.left,f.right)):S=d-2*($!==0||F!==0?$+F:G(f.top,f.bottom))}await l({...t,availableWidth:O,availableHeight:S});const M=await a.getDimensions(c.floating);return x!==M.width||d!==M.height?{reset:{rects:!0}}:{}}}};function yt(){return typeof window<"u"}function Be(e){return Wo(e)?(e.nodeName||"").toLowerCase():"#document"}function q(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function le(e){var t;return(t=(Wo(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function Wo(e){return yt()?e instanceof Node||e instanceof q(e).Node:!1}function te(e){return yt()?e instanceof Element||e instanceof q(e).Element:!1}function ce(e){return yt()?e instanceof HTMLElement||e instanceof q(e).HTMLElement:!1}function Yn(e){return!yt()||typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof q(e).ShadowRoot}const Oa=new Set(["inline","contents"]);function qe(e){const{overflow:t,overflowX:n,overflowY:o,display:r}=ne(e);return/auto|scroll|overlay|hidden|clip/.test(t+o+n)&&!Oa.has(r)}const Ia=new Set(["table","td","th"]);function Na(e){return Ia.has(Be(e))}const _a=[":popover-open",":modal"];function wt(e){return _a.some(t=>{try{return e.matches(t)}catch{return!1}})}const Da=["transform","translate","scale","rotate","perspective"],Ma=["transform","translate","scale","rotate","perspective","filter"],La=["paint","layout","strict","content"];function hn(e){const t=vn(),n=te(e)?ne(e):e;return Da.some(o=>n[o]?n[o]!=="none":!1)||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||Ma.some(o=>(n.willChange||"").includes(o))||La.some(o=>(n.contain||"").includes(o))}function ka(e){let t=ge(e);for(;ce(t)&&!je(t);){if(hn(t))return t;if(wt(t))return null;t=ge(t)}return null}function vn(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}const ja=new Set(["html","body","#document"]);function je(e){return ja.has(Be(e))}function ne(e){return q(e).getComputedStyle(e)}function xt(e){return te(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function ge(e){if(Be(e)==="html")return e;const t=e.assignedSlot||e.parentNode||Yn(e)&&e.host||le(e);return Yn(t)?t.host:t}function Bo(e){const t=ge(e);return je(t)?e.ownerDocument?e.ownerDocument.body:e.body:ce(t)&&qe(t)?t:Bo(t)}function Ke(e,t,n){var o;t===void 0&&(t=[]),n===void 0&&(n=!0);const r=Bo(e),s=r===((o=e.ownerDocument)==null?void 0:o.body),a=q(r);if(s){const c=Xt(a);return t.concat(a,a.visualViewport||[],qe(r)?r:[],c&&n?Ke(c):[])}return t.concat(r,Ke(r,[],n))}function Xt(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Vo(e){const t=ne(e);let n=parseFloat(t.width)||0,o=parseFloat(t.height)||0;const r=ce(e),s=r?e.offsetWidth:n,a=r?e.offsetHeight:o,c=dt(n)!==s||dt(o)!==a;return c&&(n=s,o=a),{width:n,height:o,$:c}}function gn(e){return te(e)?e:e.contextElement}function Le(e){const t=gn(e);if(!ce(t))return ae(1);const n=t.getBoundingClientRect(),{width:o,height:r,$:s}=Vo(t);let a=(s?dt(n.width):n.width)/o,c=(s?dt(n.height):n.height)/r;return(!a||!Number.isFinite(a))&&(a=1),(!c||!Number.isFinite(c))&&(c=1),{x:a,y:c}}const Fa=ae(0);function Ho(e){const t=q(e);return!vn()||!t.visualViewport?Fa:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function $a(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==q(e)?!1:t}function Re(e,t,n,o){t===void 0&&(t=!1),n===void 0&&(n=!1);const r=e.getBoundingClientRect(),s=gn(e);let a=ae(1);t&&(o?te(o)&&(a=Le(o)):a=Le(e));const c=$a(s,n,o)?Ho(s):ae(0);let l=(r.left+c.x)/a.x,u=(r.top+c.y)/a.y,f=r.width/a.x,p=r.height/a.y;if(s){const y=q(s),h=o&&te(o)?q(o):o;let x=y,d=Xt(x);for(;d&&o&&h!==x;){const m=Le(d),w=d.getBoundingClientRect(),g=ne(d),C=w.left+(d.clientLeft+parseFloat(g.paddingLeft))*m.x,b=w.top+(d.clientTop+parseFloat(g.paddingTop))*m.y;l*=m.x,u*=m.y,f*=m.x,p*=m.y,l+=C,u+=b,x=q(d),d=Xt(x)}}return pt({width:f,height:p,x:l,y:u})}function Ct(e,t){const n=xt(e).scrollLeft;return t?t.left+n:Re(le(e)).left+n}function Uo(e,t){const n=e.getBoundingClientRect(),o=n.left+t.scrollLeft-Ct(e,n),r=n.top+t.scrollTop;return{x:o,y:r}}function Wa(e){let{elements:t,rect:n,offsetParent:o,strategy:r}=e;const s=r==="fixed",a=le(o),c=t?wt(t.floating):!1;if(o===a||c&&s)return n;let l={scrollLeft:0,scrollTop:0},u=ae(1);const f=ae(0),p=ce(o);if((p||!p&&!s)&&((Be(o)!=="body"||qe(a))&&(l=xt(o)),ce(o))){const h=Re(o);u=Le(o),f.x=h.x+o.clientLeft,f.y=h.y+o.clientTop}const y=a&&!p&&!s?Uo(a,l):ae(0);return{width:n.width*u.x,height:n.height*u.y,x:n.x*u.x-l.scrollLeft*u.x+f.x+y.x,y:n.y*u.y-l.scrollTop*u.y+f.y+y.y}}function Ba(e){return Array.from(e.getClientRects())}function Va(e){const t=le(e),n=xt(e),o=e.ownerDocument.body,r=G(t.scrollWidth,t.clientWidth,o.scrollWidth,o.clientWidth),s=G(t.scrollHeight,t.clientHeight,o.scrollHeight,o.clientHeight);let a=-n.scrollLeft+Ct(e);const c=-n.scrollTop;return ne(o).direction==="rtl"&&(a+=G(t.clientWidth,o.clientWidth)-r),{width:r,height:s,x:a,y:c}}const Xn=25;function Ha(e,t){const n=q(e),o=le(e),r=n.visualViewport;let s=o.clientWidth,a=o.clientHeight,c=0,l=0;if(r){s=r.width,a=r.height;const f=vn();(!f||f&&t==="fixed")&&(c=r.offsetLeft,l=r.offsetTop)}const u=Ct(o);if(u<=0){const f=o.ownerDocument,p=f.body,y=getComputedStyle(p),h=f.compatMode==="CSS1Compat"&&parseFloat(y.marginLeft)+parseFloat(y.marginRight)||0,x=Math.abs(o.clientWidth-p.clientWidth-h);x<=Xn&&(s-=x)}else u<=Xn&&(s+=u);return{width:s,height:a,x:c,y:l}}const Ua=new Set(["absolute","fixed"]);function Ka(e,t){const n=Re(e,!0,t==="fixed"),o=n.top+e.clientTop,r=n.left+e.clientLeft,s=ce(e)?Le(e):ae(1),a=e.clientWidth*s.x,c=e.clientHeight*s.y,l=r*s.x,u=o*s.y;return{width:a,height:c,x:l,y:u}}function Gn(e,t,n){let o;if(t==="viewport")o=Ha(e,n);else if(t==="document")o=Va(le(e));else if(te(t))o=Ka(t,n);else{const r=Ho(e);o={x:t.x-r.x,y:t.y-r.y,width:t.width,height:t.height}}return pt(o)}function Ko(e,t){const n=ge(e);return n===t||!te(n)||je(n)?!1:ne(n).position==="fixed"||Ko(n,t)}function za(e,t){const n=t.get(e);if(n)return n;let o=Ke(e,[],!1).filter(c=>te(c)&&Be(c)!=="body"),r=null;const s=ne(e).position==="fixed";let a=s?ge(e):e;for(;te(a)&&!je(a);){const c=ne(a),l=hn(a);!l&&c.position==="fixed"&&(r=null),(s?!l&&!r:!l&&c.position==="static"&&!!r&&Ua.has(r.position)||qe(a)&&!l&&Ko(e,a))?o=o.filter(f=>f!==a):r=c,a=ge(a)}return t.set(e,o),o}function Ya(e){let{element:t,boundary:n,rootBoundary:o,strategy:r}=e;const a=[...n==="clippingAncestors"?wt(t)?[]:za(t,this._c):[].concat(n),o],c=a[0],l=a.reduce((u,f)=>{const p=Gn(t,f,r);return u.top=G(p.top,u.top),u.right=ve(p.right,u.right),u.bottom=ve(p.bottom,u.bottom),u.left=G(p.left,u.left),u},Gn(t,c,r));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function Xa(e){const{width:t,height:n}=Vo(e);return{width:t,height:n}}function Ga(e,t,n){const o=ce(t),r=le(t),s=n==="fixed",a=Re(e,!0,s,t);let c={scrollLeft:0,scrollTop:0};const l=ae(0);function u(){l.x=Ct(r)}if(o||!o&&!s)if((Be(t)!=="body"||qe(r))&&(c=xt(t)),o){const h=Re(t,!0,s,t);l.x=h.x+t.clientLeft,l.y=h.y+t.clientTop}else r&&u();s&&!o&&r&&u();const f=r&&!o&&!s?Uo(r,c):ae(0),p=a.left+c.scrollLeft-l.x-f.x,y=a.top+c.scrollTop-l.y-f.y;return{x:p,y,width:a.width,height:a.height}}function Bt(e){return ne(e).position==="static"}function qn(e,t){if(!ce(e)||ne(e).position==="fixed")return null;if(t)return t(e);let n=e.offsetParent;return le(e)===n&&(n=n.ownerDocument.body),n}function zo(e,t){const n=q(e);if(wt(e))return n;if(!ce(e)){let r=ge(e);for(;r&&!je(r);){if(te(r)&&!Bt(r))return r;r=ge(r)}return n}let o=qn(e,t);for(;o&&Na(o)&&Bt(o);)o=qn(o,t);return o&&je(o)&&Bt(o)&&!hn(o)?n:o||ka(e)||n}const qa=async function(e){const t=this.getOffsetParent||zo,n=this.getDimensions,o=await n(e.floating);return{reference:Ga(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:o.width,height:o.height}}};function Za(e){return ne(e).direction==="rtl"}const Qa={convertOffsetParentRelativeRectToViewportRelativeRect:Wa,getDocumentElement:le,getClippingRect:Ya,getOffsetParent:zo,getElementRects:qa,getClientRects:Ba,getDimensions:Xa,getScale:Le,isElement:te,isRTL:Za};function Yo(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Ja(e,t){let n=null,o;const r=le(e);function s(){var c;clearTimeout(o),(c=n)==null||c.disconnect(),n=null}function a(c,l){c===void 0&&(c=!1),l===void 0&&(l=1),s();const u=e.getBoundingClientRect(),{left:f,top:p,width:y,height:h}=u;if(c||t(),!y||!h)return;const x=rt(p),d=rt(r.clientWidth-(f+y)),m=rt(r.clientHeight-(p+h)),w=rt(f),C={rootMargin:-x+"px "+-d+"px "+-m+"px "+-w+"px",threshold:G(0,ve(1,l))||1};let b=!0;function E(R){const S=R[0].intersectionRatio;if(S!==l){if(!b)return a();S?a(!1,S):o=setTimeout(()=>{a(!1,1e-7)},1e3)}S===1&&!Yo(u,e.getBoundingClientRect())&&a(),b=!1}try{n=new IntersectionObserver(E,{...C,root:r.ownerDocument})}catch{n=new IntersectionObserver(E,C)}n.observe(e)}return a(!0),s}function ec(e,t,n,o){o===void 0&&(o={});const{ancestorScroll:r=!0,ancestorResize:s=!0,elementResize:a=typeof ResizeObserver=="function",layoutShift:c=typeof IntersectionObserver=="function",animationFrame:l=!1}=o,u=gn(e),f=r||s?[...u?Ke(u):[],...Ke(t)]:[];f.forEach(w=>{r&&w.addEventListener("scroll",n,{passive:!0}),s&&w.addEventListener("resize",n)});const p=u&&c?Ja(u,n):null;let y=-1,h=null;a&&(h=new ResizeObserver(w=>{let[g]=w;g&&g.target===u&&h&&(h.unobserve(t),cancelAnimationFrame(y),y=requestAnimationFrame(()=>{var C;(C=h)==null||C.observe(t)})),n()}),u&&!l&&h.observe(u),h.observe(t));let x,d=l?Re(e):null;l&&m();function m(){const w=Re(e);d&&!Yo(d,w)&&n(),d=w,x=requestAnimationFrame(m)}return n(),()=>{var w;f.forEach(g=>{r&&g.removeEventListener("scroll",n),s&&g.removeEventListener("resize",n)}),p?.(),(w=h)==null||w.disconnect(),h=null,l&&cancelAnimationFrame(x)}}const tc=Ta,nc=Ra,oc=ba,rc=Aa,sc=Ea,Zn=Ca,ic=Pa,ac=(e,t,n)=>{const o=new Map,r={platform:Qa,...n},s={...r.platform,_c:o};return xa(e,t,{...r,platform:s})};var cc=typeof document<"u",lc=function(){},ct=cc?i.useLayoutEffect:lc;function mt(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,o,r;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(o=n;o--!==0;)if(!mt(e[o],t[o]))return!1;return!0}if(r=Object.keys(e),n=r.length,n!==Object.keys(t).length)return!1;for(o=n;o--!==0;)if(!{}.hasOwnProperty.call(t,r[o]))return!1;for(o=n;o--!==0;){const s=r[o];if(!(s==="_owner"&&e.$$typeof)&&!mt(e[s],t[s]))return!1}return!0}return e!==e&&t!==t}function Xo(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Qn(e,t){const n=Xo(e);return Math.round(t*n)/n}function Vt(e){const t=i.useRef(e);return ct(()=>{t.current=e}),t}function uc(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:o=[],platform:r,elements:{reference:s,floating:a}={},transform:c=!0,whileElementsMounted:l,open:u}=e,[f,p]=i.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[y,h]=i.useState(o);mt(y,o)||h(o);const[x,d]=i.useState(null),[m,w]=i.useState(null),g=i.useCallback(P=>{P!==R.current&&(R.current=P,d(P))},[]),C=i.useCallback(P=>{P!==S.current&&(S.current=P,w(P))},[]),b=s||x,E=a||m,R=i.useRef(null),S=i.useRef(null),O=i.useRef(f),M=l!=null,L=Vt(l),k=Vt(r),$=Vt(u),F=i.useCallback(()=>{if(!R.current||!S.current)return;const P={placement:t,strategy:n,middleware:y};k.current&&(P.platform=k.current),ac(R.current,S.current,P).then(W=>{const Y={...W,isPositioned:$.current!==!1};T.current&&!mt(O.current,Y)&&(O.current=Y,Ye.flushSync(()=>{p(Y)}))})},[y,t,n,k,$]);ct(()=>{u===!1&&O.current.isPositioned&&(O.current.isPositioned=!1,p(P=>({...P,isPositioned:!1})))},[u]);const T=i.useRef(!1);ct(()=>(T.current=!0,()=>{T.current=!1}),[]),ct(()=>{if(b&&(R.current=b),E&&(S.current=E),b&&E){if(L.current)return L.current(b,E,F);F()}},[b,E,F,L,M]);const j=i.useMemo(()=>({reference:R,floating:S,setReference:g,setFloating:C}),[g,C]),I=i.useMemo(()=>({reference:b,floating:E}),[b,E]),_=i.useMemo(()=>{const P={position:n,left:0,top:0};if(!I.floating)return P;const W=Qn(I.floating,f.x),Y=Qn(I.floating,f.y);return c?{...P,transform:"translate("+W+"px, "+Y+"px)",...Xo(I.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:W,top:Y}},[n,c,I.floating,f.x,f.y]);return i.useMemo(()=>({...f,update:F,refs:j,elements:I,floatingStyles:_}),[f,F,j,I,_])}const dc=e=>{function t(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:o,padding:r}=typeof e=="function"?e(n):e;return o&&t(o)?o.current!=null?Zn({element:o.current,padding:r}).fn(n):{}:o?Zn({element:o,padding:r}).fn(n):{}}}},fc=(e,t)=>({...tc(e),options:[e,t]}),pc=(e,t)=>({...nc(e),options:[e,t]}),mc=(e,t)=>({...ic(e),options:[e,t]}),hc=(e,t)=>({...oc(e),options:[e,t]}),vc=(e,t)=>({...rc(e),options:[e,t]}),gc=(e,t)=>({...sc(e),options:[e,t]}),yc=(e,t)=>({...dc(e),options:[e,t]});var wc="Arrow",Go=i.forwardRef((e,t)=>{const{children:n,width:o=10,height:r=5,...s}=e;return v.jsx(D.svg,{...s,ref:t,width:o,height:r,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:v.jsx("polygon",{points:"0,0 30,0 15,10"})})});Go.displayName=wc;var xc=Go,yn="Popper",[qo,bt]=Oe(yn),[Cc,Zo]=qo(yn),Qo=e=>{const{__scopePopper:t,children:n}=e,[o,r]=i.useState(null);return v.jsx(Cc,{scope:t,anchor:o,onAnchorChange:r,children:n})};Qo.displayName=yn;var Jo="PopperAnchor",er=i.forwardRef((e,t)=>{const{__scopePopper:n,virtualRef:o,...r}=e,s=Zo(Jo,n),a=i.useRef(null),c=B(t,a),l=i.useRef(null);return i.useEffect(()=>{const u=l.current;l.current=o?.current||a.current,u!==l.current&&s.onAnchorChange(l.current)}),o?null:v.jsx(D.div,{...r,ref:c})});er.displayName=Jo;var wn="PopperContent",[bc,Ec]=qo(wn),tr=i.forwardRef((e,t)=>{const{__scopePopper:n,side:o="bottom",sideOffset:r=0,align:s="center",alignOffset:a=0,arrowPadding:c=0,avoidCollisions:l=!0,collisionBoundary:u=[],collisionPadding:f=0,sticky:p="partial",hideWhenDetached:y=!1,updatePositionStrategy:h="optimized",onPlaced:x,...d}=e,m=Zo(wn,n),[w,g]=i.useState(null),C=B(t,A=>g(A)),[b,E]=i.useState(null),R=so(b),S=R?.width??0,O=R?.height??0,M=o+(s!=="center"?"-"+s:""),L=typeof f=="number"?f:{top:0,right:0,bottom:0,left:0,...f},k=Array.isArray(u)?u:[u],$=k.length>0,F={padding:L,boundary:k.filter(Tc),altBoundary:$},{refs:T,floatingStyles:j,placement:I,isPositioned:_,middlewareData:P}=uc({strategy:"fixed",placement:M,whileElementsMounted:(...A)=>ec(...A,{animationFrame:h==="always"}),elements:{reference:m.anchor},middleware:[fc({mainAxis:r+O,alignmentAxis:a}),l&&pc({mainAxis:!0,crossAxis:!1,limiter:p==="partial"?mc():void 0,...F}),l&&hc({...F}),vc({...F,apply:({elements:A,rects:U,availableWidth:X,availableHeight:V})=>{const{width:H,height:K}=U.reference,Z=A.floating.style;Z.setProperty("--radix-popper-available-width",`${X}px`),Z.setProperty("--radix-popper-available-height",`${V}px`),Z.setProperty("--radix-popper-anchor-width",`${H}px`),Z.setProperty("--radix-popper-anchor-height",`${K}px`)}}),b&&yc({element:b,padding:c}),Rc({arrowWidth:S,arrowHeight:O}),y&&gc({strategy:"referenceHidden",...F})]}),[W,Y]=rr(I),ue=ee(x);z(()=>{_&&ue?.()},[_,ue]);const de=P.arrow?.x,re=P.arrow?.y,Q=P.arrow?.centerOffset!==0,[Ie,Ce]=i.useState();return z(()=>{w&&Ce(window.getComputedStyle(w).zIndex)},[w]),v.jsx("div",{ref:T.setFloating,"data-radix-popper-content-wrapper":"",style:{...j,transform:_?j.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Ie,"--radix-popper-transform-origin":[P.transformOrigin?.x,P.transformOrigin?.y].join(" "),...P.hide?.referenceHidden&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:v.jsx(bc,{scope:n,placedSide:W,onArrowChange:E,arrowX:de,arrowY:re,shouldHideArrow:Q,children:v.jsx(D.div,{"data-side":W,"data-align":Y,...d,ref:C,style:{...d.style,animation:_?void 0:"none"}})})})});tr.displayName=wn;var nr="PopperArrow",Sc={top:"bottom",right:"left",bottom:"top",left:"right"},or=i.forwardRef(function(t,n){const{__scopePopper:o,...r}=t,s=Ec(nr,o),a=Sc[s.placedSide];return v.jsx("span",{ref:s.onArrowChange,style:{position:"absolute",left:s.arrowX,top:s.arrowY,[a]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[s.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[s.placedSide],visibility:s.shouldHideArrow?"hidden":void 0},children:v.jsx(xc,{...r,ref:n,style:{...r.style,display:"block"}})})});or.displayName=nr;function Tc(e){return e!==null}var Rc=e=>({name:"transformOrigin",options:e,fn(t){const{placement:n,rects:o,middlewareData:r}=t,a=r.arrow?.centerOffset!==0,c=a?0:e.arrowWidth,l=a?0:e.arrowHeight,[u,f]=rr(n),p={start:"0%",center:"50%",end:"100%"}[f],y=(r.arrow?.x??0)+c/2,h=(r.arrow?.y??0)+l/2;let x="",d="";return u==="bottom"?(x=a?p:`${y}px`,d=`${-l}px`):u==="top"?(x=a?p:`${y}px`,d=`${o.floating.height+l}px`):u==="right"?(x=`${-l}px`,d=a?p:`${h}px`):u==="left"&&(x=`${o.floating.width+l}px`,d=a?p:`${h}px`),{data:{x,y:d}}}});function rr(e){const[t,n="center"]=e.split("-");return[t,n]}var sr=Qo,ir=er,ar=tr,cr=or;function Pc(e){const t=Ac(e),n=i.forwardRef((o,r)=>{const{children:s,...a}=o,c=i.Children.toArray(s),l=c.find(Ic);if(l){const u=l.props.children,f=c.map(p=>p===l?i.Children.count(u)>1?i.Children.only(null):i.isValidElement(u)?u.props.children:null:p);return v.jsx(t,{...a,ref:r,children:i.isValidElement(u)?i.cloneElement(u,void 0,f):null})}return v.jsx(t,{...a,ref:r,children:s})});return n.displayName=`${e}.Slot`,n}function Ac(e){const t=i.forwardRef((n,o)=>{const{children:r,...s}=n;if(i.isValidElement(r)){const a=_c(r),c=Nc(s,r.props);return r.type!==i.Fragment&&(c.ref=o?$e(o,a):a),i.cloneElement(r,c)}return i.Children.count(r)>1?i.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Oc=Symbol("radix.slottable");function Ic(e){return i.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Oc}function Nc(e,t){const n={...t};for(const o in t){const r=e[o],s=t[o];/^on[A-Z]/.test(o)?r&&s?n[o]=(...c)=>{const l=s(...c);return r(...c),l}:r&&(n[o]=r):o==="style"?n[o]={...r,...s}:o==="className"&&(n[o]=[r,s].filter(Boolean).join(" "))}return{...e,...n}}function _c(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var lr=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),Dc="VisuallyHidden",Et=i.forwardRef((e,t)=>v.jsx(D.span,{...e,ref:t,style:{...lr,...e.style}}));Et.displayName=Dc;var Mc=Et,Lc=[" ","Enter","ArrowUp","ArrowDown"],kc=[" ","Enter"],Pe="Select",[St,Tt,jc]=eo(Pe),[Ve]=Oe(Pe,[jc,bt]),Rt=bt(),[Fc,we]=Ve(Pe),[$c,Wc]=Ve(Pe),ur=e=>{const{__scopeSelect:t,children:n,open:o,defaultOpen:r,onOpenChange:s,value:a,defaultValue:c,onValueChange:l,dir:u,name:f,autoComplete:p,disabled:y,required:h,form:x}=e,d=Rt(t),[m,w]=i.useState(null),[g,C]=i.useState(null),[b,E]=i.useState(!1),R=_s(u),[S,O]=ke({prop:o,defaultProp:r??!1,onChange:s,caller:Pe}),[M,L]=ke({prop:a,defaultProp:c,onChange:l,caller:Pe}),k=i.useRef(null),$=m?x||!!m.closest("form"):!0,[F,T]=i.useState(new Set),j=Array.from(F).map(I=>I.props.value).join(";");return v.jsx(sr,{...d,children:v.jsxs(Fc,{required:h,scope:t,trigger:m,onTriggerChange:w,valueNode:g,onValueNodeChange:C,valueNodeHasChildren:b,onValueNodeHasChildrenChange:E,contentId:Se(),value:M,onValueChange:L,open:S,onOpenChange:O,dir:R,triggerPointerDownPosRef:k,disabled:y,children:[v.jsx(St.Provider,{scope:t,children:v.jsx($c,{scope:e.__scopeSelect,onNativeOptionAdd:i.useCallback(I=>{T(_=>new Set(_).add(I))},[]),onNativeOptionRemove:i.useCallback(I=>{T(_=>{const P=new Set(_);return P.delete(I),P})},[]),children:n})}),$?v.jsxs(Mr,{"aria-hidden":!0,required:h,tabIndex:-1,name:f,autoComplete:p,value:M,onChange:I=>L(I.target.value),disabled:y,form:x,children:[M===void 0?v.jsx("option",{value:""}):null,Array.from(F)]},j):null]})})};ur.displayName=Pe;var dr="SelectTrigger",fr=i.forwardRef((e,t)=>{const{__scopeSelect:n,disabled:o=!1,...r}=e,s=Rt(n),a=we(dr,n),c=a.disabled||o,l=B(t,a.onTriggerChange),u=Tt(n),f=i.useRef("touch"),[p,y,h]=kr(d=>{const m=u().filter(C=>!C.disabled),w=m.find(C=>C.value===a.value),g=jr(m,d,w);g!==void 0&&a.onValueChange(g.value)}),x=d=>{c||(a.onOpenChange(!0),h()),d&&(a.triggerPointerDownPosRef.current={x:Math.round(d.pageX),y:Math.round(d.pageY)})};return v.jsx(ir,{asChild:!0,...s,children:v.jsx(D.button,{type:"button",role:"combobox","aria-controls":a.contentId,"aria-expanded":a.open,"aria-required":a.required,"aria-autocomplete":"none",dir:a.dir,"data-state":a.open?"open":"closed",disabled:c,"data-disabled":c?"":void 0,"data-placeholder":Lr(a.value)?"":void 0,...r,ref:l,onClick:N(r.onClick,d=>{d.currentTarget.focus(),f.current!=="mouse"&&x(d)}),onPointerDown:N(r.onPointerDown,d=>{f.current=d.pointerType;const m=d.target;m.hasPointerCapture(d.pointerId)&&m.releasePointerCapture(d.pointerId),d.button===0&&d.ctrlKey===!1&&d.pointerType==="mouse"&&(x(d),d.preventDefault())}),onKeyDown:N(r.onKeyDown,d=>{const m=p.current!=="";!(d.ctrlKey||d.altKey||d.metaKey)&&d.key.length===1&&y(d.key),!(m&&d.key===" ")&&Lc.includes(d.key)&&(x(),d.preventDefault())})})})});fr.displayName=dr;var pr="SelectValue",mr=i.forwardRef((e,t)=>{const{__scopeSelect:n,className:o,style:r,children:s,placeholder:a="",...c}=e,l=we(pr,n),{onValueNodeHasChildrenChange:u}=l,f=s!==void 0,p=B(t,l.onValueNodeChange);return z(()=>{u(f)},[u,f]),v.jsx(D.span,{...c,ref:p,style:{pointerEvents:"none"},children:Lr(l.value)?v.jsx(v.Fragment,{children:a}):s})});mr.displayName=pr;var Bc="SelectIcon",hr=i.forwardRef((e,t)=>{const{__scopeSelect:n,children:o,...r}=e;return v.jsx(D.span,{"aria-hidden":!0,...r,ref:t,children:o||"▼"})});hr.displayName=Bc;var Vc="SelectPortal",vr=e=>v.jsx(Ge,{asChild:!0,...e});vr.displayName=Vc;var Ae="SelectContent",gr=i.forwardRef((e,t)=>{const n=we(Ae,e.__scopeSelect),[o,r]=i.useState();if(z(()=>{r(new DocumentFragment)},[]),!n.open){const s=o;return s?Ye.createPortal(v.jsx(yr,{scope:e.__scopeSelect,children:v.jsx(St.Slot,{scope:e.__scopeSelect,children:v.jsx("div",{children:e.children})})}),s):null}return v.jsx(wr,{...e,ref:t})});gr.displayName=Ae;var J=10,[yr,xe]=Ve(Ae),Hc="SelectContentImpl",Uc=Pc("SelectContent.RemoveScroll"),wr=i.forwardRef((e,t)=>{const{__scopeSelect:n,position:o="item-aligned",onCloseAutoFocus:r,onEscapeKeyDown:s,onPointerDownOutside:a,side:c,sideOffset:l,align:u,alignOffset:f,arrowPadding:p,collisionBoundary:y,collisionPadding:h,sticky:x,hideWhenDetached:d,avoidCollisions:m,...w}=e,g=we(Ae,n),[C,b]=i.useState(null),[E,R]=i.useState(null),S=B(t,A=>b(A)),[O,M]=i.useState(null),[L,k]=i.useState(null),$=Tt(n),[F,T]=i.useState(!1),j=i.useRef(!1);i.useEffect(()=>{if(C)return Co(C)},[C]),fo();const I=i.useCallback(A=>{const[U,...X]=$().map(K=>K.ref.current),[V]=X.slice(-1),H=document.activeElement;for(const K of A)if(K===H||(K?.scrollIntoView({block:"nearest"}),K===U&&E&&(E.scrollTop=0),K===V&&E&&(E.scrollTop=E.scrollHeight),K?.focus(),document.activeElement!==H))return},[$,E]),_=i.useCallback(()=>I([O,C]),[I,O,C]);i.useEffect(()=>{F&&_()},[F,_]);const{onOpenChange:P,triggerPointerDownPosRef:W}=g;i.useEffect(()=>{if(C){let A={x:0,y:0};const U=V=>{A={x:Math.abs(Math.round(V.pageX)-(W.current?.x??0)),y:Math.abs(Math.round(V.pageY)-(W.current?.y??0))}},X=V=>{A.x<=10&&A.y<=10?V.preventDefault():C.contains(V.target)||P(!1),document.removeEventListener("pointermove",U),W.current=null};return W.current!==null&&(document.addEventListener("pointermove",U),document.addEventListener("pointerup",X,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",U),document.removeEventListener("pointerup",X,{capture:!0})}}},[C,P,W]),i.useEffect(()=>{const A=()=>P(!1);return window.addEventListener("blur",A),window.addEventListener("resize",A),()=>{window.removeEventListener("blur",A),window.removeEventListener("resize",A)}},[P]);const[Y,ue]=kr(A=>{const U=$().filter(H=>!H.disabled),X=U.find(H=>H.ref.current===document.activeElement),V=jr(U,A,X);V&&setTimeout(()=>V.ref.current.focus())}),de=i.useCallback((A,U,X)=>{const V=!j.current&&!X;(g.value!==void 0&&g.value===U||V)&&(M(A),V&&(j.current=!0))},[g.value]),re=i.useCallback(()=>C?.focus(),[C]),Q=i.useCallback((A,U,X)=>{const V=!j.current&&!X;(g.value!==void 0&&g.value===U||V)&&k(A)},[g.value]),Ie=o==="popper"?Gt:xr,Ce=Ie===Gt?{side:c,sideOffset:l,align:u,alignOffset:f,arrowPadding:p,collisionBoundary:y,collisionPadding:h,sticky:x,hideWhenDetached:d,avoidCollisions:m}:{};return v.jsx(yr,{scope:n,content:C,viewport:E,onViewportChange:R,itemRefCallback:de,selectedItem:O,onItemLeave:re,itemTextRefCallback:Q,focusSelectedItem:_,selectedItemText:L,position:o,isPositioned:F,searchRef:Y,children:v.jsx(cn,{as:Uc,allowPinchZoom:!0,children:v.jsx(an,{asChild:!0,trapped:g.open,onMountAutoFocus:A=>{A.preventDefault()},onUnmountAutoFocus:N(r,A=>{g.trigger?.focus({preventScroll:!0}),A.preventDefault()}),children:v.jsx(Xe,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:s,onPointerDownOutside:a,onFocusOutside:A=>A.preventDefault(),onDismiss:()=>g.onOpenChange(!1),children:v.jsx(Ie,{role:"listbox",id:g.contentId,"data-state":g.open?"open":"closed",dir:g.dir,onContextMenu:A=>A.preventDefault(),...w,...Ce,onPlaced:()=>T(!0),ref:S,style:{display:"flex",flexDirection:"column",outline:"none",...w.style},onKeyDown:N(w.onKeyDown,A=>{const U=A.ctrlKey||A.altKey||A.metaKey;if(A.key==="Tab"&&A.preventDefault(),!U&&A.key.length===1&&ue(A.key),["ArrowUp","ArrowDown","Home","End"].includes(A.key)){let V=$().filter(H=>!H.disabled).map(H=>H.ref.current);if(["ArrowUp","End"].includes(A.key)&&(V=V.slice().reverse()),["ArrowUp","ArrowDown"].includes(A.key)){const H=A.target,K=V.indexOf(H);V=V.slice(K+1)}setTimeout(()=>I(V)),A.preventDefault()}})})})})})})});wr.displayName=Hc;var Kc="SelectItemAlignedPosition",xr=i.forwardRef((e,t)=>{const{__scopeSelect:n,onPlaced:o,...r}=e,s=we(Ae,n),a=xe(Ae,n),[c,l]=i.useState(null),[u,f]=i.useState(null),p=B(t,S=>f(S)),y=Tt(n),h=i.useRef(!1),x=i.useRef(!0),{viewport:d,selectedItem:m,selectedItemText:w,focusSelectedItem:g}=a,C=i.useCallback(()=>{if(s.trigger&&s.valueNode&&c&&u&&d&&m&&w){const S=s.trigger.getBoundingClientRect(),O=u.getBoundingClientRect(),M=s.valueNode.getBoundingClientRect(),L=w.getBoundingClientRect();if(s.dir!=="rtl"){const H=L.left-O.left,K=M.left-H,Z=S.left-K,be=S.width+Z,Nt=Math.max(be,O.width),_t=window.innerWidth-J,Dt=On(K,[J,Math.max(J,_t-Nt)]);c.style.minWidth=be+"px",c.style.left=Dt+"px"}else{const H=O.right-L.right,K=window.innerWidth-M.right-H,Z=window.innerWidth-S.right-K,be=S.width+Z,Nt=Math.max(be,O.width),_t=window.innerWidth-J,Dt=On(K,[J,Math.max(J,_t-Nt)]);c.style.minWidth=be+"px",c.style.right=Dt+"px"}const k=y(),$=window.innerHeight-J*2,F=d.scrollHeight,T=window.getComputedStyle(u),j=parseInt(T.borderTopWidth,10),I=parseInt(T.paddingTop,10),_=parseInt(T.borderBottomWidth,10),P=parseInt(T.paddingBottom,10),W=j+I+F+P+_,Y=Math.min(m.offsetHeight*5,W),ue=window.getComputedStyle(d),de=parseInt(ue.paddingTop,10),re=parseInt(ue.paddingBottom,10),Q=S.top+S.height/2-J,Ie=$-Q,Ce=m.offsetHeight/2,A=m.offsetTop+Ce,U=j+I+A,X=W-U;if(U<=Q){const H=k.length>0&&m===k[k.length-1].ref.current;c.style.bottom="0px";const K=u.clientHeight-d.offsetTop-d.offsetHeight,Z=Math.max(Ie,Ce+(H?re:0)+K+_),be=U+Z;c.style.height=be+"px"}else{const H=k.length>0&&m===k[0].ref.current;c.style.top="0px";const Z=Math.max(Q,j+d.offsetTop+(H?de:0)+Ce)+X;c.style.height=Z+"px",d.scrollTop=U-Q+d.offsetTop}c.style.margin=`${J}px 0`,c.style.minHeight=Y+"px",c.style.maxHeight=$+"px",o?.(),requestAnimationFrame(()=>h.current=!0)}},[y,s.trigger,s.valueNode,c,u,d,m,w,s.dir,o]);z(()=>C(),[C]);const[b,E]=i.useState();z(()=>{u&&E(window.getComputedStyle(u).zIndex)},[u]);const R=i.useCallback(S=>{S&&x.current===!0&&(C(),g?.(),x.current=!1)},[C,g]);return v.jsx(Yc,{scope:n,contentWrapper:c,shouldExpandOnScrollRef:h,onScrollButtonChange:R,children:v.jsx("div",{ref:l,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:b},children:v.jsx(D.div,{...r,ref:p,style:{boxSizing:"border-box",maxHeight:"100%",...r.style}})})})});xr.displayName=Kc;var zc="SelectPopperPosition",Gt=i.forwardRef((e,t)=>{const{__scopeSelect:n,align:o="start",collisionPadding:r=J,...s}=e,a=Rt(n);return v.jsx(ar,{...a,...s,ref:t,align:o,collisionPadding:r,style:{boxSizing:"border-box",...s.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});Gt.displayName=zc;var[Yc,xn]=Ve(Ae,{}),qt="SelectViewport",Cr=i.forwardRef((e,t)=>{const{__scopeSelect:n,nonce:o,...r}=e,s=xe(qt,n),a=xn(qt,n),c=B(t,s.onViewportChange),l=i.useRef(0);return v.jsxs(v.Fragment,{children:[v.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:o}),v.jsx(St.Slot,{scope:n,children:v.jsx(D.div,{"data-radix-select-viewport":"",role:"presentation",...r,ref:c,style:{position:"relative",flex:1,overflow:"hidden auto",...r.style},onScroll:N(r.onScroll,u=>{const f=u.currentTarget,{contentWrapper:p,shouldExpandOnScrollRef:y}=a;if(y?.current&&p){const h=Math.abs(l.current-f.scrollTop);if(h>0){const x=window.innerHeight-J*2,d=parseFloat(p.style.minHeight),m=parseFloat(p.style.height),w=Math.max(d,m);if(w0?b:0,p.style.justifyContent="flex-end")}}}l.current=f.scrollTop})})})]})});Cr.displayName=qt;var br="SelectGroup",[Xc,Gc]=Ve(br),qc=i.forwardRef((e,t)=>{const{__scopeSelect:n,...o}=e,r=Se();return v.jsx(Xc,{scope:n,id:r,children:v.jsx(D.div,{role:"group","aria-labelledby":r,...o,ref:t})})});qc.displayName=br;var Er="SelectLabel",Sr=i.forwardRef((e,t)=>{const{__scopeSelect:n,...o}=e,r=Gc(Er,n);return v.jsx(D.div,{id:r.id,...o,ref:t})});Sr.displayName=Er;var ht="SelectItem",[Zc,Tr]=Ve(ht),Rr=i.forwardRef((e,t)=>{const{__scopeSelect:n,value:o,disabled:r=!1,textValue:s,...a}=e,c=we(ht,n),l=xe(ht,n),u=c.value===o,[f,p]=i.useState(s??""),[y,h]=i.useState(!1),x=B(t,g=>l.itemRefCallback?.(g,o,r)),d=Se(),m=i.useRef("touch"),w=()=>{r||(c.onValueChange(o),c.onOpenChange(!1))};if(o==="")throw new Error("A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return v.jsx(Zc,{scope:n,value:o,disabled:r,textId:d,isSelected:u,onItemTextChange:i.useCallback(g=>{p(C=>C||(g?.textContent??"").trim())},[]),children:v.jsx(St.ItemSlot,{scope:n,value:o,disabled:r,textValue:f,children:v.jsx(D.div,{role:"option","aria-labelledby":d,"data-highlighted":y?"":void 0,"aria-selected":u&&y,"data-state":u?"checked":"unchecked","aria-disabled":r||void 0,"data-disabled":r?"":void 0,tabIndex:r?void 0:-1,...a,ref:x,onFocus:N(a.onFocus,()=>h(!0)),onBlur:N(a.onBlur,()=>h(!1)),onClick:N(a.onClick,()=>{m.current!=="mouse"&&w()}),onPointerUp:N(a.onPointerUp,()=>{m.current==="mouse"&&w()}),onPointerDown:N(a.onPointerDown,g=>{m.current=g.pointerType}),onPointerMove:N(a.onPointerMove,g=>{m.current=g.pointerType,r?l.onItemLeave?.():m.current==="mouse"&&g.currentTarget.focus({preventScroll:!0})}),onPointerLeave:N(a.onPointerLeave,g=>{g.currentTarget===document.activeElement&&l.onItemLeave?.()}),onKeyDown:N(a.onKeyDown,g=>{l.searchRef?.current!==""&&g.key===" "||(kc.includes(g.key)&&w(),g.key===" "&&g.preventDefault())})})})})});Rr.displayName=ht;var He="SelectItemText",Pr=i.forwardRef((e,t)=>{const{__scopeSelect:n,className:o,style:r,...s}=e,a=we(He,n),c=xe(He,n),l=Tr(He,n),u=Wc(He,n),[f,p]=i.useState(null),y=B(t,w=>p(w),l.onItemTextChange,w=>c.itemTextRefCallback?.(w,l.value,l.disabled)),h=f?.textContent,x=i.useMemo(()=>v.jsx("option",{value:l.value,disabled:l.disabled,children:h},l.value),[l.disabled,l.value,h]),{onNativeOptionAdd:d,onNativeOptionRemove:m}=u;return z(()=>(d(x),()=>m(x)),[d,m,x]),v.jsxs(v.Fragment,{children:[v.jsx(D.span,{id:l.textId,...s,ref:y}),l.isSelected&&a.valueNode&&!a.valueNodeHasChildren?Ye.createPortal(s.children,a.valueNode):null]})});Pr.displayName=He;var Ar="SelectItemIndicator",Or=i.forwardRef((e,t)=>{const{__scopeSelect:n,...o}=e;return Tr(Ar,n).isSelected?v.jsx(D.span,{"aria-hidden":!0,...o,ref:t}):null});Or.displayName=Ar;var Zt="SelectScrollUpButton",Ir=i.forwardRef((e,t)=>{const n=xe(Zt,e.__scopeSelect),o=xn(Zt,e.__scopeSelect),[r,s]=i.useState(!1),a=B(t,o.onScrollButtonChange);return z(()=>{if(n.viewport&&n.isPositioned){let c=function(){const u=l.scrollTop>0;s(u)};const l=n.viewport;return c(),l.addEventListener("scroll",c),()=>l.removeEventListener("scroll",c)}},[n.viewport,n.isPositioned]),r?v.jsx(_r,{...e,ref:a,onAutoScroll:()=>{const{viewport:c,selectedItem:l}=n;c&&l&&(c.scrollTop=c.scrollTop-l.offsetHeight)}}):null});Ir.displayName=Zt;var Qt="SelectScrollDownButton",Nr=i.forwardRef((e,t)=>{const n=xe(Qt,e.__scopeSelect),o=xn(Qt,e.__scopeSelect),[r,s]=i.useState(!1),a=B(t,o.onScrollButtonChange);return z(()=>{if(n.viewport&&n.isPositioned){let c=function(){const u=l.scrollHeight-l.clientHeight,f=Math.ceil(l.scrollTop)l.removeEventListener("scroll",c)}},[n.viewport,n.isPositioned]),r?v.jsx(_r,{...e,ref:a,onAutoScroll:()=>{const{viewport:c,selectedItem:l}=n;c&&l&&(c.scrollTop=c.scrollTop+l.offsetHeight)}}):null});Nr.displayName=Qt;var _r=i.forwardRef((e,t)=>{const{__scopeSelect:n,onAutoScroll:o,...r}=e,s=xe("SelectScrollButton",n),a=i.useRef(null),c=Tt(n),l=i.useCallback(()=>{a.current!==null&&(window.clearInterval(a.current),a.current=null)},[]);return i.useEffect(()=>()=>l(),[l]),z(()=>{c().find(f=>f.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:"nearest"})},[c]),v.jsx(D.div,{"aria-hidden":!0,...r,ref:t,style:{flexShrink:0,...r.style},onPointerDown:N(r.onPointerDown,()=>{a.current===null&&(a.current=window.setInterval(o,50))}),onPointerMove:N(r.onPointerMove,()=>{s.onItemLeave?.(),a.current===null&&(a.current=window.setInterval(o,50))}),onPointerLeave:N(r.onPointerLeave,()=>{l()})})}),Qc="SelectSeparator",Dr=i.forwardRef((e,t)=>{const{__scopeSelect:n,...o}=e;return v.jsx(D.div,{"aria-hidden":!0,...o,ref:t})});Dr.displayName=Qc;var Jt="SelectArrow",Jc=i.forwardRef((e,t)=>{const{__scopeSelect:n,...o}=e,r=Rt(n),s=we(Jt,n),a=xe(Jt,n);return s.open&&a.position==="popper"?v.jsx(cr,{...r,...o,ref:t}):null});Jc.displayName=Jt;var el="SelectBubbleInput",Mr=i.forwardRef(({__scopeSelect:e,value:t,...n},o)=>{const r=i.useRef(null),s=B(o,r),a=ro(t);return i.useEffect(()=>{const c=r.current;if(!c)return;const l=window.HTMLSelectElement.prototype,f=Object.getOwnPropertyDescriptor(l,"value").set;if(a!==t&&f){const p=new Event("change",{bubbles:!0});f.call(c,t),c.dispatchEvent(p)}},[a,t]),v.jsx(D.select,{...n,style:{...lr,...n.style},ref:s,defaultValue:t})});Mr.displayName=el;function Lr(e){return e===""||e===void 0}function kr(e){const t=ee(e),n=i.useRef(""),o=i.useRef(0),r=i.useCallback(a=>{const c=n.current+a;t(c),(function l(u){n.current=u,window.clearTimeout(o.current),u!==""&&(o.current=window.setTimeout(()=>l(""),1e3))})(c)},[t]),s=i.useCallback(()=>{n.current="",window.clearTimeout(o.current)},[]);return i.useEffect(()=>()=>window.clearTimeout(o.current),[]),[n,r,s]}function jr(e,t,n){const r=t.length>1&&Array.from(t).every(u=>u===t[0])?t[0]:t,s=n?e.indexOf(n):-1;let a=tl(e,Math.max(s,0));r.length===1&&(a=a.filter(u=>u!==n));const l=a.find(u=>u.textValue.toLowerCase().startsWith(r.toLowerCase()));return l!==n?l:void 0}function tl(e,t){return e.map((n,o)=>e[(t+o)%e.length])}var nu=ur,ou=fr,ru=mr,su=hr,iu=vr,au=gr,cu=Cr,lu=Sr,uu=Rr,du=Pr,fu=Or,pu=Ir,mu=Nr,hu=Dr,Pt="Checkbox",[nl]=Oe(Pt),[ol,Cn]=nl(Pt);function rl(e){const{__scopeCheckbox:t,checked:n,children:o,defaultChecked:r,disabled:s,form:a,name:c,onCheckedChange:l,required:u,value:f="on",internal_do_not_use_render:p}=e,[y,h]=ke({prop:n,defaultProp:r??!1,onChange:l,caller:Pt}),[x,d]=i.useState(null),[m,w]=i.useState(null),g=i.useRef(!1),C=x?!!a||!!x.closest("form"):!0,b={checked:y,disabled:s,setChecked:h,control:x,setControl:d,name:c,form:a,value:f,hasConsumerStoppedPropagationRef:g,required:u,defaultChecked:he(r)?!1:r,isFormControl:C,bubbleInput:m,setBubbleInput:w};return v.jsx(ol,{scope:t,...b,children:al(p)?p(b):o})}var Fr="CheckboxTrigger",$r=i.forwardRef(({__scopeCheckbox:e,onKeyDown:t,onClick:n,...o},r)=>{const{control:s,value:a,disabled:c,checked:l,required:u,setControl:f,setChecked:p,hasConsumerStoppedPropagationRef:y,isFormControl:h,bubbleInput:x}=Cn(Fr,e),d=B(r,f),m=i.useRef(l);return i.useEffect(()=>{const w=s?.form;if(w){const g=()=>p(m.current);return w.addEventListener("reset",g),()=>w.removeEventListener("reset",g)}},[s,p]),v.jsx(D.button,{type:"button",role:"checkbox","aria-checked":he(l)?"mixed":l,"aria-required":u,"data-state":Hr(l),"data-disabled":c?"":void 0,disabled:c,value:a,...o,ref:d,onKeyDown:N(t,w=>{w.key==="Enter"&&w.preventDefault()}),onClick:N(n,w=>{p(g=>he(g)?!0:!g),x&&h&&(y.current=w.isPropagationStopped(),y.current||w.stopPropagation())})})});$r.displayName=Fr;var sl=i.forwardRef((e,t)=>{const{__scopeCheckbox:n,name:o,checked:r,defaultChecked:s,required:a,disabled:c,value:l,onCheckedChange:u,form:f,...p}=e;return v.jsx(rl,{__scopeCheckbox:n,checked:r,defaultChecked:s,disabled:c,required:a,onCheckedChange:u,name:o,form:f,value:l,internal_do_not_use_render:({isFormControl:y})=>v.jsxs(v.Fragment,{children:[v.jsx($r,{...p,ref:t,__scopeCheckbox:n}),y&&v.jsx(Vr,{__scopeCheckbox:n})]})})});sl.displayName=Pt;var Wr="CheckboxIndicator",il=i.forwardRef((e,t)=>{const{__scopeCheckbox:n,forceMount:o,...r}=e,s=Cn(Wr,n);return v.jsx(ye,{present:o||he(s.checked)||s.checked===!0,children:v.jsx(D.span,{"data-state":Hr(s.checked),"data-disabled":s.disabled?"":void 0,...r,ref:t,style:{pointerEvents:"none",...e.style}})})});il.displayName=Wr;var Br="CheckboxBubbleInput",Vr=i.forwardRef(({__scopeCheckbox:e,...t},n)=>{const{control:o,hasConsumerStoppedPropagationRef:r,checked:s,defaultChecked:a,required:c,disabled:l,name:u,value:f,form:p,bubbleInput:y,setBubbleInput:h}=Cn(Br,e),x=B(n,h),d=ro(s),m=so(o);i.useEffect(()=>{const g=y;if(!g)return;const C=window.HTMLInputElement.prototype,E=Object.getOwnPropertyDescriptor(C,"checked").set,R=!r.current;if(d!==s&&E){const S=new Event("click",{bubbles:R});g.indeterminate=he(s),E.call(g,he(s)?!1:s),g.dispatchEvent(S)}},[y,d,s,r]);const w=i.useRef(he(s)?!1:s);return v.jsx(D.input,{type:"checkbox","aria-hidden":!0,defaultChecked:a??w.current,required:c,disabled:l,name:u,value:f,form:p,...t,tabIndex:-1,ref:x,style:{...t.style,...m,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});Vr.displayName=Br;function al(e){return typeof e=="function"}function he(e){return e==="indeterminate"}function Hr(e){return he(e)?"indeterminate":e?"checked":"unchecked"}var cl=Symbol("radix.slottable");function ll(e){const t=({children:n})=>v.jsx(v.Fragment,{children:n});return t.displayName=`${e}.Slottable`,t.__radixId=cl,t}var[At]=Oe("Tooltip",[bt]),Ot=bt(),Ur="TooltipProvider",ul=700,en="tooltip.open",[dl,bn]=At(Ur),Kr=e=>{const{__scopeTooltip:t,delayDuration:n=ul,skipDelayDuration:o=300,disableHoverableContent:r=!1,children:s}=e,a=i.useRef(!0),c=i.useRef(!1),l=i.useRef(0);return i.useEffect(()=>{const u=l.current;return()=>window.clearTimeout(u)},[]),v.jsx(dl,{scope:t,isOpenDelayedRef:a,delayDuration:n,onOpen:i.useCallback(()=>{window.clearTimeout(l.current),a.current=!1},[]),onClose:i.useCallback(()=>{window.clearTimeout(l.current),l.current=window.setTimeout(()=>a.current=!0,o)},[o]),isPointerInTransitRef:c,onPointerInTransitChange:i.useCallback(u=>{c.current=u},[]),disableHoverableContent:r,children:s})};Kr.displayName=Ur;var ze="Tooltip",[fl,Ze]=At(ze),zr=e=>{const{__scopeTooltip:t,children:n,open:o,defaultOpen:r,onOpenChange:s,disableHoverableContent:a,delayDuration:c}=e,l=bn(ze,e.__scopeTooltip),u=Ot(t),[f,p]=i.useState(null),y=Se(),h=i.useRef(0),x=a??l.disableHoverableContent,d=c??l.delayDuration,m=i.useRef(!1),[w,g]=ke({prop:o,defaultProp:r??!1,onChange:S=>{S?(l.onOpen(),document.dispatchEvent(new CustomEvent(en))):l.onClose(),s?.(S)},caller:ze}),C=i.useMemo(()=>w?m.current?"delayed-open":"instant-open":"closed",[w]),b=i.useCallback(()=>{window.clearTimeout(h.current),h.current=0,m.current=!1,g(!0)},[g]),E=i.useCallback(()=>{window.clearTimeout(h.current),h.current=0,g(!1)},[g]),R=i.useCallback(()=>{window.clearTimeout(h.current),h.current=window.setTimeout(()=>{m.current=!0,g(!0),h.current=0},d)},[d,g]);return i.useEffect(()=>()=>{h.current&&(window.clearTimeout(h.current),h.current=0)},[]),v.jsx(sr,{...u,children:v.jsx(fl,{scope:t,contentId:y,open:w,stateAttribute:C,trigger:f,onTriggerChange:p,onTriggerEnter:i.useCallback(()=>{l.isOpenDelayedRef.current?R():b()},[l.isOpenDelayedRef,R,b]),onTriggerLeave:i.useCallback(()=>{x?E():(window.clearTimeout(h.current),h.current=0)},[E,x]),onOpen:b,onClose:E,disableHoverableContent:x,children:n})})};zr.displayName=ze;var tn="TooltipTrigger",Yr=i.forwardRef((e,t)=>{const{__scopeTooltip:n,...o}=e,r=Ze(tn,n),s=bn(tn,n),a=Ot(n),c=i.useRef(null),l=B(t,c,r.onTriggerChange),u=i.useRef(!1),f=i.useRef(!1),p=i.useCallback(()=>u.current=!1,[]);return i.useEffect(()=>()=>document.removeEventListener("pointerup",p),[p]),v.jsx(ir,{asChild:!0,...a,children:v.jsx(D.button,{"aria-describedby":r.open?r.contentId:void 0,"data-state":r.stateAttribute,...o,ref:l,onPointerMove:N(e.onPointerMove,y=>{y.pointerType!=="touch"&&!f.current&&!s.isPointerInTransitRef.current&&(r.onTriggerEnter(),f.current=!0)}),onPointerLeave:N(e.onPointerLeave,()=>{r.onTriggerLeave(),f.current=!1}),onPointerDown:N(e.onPointerDown,()=>{r.open&&r.onClose(),u.current=!0,document.addEventListener("pointerup",p,{once:!0})}),onFocus:N(e.onFocus,()=>{u.current||r.onOpen()}),onBlur:N(e.onBlur,r.onClose),onClick:N(e.onClick,r.onClose)})})});Yr.displayName=tn;var En="TooltipPortal",[pl,ml]=At(En,{forceMount:void 0}),Xr=e=>{const{__scopeTooltip:t,forceMount:n,children:o,container:r}=e,s=Ze(En,t);return v.jsx(pl,{scope:t,forceMount:n,children:v.jsx(ye,{present:n||s.open,children:v.jsx(Ge,{asChild:!0,container:r,children:o})})})};Xr.displayName=En;var Fe="TooltipContent",Gr=i.forwardRef((e,t)=>{const n=ml(Fe,e.__scopeTooltip),{forceMount:o=n.forceMount,side:r="top",...s}=e,a=Ze(Fe,e.__scopeTooltip);return v.jsx(ye,{present:o||a.open,children:a.disableHoverableContent?v.jsx(qr,{side:r,...s,ref:t}):v.jsx(hl,{side:r,...s,ref:t})})}),hl=i.forwardRef((e,t)=>{const n=Ze(Fe,e.__scopeTooltip),o=bn(Fe,e.__scopeTooltip),r=i.useRef(null),s=B(t,r),[a,c]=i.useState(null),{trigger:l,onClose:u}=n,f=r.current,{onPointerInTransitChange:p}=o,y=i.useCallback(()=>{c(null),p(!1)},[p]),h=i.useCallback((x,d)=>{const m=x.currentTarget,w={x:x.clientX,y:x.clientY},g=xl(w,m.getBoundingClientRect()),C=Cl(w,g),b=bl(d.getBoundingClientRect()),E=Sl([...C,...b]);c(E),p(!0)},[p]);return i.useEffect(()=>()=>y(),[y]),i.useEffect(()=>{if(l&&f){const x=m=>h(m,f),d=m=>h(m,l);return l.addEventListener("pointerleave",x),f.addEventListener("pointerleave",d),()=>{l.removeEventListener("pointerleave",x),f.removeEventListener("pointerleave",d)}}},[l,f,h,y]),i.useEffect(()=>{if(a){const x=d=>{const m=d.target,w={x:d.clientX,y:d.clientY},g=l?.contains(m)||f?.contains(m),C=!El(w,a);g?y():C&&(y(),u())};return document.addEventListener("pointermove",x),()=>document.removeEventListener("pointermove",x)}},[l,f,a,u,y]),v.jsx(qr,{...e,ref:s})}),[vl,gl]=At(ze,{isInside:!1}),yl=ll("TooltipContent"),qr=i.forwardRef((e,t)=>{const{__scopeTooltip:n,children:o,"aria-label":r,onEscapeKeyDown:s,onPointerDownOutside:a,...c}=e,l=Ze(Fe,n),u=Ot(n),{onClose:f}=l;return i.useEffect(()=>(document.addEventListener(en,f),()=>document.removeEventListener(en,f)),[f]),i.useEffect(()=>{if(l.trigger){const p=y=>{y.target?.contains(l.trigger)&&f()};return window.addEventListener("scroll",p,{capture:!0}),()=>window.removeEventListener("scroll",p,{capture:!0})}},[l.trigger,f]),v.jsx(Xe,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:s,onPointerDownOutside:a,onFocusOutside:p=>p.preventDefault(),onDismiss:f,children:v.jsxs(ar,{"data-state":l.stateAttribute,...u,...c,ref:t,style:{...c.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[v.jsx(yl,{children:o}),v.jsx(vl,{scope:n,isInside:!0,children:v.jsx(Mc,{id:l.contentId,role:"tooltip",children:r||o})})]})})});Gr.displayName=Fe;var Zr="TooltipArrow",wl=i.forwardRef((e,t)=>{const{__scopeTooltip:n,...o}=e,r=Ot(n);return gl(Zr,n).isInside?null:v.jsx(cr,{...r,...o,ref:t})});wl.displayName=Zr;function xl(e,t){const n=Math.abs(t.top-e.y),o=Math.abs(t.bottom-e.y),r=Math.abs(t.right-e.x),s=Math.abs(t.left-e.x);switch(Math.min(n,o,r,s)){case s:return"left";case r:return"right";case n:return"top";case o:return"bottom";default:throw new Error("unreachable")}}function Cl(e,t,n=5){const o=[];switch(t){case"top":o.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":o.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":o.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":o.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n});break}return o}function bl(e){const{top:t,right:n,bottom:o,left:r}=e;return[{x:r,y:t},{x:n,y:t},{x:n,y:o},{x:r,y:o}]}function El(e,t){const{x:n,y:o}=e;let r=!1;for(let s=0,a=t.length-1;so!=y>o&&n<(p-u)*(o-f)/(y-f)+u&&(r=!r)}return r}function Sl(e){const t=e.slice();return t.sort((n,o)=>n.xo.x?1:n.yo.y?1:0),Tl(t)}function Tl(e){if(e.length<=1)return e.slice();const t=[];for(let o=0;o=2;){const s=t[t.length-1],a=t[t.length-2];if((s.x-a.x)*(r.y-a.y)>=(s.y-a.y)*(r.x-a.x))t.pop();else break}t.push(r)}t.pop();const n=[];for(let o=e.length-1;o>=0;o--){const r=e[o];for(;n.length>=2;){const s=n[n.length-1],a=n[n.length-2];if((s.x-a.x)*(r.y-a.y)>=(s.y-a.y)*(r.x-a.x))n.pop();else break}n.push(r)}return n.pop(),t.length===1&&n.length===1&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}var vu=Kr,gu=zr,yu=Yr,wu=Xr,xu=Gr,Sn="ToastProvider",[Tn,Rl,Pl]=eo("Toast"),[Qr]=Oe("Toast",[Pl]),[Al,It]=Qr(Sn),Jr=e=>{const{__scopeToast:t,label:n="Notification",duration:o=5e3,swipeDirection:r="right",swipeThreshold:s=50,children:a}=e,[c,l]=i.useState(null),[u,f]=i.useState(0),p=i.useRef(!1),y=i.useRef(!1);return n.trim()||console.error(`Invalid prop \`label\` supplied to \`${Sn}\`. Expected non-empty \`string\`.`),v.jsx(Tn.Provider,{scope:t,children:v.jsx(Al,{scope:t,label:n,duration:o,swipeDirection:r,swipeThreshold:s,toastCount:u,viewport:c,onViewportChange:l,onToastAdd:i.useCallback(()=>f(h=>h+1),[]),onToastRemove:i.useCallback(()=>f(h=>h-1),[]),isFocusedToastEscapeKeyDownRef:p,isClosePausedRef:y,children:a})})};Jr.displayName=Sn;var es="ToastViewport",Ol=["F8"],nn="toast.viewportPause",on="toast.viewportResume",ts=i.forwardRef((e,t)=>{const{__scopeToast:n,hotkey:o=Ol,label:r="Notifications ({hotkey})",...s}=e,a=It(es,n),c=Rl(n),l=i.useRef(null),u=i.useRef(null),f=i.useRef(null),p=i.useRef(null),y=B(t,p,a.onViewportChange),h=o.join("+").replace(/Key/g,"").replace(/Digit/g,""),x=a.toastCount>0;i.useEffect(()=>{const m=w=>{o.length!==0&&o.every(C=>w[C]||w.code===C)&&p.current?.focus()};return document.addEventListener("keydown",m),()=>document.removeEventListener("keydown",m)},[o]),i.useEffect(()=>{const m=l.current,w=p.current;if(x&&m&&w){const g=()=>{if(!a.isClosePausedRef.current){const R=new CustomEvent(nn);w.dispatchEvent(R),a.isClosePausedRef.current=!0}},C=()=>{if(a.isClosePausedRef.current){const R=new CustomEvent(on);w.dispatchEvent(R),a.isClosePausedRef.current=!1}},b=R=>{!m.contains(R.relatedTarget)&&C()},E=()=>{m.contains(document.activeElement)||C()};return m.addEventListener("focusin",g),m.addEventListener("focusout",b),m.addEventListener("pointermove",g),m.addEventListener("pointerleave",E),window.addEventListener("blur",g),window.addEventListener("focus",C),()=>{m.removeEventListener("focusin",g),m.removeEventListener("focusout",b),m.removeEventListener("pointermove",g),m.removeEventListener("pointerleave",E),window.removeEventListener("blur",g),window.removeEventListener("focus",C)}}},[x,a.isClosePausedRef]);const d=i.useCallback(({tabbingDirection:m})=>{const g=c().map(C=>{const b=C.ref.current,E=[b,...Vl(b)];return m==="forwards"?E:E.reverse()});return(m==="forwards"?g.reverse():g).flat()},[c]);return i.useEffect(()=>{const m=p.current;if(m){const w=g=>{const C=g.altKey||g.ctrlKey||g.metaKey;if(g.key==="Tab"&&!C){const E=document.activeElement,R=g.shiftKey;if(g.target===m&&R){u.current?.focus();return}const M=d({tabbingDirection:R?"backwards":"forwards"}),L=M.findIndex(k=>k===E);Ht(M.slice(L+1))?g.preventDefault():R?u.current?.focus():f.current?.focus()}};return m.addEventListener("keydown",w),()=>m.removeEventListener("keydown",w)}},[c,d]),v.jsxs(ei,{ref:l,role:"region","aria-label":r.replace("{hotkey}",h),tabIndex:-1,style:{pointerEvents:x?void 0:"none"},children:[x&&v.jsx(rn,{ref:u,onFocusFromOutsideViewport:()=>{const m=d({tabbingDirection:"forwards"});Ht(m)}}),v.jsx(Tn.Slot,{scope:n,children:v.jsx(D.ol,{tabIndex:-1,...s,ref:y})}),x&&v.jsx(rn,{ref:f,onFocusFromOutsideViewport:()=>{const m=d({tabbingDirection:"backwards"});Ht(m)}})]})});ts.displayName=es;var ns="ToastFocusProxy",rn=i.forwardRef((e,t)=>{const{__scopeToast:n,onFocusFromOutsideViewport:o,...r}=e,s=It(ns,n);return v.jsx(Et,{tabIndex:0,...r,ref:t,style:{position:"fixed"},onFocus:a=>{const c=a.relatedTarget;!s.viewport?.contains(c)&&o()}})});rn.displayName=ns;var Qe="Toast",Il="toast.swipeStart",Nl="toast.swipeMove",_l="toast.swipeCancel",Dl="toast.swipeEnd",os=i.forwardRef((e,t)=>{const{forceMount:n,open:o,defaultOpen:r,onOpenChange:s,...a}=e,[c,l]=ke({prop:o,defaultProp:r??!0,onChange:s,caller:Qe});return v.jsx(ye,{present:n||c,children:v.jsx(kl,{open:c,...a,ref:t,onClose:()=>l(!1),onPause:ee(e.onPause),onResume:ee(e.onResume),onSwipeStart:N(e.onSwipeStart,u=>{u.currentTarget.setAttribute("data-swipe","start")}),onSwipeMove:N(e.onSwipeMove,u=>{const{x:f,y:p}=u.detail.delta;u.currentTarget.setAttribute("data-swipe","move"),u.currentTarget.style.setProperty("--radix-toast-swipe-move-x",`${f}px`),u.currentTarget.style.setProperty("--radix-toast-swipe-move-y",`${p}px`)}),onSwipeCancel:N(e.onSwipeCancel,u=>{u.currentTarget.setAttribute("data-swipe","cancel"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),u.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-end-y")}),onSwipeEnd:N(e.onSwipeEnd,u=>{const{x:f,y:p}=u.detail.delta;u.currentTarget.setAttribute("data-swipe","end"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"),u.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"),u.currentTarget.style.setProperty("--radix-toast-swipe-end-x",`${f}px`),u.currentTarget.style.setProperty("--radix-toast-swipe-end-y",`${p}px`),l(!1)})})})});os.displayName=Qe;var[Ml,Ll]=Qr(Qe,{onClose(){}}),kl=i.forwardRef((e,t)=>{const{__scopeToast:n,type:o="foreground",duration:r,open:s,onClose:a,onEscapeKeyDown:c,onPause:l,onResume:u,onSwipeStart:f,onSwipeMove:p,onSwipeCancel:y,onSwipeEnd:h,...x}=e,d=It(Qe,n),[m,w]=i.useState(null),g=B(t,T=>w(T)),C=i.useRef(null),b=i.useRef(null),E=r||d.duration,R=i.useRef(0),S=i.useRef(E),O=i.useRef(0),{onToastAdd:M,onToastRemove:L}=d,k=ee(()=>{m?.contains(document.activeElement)&&d.viewport?.focus(),a()}),$=i.useCallback(T=>{!T||T===1/0||(window.clearTimeout(O.current),R.current=new Date().getTime(),O.current=window.setTimeout(k,T))},[k]);i.useEffect(()=>{const T=d.viewport;if(T){const j=()=>{$(S.current),u?.()},I=()=>{const _=new Date().getTime()-R.current;S.current=S.current-_,window.clearTimeout(O.current),l?.()};return T.addEventListener(nn,I),T.addEventListener(on,j),()=>{T.removeEventListener(nn,I),T.removeEventListener(on,j)}}},[d.viewport,E,l,u,$]),i.useEffect(()=>{s&&!d.isClosePausedRef.current&&$(E)},[s,E,d.isClosePausedRef,$]),i.useEffect(()=>(M(),()=>L()),[M,L]);const F=i.useMemo(()=>m?us(m):null,[m]);return d.viewport?v.jsxs(v.Fragment,{children:[F&&v.jsx(jl,{__scopeToast:n,role:"status","aria-live":o==="foreground"?"assertive":"polite",children:F}),v.jsx(Ml,{scope:n,onClose:k,children:Ye.createPortal(v.jsx(Tn.ItemSlot,{scope:n,children:v.jsx(Js,{asChild:!0,onEscapeKeyDown:N(c,()=>{d.isFocusedToastEscapeKeyDownRef.current||k(),d.isFocusedToastEscapeKeyDownRef.current=!1}),children:v.jsx(D.li,{tabIndex:0,"data-state":s?"open":"closed","data-swipe-direction":d.swipeDirection,...x,ref:g,style:{userSelect:"none",touchAction:"none",...e.style},onKeyDown:N(e.onKeyDown,T=>{T.key==="Escape"&&(c?.(T.nativeEvent),T.nativeEvent.defaultPrevented||(d.isFocusedToastEscapeKeyDownRef.current=!0,k()))}),onPointerDown:N(e.onPointerDown,T=>{T.button===0&&(C.current={x:T.clientX,y:T.clientY})}),onPointerMove:N(e.onPointerMove,T=>{if(!C.current)return;const j=T.clientX-C.current.x,I=T.clientY-C.current.y,_=!!b.current,P=["left","right"].includes(d.swipeDirection),W=["left","up"].includes(d.swipeDirection)?Math.min:Math.max,Y=P?W(0,j):0,ue=P?0:W(0,I),de=T.pointerType==="touch"?10:2,re={x:Y,y:ue},Q={originalEvent:T,delta:re};_?(b.current=re,st(Nl,p,Q,{discrete:!1})):Jn(re,d.swipeDirection,de)?(b.current=re,st(Il,f,Q,{discrete:!1}),T.target.setPointerCapture(T.pointerId)):(Math.abs(j)>de||Math.abs(I)>de)&&(C.current=null)}),onPointerUp:N(e.onPointerUp,T=>{const j=b.current,I=T.target;if(I.hasPointerCapture(T.pointerId)&&I.releasePointerCapture(T.pointerId),b.current=null,C.current=null,j){const _=T.currentTarget,P={originalEvent:T,delta:j};Jn(j,d.swipeDirection,d.swipeThreshold)?st(Dl,h,P,{discrete:!0}):st(_l,y,P,{discrete:!0}),_.addEventListener("click",W=>W.preventDefault(),{once:!0})}})})})}),d.viewport)})]}):null}),jl=e=>{const{__scopeToast:t,children:n,...o}=e,r=It(Qe,t),[s,a]=i.useState(!1),[c,l]=i.useState(!1);return Wl(()=>a(!0)),i.useEffect(()=>{const u=window.setTimeout(()=>l(!0),1e3);return()=>window.clearTimeout(u)},[]),c?null:v.jsx(Ge,{asChild:!0,children:v.jsx(Et,{...o,children:s&&v.jsxs(v.Fragment,{children:[r.label," ",n]})})})},Fl="ToastTitle",rs=i.forwardRef((e,t)=>{const{__scopeToast:n,...o}=e;return v.jsx(D.div,{...o,ref:t})});rs.displayName=Fl;var $l="ToastDescription",ss=i.forwardRef((e,t)=>{const{__scopeToast:n,...o}=e;return v.jsx(D.div,{...o,ref:t})});ss.displayName=$l;var is="ToastAction",as=i.forwardRef((e,t)=>{const{altText:n,...o}=e;return n.trim()?v.jsx(ls,{altText:n,asChild:!0,children:v.jsx(Rn,{...o,ref:t})}):(console.error(`Invalid prop \`altText\` supplied to \`${is}\`. Expected non-empty \`string\`.`),null)});as.displayName=is;var cs="ToastClose",Rn=i.forwardRef((e,t)=>{const{__scopeToast:n,...o}=e,r=Ll(cs,n);return v.jsx(ls,{asChild:!0,children:v.jsx(D.button,{type:"button",...o,ref:t,onClick:N(e.onClick,r.onClose)})})});Rn.displayName=cs;var ls=i.forwardRef((e,t)=>{const{__scopeToast:n,altText:o,...r}=e;return v.jsx(D.div,{"data-radix-toast-announce-exclude":"","data-radix-toast-announce-alt":o||void 0,...r,ref:t})});function us(e){const t=[];return Array.from(e.childNodes).forEach(o=>{if(o.nodeType===o.TEXT_NODE&&o.textContent&&t.push(o.textContent),Bl(o)){const r=o.ariaHidden||o.hidden||o.style.display==="none",s=o.dataset.radixToastAnnounceExclude==="";if(!r)if(s){const a=o.dataset.radixToastAnnounceAlt;a&&t.push(a)}else t.push(...us(o))}}),t}function st(e,t,n,{discrete:o}){const r=n.originalEvent.currentTarget,s=new CustomEvent(e,{bubbles:!0,cancelable:!0,detail:n});t&&r.addEventListener(e,t,{once:!0}),o?to(r,s):r.dispatchEvent(s)}var Jn=(e,t,n=0)=>{const o=Math.abs(e.x),r=Math.abs(e.y),s=o>r;return t==="left"||t==="right"?s&&o>n:!s&&r>n};function Wl(e=()=>{}){const t=ee(e);z(()=>{let n=0,o=0;return n=window.requestAnimationFrame(()=>o=window.requestAnimationFrame(t)),()=>{window.cancelAnimationFrame(n),window.cancelAnimationFrame(o)}},[t])}function Bl(e){return e.nodeType===e.ELEMENT_NODE}function Vl(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:o=>{const r=o.tagName==="INPUT"&&o.type==="hidden";return o.disabled||o.hidden||r?NodeFilter.FILTER_SKIP:o.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function Ht(e){const t=document.activeElement;return e.some(n=>n===t?!0:(n.focus(),document.activeElement!==t))}var Cu=Jr,bu=ts,Eu=os,Su=rs,Tu=ss,Ru=as,Pu=Rn;export{sl as $,sr as A,ir as B,Ql as C,eu as D,cr as E,an as F,Kl as G,ou as H,su as I,pu as J,mu as K,iu as L,au as M,lu as N,Zl as O,D as P,uu as Q,Xl as R,Ul as S,Jl as T,fu as U,cu as V,Yl as W,du as X,hu as Y,nu as Z,ru as _,eo as a,il as a0,wu as a1,xu as a2,vu as a3,gu as a4,yu as a5,bu as a6,Eu as a7,Ru as a8,Pu as a9,Su as aa,Tu as ab,Cu as ac,N as b,Oe as c,B as d,_s as e,ke as f,ee as g,ye as h,z as i,On as j,oo as k,ro as l,so as m,zl as n,ql as o,tu as p,Gl as q,$e as r,Ge as s,bt as t,Se as u,Co as v,cn as w,fo as x,Xe as y,ar as z}; diff --git a/webui/dist/assets/radix-extra-BM7iD6Dt.js b/webui/dist/assets/radix-extra-BM7iD6Dt.js new file mode 100644 index 00000000..1f95f7b8 --- /dev/null +++ b/webui/dist/assets/radix-extra-BM7iD6Dt.js @@ -0,0 +1,12 @@ +import{r as i,j as u,d as Po}from"./router-CWhjJi2n.js";import{c as k,a as ke,u as re,P as A,b as P,d as T,e as ne,f as G,g as F,h as V,i as Z,j as be,k as Se,l as Ve,m as Be,n as He,O as Co,o as Ro,W as Ao,C as yo,T as Eo,D as _o,p as ze,R as To,q as Do,r as Io,s as No,t as Ke,v as jo,w as Oo,x as Mo,F as Lo,y as Fo,z as $o,A as ko,B as We,E as Vo}from"./radix-core-C3XKqQJw.js";var pe="rovingFocusGroup.onEntryFocus",Bo={bubbles:!1,cancelable:!0},J="RovingFocusGroup",[ve,Ue,Ho]=ke(J),[zo,Ge]=k(J,[Ho]),[Ko,Wo]=zo(J),Ye=i.forwardRef((e,t)=>u.jsx(ve.Provider,{scope:e.__scopeRovingFocusGroup,children:u.jsx(ve.Slot,{scope:e.__scopeRovingFocusGroup,children:u.jsx(Uo,{...e,ref:t})})}));Ye.displayName=J;var Uo=i.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:o,orientation:n,loop:r=!1,dir:a,currentTabStopId:s,defaultCurrentTabStopId:c,onCurrentTabStopIdChange:l,onEntryFocus:d,preventScrollOnEntryFocus:f=!1,...p}=e,v=i.useRef(null),m=T(t,v),g=ne(a),[S,h]=G({prop:s,defaultProp:c??null,onChange:l,caller:J}),[b,C]=i.useState(!1),x=F(d),w=Ue(o),D=i.useRef(!1),[j,O]=i.useState(0);return i.useEffect(()=>{const E=v.current;if(E)return E.addEventListener(pe,x),()=>E.removeEventListener(pe,x)},[x]),u.jsx(Ko,{scope:o,orientation:n,dir:g,loop:r,currentTabStopId:S,onItemFocus:i.useCallback(E=>h(E),[h]),onItemShiftTab:i.useCallback(()=>C(!0),[]),onFocusableItemAdd:i.useCallback(()=>O(E=>E+1),[]),onFocusableItemRemove:i.useCallback(()=>O(E=>E-1),[]),children:u.jsx(A.div,{tabIndex:b||j===0?-1:0,"data-orientation":n,...p,ref:m,style:{outline:"none",...e.style},onMouseDown:P(e.onMouseDown,()=>{D.current=!0}),onFocus:P(e.onFocus,E=>{const y=!D.current;if(E.target===E.currentTarget&&y&&!b){const _=new CustomEvent(pe,Bo);if(E.currentTarget.dispatchEvent(_),!_.defaultPrevented){const R=w().filter(I=>I.focusable),M=R.find(I=>I.active),X=R.find(I=>I.id===S),q=[M,X,...R].filter(Boolean).map(I=>I.ref.current);Ze(q,f)}}D.current=!1}),onBlur:P(e.onBlur,()=>C(!1))})})}),Xe="RovingFocusGroupItem",qe=i.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:o,focusable:n=!0,active:r=!1,tabStopId:a,children:s,...c}=e,l=re(),d=a||l,f=Wo(Xe,o),p=f.currentTabStopId===d,v=Ue(o),{onFocusableItemAdd:m,onFocusableItemRemove:g,currentTabStopId:S}=f;return i.useEffect(()=>{if(n)return m(),()=>g()},[n,m,g]),u.jsx(ve.ItemSlot,{scope:o,id:d,focusable:n,active:r,children:u.jsx(A.span,{tabIndex:p?0:-1,"data-orientation":f.orientation,...c,ref:t,onMouseDown:P(e.onMouseDown,h=>{n?f.onItemFocus(d):h.preventDefault()}),onFocus:P(e.onFocus,()=>f.onItemFocus(d)),onKeyDown:P(e.onKeyDown,h=>{if(h.key==="Tab"&&h.shiftKey){f.onItemShiftTab();return}if(h.target!==h.currentTarget)return;const b=Xo(h,f.orientation,f.dir);if(b!==void 0){if(h.metaKey||h.ctrlKey||h.altKey||h.shiftKey)return;h.preventDefault();let x=v().filter(w=>w.focusable).map(w=>w.ref.current);if(b==="last")x.reverse();else if(b==="prev"||b==="next"){b==="prev"&&x.reverse();const w=x.indexOf(h.currentTarget);x=f.loop?qo(x,w+1):x.slice(w+1)}setTimeout(()=>Ze(x))}}),children:typeof s=="function"?s({isCurrentTabStop:p,hasTabStop:S!=null}):s})})});qe.displayName=Xe;var Go={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function Yo(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function Xo(e,t,o){const n=Yo(e.key,o);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(n))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(n)))return Go[n]}function Ze(e,t=!1){const o=document.activeElement;for(const n of e)if(n===o||(n.focus({preventScroll:t}),document.activeElement!==o))return}function qo(e,t){return e.map((o,n)=>e[(t+n)%e.length])}var Zo=Ye,Jo=qe,ae="Tabs",[Qo]=k(ae,[Ge]),Je=Ge(),[er,xe]=Qo(ae),Qe=i.forwardRef((e,t)=>{const{__scopeTabs:o,value:n,onValueChange:r,defaultValue:a,orientation:s="horizontal",dir:c,activationMode:l="automatic",...d}=e,f=ne(c),[p,v]=G({prop:n,onChange:r,defaultProp:a??"",caller:ae});return u.jsx(er,{scope:o,baseId:re(),value:p,onValueChange:v,orientation:s,dir:f,activationMode:l,children:u.jsx(A.div,{dir:f,"data-orientation":s,...d,ref:t})})});Qe.displayName=ae;var et="TabsList",tt=i.forwardRef((e,t)=>{const{__scopeTabs:o,loop:n=!0,...r}=e,a=xe(et,o),s=Je(o);return u.jsx(Zo,{asChild:!0,...s,orientation:a.orientation,dir:a.dir,loop:n,children:u.jsx(A.div,{role:"tablist","aria-orientation":a.orientation,...r,ref:t})})});tt.displayName=et;var ot="TabsTrigger",rt=i.forwardRef((e,t)=>{const{__scopeTabs:o,value:n,disabled:r=!1,...a}=e,s=xe(ot,o),c=Je(o),l=st(s.baseId,n),d=it(s.baseId,n),f=n===s.value;return u.jsx(Jo,{asChild:!0,...c,focusable:!r,active:f,children:u.jsx(A.button,{type:"button",role:"tab","aria-selected":f,"aria-controls":d,"data-state":f?"active":"inactive","data-disabled":r?"":void 0,disabled:r,id:l,...a,ref:t,onMouseDown:P(e.onMouseDown,p=>{!r&&p.button===0&&p.ctrlKey===!1?s.onValueChange(n):p.preventDefault()}),onKeyDown:P(e.onKeyDown,p=>{[" ","Enter"].includes(p.key)&&s.onValueChange(n)}),onFocus:P(e.onFocus,()=>{const p=s.activationMode!=="manual";!f&&!r&&p&&s.onValueChange(n)})})})});rt.displayName=ot;var nt="TabsContent",at=i.forwardRef((e,t)=>{const{__scopeTabs:o,value:n,forceMount:r,children:a,...s}=e,c=xe(nt,o),l=st(c.baseId,n),d=it(c.baseId,n),f=n===c.value,p=i.useRef(f);return i.useEffect(()=>{const v=requestAnimationFrame(()=>p.current=!1);return()=>cancelAnimationFrame(v)},[]),u.jsx(V,{present:r||f,children:({present:v})=>u.jsx(A.div,{"data-state":f?"active":"inactive","data-orientation":c.orientation,role:"tabpanel","aria-labelledby":l,hidden:!v,id:d,tabIndex:0,...s,ref:t,style:{...e.style,animationDuration:p.current?"0s":void 0},children:v&&a})})});at.displayName=nt;function st(e,t){return`${e}-trigger-${t}`}function it(e,t){return`${e}-content-${t}`}var Fn=Qe,$n=tt,kn=rt,Vn=at;function tr(e,t){return i.useReducer((o,n)=>t[o][n]??o,e)}var we="ScrollArea",[ct]=k(we),[or,N]=ct(we),lt=i.forwardRef((e,t)=>{const{__scopeScrollArea:o,type:n="hover",dir:r,scrollHideDelay:a=600,...s}=e,[c,l]=i.useState(null),[d,f]=i.useState(null),[p,v]=i.useState(null),[m,g]=i.useState(null),[S,h]=i.useState(null),[b,C]=i.useState(0),[x,w]=i.useState(0),[D,j]=i.useState(!1),[O,E]=i.useState(!1),y=T(t,R=>l(R)),_=ne(r);return u.jsx(or,{scope:o,type:n,dir:_,scrollHideDelay:a,scrollArea:c,viewport:d,onViewportChange:f,content:p,onContentChange:v,scrollbarX:m,onScrollbarXChange:g,scrollbarXEnabled:D,onScrollbarXEnabledChange:j,scrollbarY:S,onScrollbarYChange:h,scrollbarYEnabled:O,onScrollbarYEnabledChange:E,onCornerWidthChange:C,onCornerHeightChange:w,children:u.jsx(A.div,{dir:_,...s,ref:y,style:{position:"relative","--radix-scroll-area-corner-width":b+"px","--radix-scroll-area-corner-height":x+"px",...e.style}})})});lt.displayName=we;var ut="ScrollAreaViewport",dt=i.forwardRef((e,t)=>{const{__scopeScrollArea:o,children:n,nonce:r,...a}=e,s=N(ut,o),c=i.useRef(null),l=T(t,c,s.onViewportChange);return u.jsxs(u.Fragment,{children:[u.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:r}),u.jsx(A.div,{"data-radix-scroll-area-viewport":"",...a,ref:l,style:{overflowX:s.scrollbarXEnabled?"scroll":"hidden",overflowY:s.scrollbarYEnabled?"scroll":"hidden",...e.style},children:u.jsx("div",{ref:s.onContentChange,style:{minWidth:"100%",display:"table"},children:n})})]})});dt.displayName=ut;var L="ScrollAreaScrollbar",rr=i.forwardRef((e,t)=>{const{forceMount:o,...n}=e,r=N(L,e.__scopeScrollArea),{onScrollbarXEnabledChange:a,onScrollbarYEnabledChange:s}=r,c=e.orientation==="horizontal";return i.useEffect(()=>(c?a(!0):s(!0),()=>{c?a(!1):s(!1)}),[c,a,s]),r.type==="hover"?u.jsx(nr,{...n,ref:t,forceMount:o}):r.type==="scroll"?u.jsx(ar,{...n,ref:t,forceMount:o}):r.type==="auto"?u.jsx(ft,{...n,ref:t,forceMount:o}):r.type==="always"?u.jsx(Pe,{...n,ref:t}):null});rr.displayName=L;var nr=i.forwardRef((e,t)=>{const{forceMount:o,...n}=e,r=N(L,e.__scopeScrollArea),[a,s]=i.useState(!1);return i.useEffect(()=>{const c=r.scrollArea;let l=0;if(c){const d=()=>{window.clearTimeout(l),s(!0)},f=()=>{l=window.setTimeout(()=>s(!1),r.scrollHideDelay)};return c.addEventListener("pointerenter",d),c.addEventListener("pointerleave",f),()=>{window.clearTimeout(l),c.removeEventListener("pointerenter",d),c.removeEventListener("pointerleave",f)}}},[r.scrollArea,r.scrollHideDelay]),u.jsx(V,{present:o||a,children:u.jsx(ft,{"data-state":a?"visible":"hidden",...n,ref:t})})}),ar=i.forwardRef((e,t)=>{const{forceMount:o,...n}=e,r=N(L,e.__scopeScrollArea),a=e.orientation==="horizontal",s=ie(()=>l("SCROLL_END"),100),[c,l]=tr("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return i.useEffect(()=>{if(c==="idle"){const d=window.setTimeout(()=>l("HIDE"),r.scrollHideDelay);return()=>window.clearTimeout(d)}},[c,r.scrollHideDelay,l]),i.useEffect(()=>{const d=r.viewport,f=a?"scrollLeft":"scrollTop";if(d){let p=d[f];const v=()=>{const m=d[f];p!==m&&(l("SCROLL"),s()),p=m};return d.addEventListener("scroll",v),()=>d.removeEventListener("scroll",v)}},[r.viewport,a,l,s]),u.jsx(V,{present:o||c!=="hidden",children:u.jsx(Pe,{"data-state":c==="hidden"?"hidden":"visible",...n,ref:t,onPointerEnter:P(e.onPointerEnter,()=>l("POINTER_ENTER")),onPointerLeave:P(e.onPointerLeave,()=>l("POINTER_LEAVE"))})})}),ft=i.forwardRef((e,t)=>{const o=N(L,e.__scopeScrollArea),{forceMount:n,...r}=e,[a,s]=i.useState(!1),c=e.orientation==="horizontal",l=ie(()=>{if(o.viewport){const d=o.viewport.offsetWidth{const{orientation:o="vertical",...n}=e,r=N(L,e.__scopeScrollArea),a=i.useRef(null),s=i.useRef(0),[c,l]=i.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),d=ht(c.viewport,c.content),f={...n,sizes:c,onSizesChange:l,hasThumb:d>0&&d<1,onThumbChange:v=>a.current=v,onThumbPointerUp:()=>s.current=0,onThumbPointerDown:v=>s.current=v};function p(v,m){return fr(v,s.current,c,m)}return o==="horizontal"?u.jsx(sr,{...f,ref:t,onThumbPositionChange:()=>{if(r.viewport&&a.current){const v=r.viewport.scrollLeft,m=Oe(v,c,r.dir);a.current.style.transform=`translate3d(${m}px, 0, 0)`}},onWheelScroll:v=>{r.viewport&&(r.viewport.scrollLeft=v)},onDragScroll:v=>{r.viewport&&(r.viewport.scrollLeft=p(v,r.dir))}}):o==="vertical"?u.jsx(ir,{...f,ref:t,onThumbPositionChange:()=>{if(r.viewport&&a.current){const v=r.viewport.scrollTop,m=Oe(v,c);a.current.style.transform=`translate3d(0, ${m}px, 0)`}},onWheelScroll:v=>{r.viewport&&(r.viewport.scrollTop=v)},onDragScroll:v=>{r.viewport&&(r.viewport.scrollTop=p(v))}}):null}),sr=i.forwardRef((e,t)=>{const{sizes:o,onSizesChange:n,...r}=e,a=N(L,e.__scopeScrollArea),[s,c]=i.useState(),l=i.useRef(null),d=T(t,l,a.onScrollbarXChange);return i.useEffect(()=>{l.current&&c(getComputedStyle(l.current))},[l]),u.jsx(vt,{"data-orientation":"horizontal",...r,ref:d,sizes:o,style:{bottom:0,left:a.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:a.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":se(o)+"px",...e.style},onThumbPointerDown:f=>e.onThumbPointerDown(f.x),onDragScroll:f=>e.onDragScroll(f.x),onWheelScroll:(f,p)=>{if(a.viewport){const v=a.viewport.scrollLeft+f.deltaX;e.onWheelScroll(v),bt(v,p)&&f.preventDefault()}},onResize:()=>{l.current&&a.viewport&&s&&n({content:a.viewport.scrollWidth,viewport:a.viewport.offsetWidth,scrollbar:{size:l.current.clientWidth,paddingStart:te(s.paddingLeft),paddingEnd:te(s.paddingRight)}})}})}),ir=i.forwardRef((e,t)=>{const{sizes:o,onSizesChange:n,...r}=e,a=N(L,e.__scopeScrollArea),[s,c]=i.useState(),l=i.useRef(null),d=T(t,l,a.onScrollbarYChange);return i.useEffect(()=>{l.current&&c(getComputedStyle(l.current))},[l]),u.jsx(vt,{"data-orientation":"vertical",...r,ref:d,sizes:o,style:{top:0,right:a.dir==="ltr"?0:void 0,left:a.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":se(o)+"px",...e.style},onThumbPointerDown:f=>e.onThumbPointerDown(f.y),onDragScroll:f=>e.onDragScroll(f.y),onWheelScroll:(f,p)=>{if(a.viewport){const v=a.viewport.scrollTop+f.deltaY;e.onWheelScroll(v),bt(v,p)&&f.preventDefault()}},onResize:()=>{l.current&&a.viewport&&s&&n({content:a.viewport.scrollHeight,viewport:a.viewport.offsetHeight,scrollbar:{size:l.current.clientHeight,paddingStart:te(s.paddingTop),paddingEnd:te(s.paddingBottom)}})}})}),[cr,pt]=ct(L),vt=i.forwardRef((e,t)=>{const{__scopeScrollArea:o,sizes:n,hasThumb:r,onThumbChange:a,onThumbPointerUp:s,onThumbPointerDown:c,onThumbPositionChange:l,onDragScroll:d,onWheelScroll:f,onResize:p,...v}=e,m=N(L,o),[g,S]=i.useState(null),h=T(t,y=>S(y)),b=i.useRef(null),C=i.useRef(""),x=m.viewport,w=n.content-n.viewport,D=F(f),j=F(l),O=ie(p,10);function E(y){if(b.current){const _=y.clientX-b.current.left,R=y.clientY-b.current.top;d({x:_,y:R})}}return i.useEffect(()=>{const y=_=>{const R=_.target;g?.contains(R)&&D(_,w)};return document.addEventListener("wheel",y,{passive:!1}),()=>document.removeEventListener("wheel",y,{passive:!1})},[x,g,w,D]),i.useEffect(j,[n,j]),W(g,O),W(m.content,O),u.jsx(cr,{scope:o,scrollbar:g,hasThumb:r,onThumbChange:F(a),onThumbPointerUp:F(s),onThumbPositionChange:j,onThumbPointerDown:F(c),children:u.jsx(A.div,{...v,ref:h,style:{position:"absolute",...v.style},onPointerDown:P(e.onPointerDown,y=>{y.button===0&&(y.target.setPointerCapture(y.pointerId),b.current=g.getBoundingClientRect(),C.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",m.viewport&&(m.viewport.style.scrollBehavior="auto"),E(y))}),onPointerMove:P(e.onPointerMove,E),onPointerUp:P(e.onPointerUp,y=>{const _=y.target;_.hasPointerCapture(y.pointerId)&&_.releasePointerCapture(y.pointerId),document.body.style.webkitUserSelect=C.current,m.viewport&&(m.viewport.style.scrollBehavior=""),b.current=null})})})}),ee="ScrollAreaThumb",lr=i.forwardRef((e,t)=>{const{forceMount:o,...n}=e,r=pt(ee,e.__scopeScrollArea);return u.jsx(V,{present:o||r.hasThumb,children:u.jsx(ur,{ref:t,...n})})}),ur=i.forwardRef((e,t)=>{const{__scopeScrollArea:o,style:n,...r}=e,a=N(ee,o),s=pt(ee,o),{onThumbPositionChange:c}=s,l=T(t,p=>s.onThumbChange(p)),d=i.useRef(void 0),f=ie(()=>{d.current&&(d.current(),d.current=void 0)},100);return i.useEffect(()=>{const p=a.viewport;if(p){const v=()=>{if(f(),!d.current){const m=pr(p,c);d.current=m,c()}};return c(),p.addEventListener("scroll",v),()=>p.removeEventListener("scroll",v)}},[a.viewport,f,c]),u.jsx(A.div,{"data-state":s.hasThumb?"visible":"hidden",...r,ref:l,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...n},onPointerDownCapture:P(e.onPointerDownCapture,p=>{const m=p.target.getBoundingClientRect(),g=p.clientX-m.left,S=p.clientY-m.top;s.onThumbPointerDown({x:g,y:S})}),onPointerUp:P(e.onPointerUp,s.onThumbPointerUp)})});lr.displayName=ee;var Ce="ScrollAreaCorner",mt=i.forwardRef((e,t)=>{const o=N(Ce,e.__scopeScrollArea),n=!!(o.scrollbarX&&o.scrollbarY);return o.type!=="scroll"&&n?u.jsx(dr,{...e,ref:t}):null});mt.displayName=Ce;var dr=i.forwardRef((e,t)=>{const{__scopeScrollArea:o,...n}=e,r=N(Ce,o),[a,s]=i.useState(0),[c,l]=i.useState(0),d=!!(a&&c);return W(r.scrollbarX,()=>{const f=r.scrollbarX?.offsetHeight||0;r.onCornerHeightChange(f),l(f)}),W(r.scrollbarY,()=>{const f=r.scrollbarY?.offsetWidth||0;r.onCornerWidthChange(f),s(f)}),d?u.jsx(A.div,{...n,ref:t,style:{width:a,height:c,position:"absolute",right:r.dir==="ltr"?0:void 0,left:r.dir==="rtl"?0:void 0,bottom:0,...e.style}}):null});function te(e){return e?parseInt(e,10):0}function ht(e,t){const o=e/t;return isNaN(o)?0:o}function se(e){const t=ht(e.viewport,e.content),o=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,n=(e.scrollbar.size-o)*t;return Math.max(n,18)}function fr(e,t,o,n="ltr"){const r=se(o),a=r/2,s=t||a,c=r-s,l=o.scrollbar.paddingStart+s,d=o.scrollbar.size-o.scrollbar.paddingEnd-c,f=o.content-o.viewport,p=n==="ltr"?[0,f]:[f*-1,0];return gt([l,d],p)(e)}function Oe(e,t,o="ltr"){const n=se(t),r=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,a=t.scrollbar.size-r,s=t.content-t.viewport,c=a-n,l=o==="ltr"?[0,s]:[s*-1,0],d=be(e,l);return gt([0,s],[0,c])(d)}function gt(e,t){return o=>{if(e[0]===e[1]||t[0]===t[1])return t[0];const n=(t[1]-t[0])/(e[1]-e[0]);return t[0]+n*(o-e[0])}}function bt(e,t){return e>0&&e{})=>{let o={left:e.scrollLeft,top:e.scrollTop},n=0;return(function r(){const a={left:e.scrollLeft,top:e.scrollTop},s=o.left!==a.left,c=o.top!==a.top;(s||c)&&t(),o=a,n=window.requestAnimationFrame(r)})(),()=>window.cancelAnimationFrame(n)};function ie(e,t){const o=F(e),n=i.useRef(0);return i.useEffect(()=>()=>window.clearTimeout(n.current),[]),i.useCallback(()=>{window.clearTimeout(n.current),n.current=window.setTimeout(o,t)},[o,t])}function W(e,t){const o=F(t);Z(()=>{let n=0;if(e){const r=new ResizeObserver(()=>{cancelAnimationFrame(n),n=window.requestAnimationFrame(o)});return r.observe(e),()=>{window.cancelAnimationFrame(n),r.unobserve(e)}}},[e,o])}var Bn=lt,Hn=dt,zn=mt;function vr(e,t=[]){let o=[];function n(a,s){const c=i.createContext(s);c.displayName=a+"Context";const l=o.length;o=[...o,s];const d=p=>{const{scope:v,children:m,...g}=p,S=v?.[e]?.[l]||c,h=i.useMemo(()=>g,Object.values(g));return u.jsx(S.Provider,{value:h,children:m})};d.displayName=a+"Provider";function f(p,v){const m=v?.[e]?.[l]||c,g=i.useContext(m);if(g)return g;if(s!==void 0)return s;throw new Error(`\`${p}\` must be used within \`${a}\``)}return[d,f]}const r=()=>{const a=o.map(s=>i.createContext(s));return function(c){const l=c?.[e]||a;return i.useMemo(()=>({[`__scope${e}`]:{...c,[e]:l}}),[c,l])}};return r.scopeName=e,[n,mr(r,...t)]}function mr(...e){const t=e[0];if(e.length===1)return t;const o=()=>{const n=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(a){const s=n.reduce((c,{useScope:l,scopeName:d})=>{const p=l(a)[`__scope${d}`];return{...c,...p}},{});return i.useMemo(()=>({[`__scope${t.scopeName}`]:s}),[s])}};return o.scopeName=t.scopeName,o}var hr=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],St=hr.reduce((e,t)=>{const o=Se(`Primitive.${t}`),n=i.forwardRef((r,a)=>{const{asChild:s,...c}=r,l=s?o:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),u.jsx(l,{...c,ref:a})});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{}),Re="Progress",Ae=100,[gr]=vr(Re),[br,Sr]=gr(Re),xt=i.forwardRef((e,t)=>{const{__scopeProgress:o,value:n=null,max:r,getValueLabel:a=xr,...s}=e;(r||r===0)&&!Me(r)&&console.error(wr(`${r}`,"Progress"));const c=Me(r)?r:Ae;n!==null&&!Le(n,c)&&console.error(Pr(`${n}`,"Progress"));const l=Le(n,c)?n:null,d=oe(l)?a(l,c):void 0;return u.jsx(br,{scope:o,value:l,max:c,children:u.jsx(St.div,{"aria-valuemax":c,"aria-valuemin":0,"aria-valuenow":oe(l)?l:void 0,"aria-valuetext":d,role:"progressbar","data-state":Ct(l,c),"data-value":l??void 0,"data-max":c,...s,ref:t})})});xt.displayName=Re;var wt="ProgressIndicator",Pt=i.forwardRef((e,t)=>{const{__scopeProgress:o,...n}=e,r=Sr(wt,o);return u.jsx(St.div,{"data-state":Ct(r.value,r.max),"data-value":r.value??void 0,"data-max":r.max,...n,ref:t})});Pt.displayName=wt;function xr(e,t){return`${Math.round(e/t*100)}%`}function Ct(e,t){return e==null?"indeterminate":e===t?"complete":"loading"}function oe(e){return typeof e=="number"}function Me(e){return oe(e)&&!isNaN(e)&&e>0}function Le(e,t){return oe(e)&&!isNaN(e)&&e<=t&&e>=0}function wr(e,t){return`Invalid prop \`max\` of value \`${e}\` supplied to \`${t}\`. Only numbers greater than 0 are valid max values. Defaulting to \`${Ae}\`.`}function Pr(e,t){return`Invalid prop \`value\` of value \`${e}\` supplied to \`${t}\`. The \`value\` prop must be: + - a positive number + - less than the value passed to \`max\` (or ${Ae} if no \`max\` prop is set) + - \`null\` or \`undefined\` if the progress is indeterminate. + +Defaulting to \`null\`.`}var Kn=xt,Wn=Pt,ce="Switch",[Cr]=k(ce),[Rr,Ar]=Cr(ce),Rt=i.forwardRef((e,t)=>{const{__scopeSwitch:o,name:n,checked:r,defaultChecked:a,required:s,disabled:c,value:l="on",onCheckedChange:d,form:f,...p}=e,[v,m]=i.useState(null),g=T(t,x=>m(x)),S=i.useRef(!1),h=v?f||!!v.closest("form"):!0,[b,C]=G({prop:r,defaultProp:a??!1,onChange:d,caller:ce});return u.jsxs(Rr,{scope:o,checked:b,disabled:c,children:[u.jsx(A.button,{type:"button",role:"switch","aria-checked":b,"aria-required":s,"data-state":_t(b),"data-disabled":c?"":void 0,disabled:c,value:l,...p,ref:g,onClick:P(e.onClick,x=>{C(w=>!w),h&&(S.current=x.isPropagationStopped(),S.current||x.stopPropagation())})}),h&&u.jsx(Et,{control:v,bubbles:!S.current,name:n,value:l,checked:b,required:s,disabled:c,form:f,style:{transform:"translateX(-100%)"}})]})});Rt.displayName=ce;var At="SwitchThumb",yt=i.forwardRef((e,t)=>{const{__scopeSwitch:o,...n}=e,r=Ar(At,o);return u.jsx(A.span,{"data-state":_t(r.checked),"data-disabled":r.disabled?"":void 0,...n,ref:t})});yt.displayName=At;var yr="SwitchBubbleInput",Et=i.forwardRef(({__scopeSwitch:e,control:t,checked:o,bubbles:n=!0,...r},a)=>{const s=i.useRef(null),c=T(s,a),l=Ve(o),d=Be(t);return i.useEffect(()=>{const f=s.current;if(!f)return;const p=window.HTMLInputElement.prototype,m=Object.getOwnPropertyDescriptor(p,"checked").set;if(l!==o&&m){const g=new Event("click",{bubbles:n});m.call(f,o),f.dispatchEvent(g)}},[l,o,n]),u.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:o,...r,tabIndex:-1,ref:c,style:{...r.style,...d,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});Et.displayName=yr;function _t(e){return e?"checked":"unchecked"}var Un=Rt,Gn=yt,Tt=["PageUp","PageDown"],Dt=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],It={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},Y="Slider",[me,Er,_r]=ke(Y),[Nt]=k(Y,[_r]),[Tr,le]=Nt(Y),jt=i.forwardRef((e,t)=>{const{name:o,min:n=0,max:r=100,step:a=1,orientation:s="horizontal",disabled:c=!1,minStepsBetweenThumbs:l=0,defaultValue:d=[n],value:f,onValueChange:p=()=>{},onValueCommit:v=()=>{},inverted:m=!1,form:g,...S}=e,h=i.useRef(new Set),b=i.useRef(0),x=s==="horizontal"?Dr:Ir,[w=[],D]=G({prop:f,defaultProp:d,onChange:R=>{[...h.current][b.current]?.focus(),p(R)}}),j=i.useRef(w);function O(R){const M=Lr(w,R);_(R,M)}function E(R){_(R,b.current)}function y(){const R=j.current[b.current];w[b.current]!==R&&v(w)}function _(R,M,{commit:X}={commit:!1}){const fe=Vr(a),q=Br(Math.round((R-n)/a)*a+n,fe),I=be(q,[n,r]);D((z=[])=>{const H=Or(z,I,M);if(kr(H,l*a)){b.current=H.indexOf(I);const je=String(H)!==String(z);return je&&X&&v(H),je?H:z}else return z})}return u.jsx(Tr,{scope:e.__scopeSlider,name:o,disabled:c,min:n,max:r,valueIndexToChangeRef:b,thumbs:h.current,values:w,orientation:s,form:g,children:u.jsx(me.Provider,{scope:e.__scopeSlider,children:u.jsx(me.Slot,{scope:e.__scopeSlider,children:u.jsx(x,{"aria-disabled":c,"data-disabled":c?"":void 0,...S,ref:t,onPointerDown:P(S.onPointerDown,()=>{c||(j.current=w)}),min:n,max:r,inverted:m,onSlideStart:c?void 0:O,onSlideMove:c?void 0:E,onSlideEnd:c?void 0:y,onHomeKeyDown:()=>!c&&_(n,0,{commit:!0}),onEndKeyDown:()=>!c&&_(r,w.length-1,{commit:!0}),onStepKeyDown:({event:R,direction:M})=>{if(!c){const q=Tt.includes(R.key)||R.shiftKey&&Dt.includes(R.key)?10:1,I=b.current,z=w[I],H=a*q*M;_(z+H,I,{commit:!0})}}})})})})});jt.displayName=Y;var[Ot,Mt]=Nt(Y,{startEdge:"left",endEdge:"right",size:"width",direction:1}),Dr=i.forwardRef((e,t)=>{const{min:o,max:n,dir:r,inverted:a,onSlideStart:s,onSlideMove:c,onSlideEnd:l,onStepKeyDown:d,...f}=e,[p,v]=i.useState(null),m=T(t,x=>v(x)),g=i.useRef(void 0),S=ne(r),h=S==="ltr",b=h&&!a||!h&&a;function C(x){const w=g.current||p.getBoundingClientRect(),D=[0,w.width],O=ye(D,b?[o,n]:[n,o]);return g.current=w,O(x-w.left)}return u.jsx(Ot,{scope:e.__scopeSlider,startEdge:b?"left":"right",endEdge:b?"right":"left",direction:b?1:-1,size:"width",children:u.jsx(Lt,{dir:S,"data-orientation":"horizontal",...f,ref:m,style:{...f.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:x=>{const w=C(x.clientX);s?.(w)},onSlideMove:x=>{const w=C(x.clientX);c?.(w)},onSlideEnd:()=>{g.current=void 0,l?.()},onStepKeyDown:x=>{const D=It[b?"from-left":"from-right"].includes(x.key);d?.({event:x,direction:D?-1:1})}})})}),Ir=i.forwardRef((e,t)=>{const{min:o,max:n,inverted:r,onSlideStart:a,onSlideMove:s,onSlideEnd:c,onStepKeyDown:l,...d}=e,f=i.useRef(null),p=T(t,f),v=i.useRef(void 0),m=!r;function g(S){const h=v.current||f.current.getBoundingClientRect(),b=[0,h.height],x=ye(b,m?[n,o]:[o,n]);return v.current=h,x(S-h.top)}return u.jsx(Ot,{scope:e.__scopeSlider,startEdge:m?"bottom":"top",endEdge:m?"top":"bottom",size:"height",direction:m?1:-1,children:u.jsx(Lt,{"data-orientation":"vertical",...d,ref:p,style:{...d.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:S=>{const h=g(S.clientY);a?.(h)},onSlideMove:S=>{const h=g(S.clientY);s?.(h)},onSlideEnd:()=>{v.current=void 0,c?.()},onStepKeyDown:S=>{const b=It[m?"from-bottom":"from-top"].includes(S.key);l?.({event:S,direction:b?-1:1})}})})}),Lt=i.forwardRef((e,t)=>{const{__scopeSlider:o,onSlideStart:n,onSlideMove:r,onSlideEnd:a,onHomeKeyDown:s,onEndKeyDown:c,onStepKeyDown:l,...d}=e,f=le(Y,o);return u.jsx(A.span,{...d,ref:t,onKeyDown:P(e.onKeyDown,p=>{p.key==="Home"?(s(p),p.preventDefault()):p.key==="End"?(c(p),p.preventDefault()):Tt.concat(Dt).includes(p.key)&&(l(p),p.preventDefault())}),onPointerDown:P(e.onPointerDown,p=>{const v=p.target;v.setPointerCapture(p.pointerId),p.preventDefault(),f.thumbs.has(v)?v.focus():n(p)}),onPointerMove:P(e.onPointerMove,p=>{p.target.hasPointerCapture(p.pointerId)&&r(p)}),onPointerUp:P(e.onPointerUp,p=>{const v=p.target;v.hasPointerCapture(p.pointerId)&&(v.releasePointerCapture(p.pointerId),a(p))})})}),Ft="SliderTrack",$t=i.forwardRef((e,t)=>{const{__scopeSlider:o,...n}=e,r=le(Ft,o);return u.jsx(A.span,{"data-disabled":r.disabled?"":void 0,"data-orientation":r.orientation,...n,ref:t})});$t.displayName=Ft;var he="SliderRange",kt=i.forwardRef((e,t)=>{const{__scopeSlider:o,...n}=e,r=le(he,o),a=Mt(he,o),s=i.useRef(null),c=T(t,s),l=r.values.length,d=r.values.map(v=>Ht(v,r.min,r.max)),f=l>1?Math.min(...d):0,p=100-Math.max(...d);return u.jsx(A.span,{"data-orientation":r.orientation,"data-disabled":r.disabled?"":void 0,...n,ref:c,style:{...e.style,[a.startEdge]:f+"%",[a.endEdge]:p+"%"}})});kt.displayName=he;var ge="SliderThumb",Vt=i.forwardRef((e,t)=>{const o=Er(e.__scopeSlider),[n,r]=i.useState(null),a=T(t,c=>r(c)),s=i.useMemo(()=>n?o().findIndex(c=>c.ref.current===n):-1,[o,n]);return u.jsx(Nr,{...e,ref:a,index:s})}),Nr=i.forwardRef((e,t)=>{const{__scopeSlider:o,index:n,name:r,...a}=e,s=le(ge,o),c=Mt(ge,o),[l,d]=i.useState(null),f=T(t,C=>d(C)),p=l?s.form||!!l.closest("form"):!0,v=Be(l),m=s.values[n],g=m===void 0?0:Ht(m,s.min,s.max),S=Mr(n,s.values.length),h=v?.[c.size],b=h?Fr(h,g,c.direction):0;return i.useEffect(()=>{if(l)return s.thumbs.add(l),()=>{s.thumbs.delete(l)}},[l,s.thumbs]),u.jsxs("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[c.startEdge]:`calc(${g}% + ${b}px)`},children:[u.jsx(me.ItemSlot,{scope:e.__scopeSlider,children:u.jsx(A.span,{role:"slider","aria-label":e["aria-label"]||S,"aria-valuemin":s.min,"aria-valuenow":m,"aria-valuemax":s.max,"aria-orientation":s.orientation,"data-orientation":s.orientation,"data-disabled":s.disabled?"":void 0,tabIndex:s.disabled?void 0:0,...a,ref:f,style:m===void 0?{display:"none"}:e.style,onFocus:P(e.onFocus,()=>{s.valueIndexToChangeRef.current=n})})}),p&&u.jsx(Bt,{name:r??(s.name?s.name+(s.values.length>1?"[]":""):void 0),form:s.form,value:m},n)]})});Vt.displayName=ge;var jr="RadioBubbleInput",Bt=i.forwardRef(({__scopeSlider:e,value:t,...o},n)=>{const r=i.useRef(null),a=T(r,n),s=Ve(t);return i.useEffect(()=>{const c=r.current;if(!c)return;const l=window.HTMLInputElement.prototype,f=Object.getOwnPropertyDescriptor(l,"value").set;if(s!==t&&f){const p=new Event("input",{bubbles:!0});f.call(c,t),c.dispatchEvent(p)}},[s,t]),u.jsx(A.input,{style:{display:"none"},...o,ref:a,defaultValue:t})});Bt.displayName=jr;function Or(e=[],t,o){const n=[...e];return n[o]=t,n.sort((r,a)=>r-a)}function Ht(e,t,o){const a=100/(o-t)*(e-t);return be(a,[0,100])}function Mr(e,t){return t>2?`Value ${e+1} of ${t}`:t===2?["Minimum","Maximum"][e]:void 0}function Lr(e,t){if(e.length===1)return 0;const o=e.map(r=>Math.abs(r-t)),n=Math.min(...o);return o.indexOf(n)}function Fr(e,t,o){const n=e/2,a=ye([0,50],[0,n]);return(n-a(t)*o)*o}function $r(e){return e.slice(0,-1).map((t,o)=>e[o+1]-t)}function kr(e,t){if(t>0){const o=$r(e);return Math.min(...o)>=t}return!0}function ye(e,t){return o=>{if(e[0]===e[1]||t[0]===t[1])return t[0];const n=(t[1]-t[0])/(e[1]-e[0]);return t[0]+n*(o-e[0])}}function Vr(e){return(String(e).split(".")[1]||"").length}function Br(e,t){const o=Math.pow(10,t);return Math.round(e*o)/o}var Yn=jt,Xn=$t,qn=kt,Zn=Vt,Hr=Symbol("radix.slottable");function zr(e){const t=({children:o})=>u.jsx(u.Fragment,{children:o});return t.displayName=`${e}.Slottable`,t.__radixId=Hr,t}var zt="AlertDialog",[Kr]=k(zt,[He]),$=He(),Kt=e=>{const{__scopeAlertDialog:t,...o}=e,n=$(t);return u.jsx(To,{...n,...o,modal:!0})};Kt.displayName=zt;var Wr="AlertDialogTrigger",Wt=i.forwardRef((e,t)=>{const{__scopeAlertDialog:o,...n}=e,r=$(o);return u.jsx(Do,{...r,...n,ref:t})});Wt.displayName=Wr;var Ur="AlertDialogPortal",Ut=e=>{const{__scopeAlertDialog:t,...o}=e,n=$(t);return u.jsx(Ro,{...n,...o})};Ut.displayName=Ur;var Gr="AlertDialogOverlay",Gt=i.forwardRef((e,t)=>{const{__scopeAlertDialog:o,...n}=e,r=$(o);return u.jsx(Co,{...r,...n,ref:t})});Gt.displayName=Gr;var K="AlertDialogContent",[Yr,Xr]=Kr(K),qr=zr("AlertDialogContent"),Yt=i.forwardRef((e,t)=>{const{__scopeAlertDialog:o,children:n,...r}=e,a=$(o),s=i.useRef(null),c=T(t,s),l=i.useRef(null);return u.jsx(Ao,{contentName:K,titleName:Xt,docsSlug:"alert-dialog",children:u.jsx(Yr,{scope:o,cancelRef:l,children:u.jsxs(yo,{role:"alertdialog",...a,...r,ref:c,onOpenAutoFocus:P(r.onOpenAutoFocus,d=>{d.preventDefault(),l.current?.focus({preventScroll:!0})}),onPointerDownOutside:d=>d.preventDefault(),onInteractOutside:d=>d.preventDefault(),children:[u.jsx(qr,{children:n}),u.jsx(Jr,{contentRef:s})]})})})});Yt.displayName=K;var Xt="AlertDialogTitle",qt=i.forwardRef((e,t)=>{const{__scopeAlertDialog:o,...n}=e,r=$(o);return u.jsx(Eo,{...r,...n,ref:t})});qt.displayName=Xt;var Zt="AlertDialogDescription",Jt=i.forwardRef((e,t)=>{const{__scopeAlertDialog:o,...n}=e,r=$(o);return u.jsx(_o,{...r,...n,ref:t})});Jt.displayName=Zt;var Zr="AlertDialogAction",Qt=i.forwardRef((e,t)=>{const{__scopeAlertDialog:o,...n}=e,r=$(o);return u.jsx(ze,{...r,...n,ref:t})});Qt.displayName=Zr;var eo="AlertDialogCancel",to=i.forwardRef((e,t)=>{const{__scopeAlertDialog:o,...n}=e,{cancelRef:r}=Xr(eo,o),a=$(o),s=T(t,r);return u.jsx(ze,{...a,...n,ref:s})});to.displayName=eo;var Jr=({contentRef:e})=>{const t=`\`${K}\` requires a description for the component to be accessible for screen reader users. + +You can add a description to the \`${K}\` by passing a \`${Zt}\` component as a child, which also benefits sighted users by adding visible context to the dialog. + +Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${K}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component. + +For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;return i.useEffect(()=>{document.getElementById(e.current?.getAttribute("aria-describedby"))||console.warn(t)},[t,e]),null},Jn=Kt,Qn=Wt,ea=Ut,ta=Gt,oa=Yt,ra=Qt,na=to,aa=qt,sa=Jt,Qr=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],en=Qr.reduce((e,t)=>{const o=Se(`Primitive.${t}`),n=i.forwardRef((r,a)=>{const{asChild:s,...c}=r,l=s?o:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),u.jsx(l,{...c,ref:a})});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{}),tn="Separator",Fe="horizontal",on=["horizontal","vertical"],oo=i.forwardRef((e,t)=>{const{decorative:o,orientation:n=Fe,...r}=e,a=rn(n)?n:Fe,c=o?{role:"none"}:{"aria-orientation":a==="vertical"?a:void 0,role:"separator"};return u.jsx(en.div,{"data-orientation":a,...c,...r,ref:t})});oo.displayName=tn;function rn(e){return on.includes(e)}var ia=oo;function nn(e){const t=an(e),o=i.forwardRef((n,r)=>{const{children:a,...s}=n,c=i.Children.toArray(a),l=c.find(cn);if(l){const d=l.props.children,f=c.map(p=>p===l?i.Children.count(d)>1?i.Children.only(null):i.isValidElement(d)?d.props.children:null:p);return u.jsx(t,{...s,ref:r,children:i.isValidElement(d)?i.cloneElement(d,void 0,f):null})}return u.jsx(t,{...s,ref:r,children:a})});return o.displayName=`${e}.Slot`,o}function an(e){const t=i.forwardRef((o,n)=>{const{children:r,...a}=o;if(i.isValidElement(r)){const s=un(r),c=ln(a,r.props);return r.type!==i.Fragment&&(c.ref=n?Io(n,s):s),i.cloneElement(r,c)}return i.Children.count(r)>1?i.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var sn=Symbol("radix.slottable");function cn(e){return i.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===sn}function ln(e,t){const o={...t};for(const n in t){const r=e[n],a=t[n];/^on[A-Z]/.test(n)?r&&a?o[n]=(...c)=>{const l=a(...c);return r(...c),l}:r&&(o[n]=r):n==="style"?o[n]={...r,...a}:n==="className"&&(o[n]=[r,a].filter(Boolean).join(" "))}return{...e,...o}}function un(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,o=t&&"isReactWarning"in t&&t.isReactWarning;return o?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,o=t&&"isReactWarning"in t&&t.isReactWarning,o?e.props.ref:e.props.ref||e.ref)}var ue="Popover",[ro]=k(ue,[Ke]),Q=Ke(),[dn,B]=ro(ue),no=e=>{const{__scopePopover:t,children:o,open:n,defaultOpen:r,onOpenChange:a,modal:s=!1}=e,c=Q(t),l=i.useRef(null),[d,f]=i.useState(!1),[p,v]=G({prop:n,defaultProp:r??!1,onChange:a,caller:ue});return u.jsx(ko,{...c,children:u.jsx(dn,{scope:t,contentId:re(),triggerRef:l,open:p,onOpenChange:v,onOpenToggle:i.useCallback(()=>v(m=>!m),[v]),hasCustomAnchor:d,onCustomAnchorAdd:i.useCallback(()=>f(!0),[]),onCustomAnchorRemove:i.useCallback(()=>f(!1),[]),modal:s,children:o})})};no.displayName=ue;var ao="PopoverAnchor",fn=i.forwardRef((e,t)=>{const{__scopePopover:o,...n}=e,r=B(ao,o),a=Q(o),{onCustomAnchorAdd:s,onCustomAnchorRemove:c}=r;return i.useEffect(()=>(s(),()=>c()),[s,c]),u.jsx(We,{...a,...n,ref:t})});fn.displayName=ao;var so="PopoverTrigger",io=i.forwardRef((e,t)=>{const{__scopePopover:o,...n}=e,r=B(so,o),a=Q(o),s=T(t,r.triggerRef),c=u.jsx(A.button,{type:"button","aria-haspopup":"dialog","aria-expanded":r.open,"aria-controls":r.contentId,"data-state":po(r.open),...n,ref:s,onClick:P(e.onClick,r.onOpenToggle)});return r.hasCustomAnchor?c:u.jsx(We,{asChild:!0,...a,children:c})});io.displayName=so;var Ee="PopoverPortal",[pn,vn]=ro(Ee,{forceMount:void 0}),co=e=>{const{__scopePopover:t,forceMount:o,children:n,container:r}=e,a=B(Ee,t);return u.jsx(pn,{scope:t,forceMount:o,children:u.jsx(V,{present:o||a.open,children:u.jsx(No,{asChild:!0,container:r,children:n})})})};co.displayName=Ee;var U="PopoverContent",lo=i.forwardRef((e,t)=>{const o=vn(U,e.__scopePopover),{forceMount:n=o.forceMount,...r}=e,a=B(U,e.__scopePopover);return u.jsx(V,{present:n||a.open,children:a.modal?u.jsx(hn,{...r,ref:t}):u.jsx(gn,{...r,ref:t})})});lo.displayName=U;var mn=nn("PopoverContent.RemoveScroll"),hn=i.forwardRef((e,t)=>{const o=B(U,e.__scopePopover),n=i.useRef(null),r=T(t,n),a=i.useRef(!1);return i.useEffect(()=>{const s=n.current;if(s)return jo(s)},[]),u.jsx(Oo,{as:mn,allowPinchZoom:!0,children:u.jsx(uo,{...e,ref:r,trapFocus:o.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:P(e.onCloseAutoFocus,s=>{s.preventDefault(),a.current||o.triggerRef.current?.focus()}),onPointerDownOutside:P(e.onPointerDownOutside,s=>{const c=s.detail.originalEvent,l=c.button===0&&c.ctrlKey===!0,d=c.button===2||l;a.current=d},{checkForDefaultPrevented:!1}),onFocusOutside:P(e.onFocusOutside,s=>s.preventDefault(),{checkForDefaultPrevented:!1})})})}),gn=i.forwardRef((e,t)=>{const o=B(U,e.__scopePopover),n=i.useRef(!1),r=i.useRef(!1);return u.jsx(uo,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:a=>{e.onCloseAutoFocus?.(a),a.defaultPrevented||(n.current||o.triggerRef.current?.focus(),a.preventDefault()),n.current=!1,r.current=!1},onInteractOutside:a=>{e.onInteractOutside?.(a),a.defaultPrevented||(n.current=!0,a.detail.originalEvent.type==="pointerdown"&&(r.current=!0));const s=a.target;o.triggerRef.current?.contains(s)&&a.preventDefault(),a.detail.originalEvent.type==="focusin"&&r.current&&a.preventDefault()}})}),uo=i.forwardRef((e,t)=>{const{__scopePopover:o,trapFocus:n,onOpenAutoFocus:r,onCloseAutoFocus:a,disableOutsidePointerEvents:s,onEscapeKeyDown:c,onPointerDownOutside:l,onFocusOutside:d,onInteractOutside:f,...p}=e,v=B(U,o),m=Q(o);return Mo(),u.jsx(Lo,{asChild:!0,loop:!0,trapped:n,onMountAutoFocus:r,onUnmountAutoFocus:a,children:u.jsx(Fo,{asChild:!0,disableOutsidePointerEvents:s,onInteractOutside:f,onEscapeKeyDown:c,onPointerDownOutside:l,onFocusOutside:d,onDismiss:()=>v.onOpenChange(!1),children:u.jsx($o,{"data-state":po(v.open),role:"dialog",id:v.contentId,...m,...p,ref:t,style:{...p.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),fo="PopoverClose",bn=i.forwardRef((e,t)=>{const{__scopePopover:o,...n}=e,r=B(fo,o);return u.jsx(A.button,{type:"button",...n,ref:t,onClick:P(e.onClick,()=>r.onOpenChange(!1))})});bn.displayName=fo;var Sn="PopoverArrow",xn=i.forwardRef((e,t)=>{const{__scopePopover:o,...n}=e,r=Q(o);return u.jsx(Vo,{...r,...n,ref:t})});xn.displayName=Sn;function po(e){return e?"open":"closed"}var ca=no,la=io,ua=co,da=lo,de="Collapsible",[wn]=k(de),[Pn,_e]=wn(de),vo=i.forwardRef((e,t)=>{const{__scopeCollapsible:o,open:n,defaultOpen:r,disabled:a,onOpenChange:s,...c}=e,[l,d]=G({prop:n,defaultProp:r??!1,onChange:s,caller:de});return u.jsx(Pn,{scope:o,disabled:a,contentId:re(),open:l,onOpenToggle:i.useCallback(()=>d(f=>!f),[d]),children:u.jsx(A.div,{"data-state":De(l),"data-disabled":a?"":void 0,...c,ref:t})})});vo.displayName=de;var mo="CollapsibleTrigger",Cn=i.forwardRef((e,t)=>{const{__scopeCollapsible:o,...n}=e,r=_e(mo,o);return u.jsx(A.button,{type:"button","aria-controls":r.contentId,"aria-expanded":r.open||!1,"data-state":De(r.open),"data-disabled":r.disabled?"":void 0,disabled:r.disabled,...n,ref:t,onClick:P(e.onClick,r.onOpenToggle)})});Cn.displayName=mo;var Te="CollapsibleContent",Rn=i.forwardRef((e,t)=>{const{forceMount:o,...n}=e,r=_e(Te,e.__scopeCollapsible);return u.jsx(V,{present:o||r.open,children:({present:a})=>u.jsx(An,{...n,ref:t,present:a})})});Rn.displayName=Te;var An=i.forwardRef((e,t)=>{const{__scopeCollapsible:o,present:n,children:r,...a}=e,s=_e(Te,o),[c,l]=i.useState(n),d=i.useRef(null),f=T(t,d),p=i.useRef(0),v=p.current,m=i.useRef(0),g=m.current,S=s.open||c,h=i.useRef(S),b=i.useRef(void 0);return i.useEffect(()=>{const C=requestAnimationFrame(()=>h.current=!1);return()=>cancelAnimationFrame(C)},[]),Z(()=>{const C=d.current;if(C){b.current=b.current||{transitionDuration:C.style.transitionDuration,animationName:C.style.animationName},C.style.transitionDuration="0s",C.style.animationName="none";const x=C.getBoundingClientRect();p.current=x.height,m.current=x.width,h.current||(C.style.transitionDuration=b.current.transitionDuration,C.style.animationName=b.current.animationName),l(n)}},[s.open,n]),u.jsx(A.div,{"data-state":De(s.open),"data-disabled":s.disabled?"":void 0,id:s.contentId,hidden:!S,...a,ref:f,style:{"--radix-collapsible-content-height":v?`${v}px`:void 0,"--radix-collapsible-content-width":g?`${g}px`:void 0,...e.style},children:S&&r})});function De(e){return e?"open":"closed"}var fa=vo;function yn(e,t=[]){let o=[];function n(a,s){const c=i.createContext(s);c.displayName=a+"Context";const l=o.length;o=[...o,s];const d=p=>{const{scope:v,children:m,...g}=p,S=v?.[e]?.[l]||c,h=i.useMemo(()=>g,Object.values(g));return u.jsx(S.Provider,{value:h,children:m})};d.displayName=a+"Provider";function f(p,v){const m=v?.[e]?.[l]||c,g=i.useContext(m);if(g)return g;if(s!==void 0)return s;throw new Error(`\`${p}\` must be used within \`${a}\``)}return[d,f]}const r=()=>{const a=o.map(s=>i.createContext(s));return function(c){const l=c?.[e]||a;return i.useMemo(()=>({[`__scope${e}`]:{...c,[e]:l}}),[c,l])}};return r.scopeName=e,[n,En(r,...t)]}function En(...e){const t=e[0];if(e.length===1)return t;const o=()=>{const n=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(a){const s=n.reduce((c,{useScope:l,scopeName:d})=>{const p=l(a)[`__scope${d}`];return{...c,...p}},{});return i.useMemo(()=>({[`__scope${t.scopeName}`]:s}),[s])}};return o.scopeName=t.scopeName,o}var _n=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Ie=_n.reduce((e,t)=>{const o=Se(`Primitive.${t}`),n=i.forwardRef((r,a)=>{const{asChild:s,...c}=r,l=s?o:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),u.jsx(l,{...c,ref:a})});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{}),Tn=Po();function Dn(){return Tn.useSyncExternalStore(In,()=>!0,()=>!1)}function In(){return()=>{}}var Ne="Avatar",[Nn]=yn(Ne),[jn,ho]=Nn(Ne),go=i.forwardRef((e,t)=>{const{__scopeAvatar:o,...n}=e,[r,a]=i.useState("idle");return u.jsx(jn,{scope:o,imageLoadingStatus:r,onImageLoadingStatusChange:a,children:u.jsx(Ie.span,{...n,ref:t})})});go.displayName=Ne;var bo="AvatarImage",So=i.forwardRef((e,t)=>{const{__scopeAvatar:o,src:n,onLoadingStatusChange:r=()=>{},...a}=e,s=ho(bo,o),c=On(n,a),l=F(d=>{r(d),s.onImageLoadingStatusChange(d)});return Z(()=>{c!=="idle"&&l(c)},[c,l]),c==="loaded"?u.jsx(Ie.img,{...a,ref:t,src:n}):null});So.displayName=bo;var xo="AvatarFallback",wo=i.forwardRef((e,t)=>{const{__scopeAvatar:o,delayMs:n,...r}=e,a=ho(xo,o),[s,c]=i.useState(n===void 0);return i.useEffect(()=>{if(n!==void 0){const l=window.setTimeout(()=>c(!0),n);return()=>window.clearTimeout(l)}},[n]),s&&a.imageLoadingStatus!=="loaded"?u.jsx(Ie.span,{...r,ref:t}):null});wo.displayName=xo;function $e(e,t){return e?t?(e.src!==t&&(e.src=t),e.complete&&e.naturalWidth>0?"loaded":"loading"):"error":"idle"}function On(e,{referrerPolicy:t,crossOrigin:o}){const n=Dn(),r=i.useRef(null),a=n?(r.current||(r.current=new window.Image),r.current):null,[s,c]=i.useState(()=>$e(a,e));return Z(()=>{c($e(a,e))},[a,e]),Z(()=>{const l=p=>()=>{c(p)};if(!a)return;const d=l("loaded"),f=l("error");return a.addEventListener("load",d),a.addEventListener("error",f),t&&(a.referrerPolicy=t),typeof o=="string"&&(a.crossOrigin=o),()=>{a.removeEventListener("load",d),a.removeEventListener("error",f)}},[a,o,t]),s}var pa=go,va=So,ma=wo;export{ra as A,Vn as C,sa as D,ma as F,Wn as I,$n as L,ta as O,ea as P,Fn as R,rr as S,kn as T,Hn as V,Bn as a,zn as b,lr as c,Kn as d,Un as e,Gn as f,Yn as g,Xn as h,qn as i,Zn as j,oa as k,aa as l,na as m,Jn as n,Qn as o,ia as p,ua as q,da as r,ca as s,la as t,fa as u,Cn as v,Rn as w,pa as x,va as y}; diff --git a/webui/dist/assets/radix-extra-Cw1azsjZ.js b/webui/dist/assets/radix-extra-Cw1azsjZ.js deleted file mode 100644 index d86d108d..00000000 --- a/webui/dist/assets/radix-extra-Cw1azsjZ.js +++ /dev/null @@ -1,12 +0,0 @@ -import{r as a,j as l,d as nr}from"./router-CWhjJi2n.js";import{c as G,a as Ge,u as ne,P as _,b as g,d as A,e as pe,f as Q,g as k,h as B,i as ue,j as Ue,k as He,l as _t,m as Et,n as yt,O as rr,o as ar,W as sr,C as ir,T as cr,D as lr,p as Mt,R as ur,q as dr,r as We,s as At,t as _e,v as Tt,w as It,x as Nt,F as Dt,y as Ot,z as jt,A as ze,B as Ye,E as Lt,G as fr}from"./radix-core-BlBHu_Lw.js";var Fe="rovingFocusGroup.onEntryFocus",pr={bubbles:!1,cancelable:!0},ve="RovingFocusGroup",[$e,Ft,vr]=Ge(ve),[mr,Ee]=G(ve,[vr]),[hr,gr]=mr(ve),$t=a.forwardRef((e,t)=>l.jsx($e.Provider,{scope:e.__scopeRovingFocusGroup,children:l.jsx($e.Slot,{scope:e.__scopeRovingFocusGroup,children:l.jsx(xr,{...e,ref:t})})}));$t.displayName=ve;var xr=a.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:o,orientation:n,loop:r=!1,dir:s,currentTabStopId:i,defaultCurrentTabStopId:c,onCurrentTabStopIdChange:u,onEntryFocus:p,preventScrollOnEntryFocus:f=!1,...d}=e,v=a.useRef(null),m=A(t,v),h=pe(s),[C,x]=Q({prop:i,defaultProp:c??null,onChange:u,caller:ve}),[S,R]=a.useState(!1),w=k(p),P=Ft(o),I=a.useRef(!1),[j,N]=a.useState(0);return a.useEffect(()=>{const T=v.current;if(T)return T.addEventListener(Fe,w),()=>T.removeEventListener(Fe,w)},[w]),l.jsx(hr,{scope:o,orientation:n,dir:h,loop:r,currentTabStopId:C,onItemFocus:a.useCallback(T=>x(T),[x]),onItemShiftTab:a.useCallback(()=>R(!0),[]),onFocusableItemAdd:a.useCallback(()=>N(T=>T+1),[]),onFocusableItemRemove:a.useCallback(()=>N(T=>T-1),[]),children:l.jsx(_.div,{tabIndex:S||j===0?-1:0,"data-orientation":n,...d,ref:m,style:{outline:"none",...e.style},onMouseDown:g(e.onMouseDown,()=>{I.current=!0}),onFocus:g(e.onFocus,T=>{const E=!I.current;if(T.target===T.currentTarget&&E&&!S){const M=new CustomEvent(Fe,pr);if(T.currentTarget.dispatchEvent(M),!M.defaultPrevented){const y=P().filter(O=>O.focusable),L=y.find(O=>O.active),W=y.find(O=>O.id===C),Z=[L,W,...y].filter(Boolean).map(O=>O.ref.current);Bt(Z,f)}}I.current=!1}),onBlur:g(e.onBlur,()=>R(!1))})})}),kt="RovingFocusGroupItem",Vt=a.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:o,focusable:n=!0,active:r=!1,tabStopId:s,children:i,...c}=e,u=ne(),p=s||u,f=gr(kt,o),d=f.currentTabStopId===p,v=Ft(o),{onFocusableItemAdd:m,onFocusableItemRemove:h,currentTabStopId:C}=f;return a.useEffect(()=>{if(n)return m(),()=>h()},[n,m,h]),l.jsx($e.ItemSlot,{scope:o,id:p,focusable:n,active:r,children:l.jsx(_.span,{tabIndex:d?0:-1,"data-orientation":f.orientation,...c,ref:t,onMouseDown:g(e.onMouseDown,x=>{n?f.onItemFocus(p):x.preventDefault()}),onFocus:g(e.onFocus,()=>f.onItemFocus(p)),onKeyDown:g(e.onKeyDown,x=>{if(x.key==="Tab"&&x.shiftKey){f.onItemShiftTab();return}if(x.target!==x.currentTarget)return;const S=br(x,f.orientation,f.dir);if(S!==void 0){if(x.metaKey||x.ctrlKey||x.altKey||x.shiftKey)return;x.preventDefault();let w=v().filter(P=>P.focusable).map(P=>P.ref.current);if(S==="last")w.reverse();else if(S==="prev"||S==="next"){S==="prev"&&w.reverse();const P=w.indexOf(x.currentTarget);w=f.loop?wr(w,P+1):w.slice(P+1)}setTimeout(()=>Bt(w))}}),children:typeof i=="function"?i({isCurrentTabStop:d,hasTabStop:C!=null}):i})})});Vt.displayName=kt;var Sr={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function Cr(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function br(e,t,o){const n=Cr(e.key,o);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(n))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(n)))return Sr[n]}function Bt(e,t=!1){const o=document.activeElement;for(const n of e)if(n===o||(n.focus({preventScroll:t}),document.activeElement!==o))return}function wr(e,t){return e.map((o,n)=>e[(t+n)%e.length])}var Kt=$t,Gt=Vt,ye="Tabs",[Pr]=G(ye,[Ee]),Ut=Ee(),[Rr,Xe]=Pr(ye),Ht=a.forwardRef((e,t)=>{const{__scopeTabs:o,value:n,onValueChange:r,defaultValue:s,orientation:i="horizontal",dir:c,activationMode:u="automatic",...p}=e,f=pe(c),[d,v]=Q({prop:n,onChange:r,defaultProp:s??"",caller:ye});return l.jsx(Rr,{scope:o,baseId:ne(),value:d,onValueChange:v,orientation:i,dir:f,activationMode:u,children:l.jsx(_.div,{dir:f,"data-orientation":i,...p,ref:t})})});Ht.displayName=ye;var Wt="TabsList",zt=a.forwardRef((e,t)=>{const{__scopeTabs:o,loop:n=!0,...r}=e,s=Xe(Wt,o),i=Ut(o);return l.jsx(Kt,{asChild:!0,...i,orientation:s.orientation,dir:s.dir,loop:n,children:l.jsx(_.div,{role:"tablist","aria-orientation":s.orientation,...r,ref:t})})});zt.displayName=Wt;var Yt="TabsTrigger",Xt=a.forwardRef((e,t)=>{const{__scopeTabs:o,value:n,disabled:r=!1,...s}=e,i=Xe(Yt,o),c=Ut(o),u=Jt(i.baseId,n),p=Qt(i.baseId,n),f=n===i.value;return l.jsx(Gt,{asChild:!0,...c,focusable:!r,active:f,children:l.jsx(_.button,{type:"button",role:"tab","aria-selected":f,"aria-controls":p,"data-state":f?"active":"inactive","data-disabled":r?"":void 0,disabled:r,id:u,...s,ref:t,onMouseDown:g(e.onMouseDown,d=>{!r&&d.button===0&&d.ctrlKey===!1?i.onValueChange(n):d.preventDefault()}),onKeyDown:g(e.onKeyDown,d=>{[" ","Enter"].includes(d.key)&&i.onValueChange(n)}),onFocus:g(e.onFocus,()=>{const d=i.activationMode!=="manual";!f&&!r&&d&&i.onValueChange(n)})})})});Xt.displayName=Yt;var qt="TabsContent",Zt=a.forwardRef((e,t)=>{const{__scopeTabs:o,value:n,forceMount:r,children:s,...i}=e,c=Xe(qt,o),u=Jt(c.baseId,n),p=Qt(c.baseId,n),f=n===c.value,d=a.useRef(f);return a.useEffect(()=>{const v=requestAnimationFrame(()=>d.current=!1);return()=>cancelAnimationFrame(v)},[]),l.jsx(B,{present:r||f,children:({present:v})=>l.jsx(_.div,{"data-state":f?"active":"inactive","data-orientation":c.orientation,role:"tabpanel","aria-labelledby":u,hidden:!v,id:p,tabIndex:0,...i,ref:t,style:{...e.style,animationDuration:d.current?"0s":void 0},children:v&&s})})});Zt.displayName=qt;function Jt(e,t){return`${e}-trigger-${t}`}function Qt(e,t){return`${e}-content-${t}`}var xi=Ht,Si=zt,Ci=Xt,bi=Zt;function _r(e,t){return a.useReducer((o,n)=>t[o][n]??o,e)}var qe="ScrollArea",[eo]=G(qe),[Er,K]=eo(qe),to=a.forwardRef((e,t)=>{const{__scopeScrollArea:o,type:n="hover",dir:r,scrollHideDelay:s=600,...i}=e,[c,u]=a.useState(null),[p,f]=a.useState(null),[d,v]=a.useState(null),[m,h]=a.useState(null),[C,x]=a.useState(null),[S,R]=a.useState(0),[w,P]=a.useState(0),[I,j]=a.useState(!1),[N,T]=a.useState(!1),E=A(t,y=>u(y)),M=pe(r);return l.jsx(Er,{scope:o,type:n,dir:M,scrollHideDelay:s,scrollArea:c,viewport:p,onViewportChange:f,content:d,onContentChange:v,scrollbarX:m,onScrollbarXChange:h,scrollbarXEnabled:I,onScrollbarXEnabledChange:j,scrollbarY:C,onScrollbarYChange:x,scrollbarYEnabled:N,onScrollbarYEnabledChange:T,onCornerWidthChange:R,onCornerHeightChange:P,children:l.jsx(_.div,{dir:M,...i,ref:E,style:{position:"relative","--radix-scroll-area-corner-width":S+"px","--radix-scroll-area-corner-height":w+"px",...e.style}})})});to.displayName=qe;var oo="ScrollAreaViewport",no=a.forwardRef((e,t)=>{const{__scopeScrollArea:o,children:n,nonce:r,...s}=e,i=K(oo,o),c=a.useRef(null),u=A(t,c,i.onViewportChange);return l.jsxs(l.Fragment,{children:[l.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:r}),l.jsx(_.div,{"data-radix-scroll-area-viewport":"",...s,ref:u,style:{overflowX:i.scrollbarXEnabled?"scroll":"hidden",overflowY:i.scrollbarYEnabled?"scroll":"hidden",...e.style},children:l.jsx("div",{ref:i.onContentChange,style:{minWidth:"100%",display:"table"},children:n})})]})});no.displayName=oo;var U="ScrollAreaScrollbar",yr=a.forwardRef((e,t)=>{const{forceMount:o,...n}=e,r=K(U,e.__scopeScrollArea),{onScrollbarXEnabledChange:s,onScrollbarYEnabledChange:i}=r,c=e.orientation==="horizontal";return a.useEffect(()=>(c?s(!0):i(!0),()=>{c?s(!1):i(!1)}),[c,s,i]),r.type==="hover"?l.jsx(Mr,{...n,ref:t,forceMount:o}):r.type==="scroll"?l.jsx(Ar,{...n,ref:t,forceMount:o}):r.type==="auto"?l.jsx(ro,{...n,ref:t,forceMount:o}):r.type==="always"?l.jsx(Ze,{...n,ref:t}):null});yr.displayName=U;var Mr=a.forwardRef((e,t)=>{const{forceMount:o,...n}=e,r=K(U,e.__scopeScrollArea),[s,i]=a.useState(!1);return a.useEffect(()=>{const c=r.scrollArea;let u=0;if(c){const p=()=>{window.clearTimeout(u),i(!0)},f=()=>{u=window.setTimeout(()=>i(!1),r.scrollHideDelay)};return c.addEventListener("pointerenter",p),c.addEventListener("pointerleave",f),()=>{window.clearTimeout(u),c.removeEventListener("pointerenter",p),c.removeEventListener("pointerleave",f)}}},[r.scrollArea,r.scrollHideDelay]),l.jsx(B,{present:o||s,children:l.jsx(ro,{"data-state":s?"visible":"hidden",...n,ref:t})})}),Ar=a.forwardRef((e,t)=>{const{forceMount:o,...n}=e,r=K(U,e.__scopeScrollArea),s=e.orientation==="horizontal",i=Ae(()=>u("SCROLL_END"),100),[c,u]=_r("hidden",{hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}});return a.useEffect(()=>{if(c==="idle"){const p=window.setTimeout(()=>u("HIDE"),r.scrollHideDelay);return()=>window.clearTimeout(p)}},[c,r.scrollHideDelay,u]),a.useEffect(()=>{const p=r.viewport,f=s?"scrollLeft":"scrollTop";if(p){let d=p[f];const v=()=>{const m=p[f];d!==m&&(u("SCROLL"),i()),d=m};return p.addEventListener("scroll",v),()=>p.removeEventListener("scroll",v)}},[r.viewport,s,u,i]),l.jsx(B,{present:o||c!=="hidden",children:l.jsx(Ze,{"data-state":c==="hidden"?"hidden":"visible",...n,ref:t,onPointerEnter:g(e.onPointerEnter,()=>u("POINTER_ENTER")),onPointerLeave:g(e.onPointerLeave,()=>u("POINTER_LEAVE"))})})}),ro=a.forwardRef((e,t)=>{const o=K(U,e.__scopeScrollArea),{forceMount:n,...r}=e,[s,i]=a.useState(!1),c=e.orientation==="horizontal",u=Ae(()=>{if(o.viewport){const p=o.viewport.offsetWidth{const{orientation:o="vertical",...n}=e,r=K(U,e.__scopeScrollArea),s=a.useRef(null),i=a.useRef(0),[c,u]=a.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),p=co(c.viewport,c.content),f={...n,sizes:c,onSizesChange:u,hasThumb:p>0&&p<1,onThumbChange:v=>s.current=v,onThumbPointerUp:()=>i.current=0,onThumbPointerDown:v=>i.current=v};function d(v,m){return Lr(v,i.current,c,m)}return o==="horizontal"?l.jsx(Tr,{...f,ref:t,onThumbPositionChange:()=>{if(r.viewport&&s.current){const v=r.viewport.scrollLeft,m=St(v,c,r.dir);s.current.style.transform=`translate3d(${m}px, 0, 0)`}},onWheelScroll:v=>{r.viewport&&(r.viewport.scrollLeft=v)},onDragScroll:v=>{r.viewport&&(r.viewport.scrollLeft=d(v,r.dir))}}):o==="vertical"?l.jsx(Ir,{...f,ref:t,onThumbPositionChange:()=>{if(r.viewport&&s.current){const v=r.viewport.scrollTop,m=St(v,c);s.current.style.transform=`translate3d(0, ${m}px, 0)`}},onWheelScroll:v=>{r.viewport&&(r.viewport.scrollTop=v)},onDragScroll:v=>{r.viewport&&(r.viewport.scrollTop=d(v))}}):null}),Tr=a.forwardRef((e,t)=>{const{sizes:o,onSizesChange:n,...r}=e,s=K(U,e.__scopeScrollArea),[i,c]=a.useState(),u=a.useRef(null),p=A(t,u,s.onScrollbarXChange);return a.useEffect(()=>{u.current&&c(getComputedStyle(u.current))},[u]),l.jsx(so,{"data-orientation":"horizontal",...r,ref:p,sizes:o,style:{bottom:0,left:s.dir==="rtl"?"var(--radix-scroll-area-corner-width)":0,right:s.dir==="ltr"?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":Me(o)+"px",...e.style},onThumbPointerDown:f=>e.onThumbPointerDown(f.x),onDragScroll:f=>e.onDragScroll(f.x),onWheelScroll:(f,d)=>{if(s.viewport){const v=s.viewport.scrollLeft+f.deltaX;e.onWheelScroll(v),uo(v,d)&&f.preventDefault()}},onResize:()=>{u.current&&s.viewport&&i&&n({content:s.viewport.scrollWidth,viewport:s.viewport.offsetWidth,scrollbar:{size:u.current.clientWidth,paddingStart:be(i.paddingLeft),paddingEnd:be(i.paddingRight)}})}})}),Ir=a.forwardRef((e,t)=>{const{sizes:o,onSizesChange:n,...r}=e,s=K(U,e.__scopeScrollArea),[i,c]=a.useState(),u=a.useRef(null),p=A(t,u,s.onScrollbarYChange);return a.useEffect(()=>{u.current&&c(getComputedStyle(u.current))},[u]),l.jsx(so,{"data-orientation":"vertical",...r,ref:p,sizes:o,style:{top:0,right:s.dir==="ltr"?0:void 0,left:s.dir==="rtl"?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":Me(o)+"px",...e.style},onThumbPointerDown:f=>e.onThumbPointerDown(f.y),onDragScroll:f=>e.onDragScroll(f.y),onWheelScroll:(f,d)=>{if(s.viewport){const v=s.viewport.scrollTop+f.deltaY;e.onWheelScroll(v),uo(v,d)&&f.preventDefault()}},onResize:()=>{u.current&&s.viewport&&i&&n({content:s.viewport.scrollHeight,viewport:s.viewport.offsetHeight,scrollbar:{size:u.current.clientHeight,paddingStart:be(i.paddingTop),paddingEnd:be(i.paddingBottom)}})}})}),[Nr,ao]=eo(U),so=a.forwardRef((e,t)=>{const{__scopeScrollArea:o,sizes:n,hasThumb:r,onThumbChange:s,onThumbPointerUp:i,onThumbPointerDown:c,onThumbPositionChange:u,onDragScroll:p,onWheelScroll:f,onResize:d,...v}=e,m=K(U,o),[h,C]=a.useState(null),x=A(t,E=>C(E)),S=a.useRef(null),R=a.useRef(""),w=m.viewport,P=n.content-n.viewport,I=k(f),j=k(u),N=Ae(d,10);function T(E){if(S.current){const M=E.clientX-S.current.left,y=E.clientY-S.current.top;p({x:M,y})}}return a.useEffect(()=>{const E=M=>{const y=M.target;h?.contains(y)&&I(M,P)};return document.addEventListener("wheel",E,{passive:!1}),()=>document.removeEventListener("wheel",E,{passive:!1})},[w,h,P,I]),a.useEffect(j,[n,j]),re(h,N),re(m.content,N),l.jsx(Nr,{scope:o,scrollbar:h,hasThumb:r,onThumbChange:k(s),onThumbPointerUp:k(i),onThumbPositionChange:j,onThumbPointerDown:k(c),children:l.jsx(_.div,{...v,ref:x,style:{position:"absolute",...v.style},onPointerDown:g(e.onPointerDown,E=>{E.button===0&&(E.target.setPointerCapture(E.pointerId),S.current=h.getBoundingClientRect(),R.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",m.viewport&&(m.viewport.style.scrollBehavior="auto"),T(E))}),onPointerMove:g(e.onPointerMove,T),onPointerUp:g(e.onPointerUp,E=>{const M=E.target;M.hasPointerCapture(E.pointerId)&&M.releasePointerCapture(E.pointerId),document.body.style.webkitUserSelect=R.current,m.viewport&&(m.viewport.style.scrollBehavior=""),S.current=null})})})}),Ce="ScrollAreaThumb",Dr=a.forwardRef((e,t)=>{const{forceMount:o,...n}=e,r=ao(Ce,e.__scopeScrollArea);return l.jsx(B,{present:o||r.hasThumb,children:l.jsx(Or,{ref:t,...n})})}),Or=a.forwardRef((e,t)=>{const{__scopeScrollArea:o,style:n,...r}=e,s=K(Ce,o),i=ao(Ce,o),{onThumbPositionChange:c}=i,u=A(t,d=>i.onThumbChange(d)),p=a.useRef(void 0),f=Ae(()=>{p.current&&(p.current(),p.current=void 0)},100);return a.useEffect(()=>{const d=s.viewport;if(d){const v=()=>{if(f(),!p.current){const m=Fr(d,c);p.current=m,c()}};return c(),d.addEventListener("scroll",v),()=>d.removeEventListener("scroll",v)}},[s.viewport,f,c]),l.jsx(_.div,{"data-state":i.hasThumb?"visible":"hidden",...r,ref:u,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...n},onPointerDownCapture:g(e.onPointerDownCapture,d=>{const m=d.target.getBoundingClientRect(),h=d.clientX-m.left,C=d.clientY-m.top;i.onThumbPointerDown({x:h,y:C})}),onPointerUp:g(e.onPointerUp,i.onThumbPointerUp)})});Dr.displayName=Ce;var Je="ScrollAreaCorner",io=a.forwardRef((e,t)=>{const o=K(Je,e.__scopeScrollArea),n=!!(o.scrollbarX&&o.scrollbarY);return o.type!=="scroll"&&n?l.jsx(jr,{...e,ref:t}):null});io.displayName=Je;var jr=a.forwardRef((e,t)=>{const{__scopeScrollArea:o,...n}=e,r=K(Je,o),[s,i]=a.useState(0),[c,u]=a.useState(0),p=!!(s&&c);return re(r.scrollbarX,()=>{const f=r.scrollbarX?.offsetHeight||0;r.onCornerHeightChange(f),u(f)}),re(r.scrollbarY,()=>{const f=r.scrollbarY?.offsetWidth||0;r.onCornerWidthChange(f),i(f)}),p?l.jsx(_.div,{...n,ref:t,style:{width:s,height:c,position:"absolute",right:r.dir==="ltr"?0:void 0,left:r.dir==="rtl"?0:void 0,bottom:0,...e.style}}):null});function be(e){return e?parseInt(e,10):0}function co(e,t){const o=e/t;return isNaN(o)?0:o}function Me(e){const t=co(e.viewport,e.content),o=e.scrollbar.paddingStart+e.scrollbar.paddingEnd,n=(e.scrollbar.size-o)*t;return Math.max(n,18)}function Lr(e,t,o,n="ltr"){const r=Me(o),s=r/2,i=t||s,c=r-i,u=o.scrollbar.paddingStart+i,p=o.scrollbar.size-o.scrollbar.paddingEnd-c,f=o.content-o.viewport,d=n==="ltr"?[0,f]:[f*-1,0];return lo([u,p],d)(e)}function St(e,t,o="ltr"){const n=Me(t),r=t.scrollbar.paddingStart+t.scrollbar.paddingEnd,s=t.scrollbar.size-r,i=t.content-t.viewport,c=s-n,u=o==="ltr"?[0,i]:[i*-1,0],p=Ue(e,u);return lo([0,i],[0,c])(p)}function lo(e,t){return o=>{if(e[0]===e[1]||t[0]===t[1])return t[0];const n=(t[1]-t[0])/(e[1]-e[0]);return t[0]+n*(o-e[0])}}function uo(e,t){return e>0&&e{})=>{let o={left:e.scrollLeft,top:e.scrollTop},n=0;return(function r(){const s={left:e.scrollLeft,top:e.scrollTop},i=o.left!==s.left,c=o.top!==s.top;(i||c)&&t(),o=s,n=window.requestAnimationFrame(r)})(),()=>window.cancelAnimationFrame(n)};function Ae(e,t){const o=k(e),n=a.useRef(0);return a.useEffect(()=>()=>window.clearTimeout(n.current),[]),a.useCallback(()=>{window.clearTimeout(n.current),n.current=window.setTimeout(o,t)},[o,t])}function re(e,t){const o=k(t);ue(()=>{let n=0;if(e){const r=new ResizeObserver(()=>{cancelAnimationFrame(n),n=window.requestAnimationFrame(o)});return r.observe(e),()=>{window.cancelAnimationFrame(n),r.unobserve(e)}}},[e,o])}var wi=to,Pi=no,Ri=io;function $r(e,t=[]){let o=[];function n(s,i){const c=a.createContext(i);c.displayName=s+"Context";const u=o.length;o=[...o,i];const p=d=>{const{scope:v,children:m,...h}=d,C=v?.[e]?.[u]||c,x=a.useMemo(()=>h,Object.values(h));return l.jsx(C.Provider,{value:x,children:m})};p.displayName=s+"Provider";function f(d,v){const m=v?.[e]?.[u]||c,h=a.useContext(m);if(h)return h;if(i!==void 0)return i;throw new Error(`\`${d}\` must be used within \`${s}\``)}return[p,f]}const r=()=>{const s=o.map(i=>a.createContext(i));return function(c){const u=c?.[e]||s;return a.useMemo(()=>({[`__scope${e}`]:{...c,[e]:u}}),[c,u])}};return r.scopeName=e,[n,kr(r,...t)]}function kr(...e){const t=e[0];if(e.length===1)return t;const o=()=>{const n=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(s){const i=n.reduce((c,{useScope:u,scopeName:p})=>{const d=u(s)[`__scope${p}`];return{...c,...d}},{});return a.useMemo(()=>({[`__scope${t.scopeName}`]:i}),[i])}};return o.scopeName=t.scopeName,o}var Vr=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],fo=Vr.reduce((e,t)=>{const o=He(`Primitive.${t}`),n=a.forwardRef((r,s)=>{const{asChild:i,...c}=r,u=i?o:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),l.jsx(u,{...c,ref:s})});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{}),Qe="Progress",et=100,[Br]=$r(Qe),[Kr,Gr]=Br(Qe),po=a.forwardRef((e,t)=>{const{__scopeProgress:o,value:n=null,max:r,getValueLabel:s=Ur,...i}=e;(r||r===0)&&!Ct(r)&&console.error(Hr(`${r}`,"Progress"));const c=Ct(r)?r:et;n!==null&&!bt(n,c)&&console.error(Wr(`${n}`,"Progress"));const u=bt(n,c)?n:null,p=we(u)?s(u,c):void 0;return l.jsx(Kr,{scope:o,value:u,max:c,children:l.jsx(fo.div,{"aria-valuemax":c,"aria-valuemin":0,"aria-valuenow":we(u)?u:void 0,"aria-valuetext":p,role:"progressbar","data-state":ho(u,c),"data-value":u??void 0,"data-max":c,...i,ref:t})})});po.displayName=Qe;var vo="ProgressIndicator",mo=a.forwardRef((e,t)=>{const{__scopeProgress:o,...n}=e,r=Gr(vo,o);return l.jsx(fo.div,{"data-state":ho(r.value,r.max),"data-value":r.value??void 0,"data-max":r.max,...n,ref:t})});mo.displayName=vo;function Ur(e,t){return`${Math.round(e/t*100)}%`}function ho(e,t){return e==null?"indeterminate":e===t?"complete":"loading"}function we(e){return typeof e=="number"}function Ct(e){return we(e)&&!isNaN(e)&&e>0}function bt(e,t){return we(e)&&!isNaN(e)&&e<=t&&e>=0}function Hr(e,t){return`Invalid prop \`max\` of value \`${e}\` supplied to \`${t}\`. Only numbers greater than 0 are valid max values. Defaulting to \`${et}\`.`}function Wr(e,t){return`Invalid prop \`value\` of value \`${e}\` supplied to \`${t}\`. The \`value\` prop must be: - - a positive number - - less than the value passed to \`max\` (or ${et} if no \`max\` prop is set) - - \`null\` or \`undefined\` if the progress is indeterminate. - -Defaulting to \`null\`.`}var _i=po,Ei=mo,Te="Switch",[zr]=G(Te),[Yr,Xr]=zr(Te),go=a.forwardRef((e,t)=>{const{__scopeSwitch:o,name:n,checked:r,defaultChecked:s,required:i,disabled:c,value:u="on",onCheckedChange:p,form:f,...d}=e,[v,m]=a.useState(null),h=A(t,w=>m(w)),C=a.useRef(!1),x=v?f||!!v.closest("form"):!0,[S,R]=Q({prop:r,defaultProp:s??!1,onChange:p,caller:Te});return l.jsxs(Yr,{scope:o,checked:S,disabled:c,children:[l.jsx(_.button,{type:"button",role:"switch","aria-checked":S,"aria-required":i,"data-state":bo(S),"data-disabled":c?"":void 0,disabled:c,value:u,...d,ref:h,onClick:g(e.onClick,w=>{R(P=>!P),x&&(C.current=w.isPropagationStopped(),C.current||w.stopPropagation())})}),x&&l.jsx(Co,{control:v,bubbles:!C.current,name:n,value:u,checked:S,required:i,disabled:c,form:f,style:{transform:"translateX(-100%)"}})]})});go.displayName=Te;var xo="SwitchThumb",So=a.forwardRef((e,t)=>{const{__scopeSwitch:o,...n}=e,r=Xr(xo,o);return l.jsx(_.span,{"data-state":bo(r.checked),"data-disabled":r.disabled?"":void 0,...n,ref:t})});So.displayName=xo;var qr="SwitchBubbleInput",Co=a.forwardRef(({__scopeSwitch:e,control:t,checked:o,bubbles:n=!0,...r},s)=>{const i=a.useRef(null),c=A(i,s),u=_t(o),p=Et(t);return a.useEffect(()=>{const f=i.current;if(!f)return;const d=window.HTMLInputElement.prototype,m=Object.getOwnPropertyDescriptor(d,"checked").set;if(u!==o&&m){const h=new Event("click",{bubbles:n});m.call(f,o),f.dispatchEvent(h)}},[u,o,n]),l.jsx("input",{type:"checkbox","aria-hidden":!0,defaultChecked:o,...r,tabIndex:-1,ref:c,style:{...r.style,...p,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});Co.displayName=qr;function bo(e){return e?"checked":"unchecked"}var yi=go,Mi=So,wo=["PageUp","PageDown"],Po=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],Ro={"from-left":["Home","PageDown","ArrowDown","ArrowLeft"],"from-right":["Home","PageDown","ArrowDown","ArrowRight"],"from-bottom":["Home","PageDown","ArrowDown","ArrowLeft"],"from-top":["Home","PageDown","ArrowUp","ArrowLeft"]},se="Slider",[ke,Zr,Jr]=Ge(se),[_o]=G(se,[Jr]),[Qr,Ie]=_o(se),Eo=a.forwardRef((e,t)=>{const{name:o,min:n=0,max:r=100,step:s=1,orientation:i="horizontal",disabled:c=!1,minStepsBetweenThumbs:u=0,defaultValue:p=[n],value:f,onValueChange:d=()=>{},onValueCommit:v=()=>{},inverted:m=!1,form:h,...C}=e,x=a.useRef(new Set),S=a.useRef(0),w=i==="horizontal"?ea:ta,[P=[],I]=Q({prop:f,defaultProp:p,onChange:y=>{[...x.current][S.current]?.focus(),d(y)}}),j=a.useRef(P);function N(y){const L=sa(P,y);M(y,L)}function T(y){M(y,S.current)}function E(){const y=j.current[S.current];P[S.current]!==y&&v(P)}function M(y,L,{commit:W}={commit:!1}){const q=ua(s),Z=da(Math.round((y-n)/s)*s+n,q),O=Ue(Z,[n,r]);I((z=[])=>{const F=ra(z,O,L);if(la(F,u*s)){S.current=F.indexOf(O);const b=String(F)!==String(z);return b&&W&&v(F),b?F:z}else return z})}return l.jsx(Qr,{scope:e.__scopeSlider,name:o,disabled:c,min:n,max:r,valueIndexToChangeRef:S,thumbs:x.current,values:P,orientation:i,form:h,children:l.jsx(ke.Provider,{scope:e.__scopeSlider,children:l.jsx(ke.Slot,{scope:e.__scopeSlider,children:l.jsx(w,{"aria-disabled":c,"data-disabled":c?"":void 0,...C,ref:t,onPointerDown:g(C.onPointerDown,()=>{c||(j.current=P)}),min:n,max:r,inverted:m,onSlideStart:c?void 0:N,onSlideMove:c?void 0:T,onSlideEnd:c?void 0:E,onHomeKeyDown:()=>!c&&M(n,0,{commit:!0}),onEndKeyDown:()=>!c&&M(r,P.length-1,{commit:!0}),onStepKeyDown:({event:y,direction:L})=>{if(!c){const Z=wo.includes(y.key)||y.shiftKey&&Po.includes(y.key)?10:1,O=S.current,z=P[O],F=s*Z*L;M(z+F,O,{commit:!0})}}})})})})});Eo.displayName=se;var[yo,Mo]=_o(se,{startEdge:"left",endEdge:"right",size:"width",direction:1}),ea=a.forwardRef((e,t)=>{const{min:o,max:n,dir:r,inverted:s,onSlideStart:i,onSlideMove:c,onSlideEnd:u,onStepKeyDown:p,...f}=e,[d,v]=a.useState(null),m=A(t,w=>v(w)),h=a.useRef(void 0),C=pe(r),x=C==="ltr",S=x&&!s||!x&&s;function R(w){const P=h.current||d.getBoundingClientRect(),I=[0,P.width],N=tt(I,S?[o,n]:[n,o]);return h.current=P,N(w-P.left)}return l.jsx(yo,{scope:e.__scopeSlider,startEdge:S?"left":"right",endEdge:S?"right":"left",direction:S?1:-1,size:"width",children:l.jsx(Ao,{dir:C,"data-orientation":"horizontal",...f,ref:m,style:{...f.style,"--radix-slider-thumb-transform":"translateX(-50%)"},onSlideStart:w=>{const P=R(w.clientX);i?.(P)},onSlideMove:w=>{const P=R(w.clientX);c?.(P)},onSlideEnd:()=>{h.current=void 0,u?.()},onStepKeyDown:w=>{const I=Ro[S?"from-left":"from-right"].includes(w.key);p?.({event:w,direction:I?-1:1})}})})}),ta=a.forwardRef((e,t)=>{const{min:o,max:n,inverted:r,onSlideStart:s,onSlideMove:i,onSlideEnd:c,onStepKeyDown:u,...p}=e,f=a.useRef(null),d=A(t,f),v=a.useRef(void 0),m=!r;function h(C){const x=v.current||f.current.getBoundingClientRect(),S=[0,x.height],w=tt(S,m?[n,o]:[o,n]);return v.current=x,w(C-x.top)}return l.jsx(yo,{scope:e.__scopeSlider,startEdge:m?"bottom":"top",endEdge:m?"top":"bottom",size:"height",direction:m?1:-1,children:l.jsx(Ao,{"data-orientation":"vertical",...p,ref:d,style:{...p.style,"--radix-slider-thumb-transform":"translateY(50%)"},onSlideStart:C=>{const x=h(C.clientY);s?.(x)},onSlideMove:C=>{const x=h(C.clientY);i?.(x)},onSlideEnd:()=>{v.current=void 0,c?.()},onStepKeyDown:C=>{const S=Ro[m?"from-bottom":"from-top"].includes(C.key);u?.({event:C,direction:S?-1:1})}})})}),Ao=a.forwardRef((e,t)=>{const{__scopeSlider:o,onSlideStart:n,onSlideMove:r,onSlideEnd:s,onHomeKeyDown:i,onEndKeyDown:c,onStepKeyDown:u,...p}=e,f=Ie(se,o);return l.jsx(_.span,{...p,ref:t,onKeyDown:g(e.onKeyDown,d=>{d.key==="Home"?(i(d),d.preventDefault()):d.key==="End"?(c(d),d.preventDefault()):wo.concat(Po).includes(d.key)&&(u(d),d.preventDefault())}),onPointerDown:g(e.onPointerDown,d=>{const v=d.target;v.setPointerCapture(d.pointerId),d.preventDefault(),f.thumbs.has(v)?v.focus():n(d)}),onPointerMove:g(e.onPointerMove,d=>{d.target.hasPointerCapture(d.pointerId)&&r(d)}),onPointerUp:g(e.onPointerUp,d=>{const v=d.target;v.hasPointerCapture(d.pointerId)&&(v.releasePointerCapture(d.pointerId),s(d))})})}),To="SliderTrack",Io=a.forwardRef((e,t)=>{const{__scopeSlider:o,...n}=e,r=Ie(To,o);return l.jsx(_.span,{"data-disabled":r.disabled?"":void 0,"data-orientation":r.orientation,...n,ref:t})});Io.displayName=To;var Ve="SliderRange",No=a.forwardRef((e,t)=>{const{__scopeSlider:o,...n}=e,r=Ie(Ve,o),s=Mo(Ve,o),i=a.useRef(null),c=A(t,i),u=r.values.length,p=r.values.map(v=>jo(v,r.min,r.max)),f=u>1?Math.min(...p):0,d=100-Math.max(...p);return l.jsx(_.span,{"data-orientation":r.orientation,"data-disabled":r.disabled?"":void 0,...n,ref:c,style:{...e.style,[s.startEdge]:f+"%",[s.endEdge]:d+"%"}})});No.displayName=Ve;var Be="SliderThumb",Do=a.forwardRef((e,t)=>{const o=Zr(e.__scopeSlider),[n,r]=a.useState(null),s=A(t,c=>r(c)),i=a.useMemo(()=>n?o().findIndex(c=>c.ref.current===n):-1,[o,n]);return l.jsx(oa,{...e,ref:s,index:i})}),oa=a.forwardRef((e,t)=>{const{__scopeSlider:o,index:n,name:r,...s}=e,i=Ie(Be,o),c=Mo(Be,o),[u,p]=a.useState(null),f=A(t,R=>p(R)),d=u?i.form||!!u.closest("form"):!0,v=Et(u),m=i.values[n],h=m===void 0?0:jo(m,i.min,i.max),C=aa(n,i.values.length),x=v?.[c.size],S=x?ia(x,h,c.direction):0;return a.useEffect(()=>{if(u)return i.thumbs.add(u),()=>{i.thumbs.delete(u)}},[u,i.thumbs]),l.jsxs("span",{style:{transform:"var(--radix-slider-thumb-transform)",position:"absolute",[c.startEdge]:`calc(${h}% + ${S}px)`},children:[l.jsx(ke.ItemSlot,{scope:e.__scopeSlider,children:l.jsx(_.span,{role:"slider","aria-label":e["aria-label"]||C,"aria-valuemin":i.min,"aria-valuenow":m,"aria-valuemax":i.max,"aria-orientation":i.orientation,"data-orientation":i.orientation,"data-disabled":i.disabled?"":void 0,tabIndex:i.disabled?void 0:0,...s,ref:f,style:m===void 0?{display:"none"}:e.style,onFocus:g(e.onFocus,()=>{i.valueIndexToChangeRef.current=n})})}),d&&l.jsx(Oo,{name:r??(i.name?i.name+(i.values.length>1?"[]":""):void 0),form:i.form,value:m},n)]})});Do.displayName=Be;var na="RadioBubbleInput",Oo=a.forwardRef(({__scopeSlider:e,value:t,...o},n)=>{const r=a.useRef(null),s=A(r,n),i=_t(t);return a.useEffect(()=>{const c=r.current;if(!c)return;const u=window.HTMLInputElement.prototype,f=Object.getOwnPropertyDescriptor(u,"value").set;if(i!==t&&f){const d=new Event("input",{bubbles:!0});f.call(c,t),c.dispatchEvent(d)}},[i,t]),l.jsx(_.input,{style:{display:"none"},...o,ref:s,defaultValue:t})});Oo.displayName=na;function ra(e=[],t,o){const n=[...e];return n[o]=t,n.sort((r,s)=>r-s)}function jo(e,t,o){const s=100/(o-t)*(e-t);return Ue(s,[0,100])}function aa(e,t){return t>2?`Value ${e+1} of ${t}`:t===2?["Minimum","Maximum"][e]:void 0}function sa(e,t){if(e.length===1)return 0;const o=e.map(r=>Math.abs(r-t)),n=Math.min(...o);return o.indexOf(n)}function ia(e,t,o){const n=e/2,s=tt([0,50],[0,n]);return(n-s(t)*o)*o}function ca(e){return e.slice(0,-1).map((t,o)=>e[o+1]-t)}function la(e,t){if(t>0){const o=ca(e);return Math.min(...o)>=t}return!0}function tt(e,t){return o=>{if(e[0]===e[1]||t[0]===t[1])return t[0];const n=(t[1]-t[0])/(e[1]-e[0]);return t[0]+n*(o-e[0])}}function ua(e){return(String(e).split(".")[1]||"").length}function da(e,t){const o=Math.pow(10,t);return Math.round(e*o)/o}var Ai=Eo,Ti=Io,Ii=No,Ni=Do,fa=Symbol("radix.slottable");function pa(e){const t=({children:o})=>l.jsx(l.Fragment,{children:o});return t.displayName=`${e}.Slottable`,t.__radixId=fa,t}var Lo="AlertDialog",[va]=G(Lo,[yt]),H=yt(),Fo=e=>{const{__scopeAlertDialog:t,...o}=e,n=H(t);return l.jsx(ur,{...n,...o,modal:!0})};Fo.displayName=Lo;var ma="AlertDialogTrigger",$o=a.forwardRef((e,t)=>{const{__scopeAlertDialog:o,...n}=e,r=H(o);return l.jsx(dr,{...r,...n,ref:t})});$o.displayName=ma;var ha="AlertDialogPortal",ko=e=>{const{__scopeAlertDialog:t,...o}=e,n=H(t);return l.jsx(ar,{...n,...o})};ko.displayName=ha;var ga="AlertDialogOverlay",Vo=a.forwardRef((e,t)=>{const{__scopeAlertDialog:o,...n}=e,r=H(o);return l.jsx(rr,{...r,...n,ref:t})});Vo.displayName=ga;var oe="AlertDialogContent",[xa,Sa]=va(oe),Ca=pa("AlertDialogContent"),Bo=a.forwardRef((e,t)=>{const{__scopeAlertDialog:o,children:n,...r}=e,s=H(o),i=a.useRef(null),c=A(t,i),u=a.useRef(null);return l.jsx(sr,{contentName:oe,titleName:Ko,docsSlug:"alert-dialog",children:l.jsx(xa,{scope:o,cancelRef:u,children:l.jsxs(ir,{role:"alertdialog",...s,...r,ref:c,onOpenAutoFocus:g(r.onOpenAutoFocus,p=>{p.preventDefault(),u.current?.focus({preventScroll:!0})}),onPointerDownOutside:p=>p.preventDefault(),onInteractOutside:p=>p.preventDefault(),children:[l.jsx(Ca,{children:n}),l.jsx(wa,{contentRef:i})]})})})});Bo.displayName=oe;var Ko="AlertDialogTitle",Go=a.forwardRef((e,t)=>{const{__scopeAlertDialog:o,...n}=e,r=H(o);return l.jsx(cr,{...r,...n,ref:t})});Go.displayName=Ko;var Uo="AlertDialogDescription",Ho=a.forwardRef((e,t)=>{const{__scopeAlertDialog:o,...n}=e,r=H(o);return l.jsx(lr,{...r,...n,ref:t})});Ho.displayName=Uo;var ba="AlertDialogAction",Wo=a.forwardRef((e,t)=>{const{__scopeAlertDialog:o,...n}=e,r=H(o);return l.jsx(Mt,{...r,...n,ref:t})});Wo.displayName=ba;var zo="AlertDialogCancel",Yo=a.forwardRef((e,t)=>{const{__scopeAlertDialog:o,...n}=e,{cancelRef:r}=Sa(zo,o),s=H(o),i=A(t,r);return l.jsx(Mt,{...s,...n,ref:i})});Yo.displayName=zo;var wa=({contentRef:e})=>{const t=`\`${oe}\` requires a description for the component to be accessible for screen reader users. - -You can add a description to the \`${oe}\` by passing a \`${Uo}\` component as a child, which also benefits sighted users by adding visible context to the dialog. - -Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${oe}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component. - -For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;return a.useEffect(()=>{document.getElementById(e.current?.getAttribute("aria-describedby"))||console.warn(t)},[t,e]),null},Di=Fo,Oi=$o,ji=ko,Li=Vo,Fi=Bo,$i=Wo,ki=Yo,Vi=Go,Bi=Ho,Pa=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Ra=Pa.reduce((e,t)=>{const o=He(`Primitive.${t}`),n=a.forwardRef((r,s)=>{const{asChild:i,...c}=r,u=i?o:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),l.jsx(u,{...c,ref:s})});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{}),_a="Separator",wt="horizontal",Ea=["horizontal","vertical"],Xo=a.forwardRef((e,t)=>{const{decorative:o,orientation:n=wt,...r}=e,s=ya(n)?n:wt,c=o?{role:"none"}:{"aria-orientation":s==="vertical"?s:void 0,role:"separator"};return l.jsx(Ra.div,{"data-orientation":s,...c,...r,ref:t})});Xo.displayName=_a;function ya(e){return Ea.includes(e)}var Ki=Xo;function Ma(e){const t=Aa(e),o=a.forwardRef((n,r)=>{const{children:s,...i}=n,c=a.Children.toArray(s),u=c.find(Ia);if(u){const p=u.props.children,f=c.map(d=>d===u?a.Children.count(p)>1?a.Children.only(null):a.isValidElement(p)?p.props.children:null:d);return l.jsx(t,{...i,ref:r,children:a.isValidElement(p)?a.cloneElement(p,void 0,f):null})}return l.jsx(t,{...i,ref:r,children:s})});return o.displayName=`${e}.Slot`,o}function Aa(e){const t=a.forwardRef((o,n)=>{const{children:r,...s}=o;if(a.isValidElement(r)){const i=Da(r),c=Na(s,r.props);return r.type!==a.Fragment&&(c.ref=n?We(n,i):i),a.cloneElement(r,c)}return a.Children.count(r)>1?a.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Ta=Symbol("radix.slottable");function Ia(e){return a.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Ta}function Na(e,t){const o={...t};for(const n in t){const r=e[n],s=t[n];/^on[A-Z]/.test(n)?r&&s?o[n]=(...c)=>{const u=s(...c);return r(...c),u}:r&&(o[n]=r):n==="style"?o[n]={...r,...s}:n==="className"&&(o[n]=[r,s].filter(Boolean).join(" "))}return{...e,...o}}function Da(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,o=t&&"isReactWarning"in t&&t.isReactWarning;return o?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,o=t&&"isReactWarning"in t&&t.isReactWarning,o?e.props.ref:e.props.ref||e.ref)}var Ne="Popover",[qo]=G(Ne,[_e]),me=_e(),[Oa,Y]=qo(Ne),Zo=e=>{const{__scopePopover:t,children:o,open:n,defaultOpen:r,onOpenChange:s,modal:i=!1}=e,c=me(t),u=a.useRef(null),[p,f]=a.useState(!1),[d,v]=Q({prop:n,defaultProp:r??!1,onChange:s,caller:Ne});return l.jsx(ze,{...c,children:l.jsx(Oa,{scope:t,contentId:ne(),triggerRef:u,open:d,onOpenChange:v,onOpenToggle:a.useCallback(()=>v(m=>!m),[v]),hasCustomAnchor:p,onCustomAnchorAdd:a.useCallback(()=>f(!0),[]),onCustomAnchorRemove:a.useCallback(()=>f(!1),[]),modal:i,children:o})})};Zo.displayName=Ne;var Jo="PopoverAnchor",ja=a.forwardRef((e,t)=>{const{__scopePopover:o,...n}=e,r=Y(Jo,o),s=me(o),{onCustomAnchorAdd:i,onCustomAnchorRemove:c}=r;return a.useEffect(()=>(i(),()=>c()),[i,c]),l.jsx(Ye,{...s,...n,ref:t})});ja.displayName=Jo;var Qo="PopoverTrigger",en=a.forwardRef((e,t)=>{const{__scopePopover:o,...n}=e,r=Y(Qo,o),s=me(o),i=A(t,r.triggerRef),c=l.jsx(_.button,{type:"button","aria-haspopup":"dialog","aria-expanded":r.open,"aria-controls":r.contentId,"data-state":an(r.open),...n,ref:i,onClick:g(e.onClick,r.onOpenToggle)});return r.hasCustomAnchor?c:l.jsx(Ye,{asChild:!0,...s,children:c})});en.displayName=Qo;var ot="PopoverPortal",[La,Fa]=qo(ot,{forceMount:void 0}),tn=e=>{const{__scopePopover:t,forceMount:o,children:n,container:r}=e,s=Y(ot,t);return l.jsx(La,{scope:t,forceMount:o,children:l.jsx(B,{present:o||s.open,children:l.jsx(At,{asChild:!0,container:r,children:n})})})};tn.displayName=ot;var ae="PopoverContent",on=a.forwardRef((e,t)=>{const o=Fa(ae,e.__scopePopover),{forceMount:n=o.forceMount,...r}=e,s=Y(ae,e.__scopePopover);return l.jsx(B,{present:n||s.open,children:s.modal?l.jsx(ka,{...r,ref:t}):l.jsx(Va,{...r,ref:t})})});on.displayName=ae;var $a=Ma("PopoverContent.RemoveScroll"),ka=a.forwardRef((e,t)=>{const o=Y(ae,e.__scopePopover),n=a.useRef(null),r=A(t,n),s=a.useRef(!1);return a.useEffect(()=>{const i=n.current;if(i)return Tt(i)},[]),l.jsx(It,{as:$a,allowPinchZoom:!0,children:l.jsx(nn,{...e,ref:r,trapFocus:o.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:g(e.onCloseAutoFocus,i=>{i.preventDefault(),s.current||o.triggerRef.current?.focus()}),onPointerDownOutside:g(e.onPointerDownOutside,i=>{const c=i.detail.originalEvent,u=c.button===0&&c.ctrlKey===!0,p=c.button===2||u;s.current=p},{checkForDefaultPrevented:!1}),onFocusOutside:g(e.onFocusOutside,i=>i.preventDefault(),{checkForDefaultPrevented:!1})})})}),Va=a.forwardRef((e,t)=>{const o=Y(ae,e.__scopePopover),n=a.useRef(!1),r=a.useRef(!1);return l.jsx(nn,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:s=>{e.onCloseAutoFocus?.(s),s.defaultPrevented||(n.current||o.triggerRef.current?.focus(),s.preventDefault()),n.current=!1,r.current=!1},onInteractOutside:s=>{e.onInteractOutside?.(s),s.defaultPrevented||(n.current=!0,s.detail.originalEvent.type==="pointerdown"&&(r.current=!0));const i=s.target;o.triggerRef.current?.contains(i)&&s.preventDefault(),s.detail.originalEvent.type==="focusin"&&r.current&&s.preventDefault()}})}),nn=a.forwardRef((e,t)=>{const{__scopePopover:o,trapFocus:n,onOpenAutoFocus:r,onCloseAutoFocus:s,disableOutsidePointerEvents:i,onEscapeKeyDown:c,onPointerDownOutside:u,onFocusOutside:p,onInteractOutside:f,...d}=e,v=Y(ae,o),m=me(o);return Nt(),l.jsx(Dt,{asChild:!0,loop:!0,trapped:n,onMountAutoFocus:r,onUnmountAutoFocus:s,children:l.jsx(Ot,{asChild:!0,disableOutsidePointerEvents:i,onInteractOutside:f,onEscapeKeyDown:c,onPointerDownOutside:u,onFocusOutside:p,onDismiss:()=>v.onOpenChange(!1),children:l.jsx(jt,{"data-state":an(v.open),role:"dialog",id:v.contentId,...m,...d,ref:t,style:{...d.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),rn="PopoverClose",Ba=a.forwardRef((e,t)=>{const{__scopePopover:o,...n}=e,r=Y(rn,o);return l.jsx(_.button,{type:"button",...n,ref:t,onClick:g(e.onClick,()=>r.onOpenChange(!1))})});Ba.displayName=rn;var Ka="PopoverArrow",Ga=a.forwardRef((e,t)=>{const{__scopePopover:o,...n}=e,r=me(o);return l.jsx(Lt,{...r,...n,ref:t})});Ga.displayName=Ka;function an(e){return e?"open":"closed"}var Gi=Zo,Ui=en,Hi=tn,Wi=on,De="Collapsible",[Ua]=G(De),[Ha,nt]=Ua(De),sn=a.forwardRef((e,t)=>{const{__scopeCollapsible:o,open:n,defaultOpen:r,disabled:s,onOpenChange:i,...c}=e,[u,p]=Q({prop:n,defaultProp:r??!1,onChange:i,caller:De});return l.jsx(Ha,{scope:o,disabled:s,contentId:ne(),open:u,onOpenToggle:a.useCallback(()=>p(f=>!f),[p]),children:l.jsx(_.div,{"data-state":at(u),"data-disabled":s?"":void 0,...c,ref:t})})});sn.displayName=De;var cn="CollapsibleTrigger",Wa=a.forwardRef((e,t)=>{const{__scopeCollapsible:o,...n}=e,r=nt(cn,o);return l.jsx(_.button,{type:"button","aria-controls":r.contentId,"aria-expanded":r.open||!1,"data-state":at(r.open),"data-disabled":r.disabled?"":void 0,disabled:r.disabled,...n,ref:t,onClick:g(e.onClick,r.onOpenToggle)})});Wa.displayName=cn;var rt="CollapsibleContent",za=a.forwardRef((e,t)=>{const{forceMount:o,...n}=e,r=nt(rt,e.__scopeCollapsible);return l.jsx(B,{present:o||r.open,children:({present:s})=>l.jsx(Ya,{...n,ref:t,present:s})})});za.displayName=rt;var Ya=a.forwardRef((e,t)=>{const{__scopeCollapsible:o,present:n,children:r,...s}=e,i=nt(rt,o),[c,u]=a.useState(n),p=a.useRef(null),f=A(t,p),d=a.useRef(0),v=d.current,m=a.useRef(0),h=m.current,C=i.open||c,x=a.useRef(C),S=a.useRef(void 0);return a.useEffect(()=>{const R=requestAnimationFrame(()=>x.current=!1);return()=>cancelAnimationFrame(R)},[]),ue(()=>{const R=p.current;if(R){S.current=S.current||{transitionDuration:R.style.transitionDuration,animationName:R.style.animationName},R.style.transitionDuration="0s",R.style.animationName="none";const w=R.getBoundingClientRect();d.current=w.height,m.current=w.width,x.current||(R.style.transitionDuration=S.current.transitionDuration,R.style.animationName=S.current.animationName),u(n)}},[i.open,n]),l.jsx(_.div,{"data-state":at(i.open),"data-disabled":i.disabled?"":void 0,id:i.contentId,hidden:!C,...s,ref:f,style:{"--radix-collapsible-content-height":v?`${v}px`:void 0,"--radix-collapsible-content-width":h?`${h}px`:void 0,...e.style},children:C&&r})});function at(e){return e?"open":"closed"}var zi=sn;function Xa(e,t=[]){let o=[];function n(s,i){const c=a.createContext(i);c.displayName=s+"Context";const u=o.length;o=[...o,i];const p=d=>{const{scope:v,children:m,...h}=d,C=v?.[e]?.[u]||c,x=a.useMemo(()=>h,Object.values(h));return l.jsx(C.Provider,{value:x,children:m})};p.displayName=s+"Provider";function f(d,v){const m=v?.[e]?.[u]||c,h=a.useContext(m);if(h)return h;if(i!==void 0)return i;throw new Error(`\`${d}\` must be used within \`${s}\``)}return[p,f]}const r=()=>{const s=o.map(i=>a.createContext(i));return function(c){const u=c?.[e]||s;return a.useMemo(()=>({[`__scope${e}`]:{...c,[e]:u}}),[c,u])}};return r.scopeName=e,[n,qa(r,...t)]}function qa(...e){const t=e[0];if(e.length===1)return t;const o=()=>{const n=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(s){const i=n.reduce((c,{useScope:u,scopeName:p})=>{const d=u(s)[`__scope${p}`];return{...c,...d}},{});return a.useMemo(()=>({[`__scope${t.scopeName}`]:i}),[i])}};return o.scopeName=t.scopeName,o}var Za=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],st=Za.reduce((e,t)=>{const o=He(`Primitive.${t}`),n=a.forwardRef((r,s)=>{const{asChild:i,...c}=r,u=i?o:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),l.jsx(u,{...c,ref:s})});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{}),Ja=nr();function Qa(){return Ja.useSyncExternalStore(es,()=>!0,()=>!1)}function es(){return()=>{}}var it="Avatar",[ts]=Xa(it),[os,ln]=ts(it),un=a.forwardRef((e,t)=>{const{__scopeAvatar:o,...n}=e,[r,s]=a.useState("idle");return l.jsx(os,{scope:o,imageLoadingStatus:r,onImageLoadingStatusChange:s,children:l.jsx(st.span,{...n,ref:t})})});un.displayName=it;var dn="AvatarImage",fn=a.forwardRef((e,t)=>{const{__scopeAvatar:o,src:n,onLoadingStatusChange:r=()=>{},...s}=e,i=ln(dn,o),c=ns(n,s),u=k(p=>{r(p),i.onImageLoadingStatusChange(p)});return ue(()=>{c!=="idle"&&u(c)},[c,u]),c==="loaded"?l.jsx(st.img,{...s,ref:t,src:n}):null});fn.displayName=dn;var pn="AvatarFallback",vn=a.forwardRef((e,t)=>{const{__scopeAvatar:o,delayMs:n,...r}=e,s=ln(pn,o),[i,c]=a.useState(n===void 0);return a.useEffect(()=>{if(n!==void 0){const u=window.setTimeout(()=>c(!0),n);return()=>window.clearTimeout(u)}},[n]),i&&s.imageLoadingStatus!=="loaded"?l.jsx(st.span,{...r,ref:t}):null});vn.displayName=pn;function Pt(e,t){return e?t?(e.src!==t&&(e.src=t),e.complete&&e.naturalWidth>0?"loaded":"loading"):"error":"idle"}function ns(e,{referrerPolicy:t,crossOrigin:o}){const n=Qa(),r=a.useRef(null),s=n?(r.current||(r.current=new window.Image),r.current):null,[i,c]=a.useState(()=>Pt(s,e));return ue(()=>{c(Pt(s,e))},[s,e]),ue(()=>{const u=d=>()=>{c(d)};if(!s)return;const p=u("loaded"),f=u("error");return s.addEventListener("load",p),s.addEventListener("error",f),t&&(s.referrerPolicy=t),typeof o=="string"&&(s.crossOrigin=o),()=>{s.removeEventListener("load",p),s.removeEventListener("error",f)}},[s,o,t]),i}var Yi=un,Xi=fn,qi=vn;function rs(e){const t=as(e),o=a.forwardRef((n,r)=>{const{children:s,...i}=n,c=a.Children.toArray(s),u=c.find(is);if(u){const p=u.props.children,f=c.map(d=>d===u?a.Children.count(p)>1?a.Children.only(null):a.isValidElement(p)?p.props.children:null:d);return l.jsx(t,{...i,ref:r,children:a.isValidElement(p)?a.cloneElement(p,void 0,f):null})}return l.jsx(t,{...i,ref:r,children:s})});return o.displayName=`${e}.Slot`,o}function as(e){const t=a.forwardRef((o,n)=>{const{children:r,...s}=o;if(a.isValidElement(r)){const i=ls(r),c=cs(s,r.props);return r.type!==a.Fragment&&(c.ref=n?We(n,i):i),a.cloneElement(r,c)}return a.Children.count(r)>1?a.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var ss=Symbol("radix.slottable");function is(e){return a.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===ss}function cs(e,t){const o={...t};for(const n in t){const r=e[n],s=t[n];/^on[A-Z]/.test(n)?r&&s?o[n]=(...c)=>{const u=s(...c);return r(...c),u}:r&&(o[n]=r):n==="style"?o[n]={...r,...s}:n==="className"&&(o[n]=[r,s].filter(Boolean).join(" "))}return{...e,...o}}function ls(e){let t=Object.getOwnPropertyDescriptor(e.props,"ref")?.get,o=t&&"isReactWarning"in t&&t.isReactWarning;return o?e.ref:(t=Object.getOwnPropertyDescriptor(e,"ref")?.get,o=t&&"isReactWarning"in t&&t.isReactWarning,o?e.props.ref:e.props.ref||e.ref)}var Ke=["Enter"," "],us=["ArrowDown","PageUp","Home"],mn=["ArrowUp","PageDown","End"],ds=[...us,...mn],fs={ltr:[...Ke,"ArrowRight"],rtl:[...Ke,"ArrowLeft"]},ps={ltr:["ArrowLeft"],rtl:["ArrowRight"]},he="Menu",[de,vs,ms]=Ge(he),[ee,hn]=G(he,[ms,_e,Ee]),ge=_e(),gn=Ee(),[xn,X]=ee(he),[hs,xe]=ee(he),Sn=e=>{const{__scopeMenu:t,open:o=!1,children:n,dir:r,onOpenChange:s,modal:i=!0}=e,c=ge(t),[u,p]=a.useState(null),f=a.useRef(!1),d=k(s),v=pe(r);return a.useEffect(()=>{const m=()=>{f.current=!0,document.addEventListener("pointerdown",h,{capture:!0,once:!0}),document.addEventListener("pointermove",h,{capture:!0,once:!0})},h=()=>f.current=!1;return document.addEventListener("keydown",m,{capture:!0}),()=>{document.removeEventListener("keydown",m,{capture:!0}),document.removeEventListener("pointerdown",h,{capture:!0}),document.removeEventListener("pointermove",h,{capture:!0})}},[]),l.jsx(ze,{...c,children:l.jsx(xn,{scope:t,open:o,onOpenChange:d,content:u,onContentChange:p,children:l.jsx(hs,{scope:t,onClose:a.useCallback(()=>d(!1),[d]),isUsingKeyboardRef:f,dir:v,modal:i,children:n})})})};Sn.displayName=he;var gs="MenuAnchor",ct=a.forwardRef((e,t)=>{const{__scopeMenu:o,...n}=e,r=ge(o);return l.jsx(Ye,{...r,...n,ref:t})});ct.displayName=gs;var lt="MenuPortal",[xs,Cn]=ee(lt,{forceMount:void 0}),bn=e=>{const{__scopeMenu:t,forceMount:o,children:n,container:r}=e,s=X(lt,t);return l.jsx(xs,{scope:t,forceMount:o,children:l.jsx(B,{present:o||s.open,children:l.jsx(At,{asChild:!0,container:r,children:n})})})};bn.displayName=lt;var V="MenuContent",[Ss,ut]=ee(V),wn=a.forwardRef((e,t)=>{const o=Cn(V,e.__scopeMenu),{forceMount:n=o.forceMount,...r}=e,s=X(V,e.__scopeMenu),i=xe(V,e.__scopeMenu);return l.jsx(de.Provider,{scope:e.__scopeMenu,children:l.jsx(B,{present:n||s.open,children:l.jsx(de.Slot,{scope:e.__scopeMenu,children:i.modal?l.jsx(Cs,{...r,ref:t}):l.jsx(bs,{...r,ref:t})})})})}),Cs=a.forwardRef((e,t)=>{const o=X(V,e.__scopeMenu),n=a.useRef(null),r=A(t,n);return a.useEffect(()=>{const s=n.current;if(s)return Tt(s)},[]),l.jsx(dt,{...e,ref:r,trapFocus:o.open,disableOutsidePointerEvents:o.open,disableOutsideScroll:!0,onFocusOutside:g(e.onFocusOutside,s=>s.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>o.onOpenChange(!1)})}),bs=a.forwardRef((e,t)=>{const o=X(V,e.__scopeMenu);return l.jsx(dt,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>o.onOpenChange(!1)})}),ws=rs("MenuContent.ScrollLock"),dt=a.forwardRef((e,t)=>{const{__scopeMenu:o,loop:n=!1,trapFocus:r,onOpenAutoFocus:s,onCloseAutoFocus:i,disableOutsidePointerEvents:c,onEntryFocus:u,onEscapeKeyDown:p,onPointerDownOutside:f,onFocusOutside:d,onInteractOutside:v,onDismiss:m,disableOutsideScroll:h,...C}=e,x=X(V,o),S=xe(V,o),R=ge(o),w=gn(o),P=vs(o),[I,j]=a.useState(null),N=a.useRef(null),T=A(t,N,x.onContentChange),E=a.useRef(0),M=a.useRef(""),y=a.useRef(0),L=a.useRef(null),W=a.useRef("right"),q=a.useRef(0),Z=h?It:a.Fragment,O=h?{as:ws,allowPinchZoom:!0}:void 0,z=b=>{const te=M.current+b,J=P().filter($=>!$.disabled),ie=document.activeElement,je=J.find($=>$.ref.current===ie)?.textValue,Le=J.map($=>$.textValue),gt=Os(Le,te,je),ce=J.find($=>$.textValue===gt)?.ref.current;(function $(xt){M.current=xt,window.clearTimeout(E.current),xt!==""&&(E.current=window.setTimeout(()=>$(""),1e3))})(te),ce&&setTimeout(()=>ce.focus())};a.useEffect(()=>()=>window.clearTimeout(E.current),[]),Nt();const F=a.useCallback(b=>W.current===L.current?.side&&Ls(b,L.current?.area),[]);return l.jsx(Ss,{scope:o,searchRef:M,onItemEnter:a.useCallback(b=>{F(b)&&b.preventDefault()},[F]),onItemLeave:a.useCallback(b=>{F(b)||(N.current?.focus(),j(null))},[F]),onTriggerLeave:a.useCallback(b=>{F(b)&&b.preventDefault()},[F]),pointerGraceTimerRef:y,onPointerGraceIntentChange:a.useCallback(b=>{L.current=b},[]),children:l.jsx(Z,{...O,children:l.jsx(Dt,{asChild:!0,trapped:r,onMountAutoFocus:g(s,b=>{b.preventDefault(),N.current?.focus({preventScroll:!0})}),onUnmountAutoFocus:i,children:l.jsx(Ot,{asChild:!0,disableOutsidePointerEvents:c,onEscapeKeyDown:p,onPointerDownOutside:f,onFocusOutside:d,onInteractOutside:v,onDismiss:m,children:l.jsx(Kt,{asChild:!0,...w,dir:S.dir,orientation:"vertical",loop:n,currentTabStopId:I,onCurrentTabStopIdChange:j,onEntryFocus:g(u,b=>{S.isUsingKeyboardRef.current||b.preventDefault()}),preventScrollOnEntryFocus:!0,children:l.jsx(jt,{role:"menu","aria-orientation":"vertical","data-state":kn(x.open),"data-radix-menu-content":"",dir:S.dir,...R,...C,ref:T,style:{outline:"none",...C.style},onKeyDown:g(C.onKeyDown,b=>{const J=b.target.closest("[data-radix-menu-content]")===b.currentTarget,ie=b.ctrlKey||b.altKey||b.metaKey,je=b.key.length===1;J&&(b.key==="Tab"&&b.preventDefault(),!ie&&je&&z(b.key));const Le=N.current;if(b.target!==Le||!ds.includes(b.key))return;b.preventDefault();const ce=P().filter($=>!$.disabled).map($=>$.ref.current);mn.includes(b.key)&&ce.reverse(),Ns(ce)}),onBlur:g(e.onBlur,b=>{b.currentTarget.contains(b.target)||(window.clearTimeout(E.current),M.current="")}),onPointerMove:g(e.onPointerMove,fe(b=>{const te=b.target,J=q.current!==b.clientX;if(b.currentTarget.contains(te)&&J){const ie=b.clientX>q.current?"right":"left";W.current=ie,q.current=b.clientX}}))})})})})})})});wn.displayName=V;var Ps="MenuGroup",ft=a.forwardRef((e,t)=>{const{__scopeMenu:o,...n}=e;return l.jsx(_.div,{role:"group",...n,ref:t})});ft.displayName=Ps;var Rs="MenuLabel",Pn=a.forwardRef((e,t)=>{const{__scopeMenu:o,...n}=e;return l.jsx(_.div,{...n,ref:t})});Pn.displayName=Rs;var Pe="MenuItem",Rt="menu.itemSelect",Oe=a.forwardRef((e,t)=>{const{disabled:o=!1,onSelect:n,...r}=e,s=a.useRef(null),i=xe(Pe,e.__scopeMenu),c=ut(Pe,e.__scopeMenu),u=A(t,s),p=a.useRef(!1),f=()=>{const d=s.current;if(!o&&d){const v=new CustomEvent(Rt,{bubbles:!0,cancelable:!0});d.addEventListener(Rt,m=>n?.(m),{once:!0}),fr(d,v),v.defaultPrevented?p.current=!1:i.onClose()}};return l.jsx(Rn,{...r,ref:u,disabled:o,onClick:g(e.onClick,f),onPointerDown:d=>{e.onPointerDown?.(d),p.current=!0},onPointerUp:g(e.onPointerUp,d=>{p.current||d.currentTarget?.click()}),onKeyDown:g(e.onKeyDown,d=>{const v=c.searchRef.current!=="";o||v&&d.key===" "||Ke.includes(d.key)&&(d.currentTarget.click(),d.preventDefault())})})});Oe.displayName=Pe;var Rn=a.forwardRef((e,t)=>{const{__scopeMenu:o,disabled:n=!1,textValue:r,...s}=e,i=ut(Pe,o),c=gn(o),u=a.useRef(null),p=A(t,u),[f,d]=a.useState(!1),[v,m]=a.useState("");return a.useEffect(()=>{const h=u.current;h&&m((h.textContent??"").trim())},[s.children]),l.jsx(de.ItemSlot,{scope:o,disabled:n,textValue:r??v,children:l.jsx(Gt,{asChild:!0,...c,focusable:!n,children:l.jsx(_.div,{role:"menuitem","data-highlighted":f?"":void 0,"aria-disabled":n||void 0,"data-disabled":n?"":void 0,...s,ref:p,onPointerMove:g(e.onPointerMove,fe(h=>{n?i.onItemLeave(h):(i.onItemEnter(h),h.defaultPrevented||h.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:g(e.onPointerLeave,fe(h=>i.onItemLeave(h))),onFocus:g(e.onFocus,()=>d(!0)),onBlur:g(e.onBlur,()=>d(!1))})})})}),_s="MenuCheckboxItem",_n=a.forwardRef((e,t)=>{const{checked:o=!1,onCheckedChange:n,...r}=e;return l.jsx(Tn,{scope:e.__scopeMenu,checked:o,children:l.jsx(Oe,{role:"menuitemcheckbox","aria-checked":Re(o)?"mixed":o,...r,ref:t,"data-state":mt(o),onSelect:g(r.onSelect,()=>n?.(Re(o)?!0:!o),{checkForDefaultPrevented:!1})})})});_n.displayName=_s;var En="MenuRadioGroup",[Es,ys]=ee(En,{value:void 0,onValueChange:()=>{}}),yn=a.forwardRef((e,t)=>{const{value:o,onValueChange:n,...r}=e,s=k(n);return l.jsx(Es,{scope:e.__scopeMenu,value:o,onValueChange:s,children:l.jsx(ft,{...r,ref:t})})});yn.displayName=En;var Mn="MenuRadioItem",An=a.forwardRef((e,t)=>{const{value:o,...n}=e,r=ys(Mn,e.__scopeMenu),s=o===r.value;return l.jsx(Tn,{scope:e.__scopeMenu,checked:s,children:l.jsx(Oe,{role:"menuitemradio","aria-checked":s,...n,ref:t,"data-state":mt(s),onSelect:g(n.onSelect,()=>r.onValueChange?.(o),{checkForDefaultPrevented:!1})})})});An.displayName=Mn;var pt="MenuItemIndicator",[Tn,Ms]=ee(pt,{checked:!1}),In=a.forwardRef((e,t)=>{const{__scopeMenu:o,forceMount:n,...r}=e,s=Ms(pt,o);return l.jsx(B,{present:n||Re(s.checked)||s.checked===!0,children:l.jsx(_.span,{...r,ref:t,"data-state":mt(s.checked)})})});In.displayName=pt;var As="MenuSeparator",Nn=a.forwardRef((e,t)=>{const{__scopeMenu:o,...n}=e;return l.jsx(_.div,{role:"separator","aria-orientation":"horizontal",...n,ref:t})});Nn.displayName=As;var Ts="MenuArrow",Dn=a.forwardRef((e,t)=>{const{__scopeMenu:o,...n}=e,r=ge(o);return l.jsx(Lt,{...r,...n,ref:t})});Dn.displayName=Ts;var vt="MenuSub",[Is,On]=ee(vt),jn=e=>{const{__scopeMenu:t,children:o,open:n=!1,onOpenChange:r}=e,s=X(vt,t),i=ge(t),[c,u]=a.useState(null),[p,f]=a.useState(null),d=k(r);return a.useEffect(()=>(s.open===!1&&d(!1),()=>d(!1)),[s.open,d]),l.jsx(ze,{...i,children:l.jsx(xn,{scope:t,open:n,onOpenChange:d,content:p,onContentChange:f,children:l.jsx(Is,{scope:t,contentId:ne(),triggerId:ne(),trigger:c,onTriggerChange:u,children:o})})})};jn.displayName=vt;var le="MenuSubTrigger",Ln=a.forwardRef((e,t)=>{const o=X(le,e.__scopeMenu),n=xe(le,e.__scopeMenu),r=On(le,e.__scopeMenu),s=ut(le,e.__scopeMenu),i=a.useRef(null),{pointerGraceTimerRef:c,onPointerGraceIntentChange:u}=s,p={__scopeMenu:e.__scopeMenu},f=a.useCallback(()=>{i.current&&window.clearTimeout(i.current),i.current=null},[]);return a.useEffect(()=>f,[f]),a.useEffect(()=>{const d=c.current;return()=>{window.clearTimeout(d),u(null)}},[c,u]),l.jsx(ct,{asChild:!0,...p,children:l.jsx(Rn,{id:r.triggerId,"aria-haspopup":"menu","aria-expanded":o.open,"aria-controls":r.contentId,"data-state":kn(o.open),...e,ref:We(t,r.onTriggerChange),onClick:d=>{e.onClick?.(d),!(e.disabled||d.defaultPrevented)&&(d.currentTarget.focus(),o.open||o.onOpenChange(!0))},onPointerMove:g(e.onPointerMove,fe(d=>{s.onItemEnter(d),!d.defaultPrevented&&!e.disabled&&!o.open&&!i.current&&(s.onPointerGraceIntentChange(null),i.current=window.setTimeout(()=>{o.onOpenChange(!0),f()},100))})),onPointerLeave:g(e.onPointerLeave,fe(d=>{f();const v=o.content?.getBoundingClientRect();if(v){const m=o.content?.dataset.side,h=m==="right",C=h?-5:5,x=v[h?"left":"right"],S=v[h?"right":"left"];s.onPointerGraceIntentChange({area:[{x:d.clientX+C,y:d.clientY},{x,y:v.top},{x:S,y:v.top},{x:S,y:v.bottom},{x,y:v.bottom}],side:m}),window.clearTimeout(c.current),c.current=window.setTimeout(()=>s.onPointerGraceIntentChange(null),300)}else{if(s.onTriggerLeave(d),d.defaultPrevented)return;s.onPointerGraceIntentChange(null)}})),onKeyDown:g(e.onKeyDown,d=>{const v=s.searchRef.current!=="";e.disabled||v&&d.key===" "||fs[n.dir].includes(d.key)&&(o.onOpenChange(!0),o.content?.focus(),d.preventDefault())})})})});Ln.displayName=le;var Fn="MenuSubContent",$n=a.forwardRef((e,t)=>{const o=Cn(V,e.__scopeMenu),{forceMount:n=o.forceMount,...r}=e,s=X(V,e.__scopeMenu),i=xe(V,e.__scopeMenu),c=On(Fn,e.__scopeMenu),u=a.useRef(null),p=A(t,u);return l.jsx(de.Provider,{scope:e.__scopeMenu,children:l.jsx(B,{present:n||s.open,children:l.jsx(de.Slot,{scope:e.__scopeMenu,children:l.jsx(dt,{id:c.contentId,"aria-labelledby":c.triggerId,...r,ref:p,align:"start",side:i.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:f=>{i.isUsingKeyboardRef.current&&u.current?.focus(),f.preventDefault()},onCloseAutoFocus:f=>f.preventDefault(),onFocusOutside:g(e.onFocusOutside,f=>{f.target!==c.trigger&&s.onOpenChange(!1)}),onEscapeKeyDown:g(e.onEscapeKeyDown,f=>{i.onClose(),f.preventDefault()}),onKeyDown:g(e.onKeyDown,f=>{const d=f.currentTarget.contains(f.target),v=ps[i.dir].includes(f.key);d&&v&&(s.onOpenChange(!1),c.trigger?.focus(),f.preventDefault())})})})})})});$n.displayName=Fn;function kn(e){return e?"open":"closed"}function Re(e){return e==="indeterminate"}function mt(e){return Re(e)?"indeterminate":e?"checked":"unchecked"}function Ns(e){const t=document.activeElement;for(const o of e)if(o===t||(o.focus(),document.activeElement!==t))return}function Ds(e,t){return e.map((o,n)=>e[(t+n)%e.length])}function Os(e,t,o){const r=t.length>1&&Array.from(t).every(p=>p===t[0])?t[0]:t,s=o?e.indexOf(o):-1;let i=Ds(e,Math.max(s,0));r.length===1&&(i=i.filter(p=>p!==o));const u=i.find(p=>p.toLowerCase().startsWith(r.toLowerCase()));return u!==o?u:void 0}function js(e,t){const{x:o,y:n}=e;let r=!1;for(let s=0,i=t.length-1;sn!=v>n&&o<(d-p)*(n-f)/(v-f)+p&&(r=!r)}return r}function Ls(e,t){if(!t)return!1;const o={x:e.clientX,y:e.clientY};return js(o,t)}function fe(e){return t=>t.pointerType==="mouse"?e(t):void 0}var Fs=Sn,$s=ct,ks=bn,Vs=wn,Bs=ft,Ks=Pn,Gs=Oe,Us=_n,Hs=yn,Ws=An,zs=In,Ys=Nn,Xs=Dn,qs=jn,Zs=Ln,Js=$n,ht="ContextMenu",[Qs]=G(ht,[hn]),D=hn(),[ei,Vn]=Qs(ht),Bn=e=>{const{__scopeContextMenu:t,children:o,onOpenChange:n,dir:r,modal:s=!0}=e,[i,c]=a.useState(!1),u=D(t),p=k(n),f=a.useCallback(d=>{c(d),p(d)},[p]);return l.jsx(ei,{scope:t,open:i,onOpenChange:f,modal:s,children:l.jsx(Fs,{...u,dir:r,open:i,onOpenChange:f,modal:s,children:o})})};Bn.displayName=ht;var Kn="ContextMenuTrigger",Gn=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,disabled:n=!1,...r}=e,s=Vn(Kn,o),i=D(o),c=a.useRef({x:0,y:0}),u=a.useRef({getBoundingClientRect:()=>DOMRect.fromRect({width:0,height:0,...c.current})}),p=a.useRef(0),f=a.useCallback(()=>window.clearTimeout(p.current),[]),d=v=>{c.current={x:v.clientX,y:v.clientY},s.onOpenChange(!0)};return a.useEffect(()=>f,[f]),a.useEffect(()=>void(n&&f()),[n,f]),l.jsxs(l.Fragment,{children:[l.jsx($s,{...i,virtualRef:u}),l.jsx(_.span,{"data-state":s.open?"open":"closed","data-disabled":n?"":void 0,...r,ref:t,style:{WebkitTouchCallout:"none",...e.style},onContextMenu:n?e.onContextMenu:g(e.onContextMenu,v=>{f(),d(v),v.preventDefault()}),onPointerDown:n?e.onPointerDown:g(e.onPointerDown,Se(v=>{f(),p.current=window.setTimeout(()=>d(v),700)})),onPointerMove:n?e.onPointerMove:g(e.onPointerMove,Se(f)),onPointerCancel:n?e.onPointerCancel:g(e.onPointerCancel,Se(f)),onPointerUp:n?e.onPointerUp:g(e.onPointerUp,Se(f))})]})});Gn.displayName=Kn;var ti="ContextMenuPortal",Un=e=>{const{__scopeContextMenu:t,...o}=e,n=D(t);return l.jsx(ks,{...n,...o})};Un.displayName=ti;var Hn="ContextMenuContent",Wn=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,...n}=e,r=Vn(Hn,o),s=D(o),i=a.useRef(!1);return l.jsx(Vs,{...s,...n,ref:t,side:"right",sideOffset:2,align:"start",onCloseAutoFocus:c=>{e.onCloseAutoFocus?.(c),!c.defaultPrevented&&i.current&&c.preventDefault(),i.current=!1},onInteractOutside:c=>{e.onInteractOutside?.(c),!c.defaultPrevented&&!r.modal&&(i.current=!0)},style:{...e.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});Wn.displayName=Hn;var oi="ContextMenuGroup",ni=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,...n}=e,r=D(o);return l.jsx(Bs,{...r,...n,ref:t})});ni.displayName=oi;var ri="ContextMenuLabel",zn=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,...n}=e,r=D(o);return l.jsx(Ks,{...r,...n,ref:t})});zn.displayName=ri;var ai="ContextMenuItem",Yn=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,...n}=e,r=D(o);return l.jsx(Gs,{...r,...n,ref:t})});Yn.displayName=ai;var si="ContextMenuCheckboxItem",Xn=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,...n}=e,r=D(o);return l.jsx(Us,{...r,...n,ref:t})});Xn.displayName=si;var ii="ContextMenuRadioGroup",ci=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,...n}=e,r=D(o);return l.jsx(Hs,{...r,...n,ref:t})});ci.displayName=ii;var li="ContextMenuRadioItem",qn=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,...n}=e,r=D(o);return l.jsx(Ws,{...r,...n,ref:t})});qn.displayName=li;var ui="ContextMenuItemIndicator",Zn=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,...n}=e,r=D(o);return l.jsx(zs,{...r,...n,ref:t})});Zn.displayName=ui;var di="ContextMenuSeparator",Jn=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,...n}=e,r=D(o);return l.jsx(Ys,{...r,...n,ref:t})});Jn.displayName=di;var fi="ContextMenuArrow",pi=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,...n}=e,r=D(o);return l.jsx(Xs,{...r,...n,ref:t})});pi.displayName=fi;var Qn="ContextMenuSub",er=e=>{const{__scopeContextMenu:t,children:o,onOpenChange:n,open:r,defaultOpen:s}=e,i=D(t),[c,u]=Q({prop:r,defaultProp:s??!1,onChange:n,caller:Qn});return l.jsx(qs,{...i,open:c,onOpenChange:u,children:o})};er.displayName=Qn;var vi="ContextMenuSubTrigger",tr=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,...n}=e,r=D(o);return l.jsx(Zs,{...r,...n,ref:t})});tr.displayName=vi;var mi="ContextMenuSubContent",or=a.forwardRef((e,t)=>{const{__scopeContextMenu:o,...n}=e,r=D(o);return l.jsx(Js,{...r,...n,ref:t,style:{...e.style,"--radix-context-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-context-menu-content-available-width":"var(--radix-popper-available-width)","--radix-context-menu-content-available-height":"var(--radix-popper-available-height)","--radix-context-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-context-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});or.displayName=mi;function Se(e){return t=>t.pointerType!=="mouse"?e(t):void 0}var Zi=Bn,Ji=Gn,Qi=Un,ec=Wn,tc=zn,oc=Yn,nc=Xn,rc=qn,ac=Zn,sc=Jn,ic=er,cc=tr,lc=or;export{$i as A,lc as B,bi as C,Bi as D,Qi as E,qi as F,ec as G,oc as H,Ei as I,nc as J,ac as K,Si as L,rc as M,tc as N,Li as O,ji as P,sc as Q,xi as R,yr as S,Ci as T,Zi as U,Pi as V,Ji as W,ic as X,wi as a,Ri as b,Dr as c,_i as d,yi as e,Mi as f,Ai as g,Ti as h,Ii as i,Ni as j,Fi as k,Vi as l,ki as m,Di as n,Oi as o,Ki as p,Hi as q,Wi as r,Gi as s,Ui as t,zi as u,Wa as v,za as w,Yi as x,Xi as y,cc as z}; diff --git a/webui/dist/assets/uppy-DSH7n_-V.js b/webui/dist/assets/uppy-BHC3OXBx.js similarity index 99% rename from webui/dist/assets/uppy-DSH7n_-V.js rename to webui/dist/assets/uppy-BHC3OXBx.js index 30adbfe5..c7c36e95 100644 --- a/webui/dist/assets/uppy-DSH7n_-V.js +++ b/webui/dist/assets/uppy-BHC3OXBx.js @@ -1,4 +1,4 @@ -import{ag as us,ah as hs}from"./charts-Dhri-zxi.js";import{g as ce}from"./react-vendor-Dtc2IqVY.js";import"./router-CWhjJi2n.js";import"./radix-extra-Cw1azsjZ.js";const cs=/^data:([^/]+\/[^,;]+(?:[^,]*?))(;base64)?,([\s\S]*)$/;function ps(i,e,t){const s=cs.exec(i),n=e.mimeType??s?.[1]??"plain/text";let r;if(s?.[2]!=null){const a=atob(decodeURIComponent(s[3])),o=new Uint8Array(a.length);for(let d=0;d(e+=`-${ms(t)}`,"/"))+e}function gs(i,e){let t=e||"uppy";return typeof i.name=="string"&&(t+=`-${At(i.name.toLowerCase())}`),i.type!==void 0&&(t+=`-${i.type}`),i.meta&&typeof i.meta.relativePath=="string"&&(t+=`-${At(i.meta.relativePath.toLowerCase())}`),i.data?.size!==void 0&&(t+=`-${i.data.size}`),i.data.lastModified!==void 0&&(t+=`-${i.data.lastModified}`),t}function ys(i){return!i.isRemote||!i.remote?!1:new Set(["box","dropbox","drive","facebook","unsplash"]).has(i.remote.provider)}function bs(i,e){if(ys(i))return i.id;const t=Fi(i);return gs({...i,type:t},e)}const re=Array.from;function vs(i){const e=re(i.files);return Promise.resolve(e)}function Si(i,e,t,{onSuccess:s}){i.readEntries(n=>{const r=[...e,...n];n.length?queueMicrotask(()=>{Si(i,r,t,{onSuccess:s})}):s(r)},n=>{t(n),s(e)})}function Pi(i,e){return i==null?i:{kind:i.isFile?"file":i.isDirectory?"directory":void 0,name:i.name,getFile(){return new Promise((t,s)=>i.file(t,s))},async*values(){const t=i.createReader();yield*await new Promise(n=>{Si(t,[],e,{onSuccess:r=>n(r.map(a=>Pi(a,e)))})})},isSameEntry:void 0}}async function*Ti(i,e,t=void 0){const s=()=>`${e}/${i.name}`;if(i.kind==="file"){const n=await i.getFile();n!=null?(n.relativePath=e?s():null,yield n):t!=null&&(yield t)}else if(i.kind==="directory")for await(const n of i.values())yield*Ti(n,e?s():i.name);else t!=null&&(yield t)}async function*ws(i,e){const t=await Promise.all(Array.from(i.items,async s=>{let n;return n??=Pi(typeof s.getAsEntry=="function"?s.getAsEntry():s.webkitGetAsEntry(),e),{fileSystemHandle:n,lastResortFile:s.getAsFile()}}));for(const{lastResortFile:s,fileSystemHandle:n}of t)if(n!=null)try{yield*Ti(n,"",s)}catch(r){s!=null?yield s:e(r)}else s!=null&&(yield s)}async function _s(i,e){const t=e?.logDropError??Function.prototype;try{const s=[];for await(const n of ws(i,t))s.push(n);return s}catch{return vs(i)}}function Fs(i){for(;i&&!i.dir;)i=i.parentNode;return i?.dir}function Ie(i){return i<10?`0${i}`:i.toString()}function Ce(){const i=new Date,e=Ie(i.getHours()),t=Ie(i.getMinutes()),s=Ie(i.getSeconds());return`${e}:${t}:${s}`}function Ss(){if(typeof window>"u")return!1;const i=document.body;return!(i==null||window==null||!("draggable"in i)||!("ondragstart"in i)||!("ondrop"in i)||!("FormData"in window)||!("FileReader"in window))}function Ut(i){return i.startsWith("blob:")}function Ot(i){return i?/^[^/]+\/(jpe?g|gif|png|svg|svg\+xml|bmp|webp|avif)$/.test(i):!1}function Ps(i){const e=Math.floor(i/3600)%24,t=Math.floor(i/60)%60,s=Math.floor(i%60);return{hours:e,minutes:t,seconds:s}}function Ts(i){const e=Ps(i),t=e.hours===0?"":`${e.hours}h`,s=e.minutes===0?"":`${e.hours===0?e.minutes:` ${e.minutes.toString(10).padStart(2,"0")}`}m`,n=e.hours!==0?"":`${e.minutes===0?e.seconds:` ${e.seconds.toString(10).padStart(2,"0")}`}s`;return`${t}${s}${n}`}function Cs(i,e,t){const s=[];return i.forEach(n=>typeof n!="string"?s.push(n):e[Symbol.split](n).forEach((r,a,o)=>{r!==""&&s.push(r),a{throw new Error(`missing string: ${i}`)};class Ci{locale;constructor(e,{onMissingKey:t=Es}={}){this.locale={strings:{},pluralize(s){return s===1?0:1}},Array.isArray(e)?e.forEach(this.#t,this):this.#t(e),this.#e=t}#e;#t(e){if(!e?.strings)return;const t=this.locale;Object.assign(this.locale,{strings:{...t.strings,...e.strings},pluralize:e.pluralize||t.pluralize})}translate(e,t){return this.translateArray(e,t).join("")}translateArray(e,t){let s=this.locale.strings[e];if(s==null&&(this.#e(e),s=e),typeof s=="object"){if(t&&typeof t.smart_count<"u"){const r=this.locale.pluralize(t.smart_count);return Nt(s[r],t)}throw new Error("Attempted to use a string with plural forms, but no value was given for %{smart_count}")}if(typeof s!="string")throw new Error("string was not a string");return Nt(s,t)}}const Be="...";function Ei(i,e){if(e===0)return"";if(i.length<=e)return i;if(e<=Be.length+1)return`${i.slice(0,e-1)}…`;const t=e-Be.length,s=Math.ceil(t/2),n=Math.floor(t/2);return i.slice(0,s)+Be+i.slice(-n)}var pe,S,ki,K,Dt,Ai,Ui,Oi,at,Qe,Je,oe={},Ni=[],ks=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,fe=Array.isArray;function H(i,e){for(var t in e)i[t]=e[t];return i}function ot(i){i&&i.parentNode&&i.parentNode.removeChild(i)}function lt(i,e,t){var s,n,r,a={};for(r in e)r=="key"?s=e[r]:r=="ref"?n=e[r]:a[r]=e[r];if(arguments.length>2&&(a.children=arguments.length>3?pe.call(arguments,2):t),typeof i=="function"&&i.defaultProps!=null)for(r in i.defaultProps)a[r]===void 0&&(a[r]=i.defaultProps[r]);return ae(i,a,s,n,null)}function ae(i,e,t,s,n){var r={type:i,props:e,key:t,ref:s,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:n??++ki,__i:-1,__u:0};return n==null&&S.vnode!=null&&S.vnode(r),r}function As(){return{current:null}}function V(i){return i.children}function q(i,e){this.props=i,this.context=e}function Z(i,e){if(e==null)return i.__?Z(i.__,i.__i+1):null;for(var t;eo&&K.sort(Ui),i=K.shift(),o=K.length,i.__d&&(t=void 0,s=void 0,n=(s=(e=i).__v).__e,r=[],a=[],e.__P&&((t=H({},s)).__v=s.__v+1,S.vnode&&S.vnode(t),dt(e.__P,t,s,e.__n,e.__P.namespaceURI,32&s.__u?[n]:null,r,n??Z(s),!!(32&s.__u),a),t.__v=s.__v,t.__.__k[t.__i]=t,Mi(r,t,a),s.__e=s.__=null,t.__e!=n&&Di(t)));ke.__r=0}function Ii(i,e,t,s,n,r,a,o,d,u,c){var h,p,f,m,b,v,g,y=s&&s.__k||Ni,w=e.length;for(d=Us(t,e,y,d,w),h=0;h0?ae(a.type,a.props,a.key,a.ref?a.ref:null,a.__v):a).__=i,a.__b=i.__b+1,o=null,(u=a.__i=Os(a,t,d,h))!=-1&&(h--,(o=t[u])&&(o.__u|=2)),o==null||o.__v==null?(u==-1&&(n>c?p--:nd?p--:p++,a.__u|=4))):i.__k[r]=null;if(h)for(r=0;r(c?1:0)){for(n=t-1,r=t+1;n>=0||r=0?n--:r++])!=null&&(2&u.__u)==0&&o==u.key&&d==u.type)return a}return-1}function Bt(i,e,t){e[0]=="-"?i.setProperty(e,t??""):i[e]=t==null?"":typeof t!="number"||ks.test(e)?t:t+"px"}function ge(i,e,t,s,n){var r,a;e:if(e=="style")if(typeof t=="string")i.style.cssText=t;else{if(typeof s=="string"&&(i.style.cssText=s=""),s)for(e in s)t&&e in t||Bt(i.style,e,"");if(t)for(e in t)s&&t[e]==s[e]||Bt(i.style,e,t[e])}else if(e[0]=="o"&&e[1]=="n")r=e!=(e=e.replace(Oi,"$1")),a=e.toLowerCase(),e=a in i||e=="onFocusOut"||e=="onFocusIn"?a.slice(2):e.slice(2),i.l||(i.l={}),i.l[e+r]=t,t?s?t.u=s.u:(t.u=at,i.addEventListener(e,r?Je:Qe,r)):i.removeEventListener(e,r?Je:Qe,r);else{if(n=="http://www.w3.org/2000/svg")e=e.replace(/xlink(H|:h)/,"h").replace(/sName$/,"s");else if(e!="width"&&e!="height"&&e!="href"&&e!="list"&&e!="form"&&e!="tabIndex"&&e!="download"&&e!="rowSpan"&&e!="colSpan"&&e!="role"&&e!="popover"&&e in i)try{i[e]=t??"";break e}catch{}typeof t=="function"||(t==null||t===!1&&e[4]!="-"?i.removeAttribute(e):i.setAttribute(e,e=="popover"&&t==1?"":t))}}function Mt(i){return function(e){if(this.l){var t=this.l[e.type+i];if(e.t==null)e.t=at++;else if(e.t0?i:fe(i)?i.map(xi):H({},i)}function Ns(i,e,t,s,n,r,a,o,d){var u,c,h,p,f,m,b,v=t.props,g=e.props,y=e.type;if(y=="svg"?n="http://www.w3.org/2000/svg":y=="math"?n="http://www.w3.org/1998/Math/MathML":n||(n="http://www.w3.org/1999/xhtml"),r!=null){for(u=0;u2&&(o.children=arguments.length>3?pe.call(arguments,2):t),ae(i.type,o,s||i.key,n||i.ref,null)}pe=Ni.slice,S={__e:function(i,e,t,s){for(var n,r,a;e=e.__;)if((n=e.__c)&&!n.__)try{if((r=n.constructor)&&r.getDerivedStateFromError!=null&&(n.setState(r.getDerivedStateFromError(i)),a=n.__d),n.componentDidCatch!=null&&(n.componentDidCatch(i,s||{}),a=n.__d),a)return n.__E=n}catch(o){i=o}throw i}},ki=0,q.prototype.setState=function(i,e){var t;t=this.__s!=null&&this.__s!=this.state?this.__s:this.__s=H({},this.state),typeof i=="function"&&(i=i(H({},t),this.props)),i&&H(t,i),i!=null&&this.__v&&(e&&this._sb.push(e),It(this))},q.prototype.forceUpdate=function(i){this.__v&&(this.__e=!0,i&&this.__h.push(i),It(this))},q.prototype.render=V,K=[],Ai=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,Ui=function(i,e){return i.__v.__b-e.__v.__b},ke.__r=0,Oi=/(PointerCapture)$|Capture$/i,at=0,Qe=Mt(!1),Je=Mt(!0);var Is=0;function l(i,e,t,s,n,r){e||(e={});var a,o,d=e;if("ref"in d)for(o in d={},e)o=="ref"?a=e[o]:d[o]=e[o];var u={type:i,props:d,key:t,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--Is,__i:-1,__u:0,__source:n,__self:r};if(typeof i=="function"&&(a=i.defaultProps))for(o in a)d[o]===void 0&&(d[o]=a[o]);return S.vnode&&S.vnode(u),u}var le,C,Me,Rt,de=0,zi=[],E=S,Lt=E.__b,zt=E.__r,$t=E.diffed,Ht=E.__c,qt=E.unmount,jt=E.__;function ht(i,e){E.__h&&E.__h(C,i,de||e),de=0;var t=C.__H||(C.__H={__:[],__h:[]});return i>=t.__.length&&t.__.push({}),t.__[i]}function ee(i){return de=1,Bs(Hi,i)}function Bs(i,e,t){var s=ht(le++,2);if(s.t=i,!s.__c&&(s.__=[Hi(void 0,e),function(o){var d=s.__N?s.__N[0]:s.__[0],u=s.t(d,o);d!==u&&(s.__N=[u,s.__[1]],s.__c.setState({}))}],s.__c=C,!C.__f)){var n=function(o,d,u){if(!s.__c.__H)return!0;var c=s.__c.__H.__.filter(function(p){return!!p.__c});if(c.every(function(p){return!p.__N}))return!r||r.call(this,o,d,u);var h=s.__c.props!==o;return c.forEach(function(p){if(p.__N){var f=p.__[0];p.__=p.__N,p.__N=void 0,f!==p.__[0]&&(h=!0)}}),r&&r.call(this,o,d,u)||h};C.__f=!0;var r=C.shouldComponentUpdate,a=C.componentWillUpdate;C.componentWillUpdate=function(o,d,u){if(this.__e){var c=r;r=void 0,n(o,d,u),r=c}a&&a.call(this,o,d,u)},C.shouldComponentUpdate=n}return s.__N||s.__}function Ae(i,e){var t=ht(le++,3);!E.__s&&$i(t.__H,e)&&(t.__=i,t.u=e,C.__H.__h.push(t))}function J(i){return de=5,ct(function(){return{current:i}},[])}function ct(i,e){var t=ht(le++,7);return $i(t.__H,e)&&(t.__=i(),t.__H=e,t.__h=i),t.__}function Ue(i,e){return de=8,ct(function(){return i},e)}function Ms(){for(var i;i=zi.shift();)if(i.__P&&i.__H)try{i.__H.__h.forEach(Ee),i.__H.__h.forEach(et),i.__H.__h=[]}catch(e){i.__H.__h=[],E.__e(e,i.__v)}}E.__b=function(i){C=null,Lt&&Lt(i)},E.__=function(i,e){i&&e.__k&&e.__k.__m&&(i.__m=e.__k.__m),jt&&jt(i,e)},E.__r=function(i){zt&&zt(i),le=0;var e=(C=i.__c).__H;e&&(Me===C?(e.__h=[],C.__h=[],e.__.forEach(function(t){t.__N&&(t.__=t.__N),t.u=t.__N=void 0})):(e.__h.forEach(Ee),e.__h.forEach(et),e.__h=[],le=0)),Me=C},E.diffed=function(i){$t&&$t(i);var e=i.__c;e&&e.__H&&(e.__H.__h.length&&(zi.push(e)!==1&&Rt===E.requestAnimationFrame||((Rt=E.requestAnimationFrame)||xs)(Ms)),e.__H.__.forEach(function(t){t.u&&(t.__H=t.u),t.u=void 0})),Me=C=null},E.__c=function(i,e){e.some(function(t){try{t.__h.forEach(Ee),t.__h=t.__h.filter(function(s){return!s.__||et(s)})}catch(s){e.some(function(n){n.__h&&(n.__h=[])}),e=[],E.__e(s,t.__v)}}),Ht&&Ht(i,e)},E.unmount=function(i){qt&&qt(i);var e,t=i.__c;t&&t.__H&&(t.__H.__.forEach(function(s){try{Ee(s)}catch(n){e=n}}),t.__H=void 0,e&&E.__e(e,t.__v))};var Vt=typeof requestAnimationFrame=="function";function xs(i){var e,t=function(){clearTimeout(s),Vt&&cancelAnimationFrame(e),setTimeout(i)},s=setTimeout(t,35);Vt&&(e=requestAnimationFrame(t))}function Ee(i){var e=C,t=i.__c;typeof t=="function"&&(i.__c=void 0,t()),C=e}function et(i){var e=C;i.__c=i.__(),C=e}function $i(i,e){return!i||i.length!==e.length||e.some(function(t,s){return t!==i[s]})}function Hi(i,e){return typeof e=="function"?e(i):e}const Rs={position:"relative",width:"100%",minHeight:"100%"},Ls={position:"absolute",top:0,left:0,width:"100%",overflow:"visible"};function zs({data:i,rowHeight:e,renderRow:t,overscanCount:s=10,padding:n=4,...r}){const a=J(null),[o,d]=ee(0),[u,c]=ee(0);Ae(()=>{function y(){a.current!=null&&u!==a.current.offsetHeight&&c(a.current.offsetHeight)}return y(),window.addEventListener("resize",y),()=>{window.removeEventListener("resize",y)}},[u]);const h=Ue(()=>{a.current&&d(a.current.scrollTop)},[]);let p=Math.floor(o/e),f=Math.floor(u/e);s&&(p=Math.max(0,p-p%s),f+=s);const m=p+f+n,b=i.slice(p,m),v={...Rs,height:i.length*e},g={...Ls,top:p*e};return l("div",{onScroll:h,ref:a,...r,children:l("div",{role:"presentation",style:v,children:l("div",{role:"presentation",style:g,children:b.map(t)})})})}class $s{uppy;opts;id;defaultLocale;i18n;i18nArray;type;VERSION;constructor(e,t){this.uppy=e,this.opts=t??{}}getPluginState(){const{plugins:e}=this.uppy.getState();return e?.[this.id]||{}}setPluginState(e){const{plugins:t}=this.uppy.getState();this.uppy.setState({plugins:{...t,[this.id]:{...t[this.id],...e}}})}setOptions(e){this.opts={...this.opts,...e},this.setPluginState(void 0),this.i18nInit()}i18nInit(){const e=new Ci([this.defaultLocale,this.uppy.locale,this.opts.locale]);this.i18n=e.translate.bind(e),this.i18nArray=e.translateArray.bind(e),this.setPluginState(void 0)}addTarget(e){throw new Error("Extend the addTarget method to add your plugin to another plugin's target")}install(){}uninstall(){}update(e){}afterUpdate(){}}const Hs={debug:()=>{},warn:()=>{},error:(...i)=>console.error(`[Uppy] [${Ce()}]`,...i)},qs={debug:(...i)=>console.debug(`[Uppy] [${Ce()}]`,...i),warn:(...i)=>console.warn(`[Uppy] [${Ce()}]`,...i),error:(...i)=>console.error(`[Uppy] [${Ce()}]`,...i)};var xe,Wt;function js(){return Wt||(Wt=1,xe=function(e){if(typeof e!="number"||Number.isNaN(e))throw new TypeError(`Expected a number, got ${typeof e}`);const t=e<0;let s=Math.abs(e);if(t&&(s=-s),s===0)return"0 B";const n=["B","KB","MB","GB","TB","PB","EB","ZB","YB"],r=Math.min(Math.floor(Math.log(s)/Math.log(1024)),n.length-1),a=Number(s/1024**r),o=n[r];return`${a>=10||a%1===0?Math.round(a):a.toFixed(1)} ${o}`}),xe}var Vs=js();const X=ce(Vs);var Re,Gt;function Ws(){if(Gt)return Re;Gt=1;function i(e,t){this.text=e=e||"",this.hasWild=~e.indexOf("*"),this.separator=t,this.parts=e.split(t)}return i.prototype.match=function(e){var t=!0,s=this.parts,n,r=s.length,a;if(typeof e=="string"||e instanceof String)if(!this.hasWild&&this.text!=e)t=!1;else{for(a=(e||"").split(this.separator),n=0;t&&n=2}return s?n(s.split(";")[0]):n},Le}var Ks=Gs();const Xs=ce(Ks),Ys={maxFileSize:null,minFileSize:null,maxTotalFileSize:null,maxNumberOfFiles:null,minNumberOfFiles:null,allowedFileTypes:null,requiredMetaFields:[]};class I extends Error{isUserFacing;file;constructor(e,t){super(e),this.isUserFacing=t?.isUserFacing??!0,t?.file&&(this.file=t.file)}isRestriction=!0}class Qs{getI18n;getOpts;constructor(e,t){this.getI18n=t,this.getOpts=()=>{const s=e();if(s.restrictions?.allowedFileTypes!=null&&!Array.isArray(s.restrictions.allowedFileTypes))throw new TypeError("`restrictions.allowedFileTypes` must be an array");return s}}validateAggregateRestrictions(e,t){const{maxTotalFileSize:s,maxNumberOfFiles:n}=this.getOpts().restrictions;if(n&&e.filter(a=>!a.isGhost).length+t.length>n)throw new I(`${this.getI18n()("youCanOnlyUploadX",{smart_count:n})}`);if(s){const r=[...e,...t].reduce((a,o)=>a+(o.size??0),0);if(r>s)throw new I(this.getI18n()("aggregateExceedsSize",{sizeAllowed:X(s),size:X(r)}))}}validateSingleFile(e){const{maxFileSize:t,minFileSize:s,allowedFileTypes:n}=this.getOpts().restrictions;if(n&&!n.some(a=>a.includes("/")?e.type?Xs(e.type.replace(/;.*?$/,""),a):!1:a[0]==="."&&e.extension?e.extension.toLowerCase()===a.slice(1).toLowerCase():!1)){const a=n.join(", ");throw new I(this.getI18n()("youCanOnlyUploadFileTypes",{types:a}),{file:e})}if(t&&e.size!=null&&e.size>t)throw new I(this.getI18n()("exceedsSize",{size:X(t),file:e.name??this.getI18n()("unnamed")}),{file:e});if(s&&e.size!=null&&e.size{this.validateSingleFile(s)}),this.validateAggregateRestrictions(e,t)}validateMinNumberOfFiles(e){const{minNumberOfFiles:t}=this.getOpts().restrictions;if(t&&Object.keys(e).length(t=s,e||(e=Promise.resolve().then(()=>(e=null,i(...t)))),e)}class ue extends $s{#e;isTargetDOMEl;el;parent;title;getTargetPlugin(e){let t;if(typeof e?.addTarget=="function")t=e,t instanceof ue||console.warn(new Error("The provided plugin is not an instance of UIPlugin. This is an indication of a bug with the way Uppy is bundled.",{cause:{targetPlugin:t,UIPlugin:ue}}));else if(typeof e=="function"){const s=e;this.uppy.iteratePlugins(n=>{n instanceof s&&(t=n)})}return t}mount(e,t){const s=t.id,n=fs(e);if(n){this.isTargetDOMEl=!0;const o=document.createElement("div");return o.classList.add("uppy-Root"),this.#e=Js(d=>{this.uppy.getPlugin(this.id)&&(xt(this.render(d,o),o),this.afterUpdate())}),this.uppy.log(`Installing ${s} to a DOM element '${e}'`),this.opts.replaceTargetContent&&(n.innerHTML=""),xt(this.render(this.uppy.getState(),o),o),this.el=o,n.appendChild(o),o.dir=this.opts.direction||Fs(o)||"ltr",this.onMount(),this.el}const r=this.getTargetPlugin(e);if(r)return this.uppy.log(`Installing ${s} to ${r.id}`),this.parent=r,this.el=r.addTarget(t),this.onMount(),this.el;this.uppy.log(`Not installing ${s}`);let a=`Invalid target option given to ${s}.`;throw typeof e=="function"?a+=" The given target is not a Plugin class. Please check that you're not specifying a React Component instead of a plugin. If you are using @uppy/* packages directly, make sure you have only 1 version of @uppy/core installed: run `npm ls @uppy/core` on the command line and verify that all the versions match and are deduped correctly.":a+="If you meant to target an HTML element, please make sure that the element exists. Check that the + - - + + - + - + - + - +
From 32755987a0605b1c8bf104a6af823c1a3191e912 Mon Sep 17 00:00:00 2001 From: SengokuCola <1026294844@qq.com> Date: Mon, 1 Dec 2025 19:10:48 +0800 Subject: [PATCH 38/61] =?UTF-8?q?ref=EF=BC=9A=E9=87=8D=E6=9E=84=E8=AE=B0?= =?UTF-8?q?=E5=BF=86=E6=A3=80=E7=B4=A2=E6=B5=81=E7=A8=8B=EF=BC=8C=E7=95=A5?= =?UTF-8?q?=E5=BE=AE=E6=8F=90=E9=AB=98=E6=B6=88=E8=80=97=EF=BC=8C=E6=8F=90?= =?UTF-8?q?=E9=AB=98=E7=B2=BE=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/memory_system/memory_retrieval.py | 412 ++++++++++-------- .../retrieval_tools/query_chat_history.py | 70 ++- 2 files changed, 260 insertions(+), 222 deletions(-) diff --git a/src/memory_system/memory_retrieval.py b/src/memory_system/memory_retrieval.py index c46036e6..dc7755ea 100644 --- a/src/memory_system/memory_retrieval.py +++ b/src/memory_system/memory_retrieval.py @@ -103,32 +103,21 @@ def init_memory_retrieval_prompt(): 你正在参与聊天,你需要搜集信息来回答问题,帮助你参与聊天。 **重要限制:** -- 最大查询轮数:{max_iterations}轮(当前第{current_iteration}轮,剩余{remaining_iterations}轮) - 思考要简短,直接切入要点 -- 必须严格使用检索到的信息回答问题,不要编造信息 当前需要解答的问题:{question} 已收集的信息: {collected_info} **执行步骤:** -**第一步:思考(Think)** -在思考中分析: -- 当前信息是否足够回答问题({question})? -- **如果信息足够且能找到明确答案**,在思考中直接给出答案,格式为:found_answer(answer="你的答案内容") -- **如果信息不足以解答问题,需要尝试搜集更多信息,进一步调用工具,进入第二步行动环节 -- **如果已有信息不足或无法找到答案,决定结束查询**,在思考中给出:not_enough_info(reason="结束查询的原因") - -**第二步:行动(Action)** - 如果涉及过往事件,或者查询某个过去可能提到过的概念,或者某段时间发生的事件。可以使用聊天记录查询工具查询过往事件 - 如果涉及人物,可以使用人物信息查询工具查询人物信息 - 如果没有可靠信息,且查询时间充足,或者不确定查询类别,也可以使用lpmm知识库查询,作为辅助信息 - 如果信息不足需要使用tool,说明需要查询什么,并输出为纯文本说明,然后调用相应工具查询(可并行调用多个工具) -**重要规则:** -- **只有在检索到明确、有关的信息并得出答案时,才使用found_answer** -- **如果信息不足、无法确定、找不到相关信息导致的无法回答问题,决定结束查询,必须使用not_enough_info,不要使用found_answer** -- 答案必须在思考中给出,格式为 found_answer(answer="...") 或 not_enough_info(reason="...") +**思考** +- 你可以对查询思路给出简短的思考 +- 你必须给出使用什么工具进行查询 """, name="memory_retrieval_react_prompt_head", ) @@ -325,6 +314,66 @@ def _match_jargon_from_text(chat_text: str, chat_id: str) -> List[str]: return list(matched.keys()) +def _log_conversation_messages(conversation_messages: List[Message], head_prompt: Optional[str] = None) -> None: + """输出对话消息列表的日志 + + Args: + conversation_messages: 对话消息列表 + head_prompt: 第一条系统消息(head_prompt)的内容,可选 + """ + if not global_config.debug.show_memory_prompt: + return + + log_lines = [] + + # 如果有head_prompt,先添加为第一条消息 + if head_prompt: + msg_info = "\n[消息 1] 角色: System 内容类型: 文本\n========================================" + msg_info += f"\n{head_prompt}" + log_lines.append(msg_info) + start_idx = 2 + else: + start_idx = 1 + + if not conversation_messages and not head_prompt: + return + + for idx, msg in enumerate(conversation_messages, start_idx): + role_name = msg.role.value if hasattr(msg.role, "value") else str(msg.role) + + # 处理内容 - 显示完整内容,不截断 + if isinstance(msg.content, str): + full_content = msg.content + content_type = "文本" + elif isinstance(msg.content, list): + text_parts = [item for item in msg.content if isinstance(item, str)] + image_count = len([item for item in msg.content if isinstance(item, tuple)]) + full_content = "".join(text_parts) if text_parts else "" + content_type = f"混合({len(text_parts)}段文本, {image_count}张图片)" + else: + full_content = str(msg.content) + content_type = "未知" + + # 构建单条消息的日志信息 + msg_info = f"\n[消息 {idx}] 角色: {role_name} 内容类型: {content_type}\n========================================" + + if full_content: + msg_info += f"\n{full_content}" + + if msg.tool_calls: + msg_info += f"\n 工具调用: {len(msg.tool_calls)}个" + for tool_call in msg.tool_calls: + msg_info += f"\n - {tool_call}" + + if msg.tool_call_id: + msg_info += f"\n 工具调用ID: {msg.tool_call_id}" + + log_lines.append(msg_info) + + total_count = len(conversation_messages) + (1 if head_prompt else 0) + logger.info(f"消息列表 (共{total_count}条):{''.join(log_lines)}") + + async def _react_agent_solve_question( question: str, chat_id: str, @@ -358,6 +407,7 @@ async def _react_agent_solve_question( thinking_steps = [] is_timeout = False conversation_messages: List[Message] = [] + last_head_prompt: Optional[str] = None # 保存最后一次使用的head_prompt for iteration in range(max_iterations): # 检查超时 @@ -380,144 +430,41 @@ async def _react_agent_solve_question( remaining_iterations = max_iterations - current_iteration is_final_iteration = current_iteration >= max_iterations - if is_final_iteration: - # 最后一次迭代,使用最终prompt - tool_definitions = [] - logger.info( - f"ReAct Agent 第 {iteration + 1} 次迭代,问题: {question}|可用工具数量: 0(最后一次迭代,不提供工具调用)" - ) - - prompt = await global_prompt_manager.format_prompt( - "memory_retrieval_react_final_prompt", - bot_name=bot_name, - time_now=time_now, - question=question, - collected_info=collected_info if collected_info else "暂无信息", - current_iteration=current_iteration, - remaining_iterations=remaining_iterations, - max_iterations=max_iterations, - ) - - if global_config.debug.show_memory_prompt: - logger.info(f"ReAct Agent 第 {iteration + 1} 次Prompt: {prompt}") - success, response, reasoning_content, model_name, tool_calls = await llm_api.generate_with_model_with_tools( - prompt, - model_config=model_config.model_task_config.tool_use, - tool_options=tool_definitions, - request_type="memory.react", - ) - else: - # 非最终迭代,使用head_prompt - tool_definitions = tool_registry.get_tool_definitions() - logger.info( - f"ReAct Agent 第 {iteration + 1} 次迭代,问题: {question}|可用工具数量: {len(tool_definitions)}" - ) - - head_prompt = await global_prompt_manager.format_prompt( - "memory_retrieval_react_prompt_head", - bot_name=bot_name, - time_now=time_now, - question=question, - collected_info=collected_info if collected_info else "", - current_iteration=current_iteration, - remaining_iterations=remaining_iterations, - max_iterations=max_iterations, - ) - - def message_factory( - _client, - *, - _head_prompt: str = head_prompt, - _conversation_messages: List[Message] = conversation_messages, - ) -> List[Message]: - messages: List[Message] = [] - - system_builder = MessageBuilder() - system_builder.set_role(RoleType.System) - system_builder.add_text_content(_head_prompt) - messages.append(system_builder.build()) - - messages.extend(_conversation_messages) - - if global_config.debug.show_memory_prompt: - # 优化日志展示 - 合并所有消息到一条日志 - log_lines = [] - for idx, msg in enumerate(messages, 1): - role_name = msg.role.value if hasattr(msg.role, "value") else str(msg.role) - - # 处理内容 - 显示完整内容,不截断 - if isinstance(msg.content, str): - full_content = msg.content - content_type = "文本" - elif isinstance(msg.content, list): - text_parts = [item for item in msg.content if isinstance(item, str)] - image_count = len([item for item in msg.content if isinstance(item, tuple)]) - full_content = "".join(text_parts) if text_parts else "" - content_type = f"混合({len(text_parts)}段文本, {image_count}张图片)" - else: - full_content = str(msg.content) - content_type = "未知" - - # 构建单条消息的日志信息 - msg_info = f"\n[消息 {idx}] 角色: {role_name} 内容类型: {content_type}\n========================================" - - if full_content: - msg_info += f"\n{full_content}" - - if msg.tool_calls: - msg_info += f"\n 工具调用: {len(msg.tool_calls)}个" - for tool_call in msg.tool_calls: - msg_info += f"\n - {tool_call}" - - if msg.tool_call_id: - msg_info += f"\n 工具调用ID: {msg.tool_call_id}" - - log_lines.append(msg_info) - - # 合并所有消息为一条日志输出 - logger.info(f"消息列表 (共{len(messages)}条):{''.join(log_lines)}") - - return messages - - ( - success, - response, - reasoning_content, - model_name, - tool_calls, - ) = await llm_api.generate_with_model_with_tools_by_message_factory( - message_factory, - model_config=model_config.model_task_config.tool_use, - tool_options=tool_definitions, - request_type="memory.react", - ) - - logger.info( - f"ReAct Agent 第 {iteration + 1} 次迭代 模型: {model_name} ,调用工具数量: {len(tool_calls) if tool_calls else 0} ,调用工具响应: {response}" + # 每次迭代开始时,先评估当前信息是否足够回答问题 + evaluation_prompt = await global_prompt_manager.format_prompt( + "memory_retrieval_react_final_prompt", + bot_name=bot_name, + time_now=time_now, + question=question, + collected_info=collected_info if collected_info else "暂无信息", + current_iteration=current_iteration, + remaining_iterations=remaining_iterations, + max_iterations=max_iterations, ) - if not success: - logger.error(f"ReAct Agent LLM调用失败: {response}") - break + # if global_config.debug.show_memory_prompt: + # logger.info(f"ReAct Agent 第 {iteration + 1} 次迭代 评估Prompt: {evaluation_prompt}") - assistant_message: Optional[Message] = None - if tool_calls: - assistant_builder = MessageBuilder() - assistant_builder.set_role(RoleType.Assistant) - if response and response.strip(): - assistant_builder.add_text_content(response) - assistant_builder.set_tool_calls(tool_calls) - assistant_message = assistant_builder.build() - elif response and response.strip(): - assistant_builder = MessageBuilder() - assistant_builder.set_role(RoleType.Assistant) - assistant_builder.add_text_content(response) - assistant_message = assistant_builder.build() + eval_success, eval_response, eval_reasoning_content, eval_model_name, eval_tool_calls = await llm_api.generate_with_model_with_tools( + evaluation_prompt, + model_config=model_config.model_task_config.tool_use, + tool_options=[], # 评估阶段不提供工具 + request_type="memory.react.eval", + ) - # 记录思考步骤 - step = {"iteration": iteration + 1, "thought": response, "actions": [], "observations": []} + if not eval_success: + logger.error(f"ReAct Agent 第 {iteration + 1} 次迭代 评估阶段 LLM调用失败: {eval_response}") + # 评估失败,如果还有剩余迭代次数,尝试继续查询 + if not is_final_iteration: + continue + else: + break - # 优先从思考内容中提取found_answer或not_enough_info + logger.info( + f"ReAct Agent 第 {iteration + 1} 次迭代 评估响应: {eval_response}" + ) + + # 提取函数调用中参数的值,支持单引号和双引号 def extract_quoted_content(text, func_name, param_name): """从文本中提取函数调用中参数的值,支持单引号和双引号 @@ -575,44 +522,147 @@ async def _react_agent_solve_question( return None - # 从LLM的直接输出内容中提取found_answer或not_enough_info + # 从评估响应中提取found_answer或not_enough_info found_answer_content = None not_enough_info_reason = None - # 只检查response(LLM的直接输出内容),不检查reasoning_content - if response: - found_answer_content = extract_quoted_content(response, "found_answer", "answer") + if eval_response: + found_answer_content = extract_quoted_content(eval_response, "found_answer", "answer") if not found_answer_content: - not_enough_info_reason = extract_quoted_content(response, "not_enough_info", "reason") + not_enough_info_reason = extract_quoted_content(eval_response, "not_enough_info", "reason") - # 如果从输出内容中找到了答案,直接返回 + # 如果找到答案,直接返回 if found_answer_content: - step["actions"].append({"action_type": "found_answer", "action_params": {"answer": found_answer_content}}) - step["observations"] = ["从LLM输出内容中检测到found_answer"] - thinking_steps.append(step) - logger.info(f"ReAct Agent 第 {iteration + 1} 次迭代 找到关于问题{question}的答案: {found_answer_content}") + eval_step = { + "iteration": iteration + 1, + "thought": f"[评估] {eval_response}", + "actions": [{"action_type": "found_answer", "action_params": {"answer": found_answer_content}}], + "observations": ["评估阶段检测到found_answer"] + } + thinking_steps.append(eval_step) + logger.info(f"ReAct Agent 第 {iteration + 1} 次迭代 评估阶段找到关于问题{question}的答案: {found_answer_content}") + + # React完成时输出消息列表 + _log_conversation_messages(conversation_messages, last_head_prompt) + return True, found_answer_content, thinking_steps, False + # 如果评估为not_enough_info,且是最终迭代,返回not_enough_info if not_enough_info_reason: - step["actions"].append( - {"action_type": "not_enough_info", "action_params": {"reason": not_enough_info_reason}} - ) - step["observations"] = ["从LLM输出内容中检测到not_enough_info"] - thinking_steps.append(step) - logger.info( - f"ReAct Agent 第 {iteration + 1} 次迭代 无法找到关于问题{question}的答案,原因: {not_enough_info_reason}" - ) - return False, not_enough_info_reason, thinking_steps, False + if is_final_iteration: + eval_step = { + "iteration": iteration + 1, + "thought": f"[评估] {eval_response}", + "actions": [{"action_type": "not_enough_info", "action_params": {"reason": not_enough_info_reason}}], + "observations": ["评估阶段检测到not_enough_info"] + } + thinking_steps.append(eval_step) + logger.info( + f"ReAct Agent 第 {iteration + 1} 次迭代 评估阶段判断信息不足: {not_enough_info_reason}" + ) + + # React完成时输出消息列表 + _log_conversation_messages(conversation_messages, last_head_prompt) + + return False, not_enough_info_reason, thinking_steps, False + else: + # 非最终迭代,信息不足,继续搜集信息 + logger.info( + f"ReAct Agent 第 {iteration + 1} 次迭代 评估阶段判断信息不足: {not_enough_info_reason},继续查询" + ) + # 如果是最终迭代但没有明确判断,视为not_enough_info if is_final_iteration: - step["actions"].append( - {"action_type": "not_enough_info", "action_params": {"reason": "已到达最后一次迭代,无法找到答案"}} - ) - step["observations"] = ["已到达最后一次迭代,无法找到答案"] - thinking_steps.append(step) + eval_step = { + "iteration": iteration + 1, + "thought": f"[评估] {eval_response}", + "actions": [{"action_type": "not_enough_info", "action_params": {"reason": "已到达最后一次迭代,无法找到答案"}}], + "observations": ["已到达最后一次迭代,无法找到答案"] + } + thinking_steps.append(eval_step) logger.info(f"ReAct Agent 第 {iteration + 1} 次迭代 已到达最后一次迭代,无法找到答案") + + # React完成时输出消息列表 + _log_conversation_messages(conversation_messages, last_head_prompt) + return False, "已到达最后一次迭代,无法找到答案", thinking_steps, False + # 非最终迭代且信息不足,使用head_prompt决定调用哪些工具 + tool_definitions = tool_registry.get_tool_definitions() + logger.info( + f"ReAct Agent 第 {iteration + 1} 次迭代,问题: {question}|可用工具数量: {len(tool_definitions)}" + ) + + head_prompt = await global_prompt_manager.format_prompt( + "memory_retrieval_react_prompt_head", + bot_name=bot_name, + time_now=time_now, + question=question, + collected_info=collected_info if collected_info else "", + current_iteration=current_iteration, + remaining_iterations=remaining_iterations, + max_iterations=max_iterations, + ) + last_head_prompt = head_prompt # 保存最后一次使用的head_prompt + + def message_factory( + _client, + *, + _head_prompt: str = head_prompt, + _conversation_messages: List[Message] = conversation_messages, + ) -> List[Message]: + messages: List[Message] = [] + + system_builder = MessageBuilder() + system_builder.set_role(RoleType.System) + system_builder.add_text_content(_head_prompt) + messages.append(system_builder.build()) + + messages.extend(_conversation_messages) + + return messages + + ( + success, + response, + reasoning_content, + model_name, + tool_calls, + ) = await llm_api.generate_with_model_with_tools_by_message_factory( + message_factory, + model_config=model_config.model_task_config.tool_use, + tool_options=tool_definitions, + request_type="memory.react", + ) + + logger.info( + f"ReAct Agent 第 {iteration + 1} 次迭代 模型: {model_name} ,调用工具数量: {len(tool_calls) if tool_calls else 0} ,调用工具响应: {response}" + ) + + if not success: + logger.error(f"ReAct Agent LLM调用失败: {response}") + break + + # 注意:这里不检查found_answer或not_enough_info,这些只在评估阶段(memory_retrieval_react_final_prompt)检查 + # memory_retrieval_react_prompt_head只用于决定调用哪些工具来搜集信息 + + assistant_message: Optional[Message] = None + if tool_calls: + assistant_builder = MessageBuilder() + assistant_builder.set_role(RoleType.Assistant) + if response and response.strip(): + assistant_builder.add_text_content(response) + assistant_builder.set_tool_calls(tool_calls) + assistant_message = assistant_builder.build() + elif response and response.strip(): + assistant_builder = MessageBuilder() + assistant_builder.set_role(RoleType.Assistant) + assistant_builder.add_text_content(response) + assistant_message = assistant_builder.build() + + # 记录思考步骤 + step = {"iteration": iteration + 1, "thought": response, "actions": [], "observations": []} + if assistant_message: conversation_messages.append(assistant_message) @@ -624,21 +674,16 @@ async def _react_agent_solve_question( # 处理工具调用 if not tool_calls: - # 没有工具调用,说明LLM在思考中已经给出了答案(已在前面检查),或者需要继续查询 - # 如果思考中没有答案,说明需要继续查询或等待下一轮 + # 如果没有工具调用,记录思考过程,继续下一轮迭代(下一轮会再次评估) if response and response.strip(): - # 如果响应不为空,记录思考过程,继续下一轮迭代 step["observations"] = [f"思考完成,但未调用工具。响应: {response}"] logger.info(f"ReAct Agent 第 {iteration + 1} 次迭代 思考完成但未调用工具: {response}") - # 继续下一轮迭代,让LLM有机会在思考中给出found_answer或继续查询 collected_info += f"思考: {response}" - thinking_steps.append(step) - continue else: logger.warning(f"ReAct Agent 第 {iteration + 1} 次迭代 无工具调用且无响应") step["observations"] = ["无响应且无工具调用"] - thinking_steps.append(step) - break + thinking_steps.append(step) + continue # 处理工具调用 tool_tasks = [] @@ -655,12 +700,10 @@ async def _react_agent_solve_question( tool = tool_registry.get_tool(tool_name) if tool: # 准备工具参数(需要添加chat_id如果工具需要) - tool_params = tool_args.copy() - - # 如果工具函数签名需要chat_id,添加它 import inspect sig = inspect.signature(tool.execute_func) + tool_params = tool_args.copy() if "chat_id" in sig.parameters: tool_params["chat_id"] = chat_id @@ -717,7 +760,6 @@ async def _react_agent_solve_question( if jargon_info: collected_info += f"\n{jargon_info}\n" logger.info(f"工具输出触发黑话解析: {new_concepts}") - # logger.info(f"ReAct Agent 第 {iteration + 1} 次迭代 工具 {i+1} 执行结果: {observation_text}") thinking_steps.append(step) @@ -732,6 +774,10 @@ async def _react_agent_solve_question( logger.warning("ReAct Agent超时,直接视为not_enough_info") else: logger.warning("ReAct Agent达到最大迭代次数,直接视为not_enough_info") + + # React完成时输出消息列表 + _log_conversation_messages(conversation_messages, last_head_prompt) + return False, "未找到相关信息", thinking_steps, is_timeout diff --git a/src/memory_system/retrieval_tools/query_chat_history.py b/src/memory_system/retrieval_tools/query_chat_history.py index d7131505..478ccb97 100644 --- a/src/memory_system/retrieval_tools/query_chat_history.py +++ b/src/memory_system/retrieval_tools/query_chat_history.py @@ -15,17 +15,14 @@ logger = get_logger("memory_retrieval_tools") async def search_chat_history( - chat_id: str, keyword: Optional[str] = None, participant: Optional[str] = None, fuzzy: bool = True + chat_id: str, keyword: Optional[str] = None, participant: Optional[str] = None ) -> str: """根据关键词或参与人查询记忆,返回匹配的记忆id、记忆标题theme和关键词keywords Args: chat_id: 聊天ID - keyword: 关键词(可选,支持多个关键词,可用空格、逗号等分隔) + keyword: 关键词(可选,支持多个关键词,可用空格、逗号等分隔。匹配规则:如果关键词数量<=2,必须全部匹配;如果关键词数量>2,允许n-1个关键词匹配) participant: 参与人昵称(可选) - fuzzy: 是否使用模糊匹配模式(默认True) - - True: 模糊匹配,只要包含任意一个关键词即匹配(OR关系) - - False: 全匹配,必须包含所有关键词才匹配(AND关系) Returns: str: 查询结果,包含记忆id、theme和keywords @@ -96,31 +93,28 @@ async def search_chat_history( except (json.JSONDecodeError, TypeError, ValueError): pass - # 根据匹配模式检查关键词 - if fuzzy: - # 模糊匹配:只要包含任意一个关键词即匹配(OR关系) - for kw in keywords_lower: - if ( - kw in theme - or kw in summary - or kw in original_text - or any(kw in k for k in record_keywords_list) - ): - keyword_matched = True - break + # 有容错的全匹配:如果关键词数量>2,允许n-1个关键词匹配;否则必须全部匹配 + matched_count = 0 + for kw in keywords_lower: + kw_matched = ( + kw in theme + or kw in summary + or kw in original_text + or any(kw in k for k in record_keywords_list) + ) + if kw_matched: + matched_count += 1 + + # 计算需要匹配的关键词数量 + total_keywords = len(keywords_lower) + if total_keywords > 2: + # 关键词数量>2,允许n-1个关键词匹配 + required_matches = total_keywords - 1 else: - # 全匹配:必须包含所有关键词才匹配(AND关系) - keyword_matched = True - for kw in keywords_lower: - kw_matched = ( - kw in theme - or kw in summary - or kw in original_text - or any(kw in k for k in record_keywords_list) - ) - if not kw_matched: - keyword_matched = False - break + # 关键词数量<=2,必须全部匹配 + required_matches = total_keywords + + keyword_matched = matched_count >= required_matches # 两者都匹配(如果同时有participant和keyword,需要两者都匹配;如果只有一个条件,只需要该条件匹配) matched = participant_matched and keyword_matched @@ -134,8 +128,12 @@ async def search_chat_history( return f"未找到包含关键词'{keywords_str}'且参与人包含'{participant}'的聊天记录" elif keyword: keywords_str = "、".join(parse_keywords_string(keyword)) - match_mode = "包含任意一个关键词" if fuzzy else "包含所有关键词" - return f"未找到{match_mode}'{keywords_str}'的聊天记录" + keywords_list = parse_keywords_string(keyword) + if len(keywords_list) > 2: + required_count = len(keywords_list) - 1 + return f"未找到包含至少{required_count}个关键词(共{len(keywords_list)}个)'{keywords_str}'的聊天记录" + else: + return f"未找到包含所有关键词'{keywords_str}'的聊天记录" elif participant: return f"未找到参与人包含'{participant}'的聊天记录" else: @@ -299,12 +297,12 @@ def register_tool(): # 注册工具1:搜索记忆 register_memory_retrieval_tool( name="search_chat_history", - description="根据关键词或参与人查询记忆,返回匹配的记忆id、记忆标题theme和关键词keywords。用于快速搜索和定位相关记忆。", + description="根据关键词或参与人查询记忆,返回匹配的记忆id、记忆标题theme和关键词keywords。用于快速搜索和定位相关记忆。匹配规则:如果关键词数量<=2,必须全部匹配;如果关键词数量>2,允许n-1个关键词匹配(容错匹配)。", parameters=[ { "name": "keyword", "type": "string", - "description": "关键词(可选,支持多个关键词,可用空格、逗号、斜杠等分隔,如:'麦麦 百度网盘' 或 '麦麦,百度网盘'。用于在主题、关键词、概括、原文中搜索)", + "description": "关键词(可选,支持多个关键词,可用空格、逗号、斜杠等分隔,如:'麦麦 百度网盘' 或 '麦麦,百度网盘'。用于在主题、关键词、概括、原文中搜索。匹配规则:如果关键词数量<=2,必须全部匹配;如果关键词数量>2,允许n-1个关键词匹配)", "required": False, }, { @@ -313,12 +311,6 @@ def register_tool(): "description": "参与人昵称(可选),用于查询包含该参与人的记忆", "required": False, }, - { - "name": "fuzzy", - "type": "boolean", - "description": "是否使用模糊匹配模式(默认True)。True表示模糊匹配(只要包含任意一个关键词即匹配,OR关系),False表示全匹配(必须包含所有关键词才匹配,AND关系)", - "required": False, - }, ], execute_func=search_chat_history, ) From 6444bc0d3e32b04d575751684c44d66bd7145a32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Mon, 1 Dec 2025 20:10:06 +0800 Subject: [PATCH 39/61] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=BC=80?= =?UTF-8?q?=E6=BA=90=E9=A1=B9=E7=9B=AE=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/bot.py b/bot.py index 34dbbda4..0cc46f86 100644 --- a/bot.py +++ b/bot.py @@ -127,6 +127,33 @@ app = None loop = None +def print_opensource_notice(): + """打印开源项目提示,防止倒卖""" + from colorama import init, Fore, Style + + init() + + notice_lines = [ + "", + f"{Fore.CYAN}{'═' * 70}{Style.RESET_ALL}", + f"{Fore.GREEN} ★ MaiBot - 开源 AI 聊天机器人 ★{Style.RESET_ALL}", + f"{Fore.CYAN}{'─' * 70}{Style.RESET_ALL}", + f"{Fore.YELLOW} 本项目是完全免费的开源软件,基于 GPL-3.0 协议发布{Style.RESET_ALL}", + f"{Fore.WHITE} 如果有人向你「出售本软件」,你被骗了!{Style.RESET_ALL}", + "", + f"{Fore.WHITE} 官方仓库: {Fore.BLUE}https://github.com/MaiM-with-u/MaiBot {Style.RESET_ALL}", + f"{Fore.WHITE} 官方文档: {Fore.BLUE}https://docs.mai-mai.org {Style.RESET_ALL}", + f"{Fore.WHITE} 官方群聊: {Fore.BLUE}766798517{Style.RESET_ALL}", + f"{Fore.CYAN}{'─' * 70}{Style.RESET_ALL}", + f"{Fore.RED} ⚠ 将本软件作为「商品」倒卖、隐瞒开源性质均违反协议!{Style.RESET_ALL}", + f"{Fore.CYAN}{'═' * 70}{Style.RESET_ALL}", + "", + ] + + for line in notice_lines: + print(line) + + def easter_egg(): # 彩蛋 from colorama import init, Fore @@ -272,6 +299,9 @@ def raw_main(): if platform.system().lower() != "windows": time.tzset() # type: ignore + # 打印开源提示(防止倒卖) + print_opensource_notice() + check_eula() logger.info("检查EULA和隐私条款完成") From 51b63a3e8ca2adb77922aa760da3f43b523e0303 Mon Sep 17 00:00:00 2001 From: Oct-autumn Date: Mon, 1 Dec 2025 23:29:04 +0800 Subject: [PATCH 40/61] docs: update EULA --- EULA.md | 151 ++++++++++++++++++++++++++------------------------------ 1 file changed, 71 insertions(+), 80 deletions(-) diff --git a/EULA.md b/EULA.md index 249c0e48..ebc7a141 100644 --- a/EULA.md +++ b/EULA.md @@ -1,8 +1,9 @@ -# **MaiBot最终用户许可协议** -**版本:V1.1** -**更新日期:2025年7月10日** -**生效日期:2025年3月18日** -**适用的MaiBot版本号:所有版本** +# **MaiBot最终用户许可协议** + +**版本:V1.2** +**更新日期:2025年12月01日** +**生效日期:2025年12月01日** +**适用的MaiBot版本号:所有版本** **2025© MaiBot项目团队** @@ -14,130 +15,120 @@ **1.2** 在运行或使用本项目之前,您**必须阅读并同意本协议的所有条款**。未成年人或其它无/不完全民事行为能力责任人请**在监护人的陪同下**阅读并同意本协议。如果您不同意,则不得运行或使用本项目。在这种情况下,您应立即从您的设备上卸载或删除本项目及其所有副本。 - ## 二、许可授权 ### 源代码许可 + **2.1** 您**了解**本项目的源代码是基于GPLv3(GNU通用公共许可证第三版)开源协议发布的。您**可以自由使用、修改、分发**本项目的源代码,但**必须遵守**GPLv3许可证的要求。详细内容请参阅项目仓库中的LICENSE文件。 -**2.2** 您**了解**本项目的源代码中可能包含第三方开源代码,这些代码的许可证可能与GPLv3许可证不同。您**同意**在使用这些代码时**遵守**相应的许可证要求。 - +**2.2** 您**了解**本项目的源代码中可能包含第三方开源代码,这些代码的许可证可能与GPLv3许可证不同。您**同意**在使用这些代码时**遵守**相应的许可证要求. ### 输入输出内容授权 -**2.3** 您**了解**本项目是使用您的配置信息、提交的指令(以下简称“输入内容”)和生成的内容(以下简称“输出内容”)构建请求发送到第三方API生成回复的机器人项目。 - +**2.4** 您**了解**本项目是使用您的配置信息、提交的指令(以下简称“输入内容”)和生成的内容(以下简称“输出内容”)构建请求发送到第三方生成回复的机器人项目。 **2.4** 您**授权**本项目使用您的输入和输出内容按照项目的隐私政策用于以下行为: - - 调用第三方API生成回复; - - 调用第三方API用于构建本项目专用的存储于您部署或使用的数据库中的知识库和记忆库; - - 收集并记录本项目专用的存储于您部署或使用的设备中的日志; + +- 调用第三方API生成回复; +- 调用第三方API用于构建本项目专用的存储于您使用的数据库中的知识库和记忆库; +- 调用第三方开发的插件系统功能; +- 收集并记录本项目专用的存储于您使用的设备中的日志; **2.4** 您**了解**本项目的源代码中包含第三方API的调用代码,这些API的使用可能受到第三方的服务条款和隐私政策的约束。在使用这些API时,您**必须遵守**相应的服务条款。 **2.5** 项目团队**不对**第三方API的服务质量、稳定性、准确性、安全性负责,亦**不对**第三方API的服务变更、终止、限制等行为负责。 - -### 插件系统授权和责任免责 - -**2.6** 您**了解**本项目包含插件系统功能,允许加载和使用由第三方开发者(非MaiBot核心开发组成员)开发的插件。这些第三方插件可能具有独立的许可证条款和使用协议。 - -**2.7** 您**了解并同意**: - - 第三方插件的开发、维护、分发由其各自的开发者负责,**与MaiBot项目团队无关**; - - 第三方插件的功能、质量、安全性、合规性**完全由插件开发者负责**; - - MaiBot项目团队**仅提供**插件系统的技术框架,**不对**任何第三方插件的内容、行为或后果承担责任; - - 您使用任何第三方插件的风险**完全由您自行承担**; - -**2.8** 在使用第三方插件前,您**应当**: - - 仔细阅读并遵守插件开发者提供的许可证条款和使用协议; - - 自行评估插件的安全性、合规性和适用性; - - 确保插件的使用符合您所在地区的法律法规要求; - - ## 三、用户行为 -**3.1** 您**了解**本项目会将您的配置信息、输入指令和生成内容发送到第三方API,您**不应**在输入指令和生成内容中包含以下内容: - - 涉及任何国家或地区秘密、商业秘密或其他可能会对国家或地区安全或者公共利益造成不利影响的数据; - - 涉及个人隐私、个人信息或其他敏感信息的数据; - - 任何侵犯他人合法权益的内容; - - 任何违反国家或地区法律法规、政策规定的内容; +**3.1** 您**了解**本项目会将您的配置信息、输入指令和生成内容发送到第三方,您**不应**在输入指令和生成内容中包含以下内容: + +- 涉及任何国家或地区秘密、商业秘密或其他可能会对国家或地区安全或者公共利益造成不利影响的数据; +- 涉及个人隐私、个人信息或其他敏感信息的数据; +- 任何侵犯他人合法权益的内容; +- 任何违反国家或地区法律法规、政策规定的内容; **3.2** 您**不应**将本项目用于以下用途: - - 违反任何国家或地区法律法规、政策规定的行为; + +- 违反任何国家或地区法律法规、政策规定的行为; **3.3** 您**应当**自行确保您被存储在本项目的知识库、记忆库和日志中的输入和输出内容的合法性与合规性以及存储行为的合法性与合规性。您需**自行承担**由此产生的任何法律责任。 **3.4** 对于第三方插件的使用,您**不应**: - - 使用可能存在安全漏洞、恶意代码或违法内容的插件; - - 通过插件进行任何违反法律法规的行为; - - 将插件用于侵犯他人权益或危害系统安全的用途; -**3.5** 您**承诺**对使用第三方插件的行为及其后果承担**完全责任**,包括但不限于因插件缺陷、恶意行为或不当使用造成的任何损失或法律纠纷。 +- 安装、使用任何来源不明或未经验证的第三方插件; +- 使用任何违反法律法规、政策规定或第三方平台规则的第三方插件; +**3.5** 您**应当**自行确保您安装和使用的第三方插件的合法性与合规性以及安装和使用行为的合法性与合规性。您需**自行承担**由此产生的任何法律责任。 +**3.6** 由于本项目会将您的输入指令和生成内容发送到第三方,当您将本项目用于第三方交流环境(如与除您以外的人私聊、群聊、论坛、直播等)时,您**应当**事先明确告知其他交流参与者本项目的使用情况,包括但不限于: + +- 本项目的输出内容是由人工智能生成的; +- 本项目会将交流内容发送到第三方; +- 本项目的隐私政策和用户行为要求; + +您需**自行承担**由此产生的任何后果和法律责任。 + +**3.7** 项目团队**不鼓励**也**不支持**将本项目用于商业用途,但若您确实需要将本项目用于商业用途,您**应当**标明项目地址(如“本项目由MaiBot()驱动”),并**自行承担**由此产生的任何法律责任。 ## 四、免责条款 **4.1** 本项目的输出内容依赖第三方API,**不受**项目团队控制,亦**不代表**项目团队的观点。 -**4.2** 除本协议条目2.4提到的隐私政策之外,项目团队**不会**对您提供任何形式的担保,亦**不对**使用本项目的造成的任何后果负责。 +**4.2** 除本协议条目2.4提到的隐私政策之外,项目团队**不会**对您提供任何形式的担保,亦**不对**使用本项目的造成的任何直接或间接后果负责。 -**4.3** 关于第三方插件,项目团队**明确声明**: - - 项目团队**不对**任何第三方插件的功能、安全性、稳定性、合规性或适用性提供任何形式的保证或担保; - - 项目团队**不对**因使用第三方插件而产生的任何直接或间接损失、数据丢失、系统故障、安全漏洞、法律纠纷或其他后果承担责任; - - 第三方插件的质量问题、技术支持、bug修复等事宜应**直接联系插件开发者**,与项目团队无关; - - 项目团队**保留**在不另行通知的情况下,对插件系统功能进行修改、限制或移除的权利; +**4.3** 关于第三方插件,项目团队**声明**: + +- 项目团队**不对**任何第三方插件的功能、安全性、稳定性、合规性或适用性提供任何形式的保证或担保; +- 项目团队**不对**因使用第三方插件而产生的任何直接或间接后果承担责任; +- 项目团队**不对**第三方插件的质量问题、技术支持、bug修复等事宜负责。如有相关问题,应**直接联系插件开发者**; ## 五、其他条款 -**5.1** 项目团队有权**随时修改本协议的条款**,但**没有**义务通知您。修改后的协议将在本项目的新版本中生效,您应定期检查本协议的最新版本。 +**5.1** 项目团队有权**随时修改本协议的条款**,但**无义务**通知您。修改后的协议将在本项目的新版本中推送,您应定期检查本协议的最新版本。 **5.2** 项目团队**保留**本协议的最终解释权。 - ## 附录:其他重要须知 -### 一、过往版本使用条件追溯 +### 一、风险提示 -**1.1** 对于本项目此前未配备 EULA 协议的版本,自本协议发布之日起,若用户希望继续使用本项目,应在本协议生效后的合理时间内,通过升级到最新版本并同意本协议全部条款。若在本版协议生效日(2025年3月18日)之后,用户仍使用此前无 EULA 协议的项目版本且未同意本协议,则用户无权继续使用,项目方有权采取措施阻止其使用行为,并保留追究相关法律责任的权利。 +**1.1** 隐私安全风险 +- 本项目会将您的配置信息、输入指令和生成内容发送到第三方API,而这些API的服务质量、稳定性、准确性、安全性不受项目团队控制。 +- 本项目会收集您的输入和输出内容,用于构建本项目专用的知识库和记忆库,以提高回复的准确性和连贯性。 -### 二、风险提示 +**因此,为了保障您的隐私信息安全,请注意以下事项:** -**2.1 隐私安全风险** +- 避免在涉及个人隐私、个人信息或其他敏感信息的环境中使用本项目; +- 避免在不可信的环境中使用本项目; - - 本项目会将您的配置信息、输入指令和生成内容发送到第三方API,而这些API的服务质量、稳定性、准确性、安全性不受项目团队控制。 - - 本项目会收集您的输入和输出内容,用于构建本项目专用的知识库和记忆库,以提高回复的准确性和连贯性。 - - **因此,为了保障您的隐私信息安全,请注意以下事项:** - - - 避免在涉及个人隐私、个人信息或其他敏感信息的环境中使用本项目; - - 避免在不可信的环境中使用本项目; - -**2.2 精神健康风险** +**1.2** 精神健康风险 本项目仅为工具型机器人,不具备情感交互能力。建议用户: - - 避免过度依赖AI回复处理现实问题或情绪困扰; - - 如感到心理不适,请及时寻求专业心理咨询服务。 - - 如遇心理困扰,请寻求专业帮助(全国心理援助热线:12355)。 -**2.3 第三方插件风险** +- 避免过度依赖AI回复处理现实问题或情绪困扰; +- 如感到心理不适,请及时寻求专业心理咨询服务; +- 如遇心理困扰,请寻求专业帮助(全国心理援助热线:12355); + +**1.3** 第三方插件风险 本项目的插件系统允许加载第三方开发的插件,这可能带来以下风险: - - **安全风险**:第三方插件可能包含恶意代码、安全漏洞或未知的安全威胁; - - **稳定性风险**:插件可能导致系统崩溃、性能下降或功能异常; - - **隐私风险**:插件可能收集、传输或泄露您的个人信息和数据; - - **合规风险**:插件的功能或行为可能违反相关法律法规或平台规则; - - **兼容性风险**:插件可能与主程序或其他插件产生冲突; - **因此,在使用第三方插件时,请务必:** +- **安全风险**:第三方插件可能包含恶意代码、安全漏洞或未知的安全威胁; +- **稳定性风险**:插件可能导致系统崩溃、性能下降或功能异常; +- **隐私风险**:插件可能收集、传输或泄露您的个人信息和数据; +- **合规风险**:插件的功能或行为可能违反相关法律法规或平台规则; +- **兼容性风险**:插件可能与主程序或其他插件产生冲突; - - 仅从可信来源获取和安装插件; - - 在安装前仔细了解插件的功能、权限和开发者信息; - - 定期检查和更新已安装的插件; - - 如发现插件异常行为,请立即停止使用并卸载; - - 对插件的使用后果承担完全责任; +**因此,在使用第三方插件时,请务必:** -### 三、其他 -**3.1 争议解决** - - 本协议适用中国法律,争议提交相关地区法院管辖; - - 若因GPLv3许可产生纠纷,以许可证官方解释为准。 +- 仅从可信来源获取和安装插件; +- 在安装前仔细了解插件的功能、权限和开发者信息; +- 定期检查和更新已安装的插件; +- 如发现插件异常行为,请立即停止使用并卸载; + +### 二、其他 + +**2.1** 争议解决 + +- 本协议适用中国法律,争议提交相关地区法院管辖; +- 若因GPLv3许可产生纠纷,以许可证官方解释为准。 From 2f61df1cc5f6e42f91dc4f7f8b2b72058a0d69d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Mon, 1 Dec 2025 23:30:01 +0800 Subject: [PATCH 41/61] =?UTF-8?q?feat:=20=E5=A2=9E=E5=BC=BA=E8=99=9A?= =?UTF-8?q?=E6=8B=9F=E8=BA=AB=E4=BB=BD=E6=A8=A1=E5=BC=8F=E6=94=AF=E6=8C=81?= =?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0=E7=BE=A4=20ID=20=E5=A4=84=E7=90=86?= =?UTF-8?q?=E5=92=8C=E5=8E=86=E5=8F=B2=E8=AE=B0=E5=BD=95=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../message_receive/uni_message_sender.py | 23 +- src/webui/chat_routes.py | 441 ++++++++++++++++-- 2 files changed, 414 insertions(+), 50 deletions(-) diff --git a/src/chat/message_receive/uni_message_sender.py b/src/chat/message_receive/uni_message_sender.py index 13ff3641..93f5a0fa 100644 --- a/src/chat/message_receive/uni_message_sender.py +++ b/src/chat/message_receive/uni_message_sender.py @@ -18,6 +18,9 @@ logger = get_logger("sender") # WebUI 聊天室的消息广播器(延迟导入避免循环依赖) _webui_chat_broadcaster = None +# 虚拟群 ID 前缀(与 chat_routes.py 保持一致) +VIRTUAL_GROUP_ID_PREFIX = "webui_virtual_group_" + def get_webui_chat_broadcaster(): """获取 WebUI 聊天室广播器""" @@ -32,16 +35,24 @@ def get_webui_chat_broadcaster(): return _webui_chat_broadcaster +def is_webui_virtual_group(group_id: str) -> bool: + """检查是否是 WebUI 虚拟群""" + return group_id and group_id.startswith(VIRTUAL_GROUP_ID_PREFIX) + + async def _send_message(message: MessageSending, show_log=True) -> bool: """合并后的消息发送函数,包含WS发送和日志记录""" message_preview = truncate_message(message.processed_plain_text, max_length=200) platform = message.message_info.platform + group_id = message.message_info.group_info.group_id if message.message_info.group_info else None try: - # 检查是否是 WebUI 平台的消息 + # 检查是否是 WebUI 平台的消息,或者是 WebUI 虚拟群的消息 chat_manager, webui_platform = get_webui_chat_broadcaster() - if platform == webui_platform and chat_manager is not None: - # WebUI 聊天室消息,通过 WebSocket 广播 + is_webui_message = (platform == webui_platform) or is_webui_virtual_group(group_id) + + if is_webui_message and chat_manager is not None: + # WebUI 聊天室消息(包括虚拟身份模式),通过 WebSocket 广播 import time from src.config.config import global_config @@ -51,6 +62,7 @@ async def _send_message(message: MessageSending, show_log=True) -> bool: "content": message.processed_plain_text, "message_type": "text", "timestamp": time.time(), + "group_id": group_id, # 包含群 ID 以便前端区分不同的聊天标签 "sender": { "name": global_config.bot.nickname, "avatar": None, @@ -63,7 +75,10 @@ async def _send_message(message: MessageSending, show_log=True) -> bool: # 无需手动保存 if show_log: - logger.info(f"已将消息 '{message_preview}' 发往 WebUI 聊天室") + if is_webui_virtual_group(group_id): + logger.info(f"已将消息 '{message_preview}' 发往 WebUI 虚拟群 (平台: {platform})") + else: + logger.info(f"已将消息 '{message_preview}' 发往 WebUI 聊天室") return True # 直接调用API发送消息 diff --git a/src/webui/chat_routes.py b/src/webui/chat_routes.py index f0403d09..14d8d9d2 100644 --- a/src/webui/chat_routes.py +++ b/src/webui/chat_routes.py @@ -1,4 +1,9 @@ -"""本地聊天室路由 - WebUI 与麦麦直接对话""" +"""本地聊天室路由 - WebUI 与麦麦直接对话 + +支持两种模式: +1. WebUI 模式:使用 WebUI 平台独立身份聊天 +2. 虚拟身份模式:使用真实平台用户的身份,在虚拟群聊中与麦麦对话 +""" import time import uuid @@ -7,7 +12,7 @@ from fastapi import APIRouter, WebSocket, WebSocketDisconnect, Query from pydantic import BaseModel from src.common.logger import get_logger -from src.common.database.database_model import Messages +from src.common.database.database_model import Messages, PersonInfo from src.config.config import global_config from src.chat.message_receive.bot import chat_bot @@ -19,10 +24,25 @@ router = APIRouter(prefix="/api/chat", tags=["LocalChat"]) WEBUI_CHAT_GROUP_ID = "webui_local_chat" WEBUI_CHAT_PLATFORM = "webui" +# 虚拟身份模式的群 ID 前缀 +VIRTUAL_GROUP_ID_PREFIX = "webui_virtual_group_" + # 固定的 WebUI 用户 ID 前缀 WEBUI_USER_ID_PREFIX = "webui_user_" +class VirtualIdentityConfig(BaseModel): + """虚拟身份配置""" + + enabled: bool = False # 是否启用虚拟身份模式 + platform: Optional[str] = None # 目标平台(如 qq, discord 等) + person_id: Optional[str] = None # PersonInfo 的 person_id + user_id: Optional[str] = None # 原始平台用户 ID + user_nickname: Optional[str] = None # 用户昵称 + group_id: Optional[str] = None # 虚拟群 ID(自动生成或用户指定) + group_name: Optional[str] = None # 虚拟群名(用户自定义) + + class ChatHistoryMessage(BaseModel): """聊天历史消息""" @@ -41,12 +61,25 @@ class ChatHistoryManager: def __init__(self, max_messages: int = 200): self.max_messages = max_messages - def _message_to_dict(self, msg: Messages) -> Dict[str, Any]: - """将数据库消息转换为前端格式""" + def _message_to_dict(self, msg: Messages, group_id: Optional[str] = None) -> Dict[str, Any]: + """将数据库消息转换为前端格式 + + Args: + msg: 数据库消息对象 + group_id: 群 ID,用于判断是否是虚拟群 + """ # 判断是否是机器人消息 - # WebUI 用户的 user_id 以 "webui_" 开头,其他都是机器人消息 user_id = msg.user_id or "" - is_bot = not user_id.startswith("webui_") and not user_id.startswith(WEBUI_USER_ID_PREFIX) + + # 对于虚拟群,通过比较机器人 QQ 账号来判断 + # 对于普通 WebUI 群,检查 user_id 是否以 webui_ 开头 + if group_id and group_id.startswith(VIRTUAL_GROUP_ID_PREFIX): + # 虚拟群:user_id 等于机器人 QQ 账号的是机器人消息 + bot_qq = str(global_config.bot.qq_account) + is_bot = user_id == bot_qq + else: + # 普通 WebUI 群:不以 webui_ 开头的是机器人消息 + is_bot = not user_id.startswith("webui_") and not user_id.startswith(WEBUI_USER_ID_PREFIX) return { "id": msg.message_id, @@ -58,32 +91,44 @@ class ChatHistoryManager: "is_bot": is_bot, } - def get_history(self, limit: int = 50) -> List[Dict[str, Any]]: - """从数据库获取最近的历史记录""" + def get_history(self, limit: int = 50, group_id: Optional[str] = None) -> List[Dict[str, Any]]: + """从数据库获取最近的历史记录 + + Args: + limit: 获取的消息数量 + group_id: 群 ID,默认为 WEBUI_CHAT_GROUP_ID + """ + target_group_id = group_id if group_id else WEBUI_CHAT_GROUP_ID try: - # 查询 WebUI 平台的消息,按时间排序 + # 查询指定群的消息,按时间排序 messages = ( Messages.select() - .where(Messages.chat_info_group_id == WEBUI_CHAT_GROUP_ID) + .where(Messages.chat_info_group_id == target_group_id) .order_by(Messages.time.desc()) .limit(limit) ) # 转换为列表并反转(使最旧的消息在前) - result = [self._message_to_dict(msg) for msg in messages] + # 传递 group_id 以便正确判断虚拟群中的机器人消息 + result = [self._message_to_dict(msg, target_group_id) for msg in messages] result.reverse() - logger.debug(f"从数据库加载了 {len(result)} 条聊天记录") + logger.debug(f"从数据库加载了 {len(result)} 条聊天记录 (group_id={target_group_id})") return result except Exception as e: logger.error(f"从数据库加载聊天记录失败: {e}") return [] - def clear_history(self) -> int: - """清空 WebUI 聊天历史记录""" + def clear_history(self, group_id: Optional[str] = None) -> int: + """清空聊天历史记录 + + Args: + group_id: 群 ID,默认清空 WebUI 默认聊天室 + """ + target_group_id = group_id if group_id else WEBUI_CHAT_GROUP_ID try: - deleted = Messages.delete().where(Messages.chat_info_group_id == WEBUI_CHAT_GROUP_ID).execute() - logger.info(f"已清空 {deleted} 条 WebUI 聊天记录") + deleted = Messages.delete().where(Messages.chat_info_group_id == target_group_id).execute() + logger.info(f"已清空 {deleted} 条聊天记录 (group_id={target_group_id})") return deleted except Exception as e: logger.error(f"清空聊天记录失败: {e}") @@ -132,27 +177,57 @@ chat_manager = ChatConnectionManager() def create_message_data( - content: str, user_id: str, user_name: str, message_id: Optional[str] = None, is_at_bot: bool = True + content: str, + user_id: str, + user_name: str, + message_id: Optional[str] = None, + is_at_bot: bool = True, + virtual_config: Optional[VirtualIdentityConfig] = None, ) -> Dict[str, Any]: - """创建符合麦麦消息格式的消息数据""" + """创建符合麦麦消息格式的消息数据 + + Args: + content: 消息内容 + user_id: 用户 ID + user_name: 用户昵称 + message_id: 消息 ID(可选,自动生成) + is_at_bot: 是否 @ 机器人 + virtual_config: 虚拟身份配置(可选,启用后使用真实平台身份) + """ if message_id is None: message_id = str(uuid.uuid4()) + # 确定使用的平台、群信息和用户信息 + if virtual_config and virtual_config.enabled: + # 虚拟身份模式:使用真实平台身份 + platform = virtual_config.platform or WEBUI_CHAT_PLATFORM + group_id = virtual_config.group_id or f"{VIRTUAL_GROUP_ID_PREFIX}{uuid.uuid4().hex[:8]}" + group_name = virtual_config.group_name or "WebUI虚拟群聊" + actual_user_id = virtual_config.user_id or user_id + actual_user_name = virtual_config.user_nickname or user_name + else: + # 标准 WebUI 模式 + platform = WEBUI_CHAT_PLATFORM + group_id = WEBUI_CHAT_GROUP_ID + group_name = "WebUI本地聊天室" + actual_user_id = user_id + actual_user_name = user_name + return { "message_info": { - "platform": WEBUI_CHAT_PLATFORM, + "platform": platform, "message_id": message_id, "time": time.time(), "group_info": { - "group_id": WEBUI_CHAT_GROUP_ID, - "group_name": "WebUI本地聊天室", - "platform": WEBUI_CHAT_PLATFORM, + "group_id": group_id, + "group_name": group_name, + "platform": platform, }, "user_info": { - "user_id": user_id, - "user_nickname": user_name, - "user_cardname": user_name, - "platform": WEBUI_CHAT_PLATFORM, + "user_id": actual_user_id, + "user_nickname": actual_user_name, + "user_cardname": actual_user_name, + "platform": platform, }, "additional_config": { "at_bot": is_at_bot, @@ -180,12 +255,15 @@ def create_message_data( async def get_chat_history( limit: int = Query(default=50, ge=1, le=200), user_id: Optional[str] = Query(default=None), # 保留参数兼容性,但不用于过滤 + group_id: Optional[str] = Query(default=None), # 可选:指定群 ID 获取历史 ): """获取聊天历史记录 所有 WebUI 用户共享同一个聊天室,因此返回所有历史记录 + 如果指定了 group_id,则获取该虚拟群的历史记录 """ - history = chat_history.get_history(limit) + target_group_id = group_id if group_id else WEBUI_CHAT_GROUP_ID + history = chat_history.get_history(limit, target_group_id) return { "success": True, "messages": history, @@ -193,10 +271,92 @@ async def get_chat_history( } +@router.get("/platforms") +async def get_available_platforms(): + """获取可用平台列表 + + 从 PersonInfo 表中获取所有已知的平台 + """ + try: + from peewee import fn + + # 查询所有不同的平台 + platforms = ( + PersonInfo.select(PersonInfo.platform, fn.COUNT(PersonInfo.id).alias("count")) + .group_by(PersonInfo.platform) + .order_by(fn.COUNT(PersonInfo.id).desc()) + ) + + result = [] + for p in platforms: + if p.platform: # 排除空平台 + result.append({"platform": p.platform, "count": p.count}) + + return {"success": True, "platforms": result} + except Exception as e: + logger.error(f"获取平台列表失败: {e}") + return {"success": False, "error": str(e), "platforms": []} + + +@router.get("/persons") +async def get_persons_by_platform( + platform: str = Query(..., description="平台名称"), + search: Optional[str] = Query(default=None, description="搜索关键词"), + limit: int = Query(default=50, ge=1, le=200), +): + """获取指定平台的用户列表 + + Args: + platform: 平台名称(如 qq, discord 等) + search: 搜索关键词(匹配昵称、用户名、user_id) + limit: 返回数量限制 + """ + try: + # 构建查询 + query = PersonInfo.select().where(PersonInfo.platform == platform) + + # 搜索过滤 + if search: + query = query.where( + (PersonInfo.person_name.contains(search)) + | (PersonInfo.nickname.contains(search)) + | (PersonInfo.user_id.contains(search)) + ) + + # 按最后交互时间排序,优先显示活跃用户 + from peewee import Case + + query = query.order_by(Case(None, [(PersonInfo.last_know.is_null(), 1)], 0), PersonInfo.last_know.desc()) + query = query.limit(limit) + + result = [] + for person in query: + result.append( + { + "person_id": person.person_id, + "user_id": person.user_id, + "person_name": person.person_name, + "nickname": person.nickname, + "is_known": person.is_known, + "platform": person.platform, + "display_name": person.person_name or person.nickname or person.user_id, + } + ) + + return {"success": True, "persons": result, "total": len(result)} + except Exception as e: + logger.error(f"获取用户列表失败: {e}") + return {"success": False, "error": str(e), "persons": []} + + @router.delete("/history") -async def clear_chat_history(): - """清空聊天历史记录""" - deleted = chat_history.clear_history() +async def clear_chat_history(group_id: Optional[str] = Query(default=None)): + """清空聊天历史记录 + + Args: + group_id: 可选,指定要清空的群 ID,默认清空 WebUI 默认聊天室 + """ + deleted = chat_history.clear_history(group_id) return { "success": True, "message": f"已清空 {deleted} 条聊天记录", @@ -208,12 +368,22 @@ async def websocket_chat( websocket: WebSocket, user_id: Optional[str] = Query(default=None), user_name: Optional[str] = Query(default="WebUI用户"), + platform: Optional[str] = Query(default=None), + person_id: Optional[str] = Query(default=None), + group_name: Optional[str] = Query(default=None), + group_id: Optional[str] = Query(default=None), # 前端传递的稳定 group_id ): """WebSocket 聊天端点 Args: user_id: 用户唯一标识(由前端生成并持久化) user_name: 用户显示昵称(可修改) + platform: 虚拟身份模式的平台(可选) + person_id: 虚拟身份模式的用户 person_id(可选) + group_name: 虚拟身份模式的群名(可选) + group_id: 虚拟身份模式的群 ID(可选,由前端生成并持久化) + + 虚拟身份模式可通过 URL 参数直接配置,或通过消息中的 set_virtual_identity 配置 """ # 生成会话 ID(每次连接都是新的) session_id = str(uuid.uuid4()) @@ -225,23 +395,60 @@ async def websocket_chat( # 确保 user_id 有正确的前缀 user_id = f"{WEBUI_USER_ID_PREFIX}{user_id}" + # 当前会话的虚拟身份配置(可通过消息动态更新) + current_virtual_config: Optional[VirtualIdentityConfig] = None + + # 如果 URL 参数中提供了虚拟身份信息,自动配置 + if platform and person_id: + try: + person = PersonInfo.get_or_none(PersonInfo.person_id == person_id) + if person: + # 使用前端传递的 group_id,如果没有则生成一个稳定的 + virtual_group_id = group_id or f"{VIRTUAL_GROUP_ID_PREFIX}{platform}_{person.user_id}" + current_virtual_config = VirtualIdentityConfig( + enabled=True, + platform=person.platform, + person_id=person.person_id, + user_id=person.user_id, + user_nickname=person.person_name or person.nickname or person.user_id, + group_id=virtual_group_id, + group_name=group_name or "WebUI虚拟群聊", + ) + logger.info(f"虚拟身份模式已通过 URL 参数激活: {current_virtual_config.user_nickname} @ {current_virtual_config.platform}, group_id={virtual_group_id}") + except Exception as e: + logger.warning(f"通过 URL 参数配置虚拟身份失败: {e}") + await chat_manager.connect(websocket, session_id, user_id) try: - # 发送会话信息(包含用户 ID,前端需要保存) - await chat_manager.send_message( - session_id, - { - "type": "session_info", - "session_id": session_id, - "user_id": user_id, - "user_name": user_name, - "bot_name": global_config.bot.nickname, - }, - ) + # 构建会话信息 + session_info_data = { + "type": "session_info", + "session_id": session_id, + "user_id": user_id, + "user_name": user_name, + "bot_name": global_config.bot.nickname, + } - # 发送历史记录 - history = chat_history.get_history(50) + # 如果有虚拟身份配置,添加到会话信息中 + if current_virtual_config and current_virtual_config.enabled: + session_info_data["virtual_mode"] = True + session_info_data["group_id"] = current_virtual_config.group_id + session_info_data["virtual_identity"] = { + "platform": current_virtual_config.platform, + "user_id": current_virtual_config.user_id, + "user_nickname": current_virtual_config.user_nickname, + "group_name": current_virtual_config.group_name, + } + + # 发送会话信息(包含用户 ID,前端需要保存) + await chat_manager.send_message(session_id, session_info_data) + + # 发送历史记录(根据模式选择不同的群) + if current_virtual_config and current_virtual_config.enabled: + history = chat_history.get_history(50, current_virtual_config.group_id) + else: + history = chat_history.get_history(50) if history: await chat_manager.send_message( session_id, @@ -252,11 +459,16 @@ async def websocket_chat( ) # 发送欢迎消息(不保存到历史) + if current_virtual_config and current_virtual_config.enabled: + welcome_msg = f"已以 {current_virtual_config.user_nickname} 的身份连接到「{current_virtual_config.group_name}」,开始与 {global_config.bot.nickname} 对话吧!" + else: + welcome_msg = f"已连接到本地聊天室,可以开始与 {global_config.bot.nickname} 对话了!" + await chat_manager.send_message( session_id, { "type": "system", - "content": f"已连接到本地聊天室,可以开始与 {global_config.bot.nickname} 对话了!", + "content": welcome_msg, "timestamp": time.time(), }, ) @@ -275,6 +487,14 @@ async def websocket_chat( message_id = str(uuid.uuid4()) timestamp = time.time() + # 确定发送者信息(根据是否使用虚拟身份) + if current_virtual_config and current_virtual_config.enabled: + sender_name = current_virtual_config.user_nickname or current_user_name + sender_user_id = current_virtual_config.user_id or user_id + else: + sender_name = current_user_name + sender_user_id = user_id + # 广播用户消息给所有连接(包括发送者) # 注意:用户消息会在 chat_bot.message_process 中自动保存到数据库 await chat_manager.broadcast( @@ -284,10 +504,11 @@ async def websocket_chat( "message_id": message_id, "timestamp": timestamp, "sender": { - "name": current_user_name, - "user_id": user_id, + "name": sender_name, + "user_id": sender_user_id, "is_bot": False, }, + "virtual_mode": current_virtual_config.enabled if current_virtual_config else False, } ) @@ -298,6 +519,7 @@ async def websocket_chat( user_name=current_user_name, message_id=message_id, is_at_bot=True, + virtual_config=current_virtual_config, ) try: @@ -352,6 +574,133 @@ async def websocket_chat( }, ) + elif data.get("type") == "set_virtual_identity": + # 设置或更新虚拟身份配置 + virtual_data = data.get("config", {}) + if virtual_data.get("enabled"): + # 验证必要字段 + if not virtual_data.get("platform") or not virtual_data.get("person_id"): + await chat_manager.send_message( + session_id, + { + "type": "error", + "content": "虚拟身份配置缺少必要字段: platform 和 person_id", + "timestamp": time.time(), + }, + ) + continue + + # 获取用户信息 + try: + person = PersonInfo.get_or_none(PersonInfo.person_id == virtual_data.get("person_id")) + if not person: + await chat_manager.send_message( + session_id, + { + "type": "error", + "content": f"找不到用户: {virtual_data.get('person_id')}", + "timestamp": time.time(), + }, + ) + continue + + # 生成虚拟群 ID + custom_group_id = virtual_data.get("group_id") + if custom_group_id: + group_id = f"{VIRTUAL_GROUP_ID_PREFIX}{custom_group_id}" + else: + group_id = f"{VIRTUAL_GROUP_ID_PREFIX}{session_id[:8]}" + + current_virtual_config = VirtualIdentityConfig( + enabled=True, + platform=person.platform, + person_id=person.person_id, + user_id=person.user_id, + user_nickname=person.person_name or person.nickname or person.user_id, + group_id=group_id, + group_name=virtual_data.get("group_name", "WebUI虚拟群聊"), + ) + + # 发送虚拟身份已激活的消息 + await chat_manager.send_message( + session_id, + { + "type": "virtual_identity_set", + "config": { + "enabled": True, + "platform": current_virtual_config.platform, + "user_id": current_virtual_config.user_id, + "user_nickname": current_virtual_config.user_nickname, + "group_id": current_virtual_config.group_id, + "group_name": current_virtual_config.group_name, + }, + "timestamp": time.time(), + }, + ) + + # 加载虚拟群的历史记录 + virtual_history = chat_history.get_history(50, current_virtual_config.group_id) + await chat_manager.send_message( + session_id, + { + "type": "history", + "messages": virtual_history, + "group_id": current_virtual_config.group_id, + }, + ) + + # 发送系统消息 + await chat_manager.send_message( + session_id, + { + "type": "system", + "content": f"已切换到虚拟身份模式:以 {current_virtual_config.user_nickname} 的身份在「{current_virtual_config.group_name}」与 {global_config.bot.nickname} 对话", + "timestamp": time.time(), + }, + ) + + except Exception as e: + logger.error(f"设置虚拟身份失败: {e}") + await chat_manager.send_message( + session_id, + { + "type": "error", + "content": f"设置虚拟身份失败: {str(e)}", + "timestamp": time.time(), + }, + ) + else: + # 禁用虚拟身份模式 + current_virtual_config = None + await chat_manager.send_message( + session_id, + { + "type": "virtual_identity_set", + "config": {"enabled": False}, + "timestamp": time.time(), + }, + ) + + # 重新加载默认聊天室历史 + default_history = chat_history.get_history(50, WEBUI_CHAT_GROUP_ID) + await chat_manager.send_message( + session_id, + { + "type": "history", + "messages": default_history, + "group_id": WEBUI_CHAT_GROUP_ID, + }, + ) + + await chat_manager.send_message( + session_id, + { + "type": "system", + "content": "已切换回 WebUI 独立用户模式", + "timestamp": time.time(), + }, + ) + except WebSocketDisconnect: logger.info(f"WebSocket 断开: session={session_id}, user={user_id}") except Exception as e: From 71b7942b205220323685fda1d0fbf6f71986d3e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Mon, 1 Dec 2025 23:31:10 +0800 Subject: [PATCH 42/61] WebUI 318b28328a4b1e74664033adf47b84c316b37293 --- webui/dist/assets/icons-SnP_l694.js | 1 + webui/dist/assets/icons-y1PBa0Co.js | 1 - webui/dist/assets/index-BS7Qg77u.css | 1 + webui/dist/assets/index-ByB1XZQ6.js | 52 ++++++++++++++++++++++++++++ webui/dist/assets/index-DFcwoEiz.js | 52 ---------------------------- webui/dist/assets/index-ceRg_XiX.css | 1 - webui/dist/index.html | 6 ++-- 7 files changed, 57 insertions(+), 57 deletions(-) create mode 100644 webui/dist/assets/icons-SnP_l694.js delete mode 100644 webui/dist/assets/icons-y1PBa0Co.js create mode 100644 webui/dist/assets/index-BS7Qg77u.css create mode 100644 webui/dist/assets/index-ByB1XZQ6.js delete mode 100644 webui/dist/assets/index-DFcwoEiz.js delete mode 100644 webui/dist/assets/index-ceRg_XiX.css diff --git a/webui/dist/assets/icons-SnP_l694.js b/webui/dist/assets/icons-SnP_l694.js new file mode 100644 index 00000000..836e73ab --- /dev/null +++ b/webui/dist/assets/icons-SnP_l694.js @@ -0,0 +1 @@ +import{r as s}from"./router-CWhjJi2n.js";const _=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),M=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,c,o)=>o?o.toUpperCase():c.toLowerCase()),h=t=>{const a=M(t);return a.charAt(0).toUpperCase()+a.slice(1)},k=(...t)=>t.filter((a,c,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===c).join(" ").trim(),m=t=>{for(const a in t)if(a.startsWith("aria-")||a==="role"||a==="title")return!0};var v={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const x=s.forwardRef(({color:t="currentColor",size:a=24,strokeWidth:c=2,absoluteStrokeWidth:o,className:y="",children:n,iconNode:r,...d},p)=>s.createElement("svg",{ref:p,...v,width:a,height:a,stroke:t,strokeWidth:o?Number(c)*24/Number(a):c,className:k("lucide",y),...!n&&!m(d)&&{"aria-hidden":"true"},...d},[...r.map(([i,l])=>s.createElement(i,l)),...Array.isArray(n)?n:[n]]));const e=(t,a)=>{const c=s.forwardRef(({className:o,...y},n)=>s.createElement(x,{ref:n,iconNode:a,className:k(`lucide-${_(h(t))}`,`lucide-${t}`,o),...y}));return c.displayName=h(t),c};const u=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],y2=e("activity",u);const f=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],d2=e("arrow-left",f);const g=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],h2=e("arrow-right",g);const $=[["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],k2=e("ban",$);const N=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],r2=e("book-open",N);const w=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],p2=e("bot",w);const z=[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]],i2=e("boxes",z);const b=[["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z",key:"uouzyp"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M21 21a4 4 0 0 0-3.81-4",key:"1b0z45"}],["path",{d:"M21 5a4 4 0 0 1-3.55 3.97",key:"5cxbf6"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M3 21a4 4 0 0 1 3.81-4",key:"1fjd4g"}],["path",{d:"M3 5a4 4 0 0 0 3.55 3.97",key:"1d7oge"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M9 7.13V6a3 3 0 1 1 6 0v1.13",key:"1vgav8"}]],l2=e("bug",b);const q=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],_2=e("calendar",q);const j=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],M2=e("chart-column",j);const C=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],m2=e("check",C);const V=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],v2=e("chevron-down",V);const A=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],x2=e("chevron-left",A);const H=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],u2=e("chevron-right",H);const L=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],f2=e("chevron-up",L);const S=[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]],g2=e("chevrons-left",S);const P=[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]],$2=e("chevrons-right",P);const U=[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]],N2=e("chevrons-up-down",U);const T=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],w2=e("circle-alert",T);const Z=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],z2=e("circle-check",Z);const B=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],b2=e("circle-question-mark",B);const D=[["path",{d:"M18 20a6 6 0 0 0-12 0",key:"1qehca"}],["circle",{cx:"12",cy:"10",r:"4",key:"1h16sb"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],q2=e("circle-user-round",D);const R=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662",key:"154egf"}]],j2=e("circle-user",R);const E=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],C2=e("circle-x",E);const O=[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],V2=e("clock",O);const F=[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]],A2=e("code-xml",F);const I=[["path",{d:"M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z",key:"1t2lqe"}],["path",{d:"M10 21.9V14L2.1 9.1",key:"o7czzq"}],["path",{d:"m10 14 11.9-6.9",key:"zm5e20"}],["path",{d:"M14 19.8v-8.1",key:"159ecu"}],["path",{d:"M18 17.5V9.4",key:"11uown"}]],H2=e("container",I);const W=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],L2=e("copy",W);const G=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],S2=e("database",G);const K=[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]],P2=e("dollar-sign",K);const X=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],U2=e("download",X);const Q=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],T2=e("external-link",Q);const J=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],Z2=e("eye-off",J);const Y=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],B2=e("eye",Y);const e1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["circle",{cx:"11.5",cy:"14.5",r:"2.5",key:"1bq0ko"}],["path",{d:"M13.3 16.3 15 18",key:"2quom7"}]],D2=e("file-search",e1);const a1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],R2=e("file-text",a1);const t1=[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]],E2=e("folder-open",t1);const c1=[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]],O2=e("funnel",c1);const o1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]],F2=e("globe",o1);const n1=[["path",{d:"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",key:"j76jl0"}],["path",{d:"M22 10v6",key:"1lu8f3"}],["path",{d:"M6 12.5V16a6 3 0 0 0 12 0v-3.5",key:"1r8lef"}]],I2=e("graduation-cap",n1);const s1=[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]],W2=e("grip-vertical",s1);const y1=[["line",{x1:"22",x2:"2",y1:"12",y2:"12",key:"1y58io"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}],["line",{x1:"6",x2:"6.01",y1:"16",y2:"16",key:"sgf278"}],["line",{x1:"10",x2:"10.01",y1:"16",y2:"16",key:"1l4acy"}]],G2=e("hard-drive",y1);const d1=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],K2=e("hash",d1);const h1=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]],X2=e("house",h1);const k1=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],Q2=e("image",k1);const r1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],J2=e("info",r1);const p1=[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]],Y2=e("key",p1);const i1=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],e0=e("loader-circle",i1);const l1=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],a0=e("lock",l1);const _1=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],t0=e("log-out",_1);const M1=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],c0=e("menu",M1);const m1=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]],o0=e("message-square",m1);const v1=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]],n0=e("moon",v1);const x1=[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]],s0=e("network",x1);const u1=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],y0=e("package",u1);const f1=[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]],d0=e("palette",f1);const g1=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]],h0=e("panels-top-left",g1);const $1=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]],k0=e("pause",$1);const N1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]],r0=e("pen",N1);const w1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],p0=e("pencil",w1);const z1=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],i0=e("play",z1);const b1=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],l0=e("plus",b1);const q1=[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]],_0=e("power",q1);const j1=[["path",{d:"M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z",key:"w46dr5"}]],M0=e("puzzle",j1);const C1=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],m0=e("refresh-cw",C1);const V1=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],v0=e("rotate-ccw",V1);const A1=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],x0=e("save",A1);const H1=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],u0=e("search",H1);const L1=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],f0=e("send",L1);const S1=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],g0=e("server",S1);const P1=[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]],$0=e("settings-2",P1);const U1=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],N0=e("settings",U1);const T1=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]],w0=e("shield",T1);const Z1=[["path",{d:"M21 4v16",key:"7j8fe9"}],["path",{d:"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z",key:"zs4d6"}]],z0=e("skip-forward",Z1);const B1=[["path",{d:"M10 8h4",key:"1sr2af"}],["path",{d:"M12 21v-9",key:"17s77i"}],["path",{d:"M12 8V3",key:"13r4qs"}],["path",{d:"M17 16h4",key:"h1uq16"}],["path",{d:"M19 12V3",key:"o1uvq1"}],["path",{d:"M19 21v-5",key:"qua636"}],["path",{d:"M3 14h4",key:"bcjad9"}],["path",{d:"M5 10V3",key:"cb8scm"}],["path",{d:"M5 21v-7",key:"1w1uti"}]],b0=e("sliders-vertical",B1);const D1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]],q0=e("smile",D1);const R1=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],j0=e("sparkles",R1);const E1=[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]],C0=e("square-pen",E1);const O1=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],V0=e("star",O1);const F1=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],A0=e("sun",F1);const I1=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],H0=e("terminal",I1);const W1=[["path",{d:"M7 10v12",key:"1qc93n"}],["path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z",key:"emmmcr"}]],L0=e("thumbs-up",W1);const G1=[["path",{d:"M17 14V2",key:"8ymqnk"}],["path",{d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z",key:"m61m77"}]],S0=e("thumbs-down",G1);const K1=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],P0=e("trash-2",K1);const X1=[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]],U0=e("trending-up",X1);const Q1=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],T0=e("triangle-alert",Q1);const J1=[["path",{d:"M12 4v16",key:"1654pz"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2",key:"e0r10z"}],["path",{d:"M9 20h6",key:"s66wpe"}]],Z0=e("type",J1);const Y1=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],B0=e("upload",Y1);const e2=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],D0=e("user",e2);const a2=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],R0=e("users",a2);const t2=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],E0=e("wifi-off",t2);const c2=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]],O0=e("wifi",c2);const o2=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],F0=e("x",o2);const n2=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],I0=e("zap",n2);export{p0 as $,y2 as A,p2 as B,z2 as C,P2 as D,Z2 as E,R2 as F,X2 as G,G2 as H,J2 as I,d2 as J,Y2 as K,a0 as L,o0 as M,v2 as N,f2 as O,_0 as P,x0 as Q,m0 as R,N0 as S,U0 as T,B0 as U,h0 as V,A2 as W,F0 as X,l0 as Y,I0 as Z,D2 as _,w2 as a,g2 as a0,x2 as a1,u2 as a2,$2 as a3,N2 as a4,W2 as a5,I2 as a6,H2 as a7,y0 as a8,E2 as a9,c0 as aA,r2 as aB,t0 as aC,l2 as aD,Q2 as aa,O2 as ab,C0 as ac,k2 as ad,K2 as ae,R0 as af,s0 as ag,_2 as ah,k0 as ai,i0 as aj,Z0 as ak,V0 as al,L0 as am,S0 as an,$0 as ao,q2 as ap,F2 as aq,O0 as ar,E0 as as,r0 as at,f0 as au,g0 as av,i2 as aw,j2 as ax,M2 as ay,b0 as az,v0 as b,M0 as c,S2 as d,V2 as e,d0 as f,w0 as g,T0 as h,m2 as i,L2 as j,B2 as k,C2 as l,P0 as m,U2 as n,A0 as o,n0 as p,b2 as q,H0 as r,T2 as s,e0 as t,j0 as u,D0 as v,q0 as w,z0 as x,h2 as y,u0 as z}; diff --git a/webui/dist/assets/icons-y1PBa0Co.js b/webui/dist/assets/icons-y1PBa0Co.js deleted file mode 100644 index a7774649..00000000 --- a/webui/dist/assets/icons-y1PBa0Co.js +++ /dev/null @@ -1 +0,0 @@ -import{r as s}from"./router-CWhjJi2n.js";const _=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),M=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,c,o)=>o?o.toUpperCase():c.toLowerCase()),d=t=>{const a=M(t);return a.charAt(0).toUpperCase()+a.slice(1)},k=(...t)=>t.filter((a,c,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===c).join(" ").trim(),m=t=>{for(const a in t)if(a.startsWith("aria-")||a==="role"||a==="title")return!0};var v={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const x=s.forwardRef(({color:t="currentColor",size:a=24,strokeWidth:c=2,absoluteStrokeWidth:o,className:y="",children:n,iconNode:r,...h},p)=>s.createElement("svg",{ref:p,...v,width:a,height:a,stroke:t,strokeWidth:o?Number(c)*24/Number(a):c,className:k("lucide",y),...!n&&!m(h)&&{"aria-hidden":"true"},...h},[...r.map(([i,l])=>s.createElement(i,l)),...Array.isArray(n)?n:[n]]));const e=(t,a)=>{const c=s.forwardRef(({className:o,...y},n)=>s.createElement(x,{ref:n,iconNode:a,className:k(`lucide-${_(d(t))}`,`lucide-${t}`,o),...y}));return c.displayName=d(t),c};const f=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],n2=e("activity",f);const u=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],s2=e("arrow-left",u);const g=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],y2=e("arrow-right",g);const $=[["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],h2=e("ban",$);const N=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],d2=e("book-open",N);const w=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],k2=e("bot",w);const z=[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]],r2=e("boxes",z);const b=[["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z",key:"uouzyp"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M21 21a4 4 0 0 0-3.81-4",key:"1b0z45"}],["path",{d:"M21 5a4 4 0 0 1-3.55 3.97",key:"5cxbf6"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M3 21a4 4 0 0 1 3.81-4",key:"1fjd4g"}],["path",{d:"M3 5a4 4 0 0 0 3.55 3.97",key:"1d7oge"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M9 7.13V6a3 3 0 1 1 6 0v1.13",key:"1vgav8"}]],p2=e("bug",b);const q=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],i2=e("calendar",q);const j=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],l2=e("chart-column",j);const C=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],_2=e("check",C);const V=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],M2=e("chevron-down",V);const A=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],m2=e("chevron-left",A);const H=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],v2=e("chevron-right",H);const L=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],x2=e("chevron-up",L);const S=[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]],f2=e("chevrons-left",S);const P=[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]],u2=e("chevrons-right",P);const U=[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]],g2=e("chevrons-up-down",U);const T=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],$2=e("circle-alert",T);const Z=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],N2=e("circle-check",Z);const B=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],w2=e("circle-question-mark",B);const D=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662",key:"154egf"}]],z2=e("circle-user",D);const E=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],b2=e("circle-x",E);const R=[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],q2=e("clock",R);const O=[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]],j2=e("code-xml",O);const F=[["path",{d:"M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z",key:"1t2lqe"}],["path",{d:"M10 21.9V14L2.1 9.1",key:"o7czzq"}],["path",{d:"m10 14 11.9-6.9",key:"zm5e20"}],["path",{d:"M14 19.8v-8.1",key:"159ecu"}],["path",{d:"M18 17.5V9.4",key:"11uown"}]],C2=e("container",F);const I=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],V2=e("copy",I);const W=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],A2=e("database",W);const G=[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]],H2=e("dollar-sign",G);const K=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],L2=e("download",K);const X=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],S2=e("external-link",X);const Q=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],P2=e("eye-off",Q);const J=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],U2=e("eye",J);const Y=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["circle",{cx:"11.5",cy:"14.5",r:"2.5",key:"1bq0ko"}],["path",{d:"M13.3 16.3 15 18",key:"2quom7"}]],T2=e("file-search",Y);const e1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],Z2=e("file-text",e1);const a1=[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]],B2=e("folder-open",a1);const t1=[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]],D2=e("funnel",t1);const c1=[["path",{d:"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",key:"j76jl0"}],["path",{d:"M22 10v6",key:"1lu8f3"}],["path",{d:"M6 12.5V16a6 3 0 0 0 12 0v-3.5",key:"1r8lef"}]],E2=e("graduation-cap",c1);const o1=[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]],R2=e("grip-vertical",o1);const n1=[["line",{x1:"22",x2:"2",y1:"12",y2:"12",key:"1y58io"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}],["line",{x1:"6",x2:"6.01",y1:"16",y2:"16",key:"sgf278"}],["line",{x1:"10",x2:"10.01",y1:"16",y2:"16",key:"1l4acy"}]],O2=e("hard-drive",n1);const s1=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],F2=e("hash",s1);const y1=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]],I2=e("house",y1);const h1=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],W2=e("image",h1);const d1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],G2=e("info",d1);const k1=[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]],K2=e("key",k1);const r1=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],X2=e("loader-circle",r1);const p1=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],Q2=e("lock",p1);const i1=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],J2=e("log-out",i1);const l1=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],Y2=e("menu",l1);const _1=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]],e0=e("message-square",_1);const M1=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]],a0=e("moon",M1);const m1=[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]],t0=e("network",m1);const v1=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],c0=e("package",v1);const x1=[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]],o0=e("palette",x1);const f1=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]],n0=e("panels-top-left",f1);const u1=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]],s0=e("pause",u1);const g1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]],y0=e("pen",g1);const $1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],h0=e("pencil",$1);const N1=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],d0=e("play",N1);const w1=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],k0=e("plus",w1);const z1=[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]],r0=e("power",z1);const b1=[["path",{d:"M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z",key:"w46dr5"}]],p0=e("puzzle",b1);const q1=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],i0=e("refresh-cw",q1);const j1=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],l0=e("rotate-ccw",j1);const C1=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],_0=e("save",C1);const V1=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],M0=e("search",V1);const A1=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],m0=e("send",A1);const H1=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],v0=e("server",H1);const L1=[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]],x0=e("settings-2",L1);const S1=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],f0=e("settings",S1);const P1=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]],u0=e("shield",P1);const U1=[["path",{d:"M21 4v16",key:"7j8fe9"}],["path",{d:"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z",key:"zs4d6"}]],g0=e("skip-forward",U1);const T1=[["path",{d:"M10 8h4",key:"1sr2af"}],["path",{d:"M12 21v-9",key:"17s77i"}],["path",{d:"M12 8V3",key:"13r4qs"}],["path",{d:"M17 16h4",key:"h1uq16"}],["path",{d:"M19 12V3",key:"o1uvq1"}],["path",{d:"M19 21v-5",key:"qua636"}],["path",{d:"M3 14h4",key:"bcjad9"}],["path",{d:"M5 10V3",key:"cb8scm"}],["path",{d:"M5 21v-7",key:"1w1uti"}]],$0=e("sliders-vertical",T1);const Z1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]],N0=e("smile",Z1);const B1=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],w0=e("sparkles",B1);const D1=[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]],z0=e("square-pen",D1);const E1=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],b0=e("star",E1);const R1=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],q0=e("sun",R1);const O1=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],j0=e("terminal",O1);const F1=[["path",{d:"M7 10v12",key:"1qc93n"}],["path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z",key:"emmmcr"}]],C0=e("thumbs-up",F1);const I1=[["path",{d:"M17 14V2",key:"8ymqnk"}],["path",{d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z",key:"m61m77"}]],V0=e("thumbs-down",I1);const W1=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],A0=e("trash-2",W1);const G1=[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]],H0=e("trending-up",G1);const K1=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],L0=e("triangle-alert",K1);const X1=[["path",{d:"M12 4v16",key:"1654pz"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2",key:"e0r10z"}],["path",{d:"M9 20h6",key:"s66wpe"}]],S0=e("type",X1);const Q1=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],P0=e("upload",Q1);const J1=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],U0=e("user",J1);const Y1=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],T0=e("users",Y1);const e2=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],Z0=e("wifi-off",e2);const a2=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]],B0=e("wifi",a2);const t2=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],D0=e("x",t2);const c2=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],E0=e("zap",c2);export{h0 as $,n2 as A,k2 as B,N2 as C,H2 as D,P2 as E,Z2 as F,I2 as G,O2 as H,G2 as I,s2 as J,K2 as K,Q2 as L,e0 as M,M2 as N,x2 as O,r0 as P,_0 as Q,i0 as R,f0 as S,H0 as T,P0 as U,n0 as V,j2 as W,D0 as X,k0 as Y,E0 as Z,T2 as _,$2 as a,f2 as a0,m2 as a1,v2 as a2,u2 as a3,g2 as a4,R2 as a5,E2 as a6,C2 as a7,c0 as a8,B2 as a9,J2 as aA,p2 as aB,W2 as aa,D2 as ab,z0 as ac,h2 as ad,F2 as ae,T0 as af,t0 as ag,i2 as ah,s0 as ai,d0 as aj,S0 as ak,b0 as al,C0 as am,V0 as an,x0 as ao,B0 as ap,Z0 as aq,y0 as ar,m0 as as,v0 as at,r2 as au,z2 as av,l2 as aw,$0 as ax,Y2 as ay,d2 as az,l0 as b,p0 as c,A2 as d,q2 as e,o0 as f,u0 as g,L0 as h,_2 as i,V2 as j,U2 as k,b2 as l,A0 as m,L2 as n,q0 as o,a0 as p,w2 as q,j0 as r,S2 as s,X2 as t,w0 as u,U0 as v,N0 as w,g0 as x,y2 as y,M0 as z}; diff --git a/webui/dist/assets/index-BS7Qg77u.css b/webui/dist/assets/index-BS7Qg77u.css new file mode 100644 index 00000000..dcfb65d8 --- /dev/null +++ b/webui/dist/assets/index-BS7Qg77u.css @@ -0,0 +1 @@ +@charset "UTF-8";*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 0 0% 100%;--foreground: 222.2 84% 4.9%;--card: 0 0% 100%;--card-foreground: 222.2 84% 4.9%;--popover: 0 0% 100%;--popover-foreground: 222.2 84% 4.9%;--primary: 221.2 83.2% 53.3%;--primary-foreground: 210 40% 98%;--primary-gradient: none;--secondary: 210 40% 96.1%;--secondary-foreground: 222.2 47.4% 11.2%;--muted: 210 40% 96.1%;--muted-foreground: 215.4 16.3% 46.9%;--accent: 210 40% 96.1%;--accent-foreground: 222.2 47.4% 11.2%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 210 40% 98%;--border: 214.3 31.8% 91.4%;--input: 214.3 31.8% 91.4%;--ring: 221.2 83.2% 53.3%;--radius: .5rem;--chart-1: 221.2 83.2% 53.3%;--chart-2: 160 60% 45%;--chart-3: 30 80% 55%;--chart-4: 280 65% 60%;--chart-5: 340 75% 55%}.dark{--background: 222.2 84% 4.9%;--foreground: 210 40% 98%;--card: 222.2 84% 4.9%;--card-foreground: 210 40% 98%;--popover: 222.2 84% 4.9%;--popover-foreground: 210 40% 98%;--primary: 217.2 91.2% 59.8%;--primary-foreground: 222.2 47.4% 11.2%;--primary-gradient: none;--secondary: 217.2 32.6% 17.5%;--secondary-foreground: 210 40% 98%;--muted: 217.2 32.6% 17.5%;--muted-foreground: 215 20.2% 65.1%;--accent: 217.2 32.6% 17.5%;--accent-foreground: 210 40% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 210 40% 98%;--border: 217.2 32.6% 17.5%;--input: 217.2 32.6% 17.5%;--ring: 224.3 76.3% 48%;--chart-1: 217.2 91.2% 59.8%;--chart-2: 160 60% 50%;--chart-3: 30 80% 60%;--chart-4: 280 65% 65%;--chart-5: 340 75% 60%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-1\/4{bottom:25%}.bottom-4{bottom:1rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.left-1\/4{left:25%}.left-2{left:.5rem}.left-2\.5{left:.625rem}.left-3{left:.75rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-1\.5{right:.375rem}.right-1\/4{right:25%}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-1\/4{top:25%}.top-2{top:.5rem}.top-2\.5{top:.625rem}.top-3{top:.75rem}.top-4{top:1rem}.top-\[50\%\]{top:50%}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.order-1{order:1}.order-2{order:2}.col-span-2{grid-column:span 2 / span 2}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-mt-2{margin-top:-.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-10{margin-left:2.5rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-auto{aspect-ratio:auto}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:16 / 9}.size-4{width:1rem;height:1rem}.size-\[--cell-size\]{width:var(--cell-size);height:var(--cell-size)}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[--cell-size\]{height:var(--cell-size)}.h-\[1\.25rem\]{height:1.25rem}.h-\[1px\]{height:1px}.h-\[200px\]{height:200px}.h-\[250px\]{height:250px}.h-\[280px\]{height:280px}.h-\[300px\]{height:300px}.h-\[350px\]{height:350px}.h-\[400px\]{height:400px}.h-\[calc\(100vh-200px\)\]{height:calc(100vh - 200px)}.h-\[calc\(100vh-240px\)\]{height:calc(100vh - 240px)}.h-\[calc\(100vh-260px\)\]{height:calc(100vh - 260px)}.h-\[calc\(100vh-4rem\)\]{height:calc(100vh - 4rem)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\[--radix-context-menu-content-available-height\]{max-height:var(--radix-context-menu-content-available-height)}.max-h-\[--radix-select-content-available-height\]{max-height:var(--radix-select-content-available-height)}.max-h-\[300px\]{max-height:300px}.max-h-\[80vh\]{max-height:80vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[calc\(90vh-120px\)\]{max-height:calc(90vh - 120px)}.max-h-\[calc\(90vh-8rem\)\]{max-height:calc(90vh - 8rem)}.max-h-full{max-height:100%}.max-h-none{max-height:none}.max-h-screen{max-height:100vh}.min-h-0{min-height:0px}.min-h-10{min-height:2.5rem}.min-h-\[100px\]{min-height:100px}.min-h-\[300px\]{min-height:300px}.min-h-\[60px\]{min-height:60px}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-\[--cell-size\]{width:var(--cell-size)}.w-\[100px\]{width:100px}.w-\[120px\]{width:120px}.w-\[130px\]{width:130px}.w-\[1px\]{width:1px}.w-\[65px\]{width:65px}.w-\[95vw\]{width:95vw}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[--cell-size\]{min-width:var(--cell-size)}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[80px\]{min-width:80px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-32{max-width:8rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-\[100px\]{max-width:100px}.max-w-\[150px\]{max-width:150px}.max-w-\[200px\]{max-width:200px}.max-w-\[60px\]{max-width:60px}.max-w-\[75\%\]{max-width:75%}.max-w-\[90\%\]{max-width:90%}.max-w-\[95vw\]{max-width:95vw}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\[--radix-context-menu-content-transform-origin\]{transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\[--radix-popover-content-transform-origin\]{transform-origin:var(--radix-popover-content-transform-origin)}.origin-\[--radix-select-content-transform-origin\]{transform-origin:var(--radix-select-content-transform-origin)}.origin-\[--radix-tooltip-content-transform-origin\]{transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.rounded-tr-sm{border-top-right-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-\[1\.5px\]{border-width:1.5px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[--color-border\]{border-color:var(--color-border)}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-500\/50{border-color:#f59e0b80}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-700{--tw-border-opacity: 1;border-color:rgb(29 78 216 / var(--tw-border-opacity, 1))}.border-border{border-color:hsl(var(--border))}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-current{border-color:currentColor}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-green-300{--tw-border-opacity: 1;border-color:rgb(134 239 172 / var(--tw-border-opacity, 1))}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.border-green-600{--tw-border-opacity: 1;border-color:rgb(22 163 74 / var(--tw-border-opacity, 1))}.border-green-700{--tw-border-opacity: 1;border-color:rgb(21 128 61 / var(--tw-border-opacity, 1))}.border-input{border-color:hsl(var(--input))}.border-muted{border-color:hsl(var(--muted))}.border-muted-foreground\/30{border-color:hsl(var(--muted-foreground) / .3)}.border-muted-foreground\/50{border-color:hsl(var(--muted-foreground) / .5)}.border-orange-200{--tw-border-opacity: 1;border-color:rgb(254 215 170 / var(--tw-border-opacity, 1))}.border-orange-600{--tw-border-opacity: 1;border-color:rgb(234 88 12 / var(--tw-border-opacity, 1))}.border-primary{border-color:hsl(var(--primary))}.border-primary\/20{border-color:hsl(var(--primary) / .2)}.border-primary\/30{border-color:hsl(var(--primary) / .3)}.border-primary\/50{border-color:hsl(var(--primary) / .5)}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-red-500\/50{border-color:#ef444480}.border-transparent{border-color:transparent}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-yellow-500\/50{border-color:#eab30880}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\[--color-bg\]{background-color:var(--color-bg)}.bg-accent{background-color:hsl(var(--accent))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-background{background-color:hsl(var(--background))}.bg-background\/50{background-color:hsl(var(--background) / .5)}.bg-background\/80{background-color:hsl(var(--background) / .8)}.bg-background\/95{background-color:hsl(var(--background) / .95)}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-black\/50{background-color:#00000080}.bg-black\/80{background-color:#000c}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-blue-900\/20{background-color:#1e3a8a33}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-card\/80{background-color:hsl(var(--card) / .8)}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-800\/20{background-color:#1f293733}.bg-gray-800\/30{background-color:#1f29374d}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground\/50{background-color:hsl(var(--muted-foreground) / .5)}.bg-muted\/20{background-color:hsl(var(--muted) / .2)}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-orange-600{--tw-bg-opacity: 1;background-color:rgb(234 88 12 / var(--tw-bg-opacity, 1))}.bg-pink-500{--tw-bg-opacity: 1;background-color:rgb(236 72 153 / var(--tw-bg-opacity, 1))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary-foreground\/20{background-color:hsl(var(--primary-foreground) / .2)}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/20{background-color:hsl(var(--primary) / .2)}.bg-primary\/5{background-color:hsl(var(--primary) / .05)}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(168 85 247 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-red-900\/20{background-color:#7f1d1d33}.bg-red-900\/30{background-color:#7f1d1d4d}.bg-secondary{background-color:hsl(var(--secondary))}.bg-secondary\/5{background-color:hsl(var(--secondary) / .05)}.bg-slate-200{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity, 1))}.bg-slate-300{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity, 1))}.bg-slate-400{--tw-bg-opacity: 1;background-color:rgb(148 163 184 / var(--tw-bg-opacity, 1))}.bg-slate-700{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-200{--tw-bg-opacity: 1;background-color:rgb(254 240 138 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-yellow-500\/5{background-color:#eab3080d}.bg-yellow-900\/20{background-color:#713f1233}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-blue-500{--tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-500{--tw-gradient-from: #22c55e var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 197 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-500{--tw-gradient-from: #f97316 var(--tw-gradient-from-position);--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-primary\/5{--tw-gradient-from: hsl(var(--primary) / .05) var(--tw-gradient-from-position);--tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-500{--tw-gradient-from: #a855f7 var(--tw-gradient-from-position);--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-500{--tw-gradient-from: #ef4444 var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 68 68 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-200{--tw-gradient-from: #e2e8f0 var(--tw-gradient-from-position);--tw-gradient-to: rgb(226 232 240 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-300{--tw-gradient-from: #cbd5e1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(203 213 225 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-400{--tw-gradient-from: #94a3b8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(148 163 184 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-background{--tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), hsl(var(--background)) var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-blue-600{--tw-gradient-to: #2563eb var(--tw-gradient-to-position)}.to-cyan-500{--tw-gradient-to: #06b6d4 var(--tw-gradient-to-position)}.to-emerald-500{--tw-gradient-to: #10b981 var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to: #16a34a var(--tw-gradient-to-position)}.to-orange-500{--tw-gradient-to: #f97316 var(--tw-gradient-to-position)}.to-pink-500{--tw-gradient-to: #ec4899 var(--tw-gradient-to-position)}.to-primary\/10{--tw-gradient-to: hsl(var(--primary) / .1) var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to: #a855f7 var(--tw-gradient-to-position)}.to-secondary\/5{--tw-gradient-to: hsl(var(--secondary) / .05) var(--tw-gradient-to-position)}.to-slate-700{--tw-gradient-to: #334155 var(--tw-gradient-to-position)}.to-slate-800{--tw-gradient-to: #1e293b var(--tw-gradient-to-position)}.to-slate-900{--tw-gradient-to: #0f172a var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.fill-yellow-400{fill:#facc15}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[1px\]{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[--cell-size\]{padding-left:var(--cell-size);padding-right:var(--cell-size)}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pl-10{padding-left:2.5rem}.pl-11{padding-left:2.75rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-1{padding-right:.25rem}.pr-10{padding-right:2.5rem}.pr-16{padding-right:4rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.text-\[150px\]{font-size:150px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/50{color:hsl(var(--foreground) / .5)}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/50{color:hsl(var(--muted-foreground) / .5)}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-800{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.text-orange-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary-foreground\/70{color:hsl(var(--primary-foreground) / .7)}.text-primary\/10{color:hsl(var(--primary) / .1)}.text-primary\/30{color:hsl(var(--primary) / .3)}.text-primary\/60{color:hsl(var(--primary) / .6)}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.text-yellow-900{--tw-text-opacity: 1;color:rgb(113 63 18 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-primary{--tw-ring-color: hsl(var(--primary))}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur-3xl{--tw-blur: blur(64px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.text-primary-gradient{color:hsl(var(--primary))}.has-gradient .text-primary-gradient{background:var(--primary-gradient);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.\[--cell-size\:2rem\]{--cell-size: 2rem}.no-animations *,.no-animations *:before,.no-animations *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.no-animations *:hover{transition-duration:.01ms!important}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:999}.__floater{z-index:99999!important;pointer-events:auto!important}.react-joyride__overlay,.react-joyride__spotlight{z-index:99998!important}.react-joyride__tooltip{pointer-events:auto!important}#tour-portal-container *{pointer-events:auto}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:border-muted-foreground\/50:hover{border-color:hsl(var(--muted-foreground) / .5)}.hover\:border-primary\/50:hover{border-color:hsl(var(--primary) / .5)}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent) / .5)}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\:bg-muted-foreground\/20:hover{background-color:hsl(var(--muted-foreground) / .2)}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-orange-700:hover{--tw-bg-opacity: 1;background-color:rgb(194 65 12 / var(--tw-bg-opacity, 1))}.hover\:bg-primary\/10:hover{background-color:hsl(var(--primary) / .1)}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-secondary:hover{background-color:hsl(var(--secondary))}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-secondary\/90:hover{background-color:hsl(var(--secondary) / .9)}.hover\:bg-transparent:hover{background-color:transparent}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-green-700:hover{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.hover\:text-orange-700:hover{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.hover\:text-primary\/80:hover{color:hsl(var(--primary) / .8)}.hover\:text-red-700:hover{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.hover\:text-yellow-300:hover{--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:ring-2:hover{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.hover\:ring-primary:hover{--tw-ring-color: hsl(var(--primary))}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-gray-100:focus{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-red-500:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.active\:cursor-grabbing:active{cursor:grabbing}.active\:border-primary\/70:active{border-color:hsl(var(--primary) / .7)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group[open] .group-open\:rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:opacity-100{opacity:1}.group.destructive .group-\[\.destructive\]\:border-muted\/40{border-color:hsl(var(--muted) / .4)}.group.destructive .group-\[\.destructive\]\:text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:hover\:text-red-50:hover{--tw-text-opacity: 1;color:rgb(254 242 242 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-red-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(248 113 113 / var(--tw-ring-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-offset-red-600:focus{--tw-ring-offset-color: #dc2626}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-selected\:text-muted-foreground[aria-selected=true]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true],.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked],.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x: var(--radix-toast-swipe-end-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x: var(--radix-toast-swipe-move-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes fade-out{0%{opacity:1}to{opacity:0}}.data-\[state\=closed\]\:animate-fade-out[data-state=closed]{animation:fade-out .15s ease-in}.data-\[state\=closed\]\:animate-slide-out-to-right[data-state=closed]{animation:slide-out-to-right .2s ease-in}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.data-\[state\=open\]\:animate-fade-in[data-state=open]{animation:fade-in .2s ease-out}@keyframes slide-in-from-right{0%{transform:translate(100%)}to{transform:translate(0)}}.data-\[state\=open\]\:animate-slide-in-from-right[data-state=open]{animation:slide-in-from-right .3s ease-out}@keyframes slide-out-to-right{0%{transform:translate(0)}to{transform:translate(100%)}}.data-\[swipe\=end\]\:animate-slide-out-to-right[data-swipe=end]{animation:slide-out-to-right .2s ease-in}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) - 2px)}.data-\[selected\=true\]\:rounded-none[data-selected=true]{border-radius:0}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:hsl(var(--primary))}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:hsl(var(--accent))}.data-\[range-start\=true\]\:bg-primary[data-range-start=true],.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:hsl(var(--primary))}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:hsl(var(--primary-foreground))}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:hsl(var(--accent-foreground))}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true],.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:hsl(var(--primary-foreground))}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:opacity-50[data-disabled=true],.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.data-\[state\=active\]\:duration-300[data-state=active]{transition-duration:.3s}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:relative{position:relative}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:z-10{z-index:10}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:border-ring{border-color:hsl(var(--ring))}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-\[3px\]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}@supports (backdrop-filter: var(--tw)){.supports-\[backdrop-filter\]\:bg-background\/60{background-color:hsl(var(--background) / .6)}}.dark\:border-amber-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(146 64 14 / var(--tw-border-opacity, 1))}.dark\:border-blue-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity, 1))}.dark\:border-gray-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(17 24 39 / var(--tw-border-opacity, 1))}.dark\:border-green-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(22 101 52 / var(--tw-border-opacity, 1))}.dark\:border-orange-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(124 45 18 / var(--tw-border-opacity, 1))}.dark\:border-yellow-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(113 63 18 / var(--tw-border-opacity, 1))}.dark\:bg-amber-950\/30:is(.dark *){background-color:#451a034d}.dark\:bg-blue-500\/20:is(.dark *){background-color:#3b82f633}.dark\:bg-blue-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 37 84 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950\/20:is(.dark *){background-color:#17255433}.dark\:bg-blue-950\/30:is(.dark *){background-color:#1725544d}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800\/30:is(.dark *){background-color:#1f29374d}.dark\:bg-gray-800\/50:is(.dark *){background-color:#1f293780}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(3 7 18 / var(--tw-bg-opacity, 1))}.dark\:bg-green-900\/30:is(.dark *){background-color:#14532d4d}.dark\:bg-green-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(5 46 22 / var(--tw-bg-opacity, 1))}.dark\:bg-green-950\/20:is(.dark *){background-color:#052e1633}.dark\:bg-orange-950\/20:is(.dark *){background-color:#43140733}.dark\:bg-red-500\/20:is(.dark *){background-color:#ef444433}.dark\:bg-red-600\/30:is(.dark *){background-color:#dc26264d}.dark\:bg-red-900\/30:is(.dark *){background-color:#7f1d1d4d}.dark\:bg-red-950\/50:is(.dark *){background-color:#450a0a80}.dark\:bg-yellow-500\/20:is(.dark *){background-color:#eab30833}.dark\:bg-yellow-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1))}.dark\:bg-yellow-950\/30:is(.dark *){background-color:#4220064d}.dark\:text-amber-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 243 199 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-blue-100:is(.dark *){--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-200:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-cyan-500:is(.dark *){--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-orange-100:is(.dark *){--tw-text-opacity: 1;color:rgb(255 237 213 / var(--tw-text-opacity, 1))}.dark\:text-orange-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 215 170 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-red-500:is(.dark *){--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.dark\:text-yellow-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.dark\:text-yellow-400:is(.dark *){--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.dark\:text-yellow-500:is(.dark *){--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:focus\:bg-gray-800:focus:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}@media(min-width:640px){.sm\:right-2{right:.5rem}.sm\:right-3{right:.75rem}.sm\:top-2{top:.5rem}.sm\:top-3{top:.75rem}.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:mb-3{margin-bottom:.75rem}.sm\:mb-4{margin-bottom:1rem}.sm\:mb-6{margin-bottom:1.5rem}.sm\:ml-0{margin-left:0}.sm\:ml-1{margin-left:.25rem}.sm\:mr-1{margin-right:.25rem}.sm\:mr-2{margin-right:.5rem}.sm\:mt-0{margin-top:0}.sm\:mt-2{margin-top:.5rem}.sm\:mt-3{margin-top:.75rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-12{height:3rem}.sm\:h-2{height:.5rem}.sm\:h-24{height:6rem}.sm\:h-3{height:.75rem}.sm\:h-4{height:1rem}.sm\:h-5{height:1.25rem}.sm\:h-8{height:2rem}.sm\:h-9{height:2.25rem}.sm\:h-\[300px\]{height:300px}.sm\:h-\[400px\]{height:400px}.sm\:h-\[500px\]{height:500px}.sm\:h-\[calc\(100vh-280px\)\]{height:calc(100vh - 280px)}.sm\:w-10{width:2.5rem}.sm\:w-2{width:.5rem}.sm\:w-24{width:6rem}.sm\:w-28{width:7rem}.sm\:w-3{width:.75rem}.sm\:w-4{width:1rem}.sm\:w-5{width:1.25rem}.sm\:w-8{width:2rem}.sm\:w-80{width:20rem}.sm\:w-96{width:24rem}.sm\:w-\[140px\]{width:140px}.sm\:w-\[160px\]{width:160px}.sm\:w-\[200px\]{width:200px}.sm\:w-\[500px\]{width:500px}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:min-w-\[120px\]{min-width:120px}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-\[420px\]{max-width:420px}.sm\:max-w-\[500px\]{max-width:500px}.sm\:max-w-\[70\%\]{max-width:70%}.sm\:max-w-\[900px\]{max-width:900px}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:flex-1{flex:1 1 0%}.sm\:flex-none{flex:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-0{gap:0px}.sm\:gap-1{gap:.25rem}.sm\:gap-2{gap:.5rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:gap-6{gap:1.5rem}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.sm\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.sm\:space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.sm\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.sm\:space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:py-2{padding-top:.5rem;padding-bottom:.5rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-\[200px\]{font-size:200px}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:768px){.md\:top-4{top:1rem}.md\:mb-4{margin-bottom:1rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-8{margin-bottom:2rem}.md\:mt-8{margin-top:2rem}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-16{height:4rem}.md\:h-4{height:1rem}.md\:h-5{height:1.25rem}.md\:h-8{height:2rem}.md\:h-96{height:24rem}.md\:h-\[500px\]{height:500px}.md\:min-h-\[400px\]{min-height:400px}.md\:w-16{width:4rem}.md\:w-4{width:1rem}.md\:w-5{width:1.25rem}.md\:w-8{width:2rem}.md\:w-96{width:24rem}.md\:max-w-none{max-width:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:gap-2{gap:.5rem}.md\:gap-3{gap:.75rem}.md\:gap-4{gap:1rem}.md\:gap-6{gap:1.5rem}.md\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.md\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.md\:whitespace-normal{white-space:normal}.md\:p-12{padding:3rem}.md\:p-4{padding:1rem}.md\:p-6{padding:1.5rem}.md\:p-8{padding:2rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:1024px){.lg\:invisible{visibility:hidden}.lg\:relative{position:relative}.lg\:z-0{z-index:0}.lg\:col-span-1{grid-column:span 1 / span 1}.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:mb-1{margin-bottom:.25rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-12{width:3rem}.lg\:w-16{width:4rem}.lg\:w-64{width:16rem}.lg\:w-8{width:2rem}.lg\:w-\[130px\]{width:130px}.lg\:w-\[160px\]{width:160px}.lg\:w-\[180px\]{width:180px}.lg\:w-\[200px\]{width:200px}.lg\:w-\[240px\]{width:240px}.lg\:w-\[75px\]{width:75px}.lg\:w-auto{width:auto}.lg\:w-full{width:100%}.lg\:max-w-0{max-width:0px}.lg\:flex-1{flex:1 1 0%}.lg\:flex-none{flex:none}.lg\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:justify-center{justify-content:center}.lg\:gap-0{gap:0px}.lg\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.lg\:overflow-hidden{overflow:hidden}.lg\:p-2{padding:.5rem}.lg\:p-6{padding:1.5rem}.lg\:px-0{padding-left:0;padding-right:0}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:pb-6{padding-bottom:1.5rem}.lg\:text-3xl{font-size:1.875rem;line-height:2.25rem}.lg\:opacity-0{opacity:0}}@media(min-width:1280px){.xl\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}}.\[\&\+div\]\:text-xs+div{font-size:.75rem;line-height:1rem}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>span\]\:text-xs>span{font-size:.75rem;line-height:1rem}.\[\&\>span\]\:opacity-70>span{opacity:.7}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y: -3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-4>svg{top:1rem}.\[\&\>svg\]\:size-3\.5>svg{width:.875rem;height:.875rem}.\[\&\>svg\]\:h-2\.5>svg{height:.625rem}.\[\&\>svg\]\:h-3>svg{height:.75rem}.\[\&\>svg\]\:w-2\.5>svg{width:.625rem}.\[\&\>svg\]\:w-3>svg{width:.75rem}.\[\&\>svg\]\:text-foreground>svg{color:hsl(var(--foreground))}.\[\&\>svg\]\:text-muted-foreground>svg{color:hsl(var(--muted-foreground))}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:1.75rem}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:hsl(var(--muted-foreground))}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:hsl(var(--border) / .5)}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:hsl(var(--border))}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-layer\]\:outline-none .recharts-layer{outline:2px solid transparent;outline-offset:2px}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector,.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:hsl(var(--muted))}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-sector\]\:outline-none .recharts-sector,.\[\&_\.recharts-surface\]\:outline-none .recharts-surface{outline:2px solid transparent;outline-offset:2px}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:1.25rem}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:invisible svg{visibility:hidden}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent,[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:transparent}.uppy-Root{box-sizing:border-box;color:#333;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;line-height:1;position:relative;text-align:left;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.uppy-Root[dir=rtl],[dir=rtl] .uppy-Root{text-align:right}.uppy-Root *,.uppy-Root :after,.uppy-Root :before{box-sizing:inherit}.uppy-Root [hidden]{display:none}.uppy-u-reset{all:initial;-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;line-height:1}[dir=rtl] .uppy-u-reset{text-align:right}.uppy-c-textInput{background-color:#fff;border:1px solid #ddd;border-radius:4px;font-family:inherit;font-size:14px;line-height:1.5;padding:6px 8px}.uppy-size--md .uppy-c-textInput{padding:8px 10px}.uppy-c-textInput:focus{border-color:#1269cf99;box-shadow:0 0 0 3px #1269cf26;outline:none}[data-uppy-theme=dark] .uppy-c-textInput{background-color:#333;border-color:#333;color:#eaeaea}[data-uppy-theme=dark] .uppy-c-textInput:focus{border-color:#525252;box-shadow:none}.uppy-c-icon{display:inline-block;max-height:100%;max-width:100%;overflow:hidden;fill:currentColor}.uppy-c-btn{align-items:center;color:inherit;display:inline-flex;font-family:inherit;font-size:inherit;font-weight:500;justify-content:center;line-height:1;transition-duration:.3s;transition-property:background-color,color;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.uppy-c-btn,[dir=rtl] .uppy-c-btn{text-align:center}.uppy-c-btn:not(:disabled):not(.disabled){cursor:pointer}.uppy-c-btn::-moz-focus-inner{border:0}.uppy-c-btn-primary{background-color:#1269cf;border-radius:4px;color:#fff;font-size:14px;padding:10px 18px}.uppy-c-btn-primary:not(:disabled):hover{background-color:#0e51a0}.uppy-c-btn-primary:focus{box-shadow:0 0 0 3px #1269cf66;outline:none}.uppy-size--md .uppy-c-btn-primary{padding:13px 22px}[data-uppy-theme=dark] .uppy-c-btn-primary{color:#eaeaea}[data-uppy-theme=dark] .uppy-c-btn-primary:focus{outline:none}[data-uppy-theme=dark] .uppy-c-btn-primary::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-c-btn-primary:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-c-btn-primary.uppy-c-btn--disabled{background-color:#8eb2db}.uppy-c-btn-link{background-color:initial;border-radius:4px;color:#525252;font-size:14px;line-height:1;padding:10px 15px}.uppy-c-btn-link:hover{color:#333}.uppy-c-btn-link:focus{box-shadow:0 0 0 3px #1269cf40;outline:none}.uppy-size--md .uppy-c-btn-link{padding:13px 18px}[data-uppy-theme=dark] .uppy-c-btn-link{color:#eaeaea}[data-uppy-theme=dark] .uppy-c-btn-link:focus{outline:none}[data-uppy-theme=dark] .uppy-c-btn-link::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-c-btn-link:focus{box-shadow:0 0 0 2px #aae1ffd9}[data-uppy-theme=dark] .uppy-c-btn-link:hover{color:#939393}.uppy-ProviderBrowser-viewType--grid ul.uppy-ProviderBrowser-list,.uppy-ProviderBrowser-viewType--unsplash ul.uppy-ProviderBrowser-list{align-items:flex-start;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;padding:6px}.uppy-ProviderBrowser-viewType--grid ul.uppy-ProviderBrowser-list:after,.uppy-ProviderBrowser-viewType--unsplash ul.uppy-ProviderBrowser-list:after{content:"";flex:auto}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem{margin:0;position:relative;width:50%}.uppy-size--md .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem,.uppy-size--md .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem{width:33.3333%}.uppy-size--lg .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem,.uppy-size--lg .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem{width:25%}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem:before,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem:before{content:"";display:block;padding-top:100%}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--selected img,.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--selected svg,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--selected img,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--selected svg{opacity:.85}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--disabled,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--disabled{opacity:.5}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner{background-color:#93939333}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner,[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner{background-color:#eaeaea33}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview svg,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview svg{height:30%;width:30%;fill:#000000b3}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview svg,[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview svg{fill:#fffc}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner{border-radius:4px;height:calc(100% - 14px);inset:7px;overflow:hidden;position:absolute;text-align:center;width:calc(100% - 14px)}@media(hover:none){.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner .uppy-ProviderBrowserItem-author{display:block}}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner,[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner{box-shadow:0 0 0 3px #aae1ffb3}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner img,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner img{border-radius:4px;height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-author{background:#0000004d;bottom:0;color:#fff;display:none;font-size:12px;font-weight:500;left:0;margin:0;padding:5px;position:absolute;text-decoration:none;width:100%}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-author:hover,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-author:hover{background:#0006;text-decoration:underline}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox{background-color:#1269cf;border-radius:50%;height:26px;opacity:0;position:absolute;right:16px;top:16px;width:26px;z-index:1002}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox:after,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox:after{height:7px;inset-inline-start:7px;top:8px;width:12px}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox{opacity:1}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:hover+label .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:hover+label .uppy-ProviderBrowserItem-author{display:block}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label{box-shadow:0 0 0 3px #1269cf80}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label:focus,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label:focus{outline:none}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label::-moz-focus-inner,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label::-moz-focus-inner{border:0}.uppy-ProviderBrowser-viewType--list{background-color:#fff}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--list{background-color:#1f1f1f}.uppy-ProviderBrowser-viewType--list li.uppy-ProviderBrowserItem{align-items:center;display:flex;margin:0;padding:7px 15px}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--list li.uppy-ProviderBrowserItem{color:#eaeaea}.uppy-ProviderBrowser-viewType--list li.uppy-ProviderBrowserItem--disabled{opacity:.6}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox{background-color:#fff;border:1px solid #cfcfcf;border-radius:3px;height:17px;margin-inline-end:15px;width:17px}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox:focus{border:1px solid #1269cf;box-shadow:0 0 0 3px #1269cf40;outline:none}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox:after{height:5px;inset-inline-start:3px;opacity:0;top:4px;width:9px}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox:focus{border-color:#02baf2b3;box-shadow:0 0 0 3px #02baf233}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox,.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-partial .uppy-ProviderBrowserItem-checkbox{background-color:#1269cf;border-color:#1269cf}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox:after,.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-partial .uppy-ProviderBrowserItem-checkbox:after{opacity:1}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner{align-items:center;color:inherit;display:flex;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;overflow:hidden;padding:2px;text-overflow:ellipsis;white-space:nowrap}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner:focus{outline:none;text-decoration:underline}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner img,.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner svg{margin-inline-end:8px}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner span{line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--disabled .uppy-ProviderBrowserItem-inner{cursor:default}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-iconWrap{margin-inline-end:7px;width:20px}.uppy-ProviderBrowserItem-checkbox{cursor:pointer;flex-shrink:0;position:relative}.uppy-ProviderBrowserItem-checkbox:disabled,.uppy-ProviderBrowserItem-checkbox:disabled:after{cursor:default}[data-uppy-theme=dark] .uppy-ProviderBrowserItem-checkbox{background-color:#1f1f1f;border-color:#939393}[data-uppy-theme=dark] .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox{background-color:#333}.uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox:after{border-bottom:2px solid #eaeaea;border-left:2px solid #eaeaea;content:"";cursor:pointer;position:absolute;transform:rotate(-45deg)}.uppy-ProviderBrowserItem--is-partial .uppy-ProviderBrowserItem-checkbox:after{background-color:#eaeaea!important;content:""!important;height:2px!important;left:20%!important;position:absolute!important;right:20%!important;top:50%!important;transform:translateY(-50%)!important}.uppy-SearchProvider{align-items:center;display:flex;flex:1;flex-direction:column;height:100%;justify-content:center;width:100%}[data-uppy-theme=dark] .uppy-SearchProvider{background-color:#1f1f1f}.uppy-SearchProvider-input{margin-bottom:15px;max-width:650px;width:90%}.uppy-size--md .uppy-SearchProvider-input{margin-bottom:20px}.uppy-SearchProvider-input::-webkit-search-cancel-button{display:none}.uppy-SearchProvider-searchButton{padding:13px 25px}.uppy-size--md .uppy-SearchProvider-searchButton{padding:13px 30px}.uppy-DashboardContent-panelBody{align-items:center;display:flex;flex:1;justify-content:center}[data-uppy-theme=dark] .uppy-DashboardContent-panelBody{background-color:#1f1f1f}.uppy-Provider-auth,.uppy-Provider-empty,.uppy-Provider-error,.uppy-Provider-loading{align-items:center;color:#939393;display:flex;flex:1;flex-flow:column wrap;justify-content:center}.uppy-Provider-empty{color:#939393}.uppy-Provider-authIcon svg{height:75px;width:100px}.uppy-Provider-authTitle{color:#757575;font-size:17px;font-weight:400;line-height:1.4;margin-bottom:30px;max-width:500px;padding:0 15px;text-align:center}.uppy-size--md .uppy-Provider-authTitle{font-size:20px}[data-uppy-theme=dark] .uppy-Provider-authTitle{color:#cfcfcf}.uppy-Provider-btn-google{align-items:center;background:#4285f4;display:flex;padding:8px 12px!important}.uppy-Provider-btn-google:hover{background-color:#1266f1}.uppy-Provider-btn-google:focus{box-shadow:0 0 0 3px #4285f466;outline:none}.uppy-Provider-btn-google svg{margin-right:8px}.uppy-Provider-breadcrumbs{color:#525252;flex:1;font-size:12px;margin-bottom:10px;text-align:start}.uppy-size--md .uppy-Provider-breadcrumbs{margin-bottom:0}[data-uppy-theme=dark] .uppy-Provider-breadcrumbs{color:#eaeaea}.uppy-Provider-breadcrumbsIcon{color:#525252;display:inline-block;line-height:1;margin-inline-end:4px;vertical-align:middle}.uppy-Provider-breadcrumbsIcon svg{height:13px;width:13px;fill:#525252}.uppy-Provider-breadcrumbs button{border-radius:3px;display:inline-block;line-height:inherit;padding:4px}.uppy-Provider-breadcrumbs button:focus{outline:none}.uppy-Provider-breadcrumbs button::-moz-focus-inner{border:0}.uppy-Provider-breadcrumbs button:hover{color:#0e51a0}.uppy-Provider-breadcrumbs button:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-Provider-breadcrumbs button:focus{background-color:#333}.uppy-Provider-breadcrumbs button:not(:last-of-type){text-decoration:underline}.uppy-Provider-breadcrumbs button:last-of-type{color:#333;cursor:normal;font-weight:500;pointer-events:none}.uppy-Provider-breadcrumbs button:hover{cursor:pointer}[data-uppy-theme=dark] .uppy-Provider-breadcrumbs button{color:#eaeaea}.uppy-ProviderBrowser{display:flex;flex:1;flex-direction:column;font-size:14px;font-weight:400;height:100%}.uppy-ProviderBrowser-user{color:#333;font-weight:500;margin:0 8px 0 0}[data-uppy-theme=dark] .uppy-ProviderBrowser-user{color:#eaeaea}.uppy-ProviderBrowser-user:after{color:#939393;content:"·";font-weight:400;inset-inline-start:4px;position:relative}.uppy-ProviderBrowser-header{border-bottom:1px solid #eaeaea;position:relative;z-index:1001}[data-uppy-theme=dark] .uppy-ProviderBrowser-header{border-bottom:1px solid #333}.uppy-ProviderBrowser-headerBar{background-color:#fafafa;color:#757575;font-size:12px;line-height:1.4;padding:7px 15px;z-index:1001}.uppy-size--md .uppy-ProviderBrowser-headerBar{align-items:center;display:flex}[data-uppy-theme=dark] .uppy-ProviderBrowser-headerBar{background-color:#1f1f1f}.uppy-ProviderBrowser-headerBar--simple{display:block;justify-content:center;text-align:center}.uppy-ProviderBrowser-headerBar--simple .uppy-Provider-breadcrumbsWrap{display:inline-block;flex:none;vertical-align:middle}.uppy-ProviderBrowser-searchFilter{align-items:center;display:flex;height:30px;margin-bottom:15px;margin-top:15px;padding-left:8px;padding-right:8px;position:relative;width:100%}.uppy-ProviderBrowser-searchFilterInput{background-color:#eaeaea;border:0;border-radius:4px;color:#333;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;font-size:13px;height:30px;line-height:1.4;outline:0;padding-inline-end:30px;padding-inline-start:30px;width:100%;z-index:1001}.uppy-ProviderBrowser-searchFilterInput::-webkit-search-cancel-button{display:none}[data-uppy-theme=dark] .uppy-ProviderBrowser-searchFilterInput{background-color:#1f1f1f;color:#eaeaea}.uppy-ProviderBrowser-searchFilterInput:focus{background-color:#cfcfcf;border:0}[data-uppy-theme=dark] .uppy-ProviderBrowser-searchFilterInput:focus{background-color:#333}.uppy-ProviderBrowser-searchFilterIcon{color:#757575;height:12px;inset-inline-start:16px;position:absolute;width:12px;z-index:1002}.uppy-ProviderBrowser-searchFilterInput::-moz-placeholder{color:#939393;opacity:1}.uppy-ProviderBrowser-searchFilterInput::placeholder{color:#939393;opacity:1}.uppy-ProviderBrowser-searchFilterReset{border-radius:3px;color:#939393;cursor:pointer;height:22px;inset-inline-end:16px;padding:6px;position:absolute;width:22px;z-index:1002}.uppy-ProviderBrowser-searchFilterReset:focus{outline:none}.uppy-ProviderBrowser-searchFilterReset::-moz-focus-inner{border:0}.uppy-ProviderBrowser-searchFilterReset:focus{box-shadow:0 0 0 3px #1269cf80}.uppy-ProviderBrowser-searchFilterReset:hover{color:#757575}.uppy-ProviderBrowser-searchFilterReset svg{vertical-align:text-top}.uppy-ProviderBrowser-userLogout{border-radius:3px;color:#1269cf;cursor:pointer;line-height:inherit;padding:4px}.uppy-ProviderBrowser-userLogout:focus{outline:none}.uppy-ProviderBrowser-userLogout::-moz-focus-inner{border:0}.uppy-ProviderBrowser-userLogout:hover{color:#0e51a0}.uppy-ProviderBrowser-userLogout:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-ProviderBrowser-userLogout:focus{background-color:#333}.uppy-ProviderBrowser-userLogout:hover{text-decoration:underline}[data-uppy-theme=dark] .uppy-ProviderBrowser-userLogout{color:#eaeaea}.uppy-ProviderBrowser-body{flex:1;position:relative}.uppy-ProviderBrowser-list{background-color:#fff;border-spacing:0;display:block;flex:1;height:100%;inset:0;list-style:none;margin:0;overflow-x:hidden;overflow-y:auto;padding:0;position:absolute;width:100%;-webkit-overflow-scrolling:touch}[data-uppy-theme=dark] .uppy-ProviderBrowser-list{background-color:#1f1f1f}.uppy-ProviderBrowser-list:focus{outline:none}.uppy-ProviderBrowserItem-inner{cursor:pointer;font-size:13px;font-weight:500}.uppy-ProviderBrowser-footer{align-items:center;background-color:#fff;border-top:1px solid #eaeaea;display:flex;justify-content:space-between;padding:15px}.uppy-ProviderBrowser-footer button{margin-inline-end:8px}[data-uppy-theme=dark] .uppy-ProviderBrowser-footer{background-color:#1f1f1f;border-top:1px solid #333}.uppy-ProviderBrowser-footer-buttons{flex-shrink:0}.uppy-ProviderBrowser-footer-error{color:#e32437;line-height:18px}@media(max-width:426px){.uppy-ProviderBrowser-footer{align-items:stretch;flex-direction:column-reverse}.uppy-ProviderBrowser-footer-error{padding-bottom:10px}}.picker-dialog-bg{z-index:20000!important}.picker-dialog{z-index:20001!important}.uppy-Dashboard-Item-previewInnerWrap{align-items:center;border-radius:3px;box-shadow:0 0 2px #0006;display:flex;flex-direction:column;height:100%;justify-content:center;overflow:hidden;position:relative;width:100%}.uppy-size--md .uppy-Dashboard-Item-previewInnerWrap{box-shadow:0 1px 2px #00000026}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-previewInnerWrap{box-shadow:none}.uppy-Dashboard-Item-previewInnerWrap:after{background-color:#000000a6;content:"";display:none;inset:0;position:absolute;z-index:1001}.uppy-Dashboard-Item-previewLink{inset:0;position:absolute;z-index:1002}.uppy-Dashboard-Item-previewLink:focus{box-shadow:inset 0 0 0 3px #579df0}[data-uppy-theme=dark] .uppy-Dashboard-Item-previewLink:focus{box-shadow:inset 0 0 0 3px #016c8d}.uppy-Dashboard-Item-preview img.uppy-Dashboard-Item-previewImg{border-radius:3px;height:100%;-o-object-fit:cover;object-fit:cover;transform:translateZ(0);width:100%}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-preview img.uppy-Dashboard-Item-previewImg{height:auto;max-height:100%;max-width:100%;-o-object-fit:contain;object-fit:contain;padding:10px;width:auto}.uppy-Dashboard-Item-progress{color:#fff;left:50%;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);transition:all .35 ease;width:120px;z-index:1002}.uppy-Dashboard-Item-progressIndicator{color:#fff;display:inline-block;height:38px;opacity:.9;width:38px}.uppy-size--md .uppy-Dashboard-Item-progressIndicator{height:55px;width:55px}button.uppy-Dashboard-Item-progressIndicator{cursor:pointer}button.uppy-Dashboard-Item-progressIndicator:focus{outline:none}button.uppy-Dashboard-Item-progressIndicator::-moz-focus-inner{border:0}button.uppy-Dashboard-Item-progressIndicator:focus .uppy-Dashboard-Item-progressIcon--bg,button.uppy-Dashboard-Item-progressIndicator:focus .uppy-Dashboard-Item-progressIcon--retry{fill:#579df0}.uppy-Dashboard-Item-progressIcon--circle{height:100%;width:100%}.uppy-Dashboard-Item-progressIcon--bg{stroke:#fff6}.uppy-Dashboard-Item-progressIcon--progress{transition:stroke-dashoffset .5s ease-out;stroke:#fff}.uppy-Dashboard-Item-progressIcon--play{transition:all .2s;fill:#fff;stroke:#fff}.uppy-Dashboard-Item-progressIcon--cancel{transition:all .2s;fill:#fff}.uppy-Dashboard-Item-progressIcon--pause{transition:all .2s;fill:#fff;stroke:#fff}.uppy-Dashboard-Item-progressIcon--check{transition:all .2s;fill:#fff}.uppy-Dashboard-Item-progressIcon--retry{fill:#fff}.uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progress{inset-inline-end:-8px;inset-inline-start:auto;top:-9px;transform:none;width:auto}.uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-progressIndicator{height:18px;width:18px}.uppy-size--md .uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-progressIndicator{height:28px;width:28px}.uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progressIndicator{height:18px;opacity:1;width:18px}.uppy-size--md .uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progressIndicator{height:22px;width:22px}.uppy-Dashboard-Item.is-processing .uppy-Dashboard-Item-progress{opacity:0}.uppy-Dashboard-Item-fileInfo{padding-inline-end:5px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfo{padding-inline-end:10px}.uppy-size--md.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfo{padding-inline-end:15px}.uppy-Dashboard-Item-name{font-size:12px;font-weight:500;line-height:1.3;margin-bottom:5px;word-wrap:anywhere;word-break:break-all}[data-uppy-theme=dark] .uppy-Dashboard-Item-name{color:#eaeaea}.uppy-size--md.uppy-Dashboard--singleFile .uppy-Dashboard-Item-name{font-size:14px;line-height:1.4}.uppy-Dashboard-Item-fileName{align-items:baseline;display:flex}.uppy-Dashboard-Item-fileName button{margin-left:5px}.uppy-Dashboard-Item-author{color:#757575;display:inline-block;font-size:11px;font-weight:400;line-height:1;margin-bottom:5px;vertical-align:bottom}.uppy-Dashboard-Item-author a{color:#757575}.uppy-Dashboard-Item-status{color:#757575;font-size:11px;font-weight:400;line-height:1}[data-uppy-theme=dark] .uppy-Dashboard-Item-status{color:#bbb}.uppy-Dashboard-Item-statusSize{display:inline-block;margin-bottom:5px;text-transform:uppercase;vertical-align:bottom}.uppy-Dashboard-Item-reSelect{color:#1269cf;font-family:inherit;font-size:inherit;font-weight:600}.uppy-Dashboard-Item-errorMessage{background-color:#fdeff1;color:#a51523;font-size:11px;font-weight:500;line-height:1.3;padding:5px 6px}.uppy-Dashboard-Item-errorMessageBtn{color:#a51523;cursor:pointer;font-size:11px;font-weight:500;text-decoration:underline}.uppy-Dashboard-Item-preview .uppy-Dashboard-Item-errorMessage{display:none}.uppy-size--md .uppy-Dashboard-Item-preview .uppy-Dashboard-Item-errorMessage{border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-top:1px solid #f7c2c8;bottom:0;display:block;left:0;line-height:1.4;padding:6px 8px;position:absolute;right:0}.uppy-Dashboard-Item-fileInfo .uppy-Dashboard-Item-errorMessage{border:1px solid #f7c2c8;border-radius:3px;display:inline-block;position:static}.uppy-size--md .uppy-Dashboard-Item-fileInfo .uppy-Dashboard-Item-errorMessage{display:none}.uppy-Dashboard-Item-action{color:#939393;cursor:pointer}.uppy-Dashboard-Item-action:focus{outline:none}.uppy-Dashboard-Item-action::-moz-focus-inner{border:0}.uppy-Dashboard-Item-action:focus{box-shadow:0 0 0 3px #1269cf80}.uppy-Dashboard-Item-action:hover{color:#1f1f1f;opacity:1}[data-uppy-theme=dark] .uppy-Dashboard-Item-action{color:#cfcfcf}[data-uppy-theme=dark] .uppy-Dashboard-Item-action:focus{outline:none}[data-uppy-theme=dark] .uppy-Dashboard-Item-action::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-Dashboard-Item-action:focus{box-shadow:0 0 0 2px #aae1ffd9}[data-uppy-theme=dark] .uppy-Dashboard-Item-action:hover{color:#eaeaea}.uppy-Dashboard-Item-action--remove{color:#1f1f1f;opacity:.95}.uppy-Dashboard-Item-action--remove:hover{color:#000;opacity:1}.uppy-size--md .uppy-Dashboard-Item-action--remove{height:18px;inset-inline-end:-8px;padding:0;position:absolute;top:-8px;width:18px;z-index:1002}.uppy-size--md .uppy-Dashboard-Item-action--remove:focus{border-radius:50%}.uppy-Dashboard--singleFile.uppy-size--height-md .uppy-Dashboard-Item-action--remove{inset-inline-end:8px;position:absolute;top:8px}[data-uppy-theme=dark] .uppy-Dashboard-Item-action--remove{color:#525252}[data-uppy-theme=dark] .uppy-Dashboard-Item-action--remove:hover{color:#333}.uppy-Dashboard:not(.uppy-size--md):not(.uppy-Dashboard--singleFile.uppy-size--height-md) .uppy-Dashboard-Item-actionWrapper{align-items:center;display:flex}.uppy-Dashboard:not(.uppy-size--md):not(.uppy-Dashboard--singleFile.uppy-size--height-md) .uppy-Dashboard-Item-action{height:22px;margin-left:3px;padding:3px;width:22px}.uppy-Dashboard:not(.uppy-size--md):not(.uppy-Dashboard--singleFile.uppy-size--height-md) .uppy-Dashboard-Item-action:focus{border-radius:3px}.uppy-size--md .uppy-Dashboard-Item-action--copyLink,.uppy-size--md .uppy-Dashboard-Item-action--edit{height:16px;padding:0;width:16px}.uppy-size--md .uppy-Dashboard-Item-action--copyLink:focus,.uppy-size--md .uppy-Dashboard-Item-action--edit:focus{border-radius:3px}.uppy-Dashboard-Item{align-items:center;border-bottom:1px solid #eaeaea;display:flex;padding:10px}.uppy-Dashboard:not(.uppy-Dashboard--singleFile) .uppy-Dashboard-Item{padding-inline-end:0}[data-uppy-theme=dark] .uppy-Dashboard-Item{border-bottom:1px solid #333}.uppy-size--md .uppy-Dashboard-Item{border-bottom:0;display:block;float:inline-start;height:215px;margin:5px 15px;padding:0;position:relative;width:calc(33.333% - 30px)}.uppy-size--lg .uppy-Dashboard-Item{height:190px;margin:5px 15px;padding:0;width:calc(25% - 30px)}.uppy-size--xl .uppy-Dashboard-Item{height:210px;padding:0;width:calc(20% - 30px)}.uppy-Dashboard--singleFile .uppy-Dashboard-Item{border-bottom:0;display:flex;flex-direction:column;height:100%;max-width:400px;padding:15px;position:relative;width:100%}.uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-previewInnerWrap{opacity:.2}.uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-name{opacity:.7}.uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-preview:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='35' height='39' viewBox='0 0 35 39'%3E%3Cpath fill='%2523000' d='M1.708 38.66c1.709 0 3.417-3.417 6.834-3.417s5.125 3.417 8.61 3.417c3.348 0 5.056-3.417 8.473-3.417 4.305 0 5.125 3.417 6.833 3.417.889 0 1.709-.889 1.709-1.709v-19.68C34.167-5.757 0-5.757 0 17.271v19.68c0 .82.888 1.709 1.708 1.709m8.542-17.084a3.383 3.383 0 0 1-3.417-3.416 3.383 3.383 0 0 1 3.417-3.417 3.383 3.383 0 0 1 3.417 3.417 3.383 3.383 0 0 1-3.417 3.416m13.667 0A3.383 3.383 0 0 1 20.5 18.16a3.383 3.383 0 0 1 3.417-3.417 3.383 3.383 0 0 1 3.416 3.417 3.383 3.383 0 0 1-3.416 3.416'/%3E%3C/svg%3E");background-position:50% 10px;background-repeat:no-repeat;background-size:25px;content:"";inset:0;opacity:.5;position:absolute;z-index:1005}.uppy-size--md .uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-preview:before{background-position:50% 50%;background-size:40px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-preview:before{background-position:50% 50%;background-size:30%}.uppy-Dashboard-Item-preview{flex-grow:0;flex-shrink:0;height:50px;position:relative;width:50px}.uppy-size--md .uppy-Dashboard-Item-preview{height:140px;width:100%}.uppy-size--lg .uppy-Dashboard-Item-preview{height:120px}.uppy-size--xl .uppy-Dashboard-Item-preview{height:140px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-preview{flex-grow:1;max-height:75%;width:100%}.uppy-Dashboard--singleFile.uppy-size--md .uppy-Dashboard-Item-preview{max-height:100%}.uppy-Dashboard-Item-fileInfoAndButtons{align-items:center;display:flex;flex-grow:1;justify-content:space-between;padding-inline-end:8px;padding-inline-start:12px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfoAndButtons,.uppy-size--md .uppy-Dashboard-Item-fileInfoAndButtons{align-items:flex-start;padding:9px 0 0}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfoAndButtons{flex-grow:0;width:100%}.uppy-Dashboard-Item-fileInfo{flex-grow:1;flex-shrink:1}.uppy-Dashboard-Item-actionWrapper{flex-grow:0;flex-shrink:0}.uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-previewInnerWrap:after,.uppy-Dashboard-Item.is-inprogress .uppy-Dashboard-Item-previewInnerWrap:after{display:block}.uppy-Dashboard-Item-errorDetails{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#939393;border:none;border-radius:50%;color:#fff;cursor:help;flex-shrink:0;font-size:10px;font-weight:600;height:13px;inset-inline-start:2px;line-height:12px;position:relative;text-align:center;top:0;width:13px}.uppy-Dashboard-Item-errorDetails:after{line-height:1.3;word-wrap:break-word}.uppy-Dashboard-FileCard{background-color:#fff;border-radius:5px;box-shadow:0 0 10px 4px #0000001a;display:flex;flex-direction:column;height:100%;inset:0;position:absolute;width:100%;z-index:1005}.uppy-Dashboard-FileCard .uppy-DashboardContent-bar{border-top-left-radius:5px;border-top-right-radius:5px}.uppy-Dashboard-FileCard .uppy-Dashboard-FileCard-actions{border-bottom-left-radius:5px;border-bottom-right-radius:5px}.uppy-Dashboard-FileCard-inner{display:flex;flex-direction:column;flex-grow:1;flex-shrink:1;height:100%;min-height:0}.uppy-Dashboard-FileCard-preview{align-items:center;border-bottom:1px solid #eaeaea;display:flex;flex-grow:0;flex-shrink:1;height:60%;justify-content:center;min-height:0;position:relative}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-preview{background-color:#333;border-bottom:0}.uppy-Dashboard-FileCard-preview img.uppy-Dashboard-Item-previewImg{border-radius:3px;box-shadow:0 3px 20px #00000026;flex:0 0 auto;max-height:90%;max-width:90%;-o-object-fit:cover;object-fit:cover}.uppy-Dashboard-FileCard-edit{background-color:#00000080;border-radius:50px;color:#fff;font-size:13px;inset-inline-end:10px;padding:7px 15px;position:absolute;top:10px}.uppy-Dashboard-FileCard-edit:focus{outline:none}.uppy-Dashboard-FileCard-edit::-moz-focus-inner{border:0}.uppy-Dashboard-FileCard-edit:focus{box-shadow:0 0 0 3px #1269cf80}.uppy-Dashboard-FileCard-edit:hover{background-color:#000c}.uppy-Dashboard-FileCard-info{flex-grow:0;flex-shrink:0;height:40%;overflow-y:auto;padding:30px 20px 20px;-webkit-overflow-scrolling:touch}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-info{background-color:#1f1f1f}.uppy-Dashboard-FileCard-fieldset{border:0;font-size:0;margin:auto auto 12px;max-width:640px;padding:0}.uppy-Dashboard-FileCard-label{color:#525252;display:inline-block;font-size:12px;vertical-align:middle;width:22%}.uppy-size--md .uppy-Dashboard-FileCard-label{font-size:14px}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-label{color:#eaeaea}.uppy-Dashboard-FileCard-input{display:inline-block;vertical-align:middle;width:78%}.uppy-Dashboard-FileCard-actions{align-items:center;background-color:#fafafa;border-top:1px solid #eaeaea;display:flex;flex-grow:0;flex-shrink:0;height:55px;padding:0 15px}.uppy-size--md .uppy-Dashboard-FileCard-actions{height:65px}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-actions{background-color:#1f1f1f;border-top:1px solid #333}.uppy-Dashboard-FileCard-actionsBtn{margin-inline-end:10px}.uppy-Informer{bottom:60px;left:0;position:absolute;right:0;text-align:center;z-index:1005}.uppy-Informer span>div{margin-bottom:6px}.uppy-Informer-animated{opacity:0;transform:translateY(350%);transition:all .3s ease-in;z-index:-1000}.uppy-Informer p{background-color:#757575;border-radius:18px;color:#fff;display:inline-block;font-size:12px;font-weight:400;line-height:1.4;margin:0;max-width:90%;padding:6px 15px}.uppy-size--md .uppy-Informer p{font-size:14px;line-height:1.3;max-width:500px;padding:10px 20px}[data-uppy-theme=dark] .uppy-Informer p{background-color:#333}.uppy-Informer p span{background-color:#fff;border-radius:50%;color:#525252;display:inline-block;font-size:10px;height:13px;inset-inline-start:3px;line-height:12px;margin-inline-start:-1px;position:relative;top:-1px;vertical-align:middle;width:13px}.uppy-Informer p span:hover{cursor:help}.uppy-Informer p span:after{line-height:1.3;word-wrap:break-word}.uppy-Root [aria-label][role~=tooltip]{position:relative}.uppy-Root [aria-label][role~=tooltip]:after,.uppy-Root [aria-label][role~=tooltip]:before{backface-visibility:hidden;box-sizing:border-box;opacity:0;pointer-events:none;position:absolute;transform:translateZ(0);transform-origin:top;transition:all var(--microtip-transition-duration,.18s) var(--microtip-transition-easing,ease-in-out) var(--microtip-transition-delay,0s);will-change:transform;z-index:10}.uppy-Root [aria-label][role~=tooltip]:before{background-size:100% auto!important;content:""}.uppy-Root [aria-label][role~=tooltip]:after{background:#111111e6;border-radius:4px;box-sizing:initial;color:#fff;content:attr(aria-label);font-size:var(--microtip-font-size,13px);font-weight:var(--microtip-font-weight,normal);padding:.5em 1em;text-transform:var(--microtip-text-transform,none);white-space:nowrap}.uppy-Root [aria-label][role~=tooltip]:focus:after,.uppy-Root [aria-label][role~=tooltip]:focus:before,.uppy-Root [aria-label][role~=tooltip]:hover:after,.uppy-Root [aria-label][role~=tooltip]:hover:before{opacity:1;pointer-events:auto}.uppy-Root [role~=tooltip][data-microtip-position|=top]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M2.658 0h32.004c-6 0-11.627 12.002-16.002 12.002S8.594 0 2.658 0'/%3E%3C/svg%3E") no-repeat;bottom:100%;height:6px;left:50%;margin-bottom:5px;transform:translate3d(-50%,0,0);width:18px}.uppy-Root [role~=tooltip][data-microtip-position|=top]:after{bottom:100%;left:50%;margin-bottom:11px;transform:translate3d(-50%,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=top]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position|=top]:hover:before{transform:translate3d(-50%,-5px,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-left]:after{bottom:100%;transform:translate3d(calc(-100% + 16px),0,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-left]:hover:after{transform:translate3d(calc(-100% + 16px),-5px,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-right]:after{bottom:100%;transform:translate3d(-16px,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-right]:hover:after{transform:translate3d(-16px,-5px,0)}.uppy-Root [role~=tooltip][data-microtip-position|=bottom]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M33.342 12H1.338c6 0 11.627-12.002 16.002-12.002S27.406 12 33.342 12'/%3E%3C/svg%3E") no-repeat;bottom:auto;height:6px;left:50%;margin-bottom:0;margin-top:5px;top:100%;transform:translate3d(-50%,-10px,0);width:18px}.uppy-Root [role~=tooltip][data-microtip-position|=bottom]:after{left:50%;margin-top:11px;top:100%;transform:translate3d(-50%,-10px,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position|=bottom]:hover:before{transform:translate3d(-50%,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-left]:after{top:100%;transform:translate3d(calc(-100% + 16px),-10px,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-left]:hover:after{transform:translate3d(calc(-100% + 16px),0,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-right]:after{top:100%;transform:translate3d(-16px,-10px,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-right]:hover:after{transform:translate3d(-16px,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=left]:after,.uppy-Root [role~=tooltip][data-microtip-position=left]:before{inset:50% 100% auto auto;transform:translate3d(10px,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-position=left]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='36'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M0 33.342V1.338c0 6 12.002 11.627 12.002 16.002S0 27.406 0 33.342'/%3E%3C/svg%3E") no-repeat;height:18px;margin-bottom:0;margin-right:5px;width:6px}.uppy-Root [role~=tooltip][data-microtip-position=left]:after{margin-right:11px}.uppy-Root [role~=tooltip][data-microtip-position=left]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position=left]:hover:before{transform:translate3d(0,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-position=right]:after,.uppy-Root [role~=tooltip][data-microtip-position=right]:before{bottom:auto;left:100%;top:50%;transform:translate3d(-10px,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-position=right]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='36'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M12 2.658v32.004c0-6-12.002-11.627-12.002-16.002S12 8.594 12 2.658'/%3E%3C/svg%3E") no-repeat;height:18px;margin-bottom:0;margin-left:5px;width:6px}.uppy-Root [role~=tooltip][data-microtip-position=right]:after{margin-left:11px}.uppy-Root [role~=tooltip][data-microtip-position=right]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position=right]:hover:before{transform:translate3d(0,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-size=small]:after{white-space:normal;width:80px}.uppy-Root [role~=tooltip][data-microtip-size=medium]:after{white-space:normal;width:150px}.uppy-Root [role~=tooltip][data-microtip-size=large]:after{white-space:normal;width:260px}.uppy-StatusBar{background-color:#fff;color:#fff;display:flex;font-size:12px;font-weight:400;height:46px;line-height:40px;position:relative;transition:height .2s;z-index:1001}[data-uppy-theme=dark] .uppy-StatusBar{background-color:#1f1f1f}.uppy-StatusBar:before{background-color:#eaeaea;content:"";height:2px;inset:0;position:absolute;width:100%}[data-uppy-theme=dark] .uppy-StatusBar:before{background-color:#757575}.uppy-StatusBar[aria-hidden=true]{height:0;overflow-y:hidden}.uppy-StatusBar.is-complete .uppy-StatusBar-progress{background-color:#1bb240}.uppy-StatusBar.is-error .uppy-StatusBar-progress{background-color:#e32437}.uppy-StatusBar.is-complete .uppy-StatusBar-statusIndicator{color:#1bb240}.uppy-StatusBar.is-error .uppy-StatusBar-statusIndicator{color:#e32437}.uppy-StatusBar:not([aria-hidden=true]).is-waiting{background-color:#fff;border-top:1px solid #eaeaea;height:65px}[data-uppy-theme=dark] .uppy-StatusBar:not([aria-hidden=true]).is-waiting{background-color:#1f1f1f;border-top:1px solid #333}.uppy-StatusBar-progress{background-color:#1269cf;height:2px;position:absolute;transition:background-color,width .3s ease-out;z-index:1001}.uppy-StatusBar-progress.is-indeterminate{animation:uppy-StatusBar-ProgressStripes 1s linear infinite;background-image:linear-gradient(45deg,#0000004d 25%,#0000 0 50%,#0000004d 0 75%,#0000 0,#0000);background-size:64px 64px}@keyframes uppy-StatusBar-ProgressStripes{0%{background-position:0 0}to{background-position:64px 0}}.uppy-StatusBar.is-postprocessing .uppy-StatusBar-progress,.uppy-StatusBar.is-preprocessing .uppy-StatusBar-progress{background-color:#f6a623}.uppy-StatusBar.is-waiting .uppy-StatusBar-progress{display:none}.uppy-StatusBar-content{align-items:center;color:#333;display:flex;height:100%;padding-inline-start:10px;position:relative;text-overflow:ellipsis;white-space:nowrap;z-index:1002}.uppy-size--md .uppy-StatusBar-content{padding-inline-start:15px}[data-uppy-theme=dark] .uppy-StatusBar-content{color:#eaeaea}.uppy-StatusBar-status{display:flex;flex-direction:column;font-weight:400;justify-content:center;line-height:1.4;padding-inline-end:.3em}.uppy-StatusBar-statusPrimary{display:flex;font-weight:500;line-height:1}.uppy-StatusBar-statusPrimary button.uppy-StatusBar-details{margin-left:5px}[data-uppy-theme=dark] .uppy-StatusBar-statusPrimary{color:#eaeaea}.uppy-StatusBar-statusSecondary{color:#757575;display:inline-block;font-size:11px;line-height:1.2;margin-top:1px;white-space:nowrap}[data-uppy-theme=dark] .uppy-StatusBar-statusSecondary{color:#bbb}.uppy-StatusBar-statusSecondaryHint{display:inline-block;line-height:1;margin-inline-end:5px;vertical-align:middle}.uppy-size--md .uppy-StatusBar-statusSecondaryHint{margin-inline-end:8px}.uppy-StatusBar-statusIndicator{color:#525252;margin-inline-end:7px;position:relative;top:1px}.uppy-StatusBar-statusIndicator svg{vertical-align:text-bottom}.uppy-StatusBar-actions{align-items:center;bottom:0;display:flex;inset-inline-end:10px;position:absolute;top:0;z-index:1004}.uppy-StatusBar.is-waiting .uppy-StatusBar-actions{background-color:#fafafa;height:100%;padding:0 15px;position:static;width:100%}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actions{background-color:#1f1f1f}.uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts{flex-direction:column;height:90px}.uppy-size--md .uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts{flex-direction:row;height:65px}.uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts .uppy-StatusBar-actions{flex-direction:column;justify-content:center}.uppy-size--md .uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts .uppy-StatusBar-actions{flex-direction:row;justify-content:normal}.uppy-StatusBar-actionCircleBtn{cursor:pointer;line-height:1;margin:3px;opacity:.9}.uppy-StatusBar-actionCircleBtn:focus{outline:none}.uppy-StatusBar-actionCircleBtn::-moz-focus-inner{border:0}.uppy-StatusBar-actionCircleBtn:focus{box-shadow:0 0 0 3px #1269cf80}[data-uppy-theme=dark] .uppy-StatusBar-actionCircleBtn:focus{outline:none}[data-uppy-theme=dark] .uppy-StatusBar-actionCircleBtn::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-StatusBar-actionCircleBtn:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-StatusBar-actionCircleBtn:hover{opacity:1}.uppy-StatusBar-actionCircleBtn:focus{border-radius:50%}.uppy-StatusBar-actionCircleBtn svg{vertical-align:bottom}.uppy-StatusBar-actionBtn{color:#1269cf;display:inline-block;font-size:10px;line-height:inherit;vertical-align:middle}.uppy-size--md .uppy-StatusBar-actionBtn{font-size:11px}.uppy-StatusBar-actionBtn--disabled{opacity:.4}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--disabled{opacity:.7}.uppy-StatusBar-actionBtn--retry{background-color:#ff4b23;border-radius:8px;color:#fff;height:16px;line-height:1;margin-inline-end:6px;padding:1px 6px 3px 18px;position:relative}.uppy-StatusBar-actionBtn--retry:focus{outline:none}.uppy-StatusBar-actionBtn--retry::-moz-focus-inner{border:0}.uppy-StatusBar-actionBtn--retry:focus{box-shadow:0 0 0 3px #1269cf80}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--retry:focus{outline:none}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--retry::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--retry:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-StatusBar-actionBtn--retry:hover{background-color:#f92d00}.uppy-StatusBar-actionBtn--retry svg{inset-inline-start:6px;position:absolute;top:3px}.uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload{background-color:#1bb240;color:#fff;font-size:14px;line-height:1;padding:15px 10px;width:100%}.uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload:hover{background-color:#189c38}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload{background-color:#1c8b37}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload:hover{background-color:#18762f}.uppy-size--md .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload{padding:13px 22px;width:auto}.uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload.uppy-StatusBar-actionBtn--disabled:hover{background-color:#1bb240;cursor:not-allowed}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload.uppy-StatusBar-actionBtn--disabled:hover{background-color:#1c8b37}.uppy-StatusBar:not(.is-waiting) .uppy-StatusBar-actionBtn--upload{background-color:initial;color:#1269cf}.uppy-StatusBar-actionBtn--uploadNewlyAdded{border-radius:3px;padding-inline-end:3px;padding-bottom:1px;padding-inline-start:3px}.uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{outline:none}.uppy-StatusBar-actionBtn--uploadNewlyAdded::-moz-focus-inner{border:0}.uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{box-shadow:0 0 0 3px #1269cf80}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{outline:none}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--uploadNewlyAdded::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-StatusBar.is-postprocessing .uppy-StatusBar-actionBtn--uploadNewlyAdded,.uppy-StatusBar.is-preprocessing .uppy-StatusBar-actionBtn--uploadNewlyAdded{display:none}.uppy-StatusBar-actionBtn--done{border-radius:3px;line-height:1;padding:7px 8px}.uppy-StatusBar-actionBtn--done:focus{outline:none}.uppy-StatusBar-actionBtn--done::-moz-focus-inner{border:0}.uppy-StatusBar-actionBtn--done:hover{color:#0e51a0}.uppy-StatusBar-actionBtn--done:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--done:focus{background-color:#333}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--done{color:#02baf2}.uppy-size--md .uppy-StatusBar-actionBtn--done{font-size:14px}.uppy-StatusBar-serviceMsg{color:#000;font-size:11px;line-height:1.1;padding-left:10px}.uppy-size--md .uppy-StatusBar-serviceMsg{font-size:14px;padding-left:15px}[data-uppy-theme=dark] .uppy-StatusBar-serviceMsg{color:#eaeaea}.uppy-StatusBar-serviceMsg-ghostsIcon{left:6px;opacity:.5;position:relative;top:2px;vertical-align:text-bottom;width:10px}.uppy-size--md .uppy-StatusBar-serviceMsg-ghostsIcon{left:10px;top:1px;width:15px}.uppy-StatusBar-details{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#939393;border-radius:50%;color:#fff;cursor:help;display:inline-block;font-size:10px;font-weight:600;height:13px;inset-inline-start:2px;line-height:12px;position:relative;text-align:center;top:0;vertical-align:middle;width:13px}.uppy-StatusBar-details:after{line-height:1.3;word-wrap:break-word}.uppy-StatusBar-spinner{animation-duration:1s;animation-iteration-count:infinite;animation-name:uppy-StatusBar-spinnerAnimation;animation-timing-function:linear;fill:#1269cf;margin-inline-end:10px}.uppy-StatusBar.is-postprocessing .uppy-StatusBar-spinner,.uppy-StatusBar.is-preprocessing .uppy-StatusBar-spinner{fill:#f6a623}@keyframes uppy-StatusBar-spinnerAnimation{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.uppy-transition-slideDownUp-enter{opacity:.01;transform:translate3d(0,-105%,0);transition:transform .25s ease-in-out,opacity .25s ease-in-out}.uppy-transition-slideDownUp-enter.uppy-transition-slideDownUp-enter-active{opacity:1;transform:translateZ(0)}.uppy-transition-slideDownUp-leave{opacity:1;transform:translateZ(0);transition:transform .25s ease-in-out,opacity .25s ease-in-out}.uppy-transition-slideDownUp-leave.uppy-transition-slideDownUp-leave-active{opacity:.01;transform:translate3d(0,-105%,0)}@keyframes uppy-Dashboard-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes uppy-Dashboard-fadeOut{0%{opacity:1}to{opacity:0}}@keyframes uppy-Dashboard-slideDownAndFadeIn{0%{opacity:0;transform:translate3d(-50%,-70%,0)}to{opacity:1;transform:translate3d(-50%,-50%,0)}}@keyframes uppy-Dashboard-slideDownAndFadeIn--small{0%{opacity:0;transform:translate3d(0,-20%,0)}to{opacity:1;transform:translateZ(0)}}@keyframes uppy-Dashboard-slideUpFadeOut{0%{opacity:1;transform:translate3d(-50%,-50%,0)}to{opacity:0;transform:translate3d(-50%,-70%,0)}}@keyframes uppy-Dashboard-slideUpFadeOut--small{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20%,0)}}.uppy-Dashboard--modal{z-index:1001}.uppy-Dashboard--modal[aria-hidden=true]{display:none}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideDownAndFadeIn--small .3s cubic-bezier(0,0,.2,1)}@media only screen and (min-width:820px){.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideDownAndFadeIn .3s cubic-bezier(0,0,.2,1)}}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose>.uppy-Dashboard-overlay{animation:uppy-Dashboard-fadeIn .3s cubic-bezier(0,0,.2,1)}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose.uppy-Dashboard--isClosing>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideUpFadeOut--small .3s cubic-bezier(0,0,.2,1)}@media only screen and (min-width:820px){.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose.uppy-Dashboard--isClosing>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideUpFadeOut .3s cubic-bezier(0,0,.2,1)}}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose.uppy-Dashboard--isClosing>.uppy-Dashboard-overlay{animation:uppy-Dashboard-fadeOut .3s cubic-bezier(0,0,.2,1)}.uppy-Dashboard-isFixed{height:100vh;overflow:hidden}.uppy-Dashboard--modal .uppy-Dashboard-overlay{background-color:#00000080;inset:0;position:fixed;z-index:1001}.uppy-Dashboard-inner{background-color:#f4f4f4;border:1px solid #eaeaea;border-radius:5px;max-height:100%;max-width:100%;outline:none;position:relative}.uppy-size--md .uppy-Dashboard-inner{min-height:auto}@media only screen and (min-width:820px){.uppy-Dashboard-inner{height:500px;width:650px}}.uppy-Dashboard--modal .uppy-Dashboard-inner{z-index:1002}[data-uppy-theme=dark] .uppy-Dashboard-inner{background-color:#1f1f1f}.uppy-Dashboard--isDisabled .uppy-Dashboard-inner{cursor:not-allowed}.uppy-Dashboard-innerWrap{border-radius:5px;display:flex;flex-direction:column;height:100%;opacity:0;overflow:hidden;position:relative}.uppy-Dashboard--isInnerWrapVisible .uppy-Dashboard-innerWrap{opacity:1}.uppy-Dashboard--isDisabled .uppy-Dashboard-innerWrap{cursor:not-allowed;filter:grayscale(100%);opacity:.6;-webkit-user-select:none;-moz-user-select:none;user-select:none}.uppy-Dashboard--isDisabled .uppy-ProviderIconBg{fill:#9f9f9f}.uppy-Dashboard--isDisabled [aria-disabled],.uppy-Dashboard--isDisabled [disabled]{cursor:not-allowed;pointer-events:none}.uppy-Dashboard--modal .uppy-Dashboard-inner{border:none;inset:35px 15px 15px;position:fixed}@media only screen and (min-width:820px){.uppy-Dashboard--modal .uppy-Dashboard-inner{box-shadow:0 5px 15px 4px #00000026;left:50%;right:auto;top:50%;transform:translate(-50%,-50%)}}.uppy-Dashboard-close{color:#ffffffe6;cursor:pointer;display:block;font-size:27px;inset-inline-end:-2px;position:absolute;top:-33px;z-index:1005}.uppy-Dashboard-close:focus{outline:none}.uppy-Dashboard-close::-moz-focus-inner{border:0}.uppy-Dashboard-close:focus{color:#6eabf2}@media only screen and (min-width:820px){.uppy-Dashboard-close{font-size:35px;inset-inline-end:-35px;top:-10px}}.uppy-Dashboard-serviceMsg{background-color:#fffbf7;border-bottom:1px solid #edd4b9;border-top:1px solid #edd4b9;font-size:12px;font-weight:500;line-height:1.3;padding:12px 0;position:relative;top:-1px;z-index:1004}.uppy-size--md .uppy-Dashboard-serviceMsg{font-size:14px;line-height:1.4}[data-uppy-theme=dark] .uppy-Dashboard-serviceMsg{background-color:#1f1f1f;border-bottom:1px solid #333;border-top:1px solid #333;color:#eaeaea}.uppy-Dashboard-serviceMsg-title{display:block;line-height:1;margin-bottom:4px;padding-left:42px}.uppy-Dashboard-serviceMsg-text{padding:0 15px}.uppy-Dashboard-serviceMsg-actionBtn{color:#1269cf;font-size:inherit;font-weight:inherit;vertical-align:initial}[data-uppy-theme=dark] .uppy-Dashboard-serviceMsg-actionBtn{color:#02baf2e6}.uppy-Dashboard-serviceMsg-icon{left:15px;position:absolute;top:10px}.uppy-Dashboard-AddFiles{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;position:relative;text-align:center}[data-uppy-drag-drop-supported=true] .uppy-Dashboard-AddFiles{border:1px dashed #dfdfdf;border-radius:3px;height:calc(100% - 14px);margin:7px}.uppy-Dashboard-AddFilesPanel .uppy-Dashboard-AddFiles{border:none;height:calc(100% - 54px)}.uppy-Dashboard--modal .uppy-Dashboard-AddFiles{border-color:#cfcfcf}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles{border-color:#757575}.uppy-Dashboard-AddFiles-info{display:none;margin-top:auto;padding-bottom:15px;padding-top:15px}.uppy-size--height-md .uppy-Dashboard-AddFiles-info{display:block}.uppy-size--md .uppy-Dashboard-AddFiles-info{bottom:25px;left:0;padding-bottom:0;padding-top:30px;position:absolute;right:0}[data-uppy-num-acquirers="0"] .uppy-Dashboard-AddFiles-info{margin-top:0}.uppy-Dashboard-browse{color:#1269cf;cursor:pointer}.uppy-Dashboard-browse:focus{outline:none}.uppy-Dashboard-browse::-moz-focus-inner{border:0}.uppy-Dashboard-browse:focus,.uppy-Dashboard-browse:hover{border-bottom:1px solid #1269cf}[data-uppy-theme=dark] .uppy-Dashboard-browse{color:#02baf2e6}[data-uppy-theme=dark] .uppy-Dashboard-browse:focus,[data-uppy-theme=dark] .uppy-Dashboard-browse:hover{border-bottom:1px solid #02baf2}.uppy-Dashboard-browseBtn{display:block;font-size:14px;font-weight:500;margin-bottom:5px;margin-top:8px;width:100%}.uppy-size--md .uppy-Dashboard-browseBtn{font-size:15px;margin:15px auto;padding:13px 44px;width:auto}.uppy-Dashboard-AddFiles-list{display:flex;flex:1;flex-direction:column;margin-top:2px;overflow-y:auto;padding:2px 0;width:100%;-webkit-overflow-scrolling:touch}.uppy-size--md .uppy-Dashboard-AddFiles-list{flex:none;flex-direction:row;flex-wrap:wrap;justify-content:center;margin-top:15px;max-width:600px;overflow-y:visible;padding-top:0}.uppy-DashboardTab{border-bottom:1px solid #eaeaea;text-align:center;width:100%}[data-uppy-theme=dark] .uppy-DashboardTab{border-bottom:1px solid #333}.uppy-size--md .uppy-DashboardTab{border-bottom:none;display:inline-block;margin-bottom:10px;width:auto}.uppy-DashboardTab-btn{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:initial;color:#525252;cursor:pointer;flex-direction:row;height:100%;justify-content:left;padding:12px 15px;width:100%}.uppy-DashboardTab-btn:focus{outline:none}.uppy-size--md .uppy-DashboardTab-btn{border-radius:5px;flex-direction:column;margin-inline-end:1px;padding:10px 3px;width:86px}[data-uppy-theme=dark] .uppy-DashboardTab-btn{color:#eaeaea}.uppy-DashboardTab-btn::-moz-focus-inner{border:0}.uppy-DashboardTab-btn:hover{background-color:#e9ecef}[data-uppy-theme=dark] .uppy-DashboardTab-btn:hover{background-color:#333}.uppy-DashboardTab-btn:active,.uppy-DashboardTab-btn:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-DashboardTab-btn:active,[data-uppy-theme=dark] .uppy-DashboardTab-btn:focus{background-color:#525252}.uppy-DashboardTab-btn svg{display:inline-block;max-height:100%;max-width:100%;overflow:hidden;transition:transform .15s ease-in-out;vertical-align:text-top}.uppy-DashboardTab-inner{align-items:center;background-color:#fff;border-radius:8px;box-shadow:0 1px 1px #0000001a,0 1px 2px #0000001a,0 2px 3px #00000005;display:flex;height:32px;justify-content:center;margin-inline-end:10px;width:32px}.uppy-size--md .uppy-DashboardTab-inner{margin-inline-end:0}[data-uppy-theme=dark] .uppy-DashboardTab-inner{background-color:#323232;box-shadow:0 1px 1px #0003,0 1px 2px #0003,0 2px 3px #00000014}.uppy-DashboardTab-name{font-size:14px;font-weight:400}.uppy-size--md .uppy-DashboardTab-name{font-size:12px;line-height:15px;margin-bottom:0;margin-top:8px}.uppy-DashboardTab-iconMyDevice{color:#1269cf}[data-uppy-theme=dark] .uppy-DashboardTab-iconMyDevice{color:#02baf2}.uppy-DashboardTab-iconBox{color:#0061d5}[data-uppy-theme=dark] .uppy-DashboardTab-iconBox{color:#eaeaea}.uppy-DashboardTab-iconDropbox{color:#0061fe}[data-uppy-theme=dark] .uppy-DashboardTab-iconDropbox{color:#eaeaea}.uppy-DashboardTab-iconUnsplash{color:#111}[data-uppy-theme=dark] .uppy-DashboardTab-iconUnsplash{color:#eaeaea}.uppy-DashboardTab-iconWebdav{color:#111}[data-uppy-theme=dark] .uppy-DashboardTab-iconWebdav{color:#eaeaea}.uppy-DashboardTab-iconScreenRec{color:#2c3e50}[data-uppy-theme=dark] .uppy-DashboardTab-iconScreenRec{color:#eaeaea}.uppy-DashboardTab-iconAudio{color:#8030a3}[data-uppy-theme=dark] .uppy-DashboardTab-iconAudio{color:#bf6ee3}.uppy-Dashboard-input{height:.1px;opacity:0;overflow:hidden;position:absolute;width:.1px;z-index:-1}.uppy-DashboardContent-bar{align-items:center;background-color:#fafafa;border-bottom:1px solid #eaeaea;display:flex;flex-shrink:0;height:40px;justify-content:space-between;padding:0 10px;position:relative;width:100%;z-index:1004}.uppy-size--md .uppy-DashboardContent-bar{height:50px;padding:0 15px}[data-uppy-theme=dark] .uppy-DashboardContent-bar{background-color:#1f1f1f;border-bottom:1px solid #333}.uppy-DashboardContent-title{font-size:12px;font-weight:500;left:0;line-height:40px;margin:auto;max-width:170px;overflow-x:hidden;position:absolute;right:0;text-align:center;text-overflow:ellipsis;top:0;white-space:nowrap;width:100%}.uppy-size--md .uppy-DashboardContent-title{font-size:14px;line-height:50px;max-width:300px}[data-uppy-theme=dark] .uppy-DashboardContent-title{color:#eaeaea}.uppy-DashboardContent-back,.uppy-DashboardContent-save{-webkit-appearance:none;background:none;border:0;border-radius:3px;color:inherit;color:#1269cf;cursor:pointer;font-family:inherit;font-size:inherit;font-size:12px;font-weight:400;line-height:1;margin:0;margin-inline-start:-6px;padding:7px 6px}.uppy-DashboardContent-back:focus,.uppy-DashboardContent-save:focus{outline:none}.uppy-DashboardContent-back::-moz-focus-inner,.uppy-DashboardContent-save::-moz-focus-inner{border:0}.uppy-DashboardContent-back:hover,.uppy-DashboardContent-save:hover{color:#0e51a0}.uppy-DashboardContent-back:focus,.uppy-DashboardContent-save:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-DashboardContent-back:focus,[data-uppy-theme=dark] .uppy-DashboardContent-save:focus{background-color:#333}.uppy-size--md .uppy-DashboardContent-back,.uppy-size--md .uppy-DashboardContent-save{font-size:14px}[data-uppy-theme=dark] .uppy-DashboardContent-back,[data-uppy-theme=dark] .uppy-DashboardContent-save{color:#02baf2}.uppy-DashboardContent-addMore{-webkit-appearance:none;background:none;border:0;border-radius:3px;color:inherit;color:#1269cf;cursor:pointer;font-family:inherit;font-size:inherit;font-weight:500;height:29px;line-height:1;margin:0;margin-inline-end:-5px;padding:7px 8px;width:29px}.uppy-DashboardContent-addMore:focus{outline:none}.uppy-DashboardContent-addMore::-moz-focus-inner{border:0}.uppy-DashboardContent-addMore:hover{color:#0e51a0}.uppy-DashboardContent-addMore:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-DashboardContent-addMore:focus{background-color:#333}.uppy-size--md .uppy-DashboardContent-addMore{font-size:14px;height:auto;margin-inline-end:-8px;width:auto}[data-uppy-theme=dark] .uppy-DashboardContent-addMore{color:#02baf2}.uppy-DashboardContent-addMore svg{margin-inline-end:4px;vertical-align:initial}.uppy-size--md .uppy-DashboardContent-addMore svg{height:11px;width:11px}.uppy-DashboardContent-addMoreCaption{display:none}.uppy-size--md .uppy-DashboardContent-addMoreCaption{display:inline}.uppy-DashboardContent-panel{background-color:#f5f5f5;flex:1}.uppy-Dashboard-AddFilesPanel,.uppy-DashboardContent-panel{border-radius:5px;display:flex;flex-direction:column;inset:0;overflow:hidden;position:absolute;z-index:1005}.uppy-Dashboard-AddFilesPanel{background:#fafafa;background:linear-gradient(0deg,#fafafa 35%,#fafafad9);box-shadow:0 0 10px 5px #00000026}[data-uppy-theme=dark] .uppy-Dashboard-AddFilesPanel{background-color:#333;background-image:linear-gradient(0deg,#1f1f1f 35%,#1f1f1fd9)}.uppy-Dashboard--isAddFilesPanelVisible .uppy-Dashboard-files{filter:blur(2px)}.uppy-Dashboard-progress{bottom:0;height:12%;left:0;position:absolute;width:100%}.uppy-Dashboard-progressBarContainer.is-active{height:100%;left:0;position:absolute;top:0;width:100%;z-index:1004}.uppy-Dashboard-filesContainer{flex:1;margin:0;overflow-y:hidden;position:relative}.uppy-Dashboard-filesContainer:after{clear:both;content:"";display:table}.uppy-Dashboard-files{flex:1;margin:0;overflow-y:auto;padding:0 0 10px;-webkit-overflow-scrolling:touch}.uppy-size--md .uppy-Dashboard-files{padding-top:10px}.uppy-Dashboard--singleFile .uppy-Dashboard-filesInner{align-items:center;display:flex;height:100%;justify-content:center}.uppy-Dashboard-dropFilesHereHint{align-items:center;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48'%3E%3Cpath fill='%231269CF' d='M24 1v1C11.85 2 2 11.85 2 24s9.85 22 22 22 22-9.85 22-22S36.15 2 24 2zm0 0V0c13.254 0 24 10.746 24 24S37.254 48 24 48 0 37.254 0 24 10.746 0 24 0zm7.707 19.293a.999.999 0 1 1-1.414 1.414L25 16.414V34a1 1 0 1 1-2 0V16.414l-5.293 5.293a.999.999 0 1 1-1.414-1.414l7-7a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E");background-position:50% 50%;background-repeat:no-repeat;border:1px dashed #1269cf;border-radius:3px;color:#757575;display:flex;font-size:16px;justify-content:center;inset:7px;padding-top:90px;position:absolute;text-align:center;visibility:hidden;z-index:2000}[data-uppy-theme=dark] .uppy-Dashboard-dropFilesHereHint{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48'%3E%3Cpath fill='%2302BAF2' d='M24 1v1C11.85 2 2 11.85 2 24s9.85 22 22 22 22-9.85 22-22S36.15 2 24 2zm0 0V0c13.254 0 24 10.746 24 24S37.254 48 24 48 0 37.254 0 24 10.746 0 24 0zm7.707 19.293a.999.999 0 1 1-1.414 1.414L25 16.414V34a1 1 0 1 1-2 0V16.414l-5.293 5.293a.999.999 0 1 1-1.414-1.414l7-7a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E");border-color:#02baf2;color:#bbb}.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-dropFilesHereHint{pointer-events:none;visibility:visible}.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-files,.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-progressindicators,.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-serviceMsg,.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-DashboardContent-bar{opacity:.15}.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-AddFiles{opacity:.03}.uppy-Dashboard-AddFiles-title{color:#000;font-size:17px;font-weight:500;line-height:1.35;margin-bottom:5px;margin-top:15px;padding:0 15px;text-align:inline-start;width:100%}.uppy-size--md .uppy-Dashboard-AddFiles-title{font-size:21px;font-weight:400;margin-top:5px;max-width:480px;padding:0 35px;text-align:center}[data-uppy-num-acquirers="0"] .uppy-Dashboard-AddFiles-title{text-align:center}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles-title{color:#eaeaea}.uppy-Dashboard-AddFiles-title button{font-weight:500}.uppy-size--md .uppy-Dashboard-AddFiles-title button{font-weight:400}.uppy-Dashboard-note{color:#757575;font-size:14px;line-height:1.25;margin:auto;max-width:350px;padding:0 15px;text-align:center}.uppy-size--md .uppy-Dashboard-note{line-height:1.35;max-width:600px}[data-uppy-theme=dark] .uppy-Dashboard-note{color:#cfcfcf}a.uppy-Dashboard-poweredBy{color:#939393;display:inline-block;font-size:11px;margin-top:8px;text-align:center;text-decoration:none}.uppy-Dashboard-poweredByIcon{margin-left:1px;margin-right:1px;opacity:.9;position:relative;top:1px;vertical-align:text-top;fill:none;stroke:#939393}.uppy-Dashboard-Item-previewIcon{height:25px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:25px;z-index:100}.uppy-size--md .uppy-Dashboard-Item-previewIcon{height:38px;width:38px}.uppy-Dashboard-Item-previewIcon svg{height:100%;width:100%}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-previewIcon{height:100%;max-height:60%;max-width:60%;width:100%}.uppy-Dashboard-Item-previewIconWrap{height:76px;max-height:75%;position:relative}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-previewIconWrap{height:100%;width:100%}.uppy-Dashboard-Item-previewIconBg{filter:drop-shadow(rgba(0,0,0,.1) 0 1px 1px);height:100%;width:100%}.uppy-Dashboard-upload{height:50px;position:relative;width:50px}.uppy-size--md .uppy-Dashboard-upload{height:60px;width:60px}.uppy-Dashboard-upload .uppy-c-icon{position:relative;top:1px;width:50%}.uppy-Dashboard-uploadCount{background-color:#1bb240;border-radius:50%;color:#fff;font-size:8px;height:16px;inset-inline-end:-12px;line-height:16px;position:absolute;top:-12px;width:16px}.uppy-size--md .uppy-Dashboard-uploadCount{font-size:9px;height:18px;line-height:18px;width:18px}.uppy-Dashboard-inner{border:none!important;background:transparent!important}.uppy-Dashboard-innerWrap{border-radius:.5rem;overflow:hidden}.uppy-Dashboard-AddFiles{border:2px dashed hsl(var(--border))!important;border-radius:.5rem!important;background:hsl(var(--muted) / .3)!important;transition:all .2s ease}.uppy-Dashboard-AddFiles:hover{border-color:hsl(var(--primary))!important;background:hsl(var(--muted) / .5)!important}.uppy-Dashboard-AddFiles-title{color:hsl(var(--foreground))!important;font-weight:500!important}.uppy-Dashboard-AddFiles-info{color:hsl(var(--muted-foreground))!important}.uppy-Dashboard-browse{color:hsl(var(--primary))!important;font-weight:500!important}.uppy-Dashboard-browse:hover{text-decoration:underline!important}.uppy-Dashboard-files{background:transparent!important}.uppy-Dashboard-Item{border-bottom-color:hsl(var(--border))!important}.uppy-Dashboard-Item-name{color:hsl(var(--foreground))!important}.uppy-Dashboard-Item-status{color:hsl(var(--muted-foreground))!important}.uppy-StatusBar{background:hsl(var(--muted))!important;border-top:1px solid hsl(var(--border))!important}.uppy-StatusBar-progress{background:hsl(var(--primary))!important}.uppy-StatusBar-content{color:hsl(var(--foreground))!important}.uppy-StatusBar-actionBtn--upload{background:hsl(var(--primary))!important;color:hsl(var(--primary-foreground))!important;border-radius:.375rem!important;font-weight:500!important;padding:.5rem 1rem!important}.uppy-StatusBar-actionBtn--upload:hover{background:hsl(var(--primary) / .9)!important}.uppy-Dashboard-note{color:hsl(var(--muted-foreground))!important;font-size:.75rem!important}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles,.dark .uppy-Dashboard-AddFiles{background:hsl(var(--muted) / .2)!important}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles-title,.dark .uppy-Dashboard-AddFiles-title{color:hsl(var(--foreground))!important}[data-uppy-theme=dark] .uppy-StatusBar,.dark .uppy-StatusBar{background:hsl(var(--muted) / .5)!important}.uppy-Dashboard{font-family:inherit!important}.uppy-Dashboard-Item-preview{border-radius:.375rem!important;overflow:hidden}.uppy-Dashboard-Item-action--remove{color:hsl(var(--destructive))!important}.uppy-Dashboard-Item-action--remove:hover{opacity:.8}.uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progress{color:hsl(var(--success, 142 76% 36%))!important}.uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-progress{color:hsl(var(--destructive))!important}.uppy-Dashboard-files::-webkit-scrollbar{width:6px}.uppy-Dashboard-files::-webkit-scrollbar-track{background:transparent}.uppy-Dashboard-files::-webkit-scrollbar-thumb{background:hsl(var(--muted-foreground) / .3);border-radius:3px}.uppy-Dashboard-files::-webkit-scrollbar-thumb:hover{background:hsl(var(--muted-foreground) / .5)}@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(/assets/KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(/assets/KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(/assets/KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(/assets/KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(/assets/KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(/assets/KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.25"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:grab}.react-flow__node.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%} diff --git a/webui/dist/assets/index-ByB1XZQ6.js b/webui/dist/assets/index-ByB1XZQ6.js new file mode 100644 index 00000000..ad7e8ef1 --- /dev/null +++ b/webui/dist/assets/index-ByB1XZQ6.js @@ -0,0 +1,52 @@ +import{r as u,j as e,L as $c,e as fa,b as eb,f as tb,g as sb,h as ab,k as fs,l as lb,m as nb,O as pp,n as ib}from"./router-CWhjJi2n.js";import{a as rb,b as cb,g as ob}from"./react-vendor-Dtc2IqVY.js";import{I as db,c as ub,J as si,K as Lc,L as gu,M as mb,N as Ii,O as Pi,P as hb,n as ju}from"./utils-CCeOswSm.js";import{L as gp,T as jp,C as vp,R as xb,a as bp,V as fb,b as pb,S as yp,c as gb,d as Np,I as jb,e as wp,f as vb,g as _p,h as bb,i as yb,j as Nb,O as Sp,P as wb,k as Cp,l as kp,D as Tp,A as Ep,m as zp,n as _b,o as Sb,p as Ap,q as Cb,r as Mp,s as kb,t as Tb,u as Eb,v as zb,w as Ab,x as Dp,y as Op,F as Rp}from"./radix-extra-BM7iD6Dt.js";import{aj as Mb,ak as Db,al as Ob,am as Rb,an as Uc,ao as Bc,ap as Wi,aq as Lb,ar as vu,as as Hc,at as Ub,au as Bb,av as Hb}from"./charts-Dhri-zxi.js";import{S as qb,G as Lp,O as Up,o as Gb,C as Bp,p as Vb,T as Hp,D as qp,R as Fb,q as $b,H as Gp,I as Qb,J as Vp,K as Fp,L as Yb,M as $p,V as Xb,N as Qp,Q as Yp,U as Kb,X as Zb,Y as Xp,Z as Jb,_ as Ib,$ as Kp,a0 as Pb,a1 as Wb,a2 as Zp,a3 as ey,a4 as ty,a5 as sy,a6 as Jp,a7 as Ip,a8 as Pp,a9 as Wp,aa as eg,ab as tg,ac as ay}from"./radix-core-C3XKqQJw.js";import{R as ws,P as gr,C as ha,a as Oa,Z as ln,b as Kc,F as Da,c as ly,S as ai,A as ny,D as iy,d as Zc,e as Wn,M as cn,T as ry,X as on,f as cy,g as oy,I as Ra,h as ya,i as Na,j as Jc,E as or,k as Ws,l as sg,H as dy,m as at,n as rl,U as dr,o as ag,p as lg,L as Gf,K as ng,q as uy,r as my,s as Qc,t as Ss,u as hy,B as ar,v as Ic,w as Bu,x as xy,y as fy,z as zs,G as to,J as ti,N as Rl,O as ur,Q as jr,V as py,W as gy,Y as hs,_ as Hu,$ as nn,a0 as vr,a1 as dn,a2 as Ll,a3 as br,a4 as qu,a5 as jy,a6 as vy,a7 as by,a8 as rn,a9 as yy,aa as ig,ab as Eu,ac as mr,ad as Ny,ae as zu,af as Au,ag as rg,ah as Vf,ai as wy,aj as _y,ak as Sy,al as Ol,am as bu,an as Ff,ao as Cy,ap as yu,aq as ky,ar as Ty,as as Ey,at as zy,au as Ay,av as cg,aw as og,ax as dg,ay as My,az as $f,aA as Dy,aB as Oy,aC as Ry,aD as Ly}from"./icons-SnP_l694.js";import{S as Uy,p as By,j as Hy,a as qy,E as Qf,R as Gy,o as Vy}from"./codemirror-BHeANvwm.js";import{_ as Vs,c as Fy,g as ug,D as $y}from"./misc-DyBU7ISD.js";import{u as Qy,a as Yf,D as Yy,c as Xy,S as Ky,h as Zy,b as Jy,s as Iy,K as Py,P as Wy,d as eN,C as tN}from"./dnd-Dyi3CnuX.js";import{D as sN,U as aN}from"./uppy-BHC3OXBx.js";import{M as lN,r as nN,a as iN,b as rN}from"./markdown-A1ShuLvG.js";import{r as cN,H as Pc,P as Wc,u as oN,a as dN,R as uN,B as mN,b as hN,C as xN,M as fN,c as pN}from"./reactflow-B3n3_Vkw.js";(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const h of document.querySelectorAll('link[rel="modulepreload"]'))d(h);new MutationObserver(h=>{for(const x of h)if(x.type==="childList")for(const f of x.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&d(f)}).observe(document,{childList:!0,subtree:!0});function c(h){const x={};return h.integrity&&(x.integrity=h.integrity),h.referrerPolicy&&(x.referrerPolicy=h.referrerPolicy),h.crossOrigin==="use-credentials"?x.credentials="include":h.crossOrigin==="anonymous"?x.credentials="omit":x.credentials="same-origin",x}function d(h){if(h.ep)return;h.ep=!0;const x=c(h);fetch(h.href,x)}})();var Nu={exports:{}},er={},wu={exports:{}},_u={};var Xf;function gN(){return Xf||(Xf=1,(function(n){function r(A,X){var T=A.length;A.push(X);e:for(;0>>1,_=A[te];if(0>>1;teh(ae,T))xe<_&&0>h(ve,ae)?(A[te]=ve,A[xe]=T,te=xe):(A[te]=ae,A[oe]=T,te=oe);else if(xe<_&&0>h(ve,T))A[te]=ve,A[xe]=T,te=xe;else break e}}return X}function h(A,X){var T=A.sortIndex-X.sortIndex;return T!==0?T:A.id-X.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var x=performance;n.unstable_now=function(){return x.now()}}else{var f=Date,j=f.now();n.unstable_now=function(){return f.now()-j}}var p=[],N=[],v=1,C=null,S=3,w=!1,L=!1,F=!1,B=!1,O=typeof setTimeout=="function"?setTimeout:null,K=typeof clearTimeout=="function"?clearTimeout:null,H=typeof setImmediate<"u"?setImmediate:null;function z(A){for(var X=c(N);X!==null;){if(X.callback===null)d(N);else if(X.startTime<=A)d(N),X.sortIndex=X.expirationTime,r(p,X);else break;X=c(N)}}function V(A){if(F=!1,z(A),!L)if(c(p)!==null)L=!0,Y||(Y=!0,we());else{var X=c(N);X!==null&&be(V,X.startTime-A)}}var Y=!1,E=-1,R=5,ne=-1;function fe(){return B?!0:!(n.unstable_now()-neA&&fe());){var te=C.callback;if(typeof te=="function"){C.callback=null,S=C.priorityLevel;var _=te(C.expirationTime<=A);if(A=n.unstable_now(),typeof _=="function"){C.callback=_,z(A),X=!0;break t}C===c(p)&&d(p),z(A)}else d(p);C=c(p)}if(C!==null)X=!0;else{var me=c(N);me!==null&&be(V,me.startTime-A),X=!1}}break e}finally{C=null,S=T,w=!1}X=void 0}}finally{X?we():Y=!1}}}var we;if(typeof H=="function")we=function(){H(Ce)};else if(typeof MessageChannel<"u"){var pe=new MessageChannel,Ne=pe.port2;pe.port1.onmessage=Ce,we=function(){Ne.postMessage(null)}}else we=function(){O(Ce,0)};function be(A,X){E=O(function(){A(n.unstable_now())},X)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(A){A.callback=null},n.unstable_forceFrameRate=function(A){0>A||125te?(A.sortIndex=T,r(N,A),c(p)===null&&A===c(N)&&(F?(K(E),E=-1):F=!0,be(V,T-te))):(A.sortIndex=_,r(p,A),L||w||(L=!0,Y||(Y=!0,we()))),A},n.unstable_shouldYield=fe,n.unstable_wrapCallback=function(A){var X=S;return function(){var T=S;S=X;try{return A.apply(this,arguments)}finally{S=T}}}})(_u)),_u}var Kf;function jN(){return Kf||(Kf=1,wu.exports=gN()),wu.exports}var Zf;function vN(){if(Zf)return er;Zf=1;var n=jN(),r=rb(),c=cb();function d(t){var s="https://react.dev/errors/"+t;if(1_||(t.current=te[_],te[_]=null,_--)}function ae(t,s){_++,te[_]=t.current,t.current=s}var xe=me(null),ve=me(null),de=me(null),G=me(null);function W(t,s){switch(ae(de,s),ae(ve,t),ae(xe,null),s.nodeType){case 9:case 11:t=(t=s.documentElement)&&(t=t.namespaceURI)?df(t):0;break;default:if(t=s.tagName,s=s.namespaceURI)s=df(s),t=uf(s,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}oe(xe),ae(xe,t)}function U(){oe(xe),oe(ve),oe(de)}function ee(t){t.memoizedState!==null&&ae(G,t);var s=xe.current,a=uf(s,t.type);s!==a&&(ae(ve,t),ae(xe,a))}function Se(t){ve.current===t&&(oe(xe),oe(ve)),G.current===t&&(oe(G),Xi._currentValue=T)}var Me,tt;function Xe(t){if(Me===void 0)try{throw Error()}catch(a){var s=a.stack.trim().match(/\n( *(at )?)/);Me=s&&s[1]||"",tt=-1)":-1i||k[l]!==J[i]){var le=` +`+k[l].replace(" at new "," at ");return t.displayName&&le.includes("")&&(le=le.replace("",t.displayName)),le}while(1<=l&&0<=i);break}}}finally{Ut=!1,Error.prepareStackTrace=a}return(a=t?t.displayName||t.name:"")?Xe(a):""}function re(t,s){switch(t.tag){case 26:case 27:case 5:return Xe(t.type);case 16:return Xe("Lazy");case 13:return t.child!==s&&s!==null?Xe("Suspense Fallback"):Xe("Suspense");case 19:return Xe("SuspenseList");case 0:case 15:return Bt(t.type,!1);case 11:return Bt(t.type.render,!1);case 1:return Bt(t.type,!0);case 31:return Xe("Activity");default:return""}}function ke(t){try{var s="",a=null;do s+=re(t,a),a=t,t=t.return;while(t);return s}catch(l){return` +Error generating stack: `+l.message+` +`+l.stack}}var Pe=Object.prototype.hasOwnProperty,Fe=n.unstable_scheduleCallback,ts=n.unstable_cancelCallback,As=n.unstable_shouldYield,js=n.unstable_requestPaint,Ke=n.unstable_now,D=n.unstable_getCurrentPriorityLevel,De=n.unstable_ImmediatePriority,ze=n.unstable_UserBlockingPriority,Ve=n.unstable_NormalPriority,At=n.unstable_LowPriority,We=n.unstable_IdlePriority,ss=n.log,gt=n.unstable_setDisableYieldValue,_e=null,je=null;function yt(t){if(typeof ss=="function"&>(t),je&&typeof je.setStrictMode=="function")try{je.setStrictMode(_e,t)}catch{}}var Ht=Math.clz32?Math.clz32:Kt,pa=Math.log,Ts=Math.LN2;function Kt(t){return t>>>=0,t===0?32:31-(pa(t)/Ts|0)|0}var Ms=256,Ds=262144,Ha=4194304;function Fs(t){var s=t&42;if(s!==0)return s;switch(t&-t){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:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&261888;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function qa(t,s,a){var l=t.pendingLanes;if(l===0)return 0;var i=0,o=t.suspendedLanes,m=t.pingedLanes;t=t.warmLanes;var g=l&134217727;return g!==0?(l=g&~o,l!==0?i=Fs(l):(m&=g,m!==0?i=Fs(m):a||(a=g&~t,a!==0&&(i=Fs(a))))):(g=l&~o,g!==0?i=Fs(g):m!==0?i=Fs(m):a||(a=l&~t,a!==0&&(i=Fs(a)))),i===0?0:s!==0&&s!==i&&(s&o)===0&&(o=i&-i,a=s&-s,o>=a||o===32&&(a&4194048)!==0)?s:i}function Sa(t,s){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&s)===0}function P(t,s){switch(t){case 1:case 2:case 4:case 8:case 64:return s+250;case 16:case 32: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 s+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 ye(){var t=Ha;return Ha<<=1,(Ha&62914560)===0&&(Ha=4194304),t}function Re(t){for(var s=[],a=0;31>a;a++)s.push(t);return s}function us(t,s){t.pendingLanes|=s,s!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function $s(t,s,a,l,i,o){var m=t.pendingLanes;t.pendingLanes=a,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=a,t.entangledLanes&=a,t.errorRecoveryDisabledLanes&=a,t.shellSuspendCounter=0;var g=t.entanglements,k=t.expirationTimes,J=t.hiddenUpdates;for(a=m&~a;0"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var Kg=/[\n"\\]/g;function aa(t){return t.replace(Kg,function(s){return"\\"+s.charCodeAt(0).toString(16)+" "})}function uo(t,s,a,l,i,o,m,g){t.name="",m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"?t.type=m:t.removeAttribute("type"),s!=null?m==="number"?(s===0&&t.value===""||t.value!=s)&&(t.value=""+sa(s)):t.value!==""+sa(s)&&(t.value=""+sa(s)):m!=="submit"&&m!=="reset"||t.removeAttribute("value"),s!=null?mo(t,m,sa(s)):a!=null?mo(t,m,sa(a)):l!=null&&t.removeAttribute("value"),i==null&&o!=null&&(t.defaultChecked=!!o),i!=null&&(t.checked=i&&typeof i!="function"&&typeof i!="symbol"),g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"?t.name=""+sa(g):t.removeAttribute("name")}function am(t,s,a,l,i,o,m,g){if(o!=null&&typeof o!="function"&&typeof o!="symbol"&&typeof o!="boolean"&&(t.type=o),s!=null||a!=null){if(!(o!=="submit"&&o!=="reset"||s!=null)){oo(t);return}a=a!=null?""+sa(a):"",s=s!=null?""+sa(s):a,g||s===t.value||(t.value=s),t.defaultValue=s}l=l??i,l=typeof l!="function"&&typeof l!="symbol"&&!!l,t.checked=g?t.checked:!!l,t.defaultChecked=!!l,m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"&&(t.name=m),oo(t)}function mo(t,s,a){s==="number"&&Cr(t.ownerDocument)===t||t.defaultValue===""+a||(t.defaultValue=""+a)}function gn(t,s,a,l){if(t=t.options,s){s={};for(var i=0;i"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),go=!1;if(Fa)try{var ui={};Object.defineProperty(ui,"passive",{get:function(){go=!0}}),window.addEventListener("test",ui,ui),window.removeEventListener("test",ui,ui)}catch{go=!1}var ul=null,jo=null,Tr=null;function dm(){if(Tr)return Tr;var t,s=jo,a=s.length,l,i="value"in ul?ul.value:ul.textContent,o=i.length;for(t=0;t=xi),pm=" ",gm=!1;function jm(t,s){switch(t){case"keyup":return Nj.indexOf(s.keyCode)!==-1;case"keydown":return s.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function vm(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var yn=!1;function _j(t,s){switch(t){case"compositionend":return vm(s);case"keypress":return s.which!==32?null:(gm=!0,pm);case"textInput":return t=s.data,t===pm&&gm?null:t;default:return null}}function Sj(t,s){if(yn)return t==="compositionend"||!wo&&jm(t,s)?(t=dm(),Tr=jo=ul=null,yn=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(s.ctrlKey||s.altKey||s.metaKey)||s.ctrlKey&&s.altKey){if(s.char&&1=s)return{node:a,offset:s-t};t=l}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=km(a)}}function Em(t,s){return t&&s?t===s?!0:t&&t.nodeType===3?!1:s&&s.nodeType===3?Em(t,s.parentNode):"contains"in t?t.contains(s):t.compareDocumentPosition?!!(t.compareDocumentPosition(s)&16):!1:!1}function zm(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var s=Cr(t.document);s instanceof t.HTMLIFrameElement;){try{var a=typeof s.contentWindow.location.href=="string"}catch{a=!1}if(a)t=s.contentWindow;else break;s=Cr(t.document)}return s}function Co(t){var s=t&&t.nodeName&&t.nodeName.toLowerCase();return s&&(s==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||s==="textarea"||t.contentEditable==="true")}var Dj=Fa&&"documentMode"in document&&11>=document.documentMode,Nn=null,ko=null,ji=null,To=!1;function Am(t,s,a){var l=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;To||Nn==null||Nn!==Cr(l)||(l=Nn,"selectionStart"in l&&Co(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),ji&&gi(ji,l)||(ji=l,l=yc(ko,"onSelect"),0>=m,i-=m,ka=1<<32-Ht(s)+i|a<et?(ot=Ae,Ae=null):ot=Ae.sibling;var St=I(q,Ae,Z[et],ue);if(St===null){Ae===null&&(Ae=ot);break}t&&Ae&&St.alternate===null&&s(q,Ae),M=o(St,M,et),_t===null?Oe=St:_t.sibling=St,_t=St,Ae=ot}if(et===Z.length)return a(q,Ae),vt&&Qa(q,et),Oe;if(Ae===null){for(;etet?(ot=Ae,Ae=null):ot=Ae.sibling;var Dl=I(q,Ae,St.value,ue);if(Dl===null){Ae===null&&(Ae=ot);break}t&&Ae&&Dl.alternate===null&&s(q,Ae),M=o(Dl,M,et),_t===null?Oe=Dl:_t.sibling=Dl,_t=Dl,Ae=ot}if(St.done)return a(q,Ae),vt&&Qa(q,et),Oe;if(Ae===null){for(;!St.done;et++,St=Z.next())St=he(q,St.value,ue),St!==null&&(M=o(St,M,et),_t===null?Oe=St:_t.sibling=St,_t=St);return vt&&Qa(q,et),Oe}for(Ae=l(Ae);!St.done;et++,St=Z.next())St=se(Ae,q,et,St.value,ue),St!==null&&(t&&St.alternate!==null&&Ae.delete(St.key===null?et:St.key),M=o(St,M,et),_t===null?Oe=St:_t.sibling=St,_t=St);return t&&Ae.forEach(function(Wv){return s(q,Wv)}),vt&&Qa(q,et),Oe}function Ot(q,M,Z,ue){if(typeof Z=="object"&&Z!==null&&Z.type===F&&Z.key===null&&(Z=Z.props.children),typeof Z=="object"&&Z!==null){switch(Z.$$typeof){case w:e:{for(var Oe=Z.key;M!==null;){if(M.key===Oe){if(Oe=Z.type,Oe===F){if(M.tag===7){a(q,M.sibling),ue=i(M,Z.props.children),ue.return=q,q=ue;break e}}else if(M.elementType===Oe||typeof Oe=="object"&&Oe!==null&&Oe.$$typeof===R&&Jl(Oe)===M.type){a(q,M.sibling),ue=i(M,Z.props),_i(ue,Z),ue.return=q,q=ue;break e}a(q,M);break}else s(q,M);M=M.sibling}Z.type===F?(ue=Ql(Z.props.children,q.mode,ue,Z.key),ue.return=q,q=ue):(ue=Br(Z.type,Z.key,Z.props,null,q.mode,ue),_i(ue,Z),ue.return=q,q=ue)}return m(q);case L:e:{for(Oe=Z.key;M!==null;){if(M.key===Oe)if(M.tag===4&&M.stateNode.containerInfo===Z.containerInfo&&M.stateNode.implementation===Z.implementation){a(q,M.sibling),ue=i(M,Z.children||[]),ue.return=q,q=ue;break e}else{a(q,M);break}else s(q,M);M=M.sibling}ue=Ro(Z,q.mode,ue),ue.return=q,q=ue}return m(q);case R:return Z=Jl(Z),Ot(q,M,Z,ue)}if(be(Z))return Ee(q,M,Z,ue);if(we(Z)){if(Oe=we(Z),typeof Oe!="function")throw Error(d(150));return Z=Oe.call(Z),Ue(q,M,Z,ue)}if(typeof Z.then=="function")return Ot(q,M,Qr(Z),ue);if(Z.$$typeof===H)return Ot(q,M,Gr(q,Z),ue);Yr(q,Z)}return typeof Z=="string"&&Z!==""||typeof Z=="number"||typeof Z=="bigint"?(Z=""+Z,M!==null&&M.tag===6?(a(q,M.sibling),ue=i(M,Z),ue.return=q,q=ue):(a(q,M),ue=Oo(Z,q.mode,ue),ue.return=q,q=ue),m(q)):a(q,M)}return function(q,M,Z,ue){try{wi=0;var Oe=Ot(q,M,Z,ue);return Dn=null,Oe}catch(Ae){if(Ae===Mn||Ae===Fr)throw Ae;var _t=Ys(29,Ae,null,q.mode);return _t.lanes=ue,_t.return=q,_t}finally{}}}var Pl=eh(!0),th=eh(!1),pl=!1;function Xo(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Ko(t,s){t=t.updateQueue,s.updateQueue===t&&(s.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function gl(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function jl(t,s,a){var l=t.updateQueue;if(l===null)return null;if(l=l.shared,(Ct&2)!==0){var i=l.pending;return i===null?s.next=s:(s.next=i.next,i.next=s),l.pending=s,s=Ur(t),Bm(t,null,a),s}return Lr(t,l,s,a),Ur(t)}function Si(t,s,a){if(s=s.updateQueue,s!==null&&(s=s.shared,(a&4194048)!==0)){var l=s.lanes;l&=t.pendingLanes,a|=l,s.lanes=a,dl(t,a)}}function Zo(t,s){var a=t.updateQueue,l=t.alternate;if(l!==null&&(l=l.updateQueue,a===l)){var i=null,o=null;if(a=a.firstBaseUpdate,a!==null){do{var m={lane:a.lane,tag:a.tag,payload:a.payload,callback:null,next:null};o===null?i=o=m:o=o.next=m,a=a.next}while(a!==null);o===null?i=o=s:o=o.next=s}else i=o=s;a={baseState:l.baseState,firstBaseUpdate:i,lastBaseUpdate:o,shared:l.shared,callbacks:l.callbacks},t.updateQueue=a;return}t=a.lastBaseUpdate,t===null?a.firstBaseUpdate=s:t.next=s,a.lastBaseUpdate=s}var Jo=!1;function Ci(){if(Jo){var t=An;if(t!==null)throw t}}function ki(t,s,a,l){Jo=!1;var i=t.updateQueue;pl=!1;var o=i.firstBaseUpdate,m=i.lastBaseUpdate,g=i.shared.pending;if(g!==null){i.shared.pending=null;var k=g,J=k.next;k.next=null,m===null?o=J:m.next=J,m=k;var le=t.alternate;le!==null&&(le=le.updateQueue,g=le.lastBaseUpdate,g!==m&&(g===null?le.firstBaseUpdate=J:g.next=J,le.lastBaseUpdate=k))}if(o!==null){var he=i.baseState;m=0,le=J=k=null,g=o;do{var I=g.lane&-536870913,se=I!==g.lane;if(se?(ct&I)===I:(l&I)===I){I!==0&&I===zn&&(Jo=!0),le!==null&&(le=le.next={lane:0,tag:g.tag,payload:g.payload,callback:null,next:null});e:{var Ee=t,Ue=g;I=s;var Ot=a;switch(Ue.tag){case 1:if(Ee=Ue.payload,typeof Ee=="function"){he=Ee.call(Ot,he,I);break e}he=Ee;break e;case 3:Ee.flags=Ee.flags&-65537|128;case 0:if(Ee=Ue.payload,I=typeof Ee=="function"?Ee.call(Ot,he,I):Ee,I==null)break e;he=C({},he,I);break e;case 2:pl=!0}}I=g.callback,I!==null&&(t.flags|=64,se&&(t.flags|=8192),se=i.callbacks,se===null?i.callbacks=[I]:se.push(I))}else se={lane:I,tag:g.tag,payload:g.payload,callback:g.callback,next:null},le===null?(J=le=se,k=he):le=le.next=se,m|=I;if(g=g.next,g===null){if(g=i.shared.pending,g===null)break;se=g,g=se.next,se.next=null,i.lastBaseUpdate=se,i.shared.pending=null}}while(!0);le===null&&(k=he),i.baseState=k,i.firstBaseUpdate=J,i.lastBaseUpdate=le,o===null&&(i.shared.lanes=0),wl|=m,t.lanes=m,t.memoizedState=he}}function sh(t,s){if(typeof t!="function")throw Error(d(191,t));t.call(s)}function ah(t,s){var a=t.callbacks;if(a!==null)for(t.callbacks=null,t=0;to?o:8;var m=A.T,g={};A.T=g,fd(t,!1,s,a);try{var k=i(),J=A.S;if(J!==null&&J(g,k),k!==null&&typeof k=="object"&&typeof k.then=="function"){var le=Vj(k,l);zi(t,s,le,Is(t))}else zi(t,s,l,Is(t))}catch(he){zi(t,s,{then:function(){},status:"rejected",reason:he},Is())}finally{X.p=o,m!==null&&g.types!==null&&(m.types=g.types),A.T=m}}function Kj(){}function hd(t,s,a,l){if(t.tag!==5)throw Error(d(476));var i=Rh(t).queue;Oh(t,i,s,T,a===null?Kj:function(){return Lh(t),a(l)})}function Rh(t){var s=t.memoizedState;if(s!==null)return s;s={memoizedState:T,baseState:T,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Za,lastRenderedState:T},next:null};var a={};return s.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Za,lastRenderedState:a},next:null},t.memoizedState=s,t=t.alternate,t!==null&&(t.memoizedState=s),s}function Lh(t){var s=Rh(t);s.next===null&&(s=t.alternate.memoizedState),zi(t,s.next.queue,{},Is())}function xd(){return bs(Xi)}function Uh(){return ls().memoizedState}function Bh(){return ls().memoizedState}function Zj(t){for(var s=t.return;s!==null;){switch(s.tag){case 24:case 3:var a=Is();t=gl(a);var l=jl(s,t,a);l!==null&&(qs(l,s,a),Si(l,s,a)),s={cache:Fo()},t.payload=s;return}s=s.return}}function Jj(t,s,a){var l=Is();a={lane:l,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},sc(t)?qh(s,a):(a=Mo(t,s,a,l),a!==null&&(qs(a,t,l),Gh(a,s,l)))}function Hh(t,s,a){var l=Is();zi(t,s,a,l)}function zi(t,s,a,l){var i={lane:l,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(sc(t))qh(s,i);else{var o=t.alternate;if(t.lanes===0&&(o===null||o.lanes===0)&&(o=s.lastRenderedReducer,o!==null))try{var m=s.lastRenderedState,g=o(m,a);if(i.hasEagerState=!0,i.eagerState=g,Qs(g,m))return Lr(t,s,i,0),Lt===null&&Rr(),!1}catch{}finally{}if(a=Mo(t,s,i,l),a!==null)return qs(a,t,l),Gh(a,s,l),!0}return!1}function fd(t,s,a,l){if(l={lane:2,revertLane:Xd(),gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},sc(t)){if(s)throw Error(d(479))}else s=Mo(t,a,l,2),s!==null&&qs(s,t,2)}function sc(t){var s=t.alternate;return t===Ie||s!==null&&s===Ie}function qh(t,s){Rn=Zr=!0;var a=t.pending;a===null?s.next=s:(s.next=a.next,a.next=s),t.pending=s}function Gh(t,s,a){if((a&4194048)!==0){var l=s.lanes;l&=t.pendingLanes,a|=l,s.lanes=a,dl(t,a)}}var Ai={readContext:bs,use:Pr,useCallback:It,useContext:It,useEffect:It,useImperativeHandle:It,useLayoutEffect:It,useInsertionEffect:It,useMemo:It,useReducer:It,useRef:It,useState:It,useDebugValue:It,useDeferredValue:It,useTransition:It,useSyncExternalStore:It,useId:It,useHostTransitionStatus:It,useFormState:It,useActionState:It,useOptimistic:It,useMemoCache:It,useCacheRefresh:It};Ai.useEffectEvent=It;var Vh={readContext:bs,use:Pr,useCallback:function(t,s){return Es().memoizedState=[t,s===void 0?null:s],t},useContext:bs,useEffect:Sh,useImperativeHandle:function(t,s,a){a=a!=null?a.concat([t]):null,ec(4194308,4,Eh.bind(null,s,t),a)},useLayoutEffect:function(t,s){return ec(4194308,4,t,s)},useInsertionEffect:function(t,s){ec(4,2,t,s)},useMemo:function(t,s){var a=Es();s=s===void 0?null:s;var l=t();if(Wl){yt(!0);try{t()}finally{yt(!1)}}return a.memoizedState=[l,s],l},useReducer:function(t,s,a){var l=Es();if(a!==void 0){var i=a(s);if(Wl){yt(!0);try{a(s)}finally{yt(!1)}}}else i=s;return l.memoizedState=l.baseState=i,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:i},l.queue=t,t=t.dispatch=Jj.bind(null,Ie,t),[l.memoizedState,t]},useRef:function(t){var s=Es();return t={current:t},s.memoizedState=t},useState:function(t){t=cd(t);var s=t.queue,a=Hh.bind(null,Ie,s);return s.dispatch=a,[t.memoizedState,a]},useDebugValue:ud,useDeferredValue:function(t,s){var a=Es();return md(a,t,s)},useTransition:function(){var t=cd(!1);return t=Oh.bind(null,Ie,t.queue,!0,!1),Es().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,s,a){var l=Ie,i=Es();if(vt){if(a===void 0)throw Error(d(407));a=a()}else{if(a=s(),Lt===null)throw Error(d(349));(ct&127)!==0||oh(l,s,a)}i.memoizedState=a;var o={value:a,getSnapshot:s};return i.queue=o,Sh(uh.bind(null,l,o,t),[t]),l.flags|=2048,Un(9,{destroy:void 0},dh.bind(null,l,o,a,s),null),a},useId:function(){var t=Es(),s=Lt.identifierPrefix;if(vt){var a=Ta,l=ka;a=(l&~(1<<32-Ht(l)-1)).toString(32)+a,s="_"+s+"R_"+a,a=Jr++,0<\/script>",o=o.removeChild(o.firstChild);break;case"select":o=typeof l.is=="string"?m.createElement("select",{is:l.is}):m.createElement("select"),l.multiple?o.multiple=!0:l.size&&(o.size=l.size);break;default:o=typeof l.is=="string"?m.createElement(i,{is:l.is}):m.createElement(i)}}o[$e]=s,o[jt]=l;e:for(m=s.child;m!==null;){if(m.tag===5||m.tag===6)o.appendChild(m.stateNode);else if(m.tag!==4&&m.tag!==27&&m.child!==null){m.child.return=m,m=m.child;continue}if(m===s)break e;for(;m.sibling===null;){if(m.return===null||m.return===s)break e;m=m.return}m.sibling.return=m.return,m=m.sibling}s.stateNode=o;e:switch(Ns(o,i,l),i){case"button":case"input":case"select":case"textarea":l=!!l.autoFocus;break e;case"img":l=!0;break e;default:l=!1}l&&Ia(s)}}return Gt(s),Ed(s,s.type,t===null?null:t.memoizedProps,s.pendingProps,a),null;case 6:if(t&&s.stateNode!=null)t.memoizedProps!==l&&Ia(s);else{if(typeof l!="string"&&s.stateNode===null)throw Error(d(166));if(t=de.current,Tn(s)){if(t=s.stateNode,a=s.memoizedProps,l=null,i=vs,i!==null)switch(i.tag){case 27:case 5:l=i.memoizedProps}t[$e]=s,t=!!(t.nodeValue===a||l!==null&&l.suppressHydrationWarning===!0||cf(t.nodeValue,a)),t||xl(s,!0)}else t=Nc(t).createTextNode(l),t[$e]=s,s.stateNode=t}return Gt(s),null;case 31:if(a=s.memoizedState,t===null||t.memoizedState!==null){if(l=Tn(s),a!==null){if(t===null){if(!l)throw Error(d(318));if(t=s.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(d(557));t[$e]=s}else Yl(),(s.flags&128)===0&&(s.memoizedState=null),s.flags|=4;Gt(s),t=!1}else a=Ho(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=a),t=!0;if(!t)return s.flags&256?(Ks(s),s):(Ks(s),null);if((s.flags&128)!==0)throw Error(d(558))}return Gt(s),null;case 13:if(l=s.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(i=Tn(s),l!==null&&l.dehydrated!==null){if(t===null){if(!i)throw Error(d(318));if(i=s.memoizedState,i=i!==null?i.dehydrated:null,!i)throw Error(d(317));i[$e]=s}else Yl(),(s.flags&128)===0&&(s.memoizedState=null),s.flags|=4;Gt(s),i=!1}else i=Ho(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=i),i=!0;if(!i)return s.flags&256?(Ks(s),s):(Ks(s),null)}return Ks(s),(s.flags&128)!==0?(s.lanes=a,s):(a=l!==null,t=t!==null&&t.memoizedState!==null,a&&(l=s.child,i=null,l.alternate!==null&&l.alternate.memoizedState!==null&&l.alternate.memoizedState.cachePool!==null&&(i=l.alternate.memoizedState.cachePool.pool),o=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(o=l.memoizedState.cachePool.pool),o!==i&&(l.flags|=2048)),a!==t&&a&&(s.child.flags|=8192),rc(s,s.updateQueue),Gt(s),null);case 4:return U(),t===null&&Id(s.stateNode.containerInfo),Gt(s),null;case 10:return Xa(s.type),Gt(s),null;case 19:if(oe(as),l=s.memoizedState,l===null)return Gt(s),null;if(i=(s.flags&128)!==0,o=l.rendering,o===null)if(i)Di(l,!1);else{if(Pt!==0||t!==null&&(t.flags&128)!==0)for(t=s.child;t!==null;){if(o=Kr(t),o!==null){for(s.flags|=128,Di(l,!1),t=o.updateQueue,s.updateQueue=t,rc(s,t),s.subtreeFlags=0,t=a,a=s.child;a!==null;)Hm(a,t),a=a.sibling;return ae(as,as.current&1|2),vt&&Qa(s,l.treeForkCount),s.child}t=t.sibling}l.tail!==null&&Ke()>mc&&(s.flags|=128,i=!0,Di(l,!1),s.lanes=4194304)}else{if(!i)if(t=Kr(o),t!==null){if(s.flags|=128,i=!0,t=t.updateQueue,s.updateQueue=t,rc(s,t),Di(l,!0),l.tail===null&&l.tailMode==="hidden"&&!o.alternate&&!vt)return Gt(s),null}else 2*Ke()-l.renderingStartTime>mc&&a!==536870912&&(s.flags|=128,i=!0,Di(l,!1),s.lanes=4194304);l.isBackwards?(o.sibling=s.child,s.child=o):(t=l.last,t!==null?t.sibling=o:s.child=o,l.last=o)}return l.tail!==null?(t=l.tail,l.rendering=t,l.tail=t.sibling,l.renderingStartTime=Ke(),t.sibling=null,a=as.current,ae(as,i?a&1|2:a&1),vt&&Qa(s,l.treeForkCount),t):(Gt(s),null);case 22:case 23:return Ks(s),Po(),l=s.memoizedState!==null,t!==null?t.memoizedState!==null!==l&&(s.flags|=8192):l&&(s.flags|=8192),l?(a&536870912)!==0&&(s.flags&128)===0&&(Gt(s),s.subtreeFlags&6&&(s.flags|=8192)):Gt(s),a=s.updateQueue,a!==null&&rc(s,a.retryQueue),a=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),l=null,s.memoizedState!==null&&s.memoizedState.cachePool!==null&&(l=s.memoizedState.cachePool.pool),l!==a&&(s.flags|=2048),t!==null&&oe(Zl),null;case 24:return a=null,t!==null&&(a=t.memoizedState.cache),s.memoizedState.cache!==a&&(s.flags|=2048),Xa(is),Gt(s),null;case 25:return null;case 30:return null}throw Error(d(156,s.tag))}function tv(t,s){switch(Uo(s),s.tag){case 1:return t=s.flags,t&65536?(s.flags=t&-65537|128,s):null;case 3:return Xa(is),U(),t=s.flags,(t&65536)!==0&&(t&128)===0?(s.flags=t&-65537|128,s):null;case 26:case 27:case 5:return Se(s),null;case 31:if(s.memoizedState!==null){if(Ks(s),s.alternate===null)throw Error(d(340));Yl()}return t=s.flags,t&65536?(s.flags=t&-65537|128,s):null;case 13:if(Ks(s),t=s.memoizedState,t!==null&&t.dehydrated!==null){if(s.alternate===null)throw Error(d(340));Yl()}return t=s.flags,t&65536?(s.flags=t&-65537|128,s):null;case 19:return oe(as),null;case 4:return U(),null;case 10:return Xa(s.type),null;case 22:case 23:return Ks(s),Po(),t!==null&&oe(Zl),t=s.flags,t&65536?(s.flags=t&-65537|128,s):null;case 24:return Xa(is),null;case 25:return null;default:return null}}function mx(t,s){switch(Uo(s),s.tag){case 3:Xa(is),U();break;case 26:case 27:case 5:Se(s);break;case 4:U();break;case 31:s.memoizedState!==null&&Ks(s);break;case 13:Ks(s);break;case 19:oe(as);break;case 10:Xa(s.type);break;case 22:case 23:Ks(s),Po(),t!==null&&oe(Zl);break;case 24:Xa(is)}}function Oi(t,s){try{var a=s.updateQueue,l=a!==null?a.lastEffect:null;if(l!==null){var i=l.next;a=i;do{if((a.tag&t)===t){l=void 0;var o=a.create,m=a.inst;l=o(),m.destroy=l}a=a.next}while(a!==i)}}catch(g){Et(s,s.return,g)}}function yl(t,s,a){try{var l=s.updateQueue,i=l!==null?l.lastEffect:null;if(i!==null){var o=i.next;l=o;do{if((l.tag&t)===t){var m=l.inst,g=m.destroy;if(g!==void 0){m.destroy=void 0,i=s;var k=a,J=g;try{J()}catch(le){Et(i,k,le)}}}l=l.next}while(l!==o)}}catch(le){Et(s,s.return,le)}}function hx(t){var s=t.updateQueue;if(s!==null){var a=t.stateNode;try{ah(s,a)}catch(l){Et(t,t.return,l)}}}function xx(t,s,a){a.props=en(t.type,t.memoizedProps),a.state=t.memoizedState;try{a.componentWillUnmount()}catch(l){Et(t,s,l)}}function Ri(t,s){try{var a=t.ref;if(a!==null){switch(t.tag){case 26:case 27:case 5:var l=t.stateNode;break;case 30:l=t.stateNode;break;default:l=t.stateNode}typeof a=="function"?t.refCleanup=a(l):a.current=l}}catch(i){Et(t,s,i)}}function Ea(t,s){var a=t.ref,l=t.refCleanup;if(a!==null)if(typeof l=="function")try{l()}catch(i){Et(t,s,i)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(i){Et(t,s,i)}else a.current=null}function fx(t){var s=t.type,a=t.memoizedProps,l=t.stateNode;try{e:switch(s){case"button":case"input":case"select":case"textarea":a.autoFocus&&l.focus();break e;case"img":a.src?l.src=a.src:a.srcSet&&(l.srcset=a.srcSet)}}catch(i){Et(t,t.return,i)}}function zd(t,s,a){try{var l=t.stateNode;wv(l,t.type,a,s),l[jt]=s}catch(i){Et(t,t.return,i)}}function px(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&Tl(t.type)||t.tag===4}function Ad(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||px(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.tag===27&&Tl(t.type)||t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function Md(t,s,a){var l=t.tag;if(l===5||l===6)t=t.stateNode,s?(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a).insertBefore(t,s):(s=a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,s.appendChild(t),a=a._reactRootContainer,a!=null||s.onclick!==null||(s.onclick=Va));else if(l!==4&&(l===27&&Tl(t.type)&&(a=t.stateNode,s=null),t=t.child,t!==null))for(Md(t,s,a),t=t.sibling;t!==null;)Md(t,s,a),t=t.sibling}function cc(t,s,a){var l=t.tag;if(l===5||l===6)t=t.stateNode,s?a.insertBefore(t,s):a.appendChild(t);else if(l!==4&&(l===27&&Tl(t.type)&&(a=t.stateNode),t=t.child,t!==null))for(cc(t,s,a),t=t.sibling;t!==null;)cc(t,s,a),t=t.sibling}function gx(t){var s=t.stateNode,a=t.memoizedProps;try{for(var l=t.type,i=s.attributes;i.length;)s.removeAttributeNode(i[0]);Ns(s,l,a),s[$e]=t,s[jt]=a}catch(o){Et(t,t.return,o)}}var Pa=!1,os=!1,Dd=!1,jx=typeof WeakSet=="function"?WeakSet:Set,gs=null;function sv(t,s){if(t=t.containerInfo,eu=Ec,t=zm(t),Co(t)){if("selectionStart"in t)var a={start:t.selectionStart,end:t.selectionEnd};else e:{a=(a=t.ownerDocument)&&a.defaultView||window;var l=a.getSelection&&a.getSelection();if(l&&l.rangeCount!==0){a=l.anchorNode;var i=l.anchorOffset,o=l.focusNode;l=l.focusOffset;try{a.nodeType,o.nodeType}catch{a=null;break e}var m=0,g=-1,k=-1,J=0,le=0,he=t,I=null;t:for(;;){for(var se;he!==a||i!==0&&he.nodeType!==3||(g=m+i),he!==o||l!==0&&he.nodeType!==3||(k=m+l),he.nodeType===3&&(m+=he.nodeValue.length),(se=he.firstChild)!==null;)I=he,he=se;for(;;){if(he===t)break t;if(I===a&&++J===i&&(g=m),I===o&&++le===l&&(k=m),(se=he.nextSibling)!==null)break;he=I,I=he.parentNode}he=se}a=g===-1||k===-1?null:{start:g,end:k}}else a=null}a=a||{start:0,end:0}}else a=null;for(tu={focusedElem:t,selectionRange:a},Ec=!1,gs=s;gs!==null;)if(s=gs,t=s.child,(s.subtreeFlags&1028)!==0&&t!==null)t.return=s,gs=t;else for(;gs!==null;){switch(s=gs,o=s.alternate,t=s.flags,s.tag){case 0:if((t&4)!==0&&(t=s.updateQueue,t=t!==null?t.events:null,t!==null))for(a=0;a title"))),Ns(o,l,a),o[$e]=t,ps(o),l=o;break e;case"link":var m=Sf("link","href",i).get(l+(a.href||""));if(m){for(var g=0;gOt&&(m=Ot,Ot=Ue,Ue=m);var q=Tm(g,Ue),M=Tm(g,Ot);if(q&&M&&(se.rangeCount!==1||se.anchorNode!==q.node||se.anchorOffset!==q.offset||se.focusNode!==M.node||se.focusOffset!==M.offset)){var Z=he.createRange();Z.setStart(q.node,q.offset),se.removeAllRanges(),Ue>Ot?(se.addRange(Z),se.extend(M.node,M.offset)):(Z.setEnd(M.node,M.offset),se.addRange(Z))}}}}for(he=[],se=g;se=se.parentNode;)se.nodeType===1&&he.push({element:se,left:se.scrollLeft,top:se.scrollTop});for(typeof g.focus=="function"&&g.focus(),g=0;ga?32:a,A.T=null,a=qd,qd=null;var o=Sl,m=al;if(ms=0,Vn=Sl=null,al=0,(Ct&6)!==0)throw Error(d(331));var g=Ct;if(Ct|=4,Ex(o.current),Cx(o,o.current,m,a),Ct=g,Gi(0,!1),je&&typeof je.onPostCommitFiberRoot=="function")try{je.onPostCommitFiberRoot(_e,o)}catch{}return!0}finally{X.p=i,A.T=l,Xx(t,s)}}function Zx(t,s,a){s=na(a,s),s=vd(t.stateNode,s,2),t=jl(t,s,2),t!==null&&(us(t,2),za(t))}function Et(t,s,a){if(t.tag===3)Zx(t,t,a);else for(;s!==null;){if(s.tag===3){Zx(s,t,a);break}else if(s.tag===1){var l=s.stateNode;if(typeof s.type.getDerivedStateFromError=="function"||typeof l.componentDidCatch=="function"&&(_l===null||!_l.has(l))){t=na(a,t),a=Jh(2),l=jl(s,a,2),l!==null&&(Ih(a,l,s,t),us(l,2),za(l));break}}s=s.return}}function $d(t,s,a){var l=t.pingCache;if(l===null){l=t.pingCache=new nv;var i=new Set;l.set(s,i)}else i=l.get(s),i===void 0&&(i=new Set,l.set(s,i));i.has(a)||(Ld=!0,i.add(a),t=dv.bind(null,t,s,a),s.then(t,t))}function dv(t,s,a){var l=t.pingCache;l!==null&&l.delete(s),t.pingedLanes|=t.suspendedLanes&a,t.warmLanes&=~a,Lt===t&&(ct&a)===a&&(Pt===4||Pt===3&&(ct&62914560)===ct&&300>Ke()-uc?(Ct&2)===0&&Fn(t,0):Ud|=a,Gn===ct&&(Gn=0)),za(t)}function Jx(t,s){s===0&&(s=ye()),t=$l(t,s),t!==null&&(us(t,s),za(t))}function uv(t){var s=t.memoizedState,a=0;s!==null&&(a=s.retryLane),Jx(t,a)}function mv(t,s){var a=0;switch(t.tag){case 31:case 13:var l=t.stateNode,i=t.memoizedState;i!==null&&(a=i.retryLane);break;case 19:l=t.stateNode;break;case 22:l=t.stateNode._retryCache;break;default:throw Error(d(314))}l!==null&&l.delete(s),Jx(t,a)}function hv(t,s){return Fe(t,s)}var jc=null,Qn=null,Qd=!1,vc=!1,Yd=!1,kl=0;function za(t){t!==Qn&&t.next===null&&(Qn===null?jc=Qn=t:Qn=Qn.next=t),vc=!0,Qd||(Qd=!0,fv())}function Gi(t,s){if(!Yd&&vc){Yd=!0;do for(var a=!1,l=jc;l!==null;){if(t!==0){var i=l.pendingLanes;if(i===0)var o=0;else{var m=l.suspendedLanes,g=l.pingedLanes;o=(1<<31-Ht(42|t)+1)-1,o&=i&~(m&~g),o=o&201326741?o&201326741|1:o?o|2:0}o!==0&&(a=!0,ef(l,o))}else o=ct,o=qa(l,l===Lt?o:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),(o&3)===0||Sa(l,o)||(a=!0,ef(l,o));l=l.next}while(a);Yd=!1}}function xv(){Ix()}function Ix(){vc=Qd=!1;var t=0;kl!==0&&Sv()&&(t=kl);for(var s=Ke(),a=null,l=jc;l!==null;){var i=l.next,o=Px(l,s);o===0?(l.next=null,a===null?jc=i:a.next=i,i===null&&(Qn=a)):(a=l,(t!==0||(o&3)!==0)&&(vc=!0)),l=i}ms!==0&&ms!==5||Gi(t),kl!==0&&(kl=0)}function Px(t,s){for(var a=t.suspendedLanes,l=t.pingedLanes,i=t.expirationTimes,o=t.pendingLanes&-62914561;0g)break;var le=k.transferSize,he=k.initiatorType;le&&of(he)&&(k=k.responseEnd,m+=le*(k"u"?null:document;function yf(t,s,a){var l=Yn;if(l&&typeof s=="string"&&s){var i=aa(s);i='link[rel="'+t+'"][href="'+i+'"]',typeof a=="string"&&(i+='[crossorigin="'+a+'"]'),bf.has(i)||(bf.add(i),t={rel:t,crossOrigin:a,href:s},l.querySelector(i)===null&&(s=l.createElement("link"),Ns(s,"link",t),ps(s),l.head.appendChild(s)))}}function Ov(t){ll.D(t),yf("dns-prefetch",t,null)}function Rv(t,s){ll.C(t,s),yf("preconnect",t,s)}function Lv(t,s,a){ll.L(t,s,a);var l=Yn;if(l&&t&&s){var i='link[rel="preload"][as="'+aa(s)+'"]';s==="image"&&a&&a.imageSrcSet?(i+='[imagesrcset="'+aa(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(i+='[imagesizes="'+aa(a.imageSizes)+'"]')):i+='[href="'+aa(t)+'"]';var o=i;switch(s){case"style":o=Xn(t);break;case"script":o=Kn(t)}ua.has(o)||(t=C({rel:"preload",href:s==="image"&&a&&a.imageSrcSet?void 0:t,as:s},a),ua.set(o,t),l.querySelector(i)!==null||s==="style"&&l.querySelector(Qi(o))||s==="script"&&l.querySelector(Yi(o))||(s=l.createElement("link"),Ns(s,"link",t),ps(s),l.head.appendChild(s)))}}function Uv(t,s){ll.m(t,s);var a=Yn;if(a&&t){var l=s&&typeof s.as=="string"?s.as:"script",i='link[rel="modulepreload"][as="'+aa(l)+'"][href="'+aa(t)+'"]',o=i;switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":o=Kn(t)}if(!ua.has(o)&&(t=C({rel:"modulepreload",href:t},s),ua.set(o,t),a.querySelector(i)===null)){switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(Yi(o)))return}l=a.createElement("link"),Ns(l,"link",t),ps(l),a.head.appendChild(l)}}}function Bv(t,s,a){ll.S(t,s,a);var l=Yn;if(l&&t){var i=fn(l).hoistableStyles,o=Xn(t);s=s||"default";var m=i.get(o);if(!m){var g={loading:0,preload:null};if(m=l.querySelector(Qi(o)))g.loading=5;else{t=C({rel:"stylesheet",href:t,"data-precedence":s},a),(a=ua.get(o))&&cu(t,a);var k=m=l.createElement("link");ps(k),Ns(k,"link",t),k._p=new Promise(function(J,le){k.onload=J,k.onerror=le}),k.addEventListener("load",function(){g.loading|=1}),k.addEventListener("error",function(){g.loading|=2}),g.loading|=4,_c(m,s,l)}m={type:"stylesheet",instance:m,count:1,state:g},i.set(o,m)}}}function Hv(t,s){ll.X(t,s);var a=Yn;if(a&&t){var l=fn(a).hoistableScripts,i=Kn(t),o=l.get(i);o||(o=a.querySelector(Yi(i)),o||(t=C({src:t,async:!0},s),(s=ua.get(i))&&ou(t,s),o=a.createElement("script"),ps(o),Ns(o,"link",t),a.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},l.set(i,o))}}function qv(t,s){ll.M(t,s);var a=Yn;if(a&&t){var l=fn(a).hoistableScripts,i=Kn(t),o=l.get(i);o||(o=a.querySelector(Yi(i)),o||(t=C({src:t,async:!0,type:"module"},s),(s=ua.get(i))&&ou(t,s),o=a.createElement("script"),ps(o),Ns(o,"link",t),a.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},l.set(i,o))}}function Nf(t,s,a,l){var i=(i=de.current)?wc(i):null;if(!i)throw Error(d(446));switch(t){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(s=Xn(a.href),a=fn(i).hoistableStyles,l=a.get(s),l||(l={type:"style",instance:null,count:0,state:null},a.set(s,l)),l):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){t=Xn(a.href);var o=fn(i).hoistableStyles,m=o.get(t);if(m||(i=i.ownerDocument||i,m={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},o.set(t,m),(o=i.querySelector(Qi(t)))&&!o._p&&(m.instance=o,m.state.loading=5),ua.has(t)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},ua.set(t,a),o||Gv(i,t,a,m.state))),s&&l===null)throw Error(d(528,""));return m}if(s&&l!==null)throw Error(d(529,""));return null;case"script":return s=a.async,a=a.src,typeof a=="string"&&s&&typeof s!="function"&&typeof s!="symbol"?(s=Kn(a),a=fn(i).hoistableScripts,l=a.get(s),l||(l={type:"script",instance:null,count:0,state:null},a.set(s,l)),l):{type:"void",instance:null,count:0,state:null};default:throw Error(d(444,t))}}function Xn(t){return'href="'+aa(t)+'"'}function Qi(t){return'link[rel="stylesheet"]['+t+"]"}function wf(t){return C({},t,{"data-precedence":t.precedence,precedence:null})}function Gv(t,s,a,l){t.querySelector('link[rel="preload"][as="style"]['+s+"]")?l.loading=1:(s=t.createElement("link"),l.preload=s,s.addEventListener("load",function(){return l.loading|=1}),s.addEventListener("error",function(){return l.loading|=2}),Ns(s,"link",a),ps(s),t.head.appendChild(s))}function Kn(t){return'[src="'+aa(t)+'"]'}function Yi(t){return"script[async]"+t}function _f(t,s,a){if(s.count++,s.instance===null)switch(s.type){case"style":var l=t.querySelector('style[data-href~="'+aa(a.href)+'"]');if(l)return s.instance=l,ps(l),l;var i=C({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return l=(t.ownerDocument||t).createElement("style"),ps(l),Ns(l,"style",i),_c(l,a.precedence,t),s.instance=l;case"stylesheet":i=Xn(a.href);var o=t.querySelector(Qi(i));if(o)return s.state.loading|=4,s.instance=o,ps(o),o;l=wf(a),(i=ua.get(i))&&cu(l,i),o=(t.ownerDocument||t).createElement("link"),ps(o);var m=o;return m._p=new Promise(function(g,k){m.onload=g,m.onerror=k}),Ns(o,"link",l),s.state.loading|=4,_c(o,a.precedence,t),s.instance=o;case"script":return o=Kn(a.src),(i=t.querySelector(Yi(o)))?(s.instance=i,ps(i),i):(l=a,(i=ua.get(o))&&(l=C({},a),ou(l,i)),t=t.ownerDocument||t,i=t.createElement("script"),ps(i),Ns(i,"link",l),t.head.appendChild(i),s.instance=i);case"void":return null;default:throw Error(d(443,s.type))}else s.type==="stylesheet"&&(s.state.loading&4)===0&&(l=s.instance,s.state.loading|=4,_c(l,a.precedence,t));return s.instance}function _c(t,s,a){for(var l=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),i=l.length?l[l.length-1]:null,o=i,m=0;m title"):null)}function Vv(t,s,a){if(a===1||s.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof s.precedence!="string"||typeof s.href!="string"||s.href==="")break;return!0;case"link":if(typeof s.rel!="string"||typeof s.href!="string"||s.href===""||s.onLoad||s.onError)break;switch(s.rel){case"stylesheet":return t=s.disabled,typeof s.precedence=="string"&&t==null;default:return!0}case"script":if(s.async&&typeof s.async!="function"&&typeof s.async!="symbol"&&!s.onLoad&&!s.onError&&s.src&&typeof s.src=="string")return!0}return!1}function kf(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function Fv(t,s,a,l){if(a.type==="stylesheet"&&(typeof l.media!="string"||matchMedia(l.media).matches!==!1)&&(a.state.loading&4)===0){if(a.instance===null){var i=Xn(l.href),o=s.querySelector(Qi(i));if(o){s=o._p,s!==null&&typeof s=="object"&&typeof s.then=="function"&&(t.count++,t=Cc.bind(t),s.then(t,t)),a.state.loading|=4,a.instance=o,ps(o);return}o=s.ownerDocument||s,l=wf(l),(i=ua.get(i))&&cu(l,i),o=o.createElement("link"),ps(o);var m=o;m._p=new Promise(function(g,k){m.onload=g,m.onerror=k}),Ns(o,"link",l),a.instance=o}t.stylesheets===null&&(t.stylesheets=new Map),t.stylesheets.set(a,s),(s=a.state.preload)&&(a.state.loading&3)===0&&(t.count++,a=Cc.bind(t),s.addEventListener("load",a),s.addEventListener("error",a))}}var du=0;function $v(t,s){return t.stylesheets&&t.count===0&&Tc(t,t.stylesheets),0du?50:800)+s);return t.unsuspend=a,function(){t.unsuspend=null,clearTimeout(l),clearTimeout(i)}}:null}function Cc(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Tc(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var kc=null;function Tc(t,s){t.stylesheets=null,t.unsuspend!==null&&(t.count++,kc=new Map,s.forEach(Qv,t),kc=null,Cc.call(t))}function Qv(t,s){if(!(s.state.loading&4)){var a=kc.get(t);if(a)var l=a.get(null);else{a=new Map,kc.set(t,a);for(var i=t.querySelectorAll("link[data-precedence],style[data-precedence]"),o=0;o"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(r){console.error(r)}}return n(),Nu.exports=vN(),Nu.exports}var yN=bN();function Q(...n){return db(ub(n))}const Ye=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("rounded-xl border bg-card text-card-foreground shadow",n),...r}));Ye.displayName="Card";const Nt=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("flex flex-col space-y-1.5 p-6",n),...r}));Nt.displayName="CardHeader";const wt=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("font-semibold leading-none tracking-tight",n),...r}));wt.displayName="CardTitle";const ns=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("text-sm text-muted-foreground",n),...r}));ns.displayName="CardDescription";const kt=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("p-6 pt-0",n),...r}));kt.displayName="CardContent";const mg=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("flex items-center p-6 pt-0",n),...r}));mg.displayName="CardFooter";const La=xb,wa=u.forwardRef(({className:n,...r},c)=>e.jsx(gp,{ref:c,className:Q("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",n),...r}));wa.displayName=gp.displayName;const it=u.forwardRef(({className:n,...r},c)=>e.jsx(jp,{ref:c,className:Q("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all duration-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",n),...r}));it.displayName=jp.displayName;const zt=u.forwardRef(({className:n,...r},c)=>e.jsx(vp,{ref:c,className:Q("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[state=active]:animate-in data-[state=active]:fade-in data-[state=active]:duration-300",n),...r}));zt.displayName=vp.displayName;const st=u.forwardRef(({className:n,children:r,viewportRef:c,...d},h)=>e.jsxs(bp,{ref:h,className:Q("relative overflow-hidden",n),...d,children:[e.jsx(fb,{ref:c,className:"h-full w-full rounded-[inherit]",children:r}),e.jsx(Mu,{}),e.jsx(Mu,{orientation:"horizontal"}),e.jsx(pb,{})]}));st.displayName=bp.displayName;const Mu=u.forwardRef(({className:n,orientation:r="vertical",...c},d)=>e.jsx(yp,{ref:d,orientation:r,className:Q("flex touch-none select-none transition-colors",r==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",r==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",n),...c,children:e.jsx(gb,{className:"relative flex-1 rounded-full bg-border"})}));Mu.displayName=yp.displayName;function hg({className:n,...r}){return e.jsx("div",{className:Q("animate-pulse rounded-md bg-primary/10",n),...r})}const yr=u.forwardRef(({className:n,value:r,...c},d)=>e.jsx(Np,{ref:d,className:Q("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",n),...c,children:e.jsx(jb,{className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(r||0)}%)`}})}));yr.displayName=Np.displayName;const NN={light:"",dark:".dark"},xg=u.createContext(null);function fg(){const n=u.useContext(xg);if(!n)throw new Error("useChart must be used within a ");return n}const Jn=u.forwardRef(({id:n,className:r,children:c,config:d,...h},x)=>{const f=u.useId(),j=`chart-${n||f.replace(/:/g,"")}`;return e.jsx(xg.Provider,{value:{config:d},children:e.jsxs("div",{"data-chart":j,ref:x,className:Q("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",r),...h,children:[e.jsx(wN,{id:j,config:d}),e.jsx(Mb,{children:c})]})})});Jn.displayName="Chart";const wN=({id:n,config:r})=>{const c=Object.entries(r).filter(([,d])=>d.theme||d.color);return c.length?e.jsx("style",{dangerouslySetInnerHTML:{__html:Object.entries(NN).map(([d,h])=>` +${h} [data-chart=${n}] { +${c.map(([x,f])=>{const j=f.theme?.[d]||f.color;return j?` --color-${x}: ${j};`:null}).join(` +`)} +} +`).join(` +`)}}):null},tr=Db,In=u.forwardRef(({active:n,payload:r,className:c,indicator:d="dot",hideLabel:h=!1,hideIndicator:x=!1,label:f,labelFormatter:j,labelClassName:p,formatter:N,color:v,nameKey:C,labelKey:S},w)=>{const{config:L}=fg(),F=u.useMemo(()=>{if(h||!r?.length)return null;const[O]=r,K=`${S||O?.dataKey||O?.name||"value"}`,H=Du(L,O,K),z=!S&&typeof f=="string"?L[f]?.label||f:H?.label;return j?e.jsx("div",{className:Q("font-medium",p),children:j(z,r)}):z?e.jsx("div",{className:Q("font-medium",p),children:z}):null},[f,j,r,h,p,L,S]);if(!n||!r?.length)return null;const B=r.length===1&&d!=="dot";return e.jsxs("div",{ref:w,className:Q("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",c),children:[B?null:F,e.jsx("div",{className:"grid gap-1.5",children:r.filter(O=>O.type!=="none").map((O,K)=>{const H=`${C||O.name||O.dataKey||"value"}`,z=Du(L,O,H),V=v||O.payload.fill||O.color;return e.jsx("div",{className:Q("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",d==="dot"&&"items-center"),children:N&&O?.value!==void 0&&O.name?N(O.value,O.name,O,K,O.payload):e.jsxs(e.Fragment,{children:[z?.icon?e.jsx(z.icon,{}):!x&&e.jsx("div",{className:Q("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]",{"h-2.5 w-2.5":d==="dot","w-1":d==="line","w-0 border-[1.5px] border-dashed bg-transparent":d==="dashed","my-0.5":B&&d==="dashed"}),style:{"--color-bg":V,"--color-border":V}}),e.jsxs("div",{className:Q("flex flex-1 justify-between leading-none",B?"items-end":"items-center"),children:[e.jsxs("div",{className:"grid gap-1.5",children:[B?F:null,e.jsx("span",{className:"text-muted-foreground",children:z?.label||O.name})]}),O.value&&e.jsx("span",{className:"font-mono font-medium tabular-nums text-foreground",children:O.value.toLocaleString()})]})]})},O.dataKey)})})]})});In.displayName="ChartTooltip";const _N=Ob,pg=u.forwardRef(({className:n,hideIcon:r=!1,payload:c,verticalAlign:d="bottom",nameKey:h},x)=>{const{config:f}=fg();return c?.length?e.jsx("div",{ref:x,className:Q("flex items-center justify-center gap-4",d==="top"?"pb-3":"pt-3",n),children:c.filter(j=>j.type!=="none").map(j=>{const p=`${h||j.dataKey||"value"}`,N=Du(f,j,p);return e.jsxs("div",{className:Q("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"),children:[N?.icon&&!r?e.jsx(N.icon,{}):e.jsx("div",{className:"h-2 w-2 shrink-0 rounded-[2px]",style:{backgroundColor:j.color}}),N?.label]},j.value)})}):null});pg.displayName="ChartLegend";function Du(n,r,c){if(typeof r!="object"||r===null)return;const d="payload"in r&&typeof r.payload=="object"&&r.payload!==null?r.payload:void 0;let h=c;return c in r&&typeof r[c]=="string"?h=r[c]:d&&c in d&&typeof d[c]=="string"&&(h=d[c]),h in n?n[h]:n[c]}const hr=si("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),b=u.forwardRef(({className:n,variant:r,size:c,asChild:d=!1,...h},x)=>{const f=d?qb:"button";return e.jsx(f,{className:Q(hr({variant:r,size:c,className:n})),ref:x,...h})});b.displayName="Button";const SN=si("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function Je({className:n,variant:r,...c}){return e.jsx("div",{className:Q(SN({variant:r}),n),...c})}const CN=5,kN=5e3;let Su=0;function TN(){return Su=(Su+1)%Number.MAX_SAFE_INTEGER,Su.toString()}const Cu=new Map,If=n=>{if(Cu.has(n))return;const r=setTimeout(()=>{Cu.delete(n),cr({type:"REMOVE_TOAST",toastId:n})},kN);Cu.set(n,r)},EN=(n,r)=>{switch(r.type){case"ADD_TOAST":return{...n,toasts:[r.toast,...n.toasts].slice(0,CN)};case"UPDATE_TOAST":return{...n,toasts:n.toasts.map(c=>c.id===r.toast.id?{...c,...r.toast}:c)};case"DISMISS_TOAST":{const{toastId:c}=r;return c?If(c):n.toasts.forEach(d=>{If(d.id)}),{...n,toasts:n.toasts.map(d=>d.id===c||c===void 0?{...d,open:!1}:d)}}case"REMOVE_TOAST":return r.toastId===void 0?{...n,toasts:[]}:{...n,toasts:n.toasts.filter(c=>c.id!==r.toastId)}}},Yc=[];let Xc={toasts:[]};function cr(n){Xc=EN(Xc,n),Yc.forEach(r=>{r(Xc)})}function zN({...n}){const r=TN(),c=h=>cr({type:"UPDATE_TOAST",toast:{...h,id:r}}),d=()=>cr({type:"DISMISS_TOAST",toastId:r});return cr({type:"ADD_TOAST",toast:{...n,id:r,open:!0,onOpenChange:h=>{h||d()}}}),{id:r,dismiss:d,update:c}}function Xt(){const[n,r]=u.useState(Xc);return u.useEffect(()=>(Yc.push(r),()=>{const c=Yc.indexOf(r);c>-1&&Yc.splice(c,1)}),[n]),{...n,toast:zN,dismiss:c=>cr({type:"DISMISS_TOAST",toastId:c})}}const AN=n=>{const r=[];for(let c=0;c{try{w(!0);const T=await Lc.get("https://v1.hitokoto.cn/?c=a&c=b&c=c&c=d&c=h&c=i&c=k");C({hitokoto:T.data.hitokoto,from:T.data.from||T.data.from_who||"未知"})}catch(T){console.error("获取一言失败:",T),C({hitokoto:"人生就像一盒巧克力,你永远不知道下一颗是什么味道。",from:"阿甘正传"})}finally{w(!1)}},[]),z=u.useCallback(async()=>{try{const T=localStorage.getItem("access-token"),te=await Lc.get("/api/webui/system/status",{headers:{Authorization:`Bearer ${T}`}});F(te.data)}catch(T){console.error("获取机器人状态失败:",T),F(null)}},[]),V=async()=>{if(!B)try{O(!0);const T=localStorage.getItem("access-token");await Lc.post("/api/webui/system/restart",{},{headers:{Authorization:`Bearer ${T}`}}),K({title:"重启中",description:"麦麦正在重启,请稍候..."}),setTimeout(()=>{z(),O(!1)},3e3)}catch(T){console.error("重启失败:",T),K({title:"重启失败",description:"无法重启麦麦,请检查控制台",variant:"destructive"}),O(!1)}},Y=u.useCallback(async()=>{try{const T=localStorage.getItem("access-token"),te=await Lc.get(`/api/webui/statistics/dashboard?hours=${f}`,{headers:{Authorization:`Bearer ${T}`}});r(te.data),d(!1),x(100)}catch(T){console.error("Failed to fetch dashboard data:",T),d(!1),x(100)}},[f]);if(u.useEffect(()=>{if(!c)return;x(0);const T=setTimeout(()=>x(15),200),te=setTimeout(()=>x(30),800),_=setTimeout(()=>x(45),2e3),me=setTimeout(()=>x(60),4e3),oe=setTimeout(()=>x(75),6500),ae=setTimeout(()=>x(85),9e3),xe=setTimeout(()=>x(92),11e3);return()=>{clearTimeout(T),clearTimeout(te),clearTimeout(_),clearTimeout(me),clearTimeout(oe),clearTimeout(ae),clearTimeout(xe)}},[c]),u.useEffect(()=>{Y(),H(),z()},[Y,H,z]),u.useEffect(()=>{if(!p)return;const T=setInterval(()=>{Y(),z()},3e4);return()=>clearInterval(T)},[p,Y,z]),c||!n)return e.jsx("div",{className:"flex items-center justify-center h-[calc(100vh-200px)]",children:e.jsxs("div",{className:"text-center space-y-6 w-full max-w-md px-4",children:[e.jsx(ws,{className:"h-12 w-12 animate-spin mx-auto text-primary"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-lg font-medium",children:"加载统计数据中..."}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"正在获取麦麦运行数据"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(yr,{value:h,className:"h-2"}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:[h,"%"]})]})]})});const{summary:E,model_stats:R=[],hourly_data:ne=[],daily_data:fe=[],recent_activity:Ce=[]}=n,we=E??{total_requests:0,total_cost:0,total_tokens:0,online_time:0,total_messages:0,total_replies:0,avg_response_time:0,cost_per_hour:0,tokens_per_hour:0},pe=T=>{const te=Math.floor(T/3600),_=Math.floor(T%3600/60);return`${te}小时${_}分钟`},Ne=T=>new Date(T).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),be=AN(R.length),A=R.map((T,te)=>({name:T.model_name,value:T.request_count,fill:be[te]})),X={requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"},tokens:{label:"Tokens",color:"hsl(var(--chart-3))"}};return e.jsx(st,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"实时监控面板"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"麦麦运行状态和统计数据一览"})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(La,{value:f.toString(),onValueChange:T=>j(Number(T)),children:e.jsxs(wa,{className:"grid grid-cols-3 w-full sm:w-auto",children:[e.jsx(it,{value:"24",children:"24小时"}),e.jsx(it,{value:"168",children:"7天"}),e.jsx(it,{value:"720",children:"30天"})]})}),e.jsxs(b,{variant:p?"default":"outline",size:"sm",onClick:()=>N(!p),className:"gap-2",children:[e.jsx(ws,{className:`h-4 w-4 ${p?"animate-spin":""}`}),e.jsx("span",{className:"hidden sm:inline",children:"自动刷新"})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:Y,children:e.jsx(ws,{className:"h-4 w-4"})})]})]}),e.jsxs("div",{className:"flex items-center gap-3 px-4 py-2 rounded-lg border border-dashed border-muted-foreground/30 bg-muted/20",children:[S?e.jsx(hg,{className:"h-5 flex-1"}):v?e.jsxs("p",{className:"flex-1 text-sm text-muted-foreground italic truncate",children:['"',v.hitokoto,'" —— ',v.from]}):null,e.jsx(b,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0",onClick:H,disabled:S,children:e.jsx(ws,{className:`h-3.5 w-3.5 ${S?"animate-spin":""}`})})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-3",children:[e.jsxs(Ye,{className:"lg:col-span-1",children:[e.jsx(Nt,{className:"pb-3",children:e.jsxs(wt,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(gr,{className:"h-4 w-4"}),"麦麦状态"]})}),e.jsx(kt,{children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"flex items-center gap-2",children:L?.running?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-3 w-3 rounded-full bg-green-500 animate-pulse"}),e.jsxs(Je,{variant:"outline",className:"text-green-600 border-green-300 bg-green-50",children:[e.jsx(ha,{className:"h-3 w-3 mr-1"}),"运行中"]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-3 w-3 rounded-full bg-red-500"}),e.jsxs(Je,{variant:"outline",className:"text-red-600 border-red-300 bg-red-50",children:[e.jsx(Oa,{className:"h-3 w-3 mr-1"}),"已停止"]})]})}),L&&e.jsxs("div",{className:"text-xs text-muted-foreground",children:[e.jsxs("span",{children:["v",L.version]}),e.jsx("span",{className:"mx-2",children:"|"}),e.jsxs("span",{children:["运行 ",pe(L.uptime)]})]})]})})]}),e.jsxs(Ye,{className:"lg:col-span-2",children:[e.jsx(Nt,{className:"pb-3",children:e.jsxs(wt,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(ln,{className:"h-4 w-4"}),"快速操作"]})}),e.jsx(kt,{children:e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(b,{variant:"outline",size:"sm",onClick:V,disabled:B,className:"gap-2",children:[e.jsx(Kc,{className:`h-4 w-4 ${B?"animate-spin":""}`}),B?"重启中...":"重启麦麦"]}),e.jsx(b,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs($c,{to:"/logs",children:[e.jsx(Da,{className:"h-4 w-4"}),"查看日志"]})}),e.jsx(b,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs($c,{to:"/plugins",children:[e.jsx(ly,{className:"h-4 w-4"}),"插件管理"]})}),e.jsx(b,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs($c,{to:"/settings",children:[e.jsx(ai,{className:"h-4 w-4"}),"系统设置"]})})]})})]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-4",children:[e.jsxs(Ye,{children:[e.jsxs(Nt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(wt,{className:"text-sm font-medium",children:"总请求数"}),e.jsx(ny,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(kt,{children:[e.jsx("div",{className:"text-2xl font-bold",children:we.total_requests.toLocaleString()}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["最近",f<48?f+"小时":Math.floor(f/24)+"天"]})]})]}),e.jsxs(Ye,{children:[e.jsxs(Nt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(wt,{className:"text-sm font-medium",children:"总花费"}),e.jsx(iy,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(kt,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:["¥",we.total_cost.toFixed(2)]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:we.cost_per_hour>0?`¥${we.cost_per_hour.toFixed(2)}/小时`:"暂无数据"})]})]}),e.jsxs(Ye,{children:[e.jsxs(Nt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(wt,{className:"text-sm font-medium",children:"Token消耗"}),e.jsx(Zc,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(kt,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:[(we.total_tokens/1e3).toFixed(1),"K"]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:we.tokens_per_hour>0?`${(we.tokens_per_hour/1e3).toFixed(1)}K/小时`:"暂无数据"})]})]}),e.jsxs(Ye,{children:[e.jsxs(Nt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(wt,{className:"text-sm font-medium",children:"平均响应"}),e.jsx(ln,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(kt,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:[we.avg_response_time.toFixed(2),"s"]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"API平均耗时"})]})]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 sm:grid-cols-3",children:[e.jsxs(Ye,{children:[e.jsxs(Nt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(wt,{className:"text-sm font-medium",children:"在线时长"}),e.jsx(Wn,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsx(kt,{children:e.jsx("div",{className:"text-xl font-bold",children:pe(we.online_time)})})]}),e.jsxs(Ye,{children:[e.jsxs(Nt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(wt,{className:"text-sm font-medium",children:"消息处理"}),e.jsx(cn,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(kt,{children:[e.jsx("div",{className:"text-xl font-bold",children:we.total_messages.toLocaleString()}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["回复 ",we.total_replies.toLocaleString()," 条"]})]})]}),e.jsxs(Ye,{children:[e.jsxs(Nt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(wt,{className:"text-sm font-medium",children:"成本效率"}),e.jsx(ry,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(kt,{children:[e.jsx("div",{className:"text-xl font-bold",children:we.total_messages>0?`¥${(we.total_cost/we.total_messages*100).toFixed(2)}`:"¥0.00"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"每100条消息"})]})]})]}),e.jsxs(La,{defaultValue:"trends",className:"space-y-4",children:[e.jsxs(wa,{className:"grid w-full grid-cols-2 sm:grid-cols-4",children:[e.jsx(it,{value:"trends",children:"趋势"}),e.jsx(it,{value:"models",children:"模型"}),e.jsx(it,{value:"activity",children:"活动"}),e.jsx(it,{value:"daily",children:"日统计"})]}),e.jsxs(zt,{value:"trends",className:"space-y-4",children:[e.jsxs(Ye,{children:[e.jsxs(Nt,{children:[e.jsx(wt,{children:"请求趋势"}),e.jsxs(ns,{children:["最近",f,"小时的请求量变化"]})]}),e.jsx(kt,{children:e.jsx(Jn,{config:X,className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:e.jsxs(Rb,{data:ne,children:[e.jsx(Uc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Bc,{dataKey:"timestamp",tickFormatter:T=>Ne(T),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(Wi,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{content:e.jsx(In,{labelFormatter:T=>Ne(T)})}),e.jsx(Lb,{type:"monotone",dataKey:"requests",stroke:"var(--color-requests)",strokeWidth:2})]})})})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[e.jsxs(Ye,{children:[e.jsxs(Nt,{children:[e.jsx(wt,{children:"花费趋势"}),e.jsx(ns,{children:"API调用成本变化"})]}),e.jsx(kt,{children:e.jsx(Jn,{config:X,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:e.jsxs(vu,{data:ne,children:[e.jsx(Uc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Bc,{dataKey:"timestamp",tickFormatter:T=>Ne(T),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(Wi,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{content:e.jsx(In,{labelFormatter:T=>Ne(T)})}),e.jsx(Hc,{dataKey:"cost",fill:"var(--color-cost)"})]})})})]}),e.jsxs(Ye,{children:[e.jsxs(Nt,{children:[e.jsx(wt,{children:"Token消耗"}),e.jsx(ns,{children:"Token使用量变化"})]}),e.jsx(kt,{children:e.jsx(Jn,{config:X,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:e.jsxs(vu,{data:ne,children:[e.jsx(Uc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Bc,{dataKey:"timestamp",tickFormatter:T=>Ne(T),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(Wi,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{content:e.jsx(In,{labelFormatter:T=>Ne(T)})}),e.jsx(Hc,{dataKey:"tokens",fill:"var(--color-tokens)"})]})})})]})]})]}),e.jsx(zt,{value:"models",className:"space-y-4",children:e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[e.jsxs(Ye,{children:[e.jsxs(Nt,{children:[e.jsx(wt,{children:"模型请求分布"}),e.jsxs(ns,{children:["各模型使用占比 (共 ",R.length," 个模型)"]})]}),e.jsx(kt,{children:e.jsx(Jn,{config:Object.fromEntries(R.map((T,te)=>[T.model_name,{label:T.model_name,color:be[te]}])),className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:e.jsxs(Ub,{children:[e.jsx(tr,{content:e.jsx(In,{})}),e.jsx(Bb,{data:A,cx:"50%",cy:"50%",labelLine:!1,label:({name:T,percent:te})=>te&&te<.05?"":`${T} ${te?(te*100).toFixed(0):0}%`,outerRadius:100,dataKey:"value",children:A.map((T,te)=>e.jsx(Hb,{fill:T.fill},`cell-${te}`))})]})})})]}),e.jsxs(Ye,{children:[e.jsxs(Nt,{children:[e.jsx(wt,{children:"模型详细统计"}),e.jsx(ns,{children:"请求数、花费和性能"})]}),e.jsx(kt,{children:e.jsx(st,{className:"h-[300px] sm:h-[400px]",children:e.jsx("div",{className:"space-y-3",children:R.map((T,te)=>e.jsxs("div",{className:"p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("h4",{className:"font-semibold text-sm truncate flex-1 min-w-0",children:T.model_name}),e.jsx("div",{className:"w-3 h-3 rounded-full ml-2 flex-shrink-0",style:{backgroundColor:`hsl(var(--chart-${te%5+1}))`}})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"请求数:"}),e.jsx("span",{className:"ml-1 font-medium",children:T.request_count.toLocaleString()})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"花费:"}),e.jsxs("span",{className:"ml-1 font-medium",children:["¥",T.total_cost.toFixed(2)]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),e.jsxs("span",{className:"ml-1 font-medium",children:[(T.total_tokens/1e3).toFixed(1),"K"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"平均耗时:"}),e.jsxs("span",{className:"ml-1 font-medium",children:[T.avg_response_time.toFixed(2),"s"]})]})]})]},te))})})})]})]})}),e.jsx(zt,{value:"activity",children:e.jsxs(Ye,{children:[e.jsxs(Nt,{children:[e.jsx(wt,{children:"最近活动"}),e.jsx(ns,{children:"最新的API调用记录"})]}),e.jsx(kt,{children:e.jsx(st,{className:"h-[400px] sm:h-[500px]",children:e.jsx("div",{className:"space-y-2",children:Ce.map((T,te)=>e.jsxs("div",{className:"p-3 sm:p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-2 mb-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-sm truncate",children:T.model}),e.jsx("div",{className:"text-xs text-muted-foreground",children:T.request_type})]}),e.jsx("div",{className:"text-xs text-muted-foreground flex-shrink-0",children:Ne(T.timestamp)})]}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-2 text-xs",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),e.jsx("span",{className:"ml-1",children:T.tokens})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"花费:"}),e.jsxs("span",{className:"ml-1",children:["¥",T.cost.toFixed(4)]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"耗时:"}),e.jsxs("span",{className:"ml-1",children:[T.time_cost.toFixed(2),"s"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"状态:"}),e.jsx("span",{className:`ml-1 ${T.status==="success"?"text-green-600":"text-red-600"}`,children:T.status})]})]})]},te))})})})]})}),e.jsx(zt,{value:"daily",children:e.jsxs(Ye,{children:[e.jsxs(Nt,{children:[e.jsx(wt,{children:"每日统计"}),e.jsx(ns,{children:"最近7天的数据汇总"})]}),e.jsx(kt,{children:e.jsx(Jn,{config:{requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"}},className:"h-[400px] sm:h-[500px] w-full aspect-auto",children:e.jsxs(vu,{data:fe,children:[e.jsx(Uc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Bc,{dataKey:"timestamp",tickFormatter:T=>{const te=new Date(T);return`${te.getMonth()+1}/${te.getDate()}`},stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(Wi,{yAxisId:"left",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(Wi,{yAxisId:"right",orientation:"right",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{content:e.jsx(In,{labelFormatter:T=>new Date(T).toLocaleDateString("zh-CN")})}),e.jsx(_N,{content:e.jsx(pg,{})}),e.jsx(Hc,{yAxisId:"left",dataKey:"requests",fill:"var(--color-requests)"}),e.jsx(Hc,{yAxisId:"right",dataKey:"cost",fill:"var(--color-cost)"})]})})})]})})]})]})})}const DN={theme:"system",setTheme:()=>null},gg=u.createContext(DN),Gu=()=>{const n=u.useContext(gg);if(n===void 0)throw new Error("useTheme must be used within a ThemeProvider");return n},ON=(n,r,c)=>{const d=document.documentElement.classList.contains("no-animations");if(!document.startViewTransition||d){r(n);return}const h=c.clientX,x=c.clientY,f=Math.hypot(Math.max(h,innerWidth-h),Math.max(x,innerHeight-x));document.startViewTransition(()=>{r(n)}).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${h}px ${x}px)`,`circle(${f}px at ${h}px ${x}px)`]},{duration:500,easing:"ease-in-out",pseudoElement:"::view-transition-new(root)"})})},jg=u.createContext(void 0),vg=()=>{const n=u.useContext(jg);if(n===void 0)throw new Error("useAnimation must be used within an AnimationProvider");return n},Qe=u.forwardRef(({className:n,...r},c)=>e.jsx(wp,{className:Q("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",n),...r,ref:c,children:e.jsx(vb,{className:Q("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));Qe.displayName=wp.displayName;const RN=si("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),y=u.forwardRef(({className:n,...r},c)=>e.jsx(Lp,{ref:c,className:Q(RN(),n),...r}));y.displayName=Lp.displayName;const ce=u.forwardRef(({className:n,type:r,...c},d)=>e.jsx("input",{type:r,className:Q("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",n),ref:d,...c}));ce.displayName="Input";const LN=[{id:"minLength",label:"长度至少 10 位",description:"Token 长度必须大于等于 10 个字符",validate:n=>n.length>=10},{id:"hasUppercase",label:"包含大写字母",description:"至少包含一个大写字母 (A-Z)",validate:n=>/[A-Z]/.test(n)},{id:"hasLowercase",label:"包含小写字母",description:"至少包含一个小写字母 (a-z)",validate:n=>/[a-z]/.test(n)},{id:"hasSpecialChar",label:"包含特殊符号",description:"至少包含一个特殊符号 (!@#$%^&*()_+-=[]{}|;:,.<>?/)",validate:n=>/[!@#$%^&*()_+\-=[\]{}|;:,.<>?/]/.test(n)}];function UN(n){const r=LN.map(d=>({id:d.id,label:d.label,description:d.description,passed:d.validate(n)}));return{isValid:r.every(d=>d.passed),rules:r}}const Vu="0.11.6 Beta",Fu="MaiBot Dashboard",BN=`${Fu} v${Vu}`,HN=(n="v")=>`${n}${Vu}`,Gs={THEME:"maibot-ui-theme",ACCENT_COLOR:"accent-color",ENABLE_ANIMATIONS:"maibot-animations",ENABLE_WAVES_BACKGROUND:"maibot-waves-background",LOG_CACHE_SIZE:"maibot-log-cache-size",LOG_AUTO_SCROLL:"maibot-log-auto-scroll",LOG_FONT_SIZE:"maibot-log-font-size",LOG_LINE_SPACING:"maibot-log-line-spacing",DATA_SYNC_INTERVAL:"maibot-data-sync-interval",WS_RECONNECT_INTERVAL:"maibot-ws-reconnect-interval",WS_MAX_RECONNECT_ATTEMPTS:"maibot-ws-max-reconnect-attempts",COMPLETED_TOURS:"maibot-completed-tours"},Aa={theme:"system",accentColor:"blue",enableAnimations:!0,enableWavesBackground:!0,logCacheSize:1e3,logAutoScroll:!0,logFontSize:"xs",logLineSpacing:4,dataSyncInterval:30,wsReconnectInterval:3e3,wsMaxReconnectAttempts:10};function Wt(n){const r=bg(n),c=localStorage.getItem(r);if(c===null)return Aa[n];const d=Aa[n];if(typeof d=="boolean")return c==="true";if(typeof d=="number"){const h=parseFloat(c);return isNaN(h)?d:h}return c}function Pn(n,r){const c=bg(n);localStorage.setItem(c,String(r)),window.dispatchEvent(new CustomEvent("maibot-settings-change",{detail:{key:n,value:r}}))}function qN(){return{theme:Wt("theme"),accentColor:Wt("accentColor"),enableAnimations:Wt("enableAnimations"),enableWavesBackground:Wt("enableWavesBackground"),logCacheSize:Wt("logCacheSize"),logAutoScroll:Wt("logAutoScroll"),logFontSize:Wt("logFontSize"),logLineSpacing:Wt("logLineSpacing"),dataSyncInterval:Wt("dataSyncInterval"),wsReconnectInterval:Wt("wsReconnectInterval"),wsMaxReconnectAttempts:Wt("wsMaxReconnectAttempts")}}function GN(){const n=qN(),r=localStorage.getItem(Gs.COMPLETED_TOURS),c=r?JSON.parse(r):[];return{...n,completedTours:c}}function VN(n){const r=[],c=[];for(const[d,h]of Object.entries(n)){if(d==="completedTours"){Array.isArray(h)?(localStorage.setItem(Gs.COMPLETED_TOURS,JSON.stringify(h)),r.push("completedTours")):c.push("completedTours");continue}if(d in Aa){const x=d,f=Aa[x];if(typeof h==typeof f){if(x==="theme"&&!["light","dark","system"].includes(h)){c.push(d);continue}if(x==="logFontSize"&&!["xs","sm","base"].includes(h)){c.push(d);continue}Pn(x,h),r.push(d)}else c.push(d)}else c.push(d)}return{success:r.length>0,imported:r,skipped:c}}function FN(){for(const n of Object.keys(Aa))Pn(n,Aa[n]);localStorage.removeItem(Gs.COMPLETED_TOURS),window.dispatchEvent(new CustomEvent("maibot-settings-reset"))}function $N(){const n=[],r=[],c=[];for(let d=0;dd.size-c.size),{used:n,items:localStorage.length,details:r}}function QN(n){if(n===0)return"0 B";const r=1024,c=["B","KB","MB"],d=Math.floor(Math.log(n)/Math.log(r));return parseFloat((n/Math.pow(r,d)).toFixed(2))+" "+c[d]}function bg(n){return{theme:Gs.THEME,accentColor:Gs.ACCENT_COLOR,enableAnimations:Gs.ENABLE_ANIMATIONS,enableWavesBackground:Gs.ENABLE_WAVES_BACKGROUND,logCacheSize:Gs.LOG_CACHE_SIZE,logAutoScroll:Gs.LOG_AUTO_SCROLL,logFontSize:Gs.LOG_FONT_SIZE,logLineSpacing:Gs.LOG_LINE_SPACING,dataSyncInterval:Gs.DATA_SYNC_INTERVAL,wsReconnectInterval:Gs.WS_RECONNECT_INTERVAL,wsMaxReconnectAttempts:Gs.WS_MAX_RECONNECT_ATTEMPTS}[n]}const Ma=u.forwardRef(({className:n,...r},c)=>e.jsxs(_p,{ref:c,className:Q("relative flex w-full touch-none select-none items-center",n),...r,children:[e.jsx(bb,{className:"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20",children:e.jsx(yb,{className:"absolute h-full bg-primary"})}),e.jsx(Nb,{className:"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"})]}));Ma.displayName=_p.displayName;class YN{ws=null;reconnectTimeout=null;reconnectAttempts=0;heartbeatInterval=null;logCallbacks=new Set;connectionCallbacks=new Set;isConnected=!1;logCache=[];getMaxCacheSize(){return Wt("logCacheSize")}getMaxReconnectAttempts(){return Wt("wsMaxReconnectAttempts")}getReconnectInterval(){return Wt("wsReconnectInterval")}getWebSocketUrl(){{const r=window.location.protocol==="https:"?"wss:":"ws:",c=window.location.host;return`${r}//${c}/ws/logs`}}connect(){if(this.ws?.readyState===WebSocket.OPEN||this.ws?.readyState===WebSocket.CONNECTING)return;const r=this.getWebSocketUrl();try{this.ws=new WebSocket(r),this.ws.onopen=()=>{this.isConnected=!0,this.reconnectAttempts=0,this.notifyConnection(!0),this.startHeartbeat()},this.ws.onmessage=c=>{try{if(c.data==="pong")return;const d=JSON.parse(c.data);this.notifyLog(d)}catch(d){console.error("解析日志消息失败:",d)}},this.ws.onerror=c=>{console.error("❌ WebSocket 错误:",c),this.isConnected=!1,this.notifyConnection(!1)},this.ws.onclose=()=>{this.isConnected=!1,this.notifyConnection(!1),this.stopHeartbeat(),this.attemptReconnect()}}catch(c){console.error("创建 WebSocket 连接失败:",c),this.attemptReconnect()}}attemptReconnect(){const r=this.getMaxReconnectAttempts();if(this.reconnectAttempts>=r)return;this.reconnectAttempts+=1;const c=this.getReconnectInterval(),d=Math.min(c*this.reconnectAttempts,3e4);this.reconnectTimeout=window.setTimeout(()=>{this.connect()},d)}startHeartbeat(){this.heartbeatInterval=window.setInterval(()=>{this.ws?.readyState===WebSocket.OPEN&&this.ws.send("ping")},3e4)}stopHeartbeat(){this.heartbeatInterval!==null&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}disconnect(){this.reconnectTimeout!==null&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.stopHeartbeat(),this.ws&&(this.ws.close(),this.ws=null),this.isConnected=!1,this.reconnectAttempts=0}onLog(r){return this.logCallbacks.add(r),()=>this.logCallbacks.delete(r)}onConnectionChange(r){return this.connectionCallbacks.add(r),r(this.isConnected),()=>this.connectionCallbacks.delete(r)}notifyLog(r){if(!this.logCache.some(d=>d.id===r.id)){this.logCache.push(r);const d=this.getMaxCacheSize();this.logCache.length>d&&(this.logCache=this.logCache.slice(-d)),this.logCallbacks.forEach(h=>{try{h(r)}catch(x){console.error("日志回调执行失败:",x)}})}}notifyConnection(r){this.connectionCallbacks.forEach(c=>{try{c(r)}catch(d){console.error("连接状态回调执行失败:",d)}})}getAllLogs(){return[...this.logCache]}clearLogs(){this.logCache=[]}getConnectionStatus(){return this.isConnected}}const an=new YN;typeof window<"u"&&an.connect();const Jt=Fb,$u=$b,XN=Gb,yg=u.forwardRef(({className:n,...r},c)=>e.jsx(Up,{ref:c,className:Q("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...r}));yg.displayName=Up.displayName;const $t=u.forwardRef(({className:n,children:r,preventOutsideClose:c=!1,...d},h)=>e.jsxs(XN,{children:[e.jsx(yg,{}),e.jsxs(Bp,{ref:h,className:Q("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",n),onPointerDownOutside:c?x=>x.preventDefault():void 0,onInteractOutside:c?x=>x.preventDefault():void 0,...d,children:[r,e.jsxs(Vb,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[e.jsx(on,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));$t.displayName=Bp.displayName;const Qt=({className:n,...r})=>e.jsx("div",{className:Q("flex flex-col space-y-1.5 text-center sm:text-left",n),...r});Qt.displayName="DialogHeader";const xs=({className:n,...r})=>e.jsx("div",{className:Q("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",n),...r});xs.displayName="DialogFooter";const Yt=u.forwardRef(({className:n,...r},c)=>e.jsx(Hp,{ref:c,className:Q("text-lg font-semibold leading-none tracking-tight",n),...r}));Yt.displayName=Hp.displayName;const ds=u.forwardRef(({className:n,...r},c)=>e.jsx(qp,{ref:c,className:Q("text-sm text-muted-foreground",n),...r}));ds.displayName=qp.displayName;const bt=_b,es=Sb,KN=wb,Ng=u.forwardRef(({className:n,...r},c)=>e.jsx(Sp,{className:Q("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...r,ref:c}));Ng.displayName=Sp.displayName;const dt=u.forwardRef(({className:n,...r},c)=>e.jsxs(KN,{children:[e.jsx(Ng,{}),e.jsx(Cp,{ref:c,className:Q("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",n),...r})]}));dt.displayName=Cp.displayName;const ut=({className:n,...r})=>e.jsx("div",{className:Q("flex flex-col space-y-2 text-center sm:text-left",n),...r});ut.displayName="AlertDialogHeader";const mt=({className:n,...r})=>e.jsx("div",{className:Q("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",n),...r});mt.displayName="AlertDialogFooter";const ht=u.forwardRef(({className:n,...r},c)=>e.jsx(kp,{ref:c,className:Q("text-lg font-semibold",n),...r}));ht.displayName=kp.displayName;const xt=u.forwardRef(({className:n,...r},c)=>e.jsx(Tp,{ref:c,className:Q("text-sm text-muted-foreground",n),...r}));xt.displayName=Tp.displayName;const ft=u.forwardRef(({className:n,...r},c)=>e.jsx(Ep,{ref:c,className:Q(hr(),n),...r}));ft.displayName=Ep.displayName;const pt=u.forwardRef(({className:n,...r},c)=>e.jsx(zp,{ref:c,className:Q(hr({variant:"outline"}),"mt-2 sm:mt-0",n),...r}));pt.displayName=zp.displayName;function ZN(){return e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"系统设置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理您的应用偏好设置"})]})}),e.jsxs(La,{defaultValue:"appearance",className:"w-full",children:[e.jsxs(wa,{className:"grid w-full grid-cols-2 sm:grid-cols-4 gap-0.5 sm:gap-1 h-auto p-1",children:[e.jsxs(it,{value:"appearance",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(cy,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"外观"})]}),e.jsxs(it,{value:"security",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(oy,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"安全"})]}),e.jsxs(it,{value:"other",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(ai,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"其他"})]}),e.jsxs(it,{value:"about",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(Ra,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"关于"})]})]}),e.jsxs(st,{className:"h-[calc(100vh-240px)] sm:h-[calc(100vh-280px)] mt-4 sm:mt-6",children:[e.jsx(zt,{value:"appearance",className:"mt-0",children:e.jsx(JN,{})}),e.jsx(zt,{value:"security",className:"mt-0",children:e.jsx(IN,{})}),e.jsx(zt,{value:"other",className:"mt-0",children:e.jsx(PN,{})}),e.jsx(zt,{value:"about",className:"mt-0",children:e.jsx(WN,{})})]})]})]})}function Wf(n){const r=document.documentElement,d={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[n];if(d)r.style.setProperty("--primary",d.hsl),d.gradient?(r.style.setProperty("--primary-gradient",d.gradient),r.classList.add("has-gradient")):(r.style.removeProperty("--primary-gradient"),r.classList.remove("has-gradient"));else if(n.startsWith("#")){const h=x=>{x=x.replace("#","");const f=parseInt(x.substring(0,2),16)/255,j=parseInt(x.substring(2,4),16)/255,p=parseInt(x.substring(4,6),16)/255,N=Math.max(f,j,p),v=Math.min(f,j,p);let C=0,S=0;const w=(N+v)/2;if(N!==v){const L=N-v;switch(S=w>.5?L/(2-N-v):L/(N+v),N){case f:C=((j-p)/L+(jlocalStorage.getItem("accent-color")||"blue");u.useEffect(()=>{const N=localStorage.getItem("accent-color")||"blue";Wf(N)},[]);const p=N=>{j(N),localStorage.setItem("accent-color",N),Wf(N)};return e.jsxs("div",{className:"space-y-6 sm:space-y-8",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题模式"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 sm:gap-4",children:[e.jsx(ku,{value:"light",current:n,onChange:r,label:"浅色",description:"始终使用浅色主题"}),e.jsx(ku,{value:"dark",current:n,onChange:r,label:"深色",description:"始终使用深色主题"}),e.jsx(ku,{value:"system",current:n,onChange:r,label:"跟随系统",description:"根据系统设置自动切换"})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题色"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"单色"}),e.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[e.jsx(ma,{value:"blue",current:f,onChange:p,label:"蓝色",colorClass:"bg-blue-500"}),e.jsx(ma,{value:"purple",current:f,onChange:p,label:"紫色",colorClass:"bg-purple-500"}),e.jsx(ma,{value:"green",current:f,onChange:p,label:"绿色",colorClass:"bg-green-500"}),e.jsx(ma,{value:"orange",current:f,onChange:p,label:"橙色",colorClass:"bg-orange-500"}),e.jsx(ma,{value:"pink",current:f,onChange:p,label:"粉色",colorClass:"bg-pink-500"}),e.jsx(ma,{value:"red",current:f,onChange:p,label:"红色",colorClass:"bg-red-500"})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"渐变色"}),e.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[e.jsx(ma,{value:"gradient-sunset",current:f,onChange:p,label:"日落",colorClass:"bg-gradient-to-r from-orange-500 to-pink-500"}),e.jsx(ma,{value:"gradient-ocean",current:f,onChange:p,label:"海洋",colorClass:"bg-gradient-to-r from-blue-500 to-cyan-500"}),e.jsx(ma,{value:"gradient-forest",current:f,onChange:p,label:"森林",colorClass:"bg-gradient-to-r from-green-500 to-emerald-500"}),e.jsx(ma,{value:"gradient-aurora",current:f,onChange:p,label:"极光",colorClass:"bg-gradient-to-r from-purple-500 to-pink-500"}),e.jsx(ma,{value:"gradient-fire",current:f,onChange:p,label:"烈焰",colorClass:"bg-gradient-to-r from-red-500 to-orange-500"}),e.jsx(ma,{value:"gradient-twilight",current:f,onChange:p,label:"暮光",colorClass:"bg-gradient-to-r from-indigo-500 to-purple-500"})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"自定义颜色"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 sm:gap-4",children:[e.jsx("div",{className:"flex-1",children:e.jsx("input",{type:"color",value:f.startsWith("#")?f:"#3b82f6",onChange:N=>p(N.target.value),className:"h-10 sm:h-12 w-full rounded-lg border-2 border-border cursor-pointer",title:"选择自定义颜色"})}),e.jsx("div",{className:"flex-1",children:e.jsx(ce,{type:"text",value:f,onChange:N=>p(N.target.value),placeholder:"#3b82f6",className:"font-mono text-sm"})})]}),e.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground mt-2",children:"点击色块选择颜色,或手动输入 HEX 颜色代码"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"动画效果"}),e.jsxs("div",{className:"space-y-2 sm:space-y-3",children:[e.jsx("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5 flex-1",children:[e.jsx(y,{htmlFor:"animations",className:"text-base font-medium cursor-pointer",children:"启用动画效果"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后将禁用所有过渡动画和特效,提升性能"})]}),e.jsx(Qe,{id:"animations",checked:c,onCheckedChange:d})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5 flex-1",children:[e.jsx(y,{htmlFor:"waves-background",className:"text-base font-medium cursor-pointer",children:"登录页波浪背景"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后登录页将使用纯色背景,适合低性能设备"})]}),e.jsx(Qe,{id:"waves-background",checked:h,onCheckedChange:x})]})})]})]})]})}function IN(){const n=fa(),[r,c]=u.useState(""),[d,h]=u.useState(""),[x,f]=u.useState(!1),[j,p]=u.useState(!1),[N,v]=u.useState(!1),[C,S]=u.useState(!1),[w,L]=u.useState(!1),[F,B]=u.useState(!1),[O,K]=u.useState(""),[H,z]=u.useState(!1),{toast:V}=Xt(),Y=u.useMemo(()=>UN(d),[d]),E=async pe=>{if(!r){V({title:"无法复制",description:"Token 存储在安全 Cookie 中,请重新生成以获取新 Token",variant:"destructive"});return}try{await navigator.clipboard.writeText(pe),L(!0),V({title:"复制成功",description:"Token 已复制到剪贴板"}),setTimeout(()=>L(!1),2e3)}catch{V({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},R=async()=>{if(!d.trim()){V({title:"输入错误",description:"请输入新的 Token",variant:"destructive"});return}if(!Y.isValid){const pe=Y.rules.filter(Ne=>!Ne.passed).map(Ne=>Ne.label).join(", ");V({title:"格式错误",description:`Token 不符合要求: ${pe}`,variant:"destructive"});return}v(!0);try{const pe=await fetch("/api/webui/auth/update",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({new_token:d.trim()})}),Ne=await pe.json();pe.ok&&Ne.success?(h(""),c(d.trim()),V({title:"更新成功",description:"Access Token 已更新,即将跳转到登录页"}),setTimeout(()=>{n({to:"/auth"})},1500)):V({title:"更新失败",description:Ne.message||"无法更新 Token",variant:"destructive"})}catch(pe){console.error("更新 Token 错误:",pe),V({title:"更新失败",description:"连接服务器失败",variant:"destructive"})}finally{v(!1)}},ne=async()=>{S(!0);try{const pe=await fetch("/api/webui/auth/regenerate",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include"}),Ne=await pe.json();pe.ok&&Ne.success?(c(Ne.token),K(Ne.token),B(!0),z(!1),V({title:"生成成功",description:"新的 Access Token 已生成,请及时保存"})):V({title:"生成失败",description:Ne.message||"无法生成新 Token",variant:"destructive"})}catch(pe){console.error("生成 Token 错误:",pe),V({title:"生成失败",description:"连接服务器失败",variant:"destructive"})}finally{S(!1)}},fe=async()=>{try{await navigator.clipboard.writeText(O),z(!0),V({title:"复制成功",description:"Token 已复制到剪贴板"})}catch{V({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},Ce=()=>{B(!1),setTimeout(()=>{K(""),z(!1)},300),setTimeout(()=>{n({to:"/auth"})},500)},we=pe=>{pe||Ce()};return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsx(Jt,{open:F,onOpenChange:we,children:e.jsxs($t,{className:"sm:max-w-md",children:[e.jsxs(Qt,{children:[e.jsxs(Yt,{className:"flex items-center gap-2",children:[e.jsx(ya,{className:"h-5 w-5 text-yellow-500"}),"新的 Access Token"]}),e.jsx(ds,{children:"这是您的新 Token,请立即保存。关闭此窗口后将跳转到登录页面。"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"rounded-lg border-2 border-primary/20 bg-primary/5 p-4",children:[e.jsx(y,{className:"text-xs text-muted-foreground mb-2 block",children:"您的新 Token (64位安全令牌)"}),e.jsx("div",{className:"font-mono text-sm break-all select-all bg-background p-3 rounded border",children:O})]}),e.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ya,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5"}),e.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[e.jsx("p",{className:"font-semibold",children:"重要提示"}),e.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[e.jsx("li",{children:"此 Token 仅显示一次,关闭后无法再查看"}),e.jsx("li",{children:"请立即复制并保存到安全的位置"}),e.jsx("li",{children:"关闭窗口后将自动跳转到登录页面"}),e.jsx("li",{children:"请使用新 Token 重新登录系统"})]})]})]})})]}),e.jsxs(xs,{className:"gap-2 sm:gap-0",children:[e.jsx(b,{variant:"outline",onClick:fe,className:"gap-2",children:H?e.jsxs(e.Fragment,{children:[e.jsx(Na,{className:"h-4 w-4 text-green-500"}),"已复制"]}):e.jsxs(e.Fragment,{children:[e.jsx(Jc,{className:"h-4 w-4"}),"复制 Token"]})}),e.jsx(b,{onClick:Ce,children:"我已保存,关闭"})]})]})}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"当前 Access Token"}),e.jsx("div",{className:"space-y-3 sm:space-y-4",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"current-token",className:"text-sm",children:"您的访问令牌"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(ce,{id:"current-token",type:x?"text":"password",value:r||"••••••••••••••••••••••••••••••••",readOnly:!0,className:"pr-10 font-mono text-sm",placeholder:"Token 存储在安全 Cookie 中"}),e.jsx("button",{onClick:()=>{r?f(!x):V({title:"无法查看",description:'Token 存储在安全 Cookie 中,如需新 Token 请点击"重新生成"'})},className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:x?"隐藏":"显示",children:x?e.jsx(or,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Ws,{className:"h-4 w-4 text-muted-foreground"})})]}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[e.jsx(b,{variant:"outline",size:"icon",onClick:()=>E(r),title:"复制到剪贴板",className:"flex-shrink-0",disabled:!r,children:w?e.jsx(Na,{className:"h-4 w-4 text-green-500"}):e.jsx(Jc,{className:"h-4 w-4"})}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsxs(b,{variant:"outline",disabled:C,className:"gap-2 flex-1 sm:flex-none",children:[e.jsx(ws,{className:Q("h-4 w-4",C&&"animate-spin")}),e.jsx("span",{className:"hidden sm:inline",children:"重新生成"}),e.jsx("span",{className:"sm:hidden",children:"生成"})]})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认重新生成 Token"}),e.jsx(xt,{children:"这将生成一个新的 64 位安全令牌,并使当前 Token 立即失效。 您需要使用新 Token 重新登录系统。此操作不可撤销,确定要继续吗?"})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:ne,children:"确认生成"})]})]})]})]})]}),e.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground",children:"请妥善保管您的 Access Token,不要泄露给他人"})]})})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"自定义 Access Token"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"new-token",className:"text-sm",children:"新的访问令牌"}),e.jsxs("div",{className:"relative",children:[e.jsx(ce,{id:"new-token",type:j?"text":"password",value:d,onChange:pe=>h(pe.target.value),className:"pr-10 font-mono text-sm",placeholder:"输入自定义 Token"}),e.jsx("button",{onClick:()=>p(!j),className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:j?"隐藏":"显示",children:j?e.jsx(or,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Ws,{className:"h-4 w-4 text-muted-foreground"})})]}),d&&e.jsxs("div",{className:"mt-3 space-y-2 p-3 rounded-lg bg-muted/50",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"Token 安全要求:"}),e.jsx("div",{className:"space-y-1.5",children:Y.rules.map(pe=>e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[pe.passed?e.jsx(ha,{className:"h-4 w-4 text-green-500 flex-shrink-0"}):e.jsx(sg,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),e.jsx("span",{className:Q(pe.passed?"text-green-600 dark:text-green-400":"text-muted-foreground"),children:pe.label})]},pe.id))}),Y.isValid&&e.jsx("div",{className:"mt-2 pt-2 border-t border-border",children:e.jsxs("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[e.jsx(Na,{className:"h-4 w-4"}),e.jsx("span",{className:"font-medium",children:"Token 格式正确,可以使用"})]})})]})]}),e.jsx(b,{onClick:R,disabled:N||!Y.isValid||!d,className:"w-full sm:w-auto",children:N?"更新中...":"更新自定义 Token"})]})]}),e.jsxs("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3 sm:p-4",children:[e.jsx("h4",{className:"text-sm sm:text-base font-semibold text-yellow-900 dark:text-yellow-200 mb-2",children:"安全提示"}),e.jsxs("ul",{className:"text-xs sm:text-sm text-yellow-800 dark:text-yellow-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"重新生成 Token 会创建系统随机生成的 64 位安全令牌"}),e.jsx("li",{children:"自定义 Token 必须满足所有安全要求才能使用"}),e.jsx("li",{children:"更新 Token 后,旧的 Token 将立即失效"}),e.jsx("li",{children:"请在安全的环境下查看和复制 Token"}),e.jsx("li",{children:"如果怀疑 Token 泄露,请立即重新生成或更新"}),e.jsx("li",{children:"建议使用系统生成的 Token 以获得最高安全性"})]})]})]})}function PN(){const n=fa(),{toast:r}=Xt(),[c,d]=u.useState(!1),[h,x]=u.useState(!1),[f,j]=u.useState(()=>Wt("logCacheSize")),[p,N]=u.useState(()=>Wt("wsReconnectInterval")),[v,C]=u.useState(()=>Wt("wsMaxReconnectAttempts")),[S,w]=u.useState(()=>Wt("dataSyncInterval")),[L,F]=u.useState(()=>Pf()),[B,O]=u.useState(!1),[K,H]=u.useState(!1),z=u.useRef(null);if(h)throw new Error("这是一个手动触发的测试错误,用于验证错误边界组件是否正常工作。");const V=()=>{F(Pf())},Y=A=>{const X=A[0];j(X),Pn("logCacheSize",X)},E=A=>{const X=A[0];N(X),Pn("wsReconnectInterval",X)},R=A=>{const X=A[0];C(X),Pn("wsMaxReconnectAttempts",X)},ne=A=>{const X=A[0];w(X),Pn("dataSyncInterval",X)},fe=()=>{an.clearLogs(),r({title:"日志已清除",description:"日志缓存已清空"})},Ce=()=>{const A=$N();V(),r({title:"缓存已清除",description:`已清除 ${A.clearedKeys.length} 项缓存数据`})},we=()=>{O(!0);try{const A=GN(),X=JSON.stringify(A,null,2),T=new Blob([X],{type:"application/json"}),te=URL.createObjectURL(T),_=document.createElement("a");_.href=te,_.download=`maibot-webui-settings-${new Date().toISOString().slice(0,10)}.json`,document.body.appendChild(_),_.click(),document.body.removeChild(_),URL.revokeObjectURL(te),r({title:"导出成功",description:"设置已导出为 JSON 文件"})}catch(A){console.error("导出设置失败:",A),r({title:"导出失败",description:"无法导出设置",variant:"destructive"})}finally{O(!1)}},pe=A=>{const X=A.target.files?.[0];if(!X)return;H(!0);const T=new FileReader;T.onload=te=>{try{const _=te.target?.result,me=JSON.parse(_),oe=VN(me);oe.success?(j(Wt("logCacheSize")),N(Wt("wsReconnectInterval")),C(Wt("wsMaxReconnectAttempts")),w(Wt("dataSyncInterval")),V(),r({title:"导入成功",description:`成功导入 ${oe.imported.length} 项设置${oe.skipped.length>0?`,跳过 ${oe.skipped.length} 项`:""}`}),(oe.imported.includes("theme")||oe.imported.includes("accentColor"))&&r({title:"提示",description:"部分设置需要刷新页面才能完全生效"})):r({title:"导入失败",description:"没有有效的设置项可导入",variant:"destructive"})}catch(_){console.error("导入设置失败:",_),r({title:"导入失败",description:"文件格式无效",variant:"destructive"})}finally{H(!1),z.current&&(z.current.value="")}},T.readAsText(X)},Ne=()=>{FN(),j(Aa.logCacheSize),N(Aa.wsReconnectInterval),C(Aa.wsMaxReconnectAttempts),w(Aa.dataSyncInterval),V(),r({title:"已重置",description:"所有设置已恢复为默认值,刷新页面以应用更改"})},be=async()=>{d(!0);try{const A=localStorage.getItem("access-token"),X=await fetch("/api/webui/setup/reset",{method:"POST",headers:{Authorization:`Bearer ${A}`}}),T=await X.json();X.ok&&T.success?(r({title:"重置成功",description:"即将进入初次配置向导"}),setTimeout(()=>{n({to:"/setup"})},1e3)):r({title:"重置失败",description:T.message||"无法重置配置状态",variant:"destructive"})}catch(A){console.error("重置配置状态错误:",A),r({title:"重置失败",description:"连接服务器失败",variant:"destructive"})}finally{d(!1)}};return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(Zc,{className:"h-5 w-5"}),"性能与存储"]}),e.jsxs("div",{className:"space-y-4 sm:space-y-5",children:[e.jsxs("div",{className:"rounded-lg bg-muted/50 p-3 sm:p-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("span",{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(dy,{className:"h-4 w-4"}),"本地存储使用"]}),e.jsx(b,{variant:"ghost",size:"sm",onClick:V,className:"h-7 px-2",children:e.jsx(ws,{className:"h-3 w-3"})})]}),e.jsx("div",{className:"text-2xl font-bold text-primary",children:QN(L.used)}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:[L.items," 个存储项"]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{className:"text-sm font-medium",children:"日志缓存大小"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[f," 条"]})]}),e.jsx(Ma,{value:[f],onValueChange:Y,min:100,max:5e3,step:100,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"控制日志查看器最多缓存的日志条数,较大的值会占用更多内存"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{className:"text-sm font-medium",children:"首页数据刷新间隔"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[S," 秒"]})]}),e.jsx(Ma,{value:[S],onValueChange:ne,min:10,max:120,step:5,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"控制首页统计数据的自动刷新间隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{className:"text-sm font-medium",children:"WebSocket 重连间隔"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[p/1e3," 秒"]})]}),e.jsx(Ma,{value:[p],onValueChange:E,min:1e3,max:1e4,step:500,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"日志 WebSocket 连接断开后的重连基础间隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{className:"text-sm font-medium",children:"WebSocket 最大重连次数"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[v," 次"]})]}),e.jsx(Ma,{value:[v],onValueChange:R,min:3,max:30,step:1,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"连接失败后的最大重连尝试次数"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2 pt-2",children:[e.jsxs(b,{variant:"outline",size:"sm",onClick:fe,className:"gap-2",children:[e.jsx(at,{className:"h-4 w-4"}),"清除日志缓存"]}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",className:"gap-2",children:[e.jsx(at,{className:"h-4 w-4"}),"清除本地缓存"]})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认清除本地缓存"}),e.jsx(xt,{children:"这将清除所有本地缓存的设置和数据(不包括登录凭证)。 您可能需要重新配置部分偏好设置。确定要继续吗?"})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:Ce,children:"确认清除"})]})]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(rl,{className:"h-5 w-5"}),"导入/导出设置"]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"导出当前的界面设置以便备份,或从之前导出的文件中恢复设置。"}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(b,{variant:"outline",onClick:we,disabled:B,className:"gap-2",children:[e.jsx(rl,{className:"h-4 w-4"}),B?"导出中...":"导出设置"]}),e.jsx("input",{ref:z,type:"file",accept:".json",onChange:pe,className:"hidden"}),e.jsxs(b,{variant:"outline",onClick:()=>z.current?.click(),disabled:K,className:"gap-2",children:[e.jsx(dr,{className:"h-4 w-4"}),K?"导入中...":"导入设置"]})]}),e.jsx("div",{className:"pt-2 border-t",children:e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",className:"gap-2 text-destructive hover:text-destructive",children:[e.jsx(Kc,{className:"h-4 w-4"}),"重置所有设置为默认值"]})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认重置所有设置"}),e.jsx(xt,{children:"这将把所有界面设置恢复为默认值,包括主题、颜色、动画等偏好设置。 此操作不会影响您的登录状态。确定要继续吗?"})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:Ne,children:"确认重置"})]})]})]})})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"配置向导"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsx("div",{className:"space-y-2",children:e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"重新进行初次配置向导,可以帮助您重新设置系统的基础配置。"})}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsxs(b,{variant:"outline",disabled:c,className:"gap-2",children:[e.jsx(Kc,{className:Q("h-4 w-4",c&&"animate-spin")}),"重新进行初次配置"]})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认重新配置"}),e.jsx(xt,{children:"这将带您重新进入初次配置向导。您可以重新设置系统的基础配置项。确定要继续吗?"})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:be,children:"确认重置"})]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border border-dashed border-yellow-500/50 bg-yellow-500/5 p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(ya,{className:"h-5 w-5 text-yellow-500"}),"开发者工具"]}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsx("div",{className:"space-y-2",children:e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"以下功能仅供开发调试使用,可能会导致页面崩溃或异常。"})}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsxs(b,{variant:"destructive",className:"gap-2",children:[e.jsx(ya,{className:"h-4 w-4"}),"触发测试错误"]})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认触发错误"}),e.jsx(xt,{children:"这将手动触发一个 React 错误,用于测试错误边界组件的显示效果。 页面将显示错误界面,您可以通过刷新页面或点击返回首页来恢复。"})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>x(!0),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认触发"})]})]})]})]})]})]})}function WN(){return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsx("div",{className:"rounded-lg border-2 border-primary/30 bg-gradient-to-r from-primary/5 to-primary/10 p-4 sm:p-6",children:e.jsxs("div",{className:"flex items-start gap-3 sm:gap-4",children:[e.jsx("div",{className:"flex-shrink-0 rounded-lg bg-primary/10 p-2 sm:p-3",children:e.jsx("svg",{className:"h-6 w-6 sm:h-8 sm:w-8 text-primary",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:"text-lg sm:text-xl font-bold text-foreground mb-2",children:"开源项目"}),e.jsx("p",{className:"text-sm sm:text-base text-muted-foreground mb-3",children:"本项目在 GitHub 开源,欢迎 Star ⭐ 支持!"}),e.jsxs("a",{href:"https://github.com/Mai-with-u/MaiBot-Dashboard",target:"_blank",rel:"noopener noreferrer",className:Q("inline-flex items-center gap-2 px-4 py-2 rounded-lg","bg-primary text-primary-foreground font-medium text-sm","hover:bg-primary/90 transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"),children:[e.jsx("svg",{className:"h-4 w-4",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})}),"前往 GitHub",e.jsx("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})})]})]})]})}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:["关于 ",Fu]}),e.jsxs("div",{className:"space-y-2 text-xs sm:text-sm text-muted-foreground",children:[e.jsxs("p",{children:["版本: ",Vu]}),e.jsx("p",{children:"麦麦(MaiBot)的现代化 Web 管理界面"})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"作者"}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"MaiBot 核心"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"Mai-with-u"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"WebUI"}),e.jsxs("p",{className:"text-xs sm:text-sm text-muted-foreground",children:["Mai-with-u ",e.jsx("a",{href:"https://github.com/DrSmoothl",target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"@MotricSeven"})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"技术栈"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-xs sm:text-sm text-muted-foreground",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"前端框架"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"React 19.2.0"}),e.jsx("li",{children:"TypeScript 5.7.2"}),e.jsx("li",{children:"Vite 6.0.7"}),e.jsx("li",{children:"TanStack Router 1.94.2"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"UI 组件"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"shadcn/ui"}),e.jsx("li",{children:"Radix UI"}),e.jsx("li",{children:"Tailwind CSS 3.4.17"}),e.jsx("li",{children:"Lucide Icons"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"后端"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"Python 3.12+"}),e.jsx("li",{children:"FastAPI"}),e.jsx("li",{children:"Uvicorn"}),e.jsx("li",{children:"WebSocket"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"构建工具"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"Bun / npm"}),e.jsx("li",{children:"ESLint 9.17.0"}),e.jsx("li",{children:"PostCSS"})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源库感谢"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mb-3",children:"本项目使用了以下优秀的开源库,感谢他们的贡献:"}),e.jsx(st,{className:"h-[300px] sm:h-[400px]",children:e.jsxs("div",{className:"space-y-4 pr-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"UI 框架与组件"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zt,{name:"React",description:"用户界面构建库",license:"MIT"}),e.jsx(Zt,{name:"shadcn/ui",description:"优雅的 React 组件库",license:"MIT"}),e.jsx(Zt,{name:"Radix UI",description:"无样式的可访问组件库",license:"MIT"}),e.jsx(Zt,{name:"Tailwind CSS",description:"实用优先的 CSS 框架",license:"MIT"}),e.jsx(Zt,{name:"Lucide React",description:"精美的图标库",license:"ISC"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"路由与状态管理"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zt,{name:"TanStack Router",description:"类型安全的路由库",license:"MIT"}),e.jsx(Zt,{name:"Zustand",description:"轻量级状态管理",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"表单处理"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zt,{name:"React Hook Form",description:"高性能表单库",license:"MIT"}),e.jsx(Zt,{name:"Zod",description:"TypeScript 优先的 schema 验证",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"工具库"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zt,{name:"clsx",description:"条件 className 构建工具",license:"MIT"}),e.jsx(Zt,{name:"tailwind-merge",description:"Tailwind 类名合并工具",license:"MIT"}),e.jsx(Zt,{name:"class-variance-authority",description:"组件变体管理",license:"Apache-2.0"}),e.jsx(Zt,{name:"date-fns",description:"现代化日期处理库",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"动画效果"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zt,{name:"Framer Motion",description:"React 动画库",license:"MIT"}),e.jsx(Zt,{name:"vaul",description:"抽屉组件动画",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"后端框架"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zt,{name:"FastAPI",description:"现代化 Python Web 框架",license:"MIT"}),e.jsx(Zt,{name:"Uvicorn",description:"ASGI 服务器",license:"BSD-3-Clause"}),e.jsx(Zt,{name:"Pydantic",description:"数据验证库",license:"MIT"}),e.jsx(Zt,{name:"python-multipart",description:"文件上传支持",license:"Apache-2.0"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"开发工具"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zt,{name:"TypeScript",description:"JavaScript 的超集",license:"Apache-2.0"}),e.jsx(Zt,{name:"Vite",description:"下一代前端构建工具",license:"MIT"}),e.jsx(Zt,{name:"ESLint",description:"JavaScript 代码检查工具",license:"MIT"}),e.jsx(Zt,{name:"PostCSS",description:"CSS 转换工具",license:"MIT"})]})]})]})})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源许可"}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"rounded-lg bg-primary/5 border border-primary/20 p-3 sm:p-4",children:e.jsxs("div",{className:"flex items-start gap-2 sm:gap-3",children:[e.jsx("div",{className:"flex-shrink-0 mt-0.5",children:e.jsx("div",{className:"rounded-md bg-primary/10 px-2 py-1",children:e.jsx("span",{className:"text-xs sm:text-sm font-bold text-primary",children:"GPLv3"})})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm sm:text-base font-semibold text-foreground mb-1",children:"MaiBot WebUI"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目采用 GNU General Public License v3.0 开源许可证。 您可以自由地使用、修改和分发本软件,但必须保持相同的开源许可。"})]})]})}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目依赖的所有开源库均遵循各自的开源许可证(MIT、Apache-2.0、BSD 等)。 感谢所有开源贡献者的无私奉献。"})]})]})]})}function Zt({name:n,description:r,license:c}){return e.jsxs("div",{className:"flex items-start justify-between gap-2 rounded-lg border bg-muted/30 p-2.5 sm:p-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium text-foreground truncate",children:n}),e.jsx("p",{className:"text-muted-foreground text-xs mt-0.5",children:r})]}),e.jsx("span",{className:"inline-flex items-center rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-medium text-primary flex-shrink-0",children:c})]})}function ku({value:n,current:r,onChange:c,label:d,description:h}){const x=r===n;return e.jsxs("button",{onClick:()=>c(n),className:Q("relative rounded-lg border-2 p-3 sm:p-4 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",x?"border-primary bg-accent":"border-border"),children:[x&&e.jsx("div",{className:"absolute top-2 right-2 sm:top-3 sm:right-3 h-2 w-2 rounded-full bg-primary"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-sm sm:text-base font-medium",children:d}),e.jsx("div",{className:"text-[10px] sm:text-xs text-muted-foreground",children:h})]}),e.jsxs("div",{className:"mt-2 sm:mt-3 flex gap-1",children:[n==="light"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-200"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-300"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-400"})]}),n==="dark"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-700"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-800"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-900"})]}),n==="system"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-200 to-slate-700"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-300 to-slate-800"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-400 to-slate-900"})]})]})]})}function ma({value:n,current:r,onChange:c,label:d,colorClass:h}){const x=r===n;return e.jsxs("button",{onClick:()=>c(n),className:Q("relative rounded-lg border-2 p-2 sm:p-3 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",x?"border-primary bg-accent":"border-border"),children:[x&&e.jsx("div",{className:"absolute top-1.5 right-1.5 sm:top-2 sm:right-2 h-1.5 w-1.5 sm:h-2 sm:w-2 rounded-full bg-primary"}),e.jsxs("div",{className:"flex flex-col items-center gap-1.5 sm:gap-2",children:[e.jsx("div",{className:Q("h-8 w-8 sm:h-10 sm:w-10 rounded-full",h)}),e.jsx("div",{className:"text-[10px] sm:text-xs font-medium text-center",children:d})]})]})}class e0{grad3;p;perm;constructor(r=0){this.grad3=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],this.p=[];for(let c=0;c<256;c++)this.p[c]=Math.floor(Math.random()*256);this.perm=[];for(let c=0;c<512;c++)this.perm[c]=this.p[c&255]}dot(r,c,d){return r[0]*c+r[1]*d}mix(r,c,d){return(1-d)*r+d*c}fade(r){return r*r*r*(r*(r*6-15)+10)}perlin2(r,c){const d=Math.floor(r)&255,h=Math.floor(c)&255;r-=Math.floor(r),c-=Math.floor(c);const x=this.fade(r),f=this.fade(c),j=this.perm[d]+h,p=this.perm[j],N=this.perm[j+1],v=this.perm[d+1]+h,C=this.perm[v],S=this.perm[v+1];return this.mix(this.mix(this.dot(this.grad3[p%12],r,c),this.dot(this.grad3[C%12],r-1,c),x),this.mix(this.dot(this.grad3[N%12],r,c-1),this.dot(this.grad3[S%12],r-1,c-1),x),f)}}function ep(){const n=u.useRef(null),r=u.useRef(null),c=u.useRef(void 0),d=u.useRef({mouse:{x:-10,y:0,lx:0,ly:0,sx:0,sy:0,v:0,vs:0,a:0,set:!1},lines:[],paths:[],noise:new e0(Math.random()),bounding:null});return u.useEffect(()=>{const h=r.current,x=n.current;if(!h||!x)return;const f=d.current,j=()=>{const F=h.getBoundingClientRect();f.bounding=F,x.style.width=`${F.width}px`,x.style.height=`${F.height}px`},p=()=>{if(!f.bounding)return;const{width:F,height:B}=f.bounding;f.lines=[],f.paths.forEach(ne=>ne.remove()),f.paths=[];const O=10,K=32,H=F+200,z=B+30,V=Math.ceil(H/O),Y=Math.ceil(z/K),E=(F-O*V)/2,R=(B-K*Y)/2;for(let ne=0;ne<=V;ne++){const fe=[];for(let we=0;we<=Y;we++){const pe={x:E+O*ne,y:R+K*we,wave:{x:0,y:0},cursor:{x:0,y:0,vx:0,vy:0}};fe.push(pe)}const Ce=document.createElementNS("http://www.w3.org/2000/svg","path");x.appendChild(Ce),f.paths.push(Ce),f.lines.push(fe)}},N=F=>{const{lines:B,mouse:O,noise:K}=f;B.forEach(H=>{H.forEach(z=>{const V=K.perlin2((z.x+F*.0125)*.002,(z.y+F*.005)*.0015)*12;z.wave.x=Math.cos(V)*32,z.wave.y=Math.sin(V)*16;const Y=z.x-O.sx,E=z.y-O.sy,R=Math.hypot(Y,E),ne=Math.max(175,O.vs);if(R{const O={x:F.x+F.wave.x+(B?F.cursor.x:0),y:F.y+F.wave.y+(B?F.cursor.y:0)};return O.x=Math.round(O.x*10)/10,O.y=Math.round(O.y*10)/10,O},C=()=>{const{lines:F,paths:B}=f;F.forEach((O,K)=>{let H=v(O[0],!1),z=`M ${H.x} ${H.y}`;O.forEach((V,Y)=>{const E=Y===O.length-1;H=v(V,!E),z+=`L ${H.x} ${H.y}`}),B[K].setAttribute("d",z)})},S=F=>{const{mouse:B}=f;B.sx+=(B.x-B.sx)*.1,B.sy+=(B.y-B.sy)*.1;const O=B.x-B.lx,K=B.y-B.ly,H=Math.hypot(O,K);B.v=H,B.vs+=(H-B.vs)*.1,B.vs=Math.min(100,B.vs),B.lx=B.x,B.ly=B.y,B.a=Math.atan2(K,O),h&&(h.style.setProperty("--x",`${B.sx}px`),h.style.setProperty("--y",`${B.sy}px`)),N(F),C(),c.current=requestAnimationFrame(S)},w=F=>{if(!f.bounding)return;const{mouse:B}=f;B.x=F.pageX-f.bounding.left,B.y=F.pageY-f.bounding.top+window.scrollY,B.set||(B.sx=B.x,B.sy=B.y,B.lx=B.x,B.ly=B.y,B.set=!0)},L=()=>{j(),p()};return j(),p(),window.addEventListener("resize",L),window.addEventListener("mousemove",w),c.current=requestAnimationFrame(S),()=>{window.removeEventListener("resize",L),window.removeEventListener("mousemove",w),c.current&&cancelAnimationFrame(c.current)}},[]),e.jsxs("div",{ref:r,className:"waves-background",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflow:"hidden",pointerEvents:"none"},children:[e.jsx("div",{className:"waves-cursor",style:{position:"absolute",top:0,left:0,width:"0.5rem",height:"0.5rem",background:"hsl(var(--primary) / 0.3)",borderRadius:"50%",transform:"translate3d(calc(var(--x, -0.5rem) - 50%), calc(var(--y, 50%) - 50%), 0)",willChange:"transform",pointerEvents:"none"}}),e.jsx("svg",{ref:n,style:{display:"block",width:"100%",height:"100%"},children:e.jsx("style",{children:` + path { + fill: none; + stroke: hsl(var(--primary) / 0.20); + stroke-width: 1px; + } + `})})]})}async function Te(n,r){const c={...r,credentials:"include",headers:{"Content-Type":"application/json",...r?.headers}},d=await fetch(n,c);if(d.status===401)throw window.location.href="/auth",new Error("认证失败,请重新登录");return d}function Rt(){return{"Content-Type":"application/json"}}async function t0(){try{await fetch("/api/webui/auth/logout",{method:"POST",credentials:"include"})}catch(n){console.error("登出请求失败:",n)}window.location.href="/auth"}async function Qu(){try{return(await(await fetch("/api/webui/auth/check",{method:"GET",credentials:"include"})).json()).authenticated===!0}catch{return!1}}function s0(){const[n,r]=u.useState(""),[c,d]=u.useState(!1),[h,x]=u.useState(""),[f,j]=u.useState(!0),p=fa(),{enableWavesBackground:N,setEnableWavesBackground:v}=vg(),{theme:C,setTheme:S}=Gu();u.useEffect(()=>{(async()=>{try{await Qu()&&p({to:"/"})}catch{}finally{j(!1)}})()},[p]);const L=C==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":C,F=()=>{S(L==="dark"?"light":"dark")},B=async O=>{if(O.preventDefault(),x(""),!n.trim()){x("请输入 Access Token");return}d(!0);try{const K=await fetch("/api/webui/auth/verify",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:n.trim()})}),H=await K.json();K.ok&&H.valid?H.is_first_setup?p({to:"/setup"}):p({to:"/"}):x(H.message||"Token 验证失败,请检查后重试")}catch(K){console.error("Token 验证错误:",K),x("连接服务器失败,请检查网络连接")}finally{d(!1)}};return f?e.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[N&&e.jsx(ep,{}),e.jsx("div",{className:"text-muted-foreground",children:"正在检查登录状态..."})]}):e.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[N&&e.jsx(ep,{}),e.jsxs(Ye,{className:"relative z-10 w-full max-w-md shadow-2xl backdrop-blur-xl bg-card/80 border-border/50",children:[e.jsx("button",{onClick:F,className:"absolute right-4 top-4 rounded-lg p-2 hover:bg-accent transition-colors z-10 text-foreground",title:L==="dark"?"切换到浅色模式":"切换到深色模式",children:L==="dark"?e.jsx(ag,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"}):e.jsx(lg,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"})}),e.jsxs(Nt,{className:"space-y-4 text-center",children:[e.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-2xl bg-primary/10",children:e.jsx(Gf,{className:"h-8 w-8 text-primary",strokeWidth:2,fill:"none"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(wt,{className:"text-2xl font-bold",children:"欢迎使用 MaiBot"}),e.jsx(ns,{className:"text-base",children:"请输入您的 Access Token 以继续访问系统"})]})]}),e.jsx(kt,{children:e.jsxs("form",{onSubmit:B,className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"token",className:"text-sm font-medium",children:"Access Token"}),e.jsxs("div",{className:"relative",children:[e.jsx(ng,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground",strokeWidth:2,fill:"none"}),e.jsx(ce,{id:"token",type:"password",placeholder:"请输入您的 Access Token",value:n,onChange:O=>r(O.target.value),className:Q("pl-10",h&&"border-red-500 focus-visible:ring-red-500"),disabled:c,autoFocus:!0,autoComplete:"off"})]})]}),h&&e.jsxs("div",{className:"flex items-center gap-2 rounded-md bg-red-50 p-3 text-sm text-red-600 dark:bg-red-950/50 dark:text-red-400",children:[e.jsx(Oa,{className:"h-4 w-4 flex-shrink-0",strokeWidth:2,fill:"none"}),e.jsx("span",{children:h})]}),e.jsx(b,{type:"submit",className:"w-full",disabled:c,children:c?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent"}),"验证中..."]}):"验证并进入"}),e.jsxs(Jt,{children:[e.jsx($u,{asChild:!0,children:e.jsxs("button",{className:"w-full text-center text-sm text-primary hover:text-primary/80 transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[e.jsx(uy,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我没有 Token,我该去哪里获得 Token?"]})}),e.jsxs($t,{className:"sm:max-w-md",children:[e.jsxs(Qt,{children:[e.jsxs(Yt,{className:"flex items-center gap-2",children:[e.jsx(Gf,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"如何获取 Access Token"]}),e.jsx(ds,{children:"Access Token 是访问 MaiBot WebUI 的唯一凭证,请按以下方式获取"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(my,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx("h4",{className:"font-semibold text-sm",children:"方式一:查看启动日志"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"在 MaiBot 启动时,控制台会显示 WebUI Access Token。"}),e.jsxs("div",{className:"rounded bg-background p-2 font-mono text-xs",children:[e.jsx("p",{className:"text-muted-foreground",children:"🔑 WebUI Access Token: abc123..."}),e.jsx("p",{className:"text-muted-foreground",children:"💡 请使用此 Token 登录 WebUI"})]})]})]})}),e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Da,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx("h4",{className:"font-semibold text-sm",children:"方式二:查看配置文件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Token 保存在项目根目录的配置文件中:"}),e.jsx("div",{className:"rounded bg-background p-2 font-mono text-xs break-all",children:e.jsx("code",{className:"text-primary",children:"data/webui.json"})}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["打开此文件,复制 ",e.jsx("code",{className:"px-1 py-0.5 bg-background rounded",children:"access_token"})," 字段的值"]})]})]})}),e.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Oa,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[e.jsx("p",{className:"font-semibold",children:"安全提示"}),e.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[e.jsx("li",{children:"请妥善保管您的 Token,不要泄露给他人"}),e.jsx("li",{children:"如需重置 Token,请在登录后前往系统设置"})]})]})]})})]})]})]}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsxs("button",{className:"w-full text-center text-sm text-muted-foreground hover:text-foreground transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[e.jsx(ln,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我觉得这个界面很卡怎么办?"]})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsxs(ht,{className:"flex items-center gap-2",children:[e.jsx(ln,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"关闭背景动画"]}),e.jsx(xt,{children:"背景动画可能会在低性能设备上造成卡顿。关闭动画可以显著提升界面流畅度。"})]}),e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭动画后,背景将变为纯色,但不影响任何功能的使用。您可以随时在系统设置中重新开启动画。"})}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>v(!1),children:"关闭动画"})]})]})]})]})})]}),e.jsx("div",{className:"absolute bottom-4 left-0 right-0 text-center text-xs text-muted-foreground",children:e.jsx("p",{children:BN})})]})}const Ft=u.forwardRef(({className:n,...r},c)=>e.jsx("textarea",{className:Q("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",n),ref:c,...r}));Ft.displayName="Textarea";const xr=u.forwardRef(({className:n,orientation:r="horizontal",decorative:c=!0,...d},h)=>e.jsx(Ap,{ref:h,decorative:c,orientation:r,className:Q("shrink-0 bg-border",r==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",n),...d}));xr.displayName=Ap.displayName;function a0({config:n,onChange:r}){const c=h=>{h.trim()&&!n.alias_names.includes(h.trim())&&r({...n,alias_names:[...n.alias_names,h.trim()]})},d=h=>{r({...n,alias_names:n.alias_names.filter((x,f)=>f!==h)})};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"qq_account",children:"QQ账号 *"}),e.jsx(ce,{id:"qq_account",type:"number",placeholder:"请输入机器人的QQ账号",value:n.qq_account||"",onChange:h=>r({...n,qq_account:Number(h.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人登录使用的QQ账号"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"nickname",children:"昵称 *"}),e.jsx(ce,{id:"nickname",placeholder:"请输入机器人的昵称",value:n.nickname,onChange:h=>r({...n,nickname:h.target.value})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的主要称呼名称"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{children:"别名"}),e.jsx("div",{className:"flex flex-wrap gap-2 mb-2",children:n.alias_names.map((h,x)=>e.jsxs(Je,{variant:"secondary",className:"gap-1",children:[h,e.jsx("button",{type:"button",onClick:()=>d(x),className:"ml-1 hover:text-destructive",children:e.jsx(on,{className:"h-3 w-3"})})]},x))}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{id:"alias_input",placeholder:"输入别名后按回车添加",onKeyPress:h=>{h.key==="Enter"&&(c(h.target.value),h.target.value="")}}),e.jsx(b,{type:"button",variant:"outline",onClick:()=>{const h=document.getElementById("alias_input");h&&(c(h.value),h.value="")},children:"添加"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的其他称呼,可以添加多个"})]})]})}function l0({config:n,onChange:r}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"personality",children:"人格特征 *"}),e.jsx(Ft,{id:"personality",placeholder:"描述机器人的人格特质和身份特征(建议120字以内)",value:n.personality,onChange:c=>r({...n,personality:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:是一个女大学生,现在在读大二,会刷贴吧"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"reply_style",children:"表达风格 *"}),e.jsx(Ft,{id:"reply_style",placeholder:"描述机器人说话的表达风格、表达习惯",value:n.reply_style,onChange:c=>r({...n,reply_style:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:回复平淡一些,简短一些,说中文,参考贴吧、知乎和微博的回复风格"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"interest",children:"兴趣 *"}),e.jsx(Ft,{id:"interest",placeholder:"描述机器人感兴趣的话题",value:n.interest,onChange:c=>r({...n,interest:c.target.value}),rows:2}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"会影响机器人对什么话题进行回复"})]}),e.jsx(xr,{}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"plan_style",children:"群聊说话规则 *"}),e.jsx(Ft,{id:"plan_style",placeholder:"机器人在群聊中的行为风格和规则",value:n.plan_style,onChange:c=>r({...n,plan_style:c.target.value}),rows:4}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在群聊中如何行动,例如回复频率、条件等"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"private_plan_style",children:"私聊说话规则 *"}),e.jsx(Ft,{id:"private_plan_style",placeholder:"机器人在私聊中的行为风格和规则",value:n.private_plan_style,onChange:c=>r({...n,private_plan_style:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在私聊中的行为方式"})]})]})}function n0({config:n,onChange:r}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{htmlFor:"emoji_chance",children:"表情包激活概率"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[(n.emoji_chance*100).toFixed(0),"%"]})]}),e.jsx(ce,{id:"emoji_chance",type:"range",min:"0",max:"1",step:"0.1",value:n.emoji_chance,onChange:c=>r({...n,emoji_chance:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人发送表情包的概率"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"max_reg_num",children:"最大表情包数量"}),e.jsx(ce,{id:"max_reg_num",type:"number",min:"1",max:"200",value:n.max_reg_num,onChange:c=>r({...n,max_reg_num:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人最多保存的表情包数量"})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(y,{htmlFor:"do_replace",children:"达到最大数量时替换"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"开启后会删除旧表情包,关闭则不再收集新表情包"})]}),e.jsx(Qe,{id:"do_replace",checked:n.do_replace,onCheckedChange:c=>r({...n,do_replace:c})})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),e.jsx(ce,{id:"check_interval",type:"number",min:"1",max:"120",value:n.check_interval,onChange:c=>r({...n,check_interval:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包注册、破损、删除的时间间隔"})]}),e.jsx(xr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(y,{htmlFor:"steal_emoji",children:"偷取表情包"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人将一些表情包据为己有"})]}),e.jsx(Qe,{id:"steal_emoji",checked:n.steal_emoji,onCheckedChange:c=>r({...n,steal_emoji:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(y,{htmlFor:"content_filtration",children:"启用表情包过滤"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"只保存符合要求的表情包"})]}),e.jsx(Qe,{id:"content_filtration",checked:n.content_filtration,onCheckedChange:c=>r({...n,content_filtration:c})})]}),n.content_filtration&&e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"filtration_prompt",children:"过滤要求"}),e.jsx(ce,{id:"filtration_prompt",placeholder:"例如:符合公序良俗",value:n.filtration_prompt,onChange:c=>r({...n,filtration_prompt:c.target.value})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"描述表情包应该符合的要求"})]})]})}function i0({config:n,onChange:r}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(y,{htmlFor:"enable_tool",children:"启用工具系统"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人使用各种工具增强功能"})]}),e.jsx(Qe,{id:"enable_tool",checked:n.enable_tool,onCheckedChange:c=>r({...n,enable_tool:c})})]}),e.jsx(xr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(y,{htmlFor:"enable_mood",children:"启用情绪系统"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"让机器人具有情绪变化能力"})]}),e.jsx(Qe,{id:"enable_mood",checked:n.enable_mood,onCheckedChange:c=>r({...n,enable_mood:c})})]}),n.enable_mood&&e.jsxs("div",{className:"ml-6 space-y-6 border-l-2 border-primary/20 pl-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"mood_update_threshold",children:"情绪更新阈值"}),e.jsx(ce,{id:"mood_update_threshold",type:"number",min:"0.1",max:"10",step:"0.1",value:n.mood_update_threshold||1,onChange:c=>r({...n,mood_update_threshold:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"值越高,情绪更新越慢"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"emotion_style",children:"情感特征"}),e.jsx(Ft,{id:"emotion_style",placeholder:"描述情绪的变化情况,例如:情绪较为稳定,但遭遇特定事件时起伏较大",value:n.emotion_style||"",onChange:c=>r({...n,emotion_style:c.target.value}),rows:2}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"影响机器人的情绪变化方式"})]})]}),e.jsx(xr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(y,{htmlFor:"all_global",children:"启用全局黑话模式"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人学习和使用群组黑话"})]}),e.jsx(Qe,{id:"all_global",checked:n.all_global,onCheckedChange:c=>r({...n,all_global:c})})]})]})}function r0({config:n,onChange:r}){const[c,d]=u.useState(!1);return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"mt-0.5",children:e.jsx("svg",{className:"h-5 w-5 text-blue-600 dark:text-blue-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),e.jsxs("div",{className:"flex-1 text-sm",children:[e.jsx("p",{className:"font-medium text-blue-900 dark:text-blue-100 mb-1",children:"关于硅基流动 (SiliconFlow)"}),e.jsx("p",{className:"text-blue-700 dark:text-blue-300 mb-2",children:"硅基流动提供了完整的模型覆盖,包括 DeepSeek V3、Qwen、视觉模型、语音识别和嵌入模型。 只需一个 API Key 即可使用麦麦的所有功能!"}),e.jsxs("a",{href:"https://cloud.siliconflow.cn",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-blue-600 dark:text-blue-400 hover:underline font-medium",children:["前往硅基流动获取 API Key",e.jsx(Qc,{className:"h-3 w-3"})]})]})]})}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"siliconflow_api_key",children:"SiliconFlow API Key *"}),e.jsxs("div",{className:"relative",children:[e.jsx(ce,{id:"siliconflow_api_key",type:c?"text":"password",placeholder:"sk-...",value:n.api_key,onChange:h=>r({api_key:h.target.value}),className:"font-mono pr-10"}),e.jsx(b,{type:"button",variant:"ghost",size:"sm",className:"absolute right-0 top-0 h-full px-3 hover:bg-transparent",onClick:()=>d(!c),children:c?e.jsx(or,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Ws,{className:"h-4 w-4 text-muted-foreground"})})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"请输入您的硅基流动 API 密钥。获取后,麦麦将自动配置所有必需的模型。"})]}),e.jsxs("div",{className:"rounded-lg bg-muted/50 p-4 text-sm space-y-2",children:[e.jsx("p",{className:"font-medium",children:"将自动配置以下模型:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 text-muted-foreground ml-2",children:[e.jsx("li",{children:"DeepSeek V3 - 主要对话和工具模型"}),e.jsx("li",{children:"Qwen3 30B - 高频小任务和工具调用"}),e.jsx("li",{children:"Qwen3 VL 30B - 图像识别"}),e.jsx("li",{children:"SenseVoice - 语音识别"}),e.jsx("li",{children:"BGE-M3 - 文本嵌入"}),e.jsx("li",{children:"知识库相关模型 (LPMM)"})]})]}),e.jsx("div",{className:"rounded-lg border border-amber-200 dark:border-amber-800 bg-amber-50 dark:bg-amber-950/30 p-4",children:e.jsxs("p",{className:"text-sm text-amber-900 dark:text-amber-100",children:[e.jsx("span",{className:"font-medium",children:"💡 提示:"}),'完成向导后,您可以在"系统设置 → 模型配置"中添加更多 API 提供商和模型。']})})]})}async function c0(){const n=await Te("/api/webui/config/bot",{method:"GET",headers:Rt()});if(!n.ok)throw new Error("读取Bot配置失败");const c=(await n.json()).config.bot||{};return{qq_account:c.qq_account||0,nickname:c.nickname||"",alias_names:c.alias_names||[]}}async function o0(){const n=await Te("/api/webui/config/bot",{method:"GET",headers:Rt()});if(!n.ok)throw new Error("读取人格配置失败");const c=(await n.json()).config.personality||{};return{personality:c.personality||"",reply_style:c.reply_style||"",interest:c.interest||"",plan_style:c.plan_style||"",private_plan_style:c.private_plan_style||""}}async function d0(){const n=await Te("/api/webui/config/bot",{method:"GET",headers:Rt()});if(!n.ok)throw new Error("读取表情包配置失败");const c=(await n.json()).config.emoji||{};return{emoji_chance:c.emoji_chance??.4,max_reg_num:c.max_reg_num??40,do_replace:c.do_replace??!0,check_interval:c.check_interval??10,steal_emoji:c.steal_emoji??!0,content_filtration:c.content_filtration??!1,filtration_prompt:c.filtration_prompt||""}}async function u0(){const n=await Te("/api/webui/config/bot",{method:"GET",headers:Rt()});if(!n.ok)throw new Error("读取其他配置失败");const c=(await n.json()).config,d=c.tool||{},h=c.mood||{},x=c.jargon||{};return{enable_tool:d.enable_tool??!0,enable_mood:h.enable_mood??!1,mood_update_threshold:h.mood_update_threshold,emotion_style:h.emotion_style,all_global:x.all_global??!0}}async function m0(){const n=await Te("/api/webui/config/model",{method:"GET",headers:Rt()});if(!n.ok)throw new Error("读取模型配置失败");return{api_key:((await n.json()).config.api_providers||[]).find(x=>x.name==="SiliconFlow")?.api_key||""}}async function h0(n){const r=await Te("/api/webui/config/bot/section/bot",{method:"POST",headers:Rt(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"保存Bot基础配置失败")}return await r.json()}async function x0(n){const r=await Te("/api/webui/config/bot/section/personality",{method:"POST",headers:Rt(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"保存人格配置失败")}return await r.json()}async function f0(n){const r=await Te("/api/webui/config/bot/section/emoji",{method:"POST",headers:Rt(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"保存表情包配置失败")}return await r.json()}async function p0(n){const r=[];r.push(Te("/api/webui/config/bot/section/tool",{method:"POST",headers:Rt(),body:JSON.stringify({enable_tool:n.enable_tool})})),r.push(Te("/api/webui/config/bot/section/jargon",{method:"POST",headers:Rt(),body:JSON.stringify({all_global:n.all_global})}));const c={enable_mood:n.enable_mood};n.enable_mood&&(c.mood_update_threshold=n.mood_update_threshold||1,c.emotion_style=n.emotion_style||""),r.push(Te("/api/webui/config/bot/section/mood",{method:"POST",headers:Rt(),body:JSON.stringify(c)}));const d=await Promise.all(r);for(const h of d)if(!h.ok){const x=await h.json();throw new Error(x.detail||"保存其他配置失败")}return{success:!0}}async function g0(n){const r=await Te("/api/webui/config/model",{method:"GET",headers:Rt()});if(!r.ok)throw new Error("读取模型配置失败");const d=(await r.json()).config,h=d.api_providers||[],x=h.findIndex(p=>p.name==="SiliconFlow");x>=0?h[x]={...h[x],api_key:n.api_key}:h.push({name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",api_key:n.api_key,client_type:"openai",max_retry:3,timeout:120,retry_interval:5});const f={...d,api_providers:h},j=await Te("/api/webui/config/model",{method:"POST",headers:Rt(),body:JSON.stringify(f)});if(!j.ok){const p=await j.json();throw new Error(p.detail||"保存模型配置失败")}return await j.json()}async function tp(){const n=localStorage.getItem("access-token"),r=await Te("/api/webui/setup/complete",{method:"POST",headers:{Authorization:`Bearer ${n}`}});if(!r.ok){const c=await r.json();throw new Error(c.message||"标记配置完成失败")}return await r.json()}async function so(){const n=await Te("/api/webui/system/restart",{method:"POST",headers:Rt()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"重启失败")}return await n.json()}async function j0(){const n=await Te("/api/webui/system/status",{method:"GET",headers:Rt()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取状态失败")}return await n.json()}function v0(){const n=fa(),{toast:r}=Xt(),[c,d]=u.useState(0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,N]=u.useState(!0),[v,C]=u.useState({qq_account:0,nickname:"",alias_names:[]}),[S,w]=u.useState({personality:"是一个女大学生,现在在读大二,会刷贴吧。",reply_style:"请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景。可以参考贴吧,知乎和微博的回复风格。",interest:"对技术相关话题,游戏和动漫相关话题感兴趣,也对日常话题感兴趣,不喜欢太过沉重严肃的话题",plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 +2.如果相同的内容已经被执行,请不要重复执行 +3.请控制你的发言频率,不要太过频繁的发言 +4.如果有人对你感到厌烦,请减少回复 +5.如果有人对你进行攻击,或者情绪激动,请你以合适的方法应对`,private_plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 +2.如果相同的内容已经被执行,请不要重复执行 +3.某句话如果已经被回复过,不要重复回复`}),[L,F]=u.useState({emoji_chance:.4,max_reg_num:40,do_replace:!0,check_interval:10,steal_emoji:!0,content_filtration:!1,filtration_prompt:"符合公序良俗"}),[B,O]=u.useState({enable_tool:!0,enable_mood:!1,mood_update_threshold:1,emotion_style:"情绪较为稳定,但遇遇特定事件的时候起伏较大",all_global:!0}),[K,H]=u.useState({api_key:""}),[z,V]=u.useState(!1),[Y,E]=u.useState(""),R=[{id:"bot-basic",title:"Bot基础",description:"配置机器人的基本信息",icon:ar},{id:"personality",title:"人格配置",description:"定义机器人的性格和说话风格",icon:Ic},{id:"emoji",title:"表情包",description:"配置表情包相关设置",icon:Bu},{id:"other",title:"其他设置",description:"工具、情绪系统等配置",icon:ai},{id:"siliconflow",title:"API配置",description:"配置硅基流动API密钥",icon:ng}],ne=(c+1)/R.length*100;u.useEffect(()=>{(async()=>{try{N(!0);const[X,T,te,_,me]=await Promise.all([c0(),o0(),d0(),u0(),m0()]);C(X),w(T),F(te),O(_),H(me)}catch(X){r({title:"加载配置失败",description:X instanceof Error?X.message:"无法加载现有配置,将使用默认值",variant:"destructive"})}finally{N(!1)}})()},[r]);const fe=async()=>{j(!0);try{switch(c){case 0:await h0(v);break;case 1:await x0(S);break;case 2:await f0(L);break;case 3:await p0(B);break;case 4:await g0(K);break}return r({title:"保存成功",description:`${R[c].title}配置已保存`}),!0}catch(A){return r({title:"保存失败",description:A instanceof Error?A.message:"未知错误",variant:"destructive"}),!1}finally{j(!1)}},Ce=async()=>{await fe()&&c{c>0&&d(c-1)},pe=async()=>{x(!0),V(!0);try{if(E("正在保存API配置..."),!await fe()){x(!1),V(!1);return}E("正在完成初始化..."),await tp(),E("正在重启麦麦..."),await so(),r({title:"配置完成",description:"麦麦正在重启以应用新配置..."}),E("等待麦麦重启完成...");const X=60;let T=0,te=!1;for(;TsetTimeout(_,1e3));try{(await j0()).running&&(te=!0,E("重启成功!正在跳转..."))}catch{T++}}if(!te)throw new Error("重启超时,请手动检查麦麦状态");setTimeout(()=>{n({to:"/"})},1e3)}catch(A){V(!1),r({title:"配置失败",description:A instanceof Error?A.message:"未知错误",variant:"destructive"})}finally{x(!1)}},Ne=async()=>{try{await tp(),n({to:"/"})}catch(A){r({title:"跳过失败",description:A instanceof Error?A.message:"未知错误",variant:"destructive"})}},be=()=>{switch(c){case 0:return e.jsx(a0,{config:v,onChange:C});case 1:return e.jsx(l0,{config:S,onChange:w});case 2:return e.jsx(n0,{config:L,onChange:F});case 3:return e.jsx(i0,{config:B,onChange:O});case 4:return e.jsx(r0,{config:K,onChange:H});default:return null}};return e.jsxs("div",{className:"relative flex min-h-screen flex-col items-center justify-center overflow-hidden bg-gradient-to-br from-primary/5 via-background to-secondary/5 p-4 md:p-6",children:[z&&e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm",children:e.jsxs("div",{className:"mx-auto flex max-w-md flex-col items-center space-y-6 rounded-lg border bg-card p-8 text-center shadow-lg",children:[e.jsx("div",{className:"flex h-20 w-20 items-center justify-center rounded-full bg-primary/10",children:e.jsx(Ss,{className:"h-10 w-10 animate-spin text-primary"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),e.jsx("p",{className:"text-muted-foreground",children:Y})]}),e.jsx("div",{className:"w-full",children:e.jsx("div",{className:"h-2 w-full overflow-hidden rounded-full bg-secondary",children:e.jsx("div",{className:"h-full w-full animate-pulse bg-primary",style:{animation:"pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite"}})})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"请稍候,这可能需要一分钟..."})]})}),e.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[e.jsx("div",{className:"absolute left-1/4 top-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-primary/5 blur-3xl"}),e.jsx("div",{className:"absolute right-1/4 bottom-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-secondary/5 blur-3xl"})]}),p?e.jsxs("div",{className:"relative z-10 text-center",children:[e.jsx("div",{className:"mx-auto mb-4 flex h-16 w-16 items-center justify-center",children:e.jsx("div",{className:"h-12 w-12 animate-spin rounded-full border-4 border-primary border-t-transparent"})}),e.jsx("p",{className:"text-lg font-medium",children:"加载配置中..."}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"正在读取现有配置"})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"relative z-10 w-full max-w-4xl",children:[e.jsxs("div",{className:"mb-6 md:mb-8 text-center",children:[e.jsx("div",{className:"mx-auto mb-4 flex h-12 w-12 md:h-16 md:w-16 items-center justify-center rounded-2xl bg-primary/10",children:e.jsx(hy,{className:"h-6 w-6 md:h-8 md:w-8 text-primary",strokeWidth:2,fill:"none"})}),e.jsx("h1",{className:"mb-2 text-2xl md:text-3xl font-bold",children:"首次配置向导"}),e.jsxs("p",{className:"text-sm md:text-base text-muted-foreground",children:["让我们一起完成 ",Fu," 的初始配置"]})]}),e.jsxs("div",{className:"mb-6 md:mb-8",children:[e.jsxs("div",{className:"mb-2 flex items-center justify-between text-xs md:text-sm",children:[e.jsxs("span",{className:"text-muted-foreground",children:["步骤 ",c+1," / ",R.length]}),e.jsxs("span",{className:"font-medium text-primary",children:[Math.round(ne),"%"]})]}),e.jsx(yr,{value:ne,className:"h-2"})]}),e.jsx("div",{className:"mb-6 md:mb-8 flex justify-between",children:R.map((A,X)=>{const T=A.icon;return e.jsxs("div",{className:Q("flex flex-1 flex-col items-center gap-1 md:gap-2",Xn({to:"/"}),className:"gap-2 w-full sm:w-auto",children:[e.jsx(to,{className:"h-4 w-4"}),"返回首页"]}),e.jsxs(b,{size:"lg",variant:"outline",onClick:()=>window.history.back(),className:"gap-2 w-full sm:w-auto",children:[e.jsx(ti,{className:"h-4 w-4"}),"返回上一页"]})]}),e.jsx("div",{className:"mt-12 pt-8 border-t border-border",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:"如果您认为这是一个错误,请联系系统管理员"})})]})})}const qe=Jb,Ge=Ib,Be=u.forwardRef(({className:n,children:r,...c},d)=>e.jsxs(Gp,{ref:d,className:Q("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",n),...c,children:[r,e.jsx(Qb,{asChild:!0,children:e.jsx(Rl,{className:"h-4 w-4 opacity-50"})})]}));Be.displayName=Gp.displayName;const _g=u.forwardRef(({className:n,...r},c)=>e.jsx(Vp,{ref:c,className:Q("flex cursor-default items-center justify-center py-1",n),...r,children:e.jsx(ur,{className:"h-4 w-4"})}));_g.displayName=Vp.displayName;const Sg=u.forwardRef(({className:n,...r},c)=>e.jsx(Fp,{ref:c,className:Q("flex cursor-default items-center justify-center py-1",n),...r,children:e.jsx(Rl,{className:"h-4 w-4"})}));Sg.displayName=Fp.displayName;const He=u.forwardRef(({className:n,children:r,position:c="popper",...d},h)=>e.jsx(Yb,{children:e.jsxs($p,{ref:h,className:Q("relative z-[100] max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-hidden rounded-md border border-border bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",c==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",n),position:c,...d,children:[e.jsx(_g,{}),e.jsx(Xb,{className:Q("p-1",c==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:r}),e.jsx(Sg,{})]})}));He.displayName=$p.displayName;const b0=u.forwardRef(({className:n,...r},c)=>e.jsx(Qp,{ref:c,className:Q("px-2 py-1.5 text-sm font-semibold",n),...r}));b0.displayName=Qp.displayName;const ie=u.forwardRef(({className:n,children:r,...c},d)=>e.jsxs(Yp,{ref:d,className:Q("relative flex w-full cursor-default select-none items-center rounded-sm py-2 pl-2 pr-8 text-sm outline-none bg-white dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800 focus:bg-gray-100 dark:focus:bg-gray-800 data-[disabled]:pointer-events-none data-[disabled]:opacity-50",n),...c,children:[e.jsx("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(Kb,{children:e.jsx(Na,{className:"h-4 w-4"})})}),e.jsx(Zb,{children:r})]}));ie.displayName=Yp.displayName;const y0=u.forwardRef(({className:n,...r},c)=>e.jsx(Xp,{ref:c,className:Q("-mx-1 my-1 h-px bg-muted",n),...r}));y0.displayName=Xp.displayName;const Ua=kb,Ba=Tb,_a=u.forwardRef(({className:n,align:r="center",sideOffset:c=4,...d},h)=>e.jsx(Cb,{children:e.jsx(Mp,{ref:h,align:r,sideOffset:c,className:Q("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]",n),...d})}));_a.displayName=Mp.displayName;const Ul="/api/webui/config";async function sp(){const r=await(await Te(`${Ul}/bot`)).json();if(!r.success)throw new Error("获取配置数据失败");return r.config}async function ei(){const r=await(await Te(`${Ul}/model`)).json();if(!r.success)throw new Error("获取模型配置数据失败");return r.config}async function ap(n){const c=await(await Te(`${Ul}/bot`,{method:"POST",body:JSON.stringify(n)})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function N0(){const r=await(await Te(`${Ul}/bot/raw`)).json();if(!r.success)throw new Error("获取配置源代码失败");return r.content}async function w0(n){const c=await(await Te(`${Ul}/bot/raw`,{method:"POST",body:JSON.stringify({raw_content:n})})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function eo(n){const c=await(await Te(`${Ul}/model`,{method:"POST",body:JSON.stringify(n)})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function _0(n,r){const d=await(await Te(`${Ul}/bot/section/${n}`,{method:"POST",body:JSON.stringify(r)})).json();if(!d.success)throw new Error(d.message||`保存配置节 ${n} 失败`)}async function Ou(n,r){const d=await(await Te(`${Ul}/model/section/${n}`,{method:"POST",body:JSON.stringify(r)})).json();if(!d.success)throw new Error(d.message||`保存配置节 ${n} 失败`)}async function S0(n,r="openai",c="/models"){const d=new URLSearchParams({provider_name:n,parser:r,endpoint:c}),h=await Te(`/api/webui/models/list?${d}`);if(!h.ok){const f=await h.json().catch(()=>({}));throw new Error(f.detail||`获取模型列表失败 (${h.status})`)}const x=await h.json();if(!x.success)throw new Error("获取模型列表失败");return x.models}async function C0(n){const r=new URLSearchParams({provider_name:n}),c=await Te(`/api/webui/models/test-connection-by-name?${r}`,{method:"POST"});if(!c.ok){const d=await c.json().catch(()=>({}));throw new Error(d.detail||`测试连接失败 (${c.status})`)}return await c.json()}const k0=si("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"}}),cl=u.forwardRef(({className:n,variant:r,...c},d)=>e.jsx("div",{ref:d,role:"alert",className:Q(k0({variant:r}),n),...c}));cl.displayName="Alert";const T0=u.forwardRef(({className:n,...r},c)=>e.jsx("h5",{ref:c,className:Q("mb-1 font-medium leading-none tracking-tight",n),...r}));T0.displayName="AlertTitle";const ol=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("text-sm [&_p]:leading-relaxed",n),...r}));ol.displayName="AlertDescription";function Yu({onRestartComplete:n,onRestartFailed:r}){const[c,d]=u.useState(0),[h,x]=u.useState("restarting"),[f,j]=u.useState(0),[p,N]=u.useState(0);u.useEffect(()=>{const S=setInterval(()=>{d(F=>F>=90?F:F+1)},200),w=setInterval(()=>{j(F=>F+1)},1e3),L=setTimeout(()=>{x("checking"),v()},3e3);return()=>{clearInterval(S),clearInterval(w),clearTimeout(L)}},[]);const v=()=>{const w=async()=>{try{if(N(F=>F+1),(await fetch("/api/webui/system/status",{method:"GET",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(3e3)})).ok)d(100),x("success"),setTimeout(()=>{n?.()},1500);else throw new Error("Status check failed")}catch{p<60?setTimeout(w,2e3):(x("failed"),r?.())}};w()},C=S=>{const w=Math.floor(S/60),L=S%60;return`${w}:${L.toString().padStart(2,"0")}`};return e.jsx("div",{className:"fixed inset-0 bg-background/95 backdrop-blur-sm z-50 flex items-center justify-center",children:e.jsxs("div",{className:"max-w-md w-full mx-4 space-y-8",children:[e.jsxs("div",{className:"flex flex-col items-center space-y-4",children:[h==="restarting"&&e.jsxs(e.Fragment,{children:[e.jsx(Ss,{className:"h-16 w-16 text-primary animate-spin"}),e.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"请稍候,麦麦正在重启中..."})]}),h==="checking"&&e.jsxs(e.Fragment,{children:[e.jsx(Ss,{className:"h-16 w-16 text-primary animate-spin"}),e.jsx("h2",{className:"text-2xl font-bold",children:"检查服务状态"}),e.jsxs("p",{className:"text-muted-foreground text-center",children:["等待服务恢复... (尝试 ",p,"/60)"]})]}),h==="success"&&e.jsxs(e.Fragment,{children:[e.jsx(ha,{className:"h-16 w-16 text-green-500"}),e.jsx("h2",{className:"text-2xl font-bold",children:"重启成功"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"正在跳转到登录页面..."})]}),h==="failed"&&e.jsxs(e.Fragment,{children:[e.jsx(Oa,{className:"h-16 w-16 text-destructive"}),e.jsx("h2",{className:"text-2xl font-bold",children:"重启超时"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"服务未能在预期时间内恢复,请手动检查或刷新页面"})]})]}),h!=="failed"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(yr,{value:c,className:"h-2"}),e.jsxs("div",{className:"flex justify-between text-sm text-muted-foreground",children:[e.jsxs("span",{children:[c,"%"]}),e.jsxs("span",{children:["已用时: ",C(f)]})]})]}),e.jsx("div",{className:"bg-muted/50 rounded-lg p-4 space-y-2",children:e.jsxs("p",{className:"text-sm text-muted-foreground",children:[h==="restarting"&&"🔄 配置已保存,正在重启主程序...",h==="checking"&&"⏳ 正在等待服务恢复,请勿关闭页面...",h==="success"&&"✅ 配置已生效,服务运行正常",h==="failed"&&"⚠️ 如果长时间无响应,请尝试手动重启"]})}),h==="failed"&&e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{onClick:()=>window.location.reload(),className:"flex-1 px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary/90",children:"刷新页面"}),e.jsx("button",{onClick:()=>{x("checking"),N(0),v()},className:"flex-1 px-4 py-2 bg-secondary text-secondary-foreground rounded-md hover:bg-secondary/90",children:"重试检测"})]})]})})}const E0={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,r){let c;if(!r.inString&&(c=n.match(/^('''|"""|'|")/))&&(r.stringType=c[0],r.inString=!0),n.sol()&&!r.inString&&r.inArray===0&&(r.lhs=!0),r.inString){for(;r.inString;)if(n.match(r.stringType))r.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return r.lhs?"property":"string"}else{if(r.inArray&&n.peek()==="]")return n.next(),r.inArray--,"bracket";if(r.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(r.lhs&&n.eatWhile(function(d){return d!="="&&d!=" "}))return"property";if(r.lhs&&n.peek()==="=")return n.next(),r.lhs=!1,null;if(!r.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!r.lhs&&(n.match("true")||n.match("false")))return"atom";if(!r.lhs&&n.peek()==="[")return r.inArray++,n.next(),"bracket";if(!r.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}},z0={python:[By()],json:[Hy(),qy()],toml:[Uy.define(E0)],text:[]};function A0({value:n,onChange:r,language:c="text",readOnly:d=!1,height:h="400px",minHeight:x,maxHeight:f,placeholder:j,theme:p="dark",className:N=""}){const[v,C]=u.useState(!1);if(u.useEffect(()=>{C(!0)},[]),!v)return e.jsx("div",{className:`rounded-md border bg-muted animate-pulse ${N}`,style:{height:h,minHeight:x,maxHeight:f}});const S=[...z0[c]||[],Qf.lineWrapping];return d&&S.push(Qf.editable.of(!1)),e.jsx("div",{className:`rounded-md overflow-hidden border ${N}`,children:e.jsx(Gy,{value:n,height:h,minHeight:x,maxHeight:f,theme:p==="dark"?Vy:void 0,extensions:S,onChange:r,placeholder:j,basicSetup:{lineNumbers:!0,highlightActiveLineGutter:!0,highlightSpecialChars:!0,history:!0,foldGutter:!0,drawSelection:!0,dropCursor:!0,allowMultipleSelections:!0,indentOnInput:!0,syntaxHighlighting:!0,bracketMatching:!0,closeBrackets:!0,autocompletion:!0,rectangularSelection:!0,crosshairCursor:!0,highlightActiveLine:!0,highlightSelectionMatches:!0,closeBracketsKeymap:!0,defaultKeymap:!0,searchKeymap:!0,historyKeymap:!0,foldKeymap:!0,completionKeymap:!0,lintKeymap:!0}})})}function M0(){const[n,r]=u.useState(!0),[c,d]=u.useState(!1),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,N]=u.useState(!1),[v,C]=u.useState(!1),[S,w]=u.useState("visual"),[L,F]=u.useState(""),[B,O]=u.useState(!1),{toast:K}=Xt(),[H,z]=u.useState(null),[V,Y]=u.useState(null),[E,R]=u.useState(null),[ne,fe]=u.useState(null),[Ce,we]=u.useState(null),[pe,Ne]=u.useState(null),[be,A]=u.useState(null),[X,T]=u.useState(null),[te,_]=u.useState(null),[me,oe]=u.useState(null),[ae,xe]=u.useState(null),[ve,de]=u.useState(null),[G,W]=u.useState(null),[U,ee]=u.useState(null),[Se,Me]=u.useState(null),[tt,Xe]=u.useState(null),[Ut,Bt]=u.useState(null),[re,ke]=u.useState(null),Pe=u.useRef(null),Fe=u.useRef(!0),ts=u.useRef({}),As=u.useCallback(async()=>{try{const _e=await N0();F(_e),O(!1)}catch(_e){K({variant:"destructive",title:"加载失败",description:_e instanceof Error?_e.message:"加载源代码失败"})}},[K]),js=u.useCallback(async()=>{try{r(!0);const _e=await sp();ts.current=_e,z(_e.bot),Y(_e.personality);const je=_e.chat;je.talk_value_rules||(je.talk_value_rules=[]),R(je),fe(_e.expression),we(_e.emoji),Ne(_e.memory),A(_e.tool),T(_e.mood),_(_e.voice),oe(_e.lpmm_knowledge),xe(_e.keyword_reaction),de(_e.response_post_process),W(_e.chinese_typo),ee(_e.response_splitter),Me(_e.log),Xe(_e.debug),Bt(_e.maim_message),ke(_e.telemetry),j(!1),Fe.current=!1,await As()}catch(_e){console.error("加载配置失败:",_e),K({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}finally{r(!1)}},[K,As]);u.useEffect(()=>{js()},[js]);const Ke=u.useCallback(async(_e,je)=>{if(!Fe.current)try{x(!0),await _0(_e,je),j(!1)}catch(yt){console.error(`自动保存 ${_e} 失败:`,yt),j(!0)}finally{x(!1)}},[]),D=u.useCallback((_e,je)=>{Fe.current||(j(!0),Pe.current&&clearTimeout(Pe.current),Pe.current=setTimeout(()=>{Ke(_e,je)},2e3))},[Ke]);u.useEffect(()=>{H&&!Fe.current&&D("bot",H)},[H,D]),u.useEffect(()=>{V&&!Fe.current&&D("personality",V)},[V,D]),u.useEffect(()=>{E&&!Fe.current&&D("chat",E)},[E,D]),u.useEffect(()=>{ne&&!Fe.current&&D("expression",ne)},[ne,D]),u.useEffect(()=>{Ce&&!Fe.current&&D("emoji",Ce)},[Ce,D]),u.useEffect(()=>{pe&&!Fe.current&&D("memory",pe)},[pe,D]),u.useEffect(()=>{be&&!Fe.current&&D("tool",be)},[be,D]),u.useEffect(()=>{X&&!Fe.current&&D("mood",X)},[X,D]),u.useEffect(()=>{te&&!Fe.current&&D("voice",te)},[te,D]),u.useEffect(()=>{me&&!Fe.current&&D("lpmm_knowledge",me)},[me,D]),u.useEffect(()=>{ae&&!Fe.current&&D("keyword_reaction",ae)},[ae,D]),u.useEffect(()=>{ve&&!Fe.current&&D("response_post_process",ve)},[ve,D]),u.useEffect(()=>{G&&!Fe.current&&D("chinese_typo",G)},[G,D]),u.useEffect(()=>{U&&!Fe.current&&D("response_splitter",U)},[U,D]),u.useEffect(()=>{Se&&!Fe.current&&D("log",Se)},[Se,D]),u.useEffect(()=>{tt&&!Fe.current&&D("debug",tt)},[tt,D]),u.useEffect(()=>{Ut&&!Fe.current&&D("maim_message",Ut)},[Ut,D]),u.useEffect(()=>{re&&!Fe.current&&D("telemetry",re)},[re,D]);const De=async()=>{try{d(!0),await w0(L),j(!1),O(!1),K({title:"保存成功",description:"配置已保存"}),await js()}catch(_e){O(!0),K({variant:"destructive",title:"保存失败",description:_e instanceof Error?_e.message:"保存配置失败"})}finally{d(!1)}},ze=async _e=>{if(f){K({variant:"destructive",title:"切换失败",description:"请先保存当前更改"});return}if(w(_e),_e==="source")await As();else try{const je=await sp();ts.current=je,z(je.bot),Y(je.personality);const yt=je.chat;yt.talk_value_rules||(yt.talk_value_rules=[]),R(yt),fe(je.expression),we(je.emoji),Ne(je.memory),A(je.tool),T(je.mood),_(je.voice),oe(je.lpmm_knowledge),xe(je.keyword_reaction),de(je.response_post_process),W(je.chinese_typo),ee(je.response_splitter),Me(je.log),Xe(je.debug),Bt(je.maim_message),ke(je.telemetry),j(!1)}catch(je){console.error("加载配置失败:",je),K({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}},Ve=async()=>{try{d(!0),Pe.current&&clearTimeout(Pe.current);const _e={...ts.current,bot:H,personality:V,chat:E,expression:ne,emoji:Ce,memory:pe,tool:be,mood:X,voice:te,lpmm_knowledge:me,keyword_reaction:ae,response_post_process:ve,chinese_typo:G,response_splitter:U,log:Se,debug:tt,maim_message:Ut,telemetry:re};await ap(_e),j(!1),K({title:"保存成功",description:"麦麦主程序配置已保存"})}catch(_e){console.error("保存配置失败:",_e),K({title:"保存失败",description:_e.message,variant:"destructive"})}finally{d(!1)}},At=async()=>{try{N(!0),so().catch(()=>{}),C(!0)}catch(_e){console.error("重启失败:",_e),C(!1),K({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),N(!1)}},We=async()=>{try{d(!0),Pe.current&&clearTimeout(Pe.current);const _e={...ts.current,bot:H,personality:V,chat:E,expression:ne,emoji:Ce,memory:pe,tool:be,mood:X,voice:te,lpmm_knowledge:me,keyword_reaction:ae,response_post_process:ve,chinese_typo:G,response_splitter:U,log:Se,debug:tt,maim_message:Ut,telemetry:re};await ap(_e),j(!1),K({title:"保存成功",description:"配置已保存,即将重启麦麦..."}),await new Promise(je=>setTimeout(je,500)),await At()}catch(_e){console.error("保存失败:",_e),K({title:"保存失败",description:_e.message,variant:"destructive"})}finally{d(!1)}},ss=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},gt=()=>{C(!1),N(!1),K({title:"重启失败",description:"服务器未能在预期时间内恢复,请手动检查",variant:"destructive"})};return n?e.jsx(st,{className:"h-full",children:e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):e.jsx(st,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:gap-4",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("h1",{className:"text-xl sm:text-2xl md:text-3xl font-bold",children:"麦麦主程序配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 text-xs sm:text-sm",children:"管理麦麦的核心功能和行为设置"})]}),e.jsxs("div",{className:"flex gap-2 flex-shrink-0",children:[e.jsxs(b,{onClick:S==="visual"?Ve:De,disabled:c||h||!f||p,size:"sm",variant:"outline",className:"w-20 sm:w-24",children:[e.jsx(jr,{className:"h-4 w-4 flex-shrink-0",strokeWidth:2,fill:"none"}),e.jsx("span",{className:"ml-1 truncate text-xs sm:text-sm",children:c?"保存中":h?"自动":f?"保存":"已保存"})]}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsxs(b,{disabled:c||h||p,size:"sm",className:"w-20 sm:w-28",children:[e.jsx(gr,{className:"h-4 w-4 flex-shrink-0"}),e.jsx("span",{className:"ml-1 truncate text-xs sm:text-sm",children:p?"重启中":f?"保存重启":"重启"})]})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认重启麦麦?"}),e.jsx(xt,{asChild:!0,children:e.jsx("div",{children:e.jsx("p",{children:f?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"})})})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:f?We:At,children:f?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsx("div",{className:"flex",children:e.jsx(La,{value:S,onValueChange:_e=>ze(_e),className:"w-full",children:e.jsxs(wa,{className:"h-8 sm:h-9 w-full grid grid-cols-2",children:[e.jsxs(it,{value:"visual",className:"text-xs sm:text-sm",children:[e.jsx(py,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"可视化编辑"]}),e.jsxs(it,{value:"source",className:"text-xs sm:text-sm",children:[e.jsx(gy,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"源代码编辑"]})]})})})]}),e.jsxs(cl,{children:[e.jsx(Ra,{className:"h-4 w-4"}),e.jsxs(ol,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),S==="source"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs(cl,{children:[e.jsx(Ra,{className:"h-4 w-4"}),e.jsxs(ol,{children:[e.jsx("strong",{children:"源代码模式(高级功能):"}),"直接编辑 TOML 配置文件。此功能仅适用于熟悉 TOML 语法的高级用户。保存时会在后端验证格式,只有格式完全正确才能保存。",B&&e.jsx("span",{className:"text-destructive font-semibold ml-2",children:"⚠️ 上次保存失败,请检查 TOML 格式"})]})]}),e.jsx(A0,{value:L,onChange:_e=>{F(_e),j(!0),B&&O(!1)},language:"toml",theme:"dark",height:"calc(100vh - 280px)",minHeight:"500px",placeholder:"TOML 配置内容"})]}),S==="visual"&&e.jsx(e.Fragment,{children:e.jsxs(La,{defaultValue:"bot",className:"w-full",children:[e.jsxs(wa,{className:"flex flex-wrap h-auto gap-1 p-1 sm:grid sm:grid-cols-5 lg:grid-cols-10",children:[e.jsx(it,{value:"bot",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"基本信息"}),e.jsx(it,{value:"personality",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"人格"}),e.jsx(it,{value:"chat",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"聊天"}),e.jsx(it,{value:"expression",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"表达"}),e.jsx(it,{value:"features",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"功能"}),e.jsx(it,{value:"processing",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"处理"}),e.jsx(it,{value:"mood",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"情绪"}),e.jsx(it,{value:"voice",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"语音"}),e.jsx(it,{value:"lpmm",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"知识库"}),e.jsx(it,{value:"other",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"其他"})]}),e.jsx(zt,{value:"bot",className:"space-y-4",children:H&&e.jsx(D0,{config:H,onChange:z})}),e.jsx(zt,{value:"personality",className:"space-y-4",children:V&&e.jsx(O0,{config:V,onChange:Y})}),e.jsx(zt,{value:"chat",className:"space-y-4",children:E&&e.jsx(R0,{config:E,onChange:R})}),e.jsx(zt,{value:"expression",className:"space-y-4",children:ne&&e.jsx(U0,{config:ne,onChange:fe})}),e.jsx(zt,{value:"features",className:"space-y-4",children:Ce&&pe&&be&&e.jsx(B0,{emojiConfig:Ce,memoryConfig:pe,toolConfig:be,onEmojiChange:we,onMemoryChange:Ne,onToolChange:A})}),e.jsx(zt,{value:"processing",className:"space-y-4",children:ae&&ve&&G&&U&&e.jsx(H0,{keywordReactionConfig:ae,responsePostProcessConfig:ve,chineseTypoConfig:G,responseSplitterConfig:U,onKeywordReactionChange:xe,onResponsePostProcessChange:de,onChineseTypoChange:W,onResponseSplitterChange:ee})}),e.jsx(zt,{value:"mood",className:"space-y-4",children:X&&e.jsx(q0,{config:X,onChange:T})}),e.jsx(zt,{value:"voice",className:"space-y-4",children:te&&e.jsx(G0,{config:te,onChange:_})}),e.jsx(zt,{value:"lpmm",className:"space-y-4",children:me&&e.jsx(V0,{config:me,onChange:oe})}),e.jsxs(zt,{value:"other",className:"space-y-4",children:[Se&&e.jsx(F0,{config:Se,onChange:Me}),tt&&e.jsx($0,{config:tt,onChange:Xe}),Ut&&e.jsx(Q0,{config:Ut,onChange:Bt}),re&&e.jsx(Y0,{config:re,onChange:ke})]})]})}),v&&e.jsx(Yu,{onRestartComplete:ss,onRestartFailed:gt})]})})}function D0({config:n,onChange:r}){const c=()=>{r({...n,platforms:[...n.platforms,""]})},d=p=>{r({...n,platforms:n.platforms.filter((N,v)=>v!==p)})},h=(p,N)=>{const v=[...n.platforms];v[p]=N,r({...n,platforms:v})},x=()=>{r({...n,alias_names:[...n.alias_names,""]})},f=p=>{r({...n,alias_names:n.alias_names.filter((N,v)=>v!==p)})},j=(p,N)=>{const v=[...n.alias_names];v[p]=N,r({...n,alias_names:v})};return e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"基本信息"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"platform",children:"平台"}),e.jsx(ce,{id:"platform",value:n.platform,onChange:p=>r({...n,platform:p.target.value}),placeholder:"qq"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"qq_account",children:"QQ账号"}),e.jsx(ce,{id:"qq_account",value:n.qq_account,onChange:p=>r({...n,qq_account:p.target.value}),placeholder:"123456789"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"nickname",children:"昵称"}),e.jsx(ce,{id:"nickname",value:n.nickname,onChange:p=>r({...n,nickname:p.target.value}),placeholder:"麦麦"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{children:"其他平台账号"}),e.jsxs(b,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(hs,{className:"h-4 w-4 mr-1"}),"添加"]})]}),e.jsxs("div",{className:"space-y-2",children:[n.platforms.map((p,N)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{value:p,onChange:v=>h(N,v.target.value),placeholder:"wx:114514"}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(at,{className:"h-4 w-4"})})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:['确定要删除平台账号 "',p||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>d(N),children:"删除"})]})]})]})]},N)),n.platforms.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无其他平台账号"})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{children:"别名"}),e.jsxs(b,{onClick:x,size:"sm",variant:"outline",children:[e.jsx(hs,{className:"h-4 w-4 mr-1"}),"添加"]})]}),e.jsxs("div",{className:"space-y-2",children:[n.alias_names.map((p,N)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{value:p,onChange:v=>j(N,v.target.value),placeholder:"小麦"}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(at,{className:"h-4 w-4"})})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:['确定要删除别名 "',p||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>f(N),children:"删除"})]})]})]})]},N)),n.alias_names.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无别名"})]})]})]})]})})}function O0({config:n,onChange:r}){const c=()=>{r({...n,states:[...n.states,""]})},d=x=>{r({...n,states:n.states.filter((f,j)=>j!==x)})},h=(x,f)=>{const j=[...n.states];j[x]=f,r({...n,states:j})};return e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"人格设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"personality",children:"人格特质"}),e.jsx(Ft,{id:"personality",value:n.personality,onChange:x=>r({...n,personality:x.target.value}),placeholder:"描述人格特质和身份特征(建议120字以内)",rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"建议120字以内,描述人格特质和身份特征"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"reply_style",children:"表达风格"}),e.jsx(Ft,{id:"reply_style",value:n.reply_style,onChange:x=>r({...n,reply_style:x.target.value}),placeholder:"描述说话的表达风格和习惯",rows:3})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"interest",children:"兴趣"}),e.jsx(Ft,{id:"interest",value:n.interest,onChange:x=>r({...n,interest:x.target.value}),placeholder:"会影响麦麦对什么话题进行回复",rows:2})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"plan_style",children:"说话规则与行为风格"}),e.jsx(Ft,{id:"plan_style",value:n.plan_style,onChange:x=>r({...n,plan_style:x.target.value}),placeholder:"麦麦的说话规则和行为风格",rows:5})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"visual_style",children:"识图规则"}),e.jsx(Ft,{id:"visual_style",value:n.visual_style,onChange:x=>r({...n,visual_style:x.target.value}),placeholder:"识图时的处理规则",rows:3})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"private_plan_style",children:"私聊规则"}),e.jsx(Ft,{id:"private_plan_style",value:n.private_plan_style,onChange:x=>r({...n,private_plan_style:x.target.value}),placeholder:"私聊的说话规则和行为风格",rows:4})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{children:"状态列表(人格多样性)"}),e.jsxs(b,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(hs,{className:"h-4 w-4 mr-1"}),"添加状态"]})]}),e.jsx("div",{className:"space-y-2",children:n.states.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Ft,{value:x,onChange:j=>h(f,j.target.value),placeholder:"描述一个人格状态",rows:2}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(at,{className:"h-4 w-4"})})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsx(xt,{children:"确定要删除这个人格状态吗?此操作无法撤销。"})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>d(f),children:"删除"})]})]})]})]},f))})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"state_probability",children:"状态替换概率"}),e.jsx(ce,{id:"state_probability",type:"number",step:"0.1",min:"0",max:"1",value:n.state_probability,onChange:x=>r({...n,state_probability:parseFloat(x.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"每次构建人格时替换 personality 的概率(0.0-1.0)"})]})]})]})})}function R0({config:n,onChange:r}){const c=()=>{r({...n,talk_value_rules:[...n.talk_value_rules,{target:"",time:"00:00-23:59",value:1}]})},d=j=>{r({...n,talk_value_rules:n.talk_value_rules.filter((p,N)=>N!==j)})},h=(j,p,N)=>{const v=[...n.talk_value_rules];v[j]={...v[j],[p]:N},r({...n,talk_value_rules:v})},x=({value:j,onChange:p})=>{const[N,v]=u.useState("00"),[C,S]=u.useState("00"),[w,L]=u.useState("23"),[F,B]=u.useState("59");u.useEffect(()=>{const K=j.split("-");if(K.length===2){const[H,z]=K,[V,Y]=H.split(":"),[E,R]=z.split(":");V&&v(V.padStart(2,"0")),Y&&S(Y.padStart(2,"0")),E&&L(E.padStart(2,"0")),R&&B(R.padStart(2,"0"))}},[j]);const O=(K,H,z,V)=>{const Y=`${K}:${H}-${z}:${V}`;p(Y)};return e.jsxs(Ua,{children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(b,{variant:"outline",className:"w-full justify-start font-mono text-sm",children:[e.jsx(Wn,{className:"h-4 w-4 mr-2"}),j||"选择时间段"]})}),e.jsx(_a,{className:"w-72 sm:w-80",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"font-medium text-sm mb-3",children:"开始时间"}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[e.jsxs("div",{children:[e.jsx(y,{className:"text-xs",children:"小时"}),e.jsxs(qe,{value:N,onValueChange:K=>{v(K),O(K,C,w,F)},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsx(He,{children:Array.from({length:24},(K,H)=>H).map(K=>e.jsx(ie,{value:K.toString().padStart(2,"0"),children:K.toString().padStart(2,"0")},K))})]})]}),e.jsxs("div",{children:[e.jsx(y,{className:"text-xs",children:"分钟"}),e.jsxs(qe,{value:C,onValueChange:K=>{S(K),O(N,K,w,F)},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsx(He,{children:Array.from({length:60},(K,H)=>H).map(K=>e.jsx(ie,{value:K.toString().padStart(2,"0"),children:K.toString().padStart(2,"0")},K))})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-medium text-sm mb-3",children:"结束时间"}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[e.jsxs("div",{children:[e.jsx(y,{className:"text-xs",children:"小时"}),e.jsxs(qe,{value:w,onValueChange:K=>{L(K),O(N,C,K,F)},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsx(He,{children:Array.from({length:24},(K,H)=>H).map(K=>e.jsx(ie,{value:K.toString().padStart(2,"0"),children:K.toString().padStart(2,"0")},K))})]})]}),e.jsxs("div",{children:[e.jsx(y,{className:"text-xs",children:"分钟"}),e.jsxs(qe,{value:F,onValueChange:K=>{B(K),O(N,C,w,K)},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsx(He,{children:Array.from({length:60},(K,H)=>H).map(K=>e.jsx(ie,{value:K.toString().padStart(2,"0"),children:K.toString().padStart(2,"0")},K))})]})]})]})]})]})})]})},f=({rule:j})=>{const p=`{ target = "${j.target}", time = "${j.time}", value = ${j.value.toFixed(1)} }`;return e.jsxs(Ua,{children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",children:[e.jsx(Ws,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(_a,{className:"w-80 sm:w-96",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:p}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"聊天设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"talk_value",children:"聊天频率(基础值)"}),e.jsx(ce,{id:"talk_value",type:"number",step:"0.1",min:"0",max:"1",value:n.talk_value,onChange:j=>r({...n,talk_value:parseFloat(j.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"越小越沉默,范围 0-1"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"mentioned_bot_reply",checked:n.mentioned_bot_reply,onCheckedChange:j=>r({...n,mentioned_bot_reply:j})}),e.jsx(y,{htmlFor:"mentioned_bot_reply",className:"cursor-pointer",children:"启用提及必回复"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"max_context_size",children:"上下文长度"}),e.jsx(ce,{id:"max_context_size",type:"number",min:"1",value:n.max_context_size,onChange:j=>r({...n,max_context_size:parseInt(j.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"planner_smooth",children:"规划器平滑"}),e.jsx(ce,{id:"planner_smooth",type:"number",step:"1",min:"0",value:n.planner_smooth,onChange:j=>r({...n,planner_smooth:parseFloat(j.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"增大数值会减小 planner 负荷,推荐 1-5,0 为关闭"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"enable_talk_value_rules",checked:n.enable_talk_value_rules,onCheckedChange:j=>r({...n,enable_talk_value_rules:j})}),e.jsx(y,{htmlFor:"enable_talk_value_rules",className:"cursor-pointer",children:"启用动态发言频率规则"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"include_planner_reasoning",checked:n.include_planner_reasoning,onCheckedChange:j=>r({...n,include_planner_reasoning:j})}),e.jsx(y,{htmlFor:"include_planner_reasoning",className:"cursor-pointer",children:"将 planner 推理加入 replyer"})]})]})]}),n.enable_talk_value_rules&&e.jsxs("div",{className:"border-t pt-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"动态发言频率规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"按时段或聊天流ID调整发言频率,优先匹配具体聊天,再匹配全局规则"})]}),e.jsxs(b,{onClick:c,size:"sm",children:[e.jsx(hs,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),n.talk_value_rules&&n.talk_value_rules.length>0?e.jsx("div",{className:"space-y-4",children:n.talk_value_rules.map((j,p)=>e.jsxs("div",{className:"rounded-lg border p-4 bg-muted/50 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium text-muted-foreground",children:["规则 #",p+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(f,{rule:j}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsx(b,{variant:"ghost",size:"sm",children:e.jsx(at,{className:"h-4 w-4 text-destructive"})})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:["确定要删除规则 #",p+1," 吗?此操作无法撤销。"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>d(p),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"配置类型"}),e.jsxs(qe,{value:j.target===""?"global":"specific",onValueChange:N=>{N==="global"?h(p,"target",""):h(p,"target","qq::group")},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"global",children:"全局配置"}),e.jsx(ie,{value:"specific",children:"详细配置"})]})]})]}),j.target!==""&&(()=>{const N=j.target.split(":"),v=N[0]||"qq",C=N[1]||"",S=N[2]||"group";return e.jsxs("div",{className:"grid gap-4 p-3 sm:p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"平台"}),e.jsxs(qe,{value:v,onValueChange:w=>{h(p,"target",`${w}:${C}:${S}`)},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"qq",children:"QQ"}),e.jsx(ie,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"群 ID"}),e.jsx(ce,{value:C,onChange:w=>{h(p,"target",`${v}:${w.target.value}:${S}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"类型"}),e.jsxs(qe,{value:S,onValueChange:w=>{h(p,"target",`${v}:${C}:${w}`)},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"group",children:"群组(group)"}),e.jsx(ie,{value:"private",children:"私聊(private)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",j.target||"(未设置)"]})]})})(),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"时间段 (Time)"}),e.jsx(x,{value:j.time,onChange:N=>h(p,"time",N)}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"支持跨夜区间,例如 23:00-02:00"})]}),e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{htmlFor:`rule-value-${p}`,className:"text-xs font-medium",children:"发言频率值 (Value)"}),e.jsx(ce,{id:`rule-value-${p}`,type:"number",step:"0.01",min:"0.01",max:"1",value:j.value,onChange:N=>{const v=parseFloat(N.target.value);isNaN(v)||h(p,"value",Math.max(.01,Math.min(1,v)))},className:"w-20 h-8 text-xs"})]}),e.jsx(Ma,{value:[j.value],onValueChange:N=>h(p,"value",N[0]),min:.01,max:1,step:.01,className:"w-full"}),e.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[e.jsx("span",{children:"0.01 (极少发言)"}),e.jsx("span",{children:"0.5"}),e.jsx("span",{children:"1.0 (正常)"})]})]})]})]},p))}):e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:e.jsx("p",{className:"text-sm",children:'暂无规则,点击"添加规则"按钮创建'})}),e.jsxs("div",{className:"mt-4 p-4 bg-blue-50 dark:bg-blue-950/20 border border-blue-200 dark:border-blue-800 rounded-lg",children:[e.jsx("h5",{className:"text-sm font-semibold text-blue-900 dark:text-blue-100 mb-2",children:"📝 规则说明"}),e.jsxs("ul",{className:"text-xs text-blue-800 dark:text-blue-200 space-y-1",children:[e.jsxs("li",{children:["• ",e.jsx("strong",{children:"Target 为空"}),":全局规则,对所有聊天生效"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"Target 指定"}),":仅对特定聊天流生效(格式:platform:id:type)"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"优先级"}),":先匹配具体聊天流规则,再匹配全局规则"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"时间支持跨夜"}),":例如 23:00-02:00 表示晚上11点到次日凌晨2点"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"数值范围"}),":建议 0-1,0 表示完全沉默,1 表示正常发言"]})]})]})]})]})}function L0({member:n,groupIndex:r,memberIndex:c,availableChatIds:d,onUpdate:h,onRemove:x}){const f=d.includes(n)||n==="*",[j,p]=u.useState(!f);return e.jsxs("div",{className:"flex gap-2",children:[e.jsx("div",{className:"flex-1 flex gap-2",children:j?e.jsxs(e.Fragment,{children:[e.jsx(ce,{value:n,onChange:N=>h(r,c,N.target.value),placeholder:'输入 "*" 或 "qq:123456:group"',className:"flex-1"}),d.length>0&&e.jsx(b,{size:"sm",variant:"outline",onClick:()=>p(!1),title:"切换到下拉选择",children:"下拉"})]}):e.jsxs(e.Fragment,{children:[e.jsxs(qe,{value:n,onValueChange:N=>h(r,c,N),children:[e.jsx(Be,{className:"flex-1",children:e.jsx(Ge,{placeholder:"选择聊天流"})}),e.jsxs(He,{children:[e.jsx(ie,{value:"*",children:"* (全局共享)"}),d.map((N,v)=>e.jsx(ie,{value:N,children:N},v))]})]}),e.jsx(b,{size:"sm",variant:"outline",onClick:()=>p(!0),title:"切换到手动输入",children:"输入"})]})}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(at,{className:"h-4 w-4"})})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:['确定要删除组成员 "',n||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>x(r,c),children:"删除"})]})]})]})]})}function U0({config:n,onChange:r}){const c=()=>{r({...n,learning_list:[...n.learning_list,["","enable","enable","1.0"]]})},d=C=>{r({...n,learning_list:n.learning_list.filter((S,w)=>w!==C)})},h=(C,S,w)=>{const L=[...n.learning_list];L[C][S]=w,r({...n,learning_list:L})},x=({rule:C})=>{const S=`["${C[0]}", "${C[1]}", "${C[2]}", "${C[3]}"]`;return e.jsxs(Ua,{children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",children:[e.jsx(Ws,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(_a,{className:"w-80 sm:w-96",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:S}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},f=()=>{r({...n,expression_groups:[...n.expression_groups,[]]})},j=C=>{r({...n,expression_groups:n.expression_groups.filter((S,w)=>w!==C)})},p=C=>{const S=[...n.expression_groups];S[C]=[...S[C],""],r({...n,expression_groups:S})},N=(C,S)=>{const w=[...n.expression_groups];w[C]=w[C].filter((L,F)=>F!==S),r({...n,expression_groups:w})},v=(C,S,w)=>{const L=[...n.expression_groups];L[C][S]=w,r({...n,expression_groups:L})};return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达学习配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置麦麦如何学习和使用表达方式"})]}),e.jsxs(b,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(hs,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),e.jsxs("div",{className:"space-y-4",children:[n.learning_list.map((C,S)=>{const w=n.learning_list.some((H,z)=>z!==S&&H[0]===""),L=C[0]==="",F=C[0].split(":"),B=F[0]||"qq",O=F[1]||"",K=F[2]||"group";return e.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["规则 ",S+1," ",L&&"(全局配置)"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(x,{rule:C}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsx(b,{size:"sm",variant:"ghost",children:e.jsx(at,{className:"h-4 w-4"})})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:["确定要删除学习规则 ",S+1," 吗?此操作无法撤销。"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>d(S),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"配置类型"}),e.jsxs(qe,{value:L?"global":"specific",onValueChange:H=>{H==="global"?h(S,0,""):h(S,0,"qq::group")},disabled:w&&!L,children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"global",children:"全局配置"}),e.jsx(ie,{value:"specific",disabled:w&&!L,children:"详细配置"})]})]}),w&&!L&&e.jsx("p",{className:"text-xs text-amber-600",children:"已存在全局配置,无法创建新的全局配置"})]}),!L&&e.jsxs("div",{className:"grid gap-4 p-3 sm:p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"平台"}),e.jsxs(qe,{value:B,onValueChange:H=>{h(S,0,`${H}:${O}:${K}`)},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"qq",children:"QQ"}),e.jsx(ie,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"群 ID"}),e.jsx(ce,{value:O,onChange:H=>{h(S,0,`${B}:${H.target.value}:${K}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"类型"}),e.jsxs(qe,{value:K,onValueChange:H=>{h(S,0,`${B}:${O}:${H}`)},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"group",children:"群组(group)"}),e.jsx(ie,{value:"private",children:"私聊(private)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",C[0]||"(未设置)"]})]}),e.jsx("div",{className:"grid gap-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(y,{className:"text-xs font-medium",children:"使用学到的表达"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦使用从聊天中学到的表达方式"})]}),e.jsx(Qe,{checked:C[1]==="enable",onCheckedChange:H=>h(S,1,H?"enable":"disable")})]})}),e.jsx("div",{className:"grid gap-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(y,{className:"text-xs font-medium",children:"学习表达"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦从聊天中学习新的表达方式"})]}),e.jsx(Qe,{checked:C[2]==="enable",onCheckedChange:H=>h(S,2,H?"enable":"disable")})]})}),e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{className:"text-xs font-medium",children:"学习强度"}),e.jsx(ce,{type:"number",step:"0.1",min:"0",max:"5",value:C[3],onChange:H=>{const z=parseFloat(H.target.value);isNaN(z)||h(S,3,Math.max(0,Math.min(5,z)).toFixed(1))},className:"w-20 h-8 text-xs"})]}),e.jsx(Ma,{value:[parseFloat(C[3])||1],onValueChange:H=>h(S,3,H[0].toFixed(1)),min:0,max:5,step:.1,className:"w-full"}),e.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[e.jsx("span",{children:"0 (不学习)"}),e.jsx("span",{children:"2.5"}),e.jsx("span",{children:"5.0 (快速学习)"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"影响学习频率,最短学习间隔 = 300/学习强度(秒)"})]})]})]},S)}),n.learning_list.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无学习规则,点击"添加规则"开始配置'})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达反思配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置麦麦主动向管理员询问表达方式是否合适的功能"})]}),e.jsx(Qe,{checked:n.reflect,onCheckedChange:C=>r({...n,reflect:C})})]}),n.reflect&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsx("span",{className:"text-sm font-medium",children:"反思操作员"})}),e.jsx("div",{className:"space-y-4",children:(()=>{const S=(n.reflect_operator_id||"").split(":"),w=S[0]||"qq",L=S[1]||"",F=S[2]||"private";return e.jsxs("div",{className:"grid gap-4 p-3 sm:p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"平台"}),e.jsxs(qe,{value:w,onValueChange:B=>{r({...n,reflect_operator_id:`${B}:${L}:${F}`})},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"qq",children:"QQ"}),e.jsx(ie,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"用户/群 ID"}),e.jsx(ce,{value:L,onChange:B=>{r({...n,reflect_operator_id:`${w}:${B.target.value}:${F}`})},placeholder:"输入 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"类型"}),e.jsxs(qe,{value:F,onValueChange:B=>{r({...n,reflect_operator_id:`${w}:${L}:${B}`})},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"private",children:"私聊(private)"}),e.jsx(ie,{value:"group",children:"群组(group)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前操作员 ID:",n.reflect_operator_id||"(未设置)"]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦会向此操作员询问表达方式是否合适"})]})})()})]}),e.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-sm font-medium",children:"允许反思的聊天流"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"只有在此列表中的聊天流才会提出问题并跟踪。如果列表为空,则所有聊天流都可以进行表达反思"})]}),e.jsxs(b,{onClick:()=>{r({...n,allow_reflect:[...n.allow_reflect||[],"qq::group"]})},size:"sm",variant:"outline",children:[e.jsx(hs,{className:"h-4 w-4 mr-1"}),"添加聊天流"]})]}),e.jsxs("div",{className:"space-y-2",children:[(n.allow_reflect||[]).map((C,S)=>{const w=C.split(":"),L=w[0]||"qq",F=w[1]||"",B=w[2]||"group";return e.jsxs("div",{className:"flex items-center gap-2 p-3 rounded-lg bg-muted/50",children:[e.jsxs(qe,{value:L,onValueChange:O=>{const K=[...n.allow_reflect];K[S]=`${O}:${F}:${B}`,r({...n,allow_reflect:K})},children:[e.jsx(Be,{className:"w-24",children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"qq",children:"QQ"}),e.jsx(ie,{value:"wx",children:"微信"})]})]}),e.jsx(ce,{value:F,onChange:O=>{const K=[...n.allow_reflect];K[S]=`${L}:${O.target.value}:${B}`,r({...n,allow_reflect:K})},placeholder:"ID",className:"flex-1 font-mono text-sm"}),e.jsxs(qe,{value:B,onValueChange:O=>{const K=[...n.allow_reflect];K[S]=`${L}:${F}:${O}`,r({...n,allow_reflect:K})},children:[e.jsx(Be,{className:"w-32",children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"group",children:"群组"}),e.jsx(ie,{value:"private",children:"私聊"})]})]}),e.jsx(b,{onClick:()=>{r({...n,allow_reflect:n.allow_reflect.filter((O,K)=>K!==S)})},size:"sm",variant:"ghost",children:e.jsx(at,{className:"h-4 w-4"})})]},S)}),(!n.allow_reflect||n.allow_reflect.length===0)&&e.jsx("div",{className:"text-center py-4 text-muted-foreground text-sm",children:"列表为空,所有聊天流都可以进行表达反思"})]})]})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达共享组配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置不同聊天流之间如何共享学到的表达方式"})]}),e.jsxs(b,{onClick:f,size:"sm",variant:"outline",children:[e.jsx(hs,{className:"h-4 w-4 mr-1"}),"添加共享组"]})]}),e.jsxs("div",{className:"space-y-4",children:[n.expression_groups.map((C,S)=>{const w=n.learning_list.map(L=>L[0]).filter(L=>L!=="");return e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["共享组 ",S+1,C.length===1&&C[0]==="*"&&"(全局共享)"]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(b,{onClick:()=>p(S),size:"sm",variant:"outline",children:e.jsx(hs,{className:"h-4 w-4"})}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsx(b,{size:"sm",variant:"ghost",children:e.jsx(at,{className:"h-4 w-4"})})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:["确定要删除共享组 ",S+1," 吗?此操作无法撤销。"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>j(S),children:"删除"})]})]})]})]})]}),e.jsx("div",{className:"space-y-2",children:C.map((L,F)=>e.jsx(L0,{member:L,groupIndex:S,memberIndex:F,availableChatIds:w,onUpdate:v,onRemove:N},`${S}-${F}`))}),e.jsx("p",{className:"text-xs text-muted-foreground",children:'提示:可以从下拉框选择已配置的聊天流,或手动输入。输入 "*" 启用全局共享'})]},S)}),n.expression_groups.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无共享组,点击"添加共享组"开始配置'})]})]})})]})}function B0({emojiConfig:n,memoryConfig:r,toolConfig:c,onEmojiChange:d,onMemoryChange:h,onToolChange:x}){return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"工具设置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"enable_tool",checked:c.enable_tool,onCheckedChange:f=>x({...c,enable_tool:f})}),e.jsx(y,{htmlFor:"enable_tool",className:"cursor-pointer",children:"启用工具系统"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"允许麦麦使用各种工具来增强功能"})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"记忆设置"}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"max_agent_iterations",children:"记忆思考深度"}),e.jsx(ce,{id:"max_agent_iterations",type:"number",min:"1",value:r.max_agent_iterations,onChange:f=>h({...r,max_agent_iterations:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"最低为 1(不深入思考)"})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"表情包设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"emoji_chance",children:"表情包激活概率"}),e.jsx(ce,{id:"emoji_chance",type:"number",step:"0.1",min:"0",max:"1",value:n.emoji_chance,onChange:f=>d({...n,emoji_chance:parseFloat(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"范围 0-1,越大越容易发送表情包"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"max_reg_num",children:"最大注册数量"}),e.jsx(ce,{id:"max_reg_num",type:"number",min:"1",value:n.max_reg_num,onChange:f=>d({...n,max_reg_num:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦最多可以注册的表情包数量"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),e.jsx(ce,{id:"check_interval",type:"number",min:"1",value:n.check_interval,onChange:f=>d({...n,check_interval:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包(注册、破损、删除)的时间间隔"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"do_replace",checked:n.do_replace,onCheckedChange:f=>d({...n,do_replace:f})}),e.jsx(y,{htmlFor:"do_replace",className:"cursor-pointer",children:"达到最大数量时替换表情包"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"steal_emoji",checked:n.steal_emoji,onCheckedChange:f=>d({...n,steal_emoji:f})}),e.jsx(y,{htmlFor:"steal_emoji",className:"cursor-pointer",children:"偷取表情包"})]}),e.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"允许麦麦将看到的表情包据为己有"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"content_filtration",checked:n.content_filtration,onCheckedChange:f=>d({...n,content_filtration:f})}),e.jsx(y,{htmlFor:"content_filtration",className:"cursor-pointer",children:"启用表情包过滤"})]}),n.content_filtration&&e.jsxs("div",{className:"grid gap-2 pl-6 border-l-2 border-primary/20",children:[e.jsx(y,{htmlFor:"filtration_prompt",children:"过滤要求"}),e.jsx(ce,{id:"filtration_prompt",value:n.filtration_prompt,onChange:f=>d({...n,filtration_prompt:f.target.value}),placeholder:"符合公序良俗"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"只有符合此要求的表情包才会被保存"})]})]})]})})]})}function H0({keywordReactionConfig:n,responsePostProcessConfig:r,chineseTypoConfig:c,responseSplitterConfig:d,onKeywordReactionChange:h,onResponsePostProcessChange:x,onChineseTypoChange:f,onResponseSplitterChange:j}){const p=()=>{h({...n,regex_rules:[...n.regex_rules,{regex:[""],reaction:""}]})},N=z=>{h({...n,regex_rules:n.regex_rules.filter((V,Y)=>Y!==z)})},v=(z,V,Y)=>{const E=[...n.regex_rules];V==="regex"&&typeof Y=="string"?E[z]={...E[z],regex:[Y]}:V==="reaction"&&typeof Y=="string"&&(E[z]={...E[z],reaction:Y}),h({...n,regex_rules:E})},C=({regex:z,reaction:V,onRegexChange:Y,onReactionChange:E})=>{const[R,ne]=u.useState(!1),[fe,Ce]=u.useState(""),[we,pe]=u.useState(null),[Ne,be]=u.useState(""),[A,X]=u.useState({}),[T,te]=u.useState(""),_=u.useRef(null),[me,oe]=u.useState("build"),ae=G=>G.replace(/\(\?P<([^>]+)>/g,"(?<$1>"),xe=(G,W=0)=>{const U=_.current;if(!U)return;const ee=U.selectionStart||0,Se=U.selectionEnd||0,Me=z.substring(0,ee)+G+z.substring(Se);Y(Me),setTimeout(()=>{const tt=ee+G.length+W;U.setSelectionRange(tt,tt),U.focus()},0)};u.useEffect(()=>{if(!z||!fe){pe(null),X({}),te(V),be("");return}try{const G=ae(z),W=new RegExp(G,"g"),U=fe.match(W);pe(U),be("");const Se=new RegExp(G).exec(fe);if(Se&&Se.groups){X(Se.groups);let Me=V;Object.entries(Se.groups).forEach(([tt,Xe])=>{Me=Me.replace(new RegExp(`\\[${tt}\\]`,"g"),Xe||"")}),te(Me)}else X({}),te(V)}catch(G){be(G.message),pe(null),X({}),te(V)}},[z,fe,V]);const ve=()=>{if(!fe||!we||we.length===0)return e.jsx("span",{className:"text-muted-foreground",children:fe||"请输入测试文本"});try{const G=ae(z),W=new RegExp(G,"g");let U=0;const ee=[];let Se;for(;(Se=W.exec(fe))!==null;)Se.index>U&&ee.push(e.jsx("span",{children:fe.substring(U,Se.index)},`text-${U}`)),ee.push(e.jsx("span",{className:"bg-yellow-200 dark:bg-yellow-900 font-semibold",children:Se[0]},`match-${Se.index}`)),U=Se.index+Se[0].length;return U)",desc:"Python风格命名捕获组",moveCursor:-1},{label:"非捕获组",pattern:"(?:)",desc:"分组但不保存匹配结果",moveCursor:-1}]},{category:"字符类",items:[{label:"字符集",pattern:"[]",desc:"匹配括号内的任意字符",moveCursor:-1},{label:"排除字符",pattern:"[^]",desc:"匹配不在括号内的字符",moveCursor:-1},{label:"范围",pattern:"[a-z]",desc:"匹配a到z的字符"},{label:"中文字符",pattern:"[\\u4e00-\\u9fa5]",desc:"匹配中文汉字"}]},{category:"常用模板",items:[{label:"捕获词语",pattern:"(?P\\S+)",desc:"捕获一个词语"},{label:"捕获句子",pattern:"(?P.+)",desc:"捕获整个句子"},{label:"捕获数字",pattern:"(?P\\d+)",desc:"捕获一个或多个数字"},{label:"可选词语",pattern:"(?:词语1|词语2)",desc:"匹配多个可选项之一"}]}];return e.jsxs(Jt,{open:R,onOpenChange:ne,children:[e.jsx($u,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",children:[e.jsx(Hu,{className:"h-4 w-4 mr-1"}),"正则编辑器"]})}),e.jsxs($t,{className:"max-w-[95vw] sm:max-w-[900px] max-h-[90vh]",children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:"正则表达式编辑器"}),e.jsx(ds,{className:"text-sm",children:"使用可视化工具构建正则表达式,并实时测试效果"})]}),e.jsx(st,{className:"max-h-[calc(90vh-120px)]",children:e.jsxs(La,{value:me,onValueChange:G=>oe(G),className:"w-full",children:[e.jsxs(wa,{className:"grid w-full grid-cols-2",children:[e.jsx(it,{value:"build",children:"🔧 构建器"}),e.jsx(it,{value:"test",children:"🧪 测试器"})]}),e.jsxs(zt,{value:"build",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{className:"text-sm font-medium",children:"正则表达式"}),e.jsx(ce,{ref:_,value:z,onChange:G=>Y(G.target.value),className:"font-mono text-sm",placeholder:"点击下方按钮构建正则表达式..."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{className:"text-sm font-medium",children:"Reaction 内容"}),e.jsx(Ft,{value:V,onChange:G=>E(G.target.value),placeholder:"使用 [捕获组名] 引用捕获的内容...",rows:3,className:"text-sm"})]}),e.jsxs("div",{className:"space-y-4 border-t pt-4",children:[de.map(G=>e.jsxs("div",{className:"space-y-2",children:[e.jsx("h5",{className:"text-xs font-semibold text-primary",children:G.category}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:G.items.map(W=>e.jsx(b,{variant:"outline",size:"sm",className:"justify-start h-auto py-2 px-3",onClick:()=>xe(W.pattern,W.moveCursor||0),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsxs("div",{className:"flex items-center gap-2 w-full",children:[e.jsx("span",{className:"text-xs font-medium",children:W.label}),e.jsx("code",{className:"ml-auto text-xs bg-muted px-1.5 py-0.5 rounded font-mono",children:W.pattern})]}),e.jsx("span",{className:"text-xs text-muted-foreground mt-0.5",children:W.desc})]})},W.label))})]},G.category)),e.jsxs("div",{className:"space-y-2 border-t pt-4",children:[e.jsx("h5",{className:"text-xs font-semibold text-primary",children:"完整示例模板"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>Y("^(?P\\S{1,20})是这样的$"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsxs("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:["^(?P\\S","{1,20}",")是这样的$"]}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「某事物是这样的」并捕获事物名称"})]})}),e.jsx(b,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>Y("(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「我没要求你做某事」并捕获具体行为"})]})}),e.jsx(b,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>Y("(?P.+?)(?:是|为什么|怎么)"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?P.+?)(?:是|为什么|怎么)"}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"捕获问题主题词"})]})})]})]})]}),e.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 使用提示"}),e.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"点击输入框设置光标位置,然后点击按钮插入模式"}),e.jsxs("li",{children:["命名捕获组格式:",e.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"(?P<名称>模式)"})]}),e.jsxs("li",{children:["在 reaction 中使用 ",e.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"[名称]"})," 引用捕获的内容"]}),e.jsx("li",{children:"切换到测试器标签页验证正则表达式效果"})]})]})]}),e.jsxs(zt,{value:"test",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{className:"text-sm font-medium",children:"当前正则表达式"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:z||"(未设置)"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"test-text",className:"text-sm font-medium",children:"测试文本"}),e.jsx(Ft,{id:"test-text",value:fe,onChange:G=>Ce(G.target.value),placeholder:`在此输入要测试的文本... +例如:打游戏是这样的`,className:"min-h-[100px] text-sm"})]}),Ne&&e.jsxs("div",{className:"rounded-md bg-destructive/10 border border-destructive/20 p-3",children:[e.jsx("p",{className:"text-sm text-destructive font-medium",children:"正则表达式错误"}),e.jsx("p",{className:"text-xs text-destructive/80 mt-1",children:Ne})]}),!Ne&&fe&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"flex items-center gap-2",children:we&&we.length>0?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-green-500"}),e.jsxs("span",{className:"text-sm font-medium text-green-600 dark:text-green-400",children:["匹配成功 (",we.length," 处)"]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-gray-400"}),e.jsx("span",{className:"text-sm font-medium text-muted-foreground",children:"无匹配"})]})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{className:"text-sm font-medium",children:"匹配高亮"}),e.jsx(st,{className:"h-40 rounded-md bg-muted p-3",children:e.jsx("div",{className:"text-sm break-words",children:ve()})})]}),Object.keys(A).length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{className:"text-sm font-medium",children:"命名捕获组"}),e.jsx(st,{className:"h-32 rounded-md border p-3",children:e.jsx("div",{className:"space-y-2",children:Object.entries(A).map(([G,W])=>e.jsxs("div",{className:"flex items-start gap-2 text-sm",children:[e.jsxs("span",{className:"font-mono font-semibold text-primary min-w-[80px]",children:["[",G,"]"]}),e.jsx("span",{className:"text-muted-foreground",children:"="}),e.jsx("span",{className:"font-mono bg-muted px-2 py-0.5 rounded",children:W})]},G))})})]}),Object.keys(A).length>0&&V&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{className:"text-sm font-medium",children:"Reaction 替换预览"}),e.jsx(st,{className:"h-48 rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3",children:e.jsx("div",{className:"text-sm break-words",children:T})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"reaction 中的 [name] 已被替换为对应的捕获组值"})]})]}),e.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 测试说明"}),e.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"匹配的文本会以黄色背景高亮显示"}),e.jsx("li",{children:"命名捕获组的值会显示在下方列表中"}),e.jsx("li",{children:"Reaction 替换预览显示最终生成的反应内容"}),e.jsx("li",{children:"如需修改正则,切换回构建器标签页"})]})]})]})]})})]})]})},S=()=>{h({...n,keyword_rules:[...n.keyword_rules,{keywords:[],reaction:""}]})},w=z=>{h({...n,keyword_rules:n.keyword_rules.filter((V,Y)=>Y!==z)})},L=(z,V,Y)=>{const E=[...n.keyword_rules];typeof Y=="string"&&(E[z]={...E[z],reaction:Y}),h({...n,keyword_rules:E})},F=z=>{const V=[...n.keyword_rules];V[z]={...V[z],keywords:[...V[z].keywords||[],""]},h({...n,keyword_rules:V})},B=(z,V)=>{const Y=[...n.keyword_rules];Y[z]={...Y[z],keywords:(Y[z].keywords||[]).filter((E,R)=>R!==V)},h({...n,keyword_rules:Y})},O=(z,V,Y)=>{const E=[...n.keyword_rules],R=[...E[z].keywords||[]];R[V]=Y,E[z]={...E[z],keywords:R},h({...n,keyword_rules:E})},K=({rule:z})=>{const V=`{ regex = [${(z.regex||[]).map(Y=>`"${Y}"`).join(", ")}], reaction = "${z.reaction}" }`;return e.jsxs(Ua,{children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",children:[e.jsx(Ws,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(_a,{className:"w-[95vw] sm:w-[500px]",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx(st,{className:"h-60 rounded-md bg-muted p-3",children:e.jsx("pre",{className:"font-mono text-xs break-all",children:V})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},H=({rule:z})=>{const V=`[[keyword_reaction.keyword_rules]] +keywords = [${(z.keywords||[]).map(Y=>`"${Y}"`).join(", ")}] +reaction = "${z.reaction}"`;return e.jsxs(Ua,{children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",children:[e.jsx(Ws,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(_a,{className:"w-[95vw] sm:w-[500px]",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx(st,{className:"h-60 rounded-md bg-muted p-3",children:e.jsx("pre",{className:"font-mono text-xs whitespace-pre-wrap break-all",children:V})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"关键词反应配置"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"配置触发特定反应的关键词和正则表达式规则"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"正则表达式规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用正则表达式匹配消息内容"})]}),e.jsxs(b,{onClick:p,size:"sm",variant:"outline",children:[e.jsx(hs,{className:"h-4 w-4 mr-1"}),"添加正则规则"]})]}),e.jsxs("div",{className:"space-y-3",children:[n.regex_rules.map((z,V)=>e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["正则规则 ",V+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(C,{regex:z.regex&&z.regex[0]||"",reaction:z.reaction,onRegexChange:Y=>v(V,"regex",Y),onReactionChange:Y=>v(V,"reaction",Y)}),e.jsx(K,{rule:z}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsx(b,{size:"sm",variant:"ghost",children:e.jsx(at,{className:"h-4 w-4"})})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:["确定要删除正则规则 ",V+1," 吗?此操作无法撤销。"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>N(V),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"正则表达式(Python 语法)"}),e.jsx(ce,{value:z.regex&&z.regex[0]||"",onChange:Y=>v(V,"regex",Y.target.value),placeholder:"例如:^(?P\\\\S{1,20})是这样的$ (点击正则编辑器按钮可视化构建)",className:"font-mono text-sm"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:'支持命名捕获组 (?Ppattern),可在 reaction 中使用 [name] 引用。点击"正则编辑器"可视化构建和测试!'})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"反应内容"}),e.jsx(Ft,{value:z.reaction,onChange:Y=>v(V,"reaction",Y.target.value),placeholder:`触发后麦麦的反应... +可以使用 [捕获组名] 来引用正则表达式中的内容`,rows:3,className:"text-sm"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"使用 [捕获组名] 引用正则表达式中的命名捕获组,例如 [n] 会被替换为捕获的内容"})]})]})]},V)),n.regex_rules.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无正则规则,点击"添加正则规则"开始配置'})]})]}),e.jsxs("div",{className:"space-y-4 border-t pt-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"关键词规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用关键词列表匹配消息内容"})]}),e.jsxs(b,{onClick:S,size:"sm",variant:"outline",children:[e.jsx(hs,{className:"h-4 w-4 mr-1"}),"添加关键词规则"]})]}),e.jsxs("div",{className:"space-y-3",children:[n.keyword_rules.map((z,V)=>e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["关键词规则 ",V+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(H,{rule:z}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsx(b,{size:"sm",variant:"ghost",children:e.jsx(at,{className:"h-4 w-4"})})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:["确定要删除关键词规则 ",V+1," 吗?此操作无法撤销。"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>w(V),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{className:"text-xs font-medium",children:"关键词列表"}),e.jsxs(b,{onClick:()=>F(V),size:"sm",variant:"ghost",children:[e.jsx(hs,{className:"h-3 w-3 mr-1"}),"添加关键词"]})]}),e.jsxs("div",{className:"space-y-2",children:[(z.keywords||[]).map((Y,E)=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{value:Y,onChange:R=>O(V,E,R.target.value),placeholder:"关键词",className:"flex-1"}),e.jsx(b,{onClick:()=>B(V,E),size:"sm",variant:"ghost",children:e.jsx(at,{className:"h-4 w-4"})})]},E)),(!z.keywords||z.keywords.length===0)&&e.jsx("p",{className:"text-xs text-muted-foreground text-center py-2",children:'暂无关键词,点击"添加关键词"开始配置'})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"反应内容"}),e.jsx(Ft,{value:z.reaction,onChange:Y=>L(V,"reaction",Y.target.value),placeholder:"触发后麦麦的反应...",rows:3,className:"text-sm"})]})]})]},V)),n.keyword_rules.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无关键词规则,点击"添加关键词规则"开始配置'})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"回复后处理配置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"enable_response_post_process",checked:r.enable_response_post_process,onCheckedChange:z=>x({...r,enable_response_post_process:z})}),e.jsx(y,{htmlFor:"enable_response_post_process",className:"cursor-pointer",children:"启用回复后处理"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"包括错别字生成器和回复分割器"})]}),r.enable_response_post_process&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"border-t pt-6 space-y-4",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[e.jsx(Qe,{id:"enable_chinese_typo",checked:c.enable,onCheckedChange:z=>f({...c,enable:z})}),e.jsx(y,{htmlFor:"enable_chinese_typo",className:"cursor-pointer font-semibold",children:"中文错别字生成器"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"为回复添加随机错别字,让麦麦的回复更自然"}),c.enable&&e.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"error_rate",className:"text-xs font-medium",children:"单字替换概率"}),e.jsx(ce,{id:"error_rate",type:"number",step:"0.001",min:"0",max:"1",value:c.error_rate,onChange:z=>f({...c,error_rate:parseFloat(z.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"min_freq",className:"text-xs font-medium",children:"最小字频阈值"}),e.jsx(ce,{id:"min_freq",type:"number",min:"0",value:c.min_freq,onChange:z=>f({...c,min_freq:parseInt(z.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"tone_error_rate",className:"text-xs font-medium",children:"声调错误概率"}),e.jsx(ce,{id:"tone_error_rate",type:"number",step:"0.01",min:"0",max:"1",value:c.tone_error_rate,onChange:z=>f({...c,tone_error_rate:parseFloat(z.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"word_replace_rate",className:"text-xs font-medium",children:"整词替换概率"}),e.jsx(ce,{id:"word_replace_rate",type:"number",step:"0.001",min:"0",max:"1",value:c.word_replace_rate,onChange:z=>f({...c,word_replace_rate:parseFloat(z.target.value)})})]})]})]})}),e.jsx("div",{className:"border-t pt-6 space-y-4",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[e.jsx(Qe,{id:"enable_response_splitter",checked:d.enable,onCheckedChange:z=>j({...d,enable:z})}),e.jsx(y,{htmlFor:"enable_response_splitter",className:"cursor-pointer font-semibold",children:"回复分割器"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"控制回复的长度和句子数量"}),d.enable&&e.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"max_length",className:"text-xs font-medium",children:"最大长度"}),e.jsx(ce,{id:"max_length",type:"number",min:"1",value:d.max_length,onChange:z=>j({...d,max_length:parseInt(z.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大字符数"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"max_sentence_num",className:"text-xs font-medium",children:"最大句子数"}),e.jsx(ce,{id:"max_sentence_num",type:"number",min:"1",value:d.max_sentence_num,onChange:z=>j({...d,max_sentence_num:parseInt(z.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大句子数量"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"enable_kaomoji_protection",checked:d.enable_kaomoji_protection,onCheckedChange:z=>j({...d,enable_kaomoji_protection:z})}),e.jsx(y,{htmlFor:"enable_kaomoji_protection",className:"cursor-pointer",children:"启用颜文字保护"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"enable_overflow_return_all",checked:d.enable_overflow_return_all,onCheckedChange:z=>j({...d,enable_overflow_return_all:z})}),e.jsx(y,{htmlFor:"enable_overflow_return_all",className:"cursor-pointer",children:"超出时一次性返回全部"})]}),e.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"当句子数量超出限制时,合并后一次性返回所有内容"})]})]})})]})]})]})}function q0({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"情绪设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{checked:n.enable_mood,onCheckedChange:c=>r({...n,enable_mood:c})}),e.jsx(y,{className:"cursor-pointer",children:"启用情绪系统"})]}),n.enable_mood&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"情绪更新阈值"}),e.jsx(ce,{type:"number",min:"1",value:n.mood_update_threshold,onChange:c=>r({...n,mood_update_threshold:parseInt(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"越高,更新越慢"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"情感特征"}),e.jsx(Ft,{value:n.emotion_style,onChange:c=>r({...n,emotion_style:c.target.value}),placeholder:"影响情绪的变化情况",rows:2})]})]})]})]})}function G0({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"语音设置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{checked:n.enable_asr,onCheckedChange:c=>r({...n,enable_asr:c})}),e.jsx(y,{className:"cursor-pointer",children:"启用语音识别"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"启用后麦麦可以识别语音消息,需要配置语音识别模型"})]})}function V0({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{checked:n.enable,onCheckedChange:c=>r({...n,enable:c})}),e.jsx(y,{className:"cursor-pointer",children:"启用 LPMM 知识库"})]}),n.enable&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"LPMM 模式"}),e.jsxs(qe,{value:n.lpmm_mode,onValueChange:c=>r({...n,lpmm_mode:c}),children:[e.jsx(Be,{children:e.jsx(Ge,{placeholder:"选择 LPMM 模式"})}),e.jsxs(He,{children:[e.jsx(ie,{value:"classic",children:"经典模式"}),e.jsx(ie,{value:"agent",children:"Agent 模式"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"同义词搜索 TopK"}),e.jsx(ce,{type:"number",min:"1",value:n.rag_synonym_search_top_k,onChange:c=>r({...n,rag_synonym_search_top_k:parseInt(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"同义词阈值"}),e.jsx(ce,{type:"number",step:"0.1",min:"0",max:"1",value:n.rag_synonym_threshold,onChange:c=>r({...n,rag_synonym_threshold:parseFloat(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"实体提取线程数"}),e.jsx(ce,{type:"number",min:"1",value:n.info_extraction_workers,onChange:c=>r({...n,info_extraction_workers:parseInt(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"嵌入向量维度"}),e.jsx(ce,{type:"number",min:"1",value:n.embedding_dimension,onChange:c=>r({...n,embedding_dimension:parseInt(c.target.value)})})]})]})]})]})]})}function F0({config:n,onChange:r}){const[c,d]=u.useState(""),[h,x]=u.useState("WARNING"),f=()=>{c&&!n.suppress_libraries.includes(c)&&(r({...n,suppress_libraries:[...n.suppress_libraries,c]}),d(""))},j=w=>{r({...n,suppress_libraries:n.suppress_libraries.filter(L=>L!==w)})},p=()=>{c&&!n.library_log_levels[c]&&(r({...n,library_log_levels:{...n.library_log_levels,[c]:h}}),d(""),x("WARNING"))},N=w=>{const L={...n.library_log_levels};delete L[w],r({...n,library_log_levels:L})},v=["DEBUG","INFO","WARNING","ERROR","CRITICAL"],C=["FULL","compact","lite"],S=["none","title","full"];return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"日志配置"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"日期格式"}),e.jsx(ce,{value:n.date_style,onChange:w=>r({...n,date_style:w.target.value}),placeholder:"例如: m-d H:i:s"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"m=月, d=日, H=时, i=分, s=秒"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"日志级别样式"}),e.jsxs(qe,{value:n.log_level_style,onValueChange:w=>r({...n,log_level_style:w}),children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsx(He,{children:C.map(w=>e.jsx(ie,{value:w,children:w},w))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"日志文本颜色"}),e.jsxs(qe,{value:n.color_text,onValueChange:w=>r({...n,color_text:w}),children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsx(He,{children:S.map(w=>e.jsx(ie,{value:w,children:w},w))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"全局日志级别"}),e.jsxs(qe,{value:n.log_level,onValueChange:w=>r({...n,log_level:w}),children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsx(He,{children:v.map(w=>e.jsx(ie,{value:w,children:w},w))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"控制台日志级别"}),e.jsxs(qe,{value:n.console_log_level,onValueChange:w=>r({...n,console_log_level:w}),children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsx(He,{children:v.map(w=>e.jsx(ie,{value:w,children:w},w))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"文件日志级别"}),e.jsxs(qe,{value:n.file_log_level,onValueChange:w=>r({...n,file_log_level:w}),children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsx(He,{children:v.map(w=>e.jsx(ie,{value:w,children:w},w))})]})]})]})]}),e.jsxs("div",{children:[e.jsx(y,{className:"mb-2 block",children:"完全屏蔽的库"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(ce,{value:c,onChange:w=>d(w.target.value),placeholder:"输入库名",className:"flex-1",onKeyDown:w=>{w.key==="Enter"&&(w.preventDefault(),f())}}),e.jsx(b,{onClick:f,size:"sm",className:"flex-shrink-0",children:e.jsx(hs,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:n.suppress_libraries.map(w=>e.jsxs("div",{className:"flex items-center gap-1 bg-secondary px-3 py-1 rounded-md",children:[e.jsx("span",{className:"text-sm",children:w}),e.jsx(b,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0",onClick:()=>j(w),children:e.jsx(at,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},w))})]}),e.jsxs("div",{children:[e.jsx(y,{className:"mb-2 block",children:"特定库的日志级别"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(ce,{value:c,onChange:w=>d(w.target.value),placeholder:"输入库名",className:"flex-1"}),e.jsxs(qe,{value:h,onValueChange:x,children:[e.jsx(Be,{className:"w-32",children:e.jsx(Ge,{})}),e.jsx(He,{children:v.map(w=>e.jsx(ie,{value:w,children:w},w))})]}),e.jsx(b,{onClick:p,size:"sm",children:e.jsx(hs,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"space-y-2",children:Object.entries(n.library_log_levels).map(([w,L])=>e.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[e.jsx("span",{className:"text-sm font-medium",children:w}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:L}),e.jsx(b,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>N(w),children:e.jsx(at,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]})]},w))})]})]})}function $0({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"调试配置"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(y,{children:"显示 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否在日志中显示提示词"})]}),e.jsx(Qe,{checked:n.show_prompt,onCheckedChange:c=>r({...n,show_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(y,{children:"显示回复器 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的提示词"})]}),e.jsx(Qe,{checked:n.show_replyer_prompt,onCheckedChange:c=>r({...n,show_replyer_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(y,{children:"显示回复器推理"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的推理过程"})]}),e.jsx(Qe,{checked:n.show_replyer_reasoning,onCheckedChange:c=>r({...n,show_replyer_reasoning:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(y,{children:"显示 Jargon Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示术语相关的提示词"})]}),e.jsx(Qe,{checked:n.show_jargon_prompt,onCheckedChange:c=>r({...n,show_jargon_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(y,{children:"显示记忆检索 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示记忆检索相关的提示词"})]}),e.jsx(Qe,{checked:n.show_memory_prompt,onCheckedChange:c=>r({...n,show_memory_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(y,{children:"显示 Planner Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 Planner 的提示词和原始返回结果"})]}),e.jsx(Qe,{checked:n.show_planner_prompt,onCheckedChange:c=>r({...n,show_planner_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(y,{children:"显示 LPMM 相关文段"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 LPMM 知识库找到的相关文段日志"})]}),e.jsx(Qe,{checked:n.show_lpmm_paragraph,onCheckedChange:c=>r({...n,show_lpmm_paragraph:c})})]})]})]})}function Q0({config:n,onChange:r}){const[c,d]=u.useState(""),h=()=>{c&&!n.auth_token.includes(c)&&(r({...n,auth_token:[...n.auth_token,c]}),d(""))},x=f=>{r({...n,auth_token:n.auth_token.filter((j,p)=>p!==f)})};return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"MaimMessage 服务配置"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(y,{children:"启用自定义服务器"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否使用自定义的 MaimMessage 服务器"})]}),e.jsx(Qe,{checked:n.use_custom,onCheckedChange:f=>r({...n,use_custom:f})})]}),n.use_custom&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"主机地址"}),e.jsx(ce,{value:n.host,onChange:f=>r({...n,host:f.target.value}),placeholder:"127.0.0.1"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"端口号"}),e.jsx(ce,{type:"number",value:n.port,onChange:f=>r({...n,port:parseInt(f.target.value)}),placeholder:"8090"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"连接模式"}),e.jsxs(qe,{value:n.mode,onValueChange:f=>r({...n,mode:f}),children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"ws",children:"WebSocket (ws)"}),e.jsx(ie,{value:"tcp",children:"TCP"})]})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{checked:n.use_wss,onCheckedChange:f=>r({...n,use_wss:f}),disabled:n.mode!=="ws"}),e.jsx(y,{children:"使用 WSS 安全连接"})]})]}),n.use_wss&&n.mode==="ws"&&e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"SSL 证书文件路径"}),e.jsx(ce,{value:n.cert_file,onChange:f=>r({...n,cert_file:f.target.value}),placeholder:"cert.pem"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"SSL 密钥文件路径"}),e.jsx(ce,{value:n.key_file,onChange:f=>r({...n,key_file:f.target.value}),placeholder:"key.pem"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx(y,{className:"mb-2 block",children:"认证令牌"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:"用于 API 验证,为空则不启用验证"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(ce,{value:c,onChange:f=>d(f.target.value),placeholder:"输入认证令牌",onKeyDown:f=>{f.key==="Enter"&&(f.preventDefault(),h())}}),e.jsx(b,{onClick:h,size:"sm",children:e.jsx(hs,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"space-y-2",children:n.auth_token.map((f,j)=>e.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[e.jsx("span",{className:"text-sm font-mono",children:f}),e.jsx(b,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>x(j),children:e.jsx(at,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},j))})]})]})}function Y0({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"统计信息"}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(y,{children:"启用统计信息发送"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"发送匿名统计信息,帮助我们了解全球有多少只麦麦在运行"})]}),e.jsx(Qe,{checked:n.enable,onCheckedChange:c=>r({...n,enable:c})})]})]})}const li=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{className:"relative w-full overflow-auto",children:e.jsx("table",{ref:c,className:Q("w-full caption-bottom text-sm",n),...r})}));li.displayName="Table";const ni=u.forwardRef(({className:n,...r},c)=>e.jsx("thead",{ref:c,className:Q("[&_tr]:border-b",n),...r}));ni.displayName="TableHeader";const ii=u.forwardRef(({className:n,...r},c)=>e.jsx("tbody",{ref:c,className:Q("[&_tr:last-child]:border-0",n),...r}));ii.displayName="TableBody";const X0=u.forwardRef(({className:n,...r},c)=>e.jsx("tfoot",{ref:c,className:Q("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",n),...r}));X0.displayName="TableFooter";const _s=u.forwardRef(({className:n,...r},c)=>e.jsx("tr",{ref:c,className:Q("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",n),...r}));_s.displayName="TableRow";const rt=u.forwardRef(({className:n,...r},c)=>e.jsx("th",{ref:c,className:Q("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",n),...r}));rt.displayName="TableHead";const Ze=u.forwardRef(({className:n,...r},c)=>e.jsx("td",{ref:c,className:Q("px-4 py-3 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",n),...r}));Ze.displayName="TableCell";const K0=u.forwardRef(({className:n,...r},c)=>e.jsx("caption",{ref:c,className:Q("mt-4 text-sm text-muted-foreground",n),...r}));K0.displayName="TableCaption";const ao=u.forwardRef(({className:n,...r},c)=>e.jsx(Vs,{ref:c,className:Q("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",n),...r}));ao.displayName=Vs.displayName;const lo=u.forwardRef(({className:n,...r},c)=>e.jsxs("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[e.jsx(zs,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),e.jsx(Vs.Input,{ref:c,className:Q("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",n),...r})]}));lo.displayName=Vs.Input.displayName;const no=u.forwardRef(({className:n,...r},c)=>e.jsx(Vs.List,{ref:c,className:Q("max-h-[300px] overflow-y-auto overflow-x-hidden",n),...r}));no.displayName=Vs.List.displayName;const io=u.forwardRef((n,r)=>e.jsx(Vs.Empty,{ref:r,className:"py-6 text-center text-sm",...n}));io.displayName=Vs.Empty.displayName;const fr=u.forwardRef(({className:n,...r},c)=>e.jsx(Vs.Group,{ref:c,className:Q("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",n),...r}));fr.displayName=Vs.Group.displayName;const Z0=u.forwardRef(({className:n,...r},c)=>e.jsx(Vs.Separator,{ref:c,className:Q("-mx-1 h-px bg-border",n),...r}));Z0.displayName=Vs.Separator.displayName;const pr=u.forwardRef(({className:n,...r},c)=>e.jsx(Vs.Item,{ref:c,className:Q("relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",n),...r}));pr.displayName=Vs.Item.displayName;const Cs=u.forwardRef(({className:n,...r},c)=>e.jsx(Kp,{ref:c,className:Q("grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",n),...r,children:e.jsx(Pb,{className:Q("grid place-content-center text-current"),children:e.jsx(Na,{className:"h-4 w-4"})})}));Cs.displayName=Kp.displayName;const Cg=u.createContext(null),kg="maibot-completed-tours";function J0(){try{const n=localStorage.getItem(kg);return n?new Set(JSON.parse(n)):new Set}catch{return new Set}}function lp(n){localStorage.setItem(kg,JSON.stringify([...n]))}function I0({children:n}){const[r,c]=u.useState({activeTourId:null,stepIndex:0,isRunning:!1}),d=u.useRef(new Map),[,h]=u.useState(0),[x,f]=u.useState(J0),j=u.useCallback((H,z)=>{d.current.set(H,z),h(V=>V+1)},[]),p=u.useCallback(H=>{d.current.delete(H),c(z=>z.activeTourId===H?{...z,activeTourId:null,isRunning:!1,stepIndex:0}:z)},[]),N=u.useCallback((H,z=0)=>{d.current.has(H)&&c({activeTourId:H,stepIndex:z,isRunning:!0})},[]),v=u.useCallback(()=>{c(H=>({...H,isRunning:!1}))},[]),C=u.useCallback(H=>{c(z=>({...z,stepIndex:H}))},[]),S=u.useCallback(()=>{c(H=>({...H,stepIndex:H.stepIndex+1}))},[]),w=u.useCallback(()=>{c(H=>({...H,stepIndex:Math.max(0,H.stepIndex-1)}))},[]),L=u.useCallback(()=>r.activeTourId?d.current.get(r.activeTourId)||[]:[],[r.activeTourId]),F=u.useCallback(H=>{f(z=>{const V=new Set(z);return V.add(H),lp(V),V})},[]),B=u.useCallback(H=>{const{action:z,index:V,status:Y,type:E}=H,R=["finished","skipped"];if(z==="close"){c(ne=>({...ne,isRunning:!1,stepIndex:0}));return}R.includes(Y)?c(ne=>(Y==="finished"&&ne.activeTourId&&setTimeout(()=>F(ne.activeTourId),0),{...ne,isRunning:!1,stepIndex:0})):E==="step:after"&&(z==="next"?c(ne=>({...ne,stepIndex:V+1})):z==="prev"&&c(ne=>({...ne,stepIndex:V-1})))},[F]),O=u.useCallback(H=>x.has(H),[x]),K=u.useCallback(H=>{f(z=>{const V=new Set(z);return V.delete(H),lp(V),V})},[]);return e.jsx(Cg.Provider,{value:{state:r,tours:d.current,registerTour:j,unregisterTour:p,startTour:N,stopTour:v,goToStep:C,nextStep:S,prevStep:w,getCurrentSteps:L,handleJoyrideCallback:B,isTourCompleted:O,markTourCompleted:F,resetTourCompleted:K},children:n})}function Xu(){const n=u.useContext(Cg);if(!n)throw new Error("useTour must be used within a TourProvider");return n}const P0={options:{zIndex:1e4,primaryColor:"hsl(var(--primary))",textColor:"hsl(var(--foreground))",backgroundColor:"hsl(var(--background))",arrowColor:"hsl(var(--background))",overlayColor:"rgba(0, 0, 0, 0.5)"},tooltip:{borderRadius:"var(--radius)",padding:"1rem"},tooltipContainer:{textAlign:"left"},tooltipTitle:{fontSize:"1rem",fontWeight:600,marginBottom:"0.5rem"},tooltipContent:{fontSize:"0.875rem",padding:"0.5rem 0"},buttonNext:{backgroundColor:"hsl(var(--primary))",color:"hsl(var(--primary-foreground))",borderRadius:"calc(var(--radius) - 2px)",fontSize:"0.875rem",padding:"0.5rem 1rem"},buttonBack:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem",marginRight:"0.5rem"},buttonSkip:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem"},buttonClose:{color:"hsl(var(--muted-foreground))"},spotlight:{borderRadius:"var(--radius)"}},W0={back:"上一步",close:"关闭",last:"完成",next:"下一步",nextLabelWithProgress:"下一步 ({step}/{steps})",open:"打开对话框",skip:"跳过"};function ew(){const{state:n,getCurrentSteps:r,handleJoyrideCallback:c}=Xu(),d=r(),[h,x]=u.useState(!1),f=u.useRef(n.stepIndex),j=u.useRef(null);u.useEffect(()=>{f.current!==n.stepIndex&&(x(!1),f.current=n.stepIndex)},[n.stepIndex]),u.useEffect(()=>{if(!n.isRunning||d.length===0){x(!1);return}const v=d[n.stepIndex];if(!v){x(!1);return}const C=v.target;if(C==="body"){x(!0);return}x(!1);const S=setTimeout(()=>{const w=()=>{const O=document.querySelector(C);if(O){const K=O.getBoundingClientRect();if(K.width>0&&K.height>0)return!0}return!1};if(w()){setTimeout(()=>x(!0),100);return}const L=setInterval(()=>{w()&&(clearInterval(L),setTimeout(()=>x(!0),100))},100),F=setTimeout(()=>{clearInterval(L),x(!0)},5e3),B=()=>{clearInterval(L),clearTimeout(F)};j.current=B},150);return()=>{clearTimeout(S),j.current&&(j.current(),j.current=null)}},[n.isRunning,n.stepIndex,d]);const p=u.useRef(null);if(u.useEffect(()=>{let v=document.getElementById("tour-portal-container");return v||(v=document.createElement("div"),v.id="tour-portal-container",v.style.cssText="position: fixed; top: 0; left: 0; z-index: 99999; pointer-events: none;",document.body.appendChild(v)),p.current=v,()=>{}},[]),!n.isRunning||d.length===0||!h)return null;const N=e.jsx(Fy,{steps:d,stepIndex:n.stepIndex,run:n.isRunning,continuous:!0,showSkipButton:!0,showProgress:!0,disableOverlayClose:!0,disableScrolling:!1,disableScrollParentFix:!1,callback:c,styles:P0,locale:W0,scrollOffset:80,scrollToFirstStep:!0,floaterProps:{styles:{floater:{zIndex:99999}},disableAnimation:!0}},`tour-step-${n.stepIndex}`);return p.current?eb.createPortal(N,p.current):N}const il="model-assignment-tour",Tg=[{target:"body",content:"本引导旨在帮助你配置模型提供商和对应的模型,并为麦麦的各个组件分配合适的模型。",placement:"center",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="sidebar-model-provider"]',content:'第一步,你需要配置模型提供商。模型提供商决定了你要使用谁家的模型,无论是单一厂商(如 DeepSeek),还是模型平台(如 Siliconflow),都可以在这里进行配置。点击"下一步"进入配置页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-provider-button"]',content:'点击"添加提供商"按钮,开始配置你的模型提供商。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="provider-dialog"]',content:"在这里,你可以选择你想要配置的模型提供商,填写相关信息后保存即可。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-name-input"]',content:"这里的名称是你为这个模型提供商起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-apikey-input"]',content:"这里需要填写你从模型提供商那里获取的 API 密钥,用于验证和调用模型服务。对于不同的提供商,获取 API 密钥的方式可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-url-input"]',content:"这里需要填写模型提供商的 API 访问地址,确保填写正确以便系统能够连接到模型服务。对于不同的提供商,API 地址可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-template-select"]',content:"当然,如果你不知道如何填写这些信息,很多模型提供商在这里都提供了预设的模板供你选择,选择对应的模板后,相关信息会自动填充。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-save-button"]',content:"填写完所有信息后,点击保存按钮,模型提供商就配置完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-cancel-button"]',content:"因为这次咱们什么都没有填写,所以点击取消按钮退出吧。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="sidebar-model-management"]',content:'配置好模型提供商后,接下来我们需要为麦麦添加模型并分配功能。点击"下一步"进入模型管理页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-model-button"]',content:'在为麦麦的组件分配模型之前,首先需要添加你想要分配的模型,点击"添加模型"按钮开始添加。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="model-dialog"]',content:"在这里,你可以选择你之前配置好的模型提供商,然后选择对应的模型来添加。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-name-input"]',content:"这里的模型名称是你为这个模型起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-provider-select"]',content:"在这里选择你之前配置好的模型提供商,这样系统才能知道你要添加哪个提供商的模型。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-identifier-input"]',content:"这里需要填写你想要添加的模型的标识符,不同的模型提供商可能有不同的标识符格式,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-save-button"]',content:"填写完所有信息后,点击保存按钮,模型就添加完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-cancel-button"]',content:"当然,因为这次咱们什么都没有填写,所以直接点击取消按钮退出吧,等你准备好了再来添加模型。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="tasks-tab-trigger"]',content:'最后一步,添加好模型后,切换到"为模型分配功能"标签页,为麦麦的各个组件分配合适的模型。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="task-model-select"]',content:"在这里,你可以为每个组件选择一个或多个合适的模型,选择完成后配置会自动保存。恭喜你完成了模型配置的学习!",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1}],Eg={0:"/config/model",1:"/config/model",2:"/config/modelProvider",3:"/config/modelProvider",4:"/config/modelProvider",5:"/config/modelProvider",6:"/config/modelProvider",7:"/config/modelProvider",8:"/config/modelProvider",9:"/config/modelProvider",10:"/config/modelProvider",11:"/config/model",12:"/config/model",13:"/config/model",14:"/config/model",15:"/config/model",16:"/config/model",17:"/config/model",18:"/config/model",19:"/config/model"},lr=[{id:"siliconflow",name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",client_type:"openai",display_name:"硅基流动 (SiliconFlow)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"deepseek",name:"DeepSeek",base_url:"https://api.deepseek.com",client_type:"openai",display_name:"DeepSeek",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"rinkoai",name:"RinkoAI",base_url:"https://rinkoai.com/v1",client_type:"openai",display_name:"RinkoAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"zhipu",name:"ZhipuAI",base_url:"https://open.bigmodel.cn/api/paas/v4",client_type:"openai",display_name:"智谱 AI (ZhipuAI / GLM)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"moonshot",name:"Moonshot",base_url:"https://api.moonshot.cn/v1",client_type:"openai",display_name:"月之暗面 (Moonshot / Kimi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"doubao",name:"Doubao",base_url:"https://ark.cn-beijing.volces.com/api/v3",client_type:"openai",display_name:"字节豆包 (Doubao)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"alibaba",name:"Alibaba",base_url:"https://dashscope.aliyuncs.com/compatible-mode/v1",client_type:"openai",display_name:"阿里云百炼 (Alibaba Qwen)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"baichuan",name:"Baichuan",base_url:"https://api.baichuan-ai.com/v1",client_type:"openai",display_name:"百川智能 (Baichuan)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"minimax",name:"MiniMax",base_url:"https://api.minimax.chat/v1",client_type:"openai",display_name:"MiniMax (海螺 AI)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"stepfun",name:"StepFun",base_url:"https://api.stepfun.com/v1",client_type:"openai",display_name:"阶跃星辰 (StepFun)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"lingyi",name:"Lingyi",base_url:"https://api.lingyiwanwu.com/v1",client_type:"openai",display_name:"零一万物 (Lingyi / Yi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"openai",name:"OpenAI",base_url:"https://api.openai.com/v1",client_type:"openai",display_name:"OpenAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"xai",name:"xAI",base_url:"https://api.x.ai/v1",client_type:"openai",display_name:"xAI (Grok)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"anthropic",name:"Anthropic",base_url:"https://api.anthropic.com/v1",client_type:"openai",display_name:"Anthropic (Claude)"},{id:"gemini",name:"Gemini",base_url:"https://generativelanguage.googleapis.com/v1beta",client_type:"gemini",display_name:"Google Gemini",modelFetcher:{endpoint:"/models",parser:"gemini"}},{id:"cohere",name:"Cohere",base_url:"https://api.cohere.ai/v1",client_type:"openai",display_name:"Cohere"},{id:"groq",name:"Groq",base_url:"https://api.groq.com/openai/v1",client_type:"openai",display_name:"Groq",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"together",name:"Together AI",base_url:"https://api.together.xyz/v1",client_type:"openai",display_name:"Together AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"fireworks",name:"Fireworks",base_url:"https://api.fireworks.ai/inference/v1",client_type:"openai",display_name:"Fireworks AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"mistral",name:"Mistral",base_url:"https://api.mistral.ai/v1",client_type:"openai",display_name:"Mistral AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"perplexity",name:"Perplexity",base_url:"https://api.perplexity.ai",client_type:"openai",display_name:"Perplexity AI"},{id:"custom",name:"",base_url:"",client_type:"openai",display_name:"自定义"}];function np(n){return n?n.replace(/\/+$/,"").toLowerCase():""}function tw(n){if(!n)return null;const r=np(n);return lr.find(c=>c.id!=="custom"&&np(c.base_url)===r)||null}function sw(){const[n,r]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,N]=u.useState(!1),[v,C]=u.useState(!1),[S,w]=u.useState(!1),[L,F]=u.useState(!1),[B,O]=u.useState(null),[K,H]=u.useState(null),[z,V]=u.useState("custom"),[Y,E]=u.useState(!1),[R,ne]=u.useState(!1),[fe,Ce]=u.useState(null),[we,pe]=u.useState(!1),[Ne,be]=u.useState(""),[A,X]=u.useState(new Set),[T,te]=u.useState(!1),[_,me]=u.useState(1),[oe,ae]=u.useState(20),[xe,ve]=u.useState(""),[de,G]=u.useState({}),[W,U]=u.useState(new Set),[ee,Se]=u.useState(new Map),{toast:Me}=Xt(),tt=fa(),{state:Xe,goToStep:Ut,registerTour:Bt}=Xu(),re=u.useRef(null),ke=u.useRef(!0);u.useEffect(()=>{Bt(il,Tg)},[Bt]),u.useEffect(()=>{if(Xe.activeTourId===il&&Xe.isRunning){const P=Eg[Xe.stepIndex];P&&!window.location.pathname.endsWith(P.replace("/config/",""))&&tt({to:P})}},[Xe.stepIndex,Xe.activeTourId,Xe.isRunning,tt]);const Pe=u.useRef(Xe.stepIndex);u.useEffect(()=>{if(Xe.activeTourId===il&&Xe.isRunning){const P=Pe.current,ye=Xe.stepIndex;P>=3&&P<=9&&ye<3&&F(!1),P>=10&&ye>=3&&ye<=9&&(G({}),V("custom"),O({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10}),H(null),pe(!1),F(!0)),Pe.current=ye}},[Xe.stepIndex,Xe.activeTourId,Xe.isRunning]),u.useEffect(()=>{if(Xe.activeTourId!==il||!Xe.isRunning)return;const P=ye=>{const Re=ye.target,us=Xe.stepIndex;us===2&&Re.closest('[data-tour="add-provider-button"]')?setTimeout(()=>Ut(3),300):us===9&&Re.closest('[data-tour="provider-cancel-button"]')&&setTimeout(()=>Ut(10),300)};return document.addEventListener("click",P,!0),()=>document.removeEventListener("click",P,!0)},[Xe,Ut]),u.useEffect(()=>{Fe()},[]);const Fe=async()=>{try{d(!0);const P=await ei();r(P.api_providers||[]),N(!1),ke.current=!1}catch(P){console.error("加载配置失败:",P)}finally{d(!1)}},ts=async()=>{try{C(!0),so().catch(()=>{}),w(!0)}catch(P){console.error("重启失败:",P),w(!1),Me({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),C(!1)}},As=async()=>{try{x(!0),re.current&&clearTimeout(re.current);const P=await ei();P.api_providers=n,await eo(P),N(!1),Me({title:"保存成功",description:"正在重启麦麦..."}),await ts()}catch(P){console.error("保存配置失败:",P),Me({title:"保存失败",description:P.message,variant:"destructive"}),x(!1)}},js=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},Ke=()=>{w(!1),C(!1),Me({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},D=u.useCallback(async P=>{if(!ke.current)try{j(!0),await Ou("api_providers",P),N(!1)}catch(ye){console.error("自动保存失败:",ye),N(!0)}finally{j(!1)}},[]);u.useEffect(()=>{if(!ke.current)return N(!0),re.current&&clearTimeout(re.current),re.current=setTimeout(()=>{D(n)},2e3),()=>{re.current&&clearTimeout(re.current)}},[n,D]);const De=async()=>{try{x(!0),re.current&&clearTimeout(re.current);const P=await ei();P.api_providers=n,await eo(P),N(!1),Me({title:"保存成功",description:"模型提供商配置已保存"})}catch(P){console.error("保存配置失败:",P),Me({title:"保存失败",description:P.message,variant:"destructive"})}finally{x(!1)}},ze=(P,ye)=>{if(G({}),P){const Re=lr.find(us=>us.base_url===P.base_url&&us.client_type===P.client_type);V(Re?.id||"custom"),O(P)}else V("custom"),O({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10});H(ye),pe(!1),F(!0)},Ve=P=>{V(P),E(!1);const ye=lr.find(Re=>Re.id===P);ye&&ye.id!=="custom"?O(Re=>({...Re,name:ye.name,base_url:ye.base_url,client_type:ye.client_type})):ye?.id==="custom"&&O(Re=>({...Re,name:"",base_url:"",client_type:"openai"}))},At=u.useMemo(()=>z!=="custom",[z]),We=async()=>{if(B?.api_key)try{await navigator.clipboard.writeText(B.api_key),Me({title:"复制成功",description:"API Key 已复制到剪贴板"})}catch{Me({title:"复制失败",description:"无法访问剪贴板",variant:"destructive"})}},ss=()=>{if(!B)return;const P={};if(B.name?.trim()||(P.name="请输入提供商名称"),B.base_url?.trim()||(P.base_url="请输入基础 URL"),B.api_key?.trim()||(P.api_key="请输入 API Key"),Object.keys(P).length>0){G(P);return}G({});const ye={...B,max_retry:B.max_retry??2,timeout:B.timeout??30,retry_interval:B.retry_interval??10};if(K!==null){const Re=[...n];Re[K]=ye,r(Re)}else r([...n,ye]);F(!1),O(null),H(null)},gt=P=>{if(!P&&B){const ye={...B,max_retry:B.max_retry??2,timeout:B.timeout??30,retry_interval:B.retry_interval??10};O(ye)}F(P)},_e=P=>{Ce(P),ne(!0)},je=()=>{if(fe!==null){const P=n.filter((ye,Re)=>Re!==fe);r(P),Me({title:"删除成功",description:"提供商已从列表中移除"})}ne(!1),Ce(null)},yt=P=>{const ye=new Set(A);ye.has(P)?ye.delete(P):ye.add(P),X(ye)},Ht=()=>{if(A.size===Kt.length)X(new Set);else{const P=Kt.map((ye,Re)=>n.findIndex(us=>us===Kt[Re]));X(new Set(P))}},pa=()=>{if(A.size===0){Me({title:"提示",description:"请先选择要删除的提供商",variant:"default"});return}te(!0)},Ts=()=>{const P=n.filter((ye,Re)=>!A.has(Re));r(P),X(new Set),te(!1),Me({title:"批量删除成功",description:`已删除 ${A.size} 个提供商`})},Kt=n.filter(P=>{if(!Ne)return!0;const ye=Ne.toLowerCase();return P.name.toLowerCase().includes(ye)||P.base_url.toLowerCase().includes(ye)||P.client_type.toLowerCase().includes(ye)}),Ms=Math.ceil(Kt.length/oe),Ds=Kt.slice((_-1)*oe,_*oe),Ha=()=>{const P=parseInt(xe);P>=1&&P<=Ms&&(me(P),ve(""))},Fs=async P=>{U(ye=>new Set(ye).add(P));try{const ye=await C0(P);Se(Re=>new Map(Re).set(P,ye)),ye.network_ok?ye.api_key_valid===!0?Me({title:"连接正常",description:`${P} 网络连接正常,API Key 有效 (${ye.latency_ms}ms)`}):ye.api_key_valid===!1?Me({title:"连接正常但 Key 无效",description:`${P} 网络连接正常,但 API Key 无效或已过期`,variant:"destructive"}):Me({title:"网络连接正常",description:`${P} 可以访问 (${ye.latency_ms}ms)`}):Me({title:"连接失败",description:ye.error||"无法连接到提供商",variant:"destructive"})}catch(ye){Me({title:"测试失败",description:ye.message,variant:"destructive"})}finally{U(ye=>{const Re=new Set(ye);return Re.delete(P),Re})}},qa=async()=>{for(const P of n)await Fs(P.name)},Sa=P=>{const ye=W.has(P),Re=ee.get(P);return ye?e.jsxs(Je,{variant:"secondary",className:"gap-1",children:[e.jsx(Ss,{className:"h-3 w-3 animate-spin"}),"测试中"]}):Re?Re.network_ok?Re.api_key_valid===!0?e.jsxs(Je,{className:"gap-1 bg-green-600 hover:bg-green-700",children:[e.jsx(ha,{className:"h-3 w-3"}),"正常"]}):Re.api_key_valid===!1?e.jsxs(Je,{variant:"destructive",className:"gap-1",children:[e.jsx(Oa,{className:"h-3 w-3"}),"Key无效"]}):e.jsxs(Je,{className:"gap-1 bg-blue-600 hover:bg-blue-700",children:[e.jsx(ha,{className:"h-3 w-3"}),"可访问"]}):e.jsxs(Je,{variant:"destructive",className:"gap-1",children:[e.jsx(sg,{className:"h-3 w-3"}),"离线"]}):null};return c?e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})}):e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"AI模型厂商配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理 AI 模型厂商的 API 配置"})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[A.size>0&&e.jsxs(b,{onClick:pa,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(at,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",A.size,")"]}),e.jsxs(b,{onClick:qa,size:"sm",variant:"outline",className:"w-full sm:w-auto",disabled:n.length===0||W.size>0,children:[e.jsx(ln,{className:"mr-2 h-4 w-4"}),W.size>0?`测试中 (${W.size})`:"测试全部"]}),e.jsxs(b,{onClick:()=>ze(null,null),size:"sm",className:"w-full sm:w-auto","data-tour":"add-provider-button",children:[e.jsx(hs,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加提供商"]}),e.jsxs(b,{onClick:De,disabled:h||f||!p||v,size:"sm",variant:"outline",className:"w-full sm:w-auto sm:min-w-[120px]",children:[e.jsx(jr,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),h?"保存中...":f?"自动保存中...":p?"保存配置":"已保存"]}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsxs(b,{disabled:h||f||v,size:"sm",className:"w-full sm:w-auto sm:min-w-[120px]",children:[e.jsx(gr,{className:"mr-2 h-4 w-4"}),v?"重启中...":p?"保存并重启":"重启麦麦"]})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认重启麦麦?"}),e.jsx(xt,{asChild:!0,children:e.jsx("div",{children:e.jsx("p",{children:p?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"})})})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:p?As:ts,children:p?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsxs(cl,{children:[e.jsx(Ra,{className:"h-4 w-4"}),e.jsxs(ol,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),e.jsxs(st,{className:"h-[calc(100vh-260px)]",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2 mb-4",children:[e.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[e.jsx(zs,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索提供商名称、URL 或类型...",value:Ne,onChange:P=>be(P.target.value),className:"pl-9"})]}),Ne&&e.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",Kt.length," 个结果"]})]}),e.jsx("div",{className:"md:hidden space-y-3",children:Kt.length===0?e.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:Ne?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'}):Ds.map((P,ye)=>{const Re=n.findIndex(us=>us===P);return e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("h3",{className:"font-semibold text-base truncate",children:P.name}),Sa(P.name)]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1 break-all",children:P.base_url})]}),e.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>Fs(P.name),disabled:W.has(P.name),title:"测试连接",children:W.has(P.name)?e.jsx(Ss,{className:"h-4 w-4 animate-spin"}):e.jsx(ln,{className:"h-4 w-4"})}),e.jsx(b,{variant:"default",size:"sm",onClick:()=>ze(P,Re),children:e.jsx(nn,{className:"h-4 w-4",strokeWidth:2,fill:"none"})}),e.jsx(b,{size:"sm",onClick:()=>_e(Re),className:"bg-red-600 hover:bg-red-700 text-white",children:e.jsx(at,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"客户端类型"}),e.jsx("p",{className:"font-medium",children:P.client_type})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"最大重试"}),e.jsx("p",{className:"font-medium",children:P.max_retry})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"超时(秒)"}),e.jsx("p",{className:"font-medium",children:P.timeout})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"重试间隔(秒)"}),e.jsx("p",{className:"font-medium",children:P.retry_interval})]})]})]},ye)})}),e.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(li,{children:[e.jsx(ni,{children:e.jsxs(_s,{children:[e.jsx(rt,{className:"w-12",children:e.jsx(Cs,{checked:A.size===Kt.length&&Kt.length>0,onCheckedChange:Ht})}),e.jsx(rt,{children:"状态"}),e.jsx(rt,{children:"名称"}),e.jsx(rt,{children:"基础URL"}),e.jsx(rt,{children:"客户端类型"}),e.jsx(rt,{className:"text-right",children:"最大重试"}),e.jsx(rt,{className:"text-right",children:"超时(秒)"}),e.jsx(rt,{className:"text-right",children:"重试间隔(秒)"}),e.jsx(rt,{className:"text-right",children:"操作"})]})}),e.jsx(ii,{children:Ds.length===0?e.jsx(_s,{children:e.jsx(Ze,{colSpan:9,className:"text-center text-muted-foreground py-8",children:Ne?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'})}):Ds.map((P,ye)=>{const Re=n.findIndex(us=>us===P);return e.jsxs(_s,{children:[e.jsx(Ze,{children:e.jsx(Cs,{checked:A.has(Re),onCheckedChange:()=>yt(Re)})}),e.jsx(Ze,{children:Sa(P.name)||e.jsx(Je,{variant:"outline",className:"text-muted-foreground",children:"未测试"})}),e.jsx(Ze,{className:"font-medium",children:P.name}),e.jsx(Ze,{className:"max-w-xs truncate",title:P.base_url,children:P.base_url}),e.jsx(Ze,{children:P.client_type}),e.jsx(Ze,{className:"text-right",children:P.max_retry}),e.jsx(Ze,{className:"text-right",children:P.timeout}),e.jsx(Ze,{className:"text-right",children:P.retry_interval}),e.jsx(Ze,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>Fs(P.name),disabled:W.has(P.name),title:"测试连接",children:W.has(P.name)?e.jsx(Ss,{className:"h-4 w-4 animate-spin"}):e.jsx(ln,{className:"h-4 w-4"})}),e.jsxs(b,{variant:"default",size:"sm",onClick:()=>ze(P,Re),children:[e.jsx(nn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(b,{size:"sm",onClick:()=>_e(Re),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(at,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},ye)})})]})})}),Kt.length>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{htmlFor:"page-size-provider",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(qe,{value:oe.toString(),onValueChange:P=>{ae(parseInt(P)),me(1),X(new Set)},children:[e.jsx(Be,{id:"page-size-provider",className:"w-20",children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"10",children:"10"}),e.jsx(ie,{value:"20",children:"20"}),e.jsx(ie,{value:"50",children:"50"}),e.jsx(ie,{value:"100",children:"100"})]})]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(_-1)*oe+1," 到"," ",Math.min(_*oe,Kt.length)," 条,共 ",Kt.length," 条"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>me(1),disabled:_===1,className:"hidden sm:flex",children:e.jsx(vr,{className:"h-4 w-4"})}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>me(P=>Math.max(1,P-1)),disabled:_===1,children:[e.jsx(dn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:xe,onChange:P=>ve(P.target.value),onKeyDown:P=>P.key==="Enter"&&Ha(),placeholder:_.toString(),className:"w-16 h-8 text-center",min:1,max:Ms}),e.jsx(b,{variant:"outline",size:"sm",onClick:Ha,disabled:!xe,className:"h-8",children:"跳转"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>me(P=>P+1),disabled:_>=Ms,children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(Ll,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>me(Ms),disabled:_>=Ms,className:"hidden sm:flex",children:e.jsx(br,{className:"h-4 w-4"})})]})]})]}),e.jsx(Jt,{open:L,onOpenChange:gt,children:e.jsxs($t,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"provider-dialog",preventOutsideClose:Xe.isRunning,children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:K!==null?"编辑提供商":"添加提供商"}),e.jsx(ds,{children:"配置 API 提供商的连接信息和参数"})]}),e.jsxs("form",{onSubmit:P=>{P.preventDefault(),ss()},autoComplete:"off",children:[e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":"provider-template-select",children:[e.jsx(y,{htmlFor:"template",children:"提供商模板"}),e.jsxs(Ua,{open:Y,onOpenChange:E,children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(b,{variant:"outline",role:"combobox","aria-expanded":Y,className:"w-full justify-between",children:[z?lr.find(P=>P.id===z)?.display_name:"选择提供商模板...",e.jsx(qu,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(_a,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:e.jsxs(ao,{children:[e.jsx(lo,{placeholder:"搜索提供商模板..."}),e.jsx(st,{className:"h-[300px]",children:e.jsxs(no,{className:"max-h-none overflow-visible",children:[e.jsx(io,{children:"未找到匹配的模板"}),e.jsx(fr,{children:lr.map(P=>e.jsxs(pr,{value:P.display_name,onSelect:()=>Ve(P.id),children:[e.jsx(Na,{className:`mr-2 h-4 w-4 ${z===P.id?"opacity-100":"opacity-0"}`}),P.display_name]},P.id))})]})})]})})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"选择预设模板可自动填充 URL 和客户端类型,支持搜索"})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-name-input",children:[e.jsx(y,{htmlFor:"name",className:de.name?"text-destructive":"",children:"名称 *"}),e.jsx(ce,{id:"name",value:B?.name||"",onChange:P=>{O(ye=>ye?{...ye,name:P.target.value}:null),de.name&&G(ye=>({...ye,name:void 0}))},placeholder:"例如: DeepSeek, SiliconFlow",className:de.name?"border-destructive focus-visible:ring-destructive":""}),de.name&&e.jsx("p",{className:"text-xs text-destructive",children:de.name})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-url-input",children:[e.jsx(y,{htmlFor:"base_url",className:de.base_url?"text-destructive":"",children:"基础 URL *"}),e.jsx(ce,{id:"base_url",value:B?.base_url||"",onChange:P=>{O(ye=>ye?{...ye,base_url:P.target.value}:null),de.base_url&&G(ye=>({...ye,base_url:void 0}))},placeholder:"https://api.example.com/v1",disabled:At,className:`${At?"bg-muted cursor-not-allowed":""} ${de.base_url?"border-destructive focus-visible:ring-destructive":""}`}),de.base_url&&e.jsx("p",{className:"text-xs text-destructive",children:de.base_url}),At&&!de.base_url&&e.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时 URL 不可编辑,切换到"自定义"以手动配置'})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-apikey-input",children:[e.jsx(y,{htmlFor:"api_key",className:de.api_key?"text-destructive":"",children:"API Key *"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{id:"api_key",type:we?"text":"password",value:B?.api_key||"",onChange:P=>{O(ye=>ye?{...ye,api_key:P.target.value}:null),de.api_key&&G(ye=>({...ye,api_key:void 0}))},placeholder:"sk-...",className:`flex-1 ${de.api_key?"border-destructive focus-visible:ring-destructive":""}`}),e.jsx(b,{type:"button",variant:"outline",size:"icon",onClick:()=>pe(!we),title:we?"隐藏密钥":"显示密钥",children:we?e.jsx(or,{className:"h-4 w-4"}):e.jsx(Ws,{className:"h-4 w-4"})}),e.jsx(b,{type:"button",variant:"outline",size:"icon",onClick:We,title:"复制密钥",children:e.jsx(Jc,{className:"h-4 w-4"})})]}),de.api_key&&e.jsx("p",{className:"text-xs text-destructive",children:de.api_key})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"client_type",children:"客户端类型"}),e.jsxs(qe,{value:B?.client_type||"openai",onValueChange:P=>O(ye=>ye?{...ye,client_type:P}:null),disabled:At,children:[e.jsx(Be,{id:"client_type",className:At?"bg-muted cursor-not-allowed":"",children:e.jsx(Ge,{placeholder:"选择客户端类型"})}),e.jsxs(He,{children:[e.jsx(ie,{value:"openai",children:"OpenAI"}),e.jsx(ie,{value:"gemini",children:"Gemini"})]})]}),At&&e.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时客户端类型不可编辑,切换到"自定义"以手动配置'})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"max_retry",children:"最大重试"}),e.jsx(ce,{id:"max_retry",type:"number",min:"0",value:B?.max_retry??"",onChange:P=>{const ye=P.target.value===""?null:parseInt(P.target.value);O(Re=>Re?{...Re,max_retry:ye}:null)},placeholder:"默认: 2"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"timeout",children:"超时(秒)"}),e.jsx(ce,{id:"timeout",type:"number",min:"1",value:B?.timeout??"",onChange:P=>{const ye=P.target.value===""?null:parseInt(P.target.value);O(Re=>Re?{...Re,timeout:ye}:null)},placeholder:"默认: 30"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"retry_interval",children:"重试间隔(秒)"}),e.jsx(ce,{id:"retry_interval",type:"number",min:"1",value:B?.retry_interval??"",onChange:P=>{const ye=P.target.value===""?null:parseInt(P.target.value);O(Re=>Re?{...Re,retry_interval:ye}:null)},placeholder:"默认: 10"})]})]})]}),e.jsxs(xs,{children:[e.jsx(b,{type:"button",variant:"outline",onClick:()=>F(!1),"data-tour":"provider-cancel-button",children:"取消"}),e.jsx(b,{type:"submit","data-tour":"provider-save-button",children:"保存"})]})]})]})}),e.jsx(bt,{open:R,onOpenChange:ne,children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:['确定要删除提供商 "',fe!==null?n[fe]?.name:"",'" 吗? 此操作无法撤销。']})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:je,children:"删除"})]})]})}),e.jsx(bt,{open:T,onOpenChange:te,children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认批量删除"}),e.jsxs(xt,{children:["确定要删除选中的 ",A.size," 个提供商吗? 此操作无法撤销。"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:Ts,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),S&&e.jsx(Yu,{onRestartComplete:js,onRestartFailed:Ke})]})}function aw({value:n,label:r,onRemove:c}){const{attributes:d,listeners:h,setNodeRef:x,transform:f,transition:j,isDragging:p}=eN({id:n}),N={transform:tN.Transform.toString(f),transition:j,opacity:p?.5:1},v=S=>{S.preventDefault(),S.stopPropagation(),c(n)},C=S=>{S.stopPropagation()};return e.jsx("div",{ref:x,style:N,className:Q("inline-flex items-center gap-1",p&&"shadow-lg"),children:e.jsxs(Je,{variant:"secondary",className:"cursor-move hover:bg-secondary/80 flex items-center gap-1",children:[e.jsx("div",{...d,...h,className:"cursor-grab active:cursor-grabbing flex items-center",children:e.jsx(jy,{className:"h-3 w-3 text-muted-foreground"})}),e.jsx("span",{children:r}),e.jsx("button",{type:"button",className:"ml-1 rounded-sm hover:bg-destructive/20 focus:outline-none focus:ring-1 focus:ring-destructive",onClick:v,onPointerDown:C,onMouseDown:S=>S.stopPropagation(),children:e.jsx(on,{className:"h-3 w-3 cursor-pointer hover:text-destructive",strokeWidth:2,fill:"none"})})]})})}function lw({options:n,selected:r,onChange:c,placeholder:d="选择选项...",emptyText:h="未找到选项",className:x}){const[f,j]=u.useState(!1),p=Qy(Yf(Wy,{activationConstraint:{distance:8}}),Yf(Py,{coordinateGetter:Iy})),N=S=>{r.includes(S)?c(r.filter(w=>w!==S)):c([...r,S])},v=S=>{c(r.filter(w=>w!==S))},C=S=>{const{active:w,over:L}=S;if(L&&w.id!==L.id){const F=r.indexOf(w.id),B=r.indexOf(L.id);c(Jy(r,F,B))}};return e.jsxs(Ua,{open:f,onOpenChange:j,children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(b,{variant:"outline",role:"combobox","aria-expanded":f,className:Q("w-full justify-between min-h-10 h-auto",x),children:[e.jsx(Yy,{sensors:p,collisionDetection:Xy,onDragEnd:C,children:e.jsx(Ky,{items:r,strategy:Zy,children:e.jsx("div",{className:"flex gap-1 flex-wrap flex-1",children:r.length===0?e.jsx("span",{className:"text-muted-foreground",children:d}):r.map(S=>{const w=n.find(L=>L.value===S);return e.jsx(aw,{value:S,label:w?.label||S,onRemove:v},S)})})})}),e.jsx(qu,{className:"ml-2 h-4 w-4 shrink-0 opacity-50",strokeWidth:2,fill:"none"})]})}),e.jsx(_a,{className:"w-full p-0",align:"start",children:e.jsxs(ao,{children:[e.jsx(lo,{placeholder:"搜索...",className:"h-9"}),e.jsxs(no,{children:[e.jsx(io,{children:h}),e.jsx(fr,{children:n.map(S=>{const w=r.includes(S.value);return e.jsxs(pr,{value:S.value,onSelect:()=>N(S.value),children:[e.jsx("div",{className:Q("mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary",w?"bg-primary text-primary-foreground":"opacity-50 [&_svg]:invisible"),children:e.jsx(Na,{className:"h-3 w-3",strokeWidth:2,fill:"none"})}),e.jsx("span",{children:S.label})]},S.value)})})]})]})})]})}const ip=new Map,nw=300*1e3;function iw(){const[n,r]=u.useState([]),[c,d]=u.useState([]),[h,x]=u.useState([]),[f,j]=u.useState([]),[p,N]=u.useState(null),[v,C]=u.useState(!0),[S,w]=u.useState(!1),[L,F]=u.useState(!1),[B,O]=u.useState(!1),[K,H]=u.useState(!1),[z,V]=u.useState(!1),[Y,E]=u.useState(!1),[R,ne]=u.useState(null),[fe,Ce]=u.useState(null),[we,pe]=u.useState(!1),[Ne,be]=u.useState(null),[A,X]=u.useState(""),[T,te]=u.useState(new Set),[_,me]=u.useState(!1),[oe,ae]=u.useState(1),[xe,ve]=u.useState(20),[de,G]=u.useState(""),[W,U]=u.useState([]),[ee,Se]=u.useState(!1),[Me,tt]=u.useState(null),[Xe,Ut]=u.useState(!1),[Bt,re]=u.useState(null),[ke,Pe]=u.useState({}),{toast:Fe}=Xt(),ts=fa(),{registerTour:As,startTour:js,state:Ke,goToStep:D}=Xu(),De=u.useRef(null),ze=u.useRef(null),Ve=u.useRef(!0);u.useEffect(()=>{As(il,Tg)},[As]),u.useEffect(()=>{if(Ke.activeTourId===il&&Ke.isRunning){const $=Eg[Ke.stepIndex];$&&!window.location.pathname.endsWith($.replace("/config/",""))&&ts({to:$})}},[Ke.stepIndex,Ke.activeTourId,Ke.isRunning,ts]);const At=u.useRef(Ke.stepIndex);u.useEffect(()=>{if(Ke.activeTourId===il&&Ke.isRunning){const $=At.current,ge=Ke.stepIndex;$>=12&&$<=17&&ge<12&&E(!1),At.current=ge}},[Ke.stepIndex,Ke.activeTourId,Ke.isRunning]),u.useEffect(()=>{if(Ke.activeTourId!==il||!Ke.isRunning)return;const $=ge=>{const Le=ge.target,$e=Ke.stepIndex;$e===2&&Le.closest('[data-tour="add-provider-button"]')?setTimeout(()=>D(3),300):$e===9&&Le.closest('[data-tour="provider-cancel-button"]')?setTimeout(()=>D(10),300):$e===11&&Le.closest('[data-tour="add-model-button"]')?setTimeout(()=>D(12),300):$e===17&&Le.closest('[data-tour="model-cancel-button"]')?setTimeout(()=>D(18),300):$e===18&&Le.closest('[data-tour="tasks-tab-trigger"]')&&setTimeout(()=>D(19),300)};return document.addEventListener("click",$,!0),()=>document.removeEventListener("click",$,!0)},[Ke,D]);const We=()=>{js(il)};u.useEffect(()=>{ss()},[]);const ss=async()=>{try{C(!0);const $=await ei(),ge=$.models||[];r(ge),j(ge.map($e=>$e.name));const Le=$.api_providers||[];d(Le.map($e=>$e.name)),x(Le),N($.model_task_config||null),O(!1),Ve.current=!1}catch($){console.error("加载配置失败:",$)}finally{C(!1)}},gt=u.useCallback($=>h.find(ge=>ge.name===$),[h]),_e=u.useCallback(async($,ge=!1)=>{const Le=gt($);if(!Le?.base_url){U([]),re(null),tt('提供商配置不完整,请先在"模型提供商配置"中配置');return}if(!Le.api_key){U([]),re(null),tt('该提供商未配置 API Key,请先在"模型提供商配置"中填写');return}const $e=tw(Le.base_url);if(re($e),!$e?.modelFetcher){U([]),tt(null);return}const jt=`${$}:${Le.base_url}`,ea=ip.get(jt);if(!ge&&ea&&Date.now()-ea.timestamp{Y&&R?.api_provider&&_e(R.api_provider)},[Y,R?.api_provider,_e]);const je=async()=>{try{H(!0),so().catch(()=>{}),V(!0)}catch($){console.error("重启失败:",$),V(!1),Fe({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),H(!1)}},yt=async()=>{try{w(!0),De.current&&clearTimeout(De.current),ze.current&&clearTimeout(ze.current);const $=await ei();$.models=n,$.model_task_config=p,await eo($),O(!1),Fe({title:"保存成功",description:"正在重启麦麦..."}),await je()}catch($){console.error("保存配置失败:",$),Fe({title:"保存失败",description:$.message,variant:"destructive"}),w(!1)}},Ht=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},pa=()=>{V(!1),H(!1),Fe({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},Ts=u.useCallback(async $=>{if(!Ve.current)try{F(!0),await Ou("models",$),O(!1)}catch(ge){console.error("自动保存模型列表失败:",ge),O(!0)}finally{F(!1)}},[]),Kt=u.useCallback(async $=>{if(!Ve.current)try{F(!0),await Ou("model_task_config",$),O(!1)}catch(ge){console.error("自动保存任务配置失败:",ge),O(!0)}finally{F(!1)}},[]);u.useEffect(()=>{if(!Ve.current)return O(!0),De.current&&clearTimeout(De.current),De.current=setTimeout(()=>{Ts(n)},2e3),()=>{De.current&&clearTimeout(De.current)}},[n,Ts]),u.useEffect(()=>{if(!(Ve.current||!p))return O(!0),ze.current&&clearTimeout(ze.current),ze.current=setTimeout(()=>{Kt(p)},2e3),()=>{ze.current&&clearTimeout(ze.current)}},[p,Kt]);const Ms=async()=>{try{w(!0),De.current&&clearTimeout(De.current),ze.current&&clearTimeout(ze.current);const $=await ei();$.models=n,$.model_task_config=p,await eo($),O(!1),Fe({title:"保存成功",description:"模型配置已保存"}),await ss()}catch($){console.error("保存配置失败:",$),Fe({title:"保存失败",description:$.message,variant:"destructive"})}finally{w(!1)}},Ds=($,ge)=>{Pe({}),ne($||{model_identifier:"",name:"",api_provider:c[0]||"",price_in:0,price_out:0,force_stream_mode:!1,extra_params:{}}),Ce(ge),E(!0)},Ha=()=>{if(!R)return;const $={};if(R.name?.trim()||($.name="请输入模型名称"),R.api_provider?.trim()||($.api_provider="请选择 API 提供商"),R.model_identifier?.trim()||($.model_identifier="请输入模型标识符"),Object.keys($).length>0){Pe($);return}Pe({});const ge={...R,price_in:R.price_in??0,price_out:R.price_out??0};let Le,$e=null;if(fe!==null?($e=n[fe].name,Le=[...n],Le[fe]=ge):Le=[...n,ge],r(Le),j(Le.map(jt=>jt.name)),$e&&$e!==ge.name&&p){const jt=ea=>ea.map(ta=>ta===$e?ge.name:ta);N({...p,utils:{...p.utils,model_list:jt(p.utils?.model_list||[])},utils_small:{...p.utils_small,model_list:jt(p.utils_small?.model_list||[])},tool_use:{...p.tool_use,model_list:jt(p.tool_use?.model_list||[])},replyer:{...p.replyer,model_list:jt(p.replyer?.model_list||[])},planner:{...p.planner,model_list:jt(p.planner?.model_list||[])},vlm:{...p.vlm,model_list:jt(p.vlm?.model_list||[])},voice:{...p.voice,model_list:jt(p.voice?.model_list||[])},embedding:{...p.embedding,model_list:jt(p.embedding?.model_list||[])},lpmm_entity_extract:{...p.lpmm_entity_extract,model_list:jt(p.lpmm_entity_extract?.model_list||[])},lpmm_rdf_build:{...p.lpmm_rdf_build,model_list:jt(p.lpmm_rdf_build?.model_list||[])},lpmm_qa:{...p.lpmm_qa,model_list:jt(p.lpmm_qa?.model_list||[])}})}E(!1),ne(null),Ce(null)},Fs=$=>{if(!$&&R){const ge={...R,price_in:R.price_in??0,price_out:R.price_out??0};ne(ge)}E($)},qa=$=>{be($),pe(!0)},Sa=()=>{if(Ne!==null){const $=n.filter((ge,Le)=>Le!==Ne);r($),j($.map(ge=>ge.name)),Fe({title:"删除成功",description:"模型已从列表中移除"})}pe(!1),be(null)},P=$=>{const ge=new Set(T);ge.has($)?ge.delete($):ge.add($),te(ge)},ye=()=>{if(T.size===Os.length)te(new Set);else{const $=Os.map((ge,Le)=>n.findIndex($e=>$e===Os[Le]));te(new Set($))}},Re=()=>{if(T.size===0){Fe({title:"提示",description:"请先选择要删除的模型",variant:"default"});return}me(!0)},us=()=>{const $=n.filter((ge,Le)=>!T.has(Le));r($),j($.map(ge=>ge.name)),te(new Set),me(!1),Fe({title:"批量删除成功",description:`已删除 ${T.size} 个模型`})},$s=($,ge,Le)=>{p&&N({...p,[$]:{...p[$],[ge]:Le}})},Os=n.filter($=>{if(!A)return!0;const ge=A.toLowerCase();return $.name.toLowerCase().includes(ge)||$.model_identifier.toLowerCase().includes(ge)||$.api_provider.toLowerCase().includes(ge)}),dl=Math.ceil(Os.length/xe),Hl=Os.slice((oe-1)*xe,oe*xe),un=()=>{const $=parseInt(de);$>=1&&$<=dl&&(ae($),G(""))},mn=$=>p?[p.utils?.model_list||[],p.utils_small?.model_list||[],p.tool_use?.model_list||[],p.replyer?.model_list||[],p.planner?.model_list||[],p.vlm?.model_list||[],p.voice?.model_list||[],p.embedding?.model_list||[],p.lpmm_entity_extract?.model_list||[],p.lpmm_rdf_build?.model_list||[],p.lpmm_qa?.model_list||[]].some(Le=>Le.includes($)):!1;return v?e.jsx(st,{className:"h-full",children:e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):e.jsx(st,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"模型管理与分配"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"添加模型并为模型分配功能"})]}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[e.jsxs(b,{onClick:Ms,disabled:S||L||!B||K,size:"sm",variant:"outline",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[e.jsx(jr,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),S?"保存中...":L?"自动保存中...":B?"保存配置":"已保存"]}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsxs(b,{disabled:S||L||K,size:"sm",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[e.jsx(gr,{className:"mr-2 h-4 w-4"}),K?"重启中...":B?"保存并重启":"重启麦麦"]})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认重启麦麦?"}),e.jsx(xt,{asChild:!0,children:e.jsx("div",{children:e.jsx("p",{children:B?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"})})})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:B?yt:je,children:B?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsxs(cl,{children:[e.jsx(Ra,{className:"h-4 w-4"}),e.jsxs(ol,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),e.jsxs(cl,{className:"hidden lg:flex border-primary/30 bg-primary/5 cursor-pointer hover:bg-primary/10 transition-colors",onClick:We,children:[e.jsx(vy,{className:"h-4 w-4 text-primary"}),e.jsxs(ol,{className:"flex items-center justify-between",children:[e.jsxs("span",{children:[e.jsx("strong",{className:"text-primary",children:"新手引导:"}),"不知道如何配置模型?点击这里开始学习如何为麦麦的组件分配模型。"]}),e.jsx(b,{variant:"outline",size:"sm",className:"ml-4 shrink-0",children:"开始引导"})]})]}),e.jsxs(La,{defaultValue:"models",className:"w-full",children:[e.jsxs(wa,{className:"grid w-full max-w-full sm:max-w-md grid-cols-2",children:[e.jsx(it,{value:"models",children:"添加模型"}),e.jsx(it,{value:"tasks","data-tour":"tasks-tab-trigger",children:"为模型分配功能"})]}),e.jsxs(zt,{value:"models",className:"space-y-4 mt-0",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-2",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"配置可用的模型列表"}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[T.size>0&&e.jsxs(b,{onClick:Re,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(at,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",T.size,")"]}),e.jsxs(b,{onClick:()=>Ds(null,null),size:"sm",variant:"outline",className:"w-full sm:w-auto","data-tour":"add-model-button",children:[e.jsx(hs,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加模型"]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2",children:[e.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[e.jsx(zs,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索模型名称、标识符或提供商...",value:A,onChange:$=>X($.target.value),className:"pl-9"})]}),A&&e.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",Os.length," 个结果"]})]}),e.jsx("div",{className:"md:hidden space-y-3",children:Hl.length===0?e.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:A?"未找到匹配的模型":"暂无模型配置"}):Hl.map(($,ge)=>{const Le=n.findIndex(jt=>jt===$),$e=mn($.name);return e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("h3",{className:"font-semibold text-base",children:$.name}),e.jsx(Je,{variant:$e?"default":"secondary",className:$e?"bg-green-600 hover:bg-green-700":"",children:$e?"已使用":"未使用"})]}),e.jsx("p",{className:"text-xs text-muted-foreground break-all",title:$.model_identifier,children:$.model_identifier})]}),e.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[e.jsxs(b,{variant:"default",size:"sm",onClick:()=>Ds($,Le),children:[e.jsx(nn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(b,{size:"sm",onClick:()=>qa(Le),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(at,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"提供商"}),e.jsx("p",{className:"font-medium",children:$.api_provider})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"强制流式"}),e.jsx("p",{className:"font-medium",children:$.force_stream_mode?"是":"否"})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"输入价格"}),e.jsxs("p",{className:"font-medium",children:["¥",$.price_in,"/M"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"输出价格"}),e.jsxs("p",{className:"font-medium",children:["¥",$.price_out,"/M"]})]})]})]},ge)})}),e.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(li,{children:[e.jsx(ni,{children:e.jsxs(_s,{children:[e.jsx(rt,{className:"w-12",children:e.jsx(Cs,{checked:T.size===Os.length&&Os.length>0,onCheckedChange:ye})}),e.jsx(rt,{className:"w-24",children:"使用状态"}),e.jsx(rt,{children:"模型名称"}),e.jsx(rt,{children:"模型标识符"}),e.jsx(rt,{children:"提供商"}),e.jsx(rt,{className:"text-right",children:"输入价格"}),e.jsx(rt,{className:"text-right",children:"输出价格"}),e.jsx(rt,{className:"text-center",children:"强制流式"}),e.jsx(rt,{className:"text-right",children:"操作"})]})}),e.jsx(ii,{children:Hl.length===0?e.jsx(_s,{children:e.jsx(Ze,{colSpan:9,className:"text-center text-muted-foreground py-8",children:A?"未找到匹配的模型":"暂无模型配置"})}):Hl.map(($,ge)=>{const Le=n.findIndex(jt=>jt===$),$e=mn($.name);return e.jsxs(_s,{children:[e.jsx(Ze,{children:e.jsx(Cs,{checked:T.has(Le),onCheckedChange:()=>P(Le)})}),e.jsx(Ze,{children:e.jsx(Je,{variant:$e?"default":"secondary",className:$e?"bg-green-600 hover:bg-green-700":"",children:$e?"已使用":"未使用"})}),e.jsx(Ze,{className:"font-medium",children:$.name}),e.jsx(Ze,{className:"max-w-xs truncate",title:$.model_identifier,children:$.model_identifier}),e.jsx(Ze,{children:$.api_provider}),e.jsxs(Ze,{className:"text-right",children:["¥",$.price_in,"/M"]}),e.jsxs(Ze,{className:"text-right",children:["¥",$.price_out,"/M"]}),e.jsx(Ze,{className:"text-center",children:$.force_stream_mode?"是":"否"}),e.jsx(Ze,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(b,{variant:"default",size:"sm",onClick:()=>Ds($,Le),children:[e.jsx(nn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(b,{size:"sm",onClick:()=>qa(Le),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(at,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},ge)})})]})})}),Os.length>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{htmlFor:"page-size-model",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(qe,{value:xe.toString(),onValueChange:$=>{ve(parseInt($)),ae(1),te(new Set)},children:[e.jsx(Be,{id:"page-size-model",className:"w-20",children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"10",children:"10"}),e.jsx(ie,{value:"20",children:"20"}),e.jsx(ie,{value:"50",children:"50"}),e.jsx(ie,{value:"100",children:"100"})]})]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(oe-1)*xe+1," 到"," ",Math.min(oe*xe,Os.length)," 条,共 ",Os.length," 条"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>ae(1),disabled:oe===1,className:"hidden sm:flex",children:e.jsx(vr,{className:"h-4 w-4"})}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>ae($=>Math.max(1,$-1)),disabled:oe===1,children:[e.jsx(dn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:de,onChange:$=>G($.target.value),onKeyDown:$=>$.key==="Enter"&&un(),placeholder:oe.toString(),className:"w-16 h-8 text-center",min:1,max:dl}),e.jsx(b,{variant:"outline",size:"sm",onClick:un,disabled:!de,className:"h-8",children:"跳转"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>ae($=>$+1),disabled:oe>=dl,children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(Ll,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>ae(dl),disabled:oe>=dl,className:"hidden sm:flex",children:e.jsx(br,{className:"h-4 w-4"})})]})]})]}),e.jsxs(zt,{value:"tasks",className:"space-y-6 mt-0",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"为不同的任务配置使用的模型和参数"}),p&&e.jsxs("div",{className:"grid gap-4 sm:gap-6",children:[e.jsx(ba,{title:"组件模型 (utils)",description:"用于表情包、取名、关系、情绪变化等组件",taskConfig:p.utils,modelNames:f,onChange:($,ge)=>$s("utils",$,ge),dataTour:"task-model-select"}),e.jsx(ba,{title:"组件小模型 (utils_small)",description:"消耗量较大的组件,建议使用速度较快的小模型",taskConfig:p.utils_small,modelNames:f,onChange:($,ge)=>$s("utils_small",$,ge)}),e.jsx(ba,{title:"工具调用模型 (tool_use)",description:"需要使用支持工具调用的模型",taskConfig:p.tool_use,modelNames:f,onChange:($,ge)=>$s("tool_use",$,ge)}),e.jsx(ba,{title:"首要回复模型 (replyer)",description:"用于表达器和表达方式学习",taskConfig:p.replyer,modelNames:f,onChange:($,ge)=>$s("replyer",$,ge)}),e.jsx(ba,{title:"决策模型 (planner)",description:"负责决定麦麦该什么时候回复",taskConfig:p.planner,modelNames:f,onChange:($,ge)=>$s("planner",$,ge)}),e.jsx(ba,{title:"图像识别模型 (vlm)",description:"视觉语言模型",taskConfig:p.vlm,modelNames:f,onChange:($,ge)=>$s("vlm",$,ge),hideTemperature:!0}),e.jsx(ba,{title:"语音识别模型 (voice)",description:"语音转文字",taskConfig:p.voice,modelNames:f,onChange:($,ge)=>$s("voice",$,ge),hideTemperature:!0,hideMaxTokens:!0}),e.jsx(ba,{title:"嵌入模型 (embedding)",description:"用于向量化",taskConfig:p.embedding,modelNames:f,onChange:($,ge)=>$s("embedding",$,ge),hideTemperature:!0,hideMaxTokens:!0}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库模型"}),e.jsx(ba,{title:"实体提取模型 (lpmm_entity_extract)",description:"从文本中提取实体",taskConfig:p.lpmm_entity_extract,modelNames:f,onChange:($,ge)=>$s("lpmm_entity_extract",$,ge)}),e.jsx(ba,{title:"RDF 构建模型 (lpmm_rdf_build)",description:"构建知识图谱",taskConfig:p.lpmm_rdf_build,modelNames:f,onChange:($,ge)=>$s("lpmm_rdf_build",$,ge)}),e.jsx(ba,{title:"问答模型 (lpmm_qa)",description:"知识库问答",taskConfig:p.lpmm_qa,modelNames:f,onChange:($,ge)=>$s("lpmm_qa",$,ge)})]})]})]})]}),e.jsx(Jt,{open:Y,onOpenChange:Fs,children:e.jsxs($t,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"model-dialog",preventOutsideClose:Ke.isRunning,children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:fe!==null?"编辑模型":"添加模型"}),e.jsx(ds,{children:"配置模型的基本信息和参数"})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":"model-name-input",children:[e.jsx(y,{htmlFor:"model_name",className:ke.name?"text-destructive":"",children:"模型名称 *"}),e.jsx(ce,{id:"model_name",value:R?.name||"",onChange:$=>{ne(ge=>ge?{...ge,name:$.target.value}:null),ke.name&&Pe(ge=>({...ge,name:void 0}))},placeholder:"例如: qwen3-30b",className:ke.name?"border-destructive focus-visible:ring-destructive":""}),ke.name?e.jsx("p",{className:"text-xs text-destructive",children:ke.name}):e.jsx("p",{className:"text-xs text-muted-foreground",children:"用于在任务配置中引用此模型"})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"model-provider-select",children:[e.jsx(y,{htmlFor:"api_provider",className:ke.api_provider?"text-destructive":"",children:"API 提供商 *"}),e.jsxs(qe,{value:R?.api_provider||"",onValueChange:$=>{ne(ge=>ge?{...ge,api_provider:$}:null),U([]),tt(null),ke.api_provider&&Pe(ge=>({...ge,api_provider:void 0}))},children:[e.jsx(Be,{id:"api_provider",className:ke.api_provider?"border-destructive focus-visible:ring-destructive":"",children:e.jsx(Ge,{placeholder:"选择提供商"})}),e.jsx(He,{children:c.map($=>e.jsx(ie,{value:$,children:$},$))})]}),ke.api_provider&&e.jsx("p",{className:"text-xs text-destructive",children:ke.api_provider})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"model-identifier-input",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{htmlFor:"model_identifier",className:ke.model_identifier?"text-destructive":"",children:"模型标识符 *"}),Bt?.modelFetcher&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Je,{variant:"secondary",className:"text-xs",children:Bt.display_name}),e.jsx(b,{variant:"ghost",size:"sm",className:"h-6 px-2",onClick:()=>R?.api_provider&&_e(R.api_provider,!0),disabled:ee,children:ee?e.jsx(Ss,{className:"h-3 w-3 animate-spin"}):e.jsx(ws,{className:"h-3 w-3"})})]})]}),Bt?.modelFetcher?e.jsxs(Ua,{open:Xe,onOpenChange:Ut,children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(b,{variant:"outline",role:"combobox","aria-expanded":Xe,className:"w-full justify-between font-normal",disabled:ee||!!Me,children:[ee?e.jsxs("span",{className:"flex items-center gap-2 text-muted-foreground",children:[e.jsx(Ss,{className:"h-4 w-4 animate-spin"}),"正在获取模型列表..."]}):Me?e.jsx("span",{className:"text-muted-foreground text-sm",children:"点击下方输入框手动填写"}):R?.model_identifier?e.jsx("span",{className:"truncate",children:R.model_identifier}):e.jsx("span",{className:"text-muted-foreground",children:"搜索或选择模型..."}),e.jsx(qu,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(_a,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:e.jsxs(ao,{children:[e.jsx(lo,{placeholder:"搜索模型..."}),e.jsx(st,{className:"h-[300px]",children:e.jsxs(no,{className:"max-h-none overflow-visible",children:[e.jsx(io,{children:Me?e.jsxs("div",{className:"py-4 px-2 text-center space-y-2",children:[e.jsx("p",{className:"text-sm text-destructive",children:Me}),!Me.includes("API Key")&&e.jsx(b,{variant:"link",size:"sm",onClick:()=>R?.api_provider&&_e(R.api_provider,!0),children:"重试"})]}):"未找到匹配的模型"}),e.jsx(fr,{heading:"可用模型",children:W.map($=>e.jsxs(pr,{value:$.id,onSelect:()=>{ne(ge=>ge?{...ge,model_identifier:$.id}:null),Ut(!1)},children:[e.jsx(Na,{className:`mr-2 h-4 w-4 ${R?.model_identifier===$.id?"opacity-100":"opacity-0"}`}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{children:$.id}),$.name!==$.id&&e.jsx("span",{className:"text-xs text-muted-foreground",children:$.name})]})]},$.id))}),e.jsx(fr,{heading:"手动输入",children:e.jsxs(pr,{value:"__manual_input__",onSelect:()=>{Ut(!1)},children:[e.jsx(nn,{className:"mr-2 h-4 w-4"}),"手动输入模型标识符..."]})})]})})]})})]}):e.jsx(ce,{id:"model_identifier",value:R?.model_identifier||"",onChange:$=>{ne(ge=>ge?{...ge,model_identifier:$.target.value}:null),ke.model_identifier&&Pe(ge=>({...ge,model_identifier:void 0}))},placeholder:"Qwen/Qwen3-30B-A3B-Instruct-2507",className:ke.model_identifier?"border-destructive focus-visible:ring-destructive":""}),ke.model_identifier&&e.jsx("p",{className:"text-xs text-destructive",children:ke.model_identifier}),Me&&Bt?.modelFetcher&&!ke.model_identifier&&e.jsxs(cl,{variant:"destructive",className:"mt-2 py-2",children:[e.jsx(Ra,{className:"h-4 w-4"}),e.jsx(ol,{className:"text-xs",children:Me})]}),Bt?.modelFetcher&&e.jsx(ce,{value:R?.model_identifier||"",onChange:$=>{ne(ge=>ge?{...ge,model_identifier:$.target.value}:null),ke.model_identifier&&Pe(ge=>({...ge,model_identifier:void 0}))},placeholder:"或手动输入模型标识符",className:`mt-2 ${ke.model_identifier?"border-destructive focus-visible:ring-destructive":""}`}),!ke.model_identifier&&e.jsx("p",{className:"text-xs text-muted-foreground",children:Me?'请手动输入模型标识符,或前往"模型提供商配置"检查 API Key':Bt?.modelFetcher?`已识别为 ${Bt.display_name},支持自动获取模型列表`:"API 提供商提供的模型 ID"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"price_in",children:"输入价格 (¥/M token)"}),e.jsx(ce,{id:"price_in",type:"number",step:"0.1",min:"0",value:R?.price_in??"",onChange:$=>{const ge=$.target.value===""?null:parseFloat($.target.value);ne(Le=>Le?{...Le,price_in:ge}:null)},placeholder:"默认: 0"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"price_out",children:"输出价格 (¥/M token)"}),e.jsx(ce,{id:"price_out",type:"number",step:"0.1",min:"0",value:R?.price_out??"",onChange:$=>{const ge=$.target.value===""?null:parseFloat($.target.value);ne(Le=>Le?{...Le,price_out:ge}:null)},placeholder:"默认: 0"})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"force_stream_mode",checked:R?.force_stream_mode||!1,onCheckedChange:$=>ne(ge=>ge?{...ge,force_stream_mode:$}:null)}),e.jsx(y,{htmlFor:"force_stream_mode",className:"cursor-pointer",children:"强制流式输出模式"})]})]}),e.jsxs(xs,{children:[e.jsx(b,{variant:"outline",onClick:()=>E(!1),"data-tour":"model-cancel-button",children:"取消"}),e.jsx(b,{onClick:Ha,"data-tour":"model-save-button",children:"保存"})]})]})}),e.jsx(bt,{open:we,onOpenChange:pe,children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:['确定要删除模型 "',Ne!==null?n[Ne]?.name:"",'" 吗? 此操作无法撤销。']})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:Sa,children:"删除"})]})]})}),e.jsx(bt,{open:_,onOpenChange:me,children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认批量删除"}),e.jsxs(xt,{children:["确定要删除选中的 ",T.size," 个模型吗? 此操作无法撤销。"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:us,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),z&&e.jsx(Yu,{onRestartComplete:Ht,onRestartFailed:pa})]})})}function ba({title:n,description:r,taskConfig:c,modelNames:d,onChange:h,hideTemperature:x=!1,hideMaxTokens:f=!1,dataTour:j}){const p=N=>{h("model_list",N)};return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"font-semibold text-base sm:text-lg",children:n}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:r})]}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":j,children:[e.jsx(y,{children:"模型列表"}),e.jsx(lw,{options:d.map(N=>({label:N,value:N})),selected:c.model_list||[],onChange:p,placeholder:"选择模型...",emptyText:"暂无可用模型"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[!x&&e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{children:"温度"}),e.jsx(ce,{type:"number",step:"0.1",min:"0",max:"1",value:c.temperature??.3,onChange:N=>{const v=parseFloat(N.target.value);!isNaN(v)&&v>=0&&v<=1&&h("temperature",v)},className:"w-20 h-8 text-sm"})]}),e.jsx(Ma,{value:[c.temperature??.3],onValueChange:N=>h("temperature",N[0]),min:0,max:1,step:.1,className:"w-full"})]}),!f&&e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"最大 Token"}),e.jsx(ce,{type:"number",step:"1",min:"1",value:c.max_tokens??1024,onChange:N=>h("max_tokens",parseInt(N.target.value))})]})]})]})]})}const ro="/api/webui/config";async function rw(){const r=await(await Te(`${ro}/adapter-config/path`)).json();return!r.success||!r.path?null:{path:r.path,lastModified:r.lastModified}}async function rp(n){const c=await(await Te(`${ro}/adapter-config/path`,{method:"POST",headers:Rt(),body:JSON.stringify({path:n})})).json();if(!c.success)throw new Error(c.message||"保存路径失败")}async function cp(n){const c=await(await Te(`${ro}/adapter-config?path=${encodeURIComponent(n)}`)).json();if(!c.success)throw new Error("读取配置文件失败");return c.content}async function op(n,r){const d=await(await Te(`${ro}/adapter-config`,{method:"POST",headers:Rt(),body:JSON.stringify({path:n,content:r})})).json();if(!d.success)throw new Error(d.message||"保存配置失败")}const Ps={inner:{version:"0.1.2"},nickname:{nickname:""},napcat_server:{host:"localhost",port:8095,token:"",heartbeat_interval:30},maibot_server:{host:"localhost",port:8e3},chat:{group_list_type:"whitelist",group_list:[],private_list_type:"whitelist",private_list:[],ban_user_id:[],ban_qq_bot:!1,enable_poke:!0},voice:{use_tts:!1},debug:{level:"INFO"}},Tu={oneclick:{name:"一键包",description:"使用一键包部署的适配器配置",path:"../MaiBot-Napcat-Adapter/config.toml",icon:rn},docker:{name:"Docker",description:"Docker Compose 部署的适配器配置",path:"/MaiMBot/adapters-config/config.toml",icon:by}};function cw(){const[n,r]=u.useState("upload"),[c,d]=u.useState(null),[h,x]=u.useState(""),[f,j]=u.useState(""),[p,N]=u.useState("oneclick"),[v,C]=u.useState(""),[S,w]=u.useState(!1),[L,F]=u.useState(!1),[B,O]=u.useState(!1),[K,H]=u.useState(!1),[z,V]=u.useState(null),Y=u.useRef(null),{toast:E}=Xt(),R=u.useRef(null),ne=G=>{if(!G.trim())return{valid:!1,error:"路径不能为空"};if(!G.toLowerCase().endsWith(".toml"))return{valid:!1,error:"文件必须是 .toml 格式"};const W=/^([a-zA-Z]:\\|\\\\[^\\]+\\[^\\]+\\).+\.toml$/i,U=/^(\/|~\/).+\.toml$/i,ee=/^(\.{1,2}[\\/]|[^:\\/]).+\.toml$/i,Se=W.test(G),Me=U.test(G),tt=ee.test(G);return!Se&&!Me&&!tt?{valid:!1,error:"路径格式错误"}:/[<>"|?*\x00-\x1F]/.test(G)?{valid:!1,error:"路径包含非法字符"}:{valid:!0,error:""}},fe=G=>{if(j(G),G.trim()){const W=ne(G);C(W.error)}else C("")},Ce=u.useCallback(async G=>{const W=Tu[G];F(!0);try{const U=await cp(W.path),ee=oe(U);d(ee),N(G),j(W.path),await rp(W.path),E({title:"加载成功",description:`已从${W.name}预设加载配置`})}catch(U){console.error("加载预设配置失败:",U),E({title:"加载失败",description:U instanceof Error?U.message:"无法读取预设配置文件",variant:"destructive"})}finally{F(!1)}},[E]),we=u.useCallback(async G=>{const W=ne(G);if(!W.valid){C(W.error),E({title:"路径无效",description:W.error,variant:"destructive"});return}C(""),F(!0);try{const U=await cp(G),ee=oe(U);d(ee),j(G),await rp(G),E({title:"加载成功",description:"已从配置文件加载"})}catch(U){console.error("加载配置失败:",U),E({title:"加载失败",description:U instanceof Error?U.message:"无法读取配置文件",variant:"destructive"})}finally{F(!1)}},[E]);u.useEffect(()=>{(async()=>{try{const W=await rw();if(W&&W.path){j(W.path);const U=Object.entries(Tu).find(([,ee])=>ee.path===W.path);U?(r("preset"),N(U[0]),await Ce(U[0])):(r("path"),await we(W.path))}}catch(W){console.error("加载保存的路径失败:",W)}})()},[we,Ce]);const pe=u.useCallback(G=>{n!=="path"&&n!=="preset"||!f||(R.current&&clearTimeout(R.current),R.current=setTimeout(async()=>{w(!0);try{const W=ae(G);await op(f,W),E({title:"自动保存成功",description:"配置已保存到文件"})}catch(W){console.error("自动保存失败:",W),E({title:"自动保存失败",description:W instanceof Error?W.message:"保存配置失败",variant:"destructive"})}finally{w(!1)}},1e3))},[n,f,E]),Ne=async()=>{if(!c||!f)return;const G=ne(f);if(!G.valid){E({title:"保存失败",description:G.error,variant:"destructive"});return}w(!0);try{const W=ae(c);await op(f,W),E({title:"保存成功",description:"配置已保存到文件"})}catch(W){console.error("保存失败:",W),E({title:"保存失败",description:W instanceof Error?W.message:"保存配置失败",variant:"destructive"})}finally{w(!1)}},be=async()=>{f&&await we(f)},A=G=>{if(G!==n){if(c){V(G),O(!0);return}X(G)}},X=G=>{d(null),x(""),C(""),r(G),G==="preset"&&Ce("oneclick"),E({title:"已切换模式",description:{upload:"现在可以上传配置文件",path:"现在可以指定配置文件路径",preset:"现在可以使用预设配置"}[G]})},T=()=>{z&&(X(z),V(null)),O(!1)},te=()=>{if(c){H(!0);return}_()},_=()=>{j(""),d(null),C(""),E({title:"已清空",description:"路径和配置已清空"})},me=()=>{_(),H(!1)},oe=G=>{const W=JSON.parse(JSON.stringify(Ps)),U=G.split(` +`);let ee="";for(const Se of U){const Me=Se.trim();if(!Me||Me.startsWith("#"))continue;const tt=Me.match(/^\[(\w+)\]/);if(tt){ee=tt[1];continue}const Xe=Me.match(/^(\w+)\s*=\s*(.+)$/);if(Xe&&ee){const[,Ut,Bt]=Xe;let re=Bt.trim();const ke=re.match(/^("[^"]*")/);if(ke)re=ke[1];else{const Fe=re.indexOf("#");Fe!==-1&&(re=re.substring(0,Fe).trim())}let Pe;if(re==="true")Pe=!0;else if(re==="false")Pe=!1;else if(re.startsWith("[")&&re.endsWith("]")){const Fe=re.slice(1,-1).trim();if(Fe){const ts=Fe.split(",").map(js=>{const Ke=js.trim();return isNaN(Number(Ke))?Ke.replace(/"/g,""):Number(Ke)}),As=typeof ts[0];Pe=ts.every(js=>typeof js===As)?ts:ts.filter(js=>typeof js=="number")}else Pe=[]}else re.startsWith('"')&&re.endsWith('"')?Pe=re.slice(1,-1):isNaN(Number(re))?Pe=re.replace(/"/g,""):Pe=Number(re);if(ee in W){const Fe=W[ee];Fe[Ut]=Pe}}}return W},ae=G=>{const W=[],U=(ee,Se)=>ee===""||ee===null||ee===void 0?Se:ee;return W.push("[inner]"),W.push(`version = "${U(G.inner.version,Ps.inner.version)}" # 版本号`),W.push("# 请勿修改版本号,除非你知道自己在做什么"),W.push(""),W.push("[nickname] # 现在没用"),W.push(`nickname = "${U(G.nickname.nickname,Ps.nickname.nickname)}"`),W.push(""),W.push("[napcat_server] # Napcat连接的ws服务设置"),W.push(`host = "${U(G.napcat_server.host,Ps.napcat_server.host)}" # Napcat设定的主机地址`),W.push(`port = ${U(G.napcat_server.port||0,Ps.napcat_server.port)} # Napcat设定的端口`),W.push(`token = "${U(G.napcat_server.token,Ps.napcat_server.token)}" # Napcat设定的访问令牌,若无则留空`),W.push(`heartbeat_interval = ${U(G.napcat_server.heartbeat_interval||0,Ps.napcat_server.heartbeat_interval)} # 与Napcat设置的心跳相同(按秒计)`),W.push(""),W.push("[maibot_server] # 连接麦麦的ws服务设置"),W.push(`host = "${U(G.maibot_server.host,Ps.maibot_server.host)}" # 麦麦在.env文件中设置的主机地址,即HOST字段`),W.push(`port = ${U(G.maibot_server.port||0,Ps.maibot_server.port)} # 麦麦在.env文件中设置的端口,即PORT字段`),W.push(""),W.push("[chat] # 黑白名单功能"),W.push(`group_list_type = "${U(G.chat.group_list_type,Ps.chat.group_list_type)}" # 群组名单类型,可选为:whitelist, blacklist`),W.push(`group_list = [${G.chat.group_list.join(", ")}] # 群组名单`),W.push("# 当group_list_type为whitelist时,只有群组名单中的群组可以聊天"),W.push("# 当group_list_type为blacklist时,群组名单中的任何群组无法聊天"),W.push(`private_list_type = "${U(G.chat.private_list_type,Ps.chat.private_list_type)}" # 私聊名单类型,可选为:whitelist, blacklist`),W.push(`private_list = [${G.chat.private_list.join(", ")}] # 私聊名单`),W.push("# 当private_list_type为whitelist时,只有私聊名单中的用户可以聊天"),W.push("# 当private_list_type为blacklist时,私聊名单中的任何用户无法聊天"),W.push(`ban_user_id = [${G.chat.ban_user_id.join(", ")}] # 全局禁止名单(全局禁止名单中的用户无法进行任何聊天)`),W.push(`ban_qq_bot = ${G.chat.ban_qq_bot} # 是否屏蔽QQ官方机器人`),W.push(`enable_poke = ${G.chat.enable_poke} # 是否启用戳一戳功能`),W.push(""),W.push("[voice] # 发送语音设置"),W.push(`use_tts = ${G.voice.use_tts} # 是否使用tts语音(请确保你配置了tts并有对应的adapter)`),W.push(""),W.push("[debug]"),W.push(`level = "${U(G.debug.level,Ps.debug.level)}" # 日志等级(DEBUG, INFO, WARNING, ERROR, CRITICAL)`),W.join(` +`)},xe=G=>{const W=G.target.files?.[0];if(!W)return;const U=new FileReader;U.onload=ee=>{try{const Se=ee.target?.result,Me=oe(Se);d(Me),x(W.name),E({title:"上传成功",description:`已加载配置文件:${W.name}`})}catch(Se){console.error("解析配置文件失败:",Se),E({title:"解析失败",description:"配置文件格式错误,请检查文件内容",variant:"destructive"})}},U.readAsText(W)},ve=()=>{if(!c)return;const G=ae(c),W=new Blob([G],{type:"text/plain;charset=utf-8"}),U=URL.createObjectURL(W),ee=document.createElement("a");ee.href=U,ee.download=h||"config.toml",document.body.appendChild(ee),ee.click(),document.body.removeChild(ee),URL.revokeObjectURL(U),E({title:"下载成功",description:"配置文件已下载,请手动覆盖并重启适配器"})},de=()=>{d(JSON.parse(JSON.stringify(Ps))),x("config.toml"),E({title:"已加载默认配置",description:"可以开始编辑配置"})};return e.jsx(st,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦适配器配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的 QQ 适配器的配置文件"})]})}),e.jsxs("div",{className:"flex items-start gap-2 p-3 rounded-lg border border-amber-500/50 bg-amber-500/10 text-amber-700 dark:text-amber-400",children:[e.jsx(Oa,{className:"h-4 w-4 mt-0.5 flex-shrink-0"}),e.jsx("p",{className:"text-sm",children:"适配器配置保存之后使用 WebUI 的重启功能适配器并不会重启,需要手动重启适配器。"})]}),e.jsxs(Ye,{children:[e.jsxs(Nt,{children:[e.jsx(wt,{children:"工作模式"}),e.jsx(ns,{children:"选择配置文件的管理方式"})]}),e.jsxs(kt,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3 md:gap-4",children:[e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="preset"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>A("preset"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(rn,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"预设模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"使用预设的部署配置"})]})]})}),e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="upload"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>A("upload"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(dr,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"上传文件模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"上传配置文件,编辑后下载并手动覆盖"})]})]})}),e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="path"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>A("path"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(yy,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"指定路径模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"指定配置文件路径,自动加载和保存"})]})]})})]}),n==="preset"&&e.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[e.jsx(y,{className:"text-sm md:text-base",children:"选择部署方式"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:Object.entries(Tu).map(([G,W])=>{const U=W.icon,ee=p===G;return e.jsx("div",{className:`border-2 rounded-lg p-3 cursor-pointer transition-all ${ee?"border-primary bg-primary/5":"border-muted hover:border-primary/50"}`,onClick:()=>{N(G),Ce(G)},children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(U,{className:"h-5 w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h4",{className:"font-semibold text-sm",children:W.name}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:W.description}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1 font-mono break-all",children:W.path})]})]})},G)})})]}),n==="path"&&e.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"config-path",className:"text-sm md:text-base",children:"配置文件路径"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs("div",{className:"flex-1 space-y-1",children:[e.jsx(ce,{id:"config-path",value:f,onChange:G=>fe(G.target.value),placeholder:"例: C:\\Adapter\\config.toml",className:`text-sm ${v?"border-destructive":""}`}),v&&e.jsx("p",{className:"text-xs text-destructive",children:v})]}),e.jsx(b,{onClick:()=>we(f),disabled:L||!f||!!v,className:"w-full sm:w-auto",children:L?e.jsxs(e.Fragment,{children:[e.jsx(ws,{className:"h-4 w-4 animate-spin mr-2"}),e.jsx("span",{className:"sm:hidden",children:"加载中..."})]}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"sm:hidden",children:"加载配置"}),e.jsx("span",{className:"hidden sm:inline",children:"加载"})]})})]})]}),e.jsxs("details",{className:"rounded-lg bg-muted/50 p-3 group",children:[e.jsxs("summary",{className:"text-xs font-medium cursor-pointer select-none list-none flex items-center justify-between",children:[e.jsx("span",{children:"路径格式说明"}),e.jsx("svg",{className:"h-4 w-4 transition-transform group-open:rotate-180",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),e.jsxs("div",{className:"mt-2 space-y-2 text-xs text-muted-foreground",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Windows"})}),e.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[e.jsx("div",{children:"C:\\Adapter\\config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"D:\\MaiBot\\adapter\\config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"\\\\server\\share\\config.toml"})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Linux"})}),e.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[e.jsx("div",{children:"/opt/adapter/config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"/home/user/adapter/config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"~/adapter/config.toml"})]})]}),e.jsx("p",{className:"pt-1 border-t text-[10px] md:text-xs",children:"💡 配置会自动保存到指定文件,修改后 1 秒自动保存"})]})]})]})]})]}),e.jsxs(cl,{children:[e.jsx(Ra,{className:"h-4 w-4"}),e.jsx(ol,{children:n==="preset"?e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"预设模式:"}),"选择预设的部署方式,配置会自动加载,修改后 1 秒自动保存",S&&" (正在保存...)"]}):n==="upload"?e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"上传文件模式:"}),"上传配置文件 → 在线编辑 → 下载文件 → 手动覆盖并重启适配器"]}):e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"指定路径模式:"}),"指定配置文件路径后,配置会自动加载,修改后 1 秒自动保存",S&&" (正在保存...)"]})})]}),n==="upload"&&!c&&e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 w-full",children:[e.jsx("input",{ref:Y,type:"file",accept:".toml",className:"hidden",onChange:xe}),e.jsxs(b,{onClick:()=>Y.current?.click(),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(dr,{className:"mr-2 h-4 w-4"}),"上传配置"]}),e.jsxs(b,{onClick:de,size:"sm",className:"w-full sm:w-auto",children:[e.jsx(Da,{className:"mr-2 h-4 w-4"}),"使用默认配置"]})]}),n==="upload"&&c&&e.jsx("div",{className:"flex gap-2",children:e.jsxs(b,{onClick:ve,size:"sm",className:"w-full sm:w-auto",children:[e.jsx(rl,{className:"mr-2 h-4 w-4"}),"下载配置"]})}),(n==="preset"||n==="path")&&c&&e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs(b,{onClick:Ne,size:"sm",disabled:S||!!v,className:"w-full sm:w-auto",children:[e.jsx(jr,{className:"mr-2 h-4 w-4"}),S?"保存中...":"立即保存"]}),e.jsxs(b,{onClick:be,size:"sm",variant:"outline",disabled:L,className:"w-full sm:w-auto",children:[e.jsx(ws,{className:`mr-2 h-4 w-4 ${L?"animate-spin":""}`}),"刷新"]}),n==="path"&&e.jsxs(b,{onClick:te,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(at,{className:"mr-2 h-4 w-4"}),"清空路径"]})]}),c?e.jsxs(La,{defaultValue:"napcat",className:"w-full",children:[e.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:e.jsxs(wa,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5",children:[e.jsxs(it,{value:"napcat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"Napcat 连接"}),e.jsx("span",{className:"sm:hidden",children:"Napcat"})]}),e.jsxs(it,{value:"maibot",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"麦麦连接"}),e.jsx("span",{className:"sm:hidden",children:"麦麦"})]}),e.jsxs(it,{value:"chat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"聊天控制"}),e.jsx("span",{className:"sm:hidden",children:"聊天"})]}),e.jsxs(it,{value:"voice",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"语音设置"}),e.jsx("span",{className:"sm:hidden",children:"语音"})]}),e.jsx(it,{value:"debug",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:"调试"})]})}),e.jsx(zt,{value:"napcat",className:"space-y-4",children:e.jsx(ow,{config:c,onChange:G=>{d(G),pe(G)}})}),e.jsx(zt,{value:"maibot",className:"space-y-4",children:e.jsx(dw,{config:c,onChange:G=>{d(G),pe(G)}})}),e.jsx(zt,{value:"chat",className:"space-y-4",children:e.jsx(uw,{config:c,onChange:G=>{d(G),pe(G)}})}),e.jsx(zt,{value:"voice",className:"space-y-4",children:e.jsx(mw,{config:c,onChange:G=>{d(G),pe(G)}})}),e.jsx(zt,{value:"debug",className:"space-y-4",children:e.jsx(hw,{config:c,onChange:G=>{d(G),pe(G)}})})]}):e.jsx("div",{className:"rounded-lg border bg-card p-6 md:p-12",children:e.jsxs("div",{className:"text-center space-y-3 md:space-y-4",children:[e.jsx(Da,{className:"h-12 w-12 md:h-16 md:w-16 mx-auto text-muted-foreground"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold",children:"尚未加载配置"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-2 px-4",children:n==="preset"?"请选择预设的部署方式":n==="upload"?"请上传现有配置文件,或使用默认配置开始编辑":"请指定配置文件路径并点击加载按钮"})]})]})}),e.jsx(bt,{open:B,onOpenChange:O,children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认切换模式"}),e.jsxs(xt,{children:["切换模式将清空当前配置,确定要继续吗?",e.jsx("br",{}),e.jsx("span",{className:"text-destructive font-medium",children:"请确保已保存重要配置"})]})]}),e.jsxs(mt,{children:[e.jsx(pt,{onClick:()=>{O(!1),V(null)},children:"取消"}),e.jsx(ft,{onClick:T,children:"确认切换"})]})]})}),e.jsx(bt,{open:K,onOpenChange:H,children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认清空路径"}),e.jsxs(xt,{children:["清空路径将清除当前配置,确定要继续吗?",e.jsx("br",{}),e.jsx("span",{className:"text-muted-foreground text-sm",children:"此操作不会删除配置文件,只是清除界面中的配置"})]})]}),e.jsxs(mt,{children:[e.jsx(pt,{onClick:()=>H(!1),children:"取消"}),e.jsx(ft,{onClick:me,className:"bg-destructive hover:bg-destructive/90",children:"确认清空"})]})]})})]})})}function ow({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"Napcat WebSocket 服务设置"}),e.jsxs("div",{className:"grid gap-3 md:gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"napcat-host",className:"text-sm md:text-base",children:"主机地址"}),e.jsx(ce,{id:"napcat-host",value:n.napcat_server.host,onChange:c=>r({...n,napcat_server:{...n.napcat_server,host:c.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的主机地址"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"napcat-port",className:"text-sm md:text-base",children:"端口"}),e.jsx(ce,{id:"napcat-port",type:"number",value:n.napcat_server.port||"",onChange:c=>r({...n,napcat_server:{...n.napcat_server,port:c.target.value?parseInt(c.target.value):0}}),placeholder:"8095",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的端口(留空使用默认值 8095)"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"napcat-token",className:"text-sm md:text-base",children:"访问令牌(Token)"}),e.jsx(ce,{id:"napcat-token",type:"password",value:n.napcat_server.token,onChange:c=>r({...n,napcat_server:{...n.napcat_server,token:c.target.value}}),placeholder:"留空表示无需令牌",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的访问令牌,若无则留空"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"napcat-heartbeat",className:"text-sm md:text-base",children:"心跳间隔(秒)"}),e.jsx(ce,{id:"napcat-heartbeat",type:"number",value:n.napcat_server.heartbeat_interval||"",onChange:c=>r({...n,napcat_server:{...n.napcat_server,heartbeat_interval:c.target.value?parseInt(c.target.value):0}}),placeholder:"30",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"与 Napcat 设置的心跳间隔保持一致(留空使用默认值 30)"})]})]})]})})}function dw({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"麦麦 WebSocket 服务设置"}),e.jsxs("div",{className:"grid gap-3 md:gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"maibot-host",className:"text-sm md:text-base",children:"主机地址"}),e.jsx(ce,{id:"maibot-host",value:n.maibot_server.host,onChange:c=>r({...n,maibot_server:{...n.maibot_server,host:c.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 HOST 字段"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"maibot-port",className:"text-sm md:text-base",children:"端口"}),e.jsx(ce,{id:"maibot-port",type:"number",value:n.maibot_server.port||"",onChange:c=>r({...n,maibot_server:{...n.maibot_server,port:c.target.value?parseInt(c.target.value):0}}),placeholder:"8000",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 PORT 字段(留空使用默认值 8000)"})]})]})]})})}function uw({config:n,onChange:r}){const c=x=>{const f={...n};x==="group"?f.chat.group_list=[...f.chat.group_list,0]:x==="private"?f.chat.private_list=[...f.chat.private_list,0]:f.chat.ban_user_id=[...f.chat.ban_user_id,0],r(f)},d=(x,f)=>{const j={...n};x==="group"?j.chat.group_list=j.chat.group_list.filter((p,N)=>N!==f):x==="private"?j.chat.private_list=j.chat.private_list.filter((p,N)=>N!==f):j.chat.ban_user_id=j.chat.ban_user_id.filter((p,N)=>N!==f),r(j)},h=(x,f,j)=>{const p={...n};x==="group"?p.chat.group_list[f]=j:x==="private"?p.chat.private_list[f]=j:p.chat.ban_user_id[f]=j,r(p)};return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"聊天黑白名单功能"}),e.jsxs("div",{className:"grid gap-4 md:gap-6",children:[e.jsxs("div",{className:"space-y-3 md:space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-sm md:text-base",children:"群组名单类型"}),e.jsxs(qe,{value:n.chat.group_list_type,onValueChange:x=>r({...n,chat:{...n.chat,group_list_type:x}}),children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),e.jsx(ie,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsx(y,{className:"text-sm md:text-base",children:"群组列表"}),e.jsxs(b,{onClick:()=>c("group"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Da,{className:"mr-1 h-4 w-4"}),"添加群号"]})]}),n.chat.group_list.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{type:"number",value:x,onChange:j=>h("group",f,parseInt(j.target.value)||0),placeholder:"输入群号",className:"text-sm md:text-base"}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(at,{className:"h-4 w-4"})})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:["确定要删除群号 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>d("group",f),children:"删除"})]})]})]})]},f)),n.chat.group_list.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无群组"})]})]}),e.jsxs("div",{className:"space-y-3 md:space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-sm md:text-base",children:"私聊名单类型"}),e.jsxs(qe,{value:n.chat.private_list_type,onValueChange:x=>r({...n,chat:{...n.chat,private_list_type:x}}),children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),e.jsx(ie,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsx(y,{className:"text-sm md:text-base",children:"私聊列表"}),e.jsxs(b,{onClick:()=>c("private"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Da,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),n.chat.private_list.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{type:"number",value:x,onChange:j=>h("private",f,parseInt(j.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(at,{className:"h-4 w-4"})})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:["确定要删除用户 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>d("private",f),children:"删除"})]})]})]})]},f)),n.chat.private_list.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无用户"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsxs("div",{children:[e.jsx(y,{className:"text-sm md:text-base",children:"全局禁止名单"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"名单中的用户无法进行任何聊天"})]}),e.jsxs(b,{onClick:()=>c("ban"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Da,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),n.chat.ban_user_id.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{type:"number",value:x,onChange:j=>h("ban",f,parseInt(j.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(at,{className:"h-4 w-4"})})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:["确定要从全局禁止名单中删除用户 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>d("ban",f),children:"删除"})]})]})]})]},f)),n.chat.ban_user_id.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无禁止用户"})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(y,{className:"text-sm md:text-base",children:"屏蔽QQ官方机器人"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否屏蔽来自QQ官方机器人的消息"})]}),e.jsx(Qe,{checked:n.chat.ban_qq_bot,onCheckedChange:x=>r({...n,chat:{...n.chat,ban_qq_bot:x}})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(y,{className:"text-sm md:text-base",children:"启用戳一戳功能"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否响应戳一戳消息"})]}),e.jsx(Qe,{checked:n.chat.enable_poke,onCheckedChange:x=>r({...n,chat:{...n.chat,enable_poke:x}})})]})]})]})})}function mw({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"发送语音设置"}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(y,{className:"text-sm md:text-base",children:"使用 TTS 语音"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"请确保已配置 TTS 并有对应的适配器"})]}),e.jsx(Qe,{checked:n.voice.use_tts,onCheckedChange:c=>r({...n,voice:{use_tts:c}})})]})]})})}function hw({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"调试设置"}),e.jsx("div",{className:"grid gap-3 md:gap-4",children:e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-sm md:text-base",children:"日志等级"}),e.jsxs(qe,{value:n.debug.level,onValueChange:c=>r({...n,debug:{level:c}}),children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"DEBUG",children:"DEBUG(调试)"}),e.jsx(ie,{value:"INFO",children:"INFO(信息)"}),e.jsx(ie,{value:"WARNING",children:"WARNING(警告)"}),e.jsx(ie,{value:"ERROR",children:"ERROR(错误)"}),e.jsx(ie,{value:"CRITICAL",children:"CRITICAL(严重)"})]})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"设置适配器的日志输出等级"})]})})]})})}const xw=["defaultChecked","defaultValue","suppressContentEditableWarning","suppressHydrationWarning","dangerouslySetInnerHTML","accessKey","className","contentEditable","contextMenu","dir","draggable","hidden","id","lang","placeholder","slot","spellCheck","style","tabIndex","title","translate","radioGroup","role","about","datatype","inlist","prefix","property","resource","typeof","vocab","autoCapitalize","autoCorrect","autoSave","color","itemProp","itemScope","itemType","itemID","itemRef","results","security","unselectable","inputMode","is","onCopy","onCopyCapture","onCut","onCutCapture","onPaste","onPasteCapture","onCompositionEnd","onCompositionEndCapture","onCompositionStart","onCompositionStartCapture","onCompositionUpdate","onCompositionUpdateCapture","onFocus","onFocusCapture","onBlur","onBlurCapture","onChange","onChangeCapture","onBeforeInput","onBeforeInputCapture","onInput","onInputCapture","onReset","onResetCapture","onSubmit","onSubmitCapture","onInvalid","onInvalidCapture","onLoad","onLoadCapture","onError","onErrorCapture","onKeyDown","onKeyDownCapture","onKeyPress","onKeyPressCapture","onKeyUp","onKeyUpCapture","onAbort","onAbortCapture","onCanPlay","onCanPlayCapture","onCanPlayThrough","onCanPlayThroughCapture","onDurationChange","onDurationChangeCapture","onEmptied","onEmptiedCapture","onEncrypted","onEncryptedCapture","onEnded","onEndedCapture","onLoadedData","onLoadedDataCapture","onLoadedMetadata","onLoadedMetadataCapture","onLoadStart","onLoadStartCapture","onPause","onPauseCapture","onPlay","onPlayCapture","onPlaying","onPlayingCapture","onProgress","onProgressCapture","onRateChange","onRateChangeCapture","onSeeked","onSeekedCapture","onSeeking","onSeekingCapture","onStalled","onStalledCapture","onSuspend","onSuspendCapture","onTimeUpdate","onTimeUpdateCapture","onVolumeChange","onVolumeChangeCapture","onWaiting","onWaitingCapture","onAuxClick","onAuxClickCapture","onClick","onClickCapture","onContextMenu","onContextMenuCapture","onDoubleClick","onDoubleClickCapture","onDrag","onDragCapture","onDragEnd","onDragEndCapture","onDragEnter","onDragEnterCapture","onDragExit","onDragExitCapture","onDragLeave","onDragLeaveCapture","onDragOver","onDragOverCapture","onDragStart","onDragStartCapture","onDrop","onDropCapture","onMouseDown","onMouseDownCapture","onMouseEnter","onMouseLeave","onMouseMove","onMouseMoveCapture","onMouseOut","onMouseOutCapture","onMouseOver","onMouseOverCapture","onMouseUp","onMouseUpCapture","onSelect","onSelectCapture","onTouchCancel","onTouchCancelCapture","onTouchEnd","onTouchEndCapture","onTouchMove","onTouchMoveCapture","onTouchStart","onTouchStartCapture","onPointerDown","onPointerDownCapture","onPointerMove","onPointerMoveCapture","onPointerUp","onPointerUpCapture","onPointerCancel","onPointerCancelCapture","onPointerEnter","onPointerEnterCapture","onPointerLeave","onPointerLeaveCapture","onPointerOver","onPointerOverCapture","onPointerOut","onPointerOutCapture","onGotPointerCapture","onGotPointerCaptureCapture","onLostPointerCapture","onLostPointerCaptureCapture","onScroll","onScrollCapture","onWheel","onWheelCapture","onAnimationStart","onAnimationStartCapture","onAnimationEnd","onAnimationEndCapture","onAnimationIteration","onAnimationIterationCapture","onTransitionEnd","onTransitionEndCapture"],fw=/^(aria-|data-)/,zg=n=>Object.fromEntries(Object.entries(n).filter(([r])=>fw.test(r)||xw.includes(r)));function pw(n,r){const c=zg(n);return Object.keys(n).some(d=>!Object.hasOwn(c,d)&&n[d]!==r[d])}class gw extends u.Component{container;plugin;componentDidMount(){this.installPlugin()}componentDidUpdate(r){if(r.uppy!==this.props.uppy)this.uninstallPlugin(r),this.installPlugin();else if(pw(this.props,r)){const{uppy:c,...d}={...this.props,target:this.container};this.plugin.setOptions(d)}}componentWillUnmount(){this.uninstallPlugin()}installPlugin(){const{uppy:r,...c}={id:"Dashboard",...this.props,inline:!0,target:this.container};r.use(sN,c),this.plugin=r.getPlugin(c.id)}uninstallPlugin(r=this.props){const{uppy:c}=r;c.removePlugin(this.plugin)}render(){return u.createElement("div",{className:"uppy-Container",ref:r=>{this.container=r},...zg(this.props)})}}function jw({src:n,alt:r="表情包",className:c,maxRetries:d=5,retryInterval:h=1500}){const[x,f]=u.useState("loading"),[j,p]=u.useState(0),[N,v]=u.useState(null),C=u.useCallback(async()=>{try{const S=await fetch(n,{credentials:"include"});if(S.status===202){f("generating"),j{p(F=>F+1)},h):f("error");return}if(!S.ok){f("error");return}const w=await S.blob(),L=URL.createObjectURL(w);v(L),f("loaded")}catch(S){console.error("加载缩略图失败:",S),f("error")}},[n,j,d,h]);return u.useEffect(()=>{f("loading"),p(0),v(null)},[n]),u.useEffect(()=>{C()},[C]),u.useEffect(()=>()=>{N&&URL.revokeObjectURL(N)},[N]),x==="loading"||x==="generating"?e.jsx(hg,{className:Q("w-full h-full",c)}):x==="error"||!N?e.jsx("div",{className:Q("w-full h-full flex items-center justify-center bg-muted",c),children:e.jsx(ig,{className:"h-8 w-8 text-muted-foreground"})}):e.jsx("img",{src:N,alt:r,className:Q("w-full h-full object-contain",c)})}function vw({content:n,className:r=""}){return e.jsx("div",{className:`prose prose-sm dark:prose-invert max-w-none ${r}`,children:e.jsx(lN,{remarkPlugins:[iN,rN],rehypePlugins:[nN],components:{code({inline:c,className:d,children:h,...x}){return c?e.jsx("code",{className:"bg-muted px-1.5 py-0.5 rounded text-sm font-mono",...x,children:h}):e.jsx("code",{className:`${d} block bg-muted p-4 rounded-lg overflow-x-auto`,...x,children:h})},table({children:c,...d}){return e.jsx("div",{className:"overflow-x-auto",children:e.jsx("table",{className:"border-collapse border border-border",...d,children:c})})},th({children:c,...d}){return e.jsx("th",{className:"border border-border bg-muted px-4 py-2 text-left font-semibold",...d,children:c})},td({children:c,...d}){return e.jsx("td",{className:"border border-border px-4 py-2",...d,children:c})},a({children:c,...d}){return e.jsx("a",{className:"text-primary hover:underline",target:"_blank",rel:"noopener noreferrer",...d,children:c})},blockquote({children:c,...d}){return e.jsx("blockquote",{className:"border-l-4 border-primary pl-4 italic text-muted-foreground",...d,children:c})},h1({children:c,...d}){return e.jsx("h1",{className:"text-3xl font-bold mt-6 mb-4",...d,children:c})},h2({children:c,...d}){return e.jsx("h2",{className:"text-2xl font-bold mt-5 mb-3",...d,children:c})},h3({children:c,...d}){return e.jsx("h3",{className:"text-xl font-bold mt-4 mb-2",...d,children:c})},h4({children:c,...d}){return e.jsx("h4",{className:"text-lg font-semibold mt-3 mb-2",...d,children:c})},ul({children:c,...d}){return e.jsx("ul",{className:"list-disc list-inside space-y-1 my-2",...d,children:c})},ol({children:c,...d}){return e.jsx("ol",{className:"list-decimal list-inside space-y-1 my-2",...d,children:c})},p({children:c,...d}){return e.jsx("p",{className:"my-2 leading-relaxed",...d,children:c})},hr({...c}){return e.jsx("hr",{className:"my-4 border-border",...c})}},children:n})})}function bw({children:n,className:r}){return e.jsx(vw,{content:n,className:r})}const xa="/api/webui/emoji";async function yw(n){const r=new URLSearchParams;n.page&&r.append("page",n.page.toString()),n.page_size&&r.append("page_size",n.page_size.toString()),n.search&&r.append("search",n.search),n.is_registered!==void 0&&r.append("is_registered",n.is_registered.toString()),n.is_banned!==void 0&&r.append("is_banned",n.is_banned.toString()),n.format&&r.append("format",n.format),n.sort_by&&r.append("sort_by",n.sort_by),n.sort_order&&r.append("sort_order",n.sort_order);const c=await Te(`${xa}/list?${r}`,{});if(!c.ok)throw new Error(`获取表情包列表失败: ${c.statusText}`);return c.json()}async function Nw(n){const r=await Te(`${xa}/${n}`,{});if(!r.ok)throw new Error(`获取表情包详情失败: ${r.statusText}`);return r.json()}async function ww(n,r){const c=await Te(`${xa}/${n}`,{method:"PATCH",body:JSON.stringify(r)});if(!c.ok)throw new Error(`更新表情包失败: ${c.statusText}`);return c.json()}async function _w(n){const r=await Te(`${xa}/${n}`,{method:"DELETE"});if(!r.ok)throw new Error(`删除表情包失败: ${r.statusText}`);return r.json()}async function Sw(){const n=await Te(`${xa}/stats/summary`,{});if(!n.ok)throw new Error(`获取统计数据失败: ${n.statusText}`);return n.json()}async function Cw(n){const r=await Te(`${xa}/${n}/register`,{method:"POST"});if(!r.ok)throw new Error(`注册表情包失败: ${r.statusText}`);return r.json()}async function kw(n){const r=await Te(`${xa}/${n}/ban`,{method:"POST"});if(!r.ok)throw new Error(`封禁表情包失败: ${r.statusText}`);return r.json()}function Tw(n,r=!1){return r?`${xa}/${n}/thumbnail?original=true`:`${xa}/${n}/thumbnail`}function Ew(n){return`${xa}/${n}/thumbnail?original=true`}async function zw(n){const r=await Te(`${xa}/batch/delete`,{method:"POST",body:JSON.stringify({emoji_ids:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"批量删除失败")}return r.json()}function Aw(){return`${xa}/upload`}function Mw(){const[n,r]=u.useState([]),[c,d]=u.useState(null),[h,x]=u.useState(!1),[f,j]=u.useState(1),[p,N]=u.useState(0),[v,C]=u.useState(20),[S,w]=u.useState("all"),[L,F]=u.useState("all"),[B,O]=u.useState("all"),[K,H]=u.useState("usage_count"),[z,V]=u.useState("desc"),[Y,E]=u.useState(null),[R,ne]=u.useState(!1),[fe,Ce]=u.useState(!1),[we,pe]=u.useState(!1),[Ne,be]=u.useState(new Set),[A,X]=u.useState(!1),[T,te]=u.useState(""),[_,me]=u.useState("medium"),[oe,ae]=u.useState(!1),{toast:xe}=Xt(),ve=u.useCallback(async()=>{try{x(!0);const re=await yw({page:f,page_size:v,is_registered:S==="all"?void 0:S==="registered",is_banned:L==="all"?void 0:L==="banned",format:B==="all"?void 0:B,sort_by:K,sort_order:z});r(re.data),N(re.total)}catch(re){const ke=re instanceof Error?re.message:"加载表情包列表失败";xe({title:"错误",description:ke,variant:"destructive"})}finally{x(!1)}},[f,v,S,L,B,K,z,xe]),de=async()=>{try{const re=await Sw();d(re.data)}catch(re){console.error("加载统计数据失败:",re)}};u.useEffect(()=>{ve()},[ve]),u.useEffect(()=>{de()},[]);const G=async re=>{try{const ke=await Nw(re.id);E(ke.data),ne(!0)}catch(ke){const Pe=ke instanceof Error?ke.message:"加载详情失败";xe({title:"错误",description:Pe,variant:"destructive"})}},W=re=>{E(re),Ce(!0)},U=re=>{E(re),pe(!0)},ee=async()=>{if(Y)try{await _w(Y.id),xe({title:"成功",description:"表情包已删除"}),pe(!1),E(null),ve(),de()}catch(re){const ke=re instanceof Error?re.message:"删除失败";xe({title:"错误",description:ke,variant:"destructive"})}},Se=async re=>{try{await Cw(re.id),xe({title:"成功",description:"表情包已注册"}),ve(),de()}catch(ke){const Pe=ke instanceof Error?ke.message:"注册失败";xe({title:"错误",description:Pe,variant:"destructive"})}},Me=async re=>{try{await kw(re.id),xe({title:"成功",description:"表情包已封禁"}),ve(),de()}catch(ke){const Pe=ke instanceof Error?ke.message:"封禁失败";xe({title:"错误",description:Pe,variant:"destructive"})}},tt=re=>{const ke=new Set(Ne);ke.has(re)?ke.delete(re):ke.add(re),be(ke)},Xe=async()=>{try{const re=await zw(Array.from(Ne));xe({title:"批量删除完成",description:re.message}),be(new Set),X(!1),ve(),de()}catch(re){xe({title:"批量删除失败",description:re instanceof Error?re.message:"批量删除失败",variant:"destructive"})}},Ut=()=>{const re=parseInt(T),ke=Math.ceil(p/v);re>=1&&re<=ke?(j(re),te("")):xe({title:"无效的页码",description:`请输入1-${ke}之间的页码`,variant:"destructive"})},Bt=c?.formats?Object.keys(c.formats):[];return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsxs("div",{className:"mb-4 sm:mb-6 flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"表情包管理"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理麦麦的表情包资源"})]}),e.jsxs(b,{onClick:()=>ae(!0),className:"gap-2",children:[e.jsx(dr,{className:"h-4 w-4"}),"上传表情包"]})]}),e.jsx(st,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[c&&e.jsxs("div",{className:"grid gap-4 grid-cols-2 lg:grid-cols-4",children:[e.jsx(Ye,{children:e.jsxs(Nt,{className:"pb-2",children:[e.jsx(ns,{children:"总数"}),e.jsx(wt,{className:"text-2xl",children:c.total})]})}),e.jsx(Ye,{children:e.jsxs(Nt,{className:"pb-2",children:[e.jsx(ns,{children:"已注册"}),e.jsx(wt,{className:"text-2xl text-green-600",children:c.registered})]})}),e.jsx(Ye,{children:e.jsxs(Nt,{className:"pb-2",children:[e.jsx(ns,{children:"已封禁"}),e.jsx(wt,{className:"text-2xl text-red-600",children:c.banned})]})}),e.jsx(Ye,{children:e.jsxs(Nt,{className:"pb-2",children:[e.jsx(ns,{children:"未注册"}),e.jsx(wt,{className:"text-2xl text-gray-600",children:c.unregistered})]})})]}),e.jsxs(Ye,{children:[e.jsx(Nt,{children:e.jsxs(wt,{className:"flex items-center gap-2",children:[e.jsx(Eu,{className:"h-5 w-5"}),"筛选和排序"]})}),e.jsxs(kt,{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{children:"排序方式"}),e.jsxs(qe,{value:`${K}-${z}`,onValueChange:re=>{const[ke,Pe]=re.split("-");H(ke),V(Pe),j(1)},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"usage_count-desc",children:"使用次数 (多→少)"}),e.jsx(ie,{value:"usage_count-asc",children:"使用次数 (少→多)"}),e.jsx(ie,{value:"register_time-desc",children:"注册时间 (新→旧)"}),e.jsx(ie,{value:"register_time-asc",children:"注册时间 (旧→新)"}),e.jsx(ie,{value:"record_time-desc",children:"记录时间 (新→旧)"}),e.jsx(ie,{value:"record_time-asc",children:"记录时间 (旧→新)"}),e.jsx(ie,{value:"last_used_time-desc",children:"最后使用 (新→旧)"}),e.jsx(ie,{value:"last_used_time-asc",children:"最后使用 (旧→新)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{children:"注册状态"}),e.jsxs(qe,{value:S,onValueChange:re=>{w(re),j(1)},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"all",children:"全部"}),e.jsx(ie,{value:"registered",children:"已注册"}),e.jsx(ie,{value:"unregistered",children:"未注册"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{children:"封禁状态"}),e.jsxs(qe,{value:L,onValueChange:re=>{F(re),j(1)},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"all",children:"全部"}),e.jsx(ie,{value:"banned",children:"已封禁"}),e.jsx(ie,{value:"unbanned",children:"未封禁"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{children:"格式"}),e.jsxs(qe,{value:B,onValueChange:re=>{O(re),j(1)},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"all",children:"全部"}),Bt.map(re=>e.jsxs(ie,{value:re,children:[re.toUpperCase()," (",c?.formats[re],")"]},re))]})]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 pt-4 border-t",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[Ne.size>0&&e.jsxs("span",{className:"text-sm text-muted-foreground",children:["已选择 ",Ne.size," 个表情包"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{className:"text-sm whitespace-nowrap",children:"卡片大小"}),e.jsxs(qe,{value:_,onValueChange:re=>me(re),children:[e.jsx(Be,{className:"w-24",children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"small",children:"小"}),e.jsx(ie,{value:"medium",children:"中"}),e.jsx(ie,{value:"large",children:"大"})]})]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{htmlFor:"emoji-page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(qe,{value:v.toString(),onValueChange:re=>{C(parseInt(re)),j(1),be(new Set)},children:[e.jsx(Be,{id:"emoji-page-size",className:"w-20",children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"20",children:"20"}),e.jsx(ie,{value:"40",children:"40"}),e.jsx(ie,{value:"60",children:"60"}),e.jsx(ie,{value:"100",children:"100"})]})]}),Ne.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>be(new Set),children:"取消选择"}),e.jsxs(b,{variant:"destructive",size:"sm",onClick:()=>X(!0),children:[e.jsx(at,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]}),e.jsx("div",{className:"flex justify-end pt-4 border-t",children:e.jsxs(b,{variant:"outline",size:"sm",onClick:ve,disabled:h,children:[e.jsx(ws,{className:`h-4 w-4 mr-2 ${h?"animate-spin":""}`}),"刷新"]})})]})]}),e.jsxs(Ye,{children:[e.jsxs(Nt,{children:[e.jsx(wt,{children:"表情包列表"}),e.jsxs(ns,{children:["共 ",p," 个表情包,当前第 ",f," 页"]})]}),e.jsxs(kt,{children:[n.length===0?e.jsx("div",{className:"text-center py-12 text-muted-foreground",children:"暂无数据"}):e.jsx("div",{className:`grid gap-3 ${_==="small"?"grid-cols-3 sm:grid-cols-4 md:grid-cols-6 lg:grid-cols-8 xl:grid-cols-10":_==="medium"?"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 xl:grid-cols-8":"grid-cols-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5"}`,children:n.map(re=>e.jsxs("div",{className:`group relative rounded-lg border bg-card overflow-hidden hover:ring-2 hover:ring-primary transition-all cursor-pointer ${Ne.has(re.id)?"ring-2 ring-primary bg-primary/5":""}`,onClick:()=>tt(re.id),children:[e.jsx("div",{className:`absolute top-1 left-1 z-10 transition-opacity ${Ne.has(re.id)?"opacity-100":"opacity-0 group-hover:opacity-100"}`,children:e.jsx("div",{className:`w-5 h-5 rounded-full border-2 flex items-center justify-center ${Ne.has(re.id)?"bg-primary border-primary text-primary-foreground":"bg-background/80 border-muted-foreground/50"}`,children:Ne.has(re.id)&&e.jsx(ha,{className:"h-3 w-3"})})}),e.jsxs("div",{className:"absolute top-1 right-1 z-10 flex flex-col gap-0.5",children:[re.is_registered&&e.jsx(Je,{variant:"default",className:"bg-green-600 text-[10px] px-1 py-0",children:"已注册"}),re.is_banned&&e.jsx(Je,{variant:"destructive",className:"text-[10px] px-1 py-0",children:"已封禁"})]}),e.jsx("div",{className:`aspect-square bg-muted flex items-center justify-center overflow-hidden ${_==="small"?"p-1":_==="medium"?"p-2":"p-3"}`,children:e.jsx(jw,{src:Tw(re.id),alt:"表情包"})}),e.jsxs("div",{className:`border-t bg-card ${_==="small"?"p-1":"p-2"}`,children:[e.jsxs("div",{className:"flex items-center justify-between gap-1 text-xs text-muted-foreground mb-1",children:[e.jsx(Je,{variant:"outline",className:"text-[10px] px-1 py-0",children:re.format.toUpperCase()}),e.jsxs("span",{className:"font-mono",children:[re.usage_count,"次"]})]}),e.jsxs("div",{className:`flex gap-1 justify-center opacity-0 group-hover:opacity-100 transition-opacity ${_==="small"?"flex-wrap":""}`,children:[e.jsx(b,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:ke=>{ke.stopPropagation(),W(re)},title:"编辑",children:e.jsx(mr,{className:"h-3 w-3"})}),e.jsx(b,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:ke=>{ke.stopPropagation(),G(re)},title:"详情",children:e.jsx(Ra,{className:"h-3 w-3"})}),!re.is_registered&&e.jsx(b,{variant:"ghost",size:"icon",className:"h-6 w-6 text-green-600 hover:text-green-700",onClick:ke=>{ke.stopPropagation(),Se(re)},title:"注册",children:e.jsx(ha,{className:"h-3 w-3"})}),!re.is_banned&&e.jsx(b,{variant:"ghost",size:"icon",className:"h-6 w-6 text-orange-600 hover:text-orange-700",onClick:ke=>{ke.stopPropagation(),Me(re)},title:"封禁",children:e.jsx(Ny,{className:"h-3 w-3"})}),e.jsx(b,{variant:"ghost",size:"icon",className:"h-6 w-6 text-red-600 hover:text-red-700",onClick:ke=>{ke.stopPropagation(),U(re)},title:"删除",children:e.jsx(at,{className:"h-3 w-3"})})]})]})]},re.id))}),p>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["显示 ",(f-1)*v+1," 到"," ",Math.min(f*v,p)," 条,共 ",p," 条"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(vr,{className:"h-4 w-4"})}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>j(re=>Math.max(1,re-1)),disabled:f===1,children:[e.jsx(dn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:T,onChange:re=>te(re.target.value),onKeyDown:re=>re.key==="Enter"&&Ut(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(p/v)}),e.jsx(b,{variant:"outline",size:"sm",onClick:Ut,disabled:!T,className:"h-8",children:"跳转"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>j(re=>re+1),disabled:f>=Math.ceil(p/v),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(Ll,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(p/v)),disabled:f>=Math.ceil(p/v),className:"hidden sm:flex",children:e.jsx(br,{className:"h-4 w-4"})})]})]})]})]}),e.jsx(Dw,{emoji:Y,open:R,onOpenChange:ne}),e.jsx(Ow,{emoji:Y,open:fe,onOpenChange:Ce,onSuccess:()=>{ve(),de()}}),e.jsx(Rw,{open:oe,onOpenChange:ae,onSuccess:()=>{ve(),de()}})]})}),e.jsx(bt,{open:A,onOpenChange:X,children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认批量删除"}),e.jsxs(xt,{children:["你确定要删除选中的 ",Ne.size," 个表情包吗?此操作不可撤销。"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:Xe,children:"确认删除"})]})]})}),e.jsx(Jt,{open:we,onOpenChange:pe,children:e.jsxs($t,{children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:"确认删除"}),e.jsx(ds,{children:"确定要删除这个表情包吗?此操作无法撤销。"})]}),e.jsxs(xs,{children:[e.jsx(b,{variant:"outline",onClick:()=>pe(!1),children:"取消"}),e.jsx(b,{variant:"destructive",onClick:ee,children:"删除"})]})]})})]})}function Dw({emoji:n,open:r,onOpenChange:c}){if(!n)return null;const d=h=>h?new Date(h*1e3).toLocaleString("zh-CN"):"-";return e.jsx(Jt,{open:r,onOpenChange:c,children:e.jsxs($t,{className:"max-w-2xl max-h-[90vh]",children:[e.jsx(Qt,{children:e.jsx(Yt,{children:"表情包详情"})}),e.jsx(st,{className:"max-h-[calc(90vh-8rem)] pr-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"flex justify-center",children:e.jsx("div",{className:"w-32 h-32 bg-muted rounded-lg flex items-center justify-center overflow-hidden",children:e.jsx("img",{src:Ew(n.id),alt:n.description||"表情包",className:"w-full h-full object-cover",onError:h=>{const x=h.target;x.style.display="none";const f=x.parentElement;f&&(f.innerHTML='')}})})}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(y,{className:"text-muted-foreground",children:"ID"}),e.jsx("div",{className:"mt-1 font-mono",children:n.id})]}),e.jsxs("div",{children:[e.jsx(y,{className:"text-muted-foreground",children:"格式"}),e.jsx("div",{className:"mt-1",children:e.jsx(Je,{variant:"outline",children:n.format.toUpperCase()})})]})]}),e.jsxs("div",{children:[e.jsx(y,{className:"text-muted-foreground",children:"文件路径"}),e.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:n.full_path})]}),e.jsxs("div",{children:[e.jsx(y,{className:"text-muted-foreground",children:"哈希值"}),e.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:n.emoji_hash})]}),e.jsxs("div",{children:[e.jsx(y,{className:"text-muted-foreground",children:"描述"}),n.description?e.jsx("div",{className:"mt-1 rounded-lg border bg-muted/50 p-3",children:e.jsx(bw,{className:"prose-sm",children:n.description})}):e.jsx("div",{className:"mt-1 text-sm text-muted-foreground",children:"-"})]}),e.jsxs("div",{children:[e.jsx(y,{className:"text-muted-foreground",children:"情绪"}),e.jsx("div",{className:"mt-1",children:n.emotion?e.jsx("span",{className:"text-sm",children:n.emotion}):e.jsx("span",{className:"text-sm text-muted-foreground",children:"-"})})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(y,{className:"text-muted-foreground",children:"状态"}),e.jsxs("div",{className:"mt-2 flex gap-2",children:[n.is_registered&&e.jsx(Je,{variant:"default",className:"bg-green-600",children:"已注册"}),n.is_banned&&e.jsx(Je,{variant:"destructive",children:"已封禁"}),!n.is_registered&&!n.is_banned&&e.jsx(Je,{variant:"outline",children:"未注册"})]})]}),e.jsxs("div",{children:[e.jsx(y,{className:"text-muted-foreground",children:"使用次数"}),e.jsx("div",{className:"mt-1 font-mono text-lg",children:n.usage_count})]})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(y,{className:"text-muted-foreground",children:"记录时间"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.record_time)})]}),e.jsxs("div",{children:[e.jsx(y,{className:"text-muted-foreground",children:"注册时间"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.register_time)})]})]}),e.jsxs("div",{children:[e.jsx(y,{className:"text-muted-foreground",children:"最后使用"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.last_used_time)})]})]})})]})})}function Ow({emoji:n,open:r,onOpenChange:c,onSuccess:d}){const[h,x]=u.useState(""),[f,j]=u.useState(!1),[p,N]=u.useState(!1),[v,C]=u.useState(!1),{toast:S}=Xt();u.useEffect(()=>{n&&(x(n.emotion||""),j(n.is_registered),N(n.is_banned))},[n]);const w=async()=>{if(n)try{C(!0);const L=h.split(/[,,]/).map(F=>F.trim()).filter(Boolean).join(",");await ww(n.id,{emotion:L||void 0,is_registered:f,is_banned:p}),S({title:"成功",description:"表情包信息已更新"}),c(!1),d()}catch(L){const F=L instanceof Error?L.message:"保存失败";S({title:"错误",description:F,variant:"destructive"})}finally{C(!1)}};return n?e.jsx(Jt,{open:r,onOpenChange:c,children:e.jsxs($t,{className:"max-w-2xl",children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:"编辑表情包"}),e.jsx(ds,{children:"修改表情包的情绪和状态信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(y,{children:"情绪"}),e.jsx(Ft,{value:h,onChange:L=>x(L.target.value),placeholder:"输入情绪描述...",rows:2,className:"mt-1"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"输入情绪相关的文本描述"})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Cs,{id:"is_registered",checked:f,onCheckedChange:L=>{L===!0?(j(!0),N(!1)):j(!1)}}),e.jsx(y,{htmlFor:"is_registered",className:"cursor-pointer",children:"已注册"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Cs,{id:"is_banned",checked:p,onCheckedChange:L=>{L===!0?(N(!0),j(!1)):N(!1)}}),e.jsx(y,{htmlFor:"is_banned",className:"cursor-pointer",children:"已封禁"})]})]})]}),e.jsxs(xs,{children:[e.jsx(b,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(b,{onClick:w,disabled:v,children:v?"保存中...":"保存"})]})]})}):null}function Rw({open:n,onOpenChange:r,onSuccess:c}){const[d,h]=u.useState("select"),[x,f]=u.useState([]),[j,p]=u.useState(null),[N,v]=u.useState(!1),{toast:C}=Xt(),S=u.useMemo(()=>new aN({id:"emoji-uploader",autoProceed:!1,restrictions:{maxFileSize:10485760,allowedFileTypes:["image/jpeg","image/png","image/gif","image/webp"],maxNumberOfFiles:20},locale:{pluralize:()=>0,strings:{addMoreFiles:"添加更多文件",addingMoreFiles:"正在添加更多文件",allowedFileTypes:"允许的文件类型:%{types}",cancel:"取消",closeModal:"关闭",complete:"完成",connectedToInternet:"已连接到互联网",copyLink:"复制链接",copyLinkToClipboardFallback:"复制下方链接",copyLinkToClipboardSuccess:"链接已复制到剪贴板",dashboardTitle:"选择文件",dashboardWindowTitle:"文件选择窗口(按 ESC 关闭)",done:"完成",dropHereOr:"拖放文件到这里或 %{browse}",dropHint:"将文件拖放到此处",dropPasteFiles:"将文件拖放到这里或 %{browseFiles}",dropPasteFolders:"将文件拖放到这里或 %{browseFolders}",dropPasteBoth:"将文件拖放到这里,%{browseFiles} 或 %{browseFolders}",dropPasteImportFiles:"将文件拖放到这里,%{browseFiles} 或从以下位置导入:",dropPasteImportFolders:"将文件拖放到这里,%{browseFolders} 或从以下位置导入:",dropPasteImportBoth:"将文件拖放到这里,%{browseFiles},%{browseFolders} 或从以下位置导入:",editFile:"编辑文件",editing:"正在编辑 %{file}",emptyFolderAdded:"未从空文件夹添加文件",exceedsSize:"%{file} 超过了最大允许大小 %{size}",failedToUpload:"上传 %{file} 失败",fileSource:"文件来源:%{name}",filesUploadedOfTotal:{0:"已上传 %{complete} / %{smart_count} 个文件",1:"已上传 %{complete} / %{smart_count} 个文件"},filter:"筛选",finishEditingFile:"完成编辑文件",folderAdded:{0:"已从 %{folder} 添加 %{smart_count} 个文件",1:"已从 %{folder} 添加 %{smart_count} 个文件"},generatingThumbnails:"正在生成缩略图...",import:"导入",importFiles:"从以下位置导入文件:",importFrom:"从 %{name} 导入",loading:"加载中...",logOut:"登出",myDevice:"我的设备",noFilesFound:"这里没有文件或文件夹",noInternetConnection:"无网络连接",openFolderNamed:"打开文件夹 %{name}",pause:"暂停",pauseUpload:"暂停上传",paused:"已暂停",poweredBy:"技术支持:%{uppy}",processingXFiles:{0:"正在处理 %{smart_count} 个文件",1:"正在处理 %{smart_count} 个文件"},recording:"录制中",removeFile:"移除文件",resetFilter:"重置筛选",resume:"继续",resumeUpload:"继续上传",retry:"重试",retryUpload:"重试上传",save:"保存",saveChanges:"保存更改",selectFileNamed:"选择文件 %{name}",selectX:{0:"选择 %{smart_count}",1:"选择 %{smart_count}"},smile:"笑一个!",startRecording:"开始录制视频",stopRecording:"停止录制视频",takePicture:"拍照",timedOut:"上传已停滞 %{seconds} 秒,正在中止。",upload:"下一步",uploadComplete:"上传完成",uploadFailed:"上传失败",uploadPaused:"上传已暂停",uploadXFiles:{0:"下一步(%{smart_count} 个文件)",1:"下一步(%{smart_count} 个文件)"},uploadXNewFiles:{0:"下一步(+%{smart_count} 个文件)",1:"下一步(+%{smart_count} 个文件)"},uploading:"正在上传",uploadingXFiles:{0:"正在上传 %{smart_count} 个文件",1:"正在上传 %{smart_count} 个文件"},xFilesSelected:{0:"已选择 %{smart_count} 个文件",1:"已选择 %{smart_count} 个文件"},xMoreFilesAdded:{0:"又添加了 %{smart_count} 个文件",1:"又添加了 %{smart_count} 个文件"},xTimeLeft:"剩余 %{time}",youCanOnlyUploadFileTypes:"您只能上传:%{types}",youCanOnlyUploadX:{0:"您只能上传 %{smart_count} 个文件",1:"您只能上传 %{smart_count} 个文件"},youHaveToAtLeastSelectX:{0:"您至少需要选择 %{smart_count} 个文件",1:"您至少需要选择 %{smart_count} 个文件"},browseFiles:"浏览文件",browseFolders:"浏览文件夹",cancelUpload:"取消上传",addMore:"添加更多",back:"返回",editFileWithFilename:"编辑文件 %{file}"}}}),[]);u.useEffect(()=>{const Y=()=>{const E=S.getFiles();if(E.length===0)return;const R=E.map(ne=>({id:ne.id,name:ne.name,previewUrl:ne.preview||URL.createObjectURL(ne.data),emotion:"",description:"",isRegistered:!0,file:ne.data}));f(R),E.length===1?(p(R[0].id),h("edit-single")):h("edit-multiple")};return S.on("upload",Y),()=>{S.off("upload",Y)}},[S]),u.useEffect(()=>{n||(S.cancelAll(),h("select"),f([]),p(null),v(!1))},[n,S]);const w=u.useCallback((Y,E)=>{f(R=>R.map(ne=>ne.id===Y?{...ne,...E}:ne))},[]),L=u.useCallback(Y=>Y.emotion.trim().length>0,[]),F=u.useMemo(()=>x.length>0&&x.every(L),[x,L]),B=u.useMemo(()=>x.find(Y=>Y.id===j)||null,[x,j]),O=u.useCallback(()=>{(d==="edit-single"||d==="edit-multiple")&&(h("select"),f([]),p(null))},[d]),K=u.useCallback(async()=>{if(!F){C({title:"请填写必填项",description:"每个表情包的情感标签都是必填的",variant:"destructive"});return}v(!0);const Y=localStorage.getItem("access-token")||"";let E=0,R=0;try{for(const ne of x){const fe=new FormData;fe.append("file",ne.file),fe.append("emotion",ne.emotion),fe.append("description",ne.description),fe.append("is_registered",ne.isRegistered.toString());try{(await fetch(Aw(),{method:"POST",headers:{Authorization:`Bearer ${Y}`},body:fe})).ok?E++:R++}catch{R++}}R===0?(C({title:"上传成功",description:`成功上传 ${E} 个表情包`}),r(!1),c()):(C({title:"部分上传失败",description:`成功 ${E} 个,失败 ${R} 个`,variant:"destructive"}),c())}finally{v(!1)}},[F,x,C,r,c]),H=()=>e.jsx("div",{className:"space-y-4",children:e.jsx("div",{className:"border rounded-lg overflow-hidden w-full",children:e.jsx(gw,{uppy:S,proudlyDisplayPoweredByUppy:!1,hideProgressDetails:!0,height:350,width:"100%",theme:"auto",note:"支持 JPG、PNG、GIF、WebP 格式,最多 20 个文件"})})}),z=()=>{const Y=x[0];return Y?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs(b,{variant:"ghost",size:"sm",onClick:O,children:[e.jsx(ti,{className:"h-4 w-4 mr-1"}),"返回"]}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"编辑表情包信息"})]}),e.jsxs("div",{className:"flex gap-6",children:[e.jsxs("div",{className:"flex-shrink-0",children:[e.jsx("div",{className:"w-32 h-32 rounded-lg border overflow-hidden bg-muted flex items-center justify-center",children:e.jsx("img",{src:Y.previewUrl,alt:Y.name,className:"max-w-full max-h-full object-contain"})}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2 text-center truncate max-w-32",children:Y.name})]}),e.jsxs("div",{className:"flex-1 space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(y,{htmlFor:"single-emotion",children:["情感标签 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"single-emotion",value:Y.emotion,onChange:E=>w(Y.id,{emotion:E.target.value}),placeholder:"多个标签用逗号分隔,如:开心,高兴",className:Y.emotion.trim()?"":"border-destructive"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"用于情感匹配,多个标签用逗号分隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"single-description",children:"描述"}),e.jsx(ce,{id:"single-description",value:Y.description,onChange:E=>w(Y.id,{description:E.target.value}),placeholder:"输入表情包描述..."})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Cs,{id:"single-is-registered",checked:Y.isRegistered,onCheckedChange:E=>w(Y.id,{isRegistered:E===!0})}),e.jsx(y,{htmlFor:"single-is-registered",className:"cursor-pointer",children:"上传后立即注册(可被麦麦使用)"})]})]})]}),e.jsx(xs,{children:e.jsx(b,{onClick:K,disabled:!F||N,children:N?"上传中...":"上传"})})]}):null},V=()=>{const Y=x.filter(L).length,E=x.length;return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs(b,{variant:"ghost",size:"sm",onClick:O,children:[e.jsx(ti,{className:"h-4 w-4 mr-1"}),"返回"]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["编辑表情包信息(",Y,"/",E," 已完成)"]})]}),e.jsx(Je,{variant:F?"default":"secondary",children:F?e.jsxs(e.Fragment,{children:[e.jsx(Na,{className:"h-3 w-3 mr-1"}),"全部完成"]}):e.jsxs(e.Fragment,{children:[e.jsx(on,{className:"h-3 w-3 mr-1"}),"未完成"]})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(st,{className:"h-[350px] pr-2",children:e.jsx("div",{className:"space-y-2",children:x.map(R=>{const ne=L(R),fe=j===R.id;return e.jsxs("div",{onClick:()=>p(R.id),className:` + flex items-center gap-3 p-3 rounded-lg border-2 cursor-pointer transition-all + ${fe?"ring-2 ring-primary":""} + ${ne?"border-green-500 bg-green-50 dark:bg-green-950/20":"border-border hover:border-muted-foreground/50"} + `,children:[e.jsx("div",{className:"w-12 h-12 rounded border overflow-hidden bg-muted flex-shrink-0 flex items-center justify-center",children:e.jsx("img",{src:R.previewUrl,alt:R.name,className:"max-w-full max-h-full object-contain"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm font-medium truncate",children:R.name}),e.jsx("p",{className:"text-xs text-muted-foreground truncate",children:R.emotion||"未填写情感标签"})]}),ne?e.jsx(ha,{className:"h-5 w-5 text-green-500 flex-shrink-0"}):e.jsx("div",{className:"h-5 w-5 rounded-full border-2 border-muted-foreground/30 flex-shrink-0"})]},R.id)})})}),e.jsx("div",{className:"border rounded-lg p-4",children:B?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-16 h-16 rounded border overflow-hidden bg-muted flex items-center justify-center",children:e.jsx("img",{src:B.previewUrl,alt:B.name,className:"max-w-full max-h-full object-contain"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium truncate",children:B.name}),L(B)&&e.jsxs(Je,{variant:"outline",className:"text-green-600 border-green-600",children:[e.jsx(Na,{className:"h-3 w-3 mr-1"}),"已完成"]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(y,{htmlFor:"multi-emotion",children:["情感标签 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"multi-emotion",value:B.emotion,onChange:R=>w(B.id,{emotion:R.target.value}),placeholder:"多个标签用逗号分隔,如:开心,高兴",className:B.emotion.trim()?"":"border-destructive"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"multi-description",children:"描述"}),e.jsx(ce,{id:"multi-description",value:B.description,onChange:R=>w(B.id,{description:R.target.value}),placeholder:"输入表情包描述..."})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Cs,{id:"multi-is-registered",checked:B.isRegistered,onCheckedChange:R=>w(B.id,{isRegistered:R===!0})}),e.jsx(y,{htmlFor:"multi-is-registered",className:"cursor-pointer text-sm",children:"上传后立即注册"})]})]}):e.jsx("div",{className:"h-full flex items-center justify-center text-muted-foreground",children:e.jsxs("div",{className:"text-center",children:[e.jsx(ig,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),e.jsx("p",{children:"点击左侧卡片编辑"})]})})})]}),e.jsx(xs,{children:e.jsx(b,{onClick:K,disabled:!F||N,children:N?"上传中...":`上传全部 (${E})`})})]})};return e.jsx(Jt,{open:n,onOpenChange:r,children:e.jsxs($t,{className:"max-w-3xl max-h-[90vh] overflow-hidden",children:[e.jsxs(Qt,{children:[e.jsxs(Yt,{className:"flex items-center gap-2",children:[e.jsx(dr,{className:"h-5 w-5"}),d==="select"&&"上传表情包 - 选择文件",d==="edit-single"&&"上传表情包 - 填写信息",d==="edit-multiple"&&"上传表情包 - 批量编辑"]}),e.jsxs(ds,{children:[d==="select"&&"支持 JPG、PNG、GIF、WebP 格式,单个文件最大 10MB,可同时上传多个文件",d==="edit-single"&&"请填写表情包的情感标签(必填)和描述",d==="edit-multiple"&&"点击左侧卡片编辑每个表情包的信息,情感标签为必填项"]})]}),e.jsxs("div",{className:"overflow-y-auto pr-1",children:[d==="select"&&H(),d==="edit-single"&&z(),d==="edit-multiple"&&V()]})]})})}const Bl="/api/webui/expression";async function Lw(){const n=await Te(`${Bl}/chats`,{});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取聊天列表失败")}return n.json()}async function Uw(n){const r=new URLSearchParams;n.page&&r.append("page",n.page.toString()),n.page_size&&r.append("page_size",n.page_size.toString()),n.search&&r.append("search",n.search),n.chat_id&&r.append("chat_id",n.chat_id);const c=await Te(`${Bl}/list?${r}`,{});if(!c.ok){const d=await c.json();throw new Error(d.detail||"获取表达方式列表失败")}return c.json()}async function Bw(n){const r=await Te(`${Bl}/${n}`,{});if(!r.ok){const c=await r.json();throw new Error(c.detail||"获取表达方式详情失败")}return r.json()}async function Hw(n){const r=await Te(`${Bl}/`,{method:"POST",body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"创建表达方式失败")}return r.json()}async function qw(n,r){const c=await Te(`${Bl}/${n}`,{method:"PATCH",body:JSON.stringify(r)});if(!c.ok){const d=await c.json();throw new Error(d.detail||"更新表达方式失败")}return c.json()}async function Gw(n){const r=await Te(`${Bl}/${n}`,{method:"DELETE"});if(!r.ok){const c=await r.json();throw new Error(c.detail||"删除表达方式失败")}return r.json()}async function Vw(n){const r=await Te(`${Bl}/batch/delete`,{method:"POST",body:JSON.stringify({ids:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"批量删除表达方式失败")}return r.json()}async function Fw(){const n=await Te(`${Bl}/stats/summary`,{});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取统计数据失败")}return n.json()}function $w(){const[n,r]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(0),[f,j]=u.useState(1),[p,N]=u.useState(20),[v,C]=u.useState(""),[S,w]=u.useState(null),[L,F]=u.useState(!1),[B,O]=u.useState(!1),[K,H]=u.useState(!1),[z,V]=u.useState(null),[Y,E]=u.useState(new Set),[R,ne]=u.useState(!1),[fe,Ce]=u.useState(""),[we,pe]=u.useState({total:0,recent_7days:0,chat_count:0,top_chats:{}}),[Ne,be]=u.useState([]),[A,X]=u.useState(new Map),{toast:T}=Xt(),te=async()=>{try{d(!0);const ee=await Uw({page:f,page_size:p,search:v||void 0});r(ee.data),x(ee.total)}catch(ee){T({title:"加载失败",description:ee instanceof Error?ee.message:"无法加载表达方式",variant:"destructive"})}finally{d(!1)}},_=async()=>{try{const ee=await Fw();ee?.data&&pe(ee.data)}catch(ee){console.error("加载统计数据失败:",ee)}},me=async()=>{try{const ee=await Lw();if(ee?.data){be(ee.data);const Se=new Map;ee.data.forEach(Me=>{Se.set(Me.chat_id,Me.chat_name)}),X(Se)}}catch(ee){console.error("加载聊天列表失败:",ee)}},oe=ee=>A.get(ee)||ee;u.useEffect(()=>{te(),_(),me()},[f,p,v]);const ae=async ee=>{try{const Se=await Bw(ee.id);w(Se.data),F(!0)}catch(Se){T({title:"加载详情失败",description:Se instanceof Error?Se.message:"无法加载表达方式详情",variant:"destructive"})}},xe=ee=>{w(ee),O(!0)},ve=async ee=>{try{await Gw(ee.id),T({title:"删除成功",description:`已删除表达方式: ${ee.situation}`}),V(null),te(),_()}catch(Se){T({title:"删除失败",description:Se instanceof Error?Se.message:"无法删除表达方式",variant:"destructive"})}},de=ee=>{const Se=new Set(Y);Se.has(ee)?Se.delete(ee):Se.add(ee),E(Se)},G=()=>{Y.size===n.length&&n.length>0?E(new Set):E(new Set(n.map(ee=>ee.id)))},W=async()=>{try{await Vw(Array.from(Y)),T({title:"批量删除成功",description:`已删除 ${Y.size} 个表达方式`}),E(new Set),ne(!1),te(),_()}catch(ee){T({title:"批量删除失败",description:ee instanceof Error?ee.message:"无法批量删除表达方式",variant:"destructive"})}},U=()=>{const ee=parseInt(fe),Se=Math.ceil(h/p);ee>=1&&ee<=Se?(j(ee),Ce("")):T({title:"无效的页码",description:`请输入1-${Se}之间的页码`,variant:"destructive"})};return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsx("div",{className:"mb-4 sm:mb-6",children:e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[e.jsx(cn,{className:"h-8 w-8",strokeWidth:2}),"表达方式管理"]}),e.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦的表达方式和话术模板"})]}),e.jsxs(b,{onClick:()=>H(!0),className:"gap-2",children:[e.jsx(hs,{className:"h-4 w-4"}),"新增表达方式"]})]})}),e.jsx(st,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"总数量"}),e.jsx("div",{className:"text-2xl font-bold mt-1",children:we.total})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"近7天新增"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:we.recent_7days})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"关联聊天数"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-blue-600",children:we.chat_count})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx(y,{htmlFor:"search",children:"搜索"}),e.jsx("div",{className:"flex flex-col sm:flex-row gap-2 mt-1.5",children:e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(zs,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{id:"search",placeholder:"搜索情境、风格或上下文...",value:v,onChange:ee=>C(ee.target.value),className:"pl-9"})]})}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[e.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:Y.size>0&&e.jsxs("span",{children:["已选择 ",Y.size," 个表达方式"]})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(qe,{value:p.toString(),onValueChange:ee=>{N(parseInt(ee)),j(1),E(new Set)},children:[e.jsx(Be,{id:"page-size",className:"w-20",children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"10",children:"10"}),e.jsx(ie,{value:"20",children:"20"}),e.jsx(ie,{value:"50",children:"50"}),e.jsx(ie,{value:"100",children:"100"})]})]}),Y.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>E(new Set),children:"取消选择"}),e.jsxs(b,{variant:"destructive",size:"sm",onClick:()=>ne(!0),children:[e.jsx(at,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card",children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(li,{children:[e.jsx(ni,{children:e.jsxs(_s,{children:[e.jsx(rt,{className:"w-12",children:e.jsx(Cs,{checked:Y.size===n.length&&n.length>0,onCheckedChange:G})}),e.jsx(rt,{children:"情境"}),e.jsx(rt,{children:"风格"}),e.jsx(rt,{children:"聊天"}),e.jsx(rt,{className:"text-right",children:"操作"})]})}),e.jsx(ii,{children:c?e.jsx(_s,{children:e.jsx(Ze,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):n.length===0?e.jsx(_s,{children:e.jsx(Ze,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):n.map(ee=>e.jsxs(_s,{children:[e.jsx(Ze,{children:e.jsx(Cs,{checked:Y.has(ee.id),onCheckedChange:()=>de(ee.id)})}),e.jsx(Ze,{className:"font-medium max-w-xs truncate",children:ee.situation}),e.jsx(Ze,{className:"max-w-xs truncate",children:ee.style}),e.jsx(Ze,{className:"max-w-[200px] truncate",title:oe(ee.chat_id),style:{wordBreak:"keep-all"},children:e.jsx("span",{className:"whitespace-nowrap overflow-hidden text-ellipsis block",children:oe(ee.chat_id)})}),e.jsx(Ze,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(b,{variant:"default",size:"sm",onClick:()=>xe(ee),children:[e.jsx(mr,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsx(b,{variant:"outline",size:"icon",className:"h-8 w-8",onClick:()=>ae(ee),title:"查看详情",children:e.jsx(Ws,{className:"h-4 w-4"})}),e.jsxs(b,{size:"sm",onClick:()=>V(ee),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(at,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},ee.id))})]})}),e.jsx("div",{className:"md:hidden space-y-3 p-4",children:c?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):n.length===0?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):n.map(ee=>e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Cs,{checked:Y.has(ee.id),onCheckedChange:()=>de(ee.id),className:"mt-1"}),e.jsxs("div",{className:"min-w-0 flex-1 overflow-hidden space-y-2",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"情境"}),e.jsx("h3",{className:"font-semibold text-sm line-clamp-2 w-full break-all",title:ee.situation,children:ee.situation})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"风格"}),e.jsx("p",{className:"text-sm line-clamp-2 w-full break-all",title:ee.style,children:ee.style})]})]})]}),e.jsxs("div",{className:"text-sm",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"聊天"}),e.jsx("p",{className:"text-sm truncate",title:oe(ee.chat_id),style:{wordBreak:"keep-all"},children:oe(ee.chat_id)})]}),e.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>xe(ee),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(mr,{className:"h-3 w-3 mr-1"}),"编辑"]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>ae(ee),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:e.jsx(Ws,{className:"h-3 w-3"})}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>V(ee),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[e.jsx(at,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},ee.id))}),h>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",h," 条记录,第 ",f," / ",Math.ceil(h/p)," 页"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(vr,{className:"h-4 w-4"})}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>j(f-1),disabled:f===1,children:[e.jsx(dn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:fe,onChange:ee=>Ce(ee.target.value),onKeyDown:ee=>ee.key==="Enter"&&U(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(h/p)}),e.jsx(b,{variant:"outline",size:"sm",onClick:U,disabled:!fe,className:"h-8",children:"跳转"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>j(f+1),disabled:f>=Math.ceil(h/p),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(Ll,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(h/p)),disabled:f>=Math.ceil(h/p),className:"hidden sm:flex",children:e.jsx(br,{className:"h-4 w-4"})})]})]})]})]})}),e.jsx(Qw,{expression:S,open:L,onOpenChange:F,chatNameMap:A}),e.jsx(Yw,{open:K,onOpenChange:H,chatList:Ne,onSuccess:()=>{te(),_(),H(!1)}}),e.jsx(Xw,{expression:S,open:B,onOpenChange:O,chatList:Ne,onSuccess:()=>{te(),_(),O(!1)}}),e.jsx(bt,{open:!!z,onOpenChange:()=>V(null),children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:['确定要删除表达方式 "',z?.situation,'" 吗? 此操作不可撤销。']})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>z&&ve(z),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),e.jsx(Kw,{open:R,onOpenChange:ne,onConfirm:W,count:Y.size})]})}function Qw({expression:n,open:r,onOpenChange:c,chatNameMap:d}){if(!n)return null;const h=f=>f?new Date(f*1e3).toLocaleString("zh-CN"):"-",x=f=>d.get(f)||f;return e.jsx(Jt,{open:r,onOpenChange:c,children:e.jsxs($t,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:"表达方式详情"}),e.jsx(ds,{children:"查看表达方式的完整信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(sr,{label:"情境",value:n.situation}),e.jsx(sr,{label:"风格",value:n.style}),e.jsx(sr,{label:"聊天",value:x(n.chat_id)}),e.jsx(sr,{icon:zu,label:"记录ID",value:n.id.toString(),mono:!0})]}),e.jsx("div",{className:"grid grid-cols-2 gap-4",children:e.jsx(sr,{icon:Wn,label:"创建时间",value:h(n.create_date)})})]}),e.jsx(xs,{children:e.jsx(b,{onClick:()=>c(!1),children:"关闭"})})]})})}function sr({icon:n,label:r,value:c,mono:d=!1}){return e.jsxs("div",{className:"space-y-1",children:[e.jsxs(y,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[n&&e.jsx(n,{className:"h-3 w-3"}),r]}),e.jsx("div",{className:Q("text-sm",d&&"font-mono",!c&&"text-muted-foreground"),children:c||"-"})]})}function Yw({open:n,onOpenChange:r,chatList:c,onSuccess:d}){const[h,x]=u.useState({situation:"",style:"",chat_id:""}),[f,j]=u.useState(!1),{toast:p}=Xt(),N=async()=>{if(!h.situation||!h.style||!h.chat_id){p({title:"验证失败",description:"请填写必填字段:情境、风格和聊天",variant:"destructive"});return}try{j(!0),await Hw(h),p({title:"创建成功",description:"表达方式已创建"}),x({situation:"",style:"",chat_id:""}),d()}catch(v){p({title:"创建失败",description:v instanceof Error?v.message:"无法创建表达方式",variant:"destructive"})}finally{j(!1)}};return e.jsx(Jt,{open:n,onOpenChange:r,children:e.jsxs($t,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:"新增表达方式"}),e.jsx(ds,{children:"创建新的表达方式记录"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(y,{htmlFor:"situation",children:["情境 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"situation",value:h.situation,onChange:v=>x({...h,situation:v.target.value}),placeholder:"描述使用场景"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(y,{htmlFor:"style",children:["风格 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"style",value:h.style,onChange:v=>x({...h,style:v.target.value}),placeholder:"描述表达风格"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(y,{htmlFor:"chat_id",children:["聊天 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsxs(qe,{value:h.chat_id,onValueChange:v=>x({...h,chat_id:v}),children:[e.jsx(Be,{children:e.jsx(Ge,{placeholder:"选择关联的聊天"})}),e.jsx(He,{children:c.map(v=>e.jsx(ie,{value:v.chat_id,children:e.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[v.chat_name,v.is_group&&e.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},v.chat_id))})]})]})]}),e.jsxs(xs,{children:[e.jsx(b,{variant:"outline",onClick:()=>r(!1),children:"取消"}),e.jsx(b,{onClick:N,disabled:f,children:f?"创建中...":"创建"})]})]})})}function Xw({expression:n,open:r,onOpenChange:c,chatList:d,onSuccess:h}){const[x,f]=u.useState({}),[j,p]=u.useState(!1),{toast:N}=Xt();u.useEffect(()=>{n&&f({situation:n.situation,style:n.style,chat_id:n.chat_id})},[n]);const v=async()=>{if(n)try{p(!0),await qw(n.id,x),N({title:"保存成功",description:"表达方式已更新"}),h()}catch(C){N({title:"保存失败",description:C instanceof Error?C.message:"无法更新表达方式",variant:"destructive"})}finally{p(!1)}};return n?e.jsx(Jt,{open:r,onOpenChange:c,children:e.jsxs($t,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:"编辑表达方式"}),e.jsx(ds,{children:"修改表达方式的信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"edit_situation",children:"情境"}),e.jsx(ce,{id:"edit_situation",value:x.situation||"",onChange:C=>f({...x,situation:C.target.value}),placeholder:"描述使用场景"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"edit_style",children:"风格"}),e.jsx(ce,{id:"edit_style",value:x.style||"",onChange:C=>f({...x,style:C.target.value}),placeholder:"描述表达风格"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"edit_chat_id",children:"聊天"}),e.jsxs(qe,{value:x.chat_id||"",onValueChange:C=>f({...x,chat_id:C}),children:[e.jsx(Be,{children:e.jsx(Ge,{placeholder:"选择关联的聊天"})}),e.jsx(He,{children:d.map(C=>e.jsx(ie,{value:C.chat_id,children:e.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[C.chat_name,C.is_group&&e.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},C.chat_id))})]})]})]}),e.jsxs(xs,{children:[e.jsx(b,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(b,{onClick:v,disabled:j,children:j?"保存中...":"保存"})]})]})}):null}function Kw({open:n,onOpenChange:r,onConfirm:c,count:d}){return e.jsx(bt,{open:n,onOpenChange:r,children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认批量删除"}),e.jsxs(xt,{children:["您即将删除 ",d," 个表达方式,此操作无法撤销。确定要继续吗?"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:c,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认删除"})]})]})})}const ri="/api/webui/person";async function Zw(n){const r=new URLSearchParams;n.page&&r.append("page",n.page.toString()),n.page_size&&r.append("page_size",n.page_size.toString()),n.search&&r.append("search",n.search),n.is_known!==void 0&&r.append("is_known",n.is_known.toString()),n.platform&&r.append("platform",n.platform);const c=await Te(`${ri}/list?${r}`,{headers:Rt()});if(!c.ok){const d=await c.json();throw new Error(d.detail||"获取人物列表失败")}return c.json()}async function Jw(n){const r=await Te(`${ri}/${n}`,{headers:Rt()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"获取人物详情失败")}return r.json()}async function Iw(n,r){const c=await Te(`${ri}/${n}`,{method:"PATCH",headers:Rt(),body:JSON.stringify(r)});if(!c.ok){const d=await c.json();throw new Error(d.detail||"更新人物信息失败")}return c.json()}async function Pw(n){const r=await Te(`${ri}/${n}`,{method:"DELETE",headers:Rt()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"删除人物信息失败")}return r.json()}async function Ww(){const n=await Te(`${ri}/stats/summary`,{headers:Rt()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取统计数据失败")}return n.json()}async function e1(n){const r=await Te(`${ri}/batch/delete`,{method:"POST",headers:Rt(),body:JSON.stringify({person_ids:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"批量删除失败")}return r.json()}function t1(){const[n,r]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(0),[f,j]=u.useState(1),[p,N]=u.useState(20),[v,C]=u.useState(""),[S,w]=u.useState(void 0),[L,F]=u.useState(void 0),[B,O]=u.useState(null),[K,H]=u.useState(!1),[z,V]=u.useState(!1),[Y,E]=u.useState(null),[R,ne]=u.useState({total:0,known:0,unknown:0,platforms:{}}),[fe,Ce]=u.useState(new Set),[we,pe]=u.useState(!1),[Ne,be]=u.useState(""),{toast:A}=Xt(),X=async()=>{try{d(!0);const U=await Zw({page:f,page_size:p,search:v||void 0,is_known:S,platform:L});r(U.data),x(U.total)}catch(U){A({title:"加载失败",description:U instanceof Error?U.message:"无法加载人物信息",variant:"destructive"})}finally{d(!1)}},T=async()=>{try{const U=await Ww();U?.data&&ne(U.data)}catch(U){console.error("加载统计数据失败:",U)}};u.useEffect(()=>{X(),T()},[f,p,v,S,L]);const te=async U=>{try{const ee=await Jw(U.person_id);O(ee.data),H(!0)}catch(ee){A({title:"加载详情失败",description:ee instanceof Error?ee.message:"无法加载人物详情",variant:"destructive"})}},_=U=>{O(U),V(!0)},me=async U=>{try{await Pw(U.person_id),A({title:"删除成功",description:`已删除人物信息: ${U.person_name||U.nickname||U.user_id}`}),E(null),X(),T()}catch(ee){A({title:"删除失败",description:ee instanceof Error?ee.message:"无法删除人物信息",variant:"destructive"})}},oe=u.useMemo(()=>Object.keys(R.platforms),[R.platforms]),ae=U=>{const ee=new Set(fe);ee.has(U)?ee.delete(U):ee.add(U),Ce(ee)},xe=()=>{fe.size===n.length&&n.length>0?Ce(new Set):Ce(new Set(n.map(U=>U.person_id)))},ve=()=>{if(fe.size===0){A({title:"未选择任何人物",description:"请先选择要删除的人物",variant:"destructive"});return}pe(!0)},de=async()=>{try{const U=await e1(Array.from(fe));A({title:"批量删除完成",description:U.message}),Ce(new Set),pe(!1),X(),T()}catch(U){A({title:"批量删除失败",description:U instanceof Error?U.message:"批量删除失败",variant:"destructive"})}},G=()=>{const U=parseInt(Ne),ee=Math.ceil(h/p);U>=1&&U<=ee?(j(U),be("")):A({title:"无效的页码",description:`请输入1-${ee}之间的页码`,variant:"destructive"})},W=U=>U?new Date(U*1e3).toLocaleString("zh-CN"):"-";return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsx("div",{className:"mb-4 sm:mb-6",children:e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[e.jsx(Au,{className:"h-8 w-8",strokeWidth:2}),"人物信息管理"]}),e.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦认识的所有人物信息"})]})})}),e.jsx(st,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"总人数"}),e.jsx("div",{className:"text-2xl font-bold mt-1",children:R.total})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"已认识"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:R.known})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"未认识"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-muted-foreground",children:R.unknown})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-4 gap-4",children:[e.jsxs("div",{className:"sm:col-span-2",children:[e.jsx(y,{htmlFor:"search",children:"搜索"}),e.jsxs("div",{className:"relative mt-1.5",children:[e.jsx(zs,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{id:"search",placeholder:"搜索名称、昵称或用户ID...",value:v,onChange:U=>C(U.target.value),className:"pl-9"})]})]}),e.jsxs("div",{children:[e.jsx(y,{htmlFor:"filter-known",children:"认识状态"}),e.jsxs(qe,{value:S===void 0?"all":S.toString(),onValueChange:U=>{w(U==="all"?void 0:U==="true"),j(1)},children:[e.jsx(Be,{id:"filter-known",className:"mt-1.5",children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"all",children:"全部"}),e.jsx(ie,{value:"true",children:"已认识"}),e.jsx(ie,{value:"false",children:"未认识"})]})]})]}),e.jsxs("div",{children:[e.jsx(y,{htmlFor:"filter-platform",children:"平台"}),e.jsxs(qe,{value:L||"all",onValueChange:U=>{F(U==="all"?void 0:U),j(1)},children:[e.jsx(Be,{id:"filter-platform",className:"mt-1.5",children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"all",children:"全部平台"}),oe.map(U=>e.jsxs(ie,{value:U,children:[U," (",R.platforms[U],")"]},U))]})]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[e.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:fe.size>0&&e.jsxs("span",{children:["已选择 ",fe.size," 个人物"]})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(qe,{value:p.toString(),onValueChange:U=>{N(parseInt(U)),j(1),Ce(new Set)},children:[e.jsx(Be,{id:"page-size",className:"w-20",children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"10",children:"10"}),e.jsx(ie,{value:"20",children:"20"}),e.jsx(ie,{value:"50",children:"50"}),e.jsx(ie,{value:"100",children:"100"})]})]}),fe.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>Ce(new Set),children:"取消选择"}),e.jsxs(b,{variant:"destructive",size:"sm",onClick:ve,children:[e.jsx(at,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card",children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(li,{children:[e.jsx(ni,{children:e.jsxs(_s,{children:[e.jsx(rt,{className:"w-12",children:e.jsx(Cs,{checked:n.length>0&&fe.size===n.length,onCheckedChange:xe,"aria-label":"全选"})}),e.jsx(rt,{children:"状态"}),e.jsx(rt,{children:"名称"}),e.jsx(rt,{children:"昵称"}),e.jsx(rt,{children:"平台"}),e.jsx(rt,{children:"用户ID"}),e.jsx(rt,{children:"最后更新"}),e.jsx(rt,{className:"text-right",children:"操作"})]})}),e.jsx(ii,{children:c?e.jsx(_s,{children:e.jsx(Ze,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):n.length===0?e.jsx(_s,{children:e.jsx(Ze,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):n.map(U=>e.jsxs(_s,{children:[e.jsx(Ze,{children:e.jsx(Cs,{checked:fe.has(U.person_id),onCheckedChange:()=>ae(U.person_id),"aria-label":`选择 ${U.person_name||U.nickname||U.user_id}`})}),e.jsx(Ze,{children:e.jsx("div",{className:Q("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium",U.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:U.is_known?"已认识":"未认识"})}),e.jsx(Ze,{className:"font-medium",children:U.person_name||e.jsx("span",{className:"text-muted-foreground",children:"-"})}),e.jsx(Ze,{children:U.nickname||"-"}),e.jsx(Ze,{children:U.platform}),e.jsx(Ze,{className:"font-mono text-sm",children:U.user_id}),e.jsx(Ze,{className:"text-sm text-muted-foreground",children:W(U.last_know)}),e.jsx(Ze,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(b,{variant:"default",size:"sm",onClick:()=>te(U),children:[e.jsx(Ws,{className:"h-4 w-4 mr-1"}),"详情"]}),e.jsxs(b,{variant:"default",size:"sm",onClick:()=>_(U),children:[e.jsx(mr,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsxs(b,{size:"sm",onClick:()=>E(U),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(at,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},U.id))})]})}),e.jsx("div",{className:"md:hidden space-y-3 p-4",children:c?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):n.length===0?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):n.map(U=>e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Cs,{checked:fe.has(U.person_id),onCheckedChange:()=>ae(U.person_id),className:"mt-1"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:Q("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium mb-2",U.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:U.is_known?"已认识":"未认识"}),e.jsx("h3",{className:"font-semibold text-sm line-clamp-1 w-full break-all",children:U.person_name||e.jsx("span",{className:"text-muted-foreground",children:"未命名"})}),U.nickname&&e.jsxs("p",{className:"text-xs text-muted-foreground mt-1 line-clamp-1 w-full break-all",children:["昵称: ",U.nickname]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"平台"}),e.jsx("p",{className:"font-medium text-xs",children:U.platform})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"用户ID"}),e.jsx("p",{className:"font-mono text-xs truncate",title:U.user_id,children:U.user_id})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"最后更新"}),e.jsx("p",{className:"text-xs",children:W(U.last_know)})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>te(U),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(Ws,{className:"h-3 w-3 mr-1"}),"查看"]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>_(U),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(mr,{className:"h-3 w-3 mr-1"}),"编辑"]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>E(U),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[e.jsx(at,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},U.id))}),h>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",h," 条记录,第 ",f," / ",Math.ceil(h/p)," 页"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(vr,{className:"h-4 w-4"})}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>j(f-1),disabled:f===1,children:[e.jsx(dn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:Ne,onChange:U=>be(U.target.value),onKeyDown:U=>U.key==="Enter"&&G(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(h/p)}),e.jsx(b,{variant:"outline",size:"sm",onClick:G,disabled:!Ne,className:"h-8",children:"跳转"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>j(f+1),disabled:f>=Math.ceil(h/p),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(Ll,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(h/p)),disabled:f>=Math.ceil(h/p),className:"hidden sm:flex",children:e.jsx(br,{className:"h-4 w-4"})})]})]})]})]})}),e.jsx(s1,{person:B,open:K,onOpenChange:H}),e.jsx(a1,{person:B,open:z,onOpenChange:V,onSuccess:()=>{X(),T(),V(!1)}}),e.jsx(bt,{open:!!Y,onOpenChange:()=>E(null),children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:['确定要删除人物信息 "',Y?.person_name||Y?.nickname||Y?.user_id,'" 吗? 此操作不可撤销。']})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>Y&&me(Y),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),e.jsx(bt,{open:we,onOpenChange:pe,children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认批量删除"}),e.jsxs(xt,{children:["确定要删除选中的 ",fe.size," 个人物信息吗? 此操作不可撤销。"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:de,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})})]})}function s1({person:n,open:r,onOpenChange:c}){if(!n)return null;const d=h=>h?new Date(h*1e3).toLocaleString("zh-CN"):"-";return e.jsx(Jt,{open:r,onOpenChange:c,children:e.jsxs($t,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:"人物详情"}),e.jsxs(ds,{children:["查看 ",n.person_name||n.nickname||n.user_id," 的完整信息"]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(nl,{icon:Ic,label:"人物名称",value:n.person_name}),e.jsx(nl,{icon:cn,label:"昵称",value:n.nickname}),e.jsx(nl,{icon:zu,label:"用户ID",value:n.user_id,mono:!0}),e.jsx(nl,{icon:zu,label:"人物ID",value:n.person_id,mono:!0}),e.jsx(nl,{label:"平台",value:n.platform}),e.jsx(nl,{label:"状态",value:n.is_known?"已认识":"未认识"})]}),n.name_reason&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(y,{className:"text-xs text-muted-foreground",children:"名称设定原因"}),e.jsx("p",{className:"mt-1 text-sm",children:n.name_reason})]}),n.memory_points&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(y,{className:"text-xs text-muted-foreground",children:"个人印象"}),e.jsx("p",{className:"mt-1 text-sm whitespace-pre-wrap",children:n.memory_points})]}),n.group_nick_name&&n.group_nick_name.length>0&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(y,{className:"text-xs text-muted-foreground",children:"群昵称"}),e.jsx("div",{className:"mt-2 space-y-1",children:n.group_nick_name.map((h,x)=>e.jsxs("div",{className:"text-sm flex items-center gap-2",children:[e.jsx("span",{className:"font-mono text-xs text-muted-foreground",children:h.group_id}),e.jsx("span",{children:"→"}),e.jsx("span",{children:h.group_nick_name})]},x))})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsx(nl,{icon:Wn,label:"认识时间",value:d(n.know_times)}),e.jsx(nl,{icon:Wn,label:"首次记录",value:d(n.know_since)}),e.jsx(nl,{icon:Wn,label:"最后更新",value:d(n.last_know)})]})]}),e.jsx(xs,{children:e.jsx(b,{onClick:()=>c(!1),children:"关闭"})})]})})}function nl({icon:n,label:r,value:c,mono:d=!1}){return e.jsxs("div",{className:"space-y-1",children:[e.jsxs(y,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[n&&e.jsx(n,{className:"h-3 w-3"}),r]}),e.jsx("div",{className:Q("text-sm",d&&"font-mono",!c&&"text-muted-foreground"),children:c||"-"})]})}function a1({person:n,open:r,onOpenChange:c,onSuccess:d}){const[h,x]=u.useState({}),[f,j]=u.useState(!1),{toast:p}=Xt();u.useEffect(()=>{n&&x({person_name:n.person_name||"",name_reason:n.name_reason||"",nickname:n.nickname||"",memory_points:n.memory_points||"",is_known:n.is_known})},[n]);const N=async()=>{if(n)try{j(!0),await Iw(n.person_id,h),p({title:"保存成功",description:"人物信息已更新"}),d()}catch(v){p({title:"保存失败",description:v instanceof Error?v.message:"无法更新人物信息",variant:"destructive"})}finally{j(!1)}};return n?e.jsx(Jt,{open:r,onOpenChange:c,children:e.jsxs($t,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:"编辑人物信息"}),e.jsxs(ds,{children:["修改 ",n.person_name||n.nickname||n.user_id," 的信息"]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"person_name",children:"人物名称"}),e.jsx(ce,{id:"person_name",value:h.person_name||"",onChange:v=>x({...h,person_name:v.target.value}),placeholder:"为这个人设置一个名称"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"nickname",children:"昵称"}),e.jsx(ce,{id:"nickname",value:h.nickname||"",onChange:v=>x({...h,nickname:v.target.value}),placeholder:"昵称"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"name_reason",children:"名称设定原因"}),e.jsx(Ft,{id:"name_reason",value:h.name_reason||"",onChange:v=>x({...h,name_reason:v.target.value}),placeholder:"为什么这样称呼这个人?",rows:2})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"memory_points",children:"个人印象"}),e.jsx(Ft,{id:"memory_points",value:h.memory_points||"",onChange:v=>x({...h,memory_points:v.target.value}),placeholder:"对这个人的印象和记忆点...",rows:4})]}),e.jsxs("div",{className:"flex items-center justify-between rounded-lg border p-3",children:[e.jsxs("div",{children:[e.jsx(y,{htmlFor:"is_known",className:"text-base font-medium",children:"已认识"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"标记是否已经认识这个人"})]}),e.jsx(Qe,{id:"is_known",checked:h.is_known,onCheckedChange:v=>x({...h,is_known:v})})]})]}),e.jsxs(xs,{children:[e.jsx(b,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(b,{onClick:N,disabled:f,children:f?"保存中...":"保存"})]})]})}):null}var l1=cN();const dp=ob(l1),Ku="/api/webui";async function n1(n=100,r="all"){const c=`${Ku}/knowledge/graph?limit=${n}&node_type=${r}`,d=await fetch(c);if(!d.ok)throw new Error(`获取知识图谱失败: ${d.status}`);return d.json()}async function i1(){const n=await fetch(`${Ku}/knowledge/stats`);if(!n.ok)throw new Error("获取知识图谱统计信息失败");return n.json()}async function r1(n){const r=await fetch(`${Ku}/knowledge/search?query=${encodeURIComponent(n)}`);if(!r.ok)throw new Error("搜索知识节点失败");return r.json()}const Ag=u.memo(({data:n})=>e.jsxs("div",{className:"px-4 py-2 shadow-md rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700 min-w-[120px]",children:[e.jsx(Pc,{type:"target",position:Wc.Top}),e.jsx("div",{className:"font-semibold text-white text-sm truncate max-w-[200px]",title:n.content,children:n.label}),e.jsx(Pc,{type:"source",position:Wc.Bottom})]}));Ag.displayName="EntityNode";const Mg=u.memo(({data:n})=>e.jsxs("div",{className:"px-3 py-2 shadow-md rounded-md bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700 min-w-[100px]",children:[e.jsx(Pc,{type:"target",position:Wc.Top}),e.jsx("div",{className:"font-medium text-white text-xs truncate max-w-[150px]",title:n.content,children:n.label}),e.jsx(Pc,{type:"source",position:Wc.Bottom})]}));Mg.displayName="ParagraphNode";const c1={entity:Ag,paragraph:Mg};function o1(n,r){const c=new dp.graphlib.Graph;c.setDefaultEdgeLabel(()=>({})),c.setGraph({rankdir:"TB",ranksep:100,nodesep:80});const d=[],h=[];return n.forEach(x=>{c.setNode(x.id,{width:150,height:50})}),r.forEach(x=>{c.setEdge(x.source,x.target)}),dp.layout(c),n.forEach(x=>{const f=c.node(x.id);d.push({id:x.id,type:x.type,position:{x:f.x-75,y:f.y-25},data:{label:x.content.slice(0,20)+(x.content.length>20?"...":""),content:x.content}})}),r.forEach((x,f)=>{const j={id:`edge-${f}`,source:x.source,target:x.target,animated:n.length<=200&&x.weight>5,style:{strokeWidth:Math.min(x.weight/2,5),opacity:.6}};x.weight>10&&n.length<100&&(j.label=`${x.weight.toFixed(0)}`),h.push(j)}),{nodes:d,edges:h}}function d1(){const n=fa(),[r,c]=u.useState(!1),[d,h]=u.useState(null),[x,f]=u.useState(""),[j,p]=u.useState("all"),[N,v]=u.useState(50),[C,S]=u.useState("50"),[w,L]=u.useState(!1),[F,B]=u.useState(!0),[O,K]=u.useState(!1),[H,z]=u.useState(!1),[V,Y,E]=oN([]),[R,ne,fe]=dN([]),[Ce,we]=u.useState(0),[pe,Ne]=u.useState(null),[be,A]=u.useState(null),{toast:X}=Xt(),T=u.useCallback(de=>de.type==="entity"?"#6366f1":de.type==="paragraph"?"#10b981":"#6b7280",[]),te=u.useCallback(async(de=!1)=>{try{if(!de&&N>200){z(!0);return}c(!0);const[G,W]=await Promise.all([n1(N,j),i1()]);if(h(W),G.nodes.length===0){X({title:"提示",description:"知识库为空,请先导入知识数据"}),Y([]),ne([]);return}const{nodes:U,edges:ee}=o1(G.nodes,G.edges);Y(U),ne(ee),we(U.length),W&&W.total_nodes>N&&X({title:"提示",description:`知识图谱包含 ${W.total_nodes} 个节点,当前显示 ${U.length} 个`}),X({title:"加载成功",description:`已加载 ${U.length} 个节点,${ee.length} 条边`})}catch(G){console.error("加载知识图谱失败:",G),X({title:"加载失败",description:G instanceof Error?G.message:"未知错误",variant:"destructive"})}finally{c(!1)}},[N,j,X]),_=u.useCallback(async()=>{if(!x.trim()){X({title:"提示",description:"请输入搜索关键词"});return}try{const de=await r1(x);if(de.length===0){X({title:"未找到",description:"没有找到匹配的节点"});return}const G=new Set(de.map(W=>W.id));Y(W=>W.map(U=>({...U,style:{...U.style,opacity:G.has(U.id)?1:.3,filter:G.has(U.id)?"brightness(1.2)":"brightness(0.8)"}}))),X({title:"搜索完成",description:`找到 ${de.length} 个匹配节点`})}catch(de){console.error("搜索失败:",de),X({title:"搜索失败",description:de instanceof Error?de.message:"未知错误",variant:"destructive"})}},[x,X]),me=u.useCallback(()=>{Y(de=>de.map(G=>({...G,style:{...G.style,opacity:1,filter:"brightness(1)"}})))},[]),oe=u.useCallback(()=>{B(!1),K(!0),te()},[te]),ae=u.useCallback(()=>{z(!1),setTimeout(()=>{te(!0)},0)},[te]),xe=u.useCallback((de,G)=>{V.find(U=>U.id===G.id)&&Ne({id:G.id,type:G.type,content:G.data.content})},[V]);u.useEffect(()=>{F||O&&te()},[N,j,F,O]);const ve=u.useCallback((de,G)=>{const W=V.find(Se=>Se.id===G.source),U=V.find(Se=>Se.id===G.target),ee=R.find(Se=>Se.id===G.id);W&&U&&ee&&A({source:{id:W.id,type:W.type,content:W.data.content},target:{id:U.id,type:U.type,content:U.data.content},edge:{source:G.source,target:G.target,weight:parseFloat(G.label||"0")}})},[V,R]);return e.jsxs("div",{className:"h-full flex flex-col",children:[e.jsxs("div",{className:"flex-shrink-0 p-4 border-b bg-background",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦知识库图谱"}),e.jsx("p",{className:"text-muted-foreground mt-1",children:"可视化知识实体与关系网络"})]}),d&&e.jsxs("div",{className:"flex gap-2 flex-wrap",children:[e.jsxs(Je,{variant:"outline",className:"gap-1",children:[e.jsx(Zc,{className:"h-3 w-3"}),"节点: ",d.total_nodes]}),e.jsxs(Je,{variant:"outline",className:"gap-1",children:[e.jsx(rg,{className:"h-3 w-3"}),"边: ",d.total_edges]}),e.jsxs(Je,{variant:"outline",className:"gap-1",children:[e.jsx(Ra,{className:"h-3 w-3"}),"实体: ",d.entity_nodes]}),e.jsxs(Je,{variant:"outline",className:"gap-1",children:[e.jsx(Da,{className:"h-3 w-3"}),"段落: ",d.paragraph_nodes]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 mt-4",children:[e.jsxs("div",{className:"flex-1 flex gap-2",children:[e.jsx(ce,{placeholder:"搜索节点内容...",value:x,onChange:de=>f(de.target.value),onKeyDown:de=>de.key==="Enter"&&_(),className:"flex-1"}),e.jsx(b,{onClick:_,size:"sm",children:e.jsx(zs,{className:"h-4 w-4"})}),e.jsx(b,{onClick:me,variant:"outline",size:"sm",children:"重置"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(qe,{value:j,onValueChange:de=>p(de),children:[e.jsx(Be,{className:"w-[120px]",children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"all",children:"全部节点"}),e.jsx(ie,{value:"entity",children:"仅实体"}),e.jsx(ie,{value:"paragraph",children:"仅段落"})]})]}),e.jsxs(qe,{value:N===1e4?"all":w?"custom":N.toString(),onValueChange:de=>{de==="custom"?(L(!0),S(N.toString())):de==="all"?(L(!1),v(1e4)):(L(!1),v(Number(de)))},children:[e.jsx(Be,{className:"w-[120px]",children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"50",children:"50 节点"}),e.jsx(ie,{value:"100",children:"100 节点"}),e.jsx(ie,{value:"200",children:"200 节点"}),e.jsx(ie,{value:"500",children:"500 节点"}),e.jsx(ie,{value:"1000",children:"1000 节点"}),e.jsx(ie,{value:"all",children:"全部 (最多10000)"}),e.jsx(ie,{value:"custom",children:"自定义..."})]})]}),w&&e.jsx(ce,{type:"number",min:"50",value:C,onChange:de=>S(de.target.value),onBlur:()=>{const de=parseInt(C);!isNaN(de)&&de>=50?v(de):(S("50"),v(50))},onKeyDown:de=>{if(de.key==="Enter"){const G=parseInt(C);!isNaN(G)&&G>=50?v(G):(S("50"),v(50))}},placeholder:"最少50个",className:"w-[120px]"}),e.jsx(b,{onClick:()=>te(),variant:"outline",size:"sm",disabled:r,children:e.jsx(ws,{className:Q("h-4 w-4",r&&"animate-spin")})})]})]})]}),e.jsx("div",{className:"flex-1 relative",children:r?e.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx(ws,{className:"h-8 w-8 animate-spin mx-auto mb-2 text-muted-foreground"}),e.jsx("p",{className:"text-muted-foreground",children:"加载知识图谱中..."})]})}):V.length===0?e.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx(Zc,{className:"h-12 w-12 mx-auto mb-4 text-muted-foreground"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"知识库为空"}),e.jsx("p",{className:"text-muted-foreground",children:"请先导入知识数据"})]})}):e.jsxs(uN,{nodes:V,edges:R,onNodesChange:E,onEdgesChange:fe,onNodeClick:xe,onEdgeClick:ve,nodeTypes:c1,fitView:!0,minZoom:.05,maxZoom:1.5,defaultViewport:{x:0,y:0,zoom:.5},elevateNodesOnSelect:Ce<=500,nodesDraggable:Ce<=1e3,attributionPosition:"bottom-left",children:[e.jsx(mN,{variant:hN.Dots,gap:12,size:1}),e.jsx(xN,{}),Ce<=500&&e.jsx(fN,{nodeColor:T,nodeBorderRadius:8,pannable:!0,zoomable:!0}),e.jsxs(pN,{position:"top-right",className:"bg-background/95 backdrop-blur-sm rounded-lg border p-3 shadow-lg",children:[e.jsx("div",{className:"text-sm font-semibold mb-2",children:"图例"}),e.jsxs("div",{className:"space-y-2 text-xs",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700"}),e.jsx("span",{children:"实体节点"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700"}),e.jsx("span",{children:"段落节点"})]}),Ce>200&&e.jsxs("div",{className:"mt-2 pt-2 border-t text-yellow-600 dark:text-yellow-500",children:[e.jsx("div",{className:"font-semibold",children:"性能模式"}),e.jsx("div",{children:"已禁用动画"}),Ce>500&&e.jsx("div",{children:"已禁用缩略图"})]})]})]})]})}),e.jsx(Jt,{open:!!pe,onOpenChange:de=>!de&&Ne(null),children:e.jsxs($t,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsx(Qt,{children:e.jsx(Yt,{children:"节点详情"})}),pe&&e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"grid grid-cols-2 gap-4",children:e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"类型"}),e.jsx("div",{className:"mt-1",children:e.jsx(Je,{variant:pe.type==="entity"?"default":"secondary",children:pe.type==="entity"?"🏷️ 实体":"📄 段落"})})]})}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"ID"}),e.jsx("code",{className:"mt-1 block p-2 bg-muted rounded text-xs break-all",children:pe.id})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"内容"}),e.jsx(st,{className:"mt-1 h-40 p-3 bg-muted rounded",children:e.jsx("p",{className:"text-sm whitespace-pre-wrap",children:pe.content})})]})]})]})}),e.jsx(Jt,{open:!!be,onOpenChange:de=>!de&&A(null),children:e.jsxs($t,{className:"max-w-2xl max-h-[80vh] overflow-hidden flex flex-col",children:[e.jsx(Qt,{children:e.jsx(Yt,{children:"边详情"})}),be&&e.jsx(st,{className:"flex-1 pr-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-blue-50 dark:bg-blue-950 rounded border-2 border-blue-200 dark:border-blue-800",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"源节点"}),e.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:be.source.content}),e.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[be.source.id.slice(0,40),"..."]})]}),e.jsx("div",{className:"text-2xl text-muted-foreground flex-shrink-0",children:"→"}),e.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-green-50 dark:bg-green-950 rounded border-2 border-green-200 dark:border-green-800",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"目标节点"}),e.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:be.target.content}),e.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[be.target.id.slice(0,40),"..."]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"权重"}),e.jsx("div",{className:"mt-1",children:e.jsx(Je,{variant:"outline",className:"text-base font-mono",children:be.edge.weight.toFixed(4)})})]})]})})]})}),e.jsx(bt,{open:F,onOpenChange:B,children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"加载知识图谱"}),e.jsxs(xt,{children:["知识图谱的动态展示会消耗较多系统资源。",e.jsx("br",{}),"确定要加载知识图谱吗?"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{onClick:()=>n({to:"/"}),children:"取消 (返回首页)"}),e.jsx(ft,{onClick:oe,children:"确认加载"})]})]})}),e.jsx(bt,{open:H,onOpenChange:z,children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"⚠️ 节点数量较多"}),e.jsx(xt,{asChild:!0,children:e.jsxs("div",{children:[e.jsxs("p",{children:["您正在尝试加载 ",e.jsx("strong",{className:"text-orange-600",children:N>=1e4?"全部 (最多10000个)":N})," 个节点。"]}),e.jsx("p",{className:"mt-4",children:"节点数量过多可能导致:"}),e.jsxs("ul",{className:"list-disc list-inside mt-2 space-y-1",children:[e.jsx("li",{children:"页面加载时间较长"}),e.jsx("li",{children:"浏览器卡顿或崩溃"}),e.jsx("li",{children:"系统资源占用过高"})]}),e.jsx("p",{className:"mt-4",children:"建议先选择较少的节点数量 (50-200 个)。"})]})})]}),e.jsxs(mt,{children:[e.jsx(pt,{onClick:()=>{z(!1),N>200&&(v(50),L(!1))},children:"取消"}),e.jsx(ft,{onClick:ae,className:"bg-orange-600 hover:bg-orange-700",children:"我了解风险,继续加载"})]})]})})]})}function up({className:n,classNames:r,showOutsideDays:c=!0,captionLayout:d="label",buttonVariant:h="ghost",formatters:x,components:f,...j}){const p=ug();return e.jsx($y,{showOutsideDays:c,className:Q("bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,n),captionLayout:d,formatters:{formatMonthDropdown:N=>N.toLocaleString("default",{month:"short"}),...x},classNames:{root:Q("w-fit",p.root),months:Q("relative flex flex-col gap-4 md:flex-row",p.months),month:Q("flex w-full flex-col gap-4",p.month),nav:Q("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",p.nav),button_previous:Q(hr({variant:h}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",p.button_previous),button_next:Q(hr({variant:h}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",p.button_next),month_caption:Q("flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]",p.month_caption),dropdowns:Q("flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium",p.dropdowns),dropdown_root:Q("has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border",p.dropdown_root),dropdown:Q("bg-popover absolute inset-0 opacity-0",p.dropdown),caption_label:Q("select-none font-medium",d==="label"?"text-sm":"[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5",p.caption_label),table:"w-full border-collapse",weekdays:Q("flex",p.weekdays),weekday:Q("text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal",p.weekday),week:Q("mt-2 flex w-full",p.week),week_number_header:Q("w-[--cell-size] select-none",p.week_number_header),week_number:Q("text-muted-foreground select-none text-[0.8rem]",p.week_number),day:Q("group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md",p.day),range_start:Q("bg-accent rounded-l-md",p.range_start),range_middle:Q("rounded-none",p.range_middle),range_end:Q("bg-accent rounded-r-md",p.range_end),today:Q("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",p.today),outside:Q("text-muted-foreground aria-selected:text-muted-foreground",p.outside),disabled:Q("text-muted-foreground opacity-50",p.disabled),hidden:Q("invisible",p.hidden),...r},components:{Root:({className:N,rootRef:v,...C})=>e.jsx("div",{"data-slot":"calendar",ref:v,className:Q(N),...C}),Chevron:({className:N,orientation:v,...C})=>v==="left"?e.jsx(dn,{className:Q("size-4",N),...C}):v==="right"?e.jsx(Ll,{className:Q("size-4",N),...C}):e.jsx(Rl,{className:Q("size-4",N),...C}),DayButton:u1,WeekNumber:({children:N,...v})=>e.jsx("td",{...v,children:e.jsx("div",{className:"flex size-[--cell-size] items-center justify-center text-center",children:N})}),...f},...j})}function u1({className:n,day:r,modifiers:c,...d}){const h=ug(),x=u.useRef(null);return u.useEffect(()=>{c.focused&&x.current?.focus()},[c.focused]),e.jsx(b,{ref:x,variant:"ghost",size:"icon","data-day":r.date.toLocaleDateString(),"data-selected-single":c.selected&&!c.range_start&&!c.range_end&&!c.range_middle,"data-range-start":c.range_start,"data-range-end":c.range_end,"data-range-middle":c.range_middle,className:Q("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70",h.day,n),...d})}const m1={lessThanXSeconds:{one:"不到 1 秒",other:"不到 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分钟",lessThanXMinutes:{one:"不到 1 分钟",other:"不到 {{count}} 分钟"},xMinutes:{one:"1 分钟",other:"{{count}} 分钟"},xHours:{one:"1 小时",other:"{{count}} 小时"},aboutXHours:{one:"大约 1 小时",other:"大约 {{count}} 小时"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大约 1 个星期",other:"大约 {{count}} 个星期"},xWeeks:{one:"1 个星期",other:"{{count}} 个星期"},aboutXMonths:{one:"大约 1 个月",other:"大约 {{count}} 个月"},xMonths:{one:"1 个月",other:"{{count}} 个月"},aboutXYears:{one:"大约 1 年",other:"大约 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超过 1 年",other:"超过 {{count}} 年"},almostXYears:{one:"将近 1 年",other:"将近 {{count}} 年"}},h1=(n,r,c)=>{let d;const h=m1[n];return typeof h=="string"?d=h:r===1?d=h.one:d=h.other.replace("{{count}}",String(r)),c?.addSuffix?c.comparison&&c.comparison>0?d+"内":d+"前":d},x1={full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},f1={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},p1={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},g1={date:gu({formats:x1,defaultWidth:"full"}),time:gu({formats:f1,defaultWidth:"full"}),dateTime:gu({formats:p1,defaultWidth:"full"})};function mp(n,r,c){const d="eeee p";return mb(n,r,c)?d:n.getTime()>r.getTime()?"'下个'"+d:"'上个'"+d}const j1={lastWeek:mp,yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:mp,other:"PP p"},v1=(n,r,c,d)=>{const h=j1[n];return typeof h=="function"?h(r,c,d):h},b1={narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},y1={narrow:["1","2","3","4"],abbreviated:["第一季","第二季","第三季","第四季"],wide:["第一季度","第二季度","第三季度","第四季度"]},N1={narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},w1={narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["周日","周一","周二","周三","周四","周五","周六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},_1={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},S1={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},C1=(n,r)=>{const c=Number(n);switch(r?.unit){case"date":return c.toString()+"日";case"hour":return c.toString()+"时";case"minute":return c.toString()+"分";case"second":return c.toString()+"秒";default:return"第 "+c.toString()}},k1={ordinalNumber:C1,era:Ii({values:b1,defaultWidth:"wide"}),quarter:Ii({values:y1,defaultWidth:"wide",argumentCallback:n=>n-1}),month:Ii({values:N1,defaultWidth:"wide"}),day:Ii({values:w1,defaultWidth:"wide"}),dayPeriod:Ii({values:_1,defaultWidth:"wide",formattingValues:S1,defaultFormattingWidth:"wide"})},T1=/^(第\s*)?\d+(日|时|分|秒)?/i,E1=/\d+/i,z1={narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},A1={any:[/^(前)/i,/^(公元)/i]},M1={narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻钟/i},D1={any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},O1={narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},R1={narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},L1={narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^周[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},U1={any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},B1={any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i},H1={any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},q1={ordinalNumber:hb({matchPattern:T1,parsePattern:E1,valueCallback:n=>parseInt(n,10)}),era:Pi({matchPatterns:z1,defaultMatchWidth:"wide",parsePatterns:A1,defaultParseWidth:"any"}),quarter:Pi({matchPatterns:M1,defaultMatchWidth:"wide",parsePatterns:D1,defaultParseWidth:"any",valueCallback:n=>n+1}),month:Pi({matchPatterns:O1,defaultMatchWidth:"wide",parsePatterns:R1,defaultParseWidth:"any"}),day:Pi({matchPatterns:L1,defaultMatchWidth:"wide",parsePatterns:U1,defaultParseWidth:"any"}),dayPeriod:Pi({matchPatterns:B1,defaultMatchWidth:"any",parsePatterns:H1,defaultParseWidth:"any"})},qc={code:"zh-CN",formatDistance:h1,formatLong:g1,formatRelative:v1,localize:k1,match:q1,options:{weekStartsOn:1,firstWeekContainsDate:4}},Gc={xs:{label:"小",rowHeight:28,class:"text-[10px] sm:text-xs"},sm:{label:"中",rowHeight:36,class:"text-xs sm:text-sm"},base:{label:"大",rowHeight:44,class:"text-sm sm:text-base"}};function G1(){const[n,r]=u.useState([]),[c,d]=u.useState(""),[h,x]=u.useState("all"),[f,j]=u.useState("all"),[p,N]=u.useState(void 0),[v,C]=u.useState(void 0),[S,w]=u.useState(!0),[L,F]=u.useState(!1),[B,O]=u.useState("xs"),[K,H]=u.useState(4),z=u.useRef(null);u.useEffect(()=>{const T=an.getAllLogs();r(T);const te=an.onLog(()=>{r(an.getAllLogs())}),_=an.onConnectionChange(me=>{F(me)});return()=>{te(),_()}},[]);const V=u.useMemo(()=>{const T=new Set(n.map(te=>te.module).filter(te=>te&&te.trim()!==""));return Array.from(T).sort()},[n]),Y=T=>{switch(T){case"DEBUG":return"text-muted-foreground";case"INFO":return"text-blue-500 dark:text-blue-400";case"WARNING":return"text-yellow-600 dark:text-yellow-500";case"ERROR":return"text-red-600 dark:text-red-500";case"CRITICAL":return"text-red-700 dark:text-red-400 font-bold";default:return"text-foreground"}},E=T=>{switch(T){case"DEBUG":return"bg-gray-800/30 dark:bg-gray-800/50";case"INFO":return"bg-blue-900/20 dark:bg-blue-500/20";case"WARNING":return"bg-yellow-900/20 dark:bg-yellow-500/20";case"ERROR":return"bg-red-900/20 dark:bg-red-500/20";case"CRITICAL":return"bg-red-900/30 dark:bg-red-600/30";default:return"bg-gray-800/20 dark:bg-gray-800/30"}},R=()=>{window.location.reload()},ne=()=>{an.clearLogs(),r([])},fe=()=>{const T=pe.map(oe=>`${oe.timestamp} [${oe.level.padEnd(8)}] [${oe.module}] ${oe.message}`).join(` +`),te=new Blob([T],{type:"text/plain;charset=utf-8"}),_=URL.createObjectURL(te),me=document.createElement("a");me.href=_,me.download=`logs-${ju(new Date,"yyyy-MM-dd-HHmmss")}.txt`,me.click(),URL.revokeObjectURL(_)},Ce=()=>{w(!S)},we=()=>{N(void 0),C(void 0)},pe=u.useMemo(()=>n.filter(T=>{const te=c===""||T.message.toLowerCase().includes(c.toLowerCase())||T.module.toLowerCase().includes(c.toLowerCase()),_=h==="all"||T.level===h,me=f==="all"||T.module===f;let oe=!0;if(p||v){const ae=new Date(T.timestamp);if(p){const xe=new Date(p);xe.setHours(0,0,0,0),oe=oe&&ae>=xe}if(v){const xe=new Date(v);xe.setHours(23,59,59,999),oe=oe&&ae<=xe}}return te&&_&&me&&oe}),[n,c,h,f,p,v]),Ne=Gc[B].rowHeight+K,be=tb({count:pe.length,getScrollElement:()=>z.current,estimateSize:()=>Ne,overscan:15}),A=u.useRef(!1),X=u.useRef(pe.length);return u.useEffect(()=>{const T=z.current;if(!T)return;const te=()=>{if(A.current)return;const{scrollTop:_,scrollHeight:me,clientHeight:oe}=T,ae=me-_-oe;ae>100&&S?w(!1):ae<50&&!S&&w(!0)};return T.addEventListener("scroll",te,{passive:!0}),()=>T.removeEventListener("scroll",te)},[S]),u.useEffect(()=>{const T=pe.length>X.current;X.current=pe.length,S&&pe.length>0&&T&&(A.current=!0,be.scrollToIndex(pe.length-1,{align:"end",behavior:"auto"}),requestAnimationFrame(()=>{requestAnimationFrame(()=>{A.current=!1})}))},[pe.length,S,be]),e.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[e.jsxs("div",{className:"flex-shrink-0 space-y-4 p-3 sm:p-4 lg:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-xl sm:text-2xl lg:text-3xl font-bold",children:"日志查看器"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:"实时查看和分析麦麦运行日志"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:Q("h-2.5 w-2.5 sm:h-3 sm:w-3 rounded-full",L?"bg-green-500 animate-pulse":"bg-red-500")}),e.jsx("span",{className:"text-xs sm:text-sm text-muted-foreground",children:L?"已连接":"未连接"})]})]}),e.jsx(Ye,{className:"p-3 sm:p-4",children:e.jsxs("div",{className:"flex flex-col gap-3 sm:gap-4",children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:gap-4",children:[e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(zs,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索日志...",value:c,onChange:T=>d(T.target.value),className:"pl-9 h-9 text-sm"})]}),e.jsxs(qe,{value:h,onValueChange:x,children:[e.jsxs(Be,{className:"w-full sm:w-[140px] lg:w-[180px] h-9 text-sm",children:[e.jsx(Eu,{className:"h-4 w-4 mr-2"}),e.jsx(Ge,{placeholder:"级别"})]}),e.jsxs(He,{children:[e.jsx(ie,{value:"all",children:"全部级别"}),e.jsx(ie,{value:"DEBUG",children:"DEBUG"}),e.jsx(ie,{value:"INFO",children:"INFO"}),e.jsx(ie,{value:"WARNING",children:"WARNING"}),e.jsx(ie,{value:"ERROR",children:"ERROR"}),e.jsx(ie,{value:"CRITICAL",children:"CRITICAL"})]})]}),e.jsxs(qe,{value:f,onValueChange:j,children:[e.jsxs(Be,{className:"w-full sm:w-[160px] lg:w-[200px] h-9 text-sm",children:[e.jsx(Eu,{className:"h-4 w-4 mr-2"}),e.jsx(Ge,{placeholder:"模块"})]}),e.jsxs(He,{children:[e.jsx(ie,{value:"all",children:"全部模块"}),V.map(T=>e.jsx(ie,{value:T,children:T},T))]})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:gap-4",children:[e.jsxs(Ua,{children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",className:Q("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!p&&"text-muted-foreground"),children:[e.jsx(Vf,{className:"mr-2 h-4 w-4"}),e.jsx("span",{className:"text-xs sm:text-sm",children:p?ju(p,"PPP",{locale:qc}):"开始日期"})]})}),e.jsx(_a,{className:"w-auto p-0",align:"start",children:e.jsx(up,{mode:"single",selected:p,onSelect:N,initialFocus:!0,locale:qc})})]}),e.jsxs(Ua,{children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",className:Q("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!v&&"text-muted-foreground"),children:[e.jsx(Vf,{className:"mr-2 h-4 w-4"}),e.jsx("span",{className:"text-xs sm:text-sm",children:v?ju(v,"PPP",{locale:qc}):"结束日期"})]})}),e.jsx(_a,{className:"w-auto p-0",align:"start",children:e.jsx(up,{mode:"single",selected:v,onSelect:C,initialFocus:!0,locale:qc})})]}),(p||v)&&e.jsxs(b,{variant:"outline",size:"sm",onClick:we,className:"w-full sm:w-auto h-9",children:[e.jsx(on,{className:"h-4 w-4 sm:mr-2"}),e.jsx("span",{className:"hidden sm:inline text-sm",children:"清除时间筛选"}),e.jsx("span",{className:"sm:hidden text-sm",children:"清除"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center",children:[e.jsxs("div",{className:"flex gap-2 flex-wrap",children:[e.jsxs(b,{variant:S?"default":"outline",size:"sm",onClick:Ce,className:"flex-1 sm:flex-none h-9",children:[S?e.jsx(wy,{className:"h-4 w-4"}):e.jsx(_y,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:S?"自动滚动":"已暂停"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:R,className:"flex-1 sm:flex-none h-9",children:[e.jsx(ws,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"刷新"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:ne,className:"flex-1 sm:flex-none h-9",children:[e.jsx(at,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"清空"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:fe,className:"flex-1 sm:flex-none h-9",children:[e.jsx(rl,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"导出"})]})]}),e.jsx("div",{className:"flex-1 hidden sm:block"}),e.jsxs("div",{className:"text-xs sm:text-sm text-muted-foreground flex items-center justify-center sm:justify-end",children:[e.jsxs("span",{className:"font-mono",children:[pe.length," / ",n.length]}),e.jsx("span",{className:"ml-1",children:"条日志"})]})]}),e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-6 pt-2 border-t border-border/50",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(Sy,{className:"h-4 w-4"}),e.jsx("span",{children:"字号"})]}),e.jsx("div",{className:"flex gap-1",children:Object.keys(Gc).map(T=>e.jsx(b,{variant:B===T?"default":"outline",size:"sm",onClick:()=>O(T),className:"h-7 px-3 text-xs",children:Gc[T].label},T))})]}),e.jsxs("div",{className:"flex items-center gap-3 flex-1 max-w-xs",children:[e.jsx("span",{className:"text-sm text-muted-foreground whitespace-nowrap",children:"行距"}),e.jsx(Ma,{value:[K],onValueChange:([T])=>H(T),min:0,max:12,step:2,className:"flex-1"}),e.jsxs("span",{className:"text-xs text-muted-foreground w-8",children:[K,"px"]})]})]})]})})]}),e.jsx("div",{className:"flex-1 min-h-0 px-3 sm:px-4 lg:px-6 pb-3 sm:pb-4 lg:pb-6",children:e.jsx(Ye,{className:"bg-black dark:bg-gray-950 border-gray-800 dark:border-gray-900 h-full",children:e.jsx(st,{viewportRef:z,className:"h-full",children:e.jsx("div",{className:Q("p-2 sm:p-3 font-mono relative",Gc[B].class),style:{height:`${be.getTotalSize()}px`},children:pe.length===0?e.jsx("div",{className:"text-gray-500 dark:text-gray-600 text-center py-8 text-sm",children:"暂无日志数据"}):be.getVirtualItems().map(T=>{const te=pe[T.index];return e.jsxs("div",{"data-index":T.index,ref:be.measureElement,className:Q("absolute top-0 left-0 w-full px-2 sm:px-3 rounded hover:bg-white/5 transition-colors group",E(te.level)),style:{transform:`translateY(${T.start}px)`,paddingTop:`${K/2}px`,paddingBottom:`${K/2}px`},children:[e.jsxs("div",{className:"flex flex-col gap-0.5 sm:hidden",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-gray-500 dark:text-gray-600",children:te.timestamp}),e.jsxs("span",{className:Q("font-semibold",Y(te.level)),children:["[",te.level,"]"]})]}),e.jsx("div",{className:"text-cyan-400 dark:text-cyan-500 truncate",children:te.module}),e.jsx("div",{className:"text-gray-300 dark:text-gray-400 whitespace-pre-wrap break-words",children:te.message})]}),e.jsxs("div",{className:"hidden sm:flex gap-2 items-start",children:[e.jsx("span",{className:"text-gray-500 dark:text-gray-600 flex-shrink-0 w-[130px] lg:w-[160px]",children:te.timestamp}),e.jsxs("span",{className:Q("flex-shrink-0 w-[65px] lg:w-[75px] font-semibold",Y(te.level)),children:["[",te.level,"]"]}),e.jsx("span",{className:"text-cyan-400 dark:text-cyan-500 flex-shrink-0 w-[100px] lg:w-[130px] truncate",children:te.module}),e.jsx("span",{className:"text-gray-300 dark:text-gray-400 flex-1 whitespace-pre-wrap break-words",children:te.message})]})]},T.key)})})})})})]})}const V1="Mai-with-u",F1="plugin-repo",$1="main",Q1="plugin_details.json";async function Y1(){try{const n=await Te("/api/webui/plugins/fetch-raw",{method:"POST",body:JSON.stringify({owner:V1,repo:F1,branch:$1,file_path:Q1})});if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);const r=await n.json();if(!r.success||!r.data)throw new Error(r.error||"获取插件列表失败");return JSON.parse(r.data).filter(h=>!h?.id||!h?.manifest?(console.warn("跳过无效插件数据:",h),!1):!h.manifest.name||!h.manifest.version?(console.warn("跳过缺少必需字段的插件:",h.id),!1):!0).map(h=>({id:h.id,manifest:{manifest_version:h.manifest.manifest_version||1,name:h.manifest.name,version:h.manifest.version,description:h.manifest.description||"",author:h.manifest.author||{name:"Unknown"},license:h.manifest.license||"Unknown",host_application:h.manifest.host_application||{min_version:"0.0.0"},homepage_url:h.manifest.homepage_url,repository_url:h.manifest.repository_url,keywords:h.manifest.keywords||[],categories:h.manifest.categories||[],default_locale:h.manifest.default_locale||"zh-CN",locales_path:h.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!1,published_at:new Date().toISOString(),updated_at:new Date().toISOString()}))}catch(n){throw console.error("Failed to fetch plugin list:",n),n}}async function X1(){try{const n=await Te("/api/webui/plugins/git-status");if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);return await n.json()}catch(n){return console.error("Failed to check Git status:",n),{installed:!1,error:"无法检测 Git 安装状态"}}}async function K1(){try{const n=await Te("/api/webui/plugins/version");if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);return await n.json()}catch(n){return console.error("Failed to get Maimai version:",n),{version:"0.0.0",version_major:0,version_minor:0,version_patch:0}}}function Z1(n,r,c){const d=n.split(".").map(j=>parseInt(j)||0),h=d[0]||0,x=d[1]||0,f=d[2]||0;if(c.version_majorparseInt(C)||0),p=j[0]||0,N=j[1]||0,v=j[2]||0;if(c.version_major>p||c.version_major===p&&c.version_minor>N||c.version_major===p&&c.version_minor===N&&c.version_patch>v)return!1}return!0}function J1(n,r){const c=window.location.protocol==="https:"?"wss:":"ws:",d=window.location.host,h=new WebSocket(`${c}//${d}/api/webui/ws/plugin-progress`);return h.onopen=()=>{console.log("Plugin progress WebSocket connected");const x=setInterval(()=>{h.readyState===WebSocket.OPEN?h.send("ping"):clearInterval(x)},3e4)},h.onmessage=x=>{try{if(x.data==="pong")return;const f=JSON.parse(x.data);n(f)}catch(f){console.error("Failed to parse progress data:",f)}},h.onerror=x=>{console.error("Plugin progress WebSocket error:",x),r?.(x)},h.onclose=()=>{console.log("Plugin progress WebSocket disconnected")},h}async function nr(){try{const n=await Te("/api/webui/plugins/installed",{headers:Rt()});if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);const r=await n.json();if(!r.success)throw new Error(r.message||"获取已安装插件列表失败");return r.plugins||[]}catch(n){return console.error("Failed to get installed plugins:",n),[]}}function Vc(n,r){return r.some(c=>c.id===n)}function Fc(n,r){const c=r.find(d=>d.id===n);if(c)return c.manifest?.version||c.version}async function I1(n,r,c="main"){const d=await Te("/api/webui/plugins/install",{method:"POST",body:JSON.stringify({plugin_id:n,repository_url:r,branch:c})});if(!d.ok){const h=await d.json();throw new Error(h.detail||"安装失败")}return await d.json()}async function P1(n){const r=await Te("/api/webui/plugins/uninstall",{method:"POST",body:JSON.stringify({plugin_id:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"卸载失败")}return await r.json()}async function W1(n,r,c="main"){const d=await Te("/api/webui/plugins/update",{method:"POST",body:JSON.stringify({plugin_id:n,repository_url:r,branch:c})});if(!d.ok){const h=await d.json();throw new Error(h.detail||"更新失败")}return await d.json()}async function e2(n){const r=await Te(`/api/webui/plugins/config/${n}/schema`,{headers:Rt()});if(!r.ok){const d=await r.json();throw new Error(d.detail||"获取配置 Schema 失败")}const c=await r.json();if(!c.success)throw new Error(c.message||"获取配置 Schema 失败");return c.schema}async function t2(n){const r=await Te(`/api/webui/plugins/config/${n}`,{headers:Rt()});if(!r.ok){const d=await r.json();throw new Error(d.detail||"获取配置失败")}const c=await r.json();if(!c.success)throw new Error(c.message||"获取配置失败");return c.config}async function s2(n,r){const c=await Te(`/api/webui/plugins/config/${n}`,{method:"PUT",body:JSON.stringify({config:r})});if(!c.ok){const d=await c.json();throw new Error(d.detail||"保存配置失败")}return await c.json()}async function a2(n){const r=await Te(`/api/webui/plugins/config/${n}/reset`,{method:"POST",headers:Rt()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"重置配置失败")}return await r.json()}async function l2(n){const r=await Te(`/api/webui/plugins/config/${n}/toggle`,{method:"POST",headers:Rt()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"切换状态失败")}return await r.json()}const Nr="https://maibot-plugin-stats.maibot-webui.workers.dev";async function Dg(n){try{const r=await fetch(`${Nr}/stats/${n}`);return r.ok?await r.json():(console.error("Failed to fetch plugin stats:",r.statusText),null)}catch(r){return console.error("Error fetching plugin stats:",r),null}}async function n2(n,r){try{const c=r||Zu(),d=await fetch(`${Nr}/stats/like`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,user_id:c})}),h=await d.json();return d.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:d.ok?{success:!0,...h}:{success:!1,error:h.error||"点赞失败"}}catch(c){return console.error("Error liking plugin:",c),{success:!1,error:"网络错误"}}}async function i2(n,r){try{const c=r||Zu(),d=await fetch(`${Nr}/stats/dislike`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,user_id:c})}),h=await d.json();return d.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:d.ok?{success:!0,...h}:{success:!1,error:h.error||"点踩失败"}}catch(c){return console.error("Error disliking plugin:",c),{success:!1,error:"网络错误"}}}async function r2(n,r,c,d){if(r<1||r>5)return{success:!1,error:"评分必须在 1-5 之间"};try{const h=d||Zu(),x=await fetch(`${Nr}/stats/rate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,rating:r,comment:c,user_id:h})}),f=await x.json();return x.status===429?{success:!1,error:"每天最多评分 3 次"}:x.ok?{success:!0,...f}:{success:!1,error:f.error||"评分失败"}}catch(h){return console.error("Error rating plugin:",h),{success:!1,error:"网络错误"}}}async function c2(n){try{const r=await fetch(`${Nr}/stats/download`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n})}),c=await r.json();return r.status===429?(console.warn("Download recording rate limited"),{success:!0}):r.ok?{success:!0,...c}:(console.error("Failed to record download:",c.error),{success:!1,error:c.error})}catch(r){return console.error("Error recording download:",r),{success:!1,error:"网络错误"}}}function o2(){const n=navigator,r=[navigator.userAgent,navigator.language,navigator.languages?.join(",")||"",navigator.platform,navigator.hardwareConcurrency||0,screen.width,screen.height,screen.colorDepth,screen.pixelDepth,new Date().getTimezoneOffset(),Intl.DateTimeFormat().resolvedOptions().timeZone,navigator.maxTouchPoints||0,n.deviceMemory||0].join("|");let c=0;for(let d=0;d{x(!0);const O=await Dg(n);O&&d(O),x(!1)};u.useEffect(()=>{w()},[n]);const L=async()=>{const O=await n2(n);O.success?(S({title:"已点赞",description:"感谢你的支持!"}),w()):S({title:"点赞失败",description:O.error||"未知错误",variant:"destructive"})},F=async()=>{const O=await i2(n);O.success?(S({title:"已反馈",description:"感谢你的反馈!"}),w()):S({title:"操作失败",description:O.error||"未知错误",variant:"destructive"})},B=async()=>{if(f===0){S({title:"请选择评分",description:"至少选择 1 颗星",variant:"destructive"});return}const O=await r2(n,f,p||void 0);O.success?(S({title:"评分成功",description:"感谢你的评价!"}),C(!1),j(0),N(""),w()):S({title:"评分失败",description:O.error||"未知错误",variant:"destructive"})};return h?e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(rl,{className:"h-4 w-4"}),e.jsx("span",{children:"-"})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ol,{className:"h-4 w-4"}),e.jsx("span",{children:"-"})]})]}):c?r?e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",title:`下载量: ${c.downloads.toLocaleString()}`,children:[e.jsx(rl,{className:"h-4 w-4"}),e.jsx("span",{children:c.downloads.toLocaleString()})]}),e.jsxs("div",{className:"flex items-center gap-1",title:`评分: ${c.rating.toFixed(1)} (${c.rating_count} 条评价)`,children:[e.jsx(Ol,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsx("span",{children:c.rating.toFixed(1)})]}),e.jsxs("div",{className:"flex items-center gap-1",title:`点赞数: ${c.likes}`,children:[e.jsx(bu,{className:"h-4 w-4"}),e.jsx("span",{children:c.likes})]})]}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-4",children:[e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(rl,{className:"h-5 w-5 text-muted-foreground mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.downloads.toLocaleString()}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"下载量"})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(Ol,{className:"h-5 w-5 text-yellow-400 mb-1 fill-yellow-400"}),e.jsx("span",{className:"text-2xl font-bold",children:c.rating.toFixed(1)}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:[c.rating_count," 条评价"]})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(bu,{className:"h-5 w-5 text-green-500 mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.likes}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"点赞"})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(Ff,{className:"h-5 w-5 text-red-500 mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.dislikes}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"点踩"})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(b,{variant:"outline",size:"sm",onClick:L,children:[e.jsx(bu,{className:"h-4 w-4 mr-1"}),"点赞"]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:F,children:[e.jsx(Ff,{className:"h-4 w-4 mr-1"}),"点踩"]}),e.jsxs(Jt,{open:v,onOpenChange:C,children:[e.jsx($u,{asChild:!0,children:e.jsxs(b,{variant:"default",size:"sm",children:[e.jsx(Ol,{className:"h-4 w-4 mr-1"}),"评分"]})}),e.jsxs($t,{children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:"为插件评分"}),e.jsx(ds,{children:"分享你的使用体验,帮助其他用户"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"flex flex-col items-center gap-2",children:[e.jsx("div",{className:"flex gap-2",children:[1,2,3,4,5].map(O=>e.jsx("button",{onClick:()=>j(O),className:"focus:outline-none",children:e.jsx(Ol,{className:`h-8 w-8 transition-colors ${O<=f?"fill-yellow-400 text-yellow-400":"text-muted-foreground hover:text-yellow-300"}`})},O))}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[f===0&&"点击星星进行评分",f===1&&"很差",f===2&&"一般",f===3&&"还行",f===4&&"不错",f===5&&"非常好"]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium mb-2 block",children:"评论(可选)"}),e.jsx(Ft,{value:p,onChange:O=>N(O.target.value),placeholder:"分享你的使用体验...",rows:4,maxLength:500}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 text-right",children:[p.length," / 500"]})]})]}),e.jsxs(xs,{children:[e.jsx(b,{variant:"outline",onClick:()=>C(!1),children:"取消"}),e.jsx(b,{onClick:B,disabled:f===0,children:"提交评分"})]})]})]})]}),c.recent_ratings&&c.recent_ratings.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"text-sm font-semibold",children:"最近评价"}),e.jsx("div",{className:"space-y-3",children:c.recent_ratings.map((O,K)=>e.jsxs("div",{className:"p-3 rounded-lg border bg-muted/50",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("div",{className:"flex gap-1",children:[1,2,3,4,5].map(H=>e.jsx(Ol,{className:`h-3 w-3 ${H<=O.rating?"fill-yellow-400 text-yellow-400":"text-muted-foreground"}`},H))}),e.jsx("span",{className:"text-xs text-muted-foreground",children:new Date(O.created_at).toLocaleDateString()})]}),O.comment&&e.jsx("p",{className:"text-sm text-muted-foreground",children:O.comment})]},K))})]})]}):null}const hp={"Group Management":"群组管理","Entertainment & Interaction":"娱乐互动","Utility Tools":"实用工具","Content Generation":"内容生成",Multimedia:"多媒体","External Integration":"外部集成","Data Analysis & Insights":"数据分析与洞察",Other:"其他"};function u2(){const n=fa(),[r,c]=u.useState(null),[d,h]=u.useState(""),[x,f]=u.useState("all"),[j,p]=u.useState("all"),[N,v]=u.useState(!0),[C,S]=u.useState([]),[w,L]=u.useState(!0),[F,B]=u.useState(null),[O,K]=u.useState(null),[H,z]=u.useState(null),[V,Y]=u.useState(null),[,E]=u.useState([]),[R,ne]=u.useState({}),{toast:fe}=Xt(),Ce=async _=>{const me=_.map(async xe=>{try{const ve=await Dg(xe.id);return{id:xe.id,stats:ve}}catch(ve){return console.warn(`Failed to load stats for ${xe.id}:`,ve),{id:xe.id,stats:null}}}),oe=await Promise.all(me),ae={};oe.forEach(({id:xe,stats:ve})=>{ve&&(ae[xe]=ve)}),ne(ae)};u.useEffect(()=>{let _=null,me=!1;return(async()=>{if(_=J1(ae=>{me||(z(ae),ae.stage==="success"?setTimeout(()=>{me||z(null)},2e3):ae.stage==="error"&&(L(!1),B(ae.error||"加载失败")))},ae=>{console.error("WebSocket error:",ae),me||fe({title:"WebSocket 连接失败",description:"无法实时显示加载进度",variant:"destructive"})}),await new Promise(ae=>{if(!_){ae();return}const xe=()=>{_&&_.readyState===WebSocket.OPEN?(console.log("WebSocket connected, starting to load plugins"),ae()):_&&_.readyState===WebSocket.CLOSED?(console.warn("WebSocket closed before loading plugins"),ae()):setTimeout(xe,100)};xe()}),!me){const ae=await X1();K(ae),ae.installed||fe({title:"Git 未安装",description:ae.error||"请先安装 Git 才能使用插件安装功能",variant:"destructive"})}if(!me){const ae=await K1();Y(ae)}if(!me)try{L(!0),B(null);const ae=await Y1();if(!me){const xe=await nr();E(xe);const ve=ae.map(de=>{const G=Vc(de.id,xe),W=Fc(de.id,xe);return{...de,installed:G,installed_version:W}});for(const de of xe)!ve.some(W=>W.id===de.id)&&de.manifest&&ve.push({id:de.id,manifest:{manifest_version:de.manifest.manifest_version||1,name:de.manifest.name,version:de.manifest.version,description:de.manifest.description||"",author:de.manifest.author,license:de.manifest.license||"Unknown",host_application:de.manifest.host_application,homepage_url:de.manifest.homepage_url,repository_url:de.manifest.repository_url,keywords:de.manifest.keywords||[],categories:de.manifest.categories||[],default_locale:de.manifest.default_locale||"zh-CN",locales_path:de.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!0,installed_version:de.manifest.version,published_at:new Date().toISOString(),updated_at:new Date().toISOString()});S(ve),Ce(ve)}}catch(ae){if(!me){const xe=ae instanceof Error?ae.message:"加载插件列表失败";B(xe),fe({title:"加载失败",description:xe,variant:"destructive"})}}finally{me||L(!1)}})(),()=>{me=!0,_&&_.close()}},[fe]);const we=_=>{if(!_.installed&&V&&!pe(_))return e.jsxs(Je,{variant:"destructive",className:"gap-1",children:[e.jsx(Oa,{className:"h-3 w-3"}),"不兼容"]});if(_.installed){const me=_.installed_version?.trim(),oe=_.manifest.version?.trim();if(me!==oe){const ae=me?.split(".").map(Number)||[0,0,0],xe=oe?.split(".").map(Number)||[0,0,0];for(let ve=0;ve<3;ve++){if((xe[ve]||0)>(ae[ve]||0))return e.jsxs(Je,{variant:"outline",className:"gap-1 text-orange-600 border-orange-600",children:[e.jsx(Oa,{className:"h-3 w-3"}),"可更新"]});if((xe[ve]||0)<(ae[ve]||0))break}}return e.jsxs(Je,{variant:"default",className:"gap-1",children:[e.jsx(ha,{className:"h-3 w-3"}),"已安装"]})}return null},pe=_=>!V||!_.manifest?.host_application?!0:Z1(_.manifest.host_application.min_version,_.manifest.host_application.max_version,V),Ne=_=>{if(!_.installed||!_.installed_version||!_.manifest?.version)return!1;const me=_.installed_version.trim(),oe=_.manifest.version.trim();if(me===oe)return!1;const ae=me.split(".").map(Number),xe=oe.split(".").map(Number);for(let ve=0;ve<3;ve++){if((xe[ve]||0)>(ae[ve]||0))return!0;if((xe[ve]||0)<(ae[ve]||0))return!1}return!1},be=C.filter(_=>{if(!_.manifest)return console.warn("[过滤] 跳过无 manifest 的插件:",_.id),!1;const me=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(ve=>ve.toLowerCase().includes(d.toLowerCase())),oe=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x);let ae=!0;j==="installed"?ae=_.installed===!0:j==="updates"&&(ae=_.installed===!0&&Ne(_));const xe=!N||!V||pe(_);return me&&oe&&ae&&xe}),A=()=>{c(null)},X=async _=>{if(!O?.installed){fe({title:"无法安装",description:"Git 未安装",variant:"destructive"});return}if(V&&!pe(_)){fe({title:"无法安装",description:"插件与当前麦麦版本不兼容",variant:"destructive"});return}try{await I1(_.id,_.manifest.repository_url||"","main"),c2(_.id).catch(oe=>{console.warn("Failed to record download:",oe)}),fe({title:"安装成功",description:`${_.manifest.name} 已成功安装`});const me=await nr();E(me),S(oe=>oe.map(ae=>{if(ae.id===_.id){const xe=Vc(ae.id,me),ve=Fc(ae.id,me);return{...ae,installed:xe,installed_version:ve}}return ae}))}catch(me){fe({title:"安装失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}},T=async _=>{try{await P1(_.id),fe({title:"卸载成功",description:`${_.manifest.name} 已成功卸载`});const me=await nr();E(me),S(oe=>oe.map(ae=>{if(ae.id===_.id){const xe=Vc(ae.id,me),ve=Fc(ae.id,me);return{...ae,installed:xe,installed_version:ve}}return ae}))}catch(me){fe({title:"卸载失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}},te=async _=>{if(!O?.installed){fe({title:"无法更新",description:"Git 未安装",variant:"destructive"});return}try{const me=await W1(_.id,_.manifest.repository_url||"","main");fe({title:"更新成功",description:`${_.manifest.name} 已从 ${me.old_version} 更新到 ${me.new_version}`});const oe=await nr();E(oe),S(ae=>ae.map(xe=>{if(xe.id===_.id){const ve=Vc(xe.id,oe),de=Fc(xe.id,oe);return{...xe,installed:ve,installed_version:de}}return xe}))}catch(me){fe({title:"更新失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}};return e.jsx(st,{className:"h-full",children:e.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件市场"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"浏览和管理麦麦的插件"})]}),e.jsxs(b,{onClick:()=>n({to:"/plugin-mirrors"}),children:[e.jsx(Cy,{className:"h-4 w-4 mr-2"}),"配置镜像源"]})]}),O&&!O.installed&&e.jsxs(Ye,{className:"border-orange-600 bg-orange-50 dark:bg-orange-950/20",children:[e.jsx(Nt,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ya,{className:"h-5 w-5 text-orange-600"}),e.jsxs("div",{children:[e.jsx(wt,{className:"text-lg text-orange-900 dark:text-orange-100",children:"Git 未安装"}),e.jsx(ns,{className:"text-orange-800 dark:text-orange-200",children:O.error||"请先安装 Git 才能使用插件安装功能"})]})]})}),e.jsx(kt,{children:e.jsxs("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:["您可以从 ",e.jsx("a",{href:"https://git-scm.com/downloads",target:"_blank",rel:"noopener noreferrer",className:"underline font-medium",children:"git-scm.com"})," 下载并安装 Git。 安装完成后,请重启麦麦应用。"]})})]}),e.jsx(Ye,{className:"p-4",children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(zs,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索插件...",value:d,onChange:_=>h(_.target.value),className:"pl-9"})]}),e.jsxs(qe,{value:x,onValueChange:f,children:[e.jsx(Be,{className:"w-full sm:w-[200px]",children:e.jsx(Ge,{placeholder:"选择分类"})}),e.jsxs(He,{children:[e.jsx(ie,{value:"all",children:"全部分类"}),e.jsx(ie,{value:"Group Management",children:"群组管理"}),e.jsx(ie,{value:"Entertainment & Interaction",children:"娱乐互动"}),e.jsx(ie,{value:"Utility Tools",children:"实用工具"}),e.jsx(ie,{value:"Content Generation",children:"内容生成"}),e.jsx(ie,{value:"Multimedia",children:"多媒体"}),e.jsx(ie,{value:"External Integration",children:"外部集成"}),e.jsx(ie,{value:"Data Analysis & Insights",children:"数据分析与洞察"}),e.jsx(ie,{value:"Other",children:"其他"})]})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Cs,{id:"compatible-only",checked:N,onCheckedChange:_=>v(_===!0)}),e.jsx("label",{htmlFor:"compatible-only",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer",children:"只显示兼容当前版本的插件"})]})]})}),e.jsx(La,{value:j,onValueChange:p,className:"w-full",children:e.jsxs(wa,{className:"grid w-full grid-cols-3",children:[e.jsxs(it,{value:"all",children:["全部插件 (",C.filter(_=>{if(!_.manifest)return!1;const me=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(xe=>xe.toLowerCase().includes(d.toLowerCase())),oe=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x),ae=!N||!V||pe(_);return me&&oe&&ae}).length,")"]}),e.jsxs(it,{value:"installed",children:["已安装 (",C.filter(_=>{if(!_.manifest)return!1;const me=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(xe=>xe.toLowerCase().includes(d.toLowerCase())),oe=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x),ae=!N||!V||pe(_);return _.installed&&me&&oe&&ae}).length,")"]}),e.jsxs(it,{value:"updates",children:["可更新 (",C.filter(_=>{if(!_.manifest)return!1;const me=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(xe=>xe.toLowerCase().includes(d.toLowerCase())),oe=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x),ae=!N||!V||pe(_);return _.installed&&Ne(_)&&me&&oe&&ae}).length,")"]})]})}),H&&H.stage==="loading"&&e.jsx(Ye,{className:"p-4",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ss,{className:"h-4 w-4 animate-spin"}),e.jsxs("span",{className:"text-sm font-medium",children:[H.operation==="fetch"&&"加载插件列表",H.operation==="install"&&`安装插件${H.plugin_id?`: ${H.plugin_id}`:""}`,H.operation==="uninstall"&&`卸载插件${H.plugin_id?`: ${H.plugin_id}`:""}`,H.operation==="update"&&`更新插件${H.plugin_id?`: ${H.plugin_id}`:""}`]})]}),e.jsxs("span",{className:"text-sm font-medium",children:[H.progress,"%"]})]}),e.jsx(yr,{value:H.progress,className:"h-2"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:H.message}),H.operation==="fetch"&&H.total_plugins>0&&e.jsxs("div",{className:"text-xs text-muted-foreground text-center",children:["已加载 ",H.loaded_plugins," / ",H.total_plugins," 个插件"]})]})}),H&&H.stage==="error"&&H.error&&e.jsx(Ye,{className:"border-destructive bg-destructive/10",children:e.jsx(Nt,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ya,{className:"h-5 w-5 text-destructive"}),e.jsxs("div",{children:[e.jsx(wt,{className:"text-lg text-destructive",children:"加载失败"}),e.jsx(ns,{className:"text-destructive/80",children:H.error})]})]})})}),w?e.jsxs("div",{className:"flex items-center justify-center py-12",children:[e.jsx(Ss,{className:"h-8 w-8 animate-spin text-muted-foreground"}),e.jsx("span",{className:"ml-3 text-muted-foreground",children:"加载插件列表中..."})]}):F?e.jsx(Ye,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(ya,{className:"h-12 w-12 text-destructive mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:F}),e.jsx(b,{onClick:()=>window.location.reload(),children:"重新加载"})]})}):be.length===0?e.jsx(Ye,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(zs,{className:"h-12 w-12 text-muted-foreground mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"未找到插件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:d||x!=="all"?"尝试调整搜索条件或筛选器":"暂无可用插件"})]})}):e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:be.map(_=>e.jsxs(Ye,{className:"flex flex-col hover:shadow-lg transition-shadow h-full",children:[e.jsxs(Nt,{children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsx(wt,{className:"text-xl",children:_.manifest?.name||_.id}),e.jsxs("div",{className:"flex flex-col gap-1",children:[_.manifest?.categories&&_.manifest.categories[0]&&e.jsx(Je,{variant:"secondary",className:"text-xs whitespace-nowrap",children:hp[_.manifest.categories[0]]||_.manifest.categories[0]}),we(_)]})]}),e.jsx(ns,{className:"line-clamp-2",children:_.manifest?.description||"无描述"})]}),e.jsx(kt,{className:"flex-1",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(rl,{className:"h-4 w-4"}),e.jsx("span",{children:(R[_.id]?.downloads??_.downloads??0).toLocaleString()})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ol,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsx("span",{children:(R[_.id]?.rating??_.rating??0).toFixed(1)})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[_.manifest?.keywords&&_.manifest.keywords.slice(0,3).map(me=>e.jsx(Je,{variant:"outline",className:"text-xs",children:me},me)),_.manifest?.keywords&&_.manifest.keywords.length>3&&e.jsxs(Je,{variant:"outline",className:"text-xs",children:["+",_.manifest.keywords.length-3]})]}),e.jsxs("div",{className:"text-xs text-muted-foreground pt-2 border-t space-y-1",children:[e.jsxs("div",{children:["v",_.manifest?.version||"unknown"," · ",_.manifest?.author?.name||"Unknown"]}),_.manifest?.host_application&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{children:"支持:"}),e.jsxs("span",{className:"font-medium",children:[_.manifest.host_application.min_version,_.manifest.host_application.max_version?` - ${_.manifest.host_application.max_version}`:" - 最新版本"]})]})]})]})}),e.jsx(mg,{className:"pt-4",children:e.jsxs("div",{className:"flex items-center justify-end gap-2 w-full",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>c(_),children:"查看详情"}),_.installed?Ne(_)?e.jsxs(b,{size:"sm",disabled:!O?.installed,title:O?.installed?void 0:"Git 未安装",onClick:()=>te(_),children:[e.jsx(ws,{className:"h-4 w-4 mr-1"}),"更新"]}):e.jsxs(b,{variant:"destructive",size:"sm",disabled:!O?.installed,title:O?.installed?void 0:"Git 未安装",onClick:()=>T(_),children:[e.jsx(at,{className:"h-4 w-4 mr-1"}),"卸载"]}):e.jsxs(b,{size:"sm",disabled:!O?.installed||H?.operation==="install"||V!==null&&!pe(_),title:O?.installed?V!==null&&!pe(_)?`不兼容当前版本 (需要 ${_.manifest?.host_application?.min_version||"未知"}${_.manifest?.host_application?.max_version?` - ${_.manifest.host_application.max_version}`:"+"},当前 ${V?.version})`:void 0:"Git 未安装",onClick:()=>X(_),children:[e.jsx(rl,{className:"h-4 w-4 mr-1"}),H?.operation==="install"&&H?.plugin_id===_.id?"安装中...":"安装"]})]})})]},_.id))}),e.jsx(Jt,{open:r!==null,onOpenChange:A,children:r&&r.manifest&&e.jsx($t,{className:"max-w-2xl max-h-[80vh] p-0 flex flex-col",children:e.jsx(st,{className:"flex-1 overflow-auto",children:e.jsxs("div",{className:"p-6",children:[e.jsx(Qt,{children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"space-y-2 flex-1",children:[e.jsx(Yt,{className:"text-2xl",children:r.manifest.name}),e.jsxs(ds,{children:["作者: ",r.manifest.author?.name||"Unknown",r.manifest.author?.url&&e.jsx("a",{href:r.manifest.author.url,target:"_blank",rel:"noopener noreferrer",className:"ml-2 text-primary hover:underline",children:e.jsx(Qc,{className:"h-3 w-3 inline"})})]})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[r.manifest.categories&&r.manifest.categories[0]&&e.jsx(Je,{variant:"secondary",children:hp[r.manifest.categories[0]]||r.manifest.categories[0]}),we(r)]})]})}),e.jsxs("div",{className:"space-y-6",children:[e.jsx(d2,{pluginId:r.id}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"版本"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["v",r.manifest?.version||"unknown"]}),r.installed&&r.installed_version&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:["已安装: v",r.installed_version]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"下载量"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:(R[r.id]?.downloads??r.downloads??0).toLocaleString()})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"评分"}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ol,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[(R[r.id]?.rating??r.rating??0).toFixed(1)," (",R[r.id]?.rating_count??r.review_count??0,")"]})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"许可证"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:r.manifest.license||"Unknown"})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("p",{className:"text-sm font-medium",children:"支持版本"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:[r.manifest.host_application?.min_version||"未知",r.manifest.host_application?.max_version?` - ${r.manifest.host_application.max_version}`:" - 最新版本"]})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"关键词"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:r.manifest.keywords&&r.manifest.keywords.map(_=>e.jsx(Je,{variant:"outline",children:_},_))})]}),r.detailed_description&&e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"详细说明"}),e.jsx("p",{className:"text-sm text-muted-foreground whitespace-pre-line",children:r.detailed_description})]}),!r.detailed_description&&e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"说明"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:r.manifest.description||"无描述"})]}),e.jsxs("div",{className:"space-y-2",children:[r.manifest.homepage_url&&e.jsxs("div",{className:"text-sm",children:[e.jsx("span",{className:"font-medium",children:"主页: "}),e.jsx("a",{href:r.manifest.homepage_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:r.manifest.homepage_url})]}),r.manifest.repository_url&&e.jsxs("div",{className:"text-sm",children:[e.jsx("span",{className:"font-medium",children:"仓库: "}),e.jsx("a",{href:r.manifest.repository_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:r.manifest.repository_url})]})]})]}),e.jsxs(xs,{children:[r.manifest.homepage_url&&e.jsxs(b,{onClick:()=>window.open(r.manifest.homepage_url,"_blank"),children:[e.jsx(Qc,{className:"h-4 w-4 mr-2"}),"访问主页"]}),r.manifest.repository_url&&e.jsxs(b,{variant:"outline",onClick:()=>window.open(r.manifest.repository_url,"_blank"),children:[e.jsx(Qc,{className:"h-4 w-4 mr-2"}),"查看仓库"]})]})]})})})})]})})}const Ru=Eb,Lu=zb,Uu=Ab;function m2({field:n,value:r,onChange:c}){const[d,h]=u.useState(!1);switch(n.ui_type){case"switch":return e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(y,{children:n.label}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]}),e.jsx(Qe,{checked:!!r,onCheckedChange:c,disabled:n.disabled})]});case"number":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{children:n.label}),e.jsx(ce,{type:"number",value:r??n.default,onChange:x=>c(parseFloat(x.target.value)||0),min:n.min,max:n.max,step:n.step??1,placeholder:n.placeholder,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"slider":return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{children:n.label}),e.jsx("span",{className:"text-sm text-muted-foreground",children:r??n.default})]}),e.jsx(Ma,{value:[r??n.default],onValueChange:x=>c(x[0]),min:n.min??0,max:n.max??100,step:n.step??1,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"select":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{children:n.label}),e.jsxs(qe,{value:String(r??n.default),onValueChange:c,disabled:n.disabled,children:[e.jsx(Be,{children:e.jsx(Ge,{placeholder:n.placeholder??"请选择"})}),e.jsx(He,{children:n.choices?.map(x=>e.jsx(ie,{value:String(x),children:String(x)},String(x)))})]}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"textarea":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{children:n.label}),e.jsx(Ft,{value:r??n.default,onChange:x=>c(x.target.value),placeholder:n.placeholder,rows:n.rows??3,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"password":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{children:n.label}),e.jsxs("div",{className:"relative",children:[e.jsx(ce,{type:d?"text":"password",value:r??"",onChange:x=>c(x.target.value),placeholder:n.placeholder,disabled:n.disabled,className:"pr-10"}),e.jsx(b,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-3",onClick:()=>h(!d),children:d?e.jsx(or,{className:"h-4 w-4"}):e.jsx(Ws,{className:"h-4 w-4"})})]}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"text":default:return e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{children:n.label}),e.jsx(ce,{type:"text",value:r??n.default??"",onChange:x=>c(x.target.value),placeholder:n.placeholder,maxLength:n.max_length,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]})}}function xp({section:n,config:r,onChange:c}){const[d,h]=u.useState(!n.collapsed),x=Object.entries(n.fields).filter(([,f])=>!f.hidden).sort(([,f],[,j])=>f.order-j.order);return e.jsx(Ru,{open:d,onOpenChange:h,children:e.jsxs(Ye,{children:[e.jsx(Lu,{asChild:!0,children:e.jsxs(Nt,{className:"cursor-pointer hover:bg-muted/50 transition-colors",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[d?e.jsx(Rl,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Ll,{className:"h-4 w-4 text-muted-foreground"}),e.jsx(wt,{className:"text-lg",children:n.title})]}),e.jsxs(Je,{variant:"secondary",className:"text-xs",children:[x.length," 项"]})]}),n.description&&e.jsx(ns,{className:"ml-6",children:n.description})]})}),e.jsx(Uu,{children:e.jsx(kt,{className:"space-y-4 pt-0",children:x.map(([f,j])=>e.jsx(m2,{field:j,value:r[n.name]?.[f],onChange:p=>c(n.name,f,p),sectionName:n.name},f))})})]})})}function h2({plugin:n,onBack:r}){const{toast:c}=Xt(),[d,h]=u.useState(null),[x,f]=u.useState({}),[j,p]=u.useState({}),[N,v]=u.useState(!0),[C,S]=u.useState(!1),[w,L]=u.useState(!1),[F,B]=u.useState(!1),O=u.useCallback(async()=>{v(!0);try{const[R,ne]=await Promise.all([e2(n.id),t2(n.id)]);h(R),f(ne),p(JSON.parse(JSON.stringify(ne)))}catch(R){c({title:"加载配置失败",description:R instanceof Error?R.message:"未知错误",variant:"destructive"})}finally{v(!1)}},[n.id,c]);u.useEffect(()=>{O()},[O]),u.useEffect(()=>{L(JSON.stringify(x)!==JSON.stringify(j))},[x,j]);const K=(R,ne,fe)=>{f(Ce=>({...Ce,[R]:{...Ce[R]||{},[ne]:fe}}))},H=async()=>{S(!0);try{await s2(n.id,x),p(JSON.parse(JSON.stringify(x))),c({title:"配置已保存",description:"更改将在插件重新加载后生效"})}catch(R){c({title:"保存失败",description:R instanceof Error?R.message:"未知错误",variant:"destructive"})}finally{S(!1)}},z=async()=>{try{await a2(n.id),c({title:"配置已重置",description:"下次加载插件时将使用默认配置"}),B(!1),O()}catch(R){c({title:"重置失败",description:R instanceof Error?R.message:"未知错误",variant:"destructive"})}},V=async()=>{try{const R=await l2(n.id);c({title:R.message,description:R.note}),O()}catch(R){c({title:"切换状态失败",description:R instanceof Error?R.message:"未知错误",variant:"destructive"})}};if(N)return e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx(Ss,{className:"h-8 w-8 animate-spin text-muted-foreground"})});if(!d)return e.jsxs("div",{className:"flex flex-col items-center justify-center h-64 space-y-4",children:[e.jsx(Oa,{className:"h-12 w-12 text-muted-foreground"}),e.jsx("p",{className:"text-muted-foreground",children:"无法加载配置"}),e.jsxs(b,{onClick:r,variant:"outline",children:[e.jsx(ti,{className:"h-4 w-4 mr-2"}),"返回"]})]});const Y=Object.values(d.sections).sort((R,ne)=>R.order-ne.order),E=x.plugin?.enabled!==!1;return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(b,{variant:"ghost",size:"icon",onClick:r,children:e.jsx(ti,{className:"h-5 w-5"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:d.plugin_info.name||n.manifest.name}),e.jsxs("div",{className:"flex items-center gap-2 mt-1",children:[e.jsx(Je,{variant:E?"default":"secondary",children:E?"已启用":"已禁用"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["v",d.plugin_info.version||n.manifest.version]})]})]})]}),e.jsxs("div",{className:"flex gap-2 ml-10 sm:ml-0",children:[e.jsxs(b,{variant:"outline",size:"sm",onClick:V,children:[e.jsx(gr,{className:"h-4 w-4 mr-2"}),E?"禁用":"启用"]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>B(!0),children:[e.jsx(Kc,{className:"h-4 w-4 mr-2"}),"重置"]}),e.jsxs(b,{size:"sm",onClick:H,disabled:!w||C,children:[C?e.jsx(Ss,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(jr,{className:"h-4 w-4 mr-2"}),"保存"]})]})]}),w&&e.jsx(Ye,{className:"border-orange-200 bg-orange-50 dark:bg-orange-950/20 dark:border-orange-900",children:e.jsx(kt,{className:"py-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ra,{className:"h-4 w-4 text-orange-600"}),e.jsx("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:"有未保存的更改"})]})})}),d.layout.type==="tabs"&&d.layout.tabs.length>0?e.jsxs(La,{defaultValue:d.layout.tabs[0]?.id,children:[e.jsx(wa,{children:d.layout.tabs.map(R=>e.jsxs(it,{value:R.id,children:[R.title,R.badge&&e.jsx(Je,{variant:"secondary",className:"ml-2 text-xs",children:R.badge})]},R.id))}),d.layout.tabs.map(R=>e.jsx(zt,{value:R.id,className:"space-y-4 mt-4",children:R.sections.map(ne=>{const fe=d.sections[ne];return fe?e.jsx(xp,{section:fe,config:x,onChange:K},ne):null})},R.id))]}):e.jsx("div",{className:"space-y-4",children:Y.map(R=>e.jsx(xp,{section:R,config:x,onChange:K},R.name))}),e.jsx(Jt,{open:F,onOpenChange:B,children:e.jsxs($t,{children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:"确认重置配置"}),e.jsx(ds,{children:"这将删除当前配置文件,下次加载插件时将使用默认配置。此操作不可撤销。"})]}),e.jsxs(xs,{children:[e.jsx(b,{variant:"outline",onClick:()=>B(!1),children:"取消"}),e.jsx(b,{variant:"destructive",onClick:z,children:"确认重置"})]})]})})]})}function x2(){const{toast:n}=Xt(),[r,c]=u.useState([]),[d,h]=u.useState(!0),[x,f]=u.useState(""),[j,p]=u.useState(null),N=async()=>{h(!0);try{const w=await nr();c(w)}catch(w){n({title:"加载插件列表失败",description:w instanceof Error?w.message:"未知错误",variant:"destructive"})}finally{h(!1)}};u.useEffect(()=>{N()},[]);const v=r.filter(w=>{const L=x.toLowerCase();return w.id.toLowerCase().includes(L)||w.manifest.name.toLowerCase().includes(L)||w.manifest.description?.toLowerCase().includes(L)}),C=r.length,S=0;return j?e.jsx(st,{className:"h-full",children:e.jsx("div",{className:"p-4 sm:p-6",children:e.jsx(h2,{plugin:j,onBack:()=>p(null)})})}):e.jsx(st,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理和配置已安装的插件"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:N,children:[e.jsx(ws,{className:`h-4 w-4 mr-2 ${d?"animate-spin":""}`}),"刷新"]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-3",children:[e.jsxs(Ye,{children:[e.jsxs(Nt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(wt,{className:"text-sm font-medium",children:"已安装插件"}),e.jsx(rn,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(kt,{children:[e.jsx("div",{className:"text-2xl font-bold",children:r.length}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:d?"正在加载...":"个插件"})]})]}),e.jsxs(Ye,{children:[e.jsxs(Nt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(wt,{className:"text-sm font-medium",children:"已启用"}),e.jsx(ha,{className:"h-4 w-4 text-green-600"})]}),e.jsxs(kt,{children:[e.jsx("div",{className:"text-2xl font-bold",children:C}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"运行中的插件"})]})]}),e.jsxs(Ye,{children:[e.jsxs(Nt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(wt,{className:"text-sm font-medium",children:"已禁用"}),e.jsx(Oa,{className:"h-4 w-4 text-orange-600"})]}),e.jsxs(kt,{children:[e.jsx("div",{className:"text-2xl font-bold",children:S}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"未激活的插件"})]})]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(zs,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索插件...",value:x,onChange:w=>f(w.target.value),className:"pl-9"})]}),e.jsxs(Ye,{children:[e.jsxs(Nt,{children:[e.jsx(wt,{children:"已安装的插件"}),e.jsx(ns,{children:"点击插件查看和编辑配置"})]}),e.jsx(kt,{children:d?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(Ss,{className:"h-8 w-8 animate-spin text-muted-foreground"})}):v.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 space-y-4",children:[e.jsx(rn,{className:"h-16 w-16 text-muted-foreground/50"}),e.jsxs("div",{className:"text-center space-y-2",children:[e.jsx("p",{className:"text-lg font-medium text-muted-foreground",children:x?"没有找到匹配的插件":"暂无已安装的插件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:x?"尝试其他搜索关键词":"前往插件市场安装插件"})]})]}):e.jsx("div",{className:"space-y-2",children:v.map(w=>e.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg border hover:bg-muted/50 cursor-pointer transition-colors",onClick:()=>p(w),children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[e.jsx("div",{className:"h-10 w-10 rounded-lg bg-primary/10 flex items-center justify-center flex-shrink-0",children:e.jsx(rn,{className:"h-5 w-5 text-primary"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-medium truncate",children:w.manifest.name}),e.jsxs(Je,{variant:"secondary",className:"text-xs flex-shrink-0",children:["v",w.manifest.version]})]}),e.jsx("p",{className:"text-sm text-muted-foreground truncate",children:w.manifest.description||"暂无描述"})]})]}),e.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[e.jsx(b,{variant:"ghost",size:"sm",children:e.jsx(ai,{className:"h-4 w-4"})}),e.jsx(Ll,{className:"h-4 w-4 text-muted-foreground"})]})]},w.id))})})]})]})})}function f2(){const n=fa(),{toast:r}=Xt(),[c,d]=u.useState([]),[h,x]=u.useState(!0),[f,j]=u.useState(null),[p,N]=u.useState(null),[v,C]=u.useState(!1),[S,w]=u.useState(!1),[L,F]=u.useState({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),B=u.useCallback(async()=>{try{x(!0),j(null);const E=localStorage.getItem("access-token"),R=await fetch("/api/webui/plugins/mirrors",{headers:{Authorization:`Bearer ${E}`}});if(!R.ok)throw new Error("获取镜像源列表失败");const ne=await R.json();d(ne.mirrors||[])}catch(E){const R=E instanceof Error?E.message:"加载镜像源失败";j(R),r({title:"加载失败",description:R,variant:"destructive"})}finally{x(!1)}},[r]);u.useEffect(()=>{B()},[B]);const O=async()=>{try{const E=localStorage.getItem("access-token"),R=await fetch("/api/webui/plugins/mirrors",{method:"POST",headers:{Authorization:`Bearer ${E}`,"Content-Type":"application/json"},body:JSON.stringify(L)});if(!R.ok){const ne=await R.json();throw new Error(ne.detail||"添加镜像源失败")}r({title:"添加成功",description:"镜像源已添加"}),C(!1),F({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),B()}catch(E){r({title:"添加失败",description:E instanceof Error?E.message:"未知错误",variant:"destructive"})}},K=async()=>{if(p)try{const E=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${p.id}`,{method:"PUT",headers:{Authorization:`Bearer ${E}`,"Content-Type":"application/json"},body:JSON.stringify({name:L.name,raw_prefix:L.raw_prefix,clone_prefix:L.clone_prefix,enabled:L.enabled,priority:L.priority})})).ok)throw new Error("更新镜像源失败");r({title:"更新成功",description:"镜像源已更新"}),w(!1),N(null),B()}catch(E){r({title:"更新失败",description:E instanceof Error?E.message:"未知错误",variant:"destructive"})}},H=async E=>{if(confirm("确定要删除这个镜像源吗?"))try{const R=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${E}`,{method:"DELETE",headers:{Authorization:`Bearer ${R}`}})).ok)throw new Error("删除镜像源失败");r({title:"删除成功",description:"镜像源已删除"}),B()}catch(R){r({title:"删除失败",description:R instanceof Error?R.message:"未知错误",variant:"destructive"})}},z=async E=>{try{const R=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${E.id}`,{method:"PUT",headers:{Authorization:`Bearer ${R}`,"Content-Type":"application/json"},body:JSON.stringify({enabled:!E.enabled})})).ok)throw new Error("更新状态失败");B()}catch(R){r({title:"更新失败",description:R instanceof Error?R.message:"未知错误",variant:"destructive"})}},V=E=>{N(E),F({id:E.id,name:E.name,raw_prefix:E.raw_prefix,clone_prefix:E.clone_prefix,enabled:E.enabled,priority:E.priority}),w(!0)},Y=async(E,R)=>{const ne=R==="up"?E.priority-1:E.priority+1;if(!(ne<1))try{const fe=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${E.id}`,{method:"PUT",headers:{Authorization:`Bearer ${fe}`,"Content-Type":"application/json"},body:JSON.stringify({priority:ne})})).ok)throw new Error("更新优先级失败");B()}catch(fe){r({title:"更新失败",description:fe instanceof Error?fe.message:"未知错误",variant:"destructive"})}};return e.jsx(st,{className:"h-full",children:e.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(b,{variant:"ghost",size:"icon",onClick:()=>n({to:"/plugins"}),children:e.jsx(ti,{className:"h-5 w-5"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"镜像源配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理 Git 克隆和文件下载的镜像源"})]})]}),e.jsxs(b,{onClick:()=>C(!0),children:[e.jsx(hs,{className:"h-4 w-4 mr-2"}),"添加镜像源"]})]}),h?e.jsx(Ye,{className:"p-6",children:e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(Ss,{className:"h-8 w-8 animate-spin text-primary"})})}):f?e.jsx(Ye,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(ya,{className:"h-12 w-12 text-destructive mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:f}),e.jsx(b,{onClick:B,children:"重新加载"})]})}):e.jsxs(Ye,{children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(li,{children:[e.jsx(ni,{children:e.jsxs(_s,{children:[e.jsx(rt,{children:"状态"}),e.jsx(rt,{children:"名称"}),e.jsx(rt,{children:"ID"}),e.jsx(rt,{children:"优先级"}),e.jsx(rt,{className:"text-right",children:"操作"})]})}),e.jsx(ii,{children:c.map(E=>e.jsxs(_s,{children:[e.jsx(Ze,{children:e.jsx(Qe,{checked:E.enabled,onCheckedChange:()=>z(E)})}),e.jsx(Ze,{children:e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:E.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1",children:["Raw: ",E.raw_prefix]})]})}),e.jsx(Ze,{children:e.jsx(Je,{variant:"outline",children:E.id})}),e.jsx(Ze,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-mono",children:E.priority}),e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx(b,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>Y(E,"up"),disabled:E.priority===1,children:e.jsx(ur,{className:"h-3 w-3"})}),e.jsx(b,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>Y(E,"down"),children:e.jsx(Rl,{className:"h-3 w-3"})})]})]})}),e.jsx(Ze,{className:"text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-2",children:[e.jsx(b,{variant:"ghost",size:"icon",onClick:()=>V(E),children:e.jsx(nn,{className:"h-4 w-4"})}),e.jsx(b,{variant:"ghost",size:"icon",onClick:()=>H(E.id),children:e.jsx(at,{className:"h-4 w-4 text-destructive"})})]})})]},E.id))})]})}),e.jsx("div",{className:"md:hidden p-4 space-y-4",children:c.map(E=>e.jsx(Ye,{className:"p-4",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-semibold",children:E.name}),E.enabled&&e.jsx(Je,{variant:"default",className:"text-xs",children:"启用"})]}),e.jsx(Je,{variant:"outline",className:"mt-1 text-xs",children:E.id})]}),e.jsx(Qe,{checked:E.enabled,onCheckedChange:()=>z(E)})]}),e.jsxs("div",{className:"text-sm space-y-1",children:[e.jsxs("div",{className:"text-muted-foreground",children:[e.jsx("span",{className:"font-medium",children:"Raw: "}),e.jsx("span",{className:"break-all",children:E.raw_prefix})]}),e.jsxs("div",{className:"text-muted-foreground",children:[e.jsx("span",{className:"font-medium",children:"优先级: "}),e.jsx("span",{className:"font-mono",children:E.priority})]})]}),e.jsxs("div",{className:"flex items-center gap-2 pt-2 border-t",children:[e.jsxs(b,{variant:"outline",size:"sm",className:"flex-1",onClick:()=>V(E),children:[e.jsx(nn,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>Y(E,"up"),disabled:E.priority===1,children:e.jsx(ur,{className:"h-4 w-4"})}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>Y(E,"down"),children:e.jsx(Rl,{className:"h-4 w-4"})}),e.jsx(b,{variant:"destructive",size:"sm",onClick:()=>H(E.id),children:e.jsx(at,{className:"h-4 w-4"})})]})]})},E.id))})]}),e.jsx(Jt,{open:v,onOpenChange:C,children:e.jsxs($t,{className:"max-w-lg",children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:"添加镜像源"}),e.jsx(ds,{children:"添加新的 Git 镜像源配置"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"add-id",children:"镜像源 ID *"}),e.jsx(ce,{id:"add-id",placeholder:"例如: my-mirror",value:L.id,onChange:E=>F({...L,id:E.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"add-name",children:"名称 *"}),e.jsx(ce,{id:"add-name",placeholder:"例如: 我的镜像源",value:L.name,onChange:E=>F({...L,name:E.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"add-raw",children:"Raw 文件前缀 *"}),e.jsx(ce,{id:"add-raw",placeholder:"https://example.com/raw",value:L.raw_prefix,onChange:E=>F({...L,raw_prefix:E.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"add-clone",children:"克隆前缀 *"}),e.jsx(ce,{id:"add-clone",placeholder:"https://example.com/clone",value:L.clone_prefix,onChange:E=>F({...L,clone_prefix:E.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"add-priority",children:"优先级"}),e.jsx(ce,{id:"add-priority",type:"number",min:"1",value:L.priority,onChange:E=>F({...L,priority:parseInt(E.target.value)||1})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"add-enabled",checked:L.enabled,onCheckedChange:E=>F({...L,enabled:E})}),e.jsx(y,{htmlFor:"add-enabled",children:"启用此镜像源"})]})]}),e.jsxs(xs,{children:[e.jsx(b,{variant:"outline",onClick:()=>C(!1),children:"取消"}),e.jsx(b,{onClick:O,children:"添加"})]})]})}),e.jsx(Jt,{open:S,onOpenChange:w,children:e.jsxs($t,{className:"max-w-lg",children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:"编辑镜像源"}),e.jsx(ds,{children:"修改镜像源配置"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{children:"镜像源 ID"}),e.jsx(ce,{value:L.id,disabled:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"edit-name",children:"名称 *"}),e.jsx(ce,{id:"edit-name",value:L.name,onChange:E=>F({...L,name:E.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"edit-raw",children:"Raw 文件前缀 *"}),e.jsx(ce,{id:"edit-raw",value:L.raw_prefix,onChange:E=>F({...L,raw_prefix:E.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"edit-clone",children:"克隆前缀 *"}),e.jsx(ce,{id:"edit-clone",value:L.clone_prefix,onChange:E=>F({...L,clone_prefix:E.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"edit-priority",children:"优先级"}),e.jsx(ce,{id:"edit-priority",type:"number",min:"1",value:L.priority,onChange:E=>F({...L,priority:parseInt(E.target.value)||1})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"edit-enabled",checked:L.enabled,onCheckedChange:E=>F({...L,enabled:E})}),e.jsx(y,{htmlFor:"edit-enabled",children:"启用此镜像源"})]})]}),e.jsxs(xs,{children:[e.jsx(b,{variant:"outline",onClick:()=>w(!1),children:"取消"}),e.jsx(b,{onClick:K,children:"保存"})]})]})})]})})}const ir=u.forwardRef(({className:n,...r},c)=>e.jsx(Dp,{ref:c,className:Q("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",n),...r}));ir.displayName=Dp.displayName;const p2=u.forwardRef(({className:n,...r},c)=>e.jsx(Op,{ref:c,className:Q("aspect-square h-full w-full",n),...r}));p2.displayName=Op.displayName;const rr=u.forwardRef(({className:n,...r},c)=>e.jsx(Rp,{ref:c,className:Q("flex h-full w-full items-center justify-center rounded-full bg-muted",n),...r}));rr.displayName=Rp.displayName;function g2(){return"webui_"+Math.random().toString(36).substr(2,9)+"_"+Date.now().toString(36)}function j2(){const n="maibot_webui_user_id";let r=localStorage.getItem(n);return r||(r=g2(),localStorage.setItem(n,r)),r}function v2(){return localStorage.getItem("maibot_webui_user_name")||"WebUI用户"}function b2(n){localStorage.setItem("maibot_webui_user_name",n)}const Og="maibot_webui_virtual_tabs";function y2(){try{const n=localStorage.getItem(Og);if(n)return JSON.parse(n)}catch(n){console.error("[Chat] 加载虚拟标签页失败:",n)}return[]}function fp(n){try{localStorage.setItem(Og,JSON.stringify(n))}catch(r){console.error("[Chat] 保存虚拟标签页失败:",r)}}function N2(){const n={id:"webui-default",type:"webui",label:"WebUI",messages:[],isConnected:!1,isTyping:!1,sessionInfo:{}},r=()=>{const De=y2().map(ze=>{const Ve=ze.virtualConfig;return!Ve.groupId&&Ve.platform&&Ve.userId&&(Ve.groupId=`webui_virtual_group_${Ve.platform}_${Ve.userId}`),{id:ze.id,type:"virtual",label:ze.label,virtualConfig:Ve,messages:[],isConnected:!1,isTyping:!1,sessionInfo:{}}});return[n,...De]},[c,d]=u.useState(r),[h,x]=u.useState("webui-default"),f=c.find(D=>D.id===h)||c[0],[j,p]=u.useState(""),[N,v]=u.useState(!1),[C,S]=u.useState(!0),[w,L]=u.useState(v2()),[F,B]=u.useState(!1),[O,K]=u.useState(""),[H,z]=u.useState(!1),[V,Y]=u.useState([]),[E,R]=u.useState([]),[ne,fe]=u.useState(!1),[Ce,we]=u.useState(!1),[pe,Ne]=u.useState(""),[be,A]=u.useState({platform:"",personId:"",userId:"",userName:"",groupName:"",groupId:""}),X=u.useRef(j2()),T=u.useRef(new Map),te=u.useRef(null),_=u.useRef(new Map),me=u.useRef(0),oe=u.useRef(new Map),{toast:ae}=Xt(),xe=D=>(me.current+=1,`${D}-${Date.now()}-${me.current}-${Math.random().toString(36).substr(2,9)}`),ve=u.useCallback((D,De)=>{d(ze=>ze.map(Ve=>Ve.id===D?{...Ve,...De}:Ve))},[]),de=u.useCallback((D,De)=>{d(ze=>ze.map(Ve=>Ve.id===D?{...Ve,messages:[...Ve.messages,De]}:Ve))},[]),G=u.useCallback(()=>{te.current?.scrollIntoView({behavior:"smooth"})},[]);u.useEffect(()=>{G()},[f?.messages,G]);const W=u.useCallback(async()=>{fe(!0);try{const D=await Te("/api/chat/platforms");if(console.log("[Chat] 平台列表响应:",D.status,D.headers.get("content-type")),D.ok){const De=D.headers.get("content-type");if(De&&De.includes("application/json")){const ze=await D.json();console.log("[Chat] 平台列表数据:",ze),Y(ze.platforms||[])}else{const ze=await D.text();console.error("[Chat] 获取平台列表失败: 非 JSON 响应:",ze.substring(0,200)),ae({title:"连接失败",description:"无法连接到后端服务,请确保 MaiBot 已启动",variant:"destructive"})}}else console.error("[Chat] 获取平台列表失败: HTTP",D.status),ae({title:"获取平台失败",description:`服务器返回错误: ${D.status}`,variant:"destructive"})}catch(D){console.error("[Chat] 获取平台列表失败:",D),ae({title:"网络错误",description:"无法连接到后端服务",variant:"destructive"})}finally{fe(!1)}},[ae]),U=u.useCallback(async(D,De)=>{we(!0);try{const ze=new URLSearchParams;D&&ze.append("platform",D),De&&ze.append("search",De),ze.append("limit","50");const Ve=await Te(`/api/chat/persons?${ze.toString()}`);if(Ve.ok){const At=Ve.headers.get("content-type");if(At&&At.includes("application/json")){const We=await Ve.json();R(We.persons||[])}else console.error("[Chat] 获取用户列表失败: 后端返回非 JSON 响应")}}catch(ze){console.error("[Chat] 获取用户列表失败:",ze)}finally{we(!1)}},[]);u.useEffect(()=>{be.platform&&U(be.platform,pe)},[be.platform,pe,U]);const ee=u.useCallback(async(D,De)=>{S(!0);try{const ze=new URLSearchParams;ze.append("user_id",X.current),ze.append("limit","50"),De&&ze.append("group_id",De);const Ve=`/api/chat/history?${ze.toString()}`;console.log("[Chat] 正在加载历史消息:",Ve);const At=await Te(Ve);if(At.ok){const We=await At.text();try{const ss=JSON.parse(We);if(ss.messages&&ss.messages.length>0){const gt=ss.messages.map(je=>({id:je.id,type:je.type,content:je.content,timestamp:je.timestamp,sender:{name:je.sender_name||(je.is_bot?"麦麦":"WebUI用户"),user_id:je.user_id,is_bot:je.is_bot}}));ve(D,{messages:gt});const _e=oe.current.get(D)||new Set;gt.forEach(je=>{if(je.type==="bot"){const yt=`bot-${je.content}-${Math.floor(je.timestamp*1e3)}`;_e.add(yt)}}),oe.current.set(D,_e)}}catch(ss){console.error("[Chat] JSON 解析失败:",ss)}}}catch(ze){console.error("[Chat] 加载历史消息失败:",ze)}finally{S(!1)}},[ve]),Se=u.useCallback((D,De,ze)=>{const Ve=T.current.get(D);if(Ve?.readyState===WebSocket.OPEN||Ve?.readyState===WebSocket.CONNECTING){console.log(`[Tab ${D}] WebSocket 已存在,跳过连接`);return}v(!0);const At=window.location.protocol==="https:"?"wss:":"ws:",We=new URLSearchParams;De==="virtual"&&ze?(We.append("user_id",ze.userId),We.append("user_name",ze.userName),We.append("platform",ze.platform),We.append("person_id",ze.personId),We.append("group_name",ze.groupName||"WebUI虚拟群聊"),ze.groupId&&We.append("group_id",ze.groupId)):(We.append("user_id",X.current),We.append("user_name",w));const ss=`${At}//${window.location.host}/api/chat/ws?${We.toString()}`;console.log(`[Tab ${D}] 正在连接 WebSocket:`,ss);try{const gt=new WebSocket(ss);T.current.set(D,gt),gt.onopen=()=>{ve(D,{isConnected:!0}),v(!1),console.log(`[Tab ${D}] WebSocket 已连接`)},gt.onmessage=_e=>{try{const je=JSON.parse(_e.data);switch(je.type){case"session_info":ve(D,{sessionInfo:{session_id:je.session_id,user_id:je.user_id,user_name:je.user_name,bot_name:je.bot_name}});break;case"system":de(D,{id:xe("sys"),type:"system",content:je.content||"",timestamp:je.timestamp||Date.now()/1e3});break;case"user_message":de(D,{id:je.message_id||xe("user"),type:"user",content:je.content||"",timestamp:je.timestamp||Date.now()/1e3,sender:je.sender});break;case"bot_message":{ve(D,{isTyping:!1});const yt=oe.current.get(D)||new Set,Ht=`bot-${je.content}-${Math.floor((je.timestamp||0)*1e3)}`;if(yt.has(Ht))break;if(yt.add(Ht),oe.current.set(D,yt),yt.size>100){const pa=yt.values().next().value;pa&&yt.delete(pa)}de(D,{id:xe("bot"),type:"bot",content:je.content||"",timestamp:je.timestamp||Date.now()/1e3,sender:je.sender});break}case"typing":ve(D,{isTyping:je.is_typing||!1});break;case"error":de(D,{id:xe("error"),type:"error",content:je.content||"发生错误",timestamp:je.timestamp||Date.now()/1e3}),ae({title:"错误",description:je.content,variant:"destructive"});break;case"pong":break;case"history":{const yt=je.messages||[];if(yt.length>0){const Ht=oe.current.get(D)||new Set,pa=yt.map(Ts=>{const Kt=Ts.is_bot||!1,Ms=Ts.id||xe(Kt?"bot":"user"),Ds=`${Kt?"bot":"user"}-${Ts.content}-${Math.floor(Ts.timestamp*1e3)}`;return Ht.add(Ds),{id:Ms,type:Kt?"bot":"user",content:Ts.content,timestamp:Ts.timestamp,sender:{name:Ts.sender_name||(Kt?"麦麦":"用户"),user_id:Ts.sender_id,is_bot:Kt}}});oe.current.set(D,Ht),ve(D,{messages:pa}),console.log(`[Tab ${D}] 已加载 ${pa.length} 条历史消息`)}break}default:console.log("未知消息类型:",je.type)}}catch(je){console.error("解析消息失败:",je)}},gt.onclose=()=>{ve(D,{isConnected:!1}),v(!1),T.current.delete(D),console.log(`[Tab ${D}] WebSocket 已断开`);const _e=_.current.get(D);_e&&clearTimeout(_e);const je=window.setTimeout(()=>{if(!Me.current){const yt=c.find(Ht=>Ht.id===D);yt&&Se(D,yt.type,yt.virtualConfig)}},5e3);_.current.set(D,je)},gt.onerror=_e=>{console.error(`[Tab ${D}] WebSocket 错误:`,_e),v(!1)}}catch(gt){console.error(`[Tab ${D}] 创建 WebSocket 失败:`,gt),v(!1)}},[w,ve,de,ae,c]),Me=u.useRef(!1);u.useEffect(()=>{Me.current=!1;const D=T.current,De=_.current,ze=oe.current;ee("webui-default");const Ve=setTimeout(()=>{Me.current||(Se("webui-default","webui"),c.forEach(We=>{We.type==="virtual"&&We.virtualConfig&&(ze.set(We.id,new Set),setTimeout(()=>{Me.current||Se(We.id,"virtual",We.virtualConfig)},200))}))},100),At=setInterval(()=>{D.forEach(We=>{We.readyState===WebSocket.OPEN&&We.send(JSON.stringify({type:"ping"}))})},3e4);return()=>{Me.current=!0,clearTimeout(Ve),clearInterval(At),De.forEach(We=>{clearTimeout(We)}),De.clear(),D.forEach(We=>{We.close()}),D.clear()}},[]);const tt=u.useCallback(()=>{const D=T.current.get(h);if(!j.trim()||!D||D.readyState!==WebSocket.OPEN)return;const De=f?.type==="virtual"&&f.virtualConfig?.userName||w;D.send(JSON.stringify({type:"message",content:j.trim(),user_name:De})),p("")},[j,w,h,f]),Xe=D=>{D.key==="Enter"&&!D.shiftKey&&(D.preventDefault(),tt())},Ut=()=>{K(w),B(!0)},Bt=()=>{const D=O.trim()||"WebUI用户";L(D),b2(D),B(!1);const De=T.current.get(h);De?.readyState===WebSocket.OPEN&&De.send(JSON.stringify({type:"update_nickname",user_name:D}))},re=()=>{K(""),B(!1)},ke=D=>new Date(D*1e3).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"}),Pe=()=>{const D=T.current.get(h);D&&(D.close(),T.current.delete(h)),Se(h,f?.type||"webui",f?.virtualConfig)},Fe=()=>{A({platform:"",personId:"",userId:"",userName:"",groupName:"",groupId:""}),Ne(""),W(),z(!0)},ts=()=>{if(!be.platform||!be.personId){ae({title:"配置不完整",description:"请选择平台和用户",variant:"destructive"});return}const D=`webui_virtual_group_${be.platform}_${be.userId}`,De=`virtual-${be.platform}-${be.userId}-${Date.now()}`,ze=be.userName||be.userId,Ve={id:De,type:"virtual",label:ze,virtualConfig:{...be,groupId:D},messages:[],isConnected:!1,isTyping:!1,sessionInfo:{}};d(At=>{const We=[...At,Ve],ss=We.filter(gt=>gt.type==="virtual"&>.virtualConfig).map(gt=>({id:gt.id,label:gt.label,virtualConfig:gt.virtualConfig,createdAt:Date.now()}));return fp(ss),We}),x(De),z(!1),oe.current.set(De,new Set),setTimeout(()=>{Se(De,"virtual",be)},100),ae({title:"虚拟身份标签页",description:`已创建 ${ze} 的对话`})},As=(D,De)=>{if(De?.stopPropagation(),D==="webui-default")return;const ze=T.current.get(D);ze&&(ze.close(),T.current.delete(D));const Ve=_.current.get(D);Ve&&(clearTimeout(Ve),_.current.delete(D)),oe.current.delete(D),d(At=>{const We=At.filter(gt=>gt.id!==D),ss=We.filter(gt=>gt.type==="virtual"&>.virtualConfig).map(gt=>({id:gt.id,label:gt.label,virtualConfig:gt.virtualConfig,createdAt:Date.now()}));return fp(ss),We}),h===D&&x("webui-default")},js=D=>{x(D)},Ke=D=>{A(De=>({...De,personId:D.person_id,userId:D.user_id,userName:D.nickname||D.person_name}))};return e.jsxs("div",{className:"h-full flex flex-col",children:[e.jsx(Jt,{open:H,onOpenChange:z,children:e.jsxs($t,{className:"sm:max-w-[500px] max-h-[85vh] overflow-hidden flex flex-col",children:[e.jsxs(Qt,{children:[e.jsxs(Yt,{className:"flex items-center gap-2",children:[e.jsx(yu,{className:"h-5 w-5"}),"新建虚拟身份对话"]}),e.jsx(ds,{children:"选择一个麦麦已认识的用户,以该用户的身份与麦麦对话。麦麦将使用她对该用户的记忆和认知来回应。"})]}),e.jsxs("div",{className:"space-y-4 flex-1 overflow-hidden flex flex-col",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(y,{className:"flex items-center gap-2",children:[e.jsx(ky,{className:"h-4 w-4"}),"选择平台"]}),e.jsxs(qe,{value:be.platform,onValueChange:D=>{A(De=>({...De,platform:D,personId:"",userId:"",userName:""})),R([])},children:[e.jsx(Be,{disabled:ne,children:e.jsx(Ge,{placeholder:ne?"加载中...":"选择平台"})}),e.jsx(He,{children:V.map(D=>e.jsxs(ie,{value:D.platform,children:[D.platform," (",D.count," 人)"]},D.platform))})]})]}),be.platform&&e.jsxs("div",{className:"space-y-2 flex-1 overflow-hidden flex flex-col",children:[e.jsxs(y,{className:"flex items-center gap-2",children:[e.jsx(Au,{className:"h-4 w-4"}),"选择用户"]}),e.jsxs("div",{className:"relative",children:[e.jsx(zs,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索用户名...",value:pe,onChange:D=>Ne(D.target.value),className:"pl-9"})]}),e.jsx(st,{className:"h-[250px] border rounded-md",children:e.jsx("div",{className:"p-2",children:Ce?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(Ss,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):E.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-muted-foreground",children:[e.jsx(Au,{className:"h-8 w-8 mb-2 opacity-50"}),e.jsx("p",{className:"text-sm",children:"没有找到用户"})]}):e.jsx("div",{className:"space-y-1",children:E.map(D=>e.jsxs("button",{onClick:()=>Ke(D),className:Q("w-full flex items-center gap-3 p-2 rounded-md text-left transition-colors",be.personId===D.person_id?"bg-primary text-primary-foreground":"hover:bg-muted"),children:[e.jsx(ir,{className:"h-8 w-8 shrink-0",children:e.jsx(rr,{className:Q("text-xs",be.personId===D.person_id?"bg-primary-foreground/20":"bg-muted"),children:(D.nickname||D.person_name||"?").charAt(0)})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"font-medium truncate",children:D.nickname||D.person_name}),e.jsxs("div",{className:Q("text-xs truncate",be.personId===D.person_id?"text-primary-foreground/70":"text-muted-foreground"),children:["ID: ",D.user_id,D.is_known&&" · 已认识"]})]})]},D.person_id))})})})]}),be.personId&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{children:"虚拟群名(可选)"}),e.jsx(ce,{placeholder:"WebUI虚拟群聊",value:be.groupName,onChange:D=>A(De=>({...De,groupName:D.target.value}))}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦会认为这是一个名为此名称的群聊"})]})]}),e.jsxs(xs,{className:"gap-2 sm:gap-0",children:[e.jsx(b,{variant:"outline",onClick:()=>z(!1),children:"取消"}),e.jsx(b,{onClick:ts,disabled:!be.platform||!be.personId,children:"创建对话"})]})]})}),e.jsx("div",{className:"shrink-0 border-b bg-muted/30",children:e.jsx("div",{className:"max-w-4xl mx-auto px-2 sm:px-4",children:e.jsxs("div",{className:"flex items-center gap-1 overflow-x-auto py-1.5 scrollbar-thin",children:[c.map(D=>e.jsxs("button",{onClick:()=>js(D.id),className:Q("flex items-center gap-1.5 px-3 py-1.5 rounded-md text-sm whitespace-nowrap transition-colors","hover:bg-muted",h===D.id?"bg-background shadow-sm border":"text-muted-foreground"),children:[D.type==="webui"?e.jsx(cn,{className:"h-3.5 w-3.5"}):e.jsx(yu,{className:"h-3.5 w-3.5"}),e.jsx("span",{className:"max-w-[100px] truncate",children:D.label}),e.jsx("span",{className:Q("w-1.5 h-1.5 rounded-full",D.isConnected?"bg-green-500":"bg-muted-foreground/50")}),D.id!=="webui-default"&&e.jsx("button",{onClick:De=>As(D.id,De),className:"ml-0.5 p-0.5 rounded hover:bg-muted-foreground/20",children:e.jsx(on,{className:"h-3 w-3"})})]},D.id)),e.jsx("button",{onClick:Fe,className:"flex items-center gap-1 px-2 py-1.5 rounded-md text-sm text-muted-foreground hover:bg-muted hover:text-foreground transition-colors",title:"新建虚拟身份对话",children:e.jsx(hs,{className:"h-3.5 w-3.5"})})]})})}),e.jsx("div",{className:"shrink-0 border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:e.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 sm:gap-3 min-w-0",children:[e.jsx(ir,{className:"h-8 w-8 sm:h-10 sm:w-10 shrink-0",children:e.jsx(rr,{className:"bg-primary/10 text-primary",children:e.jsx(ar,{className:"h-4 w-4 sm:h-5 sm:w-5"})})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h1",{className:"text-base sm:text-lg font-semibold truncate",children:f?.sessionInfo.bot_name||"麦麦"}),e.jsx("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:f?.isConnected?e.jsxs(e.Fragment,{children:[e.jsx(Ty,{className:"h-3 w-3 text-green-500"}),e.jsx("span",{className:"text-green-600 dark:text-green-400",children:"已连接"})]}):N?e.jsxs(e.Fragment,{children:[e.jsx(Ss,{className:"h-3 w-3 animate-spin"}),e.jsx("span",{children:"连接中..."})]}):e.jsxs(e.Fragment,{children:[e.jsx(Ey,{className:"h-3 w-3 text-red-500"}),e.jsx("span",{className:"text-red-600 dark:text-red-400",children:"未连接"})]})})]})]}),e.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[C&&e.jsx(Ss,{className:"h-4 w-4 animate-spin text-muted-foreground"}),e.jsx(b,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:Pe,disabled:N,title:"重新连接",children:e.jsx(ws,{className:Q("h-4 w-4",N&&"animate-spin")})})]})]}),e.jsx("div",{className:"hidden sm:flex items-center gap-2 mt-2 text-sm text-muted-foreground",children:f?.type==="virtual"&&f.virtualConfig?e.jsxs(e.Fragment,{children:[e.jsx(yu,{className:"h-3 w-3 text-primary"}),e.jsx("span",{children:"虚拟身份:"}),e.jsx("span",{className:"font-medium text-primary",children:f.virtualConfig.userName}),e.jsxs("span",{className:"text-xs",children:["(",f.virtualConfig.platform,")"]}),f.virtualConfig.groupName&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"mx-1",children:"·"}),e.jsxs("span",{className:"text-xs",children:["群:",f.virtualConfig.groupName]})]})]}):e.jsxs(e.Fragment,{children:[e.jsx(Ic,{className:"h-3 w-3"}),e.jsx("span",{children:"当前身份:"}),F?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{value:O,onChange:D=>K(D.target.value),onKeyDown:D=>{D.key==="Enter"&&Bt(),D.key==="Escape"&&re()},className:"h-7 w-32",placeholder:"输入昵称",autoFocus:!0}),e.jsx(b,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:Bt,children:"保存"}),e.jsx(b,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:re,children:"取消"})]}):e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"font-medium text-foreground",children:w}),e.jsx(b,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0",onClick:Ut,title:"修改昵称",children:e.jsx(zy,{className:"h-3 w-3"})})]})]})})]})}),e.jsx("div",{className:"flex-1 overflow-hidden",children:e.jsx(st,{className:"h-full",children:e.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto space-y-3 sm:space-y-4",children:[f?.messages.length===0&&!C&&e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-muted-foreground",children:[e.jsx(ar,{className:"h-12 w-12 mb-4 opacity-50"}),e.jsxs("p",{className:"text-sm",children:["开始与 ",f?.sessionInfo.bot_name||"麦麦"," 对话吧!"]})]}),f?.messages.map(D=>e.jsxs("div",{className:Q("flex gap-2 sm:gap-3",D.type==="user"&&"flex-row-reverse",D.type==="system"&&"justify-center",D.type==="error"&&"justify-center"),children:[D.type==="system"&&e.jsx("div",{className:"text-xs text-muted-foreground bg-muted/50 px-3 py-1 rounded-full max-w-[90%]",children:D.content}),D.type==="error"&&e.jsx("div",{className:"text-xs text-red-600 dark:text-red-400 bg-red-100 dark:bg-red-900/30 px-3 py-1 rounded-full max-w-[90%]",children:D.content}),(D.type==="user"||D.type==="bot")&&e.jsxs(e.Fragment,{children:[e.jsx(ir,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:e.jsx(rr,{className:Q("text-xs",D.type==="bot"?"bg-primary/10 text-primary":"bg-secondary text-secondary-foreground"),children:D.type==="bot"?e.jsx(ar,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}):e.jsx(Ic,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),e.jsxs("div",{className:Q("flex flex-col gap-1 max-w-[75%] sm:max-w-[70%]",D.type==="user"&&"items-end"),children:[e.jsxs("div",{className:"flex items-center gap-2 text-[10px] sm:text-xs text-muted-foreground",children:[e.jsx("span",{className:"hidden sm:inline",children:D.sender?.name||(D.type==="bot"?f?.sessionInfo.bot_name:w)}),e.jsx("span",{children:ke(D.timestamp)})]}),e.jsx("div",{className:Q("rounded-2xl px-3 py-2 text-sm whitespace-pre-wrap break-words",D.type==="bot"?"bg-muted rounded-tl-sm":"bg-primary text-primary-foreground rounded-tr-sm"),children:D.content})]})]})]},D.id)),f?.isTyping&&e.jsxs("div",{className:"flex gap-2 sm:gap-3",children:[e.jsx(ir,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:e.jsx(rr,{className:"bg-primary/10 text-primary",children:e.jsx(ar,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),e.jsx("div",{className:"bg-muted rounded-2xl rounded-tl-sm px-4 py-3",children:e.jsxs("div",{className:"flex gap-1",children:[e.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"0ms"}}),e.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"150ms"}}),e.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"300ms"}})]})})]}),e.jsx("div",{ref:te})]})})}),e.jsx("div",{className:"shrink-0 border-t bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:e.jsx("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{value:j,onChange:D=>p(D.target.value),onKeyDown:Xe,placeholder:f?.isConnected?"输入消息...":"等待连接...",disabled:!f?.isConnected,className:"flex-1 h-10 sm:h-10"}),e.jsx(b,{onClick:tt,disabled:!f?.isConnected||!j.trim(),size:"icon",className:"h-10 w-10 shrink-0",children:e.jsx(Ay,{className:"h-4 w-4"})})]})})})]})}function w2(){const n=fa(),[r,c]=u.useState(!0);return u.useEffect(()=>{let d=!1;return(async()=>{try{const x=await Qu();!d&&!x&&n({to:"/auth"})}catch{d||n({to:"/auth"})}finally{d||c(!1)}})(),()=>{d=!0}},[n]),{checking:r}}async function _2(){return await Qu()}const S2=si("pointer-events-none inline-flex select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono font-medium opacity-100",{variants:{size:{sm:"h-5 text-[10px]",default:"h-6 text-xs",lg:"h-7 text-sm"}},defaultVariants:{size:"default"}}),Rg=u.forwardRef(({className:n,size:r,abbrTitle:c,children:d,...h},x)=>e.jsx("kbd",{className:Q(S2({size:r,className:n})),ref:x,...h,children:c?e.jsx("abbr",{title:c,children:d}):d}));Rg.displayName="Kbd";const C2=[{icon:to,title:"首页",description:"查看仪表板概览",path:"/",category:"概览"},{icon:Da,title:"麦麦主程序配置",description:"配置麦麦的核心设置",path:"/config/bot",category:"配置"},{icon:cg,title:"麦麦模型提供商配置",description:"配置模型提供商",path:"/config/modelProvider",category:"配置"},{icon:og,title:"麦麦模型配置",description:"配置模型参数",path:"/config/model",category:"配置"},{icon:Bu,title:"表情包管理",description:"管理麦麦的表情包",path:"/resource/emoji",category:"资源"},{icon:cn,title:"表达方式管理",description:"管理麦麦的表达方式",path:"/resource/expression",category:"资源"},{icon:dg,title:"人物信息管理",description:"管理人物信息",path:"/resource/person",category:"资源"},{icon:My,title:"统计信息",description:"查看使用统计",path:"/statistics",category:"监控"},{icon:rn,title:"插件市场",description:"浏览和安装插件",path:"/plugins",category:"扩展"},{icon:Hu,title:"日志查看器",description:"查看系统日志",path:"/logs",category:"监控"},{icon:ai,title:"系统设置",description:"配置系统参数",path:"/settings",category:"系统"}];function k2({open:n,onOpenChange:r}){const[c,d]=u.useState(""),[h,x]=u.useState(0),f=fa(),j=C2.filter(v=>v.title.toLowerCase().includes(c.toLowerCase())||v.description.toLowerCase().includes(c.toLowerCase())||v.category.toLowerCase().includes(c.toLowerCase()));u.useEffect(()=>{n&&(d(""),x(0))},[n]);const p=u.useCallback(v=>{f({to:v}),r(!1)},[f,r]),N=u.useCallback(v=>{v.key==="ArrowDown"?(v.preventDefault(),x(C=>(C+1)%j.length)):v.key==="ArrowUp"?(v.preventDefault(),x(C=>(C-1+j.length)%j.length)):v.key==="Enter"&&j[h]&&(v.preventDefault(),p(j[h].path))},[j,h,p]);return e.jsx(Jt,{open:n,onOpenChange:r,children:e.jsxs($t,{className:"max-w-2xl p-0 gap-0",children:[e.jsxs(Qt,{className:"px-4 pt-4 pb-0",children:[e.jsx(Yt,{className:"sr-only",children:"搜索"}),e.jsxs("div",{className:"relative",children:[e.jsx(zs,{className:"absolute left-3 top-1/2 h-5 w-5 -translate-y-1/2 text-muted-foreground"}),e.jsx(ce,{value:c,onChange:v=>{d(v.target.value),x(0)},onKeyDown:N,placeholder:"搜索页面...",className:"h-12 pl-11 text-base border-0 focus-visible:ring-0 shadow-none",autoFocus:!0})]})]}),e.jsx("div",{className:"border-t",children:e.jsx(st,{className:"h-[400px]",children:j.length>0?e.jsx("div",{className:"p-2",children:j.map((v,C)=>{const S=v.icon;return e.jsxs("button",{onClick:()=>p(v.path),onMouseEnter:()=>x(C),className:Q("w-full flex items-center gap-3 px-3 py-2.5 rounded-md text-left transition-colors",C===h?"bg-accent text-accent-foreground":"hover:bg-accent/50"),children:[e.jsx(S,{className:"h-5 w-5 flex-shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-sm",children:v.title}),e.jsx("div",{className:"text-xs text-muted-foreground truncate",children:v.description})]}),e.jsx("div",{className:"text-xs text-muted-foreground px-2 py-1 bg-muted rounded",children:v.category})]},v.path)})}):e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[e.jsx(zs,{className:"h-12 w-12 text-muted-foreground/50 mb-4"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:c?"未找到匹配的页面":"输入关键词开始搜索"})]})})}),e.jsx("div",{className:"border-t px-4 py-3 flex items-center justify-between text-xs text-muted-foreground",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↑"}),e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↓"}),"导航"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Enter"}),"选择"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Esc"}),"关闭"]})]})})]})})}const T2=ey,E2=ty,z2=sy,Lg=u.forwardRef(({className:n,sideOffset:r=4,...c},d)=>e.jsx(Wb,{children:e.jsx(Zp,{ref:d,sideOffset:r,className:Q("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",n),...c})}));Lg.displayName=Zp.displayName;function A2({children:n}){const{checking:r}=w2(),[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),{theme:p,setTheme:N}=Gu(),v=sb();if(u.useEffect(()=>{const F=B=>{(B.metaKey||B.ctrlKey)&&B.key==="k"&&(B.preventDefault(),j(!0))};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[]),r)return e.jsx("div",{className:"flex h-screen items-center justify-center bg-background",children:e.jsx("div",{className:"text-muted-foreground",children:"正在验证登录状态..."})});const C=[{title:"概览",items:[{icon:to,label:"首页",path:"/"}]},{title:"麦麦配置编辑",items:[{icon:Da,label:"麦麦主程序配置",path:"/config/bot"},{icon:cg,label:"AI模型厂商配置",path:"/config/modelProvider",tourId:"sidebar-model-provider"},{icon:og,label:"模型管理与分配",path:"/config/model",tourId:"sidebar-model-management"},{icon:$f,label:"麦麦适配器配置",path:"/config/adapter"}]},{title:"麦麦资源管理",items:[{icon:Bu,label:"表情包管理",path:"/resource/emoji"},{icon:cn,label:"表达方式管理",path:"/resource/expression"},{icon:dg,label:"人物信息管理",path:"/resource/person"},{icon:rg,label:"知识库图谱可视化",path:"/resource/knowledge-graph"}]},{title:"扩展与监控",items:[{icon:rn,label:"插件市场",path:"/plugins"},{icon:$f,label:"插件配置",path:"/plugin-config"},{icon:Hu,label:"日志查看器",path:"/logs"},{icon:cn,label:"本地聊天室",path:"/chat"}]},{title:"系统",items:[{icon:ai,label:"系统设置",path:"/settings"}]}],w=p==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":p,L=async()=>{await t0()};return e.jsx(T2,{delayDuration:300,children:e.jsxs("div",{className:"flex h-screen overflow-hidden",children:[e.jsxs("aside",{className:Q("fixed inset-y-0 left-0 z-50 flex flex-col border-r bg-card transition-all duration-300 lg:relative lg:z-0","w-64 lg:w-auto",c?"lg:w-64":"lg:w-16",h?"translate-x-0":"-translate-x-full lg:translate-x-0"),children:[e.jsx("div",{className:"flex h-16 items-center border-b px-4",children:e.jsxs("div",{className:Q("relative flex items-center justify-center flex-1 transition-all overflow-hidden","lg:flex-1",!c&&"lg:flex-none lg:w-8"),children:[e.jsxs("div",{className:Q("flex items-baseline gap-2",!c&&"lg:hidden"),children:[e.jsx("span",{className:"font-bold text-xl text-primary-gradient whitespace-nowrap",children:"MaiBot WebUI"}),e.jsx("span",{className:"text-xs text-primary/60 whitespace-nowrap",children:HN()})]}),!c&&e.jsx("span",{className:"hidden lg:block font-bold text-primary-gradient text-2xl",children:"M"})]})}),e.jsx(st,{className:Q("flex-1 overflow-x-hidden",!c&&"lg:w-16"),children:e.jsx("nav",{className:Q("p-4",!c&&"lg:p-2 lg:w-16"),children:e.jsx("ul",{className:Q("space-y-6",!c&&"lg:space-y-3 lg:w-full"),children:C.map((F,B)=>e.jsxs("li",{children:[e.jsx("div",{className:Q("px-3 h-[1.25rem]","mb-2",!c&&"lg:mb-1 lg:invisible"),children:e.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground/60 whitespace-nowrap",children:F.title})}),!c&&B>0&&e.jsx("div",{className:"hidden lg:block mb-2 border-t border-border"}),e.jsx("ul",{className:"space-y-1",children:F.items.map(O=>{const K=v({to:O.path}),H=O.icon,z=e.jsxs(e.Fragment,{children:[K&&e.jsx("div",{className:"absolute left-0 top-1/2 h-8 w-1 -translate-y-1/2 rounded-r-full bg-primary transition-opacity duration-300"}),e.jsxs("div",{className:Q("flex items-center transition-all duration-300",c?"gap-3":"gap-3 lg:gap-0"),children:[e.jsx(H,{className:Q("h-5 w-5 flex-shrink-0",K&&"text-primary"),strokeWidth:2,fill:"none"}),e.jsx("span",{className:Q("text-sm font-medium whitespace-nowrap transition-all duration-300",K&&"font-semibold",c?"opacity-100 max-w-[200px]":"opacity-100 max-w-[200px] lg:opacity-0 lg:max-w-0 lg:overflow-hidden"),children:O.label})]})]});return e.jsx("li",{className:"relative",children:e.jsxs(E2,{children:[e.jsx(z2,{asChild:!0,children:e.jsx($c,{to:O.path,"data-tour":O.tourId,className:Q("relative flex items-center rounded-lg py-2 transition-all duration-300","hover:bg-accent hover:text-accent-foreground",K?"bg-accent text-foreground":"text-muted-foreground hover:text-foreground",c?"px-3":"px-3 lg:px-0 lg:justify-center lg:w-12 lg:mx-auto"),onClick:()=>x(!1),children:z})}),!c&&e.jsx(Lg,{side:"right",className:"hidden lg:block",children:e.jsx("p",{children:O.label})})]})},O.path)})})]},F.title))})})})]}),h&&e.jsx("div",{className:"fixed inset-0 z-40 bg-black/50 lg:hidden",onClick:()=>x(!1)}),e.jsxs("div",{className:"flex flex-1 flex-col overflow-hidden",children:[e.jsxs("header",{className:"flex h-16 items-center justify-between border-b bg-card/80 backdrop-blur-md px-4 sticky top-0 z-10",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>x(!h),className:"rounded-lg p-2 hover:bg-accent lg:hidden",children:e.jsx(Dy,{className:"h-5 w-5"})}),e.jsx("button",{onClick:()=>d(!c),className:"hidden rounded-lg p-2 hover:bg-accent lg:block",title:c?"收起侧边栏":"展开侧边栏",children:e.jsx(dn,{className:Q("h-5 w-5 transition-transform",!c&&"rotate-180")})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:()=>j(!0),className:"relative hidden md:flex items-center w-64 h-9 pl-9 pr-16 bg-background/50 border rounded-md hover:bg-accent/50 transition-colors text-left",children:[e.jsx(zs,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"搜索..."}),e.jsxs(Rg,{size:"sm",className:"absolute right-2 top-1/2 -translate-y-1/2",children:[e.jsx("span",{className:"text-xs",children:"⌘"}),"K"]})]}),e.jsx(k2,{open:f,onOpenChange:j}),e.jsxs(b,{variant:"ghost",size:"sm",onClick:()=>window.open("https://docs.mai-mai.org","_blank"),className:"gap-2",title:"查看麦麦文档",children:[e.jsx(Oy,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:"麦麦文档"})]}),e.jsx("button",{onClick:F=>{ON(w==="dark"?"light":"dark",N,F)},className:"rounded-lg p-2 hover:bg-accent",title:w==="dark"?"切换到浅色模式":"切换到深色模式",children:w==="dark"?e.jsx(ag,{className:"h-5 w-5"}):e.jsx(lg,{className:"h-5 w-5"})}),e.jsx("div",{className:"h-6 w-px bg-border"}),e.jsxs(b,{variant:"ghost",size:"sm",onClick:L,className:"gap-2",title:"登出系统",children:[e.jsx(Ry,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:"登出"})]})]})]}),e.jsx("main",{className:"flex-1 overflow-hidden bg-background",children:n})]})]})})}function M2(n){const r=n.split(` +`).slice(1),c=[];for(const d of r){const h=d.trim();if(!h.startsWith("at "))continue;const x=h.match(/at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?$/);x?c.push({functionName:x[1]||"",fileName:x[2],lineNumber:x[3],columnNumber:x[4],raw:h}):c.push({functionName:"",fileName:"",lineNumber:"",columnNumber:"",raw:h})}return c}function D2({error:n,errorInfo:r}){const[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),p=n.stack?M2(n.stack):[],N=async()=>{const v=` +Error: ${n.name} +Message: ${n.message} + +Stack Trace: +${n.stack||"No stack trace available"} + +Component Stack: +${r?.componentStack||"No component stack available"} + +URL: ${window.location.href} +User Agent: ${navigator.userAgent} +Time: ${new Date().toISOString()} + `.trim();try{await navigator.clipboard.writeText(v),j(!0),setTimeout(()=>j(!1),2e3)}catch(C){console.error("Failed to copy:",C)}};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(cl,{variant:"destructive",className:"border-red-500/50 bg-red-500/10",children:[e.jsx(ya,{className:"h-4 w-4"}),e.jsxs(ol,{className:"font-mono text-sm",children:[e.jsxs("span",{className:"font-semibold",children:[n.name,":"]})," ",n.message]})]}),p.length>0&&e.jsxs(Ru,{open:c,onOpenChange:d,children:[e.jsx(Lu,{asChild:!0,children:e.jsxs(b,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[e.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[e.jsx(Ly,{className:"h-4 w-4"}),"Stack Trace (",p.length," frames)"]}),c?e.jsx(ur,{className:"h-4 w-4"}):e.jsx(Rl,{className:"h-4 w-4"})]})}),e.jsx(Uu,{children:e.jsx(st,{className:"h-[280px] rounded-md border bg-muted/30",children:e.jsx("div",{className:"p-3 space-y-1",children:p.map((v,C)=>e.jsx("div",{className:"font-mono text-xs p-2 rounded hover:bg-muted/50 transition-colors",children:e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsxs("span",{className:"text-muted-foreground w-6 text-right flex-shrink-0",children:[C+1,"."]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("span",{className:"text-primary font-medium",children:v.functionName}),v.fileName&&e.jsxs("div",{className:"text-muted-foreground mt-0.5 break-all",children:[v.fileName,v.lineNumber&&e.jsxs("span",{className:"text-yellow-600 dark:text-yellow-400",children:[":",v.lineNumber,":",v.columnNumber]})]})]})]})},C))})})})]}),r?.componentStack&&e.jsxs(Ru,{open:h,onOpenChange:x,children:[e.jsx(Lu,{asChild:!0,children:e.jsxs(b,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[e.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[e.jsx(ya,{className:"h-4 w-4"}),"Component Stack"]}),h?e.jsx(ur,{className:"h-4 w-4"}):e.jsx(Rl,{className:"h-4 w-4"})]})}),e.jsx(Uu,{children:e.jsx(st,{className:"h-[200px] rounded-md border bg-muted/30",children:e.jsx("pre",{className:"p-3 font-mono text-xs whitespace-pre-wrap text-muted-foreground",children:r.componentStack})})})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:N,className:"w-full",children:f?e.jsxs(e.Fragment,{children:[e.jsx(Na,{className:"mr-2 h-4 w-4 text-green-500"}),"已复制到剪贴板"]}):e.jsxs(e.Fragment,{children:[e.jsx(Jc,{className:"mr-2 h-4 w-4"}),"复制错误信息"]})})]})}function Ug({error:n,errorInfo:r}){const c=()=>{window.location.href="/"},d=()=>{window.location.reload()};return e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background p-4",children:e.jsxs(Ye,{className:"w-full max-w-2xl shadow-lg",children:[e.jsxs(Nt,{className:"text-center pb-2",children:[e.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30 mb-4",children:e.jsx(ya,{className:"h-8 w-8 text-red-600 dark:text-red-400"})}),e.jsx(wt,{className:"text-2xl font-bold",children:"页面出现了问题"}),e.jsx(ns,{className:"text-base mt-2",children:"应用程序遇到了意外错误。您可以尝试刷新页面或返回首页。"})]}),e.jsxs(kt,{className:"space-y-4",children:[e.jsx(D2,{error:n,errorInfo:r}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 pt-2",children:[e.jsxs(b,{onClick:d,className:"flex-1",children:[e.jsx(ws,{className:"mr-2 h-4 w-4"}),"刷新页面"]}),e.jsxs(b,{onClick:c,variant:"outline",className:"flex-1",children:[e.jsx(to,{className:"mr-2 h-4 w-4"}),"返回首页"]})]}),e.jsx("p",{className:"text-xs text-center text-muted-foreground pt-2",children:"如果问题持续存在,请将错误信息复制并反馈给开发者"})]})]})})}class O2 extends u.Component{constructor(r){super(r),this.state={hasError:!1,error:null,errorInfo:null}}static getDerivedStateFromError(r){return{hasError:!0,error:r}}componentDidCatch(r,c){console.error("ErrorBoundary caught an error:",r,c),this.setState({errorInfo:c})}handleReset=()=>{this.setState({hasError:!1,error:null,errorInfo:null})};render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback:e.jsx(Ug,{error:this.state.error,errorInfo:this.state.errorInfo}):this.props.children}}function Bg({error:n}){return e.jsx(Ug,{error:n,errorInfo:null})}const wr=ab({component:()=>e.jsxs(e.Fragment,{children:[e.jsx(pp,{}),!1]}),beforeLoad:()=>{if(window.location.pathname==="/"&&!_2())throw nb({to:"/auth"})}}),R2=fs({getParentRoute:()=>wr,path:"/auth",component:s0}),L2=fs({getParentRoute:()=>wr,path:"/setup",component:v0}),ks=fs({getParentRoute:()=>wr,id:"protected",component:()=>e.jsx(A2,{children:e.jsx(pp,{})}),errorComponent:({error:n})=>e.jsx(Bg,{error:n})}),U2=fs({getParentRoute:()=>ks,path:"/",component:MN}),B2=fs({getParentRoute:()=>ks,path:"/config/bot",component:M0}),H2=fs({getParentRoute:()=>ks,path:"/config/modelProvider",component:sw}),q2=fs({getParentRoute:()=>ks,path:"/config/model",component:iw}),G2=fs({getParentRoute:()=>ks,path:"/config/adapter",component:cw}),V2=fs({getParentRoute:()=>ks,path:"/resource/emoji",component:Mw}),F2=fs({getParentRoute:()=>ks,path:"/resource/expression",component:$w}),$2=fs({getParentRoute:()=>ks,path:"/resource/person",component:t1}),Q2=fs({getParentRoute:()=>ks,path:"/resource/knowledge-graph",component:d1}),Y2=fs({getParentRoute:()=>ks,path:"/logs",component:G1}),X2=fs({getParentRoute:()=>ks,path:"/chat",component:N2}),K2=fs({getParentRoute:()=>ks,path:"/plugins",component:u2}),Z2=fs({getParentRoute:()=>ks,path:"/plugin-config",component:x2}),J2=fs({getParentRoute:()=>ks,path:"/plugin-mirrors",component:f2}),I2=fs({getParentRoute:()=>ks,path:"/settings",component:ZN}),P2=fs({getParentRoute:()=>wr,path:"*",component:wg}),W2=wr.addChildren([R2,L2,ks.addChildren([U2,B2,H2,q2,G2,V2,F2,$2,Q2,K2,Z2,J2,Y2,X2,I2]),P2]),e_=lb({routeTree:W2,defaultNotFoundComponent:wg,defaultErrorComponent:({error:n})=>e.jsx(Bg,{error:n})});function t_({children:n,defaultTheme:r="system",storageKey:c="ui-theme",...d}){const[h,x]=u.useState(()=>localStorage.getItem(c)||r);u.useEffect(()=>{const j=window.document.documentElement;if(j.classList.remove("light","dark"),h==="system"){const p=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";j.classList.add(p);return}j.classList.add(h)},[h]),u.useEffect(()=>{const j=localStorage.getItem("accent-color");if(j){const p=document.documentElement,v={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[j];v&&(p.style.setProperty("--primary",v.hsl),v.gradient?(p.style.setProperty("--primary-gradient",v.gradient),p.classList.add("has-gradient")):(p.style.removeProperty("--primary-gradient"),p.classList.remove("has-gradient")))}},[]);const f={theme:h,setTheme:j=>{localStorage.setItem(c,j),x(j)}};return e.jsx(gg.Provider,{...d,value:f,children:n})}function s_({children:n,defaultEnabled:r=!0,defaultWavesEnabled:c=!0,storageKey:d="enable-animations",wavesStorageKey:h="enable-waves-background"}){const[x,f]=u.useState(()=>{const v=localStorage.getItem(d);return v!==null?v==="true":r}),[j,p]=u.useState(()=>{const v=localStorage.getItem(h);return v!==null?v==="true":c});u.useEffect(()=>{const v=document.documentElement;x?v.classList.remove("no-animations"):v.classList.add("no-animations"),localStorage.setItem(d,String(x))},[x,d]),u.useEffect(()=>{localStorage.setItem(h,String(j))},[j,h]);const N={enableAnimations:x,setEnableAnimations:f,enableWavesBackground:j,setEnableWavesBackground:p};return e.jsx(jg.Provider,{value:N,children:n})}const a_=ay,Hg=u.forwardRef(({className:n,...r},c)=>e.jsx(Jp,{ref:c,className:Q("fixed bottom-0 right-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:max-w-[420px] gap-2",n),...r}));Hg.displayName=Jp.displayName;const l_=si("group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-slide-in-from-right data-[state=open]:animate-fade-in data-[state=closed]:animate-slide-out-to-right data-[state=closed]:animate-fade-out data-[swipe=end]:animate-slide-out-to-right",{variants:{variant:{default:"border bg-primary/5 text-foreground backdrop-blur-sm",destructive:"destructive group border-destructive bg-destructive/10 text-destructive-foreground backdrop-blur-sm"}},defaultVariants:{variant:"default"}}),qg=u.forwardRef(({className:n,variant:r,...c},d)=>e.jsx(Ip,{ref:d,className:Q(l_({variant:r}),n),...c}));qg.displayName=Ip.displayName;const n_=u.forwardRef(({className:n,...r},c)=>e.jsx(Pp,{ref:c,className:Q("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",n),...r}));n_.displayName=Pp.displayName;const Gg=u.forwardRef(({className:n,...r},c)=>e.jsx(Wp,{ref:c,className:Q("absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",n),"toast-close":"",...r,children:e.jsx(on,{className:"h-4 w-4"})}));Gg.displayName=Wp.displayName;const Vg=u.forwardRef(({className:n,...r},c)=>e.jsx(eg,{ref:c,className:Q("text-sm font-semibold [&+div]:text-xs",n),...r}));Vg.displayName=eg.displayName;const Fg=u.forwardRef(({className:n,...r},c)=>e.jsx(tg,{ref:c,className:Q("text-sm opacity-90",n),...r}));Fg.displayName=tg.displayName;function i_(){const{toasts:n}=Xt();return e.jsxs(a_,{children:[n.map(function({id:r,title:c,description:d,action:h,...x}){return e.jsxs(qg,{...x,children:[e.jsxs("div",{className:"grid gap-1",children:[c&&e.jsx(Vg,{children:c}),d&&e.jsx(Fg,{children:d})]}),h,e.jsx(Gg,{})]},r)}),e.jsx(Hg,{})]})}yN.createRoot(document.getElementById("root")).render(e.jsx(u.StrictMode,{children:e.jsx(O2,{children:e.jsx(t_,{defaultTheme:"system",children:e.jsx(s_,{children:e.jsxs(I0,{children:[e.jsx(ib,{router:e_}),e.jsx(ew,{}),e.jsx(i_,{})]})})})})})); diff --git a/webui/dist/assets/index-DFcwoEiz.js b/webui/dist/assets/index-DFcwoEiz.js deleted file mode 100644 index 49524b8e..00000000 --- a/webui/dist/assets/index-DFcwoEiz.js +++ /dev/null @@ -1,52 +0,0 @@ -import{r as u,j as e,L as Vc,e as ua,b as Jv,f as Iv,g as Pv,h as Wv,k as as,l as eb,m as tb,O as hp,n as sb}from"./router-CWhjJi2n.js";import{a as ab,b as lb,g as nb}from"./react-vendor-Dtc2IqVY.js";import{I as ib,c as rb,J as ei,K as Oc,L as gu,M as cb,N as Ii,O as Pi,P as ob,n as ju}from"./utils-CCeOswSm.js";import{L as xp,T as fp,C as pp,R as db,a as gp,V as ub,b as mb,S as jp,c as hb,d as vp,I as xb,e as bp,f as fb,g as yp,h as pb,i as gb,j as jb,O as Np,P as vb,k as wp,l as _p,D as Sp,A as Cp,m as kp,n as bb,o as yb,p as Tp,q as Nb,r as Ep,s as wb,t as _b,u as Sb,v as Cb,w as kb,x as zp,y as Ap,F as Mp}from"./radix-extra-BM7iD6Dt.js";import{aj as Tb,ak as Eb,al as zb,am as Ab,an as Rc,ao as Lc,ap as Wi,aq as Mb,ar as vu,as as Uc,at as Db,au as Ob,av as Rb}from"./charts-Dhri-zxi.js";import{S as Lb,G as Dp,O as Op,o as Ub,C as Rp,p as Bb,T as Lp,D as Up,R as Hb,q as qb,H as Bp,I as Gb,J as Hp,K as qp,L as Vb,M as Gp,V as Fb,N as Vp,Q as Fp,U as $b,X as Qb,Y as $p,Z as Yb,_ as Xb,$ as Qp,a0 as Kb,a1 as Zb,a2 as Yp,a3 as Jb,a4 as Ib,a5 as Pb,a6 as Xp,a7 as Kp,a8 as Zp,a9 as Jp,aa as Ip,ab as Pp,ac as Wb}from"./radix-core-C3XKqQJw.js";import{R as ps,P as fr,C as oa,a as Ea,Z as sn,b as Kc,F as Ta,c as ey,S as ti,A as ty,D as sy,d as Zc,e as Jn,M as Pn,T as ay,X as si,f as ly,g as ny,I as za,h as pa,i as ga,j as Jc,E as rr,k as Ys,l as Wp,H as iy,m as Pe,n as sl,U as cr,o as eg,p as tg,L as Hf,K as sg,q as ry,r as cy,s as Fc,t as vs,u as oy,B as ar,v as Ic,w as Lu,x as dy,y as uy,z as Os,G as to,J as Wn,N as Dl,O as or,Q as pr,V as my,W as hy,Y as cs,_ as Uu,$ as an,a0 as gr,a1 as nn,a2 as Ol,a3 as jr,a4 as Bu,a5 as xy,a6 as fy,a7 as py,a8 as ln,a9 as gy,aa as ag,ab as Tu,ac as dr,ad as jy,ae as Eu,af as vy,ag as lg,ah as qf,ai as by,aj as yy,ak as Ny,al as Ml,am as bu,an as Gf,ao as wy,ap as _y,aq as Sy,ar as Cy,as as ky,at as ng,au as ig,av as rg,aw as Ty,ax as Vf,ay as Ey,az as zy,aA as Ay,aB as My}from"./icons-y1PBa0Co.js";import{S as Dy,p as Oy,j as Ry,a as Ly,E as Ff,R as Uy,o as By}from"./codemirror-BHeANvwm.js";import{_ as Rs,c as Hy,g as cg,D as qy}from"./misc-DyBU7ISD.js";import{u as Gy,a as $f,D as Vy,c as Fy,S as $y,h as Qy,b as Yy,s as Xy,K as Ky,P as Zy,d as Jy,C as Iy}from"./dnd-Dyi3CnuX.js";import{D as Py,U as Wy}from"./uppy-BHC3OXBx.js";import{M as eN,r as tN,a as sN,b as aN}from"./markdown-A1ShuLvG.js";import{r as lN,H as Pc,P as Wc,u as nN,a as iN,R as rN,B as cN,b as oN,C as dN,M as uN,c as mN}from"./reactflow-B3n3_Vkw.js";(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const h of document.querySelectorAll('link[rel="modulepreload"]'))d(h);new MutationObserver(h=>{for(const x of h)if(x.type==="childList")for(const f of x.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&d(f)}).observe(document,{childList:!0,subtree:!0});function c(h){const x={};return h.integrity&&(x.integrity=h.integrity),h.referrerPolicy&&(x.referrerPolicy=h.referrerPolicy),h.crossOrigin==="use-credentials"?x.credentials="include":h.crossOrigin==="anonymous"?x.credentials="omit":x.credentials="same-origin",x}function d(h){if(h.ep)return;h.ep=!0;const x=c(h);fetch(h.href,x)}})();var yu={exports:{}},er={},Nu={exports:{}},wu={};var Qf;function hN(){return Qf||(Qf=1,(function(n){function r(y,q){var H=y.length;y.push(q);e:for(;0>>1,_=y[ie];if(0>>1;ieh(Q,H))de<_&&0>h(ge,Q)?(y[ie]=ge,y[de]=H,ie=de):(y[ie]=Q,y[xe]=H,ie=xe);else if(de<_&&0>h(ge,H))y[ie]=ge,y[de]=H,ie=de;else break e}}return q}function h(y,q){var H=y.sortIndex-q.sortIndex;return H!==0?H:y.id-q.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var x=performance;n.unstable_now=function(){return x.now()}}else{var f=Date,j=f.now();n.unstable_now=function(){return f.now()-j}}var p=[],w=[],v=1,k=null,T=3,E=!1,R=!1,F=!1,U=!1,M=typeof setTimeout=="function"?setTimeout:null,Z=typeof clearTimeout=="function"?clearTimeout:null,G=typeof setImmediate<"u"?setImmediate:null;function z(y){for(var q=c(w);q!==null;){if(q.callback===null)d(w);else if(q.startTime<=y)d(w),q.sortIndex=q.expirationTime,r(p,q);else break;q=c(w)}}function B(y){if(F=!1,z(y),!R)if(c(p)!==null)R=!0,X||(X=!0,be());else{var q=c(w);q!==null&&_e(B,q.startTime-y)}}var X=!1,S=-1,O=5,se=-1;function he(){return U?!0:!(n.unstable_now()-sey&&he());){var ie=k.callback;if(typeof ie=="function"){k.callback=null,T=k.priorityLevel;var _=ie(k.expirationTime<=y);if(y=n.unstable_now(),typeof _=="function"){k.callback=_,z(y),q=!0;break t}k===c(p)&&d(p),z(y)}else d(p);k=c(p)}if(k!==null)q=!0;else{var me=c(w);me!==null&&_e(B,me.startTime-y),q=!1}}break e}finally{k=null,T=H,E=!1}q=void 0}}finally{q?be():X=!1}}}var be;if(typeof G=="function")be=function(){G(ye)};else if(typeof MessageChannel<"u"){var pe=new MessageChannel,je=pe.port2;pe.port1.onmessage=ye,be=function(){je.postMessage(null)}}else be=function(){M(ye,0)};function _e(y,q){S=M(function(){y(n.unstable_now())},q)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(y){y.callback=null},n.unstable_forceFrameRate=function(y){0>y||125ie?(y.sortIndex=H,r(w,y),c(p)===null&&y===c(w)&&(F?(Z(S),S=-1):F=!0,_e(B,H-ie))):(y.sortIndex=_,r(p,y),R||E||(R=!0,X||(X=!0,be()))),y},n.unstable_shouldYield=he,n.unstable_wrapCallback=function(y){var q=T;return function(){var H=T;T=q;try{return y.apply(this,arguments)}finally{T=H}}}})(wu)),wu}var Yf;function xN(){return Yf||(Yf=1,Nu.exports=hN()),Nu.exports}var Xf;function fN(){if(Xf)return er;Xf=1;var n=xN(),r=ab(),c=lb();function d(t){var s="https://react.dev/errors/"+t;if(1_||(t.current=ie[_],ie[_]=null,_--)}function Q(t,s){_++,ie[_]=t.current,t.current=s}var de=me(null),ge=me(null),le=me(null),L=me(null);function $(t,s){switch(Q(le,s),Q(ge,t),Q(de,null),s.nodeType){case 9:case 11:t=(t=s.documentElement)&&(t=t.namespaceURI)?cf(t):0;break;default:if(t=s.tagName,s=s.namespaceURI)s=cf(s),t=of(s,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}xe(de),Q(de,t)}function D(){xe(de),xe(ge),xe(le)}function ee(t){t.memoizedState!==null&&Q(L,t);var s=de.current,a=of(s,t.type);s!==a&&(Q(ge,t),Q(de,a))}function Ne(t){ge.current===t&&(xe(de),xe(ge)),L.current===t&&(xe(L),Xi._currentValue=H)}var ze,We;function Xe(t){if(ze===void 0)try{throw Error()}catch(a){var s=a.stack.trim().match(/\n( *(at )?)/);ze=s&&s[1]||"",We=-1)":-1i||C[l]!==I[i]){var ae=` -`+C[l].replace(" at new "," at ");return t.displayName&&ae.includes("")&&(ae=ae.replace("",t.displayName)),ae}while(1<=l&&0<=i);break}}}finally{Mt=!1,Error.prepareStackTrace=a}return(a=t?t.displayName||t.name:"")?Xe(a):""}function re(t,s){switch(t.tag){case 26:case 27:case 5:return Xe(t.type);case 16:return Xe("Lazy");case 13:return t.child!==s&&s!==null?Xe("Suspense Fallback"):Xe("Suspense");case 19:return Xe("SuspenseList");case 0:case 15:return qt(t.type,!1);case 11:return qt(t.type.render,!1);case 1:return qt(t.type,!0);case 31:return Xe("Activity");default:return""}}function we(t){try{var s="",a=null;do s+=re(t,a),a=t,t=t.return;while(t);return s}catch(l){return` -Error generating stack: `+l.message+` -`+l.stack}}var Je=Object.prototype.hasOwnProperty,Fe=n.unstable_scheduleCallback,Wt=n.unstable_cancelCallback,Xs=n.unstable_shouldYield,Ns=n.unstable_requestPaint,Ke=n.unstable_now,Ue=n.unstable_getCurrentPriorityLevel,js=n.unstable_ImmediatePriority,ls=n.unstable_UserBlockingPriority,_s=n.unstable_NormalPriority,Ss=n.unstable_LowPriority,nl=n.unstable_IdlePriority,il=n.log,rl=n.unstable_setDisableYieldValue,Se=null,Oe=null;function ns(t){if(typeof il=="function"&&rl(t),Oe&&typeof Oe.setStrictMode=="function")try{Oe.setStrictMode(Se,t)}catch{}}var ds=Math.clz32?Math.clz32:us,ri=Math.log,rn=Math.LN2;function us(t){return t>>>=0,t===0?32:31-(ri(t)/rn|0)|0}var Ks=256,Zs=262144,Oa=4194304;function Ls(t){var s=t&42;if(s!==0)return s;switch(t&-t){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:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&261888;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function Ra(t,s,a){var l=t.pendingLanes;if(l===0)return 0;var i=0,o=t.suspendedLanes,m=t.pingedLanes;t=t.warmLanes;var g=l&134217727;return g!==0?(l=g&~o,l!==0?i=Ls(l):(m&=g,m!==0?i=Ls(m):a||(a=g&~t,a!==0&&(i=Ls(a))))):(g=l&~o,g!==0?i=Ls(g):m!==0?i=Ls(m):a||(a=l&~t,a!==0&&(i=Ls(a)))),i===0?0:s!==0&&s!==i&&(s&o)===0&&(o=i&-i,a=s&-s,o>=a||o===32&&(a&4194048)!==0)?s:i}function ba(t,s){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&s)===0}function W(t,s){switch(t){case 1:case 2:case 4:case 8:case 64:return s+250;case 16:case 32: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 s+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 ve(){var t=Oa;return Oa<<=1,(Oa&62914560)===0&&(Oa=4194304),t}function Ae(t){for(var s=[],a=0;31>a;a++)s.push(t);return s}function es(t,s){t.pendingLanes|=s,s!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function Us(t,s,a,l,i,o){var m=t.pendingLanes;t.pendingLanes=a,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=a,t.entangledLanes&=a,t.errorRecoveryDisabledLanes&=a,t.shellSuspendCounter=0;var g=t.entanglements,C=t.expirationTimes,I=t.hiddenUpdates;for(a=m&~a;0"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var $g=/[\n"\\]/g;function Ws(t){return t.replace($g,function(s){return"\\"+s.charCodeAt(0).toString(16)+" "})}function uo(t,s,a,l,i,o,m,g){t.name="",m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"?t.type=m:t.removeAttribute("type"),s!=null?m==="number"?(s===0&&t.value===""||t.value!=s)&&(t.value=""+Ps(s)):t.value!==""+Ps(s)&&(t.value=""+Ps(s)):m!=="submit"&&m!=="reset"||t.removeAttribute("value"),s!=null?mo(t,m,Ps(s)):a!=null?mo(t,m,Ps(a)):l!=null&&t.removeAttribute("value"),i==null&&o!=null&&(t.defaultChecked=!!o),i!=null&&(t.checked=i&&typeof i!="function"&&typeof i!="symbol"),g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"?t.name=""+Ps(g):t.removeAttribute("name")}function tm(t,s,a,l,i,o,m,g){if(o!=null&&typeof o!="function"&&typeof o!="symbol"&&typeof o!="boolean"&&(t.type=o),s!=null||a!=null){if(!(o!=="submit"&&o!=="reset"||s!=null)){oo(t);return}a=a!=null?""+Ps(a):"",s=s!=null?""+Ps(s):a,g||s===t.value||(t.value=s),t.defaultValue=s}l=l??i,l=typeof l!="function"&&typeof l!="symbol"&&!!l,t.checked=g?t.checked:!!l,t.defaultChecked=!!l,m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"&&(t.name=m),oo(t)}function mo(t,s,a){s==="number"&&_r(t.ownerDocument)===t||t.defaultValue===""+a||(t.defaultValue=""+a)}function xn(t,s,a,l){if(t=t.options,s){s={};for(var i=0;i"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),go=!1;if(Ba)try{var ui={};Object.defineProperty(ui,"passive",{get:function(){go=!0}}),window.addEventListener("test",ui,ui),window.removeEventListener("test",ui,ui)}catch{go=!1}var ol=null,jo=null,Cr=null;function cm(){if(Cr)return Cr;var t,s=jo,a=s.length,l,i="value"in ol?ol.value:ol.textContent,o=i.length;for(t=0;t=xi),xm=" ",fm=!1;function pm(t,s){switch(t){case"keyup":return jj.indexOf(s.keyCode)!==-1;case"keydown":return s.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function gm(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var jn=!1;function bj(t,s){switch(t){case"compositionend":return gm(s);case"keypress":return s.which!==32?null:(fm=!0,xm);case"textInput":return t=s.data,t===xm&&fm?null:t;default:return null}}function yj(t,s){if(jn)return t==="compositionend"||!wo&&pm(t,s)?(t=cm(),Cr=jo=ol=null,jn=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(s.ctrlKey||s.altKey||s.metaKey)||s.ctrlKey&&s.altKey){if(s.char&&1=s)return{node:a,offset:s-t};t=l}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=Sm(a)}}function km(t,s){return t&&s?t===s?!0:t&&t.nodeType===3?!1:s&&s.nodeType===3?km(t,s.parentNode):"contains"in t?t.contains(s):t.compareDocumentPosition?!!(t.compareDocumentPosition(s)&16):!1:!1}function Tm(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var s=_r(t.document);s instanceof t.HTMLIFrameElement;){try{var a=typeof s.contentWindow.location.href=="string"}catch{a=!1}if(a)t=s.contentWindow;else break;s=_r(t.document)}return s}function Co(t){var s=t&&t.nodeName&&t.nodeName.toLowerCase();return s&&(s==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||s==="textarea"||t.contentEditable==="true")}var Ej=Ba&&"documentMode"in document&&11>=document.documentMode,vn=null,ko=null,ji=null,To=!1;function Em(t,s,a){var l=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;To||vn==null||vn!==_r(l)||(l=vn,"selectionStart"in l&&Co(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),ji&&gi(ji,l)||(ji=l,l=vc(ko,"onSelect"),0>=m,i-=m,Na=1<<32-ds(s)+i|a<Ze?(nt=Te,Te=null):nt=Te.sibling;var vt=P(V,Te,J[Ze],oe);if(vt===null){Te===null&&(Te=nt);break}t&&Te&&vt.alternate===null&&s(V,Te),A=o(vt,A,Ze),jt===null?Ee=vt:jt.sibling=vt,jt=vt,Te=nt}if(Ze===J.length)return a(V,Te),xt&&qa(V,Ze),Ee;if(Te===null){for(;ZeZe?(nt=Te,Te=null):nt=Te.sibling;var Al=P(V,Te,vt.value,oe);if(Al===null){Te===null&&(Te=nt);break}t&&Te&&Al.alternate===null&&s(V,Te),A=o(Al,A,Ze),jt===null?Ee=Al:jt.sibling=Al,jt=Al,Te=nt}if(vt.done)return a(V,Te),xt&&qa(V,Ze),Ee;if(Te===null){for(;!vt.done;Ze++,vt=J.next())vt=ue(V,vt.value,oe),vt!==null&&(A=o(vt,A,Ze),jt===null?Ee=vt:jt.sibling=vt,jt=vt);return xt&&qa(V,Ze),Ee}for(Te=l(Te);!vt.done;Ze++,vt=J.next())vt=te(Te,V,Ze,vt.value,oe),vt!==null&&(t&&vt.alternate!==null&&Te.delete(vt.key===null?Ze:vt.key),A=o(vt,A,Ze),jt===null?Ee=vt:jt.sibling=vt,jt=vt);return t&&Te.forEach(function(Zv){return s(V,Zv)}),xt&&qa(V,Ze),Ee}function kt(V,A,J,oe){if(typeof J=="object"&&J!==null&&J.type===F&&J.key===null&&(J=J.props.children),typeof J=="object"&&J!==null){switch(J.$$typeof){case E:e:{for(var Ee=J.key;A!==null;){if(A.key===Ee){if(Ee=J.type,Ee===F){if(A.tag===7){a(V,A.sibling),oe=i(A,J.props.children),oe.return=V,V=oe;break e}}else if(A.elementType===Ee||typeof Ee=="object"&&Ee!==null&&Ee.$$typeof===O&&Kl(Ee)===A.type){a(V,A.sibling),oe=i(A,J.props),_i(oe,J),oe.return=V,V=oe;break e}a(V,A);break}else s(V,A);A=A.sibling}J.type===F?(oe=Fl(J.props.children,V.mode,oe,J.key),oe.return=V,V=oe):(oe=Lr(J.type,J.key,J.props,null,V.mode,oe),_i(oe,J),oe.return=V,V=oe)}return m(V);case R:e:{for(Ee=J.key;A!==null;){if(A.key===Ee)if(A.tag===4&&A.stateNode.containerInfo===J.containerInfo&&A.stateNode.implementation===J.implementation){a(V,A.sibling),oe=i(A,J.children||[]),oe.return=V,V=oe;break e}else{a(V,A);break}else s(V,A);A=A.sibling}oe=Ro(J,V.mode,oe),oe.return=V,V=oe}return m(V);case O:return J=Kl(J),kt(V,A,J,oe)}if(_e(J))return Ce(V,A,J,oe);if(be(J)){if(Ee=be(J),typeof Ee!="function")throw Error(d(150));return J=Ee.call(J),De(V,A,J,oe)}if(typeof J.then=="function")return kt(V,A,Fr(J),oe);if(J.$$typeof===G)return kt(V,A,Hr(V,J),oe);$r(V,J)}return typeof J=="string"&&J!==""||typeof J=="number"||typeof J=="bigint"?(J=""+J,A!==null&&A.tag===6?(a(V,A.sibling),oe=i(A,J),oe.return=V,V=oe):(a(V,A),oe=Oo(J,V.mode,oe),oe.return=V,V=oe),m(V)):a(V,A)}return function(V,A,J,oe){try{wi=0;var Ee=kt(V,A,J,oe);return zn=null,Ee}catch(Te){if(Te===En||Te===Gr)throw Te;var jt=Hs(29,Te,null,V.mode);return jt.lanes=oe,jt.return=V,jt}finally{}}}var Jl=Pm(!0),Wm=Pm(!1),xl=!1;function Xo(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Ko(t,s){t=t.updateQueue,s.updateQueue===t&&(s.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function fl(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function pl(t,s,a){var l=t.updateQueue;if(l===null)return null;if(l=l.shared,(bt&2)!==0){var i=l.pending;return i===null?s.next=s:(s.next=i.next,i.next=s),l.pending=s,s=Rr(t),Lm(t,null,a),s}return Or(t,l,s,a),Rr(t)}function Si(t,s,a){if(s=s.updateQueue,s!==null&&(s=s.shared,(a&4194048)!==0)){var l=s.lanes;l&=t.pendingLanes,a|=l,s.lanes=a,cl(t,a)}}function Zo(t,s){var a=t.updateQueue,l=t.alternate;if(l!==null&&(l=l.updateQueue,a===l)){var i=null,o=null;if(a=a.firstBaseUpdate,a!==null){do{var m={lane:a.lane,tag:a.tag,payload:a.payload,callback:null,next:null};o===null?i=o=m:o=o.next=m,a=a.next}while(a!==null);o===null?i=o=s:o=o.next=s}else i=o=s;a={baseState:l.baseState,firstBaseUpdate:i,lastBaseUpdate:o,shared:l.shared,callbacks:l.callbacks},t.updateQueue=a;return}t=a.lastBaseUpdate,t===null?a.firstBaseUpdate=s:t.next=s,a.lastBaseUpdate=s}var Jo=!1;function Ci(){if(Jo){var t=Tn;if(t!==null)throw t}}function ki(t,s,a,l){Jo=!1;var i=t.updateQueue;xl=!1;var o=i.firstBaseUpdate,m=i.lastBaseUpdate,g=i.shared.pending;if(g!==null){i.shared.pending=null;var C=g,I=C.next;C.next=null,m===null?o=I:m.next=I,m=C;var ae=t.alternate;ae!==null&&(ae=ae.updateQueue,g=ae.lastBaseUpdate,g!==m&&(g===null?ae.firstBaseUpdate=I:g.next=I,ae.lastBaseUpdate=C))}if(o!==null){var ue=i.baseState;m=0,ae=I=C=null,g=o;do{var P=g.lane&-536870913,te=P!==g.lane;if(te?(lt&P)===P:(l&P)===P){P!==0&&P===kn&&(Jo=!0),ae!==null&&(ae=ae.next={lane:0,tag:g.tag,payload:g.payload,callback:null,next:null});e:{var Ce=t,De=g;P=s;var kt=a;switch(De.tag){case 1:if(Ce=De.payload,typeof Ce=="function"){ue=Ce.call(kt,ue,P);break e}ue=Ce;break e;case 3:Ce.flags=Ce.flags&-65537|128;case 0:if(Ce=De.payload,P=typeof Ce=="function"?Ce.call(kt,ue,P):Ce,P==null)break e;ue=k({},ue,P);break e;case 2:xl=!0}}P=g.callback,P!==null&&(t.flags|=64,te&&(t.flags|=8192),te=i.callbacks,te===null?i.callbacks=[P]:te.push(P))}else te={lane:P,tag:g.tag,payload:g.payload,callback:g.callback,next:null},ae===null?(I=ae=te,C=ue):ae=ae.next=te,m|=P;if(g=g.next,g===null){if(g=i.shared.pending,g===null)break;te=g,g=te.next,te.next=null,i.lastBaseUpdate=te,i.shared.pending=null}}while(!0);ae===null&&(C=ue),i.baseState=C,i.firstBaseUpdate=I,i.lastBaseUpdate=ae,o===null&&(i.shared.lanes=0),yl|=m,t.lanes=m,t.memoizedState=ue}}function eh(t,s){if(typeof t!="function")throw Error(d(191,t));t.call(s)}function th(t,s){var a=t.callbacks;if(a!==null)for(t.callbacks=null,t=0;to?o:8;var m=y.T,g={};y.T=g,fd(t,!1,s,a);try{var C=i(),I=y.S;if(I!==null&&I(g,C),C!==null&&typeof C=="object"&&typeof C.then=="function"){var ae=Bj(C,l);zi(t,s,ae,$s(t))}else zi(t,s,l,$s(t))}catch(ue){zi(t,s,{then:function(){},status:"rejected",reason:ue},$s())}finally{q.p=o,m!==null&&g.types!==null&&(m.types=g.types),y.T=m}}function $j(){}function hd(t,s,a,l){if(t.tag!==5)throw Error(d(476));var i=Dh(t).queue;Mh(t,i,s,H,a===null?$j:function(){return Oh(t),a(l)})}function Dh(t){var s=t.memoizedState;if(s!==null)return s;s={memoizedState:H,baseState:H,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:$a,lastRenderedState:H},next:null};var a={};return s.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:$a,lastRenderedState:a},next:null},t.memoizedState=s,t=t.alternate,t!==null&&(t.memoizedState=s),s}function Oh(t){var s=Dh(t);s.next===null&&(s=t.alternate.memoizedState),zi(t,s.next.queue,{},$s())}function xd(){return hs(Xi)}function Rh(){return Xt().memoizedState}function Lh(){return Xt().memoizedState}function Qj(t){for(var s=t.return;s!==null;){switch(s.tag){case 24:case 3:var a=$s();t=fl(a);var l=pl(s,t,a);l!==null&&(Ms(l,s,a),Si(l,s,a)),s={cache:Fo()},t.payload=s;return}s=s.return}}function Yj(t,s,a){var l=$s();a={lane:l,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},ec(t)?Bh(s,a):(a=Mo(t,s,a,l),a!==null&&(Ms(a,t,l),Hh(a,s,l)))}function Uh(t,s,a){var l=$s();zi(t,s,a,l)}function zi(t,s,a,l){var i={lane:l,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(ec(t))Bh(s,i);else{var o=t.alternate;if(t.lanes===0&&(o===null||o.lanes===0)&&(o=s.lastRenderedReducer,o!==null))try{var m=s.lastRenderedState,g=o(m,a);if(i.hasEagerState=!0,i.eagerState=g,Bs(g,m))return Or(t,s,i,0),Et===null&&Dr(),!1}catch{}finally{}if(a=Mo(t,s,i,l),a!==null)return Ms(a,t,l),Hh(a,s,l),!0}return!1}function fd(t,s,a,l){if(l={lane:2,revertLane:Xd(),gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},ec(t)){if(s)throw Error(d(479))}else s=Mo(t,a,l,2),s!==null&&Ms(s,t,2)}function ec(t){var s=t.alternate;return t===Ye||s!==null&&s===Ye}function Bh(t,s){Mn=Xr=!0;var a=t.pending;a===null?s.next=s:(s.next=a.next,a.next=s),t.pending=s}function Hh(t,s,a){if((a&4194048)!==0){var l=s.lanes;l&=t.pendingLanes,a|=l,s.lanes=a,cl(t,a)}}var Ai={readContext:hs,use:Jr,useCallback:Gt,useContext:Gt,useEffect:Gt,useImperativeHandle:Gt,useLayoutEffect:Gt,useInsertionEffect:Gt,useMemo:Gt,useReducer:Gt,useRef:Gt,useState:Gt,useDebugValue:Gt,useDeferredValue:Gt,useTransition:Gt,useSyncExternalStore:Gt,useId:Gt,useHostTransitionStatus:Gt,useFormState:Gt,useActionState:Gt,useOptimistic:Gt,useMemoCache:Gt,useCacheRefresh:Gt};Ai.useEffectEvent=Gt;var qh={readContext:hs,use:Jr,useCallback:function(t,s){return ws().memoizedState=[t,s===void 0?null:s],t},useContext:hs,useEffect:wh,useImperativeHandle:function(t,s,a){a=a!=null?a.concat([t]):null,Pr(4194308,4,kh.bind(null,s,t),a)},useLayoutEffect:function(t,s){return Pr(4194308,4,t,s)},useInsertionEffect:function(t,s){Pr(4,2,t,s)},useMemo:function(t,s){var a=ws();s=s===void 0?null:s;var l=t();if(Il){ns(!0);try{t()}finally{ns(!1)}}return a.memoizedState=[l,s],l},useReducer:function(t,s,a){var l=ws();if(a!==void 0){var i=a(s);if(Il){ns(!0);try{a(s)}finally{ns(!1)}}}else i=s;return l.memoizedState=l.baseState=i,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:i},l.queue=t,t=t.dispatch=Yj.bind(null,Ye,t),[l.memoizedState,t]},useRef:function(t){var s=ws();return t={current:t},s.memoizedState=t},useState:function(t){t=cd(t);var s=t.queue,a=Uh.bind(null,Ye,s);return s.dispatch=a,[t.memoizedState,a]},useDebugValue:ud,useDeferredValue:function(t,s){var a=ws();return md(a,t,s)},useTransition:function(){var t=cd(!1);return t=Mh.bind(null,Ye,t.queue,!0,!1),ws().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,s,a){var l=Ye,i=ws();if(xt){if(a===void 0)throw Error(d(407));a=a()}else{if(a=s(),Et===null)throw Error(d(349));(lt&127)!==0||rh(l,s,a)}i.memoizedState=a;var o={value:a,getSnapshot:s};return i.queue=o,wh(oh.bind(null,l,o,t),[t]),l.flags|=2048,On(9,{destroy:void 0},ch.bind(null,l,o,a,s),null),a},useId:function(){var t=ws(),s=Et.identifierPrefix;if(xt){var a=wa,l=Na;a=(l&~(1<<32-ds(l)-1)).toString(32)+a,s="_"+s+"R_"+a,a=Kr++,0<\/script>",o=o.removeChild(o.firstChild);break;case"select":o=typeof l.is=="string"?m.createElement("select",{is:l.is}):m.createElement("select"),l.multiple?o.multiple=!0:l.size&&(o.size=l.size);break;default:o=typeof l.is=="string"?m.createElement(i,{is:l.is}):m.createElement(i)}}o[qe]=s,o[ht]=l;e:for(m=s.child;m!==null;){if(m.tag===5||m.tag===6)o.appendChild(m.stateNode);else if(m.tag!==4&&m.tag!==27&&m.child!==null){m.child.return=m,m=m.child;continue}if(m===s)break e;for(;m.sibling===null;){if(m.return===null||m.return===s)break e;m=m.return}m.sibling.return=m.return,m=m.sibling}s.stateNode=o;e:switch(fs(o,i,l),i){case"button":case"input":case"select":case"textarea":l=!!l.autoFocus;break e;case"img":l=!0;break e;default:l=!1}l&&Ya(s)}}return At(s),Ed(s,s.type,t===null?null:t.memoizedProps,s.pendingProps,a),null;case 6:if(t&&s.stateNode!=null)t.memoizedProps!==l&&Ya(s);else{if(typeof l!="string"&&s.stateNode===null)throw Error(d(166));if(t=le.current,Sn(s)){if(t=s.stateNode,a=s.memoizedProps,l=null,i=ms,i!==null)switch(i.tag){case 27:case 5:l=i.memoizedProps}t[qe]=s,t=!!(t.nodeValue===a||l!==null&&l.suppressHydrationWarning===!0||nf(t.nodeValue,a)),t||ml(s,!0)}else t=bc(t).createTextNode(l),t[qe]=s,s.stateNode=t}return At(s),null;case 31:if(a=s.memoizedState,t===null||t.memoizedState!==null){if(l=Sn(s),a!==null){if(t===null){if(!l)throw Error(d(318));if(t=s.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(d(557));t[qe]=s}else $l(),(s.flags&128)===0&&(s.memoizedState=null),s.flags|=4;At(s),t=!1}else a=Ho(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=a),t=!0;if(!t)return s.flags&256?(Gs(s),s):(Gs(s),null);if((s.flags&128)!==0)throw Error(d(558))}return At(s),null;case 13:if(l=s.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(i=Sn(s),l!==null&&l.dehydrated!==null){if(t===null){if(!i)throw Error(d(318));if(i=s.memoizedState,i=i!==null?i.dehydrated:null,!i)throw Error(d(317));i[qe]=s}else $l(),(s.flags&128)===0&&(s.memoizedState=null),s.flags|=4;At(s),i=!1}else i=Ho(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=i),i=!0;if(!i)return s.flags&256?(Gs(s),s):(Gs(s),null)}return Gs(s),(s.flags&128)!==0?(s.lanes=a,s):(a=l!==null,t=t!==null&&t.memoizedState!==null,a&&(l=s.child,i=null,l.alternate!==null&&l.alternate.memoizedState!==null&&l.alternate.memoizedState.cachePool!==null&&(i=l.alternate.memoizedState.cachePool.pool),o=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(o=l.memoizedState.cachePool.pool),o!==i&&(l.flags|=2048)),a!==t&&a&&(s.child.flags|=8192),nc(s,s.updateQueue),At(s),null);case 4:return D(),t===null&&Id(s.stateNode.containerInfo),At(s),null;case 10:return Va(s.type),At(s),null;case 19:if(xe(Yt),l=s.memoizedState,l===null)return At(s),null;if(i=(s.flags&128)!==0,o=l.rendering,o===null)if(i)Di(l,!1);else{if(Vt!==0||t!==null&&(t.flags&128)!==0)for(t=s.child;t!==null;){if(o=Yr(t),o!==null){for(s.flags|=128,Di(l,!1),t=o.updateQueue,s.updateQueue=t,nc(s,t),s.subtreeFlags=0,t=a,a=s.child;a!==null;)Um(a,t),a=a.sibling;return Q(Yt,Yt.current&1|2),xt&&qa(s,l.treeForkCount),s.child}t=t.sibling}l.tail!==null&&Ke()>dc&&(s.flags|=128,i=!0,Di(l,!1),s.lanes=4194304)}else{if(!i)if(t=Yr(o),t!==null){if(s.flags|=128,i=!0,t=t.updateQueue,s.updateQueue=t,nc(s,t),Di(l,!0),l.tail===null&&l.tailMode==="hidden"&&!o.alternate&&!xt)return At(s),null}else 2*Ke()-l.renderingStartTime>dc&&a!==536870912&&(s.flags|=128,i=!0,Di(l,!1),s.lanes=4194304);l.isBackwards?(o.sibling=s.child,s.child=o):(t=l.last,t!==null?t.sibling=o:s.child=o,l.last=o)}return l.tail!==null?(t=l.tail,l.rendering=t,l.tail=t.sibling,l.renderingStartTime=Ke(),t.sibling=null,a=Yt.current,Q(Yt,i?a&1|2:a&1),xt&&qa(s,l.treeForkCount),t):(At(s),null);case 22:case 23:return Gs(s),Po(),l=s.memoizedState!==null,t!==null?t.memoizedState!==null!==l&&(s.flags|=8192):l&&(s.flags|=8192),l?(a&536870912)!==0&&(s.flags&128)===0&&(At(s),s.subtreeFlags&6&&(s.flags|=8192)):At(s),a=s.updateQueue,a!==null&&nc(s,a.retryQueue),a=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),l=null,s.memoizedState!==null&&s.memoizedState.cachePool!==null&&(l=s.memoizedState.cachePool.pool),l!==a&&(s.flags|=2048),t!==null&&xe(Xl),null;case 24:return a=null,t!==null&&(a=t.memoizedState.cache),s.memoizedState.cache!==a&&(s.flags|=2048),Va(Zt),At(s),null;case 25:return null;case 30:return null}throw Error(d(156,s.tag))}function Ij(t,s){switch(Uo(s),s.tag){case 1:return t=s.flags,t&65536?(s.flags=t&-65537|128,s):null;case 3:return Va(Zt),D(),t=s.flags,(t&65536)!==0&&(t&128)===0?(s.flags=t&-65537|128,s):null;case 26:case 27:case 5:return Ne(s),null;case 31:if(s.memoizedState!==null){if(Gs(s),s.alternate===null)throw Error(d(340));$l()}return t=s.flags,t&65536?(s.flags=t&-65537|128,s):null;case 13:if(Gs(s),t=s.memoizedState,t!==null&&t.dehydrated!==null){if(s.alternate===null)throw Error(d(340));$l()}return t=s.flags,t&65536?(s.flags=t&-65537|128,s):null;case 19:return xe(Yt),null;case 4:return D(),null;case 10:return Va(s.type),null;case 22:case 23:return Gs(s),Po(),t!==null&&xe(Xl),t=s.flags,t&65536?(s.flags=t&-65537|128,s):null;case 24:return Va(Zt),null;case 25:return null;default:return null}}function dx(t,s){switch(Uo(s),s.tag){case 3:Va(Zt),D();break;case 26:case 27:case 5:Ne(s);break;case 4:D();break;case 31:s.memoizedState!==null&&Gs(s);break;case 13:Gs(s);break;case 19:xe(Yt);break;case 10:Va(s.type);break;case 22:case 23:Gs(s),Po(),t!==null&&xe(Xl);break;case 24:Va(Zt)}}function Oi(t,s){try{var a=s.updateQueue,l=a!==null?a.lastEffect:null;if(l!==null){var i=l.next;a=i;do{if((a.tag&t)===t){l=void 0;var o=a.create,m=a.inst;l=o(),m.destroy=l}a=a.next}while(a!==i)}}catch(g){wt(s,s.return,g)}}function vl(t,s,a){try{var l=s.updateQueue,i=l!==null?l.lastEffect:null;if(i!==null){var o=i.next;l=o;do{if((l.tag&t)===t){var m=l.inst,g=m.destroy;if(g!==void 0){m.destroy=void 0,i=s;var C=a,I=g;try{I()}catch(ae){wt(i,C,ae)}}}l=l.next}while(l!==o)}}catch(ae){wt(s,s.return,ae)}}function ux(t){var s=t.updateQueue;if(s!==null){var a=t.stateNode;try{th(s,a)}catch(l){wt(t,t.return,l)}}}function mx(t,s,a){a.props=Pl(t.type,t.memoizedProps),a.state=t.memoizedState;try{a.componentWillUnmount()}catch(l){wt(t,s,l)}}function Ri(t,s){try{var a=t.ref;if(a!==null){switch(t.tag){case 26:case 27:case 5:var l=t.stateNode;break;case 30:l=t.stateNode;break;default:l=t.stateNode}typeof a=="function"?t.refCleanup=a(l):a.current=l}}catch(i){wt(t,s,i)}}function _a(t,s){var a=t.ref,l=t.refCleanup;if(a!==null)if(typeof l=="function")try{l()}catch(i){wt(t,s,i)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(i){wt(t,s,i)}else a.current=null}function hx(t){var s=t.type,a=t.memoizedProps,l=t.stateNode;try{e:switch(s){case"button":case"input":case"select":case"textarea":a.autoFocus&&l.focus();break e;case"img":a.src?l.src=a.src:a.srcSet&&(l.srcset=a.srcSet)}}catch(i){wt(t,t.return,i)}}function zd(t,s,a){try{var l=t.stateNode;vv(l,t.type,a,s),l[ht]=s}catch(i){wt(t,t.return,i)}}function xx(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&Cl(t.type)||t.tag===4}function Ad(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||xx(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.tag===27&&Cl(t.type)||t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function Md(t,s,a){var l=t.tag;if(l===5||l===6)t=t.stateNode,s?(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a).insertBefore(t,s):(s=a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,s.appendChild(t),a=a._reactRootContainer,a!=null||s.onclick!==null||(s.onclick=Ua));else if(l!==4&&(l===27&&Cl(t.type)&&(a=t.stateNode,s=null),t=t.child,t!==null))for(Md(t,s,a),t=t.sibling;t!==null;)Md(t,s,a),t=t.sibling}function ic(t,s,a){var l=t.tag;if(l===5||l===6)t=t.stateNode,s?a.insertBefore(t,s):a.appendChild(t);else if(l!==4&&(l===27&&Cl(t.type)&&(a=t.stateNode),t=t.child,t!==null))for(ic(t,s,a),t=t.sibling;t!==null;)ic(t,s,a),t=t.sibling}function fx(t){var s=t.stateNode,a=t.memoizedProps;try{for(var l=t.type,i=s.attributes;i.length;)s.removeAttributeNode(i[0]);fs(s,l,a),s[qe]=t,s[ht]=a}catch(o){wt(t,t.return,o)}}var Xa=!1,Pt=!1,Dd=!1,px=typeof WeakSet=="function"?WeakSet:Set,rs=null;function Pj(t,s){if(t=t.containerInfo,eu=kc,t=Tm(t),Co(t)){if("selectionStart"in t)var a={start:t.selectionStart,end:t.selectionEnd};else e:{a=(a=t.ownerDocument)&&a.defaultView||window;var l=a.getSelection&&a.getSelection();if(l&&l.rangeCount!==0){a=l.anchorNode;var i=l.anchorOffset,o=l.focusNode;l=l.focusOffset;try{a.nodeType,o.nodeType}catch{a=null;break e}var m=0,g=-1,C=-1,I=0,ae=0,ue=t,P=null;t:for(;;){for(var te;ue!==a||i!==0&&ue.nodeType!==3||(g=m+i),ue!==o||l!==0&&ue.nodeType!==3||(C=m+l),ue.nodeType===3&&(m+=ue.nodeValue.length),(te=ue.firstChild)!==null;)P=ue,ue=te;for(;;){if(ue===t)break t;if(P===a&&++I===i&&(g=m),P===o&&++ae===l&&(C=m),(te=ue.nextSibling)!==null)break;ue=P,P=ue.parentNode}ue=te}a=g===-1||C===-1?null:{start:g,end:C}}else a=null}a=a||{start:0,end:0}}else a=null;for(tu={focusedElem:t,selectionRange:a},kc=!1,rs=s;rs!==null;)if(s=rs,t=s.child,(s.subtreeFlags&1028)!==0&&t!==null)t.return=s,rs=t;else for(;rs!==null;){switch(s=rs,o=s.alternate,t=s.flags,s.tag){case 0:if((t&4)!==0&&(t=s.updateQueue,t=t!==null?t.events:null,t!==null))for(a=0;a title"))),fs(o,l,a),o[qe]=t,is(o),l=o;break e;case"link":var m=wf("link","href",i).get(l+(a.href||""));if(m){for(var g=0;gkt&&(m=kt,kt=De,De=m);var V=Cm(g,De),A=Cm(g,kt);if(V&&A&&(te.rangeCount!==1||te.anchorNode!==V.node||te.anchorOffset!==V.offset||te.focusNode!==A.node||te.focusOffset!==A.offset)){var J=ue.createRange();J.setStart(V.node,V.offset),te.removeAllRanges(),De>kt?(te.addRange(J),te.extend(A.node,A.offset)):(J.setEnd(A.node,A.offset),te.addRange(J))}}}}for(ue=[],te=g;te=te.parentNode;)te.nodeType===1&&ue.push({element:te,left:te.scrollLeft,top:te.scrollTop});for(typeof g.focus=="function"&&g.focus(),g=0;ga?32:a,y.T=null,a=qd,qd=null;var o=wl,m=Pa;if(ts=0,Hn=wl=null,Pa=0,(bt&6)!==0)throw Error(d(331));var g=bt;if(bt|=4,kx(o.current),_x(o,o.current,m,a),bt=g,Gi(0,!1),Oe&&typeof Oe.onPostCommitFiberRoot=="function")try{Oe.onPostCommitFiberRoot(Se,o)}catch{}return!0}finally{q.p=i,y.T=l,Qx(t,s)}}function Xx(t,s,a){s=ta(a,s),s=vd(t.stateNode,s,2),t=pl(t,s,2),t!==null&&(es(t,2),Sa(t))}function wt(t,s,a){if(t.tag===3)Xx(t,t,a);else for(;s!==null;){if(s.tag===3){Xx(s,t,a);break}else if(s.tag===1){var l=s.stateNode;if(typeof s.type.getDerivedStateFromError=="function"||typeof l.componentDidCatch=="function"&&(Nl===null||!Nl.has(l))){t=ta(a,t),a=Kh(2),l=pl(s,a,2),l!==null&&(Zh(a,l,s,t),es(l,2),Sa(l));break}}s=s.return}}function $d(t,s,a){var l=t.pingCache;if(l===null){l=t.pingCache=new tv;var i=new Set;l.set(s,i)}else i=l.get(s),i===void 0&&(i=new Set,l.set(s,i));i.has(a)||(Ld=!0,i.add(a),t=iv.bind(null,t,s,a),s.then(t,t))}function iv(t,s,a){var l=t.pingCache;l!==null&&l.delete(s),t.pingedLanes|=t.suspendedLanes&a,t.warmLanes&=~a,Et===t&&(lt&a)===a&&(Vt===4||Vt===3&&(lt&62914560)===lt&&300>Ke()-oc?(bt&2)===0&&qn(t,0):Ud|=a,Bn===lt&&(Bn=0)),Sa(t)}function Kx(t,s){s===0&&(s=ve()),t=Vl(t,s),t!==null&&(es(t,s),Sa(t))}function rv(t){var s=t.memoizedState,a=0;s!==null&&(a=s.retryLane),Kx(t,a)}function cv(t,s){var a=0;switch(t.tag){case 31:case 13:var l=t.stateNode,i=t.memoizedState;i!==null&&(a=i.retryLane);break;case 19:l=t.stateNode;break;case 22:l=t.stateNode._retryCache;break;default:throw Error(d(314))}l!==null&&l.delete(s),Kx(t,a)}function ov(t,s){return Fe(t,s)}var pc=null,Vn=null,Qd=!1,gc=!1,Yd=!1,Sl=0;function Sa(t){t!==Vn&&t.next===null&&(Vn===null?pc=Vn=t:Vn=Vn.next=t),gc=!0,Qd||(Qd=!0,uv())}function Gi(t,s){if(!Yd&&gc){Yd=!0;do for(var a=!1,l=pc;l!==null;){if(t!==0){var i=l.pendingLanes;if(i===0)var o=0;else{var m=l.suspendedLanes,g=l.pingedLanes;o=(1<<31-ds(42|t)+1)-1,o&=i&~(m&~g),o=o&201326741?o&201326741|1:o?o|2:0}o!==0&&(a=!0,Px(l,o))}else o=lt,o=Ra(l,l===Et?o:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),(o&3)===0||ba(l,o)||(a=!0,Px(l,o));l=l.next}while(a);Yd=!1}}function dv(){Zx()}function Zx(){gc=Qd=!1;var t=0;Sl!==0&&yv()&&(t=Sl);for(var s=Ke(),a=null,l=pc;l!==null;){var i=l.next,o=Jx(l,s);o===0?(l.next=null,a===null?pc=i:a.next=i,i===null&&(Vn=a)):(a=l,(t!==0||(o&3)!==0)&&(gc=!0)),l=i}ts!==0&&ts!==5||Gi(t),Sl!==0&&(Sl=0)}function Jx(t,s){for(var a=t.suspendedLanes,l=t.pingedLanes,i=t.expirationTimes,o=t.pendingLanes&-62914561;0g)break;var ae=C.transferSize,ue=C.initiatorType;ae&&rf(ue)&&(C=C.responseEnd,m+=ae*(C"u"?null:document;function vf(t,s,a){var l=Fn;if(l&&typeof s=="string"&&s){var i=Ws(s);i='link[rel="'+t+'"][href="'+i+'"]',typeof a=="string"&&(i+='[crossorigin="'+a+'"]'),jf.has(i)||(jf.add(i),t={rel:t,crossOrigin:a,href:s},l.querySelector(i)===null&&(s=l.createElement("link"),fs(s,"link",t),is(s),l.head.appendChild(s)))}}function zv(t){Wa.D(t),vf("dns-prefetch",t,null)}function Av(t,s){Wa.C(t,s),vf("preconnect",t,s)}function Mv(t,s,a){Wa.L(t,s,a);var l=Fn;if(l&&t&&s){var i='link[rel="preload"][as="'+Ws(s)+'"]';s==="image"&&a&&a.imageSrcSet?(i+='[imagesrcset="'+Ws(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(i+='[imagesizes="'+Ws(a.imageSizes)+'"]')):i+='[href="'+Ws(t)+'"]';var o=i;switch(s){case"style":o=$n(t);break;case"script":o=Qn(t)}ra.has(o)||(t=k({rel:"preload",href:s==="image"&&a&&a.imageSrcSet?void 0:t,as:s},a),ra.set(o,t),l.querySelector(i)!==null||s==="style"&&l.querySelector(Qi(o))||s==="script"&&l.querySelector(Yi(o))||(s=l.createElement("link"),fs(s,"link",t),is(s),l.head.appendChild(s)))}}function Dv(t,s){Wa.m(t,s);var a=Fn;if(a&&t){var l=s&&typeof s.as=="string"?s.as:"script",i='link[rel="modulepreload"][as="'+Ws(l)+'"][href="'+Ws(t)+'"]',o=i;switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":o=Qn(t)}if(!ra.has(o)&&(t=k({rel:"modulepreload",href:t},s),ra.set(o,t),a.querySelector(i)===null)){switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(Yi(o)))return}l=a.createElement("link"),fs(l,"link",t),is(l),a.head.appendChild(l)}}}function Ov(t,s,a){Wa.S(t,s,a);var l=Fn;if(l&&t){var i=mn(l).hoistableStyles,o=$n(t);s=s||"default";var m=i.get(o);if(!m){var g={loading:0,preload:null};if(m=l.querySelector(Qi(o)))g.loading=5;else{t=k({rel:"stylesheet",href:t,"data-precedence":s},a),(a=ra.get(o))&&cu(t,a);var C=m=l.createElement("link");is(C),fs(C,"link",t),C._p=new Promise(function(I,ae){C.onload=I,C.onerror=ae}),C.addEventListener("load",function(){g.loading|=1}),C.addEventListener("error",function(){g.loading|=2}),g.loading|=4,Nc(m,s,l)}m={type:"stylesheet",instance:m,count:1,state:g},i.set(o,m)}}}function Rv(t,s){Wa.X(t,s);var a=Fn;if(a&&t){var l=mn(a).hoistableScripts,i=Qn(t),o=l.get(i);o||(o=a.querySelector(Yi(i)),o||(t=k({src:t,async:!0},s),(s=ra.get(i))&&ou(t,s),o=a.createElement("script"),is(o),fs(o,"link",t),a.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},l.set(i,o))}}function Lv(t,s){Wa.M(t,s);var a=Fn;if(a&&t){var l=mn(a).hoistableScripts,i=Qn(t),o=l.get(i);o||(o=a.querySelector(Yi(i)),o||(t=k({src:t,async:!0,type:"module"},s),(s=ra.get(i))&&ou(t,s),o=a.createElement("script"),is(o),fs(o,"link",t),a.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},l.set(i,o))}}function bf(t,s,a,l){var i=(i=le.current)?yc(i):null;if(!i)throw Error(d(446));switch(t){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(s=$n(a.href),a=mn(i).hoistableStyles,l=a.get(s),l||(l={type:"style",instance:null,count:0,state:null},a.set(s,l)),l):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){t=$n(a.href);var o=mn(i).hoistableStyles,m=o.get(t);if(m||(i=i.ownerDocument||i,m={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},o.set(t,m),(o=i.querySelector(Qi(t)))&&!o._p&&(m.instance=o,m.state.loading=5),ra.has(t)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},ra.set(t,a),o||Uv(i,t,a,m.state))),s&&l===null)throw Error(d(528,""));return m}if(s&&l!==null)throw Error(d(529,""));return null;case"script":return s=a.async,a=a.src,typeof a=="string"&&s&&typeof s!="function"&&typeof s!="symbol"?(s=Qn(a),a=mn(i).hoistableScripts,l=a.get(s),l||(l={type:"script",instance:null,count:0,state:null},a.set(s,l)),l):{type:"void",instance:null,count:0,state:null};default:throw Error(d(444,t))}}function $n(t){return'href="'+Ws(t)+'"'}function Qi(t){return'link[rel="stylesheet"]['+t+"]"}function yf(t){return k({},t,{"data-precedence":t.precedence,precedence:null})}function Uv(t,s,a,l){t.querySelector('link[rel="preload"][as="style"]['+s+"]")?l.loading=1:(s=t.createElement("link"),l.preload=s,s.addEventListener("load",function(){return l.loading|=1}),s.addEventListener("error",function(){return l.loading|=2}),fs(s,"link",a),is(s),t.head.appendChild(s))}function Qn(t){return'[src="'+Ws(t)+'"]'}function Yi(t){return"script[async]"+t}function Nf(t,s,a){if(s.count++,s.instance===null)switch(s.type){case"style":var l=t.querySelector('style[data-href~="'+Ws(a.href)+'"]');if(l)return s.instance=l,is(l),l;var i=k({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return l=(t.ownerDocument||t).createElement("style"),is(l),fs(l,"style",i),Nc(l,a.precedence,t),s.instance=l;case"stylesheet":i=$n(a.href);var o=t.querySelector(Qi(i));if(o)return s.state.loading|=4,s.instance=o,is(o),o;l=yf(a),(i=ra.get(i))&&cu(l,i),o=(t.ownerDocument||t).createElement("link"),is(o);var m=o;return m._p=new Promise(function(g,C){m.onload=g,m.onerror=C}),fs(o,"link",l),s.state.loading|=4,Nc(o,a.precedence,t),s.instance=o;case"script":return o=Qn(a.src),(i=t.querySelector(Yi(o)))?(s.instance=i,is(i),i):(l=a,(i=ra.get(o))&&(l=k({},a),ou(l,i)),t=t.ownerDocument||t,i=t.createElement("script"),is(i),fs(i,"link",l),t.head.appendChild(i),s.instance=i);case"void":return null;default:throw Error(d(443,s.type))}else s.type==="stylesheet"&&(s.state.loading&4)===0&&(l=s.instance,s.state.loading|=4,Nc(l,a.precedence,t));return s.instance}function Nc(t,s,a){for(var l=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),i=l.length?l[l.length-1]:null,o=i,m=0;m title"):null)}function Bv(t,s,a){if(a===1||s.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof s.precedence!="string"||typeof s.href!="string"||s.href==="")break;return!0;case"link":if(typeof s.rel!="string"||typeof s.href!="string"||s.href===""||s.onLoad||s.onError)break;switch(s.rel){case"stylesheet":return t=s.disabled,typeof s.precedence=="string"&&t==null;default:return!0}case"script":if(s.async&&typeof s.async!="function"&&typeof s.async!="symbol"&&!s.onLoad&&!s.onError&&s.src&&typeof s.src=="string")return!0}return!1}function Sf(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function Hv(t,s,a,l){if(a.type==="stylesheet"&&(typeof l.media!="string"||matchMedia(l.media).matches!==!1)&&(a.state.loading&4)===0){if(a.instance===null){var i=$n(l.href),o=s.querySelector(Qi(i));if(o){s=o._p,s!==null&&typeof s=="object"&&typeof s.then=="function"&&(t.count++,t=_c.bind(t),s.then(t,t)),a.state.loading|=4,a.instance=o,is(o);return}o=s.ownerDocument||s,l=yf(l),(i=ra.get(i))&&cu(l,i),o=o.createElement("link"),is(o);var m=o;m._p=new Promise(function(g,C){m.onload=g,m.onerror=C}),fs(o,"link",l),a.instance=o}t.stylesheets===null&&(t.stylesheets=new Map),t.stylesheets.set(a,s),(s=a.state.preload)&&(a.state.loading&3)===0&&(t.count++,a=_c.bind(t),s.addEventListener("load",a),s.addEventListener("error",a))}}var du=0;function qv(t,s){return t.stylesheets&&t.count===0&&Cc(t,t.stylesheets),0du?50:800)+s);return t.unsuspend=a,function(){t.unsuspend=null,clearTimeout(l),clearTimeout(i)}}:null}function _c(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Cc(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var Sc=null;function Cc(t,s){t.stylesheets=null,t.unsuspend!==null&&(t.count++,Sc=new Map,s.forEach(Gv,t),Sc=null,_c.call(t))}function Gv(t,s){if(!(s.state.loading&4)){var a=Sc.get(t);if(a)var l=a.get(null);else{a=new Map,Sc.set(t,a);for(var i=t.querySelectorAll("link[data-precedence],style[data-precedence]"),o=0;o"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(r){console.error(r)}}return n(),yu.exports=fN(),yu.exports}var gN=pN();function K(...n){return ib(rb(n))}const Ve=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:K("rounded-xl border bg-card text-card-foreground shadow",n),...r}));Ve.displayName="Card";const pt=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:K("flex flex-col space-y-1.5 p-6",n),...r}));pt.displayName="CardHeader";const gt=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:K("font-semibold leading-none tracking-tight",n),...r}));gt.displayName="CardTitle";const Kt=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:K("text-sm text-muted-foreground",n),...r}));Kt.displayName="CardDescription";const yt=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:K("p-6 pt-0",n),...r}));yt.displayName="CardContent";const og=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:K("flex items-center p-6 pt-0",n),...r}));og.displayName="CardFooter";const Aa=db,ja=u.forwardRef(({className:n,...r},c)=>e.jsx(xp,{ref:c,className:K("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",n),...r}));ja.displayName=xp.displayName;const st=u.forwardRef(({className:n,...r},c)=>e.jsx(fp,{ref:c,className:K("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all duration-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",n),...r}));st.displayName=fp.displayName;const _t=u.forwardRef(({className:n,...r},c)=>e.jsx(pp,{ref:c,className:K("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[state=active]:animate-in data-[state=active]:fade-in data-[state=active]:duration-300",n),...r}));_t.displayName=pp.displayName;const Ie=u.forwardRef(({className:n,children:r,viewportRef:c,...d},h)=>e.jsxs(gp,{ref:h,className:K("relative overflow-hidden",n),...d,children:[e.jsx(ub,{ref:c,className:"h-full w-full rounded-[inherit]",children:r}),e.jsx(zu,{}),e.jsx(zu,{orientation:"horizontal"}),e.jsx(mb,{})]}));Ie.displayName=gp.displayName;const zu=u.forwardRef(({className:n,orientation:r="vertical",...c},d)=>e.jsx(jp,{ref:d,orientation:r,className:K("flex touch-none select-none transition-colors",r==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",r==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",n),...c,children:e.jsx(hb,{className:"relative flex-1 rounded-full bg-border"})}));zu.displayName=jp.displayName;function dg({className:n,...r}){return e.jsx("div",{className:K("animate-pulse rounded-md bg-primary/10",n),...r})}const vr=u.forwardRef(({className:n,value:r,...c},d)=>e.jsx(vp,{ref:d,className:K("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",n),...c,children:e.jsx(xb,{className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(r||0)}%)`}})}));vr.displayName=vp.displayName;const jN={light:"",dark:".dark"},ug=u.createContext(null);function mg(){const n=u.useContext(ug);if(!n)throw new Error("useChart must be used within a ");return n}const Xn=u.forwardRef(({id:n,className:r,children:c,config:d,...h},x)=>{const f=u.useId(),j=`chart-${n||f.replace(/:/g,"")}`;return e.jsx(ug.Provider,{value:{config:d},children:e.jsxs("div",{"data-chart":j,ref:x,className:K("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",r),...h,children:[e.jsx(vN,{id:j,config:d}),e.jsx(Tb,{children:c})]})})});Xn.displayName="Chart";const vN=({id:n,config:r})=>{const c=Object.entries(r).filter(([,d])=>d.theme||d.color);return c.length?e.jsx("style",{dangerouslySetInnerHTML:{__html:Object.entries(jN).map(([d,h])=>` -${h} [data-chart=${n}] { -${c.map(([x,f])=>{const j=f.theme?.[d]||f.color;return j?` --color-${x}: ${j};`:null}).join(` -`)} -} -`).join(` -`)}}):null},tr=Eb,Kn=u.forwardRef(({active:n,payload:r,className:c,indicator:d="dot",hideLabel:h=!1,hideIndicator:x=!1,label:f,labelFormatter:j,labelClassName:p,formatter:w,color:v,nameKey:k,labelKey:T},E)=>{const{config:R}=mg(),F=u.useMemo(()=>{if(h||!r?.length)return null;const[M]=r,Z=`${T||M?.dataKey||M?.name||"value"}`,G=Au(R,M,Z),z=!T&&typeof f=="string"?R[f]?.label||f:G?.label;return j?e.jsx("div",{className:K("font-medium",p),children:j(z,r)}):z?e.jsx("div",{className:K("font-medium",p),children:z}):null},[f,j,r,h,p,R,T]);if(!n||!r?.length)return null;const U=r.length===1&&d!=="dot";return e.jsxs("div",{ref:E,className:K("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",c),children:[U?null:F,e.jsx("div",{className:"grid gap-1.5",children:r.filter(M=>M.type!=="none").map((M,Z)=>{const G=`${k||M.name||M.dataKey||"value"}`,z=Au(R,M,G),B=v||M.payload.fill||M.color;return e.jsx("div",{className:K("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",d==="dot"&&"items-center"),children:w&&M?.value!==void 0&&M.name?w(M.value,M.name,M,Z,M.payload):e.jsxs(e.Fragment,{children:[z?.icon?e.jsx(z.icon,{}):!x&&e.jsx("div",{className:K("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]",{"h-2.5 w-2.5":d==="dot","w-1":d==="line","w-0 border-[1.5px] border-dashed bg-transparent":d==="dashed","my-0.5":U&&d==="dashed"}),style:{"--color-bg":B,"--color-border":B}}),e.jsxs("div",{className:K("flex flex-1 justify-between leading-none",U?"items-end":"items-center"),children:[e.jsxs("div",{className:"grid gap-1.5",children:[U?F:null,e.jsx("span",{className:"text-muted-foreground",children:z?.label||M.name})]}),M.value&&e.jsx("span",{className:"font-mono font-medium tabular-nums text-foreground",children:M.value.toLocaleString()})]})]})},M.dataKey)})})]})});Kn.displayName="ChartTooltip";const bN=zb,hg=u.forwardRef(({className:n,hideIcon:r=!1,payload:c,verticalAlign:d="bottom",nameKey:h},x)=>{const{config:f}=mg();return c?.length?e.jsx("div",{ref:x,className:K("flex items-center justify-center gap-4",d==="top"?"pb-3":"pt-3",n),children:c.filter(j=>j.type!=="none").map(j=>{const p=`${h||j.dataKey||"value"}`,w=Au(f,j,p);return e.jsxs("div",{className:K("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"),children:[w?.icon&&!r?e.jsx(w.icon,{}):e.jsx("div",{className:"h-2 w-2 shrink-0 rounded-[2px]",style:{backgroundColor:j.color}}),w?.label]},j.value)})}):null});hg.displayName="ChartLegend";function Au(n,r,c){if(typeof r!="object"||r===null)return;const d="payload"in r&&typeof r.payload=="object"&&r.payload!==null?r.payload:void 0;let h=c;return c in r&&typeof r[c]=="string"?h=r[c]:d&&c in d&&typeof d[c]=="string"&&(h=d[c]),h in n?n[h]:n[c]}const ur=ei("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),b=u.forwardRef(({className:n,variant:r,size:c,asChild:d=!1,...h},x)=>{const f=d?Lb:"button";return e.jsx(f,{className:K(ur({variant:r,size:c,className:n})),ref:x,...h})});b.displayName="Button";const yN=ei("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function Qe({className:n,variant:r,...c}){return e.jsx("div",{className:K(yN({variant:r}),n),...c})}const NN=5,wN=5e3;let _u=0;function _N(){return _u=(_u+1)%Number.MAX_SAFE_INTEGER,_u.toString()}const Su=new Map,Zf=n=>{if(Su.has(n))return;const r=setTimeout(()=>{Su.delete(n),ir({type:"REMOVE_TOAST",toastId:n})},wN);Su.set(n,r)},SN=(n,r)=>{switch(r.type){case"ADD_TOAST":return{...n,toasts:[r.toast,...n.toasts].slice(0,NN)};case"UPDATE_TOAST":return{...n,toasts:n.toasts.map(c=>c.id===r.toast.id?{...c,...r.toast}:c)};case"DISMISS_TOAST":{const{toastId:c}=r;return c?Zf(c):n.toasts.forEach(d=>{Zf(d.id)}),{...n,toasts:n.toasts.map(d=>d.id===c||c===void 0?{...d,open:!1}:d)}}case"REMOVE_TOAST":return r.toastId===void 0?{...n,toasts:[]}:{...n,toasts:n.toasts.filter(c=>c.id!==r.toastId)}}},$c=[];let Qc={toasts:[]};function ir(n){Qc=SN(Qc,n),$c.forEach(r=>{r(Qc)})}function CN({...n}){const r=_N(),c=h=>ir({type:"UPDATE_TOAST",toast:{...h,id:r}}),d=()=>ir({type:"DISMISS_TOAST",toastId:r});return ir({type:"ADD_TOAST",toast:{...n,id:r,open:!0,onOpenChange:h=>{h||d()}}}),{id:r,dismiss:d,update:c}}function Rt(){const[n,r]=u.useState(Qc);return u.useEffect(()=>($c.push(r),()=>{const c=$c.indexOf(r);c>-1&&$c.splice(c,1)}),[n]),{...n,toast:CN,dismiss:c=>ir({type:"DISMISS_TOAST",toastId:c})}}const kN=n=>{const r=[];for(let c=0;c{try{E(!0);const H=await Oc.get("https://v1.hitokoto.cn/?c=a&c=b&c=c&c=d&c=h&c=i&c=k");k({hitokoto:H.data.hitokoto,from:H.data.from||H.data.from_who||"未知"})}catch(H){console.error("获取一言失败:",H),k({hitokoto:"人生就像一盒巧克力,你永远不知道下一颗是什么味道。",from:"阿甘正传"})}finally{E(!1)}},[]),z=u.useCallback(async()=>{try{const H=localStorage.getItem("access-token"),ie=await Oc.get("/api/webui/system/status",{headers:{Authorization:`Bearer ${H}`}});F(ie.data)}catch(H){console.error("获取机器人状态失败:",H),F(null)}},[]),B=async()=>{if(!U)try{M(!0);const H=localStorage.getItem("access-token");await Oc.post("/api/webui/system/restart",{},{headers:{Authorization:`Bearer ${H}`}}),Z({title:"重启中",description:"麦麦正在重启,请稍候..."}),setTimeout(()=>{z(),M(!1)},3e3)}catch(H){console.error("重启失败:",H),Z({title:"重启失败",description:"无法重启麦麦,请检查控制台",variant:"destructive"}),M(!1)}},X=u.useCallback(async()=>{try{const H=localStorage.getItem("access-token"),ie=await Oc.get(`/api/webui/statistics/dashboard?hours=${f}`,{headers:{Authorization:`Bearer ${H}`}});r(ie.data),d(!1),x(100)}catch(H){console.error("Failed to fetch dashboard data:",H),d(!1),x(100)}},[f]);if(u.useEffect(()=>{if(!c)return;x(0);const H=setTimeout(()=>x(15),200),ie=setTimeout(()=>x(30),800),_=setTimeout(()=>x(45),2e3),me=setTimeout(()=>x(60),4e3),xe=setTimeout(()=>x(75),6500),Q=setTimeout(()=>x(85),9e3),de=setTimeout(()=>x(92),11e3);return()=>{clearTimeout(H),clearTimeout(ie),clearTimeout(_),clearTimeout(me),clearTimeout(xe),clearTimeout(Q),clearTimeout(de)}},[c]),u.useEffect(()=>{X(),G(),z()},[X,G,z]),u.useEffect(()=>{if(!p)return;const H=setInterval(()=>{X(),z()},3e4);return()=>clearInterval(H)},[p,X,z]),c||!n)return e.jsx("div",{className:"flex items-center justify-center h-[calc(100vh-200px)]",children:e.jsxs("div",{className:"text-center space-y-6 w-full max-w-md px-4",children:[e.jsx(ps,{className:"h-12 w-12 animate-spin mx-auto text-primary"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-lg font-medium",children:"加载统计数据中..."}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"正在获取麦麦运行数据"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(vr,{value:h,className:"h-2"}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:[h,"%"]})]})]})});const{summary:S,model_stats:O=[],hourly_data:se=[],daily_data:he=[],recent_activity:ye=[]}=n,be=S??{total_requests:0,total_cost:0,total_tokens:0,online_time:0,total_messages:0,total_replies:0,avg_response_time:0,cost_per_hour:0,tokens_per_hour:0},pe=H=>{const ie=Math.floor(H/3600),_=Math.floor(H%3600/60);return`${ie}小时${_}分钟`},je=H=>new Date(H).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),_e=kN(O.length),y=O.map((H,ie)=>({name:H.model_name,value:H.request_count,fill:_e[ie]})),q={requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"},tokens:{label:"Tokens",color:"hsl(var(--chart-3))"}};return e.jsx(Ie,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"实时监控面板"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"麦麦运行状态和统计数据一览"})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(Aa,{value:f.toString(),onValueChange:H=>j(Number(H)),children:e.jsxs(ja,{className:"grid grid-cols-3 w-full sm:w-auto",children:[e.jsx(st,{value:"24",children:"24小时"}),e.jsx(st,{value:"168",children:"7天"}),e.jsx(st,{value:"720",children:"30天"})]})}),e.jsxs(b,{variant:p?"default":"outline",size:"sm",onClick:()=>w(!p),className:"gap-2",children:[e.jsx(ps,{className:`h-4 w-4 ${p?"animate-spin":""}`}),e.jsx("span",{className:"hidden sm:inline",children:"自动刷新"})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:X,children:e.jsx(ps,{className:"h-4 w-4"})})]})]}),e.jsxs("div",{className:"flex items-center gap-3 px-4 py-2 rounded-lg border border-dashed border-muted-foreground/30 bg-muted/20",children:[T?e.jsx(dg,{className:"h-5 flex-1"}):v?e.jsxs("p",{className:"flex-1 text-sm text-muted-foreground italic truncate",children:['"',v.hitokoto,'" —— ',v.from]}):null,e.jsx(b,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0",onClick:G,disabled:T,children:e.jsx(ps,{className:`h-3.5 w-3.5 ${T?"animate-spin":""}`})})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-3",children:[e.jsxs(Ve,{className:"lg:col-span-1",children:[e.jsx(pt,{className:"pb-3",children:e.jsxs(gt,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(fr,{className:"h-4 w-4"}),"麦麦状态"]})}),e.jsx(yt,{children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"flex items-center gap-2",children:R?.running?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-3 w-3 rounded-full bg-green-500 animate-pulse"}),e.jsxs(Qe,{variant:"outline",className:"text-green-600 border-green-300 bg-green-50",children:[e.jsx(oa,{className:"h-3 w-3 mr-1"}),"运行中"]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-3 w-3 rounded-full bg-red-500"}),e.jsxs(Qe,{variant:"outline",className:"text-red-600 border-red-300 bg-red-50",children:[e.jsx(Ea,{className:"h-3 w-3 mr-1"}),"已停止"]})]})}),R&&e.jsxs("div",{className:"text-xs text-muted-foreground",children:[e.jsxs("span",{children:["v",R.version]}),e.jsx("span",{className:"mx-2",children:"|"}),e.jsxs("span",{children:["运行 ",pe(R.uptime)]})]})]})})]}),e.jsxs(Ve,{className:"lg:col-span-2",children:[e.jsx(pt,{className:"pb-3",children:e.jsxs(gt,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(sn,{className:"h-4 w-4"}),"快速操作"]})}),e.jsx(yt,{children:e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(b,{variant:"outline",size:"sm",onClick:B,disabled:U,className:"gap-2",children:[e.jsx(Kc,{className:`h-4 w-4 ${U?"animate-spin":""}`}),U?"重启中...":"重启麦麦"]}),e.jsx(b,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Vc,{to:"/logs",children:[e.jsx(Ta,{className:"h-4 w-4"}),"查看日志"]})}),e.jsx(b,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Vc,{to:"/plugins",children:[e.jsx(ey,{className:"h-4 w-4"}),"插件管理"]})}),e.jsx(b,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Vc,{to:"/settings",children:[e.jsx(ti,{className:"h-4 w-4"}),"系统设置"]})})]})})]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-4",children:[e.jsxs(Ve,{children:[e.jsxs(pt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(gt,{className:"text-sm font-medium",children:"总请求数"}),e.jsx(ty,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(yt,{children:[e.jsx("div",{className:"text-2xl font-bold",children:be.total_requests.toLocaleString()}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["最近",f<48?f+"小时":Math.floor(f/24)+"天"]})]})]}),e.jsxs(Ve,{children:[e.jsxs(pt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(gt,{className:"text-sm font-medium",children:"总花费"}),e.jsx(sy,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(yt,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:["¥",be.total_cost.toFixed(2)]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:be.cost_per_hour>0?`¥${be.cost_per_hour.toFixed(2)}/小时`:"暂无数据"})]})]}),e.jsxs(Ve,{children:[e.jsxs(pt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(gt,{className:"text-sm font-medium",children:"Token消耗"}),e.jsx(Zc,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(yt,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:[(be.total_tokens/1e3).toFixed(1),"K"]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:be.tokens_per_hour>0?`${(be.tokens_per_hour/1e3).toFixed(1)}K/小时`:"暂无数据"})]})]}),e.jsxs(Ve,{children:[e.jsxs(pt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(gt,{className:"text-sm font-medium",children:"平均响应"}),e.jsx(sn,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(yt,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:[be.avg_response_time.toFixed(2),"s"]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"API平均耗时"})]})]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 sm:grid-cols-3",children:[e.jsxs(Ve,{children:[e.jsxs(pt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(gt,{className:"text-sm font-medium",children:"在线时长"}),e.jsx(Jn,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsx(yt,{children:e.jsx("div",{className:"text-xl font-bold",children:pe(be.online_time)})})]}),e.jsxs(Ve,{children:[e.jsxs(pt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(gt,{className:"text-sm font-medium",children:"消息处理"}),e.jsx(Pn,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(yt,{children:[e.jsx("div",{className:"text-xl font-bold",children:be.total_messages.toLocaleString()}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["回复 ",be.total_replies.toLocaleString()," 条"]})]})]}),e.jsxs(Ve,{children:[e.jsxs(pt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(gt,{className:"text-sm font-medium",children:"成本效率"}),e.jsx(ay,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(yt,{children:[e.jsx("div",{className:"text-xl font-bold",children:be.total_messages>0?`¥${(be.total_cost/be.total_messages*100).toFixed(2)}`:"¥0.00"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"每100条消息"})]})]})]}),e.jsxs(Aa,{defaultValue:"trends",className:"space-y-4",children:[e.jsxs(ja,{className:"grid w-full grid-cols-2 sm:grid-cols-4",children:[e.jsx(st,{value:"trends",children:"趋势"}),e.jsx(st,{value:"models",children:"模型"}),e.jsx(st,{value:"activity",children:"活动"}),e.jsx(st,{value:"daily",children:"日统计"})]}),e.jsxs(_t,{value:"trends",className:"space-y-4",children:[e.jsxs(Ve,{children:[e.jsxs(pt,{children:[e.jsx(gt,{children:"请求趋势"}),e.jsxs(Kt,{children:["最近",f,"小时的请求量变化"]})]}),e.jsx(yt,{children:e.jsx(Xn,{config:q,className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:e.jsxs(Ab,{data:se,children:[e.jsx(Rc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Lc,{dataKey:"timestamp",tickFormatter:H=>je(H),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(Wi,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{content:e.jsx(Kn,{labelFormatter:H=>je(H)})}),e.jsx(Mb,{type:"monotone",dataKey:"requests",stroke:"var(--color-requests)",strokeWidth:2})]})})})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[e.jsxs(Ve,{children:[e.jsxs(pt,{children:[e.jsx(gt,{children:"花费趋势"}),e.jsx(Kt,{children:"API调用成本变化"})]}),e.jsx(yt,{children:e.jsx(Xn,{config:q,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:e.jsxs(vu,{data:se,children:[e.jsx(Rc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Lc,{dataKey:"timestamp",tickFormatter:H=>je(H),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(Wi,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{content:e.jsx(Kn,{labelFormatter:H=>je(H)})}),e.jsx(Uc,{dataKey:"cost",fill:"var(--color-cost)"})]})})})]}),e.jsxs(Ve,{children:[e.jsxs(pt,{children:[e.jsx(gt,{children:"Token消耗"}),e.jsx(Kt,{children:"Token使用量变化"})]}),e.jsx(yt,{children:e.jsx(Xn,{config:q,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:e.jsxs(vu,{data:se,children:[e.jsx(Rc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Lc,{dataKey:"timestamp",tickFormatter:H=>je(H),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(Wi,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{content:e.jsx(Kn,{labelFormatter:H=>je(H)})}),e.jsx(Uc,{dataKey:"tokens",fill:"var(--color-tokens)"})]})})})]})]})]}),e.jsx(_t,{value:"models",className:"space-y-4",children:e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[e.jsxs(Ve,{children:[e.jsxs(pt,{children:[e.jsx(gt,{children:"模型请求分布"}),e.jsxs(Kt,{children:["各模型使用占比 (共 ",O.length," 个模型)"]})]}),e.jsx(yt,{children:e.jsx(Xn,{config:Object.fromEntries(O.map((H,ie)=>[H.model_name,{label:H.model_name,color:_e[ie]}])),className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:e.jsxs(Db,{children:[e.jsx(tr,{content:e.jsx(Kn,{})}),e.jsx(Ob,{data:y,cx:"50%",cy:"50%",labelLine:!1,label:({name:H,percent:ie})=>ie&&ie<.05?"":`${H} ${ie?(ie*100).toFixed(0):0}%`,outerRadius:100,dataKey:"value",children:y.map((H,ie)=>e.jsx(Rb,{fill:H.fill},`cell-${ie}`))})]})})})]}),e.jsxs(Ve,{children:[e.jsxs(pt,{children:[e.jsx(gt,{children:"模型详细统计"}),e.jsx(Kt,{children:"请求数、花费和性能"})]}),e.jsx(yt,{children:e.jsx(Ie,{className:"h-[300px] sm:h-[400px]",children:e.jsx("div",{className:"space-y-3",children:O.map((H,ie)=>e.jsxs("div",{className:"p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("h4",{className:"font-semibold text-sm truncate flex-1 min-w-0",children:H.model_name}),e.jsx("div",{className:"w-3 h-3 rounded-full ml-2 flex-shrink-0",style:{backgroundColor:`hsl(var(--chart-${ie%5+1}))`}})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"请求数:"}),e.jsx("span",{className:"ml-1 font-medium",children:H.request_count.toLocaleString()})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"花费:"}),e.jsxs("span",{className:"ml-1 font-medium",children:["¥",H.total_cost.toFixed(2)]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),e.jsxs("span",{className:"ml-1 font-medium",children:[(H.total_tokens/1e3).toFixed(1),"K"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"平均耗时:"}),e.jsxs("span",{className:"ml-1 font-medium",children:[H.avg_response_time.toFixed(2),"s"]})]})]})]},ie))})})})]})]})}),e.jsx(_t,{value:"activity",children:e.jsxs(Ve,{children:[e.jsxs(pt,{children:[e.jsx(gt,{children:"最近活动"}),e.jsx(Kt,{children:"最新的API调用记录"})]}),e.jsx(yt,{children:e.jsx(Ie,{className:"h-[400px] sm:h-[500px]",children:e.jsx("div",{className:"space-y-2",children:ye.map((H,ie)=>e.jsxs("div",{className:"p-3 sm:p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-2 mb-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-sm truncate",children:H.model}),e.jsx("div",{className:"text-xs text-muted-foreground",children:H.request_type})]}),e.jsx("div",{className:"text-xs text-muted-foreground flex-shrink-0",children:je(H.timestamp)})]}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-2 text-xs",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),e.jsx("span",{className:"ml-1",children:H.tokens})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"花费:"}),e.jsxs("span",{className:"ml-1",children:["¥",H.cost.toFixed(4)]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"耗时:"}),e.jsxs("span",{className:"ml-1",children:[H.time_cost.toFixed(2),"s"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"状态:"}),e.jsx("span",{className:`ml-1 ${H.status==="success"?"text-green-600":"text-red-600"}`,children:H.status})]})]})]},ie))})})})]})}),e.jsx(_t,{value:"daily",children:e.jsxs(Ve,{children:[e.jsxs(pt,{children:[e.jsx(gt,{children:"每日统计"}),e.jsx(Kt,{children:"最近7天的数据汇总"})]}),e.jsx(yt,{children:e.jsx(Xn,{config:{requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"}},className:"h-[400px] sm:h-[500px] w-full aspect-auto",children:e.jsxs(vu,{data:he,children:[e.jsx(Rc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Lc,{dataKey:"timestamp",tickFormatter:H=>{const ie=new Date(H);return`${ie.getMonth()+1}/${ie.getDate()}`},stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(Wi,{yAxisId:"left",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(Wi,{yAxisId:"right",orientation:"right",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{content:e.jsx(Kn,{labelFormatter:H=>new Date(H).toLocaleDateString("zh-CN")})}),e.jsx(bN,{content:e.jsx(hg,{})}),e.jsx(Uc,{yAxisId:"left",dataKey:"requests",fill:"var(--color-requests)"}),e.jsx(Uc,{yAxisId:"right",dataKey:"cost",fill:"var(--color-cost)"})]})})})]})})]})]})})}const EN={theme:"system",setTheme:()=>null},xg=u.createContext(EN),Hu=()=>{const n=u.useContext(xg);if(n===void 0)throw new Error("useTheme must be used within a ThemeProvider");return n},zN=(n,r,c)=>{const d=document.documentElement.classList.contains("no-animations");if(!document.startViewTransition||d){r(n);return}const h=c.clientX,x=c.clientY,f=Math.hypot(Math.max(h,innerWidth-h),Math.max(x,innerHeight-x));document.startViewTransition(()=>{r(n)}).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${h}px ${x}px)`,`circle(${f}px at ${h}px ${x}px)`]},{duration:500,easing:"ease-in-out",pseudoElement:"::view-transition-new(root)"})})},fg=u.createContext(void 0),pg=()=>{const n=u.useContext(fg);if(n===void 0)throw new Error("useAnimation must be used within an AnimationProvider");return n},Ge=u.forwardRef(({className:n,...r},c)=>e.jsx(bp,{className:K("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",n),...r,ref:c,children:e.jsx(fb,{className:K("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));Ge.displayName=bp.displayName;const AN=ei("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),N=u.forwardRef(({className:n,...r},c)=>e.jsx(Dp,{ref:c,className:K(AN(),n),...r}));N.displayName=Dp.displayName;const ce=u.forwardRef(({className:n,type:r,...c},d)=>e.jsx("input",{type:r,className:K("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",n),ref:d,...c}));ce.displayName="Input";const MN=[{id:"minLength",label:"长度至少 10 位",description:"Token 长度必须大于等于 10 个字符",validate:n=>n.length>=10},{id:"hasUppercase",label:"包含大写字母",description:"至少包含一个大写字母 (A-Z)",validate:n=>/[A-Z]/.test(n)},{id:"hasLowercase",label:"包含小写字母",description:"至少包含一个小写字母 (a-z)",validate:n=>/[a-z]/.test(n)},{id:"hasSpecialChar",label:"包含特殊符号",description:"至少包含一个特殊符号 (!@#$%^&*()_+-=[]{}|;:,.<>?/)",validate:n=>/[!@#$%^&*()_+\-=[\]{}|;:,.<>?/]/.test(n)}];function DN(n){const r=MN.map(d=>({id:d.id,label:d.label,description:d.description,passed:d.validate(n)}));return{isValid:r.every(d=>d.passed),rules:r}}const qu="0.11.6 Beta",Gu="MaiBot Dashboard",ON=`${Gu} v${qu}`,RN=(n="v")=>`${n}${qu}`,Ds={THEME:"maibot-ui-theme",ACCENT_COLOR:"accent-color",ENABLE_ANIMATIONS:"maibot-animations",ENABLE_WAVES_BACKGROUND:"maibot-waves-background",LOG_CACHE_SIZE:"maibot-log-cache-size",LOG_AUTO_SCROLL:"maibot-log-auto-scroll",LOG_FONT_SIZE:"maibot-log-font-size",LOG_LINE_SPACING:"maibot-log-line-spacing",DATA_SYNC_INTERVAL:"maibot-data-sync-interval",WS_RECONNECT_INTERVAL:"maibot-ws-reconnect-interval",WS_MAX_RECONNECT_ATTEMPTS:"maibot-ws-max-reconnect-attempts",COMPLETED_TOURS:"maibot-completed-tours"},Ca={theme:"system",accentColor:"blue",enableAnimations:!0,enableWavesBackground:!0,logCacheSize:1e3,logAutoScroll:!0,logFontSize:"xs",logLineSpacing:4,dataSyncInterval:30,wsReconnectInterval:3e3,wsMaxReconnectAttempts:10};function Ft(n){const r=gg(n),c=localStorage.getItem(r);if(c===null)return Ca[n];const d=Ca[n];if(typeof d=="boolean")return c==="true";if(typeof d=="number"){const h=parseFloat(c);return isNaN(h)?d:h}return c}function Zn(n,r){const c=gg(n);localStorage.setItem(c,String(r)),window.dispatchEvent(new CustomEvent("maibot-settings-change",{detail:{key:n,value:r}}))}function LN(){return{theme:Ft("theme"),accentColor:Ft("accentColor"),enableAnimations:Ft("enableAnimations"),enableWavesBackground:Ft("enableWavesBackground"),logCacheSize:Ft("logCacheSize"),logAutoScroll:Ft("logAutoScroll"),logFontSize:Ft("logFontSize"),logLineSpacing:Ft("logLineSpacing"),dataSyncInterval:Ft("dataSyncInterval"),wsReconnectInterval:Ft("wsReconnectInterval"),wsMaxReconnectAttempts:Ft("wsMaxReconnectAttempts")}}function UN(){const n=LN(),r=localStorage.getItem(Ds.COMPLETED_TOURS),c=r?JSON.parse(r):[];return{...n,completedTours:c}}function BN(n){const r=[],c=[];for(const[d,h]of Object.entries(n)){if(d==="completedTours"){Array.isArray(h)?(localStorage.setItem(Ds.COMPLETED_TOURS,JSON.stringify(h)),r.push("completedTours")):c.push("completedTours");continue}if(d in Ca){const x=d,f=Ca[x];if(typeof h==typeof f){if(x==="theme"&&!["light","dark","system"].includes(h)){c.push(d);continue}if(x==="logFontSize"&&!["xs","sm","base"].includes(h)){c.push(d);continue}Zn(x,h),r.push(d)}else c.push(d)}else c.push(d)}return{success:r.length>0,imported:r,skipped:c}}function HN(){for(const n of Object.keys(Ca))Zn(n,Ca[n]);localStorage.removeItem(Ds.COMPLETED_TOURS),window.dispatchEvent(new CustomEvent("maibot-settings-reset"))}function qN(){const n=[],r=[],c=[];for(let d=0;dd.size-c.size),{used:n,items:localStorage.length,details:r}}function GN(n){if(n===0)return"0 B";const r=1024,c=["B","KB","MB"],d=Math.floor(Math.log(n)/Math.log(r));return parseFloat((n/Math.pow(r,d)).toFixed(2))+" "+c[d]}function gg(n){return{theme:Ds.THEME,accentColor:Ds.ACCENT_COLOR,enableAnimations:Ds.ENABLE_ANIMATIONS,enableWavesBackground:Ds.ENABLE_WAVES_BACKGROUND,logCacheSize:Ds.LOG_CACHE_SIZE,logAutoScroll:Ds.LOG_AUTO_SCROLL,logFontSize:Ds.LOG_FONT_SIZE,logLineSpacing:Ds.LOG_LINE_SPACING,dataSyncInterval:Ds.DATA_SYNC_INTERVAL,wsReconnectInterval:Ds.WS_RECONNECT_INTERVAL,wsMaxReconnectAttempts:Ds.WS_MAX_RECONNECT_ATTEMPTS}[n]}const ka=u.forwardRef(({className:n,...r},c)=>e.jsxs(yp,{ref:c,className:K("relative flex w-full touch-none select-none items-center",n),...r,children:[e.jsx(pb,{className:"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20",children:e.jsx(gb,{className:"absolute h-full bg-primary"})}),e.jsx(jb,{className:"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"})]}));ka.displayName=yp.displayName;class VN{ws=null;reconnectTimeout=null;reconnectAttempts=0;heartbeatInterval=null;logCallbacks=new Set;connectionCallbacks=new Set;isConnected=!1;logCache=[];getMaxCacheSize(){return Ft("logCacheSize")}getMaxReconnectAttempts(){return Ft("wsMaxReconnectAttempts")}getReconnectInterval(){return Ft("wsReconnectInterval")}getWebSocketUrl(){{const r=window.location.protocol==="https:"?"wss:":"ws:",c=window.location.host;return`${r}//${c}/ws/logs`}}connect(){if(this.ws?.readyState===WebSocket.OPEN||this.ws?.readyState===WebSocket.CONNECTING)return;const r=this.getWebSocketUrl();try{this.ws=new WebSocket(r),this.ws.onopen=()=>{this.isConnected=!0,this.reconnectAttempts=0,this.notifyConnection(!0),this.startHeartbeat()},this.ws.onmessage=c=>{try{if(c.data==="pong")return;const d=JSON.parse(c.data);this.notifyLog(d)}catch(d){console.error("解析日志消息失败:",d)}},this.ws.onerror=c=>{console.error("❌ WebSocket 错误:",c),this.isConnected=!1,this.notifyConnection(!1)},this.ws.onclose=()=>{this.isConnected=!1,this.notifyConnection(!1),this.stopHeartbeat(),this.attemptReconnect()}}catch(c){console.error("创建 WebSocket 连接失败:",c),this.attemptReconnect()}}attemptReconnect(){const r=this.getMaxReconnectAttempts();if(this.reconnectAttempts>=r)return;this.reconnectAttempts+=1;const c=this.getReconnectInterval(),d=Math.min(c*this.reconnectAttempts,3e4);this.reconnectTimeout=window.setTimeout(()=>{this.connect()},d)}startHeartbeat(){this.heartbeatInterval=window.setInterval(()=>{this.ws?.readyState===WebSocket.OPEN&&this.ws.send("ping")},3e4)}stopHeartbeat(){this.heartbeatInterval!==null&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}disconnect(){this.reconnectTimeout!==null&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.stopHeartbeat(),this.ws&&(this.ws.close(),this.ws=null),this.isConnected=!1,this.reconnectAttempts=0}onLog(r){return this.logCallbacks.add(r),()=>this.logCallbacks.delete(r)}onConnectionChange(r){return this.connectionCallbacks.add(r),r(this.isConnected),()=>this.connectionCallbacks.delete(r)}notifyLog(r){if(!this.logCache.some(d=>d.id===r.id)){this.logCache.push(r);const d=this.getMaxCacheSize();this.logCache.length>d&&(this.logCache=this.logCache.slice(-d)),this.logCallbacks.forEach(h=>{try{h(r)}catch(x){console.error("日志回调执行失败:",x)}})}}notifyConnection(r){this.connectionCallbacks.forEach(c=>{try{c(r)}catch(d){console.error("连接状态回调执行失败:",d)}})}getAllLogs(){return[...this.logCache]}clearLogs(){this.logCache=[]}getConnectionStatus(){return this.isConnected}}const tn=new VN;typeof window<"u"&&tn.connect();const Qt=Hb,Vu=qb,FN=Ub,jg=u.forwardRef(({className:n,...r},c)=>e.jsx(Op,{ref:c,className:K("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...r}));jg.displayName=Op.displayName;const Ut=u.forwardRef(({className:n,children:r,preventOutsideClose:c=!1,...d},h)=>e.jsxs(FN,{children:[e.jsx(jg,{}),e.jsxs(Rp,{ref:h,className:K("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",n),onPointerDownOutside:c?x=>x.preventDefault():void 0,onInteractOutside:c?x=>x.preventDefault():void 0,...d,children:[r,e.jsxs(Bb,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[e.jsx(si,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Ut.displayName=Rp.displayName;const Bt=({className:n,...r})=>e.jsx("div",{className:K("flex flex-col space-y-1.5 text-center sm:text-left",n),...r});Bt.displayName="DialogHeader";const os=({className:n,...r})=>e.jsx("div",{className:K("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",n),...r});os.displayName="DialogFooter";const Ht=u.forwardRef(({className:n,...r},c)=>e.jsx(Lp,{ref:c,className:K("text-lg font-semibold leading-none tracking-tight",n),...r}));Ht.displayName=Lp.displayName;const ss=u.forwardRef(({className:n,...r},c)=>e.jsx(Up,{ref:c,className:K("text-sm text-muted-foreground",n),...r}));ss.displayName=Up.displayName;const ft=bb,$t=yb,$N=vb,vg=u.forwardRef(({className:n,...r},c)=>e.jsx(Np,{className:K("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...r,ref:c}));vg.displayName=Np.displayName;const it=u.forwardRef(({className:n,...r},c)=>e.jsxs($N,{children:[e.jsx(vg,{}),e.jsx(wp,{ref:c,className:K("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",n),...r})]}));it.displayName=wp.displayName;const rt=({className:n,...r})=>e.jsx("div",{className:K("flex flex-col space-y-2 text-center sm:text-left",n),...r});rt.displayName="AlertDialogHeader";const ct=({className:n,...r})=>e.jsx("div",{className:K("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",n),...r});ct.displayName="AlertDialogFooter";const ot=u.forwardRef(({className:n,...r},c)=>e.jsx(_p,{ref:c,className:K("text-lg font-semibold",n),...r}));ot.displayName=_p.displayName;const dt=u.forwardRef(({className:n,...r},c)=>e.jsx(Sp,{ref:c,className:K("text-sm text-muted-foreground",n),...r}));dt.displayName=Sp.displayName;const ut=u.forwardRef(({className:n,...r},c)=>e.jsx(Cp,{ref:c,className:K(ur(),n),...r}));ut.displayName=Cp.displayName;const mt=u.forwardRef(({className:n,...r},c)=>e.jsx(kp,{ref:c,className:K(ur({variant:"outline"}),"mt-2 sm:mt-0",n),...r}));mt.displayName=kp.displayName;function QN(){return e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"系统设置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理您的应用偏好设置"})]})}),e.jsxs(Aa,{defaultValue:"appearance",className:"w-full",children:[e.jsxs(ja,{className:"grid w-full grid-cols-2 sm:grid-cols-4 gap-0.5 sm:gap-1 h-auto p-1",children:[e.jsxs(st,{value:"appearance",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(ly,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"外观"})]}),e.jsxs(st,{value:"security",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(ny,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"安全"})]}),e.jsxs(st,{value:"other",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(ti,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"其他"})]}),e.jsxs(st,{value:"about",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(za,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"关于"})]})]}),e.jsxs(Ie,{className:"h-[calc(100vh-240px)] sm:h-[calc(100vh-280px)] mt-4 sm:mt-6",children:[e.jsx(_t,{value:"appearance",className:"mt-0",children:e.jsx(YN,{})}),e.jsx(_t,{value:"security",className:"mt-0",children:e.jsx(XN,{})}),e.jsx(_t,{value:"other",className:"mt-0",children:e.jsx(KN,{})}),e.jsx(_t,{value:"about",className:"mt-0",children:e.jsx(ZN,{})})]})]})]})}function If(n){const r=document.documentElement,d={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[n];if(d)r.style.setProperty("--primary",d.hsl),d.gradient?(r.style.setProperty("--primary-gradient",d.gradient),r.classList.add("has-gradient")):(r.style.removeProperty("--primary-gradient"),r.classList.remove("has-gradient"));else if(n.startsWith("#")){const h=x=>{x=x.replace("#","");const f=parseInt(x.substring(0,2),16)/255,j=parseInt(x.substring(2,4),16)/255,p=parseInt(x.substring(4,6),16)/255,w=Math.max(f,j,p),v=Math.min(f,j,p);let k=0,T=0;const E=(w+v)/2;if(w!==v){const R=w-v;switch(T=E>.5?R/(2-w-v):R/(w+v),w){case f:k=((j-p)/R+(jlocalStorage.getItem("accent-color")||"blue");u.useEffect(()=>{const w=localStorage.getItem("accent-color")||"blue";If(w)},[]);const p=w=>{j(w),localStorage.setItem("accent-color",w),If(w)};return e.jsxs("div",{className:"space-y-6 sm:space-y-8",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题模式"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 sm:gap-4",children:[e.jsx(Cu,{value:"light",current:n,onChange:r,label:"浅色",description:"始终使用浅色主题"}),e.jsx(Cu,{value:"dark",current:n,onChange:r,label:"深色",description:"始终使用深色主题"}),e.jsx(Cu,{value:"system",current:n,onChange:r,label:"跟随系统",description:"根据系统设置自动切换"})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题色"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"单色"}),e.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[e.jsx(ca,{value:"blue",current:f,onChange:p,label:"蓝色",colorClass:"bg-blue-500"}),e.jsx(ca,{value:"purple",current:f,onChange:p,label:"紫色",colorClass:"bg-purple-500"}),e.jsx(ca,{value:"green",current:f,onChange:p,label:"绿色",colorClass:"bg-green-500"}),e.jsx(ca,{value:"orange",current:f,onChange:p,label:"橙色",colorClass:"bg-orange-500"}),e.jsx(ca,{value:"pink",current:f,onChange:p,label:"粉色",colorClass:"bg-pink-500"}),e.jsx(ca,{value:"red",current:f,onChange:p,label:"红色",colorClass:"bg-red-500"})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"渐变色"}),e.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[e.jsx(ca,{value:"gradient-sunset",current:f,onChange:p,label:"日落",colorClass:"bg-gradient-to-r from-orange-500 to-pink-500"}),e.jsx(ca,{value:"gradient-ocean",current:f,onChange:p,label:"海洋",colorClass:"bg-gradient-to-r from-blue-500 to-cyan-500"}),e.jsx(ca,{value:"gradient-forest",current:f,onChange:p,label:"森林",colorClass:"bg-gradient-to-r from-green-500 to-emerald-500"}),e.jsx(ca,{value:"gradient-aurora",current:f,onChange:p,label:"极光",colorClass:"bg-gradient-to-r from-purple-500 to-pink-500"}),e.jsx(ca,{value:"gradient-fire",current:f,onChange:p,label:"烈焰",colorClass:"bg-gradient-to-r from-red-500 to-orange-500"}),e.jsx(ca,{value:"gradient-twilight",current:f,onChange:p,label:"暮光",colorClass:"bg-gradient-to-r from-indigo-500 to-purple-500"})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"自定义颜色"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 sm:gap-4",children:[e.jsx("div",{className:"flex-1",children:e.jsx("input",{type:"color",value:f.startsWith("#")?f:"#3b82f6",onChange:w=>p(w.target.value),className:"h-10 sm:h-12 w-full rounded-lg border-2 border-border cursor-pointer",title:"选择自定义颜色"})}),e.jsx("div",{className:"flex-1",children:e.jsx(ce,{type:"text",value:f,onChange:w=>p(w.target.value),placeholder:"#3b82f6",className:"font-mono text-sm"})})]}),e.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground mt-2",children:"点击色块选择颜色,或手动输入 HEX 颜色代码"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"动画效果"}),e.jsxs("div",{className:"space-y-2 sm:space-y-3",children:[e.jsx("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5 flex-1",children:[e.jsx(N,{htmlFor:"animations",className:"text-base font-medium cursor-pointer",children:"启用动画效果"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后将禁用所有过渡动画和特效,提升性能"})]}),e.jsx(Ge,{id:"animations",checked:c,onCheckedChange:d})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5 flex-1",children:[e.jsx(N,{htmlFor:"waves-background",className:"text-base font-medium cursor-pointer",children:"登录页波浪背景"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后登录页将使用纯色背景,适合低性能设备"})]}),e.jsx(Ge,{id:"waves-background",checked:h,onCheckedChange:x})]})})]})]})]})}function XN(){const n=ua(),[r,c]=u.useState(""),[d,h]=u.useState(""),[x,f]=u.useState(!1),[j,p]=u.useState(!1),[w,v]=u.useState(!1),[k,T]=u.useState(!1),[E,R]=u.useState(!1),[F,U]=u.useState(!1),[M,Z]=u.useState(""),[G,z]=u.useState(!1),{toast:B}=Rt(),X=u.useMemo(()=>DN(d),[d]),S=async pe=>{if(!r){B({title:"无法复制",description:"Token 存储在安全 Cookie 中,请重新生成以获取新 Token",variant:"destructive"});return}try{await navigator.clipboard.writeText(pe),R(!0),B({title:"复制成功",description:"Token 已复制到剪贴板"}),setTimeout(()=>R(!1),2e3)}catch{B({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},O=async()=>{if(!d.trim()){B({title:"输入错误",description:"请输入新的 Token",variant:"destructive"});return}if(!X.isValid){const pe=X.rules.filter(je=>!je.passed).map(je=>je.label).join(", ");B({title:"格式错误",description:`Token 不符合要求: ${pe}`,variant:"destructive"});return}v(!0);try{const pe=await fetch("/api/webui/auth/update",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({new_token:d.trim()})}),je=await pe.json();pe.ok&&je.success?(h(""),c(d.trim()),B({title:"更新成功",description:"Access Token 已更新,即将跳转到登录页"}),setTimeout(()=>{n({to:"/auth"})},1500)):B({title:"更新失败",description:je.message||"无法更新 Token",variant:"destructive"})}catch(pe){console.error("更新 Token 错误:",pe),B({title:"更新失败",description:"连接服务器失败",variant:"destructive"})}finally{v(!1)}},se=async()=>{T(!0);try{const pe=await fetch("/api/webui/auth/regenerate",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include"}),je=await pe.json();pe.ok&&je.success?(c(je.token),Z(je.token),U(!0),z(!1),B({title:"生成成功",description:"新的 Access Token 已生成,请及时保存"})):B({title:"生成失败",description:je.message||"无法生成新 Token",variant:"destructive"})}catch(pe){console.error("生成 Token 错误:",pe),B({title:"生成失败",description:"连接服务器失败",variant:"destructive"})}finally{T(!1)}},he=async()=>{try{await navigator.clipboard.writeText(M),z(!0),B({title:"复制成功",description:"Token 已复制到剪贴板"})}catch{B({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},ye=()=>{U(!1),setTimeout(()=>{Z(""),z(!1)},300),setTimeout(()=>{n({to:"/auth"})},500)},be=pe=>{pe||ye()};return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsx(Qt,{open:F,onOpenChange:be,children:e.jsxs(Ut,{className:"sm:max-w-md",children:[e.jsxs(Bt,{children:[e.jsxs(Ht,{className:"flex items-center gap-2",children:[e.jsx(pa,{className:"h-5 w-5 text-yellow-500"}),"新的 Access Token"]}),e.jsx(ss,{children:"这是您的新 Token,请立即保存。关闭此窗口后将跳转到登录页面。"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"rounded-lg border-2 border-primary/20 bg-primary/5 p-4",children:[e.jsx(N,{className:"text-xs text-muted-foreground mb-2 block",children:"您的新 Token (64位安全令牌)"}),e.jsx("div",{className:"font-mono text-sm break-all select-all bg-background p-3 rounded border",children:M})]}),e.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(pa,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5"}),e.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[e.jsx("p",{className:"font-semibold",children:"重要提示"}),e.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[e.jsx("li",{children:"此 Token 仅显示一次,关闭后无法再查看"}),e.jsx("li",{children:"请立即复制并保存到安全的位置"}),e.jsx("li",{children:"关闭窗口后将自动跳转到登录页面"}),e.jsx("li",{children:"请使用新 Token 重新登录系统"})]})]})]})})]}),e.jsxs(os,{className:"gap-2 sm:gap-0",children:[e.jsx(b,{variant:"outline",onClick:he,className:"gap-2",children:G?e.jsxs(e.Fragment,{children:[e.jsx(ga,{className:"h-4 w-4 text-green-500"}),"已复制"]}):e.jsxs(e.Fragment,{children:[e.jsx(Jc,{className:"h-4 w-4"}),"复制 Token"]})}),e.jsx(b,{onClick:ye,children:"我已保存,关闭"})]})]})}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"当前 Access Token"}),e.jsx("div",{className:"space-y-3 sm:space-y-4",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"current-token",className:"text-sm",children:"您的访问令牌"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(ce,{id:"current-token",type:x?"text":"password",value:r||"••••••••••••••••••••••••••••••••",readOnly:!0,className:"pr-10 font-mono text-sm",placeholder:"Token 存储在安全 Cookie 中"}),e.jsx("button",{onClick:()=>{r?f(!x):B({title:"无法查看",description:'Token 存储在安全 Cookie 中,如需新 Token 请点击"重新生成"'})},className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:x?"隐藏":"显示",children:x?e.jsx(rr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Ys,{className:"h-4 w-4 text-muted-foreground"})})]}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[e.jsx(b,{variant:"outline",size:"icon",onClick:()=>S(r),title:"复制到剪贴板",className:"flex-shrink-0",disabled:!r,children:E?e.jsx(ga,{className:"h-4 w-4 text-green-500"}):e.jsx(Jc,{className:"h-4 w-4"})}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsxs(b,{variant:"outline",disabled:k,className:"gap-2 flex-1 sm:flex-none",children:[e.jsx(ps,{className:K("h-4 w-4",k&&"animate-spin")}),e.jsx("span",{className:"hidden sm:inline",children:"重新生成"}),e.jsx("span",{className:"sm:hidden",children:"生成"})]})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认重新生成 Token"}),e.jsx(dt,{children:"这将生成一个新的 64 位安全令牌,并使当前 Token 立即失效。 您需要使用新 Token 重新登录系统。此操作不可撤销,确定要继续吗?"})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:se,children:"确认生成"})]})]})]})]})]}),e.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground",children:"请妥善保管您的 Access Token,不要泄露给他人"})]})})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"自定义 Access Token"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"new-token",className:"text-sm",children:"新的访问令牌"}),e.jsxs("div",{className:"relative",children:[e.jsx(ce,{id:"new-token",type:j?"text":"password",value:d,onChange:pe=>h(pe.target.value),className:"pr-10 font-mono text-sm",placeholder:"输入自定义 Token"}),e.jsx("button",{onClick:()=>p(!j),className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:j?"隐藏":"显示",children:j?e.jsx(rr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Ys,{className:"h-4 w-4 text-muted-foreground"})})]}),d&&e.jsxs("div",{className:"mt-3 space-y-2 p-3 rounded-lg bg-muted/50",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"Token 安全要求:"}),e.jsx("div",{className:"space-y-1.5",children:X.rules.map(pe=>e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[pe.passed?e.jsx(oa,{className:"h-4 w-4 text-green-500 flex-shrink-0"}):e.jsx(Wp,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),e.jsx("span",{className:K(pe.passed?"text-green-600 dark:text-green-400":"text-muted-foreground"),children:pe.label})]},pe.id))}),X.isValid&&e.jsx("div",{className:"mt-2 pt-2 border-t border-border",children:e.jsxs("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[e.jsx(ga,{className:"h-4 w-4"}),e.jsx("span",{className:"font-medium",children:"Token 格式正确,可以使用"})]})})]})]}),e.jsx(b,{onClick:O,disabled:w||!X.isValid||!d,className:"w-full sm:w-auto",children:w?"更新中...":"更新自定义 Token"})]})]}),e.jsxs("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3 sm:p-4",children:[e.jsx("h4",{className:"text-sm sm:text-base font-semibold text-yellow-900 dark:text-yellow-200 mb-2",children:"安全提示"}),e.jsxs("ul",{className:"text-xs sm:text-sm text-yellow-800 dark:text-yellow-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"重新生成 Token 会创建系统随机生成的 64 位安全令牌"}),e.jsx("li",{children:"自定义 Token 必须满足所有安全要求才能使用"}),e.jsx("li",{children:"更新 Token 后,旧的 Token 将立即失效"}),e.jsx("li",{children:"请在安全的环境下查看和复制 Token"}),e.jsx("li",{children:"如果怀疑 Token 泄露,请立即重新生成或更新"}),e.jsx("li",{children:"建议使用系统生成的 Token 以获得最高安全性"})]})]})]})}function KN(){const n=ua(),{toast:r}=Rt(),[c,d]=u.useState(!1),[h,x]=u.useState(!1),[f,j]=u.useState(()=>Ft("logCacheSize")),[p,w]=u.useState(()=>Ft("wsReconnectInterval")),[v,k]=u.useState(()=>Ft("wsMaxReconnectAttempts")),[T,E]=u.useState(()=>Ft("dataSyncInterval")),[R,F]=u.useState(()=>Jf()),[U,M]=u.useState(!1),[Z,G]=u.useState(!1),z=u.useRef(null);if(h)throw new Error("这是一个手动触发的测试错误,用于验证错误边界组件是否正常工作。");const B=()=>{F(Jf())},X=y=>{const q=y[0];j(q),Zn("logCacheSize",q)},S=y=>{const q=y[0];w(q),Zn("wsReconnectInterval",q)},O=y=>{const q=y[0];k(q),Zn("wsMaxReconnectAttempts",q)},se=y=>{const q=y[0];E(q),Zn("dataSyncInterval",q)},he=()=>{tn.clearLogs(),r({title:"日志已清除",description:"日志缓存已清空"})},ye=()=>{const y=qN();B(),r({title:"缓存已清除",description:`已清除 ${y.clearedKeys.length} 项缓存数据`})},be=()=>{M(!0);try{const y=UN(),q=JSON.stringify(y,null,2),H=new Blob([q],{type:"application/json"}),ie=URL.createObjectURL(H),_=document.createElement("a");_.href=ie,_.download=`maibot-webui-settings-${new Date().toISOString().slice(0,10)}.json`,document.body.appendChild(_),_.click(),document.body.removeChild(_),URL.revokeObjectURL(ie),r({title:"导出成功",description:"设置已导出为 JSON 文件"})}catch(y){console.error("导出设置失败:",y),r({title:"导出失败",description:"无法导出设置",variant:"destructive"})}finally{M(!1)}},pe=y=>{const q=y.target.files?.[0];if(!q)return;G(!0);const H=new FileReader;H.onload=ie=>{try{const _=ie.target?.result,me=JSON.parse(_),xe=BN(me);xe.success?(j(Ft("logCacheSize")),w(Ft("wsReconnectInterval")),k(Ft("wsMaxReconnectAttempts")),E(Ft("dataSyncInterval")),B(),r({title:"导入成功",description:`成功导入 ${xe.imported.length} 项设置${xe.skipped.length>0?`,跳过 ${xe.skipped.length} 项`:""}`}),(xe.imported.includes("theme")||xe.imported.includes("accentColor"))&&r({title:"提示",description:"部分设置需要刷新页面才能完全生效"})):r({title:"导入失败",description:"没有有效的设置项可导入",variant:"destructive"})}catch(_){console.error("导入设置失败:",_),r({title:"导入失败",description:"文件格式无效",variant:"destructive"})}finally{G(!1),z.current&&(z.current.value="")}},H.readAsText(q)},je=()=>{HN(),j(Ca.logCacheSize),w(Ca.wsReconnectInterval),k(Ca.wsMaxReconnectAttempts),E(Ca.dataSyncInterval),B(),r({title:"已重置",description:"所有设置已恢复为默认值,刷新页面以应用更改"})},_e=async()=>{d(!0);try{const y=localStorage.getItem("access-token"),q=await fetch("/api/webui/setup/reset",{method:"POST",headers:{Authorization:`Bearer ${y}`}}),H=await q.json();q.ok&&H.success?(r({title:"重置成功",description:"即将进入初次配置向导"}),setTimeout(()=>{n({to:"/setup"})},1e3)):r({title:"重置失败",description:H.message||"无法重置配置状态",variant:"destructive"})}catch(y){console.error("重置配置状态错误:",y),r({title:"重置失败",description:"连接服务器失败",variant:"destructive"})}finally{d(!1)}};return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(Zc,{className:"h-5 w-5"}),"性能与存储"]}),e.jsxs("div",{className:"space-y-4 sm:space-y-5",children:[e.jsxs("div",{className:"rounded-lg bg-muted/50 p-3 sm:p-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("span",{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(iy,{className:"h-4 w-4"}),"本地存储使用"]}),e.jsx(b,{variant:"ghost",size:"sm",onClick:B,className:"h-7 px-2",children:e.jsx(ps,{className:"h-3 w-3"})})]}),e.jsx("div",{className:"text-2xl font-bold text-primary",children:GN(R.used)}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:[R.items," 个存储项"]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{className:"text-sm font-medium",children:"日志缓存大小"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[f," 条"]})]}),e.jsx(ka,{value:[f],onValueChange:X,min:100,max:5e3,step:100,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"控制日志查看器最多缓存的日志条数,较大的值会占用更多内存"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{className:"text-sm font-medium",children:"首页数据刷新间隔"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[T," 秒"]})]}),e.jsx(ka,{value:[T],onValueChange:se,min:10,max:120,step:5,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"控制首页统计数据的自动刷新间隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{className:"text-sm font-medium",children:"WebSocket 重连间隔"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[p/1e3," 秒"]})]}),e.jsx(ka,{value:[p],onValueChange:S,min:1e3,max:1e4,step:500,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"日志 WebSocket 连接断开后的重连基础间隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{className:"text-sm font-medium",children:"WebSocket 最大重连次数"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[v," 次"]})]}),e.jsx(ka,{value:[v],onValueChange:O,min:3,max:30,step:1,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"连接失败后的最大重连尝试次数"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2 pt-2",children:[e.jsxs(b,{variant:"outline",size:"sm",onClick:he,className:"gap-2",children:[e.jsx(Pe,{className:"h-4 w-4"}),"清除日志缓存"]}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",className:"gap-2",children:[e.jsx(Pe,{className:"h-4 w-4"}),"清除本地缓存"]})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认清除本地缓存"}),e.jsx(dt,{children:"这将清除所有本地缓存的设置和数据(不包括登录凭证)。 您可能需要重新配置部分偏好设置。确定要继续吗?"})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:ye,children:"确认清除"})]})]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(sl,{className:"h-5 w-5"}),"导入/导出设置"]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"导出当前的界面设置以便备份,或从之前导出的文件中恢复设置。"}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(b,{variant:"outline",onClick:be,disabled:U,className:"gap-2",children:[e.jsx(sl,{className:"h-4 w-4"}),U?"导出中...":"导出设置"]}),e.jsx("input",{ref:z,type:"file",accept:".json",onChange:pe,className:"hidden"}),e.jsxs(b,{variant:"outline",onClick:()=>z.current?.click(),disabled:Z,className:"gap-2",children:[e.jsx(cr,{className:"h-4 w-4"}),Z?"导入中...":"导入设置"]})]}),e.jsx("div",{className:"pt-2 border-t",children:e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",className:"gap-2 text-destructive hover:text-destructive",children:[e.jsx(Kc,{className:"h-4 w-4"}),"重置所有设置为默认值"]})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认重置所有设置"}),e.jsx(dt,{children:"这将把所有界面设置恢复为默认值,包括主题、颜色、动画等偏好设置。 此操作不会影响您的登录状态。确定要继续吗?"})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:je,children:"确认重置"})]})]})]})})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"配置向导"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsx("div",{className:"space-y-2",children:e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"重新进行初次配置向导,可以帮助您重新设置系统的基础配置。"})}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsxs(b,{variant:"outline",disabled:c,className:"gap-2",children:[e.jsx(Kc,{className:K("h-4 w-4",c&&"animate-spin")}),"重新进行初次配置"]})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认重新配置"}),e.jsx(dt,{children:"这将带您重新进入初次配置向导。您可以重新设置系统的基础配置项。确定要继续吗?"})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:_e,children:"确认重置"})]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border border-dashed border-yellow-500/50 bg-yellow-500/5 p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(pa,{className:"h-5 w-5 text-yellow-500"}),"开发者工具"]}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsx("div",{className:"space-y-2",children:e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"以下功能仅供开发调试使用,可能会导致页面崩溃或异常。"})}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsxs(b,{variant:"destructive",className:"gap-2",children:[e.jsx(pa,{className:"h-4 w-4"}),"触发测试错误"]})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认触发错误"}),e.jsx(dt,{children:"这将手动触发一个 React 错误,用于测试错误边界组件的显示效果。 页面将显示错误界面,您可以通过刷新页面或点击返回首页来恢复。"})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>x(!0),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认触发"})]})]})]})]})]})]})}function ZN(){return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsx("div",{className:"rounded-lg border-2 border-primary/30 bg-gradient-to-r from-primary/5 to-primary/10 p-4 sm:p-6",children:e.jsxs("div",{className:"flex items-start gap-3 sm:gap-4",children:[e.jsx("div",{className:"flex-shrink-0 rounded-lg bg-primary/10 p-2 sm:p-3",children:e.jsx("svg",{className:"h-6 w-6 sm:h-8 sm:w-8 text-primary",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:"text-lg sm:text-xl font-bold text-foreground mb-2",children:"开源项目"}),e.jsx("p",{className:"text-sm sm:text-base text-muted-foreground mb-3",children:"本项目在 GitHub 开源,欢迎 Star ⭐ 支持!"}),e.jsxs("a",{href:"https://github.com/Mai-with-u/MaiBot-Dashboard",target:"_blank",rel:"noopener noreferrer",className:K("inline-flex items-center gap-2 px-4 py-2 rounded-lg","bg-primary text-primary-foreground font-medium text-sm","hover:bg-primary/90 transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"),children:[e.jsx("svg",{className:"h-4 w-4",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})}),"前往 GitHub",e.jsx("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})})]})]})]})}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:["关于 ",Gu]}),e.jsxs("div",{className:"space-y-2 text-xs sm:text-sm text-muted-foreground",children:[e.jsxs("p",{children:["版本: ",qu]}),e.jsx("p",{children:"麦麦(MaiBot)的现代化 Web 管理界面"})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"作者"}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"MaiBot 核心"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"Mai-with-u"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"WebUI"}),e.jsxs("p",{className:"text-xs sm:text-sm text-muted-foreground",children:["Mai-with-u ",e.jsx("a",{href:"https://github.com/DrSmoothl",target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"@MotricSeven"})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"技术栈"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-xs sm:text-sm text-muted-foreground",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"前端框架"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"React 19.2.0"}),e.jsx("li",{children:"TypeScript 5.7.2"}),e.jsx("li",{children:"Vite 6.0.7"}),e.jsx("li",{children:"TanStack Router 1.94.2"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"UI 组件"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"shadcn/ui"}),e.jsx("li",{children:"Radix UI"}),e.jsx("li",{children:"Tailwind CSS 3.4.17"}),e.jsx("li",{children:"Lucide Icons"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"后端"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"Python 3.12+"}),e.jsx("li",{children:"FastAPI"}),e.jsx("li",{children:"Uvicorn"}),e.jsx("li",{children:"WebSocket"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"构建工具"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"Bun / npm"}),e.jsx("li",{children:"ESLint 9.17.0"}),e.jsx("li",{children:"PostCSS"})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源库感谢"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mb-3",children:"本项目使用了以下优秀的开源库,感谢他们的贡献:"}),e.jsx(Ie,{className:"h-[300px] sm:h-[400px]",children:e.jsxs("div",{className:"space-y-4 pr-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"UI 框架与组件"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Lt,{name:"React",description:"用户界面构建库",license:"MIT"}),e.jsx(Lt,{name:"shadcn/ui",description:"优雅的 React 组件库",license:"MIT"}),e.jsx(Lt,{name:"Radix UI",description:"无样式的可访问组件库",license:"MIT"}),e.jsx(Lt,{name:"Tailwind CSS",description:"实用优先的 CSS 框架",license:"MIT"}),e.jsx(Lt,{name:"Lucide React",description:"精美的图标库",license:"ISC"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"路由与状态管理"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Lt,{name:"TanStack Router",description:"类型安全的路由库",license:"MIT"}),e.jsx(Lt,{name:"Zustand",description:"轻量级状态管理",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"表单处理"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Lt,{name:"React Hook Form",description:"高性能表单库",license:"MIT"}),e.jsx(Lt,{name:"Zod",description:"TypeScript 优先的 schema 验证",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"工具库"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Lt,{name:"clsx",description:"条件 className 构建工具",license:"MIT"}),e.jsx(Lt,{name:"tailwind-merge",description:"Tailwind 类名合并工具",license:"MIT"}),e.jsx(Lt,{name:"class-variance-authority",description:"组件变体管理",license:"Apache-2.0"}),e.jsx(Lt,{name:"date-fns",description:"现代化日期处理库",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"动画效果"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Lt,{name:"Framer Motion",description:"React 动画库",license:"MIT"}),e.jsx(Lt,{name:"vaul",description:"抽屉组件动画",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"后端框架"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Lt,{name:"FastAPI",description:"现代化 Python Web 框架",license:"MIT"}),e.jsx(Lt,{name:"Uvicorn",description:"ASGI 服务器",license:"BSD-3-Clause"}),e.jsx(Lt,{name:"Pydantic",description:"数据验证库",license:"MIT"}),e.jsx(Lt,{name:"python-multipart",description:"文件上传支持",license:"Apache-2.0"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"开发工具"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Lt,{name:"TypeScript",description:"JavaScript 的超集",license:"Apache-2.0"}),e.jsx(Lt,{name:"Vite",description:"下一代前端构建工具",license:"MIT"}),e.jsx(Lt,{name:"ESLint",description:"JavaScript 代码检查工具",license:"MIT"}),e.jsx(Lt,{name:"PostCSS",description:"CSS 转换工具",license:"MIT"})]})]})]})})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源许可"}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"rounded-lg bg-primary/5 border border-primary/20 p-3 sm:p-4",children:e.jsxs("div",{className:"flex items-start gap-2 sm:gap-3",children:[e.jsx("div",{className:"flex-shrink-0 mt-0.5",children:e.jsx("div",{className:"rounded-md bg-primary/10 px-2 py-1",children:e.jsx("span",{className:"text-xs sm:text-sm font-bold text-primary",children:"GPLv3"})})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm sm:text-base font-semibold text-foreground mb-1",children:"MaiBot WebUI"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目采用 GNU General Public License v3.0 开源许可证。 您可以自由地使用、修改和分发本软件,但必须保持相同的开源许可。"})]})]})}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目依赖的所有开源库均遵循各自的开源许可证(MIT、Apache-2.0、BSD 等)。 感谢所有开源贡献者的无私奉献。"})]})]})]})}function Lt({name:n,description:r,license:c}){return e.jsxs("div",{className:"flex items-start justify-between gap-2 rounded-lg border bg-muted/30 p-2.5 sm:p-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium text-foreground truncate",children:n}),e.jsx("p",{className:"text-muted-foreground text-xs mt-0.5",children:r})]}),e.jsx("span",{className:"inline-flex items-center rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-medium text-primary flex-shrink-0",children:c})]})}function Cu({value:n,current:r,onChange:c,label:d,description:h}){const x=r===n;return e.jsxs("button",{onClick:()=>c(n),className:K("relative rounded-lg border-2 p-3 sm:p-4 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",x?"border-primary bg-accent":"border-border"),children:[x&&e.jsx("div",{className:"absolute top-2 right-2 sm:top-3 sm:right-3 h-2 w-2 rounded-full bg-primary"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-sm sm:text-base font-medium",children:d}),e.jsx("div",{className:"text-[10px] sm:text-xs text-muted-foreground",children:h})]}),e.jsxs("div",{className:"mt-2 sm:mt-3 flex gap-1",children:[n==="light"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-200"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-300"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-400"})]}),n==="dark"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-700"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-800"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-900"})]}),n==="system"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-200 to-slate-700"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-300 to-slate-800"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-400 to-slate-900"})]})]})]})}function ca({value:n,current:r,onChange:c,label:d,colorClass:h}){const x=r===n;return e.jsxs("button",{onClick:()=>c(n),className:K("relative rounded-lg border-2 p-2 sm:p-3 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",x?"border-primary bg-accent":"border-border"),children:[x&&e.jsx("div",{className:"absolute top-1.5 right-1.5 sm:top-2 sm:right-2 h-1.5 w-1.5 sm:h-2 sm:w-2 rounded-full bg-primary"}),e.jsxs("div",{className:"flex flex-col items-center gap-1.5 sm:gap-2",children:[e.jsx("div",{className:K("h-8 w-8 sm:h-10 sm:w-10 rounded-full",h)}),e.jsx("div",{className:"text-[10px] sm:text-xs font-medium text-center",children:d})]})]})}class JN{grad3;p;perm;constructor(r=0){this.grad3=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],this.p=[];for(let c=0;c<256;c++)this.p[c]=Math.floor(Math.random()*256);this.perm=[];for(let c=0;c<512;c++)this.perm[c]=this.p[c&255]}dot(r,c,d){return r[0]*c+r[1]*d}mix(r,c,d){return(1-d)*r+d*c}fade(r){return r*r*r*(r*(r*6-15)+10)}perlin2(r,c){const d=Math.floor(r)&255,h=Math.floor(c)&255;r-=Math.floor(r),c-=Math.floor(c);const x=this.fade(r),f=this.fade(c),j=this.perm[d]+h,p=this.perm[j],w=this.perm[j+1],v=this.perm[d+1]+h,k=this.perm[v],T=this.perm[v+1];return this.mix(this.mix(this.dot(this.grad3[p%12],r,c),this.dot(this.grad3[k%12],r-1,c),x),this.mix(this.dot(this.grad3[w%12],r,c-1),this.dot(this.grad3[T%12],r-1,c-1),x),f)}}function Pf(){const n=u.useRef(null),r=u.useRef(null),c=u.useRef(void 0),d=u.useRef({mouse:{x:-10,y:0,lx:0,ly:0,sx:0,sy:0,v:0,vs:0,a:0,set:!1},lines:[],paths:[],noise:new JN(Math.random()),bounding:null});return u.useEffect(()=>{const h=r.current,x=n.current;if(!h||!x)return;const f=d.current,j=()=>{const F=h.getBoundingClientRect();f.bounding=F,x.style.width=`${F.width}px`,x.style.height=`${F.height}px`},p=()=>{if(!f.bounding)return;const{width:F,height:U}=f.bounding;f.lines=[],f.paths.forEach(se=>se.remove()),f.paths=[];const M=10,Z=32,G=F+200,z=U+30,B=Math.ceil(G/M),X=Math.ceil(z/Z),S=(F-M*B)/2,O=(U-Z*X)/2;for(let se=0;se<=B;se++){const he=[];for(let be=0;be<=X;be++){const pe={x:S+M*se,y:O+Z*be,wave:{x:0,y:0},cursor:{x:0,y:0,vx:0,vy:0}};he.push(pe)}const ye=document.createElementNS("http://www.w3.org/2000/svg","path");x.appendChild(ye),f.paths.push(ye),f.lines.push(he)}},w=F=>{const{lines:U,mouse:M,noise:Z}=f;U.forEach(G=>{G.forEach(z=>{const B=Z.perlin2((z.x+F*.0125)*.002,(z.y+F*.005)*.0015)*12;z.wave.x=Math.cos(B)*32,z.wave.y=Math.sin(B)*16;const X=z.x-M.sx,S=z.y-M.sy,O=Math.hypot(X,S),se=Math.max(175,M.vs);if(O{const M={x:F.x+F.wave.x+(U?F.cursor.x:0),y:F.y+F.wave.y+(U?F.cursor.y:0)};return M.x=Math.round(M.x*10)/10,M.y=Math.round(M.y*10)/10,M},k=()=>{const{lines:F,paths:U}=f;F.forEach((M,Z)=>{let G=v(M[0],!1),z=`M ${G.x} ${G.y}`;M.forEach((B,X)=>{const S=X===M.length-1;G=v(B,!S),z+=`L ${G.x} ${G.y}`}),U[Z].setAttribute("d",z)})},T=F=>{const{mouse:U}=f;U.sx+=(U.x-U.sx)*.1,U.sy+=(U.y-U.sy)*.1;const M=U.x-U.lx,Z=U.y-U.ly,G=Math.hypot(M,Z);U.v=G,U.vs+=(G-U.vs)*.1,U.vs=Math.min(100,U.vs),U.lx=U.x,U.ly=U.y,U.a=Math.atan2(Z,M),h&&(h.style.setProperty("--x",`${U.sx}px`),h.style.setProperty("--y",`${U.sy}px`)),w(F),k(),c.current=requestAnimationFrame(T)},E=F=>{if(!f.bounding)return;const{mouse:U}=f;U.x=F.pageX-f.bounding.left,U.y=F.pageY-f.bounding.top+window.scrollY,U.set||(U.sx=U.x,U.sy=U.y,U.lx=U.x,U.ly=U.y,U.set=!0)},R=()=>{j(),p()};return j(),p(),window.addEventListener("resize",R),window.addEventListener("mousemove",E),c.current=requestAnimationFrame(T),()=>{window.removeEventListener("resize",R),window.removeEventListener("mousemove",E),c.current&&cancelAnimationFrame(c.current)}},[]),e.jsxs("div",{ref:r,className:"waves-background",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflow:"hidden",pointerEvents:"none"},children:[e.jsx("div",{className:"waves-cursor",style:{position:"absolute",top:0,left:0,width:"0.5rem",height:"0.5rem",background:"hsl(var(--primary) / 0.3)",borderRadius:"50%",transform:"translate3d(calc(var(--x, -0.5rem) - 50%), calc(var(--y, 50%) - 50%), 0)",willChange:"transform",pointerEvents:"none"}}),e.jsx("svg",{ref:n,style:{display:"block",width:"100%",height:"100%"},children:e.jsx("style",{children:` - path { - fill: none; - stroke: hsl(var(--primary) / 0.20); - stroke-width: 1px; - } - `})})]})}async function ke(n,r){const c={...r,credentials:"include",headers:{"Content-Type":"application/json",...r?.headers}},d=await fetch(n,c);if(d.status===401)throw window.location.href="/auth",new Error("认证失败,请重新登录");return d}function Tt(){return{"Content-Type":"application/json"}}async function IN(){try{await fetch("/api/webui/auth/logout",{method:"POST",credentials:"include"})}catch(n){console.error("登出请求失败:",n)}window.location.href="/auth"}async function Fu(){try{return(await(await fetch("/api/webui/auth/check",{method:"GET",credentials:"include"})).json()).authenticated===!0}catch{return!1}}function PN(){const[n,r]=u.useState(""),[c,d]=u.useState(!1),[h,x]=u.useState(""),[f,j]=u.useState(!0),p=ua(),{enableWavesBackground:w,setEnableWavesBackground:v}=pg(),{theme:k,setTheme:T}=Hu();u.useEffect(()=>{(async()=>{try{await Fu()&&p({to:"/"})}catch{}finally{j(!1)}})()},[p]);const R=k==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":k,F=()=>{T(R==="dark"?"light":"dark")},U=async M=>{if(M.preventDefault(),x(""),!n.trim()){x("请输入 Access Token");return}d(!0);try{const Z=await fetch("/api/webui/auth/verify",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:n.trim()})}),G=await Z.json();Z.ok&&G.valid?G.is_first_setup?p({to:"/setup"}):p({to:"/"}):x(G.message||"Token 验证失败,请检查后重试")}catch(Z){console.error("Token 验证错误:",Z),x("连接服务器失败,请检查网络连接")}finally{d(!1)}};return f?e.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[w&&e.jsx(Pf,{}),e.jsx("div",{className:"text-muted-foreground",children:"正在检查登录状态..."})]}):e.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[w&&e.jsx(Pf,{}),e.jsxs(Ve,{className:"relative z-10 w-full max-w-md shadow-2xl backdrop-blur-xl bg-card/80 border-border/50",children:[e.jsx("button",{onClick:F,className:"absolute right-4 top-4 rounded-lg p-2 hover:bg-accent transition-colors z-10 text-foreground",title:R==="dark"?"切换到浅色模式":"切换到深色模式",children:R==="dark"?e.jsx(eg,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"}):e.jsx(tg,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"})}),e.jsxs(pt,{className:"space-y-4 text-center",children:[e.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-2xl bg-primary/10",children:e.jsx(Hf,{className:"h-8 w-8 text-primary",strokeWidth:2,fill:"none"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(gt,{className:"text-2xl font-bold",children:"欢迎使用 MaiBot"}),e.jsx(Kt,{className:"text-base",children:"请输入您的 Access Token 以继续访问系统"})]})]}),e.jsx(yt,{children:e.jsxs("form",{onSubmit:U,className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"token",className:"text-sm font-medium",children:"Access Token"}),e.jsxs("div",{className:"relative",children:[e.jsx(sg,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground",strokeWidth:2,fill:"none"}),e.jsx(ce,{id:"token",type:"password",placeholder:"请输入您的 Access Token",value:n,onChange:M=>r(M.target.value),className:K("pl-10",h&&"border-red-500 focus-visible:ring-red-500"),disabled:c,autoFocus:!0,autoComplete:"off"})]})]}),h&&e.jsxs("div",{className:"flex items-center gap-2 rounded-md bg-red-50 p-3 text-sm text-red-600 dark:bg-red-950/50 dark:text-red-400",children:[e.jsx(Ea,{className:"h-4 w-4 flex-shrink-0",strokeWidth:2,fill:"none"}),e.jsx("span",{children:h})]}),e.jsx(b,{type:"submit",className:"w-full",disabled:c,children:c?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent"}),"验证中..."]}):"验证并进入"}),e.jsxs(Qt,{children:[e.jsx(Vu,{asChild:!0,children:e.jsxs("button",{className:"w-full text-center text-sm text-primary hover:text-primary/80 transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[e.jsx(ry,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我没有 Token,我该去哪里获得 Token?"]})}),e.jsxs(Ut,{className:"sm:max-w-md",children:[e.jsxs(Bt,{children:[e.jsxs(Ht,{className:"flex items-center gap-2",children:[e.jsx(Hf,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"如何获取 Access Token"]}),e.jsx(ss,{children:"Access Token 是访问 MaiBot WebUI 的唯一凭证,请按以下方式获取"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(cy,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx("h4",{className:"font-semibold text-sm",children:"方式一:查看启动日志"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"在 MaiBot 启动时,控制台会显示 WebUI Access Token。"}),e.jsxs("div",{className:"rounded bg-background p-2 font-mono text-xs",children:[e.jsx("p",{className:"text-muted-foreground",children:"🔑 WebUI Access Token: abc123..."}),e.jsx("p",{className:"text-muted-foreground",children:"💡 请使用此 Token 登录 WebUI"})]})]})]})}),e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Ta,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx("h4",{className:"font-semibold text-sm",children:"方式二:查看配置文件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Token 保存在项目根目录的配置文件中:"}),e.jsx("div",{className:"rounded bg-background p-2 font-mono text-xs break-all",children:e.jsx("code",{className:"text-primary",children:"data/webui.json"})}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["打开此文件,复制 ",e.jsx("code",{className:"px-1 py-0.5 bg-background rounded",children:"access_token"})," 字段的值"]})]})]})}),e.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Ea,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[e.jsx("p",{className:"font-semibold",children:"安全提示"}),e.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[e.jsx("li",{children:"请妥善保管您的 Token,不要泄露给他人"}),e.jsx("li",{children:"如需重置 Token,请在登录后前往系统设置"})]})]})]})})]})]})]}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsxs("button",{className:"w-full text-center text-sm text-muted-foreground hover:text-foreground transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[e.jsx(sn,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我觉得这个界面很卡怎么办?"]})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsxs(ot,{className:"flex items-center gap-2",children:[e.jsx(sn,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"关闭背景动画"]}),e.jsx(dt,{children:"背景动画可能会在低性能设备上造成卡顿。关闭动画可以显著提升界面流畅度。"})]}),e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭动画后,背景将变为纯色,但不影响任何功能的使用。您可以随时在系统设置中重新开启动画。"})}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>v(!1),children:"关闭动画"})]})]})]})]})})]}),e.jsx("div",{className:"absolute bottom-4 left-0 right-0 text-center text-xs text-muted-foreground",children:e.jsx("p",{children:ON})})]})}const Ot=u.forwardRef(({className:n,...r},c)=>e.jsx("textarea",{className:K("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",n),ref:c,...r}));Ot.displayName="Textarea";const mr=u.forwardRef(({className:n,orientation:r="horizontal",decorative:c=!0,...d},h)=>e.jsx(Tp,{ref:h,decorative:c,orientation:r,className:K("shrink-0 bg-border",r==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",n),...d}));mr.displayName=Tp.displayName;function WN({config:n,onChange:r}){const c=h=>{h.trim()&&!n.alias_names.includes(h.trim())&&r({...n,alias_names:[...n.alias_names,h.trim()]})},d=h=>{r({...n,alias_names:n.alias_names.filter((x,f)=>f!==h)})};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"qq_account",children:"QQ账号 *"}),e.jsx(ce,{id:"qq_account",type:"number",placeholder:"请输入机器人的QQ账号",value:n.qq_account||"",onChange:h=>r({...n,qq_account:Number(h.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人登录使用的QQ账号"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"nickname",children:"昵称 *"}),e.jsx(ce,{id:"nickname",placeholder:"请输入机器人的昵称",value:n.nickname,onChange:h=>r({...n,nickname:h.target.value})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的主要称呼名称"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{children:"别名"}),e.jsx("div",{className:"flex flex-wrap gap-2 mb-2",children:n.alias_names.map((h,x)=>e.jsxs(Qe,{variant:"secondary",className:"gap-1",children:[h,e.jsx("button",{type:"button",onClick:()=>d(x),className:"ml-1 hover:text-destructive",children:e.jsx(si,{className:"h-3 w-3"})})]},x))}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{id:"alias_input",placeholder:"输入别名后按回车添加",onKeyPress:h=>{h.key==="Enter"&&(c(h.target.value),h.target.value="")}}),e.jsx(b,{type:"button",variant:"outline",onClick:()=>{const h=document.getElementById("alias_input");h&&(c(h.value),h.value="")},children:"添加"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的其他称呼,可以添加多个"})]})]})}function e0({config:n,onChange:r}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"personality",children:"人格特征 *"}),e.jsx(Ot,{id:"personality",placeholder:"描述机器人的人格特质和身份特征(建议120字以内)",value:n.personality,onChange:c=>r({...n,personality:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:是一个女大学生,现在在读大二,会刷贴吧"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"reply_style",children:"表达风格 *"}),e.jsx(Ot,{id:"reply_style",placeholder:"描述机器人说话的表达风格、表达习惯",value:n.reply_style,onChange:c=>r({...n,reply_style:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:回复平淡一些,简短一些,说中文,参考贴吧、知乎和微博的回复风格"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"interest",children:"兴趣 *"}),e.jsx(Ot,{id:"interest",placeholder:"描述机器人感兴趣的话题",value:n.interest,onChange:c=>r({...n,interest:c.target.value}),rows:2}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"会影响机器人对什么话题进行回复"})]}),e.jsx(mr,{}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"plan_style",children:"群聊说话规则 *"}),e.jsx(Ot,{id:"plan_style",placeholder:"机器人在群聊中的行为风格和规则",value:n.plan_style,onChange:c=>r({...n,plan_style:c.target.value}),rows:4}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在群聊中如何行动,例如回复频率、条件等"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"private_plan_style",children:"私聊说话规则 *"}),e.jsx(Ot,{id:"private_plan_style",placeholder:"机器人在私聊中的行为风格和规则",value:n.private_plan_style,onChange:c=>r({...n,private_plan_style:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在私聊中的行为方式"})]})]})}function t0({config:n,onChange:r}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{htmlFor:"emoji_chance",children:"表情包激活概率"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[(n.emoji_chance*100).toFixed(0),"%"]})]}),e.jsx(ce,{id:"emoji_chance",type:"range",min:"0",max:"1",step:"0.1",value:n.emoji_chance,onChange:c=>r({...n,emoji_chance:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人发送表情包的概率"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"max_reg_num",children:"最大表情包数量"}),e.jsx(ce,{id:"max_reg_num",type:"number",min:"1",max:"200",value:n.max_reg_num,onChange:c=>r({...n,max_reg_num:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人最多保存的表情包数量"})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(N,{htmlFor:"do_replace",children:"达到最大数量时替换"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"开启后会删除旧表情包,关闭则不再收集新表情包"})]}),e.jsx(Ge,{id:"do_replace",checked:n.do_replace,onCheckedChange:c=>r({...n,do_replace:c})})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),e.jsx(ce,{id:"check_interval",type:"number",min:"1",max:"120",value:n.check_interval,onChange:c=>r({...n,check_interval:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包注册、破损、删除的时间间隔"})]}),e.jsx(mr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(N,{htmlFor:"steal_emoji",children:"偷取表情包"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人将一些表情包据为己有"})]}),e.jsx(Ge,{id:"steal_emoji",checked:n.steal_emoji,onCheckedChange:c=>r({...n,steal_emoji:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(N,{htmlFor:"content_filtration",children:"启用表情包过滤"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"只保存符合要求的表情包"})]}),e.jsx(Ge,{id:"content_filtration",checked:n.content_filtration,onCheckedChange:c=>r({...n,content_filtration:c})})]}),n.content_filtration&&e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"filtration_prompt",children:"过滤要求"}),e.jsx(ce,{id:"filtration_prompt",placeholder:"例如:符合公序良俗",value:n.filtration_prompt,onChange:c=>r({...n,filtration_prompt:c.target.value})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"描述表情包应该符合的要求"})]})]})}function s0({config:n,onChange:r}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(N,{htmlFor:"enable_tool",children:"启用工具系统"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人使用各种工具增强功能"})]}),e.jsx(Ge,{id:"enable_tool",checked:n.enable_tool,onCheckedChange:c=>r({...n,enable_tool:c})})]}),e.jsx(mr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(N,{htmlFor:"enable_mood",children:"启用情绪系统"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"让机器人具有情绪变化能力"})]}),e.jsx(Ge,{id:"enable_mood",checked:n.enable_mood,onCheckedChange:c=>r({...n,enable_mood:c})})]}),n.enable_mood&&e.jsxs("div",{className:"ml-6 space-y-6 border-l-2 border-primary/20 pl-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"mood_update_threshold",children:"情绪更新阈值"}),e.jsx(ce,{id:"mood_update_threshold",type:"number",min:"0.1",max:"10",step:"0.1",value:n.mood_update_threshold||1,onChange:c=>r({...n,mood_update_threshold:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"值越高,情绪更新越慢"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"emotion_style",children:"情感特征"}),e.jsx(Ot,{id:"emotion_style",placeholder:"描述情绪的变化情况,例如:情绪较为稳定,但遭遇特定事件时起伏较大",value:n.emotion_style||"",onChange:c=>r({...n,emotion_style:c.target.value}),rows:2}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"影响机器人的情绪变化方式"})]})]}),e.jsx(mr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(N,{htmlFor:"all_global",children:"启用全局黑话模式"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人学习和使用群组黑话"})]}),e.jsx(Ge,{id:"all_global",checked:n.all_global,onCheckedChange:c=>r({...n,all_global:c})})]})]})}function a0({config:n,onChange:r}){const[c,d]=u.useState(!1);return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"mt-0.5",children:e.jsx("svg",{className:"h-5 w-5 text-blue-600 dark:text-blue-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),e.jsxs("div",{className:"flex-1 text-sm",children:[e.jsx("p",{className:"font-medium text-blue-900 dark:text-blue-100 mb-1",children:"关于硅基流动 (SiliconFlow)"}),e.jsx("p",{className:"text-blue-700 dark:text-blue-300 mb-2",children:"硅基流动提供了完整的模型覆盖,包括 DeepSeek V3、Qwen、视觉模型、语音识别和嵌入模型。 只需一个 API Key 即可使用麦麦的所有功能!"}),e.jsxs("a",{href:"https://cloud.siliconflow.cn",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-blue-600 dark:text-blue-400 hover:underline font-medium",children:["前往硅基流动获取 API Key",e.jsx(Fc,{className:"h-3 w-3"})]})]})]})}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(N,{htmlFor:"siliconflow_api_key",children:"SiliconFlow API Key *"}),e.jsxs("div",{className:"relative",children:[e.jsx(ce,{id:"siliconflow_api_key",type:c?"text":"password",placeholder:"sk-...",value:n.api_key,onChange:h=>r({api_key:h.target.value}),className:"font-mono pr-10"}),e.jsx(b,{type:"button",variant:"ghost",size:"sm",className:"absolute right-0 top-0 h-full px-3 hover:bg-transparent",onClick:()=>d(!c),children:c?e.jsx(rr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Ys,{className:"h-4 w-4 text-muted-foreground"})})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"请输入您的硅基流动 API 密钥。获取后,麦麦将自动配置所有必需的模型。"})]}),e.jsxs("div",{className:"rounded-lg bg-muted/50 p-4 text-sm space-y-2",children:[e.jsx("p",{className:"font-medium",children:"将自动配置以下模型:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 text-muted-foreground ml-2",children:[e.jsx("li",{children:"DeepSeek V3 - 主要对话和工具模型"}),e.jsx("li",{children:"Qwen3 30B - 高频小任务和工具调用"}),e.jsx("li",{children:"Qwen3 VL 30B - 图像识别"}),e.jsx("li",{children:"SenseVoice - 语音识别"}),e.jsx("li",{children:"BGE-M3 - 文本嵌入"}),e.jsx("li",{children:"知识库相关模型 (LPMM)"})]})]}),e.jsx("div",{className:"rounded-lg border border-amber-200 dark:border-amber-800 bg-amber-50 dark:bg-amber-950/30 p-4",children:e.jsxs("p",{className:"text-sm text-amber-900 dark:text-amber-100",children:[e.jsx("span",{className:"font-medium",children:"💡 提示:"}),'完成向导后,您可以在"系统设置 → 模型配置"中添加更多 API 提供商和模型。']})})]})}async function l0(){const n=await ke("/api/webui/config/bot",{method:"GET",headers:Tt()});if(!n.ok)throw new Error("读取Bot配置失败");const c=(await n.json()).config.bot||{};return{qq_account:c.qq_account||0,nickname:c.nickname||"",alias_names:c.alias_names||[]}}async function n0(){const n=await ke("/api/webui/config/bot",{method:"GET",headers:Tt()});if(!n.ok)throw new Error("读取人格配置失败");const c=(await n.json()).config.personality||{};return{personality:c.personality||"",reply_style:c.reply_style||"",interest:c.interest||"",plan_style:c.plan_style||"",private_plan_style:c.private_plan_style||""}}async function i0(){const n=await ke("/api/webui/config/bot",{method:"GET",headers:Tt()});if(!n.ok)throw new Error("读取表情包配置失败");const c=(await n.json()).config.emoji||{};return{emoji_chance:c.emoji_chance??.4,max_reg_num:c.max_reg_num??40,do_replace:c.do_replace??!0,check_interval:c.check_interval??10,steal_emoji:c.steal_emoji??!0,content_filtration:c.content_filtration??!1,filtration_prompt:c.filtration_prompt||""}}async function r0(){const n=await ke("/api/webui/config/bot",{method:"GET",headers:Tt()});if(!n.ok)throw new Error("读取其他配置失败");const c=(await n.json()).config,d=c.tool||{},h=c.mood||{},x=c.jargon||{};return{enable_tool:d.enable_tool??!0,enable_mood:h.enable_mood??!1,mood_update_threshold:h.mood_update_threshold,emotion_style:h.emotion_style,all_global:x.all_global??!0}}async function c0(){const n=await ke("/api/webui/config/model",{method:"GET",headers:Tt()});if(!n.ok)throw new Error("读取模型配置失败");return{api_key:((await n.json()).config.api_providers||[]).find(x=>x.name==="SiliconFlow")?.api_key||""}}async function o0(n){const r=await ke("/api/webui/config/bot/section/bot",{method:"POST",headers:Tt(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"保存Bot基础配置失败")}return await r.json()}async function d0(n){const r=await ke("/api/webui/config/bot/section/personality",{method:"POST",headers:Tt(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"保存人格配置失败")}return await r.json()}async function u0(n){const r=await ke("/api/webui/config/bot/section/emoji",{method:"POST",headers:Tt(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"保存表情包配置失败")}return await r.json()}async function m0(n){const r=[];r.push(ke("/api/webui/config/bot/section/tool",{method:"POST",headers:Tt(),body:JSON.stringify({enable_tool:n.enable_tool})})),r.push(ke("/api/webui/config/bot/section/jargon",{method:"POST",headers:Tt(),body:JSON.stringify({all_global:n.all_global})}));const c={enable_mood:n.enable_mood};n.enable_mood&&(c.mood_update_threshold=n.mood_update_threshold||1,c.emotion_style=n.emotion_style||""),r.push(ke("/api/webui/config/bot/section/mood",{method:"POST",headers:Tt(),body:JSON.stringify(c)}));const d=await Promise.all(r);for(const h of d)if(!h.ok){const x=await h.json();throw new Error(x.detail||"保存其他配置失败")}return{success:!0}}async function h0(n){const r=await ke("/api/webui/config/model",{method:"GET",headers:Tt()});if(!r.ok)throw new Error("读取模型配置失败");const d=(await r.json()).config,h=d.api_providers||[],x=h.findIndex(p=>p.name==="SiliconFlow");x>=0?h[x]={...h[x],api_key:n.api_key}:h.push({name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",api_key:n.api_key,client_type:"openai",max_retry:3,timeout:120,retry_interval:5});const f={...d,api_providers:h},j=await ke("/api/webui/config/model",{method:"POST",headers:Tt(),body:JSON.stringify(f)});if(!j.ok){const p=await j.json();throw new Error(p.detail||"保存模型配置失败")}return await j.json()}async function Wf(){const n=localStorage.getItem("access-token"),r=await ke("/api/webui/setup/complete",{method:"POST",headers:{Authorization:`Bearer ${n}`}});if(!r.ok){const c=await r.json();throw new Error(c.message||"标记配置完成失败")}return await r.json()}async function so(){const n=await ke("/api/webui/system/restart",{method:"POST",headers:Tt()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"重启失败")}return await n.json()}async function x0(){const n=await ke("/api/webui/system/status",{method:"GET",headers:Tt()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取状态失败")}return await n.json()}function f0(){const n=ua(),{toast:r}=Rt(),[c,d]=u.useState(0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,w]=u.useState(!0),[v,k]=u.useState({qq_account:0,nickname:"",alias_names:[]}),[T,E]=u.useState({personality:"是一个女大学生,现在在读大二,会刷贴吧。",reply_style:"请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景。可以参考贴吧,知乎和微博的回复风格。",interest:"对技术相关话题,游戏和动漫相关话题感兴趣,也对日常话题感兴趣,不喜欢太过沉重严肃的话题",plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 -2.如果相同的内容已经被执行,请不要重复执行 -3.请控制你的发言频率,不要太过频繁的发言 -4.如果有人对你感到厌烦,请减少回复 -5.如果有人对你进行攻击,或者情绪激动,请你以合适的方法应对`,private_plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 -2.如果相同的内容已经被执行,请不要重复执行 -3.某句话如果已经被回复过,不要重复回复`}),[R,F]=u.useState({emoji_chance:.4,max_reg_num:40,do_replace:!0,check_interval:10,steal_emoji:!0,content_filtration:!1,filtration_prompt:"符合公序良俗"}),[U,M]=u.useState({enable_tool:!0,enable_mood:!1,mood_update_threshold:1,emotion_style:"情绪较为稳定,但遇遇特定事件的时候起伏较大",all_global:!0}),[Z,G]=u.useState({api_key:""}),[z,B]=u.useState(!1),[X,S]=u.useState(""),O=[{id:"bot-basic",title:"Bot基础",description:"配置机器人的基本信息",icon:ar},{id:"personality",title:"人格配置",description:"定义机器人的性格和说话风格",icon:Ic},{id:"emoji",title:"表情包",description:"配置表情包相关设置",icon:Lu},{id:"other",title:"其他设置",description:"工具、情绪系统等配置",icon:ti},{id:"siliconflow",title:"API配置",description:"配置硅基流动API密钥",icon:sg}],se=(c+1)/O.length*100;u.useEffect(()=>{(async()=>{try{w(!0);const[q,H,ie,_,me]=await Promise.all([l0(),n0(),i0(),r0(),c0()]);k(q),E(H),F(ie),M(_),G(me)}catch(q){r({title:"加载配置失败",description:q instanceof Error?q.message:"无法加载现有配置,将使用默认值",variant:"destructive"})}finally{w(!1)}})()},[r]);const he=async()=>{j(!0);try{switch(c){case 0:await o0(v);break;case 1:await d0(T);break;case 2:await u0(R);break;case 3:await m0(U);break;case 4:await h0(Z);break}return r({title:"保存成功",description:`${O[c].title}配置已保存`}),!0}catch(y){return r({title:"保存失败",description:y instanceof Error?y.message:"未知错误",variant:"destructive"}),!1}finally{j(!1)}},ye=async()=>{await he()&&c{c>0&&d(c-1)},pe=async()=>{x(!0),B(!0);try{if(S("正在保存API配置..."),!await he()){x(!1),B(!1);return}S("正在完成初始化..."),await Wf(),S("正在重启麦麦..."),await so(),r({title:"配置完成",description:"麦麦正在重启以应用新配置..."}),S("等待麦麦重启完成...");const q=60;let H=0,ie=!1;for(;HsetTimeout(_,1e3));try{(await x0()).running&&(ie=!0,S("重启成功!正在跳转..."))}catch{H++}}if(!ie)throw new Error("重启超时,请手动检查麦麦状态");setTimeout(()=>{n({to:"/"})},1e3)}catch(y){B(!1),r({title:"配置失败",description:y instanceof Error?y.message:"未知错误",variant:"destructive"})}finally{x(!1)}},je=async()=>{try{await Wf(),n({to:"/"})}catch(y){r({title:"跳过失败",description:y instanceof Error?y.message:"未知错误",variant:"destructive"})}},_e=()=>{switch(c){case 0:return e.jsx(WN,{config:v,onChange:k});case 1:return e.jsx(e0,{config:T,onChange:E});case 2:return e.jsx(t0,{config:R,onChange:F});case 3:return e.jsx(s0,{config:U,onChange:M});case 4:return e.jsx(a0,{config:Z,onChange:G});default:return null}};return e.jsxs("div",{className:"relative flex min-h-screen flex-col items-center justify-center overflow-hidden bg-gradient-to-br from-primary/5 via-background to-secondary/5 p-4 md:p-6",children:[z&&e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm",children:e.jsxs("div",{className:"mx-auto flex max-w-md flex-col items-center space-y-6 rounded-lg border bg-card p-8 text-center shadow-lg",children:[e.jsx("div",{className:"flex h-20 w-20 items-center justify-center rounded-full bg-primary/10",children:e.jsx(vs,{className:"h-10 w-10 animate-spin text-primary"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),e.jsx("p",{className:"text-muted-foreground",children:X})]}),e.jsx("div",{className:"w-full",children:e.jsx("div",{className:"h-2 w-full overflow-hidden rounded-full bg-secondary",children:e.jsx("div",{className:"h-full w-full animate-pulse bg-primary",style:{animation:"pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite"}})})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"请稍候,这可能需要一分钟..."})]})}),e.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[e.jsx("div",{className:"absolute left-1/4 top-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-primary/5 blur-3xl"}),e.jsx("div",{className:"absolute right-1/4 bottom-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-secondary/5 blur-3xl"})]}),p?e.jsxs("div",{className:"relative z-10 text-center",children:[e.jsx("div",{className:"mx-auto mb-4 flex h-16 w-16 items-center justify-center",children:e.jsx("div",{className:"h-12 w-12 animate-spin rounded-full border-4 border-primary border-t-transparent"})}),e.jsx("p",{className:"text-lg font-medium",children:"加载配置中..."}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"正在读取现有配置"})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"relative z-10 w-full max-w-4xl",children:[e.jsxs("div",{className:"mb-6 md:mb-8 text-center",children:[e.jsx("div",{className:"mx-auto mb-4 flex h-12 w-12 md:h-16 md:w-16 items-center justify-center rounded-2xl bg-primary/10",children:e.jsx(oy,{className:"h-6 w-6 md:h-8 md:w-8 text-primary",strokeWidth:2,fill:"none"})}),e.jsx("h1",{className:"mb-2 text-2xl md:text-3xl font-bold",children:"首次配置向导"}),e.jsxs("p",{className:"text-sm md:text-base text-muted-foreground",children:["让我们一起完成 ",Gu," 的初始配置"]})]}),e.jsxs("div",{className:"mb-6 md:mb-8",children:[e.jsxs("div",{className:"mb-2 flex items-center justify-between text-xs md:text-sm",children:[e.jsxs("span",{className:"text-muted-foreground",children:["步骤 ",c+1," / ",O.length]}),e.jsxs("span",{className:"font-medium text-primary",children:[Math.round(se),"%"]})]}),e.jsx(vr,{value:se,className:"h-2"})]}),e.jsx("div",{className:"mb-6 md:mb-8 flex justify-between",children:O.map((y,q)=>{const H=y.icon;return e.jsxs("div",{className:K("flex flex-1 flex-col items-center gap-1 md:gap-2",qn({to:"/"}),className:"gap-2 w-full sm:w-auto",children:[e.jsx(to,{className:"h-4 w-4"}),"返回首页"]}),e.jsxs(b,{size:"lg",variant:"outline",onClick:()=>window.history.back(),className:"gap-2 w-full sm:w-auto",children:[e.jsx(Wn,{className:"h-4 w-4"}),"返回上一页"]})]}),e.jsx("div",{className:"mt-12 pt-8 border-t border-border",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:"如果您认为这是一个错误,请联系系统管理员"})})]})})}const Be=Yb,He=Xb,Re=u.forwardRef(({className:n,children:r,...c},d)=>e.jsxs(Bp,{ref:d,className:K("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",n),...c,children:[r,e.jsx(Gb,{asChild:!0,children:e.jsx(Dl,{className:"h-4 w-4 opacity-50"})})]}));Re.displayName=Bp.displayName;const yg=u.forwardRef(({className:n,...r},c)=>e.jsx(Hp,{ref:c,className:K("flex cursor-default items-center justify-center py-1",n),...r,children:e.jsx(or,{className:"h-4 w-4"})}));yg.displayName=Hp.displayName;const Ng=u.forwardRef(({className:n,...r},c)=>e.jsx(qp,{ref:c,className:K("flex cursor-default items-center justify-center py-1",n),...r,children:e.jsx(Dl,{className:"h-4 w-4"})}));Ng.displayName=qp.displayName;const Le=u.forwardRef(({className:n,children:r,position:c="popper",...d},h)=>e.jsx(Vb,{children:e.jsxs(Gp,{ref:h,className:K("relative z-[100] max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-hidden rounded-md border border-border bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",c==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",n),position:c,...d,children:[e.jsx(yg,{}),e.jsx(Fb,{className:K("p-1",c==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:r}),e.jsx(Ng,{})]})}));Le.displayName=Gp.displayName;const p0=u.forwardRef(({className:n,...r},c)=>e.jsx(Vp,{ref:c,className:K("px-2 py-1.5 text-sm font-semibold",n),...r}));p0.displayName=Vp.displayName;const ne=u.forwardRef(({className:n,children:r,...c},d)=>e.jsxs(Fp,{ref:d,className:K("relative flex w-full cursor-default select-none items-center rounded-sm py-2 pl-2 pr-8 text-sm outline-none bg-white dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800 focus:bg-gray-100 dark:focus:bg-gray-800 data-[disabled]:pointer-events-none data-[disabled]:opacity-50",n),...c,children:[e.jsx("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx($b,{children:e.jsx(ga,{className:"h-4 w-4"})})}),e.jsx(Qb,{children:r})]}));ne.displayName=Fp.displayName;const g0=u.forwardRef(({className:n,...r},c)=>e.jsx($p,{ref:c,className:K("-mx-1 my-1 h-px bg-muted",n),...r}));g0.displayName=$p.displayName;const Ma=wb,Da=_b,va=u.forwardRef(({className:n,align:r="center",sideOffset:c=4,...d},h)=>e.jsx(Nb,{children:e.jsx(Ep,{ref:h,align:r,sideOffset:c,className:K("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]",n),...d})}));va.displayName=Ep.displayName;const Rl="/api/webui/config";async function ep(){const r=await(await ke(`${Rl}/bot`)).json();if(!r.success)throw new Error("获取配置数据失败");return r.config}async function In(){const r=await(await ke(`${Rl}/model`)).json();if(!r.success)throw new Error("获取模型配置数据失败");return r.config}async function tp(n){const c=await(await ke(`${Rl}/bot`,{method:"POST",body:JSON.stringify(n)})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function j0(){const r=await(await ke(`${Rl}/bot/raw`)).json();if(!r.success)throw new Error("获取配置源代码失败");return r.content}async function v0(n){const c=await(await ke(`${Rl}/bot/raw`,{method:"POST",body:JSON.stringify({raw_content:n})})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function eo(n){const c=await(await ke(`${Rl}/model`,{method:"POST",body:JSON.stringify(n)})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function b0(n,r){const d=await(await ke(`${Rl}/bot/section/${n}`,{method:"POST",body:JSON.stringify(r)})).json();if(!d.success)throw new Error(d.message||`保存配置节 ${n} 失败`)}async function Mu(n,r){const d=await(await ke(`${Rl}/model/section/${n}`,{method:"POST",body:JSON.stringify(r)})).json();if(!d.success)throw new Error(d.message||`保存配置节 ${n} 失败`)}async function y0(n,r="openai",c="/models"){const d=new URLSearchParams({provider_name:n,parser:r,endpoint:c}),h=await ke(`/api/webui/models/list?${d}`);if(!h.ok){const f=await h.json().catch(()=>({}));throw new Error(f.detail||`获取模型列表失败 (${h.status})`)}const x=await h.json();if(!x.success)throw new Error("获取模型列表失败");return x.models}async function N0(n){const r=new URLSearchParams({provider_name:n}),c=await ke(`/api/webui/models/test-connection-by-name?${r}`,{method:"POST"});if(!c.ok){const d=await c.json().catch(()=>({}));throw new Error(d.detail||`测试连接失败 (${c.status})`)}return await c.json()}const w0=ei("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"}}),al=u.forwardRef(({className:n,variant:r,...c},d)=>e.jsx("div",{ref:d,role:"alert",className:K(w0({variant:r}),n),...c}));al.displayName="Alert";const _0=u.forwardRef(({className:n,...r},c)=>e.jsx("h5",{ref:c,className:K("mb-1 font-medium leading-none tracking-tight",n),...r}));_0.displayName="AlertTitle";const ll=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:K("text-sm [&_p]:leading-relaxed",n),...r}));ll.displayName="AlertDescription";function $u({onRestartComplete:n,onRestartFailed:r}){const[c,d]=u.useState(0),[h,x]=u.useState("restarting"),[f,j]=u.useState(0),[p,w]=u.useState(0);u.useEffect(()=>{const T=setInterval(()=>{d(F=>F>=90?F:F+1)},200),E=setInterval(()=>{j(F=>F+1)},1e3),R=setTimeout(()=>{x("checking"),v()},3e3);return()=>{clearInterval(T),clearInterval(E),clearTimeout(R)}},[]);const v=()=>{const E=async()=>{try{if(w(F=>F+1),(await fetch("/api/webui/system/status",{method:"GET",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(3e3)})).ok)d(100),x("success"),setTimeout(()=>{n?.()},1500);else throw new Error("Status check failed")}catch{p<60?setTimeout(E,2e3):(x("failed"),r?.())}};E()},k=T=>{const E=Math.floor(T/60),R=T%60;return`${E}:${R.toString().padStart(2,"0")}`};return e.jsx("div",{className:"fixed inset-0 bg-background/95 backdrop-blur-sm z-50 flex items-center justify-center",children:e.jsxs("div",{className:"max-w-md w-full mx-4 space-y-8",children:[e.jsxs("div",{className:"flex flex-col items-center space-y-4",children:[h==="restarting"&&e.jsxs(e.Fragment,{children:[e.jsx(vs,{className:"h-16 w-16 text-primary animate-spin"}),e.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"请稍候,麦麦正在重启中..."})]}),h==="checking"&&e.jsxs(e.Fragment,{children:[e.jsx(vs,{className:"h-16 w-16 text-primary animate-spin"}),e.jsx("h2",{className:"text-2xl font-bold",children:"检查服务状态"}),e.jsxs("p",{className:"text-muted-foreground text-center",children:["等待服务恢复... (尝试 ",p,"/60)"]})]}),h==="success"&&e.jsxs(e.Fragment,{children:[e.jsx(oa,{className:"h-16 w-16 text-green-500"}),e.jsx("h2",{className:"text-2xl font-bold",children:"重启成功"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"正在跳转到登录页面..."})]}),h==="failed"&&e.jsxs(e.Fragment,{children:[e.jsx(Ea,{className:"h-16 w-16 text-destructive"}),e.jsx("h2",{className:"text-2xl font-bold",children:"重启超时"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"服务未能在预期时间内恢复,请手动检查或刷新页面"})]})]}),h!=="failed"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(vr,{value:c,className:"h-2"}),e.jsxs("div",{className:"flex justify-between text-sm text-muted-foreground",children:[e.jsxs("span",{children:[c,"%"]}),e.jsxs("span",{children:["已用时: ",k(f)]})]})]}),e.jsx("div",{className:"bg-muted/50 rounded-lg p-4 space-y-2",children:e.jsxs("p",{className:"text-sm text-muted-foreground",children:[h==="restarting"&&"🔄 配置已保存,正在重启主程序...",h==="checking"&&"⏳ 正在等待服务恢复,请勿关闭页面...",h==="success"&&"✅ 配置已生效,服务运行正常",h==="failed"&&"⚠️ 如果长时间无响应,请尝试手动重启"]})}),h==="failed"&&e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{onClick:()=>window.location.reload(),className:"flex-1 px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary/90",children:"刷新页面"}),e.jsx("button",{onClick:()=>{x("checking"),w(0),v()},className:"flex-1 px-4 py-2 bg-secondary text-secondary-foreground rounded-md hover:bg-secondary/90",children:"重试检测"})]})]})})}const S0={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,r){let c;if(!r.inString&&(c=n.match(/^('''|"""|'|")/))&&(r.stringType=c[0],r.inString=!0),n.sol()&&!r.inString&&r.inArray===0&&(r.lhs=!0),r.inString){for(;r.inString;)if(n.match(r.stringType))r.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return r.lhs?"property":"string"}else{if(r.inArray&&n.peek()==="]")return n.next(),r.inArray--,"bracket";if(r.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(r.lhs&&n.eatWhile(function(d){return d!="="&&d!=" "}))return"property";if(r.lhs&&n.peek()==="=")return n.next(),r.lhs=!1,null;if(!r.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!r.lhs&&(n.match("true")||n.match("false")))return"atom";if(!r.lhs&&n.peek()==="[")return r.inArray++,n.next(),"bracket";if(!r.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}},C0={python:[Oy()],json:[Ry(),Ly()],toml:[Dy.define(S0)],text:[]};function k0({value:n,onChange:r,language:c="text",readOnly:d=!1,height:h="400px",minHeight:x,maxHeight:f,placeholder:j,theme:p="dark",className:w=""}){const[v,k]=u.useState(!1);if(u.useEffect(()=>{k(!0)},[]),!v)return e.jsx("div",{className:`rounded-md border bg-muted animate-pulse ${w}`,style:{height:h,minHeight:x,maxHeight:f}});const T=[...C0[c]||[],Ff.lineWrapping];return d&&T.push(Ff.editable.of(!1)),e.jsx("div",{className:`rounded-md overflow-hidden border ${w}`,children:e.jsx(Uy,{value:n,height:h,minHeight:x,maxHeight:f,theme:p==="dark"?By:void 0,extensions:T,onChange:r,placeholder:j,basicSetup:{lineNumbers:!0,highlightActiveLineGutter:!0,highlightSpecialChars:!0,history:!0,foldGutter:!0,drawSelection:!0,dropCursor:!0,allowMultipleSelections:!0,indentOnInput:!0,syntaxHighlighting:!0,bracketMatching:!0,closeBrackets:!0,autocompletion:!0,rectangularSelection:!0,crosshairCursor:!0,highlightActiveLine:!0,highlightSelectionMatches:!0,closeBracketsKeymap:!0,defaultKeymap:!0,searchKeymap:!0,historyKeymap:!0,foldKeymap:!0,completionKeymap:!0,lintKeymap:!0}})})}function T0(){const[n,r]=u.useState(!0),[c,d]=u.useState(!1),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,w]=u.useState(!1),[v,k]=u.useState(!1),[T,E]=u.useState("visual"),[R,F]=u.useState(""),[U,M]=u.useState(!1),{toast:Z}=Rt(),[G,z]=u.useState(null),[B,X]=u.useState(null),[S,O]=u.useState(null),[se,he]=u.useState(null),[ye,be]=u.useState(null),[pe,je]=u.useState(null),[_e,y]=u.useState(null),[q,H]=u.useState(null),[ie,_]=u.useState(null),[me,xe]=u.useState(null),[Q,de]=u.useState(null),[ge,le]=u.useState(null),[L,$]=u.useState(null),[D,ee]=u.useState(null),[Ne,ze]=u.useState(null),[We,Xe]=u.useState(null),[Mt,qt]=u.useState(null),[re,we]=u.useState(null),Je=u.useRef(null),Fe=u.useRef(!0),Wt=u.useRef({}),Xs=u.useCallback(async()=>{try{const Se=await j0();F(Se),M(!1)}catch(Se){Z({variant:"destructive",title:"加载失败",description:Se instanceof Error?Se.message:"加载源代码失败"})}},[Z]),Ns=u.useCallback(async()=>{try{r(!0);const Se=await ep();Wt.current=Se,z(Se.bot),X(Se.personality);const Oe=Se.chat;Oe.talk_value_rules||(Oe.talk_value_rules=[]),O(Oe),he(Se.expression),be(Se.emoji),je(Se.memory),y(Se.tool),H(Se.mood),_(Se.voice),xe(Se.lpmm_knowledge),de(Se.keyword_reaction),le(Se.response_post_process),$(Se.chinese_typo),ee(Se.response_splitter),ze(Se.log),Xe(Se.debug),qt(Se.maim_message),we(Se.telemetry),j(!1),Fe.current=!1,await Xs()}catch(Se){console.error("加载配置失败:",Se),Z({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}finally{r(!1)}},[Z,Xs]);u.useEffect(()=>{Ns()},[Ns]);const Ke=u.useCallback(async(Se,Oe)=>{if(!Fe.current)try{x(!0),await b0(Se,Oe),j(!1)}catch(ns){console.error(`自动保存 ${Se} 失败:`,ns),j(!0)}finally{x(!1)}},[]),Ue=u.useCallback((Se,Oe)=>{Fe.current||(j(!0),Je.current&&clearTimeout(Je.current),Je.current=setTimeout(()=>{Ke(Se,Oe)},2e3))},[Ke]);u.useEffect(()=>{G&&!Fe.current&&Ue("bot",G)},[G,Ue]),u.useEffect(()=>{B&&!Fe.current&&Ue("personality",B)},[B,Ue]),u.useEffect(()=>{S&&!Fe.current&&Ue("chat",S)},[S,Ue]),u.useEffect(()=>{se&&!Fe.current&&Ue("expression",se)},[se,Ue]),u.useEffect(()=>{ye&&!Fe.current&&Ue("emoji",ye)},[ye,Ue]),u.useEffect(()=>{pe&&!Fe.current&&Ue("memory",pe)},[pe,Ue]),u.useEffect(()=>{_e&&!Fe.current&&Ue("tool",_e)},[_e,Ue]),u.useEffect(()=>{q&&!Fe.current&&Ue("mood",q)},[q,Ue]),u.useEffect(()=>{ie&&!Fe.current&&Ue("voice",ie)},[ie,Ue]),u.useEffect(()=>{me&&!Fe.current&&Ue("lpmm_knowledge",me)},[me,Ue]),u.useEffect(()=>{Q&&!Fe.current&&Ue("keyword_reaction",Q)},[Q,Ue]),u.useEffect(()=>{ge&&!Fe.current&&Ue("response_post_process",ge)},[ge,Ue]),u.useEffect(()=>{L&&!Fe.current&&Ue("chinese_typo",L)},[L,Ue]),u.useEffect(()=>{D&&!Fe.current&&Ue("response_splitter",D)},[D,Ue]),u.useEffect(()=>{Ne&&!Fe.current&&Ue("log",Ne)},[Ne,Ue]),u.useEffect(()=>{We&&!Fe.current&&Ue("debug",We)},[We,Ue]),u.useEffect(()=>{Mt&&!Fe.current&&Ue("maim_message",Mt)},[Mt,Ue]),u.useEffect(()=>{re&&!Fe.current&&Ue("telemetry",re)},[re,Ue]);const js=async()=>{try{d(!0),await v0(R),j(!1),M(!1),Z({title:"保存成功",description:"配置已保存"}),await Ns()}catch(Se){M(!0),Z({variant:"destructive",title:"保存失败",description:Se instanceof Error?Se.message:"保存配置失败"})}finally{d(!1)}},ls=async Se=>{if(f){Z({variant:"destructive",title:"切换失败",description:"请先保存当前更改"});return}if(E(Se),Se==="source")await Xs();else try{const Oe=await ep();Wt.current=Oe,z(Oe.bot),X(Oe.personality);const ns=Oe.chat;ns.talk_value_rules||(ns.talk_value_rules=[]),O(ns),he(Oe.expression),be(Oe.emoji),je(Oe.memory),y(Oe.tool),H(Oe.mood),_(Oe.voice),xe(Oe.lpmm_knowledge),de(Oe.keyword_reaction),le(Oe.response_post_process),$(Oe.chinese_typo),ee(Oe.response_splitter),ze(Oe.log),Xe(Oe.debug),qt(Oe.maim_message),we(Oe.telemetry),j(!1)}catch(Oe){console.error("加载配置失败:",Oe),Z({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}},_s=async()=>{try{d(!0),Je.current&&clearTimeout(Je.current);const Se={...Wt.current,bot:G,personality:B,chat:S,expression:se,emoji:ye,memory:pe,tool:_e,mood:q,voice:ie,lpmm_knowledge:me,keyword_reaction:Q,response_post_process:ge,chinese_typo:L,response_splitter:D,log:Ne,debug:We,maim_message:Mt,telemetry:re};await tp(Se),j(!1),Z({title:"保存成功",description:"麦麦主程序配置已保存"})}catch(Se){console.error("保存配置失败:",Se),Z({title:"保存失败",description:Se.message,variant:"destructive"})}finally{d(!1)}},Ss=async()=>{try{w(!0),so().catch(()=>{}),k(!0)}catch(Se){console.error("重启失败:",Se),k(!1),Z({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),w(!1)}},nl=async()=>{try{d(!0),Je.current&&clearTimeout(Je.current);const Se={...Wt.current,bot:G,personality:B,chat:S,expression:se,emoji:ye,memory:pe,tool:_e,mood:q,voice:ie,lpmm_knowledge:me,keyword_reaction:Q,response_post_process:ge,chinese_typo:L,response_splitter:D,log:Ne,debug:We,maim_message:Mt,telemetry:re};await tp(Se),j(!1),Z({title:"保存成功",description:"配置已保存,即将重启麦麦..."}),await new Promise(Oe=>setTimeout(Oe,500)),await Ss()}catch(Se){console.error("保存失败:",Se),Z({title:"保存失败",description:Se.message,variant:"destructive"})}finally{d(!1)}},il=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},rl=()=>{k(!1),w(!1),Z({title:"重启失败",description:"服务器未能在预期时间内恢复,请手动检查",variant:"destructive"})};return n?e.jsx(Ie,{className:"h-full",children:e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):e.jsx(Ie,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:gap-4",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("h1",{className:"text-xl sm:text-2xl md:text-3xl font-bold",children:"麦麦主程序配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 text-xs sm:text-sm",children:"管理麦麦的核心功能和行为设置"})]}),e.jsxs("div",{className:"flex gap-2 flex-shrink-0",children:[e.jsxs(b,{onClick:T==="visual"?_s:js,disabled:c||h||!f||p,size:"sm",variant:"outline",className:"w-20 sm:w-24",children:[e.jsx(pr,{className:"h-4 w-4 flex-shrink-0",strokeWidth:2,fill:"none"}),e.jsx("span",{className:"ml-1 truncate text-xs sm:text-sm",children:c?"保存中":h?"自动":f?"保存":"已保存"})]}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsxs(b,{disabled:c||h||p,size:"sm",className:"w-20 sm:w-28",children:[e.jsx(fr,{className:"h-4 w-4 flex-shrink-0"}),e.jsx("span",{className:"ml-1 truncate text-xs sm:text-sm",children:p?"重启中":f?"保存重启":"重启"})]})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认重启麦麦?"}),e.jsx(dt,{asChild:!0,children:e.jsx("div",{children:e.jsx("p",{children:f?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"})})})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:f?nl:Ss,children:f?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsx("div",{className:"flex",children:e.jsx(Aa,{value:T,onValueChange:Se=>ls(Se),className:"w-full",children:e.jsxs(ja,{className:"h-8 sm:h-9 w-full grid grid-cols-2",children:[e.jsxs(st,{value:"visual",className:"text-xs sm:text-sm",children:[e.jsx(my,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"可视化编辑"]}),e.jsxs(st,{value:"source",className:"text-xs sm:text-sm",children:[e.jsx(hy,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"源代码编辑"]})]})})})]}),e.jsxs(al,{children:[e.jsx(za,{className:"h-4 w-4"}),e.jsxs(ll,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),T==="source"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs(al,{children:[e.jsx(za,{className:"h-4 w-4"}),e.jsxs(ll,{children:[e.jsx("strong",{children:"源代码模式(高级功能):"}),"直接编辑 TOML 配置文件。此功能仅适用于熟悉 TOML 语法的高级用户。保存时会在后端验证格式,只有格式完全正确才能保存。",U&&e.jsx("span",{className:"text-destructive font-semibold ml-2",children:"⚠️ 上次保存失败,请检查 TOML 格式"})]})]}),e.jsx(k0,{value:R,onChange:Se=>{F(Se),j(!0),U&&M(!1)},language:"toml",theme:"dark",height:"calc(100vh - 280px)",minHeight:"500px",placeholder:"TOML 配置内容"})]}),T==="visual"&&e.jsx(e.Fragment,{children:e.jsxs(Aa,{defaultValue:"bot",className:"w-full",children:[e.jsxs(ja,{className:"flex flex-wrap h-auto gap-1 p-1 sm:grid sm:grid-cols-5 lg:grid-cols-10",children:[e.jsx(st,{value:"bot",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"基本信息"}),e.jsx(st,{value:"personality",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"人格"}),e.jsx(st,{value:"chat",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"聊天"}),e.jsx(st,{value:"expression",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"表达"}),e.jsx(st,{value:"features",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"功能"}),e.jsx(st,{value:"processing",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"处理"}),e.jsx(st,{value:"mood",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"情绪"}),e.jsx(st,{value:"voice",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"语音"}),e.jsx(st,{value:"lpmm",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"知识库"}),e.jsx(st,{value:"other",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"其他"})]}),e.jsx(_t,{value:"bot",className:"space-y-4",children:G&&e.jsx(E0,{config:G,onChange:z})}),e.jsx(_t,{value:"personality",className:"space-y-4",children:B&&e.jsx(z0,{config:B,onChange:X})}),e.jsx(_t,{value:"chat",className:"space-y-4",children:S&&e.jsx(A0,{config:S,onChange:O})}),e.jsx(_t,{value:"expression",className:"space-y-4",children:se&&e.jsx(D0,{config:se,onChange:he})}),e.jsx(_t,{value:"features",className:"space-y-4",children:ye&&pe&&_e&&e.jsx(O0,{emojiConfig:ye,memoryConfig:pe,toolConfig:_e,onEmojiChange:be,onMemoryChange:je,onToolChange:y})}),e.jsx(_t,{value:"processing",className:"space-y-4",children:Q&&ge&&L&&D&&e.jsx(R0,{keywordReactionConfig:Q,responsePostProcessConfig:ge,chineseTypoConfig:L,responseSplitterConfig:D,onKeywordReactionChange:de,onResponsePostProcessChange:le,onChineseTypoChange:$,onResponseSplitterChange:ee})}),e.jsx(_t,{value:"mood",className:"space-y-4",children:q&&e.jsx(L0,{config:q,onChange:H})}),e.jsx(_t,{value:"voice",className:"space-y-4",children:ie&&e.jsx(U0,{config:ie,onChange:_})}),e.jsx(_t,{value:"lpmm",className:"space-y-4",children:me&&e.jsx(B0,{config:me,onChange:xe})}),e.jsxs(_t,{value:"other",className:"space-y-4",children:[Ne&&e.jsx(H0,{config:Ne,onChange:ze}),We&&e.jsx(q0,{config:We,onChange:Xe}),Mt&&e.jsx(G0,{config:Mt,onChange:qt}),re&&e.jsx(V0,{config:re,onChange:we})]})]})}),v&&e.jsx($u,{onRestartComplete:il,onRestartFailed:rl})]})})}function E0({config:n,onChange:r}){const c=()=>{r({...n,platforms:[...n.platforms,""]})},d=p=>{r({...n,platforms:n.platforms.filter((w,v)=>v!==p)})},h=(p,w)=>{const v=[...n.platforms];v[p]=w,r({...n,platforms:v})},x=()=>{r({...n,alias_names:[...n.alias_names,""]})},f=p=>{r({...n,alias_names:n.alias_names.filter((w,v)=>v!==p)})},j=(p,w)=>{const v=[...n.alias_names];v[p]=w,r({...n,alias_names:v})};return e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"基本信息"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"platform",children:"平台"}),e.jsx(ce,{id:"platform",value:n.platform,onChange:p=>r({...n,platform:p.target.value}),placeholder:"qq"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"qq_account",children:"QQ账号"}),e.jsx(ce,{id:"qq_account",value:n.qq_account,onChange:p=>r({...n,qq_account:p.target.value}),placeholder:"123456789"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"nickname",children:"昵称"}),e.jsx(ce,{id:"nickname",value:n.nickname,onChange:p=>r({...n,nickname:p.target.value}),placeholder:"麦麦"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{children:"其他平台账号"}),e.jsxs(b,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(cs,{className:"h-4 w-4 mr-1"}),"添加"]})]}),e.jsxs("div",{className:"space-y-2",children:[n.platforms.map((p,w)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{value:p,onChange:v=>h(w,v.target.value),placeholder:"wx:114514"}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(Pe,{className:"h-4 w-4"})})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:['确定要删除平台账号 "',p||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>d(w),children:"删除"})]})]})]})]},w)),n.platforms.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无其他平台账号"})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{children:"别名"}),e.jsxs(b,{onClick:x,size:"sm",variant:"outline",children:[e.jsx(cs,{className:"h-4 w-4 mr-1"}),"添加"]})]}),e.jsxs("div",{className:"space-y-2",children:[n.alias_names.map((p,w)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{value:p,onChange:v=>j(w,v.target.value),placeholder:"小麦"}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(Pe,{className:"h-4 w-4"})})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:['确定要删除别名 "',p||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>f(w),children:"删除"})]})]})]})]},w)),n.alias_names.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无别名"})]})]})]})]})})}function z0({config:n,onChange:r}){const c=()=>{r({...n,states:[...n.states,""]})},d=x=>{r({...n,states:n.states.filter((f,j)=>j!==x)})},h=(x,f)=>{const j=[...n.states];j[x]=f,r({...n,states:j})};return e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"人格设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"personality",children:"人格特质"}),e.jsx(Ot,{id:"personality",value:n.personality,onChange:x=>r({...n,personality:x.target.value}),placeholder:"描述人格特质和身份特征(建议120字以内)",rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"建议120字以内,描述人格特质和身份特征"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"reply_style",children:"表达风格"}),e.jsx(Ot,{id:"reply_style",value:n.reply_style,onChange:x=>r({...n,reply_style:x.target.value}),placeholder:"描述说话的表达风格和习惯",rows:3})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"interest",children:"兴趣"}),e.jsx(Ot,{id:"interest",value:n.interest,onChange:x=>r({...n,interest:x.target.value}),placeholder:"会影响麦麦对什么话题进行回复",rows:2})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"plan_style",children:"说话规则与行为风格"}),e.jsx(Ot,{id:"plan_style",value:n.plan_style,onChange:x=>r({...n,plan_style:x.target.value}),placeholder:"麦麦的说话规则和行为风格",rows:5})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"visual_style",children:"识图规则"}),e.jsx(Ot,{id:"visual_style",value:n.visual_style,onChange:x=>r({...n,visual_style:x.target.value}),placeholder:"识图时的处理规则",rows:3})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"private_plan_style",children:"私聊规则"}),e.jsx(Ot,{id:"private_plan_style",value:n.private_plan_style,onChange:x=>r({...n,private_plan_style:x.target.value}),placeholder:"私聊的说话规则和行为风格",rows:4})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{children:"状态列表(人格多样性)"}),e.jsxs(b,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(cs,{className:"h-4 w-4 mr-1"}),"添加状态"]})]}),e.jsx("div",{className:"space-y-2",children:n.states.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Ot,{value:x,onChange:j=>h(f,j.target.value),placeholder:"描述一个人格状态",rows:2}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(Pe,{className:"h-4 w-4"})})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsx(dt,{children:"确定要删除这个人格状态吗?此操作无法撤销。"})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>d(f),children:"删除"})]})]})]})]},f))})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"state_probability",children:"状态替换概率"}),e.jsx(ce,{id:"state_probability",type:"number",step:"0.1",min:"0",max:"1",value:n.state_probability,onChange:x=>r({...n,state_probability:parseFloat(x.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"每次构建人格时替换 personality 的概率(0.0-1.0)"})]})]})]})})}function A0({config:n,onChange:r}){const c=()=>{r({...n,talk_value_rules:[...n.talk_value_rules,{target:"",time:"00:00-23:59",value:1}]})},d=j=>{r({...n,talk_value_rules:n.talk_value_rules.filter((p,w)=>w!==j)})},h=(j,p,w)=>{const v=[...n.talk_value_rules];v[j]={...v[j],[p]:w},r({...n,talk_value_rules:v})},x=({value:j,onChange:p})=>{const[w,v]=u.useState("00"),[k,T]=u.useState("00"),[E,R]=u.useState("23"),[F,U]=u.useState("59");u.useEffect(()=>{const Z=j.split("-");if(Z.length===2){const[G,z]=Z,[B,X]=G.split(":"),[S,O]=z.split(":");B&&v(B.padStart(2,"0")),X&&T(X.padStart(2,"0")),S&&R(S.padStart(2,"0")),O&&U(O.padStart(2,"0"))}},[j]);const M=(Z,G,z,B)=>{const X=`${Z}:${G}-${z}:${B}`;p(X)};return e.jsxs(Ma,{children:[e.jsx(Da,{asChild:!0,children:e.jsxs(b,{variant:"outline",className:"w-full justify-start font-mono text-sm",children:[e.jsx(Jn,{className:"h-4 w-4 mr-2"}),j||"选择时间段"]})}),e.jsx(va,{className:"w-72 sm:w-80",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"font-medium text-sm mb-3",children:"开始时间"}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[e.jsxs("div",{children:[e.jsx(N,{className:"text-xs",children:"小时"}),e.jsxs(Be,{value:w,onValueChange:Z=>{v(Z),M(Z,k,E,F)},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsx(Le,{children:Array.from({length:24},(Z,G)=>G).map(Z=>e.jsx(ne,{value:Z.toString().padStart(2,"0"),children:Z.toString().padStart(2,"0")},Z))})]})]}),e.jsxs("div",{children:[e.jsx(N,{className:"text-xs",children:"分钟"}),e.jsxs(Be,{value:k,onValueChange:Z=>{T(Z),M(w,Z,E,F)},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsx(Le,{children:Array.from({length:60},(Z,G)=>G).map(Z=>e.jsx(ne,{value:Z.toString().padStart(2,"0"),children:Z.toString().padStart(2,"0")},Z))})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-medium text-sm mb-3",children:"结束时间"}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[e.jsxs("div",{children:[e.jsx(N,{className:"text-xs",children:"小时"}),e.jsxs(Be,{value:E,onValueChange:Z=>{R(Z),M(w,k,Z,F)},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsx(Le,{children:Array.from({length:24},(Z,G)=>G).map(Z=>e.jsx(ne,{value:Z.toString().padStart(2,"0"),children:Z.toString().padStart(2,"0")},Z))})]})]}),e.jsxs("div",{children:[e.jsx(N,{className:"text-xs",children:"分钟"}),e.jsxs(Be,{value:F,onValueChange:Z=>{U(Z),M(w,k,E,Z)},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsx(Le,{children:Array.from({length:60},(Z,G)=>G).map(Z=>e.jsx(ne,{value:Z.toString().padStart(2,"0"),children:Z.toString().padStart(2,"0")},Z))})]})]})]})]})]})})]})},f=({rule:j})=>{const p=`{ target = "${j.target}", time = "${j.time}", value = ${j.value.toFixed(1)} }`;return e.jsxs(Ma,{children:[e.jsx(Da,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",children:[e.jsx(Ys,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(va,{className:"w-80 sm:w-96",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:p}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"聊天设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"talk_value",children:"聊天频率(基础值)"}),e.jsx(ce,{id:"talk_value",type:"number",step:"0.1",min:"0",max:"1",value:n.talk_value,onChange:j=>r({...n,talk_value:parseFloat(j.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"越小越沉默,范围 0-1"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"mentioned_bot_reply",checked:n.mentioned_bot_reply,onCheckedChange:j=>r({...n,mentioned_bot_reply:j})}),e.jsx(N,{htmlFor:"mentioned_bot_reply",className:"cursor-pointer",children:"启用提及必回复"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"max_context_size",children:"上下文长度"}),e.jsx(ce,{id:"max_context_size",type:"number",min:"1",value:n.max_context_size,onChange:j=>r({...n,max_context_size:parseInt(j.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"planner_smooth",children:"规划器平滑"}),e.jsx(ce,{id:"planner_smooth",type:"number",step:"1",min:"0",value:n.planner_smooth,onChange:j=>r({...n,planner_smooth:parseFloat(j.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"增大数值会减小 planner 负荷,推荐 1-5,0 为关闭"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"enable_talk_value_rules",checked:n.enable_talk_value_rules,onCheckedChange:j=>r({...n,enable_talk_value_rules:j})}),e.jsx(N,{htmlFor:"enable_talk_value_rules",className:"cursor-pointer",children:"启用动态发言频率规则"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"include_planner_reasoning",checked:n.include_planner_reasoning,onCheckedChange:j=>r({...n,include_planner_reasoning:j})}),e.jsx(N,{htmlFor:"include_planner_reasoning",className:"cursor-pointer",children:"将 planner 推理加入 replyer"})]})]})]}),n.enable_talk_value_rules&&e.jsxs("div",{className:"border-t pt-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"动态发言频率规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"按时段或聊天流ID调整发言频率,优先匹配具体聊天,再匹配全局规则"})]}),e.jsxs(b,{onClick:c,size:"sm",children:[e.jsx(cs,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),n.talk_value_rules&&n.talk_value_rules.length>0?e.jsx("div",{className:"space-y-4",children:n.talk_value_rules.map((j,p)=>e.jsxs("div",{className:"rounded-lg border p-4 bg-muted/50 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium text-muted-foreground",children:["规则 #",p+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(f,{rule:j}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsx(b,{variant:"ghost",size:"sm",children:e.jsx(Pe,{className:"h-4 w-4 text-destructive"})})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:["确定要删除规则 #",p+1," 吗?此操作无法撤销。"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>d(p),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"配置类型"}),e.jsxs(Be,{value:j.target===""?"global":"specific",onValueChange:w=>{w==="global"?h(p,"target",""):h(p,"target","qq::group")},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"global",children:"全局配置"}),e.jsx(ne,{value:"specific",children:"详细配置"})]})]})]}),j.target!==""&&(()=>{const w=j.target.split(":"),v=w[0]||"qq",k=w[1]||"",T=w[2]||"group";return e.jsxs("div",{className:"grid gap-4 p-3 sm:p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"平台"}),e.jsxs(Be,{value:v,onValueChange:E=>{h(p,"target",`${E}:${k}:${T}`)},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"qq",children:"QQ"}),e.jsx(ne,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"群 ID"}),e.jsx(ce,{value:k,onChange:E=>{h(p,"target",`${v}:${E.target.value}:${T}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"类型"}),e.jsxs(Be,{value:T,onValueChange:E=>{h(p,"target",`${v}:${k}:${E}`)},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"group",children:"群组(group)"}),e.jsx(ne,{value:"private",children:"私聊(private)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",j.target||"(未设置)"]})]})})(),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"时间段 (Time)"}),e.jsx(x,{value:j.time,onChange:w=>h(p,"time",w)}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"支持跨夜区间,例如 23:00-02:00"})]}),e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{htmlFor:`rule-value-${p}`,className:"text-xs font-medium",children:"发言频率值 (Value)"}),e.jsx(ce,{id:`rule-value-${p}`,type:"number",step:"0.01",min:"0.01",max:"1",value:j.value,onChange:w=>{const v=parseFloat(w.target.value);isNaN(v)||h(p,"value",Math.max(.01,Math.min(1,v)))},className:"w-20 h-8 text-xs"})]}),e.jsx(ka,{value:[j.value],onValueChange:w=>h(p,"value",w[0]),min:.01,max:1,step:.01,className:"w-full"}),e.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[e.jsx("span",{children:"0.01 (极少发言)"}),e.jsx("span",{children:"0.5"}),e.jsx("span",{children:"1.0 (正常)"})]})]})]})]},p))}):e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:e.jsx("p",{className:"text-sm",children:'暂无规则,点击"添加规则"按钮创建'})}),e.jsxs("div",{className:"mt-4 p-4 bg-blue-50 dark:bg-blue-950/20 border border-blue-200 dark:border-blue-800 rounded-lg",children:[e.jsx("h5",{className:"text-sm font-semibold text-blue-900 dark:text-blue-100 mb-2",children:"📝 规则说明"}),e.jsxs("ul",{className:"text-xs text-blue-800 dark:text-blue-200 space-y-1",children:[e.jsxs("li",{children:["• ",e.jsx("strong",{children:"Target 为空"}),":全局规则,对所有聊天生效"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"Target 指定"}),":仅对特定聊天流生效(格式:platform:id:type)"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"优先级"}),":先匹配具体聊天流规则,再匹配全局规则"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"时间支持跨夜"}),":例如 23:00-02:00 表示晚上11点到次日凌晨2点"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"数值范围"}),":建议 0-1,0 表示完全沉默,1 表示正常发言"]})]})]})]})]})}function M0({member:n,groupIndex:r,memberIndex:c,availableChatIds:d,onUpdate:h,onRemove:x}){const f=d.includes(n)||n==="*",[j,p]=u.useState(!f);return e.jsxs("div",{className:"flex gap-2",children:[e.jsx("div",{className:"flex-1 flex gap-2",children:j?e.jsxs(e.Fragment,{children:[e.jsx(ce,{value:n,onChange:w=>h(r,c,w.target.value),placeholder:'输入 "*" 或 "qq:123456:group"',className:"flex-1"}),d.length>0&&e.jsx(b,{size:"sm",variant:"outline",onClick:()=>p(!1),title:"切换到下拉选择",children:"下拉"})]}):e.jsxs(e.Fragment,{children:[e.jsxs(Be,{value:n,onValueChange:w=>h(r,c,w),children:[e.jsx(Re,{className:"flex-1",children:e.jsx(He,{placeholder:"选择聊天流"})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"*",children:"* (全局共享)"}),d.map((w,v)=>e.jsx(ne,{value:w,children:w},v))]})]}),e.jsx(b,{size:"sm",variant:"outline",onClick:()=>p(!0),title:"切换到手动输入",children:"输入"})]})}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(Pe,{className:"h-4 w-4"})})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:['确定要删除组成员 "',n||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>x(r,c),children:"删除"})]})]})]})]})}function D0({config:n,onChange:r}){const c=()=>{r({...n,learning_list:[...n.learning_list,["","enable","enable","1.0"]]})},d=k=>{r({...n,learning_list:n.learning_list.filter((T,E)=>E!==k)})},h=(k,T,E)=>{const R=[...n.learning_list];R[k][T]=E,r({...n,learning_list:R})},x=({rule:k})=>{const T=`["${k[0]}", "${k[1]}", "${k[2]}", "${k[3]}"]`;return e.jsxs(Ma,{children:[e.jsx(Da,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",children:[e.jsx(Ys,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(va,{className:"w-80 sm:w-96",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:T}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},f=()=>{r({...n,expression_groups:[...n.expression_groups,[]]})},j=k=>{r({...n,expression_groups:n.expression_groups.filter((T,E)=>E!==k)})},p=k=>{const T=[...n.expression_groups];T[k]=[...T[k],""],r({...n,expression_groups:T})},w=(k,T)=>{const E=[...n.expression_groups];E[k]=E[k].filter((R,F)=>F!==T),r({...n,expression_groups:E})},v=(k,T,E)=>{const R=[...n.expression_groups];R[k][T]=E,r({...n,expression_groups:R})};return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达学习配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置麦麦如何学习和使用表达方式"})]}),e.jsxs(b,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(cs,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),e.jsxs("div",{className:"space-y-4",children:[n.learning_list.map((k,T)=>{const E=n.learning_list.some((G,z)=>z!==T&&G[0]===""),R=k[0]==="",F=k[0].split(":"),U=F[0]||"qq",M=F[1]||"",Z=F[2]||"group";return e.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["规则 ",T+1," ",R&&"(全局配置)"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(x,{rule:k}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsx(b,{size:"sm",variant:"ghost",children:e.jsx(Pe,{className:"h-4 w-4"})})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:["确定要删除学习规则 ",T+1," 吗?此操作无法撤销。"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>d(T),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"配置类型"}),e.jsxs(Be,{value:R?"global":"specific",onValueChange:G=>{G==="global"?h(T,0,""):h(T,0,"qq::group")},disabled:E&&!R,children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"global",children:"全局配置"}),e.jsx(ne,{value:"specific",disabled:E&&!R,children:"详细配置"})]})]}),E&&!R&&e.jsx("p",{className:"text-xs text-amber-600",children:"已存在全局配置,无法创建新的全局配置"})]}),!R&&e.jsxs("div",{className:"grid gap-4 p-3 sm:p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"平台"}),e.jsxs(Be,{value:U,onValueChange:G=>{h(T,0,`${G}:${M}:${Z}`)},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"qq",children:"QQ"}),e.jsx(ne,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"群 ID"}),e.jsx(ce,{value:M,onChange:G=>{h(T,0,`${U}:${G.target.value}:${Z}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"类型"}),e.jsxs(Be,{value:Z,onValueChange:G=>{h(T,0,`${U}:${M}:${G}`)},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"group",children:"群组(group)"}),e.jsx(ne,{value:"private",children:"私聊(private)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",k[0]||"(未设置)"]})]}),e.jsx("div",{className:"grid gap-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(N,{className:"text-xs font-medium",children:"使用学到的表达"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦使用从聊天中学到的表达方式"})]}),e.jsx(Ge,{checked:k[1]==="enable",onCheckedChange:G=>h(T,1,G?"enable":"disable")})]})}),e.jsx("div",{className:"grid gap-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(N,{className:"text-xs font-medium",children:"学习表达"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦从聊天中学习新的表达方式"})]}),e.jsx(Ge,{checked:k[2]==="enable",onCheckedChange:G=>h(T,2,G?"enable":"disable")})]})}),e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{className:"text-xs font-medium",children:"学习强度"}),e.jsx(ce,{type:"number",step:"0.1",min:"0",max:"5",value:k[3],onChange:G=>{const z=parseFloat(G.target.value);isNaN(z)||h(T,3,Math.max(0,Math.min(5,z)).toFixed(1))},className:"w-20 h-8 text-xs"})]}),e.jsx(ka,{value:[parseFloat(k[3])||1],onValueChange:G=>h(T,3,G[0].toFixed(1)),min:0,max:5,step:.1,className:"w-full"}),e.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[e.jsx("span",{children:"0 (不学习)"}),e.jsx("span",{children:"2.5"}),e.jsx("span",{children:"5.0 (快速学习)"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"影响学习频率,最短学习间隔 = 300/学习强度(秒)"})]})]})]},T)}),n.learning_list.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无学习规则,点击"添加规则"开始配置'})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达反思配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置麦麦主动向管理员询问表达方式是否合适的功能"})]}),e.jsx(Ge,{checked:n.reflect,onCheckedChange:k=>r({...n,reflect:k})})]}),n.reflect&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsx("span",{className:"text-sm font-medium",children:"反思操作员"})}),e.jsx("div",{className:"space-y-4",children:(()=>{const T=(n.reflect_operator_id||"").split(":"),E=T[0]||"qq",R=T[1]||"",F=T[2]||"private";return e.jsxs("div",{className:"grid gap-4 p-3 sm:p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"平台"}),e.jsxs(Be,{value:E,onValueChange:U=>{r({...n,reflect_operator_id:`${U}:${R}:${F}`})},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"qq",children:"QQ"}),e.jsx(ne,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"用户/群 ID"}),e.jsx(ce,{value:R,onChange:U=>{r({...n,reflect_operator_id:`${E}:${U.target.value}:${F}`})},placeholder:"输入 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"类型"}),e.jsxs(Be,{value:F,onValueChange:U=>{r({...n,reflect_operator_id:`${E}:${R}:${U}`})},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"private",children:"私聊(private)"}),e.jsx(ne,{value:"group",children:"群组(group)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前操作员 ID:",n.reflect_operator_id||"(未设置)"]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦会向此操作员询问表达方式是否合适"})]})})()})]}),e.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-sm font-medium",children:"允许反思的聊天流"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"只有在此列表中的聊天流才会提出问题并跟踪。如果列表为空,则所有聊天流都可以进行表达反思"})]}),e.jsxs(b,{onClick:()=>{r({...n,allow_reflect:[...n.allow_reflect||[],"qq::group"]})},size:"sm",variant:"outline",children:[e.jsx(cs,{className:"h-4 w-4 mr-1"}),"添加聊天流"]})]}),e.jsxs("div",{className:"space-y-2",children:[(n.allow_reflect||[]).map((k,T)=>{const E=k.split(":"),R=E[0]||"qq",F=E[1]||"",U=E[2]||"group";return e.jsxs("div",{className:"flex items-center gap-2 p-3 rounded-lg bg-muted/50",children:[e.jsxs(Be,{value:R,onValueChange:M=>{const Z=[...n.allow_reflect];Z[T]=`${M}:${F}:${U}`,r({...n,allow_reflect:Z})},children:[e.jsx(Re,{className:"w-24",children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"qq",children:"QQ"}),e.jsx(ne,{value:"wx",children:"微信"})]})]}),e.jsx(ce,{value:F,onChange:M=>{const Z=[...n.allow_reflect];Z[T]=`${R}:${M.target.value}:${U}`,r({...n,allow_reflect:Z})},placeholder:"ID",className:"flex-1 font-mono text-sm"}),e.jsxs(Be,{value:U,onValueChange:M=>{const Z=[...n.allow_reflect];Z[T]=`${R}:${F}:${M}`,r({...n,allow_reflect:Z})},children:[e.jsx(Re,{className:"w-32",children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"group",children:"群组"}),e.jsx(ne,{value:"private",children:"私聊"})]})]}),e.jsx(b,{onClick:()=>{r({...n,allow_reflect:n.allow_reflect.filter((M,Z)=>Z!==T)})},size:"sm",variant:"ghost",children:e.jsx(Pe,{className:"h-4 w-4"})})]},T)}),(!n.allow_reflect||n.allow_reflect.length===0)&&e.jsx("div",{className:"text-center py-4 text-muted-foreground text-sm",children:"列表为空,所有聊天流都可以进行表达反思"})]})]})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达共享组配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置不同聊天流之间如何共享学到的表达方式"})]}),e.jsxs(b,{onClick:f,size:"sm",variant:"outline",children:[e.jsx(cs,{className:"h-4 w-4 mr-1"}),"添加共享组"]})]}),e.jsxs("div",{className:"space-y-4",children:[n.expression_groups.map((k,T)=>{const E=n.learning_list.map(R=>R[0]).filter(R=>R!=="");return e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["共享组 ",T+1,k.length===1&&k[0]==="*"&&"(全局共享)"]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(b,{onClick:()=>p(T),size:"sm",variant:"outline",children:e.jsx(cs,{className:"h-4 w-4"})}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsx(b,{size:"sm",variant:"ghost",children:e.jsx(Pe,{className:"h-4 w-4"})})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:["确定要删除共享组 ",T+1," 吗?此操作无法撤销。"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>j(T),children:"删除"})]})]})]})]})]}),e.jsx("div",{className:"space-y-2",children:k.map((R,F)=>e.jsx(M0,{member:R,groupIndex:T,memberIndex:F,availableChatIds:E,onUpdate:v,onRemove:w},`${T}-${F}`))}),e.jsx("p",{className:"text-xs text-muted-foreground",children:'提示:可以从下拉框选择已配置的聊天流,或手动输入。输入 "*" 启用全局共享'})]},T)}),n.expression_groups.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无共享组,点击"添加共享组"开始配置'})]})]})})]})}function O0({emojiConfig:n,memoryConfig:r,toolConfig:c,onEmojiChange:d,onMemoryChange:h,onToolChange:x}){return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"工具设置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"enable_tool",checked:c.enable_tool,onCheckedChange:f=>x({...c,enable_tool:f})}),e.jsx(N,{htmlFor:"enable_tool",className:"cursor-pointer",children:"启用工具系统"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"允许麦麦使用各种工具来增强功能"})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"记忆设置"}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"max_agent_iterations",children:"记忆思考深度"}),e.jsx(ce,{id:"max_agent_iterations",type:"number",min:"1",value:r.max_agent_iterations,onChange:f=>h({...r,max_agent_iterations:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"最低为 1(不深入思考)"})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"表情包设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"emoji_chance",children:"表情包激活概率"}),e.jsx(ce,{id:"emoji_chance",type:"number",step:"0.1",min:"0",max:"1",value:n.emoji_chance,onChange:f=>d({...n,emoji_chance:parseFloat(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"范围 0-1,越大越容易发送表情包"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"max_reg_num",children:"最大注册数量"}),e.jsx(ce,{id:"max_reg_num",type:"number",min:"1",value:n.max_reg_num,onChange:f=>d({...n,max_reg_num:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦最多可以注册的表情包数量"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),e.jsx(ce,{id:"check_interval",type:"number",min:"1",value:n.check_interval,onChange:f=>d({...n,check_interval:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包(注册、破损、删除)的时间间隔"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"do_replace",checked:n.do_replace,onCheckedChange:f=>d({...n,do_replace:f})}),e.jsx(N,{htmlFor:"do_replace",className:"cursor-pointer",children:"达到最大数量时替换表情包"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"steal_emoji",checked:n.steal_emoji,onCheckedChange:f=>d({...n,steal_emoji:f})}),e.jsx(N,{htmlFor:"steal_emoji",className:"cursor-pointer",children:"偷取表情包"})]}),e.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"允许麦麦将看到的表情包据为己有"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"content_filtration",checked:n.content_filtration,onCheckedChange:f=>d({...n,content_filtration:f})}),e.jsx(N,{htmlFor:"content_filtration",className:"cursor-pointer",children:"启用表情包过滤"})]}),n.content_filtration&&e.jsxs("div",{className:"grid gap-2 pl-6 border-l-2 border-primary/20",children:[e.jsx(N,{htmlFor:"filtration_prompt",children:"过滤要求"}),e.jsx(ce,{id:"filtration_prompt",value:n.filtration_prompt,onChange:f=>d({...n,filtration_prompt:f.target.value}),placeholder:"符合公序良俗"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"只有符合此要求的表情包才会被保存"})]})]})]})})]})}function R0({keywordReactionConfig:n,responsePostProcessConfig:r,chineseTypoConfig:c,responseSplitterConfig:d,onKeywordReactionChange:h,onResponsePostProcessChange:x,onChineseTypoChange:f,onResponseSplitterChange:j}){const p=()=>{h({...n,regex_rules:[...n.regex_rules,{regex:[""],reaction:""}]})},w=z=>{h({...n,regex_rules:n.regex_rules.filter((B,X)=>X!==z)})},v=(z,B,X)=>{const S=[...n.regex_rules];B==="regex"&&typeof X=="string"?S[z]={...S[z],regex:[X]}:B==="reaction"&&typeof X=="string"&&(S[z]={...S[z],reaction:X}),h({...n,regex_rules:S})},k=({regex:z,reaction:B,onRegexChange:X,onReactionChange:S})=>{const[O,se]=u.useState(!1),[he,ye]=u.useState(""),[be,pe]=u.useState(null),[je,_e]=u.useState(""),[y,q]=u.useState({}),[H,ie]=u.useState(""),_=u.useRef(null),[me,xe]=u.useState("build"),Q=L=>L.replace(/\(\?P<([^>]+)>/g,"(?<$1>"),de=(L,$=0)=>{const D=_.current;if(!D)return;const ee=D.selectionStart||0,Ne=D.selectionEnd||0,ze=z.substring(0,ee)+L+z.substring(Ne);X(ze),setTimeout(()=>{const We=ee+L.length+$;D.setSelectionRange(We,We),D.focus()},0)};u.useEffect(()=>{if(!z||!he){pe(null),q({}),ie(B),_e("");return}try{const L=Q(z),$=new RegExp(L,"g"),D=he.match($);pe(D),_e("");const Ne=new RegExp(L).exec(he);if(Ne&&Ne.groups){q(Ne.groups);let ze=B;Object.entries(Ne.groups).forEach(([We,Xe])=>{ze=ze.replace(new RegExp(`\\[${We}\\]`,"g"),Xe||"")}),ie(ze)}else q({}),ie(B)}catch(L){_e(L.message),pe(null),q({}),ie(B)}},[z,he,B]);const ge=()=>{if(!he||!be||be.length===0)return e.jsx("span",{className:"text-muted-foreground",children:he||"请输入测试文本"});try{const L=Q(z),$=new RegExp(L,"g");let D=0;const ee=[];let Ne;for(;(Ne=$.exec(he))!==null;)Ne.index>D&&ee.push(e.jsx("span",{children:he.substring(D,Ne.index)},`text-${D}`)),ee.push(e.jsx("span",{className:"bg-yellow-200 dark:bg-yellow-900 font-semibold",children:Ne[0]},`match-${Ne.index}`)),D=Ne.index+Ne[0].length;return D)",desc:"Python风格命名捕获组",moveCursor:-1},{label:"非捕获组",pattern:"(?:)",desc:"分组但不保存匹配结果",moveCursor:-1}]},{category:"字符类",items:[{label:"字符集",pattern:"[]",desc:"匹配括号内的任意字符",moveCursor:-1},{label:"排除字符",pattern:"[^]",desc:"匹配不在括号内的字符",moveCursor:-1},{label:"范围",pattern:"[a-z]",desc:"匹配a到z的字符"},{label:"中文字符",pattern:"[\\u4e00-\\u9fa5]",desc:"匹配中文汉字"}]},{category:"常用模板",items:[{label:"捕获词语",pattern:"(?P\\S+)",desc:"捕获一个词语"},{label:"捕获句子",pattern:"(?P.+)",desc:"捕获整个句子"},{label:"捕获数字",pattern:"(?P\\d+)",desc:"捕获一个或多个数字"},{label:"可选词语",pattern:"(?:词语1|词语2)",desc:"匹配多个可选项之一"}]}];return e.jsxs(Qt,{open:O,onOpenChange:se,children:[e.jsx(Vu,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",children:[e.jsx(Uu,{className:"h-4 w-4 mr-1"}),"正则编辑器"]})}),e.jsxs(Ut,{className:"max-w-[95vw] sm:max-w-[900px] max-h-[90vh]",children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:"正则表达式编辑器"}),e.jsx(ss,{className:"text-sm",children:"使用可视化工具构建正则表达式,并实时测试效果"})]}),e.jsx(Ie,{className:"max-h-[calc(90vh-120px)]",children:e.jsxs(Aa,{value:me,onValueChange:L=>xe(L),className:"w-full",children:[e.jsxs(ja,{className:"grid w-full grid-cols-2",children:[e.jsx(st,{value:"build",children:"🔧 构建器"}),e.jsx(st,{value:"test",children:"🧪 测试器"})]}),e.jsxs(_t,{value:"build",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{className:"text-sm font-medium",children:"正则表达式"}),e.jsx(ce,{ref:_,value:z,onChange:L=>X(L.target.value),className:"font-mono text-sm",placeholder:"点击下方按钮构建正则表达式..."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{className:"text-sm font-medium",children:"Reaction 内容"}),e.jsx(Ot,{value:B,onChange:L=>S(L.target.value),placeholder:"使用 [捕获组名] 引用捕获的内容...",rows:3,className:"text-sm"})]}),e.jsxs("div",{className:"space-y-4 border-t pt-4",children:[le.map(L=>e.jsxs("div",{className:"space-y-2",children:[e.jsx("h5",{className:"text-xs font-semibold text-primary",children:L.category}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:L.items.map($=>e.jsx(b,{variant:"outline",size:"sm",className:"justify-start h-auto py-2 px-3",onClick:()=>de($.pattern,$.moveCursor||0),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsxs("div",{className:"flex items-center gap-2 w-full",children:[e.jsx("span",{className:"text-xs font-medium",children:$.label}),e.jsx("code",{className:"ml-auto text-xs bg-muted px-1.5 py-0.5 rounded font-mono",children:$.pattern})]}),e.jsx("span",{className:"text-xs text-muted-foreground mt-0.5",children:$.desc})]})},$.label))})]},L.category)),e.jsxs("div",{className:"space-y-2 border-t pt-4",children:[e.jsx("h5",{className:"text-xs font-semibold text-primary",children:"完整示例模板"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>X("^(?P\\S{1,20})是这样的$"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsxs("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:["^(?P\\S","{1,20}",")是这样的$"]}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「某事物是这样的」并捕获事物名称"})]})}),e.jsx(b,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>X("(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「我没要求你做某事」并捕获具体行为"})]})}),e.jsx(b,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>X("(?P.+?)(?:是|为什么|怎么)"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?P.+?)(?:是|为什么|怎么)"}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"捕获问题主题词"})]})})]})]})]}),e.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 使用提示"}),e.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"点击输入框设置光标位置,然后点击按钮插入模式"}),e.jsxs("li",{children:["命名捕获组格式:",e.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"(?P<名称>模式)"})]}),e.jsxs("li",{children:["在 reaction 中使用 ",e.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"[名称]"})," 引用捕获的内容"]}),e.jsx("li",{children:"切换到测试器标签页验证正则表达式效果"})]})]})]}),e.jsxs(_t,{value:"test",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{className:"text-sm font-medium",children:"当前正则表达式"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:z||"(未设置)"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"test-text",className:"text-sm font-medium",children:"测试文本"}),e.jsx(Ot,{id:"test-text",value:he,onChange:L=>ye(L.target.value),placeholder:`在此输入要测试的文本... -例如:打游戏是这样的`,className:"min-h-[100px] text-sm"})]}),je&&e.jsxs("div",{className:"rounded-md bg-destructive/10 border border-destructive/20 p-3",children:[e.jsx("p",{className:"text-sm text-destructive font-medium",children:"正则表达式错误"}),e.jsx("p",{className:"text-xs text-destructive/80 mt-1",children:je})]}),!je&&he&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"flex items-center gap-2",children:be&&be.length>0?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-green-500"}),e.jsxs("span",{className:"text-sm font-medium text-green-600 dark:text-green-400",children:["匹配成功 (",be.length," 处)"]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-gray-400"}),e.jsx("span",{className:"text-sm font-medium text-muted-foreground",children:"无匹配"})]})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{className:"text-sm font-medium",children:"匹配高亮"}),e.jsx(Ie,{className:"h-40 rounded-md bg-muted p-3",children:e.jsx("div",{className:"text-sm break-words",children:ge()})})]}),Object.keys(y).length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{className:"text-sm font-medium",children:"命名捕获组"}),e.jsx(Ie,{className:"h-32 rounded-md border p-3",children:e.jsx("div",{className:"space-y-2",children:Object.entries(y).map(([L,$])=>e.jsxs("div",{className:"flex items-start gap-2 text-sm",children:[e.jsxs("span",{className:"font-mono font-semibold text-primary min-w-[80px]",children:["[",L,"]"]}),e.jsx("span",{className:"text-muted-foreground",children:"="}),e.jsx("span",{className:"font-mono bg-muted px-2 py-0.5 rounded",children:$})]},L))})})]}),Object.keys(y).length>0&&B&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{className:"text-sm font-medium",children:"Reaction 替换预览"}),e.jsx(Ie,{className:"h-48 rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3",children:e.jsx("div",{className:"text-sm break-words",children:H})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"reaction 中的 [name] 已被替换为对应的捕获组值"})]})]}),e.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 测试说明"}),e.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"匹配的文本会以黄色背景高亮显示"}),e.jsx("li",{children:"命名捕获组的值会显示在下方列表中"}),e.jsx("li",{children:"Reaction 替换预览显示最终生成的反应内容"}),e.jsx("li",{children:"如需修改正则,切换回构建器标签页"})]})]})]})]})})]})]})},T=()=>{h({...n,keyword_rules:[...n.keyword_rules,{keywords:[],reaction:""}]})},E=z=>{h({...n,keyword_rules:n.keyword_rules.filter((B,X)=>X!==z)})},R=(z,B,X)=>{const S=[...n.keyword_rules];typeof X=="string"&&(S[z]={...S[z],reaction:X}),h({...n,keyword_rules:S})},F=z=>{const B=[...n.keyword_rules];B[z]={...B[z],keywords:[...B[z].keywords||[],""]},h({...n,keyword_rules:B})},U=(z,B)=>{const X=[...n.keyword_rules];X[z]={...X[z],keywords:(X[z].keywords||[]).filter((S,O)=>O!==B)},h({...n,keyword_rules:X})},M=(z,B,X)=>{const S=[...n.keyword_rules],O=[...S[z].keywords||[]];O[B]=X,S[z]={...S[z],keywords:O},h({...n,keyword_rules:S})},Z=({rule:z})=>{const B=`{ regex = [${(z.regex||[]).map(X=>`"${X}"`).join(", ")}], reaction = "${z.reaction}" }`;return e.jsxs(Ma,{children:[e.jsx(Da,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",children:[e.jsx(Ys,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(va,{className:"w-[95vw] sm:w-[500px]",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx(Ie,{className:"h-60 rounded-md bg-muted p-3",children:e.jsx("pre",{className:"font-mono text-xs break-all",children:B})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},G=({rule:z})=>{const B=`[[keyword_reaction.keyword_rules]] -keywords = [${(z.keywords||[]).map(X=>`"${X}"`).join(", ")}] -reaction = "${z.reaction}"`;return e.jsxs(Ma,{children:[e.jsx(Da,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",children:[e.jsx(Ys,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(va,{className:"w-[95vw] sm:w-[500px]",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx(Ie,{className:"h-60 rounded-md bg-muted p-3",children:e.jsx("pre",{className:"font-mono text-xs whitespace-pre-wrap break-all",children:B})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"关键词反应配置"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"配置触发特定反应的关键词和正则表达式规则"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"正则表达式规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用正则表达式匹配消息内容"})]}),e.jsxs(b,{onClick:p,size:"sm",variant:"outline",children:[e.jsx(cs,{className:"h-4 w-4 mr-1"}),"添加正则规则"]})]}),e.jsxs("div",{className:"space-y-3",children:[n.regex_rules.map((z,B)=>e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["正则规则 ",B+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(k,{regex:z.regex&&z.regex[0]||"",reaction:z.reaction,onRegexChange:X=>v(B,"regex",X),onReactionChange:X=>v(B,"reaction",X)}),e.jsx(Z,{rule:z}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsx(b,{size:"sm",variant:"ghost",children:e.jsx(Pe,{className:"h-4 w-4"})})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:["确定要删除正则规则 ",B+1," 吗?此操作无法撤销。"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>w(B),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"正则表达式(Python 语法)"}),e.jsx(ce,{value:z.regex&&z.regex[0]||"",onChange:X=>v(B,"regex",X.target.value),placeholder:"例如:^(?P\\\\S{1,20})是这样的$ (点击正则编辑器按钮可视化构建)",className:"font-mono text-sm"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:'支持命名捕获组 (?Ppattern),可在 reaction 中使用 [name] 引用。点击"正则编辑器"可视化构建和测试!'})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"反应内容"}),e.jsx(Ot,{value:z.reaction,onChange:X=>v(B,"reaction",X.target.value),placeholder:`触发后麦麦的反应... -可以使用 [捕获组名] 来引用正则表达式中的内容`,rows:3,className:"text-sm"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"使用 [捕获组名] 引用正则表达式中的命名捕获组,例如 [n] 会被替换为捕获的内容"})]})]})]},B)),n.regex_rules.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无正则规则,点击"添加正则规则"开始配置'})]})]}),e.jsxs("div",{className:"space-y-4 border-t pt-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"关键词规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用关键词列表匹配消息内容"})]}),e.jsxs(b,{onClick:T,size:"sm",variant:"outline",children:[e.jsx(cs,{className:"h-4 w-4 mr-1"}),"添加关键词规则"]})]}),e.jsxs("div",{className:"space-y-3",children:[n.keyword_rules.map((z,B)=>e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["关键词规则 ",B+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(G,{rule:z}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsx(b,{size:"sm",variant:"ghost",children:e.jsx(Pe,{className:"h-4 w-4"})})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:["确定要删除关键词规则 ",B+1," 吗?此操作无法撤销。"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>E(B),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{className:"text-xs font-medium",children:"关键词列表"}),e.jsxs(b,{onClick:()=>F(B),size:"sm",variant:"ghost",children:[e.jsx(cs,{className:"h-3 w-3 mr-1"}),"添加关键词"]})]}),e.jsxs("div",{className:"space-y-2",children:[(z.keywords||[]).map((X,S)=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{value:X,onChange:O=>M(B,S,O.target.value),placeholder:"关键词",className:"flex-1"}),e.jsx(b,{onClick:()=>U(B,S),size:"sm",variant:"ghost",children:e.jsx(Pe,{className:"h-4 w-4"})})]},S)),(!z.keywords||z.keywords.length===0)&&e.jsx("p",{className:"text-xs text-muted-foreground text-center py-2",children:'暂无关键词,点击"添加关键词"开始配置'})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-xs font-medium",children:"反应内容"}),e.jsx(Ot,{value:z.reaction,onChange:X=>R(B,"reaction",X.target.value),placeholder:"触发后麦麦的反应...",rows:3,className:"text-sm"})]})]})]},B)),n.keyword_rules.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无关键词规则,点击"添加关键词规则"开始配置'})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"回复后处理配置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"enable_response_post_process",checked:r.enable_response_post_process,onCheckedChange:z=>x({...r,enable_response_post_process:z})}),e.jsx(N,{htmlFor:"enable_response_post_process",className:"cursor-pointer",children:"启用回复后处理"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"包括错别字生成器和回复分割器"})]}),r.enable_response_post_process&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"border-t pt-6 space-y-4",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[e.jsx(Ge,{id:"enable_chinese_typo",checked:c.enable,onCheckedChange:z=>f({...c,enable:z})}),e.jsx(N,{htmlFor:"enable_chinese_typo",className:"cursor-pointer font-semibold",children:"中文错别字生成器"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"为回复添加随机错别字,让麦麦的回复更自然"}),c.enable&&e.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"error_rate",className:"text-xs font-medium",children:"单字替换概率"}),e.jsx(ce,{id:"error_rate",type:"number",step:"0.001",min:"0",max:"1",value:c.error_rate,onChange:z=>f({...c,error_rate:parseFloat(z.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"min_freq",className:"text-xs font-medium",children:"最小字频阈值"}),e.jsx(ce,{id:"min_freq",type:"number",min:"0",value:c.min_freq,onChange:z=>f({...c,min_freq:parseInt(z.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"tone_error_rate",className:"text-xs font-medium",children:"声调错误概率"}),e.jsx(ce,{id:"tone_error_rate",type:"number",step:"0.01",min:"0",max:"1",value:c.tone_error_rate,onChange:z=>f({...c,tone_error_rate:parseFloat(z.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"word_replace_rate",className:"text-xs font-medium",children:"整词替换概率"}),e.jsx(ce,{id:"word_replace_rate",type:"number",step:"0.001",min:"0",max:"1",value:c.word_replace_rate,onChange:z=>f({...c,word_replace_rate:parseFloat(z.target.value)})})]})]})]})}),e.jsx("div",{className:"border-t pt-6 space-y-4",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[e.jsx(Ge,{id:"enable_response_splitter",checked:d.enable,onCheckedChange:z=>j({...d,enable:z})}),e.jsx(N,{htmlFor:"enable_response_splitter",className:"cursor-pointer font-semibold",children:"回复分割器"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"控制回复的长度和句子数量"}),d.enable&&e.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"max_length",className:"text-xs font-medium",children:"最大长度"}),e.jsx(ce,{id:"max_length",type:"number",min:"1",value:d.max_length,onChange:z=>j({...d,max_length:parseInt(z.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大字符数"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"max_sentence_num",className:"text-xs font-medium",children:"最大句子数"}),e.jsx(ce,{id:"max_sentence_num",type:"number",min:"1",value:d.max_sentence_num,onChange:z=>j({...d,max_sentence_num:parseInt(z.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大句子数量"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"enable_kaomoji_protection",checked:d.enable_kaomoji_protection,onCheckedChange:z=>j({...d,enable_kaomoji_protection:z})}),e.jsx(N,{htmlFor:"enable_kaomoji_protection",className:"cursor-pointer",children:"启用颜文字保护"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"enable_overflow_return_all",checked:d.enable_overflow_return_all,onCheckedChange:z=>j({...d,enable_overflow_return_all:z})}),e.jsx(N,{htmlFor:"enable_overflow_return_all",className:"cursor-pointer",children:"超出时一次性返回全部"})]}),e.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"当句子数量超出限制时,合并后一次性返回所有内容"})]})]})})]})]})]})}function L0({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"情绪设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{checked:n.enable_mood,onCheckedChange:c=>r({...n,enable_mood:c})}),e.jsx(N,{className:"cursor-pointer",children:"启用情绪系统"})]}),n.enable_mood&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"情绪更新阈值"}),e.jsx(ce,{type:"number",min:"1",value:n.mood_update_threshold,onChange:c=>r({...n,mood_update_threshold:parseInt(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"越高,更新越慢"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"情感特征"}),e.jsx(Ot,{value:n.emotion_style,onChange:c=>r({...n,emotion_style:c.target.value}),placeholder:"影响情绪的变化情况",rows:2})]})]})]})]})}function U0({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"语音设置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{checked:n.enable_asr,onCheckedChange:c=>r({...n,enable_asr:c})}),e.jsx(N,{className:"cursor-pointer",children:"启用语音识别"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"启用后麦麦可以识别语音消息,需要配置语音识别模型"})]})}function B0({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{checked:n.enable,onCheckedChange:c=>r({...n,enable:c})}),e.jsx(N,{className:"cursor-pointer",children:"启用 LPMM 知识库"})]}),n.enable&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"LPMM 模式"}),e.jsxs(Be,{value:n.lpmm_mode,onValueChange:c=>r({...n,lpmm_mode:c}),children:[e.jsx(Re,{children:e.jsx(He,{placeholder:"选择 LPMM 模式"})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"classic",children:"经典模式"}),e.jsx(ne,{value:"agent",children:"Agent 模式"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"同义词搜索 TopK"}),e.jsx(ce,{type:"number",min:"1",value:n.rag_synonym_search_top_k,onChange:c=>r({...n,rag_synonym_search_top_k:parseInt(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"同义词阈值"}),e.jsx(ce,{type:"number",step:"0.1",min:"0",max:"1",value:n.rag_synonym_threshold,onChange:c=>r({...n,rag_synonym_threshold:parseFloat(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"实体提取线程数"}),e.jsx(ce,{type:"number",min:"1",value:n.info_extraction_workers,onChange:c=>r({...n,info_extraction_workers:parseInt(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"嵌入向量维度"}),e.jsx(ce,{type:"number",min:"1",value:n.embedding_dimension,onChange:c=>r({...n,embedding_dimension:parseInt(c.target.value)})})]})]})]})]})]})}function H0({config:n,onChange:r}){const[c,d]=u.useState(""),[h,x]=u.useState("WARNING"),f=()=>{c&&!n.suppress_libraries.includes(c)&&(r({...n,suppress_libraries:[...n.suppress_libraries,c]}),d(""))},j=E=>{r({...n,suppress_libraries:n.suppress_libraries.filter(R=>R!==E)})},p=()=>{c&&!n.library_log_levels[c]&&(r({...n,library_log_levels:{...n.library_log_levels,[c]:h}}),d(""),x("WARNING"))},w=E=>{const R={...n.library_log_levels};delete R[E],r({...n,library_log_levels:R})},v=["DEBUG","INFO","WARNING","ERROR","CRITICAL"],k=["FULL","compact","lite"],T=["none","title","full"];return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"日志配置"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"日期格式"}),e.jsx(ce,{value:n.date_style,onChange:E=>r({...n,date_style:E.target.value}),placeholder:"例如: m-d H:i:s"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"m=月, d=日, H=时, i=分, s=秒"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"日志级别样式"}),e.jsxs(Be,{value:n.log_level_style,onValueChange:E=>r({...n,log_level_style:E}),children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsx(Le,{children:k.map(E=>e.jsx(ne,{value:E,children:E},E))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"日志文本颜色"}),e.jsxs(Be,{value:n.color_text,onValueChange:E=>r({...n,color_text:E}),children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsx(Le,{children:T.map(E=>e.jsx(ne,{value:E,children:E},E))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"全局日志级别"}),e.jsxs(Be,{value:n.log_level,onValueChange:E=>r({...n,log_level:E}),children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsx(Le,{children:v.map(E=>e.jsx(ne,{value:E,children:E},E))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"控制台日志级别"}),e.jsxs(Be,{value:n.console_log_level,onValueChange:E=>r({...n,console_log_level:E}),children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsx(Le,{children:v.map(E=>e.jsx(ne,{value:E,children:E},E))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"文件日志级别"}),e.jsxs(Be,{value:n.file_log_level,onValueChange:E=>r({...n,file_log_level:E}),children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsx(Le,{children:v.map(E=>e.jsx(ne,{value:E,children:E},E))})]})]})]})]}),e.jsxs("div",{children:[e.jsx(N,{className:"mb-2 block",children:"完全屏蔽的库"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(ce,{value:c,onChange:E=>d(E.target.value),placeholder:"输入库名",className:"flex-1",onKeyDown:E=>{E.key==="Enter"&&(E.preventDefault(),f())}}),e.jsx(b,{onClick:f,size:"sm",className:"flex-shrink-0",children:e.jsx(cs,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:n.suppress_libraries.map(E=>e.jsxs("div",{className:"flex items-center gap-1 bg-secondary px-3 py-1 rounded-md",children:[e.jsx("span",{className:"text-sm",children:E}),e.jsx(b,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0",onClick:()=>j(E),children:e.jsx(Pe,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},E))})]}),e.jsxs("div",{children:[e.jsx(N,{className:"mb-2 block",children:"特定库的日志级别"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(ce,{value:c,onChange:E=>d(E.target.value),placeholder:"输入库名",className:"flex-1"}),e.jsxs(Be,{value:h,onValueChange:x,children:[e.jsx(Re,{className:"w-32",children:e.jsx(He,{})}),e.jsx(Le,{children:v.map(E=>e.jsx(ne,{value:E,children:E},E))})]}),e.jsx(b,{onClick:p,size:"sm",children:e.jsx(cs,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"space-y-2",children:Object.entries(n.library_log_levels).map(([E,R])=>e.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[e.jsx("span",{className:"text-sm font-medium",children:E}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:R}),e.jsx(b,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>w(E),children:e.jsx(Pe,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]})]},E))})]})]})}function q0({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"调试配置"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(N,{children:"显示 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否在日志中显示提示词"})]}),e.jsx(Ge,{checked:n.show_prompt,onCheckedChange:c=>r({...n,show_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(N,{children:"显示回复器 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的提示词"})]}),e.jsx(Ge,{checked:n.show_replyer_prompt,onCheckedChange:c=>r({...n,show_replyer_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(N,{children:"显示回复器推理"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的推理过程"})]}),e.jsx(Ge,{checked:n.show_replyer_reasoning,onCheckedChange:c=>r({...n,show_replyer_reasoning:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(N,{children:"显示 Jargon Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示术语相关的提示词"})]}),e.jsx(Ge,{checked:n.show_jargon_prompt,onCheckedChange:c=>r({...n,show_jargon_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(N,{children:"显示记忆检索 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示记忆检索相关的提示词"})]}),e.jsx(Ge,{checked:n.show_memory_prompt,onCheckedChange:c=>r({...n,show_memory_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(N,{children:"显示 Planner Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 Planner 的提示词和原始返回结果"})]}),e.jsx(Ge,{checked:n.show_planner_prompt,onCheckedChange:c=>r({...n,show_planner_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(N,{children:"显示 LPMM 相关文段"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 LPMM 知识库找到的相关文段日志"})]}),e.jsx(Ge,{checked:n.show_lpmm_paragraph,onCheckedChange:c=>r({...n,show_lpmm_paragraph:c})})]})]})]})}function G0({config:n,onChange:r}){const[c,d]=u.useState(""),h=()=>{c&&!n.auth_token.includes(c)&&(r({...n,auth_token:[...n.auth_token,c]}),d(""))},x=f=>{r({...n,auth_token:n.auth_token.filter((j,p)=>p!==f)})};return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"MaimMessage 服务配置"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(N,{children:"启用自定义服务器"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否使用自定义的 MaimMessage 服务器"})]}),e.jsx(Ge,{checked:n.use_custom,onCheckedChange:f=>r({...n,use_custom:f})})]}),n.use_custom&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"主机地址"}),e.jsx(ce,{value:n.host,onChange:f=>r({...n,host:f.target.value}),placeholder:"127.0.0.1"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"端口号"}),e.jsx(ce,{type:"number",value:n.port,onChange:f=>r({...n,port:parseInt(f.target.value)}),placeholder:"8090"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"连接模式"}),e.jsxs(Be,{value:n.mode,onValueChange:f=>r({...n,mode:f}),children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"ws",children:"WebSocket (ws)"}),e.jsx(ne,{value:"tcp",children:"TCP"})]})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{checked:n.use_wss,onCheckedChange:f=>r({...n,use_wss:f}),disabled:n.mode!=="ws"}),e.jsx(N,{children:"使用 WSS 安全连接"})]})]}),n.use_wss&&n.mode==="ws"&&e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"SSL 证书文件路径"}),e.jsx(ce,{value:n.cert_file,onChange:f=>r({...n,cert_file:f.target.value}),placeholder:"cert.pem"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"SSL 密钥文件路径"}),e.jsx(ce,{value:n.key_file,onChange:f=>r({...n,key_file:f.target.value}),placeholder:"key.pem"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx(N,{className:"mb-2 block",children:"认证令牌"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:"用于 API 验证,为空则不启用验证"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(ce,{value:c,onChange:f=>d(f.target.value),placeholder:"输入认证令牌",onKeyDown:f=>{f.key==="Enter"&&(f.preventDefault(),h())}}),e.jsx(b,{onClick:h,size:"sm",children:e.jsx(cs,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"space-y-2",children:n.auth_token.map((f,j)=>e.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[e.jsx("span",{className:"text-sm font-mono",children:f}),e.jsx(b,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>x(j),children:e.jsx(Pe,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},j))})]})]})}function V0({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"统计信息"}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(N,{children:"启用统计信息发送"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"发送匿名统计信息,帮助我们了解全球有多少只麦麦在运行"})]}),e.jsx(Ge,{checked:n.enable,onCheckedChange:c=>r({...n,enable:c})})]})]})}const ai=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{className:"relative w-full overflow-auto",children:e.jsx("table",{ref:c,className:K("w-full caption-bottom text-sm",n),...r})}));ai.displayName="Table";const li=u.forwardRef(({className:n,...r},c)=>e.jsx("thead",{ref:c,className:K("[&_tr]:border-b",n),...r}));li.displayName="TableHeader";const ni=u.forwardRef(({className:n,...r},c)=>e.jsx("tbody",{ref:c,className:K("[&_tr:last-child]:border-0",n),...r}));ni.displayName="TableBody";const F0=u.forwardRef(({className:n,...r},c)=>e.jsx("tfoot",{ref:c,className:K("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",n),...r}));F0.displayName="TableFooter";const gs=u.forwardRef(({className:n,...r},c)=>e.jsx("tr",{ref:c,className:K("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",n),...r}));gs.displayName="TableRow";const at=u.forwardRef(({className:n,...r},c)=>e.jsx("th",{ref:c,className:K("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",n),...r}));at.displayName="TableHead";const $e=u.forwardRef(({className:n,...r},c)=>e.jsx("td",{ref:c,className:K("px-4 py-3 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",n),...r}));$e.displayName="TableCell";const $0=u.forwardRef(({className:n,...r},c)=>e.jsx("caption",{ref:c,className:K("mt-4 text-sm text-muted-foreground",n),...r}));$0.displayName="TableCaption";const ao=u.forwardRef(({className:n,...r},c)=>e.jsx(Rs,{ref:c,className:K("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",n),...r}));ao.displayName=Rs.displayName;const lo=u.forwardRef(({className:n,...r},c)=>e.jsxs("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[e.jsx(Os,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),e.jsx(Rs.Input,{ref:c,className:K("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",n),...r})]}));lo.displayName=Rs.Input.displayName;const no=u.forwardRef(({className:n,...r},c)=>e.jsx(Rs.List,{ref:c,className:K("max-h-[300px] overflow-y-auto overflow-x-hidden",n),...r}));no.displayName=Rs.List.displayName;const io=u.forwardRef((n,r)=>e.jsx(Rs.Empty,{ref:r,className:"py-6 text-center text-sm",...n}));io.displayName=Rs.Empty.displayName;const hr=u.forwardRef(({className:n,...r},c)=>e.jsx(Rs.Group,{ref:c,className:K("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",n),...r}));hr.displayName=Rs.Group.displayName;const Q0=u.forwardRef(({className:n,...r},c)=>e.jsx(Rs.Separator,{ref:c,className:K("-mx-1 h-px bg-border",n),...r}));Q0.displayName=Rs.Separator.displayName;const xr=u.forwardRef(({className:n,...r},c)=>e.jsx(Rs.Item,{ref:c,className:K("relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",n),...r}));xr.displayName=Rs.Item.displayName;const bs=u.forwardRef(({className:n,...r},c)=>e.jsx(Qp,{ref:c,className:K("grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",n),...r,children:e.jsx(Kb,{className:K("grid place-content-center text-current"),children:e.jsx(ga,{className:"h-4 w-4"})})}));bs.displayName=Qp.displayName;const wg=u.createContext(null),_g="maibot-completed-tours";function Y0(){try{const n=localStorage.getItem(_g);return n?new Set(JSON.parse(n)):new Set}catch{return new Set}}function sp(n){localStorage.setItem(_g,JSON.stringify([...n]))}function X0({children:n}){const[r,c]=u.useState({activeTourId:null,stepIndex:0,isRunning:!1}),d=u.useRef(new Map),[,h]=u.useState(0),[x,f]=u.useState(Y0),j=u.useCallback((G,z)=>{d.current.set(G,z),h(B=>B+1)},[]),p=u.useCallback(G=>{d.current.delete(G),c(z=>z.activeTourId===G?{...z,activeTourId:null,isRunning:!1,stepIndex:0}:z)},[]),w=u.useCallback((G,z=0)=>{d.current.has(G)&&c({activeTourId:G,stepIndex:z,isRunning:!0})},[]),v=u.useCallback(()=>{c(G=>({...G,isRunning:!1}))},[]),k=u.useCallback(G=>{c(z=>({...z,stepIndex:G}))},[]),T=u.useCallback(()=>{c(G=>({...G,stepIndex:G.stepIndex+1}))},[]),E=u.useCallback(()=>{c(G=>({...G,stepIndex:Math.max(0,G.stepIndex-1)}))},[]),R=u.useCallback(()=>r.activeTourId?d.current.get(r.activeTourId)||[]:[],[r.activeTourId]),F=u.useCallback(G=>{f(z=>{const B=new Set(z);return B.add(G),sp(B),B})},[]),U=u.useCallback(G=>{const{action:z,index:B,status:X,type:S}=G,O=["finished","skipped"];if(z==="close"){c(se=>({...se,isRunning:!1,stepIndex:0}));return}O.includes(X)?c(se=>(X==="finished"&&se.activeTourId&&setTimeout(()=>F(se.activeTourId),0),{...se,isRunning:!1,stepIndex:0})):S==="step:after"&&(z==="next"?c(se=>({...se,stepIndex:B+1})):z==="prev"&&c(se=>({...se,stepIndex:B-1})))},[F]),M=u.useCallback(G=>x.has(G),[x]),Z=u.useCallback(G=>{f(z=>{const B=new Set(z);return B.delete(G),sp(B),B})},[]);return e.jsx(wg.Provider,{value:{state:r,tours:d.current,registerTour:j,unregisterTour:p,startTour:w,stopTour:v,goToStep:k,nextStep:T,prevStep:E,getCurrentSteps:R,handleJoyrideCallback:U,isTourCompleted:M,markTourCompleted:F,resetTourCompleted:Z},children:n})}function Qu(){const n=u.useContext(wg);if(!n)throw new Error("useTour must be used within a TourProvider");return n}const K0={options:{zIndex:1e4,primaryColor:"hsl(var(--primary))",textColor:"hsl(var(--foreground))",backgroundColor:"hsl(var(--background))",arrowColor:"hsl(var(--background))",overlayColor:"rgba(0, 0, 0, 0.5)"},tooltip:{borderRadius:"var(--radius)",padding:"1rem"},tooltipContainer:{textAlign:"left"},tooltipTitle:{fontSize:"1rem",fontWeight:600,marginBottom:"0.5rem"},tooltipContent:{fontSize:"0.875rem",padding:"0.5rem 0"},buttonNext:{backgroundColor:"hsl(var(--primary))",color:"hsl(var(--primary-foreground))",borderRadius:"calc(var(--radius) - 2px)",fontSize:"0.875rem",padding:"0.5rem 1rem"},buttonBack:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem",marginRight:"0.5rem"},buttonSkip:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem"},buttonClose:{color:"hsl(var(--muted-foreground))"},spotlight:{borderRadius:"var(--radius)"}},Z0={back:"上一步",close:"关闭",last:"完成",next:"下一步",nextLabelWithProgress:"下一步 ({step}/{steps})",open:"打开对话框",skip:"跳过"};function J0(){const{state:n,getCurrentSteps:r,handleJoyrideCallback:c}=Qu(),d=r(),[h,x]=u.useState(!1),f=u.useRef(n.stepIndex),j=u.useRef(null);u.useEffect(()=>{f.current!==n.stepIndex&&(x(!1),f.current=n.stepIndex)},[n.stepIndex]),u.useEffect(()=>{if(!n.isRunning||d.length===0){x(!1);return}const v=d[n.stepIndex];if(!v){x(!1);return}const k=v.target;if(k==="body"){x(!0);return}x(!1);const T=setTimeout(()=>{const E=()=>{const M=document.querySelector(k);if(M){const Z=M.getBoundingClientRect();if(Z.width>0&&Z.height>0)return!0}return!1};if(E()){setTimeout(()=>x(!0),100);return}const R=setInterval(()=>{E()&&(clearInterval(R),setTimeout(()=>x(!0),100))},100),F=setTimeout(()=>{clearInterval(R),x(!0)},5e3),U=()=>{clearInterval(R),clearTimeout(F)};j.current=U},150);return()=>{clearTimeout(T),j.current&&(j.current(),j.current=null)}},[n.isRunning,n.stepIndex,d]);const p=u.useRef(null);if(u.useEffect(()=>{let v=document.getElementById("tour-portal-container");return v||(v=document.createElement("div"),v.id="tour-portal-container",v.style.cssText="position: fixed; top: 0; left: 0; z-index: 99999; pointer-events: none;",document.body.appendChild(v)),p.current=v,()=>{}},[]),!n.isRunning||d.length===0||!h)return null;const w=e.jsx(Hy,{steps:d,stepIndex:n.stepIndex,run:n.isRunning,continuous:!0,showSkipButton:!0,showProgress:!0,disableOverlayClose:!0,disableScrolling:!1,disableScrollParentFix:!1,callback:c,styles:K0,locale:Z0,scrollOffset:80,scrollToFirstStep:!0,floaterProps:{styles:{floater:{zIndex:99999}},disableAnimation:!0}},`tour-step-${n.stepIndex}`);return p.current?Jv.createPortal(w,p.current):w}const tl="model-assignment-tour",Sg=[{target:"body",content:"本引导旨在帮助你配置模型提供商和对应的模型,并为麦麦的各个组件分配合适的模型。",placement:"center",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="sidebar-model-provider"]',content:'第一步,你需要配置模型提供商。模型提供商决定了你要使用谁家的模型,无论是单一厂商(如 DeepSeek),还是模型平台(如 Siliconflow),都可以在这里进行配置。点击"下一步"进入配置页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-provider-button"]',content:'点击"添加提供商"按钮,开始配置你的模型提供商。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="provider-dialog"]',content:"在这里,你可以选择你想要配置的模型提供商,填写相关信息后保存即可。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-name-input"]',content:"这里的名称是你为这个模型提供商起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-apikey-input"]',content:"这里需要填写你从模型提供商那里获取的 API 密钥,用于验证和调用模型服务。对于不同的提供商,获取 API 密钥的方式可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-url-input"]',content:"这里需要填写模型提供商的 API 访问地址,确保填写正确以便系统能够连接到模型服务。对于不同的提供商,API 地址可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-template-select"]',content:"当然,如果你不知道如何填写这些信息,很多模型提供商在这里都提供了预设的模板供你选择,选择对应的模板后,相关信息会自动填充。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-save-button"]',content:"填写完所有信息后,点击保存按钮,模型提供商就配置完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-cancel-button"]',content:"因为这次咱们什么都没有填写,所以点击取消按钮退出吧。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="sidebar-model-management"]',content:'配置好模型提供商后,接下来我们需要为麦麦添加模型并分配功能。点击"下一步"进入模型管理页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-model-button"]',content:'在为麦麦的组件分配模型之前,首先需要添加你想要分配的模型,点击"添加模型"按钮开始添加。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="model-dialog"]',content:"在这里,你可以选择你之前配置好的模型提供商,然后选择对应的模型来添加。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-name-input"]',content:"这里的模型名称是你为这个模型起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-provider-select"]',content:"在这里选择你之前配置好的模型提供商,这样系统才能知道你要添加哪个提供商的模型。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-identifier-input"]',content:"这里需要填写你想要添加的模型的标识符,不同的模型提供商可能有不同的标识符格式,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-save-button"]',content:"填写完所有信息后,点击保存按钮,模型就添加完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-cancel-button"]',content:"当然,因为这次咱们什么都没有填写,所以直接点击取消按钮退出吧,等你准备好了再来添加模型。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="tasks-tab-trigger"]',content:'最后一步,添加好模型后,切换到"为模型分配功能"标签页,为麦麦的各个组件分配合适的模型。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="task-model-select"]',content:"在这里,你可以为每个组件选择一个或多个合适的模型,选择完成后配置会自动保存。恭喜你完成了模型配置的学习!",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1}],Cg={0:"/config/model",1:"/config/model",2:"/config/modelProvider",3:"/config/modelProvider",4:"/config/modelProvider",5:"/config/modelProvider",6:"/config/modelProvider",7:"/config/modelProvider",8:"/config/modelProvider",9:"/config/modelProvider",10:"/config/modelProvider",11:"/config/model",12:"/config/model",13:"/config/model",14:"/config/model",15:"/config/model",16:"/config/model",17:"/config/model",18:"/config/model",19:"/config/model"},lr=[{id:"siliconflow",name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",client_type:"openai",display_name:"硅基流动 (SiliconFlow)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"deepseek",name:"DeepSeek",base_url:"https://api.deepseek.com",client_type:"openai",display_name:"DeepSeek",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"rinkoai",name:"RinkoAI",base_url:"https://rinkoai.com/v1",client_type:"openai",display_name:"RinkoAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"zhipu",name:"ZhipuAI",base_url:"https://open.bigmodel.cn/api/paas/v4",client_type:"openai",display_name:"智谱 AI (ZhipuAI / GLM)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"moonshot",name:"Moonshot",base_url:"https://api.moonshot.cn/v1",client_type:"openai",display_name:"月之暗面 (Moonshot / Kimi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"doubao",name:"Doubao",base_url:"https://ark.cn-beijing.volces.com/api/v3",client_type:"openai",display_name:"字节豆包 (Doubao)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"alibaba",name:"Alibaba",base_url:"https://dashscope.aliyuncs.com/compatible-mode/v1",client_type:"openai",display_name:"阿里云百炼 (Alibaba Qwen)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"baichuan",name:"Baichuan",base_url:"https://api.baichuan-ai.com/v1",client_type:"openai",display_name:"百川智能 (Baichuan)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"minimax",name:"MiniMax",base_url:"https://api.minimax.chat/v1",client_type:"openai",display_name:"MiniMax (海螺 AI)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"stepfun",name:"StepFun",base_url:"https://api.stepfun.com/v1",client_type:"openai",display_name:"阶跃星辰 (StepFun)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"lingyi",name:"Lingyi",base_url:"https://api.lingyiwanwu.com/v1",client_type:"openai",display_name:"零一万物 (Lingyi / Yi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"openai",name:"OpenAI",base_url:"https://api.openai.com/v1",client_type:"openai",display_name:"OpenAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"xai",name:"xAI",base_url:"https://api.x.ai/v1",client_type:"openai",display_name:"xAI (Grok)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"anthropic",name:"Anthropic",base_url:"https://api.anthropic.com/v1",client_type:"openai",display_name:"Anthropic (Claude)"},{id:"gemini",name:"Gemini",base_url:"https://generativelanguage.googleapis.com/v1beta",client_type:"gemini",display_name:"Google Gemini",modelFetcher:{endpoint:"/models",parser:"gemini"}},{id:"cohere",name:"Cohere",base_url:"https://api.cohere.ai/v1",client_type:"openai",display_name:"Cohere"},{id:"groq",name:"Groq",base_url:"https://api.groq.com/openai/v1",client_type:"openai",display_name:"Groq",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"together",name:"Together AI",base_url:"https://api.together.xyz/v1",client_type:"openai",display_name:"Together AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"fireworks",name:"Fireworks",base_url:"https://api.fireworks.ai/inference/v1",client_type:"openai",display_name:"Fireworks AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"mistral",name:"Mistral",base_url:"https://api.mistral.ai/v1",client_type:"openai",display_name:"Mistral AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"perplexity",name:"Perplexity",base_url:"https://api.perplexity.ai",client_type:"openai",display_name:"Perplexity AI"},{id:"custom",name:"",base_url:"",client_type:"openai",display_name:"自定义"}];function ap(n){return n?n.replace(/\/+$/,"").toLowerCase():""}function I0(n){if(!n)return null;const r=ap(n);return lr.find(c=>c.id!=="custom"&&ap(c.base_url)===r)||null}function P0(){const[n,r]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,w]=u.useState(!1),[v,k]=u.useState(!1),[T,E]=u.useState(!1),[R,F]=u.useState(!1),[U,M]=u.useState(null),[Z,G]=u.useState(null),[z,B]=u.useState("custom"),[X,S]=u.useState(!1),[O,se]=u.useState(!1),[he,ye]=u.useState(null),[be,pe]=u.useState(!1),[je,_e]=u.useState(""),[y,q]=u.useState(new Set),[H,ie]=u.useState(!1),[_,me]=u.useState(1),[xe,Q]=u.useState(20),[de,ge]=u.useState(""),[le,L]=u.useState({}),[$,D]=u.useState(new Set),[ee,Ne]=u.useState(new Map),{toast:ze}=Rt(),We=ua(),{state:Xe,goToStep:Mt,registerTour:qt}=Qu(),re=u.useRef(null),we=u.useRef(!0);u.useEffect(()=>{qt(tl,Sg)},[qt]),u.useEffect(()=>{if(Xe.activeTourId===tl&&Xe.isRunning){const W=Cg[Xe.stepIndex];W&&!window.location.pathname.endsWith(W.replace("/config/",""))&&We({to:W})}},[Xe.stepIndex,Xe.activeTourId,Xe.isRunning,We]);const Je=u.useRef(Xe.stepIndex);u.useEffect(()=>{if(Xe.activeTourId===tl&&Xe.isRunning){const W=Je.current,ve=Xe.stepIndex;W>=3&&W<=9&&ve<3&&F(!1),W>=10&&ve>=3&&ve<=9&&(L({}),B("custom"),M({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10}),G(null),pe(!1),F(!0)),Je.current=ve}},[Xe.stepIndex,Xe.activeTourId,Xe.isRunning]),u.useEffect(()=>{if(Xe.activeTourId!==tl||!Xe.isRunning)return;const W=ve=>{const Ae=ve.target,es=Xe.stepIndex;es===2&&Ae.closest('[data-tour="add-provider-button"]')?setTimeout(()=>Mt(3),300):es===9&&Ae.closest('[data-tour="provider-cancel-button"]')&&setTimeout(()=>Mt(10),300)};return document.addEventListener("click",W,!0),()=>document.removeEventListener("click",W,!0)},[Xe,Mt]),u.useEffect(()=>{Fe()},[]);const Fe=async()=>{try{d(!0);const W=await In();r(W.api_providers||[]),w(!1),we.current=!1}catch(W){console.error("加载配置失败:",W)}finally{d(!1)}},Wt=async()=>{try{k(!0),so().catch(()=>{}),E(!0)}catch(W){console.error("重启失败:",W),E(!1),ze({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),k(!1)}},Xs=async()=>{try{x(!0),re.current&&clearTimeout(re.current);const W=await In();W.api_providers=n,await eo(W),w(!1),ze({title:"保存成功",description:"正在重启麦麦..."}),await Wt()}catch(W){console.error("保存配置失败:",W),ze({title:"保存失败",description:W.message,variant:"destructive"}),x(!1)}},Ns=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},Ke=()=>{E(!1),k(!1),ze({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},Ue=u.useCallback(async W=>{if(!we.current)try{j(!0),await Mu("api_providers",W),w(!1)}catch(ve){console.error("自动保存失败:",ve),w(!0)}finally{j(!1)}},[]);u.useEffect(()=>{if(!we.current)return w(!0),re.current&&clearTimeout(re.current),re.current=setTimeout(()=>{Ue(n)},2e3),()=>{re.current&&clearTimeout(re.current)}},[n,Ue]);const js=async()=>{try{x(!0),re.current&&clearTimeout(re.current);const W=await In();W.api_providers=n,await eo(W),w(!1),ze({title:"保存成功",description:"模型提供商配置已保存"})}catch(W){console.error("保存配置失败:",W),ze({title:"保存失败",description:W.message,variant:"destructive"})}finally{x(!1)}},ls=(W,ve)=>{if(L({}),W){const Ae=lr.find(es=>es.base_url===W.base_url&&es.client_type===W.client_type);B(Ae?.id||"custom"),M(W)}else B("custom"),M({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10});G(ve),pe(!1),F(!0)},_s=W=>{B(W),S(!1);const ve=lr.find(Ae=>Ae.id===W);ve&&ve.id!=="custom"?M(Ae=>({...Ae,name:ve.name,base_url:ve.base_url,client_type:ve.client_type})):ve?.id==="custom"&&M(Ae=>({...Ae,name:"",base_url:"",client_type:"openai"}))},Ss=u.useMemo(()=>z!=="custom",[z]),nl=async()=>{if(U?.api_key)try{await navigator.clipboard.writeText(U.api_key),ze({title:"复制成功",description:"API Key 已复制到剪贴板"})}catch{ze({title:"复制失败",description:"无法访问剪贴板",variant:"destructive"})}},il=()=>{if(!U)return;const W={};if(U.name?.trim()||(W.name="请输入提供商名称"),U.base_url?.trim()||(W.base_url="请输入基础 URL"),U.api_key?.trim()||(W.api_key="请输入 API Key"),Object.keys(W).length>0){L(W);return}L({});const ve={...U,max_retry:U.max_retry??2,timeout:U.timeout??30,retry_interval:U.retry_interval??10};if(Z!==null){const Ae=[...n];Ae[Z]=ve,r(Ae)}else r([...n,ve]);F(!1),M(null),G(null)},rl=W=>{if(!W&&U){const ve={...U,max_retry:U.max_retry??2,timeout:U.timeout??30,retry_interval:U.retry_interval??10};M(ve)}F(W)},Se=W=>{ye(W),se(!0)},Oe=()=>{if(he!==null){const W=n.filter((ve,Ae)=>Ae!==he);r(W),ze({title:"删除成功",description:"提供商已从列表中移除"})}se(!1),ye(null)},ns=W=>{const ve=new Set(y);ve.has(W)?ve.delete(W):ve.add(W),q(ve)},ds=()=>{if(y.size===us.length)q(new Set);else{const W=us.map((ve,Ae)=>n.findIndex(es=>es===us[Ae]));q(new Set(W))}},ri=()=>{if(y.size===0){ze({title:"提示",description:"请先选择要删除的提供商",variant:"default"});return}ie(!0)},rn=()=>{const W=n.filter((ve,Ae)=>!y.has(Ae));r(W),q(new Set),ie(!1),ze({title:"批量删除成功",description:`已删除 ${y.size} 个提供商`})},us=n.filter(W=>{if(!je)return!0;const ve=je.toLowerCase();return W.name.toLowerCase().includes(ve)||W.base_url.toLowerCase().includes(ve)||W.client_type.toLowerCase().includes(ve)}),Ks=Math.ceil(us.length/xe),Zs=us.slice((_-1)*xe,_*xe),Oa=()=>{const W=parseInt(de);W>=1&&W<=Ks&&(me(W),ge(""))},Ls=async W=>{D(ve=>new Set(ve).add(W));try{const ve=await N0(W);Ne(Ae=>new Map(Ae).set(W,ve)),ve.network_ok?ve.api_key_valid===!0?ze({title:"连接正常",description:`${W} 网络连接正常,API Key 有效 (${ve.latency_ms}ms)`}):ve.api_key_valid===!1?ze({title:"连接正常但 Key 无效",description:`${W} 网络连接正常,但 API Key 无效或已过期`,variant:"destructive"}):ze({title:"网络连接正常",description:`${W} 可以访问 (${ve.latency_ms}ms)`}):ze({title:"连接失败",description:ve.error||"无法连接到提供商",variant:"destructive"})}catch(ve){ze({title:"测试失败",description:ve.message,variant:"destructive"})}finally{D(ve=>{const Ae=new Set(ve);return Ae.delete(W),Ae})}},Ra=async()=>{for(const W of n)await Ls(W.name)},ba=W=>{const ve=$.has(W),Ae=ee.get(W);return ve?e.jsxs(Qe,{variant:"secondary",className:"gap-1",children:[e.jsx(vs,{className:"h-3 w-3 animate-spin"}),"测试中"]}):Ae?Ae.network_ok?Ae.api_key_valid===!0?e.jsxs(Qe,{className:"gap-1 bg-green-600 hover:bg-green-700",children:[e.jsx(oa,{className:"h-3 w-3"}),"正常"]}):Ae.api_key_valid===!1?e.jsxs(Qe,{variant:"destructive",className:"gap-1",children:[e.jsx(Ea,{className:"h-3 w-3"}),"Key无效"]}):e.jsxs(Qe,{className:"gap-1 bg-blue-600 hover:bg-blue-700",children:[e.jsx(oa,{className:"h-3 w-3"}),"可访问"]}):e.jsxs(Qe,{variant:"destructive",className:"gap-1",children:[e.jsx(Wp,{className:"h-3 w-3"}),"离线"]}):null};return c?e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})}):e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"AI模型厂商配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理 AI 模型厂商的 API 配置"})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[y.size>0&&e.jsxs(b,{onClick:ri,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(Pe,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",y.size,")"]}),e.jsxs(b,{onClick:Ra,size:"sm",variant:"outline",className:"w-full sm:w-auto",disabled:n.length===0||$.size>0,children:[e.jsx(sn,{className:"mr-2 h-4 w-4"}),$.size>0?`测试中 (${$.size})`:"测试全部"]}),e.jsxs(b,{onClick:()=>ls(null,null),size:"sm",className:"w-full sm:w-auto","data-tour":"add-provider-button",children:[e.jsx(cs,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加提供商"]}),e.jsxs(b,{onClick:js,disabled:h||f||!p||v,size:"sm",variant:"outline",className:"w-full sm:w-auto sm:min-w-[120px]",children:[e.jsx(pr,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),h?"保存中...":f?"自动保存中...":p?"保存配置":"已保存"]}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsxs(b,{disabled:h||f||v,size:"sm",className:"w-full sm:w-auto sm:min-w-[120px]",children:[e.jsx(fr,{className:"mr-2 h-4 w-4"}),v?"重启中...":p?"保存并重启":"重启麦麦"]})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认重启麦麦?"}),e.jsx(dt,{asChild:!0,children:e.jsx("div",{children:e.jsx("p",{children:p?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"})})})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:p?Xs:Wt,children:p?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsxs(al,{children:[e.jsx(za,{className:"h-4 w-4"}),e.jsxs(ll,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),e.jsxs(Ie,{className:"h-[calc(100vh-260px)]",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2 mb-4",children:[e.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[e.jsx(Os,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索提供商名称、URL 或类型...",value:je,onChange:W=>_e(W.target.value),className:"pl-9"})]}),je&&e.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",us.length," 个结果"]})]}),e.jsx("div",{className:"md:hidden space-y-3",children:us.length===0?e.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:je?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'}):Zs.map((W,ve)=>{const Ae=n.findIndex(es=>es===W);return e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("h3",{className:"font-semibold text-base truncate",children:W.name}),ba(W.name)]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1 break-all",children:W.base_url})]}),e.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>Ls(W.name),disabled:$.has(W.name),title:"测试连接",children:$.has(W.name)?e.jsx(vs,{className:"h-4 w-4 animate-spin"}):e.jsx(sn,{className:"h-4 w-4"})}),e.jsx(b,{variant:"default",size:"sm",onClick:()=>ls(W,Ae),children:e.jsx(an,{className:"h-4 w-4",strokeWidth:2,fill:"none"})}),e.jsx(b,{size:"sm",onClick:()=>Se(Ae),className:"bg-red-600 hover:bg-red-700 text-white",children:e.jsx(Pe,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"客户端类型"}),e.jsx("p",{className:"font-medium",children:W.client_type})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"最大重试"}),e.jsx("p",{className:"font-medium",children:W.max_retry})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"超时(秒)"}),e.jsx("p",{className:"font-medium",children:W.timeout})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"重试间隔(秒)"}),e.jsx("p",{className:"font-medium",children:W.retry_interval})]})]})]},ve)})}),e.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(ai,{children:[e.jsx(li,{children:e.jsxs(gs,{children:[e.jsx(at,{className:"w-12",children:e.jsx(bs,{checked:y.size===us.length&&us.length>0,onCheckedChange:ds})}),e.jsx(at,{children:"状态"}),e.jsx(at,{children:"名称"}),e.jsx(at,{children:"基础URL"}),e.jsx(at,{children:"客户端类型"}),e.jsx(at,{className:"text-right",children:"最大重试"}),e.jsx(at,{className:"text-right",children:"超时(秒)"}),e.jsx(at,{className:"text-right",children:"重试间隔(秒)"}),e.jsx(at,{className:"text-right",children:"操作"})]})}),e.jsx(ni,{children:Zs.length===0?e.jsx(gs,{children:e.jsx($e,{colSpan:9,className:"text-center text-muted-foreground py-8",children:je?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'})}):Zs.map((W,ve)=>{const Ae=n.findIndex(es=>es===W);return e.jsxs(gs,{children:[e.jsx($e,{children:e.jsx(bs,{checked:y.has(Ae),onCheckedChange:()=>ns(Ae)})}),e.jsx($e,{children:ba(W.name)||e.jsx(Qe,{variant:"outline",className:"text-muted-foreground",children:"未测试"})}),e.jsx($e,{className:"font-medium",children:W.name}),e.jsx($e,{className:"max-w-xs truncate",title:W.base_url,children:W.base_url}),e.jsx($e,{children:W.client_type}),e.jsx($e,{className:"text-right",children:W.max_retry}),e.jsx($e,{className:"text-right",children:W.timeout}),e.jsx($e,{className:"text-right",children:W.retry_interval}),e.jsx($e,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>Ls(W.name),disabled:$.has(W.name),title:"测试连接",children:$.has(W.name)?e.jsx(vs,{className:"h-4 w-4 animate-spin"}):e.jsx(sn,{className:"h-4 w-4"})}),e.jsxs(b,{variant:"default",size:"sm",onClick:()=>ls(W,Ae),children:[e.jsx(an,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(b,{size:"sm",onClick:()=>Se(Ae),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(Pe,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},ve)})})]})})}),us.length>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{htmlFor:"page-size-provider",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(Be,{value:xe.toString(),onValueChange:W=>{Q(parseInt(W)),me(1),q(new Set)},children:[e.jsx(Re,{id:"page-size-provider",className:"w-20",children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"10",children:"10"}),e.jsx(ne,{value:"20",children:"20"}),e.jsx(ne,{value:"50",children:"50"}),e.jsx(ne,{value:"100",children:"100"})]})]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(_-1)*xe+1," 到"," ",Math.min(_*xe,us.length)," 条,共 ",us.length," 条"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>me(1),disabled:_===1,className:"hidden sm:flex",children:e.jsx(gr,{className:"h-4 w-4"})}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>me(W=>Math.max(1,W-1)),disabled:_===1,children:[e.jsx(nn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:de,onChange:W=>ge(W.target.value),onKeyDown:W=>W.key==="Enter"&&Oa(),placeholder:_.toString(),className:"w-16 h-8 text-center",min:1,max:Ks}),e.jsx(b,{variant:"outline",size:"sm",onClick:Oa,disabled:!de,className:"h-8",children:"跳转"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>me(W=>W+1),disabled:_>=Ks,children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(Ol,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>me(Ks),disabled:_>=Ks,className:"hidden sm:flex",children:e.jsx(jr,{className:"h-4 w-4"})})]})]})]}),e.jsx(Qt,{open:R,onOpenChange:rl,children:e.jsxs(Ut,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"provider-dialog",preventOutsideClose:Xe.isRunning,children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:Z!==null?"编辑提供商":"添加提供商"}),e.jsx(ss,{children:"配置 API 提供商的连接信息和参数"})]}),e.jsxs("form",{onSubmit:W=>{W.preventDefault(),il()},autoComplete:"off",children:[e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":"provider-template-select",children:[e.jsx(N,{htmlFor:"template",children:"提供商模板"}),e.jsxs(Ma,{open:X,onOpenChange:S,children:[e.jsx(Da,{asChild:!0,children:e.jsxs(b,{variant:"outline",role:"combobox","aria-expanded":X,className:"w-full justify-between",children:[z?lr.find(W=>W.id===z)?.display_name:"选择提供商模板...",e.jsx(Bu,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(va,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:e.jsxs(ao,{children:[e.jsx(lo,{placeholder:"搜索提供商模板..."}),e.jsx(Ie,{className:"h-[300px]",children:e.jsxs(no,{className:"max-h-none overflow-visible",children:[e.jsx(io,{children:"未找到匹配的模板"}),e.jsx(hr,{children:lr.map(W=>e.jsxs(xr,{value:W.display_name,onSelect:()=>_s(W.id),children:[e.jsx(ga,{className:`mr-2 h-4 w-4 ${z===W.id?"opacity-100":"opacity-0"}`}),W.display_name]},W.id))})]})})]})})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"选择预设模板可自动填充 URL 和客户端类型,支持搜索"})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-name-input",children:[e.jsx(N,{htmlFor:"name",className:le.name?"text-destructive":"",children:"名称 *"}),e.jsx(ce,{id:"name",value:U?.name||"",onChange:W=>{M(ve=>ve?{...ve,name:W.target.value}:null),le.name&&L(ve=>({...ve,name:void 0}))},placeholder:"例如: DeepSeek, SiliconFlow",className:le.name?"border-destructive focus-visible:ring-destructive":""}),le.name&&e.jsx("p",{className:"text-xs text-destructive",children:le.name})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-url-input",children:[e.jsx(N,{htmlFor:"base_url",className:le.base_url?"text-destructive":"",children:"基础 URL *"}),e.jsx(ce,{id:"base_url",value:U?.base_url||"",onChange:W=>{M(ve=>ve?{...ve,base_url:W.target.value}:null),le.base_url&&L(ve=>({...ve,base_url:void 0}))},placeholder:"https://api.example.com/v1",disabled:Ss,className:`${Ss?"bg-muted cursor-not-allowed":""} ${le.base_url?"border-destructive focus-visible:ring-destructive":""}`}),le.base_url&&e.jsx("p",{className:"text-xs text-destructive",children:le.base_url}),Ss&&!le.base_url&&e.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时 URL 不可编辑,切换到"自定义"以手动配置'})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-apikey-input",children:[e.jsx(N,{htmlFor:"api_key",className:le.api_key?"text-destructive":"",children:"API Key *"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{id:"api_key",type:be?"text":"password",value:U?.api_key||"",onChange:W=>{M(ve=>ve?{...ve,api_key:W.target.value}:null),le.api_key&&L(ve=>({...ve,api_key:void 0}))},placeholder:"sk-...",className:`flex-1 ${le.api_key?"border-destructive focus-visible:ring-destructive":""}`}),e.jsx(b,{type:"button",variant:"outline",size:"icon",onClick:()=>pe(!be),title:be?"隐藏密钥":"显示密钥",children:be?e.jsx(rr,{className:"h-4 w-4"}):e.jsx(Ys,{className:"h-4 w-4"})}),e.jsx(b,{type:"button",variant:"outline",size:"icon",onClick:nl,title:"复制密钥",children:e.jsx(Jc,{className:"h-4 w-4"})})]}),le.api_key&&e.jsx("p",{className:"text-xs text-destructive",children:le.api_key})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"client_type",children:"客户端类型"}),e.jsxs(Be,{value:U?.client_type||"openai",onValueChange:W=>M(ve=>ve?{...ve,client_type:W}:null),disabled:Ss,children:[e.jsx(Re,{id:"client_type",className:Ss?"bg-muted cursor-not-allowed":"",children:e.jsx(He,{placeholder:"选择客户端类型"})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"openai",children:"OpenAI"}),e.jsx(ne,{value:"gemini",children:"Gemini"})]})]}),Ss&&e.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时客户端类型不可编辑,切换到"自定义"以手动配置'})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"max_retry",children:"最大重试"}),e.jsx(ce,{id:"max_retry",type:"number",min:"0",value:U?.max_retry??"",onChange:W=>{const ve=W.target.value===""?null:parseInt(W.target.value);M(Ae=>Ae?{...Ae,max_retry:ve}:null)},placeholder:"默认: 2"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"timeout",children:"超时(秒)"}),e.jsx(ce,{id:"timeout",type:"number",min:"1",value:U?.timeout??"",onChange:W=>{const ve=W.target.value===""?null:parseInt(W.target.value);M(Ae=>Ae?{...Ae,timeout:ve}:null)},placeholder:"默认: 30"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"retry_interval",children:"重试间隔(秒)"}),e.jsx(ce,{id:"retry_interval",type:"number",min:"1",value:U?.retry_interval??"",onChange:W=>{const ve=W.target.value===""?null:parseInt(W.target.value);M(Ae=>Ae?{...Ae,retry_interval:ve}:null)},placeholder:"默认: 10"})]})]})]}),e.jsxs(os,{children:[e.jsx(b,{type:"button",variant:"outline",onClick:()=>F(!1),"data-tour":"provider-cancel-button",children:"取消"}),e.jsx(b,{type:"submit","data-tour":"provider-save-button",children:"保存"})]})]})]})}),e.jsx(ft,{open:O,onOpenChange:se,children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:['确定要删除提供商 "',he!==null?n[he]?.name:"",'" 吗? 此操作无法撤销。']})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:Oe,children:"删除"})]})]})}),e.jsx(ft,{open:H,onOpenChange:ie,children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认批量删除"}),e.jsxs(dt,{children:["确定要删除选中的 ",y.size," 个提供商吗? 此操作无法撤销。"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:rn,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),T&&e.jsx($u,{onRestartComplete:Ns,onRestartFailed:Ke})]})}function W0({value:n,label:r,onRemove:c}){const{attributes:d,listeners:h,setNodeRef:x,transform:f,transition:j,isDragging:p}=Jy({id:n}),w={transform:Iy.Transform.toString(f),transition:j,opacity:p?.5:1};return e.jsx("div",{ref:x,style:w,className:K("inline-flex items-center gap-1",p&&"shadow-lg"),children:e.jsxs(Qe,{variant:"secondary",className:"cursor-move hover:bg-secondary/80 flex items-center gap-1",children:[e.jsx("div",{...d,...h,className:"cursor-grab active:cursor-grabbing flex items-center",children:e.jsx(xy,{className:"h-3 w-3 text-muted-foreground"})}),e.jsx("span",{children:r}),e.jsx(si,{className:"ml-1 h-3 w-3 cursor-pointer hover:text-destructive",strokeWidth:2,fill:"none",onClick:v=>{v.stopPropagation(),c(n)}})]})})}function ew({options:n,selected:r,onChange:c,placeholder:d="选择选项...",emptyText:h="未找到选项",className:x}){const[f,j]=u.useState(!1),p=Gy($f(Zy,{activationConstraint:{distance:8}}),$f(Ky,{coordinateGetter:Xy})),w=T=>{r.includes(T)?c(r.filter(E=>E!==T)):c([...r,T])},v=T=>{c(r.filter(E=>E!==T))},k=T=>{const{active:E,over:R}=T;if(R&&E.id!==R.id){const F=r.indexOf(E.id),U=r.indexOf(R.id);c(Yy(r,F,U))}};return e.jsxs(Ma,{open:f,onOpenChange:j,children:[e.jsx(Da,{asChild:!0,children:e.jsxs(b,{variant:"outline",role:"combobox","aria-expanded":f,className:K("w-full justify-between min-h-10 h-auto",x),children:[e.jsx(Vy,{sensors:p,collisionDetection:Fy,onDragEnd:k,children:e.jsx($y,{items:r,strategy:Qy,children:e.jsx("div",{className:"flex gap-1 flex-wrap flex-1",children:r.length===0?e.jsx("span",{className:"text-muted-foreground",children:d}):r.map(T=>{const E=n.find(R=>R.value===T);return e.jsx(W0,{value:T,label:E?.label||T,onRemove:v},T)})})})}),e.jsx(Bu,{className:"ml-2 h-4 w-4 shrink-0 opacity-50",strokeWidth:2,fill:"none"})]})}),e.jsx(va,{className:"w-full p-0",align:"start",children:e.jsxs(ao,{children:[e.jsx(lo,{placeholder:"搜索...",className:"h-9"}),e.jsxs(no,{children:[e.jsx(io,{children:h}),e.jsx(hr,{children:n.map(T=>{const E=r.includes(T.value);return e.jsxs(xr,{value:T.value,onSelect:()=>w(T.value),children:[e.jsx("div",{className:K("mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary",E?"bg-primary text-primary-foreground":"opacity-50 [&_svg]:invisible"),children:e.jsx(ga,{className:"h-3 w-3",strokeWidth:2,fill:"none"})}),e.jsx("span",{children:T.label})]},T.value)})})]})]})})]})}const lp=new Map,tw=300*1e3;function sw(){const[n,r]=u.useState([]),[c,d]=u.useState([]),[h,x]=u.useState([]),[f,j]=u.useState([]),[p,w]=u.useState(null),[v,k]=u.useState(!0),[T,E]=u.useState(!1),[R,F]=u.useState(!1),[U,M]=u.useState(!1),[Z,G]=u.useState(!1),[z,B]=u.useState(!1),[X,S]=u.useState(!1),[O,se]=u.useState(null),[he,ye]=u.useState(null),[be,pe]=u.useState(!1),[je,_e]=u.useState(null),[y,q]=u.useState(""),[H,ie]=u.useState(new Set),[_,me]=u.useState(!1),[xe,Q]=u.useState(1),[de,ge]=u.useState(20),[le,L]=u.useState(""),[$,D]=u.useState([]),[ee,Ne]=u.useState(!1),[ze,We]=u.useState(null),[Xe,Mt]=u.useState(!1),[qt,re]=u.useState(null),[we,Je]=u.useState({}),{toast:Fe}=Rt(),Wt=ua(),{registerTour:Xs,startTour:Ns,state:Ke,goToStep:Ue}=Qu(),js=u.useRef(null),ls=u.useRef(null),_s=u.useRef(!0);u.useEffect(()=>{Xs(tl,Sg)},[Xs]),u.useEffect(()=>{if(Ke.activeTourId===tl&&Ke.isRunning){const Y=Cg[Ke.stepIndex];Y&&!window.location.pathname.endsWith(Y.replace("/config/",""))&&Wt({to:Y})}},[Ke.stepIndex,Ke.activeTourId,Ke.isRunning,Wt]);const Ss=u.useRef(Ke.stepIndex);u.useEffect(()=>{if(Ke.activeTourId===tl&&Ke.isRunning){const Y=Ss.current,fe=Ke.stepIndex;Y>=12&&Y<=17&&fe<12&&S(!1),Ss.current=fe}},[Ke.stepIndex,Ke.activeTourId,Ke.isRunning]),u.useEffect(()=>{if(Ke.activeTourId!==tl||!Ke.isRunning)return;const Y=fe=>{const Me=fe.target,qe=Ke.stepIndex;qe===2&&Me.closest('[data-tour="add-provider-button"]')?setTimeout(()=>Ue(3),300):qe===9&&Me.closest('[data-tour="provider-cancel-button"]')?setTimeout(()=>Ue(10),300):qe===11&&Me.closest('[data-tour="add-model-button"]')?setTimeout(()=>Ue(12),300):qe===17&&Me.closest('[data-tour="model-cancel-button"]')?setTimeout(()=>Ue(18),300):qe===18&&Me.closest('[data-tour="tasks-tab-trigger"]')&&setTimeout(()=>Ue(19),300)};return document.addEventListener("click",Y,!0),()=>document.removeEventListener("click",Y,!0)},[Ke,Ue]);const nl=()=>{Ns(tl)};u.useEffect(()=>{il()},[]);const il=async()=>{try{k(!0);const Y=await In(),fe=Y.models||[];r(fe),j(fe.map(qe=>qe.name));const Me=Y.api_providers||[];d(Me.map(qe=>qe.name)),x(Me),w(Y.model_task_config||null),M(!1),_s.current=!1}catch(Y){console.error("加载配置失败:",Y)}finally{k(!1)}},rl=u.useCallback(Y=>h.find(fe=>fe.name===Y),[h]),Se=u.useCallback(async(Y,fe=!1)=>{const Me=rl(Y);if(!Me?.base_url){D([]),re(null),We('提供商配置不完整,请先在"模型提供商配置"中配置');return}if(!Me.api_key){D([]),re(null),We('该提供商未配置 API Key,请先在"模型提供商配置"中填写');return}const qe=I0(Me.base_url);if(re(qe),!qe?.modelFetcher){D([]),We(null);return}const ht=`${Y}:${Me.base_url}`,Js=lp.get(ht);if(!fe&&Js&&Date.now()-Js.timestamp{X&&O?.api_provider&&Se(O.api_provider)},[X,O?.api_provider,Se]);const Oe=async()=>{try{G(!0),so().catch(()=>{}),B(!0)}catch(Y){console.error("重启失败:",Y),B(!1),Fe({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),G(!1)}},ns=async()=>{try{E(!0),js.current&&clearTimeout(js.current),ls.current&&clearTimeout(ls.current);const Y=await In();Y.models=n,Y.model_task_config=p,await eo(Y),M(!1),Fe({title:"保存成功",description:"正在重启麦麦..."}),await Oe()}catch(Y){console.error("保存配置失败:",Y),Fe({title:"保存失败",description:Y.message,variant:"destructive"}),E(!1)}},ds=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},ri=()=>{B(!1),G(!1),Fe({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},rn=u.useCallback(async Y=>{if(!_s.current)try{F(!0),await Mu("models",Y),M(!1)}catch(fe){console.error("自动保存模型列表失败:",fe),M(!0)}finally{F(!1)}},[]),us=u.useCallback(async Y=>{if(!_s.current)try{F(!0),await Mu("model_task_config",Y),M(!1)}catch(fe){console.error("自动保存任务配置失败:",fe),M(!0)}finally{F(!1)}},[]);u.useEffect(()=>{if(!_s.current)return M(!0),js.current&&clearTimeout(js.current),js.current=setTimeout(()=>{rn(n)},2e3),()=>{js.current&&clearTimeout(js.current)}},[n,rn]),u.useEffect(()=>{if(!(_s.current||!p))return M(!0),ls.current&&clearTimeout(ls.current),ls.current=setTimeout(()=>{us(p)},2e3),()=>{ls.current&&clearTimeout(ls.current)}},[p,us]);const Ks=async()=>{try{E(!0),js.current&&clearTimeout(js.current),ls.current&&clearTimeout(ls.current);const Y=await In();Y.models=n,Y.model_task_config=p,await eo(Y),M(!1),Fe({title:"保存成功",description:"模型配置已保存"}),await il()}catch(Y){console.error("保存配置失败:",Y),Fe({title:"保存失败",description:Y.message,variant:"destructive"})}finally{E(!1)}},Zs=(Y,fe)=>{Je({}),se(Y||{model_identifier:"",name:"",api_provider:c[0]||"",price_in:0,price_out:0,force_stream_mode:!1,extra_params:{}}),ye(fe),S(!0)},Oa=()=>{if(!O)return;const Y={};if(O.name?.trim()||(Y.name="请输入模型名称"),O.api_provider?.trim()||(Y.api_provider="请选择 API 提供商"),O.model_identifier?.trim()||(Y.model_identifier="请输入模型标识符"),Object.keys(Y).length>0){Je(Y);return}Je({});const fe={...O,price_in:O.price_in??0,price_out:O.price_out??0};let Me,qe=null;if(he!==null?(qe=n[he].name,Me=[...n],Me[he]=fe):Me=[...n,fe],r(Me),j(Me.map(ht=>ht.name)),qe&&qe!==fe.name&&p){const ht=Js=>Js.map(Is=>Is===qe?fe.name:Is);w({...p,utils:{...p.utils,model_list:ht(p.utils?.model_list||[])},utils_small:{...p.utils_small,model_list:ht(p.utils_small?.model_list||[])},tool_use:{...p.tool_use,model_list:ht(p.tool_use?.model_list||[])},replyer:{...p.replyer,model_list:ht(p.replyer?.model_list||[])},planner:{...p.planner,model_list:ht(p.planner?.model_list||[])},vlm:{...p.vlm,model_list:ht(p.vlm?.model_list||[])},voice:{...p.voice,model_list:ht(p.voice?.model_list||[])},embedding:{...p.embedding,model_list:ht(p.embedding?.model_list||[])},lpmm_entity_extract:{...p.lpmm_entity_extract,model_list:ht(p.lpmm_entity_extract?.model_list||[])},lpmm_rdf_build:{...p.lpmm_rdf_build,model_list:ht(p.lpmm_rdf_build?.model_list||[])},lpmm_qa:{...p.lpmm_qa,model_list:ht(p.lpmm_qa?.model_list||[])}})}S(!1),se(null),ye(null)},Ls=Y=>{if(!Y&&O){const fe={...O,price_in:O.price_in??0,price_out:O.price_out??0};se(fe)}S(Y)},Ra=Y=>{_e(Y),pe(!0)},ba=()=>{if(je!==null){const Y=n.filter((fe,Me)=>Me!==je);r(Y),j(Y.map(fe=>fe.name)),Fe({title:"删除成功",description:"模型已从列表中移除"})}pe(!1),_e(null)},W=Y=>{const fe=new Set(H);fe.has(Y)?fe.delete(Y):fe.add(Y),ie(fe)},ve=()=>{if(H.size===Cs.length)ie(new Set);else{const Y=Cs.map((fe,Me)=>n.findIndex(qe=>qe===Cs[Me]));ie(new Set(Y))}},Ae=()=>{if(H.size===0){Fe({title:"提示",description:"请先选择要删除的模型",variant:"default"});return}me(!0)},es=()=>{const Y=n.filter((fe,Me)=>!H.has(Me));r(Y),j(Y.map(fe=>fe.name)),ie(new Set),me(!1),Fe({title:"批量删除成功",description:`已删除 ${H.size} 个模型`})},Us=(Y,fe,Me)=>{p&&w({...p,[Y]:{...p[Y],[fe]:Me}})},Cs=n.filter(Y=>{if(!y)return!0;const fe=y.toLowerCase();return Y.name.toLowerCase().includes(fe)||Y.model_identifier.toLowerCase().includes(fe)||Y.api_provider.toLowerCase().includes(fe)}),cl=Math.ceil(Cs.length/de),Ul=Cs.slice((xe-1)*de,xe*de),cn=()=>{const Y=parseInt(le);Y>=1&&Y<=cl&&(Q(Y),L(""))},on=Y=>p?[p.utils?.model_list||[],p.utils_small?.model_list||[],p.tool_use?.model_list||[],p.replyer?.model_list||[],p.planner?.model_list||[],p.vlm?.model_list||[],p.voice?.model_list||[],p.embedding?.model_list||[],p.lpmm_entity_extract?.model_list||[],p.lpmm_rdf_build?.model_list||[],p.lpmm_qa?.model_list||[]].some(Me=>Me.includes(Y)):!1;return v?e.jsx(Ie,{className:"h-full",children:e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):e.jsx(Ie,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"模型管理与分配"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"添加模型并为模型分配功能"})]}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[e.jsxs(b,{onClick:Ks,disabled:T||R||!U||Z,size:"sm",variant:"outline",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[e.jsx(pr,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),T?"保存中...":R?"自动保存中...":U?"保存配置":"已保存"]}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsxs(b,{disabled:T||R||Z,size:"sm",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[e.jsx(fr,{className:"mr-2 h-4 w-4"}),Z?"重启中...":U?"保存并重启":"重启麦麦"]})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认重启麦麦?"}),e.jsx(dt,{asChild:!0,children:e.jsx("div",{children:e.jsx("p",{children:U?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"})})})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:U?ns:Oe,children:U?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsxs(al,{children:[e.jsx(za,{className:"h-4 w-4"}),e.jsxs(ll,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),e.jsxs(al,{className:"hidden lg:flex border-primary/30 bg-primary/5 cursor-pointer hover:bg-primary/10 transition-colors",onClick:nl,children:[e.jsx(fy,{className:"h-4 w-4 text-primary"}),e.jsxs(ll,{className:"flex items-center justify-between",children:[e.jsxs("span",{children:[e.jsx("strong",{className:"text-primary",children:"新手引导:"}),"不知道如何配置模型?点击这里开始学习如何为麦麦的组件分配模型。"]}),e.jsx(b,{variant:"outline",size:"sm",className:"ml-4 shrink-0",children:"开始引导"})]})]}),e.jsxs(Aa,{defaultValue:"models",className:"w-full",children:[e.jsxs(ja,{className:"grid w-full max-w-full sm:max-w-md grid-cols-2",children:[e.jsx(st,{value:"models",children:"添加模型"}),e.jsx(st,{value:"tasks","data-tour":"tasks-tab-trigger",children:"为模型分配功能"})]}),e.jsxs(_t,{value:"models",className:"space-y-4 mt-0",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-2",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"配置可用的模型列表"}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[H.size>0&&e.jsxs(b,{onClick:Ae,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(Pe,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",H.size,")"]}),e.jsxs(b,{onClick:()=>Zs(null,null),size:"sm",variant:"outline",className:"w-full sm:w-auto","data-tour":"add-model-button",children:[e.jsx(cs,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加模型"]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2",children:[e.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[e.jsx(Os,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索模型名称、标识符或提供商...",value:y,onChange:Y=>q(Y.target.value),className:"pl-9"})]}),y&&e.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",Cs.length," 个结果"]})]}),e.jsx("div",{className:"md:hidden space-y-3",children:Ul.length===0?e.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:y?"未找到匹配的模型":"暂无模型配置"}):Ul.map((Y,fe)=>{const Me=n.findIndex(ht=>ht===Y),qe=on(Y.name);return e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("h3",{className:"font-semibold text-base",children:Y.name}),e.jsx(Qe,{variant:qe?"default":"secondary",className:qe?"bg-green-600 hover:bg-green-700":"",children:qe?"已使用":"未使用"})]}),e.jsx("p",{className:"text-xs text-muted-foreground break-all",title:Y.model_identifier,children:Y.model_identifier})]}),e.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[e.jsxs(b,{variant:"default",size:"sm",onClick:()=>Zs(Y,Me),children:[e.jsx(an,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(b,{size:"sm",onClick:()=>Ra(Me),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(Pe,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"提供商"}),e.jsx("p",{className:"font-medium",children:Y.api_provider})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"强制流式"}),e.jsx("p",{className:"font-medium",children:Y.force_stream_mode?"是":"否"})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"输入价格"}),e.jsxs("p",{className:"font-medium",children:["¥",Y.price_in,"/M"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"输出价格"}),e.jsxs("p",{className:"font-medium",children:["¥",Y.price_out,"/M"]})]})]})]},fe)})}),e.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(ai,{children:[e.jsx(li,{children:e.jsxs(gs,{children:[e.jsx(at,{className:"w-12",children:e.jsx(bs,{checked:H.size===Cs.length&&Cs.length>0,onCheckedChange:ve})}),e.jsx(at,{className:"w-24",children:"使用状态"}),e.jsx(at,{children:"模型名称"}),e.jsx(at,{children:"模型标识符"}),e.jsx(at,{children:"提供商"}),e.jsx(at,{className:"text-right",children:"输入价格"}),e.jsx(at,{className:"text-right",children:"输出价格"}),e.jsx(at,{className:"text-center",children:"强制流式"}),e.jsx(at,{className:"text-right",children:"操作"})]})}),e.jsx(ni,{children:Ul.length===0?e.jsx(gs,{children:e.jsx($e,{colSpan:9,className:"text-center text-muted-foreground py-8",children:y?"未找到匹配的模型":"暂无模型配置"})}):Ul.map((Y,fe)=>{const Me=n.findIndex(ht=>ht===Y),qe=on(Y.name);return e.jsxs(gs,{children:[e.jsx($e,{children:e.jsx(bs,{checked:H.has(Me),onCheckedChange:()=>W(Me)})}),e.jsx($e,{children:e.jsx(Qe,{variant:qe?"default":"secondary",className:qe?"bg-green-600 hover:bg-green-700":"",children:qe?"已使用":"未使用"})}),e.jsx($e,{className:"font-medium",children:Y.name}),e.jsx($e,{className:"max-w-xs truncate",title:Y.model_identifier,children:Y.model_identifier}),e.jsx($e,{children:Y.api_provider}),e.jsxs($e,{className:"text-right",children:["¥",Y.price_in,"/M"]}),e.jsxs($e,{className:"text-right",children:["¥",Y.price_out,"/M"]}),e.jsx($e,{className:"text-center",children:Y.force_stream_mode?"是":"否"}),e.jsx($e,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(b,{variant:"default",size:"sm",onClick:()=>Zs(Y,Me),children:[e.jsx(an,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(b,{size:"sm",onClick:()=>Ra(Me),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(Pe,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},fe)})})]})})}),Cs.length>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{htmlFor:"page-size-model",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(Be,{value:de.toString(),onValueChange:Y=>{ge(parseInt(Y)),Q(1),ie(new Set)},children:[e.jsx(Re,{id:"page-size-model",className:"w-20",children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"10",children:"10"}),e.jsx(ne,{value:"20",children:"20"}),e.jsx(ne,{value:"50",children:"50"}),e.jsx(ne,{value:"100",children:"100"})]})]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(xe-1)*de+1," 到"," ",Math.min(xe*de,Cs.length)," 条,共 ",Cs.length," 条"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>Q(1),disabled:xe===1,className:"hidden sm:flex",children:e.jsx(gr,{className:"h-4 w-4"})}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>Q(Y=>Math.max(1,Y-1)),disabled:xe===1,children:[e.jsx(nn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:le,onChange:Y=>L(Y.target.value),onKeyDown:Y=>Y.key==="Enter"&&cn(),placeholder:xe.toString(),className:"w-16 h-8 text-center",min:1,max:cl}),e.jsx(b,{variant:"outline",size:"sm",onClick:cn,disabled:!le,className:"h-8",children:"跳转"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>Q(Y=>Y+1),disabled:xe>=cl,children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(Ol,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>Q(cl),disabled:xe>=cl,className:"hidden sm:flex",children:e.jsx(jr,{className:"h-4 w-4"})})]})]})]}),e.jsxs(_t,{value:"tasks",className:"space-y-6 mt-0",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"为不同的任务配置使用的模型和参数"}),p&&e.jsxs("div",{className:"grid gap-4 sm:gap-6",children:[e.jsx(fa,{title:"组件模型 (utils)",description:"用于表情包、取名、关系、情绪变化等组件",taskConfig:p.utils,modelNames:f,onChange:(Y,fe)=>Us("utils",Y,fe),dataTour:"task-model-select"}),e.jsx(fa,{title:"组件小模型 (utils_small)",description:"消耗量较大的组件,建议使用速度较快的小模型",taskConfig:p.utils_small,modelNames:f,onChange:(Y,fe)=>Us("utils_small",Y,fe)}),e.jsx(fa,{title:"工具调用模型 (tool_use)",description:"需要使用支持工具调用的模型",taskConfig:p.tool_use,modelNames:f,onChange:(Y,fe)=>Us("tool_use",Y,fe)}),e.jsx(fa,{title:"首要回复模型 (replyer)",description:"用于表达器和表达方式学习",taskConfig:p.replyer,modelNames:f,onChange:(Y,fe)=>Us("replyer",Y,fe)}),e.jsx(fa,{title:"决策模型 (planner)",description:"负责决定麦麦该什么时候回复",taskConfig:p.planner,modelNames:f,onChange:(Y,fe)=>Us("planner",Y,fe)}),e.jsx(fa,{title:"图像识别模型 (vlm)",description:"视觉语言模型",taskConfig:p.vlm,modelNames:f,onChange:(Y,fe)=>Us("vlm",Y,fe),hideTemperature:!0}),e.jsx(fa,{title:"语音识别模型 (voice)",description:"语音转文字",taskConfig:p.voice,modelNames:f,onChange:(Y,fe)=>Us("voice",Y,fe),hideTemperature:!0,hideMaxTokens:!0}),e.jsx(fa,{title:"嵌入模型 (embedding)",description:"用于向量化",taskConfig:p.embedding,modelNames:f,onChange:(Y,fe)=>Us("embedding",Y,fe),hideTemperature:!0,hideMaxTokens:!0}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库模型"}),e.jsx(fa,{title:"实体提取模型 (lpmm_entity_extract)",description:"从文本中提取实体",taskConfig:p.lpmm_entity_extract,modelNames:f,onChange:(Y,fe)=>Us("lpmm_entity_extract",Y,fe)}),e.jsx(fa,{title:"RDF 构建模型 (lpmm_rdf_build)",description:"构建知识图谱",taskConfig:p.lpmm_rdf_build,modelNames:f,onChange:(Y,fe)=>Us("lpmm_rdf_build",Y,fe)}),e.jsx(fa,{title:"问答模型 (lpmm_qa)",description:"知识库问答",taskConfig:p.lpmm_qa,modelNames:f,onChange:(Y,fe)=>Us("lpmm_qa",Y,fe)})]})]})]})]}),e.jsx(Qt,{open:X,onOpenChange:Ls,children:e.jsxs(Ut,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"model-dialog",preventOutsideClose:Ke.isRunning,children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:he!==null?"编辑模型":"添加模型"}),e.jsx(ss,{children:"配置模型的基本信息和参数"})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":"model-name-input",children:[e.jsx(N,{htmlFor:"model_name",className:we.name?"text-destructive":"",children:"模型名称 *"}),e.jsx(ce,{id:"model_name",value:O?.name||"",onChange:Y=>{se(fe=>fe?{...fe,name:Y.target.value}:null),we.name&&Je(fe=>({...fe,name:void 0}))},placeholder:"例如: qwen3-30b",className:we.name?"border-destructive focus-visible:ring-destructive":""}),we.name?e.jsx("p",{className:"text-xs text-destructive",children:we.name}):e.jsx("p",{className:"text-xs text-muted-foreground",children:"用于在任务配置中引用此模型"})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"model-provider-select",children:[e.jsx(N,{htmlFor:"api_provider",className:we.api_provider?"text-destructive":"",children:"API 提供商 *"}),e.jsxs(Be,{value:O?.api_provider||"",onValueChange:Y=>{se(fe=>fe?{...fe,api_provider:Y}:null),D([]),We(null),we.api_provider&&Je(fe=>({...fe,api_provider:void 0}))},children:[e.jsx(Re,{id:"api_provider",className:we.api_provider?"border-destructive focus-visible:ring-destructive":"",children:e.jsx(He,{placeholder:"选择提供商"})}),e.jsx(Le,{children:c.map(Y=>e.jsx(ne,{value:Y,children:Y},Y))})]}),we.api_provider&&e.jsx("p",{className:"text-xs text-destructive",children:we.api_provider})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"model-identifier-input",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{htmlFor:"model_identifier",className:we.model_identifier?"text-destructive":"",children:"模型标识符 *"}),qt?.modelFetcher&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Qe,{variant:"secondary",className:"text-xs",children:qt.display_name}),e.jsx(b,{variant:"ghost",size:"sm",className:"h-6 px-2",onClick:()=>O?.api_provider&&Se(O.api_provider,!0),disabled:ee,children:ee?e.jsx(vs,{className:"h-3 w-3 animate-spin"}):e.jsx(ps,{className:"h-3 w-3"})})]})]}),qt?.modelFetcher?e.jsxs(Ma,{open:Xe,onOpenChange:Mt,children:[e.jsx(Da,{asChild:!0,children:e.jsxs(b,{variant:"outline",role:"combobox","aria-expanded":Xe,className:"w-full justify-between font-normal",disabled:ee||!!ze,children:[ee?e.jsxs("span",{className:"flex items-center gap-2 text-muted-foreground",children:[e.jsx(vs,{className:"h-4 w-4 animate-spin"}),"正在获取模型列表..."]}):ze?e.jsx("span",{className:"text-muted-foreground text-sm",children:"点击下方输入框手动填写"}):O?.model_identifier?e.jsx("span",{className:"truncate",children:O.model_identifier}):e.jsx("span",{className:"text-muted-foreground",children:"搜索或选择模型..."}),e.jsx(Bu,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(va,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:e.jsxs(ao,{children:[e.jsx(lo,{placeholder:"搜索模型..."}),e.jsx(Ie,{className:"h-[300px]",children:e.jsxs(no,{className:"max-h-none overflow-visible",children:[e.jsx(io,{children:ze?e.jsxs("div",{className:"py-4 px-2 text-center space-y-2",children:[e.jsx("p",{className:"text-sm text-destructive",children:ze}),!ze.includes("API Key")&&e.jsx(b,{variant:"link",size:"sm",onClick:()=>O?.api_provider&&Se(O.api_provider,!0),children:"重试"})]}):"未找到匹配的模型"}),e.jsx(hr,{heading:"可用模型",children:$.map(Y=>e.jsxs(xr,{value:Y.id,onSelect:()=>{se(fe=>fe?{...fe,model_identifier:Y.id}:null),Mt(!1)},children:[e.jsx(ga,{className:`mr-2 h-4 w-4 ${O?.model_identifier===Y.id?"opacity-100":"opacity-0"}`}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{children:Y.id}),Y.name!==Y.id&&e.jsx("span",{className:"text-xs text-muted-foreground",children:Y.name})]})]},Y.id))}),e.jsx(hr,{heading:"手动输入",children:e.jsxs(xr,{value:"__manual_input__",onSelect:()=>{Mt(!1)},children:[e.jsx(an,{className:"mr-2 h-4 w-4"}),"手动输入模型标识符..."]})})]})})]})})]}):e.jsx(ce,{id:"model_identifier",value:O?.model_identifier||"",onChange:Y=>{se(fe=>fe?{...fe,model_identifier:Y.target.value}:null),we.model_identifier&&Je(fe=>({...fe,model_identifier:void 0}))},placeholder:"Qwen/Qwen3-30B-A3B-Instruct-2507",className:we.model_identifier?"border-destructive focus-visible:ring-destructive":""}),we.model_identifier&&e.jsx("p",{className:"text-xs text-destructive",children:we.model_identifier}),ze&&qt?.modelFetcher&&!we.model_identifier&&e.jsxs(al,{variant:"destructive",className:"mt-2 py-2",children:[e.jsx(za,{className:"h-4 w-4"}),e.jsx(ll,{className:"text-xs",children:ze})]}),qt?.modelFetcher&&e.jsx(ce,{value:O?.model_identifier||"",onChange:Y=>{se(fe=>fe?{...fe,model_identifier:Y.target.value}:null),we.model_identifier&&Je(fe=>({...fe,model_identifier:void 0}))},placeholder:"或手动输入模型标识符",className:`mt-2 ${we.model_identifier?"border-destructive focus-visible:ring-destructive":""}`}),!we.model_identifier&&e.jsx("p",{className:"text-xs text-muted-foreground",children:ze?'请手动输入模型标识符,或前往"模型提供商配置"检查 API Key':qt?.modelFetcher?`已识别为 ${qt.display_name},支持自动获取模型列表`:"API 提供商提供的模型 ID"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"price_in",children:"输入价格 (¥/M token)"}),e.jsx(ce,{id:"price_in",type:"number",step:"0.1",min:"0",value:O?.price_in??"",onChange:Y=>{const fe=Y.target.value===""?null:parseFloat(Y.target.value);se(Me=>Me?{...Me,price_in:fe}:null)},placeholder:"默认: 0"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"price_out",children:"输出价格 (¥/M token)"}),e.jsx(ce,{id:"price_out",type:"number",step:"0.1",min:"0",value:O?.price_out??"",onChange:Y=>{const fe=Y.target.value===""?null:parseFloat(Y.target.value);se(Me=>Me?{...Me,price_out:fe}:null)},placeholder:"默认: 0"})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"force_stream_mode",checked:O?.force_stream_mode||!1,onCheckedChange:Y=>se(fe=>fe?{...fe,force_stream_mode:Y}:null)}),e.jsx(N,{htmlFor:"force_stream_mode",className:"cursor-pointer",children:"强制流式输出模式"})]})]}),e.jsxs(os,{children:[e.jsx(b,{variant:"outline",onClick:()=>S(!1),"data-tour":"model-cancel-button",children:"取消"}),e.jsx(b,{onClick:Oa,"data-tour":"model-save-button",children:"保存"})]})]})}),e.jsx(ft,{open:be,onOpenChange:pe,children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:['确定要删除模型 "',je!==null?n[je]?.name:"",'" 吗? 此操作无法撤销。']})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:ba,children:"删除"})]})]})}),e.jsx(ft,{open:_,onOpenChange:me,children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认批量删除"}),e.jsxs(dt,{children:["确定要删除选中的 ",H.size," 个模型吗? 此操作无法撤销。"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:es,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),z&&e.jsx($u,{onRestartComplete:ds,onRestartFailed:ri})]})})}function fa({title:n,description:r,taskConfig:c,modelNames:d,onChange:h,hideTemperature:x=!1,hideMaxTokens:f=!1,dataTour:j}){const p=w=>{h("model_list",w)};return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"font-semibold text-base sm:text-lg",children:n}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:r})]}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":j,children:[e.jsx(N,{children:"模型列表"}),e.jsx(ew,{options:d.map(w=>({label:w,value:w})),selected:c.model_list||[],onChange:p,placeholder:"选择模型...",emptyText:"暂无可用模型"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[!x&&e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{children:"温度"}),e.jsx(ce,{type:"number",step:"0.1",min:"0",max:"1",value:c.temperature??.3,onChange:w=>{const v=parseFloat(w.target.value);!isNaN(v)&&v>=0&&v<=1&&h("temperature",v)},className:"w-20 h-8 text-sm"})]}),e.jsx(ka,{value:[c.temperature??.3],onValueChange:w=>h("temperature",w[0]),min:0,max:1,step:.1,className:"w-full"})]}),!f&&e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{children:"最大 Token"}),e.jsx(ce,{type:"number",step:"1",min:"1",value:c.max_tokens??1024,onChange:w=>h("max_tokens",parseInt(w.target.value))})]})]})]})]})}const ro="/api/webui/config";async function aw(){const r=await(await ke(`${ro}/adapter-config/path`)).json();return!r.success||!r.path?null:{path:r.path,lastModified:r.lastModified}}async function np(n){const c=await(await ke(`${ro}/adapter-config/path`,{method:"POST",headers:Tt(),body:JSON.stringify({path:n})})).json();if(!c.success)throw new Error(c.message||"保存路径失败")}async function ip(n){const c=await(await ke(`${ro}/adapter-config?path=${encodeURIComponent(n)}`)).json();if(!c.success)throw new Error("读取配置文件失败");return c.content}async function rp(n,r){const d=await(await ke(`${ro}/adapter-config`,{method:"POST",headers:Tt(),body:JSON.stringify({path:n,content:r})})).json();if(!d.success)throw new Error(d.message||"保存配置失败")}const Qs={inner:{version:"0.1.2"},nickname:{nickname:""},napcat_server:{host:"localhost",port:8095,token:"",heartbeat_interval:30},maibot_server:{host:"localhost",port:8e3},chat:{group_list_type:"whitelist",group_list:[],private_list_type:"whitelist",private_list:[],ban_user_id:[],ban_qq_bot:!1,enable_poke:!0},voice:{use_tts:!1},debug:{level:"INFO"}},ku={oneclick:{name:"一键包",description:"使用一键包部署的适配器配置",path:"../MaiBot-Napcat-Adapter/config.toml",icon:ln},docker:{name:"Docker",description:"Docker Compose 部署的适配器配置",path:"/MaiMBot/adapters-config/config.toml",icon:py}};function lw(){const[n,r]=u.useState("upload"),[c,d]=u.useState(null),[h,x]=u.useState(""),[f,j]=u.useState(""),[p,w]=u.useState("oneclick"),[v,k]=u.useState(""),[T,E]=u.useState(!1),[R,F]=u.useState(!1),[U,M]=u.useState(!1),[Z,G]=u.useState(!1),[z,B]=u.useState(null),X=u.useRef(null),{toast:S}=Rt(),O=u.useRef(null),se=L=>{if(!L.trim())return{valid:!1,error:"路径不能为空"};if(!L.toLowerCase().endsWith(".toml"))return{valid:!1,error:"文件必须是 .toml 格式"};const $=/^([a-zA-Z]:\\|\\\\[^\\]+\\[^\\]+\\).+\.toml$/i,D=/^(\/|~\/).+\.toml$/i,ee=/^(\.{1,2}[\\/]|[^:\\/]).+\.toml$/i,Ne=$.test(L),ze=D.test(L),We=ee.test(L);return!Ne&&!ze&&!We?{valid:!1,error:"路径格式错误"}:/[<>"|?*\x00-\x1F]/.test(L)?{valid:!1,error:"路径包含非法字符"}:{valid:!0,error:""}},he=L=>{if(j(L),L.trim()){const $=se(L);k($.error)}else k("")},ye=u.useCallback(async L=>{const $=ku[L];F(!0);try{const D=await ip($.path),ee=xe(D);d(ee),w(L),j($.path),await np($.path),S({title:"加载成功",description:`已从${$.name}预设加载配置`})}catch(D){console.error("加载预设配置失败:",D),S({title:"加载失败",description:D instanceof Error?D.message:"无法读取预设配置文件",variant:"destructive"})}finally{F(!1)}},[S]),be=u.useCallback(async L=>{const $=se(L);if(!$.valid){k($.error),S({title:"路径无效",description:$.error,variant:"destructive"});return}k(""),F(!0);try{const D=await ip(L),ee=xe(D);d(ee),j(L),await np(L),S({title:"加载成功",description:"已从配置文件加载"})}catch(D){console.error("加载配置失败:",D),S({title:"加载失败",description:D instanceof Error?D.message:"无法读取配置文件",variant:"destructive"})}finally{F(!1)}},[S]);u.useEffect(()=>{(async()=>{try{const $=await aw();if($&&$.path){j($.path);const D=Object.entries(ku).find(([,ee])=>ee.path===$.path);D?(r("preset"),w(D[0]),await ye(D[0])):(r("path"),await be($.path))}}catch($){console.error("加载保存的路径失败:",$)}})()},[be,ye]);const pe=u.useCallback(L=>{n!=="path"&&n!=="preset"||!f||(O.current&&clearTimeout(O.current),O.current=setTimeout(async()=>{E(!0);try{const $=Q(L);await rp(f,$),S({title:"自动保存成功",description:"配置已保存到文件"})}catch($){console.error("自动保存失败:",$),S({title:"自动保存失败",description:$ instanceof Error?$.message:"保存配置失败",variant:"destructive"})}finally{E(!1)}},1e3))},[n,f,S]),je=async()=>{if(!c||!f)return;const L=se(f);if(!L.valid){S({title:"保存失败",description:L.error,variant:"destructive"});return}E(!0);try{const $=Q(c);await rp(f,$),S({title:"保存成功",description:"配置已保存到文件"})}catch($){console.error("保存失败:",$),S({title:"保存失败",description:$ instanceof Error?$.message:"保存配置失败",variant:"destructive"})}finally{E(!1)}},_e=async()=>{f&&await be(f)},y=L=>{if(L!==n){if(c){B(L),M(!0);return}q(L)}},q=L=>{d(null),x(""),k(""),r(L),L==="preset"&&ye("oneclick"),S({title:"已切换模式",description:{upload:"现在可以上传配置文件",path:"现在可以指定配置文件路径",preset:"现在可以使用预设配置"}[L]})},H=()=>{z&&(q(z),B(null)),M(!1)},ie=()=>{if(c){G(!0);return}_()},_=()=>{j(""),d(null),k(""),S({title:"已清空",description:"路径和配置已清空"})},me=()=>{_(),G(!1)},xe=L=>{const $=JSON.parse(JSON.stringify(Qs)),D=L.split(` -`);let ee="";for(const Ne of D){const ze=Ne.trim();if(!ze||ze.startsWith("#"))continue;const We=ze.match(/^\[(\w+)\]/);if(We){ee=We[1];continue}const Xe=ze.match(/^(\w+)\s*=\s*(.+)$/);if(Xe&&ee){const[,Mt,qt]=Xe;let re=qt.trim();const we=re.match(/^("[^"]*")/);if(we)re=we[1];else{const Fe=re.indexOf("#");Fe!==-1&&(re=re.substring(0,Fe).trim())}let Je;if(re==="true")Je=!0;else if(re==="false")Je=!1;else if(re.startsWith("[")&&re.endsWith("]")){const Fe=re.slice(1,-1).trim();if(Fe){const Wt=Fe.split(",").map(Ns=>{const Ke=Ns.trim();return isNaN(Number(Ke))?Ke.replace(/"/g,""):Number(Ke)}),Xs=typeof Wt[0];Je=Wt.every(Ns=>typeof Ns===Xs)?Wt:Wt.filter(Ns=>typeof Ns=="number")}else Je=[]}else re.startsWith('"')&&re.endsWith('"')?Je=re.slice(1,-1):isNaN(Number(re))?Je=re.replace(/"/g,""):Je=Number(re);if(ee in $){const Fe=$[ee];Fe[Mt]=Je}}}return $},Q=L=>{const $=[],D=(ee,Ne)=>ee===""||ee===null||ee===void 0?Ne:ee;return $.push("[inner]"),$.push(`version = "${D(L.inner.version,Qs.inner.version)}" # 版本号`),$.push("# 请勿修改版本号,除非你知道自己在做什么"),$.push(""),$.push("[nickname] # 现在没用"),$.push(`nickname = "${D(L.nickname.nickname,Qs.nickname.nickname)}"`),$.push(""),$.push("[napcat_server] # Napcat连接的ws服务设置"),$.push(`host = "${D(L.napcat_server.host,Qs.napcat_server.host)}" # Napcat设定的主机地址`),$.push(`port = ${D(L.napcat_server.port||0,Qs.napcat_server.port)} # Napcat设定的端口`),$.push(`token = "${D(L.napcat_server.token,Qs.napcat_server.token)}" # Napcat设定的访问令牌,若无则留空`),$.push(`heartbeat_interval = ${D(L.napcat_server.heartbeat_interval||0,Qs.napcat_server.heartbeat_interval)} # 与Napcat设置的心跳相同(按秒计)`),$.push(""),$.push("[maibot_server] # 连接麦麦的ws服务设置"),$.push(`host = "${D(L.maibot_server.host,Qs.maibot_server.host)}" # 麦麦在.env文件中设置的主机地址,即HOST字段`),$.push(`port = ${D(L.maibot_server.port||0,Qs.maibot_server.port)} # 麦麦在.env文件中设置的端口,即PORT字段`),$.push(""),$.push("[chat] # 黑白名单功能"),$.push(`group_list_type = "${D(L.chat.group_list_type,Qs.chat.group_list_type)}" # 群组名单类型,可选为:whitelist, blacklist`),$.push(`group_list = [${L.chat.group_list.join(", ")}] # 群组名单`),$.push("# 当group_list_type为whitelist时,只有群组名单中的群组可以聊天"),$.push("# 当group_list_type为blacklist时,群组名单中的任何群组无法聊天"),$.push(`private_list_type = "${D(L.chat.private_list_type,Qs.chat.private_list_type)}" # 私聊名单类型,可选为:whitelist, blacklist`),$.push(`private_list = [${L.chat.private_list.join(", ")}] # 私聊名单`),$.push("# 当private_list_type为whitelist时,只有私聊名单中的用户可以聊天"),$.push("# 当private_list_type为blacklist时,私聊名单中的任何用户无法聊天"),$.push(`ban_user_id = [${L.chat.ban_user_id.join(", ")}] # 全局禁止名单(全局禁止名单中的用户无法进行任何聊天)`),$.push(`ban_qq_bot = ${L.chat.ban_qq_bot} # 是否屏蔽QQ官方机器人`),$.push(`enable_poke = ${L.chat.enable_poke} # 是否启用戳一戳功能`),$.push(""),$.push("[voice] # 发送语音设置"),$.push(`use_tts = ${L.voice.use_tts} # 是否使用tts语音(请确保你配置了tts并有对应的adapter)`),$.push(""),$.push("[debug]"),$.push(`level = "${D(L.debug.level,Qs.debug.level)}" # 日志等级(DEBUG, INFO, WARNING, ERROR, CRITICAL)`),$.join(` -`)},de=L=>{const $=L.target.files?.[0];if(!$)return;const D=new FileReader;D.onload=ee=>{try{const Ne=ee.target?.result,ze=xe(Ne);d(ze),x($.name),S({title:"上传成功",description:`已加载配置文件:${$.name}`})}catch(Ne){console.error("解析配置文件失败:",Ne),S({title:"解析失败",description:"配置文件格式错误,请检查文件内容",variant:"destructive"})}},D.readAsText($)},ge=()=>{if(!c)return;const L=Q(c),$=new Blob([L],{type:"text/plain;charset=utf-8"}),D=URL.createObjectURL($),ee=document.createElement("a");ee.href=D,ee.download=h||"config.toml",document.body.appendChild(ee),ee.click(),document.body.removeChild(ee),URL.revokeObjectURL(D),S({title:"下载成功",description:"配置文件已下载,请手动覆盖并重启适配器"})},le=()=>{d(JSON.parse(JSON.stringify(Qs))),x("config.toml"),S({title:"已加载默认配置",description:"可以开始编辑配置"})};return e.jsx(Ie,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦适配器配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的 QQ 适配器的配置文件"})]})}),e.jsxs("div",{className:"flex items-start gap-2 p-3 rounded-lg border border-amber-500/50 bg-amber-500/10 text-amber-700 dark:text-amber-400",children:[e.jsx(Ea,{className:"h-4 w-4 mt-0.5 flex-shrink-0"}),e.jsx("p",{className:"text-sm",children:"适配器配置保存之后使用 WebUI 的重启功能适配器并不会重启,需要手动重启适配器。"})]}),e.jsxs(Ve,{children:[e.jsxs(pt,{children:[e.jsx(gt,{children:"工作模式"}),e.jsx(Kt,{children:"选择配置文件的管理方式"})]}),e.jsxs(yt,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3 md:gap-4",children:[e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="preset"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>y("preset"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(ln,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"预设模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"使用预设的部署配置"})]})]})}),e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="upload"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>y("upload"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(cr,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"上传文件模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"上传配置文件,编辑后下载并手动覆盖"})]})]})}),e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="path"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>y("path"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(gy,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"指定路径模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"指定配置文件路径,自动加载和保存"})]})]})})]}),n==="preset"&&e.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[e.jsx(N,{className:"text-sm md:text-base",children:"选择部署方式"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:Object.entries(ku).map(([L,$])=>{const D=$.icon,ee=p===L;return e.jsx("div",{className:`border-2 rounded-lg p-3 cursor-pointer transition-all ${ee?"border-primary bg-primary/5":"border-muted hover:border-primary/50"}`,onClick:()=>{w(L),ye(L)},children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(D,{className:"h-5 w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h4",{className:"font-semibold text-sm",children:$.name}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:$.description}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1 font-mono break-all",children:$.path})]})]})},L)})})]}),n==="path"&&e.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"config-path",className:"text-sm md:text-base",children:"配置文件路径"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs("div",{className:"flex-1 space-y-1",children:[e.jsx(ce,{id:"config-path",value:f,onChange:L=>he(L.target.value),placeholder:"例: C:\\Adapter\\config.toml",className:`text-sm ${v?"border-destructive":""}`}),v&&e.jsx("p",{className:"text-xs text-destructive",children:v})]}),e.jsx(b,{onClick:()=>be(f),disabled:R||!f||!!v,className:"w-full sm:w-auto",children:R?e.jsxs(e.Fragment,{children:[e.jsx(ps,{className:"h-4 w-4 animate-spin mr-2"}),e.jsx("span",{className:"sm:hidden",children:"加载中..."})]}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"sm:hidden",children:"加载配置"}),e.jsx("span",{className:"hidden sm:inline",children:"加载"})]})})]})]}),e.jsxs("details",{className:"rounded-lg bg-muted/50 p-3 group",children:[e.jsxs("summary",{className:"text-xs font-medium cursor-pointer select-none list-none flex items-center justify-between",children:[e.jsx("span",{children:"路径格式说明"}),e.jsx("svg",{className:"h-4 w-4 transition-transform group-open:rotate-180",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),e.jsxs("div",{className:"mt-2 space-y-2 text-xs text-muted-foreground",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Windows"})}),e.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[e.jsx("div",{children:"C:\\Adapter\\config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"D:\\MaiBot\\adapter\\config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"\\\\server\\share\\config.toml"})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Linux"})}),e.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[e.jsx("div",{children:"/opt/adapter/config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"/home/user/adapter/config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"~/adapter/config.toml"})]})]}),e.jsx("p",{className:"pt-1 border-t text-[10px] md:text-xs",children:"💡 配置会自动保存到指定文件,修改后 1 秒自动保存"})]})]})]})]})]}),e.jsxs(al,{children:[e.jsx(za,{className:"h-4 w-4"}),e.jsx(ll,{children:n==="preset"?e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"预设模式:"}),"选择预设的部署方式,配置会自动加载,修改后 1 秒自动保存",T&&" (正在保存...)"]}):n==="upload"?e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"上传文件模式:"}),"上传配置文件 → 在线编辑 → 下载文件 → 手动覆盖并重启适配器"]}):e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"指定路径模式:"}),"指定配置文件路径后,配置会自动加载,修改后 1 秒自动保存",T&&" (正在保存...)"]})})]}),n==="upload"&&!c&&e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 w-full",children:[e.jsx("input",{ref:X,type:"file",accept:".toml",className:"hidden",onChange:de}),e.jsxs(b,{onClick:()=>X.current?.click(),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(cr,{className:"mr-2 h-4 w-4"}),"上传配置"]}),e.jsxs(b,{onClick:le,size:"sm",className:"w-full sm:w-auto",children:[e.jsx(Ta,{className:"mr-2 h-4 w-4"}),"使用默认配置"]})]}),n==="upload"&&c&&e.jsx("div",{className:"flex gap-2",children:e.jsxs(b,{onClick:ge,size:"sm",className:"w-full sm:w-auto",children:[e.jsx(sl,{className:"mr-2 h-4 w-4"}),"下载配置"]})}),(n==="preset"||n==="path")&&c&&e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs(b,{onClick:je,size:"sm",disabled:T||!!v,className:"w-full sm:w-auto",children:[e.jsx(pr,{className:"mr-2 h-4 w-4"}),T?"保存中...":"立即保存"]}),e.jsxs(b,{onClick:_e,size:"sm",variant:"outline",disabled:R,className:"w-full sm:w-auto",children:[e.jsx(ps,{className:`mr-2 h-4 w-4 ${R?"animate-spin":""}`}),"刷新"]}),n==="path"&&e.jsxs(b,{onClick:ie,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(Pe,{className:"mr-2 h-4 w-4"}),"清空路径"]})]}),c?e.jsxs(Aa,{defaultValue:"napcat",className:"w-full",children:[e.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:e.jsxs(ja,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5",children:[e.jsxs(st,{value:"napcat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"Napcat 连接"}),e.jsx("span",{className:"sm:hidden",children:"Napcat"})]}),e.jsxs(st,{value:"maibot",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"麦麦连接"}),e.jsx("span",{className:"sm:hidden",children:"麦麦"})]}),e.jsxs(st,{value:"chat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"聊天控制"}),e.jsx("span",{className:"sm:hidden",children:"聊天"})]}),e.jsxs(st,{value:"voice",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"语音设置"}),e.jsx("span",{className:"sm:hidden",children:"语音"})]}),e.jsx(st,{value:"debug",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:"调试"})]})}),e.jsx(_t,{value:"napcat",className:"space-y-4",children:e.jsx(nw,{config:c,onChange:L=>{d(L),pe(L)}})}),e.jsx(_t,{value:"maibot",className:"space-y-4",children:e.jsx(iw,{config:c,onChange:L=>{d(L),pe(L)}})}),e.jsx(_t,{value:"chat",className:"space-y-4",children:e.jsx(rw,{config:c,onChange:L=>{d(L),pe(L)}})}),e.jsx(_t,{value:"voice",className:"space-y-4",children:e.jsx(cw,{config:c,onChange:L=>{d(L),pe(L)}})}),e.jsx(_t,{value:"debug",className:"space-y-4",children:e.jsx(ow,{config:c,onChange:L=>{d(L),pe(L)}})})]}):e.jsx("div",{className:"rounded-lg border bg-card p-6 md:p-12",children:e.jsxs("div",{className:"text-center space-y-3 md:space-y-4",children:[e.jsx(Ta,{className:"h-12 w-12 md:h-16 md:w-16 mx-auto text-muted-foreground"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold",children:"尚未加载配置"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-2 px-4",children:n==="preset"?"请选择预设的部署方式":n==="upload"?"请上传现有配置文件,或使用默认配置开始编辑":"请指定配置文件路径并点击加载按钮"})]})]})}),e.jsx(ft,{open:U,onOpenChange:M,children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认切换模式"}),e.jsxs(dt,{children:["切换模式将清空当前配置,确定要继续吗?",e.jsx("br",{}),e.jsx("span",{className:"text-destructive font-medium",children:"请确保已保存重要配置"})]})]}),e.jsxs(ct,{children:[e.jsx(mt,{onClick:()=>{M(!1),B(null)},children:"取消"}),e.jsx(ut,{onClick:H,children:"确认切换"})]})]})}),e.jsx(ft,{open:Z,onOpenChange:G,children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认清空路径"}),e.jsxs(dt,{children:["清空路径将清除当前配置,确定要继续吗?",e.jsx("br",{}),e.jsx("span",{className:"text-muted-foreground text-sm",children:"此操作不会删除配置文件,只是清除界面中的配置"})]})]}),e.jsxs(ct,{children:[e.jsx(mt,{onClick:()=>G(!1),children:"取消"}),e.jsx(ut,{onClick:me,className:"bg-destructive hover:bg-destructive/90",children:"确认清空"})]})]})})]})})}function nw({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"Napcat WebSocket 服务设置"}),e.jsxs("div",{className:"grid gap-3 md:gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"napcat-host",className:"text-sm md:text-base",children:"主机地址"}),e.jsx(ce,{id:"napcat-host",value:n.napcat_server.host,onChange:c=>r({...n,napcat_server:{...n.napcat_server,host:c.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的主机地址"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"napcat-port",className:"text-sm md:text-base",children:"端口"}),e.jsx(ce,{id:"napcat-port",type:"number",value:n.napcat_server.port||"",onChange:c=>r({...n,napcat_server:{...n.napcat_server,port:c.target.value?parseInt(c.target.value):0}}),placeholder:"8095",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的端口(留空使用默认值 8095)"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"napcat-token",className:"text-sm md:text-base",children:"访问令牌(Token)"}),e.jsx(ce,{id:"napcat-token",type:"password",value:n.napcat_server.token,onChange:c=>r({...n,napcat_server:{...n.napcat_server,token:c.target.value}}),placeholder:"留空表示无需令牌",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的访问令牌,若无则留空"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"napcat-heartbeat",className:"text-sm md:text-base",children:"心跳间隔(秒)"}),e.jsx(ce,{id:"napcat-heartbeat",type:"number",value:n.napcat_server.heartbeat_interval||"",onChange:c=>r({...n,napcat_server:{...n.napcat_server,heartbeat_interval:c.target.value?parseInt(c.target.value):0}}),placeholder:"30",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"与 Napcat 设置的心跳间隔保持一致(留空使用默认值 30)"})]})]})]})})}function iw({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"麦麦 WebSocket 服务设置"}),e.jsxs("div",{className:"grid gap-3 md:gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"maibot-host",className:"text-sm md:text-base",children:"主机地址"}),e.jsx(ce,{id:"maibot-host",value:n.maibot_server.host,onChange:c=>r({...n,maibot_server:{...n.maibot_server,host:c.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 HOST 字段"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{htmlFor:"maibot-port",className:"text-sm md:text-base",children:"端口"}),e.jsx(ce,{id:"maibot-port",type:"number",value:n.maibot_server.port||"",onChange:c=>r({...n,maibot_server:{...n.maibot_server,port:c.target.value?parseInt(c.target.value):0}}),placeholder:"8000",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 PORT 字段(留空使用默认值 8000)"})]})]})]})})}function rw({config:n,onChange:r}){const c=x=>{const f={...n};x==="group"?f.chat.group_list=[...f.chat.group_list,0]:x==="private"?f.chat.private_list=[...f.chat.private_list,0]:f.chat.ban_user_id=[...f.chat.ban_user_id,0],r(f)},d=(x,f)=>{const j={...n};x==="group"?j.chat.group_list=j.chat.group_list.filter((p,w)=>w!==f):x==="private"?j.chat.private_list=j.chat.private_list.filter((p,w)=>w!==f):j.chat.ban_user_id=j.chat.ban_user_id.filter((p,w)=>w!==f),r(j)},h=(x,f,j)=>{const p={...n};x==="group"?p.chat.group_list[f]=j:x==="private"?p.chat.private_list[f]=j:p.chat.ban_user_id[f]=j,r(p)};return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"聊天黑白名单功能"}),e.jsxs("div",{className:"grid gap-4 md:gap-6",children:[e.jsxs("div",{className:"space-y-3 md:space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-sm md:text-base",children:"群组名单类型"}),e.jsxs(Be,{value:n.chat.group_list_type,onValueChange:x=>r({...n,chat:{...n.chat,group_list_type:x}}),children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),e.jsx(ne,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsx(N,{className:"text-sm md:text-base",children:"群组列表"}),e.jsxs(b,{onClick:()=>c("group"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Ta,{className:"mr-1 h-4 w-4"}),"添加群号"]})]}),n.chat.group_list.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{type:"number",value:x,onChange:j=>h("group",f,parseInt(j.target.value)||0),placeholder:"输入群号",className:"text-sm md:text-base"}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(Pe,{className:"h-4 w-4"})})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:["确定要删除群号 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>d("group",f),children:"删除"})]})]})]})]},f)),n.chat.group_list.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无群组"})]})]}),e.jsxs("div",{className:"space-y-3 md:space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-sm md:text-base",children:"私聊名单类型"}),e.jsxs(Be,{value:n.chat.private_list_type,onValueChange:x=>r({...n,chat:{...n.chat,private_list_type:x}}),children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),e.jsx(ne,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsx(N,{className:"text-sm md:text-base",children:"私聊列表"}),e.jsxs(b,{onClick:()=>c("private"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Ta,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),n.chat.private_list.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{type:"number",value:x,onChange:j=>h("private",f,parseInt(j.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(Pe,{className:"h-4 w-4"})})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:["确定要删除用户 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>d("private",f),children:"删除"})]})]})]})]},f)),n.chat.private_list.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无用户"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsxs("div",{children:[e.jsx(N,{className:"text-sm md:text-base",children:"全局禁止名单"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"名单中的用户无法进行任何聊天"})]}),e.jsxs(b,{onClick:()=>c("ban"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Ta,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),n.chat.ban_user_id.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{type:"number",value:x,onChange:j=>h("ban",f,parseInt(j.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),e.jsxs(ft,{children:[e.jsx($t,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(Pe,{className:"h-4 w-4"})})}),e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:["确定要从全局禁止名单中删除用户 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>d("ban",f),children:"删除"})]})]})]})]},f)),n.chat.ban_user_id.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无禁止用户"})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(N,{className:"text-sm md:text-base",children:"屏蔽QQ官方机器人"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否屏蔽来自QQ官方机器人的消息"})]}),e.jsx(Ge,{checked:n.chat.ban_qq_bot,onCheckedChange:x=>r({...n,chat:{...n.chat,ban_qq_bot:x}})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(N,{className:"text-sm md:text-base",children:"启用戳一戳功能"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否响应戳一戳消息"})]}),e.jsx(Ge,{checked:n.chat.enable_poke,onCheckedChange:x=>r({...n,chat:{...n.chat,enable_poke:x}})})]})]})]})})}function cw({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"发送语音设置"}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(N,{className:"text-sm md:text-base",children:"使用 TTS 语音"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"请确保已配置 TTS 并有对应的适配器"})]}),e.jsx(Ge,{checked:n.voice.use_tts,onCheckedChange:c=>r({...n,voice:{use_tts:c}})})]})]})})}function ow({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"调试设置"}),e.jsx("div",{className:"grid gap-3 md:gap-4",children:e.jsxs("div",{className:"grid gap-2",children:[e.jsx(N,{className:"text-sm md:text-base",children:"日志等级"}),e.jsxs(Be,{value:n.debug.level,onValueChange:c=>r({...n,debug:{level:c}}),children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"DEBUG",children:"DEBUG(调试)"}),e.jsx(ne,{value:"INFO",children:"INFO(信息)"}),e.jsx(ne,{value:"WARNING",children:"WARNING(警告)"}),e.jsx(ne,{value:"ERROR",children:"ERROR(错误)"}),e.jsx(ne,{value:"CRITICAL",children:"CRITICAL(严重)"})]})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"设置适配器的日志输出等级"})]})})]})})}const dw=["defaultChecked","defaultValue","suppressContentEditableWarning","suppressHydrationWarning","dangerouslySetInnerHTML","accessKey","className","contentEditable","contextMenu","dir","draggable","hidden","id","lang","placeholder","slot","spellCheck","style","tabIndex","title","translate","radioGroup","role","about","datatype","inlist","prefix","property","resource","typeof","vocab","autoCapitalize","autoCorrect","autoSave","color","itemProp","itemScope","itemType","itemID","itemRef","results","security","unselectable","inputMode","is","onCopy","onCopyCapture","onCut","onCutCapture","onPaste","onPasteCapture","onCompositionEnd","onCompositionEndCapture","onCompositionStart","onCompositionStartCapture","onCompositionUpdate","onCompositionUpdateCapture","onFocus","onFocusCapture","onBlur","onBlurCapture","onChange","onChangeCapture","onBeforeInput","onBeforeInputCapture","onInput","onInputCapture","onReset","onResetCapture","onSubmit","onSubmitCapture","onInvalid","onInvalidCapture","onLoad","onLoadCapture","onError","onErrorCapture","onKeyDown","onKeyDownCapture","onKeyPress","onKeyPressCapture","onKeyUp","onKeyUpCapture","onAbort","onAbortCapture","onCanPlay","onCanPlayCapture","onCanPlayThrough","onCanPlayThroughCapture","onDurationChange","onDurationChangeCapture","onEmptied","onEmptiedCapture","onEncrypted","onEncryptedCapture","onEnded","onEndedCapture","onLoadedData","onLoadedDataCapture","onLoadedMetadata","onLoadedMetadataCapture","onLoadStart","onLoadStartCapture","onPause","onPauseCapture","onPlay","onPlayCapture","onPlaying","onPlayingCapture","onProgress","onProgressCapture","onRateChange","onRateChangeCapture","onSeeked","onSeekedCapture","onSeeking","onSeekingCapture","onStalled","onStalledCapture","onSuspend","onSuspendCapture","onTimeUpdate","onTimeUpdateCapture","onVolumeChange","onVolumeChangeCapture","onWaiting","onWaitingCapture","onAuxClick","onAuxClickCapture","onClick","onClickCapture","onContextMenu","onContextMenuCapture","onDoubleClick","onDoubleClickCapture","onDrag","onDragCapture","onDragEnd","onDragEndCapture","onDragEnter","onDragEnterCapture","onDragExit","onDragExitCapture","onDragLeave","onDragLeaveCapture","onDragOver","onDragOverCapture","onDragStart","onDragStartCapture","onDrop","onDropCapture","onMouseDown","onMouseDownCapture","onMouseEnter","onMouseLeave","onMouseMove","onMouseMoveCapture","onMouseOut","onMouseOutCapture","onMouseOver","onMouseOverCapture","onMouseUp","onMouseUpCapture","onSelect","onSelectCapture","onTouchCancel","onTouchCancelCapture","onTouchEnd","onTouchEndCapture","onTouchMove","onTouchMoveCapture","onTouchStart","onTouchStartCapture","onPointerDown","onPointerDownCapture","onPointerMove","onPointerMoveCapture","onPointerUp","onPointerUpCapture","onPointerCancel","onPointerCancelCapture","onPointerEnter","onPointerEnterCapture","onPointerLeave","onPointerLeaveCapture","onPointerOver","onPointerOverCapture","onPointerOut","onPointerOutCapture","onGotPointerCapture","onGotPointerCaptureCapture","onLostPointerCapture","onLostPointerCaptureCapture","onScroll","onScrollCapture","onWheel","onWheelCapture","onAnimationStart","onAnimationStartCapture","onAnimationEnd","onAnimationEndCapture","onAnimationIteration","onAnimationIterationCapture","onTransitionEnd","onTransitionEndCapture"],uw=/^(aria-|data-)/,kg=n=>Object.fromEntries(Object.entries(n).filter(([r])=>uw.test(r)||dw.includes(r)));function mw(n,r){const c=kg(n);return Object.keys(n).some(d=>!Object.hasOwn(c,d)&&n[d]!==r[d])}class hw extends u.Component{container;plugin;componentDidMount(){this.installPlugin()}componentDidUpdate(r){if(r.uppy!==this.props.uppy)this.uninstallPlugin(r),this.installPlugin();else if(mw(this.props,r)){const{uppy:c,...d}={...this.props,target:this.container};this.plugin.setOptions(d)}}componentWillUnmount(){this.uninstallPlugin()}installPlugin(){const{uppy:r,...c}={id:"Dashboard",...this.props,inline:!0,target:this.container};r.use(Py,c),this.plugin=r.getPlugin(c.id)}uninstallPlugin(r=this.props){const{uppy:c}=r;c.removePlugin(this.plugin)}render(){return u.createElement("div",{className:"uppy-Container",ref:r=>{this.container=r},...kg(this.props)})}}function xw({src:n,alt:r="表情包",className:c,maxRetries:d=5,retryInterval:h=1500}){const[x,f]=u.useState("loading"),[j,p]=u.useState(0),[w,v]=u.useState(null),k=u.useCallback(async()=>{try{const T=await fetch(n,{credentials:"include"});if(T.status===202){f("generating"),j{p(F=>F+1)},h):f("error");return}if(!T.ok){f("error");return}const E=await T.blob(),R=URL.createObjectURL(E);v(R),f("loaded")}catch(T){console.error("加载缩略图失败:",T),f("error")}},[n,j,d,h]);return u.useEffect(()=>{f("loading"),p(0),v(null)},[n]),u.useEffect(()=>{k()},[k]),u.useEffect(()=>()=>{w&&URL.revokeObjectURL(w)},[w]),x==="loading"||x==="generating"?e.jsx(dg,{className:K("w-full h-full",c)}):x==="error"||!w?e.jsx("div",{className:K("w-full h-full flex items-center justify-center bg-muted",c),children:e.jsx(ag,{className:"h-8 w-8 text-muted-foreground"})}):e.jsx("img",{src:w,alt:r,className:K("w-full h-full object-contain",c)})}function fw({content:n,className:r=""}){return e.jsx("div",{className:`prose prose-sm dark:prose-invert max-w-none ${r}`,children:e.jsx(eN,{remarkPlugins:[sN,aN],rehypePlugins:[tN],components:{code({inline:c,className:d,children:h,...x}){return c?e.jsx("code",{className:"bg-muted px-1.5 py-0.5 rounded text-sm font-mono",...x,children:h}):e.jsx("code",{className:`${d} block bg-muted p-4 rounded-lg overflow-x-auto`,...x,children:h})},table({children:c,...d}){return e.jsx("div",{className:"overflow-x-auto",children:e.jsx("table",{className:"border-collapse border border-border",...d,children:c})})},th({children:c,...d}){return e.jsx("th",{className:"border border-border bg-muted px-4 py-2 text-left font-semibold",...d,children:c})},td({children:c,...d}){return e.jsx("td",{className:"border border-border px-4 py-2",...d,children:c})},a({children:c,...d}){return e.jsx("a",{className:"text-primary hover:underline",target:"_blank",rel:"noopener noreferrer",...d,children:c})},blockquote({children:c,...d}){return e.jsx("blockquote",{className:"border-l-4 border-primary pl-4 italic text-muted-foreground",...d,children:c})},h1({children:c,...d}){return e.jsx("h1",{className:"text-3xl font-bold mt-6 mb-4",...d,children:c})},h2({children:c,...d}){return e.jsx("h2",{className:"text-2xl font-bold mt-5 mb-3",...d,children:c})},h3({children:c,...d}){return e.jsx("h3",{className:"text-xl font-bold mt-4 mb-2",...d,children:c})},h4({children:c,...d}){return e.jsx("h4",{className:"text-lg font-semibold mt-3 mb-2",...d,children:c})},ul({children:c,...d}){return e.jsx("ul",{className:"list-disc list-inside space-y-1 my-2",...d,children:c})},ol({children:c,...d}){return e.jsx("ol",{className:"list-decimal list-inside space-y-1 my-2",...d,children:c})},p({children:c,...d}){return e.jsx("p",{className:"my-2 leading-relaxed",...d,children:c})},hr({...c}){return e.jsx("hr",{className:"my-4 border-border",...c})}},children:n})})}function pw({children:n,className:r}){return e.jsx(fw,{content:n,className:r})}const da="/api/webui/emoji";async function gw(n){const r=new URLSearchParams;n.page&&r.append("page",n.page.toString()),n.page_size&&r.append("page_size",n.page_size.toString()),n.search&&r.append("search",n.search),n.is_registered!==void 0&&r.append("is_registered",n.is_registered.toString()),n.is_banned!==void 0&&r.append("is_banned",n.is_banned.toString()),n.format&&r.append("format",n.format),n.sort_by&&r.append("sort_by",n.sort_by),n.sort_order&&r.append("sort_order",n.sort_order);const c=await ke(`${da}/list?${r}`,{});if(!c.ok)throw new Error(`获取表情包列表失败: ${c.statusText}`);return c.json()}async function jw(n){const r=await ke(`${da}/${n}`,{});if(!r.ok)throw new Error(`获取表情包详情失败: ${r.statusText}`);return r.json()}async function vw(n,r){const c=await ke(`${da}/${n}`,{method:"PATCH",body:JSON.stringify(r)});if(!c.ok)throw new Error(`更新表情包失败: ${c.statusText}`);return c.json()}async function bw(n){const r=await ke(`${da}/${n}`,{method:"DELETE"});if(!r.ok)throw new Error(`删除表情包失败: ${r.statusText}`);return r.json()}async function yw(){const n=await ke(`${da}/stats/summary`,{});if(!n.ok)throw new Error(`获取统计数据失败: ${n.statusText}`);return n.json()}async function Nw(n){const r=await ke(`${da}/${n}/register`,{method:"POST"});if(!r.ok)throw new Error(`注册表情包失败: ${r.statusText}`);return r.json()}async function ww(n){const r=await ke(`${da}/${n}/ban`,{method:"POST"});if(!r.ok)throw new Error(`封禁表情包失败: ${r.statusText}`);return r.json()}function _w(n,r=!1){return r?`${da}/${n}/thumbnail?original=true`:`${da}/${n}/thumbnail`}function Sw(n){return`${da}/${n}/thumbnail?original=true`}async function Cw(n){const r=await ke(`${da}/batch/delete`,{method:"POST",body:JSON.stringify({emoji_ids:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"批量删除失败")}return r.json()}function kw(){return`${da}/upload`}function Tw(){const[n,r]=u.useState([]),[c,d]=u.useState(null),[h,x]=u.useState(!1),[f,j]=u.useState(1),[p,w]=u.useState(0),[v,k]=u.useState(20),[T,E]=u.useState("all"),[R,F]=u.useState("all"),[U,M]=u.useState("all"),[Z,G]=u.useState("usage_count"),[z,B]=u.useState("desc"),[X,S]=u.useState(null),[O,se]=u.useState(!1),[he,ye]=u.useState(!1),[be,pe]=u.useState(!1),[je,_e]=u.useState(new Set),[y,q]=u.useState(!1),[H,ie]=u.useState(""),[_,me]=u.useState("medium"),[xe,Q]=u.useState(!1),{toast:de}=Rt(),ge=u.useCallback(async()=>{try{x(!0);const re=await gw({page:f,page_size:v,is_registered:T==="all"?void 0:T==="registered",is_banned:R==="all"?void 0:R==="banned",format:U==="all"?void 0:U,sort_by:Z,sort_order:z});r(re.data),w(re.total)}catch(re){const we=re instanceof Error?re.message:"加载表情包列表失败";de({title:"错误",description:we,variant:"destructive"})}finally{x(!1)}},[f,v,T,R,U,Z,z,de]),le=async()=>{try{const re=await yw();d(re.data)}catch(re){console.error("加载统计数据失败:",re)}};u.useEffect(()=>{ge()},[ge]),u.useEffect(()=>{le()},[]);const L=async re=>{try{const we=await jw(re.id);S(we.data),se(!0)}catch(we){const Je=we instanceof Error?we.message:"加载详情失败";de({title:"错误",description:Je,variant:"destructive"})}},$=re=>{S(re),ye(!0)},D=re=>{S(re),pe(!0)},ee=async()=>{if(X)try{await bw(X.id),de({title:"成功",description:"表情包已删除"}),pe(!1),S(null),ge(),le()}catch(re){const we=re instanceof Error?re.message:"删除失败";de({title:"错误",description:we,variant:"destructive"})}},Ne=async re=>{try{await Nw(re.id),de({title:"成功",description:"表情包已注册"}),ge(),le()}catch(we){const Je=we instanceof Error?we.message:"注册失败";de({title:"错误",description:Je,variant:"destructive"})}},ze=async re=>{try{await ww(re.id),de({title:"成功",description:"表情包已封禁"}),ge(),le()}catch(we){const Je=we instanceof Error?we.message:"封禁失败";de({title:"错误",description:Je,variant:"destructive"})}},We=re=>{const we=new Set(je);we.has(re)?we.delete(re):we.add(re),_e(we)},Xe=async()=>{try{const re=await Cw(Array.from(je));de({title:"批量删除完成",description:re.message}),_e(new Set),q(!1),ge(),le()}catch(re){de({title:"批量删除失败",description:re instanceof Error?re.message:"批量删除失败",variant:"destructive"})}},Mt=()=>{const re=parseInt(H),we=Math.ceil(p/v);re>=1&&re<=we?(j(re),ie("")):de({title:"无效的页码",description:`请输入1-${we}之间的页码`,variant:"destructive"})},qt=c?.formats?Object.keys(c.formats):[];return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsxs("div",{className:"mb-4 sm:mb-6 flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"表情包管理"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理麦麦的表情包资源"})]}),e.jsxs(b,{onClick:()=>Q(!0),className:"gap-2",children:[e.jsx(cr,{className:"h-4 w-4"}),"上传表情包"]})]}),e.jsx(Ie,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[c&&e.jsxs("div",{className:"grid gap-4 grid-cols-2 lg:grid-cols-4",children:[e.jsx(Ve,{children:e.jsxs(pt,{className:"pb-2",children:[e.jsx(Kt,{children:"总数"}),e.jsx(gt,{className:"text-2xl",children:c.total})]})}),e.jsx(Ve,{children:e.jsxs(pt,{className:"pb-2",children:[e.jsx(Kt,{children:"已注册"}),e.jsx(gt,{className:"text-2xl text-green-600",children:c.registered})]})}),e.jsx(Ve,{children:e.jsxs(pt,{className:"pb-2",children:[e.jsx(Kt,{children:"已封禁"}),e.jsx(gt,{className:"text-2xl text-red-600",children:c.banned})]})}),e.jsx(Ve,{children:e.jsxs(pt,{className:"pb-2",children:[e.jsx(Kt,{children:"未注册"}),e.jsx(gt,{className:"text-2xl text-gray-600",children:c.unregistered})]})})]}),e.jsxs(Ve,{children:[e.jsx(pt,{children:e.jsxs(gt,{className:"flex items-center gap-2",children:[e.jsx(Tu,{className:"h-5 w-5"}),"筛选和排序"]})}),e.jsxs(yt,{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:"排序方式"}),e.jsxs(Be,{value:`${Z}-${z}`,onValueChange:re=>{const[we,Je]=re.split("-");G(we),B(Je),j(1)},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"usage_count-desc",children:"使用次数 (多→少)"}),e.jsx(ne,{value:"usage_count-asc",children:"使用次数 (少→多)"}),e.jsx(ne,{value:"register_time-desc",children:"注册时间 (新→旧)"}),e.jsx(ne,{value:"register_time-asc",children:"注册时间 (旧→新)"}),e.jsx(ne,{value:"record_time-desc",children:"记录时间 (新→旧)"}),e.jsx(ne,{value:"record_time-asc",children:"记录时间 (旧→新)"}),e.jsx(ne,{value:"last_used_time-desc",children:"最后使用 (新→旧)"}),e.jsx(ne,{value:"last_used_time-asc",children:"最后使用 (旧→新)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:"注册状态"}),e.jsxs(Be,{value:T,onValueChange:re=>{E(re),j(1)},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部"}),e.jsx(ne,{value:"registered",children:"已注册"}),e.jsx(ne,{value:"unregistered",children:"未注册"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:"封禁状态"}),e.jsxs(Be,{value:R,onValueChange:re=>{F(re),j(1)},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部"}),e.jsx(ne,{value:"banned",children:"已封禁"}),e.jsx(ne,{value:"unbanned",children:"未封禁"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:"格式"}),e.jsxs(Be,{value:U,onValueChange:re=>{M(re),j(1)},children:[e.jsx(Re,{children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部"}),qt.map(re=>e.jsxs(ne,{value:re,children:[re.toUpperCase()," (",c?.formats[re],")"]},re))]})]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 pt-4 border-t",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[je.size>0&&e.jsxs("span",{className:"text-sm text-muted-foreground",children:["已选择 ",je.size," 个表情包"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{className:"text-sm whitespace-nowrap",children:"卡片大小"}),e.jsxs(Be,{value:_,onValueChange:re=>me(re),children:[e.jsx(Re,{className:"w-24",children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"small",children:"小"}),e.jsx(ne,{value:"medium",children:"中"}),e.jsx(ne,{value:"large",children:"大"})]})]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{htmlFor:"emoji-page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(Be,{value:v.toString(),onValueChange:re=>{k(parseInt(re)),j(1),_e(new Set)},children:[e.jsx(Re,{id:"emoji-page-size",className:"w-20",children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"20",children:"20"}),e.jsx(ne,{value:"40",children:"40"}),e.jsx(ne,{value:"60",children:"60"}),e.jsx(ne,{value:"100",children:"100"})]})]}),je.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>_e(new Set),children:"取消选择"}),e.jsxs(b,{variant:"destructive",size:"sm",onClick:()=>q(!0),children:[e.jsx(Pe,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]}),e.jsx("div",{className:"flex justify-end pt-4 border-t",children:e.jsxs(b,{variant:"outline",size:"sm",onClick:ge,disabled:h,children:[e.jsx(ps,{className:`h-4 w-4 mr-2 ${h?"animate-spin":""}`}),"刷新"]})})]})]}),e.jsxs(Ve,{children:[e.jsxs(pt,{children:[e.jsx(gt,{children:"表情包列表"}),e.jsxs(Kt,{children:["共 ",p," 个表情包,当前第 ",f," 页"]})]}),e.jsxs(yt,{children:[n.length===0?e.jsx("div",{className:"text-center py-12 text-muted-foreground",children:"暂无数据"}):e.jsx("div",{className:`grid gap-3 ${_==="small"?"grid-cols-3 sm:grid-cols-4 md:grid-cols-6 lg:grid-cols-8 xl:grid-cols-10":_==="medium"?"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 xl:grid-cols-8":"grid-cols-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5"}`,children:n.map(re=>e.jsxs("div",{className:`group relative rounded-lg border bg-card overflow-hidden hover:ring-2 hover:ring-primary transition-all cursor-pointer ${je.has(re.id)?"ring-2 ring-primary bg-primary/5":""}`,onClick:()=>We(re.id),children:[e.jsx("div",{className:`absolute top-1 left-1 z-10 transition-opacity ${je.has(re.id)?"opacity-100":"opacity-0 group-hover:opacity-100"}`,children:e.jsx("div",{className:`w-5 h-5 rounded-full border-2 flex items-center justify-center ${je.has(re.id)?"bg-primary border-primary text-primary-foreground":"bg-background/80 border-muted-foreground/50"}`,children:je.has(re.id)&&e.jsx(oa,{className:"h-3 w-3"})})}),e.jsxs("div",{className:"absolute top-1 right-1 z-10 flex flex-col gap-0.5",children:[re.is_registered&&e.jsx(Qe,{variant:"default",className:"bg-green-600 text-[10px] px-1 py-0",children:"已注册"}),re.is_banned&&e.jsx(Qe,{variant:"destructive",className:"text-[10px] px-1 py-0",children:"已封禁"})]}),e.jsx("div",{className:`aspect-square bg-muted flex items-center justify-center overflow-hidden ${_==="small"?"p-1":_==="medium"?"p-2":"p-3"}`,children:e.jsx(xw,{src:_w(re.id),alt:"表情包"})}),e.jsxs("div",{className:`border-t bg-card ${_==="small"?"p-1":"p-2"}`,children:[e.jsxs("div",{className:"flex items-center justify-between gap-1 text-xs text-muted-foreground mb-1",children:[e.jsx(Qe,{variant:"outline",className:"text-[10px] px-1 py-0",children:re.format.toUpperCase()}),e.jsxs("span",{className:"font-mono",children:[re.usage_count,"次"]})]}),e.jsxs("div",{className:`flex gap-1 justify-center opacity-0 group-hover:opacity-100 transition-opacity ${_==="small"?"flex-wrap":""}`,children:[e.jsx(b,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:we=>{we.stopPropagation(),$(re)},title:"编辑",children:e.jsx(dr,{className:"h-3 w-3"})}),e.jsx(b,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:we=>{we.stopPropagation(),L(re)},title:"详情",children:e.jsx(za,{className:"h-3 w-3"})}),!re.is_registered&&e.jsx(b,{variant:"ghost",size:"icon",className:"h-6 w-6 text-green-600 hover:text-green-700",onClick:we=>{we.stopPropagation(),Ne(re)},title:"注册",children:e.jsx(oa,{className:"h-3 w-3"})}),!re.is_banned&&e.jsx(b,{variant:"ghost",size:"icon",className:"h-6 w-6 text-orange-600 hover:text-orange-700",onClick:we=>{we.stopPropagation(),ze(re)},title:"封禁",children:e.jsx(jy,{className:"h-3 w-3"})}),e.jsx(b,{variant:"ghost",size:"icon",className:"h-6 w-6 text-red-600 hover:text-red-700",onClick:we=>{we.stopPropagation(),D(re)},title:"删除",children:e.jsx(Pe,{className:"h-3 w-3"})})]})]})]},re.id))}),p>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["显示 ",(f-1)*v+1," 到"," ",Math.min(f*v,p)," 条,共 ",p," 条"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(gr,{className:"h-4 w-4"})}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>j(re=>Math.max(1,re-1)),disabled:f===1,children:[e.jsx(nn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:H,onChange:re=>ie(re.target.value),onKeyDown:re=>re.key==="Enter"&&Mt(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(p/v)}),e.jsx(b,{variant:"outline",size:"sm",onClick:Mt,disabled:!H,className:"h-8",children:"跳转"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>j(re=>re+1),disabled:f>=Math.ceil(p/v),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(Ol,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(p/v)),disabled:f>=Math.ceil(p/v),className:"hidden sm:flex",children:e.jsx(jr,{className:"h-4 w-4"})})]})]})]})]}),e.jsx(Ew,{emoji:X,open:O,onOpenChange:se}),e.jsx(zw,{emoji:X,open:he,onOpenChange:ye,onSuccess:()=>{ge(),le()}}),e.jsx(Aw,{open:xe,onOpenChange:Q,onSuccess:()=>{ge(),le()}})]})}),e.jsx(ft,{open:y,onOpenChange:q,children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认批量删除"}),e.jsxs(dt,{children:["你确定要删除选中的 ",je.size," 个表情包吗?此操作不可撤销。"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:Xe,children:"确认删除"})]})]})}),e.jsx(Qt,{open:be,onOpenChange:pe,children:e.jsxs(Ut,{children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:"确认删除"}),e.jsx(ss,{children:"确定要删除这个表情包吗?此操作无法撤销。"})]}),e.jsxs(os,{children:[e.jsx(b,{variant:"outline",onClick:()=>pe(!1),children:"取消"}),e.jsx(b,{variant:"destructive",onClick:ee,children:"删除"})]})]})})]})}function Ew({emoji:n,open:r,onOpenChange:c}){if(!n)return null;const d=h=>h?new Date(h*1e3).toLocaleString("zh-CN"):"-";return e.jsx(Qt,{open:r,onOpenChange:c,children:e.jsxs(Ut,{className:"max-w-2xl max-h-[90vh]",children:[e.jsx(Bt,{children:e.jsx(Ht,{children:"表情包详情"})}),e.jsx(Ie,{className:"max-h-[calc(90vh-8rem)] pr-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"flex justify-center",children:e.jsx("div",{className:"w-32 h-32 bg-muted rounded-lg flex items-center justify-center overflow-hidden",children:e.jsx("img",{src:Sw(n.id),alt:n.description||"表情包",className:"w-full h-full object-cover",onError:h=>{const x=h.target;x.style.display="none";const f=x.parentElement;f&&(f.innerHTML='')}})})}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(N,{className:"text-muted-foreground",children:"ID"}),e.jsx("div",{className:"mt-1 font-mono",children:n.id})]}),e.jsxs("div",{children:[e.jsx(N,{className:"text-muted-foreground",children:"格式"}),e.jsx("div",{className:"mt-1",children:e.jsx(Qe,{variant:"outline",children:n.format.toUpperCase()})})]})]}),e.jsxs("div",{children:[e.jsx(N,{className:"text-muted-foreground",children:"文件路径"}),e.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:n.full_path})]}),e.jsxs("div",{children:[e.jsx(N,{className:"text-muted-foreground",children:"哈希值"}),e.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:n.emoji_hash})]}),e.jsxs("div",{children:[e.jsx(N,{className:"text-muted-foreground",children:"描述"}),n.description?e.jsx("div",{className:"mt-1 rounded-lg border bg-muted/50 p-3",children:e.jsx(pw,{className:"prose-sm",children:n.description})}):e.jsx("div",{className:"mt-1 text-sm text-muted-foreground",children:"-"})]}),e.jsxs("div",{children:[e.jsx(N,{className:"text-muted-foreground",children:"情绪"}),e.jsx("div",{className:"mt-1",children:n.emotion?e.jsx("span",{className:"text-sm",children:n.emotion}):e.jsx("span",{className:"text-sm text-muted-foreground",children:"-"})})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(N,{className:"text-muted-foreground",children:"状态"}),e.jsxs("div",{className:"mt-2 flex gap-2",children:[n.is_registered&&e.jsx(Qe,{variant:"default",className:"bg-green-600",children:"已注册"}),n.is_banned&&e.jsx(Qe,{variant:"destructive",children:"已封禁"}),!n.is_registered&&!n.is_banned&&e.jsx(Qe,{variant:"outline",children:"未注册"})]})]}),e.jsxs("div",{children:[e.jsx(N,{className:"text-muted-foreground",children:"使用次数"}),e.jsx("div",{className:"mt-1 font-mono text-lg",children:n.usage_count})]})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(N,{className:"text-muted-foreground",children:"记录时间"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.record_time)})]}),e.jsxs("div",{children:[e.jsx(N,{className:"text-muted-foreground",children:"注册时间"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.register_time)})]})]}),e.jsxs("div",{children:[e.jsx(N,{className:"text-muted-foreground",children:"最后使用"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.last_used_time)})]})]})})]})})}function zw({emoji:n,open:r,onOpenChange:c,onSuccess:d}){const[h,x]=u.useState(""),[f,j]=u.useState(!1),[p,w]=u.useState(!1),[v,k]=u.useState(!1),{toast:T}=Rt();u.useEffect(()=>{n&&(x(n.emotion||""),j(n.is_registered),w(n.is_banned))},[n]);const E=async()=>{if(n)try{k(!0);const R=h.split(/[,,]/).map(F=>F.trim()).filter(Boolean).join(",");await vw(n.id,{emotion:R||void 0,is_registered:f,is_banned:p}),T({title:"成功",description:"表情包信息已更新"}),c(!1),d()}catch(R){const F=R instanceof Error?R.message:"保存失败";T({title:"错误",description:F,variant:"destructive"})}finally{k(!1)}};return n?e.jsx(Qt,{open:r,onOpenChange:c,children:e.jsxs(Ut,{className:"max-w-2xl",children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:"编辑表情包"}),e.jsx(ss,{children:"修改表情包的情绪和状态信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(N,{children:"情绪"}),e.jsx(Ot,{value:h,onChange:R=>x(R.target.value),placeholder:"输入情绪描述...",rows:2,className:"mt-1"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"输入情绪相关的文本描述"})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(bs,{id:"is_registered",checked:f,onCheckedChange:R=>{R===!0?(j(!0),w(!1)):j(!1)}}),e.jsx(N,{htmlFor:"is_registered",className:"cursor-pointer",children:"已注册"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(bs,{id:"is_banned",checked:p,onCheckedChange:R=>{R===!0?(w(!0),j(!1)):w(!1)}}),e.jsx(N,{htmlFor:"is_banned",className:"cursor-pointer",children:"已封禁"})]})]})]}),e.jsxs(os,{children:[e.jsx(b,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(b,{onClick:E,disabled:v,children:v?"保存中...":"保存"})]})]})}):null}function Aw({open:n,onOpenChange:r,onSuccess:c}){const[d,h]=u.useState("select"),[x,f]=u.useState([]),[j,p]=u.useState(null),[w,v]=u.useState(!1),{toast:k}=Rt(),T=u.useMemo(()=>new Wy({id:"emoji-uploader",autoProceed:!1,restrictions:{maxFileSize:10485760,allowedFileTypes:["image/jpeg","image/png","image/gif","image/webp"],maxNumberOfFiles:20},locale:{pluralize:()=>0,strings:{addMoreFiles:"添加更多文件",addingMoreFiles:"正在添加更多文件",allowedFileTypes:"允许的文件类型:%{types}",cancel:"取消",closeModal:"关闭",complete:"完成",connectedToInternet:"已连接到互联网",copyLink:"复制链接",copyLinkToClipboardFallback:"复制下方链接",copyLinkToClipboardSuccess:"链接已复制到剪贴板",dashboardTitle:"选择文件",dashboardWindowTitle:"文件选择窗口(按 ESC 关闭)",done:"完成",dropHereOr:"拖放文件到这里或 %{browse}",dropHint:"将文件拖放到此处",dropPasteFiles:"将文件拖放到这里或 %{browseFiles}",dropPasteFolders:"将文件拖放到这里或 %{browseFolders}",dropPasteBoth:"将文件拖放到这里,%{browseFiles} 或 %{browseFolders}",dropPasteImportFiles:"将文件拖放到这里,%{browseFiles} 或从以下位置导入:",dropPasteImportFolders:"将文件拖放到这里,%{browseFolders} 或从以下位置导入:",dropPasteImportBoth:"将文件拖放到这里,%{browseFiles},%{browseFolders} 或从以下位置导入:",editFile:"编辑文件",editing:"正在编辑 %{file}",emptyFolderAdded:"未从空文件夹添加文件",exceedsSize:"%{file} 超过了最大允许大小 %{size}",failedToUpload:"上传 %{file} 失败",fileSource:"文件来源:%{name}",filesUploadedOfTotal:{0:"已上传 %{complete} / %{smart_count} 个文件",1:"已上传 %{complete} / %{smart_count} 个文件"},filter:"筛选",finishEditingFile:"完成编辑文件",folderAdded:{0:"已从 %{folder} 添加 %{smart_count} 个文件",1:"已从 %{folder} 添加 %{smart_count} 个文件"},generatingThumbnails:"正在生成缩略图...",import:"导入",importFiles:"从以下位置导入文件:",importFrom:"从 %{name} 导入",loading:"加载中...",logOut:"登出",myDevice:"我的设备",noFilesFound:"这里没有文件或文件夹",noInternetConnection:"无网络连接",openFolderNamed:"打开文件夹 %{name}",pause:"暂停",pauseUpload:"暂停上传",paused:"已暂停",poweredBy:"技术支持:%{uppy}",processingXFiles:{0:"正在处理 %{smart_count} 个文件",1:"正在处理 %{smart_count} 个文件"},recording:"录制中",removeFile:"移除文件",resetFilter:"重置筛选",resume:"继续",resumeUpload:"继续上传",retry:"重试",retryUpload:"重试上传",save:"保存",saveChanges:"保存更改",selectFileNamed:"选择文件 %{name}",selectX:{0:"选择 %{smart_count}",1:"选择 %{smart_count}"},smile:"笑一个!",startRecording:"开始录制视频",stopRecording:"停止录制视频",takePicture:"拍照",timedOut:"上传已停滞 %{seconds} 秒,正在中止。",upload:"下一步",uploadComplete:"上传完成",uploadFailed:"上传失败",uploadPaused:"上传已暂停",uploadXFiles:{0:"下一步(%{smart_count} 个文件)",1:"下一步(%{smart_count} 个文件)"},uploadXNewFiles:{0:"下一步(+%{smart_count} 个文件)",1:"下一步(+%{smart_count} 个文件)"},uploading:"正在上传",uploadingXFiles:{0:"正在上传 %{smart_count} 个文件",1:"正在上传 %{smart_count} 个文件"},xFilesSelected:{0:"已选择 %{smart_count} 个文件",1:"已选择 %{smart_count} 个文件"},xMoreFilesAdded:{0:"又添加了 %{smart_count} 个文件",1:"又添加了 %{smart_count} 个文件"},xTimeLeft:"剩余 %{time}",youCanOnlyUploadFileTypes:"您只能上传:%{types}",youCanOnlyUploadX:{0:"您只能上传 %{smart_count} 个文件",1:"您只能上传 %{smart_count} 个文件"},youHaveToAtLeastSelectX:{0:"您至少需要选择 %{smart_count} 个文件",1:"您至少需要选择 %{smart_count} 个文件"},browseFiles:"浏览文件",browseFolders:"浏览文件夹",cancelUpload:"取消上传",addMore:"添加更多",back:"返回",editFileWithFilename:"编辑文件 %{file}"}}}),[]);u.useEffect(()=>{const X=()=>{const S=T.getFiles();if(S.length===0)return;const O=S.map(se=>({id:se.id,name:se.name,previewUrl:se.preview||URL.createObjectURL(se.data),emotion:"",description:"",isRegistered:!0,file:se.data}));f(O),S.length===1?(p(O[0].id),h("edit-single")):h("edit-multiple")};return T.on("upload",X),()=>{T.off("upload",X)}},[T]),u.useEffect(()=>{n||(T.cancelAll(),h("select"),f([]),p(null),v(!1))},[n,T]);const E=u.useCallback((X,S)=>{f(O=>O.map(se=>se.id===X?{...se,...S}:se))},[]),R=u.useCallback(X=>X.emotion.trim().length>0,[]),F=u.useMemo(()=>x.length>0&&x.every(R),[x,R]),U=u.useMemo(()=>x.find(X=>X.id===j)||null,[x,j]),M=u.useCallback(()=>{(d==="edit-single"||d==="edit-multiple")&&(h("select"),f([]),p(null))},[d]),Z=u.useCallback(async()=>{if(!F){k({title:"请填写必填项",description:"每个表情包的情感标签都是必填的",variant:"destructive"});return}v(!0);const X=localStorage.getItem("access-token")||"";let S=0,O=0;try{for(const se of x){const he=new FormData;he.append("file",se.file),he.append("emotion",se.emotion),he.append("description",se.description),he.append("is_registered",se.isRegistered.toString());try{(await fetch(kw(),{method:"POST",headers:{Authorization:`Bearer ${X}`},body:he})).ok?S++:O++}catch{O++}}O===0?(k({title:"上传成功",description:`成功上传 ${S} 个表情包`}),r(!1),c()):(k({title:"部分上传失败",description:`成功 ${S} 个,失败 ${O} 个`,variant:"destructive"}),c())}finally{v(!1)}},[F,x,k,r,c]),G=()=>e.jsx("div",{className:"space-y-4",children:e.jsx("div",{className:"border rounded-lg overflow-hidden w-full",children:e.jsx(hw,{uppy:T,proudlyDisplayPoweredByUppy:!1,hideProgressDetails:!0,height:350,width:"100%",theme:"auto",note:"支持 JPG、PNG、GIF、WebP 格式,最多 20 个文件"})})}),z=()=>{const X=x[0];return X?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs(b,{variant:"ghost",size:"sm",onClick:M,children:[e.jsx(Wn,{className:"h-4 w-4 mr-1"}),"返回"]}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"编辑表情包信息"})]}),e.jsxs("div",{className:"flex gap-6",children:[e.jsxs("div",{className:"flex-shrink-0",children:[e.jsx("div",{className:"w-32 h-32 rounded-lg border overflow-hidden bg-muted flex items-center justify-center",children:e.jsx("img",{src:X.previewUrl,alt:X.name,className:"max-w-full max-h-full object-contain"})}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2 text-center truncate max-w-32",children:X.name})]}),e.jsxs("div",{className:"flex-1 space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(N,{htmlFor:"single-emotion",children:["情感标签 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"single-emotion",value:X.emotion,onChange:S=>E(X.id,{emotion:S.target.value}),placeholder:"多个标签用逗号分隔,如:开心,高兴",className:X.emotion.trim()?"":"border-destructive"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"用于情感匹配,多个标签用逗号分隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"single-description",children:"描述"}),e.jsx(ce,{id:"single-description",value:X.description,onChange:S=>E(X.id,{description:S.target.value}),placeholder:"输入表情包描述..."})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(bs,{id:"single-is-registered",checked:X.isRegistered,onCheckedChange:S=>E(X.id,{isRegistered:S===!0})}),e.jsx(N,{htmlFor:"single-is-registered",className:"cursor-pointer",children:"上传后立即注册(可被麦麦使用)"})]})]})]}),e.jsx(os,{children:e.jsx(b,{onClick:Z,disabled:!F||w,children:w?"上传中...":"上传"})})]}):null},B=()=>{const X=x.filter(R).length,S=x.length;return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs(b,{variant:"ghost",size:"sm",onClick:M,children:[e.jsx(Wn,{className:"h-4 w-4 mr-1"}),"返回"]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["编辑表情包信息(",X,"/",S," 已完成)"]})]}),e.jsx(Qe,{variant:F?"default":"secondary",children:F?e.jsxs(e.Fragment,{children:[e.jsx(ga,{className:"h-3 w-3 mr-1"}),"全部完成"]}):e.jsxs(e.Fragment,{children:[e.jsx(si,{className:"h-3 w-3 mr-1"}),"未完成"]})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(Ie,{className:"h-[350px] pr-2",children:e.jsx("div",{className:"space-y-2",children:x.map(O=>{const se=R(O),he=j===O.id;return e.jsxs("div",{onClick:()=>p(O.id),className:` - flex items-center gap-3 p-3 rounded-lg border-2 cursor-pointer transition-all - ${he?"ring-2 ring-primary":""} - ${se?"border-green-500 bg-green-50 dark:bg-green-950/20":"border-border hover:border-muted-foreground/50"} - `,children:[e.jsx("div",{className:"w-12 h-12 rounded border overflow-hidden bg-muted flex-shrink-0 flex items-center justify-center",children:e.jsx("img",{src:O.previewUrl,alt:O.name,className:"max-w-full max-h-full object-contain"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm font-medium truncate",children:O.name}),e.jsx("p",{className:"text-xs text-muted-foreground truncate",children:O.emotion||"未填写情感标签"})]}),se?e.jsx(oa,{className:"h-5 w-5 text-green-500 flex-shrink-0"}):e.jsx("div",{className:"h-5 w-5 rounded-full border-2 border-muted-foreground/30 flex-shrink-0"})]},O.id)})})}),e.jsx("div",{className:"border rounded-lg p-4",children:U?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-16 h-16 rounded border overflow-hidden bg-muted flex items-center justify-center",children:e.jsx("img",{src:U.previewUrl,alt:U.name,className:"max-w-full max-h-full object-contain"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium truncate",children:U.name}),R(U)&&e.jsxs(Qe,{variant:"outline",className:"text-green-600 border-green-600",children:[e.jsx(ga,{className:"h-3 w-3 mr-1"}),"已完成"]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(N,{htmlFor:"multi-emotion",children:["情感标签 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"multi-emotion",value:U.emotion,onChange:O=>E(U.id,{emotion:O.target.value}),placeholder:"多个标签用逗号分隔,如:开心,高兴",className:U.emotion.trim()?"":"border-destructive"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"multi-description",children:"描述"}),e.jsx(ce,{id:"multi-description",value:U.description,onChange:O=>E(U.id,{description:O.target.value}),placeholder:"输入表情包描述..."})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(bs,{id:"multi-is-registered",checked:U.isRegistered,onCheckedChange:O=>E(U.id,{isRegistered:O===!0})}),e.jsx(N,{htmlFor:"multi-is-registered",className:"cursor-pointer text-sm",children:"上传后立即注册"})]})]}):e.jsx("div",{className:"h-full flex items-center justify-center text-muted-foreground",children:e.jsxs("div",{className:"text-center",children:[e.jsx(ag,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),e.jsx("p",{children:"点击左侧卡片编辑"})]})})})]}),e.jsx(os,{children:e.jsx(b,{onClick:Z,disabled:!F||w,children:w?"上传中...":`上传全部 (${S})`})})]})};return e.jsx(Qt,{open:n,onOpenChange:r,children:e.jsxs(Ut,{className:"max-w-3xl max-h-[90vh] overflow-hidden",children:[e.jsxs(Bt,{children:[e.jsxs(Ht,{className:"flex items-center gap-2",children:[e.jsx(cr,{className:"h-5 w-5"}),d==="select"&&"上传表情包 - 选择文件",d==="edit-single"&&"上传表情包 - 填写信息",d==="edit-multiple"&&"上传表情包 - 批量编辑"]}),e.jsxs(ss,{children:[d==="select"&&"支持 JPG、PNG、GIF、WebP 格式,单个文件最大 10MB,可同时上传多个文件",d==="edit-single"&&"请填写表情包的情感标签(必填)和描述",d==="edit-multiple"&&"点击左侧卡片编辑每个表情包的信息,情感标签为必填项"]})]}),e.jsxs("div",{className:"overflow-y-auto pr-1",children:[d==="select"&&G(),d==="edit-single"&&z(),d==="edit-multiple"&&B()]})]})})}const Ll="/api/webui/expression";async function Mw(){const n=await ke(`${Ll}/chats`,{});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取聊天列表失败")}return n.json()}async function Dw(n){const r=new URLSearchParams;n.page&&r.append("page",n.page.toString()),n.page_size&&r.append("page_size",n.page_size.toString()),n.search&&r.append("search",n.search),n.chat_id&&r.append("chat_id",n.chat_id);const c=await ke(`${Ll}/list?${r}`,{});if(!c.ok){const d=await c.json();throw new Error(d.detail||"获取表达方式列表失败")}return c.json()}async function Ow(n){const r=await ke(`${Ll}/${n}`,{});if(!r.ok){const c=await r.json();throw new Error(c.detail||"获取表达方式详情失败")}return r.json()}async function Rw(n){const r=await ke(`${Ll}/`,{method:"POST",body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"创建表达方式失败")}return r.json()}async function Lw(n,r){const c=await ke(`${Ll}/${n}`,{method:"PATCH",body:JSON.stringify(r)});if(!c.ok){const d=await c.json();throw new Error(d.detail||"更新表达方式失败")}return c.json()}async function Uw(n){const r=await ke(`${Ll}/${n}`,{method:"DELETE"});if(!r.ok){const c=await r.json();throw new Error(c.detail||"删除表达方式失败")}return r.json()}async function Bw(n){const r=await ke(`${Ll}/batch/delete`,{method:"POST",body:JSON.stringify({ids:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"批量删除表达方式失败")}return r.json()}async function Hw(){const n=await ke(`${Ll}/stats/summary`,{});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取统计数据失败")}return n.json()}function qw(){const[n,r]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(0),[f,j]=u.useState(1),[p,w]=u.useState(20),[v,k]=u.useState(""),[T,E]=u.useState(null),[R,F]=u.useState(!1),[U,M]=u.useState(!1),[Z,G]=u.useState(!1),[z,B]=u.useState(null),[X,S]=u.useState(new Set),[O,se]=u.useState(!1),[he,ye]=u.useState(""),[be,pe]=u.useState({total:0,recent_7days:0,chat_count:0,top_chats:{}}),[je,_e]=u.useState([]),[y,q]=u.useState(new Map),{toast:H}=Rt(),ie=async()=>{try{d(!0);const ee=await Dw({page:f,page_size:p,search:v||void 0});r(ee.data),x(ee.total)}catch(ee){H({title:"加载失败",description:ee instanceof Error?ee.message:"无法加载表达方式",variant:"destructive"})}finally{d(!1)}},_=async()=>{try{const ee=await Hw();ee?.data&&pe(ee.data)}catch(ee){console.error("加载统计数据失败:",ee)}},me=async()=>{try{const ee=await Mw();if(ee?.data){_e(ee.data);const Ne=new Map;ee.data.forEach(ze=>{Ne.set(ze.chat_id,ze.chat_name)}),q(Ne)}}catch(ee){console.error("加载聊天列表失败:",ee)}},xe=ee=>y.get(ee)||ee;u.useEffect(()=>{ie(),_(),me()},[f,p,v]);const Q=async ee=>{try{const Ne=await Ow(ee.id);E(Ne.data),F(!0)}catch(Ne){H({title:"加载详情失败",description:Ne instanceof Error?Ne.message:"无法加载表达方式详情",variant:"destructive"})}},de=ee=>{E(ee),M(!0)},ge=async ee=>{try{await Uw(ee.id),H({title:"删除成功",description:`已删除表达方式: ${ee.situation}`}),B(null),ie(),_()}catch(Ne){H({title:"删除失败",description:Ne instanceof Error?Ne.message:"无法删除表达方式",variant:"destructive"})}},le=ee=>{const Ne=new Set(X);Ne.has(ee)?Ne.delete(ee):Ne.add(ee),S(Ne)},L=()=>{X.size===n.length&&n.length>0?S(new Set):S(new Set(n.map(ee=>ee.id)))},$=async()=>{try{await Bw(Array.from(X)),H({title:"批量删除成功",description:`已删除 ${X.size} 个表达方式`}),S(new Set),se(!1),ie(),_()}catch(ee){H({title:"批量删除失败",description:ee instanceof Error?ee.message:"无法批量删除表达方式",variant:"destructive"})}},D=()=>{const ee=parseInt(he),Ne=Math.ceil(h/p);ee>=1&&ee<=Ne?(j(ee),ye("")):H({title:"无效的页码",description:`请输入1-${Ne}之间的页码`,variant:"destructive"})};return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsx("div",{className:"mb-4 sm:mb-6",children:e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[e.jsx(Pn,{className:"h-8 w-8",strokeWidth:2}),"表达方式管理"]}),e.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦的表达方式和话术模板"})]}),e.jsxs(b,{onClick:()=>G(!0),className:"gap-2",children:[e.jsx(cs,{className:"h-4 w-4"}),"新增表达方式"]})]})}),e.jsx(Ie,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"总数量"}),e.jsx("div",{className:"text-2xl font-bold mt-1",children:be.total})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"近7天新增"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:be.recent_7days})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"关联聊天数"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-blue-600",children:be.chat_count})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx(N,{htmlFor:"search",children:"搜索"}),e.jsx("div",{className:"flex flex-col sm:flex-row gap-2 mt-1.5",children:e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(Os,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{id:"search",placeholder:"搜索情境、风格或上下文...",value:v,onChange:ee=>k(ee.target.value),className:"pl-9"})]})}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[e.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:X.size>0&&e.jsxs("span",{children:["已选择 ",X.size," 个表达方式"]})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(Be,{value:p.toString(),onValueChange:ee=>{w(parseInt(ee)),j(1),S(new Set)},children:[e.jsx(Re,{id:"page-size",className:"w-20",children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"10",children:"10"}),e.jsx(ne,{value:"20",children:"20"}),e.jsx(ne,{value:"50",children:"50"}),e.jsx(ne,{value:"100",children:"100"})]})]}),X.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>S(new Set),children:"取消选择"}),e.jsxs(b,{variant:"destructive",size:"sm",onClick:()=>se(!0),children:[e.jsx(Pe,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card",children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(ai,{children:[e.jsx(li,{children:e.jsxs(gs,{children:[e.jsx(at,{className:"w-12",children:e.jsx(bs,{checked:X.size===n.length&&n.length>0,onCheckedChange:L})}),e.jsx(at,{children:"情境"}),e.jsx(at,{children:"风格"}),e.jsx(at,{children:"聊天"}),e.jsx(at,{className:"text-right",children:"操作"})]})}),e.jsx(ni,{children:c?e.jsx(gs,{children:e.jsx($e,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):n.length===0?e.jsx(gs,{children:e.jsx($e,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):n.map(ee=>e.jsxs(gs,{children:[e.jsx($e,{children:e.jsx(bs,{checked:X.has(ee.id),onCheckedChange:()=>le(ee.id)})}),e.jsx($e,{className:"font-medium max-w-xs truncate",children:ee.situation}),e.jsx($e,{className:"max-w-xs truncate",children:ee.style}),e.jsx($e,{className:"max-w-[200px] truncate",title:xe(ee.chat_id),style:{wordBreak:"keep-all"},children:e.jsx("span",{className:"whitespace-nowrap overflow-hidden text-ellipsis block",children:xe(ee.chat_id)})}),e.jsx($e,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(b,{variant:"default",size:"sm",onClick:()=>de(ee),children:[e.jsx(dr,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsx(b,{variant:"outline",size:"icon",className:"h-8 w-8",onClick:()=>Q(ee),title:"查看详情",children:e.jsx(Ys,{className:"h-4 w-4"})}),e.jsxs(b,{size:"sm",onClick:()=>B(ee),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(Pe,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},ee.id))})]})}),e.jsx("div",{className:"md:hidden space-y-3 p-4",children:c?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):n.length===0?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):n.map(ee=>e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(bs,{checked:X.has(ee.id),onCheckedChange:()=>le(ee.id),className:"mt-1"}),e.jsxs("div",{className:"min-w-0 flex-1 overflow-hidden space-y-2",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"情境"}),e.jsx("h3",{className:"font-semibold text-sm line-clamp-2 w-full break-all",title:ee.situation,children:ee.situation})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"风格"}),e.jsx("p",{className:"text-sm line-clamp-2 w-full break-all",title:ee.style,children:ee.style})]})]})]}),e.jsxs("div",{className:"text-sm",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"聊天"}),e.jsx("p",{className:"text-sm truncate",title:xe(ee.chat_id),style:{wordBreak:"keep-all"},children:xe(ee.chat_id)})]}),e.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>de(ee),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(dr,{className:"h-3 w-3 mr-1"}),"编辑"]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>Q(ee),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:e.jsx(Ys,{className:"h-3 w-3"})}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>B(ee),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[e.jsx(Pe,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},ee.id))}),h>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",h," 条记录,第 ",f," / ",Math.ceil(h/p)," 页"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(gr,{className:"h-4 w-4"})}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>j(f-1),disabled:f===1,children:[e.jsx(nn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:he,onChange:ee=>ye(ee.target.value),onKeyDown:ee=>ee.key==="Enter"&&D(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(h/p)}),e.jsx(b,{variant:"outline",size:"sm",onClick:D,disabled:!he,className:"h-8",children:"跳转"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>j(f+1),disabled:f>=Math.ceil(h/p),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(Ol,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(h/p)),disabled:f>=Math.ceil(h/p),className:"hidden sm:flex",children:e.jsx(jr,{className:"h-4 w-4"})})]})]})]})]})}),e.jsx(Gw,{expression:T,open:R,onOpenChange:F,chatNameMap:y}),e.jsx(Vw,{open:Z,onOpenChange:G,chatList:je,onSuccess:()=>{ie(),_(),G(!1)}}),e.jsx(Fw,{expression:T,open:U,onOpenChange:M,chatList:je,onSuccess:()=>{ie(),_(),M(!1)}}),e.jsx(ft,{open:!!z,onOpenChange:()=>B(null),children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:['确定要删除表达方式 "',z?.situation,'" 吗? 此操作不可撤销。']})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>z&&ge(z),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),e.jsx($w,{open:O,onOpenChange:se,onConfirm:$,count:X.size})]})}function Gw({expression:n,open:r,onOpenChange:c,chatNameMap:d}){if(!n)return null;const h=f=>f?new Date(f*1e3).toLocaleString("zh-CN"):"-",x=f=>d.get(f)||f;return e.jsx(Qt,{open:r,onOpenChange:c,children:e.jsxs(Ut,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:"表达方式详情"}),e.jsx(ss,{children:"查看表达方式的完整信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(sr,{label:"情境",value:n.situation}),e.jsx(sr,{label:"风格",value:n.style}),e.jsx(sr,{label:"聊天",value:x(n.chat_id)}),e.jsx(sr,{icon:Eu,label:"记录ID",value:n.id.toString(),mono:!0})]}),e.jsx("div",{className:"grid grid-cols-2 gap-4",children:e.jsx(sr,{icon:Jn,label:"创建时间",value:h(n.create_date)})})]}),e.jsx(os,{children:e.jsx(b,{onClick:()=>c(!1),children:"关闭"})})]})})}function sr({icon:n,label:r,value:c,mono:d=!1}){return e.jsxs("div",{className:"space-y-1",children:[e.jsxs(N,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[n&&e.jsx(n,{className:"h-3 w-3"}),r]}),e.jsx("div",{className:K("text-sm",d&&"font-mono",!c&&"text-muted-foreground"),children:c||"-"})]})}function Vw({open:n,onOpenChange:r,chatList:c,onSuccess:d}){const[h,x]=u.useState({situation:"",style:"",chat_id:""}),[f,j]=u.useState(!1),{toast:p}=Rt(),w=async()=>{if(!h.situation||!h.style||!h.chat_id){p({title:"验证失败",description:"请填写必填字段:情境、风格和聊天",variant:"destructive"});return}try{j(!0),await Rw(h),p({title:"创建成功",description:"表达方式已创建"}),x({situation:"",style:"",chat_id:""}),d()}catch(v){p({title:"创建失败",description:v instanceof Error?v.message:"无法创建表达方式",variant:"destructive"})}finally{j(!1)}};return e.jsx(Qt,{open:n,onOpenChange:r,children:e.jsxs(Ut,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:"新增表达方式"}),e.jsx(ss,{children:"创建新的表达方式记录"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(N,{htmlFor:"situation",children:["情境 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"situation",value:h.situation,onChange:v=>x({...h,situation:v.target.value}),placeholder:"描述使用场景"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(N,{htmlFor:"style",children:["风格 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"style",value:h.style,onChange:v=>x({...h,style:v.target.value}),placeholder:"描述表达风格"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(N,{htmlFor:"chat_id",children:["聊天 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsxs(Be,{value:h.chat_id,onValueChange:v=>x({...h,chat_id:v}),children:[e.jsx(Re,{children:e.jsx(He,{placeholder:"选择关联的聊天"})}),e.jsx(Le,{children:c.map(v=>e.jsx(ne,{value:v.chat_id,children:e.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[v.chat_name,v.is_group&&e.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},v.chat_id))})]})]})]}),e.jsxs(os,{children:[e.jsx(b,{variant:"outline",onClick:()=>r(!1),children:"取消"}),e.jsx(b,{onClick:w,disabled:f,children:f?"创建中...":"创建"})]})]})})}function Fw({expression:n,open:r,onOpenChange:c,chatList:d,onSuccess:h}){const[x,f]=u.useState({}),[j,p]=u.useState(!1),{toast:w}=Rt();u.useEffect(()=>{n&&f({situation:n.situation,style:n.style,chat_id:n.chat_id})},[n]);const v=async()=>{if(n)try{p(!0),await Lw(n.id,x),w({title:"保存成功",description:"表达方式已更新"}),h()}catch(k){w({title:"保存失败",description:k instanceof Error?k.message:"无法更新表达方式",variant:"destructive"})}finally{p(!1)}};return n?e.jsx(Qt,{open:r,onOpenChange:c,children:e.jsxs(Ut,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:"编辑表达方式"}),e.jsx(ss,{children:"修改表达方式的信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"edit_situation",children:"情境"}),e.jsx(ce,{id:"edit_situation",value:x.situation||"",onChange:k=>f({...x,situation:k.target.value}),placeholder:"描述使用场景"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"edit_style",children:"风格"}),e.jsx(ce,{id:"edit_style",value:x.style||"",onChange:k=>f({...x,style:k.target.value}),placeholder:"描述表达风格"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"edit_chat_id",children:"聊天"}),e.jsxs(Be,{value:x.chat_id||"",onValueChange:k=>f({...x,chat_id:k}),children:[e.jsx(Re,{children:e.jsx(He,{placeholder:"选择关联的聊天"})}),e.jsx(Le,{children:d.map(k=>e.jsx(ne,{value:k.chat_id,children:e.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[k.chat_name,k.is_group&&e.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},k.chat_id))})]})]})]}),e.jsxs(os,{children:[e.jsx(b,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(b,{onClick:v,disabled:j,children:j?"保存中...":"保存"})]})]})}):null}function $w({open:n,onOpenChange:r,onConfirm:c,count:d}){return e.jsx(ft,{open:n,onOpenChange:r,children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认批量删除"}),e.jsxs(dt,{children:["您即将删除 ",d," 个表达方式,此操作无法撤销。确定要继续吗?"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:c,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认删除"})]})]})})}const ii="/api/webui/person";async function Qw(n){const r=new URLSearchParams;n.page&&r.append("page",n.page.toString()),n.page_size&&r.append("page_size",n.page_size.toString()),n.search&&r.append("search",n.search),n.is_known!==void 0&&r.append("is_known",n.is_known.toString()),n.platform&&r.append("platform",n.platform);const c=await ke(`${ii}/list?${r}`,{headers:Tt()});if(!c.ok){const d=await c.json();throw new Error(d.detail||"获取人物列表失败")}return c.json()}async function Yw(n){const r=await ke(`${ii}/${n}`,{headers:Tt()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"获取人物详情失败")}return r.json()}async function Xw(n,r){const c=await ke(`${ii}/${n}`,{method:"PATCH",headers:Tt(),body:JSON.stringify(r)});if(!c.ok){const d=await c.json();throw new Error(d.detail||"更新人物信息失败")}return c.json()}async function Kw(n){const r=await ke(`${ii}/${n}`,{method:"DELETE",headers:Tt()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"删除人物信息失败")}return r.json()}async function Zw(){const n=await ke(`${ii}/stats/summary`,{headers:Tt()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取统计数据失败")}return n.json()}async function Jw(n){const r=await ke(`${ii}/batch/delete`,{method:"POST",headers:Tt(),body:JSON.stringify({person_ids:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"批量删除失败")}return r.json()}function Iw(){const[n,r]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(0),[f,j]=u.useState(1),[p,w]=u.useState(20),[v,k]=u.useState(""),[T,E]=u.useState(void 0),[R,F]=u.useState(void 0),[U,M]=u.useState(null),[Z,G]=u.useState(!1),[z,B]=u.useState(!1),[X,S]=u.useState(null),[O,se]=u.useState({total:0,known:0,unknown:0,platforms:{}}),[he,ye]=u.useState(new Set),[be,pe]=u.useState(!1),[je,_e]=u.useState(""),{toast:y}=Rt(),q=async()=>{try{d(!0);const D=await Qw({page:f,page_size:p,search:v||void 0,is_known:T,platform:R});r(D.data),x(D.total)}catch(D){y({title:"加载失败",description:D instanceof Error?D.message:"无法加载人物信息",variant:"destructive"})}finally{d(!1)}},H=async()=>{try{const D=await Zw();D?.data&&se(D.data)}catch(D){console.error("加载统计数据失败:",D)}};u.useEffect(()=>{q(),H()},[f,p,v,T,R]);const ie=async D=>{try{const ee=await Yw(D.person_id);M(ee.data),G(!0)}catch(ee){y({title:"加载详情失败",description:ee instanceof Error?ee.message:"无法加载人物详情",variant:"destructive"})}},_=D=>{M(D),B(!0)},me=async D=>{try{await Kw(D.person_id),y({title:"删除成功",description:`已删除人物信息: ${D.person_name||D.nickname||D.user_id}`}),S(null),q(),H()}catch(ee){y({title:"删除失败",description:ee instanceof Error?ee.message:"无法删除人物信息",variant:"destructive"})}},xe=u.useMemo(()=>Object.keys(O.platforms),[O.platforms]),Q=D=>{const ee=new Set(he);ee.has(D)?ee.delete(D):ee.add(D),ye(ee)},de=()=>{he.size===n.length&&n.length>0?ye(new Set):ye(new Set(n.map(D=>D.person_id)))},ge=()=>{if(he.size===0){y({title:"未选择任何人物",description:"请先选择要删除的人物",variant:"destructive"});return}pe(!0)},le=async()=>{try{const D=await Jw(Array.from(he));y({title:"批量删除完成",description:D.message}),ye(new Set),pe(!1),q(),H()}catch(D){y({title:"批量删除失败",description:D instanceof Error?D.message:"批量删除失败",variant:"destructive"})}},L=()=>{const D=parseInt(je),ee=Math.ceil(h/p);D>=1&&D<=ee?(j(D),_e("")):y({title:"无效的页码",description:`请输入1-${ee}之间的页码`,variant:"destructive"})},$=D=>D?new Date(D*1e3).toLocaleString("zh-CN"):"-";return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsx("div",{className:"mb-4 sm:mb-6",children:e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[e.jsx(vy,{className:"h-8 w-8",strokeWidth:2}),"人物信息管理"]}),e.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦认识的所有人物信息"})]})})}),e.jsx(Ie,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"总人数"}),e.jsx("div",{className:"text-2xl font-bold mt-1",children:O.total})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"已认识"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:O.known})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"未认识"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-muted-foreground",children:O.unknown})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-4 gap-4",children:[e.jsxs("div",{className:"sm:col-span-2",children:[e.jsx(N,{htmlFor:"search",children:"搜索"}),e.jsxs("div",{className:"relative mt-1.5",children:[e.jsx(Os,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{id:"search",placeholder:"搜索名称、昵称或用户ID...",value:v,onChange:D=>k(D.target.value),className:"pl-9"})]})]}),e.jsxs("div",{children:[e.jsx(N,{htmlFor:"filter-known",children:"认识状态"}),e.jsxs(Be,{value:T===void 0?"all":T.toString(),onValueChange:D=>{E(D==="all"?void 0:D==="true"),j(1)},children:[e.jsx(Re,{id:"filter-known",className:"mt-1.5",children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部"}),e.jsx(ne,{value:"true",children:"已认识"}),e.jsx(ne,{value:"false",children:"未认识"})]})]})]}),e.jsxs("div",{children:[e.jsx(N,{htmlFor:"filter-platform",children:"平台"}),e.jsxs(Be,{value:R||"all",onValueChange:D=>{F(D==="all"?void 0:D),j(1)},children:[e.jsx(Re,{id:"filter-platform",className:"mt-1.5",children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部平台"}),xe.map(D=>e.jsxs(ne,{value:D,children:[D," (",O.platforms[D],")"]},D))]})]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[e.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:he.size>0&&e.jsxs("span",{children:["已选择 ",he.size," 个人物"]})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(Be,{value:p.toString(),onValueChange:D=>{w(parseInt(D)),j(1),ye(new Set)},children:[e.jsx(Re,{id:"page-size",className:"w-20",children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"10",children:"10"}),e.jsx(ne,{value:"20",children:"20"}),e.jsx(ne,{value:"50",children:"50"}),e.jsx(ne,{value:"100",children:"100"})]})]}),he.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>ye(new Set),children:"取消选择"}),e.jsxs(b,{variant:"destructive",size:"sm",onClick:ge,children:[e.jsx(Pe,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card",children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(ai,{children:[e.jsx(li,{children:e.jsxs(gs,{children:[e.jsx(at,{className:"w-12",children:e.jsx(bs,{checked:n.length>0&&he.size===n.length,onCheckedChange:de,"aria-label":"全选"})}),e.jsx(at,{children:"状态"}),e.jsx(at,{children:"名称"}),e.jsx(at,{children:"昵称"}),e.jsx(at,{children:"平台"}),e.jsx(at,{children:"用户ID"}),e.jsx(at,{children:"最后更新"}),e.jsx(at,{className:"text-right",children:"操作"})]})}),e.jsx(ni,{children:c?e.jsx(gs,{children:e.jsx($e,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):n.length===0?e.jsx(gs,{children:e.jsx($e,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):n.map(D=>e.jsxs(gs,{children:[e.jsx($e,{children:e.jsx(bs,{checked:he.has(D.person_id),onCheckedChange:()=>Q(D.person_id),"aria-label":`选择 ${D.person_name||D.nickname||D.user_id}`})}),e.jsx($e,{children:e.jsx("div",{className:K("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium",D.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:D.is_known?"已认识":"未认识"})}),e.jsx($e,{className:"font-medium",children:D.person_name||e.jsx("span",{className:"text-muted-foreground",children:"-"})}),e.jsx($e,{children:D.nickname||"-"}),e.jsx($e,{children:D.platform}),e.jsx($e,{className:"font-mono text-sm",children:D.user_id}),e.jsx($e,{className:"text-sm text-muted-foreground",children:$(D.last_know)}),e.jsx($e,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(b,{variant:"default",size:"sm",onClick:()=>ie(D),children:[e.jsx(Ys,{className:"h-4 w-4 mr-1"}),"详情"]}),e.jsxs(b,{variant:"default",size:"sm",onClick:()=>_(D),children:[e.jsx(dr,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsxs(b,{size:"sm",onClick:()=>S(D),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(Pe,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},D.id))})]})}),e.jsx("div",{className:"md:hidden space-y-3 p-4",children:c?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):n.length===0?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):n.map(D=>e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(bs,{checked:he.has(D.person_id),onCheckedChange:()=>Q(D.person_id),className:"mt-1"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:K("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium mb-2",D.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:D.is_known?"已认识":"未认识"}),e.jsx("h3",{className:"font-semibold text-sm line-clamp-1 w-full break-all",children:D.person_name||e.jsx("span",{className:"text-muted-foreground",children:"未命名"})}),D.nickname&&e.jsxs("p",{className:"text-xs text-muted-foreground mt-1 line-clamp-1 w-full break-all",children:["昵称: ",D.nickname]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"平台"}),e.jsx("p",{className:"font-medium text-xs",children:D.platform})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"用户ID"}),e.jsx("p",{className:"font-mono text-xs truncate",title:D.user_id,children:D.user_id})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"最后更新"}),e.jsx("p",{className:"text-xs",children:$(D.last_know)})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>ie(D),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(Ys,{className:"h-3 w-3 mr-1"}),"查看"]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>_(D),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(dr,{className:"h-3 w-3 mr-1"}),"编辑"]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>S(D),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[e.jsx(Pe,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},D.id))}),h>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",h," 条记录,第 ",f," / ",Math.ceil(h/p)," 页"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(gr,{className:"h-4 w-4"})}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>j(f-1),disabled:f===1,children:[e.jsx(nn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:je,onChange:D=>_e(D.target.value),onKeyDown:D=>D.key==="Enter"&&L(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(h/p)}),e.jsx(b,{variant:"outline",size:"sm",onClick:L,disabled:!je,className:"h-8",children:"跳转"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>j(f+1),disabled:f>=Math.ceil(h/p),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(Ol,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(h/p)),disabled:f>=Math.ceil(h/p),className:"hidden sm:flex",children:e.jsx(jr,{className:"h-4 w-4"})})]})]})]})]})}),e.jsx(Pw,{person:U,open:Z,onOpenChange:G}),e.jsx(Ww,{person:U,open:z,onOpenChange:B,onSuccess:()=>{q(),H(),B(!1)}}),e.jsx(ft,{open:!!X,onOpenChange:()=>S(null),children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认删除"}),e.jsxs(dt,{children:['确定要删除人物信息 "',X?.person_name||X?.nickname||X?.user_id,'" 吗? 此操作不可撤销。']})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:()=>X&&me(X),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),e.jsx(ft,{open:be,onOpenChange:pe,children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"确认批量删除"}),e.jsxs(dt,{children:["确定要删除选中的 ",he.size," 个人物信息吗? 此操作不可撤销。"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{children:"取消"}),e.jsx(ut,{onClick:le,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})})]})}function Pw({person:n,open:r,onOpenChange:c}){if(!n)return null;const d=h=>h?new Date(h*1e3).toLocaleString("zh-CN"):"-";return e.jsx(Qt,{open:r,onOpenChange:c,children:e.jsxs(Ut,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:"人物详情"}),e.jsxs(ss,{children:["查看 ",n.person_name||n.nickname||n.user_id," 的完整信息"]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(el,{icon:Ic,label:"人物名称",value:n.person_name}),e.jsx(el,{icon:Pn,label:"昵称",value:n.nickname}),e.jsx(el,{icon:Eu,label:"用户ID",value:n.user_id,mono:!0}),e.jsx(el,{icon:Eu,label:"人物ID",value:n.person_id,mono:!0}),e.jsx(el,{label:"平台",value:n.platform}),e.jsx(el,{label:"状态",value:n.is_known?"已认识":"未认识"})]}),n.name_reason&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(N,{className:"text-xs text-muted-foreground",children:"名称设定原因"}),e.jsx("p",{className:"mt-1 text-sm",children:n.name_reason})]}),n.memory_points&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(N,{className:"text-xs text-muted-foreground",children:"个人印象"}),e.jsx("p",{className:"mt-1 text-sm whitespace-pre-wrap",children:n.memory_points})]}),n.group_nick_name&&n.group_nick_name.length>0&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(N,{className:"text-xs text-muted-foreground",children:"群昵称"}),e.jsx("div",{className:"mt-2 space-y-1",children:n.group_nick_name.map((h,x)=>e.jsxs("div",{className:"text-sm flex items-center gap-2",children:[e.jsx("span",{className:"font-mono text-xs text-muted-foreground",children:h.group_id}),e.jsx("span",{children:"→"}),e.jsx("span",{children:h.group_nick_name})]},x))})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsx(el,{icon:Jn,label:"认识时间",value:d(n.know_times)}),e.jsx(el,{icon:Jn,label:"首次记录",value:d(n.know_since)}),e.jsx(el,{icon:Jn,label:"最后更新",value:d(n.last_know)})]})]}),e.jsx(os,{children:e.jsx(b,{onClick:()=>c(!1),children:"关闭"})})]})})}function el({icon:n,label:r,value:c,mono:d=!1}){return e.jsxs("div",{className:"space-y-1",children:[e.jsxs(N,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[n&&e.jsx(n,{className:"h-3 w-3"}),r]}),e.jsx("div",{className:K("text-sm",d&&"font-mono",!c&&"text-muted-foreground"),children:c||"-"})]})}function Ww({person:n,open:r,onOpenChange:c,onSuccess:d}){const[h,x]=u.useState({}),[f,j]=u.useState(!1),{toast:p}=Rt();u.useEffect(()=>{n&&x({person_name:n.person_name||"",name_reason:n.name_reason||"",nickname:n.nickname||"",memory_points:n.memory_points||"",is_known:n.is_known})},[n]);const w=async()=>{if(n)try{j(!0),await Xw(n.person_id,h),p({title:"保存成功",description:"人物信息已更新"}),d()}catch(v){p({title:"保存失败",description:v instanceof Error?v.message:"无法更新人物信息",variant:"destructive"})}finally{j(!1)}};return n?e.jsx(Qt,{open:r,onOpenChange:c,children:e.jsxs(Ut,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:"编辑人物信息"}),e.jsxs(ss,{children:["修改 ",n.person_name||n.nickname||n.user_id," 的信息"]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"person_name",children:"人物名称"}),e.jsx(ce,{id:"person_name",value:h.person_name||"",onChange:v=>x({...h,person_name:v.target.value}),placeholder:"为这个人设置一个名称"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"nickname",children:"昵称"}),e.jsx(ce,{id:"nickname",value:h.nickname||"",onChange:v=>x({...h,nickname:v.target.value}),placeholder:"昵称"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"name_reason",children:"名称设定原因"}),e.jsx(Ot,{id:"name_reason",value:h.name_reason||"",onChange:v=>x({...h,name_reason:v.target.value}),placeholder:"为什么这样称呼这个人?",rows:2})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"memory_points",children:"个人印象"}),e.jsx(Ot,{id:"memory_points",value:h.memory_points||"",onChange:v=>x({...h,memory_points:v.target.value}),placeholder:"对这个人的印象和记忆点...",rows:4})]}),e.jsxs("div",{className:"flex items-center justify-between rounded-lg border p-3",children:[e.jsxs("div",{children:[e.jsx(N,{htmlFor:"is_known",className:"text-base font-medium",children:"已认识"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"标记是否已经认识这个人"})]}),e.jsx(Ge,{id:"is_known",checked:h.is_known,onCheckedChange:v=>x({...h,is_known:v})})]})]}),e.jsxs(os,{children:[e.jsx(b,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(b,{onClick:w,disabled:f,children:f?"保存中...":"保存"})]})]})}):null}var e1=lN();const cp=nb(e1),Yu="/api/webui";async function t1(n=100,r="all"){const c=`${Yu}/knowledge/graph?limit=${n}&node_type=${r}`,d=await fetch(c);if(!d.ok)throw new Error(`获取知识图谱失败: ${d.status}`);return d.json()}async function s1(){const n=await fetch(`${Yu}/knowledge/stats`);if(!n.ok)throw new Error("获取知识图谱统计信息失败");return n.json()}async function a1(n){const r=await fetch(`${Yu}/knowledge/search?query=${encodeURIComponent(n)}`);if(!r.ok)throw new Error("搜索知识节点失败");return r.json()}const Tg=u.memo(({data:n})=>e.jsxs("div",{className:"px-4 py-2 shadow-md rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700 min-w-[120px]",children:[e.jsx(Pc,{type:"target",position:Wc.Top}),e.jsx("div",{className:"font-semibold text-white text-sm truncate max-w-[200px]",title:n.content,children:n.label}),e.jsx(Pc,{type:"source",position:Wc.Bottom})]}));Tg.displayName="EntityNode";const Eg=u.memo(({data:n})=>e.jsxs("div",{className:"px-3 py-2 shadow-md rounded-md bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700 min-w-[100px]",children:[e.jsx(Pc,{type:"target",position:Wc.Top}),e.jsx("div",{className:"font-medium text-white text-xs truncate max-w-[150px]",title:n.content,children:n.label}),e.jsx(Pc,{type:"source",position:Wc.Bottom})]}));Eg.displayName="ParagraphNode";const l1={entity:Tg,paragraph:Eg};function n1(n,r){const c=new cp.graphlib.Graph;c.setDefaultEdgeLabel(()=>({})),c.setGraph({rankdir:"TB",ranksep:100,nodesep:80});const d=[],h=[];return n.forEach(x=>{c.setNode(x.id,{width:150,height:50})}),r.forEach(x=>{c.setEdge(x.source,x.target)}),cp.layout(c),n.forEach(x=>{const f=c.node(x.id);d.push({id:x.id,type:x.type,position:{x:f.x-75,y:f.y-25},data:{label:x.content.slice(0,20)+(x.content.length>20?"...":""),content:x.content}})}),r.forEach((x,f)=>{const j={id:`edge-${f}`,source:x.source,target:x.target,animated:n.length<=200&&x.weight>5,style:{strokeWidth:Math.min(x.weight/2,5),opacity:.6}};x.weight>10&&n.length<100&&(j.label=`${x.weight.toFixed(0)}`),h.push(j)}),{nodes:d,edges:h}}function i1(){const n=ua(),[r,c]=u.useState(!1),[d,h]=u.useState(null),[x,f]=u.useState(""),[j,p]=u.useState("all"),[w,v]=u.useState(50),[k,T]=u.useState("50"),[E,R]=u.useState(!1),[F,U]=u.useState(!0),[M,Z]=u.useState(!1),[G,z]=u.useState(!1),[B,X,S]=nN([]),[O,se,he]=iN([]),[ye,be]=u.useState(0),[pe,je]=u.useState(null),[_e,y]=u.useState(null),{toast:q}=Rt(),H=u.useCallback(le=>le.type==="entity"?"#6366f1":le.type==="paragraph"?"#10b981":"#6b7280",[]),ie=u.useCallback(async(le=!1)=>{try{if(!le&&w>200){z(!0);return}c(!0);const[L,$]=await Promise.all([t1(w,j),s1()]);if(h($),L.nodes.length===0){q({title:"提示",description:"知识库为空,请先导入知识数据"}),X([]),se([]);return}const{nodes:D,edges:ee}=n1(L.nodes,L.edges);X(D),se(ee),be(D.length),$&&$.total_nodes>w&&q({title:"提示",description:`知识图谱包含 ${$.total_nodes} 个节点,当前显示 ${D.length} 个`}),q({title:"加载成功",description:`已加载 ${D.length} 个节点,${ee.length} 条边`})}catch(L){console.error("加载知识图谱失败:",L),q({title:"加载失败",description:L instanceof Error?L.message:"未知错误",variant:"destructive"})}finally{c(!1)}},[w,j,q]),_=u.useCallback(async()=>{if(!x.trim()){q({title:"提示",description:"请输入搜索关键词"});return}try{const le=await a1(x);if(le.length===0){q({title:"未找到",description:"没有找到匹配的节点"});return}const L=new Set(le.map($=>$.id));X($=>$.map(D=>({...D,style:{...D.style,opacity:L.has(D.id)?1:.3,filter:L.has(D.id)?"brightness(1.2)":"brightness(0.8)"}}))),q({title:"搜索完成",description:`找到 ${le.length} 个匹配节点`})}catch(le){console.error("搜索失败:",le),q({title:"搜索失败",description:le instanceof Error?le.message:"未知错误",variant:"destructive"})}},[x,q]),me=u.useCallback(()=>{X(le=>le.map(L=>({...L,style:{...L.style,opacity:1,filter:"brightness(1)"}})))},[]),xe=u.useCallback(()=>{U(!1),Z(!0),ie()},[ie]),Q=u.useCallback(()=>{z(!1),setTimeout(()=>{ie(!0)},0)},[ie]),de=u.useCallback((le,L)=>{B.find(D=>D.id===L.id)&&je({id:L.id,type:L.type,content:L.data.content})},[B]);u.useEffect(()=>{F||M&&ie()},[w,j,F,M]);const ge=u.useCallback((le,L)=>{const $=B.find(Ne=>Ne.id===L.source),D=B.find(Ne=>Ne.id===L.target),ee=O.find(Ne=>Ne.id===L.id);$&&D&&ee&&y({source:{id:$.id,type:$.type,content:$.data.content},target:{id:D.id,type:D.type,content:D.data.content},edge:{source:L.source,target:L.target,weight:parseFloat(L.label||"0")}})},[B,O]);return e.jsxs("div",{className:"h-full flex flex-col",children:[e.jsxs("div",{className:"flex-shrink-0 p-4 border-b bg-background",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦知识库图谱"}),e.jsx("p",{className:"text-muted-foreground mt-1",children:"可视化知识实体与关系网络"})]}),d&&e.jsxs("div",{className:"flex gap-2 flex-wrap",children:[e.jsxs(Qe,{variant:"outline",className:"gap-1",children:[e.jsx(Zc,{className:"h-3 w-3"}),"节点: ",d.total_nodes]}),e.jsxs(Qe,{variant:"outline",className:"gap-1",children:[e.jsx(lg,{className:"h-3 w-3"}),"边: ",d.total_edges]}),e.jsxs(Qe,{variant:"outline",className:"gap-1",children:[e.jsx(za,{className:"h-3 w-3"}),"实体: ",d.entity_nodes]}),e.jsxs(Qe,{variant:"outline",className:"gap-1",children:[e.jsx(Ta,{className:"h-3 w-3"}),"段落: ",d.paragraph_nodes]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 mt-4",children:[e.jsxs("div",{className:"flex-1 flex gap-2",children:[e.jsx(ce,{placeholder:"搜索节点内容...",value:x,onChange:le=>f(le.target.value),onKeyDown:le=>le.key==="Enter"&&_(),className:"flex-1"}),e.jsx(b,{onClick:_,size:"sm",children:e.jsx(Os,{className:"h-4 w-4"})}),e.jsx(b,{onClick:me,variant:"outline",size:"sm",children:"重置"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(Be,{value:j,onValueChange:le=>p(le),children:[e.jsx(Re,{className:"w-[120px]",children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部节点"}),e.jsx(ne,{value:"entity",children:"仅实体"}),e.jsx(ne,{value:"paragraph",children:"仅段落"})]})]}),e.jsxs(Be,{value:w===1e4?"all":E?"custom":w.toString(),onValueChange:le=>{le==="custom"?(R(!0),T(w.toString())):le==="all"?(R(!1),v(1e4)):(R(!1),v(Number(le)))},children:[e.jsx(Re,{className:"w-[120px]",children:e.jsx(He,{})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"50",children:"50 节点"}),e.jsx(ne,{value:"100",children:"100 节点"}),e.jsx(ne,{value:"200",children:"200 节点"}),e.jsx(ne,{value:"500",children:"500 节点"}),e.jsx(ne,{value:"1000",children:"1000 节点"}),e.jsx(ne,{value:"all",children:"全部 (最多10000)"}),e.jsx(ne,{value:"custom",children:"自定义..."})]})]}),E&&e.jsx(ce,{type:"number",min:"50",value:k,onChange:le=>T(le.target.value),onBlur:()=>{const le=parseInt(k);!isNaN(le)&&le>=50?v(le):(T("50"),v(50))},onKeyDown:le=>{if(le.key==="Enter"){const L=parseInt(k);!isNaN(L)&&L>=50?v(L):(T("50"),v(50))}},placeholder:"最少50个",className:"w-[120px]"}),e.jsx(b,{onClick:()=>ie(),variant:"outline",size:"sm",disabled:r,children:e.jsx(ps,{className:K("h-4 w-4",r&&"animate-spin")})})]})]})]}),e.jsx("div",{className:"flex-1 relative",children:r?e.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx(ps,{className:"h-8 w-8 animate-spin mx-auto mb-2 text-muted-foreground"}),e.jsx("p",{className:"text-muted-foreground",children:"加载知识图谱中..."})]})}):B.length===0?e.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx(Zc,{className:"h-12 w-12 mx-auto mb-4 text-muted-foreground"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"知识库为空"}),e.jsx("p",{className:"text-muted-foreground",children:"请先导入知识数据"})]})}):e.jsxs(rN,{nodes:B,edges:O,onNodesChange:S,onEdgesChange:he,onNodeClick:de,onEdgeClick:ge,nodeTypes:l1,fitView:!0,minZoom:.05,maxZoom:1.5,defaultViewport:{x:0,y:0,zoom:.5},elevateNodesOnSelect:ye<=500,nodesDraggable:ye<=1e3,attributionPosition:"bottom-left",children:[e.jsx(cN,{variant:oN.Dots,gap:12,size:1}),e.jsx(dN,{}),ye<=500&&e.jsx(uN,{nodeColor:H,nodeBorderRadius:8,pannable:!0,zoomable:!0}),e.jsxs(mN,{position:"top-right",className:"bg-background/95 backdrop-blur-sm rounded-lg border p-3 shadow-lg",children:[e.jsx("div",{className:"text-sm font-semibold mb-2",children:"图例"}),e.jsxs("div",{className:"space-y-2 text-xs",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700"}),e.jsx("span",{children:"实体节点"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700"}),e.jsx("span",{children:"段落节点"})]}),ye>200&&e.jsxs("div",{className:"mt-2 pt-2 border-t text-yellow-600 dark:text-yellow-500",children:[e.jsx("div",{className:"font-semibold",children:"性能模式"}),e.jsx("div",{children:"已禁用动画"}),ye>500&&e.jsx("div",{children:"已禁用缩略图"})]})]})]})]})}),e.jsx(Qt,{open:!!pe,onOpenChange:le=>!le&&je(null),children:e.jsxs(Ut,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsx(Bt,{children:e.jsx(Ht,{children:"节点详情"})}),pe&&e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"grid grid-cols-2 gap-4",children:e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"类型"}),e.jsx("div",{className:"mt-1",children:e.jsx(Qe,{variant:pe.type==="entity"?"default":"secondary",children:pe.type==="entity"?"🏷️ 实体":"📄 段落"})})]})}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"ID"}),e.jsx("code",{className:"mt-1 block p-2 bg-muted rounded text-xs break-all",children:pe.id})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"内容"}),e.jsx(Ie,{className:"mt-1 h-40 p-3 bg-muted rounded",children:e.jsx("p",{className:"text-sm whitespace-pre-wrap",children:pe.content})})]})]})]})}),e.jsx(Qt,{open:!!_e,onOpenChange:le=>!le&&y(null),children:e.jsxs(Ut,{className:"max-w-2xl max-h-[80vh] overflow-hidden flex flex-col",children:[e.jsx(Bt,{children:e.jsx(Ht,{children:"边详情"})}),_e&&e.jsx(Ie,{className:"flex-1 pr-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-blue-50 dark:bg-blue-950 rounded border-2 border-blue-200 dark:border-blue-800",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"源节点"}),e.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:_e.source.content}),e.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[_e.source.id.slice(0,40),"..."]})]}),e.jsx("div",{className:"text-2xl text-muted-foreground flex-shrink-0",children:"→"}),e.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-green-50 dark:bg-green-950 rounded border-2 border-green-200 dark:border-green-800",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"目标节点"}),e.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:_e.target.content}),e.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[_e.target.id.slice(0,40),"..."]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"权重"}),e.jsx("div",{className:"mt-1",children:e.jsx(Qe,{variant:"outline",className:"text-base font-mono",children:_e.edge.weight.toFixed(4)})})]})]})})]})}),e.jsx(ft,{open:F,onOpenChange:U,children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"加载知识图谱"}),e.jsxs(dt,{children:["知识图谱的动态展示会消耗较多系统资源。",e.jsx("br",{}),"确定要加载知识图谱吗?"]})]}),e.jsxs(ct,{children:[e.jsx(mt,{onClick:()=>n({to:"/"}),children:"取消 (返回首页)"}),e.jsx(ut,{onClick:xe,children:"确认加载"})]})]})}),e.jsx(ft,{open:G,onOpenChange:z,children:e.jsxs(it,{children:[e.jsxs(rt,{children:[e.jsx(ot,{children:"⚠️ 节点数量较多"}),e.jsx(dt,{asChild:!0,children:e.jsxs("div",{children:[e.jsxs("p",{children:["您正在尝试加载 ",e.jsx("strong",{className:"text-orange-600",children:w>=1e4?"全部 (最多10000个)":w})," 个节点。"]}),e.jsx("p",{className:"mt-4",children:"节点数量过多可能导致:"}),e.jsxs("ul",{className:"list-disc list-inside mt-2 space-y-1",children:[e.jsx("li",{children:"页面加载时间较长"}),e.jsx("li",{children:"浏览器卡顿或崩溃"}),e.jsx("li",{children:"系统资源占用过高"})]}),e.jsx("p",{className:"mt-4",children:"建议先选择较少的节点数量 (50-200 个)。"})]})})]}),e.jsxs(ct,{children:[e.jsx(mt,{onClick:()=>{z(!1),w>200&&(v(50),R(!1))},children:"取消"}),e.jsx(ut,{onClick:Q,className:"bg-orange-600 hover:bg-orange-700",children:"我了解风险,继续加载"})]})]})})]})}function op({className:n,classNames:r,showOutsideDays:c=!0,captionLayout:d="label",buttonVariant:h="ghost",formatters:x,components:f,...j}){const p=cg();return e.jsx(qy,{showOutsideDays:c,className:K("bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,n),captionLayout:d,formatters:{formatMonthDropdown:w=>w.toLocaleString("default",{month:"short"}),...x},classNames:{root:K("w-fit",p.root),months:K("relative flex flex-col gap-4 md:flex-row",p.months),month:K("flex w-full flex-col gap-4",p.month),nav:K("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",p.nav),button_previous:K(ur({variant:h}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",p.button_previous),button_next:K(ur({variant:h}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",p.button_next),month_caption:K("flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]",p.month_caption),dropdowns:K("flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium",p.dropdowns),dropdown_root:K("has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border",p.dropdown_root),dropdown:K("bg-popover absolute inset-0 opacity-0",p.dropdown),caption_label:K("select-none font-medium",d==="label"?"text-sm":"[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5",p.caption_label),table:"w-full border-collapse",weekdays:K("flex",p.weekdays),weekday:K("text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal",p.weekday),week:K("mt-2 flex w-full",p.week),week_number_header:K("w-[--cell-size] select-none",p.week_number_header),week_number:K("text-muted-foreground select-none text-[0.8rem]",p.week_number),day:K("group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md",p.day),range_start:K("bg-accent rounded-l-md",p.range_start),range_middle:K("rounded-none",p.range_middle),range_end:K("bg-accent rounded-r-md",p.range_end),today:K("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",p.today),outside:K("text-muted-foreground aria-selected:text-muted-foreground",p.outside),disabled:K("text-muted-foreground opacity-50",p.disabled),hidden:K("invisible",p.hidden),...r},components:{Root:({className:w,rootRef:v,...k})=>e.jsx("div",{"data-slot":"calendar",ref:v,className:K(w),...k}),Chevron:({className:w,orientation:v,...k})=>v==="left"?e.jsx(nn,{className:K("size-4",w),...k}):v==="right"?e.jsx(Ol,{className:K("size-4",w),...k}):e.jsx(Dl,{className:K("size-4",w),...k}),DayButton:r1,WeekNumber:({children:w,...v})=>e.jsx("td",{...v,children:e.jsx("div",{className:"flex size-[--cell-size] items-center justify-center text-center",children:w})}),...f},...j})}function r1({className:n,day:r,modifiers:c,...d}){const h=cg(),x=u.useRef(null);return u.useEffect(()=>{c.focused&&x.current?.focus()},[c.focused]),e.jsx(b,{ref:x,variant:"ghost",size:"icon","data-day":r.date.toLocaleDateString(),"data-selected-single":c.selected&&!c.range_start&&!c.range_end&&!c.range_middle,"data-range-start":c.range_start,"data-range-end":c.range_end,"data-range-middle":c.range_middle,className:K("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70",h.day,n),...d})}const c1={lessThanXSeconds:{one:"不到 1 秒",other:"不到 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分钟",lessThanXMinutes:{one:"不到 1 分钟",other:"不到 {{count}} 分钟"},xMinutes:{one:"1 分钟",other:"{{count}} 分钟"},xHours:{one:"1 小时",other:"{{count}} 小时"},aboutXHours:{one:"大约 1 小时",other:"大约 {{count}} 小时"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大约 1 个星期",other:"大约 {{count}} 个星期"},xWeeks:{one:"1 个星期",other:"{{count}} 个星期"},aboutXMonths:{one:"大约 1 个月",other:"大约 {{count}} 个月"},xMonths:{one:"1 个月",other:"{{count}} 个月"},aboutXYears:{one:"大约 1 年",other:"大约 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超过 1 年",other:"超过 {{count}} 年"},almostXYears:{one:"将近 1 年",other:"将近 {{count}} 年"}},o1=(n,r,c)=>{let d;const h=c1[n];return typeof h=="string"?d=h:r===1?d=h.one:d=h.other.replace("{{count}}",String(r)),c?.addSuffix?c.comparison&&c.comparison>0?d+"内":d+"前":d},d1={full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},u1={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},m1={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},h1={date:gu({formats:d1,defaultWidth:"full"}),time:gu({formats:u1,defaultWidth:"full"}),dateTime:gu({formats:m1,defaultWidth:"full"})};function dp(n,r,c){const d="eeee p";return cb(n,r,c)?d:n.getTime()>r.getTime()?"'下个'"+d:"'上个'"+d}const x1={lastWeek:dp,yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:dp,other:"PP p"},f1=(n,r,c,d)=>{const h=x1[n];return typeof h=="function"?h(r,c,d):h},p1={narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},g1={narrow:["1","2","3","4"],abbreviated:["第一季","第二季","第三季","第四季"],wide:["第一季度","第二季度","第三季度","第四季度"]},j1={narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},v1={narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["周日","周一","周二","周三","周四","周五","周六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},b1={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},y1={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},N1=(n,r)=>{const c=Number(n);switch(r?.unit){case"date":return c.toString()+"日";case"hour":return c.toString()+"时";case"minute":return c.toString()+"分";case"second":return c.toString()+"秒";default:return"第 "+c.toString()}},w1={ordinalNumber:N1,era:Ii({values:p1,defaultWidth:"wide"}),quarter:Ii({values:g1,defaultWidth:"wide",argumentCallback:n=>n-1}),month:Ii({values:j1,defaultWidth:"wide"}),day:Ii({values:v1,defaultWidth:"wide"}),dayPeriod:Ii({values:b1,defaultWidth:"wide",formattingValues:y1,defaultFormattingWidth:"wide"})},_1=/^(第\s*)?\d+(日|时|分|秒)?/i,S1=/\d+/i,C1={narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},k1={any:[/^(前)/i,/^(公元)/i]},T1={narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻钟/i},E1={any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},z1={narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},A1={narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},M1={narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^周[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},D1={any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},O1={any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i},R1={any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},L1={ordinalNumber:ob({matchPattern:_1,parsePattern:S1,valueCallback:n=>parseInt(n,10)}),era:Pi({matchPatterns:C1,defaultMatchWidth:"wide",parsePatterns:k1,defaultParseWidth:"any"}),quarter:Pi({matchPatterns:T1,defaultMatchWidth:"wide",parsePatterns:E1,defaultParseWidth:"any",valueCallback:n=>n+1}),month:Pi({matchPatterns:z1,defaultMatchWidth:"wide",parsePatterns:A1,defaultParseWidth:"any"}),day:Pi({matchPatterns:M1,defaultMatchWidth:"wide",parsePatterns:D1,defaultParseWidth:"any"}),dayPeriod:Pi({matchPatterns:O1,defaultMatchWidth:"any",parsePatterns:R1,defaultParseWidth:"any"})},Bc={code:"zh-CN",formatDistance:o1,formatLong:h1,formatRelative:f1,localize:w1,match:L1,options:{weekStartsOn:1,firstWeekContainsDate:4}},Hc={xs:{label:"小",rowHeight:28,class:"text-[10px] sm:text-xs"},sm:{label:"中",rowHeight:36,class:"text-xs sm:text-sm"},base:{label:"大",rowHeight:44,class:"text-sm sm:text-base"}};function U1(){const[n,r]=u.useState([]),[c,d]=u.useState(""),[h,x]=u.useState("all"),[f,j]=u.useState("all"),[p,w]=u.useState(void 0),[v,k]=u.useState(void 0),[T,E]=u.useState(!0),[R,F]=u.useState(!1),[U,M]=u.useState("xs"),[Z,G]=u.useState(4),z=u.useRef(null);u.useEffect(()=>{const y=tn.getAllLogs();r(y);const q=tn.onLog(()=>{r(tn.getAllLogs())}),H=tn.onConnectionChange(ie=>{F(ie)});return()=>{q(),H()}},[]);const B=u.useMemo(()=>{const y=new Set(n.map(q=>q.module).filter(q=>q&&q.trim()!==""));return Array.from(y).sort()},[n]),X=y=>{switch(y){case"DEBUG":return"text-muted-foreground";case"INFO":return"text-blue-500 dark:text-blue-400";case"WARNING":return"text-yellow-600 dark:text-yellow-500";case"ERROR":return"text-red-600 dark:text-red-500";case"CRITICAL":return"text-red-700 dark:text-red-400 font-bold";default:return"text-foreground"}},S=y=>{switch(y){case"DEBUG":return"bg-gray-800/30 dark:bg-gray-800/50";case"INFO":return"bg-blue-900/20 dark:bg-blue-500/20";case"WARNING":return"bg-yellow-900/20 dark:bg-yellow-500/20";case"ERROR":return"bg-red-900/20 dark:bg-red-500/20";case"CRITICAL":return"bg-red-900/30 dark:bg-red-600/30";default:return"bg-gray-800/20 dark:bg-gray-800/30"}},O=()=>{window.location.reload()},se=()=>{tn.clearLogs(),r([])},he=()=>{const y=pe.map(_=>`${_.timestamp} [${_.level.padEnd(8)}] [${_.module}] ${_.message}`).join(` -`),q=new Blob([y],{type:"text/plain;charset=utf-8"}),H=URL.createObjectURL(q),ie=document.createElement("a");ie.href=H,ie.download=`logs-${ju(new Date,"yyyy-MM-dd-HHmmss")}.txt`,ie.click(),URL.revokeObjectURL(H)},ye=()=>{E(!T)},be=()=>{w(void 0),k(void 0)},pe=u.useMemo(()=>n.filter(y=>{const q=c===""||y.message.toLowerCase().includes(c.toLowerCase())||y.module.toLowerCase().includes(c.toLowerCase()),H=h==="all"||y.level===h,ie=f==="all"||y.module===f;let _=!0;if(p||v){const me=new Date(y.timestamp);if(p){const xe=new Date(p);xe.setHours(0,0,0,0),_=_&&me>=xe}if(v){const xe=new Date(v);xe.setHours(23,59,59,999),_=_&&me<=xe}}return q&&H&&ie&&_}),[n,c,h,f,p,v]),je=Hc[U].rowHeight+Z,_e=Iv({count:pe.length,getScrollElement:()=>z.current,estimateSize:()=>je,overscan:15});return u.useEffect(()=>{T&&pe.length>0&&_e.scrollToIndex(pe.length-1,{align:"end",behavior:"auto"})},[pe.length,T,_e]),e.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[e.jsxs("div",{className:"flex-shrink-0 space-y-4 p-3 sm:p-4 lg:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-xl sm:text-2xl lg:text-3xl font-bold",children:"日志查看器"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:"实时查看和分析麦麦运行日志"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:K("h-2.5 w-2.5 sm:h-3 sm:w-3 rounded-full",R?"bg-green-500 animate-pulse":"bg-red-500")}),e.jsx("span",{className:"text-xs sm:text-sm text-muted-foreground",children:R?"已连接":"未连接"})]})]}),e.jsx(Ve,{className:"p-3 sm:p-4",children:e.jsxs("div",{className:"flex flex-col gap-3 sm:gap-4",children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:gap-4",children:[e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(Os,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索日志...",value:c,onChange:y=>d(y.target.value),className:"pl-9 h-9 text-sm"})]}),e.jsxs(Be,{value:h,onValueChange:x,children:[e.jsxs(Re,{className:"w-full sm:w-[140px] lg:w-[180px] h-9 text-sm",children:[e.jsx(Tu,{className:"h-4 w-4 mr-2"}),e.jsx(He,{placeholder:"级别"})]}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部级别"}),e.jsx(ne,{value:"DEBUG",children:"DEBUG"}),e.jsx(ne,{value:"INFO",children:"INFO"}),e.jsx(ne,{value:"WARNING",children:"WARNING"}),e.jsx(ne,{value:"ERROR",children:"ERROR"}),e.jsx(ne,{value:"CRITICAL",children:"CRITICAL"})]})]}),e.jsxs(Be,{value:f,onValueChange:j,children:[e.jsxs(Re,{className:"w-full sm:w-[160px] lg:w-[200px] h-9 text-sm",children:[e.jsx(Tu,{className:"h-4 w-4 mr-2"}),e.jsx(He,{placeholder:"模块"})]}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部模块"}),B.map(y=>e.jsx(ne,{value:y,children:y},y))]})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:gap-4",children:[e.jsxs(Ma,{children:[e.jsx(Da,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",className:K("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!p&&"text-muted-foreground"),children:[e.jsx(qf,{className:"mr-2 h-4 w-4"}),e.jsx("span",{className:"text-xs sm:text-sm",children:p?ju(p,"PPP",{locale:Bc}):"开始日期"})]})}),e.jsx(va,{className:"w-auto p-0",align:"start",children:e.jsx(op,{mode:"single",selected:p,onSelect:w,initialFocus:!0,locale:Bc})})]}),e.jsxs(Ma,{children:[e.jsx(Da,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",className:K("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!v&&"text-muted-foreground"),children:[e.jsx(qf,{className:"mr-2 h-4 w-4"}),e.jsx("span",{className:"text-xs sm:text-sm",children:v?ju(v,"PPP",{locale:Bc}):"结束日期"})]})}),e.jsx(va,{className:"w-auto p-0",align:"start",children:e.jsx(op,{mode:"single",selected:v,onSelect:k,initialFocus:!0,locale:Bc})})]}),(p||v)&&e.jsxs(b,{variant:"outline",size:"sm",onClick:be,className:"w-full sm:w-auto h-9",children:[e.jsx(si,{className:"h-4 w-4 sm:mr-2"}),e.jsx("span",{className:"hidden sm:inline text-sm",children:"清除时间筛选"}),e.jsx("span",{className:"sm:hidden text-sm",children:"清除"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center",children:[e.jsxs("div",{className:"flex gap-2 flex-wrap",children:[e.jsxs(b,{variant:T?"default":"outline",size:"sm",onClick:ye,className:"flex-1 sm:flex-none h-9",children:[T?e.jsx(by,{className:"h-4 w-4"}):e.jsx(yy,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:T?"自动滚动":"已暂停"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:O,className:"flex-1 sm:flex-none h-9",children:[e.jsx(ps,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"刷新"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:se,className:"flex-1 sm:flex-none h-9",children:[e.jsx(Pe,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"清空"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:he,className:"flex-1 sm:flex-none h-9",children:[e.jsx(sl,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"导出"})]})]}),e.jsx("div",{className:"flex-1 hidden sm:block"}),e.jsxs("div",{className:"text-xs sm:text-sm text-muted-foreground flex items-center justify-center sm:justify-end",children:[e.jsxs("span",{className:"font-mono",children:[pe.length," / ",n.length]}),e.jsx("span",{className:"ml-1",children:"条日志"})]})]}),e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-6 pt-2 border-t border-border/50",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(Ny,{className:"h-4 w-4"}),e.jsx("span",{children:"字号"})]}),e.jsx("div",{className:"flex gap-1",children:Object.keys(Hc).map(y=>e.jsx(b,{variant:U===y?"default":"outline",size:"sm",onClick:()=>M(y),className:"h-7 px-3 text-xs",children:Hc[y].label},y))})]}),e.jsxs("div",{className:"flex items-center gap-3 flex-1 max-w-xs",children:[e.jsx("span",{className:"text-sm text-muted-foreground whitespace-nowrap",children:"行距"}),e.jsx(ka,{value:[Z],onValueChange:([y])=>G(y),min:0,max:12,step:2,className:"flex-1"}),e.jsxs("span",{className:"text-xs text-muted-foreground w-8",children:[Z,"px"]})]})]})]})})]}),e.jsx("div",{className:"flex-1 min-h-0 px-3 sm:px-4 lg:px-6 pb-3 sm:pb-4 lg:pb-6",children:e.jsx(Ve,{className:"bg-black dark:bg-gray-950 border-gray-800 dark:border-gray-900 h-full",children:e.jsx(Ie,{viewportRef:z,className:"h-full",children:e.jsx("div",{className:K("p-2 sm:p-3 font-mono relative",Hc[U].class),style:{height:`${_e.getTotalSize()}px`},children:pe.length===0?e.jsx("div",{className:"text-gray-500 dark:text-gray-600 text-center py-8 text-sm",children:"暂无日志数据"}):_e.getVirtualItems().map(y=>{const q=pe[y.index];return e.jsxs("div",{"data-index":y.index,ref:_e.measureElement,className:K("absolute top-0 left-0 w-full px-2 sm:px-3 rounded hover:bg-white/5 transition-colors group",S(q.level)),style:{transform:`translateY(${y.start}px)`,paddingTop:`${Z/2}px`,paddingBottom:`${Z/2}px`},children:[e.jsxs("div",{className:"flex flex-col gap-0.5 sm:hidden",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-gray-500 dark:text-gray-600",children:q.timestamp}),e.jsxs("span",{className:K("font-semibold",X(q.level)),children:["[",q.level,"]"]})]}),e.jsx("div",{className:"text-cyan-400 dark:text-cyan-500 truncate",children:q.module}),e.jsx("div",{className:"text-gray-300 dark:text-gray-400 whitespace-pre-wrap break-words",children:q.message})]}),e.jsxs("div",{className:"hidden sm:flex gap-2 items-start",children:[e.jsx("span",{className:"text-gray-500 dark:text-gray-600 flex-shrink-0 w-[130px] lg:w-[160px]",children:q.timestamp}),e.jsxs("span",{className:K("flex-shrink-0 w-[65px] lg:w-[75px] font-semibold",X(q.level)),children:["[",q.level,"]"]}),e.jsx("span",{className:"text-cyan-400 dark:text-cyan-500 flex-shrink-0 w-[100px] lg:w-[130px] truncate",children:q.module}),e.jsx("span",{className:"text-gray-300 dark:text-gray-400 flex-1 whitespace-pre-wrap break-words",children:q.message})]})]},y.key)})})})})})]})}const B1="Mai-with-u",H1="plugin-repo",q1="main",G1="plugin_details.json";async function V1(){try{const n=await ke("/api/webui/plugins/fetch-raw",{method:"POST",body:JSON.stringify({owner:B1,repo:H1,branch:q1,file_path:G1})});if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);const r=await n.json();if(!r.success||!r.data)throw new Error(r.error||"获取插件列表失败");return JSON.parse(r.data).filter(h=>!h?.id||!h?.manifest?(console.warn("跳过无效插件数据:",h),!1):!h.manifest.name||!h.manifest.version?(console.warn("跳过缺少必需字段的插件:",h.id),!1):!0).map(h=>({id:h.id,manifest:{manifest_version:h.manifest.manifest_version||1,name:h.manifest.name,version:h.manifest.version,description:h.manifest.description||"",author:h.manifest.author||{name:"Unknown"},license:h.manifest.license||"Unknown",host_application:h.manifest.host_application||{min_version:"0.0.0"},homepage_url:h.manifest.homepage_url,repository_url:h.manifest.repository_url,keywords:h.manifest.keywords||[],categories:h.manifest.categories||[],default_locale:h.manifest.default_locale||"zh-CN",locales_path:h.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!1,published_at:new Date().toISOString(),updated_at:new Date().toISOString()}))}catch(n){throw console.error("Failed to fetch plugin list:",n),n}}async function F1(){try{const n=await ke("/api/webui/plugins/git-status");if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);return await n.json()}catch(n){return console.error("Failed to check Git status:",n),{installed:!1,error:"无法检测 Git 安装状态"}}}async function $1(){try{const n=await ke("/api/webui/plugins/version");if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);return await n.json()}catch(n){return console.error("Failed to get Maimai version:",n),{version:"0.0.0",version_major:0,version_minor:0,version_patch:0}}}function Q1(n,r,c){const d=n.split(".").map(j=>parseInt(j)||0),h=d[0]||0,x=d[1]||0,f=d[2]||0;if(c.version_majorparseInt(k)||0),p=j[0]||0,w=j[1]||0,v=j[2]||0;if(c.version_major>p||c.version_major===p&&c.version_minor>w||c.version_major===p&&c.version_minor===w&&c.version_patch>v)return!1}return!0}function Y1(n,r){const c=window.location.protocol==="https:"?"wss:":"ws:",d=window.location.host,h=new WebSocket(`${c}//${d}/api/webui/ws/plugin-progress`);return h.onopen=()=>{console.log("Plugin progress WebSocket connected");const x=setInterval(()=>{h.readyState===WebSocket.OPEN?h.send("ping"):clearInterval(x)},3e4)},h.onmessage=x=>{try{if(x.data==="pong")return;const f=JSON.parse(x.data);n(f)}catch(f){console.error("Failed to parse progress data:",f)}},h.onerror=x=>{console.error("Plugin progress WebSocket error:",x),r?.(x)},h.onclose=()=>{console.log("Plugin progress WebSocket disconnected")},h}async function nr(){try{const n=await ke("/api/webui/plugins/installed",{headers:Tt()});if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);const r=await n.json();if(!r.success)throw new Error(r.message||"获取已安装插件列表失败");return r.plugins||[]}catch(n){return console.error("Failed to get installed plugins:",n),[]}}function qc(n,r){return r.some(c=>c.id===n)}function Gc(n,r){const c=r.find(d=>d.id===n);if(c)return c.manifest?.version||c.version}async function X1(n,r,c="main"){const d=await ke("/api/webui/plugins/install",{method:"POST",body:JSON.stringify({plugin_id:n,repository_url:r,branch:c})});if(!d.ok){const h=await d.json();throw new Error(h.detail||"安装失败")}return await d.json()}async function K1(n){const r=await ke("/api/webui/plugins/uninstall",{method:"POST",body:JSON.stringify({plugin_id:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"卸载失败")}return await r.json()}async function Z1(n,r,c="main"){const d=await ke("/api/webui/plugins/update",{method:"POST",body:JSON.stringify({plugin_id:n,repository_url:r,branch:c})});if(!d.ok){const h=await d.json();throw new Error(h.detail||"更新失败")}return await d.json()}async function J1(n){const r=await ke(`/api/webui/plugins/config/${n}/schema`,{headers:Tt()});if(!r.ok){const d=await r.json();throw new Error(d.detail||"获取配置 Schema 失败")}const c=await r.json();if(!c.success)throw new Error(c.message||"获取配置 Schema 失败");return c.schema}async function I1(n){const r=await ke(`/api/webui/plugins/config/${n}`,{headers:Tt()});if(!r.ok){const d=await r.json();throw new Error(d.detail||"获取配置失败")}const c=await r.json();if(!c.success)throw new Error(c.message||"获取配置失败");return c.config}async function P1(n,r){const c=await ke(`/api/webui/plugins/config/${n}`,{method:"PUT",body:JSON.stringify({config:r})});if(!c.ok){const d=await c.json();throw new Error(d.detail||"保存配置失败")}return await c.json()}async function W1(n){const r=await ke(`/api/webui/plugins/config/${n}/reset`,{method:"POST",headers:Tt()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"重置配置失败")}return await r.json()}async function e2(n){const r=await ke(`/api/webui/plugins/config/${n}/toggle`,{method:"POST",headers:Tt()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"切换状态失败")}return await r.json()}const br="https://maibot-plugin-stats.maibot-webui.workers.dev";async function zg(n){try{const r=await fetch(`${br}/stats/${n}`);return r.ok?await r.json():(console.error("Failed to fetch plugin stats:",r.statusText),null)}catch(r){return console.error("Error fetching plugin stats:",r),null}}async function t2(n,r){try{const c=r||Xu(),d=await fetch(`${br}/stats/like`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,user_id:c})}),h=await d.json();return d.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:d.ok?{success:!0,...h}:{success:!1,error:h.error||"点赞失败"}}catch(c){return console.error("Error liking plugin:",c),{success:!1,error:"网络错误"}}}async function s2(n,r){try{const c=r||Xu(),d=await fetch(`${br}/stats/dislike`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,user_id:c})}),h=await d.json();return d.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:d.ok?{success:!0,...h}:{success:!1,error:h.error||"点踩失败"}}catch(c){return console.error("Error disliking plugin:",c),{success:!1,error:"网络错误"}}}async function a2(n,r,c,d){if(r<1||r>5)return{success:!1,error:"评分必须在 1-5 之间"};try{const h=d||Xu(),x=await fetch(`${br}/stats/rate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,rating:r,comment:c,user_id:h})}),f=await x.json();return x.status===429?{success:!1,error:"每天最多评分 3 次"}:x.ok?{success:!0,...f}:{success:!1,error:f.error||"评分失败"}}catch(h){return console.error("Error rating plugin:",h),{success:!1,error:"网络错误"}}}async function l2(n){try{const r=await fetch(`${br}/stats/download`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n})}),c=await r.json();return r.status===429?(console.warn("Download recording rate limited"),{success:!0}):r.ok?{success:!0,...c}:(console.error("Failed to record download:",c.error),{success:!1,error:c.error})}catch(r){return console.error("Error recording download:",r),{success:!1,error:"网络错误"}}}function n2(){const n=navigator,r=[navigator.userAgent,navigator.language,navigator.languages?.join(",")||"",navigator.platform,navigator.hardwareConcurrency||0,screen.width,screen.height,screen.colorDepth,screen.pixelDepth,new Date().getTimezoneOffset(),Intl.DateTimeFormat().resolvedOptions().timeZone,navigator.maxTouchPoints||0,n.deviceMemory||0].join("|");let c=0;for(let d=0;d{x(!0);const M=await zg(n);M&&d(M),x(!1)};u.useEffect(()=>{E()},[n]);const R=async()=>{const M=await t2(n);M.success?(T({title:"已点赞",description:"感谢你的支持!"}),E()):T({title:"点赞失败",description:M.error||"未知错误",variant:"destructive"})},F=async()=>{const M=await s2(n);M.success?(T({title:"已反馈",description:"感谢你的反馈!"}),E()):T({title:"操作失败",description:M.error||"未知错误",variant:"destructive"})},U=async()=>{if(f===0){T({title:"请选择评分",description:"至少选择 1 颗星",variant:"destructive"});return}const M=await a2(n,f,p||void 0);M.success?(T({title:"评分成功",description:"感谢你的评价!"}),k(!1),j(0),w(""),E()):T({title:"评分失败",description:M.error||"未知错误",variant:"destructive"})};return h?e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(sl,{className:"h-4 w-4"}),e.jsx("span",{children:"-"})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ml,{className:"h-4 w-4"}),e.jsx("span",{children:"-"})]})]}):c?r?e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",title:`下载量: ${c.downloads.toLocaleString()}`,children:[e.jsx(sl,{className:"h-4 w-4"}),e.jsx("span",{children:c.downloads.toLocaleString()})]}),e.jsxs("div",{className:"flex items-center gap-1",title:`评分: ${c.rating.toFixed(1)} (${c.rating_count} 条评价)`,children:[e.jsx(Ml,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsx("span",{children:c.rating.toFixed(1)})]}),e.jsxs("div",{className:"flex items-center gap-1",title:`点赞数: ${c.likes}`,children:[e.jsx(bu,{className:"h-4 w-4"}),e.jsx("span",{children:c.likes})]})]}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-4",children:[e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(sl,{className:"h-5 w-5 text-muted-foreground mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.downloads.toLocaleString()}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"下载量"})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(Ml,{className:"h-5 w-5 text-yellow-400 mb-1 fill-yellow-400"}),e.jsx("span",{className:"text-2xl font-bold",children:c.rating.toFixed(1)}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:[c.rating_count," 条评价"]})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(bu,{className:"h-5 w-5 text-green-500 mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.likes}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"点赞"})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(Gf,{className:"h-5 w-5 text-red-500 mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.dislikes}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"点踩"})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(b,{variant:"outline",size:"sm",onClick:R,children:[e.jsx(bu,{className:"h-4 w-4 mr-1"}),"点赞"]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:F,children:[e.jsx(Gf,{className:"h-4 w-4 mr-1"}),"点踩"]}),e.jsxs(Qt,{open:v,onOpenChange:k,children:[e.jsx(Vu,{asChild:!0,children:e.jsxs(b,{variant:"default",size:"sm",children:[e.jsx(Ml,{className:"h-4 w-4 mr-1"}),"评分"]})}),e.jsxs(Ut,{children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:"为插件评分"}),e.jsx(ss,{children:"分享你的使用体验,帮助其他用户"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"flex flex-col items-center gap-2",children:[e.jsx("div",{className:"flex gap-2",children:[1,2,3,4,5].map(M=>e.jsx("button",{onClick:()=>j(M),className:"focus:outline-none",children:e.jsx(Ml,{className:`h-8 w-8 transition-colors ${M<=f?"fill-yellow-400 text-yellow-400":"text-muted-foreground hover:text-yellow-300"}`})},M))}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[f===0&&"点击星星进行评分",f===1&&"很差",f===2&&"一般",f===3&&"还行",f===4&&"不错",f===5&&"非常好"]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium mb-2 block",children:"评论(可选)"}),e.jsx(Ot,{value:p,onChange:M=>w(M.target.value),placeholder:"分享你的使用体验...",rows:4,maxLength:500}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 text-right",children:[p.length," / 500"]})]})]}),e.jsxs(os,{children:[e.jsx(b,{variant:"outline",onClick:()=>k(!1),children:"取消"}),e.jsx(b,{onClick:U,disabled:f===0,children:"提交评分"})]})]})]})]}),c.recent_ratings&&c.recent_ratings.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"text-sm font-semibold",children:"最近评价"}),e.jsx("div",{className:"space-y-3",children:c.recent_ratings.map((M,Z)=>e.jsxs("div",{className:"p-3 rounded-lg border bg-muted/50",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("div",{className:"flex gap-1",children:[1,2,3,4,5].map(G=>e.jsx(Ml,{className:`h-3 w-3 ${G<=M.rating?"fill-yellow-400 text-yellow-400":"text-muted-foreground"}`},G))}),e.jsx("span",{className:"text-xs text-muted-foreground",children:new Date(M.created_at).toLocaleDateString()})]}),M.comment&&e.jsx("p",{className:"text-sm text-muted-foreground",children:M.comment})]},Z))})]})]}):null}const up={"Group Management":"群组管理","Entertainment & Interaction":"娱乐互动","Utility Tools":"实用工具","Content Generation":"内容生成",Multimedia:"多媒体","External Integration":"外部集成","Data Analysis & Insights":"数据分析与洞察",Other:"其他"};function r2(){const n=ua(),[r,c]=u.useState(null),[d,h]=u.useState(""),[x,f]=u.useState("all"),[j,p]=u.useState("all"),[w,v]=u.useState(!0),[k,T]=u.useState([]),[E,R]=u.useState(!0),[F,U]=u.useState(null),[M,Z]=u.useState(null),[G,z]=u.useState(null),[B,X]=u.useState(null),[,S]=u.useState([]),[O,se]=u.useState({}),{toast:he}=Rt(),ye=async _=>{const me=_.map(async de=>{try{const ge=await zg(de.id);return{id:de.id,stats:ge}}catch(ge){return console.warn(`Failed to load stats for ${de.id}:`,ge),{id:de.id,stats:null}}}),xe=await Promise.all(me),Q={};xe.forEach(({id:de,stats:ge})=>{ge&&(Q[de]=ge)}),se(Q)};u.useEffect(()=>{let _=null,me=!1;return(async()=>{if(_=Y1(Q=>{me||(z(Q),Q.stage==="success"?setTimeout(()=>{me||z(null)},2e3):Q.stage==="error"&&(R(!1),U(Q.error||"加载失败")))},Q=>{console.error("WebSocket error:",Q),me||he({title:"WebSocket 连接失败",description:"无法实时显示加载进度",variant:"destructive"})}),await new Promise(Q=>{if(!_){Q();return}const de=()=>{_&&_.readyState===WebSocket.OPEN?(console.log("WebSocket connected, starting to load plugins"),Q()):_&&_.readyState===WebSocket.CLOSED?(console.warn("WebSocket closed before loading plugins"),Q()):setTimeout(de,100)};de()}),!me){const Q=await F1();Z(Q),Q.installed||he({title:"Git 未安装",description:Q.error||"请先安装 Git 才能使用插件安装功能",variant:"destructive"})}if(!me){const Q=await $1();X(Q)}if(!me)try{R(!0),U(null);const Q=await V1();if(!me){const de=await nr();S(de);const ge=Q.map(le=>{const L=qc(le.id,de),$=Gc(le.id,de);return{...le,installed:L,installed_version:$}});for(const le of de)!ge.some($=>$.id===le.id)&&le.manifest&&ge.push({id:le.id,manifest:{manifest_version:le.manifest.manifest_version||1,name:le.manifest.name,version:le.manifest.version,description:le.manifest.description||"",author:le.manifest.author,license:le.manifest.license||"Unknown",host_application:le.manifest.host_application,homepage_url:le.manifest.homepage_url,repository_url:le.manifest.repository_url,keywords:le.manifest.keywords||[],categories:le.manifest.categories||[],default_locale:le.manifest.default_locale||"zh-CN",locales_path:le.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!0,installed_version:le.manifest.version,published_at:new Date().toISOString(),updated_at:new Date().toISOString()});T(ge),ye(ge)}}catch(Q){if(!me){const de=Q instanceof Error?Q.message:"加载插件列表失败";U(de),he({title:"加载失败",description:de,variant:"destructive"})}}finally{me||R(!1)}})(),()=>{me=!0,_&&_.close()}},[he]);const be=_=>{if(!_.installed&&B&&!pe(_))return e.jsxs(Qe,{variant:"destructive",className:"gap-1",children:[e.jsx(Ea,{className:"h-3 w-3"}),"不兼容"]});if(_.installed){const me=_.installed_version?.trim(),xe=_.manifest.version?.trim();if(me!==xe){const Q=me?.split(".").map(Number)||[0,0,0],de=xe?.split(".").map(Number)||[0,0,0];for(let ge=0;ge<3;ge++){if((de[ge]||0)>(Q[ge]||0))return e.jsxs(Qe,{variant:"outline",className:"gap-1 text-orange-600 border-orange-600",children:[e.jsx(Ea,{className:"h-3 w-3"}),"可更新"]});if((de[ge]||0)<(Q[ge]||0))break}}return e.jsxs(Qe,{variant:"default",className:"gap-1",children:[e.jsx(oa,{className:"h-3 w-3"}),"已安装"]})}return null},pe=_=>!B||!_.manifest?.host_application?!0:Q1(_.manifest.host_application.min_version,_.manifest.host_application.max_version,B),je=_=>{if(!_.installed||!_.installed_version||!_.manifest?.version)return!1;const me=_.installed_version.trim(),xe=_.manifest.version.trim();if(me===xe)return!1;const Q=me.split(".").map(Number),de=xe.split(".").map(Number);for(let ge=0;ge<3;ge++){if((de[ge]||0)>(Q[ge]||0))return!0;if((de[ge]||0)<(Q[ge]||0))return!1}return!1},_e=k.filter(_=>{if(!_.manifest)return console.warn("[过滤] 跳过无 manifest 的插件:",_.id),!1;const me=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(ge=>ge.toLowerCase().includes(d.toLowerCase())),xe=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x);let Q=!0;j==="installed"?Q=_.installed===!0:j==="updates"&&(Q=_.installed===!0&&je(_));const de=!w||!B||pe(_);return me&&xe&&Q&&de}),y=()=>{c(null)},q=async _=>{if(!M?.installed){he({title:"无法安装",description:"Git 未安装",variant:"destructive"});return}if(B&&!pe(_)){he({title:"无法安装",description:"插件与当前麦麦版本不兼容",variant:"destructive"});return}try{await X1(_.id,_.manifest.repository_url||"","main"),l2(_.id).catch(xe=>{console.warn("Failed to record download:",xe)}),he({title:"安装成功",description:`${_.manifest.name} 已成功安装`});const me=await nr();S(me),T(xe=>xe.map(Q=>{if(Q.id===_.id){const de=qc(Q.id,me),ge=Gc(Q.id,me);return{...Q,installed:de,installed_version:ge}}return Q}))}catch(me){he({title:"安装失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}},H=async _=>{try{await K1(_.id),he({title:"卸载成功",description:`${_.manifest.name} 已成功卸载`});const me=await nr();S(me),T(xe=>xe.map(Q=>{if(Q.id===_.id){const de=qc(Q.id,me),ge=Gc(Q.id,me);return{...Q,installed:de,installed_version:ge}}return Q}))}catch(me){he({title:"卸载失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}},ie=async _=>{if(!M?.installed){he({title:"无法更新",description:"Git 未安装",variant:"destructive"});return}try{const me=await Z1(_.id,_.manifest.repository_url||"","main");he({title:"更新成功",description:`${_.manifest.name} 已从 ${me.old_version} 更新到 ${me.new_version}`});const xe=await nr();S(xe),T(Q=>Q.map(de=>{if(de.id===_.id){const ge=qc(de.id,xe),le=Gc(de.id,xe);return{...de,installed:ge,installed_version:le}}return de}))}catch(me){he({title:"更新失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}};return e.jsx(Ie,{className:"h-full",children:e.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件市场"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"浏览和管理麦麦的插件"})]}),e.jsxs(b,{onClick:()=>n({to:"/plugin-mirrors"}),children:[e.jsx(wy,{className:"h-4 w-4 mr-2"}),"配置镜像源"]})]}),M&&!M.installed&&e.jsxs(Ve,{className:"border-orange-600 bg-orange-50 dark:bg-orange-950/20",children:[e.jsx(pt,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(pa,{className:"h-5 w-5 text-orange-600"}),e.jsxs("div",{children:[e.jsx(gt,{className:"text-lg text-orange-900 dark:text-orange-100",children:"Git 未安装"}),e.jsx(Kt,{className:"text-orange-800 dark:text-orange-200",children:M.error||"请先安装 Git 才能使用插件安装功能"})]})]})}),e.jsx(yt,{children:e.jsxs("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:["您可以从 ",e.jsx("a",{href:"https://git-scm.com/downloads",target:"_blank",rel:"noopener noreferrer",className:"underline font-medium",children:"git-scm.com"})," 下载并安装 Git。 安装完成后,请重启麦麦应用。"]})})]}),e.jsx(Ve,{className:"p-4",children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(Os,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索插件...",value:d,onChange:_=>h(_.target.value),className:"pl-9"})]}),e.jsxs(Be,{value:x,onValueChange:f,children:[e.jsx(Re,{className:"w-full sm:w-[200px]",children:e.jsx(He,{placeholder:"选择分类"})}),e.jsxs(Le,{children:[e.jsx(ne,{value:"all",children:"全部分类"}),e.jsx(ne,{value:"Group Management",children:"群组管理"}),e.jsx(ne,{value:"Entertainment & Interaction",children:"娱乐互动"}),e.jsx(ne,{value:"Utility Tools",children:"实用工具"}),e.jsx(ne,{value:"Content Generation",children:"内容生成"}),e.jsx(ne,{value:"Multimedia",children:"多媒体"}),e.jsx(ne,{value:"External Integration",children:"外部集成"}),e.jsx(ne,{value:"Data Analysis & Insights",children:"数据分析与洞察"}),e.jsx(ne,{value:"Other",children:"其他"})]})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(bs,{id:"compatible-only",checked:w,onCheckedChange:_=>v(_===!0)}),e.jsx("label",{htmlFor:"compatible-only",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer",children:"只显示兼容当前版本的插件"})]})]})}),e.jsx(Aa,{value:j,onValueChange:p,className:"w-full",children:e.jsxs(ja,{className:"grid w-full grid-cols-3",children:[e.jsxs(st,{value:"all",children:["全部插件 (",k.filter(_=>{if(!_.manifest)return!1;const me=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(de=>de.toLowerCase().includes(d.toLowerCase())),xe=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x),Q=!w||!B||pe(_);return me&&xe&&Q}).length,")"]}),e.jsxs(st,{value:"installed",children:["已安装 (",k.filter(_=>{if(!_.manifest)return!1;const me=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(de=>de.toLowerCase().includes(d.toLowerCase())),xe=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x),Q=!w||!B||pe(_);return _.installed&&me&&xe&&Q}).length,")"]}),e.jsxs(st,{value:"updates",children:["可更新 (",k.filter(_=>{if(!_.manifest)return!1;const me=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(de=>de.toLowerCase().includes(d.toLowerCase())),xe=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x),Q=!w||!B||pe(_);return _.installed&&je(_)&&me&&xe&&Q}).length,")"]})]})}),G&&G.stage==="loading"&&e.jsx(Ve,{className:"p-4",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(vs,{className:"h-4 w-4 animate-spin"}),e.jsxs("span",{className:"text-sm font-medium",children:[G.operation==="fetch"&&"加载插件列表",G.operation==="install"&&`安装插件${G.plugin_id?`: ${G.plugin_id}`:""}`,G.operation==="uninstall"&&`卸载插件${G.plugin_id?`: ${G.plugin_id}`:""}`,G.operation==="update"&&`更新插件${G.plugin_id?`: ${G.plugin_id}`:""}`]})]}),e.jsxs("span",{className:"text-sm font-medium",children:[G.progress,"%"]})]}),e.jsx(vr,{value:G.progress,className:"h-2"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:G.message}),G.operation==="fetch"&&G.total_plugins>0&&e.jsxs("div",{className:"text-xs text-muted-foreground text-center",children:["已加载 ",G.loaded_plugins," / ",G.total_plugins," 个插件"]})]})}),G&&G.stage==="error"&&G.error&&e.jsx(Ve,{className:"border-destructive bg-destructive/10",children:e.jsx(pt,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(pa,{className:"h-5 w-5 text-destructive"}),e.jsxs("div",{children:[e.jsx(gt,{className:"text-lg text-destructive",children:"加载失败"}),e.jsx(Kt,{className:"text-destructive/80",children:G.error})]})]})})}),E?e.jsxs("div",{className:"flex items-center justify-center py-12",children:[e.jsx(vs,{className:"h-8 w-8 animate-spin text-muted-foreground"}),e.jsx("span",{className:"ml-3 text-muted-foreground",children:"加载插件列表中..."})]}):F?e.jsx(Ve,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(pa,{className:"h-12 w-12 text-destructive mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:F}),e.jsx(b,{onClick:()=>window.location.reload(),children:"重新加载"})]})}):_e.length===0?e.jsx(Ve,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(Os,{className:"h-12 w-12 text-muted-foreground mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"未找到插件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:d||x!=="all"?"尝试调整搜索条件或筛选器":"暂无可用插件"})]})}):e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:_e.map(_=>e.jsxs(Ve,{className:"flex flex-col hover:shadow-lg transition-shadow h-full",children:[e.jsxs(pt,{children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsx(gt,{className:"text-xl",children:_.manifest?.name||_.id}),e.jsxs("div",{className:"flex flex-col gap-1",children:[_.manifest?.categories&&_.manifest.categories[0]&&e.jsx(Qe,{variant:"secondary",className:"text-xs whitespace-nowrap",children:up[_.manifest.categories[0]]||_.manifest.categories[0]}),be(_)]})]}),e.jsx(Kt,{className:"line-clamp-2",children:_.manifest?.description||"无描述"})]}),e.jsx(yt,{className:"flex-1",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(sl,{className:"h-4 w-4"}),e.jsx("span",{children:(O[_.id]?.downloads??_.downloads??0).toLocaleString()})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ml,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsx("span",{children:(O[_.id]?.rating??_.rating??0).toFixed(1)})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[_.manifest?.keywords&&_.manifest.keywords.slice(0,3).map(me=>e.jsx(Qe,{variant:"outline",className:"text-xs",children:me},me)),_.manifest?.keywords&&_.manifest.keywords.length>3&&e.jsxs(Qe,{variant:"outline",className:"text-xs",children:["+",_.manifest.keywords.length-3]})]}),e.jsxs("div",{className:"text-xs text-muted-foreground pt-2 border-t space-y-1",children:[e.jsxs("div",{children:["v",_.manifest?.version||"unknown"," · ",_.manifest?.author?.name||"Unknown"]}),_.manifest?.host_application&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{children:"支持:"}),e.jsxs("span",{className:"font-medium",children:[_.manifest.host_application.min_version,_.manifest.host_application.max_version?` - ${_.manifest.host_application.max_version}`:" - 最新版本"]})]})]})]})}),e.jsx(og,{className:"pt-4",children:e.jsxs("div",{className:"flex items-center justify-end gap-2 w-full",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>c(_),children:"查看详情"}),_.installed?je(_)?e.jsxs(b,{size:"sm",disabled:!M?.installed,title:M?.installed?void 0:"Git 未安装",onClick:()=>ie(_),children:[e.jsx(ps,{className:"h-4 w-4 mr-1"}),"更新"]}):e.jsxs(b,{variant:"destructive",size:"sm",disabled:!M?.installed,title:M?.installed?void 0:"Git 未安装",onClick:()=>H(_),children:[e.jsx(Pe,{className:"h-4 w-4 mr-1"}),"卸载"]}):e.jsxs(b,{size:"sm",disabled:!M?.installed||G?.operation==="install"||B!==null&&!pe(_),title:M?.installed?B!==null&&!pe(_)?`不兼容当前版本 (需要 ${_.manifest?.host_application?.min_version||"未知"}${_.manifest?.host_application?.max_version?` - ${_.manifest.host_application.max_version}`:"+"},当前 ${B?.version})`:void 0:"Git 未安装",onClick:()=>q(_),children:[e.jsx(sl,{className:"h-4 w-4 mr-1"}),G?.operation==="install"&&G?.plugin_id===_.id?"安装中...":"安装"]})]})})]},_.id))}),e.jsx(Qt,{open:r!==null,onOpenChange:y,children:r&&r.manifest&&e.jsx(Ut,{className:"max-w-2xl max-h-[80vh] p-0 flex flex-col",children:e.jsx(Ie,{className:"flex-1 overflow-auto",children:e.jsxs("div",{className:"p-6",children:[e.jsx(Bt,{children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"space-y-2 flex-1",children:[e.jsx(Ht,{className:"text-2xl",children:r.manifest.name}),e.jsxs(ss,{children:["作者: ",r.manifest.author?.name||"Unknown",r.manifest.author?.url&&e.jsx("a",{href:r.manifest.author.url,target:"_blank",rel:"noopener noreferrer",className:"ml-2 text-primary hover:underline",children:e.jsx(Fc,{className:"h-3 w-3 inline"})})]})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[r.manifest.categories&&r.manifest.categories[0]&&e.jsx(Qe,{variant:"secondary",children:up[r.manifest.categories[0]]||r.manifest.categories[0]}),be(r)]})]})}),e.jsxs("div",{className:"space-y-6",children:[e.jsx(i2,{pluginId:r.id}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"版本"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["v",r.manifest?.version||"unknown"]}),r.installed&&r.installed_version&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:["已安装: v",r.installed_version]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"下载量"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:(O[r.id]?.downloads??r.downloads??0).toLocaleString()})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"评分"}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ml,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[(O[r.id]?.rating??r.rating??0).toFixed(1)," (",O[r.id]?.rating_count??r.review_count??0,")"]})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"许可证"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:r.manifest.license||"Unknown"})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("p",{className:"text-sm font-medium",children:"支持版本"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:[r.manifest.host_application?.min_version||"未知",r.manifest.host_application?.max_version?` - ${r.manifest.host_application.max_version}`:" - 最新版本"]})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"关键词"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:r.manifest.keywords&&r.manifest.keywords.map(_=>e.jsx(Qe,{variant:"outline",children:_},_))})]}),r.detailed_description&&e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"详细说明"}),e.jsx("p",{className:"text-sm text-muted-foreground whitespace-pre-line",children:r.detailed_description})]}),!r.detailed_description&&e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"说明"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:r.manifest.description||"无描述"})]}),e.jsxs("div",{className:"space-y-2",children:[r.manifest.homepage_url&&e.jsxs("div",{className:"text-sm",children:[e.jsx("span",{className:"font-medium",children:"主页: "}),e.jsx("a",{href:r.manifest.homepage_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:r.manifest.homepage_url})]}),r.manifest.repository_url&&e.jsxs("div",{className:"text-sm",children:[e.jsx("span",{className:"font-medium",children:"仓库: "}),e.jsx("a",{href:r.manifest.repository_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:r.manifest.repository_url})]})]})]}),e.jsxs(os,{children:[r.manifest.homepage_url&&e.jsxs(b,{onClick:()=>window.open(r.manifest.homepage_url,"_blank"),children:[e.jsx(Fc,{className:"h-4 w-4 mr-2"}),"访问主页"]}),r.manifest.repository_url&&e.jsxs(b,{variant:"outline",onClick:()=>window.open(r.manifest.repository_url,"_blank"),children:[e.jsx(Fc,{className:"h-4 w-4 mr-2"}),"查看仓库"]})]})]})})})})]})})}const Du=Sb,Ou=Cb,Ru=kb;function c2({field:n,value:r,onChange:c}){const[d,h]=u.useState(!1);switch(n.ui_type){case"switch":return e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(N,{children:n.label}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]}),e.jsx(Ge,{checked:!!r,onCheckedChange:c,disabled:n.disabled})]});case"number":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:n.label}),e.jsx(ce,{type:"number",value:r??n.default,onChange:x=>c(parseFloat(x.target.value)||0),min:n.min,max:n.max,step:n.step??1,placeholder:n.placeholder,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"slider":return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(N,{children:n.label}),e.jsx("span",{className:"text-sm text-muted-foreground",children:r??n.default})]}),e.jsx(ka,{value:[r??n.default],onValueChange:x=>c(x[0]),min:n.min??0,max:n.max??100,step:n.step??1,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"select":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:n.label}),e.jsxs(Be,{value:String(r??n.default),onValueChange:c,disabled:n.disabled,children:[e.jsx(Re,{children:e.jsx(He,{placeholder:n.placeholder??"请选择"})}),e.jsx(Le,{children:n.choices?.map(x=>e.jsx(ne,{value:String(x),children:String(x)},String(x)))})]}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"textarea":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:n.label}),e.jsx(Ot,{value:r??n.default,onChange:x=>c(x.target.value),placeholder:n.placeholder,rows:n.rows??3,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"password":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:n.label}),e.jsxs("div",{className:"relative",children:[e.jsx(ce,{type:d?"text":"password",value:r??"",onChange:x=>c(x.target.value),placeholder:n.placeholder,disabled:n.disabled,className:"pr-10"}),e.jsx(b,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-3",onClick:()=>h(!d),children:d?e.jsx(rr,{className:"h-4 w-4"}):e.jsx(Ys,{className:"h-4 w-4"})})]}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"text":default:return e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:n.label}),e.jsx(ce,{type:"text",value:r??n.default??"",onChange:x=>c(x.target.value),placeholder:n.placeholder,maxLength:n.max_length,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]})}}function mp({section:n,config:r,onChange:c}){const[d,h]=u.useState(!n.collapsed),x=Object.entries(n.fields).filter(([,f])=>!f.hidden).sort(([,f],[,j])=>f.order-j.order);return e.jsx(Du,{open:d,onOpenChange:h,children:e.jsxs(Ve,{children:[e.jsx(Ou,{asChild:!0,children:e.jsxs(pt,{className:"cursor-pointer hover:bg-muted/50 transition-colors",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[d?e.jsx(Dl,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Ol,{className:"h-4 w-4 text-muted-foreground"}),e.jsx(gt,{className:"text-lg",children:n.title})]}),e.jsxs(Qe,{variant:"secondary",className:"text-xs",children:[x.length," 项"]})]}),n.description&&e.jsx(Kt,{className:"ml-6",children:n.description})]})}),e.jsx(Ru,{children:e.jsx(yt,{className:"space-y-4 pt-0",children:x.map(([f,j])=>e.jsx(c2,{field:j,value:r[n.name]?.[f],onChange:p=>c(n.name,f,p),sectionName:n.name},f))})})]})})}function o2({plugin:n,onBack:r}){const{toast:c}=Rt(),[d,h]=u.useState(null),[x,f]=u.useState({}),[j,p]=u.useState({}),[w,v]=u.useState(!0),[k,T]=u.useState(!1),[E,R]=u.useState(!1),[F,U]=u.useState(!1),M=u.useCallback(async()=>{v(!0);try{const[O,se]=await Promise.all([J1(n.id),I1(n.id)]);h(O),f(se),p(JSON.parse(JSON.stringify(se)))}catch(O){c({title:"加载配置失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}finally{v(!1)}},[n.id,c]);u.useEffect(()=>{M()},[M]),u.useEffect(()=>{R(JSON.stringify(x)!==JSON.stringify(j))},[x,j]);const Z=(O,se,he)=>{f(ye=>({...ye,[O]:{...ye[O]||{},[se]:he}}))},G=async()=>{T(!0);try{await P1(n.id,x),p(JSON.parse(JSON.stringify(x))),c({title:"配置已保存",description:"更改将在插件重新加载后生效"})}catch(O){c({title:"保存失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}finally{T(!1)}},z=async()=>{try{await W1(n.id),c({title:"配置已重置",description:"下次加载插件时将使用默认配置"}),U(!1),M()}catch(O){c({title:"重置失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}},B=async()=>{try{const O=await e2(n.id);c({title:O.message,description:O.note}),M()}catch(O){c({title:"切换状态失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}};if(w)return e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx(vs,{className:"h-8 w-8 animate-spin text-muted-foreground"})});if(!d)return e.jsxs("div",{className:"flex flex-col items-center justify-center h-64 space-y-4",children:[e.jsx(Ea,{className:"h-12 w-12 text-muted-foreground"}),e.jsx("p",{className:"text-muted-foreground",children:"无法加载配置"}),e.jsxs(b,{onClick:r,variant:"outline",children:[e.jsx(Wn,{className:"h-4 w-4 mr-2"}),"返回"]})]});const X=Object.values(d.sections).sort((O,se)=>O.order-se.order),S=x.plugin?.enabled!==!1;return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(b,{variant:"ghost",size:"icon",onClick:r,children:e.jsx(Wn,{className:"h-5 w-5"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:d.plugin_info.name||n.manifest.name}),e.jsxs("div",{className:"flex items-center gap-2 mt-1",children:[e.jsx(Qe,{variant:S?"default":"secondary",children:S?"已启用":"已禁用"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["v",d.plugin_info.version||n.manifest.version]})]})]})]}),e.jsxs("div",{className:"flex gap-2 ml-10 sm:ml-0",children:[e.jsxs(b,{variant:"outline",size:"sm",onClick:B,children:[e.jsx(fr,{className:"h-4 w-4 mr-2"}),S?"禁用":"启用"]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>U(!0),children:[e.jsx(Kc,{className:"h-4 w-4 mr-2"}),"重置"]}),e.jsxs(b,{size:"sm",onClick:G,disabled:!E||k,children:[k?e.jsx(vs,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(pr,{className:"h-4 w-4 mr-2"}),"保存"]})]})]}),E&&e.jsx(Ve,{className:"border-orange-200 bg-orange-50 dark:bg-orange-950/20 dark:border-orange-900",children:e.jsx(yt,{className:"py-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(za,{className:"h-4 w-4 text-orange-600"}),e.jsx("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:"有未保存的更改"})]})})}),d.layout.type==="tabs"&&d.layout.tabs.length>0?e.jsxs(Aa,{defaultValue:d.layout.tabs[0]?.id,children:[e.jsx(ja,{children:d.layout.tabs.map(O=>e.jsxs(st,{value:O.id,children:[O.title,O.badge&&e.jsx(Qe,{variant:"secondary",className:"ml-2 text-xs",children:O.badge})]},O.id))}),d.layout.tabs.map(O=>e.jsx(_t,{value:O.id,className:"space-y-4 mt-4",children:O.sections.map(se=>{const he=d.sections[se];return he?e.jsx(mp,{section:he,config:x,onChange:Z},se):null})},O.id))]}):e.jsx("div",{className:"space-y-4",children:X.map(O=>e.jsx(mp,{section:O,config:x,onChange:Z},O.name))}),e.jsx(Qt,{open:F,onOpenChange:U,children:e.jsxs(Ut,{children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:"确认重置配置"}),e.jsx(ss,{children:"这将删除当前配置文件,下次加载插件时将使用默认配置。此操作不可撤销。"})]}),e.jsxs(os,{children:[e.jsx(b,{variant:"outline",onClick:()=>U(!1),children:"取消"}),e.jsx(b,{variant:"destructive",onClick:z,children:"确认重置"})]})]})})]})}function d2(){const{toast:n}=Rt(),[r,c]=u.useState([]),[d,h]=u.useState(!0),[x,f]=u.useState(""),[j,p]=u.useState(null),w=async()=>{h(!0);try{const E=await nr();c(E)}catch(E){n({title:"加载插件列表失败",description:E instanceof Error?E.message:"未知错误",variant:"destructive"})}finally{h(!1)}};u.useEffect(()=>{w()},[]);const v=r.filter(E=>{const R=x.toLowerCase();return E.id.toLowerCase().includes(R)||E.manifest.name.toLowerCase().includes(R)||E.manifest.description?.toLowerCase().includes(R)}),k=r.length,T=0;return j?e.jsx(Ie,{className:"h-full",children:e.jsx("div",{className:"p-4 sm:p-6",children:e.jsx(o2,{plugin:j,onBack:()=>p(null)})})}):e.jsx(Ie,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理和配置已安装的插件"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:w,children:[e.jsx(ps,{className:`h-4 w-4 mr-2 ${d?"animate-spin":""}`}),"刷新"]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-3",children:[e.jsxs(Ve,{children:[e.jsxs(pt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(gt,{className:"text-sm font-medium",children:"已安装插件"}),e.jsx(ln,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(yt,{children:[e.jsx("div",{className:"text-2xl font-bold",children:r.length}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:d?"正在加载...":"个插件"})]})]}),e.jsxs(Ve,{children:[e.jsxs(pt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(gt,{className:"text-sm font-medium",children:"已启用"}),e.jsx(oa,{className:"h-4 w-4 text-green-600"})]}),e.jsxs(yt,{children:[e.jsx("div",{className:"text-2xl font-bold",children:k}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"运行中的插件"})]})]}),e.jsxs(Ve,{children:[e.jsxs(pt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(gt,{className:"text-sm font-medium",children:"已禁用"}),e.jsx(Ea,{className:"h-4 w-4 text-orange-600"})]}),e.jsxs(yt,{children:[e.jsx("div",{className:"text-2xl font-bold",children:T}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"未激活的插件"})]})]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(Os,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索插件...",value:x,onChange:E=>f(E.target.value),className:"pl-9"})]}),e.jsxs(Ve,{children:[e.jsxs(pt,{children:[e.jsx(gt,{children:"已安装的插件"}),e.jsx(Kt,{children:"点击插件查看和编辑配置"})]}),e.jsx(yt,{children:d?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(vs,{className:"h-8 w-8 animate-spin text-muted-foreground"})}):v.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 space-y-4",children:[e.jsx(ln,{className:"h-16 w-16 text-muted-foreground/50"}),e.jsxs("div",{className:"text-center space-y-2",children:[e.jsx("p",{className:"text-lg font-medium text-muted-foreground",children:x?"没有找到匹配的插件":"暂无已安装的插件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:x?"尝试其他搜索关键词":"前往插件市场安装插件"})]})]}):e.jsx("div",{className:"space-y-2",children:v.map(E=>e.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg border hover:bg-muted/50 cursor-pointer transition-colors",onClick:()=>p(E),children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[e.jsx("div",{className:"h-10 w-10 rounded-lg bg-primary/10 flex items-center justify-center flex-shrink-0",children:e.jsx(ln,{className:"h-5 w-5 text-primary"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-medium truncate",children:E.manifest.name}),e.jsxs(Qe,{variant:"secondary",className:"text-xs flex-shrink-0",children:["v",E.manifest.version]})]}),e.jsx("p",{className:"text-sm text-muted-foreground truncate",children:E.manifest.description||"暂无描述"})]})]}),e.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[e.jsx(b,{variant:"ghost",size:"sm",children:e.jsx(ti,{className:"h-4 w-4"})}),e.jsx(Ol,{className:"h-4 w-4 text-muted-foreground"})]})]},E.id))})})]})]})})}function u2(){const n=ua(),{toast:r}=Rt(),[c,d]=u.useState([]),[h,x]=u.useState(!0),[f,j]=u.useState(null),[p,w]=u.useState(null),[v,k]=u.useState(!1),[T,E]=u.useState(!1),[R,F]=u.useState({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),U=u.useCallback(async()=>{try{x(!0),j(null);const S=localStorage.getItem("access-token"),O=await fetch("/api/webui/plugins/mirrors",{headers:{Authorization:`Bearer ${S}`}});if(!O.ok)throw new Error("获取镜像源列表失败");const se=await O.json();d(se.mirrors||[])}catch(S){const O=S instanceof Error?S.message:"加载镜像源失败";j(O),r({title:"加载失败",description:O,variant:"destructive"})}finally{x(!1)}},[r]);u.useEffect(()=>{U()},[U]);const M=async()=>{try{const S=localStorage.getItem("access-token"),O=await fetch("/api/webui/plugins/mirrors",{method:"POST",headers:{Authorization:`Bearer ${S}`,"Content-Type":"application/json"},body:JSON.stringify(R)});if(!O.ok){const se=await O.json();throw new Error(se.detail||"添加镜像源失败")}r({title:"添加成功",description:"镜像源已添加"}),k(!1),F({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),U()}catch(S){r({title:"添加失败",description:S instanceof Error?S.message:"未知错误",variant:"destructive"})}},Z=async()=>{if(p)try{const S=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${p.id}`,{method:"PUT",headers:{Authorization:`Bearer ${S}`,"Content-Type":"application/json"},body:JSON.stringify({name:R.name,raw_prefix:R.raw_prefix,clone_prefix:R.clone_prefix,enabled:R.enabled,priority:R.priority})})).ok)throw new Error("更新镜像源失败");r({title:"更新成功",description:"镜像源已更新"}),E(!1),w(null),U()}catch(S){r({title:"更新失败",description:S instanceof Error?S.message:"未知错误",variant:"destructive"})}},G=async S=>{if(confirm("确定要删除这个镜像源吗?"))try{const O=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${S}`,{method:"DELETE",headers:{Authorization:`Bearer ${O}`}})).ok)throw new Error("删除镜像源失败");r({title:"删除成功",description:"镜像源已删除"}),U()}catch(O){r({title:"删除失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}},z=async S=>{try{const O=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${S.id}`,{method:"PUT",headers:{Authorization:`Bearer ${O}`,"Content-Type":"application/json"},body:JSON.stringify({enabled:!S.enabled})})).ok)throw new Error("更新状态失败");U()}catch(O){r({title:"更新失败",description:O instanceof Error?O.message:"未知错误",variant:"destructive"})}},B=S=>{w(S),F({id:S.id,name:S.name,raw_prefix:S.raw_prefix,clone_prefix:S.clone_prefix,enabled:S.enabled,priority:S.priority}),E(!0)},X=async(S,O)=>{const se=O==="up"?S.priority-1:S.priority+1;if(!(se<1))try{const he=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${S.id}`,{method:"PUT",headers:{Authorization:`Bearer ${he}`,"Content-Type":"application/json"},body:JSON.stringify({priority:se})})).ok)throw new Error("更新优先级失败");U()}catch(he){r({title:"更新失败",description:he instanceof Error?he.message:"未知错误",variant:"destructive"})}};return e.jsx(Ie,{className:"h-full",children:e.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(b,{variant:"ghost",size:"icon",onClick:()=>n({to:"/plugins"}),children:e.jsx(Wn,{className:"h-5 w-5"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"镜像源配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理 Git 克隆和文件下载的镜像源"})]})]}),e.jsxs(b,{onClick:()=>k(!0),children:[e.jsx(cs,{className:"h-4 w-4 mr-2"}),"添加镜像源"]})]}),h?e.jsx(Ve,{className:"p-6",children:e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(vs,{className:"h-8 w-8 animate-spin text-primary"})})}):f?e.jsx(Ve,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(pa,{className:"h-12 w-12 text-destructive mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:f}),e.jsx(b,{onClick:U,children:"重新加载"})]})}):e.jsxs(Ve,{children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(ai,{children:[e.jsx(li,{children:e.jsxs(gs,{children:[e.jsx(at,{children:"状态"}),e.jsx(at,{children:"名称"}),e.jsx(at,{children:"ID"}),e.jsx(at,{children:"优先级"}),e.jsx(at,{className:"text-right",children:"操作"})]})}),e.jsx(ni,{children:c.map(S=>e.jsxs(gs,{children:[e.jsx($e,{children:e.jsx(Ge,{checked:S.enabled,onCheckedChange:()=>z(S)})}),e.jsx($e,{children:e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:S.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1",children:["Raw: ",S.raw_prefix]})]})}),e.jsx($e,{children:e.jsx(Qe,{variant:"outline",children:S.id})}),e.jsx($e,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-mono",children:S.priority}),e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx(b,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>X(S,"up"),disabled:S.priority===1,children:e.jsx(or,{className:"h-3 w-3"})}),e.jsx(b,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>X(S,"down"),children:e.jsx(Dl,{className:"h-3 w-3"})})]})]})}),e.jsx($e,{className:"text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-2",children:[e.jsx(b,{variant:"ghost",size:"icon",onClick:()=>B(S),children:e.jsx(an,{className:"h-4 w-4"})}),e.jsx(b,{variant:"ghost",size:"icon",onClick:()=>G(S.id),children:e.jsx(Pe,{className:"h-4 w-4 text-destructive"})})]})})]},S.id))})]})}),e.jsx("div",{className:"md:hidden p-4 space-y-4",children:c.map(S=>e.jsx(Ve,{className:"p-4",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-semibold",children:S.name}),S.enabled&&e.jsx(Qe,{variant:"default",className:"text-xs",children:"启用"})]}),e.jsx(Qe,{variant:"outline",className:"mt-1 text-xs",children:S.id})]}),e.jsx(Ge,{checked:S.enabled,onCheckedChange:()=>z(S)})]}),e.jsxs("div",{className:"text-sm space-y-1",children:[e.jsxs("div",{className:"text-muted-foreground",children:[e.jsx("span",{className:"font-medium",children:"Raw: "}),e.jsx("span",{className:"break-all",children:S.raw_prefix})]}),e.jsxs("div",{className:"text-muted-foreground",children:[e.jsx("span",{className:"font-medium",children:"优先级: "}),e.jsx("span",{className:"font-mono",children:S.priority})]})]}),e.jsxs("div",{className:"flex items-center gap-2 pt-2 border-t",children:[e.jsxs(b,{variant:"outline",size:"sm",className:"flex-1",onClick:()=>B(S),children:[e.jsx(an,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>X(S,"up"),disabled:S.priority===1,children:e.jsx(or,{className:"h-4 w-4"})}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>X(S,"down"),children:e.jsx(Dl,{className:"h-4 w-4"})}),e.jsx(b,{variant:"destructive",size:"sm",onClick:()=>G(S.id),children:e.jsx(Pe,{className:"h-4 w-4"})})]})]})},S.id))})]}),e.jsx(Qt,{open:v,onOpenChange:k,children:e.jsxs(Ut,{className:"max-w-lg",children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:"添加镜像源"}),e.jsx(ss,{children:"添加新的 Git 镜像源配置"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"add-id",children:"镜像源 ID *"}),e.jsx(ce,{id:"add-id",placeholder:"例如: my-mirror",value:R.id,onChange:S=>F({...R,id:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"add-name",children:"名称 *"}),e.jsx(ce,{id:"add-name",placeholder:"例如: 我的镜像源",value:R.name,onChange:S=>F({...R,name:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"add-raw",children:"Raw 文件前缀 *"}),e.jsx(ce,{id:"add-raw",placeholder:"https://example.com/raw",value:R.raw_prefix,onChange:S=>F({...R,raw_prefix:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"add-clone",children:"克隆前缀 *"}),e.jsx(ce,{id:"add-clone",placeholder:"https://example.com/clone",value:R.clone_prefix,onChange:S=>F({...R,clone_prefix:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"add-priority",children:"优先级"}),e.jsx(ce,{id:"add-priority",type:"number",min:"1",value:R.priority,onChange:S=>F({...R,priority:parseInt(S.target.value)||1})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"add-enabled",checked:R.enabled,onCheckedChange:S=>F({...R,enabled:S})}),e.jsx(N,{htmlFor:"add-enabled",children:"启用此镜像源"})]})]}),e.jsxs(os,{children:[e.jsx(b,{variant:"outline",onClick:()=>k(!1),children:"取消"}),e.jsx(b,{onClick:M,children:"添加"})]})]})}),e.jsx(Qt,{open:T,onOpenChange:E,children:e.jsxs(Ut,{className:"max-w-lg",children:[e.jsxs(Bt,{children:[e.jsx(Ht,{children:"编辑镜像源"}),e.jsx(ss,{children:"修改镜像源配置"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{children:"镜像源 ID"}),e.jsx(ce,{value:R.id,disabled:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"edit-name",children:"名称 *"}),e.jsx(ce,{id:"edit-name",value:R.name,onChange:S=>F({...R,name:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"edit-raw",children:"Raw 文件前缀 *"}),e.jsx(ce,{id:"edit-raw",value:R.raw_prefix,onChange:S=>F({...R,raw_prefix:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"edit-clone",children:"克隆前缀 *"}),e.jsx(ce,{id:"edit-clone",value:R.clone_prefix,onChange:S=>F({...R,clone_prefix:S.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{htmlFor:"edit-priority",children:"优先级"}),e.jsx(ce,{id:"edit-priority",type:"number",min:"1",value:R.priority,onChange:S=>F({...R,priority:parseInt(S.target.value)||1})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Ge,{id:"edit-enabled",checked:R.enabled,onCheckedChange:S=>F({...R,enabled:S})}),e.jsx(N,{htmlFor:"edit-enabled",children:"启用此镜像源"})]})]}),e.jsxs(os,{children:[e.jsx(b,{variant:"outline",onClick:()=>E(!1),children:"取消"}),e.jsx(b,{onClick:Z,children:"保存"})]})]})})]})})}const Yc=u.forwardRef(({className:n,...r},c)=>e.jsx(zp,{ref:c,className:K("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",n),...r}));Yc.displayName=zp.displayName;const m2=u.forwardRef(({className:n,...r},c)=>e.jsx(Ap,{ref:c,className:K("aspect-square h-full w-full",n),...r}));m2.displayName=Ap.displayName;const Xc=u.forwardRef(({className:n,...r},c)=>e.jsx(Mp,{ref:c,className:K("flex h-full w-full items-center justify-center rounded-full bg-muted",n),...r}));Xc.displayName=Mp.displayName;function h2(){return"webui_"+Math.random().toString(36).substr(2,9)+"_"+Date.now().toString(36)}function x2(){const n="maibot_webui_user_id";let r=localStorage.getItem(n);return r||(r=h2(),localStorage.setItem(n,r)),r}function f2(){return localStorage.getItem("maibot_webui_user_name")||"WebUI用户"}function p2(n){localStorage.setItem("maibot_webui_user_name",n)}function g2(){const[n,r]=u.useState([]),[c,d]=u.useState(""),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,w]=u.useState(!1),[v,k]=u.useState(!0),[T,E]=u.useState(f2()),[R,F]=u.useState(!1),[U,M]=u.useState(""),[Z,G]=u.useState({}),z=u.useRef(x2()),B=u.useRef(null),X=u.useRef(null),S=u.useRef(null),O=u.useRef(0),se=u.useRef(new Set),{toast:he}=Rt(),ye=Q=>(O.current+=1,`${Q}-${Date.now()}-${O.current}-${Math.random().toString(36).substr(2,9)}`),be=u.useCallback(()=>{X.current?.scrollIntoView({behavior:"smooth"})},[]);u.useEffect(()=>{be()},[n,be]);const pe=u.useCallback(async()=>{k(!0);try{const Q=`/api/chat/history?user_id=${z.current}&limit=50`;console.log("[Chat] 正在加载历史消息:",Q);const de=await fetch(Q);if(console.log("[Chat] 历史消息响应状态:",de.status,de.statusText),console.log("[Chat] 响应 Content-Type:",de.headers.get("content-type")),de.ok){const ge=await de.text();console.log("[Chat] 响应内容前100字符:",ge.substring(0,100));try{const le=JSON.parse(ge);if(console.log("[Chat] 解析后的数据:",le),le.messages&&le.messages.length>0){const L=le.messages.map($=>({id:$.id,type:$.type,content:$.content,timestamp:$.timestamp,sender:{name:$.sender_name||($.is_bot?"麦麦":"WebUI用户"),user_id:$.user_id,is_bot:$.is_bot}}));r(L),console.log("[Chat] 已加载历史消息数量:",L.length),L.forEach($=>{if($.type==="bot"){const D=`bot-${$.content}-${Math.floor($.timestamp*1e3)}`;se.current.add(D)}})}else console.log("[Chat] 没有历史消息")}catch(le){console.error("[Chat] JSON 解析失败:",le),console.error("[Chat] 原始响应内容:",ge)}}else{console.error("[Chat] 响应失败:",de.status);const ge=await de.text();console.error("[Chat] 错误响应内容:",ge.substring(0,200))}}catch(Q){console.error("[Chat] 加载历史消息失败:",Q)}finally{k(!1)}},[]),je=u.useCallback(()=>{if(B.current?.readyState===WebSocket.OPEN||B.current?.readyState===WebSocket.CONNECTING){console.log("WebSocket 已存在,跳过连接");return}j(!0);const de=`${window.location.protocol==="https:"?"wss:":"ws:"}//${window.location.host}/api/chat/ws?user_id=${encodeURIComponent(z.current)}&user_name=${encodeURIComponent(T)}`;console.log("正在连接 WebSocket:",de);try{const ge=new WebSocket(de);B.current=ge,ge.onopen=()=>{x(!0),j(!1),console.log("WebSocket 已连接")},ge.onmessage=le=>{try{const L=JSON.parse(le.data);switch(L.type){case"session_info":G({session_id:L.session_id,user_id:L.user_id,user_name:L.user_name,bot_name:L.bot_name});break;case"system":r($=>[...$,{id:ye("sys"),type:"system",content:L.content||"",timestamp:L.timestamp||Date.now()/1e3}]);break;case"user_message":r($=>[...$,{id:L.message_id||ye("user"),type:"user",content:L.content||"",timestamp:L.timestamp||Date.now()/1e3,sender:L.sender}]);break;case"bot_message":{w(!1);const $=`bot-${L.content}-${Math.floor((L.timestamp||0)*1e3)}`;if(se.current.has($)){console.log("跳过重复的机器人消息");break}if(se.current.add($),se.current.size>100){const D=se.current.values().next().value;D&&se.current.delete(D)}r(D=>[...D,{id:ye("bot"),type:"bot",content:L.content||"",timestamp:L.timestamp||Date.now()/1e3,sender:L.sender}]);break}case"typing":w(L.is_typing||!1);break;case"error":r($=>[...$,{id:ye("error"),type:"error",content:L.content||"发生错误",timestamp:L.timestamp||Date.now()/1e3}]),he({title:"错误",description:L.content,variant:"destructive"});break;case"pong":break;default:console.log("未知消息类型:",L.type)}}catch(L){console.error("解析消息失败:",L)}},ge.onclose=()=>{x(!1),j(!1),B.current=null,console.log("WebSocket 已断开"),S.current&&clearTimeout(S.current),S.current=window.setTimeout(()=>{_e.current||je()},5e3)},ge.onerror=le=>{console.error("WebSocket 错误:",le),j(!1)}}catch(ge){console.error("创建 WebSocket 失败:",ge),j(!1)}},[he,T]),_e=u.useRef(!1);u.useEffect(()=>{_e.current=!1,pe();const Q=setTimeout(()=>{_e.current||je()},100),de=setInterval(()=>{B.current?.readyState===WebSocket.OPEN&&B.current.send(JSON.stringify({type:"ping"}))},3e4);return()=>{_e.current=!0,clearTimeout(Q),clearInterval(de),S.current&&(clearTimeout(S.current),S.current=null),B.current&&(B.current.close(),B.current=null)}},[je,pe]);const y=u.useCallback(()=>{!c.trim()||!B.current||B.current.readyState!==WebSocket.OPEN||(B.current.send(JSON.stringify({type:"message",content:c.trim(),user_name:T})),d(""))},[c,T]),q=Q=>{Q.key==="Enter"&&!Q.shiftKey&&(Q.preventDefault(),y())},H=()=>{M(T),F(!0)},ie=()=>{const Q=U.trim()||"WebUI用户";E(Q),p2(Q),F(!1),B.current?.readyState===WebSocket.OPEN&&B.current.send(JSON.stringify({type:"update_nickname",user_name:Q}))},_=()=>{M(""),F(!1)},me=Q=>new Date(Q*1e3).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"}),xe=()=>{B.current&&B.current.close(),je()};return e.jsxs("div",{className:"h-full flex flex-col",children:[e.jsx("div",{className:"shrink-0 border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:e.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 sm:gap-3 min-w-0",children:[e.jsx(Yc,{className:"h-8 w-8 sm:h-10 sm:w-10 shrink-0",children:e.jsx(Xc,{className:"bg-primary/10 text-primary",children:e.jsx(ar,{className:"h-4 w-4 sm:h-5 sm:w-5"})})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h1",{className:"text-base sm:text-lg font-semibold truncate",children:Z.bot_name||"麦麦"}),e.jsx("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:h?e.jsxs(e.Fragment,{children:[e.jsx(_y,{className:"h-3 w-3 text-green-500"}),e.jsx("span",{className:"text-green-600 dark:text-green-400",children:"已连接"})]}):f?e.jsxs(e.Fragment,{children:[e.jsx(vs,{className:"h-3 w-3 animate-spin"}),e.jsx("span",{children:"连接中..."})]}):e.jsxs(e.Fragment,{children:[e.jsx(Sy,{className:"h-3 w-3 text-red-500"}),e.jsx("span",{className:"text-red-600 dark:text-red-400",children:"未连接"})]})})]})]}),e.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[v&&e.jsx(vs,{className:"h-4 w-4 animate-spin text-muted-foreground"}),e.jsx(b,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:xe,disabled:f,title:"重新连接",children:e.jsx(ps,{className:K("h-4 w-4",f&&"animate-spin")})})]})]}),e.jsxs("div",{className:"hidden sm:flex items-center gap-2 mt-2 text-sm text-muted-foreground",children:[e.jsx(Ic,{className:"h-3 w-3"}),e.jsx("span",{children:"当前身份:"}),R?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{value:U,onChange:Q=>M(Q.target.value),onKeyDown:Q=>{Q.key==="Enter"&&ie(),Q.key==="Escape"&&_()},className:"h-7 w-32",placeholder:"输入昵称",autoFocus:!0}),e.jsx(b,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:ie,children:"保存"}),e.jsx(b,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:_,children:"取消"})]}):e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"font-medium text-foreground",children:T}),e.jsx(b,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0",onClick:H,title:"修改昵称",children:e.jsx(Cy,{className:"h-3 w-3"})})]})]})]})}),e.jsx("div",{className:"flex-1 overflow-hidden",children:e.jsx(Ie,{className:"h-full",children:e.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto space-y-3 sm:space-y-4",children:[n.length===0&&!v&&e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-muted-foreground",children:[e.jsx(ar,{className:"h-12 w-12 mb-4 opacity-50"}),e.jsxs("p",{className:"text-sm",children:["开始与 ",Z.bot_name||"麦麦"," 对话吧!"]})]}),n.map(Q=>e.jsxs("div",{className:K("flex gap-2 sm:gap-3",Q.type==="user"&&"flex-row-reverse",Q.type==="system"&&"justify-center",Q.type==="error"&&"justify-center"),children:[Q.type==="system"&&e.jsx("div",{className:"text-xs text-muted-foreground bg-muted/50 px-3 py-1 rounded-full max-w-[90%]",children:Q.content}),Q.type==="error"&&e.jsx("div",{className:"text-xs text-red-600 dark:text-red-400 bg-red-100 dark:bg-red-900/30 px-3 py-1 rounded-full max-w-[90%]",children:Q.content}),(Q.type==="user"||Q.type==="bot")&&e.jsxs(e.Fragment,{children:[e.jsx(Yc,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:e.jsx(Xc,{className:K("text-xs",Q.type==="bot"?"bg-primary/10 text-primary":"bg-secondary text-secondary-foreground"),children:Q.type==="bot"?e.jsx(ar,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}):e.jsx(Ic,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),e.jsxs("div",{className:K("flex flex-col gap-1 max-w-[75%] sm:max-w-[70%]",Q.type==="user"&&"items-end"),children:[e.jsxs("div",{className:"flex items-center gap-2 text-[10px] sm:text-xs text-muted-foreground",children:[e.jsx("span",{className:"hidden sm:inline",children:Q.sender?.name||(Q.type==="bot"?Z.bot_name:T)}),e.jsx("span",{children:me(Q.timestamp)})]}),e.jsx("div",{className:K("rounded-2xl px-3 py-2 text-sm whitespace-pre-wrap break-words",Q.type==="bot"?"bg-muted rounded-tl-sm":"bg-primary text-primary-foreground rounded-tr-sm"),children:Q.content})]})]})]},Q.id)),p&&e.jsxs("div",{className:"flex gap-2 sm:gap-3",children:[e.jsx(Yc,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:e.jsx(Xc,{className:"bg-primary/10 text-primary",children:e.jsx(ar,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),e.jsx("div",{className:"bg-muted rounded-2xl rounded-tl-sm px-4 py-3",children:e.jsxs("div",{className:"flex gap-1",children:[e.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"0ms"}}),e.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"150ms"}}),e.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"300ms"}})]})})]}),e.jsx("div",{ref:X})]})})}),e.jsx("div",{className:"shrink-0 border-t bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:e.jsx("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{value:c,onChange:Q=>d(Q.target.value),onKeyDown:q,placeholder:h?"输入消息...":"等待连接...",disabled:!h,className:"flex-1 h-10 sm:h-10"}),e.jsx(b,{onClick:y,disabled:!h||!c.trim(),size:"icon",className:"h-10 w-10 shrink-0",children:e.jsx(ky,{className:"h-4 w-4"})})]})})})]})}function j2(){const n=ua(),[r,c]=u.useState(!0);return u.useEffect(()=>{let d=!1;return(async()=>{try{const x=await Fu();!d&&!x&&n({to:"/auth"})}catch{d||n({to:"/auth"})}finally{d||c(!1)}})(),()=>{d=!0}},[n]),{checking:r}}async function v2(){return await Fu()}const b2=ei("pointer-events-none inline-flex select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono font-medium opacity-100",{variants:{size:{sm:"h-5 text-[10px]",default:"h-6 text-xs",lg:"h-7 text-sm"}},defaultVariants:{size:"default"}}),Ag=u.forwardRef(({className:n,size:r,abbrTitle:c,children:d,...h},x)=>e.jsx("kbd",{className:K(b2({size:r,className:n})),ref:x,...h,children:c?e.jsx("abbr",{title:c,children:d}):d}));Ag.displayName="Kbd";const y2=[{icon:to,title:"首页",description:"查看仪表板概览",path:"/",category:"概览"},{icon:Ta,title:"麦麦主程序配置",description:"配置麦麦的核心设置",path:"/config/bot",category:"配置"},{icon:ng,title:"麦麦模型提供商配置",description:"配置模型提供商",path:"/config/modelProvider",category:"配置"},{icon:ig,title:"麦麦模型配置",description:"配置模型参数",path:"/config/model",category:"配置"},{icon:Lu,title:"表情包管理",description:"管理麦麦的表情包",path:"/resource/emoji",category:"资源"},{icon:Pn,title:"表达方式管理",description:"管理麦麦的表达方式",path:"/resource/expression",category:"资源"},{icon:rg,title:"人物信息管理",description:"管理人物信息",path:"/resource/person",category:"资源"},{icon:Ty,title:"统计信息",description:"查看使用统计",path:"/statistics",category:"监控"},{icon:ln,title:"插件市场",description:"浏览和安装插件",path:"/plugins",category:"扩展"},{icon:Uu,title:"日志查看器",description:"查看系统日志",path:"/logs",category:"监控"},{icon:ti,title:"系统设置",description:"配置系统参数",path:"/settings",category:"系统"}];function N2({open:n,onOpenChange:r}){const[c,d]=u.useState(""),[h,x]=u.useState(0),f=ua(),j=y2.filter(v=>v.title.toLowerCase().includes(c.toLowerCase())||v.description.toLowerCase().includes(c.toLowerCase())||v.category.toLowerCase().includes(c.toLowerCase()));u.useEffect(()=>{n&&(d(""),x(0))},[n]);const p=u.useCallback(v=>{f({to:v}),r(!1)},[f,r]),w=u.useCallback(v=>{v.key==="ArrowDown"?(v.preventDefault(),x(k=>(k+1)%j.length)):v.key==="ArrowUp"?(v.preventDefault(),x(k=>(k-1+j.length)%j.length)):v.key==="Enter"&&j[h]&&(v.preventDefault(),p(j[h].path))},[j,h,p]);return e.jsx(Qt,{open:n,onOpenChange:r,children:e.jsxs(Ut,{className:"max-w-2xl p-0 gap-0",children:[e.jsxs(Bt,{className:"px-4 pt-4 pb-0",children:[e.jsx(Ht,{className:"sr-only",children:"搜索"}),e.jsxs("div",{className:"relative",children:[e.jsx(Os,{className:"absolute left-3 top-1/2 h-5 w-5 -translate-y-1/2 text-muted-foreground"}),e.jsx(ce,{value:c,onChange:v=>{d(v.target.value),x(0)},onKeyDown:w,placeholder:"搜索页面...",className:"h-12 pl-11 text-base border-0 focus-visible:ring-0 shadow-none",autoFocus:!0})]})]}),e.jsx("div",{className:"border-t",children:e.jsx(Ie,{className:"h-[400px]",children:j.length>0?e.jsx("div",{className:"p-2",children:j.map((v,k)=>{const T=v.icon;return e.jsxs("button",{onClick:()=>p(v.path),onMouseEnter:()=>x(k),className:K("w-full flex items-center gap-3 px-3 py-2.5 rounded-md text-left transition-colors",k===h?"bg-accent text-accent-foreground":"hover:bg-accent/50"),children:[e.jsx(T,{className:"h-5 w-5 flex-shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-sm",children:v.title}),e.jsx("div",{className:"text-xs text-muted-foreground truncate",children:v.description})]}),e.jsx("div",{className:"text-xs text-muted-foreground px-2 py-1 bg-muted rounded",children:v.category})]},v.path)})}):e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[e.jsx(Os,{className:"h-12 w-12 text-muted-foreground/50 mb-4"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:c?"未找到匹配的页面":"输入关键词开始搜索"})]})})}),e.jsx("div",{className:"border-t px-4 py-3 flex items-center justify-between text-xs text-muted-foreground",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↑"}),e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↓"}),"导航"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Enter"}),"选择"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Esc"}),"关闭"]})]})})]})})}const w2=Jb,_2=Ib,S2=Pb,Mg=u.forwardRef(({className:n,sideOffset:r=4,...c},d)=>e.jsx(Zb,{children:e.jsx(Yp,{ref:d,sideOffset:r,className:K("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",n),...c})}));Mg.displayName=Yp.displayName;function C2({children:n}){const{checking:r}=j2(),[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),{theme:p,setTheme:w}=Hu(),v=Pv();if(u.useEffect(()=>{const F=U=>{(U.metaKey||U.ctrlKey)&&U.key==="k"&&(U.preventDefault(),j(!0))};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[]),r)return e.jsx("div",{className:"flex h-screen items-center justify-center bg-background",children:e.jsx("div",{className:"text-muted-foreground",children:"正在验证登录状态..."})});const k=[{title:"概览",items:[{icon:to,label:"首页",path:"/"}]},{title:"麦麦配置编辑",items:[{icon:Ta,label:"麦麦主程序配置",path:"/config/bot"},{icon:ng,label:"AI模型厂商配置",path:"/config/modelProvider",tourId:"sidebar-model-provider"},{icon:ig,label:"模型管理与分配",path:"/config/model",tourId:"sidebar-model-management"},{icon:Vf,label:"麦麦适配器配置",path:"/config/adapter"}]},{title:"麦麦资源管理",items:[{icon:Lu,label:"表情包管理",path:"/resource/emoji"},{icon:Pn,label:"表达方式管理",path:"/resource/expression"},{icon:rg,label:"人物信息管理",path:"/resource/person"},{icon:lg,label:"知识库图谱可视化",path:"/resource/knowledge-graph"}]},{title:"扩展与监控",items:[{icon:ln,label:"插件市场",path:"/plugins"},{icon:Vf,label:"插件配置",path:"/plugin-config"},{icon:Uu,label:"日志查看器",path:"/logs"},{icon:Pn,label:"本地聊天室",path:"/chat"}]},{title:"系统",items:[{icon:ti,label:"系统设置",path:"/settings"}]}],E=p==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":p,R=async()=>{await IN()};return e.jsx(w2,{delayDuration:300,children:e.jsxs("div",{className:"flex h-screen overflow-hidden",children:[e.jsxs("aside",{className:K("fixed inset-y-0 left-0 z-50 flex flex-col border-r bg-card transition-all duration-300 lg:relative lg:z-0","w-64 lg:w-auto",c?"lg:w-64":"lg:w-16",h?"translate-x-0":"-translate-x-full lg:translate-x-0"),children:[e.jsx("div",{className:"flex h-16 items-center border-b px-4",children:e.jsxs("div",{className:K("relative flex items-center justify-center flex-1 transition-all overflow-hidden","lg:flex-1",!c&&"lg:flex-none lg:w-8"),children:[e.jsxs("div",{className:K("flex items-baseline gap-2",!c&&"lg:hidden"),children:[e.jsx("span",{className:"font-bold text-xl text-primary-gradient whitespace-nowrap",children:"MaiBot WebUI"}),e.jsx("span",{className:"text-xs text-primary/60 whitespace-nowrap",children:RN()})]}),!c&&e.jsx("span",{className:"hidden lg:block font-bold text-primary-gradient text-2xl",children:"M"})]})}),e.jsx(Ie,{className:K("flex-1 overflow-x-hidden",!c&&"lg:w-16"),children:e.jsx("nav",{className:K("p-4",!c&&"lg:p-2 lg:w-16"),children:e.jsx("ul",{className:K("space-y-6",!c&&"lg:space-y-3 lg:w-full"),children:k.map((F,U)=>e.jsxs("li",{children:[e.jsx("div",{className:K("px-3 h-[1.25rem]","mb-2",!c&&"lg:mb-1 lg:invisible"),children:e.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground/60 whitespace-nowrap",children:F.title})}),!c&&U>0&&e.jsx("div",{className:"hidden lg:block mb-2 border-t border-border"}),e.jsx("ul",{className:"space-y-1",children:F.items.map(M=>{const Z=v({to:M.path}),G=M.icon,z=e.jsxs(e.Fragment,{children:[Z&&e.jsx("div",{className:"absolute left-0 top-1/2 h-8 w-1 -translate-y-1/2 rounded-r-full bg-primary transition-opacity duration-300"}),e.jsxs("div",{className:K("flex items-center transition-all duration-300",c?"gap-3":"gap-3 lg:gap-0"),children:[e.jsx(G,{className:K("h-5 w-5 flex-shrink-0",Z&&"text-primary"),strokeWidth:2,fill:"none"}),e.jsx("span",{className:K("text-sm font-medium whitespace-nowrap transition-all duration-300",Z&&"font-semibold",c?"opacity-100 max-w-[200px]":"opacity-100 max-w-[200px] lg:opacity-0 lg:max-w-0 lg:overflow-hidden"),children:M.label})]})]});return e.jsx("li",{className:"relative",children:e.jsxs(_2,{children:[e.jsx(S2,{asChild:!0,children:e.jsx(Vc,{to:M.path,"data-tour":M.tourId,className:K("relative flex items-center rounded-lg py-2 transition-all duration-300","hover:bg-accent hover:text-accent-foreground",Z?"bg-accent text-foreground":"text-muted-foreground hover:text-foreground",c?"px-3":"px-3 lg:px-0 lg:justify-center lg:w-12 lg:mx-auto"),onClick:()=>x(!1),children:z})}),!c&&e.jsx(Mg,{side:"right",className:"hidden lg:block",children:e.jsx("p",{children:M.label})})]})},M.path)})})]},F.title))})})})]}),h&&e.jsx("div",{className:"fixed inset-0 z-40 bg-black/50 lg:hidden",onClick:()=>x(!1)}),e.jsxs("div",{className:"flex flex-1 flex-col overflow-hidden",children:[e.jsxs("header",{className:"flex h-16 items-center justify-between border-b bg-card/80 backdrop-blur-md px-4 sticky top-0 z-10",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>x(!h),className:"rounded-lg p-2 hover:bg-accent lg:hidden",children:e.jsx(Ey,{className:"h-5 w-5"})}),e.jsx("button",{onClick:()=>d(!c),className:"hidden rounded-lg p-2 hover:bg-accent lg:block",title:c?"收起侧边栏":"展开侧边栏",children:e.jsx(nn,{className:K("h-5 w-5 transition-transform",!c&&"rotate-180")})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:()=>j(!0),className:"relative hidden md:flex items-center w-64 h-9 pl-9 pr-16 bg-background/50 border rounded-md hover:bg-accent/50 transition-colors text-left",children:[e.jsx(Os,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"搜索..."}),e.jsxs(Ag,{size:"sm",className:"absolute right-2 top-1/2 -translate-y-1/2",children:[e.jsx("span",{className:"text-xs",children:"⌘"}),"K"]})]}),e.jsx(N2,{open:f,onOpenChange:j}),e.jsxs(b,{variant:"ghost",size:"sm",onClick:()=>window.open("https://docs.mai-mai.org","_blank"),className:"gap-2",title:"查看麦麦文档",children:[e.jsx(zy,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:"麦麦文档"})]}),e.jsx("button",{onClick:F=>{zN(E==="dark"?"light":"dark",w,F)},className:"rounded-lg p-2 hover:bg-accent",title:E==="dark"?"切换到浅色模式":"切换到深色模式",children:E==="dark"?e.jsx(eg,{className:"h-5 w-5"}):e.jsx(tg,{className:"h-5 w-5"})}),e.jsx("div",{className:"h-6 w-px bg-border"}),e.jsxs(b,{variant:"ghost",size:"sm",onClick:R,className:"gap-2",title:"登出系统",children:[e.jsx(Ay,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:"登出"})]})]})]}),e.jsx("main",{className:"flex-1 overflow-hidden bg-background",children:n})]})]})})}function k2(n){const r=n.split(` -`).slice(1),c=[];for(const d of r){const h=d.trim();if(!h.startsWith("at "))continue;const x=h.match(/at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?$/);x?c.push({functionName:x[1]||"",fileName:x[2],lineNumber:x[3],columnNumber:x[4],raw:h}):c.push({functionName:"",fileName:"",lineNumber:"",columnNumber:"",raw:h})}return c}function T2({error:n,errorInfo:r}){const[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),p=n.stack?k2(n.stack):[],w=async()=>{const v=` -Error: ${n.name} -Message: ${n.message} - -Stack Trace: -${n.stack||"No stack trace available"} - -Component Stack: -${r?.componentStack||"No component stack available"} - -URL: ${window.location.href} -User Agent: ${navigator.userAgent} -Time: ${new Date().toISOString()} - `.trim();try{await navigator.clipboard.writeText(v),j(!0),setTimeout(()=>j(!1),2e3)}catch(k){console.error("Failed to copy:",k)}};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(al,{variant:"destructive",className:"border-red-500/50 bg-red-500/10",children:[e.jsx(pa,{className:"h-4 w-4"}),e.jsxs(ll,{className:"font-mono text-sm",children:[e.jsxs("span",{className:"font-semibold",children:[n.name,":"]})," ",n.message]})]}),p.length>0&&e.jsxs(Du,{open:c,onOpenChange:d,children:[e.jsx(Ou,{asChild:!0,children:e.jsxs(b,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[e.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[e.jsx(My,{className:"h-4 w-4"}),"Stack Trace (",p.length," frames)"]}),c?e.jsx(or,{className:"h-4 w-4"}):e.jsx(Dl,{className:"h-4 w-4"})]})}),e.jsx(Ru,{children:e.jsx(Ie,{className:"h-[280px] rounded-md border bg-muted/30",children:e.jsx("div",{className:"p-3 space-y-1",children:p.map((v,k)=>e.jsx("div",{className:"font-mono text-xs p-2 rounded hover:bg-muted/50 transition-colors",children:e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsxs("span",{className:"text-muted-foreground w-6 text-right flex-shrink-0",children:[k+1,"."]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("span",{className:"text-primary font-medium",children:v.functionName}),v.fileName&&e.jsxs("div",{className:"text-muted-foreground mt-0.5 break-all",children:[v.fileName,v.lineNumber&&e.jsxs("span",{className:"text-yellow-600 dark:text-yellow-400",children:[":",v.lineNumber,":",v.columnNumber]})]})]})]})},k))})})})]}),r?.componentStack&&e.jsxs(Du,{open:h,onOpenChange:x,children:[e.jsx(Ou,{asChild:!0,children:e.jsxs(b,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[e.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[e.jsx(pa,{className:"h-4 w-4"}),"Component Stack"]}),h?e.jsx(or,{className:"h-4 w-4"}):e.jsx(Dl,{className:"h-4 w-4"})]})}),e.jsx(Ru,{children:e.jsx(Ie,{className:"h-[200px] rounded-md border bg-muted/30",children:e.jsx("pre",{className:"p-3 font-mono text-xs whitespace-pre-wrap text-muted-foreground",children:r.componentStack})})})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:w,className:"w-full",children:f?e.jsxs(e.Fragment,{children:[e.jsx(ga,{className:"mr-2 h-4 w-4 text-green-500"}),"已复制到剪贴板"]}):e.jsxs(e.Fragment,{children:[e.jsx(Jc,{className:"mr-2 h-4 w-4"}),"复制错误信息"]})})]})}function Dg({error:n,errorInfo:r}){const c=()=>{window.location.href="/"},d=()=>{window.location.reload()};return e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background p-4",children:e.jsxs(Ve,{className:"w-full max-w-2xl shadow-lg",children:[e.jsxs(pt,{className:"text-center pb-2",children:[e.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30 mb-4",children:e.jsx(pa,{className:"h-8 w-8 text-red-600 dark:text-red-400"})}),e.jsx(gt,{className:"text-2xl font-bold",children:"页面出现了问题"}),e.jsx(Kt,{className:"text-base mt-2",children:"应用程序遇到了意外错误。您可以尝试刷新页面或返回首页。"})]}),e.jsxs(yt,{className:"space-y-4",children:[e.jsx(T2,{error:n,errorInfo:r}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 pt-2",children:[e.jsxs(b,{onClick:d,className:"flex-1",children:[e.jsx(ps,{className:"mr-2 h-4 w-4"}),"刷新页面"]}),e.jsxs(b,{onClick:c,variant:"outline",className:"flex-1",children:[e.jsx(to,{className:"mr-2 h-4 w-4"}),"返回首页"]})]}),e.jsx("p",{className:"text-xs text-center text-muted-foreground pt-2",children:"如果问题持续存在,请将错误信息复制并反馈给开发者"})]})]})})}class E2 extends u.Component{constructor(r){super(r),this.state={hasError:!1,error:null,errorInfo:null}}static getDerivedStateFromError(r){return{hasError:!0,error:r}}componentDidCatch(r,c){console.error("ErrorBoundary caught an error:",r,c),this.setState({errorInfo:c})}handleReset=()=>{this.setState({hasError:!1,error:null,errorInfo:null})};render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback:e.jsx(Dg,{error:this.state.error,errorInfo:this.state.errorInfo}):this.props.children}}function Og({error:n}){return e.jsx(Dg,{error:n,errorInfo:null})}const yr=Wv({component:()=>e.jsxs(e.Fragment,{children:[e.jsx(hp,{}),!1]}),beforeLoad:()=>{if(window.location.pathname==="/"&&!v2())throw tb({to:"/auth"})}}),z2=as({getParentRoute:()=>yr,path:"/auth",component:PN}),A2=as({getParentRoute:()=>yr,path:"/setup",component:f0}),ys=as({getParentRoute:()=>yr,id:"protected",component:()=>e.jsx(C2,{children:e.jsx(hp,{})}),errorComponent:({error:n})=>e.jsx(Og,{error:n})}),M2=as({getParentRoute:()=>ys,path:"/",component:TN}),D2=as({getParentRoute:()=>ys,path:"/config/bot",component:T0}),O2=as({getParentRoute:()=>ys,path:"/config/modelProvider",component:P0}),R2=as({getParentRoute:()=>ys,path:"/config/model",component:sw}),L2=as({getParentRoute:()=>ys,path:"/config/adapter",component:lw}),U2=as({getParentRoute:()=>ys,path:"/resource/emoji",component:Tw}),B2=as({getParentRoute:()=>ys,path:"/resource/expression",component:qw}),H2=as({getParentRoute:()=>ys,path:"/resource/person",component:Iw}),q2=as({getParentRoute:()=>ys,path:"/resource/knowledge-graph",component:i1}),G2=as({getParentRoute:()=>ys,path:"/logs",component:U1}),V2=as({getParentRoute:()=>ys,path:"/chat",component:g2}),F2=as({getParentRoute:()=>ys,path:"/plugins",component:r2}),$2=as({getParentRoute:()=>ys,path:"/plugin-config",component:d2}),Q2=as({getParentRoute:()=>ys,path:"/plugin-mirrors",component:u2}),Y2=as({getParentRoute:()=>ys,path:"/settings",component:QN}),X2=as({getParentRoute:()=>yr,path:"*",component:bg}),K2=yr.addChildren([z2,A2,ys.addChildren([M2,D2,O2,R2,L2,U2,B2,H2,q2,F2,$2,Q2,G2,V2,Y2]),X2]),Z2=eb({routeTree:K2,defaultNotFoundComponent:bg,defaultErrorComponent:({error:n})=>e.jsx(Og,{error:n})});function J2({children:n,defaultTheme:r="system",storageKey:c="ui-theme",...d}){const[h,x]=u.useState(()=>localStorage.getItem(c)||r);u.useEffect(()=>{const j=window.document.documentElement;if(j.classList.remove("light","dark"),h==="system"){const p=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";j.classList.add(p);return}j.classList.add(h)},[h]),u.useEffect(()=>{const j=localStorage.getItem("accent-color");if(j){const p=document.documentElement,v={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[j];v&&(p.style.setProperty("--primary",v.hsl),v.gradient?(p.style.setProperty("--primary-gradient",v.gradient),p.classList.add("has-gradient")):(p.style.removeProperty("--primary-gradient"),p.classList.remove("has-gradient")))}},[]);const f={theme:h,setTheme:j=>{localStorage.setItem(c,j),x(j)}};return e.jsx(xg.Provider,{...d,value:f,children:n})}function I2({children:n,defaultEnabled:r=!0,defaultWavesEnabled:c=!0,storageKey:d="enable-animations",wavesStorageKey:h="enable-waves-background"}){const[x,f]=u.useState(()=>{const v=localStorage.getItem(d);return v!==null?v==="true":r}),[j,p]=u.useState(()=>{const v=localStorage.getItem(h);return v!==null?v==="true":c});u.useEffect(()=>{const v=document.documentElement;x?v.classList.remove("no-animations"):v.classList.add("no-animations"),localStorage.setItem(d,String(x))},[x,d]),u.useEffect(()=>{localStorage.setItem(h,String(j))},[j,h]);const w={enableAnimations:x,setEnableAnimations:f,enableWavesBackground:j,setEnableWavesBackground:p};return e.jsx(fg.Provider,{value:w,children:n})}const P2=Wb,Rg=u.forwardRef(({className:n,...r},c)=>e.jsx(Xp,{ref:c,className:K("fixed bottom-0 right-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:max-w-[420px] gap-2",n),...r}));Rg.displayName=Xp.displayName;const W2=ei("group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-slide-in-from-right data-[state=open]:animate-fade-in data-[state=closed]:animate-slide-out-to-right data-[state=closed]:animate-fade-out data-[swipe=end]:animate-slide-out-to-right",{variants:{variant:{default:"border bg-primary/5 text-foreground backdrop-blur-sm",destructive:"destructive group border-destructive bg-destructive/10 text-destructive-foreground backdrop-blur-sm"}},defaultVariants:{variant:"default"}}),Lg=u.forwardRef(({className:n,variant:r,...c},d)=>e.jsx(Kp,{ref:d,className:K(W2({variant:r}),n),...c}));Lg.displayName=Kp.displayName;const e_=u.forwardRef(({className:n,...r},c)=>e.jsx(Zp,{ref:c,className:K("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",n),...r}));e_.displayName=Zp.displayName;const Ug=u.forwardRef(({className:n,...r},c)=>e.jsx(Jp,{ref:c,className:K("absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",n),"toast-close":"",...r,children:e.jsx(si,{className:"h-4 w-4"})}));Ug.displayName=Jp.displayName;const Bg=u.forwardRef(({className:n,...r},c)=>e.jsx(Ip,{ref:c,className:K("text-sm font-semibold [&+div]:text-xs",n),...r}));Bg.displayName=Ip.displayName;const Hg=u.forwardRef(({className:n,...r},c)=>e.jsx(Pp,{ref:c,className:K("text-sm opacity-90",n),...r}));Hg.displayName=Pp.displayName;function t_(){const{toasts:n}=Rt();return e.jsxs(P2,{children:[n.map(function({id:r,title:c,description:d,action:h,...x}){return e.jsxs(Lg,{...x,children:[e.jsxs("div",{className:"grid gap-1",children:[c&&e.jsx(Bg,{children:c}),d&&e.jsx(Hg,{children:d})]}),h,e.jsx(Ug,{})]},r)}),e.jsx(Rg,{})]})}gN.createRoot(document.getElementById("root")).render(e.jsx(u.StrictMode,{children:e.jsx(E2,{children:e.jsx(J2,{defaultTheme:"system",children:e.jsx(I2,{children:e.jsxs(X0,{children:[e.jsx(sb,{router:Z2}),e.jsx(J0,{}),e.jsx(t_,{})]})})})})})); diff --git a/webui/dist/assets/index-ceRg_XiX.css b/webui/dist/assets/index-ceRg_XiX.css deleted file mode 100644 index 0ac3fa6c..00000000 --- a/webui/dist/assets/index-ceRg_XiX.css +++ /dev/null @@ -1 +0,0 @@ -@charset "UTF-8";*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 0 0% 100%;--foreground: 222.2 84% 4.9%;--card: 0 0% 100%;--card-foreground: 222.2 84% 4.9%;--popover: 0 0% 100%;--popover-foreground: 222.2 84% 4.9%;--primary: 221.2 83.2% 53.3%;--primary-foreground: 210 40% 98%;--primary-gradient: none;--secondary: 210 40% 96.1%;--secondary-foreground: 222.2 47.4% 11.2%;--muted: 210 40% 96.1%;--muted-foreground: 215.4 16.3% 46.9%;--accent: 210 40% 96.1%;--accent-foreground: 222.2 47.4% 11.2%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 210 40% 98%;--border: 214.3 31.8% 91.4%;--input: 214.3 31.8% 91.4%;--ring: 221.2 83.2% 53.3%;--radius: .5rem;--chart-1: 221.2 83.2% 53.3%;--chart-2: 160 60% 45%;--chart-3: 30 80% 55%;--chart-4: 280 65% 60%;--chart-5: 340 75% 55%}.dark{--background: 222.2 84% 4.9%;--foreground: 210 40% 98%;--card: 222.2 84% 4.9%;--card-foreground: 210 40% 98%;--popover: 222.2 84% 4.9%;--popover-foreground: 210 40% 98%;--primary: 217.2 91.2% 59.8%;--primary-foreground: 222.2 47.4% 11.2%;--primary-gradient: none;--secondary: 217.2 32.6% 17.5%;--secondary-foreground: 210 40% 98%;--muted: 217.2 32.6% 17.5%;--muted-foreground: 215 20.2% 65.1%;--accent: 217.2 32.6% 17.5%;--accent-foreground: 210 40% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 210 40% 98%;--border: 217.2 32.6% 17.5%;--input: 217.2 32.6% 17.5%;--ring: 224.3 76.3% 48%;--chart-1: 217.2 91.2% 59.8%;--chart-2: 160 60% 50%;--chart-3: 30 80% 60%;--chart-4: 280 65% 65%;--chart-5: 340 75% 60%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-1\/4{bottom:25%}.bottom-4{bottom:1rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.left-1\/4{left:25%}.left-2{left:.5rem}.left-2\.5{left:.625rem}.left-3{left:.75rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-1\.5{right:.375rem}.right-1\/4{right:25%}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-1\/4{top:25%}.top-2{top:.5rem}.top-2\.5{top:.625rem}.top-3{top:.75rem}.top-4{top:1rem}.top-\[50\%\]{top:50%}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.order-1{order:1}.order-2{order:2}.col-span-2{grid-column:span 2 / span 2}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-mt-2{margin-top:-.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-10{margin-left:2.5rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-auto{aspect-ratio:auto}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:16 / 9}.size-4{width:1rem;height:1rem}.size-\[--cell-size\]{width:var(--cell-size);height:var(--cell-size)}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[--cell-size\]{height:var(--cell-size)}.h-\[1\.25rem\]{height:1.25rem}.h-\[1px\]{height:1px}.h-\[200px\]{height:200px}.h-\[250px\]{height:250px}.h-\[280px\]{height:280px}.h-\[300px\]{height:300px}.h-\[350px\]{height:350px}.h-\[400px\]{height:400px}.h-\[calc\(100vh-200px\)\]{height:calc(100vh - 200px)}.h-\[calc\(100vh-240px\)\]{height:calc(100vh - 240px)}.h-\[calc\(100vh-260px\)\]{height:calc(100vh - 260px)}.h-\[calc\(100vh-4rem\)\]{height:calc(100vh - 4rem)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\[--radix-context-menu-content-available-height\]{max-height:var(--radix-context-menu-content-available-height)}.max-h-\[--radix-select-content-available-height\]{max-height:var(--radix-select-content-available-height)}.max-h-\[300px\]{max-height:300px}.max-h-\[80vh\]{max-height:80vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[calc\(90vh-120px\)\]{max-height:calc(90vh - 120px)}.max-h-\[calc\(90vh-8rem\)\]{max-height:calc(90vh - 8rem)}.max-h-full{max-height:100%}.max-h-none{max-height:none}.max-h-screen{max-height:100vh}.min-h-0{min-height:0px}.min-h-10{min-height:2.5rem}.min-h-\[100px\]{min-height:100px}.min-h-\[300px\]{min-height:300px}.min-h-\[60px\]{min-height:60px}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-\[--cell-size\]{width:var(--cell-size)}.w-\[100px\]{width:100px}.w-\[120px\]{width:120px}.w-\[130px\]{width:130px}.w-\[1px\]{width:1px}.w-\[65px\]{width:65px}.w-\[95vw\]{width:95vw}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[--cell-size\]{min-width:var(--cell-size)}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[80px\]{min-width:80px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-32{max-width:8rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-\[150px\]{max-width:150px}.max-w-\[200px\]{max-width:200px}.max-w-\[60px\]{max-width:60px}.max-w-\[75\%\]{max-width:75%}.max-w-\[90\%\]{max-width:90%}.max-w-\[95vw\]{max-width:95vw}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\[--radix-context-menu-content-transform-origin\]{transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\[--radix-popover-content-transform-origin\]{transform-origin:var(--radix-popover-content-transform-origin)}.origin-\[--radix-select-content-transform-origin\]{transform-origin:var(--radix-select-content-transform-origin)}.origin-\[--radix-tooltip-content-transform-origin\]{transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.rounded-tr-sm{border-top-right-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-\[1\.5px\]{border-width:1.5px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[--color-border\]{border-color:var(--color-border)}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-500\/50{border-color:#f59e0b80}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-700{--tw-border-opacity: 1;border-color:rgb(29 78 216 / var(--tw-border-opacity, 1))}.border-border{border-color:hsl(var(--border))}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-current{border-color:currentColor}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-green-300{--tw-border-opacity: 1;border-color:rgb(134 239 172 / var(--tw-border-opacity, 1))}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.border-green-600{--tw-border-opacity: 1;border-color:rgb(22 163 74 / var(--tw-border-opacity, 1))}.border-green-700{--tw-border-opacity: 1;border-color:rgb(21 128 61 / var(--tw-border-opacity, 1))}.border-input{border-color:hsl(var(--input))}.border-muted{border-color:hsl(var(--muted))}.border-muted-foreground\/30{border-color:hsl(var(--muted-foreground) / .3)}.border-muted-foreground\/50{border-color:hsl(var(--muted-foreground) / .5)}.border-orange-200{--tw-border-opacity: 1;border-color:rgb(254 215 170 / var(--tw-border-opacity, 1))}.border-orange-600{--tw-border-opacity: 1;border-color:rgb(234 88 12 / var(--tw-border-opacity, 1))}.border-primary{border-color:hsl(var(--primary))}.border-primary\/20{border-color:hsl(var(--primary) / .2)}.border-primary\/30{border-color:hsl(var(--primary) / .3)}.border-primary\/50{border-color:hsl(var(--primary) / .5)}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-red-500\/50{border-color:#ef444480}.border-transparent{border-color:transparent}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-yellow-500\/50{border-color:#eab30880}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\[--color-bg\]{background-color:var(--color-bg)}.bg-accent{background-color:hsl(var(--accent))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-background{background-color:hsl(var(--background))}.bg-background\/50{background-color:hsl(var(--background) / .5)}.bg-background\/80{background-color:hsl(var(--background) / .8)}.bg-background\/95{background-color:hsl(var(--background) / .95)}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-black\/50{background-color:#00000080}.bg-black\/80{background-color:#000c}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-blue-900\/20{background-color:#1e3a8a33}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-card\/80{background-color:hsl(var(--card) / .8)}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-800\/20{background-color:#1f293733}.bg-gray-800\/30{background-color:#1f29374d}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground\/50{background-color:hsl(var(--muted-foreground) / .5)}.bg-muted\/20{background-color:hsl(var(--muted) / .2)}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-orange-600{--tw-bg-opacity: 1;background-color:rgb(234 88 12 / var(--tw-bg-opacity, 1))}.bg-pink-500{--tw-bg-opacity: 1;background-color:rgb(236 72 153 / var(--tw-bg-opacity, 1))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/20{background-color:hsl(var(--primary) / .2)}.bg-primary\/5{background-color:hsl(var(--primary) / .05)}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(168 85 247 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-red-900\/20{background-color:#7f1d1d33}.bg-red-900\/30{background-color:#7f1d1d4d}.bg-secondary{background-color:hsl(var(--secondary))}.bg-secondary\/5{background-color:hsl(var(--secondary) / .05)}.bg-slate-200{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity, 1))}.bg-slate-300{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity, 1))}.bg-slate-400{--tw-bg-opacity: 1;background-color:rgb(148 163 184 / var(--tw-bg-opacity, 1))}.bg-slate-700{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-200{--tw-bg-opacity: 1;background-color:rgb(254 240 138 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-yellow-500\/5{background-color:#eab3080d}.bg-yellow-900\/20{background-color:#713f1233}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-blue-500{--tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-500{--tw-gradient-from: #22c55e var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 197 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-500{--tw-gradient-from: #f97316 var(--tw-gradient-from-position);--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-primary\/5{--tw-gradient-from: hsl(var(--primary) / .05) var(--tw-gradient-from-position);--tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-500{--tw-gradient-from: #a855f7 var(--tw-gradient-from-position);--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-500{--tw-gradient-from: #ef4444 var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 68 68 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-200{--tw-gradient-from: #e2e8f0 var(--tw-gradient-from-position);--tw-gradient-to: rgb(226 232 240 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-300{--tw-gradient-from: #cbd5e1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(203 213 225 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-400{--tw-gradient-from: #94a3b8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(148 163 184 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-background{--tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), hsl(var(--background)) var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-blue-600{--tw-gradient-to: #2563eb var(--tw-gradient-to-position)}.to-cyan-500{--tw-gradient-to: #06b6d4 var(--tw-gradient-to-position)}.to-emerald-500{--tw-gradient-to: #10b981 var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to: #16a34a var(--tw-gradient-to-position)}.to-orange-500{--tw-gradient-to: #f97316 var(--tw-gradient-to-position)}.to-pink-500{--tw-gradient-to: #ec4899 var(--tw-gradient-to-position)}.to-primary\/10{--tw-gradient-to: hsl(var(--primary) / .1) var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to: #a855f7 var(--tw-gradient-to-position)}.to-secondary\/5{--tw-gradient-to: hsl(var(--secondary) / .05) var(--tw-gradient-to-position)}.to-slate-700{--tw-gradient-to: #334155 var(--tw-gradient-to-position)}.to-slate-800{--tw-gradient-to: #1e293b var(--tw-gradient-to-position)}.to-slate-900{--tw-gradient-to: #0f172a var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.fill-yellow-400{fill:#facc15}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[1px\]{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[--cell-size\]{padding-left:var(--cell-size);padding-right:var(--cell-size)}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pl-10{padding-left:2.5rem}.pl-11{padding-left:2.75rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-1{padding-right:.25rem}.pr-10{padding-right:2.5rem}.pr-16{padding-right:4rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.text-\[150px\]{font-size:150px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/50{color:hsl(var(--foreground) / .5)}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/50{color:hsl(var(--muted-foreground) / .5)}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-800{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.text-orange-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary\/10{color:hsl(var(--primary) / .1)}.text-primary\/30{color:hsl(var(--primary) / .3)}.text-primary\/60{color:hsl(var(--primary) / .6)}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.text-yellow-900{--tw-text-opacity: 1;color:rgb(113 63 18 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-primary{--tw-ring-color: hsl(var(--primary))}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur-3xl{--tw-blur: blur(64px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.text-primary-gradient{color:hsl(var(--primary))}.has-gradient .text-primary-gradient{background:var(--primary-gradient);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.\[--cell-size\:2rem\]{--cell-size: 2rem}.no-animations *,.no-animations *:before,.no-animations *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.no-animations *:hover{transition-duration:.01ms!important}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:999}.__floater{z-index:99999!important;pointer-events:auto!important}.react-joyride__overlay,.react-joyride__spotlight{z-index:99998!important}.react-joyride__tooltip{pointer-events:auto!important}#tour-portal-container *{pointer-events:auto}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:border-muted-foreground\/50:hover{border-color:hsl(var(--muted-foreground) / .5)}.hover\:border-primary\/50:hover{border-color:hsl(var(--primary) / .5)}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent) / .5)}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-orange-700:hover{--tw-bg-opacity: 1;background-color:rgb(194 65 12 / var(--tw-bg-opacity, 1))}.hover\:bg-primary\/10:hover{background-color:hsl(var(--primary) / .1)}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-secondary:hover{background-color:hsl(var(--secondary))}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-secondary\/90:hover{background-color:hsl(var(--secondary) / .9)}.hover\:bg-transparent:hover{background-color:transparent}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-green-700:hover{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.hover\:text-orange-700:hover{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.hover\:text-primary\/80:hover{color:hsl(var(--primary) / .8)}.hover\:text-red-700:hover{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.hover\:text-yellow-300:hover{--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:ring-2:hover{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.hover\:ring-primary:hover{--tw-ring-color: hsl(var(--primary))}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-gray-100:focus{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-red-500:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.active\:cursor-grabbing:active{cursor:grabbing}.active\:border-primary\/70:active{border-color:hsl(var(--primary) / .7)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group[open] .group-open\:rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:opacity-100{opacity:1}.group.destructive .group-\[\.destructive\]\:border-muted\/40{border-color:hsl(var(--muted) / .4)}.group.destructive .group-\[\.destructive\]\:text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:hover\:text-red-50:hover{--tw-text-opacity: 1;color:rgb(254 242 242 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-red-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(248 113 113 / var(--tw-ring-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-offset-red-600:focus{--tw-ring-offset-color: #dc2626}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-selected\:text-muted-foreground[aria-selected=true]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true],.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked],.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x: var(--radix-toast-swipe-end-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x: var(--radix-toast-swipe-move-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes fade-out{0%{opacity:1}to{opacity:0}}.data-\[state\=closed\]\:animate-fade-out[data-state=closed]{animation:fade-out .15s ease-in}.data-\[state\=closed\]\:animate-slide-out-to-right[data-state=closed]{animation:slide-out-to-right .2s ease-in}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.data-\[state\=open\]\:animate-fade-in[data-state=open]{animation:fade-in .2s ease-out}@keyframes slide-in-from-right{0%{transform:translate(100%)}to{transform:translate(0)}}.data-\[state\=open\]\:animate-slide-in-from-right[data-state=open]{animation:slide-in-from-right .3s ease-out}@keyframes slide-out-to-right{0%{transform:translate(0)}to{transform:translate(100%)}}.data-\[swipe\=end\]\:animate-slide-out-to-right[data-swipe=end]{animation:slide-out-to-right .2s ease-in}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) - 2px)}.data-\[selected\=true\]\:rounded-none[data-selected=true]{border-radius:0}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:hsl(var(--primary))}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:hsl(var(--accent))}.data-\[range-start\=true\]\:bg-primary[data-range-start=true],.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:hsl(var(--primary))}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:hsl(var(--primary-foreground))}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:hsl(var(--accent-foreground))}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true],.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:hsl(var(--primary-foreground))}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:opacity-50[data-disabled=true],.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.data-\[state\=active\]\:duration-300[data-state=active]{transition-duration:.3s}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:relative{position:relative}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:z-10{z-index:10}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:border-ring{border-color:hsl(var(--ring))}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-\[3px\]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}@supports (backdrop-filter: var(--tw)){.supports-\[backdrop-filter\]\:bg-background\/60{background-color:hsl(var(--background) / .6)}}.dark\:border-amber-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(146 64 14 / var(--tw-border-opacity, 1))}.dark\:border-blue-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity, 1))}.dark\:border-gray-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(17 24 39 / var(--tw-border-opacity, 1))}.dark\:border-green-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(22 101 52 / var(--tw-border-opacity, 1))}.dark\:border-orange-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(124 45 18 / var(--tw-border-opacity, 1))}.dark\:border-yellow-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(113 63 18 / var(--tw-border-opacity, 1))}.dark\:bg-amber-950\/30:is(.dark *){background-color:#451a034d}.dark\:bg-blue-500\/20:is(.dark *){background-color:#3b82f633}.dark\:bg-blue-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 37 84 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950\/20:is(.dark *){background-color:#17255433}.dark\:bg-blue-950\/30:is(.dark *){background-color:#1725544d}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800\/30:is(.dark *){background-color:#1f29374d}.dark\:bg-gray-800\/50:is(.dark *){background-color:#1f293780}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(3 7 18 / var(--tw-bg-opacity, 1))}.dark\:bg-green-900\/30:is(.dark *){background-color:#14532d4d}.dark\:bg-green-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(5 46 22 / var(--tw-bg-opacity, 1))}.dark\:bg-green-950\/20:is(.dark *){background-color:#052e1633}.dark\:bg-orange-950\/20:is(.dark *){background-color:#43140733}.dark\:bg-red-500\/20:is(.dark *){background-color:#ef444433}.dark\:bg-red-600\/30:is(.dark *){background-color:#dc26264d}.dark\:bg-red-900\/30:is(.dark *){background-color:#7f1d1d4d}.dark\:bg-red-950\/50:is(.dark *){background-color:#450a0a80}.dark\:bg-yellow-500\/20:is(.dark *){background-color:#eab30833}.dark\:bg-yellow-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1))}.dark\:bg-yellow-950\/30:is(.dark *){background-color:#4220064d}.dark\:text-amber-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 243 199 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-blue-100:is(.dark *){--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-200:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-cyan-500:is(.dark *){--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-orange-100:is(.dark *){--tw-text-opacity: 1;color:rgb(255 237 213 / var(--tw-text-opacity, 1))}.dark\:text-orange-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 215 170 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-red-500:is(.dark *){--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.dark\:text-yellow-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.dark\:text-yellow-400:is(.dark *){--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.dark\:text-yellow-500:is(.dark *){--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:focus\:bg-gray-800:focus:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}@media(min-width:640px){.sm\:right-2{right:.5rem}.sm\:right-3{right:.75rem}.sm\:top-2{top:.5rem}.sm\:top-3{top:.75rem}.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:mb-3{margin-bottom:.75rem}.sm\:mb-4{margin-bottom:1rem}.sm\:mb-6{margin-bottom:1.5rem}.sm\:ml-0{margin-left:0}.sm\:ml-1{margin-left:.25rem}.sm\:mr-1{margin-right:.25rem}.sm\:mr-2{margin-right:.5rem}.sm\:mt-0{margin-top:0}.sm\:mt-2{margin-top:.5rem}.sm\:mt-3{margin-top:.75rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-12{height:3rem}.sm\:h-2{height:.5rem}.sm\:h-24{height:6rem}.sm\:h-3{height:.75rem}.sm\:h-4{height:1rem}.sm\:h-5{height:1.25rem}.sm\:h-8{height:2rem}.sm\:h-9{height:2.25rem}.sm\:h-\[300px\]{height:300px}.sm\:h-\[400px\]{height:400px}.sm\:h-\[500px\]{height:500px}.sm\:h-\[calc\(100vh-280px\)\]{height:calc(100vh - 280px)}.sm\:w-10{width:2.5rem}.sm\:w-2{width:.5rem}.sm\:w-24{width:6rem}.sm\:w-28{width:7rem}.sm\:w-3{width:.75rem}.sm\:w-4{width:1rem}.sm\:w-5{width:1.25rem}.sm\:w-8{width:2rem}.sm\:w-80{width:20rem}.sm\:w-96{width:24rem}.sm\:w-\[140px\]{width:140px}.sm\:w-\[160px\]{width:160px}.sm\:w-\[200px\]{width:200px}.sm\:w-\[500px\]{width:500px}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:min-w-\[120px\]{min-width:120px}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-\[420px\]{max-width:420px}.sm\:max-w-\[70\%\]{max-width:70%}.sm\:max-w-\[900px\]{max-width:900px}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:flex-1{flex:1 1 0%}.sm\:flex-none{flex:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-0{gap:0px}.sm\:gap-1{gap:.25rem}.sm\:gap-2{gap:.5rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:gap-6{gap:1.5rem}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.sm\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.sm\:space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.sm\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.sm\:space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:py-2{padding-top:.5rem;padding-bottom:.5rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-\[200px\]{font-size:200px}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:768px){.md\:top-4{top:1rem}.md\:mb-4{margin-bottom:1rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-8{margin-bottom:2rem}.md\:mt-8{margin-top:2rem}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-16{height:4rem}.md\:h-4{height:1rem}.md\:h-5{height:1.25rem}.md\:h-8{height:2rem}.md\:h-96{height:24rem}.md\:h-\[500px\]{height:500px}.md\:min-h-\[400px\]{min-height:400px}.md\:w-16{width:4rem}.md\:w-4{width:1rem}.md\:w-5{width:1.25rem}.md\:w-8{width:2rem}.md\:w-96{width:24rem}.md\:max-w-none{max-width:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:gap-2{gap:.5rem}.md\:gap-3{gap:.75rem}.md\:gap-4{gap:1rem}.md\:gap-6{gap:1.5rem}.md\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.md\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.md\:whitespace-normal{white-space:normal}.md\:p-12{padding:3rem}.md\:p-4{padding:1rem}.md\:p-6{padding:1.5rem}.md\:p-8{padding:2rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:1024px){.lg\:invisible{visibility:hidden}.lg\:relative{position:relative}.lg\:z-0{z-index:0}.lg\:col-span-1{grid-column:span 1 / span 1}.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:mb-1{margin-bottom:.25rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-12{width:3rem}.lg\:w-16{width:4rem}.lg\:w-64{width:16rem}.lg\:w-8{width:2rem}.lg\:w-\[130px\]{width:130px}.lg\:w-\[160px\]{width:160px}.lg\:w-\[180px\]{width:180px}.lg\:w-\[200px\]{width:200px}.lg\:w-\[240px\]{width:240px}.lg\:w-\[75px\]{width:75px}.lg\:w-auto{width:auto}.lg\:w-full{width:100%}.lg\:max-w-0{max-width:0px}.lg\:flex-1{flex:1 1 0%}.lg\:flex-none{flex:none}.lg\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:justify-center{justify-content:center}.lg\:gap-0{gap:0px}.lg\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.lg\:overflow-hidden{overflow:hidden}.lg\:p-2{padding:.5rem}.lg\:p-6{padding:1.5rem}.lg\:px-0{padding-left:0;padding-right:0}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:pb-6{padding-bottom:1.5rem}.lg\:text-3xl{font-size:1.875rem;line-height:2.25rem}.lg\:opacity-0{opacity:0}}@media(min-width:1280px){.xl\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}}.\[\&\+div\]\:text-xs+div{font-size:.75rem;line-height:1rem}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>span\]\:text-xs>span{font-size:.75rem;line-height:1rem}.\[\&\>span\]\:opacity-70>span{opacity:.7}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y: -3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-4>svg{top:1rem}.\[\&\>svg\]\:size-3\.5>svg{width:.875rem;height:.875rem}.\[\&\>svg\]\:h-2\.5>svg{height:.625rem}.\[\&\>svg\]\:h-3>svg{height:.75rem}.\[\&\>svg\]\:w-2\.5>svg{width:.625rem}.\[\&\>svg\]\:w-3>svg{width:.75rem}.\[\&\>svg\]\:text-foreground>svg{color:hsl(var(--foreground))}.\[\&\>svg\]\:text-muted-foreground>svg{color:hsl(var(--muted-foreground))}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:1.75rem}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:hsl(var(--muted-foreground))}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:hsl(var(--border) / .5)}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:hsl(var(--border))}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-layer\]\:outline-none .recharts-layer{outline:2px solid transparent;outline-offset:2px}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector,.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:hsl(var(--muted))}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-sector\]\:outline-none .recharts-sector,.\[\&_\.recharts-surface\]\:outline-none .recharts-surface{outline:2px solid transparent;outline-offset:2px}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:1.25rem}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:invisible svg{visibility:hidden}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent,[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:transparent}.uppy-Root{box-sizing:border-box;color:#333;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;line-height:1;position:relative;text-align:left;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.uppy-Root[dir=rtl],[dir=rtl] .uppy-Root{text-align:right}.uppy-Root *,.uppy-Root :after,.uppy-Root :before{box-sizing:inherit}.uppy-Root [hidden]{display:none}.uppy-u-reset{all:initial;-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;line-height:1}[dir=rtl] .uppy-u-reset{text-align:right}.uppy-c-textInput{background-color:#fff;border:1px solid #ddd;border-radius:4px;font-family:inherit;font-size:14px;line-height:1.5;padding:6px 8px}.uppy-size--md .uppy-c-textInput{padding:8px 10px}.uppy-c-textInput:focus{border-color:#1269cf99;box-shadow:0 0 0 3px #1269cf26;outline:none}[data-uppy-theme=dark] .uppy-c-textInput{background-color:#333;border-color:#333;color:#eaeaea}[data-uppy-theme=dark] .uppy-c-textInput:focus{border-color:#525252;box-shadow:none}.uppy-c-icon{display:inline-block;max-height:100%;max-width:100%;overflow:hidden;fill:currentColor}.uppy-c-btn{align-items:center;color:inherit;display:inline-flex;font-family:inherit;font-size:inherit;font-weight:500;justify-content:center;line-height:1;transition-duration:.3s;transition-property:background-color,color;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.uppy-c-btn,[dir=rtl] .uppy-c-btn{text-align:center}.uppy-c-btn:not(:disabled):not(.disabled){cursor:pointer}.uppy-c-btn::-moz-focus-inner{border:0}.uppy-c-btn-primary{background-color:#1269cf;border-radius:4px;color:#fff;font-size:14px;padding:10px 18px}.uppy-c-btn-primary:not(:disabled):hover{background-color:#0e51a0}.uppy-c-btn-primary:focus{box-shadow:0 0 0 3px #1269cf66;outline:none}.uppy-size--md .uppy-c-btn-primary{padding:13px 22px}[data-uppy-theme=dark] .uppy-c-btn-primary{color:#eaeaea}[data-uppy-theme=dark] .uppy-c-btn-primary:focus{outline:none}[data-uppy-theme=dark] .uppy-c-btn-primary::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-c-btn-primary:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-c-btn-primary.uppy-c-btn--disabled{background-color:#8eb2db}.uppy-c-btn-link{background-color:initial;border-radius:4px;color:#525252;font-size:14px;line-height:1;padding:10px 15px}.uppy-c-btn-link:hover{color:#333}.uppy-c-btn-link:focus{box-shadow:0 0 0 3px #1269cf40;outline:none}.uppy-size--md .uppy-c-btn-link{padding:13px 18px}[data-uppy-theme=dark] .uppy-c-btn-link{color:#eaeaea}[data-uppy-theme=dark] .uppy-c-btn-link:focus{outline:none}[data-uppy-theme=dark] .uppy-c-btn-link::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-c-btn-link:focus{box-shadow:0 0 0 2px #aae1ffd9}[data-uppy-theme=dark] .uppy-c-btn-link:hover{color:#939393}.uppy-ProviderBrowser-viewType--grid ul.uppy-ProviderBrowser-list,.uppy-ProviderBrowser-viewType--unsplash ul.uppy-ProviderBrowser-list{align-items:flex-start;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;padding:6px}.uppy-ProviderBrowser-viewType--grid ul.uppy-ProviderBrowser-list:after,.uppy-ProviderBrowser-viewType--unsplash ul.uppy-ProviderBrowser-list:after{content:"";flex:auto}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem{margin:0;position:relative;width:50%}.uppy-size--md .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem,.uppy-size--md .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem{width:33.3333%}.uppy-size--lg .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem,.uppy-size--lg .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem{width:25%}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem:before,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem:before{content:"";display:block;padding-top:100%}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--selected img,.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--selected svg,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--selected img,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--selected svg{opacity:.85}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--disabled,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--disabled{opacity:.5}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner{background-color:#93939333}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner,[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner{background-color:#eaeaea33}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview svg,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview svg{height:30%;width:30%;fill:#000000b3}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview svg,[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview svg{fill:#fffc}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner{border-radius:4px;height:calc(100% - 14px);inset:7px;overflow:hidden;position:absolute;text-align:center;width:calc(100% - 14px)}@media(hover:none){.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner .uppy-ProviderBrowserItem-author{display:block}}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner,[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner{box-shadow:0 0 0 3px #aae1ffb3}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner img,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner img{border-radius:4px;height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-author{background:#0000004d;bottom:0;color:#fff;display:none;font-size:12px;font-weight:500;left:0;margin:0;padding:5px;position:absolute;text-decoration:none;width:100%}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-author:hover,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-author:hover{background:#0006;text-decoration:underline}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox{background-color:#1269cf;border-radius:50%;height:26px;opacity:0;position:absolute;right:16px;top:16px;width:26px;z-index:1002}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox:after,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox:after{height:7px;inset-inline-start:7px;top:8px;width:12px}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox{opacity:1}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:hover+label .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:hover+label .uppy-ProviderBrowserItem-author{display:block}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label{box-shadow:0 0 0 3px #1269cf80}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label:focus,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label:focus{outline:none}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label::-moz-focus-inner,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label::-moz-focus-inner{border:0}.uppy-ProviderBrowser-viewType--list{background-color:#fff}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--list{background-color:#1f1f1f}.uppy-ProviderBrowser-viewType--list li.uppy-ProviderBrowserItem{align-items:center;display:flex;margin:0;padding:7px 15px}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--list li.uppy-ProviderBrowserItem{color:#eaeaea}.uppy-ProviderBrowser-viewType--list li.uppy-ProviderBrowserItem--disabled{opacity:.6}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox{background-color:#fff;border:1px solid #cfcfcf;border-radius:3px;height:17px;margin-inline-end:15px;width:17px}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox:focus{border:1px solid #1269cf;box-shadow:0 0 0 3px #1269cf40;outline:none}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox:after{height:5px;inset-inline-start:3px;opacity:0;top:4px;width:9px}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox:focus{border-color:#02baf2b3;box-shadow:0 0 0 3px #02baf233}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox,.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-partial .uppy-ProviderBrowserItem-checkbox{background-color:#1269cf;border-color:#1269cf}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox:after,.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-partial .uppy-ProviderBrowserItem-checkbox:after{opacity:1}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner{align-items:center;color:inherit;display:flex;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;overflow:hidden;padding:2px;text-overflow:ellipsis;white-space:nowrap}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner:focus{outline:none;text-decoration:underline}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner img,.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner svg{margin-inline-end:8px}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner span{line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--disabled .uppy-ProviderBrowserItem-inner{cursor:default}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-iconWrap{margin-inline-end:7px;width:20px}.uppy-ProviderBrowserItem-checkbox{cursor:pointer;flex-shrink:0;position:relative}.uppy-ProviderBrowserItem-checkbox:disabled,.uppy-ProviderBrowserItem-checkbox:disabled:after{cursor:default}[data-uppy-theme=dark] .uppy-ProviderBrowserItem-checkbox{background-color:#1f1f1f;border-color:#939393}[data-uppy-theme=dark] .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox{background-color:#333}.uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox:after{border-bottom:2px solid #eaeaea;border-left:2px solid #eaeaea;content:"";cursor:pointer;position:absolute;transform:rotate(-45deg)}.uppy-ProviderBrowserItem--is-partial .uppy-ProviderBrowserItem-checkbox:after{background-color:#eaeaea!important;content:""!important;height:2px!important;left:20%!important;position:absolute!important;right:20%!important;top:50%!important;transform:translateY(-50%)!important}.uppy-SearchProvider{align-items:center;display:flex;flex:1;flex-direction:column;height:100%;justify-content:center;width:100%}[data-uppy-theme=dark] .uppy-SearchProvider{background-color:#1f1f1f}.uppy-SearchProvider-input{margin-bottom:15px;max-width:650px;width:90%}.uppy-size--md .uppy-SearchProvider-input{margin-bottom:20px}.uppy-SearchProvider-input::-webkit-search-cancel-button{display:none}.uppy-SearchProvider-searchButton{padding:13px 25px}.uppy-size--md .uppy-SearchProvider-searchButton{padding:13px 30px}.uppy-DashboardContent-panelBody{align-items:center;display:flex;flex:1;justify-content:center}[data-uppy-theme=dark] .uppy-DashboardContent-panelBody{background-color:#1f1f1f}.uppy-Provider-auth,.uppy-Provider-empty,.uppy-Provider-error,.uppy-Provider-loading{align-items:center;color:#939393;display:flex;flex:1;flex-flow:column wrap;justify-content:center}.uppy-Provider-empty{color:#939393}.uppy-Provider-authIcon svg{height:75px;width:100px}.uppy-Provider-authTitle{color:#757575;font-size:17px;font-weight:400;line-height:1.4;margin-bottom:30px;max-width:500px;padding:0 15px;text-align:center}.uppy-size--md .uppy-Provider-authTitle{font-size:20px}[data-uppy-theme=dark] .uppy-Provider-authTitle{color:#cfcfcf}.uppy-Provider-btn-google{align-items:center;background:#4285f4;display:flex;padding:8px 12px!important}.uppy-Provider-btn-google:hover{background-color:#1266f1}.uppy-Provider-btn-google:focus{box-shadow:0 0 0 3px #4285f466;outline:none}.uppy-Provider-btn-google svg{margin-right:8px}.uppy-Provider-breadcrumbs{color:#525252;flex:1;font-size:12px;margin-bottom:10px;text-align:start}.uppy-size--md .uppy-Provider-breadcrumbs{margin-bottom:0}[data-uppy-theme=dark] .uppy-Provider-breadcrumbs{color:#eaeaea}.uppy-Provider-breadcrumbsIcon{color:#525252;display:inline-block;line-height:1;margin-inline-end:4px;vertical-align:middle}.uppy-Provider-breadcrumbsIcon svg{height:13px;width:13px;fill:#525252}.uppy-Provider-breadcrumbs button{border-radius:3px;display:inline-block;line-height:inherit;padding:4px}.uppy-Provider-breadcrumbs button:focus{outline:none}.uppy-Provider-breadcrumbs button::-moz-focus-inner{border:0}.uppy-Provider-breadcrumbs button:hover{color:#0e51a0}.uppy-Provider-breadcrumbs button:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-Provider-breadcrumbs button:focus{background-color:#333}.uppy-Provider-breadcrumbs button:not(:last-of-type){text-decoration:underline}.uppy-Provider-breadcrumbs button:last-of-type{color:#333;cursor:normal;font-weight:500;pointer-events:none}.uppy-Provider-breadcrumbs button:hover{cursor:pointer}[data-uppy-theme=dark] .uppy-Provider-breadcrumbs button{color:#eaeaea}.uppy-ProviderBrowser{display:flex;flex:1;flex-direction:column;font-size:14px;font-weight:400;height:100%}.uppy-ProviderBrowser-user{color:#333;font-weight:500;margin:0 8px 0 0}[data-uppy-theme=dark] .uppy-ProviderBrowser-user{color:#eaeaea}.uppy-ProviderBrowser-user:after{color:#939393;content:"·";font-weight:400;inset-inline-start:4px;position:relative}.uppy-ProviderBrowser-header{border-bottom:1px solid #eaeaea;position:relative;z-index:1001}[data-uppy-theme=dark] .uppy-ProviderBrowser-header{border-bottom:1px solid #333}.uppy-ProviderBrowser-headerBar{background-color:#fafafa;color:#757575;font-size:12px;line-height:1.4;padding:7px 15px;z-index:1001}.uppy-size--md .uppy-ProviderBrowser-headerBar{align-items:center;display:flex}[data-uppy-theme=dark] .uppy-ProviderBrowser-headerBar{background-color:#1f1f1f}.uppy-ProviderBrowser-headerBar--simple{display:block;justify-content:center;text-align:center}.uppy-ProviderBrowser-headerBar--simple .uppy-Provider-breadcrumbsWrap{display:inline-block;flex:none;vertical-align:middle}.uppy-ProviderBrowser-searchFilter{align-items:center;display:flex;height:30px;margin-bottom:15px;margin-top:15px;padding-left:8px;padding-right:8px;position:relative;width:100%}.uppy-ProviderBrowser-searchFilterInput{background-color:#eaeaea;border:0;border-radius:4px;color:#333;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;font-size:13px;height:30px;line-height:1.4;outline:0;padding-inline-end:30px;padding-inline-start:30px;width:100%;z-index:1001}.uppy-ProviderBrowser-searchFilterInput::-webkit-search-cancel-button{display:none}[data-uppy-theme=dark] .uppy-ProviderBrowser-searchFilterInput{background-color:#1f1f1f;color:#eaeaea}.uppy-ProviderBrowser-searchFilterInput:focus{background-color:#cfcfcf;border:0}[data-uppy-theme=dark] .uppy-ProviderBrowser-searchFilterInput:focus{background-color:#333}.uppy-ProviderBrowser-searchFilterIcon{color:#757575;height:12px;inset-inline-start:16px;position:absolute;width:12px;z-index:1002}.uppy-ProviderBrowser-searchFilterInput::-moz-placeholder{color:#939393;opacity:1}.uppy-ProviderBrowser-searchFilterInput::placeholder{color:#939393;opacity:1}.uppy-ProviderBrowser-searchFilterReset{border-radius:3px;color:#939393;cursor:pointer;height:22px;inset-inline-end:16px;padding:6px;position:absolute;width:22px;z-index:1002}.uppy-ProviderBrowser-searchFilterReset:focus{outline:none}.uppy-ProviderBrowser-searchFilterReset::-moz-focus-inner{border:0}.uppy-ProviderBrowser-searchFilterReset:focus{box-shadow:0 0 0 3px #1269cf80}.uppy-ProviderBrowser-searchFilterReset:hover{color:#757575}.uppy-ProviderBrowser-searchFilterReset svg{vertical-align:text-top}.uppy-ProviderBrowser-userLogout{border-radius:3px;color:#1269cf;cursor:pointer;line-height:inherit;padding:4px}.uppy-ProviderBrowser-userLogout:focus{outline:none}.uppy-ProviderBrowser-userLogout::-moz-focus-inner{border:0}.uppy-ProviderBrowser-userLogout:hover{color:#0e51a0}.uppy-ProviderBrowser-userLogout:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-ProviderBrowser-userLogout:focus{background-color:#333}.uppy-ProviderBrowser-userLogout:hover{text-decoration:underline}[data-uppy-theme=dark] .uppy-ProviderBrowser-userLogout{color:#eaeaea}.uppy-ProviderBrowser-body{flex:1;position:relative}.uppy-ProviderBrowser-list{background-color:#fff;border-spacing:0;display:block;flex:1;height:100%;inset:0;list-style:none;margin:0;overflow-x:hidden;overflow-y:auto;padding:0;position:absolute;width:100%;-webkit-overflow-scrolling:touch}[data-uppy-theme=dark] .uppy-ProviderBrowser-list{background-color:#1f1f1f}.uppy-ProviderBrowser-list:focus{outline:none}.uppy-ProviderBrowserItem-inner{cursor:pointer;font-size:13px;font-weight:500}.uppy-ProviderBrowser-footer{align-items:center;background-color:#fff;border-top:1px solid #eaeaea;display:flex;justify-content:space-between;padding:15px}.uppy-ProviderBrowser-footer button{margin-inline-end:8px}[data-uppy-theme=dark] .uppy-ProviderBrowser-footer{background-color:#1f1f1f;border-top:1px solid #333}.uppy-ProviderBrowser-footer-buttons{flex-shrink:0}.uppy-ProviderBrowser-footer-error{color:#e32437;line-height:18px}@media(max-width:426px){.uppy-ProviderBrowser-footer{align-items:stretch;flex-direction:column-reverse}.uppy-ProviderBrowser-footer-error{padding-bottom:10px}}.picker-dialog-bg{z-index:20000!important}.picker-dialog{z-index:20001!important}.uppy-Dashboard-Item-previewInnerWrap{align-items:center;border-radius:3px;box-shadow:0 0 2px #0006;display:flex;flex-direction:column;height:100%;justify-content:center;overflow:hidden;position:relative;width:100%}.uppy-size--md .uppy-Dashboard-Item-previewInnerWrap{box-shadow:0 1px 2px #00000026}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-previewInnerWrap{box-shadow:none}.uppy-Dashboard-Item-previewInnerWrap:after{background-color:#000000a6;content:"";display:none;inset:0;position:absolute;z-index:1001}.uppy-Dashboard-Item-previewLink{inset:0;position:absolute;z-index:1002}.uppy-Dashboard-Item-previewLink:focus{box-shadow:inset 0 0 0 3px #579df0}[data-uppy-theme=dark] .uppy-Dashboard-Item-previewLink:focus{box-shadow:inset 0 0 0 3px #016c8d}.uppy-Dashboard-Item-preview img.uppy-Dashboard-Item-previewImg{border-radius:3px;height:100%;-o-object-fit:cover;object-fit:cover;transform:translateZ(0);width:100%}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-preview img.uppy-Dashboard-Item-previewImg{height:auto;max-height:100%;max-width:100%;-o-object-fit:contain;object-fit:contain;padding:10px;width:auto}.uppy-Dashboard-Item-progress{color:#fff;left:50%;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);transition:all .35 ease;width:120px;z-index:1002}.uppy-Dashboard-Item-progressIndicator{color:#fff;display:inline-block;height:38px;opacity:.9;width:38px}.uppy-size--md .uppy-Dashboard-Item-progressIndicator{height:55px;width:55px}button.uppy-Dashboard-Item-progressIndicator{cursor:pointer}button.uppy-Dashboard-Item-progressIndicator:focus{outline:none}button.uppy-Dashboard-Item-progressIndicator::-moz-focus-inner{border:0}button.uppy-Dashboard-Item-progressIndicator:focus .uppy-Dashboard-Item-progressIcon--bg,button.uppy-Dashboard-Item-progressIndicator:focus .uppy-Dashboard-Item-progressIcon--retry{fill:#579df0}.uppy-Dashboard-Item-progressIcon--circle{height:100%;width:100%}.uppy-Dashboard-Item-progressIcon--bg{stroke:#fff6}.uppy-Dashboard-Item-progressIcon--progress{transition:stroke-dashoffset .5s ease-out;stroke:#fff}.uppy-Dashboard-Item-progressIcon--play{transition:all .2s;fill:#fff;stroke:#fff}.uppy-Dashboard-Item-progressIcon--cancel{transition:all .2s;fill:#fff}.uppy-Dashboard-Item-progressIcon--pause{transition:all .2s;fill:#fff;stroke:#fff}.uppy-Dashboard-Item-progressIcon--check{transition:all .2s;fill:#fff}.uppy-Dashboard-Item-progressIcon--retry{fill:#fff}.uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progress{inset-inline-end:-8px;inset-inline-start:auto;top:-9px;transform:none;width:auto}.uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-progressIndicator{height:18px;width:18px}.uppy-size--md .uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-progressIndicator{height:28px;width:28px}.uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progressIndicator{height:18px;opacity:1;width:18px}.uppy-size--md .uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progressIndicator{height:22px;width:22px}.uppy-Dashboard-Item.is-processing .uppy-Dashboard-Item-progress{opacity:0}.uppy-Dashboard-Item-fileInfo{padding-inline-end:5px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfo{padding-inline-end:10px}.uppy-size--md.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfo{padding-inline-end:15px}.uppy-Dashboard-Item-name{font-size:12px;font-weight:500;line-height:1.3;margin-bottom:5px;word-wrap:anywhere;word-break:break-all}[data-uppy-theme=dark] .uppy-Dashboard-Item-name{color:#eaeaea}.uppy-size--md.uppy-Dashboard--singleFile .uppy-Dashboard-Item-name{font-size:14px;line-height:1.4}.uppy-Dashboard-Item-fileName{align-items:baseline;display:flex}.uppy-Dashboard-Item-fileName button{margin-left:5px}.uppy-Dashboard-Item-author{color:#757575;display:inline-block;font-size:11px;font-weight:400;line-height:1;margin-bottom:5px;vertical-align:bottom}.uppy-Dashboard-Item-author a{color:#757575}.uppy-Dashboard-Item-status{color:#757575;font-size:11px;font-weight:400;line-height:1}[data-uppy-theme=dark] .uppy-Dashboard-Item-status{color:#bbb}.uppy-Dashboard-Item-statusSize{display:inline-block;margin-bottom:5px;text-transform:uppercase;vertical-align:bottom}.uppy-Dashboard-Item-reSelect{color:#1269cf;font-family:inherit;font-size:inherit;font-weight:600}.uppy-Dashboard-Item-errorMessage{background-color:#fdeff1;color:#a51523;font-size:11px;font-weight:500;line-height:1.3;padding:5px 6px}.uppy-Dashboard-Item-errorMessageBtn{color:#a51523;cursor:pointer;font-size:11px;font-weight:500;text-decoration:underline}.uppy-Dashboard-Item-preview .uppy-Dashboard-Item-errorMessage{display:none}.uppy-size--md .uppy-Dashboard-Item-preview .uppy-Dashboard-Item-errorMessage{border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-top:1px solid #f7c2c8;bottom:0;display:block;left:0;line-height:1.4;padding:6px 8px;position:absolute;right:0}.uppy-Dashboard-Item-fileInfo .uppy-Dashboard-Item-errorMessage{border:1px solid #f7c2c8;border-radius:3px;display:inline-block;position:static}.uppy-size--md .uppy-Dashboard-Item-fileInfo .uppy-Dashboard-Item-errorMessage{display:none}.uppy-Dashboard-Item-action{color:#939393;cursor:pointer}.uppy-Dashboard-Item-action:focus{outline:none}.uppy-Dashboard-Item-action::-moz-focus-inner{border:0}.uppy-Dashboard-Item-action:focus{box-shadow:0 0 0 3px #1269cf80}.uppy-Dashboard-Item-action:hover{color:#1f1f1f;opacity:1}[data-uppy-theme=dark] .uppy-Dashboard-Item-action{color:#cfcfcf}[data-uppy-theme=dark] .uppy-Dashboard-Item-action:focus{outline:none}[data-uppy-theme=dark] .uppy-Dashboard-Item-action::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-Dashboard-Item-action:focus{box-shadow:0 0 0 2px #aae1ffd9}[data-uppy-theme=dark] .uppy-Dashboard-Item-action:hover{color:#eaeaea}.uppy-Dashboard-Item-action--remove{color:#1f1f1f;opacity:.95}.uppy-Dashboard-Item-action--remove:hover{color:#000;opacity:1}.uppy-size--md .uppy-Dashboard-Item-action--remove{height:18px;inset-inline-end:-8px;padding:0;position:absolute;top:-8px;width:18px;z-index:1002}.uppy-size--md .uppy-Dashboard-Item-action--remove:focus{border-radius:50%}.uppy-Dashboard--singleFile.uppy-size--height-md .uppy-Dashboard-Item-action--remove{inset-inline-end:8px;position:absolute;top:8px}[data-uppy-theme=dark] .uppy-Dashboard-Item-action--remove{color:#525252}[data-uppy-theme=dark] .uppy-Dashboard-Item-action--remove:hover{color:#333}.uppy-Dashboard:not(.uppy-size--md):not(.uppy-Dashboard--singleFile.uppy-size--height-md) .uppy-Dashboard-Item-actionWrapper{align-items:center;display:flex}.uppy-Dashboard:not(.uppy-size--md):not(.uppy-Dashboard--singleFile.uppy-size--height-md) .uppy-Dashboard-Item-action{height:22px;margin-left:3px;padding:3px;width:22px}.uppy-Dashboard:not(.uppy-size--md):not(.uppy-Dashboard--singleFile.uppy-size--height-md) .uppy-Dashboard-Item-action:focus{border-radius:3px}.uppy-size--md .uppy-Dashboard-Item-action--copyLink,.uppy-size--md .uppy-Dashboard-Item-action--edit{height:16px;padding:0;width:16px}.uppy-size--md .uppy-Dashboard-Item-action--copyLink:focus,.uppy-size--md .uppy-Dashboard-Item-action--edit:focus{border-radius:3px}.uppy-Dashboard-Item{align-items:center;border-bottom:1px solid #eaeaea;display:flex;padding:10px}.uppy-Dashboard:not(.uppy-Dashboard--singleFile) .uppy-Dashboard-Item{padding-inline-end:0}[data-uppy-theme=dark] .uppy-Dashboard-Item{border-bottom:1px solid #333}.uppy-size--md .uppy-Dashboard-Item{border-bottom:0;display:block;float:inline-start;height:215px;margin:5px 15px;padding:0;position:relative;width:calc(33.333% - 30px)}.uppy-size--lg .uppy-Dashboard-Item{height:190px;margin:5px 15px;padding:0;width:calc(25% - 30px)}.uppy-size--xl .uppy-Dashboard-Item{height:210px;padding:0;width:calc(20% - 30px)}.uppy-Dashboard--singleFile .uppy-Dashboard-Item{border-bottom:0;display:flex;flex-direction:column;height:100%;max-width:400px;padding:15px;position:relative;width:100%}.uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-previewInnerWrap{opacity:.2}.uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-name{opacity:.7}.uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-preview:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='35' height='39' viewBox='0 0 35 39'%3E%3Cpath fill='%2523000' d='M1.708 38.66c1.709 0 3.417-3.417 6.834-3.417s5.125 3.417 8.61 3.417c3.348 0 5.056-3.417 8.473-3.417 4.305 0 5.125 3.417 6.833 3.417.889 0 1.709-.889 1.709-1.709v-19.68C34.167-5.757 0-5.757 0 17.271v19.68c0 .82.888 1.709 1.708 1.709m8.542-17.084a3.383 3.383 0 0 1-3.417-3.416 3.383 3.383 0 0 1 3.417-3.417 3.383 3.383 0 0 1 3.417 3.417 3.383 3.383 0 0 1-3.417 3.416m13.667 0A3.383 3.383 0 0 1 20.5 18.16a3.383 3.383 0 0 1 3.417-3.417 3.383 3.383 0 0 1 3.416 3.417 3.383 3.383 0 0 1-3.416 3.416'/%3E%3C/svg%3E");background-position:50% 10px;background-repeat:no-repeat;background-size:25px;content:"";inset:0;opacity:.5;position:absolute;z-index:1005}.uppy-size--md .uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-preview:before{background-position:50% 50%;background-size:40px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-preview:before{background-position:50% 50%;background-size:30%}.uppy-Dashboard-Item-preview{flex-grow:0;flex-shrink:0;height:50px;position:relative;width:50px}.uppy-size--md .uppy-Dashboard-Item-preview{height:140px;width:100%}.uppy-size--lg .uppy-Dashboard-Item-preview{height:120px}.uppy-size--xl .uppy-Dashboard-Item-preview{height:140px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-preview{flex-grow:1;max-height:75%;width:100%}.uppy-Dashboard--singleFile.uppy-size--md .uppy-Dashboard-Item-preview{max-height:100%}.uppy-Dashboard-Item-fileInfoAndButtons{align-items:center;display:flex;flex-grow:1;justify-content:space-between;padding-inline-end:8px;padding-inline-start:12px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfoAndButtons,.uppy-size--md .uppy-Dashboard-Item-fileInfoAndButtons{align-items:flex-start;padding:9px 0 0}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfoAndButtons{flex-grow:0;width:100%}.uppy-Dashboard-Item-fileInfo{flex-grow:1;flex-shrink:1}.uppy-Dashboard-Item-actionWrapper{flex-grow:0;flex-shrink:0}.uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-previewInnerWrap:after,.uppy-Dashboard-Item.is-inprogress .uppy-Dashboard-Item-previewInnerWrap:after{display:block}.uppy-Dashboard-Item-errorDetails{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#939393;border:none;border-radius:50%;color:#fff;cursor:help;flex-shrink:0;font-size:10px;font-weight:600;height:13px;inset-inline-start:2px;line-height:12px;position:relative;text-align:center;top:0;width:13px}.uppy-Dashboard-Item-errorDetails:after{line-height:1.3;word-wrap:break-word}.uppy-Dashboard-FileCard{background-color:#fff;border-radius:5px;box-shadow:0 0 10px 4px #0000001a;display:flex;flex-direction:column;height:100%;inset:0;position:absolute;width:100%;z-index:1005}.uppy-Dashboard-FileCard .uppy-DashboardContent-bar{border-top-left-radius:5px;border-top-right-radius:5px}.uppy-Dashboard-FileCard .uppy-Dashboard-FileCard-actions{border-bottom-left-radius:5px;border-bottom-right-radius:5px}.uppy-Dashboard-FileCard-inner{display:flex;flex-direction:column;flex-grow:1;flex-shrink:1;height:100%;min-height:0}.uppy-Dashboard-FileCard-preview{align-items:center;border-bottom:1px solid #eaeaea;display:flex;flex-grow:0;flex-shrink:1;height:60%;justify-content:center;min-height:0;position:relative}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-preview{background-color:#333;border-bottom:0}.uppy-Dashboard-FileCard-preview img.uppy-Dashboard-Item-previewImg{border-radius:3px;box-shadow:0 3px 20px #00000026;flex:0 0 auto;max-height:90%;max-width:90%;-o-object-fit:cover;object-fit:cover}.uppy-Dashboard-FileCard-edit{background-color:#00000080;border-radius:50px;color:#fff;font-size:13px;inset-inline-end:10px;padding:7px 15px;position:absolute;top:10px}.uppy-Dashboard-FileCard-edit:focus{outline:none}.uppy-Dashboard-FileCard-edit::-moz-focus-inner{border:0}.uppy-Dashboard-FileCard-edit:focus{box-shadow:0 0 0 3px #1269cf80}.uppy-Dashboard-FileCard-edit:hover{background-color:#000c}.uppy-Dashboard-FileCard-info{flex-grow:0;flex-shrink:0;height:40%;overflow-y:auto;padding:30px 20px 20px;-webkit-overflow-scrolling:touch}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-info{background-color:#1f1f1f}.uppy-Dashboard-FileCard-fieldset{border:0;font-size:0;margin:auto auto 12px;max-width:640px;padding:0}.uppy-Dashboard-FileCard-label{color:#525252;display:inline-block;font-size:12px;vertical-align:middle;width:22%}.uppy-size--md .uppy-Dashboard-FileCard-label{font-size:14px}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-label{color:#eaeaea}.uppy-Dashboard-FileCard-input{display:inline-block;vertical-align:middle;width:78%}.uppy-Dashboard-FileCard-actions{align-items:center;background-color:#fafafa;border-top:1px solid #eaeaea;display:flex;flex-grow:0;flex-shrink:0;height:55px;padding:0 15px}.uppy-size--md .uppy-Dashboard-FileCard-actions{height:65px}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-actions{background-color:#1f1f1f;border-top:1px solid #333}.uppy-Dashboard-FileCard-actionsBtn{margin-inline-end:10px}.uppy-Informer{bottom:60px;left:0;position:absolute;right:0;text-align:center;z-index:1005}.uppy-Informer span>div{margin-bottom:6px}.uppy-Informer-animated{opacity:0;transform:translateY(350%);transition:all .3s ease-in;z-index:-1000}.uppy-Informer p{background-color:#757575;border-radius:18px;color:#fff;display:inline-block;font-size:12px;font-weight:400;line-height:1.4;margin:0;max-width:90%;padding:6px 15px}.uppy-size--md .uppy-Informer p{font-size:14px;line-height:1.3;max-width:500px;padding:10px 20px}[data-uppy-theme=dark] .uppy-Informer p{background-color:#333}.uppy-Informer p span{background-color:#fff;border-radius:50%;color:#525252;display:inline-block;font-size:10px;height:13px;inset-inline-start:3px;line-height:12px;margin-inline-start:-1px;position:relative;top:-1px;vertical-align:middle;width:13px}.uppy-Informer p span:hover{cursor:help}.uppy-Informer p span:after{line-height:1.3;word-wrap:break-word}.uppy-Root [aria-label][role~=tooltip]{position:relative}.uppy-Root [aria-label][role~=tooltip]:after,.uppy-Root [aria-label][role~=tooltip]:before{backface-visibility:hidden;box-sizing:border-box;opacity:0;pointer-events:none;position:absolute;transform:translateZ(0);transform-origin:top;transition:all var(--microtip-transition-duration,.18s) var(--microtip-transition-easing,ease-in-out) var(--microtip-transition-delay,0s);will-change:transform;z-index:10}.uppy-Root [aria-label][role~=tooltip]:before{background-size:100% auto!important;content:""}.uppy-Root [aria-label][role~=tooltip]:after{background:#111111e6;border-radius:4px;box-sizing:initial;color:#fff;content:attr(aria-label);font-size:var(--microtip-font-size,13px);font-weight:var(--microtip-font-weight,normal);padding:.5em 1em;text-transform:var(--microtip-text-transform,none);white-space:nowrap}.uppy-Root [aria-label][role~=tooltip]:focus:after,.uppy-Root [aria-label][role~=tooltip]:focus:before,.uppy-Root [aria-label][role~=tooltip]:hover:after,.uppy-Root [aria-label][role~=tooltip]:hover:before{opacity:1;pointer-events:auto}.uppy-Root [role~=tooltip][data-microtip-position|=top]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M2.658 0h32.004c-6 0-11.627 12.002-16.002 12.002S8.594 0 2.658 0'/%3E%3C/svg%3E") no-repeat;bottom:100%;height:6px;left:50%;margin-bottom:5px;transform:translate3d(-50%,0,0);width:18px}.uppy-Root [role~=tooltip][data-microtip-position|=top]:after{bottom:100%;left:50%;margin-bottom:11px;transform:translate3d(-50%,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=top]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position|=top]:hover:before{transform:translate3d(-50%,-5px,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-left]:after{bottom:100%;transform:translate3d(calc(-100% + 16px),0,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-left]:hover:after{transform:translate3d(calc(-100% + 16px),-5px,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-right]:after{bottom:100%;transform:translate3d(-16px,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-right]:hover:after{transform:translate3d(-16px,-5px,0)}.uppy-Root [role~=tooltip][data-microtip-position|=bottom]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M33.342 12H1.338c6 0 11.627-12.002 16.002-12.002S27.406 12 33.342 12'/%3E%3C/svg%3E") no-repeat;bottom:auto;height:6px;left:50%;margin-bottom:0;margin-top:5px;top:100%;transform:translate3d(-50%,-10px,0);width:18px}.uppy-Root [role~=tooltip][data-microtip-position|=bottom]:after{left:50%;margin-top:11px;top:100%;transform:translate3d(-50%,-10px,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position|=bottom]:hover:before{transform:translate3d(-50%,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-left]:after{top:100%;transform:translate3d(calc(-100% + 16px),-10px,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-left]:hover:after{transform:translate3d(calc(-100% + 16px),0,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-right]:after{top:100%;transform:translate3d(-16px,-10px,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-right]:hover:after{transform:translate3d(-16px,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=left]:after,.uppy-Root [role~=tooltip][data-microtip-position=left]:before{inset:50% 100% auto auto;transform:translate3d(10px,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-position=left]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='36'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M0 33.342V1.338c0 6 12.002 11.627 12.002 16.002S0 27.406 0 33.342'/%3E%3C/svg%3E") no-repeat;height:18px;margin-bottom:0;margin-right:5px;width:6px}.uppy-Root [role~=tooltip][data-microtip-position=left]:after{margin-right:11px}.uppy-Root [role~=tooltip][data-microtip-position=left]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position=left]:hover:before{transform:translate3d(0,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-position=right]:after,.uppy-Root [role~=tooltip][data-microtip-position=right]:before{bottom:auto;left:100%;top:50%;transform:translate3d(-10px,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-position=right]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='36'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M12 2.658v32.004c0-6-12.002-11.627-12.002-16.002S12 8.594 12 2.658'/%3E%3C/svg%3E") no-repeat;height:18px;margin-bottom:0;margin-left:5px;width:6px}.uppy-Root [role~=tooltip][data-microtip-position=right]:after{margin-left:11px}.uppy-Root [role~=tooltip][data-microtip-position=right]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position=right]:hover:before{transform:translate3d(0,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-size=small]:after{white-space:normal;width:80px}.uppy-Root [role~=tooltip][data-microtip-size=medium]:after{white-space:normal;width:150px}.uppy-Root [role~=tooltip][data-microtip-size=large]:after{white-space:normal;width:260px}.uppy-StatusBar{background-color:#fff;color:#fff;display:flex;font-size:12px;font-weight:400;height:46px;line-height:40px;position:relative;transition:height .2s;z-index:1001}[data-uppy-theme=dark] .uppy-StatusBar{background-color:#1f1f1f}.uppy-StatusBar:before{background-color:#eaeaea;content:"";height:2px;inset:0;position:absolute;width:100%}[data-uppy-theme=dark] .uppy-StatusBar:before{background-color:#757575}.uppy-StatusBar[aria-hidden=true]{height:0;overflow-y:hidden}.uppy-StatusBar.is-complete .uppy-StatusBar-progress{background-color:#1bb240}.uppy-StatusBar.is-error .uppy-StatusBar-progress{background-color:#e32437}.uppy-StatusBar.is-complete .uppy-StatusBar-statusIndicator{color:#1bb240}.uppy-StatusBar.is-error .uppy-StatusBar-statusIndicator{color:#e32437}.uppy-StatusBar:not([aria-hidden=true]).is-waiting{background-color:#fff;border-top:1px solid #eaeaea;height:65px}[data-uppy-theme=dark] .uppy-StatusBar:not([aria-hidden=true]).is-waiting{background-color:#1f1f1f;border-top:1px solid #333}.uppy-StatusBar-progress{background-color:#1269cf;height:2px;position:absolute;transition:background-color,width .3s ease-out;z-index:1001}.uppy-StatusBar-progress.is-indeterminate{animation:uppy-StatusBar-ProgressStripes 1s linear infinite;background-image:linear-gradient(45deg,#0000004d 25%,#0000 0 50%,#0000004d 0 75%,#0000 0,#0000);background-size:64px 64px}@keyframes uppy-StatusBar-ProgressStripes{0%{background-position:0 0}to{background-position:64px 0}}.uppy-StatusBar.is-postprocessing .uppy-StatusBar-progress,.uppy-StatusBar.is-preprocessing .uppy-StatusBar-progress{background-color:#f6a623}.uppy-StatusBar.is-waiting .uppy-StatusBar-progress{display:none}.uppy-StatusBar-content{align-items:center;color:#333;display:flex;height:100%;padding-inline-start:10px;position:relative;text-overflow:ellipsis;white-space:nowrap;z-index:1002}.uppy-size--md .uppy-StatusBar-content{padding-inline-start:15px}[data-uppy-theme=dark] .uppy-StatusBar-content{color:#eaeaea}.uppy-StatusBar-status{display:flex;flex-direction:column;font-weight:400;justify-content:center;line-height:1.4;padding-inline-end:.3em}.uppy-StatusBar-statusPrimary{display:flex;font-weight:500;line-height:1}.uppy-StatusBar-statusPrimary button.uppy-StatusBar-details{margin-left:5px}[data-uppy-theme=dark] .uppy-StatusBar-statusPrimary{color:#eaeaea}.uppy-StatusBar-statusSecondary{color:#757575;display:inline-block;font-size:11px;line-height:1.2;margin-top:1px;white-space:nowrap}[data-uppy-theme=dark] .uppy-StatusBar-statusSecondary{color:#bbb}.uppy-StatusBar-statusSecondaryHint{display:inline-block;line-height:1;margin-inline-end:5px;vertical-align:middle}.uppy-size--md .uppy-StatusBar-statusSecondaryHint{margin-inline-end:8px}.uppy-StatusBar-statusIndicator{color:#525252;margin-inline-end:7px;position:relative;top:1px}.uppy-StatusBar-statusIndicator svg{vertical-align:text-bottom}.uppy-StatusBar-actions{align-items:center;bottom:0;display:flex;inset-inline-end:10px;position:absolute;top:0;z-index:1004}.uppy-StatusBar.is-waiting .uppy-StatusBar-actions{background-color:#fafafa;height:100%;padding:0 15px;position:static;width:100%}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actions{background-color:#1f1f1f}.uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts{flex-direction:column;height:90px}.uppy-size--md .uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts{flex-direction:row;height:65px}.uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts .uppy-StatusBar-actions{flex-direction:column;justify-content:center}.uppy-size--md .uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts .uppy-StatusBar-actions{flex-direction:row;justify-content:normal}.uppy-StatusBar-actionCircleBtn{cursor:pointer;line-height:1;margin:3px;opacity:.9}.uppy-StatusBar-actionCircleBtn:focus{outline:none}.uppy-StatusBar-actionCircleBtn::-moz-focus-inner{border:0}.uppy-StatusBar-actionCircleBtn:focus{box-shadow:0 0 0 3px #1269cf80}[data-uppy-theme=dark] .uppy-StatusBar-actionCircleBtn:focus{outline:none}[data-uppy-theme=dark] .uppy-StatusBar-actionCircleBtn::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-StatusBar-actionCircleBtn:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-StatusBar-actionCircleBtn:hover{opacity:1}.uppy-StatusBar-actionCircleBtn:focus{border-radius:50%}.uppy-StatusBar-actionCircleBtn svg{vertical-align:bottom}.uppy-StatusBar-actionBtn{color:#1269cf;display:inline-block;font-size:10px;line-height:inherit;vertical-align:middle}.uppy-size--md .uppy-StatusBar-actionBtn{font-size:11px}.uppy-StatusBar-actionBtn--disabled{opacity:.4}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--disabled{opacity:.7}.uppy-StatusBar-actionBtn--retry{background-color:#ff4b23;border-radius:8px;color:#fff;height:16px;line-height:1;margin-inline-end:6px;padding:1px 6px 3px 18px;position:relative}.uppy-StatusBar-actionBtn--retry:focus{outline:none}.uppy-StatusBar-actionBtn--retry::-moz-focus-inner{border:0}.uppy-StatusBar-actionBtn--retry:focus{box-shadow:0 0 0 3px #1269cf80}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--retry:focus{outline:none}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--retry::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--retry:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-StatusBar-actionBtn--retry:hover{background-color:#f92d00}.uppy-StatusBar-actionBtn--retry svg{inset-inline-start:6px;position:absolute;top:3px}.uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload{background-color:#1bb240;color:#fff;font-size:14px;line-height:1;padding:15px 10px;width:100%}.uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload:hover{background-color:#189c38}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload{background-color:#1c8b37}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload:hover{background-color:#18762f}.uppy-size--md .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload{padding:13px 22px;width:auto}.uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload.uppy-StatusBar-actionBtn--disabled:hover{background-color:#1bb240;cursor:not-allowed}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload.uppy-StatusBar-actionBtn--disabled:hover{background-color:#1c8b37}.uppy-StatusBar:not(.is-waiting) .uppy-StatusBar-actionBtn--upload{background-color:initial;color:#1269cf}.uppy-StatusBar-actionBtn--uploadNewlyAdded{border-radius:3px;padding-inline-end:3px;padding-bottom:1px;padding-inline-start:3px}.uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{outline:none}.uppy-StatusBar-actionBtn--uploadNewlyAdded::-moz-focus-inner{border:0}.uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{box-shadow:0 0 0 3px #1269cf80}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{outline:none}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--uploadNewlyAdded::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-StatusBar.is-postprocessing .uppy-StatusBar-actionBtn--uploadNewlyAdded,.uppy-StatusBar.is-preprocessing .uppy-StatusBar-actionBtn--uploadNewlyAdded{display:none}.uppy-StatusBar-actionBtn--done{border-radius:3px;line-height:1;padding:7px 8px}.uppy-StatusBar-actionBtn--done:focus{outline:none}.uppy-StatusBar-actionBtn--done::-moz-focus-inner{border:0}.uppy-StatusBar-actionBtn--done:hover{color:#0e51a0}.uppy-StatusBar-actionBtn--done:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--done:focus{background-color:#333}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--done{color:#02baf2}.uppy-size--md .uppy-StatusBar-actionBtn--done{font-size:14px}.uppy-StatusBar-serviceMsg{color:#000;font-size:11px;line-height:1.1;padding-left:10px}.uppy-size--md .uppy-StatusBar-serviceMsg{font-size:14px;padding-left:15px}[data-uppy-theme=dark] .uppy-StatusBar-serviceMsg{color:#eaeaea}.uppy-StatusBar-serviceMsg-ghostsIcon{left:6px;opacity:.5;position:relative;top:2px;vertical-align:text-bottom;width:10px}.uppy-size--md .uppy-StatusBar-serviceMsg-ghostsIcon{left:10px;top:1px;width:15px}.uppy-StatusBar-details{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#939393;border-radius:50%;color:#fff;cursor:help;display:inline-block;font-size:10px;font-weight:600;height:13px;inset-inline-start:2px;line-height:12px;position:relative;text-align:center;top:0;vertical-align:middle;width:13px}.uppy-StatusBar-details:after{line-height:1.3;word-wrap:break-word}.uppy-StatusBar-spinner{animation-duration:1s;animation-iteration-count:infinite;animation-name:uppy-StatusBar-spinnerAnimation;animation-timing-function:linear;fill:#1269cf;margin-inline-end:10px}.uppy-StatusBar.is-postprocessing .uppy-StatusBar-spinner,.uppy-StatusBar.is-preprocessing .uppy-StatusBar-spinner{fill:#f6a623}@keyframes uppy-StatusBar-spinnerAnimation{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.uppy-transition-slideDownUp-enter{opacity:.01;transform:translate3d(0,-105%,0);transition:transform .25s ease-in-out,opacity .25s ease-in-out}.uppy-transition-slideDownUp-enter.uppy-transition-slideDownUp-enter-active{opacity:1;transform:translateZ(0)}.uppy-transition-slideDownUp-leave{opacity:1;transform:translateZ(0);transition:transform .25s ease-in-out,opacity .25s ease-in-out}.uppy-transition-slideDownUp-leave.uppy-transition-slideDownUp-leave-active{opacity:.01;transform:translate3d(0,-105%,0)}@keyframes uppy-Dashboard-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes uppy-Dashboard-fadeOut{0%{opacity:1}to{opacity:0}}@keyframes uppy-Dashboard-slideDownAndFadeIn{0%{opacity:0;transform:translate3d(-50%,-70%,0)}to{opacity:1;transform:translate3d(-50%,-50%,0)}}@keyframes uppy-Dashboard-slideDownAndFadeIn--small{0%{opacity:0;transform:translate3d(0,-20%,0)}to{opacity:1;transform:translateZ(0)}}@keyframes uppy-Dashboard-slideUpFadeOut{0%{opacity:1;transform:translate3d(-50%,-50%,0)}to{opacity:0;transform:translate3d(-50%,-70%,0)}}@keyframes uppy-Dashboard-slideUpFadeOut--small{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20%,0)}}.uppy-Dashboard--modal{z-index:1001}.uppy-Dashboard--modal[aria-hidden=true]{display:none}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideDownAndFadeIn--small .3s cubic-bezier(0,0,.2,1)}@media only screen and (min-width:820px){.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideDownAndFadeIn .3s cubic-bezier(0,0,.2,1)}}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose>.uppy-Dashboard-overlay{animation:uppy-Dashboard-fadeIn .3s cubic-bezier(0,0,.2,1)}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose.uppy-Dashboard--isClosing>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideUpFadeOut--small .3s cubic-bezier(0,0,.2,1)}@media only screen and (min-width:820px){.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose.uppy-Dashboard--isClosing>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideUpFadeOut .3s cubic-bezier(0,0,.2,1)}}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose.uppy-Dashboard--isClosing>.uppy-Dashboard-overlay{animation:uppy-Dashboard-fadeOut .3s cubic-bezier(0,0,.2,1)}.uppy-Dashboard-isFixed{height:100vh;overflow:hidden}.uppy-Dashboard--modal .uppy-Dashboard-overlay{background-color:#00000080;inset:0;position:fixed;z-index:1001}.uppy-Dashboard-inner{background-color:#f4f4f4;border:1px solid #eaeaea;border-radius:5px;max-height:100%;max-width:100%;outline:none;position:relative}.uppy-size--md .uppy-Dashboard-inner{min-height:auto}@media only screen and (min-width:820px){.uppy-Dashboard-inner{height:500px;width:650px}}.uppy-Dashboard--modal .uppy-Dashboard-inner{z-index:1002}[data-uppy-theme=dark] .uppy-Dashboard-inner{background-color:#1f1f1f}.uppy-Dashboard--isDisabled .uppy-Dashboard-inner{cursor:not-allowed}.uppy-Dashboard-innerWrap{border-radius:5px;display:flex;flex-direction:column;height:100%;opacity:0;overflow:hidden;position:relative}.uppy-Dashboard--isInnerWrapVisible .uppy-Dashboard-innerWrap{opacity:1}.uppy-Dashboard--isDisabled .uppy-Dashboard-innerWrap{cursor:not-allowed;filter:grayscale(100%);opacity:.6;-webkit-user-select:none;-moz-user-select:none;user-select:none}.uppy-Dashboard--isDisabled .uppy-ProviderIconBg{fill:#9f9f9f}.uppy-Dashboard--isDisabled [aria-disabled],.uppy-Dashboard--isDisabled [disabled]{cursor:not-allowed;pointer-events:none}.uppy-Dashboard--modal .uppy-Dashboard-inner{border:none;inset:35px 15px 15px;position:fixed}@media only screen and (min-width:820px){.uppy-Dashboard--modal .uppy-Dashboard-inner{box-shadow:0 5px 15px 4px #00000026;left:50%;right:auto;top:50%;transform:translate(-50%,-50%)}}.uppy-Dashboard-close{color:#ffffffe6;cursor:pointer;display:block;font-size:27px;inset-inline-end:-2px;position:absolute;top:-33px;z-index:1005}.uppy-Dashboard-close:focus{outline:none}.uppy-Dashboard-close::-moz-focus-inner{border:0}.uppy-Dashboard-close:focus{color:#6eabf2}@media only screen and (min-width:820px){.uppy-Dashboard-close{font-size:35px;inset-inline-end:-35px;top:-10px}}.uppy-Dashboard-serviceMsg{background-color:#fffbf7;border-bottom:1px solid #edd4b9;border-top:1px solid #edd4b9;font-size:12px;font-weight:500;line-height:1.3;padding:12px 0;position:relative;top:-1px;z-index:1004}.uppy-size--md .uppy-Dashboard-serviceMsg{font-size:14px;line-height:1.4}[data-uppy-theme=dark] .uppy-Dashboard-serviceMsg{background-color:#1f1f1f;border-bottom:1px solid #333;border-top:1px solid #333;color:#eaeaea}.uppy-Dashboard-serviceMsg-title{display:block;line-height:1;margin-bottom:4px;padding-left:42px}.uppy-Dashboard-serviceMsg-text{padding:0 15px}.uppy-Dashboard-serviceMsg-actionBtn{color:#1269cf;font-size:inherit;font-weight:inherit;vertical-align:initial}[data-uppy-theme=dark] .uppy-Dashboard-serviceMsg-actionBtn{color:#02baf2e6}.uppy-Dashboard-serviceMsg-icon{left:15px;position:absolute;top:10px}.uppy-Dashboard-AddFiles{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;position:relative;text-align:center}[data-uppy-drag-drop-supported=true] .uppy-Dashboard-AddFiles{border:1px dashed #dfdfdf;border-radius:3px;height:calc(100% - 14px);margin:7px}.uppy-Dashboard-AddFilesPanel .uppy-Dashboard-AddFiles{border:none;height:calc(100% - 54px)}.uppy-Dashboard--modal .uppy-Dashboard-AddFiles{border-color:#cfcfcf}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles{border-color:#757575}.uppy-Dashboard-AddFiles-info{display:none;margin-top:auto;padding-bottom:15px;padding-top:15px}.uppy-size--height-md .uppy-Dashboard-AddFiles-info{display:block}.uppy-size--md .uppy-Dashboard-AddFiles-info{bottom:25px;left:0;padding-bottom:0;padding-top:30px;position:absolute;right:0}[data-uppy-num-acquirers="0"] .uppy-Dashboard-AddFiles-info{margin-top:0}.uppy-Dashboard-browse{color:#1269cf;cursor:pointer}.uppy-Dashboard-browse:focus{outline:none}.uppy-Dashboard-browse::-moz-focus-inner{border:0}.uppy-Dashboard-browse:focus,.uppy-Dashboard-browse:hover{border-bottom:1px solid #1269cf}[data-uppy-theme=dark] .uppy-Dashboard-browse{color:#02baf2e6}[data-uppy-theme=dark] .uppy-Dashboard-browse:focus,[data-uppy-theme=dark] .uppy-Dashboard-browse:hover{border-bottom:1px solid #02baf2}.uppy-Dashboard-browseBtn{display:block;font-size:14px;font-weight:500;margin-bottom:5px;margin-top:8px;width:100%}.uppy-size--md .uppy-Dashboard-browseBtn{font-size:15px;margin:15px auto;padding:13px 44px;width:auto}.uppy-Dashboard-AddFiles-list{display:flex;flex:1;flex-direction:column;margin-top:2px;overflow-y:auto;padding:2px 0;width:100%;-webkit-overflow-scrolling:touch}.uppy-size--md .uppy-Dashboard-AddFiles-list{flex:none;flex-direction:row;flex-wrap:wrap;justify-content:center;margin-top:15px;max-width:600px;overflow-y:visible;padding-top:0}.uppy-DashboardTab{border-bottom:1px solid #eaeaea;text-align:center;width:100%}[data-uppy-theme=dark] .uppy-DashboardTab{border-bottom:1px solid #333}.uppy-size--md .uppy-DashboardTab{border-bottom:none;display:inline-block;margin-bottom:10px;width:auto}.uppy-DashboardTab-btn{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:initial;color:#525252;cursor:pointer;flex-direction:row;height:100%;justify-content:left;padding:12px 15px;width:100%}.uppy-DashboardTab-btn:focus{outline:none}.uppy-size--md .uppy-DashboardTab-btn{border-radius:5px;flex-direction:column;margin-inline-end:1px;padding:10px 3px;width:86px}[data-uppy-theme=dark] .uppy-DashboardTab-btn{color:#eaeaea}.uppy-DashboardTab-btn::-moz-focus-inner{border:0}.uppy-DashboardTab-btn:hover{background-color:#e9ecef}[data-uppy-theme=dark] .uppy-DashboardTab-btn:hover{background-color:#333}.uppy-DashboardTab-btn:active,.uppy-DashboardTab-btn:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-DashboardTab-btn:active,[data-uppy-theme=dark] .uppy-DashboardTab-btn:focus{background-color:#525252}.uppy-DashboardTab-btn svg{display:inline-block;max-height:100%;max-width:100%;overflow:hidden;transition:transform .15s ease-in-out;vertical-align:text-top}.uppy-DashboardTab-inner{align-items:center;background-color:#fff;border-radius:8px;box-shadow:0 1px 1px #0000001a,0 1px 2px #0000001a,0 2px 3px #00000005;display:flex;height:32px;justify-content:center;margin-inline-end:10px;width:32px}.uppy-size--md .uppy-DashboardTab-inner{margin-inline-end:0}[data-uppy-theme=dark] .uppy-DashboardTab-inner{background-color:#323232;box-shadow:0 1px 1px #0003,0 1px 2px #0003,0 2px 3px #00000014}.uppy-DashboardTab-name{font-size:14px;font-weight:400}.uppy-size--md .uppy-DashboardTab-name{font-size:12px;line-height:15px;margin-bottom:0;margin-top:8px}.uppy-DashboardTab-iconMyDevice{color:#1269cf}[data-uppy-theme=dark] .uppy-DashboardTab-iconMyDevice{color:#02baf2}.uppy-DashboardTab-iconBox{color:#0061d5}[data-uppy-theme=dark] .uppy-DashboardTab-iconBox{color:#eaeaea}.uppy-DashboardTab-iconDropbox{color:#0061fe}[data-uppy-theme=dark] .uppy-DashboardTab-iconDropbox{color:#eaeaea}.uppy-DashboardTab-iconUnsplash{color:#111}[data-uppy-theme=dark] .uppy-DashboardTab-iconUnsplash{color:#eaeaea}.uppy-DashboardTab-iconWebdav{color:#111}[data-uppy-theme=dark] .uppy-DashboardTab-iconWebdav{color:#eaeaea}.uppy-DashboardTab-iconScreenRec{color:#2c3e50}[data-uppy-theme=dark] .uppy-DashboardTab-iconScreenRec{color:#eaeaea}.uppy-DashboardTab-iconAudio{color:#8030a3}[data-uppy-theme=dark] .uppy-DashboardTab-iconAudio{color:#bf6ee3}.uppy-Dashboard-input{height:.1px;opacity:0;overflow:hidden;position:absolute;width:.1px;z-index:-1}.uppy-DashboardContent-bar{align-items:center;background-color:#fafafa;border-bottom:1px solid #eaeaea;display:flex;flex-shrink:0;height:40px;justify-content:space-between;padding:0 10px;position:relative;width:100%;z-index:1004}.uppy-size--md .uppy-DashboardContent-bar{height:50px;padding:0 15px}[data-uppy-theme=dark] .uppy-DashboardContent-bar{background-color:#1f1f1f;border-bottom:1px solid #333}.uppy-DashboardContent-title{font-size:12px;font-weight:500;left:0;line-height:40px;margin:auto;max-width:170px;overflow-x:hidden;position:absolute;right:0;text-align:center;text-overflow:ellipsis;top:0;white-space:nowrap;width:100%}.uppy-size--md .uppy-DashboardContent-title{font-size:14px;line-height:50px;max-width:300px}[data-uppy-theme=dark] .uppy-DashboardContent-title{color:#eaeaea}.uppy-DashboardContent-back,.uppy-DashboardContent-save{-webkit-appearance:none;background:none;border:0;border-radius:3px;color:inherit;color:#1269cf;cursor:pointer;font-family:inherit;font-size:inherit;font-size:12px;font-weight:400;line-height:1;margin:0;margin-inline-start:-6px;padding:7px 6px}.uppy-DashboardContent-back:focus,.uppy-DashboardContent-save:focus{outline:none}.uppy-DashboardContent-back::-moz-focus-inner,.uppy-DashboardContent-save::-moz-focus-inner{border:0}.uppy-DashboardContent-back:hover,.uppy-DashboardContent-save:hover{color:#0e51a0}.uppy-DashboardContent-back:focus,.uppy-DashboardContent-save:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-DashboardContent-back:focus,[data-uppy-theme=dark] .uppy-DashboardContent-save:focus{background-color:#333}.uppy-size--md .uppy-DashboardContent-back,.uppy-size--md .uppy-DashboardContent-save{font-size:14px}[data-uppy-theme=dark] .uppy-DashboardContent-back,[data-uppy-theme=dark] .uppy-DashboardContent-save{color:#02baf2}.uppy-DashboardContent-addMore{-webkit-appearance:none;background:none;border:0;border-radius:3px;color:inherit;color:#1269cf;cursor:pointer;font-family:inherit;font-size:inherit;font-weight:500;height:29px;line-height:1;margin:0;margin-inline-end:-5px;padding:7px 8px;width:29px}.uppy-DashboardContent-addMore:focus{outline:none}.uppy-DashboardContent-addMore::-moz-focus-inner{border:0}.uppy-DashboardContent-addMore:hover{color:#0e51a0}.uppy-DashboardContent-addMore:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-DashboardContent-addMore:focus{background-color:#333}.uppy-size--md .uppy-DashboardContent-addMore{font-size:14px;height:auto;margin-inline-end:-8px;width:auto}[data-uppy-theme=dark] .uppy-DashboardContent-addMore{color:#02baf2}.uppy-DashboardContent-addMore svg{margin-inline-end:4px;vertical-align:initial}.uppy-size--md .uppy-DashboardContent-addMore svg{height:11px;width:11px}.uppy-DashboardContent-addMoreCaption{display:none}.uppy-size--md .uppy-DashboardContent-addMoreCaption{display:inline}.uppy-DashboardContent-panel{background-color:#f5f5f5;flex:1}.uppy-Dashboard-AddFilesPanel,.uppy-DashboardContent-panel{border-radius:5px;display:flex;flex-direction:column;inset:0;overflow:hidden;position:absolute;z-index:1005}.uppy-Dashboard-AddFilesPanel{background:#fafafa;background:linear-gradient(0deg,#fafafa 35%,#fafafad9);box-shadow:0 0 10px 5px #00000026}[data-uppy-theme=dark] .uppy-Dashboard-AddFilesPanel{background-color:#333;background-image:linear-gradient(0deg,#1f1f1f 35%,#1f1f1fd9)}.uppy-Dashboard--isAddFilesPanelVisible .uppy-Dashboard-files{filter:blur(2px)}.uppy-Dashboard-progress{bottom:0;height:12%;left:0;position:absolute;width:100%}.uppy-Dashboard-progressBarContainer.is-active{height:100%;left:0;position:absolute;top:0;width:100%;z-index:1004}.uppy-Dashboard-filesContainer{flex:1;margin:0;overflow-y:hidden;position:relative}.uppy-Dashboard-filesContainer:after{clear:both;content:"";display:table}.uppy-Dashboard-files{flex:1;margin:0;overflow-y:auto;padding:0 0 10px;-webkit-overflow-scrolling:touch}.uppy-size--md .uppy-Dashboard-files{padding-top:10px}.uppy-Dashboard--singleFile .uppy-Dashboard-filesInner{align-items:center;display:flex;height:100%;justify-content:center}.uppy-Dashboard-dropFilesHereHint{align-items:center;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48'%3E%3Cpath fill='%231269CF' d='M24 1v1C11.85 2 2 11.85 2 24s9.85 22 22 22 22-9.85 22-22S36.15 2 24 2zm0 0V0c13.254 0 24 10.746 24 24S37.254 48 24 48 0 37.254 0 24 10.746 0 24 0zm7.707 19.293a.999.999 0 1 1-1.414 1.414L25 16.414V34a1 1 0 1 1-2 0V16.414l-5.293 5.293a.999.999 0 1 1-1.414-1.414l7-7a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E");background-position:50% 50%;background-repeat:no-repeat;border:1px dashed #1269cf;border-radius:3px;color:#757575;display:flex;font-size:16px;justify-content:center;inset:7px;padding-top:90px;position:absolute;text-align:center;visibility:hidden;z-index:2000}[data-uppy-theme=dark] .uppy-Dashboard-dropFilesHereHint{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48'%3E%3Cpath fill='%2302BAF2' d='M24 1v1C11.85 2 2 11.85 2 24s9.85 22 22 22 22-9.85 22-22S36.15 2 24 2zm0 0V0c13.254 0 24 10.746 24 24S37.254 48 24 48 0 37.254 0 24 10.746 0 24 0zm7.707 19.293a.999.999 0 1 1-1.414 1.414L25 16.414V34a1 1 0 1 1-2 0V16.414l-5.293 5.293a.999.999 0 1 1-1.414-1.414l7-7a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E");border-color:#02baf2;color:#bbb}.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-dropFilesHereHint{pointer-events:none;visibility:visible}.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-files,.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-progressindicators,.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-serviceMsg,.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-DashboardContent-bar{opacity:.15}.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-AddFiles{opacity:.03}.uppy-Dashboard-AddFiles-title{color:#000;font-size:17px;font-weight:500;line-height:1.35;margin-bottom:5px;margin-top:15px;padding:0 15px;text-align:inline-start;width:100%}.uppy-size--md .uppy-Dashboard-AddFiles-title{font-size:21px;font-weight:400;margin-top:5px;max-width:480px;padding:0 35px;text-align:center}[data-uppy-num-acquirers="0"] .uppy-Dashboard-AddFiles-title{text-align:center}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles-title{color:#eaeaea}.uppy-Dashboard-AddFiles-title button{font-weight:500}.uppy-size--md .uppy-Dashboard-AddFiles-title button{font-weight:400}.uppy-Dashboard-note{color:#757575;font-size:14px;line-height:1.25;margin:auto;max-width:350px;padding:0 15px;text-align:center}.uppy-size--md .uppy-Dashboard-note{line-height:1.35;max-width:600px}[data-uppy-theme=dark] .uppy-Dashboard-note{color:#cfcfcf}a.uppy-Dashboard-poweredBy{color:#939393;display:inline-block;font-size:11px;margin-top:8px;text-align:center;text-decoration:none}.uppy-Dashboard-poweredByIcon{margin-left:1px;margin-right:1px;opacity:.9;position:relative;top:1px;vertical-align:text-top;fill:none;stroke:#939393}.uppy-Dashboard-Item-previewIcon{height:25px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:25px;z-index:100}.uppy-size--md .uppy-Dashboard-Item-previewIcon{height:38px;width:38px}.uppy-Dashboard-Item-previewIcon svg{height:100%;width:100%}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-previewIcon{height:100%;max-height:60%;max-width:60%;width:100%}.uppy-Dashboard-Item-previewIconWrap{height:76px;max-height:75%;position:relative}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-previewIconWrap{height:100%;width:100%}.uppy-Dashboard-Item-previewIconBg{filter:drop-shadow(rgba(0,0,0,.1) 0 1px 1px);height:100%;width:100%}.uppy-Dashboard-upload{height:50px;position:relative;width:50px}.uppy-size--md .uppy-Dashboard-upload{height:60px;width:60px}.uppy-Dashboard-upload .uppy-c-icon{position:relative;top:1px;width:50%}.uppy-Dashboard-uploadCount{background-color:#1bb240;border-radius:50%;color:#fff;font-size:8px;height:16px;inset-inline-end:-12px;line-height:16px;position:absolute;top:-12px;width:16px}.uppy-size--md .uppy-Dashboard-uploadCount{font-size:9px;height:18px;line-height:18px;width:18px}.uppy-Dashboard-inner{border:none!important;background:transparent!important}.uppy-Dashboard-innerWrap{border-radius:.5rem;overflow:hidden}.uppy-Dashboard-AddFiles{border:2px dashed hsl(var(--border))!important;border-radius:.5rem!important;background:hsl(var(--muted) / .3)!important;transition:all .2s ease}.uppy-Dashboard-AddFiles:hover{border-color:hsl(var(--primary))!important;background:hsl(var(--muted) / .5)!important}.uppy-Dashboard-AddFiles-title{color:hsl(var(--foreground))!important;font-weight:500!important}.uppy-Dashboard-AddFiles-info{color:hsl(var(--muted-foreground))!important}.uppy-Dashboard-browse{color:hsl(var(--primary))!important;font-weight:500!important}.uppy-Dashboard-browse:hover{text-decoration:underline!important}.uppy-Dashboard-files{background:transparent!important}.uppy-Dashboard-Item{border-bottom-color:hsl(var(--border))!important}.uppy-Dashboard-Item-name{color:hsl(var(--foreground))!important}.uppy-Dashboard-Item-status{color:hsl(var(--muted-foreground))!important}.uppy-StatusBar{background:hsl(var(--muted))!important;border-top:1px solid hsl(var(--border))!important}.uppy-StatusBar-progress{background:hsl(var(--primary))!important}.uppy-StatusBar-content{color:hsl(var(--foreground))!important}.uppy-StatusBar-actionBtn--upload{background:hsl(var(--primary))!important;color:hsl(var(--primary-foreground))!important;border-radius:.375rem!important;font-weight:500!important;padding:.5rem 1rem!important}.uppy-StatusBar-actionBtn--upload:hover{background:hsl(var(--primary) / .9)!important}.uppy-Dashboard-note{color:hsl(var(--muted-foreground))!important;font-size:.75rem!important}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles,.dark .uppy-Dashboard-AddFiles{background:hsl(var(--muted) / .2)!important}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles-title,.dark .uppy-Dashboard-AddFiles-title{color:hsl(var(--foreground))!important}[data-uppy-theme=dark] .uppy-StatusBar,.dark .uppy-StatusBar{background:hsl(var(--muted) / .5)!important}.uppy-Dashboard{font-family:inherit!important}.uppy-Dashboard-Item-preview{border-radius:.375rem!important;overflow:hidden}.uppy-Dashboard-Item-action--remove{color:hsl(var(--destructive))!important}.uppy-Dashboard-Item-action--remove:hover{opacity:.8}.uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progress{color:hsl(var(--success, 142 76% 36%))!important}.uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-progress{color:hsl(var(--destructive))!important}.uppy-Dashboard-files::-webkit-scrollbar{width:6px}.uppy-Dashboard-files::-webkit-scrollbar-track{background:transparent}.uppy-Dashboard-files::-webkit-scrollbar-thumb{background:hsl(var(--muted-foreground) / .3);border-radius:3px}.uppy-Dashboard-files::-webkit-scrollbar-thumb:hover{background:hsl(var(--muted-foreground) / .5)}@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(/assets/KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(/assets/KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(/assets/KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(/assets/KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(/assets/KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(/assets/KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.25"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:grab}.react-flow__node.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%} diff --git a/webui/dist/index.html b/webui/dist/index.html index a613ac01..d6f6f9b6 100644 --- a/webui/dist/index.html +++ b/webui/dist/index.html @@ -7,21 +7,21 @@ MaiBot Dashboard - + - + - +
From c562ebe97af6d95ef595e62a0035225d590ad686 Mon Sep 17 00:00:00 2001 From: SengokuCola <1026294844@qq.com> Date: Tue, 2 Dec 2025 12:47:54 +0800 Subject: [PATCH 43/61] =?UTF-8?q?fix=EF=BC=9A=E4=BF=AE=E5=A4=8D=E5=B9=B6?= =?UTF-8?q?=E5=8F=91=E5=AF=BC=E8=87=B4=E7=9A=84=E9=87=8D=E5=A4=8D=E8=A1=A8?= =?UTF-8?q?=E8=BE=BE=E5=AD=A6=E4=B9=A0=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frequency_control/frequency_control.py | 121 +++-- src/express/expression_learner.py | 61 ++- src/jargon/jargon_miner.py | 505 +++++++++--------- 3 files changed, 364 insertions(+), 323 deletions(-) diff --git a/src/chat/frequency_control/frequency_control.py b/src/chat/frequency_control/frequency_control.py index 78041ae7..897a92cc 100644 --- a/src/chat/frequency_control/frequency_control.py +++ b/src/chat/frequency_control/frequency_control.py @@ -1,5 +1,6 @@ from datetime import datetime import time +import asyncio from typing import Dict from src.chat.utils.chat_message_builder import ( @@ -46,6 +47,8 @@ class FrequencyControl: self.frequency_model = LLMRequest( model_set=model_config.model_task_config.utils_small, request_type="frequency.adjust" ) + # 频率调整锁,防止并发执行 + self._adjust_lock = asyncio.Lock() def get_talk_frequency_adjust(self) -> float: """获取发言频率调整值""" @@ -56,68 +59,78 @@ class FrequencyControl: self.talk_frequency_adjust = max(0.1, min(5.0, value)) async def trigger_frequency_adjust(self) -> None: - msg_list = get_raw_msg_by_timestamp_with_chat( - chat_id=self.chat_id, - timestamp_start=self.last_frequency_adjust_time, - timestamp_end=time.time(), - ) - - if time.time() - self.last_frequency_adjust_time < 160 or len(msg_list) <= 20: - return - else: - new_msg_list = get_raw_msg_by_timestamp_with_chat( + # 使用异步锁防止并发执行 + async with self._adjust_lock: + # 在锁内检查,避免并发触发 + current_time = time.time() + previous_adjust_time = self.last_frequency_adjust_time + + msg_list = get_raw_msg_by_timestamp_with_chat( chat_id=self.chat_id, - timestamp_start=self.last_frequency_adjust_time, - timestamp_end=time.time(), - limit=20, - limit_mode="latest", + timestamp_start=previous_adjust_time, + timestamp_end=current_time, ) - message_str = build_readable_messages( - new_msg_list, - replace_bot_name=True, - timestamp_mode="relative", - read_mark=0.0, - show_actions=False, - ) - time_block = f"当前时间:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}" - bot_name = global_config.bot.nickname - bot_nickname = ( - f",也有人叫你{','.join(global_config.bot.alias_names)}" if global_config.bot.alias_names else "" - ) - name_block = f"你的名字是{bot_name}{bot_nickname},请注意哪些是你自己的发言。" + if current_time - previous_adjust_time < 160 or len(msg_list) <= 20: + return - prompt = await global_prompt_manager.format_prompt( - "frequency_adjust_prompt", - name_block=name_block, - time_block=time_block, - message_str=message_str, - ) - response, (reasoning_content, _, _) = await self.frequency_model.generate_response_async( - prompt, - ) + # 立即更新调整时间,防止并发触发 + self.last_frequency_adjust_time = current_time - # logger.info(f"频率调整 prompt: {prompt}") - # logger.info(f"频率调整 response: {response}") + try: + new_msg_list = get_raw_msg_by_timestamp_with_chat( + chat_id=self.chat_id, + timestamp_start=previous_adjust_time, + timestamp_end=current_time, + limit=20, + limit_mode="latest", + ) - if global_config.debug.show_prompt: - logger.info(f"频率调整 prompt: {prompt}") - logger.info(f"频率调整 response: {response}") - logger.info(f"频率调整 reasoning_content: {reasoning_content}") + message_str = build_readable_messages( + new_msg_list, + replace_bot_name=True, + timestamp_mode="relative", + read_mark=0.0, + show_actions=False, + ) + time_block = f"当前时间:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}" + bot_name = global_config.bot.nickname + bot_nickname = ( + f",也有人叫你{','.join(global_config.bot.alias_names)}" if global_config.bot.alias_names else "" + ) + name_block = f"你的名字是{bot_name}{bot_nickname},请注意哪些是你自己的发言。" - final_value_by_api = frequency_api.get_current_talk_value(self.chat_id) + prompt = await global_prompt_manager.format_prompt( + "frequency_adjust_prompt", + name_block=name_block, + time_block=time_block, + message_str=message_str, + ) + response, (reasoning_content, _, _) = await self.frequency_model.generate_response_async( + prompt, + ) - # LLM依然输出过多内容时取消本次调整。合法最多4个字,但有的模型可能会输出一些markdown换行符等,需要长度宽限 - if len(response) < 20: - if "过于频繁" in response: - logger.info(f"频率调整: 过于频繁,调整值到{final_value_by_api}") - self.talk_frequency_adjust = max(0.1, min(1.5, self.talk_frequency_adjust * 0.8)) - elif "过少" in response: - logger.info(f"频率调整: 过少,调整值到{final_value_by_api}") - self.talk_frequency_adjust = max(0.1, min(1.5, self.talk_frequency_adjust * 1.2)) - self.last_frequency_adjust_time = time.time() - else: - logger.info("频率调整:response不符合要求,取消本次调整") + # logger.info(f"频率调整 prompt: {prompt}") + # logger.info(f"频率调整 response: {response}") + + if global_config.debug.show_prompt: + logger.info(f"频率调整 prompt: {prompt}") + logger.info(f"频率调整 response: {response}") + logger.info(f"频率调整 reasoning_content: {reasoning_content}") + + final_value_by_api = frequency_api.get_current_talk_value(self.chat_id) + + # LLM依然输出过多内容时取消本次调整。合法最多4个字,但有的模型可能会输出一些markdown换行符等,需要长度宽限 + if len(response) < 20: + if "过于频繁" in response: + logger.info(f"频率调整: 过于频繁,调整值到{final_value_by_api}") + self.talk_frequency_adjust = max(0.1, min(1.5, self.talk_frequency_adjust * 0.8)) + elif "过少" in response: + logger.info(f"频率调整: 过少,调整值到{final_value_by_api}") + self.talk_frequency_adjust = max(0.1, min(1.5, self.talk_frequency_adjust * 1.2)) + except Exception as e: + logger.error(f"频率调整失败: {e}") + # 即使失败也保持时间戳更新,避免频繁重试 class FrequencyControlManager: diff --git a/src/express/expression_learner.py b/src/express/expression_learner.py index 76cc8408..af69cad6 100644 --- a/src/express/expression_learner.py +++ b/src/express/expression_learner.py @@ -2,6 +2,7 @@ import time import json import os import re +import asyncio from typing import List, Optional, Tuple import traceback from src.common.logger import get_logger @@ -91,6 +92,9 @@ class ExpressionLearner: # 维护每个chat的上次学习时间 self.last_learning_time: float = time.time() + # 学习锁,防止并发执行学习任务 + self._learning_lock = asyncio.Lock() + # 学习参数 _, self.enable_learning, self.learning_intensity = global_config.expression.get_expression_config_for_chat( self.chat_id @@ -139,32 +143,45 @@ class ExpressionLearner: Returns: bool: 是否成功触发学习 """ - if not self.should_trigger_learning(): - return + # 使用异步锁防止并发执行 + async with self._learning_lock: + # 在锁内检查,避免并发触发 + # 如果锁被持有,其他协程会等待,但等待期间条件可能已变化,所以需要再次检查 + if not self.should_trigger_learning(): + return - try: - logger.info(f"在聊天流 {self.chat_name} 学习表达方式") - # 学习语言风格 - learnt_style = await self.learn_and_store(num=25) + # 保存学习开始前的时间戳,用于获取消息范围 + learning_start_timestamp = time.time() + previous_learning_time = self.last_learning_time + + # 立即更新学习时间,防止并发触发 + self.last_learning_time = learning_start_timestamp - # 更新学习时间 - self.last_learning_time = time.time() + try: + logger.info(f"在聊天流 {self.chat_name} 学习表达方式") + # 学习语言风格,传递学习开始前的时间戳 + learnt_style = await self.learn_and_store(num=25, timestamp_start=previous_learning_time) - if learnt_style: - logger.info(f"聊天流 {self.chat_name} 表达学习完成") - else: - logger.warning(f"聊天流 {self.chat_name} 表达学习未获得有效结果") + if learnt_style: + logger.info(f"聊天流 {self.chat_name} 表达学习完成") + else: + logger.warning(f"聊天流 {self.chat_name} 表达学习未获得有效结果") - except Exception as e: - logger.error(f"为聊天流 {self.chat_name} 触发学习失败: {e}") - traceback.print_exc() - return + except Exception as e: + logger.error(f"为聊天流 {self.chat_name} 触发学习失败: {e}") + traceback.print_exc() + # 即使失败也保持时间戳更新,避免频繁重试 + return - async def learn_and_store(self, num: int = 10) -> List[Tuple[str, str, str]]: + async def learn_and_store(self, num: int = 10, timestamp_start: Optional[float] = None) -> List[Tuple[str, str, str]]: """ 学习并存储表达方式 + + Args: + num: 学习数量 + timestamp_start: 学习开始的时间戳,如果为None则使用self.last_learning_time """ - learnt_expressions = await self.learn_expression(num) + learnt_expressions = await self.learn_expression(num, timestamp_start=timestamp_start) if learnt_expressions is None: logger.info("没有学习到表达风格") @@ -374,18 +391,22 @@ class ExpressionLearner: return matched_expressions - async def learn_expression(self, num: int = 10) -> Optional[List[Tuple[str, str, str, str]]]: + async def learn_expression(self, num: int = 10, timestamp_start: Optional[float] = None) -> Optional[List[Tuple[str, str, str, str]]]: """从指定聊天流学习表达方式 Args: num: 学习数量 + timestamp_start: 学习开始的时间戳,如果为None则使用self.last_learning_time """ current_time = time.time() + + # 使用传入的时间戳,如果没有则使用self.last_learning_time + start_timestamp = timestamp_start if timestamp_start is not None else self.last_learning_time # 获取上次学习之后的消息 random_msg = get_raw_msg_by_timestamp_with_chat_inclusive( chat_id=self.chat_id, - timestamp_start=self.last_learning_time, + timestamp_start=start_timestamp, timestamp_end=current_time, limit=num, ) diff --git a/src/jargon/jargon_miner.py b/src/jargon/jargon_miner.py index 77cb15ce..b7f6c857 100644 --- a/src/jargon/jargon_miner.py +++ b/src/jargon/jargon_miner.py @@ -182,6 +182,9 @@ class JargonMiner: self.stream_name = stream_name if stream_name else self.chat_id self.cache_limit = 100 self.cache: OrderedDict[str, None] = OrderedDict() + + # 黑话提取锁,防止并发执行 + self._extraction_lock = asyncio.Lock() def _add_to_cache(self, content: str) -> None: """将提取到的黑话加入缓存,保持LRU语义""" @@ -436,261 +439,265 @@ class JargonMiner: return bool(recent_messages and len(recent_messages) >= self.min_messages_for_learning) async def run_once(self) -> None: - try: - if not self.should_trigger(): - return - - chat_stream = get_chat_manager().get_stream(self.chat_id) - if not chat_stream: - return - - # 记录本次提取的时间窗口,避免重复提取 - extraction_start_time = self.last_learning_time - extraction_end_time = time.time() - - # 拉取学习窗口内的消息 - messages = get_raw_msg_by_timestamp_with_chat_inclusive( - chat_id=self.chat_id, - timestamp_start=extraction_start_time, - timestamp_end=extraction_end_time, - limit=20, - ) - if not messages: - return - - # 按时间排序,确保编号与上下文一致 - messages = sorted(messages, key=lambda msg: msg.time or 0) - - chat_str, message_id_list = build_readable_messages_with_id( - messages=messages, - replace_bot_name=True, - timestamp_mode="relative", - truncate=False, - show_actions=False, - show_pic=True, - pic_single=True, - ) - if not chat_str.strip(): - return - - msg_id_to_index: Dict[str, int] = {} - for idx, (msg_id, _msg) in enumerate(message_id_list or []): - if not msg_id: - continue - msg_id_to_index[msg_id] = idx - if not msg_id_to_index: - logger.warning("未能生成消息ID映射,跳过本次提取") - return - - prompt: str = await global_prompt_manager.format_prompt( - "extract_jargon_prompt", - bot_name=global_config.bot.nickname, - chat_str=chat_str, - ) - - response, _ = await self.llm.generate_response_async(prompt, temperature=0.2) - if not response: - return - - if global_config.debug.show_jargon_prompt: - logger.info(f"jargon提取提示词: {prompt}") - logger.info(f"jargon提取结果: {response}") - - # 解析为JSON - entries: List[dict] = [] + # 使用异步锁防止并发执行 + async with self._extraction_lock: try: - resp = response.strip() - parsed = None - if resp.startswith("[") and resp.endswith("]"): - parsed = json.loads(resp) - else: - repaired = repair_json(resp) - if isinstance(repaired, str): - parsed = json.loads(repaired) - else: - parsed = repaired - - if isinstance(parsed, dict): - parsed = [parsed] - - if not isinstance(parsed, list): + # 在锁内检查,避免并发触发 + if not self.should_trigger(): return - for item in parsed: - if not isinstance(item, dict): - continue + chat_stream = get_chat_manager().get_stream(self.chat_id) + if not chat_stream: + return - content = str(item.get("content", "")).strip() - msg_id_value = item.get("msg_id") - - if not content: - continue - - if contains_bot_self_name(content): - logger.info(f"解析阶段跳过包含机器人昵称/别名的词条: {content}") - continue - - msg_id_str = str(msg_id_value or "").strip() - if not msg_id_str: - logger.warning(f"解析jargon失败:msg_id缺失,content={content}") - continue - - msg_index = msg_id_to_index.get(msg_id_str) - if msg_index is None: - logger.warning(f"解析jargon失败:msg_id未找到,content={content}, msg_id={msg_id_str}") - continue - - target_msg = messages[msg_index] - if is_bot_message(target_msg): - logger.info(f"解析阶段跳过引用机器人自身消息的词条: content={content}, msg_id={msg_id_str}") - continue - - context_paragraph = build_context_paragraph(messages, msg_index) - if not context_paragraph: - logger.warning(f"解析jargon失败:上下文为空,content={content}, msg_id={msg_id_str}") - continue - - entries.append({"content": content, "raw_content": [context_paragraph]}) - cached_entries = self._collect_cached_entries(messages) - if cached_entries: - entries.extend(cached_entries) - except Exception as e: - logger.error(f"解析jargon JSON失败: {e}; 原始: {response}") - return - - if not entries: - return - - # 去重并合并raw_content(按 content 聚合) - merged_entries: OrderedDict[str, Dict[str, List[str]]] = OrderedDict() - for entry in entries: - content_key = entry["content"] - raw_list = entry.get("raw_content", []) or [] - if content_key in merged_entries: - merged_entries[content_key]["raw_content"].extend(raw_list) - else: - merged_entries[content_key] = { - "content": content_key, - "raw_content": list(raw_list), - } - - uniq_entries = [] - for merged_entry in merged_entries.values(): - raw_content_list = merged_entry["raw_content"] - if raw_content_list: - merged_entry["raw_content"] = list(dict.fromkeys(raw_content_list)) - uniq_entries.append(merged_entry) - - saved = 0 - updated = 0 - for entry in uniq_entries: - content = entry["content"] - raw_content_list = entry["raw_content"] # 已经是列表 - - try: - # 查询所有content匹配的记录 - query = Jargon.select().where(Jargon.content == content) - - # 查找匹配的记录 - matched_obj = None - for obj in query: - if global_config.jargon.all_global: - # 开启all_global:所有content匹配的记录都可以 - matched_obj = obj - break - else: - # 关闭all_global:需要检查chat_id列表是否包含目标chat_id - chat_id_list = parse_chat_id_list(obj.chat_id) - if chat_id_list_contains(chat_id_list, self.chat_id): - matched_obj = obj - break - - if matched_obj: - obj = matched_obj - try: - obj.count = (obj.count or 0) + 1 - except Exception: - obj.count = 1 - - # 合并raw_content列表:读取现有列表,追加新值,去重 - existing_raw_content = [] - if obj.raw_content: - try: - existing_raw_content = ( - json.loads(obj.raw_content) if isinstance(obj.raw_content, str) else obj.raw_content - ) - if not isinstance(existing_raw_content, list): - existing_raw_content = [existing_raw_content] if existing_raw_content else [] - except (json.JSONDecodeError, TypeError): - existing_raw_content = [obj.raw_content] if obj.raw_content else [] - - # 合并并去重 - merged_list = list(dict.fromkeys(existing_raw_content + raw_content_list)) - obj.raw_content = json.dumps(merged_list, ensure_ascii=False) - - # 更新chat_id列表:增加当前chat_id的计数 - chat_id_list = parse_chat_id_list(obj.chat_id) - updated_chat_id_list = update_chat_id_list(chat_id_list, self.chat_id, increment=1) - obj.chat_id = json.dumps(updated_chat_id_list, ensure_ascii=False) - - # 开启all_global时,确保记录标记为is_global=True - if global_config.jargon.all_global: - obj.is_global = True - # 关闭all_global时,保持原有is_global不变(不修改) - - obj.save() - - # 检查是否需要推断(达到阈值且超过上次判定值) - if _should_infer_meaning(obj): - # 异步触发推断,不阻塞主流程 - # 重新加载对象以确保数据最新 - jargon_id = obj.id - asyncio.create_task(self._infer_meaning_by_id(jargon_id)) - - updated += 1 - else: - # 没找到匹配记录,创建新记录 - if global_config.jargon.all_global: - # 开启all_global:新记录默认为is_global=True - is_global_new = True - else: - # 关闭all_global:新记录is_global=False - is_global_new = False - - # 使用新格式创建chat_id列表:[[chat_id, count]] - chat_id_list = [[self.chat_id, 1]] - chat_id_json = json.dumps(chat_id_list, ensure_ascii=False) - - Jargon.create( - content=content, - raw_content=json.dumps(raw_content_list, ensure_ascii=False), - chat_id=chat_id_json, - is_global=is_global_new, - count=1, - ) - saved += 1 - except Exception as e: - logger.error(f"保存jargon失败: chat_id={self.chat_id}, content={content}, err={e}") - continue - finally: - self._add_to_cache(content) - - # 固定输出提取的jargon结果,格式化为可读形式(只要有提取结果就输出) - if uniq_entries: - # 收集所有提取的jargon内容 - jargon_list = [entry["content"] for entry in uniq_entries] - jargon_str = ",".join(jargon_list) - - # 输出格式化的结果(使用logger.info会自动应用jargon模块的颜色) - logger.info(f"[{self.stream_name}]疑似黑话: {jargon_str}") - - # 更新为本次提取的结束时间,确保不会重复提取相同的消息窗口 + # 记录本次提取的时间窗口,避免重复提取 + extraction_start_time = self.last_learning_time + extraction_end_time = time.time() + + # 立即更新学习时间,防止并发触发 self.last_learning_time = extraction_end_time - if saved or updated: - logger.info(f"jargon写入: 新增 {saved} 条,更新 {updated} 条,chat_id={self.chat_id}") - except Exception as e: - logger.error(f"JargonMiner 运行失败: {e}") + # 拉取学习窗口内的消息 + messages = get_raw_msg_by_timestamp_with_chat_inclusive( + chat_id=self.chat_id, + timestamp_start=extraction_start_time, + timestamp_end=extraction_end_time, + limit=20, + ) + if not messages: + return + + # 按时间排序,确保编号与上下文一致 + messages = sorted(messages, key=lambda msg: msg.time or 0) + + chat_str, message_id_list = build_readable_messages_with_id( + messages=messages, + replace_bot_name=True, + timestamp_mode="relative", + truncate=False, + show_actions=False, + show_pic=True, + pic_single=True, + ) + if not chat_str.strip(): + return + + msg_id_to_index: Dict[str, int] = {} + for idx, (msg_id, _msg) in enumerate(message_id_list or []): + if not msg_id: + continue + msg_id_to_index[msg_id] = idx + if not msg_id_to_index: + logger.warning("未能生成消息ID映射,跳过本次提取") + return + + prompt: str = await global_prompt_manager.format_prompt( + "extract_jargon_prompt", + bot_name=global_config.bot.nickname, + chat_str=chat_str, + ) + + response, _ = await self.llm.generate_response_async(prompt, temperature=0.2) + if not response: + return + + if global_config.debug.show_jargon_prompt: + logger.info(f"jargon提取提示词: {prompt}") + logger.info(f"jargon提取结果: {response}") + + # 解析为JSON + entries: List[dict] = [] + try: + resp = response.strip() + parsed = None + if resp.startswith("[") and resp.endswith("]"): + parsed = json.loads(resp) + else: + repaired = repair_json(resp) + if isinstance(repaired, str): + parsed = json.loads(repaired) + else: + parsed = repaired + + if isinstance(parsed, dict): + parsed = [parsed] + + if not isinstance(parsed, list): + return + + for item in parsed: + if not isinstance(item, dict): + continue + + content = str(item.get("content", "")).strip() + msg_id_value = item.get("msg_id") + + if not content: + continue + + if contains_bot_self_name(content): + logger.info(f"解析阶段跳过包含机器人昵称/别名的词条: {content}") + continue + + msg_id_str = str(msg_id_value or "").strip() + if not msg_id_str: + logger.warning(f"解析jargon失败:msg_id缺失,content={content}") + continue + + msg_index = msg_id_to_index.get(msg_id_str) + if msg_index is None: + logger.warning(f"解析jargon失败:msg_id未找到,content={content}, msg_id={msg_id_str}") + continue + + target_msg = messages[msg_index] + if is_bot_message(target_msg): + logger.info(f"解析阶段跳过引用机器人自身消息的词条: content={content}, msg_id={msg_id_str}") + continue + + context_paragraph = build_context_paragraph(messages, msg_index) + if not context_paragraph: + logger.warning(f"解析jargon失败:上下文为空,content={content}, msg_id={msg_id_str}") + continue + + entries.append({"content": content, "raw_content": [context_paragraph]}) + cached_entries = self._collect_cached_entries(messages) + if cached_entries: + entries.extend(cached_entries) + except Exception as e: + logger.error(f"解析jargon JSON失败: {e}; 原始: {response}") + return + + if not entries: + return + + # 去重并合并raw_content(按 content 聚合) + merged_entries: OrderedDict[str, Dict[str, List[str]]] = OrderedDict() + for entry in entries: + content_key = entry["content"] + raw_list = entry.get("raw_content", []) or [] + if content_key in merged_entries: + merged_entries[content_key]["raw_content"].extend(raw_list) + else: + merged_entries[content_key] = { + "content": content_key, + "raw_content": list(raw_list), + } + + uniq_entries = [] + for merged_entry in merged_entries.values(): + raw_content_list = merged_entry["raw_content"] + if raw_content_list: + merged_entry["raw_content"] = list(dict.fromkeys(raw_content_list)) + uniq_entries.append(merged_entry) + + saved = 0 + updated = 0 + for entry in uniq_entries: + content = entry["content"] + raw_content_list = entry["raw_content"] # 已经是列表 + + try: + # 查询所有content匹配的记录 + query = Jargon.select().where(Jargon.content == content) + + # 查找匹配的记录 + matched_obj = None + for obj in query: + if global_config.jargon.all_global: + # 开启all_global:所有content匹配的记录都可以 + matched_obj = obj + break + else: + # 关闭all_global:需要检查chat_id列表是否包含目标chat_id + chat_id_list = parse_chat_id_list(obj.chat_id) + if chat_id_list_contains(chat_id_list, self.chat_id): + matched_obj = obj + break + + if matched_obj: + obj = matched_obj + try: + obj.count = (obj.count or 0) + 1 + except Exception: + obj.count = 1 + + # 合并raw_content列表:读取现有列表,追加新值,去重 + existing_raw_content = [] + if obj.raw_content: + try: + existing_raw_content = ( + json.loads(obj.raw_content) if isinstance(obj.raw_content, str) else obj.raw_content + ) + if not isinstance(existing_raw_content, list): + existing_raw_content = [existing_raw_content] if existing_raw_content else [] + except (json.JSONDecodeError, TypeError): + existing_raw_content = [obj.raw_content] if obj.raw_content else [] + + # 合并并去重 + merged_list = list(dict.fromkeys(existing_raw_content + raw_content_list)) + obj.raw_content = json.dumps(merged_list, ensure_ascii=False) + + # 更新chat_id列表:增加当前chat_id的计数 + chat_id_list = parse_chat_id_list(obj.chat_id) + updated_chat_id_list = update_chat_id_list(chat_id_list, self.chat_id, increment=1) + obj.chat_id = json.dumps(updated_chat_id_list, ensure_ascii=False) + + # 开启all_global时,确保记录标记为is_global=True + if global_config.jargon.all_global: + obj.is_global = True + # 关闭all_global时,保持原有is_global不变(不修改) + + obj.save() + + # 检查是否需要推断(达到阈值且超过上次判定值) + if _should_infer_meaning(obj): + # 异步触发推断,不阻塞主流程 + # 重新加载对象以确保数据最新 + jargon_id = obj.id + asyncio.create_task(self._infer_meaning_by_id(jargon_id)) + + updated += 1 + else: + # 没找到匹配记录,创建新记录 + if global_config.jargon.all_global: + # 开启all_global:新记录默认为is_global=True + is_global_new = True + else: + # 关闭all_global:新记录is_global=False + is_global_new = False + + # 使用新格式创建chat_id列表:[[chat_id, count]] + chat_id_list = [[self.chat_id, 1]] + chat_id_json = json.dumps(chat_id_list, ensure_ascii=False) + + Jargon.create( + content=content, + raw_content=json.dumps(raw_content_list, ensure_ascii=False), + chat_id=chat_id_json, + is_global=is_global_new, + count=1, + ) + saved += 1 + except Exception as e: + logger.error(f"保存jargon失败: chat_id={self.chat_id}, content={content}, err={e}") + continue + finally: + self._add_to_cache(content) + + # 固定输出提取的jargon结果,格式化为可读形式(只要有提取结果就输出) + if uniq_entries: + # 收集所有提取的jargon内容 + jargon_list = [entry["content"] for entry in uniq_entries] + jargon_str = ",".join(jargon_list) + + # 输出格式化的结果(使用logger.info会自动应用jargon模块的颜色) + logger.info(f"[{self.stream_name}]疑似黑话: {jargon_str}") + + if saved or updated: + logger.info(f"jargon写入: 新增 {saved} 条,更新 {updated} 条,chat_id={self.chat_id}") + except Exception as e: + logger.error(f"JargonMiner 运行失败: {e}") + # 即使失败也保持时间戳更新,避免频繁重试 class JargonMinerManager: From b79ee9855c226b1873c186ec18a74eb7c83f3b0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Tue, 2 Dec 2025 13:46:16 +0800 Subject: [PATCH 44/61] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E9=BB=91?= =?UTF-8?q?=E8=AF=9D=E7=AE=A1=E7=90=86=E8=B7=AF=E7=94=B1=EF=BC=8C=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E9=BB=91=E8=AF=9D=E7=9A=84=E5=A2=9E=E5=88=A0=E6=94=B9?= =?UTF-8?q?=E6=9F=A5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/webui/jargon_routes.py | 547 +++++++++++++++++++++++++++++++++++++ src/webui/routes.py | 3 + 2 files changed, 550 insertions(+) create mode 100644 src/webui/jargon_routes.py diff --git a/src/webui/jargon_routes.py b/src/webui/jargon_routes.py new file mode 100644 index 00000000..51012267 --- /dev/null +++ b/src/webui/jargon_routes.py @@ -0,0 +1,547 @@ +"""黑话(俚语)管理路由""" + +import json +from typing import Optional, List +from fastapi import APIRouter, HTTPException, Query +from pydantic import BaseModel, Field +from peewee import fn + +from src.common.logger import get_logger +from src.common.database.database_model import Jargon, ChatStreams + +logger = get_logger("webui.jargon") + +router = APIRouter(prefix="/jargon", tags=["Jargon"]) + + +# ==================== 辅助函数 ==================== + + +def parse_chat_id_to_stream_ids(chat_id_str: str) -> List[str]: + """ + 解析 chat_id 字段,提取所有 stream_id + chat_id 格式: [["stream_id", user_id], ...] 或直接是 stream_id 字符串 + """ + if not chat_id_str: + return [] + + try: + # 尝试解析为 JSON + parsed = json.loads(chat_id_str) + if isinstance(parsed, list): + # 格式: [["stream_id", user_id], ...] + stream_ids = [] + for item in parsed: + if isinstance(item, list) and len(item) >= 1: + stream_ids.append(str(item[0])) + return stream_ids + else: + # 其他格式,返回原始字符串 + return [chat_id_str] + except (json.JSONDecodeError, TypeError): + # 不是有效的 JSON,可能是直接的 stream_id + return [chat_id_str] + + +def get_display_name_for_chat_id(chat_id_str: str) -> str: + """ + 获取 chat_id 的显示名称 + 尝试解析 JSON 并查询 ChatStreams 表获取群聊名称 + """ + stream_ids = parse_chat_id_to_stream_ids(chat_id_str) + + if not stream_ids: + return chat_id_str + + # 查询所有 stream_id 对应的名称 + names = [] + for stream_id in stream_ids: + chat_stream = ChatStreams.get_or_none(ChatStreams.stream_id == stream_id) + if chat_stream and chat_stream.group_name: + names.append(chat_stream.group_name) + else: + # 如果没找到,显示截断的 stream_id + names.append(stream_id[:8] + "..." if len(stream_id) > 8 else stream_id) + + return ", ".join(names) if names else chat_id_str + + +# ==================== 请求/响应模型 ==================== + + +class JargonResponse(BaseModel): + """黑话信息响应""" + + id: int + content: str + raw_content: Optional[str] = None + meaning: Optional[str] = None + chat_id: str + stream_id: Optional[str] = None # 解析后的 stream_id,用于前端编辑时匹配 + chat_name: Optional[str] = None # 解析后的聊天名称,用于前端显示 + is_global: bool = False + count: int = 0 + is_jargon: Optional[bool] = None + is_complete: bool = False + inference_with_context: Optional[str] = None + inference_content_only: Optional[str] = None + + +class JargonListResponse(BaseModel): + """黑话列表响应""" + + success: bool = True + total: int + page: int + page_size: int + data: List[JargonResponse] + + +class JargonDetailResponse(BaseModel): + """黑话详情响应""" + + success: bool = True + data: JargonResponse + + +class JargonCreateRequest(BaseModel): + """黑话创建请求""" + + content: str = Field(..., description="黑话内容") + raw_content: Optional[str] = Field(None, description="原始内容") + meaning: Optional[str] = Field(None, description="含义") + chat_id: str = Field(..., description="聊天ID") + is_global: bool = Field(False, description="是否全局") + + +class JargonUpdateRequest(BaseModel): + """黑话更新请求""" + + content: Optional[str] = None + raw_content: Optional[str] = None + meaning: Optional[str] = None + chat_id: Optional[str] = None + is_global: Optional[bool] = None + is_jargon: Optional[bool] = None + + +class JargonCreateResponse(BaseModel): + """黑话创建响应""" + + success: bool = True + message: str + data: JargonResponse + + +class JargonUpdateResponse(BaseModel): + """黑话更新响应""" + + success: bool = True + message: str + data: Optional[JargonResponse] = None + + +class JargonDeleteResponse(BaseModel): + """黑话删除响应""" + + success: bool = True + message: str + deleted_count: int = 0 + + +class BatchDeleteRequest(BaseModel): + """批量删除请求""" + + ids: List[int] = Field(..., description="要删除的黑话ID列表") + + +class JargonStatsResponse(BaseModel): + """黑话统计响应""" + + success: bool = True + data: dict + + +class ChatInfoResponse(BaseModel): + """聊天信息响应""" + + chat_id: str + chat_name: str + platform: Optional[str] = None + is_group: bool = False + + +class ChatListResponse(BaseModel): + """聊天列表响应""" + + success: bool = True + data: List[ChatInfoResponse] + + +# ==================== 工具函数 ==================== + + +def jargon_to_dict(jargon: Jargon) -> dict: + """将 Jargon ORM 对象转换为字典""" + # 解析 chat_id 获取显示名称和 stream_id + chat_name = get_display_name_for_chat_id(jargon.chat_id) if jargon.chat_id else None + stream_ids = parse_chat_id_to_stream_ids(jargon.chat_id) if jargon.chat_id else [] + stream_id = stream_ids[0] if stream_ids else None + + return { + "id": jargon.id, + "content": jargon.content, + "raw_content": jargon.raw_content, + "meaning": jargon.meaning, + "chat_id": jargon.chat_id, + "stream_id": stream_id, + "chat_name": chat_name, + "is_global": jargon.is_global, + "count": jargon.count, + "is_jargon": jargon.is_jargon, + "is_complete": jargon.is_complete, + "inference_with_context": jargon.inference_with_context, + "inference_content_only": jargon.inference_content_only, + } + + +# ==================== API 端点 ==================== + + +@router.get("/list", response_model=JargonListResponse) +async def get_jargon_list( + page: int = Query(1, ge=1, description="页码"), + page_size: int = Query(20, ge=1, le=100, description="每页数量"), + search: Optional[str] = Query(None, description="搜索关键词"), + chat_id: Optional[str] = Query(None, description="按聊天ID筛选"), + is_jargon: Optional[bool] = Query(None, description="按是否是黑话筛选"), + is_global: Optional[bool] = Query(None, description="按是否全局筛选"), +): + """获取黑话列表""" + try: + # 构建查询 + query = Jargon.select() + + # 搜索过滤 + if search: + query = query.where( + (Jargon.content.contains(search)) + | (Jargon.meaning.contains(search)) + | (Jargon.raw_content.contains(search)) + ) + + # 按聊天ID筛选(使用 contains 匹配,因为 chat_id 是 JSON 格式) + if chat_id: + # 从传入的 chat_id 中解析出 stream_id + stream_ids = parse_chat_id_to_stream_ids(chat_id) + if stream_ids: + # 使用第一个 stream_id 进行模糊匹配 + query = query.where(Jargon.chat_id.contains(stream_ids[0])) + else: + # 如果无法解析,使用精确匹配 + query = query.where(Jargon.chat_id == chat_id) + + # 按是否是黑话筛选 + if is_jargon is not None: + query = query.where(Jargon.is_jargon == is_jargon) + + # 按是否全局筛选 + if is_global is not None: + query = query.where(Jargon.is_global == is_global) + + # 获取总数 + total = query.count() + + # 分页和排序(按使用次数降序) + query = query.order_by(Jargon.count.desc(), Jargon.id.desc()) + query = query.paginate(page, page_size) + + # 转换为响应格式 + data = [jargon_to_dict(j) for j in query] + + return JargonListResponse( + success=True, + total=total, + page=page, + page_size=page_size, + data=data, + ) + + except Exception as e: + logger.error(f"获取黑话列表失败: {e}") + raise HTTPException(status_code=500, detail=f"获取黑话列表失败: {str(e)}") from e + + +@router.get("/chats", response_model=ChatListResponse) +async def get_chat_list(): + """获取所有有黑话记录的聊天列表""" + try: + # 获取所有不同的 chat_id + chat_ids = ( + Jargon.select(Jargon.chat_id) + .distinct() + .where(Jargon.chat_id.is_null(False)) + ) + + chat_id_list = [j.chat_id for j in chat_ids if j.chat_id] + + # 用于按 stream_id 去重 + seen_stream_ids: set[str] = set() + + for chat_id in chat_id_list: + stream_ids = parse_chat_id_to_stream_ids(chat_id) + if stream_ids: + seen_stream_ids.add(stream_ids[0]) + + result = [] + for stream_id in seen_stream_ids: + # 尝试从 ChatStreams 表获取聊天名称 + chat_stream = ChatStreams.get_or_none(ChatStreams.stream_id == stream_id) + if chat_stream: + result.append( + ChatInfoResponse( + chat_id=stream_id, # 使用 stream_id,方便筛选匹配 + chat_name=chat_stream.group_name or stream_id, + platform=chat_stream.platform, + is_group=True, + ) + ) + else: + result.append( + ChatInfoResponse( + chat_id=stream_id, # 使用 stream_id + chat_name=stream_id[:8] + "..." if len(stream_id) > 8 else stream_id, + platform=None, + is_group=False, + ) + ) + + return ChatListResponse(success=True, data=result) + + except Exception as e: + logger.error(f"获取聊天列表失败: {e}") + raise HTTPException(status_code=500, detail=f"获取聊天列表失败: {str(e)}") from e + + +@router.get("/stats/summary", response_model=JargonStatsResponse) +async def get_jargon_stats(): + """获取黑话统计数据""" + try: + # 总数量 + total = Jargon.select().count() + + # 已确认是黑话的数量 + confirmed_jargon = Jargon.select().where(Jargon.is_jargon == True).count() + + # 已确认不是黑话的数量 + confirmed_not_jargon = Jargon.select().where(Jargon.is_jargon == False).count() + + # 未判定的数量 + pending = Jargon.select().where(Jargon.is_jargon.is_null()).count() + + # 全局黑话数量 + global_count = Jargon.select().where(Jargon.is_global == True).count() + + # 已完成推断的数量 + complete_count = Jargon.select().where(Jargon.is_complete == True).count() + + # 关联的聊天数量 + chat_count = ( + Jargon.select(Jargon.chat_id) + .distinct() + .where(Jargon.chat_id.is_null(False)) + .count() + ) + + # 按聊天统计 TOP 5 + top_chats = ( + Jargon.select(Jargon.chat_id, fn.COUNT(Jargon.id).alias("count")) + .group_by(Jargon.chat_id) + .order_by(fn.COUNT(Jargon.id).desc()) + .limit(5) + ) + top_chats_dict = {j.chat_id: j.count for j in top_chats if j.chat_id} + + return JargonStatsResponse( + success=True, + data={ + "total": total, + "confirmed_jargon": confirmed_jargon, + "confirmed_not_jargon": confirmed_not_jargon, + "pending": pending, + "global_count": global_count, + "complete_count": complete_count, + "chat_count": chat_count, + "top_chats": top_chats_dict, + }, + ) + + except Exception as e: + logger.error(f"获取黑话统计失败: {e}") + raise HTTPException(status_code=500, detail=f"获取黑话统计失败: {str(e)}") from e + + +@router.get("/{jargon_id}", response_model=JargonDetailResponse) +async def get_jargon_detail(jargon_id: int): + """获取黑话详情""" + try: + jargon = Jargon.get_or_none(Jargon.id == jargon_id) + if not jargon: + raise HTTPException(status_code=404, detail="黑话不存在") + + return JargonDetailResponse(success=True, data=jargon_to_dict(jargon)) + + except HTTPException: + raise + except Exception as e: + logger.error(f"获取黑话详情失败: {e}") + raise HTTPException(status_code=500, detail=f"获取黑话详情失败: {str(e)}") from e + + +@router.post("/", response_model=JargonCreateResponse) +async def create_jargon(request: JargonCreateRequest): + """创建黑话""" + try: + # 检查是否已存在相同内容的黑话 + existing = Jargon.get_or_none( + (Jargon.content == request.content) & (Jargon.chat_id == request.chat_id) + ) + if existing: + raise HTTPException(status_code=400, detail="该聊天中已存在相同内容的黑话") + + # 创建黑话 + jargon = Jargon.create( + content=request.content, + raw_content=request.raw_content, + meaning=request.meaning, + chat_id=request.chat_id, + is_global=request.is_global, + count=0, + is_jargon=None, + is_complete=False, + ) + + logger.info(f"创建黑话成功: id={jargon.id}, content={request.content}") + + return JargonCreateResponse( + success=True, + message="创建成功", + data=jargon_to_dict(jargon), + ) + + except HTTPException: + raise + except Exception as e: + logger.error(f"创建黑话失败: {e}") + raise HTTPException(status_code=500, detail=f"创建黑话失败: {str(e)}") from e + + +@router.patch("/{jargon_id}", response_model=JargonUpdateResponse) +async def update_jargon(jargon_id: int, request: JargonUpdateRequest): + """更新黑话(增量更新)""" + try: + jargon = Jargon.get_or_none(Jargon.id == jargon_id) + if not jargon: + raise HTTPException(status_code=404, detail="黑话不存在") + + # 增量更新字段 + update_data = request.model_dump(exclude_unset=True) + if update_data: + for field, value in update_data.items(): + if value is not None or field in ["meaning", "raw_content", "is_jargon"]: + setattr(jargon, field, value) + jargon.save() + + logger.info(f"更新黑话成功: id={jargon_id}") + + return JargonUpdateResponse( + success=True, + message="更新成功", + data=jargon_to_dict(jargon), + ) + + except HTTPException: + raise + except Exception as e: + logger.error(f"更新黑话失败: {e}") + raise HTTPException(status_code=500, detail=f"更新黑话失败: {str(e)}") from e + + +@router.delete("/{jargon_id}", response_model=JargonDeleteResponse) +async def delete_jargon(jargon_id: int): + """删除黑话""" + try: + jargon = Jargon.get_or_none(Jargon.id == jargon_id) + if not jargon: + raise HTTPException(status_code=404, detail="黑话不存在") + + content = jargon.content + jargon.delete_instance() + + logger.info(f"删除黑话成功: id={jargon_id}, content={content}") + + return JargonDeleteResponse( + success=True, + message="删除成功", + deleted_count=1, + ) + + except HTTPException: + raise + except Exception as e: + logger.error(f"删除黑话失败: {e}") + raise HTTPException(status_code=500, detail=f"删除黑话失败: {str(e)}") from e + + +@router.post("/batch/delete", response_model=JargonDeleteResponse) +async def batch_delete_jargons(request: BatchDeleteRequest): + """批量删除黑话""" + try: + if not request.ids: + raise HTTPException(status_code=400, detail="ID列表不能为空") + + deleted_count = Jargon.delete().where(Jargon.id.in_(request.ids)).execute() + + logger.info(f"批量删除黑话成功: 删除了 {deleted_count} 条记录") + + return JargonDeleteResponse( + success=True, + message=f"成功删除 {deleted_count} 条黑话", + deleted_count=deleted_count, + ) + + except HTTPException: + raise + except Exception as e: + logger.error(f"批量删除黑话失败: {e}") + raise HTTPException(status_code=500, detail=f"批量删除黑话失败: {str(e)}") from e + + +@router.post("/batch/set-jargon", response_model=JargonUpdateResponse) +async def batch_set_jargon_status( + ids: List[int] = Query(..., description="黑话ID列表"), + is_jargon: bool = Query(..., description="是否是黑话"), +): + """批量设置黑话状态""" + try: + if not ids: + raise HTTPException(status_code=400, detail="ID列表不能为空") + + updated_count = ( + Jargon.update(is_jargon=is_jargon) + .where(Jargon.id.in_(ids)) + .execute() + ) + + logger.info(f"批量更新黑话状态成功: 更新了 {updated_count} 条记录,is_jargon={is_jargon}") + + return JargonUpdateResponse( + success=True, + message=f"成功更新 {updated_count} 条黑话状态", + ) + + except HTTPException: + raise + except Exception as e: + logger.error(f"批量更新黑话状态失败: {e}") + raise HTTPException(status_code=500, detail=f"批量更新黑话状态失败: {str(e)}") from e diff --git a/src/webui/routes.py b/src/webui/routes.py index c3d6fd9e..2c0fc9f7 100644 --- a/src/webui/routes.py +++ b/src/webui/routes.py @@ -10,6 +10,7 @@ from .config_routes import router as config_router from .statistics_routes import router as statistics_router from .person_routes import router as person_router from .expression_routes import router as expression_router +from .jargon_routes import router as jargon_router from .emoji_routes import router as emoji_router from .plugin_routes import router as plugin_router from .plugin_progress_ws import get_progress_router @@ -29,6 +30,8 @@ router.include_router(statistics_router) router.include_router(person_router) # 注册表达方式管理路由 router.include_router(expression_router) +# 注册黑话管理路由 +router.include_router(jargon_router) # 注册表情包管理路由 router.include_router(emoji_router) # 注册插件管理路由 From fa0211c87c24351dabc16b2ae464f75c595b7a3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Tue, 2 Dec 2025 14:04:07 +0800 Subject: [PATCH 45/61] WebUI dc4d4c833291d27a44cdf9ca9cc284c31ca54ca5 --- webui/dist/assets/icons-DUfC2NKX.js | 1 + webui/dist/assets/icons-SnP_l694.js | 1 - webui/dist/assets/index-BS7Qg77u.css | 1 - webui/dist/assets/index-ByB1XZQ6.js | 52 ---------------------------- webui/dist/assets/index-DuFwC87p.js | 52 ++++++++++++++++++++++++++++ webui/dist/assets/index-QJDQd8Xo.css | 1 + webui/dist/index.html | 6 ++-- 7 files changed, 57 insertions(+), 57 deletions(-) create mode 100644 webui/dist/assets/icons-DUfC2NKX.js delete mode 100644 webui/dist/assets/icons-SnP_l694.js delete mode 100644 webui/dist/assets/index-BS7Qg77u.css delete mode 100644 webui/dist/assets/index-ByB1XZQ6.js create mode 100644 webui/dist/assets/index-DuFwC87p.js create mode 100644 webui/dist/assets/index-QJDQd8Xo.css diff --git a/webui/dist/assets/icons-DUfC2NKX.js b/webui/dist/assets/icons-DUfC2NKX.js new file mode 100644 index 00000000..0febf497 --- /dev/null +++ b/webui/dist/assets/icons-DUfC2NKX.js @@ -0,0 +1 @@ +import{r as s}from"./router-CWhjJi2n.js";const _=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),M=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,c,o)=>o?o.toUpperCase():c.toLowerCase()),h=t=>{const a=M(t);return a.charAt(0).toUpperCase()+a.slice(1)},k=(...t)=>t.filter((a,c,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===c).join(" ").trim(),m=t=>{for(const a in t)if(a.startsWith("aria-")||a==="role"||a==="title")return!0};var v={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const x=s.forwardRef(({color:t="currentColor",size:a=24,strokeWidth:c=2,absoluteStrokeWidth:o,className:y="",children:n,iconNode:r,...d},i)=>s.createElement("svg",{ref:i,...v,width:a,height:a,stroke:t,strokeWidth:o?Number(c)*24/Number(a):c,className:k("lucide",y),...!n&&!m(d)&&{"aria-hidden":"true"},...d},[...r.map(([p,l])=>s.createElement(p,l)),...Array.isArray(n)?n:[n]]));const e=(t,a)=>{const c=s.forwardRef(({className:o,...y},n)=>s.createElement(x,{ref:n,iconNode:a,className:k(`lucide-${_(h(t))}`,`lucide-${t}`,o),...y}));return c.displayName=h(t),c};const u=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],d2=e("activity",u);const f=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],h2=e("arrow-left",f);const g=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],k2=e("arrow-right",g);const $=[["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],r2=e("ban",$);const N=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],i2=e("book-open",N);const w=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],p2=e("bot",w);const z=[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]],l2=e("boxes",z);const b=[["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z",key:"uouzyp"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M21 21a4 4 0 0 0-3.81-4",key:"1b0z45"}],["path",{d:"M21 5a4 4 0 0 1-3.55 3.97",key:"5cxbf6"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M3 21a4 4 0 0 1 3.81-4",key:"1fjd4g"}],["path",{d:"M3 5a4 4 0 0 0 3.55 3.97",key:"1d7oge"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M9 7.13V6a3 3 0 1 1 6 0v1.13",key:"1vgav8"}]],_2=e("bug",b);const q=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],M2=e("calendar",q);const C=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],m2=e("chart-column",C);const j=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],v2=e("check",j);const V=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],x2=e("chevron-down",V);const A=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],u2=e("chevron-left",A);const H=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],f2=e("chevron-right",H);const L=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],g2=e("chevron-up",L);const S=[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]],$2=e("chevrons-left",S);const P=[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]],N2=e("chevrons-right",P);const U=[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]],w2=e("chevrons-up-down",U);const T=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],z2=e("circle-alert",T);const Z=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],b2=e("circle-check",Z);const B=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],q2=e("circle-question-mark",B);const D=[["path",{d:"M18 20a6 6 0 0 0-12 0",key:"1qehca"}],["circle",{cx:"12",cy:"10",r:"4",key:"1h16sb"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],C2=e("circle-user-round",D);const E=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662",key:"154egf"}]],j2=e("circle-user",E);const R=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],V2=e("circle-x",R);const O=[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],A2=e("clock",O);const F=[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]],H2=e("code-xml",F);const I=[["path",{d:"M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z",key:"1t2lqe"}],["path",{d:"M10 21.9V14L2.1 9.1",key:"o7czzq"}],["path",{d:"m10 14 11.9-6.9",key:"zm5e20"}],["path",{d:"M14 19.8v-8.1",key:"159ecu"}],["path",{d:"M18 17.5V9.4",key:"11uown"}]],L2=e("container",I);const W=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],S2=e("copy",W);const G=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],P2=e("database",G);const K=[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]],U2=e("dollar-sign",K);const X=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],T2=e("download",X);const Q=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],Z2=e("external-link",Q);const J=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],B2=e("eye-off",J);const Y=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],D2=e("eye",Y);const e1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["circle",{cx:"11.5",cy:"14.5",r:"2.5",key:"1bq0ko"}],["path",{d:"M13.3 16.3 15 18",key:"2quom7"}]],E2=e("file-search",e1);const a1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],R2=e("file-text",a1);const t1=[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]],O2=e("folder-open",t1);const c1=[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]],F2=e("funnel",c1);const o1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]],I2=e("globe",o1);const n1=[["path",{d:"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",key:"j76jl0"}],["path",{d:"M22 10v6",key:"1lu8f3"}],["path",{d:"M6 12.5V16a6 3 0 0 0 12 0v-3.5",key:"1r8lef"}]],W2=e("graduation-cap",n1);const s1=[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]],G2=e("grip-vertical",s1);const y1=[["line",{x1:"22",x2:"2",y1:"12",y2:"12",key:"1y58io"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}],["line",{x1:"6",x2:"6.01",y1:"16",y2:"16",key:"sgf278"}],["line",{x1:"10",x2:"10.01",y1:"16",y2:"16",key:"1l4acy"}]],K2=e("hard-drive",y1);const d1=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],X2=e("hash",d1);const h1=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]],Q2=e("house",h1);const k1=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],J2=e("image",k1);const r1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],Y2=e("info",r1);const i1=[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]],e0=e("key",i1);const p1=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],a0=e("loader-circle",p1);const l1=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],t0=e("lock",l1);const _1=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],c0=e("log-out",_1);const M1=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],o0=e("menu",M1);const m1=[["path",{d:"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092 10 10 0 1 0-4.777-4.719",key:"1sd12s"}]],n0=e("message-circle",m1);const v1=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]],s0=e("message-square",v1);const x1=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]],y0=e("moon",x1);const u1=[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]],d0=e("network",u1);const f1=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],h0=e("package",f1);const g1=[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]],k0=e("palette",g1);const $1=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]],r0=e("panels-top-left",$1);const N1=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]],i0=e("pause",N1);const w1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]],p0=e("pen",w1);const z1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],l0=e("pencil",z1);const b1=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],_0=e("play",b1);const q1=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],M0=e("plus",q1);const C1=[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]],m0=e("power",C1);const j1=[["path",{d:"M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z",key:"w46dr5"}]],v0=e("puzzle",j1);const V1=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],x0=e("refresh-cw",V1);const A1=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],u0=e("rotate-ccw",A1);const H1=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],f0=e("save",H1);const L1=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],g0=e("search",L1);const S1=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],$0=e("send",S1);const P1=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],N0=e("server",P1);const U1=[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]],w0=e("settings-2",U1);const T1=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],z0=e("settings",T1);const Z1=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]],b0=e("shield",Z1);const B1=[["path",{d:"M21 4v16",key:"7j8fe9"}],["path",{d:"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z",key:"zs4d6"}]],q0=e("skip-forward",B1);const D1=[["path",{d:"M10 8h4",key:"1sr2af"}],["path",{d:"M12 21v-9",key:"17s77i"}],["path",{d:"M12 8V3",key:"13r4qs"}],["path",{d:"M17 16h4",key:"h1uq16"}],["path",{d:"M19 12V3",key:"o1uvq1"}],["path",{d:"M19 21v-5",key:"qua636"}],["path",{d:"M3 14h4",key:"bcjad9"}],["path",{d:"M5 10V3",key:"cb8scm"}],["path",{d:"M5 21v-7",key:"1w1uti"}]],C0=e("sliders-vertical",D1);const E1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]],j0=e("smile",E1);const R1=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],V0=e("sparkles",R1);const O1=[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]],A0=e("square-pen",O1);const F1=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],H0=e("star",F1);const I1=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],L0=e("sun",I1);const W1=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],S0=e("terminal",W1);const G1=[["path",{d:"M7 10v12",key:"1qc93n"}],["path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z",key:"emmmcr"}]],P0=e("thumbs-up",G1);const K1=[["path",{d:"M17 14V2",key:"8ymqnk"}],["path",{d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z",key:"m61m77"}]],U0=e("thumbs-down",K1);const X1=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],T0=e("trash-2",X1);const Q1=[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]],Z0=e("trending-up",Q1);const J1=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],B0=e("triangle-alert",J1);const Y1=[["path",{d:"M12 4v16",key:"1654pz"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2",key:"e0r10z"}],["path",{d:"M9 20h6",key:"s66wpe"}]],D0=e("type",Y1);const e2=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],E0=e("upload",e2);const a2=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],R0=e("user",a2);const t2=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],O0=e("users",t2);const c2=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],F0=e("wifi-off",c2);const o2=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]],I0=e("wifi",o2);const n2=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],W0=e("x",n2);const s2=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],G0=e("zap",s2);export{l0 as $,d2 as A,p2 as B,b2 as C,U2 as D,B2 as E,R2 as F,Q2 as G,K2 as H,Y2 as I,h2 as J,e0 as K,t0 as L,s0 as M,x2 as N,g2 as O,m0 as P,f0 as Q,x0 as R,z0 as S,Z0 as T,E0 as U,r0 as V,H2 as W,W0 as X,M0 as Y,G0 as Z,E2 as _,z2 as a,$2 as a0,u2 as a1,f2 as a2,N2 as a3,w2 as a4,G2 as a5,W2 as a6,L2 as a7,h0 as a8,O2 as a9,C0 as aA,o0 as aB,i2 as aC,c0 as aD,_2 as aE,J2 as aa,F2 as ab,A0 as ac,r2 as ad,X2 as ae,n0 as af,I2 as ag,O0 as ah,d0 as ai,M2 as aj,i0 as ak,_0 as al,D0 as am,H0 as an,P0 as ao,U0 as ap,w0 as aq,C2 as ar,I0 as as,F0 as at,p0 as au,$0 as av,N0 as aw,l2 as ax,j2 as ay,m2 as az,u0 as b,v0 as c,P2 as d,A2 as e,k0 as f,b0 as g,B0 as h,v2 as i,S2 as j,D2 as k,V2 as l,T0 as m,T2 as n,L0 as o,y0 as p,q2 as q,S0 as r,Z2 as s,a0 as t,V0 as u,R0 as v,j0 as w,q0 as x,k2 as y,g0 as z}; diff --git a/webui/dist/assets/icons-SnP_l694.js b/webui/dist/assets/icons-SnP_l694.js deleted file mode 100644 index 836e73ab..00000000 --- a/webui/dist/assets/icons-SnP_l694.js +++ /dev/null @@ -1 +0,0 @@ -import{r as s}from"./router-CWhjJi2n.js";const _=t=>t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),M=t=>t.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,c,o)=>o?o.toUpperCase():c.toLowerCase()),h=t=>{const a=M(t);return a.charAt(0).toUpperCase()+a.slice(1)},k=(...t)=>t.filter((a,c,o)=>!!a&&a.trim()!==""&&o.indexOf(a)===c).join(" ").trim(),m=t=>{for(const a in t)if(a.startsWith("aria-")||a==="role"||a==="title")return!0};var v={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};const x=s.forwardRef(({color:t="currentColor",size:a=24,strokeWidth:c=2,absoluteStrokeWidth:o,className:y="",children:n,iconNode:r,...d},p)=>s.createElement("svg",{ref:p,...v,width:a,height:a,stroke:t,strokeWidth:o?Number(c)*24/Number(a):c,className:k("lucide",y),...!n&&!m(d)&&{"aria-hidden":"true"},...d},[...r.map(([i,l])=>s.createElement(i,l)),...Array.isArray(n)?n:[n]]));const e=(t,a)=>{const c=s.forwardRef(({className:o,...y},n)=>s.createElement(x,{ref:n,iconNode:a,className:k(`lucide-${_(h(t))}`,`lucide-${t}`,o),...y}));return c.displayName=h(t),c};const u=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]],y2=e("activity",u);const f=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],d2=e("arrow-left",f);const g=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]],h2=e("arrow-right",g);const $=[["path",{d:"M4.929 4.929 19.07 19.071",key:"196cmz"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],k2=e("ban",$);const N=[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]],r2=e("book-open",N);const w=[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]],p2=e("bot",w);const z=[["path",{d:"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z",key:"lc1i9w"}],["path",{d:"m7 16.5-4.74-2.85",key:"1o9zyk"}],["path",{d:"m7 16.5 5-3",key:"va8pkn"}],["path",{d:"M7 16.5v5.17",key:"jnp8gn"}],["path",{d:"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z",key:"8zsnat"}],["path",{d:"m17 16.5-5-3",key:"8arw3v"}],["path",{d:"m17 16.5 4.74-2.85",key:"8rfmw"}],["path",{d:"M17 16.5v5.17",key:"k6z78m"}],["path",{d:"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z",key:"1xygjf"}],["path",{d:"M12 8 7.26 5.15",key:"1vbdud"}],["path",{d:"m12 8 4.74-2.85",key:"3rx089"}],["path",{d:"M12 13.5V8",key:"1io7kd"}]],i2=e("boxes",z);const b=[["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z",key:"uouzyp"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M21 21a4 4 0 0 0-3.81-4",key:"1b0z45"}],["path",{d:"M21 5a4 4 0 0 1-3.55 3.97",key:"5cxbf6"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M3 21a4 4 0 0 1 3.81-4",key:"1fjd4g"}],["path",{d:"M3 5a4 4 0 0 0 3.55 3.97",key:"1d7oge"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M9 7.13V6a3 3 0 1 1 6 0v1.13",key:"1vgav8"}]],l2=e("bug",b);const q=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],_2=e("calendar",q);const j=[["path",{d:"M3 3v16a2 2 0 0 0 2 2h16",key:"c24i48"}],["path",{d:"M18 17V9",key:"2bz60n"}],["path",{d:"M13 17V5",key:"1frdt8"}],["path",{d:"M8 17v-3",key:"17ska0"}]],M2=e("chart-column",j);const C=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],m2=e("check",C);const V=[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]],v2=e("chevron-down",V);const A=[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]],x2=e("chevron-left",A);const H=[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]],u2=e("chevron-right",H);const L=[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]],f2=e("chevron-up",L);const S=[["path",{d:"m11 17-5-5 5-5",key:"13zhaf"}],["path",{d:"m18 17-5-5 5-5",key:"h8a8et"}]],g2=e("chevrons-left",S);const P=[["path",{d:"m6 17 5-5-5-5",key:"xnjwq"}],["path",{d:"m13 17 5-5-5-5",key:"17xmmf"}]],$2=e("chevrons-right",P);const U=[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]],N2=e("chevrons-up-down",U);const T=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],w2=e("circle-alert",T);const Z=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],z2=e("circle-check",Z);const B=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3",key:"1u773s"}],["path",{d:"M12 17h.01",key:"p32p05"}]],b2=e("circle-question-mark",B);const D=[["path",{d:"M18 20a6 6 0 0 0-12 0",key:"1qehca"}],["circle",{cx:"12",cy:"10",r:"4",key:"1h16sb"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],q2=e("circle-user-round",D);const R=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}],["path",{d:"M7 20.662V19a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v1.662",key:"154egf"}]],j2=e("circle-user",R);const E=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],C2=e("circle-x",E);const O=[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]],V2=e("clock",O);const F=[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]],A2=e("code-xml",F);const I=[["path",{d:"M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z",key:"1t2lqe"}],["path",{d:"M10 21.9V14L2.1 9.1",key:"o7czzq"}],["path",{d:"m10 14 11.9-6.9",key:"zm5e20"}],["path",{d:"M14 19.8v-8.1",key:"159ecu"}],["path",{d:"M18 17.5V9.4",key:"11uown"}]],H2=e("container",I);const W=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],L2=e("copy",W);const G=[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]],S2=e("database",G);const K=[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]],P2=e("dollar-sign",K);const X=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],U2=e("download",X);const Q=[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]],T2=e("external-link",Q);const J=[["path",{d:"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49",key:"ct8e1f"}],["path",{d:"M14.084 14.158a3 3 0 0 1-4.242-4.242",key:"151rxh"}],["path",{d:"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143",key:"13bj9a"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],Z2=e("eye-off",J);const Y=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],B2=e("eye",Y);const e1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["circle",{cx:"11.5",cy:"14.5",r:"2.5",key:"1bq0ko"}],["path",{d:"M13.3 16.3 15 18",key:"2quom7"}]],D2=e("file-search",e1);const a1=[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]],R2=e("file-text",a1);const t1=[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]],E2=e("folder-open",t1);const c1=[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]],O2=e("funnel",c1);const o1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]],F2=e("globe",o1);const n1=[["path",{d:"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z",key:"j76jl0"}],["path",{d:"M22 10v6",key:"1lu8f3"}],["path",{d:"M6 12.5V16a6 3 0 0 0 12 0v-3.5",key:"1r8lef"}]],I2=e("graduation-cap",n1);const s1=[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]],W2=e("grip-vertical",s1);const y1=[["line",{x1:"22",x2:"2",y1:"12",y2:"12",key:"1y58io"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}],["line",{x1:"6",x2:"6.01",y1:"16",y2:"16",key:"sgf278"}],["line",{x1:"10",x2:"10.01",y1:"16",y2:"16",key:"1l4acy"}]],G2=e("hard-drive",y1);const d1=[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]],K2=e("hash",d1);const h1=[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"r6nss1"}]],X2=e("house",h1);const k1=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]],Q2=e("image",k1);const r1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]],J2=e("info",r1);const p1=[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]],Y2=e("key",p1);const i1=[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]],e0=e("loader-circle",i1);const l1=[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]],a0=e("lock",l1);const _1=[["path",{d:"m16 17 5-5-5-5",key:"1bji2h"}],["path",{d:"M21 12H9",key:"dn1m92"}],["path",{d:"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4",key:"1uf3rs"}]],t0=e("log-out",_1);const M1=[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]],c0=e("menu",M1);const m1=[["path",{d:"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",key:"18887p"}]],o0=e("message-square",m1);const v1=[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]],n0=e("moon",v1);const x1=[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]],s0=e("network",x1);const u1=[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]],y0=e("package",u1);const f1=[["path",{d:"M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z",key:"e79jfc"}],["circle",{cx:"13.5",cy:"6.5",r:".5",fill:"currentColor",key:"1okk4w"}],["circle",{cx:"17.5",cy:"10.5",r:".5",fill:"currentColor",key:"f64h9f"}],["circle",{cx:"6.5",cy:"12.5",r:".5",fill:"currentColor",key:"qy21gx"}],["circle",{cx:"8.5",cy:"7.5",r:".5",fill:"currentColor",key:"fotxhn"}]],d0=e("palette",f1);const g1=[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M3 9h18",key:"1pudct"}],["path",{d:"M9 21V9",key:"1oto5p"}]],h0=e("panels-top-left",g1);const $1=[["rect",{x:"14",y:"3",width:"5",height:"18",rx:"1",key:"kaeet6"}],["rect",{x:"5",y:"3",width:"5",height:"18",rx:"1",key:"1wsw3u"}]],k0=e("pause",$1);const N1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]],r0=e("pen",N1);const w1=[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]],p0=e("pencil",w1);const z1=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],i0=e("play",z1);const b1=[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]],l0=e("plus",b1);const q1=[["path",{d:"M12 2v10",key:"mnfbl"}],["path",{d:"M18.4 6.6a9 9 0 1 1-12.77.04",key:"obofu9"}]],_0=e("power",q1);const j1=[["path",{d:"M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z",key:"w46dr5"}]],M0=e("puzzle",j1);const C1=[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]],m0=e("refresh-cw",C1);const V1=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],v0=e("rotate-ccw",V1);const A1=[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]],x0=e("save",A1);const H1=[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]],u0=e("search",H1);const L1=[["path",{d:"M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z",key:"1ffxy3"}],["path",{d:"m21.854 2.147-10.94 10.939",key:"12cjpa"}]],f0=e("send",L1);const S1=[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]],g0=e("server",S1);const P1=[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]],$0=e("settings-2",P1);const U1=[["path",{d:"M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915",key:"1i5ecw"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],N0=e("settings",U1);const T1=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]],w0=e("shield",T1);const Z1=[["path",{d:"M21 4v16",key:"7j8fe9"}],["path",{d:"M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z",key:"zs4d6"}]],z0=e("skip-forward",Z1);const B1=[["path",{d:"M10 8h4",key:"1sr2af"}],["path",{d:"M12 21v-9",key:"17s77i"}],["path",{d:"M12 8V3",key:"13r4qs"}],["path",{d:"M17 16h4",key:"h1uq16"}],["path",{d:"M19 12V3",key:"o1uvq1"}],["path",{d:"M19 21v-5",key:"qua636"}],["path",{d:"M3 14h4",key:"bcjad9"}],["path",{d:"M5 10V3",key:"cb8scm"}],["path",{d:"M5 21v-7",key:"1w1uti"}]],b0=e("sliders-vertical",B1);const D1=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M8 14s1.5 2 4 2 4-2 4-2",key:"1y1vjs"}],["line",{x1:"9",x2:"9.01",y1:"9",y2:"9",key:"yxxnd0"}],["line",{x1:"15",x2:"15.01",y1:"9",y2:"9",key:"1p4y9e"}]],q0=e("smile",D1);const R1=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],j0=e("sparkles",R1);const E1=[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]],C0=e("square-pen",E1);const O1=[["path",{d:"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z",key:"r04s7s"}]],V0=e("star",O1);const F1=[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]],A0=e("sun",F1);const I1=[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]],H0=e("terminal",I1);const W1=[["path",{d:"M7 10v12",key:"1qc93n"}],["path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z",key:"emmmcr"}]],L0=e("thumbs-up",W1);const G1=[["path",{d:"M17 14V2",key:"8ymqnk"}],["path",{d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z",key:"m61m77"}]],S0=e("thumbs-down",G1);const K1=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],P0=e("trash-2",K1);const X1=[["path",{d:"M16 7h6v6",key:"box55l"}],["path",{d:"m22 7-8.5 8.5-5-5L2 17",key:"1t1m79"}]],U0=e("trending-up",X1);const Q1=[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],T0=e("triangle-alert",Q1);const J1=[["path",{d:"M12 4v16",key:"1654pz"}],["path",{d:"M4 7V5a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v2",key:"e0r10z"}],["path",{d:"M9 20h6",key:"s66wpe"}]],Z0=e("type",J1);const Y1=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],B0=e("upload",Y1);const e2=[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]],D0=e("user",e2);const a2=[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]],R0=e("users",a2);const t2=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],E0=e("wifi-off",t2);const c2=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M2 8.82a15 15 0 0 1 20 0",key:"dnpr2z"}],["path",{d:"M5 12.859a10 10 0 0 1 14 0",key:"1x1e6c"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}]],O0=e("wifi",c2);const o2=[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]],F0=e("x",o2);const n2=[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]],I0=e("zap",n2);export{p0 as $,y2 as A,p2 as B,z2 as C,P2 as D,Z2 as E,R2 as F,X2 as G,G2 as H,J2 as I,d2 as J,Y2 as K,a0 as L,o0 as M,v2 as N,f2 as O,_0 as P,x0 as Q,m0 as R,N0 as S,U0 as T,B0 as U,h0 as V,A2 as W,F0 as X,l0 as Y,I0 as Z,D2 as _,w2 as a,g2 as a0,x2 as a1,u2 as a2,$2 as a3,N2 as a4,W2 as a5,I2 as a6,H2 as a7,y0 as a8,E2 as a9,c0 as aA,r2 as aB,t0 as aC,l2 as aD,Q2 as aa,O2 as ab,C0 as ac,k2 as ad,K2 as ae,R0 as af,s0 as ag,_2 as ah,k0 as ai,i0 as aj,Z0 as ak,V0 as al,L0 as am,S0 as an,$0 as ao,q2 as ap,F2 as aq,O0 as ar,E0 as as,r0 as at,f0 as au,g0 as av,i2 as aw,j2 as ax,M2 as ay,b0 as az,v0 as b,M0 as c,S2 as d,V2 as e,d0 as f,w0 as g,T0 as h,m2 as i,L2 as j,B2 as k,C2 as l,P0 as m,U2 as n,A0 as o,n0 as p,b2 as q,H0 as r,T2 as s,e0 as t,j0 as u,D0 as v,q0 as w,z0 as x,h2 as y,u0 as z}; diff --git a/webui/dist/assets/index-BS7Qg77u.css b/webui/dist/assets/index-BS7Qg77u.css deleted file mode 100644 index dcfb65d8..00000000 --- a/webui/dist/assets/index-BS7Qg77u.css +++ /dev/null @@ -1 +0,0 @@ -@charset "UTF-8";*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 0 0% 100%;--foreground: 222.2 84% 4.9%;--card: 0 0% 100%;--card-foreground: 222.2 84% 4.9%;--popover: 0 0% 100%;--popover-foreground: 222.2 84% 4.9%;--primary: 221.2 83.2% 53.3%;--primary-foreground: 210 40% 98%;--primary-gradient: none;--secondary: 210 40% 96.1%;--secondary-foreground: 222.2 47.4% 11.2%;--muted: 210 40% 96.1%;--muted-foreground: 215.4 16.3% 46.9%;--accent: 210 40% 96.1%;--accent-foreground: 222.2 47.4% 11.2%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 210 40% 98%;--border: 214.3 31.8% 91.4%;--input: 214.3 31.8% 91.4%;--ring: 221.2 83.2% 53.3%;--radius: .5rem;--chart-1: 221.2 83.2% 53.3%;--chart-2: 160 60% 45%;--chart-3: 30 80% 55%;--chart-4: 280 65% 60%;--chart-5: 340 75% 55%}.dark{--background: 222.2 84% 4.9%;--foreground: 210 40% 98%;--card: 222.2 84% 4.9%;--card-foreground: 210 40% 98%;--popover: 222.2 84% 4.9%;--popover-foreground: 210 40% 98%;--primary: 217.2 91.2% 59.8%;--primary-foreground: 222.2 47.4% 11.2%;--primary-gradient: none;--secondary: 217.2 32.6% 17.5%;--secondary-foreground: 210 40% 98%;--muted: 217.2 32.6% 17.5%;--muted-foreground: 215 20.2% 65.1%;--accent: 217.2 32.6% 17.5%;--accent-foreground: 210 40% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 210 40% 98%;--border: 217.2 32.6% 17.5%;--input: 217.2 32.6% 17.5%;--ring: 224.3 76.3% 48%;--chart-1: 217.2 91.2% 59.8%;--chart-2: 160 60% 50%;--chart-3: 30 80% 60%;--chart-4: 280 65% 65%;--chart-5: 340 75% 60%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-1\/4{bottom:25%}.bottom-4{bottom:1rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.left-1\/4{left:25%}.left-2{left:.5rem}.left-2\.5{left:.625rem}.left-3{left:.75rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-1\.5{right:.375rem}.right-1\/4{right:25%}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-1\/4{top:25%}.top-2{top:.5rem}.top-2\.5{top:.625rem}.top-3{top:.75rem}.top-4{top:1rem}.top-\[50\%\]{top:50%}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.order-1{order:1}.order-2{order:2}.col-span-2{grid-column:span 2 / span 2}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-mt-2{margin-top:-.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-10{margin-left:2.5rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-auto{aspect-ratio:auto}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:16 / 9}.size-4{width:1rem;height:1rem}.size-\[--cell-size\]{width:var(--cell-size);height:var(--cell-size)}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[--cell-size\]{height:var(--cell-size)}.h-\[1\.25rem\]{height:1.25rem}.h-\[1px\]{height:1px}.h-\[200px\]{height:200px}.h-\[250px\]{height:250px}.h-\[280px\]{height:280px}.h-\[300px\]{height:300px}.h-\[350px\]{height:350px}.h-\[400px\]{height:400px}.h-\[calc\(100vh-200px\)\]{height:calc(100vh - 200px)}.h-\[calc\(100vh-240px\)\]{height:calc(100vh - 240px)}.h-\[calc\(100vh-260px\)\]{height:calc(100vh - 260px)}.h-\[calc\(100vh-4rem\)\]{height:calc(100vh - 4rem)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\[--radix-context-menu-content-available-height\]{max-height:var(--radix-context-menu-content-available-height)}.max-h-\[--radix-select-content-available-height\]{max-height:var(--radix-select-content-available-height)}.max-h-\[300px\]{max-height:300px}.max-h-\[80vh\]{max-height:80vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[calc\(90vh-120px\)\]{max-height:calc(90vh - 120px)}.max-h-\[calc\(90vh-8rem\)\]{max-height:calc(90vh - 8rem)}.max-h-full{max-height:100%}.max-h-none{max-height:none}.max-h-screen{max-height:100vh}.min-h-0{min-height:0px}.min-h-10{min-height:2.5rem}.min-h-\[100px\]{min-height:100px}.min-h-\[300px\]{min-height:300px}.min-h-\[60px\]{min-height:60px}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-\[--cell-size\]{width:var(--cell-size)}.w-\[100px\]{width:100px}.w-\[120px\]{width:120px}.w-\[130px\]{width:130px}.w-\[1px\]{width:1px}.w-\[65px\]{width:65px}.w-\[95vw\]{width:95vw}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[--cell-size\]{min-width:var(--cell-size)}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[80px\]{min-width:80px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-32{max-width:8rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-\[100px\]{max-width:100px}.max-w-\[150px\]{max-width:150px}.max-w-\[200px\]{max-width:200px}.max-w-\[60px\]{max-width:60px}.max-w-\[75\%\]{max-width:75%}.max-w-\[90\%\]{max-width:90%}.max-w-\[95vw\]{max-width:95vw}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\[--radix-context-menu-content-transform-origin\]{transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\[--radix-popover-content-transform-origin\]{transform-origin:var(--radix-popover-content-transform-origin)}.origin-\[--radix-select-content-transform-origin\]{transform-origin:var(--radix-select-content-transform-origin)}.origin-\[--radix-tooltip-content-transform-origin\]{transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.rounded-tr-sm{border-top-right-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-\[1\.5px\]{border-width:1.5px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[--color-border\]{border-color:var(--color-border)}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-500\/50{border-color:#f59e0b80}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-700{--tw-border-opacity: 1;border-color:rgb(29 78 216 / var(--tw-border-opacity, 1))}.border-border{border-color:hsl(var(--border))}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-current{border-color:currentColor}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-green-300{--tw-border-opacity: 1;border-color:rgb(134 239 172 / var(--tw-border-opacity, 1))}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.border-green-600{--tw-border-opacity: 1;border-color:rgb(22 163 74 / var(--tw-border-opacity, 1))}.border-green-700{--tw-border-opacity: 1;border-color:rgb(21 128 61 / var(--tw-border-opacity, 1))}.border-input{border-color:hsl(var(--input))}.border-muted{border-color:hsl(var(--muted))}.border-muted-foreground\/30{border-color:hsl(var(--muted-foreground) / .3)}.border-muted-foreground\/50{border-color:hsl(var(--muted-foreground) / .5)}.border-orange-200{--tw-border-opacity: 1;border-color:rgb(254 215 170 / var(--tw-border-opacity, 1))}.border-orange-600{--tw-border-opacity: 1;border-color:rgb(234 88 12 / var(--tw-border-opacity, 1))}.border-primary{border-color:hsl(var(--primary))}.border-primary\/20{border-color:hsl(var(--primary) / .2)}.border-primary\/30{border-color:hsl(var(--primary) / .3)}.border-primary\/50{border-color:hsl(var(--primary) / .5)}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-red-500\/50{border-color:#ef444480}.border-transparent{border-color:transparent}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-yellow-500\/50{border-color:#eab30880}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\[--color-bg\]{background-color:var(--color-bg)}.bg-accent{background-color:hsl(var(--accent))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-background{background-color:hsl(var(--background))}.bg-background\/50{background-color:hsl(var(--background) / .5)}.bg-background\/80{background-color:hsl(var(--background) / .8)}.bg-background\/95{background-color:hsl(var(--background) / .95)}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-black\/50{background-color:#00000080}.bg-black\/80{background-color:#000c}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-blue-900\/20{background-color:#1e3a8a33}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-card\/80{background-color:hsl(var(--card) / .8)}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-800\/20{background-color:#1f293733}.bg-gray-800\/30{background-color:#1f29374d}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground\/50{background-color:hsl(var(--muted-foreground) / .5)}.bg-muted\/20{background-color:hsl(var(--muted) / .2)}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-orange-600{--tw-bg-opacity: 1;background-color:rgb(234 88 12 / var(--tw-bg-opacity, 1))}.bg-pink-500{--tw-bg-opacity: 1;background-color:rgb(236 72 153 / var(--tw-bg-opacity, 1))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary-foreground\/20{background-color:hsl(var(--primary-foreground) / .2)}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/20{background-color:hsl(var(--primary) / .2)}.bg-primary\/5{background-color:hsl(var(--primary) / .05)}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(168 85 247 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-red-900\/20{background-color:#7f1d1d33}.bg-red-900\/30{background-color:#7f1d1d4d}.bg-secondary{background-color:hsl(var(--secondary))}.bg-secondary\/5{background-color:hsl(var(--secondary) / .05)}.bg-slate-200{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity, 1))}.bg-slate-300{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity, 1))}.bg-slate-400{--tw-bg-opacity: 1;background-color:rgb(148 163 184 / var(--tw-bg-opacity, 1))}.bg-slate-700{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-200{--tw-bg-opacity: 1;background-color:rgb(254 240 138 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-yellow-500\/5{background-color:#eab3080d}.bg-yellow-900\/20{background-color:#713f1233}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-blue-500{--tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-500{--tw-gradient-from: #22c55e var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 197 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-500{--tw-gradient-from: #f97316 var(--tw-gradient-from-position);--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-primary\/5{--tw-gradient-from: hsl(var(--primary) / .05) var(--tw-gradient-from-position);--tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-500{--tw-gradient-from: #a855f7 var(--tw-gradient-from-position);--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-500{--tw-gradient-from: #ef4444 var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 68 68 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-200{--tw-gradient-from: #e2e8f0 var(--tw-gradient-from-position);--tw-gradient-to: rgb(226 232 240 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-300{--tw-gradient-from: #cbd5e1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(203 213 225 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-400{--tw-gradient-from: #94a3b8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(148 163 184 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-background{--tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), hsl(var(--background)) var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-blue-600{--tw-gradient-to: #2563eb var(--tw-gradient-to-position)}.to-cyan-500{--tw-gradient-to: #06b6d4 var(--tw-gradient-to-position)}.to-emerald-500{--tw-gradient-to: #10b981 var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to: #16a34a var(--tw-gradient-to-position)}.to-orange-500{--tw-gradient-to: #f97316 var(--tw-gradient-to-position)}.to-pink-500{--tw-gradient-to: #ec4899 var(--tw-gradient-to-position)}.to-primary\/10{--tw-gradient-to: hsl(var(--primary) / .1) var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to: #a855f7 var(--tw-gradient-to-position)}.to-secondary\/5{--tw-gradient-to: hsl(var(--secondary) / .05) var(--tw-gradient-to-position)}.to-slate-700{--tw-gradient-to: #334155 var(--tw-gradient-to-position)}.to-slate-800{--tw-gradient-to: #1e293b var(--tw-gradient-to-position)}.to-slate-900{--tw-gradient-to: #0f172a var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.fill-yellow-400{fill:#facc15}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[1px\]{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[--cell-size\]{padding-left:var(--cell-size);padding-right:var(--cell-size)}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pl-10{padding-left:2.5rem}.pl-11{padding-left:2.75rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-1{padding-right:.25rem}.pr-10{padding-right:2.5rem}.pr-16{padding-right:4rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.text-\[150px\]{font-size:150px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/50{color:hsl(var(--foreground) / .5)}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/50{color:hsl(var(--muted-foreground) / .5)}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-800{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.text-orange-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary-foreground\/70{color:hsl(var(--primary-foreground) / .7)}.text-primary\/10{color:hsl(var(--primary) / .1)}.text-primary\/30{color:hsl(var(--primary) / .3)}.text-primary\/60{color:hsl(var(--primary) / .6)}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.text-yellow-900{--tw-text-opacity: 1;color:rgb(113 63 18 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-primary{--tw-ring-color: hsl(var(--primary))}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur-3xl{--tw-blur: blur(64px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.text-primary-gradient{color:hsl(var(--primary))}.has-gradient .text-primary-gradient{background:var(--primary-gradient);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.\[--cell-size\:2rem\]{--cell-size: 2rem}.no-animations *,.no-animations *:before,.no-animations *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.no-animations *:hover{transition-duration:.01ms!important}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:999}.__floater{z-index:99999!important;pointer-events:auto!important}.react-joyride__overlay,.react-joyride__spotlight{z-index:99998!important}.react-joyride__tooltip{pointer-events:auto!important}#tour-portal-container *{pointer-events:auto}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:border-muted-foreground\/50:hover{border-color:hsl(var(--muted-foreground) / .5)}.hover\:border-primary\/50:hover{border-color:hsl(var(--primary) / .5)}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent) / .5)}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\:bg-muted-foreground\/20:hover{background-color:hsl(var(--muted-foreground) / .2)}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-orange-700:hover{--tw-bg-opacity: 1;background-color:rgb(194 65 12 / var(--tw-bg-opacity, 1))}.hover\:bg-primary\/10:hover{background-color:hsl(var(--primary) / .1)}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-secondary:hover{background-color:hsl(var(--secondary))}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-secondary\/90:hover{background-color:hsl(var(--secondary) / .9)}.hover\:bg-transparent:hover{background-color:transparent}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-green-700:hover{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.hover\:text-orange-700:hover{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.hover\:text-primary\/80:hover{color:hsl(var(--primary) / .8)}.hover\:text-red-700:hover{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.hover\:text-yellow-300:hover{--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:ring-2:hover{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.hover\:ring-primary:hover{--tw-ring-color: hsl(var(--primary))}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-gray-100:focus{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-red-500:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.active\:cursor-grabbing:active{cursor:grabbing}.active\:border-primary\/70:active{border-color:hsl(var(--primary) / .7)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group[open] .group-open\:rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:opacity-100{opacity:1}.group.destructive .group-\[\.destructive\]\:border-muted\/40{border-color:hsl(var(--muted) / .4)}.group.destructive .group-\[\.destructive\]\:text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:hover\:text-red-50:hover{--tw-text-opacity: 1;color:rgb(254 242 242 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-red-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(248 113 113 / var(--tw-ring-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-offset-red-600:focus{--tw-ring-offset-color: #dc2626}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-selected\:text-muted-foreground[aria-selected=true]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true],.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked],.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x: var(--radix-toast-swipe-end-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x: var(--radix-toast-swipe-move-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes fade-out{0%{opacity:1}to{opacity:0}}.data-\[state\=closed\]\:animate-fade-out[data-state=closed]{animation:fade-out .15s ease-in}.data-\[state\=closed\]\:animate-slide-out-to-right[data-state=closed]{animation:slide-out-to-right .2s ease-in}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.data-\[state\=open\]\:animate-fade-in[data-state=open]{animation:fade-in .2s ease-out}@keyframes slide-in-from-right{0%{transform:translate(100%)}to{transform:translate(0)}}.data-\[state\=open\]\:animate-slide-in-from-right[data-state=open]{animation:slide-in-from-right .3s ease-out}@keyframes slide-out-to-right{0%{transform:translate(0)}to{transform:translate(100%)}}.data-\[swipe\=end\]\:animate-slide-out-to-right[data-swipe=end]{animation:slide-out-to-right .2s ease-in}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) - 2px)}.data-\[selected\=true\]\:rounded-none[data-selected=true]{border-radius:0}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:hsl(var(--primary))}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:hsl(var(--accent))}.data-\[range-start\=true\]\:bg-primary[data-range-start=true],.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:hsl(var(--primary))}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:hsl(var(--primary-foreground))}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:hsl(var(--accent-foreground))}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true],.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:hsl(var(--primary-foreground))}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:opacity-50[data-disabled=true],.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.data-\[state\=active\]\:duration-300[data-state=active]{transition-duration:.3s}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:relative{position:relative}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:z-10{z-index:10}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:border-ring{border-color:hsl(var(--ring))}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-\[3px\]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}@supports (backdrop-filter: var(--tw)){.supports-\[backdrop-filter\]\:bg-background\/60{background-color:hsl(var(--background) / .6)}}.dark\:border-amber-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(146 64 14 / var(--tw-border-opacity, 1))}.dark\:border-blue-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity, 1))}.dark\:border-gray-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(17 24 39 / var(--tw-border-opacity, 1))}.dark\:border-green-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(22 101 52 / var(--tw-border-opacity, 1))}.dark\:border-orange-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(124 45 18 / var(--tw-border-opacity, 1))}.dark\:border-yellow-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(113 63 18 / var(--tw-border-opacity, 1))}.dark\:bg-amber-950\/30:is(.dark *){background-color:#451a034d}.dark\:bg-blue-500\/20:is(.dark *){background-color:#3b82f633}.dark\:bg-blue-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 37 84 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950\/20:is(.dark *){background-color:#17255433}.dark\:bg-blue-950\/30:is(.dark *){background-color:#1725544d}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800\/30:is(.dark *){background-color:#1f29374d}.dark\:bg-gray-800\/50:is(.dark *){background-color:#1f293780}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(3 7 18 / var(--tw-bg-opacity, 1))}.dark\:bg-green-900\/30:is(.dark *){background-color:#14532d4d}.dark\:bg-green-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(5 46 22 / var(--tw-bg-opacity, 1))}.dark\:bg-green-950\/20:is(.dark *){background-color:#052e1633}.dark\:bg-orange-950\/20:is(.dark *){background-color:#43140733}.dark\:bg-red-500\/20:is(.dark *){background-color:#ef444433}.dark\:bg-red-600\/30:is(.dark *){background-color:#dc26264d}.dark\:bg-red-900\/30:is(.dark *){background-color:#7f1d1d4d}.dark\:bg-red-950\/50:is(.dark *){background-color:#450a0a80}.dark\:bg-yellow-500\/20:is(.dark *){background-color:#eab30833}.dark\:bg-yellow-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1))}.dark\:bg-yellow-950\/30:is(.dark *){background-color:#4220064d}.dark\:text-amber-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 243 199 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-blue-100:is(.dark *){--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-200:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-cyan-500:is(.dark *){--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-orange-100:is(.dark *){--tw-text-opacity: 1;color:rgb(255 237 213 / var(--tw-text-opacity, 1))}.dark\:text-orange-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 215 170 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-red-500:is(.dark *){--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.dark\:text-yellow-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.dark\:text-yellow-400:is(.dark *){--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.dark\:text-yellow-500:is(.dark *){--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:focus\:bg-gray-800:focus:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}@media(min-width:640px){.sm\:right-2{right:.5rem}.sm\:right-3{right:.75rem}.sm\:top-2{top:.5rem}.sm\:top-3{top:.75rem}.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:mb-3{margin-bottom:.75rem}.sm\:mb-4{margin-bottom:1rem}.sm\:mb-6{margin-bottom:1.5rem}.sm\:ml-0{margin-left:0}.sm\:ml-1{margin-left:.25rem}.sm\:mr-1{margin-right:.25rem}.sm\:mr-2{margin-right:.5rem}.sm\:mt-0{margin-top:0}.sm\:mt-2{margin-top:.5rem}.sm\:mt-3{margin-top:.75rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-12{height:3rem}.sm\:h-2{height:.5rem}.sm\:h-24{height:6rem}.sm\:h-3{height:.75rem}.sm\:h-4{height:1rem}.sm\:h-5{height:1.25rem}.sm\:h-8{height:2rem}.sm\:h-9{height:2.25rem}.sm\:h-\[300px\]{height:300px}.sm\:h-\[400px\]{height:400px}.sm\:h-\[500px\]{height:500px}.sm\:h-\[calc\(100vh-280px\)\]{height:calc(100vh - 280px)}.sm\:w-10{width:2.5rem}.sm\:w-2{width:.5rem}.sm\:w-24{width:6rem}.sm\:w-28{width:7rem}.sm\:w-3{width:.75rem}.sm\:w-4{width:1rem}.sm\:w-5{width:1.25rem}.sm\:w-8{width:2rem}.sm\:w-80{width:20rem}.sm\:w-96{width:24rem}.sm\:w-\[140px\]{width:140px}.sm\:w-\[160px\]{width:160px}.sm\:w-\[200px\]{width:200px}.sm\:w-\[500px\]{width:500px}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:min-w-\[120px\]{min-width:120px}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-\[420px\]{max-width:420px}.sm\:max-w-\[500px\]{max-width:500px}.sm\:max-w-\[70\%\]{max-width:70%}.sm\:max-w-\[900px\]{max-width:900px}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:flex-1{flex:1 1 0%}.sm\:flex-none{flex:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-0{gap:0px}.sm\:gap-1{gap:.25rem}.sm\:gap-2{gap:.5rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:gap-6{gap:1.5rem}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.sm\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.sm\:space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.sm\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.sm\:space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:py-2{padding-top:.5rem;padding-bottom:.5rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-\[200px\]{font-size:200px}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:768px){.md\:top-4{top:1rem}.md\:mb-4{margin-bottom:1rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-8{margin-bottom:2rem}.md\:mt-8{margin-top:2rem}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-16{height:4rem}.md\:h-4{height:1rem}.md\:h-5{height:1.25rem}.md\:h-8{height:2rem}.md\:h-96{height:24rem}.md\:h-\[500px\]{height:500px}.md\:min-h-\[400px\]{min-height:400px}.md\:w-16{width:4rem}.md\:w-4{width:1rem}.md\:w-5{width:1.25rem}.md\:w-8{width:2rem}.md\:w-96{width:24rem}.md\:max-w-none{max-width:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:gap-2{gap:.5rem}.md\:gap-3{gap:.75rem}.md\:gap-4{gap:1rem}.md\:gap-6{gap:1.5rem}.md\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.md\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.md\:whitespace-normal{white-space:normal}.md\:p-12{padding:3rem}.md\:p-4{padding:1rem}.md\:p-6{padding:1.5rem}.md\:p-8{padding:2rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:1024px){.lg\:invisible{visibility:hidden}.lg\:relative{position:relative}.lg\:z-0{z-index:0}.lg\:col-span-1{grid-column:span 1 / span 1}.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:mb-1{margin-bottom:.25rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-12{width:3rem}.lg\:w-16{width:4rem}.lg\:w-64{width:16rem}.lg\:w-8{width:2rem}.lg\:w-\[130px\]{width:130px}.lg\:w-\[160px\]{width:160px}.lg\:w-\[180px\]{width:180px}.lg\:w-\[200px\]{width:200px}.lg\:w-\[240px\]{width:240px}.lg\:w-\[75px\]{width:75px}.lg\:w-auto{width:auto}.lg\:w-full{width:100%}.lg\:max-w-0{max-width:0px}.lg\:flex-1{flex:1 1 0%}.lg\:flex-none{flex:none}.lg\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:justify-center{justify-content:center}.lg\:gap-0{gap:0px}.lg\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.lg\:overflow-hidden{overflow:hidden}.lg\:p-2{padding:.5rem}.lg\:p-6{padding:1.5rem}.lg\:px-0{padding-left:0;padding-right:0}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:pb-6{padding-bottom:1.5rem}.lg\:text-3xl{font-size:1.875rem;line-height:2.25rem}.lg\:opacity-0{opacity:0}}@media(min-width:1280px){.xl\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}}.\[\&\+div\]\:text-xs+div{font-size:.75rem;line-height:1rem}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>span\]\:text-xs>span{font-size:.75rem;line-height:1rem}.\[\&\>span\]\:opacity-70>span{opacity:.7}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y: -3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-4>svg{top:1rem}.\[\&\>svg\]\:size-3\.5>svg{width:.875rem;height:.875rem}.\[\&\>svg\]\:h-2\.5>svg{height:.625rem}.\[\&\>svg\]\:h-3>svg{height:.75rem}.\[\&\>svg\]\:w-2\.5>svg{width:.625rem}.\[\&\>svg\]\:w-3>svg{width:.75rem}.\[\&\>svg\]\:text-foreground>svg{color:hsl(var(--foreground))}.\[\&\>svg\]\:text-muted-foreground>svg{color:hsl(var(--muted-foreground))}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:1.75rem}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:hsl(var(--muted-foreground))}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:hsl(var(--border) / .5)}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:hsl(var(--border))}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-layer\]\:outline-none .recharts-layer{outline:2px solid transparent;outline-offset:2px}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector,.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:hsl(var(--muted))}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-sector\]\:outline-none .recharts-sector,.\[\&_\.recharts-surface\]\:outline-none .recharts-surface{outline:2px solid transparent;outline-offset:2px}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:1.25rem}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:invisible svg{visibility:hidden}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent,[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:transparent}.uppy-Root{box-sizing:border-box;color:#333;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;line-height:1;position:relative;text-align:left;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.uppy-Root[dir=rtl],[dir=rtl] .uppy-Root{text-align:right}.uppy-Root *,.uppy-Root :after,.uppy-Root :before{box-sizing:inherit}.uppy-Root [hidden]{display:none}.uppy-u-reset{all:initial;-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;line-height:1}[dir=rtl] .uppy-u-reset{text-align:right}.uppy-c-textInput{background-color:#fff;border:1px solid #ddd;border-radius:4px;font-family:inherit;font-size:14px;line-height:1.5;padding:6px 8px}.uppy-size--md .uppy-c-textInput{padding:8px 10px}.uppy-c-textInput:focus{border-color:#1269cf99;box-shadow:0 0 0 3px #1269cf26;outline:none}[data-uppy-theme=dark] .uppy-c-textInput{background-color:#333;border-color:#333;color:#eaeaea}[data-uppy-theme=dark] .uppy-c-textInput:focus{border-color:#525252;box-shadow:none}.uppy-c-icon{display:inline-block;max-height:100%;max-width:100%;overflow:hidden;fill:currentColor}.uppy-c-btn{align-items:center;color:inherit;display:inline-flex;font-family:inherit;font-size:inherit;font-weight:500;justify-content:center;line-height:1;transition-duration:.3s;transition-property:background-color,color;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.uppy-c-btn,[dir=rtl] .uppy-c-btn{text-align:center}.uppy-c-btn:not(:disabled):not(.disabled){cursor:pointer}.uppy-c-btn::-moz-focus-inner{border:0}.uppy-c-btn-primary{background-color:#1269cf;border-radius:4px;color:#fff;font-size:14px;padding:10px 18px}.uppy-c-btn-primary:not(:disabled):hover{background-color:#0e51a0}.uppy-c-btn-primary:focus{box-shadow:0 0 0 3px #1269cf66;outline:none}.uppy-size--md .uppy-c-btn-primary{padding:13px 22px}[data-uppy-theme=dark] .uppy-c-btn-primary{color:#eaeaea}[data-uppy-theme=dark] .uppy-c-btn-primary:focus{outline:none}[data-uppy-theme=dark] .uppy-c-btn-primary::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-c-btn-primary:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-c-btn-primary.uppy-c-btn--disabled{background-color:#8eb2db}.uppy-c-btn-link{background-color:initial;border-radius:4px;color:#525252;font-size:14px;line-height:1;padding:10px 15px}.uppy-c-btn-link:hover{color:#333}.uppy-c-btn-link:focus{box-shadow:0 0 0 3px #1269cf40;outline:none}.uppy-size--md .uppy-c-btn-link{padding:13px 18px}[data-uppy-theme=dark] .uppy-c-btn-link{color:#eaeaea}[data-uppy-theme=dark] .uppy-c-btn-link:focus{outline:none}[data-uppy-theme=dark] .uppy-c-btn-link::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-c-btn-link:focus{box-shadow:0 0 0 2px #aae1ffd9}[data-uppy-theme=dark] .uppy-c-btn-link:hover{color:#939393}.uppy-ProviderBrowser-viewType--grid ul.uppy-ProviderBrowser-list,.uppy-ProviderBrowser-viewType--unsplash ul.uppy-ProviderBrowser-list{align-items:flex-start;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;padding:6px}.uppy-ProviderBrowser-viewType--grid ul.uppy-ProviderBrowser-list:after,.uppy-ProviderBrowser-viewType--unsplash ul.uppy-ProviderBrowser-list:after{content:"";flex:auto}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem{margin:0;position:relative;width:50%}.uppy-size--md .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem,.uppy-size--md .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem{width:33.3333%}.uppy-size--lg .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem,.uppy-size--lg .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem{width:25%}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem:before,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem:before{content:"";display:block;padding-top:100%}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--selected img,.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--selected svg,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--selected img,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--selected svg{opacity:.85}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--disabled,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--disabled{opacity:.5}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner{background-color:#93939333}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner,[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner{background-color:#eaeaea33}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview svg,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview svg{height:30%;width:30%;fill:#000000b3}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview svg,[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview svg{fill:#fffc}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner{border-radius:4px;height:calc(100% - 14px);inset:7px;overflow:hidden;position:absolute;text-align:center;width:calc(100% - 14px)}@media(hover:none){.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner .uppy-ProviderBrowserItem-author{display:block}}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner,[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner{box-shadow:0 0 0 3px #aae1ffb3}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner img,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner img{border-radius:4px;height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-author{background:#0000004d;bottom:0;color:#fff;display:none;font-size:12px;font-weight:500;left:0;margin:0;padding:5px;position:absolute;text-decoration:none;width:100%}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-author:hover,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-author:hover{background:#0006;text-decoration:underline}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox{background-color:#1269cf;border-radius:50%;height:26px;opacity:0;position:absolute;right:16px;top:16px;width:26px;z-index:1002}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox:after,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox:after{height:7px;inset-inline-start:7px;top:8px;width:12px}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox{opacity:1}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:hover+label .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:hover+label .uppy-ProviderBrowserItem-author{display:block}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label{box-shadow:0 0 0 3px #1269cf80}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label:focus,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label:focus{outline:none}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label::-moz-focus-inner,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label::-moz-focus-inner{border:0}.uppy-ProviderBrowser-viewType--list{background-color:#fff}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--list{background-color:#1f1f1f}.uppy-ProviderBrowser-viewType--list li.uppy-ProviderBrowserItem{align-items:center;display:flex;margin:0;padding:7px 15px}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--list li.uppy-ProviderBrowserItem{color:#eaeaea}.uppy-ProviderBrowser-viewType--list li.uppy-ProviderBrowserItem--disabled{opacity:.6}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox{background-color:#fff;border:1px solid #cfcfcf;border-radius:3px;height:17px;margin-inline-end:15px;width:17px}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox:focus{border:1px solid #1269cf;box-shadow:0 0 0 3px #1269cf40;outline:none}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox:after{height:5px;inset-inline-start:3px;opacity:0;top:4px;width:9px}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox:focus{border-color:#02baf2b3;box-shadow:0 0 0 3px #02baf233}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox,.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-partial .uppy-ProviderBrowserItem-checkbox{background-color:#1269cf;border-color:#1269cf}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox:after,.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-partial .uppy-ProviderBrowserItem-checkbox:after{opacity:1}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner{align-items:center;color:inherit;display:flex;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;overflow:hidden;padding:2px;text-overflow:ellipsis;white-space:nowrap}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner:focus{outline:none;text-decoration:underline}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner img,.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner svg{margin-inline-end:8px}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner span{line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--disabled .uppy-ProviderBrowserItem-inner{cursor:default}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-iconWrap{margin-inline-end:7px;width:20px}.uppy-ProviderBrowserItem-checkbox{cursor:pointer;flex-shrink:0;position:relative}.uppy-ProviderBrowserItem-checkbox:disabled,.uppy-ProviderBrowserItem-checkbox:disabled:after{cursor:default}[data-uppy-theme=dark] .uppy-ProviderBrowserItem-checkbox{background-color:#1f1f1f;border-color:#939393}[data-uppy-theme=dark] .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox{background-color:#333}.uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox:after{border-bottom:2px solid #eaeaea;border-left:2px solid #eaeaea;content:"";cursor:pointer;position:absolute;transform:rotate(-45deg)}.uppy-ProviderBrowserItem--is-partial .uppy-ProviderBrowserItem-checkbox:after{background-color:#eaeaea!important;content:""!important;height:2px!important;left:20%!important;position:absolute!important;right:20%!important;top:50%!important;transform:translateY(-50%)!important}.uppy-SearchProvider{align-items:center;display:flex;flex:1;flex-direction:column;height:100%;justify-content:center;width:100%}[data-uppy-theme=dark] .uppy-SearchProvider{background-color:#1f1f1f}.uppy-SearchProvider-input{margin-bottom:15px;max-width:650px;width:90%}.uppy-size--md .uppy-SearchProvider-input{margin-bottom:20px}.uppy-SearchProvider-input::-webkit-search-cancel-button{display:none}.uppy-SearchProvider-searchButton{padding:13px 25px}.uppy-size--md .uppy-SearchProvider-searchButton{padding:13px 30px}.uppy-DashboardContent-panelBody{align-items:center;display:flex;flex:1;justify-content:center}[data-uppy-theme=dark] .uppy-DashboardContent-panelBody{background-color:#1f1f1f}.uppy-Provider-auth,.uppy-Provider-empty,.uppy-Provider-error,.uppy-Provider-loading{align-items:center;color:#939393;display:flex;flex:1;flex-flow:column wrap;justify-content:center}.uppy-Provider-empty{color:#939393}.uppy-Provider-authIcon svg{height:75px;width:100px}.uppy-Provider-authTitle{color:#757575;font-size:17px;font-weight:400;line-height:1.4;margin-bottom:30px;max-width:500px;padding:0 15px;text-align:center}.uppy-size--md .uppy-Provider-authTitle{font-size:20px}[data-uppy-theme=dark] .uppy-Provider-authTitle{color:#cfcfcf}.uppy-Provider-btn-google{align-items:center;background:#4285f4;display:flex;padding:8px 12px!important}.uppy-Provider-btn-google:hover{background-color:#1266f1}.uppy-Provider-btn-google:focus{box-shadow:0 0 0 3px #4285f466;outline:none}.uppy-Provider-btn-google svg{margin-right:8px}.uppy-Provider-breadcrumbs{color:#525252;flex:1;font-size:12px;margin-bottom:10px;text-align:start}.uppy-size--md .uppy-Provider-breadcrumbs{margin-bottom:0}[data-uppy-theme=dark] .uppy-Provider-breadcrumbs{color:#eaeaea}.uppy-Provider-breadcrumbsIcon{color:#525252;display:inline-block;line-height:1;margin-inline-end:4px;vertical-align:middle}.uppy-Provider-breadcrumbsIcon svg{height:13px;width:13px;fill:#525252}.uppy-Provider-breadcrumbs button{border-radius:3px;display:inline-block;line-height:inherit;padding:4px}.uppy-Provider-breadcrumbs button:focus{outline:none}.uppy-Provider-breadcrumbs button::-moz-focus-inner{border:0}.uppy-Provider-breadcrumbs button:hover{color:#0e51a0}.uppy-Provider-breadcrumbs button:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-Provider-breadcrumbs button:focus{background-color:#333}.uppy-Provider-breadcrumbs button:not(:last-of-type){text-decoration:underline}.uppy-Provider-breadcrumbs button:last-of-type{color:#333;cursor:normal;font-weight:500;pointer-events:none}.uppy-Provider-breadcrumbs button:hover{cursor:pointer}[data-uppy-theme=dark] .uppy-Provider-breadcrumbs button{color:#eaeaea}.uppy-ProviderBrowser{display:flex;flex:1;flex-direction:column;font-size:14px;font-weight:400;height:100%}.uppy-ProviderBrowser-user{color:#333;font-weight:500;margin:0 8px 0 0}[data-uppy-theme=dark] .uppy-ProviderBrowser-user{color:#eaeaea}.uppy-ProviderBrowser-user:after{color:#939393;content:"·";font-weight:400;inset-inline-start:4px;position:relative}.uppy-ProviderBrowser-header{border-bottom:1px solid #eaeaea;position:relative;z-index:1001}[data-uppy-theme=dark] .uppy-ProviderBrowser-header{border-bottom:1px solid #333}.uppy-ProviderBrowser-headerBar{background-color:#fafafa;color:#757575;font-size:12px;line-height:1.4;padding:7px 15px;z-index:1001}.uppy-size--md .uppy-ProviderBrowser-headerBar{align-items:center;display:flex}[data-uppy-theme=dark] .uppy-ProviderBrowser-headerBar{background-color:#1f1f1f}.uppy-ProviderBrowser-headerBar--simple{display:block;justify-content:center;text-align:center}.uppy-ProviderBrowser-headerBar--simple .uppy-Provider-breadcrumbsWrap{display:inline-block;flex:none;vertical-align:middle}.uppy-ProviderBrowser-searchFilter{align-items:center;display:flex;height:30px;margin-bottom:15px;margin-top:15px;padding-left:8px;padding-right:8px;position:relative;width:100%}.uppy-ProviderBrowser-searchFilterInput{background-color:#eaeaea;border:0;border-radius:4px;color:#333;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;font-size:13px;height:30px;line-height:1.4;outline:0;padding-inline-end:30px;padding-inline-start:30px;width:100%;z-index:1001}.uppy-ProviderBrowser-searchFilterInput::-webkit-search-cancel-button{display:none}[data-uppy-theme=dark] .uppy-ProviderBrowser-searchFilterInput{background-color:#1f1f1f;color:#eaeaea}.uppy-ProviderBrowser-searchFilterInput:focus{background-color:#cfcfcf;border:0}[data-uppy-theme=dark] .uppy-ProviderBrowser-searchFilterInput:focus{background-color:#333}.uppy-ProviderBrowser-searchFilterIcon{color:#757575;height:12px;inset-inline-start:16px;position:absolute;width:12px;z-index:1002}.uppy-ProviderBrowser-searchFilterInput::-moz-placeholder{color:#939393;opacity:1}.uppy-ProviderBrowser-searchFilterInput::placeholder{color:#939393;opacity:1}.uppy-ProviderBrowser-searchFilterReset{border-radius:3px;color:#939393;cursor:pointer;height:22px;inset-inline-end:16px;padding:6px;position:absolute;width:22px;z-index:1002}.uppy-ProviderBrowser-searchFilterReset:focus{outline:none}.uppy-ProviderBrowser-searchFilterReset::-moz-focus-inner{border:0}.uppy-ProviderBrowser-searchFilterReset:focus{box-shadow:0 0 0 3px #1269cf80}.uppy-ProviderBrowser-searchFilterReset:hover{color:#757575}.uppy-ProviderBrowser-searchFilterReset svg{vertical-align:text-top}.uppy-ProviderBrowser-userLogout{border-radius:3px;color:#1269cf;cursor:pointer;line-height:inherit;padding:4px}.uppy-ProviderBrowser-userLogout:focus{outline:none}.uppy-ProviderBrowser-userLogout::-moz-focus-inner{border:0}.uppy-ProviderBrowser-userLogout:hover{color:#0e51a0}.uppy-ProviderBrowser-userLogout:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-ProviderBrowser-userLogout:focus{background-color:#333}.uppy-ProviderBrowser-userLogout:hover{text-decoration:underline}[data-uppy-theme=dark] .uppy-ProviderBrowser-userLogout{color:#eaeaea}.uppy-ProviderBrowser-body{flex:1;position:relative}.uppy-ProviderBrowser-list{background-color:#fff;border-spacing:0;display:block;flex:1;height:100%;inset:0;list-style:none;margin:0;overflow-x:hidden;overflow-y:auto;padding:0;position:absolute;width:100%;-webkit-overflow-scrolling:touch}[data-uppy-theme=dark] .uppy-ProviderBrowser-list{background-color:#1f1f1f}.uppy-ProviderBrowser-list:focus{outline:none}.uppy-ProviderBrowserItem-inner{cursor:pointer;font-size:13px;font-weight:500}.uppy-ProviderBrowser-footer{align-items:center;background-color:#fff;border-top:1px solid #eaeaea;display:flex;justify-content:space-between;padding:15px}.uppy-ProviderBrowser-footer button{margin-inline-end:8px}[data-uppy-theme=dark] .uppy-ProviderBrowser-footer{background-color:#1f1f1f;border-top:1px solid #333}.uppy-ProviderBrowser-footer-buttons{flex-shrink:0}.uppy-ProviderBrowser-footer-error{color:#e32437;line-height:18px}@media(max-width:426px){.uppy-ProviderBrowser-footer{align-items:stretch;flex-direction:column-reverse}.uppy-ProviderBrowser-footer-error{padding-bottom:10px}}.picker-dialog-bg{z-index:20000!important}.picker-dialog{z-index:20001!important}.uppy-Dashboard-Item-previewInnerWrap{align-items:center;border-radius:3px;box-shadow:0 0 2px #0006;display:flex;flex-direction:column;height:100%;justify-content:center;overflow:hidden;position:relative;width:100%}.uppy-size--md .uppy-Dashboard-Item-previewInnerWrap{box-shadow:0 1px 2px #00000026}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-previewInnerWrap{box-shadow:none}.uppy-Dashboard-Item-previewInnerWrap:after{background-color:#000000a6;content:"";display:none;inset:0;position:absolute;z-index:1001}.uppy-Dashboard-Item-previewLink{inset:0;position:absolute;z-index:1002}.uppy-Dashboard-Item-previewLink:focus{box-shadow:inset 0 0 0 3px #579df0}[data-uppy-theme=dark] .uppy-Dashboard-Item-previewLink:focus{box-shadow:inset 0 0 0 3px #016c8d}.uppy-Dashboard-Item-preview img.uppy-Dashboard-Item-previewImg{border-radius:3px;height:100%;-o-object-fit:cover;object-fit:cover;transform:translateZ(0);width:100%}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-preview img.uppy-Dashboard-Item-previewImg{height:auto;max-height:100%;max-width:100%;-o-object-fit:contain;object-fit:contain;padding:10px;width:auto}.uppy-Dashboard-Item-progress{color:#fff;left:50%;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);transition:all .35 ease;width:120px;z-index:1002}.uppy-Dashboard-Item-progressIndicator{color:#fff;display:inline-block;height:38px;opacity:.9;width:38px}.uppy-size--md .uppy-Dashboard-Item-progressIndicator{height:55px;width:55px}button.uppy-Dashboard-Item-progressIndicator{cursor:pointer}button.uppy-Dashboard-Item-progressIndicator:focus{outline:none}button.uppy-Dashboard-Item-progressIndicator::-moz-focus-inner{border:0}button.uppy-Dashboard-Item-progressIndicator:focus .uppy-Dashboard-Item-progressIcon--bg,button.uppy-Dashboard-Item-progressIndicator:focus .uppy-Dashboard-Item-progressIcon--retry{fill:#579df0}.uppy-Dashboard-Item-progressIcon--circle{height:100%;width:100%}.uppy-Dashboard-Item-progressIcon--bg{stroke:#fff6}.uppy-Dashboard-Item-progressIcon--progress{transition:stroke-dashoffset .5s ease-out;stroke:#fff}.uppy-Dashboard-Item-progressIcon--play{transition:all .2s;fill:#fff;stroke:#fff}.uppy-Dashboard-Item-progressIcon--cancel{transition:all .2s;fill:#fff}.uppy-Dashboard-Item-progressIcon--pause{transition:all .2s;fill:#fff;stroke:#fff}.uppy-Dashboard-Item-progressIcon--check{transition:all .2s;fill:#fff}.uppy-Dashboard-Item-progressIcon--retry{fill:#fff}.uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progress{inset-inline-end:-8px;inset-inline-start:auto;top:-9px;transform:none;width:auto}.uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-progressIndicator{height:18px;width:18px}.uppy-size--md .uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-progressIndicator{height:28px;width:28px}.uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progressIndicator{height:18px;opacity:1;width:18px}.uppy-size--md .uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progressIndicator{height:22px;width:22px}.uppy-Dashboard-Item.is-processing .uppy-Dashboard-Item-progress{opacity:0}.uppy-Dashboard-Item-fileInfo{padding-inline-end:5px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfo{padding-inline-end:10px}.uppy-size--md.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfo{padding-inline-end:15px}.uppy-Dashboard-Item-name{font-size:12px;font-weight:500;line-height:1.3;margin-bottom:5px;word-wrap:anywhere;word-break:break-all}[data-uppy-theme=dark] .uppy-Dashboard-Item-name{color:#eaeaea}.uppy-size--md.uppy-Dashboard--singleFile .uppy-Dashboard-Item-name{font-size:14px;line-height:1.4}.uppy-Dashboard-Item-fileName{align-items:baseline;display:flex}.uppy-Dashboard-Item-fileName button{margin-left:5px}.uppy-Dashboard-Item-author{color:#757575;display:inline-block;font-size:11px;font-weight:400;line-height:1;margin-bottom:5px;vertical-align:bottom}.uppy-Dashboard-Item-author a{color:#757575}.uppy-Dashboard-Item-status{color:#757575;font-size:11px;font-weight:400;line-height:1}[data-uppy-theme=dark] .uppy-Dashboard-Item-status{color:#bbb}.uppy-Dashboard-Item-statusSize{display:inline-block;margin-bottom:5px;text-transform:uppercase;vertical-align:bottom}.uppy-Dashboard-Item-reSelect{color:#1269cf;font-family:inherit;font-size:inherit;font-weight:600}.uppy-Dashboard-Item-errorMessage{background-color:#fdeff1;color:#a51523;font-size:11px;font-weight:500;line-height:1.3;padding:5px 6px}.uppy-Dashboard-Item-errorMessageBtn{color:#a51523;cursor:pointer;font-size:11px;font-weight:500;text-decoration:underline}.uppy-Dashboard-Item-preview .uppy-Dashboard-Item-errorMessage{display:none}.uppy-size--md .uppy-Dashboard-Item-preview .uppy-Dashboard-Item-errorMessage{border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-top:1px solid #f7c2c8;bottom:0;display:block;left:0;line-height:1.4;padding:6px 8px;position:absolute;right:0}.uppy-Dashboard-Item-fileInfo .uppy-Dashboard-Item-errorMessage{border:1px solid #f7c2c8;border-radius:3px;display:inline-block;position:static}.uppy-size--md .uppy-Dashboard-Item-fileInfo .uppy-Dashboard-Item-errorMessage{display:none}.uppy-Dashboard-Item-action{color:#939393;cursor:pointer}.uppy-Dashboard-Item-action:focus{outline:none}.uppy-Dashboard-Item-action::-moz-focus-inner{border:0}.uppy-Dashboard-Item-action:focus{box-shadow:0 0 0 3px #1269cf80}.uppy-Dashboard-Item-action:hover{color:#1f1f1f;opacity:1}[data-uppy-theme=dark] .uppy-Dashboard-Item-action{color:#cfcfcf}[data-uppy-theme=dark] .uppy-Dashboard-Item-action:focus{outline:none}[data-uppy-theme=dark] .uppy-Dashboard-Item-action::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-Dashboard-Item-action:focus{box-shadow:0 0 0 2px #aae1ffd9}[data-uppy-theme=dark] .uppy-Dashboard-Item-action:hover{color:#eaeaea}.uppy-Dashboard-Item-action--remove{color:#1f1f1f;opacity:.95}.uppy-Dashboard-Item-action--remove:hover{color:#000;opacity:1}.uppy-size--md .uppy-Dashboard-Item-action--remove{height:18px;inset-inline-end:-8px;padding:0;position:absolute;top:-8px;width:18px;z-index:1002}.uppy-size--md .uppy-Dashboard-Item-action--remove:focus{border-radius:50%}.uppy-Dashboard--singleFile.uppy-size--height-md .uppy-Dashboard-Item-action--remove{inset-inline-end:8px;position:absolute;top:8px}[data-uppy-theme=dark] .uppy-Dashboard-Item-action--remove{color:#525252}[data-uppy-theme=dark] .uppy-Dashboard-Item-action--remove:hover{color:#333}.uppy-Dashboard:not(.uppy-size--md):not(.uppy-Dashboard--singleFile.uppy-size--height-md) .uppy-Dashboard-Item-actionWrapper{align-items:center;display:flex}.uppy-Dashboard:not(.uppy-size--md):not(.uppy-Dashboard--singleFile.uppy-size--height-md) .uppy-Dashboard-Item-action{height:22px;margin-left:3px;padding:3px;width:22px}.uppy-Dashboard:not(.uppy-size--md):not(.uppy-Dashboard--singleFile.uppy-size--height-md) .uppy-Dashboard-Item-action:focus{border-radius:3px}.uppy-size--md .uppy-Dashboard-Item-action--copyLink,.uppy-size--md .uppy-Dashboard-Item-action--edit{height:16px;padding:0;width:16px}.uppy-size--md .uppy-Dashboard-Item-action--copyLink:focus,.uppy-size--md .uppy-Dashboard-Item-action--edit:focus{border-radius:3px}.uppy-Dashboard-Item{align-items:center;border-bottom:1px solid #eaeaea;display:flex;padding:10px}.uppy-Dashboard:not(.uppy-Dashboard--singleFile) .uppy-Dashboard-Item{padding-inline-end:0}[data-uppy-theme=dark] .uppy-Dashboard-Item{border-bottom:1px solid #333}.uppy-size--md .uppy-Dashboard-Item{border-bottom:0;display:block;float:inline-start;height:215px;margin:5px 15px;padding:0;position:relative;width:calc(33.333% - 30px)}.uppy-size--lg .uppy-Dashboard-Item{height:190px;margin:5px 15px;padding:0;width:calc(25% - 30px)}.uppy-size--xl .uppy-Dashboard-Item{height:210px;padding:0;width:calc(20% - 30px)}.uppy-Dashboard--singleFile .uppy-Dashboard-Item{border-bottom:0;display:flex;flex-direction:column;height:100%;max-width:400px;padding:15px;position:relative;width:100%}.uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-previewInnerWrap{opacity:.2}.uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-name{opacity:.7}.uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-preview:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='35' height='39' viewBox='0 0 35 39'%3E%3Cpath fill='%2523000' d='M1.708 38.66c1.709 0 3.417-3.417 6.834-3.417s5.125 3.417 8.61 3.417c3.348 0 5.056-3.417 8.473-3.417 4.305 0 5.125 3.417 6.833 3.417.889 0 1.709-.889 1.709-1.709v-19.68C34.167-5.757 0-5.757 0 17.271v19.68c0 .82.888 1.709 1.708 1.709m8.542-17.084a3.383 3.383 0 0 1-3.417-3.416 3.383 3.383 0 0 1 3.417-3.417 3.383 3.383 0 0 1 3.417 3.417 3.383 3.383 0 0 1-3.417 3.416m13.667 0A3.383 3.383 0 0 1 20.5 18.16a3.383 3.383 0 0 1 3.417-3.417 3.383 3.383 0 0 1 3.416 3.417 3.383 3.383 0 0 1-3.416 3.416'/%3E%3C/svg%3E");background-position:50% 10px;background-repeat:no-repeat;background-size:25px;content:"";inset:0;opacity:.5;position:absolute;z-index:1005}.uppy-size--md .uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-preview:before{background-position:50% 50%;background-size:40px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-preview:before{background-position:50% 50%;background-size:30%}.uppy-Dashboard-Item-preview{flex-grow:0;flex-shrink:0;height:50px;position:relative;width:50px}.uppy-size--md .uppy-Dashboard-Item-preview{height:140px;width:100%}.uppy-size--lg .uppy-Dashboard-Item-preview{height:120px}.uppy-size--xl .uppy-Dashboard-Item-preview{height:140px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-preview{flex-grow:1;max-height:75%;width:100%}.uppy-Dashboard--singleFile.uppy-size--md .uppy-Dashboard-Item-preview{max-height:100%}.uppy-Dashboard-Item-fileInfoAndButtons{align-items:center;display:flex;flex-grow:1;justify-content:space-between;padding-inline-end:8px;padding-inline-start:12px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfoAndButtons,.uppy-size--md .uppy-Dashboard-Item-fileInfoAndButtons{align-items:flex-start;padding:9px 0 0}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfoAndButtons{flex-grow:0;width:100%}.uppy-Dashboard-Item-fileInfo{flex-grow:1;flex-shrink:1}.uppy-Dashboard-Item-actionWrapper{flex-grow:0;flex-shrink:0}.uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-previewInnerWrap:after,.uppy-Dashboard-Item.is-inprogress .uppy-Dashboard-Item-previewInnerWrap:after{display:block}.uppy-Dashboard-Item-errorDetails{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#939393;border:none;border-radius:50%;color:#fff;cursor:help;flex-shrink:0;font-size:10px;font-weight:600;height:13px;inset-inline-start:2px;line-height:12px;position:relative;text-align:center;top:0;width:13px}.uppy-Dashboard-Item-errorDetails:after{line-height:1.3;word-wrap:break-word}.uppy-Dashboard-FileCard{background-color:#fff;border-radius:5px;box-shadow:0 0 10px 4px #0000001a;display:flex;flex-direction:column;height:100%;inset:0;position:absolute;width:100%;z-index:1005}.uppy-Dashboard-FileCard .uppy-DashboardContent-bar{border-top-left-radius:5px;border-top-right-radius:5px}.uppy-Dashboard-FileCard .uppy-Dashboard-FileCard-actions{border-bottom-left-radius:5px;border-bottom-right-radius:5px}.uppy-Dashboard-FileCard-inner{display:flex;flex-direction:column;flex-grow:1;flex-shrink:1;height:100%;min-height:0}.uppy-Dashboard-FileCard-preview{align-items:center;border-bottom:1px solid #eaeaea;display:flex;flex-grow:0;flex-shrink:1;height:60%;justify-content:center;min-height:0;position:relative}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-preview{background-color:#333;border-bottom:0}.uppy-Dashboard-FileCard-preview img.uppy-Dashboard-Item-previewImg{border-radius:3px;box-shadow:0 3px 20px #00000026;flex:0 0 auto;max-height:90%;max-width:90%;-o-object-fit:cover;object-fit:cover}.uppy-Dashboard-FileCard-edit{background-color:#00000080;border-radius:50px;color:#fff;font-size:13px;inset-inline-end:10px;padding:7px 15px;position:absolute;top:10px}.uppy-Dashboard-FileCard-edit:focus{outline:none}.uppy-Dashboard-FileCard-edit::-moz-focus-inner{border:0}.uppy-Dashboard-FileCard-edit:focus{box-shadow:0 0 0 3px #1269cf80}.uppy-Dashboard-FileCard-edit:hover{background-color:#000c}.uppy-Dashboard-FileCard-info{flex-grow:0;flex-shrink:0;height:40%;overflow-y:auto;padding:30px 20px 20px;-webkit-overflow-scrolling:touch}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-info{background-color:#1f1f1f}.uppy-Dashboard-FileCard-fieldset{border:0;font-size:0;margin:auto auto 12px;max-width:640px;padding:0}.uppy-Dashboard-FileCard-label{color:#525252;display:inline-block;font-size:12px;vertical-align:middle;width:22%}.uppy-size--md .uppy-Dashboard-FileCard-label{font-size:14px}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-label{color:#eaeaea}.uppy-Dashboard-FileCard-input{display:inline-block;vertical-align:middle;width:78%}.uppy-Dashboard-FileCard-actions{align-items:center;background-color:#fafafa;border-top:1px solid #eaeaea;display:flex;flex-grow:0;flex-shrink:0;height:55px;padding:0 15px}.uppy-size--md .uppy-Dashboard-FileCard-actions{height:65px}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-actions{background-color:#1f1f1f;border-top:1px solid #333}.uppy-Dashboard-FileCard-actionsBtn{margin-inline-end:10px}.uppy-Informer{bottom:60px;left:0;position:absolute;right:0;text-align:center;z-index:1005}.uppy-Informer span>div{margin-bottom:6px}.uppy-Informer-animated{opacity:0;transform:translateY(350%);transition:all .3s ease-in;z-index:-1000}.uppy-Informer p{background-color:#757575;border-radius:18px;color:#fff;display:inline-block;font-size:12px;font-weight:400;line-height:1.4;margin:0;max-width:90%;padding:6px 15px}.uppy-size--md .uppy-Informer p{font-size:14px;line-height:1.3;max-width:500px;padding:10px 20px}[data-uppy-theme=dark] .uppy-Informer p{background-color:#333}.uppy-Informer p span{background-color:#fff;border-radius:50%;color:#525252;display:inline-block;font-size:10px;height:13px;inset-inline-start:3px;line-height:12px;margin-inline-start:-1px;position:relative;top:-1px;vertical-align:middle;width:13px}.uppy-Informer p span:hover{cursor:help}.uppy-Informer p span:after{line-height:1.3;word-wrap:break-word}.uppy-Root [aria-label][role~=tooltip]{position:relative}.uppy-Root [aria-label][role~=tooltip]:after,.uppy-Root [aria-label][role~=tooltip]:before{backface-visibility:hidden;box-sizing:border-box;opacity:0;pointer-events:none;position:absolute;transform:translateZ(0);transform-origin:top;transition:all var(--microtip-transition-duration,.18s) var(--microtip-transition-easing,ease-in-out) var(--microtip-transition-delay,0s);will-change:transform;z-index:10}.uppy-Root [aria-label][role~=tooltip]:before{background-size:100% auto!important;content:""}.uppy-Root [aria-label][role~=tooltip]:after{background:#111111e6;border-radius:4px;box-sizing:initial;color:#fff;content:attr(aria-label);font-size:var(--microtip-font-size,13px);font-weight:var(--microtip-font-weight,normal);padding:.5em 1em;text-transform:var(--microtip-text-transform,none);white-space:nowrap}.uppy-Root [aria-label][role~=tooltip]:focus:after,.uppy-Root [aria-label][role~=tooltip]:focus:before,.uppy-Root [aria-label][role~=tooltip]:hover:after,.uppy-Root [aria-label][role~=tooltip]:hover:before{opacity:1;pointer-events:auto}.uppy-Root [role~=tooltip][data-microtip-position|=top]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M2.658 0h32.004c-6 0-11.627 12.002-16.002 12.002S8.594 0 2.658 0'/%3E%3C/svg%3E") no-repeat;bottom:100%;height:6px;left:50%;margin-bottom:5px;transform:translate3d(-50%,0,0);width:18px}.uppy-Root [role~=tooltip][data-microtip-position|=top]:after{bottom:100%;left:50%;margin-bottom:11px;transform:translate3d(-50%,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=top]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position|=top]:hover:before{transform:translate3d(-50%,-5px,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-left]:after{bottom:100%;transform:translate3d(calc(-100% + 16px),0,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-left]:hover:after{transform:translate3d(calc(-100% + 16px),-5px,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-right]:after{bottom:100%;transform:translate3d(-16px,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-right]:hover:after{transform:translate3d(-16px,-5px,0)}.uppy-Root [role~=tooltip][data-microtip-position|=bottom]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M33.342 12H1.338c6 0 11.627-12.002 16.002-12.002S27.406 12 33.342 12'/%3E%3C/svg%3E") no-repeat;bottom:auto;height:6px;left:50%;margin-bottom:0;margin-top:5px;top:100%;transform:translate3d(-50%,-10px,0);width:18px}.uppy-Root [role~=tooltip][data-microtip-position|=bottom]:after{left:50%;margin-top:11px;top:100%;transform:translate3d(-50%,-10px,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position|=bottom]:hover:before{transform:translate3d(-50%,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-left]:after{top:100%;transform:translate3d(calc(-100% + 16px),-10px,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-left]:hover:after{transform:translate3d(calc(-100% + 16px),0,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-right]:after{top:100%;transform:translate3d(-16px,-10px,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-right]:hover:after{transform:translate3d(-16px,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=left]:after,.uppy-Root [role~=tooltip][data-microtip-position=left]:before{inset:50% 100% auto auto;transform:translate3d(10px,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-position=left]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='36'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M0 33.342V1.338c0 6 12.002 11.627 12.002 16.002S0 27.406 0 33.342'/%3E%3C/svg%3E") no-repeat;height:18px;margin-bottom:0;margin-right:5px;width:6px}.uppy-Root [role~=tooltip][data-microtip-position=left]:after{margin-right:11px}.uppy-Root [role~=tooltip][data-microtip-position=left]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position=left]:hover:before{transform:translate3d(0,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-position=right]:after,.uppy-Root [role~=tooltip][data-microtip-position=right]:before{bottom:auto;left:100%;top:50%;transform:translate3d(-10px,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-position=right]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='36'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M12 2.658v32.004c0-6-12.002-11.627-12.002-16.002S12 8.594 12 2.658'/%3E%3C/svg%3E") no-repeat;height:18px;margin-bottom:0;margin-left:5px;width:6px}.uppy-Root [role~=tooltip][data-microtip-position=right]:after{margin-left:11px}.uppy-Root [role~=tooltip][data-microtip-position=right]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position=right]:hover:before{transform:translate3d(0,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-size=small]:after{white-space:normal;width:80px}.uppy-Root [role~=tooltip][data-microtip-size=medium]:after{white-space:normal;width:150px}.uppy-Root [role~=tooltip][data-microtip-size=large]:after{white-space:normal;width:260px}.uppy-StatusBar{background-color:#fff;color:#fff;display:flex;font-size:12px;font-weight:400;height:46px;line-height:40px;position:relative;transition:height .2s;z-index:1001}[data-uppy-theme=dark] .uppy-StatusBar{background-color:#1f1f1f}.uppy-StatusBar:before{background-color:#eaeaea;content:"";height:2px;inset:0;position:absolute;width:100%}[data-uppy-theme=dark] .uppy-StatusBar:before{background-color:#757575}.uppy-StatusBar[aria-hidden=true]{height:0;overflow-y:hidden}.uppy-StatusBar.is-complete .uppy-StatusBar-progress{background-color:#1bb240}.uppy-StatusBar.is-error .uppy-StatusBar-progress{background-color:#e32437}.uppy-StatusBar.is-complete .uppy-StatusBar-statusIndicator{color:#1bb240}.uppy-StatusBar.is-error .uppy-StatusBar-statusIndicator{color:#e32437}.uppy-StatusBar:not([aria-hidden=true]).is-waiting{background-color:#fff;border-top:1px solid #eaeaea;height:65px}[data-uppy-theme=dark] .uppy-StatusBar:not([aria-hidden=true]).is-waiting{background-color:#1f1f1f;border-top:1px solid #333}.uppy-StatusBar-progress{background-color:#1269cf;height:2px;position:absolute;transition:background-color,width .3s ease-out;z-index:1001}.uppy-StatusBar-progress.is-indeterminate{animation:uppy-StatusBar-ProgressStripes 1s linear infinite;background-image:linear-gradient(45deg,#0000004d 25%,#0000 0 50%,#0000004d 0 75%,#0000 0,#0000);background-size:64px 64px}@keyframes uppy-StatusBar-ProgressStripes{0%{background-position:0 0}to{background-position:64px 0}}.uppy-StatusBar.is-postprocessing .uppy-StatusBar-progress,.uppy-StatusBar.is-preprocessing .uppy-StatusBar-progress{background-color:#f6a623}.uppy-StatusBar.is-waiting .uppy-StatusBar-progress{display:none}.uppy-StatusBar-content{align-items:center;color:#333;display:flex;height:100%;padding-inline-start:10px;position:relative;text-overflow:ellipsis;white-space:nowrap;z-index:1002}.uppy-size--md .uppy-StatusBar-content{padding-inline-start:15px}[data-uppy-theme=dark] .uppy-StatusBar-content{color:#eaeaea}.uppy-StatusBar-status{display:flex;flex-direction:column;font-weight:400;justify-content:center;line-height:1.4;padding-inline-end:.3em}.uppy-StatusBar-statusPrimary{display:flex;font-weight:500;line-height:1}.uppy-StatusBar-statusPrimary button.uppy-StatusBar-details{margin-left:5px}[data-uppy-theme=dark] .uppy-StatusBar-statusPrimary{color:#eaeaea}.uppy-StatusBar-statusSecondary{color:#757575;display:inline-block;font-size:11px;line-height:1.2;margin-top:1px;white-space:nowrap}[data-uppy-theme=dark] .uppy-StatusBar-statusSecondary{color:#bbb}.uppy-StatusBar-statusSecondaryHint{display:inline-block;line-height:1;margin-inline-end:5px;vertical-align:middle}.uppy-size--md .uppy-StatusBar-statusSecondaryHint{margin-inline-end:8px}.uppy-StatusBar-statusIndicator{color:#525252;margin-inline-end:7px;position:relative;top:1px}.uppy-StatusBar-statusIndicator svg{vertical-align:text-bottom}.uppy-StatusBar-actions{align-items:center;bottom:0;display:flex;inset-inline-end:10px;position:absolute;top:0;z-index:1004}.uppy-StatusBar.is-waiting .uppy-StatusBar-actions{background-color:#fafafa;height:100%;padding:0 15px;position:static;width:100%}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actions{background-color:#1f1f1f}.uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts{flex-direction:column;height:90px}.uppy-size--md .uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts{flex-direction:row;height:65px}.uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts .uppy-StatusBar-actions{flex-direction:column;justify-content:center}.uppy-size--md .uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts .uppy-StatusBar-actions{flex-direction:row;justify-content:normal}.uppy-StatusBar-actionCircleBtn{cursor:pointer;line-height:1;margin:3px;opacity:.9}.uppy-StatusBar-actionCircleBtn:focus{outline:none}.uppy-StatusBar-actionCircleBtn::-moz-focus-inner{border:0}.uppy-StatusBar-actionCircleBtn:focus{box-shadow:0 0 0 3px #1269cf80}[data-uppy-theme=dark] .uppy-StatusBar-actionCircleBtn:focus{outline:none}[data-uppy-theme=dark] .uppy-StatusBar-actionCircleBtn::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-StatusBar-actionCircleBtn:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-StatusBar-actionCircleBtn:hover{opacity:1}.uppy-StatusBar-actionCircleBtn:focus{border-radius:50%}.uppy-StatusBar-actionCircleBtn svg{vertical-align:bottom}.uppy-StatusBar-actionBtn{color:#1269cf;display:inline-block;font-size:10px;line-height:inherit;vertical-align:middle}.uppy-size--md .uppy-StatusBar-actionBtn{font-size:11px}.uppy-StatusBar-actionBtn--disabled{opacity:.4}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--disabled{opacity:.7}.uppy-StatusBar-actionBtn--retry{background-color:#ff4b23;border-radius:8px;color:#fff;height:16px;line-height:1;margin-inline-end:6px;padding:1px 6px 3px 18px;position:relative}.uppy-StatusBar-actionBtn--retry:focus{outline:none}.uppy-StatusBar-actionBtn--retry::-moz-focus-inner{border:0}.uppy-StatusBar-actionBtn--retry:focus{box-shadow:0 0 0 3px #1269cf80}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--retry:focus{outline:none}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--retry::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--retry:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-StatusBar-actionBtn--retry:hover{background-color:#f92d00}.uppy-StatusBar-actionBtn--retry svg{inset-inline-start:6px;position:absolute;top:3px}.uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload{background-color:#1bb240;color:#fff;font-size:14px;line-height:1;padding:15px 10px;width:100%}.uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload:hover{background-color:#189c38}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload{background-color:#1c8b37}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload:hover{background-color:#18762f}.uppy-size--md .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload{padding:13px 22px;width:auto}.uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload.uppy-StatusBar-actionBtn--disabled:hover{background-color:#1bb240;cursor:not-allowed}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload.uppy-StatusBar-actionBtn--disabled:hover{background-color:#1c8b37}.uppy-StatusBar:not(.is-waiting) .uppy-StatusBar-actionBtn--upload{background-color:initial;color:#1269cf}.uppy-StatusBar-actionBtn--uploadNewlyAdded{border-radius:3px;padding-inline-end:3px;padding-bottom:1px;padding-inline-start:3px}.uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{outline:none}.uppy-StatusBar-actionBtn--uploadNewlyAdded::-moz-focus-inner{border:0}.uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{box-shadow:0 0 0 3px #1269cf80}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{outline:none}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--uploadNewlyAdded::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-StatusBar.is-postprocessing .uppy-StatusBar-actionBtn--uploadNewlyAdded,.uppy-StatusBar.is-preprocessing .uppy-StatusBar-actionBtn--uploadNewlyAdded{display:none}.uppy-StatusBar-actionBtn--done{border-radius:3px;line-height:1;padding:7px 8px}.uppy-StatusBar-actionBtn--done:focus{outline:none}.uppy-StatusBar-actionBtn--done::-moz-focus-inner{border:0}.uppy-StatusBar-actionBtn--done:hover{color:#0e51a0}.uppy-StatusBar-actionBtn--done:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--done:focus{background-color:#333}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--done{color:#02baf2}.uppy-size--md .uppy-StatusBar-actionBtn--done{font-size:14px}.uppy-StatusBar-serviceMsg{color:#000;font-size:11px;line-height:1.1;padding-left:10px}.uppy-size--md .uppy-StatusBar-serviceMsg{font-size:14px;padding-left:15px}[data-uppy-theme=dark] .uppy-StatusBar-serviceMsg{color:#eaeaea}.uppy-StatusBar-serviceMsg-ghostsIcon{left:6px;opacity:.5;position:relative;top:2px;vertical-align:text-bottom;width:10px}.uppy-size--md .uppy-StatusBar-serviceMsg-ghostsIcon{left:10px;top:1px;width:15px}.uppy-StatusBar-details{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#939393;border-radius:50%;color:#fff;cursor:help;display:inline-block;font-size:10px;font-weight:600;height:13px;inset-inline-start:2px;line-height:12px;position:relative;text-align:center;top:0;vertical-align:middle;width:13px}.uppy-StatusBar-details:after{line-height:1.3;word-wrap:break-word}.uppy-StatusBar-spinner{animation-duration:1s;animation-iteration-count:infinite;animation-name:uppy-StatusBar-spinnerAnimation;animation-timing-function:linear;fill:#1269cf;margin-inline-end:10px}.uppy-StatusBar.is-postprocessing .uppy-StatusBar-spinner,.uppy-StatusBar.is-preprocessing .uppy-StatusBar-spinner{fill:#f6a623}@keyframes uppy-StatusBar-spinnerAnimation{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.uppy-transition-slideDownUp-enter{opacity:.01;transform:translate3d(0,-105%,0);transition:transform .25s ease-in-out,opacity .25s ease-in-out}.uppy-transition-slideDownUp-enter.uppy-transition-slideDownUp-enter-active{opacity:1;transform:translateZ(0)}.uppy-transition-slideDownUp-leave{opacity:1;transform:translateZ(0);transition:transform .25s ease-in-out,opacity .25s ease-in-out}.uppy-transition-slideDownUp-leave.uppy-transition-slideDownUp-leave-active{opacity:.01;transform:translate3d(0,-105%,0)}@keyframes uppy-Dashboard-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes uppy-Dashboard-fadeOut{0%{opacity:1}to{opacity:0}}@keyframes uppy-Dashboard-slideDownAndFadeIn{0%{opacity:0;transform:translate3d(-50%,-70%,0)}to{opacity:1;transform:translate3d(-50%,-50%,0)}}@keyframes uppy-Dashboard-slideDownAndFadeIn--small{0%{opacity:0;transform:translate3d(0,-20%,0)}to{opacity:1;transform:translateZ(0)}}@keyframes uppy-Dashboard-slideUpFadeOut{0%{opacity:1;transform:translate3d(-50%,-50%,0)}to{opacity:0;transform:translate3d(-50%,-70%,0)}}@keyframes uppy-Dashboard-slideUpFadeOut--small{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20%,0)}}.uppy-Dashboard--modal{z-index:1001}.uppy-Dashboard--modal[aria-hidden=true]{display:none}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideDownAndFadeIn--small .3s cubic-bezier(0,0,.2,1)}@media only screen and (min-width:820px){.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideDownAndFadeIn .3s cubic-bezier(0,0,.2,1)}}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose>.uppy-Dashboard-overlay{animation:uppy-Dashboard-fadeIn .3s cubic-bezier(0,0,.2,1)}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose.uppy-Dashboard--isClosing>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideUpFadeOut--small .3s cubic-bezier(0,0,.2,1)}@media only screen and (min-width:820px){.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose.uppy-Dashboard--isClosing>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideUpFadeOut .3s cubic-bezier(0,0,.2,1)}}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose.uppy-Dashboard--isClosing>.uppy-Dashboard-overlay{animation:uppy-Dashboard-fadeOut .3s cubic-bezier(0,0,.2,1)}.uppy-Dashboard-isFixed{height:100vh;overflow:hidden}.uppy-Dashboard--modal .uppy-Dashboard-overlay{background-color:#00000080;inset:0;position:fixed;z-index:1001}.uppy-Dashboard-inner{background-color:#f4f4f4;border:1px solid #eaeaea;border-radius:5px;max-height:100%;max-width:100%;outline:none;position:relative}.uppy-size--md .uppy-Dashboard-inner{min-height:auto}@media only screen and (min-width:820px){.uppy-Dashboard-inner{height:500px;width:650px}}.uppy-Dashboard--modal .uppy-Dashboard-inner{z-index:1002}[data-uppy-theme=dark] .uppy-Dashboard-inner{background-color:#1f1f1f}.uppy-Dashboard--isDisabled .uppy-Dashboard-inner{cursor:not-allowed}.uppy-Dashboard-innerWrap{border-radius:5px;display:flex;flex-direction:column;height:100%;opacity:0;overflow:hidden;position:relative}.uppy-Dashboard--isInnerWrapVisible .uppy-Dashboard-innerWrap{opacity:1}.uppy-Dashboard--isDisabled .uppy-Dashboard-innerWrap{cursor:not-allowed;filter:grayscale(100%);opacity:.6;-webkit-user-select:none;-moz-user-select:none;user-select:none}.uppy-Dashboard--isDisabled .uppy-ProviderIconBg{fill:#9f9f9f}.uppy-Dashboard--isDisabled [aria-disabled],.uppy-Dashboard--isDisabled [disabled]{cursor:not-allowed;pointer-events:none}.uppy-Dashboard--modal .uppy-Dashboard-inner{border:none;inset:35px 15px 15px;position:fixed}@media only screen and (min-width:820px){.uppy-Dashboard--modal .uppy-Dashboard-inner{box-shadow:0 5px 15px 4px #00000026;left:50%;right:auto;top:50%;transform:translate(-50%,-50%)}}.uppy-Dashboard-close{color:#ffffffe6;cursor:pointer;display:block;font-size:27px;inset-inline-end:-2px;position:absolute;top:-33px;z-index:1005}.uppy-Dashboard-close:focus{outline:none}.uppy-Dashboard-close::-moz-focus-inner{border:0}.uppy-Dashboard-close:focus{color:#6eabf2}@media only screen and (min-width:820px){.uppy-Dashboard-close{font-size:35px;inset-inline-end:-35px;top:-10px}}.uppy-Dashboard-serviceMsg{background-color:#fffbf7;border-bottom:1px solid #edd4b9;border-top:1px solid #edd4b9;font-size:12px;font-weight:500;line-height:1.3;padding:12px 0;position:relative;top:-1px;z-index:1004}.uppy-size--md .uppy-Dashboard-serviceMsg{font-size:14px;line-height:1.4}[data-uppy-theme=dark] .uppy-Dashboard-serviceMsg{background-color:#1f1f1f;border-bottom:1px solid #333;border-top:1px solid #333;color:#eaeaea}.uppy-Dashboard-serviceMsg-title{display:block;line-height:1;margin-bottom:4px;padding-left:42px}.uppy-Dashboard-serviceMsg-text{padding:0 15px}.uppy-Dashboard-serviceMsg-actionBtn{color:#1269cf;font-size:inherit;font-weight:inherit;vertical-align:initial}[data-uppy-theme=dark] .uppy-Dashboard-serviceMsg-actionBtn{color:#02baf2e6}.uppy-Dashboard-serviceMsg-icon{left:15px;position:absolute;top:10px}.uppy-Dashboard-AddFiles{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;position:relative;text-align:center}[data-uppy-drag-drop-supported=true] .uppy-Dashboard-AddFiles{border:1px dashed #dfdfdf;border-radius:3px;height:calc(100% - 14px);margin:7px}.uppy-Dashboard-AddFilesPanel .uppy-Dashboard-AddFiles{border:none;height:calc(100% - 54px)}.uppy-Dashboard--modal .uppy-Dashboard-AddFiles{border-color:#cfcfcf}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles{border-color:#757575}.uppy-Dashboard-AddFiles-info{display:none;margin-top:auto;padding-bottom:15px;padding-top:15px}.uppy-size--height-md .uppy-Dashboard-AddFiles-info{display:block}.uppy-size--md .uppy-Dashboard-AddFiles-info{bottom:25px;left:0;padding-bottom:0;padding-top:30px;position:absolute;right:0}[data-uppy-num-acquirers="0"] .uppy-Dashboard-AddFiles-info{margin-top:0}.uppy-Dashboard-browse{color:#1269cf;cursor:pointer}.uppy-Dashboard-browse:focus{outline:none}.uppy-Dashboard-browse::-moz-focus-inner{border:0}.uppy-Dashboard-browse:focus,.uppy-Dashboard-browse:hover{border-bottom:1px solid #1269cf}[data-uppy-theme=dark] .uppy-Dashboard-browse{color:#02baf2e6}[data-uppy-theme=dark] .uppy-Dashboard-browse:focus,[data-uppy-theme=dark] .uppy-Dashboard-browse:hover{border-bottom:1px solid #02baf2}.uppy-Dashboard-browseBtn{display:block;font-size:14px;font-weight:500;margin-bottom:5px;margin-top:8px;width:100%}.uppy-size--md .uppy-Dashboard-browseBtn{font-size:15px;margin:15px auto;padding:13px 44px;width:auto}.uppy-Dashboard-AddFiles-list{display:flex;flex:1;flex-direction:column;margin-top:2px;overflow-y:auto;padding:2px 0;width:100%;-webkit-overflow-scrolling:touch}.uppy-size--md .uppy-Dashboard-AddFiles-list{flex:none;flex-direction:row;flex-wrap:wrap;justify-content:center;margin-top:15px;max-width:600px;overflow-y:visible;padding-top:0}.uppy-DashboardTab{border-bottom:1px solid #eaeaea;text-align:center;width:100%}[data-uppy-theme=dark] .uppy-DashboardTab{border-bottom:1px solid #333}.uppy-size--md .uppy-DashboardTab{border-bottom:none;display:inline-block;margin-bottom:10px;width:auto}.uppy-DashboardTab-btn{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:initial;color:#525252;cursor:pointer;flex-direction:row;height:100%;justify-content:left;padding:12px 15px;width:100%}.uppy-DashboardTab-btn:focus{outline:none}.uppy-size--md .uppy-DashboardTab-btn{border-radius:5px;flex-direction:column;margin-inline-end:1px;padding:10px 3px;width:86px}[data-uppy-theme=dark] .uppy-DashboardTab-btn{color:#eaeaea}.uppy-DashboardTab-btn::-moz-focus-inner{border:0}.uppy-DashboardTab-btn:hover{background-color:#e9ecef}[data-uppy-theme=dark] .uppy-DashboardTab-btn:hover{background-color:#333}.uppy-DashboardTab-btn:active,.uppy-DashboardTab-btn:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-DashboardTab-btn:active,[data-uppy-theme=dark] .uppy-DashboardTab-btn:focus{background-color:#525252}.uppy-DashboardTab-btn svg{display:inline-block;max-height:100%;max-width:100%;overflow:hidden;transition:transform .15s ease-in-out;vertical-align:text-top}.uppy-DashboardTab-inner{align-items:center;background-color:#fff;border-radius:8px;box-shadow:0 1px 1px #0000001a,0 1px 2px #0000001a,0 2px 3px #00000005;display:flex;height:32px;justify-content:center;margin-inline-end:10px;width:32px}.uppy-size--md .uppy-DashboardTab-inner{margin-inline-end:0}[data-uppy-theme=dark] .uppy-DashboardTab-inner{background-color:#323232;box-shadow:0 1px 1px #0003,0 1px 2px #0003,0 2px 3px #00000014}.uppy-DashboardTab-name{font-size:14px;font-weight:400}.uppy-size--md .uppy-DashboardTab-name{font-size:12px;line-height:15px;margin-bottom:0;margin-top:8px}.uppy-DashboardTab-iconMyDevice{color:#1269cf}[data-uppy-theme=dark] .uppy-DashboardTab-iconMyDevice{color:#02baf2}.uppy-DashboardTab-iconBox{color:#0061d5}[data-uppy-theme=dark] .uppy-DashboardTab-iconBox{color:#eaeaea}.uppy-DashboardTab-iconDropbox{color:#0061fe}[data-uppy-theme=dark] .uppy-DashboardTab-iconDropbox{color:#eaeaea}.uppy-DashboardTab-iconUnsplash{color:#111}[data-uppy-theme=dark] .uppy-DashboardTab-iconUnsplash{color:#eaeaea}.uppy-DashboardTab-iconWebdav{color:#111}[data-uppy-theme=dark] .uppy-DashboardTab-iconWebdav{color:#eaeaea}.uppy-DashboardTab-iconScreenRec{color:#2c3e50}[data-uppy-theme=dark] .uppy-DashboardTab-iconScreenRec{color:#eaeaea}.uppy-DashboardTab-iconAudio{color:#8030a3}[data-uppy-theme=dark] .uppy-DashboardTab-iconAudio{color:#bf6ee3}.uppy-Dashboard-input{height:.1px;opacity:0;overflow:hidden;position:absolute;width:.1px;z-index:-1}.uppy-DashboardContent-bar{align-items:center;background-color:#fafafa;border-bottom:1px solid #eaeaea;display:flex;flex-shrink:0;height:40px;justify-content:space-between;padding:0 10px;position:relative;width:100%;z-index:1004}.uppy-size--md .uppy-DashboardContent-bar{height:50px;padding:0 15px}[data-uppy-theme=dark] .uppy-DashboardContent-bar{background-color:#1f1f1f;border-bottom:1px solid #333}.uppy-DashboardContent-title{font-size:12px;font-weight:500;left:0;line-height:40px;margin:auto;max-width:170px;overflow-x:hidden;position:absolute;right:0;text-align:center;text-overflow:ellipsis;top:0;white-space:nowrap;width:100%}.uppy-size--md .uppy-DashboardContent-title{font-size:14px;line-height:50px;max-width:300px}[data-uppy-theme=dark] .uppy-DashboardContent-title{color:#eaeaea}.uppy-DashboardContent-back,.uppy-DashboardContent-save{-webkit-appearance:none;background:none;border:0;border-radius:3px;color:inherit;color:#1269cf;cursor:pointer;font-family:inherit;font-size:inherit;font-size:12px;font-weight:400;line-height:1;margin:0;margin-inline-start:-6px;padding:7px 6px}.uppy-DashboardContent-back:focus,.uppy-DashboardContent-save:focus{outline:none}.uppy-DashboardContent-back::-moz-focus-inner,.uppy-DashboardContent-save::-moz-focus-inner{border:0}.uppy-DashboardContent-back:hover,.uppy-DashboardContent-save:hover{color:#0e51a0}.uppy-DashboardContent-back:focus,.uppy-DashboardContent-save:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-DashboardContent-back:focus,[data-uppy-theme=dark] .uppy-DashboardContent-save:focus{background-color:#333}.uppy-size--md .uppy-DashboardContent-back,.uppy-size--md .uppy-DashboardContent-save{font-size:14px}[data-uppy-theme=dark] .uppy-DashboardContent-back,[data-uppy-theme=dark] .uppy-DashboardContent-save{color:#02baf2}.uppy-DashboardContent-addMore{-webkit-appearance:none;background:none;border:0;border-radius:3px;color:inherit;color:#1269cf;cursor:pointer;font-family:inherit;font-size:inherit;font-weight:500;height:29px;line-height:1;margin:0;margin-inline-end:-5px;padding:7px 8px;width:29px}.uppy-DashboardContent-addMore:focus{outline:none}.uppy-DashboardContent-addMore::-moz-focus-inner{border:0}.uppy-DashboardContent-addMore:hover{color:#0e51a0}.uppy-DashboardContent-addMore:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-DashboardContent-addMore:focus{background-color:#333}.uppy-size--md .uppy-DashboardContent-addMore{font-size:14px;height:auto;margin-inline-end:-8px;width:auto}[data-uppy-theme=dark] .uppy-DashboardContent-addMore{color:#02baf2}.uppy-DashboardContent-addMore svg{margin-inline-end:4px;vertical-align:initial}.uppy-size--md .uppy-DashboardContent-addMore svg{height:11px;width:11px}.uppy-DashboardContent-addMoreCaption{display:none}.uppy-size--md .uppy-DashboardContent-addMoreCaption{display:inline}.uppy-DashboardContent-panel{background-color:#f5f5f5;flex:1}.uppy-Dashboard-AddFilesPanel,.uppy-DashboardContent-panel{border-radius:5px;display:flex;flex-direction:column;inset:0;overflow:hidden;position:absolute;z-index:1005}.uppy-Dashboard-AddFilesPanel{background:#fafafa;background:linear-gradient(0deg,#fafafa 35%,#fafafad9);box-shadow:0 0 10px 5px #00000026}[data-uppy-theme=dark] .uppy-Dashboard-AddFilesPanel{background-color:#333;background-image:linear-gradient(0deg,#1f1f1f 35%,#1f1f1fd9)}.uppy-Dashboard--isAddFilesPanelVisible .uppy-Dashboard-files{filter:blur(2px)}.uppy-Dashboard-progress{bottom:0;height:12%;left:0;position:absolute;width:100%}.uppy-Dashboard-progressBarContainer.is-active{height:100%;left:0;position:absolute;top:0;width:100%;z-index:1004}.uppy-Dashboard-filesContainer{flex:1;margin:0;overflow-y:hidden;position:relative}.uppy-Dashboard-filesContainer:after{clear:both;content:"";display:table}.uppy-Dashboard-files{flex:1;margin:0;overflow-y:auto;padding:0 0 10px;-webkit-overflow-scrolling:touch}.uppy-size--md .uppy-Dashboard-files{padding-top:10px}.uppy-Dashboard--singleFile .uppy-Dashboard-filesInner{align-items:center;display:flex;height:100%;justify-content:center}.uppy-Dashboard-dropFilesHereHint{align-items:center;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48'%3E%3Cpath fill='%231269CF' d='M24 1v1C11.85 2 2 11.85 2 24s9.85 22 22 22 22-9.85 22-22S36.15 2 24 2zm0 0V0c13.254 0 24 10.746 24 24S37.254 48 24 48 0 37.254 0 24 10.746 0 24 0zm7.707 19.293a.999.999 0 1 1-1.414 1.414L25 16.414V34a1 1 0 1 1-2 0V16.414l-5.293 5.293a.999.999 0 1 1-1.414-1.414l7-7a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E");background-position:50% 50%;background-repeat:no-repeat;border:1px dashed #1269cf;border-radius:3px;color:#757575;display:flex;font-size:16px;justify-content:center;inset:7px;padding-top:90px;position:absolute;text-align:center;visibility:hidden;z-index:2000}[data-uppy-theme=dark] .uppy-Dashboard-dropFilesHereHint{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48'%3E%3Cpath fill='%2302BAF2' d='M24 1v1C11.85 2 2 11.85 2 24s9.85 22 22 22 22-9.85 22-22S36.15 2 24 2zm0 0V0c13.254 0 24 10.746 24 24S37.254 48 24 48 0 37.254 0 24 10.746 0 24 0zm7.707 19.293a.999.999 0 1 1-1.414 1.414L25 16.414V34a1 1 0 1 1-2 0V16.414l-5.293 5.293a.999.999 0 1 1-1.414-1.414l7-7a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E");border-color:#02baf2;color:#bbb}.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-dropFilesHereHint{pointer-events:none;visibility:visible}.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-files,.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-progressindicators,.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-serviceMsg,.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-DashboardContent-bar{opacity:.15}.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-AddFiles{opacity:.03}.uppy-Dashboard-AddFiles-title{color:#000;font-size:17px;font-weight:500;line-height:1.35;margin-bottom:5px;margin-top:15px;padding:0 15px;text-align:inline-start;width:100%}.uppy-size--md .uppy-Dashboard-AddFiles-title{font-size:21px;font-weight:400;margin-top:5px;max-width:480px;padding:0 35px;text-align:center}[data-uppy-num-acquirers="0"] .uppy-Dashboard-AddFiles-title{text-align:center}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles-title{color:#eaeaea}.uppy-Dashboard-AddFiles-title button{font-weight:500}.uppy-size--md .uppy-Dashboard-AddFiles-title button{font-weight:400}.uppy-Dashboard-note{color:#757575;font-size:14px;line-height:1.25;margin:auto;max-width:350px;padding:0 15px;text-align:center}.uppy-size--md .uppy-Dashboard-note{line-height:1.35;max-width:600px}[data-uppy-theme=dark] .uppy-Dashboard-note{color:#cfcfcf}a.uppy-Dashboard-poweredBy{color:#939393;display:inline-block;font-size:11px;margin-top:8px;text-align:center;text-decoration:none}.uppy-Dashboard-poweredByIcon{margin-left:1px;margin-right:1px;opacity:.9;position:relative;top:1px;vertical-align:text-top;fill:none;stroke:#939393}.uppy-Dashboard-Item-previewIcon{height:25px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:25px;z-index:100}.uppy-size--md .uppy-Dashboard-Item-previewIcon{height:38px;width:38px}.uppy-Dashboard-Item-previewIcon svg{height:100%;width:100%}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-previewIcon{height:100%;max-height:60%;max-width:60%;width:100%}.uppy-Dashboard-Item-previewIconWrap{height:76px;max-height:75%;position:relative}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-previewIconWrap{height:100%;width:100%}.uppy-Dashboard-Item-previewIconBg{filter:drop-shadow(rgba(0,0,0,.1) 0 1px 1px);height:100%;width:100%}.uppy-Dashboard-upload{height:50px;position:relative;width:50px}.uppy-size--md .uppy-Dashboard-upload{height:60px;width:60px}.uppy-Dashboard-upload .uppy-c-icon{position:relative;top:1px;width:50%}.uppy-Dashboard-uploadCount{background-color:#1bb240;border-radius:50%;color:#fff;font-size:8px;height:16px;inset-inline-end:-12px;line-height:16px;position:absolute;top:-12px;width:16px}.uppy-size--md .uppy-Dashboard-uploadCount{font-size:9px;height:18px;line-height:18px;width:18px}.uppy-Dashboard-inner{border:none!important;background:transparent!important}.uppy-Dashboard-innerWrap{border-radius:.5rem;overflow:hidden}.uppy-Dashboard-AddFiles{border:2px dashed hsl(var(--border))!important;border-radius:.5rem!important;background:hsl(var(--muted) / .3)!important;transition:all .2s ease}.uppy-Dashboard-AddFiles:hover{border-color:hsl(var(--primary))!important;background:hsl(var(--muted) / .5)!important}.uppy-Dashboard-AddFiles-title{color:hsl(var(--foreground))!important;font-weight:500!important}.uppy-Dashboard-AddFiles-info{color:hsl(var(--muted-foreground))!important}.uppy-Dashboard-browse{color:hsl(var(--primary))!important;font-weight:500!important}.uppy-Dashboard-browse:hover{text-decoration:underline!important}.uppy-Dashboard-files{background:transparent!important}.uppy-Dashboard-Item{border-bottom-color:hsl(var(--border))!important}.uppy-Dashboard-Item-name{color:hsl(var(--foreground))!important}.uppy-Dashboard-Item-status{color:hsl(var(--muted-foreground))!important}.uppy-StatusBar{background:hsl(var(--muted))!important;border-top:1px solid hsl(var(--border))!important}.uppy-StatusBar-progress{background:hsl(var(--primary))!important}.uppy-StatusBar-content{color:hsl(var(--foreground))!important}.uppy-StatusBar-actionBtn--upload{background:hsl(var(--primary))!important;color:hsl(var(--primary-foreground))!important;border-radius:.375rem!important;font-weight:500!important;padding:.5rem 1rem!important}.uppy-StatusBar-actionBtn--upload:hover{background:hsl(var(--primary) / .9)!important}.uppy-Dashboard-note{color:hsl(var(--muted-foreground))!important;font-size:.75rem!important}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles,.dark .uppy-Dashboard-AddFiles{background:hsl(var(--muted) / .2)!important}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles-title,.dark .uppy-Dashboard-AddFiles-title{color:hsl(var(--foreground))!important}[data-uppy-theme=dark] .uppy-StatusBar,.dark .uppy-StatusBar{background:hsl(var(--muted) / .5)!important}.uppy-Dashboard{font-family:inherit!important}.uppy-Dashboard-Item-preview{border-radius:.375rem!important;overflow:hidden}.uppy-Dashboard-Item-action--remove{color:hsl(var(--destructive))!important}.uppy-Dashboard-Item-action--remove:hover{opacity:.8}.uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progress{color:hsl(var(--success, 142 76% 36%))!important}.uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-progress{color:hsl(var(--destructive))!important}.uppy-Dashboard-files::-webkit-scrollbar{width:6px}.uppy-Dashboard-files::-webkit-scrollbar-track{background:transparent}.uppy-Dashboard-files::-webkit-scrollbar-thumb{background:hsl(var(--muted-foreground) / .3);border-radius:3px}.uppy-Dashboard-files::-webkit-scrollbar-thumb:hover{background:hsl(var(--muted-foreground) / .5)}@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(/assets/KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(/assets/KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(/assets/KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(/assets/KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(/assets/KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(/assets/KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.25"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:grab}.react-flow__node.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%} diff --git a/webui/dist/assets/index-ByB1XZQ6.js b/webui/dist/assets/index-ByB1XZQ6.js deleted file mode 100644 index ad7e8ef1..00000000 --- a/webui/dist/assets/index-ByB1XZQ6.js +++ /dev/null @@ -1,52 +0,0 @@ -import{r as u,j as e,L as $c,e as fa,b as eb,f as tb,g as sb,h as ab,k as fs,l as lb,m as nb,O as pp,n as ib}from"./router-CWhjJi2n.js";import{a as rb,b as cb,g as ob}from"./react-vendor-Dtc2IqVY.js";import{I as db,c as ub,J as si,K as Lc,L as gu,M as mb,N as Ii,O as Pi,P as hb,n as ju}from"./utils-CCeOswSm.js";import{L as gp,T as jp,C as vp,R as xb,a as bp,V as fb,b as pb,S as yp,c as gb,d as Np,I as jb,e as wp,f as vb,g as _p,h as bb,i as yb,j as Nb,O as Sp,P as wb,k as Cp,l as kp,D as Tp,A as Ep,m as zp,n as _b,o as Sb,p as Ap,q as Cb,r as Mp,s as kb,t as Tb,u as Eb,v as zb,w as Ab,x as Dp,y as Op,F as Rp}from"./radix-extra-BM7iD6Dt.js";import{aj as Mb,ak as Db,al as Ob,am as Rb,an as Uc,ao as Bc,ap as Wi,aq as Lb,ar as vu,as as Hc,at as Ub,au as Bb,av as Hb}from"./charts-Dhri-zxi.js";import{S as qb,G as Lp,O as Up,o as Gb,C as Bp,p as Vb,T as Hp,D as qp,R as Fb,q as $b,H as Gp,I as Qb,J as Vp,K as Fp,L as Yb,M as $p,V as Xb,N as Qp,Q as Yp,U as Kb,X as Zb,Y as Xp,Z as Jb,_ as Ib,$ as Kp,a0 as Pb,a1 as Wb,a2 as Zp,a3 as ey,a4 as ty,a5 as sy,a6 as Jp,a7 as Ip,a8 as Pp,a9 as Wp,aa as eg,ab as tg,ac as ay}from"./radix-core-C3XKqQJw.js";import{R as ws,P as gr,C as ha,a as Oa,Z as ln,b as Kc,F as Da,c as ly,S as ai,A as ny,D as iy,d as Zc,e as Wn,M as cn,T as ry,X as on,f as cy,g as oy,I as Ra,h as ya,i as Na,j as Jc,E as or,k as Ws,l as sg,H as dy,m as at,n as rl,U as dr,o as ag,p as lg,L as Gf,K as ng,q as uy,r as my,s as Qc,t as Ss,u as hy,B as ar,v as Ic,w as Bu,x as xy,y as fy,z as zs,G as to,J as ti,N as Rl,O as ur,Q as jr,V as py,W as gy,Y as hs,_ as Hu,$ as nn,a0 as vr,a1 as dn,a2 as Ll,a3 as br,a4 as qu,a5 as jy,a6 as vy,a7 as by,a8 as rn,a9 as yy,aa as ig,ab as Eu,ac as mr,ad as Ny,ae as zu,af as Au,ag as rg,ah as Vf,ai as wy,aj as _y,ak as Sy,al as Ol,am as bu,an as Ff,ao as Cy,ap as yu,aq as ky,ar as Ty,as as Ey,at as zy,au as Ay,av as cg,aw as og,ax as dg,ay as My,az as $f,aA as Dy,aB as Oy,aC as Ry,aD as Ly}from"./icons-SnP_l694.js";import{S as Uy,p as By,j as Hy,a as qy,E as Qf,R as Gy,o as Vy}from"./codemirror-BHeANvwm.js";import{_ as Vs,c as Fy,g as ug,D as $y}from"./misc-DyBU7ISD.js";import{u as Qy,a as Yf,D as Yy,c as Xy,S as Ky,h as Zy,b as Jy,s as Iy,K as Py,P as Wy,d as eN,C as tN}from"./dnd-Dyi3CnuX.js";import{D as sN,U as aN}from"./uppy-BHC3OXBx.js";import{M as lN,r as nN,a as iN,b as rN}from"./markdown-A1ShuLvG.js";import{r as cN,H as Pc,P as Wc,u as oN,a as dN,R as uN,B as mN,b as hN,C as xN,M as fN,c as pN}from"./reactflow-B3n3_Vkw.js";(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const h of document.querySelectorAll('link[rel="modulepreload"]'))d(h);new MutationObserver(h=>{for(const x of h)if(x.type==="childList")for(const f of x.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&d(f)}).observe(document,{childList:!0,subtree:!0});function c(h){const x={};return h.integrity&&(x.integrity=h.integrity),h.referrerPolicy&&(x.referrerPolicy=h.referrerPolicy),h.crossOrigin==="use-credentials"?x.credentials="include":h.crossOrigin==="anonymous"?x.credentials="omit":x.credentials="same-origin",x}function d(h){if(h.ep)return;h.ep=!0;const x=c(h);fetch(h.href,x)}})();var Nu={exports:{}},er={},wu={exports:{}},_u={};var Xf;function gN(){return Xf||(Xf=1,(function(n){function r(A,X){var T=A.length;A.push(X);e:for(;0>>1,_=A[te];if(0>>1;teh(ae,T))xe<_&&0>h(ve,ae)?(A[te]=ve,A[xe]=T,te=xe):(A[te]=ae,A[oe]=T,te=oe);else if(xe<_&&0>h(ve,T))A[te]=ve,A[xe]=T,te=xe;else break e}}return X}function h(A,X){var T=A.sortIndex-X.sortIndex;return T!==0?T:A.id-X.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var x=performance;n.unstable_now=function(){return x.now()}}else{var f=Date,j=f.now();n.unstable_now=function(){return f.now()-j}}var p=[],N=[],v=1,C=null,S=3,w=!1,L=!1,F=!1,B=!1,O=typeof setTimeout=="function"?setTimeout:null,K=typeof clearTimeout=="function"?clearTimeout:null,H=typeof setImmediate<"u"?setImmediate:null;function z(A){for(var X=c(N);X!==null;){if(X.callback===null)d(N);else if(X.startTime<=A)d(N),X.sortIndex=X.expirationTime,r(p,X);else break;X=c(N)}}function V(A){if(F=!1,z(A),!L)if(c(p)!==null)L=!0,Y||(Y=!0,we());else{var X=c(N);X!==null&&be(V,X.startTime-A)}}var Y=!1,E=-1,R=5,ne=-1;function fe(){return B?!0:!(n.unstable_now()-neA&&fe());){var te=C.callback;if(typeof te=="function"){C.callback=null,S=C.priorityLevel;var _=te(C.expirationTime<=A);if(A=n.unstable_now(),typeof _=="function"){C.callback=_,z(A),X=!0;break t}C===c(p)&&d(p),z(A)}else d(p);C=c(p)}if(C!==null)X=!0;else{var me=c(N);me!==null&&be(V,me.startTime-A),X=!1}}break e}finally{C=null,S=T,w=!1}X=void 0}}finally{X?we():Y=!1}}}var we;if(typeof H=="function")we=function(){H(Ce)};else if(typeof MessageChannel<"u"){var pe=new MessageChannel,Ne=pe.port2;pe.port1.onmessage=Ce,we=function(){Ne.postMessage(null)}}else we=function(){O(Ce,0)};function be(A,X){E=O(function(){A(n.unstable_now())},X)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(A){A.callback=null},n.unstable_forceFrameRate=function(A){0>A||125te?(A.sortIndex=T,r(N,A),c(p)===null&&A===c(N)&&(F?(K(E),E=-1):F=!0,be(V,T-te))):(A.sortIndex=_,r(p,A),L||w||(L=!0,Y||(Y=!0,we()))),A},n.unstable_shouldYield=fe,n.unstable_wrapCallback=function(A){var X=S;return function(){var T=S;S=X;try{return A.apply(this,arguments)}finally{S=T}}}})(_u)),_u}var Kf;function jN(){return Kf||(Kf=1,wu.exports=gN()),wu.exports}var Zf;function vN(){if(Zf)return er;Zf=1;var n=jN(),r=rb(),c=cb();function d(t){var s="https://react.dev/errors/"+t;if(1_||(t.current=te[_],te[_]=null,_--)}function ae(t,s){_++,te[_]=t.current,t.current=s}var xe=me(null),ve=me(null),de=me(null),G=me(null);function W(t,s){switch(ae(de,s),ae(ve,t),ae(xe,null),s.nodeType){case 9:case 11:t=(t=s.documentElement)&&(t=t.namespaceURI)?df(t):0;break;default:if(t=s.tagName,s=s.namespaceURI)s=df(s),t=uf(s,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}oe(xe),ae(xe,t)}function U(){oe(xe),oe(ve),oe(de)}function ee(t){t.memoizedState!==null&&ae(G,t);var s=xe.current,a=uf(s,t.type);s!==a&&(ae(ve,t),ae(xe,a))}function Se(t){ve.current===t&&(oe(xe),oe(ve)),G.current===t&&(oe(G),Xi._currentValue=T)}var Me,tt;function Xe(t){if(Me===void 0)try{throw Error()}catch(a){var s=a.stack.trim().match(/\n( *(at )?)/);Me=s&&s[1]||"",tt=-1)":-1i||k[l]!==J[i]){var le=` -`+k[l].replace(" at new "," at ");return t.displayName&&le.includes("")&&(le=le.replace("",t.displayName)),le}while(1<=l&&0<=i);break}}}finally{Ut=!1,Error.prepareStackTrace=a}return(a=t?t.displayName||t.name:"")?Xe(a):""}function re(t,s){switch(t.tag){case 26:case 27:case 5:return Xe(t.type);case 16:return Xe("Lazy");case 13:return t.child!==s&&s!==null?Xe("Suspense Fallback"):Xe("Suspense");case 19:return Xe("SuspenseList");case 0:case 15:return Bt(t.type,!1);case 11:return Bt(t.type.render,!1);case 1:return Bt(t.type,!0);case 31:return Xe("Activity");default:return""}}function ke(t){try{var s="",a=null;do s+=re(t,a),a=t,t=t.return;while(t);return s}catch(l){return` -Error generating stack: `+l.message+` -`+l.stack}}var Pe=Object.prototype.hasOwnProperty,Fe=n.unstable_scheduleCallback,ts=n.unstable_cancelCallback,As=n.unstable_shouldYield,js=n.unstable_requestPaint,Ke=n.unstable_now,D=n.unstable_getCurrentPriorityLevel,De=n.unstable_ImmediatePriority,ze=n.unstable_UserBlockingPriority,Ve=n.unstable_NormalPriority,At=n.unstable_LowPriority,We=n.unstable_IdlePriority,ss=n.log,gt=n.unstable_setDisableYieldValue,_e=null,je=null;function yt(t){if(typeof ss=="function"&>(t),je&&typeof je.setStrictMode=="function")try{je.setStrictMode(_e,t)}catch{}}var Ht=Math.clz32?Math.clz32:Kt,pa=Math.log,Ts=Math.LN2;function Kt(t){return t>>>=0,t===0?32:31-(pa(t)/Ts|0)|0}var Ms=256,Ds=262144,Ha=4194304;function Fs(t){var s=t&42;if(s!==0)return s;switch(t&-t){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:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return t&261888;case 262144:case 524288:case 1048576:case 2097152:return t&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return t&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return t}}function qa(t,s,a){var l=t.pendingLanes;if(l===0)return 0;var i=0,o=t.suspendedLanes,m=t.pingedLanes;t=t.warmLanes;var g=l&134217727;return g!==0?(l=g&~o,l!==0?i=Fs(l):(m&=g,m!==0?i=Fs(m):a||(a=g&~t,a!==0&&(i=Fs(a))))):(g=l&~o,g!==0?i=Fs(g):m!==0?i=Fs(m):a||(a=l&~t,a!==0&&(i=Fs(a)))),i===0?0:s!==0&&s!==i&&(s&o)===0&&(o=i&-i,a=s&-s,o>=a||o===32&&(a&4194048)!==0)?s:i}function Sa(t,s){return(t.pendingLanes&~(t.suspendedLanes&~t.pingedLanes)&s)===0}function P(t,s){switch(t){case 1:case 2:case 4:case 8:case 64:return s+250;case 16:case 32: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 s+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 ye(){var t=Ha;return Ha<<=1,(Ha&62914560)===0&&(Ha=4194304),t}function Re(t){for(var s=[],a=0;31>a;a++)s.push(t);return s}function us(t,s){t.pendingLanes|=s,s!==268435456&&(t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0)}function $s(t,s,a,l,i,o){var m=t.pendingLanes;t.pendingLanes=a,t.suspendedLanes=0,t.pingedLanes=0,t.warmLanes=0,t.expiredLanes&=a,t.entangledLanes&=a,t.errorRecoveryDisabledLanes&=a,t.shellSuspendCounter=0;var g=t.entanglements,k=t.expirationTimes,J=t.hiddenUpdates;for(a=m&~a;0"u")return null;try{return t.activeElement||t.body}catch{return t.body}}var Kg=/[\n"\\]/g;function aa(t){return t.replace(Kg,function(s){return"\\"+s.charCodeAt(0).toString(16)+" "})}function uo(t,s,a,l,i,o,m,g){t.name="",m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"?t.type=m:t.removeAttribute("type"),s!=null?m==="number"?(s===0&&t.value===""||t.value!=s)&&(t.value=""+sa(s)):t.value!==""+sa(s)&&(t.value=""+sa(s)):m!=="submit"&&m!=="reset"||t.removeAttribute("value"),s!=null?mo(t,m,sa(s)):a!=null?mo(t,m,sa(a)):l!=null&&t.removeAttribute("value"),i==null&&o!=null&&(t.defaultChecked=!!o),i!=null&&(t.checked=i&&typeof i!="function"&&typeof i!="symbol"),g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"?t.name=""+sa(g):t.removeAttribute("name")}function am(t,s,a,l,i,o,m,g){if(o!=null&&typeof o!="function"&&typeof o!="symbol"&&typeof o!="boolean"&&(t.type=o),s!=null||a!=null){if(!(o!=="submit"&&o!=="reset"||s!=null)){oo(t);return}a=a!=null?""+sa(a):"",s=s!=null?""+sa(s):a,g||s===t.value||(t.value=s),t.defaultValue=s}l=l??i,l=typeof l!="function"&&typeof l!="symbol"&&!!l,t.checked=g?t.checked:!!l,t.defaultChecked=!!l,m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"&&(t.name=m),oo(t)}function mo(t,s,a){s==="number"&&Cr(t.ownerDocument)===t||t.defaultValue===""+a||(t.defaultValue=""+a)}function gn(t,s,a,l){if(t=t.options,s){s={};for(var i=0;i"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),go=!1;if(Fa)try{var ui={};Object.defineProperty(ui,"passive",{get:function(){go=!0}}),window.addEventListener("test",ui,ui),window.removeEventListener("test",ui,ui)}catch{go=!1}var ul=null,jo=null,Tr=null;function dm(){if(Tr)return Tr;var t,s=jo,a=s.length,l,i="value"in ul?ul.value:ul.textContent,o=i.length;for(t=0;t=xi),pm=" ",gm=!1;function jm(t,s){switch(t){case"keyup":return Nj.indexOf(s.keyCode)!==-1;case"keydown":return s.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function vm(t){return t=t.detail,typeof t=="object"&&"data"in t?t.data:null}var yn=!1;function _j(t,s){switch(t){case"compositionend":return vm(s);case"keypress":return s.which!==32?null:(gm=!0,pm);case"textInput":return t=s.data,t===pm&&gm?null:t;default:return null}}function Sj(t,s){if(yn)return t==="compositionend"||!wo&&jm(t,s)?(t=dm(),Tr=jo=ul=null,yn=!1,t):null;switch(t){case"paste":return null;case"keypress":if(!(s.ctrlKey||s.altKey||s.metaKey)||s.ctrlKey&&s.altKey){if(s.char&&1=s)return{node:a,offset:s-t};t=l}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=km(a)}}function Em(t,s){return t&&s?t===s?!0:t&&t.nodeType===3?!1:s&&s.nodeType===3?Em(t,s.parentNode):"contains"in t?t.contains(s):t.compareDocumentPosition?!!(t.compareDocumentPosition(s)&16):!1:!1}function zm(t){t=t!=null&&t.ownerDocument!=null&&t.ownerDocument.defaultView!=null?t.ownerDocument.defaultView:window;for(var s=Cr(t.document);s instanceof t.HTMLIFrameElement;){try{var a=typeof s.contentWindow.location.href=="string"}catch{a=!1}if(a)t=s.contentWindow;else break;s=Cr(t.document)}return s}function Co(t){var s=t&&t.nodeName&&t.nodeName.toLowerCase();return s&&(s==="input"&&(t.type==="text"||t.type==="search"||t.type==="tel"||t.type==="url"||t.type==="password")||s==="textarea"||t.contentEditable==="true")}var Dj=Fa&&"documentMode"in document&&11>=document.documentMode,Nn=null,ko=null,ji=null,To=!1;function Am(t,s,a){var l=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;To||Nn==null||Nn!==Cr(l)||(l=Nn,"selectionStart"in l&&Co(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),ji&&gi(ji,l)||(ji=l,l=yc(ko,"onSelect"),0>=m,i-=m,ka=1<<32-Ht(s)+i|a<et?(ot=Ae,Ae=null):ot=Ae.sibling;var St=I(q,Ae,Z[et],ue);if(St===null){Ae===null&&(Ae=ot);break}t&&Ae&&St.alternate===null&&s(q,Ae),M=o(St,M,et),_t===null?Oe=St:_t.sibling=St,_t=St,Ae=ot}if(et===Z.length)return a(q,Ae),vt&&Qa(q,et),Oe;if(Ae===null){for(;etet?(ot=Ae,Ae=null):ot=Ae.sibling;var Dl=I(q,Ae,St.value,ue);if(Dl===null){Ae===null&&(Ae=ot);break}t&&Ae&&Dl.alternate===null&&s(q,Ae),M=o(Dl,M,et),_t===null?Oe=Dl:_t.sibling=Dl,_t=Dl,Ae=ot}if(St.done)return a(q,Ae),vt&&Qa(q,et),Oe;if(Ae===null){for(;!St.done;et++,St=Z.next())St=he(q,St.value,ue),St!==null&&(M=o(St,M,et),_t===null?Oe=St:_t.sibling=St,_t=St);return vt&&Qa(q,et),Oe}for(Ae=l(Ae);!St.done;et++,St=Z.next())St=se(Ae,q,et,St.value,ue),St!==null&&(t&&St.alternate!==null&&Ae.delete(St.key===null?et:St.key),M=o(St,M,et),_t===null?Oe=St:_t.sibling=St,_t=St);return t&&Ae.forEach(function(Wv){return s(q,Wv)}),vt&&Qa(q,et),Oe}function Ot(q,M,Z,ue){if(typeof Z=="object"&&Z!==null&&Z.type===F&&Z.key===null&&(Z=Z.props.children),typeof Z=="object"&&Z!==null){switch(Z.$$typeof){case w:e:{for(var Oe=Z.key;M!==null;){if(M.key===Oe){if(Oe=Z.type,Oe===F){if(M.tag===7){a(q,M.sibling),ue=i(M,Z.props.children),ue.return=q,q=ue;break e}}else if(M.elementType===Oe||typeof Oe=="object"&&Oe!==null&&Oe.$$typeof===R&&Jl(Oe)===M.type){a(q,M.sibling),ue=i(M,Z.props),_i(ue,Z),ue.return=q,q=ue;break e}a(q,M);break}else s(q,M);M=M.sibling}Z.type===F?(ue=Ql(Z.props.children,q.mode,ue,Z.key),ue.return=q,q=ue):(ue=Br(Z.type,Z.key,Z.props,null,q.mode,ue),_i(ue,Z),ue.return=q,q=ue)}return m(q);case L:e:{for(Oe=Z.key;M!==null;){if(M.key===Oe)if(M.tag===4&&M.stateNode.containerInfo===Z.containerInfo&&M.stateNode.implementation===Z.implementation){a(q,M.sibling),ue=i(M,Z.children||[]),ue.return=q,q=ue;break e}else{a(q,M);break}else s(q,M);M=M.sibling}ue=Ro(Z,q.mode,ue),ue.return=q,q=ue}return m(q);case R:return Z=Jl(Z),Ot(q,M,Z,ue)}if(be(Z))return Ee(q,M,Z,ue);if(we(Z)){if(Oe=we(Z),typeof Oe!="function")throw Error(d(150));return Z=Oe.call(Z),Ue(q,M,Z,ue)}if(typeof Z.then=="function")return Ot(q,M,Qr(Z),ue);if(Z.$$typeof===H)return Ot(q,M,Gr(q,Z),ue);Yr(q,Z)}return typeof Z=="string"&&Z!==""||typeof Z=="number"||typeof Z=="bigint"?(Z=""+Z,M!==null&&M.tag===6?(a(q,M.sibling),ue=i(M,Z),ue.return=q,q=ue):(a(q,M),ue=Oo(Z,q.mode,ue),ue.return=q,q=ue),m(q)):a(q,M)}return function(q,M,Z,ue){try{wi=0;var Oe=Ot(q,M,Z,ue);return Dn=null,Oe}catch(Ae){if(Ae===Mn||Ae===Fr)throw Ae;var _t=Ys(29,Ae,null,q.mode);return _t.lanes=ue,_t.return=q,_t}finally{}}}var Pl=eh(!0),th=eh(!1),pl=!1;function Xo(t){t.updateQueue={baseState:t.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Ko(t,s){t=t.updateQueue,s.updateQueue===t&&(s.updateQueue={baseState:t.baseState,firstBaseUpdate:t.firstBaseUpdate,lastBaseUpdate:t.lastBaseUpdate,shared:t.shared,callbacks:null})}function gl(t){return{lane:t,tag:0,payload:null,callback:null,next:null}}function jl(t,s,a){var l=t.updateQueue;if(l===null)return null;if(l=l.shared,(Ct&2)!==0){var i=l.pending;return i===null?s.next=s:(s.next=i.next,i.next=s),l.pending=s,s=Ur(t),Bm(t,null,a),s}return Lr(t,l,s,a),Ur(t)}function Si(t,s,a){if(s=s.updateQueue,s!==null&&(s=s.shared,(a&4194048)!==0)){var l=s.lanes;l&=t.pendingLanes,a|=l,s.lanes=a,dl(t,a)}}function Zo(t,s){var a=t.updateQueue,l=t.alternate;if(l!==null&&(l=l.updateQueue,a===l)){var i=null,o=null;if(a=a.firstBaseUpdate,a!==null){do{var m={lane:a.lane,tag:a.tag,payload:a.payload,callback:null,next:null};o===null?i=o=m:o=o.next=m,a=a.next}while(a!==null);o===null?i=o=s:o=o.next=s}else i=o=s;a={baseState:l.baseState,firstBaseUpdate:i,lastBaseUpdate:o,shared:l.shared,callbacks:l.callbacks},t.updateQueue=a;return}t=a.lastBaseUpdate,t===null?a.firstBaseUpdate=s:t.next=s,a.lastBaseUpdate=s}var Jo=!1;function Ci(){if(Jo){var t=An;if(t!==null)throw t}}function ki(t,s,a,l){Jo=!1;var i=t.updateQueue;pl=!1;var o=i.firstBaseUpdate,m=i.lastBaseUpdate,g=i.shared.pending;if(g!==null){i.shared.pending=null;var k=g,J=k.next;k.next=null,m===null?o=J:m.next=J,m=k;var le=t.alternate;le!==null&&(le=le.updateQueue,g=le.lastBaseUpdate,g!==m&&(g===null?le.firstBaseUpdate=J:g.next=J,le.lastBaseUpdate=k))}if(o!==null){var he=i.baseState;m=0,le=J=k=null,g=o;do{var I=g.lane&-536870913,se=I!==g.lane;if(se?(ct&I)===I:(l&I)===I){I!==0&&I===zn&&(Jo=!0),le!==null&&(le=le.next={lane:0,tag:g.tag,payload:g.payload,callback:null,next:null});e:{var Ee=t,Ue=g;I=s;var Ot=a;switch(Ue.tag){case 1:if(Ee=Ue.payload,typeof Ee=="function"){he=Ee.call(Ot,he,I);break e}he=Ee;break e;case 3:Ee.flags=Ee.flags&-65537|128;case 0:if(Ee=Ue.payload,I=typeof Ee=="function"?Ee.call(Ot,he,I):Ee,I==null)break e;he=C({},he,I);break e;case 2:pl=!0}}I=g.callback,I!==null&&(t.flags|=64,se&&(t.flags|=8192),se=i.callbacks,se===null?i.callbacks=[I]:se.push(I))}else se={lane:I,tag:g.tag,payload:g.payload,callback:g.callback,next:null},le===null?(J=le=se,k=he):le=le.next=se,m|=I;if(g=g.next,g===null){if(g=i.shared.pending,g===null)break;se=g,g=se.next,se.next=null,i.lastBaseUpdate=se,i.shared.pending=null}}while(!0);le===null&&(k=he),i.baseState=k,i.firstBaseUpdate=J,i.lastBaseUpdate=le,o===null&&(i.shared.lanes=0),wl|=m,t.lanes=m,t.memoizedState=he}}function sh(t,s){if(typeof t!="function")throw Error(d(191,t));t.call(s)}function ah(t,s){var a=t.callbacks;if(a!==null)for(t.callbacks=null,t=0;to?o:8;var m=A.T,g={};A.T=g,fd(t,!1,s,a);try{var k=i(),J=A.S;if(J!==null&&J(g,k),k!==null&&typeof k=="object"&&typeof k.then=="function"){var le=Vj(k,l);zi(t,s,le,Is(t))}else zi(t,s,l,Is(t))}catch(he){zi(t,s,{then:function(){},status:"rejected",reason:he},Is())}finally{X.p=o,m!==null&&g.types!==null&&(m.types=g.types),A.T=m}}function Kj(){}function hd(t,s,a,l){if(t.tag!==5)throw Error(d(476));var i=Rh(t).queue;Oh(t,i,s,T,a===null?Kj:function(){return Lh(t),a(l)})}function Rh(t){var s=t.memoizedState;if(s!==null)return s;s={memoizedState:T,baseState:T,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Za,lastRenderedState:T},next:null};var a={};return s.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Za,lastRenderedState:a},next:null},t.memoizedState=s,t=t.alternate,t!==null&&(t.memoizedState=s),s}function Lh(t){var s=Rh(t);s.next===null&&(s=t.alternate.memoizedState),zi(t,s.next.queue,{},Is())}function xd(){return bs(Xi)}function Uh(){return ls().memoizedState}function Bh(){return ls().memoizedState}function Zj(t){for(var s=t.return;s!==null;){switch(s.tag){case 24:case 3:var a=Is();t=gl(a);var l=jl(s,t,a);l!==null&&(qs(l,s,a),Si(l,s,a)),s={cache:Fo()},t.payload=s;return}s=s.return}}function Jj(t,s,a){var l=Is();a={lane:l,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},sc(t)?qh(s,a):(a=Mo(t,s,a,l),a!==null&&(qs(a,t,l),Gh(a,s,l)))}function Hh(t,s,a){var l=Is();zi(t,s,a,l)}function zi(t,s,a,l){var i={lane:l,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(sc(t))qh(s,i);else{var o=t.alternate;if(t.lanes===0&&(o===null||o.lanes===0)&&(o=s.lastRenderedReducer,o!==null))try{var m=s.lastRenderedState,g=o(m,a);if(i.hasEagerState=!0,i.eagerState=g,Qs(g,m))return Lr(t,s,i,0),Lt===null&&Rr(),!1}catch{}finally{}if(a=Mo(t,s,i,l),a!==null)return qs(a,t,l),Gh(a,s,l),!0}return!1}function fd(t,s,a,l){if(l={lane:2,revertLane:Xd(),gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},sc(t)){if(s)throw Error(d(479))}else s=Mo(t,a,l,2),s!==null&&qs(s,t,2)}function sc(t){var s=t.alternate;return t===Ie||s!==null&&s===Ie}function qh(t,s){Rn=Zr=!0;var a=t.pending;a===null?s.next=s:(s.next=a.next,a.next=s),t.pending=s}function Gh(t,s,a){if((a&4194048)!==0){var l=s.lanes;l&=t.pendingLanes,a|=l,s.lanes=a,dl(t,a)}}var Ai={readContext:bs,use:Pr,useCallback:It,useContext:It,useEffect:It,useImperativeHandle:It,useLayoutEffect:It,useInsertionEffect:It,useMemo:It,useReducer:It,useRef:It,useState:It,useDebugValue:It,useDeferredValue:It,useTransition:It,useSyncExternalStore:It,useId:It,useHostTransitionStatus:It,useFormState:It,useActionState:It,useOptimistic:It,useMemoCache:It,useCacheRefresh:It};Ai.useEffectEvent=It;var Vh={readContext:bs,use:Pr,useCallback:function(t,s){return Es().memoizedState=[t,s===void 0?null:s],t},useContext:bs,useEffect:Sh,useImperativeHandle:function(t,s,a){a=a!=null?a.concat([t]):null,ec(4194308,4,Eh.bind(null,s,t),a)},useLayoutEffect:function(t,s){return ec(4194308,4,t,s)},useInsertionEffect:function(t,s){ec(4,2,t,s)},useMemo:function(t,s){var a=Es();s=s===void 0?null:s;var l=t();if(Wl){yt(!0);try{t()}finally{yt(!1)}}return a.memoizedState=[l,s],l},useReducer:function(t,s,a){var l=Es();if(a!==void 0){var i=a(s);if(Wl){yt(!0);try{a(s)}finally{yt(!1)}}}else i=s;return l.memoizedState=l.baseState=i,t={pending:null,lanes:0,dispatch:null,lastRenderedReducer:t,lastRenderedState:i},l.queue=t,t=t.dispatch=Jj.bind(null,Ie,t),[l.memoizedState,t]},useRef:function(t){var s=Es();return t={current:t},s.memoizedState=t},useState:function(t){t=cd(t);var s=t.queue,a=Hh.bind(null,Ie,s);return s.dispatch=a,[t.memoizedState,a]},useDebugValue:ud,useDeferredValue:function(t,s){var a=Es();return md(a,t,s)},useTransition:function(){var t=cd(!1);return t=Oh.bind(null,Ie,t.queue,!0,!1),Es().memoizedState=t,[!1,t]},useSyncExternalStore:function(t,s,a){var l=Ie,i=Es();if(vt){if(a===void 0)throw Error(d(407));a=a()}else{if(a=s(),Lt===null)throw Error(d(349));(ct&127)!==0||oh(l,s,a)}i.memoizedState=a;var o={value:a,getSnapshot:s};return i.queue=o,Sh(uh.bind(null,l,o,t),[t]),l.flags|=2048,Un(9,{destroy:void 0},dh.bind(null,l,o,a,s),null),a},useId:function(){var t=Es(),s=Lt.identifierPrefix;if(vt){var a=Ta,l=ka;a=(l&~(1<<32-Ht(l)-1)).toString(32)+a,s="_"+s+"R_"+a,a=Jr++,0<\/script>",o=o.removeChild(o.firstChild);break;case"select":o=typeof l.is=="string"?m.createElement("select",{is:l.is}):m.createElement("select"),l.multiple?o.multiple=!0:l.size&&(o.size=l.size);break;default:o=typeof l.is=="string"?m.createElement(i,{is:l.is}):m.createElement(i)}}o[$e]=s,o[jt]=l;e:for(m=s.child;m!==null;){if(m.tag===5||m.tag===6)o.appendChild(m.stateNode);else if(m.tag!==4&&m.tag!==27&&m.child!==null){m.child.return=m,m=m.child;continue}if(m===s)break e;for(;m.sibling===null;){if(m.return===null||m.return===s)break e;m=m.return}m.sibling.return=m.return,m=m.sibling}s.stateNode=o;e:switch(Ns(o,i,l),i){case"button":case"input":case"select":case"textarea":l=!!l.autoFocus;break e;case"img":l=!0;break e;default:l=!1}l&&Ia(s)}}return Gt(s),Ed(s,s.type,t===null?null:t.memoizedProps,s.pendingProps,a),null;case 6:if(t&&s.stateNode!=null)t.memoizedProps!==l&&Ia(s);else{if(typeof l!="string"&&s.stateNode===null)throw Error(d(166));if(t=de.current,Tn(s)){if(t=s.stateNode,a=s.memoizedProps,l=null,i=vs,i!==null)switch(i.tag){case 27:case 5:l=i.memoizedProps}t[$e]=s,t=!!(t.nodeValue===a||l!==null&&l.suppressHydrationWarning===!0||cf(t.nodeValue,a)),t||xl(s,!0)}else t=Nc(t).createTextNode(l),t[$e]=s,s.stateNode=t}return Gt(s),null;case 31:if(a=s.memoizedState,t===null||t.memoizedState!==null){if(l=Tn(s),a!==null){if(t===null){if(!l)throw Error(d(318));if(t=s.memoizedState,t=t!==null?t.dehydrated:null,!t)throw Error(d(557));t[$e]=s}else Yl(),(s.flags&128)===0&&(s.memoizedState=null),s.flags|=4;Gt(s),t=!1}else a=Ho(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=a),t=!0;if(!t)return s.flags&256?(Ks(s),s):(Ks(s),null);if((s.flags&128)!==0)throw Error(d(558))}return Gt(s),null;case 13:if(l=s.memoizedState,t===null||t.memoizedState!==null&&t.memoizedState.dehydrated!==null){if(i=Tn(s),l!==null&&l.dehydrated!==null){if(t===null){if(!i)throw Error(d(318));if(i=s.memoizedState,i=i!==null?i.dehydrated:null,!i)throw Error(d(317));i[$e]=s}else Yl(),(s.flags&128)===0&&(s.memoizedState=null),s.flags|=4;Gt(s),i=!1}else i=Ho(),t!==null&&t.memoizedState!==null&&(t.memoizedState.hydrationErrors=i),i=!0;if(!i)return s.flags&256?(Ks(s),s):(Ks(s),null)}return Ks(s),(s.flags&128)!==0?(s.lanes=a,s):(a=l!==null,t=t!==null&&t.memoizedState!==null,a&&(l=s.child,i=null,l.alternate!==null&&l.alternate.memoizedState!==null&&l.alternate.memoizedState.cachePool!==null&&(i=l.alternate.memoizedState.cachePool.pool),o=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(o=l.memoizedState.cachePool.pool),o!==i&&(l.flags|=2048)),a!==t&&a&&(s.child.flags|=8192),rc(s,s.updateQueue),Gt(s),null);case 4:return U(),t===null&&Id(s.stateNode.containerInfo),Gt(s),null;case 10:return Xa(s.type),Gt(s),null;case 19:if(oe(as),l=s.memoizedState,l===null)return Gt(s),null;if(i=(s.flags&128)!==0,o=l.rendering,o===null)if(i)Di(l,!1);else{if(Pt!==0||t!==null&&(t.flags&128)!==0)for(t=s.child;t!==null;){if(o=Kr(t),o!==null){for(s.flags|=128,Di(l,!1),t=o.updateQueue,s.updateQueue=t,rc(s,t),s.subtreeFlags=0,t=a,a=s.child;a!==null;)Hm(a,t),a=a.sibling;return ae(as,as.current&1|2),vt&&Qa(s,l.treeForkCount),s.child}t=t.sibling}l.tail!==null&&Ke()>mc&&(s.flags|=128,i=!0,Di(l,!1),s.lanes=4194304)}else{if(!i)if(t=Kr(o),t!==null){if(s.flags|=128,i=!0,t=t.updateQueue,s.updateQueue=t,rc(s,t),Di(l,!0),l.tail===null&&l.tailMode==="hidden"&&!o.alternate&&!vt)return Gt(s),null}else 2*Ke()-l.renderingStartTime>mc&&a!==536870912&&(s.flags|=128,i=!0,Di(l,!1),s.lanes=4194304);l.isBackwards?(o.sibling=s.child,s.child=o):(t=l.last,t!==null?t.sibling=o:s.child=o,l.last=o)}return l.tail!==null?(t=l.tail,l.rendering=t,l.tail=t.sibling,l.renderingStartTime=Ke(),t.sibling=null,a=as.current,ae(as,i?a&1|2:a&1),vt&&Qa(s,l.treeForkCount),t):(Gt(s),null);case 22:case 23:return Ks(s),Po(),l=s.memoizedState!==null,t!==null?t.memoizedState!==null!==l&&(s.flags|=8192):l&&(s.flags|=8192),l?(a&536870912)!==0&&(s.flags&128)===0&&(Gt(s),s.subtreeFlags&6&&(s.flags|=8192)):Gt(s),a=s.updateQueue,a!==null&&rc(s,a.retryQueue),a=null,t!==null&&t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),l=null,s.memoizedState!==null&&s.memoizedState.cachePool!==null&&(l=s.memoizedState.cachePool.pool),l!==a&&(s.flags|=2048),t!==null&&oe(Zl),null;case 24:return a=null,t!==null&&(a=t.memoizedState.cache),s.memoizedState.cache!==a&&(s.flags|=2048),Xa(is),Gt(s),null;case 25:return null;case 30:return null}throw Error(d(156,s.tag))}function tv(t,s){switch(Uo(s),s.tag){case 1:return t=s.flags,t&65536?(s.flags=t&-65537|128,s):null;case 3:return Xa(is),U(),t=s.flags,(t&65536)!==0&&(t&128)===0?(s.flags=t&-65537|128,s):null;case 26:case 27:case 5:return Se(s),null;case 31:if(s.memoizedState!==null){if(Ks(s),s.alternate===null)throw Error(d(340));Yl()}return t=s.flags,t&65536?(s.flags=t&-65537|128,s):null;case 13:if(Ks(s),t=s.memoizedState,t!==null&&t.dehydrated!==null){if(s.alternate===null)throw Error(d(340));Yl()}return t=s.flags,t&65536?(s.flags=t&-65537|128,s):null;case 19:return oe(as),null;case 4:return U(),null;case 10:return Xa(s.type),null;case 22:case 23:return Ks(s),Po(),t!==null&&oe(Zl),t=s.flags,t&65536?(s.flags=t&-65537|128,s):null;case 24:return Xa(is),null;case 25:return null;default:return null}}function mx(t,s){switch(Uo(s),s.tag){case 3:Xa(is),U();break;case 26:case 27:case 5:Se(s);break;case 4:U();break;case 31:s.memoizedState!==null&&Ks(s);break;case 13:Ks(s);break;case 19:oe(as);break;case 10:Xa(s.type);break;case 22:case 23:Ks(s),Po(),t!==null&&oe(Zl);break;case 24:Xa(is)}}function Oi(t,s){try{var a=s.updateQueue,l=a!==null?a.lastEffect:null;if(l!==null){var i=l.next;a=i;do{if((a.tag&t)===t){l=void 0;var o=a.create,m=a.inst;l=o(),m.destroy=l}a=a.next}while(a!==i)}}catch(g){Et(s,s.return,g)}}function yl(t,s,a){try{var l=s.updateQueue,i=l!==null?l.lastEffect:null;if(i!==null){var o=i.next;l=o;do{if((l.tag&t)===t){var m=l.inst,g=m.destroy;if(g!==void 0){m.destroy=void 0,i=s;var k=a,J=g;try{J()}catch(le){Et(i,k,le)}}}l=l.next}while(l!==o)}}catch(le){Et(s,s.return,le)}}function hx(t){var s=t.updateQueue;if(s!==null){var a=t.stateNode;try{ah(s,a)}catch(l){Et(t,t.return,l)}}}function xx(t,s,a){a.props=en(t.type,t.memoizedProps),a.state=t.memoizedState;try{a.componentWillUnmount()}catch(l){Et(t,s,l)}}function Ri(t,s){try{var a=t.ref;if(a!==null){switch(t.tag){case 26:case 27:case 5:var l=t.stateNode;break;case 30:l=t.stateNode;break;default:l=t.stateNode}typeof a=="function"?t.refCleanup=a(l):a.current=l}}catch(i){Et(t,s,i)}}function Ea(t,s){var a=t.ref,l=t.refCleanup;if(a!==null)if(typeof l=="function")try{l()}catch(i){Et(t,s,i)}finally{t.refCleanup=null,t=t.alternate,t!=null&&(t.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(i){Et(t,s,i)}else a.current=null}function fx(t){var s=t.type,a=t.memoizedProps,l=t.stateNode;try{e:switch(s){case"button":case"input":case"select":case"textarea":a.autoFocus&&l.focus();break e;case"img":a.src?l.src=a.src:a.srcSet&&(l.srcset=a.srcSet)}}catch(i){Et(t,t.return,i)}}function zd(t,s,a){try{var l=t.stateNode;wv(l,t.type,a,s),l[jt]=s}catch(i){Et(t,t.return,i)}}function px(t){return t.tag===5||t.tag===3||t.tag===26||t.tag===27&&Tl(t.type)||t.tag===4}function Ad(t){e:for(;;){for(;t.sibling===null;){if(t.return===null||px(t.return))return null;t=t.return}for(t.sibling.return=t.return,t=t.sibling;t.tag!==5&&t.tag!==6&&t.tag!==18;){if(t.tag===27&&Tl(t.type)||t.flags&2||t.child===null||t.tag===4)continue e;t.child.return=t,t=t.child}if(!(t.flags&2))return t.stateNode}}function Md(t,s,a){var l=t.tag;if(l===5||l===6)t=t.stateNode,s?(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a).insertBefore(t,s):(s=a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,s.appendChild(t),a=a._reactRootContainer,a!=null||s.onclick!==null||(s.onclick=Va));else if(l!==4&&(l===27&&Tl(t.type)&&(a=t.stateNode,s=null),t=t.child,t!==null))for(Md(t,s,a),t=t.sibling;t!==null;)Md(t,s,a),t=t.sibling}function cc(t,s,a){var l=t.tag;if(l===5||l===6)t=t.stateNode,s?a.insertBefore(t,s):a.appendChild(t);else if(l!==4&&(l===27&&Tl(t.type)&&(a=t.stateNode),t=t.child,t!==null))for(cc(t,s,a),t=t.sibling;t!==null;)cc(t,s,a),t=t.sibling}function gx(t){var s=t.stateNode,a=t.memoizedProps;try{for(var l=t.type,i=s.attributes;i.length;)s.removeAttributeNode(i[0]);Ns(s,l,a),s[$e]=t,s[jt]=a}catch(o){Et(t,t.return,o)}}var Pa=!1,os=!1,Dd=!1,jx=typeof WeakSet=="function"?WeakSet:Set,gs=null;function sv(t,s){if(t=t.containerInfo,eu=Ec,t=zm(t),Co(t)){if("selectionStart"in t)var a={start:t.selectionStart,end:t.selectionEnd};else e:{a=(a=t.ownerDocument)&&a.defaultView||window;var l=a.getSelection&&a.getSelection();if(l&&l.rangeCount!==0){a=l.anchorNode;var i=l.anchorOffset,o=l.focusNode;l=l.focusOffset;try{a.nodeType,o.nodeType}catch{a=null;break e}var m=0,g=-1,k=-1,J=0,le=0,he=t,I=null;t:for(;;){for(var se;he!==a||i!==0&&he.nodeType!==3||(g=m+i),he!==o||l!==0&&he.nodeType!==3||(k=m+l),he.nodeType===3&&(m+=he.nodeValue.length),(se=he.firstChild)!==null;)I=he,he=se;for(;;){if(he===t)break t;if(I===a&&++J===i&&(g=m),I===o&&++le===l&&(k=m),(se=he.nextSibling)!==null)break;he=I,I=he.parentNode}he=se}a=g===-1||k===-1?null:{start:g,end:k}}else a=null}a=a||{start:0,end:0}}else a=null;for(tu={focusedElem:t,selectionRange:a},Ec=!1,gs=s;gs!==null;)if(s=gs,t=s.child,(s.subtreeFlags&1028)!==0&&t!==null)t.return=s,gs=t;else for(;gs!==null;){switch(s=gs,o=s.alternate,t=s.flags,s.tag){case 0:if((t&4)!==0&&(t=s.updateQueue,t=t!==null?t.events:null,t!==null))for(a=0;a title"))),Ns(o,l,a),o[$e]=t,ps(o),l=o;break e;case"link":var m=Sf("link","href",i).get(l+(a.href||""));if(m){for(var g=0;gOt&&(m=Ot,Ot=Ue,Ue=m);var q=Tm(g,Ue),M=Tm(g,Ot);if(q&&M&&(se.rangeCount!==1||se.anchorNode!==q.node||se.anchorOffset!==q.offset||se.focusNode!==M.node||se.focusOffset!==M.offset)){var Z=he.createRange();Z.setStart(q.node,q.offset),se.removeAllRanges(),Ue>Ot?(se.addRange(Z),se.extend(M.node,M.offset)):(Z.setEnd(M.node,M.offset),se.addRange(Z))}}}}for(he=[],se=g;se=se.parentNode;)se.nodeType===1&&he.push({element:se,left:se.scrollLeft,top:se.scrollTop});for(typeof g.focus=="function"&&g.focus(),g=0;ga?32:a,A.T=null,a=qd,qd=null;var o=Sl,m=al;if(ms=0,Vn=Sl=null,al=0,(Ct&6)!==0)throw Error(d(331));var g=Ct;if(Ct|=4,Ex(o.current),Cx(o,o.current,m,a),Ct=g,Gi(0,!1),je&&typeof je.onPostCommitFiberRoot=="function")try{je.onPostCommitFiberRoot(_e,o)}catch{}return!0}finally{X.p=i,A.T=l,Xx(t,s)}}function Zx(t,s,a){s=na(a,s),s=vd(t.stateNode,s,2),t=jl(t,s,2),t!==null&&(us(t,2),za(t))}function Et(t,s,a){if(t.tag===3)Zx(t,t,a);else for(;s!==null;){if(s.tag===3){Zx(s,t,a);break}else if(s.tag===1){var l=s.stateNode;if(typeof s.type.getDerivedStateFromError=="function"||typeof l.componentDidCatch=="function"&&(_l===null||!_l.has(l))){t=na(a,t),a=Jh(2),l=jl(s,a,2),l!==null&&(Ih(a,l,s,t),us(l,2),za(l));break}}s=s.return}}function $d(t,s,a){var l=t.pingCache;if(l===null){l=t.pingCache=new nv;var i=new Set;l.set(s,i)}else i=l.get(s),i===void 0&&(i=new Set,l.set(s,i));i.has(a)||(Ld=!0,i.add(a),t=dv.bind(null,t,s,a),s.then(t,t))}function dv(t,s,a){var l=t.pingCache;l!==null&&l.delete(s),t.pingedLanes|=t.suspendedLanes&a,t.warmLanes&=~a,Lt===t&&(ct&a)===a&&(Pt===4||Pt===3&&(ct&62914560)===ct&&300>Ke()-uc?(Ct&2)===0&&Fn(t,0):Ud|=a,Gn===ct&&(Gn=0)),za(t)}function Jx(t,s){s===0&&(s=ye()),t=$l(t,s),t!==null&&(us(t,s),za(t))}function uv(t){var s=t.memoizedState,a=0;s!==null&&(a=s.retryLane),Jx(t,a)}function mv(t,s){var a=0;switch(t.tag){case 31:case 13:var l=t.stateNode,i=t.memoizedState;i!==null&&(a=i.retryLane);break;case 19:l=t.stateNode;break;case 22:l=t.stateNode._retryCache;break;default:throw Error(d(314))}l!==null&&l.delete(s),Jx(t,a)}function hv(t,s){return Fe(t,s)}var jc=null,Qn=null,Qd=!1,vc=!1,Yd=!1,kl=0;function za(t){t!==Qn&&t.next===null&&(Qn===null?jc=Qn=t:Qn=Qn.next=t),vc=!0,Qd||(Qd=!0,fv())}function Gi(t,s){if(!Yd&&vc){Yd=!0;do for(var a=!1,l=jc;l!==null;){if(t!==0){var i=l.pendingLanes;if(i===0)var o=0;else{var m=l.suspendedLanes,g=l.pingedLanes;o=(1<<31-Ht(42|t)+1)-1,o&=i&~(m&~g),o=o&201326741?o&201326741|1:o?o|2:0}o!==0&&(a=!0,ef(l,o))}else o=ct,o=qa(l,l===Lt?o:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),(o&3)===0||Sa(l,o)||(a=!0,ef(l,o));l=l.next}while(a);Yd=!1}}function xv(){Ix()}function Ix(){vc=Qd=!1;var t=0;kl!==0&&Sv()&&(t=kl);for(var s=Ke(),a=null,l=jc;l!==null;){var i=l.next,o=Px(l,s);o===0?(l.next=null,a===null?jc=i:a.next=i,i===null&&(Qn=a)):(a=l,(t!==0||(o&3)!==0)&&(vc=!0)),l=i}ms!==0&&ms!==5||Gi(t),kl!==0&&(kl=0)}function Px(t,s){for(var a=t.suspendedLanes,l=t.pingedLanes,i=t.expirationTimes,o=t.pendingLanes&-62914561;0g)break;var le=k.transferSize,he=k.initiatorType;le&&of(he)&&(k=k.responseEnd,m+=le*(k"u"?null:document;function yf(t,s,a){var l=Yn;if(l&&typeof s=="string"&&s){var i=aa(s);i='link[rel="'+t+'"][href="'+i+'"]',typeof a=="string"&&(i+='[crossorigin="'+a+'"]'),bf.has(i)||(bf.add(i),t={rel:t,crossOrigin:a,href:s},l.querySelector(i)===null&&(s=l.createElement("link"),Ns(s,"link",t),ps(s),l.head.appendChild(s)))}}function Ov(t){ll.D(t),yf("dns-prefetch",t,null)}function Rv(t,s){ll.C(t,s),yf("preconnect",t,s)}function Lv(t,s,a){ll.L(t,s,a);var l=Yn;if(l&&t&&s){var i='link[rel="preload"][as="'+aa(s)+'"]';s==="image"&&a&&a.imageSrcSet?(i+='[imagesrcset="'+aa(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(i+='[imagesizes="'+aa(a.imageSizes)+'"]')):i+='[href="'+aa(t)+'"]';var o=i;switch(s){case"style":o=Xn(t);break;case"script":o=Kn(t)}ua.has(o)||(t=C({rel:"preload",href:s==="image"&&a&&a.imageSrcSet?void 0:t,as:s},a),ua.set(o,t),l.querySelector(i)!==null||s==="style"&&l.querySelector(Qi(o))||s==="script"&&l.querySelector(Yi(o))||(s=l.createElement("link"),Ns(s,"link",t),ps(s),l.head.appendChild(s)))}}function Uv(t,s){ll.m(t,s);var a=Yn;if(a&&t){var l=s&&typeof s.as=="string"?s.as:"script",i='link[rel="modulepreload"][as="'+aa(l)+'"][href="'+aa(t)+'"]',o=i;switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":o=Kn(t)}if(!ua.has(o)&&(t=C({rel:"modulepreload",href:t},s),ua.set(o,t),a.querySelector(i)===null)){switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(Yi(o)))return}l=a.createElement("link"),Ns(l,"link",t),ps(l),a.head.appendChild(l)}}}function Bv(t,s,a){ll.S(t,s,a);var l=Yn;if(l&&t){var i=fn(l).hoistableStyles,o=Xn(t);s=s||"default";var m=i.get(o);if(!m){var g={loading:0,preload:null};if(m=l.querySelector(Qi(o)))g.loading=5;else{t=C({rel:"stylesheet",href:t,"data-precedence":s},a),(a=ua.get(o))&&cu(t,a);var k=m=l.createElement("link");ps(k),Ns(k,"link",t),k._p=new Promise(function(J,le){k.onload=J,k.onerror=le}),k.addEventListener("load",function(){g.loading|=1}),k.addEventListener("error",function(){g.loading|=2}),g.loading|=4,_c(m,s,l)}m={type:"stylesheet",instance:m,count:1,state:g},i.set(o,m)}}}function Hv(t,s){ll.X(t,s);var a=Yn;if(a&&t){var l=fn(a).hoistableScripts,i=Kn(t),o=l.get(i);o||(o=a.querySelector(Yi(i)),o||(t=C({src:t,async:!0},s),(s=ua.get(i))&&ou(t,s),o=a.createElement("script"),ps(o),Ns(o,"link",t),a.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},l.set(i,o))}}function qv(t,s){ll.M(t,s);var a=Yn;if(a&&t){var l=fn(a).hoistableScripts,i=Kn(t),o=l.get(i);o||(o=a.querySelector(Yi(i)),o||(t=C({src:t,async:!0,type:"module"},s),(s=ua.get(i))&&ou(t,s),o=a.createElement("script"),ps(o),Ns(o,"link",t),a.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},l.set(i,o))}}function Nf(t,s,a,l){var i=(i=de.current)?wc(i):null;if(!i)throw Error(d(446));switch(t){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(s=Xn(a.href),a=fn(i).hoistableStyles,l=a.get(s),l||(l={type:"style",instance:null,count:0,state:null},a.set(s,l)),l):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){t=Xn(a.href);var o=fn(i).hoistableStyles,m=o.get(t);if(m||(i=i.ownerDocument||i,m={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},o.set(t,m),(o=i.querySelector(Qi(t)))&&!o._p&&(m.instance=o,m.state.loading=5),ua.has(t)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},ua.set(t,a),o||Gv(i,t,a,m.state))),s&&l===null)throw Error(d(528,""));return m}if(s&&l!==null)throw Error(d(529,""));return null;case"script":return s=a.async,a=a.src,typeof a=="string"&&s&&typeof s!="function"&&typeof s!="symbol"?(s=Kn(a),a=fn(i).hoistableScripts,l=a.get(s),l||(l={type:"script",instance:null,count:0,state:null},a.set(s,l)),l):{type:"void",instance:null,count:0,state:null};default:throw Error(d(444,t))}}function Xn(t){return'href="'+aa(t)+'"'}function Qi(t){return'link[rel="stylesheet"]['+t+"]"}function wf(t){return C({},t,{"data-precedence":t.precedence,precedence:null})}function Gv(t,s,a,l){t.querySelector('link[rel="preload"][as="style"]['+s+"]")?l.loading=1:(s=t.createElement("link"),l.preload=s,s.addEventListener("load",function(){return l.loading|=1}),s.addEventListener("error",function(){return l.loading|=2}),Ns(s,"link",a),ps(s),t.head.appendChild(s))}function Kn(t){return'[src="'+aa(t)+'"]'}function Yi(t){return"script[async]"+t}function _f(t,s,a){if(s.count++,s.instance===null)switch(s.type){case"style":var l=t.querySelector('style[data-href~="'+aa(a.href)+'"]');if(l)return s.instance=l,ps(l),l;var i=C({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return l=(t.ownerDocument||t).createElement("style"),ps(l),Ns(l,"style",i),_c(l,a.precedence,t),s.instance=l;case"stylesheet":i=Xn(a.href);var o=t.querySelector(Qi(i));if(o)return s.state.loading|=4,s.instance=o,ps(o),o;l=wf(a),(i=ua.get(i))&&cu(l,i),o=(t.ownerDocument||t).createElement("link"),ps(o);var m=o;return m._p=new Promise(function(g,k){m.onload=g,m.onerror=k}),Ns(o,"link",l),s.state.loading|=4,_c(o,a.precedence,t),s.instance=o;case"script":return o=Kn(a.src),(i=t.querySelector(Yi(o)))?(s.instance=i,ps(i),i):(l=a,(i=ua.get(o))&&(l=C({},a),ou(l,i)),t=t.ownerDocument||t,i=t.createElement("script"),ps(i),Ns(i,"link",l),t.head.appendChild(i),s.instance=i);case"void":return null;default:throw Error(d(443,s.type))}else s.type==="stylesheet"&&(s.state.loading&4)===0&&(l=s.instance,s.state.loading|=4,_c(l,a.precedence,t));return s.instance}function _c(t,s,a){for(var l=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),i=l.length?l[l.length-1]:null,o=i,m=0;m title"):null)}function Vv(t,s,a){if(a===1||s.itemProp!=null)return!1;switch(t){case"meta":case"title":return!0;case"style":if(typeof s.precedence!="string"||typeof s.href!="string"||s.href==="")break;return!0;case"link":if(typeof s.rel!="string"||typeof s.href!="string"||s.href===""||s.onLoad||s.onError)break;switch(s.rel){case"stylesheet":return t=s.disabled,typeof s.precedence=="string"&&t==null;default:return!0}case"script":if(s.async&&typeof s.async!="function"&&typeof s.async!="symbol"&&!s.onLoad&&!s.onError&&s.src&&typeof s.src=="string")return!0}return!1}function kf(t){return!(t.type==="stylesheet"&&(t.state.loading&3)===0)}function Fv(t,s,a,l){if(a.type==="stylesheet"&&(typeof l.media!="string"||matchMedia(l.media).matches!==!1)&&(a.state.loading&4)===0){if(a.instance===null){var i=Xn(l.href),o=s.querySelector(Qi(i));if(o){s=o._p,s!==null&&typeof s=="object"&&typeof s.then=="function"&&(t.count++,t=Cc.bind(t),s.then(t,t)),a.state.loading|=4,a.instance=o,ps(o);return}o=s.ownerDocument||s,l=wf(l),(i=ua.get(i))&&cu(l,i),o=o.createElement("link"),ps(o);var m=o;m._p=new Promise(function(g,k){m.onload=g,m.onerror=k}),Ns(o,"link",l),a.instance=o}t.stylesheets===null&&(t.stylesheets=new Map),t.stylesheets.set(a,s),(s=a.state.preload)&&(a.state.loading&3)===0&&(t.count++,a=Cc.bind(t),s.addEventListener("load",a),s.addEventListener("error",a))}}var du=0;function $v(t,s){return t.stylesheets&&t.count===0&&Tc(t,t.stylesheets),0du?50:800)+s);return t.unsuspend=a,function(){t.unsuspend=null,clearTimeout(l),clearTimeout(i)}}:null}function Cc(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Tc(this,this.stylesheets);else if(this.unsuspend){var t=this.unsuspend;this.unsuspend=null,t()}}}var kc=null;function Tc(t,s){t.stylesheets=null,t.unsuspend!==null&&(t.count++,kc=new Map,s.forEach(Qv,t),kc=null,Cc.call(t))}function Qv(t,s){if(!(s.state.loading&4)){var a=kc.get(t);if(a)var l=a.get(null);else{a=new Map,kc.set(t,a);for(var i=t.querySelectorAll("link[data-precedence],style[data-precedence]"),o=0;o"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(r){console.error(r)}}return n(),Nu.exports=vN(),Nu.exports}var yN=bN();function Q(...n){return db(ub(n))}const Ye=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("rounded-xl border bg-card text-card-foreground shadow",n),...r}));Ye.displayName="Card";const Nt=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("flex flex-col space-y-1.5 p-6",n),...r}));Nt.displayName="CardHeader";const wt=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("font-semibold leading-none tracking-tight",n),...r}));wt.displayName="CardTitle";const ns=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("text-sm text-muted-foreground",n),...r}));ns.displayName="CardDescription";const kt=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("p-6 pt-0",n),...r}));kt.displayName="CardContent";const mg=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("flex items-center p-6 pt-0",n),...r}));mg.displayName="CardFooter";const La=xb,wa=u.forwardRef(({className:n,...r},c)=>e.jsx(gp,{ref:c,className:Q("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",n),...r}));wa.displayName=gp.displayName;const it=u.forwardRef(({className:n,...r},c)=>e.jsx(jp,{ref:c,className:Q("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all duration-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",n),...r}));it.displayName=jp.displayName;const zt=u.forwardRef(({className:n,...r},c)=>e.jsx(vp,{ref:c,className:Q("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[state=active]:animate-in data-[state=active]:fade-in data-[state=active]:duration-300",n),...r}));zt.displayName=vp.displayName;const st=u.forwardRef(({className:n,children:r,viewportRef:c,...d},h)=>e.jsxs(bp,{ref:h,className:Q("relative overflow-hidden",n),...d,children:[e.jsx(fb,{ref:c,className:"h-full w-full rounded-[inherit]",children:r}),e.jsx(Mu,{}),e.jsx(Mu,{orientation:"horizontal"}),e.jsx(pb,{})]}));st.displayName=bp.displayName;const Mu=u.forwardRef(({className:n,orientation:r="vertical",...c},d)=>e.jsx(yp,{ref:d,orientation:r,className:Q("flex touch-none select-none transition-colors",r==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",r==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",n),...c,children:e.jsx(gb,{className:"relative flex-1 rounded-full bg-border"})}));Mu.displayName=yp.displayName;function hg({className:n,...r}){return e.jsx("div",{className:Q("animate-pulse rounded-md bg-primary/10",n),...r})}const yr=u.forwardRef(({className:n,value:r,...c},d)=>e.jsx(Np,{ref:d,className:Q("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",n),...c,children:e.jsx(jb,{className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(r||0)}%)`}})}));yr.displayName=Np.displayName;const NN={light:"",dark:".dark"},xg=u.createContext(null);function fg(){const n=u.useContext(xg);if(!n)throw new Error("useChart must be used within a ");return n}const Jn=u.forwardRef(({id:n,className:r,children:c,config:d,...h},x)=>{const f=u.useId(),j=`chart-${n||f.replace(/:/g,"")}`;return e.jsx(xg.Provider,{value:{config:d},children:e.jsxs("div",{"data-chart":j,ref:x,className:Q("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",r),...h,children:[e.jsx(wN,{id:j,config:d}),e.jsx(Mb,{children:c})]})})});Jn.displayName="Chart";const wN=({id:n,config:r})=>{const c=Object.entries(r).filter(([,d])=>d.theme||d.color);return c.length?e.jsx("style",{dangerouslySetInnerHTML:{__html:Object.entries(NN).map(([d,h])=>` -${h} [data-chart=${n}] { -${c.map(([x,f])=>{const j=f.theme?.[d]||f.color;return j?` --color-${x}: ${j};`:null}).join(` -`)} -} -`).join(` -`)}}):null},tr=Db,In=u.forwardRef(({active:n,payload:r,className:c,indicator:d="dot",hideLabel:h=!1,hideIndicator:x=!1,label:f,labelFormatter:j,labelClassName:p,formatter:N,color:v,nameKey:C,labelKey:S},w)=>{const{config:L}=fg(),F=u.useMemo(()=>{if(h||!r?.length)return null;const[O]=r,K=`${S||O?.dataKey||O?.name||"value"}`,H=Du(L,O,K),z=!S&&typeof f=="string"?L[f]?.label||f:H?.label;return j?e.jsx("div",{className:Q("font-medium",p),children:j(z,r)}):z?e.jsx("div",{className:Q("font-medium",p),children:z}):null},[f,j,r,h,p,L,S]);if(!n||!r?.length)return null;const B=r.length===1&&d!=="dot";return e.jsxs("div",{ref:w,className:Q("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",c),children:[B?null:F,e.jsx("div",{className:"grid gap-1.5",children:r.filter(O=>O.type!=="none").map((O,K)=>{const H=`${C||O.name||O.dataKey||"value"}`,z=Du(L,O,H),V=v||O.payload.fill||O.color;return e.jsx("div",{className:Q("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",d==="dot"&&"items-center"),children:N&&O?.value!==void 0&&O.name?N(O.value,O.name,O,K,O.payload):e.jsxs(e.Fragment,{children:[z?.icon?e.jsx(z.icon,{}):!x&&e.jsx("div",{className:Q("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]",{"h-2.5 w-2.5":d==="dot","w-1":d==="line","w-0 border-[1.5px] border-dashed bg-transparent":d==="dashed","my-0.5":B&&d==="dashed"}),style:{"--color-bg":V,"--color-border":V}}),e.jsxs("div",{className:Q("flex flex-1 justify-between leading-none",B?"items-end":"items-center"),children:[e.jsxs("div",{className:"grid gap-1.5",children:[B?F:null,e.jsx("span",{className:"text-muted-foreground",children:z?.label||O.name})]}),O.value&&e.jsx("span",{className:"font-mono font-medium tabular-nums text-foreground",children:O.value.toLocaleString()})]})]})},O.dataKey)})})]})});In.displayName="ChartTooltip";const _N=Ob,pg=u.forwardRef(({className:n,hideIcon:r=!1,payload:c,verticalAlign:d="bottom",nameKey:h},x)=>{const{config:f}=fg();return c?.length?e.jsx("div",{ref:x,className:Q("flex items-center justify-center gap-4",d==="top"?"pb-3":"pt-3",n),children:c.filter(j=>j.type!=="none").map(j=>{const p=`${h||j.dataKey||"value"}`,N=Du(f,j,p);return e.jsxs("div",{className:Q("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"),children:[N?.icon&&!r?e.jsx(N.icon,{}):e.jsx("div",{className:"h-2 w-2 shrink-0 rounded-[2px]",style:{backgroundColor:j.color}}),N?.label]},j.value)})}):null});pg.displayName="ChartLegend";function Du(n,r,c){if(typeof r!="object"||r===null)return;const d="payload"in r&&typeof r.payload=="object"&&r.payload!==null?r.payload:void 0;let h=c;return c in r&&typeof r[c]=="string"?h=r[c]:d&&c in d&&typeof d[c]=="string"&&(h=d[c]),h in n?n[h]:n[c]}const hr=si("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),b=u.forwardRef(({className:n,variant:r,size:c,asChild:d=!1,...h},x)=>{const f=d?qb:"button";return e.jsx(f,{className:Q(hr({variant:r,size:c,className:n})),ref:x,...h})});b.displayName="Button";const SN=si("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function Je({className:n,variant:r,...c}){return e.jsx("div",{className:Q(SN({variant:r}),n),...c})}const CN=5,kN=5e3;let Su=0;function TN(){return Su=(Su+1)%Number.MAX_SAFE_INTEGER,Su.toString()}const Cu=new Map,If=n=>{if(Cu.has(n))return;const r=setTimeout(()=>{Cu.delete(n),cr({type:"REMOVE_TOAST",toastId:n})},kN);Cu.set(n,r)},EN=(n,r)=>{switch(r.type){case"ADD_TOAST":return{...n,toasts:[r.toast,...n.toasts].slice(0,CN)};case"UPDATE_TOAST":return{...n,toasts:n.toasts.map(c=>c.id===r.toast.id?{...c,...r.toast}:c)};case"DISMISS_TOAST":{const{toastId:c}=r;return c?If(c):n.toasts.forEach(d=>{If(d.id)}),{...n,toasts:n.toasts.map(d=>d.id===c||c===void 0?{...d,open:!1}:d)}}case"REMOVE_TOAST":return r.toastId===void 0?{...n,toasts:[]}:{...n,toasts:n.toasts.filter(c=>c.id!==r.toastId)}}},Yc=[];let Xc={toasts:[]};function cr(n){Xc=EN(Xc,n),Yc.forEach(r=>{r(Xc)})}function zN({...n}){const r=TN(),c=h=>cr({type:"UPDATE_TOAST",toast:{...h,id:r}}),d=()=>cr({type:"DISMISS_TOAST",toastId:r});return cr({type:"ADD_TOAST",toast:{...n,id:r,open:!0,onOpenChange:h=>{h||d()}}}),{id:r,dismiss:d,update:c}}function Xt(){const[n,r]=u.useState(Xc);return u.useEffect(()=>(Yc.push(r),()=>{const c=Yc.indexOf(r);c>-1&&Yc.splice(c,1)}),[n]),{...n,toast:zN,dismiss:c=>cr({type:"DISMISS_TOAST",toastId:c})}}const AN=n=>{const r=[];for(let c=0;c{try{w(!0);const T=await Lc.get("https://v1.hitokoto.cn/?c=a&c=b&c=c&c=d&c=h&c=i&c=k");C({hitokoto:T.data.hitokoto,from:T.data.from||T.data.from_who||"未知"})}catch(T){console.error("获取一言失败:",T),C({hitokoto:"人生就像一盒巧克力,你永远不知道下一颗是什么味道。",from:"阿甘正传"})}finally{w(!1)}},[]),z=u.useCallback(async()=>{try{const T=localStorage.getItem("access-token"),te=await Lc.get("/api/webui/system/status",{headers:{Authorization:`Bearer ${T}`}});F(te.data)}catch(T){console.error("获取机器人状态失败:",T),F(null)}},[]),V=async()=>{if(!B)try{O(!0);const T=localStorage.getItem("access-token");await Lc.post("/api/webui/system/restart",{},{headers:{Authorization:`Bearer ${T}`}}),K({title:"重启中",description:"麦麦正在重启,请稍候..."}),setTimeout(()=>{z(),O(!1)},3e3)}catch(T){console.error("重启失败:",T),K({title:"重启失败",description:"无法重启麦麦,请检查控制台",variant:"destructive"}),O(!1)}},Y=u.useCallback(async()=>{try{const T=localStorage.getItem("access-token"),te=await Lc.get(`/api/webui/statistics/dashboard?hours=${f}`,{headers:{Authorization:`Bearer ${T}`}});r(te.data),d(!1),x(100)}catch(T){console.error("Failed to fetch dashboard data:",T),d(!1),x(100)}},[f]);if(u.useEffect(()=>{if(!c)return;x(0);const T=setTimeout(()=>x(15),200),te=setTimeout(()=>x(30),800),_=setTimeout(()=>x(45),2e3),me=setTimeout(()=>x(60),4e3),oe=setTimeout(()=>x(75),6500),ae=setTimeout(()=>x(85),9e3),xe=setTimeout(()=>x(92),11e3);return()=>{clearTimeout(T),clearTimeout(te),clearTimeout(_),clearTimeout(me),clearTimeout(oe),clearTimeout(ae),clearTimeout(xe)}},[c]),u.useEffect(()=>{Y(),H(),z()},[Y,H,z]),u.useEffect(()=>{if(!p)return;const T=setInterval(()=>{Y(),z()},3e4);return()=>clearInterval(T)},[p,Y,z]),c||!n)return e.jsx("div",{className:"flex items-center justify-center h-[calc(100vh-200px)]",children:e.jsxs("div",{className:"text-center space-y-6 w-full max-w-md px-4",children:[e.jsx(ws,{className:"h-12 w-12 animate-spin mx-auto text-primary"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-lg font-medium",children:"加载统计数据中..."}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"正在获取麦麦运行数据"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(yr,{value:h,className:"h-2"}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:[h,"%"]})]})]})});const{summary:E,model_stats:R=[],hourly_data:ne=[],daily_data:fe=[],recent_activity:Ce=[]}=n,we=E??{total_requests:0,total_cost:0,total_tokens:0,online_time:0,total_messages:0,total_replies:0,avg_response_time:0,cost_per_hour:0,tokens_per_hour:0},pe=T=>{const te=Math.floor(T/3600),_=Math.floor(T%3600/60);return`${te}小时${_}分钟`},Ne=T=>new Date(T).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),be=AN(R.length),A=R.map((T,te)=>({name:T.model_name,value:T.request_count,fill:be[te]})),X={requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"},tokens:{label:"Tokens",color:"hsl(var(--chart-3))"}};return e.jsx(st,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"实时监控面板"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"麦麦运行状态和统计数据一览"})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(La,{value:f.toString(),onValueChange:T=>j(Number(T)),children:e.jsxs(wa,{className:"grid grid-cols-3 w-full sm:w-auto",children:[e.jsx(it,{value:"24",children:"24小时"}),e.jsx(it,{value:"168",children:"7天"}),e.jsx(it,{value:"720",children:"30天"})]})}),e.jsxs(b,{variant:p?"default":"outline",size:"sm",onClick:()=>N(!p),className:"gap-2",children:[e.jsx(ws,{className:`h-4 w-4 ${p?"animate-spin":""}`}),e.jsx("span",{className:"hidden sm:inline",children:"自动刷新"})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:Y,children:e.jsx(ws,{className:"h-4 w-4"})})]})]}),e.jsxs("div",{className:"flex items-center gap-3 px-4 py-2 rounded-lg border border-dashed border-muted-foreground/30 bg-muted/20",children:[S?e.jsx(hg,{className:"h-5 flex-1"}):v?e.jsxs("p",{className:"flex-1 text-sm text-muted-foreground italic truncate",children:['"',v.hitokoto,'" —— ',v.from]}):null,e.jsx(b,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0",onClick:H,disabled:S,children:e.jsx(ws,{className:`h-3.5 w-3.5 ${S?"animate-spin":""}`})})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-3",children:[e.jsxs(Ye,{className:"lg:col-span-1",children:[e.jsx(Nt,{className:"pb-3",children:e.jsxs(wt,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(gr,{className:"h-4 w-4"}),"麦麦状态"]})}),e.jsx(kt,{children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"flex items-center gap-2",children:L?.running?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-3 w-3 rounded-full bg-green-500 animate-pulse"}),e.jsxs(Je,{variant:"outline",className:"text-green-600 border-green-300 bg-green-50",children:[e.jsx(ha,{className:"h-3 w-3 mr-1"}),"运行中"]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-3 w-3 rounded-full bg-red-500"}),e.jsxs(Je,{variant:"outline",className:"text-red-600 border-red-300 bg-red-50",children:[e.jsx(Oa,{className:"h-3 w-3 mr-1"}),"已停止"]})]})}),L&&e.jsxs("div",{className:"text-xs text-muted-foreground",children:[e.jsxs("span",{children:["v",L.version]}),e.jsx("span",{className:"mx-2",children:"|"}),e.jsxs("span",{children:["运行 ",pe(L.uptime)]})]})]})})]}),e.jsxs(Ye,{className:"lg:col-span-2",children:[e.jsx(Nt,{className:"pb-3",children:e.jsxs(wt,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(ln,{className:"h-4 w-4"}),"快速操作"]})}),e.jsx(kt,{children:e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(b,{variant:"outline",size:"sm",onClick:V,disabled:B,className:"gap-2",children:[e.jsx(Kc,{className:`h-4 w-4 ${B?"animate-spin":""}`}),B?"重启中...":"重启麦麦"]}),e.jsx(b,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs($c,{to:"/logs",children:[e.jsx(Da,{className:"h-4 w-4"}),"查看日志"]})}),e.jsx(b,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs($c,{to:"/plugins",children:[e.jsx(ly,{className:"h-4 w-4"}),"插件管理"]})}),e.jsx(b,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs($c,{to:"/settings",children:[e.jsx(ai,{className:"h-4 w-4"}),"系统设置"]})})]})})]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-4",children:[e.jsxs(Ye,{children:[e.jsxs(Nt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(wt,{className:"text-sm font-medium",children:"总请求数"}),e.jsx(ny,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(kt,{children:[e.jsx("div",{className:"text-2xl font-bold",children:we.total_requests.toLocaleString()}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["最近",f<48?f+"小时":Math.floor(f/24)+"天"]})]})]}),e.jsxs(Ye,{children:[e.jsxs(Nt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(wt,{className:"text-sm font-medium",children:"总花费"}),e.jsx(iy,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(kt,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:["¥",we.total_cost.toFixed(2)]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:we.cost_per_hour>0?`¥${we.cost_per_hour.toFixed(2)}/小时`:"暂无数据"})]})]}),e.jsxs(Ye,{children:[e.jsxs(Nt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(wt,{className:"text-sm font-medium",children:"Token消耗"}),e.jsx(Zc,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(kt,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:[(we.total_tokens/1e3).toFixed(1),"K"]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:we.tokens_per_hour>0?`${(we.tokens_per_hour/1e3).toFixed(1)}K/小时`:"暂无数据"})]})]}),e.jsxs(Ye,{children:[e.jsxs(Nt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(wt,{className:"text-sm font-medium",children:"平均响应"}),e.jsx(ln,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(kt,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:[we.avg_response_time.toFixed(2),"s"]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"API平均耗时"})]})]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 sm:grid-cols-3",children:[e.jsxs(Ye,{children:[e.jsxs(Nt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(wt,{className:"text-sm font-medium",children:"在线时长"}),e.jsx(Wn,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsx(kt,{children:e.jsx("div",{className:"text-xl font-bold",children:pe(we.online_time)})})]}),e.jsxs(Ye,{children:[e.jsxs(Nt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(wt,{className:"text-sm font-medium",children:"消息处理"}),e.jsx(cn,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(kt,{children:[e.jsx("div",{className:"text-xl font-bold",children:we.total_messages.toLocaleString()}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["回复 ",we.total_replies.toLocaleString()," 条"]})]})]}),e.jsxs(Ye,{children:[e.jsxs(Nt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(wt,{className:"text-sm font-medium",children:"成本效率"}),e.jsx(ry,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(kt,{children:[e.jsx("div",{className:"text-xl font-bold",children:we.total_messages>0?`¥${(we.total_cost/we.total_messages*100).toFixed(2)}`:"¥0.00"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"每100条消息"})]})]})]}),e.jsxs(La,{defaultValue:"trends",className:"space-y-4",children:[e.jsxs(wa,{className:"grid w-full grid-cols-2 sm:grid-cols-4",children:[e.jsx(it,{value:"trends",children:"趋势"}),e.jsx(it,{value:"models",children:"模型"}),e.jsx(it,{value:"activity",children:"活动"}),e.jsx(it,{value:"daily",children:"日统计"})]}),e.jsxs(zt,{value:"trends",className:"space-y-4",children:[e.jsxs(Ye,{children:[e.jsxs(Nt,{children:[e.jsx(wt,{children:"请求趋势"}),e.jsxs(ns,{children:["最近",f,"小时的请求量变化"]})]}),e.jsx(kt,{children:e.jsx(Jn,{config:X,className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:e.jsxs(Rb,{data:ne,children:[e.jsx(Uc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Bc,{dataKey:"timestamp",tickFormatter:T=>Ne(T),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(Wi,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{content:e.jsx(In,{labelFormatter:T=>Ne(T)})}),e.jsx(Lb,{type:"monotone",dataKey:"requests",stroke:"var(--color-requests)",strokeWidth:2})]})})})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[e.jsxs(Ye,{children:[e.jsxs(Nt,{children:[e.jsx(wt,{children:"花费趋势"}),e.jsx(ns,{children:"API调用成本变化"})]}),e.jsx(kt,{children:e.jsx(Jn,{config:X,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:e.jsxs(vu,{data:ne,children:[e.jsx(Uc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Bc,{dataKey:"timestamp",tickFormatter:T=>Ne(T),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(Wi,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{content:e.jsx(In,{labelFormatter:T=>Ne(T)})}),e.jsx(Hc,{dataKey:"cost",fill:"var(--color-cost)"})]})})})]}),e.jsxs(Ye,{children:[e.jsxs(Nt,{children:[e.jsx(wt,{children:"Token消耗"}),e.jsx(ns,{children:"Token使用量变化"})]}),e.jsx(kt,{children:e.jsx(Jn,{config:X,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:e.jsxs(vu,{data:ne,children:[e.jsx(Uc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Bc,{dataKey:"timestamp",tickFormatter:T=>Ne(T),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(Wi,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{content:e.jsx(In,{labelFormatter:T=>Ne(T)})}),e.jsx(Hc,{dataKey:"tokens",fill:"var(--color-tokens)"})]})})})]})]})]}),e.jsx(zt,{value:"models",className:"space-y-4",children:e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[e.jsxs(Ye,{children:[e.jsxs(Nt,{children:[e.jsx(wt,{children:"模型请求分布"}),e.jsxs(ns,{children:["各模型使用占比 (共 ",R.length," 个模型)"]})]}),e.jsx(kt,{children:e.jsx(Jn,{config:Object.fromEntries(R.map((T,te)=>[T.model_name,{label:T.model_name,color:be[te]}])),className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:e.jsxs(Ub,{children:[e.jsx(tr,{content:e.jsx(In,{})}),e.jsx(Bb,{data:A,cx:"50%",cy:"50%",labelLine:!1,label:({name:T,percent:te})=>te&&te<.05?"":`${T} ${te?(te*100).toFixed(0):0}%`,outerRadius:100,dataKey:"value",children:A.map((T,te)=>e.jsx(Hb,{fill:T.fill},`cell-${te}`))})]})})})]}),e.jsxs(Ye,{children:[e.jsxs(Nt,{children:[e.jsx(wt,{children:"模型详细统计"}),e.jsx(ns,{children:"请求数、花费和性能"})]}),e.jsx(kt,{children:e.jsx(st,{className:"h-[300px] sm:h-[400px]",children:e.jsx("div",{className:"space-y-3",children:R.map((T,te)=>e.jsxs("div",{className:"p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("h4",{className:"font-semibold text-sm truncate flex-1 min-w-0",children:T.model_name}),e.jsx("div",{className:"w-3 h-3 rounded-full ml-2 flex-shrink-0",style:{backgroundColor:`hsl(var(--chart-${te%5+1}))`}})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"请求数:"}),e.jsx("span",{className:"ml-1 font-medium",children:T.request_count.toLocaleString()})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"花费:"}),e.jsxs("span",{className:"ml-1 font-medium",children:["¥",T.total_cost.toFixed(2)]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),e.jsxs("span",{className:"ml-1 font-medium",children:[(T.total_tokens/1e3).toFixed(1),"K"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"平均耗时:"}),e.jsxs("span",{className:"ml-1 font-medium",children:[T.avg_response_time.toFixed(2),"s"]})]})]})]},te))})})})]})]})}),e.jsx(zt,{value:"activity",children:e.jsxs(Ye,{children:[e.jsxs(Nt,{children:[e.jsx(wt,{children:"最近活动"}),e.jsx(ns,{children:"最新的API调用记录"})]}),e.jsx(kt,{children:e.jsx(st,{className:"h-[400px] sm:h-[500px]",children:e.jsx("div",{className:"space-y-2",children:Ce.map((T,te)=>e.jsxs("div",{className:"p-3 sm:p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-2 mb-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-sm truncate",children:T.model}),e.jsx("div",{className:"text-xs text-muted-foreground",children:T.request_type})]}),e.jsx("div",{className:"text-xs text-muted-foreground flex-shrink-0",children:Ne(T.timestamp)})]}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-2 text-xs",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),e.jsx("span",{className:"ml-1",children:T.tokens})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"花费:"}),e.jsxs("span",{className:"ml-1",children:["¥",T.cost.toFixed(4)]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"耗时:"}),e.jsxs("span",{className:"ml-1",children:[T.time_cost.toFixed(2),"s"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"状态:"}),e.jsx("span",{className:`ml-1 ${T.status==="success"?"text-green-600":"text-red-600"}`,children:T.status})]})]})]},te))})})})]})}),e.jsx(zt,{value:"daily",children:e.jsxs(Ye,{children:[e.jsxs(Nt,{children:[e.jsx(wt,{children:"每日统计"}),e.jsx(ns,{children:"最近7天的数据汇总"})]}),e.jsx(kt,{children:e.jsx(Jn,{config:{requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"}},className:"h-[400px] sm:h-[500px] w-full aspect-auto",children:e.jsxs(vu,{data:fe,children:[e.jsx(Uc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(Bc,{dataKey:"timestamp",tickFormatter:T=>{const te=new Date(T);return`${te.getMonth()+1}/${te.getDate()}`},stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(Wi,{yAxisId:"left",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(Wi,{yAxisId:"right",orientation:"right",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(tr,{content:e.jsx(In,{labelFormatter:T=>new Date(T).toLocaleDateString("zh-CN")})}),e.jsx(_N,{content:e.jsx(pg,{})}),e.jsx(Hc,{yAxisId:"left",dataKey:"requests",fill:"var(--color-requests)"}),e.jsx(Hc,{yAxisId:"right",dataKey:"cost",fill:"var(--color-cost)"})]})})})]})})]})]})})}const DN={theme:"system",setTheme:()=>null},gg=u.createContext(DN),Gu=()=>{const n=u.useContext(gg);if(n===void 0)throw new Error("useTheme must be used within a ThemeProvider");return n},ON=(n,r,c)=>{const d=document.documentElement.classList.contains("no-animations");if(!document.startViewTransition||d){r(n);return}const h=c.clientX,x=c.clientY,f=Math.hypot(Math.max(h,innerWidth-h),Math.max(x,innerHeight-x));document.startViewTransition(()=>{r(n)}).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${h}px ${x}px)`,`circle(${f}px at ${h}px ${x}px)`]},{duration:500,easing:"ease-in-out",pseudoElement:"::view-transition-new(root)"})})},jg=u.createContext(void 0),vg=()=>{const n=u.useContext(jg);if(n===void 0)throw new Error("useAnimation must be used within an AnimationProvider");return n},Qe=u.forwardRef(({className:n,...r},c)=>e.jsx(wp,{className:Q("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",n),...r,ref:c,children:e.jsx(vb,{className:Q("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));Qe.displayName=wp.displayName;const RN=si("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),y=u.forwardRef(({className:n,...r},c)=>e.jsx(Lp,{ref:c,className:Q(RN(),n),...r}));y.displayName=Lp.displayName;const ce=u.forwardRef(({className:n,type:r,...c},d)=>e.jsx("input",{type:r,className:Q("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",n),ref:d,...c}));ce.displayName="Input";const LN=[{id:"minLength",label:"长度至少 10 位",description:"Token 长度必须大于等于 10 个字符",validate:n=>n.length>=10},{id:"hasUppercase",label:"包含大写字母",description:"至少包含一个大写字母 (A-Z)",validate:n=>/[A-Z]/.test(n)},{id:"hasLowercase",label:"包含小写字母",description:"至少包含一个小写字母 (a-z)",validate:n=>/[a-z]/.test(n)},{id:"hasSpecialChar",label:"包含特殊符号",description:"至少包含一个特殊符号 (!@#$%^&*()_+-=[]{}|;:,.<>?/)",validate:n=>/[!@#$%^&*()_+\-=[\]{}|;:,.<>?/]/.test(n)}];function UN(n){const r=LN.map(d=>({id:d.id,label:d.label,description:d.description,passed:d.validate(n)}));return{isValid:r.every(d=>d.passed),rules:r}}const Vu="0.11.6 Beta",Fu="MaiBot Dashboard",BN=`${Fu} v${Vu}`,HN=(n="v")=>`${n}${Vu}`,Gs={THEME:"maibot-ui-theme",ACCENT_COLOR:"accent-color",ENABLE_ANIMATIONS:"maibot-animations",ENABLE_WAVES_BACKGROUND:"maibot-waves-background",LOG_CACHE_SIZE:"maibot-log-cache-size",LOG_AUTO_SCROLL:"maibot-log-auto-scroll",LOG_FONT_SIZE:"maibot-log-font-size",LOG_LINE_SPACING:"maibot-log-line-spacing",DATA_SYNC_INTERVAL:"maibot-data-sync-interval",WS_RECONNECT_INTERVAL:"maibot-ws-reconnect-interval",WS_MAX_RECONNECT_ATTEMPTS:"maibot-ws-max-reconnect-attempts",COMPLETED_TOURS:"maibot-completed-tours"},Aa={theme:"system",accentColor:"blue",enableAnimations:!0,enableWavesBackground:!0,logCacheSize:1e3,logAutoScroll:!0,logFontSize:"xs",logLineSpacing:4,dataSyncInterval:30,wsReconnectInterval:3e3,wsMaxReconnectAttempts:10};function Wt(n){const r=bg(n),c=localStorage.getItem(r);if(c===null)return Aa[n];const d=Aa[n];if(typeof d=="boolean")return c==="true";if(typeof d=="number"){const h=parseFloat(c);return isNaN(h)?d:h}return c}function Pn(n,r){const c=bg(n);localStorage.setItem(c,String(r)),window.dispatchEvent(new CustomEvent("maibot-settings-change",{detail:{key:n,value:r}}))}function qN(){return{theme:Wt("theme"),accentColor:Wt("accentColor"),enableAnimations:Wt("enableAnimations"),enableWavesBackground:Wt("enableWavesBackground"),logCacheSize:Wt("logCacheSize"),logAutoScroll:Wt("logAutoScroll"),logFontSize:Wt("logFontSize"),logLineSpacing:Wt("logLineSpacing"),dataSyncInterval:Wt("dataSyncInterval"),wsReconnectInterval:Wt("wsReconnectInterval"),wsMaxReconnectAttempts:Wt("wsMaxReconnectAttempts")}}function GN(){const n=qN(),r=localStorage.getItem(Gs.COMPLETED_TOURS),c=r?JSON.parse(r):[];return{...n,completedTours:c}}function VN(n){const r=[],c=[];for(const[d,h]of Object.entries(n)){if(d==="completedTours"){Array.isArray(h)?(localStorage.setItem(Gs.COMPLETED_TOURS,JSON.stringify(h)),r.push("completedTours")):c.push("completedTours");continue}if(d in Aa){const x=d,f=Aa[x];if(typeof h==typeof f){if(x==="theme"&&!["light","dark","system"].includes(h)){c.push(d);continue}if(x==="logFontSize"&&!["xs","sm","base"].includes(h)){c.push(d);continue}Pn(x,h),r.push(d)}else c.push(d)}else c.push(d)}return{success:r.length>0,imported:r,skipped:c}}function FN(){for(const n of Object.keys(Aa))Pn(n,Aa[n]);localStorage.removeItem(Gs.COMPLETED_TOURS),window.dispatchEvent(new CustomEvent("maibot-settings-reset"))}function $N(){const n=[],r=[],c=[];for(let d=0;dd.size-c.size),{used:n,items:localStorage.length,details:r}}function QN(n){if(n===0)return"0 B";const r=1024,c=["B","KB","MB"],d=Math.floor(Math.log(n)/Math.log(r));return parseFloat((n/Math.pow(r,d)).toFixed(2))+" "+c[d]}function bg(n){return{theme:Gs.THEME,accentColor:Gs.ACCENT_COLOR,enableAnimations:Gs.ENABLE_ANIMATIONS,enableWavesBackground:Gs.ENABLE_WAVES_BACKGROUND,logCacheSize:Gs.LOG_CACHE_SIZE,logAutoScroll:Gs.LOG_AUTO_SCROLL,logFontSize:Gs.LOG_FONT_SIZE,logLineSpacing:Gs.LOG_LINE_SPACING,dataSyncInterval:Gs.DATA_SYNC_INTERVAL,wsReconnectInterval:Gs.WS_RECONNECT_INTERVAL,wsMaxReconnectAttempts:Gs.WS_MAX_RECONNECT_ATTEMPTS}[n]}const Ma=u.forwardRef(({className:n,...r},c)=>e.jsxs(_p,{ref:c,className:Q("relative flex w-full touch-none select-none items-center",n),...r,children:[e.jsx(bb,{className:"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20",children:e.jsx(yb,{className:"absolute h-full bg-primary"})}),e.jsx(Nb,{className:"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"})]}));Ma.displayName=_p.displayName;class YN{ws=null;reconnectTimeout=null;reconnectAttempts=0;heartbeatInterval=null;logCallbacks=new Set;connectionCallbacks=new Set;isConnected=!1;logCache=[];getMaxCacheSize(){return Wt("logCacheSize")}getMaxReconnectAttempts(){return Wt("wsMaxReconnectAttempts")}getReconnectInterval(){return Wt("wsReconnectInterval")}getWebSocketUrl(){{const r=window.location.protocol==="https:"?"wss:":"ws:",c=window.location.host;return`${r}//${c}/ws/logs`}}connect(){if(this.ws?.readyState===WebSocket.OPEN||this.ws?.readyState===WebSocket.CONNECTING)return;const r=this.getWebSocketUrl();try{this.ws=new WebSocket(r),this.ws.onopen=()=>{this.isConnected=!0,this.reconnectAttempts=0,this.notifyConnection(!0),this.startHeartbeat()},this.ws.onmessage=c=>{try{if(c.data==="pong")return;const d=JSON.parse(c.data);this.notifyLog(d)}catch(d){console.error("解析日志消息失败:",d)}},this.ws.onerror=c=>{console.error("❌ WebSocket 错误:",c),this.isConnected=!1,this.notifyConnection(!1)},this.ws.onclose=()=>{this.isConnected=!1,this.notifyConnection(!1),this.stopHeartbeat(),this.attemptReconnect()}}catch(c){console.error("创建 WebSocket 连接失败:",c),this.attemptReconnect()}}attemptReconnect(){const r=this.getMaxReconnectAttempts();if(this.reconnectAttempts>=r)return;this.reconnectAttempts+=1;const c=this.getReconnectInterval(),d=Math.min(c*this.reconnectAttempts,3e4);this.reconnectTimeout=window.setTimeout(()=>{this.connect()},d)}startHeartbeat(){this.heartbeatInterval=window.setInterval(()=>{this.ws?.readyState===WebSocket.OPEN&&this.ws.send("ping")},3e4)}stopHeartbeat(){this.heartbeatInterval!==null&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}disconnect(){this.reconnectTimeout!==null&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.stopHeartbeat(),this.ws&&(this.ws.close(),this.ws=null),this.isConnected=!1,this.reconnectAttempts=0}onLog(r){return this.logCallbacks.add(r),()=>this.logCallbacks.delete(r)}onConnectionChange(r){return this.connectionCallbacks.add(r),r(this.isConnected),()=>this.connectionCallbacks.delete(r)}notifyLog(r){if(!this.logCache.some(d=>d.id===r.id)){this.logCache.push(r);const d=this.getMaxCacheSize();this.logCache.length>d&&(this.logCache=this.logCache.slice(-d)),this.logCallbacks.forEach(h=>{try{h(r)}catch(x){console.error("日志回调执行失败:",x)}})}}notifyConnection(r){this.connectionCallbacks.forEach(c=>{try{c(r)}catch(d){console.error("连接状态回调执行失败:",d)}})}getAllLogs(){return[...this.logCache]}clearLogs(){this.logCache=[]}getConnectionStatus(){return this.isConnected}}const an=new YN;typeof window<"u"&&an.connect();const Jt=Fb,$u=$b,XN=Gb,yg=u.forwardRef(({className:n,...r},c)=>e.jsx(Up,{ref:c,className:Q("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...r}));yg.displayName=Up.displayName;const $t=u.forwardRef(({className:n,children:r,preventOutsideClose:c=!1,...d},h)=>e.jsxs(XN,{children:[e.jsx(yg,{}),e.jsxs(Bp,{ref:h,className:Q("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",n),onPointerDownOutside:c?x=>x.preventDefault():void 0,onInteractOutside:c?x=>x.preventDefault():void 0,...d,children:[r,e.jsxs(Vb,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[e.jsx(on,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));$t.displayName=Bp.displayName;const Qt=({className:n,...r})=>e.jsx("div",{className:Q("flex flex-col space-y-1.5 text-center sm:text-left",n),...r});Qt.displayName="DialogHeader";const xs=({className:n,...r})=>e.jsx("div",{className:Q("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",n),...r});xs.displayName="DialogFooter";const Yt=u.forwardRef(({className:n,...r},c)=>e.jsx(Hp,{ref:c,className:Q("text-lg font-semibold leading-none tracking-tight",n),...r}));Yt.displayName=Hp.displayName;const ds=u.forwardRef(({className:n,...r},c)=>e.jsx(qp,{ref:c,className:Q("text-sm text-muted-foreground",n),...r}));ds.displayName=qp.displayName;const bt=_b,es=Sb,KN=wb,Ng=u.forwardRef(({className:n,...r},c)=>e.jsx(Sp,{className:Q("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...r,ref:c}));Ng.displayName=Sp.displayName;const dt=u.forwardRef(({className:n,...r},c)=>e.jsxs(KN,{children:[e.jsx(Ng,{}),e.jsx(Cp,{ref:c,className:Q("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",n),...r})]}));dt.displayName=Cp.displayName;const ut=({className:n,...r})=>e.jsx("div",{className:Q("flex flex-col space-y-2 text-center sm:text-left",n),...r});ut.displayName="AlertDialogHeader";const mt=({className:n,...r})=>e.jsx("div",{className:Q("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",n),...r});mt.displayName="AlertDialogFooter";const ht=u.forwardRef(({className:n,...r},c)=>e.jsx(kp,{ref:c,className:Q("text-lg font-semibold",n),...r}));ht.displayName=kp.displayName;const xt=u.forwardRef(({className:n,...r},c)=>e.jsx(Tp,{ref:c,className:Q("text-sm text-muted-foreground",n),...r}));xt.displayName=Tp.displayName;const ft=u.forwardRef(({className:n,...r},c)=>e.jsx(Ep,{ref:c,className:Q(hr(),n),...r}));ft.displayName=Ep.displayName;const pt=u.forwardRef(({className:n,...r},c)=>e.jsx(zp,{ref:c,className:Q(hr({variant:"outline"}),"mt-2 sm:mt-0",n),...r}));pt.displayName=zp.displayName;function ZN(){return e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"系统设置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理您的应用偏好设置"})]})}),e.jsxs(La,{defaultValue:"appearance",className:"w-full",children:[e.jsxs(wa,{className:"grid w-full grid-cols-2 sm:grid-cols-4 gap-0.5 sm:gap-1 h-auto p-1",children:[e.jsxs(it,{value:"appearance",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(cy,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"外观"})]}),e.jsxs(it,{value:"security",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(oy,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"安全"})]}),e.jsxs(it,{value:"other",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(ai,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"其他"})]}),e.jsxs(it,{value:"about",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(Ra,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"关于"})]})]}),e.jsxs(st,{className:"h-[calc(100vh-240px)] sm:h-[calc(100vh-280px)] mt-4 sm:mt-6",children:[e.jsx(zt,{value:"appearance",className:"mt-0",children:e.jsx(JN,{})}),e.jsx(zt,{value:"security",className:"mt-0",children:e.jsx(IN,{})}),e.jsx(zt,{value:"other",className:"mt-0",children:e.jsx(PN,{})}),e.jsx(zt,{value:"about",className:"mt-0",children:e.jsx(WN,{})})]})]})]})}function Wf(n){const r=document.documentElement,d={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[n];if(d)r.style.setProperty("--primary",d.hsl),d.gradient?(r.style.setProperty("--primary-gradient",d.gradient),r.classList.add("has-gradient")):(r.style.removeProperty("--primary-gradient"),r.classList.remove("has-gradient"));else if(n.startsWith("#")){const h=x=>{x=x.replace("#","");const f=parseInt(x.substring(0,2),16)/255,j=parseInt(x.substring(2,4),16)/255,p=parseInt(x.substring(4,6),16)/255,N=Math.max(f,j,p),v=Math.min(f,j,p);let C=0,S=0;const w=(N+v)/2;if(N!==v){const L=N-v;switch(S=w>.5?L/(2-N-v):L/(N+v),N){case f:C=((j-p)/L+(jlocalStorage.getItem("accent-color")||"blue");u.useEffect(()=>{const N=localStorage.getItem("accent-color")||"blue";Wf(N)},[]);const p=N=>{j(N),localStorage.setItem("accent-color",N),Wf(N)};return e.jsxs("div",{className:"space-y-6 sm:space-y-8",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题模式"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 sm:gap-4",children:[e.jsx(ku,{value:"light",current:n,onChange:r,label:"浅色",description:"始终使用浅色主题"}),e.jsx(ku,{value:"dark",current:n,onChange:r,label:"深色",description:"始终使用深色主题"}),e.jsx(ku,{value:"system",current:n,onChange:r,label:"跟随系统",description:"根据系统设置自动切换"})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题色"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"单色"}),e.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[e.jsx(ma,{value:"blue",current:f,onChange:p,label:"蓝色",colorClass:"bg-blue-500"}),e.jsx(ma,{value:"purple",current:f,onChange:p,label:"紫色",colorClass:"bg-purple-500"}),e.jsx(ma,{value:"green",current:f,onChange:p,label:"绿色",colorClass:"bg-green-500"}),e.jsx(ma,{value:"orange",current:f,onChange:p,label:"橙色",colorClass:"bg-orange-500"}),e.jsx(ma,{value:"pink",current:f,onChange:p,label:"粉色",colorClass:"bg-pink-500"}),e.jsx(ma,{value:"red",current:f,onChange:p,label:"红色",colorClass:"bg-red-500"})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"渐变色"}),e.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[e.jsx(ma,{value:"gradient-sunset",current:f,onChange:p,label:"日落",colorClass:"bg-gradient-to-r from-orange-500 to-pink-500"}),e.jsx(ma,{value:"gradient-ocean",current:f,onChange:p,label:"海洋",colorClass:"bg-gradient-to-r from-blue-500 to-cyan-500"}),e.jsx(ma,{value:"gradient-forest",current:f,onChange:p,label:"森林",colorClass:"bg-gradient-to-r from-green-500 to-emerald-500"}),e.jsx(ma,{value:"gradient-aurora",current:f,onChange:p,label:"极光",colorClass:"bg-gradient-to-r from-purple-500 to-pink-500"}),e.jsx(ma,{value:"gradient-fire",current:f,onChange:p,label:"烈焰",colorClass:"bg-gradient-to-r from-red-500 to-orange-500"}),e.jsx(ma,{value:"gradient-twilight",current:f,onChange:p,label:"暮光",colorClass:"bg-gradient-to-r from-indigo-500 to-purple-500"})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"自定义颜色"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 sm:gap-4",children:[e.jsx("div",{className:"flex-1",children:e.jsx("input",{type:"color",value:f.startsWith("#")?f:"#3b82f6",onChange:N=>p(N.target.value),className:"h-10 sm:h-12 w-full rounded-lg border-2 border-border cursor-pointer",title:"选择自定义颜色"})}),e.jsx("div",{className:"flex-1",children:e.jsx(ce,{type:"text",value:f,onChange:N=>p(N.target.value),placeholder:"#3b82f6",className:"font-mono text-sm"})})]}),e.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground mt-2",children:"点击色块选择颜色,或手动输入 HEX 颜色代码"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"动画效果"}),e.jsxs("div",{className:"space-y-2 sm:space-y-3",children:[e.jsx("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5 flex-1",children:[e.jsx(y,{htmlFor:"animations",className:"text-base font-medium cursor-pointer",children:"启用动画效果"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后将禁用所有过渡动画和特效,提升性能"})]}),e.jsx(Qe,{id:"animations",checked:c,onCheckedChange:d})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5 flex-1",children:[e.jsx(y,{htmlFor:"waves-background",className:"text-base font-medium cursor-pointer",children:"登录页波浪背景"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后登录页将使用纯色背景,适合低性能设备"})]}),e.jsx(Qe,{id:"waves-background",checked:h,onCheckedChange:x})]})})]})]})]})}function IN(){const n=fa(),[r,c]=u.useState(""),[d,h]=u.useState(""),[x,f]=u.useState(!1),[j,p]=u.useState(!1),[N,v]=u.useState(!1),[C,S]=u.useState(!1),[w,L]=u.useState(!1),[F,B]=u.useState(!1),[O,K]=u.useState(""),[H,z]=u.useState(!1),{toast:V}=Xt(),Y=u.useMemo(()=>UN(d),[d]),E=async pe=>{if(!r){V({title:"无法复制",description:"Token 存储在安全 Cookie 中,请重新生成以获取新 Token",variant:"destructive"});return}try{await navigator.clipboard.writeText(pe),L(!0),V({title:"复制成功",description:"Token 已复制到剪贴板"}),setTimeout(()=>L(!1),2e3)}catch{V({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},R=async()=>{if(!d.trim()){V({title:"输入错误",description:"请输入新的 Token",variant:"destructive"});return}if(!Y.isValid){const pe=Y.rules.filter(Ne=>!Ne.passed).map(Ne=>Ne.label).join(", ");V({title:"格式错误",description:`Token 不符合要求: ${pe}`,variant:"destructive"});return}v(!0);try{const pe=await fetch("/api/webui/auth/update",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({new_token:d.trim()})}),Ne=await pe.json();pe.ok&&Ne.success?(h(""),c(d.trim()),V({title:"更新成功",description:"Access Token 已更新,即将跳转到登录页"}),setTimeout(()=>{n({to:"/auth"})},1500)):V({title:"更新失败",description:Ne.message||"无法更新 Token",variant:"destructive"})}catch(pe){console.error("更新 Token 错误:",pe),V({title:"更新失败",description:"连接服务器失败",variant:"destructive"})}finally{v(!1)}},ne=async()=>{S(!0);try{const pe=await fetch("/api/webui/auth/regenerate",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include"}),Ne=await pe.json();pe.ok&&Ne.success?(c(Ne.token),K(Ne.token),B(!0),z(!1),V({title:"生成成功",description:"新的 Access Token 已生成,请及时保存"})):V({title:"生成失败",description:Ne.message||"无法生成新 Token",variant:"destructive"})}catch(pe){console.error("生成 Token 错误:",pe),V({title:"生成失败",description:"连接服务器失败",variant:"destructive"})}finally{S(!1)}},fe=async()=>{try{await navigator.clipboard.writeText(O),z(!0),V({title:"复制成功",description:"Token 已复制到剪贴板"})}catch{V({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},Ce=()=>{B(!1),setTimeout(()=>{K(""),z(!1)},300),setTimeout(()=>{n({to:"/auth"})},500)},we=pe=>{pe||Ce()};return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsx(Jt,{open:F,onOpenChange:we,children:e.jsxs($t,{className:"sm:max-w-md",children:[e.jsxs(Qt,{children:[e.jsxs(Yt,{className:"flex items-center gap-2",children:[e.jsx(ya,{className:"h-5 w-5 text-yellow-500"}),"新的 Access Token"]}),e.jsx(ds,{children:"这是您的新 Token,请立即保存。关闭此窗口后将跳转到登录页面。"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"rounded-lg border-2 border-primary/20 bg-primary/5 p-4",children:[e.jsx(y,{className:"text-xs text-muted-foreground mb-2 block",children:"您的新 Token (64位安全令牌)"}),e.jsx("div",{className:"font-mono text-sm break-all select-all bg-background p-3 rounded border",children:O})]}),e.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ya,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5"}),e.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[e.jsx("p",{className:"font-semibold",children:"重要提示"}),e.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[e.jsx("li",{children:"此 Token 仅显示一次,关闭后无法再查看"}),e.jsx("li",{children:"请立即复制并保存到安全的位置"}),e.jsx("li",{children:"关闭窗口后将自动跳转到登录页面"}),e.jsx("li",{children:"请使用新 Token 重新登录系统"})]})]})]})})]}),e.jsxs(xs,{className:"gap-2 sm:gap-0",children:[e.jsx(b,{variant:"outline",onClick:fe,className:"gap-2",children:H?e.jsxs(e.Fragment,{children:[e.jsx(Na,{className:"h-4 w-4 text-green-500"}),"已复制"]}):e.jsxs(e.Fragment,{children:[e.jsx(Jc,{className:"h-4 w-4"}),"复制 Token"]})}),e.jsx(b,{onClick:Ce,children:"我已保存,关闭"})]})]})}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"当前 Access Token"}),e.jsx("div",{className:"space-y-3 sm:space-y-4",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"current-token",className:"text-sm",children:"您的访问令牌"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(ce,{id:"current-token",type:x?"text":"password",value:r||"••••••••••••••••••••••••••••••••",readOnly:!0,className:"pr-10 font-mono text-sm",placeholder:"Token 存储在安全 Cookie 中"}),e.jsx("button",{onClick:()=>{r?f(!x):V({title:"无法查看",description:'Token 存储在安全 Cookie 中,如需新 Token 请点击"重新生成"'})},className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:x?"隐藏":"显示",children:x?e.jsx(or,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Ws,{className:"h-4 w-4 text-muted-foreground"})})]}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[e.jsx(b,{variant:"outline",size:"icon",onClick:()=>E(r),title:"复制到剪贴板",className:"flex-shrink-0",disabled:!r,children:w?e.jsx(Na,{className:"h-4 w-4 text-green-500"}):e.jsx(Jc,{className:"h-4 w-4"})}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsxs(b,{variant:"outline",disabled:C,className:"gap-2 flex-1 sm:flex-none",children:[e.jsx(ws,{className:Q("h-4 w-4",C&&"animate-spin")}),e.jsx("span",{className:"hidden sm:inline",children:"重新生成"}),e.jsx("span",{className:"sm:hidden",children:"生成"})]})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认重新生成 Token"}),e.jsx(xt,{children:"这将生成一个新的 64 位安全令牌,并使当前 Token 立即失效。 您需要使用新 Token 重新登录系统。此操作不可撤销,确定要继续吗?"})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:ne,children:"确认生成"})]})]})]})]})]}),e.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground",children:"请妥善保管您的 Access Token,不要泄露给他人"})]})})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"自定义 Access Token"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"new-token",className:"text-sm",children:"新的访问令牌"}),e.jsxs("div",{className:"relative",children:[e.jsx(ce,{id:"new-token",type:j?"text":"password",value:d,onChange:pe=>h(pe.target.value),className:"pr-10 font-mono text-sm",placeholder:"输入自定义 Token"}),e.jsx("button",{onClick:()=>p(!j),className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:j?"隐藏":"显示",children:j?e.jsx(or,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Ws,{className:"h-4 w-4 text-muted-foreground"})})]}),d&&e.jsxs("div",{className:"mt-3 space-y-2 p-3 rounded-lg bg-muted/50",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"Token 安全要求:"}),e.jsx("div",{className:"space-y-1.5",children:Y.rules.map(pe=>e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[pe.passed?e.jsx(ha,{className:"h-4 w-4 text-green-500 flex-shrink-0"}):e.jsx(sg,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),e.jsx("span",{className:Q(pe.passed?"text-green-600 dark:text-green-400":"text-muted-foreground"),children:pe.label})]},pe.id))}),Y.isValid&&e.jsx("div",{className:"mt-2 pt-2 border-t border-border",children:e.jsxs("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[e.jsx(Na,{className:"h-4 w-4"}),e.jsx("span",{className:"font-medium",children:"Token 格式正确,可以使用"})]})})]})]}),e.jsx(b,{onClick:R,disabled:N||!Y.isValid||!d,className:"w-full sm:w-auto",children:N?"更新中...":"更新自定义 Token"})]})]}),e.jsxs("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3 sm:p-4",children:[e.jsx("h4",{className:"text-sm sm:text-base font-semibold text-yellow-900 dark:text-yellow-200 mb-2",children:"安全提示"}),e.jsxs("ul",{className:"text-xs sm:text-sm text-yellow-800 dark:text-yellow-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"重新生成 Token 会创建系统随机生成的 64 位安全令牌"}),e.jsx("li",{children:"自定义 Token 必须满足所有安全要求才能使用"}),e.jsx("li",{children:"更新 Token 后,旧的 Token 将立即失效"}),e.jsx("li",{children:"请在安全的环境下查看和复制 Token"}),e.jsx("li",{children:"如果怀疑 Token 泄露,请立即重新生成或更新"}),e.jsx("li",{children:"建议使用系统生成的 Token 以获得最高安全性"})]})]})]})}function PN(){const n=fa(),{toast:r}=Xt(),[c,d]=u.useState(!1),[h,x]=u.useState(!1),[f,j]=u.useState(()=>Wt("logCacheSize")),[p,N]=u.useState(()=>Wt("wsReconnectInterval")),[v,C]=u.useState(()=>Wt("wsMaxReconnectAttempts")),[S,w]=u.useState(()=>Wt("dataSyncInterval")),[L,F]=u.useState(()=>Pf()),[B,O]=u.useState(!1),[K,H]=u.useState(!1),z=u.useRef(null);if(h)throw new Error("这是一个手动触发的测试错误,用于验证错误边界组件是否正常工作。");const V=()=>{F(Pf())},Y=A=>{const X=A[0];j(X),Pn("logCacheSize",X)},E=A=>{const X=A[0];N(X),Pn("wsReconnectInterval",X)},R=A=>{const X=A[0];C(X),Pn("wsMaxReconnectAttempts",X)},ne=A=>{const X=A[0];w(X),Pn("dataSyncInterval",X)},fe=()=>{an.clearLogs(),r({title:"日志已清除",description:"日志缓存已清空"})},Ce=()=>{const A=$N();V(),r({title:"缓存已清除",description:`已清除 ${A.clearedKeys.length} 项缓存数据`})},we=()=>{O(!0);try{const A=GN(),X=JSON.stringify(A,null,2),T=new Blob([X],{type:"application/json"}),te=URL.createObjectURL(T),_=document.createElement("a");_.href=te,_.download=`maibot-webui-settings-${new Date().toISOString().slice(0,10)}.json`,document.body.appendChild(_),_.click(),document.body.removeChild(_),URL.revokeObjectURL(te),r({title:"导出成功",description:"设置已导出为 JSON 文件"})}catch(A){console.error("导出设置失败:",A),r({title:"导出失败",description:"无法导出设置",variant:"destructive"})}finally{O(!1)}},pe=A=>{const X=A.target.files?.[0];if(!X)return;H(!0);const T=new FileReader;T.onload=te=>{try{const _=te.target?.result,me=JSON.parse(_),oe=VN(me);oe.success?(j(Wt("logCacheSize")),N(Wt("wsReconnectInterval")),C(Wt("wsMaxReconnectAttempts")),w(Wt("dataSyncInterval")),V(),r({title:"导入成功",description:`成功导入 ${oe.imported.length} 项设置${oe.skipped.length>0?`,跳过 ${oe.skipped.length} 项`:""}`}),(oe.imported.includes("theme")||oe.imported.includes("accentColor"))&&r({title:"提示",description:"部分设置需要刷新页面才能完全生效"})):r({title:"导入失败",description:"没有有效的设置项可导入",variant:"destructive"})}catch(_){console.error("导入设置失败:",_),r({title:"导入失败",description:"文件格式无效",variant:"destructive"})}finally{H(!1),z.current&&(z.current.value="")}},T.readAsText(X)},Ne=()=>{FN(),j(Aa.logCacheSize),N(Aa.wsReconnectInterval),C(Aa.wsMaxReconnectAttempts),w(Aa.dataSyncInterval),V(),r({title:"已重置",description:"所有设置已恢复为默认值,刷新页面以应用更改"})},be=async()=>{d(!0);try{const A=localStorage.getItem("access-token"),X=await fetch("/api/webui/setup/reset",{method:"POST",headers:{Authorization:`Bearer ${A}`}}),T=await X.json();X.ok&&T.success?(r({title:"重置成功",description:"即将进入初次配置向导"}),setTimeout(()=>{n({to:"/setup"})},1e3)):r({title:"重置失败",description:T.message||"无法重置配置状态",variant:"destructive"})}catch(A){console.error("重置配置状态错误:",A),r({title:"重置失败",description:"连接服务器失败",variant:"destructive"})}finally{d(!1)}};return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(Zc,{className:"h-5 w-5"}),"性能与存储"]}),e.jsxs("div",{className:"space-y-4 sm:space-y-5",children:[e.jsxs("div",{className:"rounded-lg bg-muted/50 p-3 sm:p-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("span",{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(dy,{className:"h-4 w-4"}),"本地存储使用"]}),e.jsx(b,{variant:"ghost",size:"sm",onClick:V,className:"h-7 px-2",children:e.jsx(ws,{className:"h-3 w-3"})})]}),e.jsx("div",{className:"text-2xl font-bold text-primary",children:QN(L.used)}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:[L.items," 个存储项"]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{className:"text-sm font-medium",children:"日志缓存大小"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[f," 条"]})]}),e.jsx(Ma,{value:[f],onValueChange:Y,min:100,max:5e3,step:100,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"控制日志查看器最多缓存的日志条数,较大的值会占用更多内存"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{className:"text-sm font-medium",children:"首页数据刷新间隔"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[S," 秒"]})]}),e.jsx(Ma,{value:[S],onValueChange:ne,min:10,max:120,step:5,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"控制首页统计数据的自动刷新间隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{className:"text-sm font-medium",children:"WebSocket 重连间隔"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[p/1e3," 秒"]})]}),e.jsx(Ma,{value:[p],onValueChange:E,min:1e3,max:1e4,step:500,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"日志 WebSocket 连接断开后的重连基础间隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{className:"text-sm font-medium",children:"WebSocket 最大重连次数"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[v," 次"]})]}),e.jsx(Ma,{value:[v],onValueChange:R,min:3,max:30,step:1,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"连接失败后的最大重连尝试次数"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2 pt-2",children:[e.jsxs(b,{variant:"outline",size:"sm",onClick:fe,className:"gap-2",children:[e.jsx(at,{className:"h-4 w-4"}),"清除日志缓存"]}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",className:"gap-2",children:[e.jsx(at,{className:"h-4 w-4"}),"清除本地缓存"]})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认清除本地缓存"}),e.jsx(xt,{children:"这将清除所有本地缓存的设置和数据(不包括登录凭证)。 您可能需要重新配置部分偏好设置。确定要继续吗?"})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:Ce,children:"确认清除"})]})]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(rl,{className:"h-5 w-5"}),"导入/导出设置"]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"导出当前的界面设置以便备份,或从之前导出的文件中恢复设置。"}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(b,{variant:"outline",onClick:we,disabled:B,className:"gap-2",children:[e.jsx(rl,{className:"h-4 w-4"}),B?"导出中...":"导出设置"]}),e.jsx("input",{ref:z,type:"file",accept:".json",onChange:pe,className:"hidden"}),e.jsxs(b,{variant:"outline",onClick:()=>z.current?.click(),disabled:K,className:"gap-2",children:[e.jsx(dr,{className:"h-4 w-4"}),K?"导入中...":"导入设置"]})]}),e.jsx("div",{className:"pt-2 border-t",children:e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",className:"gap-2 text-destructive hover:text-destructive",children:[e.jsx(Kc,{className:"h-4 w-4"}),"重置所有设置为默认值"]})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认重置所有设置"}),e.jsx(xt,{children:"这将把所有界面设置恢复为默认值,包括主题、颜色、动画等偏好设置。 此操作不会影响您的登录状态。确定要继续吗?"})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:Ne,children:"确认重置"})]})]})]})})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"配置向导"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsx("div",{className:"space-y-2",children:e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"重新进行初次配置向导,可以帮助您重新设置系统的基础配置。"})}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsxs(b,{variant:"outline",disabled:c,className:"gap-2",children:[e.jsx(Kc,{className:Q("h-4 w-4",c&&"animate-spin")}),"重新进行初次配置"]})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认重新配置"}),e.jsx(xt,{children:"这将带您重新进入初次配置向导。您可以重新设置系统的基础配置项。确定要继续吗?"})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:be,children:"确认重置"})]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border border-dashed border-yellow-500/50 bg-yellow-500/5 p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(ya,{className:"h-5 w-5 text-yellow-500"}),"开发者工具"]}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsx("div",{className:"space-y-2",children:e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"以下功能仅供开发调试使用,可能会导致页面崩溃或异常。"})}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsxs(b,{variant:"destructive",className:"gap-2",children:[e.jsx(ya,{className:"h-4 w-4"}),"触发测试错误"]})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认触发错误"}),e.jsx(xt,{children:"这将手动触发一个 React 错误,用于测试错误边界组件的显示效果。 页面将显示错误界面,您可以通过刷新页面或点击返回首页来恢复。"})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>x(!0),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认触发"})]})]})]})]})]})]})}function WN(){return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsx("div",{className:"rounded-lg border-2 border-primary/30 bg-gradient-to-r from-primary/5 to-primary/10 p-4 sm:p-6",children:e.jsxs("div",{className:"flex items-start gap-3 sm:gap-4",children:[e.jsx("div",{className:"flex-shrink-0 rounded-lg bg-primary/10 p-2 sm:p-3",children:e.jsx("svg",{className:"h-6 w-6 sm:h-8 sm:w-8 text-primary",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:"text-lg sm:text-xl font-bold text-foreground mb-2",children:"开源项目"}),e.jsx("p",{className:"text-sm sm:text-base text-muted-foreground mb-3",children:"本项目在 GitHub 开源,欢迎 Star ⭐ 支持!"}),e.jsxs("a",{href:"https://github.com/Mai-with-u/MaiBot-Dashboard",target:"_blank",rel:"noopener noreferrer",className:Q("inline-flex items-center gap-2 px-4 py-2 rounded-lg","bg-primary text-primary-foreground font-medium text-sm","hover:bg-primary/90 transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"),children:[e.jsx("svg",{className:"h-4 w-4",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})}),"前往 GitHub",e.jsx("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})})]})]})]})}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:["关于 ",Fu]}),e.jsxs("div",{className:"space-y-2 text-xs sm:text-sm text-muted-foreground",children:[e.jsxs("p",{children:["版本: ",Vu]}),e.jsx("p",{children:"麦麦(MaiBot)的现代化 Web 管理界面"})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"作者"}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"MaiBot 核心"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"Mai-with-u"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"WebUI"}),e.jsxs("p",{className:"text-xs sm:text-sm text-muted-foreground",children:["Mai-with-u ",e.jsx("a",{href:"https://github.com/DrSmoothl",target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"@MotricSeven"})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"技术栈"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-xs sm:text-sm text-muted-foreground",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"前端框架"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"React 19.2.0"}),e.jsx("li",{children:"TypeScript 5.7.2"}),e.jsx("li",{children:"Vite 6.0.7"}),e.jsx("li",{children:"TanStack Router 1.94.2"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"UI 组件"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"shadcn/ui"}),e.jsx("li",{children:"Radix UI"}),e.jsx("li",{children:"Tailwind CSS 3.4.17"}),e.jsx("li",{children:"Lucide Icons"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"后端"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"Python 3.12+"}),e.jsx("li",{children:"FastAPI"}),e.jsx("li",{children:"Uvicorn"}),e.jsx("li",{children:"WebSocket"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"构建工具"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"Bun / npm"}),e.jsx("li",{children:"ESLint 9.17.0"}),e.jsx("li",{children:"PostCSS"})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源库感谢"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mb-3",children:"本项目使用了以下优秀的开源库,感谢他们的贡献:"}),e.jsx(st,{className:"h-[300px] sm:h-[400px]",children:e.jsxs("div",{className:"space-y-4 pr-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"UI 框架与组件"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zt,{name:"React",description:"用户界面构建库",license:"MIT"}),e.jsx(Zt,{name:"shadcn/ui",description:"优雅的 React 组件库",license:"MIT"}),e.jsx(Zt,{name:"Radix UI",description:"无样式的可访问组件库",license:"MIT"}),e.jsx(Zt,{name:"Tailwind CSS",description:"实用优先的 CSS 框架",license:"MIT"}),e.jsx(Zt,{name:"Lucide React",description:"精美的图标库",license:"ISC"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"路由与状态管理"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zt,{name:"TanStack Router",description:"类型安全的路由库",license:"MIT"}),e.jsx(Zt,{name:"Zustand",description:"轻量级状态管理",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"表单处理"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zt,{name:"React Hook Form",description:"高性能表单库",license:"MIT"}),e.jsx(Zt,{name:"Zod",description:"TypeScript 优先的 schema 验证",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"工具库"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zt,{name:"clsx",description:"条件 className 构建工具",license:"MIT"}),e.jsx(Zt,{name:"tailwind-merge",description:"Tailwind 类名合并工具",license:"MIT"}),e.jsx(Zt,{name:"class-variance-authority",description:"组件变体管理",license:"Apache-2.0"}),e.jsx(Zt,{name:"date-fns",description:"现代化日期处理库",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"动画效果"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zt,{name:"Framer Motion",description:"React 动画库",license:"MIT"}),e.jsx(Zt,{name:"vaul",description:"抽屉组件动画",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"后端框架"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zt,{name:"FastAPI",description:"现代化 Python Web 框架",license:"MIT"}),e.jsx(Zt,{name:"Uvicorn",description:"ASGI 服务器",license:"BSD-3-Clause"}),e.jsx(Zt,{name:"Pydantic",description:"数据验证库",license:"MIT"}),e.jsx(Zt,{name:"python-multipart",description:"文件上传支持",license:"Apache-2.0"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"开发工具"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zt,{name:"TypeScript",description:"JavaScript 的超集",license:"Apache-2.0"}),e.jsx(Zt,{name:"Vite",description:"下一代前端构建工具",license:"MIT"}),e.jsx(Zt,{name:"ESLint",description:"JavaScript 代码检查工具",license:"MIT"}),e.jsx(Zt,{name:"PostCSS",description:"CSS 转换工具",license:"MIT"})]})]})]})})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源许可"}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"rounded-lg bg-primary/5 border border-primary/20 p-3 sm:p-4",children:e.jsxs("div",{className:"flex items-start gap-2 sm:gap-3",children:[e.jsx("div",{className:"flex-shrink-0 mt-0.5",children:e.jsx("div",{className:"rounded-md bg-primary/10 px-2 py-1",children:e.jsx("span",{className:"text-xs sm:text-sm font-bold text-primary",children:"GPLv3"})})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm sm:text-base font-semibold text-foreground mb-1",children:"MaiBot WebUI"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目采用 GNU General Public License v3.0 开源许可证。 您可以自由地使用、修改和分发本软件,但必须保持相同的开源许可。"})]})]})}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目依赖的所有开源库均遵循各自的开源许可证(MIT、Apache-2.0、BSD 等)。 感谢所有开源贡献者的无私奉献。"})]})]})]})}function Zt({name:n,description:r,license:c}){return e.jsxs("div",{className:"flex items-start justify-between gap-2 rounded-lg border bg-muted/30 p-2.5 sm:p-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium text-foreground truncate",children:n}),e.jsx("p",{className:"text-muted-foreground text-xs mt-0.5",children:r})]}),e.jsx("span",{className:"inline-flex items-center rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-medium text-primary flex-shrink-0",children:c})]})}function ku({value:n,current:r,onChange:c,label:d,description:h}){const x=r===n;return e.jsxs("button",{onClick:()=>c(n),className:Q("relative rounded-lg border-2 p-3 sm:p-4 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",x?"border-primary bg-accent":"border-border"),children:[x&&e.jsx("div",{className:"absolute top-2 right-2 sm:top-3 sm:right-3 h-2 w-2 rounded-full bg-primary"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-sm sm:text-base font-medium",children:d}),e.jsx("div",{className:"text-[10px] sm:text-xs text-muted-foreground",children:h})]}),e.jsxs("div",{className:"mt-2 sm:mt-3 flex gap-1",children:[n==="light"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-200"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-300"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-400"})]}),n==="dark"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-700"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-800"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-900"})]}),n==="system"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-200 to-slate-700"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-300 to-slate-800"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-400 to-slate-900"})]})]})]})}function ma({value:n,current:r,onChange:c,label:d,colorClass:h}){const x=r===n;return e.jsxs("button",{onClick:()=>c(n),className:Q("relative rounded-lg border-2 p-2 sm:p-3 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",x?"border-primary bg-accent":"border-border"),children:[x&&e.jsx("div",{className:"absolute top-1.5 right-1.5 sm:top-2 sm:right-2 h-1.5 w-1.5 sm:h-2 sm:w-2 rounded-full bg-primary"}),e.jsxs("div",{className:"flex flex-col items-center gap-1.5 sm:gap-2",children:[e.jsx("div",{className:Q("h-8 w-8 sm:h-10 sm:w-10 rounded-full",h)}),e.jsx("div",{className:"text-[10px] sm:text-xs font-medium text-center",children:d})]})]})}class e0{grad3;p;perm;constructor(r=0){this.grad3=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],this.p=[];for(let c=0;c<256;c++)this.p[c]=Math.floor(Math.random()*256);this.perm=[];for(let c=0;c<512;c++)this.perm[c]=this.p[c&255]}dot(r,c,d){return r[0]*c+r[1]*d}mix(r,c,d){return(1-d)*r+d*c}fade(r){return r*r*r*(r*(r*6-15)+10)}perlin2(r,c){const d=Math.floor(r)&255,h=Math.floor(c)&255;r-=Math.floor(r),c-=Math.floor(c);const x=this.fade(r),f=this.fade(c),j=this.perm[d]+h,p=this.perm[j],N=this.perm[j+1],v=this.perm[d+1]+h,C=this.perm[v],S=this.perm[v+1];return this.mix(this.mix(this.dot(this.grad3[p%12],r,c),this.dot(this.grad3[C%12],r-1,c),x),this.mix(this.dot(this.grad3[N%12],r,c-1),this.dot(this.grad3[S%12],r-1,c-1),x),f)}}function ep(){const n=u.useRef(null),r=u.useRef(null),c=u.useRef(void 0),d=u.useRef({mouse:{x:-10,y:0,lx:0,ly:0,sx:0,sy:0,v:0,vs:0,a:0,set:!1},lines:[],paths:[],noise:new e0(Math.random()),bounding:null});return u.useEffect(()=>{const h=r.current,x=n.current;if(!h||!x)return;const f=d.current,j=()=>{const F=h.getBoundingClientRect();f.bounding=F,x.style.width=`${F.width}px`,x.style.height=`${F.height}px`},p=()=>{if(!f.bounding)return;const{width:F,height:B}=f.bounding;f.lines=[],f.paths.forEach(ne=>ne.remove()),f.paths=[];const O=10,K=32,H=F+200,z=B+30,V=Math.ceil(H/O),Y=Math.ceil(z/K),E=(F-O*V)/2,R=(B-K*Y)/2;for(let ne=0;ne<=V;ne++){const fe=[];for(let we=0;we<=Y;we++){const pe={x:E+O*ne,y:R+K*we,wave:{x:0,y:0},cursor:{x:0,y:0,vx:0,vy:0}};fe.push(pe)}const Ce=document.createElementNS("http://www.w3.org/2000/svg","path");x.appendChild(Ce),f.paths.push(Ce),f.lines.push(fe)}},N=F=>{const{lines:B,mouse:O,noise:K}=f;B.forEach(H=>{H.forEach(z=>{const V=K.perlin2((z.x+F*.0125)*.002,(z.y+F*.005)*.0015)*12;z.wave.x=Math.cos(V)*32,z.wave.y=Math.sin(V)*16;const Y=z.x-O.sx,E=z.y-O.sy,R=Math.hypot(Y,E),ne=Math.max(175,O.vs);if(R{const O={x:F.x+F.wave.x+(B?F.cursor.x:0),y:F.y+F.wave.y+(B?F.cursor.y:0)};return O.x=Math.round(O.x*10)/10,O.y=Math.round(O.y*10)/10,O},C=()=>{const{lines:F,paths:B}=f;F.forEach((O,K)=>{let H=v(O[0],!1),z=`M ${H.x} ${H.y}`;O.forEach((V,Y)=>{const E=Y===O.length-1;H=v(V,!E),z+=`L ${H.x} ${H.y}`}),B[K].setAttribute("d",z)})},S=F=>{const{mouse:B}=f;B.sx+=(B.x-B.sx)*.1,B.sy+=(B.y-B.sy)*.1;const O=B.x-B.lx,K=B.y-B.ly,H=Math.hypot(O,K);B.v=H,B.vs+=(H-B.vs)*.1,B.vs=Math.min(100,B.vs),B.lx=B.x,B.ly=B.y,B.a=Math.atan2(K,O),h&&(h.style.setProperty("--x",`${B.sx}px`),h.style.setProperty("--y",`${B.sy}px`)),N(F),C(),c.current=requestAnimationFrame(S)},w=F=>{if(!f.bounding)return;const{mouse:B}=f;B.x=F.pageX-f.bounding.left,B.y=F.pageY-f.bounding.top+window.scrollY,B.set||(B.sx=B.x,B.sy=B.y,B.lx=B.x,B.ly=B.y,B.set=!0)},L=()=>{j(),p()};return j(),p(),window.addEventListener("resize",L),window.addEventListener("mousemove",w),c.current=requestAnimationFrame(S),()=>{window.removeEventListener("resize",L),window.removeEventListener("mousemove",w),c.current&&cancelAnimationFrame(c.current)}},[]),e.jsxs("div",{ref:r,className:"waves-background",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflow:"hidden",pointerEvents:"none"},children:[e.jsx("div",{className:"waves-cursor",style:{position:"absolute",top:0,left:0,width:"0.5rem",height:"0.5rem",background:"hsl(var(--primary) / 0.3)",borderRadius:"50%",transform:"translate3d(calc(var(--x, -0.5rem) - 50%), calc(var(--y, 50%) - 50%), 0)",willChange:"transform",pointerEvents:"none"}}),e.jsx("svg",{ref:n,style:{display:"block",width:"100%",height:"100%"},children:e.jsx("style",{children:` - path { - fill: none; - stroke: hsl(var(--primary) / 0.20); - stroke-width: 1px; - } - `})})]})}async function Te(n,r){const c={...r,credentials:"include",headers:{"Content-Type":"application/json",...r?.headers}},d=await fetch(n,c);if(d.status===401)throw window.location.href="/auth",new Error("认证失败,请重新登录");return d}function Rt(){return{"Content-Type":"application/json"}}async function t0(){try{await fetch("/api/webui/auth/logout",{method:"POST",credentials:"include"})}catch(n){console.error("登出请求失败:",n)}window.location.href="/auth"}async function Qu(){try{return(await(await fetch("/api/webui/auth/check",{method:"GET",credentials:"include"})).json()).authenticated===!0}catch{return!1}}function s0(){const[n,r]=u.useState(""),[c,d]=u.useState(!1),[h,x]=u.useState(""),[f,j]=u.useState(!0),p=fa(),{enableWavesBackground:N,setEnableWavesBackground:v}=vg(),{theme:C,setTheme:S}=Gu();u.useEffect(()=>{(async()=>{try{await Qu()&&p({to:"/"})}catch{}finally{j(!1)}})()},[p]);const L=C==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":C,F=()=>{S(L==="dark"?"light":"dark")},B=async O=>{if(O.preventDefault(),x(""),!n.trim()){x("请输入 Access Token");return}d(!0);try{const K=await fetch("/api/webui/auth/verify",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:n.trim()})}),H=await K.json();K.ok&&H.valid?H.is_first_setup?p({to:"/setup"}):p({to:"/"}):x(H.message||"Token 验证失败,请检查后重试")}catch(K){console.error("Token 验证错误:",K),x("连接服务器失败,请检查网络连接")}finally{d(!1)}};return f?e.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[N&&e.jsx(ep,{}),e.jsx("div",{className:"text-muted-foreground",children:"正在检查登录状态..."})]}):e.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[N&&e.jsx(ep,{}),e.jsxs(Ye,{className:"relative z-10 w-full max-w-md shadow-2xl backdrop-blur-xl bg-card/80 border-border/50",children:[e.jsx("button",{onClick:F,className:"absolute right-4 top-4 rounded-lg p-2 hover:bg-accent transition-colors z-10 text-foreground",title:L==="dark"?"切换到浅色模式":"切换到深色模式",children:L==="dark"?e.jsx(ag,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"}):e.jsx(lg,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"})}),e.jsxs(Nt,{className:"space-y-4 text-center",children:[e.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-2xl bg-primary/10",children:e.jsx(Gf,{className:"h-8 w-8 text-primary",strokeWidth:2,fill:"none"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(wt,{className:"text-2xl font-bold",children:"欢迎使用 MaiBot"}),e.jsx(ns,{className:"text-base",children:"请输入您的 Access Token 以继续访问系统"})]})]}),e.jsx(kt,{children:e.jsxs("form",{onSubmit:B,className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"token",className:"text-sm font-medium",children:"Access Token"}),e.jsxs("div",{className:"relative",children:[e.jsx(ng,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground",strokeWidth:2,fill:"none"}),e.jsx(ce,{id:"token",type:"password",placeholder:"请输入您的 Access Token",value:n,onChange:O=>r(O.target.value),className:Q("pl-10",h&&"border-red-500 focus-visible:ring-red-500"),disabled:c,autoFocus:!0,autoComplete:"off"})]})]}),h&&e.jsxs("div",{className:"flex items-center gap-2 rounded-md bg-red-50 p-3 text-sm text-red-600 dark:bg-red-950/50 dark:text-red-400",children:[e.jsx(Oa,{className:"h-4 w-4 flex-shrink-0",strokeWidth:2,fill:"none"}),e.jsx("span",{children:h})]}),e.jsx(b,{type:"submit",className:"w-full",disabled:c,children:c?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent"}),"验证中..."]}):"验证并进入"}),e.jsxs(Jt,{children:[e.jsx($u,{asChild:!0,children:e.jsxs("button",{className:"w-full text-center text-sm text-primary hover:text-primary/80 transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[e.jsx(uy,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我没有 Token,我该去哪里获得 Token?"]})}),e.jsxs($t,{className:"sm:max-w-md",children:[e.jsxs(Qt,{children:[e.jsxs(Yt,{className:"flex items-center gap-2",children:[e.jsx(Gf,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"如何获取 Access Token"]}),e.jsx(ds,{children:"Access Token 是访问 MaiBot WebUI 的唯一凭证,请按以下方式获取"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(my,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx("h4",{className:"font-semibold text-sm",children:"方式一:查看启动日志"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"在 MaiBot 启动时,控制台会显示 WebUI Access Token。"}),e.jsxs("div",{className:"rounded bg-background p-2 font-mono text-xs",children:[e.jsx("p",{className:"text-muted-foreground",children:"🔑 WebUI Access Token: abc123..."}),e.jsx("p",{className:"text-muted-foreground",children:"💡 请使用此 Token 登录 WebUI"})]})]})]})}),e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Da,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx("h4",{className:"font-semibold text-sm",children:"方式二:查看配置文件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Token 保存在项目根目录的配置文件中:"}),e.jsx("div",{className:"rounded bg-background p-2 font-mono text-xs break-all",children:e.jsx("code",{className:"text-primary",children:"data/webui.json"})}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["打开此文件,复制 ",e.jsx("code",{className:"px-1 py-0.5 bg-background rounded",children:"access_token"})," 字段的值"]})]})]})}),e.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Oa,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[e.jsx("p",{className:"font-semibold",children:"安全提示"}),e.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[e.jsx("li",{children:"请妥善保管您的 Token,不要泄露给他人"}),e.jsx("li",{children:"如需重置 Token,请在登录后前往系统设置"})]})]})]})})]})]})]}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsxs("button",{className:"w-full text-center text-sm text-muted-foreground hover:text-foreground transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[e.jsx(ln,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我觉得这个界面很卡怎么办?"]})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsxs(ht,{className:"flex items-center gap-2",children:[e.jsx(ln,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"关闭背景动画"]}),e.jsx(xt,{children:"背景动画可能会在低性能设备上造成卡顿。关闭动画可以显著提升界面流畅度。"})]}),e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭动画后,背景将变为纯色,但不影响任何功能的使用。您可以随时在系统设置中重新开启动画。"})}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>v(!1),children:"关闭动画"})]})]})]})]})})]}),e.jsx("div",{className:"absolute bottom-4 left-0 right-0 text-center text-xs text-muted-foreground",children:e.jsx("p",{children:BN})})]})}const Ft=u.forwardRef(({className:n,...r},c)=>e.jsx("textarea",{className:Q("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",n),ref:c,...r}));Ft.displayName="Textarea";const xr=u.forwardRef(({className:n,orientation:r="horizontal",decorative:c=!0,...d},h)=>e.jsx(Ap,{ref:h,decorative:c,orientation:r,className:Q("shrink-0 bg-border",r==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",n),...d}));xr.displayName=Ap.displayName;function a0({config:n,onChange:r}){const c=h=>{h.trim()&&!n.alias_names.includes(h.trim())&&r({...n,alias_names:[...n.alias_names,h.trim()]})},d=h=>{r({...n,alias_names:n.alias_names.filter((x,f)=>f!==h)})};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"qq_account",children:"QQ账号 *"}),e.jsx(ce,{id:"qq_account",type:"number",placeholder:"请输入机器人的QQ账号",value:n.qq_account||"",onChange:h=>r({...n,qq_account:Number(h.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人登录使用的QQ账号"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"nickname",children:"昵称 *"}),e.jsx(ce,{id:"nickname",placeholder:"请输入机器人的昵称",value:n.nickname,onChange:h=>r({...n,nickname:h.target.value})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的主要称呼名称"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{children:"别名"}),e.jsx("div",{className:"flex flex-wrap gap-2 mb-2",children:n.alias_names.map((h,x)=>e.jsxs(Je,{variant:"secondary",className:"gap-1",children:[h,e.jsx("button",{type:"button",onClick:()=>d(x),className:"ml-1 hover:text-destructive",children:e.jsx(on,{className:"h-3 w-3"})})]},x))}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{id:"alias_input",placeholder:"输入别名后按回车添加",onKeyPress:h=>{h.key==="Enter"&&(c(h.target.value),h.target.value="")}}),e.jsx(b,{type:"button",variant:"outline",onClick:()=>{const h=document.getElementById("alias_input");h&&(c(h.value),h.value="")},children:"添加"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的其他称呼,可以添加多个"})]})]})}function l0({config:n,onChange:r}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"personality",children:"人格特征 *"}),e.jsx(Ft,{id:"personality",placeholder:"描述机器人的人格特质和身份特征(建议120字以内)",value:n.personality,onChange:c=>r({...n,personality:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:是一个女大学生,现在在读大二,会刷贴吧"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"reply_style",children:"表达风格 *"}),e.jsx(Ft,{id:"reply_style",placeholder:"描述机器人说话的表达风格、表达习惯",value:n.reply_style,onChange:c=>r({...n,reply_style:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:回复平淡一些,简短一些,说中文,参考贴吧、知乎和微博的回复风格"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"interest",children:"兴趣 *"}),e.jsx(Ft,{id:"interest",placeholder:"描述机器人感兴趣的话题",value:n.interest,onChange:c=>r({...n,interest:c.target.value}),rows:2}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"会影响机器人对什么话题进行回复"})]}),e.jsx(xr,{}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"plan_style",children:"群聊说话规则 *"}),e.jsx(Ft,{id:"plan_style",placeholder:"机器人在群聊中的行为风格和规则",value:n.plan_style,onChange:c=>r({...n,plan_style:c.target.value}),rows:4}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在群聊中如何行动,例如回复频率、条件等"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"private_plan_style",children:"私聊说话规则 *"}),e.jsx(Ft,{id:"private_plan_style",placeholder:"机器人在私聊中的行为风格和规则",value:n.private_plan_style,onChange:c=>r({...n,private_plan_style:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在私聊中的行为方式"})]})]})}function n0({config:n,onChange:r}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{htmlFor:"emoji_chance",children:"表情包激活概率"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[(n.emoji_chance*100).toFixed(0),"%"]})]}),e.jsx(ce,{id:"emoji_chance",type:"range",min:"0",max:"1",step:"0.1",value:n.emoji_chance,onChange:c=>r({...n,emoji_chance:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人发送表情包的概率"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"max_reg_num",children:"最大表情包数量"}),e.jsx(ce,{id:"max_reg_num",type:"number",min:"1",max:"200",value:n.max_reg_num,onChange:c=>r({...n,max_reg_num:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人最多保存的表情包数量"})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(y,{htmlFor:"do_replace",children:"达到最大数量时替换"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"开启后会删除旧表情包,关闭则不再收集新表情包"})]}),e.jsx(Qe,{id:"do_replace",checked:n.do_replace,onCheckedChange:c=>r({...n,do_replace:c})})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),e.jsx(ce,{id:"check_interval",type:"number",min:"1",max:"120",value:n.check_interval,onChange:c=>r({...n,check_interval:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包注册、破损、删除的时间间隔"})]}),e.jsx(xr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(y,{htmlFor:"steal_emoji",children:"偷取表情包"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人将一些表情包据为己有"})]}),e.jsx(Qe,{id:"steal_emoji",checked:n.steal_emoji,onCheckedChange:c=>r({...n,steal_emoji:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(y,{htmlFor:"content_filtration",children:"启用表情包过滤"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"只保存符合要求的表情包"})]}),e.jsx(Qe,{id:"content_filtration",checked:n.content_filtration,onCheckedChange:c=>r({...n,content_filtration:c})})]}),n.content_filtration&&e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"filtration_prompt",children:"过滤要求"}),e.jsx(ce,{id:"filtration_prompt",placeholder:"例如:符合公序良俗",value:n.filtration_prompt,onChange:c=>r({...n,filtration_prompt:c.target.value})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"描述表情包应该符合的要求"})]})]})}function i0({config:n,onChange:r}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(y,{htmlFor:"enable_tool",children:"启用工具系统"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人使用各种工具增强功能"})]}),e.jsx(Qe,{id:"enable_tool",checked:n.enable_tool,onCheckedChange:c=>r({...n,enable_tool:c})})]}),e.jsx(xr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(y,{htmlFor:"enable_mood",children:"启用情绪系统"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"让机器人具有情绪变化能力"})]}),e.jsx(Qe,{id:"enable_mood",checked:n.enable_mood,onCheckedChange:c=>r({...n,enable_mood:c})})]}),n.enable_mood&&e.jsxs("div",{className:"ml-6 space-y-6 border-l-2 border-primary/20 pl-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"mood_update_threshold",children:"情绪更新阈值"}),e.jsx(ce,{id:"mood_update_threshold",type:"number",min:"0.1",max:"10",step:"0.1",value:n.mood_update_threshold||1,onChange:c=>r({...n,mood_update_threshold:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"值越高,情绪更新越慢"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"emotion_style",children:"情感特征"}),e.jsx(Ft,{id:"emotion_style",placeholder:"描述情绪的变化情况,例如:情绪较为稳定,但遭遇特定事件时起伏较大",value:n.emotion_style||"",onChange:c=>r({...n,emotion_style:c.target.value}),rows:2}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"影响机器人的情绪变化方式"})]})]}),e.jsx(xr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(y,{htmlFor:"all_global",children:"启用全局黑话模式"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人学习和使用群组黑话"})]}),e.jsx(Qe,{id:"all_global",checked:n.all_global,onCheckedChange:c=>r({...n,all_global:c})})]})]})}function r0({config:n,onChange:r}){const[c,d]=u.useState(!1);return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"mt-0.5",children:e.jsx("svg",{className:"h-5 w-5 text-blue-600 dark:text-blue-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),e.jsxs("div",{className:"flex-1 text-sm",children:[e.jsx("p",{className:"font-medium text-blue-900 dark:text-blue-100 mb-1",children:"关于硅基流动 (SiliconFlow)"}),e.jsx("p",{className:"text-blue-700 dark:text-blue-300 mb-2",children:"硅基流动提供了完整的模型覆盖,包括 DeepSeek V3、Qwen、视觉模型、语音识别和嵌入模型。 只需一个 API Key 即可使用麦麦的所有功能!"}),e.jsxs("a",{href:"https://cloud.siliconflow.cn",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-blue-600 dark:text-blue-400 hover:underline font-medium",children:["前往硅基流动获取 API Key",e.jsx(Qc,{className:"h-3 w-3"})]})]})]})}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(y,{htmlFor:"siliconflow_api_key",children:"SiliconFlow API Key *"}),e.jsxs("div",{className:"relative",children:[e.jsx(ce,{id:"siliconflow_api_key",type:c?"text":"password",placeholder:"sk-...",value:n.api_key,onChange:h=>r({api_key:h.target.value}),className:"font-mono pr-10"}),e.jsx(b,{type:"button",variant:"ghost",size:"sm",className:"absolute right-0 top-0 h-full px-3 hover:bg-transparent",onClick:()=>d(!c),children:c?e.jsx(or,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Ws,{className:"h-4 w-4 text-muted-foreground"})})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"请输入您的硅基流动 API 密钥。获取后,麦麦将自动配置所有必需的模型。"})]}),e.jsxs("div",{className:"rounded-lg bg-muted/50 p-4 text-sm space-y-2",children:[e.jsx("p",{className:"font-medium",children:"将自动配置以下模型:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 text-muted-foreground ml-2",children:[e.jsx("li",{children:"DeepSeek V3 - 主要对话和工具模型"}),e.jsx("li",{children:"Qwen3 30B - 高频小任务和工具调用"}),e.jsx("li",{children:"Qwen3 VL 30B - 图像识别"}),e.jsx("li",{children:"SenseVoice - 语音识别"}),e.jsx("li",{children:"BGE-M3 - 文本嵌入"}),e.jsx("li",{children:"知识库相关模型 (LPMM)"})]})]}),e.jsx("div",{className:"rounded-lg border border-amber-200 dark:border-amber-800 bg-amber-50 dark:bg-amber-950/30 p-4",children:e.jsxs("p",{className:"text-sm text-amber-900 dark:text-amber-100",children:[e.jsx("span",{className:"font-medium",children:"💡 提示:"}),'完成向导后,您可以在"系统设置 → 模型配置"中添加更多 API 提供商和模型。']})})]})}async function c0(){const n=await Te("/api/webui/config/bot",{method:"GET",headers:Rt()});if(!n.ok)throw new Error("读取Bot配置失败");const c=(await n.json()).config.bot||{};return{qq_account:c.qq_account||0,nickname:c.nickname||"",alias_names:c.alias_names||[]}}async function o0(){const n=await Te("/api/webui/config/bot",{method:"GET",headers:Rt()});if(!n.ok)throw new Error("读取人格配置失败");const c=(await n.json()).config.personality||{};return{personality:c.personality||"",reply_style:c.reply_style||"",interest:c.interest||"",plan_style:c.plan_style||"",private_plan_style:c.private_plan_style||""}}async function d0(){const n=await Te("/api/webui/config/bot",{method:"GET",headers:Rt()});if(!n.ok)throw new Error("读取表情包配置失败");const c=(await n.json()).config.emoji||{};return{emoji_chance:c.emoji_chance??.4,max_reg_num:c.max_reg_num??40,do_replace:c.do_replace??!0,check_interval:c.check_interval??10,steal_emoji:c.steal_emoji??!0,content_filtration:c.content_filtration??!1,filtration_prompt:c.filtration_prompt||""}}async function u0(){const n=await Te("/api/webui/config/bot",{method:"GET",headers:Rt()});if(!n.ok)throw new Error("读取其他配置失败");const c=(await n.json()).config,d=c.tool||{},h=c.mood||{},x=c.jargon||{};return{enable_tool:d.enable_tool??!0,enable_mood:h.enable_mood??!1,mood_update_threshold:h.mood_update_threshold,emotion_style:h.emotion_style,all_global:x.all_global??!0}}async function m0(){const n=await Te("/api/webui/config/model",{method:"GET",headers:Rt()});if(!n.ok)throw new Error("读取模型配置失败");return{api_key:((await n.json()).config.api_providers||[]).find(x=>x.name==="SiliconFlow")?.api_key||""}}async function h0(n){const r=await Te("/api/webui/config/bot/section/bot",{method:"POST",headers:Rt(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"保存Bot基础配置失败")}return await r.json()}async function x0(n){const r=await Te("/api/webui/config/bot/section/personality",{method:"POST",headers:Rt(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"保存人格配置失败")}return await r.json()}async function f0(n){const r=await Te("/api/webui/config/bot/section/emoji",{method:"POST",headers:Rt(),body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"保存表情包配置失败")}return await r.json()}async function p0(n){const r=[];r.push(Te("/api/webui/config/bot/section/tool",{method:"POST",headers:Rt(),body:JSON.stringify({enable_tool:n.enable_tool})})),r.push(Te("/api/webui/config/bot/section/jargon",{method:"POST",headers:Rt(),body:JSON.stringify({all_global:n.all_global})}));const c={enable_mood:n.enable_mood};n.enable_mood&&(c.mood_update_threshold=n.mood_update_threshold||1,c.emotion_style=n.emotion_style||""),r.push(Te("/api/webui/config/bot/section/mood",{method:"POST",headers:Rt(),body:JSON.stringify(c)}));const d=await Promise.all(r);for(const h of d)if(!h.ok){const x=await h.json();throw new Error(x.detail||"保存其他配置失败")}return{success:!0}}async function g0(n){const r=await Te("/api/webui/config/model",{method:"GET",headers:Rt()});if(!r.ok)throw new Error("读取模型配置失败");const d=(await r.json()).config,h=d.api_providers||[],x=h.findIndex(p=>p.name==="SiliconFlow");x>=0?h[x]={...h[x],api_key:n.api_key}:h.push({name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",api_key:n.api_key,client_type:"openai",max_retry:3,timeout:120,retry_interval:5});const f={...d,api_providers:h},j=await Te("/api/webui/config/model",{method:"POST",headers:Rt(),body:JSON.stringify(f)});if(!j.ok){const p=await j.json();throw new Error(p.detail||"保存模型配置失败")}return await j.json()}async function tp(){const n=localStorage.getItem("access-token"),r=await Te("/api/webui/setup/complete",{method:"POST",headers:{Authorization:`Bearer ${n}`}});if(!r.ok){const c=await r.json();throw new Error(c.message||"标记配置完成失败")}return await r.json()}async function so(){const n=await Te("/api/webui/system/restart",{method:"POST",headers:Rt()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"重启失败")}return await n.json()}async function j0(){const n=await Te("/api/webui/system/status",{method:"GET",headers:Rt()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取状态失败")}return await n.json()}function v0(){const n=fa(),{toast:r}=Xt(),[c,d]=u.useState(0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,N]=u.useState(!0),[v,C]=u.useState({qq_account:0,nickname:"",alias_names:[]}),[S,w]=u.useState({personality:"是一个女大学生,现在在读大二,会刷贴吧。",reply_style:"请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景。可以参考贴吧,知乎和微博的回复风格。",interest:"对技术相关话题,游戏和动漫相关话题感兴趣,也对日常话题感兴趣,不喜欢太过沉重严肃的话题",plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 -2.如果相同的内容已经被执行,请不要重复执行 -3.请控制你的发言频率,不要太过频繁的发言 -4.如果有人对你感到厌烦,请减少回复 -5.如果有人对你进行攻击,或者情绪激动,请你以合适的方法应对`,private_plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 -2.如果相同的内容已经被执行,请不要重复执行 -3.某句话如果已经被回复过,不要重复回复`}),[L,F]=u.useState({emoji_chance:.4,max_reg_num:40,do_replace:!0,check_interval:10,steal_emoji:!0,content_filtration:!1,filtration_prompt:"符合公序良俗"}),[B,O]=u.useState({enable_tool:!0,enable_mood:!1,mood_update_threshold:1,emotion_style:"情绪较为稳定,但遇遇特定事件的时候起伏较大",all_global:!0}),[K,H]=u.useState({api_key:""}),[z,V]=u.useState(!1),[Y,E]=u.useState(""),R=[{id:"bot-basic",title:"Bot基础",description:"配置机器人的基本信息",icon:ar},{id:"personality",title:"人格配置",description:"定义机器人的性格和说话风格",icon:Ic},{id:"emoji",title:"表情包",description:"配置表情包相关设置",icon:Bu},{id:"other",title:"其他设置",description:"工具、情绪系统等配置",icon:ai},{id:"siliconflow",title:"API配置",description:"配置硅基流动API密钥",icon:ng}],ne=(c+1)/R.length*100;u.useEffect(()=>{(async()=>{try{N(!0);const[X,T,te,_,me]=await Promise.all([c0(),o0(),d0(),u0(),m0()]);C(X),w(T),F(te),O(_),H(me)}catch(X){r({title:"加载配置失败",description:X instanceof Error?X.message:"无法加载现有配置,将使用默认值",variant:"destructive"})}finally{N(!1)}})()},[r]);const fe=async()=>{j(!0);try{switch(c){case 0:await h0(v);break;case 1:await x0(S);break;case 2:await f0(L);break;case 3:await p0(B);break;case 4:await g0(K);break}return r({title:"保存成功",description:`${R[c].title}配置已保存`}),!0}catch(A){return r({title:"保存失败",description:A instanceof Error?A.message:"未知错误",variant:"destructive"}),!1}finally{j(!1)}},Ce=async()=>{await fe()&&c{c>0&&d(c-1)},pe=async()=>{x(!0),V(!0);try{if(E("正在保存API配置..."),!await fe()){x(!1),V(!1);return}E("正在完成初始化..."),await tp(),E("正在重启麦麦..."),await so(),r({title:"配置完成",description:"麦麦正在重启以应用新配置..."}),E("等待麦麦重启完成...");const X=60;let T=0,te=!1;for(;TsetTimeout(_,1e3));try{(await j0()).running&&(te=!0,E("重启成功!正在跳转..."))}catch{T++}}if(!te)throw new Error("重启超时,请手动检查麦麦状态");setTimeout(()=>{n({to:"/"})},1e3)}catch(A){V(!1),r({title:"配置失败",description:A instanceof Error?A.message:"未知错误",variant:"destructive"})}finally{x(!1)}},Ne=async()=>{try{await tp(),n({to:"/"})}catch(A){r({title:"跳过失败",description:A instanceof Error?A.message:"未知错误",variant:"destructive"})}},be=()=>{switch(c){case 0:return e.jsx(a0,{config:v,onChange:C});case 1:return e.jsx(l0,{config:S,onChange:w});case 2:return e.jsx(n0,{config:L,onChange:F});case 3:return e.jsx(i0,{config:B,onChange:O});case 4:return e.jsx(r0,{config:K,onChange:H});default:return null}};return e.jsxs("div",{className:"relative flex min-h-screen flex-col items-center justify-center overflow-hidden bg-gradient-to-br from-primary/5 via-background to-secondary/5 p-4 md:p-6",children:[z&&e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm",children:e.jsxs("div",{className:"mx-auto flex max-w-md flex-col items-center space-y-6 rounded-lg border bg-card p-8 text-center shadow-lg",children:[e.jsx("div",{className:"flex h-20 w-20 items-center justify-center rounded-full bg-primary/10",children:e.jsx(Ss,{className:"h-10 w-10 animate-spin text-primary"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),e.jsx("p",{className:"text-muted-foreground",children:Y})]}),e.jsx("div",{className:"w-full",children:e.jsx("div",{className:"h-2 w-full overflow-hidden rounded-full bg-secondary",children:e.jsx("div",{className:"h-full w-full animate-pulse bg-primary",style:{animation:"pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite"}})})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"请稍候,这可能需要一分钟..."})]})}),e.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[e.jsx("div",{className:"absolute left-1/4 top-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-primary/5 blur-3xl"}),e.jsx("div",{className:"absolute right-1/4 bottom-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-secondary/5 blur-3xl"})]}),p?e.jsxs("div",{className:"relative z-10 text-center",children:[e.jsx("div",{className:"mx-auto mb-4 flex h-16 w-16 items-center justify-center",children:e.jsx("div",{className:"h-12 w-12 animate-spin rounded-full border-4 border-primary border-t-transparent"})}),e.jsx("p",{className:"text-lg font-medium",children:"加载配置中..."}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"正在读取现有配置"})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"relative z-10 w-full max-w-4xl",children:[e.jsxs("div",{className:"mb-6 md:mb-8 text-center",children:[e.jsx("div",{className:"mx-auto mb-4 flex h-12 w-12 md:h-16 md:w-16 items-center justify-center rounded-2xl bg-primary/10",children:e.jsx(hy,{className:"h-6 w-6 md:h-8 md:w-8 text-primary",strokeWidth:2,fill:"none"})}),e.jsx("h1",{className:"mb-2 text-2xl md:text-3xl font-bold",children:"首次配置向导"}),e.jsxs("p",{className:"text-sm md:text-base text-muted-foreground",children:["让我们一起完成 ",Fu," 的初始配置"]})]}),e.jsxs("div",{className:"mb-6 md:mb-8",children:[e.jsxs("div",{className:"mb-2 flex items-center justify-between text-xs md:text-sm",children:[e.jsxs("span",{className:"text-muted-foreground",children:["步骤 ",c+1," / ",R.length]}),e.jsxs("span",{className:"font-medium text-primary",children:[Math.round(ne),"%"]})]}),e.jsx(yr,{value:ne,className:"h-2"})]}),e.jsx("div",{className:"mb-6 md:mb-8 flex justify-between",children:R.map((A,X)=>{const T=A.icon;return e.jsxs("div",{className:Q("flex flex-1 flex-col items-center gap-1 md:gap-2",Xn({to:"/"}),className:"gap-2 w-full sm:w-auto",children:[e.jsx(to,{className:"h-4 w-4"}),"返回首页"]}),e.jsxs(b,{size:"lg",variant:"outline",onClick:()=>window.history.back(),className:"gap-2 w-full sm:w-auto",children:[e.jsx(ti,{className:"h-4 w-4"}),"返回上一页"]})]}),e.jsx("div",{className:"mt-12 pt-8 border-t border-border",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:"如果您认为这是一个错误,请联系系统管理员"})})]})})}const qe=Jb,Ge=Ib,Be=u.forwardRef(({className:n,children:r,...c},d)=>e.jsxs(Gp,{ref:d,className:Q("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",n),...c,children:[r,e.jsx(Qb,{asChild:!0,children:e.jsx(Rl,{className:"h-4 w-4 opacity-50"})})]}));Be.displayName=Gp.displayName;const _g=u.forwardRef(({className:n,...r},c)=>e.jsx(Vp,{ref:c,className:Q("flex cursor-default items-center justify-center py-1",n),...r,children:e.jsx(ur,{className:"h-4 w-4"})}));_g.displayName=Vp.displayName;const Sg=u.forwardRef(({className:n,...r},c)=>e.jsx(Fp,{ref:c,className:Q("flex cursor-default items-center justify-center py-1",n),...r,children:e.jsx(Rl,{className:"h-4 w-4"})}));Sg.displayName=Fp.displayName;const He=u.forwardRef(({className:n,children:r,position:c="popper",...d},h)=>e.jsx(Yb,{children:e.jsxs($p,{ref:h,className:Q("relative z-[100] max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-hidden rounded-md border border-border bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",c==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",n),position:c,...d,children:[e.jsx(_g,{}),e.jsx(Xb,{className:Q("p-1",c==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:r}),e.jsx(Sg,{})]})}));He.displayName=$p.displayName;const b0=u.forwardRef(({className:n,...r},c)=>e.jsx(Qp,{ref:c,className:Q("px-2 py-1.5 text-sm font-semibold",n),...r}));b0.displayName=Qp.displayName;const ie=u.forwardRef(({className:n,children:r,...c},d)=>e.jsxs(Yp,{ref:d,className:Q("relative flex w-full cursor-default select-none items-center rounded-sm py-2 pl-2 pr-8 text-sm outline-none bg-white dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800 focus:bg-gray-100 dark:focus:bg-gray-800 data-[disabled]:pointer-events-none data-[disabled]:opacity-50",n),...c,children:[e.jsx("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(Kb,{children:e.jsx(Na,{className:"h-4 w-4"})})}),e.jsx(Zb,{children:r})]}));ie.displayName=Yp.displayName;const y0=u.forwardRef(({className:n,...r},c)=>e.jsx(Xp,{ref:c,className:Q("-mx-1 my-1 h-px bg-muted",n),...r}));y0.displayName=Xp.displayName;const Ua=kb,Ba=Tb,_a=u.forwardRef(({className:n,align:r="center",sideOffset:c=4,...d},h)=>e.jsx(Cb,{children:e.jsx(Mp,{ref:h,align:r,sideOffset:c,className:Q("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]",n),...d})}));_a.displayName=Mp.displayName;const Ul="/api/webui/config";async function sp(){const r=await(await Te(`${Ul}/bot`)).json();if(!r.success)throw new Error("获取配置数据失败");return r.config}async function ei(){const r=await(await Te(`${Ul}/model`)).json();if(!r.success)throw new Error("获取模型配置数据失败");return r.config}async function ap(n){const c=await(await Te(`${Ul}/bot`,{method:"POST",body:JSON.stringify(n)})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function N0(){const r=await(await Te(`${Ul}/bot/raw`)).json();if(!r.success)throw new Error("获取配置源代码失败");return r.content}async function w0(n){const c=await(await Te(`${Ul}/bot/raw`,{method:"POST",body:JSON.stringify({raw_content:n})})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function eo(n){const c=await(await Te(`${Ul}/model`,{method:"POST",body:JSON.stringify(n)})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function _0(n,r){const d=await(await Te(`${Ul}/bot/section/${n}`,{method:"POST",body:JSON.stringify(r)})).json();if(!d.success)throw new Error(d.message||`保存配置节 ${n} 失败`)}async function Ou(n,r){const d=await(await Te(`${Ul}/model/section/${n}`,{method:"POST",body:JSON.stringify(r)})).json();if(!d.success)throw new Error(d.message||`保存配置节 ${n} 失败`)}async function S0(n,r="openai",c="/models"){const d=new URLSearchParams({provider_name:n,parser:r,endpoint:c}),h=await Te(`/api/webui/models/list?${d}`);if(!h.ok){const f=await h.json().catch(()=>({}));throw new Error(f.detail||`获取模型列表失败 (${h.status})`)}const x=await h.json();if(!x.success)throw new Error("获取模型列表失败");return x.models}async function C0(n){const r=new URLSearchParams({provider_name:n}),c=await Te(`/api/webui/models/test-connection-by-name?${r}`,{method:"POST"});if(!c.ok){const d=await c.json().catch(()=>({}));throw new Error(d.detail||`测试连接失败 (${c.status})`)}return await c.json()}const k0=si("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"}}),cl=u.forwardRef(({className:n,variant:r,...c},d)=>e.jsx("div",{ref:d,role:"alert",className:Q(k0({variant:r}),n),...c}));cl.displayName="Alert";const T0=u.forwardRef(({className:n,...r},c)=>e.jsx("h5",{ref:c,className:Q("mb-1 font-medium leading-none tracking-tight",n),...r}));T0.displayName="AlertTitle";const ol=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{ref:c,className:Q("text-sm [&_p]:leading-relaxed",n),...r}));ol.displayName="AlertDescription";function Yu({onRestartComplete:n,onRestartFailed:r}){const[c,d]=u.useState(0),[h,x]=u.useState("restarting"),[f,j]=u.useState(0),[p,N]=u.useState(0);u.useEffect(()=>{const S=setInterval(()=>{d(F=>F>=90?F:F+1)},200),w=setInterval(()=>{j(F=>F+1)},1e3),L=setTimeout(()=>{x("checking"),v()},3e3);return()=>{clearInterval(S),clearInterval(w),clearTimeout(L)}},[]);const v=()=>{const w=async()=>{try{if(N(F=>F+1),(await fetch("/api/webui/system/status",{method:"GET",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(3e3)})).ok)d(100),x("success"),setTimeout(()=>{n?.()},1500);else throw new Error("Status check failed")}catch{p<60?setTimeout(w,2e3):(x("failed"),r?.())}};w()},C=S=>{const w=Math.floor(S/60),L=S%60;return`${w}:${L.toString().padStart(2,"0")}`};return e.jsx("div",{className:"fixed inset-0 bg-background/95 backdrop-blur-sm z-50 flex items-center justify-center",children:e.jsxs("div",{className:"max-w-md w-full mx-4 space-y-8",children:[e.jsxs("div",{className:"flex flex-col items-center space-y-4",children:[h==="restarting"&&e.jsxs(e.Fragment,{children:[e.jsx(Ss,{className:"h-16 w-16 text-primary animate-spin"}),e.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"请稍候,麦麦正在重启中..."})]}),h==="checking"&&e.jsxs(e.Fragment,{children:[e.jsx(Ss,{className:"h-16 w-16 text-primary animate-spin"}),e.jsx("h2",{className:"text-2xl font-bold",children:"检查服务状态"}),e.jsxs("p",{className:"text-muted-foreground text-center",children:["等待服务恢复... (尝试 ",p,"/60)"]})]}),h==="success"&&e.jsxs(e.Fragment,{children:[e.jsx(ha,{className:"h-16 w-16 text-green-500"}),e.jsx("h2",{className:"text-2xl font-bold",children:"重启成功"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"正在跳转到登录页面..."})]}),h==="failed"&&e.jsxs(e.Fragment,{children:[e.jsx(Oa,{className:"h-16 w-16 text-destructive"}),e.jsx("h2",{className:"text-2xl font-bold",children:"重启超时"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"服务未能在预期时间内恢复,请手动检查或刷新页面"})]})]}),h!=="failed"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(yr,{value:c,className:"h-2"}),e.jsxs("div",{className:"flex justify-between text-sm text-muted-foreground",children:[e.jsxs("span",{children:[c,"%"]}),e.jsxs("span",{children:["已用时: ",C(f)]})]})]}),e.jsx("div",{className:"bg-muted/50 rounded-lg p-4 space-y-2",children:e.jsxs("p",{className:"text-sm text-muted-foreground",children:[h==="restarting"&&"🔄 配置已保存,正在重启主程序...",h==="checking"&&"⏳ 正在等待服务恢复,请勿关闭页面...",h==="success"&&"✅ 配置已生效,服务运行正常",h==="failed"&&"⚠️ 如果长时间无响应,请尝试手动重启"]})}),h==="failed"&&e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{onClick:()=>window.location.reload(),className:"flex-1 px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary/90",children:"刷新页面"}),e.jsx("button",{onClick:()=>{x("checking"),N(0),v()},className:"flex-1 px-4 py-2 bg-secondary text-secondary-foreground rounded-md hover:bg-secondary/90",children:"重试检测"})]})]})})}const E0={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,r){let c;if(!r.inString&&(c=n.match(/^('''|"""|'|")/))&&(r.stringType=c[0],r.inString=!0),n.sol()&&!r.inString&&r.inArray===0&&(r.lhs=!0),r.inString){for(;r.inString;)if(n.match(r.stringType))r.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return r.lhs?"property":"string"}else{if(r.inArray&&n.peek()==="]")return n.next(),r.inArray--,"bracket";if(r.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(r.lhs&&n.eatWhile(function(d){return d!="="&&d!=" "}))return"property";if(r.lhs&&n.peek()==="=")return n.next(),r.lhs=!1,null;if(!r.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!r.lhs&&(n.match("true")||n.match("false")))return"atom";if(!r.lhs&&n.peek()==="[")return r.inArray++,n.next(),"bracket";if(!r.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}},z0={python:[By()],json:[Hy(),qy()],toml:[Uy.define(E0)],text:[]};function A0({value:n,onChange:r,language:c="text",readOnly:d=!1,height:h="400px",minHeight:x,maxHeight:f,placeholder:j,theme:p="dark",className:N=""}){const[v,C]=u.useState(!1);if(u.useEffect(()=>{C(!0)},[]),!v)return e.jsx("div",{className:`rounded-md border bg-muted animate-pulse ${N}`,style:{height:h,minHeight:x,maxHeight:f}});const S=[...z0[c]||[],Qf.lineWrapping];return d&&S.push(Qf.editable.of(!1)),e.jsx("div",{className:`rounded-md overflow-hidden border ${N}`,children:e.jsx(Gy,{value:n,height:h,minHeight:x,maxHeight:f,theme:p==="dark"?Vy:void 0,extensions:S,onChange:r,placeholder:j,basicSetup:{lineNumbers:!0,highlightActiveLineGutter:!0,highlightSpecialChars:!0,history:!0,foldGutter:!0,drawSelection:!0,dropCursor:!0,allowMultipleSelections:!0,indentOnInput:!0,syntaxHighlighting:!0,bracketMatching:!0,closeBrackets:!0,autocompletion:!0,rectangularSelection:!0,crosshairCursor:!0,highlightActiveLine:!0,highlightSelectionMatches:!0,closeBracketsKeymap:!0,defaultKeymap:!0,searchKeymap:!0,historyKeymap:!0,foldKeymap:!0,completionKeymap:!0,lintKeymap:!0}})})}function M0(){const[n,r]=u.useState(!0),[c,d]=u.useState(!1),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,N]=u.useState(!1),[v,C]=u.useState(!1),[S,w]=u.useState("visual"),[L,F]=u.useState(""),[B,O]=u.useState(!1),{toast:K}=Xt(),[H,z]=u.useState(null),[V,Y]=u.useState(null),[E,R]=u.useState(null),[ne,fe]=u.useState(null),[Ce,we]=u.useState(null),[pe,Ne]=u.useState(null),[be,A]=u.useState(null),[X,T]=u.useState(null),[te,_]=u.useState(null),[me,oe]=u.useState(null),[ae,xe]=u.useState(null),[ve,de]=u.useState(null),[G,W]=u.useState(null),[U,ee]=u.useState(null),[Se,Me]=u.useState(null),[tt,Xe]=u.useState(null),[Ut,Bt]=u.useState(null),[re,ke]=u.useState(null),Pe=u.useRef(null),Fe=u.useRef(!0),ts=u.useRef({}),As=u.useCallback(async()=>{try{const _e=await N0();F(_e),O(!1)}catch(_e){K({variant:"destructive",title:"加载失败",description:_e instanceof Error?_e.message:"加载源代码失败"})}},[K]),js=u.useCallback(async()=>{try{r(!0);const _e=await sp();ts.current=_e,z(_e.bot),Y(_e.personality);const je=_e.chat;je.talk_value_rules||(je.talk_value_rules=[]),R(je),fe(_e.expression),we(_e.emoji),Ne(_e.memory),A(_e.tool),T(_e.mood),_(_e.voice),oe(_e.lpmm_knowledge),xe(_e.keyword_reaction),de(_e.response_post_process),W(_e.chinese_typo),ee(_e.response_splitter),Me(_e.log),Xe(_e.debug),Bt(_e.maim_message),ke(_e.telemetry),j(!1),Fe.current=!1,await As()}catch(_e){console.error("加载配置失败:",_e),K({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}finally{r(!1)}},[K,As]);u.useEffect(()=>{js()},[js]);const Ke=u.useCallback(async(_e,je)=>{if(!Fe.current)try{x(!0),await _0(_e,je),j(!1)}catch(yt){console.error(`自动保存 ${_e} 失败:`,yt),j(!0)}finally{x(!1)}},[]),D=u.useCallback((_e,je)=>{Fe.current||(j(!0),Pe.current&&clearTimeout(Pe.current),Pe.current=setTimeout(()=>{Ke(_e,je)},2e3))},[Ke]);u.useEffect(()=>{H&&!Fe.current&&D("bot",H)},[H,D]),u.useEffect(()=>{V&&!Fe.current&&D("personality",V)},[V,D]),u.useEffect(()=>{E&&!Fe.current&&D("chat",E)},[E,D]),u.useEffect(()=>{ne&&!Fe.current&&D("expression",ne)},[ne,D]),u.useEffect(()=>{Ce&&!Fe.current&&D("emoji",Ce)},[Ce,D]),u.useEffect(()=>{pe&&!Fe.current&&D("memory",pe)},[pe,D]),u.useEffect(()=>{be&&!Fe.current&&D("tool",be)},[be,D]),u.useEffect(()=>{X&&!Fe.current&&D("mood",X)},[X,D]),u.useEffect(()=>{te&&!Fe.current&&D("voice",te)},[te,D]),u.useEffect(()=>{me&&!Fe.current&&D("lpmm_knowledge",me)},[me,D]),u.useEffect(()=>{ae&&!Fe.current&&D("keyword_reaction",ae)},[ae,D]),u.useEffect(()=>{ve&&!Fe.current&&D("response_post_process",ve)},[ve,D]),u.useEffect(()=>{G&&!Fe.current&&D("chinese_typo",G)},[G,D]),u.useEffect(()=>{U&&!Fe.current&&D("response_splitter",U)},[U,D]),u.useEffect(()=>{Se&&!Fe.current&&D("log",Se)},[Se,D]),u.useEffect(()=>{tt&&!Fe.current&&D("debug",tt)},[tt,D]),u.useEffect(()=>{Ut&&!Fe.current&&D("maim_message",Ut)},[Ut,D]),u.useEffect(()=>{re&&!Fe.current&&D("telemetry",re)},[re,D]);const De=async()=>{try{d(!0),await w0(L),j(!1),O(!1),K({title:"保存成功",description:"配置已保存"}),await js()}catch(_e){O(!0),K({variant:"destructive",title:"保存失败",description:_e instanceof Error?_e.message:"保存配置失败"})}finally{d(!1)}},ze=async _e=>{if(f){K({variant:"destructive",title:"切换失败",description:"请先保存当前更改"});return}if(w(_e),_e==="source")await As();else try{const je=await sp();ts.current=je,z(je.bot),Y(je.personality);const yt=je.chat;yt.talk_value_rules||(yt.talk_value_rules=[]),R(yt),fe(je.expression),we(je.emoji),Ne(je.memory),A(je.tool),T(je.mood),_(je.voice),oe(je.lpmm_knowledge),xe(je.keyword_reaction),de(je.response_post_process),W(je.chinese_typo),ee(je.response_splitter),Me(je.log),Xe(je.debug),Bt(je.maim_message),ke(je.telemetry),j(!1)}catch(je){console.error("加载配置失败:",je),K({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}},Ve=async()=>{try{d(!0),Pe.current&&clearTimeout(Pe.current);const _e={...ts.current,bot:H,personality:V,chat:E,expression:ne,emoji:Ce,memory:pe,tool:be,mood:X,voice:te,lpmm_knowledge:me,keyword_reaction:ae,response_post_process:ve,chinese_typo:G,response_splitter:U,log:Se,debug:tt,maim_message:Ut,telemetry:re};await ap(_e),j(!1),K({title:"保存成功",description:"麦麦主程序配置已保存"})}catch(_e){console.error("保存配置失败:",_e),K({title:"保存失败",description:_e.message,variant:"destructive"})}finally{d(!1)}},At=async()=>{try{N(!0),so().catch(()=>{}),C(!0)}catch(_e){console.error("重启失败:",_e),C(!1),K({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),N(!1)}},We=async()=>{try{d(!0),Pe.current&&clearTimeout(Pe.current);const _e={...ts.current,bot:H,personality:V,chat:E,expression:ne,emoji:Ce,memory:pe,tool:be,mood:X,voice:te,lpmm_knowledge:me,keyword_reaction:ae,response_post_process:ve,chinese_typo:G,response_splitter:U,log:Se,debug:tt,maim_message:Ut,telemetry:re};await ap(_e),j(!1),K({title:"保存成功",description:"配置已保存,即将重启麦麦..."}),await new Promise(je=>setTimeout(je,500)),await At()}catch(_e){console.error("保存失败:",_e),K({title:"保存失败",description:_e.message,variant:"destructive"})}finally{d(!1)}},ss=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},gt=()=>{C(!1),N(!1),K({title:"重启失败",description:"服务器未能在预期时间内恢复,请手动检查",variant:"destructive"})};return n?e.jsx(st,{className:"h-full",children:e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):e.jsx(st,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:gap-4",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("h1",{className:"text-xl sm:text-2xl md:text-3xl font-bold",children:"麦麦主程序配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 text-xs sm:text-sm",children:"管理麦麦的核心功能和行为设置"})]}),e.jsxs("div",{className:"flex gap-2 flex-shrink-0",children:[e.jsxs(b,{onClick:S==="visual"?Ve:De,disabled:c||h||!f||p,size:"sm",variant:"outline",className:"w-20 sm:w-24",children:[e.jsx(jr,{className:"h-4 w-4 flex-shrink-0",strokeWidth:2,fill:"none"}),e.jsx("span",{className:"ml-1 truncate text-xs sm:text-sm",children:c?"保存中":h?"自动":f?"保存":"已保存"})]}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsxs(b,{disabled:c||h||p,size:"sm",className:"w-20 sm:w-28",children:[e.jsx(gr,{className:"h-4 w-4 flex-shrink-0"}),e.jsx("span",{className:"ml-1 truncate text-xs sm:text-sm",children:p?"重启中":f?"保存重启":"重启"})]})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认重启麦麦?"}),e.jsx(xt,{asChild:!0,children:e.jsx("div",{children:e.jsx("p",{children:f?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"})})})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:f?We:At,children:f?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsx("div",{className:"flex",children:e.jsx(La,{value:S,onValueChange:_e=>ze(_e),className:"w-full",children:e.jsxs(wa,{className:"h-8 sm:h-9 w-full grid grid-cols-2",children:[e.jsxs(it,{value:"visual",className:"text-xs sm:text-sm",children:[e.jsx(py,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"可视化编辑"]}),e.jsxs(it,{value:"source",className:"text-xs sm:text-sm",children:[e.jsx(gy,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"源代码编辑"]})]})})})]}),e.jsxs(cl,{children:[e.jsx(Ra,{className:"h-4 w-4"}),e.jsxs(ol,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),S==="source"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs(cl,{children:[e.jsx(Ra,{className:"h-4 w-4"}),e.jsxs(ol,{children:[e.jsx("strong",{children:"源代码模式(高级功能):"}),"直接编辑 TOML 配置文件。此功能仅适用于熟悉 TOML 语法的高级用户。保存时会在后端验证格式,只有格式完全正确才能保存。",B&&e.jsx("span",{className:"text-destructive font-semibold ml-2",children:"⚠️ 上次保存失败,请检查 TOML 格式"})]})]}),e.jsx(A0,{value:L,onChange:_e=>{F(_e),j(!0),B&&O(!1)},language:"toml",theme:"dark",height:"calc(100vh - 280px)",minHeight:"500px",placeholder:"TOML 配置内容"})]}),S==="visual"&&e.jsx(e.Fragment,{children:e.jsxs(La,{defaultValue:"bot",className:"w-full",children:[e.jsxs(wa,{className:"flex flex-wrap h-auto gap-1 p-1 sm:grid sm:grid-cols-5 lg:grid-cols-10",children:[e.jsx(it,{value:"bot",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"基本信息"}),e.jsx(it,{value:"personality",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"人格"}),e.jsx(it,{value:"chat",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"聊天"}),e.jsx(it,{value:"expression",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"表达"}),e.jsx(it,{value:"features",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"功能"}),e.jsx(it,{value:"processing",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"处理"}),e.jsx(it,{value:"mood",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"情绪"}),e.jsx(it,{value:"voice",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"语音"}),e.jsx(it,{value:"lpmm",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"知识库"}),e.jsx(it,{value:"other",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"其他"})]}),e.jsx(zt,{value:"bot",className:"space-y-4",children:H&&e.jsx(D0,{config:H,onChange:z})}),e.jsx(zt,{value:"personality",className:"space-y-4",children:V&&e.jsx(O0,{config:V,onChange:Y})}),e.jsx(zt,{value:"chat",className:"space-y-4",children:E&&e.jsx(R0,{config:E,onChange:R})}),e.jsx(zt,{value:"expression",className:"space-y-4",children:ne&&e.jsx(U0,{config:ne,onChange:fe})}),e.jsx(zt,{value:"features",className:"space-y-4",children:Ce&&pe&&be&&e.jsx(B0,{emojiConfig:Ce,memoryConfig:pe,toolConfig:be,onEmojiChange:we,onMemoryChange:Ne,onToolChange:A})}),e.jsx(zt,{value:"processing",className:"space-y-4",children:ae&&ve&&G&&U&&e.jsx(H0,{keywordReactionConfig:ae,responsePostProcessConfig:ve,chineseTypoConfig:G,responseSplitterConfig:U,onKeywordReactionChange:xe,onResponsePostProcessChange:de,onChineseTypoChange:W,onResponseSplitterChange:ee})}),e.jsx(zt,{value:"mood",className:"space-y-4",children:X&&e.jsx(q0,{config:X,onChange:T})}),e.jsx(zt,{value:"voice",className:"space-y-4",children:te&&e.jsx(G0,{config:te,onChange:_})}),e.jsx(zt,{value:"lpmm",className:"space-y-4",children:me&&e.jsx(V0,{config:me,onChange:oe})}),e.jsxs(zt,{value:"other",className:"space-y-4",children:[Se&&e.jsx(F0,{config:Se,onChange:Me}),tt&&e.jsx($0,{config:tt,onChange:Xe}),Ut&&e.jsx(Q0,{config:Ut,onChange:Bt}),re&&e.jsx(Y0,{config:re,onChange:ke})]})]})}),v&&e.jsx(Yu,{onRestartComplete:ss,onRestartFailed:gt})]})})}function D0({config:n,onChange:r}){const c=()=>{r({...n,platforms:[...n.platforms,""]})},d=p=>{r({...n,platforms:n.platforms.filter((N,v)=>v!==p)})},h=(p,N)=>{const v=[...n.platforms];v[p]=N,r({...n,platforms:v})},x=()=>{r({...n,alias_names:[...n.alias_names,""]})},f=p=>{r({...n,alias_names:n.alias_names.filter((N,v)=>v!==p)})},j=(p,N)=>{const v=[...n.alias_names];v[p]=N,r({...n,alias_names:v})};return e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"基本信息"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"platform",children:"平台"}),e.jsx(ce,{id:"platform",value:n.platform,onChange:p=>r({...n,platform:p.target.value}),placeholder:"qq"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"qq_account",children:"QQ账号"}),e.jsx(ce,{id:"qq_account",value:n.qq_account,onChange:p=>r({...n,qq_account:p.target.value}),placeholder:"123456789"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"nickname",children:"昵称"}),e.jsx(ce,{id:"nickname",value:n.nickname,onChange:p=>r({...n,nickname:p.target.value}),placeholder:"麦麦"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{children:"其他平台账号"}),e.jsxs(b,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(hs,{className:"h-4 w-4 mr-1"}),"添加"]})]}),e.jsxs("div",{className:"space-y-2",children:[n.platforms.map((p,N)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{value:p,onChange:v=>h(N,v.target.value),placeholder:"wx:114514"}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(at,{className:"h-4 w-4"})})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:['确定要删除平台账号 "',p||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>d(N),children:"删除"})]})]})]})]},N)),n.platforms.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无其他平台账号"})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{children:"别名"}),e.jsxs(b,{onClick:x,size:"sm",variant:"outline",children:[e.jsx(hs,{className:"h-4 w-4 mr-1"}),"添加"]})]}),e.jsxs("div",{className:"space-y-2",children:[n.alias_names.map((p,N)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{value:p,onChange:v=>j(N,v.target.value),placeholder:"小麦"}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(at,{className:"h-4 w-4"})})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:['确定要删除别名 "',p||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>f(N),children:"删除"})]})]})]})]},N)),n.alias_names.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无别名"})]})]})]})]})})}function O0({config:n,onChange:r}){const c=()=>{r({...n,states:[...n.states,""]})},d=x=>{r({...n,states:n.states.filter((f,j)=>j!==x)})},h=(x,f)=>{const j=[...n.states];j[x]=f,r({...n,states:j})};return e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"人格设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"personality",children:"人格特质"}),e.jsx(Ft,{id:"personality",value:n.personality,onChange:x=>r({...n,personality:x.target.value}),placeholder:"描述人格特质和身份特征(建议120字以内)",rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"建议120字以内,描述人格特质和身份特征"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"reply_style",children:"表达风格"}),e.jsx(Ft,{id:"reply_style",value:n.reply_style,onChange:x=>r({...n,reply_style:x.target.value}),placeholder:"描述说话的表达风格和习惯",rows:3})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"interest",children:"兴趣"}),e.jsx(Ft,{id:"interest",value:n.interest,onChange:x=>r({...n,interest:x.target.value}),placeholder:"会影响麦麦对什么话题进行回复",rows:2})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"plan_style",children:"说话规则与行为风格"}),e.jsx(Ft,{id:"plan_style",value:n.plan_style,onChange:x=>r({...n,plan_style:x.target.value}),placeholder:"麦麦的说话规则和行为风格",rows:5})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"visual_style",children:"识图规则"}),e.jsx(Ft,{id:"visual_style",value:n.visual_style,onChange:x=>r({...n,visual_style:x.target.value}),placeholder:"识图时的处理规则",rows:3})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"private_plan_style",children:"私聊规则"}),e.jsx(Ft,{id:"private_plan_style",value:n.private_plan_style,onChange:x=>r({...n,private_plan_style:x.target.value}),placeholder:"私聊的说话规则和行为风格",rows:4})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{children:"状态列表(人格多样性)"}),e.jsxs(b,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(hs,{className:"h-4 w-4 mr-1"}),"添加状态"]})]}),e.jsx("div",{className:"space-y-2",children:n.states.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Ft,{value:x,onChange:j=>h(f,j.target.value),placeholder:"描述一个人格状态",rows:2}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(at,{className:"h-4 w-4"})})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsx(xt,{children:"确定要删除这个人格状态吗?此操作无法撤销。"})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>d(f),children:"删除"})]})]})]})]},f))})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"state_probability",children:"状态替换概率"}),e.jsx(ce,{id:"state_probability",type:"number",step:"0.1",min:"0",max:"1",value:n.state_probability,onChange:x=>r({...n,state_probability:parseFloat(x.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"每次构建人格时替换 personality 的概率(0.0-1.0)"})]})]})]})})}function R0({config:n,onChange:r}){const c=()=>{r({...n,talk_value_rules:[...n.talk_value_rules,{target:"",time:"00:00-23:59",value:1}]})},d=j=>{r({...n,talk_value_rules:n.talk_value_rules.filter((p,N)=>N!==j)})},h=(j,p,N)=>{const v=[...n.talk_value_rules];v[j]={...v[j],[p]:N},r({...n,talk_value_rules:v})},x=({value:j,onChange:p})=>{const[N,v]=u.useState("00"),[C,S]=u.useState("00"),[w,L]=u.useState("23"),[F,B]=u.useState("59");u.useEffect(()=>{const K=j.split("-");if(K.length===2){const[H,z]=K,[V,Y]=H.split(":"),[E,R]=z.split(":");V&&v(V.padStart(2,"0")),Y&&S(Y.padStart(2,"0")),E&&L(E.padStart(2,"0")),R&&B(R.padStart(2,"0"))}},[j]);const O=(K,H,z,V)=>{const Y=`${K}:${H}-${z}:${V}`;p(Y)};return e.jsxs(Ua,{children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(b,{variant:"outline",className:"w-full justify-start font-mono text-sm",children:[e.jsx(Wn,{className:"h-4 w-4 mr-2"}),j||"选择时间段"]})}),e.jsx(_a,{className:"w-72 sm:w-80",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"font-medium text-sm mb-3",children:"开始时间"}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[e.jsxs("div",{children:[e.jsx(y,{className:"text-xs",children:"小时"}),e.jsxs(qe,{value:N,onValueChange:K=>{v(K),O(K,C,w,F)},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsx(He,{children:Array.from({length:24},(K,H)=>H).map(K=>e.jsx(ie,{value:K.toString().padStart(2,"0"),children:K.toString().padStart(2,"0")},K))})]})]}),e.jsxs("div",{children:[e.jsx(y,{className:"text-xs",children:"分钟"}),e.jsxs(qe,{value:C,onValueChange:K=>{S(K),O(N,K,w,F)},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsx(He,{children:Array.from({length:60},(K,H)=>H).map(K=>e.jsx(ie,{value:K.toString().padStart(2,"0"),children:K.toString().padStart(2,"0")},K))})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-medium text-sm mb-3",children:"结束时间"}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[e.jsxs("div",{children:[e.jsx(y,{className:"text-xs",children:"小时"}),e.jsxs(qe,{value:w,onValueChange:K=>{L(K),O(N,C,K,F)},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsx(He,{children:Array.from({length:24},(K,H)=>H).map(K=>e.jsx(ie,{value:K.toString().padStart(2,"0"),children:K.toString().padStart(2,"0")},K))})]})]}),e.jsxs("div",{children:[e.jsx(y,{className:"text-xs",children:"分钟"}),e.jsxs(qe,{value:F,onValueChange:K=>{B(K),O(N,C,w,K)},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsx(He,{children:Array.from({length:60},(K,H)=>H).map(K=>e.jsx(ie,{value:K.toString().padStart(2,"0"),children:K.toString().padStart(2,"0")},K))})]})]})]})]})]})})]})},f=({rule:j})=>{const p=`{ target = "${j.target}", time = "${j.time}", value = ${j.value.toFixed(1)} }`;return e.jsxs(Ua,{children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",children:[e.jsx(Ws,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(_a,{className:"w-80 sm:w-96",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:p}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"聊天设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"talk_value",children:"聊天频率(基础值)"}),e.jsx(ce,{id:"talk_value",type:"number",step:"0.1",min:"0",max:"1",value:n.talk_value,onChange:j=>r({...n,talk_value:parseFloat(j.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"越小越沉默,范围 0-1"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"mentioned_bot_reply",checked:n.mentioned_bot_reply,onCheckedChange:j=>r({...n,mentioned_bot_reply:j})}),e.jsx(y,{htmlFor:"mentioned_bot_reply",className:"cursor-pointer",children:"启用提及必回复"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"max_context_size",children:"上下文长度"}),e.jsx(ce,{id:"max_context_size",type:"number",min:"1",value:n.max_context_size,onChange:j=>r({...n,max_context_size:parseInt(j.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"planner_smooth",children:"规划器平滑"}),e.jsx(ce,{id:"planner_smooth",type:"number",step:"1",min:"0",value:n.planner_smooth,onChange:j=>r({...n,planner_smooth:parseFloat(j.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"增大数值会减小 planner 负荷,推荐 1-5,0 为关闭"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"enable_talk_value_rules",checked:n.enable_talk_value_rules,onCheckedChange:j=>r({...n,enable_talk_value_rules:j})}),e.jsx(y,{htmlFor:"enable_talk_value_rules",className:"cursor-pointer",children:"启用动态发言频率规则"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"include_planner_reasoning",checked:n.include_planner_reasoning,onCheckedChange:j=>r({...n,include_planner_reasoning:j})}),e.jsx(y,{htmlFor:"include_planner_reasoning",className:"cursor-pointer",children:"将 planner 推理加入 replyer"})]})]})]}),n.enable_talk_value_rules&&e.jsxs("div",{className:"border-t pt-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"动态发言频率规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"按时段或聊天流ID调整发言频率,优先匹配具体聊天,再匹配全局规则"})]}),e.jsxs(b,{onClick:c,size:"sm",children:[e.jsx(hs,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),n.talk_value_rules&&n.talk_value_rules.length>0?e.jsx("div",{className:"space-y-4",children:n.talk_value_rules.map((j,p)=>e.jsxs("div",{className:"rounded-lg border p-4 bg-muted/50 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium text-muted-foreground",children:["规则 #",p+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(f,{rule:j}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsx(b,{variant:"ghost",size:"sm",children:e.jsx(at,{className:"h-4 w-4 text-destructive"})})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:["确定要删除规则 #",p+1," 吗?此操作无法撤销。"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>d(p),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"配置类型"}),e.jsxs(qe,{value:j.target===""?"global":"specific",onValueChange:N=>{N==="global"?h(p,"target",""):h(p,"target","qq::group")},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"global",children:"全局配置"}),e.jsx(ie,{value:"specific",children:"详细配置"})]})]})]}),j.target!==""&&(()=>{const N=j.target.split(":"),v=N[0]||"qq",C=N[1]||"",S=N[2]||"group";return e.jsxs("div",{className:"grid gap-4 p-3 sm:p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"平台"}),e.jsxs(qe,{value:v,onValueChange:w=>{h(p,"target",`${w}:${C}:${S}`)},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"qq",children:"QQ"}),e.jsx(ie,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"群 ID"}),e.jsx(ce,{value:C,onChange:w=>{h(p,"target",`${v}:${w.target.value}:${S}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"类型"}),e.jsxs(qe,{value:S,onValueChange:w=>{h(p,"target",`${v}:${C}:${w}`)},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"group",children:"群组(group)"}),e.jsx(ie,{value:"private",children:"私聊(private)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",j.target||"(未设置)"]})]})})(),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"时间段 (Time)"}),e.jsx(x,{value:j.time,onChange:N=>h(p,"time",N)}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"支持跨夜区间,例如 23:00-02:00"})]}),e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{htmlFor:`rule-value-${p}`,className:"text-xs font-medium",children:"发言频率值 (Value)"}),e.jsx(ce,{id:`rule-value-${p}`,type:"number",step:"0.01",min:"0.01",max:"1",value:j.value,onChange:N=>{const v=parseFloat(N.target.value);isNaN(v)||h(p,"value",Math.max(.01,Math.min(1,v)))},className:"w-20 h-8 text-xs"})]}),e.jsx(Ma,{value:[j.value],onValueChange:N=>h(p,"value",N[0]),min:.01,max:1,step:.01,className:"w-full"}),e.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[e.jsx("span",{children:"0.01 (极少发言)"}),e.jsx("span",{children:"0.5"}),e.jsx("span",{children:"1.0 (正常)"})]})]})]})]},p))}):e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:e.jsx("p",{className:"text-sm",children:'暂无规则,点击"添加规则"按钮创建'})}),e.jsxs("div",{className:"mt-4 p-4 bg-blue-50 dark:bg-blue-950/20 border border-blue-200 dark:border-blue-800 rounded-lg",children:[e.jsx("h5",{className:"text-sm font-semibold text-blue-900 dark:text-blue-100 mb-2",children:"📝 规则说明"}),e.jsxs("ul",{className:"text-xs text-blue-800 dark:text-blue-200 space-y-1",children:[e.jsxs("li",{children:["• ",e.jsx("strong",{children:"Target 为空"}),":全局规则,对所有聊天生效"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"Target 指定"}),":仅对特定聊天流生效(格式:platform:id:type)"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"优先级"}),":先匹配具体聊天流规则,再匹配全局规则"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"时间支持跨夜"}),":例如 23:00-02:00 表示晚上11点到次日凌晨2点"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"数值范围"}),":建议 0-1,0 表示完全沉默,1 表示正常发言"]})]})]})]})]})}function L0({member:n,groupIndex:r,memberIndex:c,availableChatIds:d,onUpdate:h,onRemove:x}){const f=d.includes(n)||n==="*",[j,p]=u.useState(!f);return e.jsxs("div",{className:"flex gap-2",children:[e.jsx("div",{className:"flex-1 flex gap-2",children:j?e.jsxs(e.Fragment,{children:[e.jsx(ce,{value:n,onChange:N=>h(r,c,N.target.value),placeholder:'输入 "*" 或 "qq:123456:group"',className:"flex-1"}),d.length>0&&e.jsx(b,{size:"sm",variant:"outline",onClick:()=>p(!1),title:"切换到下拉选择",children:"下拉"})]}):e.jsxs(e.Fragment,{children:[e.jsxs(qe,{value:n,onValueChange:N=>h(r,c,N),children:[e.jsx(Be,{className:"flex-1",children:e.jsx(Ge,{placeholder:"选择聊天流"})}),e.jsxs(He,{children:[e.jsx(ie,{value:"*",children:"* (全局共享)"}),d.map((N,v)=>e.jsx(ie,{value:N,children:N},v))]})]}),e.jsx(b,{size:"sm",variant:"outline",onClick:()=>p(!0),title:"切换到手动输入",children:"输入"})]})}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(at,{className:"h-4 w-4"})})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:['确定要删除组成员 "',n||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>x(r,c),children:"删除"})]})]})]})]})}function U0({config:n,onChange:r}){const c=()=>{r({...n,learning_list:[...n.learning_list,["","enable","enable","1.0"]]})},d=C=>{r({...n,learning_list:n.learning_list.filter((S,w)=>w!==C)})},h=(C,S,w)=>{const L=[...n.learning_list];L[C][S]=w,r({...n,learning_list:L})},x=({rule:C})=>{const S=`["${C[0]}", "${C[1]}", "${C[2]}", "${C[3]}"]`;return e.jsxs(Ua,{children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",children:[e.jsx(Ws,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(_a,{className:"w-80 sm:w-96",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:S}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},f=()=>{r({...n,expression_groups:[...n.expression_groups,[]]})},j=C=>{r({...n,expression_groups:n.expression_groups.filter((S,w)=>w!==C)})},p=C=>{const S=[...n.expression_groups];S[C]=[...S[C],""],r({...n,expression_groups:S})},N=(C,S)=>{const w=[...n.expression_groups];w[C]=w[C].filter((L,F)=>F!==S),r({...n,expression_groups:w})},v=(C,S,w)=>{const L=[...n.expression_groups];L[C][S]=w,r({...n,expression_groups:L})};return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达学习配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置麦麦如何学习和使用表达方式"})]}),e.jsxs(b,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(hs,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),e.jsxs("div",{className:"space-y-4",children:[n.learning_list.map((C,S)=>{const w=n.learning_list.some((H,z)=>z!==S&&H[0]===""),L=C[0]==="",F=C[0].split(":"),B=F[0]||"qq",O=F[1]||"",K=F[2]||"group";return e.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["规则 ",S+1," ",L&&"(全局配置)"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(x,{rule:C}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsx(b,{size:"sm",variant:"ghost",children:e.jsx(at,{className:"h-4 w-4"})})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:["确定要删除学习规则 ",S+1," 吗?此操作无法撤销。"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>d(S),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"配置类型"}),e.jsxs(qe,{value:L?"global":"specific",onValueChange:H=>{H==="global"?h(S,0,""):h(S,0,"qq::group")},disabled:w&&!L,children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"global",children:"全局配置"}),e.jsx(ie,{value:"specific",disabled:w&&!L,children:"详细配置"})]})]}),w&&!L&&e.jsx("p",{className:"text-xs text-amber-600",children:"已存在全局配置,无法创建新的全局配置"})]}),!L&&e.jsxs("div",{className:"grid gap-4 p-3 sm:p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"平台"}),e.jsxs(qe,{value:B,onValueChange:H=>{h(S,0,`${H}:${O}:${K}`)},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"qq",children:"QQ"}),e.jsx(ie,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"群 ID"}),e.jsx(ce,{value:O,onChange:H=>{h(S,0,`${B}:${H.target.value}:${K}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"类型"}),e.jsxs(qe,{value:K,onValueChange:H=>{h(S,0,`${B}:${O}:${H}`)},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"group",children:"群组(group)"}),e.jsx(ie,{value:"private",children:"私聊(private)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",C[0]||"(未设置)"]})]}),e.jsx("div",{className:"grid gap-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(y,{className:"text-xs font-medium",children:"使用学到的表达"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦使用从聊天中学到的表达方式"})]}),e.jsx(Qe,{checked:C[1]==="enable",onCheckedChange:H=>h(S,1,H?"enable":"disable")})]})}),e.jsx("div",{className:"grid gap-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(y,{className:"text-xs font-medium",children:"学习表达"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦从聊天中学习新的表达方式"})]}),e.jsx(Qe,{checked:C[2]==="enable",onCheckedChange:H=>h(S,2,H?"enable":"disable")})]})}),e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{className:"text-xs font-medium",children:"学习强度"}),e.jsx(ce,{type:"number",step:"0.1",min:"0",max:"5",value:C[3],onChange:H=>{const z=parseFloat(H.target.value);isNaN(z)||h(S,3,Math.max(0,Math.min(5,z)).toFixed(1))},className:"w-20 h-8 text-xs"})]}),e.jsx(Ma,{value:[parseFloat(C[3])||1],onValueChange:H=>h(S,3,H[0].toFixed(1)),min:0,max:5,step:.1,className:"w-full"}),e.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[e.jsx("span",{children:"0 (不学习)"}),e.jsx("span",{children:"2.5"}),e.jsx("span",{children:"5.0 (快速学习)"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"影响学习频率,最短学习间隔 = 300/学习强度(秒)"})]})]})]},S)}),n.learning_list.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无学习规则,点击"添加规则"开始配置'})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达反思配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置麦麦主动向管理员询问表达方式是否合适的功能"})]}),e.jsx(Qe,{checked:n.reflect,onCheckedChange:C=>r({...n,reflect:C})})]}),n.reflect&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsx("span",{className:"text-sm font-medium",children:"反思操作员"})}),e.jsx("div",{className:"space-y-4",children:(()=>{const S=(n.reflect_operator_id||"").split(":"),w=S[0]||"qq",L=S[1]||"",F=S[2]||"private";return e.jsxs("div",{className:"grid gap-4 p-3 sm:p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"平台"}),e.jsxs(qe,{value:w,onValueChange:B=>{r({...n,reflect_operator_id:`${B}:${L}:${F}`})},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"qq",children:"QQ"}),e.jsx(ie,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"用户/群 ID"}),e.jsx(ce,{value:L,onChange:B=>{r({...n,reflect_operator_id:`${w}:${B.target.value}:${F}`})},placeholder:"输入 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"类型"}),e.jsxs(qe,{value:F,onValueChange:B=>{r({...n,reflect_operator_id:`${w}:${L}:${B}`})},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"private",children:"私聊(private)"}),e.jsx(ie,{value:"group",children:"群组(group)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前操作员 ID:",n.reflect_operator_id||"(未设置)"]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦会向此操作员询问表达方式是否合适"})]})})()})]}),e.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-sm font-medium",children:"允许反思的聊天流"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"只有在此列表中的聊天流才会提出问题并跟踪。如果列表为空,则所有聊天流都可以进行表达反思"})]}),e.jsxs(b,{onClick:()=>{r({...n,allow_reflect:[...n.allow_reflect||[],"qq::group"]})},size:"sm",variant:"outline",children:[e.jsx(hs,{className:"h-4 w-4 mr-1"}),"添加聊天流"]})]}),e.jsxs("div",{className:"space-y-2",children:[(n.allow_reflect||[]).map((C,S)=>{const w=C.split(":"),L=w[0]||"qq",F=w[1]||"",B=w[2]||"group";return e.jsxs("div",{className:"flex items-center gap-2 p-3 rounded-lg bg-muted/50",children:[e.jsxs(qe,{value:L,onValueChange:O=>{const K=[...n.allow_reflect];K[S]=`${O}:${F}:${B}`,r({...n,allow_reflect:K})},children:[e.jsx(Be,{className:"w-24",children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"qq",children:"QQ"}),e.jsx(ie,{value:"wx",children:"微信"})]})]}),e.jsx(ce,{value:F,onChange:O=>{const K=[...n.allow_reflect];K[S]=`${L}:${O.target.value}:${B}`,r({...n,allow_reflect:K})},placeholder:"ID",className:"flex-1 font-mono text-sm"}),e.jsxs(qe,{value:B,onValueChange:O=>{const K=[...n.allow_reflect];K[S]=`${L}:${F}:${O}`,r({...n,allow_reflect:K})},children:[e.jsx(Be,{className:"w-32",children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"group",children:"群组"}),e.jsx(ie,{value:"private",children:"私聊"})]})]}),e.jsx(b,{onClick:()=>{r({...n,allow_reflect:n.allow_reflect.filter((O,K)=>K!==S)})},size:"sm",variant:"ghost",children:e.jsx(at,{className:"h-4 w-4"})})]},S)}),(!n.allow_reflect||n.allow_reflect.length===0)&&e.jsx("div",{className:"text-center py-4 text-muted-foreground text-sm",children:"列表为空,所有聊天流都可以进行表达反思"})]})]})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达共享组配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置不同聊天流之间如何共享学到的表达方式"})]}),e.jsxs(b,{onClick:f,size:"sm",variant:"outline",children:[e.jsx(hs,{className:"h-4 w-4 mr-1"}),"添加共享组"]})]}),e.jsxs("div",{className:"space-y-4",children:[n.expression_groups.map((C,S)=>{const w=n.learning_list.map(L=>L[0]).filter(L=>L!=="");return e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["共享组 ",S+1,C.length===1&&C[0]==="*"&&"(全局共享)"]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(b,{onClick:()=>p(S),size:"sm",variant:"outline",children:e.jsx(hs,{className:"h-4 w-4"})}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsx(b,{size:"sm",variant:"ghost",children:e.jsx(at,{className:"h-4 w-4"})})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:["确定要删除共享组 ",S+1," 吗?此操作无法撤销。"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>j(S),children:"删除"})]})]})]})]})]}),e.jsx("div",{className:"space-y-2",children:C.map((L,F)=>e.jsx(L0,{member:L,groupIndex:S,memberIndex:F,availableChatIds:w,onUpdate:v,onRemove:N},`${S}-${F}`))}),e.jsx("p",{className:"text-xs text-muted-foreground",children:'提示:可以从下拉框选择已配置的聊天流,或手动输入。输入 "*" 启用全局共享'})]},S)}),n.expression_groups.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无共享组,点击"添加共享组"开始配置'})]})]})})]})}function B0({emojiConfig:n,memoryConfig:r,toolConfig:c,onEmojiChange:d,onMemoryChange:h,onToolChange:x}){return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"工具设置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"enable_tool",checked:c.enable_tool,onCheckedChange:f=>x({...c,enable_tool:f})}),e.jsx(y,{htmlFor:"enable_tool",className:"cursor-pointer",children:"启用工具系统"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"允许麦麦使用各种工具来增强功能"})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"记忆设置"}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"max_agent_iterations",children:"记忆思考深度"}),e.jsx(ce,{id:"max_agent_iterations",type:"number",min:"1",value:r.max_agent_iterations,onChange:f=>h({...r,max_agent_iterations:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"最低为 1(不深入思考)"})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"表情包设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"emoji_chance",children:"表情包激活概率"}),e.jsx(ce,{id:"emoji_chance",type:"number",step:"0.1",min:"0",max:"1",value:n.emoji_chance,onChange:f=>d({...n,emoji_chance:parseFloat(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"范围 0-1,越大越容易发送表情包"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"max_reg_num",children:"最大注册数量"}),e.jsx(ce,{id:"max_reg_num",type:"number",min:"1",value:n.max_reg_num,onChange:f=>d({...n,max_reg_num:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦最多可以注册的表情包数量"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),e.jsx(ce,{id:"check_interval",type:"number",min:"1",value:n.check_interval,onChange:f=>d({...n,check_interval:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包(注册、破损、删除)的时间间隔"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"do_replace",checked:n.do_replace,onCheckedChange:f=>d({...n,do_replace:f})}),e.jsx(y,{htmlFor:"do_replace",className:"cursor-pointer",children:"达到最大数量时替换表情包"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"steal_emoji",checked:n.steal_emoji,onCheckedChange:f=>d({...n,steal_emoji:f})}),e.jsx(y,{htmlFor:"steal_emoji",className:"cursor-pointer",children:"偷取表情包"})]}),e.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"允许麦麦将看到的表情包据为己有"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"content_filtration",checked:n.content_filtration,onCheckedChange:f=>d({...n,content_filtration:f})}),e.jsx(y,{htmlFor:"content_filtration",className:"cursor-pointer",children:"启用表情包过滤"})]}),n.content_filtration&&e.jsxs("div",{className:"grid gap-2 pl-6 border-l-2 border-primary/20",children:[e.jsx(y,{htmlFor:"filtration_prompt",children:"过滤要求"}),e.jsx(ce,{id:"filtration_prompt",value:n.filtration_prompt,onChange:f=>d({...n,filtration_prompt:f.target.value}),placeholder:"符合公序良俗"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"只有符合此要求的表情包才会被保存"})]})]})]})})]})}function H0({keywordReactionConfig:n,responsePostProcessConfig:r,chineseTypoConfig:c,responseSplitterConfig:d,onKeywordReactionChange:h,onResponsePostProcessChange:x,onChineseTypoChange:f,onResponseSplitterChange:j}){const p=()=>{h({...n,regex_rules:[...n.regex_rules,{regex:[""],reaction:""}]})},N=z=>{h({...n,regex_rules:n.regex_rules.filter((V,Y)=>Y!==z)})},v=(z,V,Y)=>{const E=[...n.regex_rules];V==="regex"&&typeof Y=="string"?E[z]={...E[z],regex:[Y]}:V==="reaction"&&typeof Y=="string"&&(E[z]={...E[z],reaction:Y}),h({...n,regex_rules:E})},C=({regex:z,reaction:V,onRegexChange:Y,onReactionChange:E})=>{const[R,ne]=u.useState(!1),[fe,Ce]=u.useState(""),[we,pe]=u.useState(null),[Ne,be]=u.useState(""),[A,X]=u.useState({}),[T,te]=u.useState(""),_=u.useRef(null),[me,oe]=u.useState("build"),ae=G=>G.replace(/\(\?P<([^>]+)>/g,"(?<$1>"),xe=(G,W=0)=>{const U=_.current;if(!U)return;const ee=U.selectionStart||0,Se=U.selectionEnd||0,Me=z.substring(0,ee)+G+z.substring(Se);Y(Me),setTimeout(()=>{const tt=ee+G.length+W;U.setSelectionRange(tt,tt),U.focus()},0)};u.useEffect(()=>{if(!z||!fe){pe(null),X({}),te(V),be("");return}try{const G=ae(z),W=new RegExp(G,"g"),U=fe.match(W);pe(U),be("");const Se=new RegExp(G).exec(fe);if(Se&&Se.groups){X(Se.groups);let Me=V;Object.entries(Se.groups).forEach(([tt,Xe])=>{Me=Me.replace(new RegExp(`\\[${tt}\\]`,"g"),Xe||"")}),te(Me)}else X({}),te(V)}catch(G){be(G.message),pe(null),X({}),te(V)}},[z,fe,V]);const ve=()=>{if(!fe||!we||we.length===0)return e.jsx("span",{className:"text-muted-foreground",children:fe||"请输入测试文本"});try{const G=ae(z),W=new RegExp(G,"g");let U=0;const ee=[];let Se;for(;(Se=W.exec(fe))!==null;)Se.index>U&&ee.push(e.jsx("span",{children:fe.substring(U,Se.index)},`text-${U}`)),ee.push(e.jsx("span",{className:"bg-yellow-200 dark:bg-yellow-900 font-semibold",children:Se[0]},`match-${Se.index}`)),U=Se.index+Se[0].length;return U)",desc:"Python风格命名捕获组",moveCursor:-1},{label:"非捕获组",pattern:"(?:)",desc:"分组但不保存匹配结果",moveCursor:-1}]},{category:"字符类",items:[{label:"字符集",pattern:"[]",desc:"匹配括号内的任意字符",moveCursor:-1},{label:"排除字符",pattern:"[^]",desc:"匹配不在括号内的字符",moveCursor:-1},{label:"范围",pattern:"[a-z]",desc:"匹配a到z的字符"},{label:"中文字符",pattern:"[\\u4e00-\\u9fa5]",desc:"匹配中文汉字"}]},{category:"常用模板",items:[{label:"捕获词语",pattern:"(?P\\S+)",desc:"捕获一个词语"},{label:"捕获句子",pattern:"(?P.+)",desc:"捕获整个句子"},{label:"捕获数字",pattern:"(?P\\d+)",desc:"捕获一个或多个数字"},{label:"可选词语",pattern:"(?:词语1|词语2)",desc:"匹配多个可选项之一"}]}];return e.jsxs(Jt,{open:R,onOpenChange:ne,children:[e.jsx($u,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",children:[e.jsx(Hu,{className:"h-4 w-4 mr-1"}),"正则编辑器"]})}),e.jsxs($t,{className:"max-w-[95vw] sm:max-w-[900px] max-h-[90vh]",children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:"正则表达式编辑器"}),e.jsx(ds,{className:"text-sm",children:"使用可视化工具构建正则表达式,并实时测试效果"})]}),e.jsx(st,{className:"max-h-[calc(90vh-120px)]",children:e.jsxs(La,{value:me,onValueChange:G=>oe(G),className:"w-full",children:[e.jsxs(wa,{className:"grid w-full grid-cols-2",children:[e.jsx(it,{value:"build",children:"🔧 构建器"}),e.jsx(it,{value:"test",children:"🧪 测试器"})]}),e.jsxs(zt,{value:"build",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{className:"text-sm font-medium",children:"正则表达式"}),e.jsx(ce,{ref:_,value:z,onChange:G=>Y(G.target.value),className:"font-mono text-sm",placeholder:"点击下方按钮构建正则表达式..."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{className:"text-sm font-medium",children:"Reaction 内容"}),e.jsx(Ft,{value:V,onChange:G=>E(G.target.value),placeholder:"使用 [捕获组名] 引用捕获的内容...",rows:3,className:"text-sm"})]}),e.jsxs("div",{className:"space-y-4 border-t pt-4",children:[de.map(G=>e.jsxs("div",{className:"space-y-2",children:[e.jsx("h5",{className:"text-xs font-semibold text-primary",children:G.category}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:G.items.map(W=>e.jsx(b,{variant:"outline",size:"sm",className:"justify-start h-auto py-2 px-3",onClick:()=>xe(W.pattern,W.moveCursor||0),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsxs("div",{className:"flex items-center gap-2 w-full",children:[e.jsx("span",{className:"text-xs font-medium",children:W.label}),e.jsx("code",{className:"ml-auto text-xs bg-muted px-1.5 py-0.5 rounded font-mono",children:W.pattern})]}),e.jsx("span",{className:"text-xs text-muted-foreground mt-0.5",children:W.desc})]})},W.label))})]},G.category)),e.jsxs("div",{className:"space-y-2 border-t pt-4",children:[e.jsx("h5",{className:"text-xs font-semibold text-primary",children:"完整示例模板"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>Y("^(?P\\S{1,20})是这样的$"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsxs("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:["^(?P\\S","{1,20}",")是这样的$"]}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「某事物是这样的」并捕获事物名称"})]})}),e.jsx(b,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>Y("(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「我没要求你做某事」并捕获具体行为"})]})}),e.jsx(b,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>Y("(?P.+?)(?:是|为什么|怎么)"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?P.+?)(?:是|为什么|怎么)"}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"捕获问题主题词"})]})})]})]})]}),e.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 使用提示"}),e.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"点击输入框设置光标位置,然后点击按钮插入模式"}),e.jsxs("li",{children:["命名捕获组格式:",e.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"(?P<名称>模式)"})]}),e.jsxs("li",{children:["在 reaction 中使用 ",e.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"[名称]"})," 引用捕获的内容"]}),e.jsx("li",{children:"切换到测试器标签页验证正则表达式效果"})]})]})]}),e.jsxs(zt,{value:"test",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{className:"text-sm font-medium",children:"当前正则表达式"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:z||"(未设置)"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"test-text",className:"text-sm font-medium",children:"测试文本"}),e.jsx(Ft,{id:"test-text",value:fe,onChange:G=>Ce(G.target.value),placeholder:`在此输入要测试的文本... -例如:打游戏是这样的`,className:"min-h-[100px] text-sm"})]}),Ne&&e.jsxs("div",{className:"rounded-md bg-destructive/10 border border-destructive/20 p-3",children:[e.jsx("p",{className:"text-sm text-destructive font-medium",children:"正则表达式错误"}),e.jsx("p",{className:"text-xs text-destructive/80 mt-1",children:Ne})]}),!Ne&&fe&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"flex items-center gap-2",children:we&&we.length>0?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-green-500"}),e.jsxs("span",{className:"text-sm font-medium text-green-600 dark:text-green-400",children:["匹配成功 (",we.length," 处)"]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-gray-400"}),e.jsx("span",{className:"text-sm font-medium text-muted-foreground",children:"无匹配"})]})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{className:"text-sm font-medium",children:"匹配高亮"}),e.jsx(st,{className:"h-40 rounded-md bg-muted p-3",children:e.jsx("div",{className:"text-sm break-words",children:ve()})})]}),Object.keys(A).length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{className:"text-sm font-medium",children:"命名捕获组"}),e.jsx(st,{className:"h-32 rounded-md border p-3",children:e.jsx("div",{className:"space-y-2",children:Object.entries(A).map(([G,W])=>e.jsxs("div",{className:"flex items-start gap-2 text-sm",children:[e.jsxs("span",{className:"font-mono font-semibold text-primary min-w-[80px]",children:["[",G,"]"]}),e.jsx("span",{className:"text-muted-foreground",children:"="}),e.jsx("span",{className:"font-mono bg-muted px-2 py-0.5 rounded",children:W})]},G))})})]}),Object.keys(A).length>0&&V&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{className:"text-sm font-medium",children:"Reaction 替换预览"}),e.jsx(st,{className:"h-48 rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3",children:e.jsx("div",{className:"text-sm break-words",children:T})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"reaction 中的 [name] 已被替换为对应的捕获组值"})]})]}),e.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 测试说明"}),e.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"匹配的文本会以黄色背景高亮显示"}),e.jsx("li",{children:"命名捕获组的值会显示在下方列表中"}),e.jsx("li",{children:"Reaction 替换预览显示最终生成的反应内容"}),e.jsx("li",{children:"如需修改正则,切换回构建器标签页"})]})]})]})]})})]})]})},S=()=>{h({...n,keyword_rules:[...n.keyword_rules,{keywords:[],reaction:""}]})},w=z=>{h({...n,keyword_rules:n.keyword_rules.filter((V,Y)=>Y!==z)})},L=(z,V,Y)=>{const E=[...n.keyword_rules];typeof Y=="string"&&(E[z]={...E[z],reaction:Y}),h({...n,keyword_rules:E})},F=z=>{const V=[...n.keyword_rules];V[z]={...V[z],keywords:[...V[z].keywords||[],""]},h({...n,keyword_rules:V})},B=(z,V)=>{const Y=[...n.keyword_rules];Y[z]={...Y[z],keywords:(Y[z].keywords||[]).filter((E,R)=>R!==V)},h({...n,keyword_rules:Y})},O=(z,V,Y)=>{const E=[...n.keyword_rules],R=[...E[z].keywords||[]];R[V]=Y,E[z]={...E[z],keywords:R},h({...n,keyword_rules:E})},K=({rule:z})=>{const V=`{ regex = [${(z.regex||[]).map(Y=>`"${Y}"`).join(", ")}], reaction = "${z.reaction}" }`;return e.jsxs(Ua,{children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",children:[e.jsx(Ws,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(_a,{className:"w-[95vw] sm:w-[500px]",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx(st,{className:"h-60 rounded-md bg-muted p-3",children:e.jsx("pre",{className:"font-mono text-xs break-all",children:V})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},H=({rule:z})=>{const V=`[[keyword_reaction.keyword_rules]] -keywords = [${(z.keywords||[]).map(Y=>`"${Y}"`).join(", ")}] -reaction = "${z.reaction}"`;return e.jsxs(Ua,{children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",children:[e.jsx(Ws,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(_a,{className:"w-[95vw] sm:w-[500px]",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx(st,{className:"h-60 rounded-md bg-muted p-3",children:e.jsx("pre",{className:"font-mono text-xs whitespace-pre-wrap break-all",children:V})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"关键词反应配置"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"配置触发特定反应的关键词和正则表达式规则"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"正则表达式规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用正则表达式匹配消息内容"})]}),e.jsxs(b,{onClick:p,size:"sm",variant:"outline",children:[e.jsx(hs,{className:"h-4 w-4 mr-1"}),"添加正则规则"]})]}),e.jsxs("div",{className:"space-y-3",children:[n.regex_rules.map((z,V)=>e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["正则规则 ",V+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(C,{regex:z.regex&&z.regex[0]||"",reaction:z.reaction,onRegexChange:Y=>v(V,"regex",Y),onReactionChange:Y=>v(V,"reaction",Y)}),e.jsx(K,{rule:z}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsx(b,{size:"sm",variant:"ghost",children:e.jsx(at,{className:"h-4 w-4"})})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:["确定要删除正则规则 ",V+1," 吗?此操作无法撤销。"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>N(V),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"正则表达式(Python 语法)"}),e.jsx(ce,{value:z.regex&&z.regex[0]||"",onChange:Y=>v(V,"regex",Y.target.value),placeholder:"例如:^(?P\\\\S{1,20})是这样的$ (点击正则编辑器按钮可视化构建)",className:"font-mono text-sm"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:'支持命名捕获组 (?Ppattern),可在 reaction 中使用 [name] 引用。点击"正则编辑器"可视化构建和测试!'})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"反应内容"}),e.jsx(Ft,{value:z.reaction,onChange:Y=>v(V,"reaction",Y.target.value),placeholder:`触发后麦麦的反应... -可以使用 [捕获组名] 来引用正则表达式中的内容`,rows:3,className:"text-sm"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"使用 [捕获组名] 引用正则表达式中的命名捕获组,例如 [n] 会被替换为捕获的内容"})]})]})]},V)),n.regex_rules.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无正则规则,点击"添加正则规则"开始配置'})]})]}),e.jsxs("div",{className:"space-y-4 border-t pt-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"关键词规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用关键词列表匹配消息内容"})]}),e.jsxs(b,{onClick:S,size:"sm",variant:"outline",children:[e.jsx(hs,{className:"h-4 w-4 mr-1"}),"添加关键词规则"]})]}),e.jsxs("div",{className:"space-y-3",children:[n.keyword_rules.map((z,V)=>e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["关键词规则 ",V+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(H,{rule:z}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsx(b,{size:"sm",variant:"ghost",children:e.jsx(at,{className:"h-4 w-4"})})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:["确定要删除关键词规则 ",V+1," 吗?此操作无法撤销。"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>w(V),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{className:"text-xs font-medium",children:"关键词列表"}),e.jsxs(b,{onClick:()=>F(V),size:"sm",variant:"ghost",children:[e.jsx(hs,{className:"h-3 w-3 mr-1"}),"添加关键词"]})]}),e.jsxs("div",{className:"space-y-2",children:[(z.keywords||[]).map((Y,E)=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{value:Y,onChange:R=>O(V,E,R.target.value),placeholder:"关键词",className:"flex-1"}),e.jsx(b,{onClick:()=>B(V,E),size:"sm",variant:"ghost",children:e.jsx(at,{className:"h-4 w-4"})})]},E)),(!z.keywords||z.keywords.length===0)&&e.jsx("p",{className:"text-xs text-muted-foreground text-center py-2",children:'暂无关键词,点击"添加关键词"开始配置'})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-xs font-medium",children:"反应内容"}),e.jsx(Ft,{value:z.reaction,onChange:Y=>L(V,"reaction",Y.target.value),placeholder:"触发后麦麦的反应...",rows:3,className:"text-sm"})]})]})]},V)),n.keyword_rules.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无关键词规则,点击"添加关键词规则"开始配置'})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"回复后处理配置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"enable_response_post_process",checked:r.enable_response_post_process,onCheckedChange:z=>x({...r,enable_response_post_process:z})}),e.jsx(y,{htmlFor:"enable_response_post_process",className:"cursor-pointer",children:"启用回复后处理"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"包括错别字生成器和回复分割器"})]}),r.enable_response_post_process&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"border-t pt-6 space-y-4",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[e.jsx(Qe,{id:"enable_chinese_typo",checked:c.enable,onCheckedChange:z=>f({...c,enable:z})}),e.jsx(y,{htmlFor:"enable_chinese_typo",className:"cursor-pointer font-semibold",children:"中文错别字生成器"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"为回复添加随机错别字,让麦麦的回复更自然"}),c.enable&&e.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"error_rate",className:"text-xs font-medium",children:"单字替换概率"}),e.jsx(ce,{id:"error_rate",type:"number",step:"0.001",min:"0",max:"1",value:c.error_rate,onChange:z=>f({...c,error_rate:parseFloat(z.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"min_freq",className:"text-xs font-medium",children:"最小字频阈值"}),e.jsx(ce,{id:"min_freq",type:"number",min:"0",value:c.min_freq,onChange:z=>f({...c,min_freq:parseInt(z.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"tone_error_rate",className:"text-xs font-medium",children:"声调错误概率"}),e.jsx(ce,{id:"tone_error_rate",type:"number",step:"0.01",min:"0",max:"1",value:c.tone_error_rate,onChange:z=>f({...c,tone_error_rate:parseFloat(z.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"word_replace_rate",className:"text-xs font-medium",children:"整词替换概率"}),e.jsx(ce,{id:"word_replace_rate",type:"number",step:"0.001",min:"0",max:"1",value:c.word_replace_rate,onChange:z=>f({...c,word_replace_rate:parseFloat(z.target.value)})})]})]})]})}),e.jsx("div",{className:"border-t pt-6 space-y-4",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[e.jsx(Qe,{id:"enable_response_splitter",checked:d.enable,onCheckedChange:z=>j({...d,enable:z})}),e.jsx(y,{htmlFor:"enable_response_splitter",className:"cursor-pointer font-semibold",children:"回复分割器"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"控制回复的长度和句子数量"}),d.enable&&e.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"max_length",className:"text-xs font-medium",children:"最大长度"}),e.jsx(ce,{id:"max_length",type:"number",min:"1",value:d.max_length,onChange:z=>j({...d,max_length:parseInt(z.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大字符数"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"max_sentence_num",className:"text-xs font-medium",children:"最大句子数"}),e.jsx(ce,{id:"max_sentence_num",type:"number",min:"1",value:d.max_sentence_num,onChange:z=>j({...d,max_sentence_num:parseInt(z.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大句子数量"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"enable_kaomoji_protection",checked:d.enable_kaomoji_protection,onCheckedChange:z=>j({...d,enable_kaomoji_protection:z})}),e.jsx(y,{htmlFor:"enable_kaomoji_protection",className:"cursor-pointer",children:"启用颜文字保护"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"enable_overflow_return_all",checked:d.enable_overflow_return_all,onCheckedChange:z=>j({...d,enable_overflow_return_all:z})}),e.jsx(y,{htmlFor:"enable_overflow_return_all",className:"cursor-pointer",children:"超出时一次性返回全部"})]}),e.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"当句子数量超出限制时,合并后一次性返回所有内容"})]})]})})]})]})]})}function q0({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"情绪设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{checked:n.enable_mood,onCheckedChange:c=>r({...n,enable_mood:c})}),e.jsx(y,{className:"cursor-pointer",children:"启用情绪系统"})]}),n.enable_mood&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"情绪更新阈值"}),e.jsx(ce,{type:"number",min:"1",value:n.mood_update_threshold,onChange:c=>r({...n,mood_update_threshold:parseInt(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"越高,更新越慢"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"情感特征"}),e.jsx(Ft,{value:n.emotion_style,onChange:c=>r({...n,emotion_style:c.target.value}),placeholder:"影响情绪的变化情况",rows:2})]})]})]})]})}function G0({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"语音设置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{checked:n.enable_asr,onCheckedChange:c=>r({...n,enable_asr:c})}),e.jsx(y,{className:"cursor-pointer",children:"启用语音识别"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"启用后麦麦可以识别语音消息,需要配置语音识别模型"})]})}function V0({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{checked:n.enable,onCheckedChange:c=>r({...n,enable:c})}),e.jsx(y,{className:"cursor-pointer",children:"启用 LPMM 知识库"})]}),n.enable&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"LPMM 模式"}),e.jsxs(qe,{value:n.lpmm_mode,onValueChange:c=>r({...n,lpmm_mode:c}),children:[e.jsx(Be,{children:e.jsx(Ge,{placeholder:"选择 LPMM 模式"})}),e.jsxs(He,{children:[e.jsx(ie,{value:"classic",children:"经典模式"}),e.jsx(ie,{value:"agent",children:"Agent 模式"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"同义词搜索 TopK"}),e.jsx(ce,{type:"number",min:"1",value:n.rag_synonym_search_top_k,onChange:c=>r({...n,rag_synonym_search_top_k:parseInt(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"同义词阈值"}),e.jsx(ce,{type:"number",step:"0.1",min:"0",max:"1",value:n.rag_synonym_threshold,onChange:c=>r({...n,rag_synonym_threshold:parseFloat(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"实体提取线程数"}),e.jsx(ce,{type:"number",min:"1",value:n.info_extraction_workers,onChange:c=>r({...n,info_extraction_workers:parseInt(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"嵌入向量维度"}),e.jsx(ce,{type:"number",min:"1",value:n.embedding_dimension,onChange:c=>r({...n,embedding_dimension:parseInt(c.target.value)})})]})]})]})]})]})}function F0({config:n,onChange:r}){const[c,d]=u.useState(""),[h,x]=u.useState("WARNING"),f=()=>{c&&!n.suppress_libraries.includes(c)&&(r({...n,suppress_libraries:[...n.suppress_libraries,c]}),d(""))},j=w=>{r({...n,suppress_libraries:n.suppress_libraries.filter(L=>L!==w)})},p=()=>{c&&!n.library_log_levels[c]&&(r({...n,library_log_levels:{...n.library_log_levels,[c]:h}}),d(""),x("WARNING"))},N=w=>{const L={...n.library_log_levels};delete L[w],r({...n,library_log_levels:L})},v=["DEBUG","INFO","WARNING","ERROR","CRITICAL"],C=["FULL","compact","lite"],S=["none","title","full"];return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"日志配置"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"日期格式"}),e.jsx(ce,{value:n.date_style,onChange:w=>r({...n,date_style:w.target.value}),placeholder:"例如: m-d H:i:s"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"m=月, d=日, H=时, i=分, s=秒"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"日志级别样式"}),e.jsxs(qe,{value:n.log_level_style,onValueChange:w=>r({...n,log_level_style:w}),children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsx(He,{children:C.map(w=>e.jsx(ie,{value:w,children:w},w))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"日志文本颜色"}),e.jsxs(qe,{value:n.color_text,onValueChange:w=>r({...n,color_text:w}),children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsx(He,{children:S.map(w=>e.jsx(ie,{value:w,children:w},w))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"全局日志级别"}),e.jsxs(qe,{value:n.log_level,onValueChange:w=>r({...n,log_level:w}),children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsx(He,{children:v.map(w=>e.jsx(ie,{value:w,children:w},w))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"控制台日志级别"}),e.jsxs(qe,{value:n.console_log_level,onValueChange:w=>r({...n,console_log_level:w}),children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsx(He,{children:v.map(w=>e.jsx(ie,{value:w,children:w},w))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"文件日志级别"}),e.jsxs(qe,{value:n.file_log_level,onValueChange:w=>r({...n,file_log_level:w}),children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsx(He,{children:v.map(w=>e.jsx(ie,{value:w,children:w},w))})]})]})]})]}),e.jsxs("div",{children:[e.jsx(y,{className:"mb-2 block",children:"完全屏蔽的库"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(ce,{value:c,onChange:w=>d(w.target.value),placeholder:"输入库名",className:"flex-1",onKeyDown:w=>{w.key==="Enter"&&(w.preventDefault(),f())}}),e.jsx(b,{onClick:f,size:"sm",className:"flex-shrink-0",children:e.jsx(hs,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:n.suppress_libraries.map(w=>e.jsxs("div",{className:"flex items-center gap-1 bg-secondary px-3 py-1 rounded-md",children:[e.jsx("span",{className:"text-sm",children:w}),e.jsx(b,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0",onClick:()=>j(w),children:e.jsx(at,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},w))})]}),e.jsxs("div",{children:[e.jsx(y,{className:"mb-2 block",children:"特定库的日志级别"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(ce,{value:c,onChange:w=>d(w.target.value),placeholder:"输入库名",className:"flex-1"}),e.jsxs(qe,{value:h,onValueChange:x,children:[e.jsx(Be,{className:"w-32",children:e.jsx(Ge,{})}),e.jsx(He,{children:v.map(w=>e.jsx(ie,{value:w,children:w},w))})]}),e.jsx(b,{onClick:p,size:"sm",children:e.jsx(hs,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"space-y-2",children:Object.entries(n.library_log_levels).map(([w,L])=>e.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[e.jsx("span",{className:"text-sm font-medium",children:w}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:L}),e.jsx(b,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>N(w),children:e.jsx(at,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]})]},w))})]})]})}function $0({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"调试配置"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(y,{children:"显示 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否在日志中显示提示词"})]}),e.jsx(Qe,{checked:n.show_prompt,onCheckedChange:c=>r({...n,show_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(y,{children:"显示回复器 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的提示词"})]}),e.jsx(Qe,{checked:n.show_replyer_prompt,onCheckedChange:c=>r({...n,show_replyer_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(y,{children:"显示回复器推理"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的推理过程"})]}),e.jsx(Qe,{checked:n.show_replyer_reasoning,onCheckedChange:c=>r({...n,show_replyer_reasoning:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(y,{children:"显示 Jargon Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示术语相关的提示词"})]}),e.jsx(Qe,{checked:n.show_jargon_prompt,onCheckedChange:c=>r({...n,show_jargon_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(y,{children:"显示记忆检索 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示记忆检索相关的提示词"})]}),e.jsx(Qe,{checked:n.show_memory_prompt,onCheckedChange:c=>r({...n,show_memory_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(y,{children:"显示 Planner Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 Planner 的提示词和原始返回结果"})]}),e.jsx(Qe,{checked:n.show_planner_prompt,onCheckedChange:c=>r({...n,show_planner_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(y,{children:"显示 LPMM 相关文段"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 LPMM 知识库找到的相关文段日志"})]}),e.jsx(Qe,{checked:n.show_lpmm_paragraph,onCheckedChange:c=>r({...n,show_lpmm_paragraph:c})})]})]})]})}function Q0({config:n,onChange:r}){const[c,d]=u.useState(""),h=()=>{c&&!n.auth_token.includes(c)&&(r({...n,auth_token:[...n.auth_token,c]}),d(""))},x=f=>{r({...n,auth_token:n.auth_token.filter((j,p)=>p!==f)})};return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"MaimMessage 服务配置"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(y,{children:"启用自定义服务器"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否使用自定义的 MaimMessage 服务器"})]}),e.jsx(Qe,{checked:n.use_custom,onCheckedChange:f=>r({...n,use_custom:f})})]}),n.use_custom&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"主机地址"}),e.jsx(ce,{value:n.host,onChange:f=>r({...n,host:f.target.value}),placeholder:"127.0.0.1"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"端口号"}),e.jsx(ce,{type:"number",value:n.port,onChange:f=>r({...n,port:parseInt(f.target.value)}),placeholder:"8090"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"连接模式"}),e.jsxs(qe,{value:n.mode,onValueChange:f=>r({...n,mode:f}),children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"ws",children:"WebSocket (ws)"}),e.jsx(ie,{value:"tcp",children:"TCP"})]})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{checked:n.use_wss,onCheckedChange:f=>r({...n,use_wss:f}),disabled:n.mode!=="ws"}),e.jsx(y,{children:"使用 WSS 安全连接"})]})]}),n.use_wss&&n.mode==="ws"&&e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"SSL 证书文件路径"}),e.jsx(ce,{value:n.cert_file,onChange:f=>r({...n,cert_file:f.target.value}),placeholder:"cert.pem"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"SSL 密钥文件路径"}),e.jsx(ce,{value:n.key_file,onChange:f=>r({...n,key_file:f.target.value}),placeholder:"key.pem"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx(y,{className:"mb-2 block",children:"认证令牌"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:"用于 API 验证,为空则不启用验证"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(ce,{value:c,onChange:f=>d(f.target.value),placeholder:"输入认证令牌",onKeyDown:f=>{f.key==="Enter"&&(f.preventDefault(),h())}}),e.jsx(b,{onClick:h,size:"sm",children:e.jsx(hs,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"space-y-2",children:n.auth_token.map((f,j)=>e.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[e.jsx("span",{className:"text-sm font-mono",children:f}),e.jsx(b,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>x(j),children:e.jsx(at,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},j))})]})]})}function Y0({config:n,onChange:r}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"统计信息"}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(y,{children:"启用统计信息发送"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"发送匿名统计信息,帮助我们了解全球有多少只麦麦在运行"})]}),e.jsx(Qe,{checked:n.enable,onCheckedChange:c=>r({...n,enable:c})})]})]})}const li=u.forwardRef(({className:n,...r},c)=>e.jsx("div",{className:"relative w-full overflow-auto",children:e.jsx("table",{ref:c,className:Q("w-full caption-bottom text-sm",n),...r})}));li.displayName="Table";const ni=u.forwardRef(({className:n,...r},c)=>e.jsx("thead",{ref:c,className:Q("[&_tr]:border-b",n),...r}));ni.displayName="TableHeader";const ii=u.forwardRef(({className:n,...r},c)=>e.jsx("tbody",{ref:c,className:Q("[&_tr:last-child]:border-0",n),...r}));ii.displayName="TableBody";const X0=u.forwardRef(({className:n,...r},c)=>e.jsx("tfoot",{ref:c,className:Q("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",n),...r}));X0.displayName="TableFooter";const _s=u.forwardRef(({className:n,...r},c)=>e.jsx("tr",{ref:c,className:Q("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",n),...r}));_s.displayName="TableRow";const rt=u.forwardRef(({className:n,...r},c)=>e.jsx("th",{ref:c,className:Q("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",n),...r}));rt.displayName="TableHead";const Ze=u.forwardRef(({className:n,...r},c)=>e.jsx("td",{ref:c,className:Q("px-4 py-3 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",n),...r}));Ze.displayName="TableCell";const K0=u.forwardRef(({className:n,...r},c)=>e.jsx("caption",{ref:c,className:Q("mt-4 text-sm text-muted-foreground",n),...r}));K0.displayName="TableCaption";const ao=u.forwardRef(({className:n,...r},c)=>e.jsx(Vs,{ref:c,className:Q("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",n),...r}));ao.displayName=Vs.displayName;const lo=u.forwardRef(({className:n,...r},c)=>e.jsxs("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[e.jsx(zs,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),e.jsx(Vs.Input,{ref:c,className:Q("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",n),...r})]}));lo.displayName=Vs.Input.displayName;const no=u.forwardRef(({className:n,...r},c)=>e.jsx(Vs.List,{ref:c,className:Q("max-h-[300px] overflow-y-auto overflow-x-hidden",n),...r}));no.displayName=Vs.List.displayName;const io=u.forwardRef((n,r)=>e.jsx(Vs.Empty,{ref:r,className:"py-6 text-center text-sm",...n}));io.displayName=Vs.Empty.displayName;const fr=u.forwardRef(({className:n,...r},c)=>e.jsx(Vs.Group,{ref:c,className:Q("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",n),...r}));fr.displayName=Vs.Group.displayName;const Z0=u.forwardRef(({className:n,...r},c)=>e.jsx(Vs.Separator,{ref:c,className:Q("-mx-1 h-px bg-border",n),...r}));Z0.displayName=Vs.Separator.displayName;const pr=u.forwardRef(({className:n,...r},c)=>e.jsx(Vs.Item,{ref:c,className:Q("relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",n),...r}));pr.displayName=Vs.Item.displayName;const Cs=u.forwardRef(({className:n,...r},c)=>e.jsx(Kp,{ref:c,className:Q("grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",n),...r,children:e.jsx(Pb,{className:Q("grid place-content-center text-current"),children:e.jsx(Na,{className:"h-4 w-4"})})}));Cs.displayName=Kp.displayName;const Cg=u.createContext(null),kg="maibot-completed-tours";function J0(){try{const n=localStorage.getItem(kg);return n?new Set(JSON.parse(n)):new Set}catch{return new Set}}function lp(n){localStorage.setItem(kg,JSON.stringify([...n]))}function I0({children:n}){const[r,c]=u.useState({activeTourId:null,stepIndex:0,isRunning:!1}),d=u.useRef(new Map),[,h]=u.useState(0),[x,f]=u.useState(J0),j=u.useCallback((H,z)=>{d.current.set(H,z),h(V=>V+1)},[]),p=u.useCallback(H=>{d.current.delete(H),c(z=>z.activeTourId===H?{...z,activeTourId:null,isRunning:!1,stepIndex:0}:z)},[]),N=u.useCallback((H,z=0)=>{d.current.has(H)&&c({activeTourId:H,stepIndex:z,isRunning:!0})},[]),v=u.useCallback(()=>{c(H=>({...H,isRunning:!1}))},[]),C=u.useCallback(H=>{c(z=>({...z,stepIndex:H}))},[]),S=u.useCallback(()=>{c(H=>({...H,stepIndex:H.stepIndex+1}))},[]),w=u.useCallback(()=>{c(H=>({...H,stepIndex:Math.max(0,H.stepIndex-1)}))},[]),L=u.useCallback(()=>r.activeTourId?d.current.get(r.activeTourId)||[]:[],[r.activeTourId]),F=u.useCallback(H=>{f(z=>{const V=new Set(z);return V.add(H),lp(V),V})},[]),B=u.useCallback(H=>{const{action:z,index:V,status:Y,type:E}=H,R=["finished","skipped"];if(z==="close"){c(ne=>({...ne,isRunning:!1,stepIndex:0}));return}R.includes(Y)?c(ne=>(Y==="finished"&&ne.activeTourId&&setTimeout(()=>F(ne.activeTourId),0),{...ne,isRunning:!1,stepIndex:0})):E==="step:after"&&(z==="next"?c(ne=>({...ne,stepIndex:V+1})):z==="prev"&&c(ne=>({...ne,stepIndex:V-1})))},[F]),O=u.useCallback(H=>x.has(H),[x]),K=u.useCallback(H=>{f(z=>{const V=new Set(z);return V.delete(H),lp(V),V})},[]);return e.jsx(Cg.Provider,{value:{state:r,tours:d.current,registerTour:j,unregisterTour:p,startTour:N,stopTour:v,goToStep:C,nextStep:S,prevStep:w,getCurrentSteps:L,handleJoyrideCallback:B,isTourCompleted:O,markTourCompleted:F,resetTourCompleted:K},children:n})}function Xu(){const n=u.useContext(Cg);if(!n)throw new Error("useTour must be used within a TourProvider");return n}const P0={options:{zIndex:1e4,primaryColor:"hsl(var(--primary))",textColor:"hsl(var(--foreground))",backgroundColor:"hsl(var(--background))",arrowColor:"hsl(var(--background))",overlayColor:"rgba(0, 0, 0, 0.5)"},tooltip:{borderRadius:"var(--radius)",padding:"1rem"},tooltipContainer:{textAlign:"left"},tooltipTitle:{fontSize:"1rem",fontWeight:600,marginBottom:"0.5rem"},tooltipContent:{fontSize:"0.875rem",padding:"0.5rem 0"},buttonNext:{backgroundColor:"hsl(var(--primary))",color:"hsl(var(--primary-foreground))",borderRadius:"calc(var(--radius) - 2px)",fontSize:"0.875rem",padding:"0.5rem 1rem"},buttonBack:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem",marginRight:"0.5rem"},buttonSkip:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem"},buttonClose:{color:"hsl(var(--muted-foreground))"},spotlight:{borderRadius:"var(--radius)"}},W0={back:"上一步",close:"关闭",last:"完成",next:"下一步",nextLabelWithProgress:"下一步 ({step}/{steps})",open:"打开对话框",skip:"跳过"};function ew(){const{state:n,getCurrentSteps:r,handleJoyrideCallback:c}=Xu(),d=r(),[h,x]=u.useState(!1),f=u.useRef(n.stepIndex),j=u.useRef(null);u.useEffect(()=>{f.current!==n.stepIndex&&(x(!1),f.current=n.stepIndex)},[n.stepIndex]),u.useEffect(()=>{if(!n.isRunning||d.length===0){x(!1);return}const v=d[n.stepIndex];if(!v){x(!1);return}const C=v.target;if(C==="body"){x(!0);return}x(!1);const S=setTimeout(()=>{const w=()=>{const O=document.querySelector(C);if(O){const K=O.getBoundingClientRect();if(K.width>0&&K.height>0)return!0}return!1};if(w()){setTimeout(()=>x(!0),100);return}const L=setInterval(()=>{w()&&(clearInterval(L),setTimeout(()=>x(!0),100))},100),F=setTimeout(()=>{clearInterval(L),x(!0)},5e3),B=()=>{clearInterval(L),clearTimeout(F)};j.current=B},150);return()=>{clearTimeout(S),j.current&&(j.current(),j.current=null)}},[n.isRunning,n.stepIndex,d]);const p=u.useRef(null);if(u.useEffect(()=>{let v=document.getElementById("tour-portal-container");return v||(v=document.createElement("div"),v.id="tour-portal-container",v.style.cssText="position: fixed; top: 0; left: 0; z-index: 99999; pointer-events: none;",document.body.appendChild(v)),p.current=v,()=>{}},[]),!n.isRunning||d.length===0||!h)return null;const N=e.jsx(Fy,{steps:d,stepIndex:n.stepIndex,run:n.isRunning,continuous:!0,showSkipButton:!0,showProgress:!0,disableOverlayClose:!0,disableScrolling:!1,disableScrollParentFix:!1,callback:c,styles:P0,locale:W0,scrollOffset:80,scrollToFirstStep:!0,floaterProps:{styles:{floater:{zIndex:99999}},disableAnimation:!0}},`tour-step-${n.stepIndex}`);return p.current?eb.createPortal(N,p.current):N}const il="model-assignment-tour",Tg=[{target:"body",content:"本引导旨在帮助你配置模型提供商和对应的模型,并为麦麦的各个组件分配合适的模型。",placement:"center",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="sidebar-model-provider"]',content:'第一步,你需要配置模型提供商。模型提供商决定了你要使用谁家的模型,无论是单一厂商(如 DeepSeek),还是模型平台(如 Siliconflow),都可以在这里进行配置。点击"下一步"进入配置页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-provider-button"]',content:'点击"添加提供商"按钮,开始配置你的模型提供商。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="provider-dialog"]',content:"在这里,你可以选择你想要配置的模型提供商,填写相关信息后保存即可。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-name-input"]',content:"这里的名称是你为这个模型提供商起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-apikey-input"]',content:"这里需要填写你从模型提供商那里获取的 API 密钥,用于验证和调用模型服务。对于不同的提供商,获取 API 密钥的方式可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-url-input"]',content:"这里需要填写模型提供商的 API 访问地址,确保填写正确以便系统能够连接到模型服务。对于不同的提供商,API 地址可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-template-select"]',content:"当然,如果你不知道如何填写这些信息,很多模型提供商在这里都提供了预设的模板供你选择,选择对应的模板后,相关信息会自动填充。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-save-button"]',content:"填写完所有信息后,点击保存按钮,模型提供商就配置完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-cancel-button"]',content:"因为这次咱们什么都没有填写,所以点击取消按钮退出吧。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="sidebar-model-management"]',content:'配置好模型提供商后,接下来我们需要为麦麦添加模型并分配功能。点击"下一步"进入模型管理页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-model-button"]',content:'在为麦麦的组件分配模型之前,首先需要添加你想要分配的模型,点击"添加模型"按钮开始添加。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="model-dialog"]',content:"在这里,你可以选择你之前配置好的模型提供商,然后选择对应的模型来添加。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-name-input"]',content:"这里的模型名称是你为这个模型起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-provider-select"]',content:"在这里选择你之前配置好的模型提供商,这样系统才能知道你要添加哪个提供商的模型。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-identifier-input"]',content:"这里需要填写你想要添加的模型的标识符,不同的模型提供商可能有不同的标识符格式,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-save-button"]',content:"填写完所有信息后,点击保存按钮,模型就添加完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-cancel-button"]',content:"当然,因为这次咱们什么都没有填写,所以直接点击取消按钮退出吧,等你准备好了再来添加模型。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="tasks-tab-trigger"]',content:'最后一步,添加好模型后,切换到"为模型分配功能"标签页,为麦麦的各个组件分配合适的模型。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="task-model-select"]',content:"在这里,你可以为每个组件选择一个或多个合适的模型,选择完成后配置会自动保存。恭喜你完成了模型配置的学习!",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1}],Eg={0:"/config/model",1:"/config/model",2:"/config/modelProvider",3:"/config/modelProvider",4:"/config/modelProvider",5:"/config/modelProvider",6:"/config/modelProvider",7:"/config/modelProvider",8:"/config/modelProvider",9:"/config/modelProvider",10:"/config/modelProvider",11:"/config/model",12:"/config/model",13:"/config/model",14:"/config/model",15:"/config/model",16:"/config/model",17:"/config/model",18:"/config/model",19:"/config/model"},lr=[{id:"siliconflow",name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",client_type:"openai",display_name:"硅基流动 (SiliconFlow)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"deepseek",name:"DeepSeek",base_url:"https://api.deepseek.com",client_type:"openai",display_name:"DeepSeek",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"rinkoai",name:"RinkoAI",base_url:"https://rinkoai.com/v1",client_type:"openai",display_name:"RinkoAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"zhipu",name:"ZhipuAI",base_url:"https://open.bigmodel.cn/api/paas/v4",client_type:"openai",display_name:"智谱 AI (ZhipuAI / GLM)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"moonshot",name:"Moonshot",base_url:"https://api.moonshot.cn/v1",client_type:"openai",display_name:"月之暗面 (Moonshot / Kimi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"doubao",name:"Doubao",base_url:"https://ark.cn-beijing.volces.com/api/v3",client_type:"openai",display_name:"字节豆包 (Doubao)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"alibaba",name:"Alibaba",base_url:"https://dashscope.aliyuncs.com/compatible-mode/v1",client_type:"openai",display_name:"阿里云百炼 (Alibaba Qwen)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"baichuan",name:"Baichuan",base_url:"https://api.baichuan-ai.com/v1",client_type:"openai",display_name:"百川智能 (Baichuan)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"minimax",name:"MiniMax",base_url:"https://api.minimax.chat/v1",client_type:"openai",display_name:"MiniMax (海螺 AI)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"stepfun",name:"StepFun",base_url:"https://api.stepfun.com/v1",client_type:"openai",display_name:"阶跃星辰 (StepFun)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"lingyi",name:"Lingyi",base_url:"https://api.lingyiwanwu.com/v1",client_type:"openai",display_name:"零一万物 (Lingyi / Yi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"openai",name:"OpenAI",base_url:"https://api.openai.com/v1",client_type:"openai",display_name:"OpenAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"xai",name:"xAI",base_url:"https://api.x.ai/v1",client_type:"openai",display_name:"xAI (Grok)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"anthropic",name:"Anthropic",base_url:"https://api.anthropic.com/v1",client_type:"openai",display_name:"Anthropic (Claude)"},{id:"gemini",name:"Gemini",base_url:"https://generativelanguage.googleapis.com/v1beta",client_type:"gemini",display_name:"Google Gemini",modelFetcher:{endpoint:"/models",parser:"gemini"}},{id:"cohere",name:"Cohere",base_url:"https://api.cohere.ai/v1",client_type:"openai",display_name:"Cohere"},{id:"groq",name:"Groq",base_url:"https://api.groq.com/openai/v1",client_type:"openai",display_name:"Groq",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"together",name:"Together AI",base_url:"https://api.together.xyz/v1",client_type:"openai",display_name:"Together AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"fireworks",name:"Fireworks",base_url:"https://api.fireworks.ai/inference/v1",client_type:"openai",display_name:"Fireworks AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"mistral",name:"Mistral",base_url:"https://api.mistral.ai/v1",client_type:"openai",display_name:"Mistral AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"perplexity",name:"Perplexity",base_url:"https://api.perplexity.ai",client_type:"openai",display_name:"Perplexity AI"},{id:"custom",name:"",base_url:"",client_type:"openai",display_name:"自定义"}];function np(n){return n?n.replace(/\/+$/,"").toLowerCase():""}function tw(n){if(!n)return null;const r=np(n);return lr.find(c=>c.id!=="custom"&&np(c.base_url)===r)||null}function sw(){const[n,r]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,N]=u.useState(!1),[v,C]=u.useState(!1),[S,w]=u.useState(!1),[L,F]=u.useState(!1),[B,O]=u.useState(null),[K,H]=u.useState(null),[z,V]=u.useState("custom"),[Y,E]=u.useState(!1),[R,ne]=u.useState(!1),[fe,Ce]=u.useState(null),[we,pe]=u.useState(!1),[Ne,be]=u.useState(""),[A,X]=u.useState(new Set),[T,te]=u.useState(!1),[_,me]=u.useState(1),[oe,ae]=u.useState(20),[xe,ve]=u.useState(""),[de,G]=u.useState({}),[W,U]=u.useState(new Set),[ee,Se]=u.useState(new Map),{toast:Me}=Xt(),tt=fa(),{state:Xe,goToStep:Ut,registerTour:Bt}=Xu(),re=u.useRef(null),ke=u.useRef(!0);u.useEffect(()=>{Bt(il,Tg)},[Bt]),u.useEffect(()=>{if(Xe.activeTourId===il&&Xe.isRunning){const P=Eg[Xe.stepIndex];P&&!window.location.pathname.endsWith(P.replace("/config/",""))&&tt({to:P})}},[Xe.stepIndex,Xe.activeTourId,Xe.isRunning,tt]);const Pe=u.useRef(Xe.stepIndex);u.useEffect(()=>{if(Xe.activeTourId===il&&Xe.isRunning){const P=Pe.current,ye=Xe.stepIndex;P>=3&&P<=9&&ye<3&&F(!1),P>=10&&ye>=3&&ye<=9&&(G({}),V("custom"),O({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10}),H(null),pe(!1),F(!0)),Pe.current=ye}},[Xe.stepIndex,Xe.activeTourId,Xe.isRunning]),u.useEffect(()=>{if(Xe.activeTourId!==il||!Xe.isRunning)return;const P=ye=>{const Re=ye.target,us=Xe.stepIndex;us===2&&Re.closest('[data-tour="add-provider-button"]')?setTimeout(()=>Ut(3),300):us===9&&Re.closest('[data-tour="provider-cancel-button"]')&&setTimeout(()=>Ut(10),300)};return document.addEventListener("click",P,!0),()=>document.removeEventListener("click",P,!0)},[Xe,Ut]),u.useEffect(()=>{Fe()},[]);const Fe=async()=>{try{d(!0);const P=await ei();r(P.api_providers||[]),N(!1),ke.current=!1}catch(P){console.error("加载配置失败:",P)}finally{d(!1)}},ts=async()=>{try{C(!0),so().catch(()=>{}),w(!0)}catch(P){console.error("重启失败:",P),w(!1),Me({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),C(!1)}},As=async()=>{try{x(!0),re.current&&clearTimeout(re.current);const P=await ei();P.api_providers=n,await eo(P),N(!1),Me({title:"保存成功",description:"正在重启麦麦..."}),await ts()}catch(P){console.error("保存配置失败:",P),Me({title:"保存失败",description:P.message,variant:"destructive"}),x(!1)}},js=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},Ke=()=>{w(!1),C(!1),Me({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},D=u.useCallback(async P=>{if(!ke.current)try{j(!0),await Ou("api_providers",P),N(!1)}catch(ye){console.error("自动保存失败:",ye),N(!0)}finally{j(!1)}},[]);u.useEffect(()=>{if(!ke.current)return N(!0),re.current&&clearTimeout(re.current),re.current=setTimeout(()=>{D(n)},2e3),()=>{re.current&&clearTimeout(re.current)}},[n,D]);const De=async()=>{try{x(!0),re.current&&clearTimeout(re.current);const P=await ei();P.api_providers=n,await eo(P),N(!1),Me({title:"保存成功",description:"模型提供商配置已保存"})}catch(P){console.error("保存配置失败:",P),Me({title:"保存失败",description:P.message,variant:"destructive"})}finally{x(!1)}},ze=(P,ye)=>{if(G({}),P){const Re=lr.find(us=>us.base_url===P.base_url&&us.client_type===P.client_type);V(Re?.id||"custom"),O(P)}else V("custom"),O({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10});H(ye),pe(!1),F(!0)},Ve=P=>{V(P),E(!1);const ye=lr.find(Re=>Re.id===P);ye&&ye.id!=="custom"?O(Re=>({...Re,name:ye.name,base_url:ye.base_url,client_type:ye.client_type})):ye?.id==="custom"&&O(Re=>({...Re,name:"",base_url:"",client_type:"openai"}))},At=u.useMemo(()=>z!=="custom",[z]),We=async()=>{if(B?.api_key)try{await navigator.clipboard.writeText(B.api_key),Me({title:"复制成功",description:"API Key 已复制到剪贴板"})}catch{Me({title:"复制失败",description:"无法访问剪贴板",variant:"destructive"})}},ss=()=>{if(!B)return;const P={};if(B.name?.trim()||(P.name="请输入提供商名称"),B.base_url?.trim()||(P.base_url="请输入基础 URL"),B.api_key?.trim()||(P.api_key="请输入 API Key"),Object.keys(P).length>0){G(P);return}G({});const ye={...B,max_retry:B.max_retry??2,timeout:B.timeout??30,retry_interval:B.retry_interval??10};if(K!==null){const Re=[...n];Re[K]=ye,r(Re)}else r([...n,ye]);F(!1),O(null),H(null)},gt=P=>{if(!P&&B){const ye={...B,max_retry:B.max_retry??2,timeout:B.timeout??30,retry_interval:B.retry_interval??10};O(ye)}F(P)},_e=P=>{Ce(P),ne(!0)},je=()=>{if(fe!==null){const P=n.filter((ye,Re)=>Re!==fe);r(P),Me({title:"删除成功",description:"提供商已从列表中移除"})}ne(!1),Ce(null)},yt=P=>{const ye=new Set(A);ye.has(P)?ye.delete(P):ye.add(P),X(ye)},Ht=()=>{if(A.size===Kt.length)X(new Set);else{const P=Kt.map((ye,Re)=>n.findIndex(us=>us===Kt[Re]));X(new Set(P))}},pa=()=>{if(A.size===0){Me({title:"提示",description:"请先选择要删除的提供商",variant:"default"});return}te(!0)},Ts=()=>{const P=n.filter((ye,Re)=>!A.has(Re));r(P),X(new Set),te(!1),Me({title:"批量删除成功",description:`已删除 ${A.size} 个提供商`})},Kt=n.filter(P=>{if(!Ne)return!0;const ye=Ne.toLowerCase();return P.name.toLowerCase().includes(ye)||P.base_url.toLowerCase().includes(ye)||P.client_type.toLowerCase().includes(ye)}),Ms=Math.ceil(Kt.length/oe),Ds=Kt.slice((_-1)*oe,_*oe),Ha=()=>{const P=parseInt(xe);P>=1&&P<=Ms&&(me(P),ve(""))},Fs=async P=>{U(ye=>new Set(ye).add(P));try{const ye=await C0(P);Se(Re=>new Map(Re).set(P,ye)),ye.network_ok?ye.api_key_valid===!0?Me({title:"连接正常",description:`${P} 网络连接正常,API Key 有效 (${ye.latency_ms}ms)`}):ye.api_key_valid===!1?Me({title:"连接正常但 Key 无效",description:`${P} 网络连接正常,但 API Key 无效或已过期`,variant:"destructive"}):Me({title:"网络连接正常",description:`${P} 可以访问 (${ye.latency_ms}ms)`}):Me({title:"连接失败",description:ye.error||"无法连接到提供商",variant:"destructive"})}catch(ye){Me({title:"测试失败",description:ye.message,variant:"destructive"})}finally{U(ye=>{const Re=new Set(ye);return Re.delete(P),Re})}},qa=async()=>{for(const P of n)await Fs(P.name)},Sa=P=>{const ye=W.has(P),Re=ee.get(P);return ye?e.jsxs(Je,{variant:"secondary",className:"gap-1",children:[e.jsx(Ss,{className:"h-3 w-3 animate-spin"}),"测试中"]}):Re?Re.network_ok?Re.api_key_valid===!0?e.jsxs(Je,{className:"gap-1 bg-green-600 hover:bg-green-700",children:[e.jsx(ha,{className:"h-3 w-3"}),"正常"]}):Re.api_key_valid===!1?e.jsxs(Je,{variant:"destructive",className:"gap-1",children:[e.jsx(Oa,{className:"h-3 w-3"}),"Key无效"]}):e.jsxs(Je,{className:"gap-1 bg-blue-600 hover:bg-blue-700",children:[e.jsx(ha,{className:"h-3 w-3"}),"可访问"]}):e.jsxs(Je,{variant:"destructive",className:"gap-1",children:[e.jsx(sg,{className:"h-3 w-3"}),"离线"]}):null};return c?e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})}):e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"AI模型厂商配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理 AI 模型厂商的 API 配置"})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[A.size>0&&e.jsxs(b,{onClick:pa,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(at,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",A.size,")"]}),e.jsxs(b,{onClick:qa,size:"sm",variant:"outline",className:"w-full sm:w-auto",disabled:n.length===0||W.size>0,children:[e.jsx(ln,{className:"mr-2 h-4 w-4"}),W.size>0?`测试中 (${W.size})`:"测试全部"]}),e.jsxs(b,{onClick:()=>ze(null,null),size:"sm",className:"w-full sm:w-auto","data-tour":"add-provider-button",children:[e.jsx(hs,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加提供商"]}),e.jsxs(b,{onClick:De,disabled:h||f||!p||v,size:"sm",variant:"outline",className:"w-full sm:w-auto sm:min-w-[120px]",children:[e.jsx(jr,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),h?"保存中...":f?"自动保存中...":p?"保存配置":"已保存"]}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsxs(b,{disabled:h||f||v,size:"sm",className:"w-full sm:w-auto sm:min-w-[120px]",children:[e.jsx(gr,{className:"mr-2 h-4 w-4"}),v?"重启中...":p?"保存并重启":"重启麦麦"]})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认重启麦麦?"}),e.jsx(xt,{asChild:!0,children:e.jsx("div",{children:e.jsx("p",{children:p?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"})})})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:p?As:ts,children:p?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsxs(cl,{children:[e.jsx(Ra,{className:"h-4 w-4"}),e.jsxs(ol,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),e.jsxs(st,{className:"h-[calc(100vh-260px)]",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2 mb-4",children:[e.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[e.jsx(zs,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索提供商名称、URL 或类型...",value:Ne,onChange:P=>be(P.target.value),className:"pl-9"})]}),Ne&&e.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",Kt.length," 个结果"]})]}),e.jsx("div",{className:"md:hidden space-y-3",children:Kt.length===0?e.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:Ne?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'}):Ds.map((P,ye)=>{const Re=n.findIndex(us=>us===P);return e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("h3",{className:"font-semibold text-base truncate",children:P.name}),Sa(P.name)]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1 break-all",children:P.base_url})]}),e.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>Fs(P.name),disabled:W.has(P.name),title:"测试连接",children:W.has(P.name)?e.jsx(Ss,{className:"h-4 w-4 animate-spin"}):e.jsx(ln,{className:"h-4 w-4"})}),e.jsx(b,{variant:"default",size:"sm",onClick:()=>ze(P,Re),children:e.jsx(nn,{className:"h-4 w-4",strokeWidth:2,fill:"none"})}),e.jsx(b,{size:"sm",onClick:()=>_e(Re),className:"bg-red-600 hover:bg-red-700 text-white",children:e.jsx(at,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"客户端类型"}),e.jsx("p",{className:"font-medium",children:P.client_type})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"最大重试"}),e.jsx("p",{className:"font-medium",children:P.max_retry})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"超时(秒)"}),e.jsx("p",{className:"font-medium",children:P.timeout})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"重试间隔(秒)"}),e.jsx("p",{className:"font-medium",children:P.retry_interval})]})]})]},ye)})}),e.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(li,{children:[e.jsx(ni,{children:e.jsxs(_s,{children:[e.jsx(rt,{className:"w-12",children:e.jsx(Cs,{checked:A.size===Kt.length&&Kt.length>0,onCheckedChange:Ht})}),e.jsx(rt,{children:"状态"}),e.jsx(rt,{children:"名称"}),e.jsx(rt,{children:"基础URL"}),e.jsx(rt,{children:"客户端类型"}),e.jsx(rt,{className:"text-right",children:"最大重试"}),e.jsx(rt,{className:"text-right",children:"超时(秒)"}),e.jsx(rt,{className:"text-right",children:"重试间隔(秒)"}),e.jsx(rt,{className:"text-right",children:"操作"})]})}),e.jsx(ii,{children:Ds.length===0?e.jsx(_s,{children:e.jsx(Ze,{colSpan:9,className:"text-center text-muted-foreground py-8",children:Ne?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'})}):Ds.map((P,ye)=>{const Re=n.findIndex(us=>us===P);return e.jsxs(_s,{children:[e.jsx(Ze,{children:e.jsx(Cs,{checked:A.has(Re),onCheckedChange:()=>yt(Re)})}),e.jsx(Ze,{children:Sa(P.name)||e.jsx(Je,{variant:"outline",className:"text-muted-foreground",children:"未测试"})}),e.jsx(Ze,{className:"font-medium",children:P.name}),e.jsx(Ze,{className:"max-w-xs truncate",title:P.base_url,children:P.base_url}),e.jsx(Ze,{children:P.client_type}),e.jsx(Ze,{className:"text-right",children:P.max_retry}),e.jsx(Ze,{className:"text-right",children:P.timeout}),e.jsx(Ze,{className:"text-right",children:P.retry_interval}),e.jsx(Ze,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>Fs(P.name),disabled:W.has(P.name),title:"测试连接",children:W.has(P.name)?e.jsx(Ss,{className:"h-4 w-4 animate-spin"}):e.jsx(ln,{className:"h-4 w-4"})}),e.jsxs(b,{variant:"default",size:"sm",onClick:()=>ze(P,Re),children:[e.jsx(nn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(b,{size:"sm",onClick:()=>_e(Re),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(at,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},ye)})})]})})}),Kt.length>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{htmlFor:"page-size-provider",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(qe,{value:oe.toString(),onValueChange:P=>{ae(parseInt(P)),me(1),X(new Set)},children:[e.jsx(Be,{id:"page-size-provider",className:"w-20",children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"10",children:"10"}),e.jsx(ie,{value:"20",children:"20"}),e.jsx(ie,{value:"50",children:"50"}),e.jsx(ie,{value:"100",children:"100"})]})]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(_-1)*oe+1," 到"," ",Math.min(_*oe,Kt.length)," 条,共 ",Kt.length," 条"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>me(1),disabled:_===1,className:"hidden sm:flex",children:e.jsx(vr,{className:"h-4 w-4"})}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>me(P=>Math.max(1,P-1)),disabled:_===1,children:[e.jsx(dn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:xe,onChange:P=>ve(P.target.value),onKeyDown:P=>P.key==="Enter"&&Ha(),placeholder:_.toString(),className:"w-16 h-8 text-center",min:1,max:Ms}),e.jsx(b,{variant:"outline",size:"sm",onClick:Ha,disabled:!xe,className:"h-8",children:"跳转"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>me(P=>P+1),disabled:_>=Ms,children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(Ll,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>me(Ms),disabled:_>=Ms,className:"hidden sm:flex",children:e.jsx(br,{className:"h-4 w-4"})})]})]})]}),e.jsx(Jt,{open:L,onOpenChange:gt,children:e.jsxs($t,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"provider-dialog",preventOutsideClose:Xe.isRunning,children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:K!==null?"编辑提供商":"添加提供商"}),e.jsx(ds,{children:"配置 API 提供商的连接信息和参数"})]}),e.jsxs("form",{onSubmit:P=>{P.preventDefault(),ss()},autoComplete:"off",children:[e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":"provider-template-select",children:[e.jsx(y,{htmlFor:"template",children:"提供商模板"}),e.jsxs(Ua,{open:Y,onOpenChange:E,children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(b,{variant:"outline",role:"combobox","aria-expanded":Y,className:"w-full justify-between",children:[z?lr.find(P=>P.id===z)?.display_name:"选择提供商模板...",e.jsx(qu,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(_a,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:e.jsxs(ao,{children:[e.jsx(lo,{placeholder:"搜索提供商模板..."}),e.jsx(st,{className:"h-[300px]",children:e.jsxs(no,{className:"max-h-none overflow-visible",children:[e.jsx(io,{children:"未找到匹配的模板"}),e.jsx(fr,{children:lr.map(P=>e.jsxs(pr,{value:P.display_name,onSelect:()=>Ve(P.id),children:[e.jsx(Na,{className:`mr-2 h-4 w-4 ${z===P.id?"opacity-100":"opacity-0"}`}),P.display_name]},P.id))})]})})]})})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"选择预设模板可自动填充 URL 和客户端类型,支持搜索"})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-name-input",children:[e.jsx(y,{htmlFor:"name",className:de.name?"text-destructive":"",children:"名称 *"}),e.jsx(ce,{id:"name",value:B?.name||"",onChange:P=>{O(ye=>ye?{...ye,name:P.target.value}:null),de.name&&G(ye=>({...ye,name:void 0}))},placeholder:"例如: DeepSeek, SiliconFlow",className:de.name?"border-destructive focus-visible:ring-destructive":""}),de.name&&e.jsx("p",{className:"text-xs text-destructive",children:de.name})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-url-input",children:[e.jsx(y,{htmlFor:"base_url",className:de.base_url?"text-destructive":"",children:"基础 URL *"}),e.jsx(ce,{id:"base_url",value:B?.base_url||"",onChange:P=>{O(ye=>ye?{...ye,base_url:P.target.value}:null),de.base_url&&G(ye=>({...ye,base_url:void 0}))},placeholder:"https://api.example.com/v1",disabled:At,className:`${At?"bg-muted cursor-not-allowed":""} ${de.base_url?"border-destructive focus-visible:ring-destructive":""}`}),de.base_url&&e.jsx("p",{className:"text-xs text-destructive",children:de.base_url}),At&&!de.base_url&&e.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时 URL 不可编辑,切换到"自定义"以手动配置'})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-apikey-input",children:[e.jsx(y,{htmlFor:"api_key",className:de.api_key?"text-destructive":"",children:"API Key *"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{id:"api_key",type:we?"text":"password",value:B?.api_key||"",onChange:P=>{O(ye=>ye?{...ye,api_key:P.target.value}:null),de.api_key&&G(ye=>({...ye,api_key:void 0}))},placeholder:"sk-...",className:`flex-1 ${de.api_key?"border-destructive focus-visible:ring-destructive":""}`}),e.jsx(b,{type:"button",variant:"outline",size:"icon",onClick:()=>pe(!we),title:we?"隐藏密钥":"显示密钥",children:we?e.jsx(or,{className:"h-4 w-4"}):e.jsx(Ws,{className:"h-4 w-4"})}),e.jsx(b,{type:"button",variant:"outline",size:"icon",onClick:We,title:"复制密钥",children:e.jsx(Jc,{className:"h-4 w-4"})})]}),de.api_key&&e.jsx("p",{className:"text-xs text-destructive",children:de.api_key})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"client_type",children:"客户端类型"}),e.jsxs(qe,{value:B?.client_type||"openai",onValueChange:P=>O(ye=>ye?{...ye,client_type:P}:null),disabled:At,children:[e.jsx(Be,{id:"client_type",className:At?"bg-muted cursor-not-allowed":"",children:e.jsx(Ge,{placeholder:"选择客户端类型"})}),e.jsxs(He,{children:[e.jsx(ie,{value:"openai",children:"OpenAI"}),e.jsx(ie,{value:"gemini",children:"Gemini"})]})]}),At&&e.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时客户端类型不可编辑,切换到"自定义"以手动配置'})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"max_retry",children:"最大重试"}),e.jsx(ce,{id:"max_retry",type:"number",min:"0",value:B?.max_retry??"",onChange:P=>{const ye=P.target.value===""?null:parseInt(P.target.value);O(Re=>Re?{...Re,max_retry:ye}:null)},placeholder:"默认: 2"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"timeout",children:"超时(秒)"}),e.jsx(ce,{id:"timeout",type:"number",min:"1",value:B?.timeout??"",onChange:P=>{const ye=P.target.value===""?null:parseInt(P.target.value);O(Re=>Re?{...Re,timeout:ye}:null)},placeholder:"默认: 30"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"retry_interval",children:"重试间隔(秒)"}),e.jsx(ce,{id:"retry_interval",type:"number",min:"1",value:B?.retry_interval??"",onChange:P=>{const ye=P.target.value===""?null:parseInt(P.target.value);O(Re=>Re?{...Re,retry_interval:ye}:null)},placeholder:"默认: 10"})]})]})]}),e.jsxs(xs,{children:[e.jsx(b,{type:"button",variant:"outline",onClick:()=>F(!1),"data-tour":"provider-cancel-button",children:"取消"}),e.jsx(b,{type:"submit","data-tour":"provider-save-button",children:"保存"})]})]})]})}),e.jsx(bt,{open:R,onOpenChange:ne,children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:['确定要删除提供商 "',fe!==null?n[fe]?.name:"",'" 吗? 此操作无法撤销。']})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:je,children:"删除"})]})]})}),e.jsx(bt,{open:T,onOpenChange:te,children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认批量删除"}),e.jsxs(xt,{children:["确定要删除选中的 ",A.size," 个提供商吗? 此操作无法撤销。"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:Ts,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),S&&e.jsx(Yu,{onRestartComplete:js,onRestartFailed:Ke})]})}function aw({value:n,label:r,onRemove:c}){const{attributes:d,listeners:h,setNodeRef:x,transform:f,transition:j,isDragging:p}=eN({id:n}),N={transform:tN.Transform.toString(f),transition:j,opacity:p?.5:1},v=S=>{S.preventDefault(),S.stopPropagation(),c(n)},C=S=>{S.stopPropagation()};return e.jsx("div",{ref:x,style:N,className:Q("inline-flex items-center gap-1",p&&"shadow-lg"),children:e.jsxs(Je,{variant:"secondary",className:"cursor-move hover:bg-secondary/80 flex items-center gap-1",children:[e.jsx("div",{...d,...h,className:"cursor-grab active:cursor-grabbing flex items-center",children:e.jsx(jy,{className:"h-3 w-3 text-muted-foreground"})}),e.jsx("span",{children:r}),e.jsx("button",{type:"button",className:"ml-1 rounded-sm hover:bg-destructive/20 focus:outline-none focus:ring-1 focus:ring-destructive",onClick:v,onPointerDown:C,onMouseDown:S=>S.stopPropagation(),children:e.jsx(on,{className:"h-3 w-3 cursor-pointer hover:text-destructive",strokeWidth:2,fill:"none"})})]})})}function lw({options:n,selected:r,onChange:c,placeholder:d="选择选项...",emptyText:h="未找到选项",className:x}){const[f,j]=u.useState(!1),p=Qy(Yf(Wy,{activationConstraint:{distance:8}}),Yf(Py,{coordinateGetter:Iy})),N=S=>{r.includes(S)?c(r.filter(w=>w!==S)):c([...r,S])},v=S=>{c(r.filter(w=>w!==S))},C=S=>{const{active:w,over:L}=S;if(L&&w.id!==L.id){const F=r.indexOf(w.id),B=r.indexOf(L.id);c(Jy(r,F,B))}};return e.jsxs(Ua,{open:f,onOpenChange:j,children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(b,{variant:"outline",role:"combobox","aria-expanded":f,className:Q("w-full justify-between min-h-10 h-auto",x),children:[e.jsx(Yy,{sensors:p,collisionDetection:Xy,onDragEnd:C,children:e.jsx(Ky,{items:r,strategy:Zy,children:e.jsx("div",{className:"flex gap-1 flex-wrap flex-1",children:r.length===0?e.jsx("span",{className:"text-muted-foreground",children:d}):r.map(S=>{const w=n.find(L=>L.value===S);return e.jsx(aw,{value:S,label:w?.label||S,onRemove:v},S)})})})}),e.jsx(qu,{className:"ml-2 h-4 w-4 shrink-0 opacity-50",strokeWidth:2,fill:"none"})]})}),e.jsx(_a,{className:"w-full p-0",align:"start",children:e.jsxs(ao,{children:[e.jsx(lo,{placeholder:"搜索...",className:"h-9"}),e.jsxs(no,{children:[e.jsx(io,{children:h}),e.jsx(fr,{children:n.map(S=>{const w=r.includes(S.value);return e.jsxs(pr,{value:S.value,onSelect:()=>N(S.value),children:[e.jsx("div",{className:Q("mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary",w?"bg-primary text-primary-foreground":"opacity-50 [&_svg]:invisible"),children:e.jsx(Na,{className:"h-3 w-3",strokeWidth:2,fill:"none"})}),e.jsx("span",{children:S.label})]},S.value)})})]})]})})]})}const ip=new Map,nw=300*1e3;function iw(){const[n,r]=u.useState([]),[c,d]=u.useState([]),[h,x]=u.useState([]),[f,j]=u.useState([]),[p,N]=u.useState(null),[v,C]=u.useState(!0),[S,w]=u.useState(!1),[L,F]=u.useState(!1),[B,O]=u.useState(!1),[K,H]=u.useState(!1),[z,V]=u.useState(!1),[Y,E]=u.useState(!1),[R,ne]=u.useState(null),[fe,Ce]=u.useState(null),[we,pe]=u.useState(!1),[Ne,be]=u.useState(null),[A,X]=u.useState(""),[T,te]=u.useState(new Set),[_,me]=u.useState(!1),[oe,ae]=u.useState(1),[xe,ve]=u.useState(20),[de,G]=u.useState(""),[W,U]=u.useState([]),[ee,Se]=u.useState(!1),[Me,tt]=u.useState(null),[Xe,Ut]=u.useState(!1),[Bt,re]=u.useState(null),[ke,Pe]=u.useState({}),{toast:Fe}=Xt(),ts=fa(),{registerTour:As,startTour:js,state:Ke,goToStep:D}=Xu(),De=u.useRef(null),ze=u.useRef(null),Ve=u.useRef(!0);u.useEffect(()=>{As(il,Tg)},[As]),u.useEffect(()=>{if(Ke.activeTourId===il&&Ke.isRunning){const $=Eg[Ke.stepIndex];$&&!window.location.pathname.endsWith($.replace("/config/",""))&&ts({to:$})}},[Ke.stepIndex,Ke.activeTourId,Ke.isRunning,ts]);const At=u.useRef(Ke.stepIndex);u.useEffect(()=>{if(Ke.activeTourId===il&&Ke.isRunning){const $=At.current,ge=Ke.stepIndex;$>=12&&$<=17&&ge<12&&E(!1),At.current=ge}},[Ke.stepIndex,Ke.activeTourId,Ke.isRunning]),u.useEffect(()=>{if(Ke.activeTourId!==il||!Ke.isRunning)return;const $=ge=>{const Le=ge.target,$e=Ke.stepIndex;$e===2&&Le.closest('[data-tour="add-provider-button"]')?setTimeout(()=>D(3),300):$e===9&&Le.closest('[data-tour="provider-cancel-button"]')?setTimeout(()=>D(10),300):$e===11&&Le.closest('[data-tour="add-model-button"]')?setTimeout(()=>D(12),300):$e===17&&Le.closest('[data-tour="model-cancel-button"]')?setTimeout(()=>D(18),300):$e===18&&Le.closest('[data-tour="tasks-tab-trigger"]')&&setTimeout(()=>D(19),300)};return document.addEventListener("click",$,!0),()=>document.removeEventListener("click",$,!0)},[Ke,D]);const We=()=>{js(il)};u.useEffect(()=>{ss()},[]);const ss=async()=>{try{C(!0);const $=await ei(),ge=$.models||[];r(ge),j(ge.map($e=>$e.name));const Le=$.api_providers||[];d(Le.map($e=>$e.name)),x(Le),N($.model_task_config||null),O(!1),Ve.current=!1}catch($){console.error("加载配置失败:",$)}finally{C(!1)}},gt=u.useCallback($=>h.find(ge=>ge.name===$),[h]),_e=u.useCallback(async($,ge=!1)=>{const Le=gt($);if(!Le?.base_url){U([]),re(null),tt('提供商配置不完整,请先在"模型提供商配置"中配置');return}if(!Le.api_key){U([]),re(null),tt('该提供商未配置 API Key,请先在"模型提供商配置"中填写');return}const $e=tw(Le.base_url);if(re($e),!$e?.modelFetcher){U([]),tt(null);return}const jt=`${$}:${Le.base_url}`,ea=ip.get(jt);if(!ge&&ea&&Date.now()-ea.timestamp{Y&&R?.api_provider&&_e(R.api_provider)},[Y,R?.api_provider,_e]);const je=async()=>{try{H(!0),so().catch(()=>{}),V(!0)}catch($){console.error("重启失败:",$),V(!1),Fe({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),H(!1)}},yt=async()=>{try{w(!0),De.current&&clearTimeout(De.current),ze.current&&clearTimeout(ze.current);const $=await ei();$.models=n,$.model_task_config=p,await eo($),O(!1),Fe({title:"保存成功",description:"正在重启麦麦..."}),await je()}catch($){console.error("保存配置失败:",$),Fe({title:"保存失败",description:$.message,variant:"destructive"}),w(!1)}},Ht=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},pa=()=>{V(!1),H(!1),Fe({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},Ts=u.useCallback(async $=>{if(!Ve.current)try{F(!0),await Ou("models",$),O(!1)}catch(ge){console.error("自动保存模型列表失败:",ge),O(!0)}finally{F(!1)}},[]),Kt=u.useCallback(async $=>{if(!Ve.current)try{F(!0),await Ou("model_task_config",$),O(!1)}catch(ge){console.error("自动保存任务配置失败:",ge),O(!0)}finally{F(!1)}},[]);u.useEffect(()=>{if(!Ve.current)return O(!0),De.current&&clearTimeout(De.current),De.current=setTimeout(()=>{Ts(n)},2e3),()=>{De.current&&clearTimeout(De.current)}},[n,Ts]),u.useEffect(()=>{if(!(Ve.current||!p))return O(!0),ze.current&&clearTimeout(ze.current),ze.current=setTimeout(()=>{Kt(p)},2e3),()=>{ze.current&&clearTimeout(ze.current)}},[p,Kt]);const Ms=async()=>{try{w(!0),De.current&&clearTimeout(De.current),ze.current&&clearTimeout(ze.current);const $=await ei();$.models=n,$.model_task_config=p,await eo($),O(!1),Fe({title:"保存成功",description:"模型配置已保存"}),await ss()}catch($){console.error("保存配置失败:",$),Fe({title:"保存失败",description:$.message,variant:"destructive"})}finally{w(!1)}},Ds=($,ge)=>{Pe({}),ne($||{model_identifier:"",name:"",api_provider:c[0]||"",price_in:0,price_out:0,force_stream_mode:!1,extra_params:{}}),Ce(ge),E(!0)},Ha=()=>{if(!R)return;const $={};if(R.name?.trim()||($.name="请输入模型名称"),R.api_provider?.trim()||($.api_provider="请选择 API 提供商"),R.model_identifier?.trim()||($.model_identifier="请输入模型标识符"),Object.keys($).length>0){Pe($);return}Pe({});const ge={...R,price_in:R.price_in??0,price_out:R.price_out??0};let Le,$e=null;if(fe!==null?($e=n[fe].name,Le=[...n],Le[fe]=ge):Le=[...n,ge],r(Le),j(Le.map(jt=>jt.name)),$e&&$e!==ge.name&&p){const jt=ea=>ea.map(ta=>ta===$e?ge.name:ta);N({...p,utils:{...p.utils,model_list:jt(p.utils?.model_list||[])},utils_small:{...p.utils_small,model_list:jt(p.utils_small?.model_list||[])},tool_use:{...p.tool_use,model_list:jt(p.tool_use?.model_list||[])},replyer:{...p.replyer,model_list:jt(p.replyer?.model_list||[])},planner:{...p.planner,model_list:jt(p.planner?.model_list||[])},vlm:{...p.vlm,model_list:jt(p.vlm?.model_list||[])},voice:{...p.voice,model_list:jt(p.voice?.model_list||[])},embedding:{...p.embedding,model_list:jt(p.embedding?.model_list||[])},lpmm_entity_extract:{...p.lpmm_entity_extract,model_list:jt(p.lpmm_entity_extract?.model_list||[])},lpmm_rdf_build:{...p.lpmm_rdf_build,model_list:jt(p.lpmm_rdf_build?.model_list||[])},lpmm_qa:{...p.lpmm_qa,model_list:jt(p.lpmm_qa?.model_list||[])}})}E(!1),ne(null),Ce(null)},Fs=$=>{if(!$&&R){const ge={...R,price_in:R.price_in??0,price_out:R.price_out??0};ne(ge)}E($)},qa=$=>{be($),pe(!0)},Sa=()=>{if(Ne!==null){const $=n.filter((ge,Le)=>Le!==Ne);r($),j($.map(ge=>ge.name)),Fe({title:"删除成功",description:"模型已从列表中移除"})}pe(!1),be(null)},P=$=>{const ge=new Set(T);ge.has($)?ge.delete($):ge.add($),te(ge)},ye=()=>{if(T.size===Os.length)te(new Set);else{const $=Os.map((ge,Le)=>n.findIndex($e=>$e===Os[Le]));te(new Set($))}},Re=()=>{if(T.size===0){Fe({title:"提示",description:"请先选择要删除的模型",variant:"default"});return}me(!0)},us=()=>{const $=n.filter((ge,Le)=>!T.has(Le));r($),j($.map(ge=>ge.name)),te(new Set),me(!1),Fe({title:"批量删除成功",description:`已删除 ${T.size} 个模型`})},$s=($,ge,Le)=>{p&&N({...p,[$]:{...p[$],[ge]:Le}})},Os=n.filter($=>{if(!A)return!0;const ge=A.toLowerCase();return $.name.toLowerCase().includes(ge)||$.model_identifier.toLowerCase().includes(ge)||$.api_provider.toLowerCase().includes(ge)}),dl=Math.ceil(Os.length/xe),Hl=Os.slice((oe-1)*xe,oe*xe),un=()=>{const $=parseInt(de);$>=1&&$<=dl&&(ae($),G(""))},mn=$=>p?[p.utils?.model_list||[],p.utils_small?.model_list||[],p.tool_use?.model_list||[],p.replyer?.model_list||[],p.planner?.model_list||[],p.vlm?.model_list||[],p.voice?.model_list||[],p.embedding?.model_list||[],p.lpmm_entity_extract?.model_list||[],p.lpmm_rdf_build?.model_list||[],p.lpmm_qa?.model_list||[]].some(Le=>Le.includes($)):!1;return v?e.jsx(st,{className:"h-full",children:e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):e.jsx(st,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"模型管理与分配"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"添加模型并为模型分配功能"})]}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[e.jsxs(b,{onClick:Ms,disabled:S||L||!B||K,size:"sm",variant:"outline",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[e.jsx(jr,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),S?"保存中...":L?"自动保存中...":B?"保存配置":"已保存"]}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsxs(b,{disabled:S||L||K,size:"sm",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[e.jsx(gr,{className:"mr-2 h-4 w-4"}),K?"重启中...":B?"保存并重启":"重启麦麦"]})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认重启麦麦?"}),e.jsx(xt,{asChild:!0,children:e.jsx("div",{children:e.jsx("p",{children:B?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"})})})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:B?yt:je,children:B?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsxs(cl,{children:[e.jsx(Ra,{className:"h-4 w-4"}),e.jsxs(ol,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),e.jsxs(cl,{className:"hidden lg:flex border-primary/30 bg-primary/5 cursor-pointer hover:bg-primary/10 transition-colors",onClick:We,children:[e.jsx(vy,{className:"h-4 w-4 text-primary"}),e.jsxs(ol,{className:"flex items-center justify-between",children:[e.jsxs("span",{children:[e.jsx("strong",{className:"text-primary",children:"新手引导:"}),"不知道如何配置模型?点击这里开始学习如何为麦麦的组件分配模型。"]}),e.jsx(b,{variant:"outline",size:"sm",className:"ml-4 shrink-0",children:"开始引导"})]})]}),e.jsxs(La,{defaultValue:"models",className:"w-full",children:[e.jsxs(wa,{className:"grid w-full max-w-full sm:max-w-md grid-cols-2",children:[e.jsx(it,{value:"models",children:"添加模型"}),e.jsx(it,{value:"tasks","data-tour":"tasks-tab-trigger",children:"为模型分配功能"})]}),e.jsxs(zt,{value:"models",className:"space-y-4 mt-0",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-2",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"配置可用的模型列表"}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[T.size>0&&e.jsxs(b,{onClick:Re,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(at,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",T.size,")"]}),e.jsxs(b,{onClick:()=>Ds(null,null),size:"sm",variant:"outline",className:"w-full sm:w-auto","data-tour":"add-model-button",children:[e.jsx(hs,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加模型"]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2",children:[e.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[e.jsx(zs,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索模型名称、标识符或提供商...",value:A,onChange:$=>X($.target.value),className:"pl-9"})]}),A&&e.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",Os.length," 个结果"]})]}),e.jsx("div",{className:"md:hidden space-y-3",children:Hl.length===0?e.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:A?"未找到匹配的模型":"暂无模型配置"}):Hl.map(($,ge)=>{const Le=n.findIndex(jt=>jt===$),$e=mn($.name);return e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("h3",{className:"font-semibold text-base",children:$.name}),e.jsx(Je,{variant:$e?"default":"secondary",className:$e?"bg-green-600 hover:bg-green-700":"",children:$e?"已使用":"未使用"})]}),e.jsx("p",{className:"text-xs text-muted-foreground break-all",title:$.model_identifier,children:$.model_identifier})]}),e.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[e.jsxs(b,{variant:"default",size:"sm",onClick:()=>Ds($,Le),children:[e.jsx(nn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(b,{size:"sm",onClick:()=>qa(Le),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(at,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"提供商"}),e.jsx("p",{className:"font-medium",children:$.api_provider})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"强制流式"}),e.jsx("p",{className:"font-medium",children:$.force_stream_mode?"是":"否"})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"输入价格"}),e.jsxs("p",{className:"font-medium",children:["¥",$.price_in,"/M"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"输出价格"}),e.jsxs("p",{className:"font-medium",children:["¥",$.price_out,"/M"]})]})]})]},ge)})}),e.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(li,{children:[e.jsx(ni,{children:e.jsxs(_s,{children:[e.jsx(rt,{className:"w-12",children:e.jsx(Cs,{checked:T.size===Os.length&&Os.length>0,onCheckedChange:ye})}),e.jsx(rt,{className:"w-24",children:"使用状态"}),e.jsx(rt,{children:"模型名称"}),e.jsx(rt,{children:"模型标识符"}),e.jsx(rt,{children:"提供商"}),e.jsx(rt,{className:"text-right",children:"输入价格"}),e.jsx(rt,{className:"text-right",children:"输出价格"}),e.jsx(rt,{className:"text-center",children:"强制流式"}),e.jsx(rt,{className:"text-right",children:"操作"})]})}),e.jsx(ii,{children:Hl.length===0?e.jsx(_s,{children:e.jsx(Ze,{colSpan:9,className:"text-center text-muted-foreground py-8",children:A?"未找到匹配的模型":"暂无模型配置"})}):Hl.map(($,ge)=>{const Le=n.findIndex(jt=>jt===$),$e=mn($.name);return e.jsxs(_s,{children:[e.jsx(Ze,{children:e.jsx(Cs,{checked:T.has(Le),onCheckedChange:()=>P(Le)})}),e.jsx(Ze,{children:e.jsx(Je,{variant:$e?"default":"secondary",className:$e?"bg-green-600 hover:bg-green-700":"",children:$e?"已使用":"未使用"})}),e.jsx(Ze,{className:"font-medium",children:$.name}),e.jsx(Ze,{className:"max-w-xs truncate",title:$.model_identifier,children:$.model_identifier}),e.jsx(Ze,{children:$.api_provider}),e.jsxs(Ze,{className:"text-right",children:["¥",$.price_in,"/M"]}),e.jsxs(Ze,{className:"text-right",children:["¥",$.price_out,"/M"]}),e.jsx(Ze,{className:"text-center",children:$.force_stream_mode?"是":"否"}),e.jsx(Ze,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(b,{variant:"default",size:"sm",onClick:()=>Ds($,Le),children:[e.jsx(nn,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(b,{size:"sm",onClick:()=>qa(Le),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(at,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},ge)})})]})})}),Os.length>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{htmlFor:"page-size-model",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(qe,{value:xe.toString(),onValueChange:$=>{ve(parseInt($)),ae(1),te(new Set)},children:[e.jsx(Be,{id:"page-size-model",className:"w-20",children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"10",children:"10"}),e.jsx(ie,{value:"20",children:"20"}),e.jsx(ie,{value:"50",children:"50"}),e.jsx(ie,{value:"100",children:"100"})]})]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(oe-1)*xe+1," 到"," ",Math.min(oe*xe,Os.length)," 条,共 ",Os.length," 条"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>ae(1),disabled:oe===1,className:"hidden sm:flex",children:e.jsx(vr,{className:"h-4 w-4"})}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>ae($=>Math.max(1,$-1)),disabled:oe===1,children:[e.jsx(dn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:de,onChange:$=>G($.target.value),onKeyDown:$=>$.key==="Enter"&&un(),placeholder:oe.toString(),className:"w-16 h-8 text-center",min:1,max:dl}),e.jsx(b,{variant:"outline",size:"sm",onClick:un,disabled:!de,className:"h-8",children:"跳转"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>ae($=>$+1),disabled:oe>=dl,children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(Ll,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>ae(dl),disabled:oe>=dl,className:"hidden sm:flex",children:e.jsx(br,{className:"h-4 w-4"})})]})]})]}),e.jsxs(zt,{value:"tasks",className:"space-y-6 mt-0",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"为不同的任务配置使用的模型和参数"}),p&&e.jsxs("div",{className:"grid gap-4 sm:gap-6",children:[e.jsx(ba,{title:"组件模型 (utils)",description:"用于表情包、取名、关系、情绪变化等组件",taskConfig:p.utils,modelNames:f,onChange:($,ge)=>$s("utils",$,ge),dataTour:"task-model-select"}),e.jsx(ba,{title:"组件小模型 (utils_small)",description:"消耗量较大的组件,建议使用速度较快的小模型",taskConfig:p.utils_small,modelNames:f,onChange:($,ge)=>$s("utils_small",$,ge)}),e.jsx(ba,{title:"工具调用模型 (tool_use)",description:"需要使用支持工具调用的模型",taskConfig:p.tool_use,modelNames:f,onChange:($,ge)=>$s("tool_use",$,ge)}),e.jsx(ba,{title:"首要回复模型 (replyer)",description:"用于表达器和表达方式学习",taskConfig:p.replyer,modelNames:f,onChange:($,ge)=>$s("replyer",$,ge)}),e.jsx(ba,{title:"决策模型 (planner)",description:"负责决定麦麦该什么时候回复",taskConfig:p.planner,modelNames:f,onChange:($,ge)=>$s("planner",$,ge)}),e.jsx(ba,{title:"图像识别模型 (vlm)",description:"视觉语言模型",taskConfig:p.vlm,modelNames:f,onChange:($,ge)=>$s("vlm",$,ge),hideTemperature:!0}),e.jsx(ba,{title:"语音识别模型 (voice)",description:"语音转文字",taskConfig:p.voice,modelNames:f,onChange:($,ge)=>$s("voice",$,ge),hideTemperature:!0,hideMaxTokens:!0}),e.jsx(ba,{title:"嵌入模型 (embedding)",description:"用于向量化",taskConfig:p.embedding,modelNames:f,onChange:($,ge)=>$s("embedding",$,ge),hideTemperature:!0,hideMaxTokens:!0}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库模型"}),e.jsx(ba,{title:"实体提取模型 (lpmm_entity_extract)",description:"从文本中提取实体",taskConfig:p.lpmm_entity_extract,modelNames:f,onChange:($,ge)=>$s("lpmm_entity_extract",$,ge)}),e.jsx(ba,{title:"RDF 构建模型 (lpmm_rdf_build)",description:"构建知识图谱",taskConfig:p.lpmm_rdf_build,modelNames:f,onChange:($,ge)=>$s("lpmm_rdf_build",$,ge)}),e.jsx(ba,{title:"问答模型 (lpmm_qa)",description:"知识库问答",taskConfig:p.lpmm_qa,modelNames:f,onChange:($,ge)=>$s("lpmm_qa",$,ge)})]})]})]})]}),e.jsx(Jt,{open:Y,onOpenChange:Fs,children:e.jsxs($t,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"model-dialog",preventOutsideClose:Ke.isRunning,children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:fe!==null?"编辑模型":"添加模型"}),e.jsx(ds,{children:"配置模型的基本信息和参数"})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":"model-name-input",children:[e.jsx(y,{htmlFor:"model_name",className:ke.name?"text-destructive":"",children:"模型名称 *"}),e.jsx(ce,{id:"model_name",value:R?.name||"",onChange:$=>{ne(ge=>ge?{...ge,name:$.target.value}:null),ke.name&&Pe(ge=>({...ge,name:void 0}))},placeholder:"例如: qwen3-30b",className:ke.name?"border-destructive focus-visible:ring-destructive":""}),ke.name?e.jsx("p",{className:"text-xs text-destructive",children:ke.name}):e.jsx("p",{className:"text-xs text-muted-foreground",children:"用于在任务配置中引用此模型"})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"model-provider-select",children:[e.jsx(y,{htmlFor:"api_provider",className:ke.api_provider?"text-destructive":"",children:"API 提供商 *"}),e.jsxs(qe,{value:R?.api_provider||"",onValueChange:$=>{ne(ge=>ge?{...ge,api_provider:$}:null),U([]),tt(null),ke.api_provider&&Pe(ge=>({...ge,api_provider:void 0}))},children:[e.jsx(Be,{id:"api_provider",className:ke.api_provider?"border-destructive focus-visible:ring-destructive":"",children:e.jsx(Ge,{placeholder:"选择提供商"})}),e.jsx(He,{children:c.map($=>e.jsx(ie,{value:$,children:$},$))})]}),ke.api_provider&&e.jsx("p",{className:"text-xs text-destructive",children:ke.api_provider})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"model-identifier-input",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{htmlFor:"model_identifier",className:ke.model_identifier?"text-destructive":"",children:"模型标识符 *"}),Bt?.modelFetcher&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Je,{variant:"secondary",className:"text-xs",children:Bt.display_name}),e.jsx(b,{variant:"ghost",size:"sm",className:"h-6 px-2",onClick:()=>R?.api_provider&&_e(R.api_provider,!0),disabled:ee,children:ee?e.jsx(Ss,{className:"h-3 w-3 animate-spin"}):e.jsx(ws,{className:"h-3 w-3"})})]})]}),Bt?.modelFetcher?e.jsxs(Ua,{open:Xe,onOpenChange:Ut,children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(b,{variant:"outline",role:"combobox","aria-expanded":Xe,className:"w-full justify-between font-normal",disabled:ee||!!Me,children:[ee?e.jsxs("span",{className:"flex items-center gap-2 text-muted-foreground",children:[e.jsx(Ss,{className:"h-4 w-4 animate-spin"}),"正在获取模型列表..."]}):Me?e.jsx("span",{className:"text-muted-foreground text-sm",children:"点击下方输入框手动填写"}):R?.model_identifier?e.jsx("span",{className:"truncate",children:R.model_identifier}):e.jsx("span",{className:"text-muted-foreground",children:"搜索或选择模型..."}),e.jsx(qu,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(_a,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:e.jsxs(ao,{children:[e.jsx(lo,{placeholder:"搜索模型..."}),e.jsx(st,{className:"h-[300px]",children:e.jsxs(no,{className:"max-h-none overflow-visible",children:[e.jsx(io,{children:Me?e.jsxs("div",{className:"py-4 px-2 text-center space-y-2",children:[e.jsx("p",{className:"text-sm text-destructive",children:Me}),!Me.includes("API Key")&&e.jsx(b,{variant:"link",size:"sm",onClick:()=>R?.api_provider&&_e(R.api_provider,!0),children:"重试"})]}):"未找到匹配的模型"}),e.jsx(fr,{heading:"可用模型",children:W.map($=>e.jsxs(pr,{value:$.id,onSelect:()=>{ne(ge=>ge?{...ge,model_identifier:$.id}:null),Ut(!1)},children:[e.jsx(Na,{className:`mr-2 h-4 w-4 ${R?.model_identifier===$.id?"opacity-100":"opacity-0"}`}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{children:$.id}),$.name!==$.id&&e.jsx("span",{className:"text-xs text-muted-foreground",children:$.name})]})]},$.id))}),e.jsx(fr,{heading:"手动输入",children:e.jsxs(pr,{value:"__manual_input__",onSelect:()=>{Ut(!1)},children:[e.jsx(nn,{className:"mr-2 h-4 w-4"}),"手动输入模型标识符..."]})})]})})]})})]}):e.jsx(ce,{id:"model_identifier",value:R?.model_identifier||"",onChange:$=>{ne(ge=>ge?{...ge,model_identifier:$.target.value}:null),ke.model_identifier&&Pe(ge=>({...ge,model_identifier:void 0}))},placeholder:"Qwen/Qwen3-30B-A3B-Instruct-2507",className:ke.model_identifier?"border-destructive focus-visible:ring-destructive":""}),ke.model_identifier&&e.jsx("p",{className:"text-xs text-destructive",children:ke.model_identifier}),Me&&Bt?.modelFetcher&&!ke.model_identifier&&e.jsxs(cl,{variant:"destructive",className:"mt-2 py-2",children:[e.jsx(Ra,{className:"h-4 w-4"}),e.jsx(ol,{className:"text-xs",children:Me})]}),Bt?.modelFetcher&&e.jsx(ce,{value:R?.model_identifier||"",onChange:$=>{ne(ge=>ge?{...ge,model_identifier:$.target.value}:null),ke.model_identifier&&Pe(ge=>({...ge,model_identifier:void 0}))},placeholder:"或手动输入模型标识符",className:`mt-2 ${ke.model_identifier?"border-destructive focus-visible:ring-destructive":""}`}),!ke.model_identifier&&e.jsx("p",{className:"text-xs text-muted-foreground",children:Me?'请手动输入模型标识符,或前往"模型提供商配置"检查 API Key':Bt?.modelFetcher?`已识别为 ${Bt.display_name},支持自动获取模型列表`:"API 提供商提供的模型 ID"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"price_in",children:"输入价格 (¥/M token)"}),e.jsx(ce,{id:"price_in",type:"number",step:"0.1",min:"0",value:R?.price_in??"",onChange:$=>{const ge=$.target.value===""?null:parseFloat($.target.value);ne(Le=>Le?{...Le,price_in:ge}:null)},placeholder:"默认: 0"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"price_out",children:"输出价格 (¥/M token)"}),e.jsx(ce,{id:"price_out",type:"number",step:"0.1",min:"0",value:R?.price_out??"",onChange:$=>{const ge=$.target.value===""?null:parseFloat($.target.value);ne(Le=>Le?{...Le,price_out:ge}:null)},placeholder:"默认: 0"})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"force_stream_mode",checked:R?.force_stream_mode||!1,onCheckedChange:$=>ne(ge=>ge?{...ge,force_stream_mode:$}:null)}),e.jsx(y,{htmlFor:"force_stream_mode",className:"cursor-pointer",children:"强制流式输出模式"})]})]}),e.jsxs(xs,{children:[e.jsx(b,{variant:"outline",onClick:()=>E(!1),"data-tour":"model-cancel-button",children:"取消"}),e.jsx(b,{onClick:Ha,"data-tour":"model-save-button",children:"保存"})]})]})}),e.jsx(bt,{open:we,onOpenChange:pe,children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:['确定要删除模型 "',Ne!==null?n[Ne]?.name:"",'" 吗? 此操作无法撤销。']})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:Sa,children:"删除"})]})]})}),e.jsx(bt,{open:_,onOpenChange:me,children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认批量删除"}),e.jsxs(xt,{children:["确定要删除选中的 ",T.size," 个模型吗? 此操作无法撤销。"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:us,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),z&&e.jsx(Yu,{onRestartComplete:Ht,onRestartFailed:pa})]})})}function ba({title:n,description:r,taskConfig:c,modelNames:d,onChange:h,hideTemperature:x=!1,hideMaxTokens:f=!1,dataTour:j}){const p=N=>{h("model_list",N)};return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"font-semibold text-base sm:text-lg",children:n}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:r})]}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":j,children:[e.jsx(y,{children:"模型列表"}),e.jsx(lw,{options:d.map(N=>({label:N,value:N})),selected:c.model_list||[],onChange:p,placeholder:"选择模型...",emptyText:"暂无可用模型"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[!x&&e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{children:"温度"}),e.jsx(ce,{type:"number",step:"0.1",min:"0",max:"1",value:c.temperature??.3,onChange:N=>{const v=parseFloat(N.target.value);!isNaN(v)&&v>=0&&v<=1&&h("temperature",v)},className:"w-20 h-8 text-sm"})]}),e.jsx(Ma,{value:[c.temperature??.3],onValueChange:N=>h("temperature",N[0]),min:0,max:1,step:.1,className:"w-full"})]}),!f&&e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{children:"最大 Token"}),e.jsx(ce,{type:"number",step:"1",min:"1",value:c.max_tokens??1024,onChange:N=>h("max_tokens",parseInt(N.target.value))})]})]})]})]})}const ro="/api/webui/config";async function rw(){const r=await(await Te(`${ro}/adapter-config/path`)).json();return!r.success||!r.path?null:{path:r.path,lastModified:r.lastModified}}async function rp(n){const c=await(await Te(`${ro}/adapter-config/path`,{method:"POST",headers:Rt(),body:JSON.stringify({path:n})})).json();if(!c.success)throw new Error(c.message||"保存路径失败")}async function cp(n){const c=await(await Te(`${ro}/adapter-config?path=${encodeURIComponent(n)}`)).json();if(!c.success)throw new Error("读取配置文件失败");return c.content}async function op(n,r){const d=await(await Te(`${ro}/adapter-config`,{method:"POST",headers:Rt(),body:JSON.stringify({path:n,content:r})})).json();if(!d.success)throw new Error(d.message||"保存配置失败")}const Ps={inner:{version:"0.1.2"},nickname:{nickname:""},napcat_server:{host:"localhost",port:8095,token:"",heartbeat_interval:30},maibot_server:{host:"localhost",port:8e3},chat:{group_list_type:"whitelist",group_list:[],private_list_type:"whitelist",private_list:[],ban_user_id:[],ban_qq_bot:!1,enable_poke:!0},voice:{use_tts:!1},debug:{level:"INFO"}},Tu={oneclick:{name:"一键包",description:"使用一键包部署的适配器配置",path:"../MaiBot-Napcat-Adapter/config.toml",icon:rn},docker:{name:"Docker",description:"Docker Compose 部署的适配器配置",path:"/MaiMBot/adapters-config/config.toml",icon:by}};function cw(){const[n,r]=u.useState("upload"),[c,d]=u.useState(null),[h,x]=u.useState(""),[f,j]=u.useState(""),[p,N]=u.useState("oneclick"),[v,C]=u.useState(""),[S,w]=u.useState(!1),[L,F]=u.useState(!1),[B,O]=u.useState(!1),[K,H]=u.useState(!1),[z,V]=u.useState(null),Y=u.useRef(null),{toast:E}=Xt(),R=u.useRef(null),ne=G=>{if(!G.trim())return{valid:!1,error:"路径不能为空"};if(!G.toLowerCase().endsWith(".toml"))return{valid:!1,error:"文件必须是 .toml 格式"};const W=/^([a-zA-Z]:\\|\\\\[^\\]+\\[^\\]+\\).+\.toml$/i,U=/^(\/|~\/).+\.toml$/i,ee=/^(\.{1,2}[\\/]|[^:\\/]).+\.toml$/i,Se=W.test(G),Me=U.test(G),tt=ee.test(G);return!Se&&!Me&&!tt?{valid:!1,error:"路径格式错误"}:/[<>"|?*\x00-\x1F]/.test(G)?{valid:!1,error:"路径包含非法字符"}:{valid:!0,error:""}},fe=G=>{if(j(G),G.trim()){const W=ne(G);C(W.error)}else C("")},Ce=u.useCallback(async G=>{const W=Tu[G];F(!0);try{const U=await cp(W.path),ee=oe(U);d(ee),N(G),j(W.path),await rp(W.path),E({title:"加载成功",description:`已从${W.name}预设加载配置`})}catch(U){console.error("加载预设配置失败:",U),E({title:"加载失败",description:U instanceof Error?U.message:"无法读取预设配置文件",variant:"destructive"})}finally{F(!1)}},[E]),we=u.useCallback(async G=>{const W=ne(G);if(!W.valid){C(W.error),E({title:"路径无效",description:W.error,variant:"destructive"});return}C(""),F(!0);try{const U=await cp(G),ee=oe(U);d(ee),j(G),await rp(G),E({title:"加载成功",description:"已从配置文件加载"})}catch(U){console.error("加载配置失败:",U),E({title:"加载失败",description:U instanceof Error?U.message:"无法读取配置文件",variant:"destructive"})}finally{F(!1)}},[E]);u.useEffect(()=>{(async()=>{try{const W=await rw();if(W&&W.path){j(W.path);const U=Object.entries(Tu).find(([,ee])=>ee.path===W.path);U?(r("preset"),N(U[0]),await Ce(U[0])):(r("path"),await we(W.path))}}catch(W){console.error("加载保存的路径失败:",W)}})()},[we,Ce]);const pe=u.useCallback(G=>{n!=="path"&&n!=="preset"||!f||(R.current&&clearTimeout(R.current),R.current=setTimeout(async()=>{w(!0);try{const W=ae(G);await op(f,W),E({title:"自动保存成功",description:"配置已保存到文件"})}catch(W){console.error("自动保存失败:",W),E({title:"自动保存失败",description:W instanceof Error?W.message:"保存配置失败",variant:"destructive"})}finally{w(!1)}},1e3))},[n,f,E]),Ne=async()=>{if(!c||!f)return;const G=ne(f);if(!G.valid){E({title:"保存失败",description:G.error,variant:"destructive"});return}w(!0);try{const W=ae(c);await op(f,W),E({title:"保存成功",description:"配置已保存到文件"})}catch(W){console.error("保存失败:",W),E({title:"保存失败",description:W instanceof Error?W.message:"保存配置失败",variant:"destructive"})}finally{w(!1)}},be=async()=>{f&&await we(f)},A=G=>{if(G!==n){if(c){V(G),O(!0);return}X(G)}},X=G=>{d(null),x(""),C(""),r(G),G==="preset"&&Ce("oneclick"),E({title:"已切换模式",description:{upload:"现在可以上传配置文件",path:"现在可以指定配置文件路径",preset:"现在可以使用预设配置"}[G]})},T=()=>{z&&(X(z),V(null)),O(!1)},te=()=>{if(c){H(!0);return}_()},_=()=>{j(""),d(null),C(""),E({title:"已清空",description:"路径和配置已清空"})},me=()=>{_(),H(!1)},oe=G=>{const W=JSON.parse(JSON.stringify(Ps)),U=G.split(` -`);let ee="";for(const Se of U){const Me=Se.trim();if(!Me||Me.startsWith("#"))continue;const tt=Me.match(/^\[(\w+)\]/);if(tt){ee=tt[1];continue}const Xe=Me.match(/^(\w+)\s*=\s*(.+)$/);if(Xe&&ee){const[,Ut,Bt]=Xe;let re=Bt.trim();const ke=re.match(/^("[^"]*")/);if(ke)re=ke[1];else{const Fe=re.indexOf("#");Fe!==-1&&(re=re.substring(0,Fe).trim())}let Pe;if(re==="true")Pe=!0;else if(re==="false")Pe=!1;else if(re.startsWith("[")&&re.endsWith("]")){const Fe=re.slice(1,-1).trim();if(Fe){const ts=Fe.split(",").map(js=>{const Ke=js.trim();return isNaN(Number(Ke))?Ke.replace(/"/g,""):Number(Ke)}),As=typeof ts[0];Pe=ts.every(js=>typeof js===As)?ts:ts.filter(js=>typeof js=="number")}else Pe=[]}else re.startsWith('"')&&re.endsWith('"')?Pe=re.slice(1,-1):isNaN(Number(re))?Pe=re.replace(/"/g,""):Pe=Number(re);if(ee in W){const Fe=W[ee];Fe[Ut]=Pe}}}return W},ae=G=>{const W=[],U=(ee,Se)=>ee===""||ee===null||ee===void 0?Se:ee;return W.push("[inner]"),W.push(`version = "${U(G.inner.version,Ps.inner.version)}" # 版本号`),W.push("# 请勿修改版本号,除非你知道自己在做什么"),W.push(""),W.push("[nickname] # 现在没用"),W.push(`nickname = "${U(G.nickname.nickname,Ps.nickname.nickname)}"`),W.push(""),W.push("[napcat_server] # Napcat连接的ws服务设置"),W.push(`host = "${U(G.napcat_server.host,Ps.napcat_server.host)}" # Napcat设定的主机地址`),W.push(`port = ${U(G.napcat_server.port||0,Ps.napcat_server.port)} # Napcat设定的端口`),W.push(`token = "${U(G.napcat_server.token,Ps.napcat_server.token)}" # Napcat设定的访问令牌,若无则留空`),W.push(`heartbeat_interval = ${U(G.napcat_server.heartbeat_interval||0,Ps.napcat_server.heartbeat_interval)} # 与Napcat设置的心跳相同(按秒计)`),W.push(""),W.push("[maibot_server] # 连接麦麦的ws服务设置"),W.push(`host = "${U(G.maibot_server.host,Ps.maibot_server.host)}" # 麦麦在.env文件中设置的主机地址,即HOST字段`),W.push(`port = ${U(G.maibot_server.port||0,Ps.maibot_server.port)} # 麦麦在.env文件中设置的端口,即PORT字段`),W.push(""),W.push("[chat] # 黑白名单功能"),W.push(`group_list_type = "${U(G.chat.group_list_type,Ps.chat.group_list_type)}" # 群组名单类型,可选为:whitelist, blacklist`),W.push(`group_list = [${G.chat.group_list.join(", ")}] # 群组名单`),W.push("# 当group_list_type为whitelist时,只有群组名单中的群组可以聊天"),W.push("# 当group_list_type为blacklist时,群组名单中的任何群组无法聊天"),W.push(`private_list_type = "${U(G.chat.private_list_type,Ps.chat.private_list_type)}" # 私聊名单类型,可选为:whitelist, blacklist`),W.push(`private_list = [${G.chat.private_list.join(", ")}] # 私聊名单`),W.push("# 当private_list_type为whitelist时,只有私聊名单中的用户可以聊天"),W.push("# 当private_list_type为blacklist时,私聊名单中的任何用户无法聊天"),W.push(`ban_user_id = [${G.chat.ban_user_id.join(", ")}] # 全局禁止名单(全局禁止名单中的用户无法进行任何聊天)`),W.push(`ban_qq_bot = ${G.chat.ban_qq_bot} # 是否屏蔽QQ官方机器人`),W.push(`enable_poke = ${G.chat.enable_poke} # 是否启用戳一戳功能`),W.push(""),W.push("[voice] # 发送语音设置"),W.push(`use_tts = ${G.voice.use_tts} # 是否使用tts语音(请确保你配置了tts并有对应的adapter)`),W.push(""),W.push("[debug]"),W.push(`level = "${U(G.debug.level,Ps.debug.level)}" # 日志等级(DEBUG, INFO, WARNING, ERROR, CRITICAL)`),W.join(` -`)},xe=G=>{const W=G.target.files?.[0];if(!W)return;const U=new FileReader;U.onload=ee=>{try{const Se=ee.target?.result,Me=oe(Se);d(Me),x(W.name),E({title:"上传成功",description:`已加载配置文件:${W.name}`})}catch(Se){console.error("解析配置文件失败:",Se),E({title:"解析失败",description:"配置文件格式错误,请检查文件内容",variant:"destructive"})}},U.readAsText(W)},ve=()=>{if(!c)return;const G=ae(c),W=new Blob([G],{type:"text/plain;charset=utf-8"}),U=URL.createObjectURL(W),ee=document.createElement("a");ee.href=U,ee.download=h||"config.toml",document.body.appendChild(ee),ee.click(),document.body.removeChild(ee),URL.revokeObjectURL(U),E({title:"下载成功",description:"配置文件已下载,请手动覆盖并重启适配器"})},de=()=>{d(JSON.parse(JSON.stringify(Ps))),x("config.toml"),E({title:"已加载默认配置",description:"可以开始编辑配置"})};return e.jsx(st,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦适配器配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的 QQ 适配器的配置文件"})]})}),e.jsxs("div",{className:"flex items-start gap-2 p-3 rounded-lg border border-amber-500/50 bg-amber-500/10 text-amber-700 dark:text-amber-400",children:[e.jsx(Oa,{className:"h-4 w-4 mt-0.5 flex-shrink-0"}),e.jsx("p",{className:"text-sm",children:"适配器配置保存之后使用 WebUI 的重启功能适配器并不会重启,需要手动重启适配器。"})]}),e.jsxs(Ye,{children:[e.jsxs(Nt,{children:[e.jsx(wt,{children:"工作模式"}),e.jsx(ns,{children:"选择配置文件的管理方式"})]}),e.jsxs(kt,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3 md:gap-4",children:[e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="preset"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>A("preset"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(rn,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"预设模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"使用预设的部署配置"})]})]})}),e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="upload"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>A("upload"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(dr,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"上传文件模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"上传配置文件,编辑后下载并手动覆盖"})]})]})}),e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="path"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>A("path"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(yy,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"指定路径模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"指定配置文件路径,自动加载和保存"})]})]})})]}),n==="preset"&&e.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[e.jsx(y,{className:"text-sm md:text-base",children:"选择部署方式"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:Object.entries(Tu).map(([G,W])=>{const U=W.icon,ee=p===G;return e.jsx("div",{className:`border-2 rounded-lg p-3 cursor-pointer transition-all ${ee?"border-primary bg-primary/5":"border-muted hover:border-primary/50"}`,onClick:()=>{N(G),Ce(G)},children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(U,{className:"h-5 w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h4",{className:"font-semibold text-sm",children:W.name}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:W.description}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1 font-mono break-all",children:W.path})]})]})},G)})})]}),n==="path"&&e.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"config-path",className:"text-sm md:text-base",children:"配置文件路径"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs("div",{className:"flex-1 space-y-1",children:[e.jsx(ce,{id:"config-path",value:f,onChange:G=>fe(G.target.value),placeholder:"例: C:\\Adapter\\config.toml",className:`text-sm ${v?"border-destructive":""}`}),v&&e.jsx("p",{className:"text-xs text-destructive",children:v})]}),e.jsx(b,{onClick:()=>we(f),disabled:L||!f||!!v,className:"w-full sm:w-auto",children:L?e.jsxs(e.Fragment,{children:[e.jsx(ws,{className:"h-4 w-4 animate-spin mr-2"}),e.jsx("span",{className:"sm:hidden",children:"加载中..."})]}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"sm:hidden",children:"加载配置"}),e.jsx("span",{className:"hidden sm:inline",children:"加载"})]})})]})]}),e.jsxs("details",{className:"rounded-lg bg-muted/50 p-3 group",children:[e.jsxs("summary",{className:"text-xs font-medium cursor-pointer select-none list-none flex items-center justify-between",children:[e.jsx("span",{children:"路径格式说明"}),e.jsx("svg",{className:"h-4 w-4 transition-transform group-open:rotate-180",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),e.jsxs("div",{className:"mt-2 space-y-2 text-xs text-muted-foreground",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Windows"})}),e.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[e.jsx("div",{children:"C:\\Adapter\\config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"D:\\MaiBot\\adapter\\config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"\\\\server\\share\\config.toml"})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Linux"})}),e.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[e.jsx("div",{children:"/opt/adapter/config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"/home/user/adapter/config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"~/adapter/config.toml"})]})]}),e.jsx("p",{className:"pt-1 border-t text-[10px] md:text-xs",children:"💡 配置会自动保存到指定文件,修改后 1 秒自动保存"})]})]})]})]})]}),e.jsxs(cl,{children:[e.jsx(Ra,{className:"h-4 w-4"}),e.jsx(ol,{children:n==="preset"?e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"预设模式:"}),"选择预设的部署方式,配置会自动加载,修改后 1 秒自动保存",S&&" (正在保存...)"]}):n==="upload"?e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"上传文件模式:"}),"上传配置文件 → 在线编辑 → 下载文件 → 手动覆盖并重启适配器"]}):e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"指定路径模式:"}),"指定配置文件路径后,配置会自动加载,修改后 1 秒自动保存",S&&" (正在保存...)"]})})]}),n==="upload"&&!c&&e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 w-full",children:[e.jsx("input",{ref:Y,type:"file",accept:".toml",className:"hidden",onChange:xe}),e.jsxs(b,{onClick:()=>Y.current?.click(),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(dr,{className:"mr-2 h-4 w-4"}),"上传配置"]}),e.jsxs(b,{onClick:de,size:"sm",className:"w-full sm:w-auto",children:[e.jsx(Da,{className:"mr-2 h-4 w-4"}),"使用默认配置"]})]}),n==="upload"&&c&&e.jsx("div",{className:"flex gap-2",children:e.jsxs(b,{onClick:ve,size:"sm",className:"w-full sm:w-auto",children:[e.jsx(rl,{className:"mr-2 h-4 w-4"}),"下载配置"]})}),(n==="preset"||n==="path")&&c&&e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs(b,{onClick:Ne,size:"sm",disabled:S||!!v,className:"w-full sm:w-auto",children:[e.jsx(jr,{className:"mr-2 h-4 w-4"}),S?"保存中...":"立即保存"]}),e.jsxs(b,{onClick:be,size:"sm",variant:"outline",disabled:L,className:"w-full sm:w-auto",children:[e.jsx(ws,{className:`mr-2 h-4 w-4 ${L?"animate-spin":""}`}),"刷新"]}),n==="path"&&e.jsxs(b,{onClick:te,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(at,{className:"mr-2 h-4 w-4"}),"清空路径"]})]}),c?e.jsxs(La,{defaultValue:"napcat",className:"w-full",children:[e.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:e.jsxs(wa,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5",children:[e.jsxs(it,{value:"napcat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"Napcat 连接"}),e.jsx("span",{className:"sm:hidden",children:"Napcat"})]}),e.jsxs(it,{value:"maibot",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"麦麦连接"}),e.jsx("span",{className:"sm:hidden",children:"麦麦"})]}),e.jsxs(it,{value:"chat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"聊天控制"}),e.jsx("span",{className:"sm:hidden",children:"聊天"})]}),e.jsxs(it,{value:"voice",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"语音设置"}),e.jsx("span",{className:"sm:hidden",children:"语音"})]}),e.jsx(it,{value:"debug",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:"调试"})]})}),e.jsx(zt,{value:"napcat",className:"space-y-4",children:e.jsx(ow,{config:c,onChange:G=>{d(G),pe(G)}})}),e.jsx(zt,{value:"maibot",className:"space-y-4",children:e.jsx(dw,{config:c,onChange:G=>{d(G),pe(G)}})}),e.jsx(zt,{value:"chat",className:"space-y-4",children:e.jsx(uw,{config:c,onChange:G=>{d(G),pe(G)}})}),e.jsx(zt,{value:"voice",className:"space-y-4",children:e.jsx(mw,{config:c,onChange:G=>{d(G),pe(G)}})}),e.jsx(zt,{value:"debug",className:"space-y-4",children:e.jsx(hw,{config:c,onChange:G=>{d(G),pe(G)}})})]}):e.jsx("div",{className:"rounded-lg border bg-card p-6 md:p-12",children:e.jsxs("div",{className:"text-center space-y-3 md:space-y-4",children:[e.jsx(Da,{className:"h-12 w-12 md:h-16 md:w-16 mx-auto text-muted-foreground"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold",children:"尚未加载配置"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-2 px-4",children:n==="preset"?"请选择预设的部署方式":n==="upload"?"请上传现有配置文件,或使用默认配置开始编辑":"请指定配置文件路径并点击加载按钮"})]})]})}),e.jsx(bt,{open:B,onOpenChange:O,children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认切换模式"}),e.jsxs(xt,{children:["切换模式将清空当前配置,确定要继续吗?",e.jsx("br",{}),e.jsx("span",{className:"text-destructive font-medium",children:"请确保已保存重要配置"})]})]}),e.jsxs(mt,{children:[e.jsx(pt,{onClick:()=>{O(!1),V(null)},children:"取消"}),e.jsx(ft,{onClick:T,children:"确认切换"})]})]})}),e.jsx(bt,{open:K,onOpenChange:H,children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认清空路径"}),e.jsxs(xt,{children:["清空路径将清除当前配置,确定要继续吗?",e.jsx("br",{}),e.jsx("span",{className:"text-muted-foreground text-sm",children:"此操作不会删除配置文件,只是清除界面中的配置"})]})]}),e.jsxs(mt,{children:[e.jsx(pt,{onClick:()=>H(!1),children:"取消"}),e.jsx(ft,{onClick:me,className:"bg-destructive hover:bg-destructive/90",children:"确认清空"})]})]})})]})})}function ow({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"Napcat WebSocket 服务设置"}),e.jsxs("div",{className:"grid gap-3 md:gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"napcat-host",className:"text-sm md:text-base",children:"主机地址"}),e.jsx(ce,{id:"napcat-host",value:n.napcat_server.host,onChange:c=>r({...n,napcat_server:{...n.napcat_server,host:c.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的主机地址"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"napcat-port",className:"text-sm md:text-base",children:"端口"}),e.jsx(ce,{id:"napcat-port",type:"number",value:n.napcat_server.port||"",onChange:c=>r({...n,napcat_server:{...n.napcat_server,port:c.target.value?parseInt(c.target.value):0}}),placeholder:"8095",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的端口(留空使用默认值 8095)"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"napcat-token",className:"text-sm md:text-base",children:"访问令牌(Token)"}),e.jsx(ce,{id:"napcat-token",type:"password",value:n.napcat_server.token,onChange:c=>r({...n,napcat_server:{...n.napcat_server,token:c.target.value}}),placeholder:"留空表示无需令牌",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的访问令牌,若无则留空"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"napcat-heartbeat",className:"text-sm md:text-base",children:"心跳间隔(秒)"}),e.jsx(ce,{id:"napcat-heartbeat",type:"number",value:n.napcat_server.heartbeat_interval||"",onChange:c=>r({...n,napcat_server:{...n.napcat_server,heartbeat_interval:c.target.value?parseInt(c.target.value):0}}),placeholder:"30",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"与 Napcat 设置的心跳间隔保持一致(留空使用默认值 30)"})]})]})]})})}function dw({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"麦麦 WebSocket 服务设置"}),e.jsxs("div",{className:"grid gap-3 md:gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"maibot-host",className:"text-sm md:text-base",children:"主机地址"}),e.jsx(ce,{id:"maibot-host",value:n.maibot_server.host,onChange:c=>r({...n,maibot_server:{...n.maibot_server,host:c.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 HOST 字段"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{htmlFor:"maibot-port",className:"text-sm md:text-base",children:"端口"}),e.jsx(ce,{id:"maibot-port",type:"number",value:n.maibot_server.port||"",onChange:c=>r({...n,maibot_server:{...n.maibot_server,port:c.target.value?parseInt(c.target.value):0}}),placeholder:"8000",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 PORT 字段(留空使用默认值 8000)"})]})]})]})})}function uw({config:n,onChange:r}){const c=x=>{const f={...n};x==="group"?f.chat.group_list=[...f.chat.group_list,0]:x==="private"?f.chat.private_list=[...f.chat.private_list,0]:f.chat.ban_user_id=[...f.chat.ban_user_id,0],r(f)},d=(x,f)=>{const j={...n};x==="group"?j.chat.group_list=j.chat.group_list.filter((p,N)=>N!==f):x==="private"?j.chat.private_list=j.chat.private_list.filter((p,N)=>N!==f):j.chat.ban_user_id=j.chat.ban_user_id.filter((p,N)=>N!==f),r(j)},h=(x,f,j)=>{const p={...n};x==="group"?p.chat.group_list[f]=j:x==="private"?p.chat.private_list[f]=j:p.chat.ban_user_id[f]=j,r(p)};return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"聊天黑白名单功能"}),e.jsxs("div",{className:"grid gap-4 md:gap-6",children:[e.jsxs("div",{className:"space-y-3 md:space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-sm md:text-base",children:"群组名单类型"}),e.jsxs(qe,{value:n.chat.group_list_type,onValueChange:x=>r({...n,chat:{...n.chat,group_list_type:x}}),children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),e.jsx(ie,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsx(y,{className:"text-sm md:text-base",children:"群组列表"}),e.jsxs(b,{onClick:()=>c("group"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Da,{className:"mr-1 h-4 w-4"}),"添加群号"]})]}),n.chat.group_list.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{type:"number",value:x,onChange:j=>h("group",f,parseInt(j.target.value)||0),placeholder:"输入群号",className:"text-sm md:text-base"}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(at,{className:"h-4 w-4"})})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:["确定要删除群号 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>d("group",f),children:"删除"})]})]})]})]},f)),n.chat.group_list.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无群组"})]})]}),e.jsxs("div",{className:"space-y-3 md:space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-sm md:text-base",children:"私聊名单类型"}),e.jsxs(qe,{value:n.chat.private_list_type,onValueChange:x=>r({...n,chat:{...n.chat,private_list_type:x}}),children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),e.jsx(ie,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsx(y,{className:"text-sm md:text-base",children:"私聊列表"}),e.jsxs(b,{onClick:()=>c("private"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Da,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),n.chat.private_list.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{type:"number",value:x,onChange:j=>h("private",f,parseInt(j.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(at,{className:"h-4 w-4"})})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:["确定要删除用户 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>d("private",f),children:"删除"})]})]})]})]},f)),n.chat.private_list.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无用户"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsxs("div",{children:[e.jsx(y,{className:"text-sm md:text-base",children:"全局禁止名单"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"名单中的用户无法进行任何聊天"})]}),e.jsxs(b,{onClick:()=>c("ban"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Da,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),n.chat.ban_user_id.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{type:"number",value:x,onChange:j=>h("ban",f,parseInt(j.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),e.jsxs(bt,{children:[e.jsx(es,{asChild:!0,children:e.jsx(b,{size:"icon",variant:"outline",children:e.jsx(at,{className:"h-4 w-4"})})}),e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:["确定要从全局禁止名单中删除用户 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>d("ban",f),children:"删除"})]})]})]})]},f)),n.chat.ban_user_id.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无禁止用户"})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(y,{className:"text-sm md:text-base",children:"屏蔽QQ官方机器人"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否屏蔽来自QQ官方机器人的消息"})]}),e.jsx(Qe,{checked:n.chat.ban_qq_bot,onCheckedChange:x=>r({...n,chat:{...n.chat,ban_qq_bot:x}})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(y,{className:"text-sm md:text-base",children:"启用戳一戳功能"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否响应戳一戳消息"})]}),e.jsx(Qe,{checked:n.chat.enable_poke,onCheckedChange:x=>r({...n,chat:{...n.chat,enable_poke:x}})})]})]})]})})}function mw({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"发送语音设置"}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(y,{className:"text-sm md:text-base",children:"使用 TTS 语音"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"请确保已配置 TTS 并有对应的适配器"})]}),e.jsx(Qe,{checked:n.voice.use_tts,onCheckedChange:c=>r({...n,voice:{use_tts:c}})})]})]})})}function hw({config:n,onChange:r}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"调试设置"}),e.jsx("div",{className:"grid gap-3 md:gap-4",children:e.jsxs("div",{className:"grid gap-2",children:[e.jsx(y,{className:"text-sm md:text-base",children:"日志等级"}),e.jsxs(qe,{value:n.debug.level,onValueChange:c=>r({...n,debug:{level:c}}),children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"DEBUG",children:"DEBUG(调试)"}),e.jsx(ie,{value:"INFO",children:"INFO(信息)"}),e.jsx(ie,{value:"WARNING",children:"WARNING(警告)"}),e.jsx(ie,{value:"ERROR",children:"ERROR(错误)"}),e.jsx(ie,{value:"CRITICAL",children:"CRITICAL(严重)"})]})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"设置适配器的日志输出等级"})]})})]})})}const xw=["defaultChecked","defaultValue","suppressContentEditableWarning","suppressHydrationWarning","dangerouslySetInnerHTML","accessKey","className","contentEditable","contextMenu","dir","draggable","hidden","id","lang","placeholder","slot","spellCheck","style","tabIndex","title","translate","radioGroup","role","about","datatype","inlist","prefix","property","resource","typeof","vocab","autoCapitalize","autoCorrect","autoSave","color","itemProp","itemScope","itemType","itemID","itemRef","results","security","unselectable","inputMode","is","onCopy","onCopyCapture","onCut","onCutCapture","onPaste","onPasteCapture","onCompositionEnd","onCompositionEndCapture","onCompositionStart","onCompositionStartCapture","onCompositionUpdate","onCompositionUpdateCapture","onFocus","onFocusCapture","onBlur","onBlurCapture","onChange","onChangeCapture","onBeforeInput","onBeforeInputCapture","onInput","onInputCapture","onReset","onResetCapture","onSubmit","onSubmitCapture","onInvalid","onInvalidCapture","onLoad","onLoadCapture","onError","onErrorCapture","onKeyDown","onKeyDownCapture","onKeyPress","onKeyPressCapture","onKeyUp","onKeyUpCapture","onAbort","onAbortCapture","onCanPlay","onCanPlayCapture","onCanPlayThrough","onCanPlayThroughCapture","onDurationChange","onDurationChangeCapture","onEmptied","onEmptiedCapture","onEncrypted","onEncryptedCapture","onEnded","onEndedCapture","onLoadedData","onLoadedDataCapture","onLoadedMetadata","onLoadedMetadataCapture","onLoadStart","onLoadStartCapture","onPause","onPauseCapture","onPlay","onPlayCapture","onPlaying","onPlayingCapture","onProgress","onProgressCapture","onRateChange","onRateChangeCapture","onSeeked","onSeekedCapture","onSeeking","onSeekingCapture","onStalled","onStalledCapture","onSuspend","onSuspendCapture","onTimeUpdate","onTimeUpdateCapture","onVolumeChange","onVolumeChangeCapture","onWaiting","onWaitingCapture","onAuxClick","onAuxClickCapture","onClick","onClickCapture","onContextMenu","onContextMenuCapture","onDoubleClick","onDoubleClickCapture","onDrag","onDragCapture","onDragEnd","onDragEndCapture","onDragEnter","onDragEnterCapture","onDragExit","onDragExitCapture","onDragLeave","onDragLeaveCapture","onDragOver","onDragOverCapture","onDragStart","onDragStartCapture","onDrop","onDropCapture","onMouseDown","onMouseDownCapture","onMouseEnter","onMouseLeave","onMouseMove","onMouseMoveCapture","onMouseOut","onMouseOutCapture","onMouseOver","onMouseOverCapture","onMouseUp","onMouseUpCapture","onSelect","onSelectCapture","onTouchCancel","onTouchCancelCapture","onTouchEnd","onTouchEndCapture","onTouchMove","onTouchMoveCapture","onTouchStart","onTouchStartCapture","onPointerDown","onPointerDownCapture","onPointerMove","onPointerMoveCapture","onPointerUp","onPointerUpCapture","onPointerCancel","onPointerCancelCapture","onPointerEnter","onPointerEnterCapture","onPointerLeave","onPointerLeaveCapture","onPointerOver","onPointerOverCapture","onPointerOut","onPointerOutCapture","onGotPointerCapture","onGotPointerCaptureCapture","onLostPointerCapture","onLostPointerCaptureCapture","onScroll","onScrollCapture","onWheel","onWheelCapture","onAnimationStart","onAnimationStartCapture","onAnimationEnd","onAnimationEndCapture","onAnimationIteration","onAnimationIterationCapture","onTransitionEnd","onTransitionEndCapture"],fw=/^(aria-|data-)/,zg=n=>Object.fromEntries(Object.entries(n).filter(([r])=>fw.test(r)||xw.includes(r)));function pw(n,r){const c=zg(n);return Object.keys(n).some(d=>!Object.hasOwn(c,d)&&n[d]!==r[d])}class gw extends u.Component{container;plugin;componentDidMount(){this.installPlugin()}componentDidUpdate(r){if(r.uppy!==this.props.uppy)this.uninstallPlugin(r),this.installPlugin();else if(pw(this.props,r)){const{uppy:c,...d}={...this.props,target:this.container};this.plugin.setOptions(d)}}componentWillUnmount(){this.uninstallPlugin()}installPlugin(){const{uppy:r,...c}={id:"Dashboard",...this.props,inline:!0,target:this.container};r.use(sN,c),this.plugin=r.getPlugin(c.id)}uninstallPlugin(r=this.props){const{uppy:c}=r;c.removePlugin(this.plugin)}render(){return u.createElement("div",{className:"uppy-Container",ref:r=>{this.container=r},...zg(this.props)})}}function jw({src:n,alt:r="表情包",className:c,maxRetries:d=5,retryInterval:h=1500}){const[x,f]=u.useState("loading"),[j,p]=u.useState(0),[N,v]=u.useState(null),C=u.useCallback(async()=>{try{const S=await fetch(n,{credentials:"include"});if(S.status===202){f("generating"),j{p(F=>F+1)},h):f("error");return}if(!S.ok){f("error");return}const w=await S.blob(),L=URL.createObjectURL(w);v(L),f("loaded")}catch(S){console.error("加载缩略图失败:",S),f("error")}},[n,j,d,h]);return u.useEffect(()=>{f("loading"),p(0),v(null)},[n]),u.useEffect(()=>{C()},[C]),u.useEffect(()=>()=>{N&&URL.revokeObjectURL(N)},[N]),x==="loading"||x==="generating"?e.jsx(hg,{className:Q("w-full h-full",c)}):x==="error"||!N?e.jsx("div",{className:Q("w-full h-full flex items-center justify-center bg-muted",c),children:e.jsx(ig,{className:"h-8 w-8 text-muted-foreground"})}):e.jsx("img",{src:N,alt:r,className:Q("w-full h-full object-contain",c)})}function vw({content:n,className:r=""}){return e.jsx("div",{className:`prose prose-sm dark:prose-invert max-w-none ${r}`,children:e.jsx(lN,{remarkPlugins:[iN,rN],rehypePlugins:[nN],components:{code({inline:c,className:d,children:h,...x}){return c?e.jsx("code",{className:"bg-muted px-1.5 py-0.5 rounded text-sm font-mono",...x,children:h}):e.jsx("code",{className:`${d} block bg-muted p-4 rounded-lg overflow-x-auto`,...x,children:h})},table({children:c,...d}){return e.jsx("div",{className:"overflow-x-auto",children:e.jsx("table",{className:"border-collapse border border-border",...d,children:c})})},th({children:c,...d}){return e.jsx("th",{className:"border border-border bg-muted px-4 py-2 text-left font-semibold",...d,children:c})},td({children:c,...d}){return e.jsx("td",{className:"border border-border px-4 py-2",...d,children:c})},a({children:c,...d}){return e.jsx("a",{className:"text-primary hover:underline",target:"_blank",rel:"noopener noreferrer",...d,children:c})},blockquote({children:c,...d}){return e.jsx("blockquote",{className:"border-l-4 border-primary pl-4 italic text-muted-foreground",...d,children:c})},h1({children:c,...d}){return e.jsx("h1",{className:"text-3xl font-bold mt-6 mb-4",...d,children:c})},h2({children:c,...d}){return e.jsx("h2",{className:"text-2xl font-bold mt-5 mb-3",...d,children:c})},h3({children:c,...d}){return e.jsx("h3",{className:"text-xl font-bold mt-4 mb-2",...d,children:c})},h4({children:c,...d}){return e.jsx("h4",{className:"text-lg font-semibold mt-3 mb-2",...d,children:c})},ul({children:c,...d}){return e.jsx("ul",{className:"list-disc list-inside space-y-1 my-2",...d,children:c})},ol({children:c,...d}){return e.jsx("ol",{className:"list-decimal list-inside space-y-1 my-2",...d,children:c})},p({children:c,...d}){return e.jsx("p",{className:"my-2 leading-relaxed",...d,children:c})},hr({...c}){return e.jsx("hr",{className:"my-4 border-border",...c})}},children:n})})}function bw({children:n,className:r}){return e.jsx(vw,{content:n,className:r})}const xa="/api/webui/emoji";async function yw(n){const r=new URLSearchParams;n.page&&r.append("page",n.page.toString()),n.page_size&&r.append("page_size",n.page_size.toString()),n.search&&r.append("search",n.search),n.is_registered!==void 0&&r.append("is_registered",n.is_registered.toString()),n.is_banned!==void 0&&r.append("is_banned",n.is_banned.toString()),n.format&&r.append("format",n.format),n.sort_by&&r.append("sort_by",n.sort_by),n.sort_order&&r.append("sort_order",n.sort_order);const c=await Te(`${xa}/list?${r}`,{});if(!c.ok)throw new Error(`获取表情包列表失败: ${c.statusText}`);return c.json()}async function Nw(n){const r=await Te(`${xa}/${n}`,{});if(!r.ok)throw new Error(`获取表情包详情失败: ${r.statusText}`);return r.json()}async function ww(n,r){const c=await Te(`${xa}/${n}`,{method:"PATCH",body:JSON.stringify(r)});if(!c.ok)throw new Error(`更新表情包失败: ${c.statusText}`);return c.json()}async function _w(n){const r=await Te(`${xa}/${n}`,{method:"DELETE"});if(!r.ok)throw new Error(`删除表情包失败: ${r.statusText}`);return r.json()}async function Sw(){const n=await Te(`${xa}/stats/summary`,{});if(!n.ok)throw new Error(`获取统计数据失败: ${n.statusText}`);return n.json()}async function Cw(n){const r=await Te(`${xa}/${n}/register`,{method:"POST"});if(!r.ok)throw new Error(`注册表情包失败: ${r.statusText}`);return r.json()}async function kw(n){const r=await Te(`${xa}/${n}/ban`,{method:"POST"});if(!r.ok)throw new Error(`封禁表情包失败: ${r.statusText}`);return r.json()}function Tw(n,r=!1){return r?`${xa}/${n}/thumbnail?original=true`:`${xa}/${n}/thumbnail`}function Ew(n){return`${xa}/${n}/thumbnail?original=true`}async function zw(n){const r=await Te(`${xa}/batch/delete`,{method:"POST",body:JSON.stringify({emoji_ids:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"批量删除失败")}return r.json()}function Aw(){return`${xa}/upload`}function Mw(){const[n,r]=u.useState([]),[c,d]=u.useState(null),[h,x]=u.useState(!1),[f,j]=u.useState(1),[p,N]=u.useState(0),[v,C]=u.useState(20),[S,w]=u.useState("all"),[L,F]=u.useState("all"),[B,O]=u.useState("all"),[K,H]=u.useState("usage_count"),[z,V]=u.useState("desc"),[Y,E]=u.useState(null),[R,ne]=u.useState(!1),[fe,Ce]=u.useState(!1),[we,pe]=u.useState(!1),[Ne,be]=u.useState(new Set),[A,X]=u.useState(!1),[T,te]=u.useState(""),[_,me]=u.useState("medium"),[oe,ae]=u.useState(!1),{toast:xe}=Xt(),ve=u.useCallback(async()=>{try{x(!0);const re=await yw({page:f,page_size:v,is_registered:S==="all"?void 0:S==="registered",is_banned:L==="all"?void 0:L==="banned",format:B==="all"?void 0:B,sort_by:K,sort_order:z});r(re.data),N(re.total)}catch(re){const ke=re instanceof Error?re.message:"加载表情包列表失败";xe({title:"错误",description:ke,variant:"destructive"})}finally{x(!1)}},[f,v,S,L,B,K,z,xe]),de=async()=>{try{const re=await Sw();d(re.data)}catch(re){console.error("加载统计数据失败:",re)}};u.useEffect(()=>{ve()},[ve]),u.useEffect(()=>{de()},[]);const G=async re=>{try{const ke=await Nw(re.id);E(ke.data),ne(!0)}catch(ke){const Pe=ke instanceof Error?ke.message:"加载详情失败";xe({title:"错误",description:Pe,variant:"destructive"})}},W=re=>{E(re),Ce(!0)},U=re=>{E(re),pe(!0)},ee=async()=>{if(Y)try{await _w(Y.id),xe({title:"成功",description:"表情包已删除"}),pe(!1),E(null),ve(),de()}catch(re){const ke=re instanceof Error?re.message:"删除失败";xe({title:"错误",description:ke,variant:"destructive"})}},Se=async re=>{try{await Cw(re.id),xe({title:"成功",description:"表情包已注册"}),ve(),de()}catch(ke){const Pe=ke instanceof Error?ke.message:"注册失败";xe({title:"错误",description:Pe,variant:"destructive"})}},Me=async re=>{try{await kw(re.id),xe({title:"成功",description:"表情包已封禁"}),ve(),de()}catch(ke){const Pe=ke instanceof Error?ke.message:"封禁失败";xe({title:"错误",description:Pe,variant:"destructive"})}},tt=re=>{const ke=new Set(Ne);ke.has(re)?ke.delete(re):ke.add(re),be(ke)},Xe=async()=>{try{const re=await zw(Array.from(Ne));xe({title:"批量删除完成",description:re.message}),be(new Set),X(!1),ve(),de()}catch(re){xe({title:"批量删除失败",description:re instanceof Error?re.message:"批量删除失败",variant:"destructive"})}},Ut=()=>{const re=parseInt(T),ke=Math.ceil(p/v);re>=1&&re<=ke?(j(re),te("")):xe({title:"无效的页码",description:`请输入1-${ke}之间的页码`,variant:"destructive"})},Bt=c?.formats?Object.keys(c.formats):[];return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsxs("div",{className:"mb-4 sm:mb-6 flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"表情包管理"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理麦麦的表情包资源"})]}),e.jsxs(b,{onClick:()=>ae(!0),className:"gap-2",children:[e.jsx(dr,{className:"h-4 w-4"}),"上传表情包"]})]}),e.jsx(st,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[c&&e.jsxs("div",{className:"grid gap-4 grid-cols-2 lg:grid-cols-4",children:[e.jsx(Ye,{children:e.jsxs(Nt,{className:"pb-2",children:[e.jsx(ns,{children:"总数"}),e.jsx(wt,{className:"text-2xl",children:c.total})]})}),e.jsx(Ye,{children:e.jsxs(Nt,{className:"pb-2",children:[e.jsx(ns,{children:"已注册"}),e.jsx(wt,{className:"text-2xl text-green-600",children:c.registered})]})}),e.jsx(Ye,{children:e.jsxs(Nt,{className:"pb-2",children:[e.jsx(ns,{children:"已封禁"}),e.jsx(wt,{className:"text-2xl text-red-600",children:c.banned})]})}),e.jsx(Ye,{children:e.jsxs(Nt,{className:"pb-2",children:[e.jsx(ns,{children:"未注册"}),e.jsx(wt,{className:"text-2xl text-gray-600",children:c.unregistered})]})})]}),e.jsxs(Ye,{children:[e.jsx(Nt,{children:e.jsxs(wt,{className:"flex items-center gap-2",children:[e.jsx(Eu,{className:"h-5 w-5"}),"筛选和排序"]})}),e.jsxs(kt,{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{children:"排序方式"}),e.jsxs(qe,{value:`${K}-${z}`,onValueChange:re=>{const[ke,Pe]=re.split("-");H(ke),V(Pe),j(1)},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"usage_count-desc",children:"使用次数 (多→少)"}),e.jsx(ie,{value:"usage_count-asc",children:"使用次数 (少→多)"}),e.jsx(ie,{value:"register_time-desc",children:"注册时间 (新→旧)"}),e.jsx(ie,{value:"register_time-asc",children:"注册时间 (旧→新)"}),e.jsx(ie,{value:"record_time-desc",children:"记录时间 (新→旧)"}),e.jsx(ie,{value:"record_time-asc",children:"记录时间 (旧→新)"}),e.jsx(ie,{value:"last_used_time-desc",children:"最后使用 (新→旧)"}),e.jsx(ie,{value:"last_used_time-asc",children:"最后使用 (旧→新)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{children:"注册状态"}),e.jsxs(qe,{value:S,onValueChange:re=>{w(re),j(1)},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"all",children:"全部"}),e.jsx(ie,{value:"registered",children:"已注册"}),e.jsx(ie,{value:"unregistered",children:"未注册"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{children:"封禁状态"}),e.jsxs(qe,{value:L,onValueChange:re=>{F(re),j(1)},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"all",children:"全部"}),e.jsx(ie,{value:"banned",children:"已封禁"}),e.jsx(ie,{value:"unbanned",children:"未封禁"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{children:"格式"}),e.jsxs(qe,{value:B,onValueChange:re=>{O(re),j(1)},children:[e.jsx(Be,{children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"all",children:"全部"}),Bt.map(re=>e.jsxs(ie,{value:re,children:[re.toUpperCase()," (",c?.formats[re],")"]},re))]})]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 pt-4 border-t",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[Ne.size>0&&e.jsxs("span",{className:"text-sm text-muted-foreground",children:["已选择 ",Ne.size," 个表情包"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{className:"text-sm whitespace-nowrap",children:"卡片大小"}),e.jsxs(qe,{value:_,onValueChange:re=>me(re),children:[e.jsx(Be,{className:"w-24",children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"small",children:"小"}),e.jsx(ie,{value:"medium",children:"中"}),e.jsx(ie,{value:"large",children:"大"})]})]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{htmlFor:"emoji-page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(qe,{value:v.toString(),onValueChange:re=>{C(parseInt(re)),j(1),be(new Set)},children:[e.jsx(Be,{id:"emoji-page-size",className:"w-20",children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"20",children:"20"}),e.jsx(ie,{value:"40",children:"40"}),e.jsx(ie,{value:"60",children:"60"}),e.jsx(ie,{value:"100",children:"100"})]})]}),Ne.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>be(new Set),children:"取消选择"}),e.jsxs(b,{variant:"destructive",size:"sm",onClick:()=>X(!0),children:[e.jsx(at,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]}),e.jsx("div",{className:"flex justify-end pt-4 border-t",children:e.jsxs(b,{variant:"outline",size:"sm",onClick:ve,disabled:h,children:[e.jsx(ws,{className:`h-4 w-4 mr-2 ${h?"animate-spin":""}`}),"刷新"]})})]})]}),e.jsxs(Ye,{children:[e.jsxs(Nt,{children:[e.jsx(wt,{children:"表情包列表"}),e.jsxs(ns,{children:["共 ",p," 个表情包,当前第 ",f," 页"]})]}),e.jsxs(kt,{children:[n.length===0?e.jsx("div",{className:"text-center py-12 text-muted-foreground",children:"暂无数据"}):e.jsx("div",{className:`grid gap-3 ${_==="small"?"grid-cols-3 sm:grid-cols-4 md:grid-cols-6 lg:grid-cols-8 xl:grid-cols-10":_==="medium"?"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 xl:grid-cols-8":"grid-cols-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5"}`,children:n.map(re=>e.jsxs("div",{className:`group relative rounded-lg border bg-card overflow-hidden hover:ring-2 hover:ring-primary transition-all cursor-pointer ${Ne.has(re.id)?"ring-2 ring-primary bg-primary/5":""}`,onClick:()=>tt(re.id),children:[e.jsx("div",{className:`absolute top-1 left-1 z-10 transition-opacity ${Ne.has(re.id)?"opacity-100":"opacity-0 group-hover:opacity-100"}`,children:e.jsx("div",{className:`w-5 h-5 rounded-full border-2 flex items-center justify-center ${Ne.has(re.id)?"bg-primary border-primary text-primary-foreground":"bg-background/80 border-muted-foreground/50"}`,children:Ne.has(re.id)&&e.jsx(ha,{className:"h-3 w-3"})})}),e.jsxs("div",{className:"absolute top-1 right-1 z-10 flex flex-col gap-0.5",children:[re.is_registered&&e.jsx(Je,{variant:"default",className:"bg-green-600 text-[10px] px-1 py-0",children:"已注册"}),re.is_banned&&e.jsx(Je,{variant:"destructive",className:"text-[10px] px-1 py-0",children:"已封禁"})]}),e.jsx("div",{className:`aspect-square bg-muted flex items-center justify-center overflow-hidden ${_==="small"?"p-1":_==="medium"?"p-2":"p-3"}`,children:e.jsx(jw,{src:Tw(re.id),alt:"表情包"})}),e.jsxs("div",{className:`border-t bg-card ${_==="small"?"p-1":"p-2"}`,children:[e.jsxs("div",{className:"flex items-center justify-between gap-1 text-xs text-muted-foreground mb-1",children:[e.jsx(Je,{variant:"outline",className:"text-[10px] px-1 py-0",children:re.format.toUpperCase()}),e.jsxs("span",{className:"font-mono",children:[re.usage_count,"次"]})]}),e.jsxs("div",{className:`flex gap-1 justify-center opacity-0 group-hover:opacity-100 transition-opacity ${_==="small"?"flex-wrap":""}`,children:[e.jsx(b,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:ke=>{ke.stopPropagation(),W(re)},title:"编辑",children:e.jsx(mr,{className:"h-3 w-3"})}),e.jsx(b,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:ke=>{ke.stopPropagation(),G(re)},title:"详情",children:e.jsx(Ra,{className:"h-3 w-3"})}),!re.is_registered&&e.jsx(b,{variant:"ghost",size:"icon",className:"h-6 w-6 text-green-600 hover:text-green-700",onClick:ke=>{ke.stopPropagation(),Se(re)},title:"注册",children:e.jsx(ha,{className:"h-3 w-3"})}),!re.is_banned&&e.jsx(b,{variant:"ghost",size:"icon",className:"h-6 w-6 text-orange-600 hover:text-orange-700",onClick:ke=>{ke.stopPropagation(),Me(re)},title:"封禁",children:e.jsx(Ny,{className:"h-3 w-3"})}),e.jsx(b,{variant:"ghost",size:"icon",className:"h-6 w-6 text-red-600 hover:text-red-700",onClick:ke=>{ke.stopPropagation(),U(re)},title:"删除",children:e.jsx(at,{className:"h-3 w-3"})})]})]})]},re.id))}),p>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["显示 ",(f-1)*v+1," 到"," ",Math.min(f*v,p)," 条,共 ",p," 条"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(vr,{className:"h-4 w-4"})}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>j(re=>Math.max(1,re-1)),disabled:f===1,children:[e.jsx(dn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:T,onChange:re=>te(re.target.value),onKeyDown:re=>re.key==="Enter"&&Ut(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(p/v)}),e.jsx(b,{variant:"outline",size:"sm",onClick:Ut,disabled:!T,className:"h-8",children:"跳转"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>j(re=>re+1),disabled:f>=Math.ceil(p/v),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(Ll,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(p/v)),disabled:f>=Math.ceil(p/v),className:"hidden sm:flex",children:e.jsx(br,{className:"h-4 w-4"})})]})]})]})]}),e.jsx(Dw,{emoji:Y,open:R,onOpenChange:ne}),e.jsx(Ow,{emoji:Y,open:fe,onOpenChange:Ce,onSuccess:()=>{ve(),de()}}),e.jsx(Rw,{open:oe,onOpenChange:ae,onSuccess:()=>{ve(),de()}})]})}),e.jsx(bt,{open:A,onOpenChange:X,children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认批量删除"}),e.jsxs(xt,{children:["你确定要删除选中的 ",Ne.size," 个表情包吗?此操作不可撤销。"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:Xe,children:"确认删除"})]})]})}),e.jsx(Jt,{open:we,onOpenChange:pe,children:e.jsxs($t,{children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:"确认删除"}),e.jsx(ds,{children:"确定要删除这个表情包吗?此操作无法撤销。"})]}),e.jsxs(xs,{children:[e.jsx(b,{variant:"outline",onClick:()=>pe(!1),children:"取消"}),e.jsx(b,{variant:"destructive",onClick:ee,children:"删除"})]})]})})]})}function Dw({emoji:n,open:r,onOpenChange:c}){if(!n)return null;const d=h=>h?new Date(h*1e3).toLocaleString("zh-CN"):"-";return e.jsx(Jt,{open:r,onOpenChange:c,children:e.jsxs($t,{className:"max-w-2xl max-h-[90vh]",children:[e.jsx(Qt,{children:e.jsx(Yt,{children:"表情包详情"})}),e.jsx(st,{className:"max-h-[calc(90vh-8rem)] pr-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"flex justify-center",children:e.jsx("div",{className:"w-32 h-32 bg-muted rounded-lg flex items-center justify-center overflow-hidden",children:e.jsx("img",{src:Ew(n.id),alt:n.description||"表情包",className:"w-full h-full object-cover",onError:h=>{const x=h.target;x.style.display="none";const f=x.parentElement;f&&(f.innerHTML='')}})})}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(y,{className:"text-muted-foreground",children:"ID"}),e.jsx("div",{className:"mt-1 font-mono",children:n.id})]}),e.jsxs("div",{children:[e.jsx(y,{className:"text-muted-foreground",children:"格式"}),e.jsx("div",{className:"mt-1",children:e.jsx(Je,{variant:"outline",children:n.format.toUpperCase()})})]})]}),e.jsxs("div",{children:[e.jsx(y,{className:"text-muted-foreground",children:"文件路径"}),e.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:n.full_path})]}),e.jsxs("div",{children:[e.jsx(y,{className:"text-muted-foreground",children:"哈希值"}),e.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:n.emoji_hash})]}),e.jsxs("div",{children:[e.jsx(y,{className:"text-muted-foreground",children:"描述"}),n.description?e.jsx("div",{className:"mt-1 rounded-lg border bg-muted/50 p-3",children:e.jsx(bw,{className:"prose-sm",children:n.description})}):e.jsx("div",{className:"mt-1 text-sm text-muted-foreground",children:"-"})]}),e.jsxs("div",{children:[e.jsx(y,{className:"text-muted-foreground",children:"情绪"}),e.jsx("div",{className:"mt-1",children:n.emotion?e.jsx("span",{className:"text-sm",children:n.emotion}):e.jsx("span",{className:"text-sm text-muted-foreground",children:"-"})})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(y,{className:"text-muted-foreground",children:"状态"}),e.jsxs("div",{className:"mt-2 flex gap-2",children:[n.is_registered&&e.jsx(Je,{variant:"default",className:"bg-green-600",children:"已注册"}),n.is_banned&&e.jsx(Je,{variant:"destructive",children:"已封禁"}),!n.is_registered&&!n.is_banned&&e.jsx(Je,{variant:"outline",children:"未注册"})]})]}),e.jsxs("div",{children:[e.jsx(y,{className:"text-muted-foreground",children:"使用次数"}),e.jsx("div",{className:"mt-1 font-mono text-lg",children:n.usage_count})]})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(y,{className:"text-muted-foreground",children:"记录时间"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.record_time)})]}),e.jsxs("div",{children:[e.jsx(y,{className:"text-muted-foreground",children:"注册时间"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.register_time)})]})]}),e.jsxs("div",{children:[e.jsx(y,{className:"text-muted-foreground",children:"最后使用"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.last_used_time)})]})]})})]})})}function Ow({emoji:n,open:r,onOpenChange:c,onSuccess:d}){const[h,x]=u.useState(""),[f,j]=u.useState(!1),[p,N]=u.useState(!1),[v,C]=u.useState(!1),{toast:S}=Xt();u.useEffect(()=>{n&&(x(n.emotion||""),j(n.is_registered),N(n.is_banned))},[n]);const w=async()=>{if(n)try{C(!0);const L=h.split(/[,,]/).map(F=>F.trim()).filter(Boolean).join(",");await ww(n.id,{emotion:L||void 0,is_registered:f,is_banned:p}),S({title:"成功",description:"表情包信息已更新"}),c(!1),d()}catch(L){const F=L instanceof Error?L.message:"保存失败";S({title:"错误",description:F,variant:"destructive"})}finally{C(!1)}};return n?e.jsx(Jt,{open:r,onOpenChange:c,children:e.jsxs($t,{className:"max-w-2xl",children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:"编辑表情包"}),e.jsx(ds,{children:"修改表情包的情绪和状态信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(y,{children:"情绪"}),e.jsx(Ft,{value:h,onChange:L=>x(L.target.value),placeholder:"输入情绪描述...",rows:2,className:"mt-1"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"输入情绪相关的文本描述"})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Cs,{id:"is_registered",checked:f,onCheckedChange:L=>{L===!0?(j(!0),N(!1)):j(!1)}}),e.jsx(y,{htmlFor:"is_registered",className:"cursor-pointer",children:"已注册"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Cs,{id:"is_banned",checked:p,onCheckedChange:L=>{L===!0?(N(!0),j(!1)):N(!1)}}),e.jsx(y,{htmlFor:"is_banned",className:"cursor-pointer",children:"已封禁"})]})]})]}),e.jsxs(xs,{children:[e.jsx(b,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(b,{onClick:w,disabled:v,children:v?"保存中...":"保存"})]})]})}):null}function Rw({open:n,onOpenChange:r,onSuccess:c}){const[d,h]=u.useState("select"),[x,f]=u.useState([]),[j,p]=u.useState(null),[N,v]=u.useState(!1),{toast:C}=Xt(),S=u.useMemo(()=>new aN({id:"emoji-uploader",autoProceed:!1,restrictions:{maxFileSize:10485760,allowedFileTypes:["image/jpeg","image/png","image/gif","image/webp"],maxNumberOfFiles:20},locale:{pluralize:()=>0,strings:{addMoreFiles:"添加更多文件",addingMoreFiles:"正在添加更多文件",allowedFileTypes:"允许的文件类型:%{types}",cancel:"取消",closeModal:"关闭",complete:"完成",connectedToInternet:"已连接到互联网",copyLink:"复制链接",copyLinkToClipboardFallback:"复制下方链接",copyLinkToClipboardSuccess:"链接已复制到剪贴板",dashboardTitle:"选择文件",dashboardWindowTitle:"文件选择窗口(按 ESC 关闭)",done:"完成",dropHereOr:"拖放文件到这里或 %{browse}",dropHint:"将文件拖放到此处",dropPasteFiles:"将文件拖放到这里或 %{browseFiles}",dropPasteFolders:"将文件拖放到这里或 %{browseFolders}",dropPasteBoth:"将文件拖放到这里,%{browseFiles} 或 %{browseFolders}",dropPasteImportFiles:"将文件拖放到这里,%{browseFiles} 或从以下位置导入:",dropPasteImportFolders:"将文件拖放到这里,%{browseFolders} 或从以下位置导入:",dropPasteImportBoth:"将文件拖放到这里,%{browseFiles},%{browseFolders} 或从以下位置导入:",editFile:"编辑文件",editing:"正在编辑 %{file}",emptyFolderAdded:"未从空文件夹添加文件",exceedsSize:"%{file} 超过了最大允许大小 %{size}",failedToUpload:"上传 %{file} 失败",fileSource:"文件来源:%{name}",filesUploadedOfTotal:{0:"已上传 %{complete} / %{smart_count} 个文件",1:"已上传 %{complete} / %{smart_count} 个文件"},filter:"筛选",finishEditingFile:"完成编辑文件",folderAdded:{0:"已从 %{folder} 添加 %{smart_count} 个文件",1:"已从 %{folder} 添加 %{smart_count} 个文件"},generatingThumbnails:"正在生成缩略图...",import:"导入",importFiles:"从以下位置导入文件:",importFrom:"从 %{name} 导入",loading:"加载中...",logOut:"登出",myDevice:"我的设备",noFilesFound:"这里没有文件或文件夹",noInternetConnection:"无网络连接",openFolderNamed:"打开文件夹 %{name}",pause:"暂停",pauseUpload:"暂停上传",paused:"已暂停",poweredBy:"技术支持:%{uppy}",processingXFiles:{0:"正在处理 %{smart_count} 个文件",1:"正在处理 %{smart_count} 个文件"},recording:"录制中",removeFile:"移除文件",resetFilter:"重置筛选",resume:"继续",resumeUpload:"继续上传",retry:"重试",retryUpload:"重试上传",save:"保存",saveChanges:"保存更改",selectFileNamed:"选择文件 %{name}",selectX:{0:"选择 %{smart_count}",1:"选择 %{smart_count}"},smile:"笑一个!",startRecording:"开始录制视频",stopRecording:"停止录制视频",takePicture:"拍照",timedOut:"上传已停滞 %{seconds} 秒,正在中止。",upload:"下一步",uploadComplete:"上传完成",uploadFailed:"上传失败",uploadPaused:"上传已暂停",uploadXFiles:{0:"下一步(%{smart_count} 个文件)",1:"下一步(%{smart_count} 个文件)"},uploadXNewFiles:{0:"下一步(+%{smart_count} 个文件)",1:"下一步(+%{smart_count} 个文件)"},uploading:"正在上传",uploadingXFiles:{0:"正在上传 %{smart_count} 个文件",1:"正在上传 %{smart_count} 个文件"},xFilesSelected:{0:"已选择 %{smart_count} 个文件",1:"已选择 %{smart_count} 个文件"},xMoreFilesAdded:{0:"又添加了 %{smart_count} 个文件",1:"又添加了 %{smart_count} 个文件"},xTimeLeft:"剩余 %{time}",youCanOnlyUploadFileTypes:"您只能上传:%{types}",youCanOnlyUploadX:{0:"您只能上传 %{smart_count} 个文件",1:"您只能上传 %{smart_count} 个文件"},youHaveToAtLeastSelectX:{0:"您至少需要选择 %{smart_count} 个文件",1:"您至少需要选择 %{smart_count} 个文件"},browseFiles:"浏览文件",browseFolders:"浏览文件夹",cancelUpload:"取消上传",addMore:"添加更多",back:"返回",editFileWithFilename:"编辑文件 %{file}"}}}),[]);u.useEffect(()=>{const Y=()=>{const E=S.getFiles();if(E.length===0)return;const R=E.map(ne=>({id:ne.id,name:ne.name,previewUrl:ne.preview||URL.createObjectURL(ne.data),emotion:"",description:"",isRegistered:!0,file:ne.data}));f(R),E.length===1?(p(R[0].id),h("edit-single")):h("edit-multiple")};return S.on("upload",Y),()=>{S.off("upload",Y)}},[S]),u.useEffect(()=>{n||(S.cancelAll(),h("select"),f([]),p(null),v(!1))},[n,S]);const w=u.useCallback((Y,E)=>{f(R=>R.map(ne=>ne.id===Y?{...ne,...E}:ne))},[]),L=u.useCallback(Y=>Y.emotion.trim().length>0,[]),F=u.useMemo(()=>x.length>0&&x.every(L),[x,L]),B=u.useMemo(()=>x.find(Y=>Y.id===j)||null,[x,j]),O=u.useCallback(()=>{(d==="edit-single"||d==="edit-multiple")&&(h("select"),f([]),p(null))},[d]),K=u.useCallback(async()=>{if(!F){C({title:"请填写必填项",description:"每个表情包的情感标签都是必填的",variant:"destructive"});return}v(!0);const Y=localStorage.getItem("access-token")||"";let E=0,R=0;try{for(const ne of x){const fe=new FormData;fe.append("file",ne.file),fe.append("emotion",ne.emotion),fe.append("description",ne.description),fe.append("is_registered",ne.isRegistered.toString());try{(await fetch(Aw(),{method:"POST",headers:{Authorization:`Bearer ${Y}`},body:fe})).ok?E++:R++}catch{R++}}R===0?(C({title:"上传成功",description:`成功上传 ${E} 个表情包`}),r(!1),c()):(C({title:"部分上传失败",description:`成功 ${E} 个,失败 ${R} 个`,variant:"destructive"}),c())}finally{v(!1)}},[F,x,C,r,c]),H=()=>e.jsx("div",{className:"space-y-4",children:e.jsx("div",{className:"border rounded-lg overflow-hidden w-full",children:e.jsx(gw,{uppy:S,proudlyDisplayPoweredByUppy:!1,hideProgressDetails:!0,height:350,width:"100%",theme:"auto",note:"支持 JPG、PNG、GIF、WebP 格式,最多 20 个文件"})})}),z=()=>{const Y=x[0];return Y?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs(b,{variant:"ghost",size:"sm",onClick:O,children:[e.jsx(ti,{className:"h-4 w-4 mr-1"}),"返回"]}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"编辑表情包信息"})]}),e.jsxs("div",{className:"flex gap-6",children:[e.jsxs("div",{className:"flex-shrink-0",children:[e.jsx("div",{className:"w-32 h-32 rounded-lg border overflow-hidden bg-muted flex items-center justify-center",children:e.jsx("img",{src:Y.previewUrl,alt:Y.name,className:"max-w-full max-h-full object-contain"})}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2 text-center truncate max-w-32",children:Y.name})]}),e.jsxs("div",{className:"flex-1 space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(y,{htmlFor:"single-emotion",children:["情感标签 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"single-emotion",value:Y.emotion,onChange:E=>w(Y.id,{emotion:E.target.value}),placeholder:"多个标签用逗号分隔,如:开心,高兴",className:Y.emotion.trim()?"":"border-destructive"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"用于情感匹配,多个标签用逗号分隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"single-description",children:"描述"}),e.jsx(ce,{id:"single-description",value:Y.description,onChange:E=>w(Y.id,{description:E.target.value}),placeholder:"输入表情包描述..."})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Cs,{id:"single-is-registered",checked:Y.isRegistered,onCheckedChange:E=>w(Y.id,{isRegistered:E===!0})}),e.jsx(y,{htmlFor:"single-is-registered",className:"cursor-pointer",children:"上传后立即注册(可被麦麦使用)"})]})]})]}),e.jsx(xs,{children:e.jsx(b,{onClick:K,disabled:!F||N,children:N?"上传中...":"上传"})})]}):null},V=()=>{const Y=x.filter(L).length,E=x.length;return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs(b,{variant:"ghost",size:"sm",onClick:O,children:[e.jsx(ti,{className:"h-4 w-4 mr-1"}),"返回"]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["编辑表情包信息(",Y,"/",E," 已完成)"]})]}),e.jsx(Je,{variant:F?"default":"secondary",children:F?e.jsxs(e.Fragment,{children:[e.jsx(Na,{className:"h-3 w-3 mr-1"}),"全部完成"]}):e.jsxs(e.Fragment,{children:[e.jsx(on,{className:"h-3 w-3 mr-1"}),"未完成"]})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(st,{className:"h-[350px] pr-2",children:e.jsx("div",{className:"space-y-2",children:x.map(R=>{const ne=L(R),fe=j===R.id;return e.jsxs("div",{onClick:()=>p(R.id),className:` - flex items-center gap-3 p-3 rounded-lg border-2 cursor-pointer transition-all - ${fe?"ring-2 ring-primary":""} - ${ne?"border-green-500 bg-green-50 dark:bg-green-950/20":"border-border hover:border-muted-foreground/50"} - `,children:[e.jsx("div",{className:"w-12 h-12 rounded border overflow-hidden bg-muted flex-shrink-0 flex items-center justify-center",children:e.jsx("img",{src:R.previewUrl,alt:R.name,className:"max-w-full max-h-full object-contain"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm font-medium truncate",children:R.name}),e.jsx("p",{className:"text-xs text-muted-foreground truncate",children:R.emotion||"未填写情感标签"})]}),ne?e.jsx(ha,{className:"h-5 w-5 text-green-500 flex-shrink-0"}):e.jsx("div",{className:"h-5 w-5 rounded-full border-2 border-muted-foreground/30 flex-shrink-0"})]},R.id)})})}),e.jsx("div",{className:"border rounded-lg p-4",children:B?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-16 h-16 rounded border overflow-hidden bg-muted flex items-center justify-center",children:e.jsx("img",{src:B.previewUrl,alt:B.name,className:"max-w-full max-h-full object-contain"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium truncate",children:B.name}),L(B)&&e.jsxs(Je,{variant:"outline",className:"text-green-600 border-green-600",children:[e.jsx(Na,{className:"h-3 w-3 mr-1"}),"已完成"]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(y,{htmlFor:"multi-emotion",children:["情感标签 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"multi-emotion",value:B.emotion,onChange:R=>w(B.id,{emotion:R.target.value}),placeholder:"多个标签用逗号分隔,如:开心,高兴",className:B.emotion.trim()?"":"border-destructive"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"multi-description",children:"描述"}),e.jsx(ce,{id:"multi-description",value:B.description,onChange:R=>w(B.id,{description:R.target.value}),placeholder:"输入表情包描述..."})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Cs,{id:"multi-is-registered",checked:B.isRegistered,onCheckedChange:R=>w(B.id,{isRegistered:R===!0})}),e.jsx(y,{htmlFor:"multi-is-registered",className:"cursor-pointer text-sm",children:"上传后立即注册"})]})]}):e.jsx("div",{className:"h-full flex items-center justify-center text-muted-foreground",children:e.jsxs("div",{className:"text-center",children:[e.jsx(ig,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),e.jsx("p",{children:"点击左侧卡片编辑"})]})})})]}),e.jsx(xs,{children:e.jsx(b,{onClick:K,disabled:!F||N,children:N?"上传中...":`上传全部 (${E})`})})]})};return e.jsx(Jt,{open:n,onOpenChange:r,children:e.jsxs($t,{className:"max-w-3xl max-h-[90vh] overflow-hidden",children:[e.jsxs(Qt,{children:[e.jsxs(Yt,{className:"flex items-center gap-2",children:[e.jsx(dr,{className:"h-5 w-5"}),d==="select"&&"上传表情包 - 选择文件",d==="edit-single"&&"上传表情包 - 填写信息",d==="edit-multiple"&&"上传表情包 - 批量编辑"]}),e.jsxs(ds,{children:[d==="select"&&"支持 JPG、PNG、GIF、WebP 格式,单个文件最大 10MB,可同时上传多个文件",d==="edit-single"&&"请填写表情包的情感标签(必填)和描述",d==="edit-multiple"&&"点击左侧卡片编辑每个表情包的信息,情感标签为必填项"]})]}),e.jsxs("div",{className:"overflow-y-auto pr-1",children:[d==="select"&&H(),d==="edit-single"&&z(),d==="edit-multiple"&&V()]})]})})}const Bl="/api/webui/expression";async function Lw(){const n=await Te(`${Bl}/chats`,{});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取聊天列表失败")}return n.json()}async function Uw(n){const r=new URLSearchParams;n.page&&r.append("page",n.page.toString()),n.page_size&&r.append("page_size",n.page_size.toString()),n.search&&r.append("search",n.search),n.chat_id&&r.append("chat_id",n.chat_id);const c=await Te(`${Bl}/list?${r}`,{});if(!c.ok){const d=await c.json();throw new Error(d.detail||"获取表达方式列表失败")}return c.json()}async function Bw(n){const r=await Te(`${Bl}/${n}`,{});if(!r.ok){const c=await r.json();throw new Error(c.detail||"获取表达方式详情失败")}return r.json()}async function Hw(n){const r=await Te(`${Bl}/`,{method:"POST",body:JSON.stringify(n)});if(!r.ok){const c=await r.json();throw new Error(c.detail||"创建表达方式失败")}return r.json()}async function qw(n,r){const c=await Te(`${Bl}/${n}`,{method:"PATCH",body:JSON.stringify(r)});if(!c.ok){const d=await c.json();throw new Error(d.detail||"更新表达方式失败")}return c.json()}async function Gw(n){const r=await Te(`${Bl}/${n}`,{method:"DELETE"});if(!r.ok){const c=await r.json();throw new Error(c.detail||"删除表达方式失败")}return r.json()}async function Vw(n){const r=await Te(`${Bl}/batch/delete`,{method:"POST",body:JSON.stringify({ids:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"批量删除表达方式失败")}return r.json()}async function Fw(){const n=await Te(`${Bl}/stats/summary`,{});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取统计数据失败")}return n.json()}function $w(){const[n,r]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(0),[f,j]=u.useState(1),[p,N]=u.useState(20),[v,C]=u.useState(""),[S,w]=u.useState(null),[L,F]=u.useState(!1),[B,O]=u.useState(!1),[K,H]=u.useState(!1),[z,V]=u.useState(null),[Y,E]=u.useState(new Set),[R,ne]=u.useState(!1),[fe,Ce]=u.useState(""),[we,pe]=u.useState({total:0,recent_7days:0,chat_count:0,top_chats:{}}),[Ne,be]=u.useState([]),[A,X]=u.useState(new Map),{toast:T}=Xt(),te=async()=>{try{d(!0);const ee=await Uw({page:f,page_size:p,search:v||void 0});r(ee.data),x(ee.total)}catch(ee){T({title:"加载失败",description:ee instanceof Error?ee.message:"无法加载表达方式",variant:"destructive"})}finally{d(!1)}},_=async()=>{try{const ee=await Fw();ee?.data&&pe(ee.data)}catch(ee){console.error("加载统计数据失败:",ee)}},me=async()=>{try{const ee=await Lw();if(ee?.data){be(ee.data);const Se=new Map;ee.data.forEach(Me=>{Se.set(Me.chat_id,Me.chat_name)}),X(Se)}}catch(ee){console.error("加载聊天列表失败:",ee)}},oe=ee=>A.get(ee)||ee;u.useEffect(()=>{te(),_(),me()},[f,p,v]);const ae=async ee=>{try{const Se=await Bw(ee.id);w(Se.data),F(!0)}catch(Se){T({title:"加载详情失败",description:Se instanceof Error?Se.message:"无法加载表达方式详情",variant:"destructive"})}},xe=ee=>{w(ee),O(!0)},ve=async ee=>{try{await Gw(ee.id),T({title:"删除成功",description:`已删除表达方式: ${ee.situation}`}),V(null),te(),_()}catch(Se){T({title:"删除失败",description:Se instanceof Error?Se.message:"无法删除表达方式",variant:"destructive"})}},de=ee=>{const Se=new Set(Y);Se.has(ee)?Se.delete(ee):Se.add(ee),E(Se)},G=()=>{Y.size===n.length&&n.length>0?E(new Set):E(new Set(n.map(ee=>ee.id)))},W=async()=>{try{await Vw(Array.from(Y)),T({title:"批量删除成功",description:`已删除 ${Y.size} 个表达方式`}),E(new Set),ne(!1),te(),_()}catch(ee){T({title:"批量删除失败",description:ee instanceof Error?ee.message:"无法批量删除表达方式",variant:"destructive"})}},U=()=>{const ee=parseInt(fe),Se=Math.ceil(h/p);ee>=1&&ee<=Se?(j(ee),Ce("")):T({title:"无效的页码",description:`请输入1-${Se}之间的页码`,variant:"destructive"})};return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsx("div",{className:"mb-4 sm:mb-6",children:e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[e.jsx(cn,{className:"h-8 w-8",strokeWidth:2}),"表达方式管理"]}),e.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦的表达方式和话术模板"})]}),e.jsxs(b,{onClick:()=>H(!0),className:"gap-2",children:[e.jsx(hs,{className:"h-4 w-4"}),"新增表达方式"]})]})}),e.jsx(st,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"总数量"}),e.jsx("div",{className:"text-2xl font-bold mt-1",children:we.total})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"近7天新增"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:we.recent_7days})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"关联聊天数"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-blue-600",children:we.chat_count})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx(y,{htmlFor:"search",children:"搜索"}),e.jsx("div",{className:"flex flex-col sm:flex-row gap-2 mt-1.5",children:e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(zs,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{id:"search",placeholder:"搜索情境、风格或上下文...",value:v,onChange:ee=>C(ee.target.value),className:"pl-9"})]})}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[e.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:Y.size>0&&e.jsxs("span",{children:["已选择 ",Y.size," 个表达方式"]})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(qe,{value:p.toString(),onValueChange:ee=>{N(parseInt(ee)),j(1),E(new Set)},children:[e.jsx(Be,{id:"page-size",className:"w-20",children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"10",children:"10"}),e.jsx(ie,{value:"20",children:"20"}),e.jsx(ie,{value:"50",children:"50"}),e.jsx(ie,{value:"100",children:"100"})]})]}),Y.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>E(new Set),children:"取消选择"}),e.jsxs(b,{variant:"destructive",size:"sm",onClick:()=>ne(!0),children:[e.jsx(at,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card",children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(li,{children:[e.jsx(ni,{children:e.jsxs(_s,{children:[e.jsx(rt,{className:"w-12",children:e.jsx(Cs,{checked:Y.size===n.length&&n.length>0,onCheckedChange:G})}),e.jsx(rt,{children:"情境"}),e.jsx(rt,{children:"风格"}),e.jsx(rt,{children:"聊天"}),e.jsx(rt,{className:"text-right",children:"操作"})]})}),e.jsx(ii,{children:c?e.jsx(_s,{children:e.jsx(Ze,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):n.length===0?e.jsx(_s,{children:e.jsx(Ze,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):n.map(ee=>e.jsxs(_s,{children:[e.jsx(Ze,{children:e.jsx(Cs,{checked:Y.has(ee.id),onCheckedChange:()=>de(ee.id)})}),e.jsx(Ze,{className:"font-medium max-w-xs truncate",children:ee.situation}),e.jsx(Ze,{className:"max-w-xs truncate",children:ee.style}),e.jsx(Ze,{className:"max-w-[200px] truncate",title:oe(ee.chat_id),style:{wordBreak:"keep-all"},children:e.jsx("span",{className:"whitespace-nowrap overflow-hidden text-ellipsis block",children:oe(ee.chat_id)})}),e.jsx(Ze,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(b,{variant:"default",size:"sm",onClick:()=>xe(ee),children:[e.jsx(mr,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsx(b,{variant:"outline",size:"icon",className:"h-8 w-8",onClick:()=>ae(ee),title:"查看详情",children:e.jsx(Ws,{className:"h-4 w-4"})}),e.jsxs(b,{size:"sm",onClick:()=>V(ee),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(at,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},ee.id))})]})}),e.jsx("div",{className:"md:hidden space-y-3 p-4",children:c?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):n.length===0?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):n.map(ee=>e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Cs,{checked:Y.has(ee.id),onCheckedChange:()=>de(ee.id),className:"mt-1"}),e.jsxs("div",{className:"min-w-0 flex-1 overflow-hidden space-y-2",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"情境"}),e.jsx("h3",{className:"font-semibold text-sm line-clamp-2 w-full break-all",title:ee.situation,children:ee.situation})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"风格"}),e.jsx("p",{className:"text-sm line-clamp-2 w-full break-all",title:ee.style,children:ee.style})]})]})]}),e.jsxs("div",{className:"text-sm",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"聊天"}),e.jsx("p",{className:"text-sm truncate",title:oe(ee.chat_id),style:{wordBreak:"keep-all"},children:oe(ee.chat_id)})]}),e.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>xe(ee),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(mr,{className:"h-3 w-3 mr-1"}),"编辑"]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>ae(ee),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:e.jsx(Ws,{className:"h-3 w-3"})}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>V(ee),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[e.jsx(at,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},ee.id))}),h>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",h," 条记录,第 ",f," / ",Math.ceil(h/p)," 页"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(vr,{className:"h-4 w-4"})}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>j(f-1),disabled:f===1,children:[e.jsx(dn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:fe,onChange:ee=>Ce(ee.target.value),onKeyDown:ee=>ee.key==="Enter"&&U(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(h/p)}),e.jsx(b,{variant:"outline",size:"sm",onClick:U,disabled:!fe,className:"h-8",children:"跳转"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>j(f+1),disabled:f>=Math.ceil(h/p),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(Ll,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(h/p)),disabled:f>=Math.ceil(h/p),className:"hidden sm:flex",children:e.jsx(br,{className:"h-4 w-4"})})]})]})]})]})}),e.jsx(Qw,{expression:S,open:L,onOpenChange:F,chatNameMap:A}),e.jsx(Yw,{open:K,onOpenChange:H,chatList:Ne,onSuccess:()=>{te(),_(),H(!1)}}),e.jsx(Xw,{expression:S,open:B,onOpenChange:O,chatList:Ne,onSuccess:()=>{te(),_(),O(!1)}}),e.jsx(bt,{open:!!z,onOpenChange:()=>V(null),children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:['确定要删除表达方式 "',z?.situation,'" 吗? 此操作不可撤销。']})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>z&&ve(z),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),e.jsx(Kw,{open:R,onOpenChange:ne,onConfirm:W,count:Y.size})]})}function Qw({expression:n,open:r,onOpenChange:c,chatNameMap:d}){if(!n)return null;const h=f=>f?new Date(f*1e3).toLocaleString("zh-CN"):"-",x=f=>d.get(f)||f;return e.jsx(Jt,{open:r,onOpenChange:c,children:e.jsxs($t,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:"表达方式详情"}),e.jsx(ds,{children:"查看表达方式的完整信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(sr,{label:"情境",value:n.situation}),e.jsx(sr,{label:"风格",value:n.style}),e.jsx(sr,{label:"聊天",value:x(n.chat_id)}),e.jsx(sr,{icon:zu,label:"记录ID",value:n.id.toString(),mono:!0})]}),e.jsx("div",{className:"grid grid-cols-2 gap-4",children:e.jsx(sr,{icon:Wn,label:"创建时间",value:h(n.create_date)})})]}),e.jsx(xs,{children:e.jsx(b,{onClick:()=>c(!1),children:"关闭"})})]})})}function sr({icon:n,label:r,value:c,mono:d=!1}){return e.jsxs("div",{className:"space-y-1",children:[e.jsxs(y,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[n&&e.jsx(n,{className:"h-3 w-3"}),r]}),e.jsx("div",{className:Q("text-sm",d&&"font-mono",!c&&"text-muted-foreground"),children:c||"-"})]})}function Yw({open:n,onOpenChange:r,chatList:c,onSuccess:d}){const[h,x]=u.useState({situation:"",style:"",chat_id:""}),[f,j]=u.useState(!1),{toast:p}=Xt(),N=async()=>{if(!h.situation||!h.style||!h.chat_id){p({title:"验证失败",description:"请填写必填字段:情境、风格和聊天",variant:"destructive"});return}try{j(!0),await Hw(h),p({title:"创建成功",description:"表达方式已创建"}),x({situation:"",style:"",chat_id:""}),d()}catch(v){p({title:"创建失败",description:v instanceof Error?v.message:"无法创建表达方式",variant:"destructive"})}finally{j(!1)}};return e.jsx(Jt,{open:n,onOpenChange:r,children:e.jsxs($t,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:"新增表达方式"}),e.jsx(ds,{children:"创建新的表达方式记录"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(y,{htmlFor:"situation",children:["情境 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"situation",value:h.situation,onChange:v=>x({...h,situation:v.target.value}),placeholder:"描述使用场景"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(y,{htmlFor:"style",children:["风格 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(ce,{id:"style",value:h.style,onChange:v=>x({...h,style:v.target.value}),placeholder:"描述表达风格"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(y,{htmlFor:"chat_id",children:["聊天 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsxs(qe,{value:h.chat_id,onValueChange:v=>x({...h,chat_id:v}),children:[e.jsx(Be,{children:e.jsx(Ge,{placeholder:"选择关联的聊天"})}),e.jsx(He,{children:c.map(v=>e.jsx(ie,{value:v.chat_id,children:e.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[v.chat_name,v.is_group&&e.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},v.chat_id))})]})]})]}),e.jsxs(xs,{children:[e.jsx(b,{variant:"outline",onClick:()=>r(!1),children:"取消"}),e.jsx(b,{onClick:N,disabled:f,children:f?"创建中...":"创建"})]})]})})}function Xw({expression:n,open:r,onOpenChange:c,chatList:d,onSuccess:h}){const[x,f]=u.useState({}),[j,p]=u.useState(!1),{toast:N}=Xt();u.useEffect(()=>{n&&f({situation:n.situation,style:n.style,chat_id:n.chat_id})},[n]);const v=async()=>{if(n)try{p(!0),await qw(n.id,x),N({title:"保存成功",description:"表达方式已更新"}),h()}catch(C){N({title:"保存失败",description:C instanceof Error?C.message:"无法更新表达方式",variant:"destructive"})}finally{p(!1)}};return n?e.jsx(Jt,{open:r,onOpenChange:c,children:e.jsxs($t,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:"编辑表达方式"}),e.jsx(ds,{children:"修改表达方式的信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"edit_situation",children:"情境"}),e.jsx(ce,{id:"edit_situation",value:x.situation||"",onChange:C=>f({...x,situation:C.target.value}),placeholder:"描述使用场景"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"edit_style",children:"风格"}),e.jsx(ce,{id:"edit_style",value:x.style||"",onChange:C=>f({...x,style:C.target.value}),placeholder:"描述表达风格"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"edit_chat_id",children:"聊天"}),e.jsxs(qe,{value:x.chat_id||"",onValueChange:C=>f({...x,chat_id:C}),children:[e.jsx(Be,{children:e.jsx(Ge,{placeholder:"选择关联的聊天"})}),e.jsx(He,{children:d.map(C=>e.jsx(ie,{value:C.chat_id,children:e.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[C.chat_name,C.is_group&&e.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},C.chat_id))})]})]})]}),e.jsxs(xs,{children:[e.jsx(b,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(b,{onClick:v,disabled:j,children:j?"保存中...":"保存"})]})]})}):null}function Kw({open:n,onOpenChange:r,onConfirm:c,count:d}){return e.jsx(bt,{open:n,onOpenChange:r,children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认批量删除"}),e.jsxs(xt,{children:["您即将删除 ",d," 个表达方式,此操作无法撤销。确定要继续吗?"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:c,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认删除"})]})]})})}const ri="/api/webui/person";async function Zw(n){const r=new URLSearchParams;n.page&&r.append("page",n.page.toString()),n.page_size&&r.append("page_size",n.page_size.toString()),n.search&&r.append("search",n.search),n.is_known!==void 0&&r.append("is_known",n.is_known.toString()),n.platform&&r.append("platform",n.platform);const c=await Te(`${ri}/list?${r}`,{headers:Rt()});if(!c.ok){const d=await c.json();throw new Error(d.detail||"获取人物列表失败")}return c.json()}async function Jw(n){const r=await Te(`${ri}/${n}`,{headers:Rt()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"获取人物详情失败")}return r.json()}async function Iw(n,r){const c=await Te(`${ri}/${n}`,{method:"PATCH",headers:Rt(),body:JSON.stringify(r)});if(!c.ok){const d=await c.json();throw new Error(d.detail||"更新人物信息失败")}return c.json()}async function Pw(n){const r=await Te(`${ri}/${n}`,{method:"DELETE",headers:Rt()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"删除人物信息失败")}return r.json()}async function Ww(){const n=await Te(`${ri}/stats/summary`,{headers:Rt()});if(!n.ok){const r=await n.json();throw new Error(r.detail||"获取统计数据失败")}return n.json()}async function e1(n){const r=await Te(`${ri}/batch/delete`,{method:"POST",headers:Rt(),body:JSON.stringify({person_ids:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"批量删除失败")}return r.json()}function t1(){const[n,r]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(0),[f,j]=u.useState(1),[p,N]=u.useState(20),[v,C]=u.useState(""),[S,w]=u.useState(void 0),[L,F]=u.useState(void 0),[B,O]=u.useState(null),[K,H]=u.useState(!1),[z,V]=u.useState(!1),[Y,E]=u.useState(null),[R,ne]=u.useState({total:0,known:0,unknown:0,platforms:{}}),[fe,Ce]=u.useState(new Set),[we,pe]=u.useState(!1),[Ne,be]=u.useState(""),{toast:A}=Xt(),X=async()=>{try{d(!0);const U=await Zw({page:f,page_size:p,search:v||void 0,is_known:S,platform:L});r(U.data),x(U.total)}catch(U){A({title:"加载失败",description:U instanceof Error?U.message:"无法加载人物信息",variant:"destructive"})}finally{d(!1)}},T=async()=>{try{const U=await Ww();U?.data&&ne(U.data)}catch(U){console.error("加载统计数据失败:",U)}};u.useEffect(()=>{X(),T()},[f,p,v,S,L]);const te=async U=>{try{const ee=await Jw(U.person_id);O(ee.data),H(!0)}catch(ee){A({title:"加载详情失败",description:ee instanceof Error?ee.message:"无法加载人物详情",variant:"destructive"})}},_=U=>{O(U),V(!0)},me=async U=>{try{await Pw(U.person_id),A({title:"删除成功",description:`已删除人物信息: ${U.person_name||U.nickname||U.user_id}`}),E(null),X(),T()}catch(ee){A({title:"删除失败",description:ee instanceof Error?ee.message:"无法删除人物信息",variant:"destructive"})}},oe=u.useMemo(()=>Object.keys(R.platforms),[R.platforms]),ae=U=>{const ee=new Set(fe);ee.has(U)?ee.delete(U):ee.add(U),Ce(ee)},xe=()=>{fe.size===n.length&&n.length>0?Ce(new Set):Ce(new Set(n.map(U=>U.person_id)))},ve=()=>{if(fe.size===0){A({title:"未选择任何人物",description:"请先选择要删除的人物",variant:"destructive"});return}pe(!0)},de=async()=>{try{const U=await e1(Array.from(fe));A({title:"批量删除完成",description:U.message}),Ce(new Set),pe(!1),X(),T()}catch(U){A({title:"批量删除失败",description:U instanceof Error?U.message:"批量删除失败",variant:"destructive"})}},G=()=>{const U=parseInt(Ne),ee=Math.ceil(h/p);U>=1&&U<=ee?(j(U),be("")):A({title:"无效的页码",description:`请输入1-${ee}之间的页码`,variant:"destructive"})},W=U=>U?new Date(U*1e3).toLocaleString("zh-CN"):"-";return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsx("div",{className:"mb-4 sm:mb-6",children:e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[e.jsx(Au,{className:"h-8 w-8",strokeWidth:2}),"人物信息管理"]}),e.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦认识的所有人物信息"})]})})}),e.jsx(st,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"总人数"}),e.jsx("div",{className:"text-2xl font-bold mt-1",children:R.total})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"已认识"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:R.known})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"未认识"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-muted-foreground",children:R.unknown})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-4 gap-4",children:[e.jsxs("div",{className:"sm:col-span-2",children:[e.jsx(y,{htmlFor:"search",children:"搜索"}),e.jsxs("div",{className:"relative mt-1.5",children:[e.jsx(zs,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{id:"search",placeholder:"搜索名称、昵称或用户ID...",value:v,onChange:U=>C(U.target.value),className:"pl-9"})]})]}),e.jsxs("div",{children:[e.jsx(y,{htmlFor:"filter-known",children:"认识状态"}),e.jsxs(qe,{value:S===void 0?"all":S.toString(),onValueChange:U=>{w(U==="all"?void 0:U==="true"),j(1)},children:[e.jsx(Be,{id:"filter-known",className:"mt-1.5",children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"all",children:"全部"}),e.jsx(ie,{value:"true",children:"已认识"}),e.jsx(ie,{value:"false",children:"未认识"})]})]})]}),e.jsxs("div",{children:[e.jsx(y,{htmlFor:"filter-platform",children:"平台"}),e.jsxs(qe,{value:L||"all",onValueChange:U=>{F(U==="all"?void 0:U),j(1)},children:[e.jsx(Be,{id:"filter-platform",className:"mt-1.5",children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"all",children:"全部平台"}),oe.map(U=>e.jsxs(ie,{value:U,children:[U," (",R.platforms[U],")"]},U))]})]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[e.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:fe.size>0&&e.jsxs("span",{children:["已选择 ",fe.size," 个人物"]})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(qe,{value:p.toString(),onValueChange:U=>{N(parseInt(U)),j(1),Ce(new Set)},children:[e.jsx(Be,{id:"page-size",className:"w-20",children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"10",children:"10"}),e.jsx(ie,{value:"20",children:"20"}),e.jsx(ie,{value:"50",children:"50"}),e.jsx(ie,{value:"100",children:"100"})]})]}),fe.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>Ce(new Set),children:"取消选择"}),e.jsxs(b,{variant:"destructive",size:"sm",onClick:ve,children:[e.jsx(at,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card",children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(li,{children:[e.jsx(ni,{children:e.jsxs(_s,{children:[e.jsx(rt,{className:"w-12",children:e.jsx(Cs,{checked:n.length>0&&fe.size===n.length,onCheckedChange:xe,"aria-label":"全选"})}),e.jsx(rt,{children:"状态"}),e.jsx(rt,{children:"名称"}),e.jsx(rt,{children:"昵称"}),e.jsx(rt,{children:"平台"}),e.jsx(rt,{children:"用户ID"}),e.jsx(rt,{children:"最后更新"}),e.jsx(rt,{className:"text-right",children:"操作"})]})}),e.jsx(ii,{children:c?e.jsx(_s,{children:e.jsx(Ze,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):n.length===0?e.jsx(_s,{children:e.jsx(Ze,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):n.map(U=>e.jsxs(_s,{children:[e.jsx(Ze,{children:e.jsx(Cs,{checked:fe.has(U.person_id),onCheckedChange:()=>ae(U.person_id),"aria-label":`选择 ${U.person_name||U.nickname||U.user_id}`})}),e.jsx(Ze,{children:e.jsx("div",{className:Q("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium",U.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:U.is_known?"已认识":"未认识"})}),e.jsx(Ze,{className:"font-medium",children:U.person_name||e.jsx("span",{className:"text-muted-foreground",children:"-"})}),e.jsx(Ze,{children:U.nickname||"-"}),e.jsx(Ze,{children:U.platform}),e.jsx(Ze,{className:"font-mono text-sm",children:U.user_id}),e.jsx(Ze,{className:"text-sm text-muted-foreground",children:W(U.last_know)}),e.jsx(Ze,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(b,{variant:"default",size:"sm",onClick:()=>te(U),children:[e.jsx(Ws,{className:"h-4 w-4 mr-1"}),"详情"]}),e.jsxs(b,{variant:"default",size:"sm",onClick:()=>_(U),children:[e.jsx(mr,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsxs(b,{size:"sm",onClick:()=>E(U),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(at,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},U.id))})]})}),e.jsx("div",{className:"md:hidden space-y-3 p-4",children:c?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):n.length===0?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):n.map(U=>e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Cs,{checked:fe.has(U.person_id),onCheckedChange:()=>ae(U.person_id),className:"mt-1"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:Q("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium mb-2",U.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:U.is_known?"已认识":"未认识"}),e.jsx("h3",{className:"font-semibold text-sm line-clamp-1 w-full break-all",children:U.person_name||e.jsx("span",{className:"text-muted-foreground",children:"未命名"})}),U.nickname&&e.jsxs("p",{className:"text-xs text-muted-foreground mt-1 line-clamp-1 w-full break-all",children:["昵称: ",U.nickname]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"平台"}),e.jsx("p",{className:"font-medium text-xs",children:U.platform})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"用户ID"}),e.jsx("p",{className:"font-mono text-xs truncate",title:U.user_id,children:U.user_id})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"最后更新"}),e.jsx("p",{className:"text-xs",children:W(U.last_know)})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>te(U),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(Ws,{className:"h-3 w-3 mr-1"}),"查看"]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>_(U),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(mr,{className:"h-3 w-3 mr-1"}),"编辑"]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>E(U),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[e.jsx(at,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},U.id))}),h>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",h," 条记录,第 ",f," / ",Math.ceil(h/p)," 页"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(vr,{className:"h-4 w-4"})}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>j(f-1),disabled:f===1,children:[e.jsx(dn,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{type:"number",value:Ne,onChange:U=>be(U.target.value),onKeyDown:U=>U.key==="Enter"&&G(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(h/p)}),e.jsx(b,{variant:"outline",size:"sm",onClick:G,disabled:!Ne,className:"h-8",children:"跳转"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>j(f+1),disabled:f>=Math.ceil(h/p),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(Ll,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(h/p)),disabled:f>=Math.ceil(h/p),className:"hidden sm:flex",children:e.jsx(br,{className:"h-4 w-4"})})]})]})]})]})}),e.jsx(s1,{person:B,open:K,onOpenChange:H}),e.jsx(a1,{person:B,open:z,onOpenChange:V,onSuccess:()=>{X(),T(),V(!1)}}),e.jsx(bt,{open:!!Y,onOpenChange:()=>E(null),children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认删除"}),e.jsxs(xt,{children:['确定要删除人物信息 "',Y?.person_name||Y?.nickname||Y?.user_id,'" 吗? 此操作不可撤销。']})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:()=>Y&&me(Y),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),e.jsx(bt,{open:we,onOpenChange:pe,children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"确认批量删除"}),e.jsxs(xt,{children:["确定要删除选中的 ",fe.size," 个人物信息吗? 此操作不可撤销。"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{children:"取消"}),e.jsx(ft,{onClick:de,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})})]})}function s1({person:n,open:r,onOpenChange:c}){if(!n)return null;const d=h=>h?new Date(h*1e3).toLocaleString("zh-CN"):"-";return e.jsx(Jt,{open:r,onOpenChange:c,children:e.jsxs($t,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:"人物详情"}),e.jsxs(ds,{children:["查看 ",n.person_name||n.nickname||n.user_id," 的完整信息"]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(nl,{icon:Ic,label:"人物名称",value:n.person_name}),e.jsx(nl,{icon:cn,label:"昵称",value:n.nickname}),e.jsx(nl,{icon:zu,label:"用户ID",value:n.user_id,mono:!0}),e.jsx(nl,{icon:zu,label:"人物ID",value:n.person_id,mono:!0}),e.jsx(nl,{label:"平台",value:n.platform}),e.jsx(nl,{label:"状态",value:n.is_known?"已认识":"未认识"})]}),n.name_reason&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(y,{className:"text-xs text-muted-foreground",children:"名称设定原因"}),e.jsx("p",{className:"mt-1 text-sm",children:n.name_reason})]}),n.memory_points&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(y,{className:"text-xs text-muted-foreground",children:"个人印象"}),e.jsx("p",{className:"mt-1 text-sm whitespace-pre-wrap",children:n.memory_points})]}),n.group_nick_name&&n.group_nick_name.length>0&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(y,{className:"text-xs text-muted-foreground",children:"群昵称"}),e.jsx("div",{className:"mt-2 space-y-1",children:n.group_nick_name.map((h,x)=>e.jsxs("div",{className:"text-sm flex items-center gap-2",children:[e.jsx("span",{className:"font-mono text-xs text-muted-foreground",children:h.group_id}),e.jsx("span",{children:"→"}),e.jsx("span",{children:h.group_nick_name})]},x))})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsx(nl,{icon:Wn,label:"认识时间",value:d(n.know_times)}),e.jsx(nl,{icon:Wn,label:"首次记录",value:d(n.know_since)}),e.jsx(nl,{icon:Wn,label:"最后更新",value:d(n.last_know)})]})]}),e.jsx(xs,{children:e.jsx(b,{onClick:()=>c(!1),children:"关闭"})})]})})}function nl({icon:n,label:r,value:c,mono:d=!1}){return e.jsxs("div",{className:"space-y-1",children:[e.jsxs(y,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[n&&e.jsx(n,{className:"h-3 w-3"}),r]}),e.jsx("div",{className:Q("text-sm",d&&"font-mono",!c&&"text-muted-foreground"),children:c||"-"})]})}function a1({person:n,open:r,onOpenChange:c,onSuccess:d}){const[h,x]=u.useState({}),[f,j]=u.useState(!1),{toast:p}=Xt();u.useEffect(()=>{n&&x({person_name:n.person_name||"",name_reason:n.name_reason||"",nickname:n.nickname||"",memory_points:n.memory_points||"",is_known:n.is_known})},[n]);const N=async()=>{if(n)try{j(!0),await Iw(n.person_id,h),p({title:"保存成功",description:"人物信息已更新"}),d()}catch(v){p({title:"保存失败",description:v instanceof Error?v.message:"无法更新人物信息",variant:"destructive"})}finally{j(!1)}};return n?e.jsx(Jt,{open:r,onOpenChange:c,children:e.jsxs($t,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:"编辑人物信息"}),e.jsxs(ds,{children:["修改 ",n.person_name||n.nickname||n.user_id," 的信息"]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"person_name",children:"人物名称"}),e.jsx(ce,{id:"person_name",value:h.person_name||"",onChange:v=>x({...h,person_name:v.target.value}),placeholder:"为这个人设置一个名称"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"nickname",children:"昵称"}),e.jsx(ce,{id:"nickname",value:h.nickname||"",onChange:v=>x({...h,nickname:v.target.value}),placeholder:"昵称"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"name_reason",children:"名称设定原因"}),e.jsx(Ft,{id:"name_reason",value:h.name_reason||"",onChange:v=>x({...h,name_reason:v.target.value}),placeholder:"为什么这样称呼这个人?",rows:2})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"memory_points",children:"个人印象"}),e.jsx(Ft,{id:"memory_points",value:h.memory_points||"",onChange:v=>x({...h,memory_points:v.target.value}),placeholder:"对这个人的印象和记忆点...",rows:4})]}),e.jsxs("div",{className:"flex items-center justify-between rounded-lg border p-3",children:[e.jsxs("div",{children:[e.jsx(y,{htmlFor:"is_known",className:"text-base font-medium",children:"已认识"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"标记是否已经认识这个人"})]}),e.jsx(Qe,{id:"is_known",checked:h.is_known,onCheckedChange:v=>x({...h,is_known:v})})]})]}),e.jsxs(xs,{children:[e.jsx(b,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(b,{onClick:N,disabled:f,children:f?"保存中...":"保存"})]})]})}):null}var l1=cN();const dp=ob(l1),Ku="/api/webui";async function n1(n=100,r="all"){const c=`${Ku}/knowledge/graph?limit=${n}&node_type=${r}`,d=await fetch(c);if(!d.ok)throw new Error(`获取知识图谱失败: ${d.status}`);return d.json()}async function i1(){const n=await fetch(`${Ku}/knowledge/stats`);if(!n.ok)throw new Error("获取知识图谱统计信息失败");return n.json()}async function r1(n){const r=await fetch(`${Ku}/knowledge/search?query=${encodeURIComponent(n)}`);if(!r.ok)throw new Error("搜索知识节点失败");return r.json()}const Ag=u.memo(({data:n})=>e.jsxs("div",{className:"px-4 py-2 shadow-md rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700 min-w-[120px]",children:[e.jsx(Pc,{type:"target",position:Wc.Top}),e.jsx("div",{className:"font-semibold text-white text-sm truncate max-w-[200px]",title:n.content,children:n.label}),e.jsx(Pc,{type:"source",position:Wc.Bottom})]}));Ag.displayName="EntityNode";const Mg=u.memo(({data:n})=>e.jsxs("div",{className:"px-3 py-2 shadow-md rounded-md bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700 min-w-[100px]",children:[e.jsx(Pc,{type:"target",position:Wc.Top}),e.jsx("div",{className:"font-medium text-white text-xs truncate max-w-[150px]",title:n.content,children:n.label}),e.jsx(Pc,{type:"source",position:Wc.Bottom})]}));Mg.displayName="ParagraphNode";const c1={entity:Ag,paragraph:Mg};function o1(n,r){const c=new dp.graphlib.Graph;c.setDefaultEdgeLabel(()=>({})),c.setGraph({rankdir:"TB",ranksep:100,nodesep:80});const d=[],h=[];return n.forEach(x=>{c.setNode(x.id,{width:150,height:50})}),r.forEach(x=>{c.setEdge(x.source,x.target)}),dp.layout(c),n.forEach(x=>{const f=c.node(x.id);d.push({id:x.id,type:x.type,position:{x:f.x-75,y:f.y-25},data:{label:x.content.slice(0,20)+(x.content.length>20?"...":""),content:x.content}})}),r.forEach((x,f)=>{const j={id:`edge-${f}`,source:x.source,target:x.target,animated:n.length<=200&&x.weight>5,style:{strokeWidth:Math.min(x.weight/2,5),opacity:.6}};x.weight>10&&n.length<100&&(j.label=`${x.weight.toFixed(0)}`),h.push(j)}),{nodes:d,edges:h}}function d1(){const n=fa(),[r,c]=u.useState(!1),[d,h]=u.useState(null),[x,f]=u.useState(""),[j,p]=u.useState("all"),[N,v]=u.useState(50),[C,S]=u.useState("50"),[w,L]=u.useState(!1),[F,B]=u.useState(!0),[O,K]=u.useState(!1),[H,z]=u.useState(!1),[V,Y,E]=oN([]),[R,ne,fe]=dN([]),[Ce,we]=u.useState(0),[pe,Ne]=u.useState(null),[be,A]=u.useState(null),{toast:X}=Xt(),T=u.useCallback(de=>de.type==="entity"?"#6366f1":de.type==="paragraph"?"#10b981":"#6b7280",[]),te=u.useCallback(async(de=!1)=>{try{if(!de&&N>200){z(!0);return}c(!0);const[G,W]=await Promise.all([n1(N,j),i1()]);if(h(W),G.nodes.length===0){X({title:"提示",description:"知识库为空,请先导入知识数据"}),Y([]),ne([]);return}const{nodes:U,edges:ee}=o1(G.nodes,G.edges);Y(U),ne(ee),we(U.length),W&&W.total_nodes>N&&X({title:"提示",description:`知识图谱包含 ${W.total_nodes} 个节点,当前显示 ${U.length} 个`}),X({title:"加载成功",description:`已加载 ${U.length} 个节点,${ee.length} 条边`})}catch(G){console.error("加载知识图谱失败:",G),X({title:"加载失败",description:G instanceof Error?G.message:"未知错误",variant:"destructive"})}finally{c(!1)}},[N,j,X]),_=u.useCallback(async()=>{if(!x.trim()){X({title:"提示",description:"请输入搜索关键词"});return}try{const de=await r1(x);if(de.length===0){X({title:"未找到",description:"没有找到匹配的节点"});return}const G=new Set(de.map(W=>W.id));Y(W=>W.map(U=>({...U,style:{...U.style,opacity:G.has(U.id)?1:.3,filter:G.has(U.id)?"brightness(1.2)":"brightness(0.8)"}}))),X({title:"搜索完成",description:`找到 ${de.length} 个匹配节点`})}catch(de){console.error("搜索失败:",de),X({title:"搜索失败",description:de instanceof Error?de.message:"未知错误",variant:"destructive"})}},[x,X]),me=u.useCallback(()=>{Y(de=>de.map(G=>({...G,style:{...G.style,opacity:1,filter:"brightness(1)"}})))},[]),oe=u.useCallback(()=>{B(!1),K(!0),te()},[te]),ae=u.useCallback(()=>{z(!1),setTimeout(()=>{te(!0)},0)},[te]),xe=u.useCallback((de,G)=>{V.find(U=>U.id===G.id)&&Ne({id:G.id,type:G.type,content:G.data.content})},[V]);u.useEffect(()=>{F||O&&te()},[N,j,F,O]);const ve=u.useCallback((de,G)=>{const W=V.find(Se=>Se.id===G.source),U=V.find(Se=>Se.id===G.target),ee=R.find(Se=>Se.id===G.id);W&&U&&ee&&A({source:{id:W.id,type:W.type,content:W.data.content},target:{id:U.id,type:U.type,content:U.data.content},edge:{source:G.source,target:G.target,weight:parseFloat(G.label||"0")}})},[V,R]);return e.jsxs("div",{className:"h-full flex flex-col",children:[e.jsxs("div",{className:"flex-shrink-0 p-4 border-b bg-background",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦知识库图谱"}),e.jsx("p",{className:"text-muted-foreground mt-1",children:"可视化知识实体与关系网络"})]}),d&&e.jsxs("div",{className:"flex gap-2 flex-wrap",children:[e.jsxs(Je,{variant:"outline",className:"gap-1",children:[e.jsx(Zc,{className:"h-3 w-3"}),"节点: ",d.total_nodes]}),e.jsxs(Je,{variant:"outline",className:"gap-1",children:[e.jsx(rg,{className:"h-3 w-3"}),"边: ",d.total_edges]}),e.jsxs(Je,{variant:"outline",className:"gap-1",children:[e.jsx(Ra,{className:"h-3 w-3"}),"实体: ",d.entity_nodes]}),e.jsxs(Je,{variant:"outline",className:"gap-1",children:[e.jsx(Da,{className:"h-3 w-3"}),"段落: ",d.paragraph_nodes]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 mt-4",children:[e.jsxs("div",{className:"flex-1 flex gap-2",children:[e.jsx(ce,{placeholder:"搜索节点内容...",value:x,onChange:de=>f(de.target.value),onKeyDown:de=>de.key==="Enter"&&_(),className:"flex-1"}),e.jsx(b,{onClick:_,size:"sm",children:e.jsx(zs,{className:"h-4 w-4"})}),e.jsx(b,{onClick:me,variant:"outline",size:"sm",children:"重置"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(qe,{value:j,onValueChange:de=>p(de),children:[e.jsx(Be,{className:"w-[120px]",children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"all",children:"全部节点"}),e.jsx(ie,{value:"entity",children:"仅实体"}),e.jsx(ie,{value:"paragraph",children:"仅段落"})]})]}),e.jsxs(qe,{value:N===1e4?"all":w?"custom":N.toString(),onValueChange:de=>{de==="custom"?(L(!0),S(N.toString())):de==="all"?(L(!1),v(1e4)):(L(!1),v(Number(de)))},children:[e.jsx(Be,{className:"w-[120px]",children:e.jsx(Ge,{})}),e.jsxs(He,{children:[e.jsx(ie,{value:"50",children:"50 节点"}),e.jsx(ie,{value:"100",children:"100 节点"}),e.jsx(ie,{value:"200",children:"200 节点"}),e.jsx(ie,{value:"500",children:"500 节点"}),e.jsx(ie,{value:"1000",children:"1000 节点"}),e.jsx(ie,{value:"all",children:"全部 (最多10000)"}),e.jsx(ie,{value:"custom",children:"自定义..."})]})]}),w&&e.jsx(ce,{type:"number",min:"50",value:C,onChange:de=>S(de.target.value),onBlur:()=>{const de=parseInt(C);!isNaN(de)&&de>=50?v(de):(S("50"),v(50))},onKeyDown:de=>{if(de.key==="Enter"){const G=parseInt(C);!isNaN(G)&&G>=50?v(G):(S("50"),v(50))}},placeholder:"最少50个",className:"w-[120px]"}),e.jsx(b,{onClick:()=>te(),variant:"outline",size:"sm",disabled:r,children:e.jsx(ws,{className:Q("h-4 w-4",r&&"animate-spin")})})]})]})]}),e.jsx("div",{className:"flex-1 relative",children:r?e.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx(ws,{className:"h-8 w-8 animate-spin mx-auto mb-2 text-muted-foreground"}),e.jsx("p",{className:"text-muted-foreground",children:"加载知识图谱中..."})]})}):V.length===0?e.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx(Zc,{className:"h-12 w-12 mx-auto mb-4 text-muted-foreground"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"知识库为空"}),e.jsx("p",{className:"text-muted-foreground",children:"请先导入知识数据"})]})}):e.jsxs(uN,{nodes:V,edges:R,onNodesChange:E,onEdgesChange:fe,onNodeClick:xe,onEdgeClick:ve,nodeTypes:c1,fitView:!0,minZoom:.05,maxZoom:1.5,defaultViewport:{x:0,y:0,zoom:.5},elevateNodesOnSelect:Ce<=500,nodesDraggable:Ce<=1e3,attributionPosition:"bottom-left",children:[e.jsx(mN,{variant:hN.Dots,gap:12,size:1}),e.jsx(xN,{}),Ce<=500&&e.jsx(fN,{nodeColor:T,nodeBorderRadius:8,pannable:!0,zoomable:!0}),e.jsxs(pN,{position:"top-right",className:"bg-background/95 backdrop-blur-sm rounded-lg border p-3 shadow-lg",children:[e.jsx("div",{className:"text-sm font-semibold mb-2",children:"图例"}),e.jsxs("div",{className:"space-y-2 text-xs",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700"}),e.jsx("span",{children:"实体节点"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700"}),e.jsx("span",{children:"段落节点"})]}),Ce>200&&e.jsxs("div",{className:"mt-2 pt-2 border-t text-yellow-600 dark:text-yellow-500",children:[e.jsx("div",{className:"font-semibold",children:"性能模式"}),e.jsx("div",{children:"已禁用动画"}),Ce>500&&e.jsx("div",{children:"已禁用缩略图"})]})]})]})]})}),e.jsx(Jt,{open:!!pe,onOpenChange:de=>!de&&Ne(null),children:e.jsxs($t,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsx(Qt,{children:e.jsx(Yt,{children:"节点详情"})}),pe&&e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"grid grid-cols-2 gap-4",children:e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"类型"}),e.jsx("div",{className:"mt-1",children:e.jsx(Je,{variant:pe.type==="entity"?"default":"secondary",children:pe.type==="entity"?"🏷️ 实体":"📄 段落"})})]})}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"ID"}),e.jsx("code",{className:"mt-1 block p-2 bg-muted rounded text-xs break-all",children:pe.id})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"内容"}),e.jsx(st,{className:"mt-1 h-40 p-3 bg-muted rounded",children:e.jsx("p",{className:"text-sm whitespace-pre-wrap",children:pe.content})})]})]})]})}),e.jsx(Jt,{open:!!be,onOpenChange:de=>!de&&A(null),children:e.jsxs($t,{className:"max-w-2xl max-h-[80vh] overflow-hidden flex flex-col",children:[e.jsx(Qt,{children:e.jsx(Yt,{children:"边详情"})}),be&&e.jsx(st,{className:"flex-1 pr-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-blue-50 dark:bg-blue-950 rounded border-2 border-blue-200 dark:border-blue-800",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"源节点"}),e.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:be.source.content}),e.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[be.source.id.slice(0,40),"..."]})]}),e.jsx("div",{className:"text-2xl text-muted-foreground flex-shrink-0",children:"→"}),e.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-green-50 dark:bg-green-950 rounded border-2 border-green-200 dark:border-green-800",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"目标节点"}),e.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:be.target.content}),e.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[be.target.id.slice(0,40),"..."]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"权重"}),e.jsx("div",{className:"mt-1",children:e.jsx(Je,{variant:"outline",className:"text-base font-mono",children:be.edge.weight.toFixed(4)})})]})]})})]})}),e.jsx(bt,{open:F,onOpenChange:B,children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"加载知识图谱"}),e.jsxs(xt,{children:["知识图谱的动态展示会消耗较多系统资源。",e.jsx("br",{}),"确定要加载知识图谱吗?"]})]}),e.jsxs(mt,{children:[e.jsx(pt,{onClick:()=>n({to:"/"}),children:"取消 (返回首页)"}),e.jsx(ft,{onClick:oe,children:"确认加载"})]})]})}),e.jsx(bt,{open:H,onOpenChange:z,children:e.jsxs(dt,{children:[e.jsxs(ut,{children:[e.jsx(ht,{children:"⚠️ 节点数量较多"}),e.jsx(xt,{asChild:!0,children:e.jsxs("div",{children:[e.jsxs("p",{children:["您正在尝试加载 ",e.jsx("strong",{className:"text-orange-600",children:N>=1e4?"全部 (最多10000个)":N})," 个节点。"]}),e.jsx("p",{className:"mt-4",children:"节点数量过多可能导致:"}),e.jsxs("ul",{className:"list-disc list-inside mt-2 space-y-1",children:[e.jsx("li",{children:"页面加载时间较长"}),e.jsx("li",{children:"浏览器卡顿或崩溃"}),e.jsx("li",{children:"系统资源占用过高"})]}),e.jsx("p",{className:"mt-4",children:"建议先选择较少的节点数量 (50-200 个)。"})]})})]}),e.jsxs(mt,{children:[e.jsx(pt,{onClick:()=>{z(!1),N>200&&(v(50),L(!1))},children:"取消"}),e.jsx(ft,{onClick:ae,className:"bg-orange-600 hover:bg-orange-700",children:"我了解风险,继续加载"})]})]})})]})}function up({className:n,classNames:r,showOutsideDays:c=!0,captionLayout:d="label",buttonVariant:h="ghost",formatters:x,components:f,...j}){const p=ug();return e.jsx($y,{showOutsideDays:c,className:Q("bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,n),captionLayout:d,formatters:{formatMonthDropdown:N=>N.toLocaleString("default",{month:"short"}),...x},classNames:{root:Q("w-fit",p.root),months:Q("relative flex flex-col gap-4 md:flex-row",p.months),month:Q("flex w-full flex-col gap-4",p.month),nav:Q("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",p.nav),button_previous:Q(hr({variant:h}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",p.button_previous),button_next:Q(hr({variant:h}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",p.button_next),month_caption:Q("flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]",p.month_caption),dropdowns:Q("flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium",p.dropdowns),dropdown_root:Q("has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border",p.dropdown_root),dropdown:Q("bg-popover absolute inset-0 opacity-0",p.dropdown),caption_label:Q("select-none font-medium",d==="label"?"text-sm":"[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5",p.caption_label),table:"w-full border-collapse",weekdays:Q("flex",p.weekdays),weekday:Q("text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal",p.weekday),week:Q("mt-2 flex w-full",p.week),week_number_header:Q("w-[--cell-size] select-none",p.week_number_header),week_number:Q("text-muted-foreground select-none text-[0.8rem]",p.week_number),day:Q("group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md",p.day),range_start:Q("bg-accent rounded-l-md",p.range_start),range_middle:Q("rounded-none",p.range_middle),range_end:Q("bg-accent rounded-r-md",p.range_end),today:Q("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",p.today),outside:Q("text-muted-foreground aria-selected:text-muted-foreground",p.outside),disabled:Q("text-muted-foreground opacity-50",p.disabled),hidden:Q("invisible",p.hidden),...r},components:{Root:({className:N,rootRef:v,...C})=>e.jsx("div",{"data-slot":"calendar",ref:v,className:Q(N),...C}),Chevron:({className:N,orientation:v,...C})=>v==="left"?e.jsx(dn,{className:Q("size-4",N),...C}):v==="right"?e.jsx(Ll,{className:Q("size-4",N),...C}):e.jsx(Rl,{className:Q("size-4",N),...C}),DayButton:u1,WeekNumber:({children:N,...v})=>e.jsx("td",{...v,children:e.jsx("div",{className:"flex size-[--cell-size] items-center justify-center text-center",children:N})}),...f},...j})}function u1({className:n,day:r,modifiers:c,...d}){const h=ug(),x=u.useRef(null);return u.useEffect(()=>{c.focused&&x.current?.focus()},[c.focused]),e.jsx(b,{ref:x,variant:"ghost",size:"icon","data-day":r.date.toLocaleDateString(),"data-selected-single":c.selected&&!c.range_start&&!c.range_end&&!c.range_middle,"data-range-start":c.range_start,"data-range-end":c.range_end,"data-range-middle":c.range_middle,className:Q("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70",h.day,n),...d})}const m1={lessThanXSeconds:{one:"不到 1 秒",other:"不到 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分钟",lessThanXMinutes:{one:"不到 1 分钟",other:"不到 {{count}} 分钟"},xMinutes:{one:"1 分钟",other:"{{count}} 分钟"},xHours:{one:"1 小时",other:"{{count}} 小时"},aboutXHours:{one:"大约 1 小时",other:"大约 {{count}} 小时"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大约 1 个星期",other:"大约 {{count}} 个星期"},xWeeks:{one:"1 个星期",other:"{{count}} 个星期"},aboutXMonths:{one:"大约 1 个月",other:"大约 {{count}} 个月"},xMonths:{one:"1 个月",other:"{{count}} 个月"},aboutXYears:{one:"大约 1 年",other:"大约 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超过 1 年",other:"超过 {{count}} 年"},almostXYears:{one:"将近 1 年",other:"将近 {{count}} 年"}},h1=(n,r,c)=>{let d;const h=m1[n];return typeof h=="string"?d=h:r===1?d=h.one:d=h.other.replace("{{count}}",String(r)),c?.addSuffix?c.comparison&&c.comparison>0?d+"内":d+"前":d},x1={full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},f1={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},p1={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},g1={date:gu({formats:x1,defaultWidth:"full"}),time:gu({formats:f1,defaultWidth:"full"}),dateTime:gu({formats:p1,defaultWidth:"full"})};function mp(n,r,c){const d="eeee p";return mb(n,r,c)?d:n.getTime()>r.getTime()?"'下个'"+d:"'上个'"+d}const j1={lastWeek:mp,yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:mp,other:"PP p"},v1=(n,r,c,d)=>{const h=j1[n];return typeof h=="function"?h(r,c,d):h},b1={narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},y1={narrow:["1","2","3","4"],abbreviated:["第一季","第二季","第三季","第四季"],wide:["第一季度","第二季度","第三季度","第四季度"]},N1={narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},w1={narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["周日","周一","周二","周三","周四","周五","周六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},_1={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},S1={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},C1=(n,r)=>{const c=Number(n);switch(r?.unit){case"date":return c.toString()+"日";case"hour":return c.toString()+"时";case"minute":return c.toString()+"分";case"second":return c.toString()+"秒";default:return"第 "+c.toString()}},k1={ordinalNumber:C1,era:Ii({values:b1,defaultWidth:"wide"}),quarter:Ii({values:y1,defaultWidth:"wide",argumentCallback:n=>n-1}),month:Ii({values:N1,defaultWidth:"wide"}),day:Ii({values:w1,defaultWidth:"wide"}),dayPeriod:Ii({values:_1,defaultWidth:"wide",formattingValues:S1,defaultFormattingWidth:"wide"})},T1=/^(第\s*)?\d+(日|时|分|秒)?/i,E1=/\d+/i,z1={narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},A1={any:[/^(前)/i,/^(公元)/i]},M1={narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻钟/i},D1={any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},O1={narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},R1={narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},L1={narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^周[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},U1={any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},B1={any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i},H1={any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},q1={ordinalNumber:hb({matchPattern:T1,parsePattern:E1,valueCallback:n=>parseInt(n,10)}),era:Pi({matchPatterns:z1,defaultMatchWidth:"wide",parsePatterns:A1,defaultParseWidth:"any"}),quarter:Pi({matchPatterns:M1,defaultMatchWidth:"wide",parsePatterns:D1,defaultParseWidth:"any",valueCallback:n=>n+1}),month:Pi({matchPatterns:O1,defaultMatchWidth:"wide",parsePatterns:R1,defaultParseWidth:"any"}),day:Pi({matchPatterns:L1,defaultMatchWidth:"wide",parsePatterns:U1,defaultParseWidth:"any"}),dayPeriod:Pi({matchPatterns:B1,defaultMatchWidth:"any",parsePatterns:H1,defaultParseWidth:"any"})},qc={code:"zh-CN",formatDistance:h1,formatLong:g1,formatRelative:v1,localize:k1,match:q1,options:{weekStartsOn:1,firstWeekContainsDate:4}},Gc={xs:{label:"小",rowHeight:28,class:"text-[10px] sm:text-xs"},sm:{label:"中",rowHeight:36,class:"text-xs sm:text-sm"},base:{label:"大",rowHeight:44,class:"text-sm sm:text-base"}};function G1(){const[n,r]=u.useState([]),[c,d]=u.useState(""),[h,x]=u.useState("all"),[f,j]=u.useState("all"),[p,N]=u.useState(void 0),[v,C]=u.useState(void 0),[S,w]=u.useState(!0),[L,F]=u.useState(!1),[B,O]=u.useState("xs"),[K,H]=u.useState(4),z=u.useRef(null);u.useEffect(()=>{const T=an.getAllLogs();r(T);const te=an.onLog(()=>{r(an.getAllLogs())}),_=an.onConnectionChange(me=>{F(me)});return()=>{te(),_()}},[]);const V=u.useMemo(()=>{const T=new Set(n.map(te=>te.module).filter(te=>te&&te.trim()!==""));return Array.from(T).sort()},[n]),Y=T=>{switch(T){case"DEBUG":return"text-muted-foreground";case"INFO":return"text-blue-500 dark:text-blue-400";case"WARNING":return"text-yellow-600 dark:text-yellow-500";case"ERROR":return"text-red-600 dark:text-red-500";case"CRITICAL":return"text-red-700 dark:text-red-400 font-bold";default:return"text-foreground"}},E=T=>{switch(T){case"DEBUG":return"bg-gray-800/30 dark:bg-gray-800/50";case"INFO":return"bg-blue-900/20 dark:bg-blue-500/20";case"WARNING":return"bg-yellow-900/20 dark:bg-yellow-500/20";case"ERROR":return"bg-red-900/20 dark:bg-red-500/20";case"CRITICAL":return"bg-red-900/30 dark:bg-red-600/30";default:return"bg-gray-800/20 dark:bg-gray-800/30"}},R=()=>{window.location.reload()},ne=()=>{an.clearLogs(),r([])},fe=()=>{const T=pe.map(oe=>`${oe.timestamp} [${oe.level.padEnd(8)}] [${oe.module}] ${oe.message}`).join(` -`),te=new Blob([T],{type:"text/plain;charset=utf-8"}),_=URL.createObjectURL(te),me=document.createElement("a");me.href=_,me.download=`logs-${ju(new Date,"yyyy-MM-dd-HHmmss")}.txt`,me.click(),URL.revokeObjectURL(_)},Ce=()=>{w(!S)},we=()=>{N(void 0),C(void 0)},pe=u.useMemo(()=>n.filter(T=>{const te=c===""||T.message.toLowerCase().includes(c.toLowerCase())||T.module.toLowerCase().includes(c.toLowerCase()),_=h==="all"||T.level===h,me=f==="all"||T.module===f;let oe=!0;if(p||v){const ae=new Date(T.timestamp);if(p){const xe=new Date(p);xe.setHours(0,0,0,0),oe=oe&&ae>=xe}if(v){const xe=new Date(v);xe.setHours(23,59,59,999),oe=oe&&ae<=xe}}return te&&_&&me&&oe}),[n,c,h,f,p,v]),Ne=Gc[B].rowHeight+K,be=tb({count:pe.length,getScrollElement:()=>z.current,estimateSize:()=>Ne,overscan:15}),A=u.useRef(!1),X=u.useRef(pe.length);return u.useEffect(()=>{const T=z.current;if(!T)return;const te=()=>{if(A.current)return;const{scrollTop:_,scrollHeight:me,clientHeight:oe}=T,ae=me-_-oe;ae>100&&S?w(!1):ae<50&&!S&&w(!0)};return T.addEventListener("scroll",te,{passive:!0}),()=>T.removeEventListener("scroll",te)},[S]),u.useEffect(()=>{const T=pe.length>X.current;X.current=pe.length,S&&pe.length>0&&T&&(A.current=!0,be.scrollToIndex(pe.length-1,{align:"end",behavior:"auto"}),requestAnimationFrame(()=>{requestAnimationFrame(()=>{A.current=!1})}))},[pe.length,S,be]),e.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[e.jsxs("div",{className:"flex-shrink-0 space-y-4 p-3 sm:p-4 lg:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-xl sm:text-2xl lg:text-3xl font-bold",children:"日志查看器"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:"实时查看和分析麦麦运行日志"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:Q("h-2.5 w-2.5 sm:h-3 sm:w-3 rounded-full",L?"bg-green-500 animate-pulse":"bg-red-500")}),e.jsx("span",{className:"text-xs sm:text-sm text-muted-foreground",children:L?"已连接":"未连接"})]})]}),e.jsx(Ye,{className:"p-3 sm:p-4",children:e.jsxs("div",{className:"flex flex-col gap-3 sm:gap-4",children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:gap-4",children:[e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(zs,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索日志...",value:c,onChange:T=>d(T.target.value),className:"pl-9 h-9 text-sm"})]}),e.jsxs(qe,{value:h,onValueChange:x,children:[e.jsxs(Be,{className:"w-full sm:w-[140px] lg:w-[180px] h-9 text-sm",children:[e.jsx(Eu,{className:"h-4 w-4 mr-2"}),e.jsx(Ge,{placeholder:"级别"})]}),e.jsxs(He,{children:[e.jsx(ie,{value:"all",children:"全部级别"}),e.jsx(ie,{value:"DEBUG",children:"DEBUG"}),e.jsx(ie,{value:"INFO",children:"INFO"}),e.jsx(ie,{value:"WARNING",children:"WARNING"}),e.jsx(ie,{value:"ERROR",children:"ERROR"}),e.jsx(ie,{value:"CRITICAL",children:"CRITICAL"})]})]}),e.jsxs(qe,{value:f,onValueChange:j,children:[e.jsxs(Be,{className:"w-full sm:w-[160px] lg:w-[200px] h-9 text-sm",children:[e.jsx(Eu,{className:"h-4 w-4 mr-2"}),e.jsx(Ge,{placeholder:"模块"})]}),e.jsxs(He,{children:[e.jsx(ie,{value:"all",children:"全部模块"}),V.map(T=>e.jsx(ie,{value:T,children:T},T))]})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:gap-4",children:[e.jsxs(Ua,{children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",className:Q("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!p&&"text-muted-foreground"),children:[e.jsx(Vf,{className:"mr-2 h-4 w-4"}),e.jsx("span",{className:"text-xs sm:text-sm",children:p?ju(p,"PPP",{locale:qc}):"开始日期"})]})}),e.jsx(_a,{className:"w-auto p-0",align:"start",children:e.jsx(up,{mode:"single",selected:p,onSelect:N,initialFocus:!0,locale:qc})})]}),e.jsxs(Ua,{children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(b,{variant:"outline",size:"sm",className:Q("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!v&&"text-muted-foreground"),children:[e.jsx(Vf,{className:"mr-2 h-4 w-4"}),e.jsx("span",{className:"text-xs sm:text-sm",children:v?ju(v,"PPP",{locale:qc}):"结束日期"})]})}),e.jsx(_a,{className:"w-auto p-0",align:"start",children:e.jsx(up,{mode:"single",selected:v,onSelect:C,initialFocus:!0,locale:qc})})]}),(p||v)&&e.jsxs(b,{variant:"outline",size:"sm",onClick:we,className:"w-full sm:w-auto h-9",children:[e.jsx(on,{className:"h-4 w-4 sm:mr-2"}),e.jsx("span",{className:"hidden sm:inline text-sm",children:"清除时间筛选"}),e.jsx("span",{className:"sm:hidden text-sm",children:"清除"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center",children:[e.jsxs("div",{className:"flex gap-2 flex-wrap",children:[e.jsxs(b,{variant:S?"default":"outline",size:"sm",onClick:Ce,className:"flex-1 sm:flex-none h-9",children:[S?e.jsx(wy,{className:"h-4 w-4"}):e.jsx(_y,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:S?"自动滚动":"已暂停"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:R,className:"flex-1 sm:flex-none h-9",children:[e.jsx(ws,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"刷新"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:ne,className:"flex-1 sm:flex-none h-9",children:[e.jsx(at,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"清空"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:fe,className:"flex-1 sm:flex-none h-9",children:[e.jsx(rl,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"导出"})]})]}),e.jsx("div",{className:"flex-1 hidden sm:block"}),e.jsxs("div",{className:"text-xs sm:text-sm text-muted-foreground flex items-center justify-center sm:justify-end",children:[e.jsxs("span",{className:"font-mono",children:[pe.length," / ",n.length]}),e.jsx("span",{className:"ml-1",children:"条日志"})]})]}),e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-6 pt-2 border-t border-border/50",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(Sy,{className:"h-4 w-4"}),e.jsx("span",{children:"字号"})]}),e.jsx("div",{className:"flex gap-1",children:Object.keys(Gc).map(T=>e.jsx(b,{variant:B===T?"default":"outline",size:"sm",onClick:()=>O(T),className:"h-7 px-3 text-xs",children:Gc[T].label},T))})]}),e.jsxs("div",{className:"flex items-center gap-3 flex-1 max-w-xs",children:[e.jsx("span",{className:"text-sm text-muted-foreground whitespace-nowrap",children:"行距"}),e.jsx(Ma,{value:[K],onValueChange:([T])=>H(T),min:0,max:12,step:2,className:"flex-1"}),e.jsxs("span",{className:"text-xs text-muted-foreground w-8",children:[K,"px"]})]})]})]})})]}),e.jsx("div",{className:"flex-1 min-h-0 px-3 sm:px-4 lg:px-6 pb-3 sm:pb-4 lg:pb-6",children:e.jsx(Ye,{className:"bg-black dark:bg-gray-950 border-gray-800 dark:border-gray-900 h-full",children:e.jsx(st,{viewportRef:z,className:"h-full",children:e.jsx("div",{className:Q("p-2 sm:p-3 font-mono relative",Gc[B].class),style:{height:`${be.getTotalSize()}px`},children:pe.length===0?e.jsx("div",{className:"text-gray-500 dark:text-gray-600 text-center py-8 text-sm",children:"暂无日志数据"}):be.getVirtualItems().map(T=>{const te=pe[T.index];return e.jsxs("div",{"data-index":T.index,ref:be.measureElement,className:Q("absolute top-0 left-0 w-full px-2 sm:px-3 rounded hover:bg-white/5 transition-colors group",E(te.level)),style:{transform:`translateY(${T.start}px)`,paddingTop:`${K/2}px`,paddingBottom:`${K/2}px`},children:[e.jsxs("div",{className:"flex flex-col gap-0.5 sm:hidden",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-gray-500 dark:text-gray-600",children:te.timestamp}),e.jsxs("span",{className:Q("font-semibold",Y(te.level)),children:["[",te.level,"]"]})]}),e.jsx("div",{className:"text-cyan-400 dark:text-cyan-500 truncate",children:te.module}),e.jsx("div",{className:"text-gray-300 dark:text-gray-400 whitespace-pre-wrap break-words",children:te.message})]}),e.jsxs("div",{className:"hidden sm:flex gap-2 items-start",children:[e.jsx("span",{className:"text-gray-500 dark:text-gray-600 flex-shrink-0 w-[130px] lg:w-[160px]",children:te.timestamp}),e.jsxs("span",{className:Q("flex-shrink-0 w-[65px] lg:w-[75px] font-semibold",Y(te.level)),children:["[",te.level,"]"]}),e.jsx("span",{className:"text-cyan-400 dark:text-cyan-500 flex-shrink-0 w-[100px] lg:w-[130px] truncate",children:te.module}),e.jsx("span",{className:"text-gray-300 dark:text-gray-400 flex-1 whitespace-pre-wrap break-words",children:te.message})]})]},T.key)})})})})})]})}const V1="Mai-with-u",F1="plugin-repo",$1="main",Q1="plugin_details.json";async function Y1(){try{const n=await Te("/api/webui/plugins/fetch-raw",{method:"POST",body:JSON.stringify({owner:V1,repo:F1,branch:$1,file_path:Q1})});if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);const r=await n.json();if(!r.success||!r.data)throw new Error(r.error||"获取插件列表失败");return JSON.parse(r.data).filter(h=>!h?.id||!h?.manifest?(console.warn("跳过无效插件数据:",h),!1):!h.manifest.name||!h.manifest.version?(console.warn("跳过缺少必需字段的插件:",h.id),!1):!0).map(h=>({id:h.id,manifest:{manifest_version:h.manifest.manifest_version||1,name:h.manifest.name,version:h.manifest.version,description:h.manifest.description||"",author:h.manifest.author||{name:"Unknown"},license:h.manifest.license||"Unknown",host_application:h.manifest.host_application||{min_version:"0.0.0"},homepage_url:h.manifest.homepage_url,repository_url:h.manifest.repository_url,keywords:h.manifest.keywords||[],categories:h.manifest.categories||[],default_locale:h.manifest.default_locale||"zh-CN",locales_path:h.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!1,published_at:new Date().toISOString(),updated_at:new Date().toISOString()}))}catch(n){throw console.error("Failed to fetch plugin list:",n),n}}async function X1(){try{const n=await Te("/api/webui/plugins/git-status");if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);return await n.json()}catch(n){return console.error("Failed to check Git status:",n),{installed:!1,error:"无法检测 Git 安装状态"}}}async function K1(){try{const n=await Te("/api/webui/plugins/version");if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);return await n.json()}catch(n){return console.error("Failed to get Maimai version:",n),{version:"0.0.0",version_major:0,version_minor:0,version_patch:0}}}function Z1(n,r,c){const d=n.split(".").map(j=>parseInt(j)||0),h=d[0]||0,x=d[1]||0,f=d[2]||0;if(c.version_majorparseInt(C)||0),p=j[0]||0,N=j[1]||0,v=j[2]||0;if(c.version_major>p||c.version_major===p&&c.version_minor>N||c.version_major===p&&c.version_minor===N&&c.version_patch>v)return!1}return!0}function J1(n,r){const c=window.location.protocol==="https:"?"wss:":"ws:",d=window.location.host,h=new WebSocket(`${c}//${d}/api/webui/ws/plugin-progress`);return h.onopen=()=>{console.log("Plugin progress WebSocket connected");const x=setInterval(()=>{h.readyState===WebSocket.OPEN?h.send("ping"):clearInterval(x)},3e4)},h.onmessage=x=>{try{if(x.data==="pong")return;const f=JSON.parse(x.data);n(f)}catch(f){console.error("Failed to parse progress data:",f)}},h.onerror=x=>{console.error("Plugin progress WebSocket error:",x),r?.(x)},h.onclose=()=>{console.log("Plugin progress WebSocket disconnected")},h}async function nr(){try{const n=await Te("/api/webui/plugins/installed",{headers:Rt()});if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);const r=await n.json();if(!r.success)throw new Error(r.message||"获取已安装插件列表失败");return r.plugins||[]}catch(n){return console.error("Failed to get installed plugins:",n),[]}}function Vc(n,r){return r.some(c=>c.id===n)}function Fc(n,r){const c=r.find(d=>d.id===n);if(c)return c.manifest?.version||c.version}async function I1(n,r,c="main"){const d=await Te("/api/webui/plugins/install",{method:"POST",body:JSON.stringify({plugin_id:n,repository_url:r,branch:c})});if(!d.ok){const h=await d.json();throw new Error(h.detail||"安装失败")}return await d.json()}async function P1(n){const r=await Te("/api/webui/plugins/uninstall",{method:"POST",body:JSON.stringify({plugin_id:n})});if(!r.ok){const c=await r.json();throw new Error(c.detail||"卸载失败")}return await r.json()}async function W1(n,r,c="main"){const d=await Te("/api/webui/plugins/update",{method:"POST",body:JSON.stringify({plugin_id:n,repository_url:r,branch:c})});if(!d.ok){const h=await d.json();throw new Error(h.detail||"更新失败")}return await d.json()}async function e2(n){const r=await Te(`/api/webui/plugins/config/${n}/schema`,{headers:Rt()});if(!r.ok){const d=await r.json();throw new Error(d.detail||"获取配置 Schema 失败")}const c=await r.json();if(!c.success)throw new Error(c.message||"获取配置 Schema 失败");return c.schema}async function t2(n){const r=await Te(`/api/webui/plugins/config/${n}`,{headers:Rt()});if(!r.ok){const d=await r.json();throw new Error(d.detail||"获取配置失败")}const c=await r.json();if(!c.success)throw new Error(c.message||"获取配置失败");return c.config}async function s2(n,r){const c=await Te(`/api/webui/plugins/config/${n}`,{method:"PUT",body:JSON.stringify({config:r})});if(!c.ok){const d=await c.json();throw new Error(d.detail||"保存配置失败")}return await c.json()}async function a2(n){const r=await Te(`/api/webui/plugins/config/${n}/reset`,{method:"POST",headers:Rt()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"重置配置失败")}return await r.json()}async function l2(n){const r=await Te(`/api/webui/plugins/config/${n}/toggle`,{method:"POST",headers:Rt()});if(!r.ok){const c=await r.json();throw new Error(c.detail||"切换状态失败")}return await r.json()}const Nr="https://maibot-plugin-stats.maibot-webui.workers.dev";async function Dg(n){try{const r=await fetch(`${Nr}/stats/${n}`);return r.ok?await r.json():(console.error("Failed to fetch plugin stats:",r.statusText),null)}catch(r){return console.error("Error fetching plugin stats:",r),null}}async function n2(n,r){try{const c=r||Zu(),d=await fetch(`${Nr}/stats/like`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,user_id:c})}),h=await d.json();return d.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:d.ok?{success:!0,...h}:{success:!1,error:h.error||"点赞失败"}}catch(c){return console.error("Error liking plugin:",c),{success:!1,error:"网络错误"}}}async function i2(n,r){try{const c=r||Zu(),d=await fetch(`${Nr}/stats/dislike`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,user_id:c})}),h=await d.json();return d.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:d.ok?{success:!0,...h}:{success:!1,error:h.error||"点踩失败"}}catch(c){return console.error("Error disliking plugin:",c),{success:!1,error:"网络错误"}}}async function r2(n,r,c,d){if(r<1||r>5)return{success:!1,error:"评分必须在 1-5 之间"};try{const h=d||Zu(),x=await fetch(`${Nr}/stats/rate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,rating:r,comment:c,user_id:h})}),f=await x.json();return x.status===429?{success:!1,error:"每天最多评分 3 次"}:x.ok?{success:!0,...f}:{success:!1,error:f.error||"评分失败"}}catch(h){return console.error("Error rating plugin:",h),{success:!1,error:"网络错误"}}}async function c2(n){try{const r=await fetch(`${Nr}/stats/download`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n})}),c=await r.json();return r.status===429?(console.warn("Download recording rate limited"),{success:!0}):r.ok?{success:!0,...c}:(console.error("Failed to record download:",c.error),{success:!1,error:c.error})}catch(r){return console.error("Error recording download:",r),{success:!1,error:"网络错误"}}}function o2(){const n=navigator,r=[navigator.userAgent,navigator.language,navigator.languages?.join(",")||"",navigator.platform,navigator.hardwareConcurrency||0,screen.width,screen.height,screen.colorDepth,screen.pixelDepth,new Date().getTimezoneOffset(),Intl.DateTimeFormat().resolvedOptions().timeZone,navigator.maxTouchPoints||0,n.deviceMemory||0].join("|");let c=0;for(let d=0;d{x(!0);const O=await Dg(n);O&&d(O),x(!1)};u.useEffect(()=>{w()},[n]);const L=async()=>{const O=await n2(n);O.success?(S({title:"已点赞",description:"感谢你的支持!"}),w()):S({title:"点赞失败",description:O.error||"未知错误",variant:"destructive"})},F=async()=>{const O=await i2(n);O.success?(S({title:"已反馈",description:"感谢你的反馈!"}),w()):S({title:"操作失败",description:O.error||"未知错误",variant:"destructive"})},B=async()=>{if(f===0){S({title:"请选择评分",description:"至少选择 1 颗星",variant:"destructive"});return}const O=await r2(n,f,p||void 0);O.success?(S({title:"评分成功",description:"感谢你的评价!"}),C(!1),j(0),N(""),w()):S({title:"评分失败",description:O.error||"未知错误",variant:"destructive"})};return h?e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(rl,{className:"h-4 w-4"}),e.jsx("span",{children:"-"})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ol,{className:"h-4 w-4"}),e.jsx("span",{children:"-"})]})]}):c?r?e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",title:`下载量: ${c.downloads.toLocaleString()}`,children:[e.jsx(rl,{className:"h-4 w-4"}),e.jsx("span",{children:c.downloads.toLocaleString()})]}),e.jsxs("div",{className:"flex items-center gap-1",title:`评分: ${c.rating.toFixed(1)} (${c.rating_count} 条评价)`,children:[e.jsx(Ol,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsx("span",{children:c.rating.toFixed(1)})]}),e.jsxs("div",{className:"flex items-center gap-1",title:`点赞数: ${c.likes}`,children:[e.jsx(bu,{className:"h-4 w-4"}),e.jsx("span",{children:c.likes})]})]}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-4",children:[e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(rl,{className:"h-5 w-5 text-muted-foreground mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.downloads.toLocaleString()}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"下载量"})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(Ol,{className:"h-5 w-5 text-yellow-400 mb-1 fill-yellow-400"}),e.jsx("span",{className:"text-2xl font-bold",children:c.rating.toFixed(1)}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:[c.rating_count," 条评价"]})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(bu,{className:"h-5 w-5 text-green-500 mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.likes}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"点赞"})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(Ff,{className:"h-5 w-5 text-red-500 mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.dislikes}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"点踩"})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(b,{variant:"outline",size:"sm",onClick:L,children:[e.jsx(bu,{className:"h-4 w-4 mr-1"}),"点赞"]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:F,children:[e.jsx(Ff,{className:"h-4 w-4 mr-1"}),"点踩"]}),e.jsxs(Jt,{open:v,onOpenChange:C,children:[e.jsx($u,{asChild:!0,children:e.jsxs(b,{variant:"default",size:"sm",children:[e.jsx(Ol,{className:"h-4 w-4 mr-1"}),"评分"]})}),e.jsxs($t,{children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:"为插件评分"}),e.jsx(ds,{children:"分享你的使用体验,帮助其他用户"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"flex flex-col items-center gap-2",children:[e.jsx("div",{className:"flex gap-2",children:[1,2,3,4,5].map(O=>e.jsx("button",{onClick:()=>j(O),className:"focus:outline-none",children:e.jsx(Ol,{className:`h-8 w-8 transition-colors ${O<=f?"fill-yellow-400 text-yellow-400":"text-muted-foreground hover:text-yellow-300"}`})},O))}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[f===0&&"点击星星进行评分",f===1&&"很差",f===2&&"一般",f===3&&"还行",f===4&&"不错",f===5&&"非常好"]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium mb-2 block",children:"评论(可选)"}),e.jsx(Ft,{value:p,onChange:O=>N(O.target.value),placeholder:"分享你的使用体验...",rows:4,maxLength:500}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 text-right",children:[p.length," / 500"]})]})]}),e.jsxs(xs,{children:[e.jsx(b,{variant:"outline",onClick:()=>C(!1),children:"取消"}),e.jsx(b,{onClick:B,disabled:f===0,children:"提交评分"})]})]})]})]}),c.recent_ratings&&c.recent_ratings.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"text-sm font-semibold",children:"最近评价"}),e.jsx("div",{className:"space-y-3",children:c.recent_ratings.map((O,K)=>e.jsxs("div",{className:"p-3 rounded-lg border bg-muted/50",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("div",{className:"flex gap-1",children:[1,2,3,4,5].map(H=>e.jsx(Ol,{className:`h-3 w-3 ${H<=O.rating?"fill-yellow-400 text-yellow-400":"text-muted-foreground"}`},H))}),e.jsx("span",{className:"text-xs text-muted-foreground",children:new Date(O.created_at).toLocaleDateString()})]}),O.comment&&e.jsx("p",{className:"text-sm text-muted-foreground",children:O.comment})]},K))})]})]}):null}const hp={"Group Management":"群组管理","Entertainment & Interaction":"娱乐互动","Utility Tools":"实用工具","Content Generation":"内容生成",Multimedia:"多媒体","External Integration":"外部集成","Data Analysis & Insights":"数据分析与洞察",Other:"其他"};function u2(){const n=fa(),[r,c]=u.useState(null),[d,h]=u.useState(""),[x,f]=u.useState("all"),[j,p]=u.useState("all"),[N,v]=u.useState(!0),[C,S]=u.useState([]),[w,L]=u.useState(!0),[F,B]=u.useState(null),[O,K]=u.useState(null),[H,z]=u.useState(null),[V,Y]=u.useState(null),[,E]=u.useState([]),[R,ne]=u.useState({}),{toast:fe}=Xt(),Ce=async _=>{const me=_.map(async xe=>{try{const ve=await Dg(xe.id);return{id:xe.id,stats:ve}}catch(ve){return console.warn(`Failed to load stats for ${xe.id}:`,ve),{id:xe.id,stats:null}}}),oe=await Promise.all(me),ae={};oe.forEach(({id:xe,stats:ve})=>{ve&&(ae[xe]=ve)}),ne(ae)};u.useEffect(()=>{let _=null,me=!1;return(async()=>{if(_=J1(ae=>{me||(z(ae),ae.stage==="success"?setTimeout(()=>{me||z(null)},2e3):ae.stage==="error"&&(L(!1),B(ae.error||"加载失败")))},ae=>{console.error("WebSocket error:",ae),me||fe({title:"WebSocket 连接失败",description:"无法实时显示加载进度",variant:"destructive"})}),await new Promise(ae=>{if(!_){ae();return}const xe=()=>{_&&_.readyState===WebSocket.OPEN?(console.log("WebSocket connected, starting to load plugins"),ae()):_&&_.readyState===WebSocket.CLOSED?(console.warn("WebSocket closed before loading plugins"),ae()):setTimeout(xe,100)};xe()}),!me){const ae=await X1();K(ae),ae.installed||fe({title:"Git 未安装",description:ae.error||"请先安装 Git 才能使用插件安装功能",variant:"destructive"})}if(!me){const ae=await K1();Y(ae)}if(!me)try{L(!0),B(null);const ae=await Y1();if(!me){const xe=await nr();E(xe);const ve=ae.map(de=>{const G=Vc(de.id,xe),W=Fc(de.id,xe);return{...de,installed:G,installed_version:W}});for(const de of xe)!ve.some(W=>W.id===de.id)&&de.manifest&&ve.push({id:de.id,manifest:{manifest_version:de.manifest.manifest_version||1,name:de.manifest.name,version:de.manifest.version,description:de.manifest.description||"",author:de.manifest.author,license:de.manifest.license||"Unknown",host_application:de.manifest.host_application,homepage_url:de.manifest.homepage_url,repository_url:de.manifest.repository_url,keywords:de.manifest.keywords||[],categories:de.manifest.categories||[],default_locale:de.manifest.default_locale||"zh-CN",locales_path:de.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!0,installed_version:de.manifest.version,published_at:new Date().toISOString(),updated_at:new Date().toISOString()});S(ve),Ce(ve)}}catch(ae){if(!me){const xe=ae instanceof Error?ae.message:"加载插件列表失败";B(xe),fe({title:"加载失败",description:xe,variant:"destructive"})}}finally{me||L(!1)}})(),()=>{me=!0,_&&_.close()}},[fe]);const we=_=>{if(!_.installed&&V&&!pe(_))return e.jsxs(Je,{variant:"destructive",className:"gap-1",children:[e.jsx(Oa,{className:"h-3 w-3"}),"不兼容"]});if(_.installed){const me=_.installed_version?.trim(),oe=_.manifest.version?.trim();if(me!==oe){const ae=me?.split(".").map(Number)||[0,0,0],xe=oe?.split(".").map(Number)||[0,0,0];for(let ve=0;ve<3;ve++){if((xe[ve]||0)>(ae[ve]||0))return e.jsxs(Je,{variant:"outline",className:"gap-1 text-orange-600 border-orange-600",children:[e.jsx(Oa,{className:"h-3 w-3"}),"可更新"]});if((xe[ve]||0)<(ae[ve]||0))break}}return e.jsxs(Je,{variant:"default",className:"gap-1",children:[e.jsx(ha,{className:"h-3 w-3"}),"已安装"]})}return null},pe=_=>!V||!_.manifest?.host_application?!0:Z1(_.manifest.host_application.min_version,_.manifest.host_application.max_version,V),Ne=_=>{if(!_.installed||!_.installed_version||!_.manifest?.version)return!1;const me=_.installed_version.trim(),oe=_.manifest.version.trim();if(me===oe)return!1;const ae=me.split(".").map(Number),xe=oe.split(".").map(Number);for(let ve=0;ve<3;ve++){if((xe[ve]||0)>(ae[ve]||0))return!0;if((xe[ve]||0)<(ae[ve]||0))return!1}return!1},be=C.filter(_=>{if(!_.manifest)return console.warn("[过滤] 跳过无 manifest 的插件:",_.id),!1;const me=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(ve=>ve.toLowerCase().includes(d.toLowerCase())),oe=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x);let ae=!0;j==="installed"?ae=_.installed===!0:j==="updates"&&(ae=_.installed===!0&&Ne(_));const xe=!N||!V||pe(_);return me&&oe&&ae&&xe}),A=()=>{c(null)},X=async _=>{if(!O?.installed){fe({title:"无法安装",description:"Git 未安装",variant:"destructive"});return}if(V&&!pe(_)){fe({title:"无法安装",description:"插件与当前麦麦版本不兼容",variant:"destructive"});return}try{await I1(_.id,_.manifest.repository_url||"","main"),c2(_.id).catch(oe=>{console.warn("Failed to record download:",oe)}),fe({title:"安装成功",description:`${_.manifest.name} 已成功安装`});const me=await nr();E(me),S(oe=>oe.map(ae=>{if(ae.id===_.id){const xe=Vc(ae.id,me),ve=Fc(ae.id,me);return{...ae,installed:xe,installed_version:ve}}return ae}))}catch(me){fe({title:"安装失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}},T=async _=>{try{await P1(_.id),fe({title:"卸载成功",description:`${_.manifest.name} 已成功卸载`});const me=await nr();E(me),S(oe=>oe.map(ae=>{if(ae.id===_.id){const xe=Vc(ae.id,me),ve=Fc(ae.id,me);return{...ae,installed:xe,installed_version:ve}}return ae}))}catch(me){fe({title:"卸载失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}},te=async _=>{if(!O?.installed){fe({title:"无法更新",description:"Git 未安装",variant:"destructive"});return}try{const me=await W1(_.id,_.manifest.repository_url||"","main");fe({title:"更新成功",description:`${_.manifest.name} 已从 ${me.old_version} 更新到 ${me.new_version}`});const oe=await nr();E(oe),S(ae=>ae.map(xe=>{if(xe.id===_.id){const ve=Vc(xe.id,oe),de=Fc(xe.id,oe);return{...xe,installed:ve,installed_version:de}}return xe}))}catch(me){fe({title:"更新失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}};return e.jsx(st,{className:"h-full",children:e.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件市场"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"浏览和管理麦麦的插件"})]}),e.jsxs(b,{onClick:()=>n({to:"/plugin-mirrors"}),children:[e.jsx(Cy,{className:"h-4 w-4 mr-2"}),"配置镜像源"]})]}),O&&!O.installed&&e.jsxs(Ye,{className:"border-orange-600 bg-orange-50 dark:bg-orange-950/20",children:[e.jsx(Nt,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ya,{className:"h-5 w-5 text-orange-600"}),e.jsxs("div",{children:[e.jsx(wt,{className:"text-lg text-orange-900 dark:text-orange-100",children:"Git 未安装"}),e.jsx(ns,{className:"text-orange-800 dark:text-orange-200",children:O.error||"请先安装 Git 才能使用插件安装功能"})]})]})}),e.jsx(kt,{children:e.jsxs("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:["您可以从 ",e.jsx("a",{href:"https://git-scm.com/downloads",target:"_blank",rel:"noopener noreferrer",className:"underline font-medium",children:"git-scm.com"})," 下载并安装 Git。 安装完成后,请重启麦麦应用。"]})})]}),e.jsx(Ye,{className:"p-4",children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(zs,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索插件...",value:d,onChange:_=>h(_.target.value),className:"pl-9"})]}),e.jsxs(qe,{value:x,onValueChange:f,children:[e.jsx(Be,{className:"w-full sm:w-[200px]",children:e.jsx(Ge,{placeholder:"选择分类"})}),e.jsxs(He,{children:[e.jsx(ie,{value:"all",children:"全部分类"}),e.jsx(ie,{value:"Group Management",children:"群组管理"}),e.jsx(ie,{value:"Entertainment & Interaction",children:"娱乐互动"}),e.jsx(ie,{value:"Utility Tools",children:"实用工具"}),e.jsx(ie,{value:"Content Generation",children:"内容生成"}),e.jsx(ie,{value:"Multimedia",children:"多媒体"}),e.jsx(ie,{value:"External Integration",children:"外部集成"}),e.jsx(ie,{value:"Data Analysis & Insights",children:"数据分析与洞察"}),e.jsx(ie,{value:"Other",children:"其他"})]})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Cs,{id:"compatible-only",checked:N,onCheckedChange:_=>v(_===!0)}),e.jsx("label",{htmlFor:"compatible-only",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer",children:"只显示兼容当前版本的插件"})]})]})}),e.jsx(La,{value:j,onValueChange:p,className:"w-full",children:e.jsxs(wa,{className:"grid w-full grid-cols-3",children:[e.jsxs(it,{value:"all",children:["全部插件 (",C.filter(_=>{if(!_.manifest)return!1;const me=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(xe=>xe.toLowerCase().includes(d.toLowerCase())),oe=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x),ae=!N||!V||pe(_);return me&&oe&&ae}).length,")"]}),e.jsxs(it,{value:"installed",children:["已安装 (",C.filter(_=>{if(!_.manifest)return!1;const me=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(xe=>xe.toLowerCase().includes(d.toLowerCase())),oe=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x),ae=!N||!V||pe(_);return _.installed&&me&&oe&&ae}).length,")"]}),e.jsxs(it,{value:"updates",children:["可更新 (",C.filter(_=>{if(!_.manifest)return!1;const me=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(xe=>xe.toLowerCase().includes(d.toLowerCase())),oe=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x),ae=!N||!V||pe(_);return _.installed&&Ne(_)&&me&&oe&&ae}).length,")"]})]})}),H&&H.stage==="loading"&&e.jsx(Ye,{className:"p-4",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ss,{className:"h-4 w-4 animate-spin"}),e.jsxs("span",{className:"text-sm font-medium",children:[H.operation==="fetch"&&"加载插件列表",H.operation==="install"&&`安装插件${H.plugin_id?`: ${H.plugin_id}`:""}`,H.operation==="uninstall"&&`卸载插件${H.plugin_id?`: ${H.plugin_id}`:""}`,H.operation==="update"&&`更新插件${H.plugin_id?`: ${H.plugin_id}`:""}`]})]}),e.jsxs("span",{className:"text-sm font-medium",children:[H.progress,"%"]})]}),e.jsx(yr,{value:H.progress,className:"h-2"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:H.message}),H.operation==="fetch"&&H.total_plugins>0&&e.jsxs("div",{className:"text-xs text-muted-foreground text-center",children:["已加载 ",H.loaded_plugins," / ",H.total_plugins," 个插件"]})]})}),H&&H.stage==="error"&&H.error&&e.jsx(Ye,{className:"border-destructive bg-destructive/10",children:e.jsx(Nt,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ya,{className:"h-5 w-5 text-destructive"}),e.jsxs("div",{children:[e.jsx(wt,{className:"text-lg text-destructive",children:"加载失败"}),e.jsx(ns,{className:"text-destructive/80",children:H.error})]})]})})}),w?e.jsxs("div",{className:"flex items-center justify-center py-12",children:[e.jsx(Ss,{className:"h-8 w-8 animate-spin text-muted-foreground"}),e.jsx("span",{className:"ml-3 text-muted-foreground",children:"加载插件列表中..."})]}):F?e.jsx(Ye,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(ya,{className:"h-12 w-12 text-destructive mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:F}),e.jsx(b,{onClick:()=>window.location.reload(),children:"重新加载"})]})}):be.length===0?e.jsx(Ye,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(zs,{className:"h-12 w-12 text-muted-foreground mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"未找到插件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:d||x!=="all"?"尝试调整搜索条件或筛选器":"暂无可用插件"})]})}):e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:be.map(_=>e.jsxs(Ye,{className:"flex flex-col hover:shadow-lg transition-shadow h-full",children:[e.jsxs(Nt,{children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsx(wt,{className:"text-xl",children:_.manifest?.name||_.id}),e.jsxs("div",{className:"flex flex-col gap-1",children:[_.manifest?.categories&&_.manifest.categories[0]&&e.jsx(Je,{variant:"secondary",className:"text-xs whitespace-nowrap",children:hp[_.manifest.categories[0]]||_.manifest.categories[0]}),we(_)]})]}),e.jsx(ns,{className:"line-clamp-2",children:_.manifest?.description||"无描述"})]}),e.jsx(kt,{className:"flex-1",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(rl,{className:"h-4 w-4"}),e.jsx("span",{children:(R[_.id]?.downloads??_.downloads??0).toLocaleString()})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ol,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsx("span",{children:(R[_.id]?.rating??_.rating??0).toFixed(1)})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[_.manifest?.keywords&&_.manifest.keywords.slice(0,3).map(me=>e.jsx(Je,{variant:"outline",className:"text-xs",children:me},me)),_.manifest?.keywords&&_.manifest.keywords.length>3&&e.jsxs(Je,{variant:"outline",className:"text-xs",children:["+",_.manifest.keywords.length-3]})]}),e.jsxs("div",{className:"text-xs text-muted-foreground pt-2 border-t space-y-1",children:[e.jsxs("div",{children:["v",_.manifest?.version||"unknown"," · ",_.manifest?.author?.name||"Unknown"]}),_.manifest?.host_application&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{children:"支持:"}),e.jsxs("span",{className:"font-medium",children:[_.manifest.host_application.min_version,_.manifest.host_application.max_version?` - ${_.manifest.host_application.max_version}`:" - 最新版本"]})]})]})]})}),e.jsx(mg,{className:"pt-4",children:e.jsxs("div",{className:"flex items-center justify-end gap-2 w-full",children:[e.jsx(b,{variant:"outline",size:"sm",onClick:()=>c(_),children:"查看详情"}),_.installed?Ne(_)?e.jsxs(b,{size:"sm",disabled:!O?.installed,title:O?.installed?void 0:"Git 未安装",onClick:()=>te(_),children:[e.jsx(ws,{className:"h-4 w-4 mr-1"}),"更新"]}):e.jsxs(b,{variant:"destructive",size:"sm",disabled:!O?.installed,title:O?.installed?void 0:"Git 未安装",onClick:()=>T(_),children:[e.jsx(at,{className:"h-4 w-4 mr-1"}),"卸载"]}):e.jsxs(b,{size:"sm",disabled:!O?.installed||H?.operation==="install"||V!==null&&!pe(_),title:O?.installed?V!==null&&!pe(_)?`不兼容当前版本 (需要 ${_.manifest?.host_application?.min_version||"未知"}${_.manifest?.host_application?.max_version?` - ${_.manifest.host_application.max_version}`:"+"},当前 ${V?.version})`:void 0:"Git 未安装",onClick:()=>X(_),children:[e.jsx(rl,{className:"h-4 w-4 mr-1"}),H?.operation==="install"&&H?.plugin_id===_.id?"安装中...":"安装"]})]})})]},_.id))}),e.jsx(Jt,{open:r!==null,onOpenChange:A,children:r&&r.manifest&&e.jsx($t,{className:"max-w-2xl max-h-[80vh] p-0 flex flex-col",children:e.jsx(st,{className:"flex-1 overflow-auto",children:e.jsxs("div",{className:"p-6",children:[e.jsx(Qt,{children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"space-y-2 flex-1",children:[e.jsx(Yt,{className:"text-2xl",children:r.manifest.name}),e.jsxs(ds,{children:["作者: ",r.manifest.author?.name||"Unknown",r.manifest.author?.url&&e.jsx("a",{href:r.manifest.author.url,target:"_blank",rel:"noopener noreferrer",className:"ml-2 text-primary hover:underline",children:e.jsx(Qc,{className:"h-3 w-3 inline"})})]})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[r.manifest.categories&&r.manifest.categories[0]&&e.jsx(Je,{variant:"secondary",children:hp[r.manifest.categories[0]]||r.manifest.categories[0]}),we(r)]})]})}),e.jsxs("div",{className:"space-y-6",children:[e.jsx(d2,{pluginId:r.id}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"版本"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["v",r.manifest?.version||"unknown"]}),r.installed&&r.installed_version&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:["已安装: v",r.installed_version]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"下载量"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:(R[r.id]?.downloads??r.downloads??0).toLocaleString()})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"评分"}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ol,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[(R[r.id]?.rating??r.rating??0).toFixed(1)," (",R[r.id]?.rating_count??r.review_count??0,")"]})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"许可证"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:r.manifest.license||"Unknown"})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("p",{className:"text-sm font-medium",children:"支持版本"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:[r.manifest.host_application?.min_version||"未知",r.manifest.host_application?.max_version?` - ${r.manifest.host_application.max_version}`:" - 最新版本"]})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"关键词"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:r.manifest.keywords&&r.manifest.keywords.map(_=>e.jsx(Je,{variant:"outline",children:_},_))})]}),r.detailed_description&&e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"详细说明"}),e.jsx("p",{className:"text-sm text-muted-foreground whitespace-pre-line",children:r.detailed_description})]}),!r.detailed_description&&e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"说明"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:r.manifest.description||"无描述"})]}),e.jsxs("div",{className:"space-y-2",children:[r.manifest.homepage_url&&e.jsxs("div",{className:"text-sm",children:[e.jsx("span",{className:"font-medium",children:"主页: "}),e.jsx("a",{href:r.manifest.homepage_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:r.manifest.homepage_url})]}),r.manifest.repository_url&&e.jsxs("div",{className:"text-sm",children:[e.jsx("span",{className:"font-medium",children:"仓库: "}),e.jsx("a",{href:r.manifest.repository_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:r.manifest.repository_url})]})]})]}),e.jsxs(xs,{children:[r.manifest.homepage_url&&e.jsxs(b,{onClick:()=>window.open(r.manifest.homepage_url,"_blank"),children:[e.jsx(Qc,{className:"h-4 w-4 mr-2"}),"访问主页"]}),r.manifest.repository_url&&e.jsxs(b,{variant:"outline",onClick:()=>window.open(r.manifest.repository_url,"_blank"),children:[e.jsx(Qc,{className:"h-4 w-4 mr-2"}),"查看仓库"]})]})]})})})})]})})}const Ru=Eb,Lu=zb,Uu=Ab;function m2({field:n,value:r,onChange:c}){const[d,h]=u.useState(!1);switch(n.ui_type){case"switch":return e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(y,{children:n.label}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]}),e.jsx(Qe,{checked:!!r,onCheckedChange:c,disabled:n.disabled})]});case"number":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{children:n.label}),e.jsx(ce,{type:"number",value:r??n.default,onChange:x=>c(parseFloat(x.target.value)||0),min:n.min,max:n.max,step:n.step??1,placeholder:n.placeholder,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"slider":return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(y,{children:n.label}),e.jsx("span",{className:"text-sm text-muted-foreground",children:r??n.default})]}),e.jsx(Ma,{value:[r??n.default],onValueChange:x=>c(x[0]),min:n.min??0,max:n.max??100,step:n.step??1,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"select":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{children:n.label}),e.jsxs(qe,{value:String(r??n.default),onValueChange:c,disabled:n.disabled,children:[e.jsx(Be,{children:e.jsx(Ge,{placeholder:n.placeholder??"请选择"})}),e.jsx(He,{children:n.choices?.map(x=>e.jsx(ie,{value:String(x),children:String(x)},String(x)))})]}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"textarea":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{children:n.label}),e.jsx(Ft,{value:r??n.default,onChange:x=>c(x.target.value),placeholder:n.placeholder,rows:n.rows??3,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"password":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{children:n.label}),e.jsxs("div",{className:"relative",children:[e.jsx(ce,{type:d?"text":"password",value:r??"",onChange:x=>c(x.target.value),placeholder:n.placeholder,disabled:n.disabled,className:"pr-10"}),e.jsx(b,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-3",onClick:()=>h(!d),children:d?e.jsx(or,{className:"h-4 w-4"}):e.jsx(Ws,{className:"h-4 w-4"})})]}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"text":default:return e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{children:n.label}),e.jsx(ce,{type:"text",value:r??n.default??"",onChange:x=>c(x.target.value),placeholder:n.placeholder,maxLength:n.max_length,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]})}}function xp({section:n,config:r,onChange:c}){const[d,h]=u.useState(!n.collapsed),x=Object.entries(n.fields).filter(([,f])=>!f.hidden).sort(([,f],[,j])=>f.order-j.order);return e.jsx(Ru,{open:d,onOpenChange:h,children:e.jsxs(Ye,{children:[e.jsx(Lu,{asChild:!0,children:e.jsxs(Nt,{className:"cursor-pointer hover:bg-muted/50 transition-colors",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[d?e.jsx(Rl,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Ll,{className:"h-4 w-4 text-muted-foreground"}),e.jsx(wt,{className:"text-lg",children:n.title})]}),e.jsxs(Je,{variant:"secondary",className:"text-xs",children:[x.length," 项"]})]}),n.description&&e.jsx(ns,{className:"ml-6",children:n.description})]})}),e.jsx(Uu,{children:e.jsx(kt,{className:"space-y-4 pt-0",children:x.map(([f,j])=>e.jsx(m2,{field:j,value:r[n.name]?.[f],onChange:p=>c(n.name,f,p),sectionName:n.name},f))})})]})})}function h2({plugin:n,onBack:r}){const{toast:c}=Xt(),[d,h]=u.useState(null),[x,f]=u.useState({}),[j,p]=u.useState({}),[N,v]=u.useState(!0),[C,S]=u.useState(!1),[w,L]=u.useState(!1),[F,B]=u.useState(!1),O=u.useCallback(async()=>{v(!0);try{const[R,ne]=await Promise.all([e2(n.id),t2(n.id)]);h(R),f(ne),p(JSON.parse(JSON.stringify(ne)))}catch(R){c({title:"加载配置失败",description:R instanceof Error?R.message:"未知错误",variant:"destructive"})}finally{v(!1)}},[n.id,c]);u.useEffect(()=>{O()},[O]),u.useEffect(()=>{L(JSON.stringify(x)!==JSON.stringify(j))},[x,j]);const K=(R,ne,fe)=>{f(Ce=>({...Ce,[R]:{...Ce[R]||{},[ne]:fe}}))},H=async()=>{S(!0);try{await s2(n.id,x),p(JSON.parse(JSON.stringify(x))),c({title:"配置已保存",description:"更改将在插件重新加载后生效"})}catch(R){c({title:"保存失败",description:R instanceof Error?R.message:"未知错误",variant:"destructive"})}finally{S(!1)}},z=async()=>{try{await a2(n.id),c({title:"配置已重置",description:"下次加载插件时将使用默认配置"}),B(!1),O()}catch(R){c({title:"重置失败",description:R instanceof Error?R.message:"未知错误",variant:"destructive"})}},V=async()=>{try{const R=await l2(n.id);c({title:R.message,description:R.note}),O()}catch(R){c({title:"切换状态失败",description:R instanceof Error?R.message:"未知错误",variant:"destructive"})}};if(N)return e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx(Ss,{className:"h-8 w-8 animate-spin text-muted-foreground"})});if(!d)return e.jsxs("div",{className:"flex flex-col items-center justify-center h-64 space-y-4",children:[e.jsx(Oa,{className:"h-12 w-12 text-muted-foreground"}),e.jsx("p",{className:"text-muted-foreground",children:"无法加载配置"}),e.jsxs(b,{onClick:r,variant:"outline",children:[e.jsx(ti,{className:"h-4 w-4 mr-2"}),"返回"]})]});const Y=Object.values(d.sections).sort((R,ne)=>R.order-ne.order),E=x.plugin?.enabled!==!1;return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(b,{variant:"ghost",size:"icon",onClick:r,children:e.jsx(ti,{className:"h-5 w-5"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:d.plugin_info.name||n.manifest.name}),e.jsxs("div",{className:"flex items-center gap-2 mt-1",children:[e.jsx(Je,{variant:E?"default":"secondary",children:E?"已启用":"已禁用"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["v",d.plugin_info.version||n.manifest.version]})]})]})]}),e.jsxs("div",{className:"flex gap-2 ml-10 sm:ml-0",children:[e.jsxs(b,{variant:"outline",size:"sm",onClick:V,children:[e.jsx(gr,{className:"h-4 w-4 mr-2"}),E?"禁用":"启用"]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:()=>B(!0),children:[e.jsx(Kc,{className:"h-4 w-4 mr-2"}),"重置"]}),e.jsxs(b,{size:"sm",onClick:H,disabled:!w||C,children:[C?e.jsx(Ss,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(jr,{className:"h-4 w-4 mr-2"}),"保存"]})]})]}),w&&e.jsx(Ye,{className:"border-orange-200 bg-orange-50 dark:bg-orange-950/20 dark:border-orange-900",children:e.jsx(kt,{className:"py-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ra,{className:"h-4 w-4 text-orange-600"}),e.jsx("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:"有未保存的更改"})]})})}),d.layout.type==="tabs"&&d.layout.tabs.length>0?e.jsxs(La,{defaultValue:d.layout.tabs[0]?.id,children:[e.jsx(wa,{children:d.layout.tabs.map(R=>e.jsxs(it,{value:R.id,children:[R.title,R.badge&&e.jsx(Je,{variant:"secondary",className:"ml-2 text-xs",children:R.badge})]},R.id))}),d.layout.tabs.map(R=>e.jsx(zt,{value:R.id,className:"space-y-4 mt-4",children:R.sections.map(ne=>{const fe=d.sections[ne];return fe?e.jsx(xp,{section:fe,config:x,onChange:K},ne):null})},R.id))]}):e.jsx("div",{className:"space-y-4",children:Y.map(R=>e.jsx(xp,{section:R,config:x,onChange:K},R.name))}),e.jsx(Jt,{open:F,onOpenChange:B,children:e.jsxs($t,{children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:"确认重置配置"}),e.jsx(ds,{children:"这将删除当前配置文件,下次加载插件时将使用默认配置。此操作不可撤销。"})]}),e.jsxs(xs,{children:[e.jsx(b,{variant:"outline",onClick:()=>B(!1),children:"取消"}),e.jsx(b,{variant:"destructive",onClick:z,children:"确认重置"})]})]})})]})}function x2(){const{toast:n}=Xt(),[r,c]=u.useState([]),[d,h]=u.useState(!0),[x,f]=u.useState(""),[j,p]=u.useState(null),N=async()=>{h(!0);try{const w=await nr();c(w)}catch(w){n({title:"加载插件列表失败",description:w instanceof Error?w.message:"未知错误",variant:"destructive"})}finally{h(!1)}};u.useEffect(()=>{N()},[]);const v=r.filter(w=>{const L=x.toLowerCase();return w.id.toLowerCase().includes(L)||w.manifest.name.toLowerCase().includes(L)||w.manifest.description?.toLowerCase().includes(L)}),C=r.length,S=0;return j?e.jsx(st,{className:"h-full",children:e.jsx("div",{className:"p-4 sm:p-6",children:e.jsx(h2,{plugin:j,onBack:()=>p(null)})})}):e.jsx(st,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理和配置已安装的插件"})]}),e.jsxs(b,{variant:"outline",size:"sm",onClick:N,children:[e.jsx(ws,{className:`h-4 w-4 mr-2 ${d?"animate-spin":""}`}),"刷新"]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-3",children:[e.jsxs(Ye,{children:[e.jsxs(Nt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(wt,{className:"text-sm font-medium",children:"已安装插件"}),e.jsx(rn,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(kt,{children:[e.jsx("div",{className:"text-2xl font-bold",children:r.length}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:d?"正在加载...":"个插件"})]})]}),e.jsxs(Ye,{children:[e.jsxs(Nt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(wt,{className:"text-sm font-medium",children:"已启用"}),e.jsx(ha,{className:"h-4 w-4 text-green-600"})]}),e.jsxs(kt,{children:[e.jsx("div",{className:"text-2xl font-bold",children:C}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"运行中的插件"})]})]}),e.jsxs(Ye,{children:[e.jsxs(Nt,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(wt,{className:"text-sm font-medium",children:"已禁用"}),e.jsx(Oa,{className:"h-4 w-4 text-orange-600"})]}),e.jsxs(kt,{children:[e.jsx("div",{className:"text-2xl font-bold",children:S}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"未激活的插件"})]})]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(zs,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索插件...",value:x,onChange:w=>f(w.target.value),className:"pl-9"})]}),e.jsxs(Ye,{children:[e.jsxs(Nt,{children:[e.jsx(wt,{children:"已安装的插件"}),e.jsx(ns,{children:"点击插件查看和编辑配置"})]}),e.jsx(kt,{children:d?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(Ss,{className:"h-8 w-8 animate-spin text-muted-foreground"})}):v.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 space-y-4",children:[e.jsx(rn,{className:"h-16 w-16 text-muted-foreground/50"}),e.jsxs("div",{className:"text-center space-y-2",children:[e.jsx("p",{className:"text-lg font-medium text-muted-foreground",children:x?"没有找到匹配的插件":"暂无已安装的插件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:x?"尝试其他搜索关键词":"前往插件市场安装插件"})]})]}):e.jsx("div",{className:"space-y-2",children:v.map(w=>e.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg border hover:bg-muted/50 cursor-pointer transition-colors",onClick:()=>p(w),children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[e.jsx("div",{className:"h-10 w-10 rounded-lg bg-primary/10 flex items-center justify-center flex-shrink-0",children:e.jsx(rn,{className:"h-5 w-5 text-primary"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-medium truncate",children:w.manifest.name}),e.jsxs(Je,{variant:"secondary",className:"text-xs flex-shrink-0",children:["v",w.manifest.version]})]}),e.jsx("p",{className:"text-sm text-muted-foreground truncate",children:w.manifest.description||"暂无描述"})]})]}),e.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[e.jsx(b,{variant:"ghost",size:"sm",children:e.jsx(ai,{className:"h-4 w-4"})}),e.jsx(Ll,{className:"h-4 w-4 text-muted-foreground"})]})]},w.id))})})]})]})})}function f2(){const n=fa(),{toast:r}=Xt(),[c,d]=u.useState([]),[h,x]=u.useState(!0),[f,j]=u.useState(null),[p,N]=u.useState(null),[v,C]=u.useState(!1),[S,w]=u.useState(!1),[L,F]=u.useState({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),B=u.useCallback(async()=>{try{x(!0),j(null);const E=localStorage.getItem("access-token"),R=await fetch("/api/webui/plugins/mirrors",{headers:{Authorization:`Bearer ${E}`}});if(!R.ok)throw new Error("获取镜像源列表失败");const ne=await R.json();d(ne.mirrors||[])}catch(E){const R=E instanceof Error?E.message:"加载镜像源失败";j(R),r({title:"加载失败",description:R,variant:"destructive"})}finally{x(!1)}},[r]);u.useEffect(()=>{B()},[B]);const O=async()=>{try{const E=localStorage.getItem("access-token"),R=await fetch("/api/webui/plugins/mirrors",{method:"POST",headers:{Authorization:`Bearer ${E}`,"Content-Type":"application/json"},body:JSON.stringify(L)});if(!R.ok){const ne=await R.json();throw new Error(ne.detail||"添加镜像源失败")}r({title:"添加成功",description:"镜像源已添加"}),C(!1),F({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),B()}catch(E){r({title:"添加失败",description:E instanceof Error?E.message:"未知错误",variant:"destructive"})}},K=async()=>{if(p)try{const E=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${p.id}`,{method:"PUT",headers:{Authorization:`Bearer ${E}`,"Content-Type":"application/json"},body:JSON.stringify({name:L.name,raw_prefix:L.raw_prefix,clone_prefix:L.clone_prefix,enabled:L.enabled,priority:L.priority})})).ok)throw new Error("更新镜像源失败");r({title:"更新成功",description:"镜像源已更新"}),w(!1),N(null),B()}catch(E){r({title:"更新失败",description:E instanceof Error?E.message:"未知错误",variant:"destructive"})}},H=async E=>{if(confirm("确定要删除这个镜像源吗?"))try{const R=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${E}`,{method:"DELETE",headers:{Authorization:`Bearer ${R}`}})).ok)throw new Error("删除镜像源失败");r({title:"删除成功",description:"镜像源已删除"}),B()}catch(R){r({title:"删除失败",description:R instanceof Error?R.message:"未知错误",variant:"destructive"})}},z=async E=>{try{const R=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${E.id}`,{method:"PUT",headers:{Authorization:`Bearer ${R}`,"Content-Type":"application/json"},body:JSON.stringify({enabled:!E.enabled})})).ok)throw new Error("更新状态失败");B()}catch(R){r({title:"更新失败",description:R instanceof Error?R.message:"未知错误",variant:"destructive"})}},V=E=>{N(E),F({id:E.id,name:E.name,raw_prefix:E.raw_prefix,clone_prefix:E.clone_prefix,enabled:E.enabled,priority:E.priority}),w(!0)},Y=async(E,R)=>{const ne=R==="up"?E.priority-1:E.priority+1;if(!(ne<1))try{const fe=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${E.id}`,{method:"PUT",headers:{Authorization:`Bearer ${fe}`,"Content-Type":"application/json"},body:JSON.stringify({priority:ne})})).ok)throw new Error("更新优先级失败");B()}catch(fe){r({title:"更新失败",description:fe instanceof Error?fe.message:"未知错误",variant:"destructive"})}};return e.jsx(st,{className:"h-full",children:e.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(b,{variant:"ghost",size:"icon",onClick:()=>n({to:"/plugins"}),children:e.jsx(ti,{className:"h-5 w-5"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"镜像源配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理 Git 克隆和文件下载的镜像源"})]})]}),e.jsxs(b,{onClick:()=>C(!0),children:[e.jsx(hs,{className:"h-4 w-4 mr-2"}),"添加镜像源"]})]}),h?e.jsx(Ye,{className:"p-6",children:e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(Ss,{className:"h-8 w-8 animate-spin text-primary"})})}):f?e.jsx(Ye,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(ya,{className:"h-12 w-12 text-destructive mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:f}),e.jsx(b,{onClick:B,children:"重新加载"})]})}):e.jsxs(Ye,{children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(li,{children:[e.jsx(ni,{children:e.jsxs(_s,{children:[e.jsx(rt,{children:"状态"}),e.jsx(rt,{children:"名称"}),e.jsx(rt,{children:"ID"}),e.jsx(rt,{children:"优先级"}),e.jsx(rt,{className:"text-right",children:"操作"})]})}),e.jsx(ii,{children:c.map(E=>e.jsxs(_s,{children:[e.jsx(Ze,{children:e.jsx(Qe,{checked:E.enabled,onCheckedChange:()=>z(E)})}),e.jsx(Ze,{children:e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:E.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1",children:["Raw: ",E.raw_prefix]})]})}),e.jsx(Ze,{children:e.jsx(Je,{variant:"outline",children:E.id})}),e.jsx(Ze,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-mono",children:E.priority}),e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx(b,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>Y(E,"up"),disabled:E.priority===1,children:e.jsx(ur,{className:"h-3 w-3"})}),e.jsx(b,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>Y(E,"down"),children:e.jsx(Rl,{className:"h-3 w-3"})})]})]})}),e.jsx(Ze,{className:"text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-2",children:[e.jsx(b,{variant:"ghost",size:"icon",onClick:()=>V(E),children:e.jsx(nn,{className:"h-4 w-4"})}),e.jsx(b,{variant:"ghost",size:"icon",onClick:()=>H(E.id),children:e.jsx(at,{className:"h-4 w-4 text-destructive"})})]})})]},E.id))})]})}),e.jsx("div",{className:"md:hidden p-4 space-y-4",children:c.map(E=>e.jsx(Ye,{className:"p-4",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-semibold",children:E.name}),E.enabled&&e.jsx(Je,{variant:"default",className:"text-xs",children:"启用"})]}),e.jsx(Je,{variant:"outline",className:"mt-1 text-xs",children:E.id})]}),e.jsx(Qe,{checked:E.enabled,onCheckedChange:()=>z(E)})]}),e.jsxs("div",{className:"text-sm space-y-1",children:[e.jsxs("div",{className:"text-muted-foreground",children:[e.jsx("span",{className:"font-medium",children:"Raw: "}),e.jsx("span",{className:"break-all",children:E.raw_prefix})]}),e.jsxs("div",{className:"text-muted-foreground",children:[e.jsx("span",{className:"font-medium",children:"优先级: "}),e.jsx("span",{className:"font-mono",children:E.priority})]})]}),e.jsxs("div",{className:"flex items-center gap-2 pt-2 border-t",children:[e.jsxs(b,{variant:"outline",size:"sm",className:"flex-1",onClick:()=>V(E),children:[e.jsx(nn,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>Y(E,"up"),disabled:E.priority===1,children:e.jsx(ur,{className:"h-4 w-4"})}),e.jsx(b,{variant:"outline",size:"sm",onClick:()=>Y(E,"down"),children:e.jsx(Rl,{className:"h-4 w-4"})}),e.jsx(b,{variant:"destructive",size:"sm",onClick:()=>H(E.id),children:e.jsx(at,{className:"h-4 w-4"})})]})]})},E.id))})]}),e.jsx(Jt,{open:v,onOpenChange:C,children:e.jsxs($t,{className:"max-w-lg",children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:"添加镜像源"}),e.jsx(ds,{children:"添加新的 Git 镜像源配置"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"add-id",children:"镜像源 ID *"}),e.jsx(ce,{id:"add-id",placeholder:"例如: my-mirror",value:L.id,onChange:E=>F({...L,id:E.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"add-name",children:"名称 *"}),e.jsx(ce,{id:"add-name",placeholder:"例如: 我的镜像源",value:L.name,onChange:E=>F({...L,name:E.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"add-raw",children:"Raw 文件前缀 *"}),e.jsx(ce,{id:"add-raw",placeholder:"https://example.com/raw",value:L.raw_prefix,onChange:E=>F({...L,raw_prefix:E.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"add-clone",children:"克隆前缀 *"}),e.jsx(ce,{id:"add-clone",placeholder:"https://example.com/clone",value:L.clone_prefix,onChange:E=>F({...L,clone_prefix:E.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"add-priority",children:"优先级"}),e.jsx(ce,{id:"add-priority",type:"number",min:"1",value:L.priority,onChange:E=>F({...L,priority:parseInt(E.target.value)||1})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"add-enabled",checked:L.enabled,onCheckedChange:E=>F({...L,enabled:E})}),e.jsx(y,{htmlFor:"add-enabled",children:"启用此镜像源"})]})]}),e.jsxs(xs,{children:[e.jsx(b,{variant:"outline",onClick:()=>C(!1),children:"取消"}),e.jsx(b,{onClick:O,children:"添加"})]})]})}),e.jsx(Jt,{open:S,onOpenChange:w,children:e.jsxs($t,{className:"max-w-lg",children:[e.jsxs(Qt,{children:[e.jsx(Yt,{children:"编辑镜像源"}),e.jsx(ds,{children:"修改镜像源配置"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{children:"镜像源 ID"}),e.jsx(ce,{value:L.id,disabled:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"edit-name",children:"名称 *"}),e.jsx(ce,{id:"edit-name",value:L.name,onChange:E=>F({...L,name:E.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"edit-raw",children:"Raw 文件前缀 *"}),e.jsx(ce,{id:"edit-raw",value:L.raw_prefix,onChange:E=>F({...L,raw_prefix:E.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"edit-clone",children:"克隆前缀 *"}),e.jsx(ce,{id:"edit-clone",value:L.clone_prefix,onChange:E=>F({...L,clone_prefix:E.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{htmlFor:"edit-priority",children:"优先级"}),e.jsx(ce,{id:"edit-priority",type:"number",min:"1",value:L.priority,onChange:E=>F({...L,priority:parseInt(E.target.value)||1})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Qe,{id:"edit-enabled",checked:L.enabled,onCheckedChange:E=>F({...L,enabled:E})}),e.jsx(y,{htmlFor:"edit-enabled",children:"启用此镜像源"})]})]}),e.jsxs(xs,{children:[e.jsx(b,{variant:"outline",onClick:()=>w(!1),children:"取消"}),e.jsx(b,{onClick:K,children:"保存"})]})]})})]})})}const ir=u.forwardRef(({className:n,...r},c)=>e.jsx(Dp,{ref:c,className:Q("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",n),...r}));ir.displayName=Dp.displayName;const p2=u.forwardRef(({className:n,...r},c)=>e.jsx(Op,{ref:c,className:Q("aspect-square h-full w-full",n),...r}));p2.displayName=Op.displayName;const rr=u.forwardRef(({className:n,...r},c)=>e.jsx(Rp,{ref:c,className:Q("flex h-full w-full items-center justify-center rounded-full bg-muted",n),...r}));rr.displayName=Rp.displayName;function g2(){return"webui_"+Math.random().toString(36).substr(2,9)+"_"+Date.now().toString(36)}function j2(){const n="maibot_webui_user_id";let r=localStorage.getItem(n);return r||(r=g2(),localStorage.setItem(n,r)),r}function v2(){return localStorage.getItem("maibot_webui_user_name")||"WebUI用户"}function b2(n){localStorage.setItem("maibot_webui_user_name",n)}const Og="maibot_webui_virtual_tabs";function y2(){try{const n=localStorage.getItem(Og);if(n)return JSON.parse(n)}catch(n){console.error("[Chat] 加载虚拟标签页失败:",n)}return[]}function fp(n){try{localStorage.setItem(Og,JSON.stringify(n))}catch(r){console.error("[Chat] 保存虚拟标签页失败:",r)}}function N2(){const n={id:"webui-default",type:"webui",label:"WebUI",messages:[],isConnected:!1,isTyping:!1,sessionInfo:{}},r=()=>{const De=y2().map(ze=>{const Ve=ze.virtualConfig;return!Ve.groupId&&Ve.platform&&Ve.userId&&(Ve.groupId=`webui_virtual_group_${Ve.platform}_${Ve.userId}`),{id:ze.id,type:"virtual",label:ze.label,virtualConfig:Ve,messages:[],isConnected:!1,isTyping:!1,sessionInfo:{}}});return[n,...De]},[c,d]=u.useState(r),[h,x]=u.useState("webui-default"),f=c.find(D=>D.id===h)||c[0],[j,p]=u.useState(""),[N,v]=u.useState(!1),[C,S]=u.useState(!0),[w,L]=u.useState(v2()),[F,B]=u.useState(!1),[O,K]=u.useState(""),[H,z]=u.useState(!1),[V,Y]=u.useState([]),[E,R]=u.useState([]),[ne,fe]=u.useState(!1),[Ce,we]=u.useState(!1),[pe,Ne]=u.useState(""),[be,A]=u.useState({platform:"",personId:"",userId:"",userName:"",groupName:"",groupId:""}),X=u.useRef(j2()),T=u.useRef(new Map),te=u.useRef(null),_=u.useRef(new Map),me=u.useRef(0),oe=u.useRef(new Map),{toast:ae}=Xt(),xe=D=>(me.current+=1,`${D}-${Date.now()}-${me.current}-${Math.random().toString(36).substr(2,9)}`),ve=u.useCallback((D,De)=>{d(ze=>ze.map(Ve=>Ve.id===D?{...Ve,...De}:Ve))},[]),de=u.useCallback((D,De)=>{d(ze=>ze.map(Ve=>Ve.id===D?{...Ve,messages:[...Ve.messages,De]}:Ve))},[]),G=u.useCallback(()=>{te.current?.scrollIntoView({behavior:"smooth"})},[]);u.useEffect(()=>{G()},[f?.messages,G]);const W=u.useCallback(async()=>{fe(!0);try{const D=await Te("/api/chat/platforms");if(console.log("[Chat] 平台列表响应:",D.status,D.headers.get("content-type")),D.ok){const De=D.headers.get("content-type");if(De&&De.includes("application/json")){const ze=await D.json();console.log("[Chat] 平台列表数据:",ze),Y(ze.platforms||[])}else{const ze=await D.text();console.error("[Chat] 获取平台列表失败: 非 JSON 响应:",ze.substring(0,200)),ae({title:"连接失败",description:"无法连接到后端服务,请确保 MaiBot 已启动",variant:"destructive"})}}else console.error("[Chat] 获取平台列表失败: HTTP",D.status),ae({title:"获取平台失败",description:`服务器返回错误: ${D.status}`,variant:"destructive"})}catch(D){console.error("[Chat] 获取平台列表失败:",D),ae({title:"网络错误",description:"无法连接到后端服务",variant:"destructive"})}finally{fe(!1)}},[ae]),U=u.useCallback(async(D,De)=>{we(!0);try{const ze=new URLSearchParams;D&&ze.append("platform",D),De&&ze.append("search",De),ze.append("limit","50");const Ve=await Te(`/api/chat/persons?${ze.toString()}`);if(Ve.ok){const At=Ve.headers.get("content-type");if(At&&At.includes("application/json")){const We=await Ve.json();R(We.persons||[])}else console.error("[Chat] 获取用户列表失败: 后端返回非 JSON 响应")}}catch(ze){console.error("[Chat] 获取用户列表失败:",ze)}finally{we(!1)}},[]);u.useEffect(()=>{be.platform&&U(be.platform,pe)},[be.platform,pe,U]);const ee=u.useCallback(async(D,De)=>{S(!0);try{const ze=new URLSearchParams;ze.append("user_id",X.current),ze.append("limit","50"),De&&ze.append("group_id",De);const Ve=`/api/chat/history?${ze.toString()}`;console.log("[Chat] 正在加载历史消息:",Ve);const At=await Te(Ve);if(At.ok){const We=await At.text();try{const ss=JSON.parse(We);if(ss.messages&&ss.messages.length>0){const gt=ss.messages.map(je=>({id:je.id,type:je.type,content:je.content,timestamp:je.timestamp,sender:{name:je.sender_name||(je.is_bot?"麦麦":"WebUI用户"),user_id:je.user_id,is_bot:je.is_bot}}));ve(D,{messages:gt});const _e=oe.current.get(D)||new Set;gt.forEach(je=>{if(je.type==="bot"){const yt=`bot-${je.content}-${Math.floor(je.timestamp*1e3)}`;_e.add(yt)}}),oe.current.set(D,_e)}}catch(ss){console.error("[Chat] JSON 解析失败:",ss)}}}catch(ze){console.error("[Chat] 加载历史消息失败:",ze)}finally{S(!1)}},[ve]),Se=u.useCallback((D,De,ze)=>{const Ve=T.current.get(D);if(Ve?.readyState===WebSocket.OPEN||Ve?.readyState===WebSocket.CONNECTING){console.log(`[Tab ${D}] WebSocket 已存在,跳过连接`);return}v(!0);const At=window.location.protocol==="https:"?"wss:":"ws:",We=new URLSearchParams;De==="virtual"&&ze?(We.append("user_id",ze.userId),We.append("user_name",ze.userName),We.append("platform",ze.platform),We.append("person_id",ze.personId),We.append("group_name",ze.groupName||"WebUI虚拟群聊"),ze.groupId&&We.append("group_id",ze.groupId)):(We.append("user_id",X.current),We.append("user_name",w));const ss=`${At}//${window.location.host}/api/chat/ws?${We.toString()}`;console.log(`[Tab ${D}] 正在连接 WebSocket:`,ss);try{const gt=new WebSocket(ss);T.current.set(D,gt),gt.onopen=()=>{ve(D,{isConnected:!0}),v(!1),console.log(`[Tab ${D}] WebSocket 已连接`)},gt.onmessage=_e=>{try{const je=JSON.parse(_e.data);switch(je.type){case"session_info":ve(D,{sessionInfo:{session_id:je.session_id,user_id:je.user_id,user_name:je.user_name,bot_name:je.bot_name}});break;case"system":de(D,{id:xe("sys"),type:"system",content:je.content||"",timestamp:je.timestamp||Date.now()/1e3});break;case"user_message":de(D,{id:je.message_id||xe("user"),type:"user",content:je.content||"",timestamp:je.timestamp||Date.now()/1e3,sender:je.sender});break;case"bot_message":{ve(D,{isTyping:!1});const yt=oe.current.get(D)||new Set,Ht=`bot-${je.content}-${Math.floor((je.timestamp||0)*1e3)}`;if(yt.has(Ht))break;if(yt.add(Ht),oe.current.set(D,yt),yt.size>100){const pa=yt.values().next().value;pa&&yt.delete(pa)}de(D,{id:xe("bot"),type:"bot",content:je.content||"",timestamp:je.timestamp||Date.now()/1e3,sender:je.sender});break}case"typing":ve(D,{isTyping:je.is_typing||!1});break;case"error":de(D,{id:xe("error"),type:"error",content:je.content||"发生错误",timestamp:je.timestamp||Date.now()/1e3}),ae({title:"错误",description:je.content,variant:"destructive"});break;case"pong":break;case"history":{const yt=je.messages||[];if(yt.length>0){const Ht=oe.current.get(D)||new Set,pa=yt.map(Ts=>{const Kt=Ts.is_bot||!1,Ms=Ts.id||xe(Kt?"bot":"user"),Ds=`${Kt?"bot":"user"}-${Ts.content}-${Math.floor(Ts.timestamp*1e3)}`;return Ht.add(Ds),{id:Ms,type:Kt?"bot":"user",content:Ts.content,timestamp:Ts.timestamp,sender:{name:Ts.sender_name||(Kt?"麦麦":"用户"),user_id:Ts.sender_id,is_bot:Kt}}});oe.current.set(D,Ht),ve(D,{messages:pa}),console.log(`[Tab ${D}] 已加载 ${pa.length} 条历史消息`)}break}default:console.log("未知消息类型:",je.type)}}catch(je){console.error("解析消息失败:",je)}},gt.onclose=()=>{ve(D,{isConnected:!1}),v(!1),T.current.delete(D),console.log(`[Tab ${D}] WebSocket 已断开`);const _e=_.current.get(D);_e&&clearTimeout(_e);const je=window.setTimeout(()=>{if(!Me.current){const yt=c.find(Ht=>Ht.id===D);yt&&Se(D,yt.type,yt.virtualConfig)}},5e3);_.current.set(D,je)},gt.onerror=_e=>{console.error(`[Tab ${D}] WebSocket 错误:`,_e),v(!1)}}catch(gt){console.error(`[Tab ${D}] 创建 WebSocket 失败:`,gt),v(!1)}},[w,ve,de,ae,c]),Me=u.useRef(!1);u.useEffect(()=>{Me.current=!1;const D=T.current,De=_.current,ze=oe.current;ee("webui-default");const Ve=setTimeout(()=>{Me.current||(Se("webui-default","webui"),c.forEach(We=>{We.type==="virtual"&&We.virtualConfig&&(ze.set(We.id,new Set),setTimeout(()=>{Me.current||Se(We.id,"virtual",We.virtualConfig)},200))}))},100),At=setInterval(()=>{D.forEach(We=>{We.readyState===WebSocket.OPEN&&We.send(JSON.stringify({type:"ping"}))})},3e4);return()=>{Me.current=!0,clearTimeout(Ve),clearInterval(At),De.forEach(We=>{clearTimeout(We)}),De.clear(),D.forEach(We=>{We.close()}),D.clear()}},[]);const tt=u.useCallback(()=>{const D=T.current.get(h);if(!j.trim()||!D||D.readyState!==WebSocket.OPEN)return;const De=f?.type==="virtual"&&f.virtualConfig?.userName||w;D.send(JSON.stringify({type:"message",content:j.trim(),user_name:De})),p("")},[j,w,h,f]),Xe=D=>{D.key==="Enter"&&!D.shiftKey&&(D.preventDefault(),tt())},Ut=()=>{K(w),B(!0)},Bt=()=>{const D=O.trim()||"WebUI用户";L(D),b2(D),B(!1);const De=T.current.get(h);De?.readyState===WebSocket.OPEN&&De.send(JSON.stringify({type:"update_nickname",user_name:D}))},re=()=>{K(""),B(!1)},ke=D=>new Date(D*1e3).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"}),Pe=()=>{const D=T.current.get(h);D&&(D.close(),T.current.delete(h)),Se(h,f?.type||"webui",f?.virtualConfig)},Fe=()=>{A({platform:"",personId:"",userId:"",userName:"",groupName:"",groupId:""}),Ne(""),W(),z(!0)},ts=()=>{if(!be.platform||!be.personId){ae({title:"配置不完整",description:"请选择平台和用户",variant:"destructive"});return}const D=`webui_virtual_group_${be.platform}_${be.userId}`,De=`virtual-${be.platform}-${be.userId}-${Date.now()}`,ze=be.userName||be.userId,Ve={id:De,type:"virtual",label:ze,virtualConfig:{...be,groupId:D},messages:[],isConnected:!1,isTyping:!1,sessionInfo:{}};d(At=>{const We=[...At,Ve],ss=We.filter(gt=>gt.type==="virtual"&>.virtualConfig).map(gt=>({id:gt.id,label:gt.label,virtualConfig:gt.virtualConfig,createdAt:Date.now()}));return fp(ss),We}),x(De),z(!1),oe.current.set(De,new Set),setTimeout(()=>{Se(De,"virtual",be)},100),ae({title:"虚拟身份标签页",description:`已创建 ${ze} 的对话`})},As=(D,De)=>{if(De?.stopPropagation(),D==="webui-default")return;const ze=T.current.get(D);ze&&(ze.close(),T.current.delete(D));const Ve=_.current.get(D);Ve&&(clearTimeout(Ve),_.current.delete(D)),oe.current.delete(D),d(At=>{const We=At.filter(gt=>gt.id!==D),ss=We.filter(gt=>gt.type==="virtual"&>.virtualConfig).map(gt=>({id:gt.id,label:gt.label,virtualConfig:gt.virtualConfig,createdAt:Date.now()}));return fp(ss),We}),h===D&&x("webui-default")},js=D=>{x(D)},Ke=D=>{A(De=>({...De,personId:D.person_id,userId:D.user_id,userName:D.nickname||D.person_name}))};return e.jsxs("div",{className:"h-full flex flex-col",children:[e.jsx(Jt,{open:H,onOpenChange:z,children:e.jsxs($t,{className:"sm:max-w-[500px] max-h-[85vh] overflow-hidden flex flex-col",children:[e.jsxs(Qt,{children:[e.jsxs(Yt,{className:"flex items-center gap-2",children:[e.jsx(yu,{className:"h-5 w-5"}),"新建虚拟身份对话"]}),e.jsx(ds,{children:"选择一个麦麦已认识的用户,以该用户的身份与麦麦对话。麦麦将使用她对该用户的记忆和认知来回应。"})]}),e.jsxs("div",{className:"space-y-4 flex-1 overflow-hidden flex flex-col",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(y,{className:"flex items-center gap-2",children:[e.jsx(ky,{className:"h-4 w-4"}),"选择平台"]}),e.jsxs(qe,{value:be.platform,onValueChange:D=>{A(De=>({...De,platform:D,personId:"",userId:"",userName:""})),R([])},children:[e.jsx(Be,{disabled:ne,children:e.jsx(Ge,{placeholder:ne?"加载中...":"选择平台"})}),e.jsx(He,{children:V.map(D=>e.jsxs(ie,{value:D.platform,children:[D.platform," (",D.count," 人)"]},D.platform))})]})]}),be.platform&&e.jsxs("div",{className:"space-y-2 flex-1 overflow-hidden flex flex-col",children:[e.jsxs(y,{className:"flex items-center gap-2",children:[e.jsx(Au,{className:"h-4 w-4"}),"选择用户"]}),e.jsxs("div",{className:"relative",children:[e.jsx(zs,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(ce,{placeholder:"搜索用户名...",value:pe,onChange:D=>Ne(D.target.value),className:"pl-9"})]}),e.jsx(st,{className:"h-[250px] border rounded-md",children:e.jsx("div",{className:"p-2",children:Ce?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(Ss,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):E.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-muted-foreground",children:[e.jsx(Au,{className:"h-8 w-8 mb-2 opacity-50"}),e.jsx("p",{className:"text-sm",children:"没有找到用户"})]}):e.jsx("div",{className:"space-y-1",children:E.map(D=>e.jsxs("button",{onClick:()=>Ke(D),className:Q("w-full flex items-center gap-3 p-2 rounded-md text-left transition-colors",be.personId===D.person_id?"bg-primary text-primary-foreground":"hover:bg-muted"),children:[e.jsx(ir,{className:"h-8 w-8 shrink-0",children:e.jsx(rr,{className:Q("text-xs",be.personId===D.person_id?"bg-primary-foreground/20":"bg-muted"),children:(D.nickname||D.person_name||"?").charAt(0)})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"font-medium truncate",children:D.nickname||D.person_name}),e.jsxs("div",{className:Q("text-xs truncate",be.personId===D.person_id?"text-primary-foreground/70":"text-muted-foreground"),children:["ID: ",D.user_id,D.is_known&&" · 已认识"]})]})]},D.person_id))})})})]}),be.personId&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(y,{children:"虚拟群名(可选)"}),e.jsx(ce,{placeholder:"WebUI虚拟群聊",value:be.groupName,onChange:D=>A(De=>({...De,groupName:D.target.value}))}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦会认为这是一个名为此名称的群聊"})]})]}),e.jsxs(xs,{className:"gap-2 sm:gap-0",children:[e.jsx(b,{variant:"outline",onClick:()=>z(!1),children:"取消"}),e.jsx(b,{onClick:ts,disabled:!be.platform||!be.personId,children:"创建对话"})]})]})}),e.jsx("div",{className:"shrink-0 border-b bg-muted/30",children:e.jsx("div",{className:"max-w-4xl mx-auto px-2 sm:px-4",children:e.jsxs("div",{className:"flex items-center gap-1 overflow-x-auto py-1.5 scrollbar-thin",children:[c.map(D=>e.jsxs("button",{onClick:()=>js(D.id),className:Q("flex items-center gap-1.5 px-3 py-1.5 rounded-md text-sm whitespace-nowrap transition-colors","hover:bg-muted",h===D.id?"bg-background shadow-sm border":"text-muted-foreground"),children:[D.type==="webui"?e.jsx(cn,{className:"h-3.5 w-3.5"}):e.jsx(yu,{className:"h-3.5 w-3.5"}),e.jsx("span",{className:"max-w-[100px] truncate",children:D.label}),e.jsx("span",{className:Q("w-1.5 h-1.5 rounded-full",D.isConnected?"bg-green-500":"bg-muted-foreground/50")}),D.id!=="webui-default"&&e.jsx("button",{onClick:De=>As(D.id,De),className:"ml-0.5 p-0.5 rounded hover:bg-muted-foreground/20",children:e.jsx(on,{className:"h-3 w-3"})})]},D.id)),e.jsx("button",{onClick:Fe,className:"flex items-center gap-1 px-2 py-1.5 rounded-md text-sm text-muted-foreground hover:bg-muted hover:text-foreground transition-colors",title:"新建虚拟身份对话",children:e.jsx(hs,{className:"h-3.5 w-3.5"})})]})})}),e.jsx("div",{className:"shrink-0 border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:e.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 sm:gap-3 min-w-0",children:[e.jsx(ir,{className:"h-8 w-8 sm:h-10 sm:w-10 shrink-0",children:e.jsx(rr,{className:"bg-primary/10 text-primary",children:e.jsx(ar,{className:"h-4 w-4 sm:h-5 sm:w-5"})})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h1",{className:"text-base sm:text-lg font-semibold truncate",children:f?.sessionInfo.bot_name||"麦麦"}),e.jsx("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:f?.isConnected?e.jsxs(e.Fragment,{children:[e.jsx(Ty,{className:"h-3 w-3 text-green-500"}),e.jsx("span",{className:"text-green-600 dark:text-green-400",children:"已连接"})]}):N?e.jsxs(e.Fragment,{children:[e.jsx(Ss,{className:"h-3 w-3 animate-spin"}),e.jsx("span",{children:"连接中..."})]}):e.jsxs(e.Fragment,{children:[e.jsx(Ey,{className:"h-3 w-3 text-red-500"}),e.jsx("span",{className:"text-red-600 dark:text-red-400",children:"未连接"})]})})]})]}),e.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[C&&e.jsx(Ss,{className:"h-4 w-4 animate-spin text-muted-foreground"}),e.jsx(b,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:Pe,disabled:N,title:"重新连接",children:e.jsx(ws,{className:Q("h-4 w-4",N&&"animate-spin")})})]})]}),e.jsx("div",{className:"hidden sm:flex items-center gap-2 mt-2 text-sm text-muted-foreground",children:f?.type==="virtual"&&f.virtualConfig?e.jsxs(e.Fragment,{children:[e.jsx(yu,{className:"h-3 w-3 text-primary"}),e.jsx("span",{children:"虚拟身份:"}),e.jsx("span",{className:"font-medium text-primary",children:f.virtualConfig.userName}),e.jsxs("span",{className:"text-xs",children:["(",f.virtualConfig.platform,")"]}),f.virtualConfig.groupName&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"mx-1",children:"·"}),e.jsxs("span",{className:"text-xs",children:["群:",f.virtualConfig.groupName]})]})]}):e.jsxs(e.Fragment,{children:[e.jsx(Ic,{className:"h-3 w-3"}),e.jsx("span",{children:"当前身份:"}),F?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ce,{value:O,onChange:D=>K(D.target.value),onKeyDown:D=>{D.key==="Enter"&&Bt(),D.key==="Escape"&&re()},className:"h-7 w-32",placeholder:"输入昵称",autoFocus:!0}),e.jsx(b,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:Bt,children:"保存"}),e.jsx(b,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:re,children:"取消"})]}):e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"font-medium text-foreground",children:w}),e.jsx(b,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0",onClick:Ut,title:"修改昵称",children:e.jsx(zy,{className:"h-3 w-3"})})]})]})})]})}),e.jsx("div",{className:"flex-1 overflow-hidden",children:e.jsx(st,{className:"h-full",children:e.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto space-y-3 sm:space-y-4",children:[f?.messages.length===0&&!C&&e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-muted-foreground",children:[e.jsx(ar,{className:"h-12 w-12 mb-4 opacity-50"}),e.jsxs("p",{className:"text-sm",children:["开始与 ",f?.sessionInfo.bot_name||"麦麦"," 对话吧!"]})]}),f?.messages.map(D=>e.jsxs("div",{className:Q("flex gap-2 sm:gap-3",D.type==="user"&&"flex-row-reverse",D.type==="system"&&"justify-center",D.type==="error"&&"justify-center"),children:[D.type==="system"&&e.jsx("div",{className:"text-xs text-muted-foreground bg-muted/50 px-3 py-1 rounded-full max-w-[90%]",children:D.content}),D.type==="error"&&e.jsx("div",{className:"text-xs text-red-600 dark:text-red-400 bg-red-100 dark:bg-red-900/30 px-3 py-1 rounded-full max-w-[90%]",children:D.content}),(D.type==="user"||D.type==="bot")&&e.jsxs(e.Fragment,{children:[e.jsx(ir,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:e.jsx(rr,{className:Q("text-xs",D.type==="bot"?"bg-primary/10 text-primary":"bg-secondary text-secondary-foreground"),children:D.type==="bot"?e.jsx(ar,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}):e.jsx(Ic,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),e.jsxs("div",{className:Q("flex flex-col gap-1 max-w-[75%] sm:max-w-[70%]",D.type==="user"&&"items-end"),children:[e.jsxs("div",{className:"flex items-center gap-2 text-[10px] sm:text-xs text-muted-foreground",children:[e.jsx("span",{className:"hidden sm:inline",children:D.sender?.name||(D.type==="bot"?f?.sessionInfo.bot_name:w)}),e.jsx("span",{children:ke(D.timestamp)})]}),e.jsx("div",{className:Q("rounded-2xl px-3 py-2 text-sm whitespace-pre-wrap break-words",D.type==="bot"?"bg-muted rounded-tl-sm":"bg-primary text-primary-foreground rounded-tr-sm"),children:D.content})]})]})]},D.id)),f?.isTyping&&e.jsxs("div",{className:"flex gap-2 sm:gap-3",children:[e.jsx(ir,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:e.jsx(rr,{className:"bg-primary/10 text-primary",children:e.jsx(ar,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),e.jsx("div",{className:"bg-muted rounded-2xl rounded-tl-sm px-4 py-3",children:e.jsxs("div",{className:"flex gap-1",children:[e.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"0ms"}}),e.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"150ms"}}),e.jsx("span",{className:"w-2 h-2 bg-muted-foreground/50 rounded-full animate-bounce",style:{animationDelay:"300ms"}})]})})]}),e.jsx("div",{ref:te})]})})}),e.jsx("div",{className:"shrink-0 border-t bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:e.jsx("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ce,{value:j,onChange:D=>p(D.target.value),onKeyDown:Xe,placeholder:f?.isConnected?"输入消息...":"等待连接...",disabled:!f?.isConnected,className:"flex-1 h-10 sm:h-10"}),e.jsx(b,{onClick:tt,disabled:!f?.isConnected||!j.trim(),size:"icon",className:"h-10 w-10 shrink-0",children:e.jsx(Ay,{className:"h-4 w-4"})})]})})})]})}function w2(){const n=fa(),[r,c]=u.useState(!0);return u.useEffect(()=>{let d=!1;return(async()=>{try{const x=await Qu();!d&&!x&&n({to:"/auth"})}catch{d||n({to:"/auth"})}finally{d||c(!1)}})(),()=>{d=!0}},[n]),{checking:r}}async function _2(){return await Qu()}const S2=si("pointer-events-none inline-flex select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono font-medium opacity-100",{variants:{size:{sm:"h-5 text-[10px]",default:"h-6 text-xs",lg:"h-7 text-sm"}},defaultVariants:{size:"default"}}),Rg=u.forwardRef(({className:n,size:r,abbrTitle:c,children:d,...h},x)=>e.jsx("kbd",{className:Q(S2({size:r,className:n})),ref:x,...h,children:c?e.jsx("abbr",{title:c,children:d}):d}));Rg.displayName="Kbd";const C2=[{icon:to,title:"首页",description:"查看仪表板概览",path:"/",category:"概览"},{icon:Da,title:"麦麦主程序配置",description:"配置麦麦的核心设置",path:"/config/bot",category:"配置"},{icon:cg,title:"麦麦模型提供商配置",description:"配置模型提供商",path:"/config/modelProvider",category:"配置"},{icon:og,title:"麦麦模型配置",description:"配置模型参数",path:"/config/model",category:"配置"},{icon:Bu,title:"表情包管理",description:"管理麦麦的表情包",path:"/resource/emoji",category:"资源"},{icon:cn,title:"表达方式管理",description:"管理麦麦的表达方式",path:"/resource/expression",category:"资源"},{icon:dg,title:"人物信息管理",description:"管理人物信息",path:"/resource/person",category:"资源"},{icon:My,title:"统计信息",description:"查看使用统计",path:"/statistics",category:"监控"},{icon:rn,title:"插件市场",description:"浏览和安装插件",path:"/plugins",category:"扩展"},{icon:Hu,title:"日志查看器",description:"查看系统日志",path:"/logs",category:"监控"},{icon:ai,title:"系统设置",description:"配置系统参数",path:"/settings",category:"系统"}];function k2({open:n,onOpenChange:r}){const[c,d]=u.useState(""),[h,x]=u.useState(0),f=fa(),j=C2.filter(v=>v.title.toLowerCase().includes(c.toLowerCase())||v.description.toLowerCase().includes(c.toLowerCase())||v.category.toLowerCase().includes(c.toLowerCase()));u.useEffect(()=>{n&&(d(""),x(0))},[n]);const p=u.useCallback(v=>{f({to:v}),r(!1)},[f,r]),N=u.useCallback(v=>{v.key==="ArrowDown"?(v.preventDefault(),x(C=>(C+1)%j.length)):v.key==="ArrowUp"?(v.preventDefault(),x(C=>(C-1+j.length)%j.length)):v.key==="Enter"&&j[h]&&(v.preventDefault(),p(j[h].path))},[j,h,p]);return e.jsx(Jt,{open:n,onOpenChange:r,children:e.jsxs($t,{className:"max-w-2xl p-0 gap-0",children:[e.jsxs(Qt,{className:"px-4 pt-4 pb-0",children:[e.jsx(Yt,{className:"sr-only",children:"搜索"}),e.jsxs("div",{className:"relative",children:[e.jsx(zs,{className:"absolute left-3 top-1/2 h-5 w-5 -translate-y-1/2 text-muted-foreground"}),e.jsx(ce,{value:c,onChange:v=>{d(v.target.value),x(0)},onKeyDown:N,placeholder:"搜索页面...",className:"h-12 pl-11 text-base border-0 focus-visible:ring-0 shadow-none",autoFocus:!0})]})]}),e.jsx("div",{className:"border-t",children:e.jsx(st,{className:"h-[400px]",children:j.length>0?e.jsx("div",{className:"p-2",children:j.map((v,C)=>{const S=v.icon;return e.jsxs("button",{onClick:()=>p(v.path),onMouseEnter:()=>x(C),className:Q("w-full flex items-center gap-3 px-3 py-2.5 rounded-md text-left transition-colors",C===h?"bg-accent text-accent-foreground":"hover:bg-accent/50"),children:[e.jsx(S,{className:"h-5 w-5 flex-shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-sm",children:v.title}),e.jsx("div",{className:"text-xs text-muted-foreground truncate",children:v.description})]}),e.jsx("div",{className:"text-xs text-muted-foreground px-2 py-1 bg-muted rounded",children:v.category})]},v.path)})}):e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[e.jsx(zs,{className:"h-12 w-12 text-muted-foreground/50 mb-4"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:c?"未找到匹配的页面":"输入关键词开始搜索"})]})})}),e.jsx("div",{className:"border-t px-4 py-3 flex items-center justify-between text-xs text-muted-foreground",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↑"}),e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↓"}),"导航"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Enter"}),"选择"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Esc"}),"关闭"]})]})})]})})}const T2=ey,E2=ty,z2=sy,Lg=u.forwardRef(({className:n,sideOffset:r=4,...c},d)=>e.jsx(Wb,{children:e.jsx(Zp,{ref:d,sideOffset:r,className:Q("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",n),...c})}));Lg.displayName=Zp.displayName;function A2({children:n}){const{checking:r}=w2(),[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),{theme:p,setTheme:N}=Gu(),v=sb();if(u.useEffect(()=>{const F=B=>{(B.metaKey||B.ctrlKey)&&B.key==="k"&&(B.preventDefault(),j(!0))};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[]),r)return e.jsx("div",{className:"flex h-screen items-center justify-center bg-background",children:e.jsx("div",{className:"text-muted-foreground",children:"正在验证登录状态..."})});const C=[{title:"概览",items:[{icon:to,label:"首页",path:"/"}]},{title:"麦麦配置编辑",items:[{icon:Da,label:"麦麦主程序配置",path:"/config/bot"},{icon:cg,label:"AI模型厂商配置",path:"/config/modelProvider",tourId:"sidebar-model-provider"},{icon:og,label:"模型管理与分配",path:"/config/model",tourId:"sidebar-model-management"},{icon:$f,label:"麦麦适配器配置",path:"/config/adapter"}]},{title:"麦麦资源管理",items:[{icon:Bu,label:"表情包管理",path:"/resource/emoji"},{icon:cn,label:"表达方式管理",path:"/resource/expression"},{icon:dg,label:"人物信息管理",path:"/resource/person"},{icon:rg,label:"知识库图谱可视化",path:"/resource/knowledge-graph"}]},{title:"扩展与监控",items:[{icon:rn,label:"插件市场",path:"/plugins"},{icon:$f,label:"插件配置",path:"/plugin-config"},{icon:Hu,label:"日志查看器",path:"/logs"},{icon:cn,label:"本地聊天室",path:"/chat"}]},{title:"系统",items:[{icon:ai,label:"系统设置",path:"/settings"}]}],w=p==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":p,L=async()=>{await t0()};return e.jsx(T2,{delayDuration:300,children:e.jsxs("div",{className:"flex h-screen overflow-hidden",children:[e.jsxs("aside",{className:Q("fixed inset-y-0 left-0 z-50 flex flex-col border-r bg-card transition-all duration-300 lg:relative lg:z-0","w-64 lg:w-auto",c?"lg:w-64":"lg:w-16",h?"translate-x-0":"-translate-x-full lg:translate-x-0"),children:[e.jsx("div",{className:"flex h-16 items-center border-b px-4",children:e.jsxs("div",{className:Q("relative flex items-center justify-center flex-1 transition-all overflow-hidden","lg:flex-1",!c&&"lg:flex-none lg:w-8"),children:[e.jsxs("div",{className:Q("flex items-baseline gap-2",!c&&"lg:hidden"),children:[e.jsx("span",{className:"font-bold text-xl text-primary-gradient whitespace-nowrap",children:"MaiBot WebUI"}),e.jsx("span",{className:"text-xs text-primary/60 whitespace-nowrap",children:HN()})]}),!c&&e.jsx("span",{className:"hidden lg:block font-bold text-primary-gradient text-2xl",children:"M"})]})}),e.jsx(st,{className:Q("flex-1 overflow-x-hidden",!c&&"lg:w-16"),children:e.jsx("nav",{className:Q("p-4",!c&&"lg:p-2 lg:w-16"),children:e.jsx("ul",{className:Q("space-y-6",!c&&"lg:space-y-3 lg:w-full"),children:C.map((F,B)=>e.jsxs("li",{children:[e.jsx("div",{className:Q("px-3 h-[1.25rem]","mb-2",!c&&"lg:mb-1 lg:invisible"),children:e.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground/60 whitespace-nowrap",children:F.title})}),!c&&B>0&&e.jsx("div",{className:"hidden lg:block mb-2 border-t border-border"}),e.jsx("ul",{className:"space-y-1",children:F.items.map(O=>{const K=v({to:O.path}),H=O.icon,z=e.jsxs(e.Fragment,{children:[K&&e.jsx("div",{className:"absolute left-0 top-1/2 h-8 w-1 -translate-y-1/2 rounded-r-full bg-primary transition-opacity duration-300"}),e.jsxs("div",{className:Q("flex items-center transition-all duration-300",c?"gap-3":"gap-3 lg:gap-0"),children:[e.jsx(H,{className:Q("h-5 w-5 flex-shrink-0",K&&"text-primary"),strokeWidth:2,fill:"none"}),e.jsx("span",{className:Q("text-sm font-medium whitespace-nowrap transition-all duration-300",K&&"font-semibold",c?"opacity-100 max-w-[200px]":"opacity-100 max-w-[200px] lg:opacity-0 lg:max-w-0 lg:overflow-hidden"),children:O.label})]})]});return e.jsx("li",{className:"relative",children:e.jsxs(E2,{children:[e.jsx(z2,{asChild:!0,children:e.jsx($c,{to:O.path,"data-tour":O.tourId,className:Q("relative flex items-center rounded-lg py-2 transition-all duration-300","hover:bg-accent hover:text-accent-foreground",K?"bg-accent text-foreground":"text-muted-foreground hover:text-foreground",c?"px-3":"px-3 lg:px-0 lg:justify-center lg:w-12 lg:mx-auto"),onClick:()=>x(!1),children:z})}),!c&&e.jsx(Lg,{side:"right",className:"hidden lg:block",children:e.jsx("p",{children:O.label})})]})},O.path)})})]},F.title))})})})]}),h&&e.jsx("div",{className:"fixed inset-0 z-40 bg-black/50 lg:hidden",onClick:()=>x(!1)}),e.jsxs("div",{className:"flex flex-1 flex-col overflow-hidden",children:[e.jsxs("header",{className:"flex h-16 items-center justify-between border-b bg-card/80 backdrop-blur-md px-4 sticky top-0 z-10",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>x(!h),className:"rounded-lg p-2 hover:bg-accent lg:hidden",children:e.jsx(Dy,{className:"h-5 w-5"})}),e.jsx("button",{onClick:()=>d(!c),className:"hidden rounded-lg p-2 hover:bg-accent lg:block",title:c?"收起侧边栏":"展开侧边栏",children:e.jsx(dn,{className:Q("h-5 w-5 transition-transform",!c&&"rotate-180")})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:()=>j(!0),className:"relative hidden md:flex items-center w-64 h-9 pl-9 pr-16 bg-background/50 border rounded-md hover:bg-accent/50 transition-colors text-left",children:[e.jsx(zs,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"搜索..."}),e.jsxs(Rg,{size:"sm",className:"absolute right-2 top-1/2 -translate-y-1/2",children:[e.jsx("span",{className:"text-xs",children:"⌘"}),"K"]})]}),e.jsx(k2,{open:f,onOpenChange:j}),e.jsxs(b,{variant:"ghost",size:"sm",onClick:()=>window.open("https://docs.mai-mai.org","_blank"),className:"gap-2",title:"查看麦麦文档",children:[e.jsx(Oy,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:"麦麦文档"})]}),e.jsx("button",{onClick:F=>{ON(w==="dark"?"light":"dark",N,F)},className:"rounded-lg p-2 hover:bg-accent",title:w==="dark"?"切换到浅色模式":"切换到深色模式",children:w==="dark"?e.jsx(ag,{className:"h-5 w-5"}):e.jsx(lg,{className:"h-5 w-5"})}),e.jsx("div",{className:"h-6 w-px bg-border"}),e.jsxs(b,{variant:"ghost",size:"sm",onClick:L,className:"gap-2",title:"登出系统",children:[e.jsx(Ry,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:"登出"})]})]})]}),e.jsx("main",{className:"flex-1 overflow-hidden bg-background",children:n})]})]})})}function M2(n){const r=n.split(` -`).slice(1),c=[];for(const d of r){const h=d.trim();if(!h.startsWith("at "))continue;const x=h.match(/at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?$/);x?c.push({functionName:x[1]||"",fileName:x[2],lineNumber:x[3],columnNumber:x[4],raw:h}):c.push({functionName:"",fileName:"",lineNumber:"",columnNumber:"",raw:h})}return c}function D2({error:n,errorInfo:r}){const[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),p=n.stack?M2(n.stack):[],N=async()=>{const v=` -Error: ${n.name} -Message: ${n.message} - -Stack Trace: -${n.stack||"No stack trace available"} - -Component Stack: -${r?.componentStack||"No component stack available"} - -URL: ${window.location.href} -User Agent: ${navigator.userAgent} -Time: ${new Date().toISOString()} - `.trim();try{await navigator.clipboard.writeText(v),j(!0),setTimeout(()=>j(!1),2e3)}catch(C){console.error("Failed to copy:",C)}};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(cl,{variant:"destructive",className:"border-red-500/50 bg-red-500/10",children:[e.jsx(ya,{className:"h-4 w-4"}),e.jsxs(ol,{className:"font-mono text-sm",children:[e.jsxs("span",{className:"font-semibold",children:[n.name,":"]})," ",n.message]})]}),p.length>0&&e.jsxs(Ru,{open:c,onOpenChange:d,children:[e.jsx(Lu,{asChild:!0,children:e.jsxs(b,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[e.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[e.jsx(Ly,{className:"h-4 w-4"}),"Stack Trace (",p.length," frames)"]}),c?e.jsx(ur,{className:"h-4 w-4"}):e.jsx(Rl,{className:"h-4 w-4"})]})}),e.jsx(Uu,{children:e.jsx(st,{className:"h-[280px] rounded-md border bg-muted/30",children:e.jsx("div",{className:"p-3 space-y-1",children:p.map((v,C)=>e.jsx("div",{className:"font-mono text-xs p-2 rounded hover:bg-muted/50 transition-colors",children:e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsxs("span",{className:"text-muted-foreground w-6 text-right flex-shrink-0",children:[C+1,"."]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("span",{className:"text-primary font-medium",children:v.functionName}),v.fileName&&e.jsxs("div",{className:"text-muted-foreground mt-0.5 break-all",children:[v.fileName,v.lineNumber&&e.jsxs("span",{className:"text-yellow-600 dark:text-yellow-400",children:[":",v.lineNumber,":",v.columnNumber]})]})]})]})},C))})})})]}),r?.componentStack&&e.jsxs(Ru,{open:h,onOpenChange:x,children:[e.jsx(Lu,{asChild:!0,children:e.jsxs(b,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[e.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[e.jsx(ya,{className:"h-4 w-4"}),"Component Stack"]}),h?e.jsx(ur,{className:"h-4 w-4"}):e.jsx(Rl,{className:"h-4 w-4"})]})}),e.jsx(Uu,{children:e.jsx(st,{className:"h-[200px] rounded-md border bg-muted/30",children:e.jsx("pre",{className:"p-3 font-mono text-xs whitespace-pre-wrap text-muted-foreground",children:r.componentStack})})})]}),e.jsx(b,{variant:"outline",size:"sm",onClick:N,className:"w-full",children:f?e.jsxs(e.Fragment,{children:[e.jsx(Na,{className:"mr-2 h-4 w-4 text-green-500"}),"已复制到剪贴板"]}):e.jsxs(e.Fragment,{children:[e.jsx(Jc,{className:"mr-2 h-4 w-4"}),"复制错误信息"]})})]})}function Ug({error:n,errorInfo:r}){const c=()=>{window.location.href="/"},d=()=>{window.location.reload()};return e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background p-4",children:e.jsxs(Ye,{className:"w-full max-w-2xl shadow-lg",children:[e.jsxs(Nt,{className:"text-center pb-2",children:[e.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30 mb-4",children:e.jsx(ya,{className:"h-8 w-8 text-red-600 dark:text-red-400"})}),e.jsx(wt,{className:"text-2xl font-bold",children:"页面出现了问题"}),e.jsx(ns,{className:"text-base mt-2",children:"应用程序遇到了意外错误。您可以尝试刷新页面或返回首页。"})]}),e.jsxs(kt,{className:"space-y-4",children:[e.jsx(D2,{error:n,errorInfo:r}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 pt-2",children:[e.jsxs(b,{onClick:d,className:"flex-1",children:[e.jsx(ws,{className:"mr-2 h-4 w-4"}),"刷新页面"]}),e.jsxs(b,{onClick:c,variant:"outline",className:"flex-1",children:[e.jsx(to,{className:"mr-2 h-4 w-4"}),"返回首页"]})]}),e.jsx("p",{className:"text-xs text-center text-muted-foreground pt-2",children:"如果问题持续存在,请将错误信息复制并反馈给开发者"})]})]})})}class O2 extends u.Component{constructor(r){super(r),this.state={hasError:!1,error:null,errorInfo:null}}static getDerivedStateFromError(r){return{hasError:!0,error:r}}componentDidCatch(r,c){console.error("ErrorBoundary caught an error:",r,c),this.setState({errorInfo:c})}handleReset=()=>{this.setState({hasError:!1,error:null,errorInfo:null})};render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback:e.jsx(Ug,{error:this.state.error,errorInfo:this.state.errorInfo}):this.props.children}}function Bg({error:n}){return e.jsx(Ug,{error:n,errorInfo:null})}const wr=ab({component:()=>e.jsxs(e.Fragment,{children:[e.jsx(pp,{}),!1]}),beforeLoad:()=>{if(window.location.pathname==="/"&&!_2())throw nb({to:"/auth"})}}),R2=fs({getParentRoute:()=>wr,path:"/auth",component:s0}),L2=fs({getParentRoute:()=>wr,path:"/setup",component:v0}),ks=fs({getParentRoute:()=>wr,id:"protected",component:()=>e.jsx(A2,{children:e.jsx(pp,{})}),errorComponent:({error:n})=>e.jsx(Bg,{error:n})}),U2=fs({getParentRoute:()=>ks,path:"/",component:MN}),B2=fs({getParentRoute:()=>ks,path:"/config/bot",component:M0}),H2=fs({getParentRoute:()=>ks,path:"/config/modelProvider",component:sw}),q2=fs({getParentRoute:()=>ks,path:"/config/model",component:iw}),G2=fs({getParentRoute:()=>ks,path:"/config/adapter",component:cw}),V2=fs({getParentRoute:()=>ks,path:"/resource/emoji",component:Mw}),F2=fs({getParentRoute:()=>ks,path:"/resource/expression",component:$w}),$2=fs({getParentRoute:()=>ks,path:"/resource/person",component:t1}),Q2=fs({getParentRoute:()=>ks,path:"/resource/knowledge-graph",component:d1}),Y2=fs({getParentRoute:()=>ks,path:"/logs",component:G1}),X2=fs({getParentRoute:()=>ks,path:"/chat",component:N2}),K2=fs({getParentRoute:()=>ks,path:"/plugins",component:u2}),Z2=fs({getParentRoute:()=>ks,path:"/plugin-config",component:x2}),J2=fs({getParentRoute:()=>ks,path:"/plugin-mirrors",component:f2}),I2=fs({getParentRoute:()=>ks,path:"/settings",component:ZN}),P2=fs({getParentRoute:()=>wr,path:"*",component:wg}),W2=wr.addChildren([R2,L2,ks.addChildren([U2,B2,H2,q2,G2,V2,F2,$2,Q2,K2,Z2,J2,Y2,X2,I2]),P2]),e_=lb({routeTree:W2,defaultNotFoundComponent:wg,defaultErrorComponent:({error:n})=>e.jsx(Bg,{error:n})});function t_({children:n,defaultTheme:r="system",storageKey:c="ui-theme",...d}){const[h,x]=u.useState(()=>localStorage.getItem(c)||r);u.useEffect(()=>{const j=window.document.documentElement;if(j.classList.remove("light","dark"),h==="system"){const p=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";j.classList.add(p);return}j.classList.add(h)},[h]),u.useEffect(()=>{const j=localStorage.getItem("accent-color");if(j){const p=document.documentElement,v={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[j];v&&(p.style.setProperty("--primary",v.hsl),v.gradient?(p.style.setProperty("--primary-gradient",v.gradient),p.classList.add("has-gradient")):(p.style.removeProperty("--primary-gradient"),p.classList.remove("has-gradient")))}},[]);const f={theme:h,setTheme:j=>{localStorage.setItem(c,j),x(j)}};return e.jsx(gg.Provider,{...d,value:f,children:n})}function s_({children:n,defaultEnabled:r=!0,defaultWavesEnabled:c=!0,storageKey:d="enable-animations",wavesStorageKey:h="enable-waves-background"}){const[x,f]=u.useState(()=>{const v=localStorage.getItem(d);return v!==null?v==="true":r}),[j,p]=u.useState(()=>{const v=localStorage.getItem(h);return v!==null?v==="true":c});u.useEffect(()=>{const v=document.documentElement;x?v.classList.remove("no-animations"):v.classList.add("no-animations"),localStorage.setItem(d,String(x))},[x,d]),u.useEffect(()=>{localStorage.setItem(h,String(j))},[j,h]);const N={enableAnimations:x,setEnableAnimations:f,enableWavesBackground:j,setEnableWavesBackground:p};return e.jsx(jg.Provider,{value:N,children:n})}const a_=ay,Hg=u.forwardRef(({className:n,...r},c)=>e.jsx(Jp,{ref:c,className:Q("fixed bottom-0 right-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:max-w-[420px] gap-2",n),...r}));Hg.displayName=Jp.displayName;const l_=si("group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-slide-in-from-right data-[state=open]:animate-fade-in data-[state=closed]:animate-slide-out-to-right data-[state=closed]:animate-fade-out data-[swipe=end]:animate-slide-out-to-right",{variants:{variant:{default:"border bg-primary/5 text-foreground backdrop-blur-sm",destructive:"destructive group border-destructive bg-destructive/10 text-destructive-foreground backdrop-blur-sm"}},defaultVariants:{variant:"default"}}),qg=u.forwardRef(({className:n,variant:r,...c},d)=>e.jsx(Ip,{ref:d,className:Q(l_({variant:r}),n),...c}));qg.displayName=Ip.displayName;const n_=u.forwardRef(({className:n,...r},c)=>e.jsx(Pp,{ref:c,className:Q("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",n),...r}));n_.displayName=Pp.displayName;const Gg=u.forwardRef(({className:n,...r},c)=>e.jsx(Wp,{ref:c,className:Q("absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",n),"toast-close":"",...r,children:e.jsx(on,{className:"h-4 w-4"})}));Gg.displayName=Wp.displayName;const Vg=u.forwardRef(({className:n,...r},c)=>e.jsx(eg,{ref:c,className:Q("text-sm font-semibold [&+div]:text-xs",n),...r}));Vg.displayName=eg.displayName;const Fg=u.forwardRef(({className:n,...r},c)=>e.jsx(tg,{ref:c,className:Q("text-sm opacity-90",n),...r}));Fg.displayName=tg.displayName;function i_(){const{toasts:n}=Xt();return e.jsxs(a_,{children:[n.map(function({id:r,title:c,description:d,action:h,...x}){return e.jsxs(qg,{...x,children:[e.jsxs("div",{className:"grid gap-1",children:[c&&e.jsx(Vg,{children:c}),d&&e.jsx(Fg,{children:d})]}),h,e.jsx(Gg,{})]},r)}),e.jsx(Hg,{})]})}yN.createRoot(document.getElementById("root")).render(e.jsx(u.StrictMode,{children:e.jsx(O2,{children:e.jsx(t_,{defaultTheme:"system",children:e.jsx(s_,{children:e.jsxs(I0,{children:[e.jsx(ib,{router:e_}),e.jsx(ew,{}),e.jsx(i_,{})]})})})})})); diff --git a/webui/dist/assets/index-DuFwC87p.js b/webui/dist/assets/index-DuFwC87p.js new file mode 100644 index 00000000..ee71a6a6 --- /dev/null +++ b/webui/dist/assets/index-DuFwC87p.js @@ -0,0 +1,52 @@ +import{r as u,j as e,L as Yc,e as ga,b as lN,f as nN,g as iN,h as rN,k as ft,l as cN,m as oN,O as vp,n as dN}from"./router-CWhjJi2n.js";import{a as uN,b as mN,g as hN}from"./react-vendor-Dtc2IqVY.js";import{I as xN,c as fN,J as ci,K as Bc,L as vu,M as pN,N as tr,O as ar,P as gN,n as Nu}from"./utils-CCeOswSm.js";import{L as Np,T as bp,C as yp,R as jN,a as wp,V as vN,b as NN,S as _p,c as bN,d as Sp,I as yN,e as Cp,f as wN,g as kp,h as _N,i as SN,j as CN,O as Tp,P as kN,k as Ep,l as zp,D as Ap,A as Mp,m as Dp,n as TN,o as EN,p as Op,q as zN,r as Rp,s as AN,t as MN,u as DN,v as ON,w as RN,x as Lp,y as Up,F as Bp}from"./radix-extra-BM7iD6Dt.js";import{aj as LN,ak as UN,al as BN,am as HN,an as Hc,ao as qc,ap as lr,aq as qN,ar as bu,as as Gc,at as GN,au as VN,av as FN}from"./charts-Dhri-zxi.js";import{S as $N,G as Hp,O as qp,o as QN,C as Gp,p as YN,T as Vp,D as Fp,R as XN,q as KN,H as $p,I as JN,J as Qp,K as Yp,L as ZN,M as Xp,V as IN,N as Kp,Q as Jp,U as PN,X as WN,Y as Zp,Z as eb,_ as sb,$ as Ip,a0 as tb,a1 as ab,a2 as Pp,a3 as lb,a4 as nb,a5 as ib,a6 as Wp,a7 as eg,a8 as sg,a9 as tg,aa as ag,ab as lg,ac as rb}from"./radix-core-C3XKqQJw.js";import{R as Ct,P as br,C as fa,a as Oa,Z as cn,b as Zc,F as Da,c as cb,S as oi,A as ob,D as db,d as Ic,e as li,M as un,T as ub,X as dl,f as mb,g as hb,I as Ra,h as ya,i as sa,j as Pc,E as xr,k as Dt,l as ng,H as xb,m as ls,n as rl,U as fr,o as ig,p as rg,L as $f,K as cg,q as og,r as fb,s as Xc,t as kt,u as pb,B as cr,v as Wc,w as Gu,x as gb,y as jb,z as zt,G as ao,J as ii,N as Bl,O as pr,Q as yr,V as vb,W as Nb,Y as xt,_ as Vu,$ as on,a0 as di,a1 as Hl,a2 as ul,a3 as ui,a4 as Fu,a5 as bb,a6 as yb,a7 as wb,a8 as dn,a9 as _b,aa as dg,ab as Mu,ac as mn,ad as Sb,ae as ri,af as Cb,ag as Du,ah as Ou,ai as ug,aj as Qf,ak as kb,al as Tb,am as Eb,an as Ul,ao as yu,ap as Yf,aq as zb,ar as wu,as as Ab,at as Mb,au as Db,av as Ob,aw as mg,ax as hg,ay as xg,az as Rb,aA as Xf,aB as Lb,aC as Ub,aD as Bb,aE as Hb}from"./icons-DUfC2NKX.js";import{S as qb,p as Gb,j as Vb,a as Fb,E as Kf,R as $b,o as Qb}from"./codemirror-BHeANvwm.js";import{_ as $t,c as Yb,g as fg,D as Xb}from"./misc-DyBU7ISD.js";import{u as Kb,a as Jf,D as Jb,c as Zb,S as Ib,h as Pb,b as Wb,s as ey,K as sy,P as ty,d as ay,C as ly}from"./dnd-Dyi3CnuX.js";import{D as ny,U as iy}from"./uppy-BHC3OXBx.js";import{M as ry,r as cy,a as oy,b as dy}from"./markdown-A1ShuLvG.js";import{r as uy,H as eo,P as so,u as my,a as hy,R as xy,B as fy,b as py,C as gy,M as jy,c as vy}from"./reactflow-B3n3_Vkw.js";(function(){const i=document.createElement("link").relList;if(i&&i.supports&&i.supports("modulepreload"))return;for(const h of document.querySelectorAll('link[rel="modulepreload"]'))d(h);new MutationObserver(h=>{for(const x of h)if(x.type==="childList")for(const f of x.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&d(f)}).observe(document,{childList:!0,subtree:!0});function c(h){const x={};return h.integrity&&(x.integrity=h.integrity),h.referrerPolicy&&(x.referrerPolicy=h.referrerPolicy),h.crossOrigin==="use-credentials"?x.credentials="include":h.crossOrigin==="anonymous"?x.credentials="omit":x.credentials="same-origin",x}function d(h){if(h.ep)return;h.ep=!0;const x=c(h);fetch(h.href,x)}})();var _u={exports:{}},nr={},Su={exports:{}},Cu={};var Zf;function Ny(){return Zf||(Zf=1,(function(n){function i(z,X){var k=z.length;z.push(X);e:for(;0>>1,_=z[se];if(0>>1;seh(ae,k))fe<_&&0>h(Ne,ae)?(z[se]=Ne,z[fe]=k,se=fe):(z[se]=ae,z[ie]=k,se=ie);else if(fe<_&&0>h(Ne,k))z[se]=Ne,z[fe]=k,se=fe;else break e}}return X}function h(z,X){var k=z.sortIndex-X.sortIndex;return k!==0?k:z.id-X.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var x=performance;n.unstable_now=function(){return x.now()}}else{var f=Date,j=f.now();n.unstable_now=function(){return f.now()-j}}var p=[],w=[],v=1,y=null,S=3,C=!1,M=!1,F=!1,U=!1,O=typeof setTimeout=="function"?setTimeout:null,K=typeof clearTimeout=="function"?clearTimeout:null,H=typeof setImmediate<"u"?setImmediate:null;function A(z){for(var X=c(w);X!==null;){if(X.callback===null)d(w);else if(X.startTime<=z)d(w),X.sortIndex=X.expirationTime,i(p,X);else break;X=c(w)}}function V(z){if(F=!1,A(z),!M)if(c(p)!==null)M=!0,Q||(Q=!0,Se());else{var X=c(w);X!==null&&be(V,X.startTime-z)}}var Q=!1,T=-1,D=5,ne=-1;function xe(){return U?!0:!(n.unstable_now()-nez&&xe());){var se=y.callback;if(typeof se=="function"){y.callback=null,S=y.priorityLevel;var _=se(y.expirationTime<=z);if(z=n.unstable_now(),typeof _=="function"){y.callback=_,A(z),X=!0;break s}y===c(p)&&d(p),A(z)}else d(p);y=c(p)}if(y!==null)X=!0;else{var ue=c(w);ue!==null&&be(V,ue.startTime-z),X=!1}}break e}finally{y=null,S=k,C=!1}X=void 0}}finally{X?Se():Q=!1}}}var Se;if(typeof H=="function")Se=function(){H(_e)};else if(typeof MessageChannel<"u"){var ge=new MessageChannel,ye=ge.port2;ge.port1.onmessage=_e,Se=function(){ye.postMessage(null)}}else Se=function(){O(_e,0)};function be(z,X){T=O(function(){z(n.unstable_now())},X)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(z){z.callback=null},n.unstable_forceFrameRate=function(z){0>z||125se?(z.sortIndex=k,i(w,z),c(p)===null&&z===c(w)&&(F?(K(T),T=-1):F=!0,be(V,k-se))):(z.sortIndex=_,i(p,z),M||C||(M=!0,Q||(Q=!0,Se()))),z},n.unstable_shouldYield=xe,n.unstable_wrapCallback=function(z){var X=S;return function(){var k=S;S=X;try{return z.apply(this,arguments)}finally{S=k}}}})(Cu)),Cu}var If;function by(){return If||(If=1,Su.exports=Ny()),Su.exports}var Pf;function yy(){if(Pf)return nr;Pf=1;var n=by(),i=uN(),c=mN();function d(s){var t="https://react.dev/errors/"+s;if(1_||(s.current=se[_],se[_]=null,_--)}function ae(s,t){_++,se[_]=s.current,s.current=t}var fe=ue(null),Ne=ue(null),me=ue(null),G=ue(null);function P(s,t){switch(ae(me,t),ae(Ne,s),ae(fe,null),t.nodeType){case 9:case 11:s=(s=t.documentElement)&&(s=s.namespaceURI)?hf(s):0;break;default:if(s=t.tagName,t=t.namespaceURI)t=hf(t),s=xf(t,s);else switch(s){case"svg":s=1;break;case"math":s=2;break;default:s=0}}ie(fe),ae(fe,s)}function B(){ie(fe),ie(Ne),ie(me)}function W(s){s.memoizedState!==null&&ae(G,s);var t=fe.current,a=xf(t,s.type);t!==a&&(ae(Ne,s),ae(fe,a))}function Ce(s){Ne.current===s&&(ie(fe),ie(Ne)),G.current===s&&(ie(G),Pi._currentValue=k)}var Me,re;function De(s){if(Me===void 0)try{throw Error()}catch(a){var t=a.stack.trim().match(/\n( *(at )?)/);Me=t&&t[1]||"",re=-1)":-1r||E[l]!==Z[r]){var ce=` +`+E[l].replace(" at new "," at ");return s.displayName&&ce.includes("")&&(ce=ce.replace("",s.displayName)),ce}while(1<=l&&0<=r);break}}}finally{Vs=!1,Error.prepareStackTrace=a}return(a=s?s.displayName||s.name:"")?De(a):""}function de(s,t){switch(s.tag){case 26:case 27:case 5:return De(s.type);case 16:return De("Lazy");case 13:return s.child!==t&&t!==null?De("Suspense Fallback"):De("Suspense");case 19:return De("SuspenseList");case 0:case 15:return Qs(s.type,!1);case 11:return Qs(s.type.render,!1);case 1:return Qs(s.type,!0);case 31:return De("Activity");default:return""}}function Ee(s){try{var t="",a=null;do t+=de(s,a),a=s,s=s.return;while(s);return t}catch(l){return` +Error generating stack: `+l.message+` +`+l.stack}}var ts=Object.prototype.hasOwnProperty,Ke=n.unstable_scheduleCallback,lt=n.unstable_cancelCallback,Ot=n.unstable_shouldYield,bt=n.unstable_requestPaint,Pe=n.unstable_now,R=n.unstable_getCurrentPriorityLevel,Re=n.unstable_ImmediatePriority,ze=n.unstable_UserBlockingPriority,$e=n.unstable_NormalPriority,Es=n.unstable_LowPriority,We=n.unstable_IdlePriority,nt=n.log,vs=n.unstable_setDisableYieldValue,ke=null,ve=null;function ns(s){if(typeof nt=="function"&&vs(s),ve&&typeof ve.setStrictMode=="function")try{ve.setStrictMode(ke,s)}catch{}}var _s=Math.clz32?Math.clz32:Ys,At=Math.log,Ps=Math.LN2;function Ys(s){return s>>>=0,s===0?32:31-(At(s)/Ps|0)|0}var Et=256,Rt=262144,Ha=4194304;function Qt(s){var t=s&42;if(t!==0)return t;switch(s&-s){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:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return s&261888;case 262144:case 524288:case 1048576:case 2097152:return s&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return s&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return s}}function qa(s,t,a){var l=s.pendingLanes;if(l===0)return 0;var r=0,o=s.suspendedLanes,m=s.pingedLanes;s=s.warmLanes;var g=l&134217727;return g!==0?(l=g&~o,l!==0?r=Qt(l):(m&=g,m!==0?r=Qt(m):a||(a=g&~s,a!==0&&(r=Qt(a))))):(g=l&~o,g!==0?r=Qt(g):m!==0?r=Qt(m):a||(a=l&~s,a!==0&&(r=Qt(a)))),r===0?0:t!==0&&t!==r&&(t&o)===0&&(o=r&-r,a=t&-t,o>=a||o===32&&(a&4194048)!==0)?t:r}function Sa(s,t){return(s.pendingLanes&~(s.suspendedLanes&~s.pingedLanes)&t)===0}function ee(s,t){switch(s){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32: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 t+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 we(){var s=Ha;return Ha<<=1,(Ha&62914560)===0&&(Ha=4194304),s}function Ge(s){for(var t=[],a=0;31>a;a++)t.push(s);return t}function pt(s,t){s.pendingLanes|=t,t!==268435456&&(s.suspendedLanes=0,s.pingedLanes=0,s.warmLanes=0)}function Yt(s,t,a,l,r,o){var m=s.pendingLanes;s.pendingLanes=a,s.suspendedLanes=0,s.pingedLanes=0,s.warmLanes=0,s.expiredLanes&=a,s.entangledLanes&=a,s.errorRecoveryDisabledLanes&=a,s.shellSuspendCounter=0;var g=s.entanglements,E=s.expirationTimes,Z=s.hiddenUpdates;for(a=m&~a;0"u")return null;try{return s.activeElement||s.body}catch{return s.body}}var Pg=/[\n"\\]/g;function na(s){return s.replace(Pg,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function ho(s,t,a,l,r,o,m,g){s.name="",m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"?s.type=m:s.removeAttribute("type"),t!=null?m==="number"?(t===0&&s.value===""||s.value!=t)&&(s.value=""+la(t)):s.value!==""+la(t)&&(s.value=""+la(t)):m!=="submit"&&m!=="reset"||s.removeAttribute("value"),t!=null?xo(s,m,la(t)):a!=null?xo(s,m,la(a)):l!=null&&s.removeAttribute("value"),r==null&&o!=null&&(s.defaultChecked=!!o),r!=null&&(s.checked=r&&typeof r!="function"&&typeof r!="symbol"),g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"?s.name=""+la(g):s.removeAttribute("name")}function im(s,t,a,l,r,o,m,g){if(o!=null&&typeof o!="function"&&typeof o!="symbol"&&typeof o!="boolean"&&(s.type=o),t!=null||a!=null){if(!(o!=="submit"&&o!=="reset"||t!=null)){mo(s);return}a=a!=null?""+la(a):"",t=t!=null?""+la(t):a,g||t===s.value||(s.value=t),s.defaultValue=t}l=l??r,l=typeof l!="function"&&typeof l!="symbol"&&!!l,s.checked=g?s.checked:!!l,s.defaultChecked=!!l,m!=null&&typeof m!="function"&&typeof m!="symbol"&&typeof m!="boolean"&&(s.name=m),mo(s)}function xo(s,t,a){t==="number"&&Tr(s.ownerDocument)===s||s.defaultValue===""+a||(s.defaultValue=""+a)}function yn(s,t,a,l){if(s=s.options,t){t={};for(var r=0;r"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),vo=!1;if(Fa)try{var pi={};Object.defineProperty(pi,"passive",{get:function(){vo=!0}}),window.addEventListener("test",pi,pi),window.removeEventListener("test",pi,pi)}catch{vo=!1}var xl=null,No=null,zr=null;function hm(){if(zr)return zr;var s,t=No,a=t.length,l,r="value"in xl?xl.value:xl.textContent,o=r.length;for(s=0;s=vi),vm=" ",Nm=!1;function bm(s,t){switch(s){case"keyup":return Cj.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function ym(s){return s=s.detail,typeof s=="object"&&"data"in s?s.data:null}var Cn=!1;function Tj(s,t){switch(s){case"compositionend":return ym(t);case"keypress":return t.which!==32?null:(Nm=!0,vm);case"textInput":return s=t.data,s===vm&&Nm?null:s;default:return null}}function Ej(s,t){if(Cn)return s==="compositionend"||!So&&bm(s,t)?(s=hm(),zr=No=xl=null,Cn=!1,s):null;switch(s){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:a,offset:t-s};s=l}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=zm(a)}}function Mm(s,t){return s&&t?s===t?!0:s&&s.nodeType===3?!1:t&&t.nodeType===3?Mm(s,t.parentNode):"contains"in s?s.contains(t):s.compareDocumentPosition?!!(s.compareDocumentPosition(t)&16):!1:!1}function Dm(s){s=s!=null&&s.ownerDocument!=null&&s.ownerDocument.defaultView!=null?s.ownerDocument.defaultView:window;for(var t=Tr(s.document);t instanceof s.HTMLIFrameElement;){try{var a=typeof t.contentWindow.location.href=="string"}catch{a=!1}if(a)s=t.contentWindow;else break;t=Tr(s.document)}return t}function To(s){var t=s&&s.nodeName&&s.nodeName.toLowerCase();return t&&(t==="input"&&(s.type==="text"||s.type==="search"||s.type==="tel"||s.type==="url"||s.type==="password")||t==="textarea"||s.contentEditable==="true")}var Uj=Fa&&"documentMode"in document&&11>=document.documentMode,kn=null,Eo=null,wi=null,zo=!1;function Om(s,t,a){var l=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;zo||kn==null||kn!==Tr(l)||(l=kn,"selectionStart"in l&&To(l)?l={start:l.selectionStart,end:l.selectionEnd}:(l=(l.ownerDocument&&l.ownerDocument.defaultView||window).getSelection(),l={anchorNode:l.anchorNode,anchorOffset:l.anchorOffset,focusNode:l.focusNode,focusOffset:l.focusOffset}),wi&&yi(wi,l)||(wi=l,l=wc(Eo,"onSelect"),0>=m,r-=m,ka=1<<32-_s(t)+r|a<as?(js=Oe,Oe=null):js=Oe.sibling;var Cs=I(q,Oe,J[as],he);if(Cs===null){Oe===null&&(Oe=js);break}s&&Oe&&Cs.alternate===null&&t(q,Oe),L=o(Cs,L,as),Ss===null?Be=Cs:Ss.sibling=Cs,Ss=Cs,Oe=js}if(as===J.length)return a(q,Oe),bs&&Qa(q,as),Be;if(Oe===null){for(;asas?(js=Oe,Oe=null):js=Oe.sibling;var Ll=I(q,Oe,Cs.value,he);if(Ll===null){Oe===null&&(Oe=js);break}s&&Oe&&Ll.alternate===null&&t(q,Oe),L=o(Ll,L,as),Ss===null?Be=Ll:Ss.sibling=Ll,Ss=Ll,Oe=js}if(Cs.done)return a(q,Oe),bs&&Qa(q,as),Be;if(Oe===null){for(;!Cs.done;as++,Cs=J.next())Cs=pe(q,Cs.value,he),Cs!==null&&(L=o(Cs,L,as),Ss===null?Be=Cs:Ss.sibling=Cs,Ss=Cs);return bs&&Qa(q,as),Be}for(Oe=l(Oe);!Cs.done;as++,Cs=J.next())Cs=te(Oe,q,as,Cs.value,he),Cs!==null&&(s&&Cs.alternate!==null&&Oe.delete(Cs.key===null?as:Cs.key),L=o(Cs,L,as),Ss===null?Be=Cs:Ss.sibling=Cs,Ss=Cs);return s&&Oe.forEach(function(aN){return t(q,aN)}),bs&&Qa(q,as),Be}function Rs(q,L,J,he){if(typeof J=="object"&&J!==null&&J.type===F&&J.key===null&&(J=J.props.children),typeof J=="object"&&J!==null){switch(J.$$typeof){case C:e:{for(var Be=J.key;L!==null;){if(L.key===Be){if(Be=J.type,Be===F){if(L.tag===7){a(q,L.sibling),he=r(L,J.props.children),he.return=q,q=he;break e}}else if(L.elementType===Be||typeof Be=="object"&&Be!==null&&Be.$$typeof===D&&Wl(Be)===L.type){a(q,L.sibling),he=r(L,J.props),Ei(he,J),he.return=q,q=he;break e}a(q,L);break}else t(q,L);L=L.sibling}J.type===F?(he=Kl(J.props.children,q.mode,he,J.key),he.return=q,q=he):(he=qr(J.type,J.key,J.props,null,q.mode,he),Ei(he,J),he.return=q,q=he)}return m(q);case M:e:{for(Be=J.key;L!==null;){if(L.key===Be)if(L.tag===4&&L.stateNode.containerInfo===J.containerInfo&&L.stateNode.implementation===J.implementation){a(q,L.sibling),he=r(L,J.children||[]),he.return=q,q=he;break e}else{a(q,L);break}else t(q,L);L=L.sibling}he=Uo(J,q.mode,he),he.return=q,q=he}return m(q);case D:return J=Wl(J),Rs(q,L,J,he)}if(be(J))return Ae(q,L,J,he);if(Se(J)){if(Be=Se(J),typeof Be!="function")throw Error(d(150));return J=Be.call(J),Qe(q,L,J,he)}if(typeof J.then=="function")return Rs(q,L,Xr(J),he);if(J.$$typeof===H)return Rs(q,L,Fr(q,J),he);Kr(q,J)}return typeof J=="string"&&J!==""||typeof J=="number"||typeof J=="bigint"?(J=""+J,L!==null&&L.tag===6?(a(q,L.sibling),he=r(L,J),he.return=q,q=he):(a(q,L),he=Lo(J,q.mode,he),he.return=q,q=he),m(q)):a(q,L)}return function(q,L,J,he){try{Ti=0;var Be=Rs(q,L,J,he);return Bn=null,Be}catch(Oe){if(Oe===Un||Oe===Qr)throw Oe;var Ss=Kt(29,Oe,null,q.mode);return Ss.lanes=he,Ss.return=q,Ss}finally{}}}var sn=ah(!0),lh=ah(!1),vl=!1;function Jo(s){s.updateQueue={baseState:s.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Zo(s,t){s=s.updateQueue,t.updateQueue===s&&(t.updateQueue={baseState:s.baseState,firstBaseUpdate:s.firstBaseUpdate,lastBaseUpdate:s.lastBaseUpdate,shared:s.shared,callbacks:null})}function Nl(s){return{lane:s,tag:0,payload:null,callback:null,next:null}}function bl(s,t,a){var l=s.updateQueue;if(l===null)return null;if(l=l.shared,(ks&2)!==0){var r=l.pending;return r===null?t.next=t:(t.next=r.next,r.next=t),l.pending=t,t=Hr(s),Gm(s,null,a),t}return Br(s,l,t,a),Hr(s)}function zi(s,t,a){if(t=t.updateQueue,t!==null&&(t=t.shared,(a&4194048)!==0)){var l=t.lanes;l&=s.pendingLanes,a|=l,t.lanes=a,hl(s,a)}}function Io(s,t){var a=s.updateQueue,l=s.alternate;if(l!==null&&(l=l.updateQueue,a===l)){var r=null,o=null;if(a=a.firstBaseUpdate,a!==null){do{var m={lane:a.lane,tag:a.tag,payload:a.payload,callback:null,next:null};o===null?r=o=m:o=o.next=m,a=a.next}while(a!==null);o===null?r=o=t:o=o.next=t}else r=o=t;a={baseState:l.baseState,firstBaseUpdate:r,lastBaseUpdate:o,shared:l.shared,callbacks:l.callbacks},s.updateQueue=a;return}s=a.lastBaseUpdate,s===null?a.firstBaseUpdate=t:s.next=t,a.lastBaseUpdate=t}var Po=!1;function Ai(){if(Po){var s=Ln;if(s!==null)throw s}}function Mi(s,t,a,l){Po=!1;var r=s.updateQueue;vl=!1;var o=r.firstBaseUpdate,m=r.lastBaseUpdate,g=r.shared.pending;if(g!==null){r.shared.pending=null;var E=g,Z=E.next;E.next=null,m===null?o=Z:m.next=Z,m=E;var ce=s.alternate;ce!==null&&(ce=ce.updateQueue,g=ce.lastBaseUpdate,g!==m&&(g===null?ce.firstBaseUpdate=Z:g.next=Z,ce.lastBaseUpdate=E))}if(o!==null){var pe=r.baseState;m=0,ce=Z=E=null,g=o;do{var I=g.lane&-536870913,te=I!==g.lane;if(te?(gs&I)===I:(l&I)===I){I!==0&&I===Rn&&(Po=!0),ce!==null&&(ce=ce.next={lane:0,tag:g.tag,payload:g.payload,callback:null,next:null});e:{var Ae=s,Qe=g;I=t;var Rs=a;switch(Qe.tag){case 1:if(Ae=Qe.payload,typeof Ae=="function"){pe=Ae.call(Rs,pe,I);break e}pe=Ae;break e;case 3:Ae.flags=Ae.flags&-65537|128;case 0:if(Ae=Qe.payload,I=typeof Ae=="function"?Ae.call(Rs,pe,I):Ae,I==null)break e;pe=y({},pe,I);break e;case 2:vl=!0}}I=g.callback,I!==null&&(s.flags|=64,te&&(s.flags|=8192),te=r.callbacks,te===null?r.callbacks=[I]:te.push(I))}else te={lane:I,tag:g.tag,payload:g.payload,callback:g.callback,next:null},ce===null?(Z=ce=te,E=pe):ce=ce.next=te,m|=I;if(g=g.next,g===null){if(g=r.shared.pending,g===null)break;te=g,g=te.next,te.next=null,r.lastBaseUpdate=te,r.shared.pending=null}}while(!0);ce===null&&(E=pe),r.baseState=E,r.firstBaseUpdate=Z,r.lastBaseUpdate=ce,o===null&&(r.shared.lanes=0),Cl|=m,s.lanes=m,s.memoizedState=pe}}function nh(s,t){if(typeof s!="function")throw Error(d(191,s));s.call(t)}function ih(s,t){var a=s.callbacks;if(a!==null)for(s.callbacks=null,s=0;so?o:8;var m=z.T,g={};z.T=g,gd(s,!1,t,a);try{var E=r(),Z=z.S;if(Z!==null&&Z(g,E),E!==null&&typeof E=="object"&&typeof E.then=="function"){var ce=Yj(E,l);Ri(s,t,ce,Wt(s))}else Ri(s,t,l,Wt(s))}catch(pe){Ri(s,t,{then:function(){},status:"rejected",reason:pe},Wt())}finally{X.p=o,m!==null&&g.types!==null&&(m.types=g.types),z.T=m}}function Pj(){}function fd(s,t,a,l){if(s.tag!==5)throw Error(d(476));var r=Bh(s).queue;Uh(s,r,t,k,a===null?Pj:function(){return Hh(s),a(l)})}function Bh(s){var t=s.memoizedState;if(t!==null)return t;t={memoizedState:k,baseState:k,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ja,lastRenderedState:k},next:null};var a={};return t.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Ja,lastRenderedState:a},next:null},s.memoizedState=t,s=s.alternate,s!==null&&(s.memoizedState=t),t}function Hh(s){var t=Bh(s);t.next===null&&(t=s.alternate.memoizedState),Ri(s,t.next.queue,{},Wt())}function pd(){return wt(Pi)}function qh(){return rt().memoizedState}function Gh(){return rt().memoizedState}function Wj(s){for(var t=s.return;t!==null;){switch(t.tag){case 24:case 3:var a=Wt();s=Nl(a);var l=bl(t,s,a);l!==null&&(Vt(l,t,a),zi(l,t,a)),t={cache:Qo()},s.payload=t;return}t=t.return}}function ev(s,t,a){var l=Wt();a={lane:l,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null},lc(s)?Fh(t,a):(a=Oo(s,t,a,l),a!==null&&(Vt(a,s,l),$h(a,t,l)))}function Vh(s,t,a){var l=Wt();Ri(s,t,a,l)}function Ri(s,t,a,l){var r={lane:l,revertLane:0,gesture:null,action:a,hasEagerState:!1,eagerState:null,next:null};if(lc(s))Fh(t,r);else{var o=s.alternate;if(s.lanes===0&&(o===null||o.lanes===0)&&(o=t.lastRenderedReducer,o!==null))try{var m=t.lastRenderedState,g=o(m,a);if(r.hasEagerState=!0,r.eagerState=g,Xt(g,m))return Br(s,t,r,0),Us===null&&Ur(),!1}catch{}finally{}if(a=Oo(s,t,r,l),a!==null)return Vt(a,s,l),$h(a,t,l),!0}return!1}function gd(s,t,a,l){if(l={lane:2,revertLane:Jd(),gesture:null,action:l,hasEagerState:!1,eagerState:null,next:null},lc(s)){if(t)throw Error(d(479))}else t=Oo(s,a,l,2),t!==null&&Vt(t,s,2)}function lc(s){var t=s.alternate;return s===es||t!==null&&t===es}function Fh(s,t){qn=Ir=!0;var a=s.pending;a===null?t.next=t:(t.next=a.next,a.next=t),s.pending=t}function $h(s,t,a){if((a&4194048)!==0){var l=t.lanes;l&=s.pendingLanes,a|=l,t.lanes=a,hl(s,a)}}var Li={readContext:wt,use:ec,useCallback:Ws,useContext:Ws,useEffect:Ws,useImperativeHandle:Ws,useLayoutEffect:Ws,useInsertionEffect:Ws,useMemo:Ws,useReducer:Ws,useRef:Ws,useState:Ws,useDebugValue:Ws,useDeferredValue:Ws,useTransition:Ws,useSyncExternalStore:Ws,useId:Ws,useHostTransitionStatus:Ws,useFormState:Ws,useActionState:Ws,useOptimistic:Ws,useMemoCache:Ws,useCacheRefresh:Ws};Li.useEffectEvent=Ws;var Qh={readContext:wt,use:ec,useCallback:function(s,t){return Mt().memoizedState=[s,t===void 0?null:t],s},useContext:wt,useEffect:Th,useImperativeHandle:function(s,t,a){a=a!=null?a.concat([s]):null,tc(4194308,4,Mh.bind(null,t,s),a)},useLayoutEffect:function(s,t){return tc(4194308,4,s,t)},useInsertionEffect:function(s,t){tc(4,2,s,t)},useMemo:function(s,t){var a=Mt();t=t===void 0?null:t;var l=s();if(tn){ns(!0);try{s()}finally{ns(!1)}}return a.memoizedState=[l,t],l},useReducer:function(s,t,a){var l=Mt();if(a!==void 0){var r=a(t);if(tn){ns(!0);try{a(t)}finally{ns(!1)}}}else r=t;return l.memoizedState=l.baseState=r,s={pending:null,lanes:0,dispatch:null,lastRenderedReducer:s,lastRenderedState:r},l.queue=s,s=s.dispatch=ev.bind(null,es,s),[l.memoizedState,s]},useRef:function(s){var t=Mt();return s={current:s},t.memoizedState=s},useState:function(s){s=dd(s);var t=s.queue,a=Vh.bind(null,es,t);return t.dispatch=a,[s.memoizedState,a]},useDebugValue:hd,useDeferredValue:function(s,t){var a=Mt();return xd(a,s,t)},useTransition:function(){var s=dd(!1);return s=Uh.bind(null,es,s.queue,!0,!1),Mt().memoizedState=s,[!1,s]},useSyncExternalStore:function(s,t,a){var l=es,r=Mt();if(bs){if(a===void 0)throw Error(d(407));a=a()}else{if(a=t(),Us===null)throw Error(d(349));(gs&127)!==0||mh(l,t,a)}r.memoizedState=a;var o={value:a,getSnapshot:t};return r.queue=o,Th(xh.bind(null,l,o,s),[s]),l.flags|=2048,Vn(9,{destroy:void 0},hh.bind(null,l,o,a,t),null),a},useId:function(){var s=Mt(),t=Us.identifierPrefix;if(bs){var a=Ta,l=ka;a=(l&~(1<<32-_s(l)-1)).toString(32)+a,t="_"+t+"R_"+a,a=Pr++,0<\/script>",o=o.removeChild(o.firstChild);break;case"select":o=typeof l.is=="string"?m.createElement("select",{is:l.is}):m.createElement("select"),l.multiple?o.multiple=!0:l.size&&(o.size=l.size);break;default:o=typeof l.is=="string"?m.createElement(r,{is:l.is}):m.createElement(r)}}o[Je]=t,o[Ns]=l;e:for(m=t.child;m!==null;){if(m.tag===5||m.tag===6)o.appendChild(m.stateNode);else if(m.tag!==4&&m.tag!==27&&m.child!==null){m.child.return=m,m=m.child;continue}if(m===t)break e;for(;m.sibling===null;){if(m.return===null||m.return===t)break e;m=m.return}m.sibling.return=m.return,m=m.sibling}t.stateNode=o;e:switch(St(o,r,l),r){case"button":case"input":case"select":case"textarea":l=!!l.autoFocus;break e;case"img":l=!0;break e;default:l=!1}l&&Ia(t)}}return Ks(t),Ad(t,t.type,s===null?null:s.memoizedProps,t.pendingProps,a),null;case 6:if(s&&t.stateNode!=null)s.memoizedProps!==l&&Ia(t);else{if(typeof l!="string"&&t.stateNode===null)throw Error(d(166));if(s=me.current,Dn(t)){if(s=t.stateNode,a=t.memoizedProps,l=null,r=yt,r!==null)switch(r.tag){case 27:case 5:l=r.memoizedProps}s[Je]=t,s=!!(s.nodeValue===a||l!==null&&l.suppressHydrationWarning===!0||uf(s.nodeValue,a)),s||gl(t,!0)}else s=_c(s).createTextNode(l),s[Je]=t,t.stateNode=s}return Ks(t),null;case 31:if(a=t.memoizedState,s===null||s.memoizedState!==null){if(l=Dn(t),a!==null){if(s===null){if(!l)throw Error(d(318));if(s=t.memoizedState,s=s!==null?s.dehydrated:null,!s)throw Error(d(557));s[Je]=t}else Jl(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Ks(t),s=!1}else a=Go(),s!==null&&s.memoizedState!==null&&(s.memoizedState.hydrationErrors=a),s=!0;if(!s)return t.flags&256?(Zt(t),t):(Zt(t),null);if((t.flags&128)!==0)throw Error(d(558))}return Ks(t),null;case 13:if(l=t.memoizedState,s===null||s.memoizedState!==null&&s.memoizedState.dehydrated!==null){if(r=Dn(t),l!==null&&l.dehydrated!==null){if(s===null){if(!r)throw Error(d(318));if(r=t.memoizedState,r=r!==null?r.dehydrated:null,!r)throw Error(d(317));r[Je]=t}else Jl(),(t.flags&128)===0&&(t.memoizedState=null),t.flags|=4;Ks(t),r=!1}else r=Go(),s!==null&&s.memoizedState!==null&&(s.memoizedState.hydrationErrors=r),r=!0;if(!r)return t.flags&256?(Zt(t),t):(Zt(t),null)}return Zt(t),(t.flags&128)!==0?(t.lanes=a,t):(a=l!==null,s=s!==null&&s.memoizedState!==null,a&&(l=t.child,r=null,l.alternate!==null&&l.alternate.memoizedState!==null&&l.alternate.memoizedState.cachePool!==null&&(r=l.alternate.memoizedState.cachePool.pool),o=null,l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(o=l.memoizedState.cachePool.pool),o!==r&&(l.flags|=2048)),a!==s&&a&&(t.child.flags|=8192),oc(t,t.updateQueue),Ks(t),null);case 4:return B(),s===null&&Wd(t.stateNode.containerInfo),Ks(t),null;case 10:return Xa(t.type),Ks(t),null;case 19:if(ie(it),l=t.memoizedState,l===null)return Ks(t),null;if(r=(t.flags&128)!==0,o=l.rendering,o===null)if(r)Bi(l,!1);else{if(et!==0||s!==null&&(s.flags&128)!==0)for(s=t.child;s!==null;){if(o=Zr(s),o!==null){for(t.flags|=128,Bi(l,!1),s=o.updateQueue,t.updateQueue=s,oc(t,s),t.subtreeFlags=0,s=a,a=t.child;a!==null;)Vm(a,s),a=a.sibling;return ae(it,it.current&1|2),bs&&Qa(t,l.treeForkCount),t.child}s=s.sibling}l.tail!==null&&Pe()>xc&&(t.flags|=128,r=!0,Bi(l,!1),t.lanes=4194304)}else{if(!r)if(s=Zr(o),s!==null){if(t.flags|=128,r=!0,s=s.updateQueue,t.updateQueue=s,oc(t,s),Bi(l,!0),l.tail===null&&l.tailMode==="hidden"&&!o.alternate&&!bs)return Ks(t),null}else 2*Pe()-l.renderingStartTime>xc&&a!==536870912&&(t.flags|=128,r=!0,Bi(l,!1),t.lanes=4194304);l.isBackwards?(o.sibling=t.child,t.child=o):(s=l.last,s!==null?s.sibling=o:t.child=o,l.last=o)}return l.tail!==null?(s=l.tail,l.rendering=s,l.tail=s.sibling,l.renderingStartTime=Pe(),s.sibling=null,a=it.current,ae(it,r?a&1|2:a&1),bs&&Qa(t,l.treeForkCount),s):(Ks(t),null);case 22:case 23:return Zt(t),ed(),l=t.memoizedState!==null,s!==null?s.memoizedState!==null!==l&&(t.flags|=8192):l&&(t.flags|=8192),l?(a&536870912)!==0&&(t.flags&128)===0&&(Ks(t),t.subtreeFlags&6&&(t.flags|=8192)):Ks(t),a=t.updateQueue,a!==null&&oc(t,a.retryQueue),a=null,s!==null&&s.memoizedState!==null&&s.memoizedState.cachePool!==null&&(a=s.memoizedState.cachePool.pool),l=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(l=t.memoizedState.cachePool.pool),l!==a&&(t.flags|=2048),s!==null&&ie(Pl),null;case 24:return a=null,s!==null&&(a=s.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),Xa(dt),Ks(t),null;case 25:return null;case 30:return null}throw Error(d(156,t.tag))}function nv(s,t){switch(Ho(t),t.tag){case 1:return s=t.flags,s&65536?(t.flags=s&-65537|128,t):null;case 3:return Xa(dt),B(),s=t.flags,(s&65536)!==0&&(s&128)===0?(t.flags=s&-65537|128,t):null;case 26:case 27:case 5:return Ce(t),null;case 31:if(t.memoizedState!==null){if(Zt(t),t.alternate===null)throw Error(d(340));Jl()}return s=t.flags,s&65536?(t.flags=s&-65537|128,t):null;case 13:if(Zt(t),s=t.memoizedState,s!==null&&s.dehydrated!==null){if(t.alternate===null)throw Error(d(340));Jl()}return s=t.flags,s&65536?(t.flags=s&-65537|128,t):null;case 19:return ie(it),null;case 4:return B(),null;case 10:return Xa(t.type),null;case 22:case 23:return Zt(t),ed(),s!==null&&ie(Pl),s=t.flags,s&65536?(t.flags=s&-65537|128,t):null;case 24:return Xa(dt),null;case 25:return null;default:return null}}function fx(s,t){switch(Ho(t),t.tag){case 3:Xa(dt),B();break;case 26:case 27:case 5:Ce(t);break;case 4:B();break;case 31:t.memoizedState!==null&&Zt(t);break;case 13:Zt(t);break;case 19:ie(it);break;case 10:Xa(t.type);break;case 22:case 23:Zt(t),ed(),s!==null&&ie(Pl);break;case 24:Xa(dt)}}function Hi(s,t){try{var a=t.updateQueue,l=a!==null?a.lastEffect:null;if(l!==null){var r=l.next;a=r;do{if((a.tag&s)===s){l=void 0;var o=a.create,m=a.inst;l=o(),m.destroy=l}a=a.next}while(a!==r)}}catch(g){As(t,t.return,g)}}function _l(s,t,a){try{var l=t.updateQueue,r=l!==null?l.lastEffect:null;if(r!==null){var o=r.next;l=o;do{if((l.tag&s)===s){var m=l.inst,g=m.destroy;if(g!==void 0){m.destroy=void 0,r=t;var E=a,Z=g;try{Z()}catch(ce){As(r,E,ce)}}}l=l.next}while(l!==o)}}catch(ce){As(t,t.return,ce)}}function px(s){var t=s.updateQueue;if(t!==null){var a=s.stateNode;try{ih(t,a)}catch(l){As(s,s.return,l)}}}function gx(s,t,a){a.props=an(s.type,s.memoizedProps),a.state=s.memoizedState;try{a.componentWillUnmount()}catch(l){As(s,t,l)}}function qi(s,t){try{var a=s.ref;if(a!==null){switch(s.tag){case 26:case 27:case 5:var l=s.stateNode;break;case 30:l=s.stateNode;break;default:l=s.stateNode}typeof a=="function"?s.refCleanup=a(l):a.current=l}}catch(r){As(s,t,r)}}function Ea(s,t){var a=s.ref,l=s.refCleanup;if(a!==null)if(typeof l=="function")try{l()}catch(r){As(s,t,r)}finally{s.refCleanup=null,s=s.alternate,s!=null&&(s.refCleanup=null)}else if(typeof a=="function")try{a(null)}catch(r){As(s,t,r)}else a.current=null}function jx(s){var t=s.type,a=s.memoizedProps,l=s.stateNode;try{e:switch(t){case"button":case"input":case"select":case"textarea":a.autoFocus&&l.focus();break e;case"img":a.src?l.src=a.src:a.srcSet&&(l.srcset=a.srcSet)}}catch(r){As(s,s.return,r)}}function Md(s,t,a){try{var l=s.stateNode;kv(l,s.type,a,t),l[Ns]=t}catch(r){As(s,s.return,r)}}function vx(s){return s.tag===5||s.tag===3||s.tag===26||s.tag===27&&Al(s.type)||s.tag===4}function Dd(s){e:for(;;){for(;s.sibling===null;){if(s.return===null||vx(s.return))return null;s=s.return}for(s.sibling.return=s.return,s=s.sibling;s.tag!==5&&s.tag!==6&&s.tag!==18;){if(s.tag===27&&Al(s.type)||s.flags&2||s.child===null||s.tag===4)continue e;s.child.return=s,s=s.child}if(!(s.flags&2))return s.stateNode}}function Od(s,t,a){var l=s.tag;if(l===5||l===6)s=s.stateNode,t?(a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a).insertBefore(s,t):(t=a.nodeType===9?a.body:a.nodeName==="HTML"?a.ownerDocument.body:a,t.appendChild(s),a=a._reactRootContainer,a!=null||t.onclick!==null||(t.onclick=Va));else if(l!==4&&(l===27&&Al(s.type)&&(a=s.stateNode,t=null),s=s.child,s!==null))for(Od(s,t,a),s=s.sibling;s!==null;)Od(s,t,a),s=s.sibling}function dc(s,t,a){var l=s.tag;if(l===5||l===6)s=s.stateNode,t?a.insertBefore(s,t):a.appendChild(s);else if(l!==4&&(l===27&&Al(s.type)&&(a=s.stateNode),s=s.child,s!==null))for(dc(s,t,a),s=s.sibling;s!==null;)dc(s,t,a),s=s.sibling}function Nx(s){var t=s.stateNode,a=s.memoizedProps;try{for(var l=s.type,r=t.attributes;r.length;)t.removeAttributeNode(r[0]);St(t,l,a),t[Je]=s,t[Ns]=a}catch(o){As(s,s.return,o)}}var Pa=!1,ht=!1,Rd=!1,bx=typeof WeakSet=="function"?WeakSet:Set,Nt=null;function iv(s,t){if(s=s.containerInfo,tu=Ac,s=Dm(s),To(s)){if("selectionStart"in s)var a={start:s.selectionStart,end:s.selectionEnd};else e:{a=(a=s.ownerDocument)&&a.defaultView||window;var l=a.getSelection&&a.getSelection();if(l&&l.rangeCount!==0){a=l.anchorNode;var r=l.anchorOffset,o=l.focusNode;l=l.focusOffset;try{a.nodeType,o.nodeType}catch{a=null;break e}var m=0,g=-1,E=-1,Z=0,ce=0,pe=s,I=null;s:for(;;){for(var te;pe!==a||r!==0&&pe.nodeType!==3||(g=m+r),pe!==o||l!==0&&pe.nodeType!==3||(E=m+l),pe.nodeType===3&&(m+=pe.nodeValue.length),(te=pe.firstChild)!==null;)I=pe,pe=te;for(;;){if(pe===s)break s;if(I===a&&++Z===r&&(g=m),I===o&&++ce===l&&(E=m),(te=pe.nextSibling)!==null)break;pe=I,I=pe.parentNode}pe=te}a=g===-1||E===-1?null:{start:g,end:E}}else a=null}a=a||{start:0,end:0}}else a=null;for(au={focusedElem:s,selectionRange:a},Ac=!1,Nt=t;Nt!==null;)if(t=Nt,s=t.child,(t.subtreeFlags&1028)!==0&&s!==null)s.return=t,Nt=s;else for(;Nt!==null;){switch(t=Nt,o=t.alternate,s=t.flags,t.tag){case 0:if((s&4)!==0&&(s=t.updateQueue,s=s!==null?s.events:null,s!==null))for(a=0;a title"))),St(o,l,a),o[Je]=s,vt(o),l=o;break e;case"link":var m=Tf("link","href",r).get(l+(a.href||""));if(m){for(var g=0;gRs&&(m=Rs,Rs=Qe,Qe=m);var q=Am(g,Qe),L=Am(g,Rs);if(q&&L&&(te.rangeCount!==1||te.anchorNode!==q.node||te.anchorOffset!==q.offset||te.focusNode!==L.node||te.focusOffset!==L.offset)){var J=pe.createRange();J.setStart(q.node,q.offset),te.removeAllRanges(),Qe>Rs?(te.addRange(J),te.extend(L.node,L.offset)):(J.setEnd(L.node,L.offset),te.addRange(J))}}}}for(pe=[],te=g;te=te.parentNode;)te.nodeType===1&&pe.push({element:te,left:te.scrollLeft,top:te.scrollTop});for(typeof g.focus=="function"&&g.focus(),g=0;ga?32:a,z.T=null,a=Vd,Vd=null;var o=Tl,m=al;if(gt=0,Xn=Tl=null,al=0,(ks&6)!==0)throw Error(d(331));var g=ks;if(ks|=4,Mx(o.current),Ex(o,o.current,m,a),ks=g,Yi(0,!1),ve&&typeof ve.onPostCommitFiberRoot=="function")try{ve.onPostCommitFiberRoot(ke,o)}catch{}return!0}finally{X.p=r,z.T=l,Zx(s,t)}}function Px(s,t,a){t=ra(a,t),t=bd(s.stateNode,t,2),s=bl(s,t,2),s!==null&&(pt(s,2),za(s))}function As(s,t,a){if(s.tag===3)Px(s,s,a);else for(;t!==null;){if(t.tag===3){Px(t,s,a);break}else if(t.tag===1){var l=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof l.componentDidCatch=="function"&&(kl===null||!kl.has(l))){s=ra(a,s),a=Wh(2),l=bl(t,a,2),l!==null&&(ex(a,l,t,s),pt(l,2),za(l));break}}t=t.return}}function Yd(s,t,a){var l=s.pingCache;if(l===null){l=s.pingCache=new ov;var r=new Set;l.set(t,r)}else r=l.get(t),r===void 0&&(r=new Set,l.set(t,r));r.has(a)||(Bd=!0,r.add(a),s=xv.bind(null,s,t,a),t.then(s,s))}function xv(s,t,a){var l=s.pingCache;l!==null&&l.delete(t),s.pingedLanes|=s.suspendedLanes&a,s.warmLanes&=~a,Us===s&&(gs&a)===a&&(et===4||et===3&&(gs&62914560)===gs&&300>Pe()-hc?(ks&2)===0&&Kn(s,0):Hd|=a,Yn===gs&&(Yn=0)),za(s)}function Wx(s,t){t===0&&(t=we()),s=Xl(s,t),s!==null&&(pt(s,t),za(s))}function fv(s){var t=s.memoizedState,a=0;t!==null&&(a=t.retryLane),Wx(s,a)}function pv(s,t){var a=0;switch(s.tag){case 31:case 13:var l=s.stateNode,r=s.memoizedState;r!==null&&(a=r.retryLane);break;case 19:l=s.stateNode;break;case 22:l=s.stateNode._retryCache;break;default:throw Error(d(314))}l!==null&&l.delete(t),Wx(s,a)}function gv(s,t){return Ke(s,t)}var Nc=null,Zn=null,Xd=!1,bc=!1,Kd=!1,zl=0;function za(s){s!==Zn&&s.next===null&&(Zn===null?Nc=Zn=s:Zn=Zn.next=s),bc=!0,Xd||(Xd=!0,vv())}function Yi(s,t){if(!Kd&&bc){Kd=!0;do for(var a=!1,l=Nc;l!==null;){if(s!==0){var r=l.pendingLanes;if(r===0)var o=0;else{var m=l.suspendedLanes,g=l.pingedLanes;o=(1<<31-_s(42|s)+1)-1,o&=r&~(m&~g),o=o&201326741?o&201326741|1:o?o|2:0}o!==0&&(a=!0,af(l,o))}else o=gs,o=qa(l,l===Us?o:0,l.cancelPendingCommit!==null||l.timeoutHandle!==-1),(o&3)===0||Sa(l,o)||(a=!0,af(l,o));l=l.next}while(a);Kd=!1}}function jv(){ef()}function ef(){bc=Xd=!1;var s=0;zl!==0&&Ev()&&(s=zl);for(var t=Pe(),a=null,l=Nc;l!==null;){var r=l.next,o=sf(l,t);o===0?(l.next=null,a===null?Nc=r:a.next=r,r===null&&(Zn=a)):(a=l,(s!==0||(o&3)!==0)&&(bc=!0)),l=r}gt!==0&>!==5||Yi(s),zl!==0&&(zl=0)}function sf(s,t){for(var a=s.suspendedLanes,l=s.pingedLanes,r=s.expirationTimes,o=s.pendingLanes&-62914561;0g)break;var ce=E.transferSize,pe=E.initiatorType;ce&&mf(pe)&&(E=E.responseEnd,m+=ce*(E"u"?null:document;function _f(s,t,a){var l=In;if(l&&typeof t=="string"&&t){var r=na(t);r='link[rel="'+s+'"][href="'+r+'"]',typeof a=="string"&&(r+='[crossorigin="'+a+'"]'),wf.has(r)||(wf.add(r),s={rel:s,crossOrigin:a,href:t},l.querySelector(r)===null&&(t=l.createElement("link"),St(t,"link",s),vt(t),l.head.appendChild(t)))}}function Bv(s){ll.D(s),_f("dns-prefetch",s,null)}function Hv(s,t){ll.C(s,t),_f("preconnect",s,t)}function qv(s,t,a){ll.L(s,t,a);var l=In;if(l&&s&&t){var r='link[rel="preload"][as="'+na(t)+'"]';t==="image"&&a&&a.imageSrcSet?(r+='[imagesrcset="'+na(a.imageSrcSet)+'"]',typeof a.imageSizes=="string"&&(r+='[imagesizes="'+na(a.imageSizes)+'"]')):r+='[href="'+na(s)+'"]';var o=r;switch(t){case"style":o=Pn(s);break;case"script":o=Wn(s)}ha.has(o)||(s=y({rel:"preload",href:t==="image"&&a&&a.imageSrcSet?void 0:s,as:t},a),ha.set(o,s),l.querySelector(r)!==null||t==="style"&&l.querySelector(Zi(o))||t==="script"&&l.querySelector(Ii(o))||(t=l.createElement("link"),St(t,"link",s),vt(t),l.head.appendChild(t)))}}function Gv(s,t){ll.m(s,t);var a=In;if(a&&s){var l=t&&typeof t.as=="string"?t.as:"script",r='link[rel="modulepreload"][as="'+na(l)+'"][href="'+na(s)+'"]',o=r;switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":o=Wn(s)}if(!ha.has(o)&&(s=y({rel:"modulepreload",href:s},t),ha.set(o,s),a.querySelector(r)===null)){switch(l){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(a.querySelector(Ii(o)))return}l=a.createElement("link"),St(l,"link",s),vt(l),a.head.appendChild(l)}}}function Vv(s,t,a){ll.S(s,t,a);var l=In;if(l&&s){var r=Nn(l).hoistableStyles,o=Pn(s);t=t||"default";var m=r.get(o);if(!m){var g={loading:0,preload:null};if(m=l.querySelector(Zi(o)))g.loading=5;else{s=y({rel:"stylesheet",href:s,"data-precedence":t},a),(a=ha.get(o))&&du(s,a);var E=m=l.createElement("link");vt(E),St(E,"link",s),E._p=new Promise(function(Z,ce){E.onload=Z,E.onerror=ce}),E.addEventListener("load",function(){g.loading|=1}),E.addEventListener("error",function(){g.loading|=2}),g.loading|=4,Cc(m,t,l)}m={type:"stylesheet",instance:m,count:1,state:g},r.set(o,m)}}}function Fv(s,t){ll.X(s,t);var a=In;if(a&&s){var l=Nn(a).hoistableScripts,r=Wn(s),o=l.get(r);o||(o=a.querySelector(Ii(r)),o||(s=y({src:s,async:!0},t),(t=ha.get(r))&&uu(s,t),o=a.createElement("script"),vt(o),St(o,"link",s),a.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},l.set(r,o))}}function $v(s,t){ll.M(s,t);var a=In;if(a&&s){var l=Nn(a).hoistableScripts,r=Wn(s),o=l.get(r);o||(o=a.querySelector(Ii(r)),o||(s=y({src:s,async:!0,type:"module"},t),(t=ha.get(r))&&uu(s,t),o=a.createElement("script"),vt(o),St(o,"link",s),a.head.appendChild(o)),o={type:"script",instance:o,count:1,state:null},l.set(r,o))}}function Sf(s,t,a,l){var r=(r=me.current)?Sc(r):null;if(!r)throw Error(d(446));switch(s){case"meta":case"title":return null;case"style":return typeof a.precedence=="string"&&typeof a.href=="string"?(t=Pn(a.href),a=Nn(r).hoistableStyles,l=a.get(t),l||(l={type:"style",instance:null,count:0,state:null},a.set(t,l)),l):{type:"void",instance:null,count:0,state:null};case"link":if(a.rel==="stylesheet"&&typeof a.href=="string"&&typeof a.precedence=="string"){s=Pn(a.href);var o=Nn(r).hoistableStyles,m=o.get(s);if(m||(r=r.ownerDocument||r,m={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},o.set(s,m),(o=r.querySelector(Zi(s)))&&!o._p&&(m.instance=o,m.state.loading=5),ha.has(s)||(a={rel:"preload",as:"style",href:a.href,crossOrigin:a.crossOrigin,integrity:a.integrity,media:a.media,hrefLang:a.hrefLang,referrerPolicy:a.referrerPolicy},ha.set(s,a),o||Qv(r,s,a,m.state))),t&&l===null)throw Error(d(528,""));return m}if(t&&l!==null)throw Error(d(529,""));return null;case"script":return t=a.async,a=a.src,typeof a=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=Wn(a),a=Nn(r).hoistableScripts,l=a.get(t),l||(l={type:"script",instance:null,count:0,state:null},a.set(t,l)),l):{type:"void",instance:null,count:0,state:null};default:throw Error(d(444,s))}}function Pn(s){return'href="'+na(s)+'"'}function Zi(s){return'link[rel="stylesheet"]['+s+"]"}function Cf(s){return y({},s,{"data-precedence":s.precedence,precedence:null})}function Qv(s,t,a,l){s.querySelector('link[rel="preload"][as="style"]['+t+"]")?l.loading=1:(t=s.createElement("link"),l.preload=t,t.addEventListener("load",function(){return l.loading|=1}),t.addEventListener("error",function(){return l.loading|=2}),St(t,"link",a),vt(t),s.head.appendChild(t))}function Wn(s){return'[src="'+na(s)+'"]'}function Ii(s){return"script[async]"+s}function kf(s,t,a){if(t.count++,t.instance===null)switch(t.type){case"style":var l=s.querySelector('style[data-href~="'+na(a.href)+'"]');if(l)return t.instance=l,vt(l),l;var r=y({},a,{"data-href":a.href,"data-precedence":a.precedence,href:null,precedence:null});return l=(s.ownerDocument||s).createElement("style"),vt(l),St(l,"style",r),Cc(l,a.precedence,s),t.instance=l;case"stylesheet":r=Pn(a.href);var o=s.querySelector(Zi(r));if(o)return t.state.loading|=4,t.instance=o,vt(o),o;l=Cf(a),(r=ha.get(r))&&du(l,r),o=(s.ownerDocument||s).createElement("link"),vt(o);var m=o;return m._p=new Promise(function(g,E){m.onload=g,m.onerror=E}),St(o,"link",l),t.state.loading|=4,Cc(o,a.precedence,s),t.instance=o;case"script":return o=Wn(a.src),(r=s.querySelector(Ii(o)))?(t.instance=r,vt(r),r):(l=a,(r=ha.get(o))&&(l=y({},a),uu(l,r)),s=s.ownerDocument||s,r=s.createElement("script"),vt(r),St(r,"link",l),s.head.appendChild(r),t.instance=r);case"void":return null;default:throw Error(d(443,t.type))}else t.type==="stylesheet"&&(t.state.loading&4)===0&&(l=t.instance,t.state.loading|=4,Cc(l,a.precedence,s));return t.instance}function Cc(s,t,a){for(var l=a.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),r=l.length?l[l.length-1]:null,o=r,m=0;m title"):null)}function Yv(s,t,a){if(a===1||t.itemProp!=null)return!1;switch(s){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return s=t.disabled,typeof t.precedence=="string"&&s==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function zf(s){return!(s.type==="stylesheet"&&(s.state.loading&3)===0)}function Xv(s,t,a,l){if(a.type==="stylesheet"&&(typeof l.media!="string"||matchMedia(l.media).matches!==!1)&&(a.state.loading&4)===0){if(a.instance===null){var r=Pn(l.href),o=t.querySelector(Zi(r));if(o){t=o._p,t!==null&&typeof t=="object"&&typeof t.then=="function"&&(s.count++,s=Tc.bind(s),t.then(s,s)),a.state.loading|=4,a.instance=o,vt(o);return}o=t.ownerDocument||t,l=Cf(l),(r=ha.get(r))&&du(l,r),o=o.createElement("link"),vt(o);var m=o;m._p=new Promise(function(g,E){m.onload=g,m.onerror=E}),St(o,"link",l),a.instance=o}s.stylesheets===null&&(s.stylesheets=new Map),s.stylesheets.set(a,t),(t=a.state.preload)&&(a.state.loading&3)===0&&(s.count++,a=Tc.bind(s),t.addEventListener("load",a),t.addEventListener("error",a))}}var mu=0;function Kv(s,t){return s.stylesheets&&s.count===0&&zc(s,s.stylesheets),0mu?50:800)+t);return s.unsuspend=a,function(){s.unsuspend=null,clearTimeout(l),clearTimeout(r)}}:null}function Tc(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)zc(this,this.stylesheets);else if(this.unsuspend){var s=this.unsuspend;this.unsuspend=null,s()}}}var Ec=null;function zc(s,t){s.stylesheets=null,s.unsuspend!==null&&(s.count++,Ec=new Map,t.forEach(Jv,s),Ec=null,Tc.call(s))}function Jv(s,t){if(!(t.state.loading&4)){var a=Ec.get(s);if(a)var l=a.get(null);else{a=new Map,Ec.set(s,a);for(var r=s.querySelectorAll("link[data-precedence],style[data-precedence]"),o=0;o"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(i){console.error(i)}}return n(),_u.exports=yy(),_u.exports}var _y=wy();function $(...n){return xN(fN(n))}const Ze=u.forwardRef(({className:n,...i},c)=>e.jsx("div",{ref:c,className:$("rounded-xl border bg-card text-card-foreground shadow",n),...i}));Ze.displayName="Card";const ys=u.forwardRef(({className:n,...i},c)=>e.jsx("div",{ref:c,className:$("flex flex-col space-y-1.5 p-6",n),...i}));ys.displayName="CardHeader";const ws=u.forwardRef(({className:n,...i},c)=>e.jsx("div",{ref:c,className:$("font-semibold leading-none tracking-tight",n),...i}));ws.displayName="CardTitle";const ct=u.forwardRef(({className:n,...i},c)=>e.jsx("div",{ref:c,className:$("text-sm text-muted-foreground",n),...i}));ct.displayName="CardDescription";const Ts=u.forwardRef(({className:n,...i},c)=>e.jsx("div",{ref:c,className:$("p-6 pt-0",n),...i}));Ts.displayName="CardContent";const pg=u.forwardRef(({className:n,...i},c)=>e.jsx("div",{ref:c,className:$("flex items-center p-6 pt-0",n),...i}));pg.displayName="CardFooter";const La=jN,wa=u.forwardRef(({className:n,...i},c)=>e.jsx(Np,{ref:c,className:$("inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground",n),...i}));wa.displayName=Np.displayName;const fs=u.forwardRef(({className:n,...i},c)=>e.jsx(bp,{ref:c,className:$("inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm font-medium ring-offset-background transition-all duration-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",n),...i}));fs.displayName=bp.displayName;const Ms=u.forwardRef(({className:n,...i},c)=>e.jsx(yp,{ref:c,className:$("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 data-[state=active]:animate-in data-[state=active]:fade-in data-[state=active]:duration-300",n),...i}));Ms.displayName=yp.displayName;const ss=u.forwardRef(({className:n,children:i,viewportRef:c,...d},h)=>e.jsxs(wp,{ref:h,className:$("relative overflow-hidden",n),...d,children:[e.jsx(vN,{ref:c,className:"h-full w-full rounded-[inherit]",children:i}),e.jsx(Ru,{}),e.jsx(Ru,{orientation:"horizontal"}),e.jsx(NN,{})]}));ss.displayName=wp.displayName;const Ru=u.forwardRef(({className:n,orientation:i="vertical",...c},d)=>e.jsx(_p,{ref:d,orientation:i,className:$("flex touch-none select-none transition-colors",i==="vertical"&&"h-full w-2.5 border-l border-l-transparent p-[1px]",i==="horizontal"&&"h-2.5 flex-col border-t border-t-transparent p-[1px]",n),...c,children:e.jsx(bN,{className:"relative flex-1 rounded-full bg-border"})}));Ru.displayName=_p.displayName;function gg({className:n,...i}){return e.jsx("div",{className:$("animate-pulse rounded-md bg-primary/10",n),...i})}const wr=u.forwardRef(({className:n,value:i,...c},d)=>e.jsx(Sp,{ref:d,className:$("relative h-2 w-full overflow-hidden rounded-full bg-primary/20",n),...c,children:e.jsx(yN,{className:"h-full w-full flex-1 bg-primary transition-all",style:{transform:`translateX(-${100-(i||0)}%)`}})}));wr.displayName=Sp.displayName;const Sy={light:"",dark:".dark"},jg=u.createContext(null);function vg(){const n=u.useContext(jg);if(!n)throw new Error("useChart must be used within a ");return n}const si=u.forwardRef(({id:n,className:i,children:c,config:d,...h},x)=>{const f=u.useId(),j=`chart-${n||f.replace(/:/g,"")}`;return e.jsx(jg.Provider,{value:{config:d},children:e.jsxs("div",{"data-chart":j,ref:x,className:$("flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none",i),...h,children:[e.jsx(Cy,{id:j,config:d}),e.jsx(LN,{children:c})]})})});si.displayName="Chart";const Cy=({id:n,config:i})=>{const c=Object.entries(i).filter(([,d])=>d.theme||d.color);return c.length?e.jsx("style",{dangerouslySetInnerHTML:{__html:Object.entries(Sy).map(([d,h])=>` +${h} [data-chart=${n}] { +${c.map(([x,f])=>{const j=f.theme?.[d]||f.color;return j?` --color-${x}: ${j};`:null}).join(` +`)} +} +`).join(` +`)}}):null},ir=UN,ti=u.forwardRef(({active:n,payload:i,className:c,indicator:d="dot",hideLabel:h=!1,hideIndicator:x=!1,label:f,labelFormatter:j,labelClassName:p,formatter:w,color:v,nameKey:y,labelKey:S},C)=>{const{config:M}=vg(),F=u.useMemo(()=>{if(h||!i?.length)return null;const[O]=i,K=`${S||O?.dataKey||O?.name||"value"}`,H=Lu(M,O,K),A=!S&&typeof f=="string"?M[f]?.label||f:H?.label;return j?e.jsx("div",{className:$("font-medium",p),children:j(A,i)}):A?e.jsx("div",{className:$("font-medium",p),children:A}):null},[f,j,i,h,p,M,S]);if(!n||!i?.length)return null;const U=i.length===1&&d!=="dot";return e.jsxs("div",{ref:C,className:$("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",c),children:[U?null:F,e.jsx("div",{className:"grid gap-1.5",children:i.filter(O=>O.type!=="none").map((O,K)=>{const H=`${y||O.name||O.dataKey||"value"}`,A=Lu(M,O,H),V=v||O.payload.fill||O.color;return e.jsx("div",{className:$("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",d==="dot"&&"items-center"),children:w&&O?.value!==void 0&&O.name?w(O.value,O.name,O,K,O.payload):e.jsxs(e.Fragment,{children:[A?.icon?e.jsx(A.icon,{}):!x&&e.jsx("div",{className:$("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]",{"h-2.5 w-2.5":d==="dot","w-1":d==="line","w-0 border-[1.5px] border-dashed bg-transparent":d==="dashed","my-0.5":U&&d==="dashed"}),style:{"--color-bg":V,"--color-border":V}}),e.jsxs("div",{className:$("flex flex-1 justify-between leading-none",U?"items-end":"items-center"),children:[e.jsxs("div",{className:"grid gap-1.5",children:[U?F:null,e.jsx("span",{className:"text-muted-foreground",children:A?.label||O.name})]}),O.value&&e.jsx("span",{className:"font-mono font-medium tabular-nums text-foreground",children:O.value.toLocaleString()})]})]})},O.dataKey)})})]})});ti.displayName="ChartTooltip";const ky=BN,Ng=u.forwardRef(({className:n,hideIcon:i=!1,payload:c,verticalAlign:d="bottom",nameKey:h},x)=>{const{config:f}=vg();return c?.length?e.jsx("div",{ref:x,className:$("flex items-center justify-center gap-4",d==="top"?"pb-3":"pt-3",n),children:c.filter(j=>j.type!=="none").map(j=>{const p=`${h||j.dataKey||"value"}`,w=Lu(f,j,p);return e.jsxs("div",{className:$("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"),children:[w?.icon&&!i?e.jsx(w.icon,{}):e.jsx("div",{className:"h-2 w-2 shrink-0 rounded-[2px]",style:{backgroundColor:j.color}}),w?.label]},j.value)})}):null});Ng.displayName="ChartLegend";function Lu(n,i,c){if(typeof i!="object"||i===null)return;const d="payload"in i&&typeof i.payload=="object"&&i.payload!==null?i.payload:void 0;let h=c;return c in i&&typeof i[c]=="string"?h=i[c]:d&&c in d&&typeof d[c]=="string"&&(h=d[c]),h in n?n[h]:n[c]}const gr=ci("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),N=u.forwardRef(({className:n,variant:i,size:c,asChild:d=!1,...h},x)=>{const f=d?$N:"button";return e.jsx(f,{className:$(gr({variant:i,size:c,className:n})),ref:x,...h})});N.displayName="Button";const Ty=ci("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function Ye({className:n,variant:i,...c}){return e.jsx("div",{className:$(Ty({variant:i}),n),...c})}const Ey=5,zy=5e3;let ku=0;function Ay(){return ku=(ku+1)%Number.MAX_SAFE_INTEGER,ku.toString()}const Tu=new Map,ep=n=>{if(Tu.has(n))return;const i=setTimeout(()=>{Tu.delete(n),hr({type:"REMOVE_TOAST",toastId:n})},zy);Tu.set(n,i)},My=(n,i)=>{switch(i.type){case"ADD_TOAST":return{...n,toasts:[i.toast,...n.toasts].slice(0,Ey)};case"UPDATE_TOAST":return{...n,toasts:n.toasts.map(c=>c.id===i.toast.id?{...c,...i.toast}:c)};case"DISMISS_TOAST":{const{toastId:c}=i;return c?ep(c):n.toasts.forEach(d=>{ep(d.id)}),{...n,toasts:n.toasts.map(d=>d.id===c||c===void 0?{...d,open:!1}:d)}}case"REMOVE_TOAST":return i.toastId===void 0?{...n,toasts:[]}:{...n,toasts:n.toasts.filter(c=>c.id!==i.toastId)}}},Kc=[];let Jc={toasts:[]};function hr(n){Jc=My(Jc,n),Kc.forEach(i=>{i(Jc)})}function Dy({...n}){const i=Ay(),c=h=>hr({type:"UPDATE_TOAST",toast:{...h,id:i}}),d=()=>hr({type:"DISMISS_TOAST",toastId:i});return hr({type:"ADD_TOAST",toast:{...n,id:i,open:!0,onOpenChange:h=>{h||d()}}}),{id:i,dismiss:d,update:c}}function Gs(){const[n,i]=u.useState(Jc);return u.useEffect(()=>(Kc.push(i),()=>{const c=Kc.indexOf(i);c>-1&&Kc.splice(c,1)}),[n]),{...n,toast:Dy,dismiss:c=>hr({type:"DISMISS_TOAST",toastId:c})}}const Oy=n=>{const i=[];for(let c=0;c{try{C(!0);const k=await Bc.get("https://v1.hitokoto.cn/?c=a&c=b&c=c&c=d&c=h&c=i&c=k");y({hitokoto:k.data.hitokoto,from:k.data.from||k.data.from_who||"未知"})}catch(k){console.error("获取一言失败:",k),y({hitokoto:"人生就像一盒巧克力,你永远不知道下一颗是什么味道。",from:"阿甘正传"})}finally{C(!1)}},[]),A=u.useCallback(async()=>{try{const k=localStorage.getItem("access-token"),se=await Bc.get("/api/webui/system/status",{headers:{Authorization:`Bearer ${k}`}});F(se.data)}catch(k){console.error("获取机器人状态失败:",k),F(null)}},[]),V=async()=>{if(!U)try{O(!0);const k=localStorage.getItem("access-token");await Bc.post("/api/webui/system/restart",{},{headers:{Authorization:`Bearer ${k}`}}),K({title:"重启中",description:"麦麦正在重启,请稍候..."}),setTimeout(()=>{A(),O(!1)},3e3)}catch(k){console.error("重启失败:",k),K({title:"重启失败",description:"无法重启麦麦,请检查控制台",variant:"destructive"}),O(!1)}},Q=u.useCallback(async()=>{try{const k=localStorage.getItem("access-token"),se=await Bc.get(`/api/webui/statistics/dashboard?hours=${f}`,{headers:{Authorization:`Bearer ${k}`}});i(se.data),d(!1),x(100)}catch(k){console.error("Failed to fetch dashboard data:",k),d(!1),x(100)}},[f]);if(u.useEffect(()=>{if(!c)return;x(0);const k=setTimeout(()=>x(15),200),se=setTimeout(()=>x(30),800),_=setTimeout(()=>x(45),2e3),ue=setTimeout(()=>x(60),4e3),ie=setTimeout(()=>x(75),6500),ae=setTimeout(()=>x(85),9e3),fe=setTimeout(()=>x(92),11e3);return()=>{clearTimeout(k),clearTimeout(se),clearTimeout(_),clearTimeout(ue),clearTimeout(ie),clearTimeout(ae),clearTimeout(fe)}},[c]),u.useEffect(()=>{Q(),H(),A()},[Q,H,A]),u.useEffect(()=>{if(!p)return;const k=setInterval(()=>{Q(),A()},3e4);return()=>clearInterval(k)},[p,Q,A]),c||!n)return e.jsx("div",{className:"flex items-center justify-center h-[calc(100vh-200px)]",children:e.jsxs("div",{className:"text-center space-y-6 w-full max-w-md px-4",children:[e.jsx(Ct,{className:"h-12 w-12 animate-spin mx-auto text-primary"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-lg font-medium",children:"加载统计数据中..."}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"正在获取麦麦运行数据"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(wr,{value:h,className:"h-2"}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:[h,"%"]})]})]})});const{summary:T,model_stats:D=[],hourly_data:ne=[],daily_data:xe=[],recent_activity:_e=[]}=n,Se=T??{total_requests:0,total_cost:0,total_tokens:0,online_time:0,total_messages:0,total_replies:0,avg_response_time:0,cost_per_hour:0,tokens_per_hour:0},ge=k=>{const se=Math.floor(k/3600),_=Math.floor(k%3600/60);return`${se}小时${_}分钟`},ye=k=>new Date(k).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),be=Oy(D.length),z=D.map((k,se)=>({name:k.model_name,value:k.request_count,fill:be[se]})),X={requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"},tokens:{label:"Tokens",color:"hsl(var(--chart-3))"}};return e.jsx(ss,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"实时监控面板"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"麦麦运行状态和统计数据一览"})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(La,{value:f.toString(),onValueChange:k=>j(Number(k)),children:e.jsxs(wa,{className:"grid grid-cols-3 w-full sm:w-auto",children:[e.jsx(fs,{value:"24",children:"24小时"}),e.jsx(fs,{value:"168",children:"7天"}),e.jsx(fs,{value:"720",children:"30天"})]})}),e.jsxs(N,{variant:p?"default":"outline",size:"sm",onClick:()=>w(!p),className:"gap-2",children:[e.jsx(Ct,{className:`h-4 w-4 ${p?"animate-spin":""}`}),e.jsx("span",{className:"hidden sm:inline",children:"自动刷新"})]}),e.jsx(N,{variant:"outline",size:"sm",onClick:Q,children:e.jsx(Ct,{className:"h-4 w-4"})})]})]}),e.jsxs("div",{className:"flex items-center gap-3 px-4 py-2 rounded-lg border border-dashed border-muted-foreground/30 bg-muted/20",children:[S?e.jsx(gg,{className:"h-5 flex-1"}):v?e.jsxs("p",{className:"flex-1 text-sm text-muted-foreground italic truncate",children:['"',v.hitokoto,'" —— ',v.from]}):null,e.jsx(N,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0",onClick:H,disabled:S,children:e.jsx(Ct,{className:`h-3.5 w-3.5 ${S?"animate-spin":""}`})})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-3",children:[e.jsxs(Ze,{className:"lg:col-span-1",children:[e.jsx(ys,{className:"pb-3",children:e.jsxs(ws,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(br,{className:"h-4 w-4"}),"麦麦状态"]})}),e.jsx(Ts,{children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"flex items-center gap-2",children:M?.running?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-3 w-3 rounded-full bg-green-500 animate-pulse"}),e.jsxs(Ye,{variant:"outline",className:"text-green-600 border-green-300 bg-green-50",children:[e.jsx(fa,{className:"h-3 w-3 mr-1"}),"运行中"]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-3 w-3 rounded-full bg-red-500"}),e.jsxs(Ye,{variant:"outline",className:"text-red-600 border-red-300 bg-red-50",children:[e.jsx(Oa,{className:"h-3 w-3 mr-1"}),"已停止"]})]})}),M&&e.jsxs("div",{className:"text-xs text-muted-foreground",children:[e.jsxs("span",{children:["v",M.version]}),e.jsx("span",{className:"mx-2",children:"|"}),e.jsxs("span",{children:["运行 ",ge(M.uptime)]})]})]})})]}),e.jsxs(Ze,{className:"lg:col-span-2",children:[e.jsx(ys,{className:"pb-3",children:e.jsxs(ws,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(cn,{className:"h-4 w-4"}),"快速操作"]})}),e.jsx(Ts,{children:e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(N,{variant:"outline",size:"sm",onClick:V,disabled:U,className:"gap-2",children:[e.jsx(Zc,{className:`h-4 w-4 ${U?"animate-spin":""}`}),U?"重启中...":"重启麦麦"]}),e.jsx(N,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Yc,{to:"/logs",children:[e.jsx(Da,{className:"h-4 w-4"}),"查看日志"]})}),e.jsx(N,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Yc,{to:"/plugins",children:[e.jsx(cb,{className:"h-4 w-4"}),"插件管理"]})}),e.jsx(N,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Yc,{to:"/settings",children:[e.jsx(oi,{className:"h-4 w-4"}),"系统设置"]})})]})})]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-4",children:[e.jsxs(Ze,{children:[e.jsxs(ys,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(ws,{className:"text-sm font-medium",children:"总请求数"}),e.jsx(ob,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(Ts,{children:[e.jsx("div",{className:"text-2xl font-bold",children:Se.total_requests.toLocaleString()}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["最近",f<48?f+"小时":Math.floor(f/24)+"天"]})]})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(ws,{className:"text-sm font-medium",children:"总花费"}),e.jsx(db,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(Ts,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:["¥",Se.total_cost.toFixed(2)]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:Se.cost_per_hour>0?`¥${Se.cost_per_hour.toFixed(2)}/小时`:"暂无数据"})]})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(ws,{className:"text-sm font-medium",children:"Token消耗"}),e.jsx(Ic,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(Ts,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:[(Se.total_tokens/1e3).toFixed(1),"K"]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:Se.tokens_per_hour>0?`${(Se.tokens_per_hour/1e3).toFixed(1)}K/小时`:"暂无数据"})]})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(ws,{className:"text-sm font-medium",children:"平均响应"}),e.jsx(cn,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(Ts,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:[Se.avg_response_time.toFixed(2),"s"]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"API平均耗时"})]})]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 sm:grid-cols-3",children:[e.jsxs(Ze,{children:[e.jsxs(ys,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(ws,{className:"text-sm font-medium",children:"在线时长"}),e.jsx(li,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsx(Ts,{children:e.jsx("div",{className:"text-xl font-bold",children:ge(Se.online_time)})})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(ws,{className:"text-sm font-medium",children:"消息处理"}),e.jsx(un,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(Ts,{children:[e.jsx("div",{className:"text-xl font-bold",children:Se.total_messages.toLocaleString()}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["回复 ",Se.total_replies.toLocaleString()," 条"]})]})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(ws,{className:"text-sm font-medium",children:"成本效率"}),e.jsx(ub,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(Ts,{children:[e.jsx("div",{className:"text-xl font-bold",children:Se.total_messages>0?`¥${(Se.total_cost/Se.total_messages*100).toFixed(2)}`:"¥0.00"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"每100条消息"})]})]})]}),e.jsxs(La,{defaultValue:"trends",className:"space-y-4",children:[e.jsxs(wa,{className:"grid w-full grid-cols-2 sm:grid-cols-4",children:[e.jsx(fs,{value:"trends",children:"趋势"}),e.jsx(fs,{value:"models",children:"模型"}),e.jsx(fs,{value:"activity",children:"活动"}),e.jsx(fs,{value:"daily",children:"日统计"})]}),e.jsxs(Ms,{value:"trends",className:"space-y-4",children:[e.jsxs(Ze,{children:[e.jsxs(ys,{children:[e.jsx(ws,{children:"请求趋势"}),e.jsxs(ct,{children:["最近",f,"小时的请求量变化"]})]}),e.jsx(Ts,{children:e.jsx(si,{config:X,className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:e.jsxs(HN,{data:ne,children:[e.jsx(Hc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(qc,{dataKey:"timestamp",tickFormatter:k=>ye(k),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(ir,{content:e.jsx(ti,{labelFormatter:k=>ye(k)})}),e.jsx(qN,{type:"monotone",dataKey:"requests",stroke:"var(--color-requests)",strokeWidth:2})]})})})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[e.jsxs(Ze,{children:[e.jsxs(ys,{children:[e.jsx(ws,{children:"花费趋势"}),e.jsx(ct,{children:"API调用成本变化"})]}),e.jsx(Ts,{children:e.jsx(si,{config:X,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:e.jsxs(bu,{data:ne,children:[e.jsx(Hc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(qc,{dataKey:"timestamp",tickFormatter:k=>ye(k),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(ir,{content:e.jsx(ti,{labelFormatter:k=>ye(k)})}),e.jsx(Gc,{dataKey:"cost",fill:"var(--color-cost)"})]})})})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{children:[e.jsx(ws,{children:"Token消耗"}),e.jsx(ct,{children:"Token使用量变化"})]}),e.jsx(Ts,{children:e.jsx(si,{config:X,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:e.jsxs(bu,{data:ne,children:[e.jsx(Hc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(qc,{dataKey:"timestamp",tickFormatter:k=>ye(k),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(ir,{content:e.jsx(ti,{labelFormatter:k=>ye(k)})}),e.jsx(Gc,{dataKey:"tokens",fill:"var(--color-tokens)"})]})})})]})]})]}),e.jsx(Ms,{value:"models",className:"space-y-4",children:e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[e.jsxs(Ze,{children:[e.jsxs(ys,{children:[e.jsx(ws,{children:"模型请求分布"}),e.jsxs(ct,{children:["各模型使用占比 (共 ",D.length," 个模型)"]})]}),e.jsx(Ts,{children:e.jsx(si,{config:Object.fromEntries(D.map((k,se)=>[k.model_name,{label:k.model_name,color:be[se]}])),className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:e.jsxs(GN,{children:[e.jsx(ir,{content:e.jsx(ti,{})}),e.jsx(VN,{data:z,cx:"50%",cy:"50%",labelLine:!1,label:({name:k,percent:se})=>se&&se<.05?"":`${k} ${se?(se*100).toFixed(0):0}%`,outerRadius:100,dataKey:"value",children:z.map((k,se)=>e.jsx(FN,{fill:k.fill},`cell-${se}`))})]})})})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{children:[e.jsx(ws,{children:"模型详细统计"}),e.jsx(ct,{children:"请求数、花费和性能"})]}),e.jsx(Ts,{children:e.jsx(ss,{className:"h-[300px] sm:h-[400px]",children:e.jsx("div",{className:"space-y-3",children:D.map((k,se)=>e.jsxs("div",{className:"p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("h4",{className:"font-semibold text-sm truncate flex-1 min-w-0",children:k.model_name}),e.jsx("div",{className:"w-3 h-3 rounded-full ml-2 flex-shrink-0",style:{backgroundColor:`hsl(var(--chart-${se%5+1}))`}})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"请求数:"}),e.jsx("span",{className:"ml-1 font-medium",children:k.request_count.toLocaleString()})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"花费:"}),e.jsxs("span",{className:"ml-1 font-medium",children:["¥",k.total_cost.toFixed(2)]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),e.jsxs("span",{className:"ml-1 font-medium",children:[(k.total_tokens/1e3).toFixed(1),"K"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"平均耗时:"}),e.jsxs("span",{className:"ml-1 font-medium",children:[k.avg_response_time.toFixed(2),"s"]})]})]})]},se))})})})]})]})}),e.jsx(Ms,{value:"activity",children:e.jsxs(Ze,{children:[e.jsxs(ys,{children:[e.jsx(ws,{children:"最近活动"}),e.jsx(ct,{children:"最新的API调用记录"})]}),e.jsx(Ts,{children:e.jsx(ss,{className:"h-[400px] sm:h-[500px]",children:e.jsx("div",{className:"space-y-2",children:_e.map((k,se)=>e.jsxs("div",{className:"p-3 sm:p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-2 mb-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-sm truncate",children:k.model}),e.jsx("div",{className:"text-xs text-muted-foreground",children:k.request_type})]}),e.jsx("div",{className:"text-xs text-muted-foreground flex-shrink-0",children:ye(k.timestamp)})]}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-2 text-xs",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),e.jsx("span",{className:"ml-1",children:k.tokens})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"花费:"}),e.jsxs("span",{className:"ml-1",children:["¥",k.cost.toFixed(4)]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"耗时:"}),e.jsxs("span",{className:"ml-1",children:[k.time_cost.toFixed(2),"s"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"状态:"}),e.jsx("span",{className:`ml-1 ${k.status==="success"?"text-green-600":"text-red-600"}`,children:k.status})]})]})]},se))})})})]})}),e.jsx(Ms,{value:"daily",children:e.jsxs(Ze,{children:[e.jsxs(ys,{children:[e.jsx(ws,{children:"每日统计"}),e.jsx(ct,{children:"最近7天的数据汇总"})]}),e.jsx(Ts,{children:e.jsx(si,{config:{requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"}},className:"h-[400px] sm:h-[500px] w-full aspect-auto",children:e.jsxs(bu,{data:xe,children:[e.jsx(Hc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(qc,{dataKey:"timestamp",tickFormatter:k=>{const se=new Date(k);return`${se.getMonth()+1}/${se.getDate()}`},stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{yAxisId:"left",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{yAxisId:"right",orientation:"right",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(ir,{content:e.jsx(ti,{labelFormatter:k=>new Date(k).toLocaleDateString("zh-CN")})}),e.jsx(ky,{content:e.jsx(Ng,{})}),e.jsx(Gc,{yAxisId:"left",dataKey:"requests",fill:"var(--color-requests)"}),e.jsx(Gc,{yAxisId:"right",dataKey:"cost",fill:"var(--color-cost)"})]})})})]})})]})]})})}const Ly={theme:"system",setTheme:()=>null},bg=u.createContext(Ly),$u=()=>{const n=u.useContext(bg);if(n===void 0)throw new Error("useTheme must be used within a ThemeProvider");return n},Uy=(n,i,c)=>{const d=document.documentElement.classList.contains("no-animations");if(!document.startViewTransition||d){i(n);return}const h=c.clientX,x=c.clientY,f=Math.hypot(Math.max(h,innerWidth-h),Math.max(x,innerHeight-x));document.startViewTransition(()=>{i(n)}).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${h}px ${x}px)`,`circle(${f}px at ${h}px ${x}px)`]},{duration:500,easing:"ease-in-out",pseudoElement:"::view-transition-new(root)"})})},yg=u.createContext(void 0),wg=()=>{const n=u.useContext(yg);if(n===void 0)throw new Error("useAnimation must be used within an AnimationProvider");return n},Xe=u.forwardRef(({className:n,...i},c)=>e.jsx(Cp,{className:$("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",n),...i,ref:c,children:e.jsx(wN,{className:$("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));Xe.displayName=Cp.displayName;const By=ci("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),b=u.forwardRef(({className:n,...i},c)=>e.jsx(Hp,{ref:c,className:$(By(),n),...i}));b.displayName=Hp.displayName;const oe=u.forwardRef(({className:n,type:i,...c},d)=>e.jsx("input",{type:i,className:$("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",n),ref:d,...c}));oe.displayName="Input";const Hy=[{id:"minLength",label:"长度至少 10 位",description:"Token 长度必须大于等于 10 个字符",validate:n=>n.length>=10},{id:"hasUppercase",label:"包含大写字母",description:"至少包含一个大写字母 (A-Z)",validate:n=>/[A-Z]/.test(n)},{id:"hasLowercase",label:"包含小写字母",description:"至少包含一个小写字母 (a-z)",validate:n=>/[a-z]/.test(n)},{id:"hasSpecialChar",label:"包含特殊符号",description:"至少包含一个特殊符号 (!@#$%^&*()_+-=[]{}|;:,.<>?/)",validate:n=>/[!@#$%^&*()_+\-=[\]{}|;:,.<>?/]/.test(n)}];function qy(n){const i=Hy.map(d=>({id:d.id,label:d.label,description:d.description,passed:d.validate(n)}));return{isValid:i.every(d=>d.passed),rules:i}}const Qu="0.11.6 Beta",Yu="MaiBot Dashboard",Gy=`${Yu} v${Qu}`,Vy=(n="v")=>`${n}${Qu}`,Ft={THEME:"maibot-ui-theme",ACCENT_COLOR:"accent-color",ENABLE_ANIMATIONS:"maibot-animations",ENABLE_WAVES_BACKGROUND:"maibot-waves-background",LOG_CACHE_SIZE:"maibot-log-cache-size",LOG_AUTO_SCROLL:"maibot-log-auto-scroll",LOG_FONT_SIZE:"maibot-log-font-size",LOG_LINE_SPACING:"maibot-log-line-spacing",DATA_SYNC_INTERVAL:"maibot-data-sync-interval",WS_RECONNECT_INTERVAL:"maibot-ws-reconnect-interval",WS_MAX_RECONNECT_ATTEMPTS:"maibot-ws-max-reconnect-attempts",COMPLETED_TOURS:"maibot-completed-tours"},Aa={theme:"system",accentColor:"blue",enableAnimations:!0,enableWavesBackground:!0,logCacheSize:1e3,logAutoScroll:!0,logFontSize:"xs",logLineSpacing:4,dataSyncInterval:30,wsReconnectInterval:3e3,wsMaxReconnectAttempts:10};function st(n){const i=_g(n),c=localStorage.getItem(i);if(c===null)return Aa[n];const d=Aa[n];if(typeof d=="boolean")return c==="true";if(typeof d=="number"){const h=parseFloat(c);return isNaN(h)?d:h}return c}function ai(n,i){const c=_g(n);localStorage.setItem(c,String(i)),window.dispatchEvent(new CustomEvent("maibot-settings-change",{detail:{key:n,value:i}}))}function Fy(){return{theme:st("theme"),accentColor:st("accentColor"),enableAnimations:st("enableAnimations"),enableWavesBackground:st("enableWavesBackground"),logCacheSize:st("logCacheSize"),logAutoScroll:st("logAutoScroll"),logFontSize:st("logFontSize"),logLineSpacing:st("logLineSpacing"),dataSyncInterval:st("dataSyncInterval"),wsReconnectInterval:st("wsReconnectInterval"),wsMaxReconnectAttempts:st("wsMaxReconnectAttempts")}}function $y(){const n=Fy(),i=localStorage.getItem(Ft.COMPLETED_TOURS),c=i?JSON.parse(i):[];return{...n,completedTours:c}}function Qy(n){const i=[],c=[];for(const[d,h]of Object.entries(n)){if(d==="completedTours"){Array.isArray(h)?(localStorage.setItem(Ft.COMPLETED_TOURS,JSON.stringify(h)),i.push("completedTours")):c.push("completedTours");continue}if(d in Aa){const x=d,f=Aa[x];if(typeof h==typeof f){if(x==="theme"&&!["light","dark","system"].includes(h)){c.push(d);continue}if(x==="logFontSize"&&!["xs","sm","base"].includes(h)){c.push(d);continue}ai(x,h),i.push(d)}else c.push(d)}else c.push(d)}return{success:i.length>0,imported:i,skipped:c}}function Yy(){for(const n of Object.keys(Aa))ai(n,Aa[n]);localStorage.removeItem(Ft.COMPLETED_TOURS),window.dispatchEvent(new CustomEvent("maibot-settings-reset"))}function Xy(){const n=[],i=[],c=[];for(let d=0;dd.size-c.size),{used:n,items:localStorage.length,details:i}}function Ky(n){if(n===0)return"0 B";const i=1024,c=["B","KB","MB"],d=Math.floor(Math.log(n)/Math.log(i));return parseFloat((n/Math.pow(i,d)).toFixed(2))+" "+c[d]}function _g(n){return{theme:Ft.THEME,accentColor:Ft.ACCENT_COLOR,enableAnimations:Ft.ENABLE_ANIMATIONS,enableWavesBackground:Ft.ENABLE_WAVES_BACKGROUND,logCacheSize:Ft.LOG_CACHE_SIZE,logAutoScroll:Ft.LOG_AUTO_SCROLL,logFontSize:Ft.LOG_FONT_SIZE,logLineSpacing:Ft.LOG_LINE_SPACING,dataSyncInterval:Ft.DATA_SYNC_INTERVAL,wsReconnectInterval:Ft.WS_RECONNECT_INTERVAL,wsMaxReconnectAttempts:Ft.WS_MAX_RECONNECT_ATTEMPTS}[n]}const Ma=u.forwardRef(({className:n,...i},c)=>e.jsxs(kp,{ref:c,className:$("relative flex w-full touch-none select-none items-center",n),...i,children:[e.jsx(_N,{className:"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20",children:e.jsx(SN,{className:"absolute h-full bg-primary"})}),e.jsx(CN,{className:"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"})]}));Ma.displayName=kp.displayName;class Jy{ws=null;reconnectTimeout=null;reconnectAttempts=0;heartbeatInterval=null;logCallbacks=new Set;connectionCallbacks=new Set;isConnected=!1;logCache=[];getMaxCacheSize(){return st("logCacheSize")}getMaxReconnectAttempts(){return st("wsMaxReconnectAttempts")}getReconnectInterval(){return st("wsReconnectInterval")}getWebSocketUrl(){{const i=window.location.protocol==="https:"?"wss:":"ws:",c=window.location.host;return`${i}//${c}/ws/logs`}}connect(){if(this.ws?.readyState===WebSocket.OPEN||this.ws?.readyState===WebSocket.CONNECTING)return;const i=this.getWebSocketUrl();try{this.ws=new WebSocket(i),this.ws.onopen=()=>{this.isConnected=!0,this.reconnectAttempts=0,this.notifyConnection(!0),this.startHeartbeat()},this.ws.onmessage=c=>{try{if(c.data==="pong")return;const d=JSON.parse(c.data);this.notifyLog(d)}catch(d){console.error("解析日志消息失败:",d)}},this.ws.onerror=c=>{console.error("❌ WebSocket 错误:",c),this.isConnected=!1,this.notifyConnection(!1)},this.ws.onclose=()=>{this.isConnected=!1,this.notifyConnection(!1),this.stopHeartbeat(),this.attemptReconnect()}}catch(c){console.error("创建 WebSocket 连接失败:",c),this.attemptReconnect()}}attemptReconnect(){const i=this.getMaxReconnectAttempts();if(this.reconnectAttempts>=i)return;this.reconnectAttempts+=1;const c=this.getReconnectInterval(),d=Math.min(c*this.reconnectAttempts,3e4);this.reconnectTimeout=window.setTimeout(()=>{this.connect()},d)}startHeartbeat(){this.heartbeatInterval=window.setInterval(()=>{this.ws?.readyState===WebSocket.OPEN&&this.ws.send("ping")},3e4)}stopHeartbeat(){this.heartbeatInterval!==null&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}disconnect(){this.reconnectTimeout!==null&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.stopHeartbeat(),this.ws&&(this.ws.close(),this.ws=null),this.isConnected=!1,this.reconnectAttempts=0}onLog(i){return this.logCallbacks.add(i),()=>this.logCallbacks.delete(i)}onConnectionChange(i){return this.connectionCallbacks.add(i),i(this.isConnected),()=>this.connectionCallbacks.delete(i)}notifyLog(i){if(!this.logCache.some(d=>d.id===i.id)){this.logCache.push(i);const d=this.getMaxCacheSize();this.logCache.length>d&&(this.logCache=this.logCache.slice(-d)),this.logCallbacks.forEach(h=>{try{h(i)}catch(x){console.error("日志回调执行失败:",x)}})}}notifyConnection(i){this.connectionCallbacks.forEach(c=>{try{c(i)}catch(d){console.error("连接状态回调执行失败:",d)}})}getAllLogs(){return[...this.logCache]}clearLogs(){this.logCache=[]}getConnectionStatus(){return this.isConnected}}const rn=new Jy;typeof window<"u"&&rn.connect();const $s=XN,Xu=KN,Zy=QN,Sg=u.forwardRef(({className:n,...i},c)=>e.jsx(qp,{ref:c,className:$("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...i}));Sg.displayName=qp.displayName;const Bs=u.forwardRef(({className:n,children:i,preventOutsideClose:c=!1,...d},h)=>e.jsxs(Zy,{children:[e.jsx(Sg,{}),e.jsxs(Gp,{ref:h,className:$("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",n),onPointerDownOutside:c?x=>x.preventDefault():void 0,onInteractOutside:c?x=>x.preventDefault():void 0,...d,children:[i,e.jsxs(YN,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[e.jsx(dl,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Bs.displayName=Gp.displayName;const Hs=({className:n,...i})=>e.jsx("div",{className:$("flex flex-col space-y-1.5 text-center sm:text-left",n),...i});Hs.displayName="DialogHeader";const at=({className:n,...i})=>e.jsx("div",{className:$("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",n),...i});at.displayName="DialogFooter";const qs=u.forwardRef(({className:n,...i},c)=>e.jsx(Vp,{ref:c,className:$("text-lg font-semibold leading-none tracking-tight",n),...i}));qs.displayName=Vp.displayName;const Is=u.forwardRef(({className:n,...i},c)=>e.jsx(Fp,{ref:c,className:$("text-sm text-muted-foreground",n),...i}));Is.displayName=Fp.displayName;const ps=TN,tt=EN,Iy=kN,Cg=u.forwardRef(({className:n,...i},c)=>e.jsx(Tp,{className:$("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...i,ref:c}));Cg.displayName=Tp.displayName;const is=u.forwardRef(({className:n,...i},c)=>e.jsxs(Iy,{children:[e.jsx(Cg,{}),e.jsx(Ep,{ref:c,className:$("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",n),...i})]}));is.displayName=Ep.displayName;const rs=({className:n,...i})=>e.jsx("div",{className:$("flex flex-col space-y-2 text-center sm:text-left",n),...i});rs.displayName="AlertDialogHeader";const cs=({className:n,...i})=>e.jsx("div",{className:$("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",n),...i});cs.displayName="AlertDialogFooter";const os=u.forwardRef(({className:n,...i},c)=>e.jsx(zp,{ref:c,className:$("text-lg font-semibold",n),...i}));os.displayName=zp.displayName;const ds=u.forwardRef(({className:n,...i},c)=>e.jsx(Ap,{ref:c,className:$("text-sm text-muted-foreground",n),...i}));ds.displayName=Ap.displayName;const us=u.forwardRef(({className:n,...i},c)=>e.jsx(Mp,{ref:c,className:$(gr(),n),...i}));us.displayName=Mp.displayName;const ms=u.forwardRef(({className:n,...i},c)=>e.jsx(Dp,{ref:c,className:$(gr({variant:"outline"}),"mt-2 sm:mt-0",n),...i}));ms.displayName=Dp.displayName;function Py(){return e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"系统设置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理您的应用偏好设置"})]})}),e.jsxs(La,{defaultValue:"appearance",className:"w-full",children:[e.jsxs(wa,{className:"grid w-full grid-cols-2 sm:grid-cols-4 gap-0.5 sm:gap-1 h-auto p-1",children:[e.jsxs(fs,{value:"appearance",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(mb,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"外观"})]}),e.jsxs(fs,{value:"security",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(hb,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"安全"})]}),e.jsxs(fs,{value:"other",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(oi,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"其他"})]}),e.jsxs(fs,{value:"about",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(Ra,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"关于"})]})]}),e.jsxs(ss,{className:"h-[calc(100vh-240px)] sm:h-[calc(100vh-280px)] mt-4 sm:mt-6",children:[e.jsx(Ms,{value:"appearance",className:"mt-0",children:e.jsx(Wy,{})}),e.jsx(Ms,{value:"security",className:"mt-0",children:e.jsx(e0,{})}),e.jsx(Ms,{value:"other",className:"mt-0",children:e.jsx(s0,{})}),e.jsx(Ms,{value:"about",className:"mt-0",children:e.jsx(t0,{})})]})]})]})}function tp(n){const i=document.documentElement,d={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[n];if(d)i.style.setProperty("--primary",d.hsl),d.gradient?(i.style.setProperty("--primary-gradient",d.gradient),i.classList.add("has-gradient")):(i.style.removeProperty("--primary-gradient"),i.classList.remove("has-gradient"));else if(n.startsWith("#")){const h=x=>{x=x.replace("#","");const f=parseInt(x.substring(0,2),16)/255,j=parseInt(x.substring(2,4),16)/255,p=parseInt(x.substring(4,6),16)/255,w=Math.max(f,j,p),v=Math.min(f,j,p);let y=0,S=0;const C=(w+v)/2;if(w!==v){const M=w-v;switch(S=C>.5?M/(2-w-v):M/(w+v),w){case f:y=((j-p)/M+(jlocalStorage.getItem("accent-color")||"blue");u.useEffect(()=>{const w=localStorage.getItem("accent-color")||"blue";tp(w)},[]);const p=w=>{j(w),localStorage.setItem("accent-color",w),tp(w)};return e.jsxs("div",{className:"space-y-6 sm:space-y-8",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题模式"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 sm:gap-4",children:[e.jsx(Eu,{value:"light",current:n,onChange:i,label:"浅色",description:"始终使用浅色主题"}),e.jsx(Eu,{value:"dark",current:n,onChange:i,label:"深色",description:"始终使用深色主题"}),e.jsx(Eu,{value:"system",current:n,onChange:i,label:"跟随系统",description:"根据系统设置自动切换"})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题色"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"单色"}),e.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[e.jsx(xa,{value:"blue",current:f,onChange:p,label:"蓝色",colorClass:"bg-blue-500"}),e.jsx(xa,{value:"purple",current:f,onChange:p,label:"紫色",colorClass:"bg-purple-500"}),e.jsx(xa,{value:"green",current:f,onChange:p,label:"绿色",colorClass:"bg-green-500"}),e.jsx(xa,{value:"orange",current:f,onChange:p,label:"橙色",colorClass:"bg-orange-500"}),e.jsx(xa,{value:"pink",current:f,onChange:p,label:"粉色",colorClass:"bg-pink-500"}),e.jsx(xa,{value:"red",current:f,onChange:p,label:"红色",colorClass:"bg-red-500"})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"渐变色"}),e.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[e.jsx(xa,{value:"gradient-sunset",current:f,onChange:p,label:"日落",colorClass:"bg-gradient-to-r from-orange-500 to-pink-500"}),e.jsx(xa,{value:"gradient-ocean",current:f,onChange:p,label:"海洋",colorClass:"bg-gradient-to-r from-blue-500 to-cyan-500"}),e.jsx(xa,{value:"gradient-forest",current:f,onChange:p,label:"森林",colorClass:"bg-gradient-to-r from-green-500 to-emerald-500"}),e.jsx(xa,{value:"gradient-aurora",current:f,onChange:p,label:"极光",colorClass:"bg-gradient-to-r from-purple-500 to-pink-500"}),e.jsx(xa,{value:"gradient-fire",current:f,onChange:p,label:"烈焰",colorClass:"bg-gradient-to-r from-red-500 to-orange-500"}),e.jsx(xa,{value:"gradient-twilight",current:f,onChange:p,label:"暮光",colorClass:"bg-gradient-to-r from-indigo-500 to-purple-500"})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"自定义颜色"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 sm:gap-4",children:[e.jsx("div",{className:"flex-1",children:e.jsx("input",{type:"color",value:f.startsWith("#")?f:"#3b82f6",onChange:w=>p(w.target.value),className:"h-10 sm:h-12 w-full rounded-lg border-2 border-border cursor-pointer",title:"选择自定义颜色"})}),e.jsx("div",{className:"flex-1",children:e.jsx(oe,{type:"text",value:f,onChange:w=>p(w.target.value),placeholder:"#3b82f6",className:"font-mono text-sm"})})]}),e.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground mt-2",children:"点击色块选择颜色,或手动输入 HEX 颜色代码"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"动画效果"}),e.jsxs("div",{className:"space-y-2 sm:space-y-3",children:[e.jsx("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5 flex-1",children:[e.jsx(b,{htmlFor:"animations",className:"text-base font-medium cursor-pointer",children:"启用动画效果"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后将禁用所有过渡动画和特效,提升性能"})]}),e.jsx(Xe,{id:"animations",checked:c,onCheckedChange:d})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5 flex-1",children:[e.jsx(b,{htmlFor:"waves-background",className:"text-base font-medium cursor-pointer",children:"登录页波浪背景"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后登录页将使用纯色背景,适合低性能设备"})]}),e.jsx(Xe,{id:"waves-background",checked:h,onCheckedChange:x})]})})]})]})]})}function e0(){const n=ga(),[i,c]=u.useState(""),[d,h]=u.useState(""),[x,f]=u.useState(!1),[j,p]=u.useState(!1),[w,v]=u.useState(!1),[y,S]=u.useState(!1),[C,M]=u.useState(!1),[F,U]=u.useState(!1),[O,K]=u.useState(""),[H,A]=u.useState(!1),{toast:V}=Gs(),Q=u.useMemo(()=>qy(d),[d]),T=async ge=>{if(!i){V({title:"无法复制",description:"Token 存储在安全 Cookie 中,请重新生成以获取新 Token",variant:"destructive"});return}try{await navigator.clipboard.writeText(ge),M(!0),V({title:"复制成功",description:"Token 已复制到剪贴板"}),setTimeout(()=>M(!1),2e3)}catch{V({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},D=async()=>{if(!d.trim()){V({title:"输入错误",description:"请输入新的 Token",variant:"destructive"});return}if(!Q.isValid){const ge=Q.rules.filter(ye=>!ye.passed).map(ye=>ye.label).join(", ");V({title:"格式错误",description:`Token 不符合要求: ${ge}`,variant:"destructive"});return}v(!0);try{const ge=await fetch("/api/webui/auth/update",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({new_token:d.trim()})}),ye=await ge.json();ge.ok&&ye.success?(h(""),c(d.trim()),V({title:"更新成功",description:"Access Token 已更新,即将跳转到登录页"}),setTimeout(()=>{n({to:"/auth"})},1500)):V({title:"更新失败",description:ye.message||"无法更新 Token",variant:"destructive"})}catch(ge){console.error("更新 Token 错误:",ge),V({title:"更新失败",description:"连接服务器失败",variant:"destructive"})}finally{v(!1)}},ne=async()=>{S(!0);try{const ge=await fetch("/api/webui/auth/regenerate",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include"}),ye=await ge.json();ge.ok&&ye.success?(c(ye.token),K(ye.token),U(!0),A(!1),V({title:"生成成功",description:"新的 Access Token 已生成,请及时保存"})):V({title:"生成失败",description:ye.message||"无法生成新 Token",variant:"destructive"})}catch(ge){console.error("生成 Token 错误:",ge),V({title:"生成失败",description:"连接服务器失败",variant:"destructive"})}finally{S(!1)}},xe=async()=>{try{await navigator.clipboard.writeText(O),A(!0),V({title:"复制成功",description:"Token 已复制到剪贴板"})}catch{V({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},_e=()=>{U(!1),setTimeout(()=>{K(""),A(!1)},300),setTimeout(()=>{n({to:"/auth"})},500)},Se=ge=>{ge||_e()};return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsx($s,{open:F,onOpenChange:Se,children:e.jsxs(Bs,{className:"sm:max-w-md",children:[e.jsxs(Hs,{children:[e.jsxs(qs,{className:"flex items-center gap-2",children:[e.jsx(ya,{className:"h-5 w-5 text-yellow-500"}),"新的 Access Token"]}),e.jsx(Is,{children:"这是您的新 Token,请立即保存。关闭此窗口后将跳转到登录页面。"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"rounded-lg border-2 border-primary/20 bg-primary/5 p-4",children:[e.jsx(b,{className:"text-xs text-muted-foreground mb-2 block",children:"您的新 Token (64位安全令牌)"}),e.jsx("div",{className:"font-mono text-sm break-all select-all bg-background p-3 rounded border",children:O})]}),e.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ya,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5"}),e.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[e.jsx("p",{className:"font-semibold",children:"重要提示"}),e.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[e.jsx("li",{children:"此 Token 仅显示一次,关闭后无法再查看"}),e.jsx("li",{children:"请立即复制并保存到安全的位置"}),e.jsx("li",{children:"关闭窗口后将自动跳转到登录页面"}),e.jsx("li",{children:"请使用新 Token 重新登录系统"})]})]})]})})]}),e.jsxs(at,{className:"gap-2 sm:gap-0",children:[e.jsx(N,{variant:"outline",onClick:xe,className:"gap-2",children:H?e.jsxs(e.Fragment,{children:[e.jsx(sa,{className:"h-4 w-4 text-green-500"}),"已复制"]}):e.jsxs(e.Fragment,{children:[e.jsx(Pc,{className:"h-4 w-4"}),"复制 Token"]})}),e.jsx(N,{onClick:_e,children:"我已保存,关闭"})]})]})}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"当前 Access Token"}),e.jsx("div",{className:"space-y-3 sm:space-y-4",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"current-token",className:"text-sm",children:"您的访问令牌"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(oe,{id:"current-token",type:x?"text":"password",value:i||"••••••••••••••••••••••••••••••••",readOnly:!0,className:"pr-10 font-mono text-sm",placeholder:"Token 存储在安全 Cookie 中"}),e.jsx("button",{onClick:()=>{i?f(!x):V({title:"无法查看",description:'Token 存储在安全 Cookie 中,如需新 Token 请点击"重新生成"'})},className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:x?"隐藏":"显示",children:x?e.jsx(xr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Dt,{className:"h-4 w-4 text-muted-foreground"})})]}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[e.jsx(N,{variant:"outline",size:"icon",onClick:()=>T(i),title:"复制到剪贴板",className:"flex-shrink-0",disabled:!i,children:C?e.jsx(sa,{className:"h-4 w-4 text-green-500"}):e.jsx(Pc,{className:"h-4 w-4"})}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsxs(N,{variant:"outline",disabled:y,className:"gap-2 flex-1 sm:flex-none",children:[e.jsx(Ct,{className:$("h-4 w-4",y&&"animate-spin")}),e.jsx("span",{className:"hidden sm:inline",children:"重新生成"}),e.jsx("span",{className:"sm:hidden",children:"生成"})]})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认重新生成 Token"}),e.jsx(ds,{children:"这将生成一个新的 64 位安全令牌,并使当前 Token 立即失效。 您需要使用新 Token 重新登录系统。此操作不可撤销,确定要继续吗?"})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:ne,children:"确认生成"})]})]})]})]})]}),e.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground",children:"请妥善保管您的 Access Token,不要泄露给他人"})]})})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"自定义 Access Token"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"new-token",className:"text-sm",children:"新的访问令牌"}),e.jsxs("div",{className:"relative",children:[e.jsx(oe,{id:"new-token",type:j?"text":"password",value:d,onChange:ge=>h(ge.target.value),className:"pr-10 font-mono text-sm",placeholder:"输入自定义 Token"}),e.jsx("button",{onClick:()=>p(!j),className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:j?"隐藏":"显示",children:j?e.jsx(xr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Dt,{className:"h-4 w-4 text-muted-foreground"})})]}),d&&e.jsxs("div",{className:"mt-3 space-y-2 p-3 rounded-lg bg-muted/50",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"Token 安全要求:"}),e.jsx("div",{className:"space-y-1.5",children:Q.rules.map(ge=>e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[ge.passed?e.jsx(fa,{className:"h-4 w-4 text-green-500 flex-shrink-0"}):e.jsx(ng,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),e.jsx("span",{className:$(ge.passed?"text-green-600 dark:text-green-400":"text-muted-foreground"),children:ge.label})]},ge.id))}),Q.isValid&&e.jsx("div",{className:"mt-2 pt-2 border-t border-border",children:e.jsxs("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[e.jsx(sa,{className:"h-4 w-4"}),e.jsx("span",{className:"font-medium",children:"Token 格式正确,可以使用"})]})})]})]}),e.jsx(N,{onClick:D,disabled:w||!Q.isValid||!d,className:"w-full sm:w-auto",children:w?"更新中...":"更新自定义 Token"})]})]}),e.jsxs("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3 sm:p-4",children:[e.jsx("h4",{className:"text-sm sm:text-base font-semibold text-yellow-900 dark:text-yellow-200 mb-2",children:"安全提示"}),e.jsxs("ul",{className:"text-xs sm:text-sm text-yellow-800 dark:text-yellow-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"重新生成 Token 会创建系统随机生成的 64 位安全令牌"}),e.jsx("li",{children:"自定义 Token 必须满足所有安全要求才能使用"}),e.jsx("li",{children:"更新 Token 后,旧的 Token 将立即失效"}),e.jsx("li",{children:"请在安全的环境下查看和复制 Token"}),e.jsx("li",{children:"如果怀疑 Token 泄露,请立即重新生成或更新"}),e.jsx("li",{children:"建议使用系统生成的 Token 以获得最高安全性"})]})]})]})}function s0(){const n=ga(),{toast:i}=Gs(),[c,d]=u.useState(!1),[h,x]=u.useState(!1),[f,j]=u.useState(()=>st("logCacheSize")),[p,w]=u.useState(()=>st("wsReconnectInterval")),[v,y]=u.useState(()=>st("wsMaxReconnectAttempts")),[S,C]=u.useState(()=>st("dataSyncInterval")),[M,F]=u.useState(()=>sp()),[U,O]=u.useState(!1),[K,H]=u.useState(!1),A=u.useRef(null);if(h)throw new Error("这是一个手动触发的测试错误,用于验证错误边界组件是否正常工作。");const V=()=>{F(sp())},Q=z=>{const X=z[0];j(X),ai("logCacheSize",X)},T=z=>{const X=z[0];w(X),ai("wsReconnectInterval",X)},D=z=>{const X=z[0];y(X),ai("wsMaxReconnectAttempts",X)},ne=z=>{const X=z[0];C(X),ai("dataSyncInterval",X)},xe=()=>{rn.clearLogs(),i({title:"日志已清除",description:"日志缓存已清空"})},_e=()=>{const z=Xy();V(),i({title:"缓存已清除",description:`已清除 ${z.clearedKeys.length} 项缓存数据`})},Se=()=>{O(!0);try{const z=$y(),X=JSON.stringify(z,null,2),k=new Blob([X],{type:"application/json"}),se=URL.createObjectURL(k),_=document.createElement("a");_.href=se,_.download=`maibot-webui-settings-${new Date().toISOString().slice(0,10)}.json`,document.body.appendChild(_),_.click(),document.body.removeChild(_),URL.revokeObjectURL(se),i({title:"导出成功",description:"设置已导出为 JSON 文件"})}catch(z){console.error("导出设置失败:",z),i({title:"导出失败",description:"无法导出设置",variant:"destructive"})}finally{O(!1)}},ge=z=>{const X=z.target.files?.[0];if(!X)return;H(!0);const k=new FileReader;k.onload=se=>{try{const _=se.target?.result,ue=JSON.parse(_),ie=Qy(ue);ie.success?(j(st("logCacheSize")),w(st("wsReconnectInterval")),y(st("wsMaxReconnectAttempts")),C(st("dataSyncInterval")),V(),i({title:"导入成功",description:`成功导入 ${ie.imported.length} 项设置${ie.skipped.length>0?`,跳过 ${ie.skipped.length} 项`:""}`}),(ie.imported.includes("theme")||ie.imported.includes("accentColor"))&&i({title:"提示",description:"部分设置需要刷新页面才能完全生效"})):i({title:"导入失败",description:"没有有效的设置项可导入",variant:"destructive"})}catch(_){console.error("导入设置失败:",_),i({title:"导入失败",description:"文件格式无效",variant:"destructive"})}finally{H(!1),A.current&&(A.current.value="")}},k.readAsText(X)},ye=()=>{Yy(),j(Aa.logCacheSize),w(Aa.wsReconnectInterval),y(Aa.wsMaxReconnectAttempts),C(Aa.dataSyncInterval),V(),i({title:"已重置",description:"所有设置已恢复为默认值,刷新页面以应用更改"})},be=async()=>{d(!0);try{const z=localStorage.getItem("access-token"),X=await fetch("/api/webui/setup/reset",{method:"POST",headers:{Authorization:`Bearer ${z}`}}),k=await X.json();X.ok&&k.success?(i({title:"重置成功",description:"即将进入初次配置向导"}),setTimeout(()=>{n({to:"/setup"})},1e3)):i({title:"重置失败",description:k.message||"无法重置配置状态",variant:"destructive"})}catch(z){console.error("重置配置状态错误:",z),i({title:"重置失败",description:"连接服务器失败",variant:"destructive"})}finally{d(!1)}};return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(Ic,{className:"h-5 w-5"}),"性能与存储"]}),e.jsxs("div",{className:"space-y-4 sm:space-y-5",children:[e.jsxs("div",{className:"rounded-lg bg-muted/50 p-3 sm:p-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("span",{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(xb,{className:"h-4 w-4"}),"本地存储使用"]}),e.jsx(N,{variant:"ghost",size:"sm",onClick:V,className:"h-7 px-2",children:e.jsx(Ct,{className:"h-3 w-3"})})]}),e.jsx("div",{className:"text-2xl font-bold text-primary",children:Ky(M.used)}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:[M.items," 个存储项"]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"日志缓存大小"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[f," 条"]})]}),e.jsx(Ma,{value:[f],onValueChange:Q,min:100,max:5e3,step:100,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"控制日志查看器最多缓存的日志条数,较大的值会占用更多内存"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"首页数据刷新间隔"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[S," 秒"]})]}),e.jsx(Ma,{value:[S],onValueChange:ne,min:10,max:120,step:5,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"控制首页统计数据的自动刷新间隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"WebSocket 重连间隔"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[p/1e3," 秒"]})]}),e.jsx(Ma,{value:[p],onValueChange:T,min:1e3,max:1e4,step:500,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"日志 WebSocket 连接断开后的重连基础间隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"WebSocket 最大重连次数"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[v," 次"]})]}),e.jsx(Ma,{value:[v],onValueChange:D,min:3,max:30,step:1,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"连接失败后的最大重连尝试次数"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2 pt-2",children:[e.jsxs(N,{variant:"outline",size:"sm",onClick:xe,className:"gap-2",children:[e.jsx(ls,{className:"h-4 w-4"}),"清除日志缓存"]}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",className:"gap-2",children:[e.jsx(ls,{className:"h-4 w-4"}),"清除本地缓存"]})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认清除本地缓存"}),e.jsx(ds,{children:"这将清除所有本地缓存的设置和数据(不包括登录凭证)。 您可能需要重新配置部分偏好设置。确定要继续吗?"})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:_e,children:"确认清除"})]})]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(rl,{className:"h-5 w-5"}),"导入/导出设置"]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"导出当前的界面设置以便备份,或从之前导出的文件中恢复设置。"}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(N,{variant:"outline",onClick:Se,disabled:U,className:"gap-2",children:[e.jsx(rl,{className:"h-4 w-4"}),U?"导出中...":"导出设置"]}),e.jsx("input",{ref:A,type:"file",accept:".json",onChange:ge,className:"hidden"}),e.jsxs(N,{variant:"outline",onClick:()=>A.current?.click(),disabled:K,className:"gap-2",children:[e.jsx(fr,{className:"h-4 w-4"}),K?"导入中...":"导入设置"]})]}),e.jsx("div",{className:"pt-2 border-t",children:e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",className:"gap-2 text-destructive hover:text-destructive",children:[e.jsx(Zc,{className:"h-4 w-4"}),"重置所有设置为默认值"]})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认重置所有设置"}),e.jsx(ds,{children:"这将把所有界面设置恢复为默认值,包括主题、颜色、动画等偏好设置。 此操作不会影响您的登录状态。确定要继续吗?"})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:ye,children:"确认重置"})]})]})]})})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"配置向导"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsx("div",{className:"space-y-2",children:e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"重新进行初次配置向导,可以帮助您重新设置系统的基础配置。"})}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsxs(N,{variant:"outline",disabled:c,className:"gap-2",children:[e.jsx(Zc,{className:$("h-4 w-4",c&&"animate-spin")}),"重新进行初次配置"]})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认重新配置"}),e.jsx(ds,{children:"这将带您重新进入初次配置向导。您可以重新设置系统的基础配置项。确定要继续吗?"})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:be,children:"确认重置"})]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border border-dashed border-yellow-500/50 bg-yellow-500/5 p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(ya,{className:"h-5 w-5 text-yellow-500"}),"开发者工具"]}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsx("div",{className:"space-y-2",children:e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"以下功能仅供开发调试使用,可能会导致页面崩溃或异常。"})}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsxs(N,{variant:"destructive",className:"gap-2",children:[e.jsx(ya,{className:"h-4 w-4"}),"触发测试错误"]})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认触发错误"}),e.jsx(ds,{children:"这将手动触发一个 React 错误,用于测试错误边界组件的显示效果。 页面将显示错误界面,您可以通过刷新页面或点击返回首页来恢复。"})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:()=>x(!0),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认触发"})]})]})]})]})]})]})}function t0(){return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsx("div",{className:"rounded-lg border-2 border-primary/30 bg-gradient-to-r from-primary/5 to-primary/10 p-4 sm:p-6",children:e.jsxs("div",{className:"flex items-start gap-3 sm:gap-4",children:[e.jsx("div",{className:"flex-shrink-0 rounded-lg bg-primary/10 p-2 sm:p-3",children:e.jsx("svg",{className:"h-6 w-6 sm:h-8 sm:w-8 text-primary",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:"text-lg sm:text-xl font-bold text-foreground mb-2",children:"开源项目"}),e.jsx("p",{className:"text-sm sm:text-base text-muted-foreground mb-3",children:"本项目在 GitHub 开源,欢迎 Star ⭐ 支持!"}),e.jsxs("a",{href:"https://github.com/Mai-with-u/MaiBot-Dashboard",target:"_blank",rel:"noopener noreferrer",className:$("inline-flex items-center gap-2 px-4 py-2 rounded-lg","bg-primary text-primary-foreground font-medium text-sm","hover:bg-primary/90 transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"),children:[e.jsx("svg",{className:"h-4 w-4",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})}),"前往 GitHub",e.jsx("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})})]})]})]})}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:["关于 ",Yu]}),e.jsxs("div",{className:"space-y-2 text-xs sm:text-sm text-muted-foreground",children:[e.jsxs("p",{children:["版本: ",Qu]}),e.jsx("p",{children:"麦麦(MaiBot)的现代化 Web 管理界面"})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"作者"}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"MaiBot 核心"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"Mai-with-u"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"WebUI"}),e.jsxs("p",{className:"text-xs sm:text-sm text-muted-foreground",children:["Mai-with-u ",e.jsx("a",{href:"https://github.com/DrSmoothl",target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"@MotricSeven"})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"技术栈"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-xs sm:text-sm text-muted-foreground",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"前端框架"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"React 19.2.0"}),e.jsx("li",{children:"TypeScript 5.7.2"}),e.jsx("li",{children:"Vite 6.0.7"}),e.jsx("li",{children:"TanStack Router 1.94.2"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"UI 组件"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"shadcn/ui"}),e.jsx("li",{children:"Radix UI"}),e.jsx("li",{children:"Tailwind CSS 3.4.17"}),e.jsx("li",{children:"Lucide Icons"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"后端"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"Python 3.12+"}),e.jsx("li",{children:"FastAPI"}),e.jsx("li",{children:"Uvicorn"}),e.jsx("li",{children:"WebSocket"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"构建工具"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"Bun / npm"}),e.jsx("li",{children:"ESLint 9.17.0"}),e.jsx("li",{children:"PostCSS"})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源库感谢"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mb-3",children:"本项目使用了以下优秀的开源库,感谢他们的贡献:"}),e.jsx(ss,{className:"h-[300px] sm:h-[400px]",children:e.jsxs("div",{className:"space-y-4 pr-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"UI 框架与组件"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zs,{name:"React",description:"用户界面构建库",license:"MIT"}),e.jsx(Zs,{name:"shadcn/ui",description:"优雅的 React 组件库",license:"MIT"}),e.jsx(Zs,{name:"Radix UI",description:"无样式的可访问组件库",license:"MIT"}),e.jsx(Zs,{name:"Tailwind CSS",description:"实用优先的 CSS 框架",license:"MIT"}),e.jsx(Zs,{name:"Lucide React",description:"精美的图标库",license:"ISC"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"路由与状态管理"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zs,{name:"TanStack Router",description:"类型安全的路由库",license:"MIT"}),e.jsx(Zs,{name:"Zustand",description:"轻量级状态管理",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"表单处理"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zs,{name:"React Hook Form",description:"高性能表单库",license:"MIT"}),e.jsx(Zs,{name:"Zod",description:"TypeScript 优先的 schema 验证",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"工具库"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zs,{name:"clsx",description:"条件 className 构建工具",license:"MIT"}),e.jsx(Zs,{name:"tailwind-merge",description:"Tailwind 类名合并工具",license:"MIT"}),e.jsx(Zs,{name:"class-variance-authority",description:"组件变体管理",license:"Apache-2.0"}),e.jsx(Zs,{name:"date-fns",description:"现代化日期处理库",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"动画效果"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zs,{name:"Framer Motion",description:"React 动画库",license:"MIT"}),e.jsx(Zs,{name:"vaul",description:"抽屉组件动画",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"后端框架"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zs,{name:"FastAPI",description:"现代化 Python Web 框架",license:"MIT"}),e.jsx(Zs,{name:"Uvicorn",description:"ASGI 服务器",license:"BSD-3-Clause"}),e.jsx(Zs,{name:"Pydantic",description:"数据验证库",license:"MIT"}),e.jsx(Zs,{name:"python-multipart",description:"文件上传支持",license:"Apache-2.0"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"开发工具"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zs,{name:"TypeScript",description:"JavaScript 的超集",license:"Apache-2.0"}),e.jsx(Zs,{name:"Vite",description:"下一代前端构建工具",license:"MIT"}),e.jsx(Zs,{name:"ESLint",description:"JavaScript 代码检查工具",license:"MIT"}),e.jsx(Zs,{name:"PostCSS",description:"CSS 转换工具",license:"MIT"})]})]})]})})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源许可"}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"rounded-lg bg-primary/5 border border-primary/20 p-3 sm:p-4",children:e.jsxs("div",{className:"flex items-start gap-2 sm:gap-3",children:[e.jsx("div",{className:"flex-shrink-0 mt-0.5",children:e.jsx("div",{className:"rounded-md bg-primary/10 px-2 py-1",children:e.jsx("span",{className:"text-xs sm:text-sm font-bold text-primary",children:"GPLv3"})})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm sm:text-base font-semibold text-foreground mb-1",children:"MaiBot WebUI"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目采用 GNU General Public License v3.0 开源许可证。 您可以自由地使用、修改和分发本软件,但必须保持相同的开源许可。"})]})]})}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目依赖的所有开源库均遵循各自的开源许可证(MIT、Apache-2.0、BSD 等)。 感谢所有开源贡献者的无私奉献。"})]})]})]})}function Zs({name:n,description:i,license:c}){return e.jsxs("div",{className:"flex items-start justify-between gap-2 rounded-lg border bg-muted/30 p-2.5 sm:p-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium text-foreground truncate",children:n}),e.jsx("p",{className:"text-muted-foreground text-xs mt-0.5",children:i})]}),e.jsx("span",{className:"inline-flex items-center rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-medium text-primary flex-shrink-0",children:c})]})}function Eu({value:n,current:i,onChange:c,label:d,description:h}){const x=i===n;return e.jsxs("button",{onClick:()=>c(n),className:$("relative rounded-lg border-2 p-3 sm:p-4 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",x?"border-primary bg-accent":"border-border"),children:[x&&e.jsx("div",{className:"absolute top-2 right-2 sm:top-3 sm:right-3 h-2 w-2 rounded-full bg-primary"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-sm sm:text-base font-medium",children:d}),e.jsx("div",{className:"text-[10px] sm:text-xs text-muted-foreground",children:h})]}),e.jsxs("div",{className:"mt-2 sm:mt-3 flex gap-1",children:[n==="light"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-200"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-300"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-400"})]}),n==="dark"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-700"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-800"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-900"})]}),n==="system"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-200 to-slate-700"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-300 to-slate-800"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-400 to-slate-900"})]})]})]})}function xa({value:n,current:i,onChange:c,label:d,colorClass:h}){const x=i===n;return e.jsxs("button",{onClick:()=>c(n),className:$("relative rounded-lg border-2 p-2 sm:p-3 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",x?"border-primary bg-accent":"border-border"),children:[x&&e.jsx("div",{className:"absolute top-1.5 right-1.5 sm:top-2 sm:right-2 h-1.5 w-1.5 sm:h-2 sm:w-2 rounded-full bg-primary"}),e.jsxs("div",{className:"flex flex-col items-center gap-1.5 sm:gap-2",children:[e.jsx("div",{className:$("h-8 w-8 sm:h-10 sm:w-10 rounded-full",h)}),e.jsx("div",{className:"text-[10px] sm:text-xs font-medium text-center",children:d})]})]})}class a0{grad3;p;perm;constructor(i=0){this.grad3=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],this.p=[];for(let c=0;c<256;c++)this.p[c]=Math.floor(Math.random()*256);this.perm=[];for(let c=0;c<512;c++)this.perm[c]=this.p[c&255]}dot(i,c,d){return i[0]*c+i[1]*d}mix(i,c,d){return(1-d)*i+d*c}fade(i){return i*i*i*(i*(i*6-15)+10)}perlin2(i,c){const d=Math.floor(i)&255,h=Math.floor(c)&255;i-=Math.floor(i),c-=Math.floor(c);const x=this.fade(i),f=this.fade(c),j=this.perm[d]+h,p=this.perm[j],w=this.perm[j+1],v=this.perm[d+1]+h,y=this.perm[v],S=this.perm[v+1];return this.mix(this.mix(this.dot(this.grad3[p%12],i,c),this.dot(this.grad3[y%12],i-1,c),x),this.mix(this.dot(this.grad3[w%12],i,c-1),this.dot(this.grad3[S%12],i-1,c-1),x),f)}}function ap(){const n=u.useRef(null),i=u.useRef(null),c=u.useRef(void 0),d=u.useRef({mouse:{x:-10,y:0,lx:0,ly:0,sx:0,sy:0,v:0,vs:0,a:0,set:!1},lines:[],paths:[],noise:new a0(Math.random()),bounding:null});return u.useEffect(()=>{const h=i.current,x=n.current;if(!h||!x)return;const f=d.current,j=()=>{const F=h.getBoundingClientRect();f.bounding=F,x.style.width=`${F.width}px`,x.style.height=`${F.height}px`},p=()=>{if(!f.bounding)return;const{width:F,height:U}=f.bounding;f.lines=[],f.paths.forEach(ne=>ne.remove()),f.paths=[];const O=10,K=32,H=F+200,A=U+30,V=Math.ceil(H/O),Q=Math.ceil(A/K),T=(F-O*V)/2,D=(U-K*Q)/2;for(let ne=0;ne<=V;ne++){const xe=[];for(let Se=0;Se<=Q;Se++){const ge={x:T+O*ne,y:D+K*Se,wave:{x:0,y:0},cursor:{x:0,y:0,vx:0,vy:0}};xe.push(ge)}const _e=document.createElementNS("http://www.w3.org/2000/svg","path");x.appendChild(_e),f.paths.push(_e),f.lines.push(xe)}},w=F=>{const{lines:U,mouse:O,noise:K}=f;U.forEach(H=>{H.forEach(A=>{const V=K.perlin2((A.x+F*.0125)*.002,(A.y+F*.005)*.0015)*12;A.wave.x=Math.cos(V)*32,A.wave.y=Math.sin(V)*16;const Q=A.x-O.sx,T=A.y-O.sy,D=Math.hypot(Q,T),ne=Math.max(175,O.vs);if(D{const O={x:F.x+F.wave.x+(U?F.cursor.x:0),y:F.y+F.wave.y+(U?F.cursor.y:0)};return O.x=Math.round(O.x*10)/10,O.y=Math.round(O.y*10)/10,O},y=()=>{const{lines:F,paths:U}=f;F.forEach((O,K)=>{let H=v(O[0],!1),A=`M ${H.x} ${H.y}`;O.forEach((V,Q)=>{const T=Q===O.length-1;H=v(V,!T),A+=`L ${H.x} ${H.y}`}),U[K].setAttribute("d",A)})},S=F=>{const{mouse:U}=f;U.sx+=(U.x-U.sx)*.1,U.sy+=(U.y-U.sy)*.1;const O=U.x-U.lx,K=U.y-U.ly,H=Math.hypot(O,K);U.v=H,U.vs+=(H-U.vs)*.1,U.vs=Math.min(100,U.vs),U.lx=U.x,U.ly=U.y,U.a=Math.atan2(K,O),h&&(h.style.setProperty("--x",`${U.sx}px`),h.style.setProperty("--y",`${U.sy}px`)),w(F),y(),c.current=requestAnimationFrame(S)},C=F=>{if(!f.bounding)return;const{mouse:U}=f;U.x=F.pageX-f.bounding.left,U.y=F.pageY-f.bounding.top+window.scrollY,U.set||(U.sx=U.x,U.sy=U.y,U.lx=U.x,U.ly=U.y,U.set=!0)},M=()=>{j(),p()};return j(),p(),window.addEventListener("resize",M),window.addEventListener("mousemove",C),c.current=requestAnimationFrame(S),()=>{window.removeEventListener("resize",M),window.removeEventListener("mousemove",C),c.current&&cancelAnimationFrame(c.current)}},[]),e.jsxs("div",{ref:i,className:"waves-background",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflow:"hidden",pointerEvents:"none"},children:[e.jsx("div",{className:"waves-cursor",style:{position:"absolute",top:0,left:0,width:"0.5rem",height:"0.5rem",background:"hsl(var(--primary) / 0.3)",borderRadius:"50%",transform:"translate3d(calc(var(--x, -0.5rem) - 50%), calc(var(--y, 50%) - 50%), 0)",willChange:"transform",pointerEvents:"none"}}),e.jsx("svg",{ref:n,style:{display:"block",width:"100%",height:"100%"},children:e.jsx("style",{children:` + path { + fill: none; + stroke: hsl(var(--primary) / 0.20); + stroke-width: 1px; + } + `})})]})}async function Te(n,i){const c={...i,credentials:"include",headers:{"Content-Type":"application/json",...i?.headers}},d=await fetch(n,c);if(d.status===401)throw window.location.href="/auth",new Error("认证失败,请重新登录");return d}function Ls(){return{"Content-Type":"application/json"}}async function l0(){try{await fetch("/api/webui/auth/logout",{method:"POST",credentials:"include"})}catch(n){console.error("登出请求失败:",n)}window.location.href="/auth"}async function Ku(){try{return(await(await fetch("/api/webui/auth/check",{method:"GET",credentials:"include"})).json()).authenticated===!0}catch{return!1}}function n0(){const[n,i]=u.useState(""),[c,d]=u.useState(!1),[h,x]=u.useState(""),[f,j]=u.useState(!0),p=ga(),{enableWavesBackground:w,setEnableWavesBackground:v}=wg(),{theme:y,setTheme:S}=$u();u.useEffect(()=>{(async()=>{try{await Ku()&&p({to:"/"})}catch{}finally{j(!1)}})()},[p]);const M=y==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":y,F=()=>{S(M==="dark"?"light":"dark")},U=async O=>{if(O.preventDefault(),x(""),!n.trim()){x("请输入 Access Token");return}d(!0);try{const K=await fetch("/api/webui/auth/verify",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({token:n.trim()})}),H=await K.json();K.ok&&H.valid?H.is_first_setup?p({to:"/setup"}):p({to:"/"}):x(H.message||"Token 验证失败,请检查后重试")}catch(K){console.error("Token 验证错误:",K),x("连接服务器失败,请检查网络连接")}finally{d(!1)}};return f?e.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[w&&e.jsx(ap,{}),e.jsx("div",{className:"text-muted-foreground",children:"正在检查登录状态..."})]}):e.jsxs("div",{className:"relative flex min-h-screen items-center justify-center overflow-hidden bg-background p-4",children:[w&&e.jsx(ap,{}),e.jsxs(Ze,{className:"relative z-10 w-full max-w-md shadow-2xl backdrop-blur-xl bg-card/80 border-border/50",children:[e.jsx("button",{onClick:F,className:"absolute right-4 top-4 rounded-lg p-2 hover:bg-accent transition-colors z-10 text-foreground",title:M==="dark"?"切换到浅色模式":"切换到深色模式",children:M==="dark"?e.jsx(ig,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"}):e.jsx(rg,{className:"h-5 w-5",strokeWidth:2.5,fill:"none"})}),e.jsxs(ys,{className:"space-y-4 text-center",children:[e.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-2xl bg-primary/10",children:e.jsx($f,{className:"h-8 w-8 text-primary",strokeWidth:2,fill:"none"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(ws,{className:"text-2xl font-bold",children:"欢迎使用 MaiBot"}),e.jsx(ct,{className:"text-base",children:"请输入您的 Access Token 以继续访问系统"})]})]}),e.jsx(Ts,{children:e.jsxs("form",{onSubmit:U,className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"token",className:"text-sm font-medium",children:"Access Token"}),e.jsxs("div",{className:"relative",children:[e.jsx(cg,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground",strokeWidth:2,fill:"none"}),e.jsx(oe,{id:"token",type:"password",placeholder:"请输入您的 Access Token",value:n,onChange:O=>i(O.target.value),className:$("pl-10",h&&"border-red-500 focus-visible:ring-red-500"),disabled:c,autoFocus:!0,autoComplete:"off"})]})]}),h&&e.jsxs("div",{className:"flex items-center gap-2 rounded-md bg-red-50 p-3 text-sm text-red-600 dark:bg-red-950/50 dark:text-red-400",children:[e.jsx(Oa,{className:"h-4 w-4 flex-shrink-0",strokeWidth:2,fill:"none"}),e.jsx("span",{children:h})]}),e.jsx(N,{type:"submit",className:"w-full",disabled:c,children:c?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent"}),"验证中..."]}):"验证并进入"}),e.jsxs($s,{children:[e.jsx(Xu,{asChild:!0,children:e.jsxs("button",{className:"w-full text-center text-sm text-primary hover:text-primary/80 transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[e.jsx(og,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我没有 Token,我该去哪里获得 Token?"]})}),e.jsxs(Bs,{className:"sm:max-w-md",children:[e.jsxs(Hs,{children:[e.jsxs(qs,{className:"flex items-center gap-2",children:[e.jsx($f,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"如何获取 Access Token"]}),e.jsx(Is,{children:"Access Token 是访问 MaiBot WebUI 的唯一凭证,请按以下方式获取"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(fb,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx("h4",{className:"font-semibold text-sm",children:"方式一:查看启动日志"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"在 MaiBot 启动时,控制台会显示 WebUI Access Token。"}),e.jsxs("div",{className:"rounded bg-background p-2 font-mono text-xs",children:[e.jsx("p",{className:"text-muted-foreground",children:"🔑 WebUI Access Token: abc123..."}),e.jsx("p",{className:"text-muted-foreground",children:"💡 请使用此 Token 登录 WebUI"})]})]})]})}),e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(Da,{className:"h-5 w-5 text-primary flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"flex-1 space-y-2",children:[e.jsx("h4",{className:"font-semibold text-sm",children:"方式二:查看配置文件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Token 保存在项目根目录的配置文件中:"}),e.jsx("div",{className:"rounded bg-background p-2 font-mono text-xs break-all",children:e.jsx("code",{className:"text-primary",children:"data/webui.json"})}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["打开此文件,复制 ",e.jsx("code",{className:"px-1 py-0.5 bg-background rounded",children:"access_token"})," 字段的值"]})]})]})}),e.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Oa,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5",strokeWidth:2,fill:"none"}),e.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[e.jsx("p",{className:"font-semibold",children:"安全提示"}),e.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[e.jsx("li",{children:"请妥善保管您的 Token,不要泄露给他人"}),e.jsx("li",{children:"如需重置 Token,请在登录后前往系统设置"})]})]})]})})]})]})]}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsxs("button",{className:"w-full text-center text-sm text-muted-foreground hover:text-foreground transition-colors underline-offset-4 hover:underline flex items-center justify-center gap-1",children:[e.jsx(cn,{className:"h-4 w-4",strokeWidth:2,fill:"none"}),"我觉得这个界面很卡怎么办?"]})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsxs(os,{className:"flex items-center gap-2",children:[e.jsx(cn,{className:"h-5 w-5 text-primary",strokeWidth:2,fill:"none"}),"关闭背景动画"]}),e.jsx(ds,{children:"背景动画可能会在低性能设备上造成卡顿。关闭动画可以显著提升界面流畅度。"})]}),e.jsx("div",{className:"rounded-lg border bg-muted/50 p-4 space-y-2",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭动画后,背景将变为纯色,但不影响任何功能的使用。您可以随时在系统设置中重新开启动画。"})}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:()=>v(!1),children:"关闭动画"})]})]})]})]})})]}),e.jsx("div",{className:"absolute bottom-4 left-0 right-0 text-center text-xs text-muted-foreground",children:e.jsx("p",{children:Gy})})]})}const Fs=u.forwardRef(({className:n,...i},c)=>e.jsx("textarea",{className:$("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",n),ref:c,...i}));Fs.displayName="Textarea";const jr=u.forwardRef(({className:n,orientation:i="horizontal",decorative:c=!0,...d},h)=>e.jsx(Op,{ref:h,decorative:c,orientation:i,className:$("shrink-0 bg-border",i==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",n),...d}));jr.displayName=Op.displayName;function i0({config:n,onChange:i}){const c=h=>{h.trim()&&!n.alias_names.includes(h.trim())&&i({...n,alias_names:[...n.alias_names,h.trim()]})},d=h=>{i({...n,alias_names:n.alias_names.filter((x,f)=>f!==h)})};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"qq_account",children:"QQ账号 *"}),e.jsx(oe,{id:"qq_account",type:"number",placeholder:"请输入机器人的QQ账号",value:n.qq_account||"",onChange:h=>i({...n,qq_account:Number(h.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人登录使用的QQ账号"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"nickname",children:"昵称 *"}),e.jsx(oe,{id:"nickname",placeholder:"请输入机器人的昵称",value:n.nickname,onChange:h=>i({...n,nickname:h.target.value})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的主要称呼名称"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{children:"别名"}),e.jsx("div",{className:"flex flex-wrap gap-2 mb-2",children:n.alias_names.map((h,x)=>e.jsxs(Ye,{variant:"secondary",className:"gap-1",children:[h,e.jsx("button",{type:"button",onClick:()=>d(x),className:"ml-1 hover:text-destructive",children:e.jsx(dl,{className:"h-3 w-3"})})]},x))}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(oe,{id:"alias_input",placeholder:"输入别名后按回车添加",onKeyPress:h=>{h.key==="Enter"&&(c(h.target.value),h.target.value="")}}),e.jsx(N,{type:"button",variant:"outline",onClick:()=>{const h=document.getElementById("alias_input");h&&(c(h.value),h.value="")},children:"添加"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人的其他称呼,可以添加多个"})]})]})}function r0({config:n,onChange:i}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"personality",children:"人格特征 *"}),e.jsx(Fs,{id:"personality",placeholder:"描述机器人的人格特质和身份特征(建议120字以内)",value:n.personality,onChange:c=>i({...n,personality:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:是一个女大学生,现在在读大二,会刷贴吧"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"reply_style",children:"表达风格 *"}),e.jsx(Fs,{id:"reply_style",placeholder:"描述机器人说话的表达风格、表达习惯",value:n.reply_style,onChange:c=>i({...n,reply_style:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"例如:回复平淡一些,简短一些,说中文,参考贴吧、知乎和微博的回复风格"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"interest",children:"兴趣 *"}),e.jsx(Fs,{id:"interest",placeholder:"描述机器人感兴趣的话题",value:n.interest,onChange:c=>i({...n,interest:c.target.value}),rows:2}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"会影响机器人对什么话题进行回复"})]}),e.jsx(jr,{}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"plan_style",children:"群聊说话规则 *"}),e.jsx(Fs,{id:"plan_style",placeholder:"机器人在群聊中的行为风格和规则",value:n.plan_style,onChange:c=>i({...n,plan_style:c.target.value}),rows:4}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在群聊中如何行动,例如回复频率、条件等"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"private_plan_style",children:"私聊说话规则 *"}),e.jsx(Fs,{id:"private_plan_style",placeholder:"机器人在私聊中的行为风格和规则",value:n.private_plan_style,onChange:c=>i({...n,private_plan_style:c.target.value}),rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"定义机器人在私聊中的行为方式"})]})]})}function c0({config:n,onChange:i}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{htmlFor:"emoji_chance",children:"表情包激活概率"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[(n.emoji_chance*100).toFixed(0),"%"]})]}),e.jsx(oe,{id:"emoji_chance",type:"range",min:"0",max:"1",step:"0.1",value:n.emoji_chance,onChange:c=>i({...n,emoji_chance:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人发送表情包的概率"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"max_reg_num",children:"最大表情包数量"}),e.jsx(oe,{id:"max_reg_num",type:"number",min:"1",max:"200",value:n.max_reg_num,onChange:c=>i({...n,max_reg_num:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"机器人最多保存的表情包数量"})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"do_replace",children:"达到最大数量时替换"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"开启后会删除旧表情包,关闭则不再收集新表情包"})]}),e.jsx(Xe,{id:"do_replace",checked:n.do_replace,onCheckedChange:c=>i({...n,do_replace:c})})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),e.jsx(oe,{id:"check_interval",type:"number",min:"1",max:"120",value:n.check_interval,onChange:c=>i({...n,check_interval:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包注册、破损、删除的时间间隔"})]}),e.jsx(jr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"steal_emoji",children:"偷取表情包"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人将一些表情包据为己有"})]}),e.jsx(Xe,{id:"steal_emoji",checked:n.steal_emoji,onCheckedChange:c=>i({...n,steal_emoji:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"content_filtration",children:"启用表情包过滤"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"只保存符合要求的表情包"})]}),e.jsx(Xe,{id:"content_filtration",checked:n.content_filtration,onCheckedChange:c=>i({...n,content_filtration:c})})]}),n.content_filtration&&e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"filtration_prompt",children:"过滤要求"}),e.jsx(oe,{id:"filtration_prompt",placeholder:"例如:符合公序良俗",value:n.filtration_prompt,onChange:c=>i({...n,filtration_prompt:c.target.value})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"描述表情包应该符合的要求"})]})]})}function o0({config:n,onChange:i}){return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"enable_tool",children:"启用工具系统"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人使用各种工具增强功能"})]}),e.jsx(Xe,{id:"enable_tool",checked:n.enable_tool,onCheckedChange:c=>i({...n,enable_tool:c})})]}),e.jsx(jr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"enable_mood",children:"启用情绪系统"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"让机器人具有情绪变化能力"})]}),e.jsx(Xe,{id:"enable_mood",checked:n.enable_mood,onCheckedChange:c=>i({...n,enable_mood:c})})]}),n.enable_mood&&e.jsxs("div",{className:"ml-6 space-y-6 border-l-2 border-primary/20 pl-6",children:[e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"mood_update_threshold",children:"情绪更新阈值"}),e.jsx(oe,{id:"mood_update_threshold",type:"number",min:"0.1",max:"10",step:"0.1",value:n.mood_update_threshold||1,onChange:c=>i({...n,mood_update_threshold:Number(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"值越高,情绪更新越慢"})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"emotion_style",children:"情感特征"}),e.jsx(Fs,{id:"emotion_style",placeholder:"描述情绪的变化情况,例如:情绪较为稳定,但遭遇特定事件时起伏较大",value:n.emotion_style||"",onChange:c=>i({...n,emotion_style:c.target.value}),rows:2}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"影响机器人的情绪变化方式"})]})]}),e.jsx(jr,{}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{htmlFor:"all_global",children:"启用全局黑话模式"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"允许机器人学习和使用群组黑话"})]}),e.jsx(Xe,{id:"all_global",checked:n.all_global,onCheckedChange:c=>i({...n,all_global:c})})]})]})}function d0({config:n,onChange:i}){const[c,d]=u.useState(!1);return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-4",children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx("div",{className:"mt-0.5",children:e.jsx("svg",{className:"h-5 w-5 text-blue-600 dark:text-blue-400",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})})}),e.jsxs("div",{className:"flex-1 text-sm",children:[e.jsx("p",{className:"font-medium text-blue-900 dark:text-blue-100 mb-1",children:"关于硅基流动 (SiliconFlow)"}),e.jsx("p",{className:"text-blue-700 dark:text-blue-300 mb-2",children:"硅基流动提供了完整的模型覆盖,包括 DeepSeek V3、Qwen、视觉模型、语音识别和嵌入模型。 只需一个 API Key 即可使用麦麦的所有功能!"}),e.jsxs("a",{href:"https://cloud.siliconflow.cn",target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 text-blue-600 dark:text-blue-400 hover:underline font-medium",children:["前往硅基流动获取 API Key",e.jsx(Xc,{className:"h-3 w-3"})]})]})]})}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(b,{htmlFor:"siliconflow_api_key",children:"SiliconFlow API Key *"}),e.jsxs("div",{className:"relative",children:[e.jsx(oe,{id:"siliconflow_api_key",type:c?"text":"password",placeholder:"sk-...",value:n.api_key,onChange:h=>i({api_key:h.target.value}),className:"font-mono pr-10"}),e.jsx(N,{type:"button",variant:"ghost",size:"sm",className:"absolute right-0 top-0 h-full px-3 hover:bg-transparent",onClick:()=>d(!c),children:c?e.jsx(xr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Dt,{className:"h-4 w-4 text-muted-foreground"})})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"请输入您的硅基流动 API 密钥。获取后,麦麦将自动配置所有必需的模型。"})]}),e.jsxs("div",{className:"rounded-lg bg-muted/50 p-4 text-sm space-y-2",children:[e.jsx("p",{className:"font-medium",children:"将自动配置以下模型:"}),e.jsxs("ul",{className:"list-disc list-inside space-y-1 text-muted-foreground ml-2",children:[e.jsx("li",{children:"DeepSeek V3 - 主要对话和工具模型"}),e.jsx("li",{children:"Qwen3 30B - 高频小任务和工具调用"}),e.jsx("li",{children:"Qwen3 VL 30B - 图像识别"}),e.jsx("li",{children:"SenseVoice - 语音识别"}),e.jsx("li",{children:"BGE-M3 - 文本嵌入"}),e.jsx("li",{children:"知识库相关模型 (LPMM)"})]})]}),e.jsx("div",{className:"rounded-lg border border-amber-200 dark:border-amber-800 bg-amber-50 dark:bg-amber-950/30 p-4",children:e.jsxs("p",{className:"text-sm text-amber-900 dark:text-amber-100",children:[e.jsx("span",{className:"font-medium",children:"💡 提示:"}),'完成向导后,您可以在"系统设置 → 模型配置"中添加更多 API 提供商和模型。']})})]})}async function u0(){const n=await Te("/api/webui/config/bot",{method:"GET",headers:Ls()});if(!n.ok)throw new Error("读取Bot配置失败");const c=(await n.json()).config.bot||{};return{qq_account:c.qq_account||0,nickname:c.nickname||"",alias_names:c.alias_names||[]}}async function m0(){const n=await Te("/api/webui/config/bot",{method:"GET",headers:Ls()});if(!n.ok)throw new Error("读取人格配置失败");const c=(await n.json()).config.personality||{};return{personality:c.personality||"",reply_style:c.reply_style||"",interest:c.interest||"",plan_style:c.plan_style||"",private_plan_style:c.private_plan_style||""}}async function h0(){const n=await Te("/api/webui/config/bot",{method:"GET",headers:Ls()});if(!n.ok)throw new Error("读取表情包配置失败");const c=(await n.json()).config.emoji||{};return{emoji_chance:c.emoji_chance??.4,max_reg_num:c.max_reg_num??40,do_replace:c.do_replace??!0,check_interval:c.check_interval??10,steal_emoji:c.steal_emoji??!0,content_filtration:c.content_filtration??!1,filtration_prompt:c.filtration_prompt||""}}async function x0(){const n=await Te("/api/webui/config/bot",{method:"GET",headers:Ls()});if(!n.ok)throw new Error("读取其他配置失败");const c=(await n.json()).config,d=c.tool||{},h=c.mood||{},x=c.jargon||{};return{enable_tool:d.enable_tool??!0,enable_mood:h.enable_mood??!1,mood_update_threshold:h.mood_update_threshold,emotion_style:h.emotion_style,all_global:x.all_global??!0}}async function f0(){const n=await Te("/api/webui/config/model",{method:"GET",headers:Ls()});if(!n.ok)throw new Error("读取模型配置失败");return{api_key:((await n.json()).config.api_providers||[]).find(x=>x.name==="SiliconFlow")?.api_key||""}}async function p0(n){const i=await Te("/api/webui/config/bot/section/bot",{method:"POST",headers:Ls(),body:JSON.stringify(n)});if(!i.ok){const c=await i.json();throw new Error(c.detail||"保存Bot基础配置失败")}return await i.json()}async function g0(n){const i=await Te("/api/webui/config/bot/section/personality",{method:"POST",headers:Ls(),body:JSON.stringify(n)});if(!i.ok){const c=await i.json();throw new Error(c.detail||"保存人格配置失败")}return await i.json()}async function j0(n){const i=await Te("/api/webui/config/bot/section/emoji",{method:"POST",headers:Ls(),body:JSON.stringify(n)});if(!i.ok){const c=await i.json();throw new Error(c.detail||"保存表情包配置失败")}return await i.json()}async function v0(n){const i=[];i.push(Te("/api/webui/config/bot/section/tool",{method:"POST",headers:Ls(),body:JSON.stringify({enable_tool:n.enable_tool})})),i.push(Te("/api/webui/config/bot/section/jargon",{method:"POST",headers:Ls(),body:JSON.stringify({all_global:n.all_global})}));const c={enable_mood:n.enable_mood};n.enable_mood&&(c.mood_update_threshold=n.mood_update_threshold||1,c.emotion_style=n.emotion_style||""),i.push(Te("/api/webui/config/bot/section/mood",{method:"POST",headers:Ls(),body:JSON.stringify(c)}));const d=await Promise.all(i);for(const h of d)if(!h.ok){const x=await h.json();throw new Error(x.detail||"保存其他配置失败")}return{success:!0}}async function N0(n){const i=await Te("/api/webui/config/model",{method:"GET",headers:Ls()});if(!i.ok)throw new Error("读取模型配置失败");const d=(await i.json()).config,h=d.api_providers||[],x=h.findIndex(p=>p.name==="SiliconFlow");x>=0?h[x]={...h[x],api_key:n.api_key}:h.push({name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",api_key:n.api_key,client_type:"openai",max_retry:3,timeout:120,retry_interval:5});const f={...d,api_providers:h},j=await Te("/api/webui/config/model",{method:"POST",headers:Ls(),body:JSON.stringify(f)});if(!j.ok){const p=await j.json();throw new Error(p.detail||"保存模型配置失败")}return await j.json()}async function lp(){const n=localStorage.getItem("access-token"),i=await Te("/api/webui/setup/complete",{method:"POST",headers:{Authorization:`Bearer ${n}`}});if(!i.ok){const c=await i.json();throw new Error(c.message||"标记配置完成失败")}return await i.json()}async function lo(){const n=await Te("/api/webui/system/restart",{method:"POST",headers:Ls()});if(!n.ok){const i=await n.json();throw new Error(i.detail||"重启失败")}return await n.json()}async function b0(){const n=await Te("/api/webui/system/status",{method:"GET",headers:Ls()});if(!n.ok){const i=await n.json();throw new Error(i.detail||"获取状态失败")}return await n.json()}function y0(){const n=ga(),{toast:i}=Gs(),[c,d]=u.useState(0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,w]=u.useState(!0),[v,y]=u.useState({qq_account:0,nickname:"",alias_names:[]}),[S,C]=u.useState({personality:"是一个女大学生,现在在读大二,会刷贴吧。",reply_style:"请回复的平淡一些,简短一些,说中文,不要刻意突出自身学科背景。可以参考贴吧,知乎和微博的回复风格。",interest:"对技术相关话题,游戏和动漫相关话题感兴趣,也对日常话题感兴趣,不喜欢太过沉重严肃的话题",plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 +2.如果相同的内容已经被执行,请不要重复执行 +3.请控制你的发言频率,不要太过频繁的发言 +4.如果有人对你感到厌烦,请减少回复 +5.如果有人对你进行攻击,或者情绪激动,请你以合适的方法应对`,private_plan_style:`1.思考**所有**的可用的action中的**每个动作**是否符合当下条件,如果动作使用条件符合聊天内容就使用 +2.如果相同的内容已经被执行,请不要重复执行 +3.某句话如果已经被回复过,不要重复回复`}),[M,F]=u.useState({emoji_chance:.4,max_reg_num:40,do_replace:!0,check_interval:10,steal_emoji:!0,content_filtration:!1,filtration_prompt:"符合公序良俗"}),[U,O]=u.useState({enable_tool:!0,enable_mood:!1,mood_update_threshold:1,emotion_style:"情绪较为稳定,但遇遇特定事件的时候起伏较大",all_global:!0}),[K,H]=u.useState({api_key:""}),[A,V]=u.useState(!1),[Q,T]=u.useState(""),D=[{id:"bot-basic",title:"Bot基础",description:"配置机器人的基本信息",icon:cr},{id:"personality",title:"人格配置",description:"定义机器人的性格和说话风格",icon:Wc},{id:"emoji",title:"表情包",description:"配置表情包相关设置",icon:Gu},{id:"other",title:"其他设置",description:"工具、情绪系统等配置",icon:oi},{id:"siliconflow",title:"API配置",description:"配置硅基流动API密钥",icon:cg}],ne=(c+1)/D.length*100;u.useEffect(()=>{(async()=>{try{w(!0);const[X,k,se,_,ue]=await Promise.all([u0(),m0(),h0(),x0(),f0()]);y(X),C(k),F(se),O(_),H(ue)}catch(X){i({title:"加载配置失败",description:X instanceof Error?X.message:"无法加载现有配置,将使用默认值",variant:"destructive"})}finally{w(!1)}})()},[i]);const xe=async()=>{j(!0);try{switch(c){case 0:await p0(v);break;case 1:await g0(S);break;case 2:await j0(M);break;case 3:await v0(U);break;case 4:await N0(K);break}return i({title:"保存成功",description:`${D[c].title}配置已保存`}),!0}catch(z){return i({title:"保存失败",description:z instanceof Error?z.message:"未知错误",variant:"destructive"}),!1}finally{j(!1)}},_e=async()=>{await xe()&&c{c>0&&d(c-1)},ge=async()=>{x(!0),V(!0);try{if(T("正在保存API配置..."),!await xe()){x(!1),V(!1);return}T("正在完成初始化..."),await lp(),T("正在重启麦麦..."),await lo(),i({title:"配置完成",description:"麦麦正在重启以应用新配置..."}),T("等待麦麦重启完成...");const X=60;let k=0,se=!1;for(;ksetTimeout(_,1e3));try{(await b0()).running&&(se=!0,T("重启成功!正在跳转..."))}catch{k++}}if(!se)throw new Error("重启超时,请手动检查麦麦状态");setTimeout(()=>{n({to:"/"})},1e3)}catch(z){V(!1),i({title:"配置失败",description:z instanceof Error?z.message:"未知错误",variant:"destructive"})}finally{x(!1)}},ye=async()=>{try{await lp(),n({to:"/"})}catch(z){i({title:"跳过失败",description:z instanceof Error?z.message:"未知错误",variant:"destructive"})}},be=()=>{switch(c){case 0:return e.jsx(i0,{config:v,onChange:y});case 1:return e.jsx(r0,{config:S,onChange:C});case 2:return e.jsx(c0,{config:M,onChange:F});case 3:return e.jsx(o0,{config:U,onChange:O});case 4:return e.jsx(d0,{config:K,onChange:H});default:return null}};return e.jsxs("div",{className:"relative flex min-h-screen flex-col items-center justify-center overflow-hidden bg-gradient-to-br from-primary/5 via-background to-secondary/5 p-4 md:p-6",children:[A&&e.jsx("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-background/80 backdrop-blur-sm",children:e.jsxs("div",{className:"mx-auto flex max-w-md flex-col items-center space-y-6 rounded-lg border bg-card p-8 text-center shadow-lg",children:[e.jsx("div",{className:"flex h-20 w-20 items-center justify-center rounded-full bg-primary/10",children:e.jsx(kt,{className:"h-10 w-10 animate-spin text-primary"})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),e.jsx("p",{className:"text-muted-foreground",children:Q})]}),e.jsx("div",{className:"w-full",children:e.jsx("div",{className:"h-2 w-full overflow-hidden rounded-full bg-secondary",children:e.jsx("div",{className:"h-full w-full animate-pulse bg-primary",style:{animation:"pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite"}})})}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"请稍候,这可能需要一分钟..."})]})}),e.jsxs("div",{className:"absolute inset-0 overflow-hidden pointer-events-none",children:[e.jsx("div",{className:"absolute left-1/4 top-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-primary/5 blur-3xl"}),e.jsx("div",{className:"absolute right-1/4 bottom-1/4 h-64 w-64 md:h-96 md:w-96 rounded-full bg-secondary/5 blur-3xl"})]}),p?e.jsxs("div",{className:"relative z-10 text-center",children:[e.jsx("div",{className:"mx-auto mb-4 flex h-16 w-16 items-center justify-center",children:e.jsx("div",{className:"h-12 w-12 animate-spin rounded-full border-4 border-primary border-t-transparent"})}),e.jsx("p",{className:"text-lg font-medium",children:"加载配置中..."}),e.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:"正在读取现有配置"})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"relative z-10 w-full max-w-4xl",children:[e.jsxs("div",{className:"mb-6 md:mb-8 text-center",children:[e.jsx("div",{className:"mx-auto mb-4 flex h-12 w-12 md:h-16 md:w-16 items-center justify-center rounded-2xl bg-primary/10",children:e.jsx(pb,{className:"h-6 w-6 md:h-8 md:w-8 text-primary",strokeWidth:2,fill:"none"})}),e.jsx("h1",{className:"mb-2 text-2xl md:text-3xl font-bold",children:"首次配置向导"}),e.jsxs("p",{className:"text-sm md:text-base text-muted-foreground",children:["让我们一起完成 ",Yu," 的初始配置"]})]}),e.jsxs("div",{className:"mb-6 md:mb-8",children:[e.jsxs("div",{className:"mb-2 flex items-center justify-between text-xs md:text-sm",children:[e.jsxs("span",{className:"text-muted-foreground",children:["步骤 ",c+1," / ",D.length]}),e.jsxs("span",{className:"font-medium text-primary",children:[Math.round(ne),"%"]})]}),e.jsx(wr,{value:ne,className:"h-2"})]}),e.jsx("div",{className:"mb-6 md:mb-8 flex justify-between",children:D.map((z,X)=>{const k=z.icon;return e.jsxs("div",{className:$("flex flex-1 flex-col items-center gap-1 md:gap-2",Xn({to:"/"}),className:"gap-2 w-full sm:w-auto",children:[e.jsx(ao,{className:"h-4 w-4"}),"返回首页"]}),e.jsxs(N,{size:"lg",variant:"outline",onClick:()=>window.history.back(),className:"gap-2 w-full sm:w-auto",children:[e.jsx(ii,{className:"h-4 w-4"}),"返回上一页"]})]}),e.jsx("div",{className:"mt-12 pt-8 border-t border-border",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:"如果您认为这是一个错误,请联系系统管理员"})})]})})}const He=eb,qe=sb,Le=u.forwardRef(({className:n,children:i,...c},d)=>e.jsxs($p,{ref:d,className:$("flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",n),...c,children:[i,e.jsx(JN,{asChild:!0,children:e.jsx(Bl,{className:"h-4 w-4 opacity-50"})})]}));Le.displayName=$p.displayName;const Tg=u.forwardRef(({className:n,...i},c)=>e.jsx(Qp,{ref:c,className:$("flex cursor-default items-center justify-center py-1",n),...i,children:e.jsx(pr,{className:"h-4 w-4"})}));Tg.displayName=Qp.displayName;const Eg=u.forwardRef(({className:n,...i},c)=>e.jsx(Yp,{ref:c,className:$("flex cursor-default items-center justify-center py-1",n),...i,children:e.jsx(Bl,{className:"h-4 w-4"})}));Eg.displayName=Yp.displayName;const Ue=u.forwardRef(({className:n,children:i,position:c="popper",...d},h)=>e.jsx(ZN,{children:e.jsxs(Xp,{ref:h,className:$("relative z-[100] max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-hidden rounded-md border border-border bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100 shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]",c==="popper"&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",n),position:c,...d,children:[e.jsx(Tg,{}),e.jsx(IN,{className:$("p-1",c==="popper"&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:i}),e.jsx(Eg,{})]})}));Ue.displayName=Xp.displayName;const w0=u.forwardRef(({className:n,...i},c)=>e.jsx(Kp,{ref:c,className:$("px-2 py-1.5 text-sm font-semibold",n),...i}));w0.displayName=Kp.displayName;const le=u.forwardRef(({className:n,children:i,...c},d)=>e.jsxs(Jp,{ref:d,className:$("relative flex w-full cursor-default select-none items-center rounded-sm py-2 pl-2 pr-8 text-sm outline-none bg-white dark:bg-gray-900 hover:bg-gray-100 dark:hover:bg-gray-800 focus:bg-gray-100 dark:focus:bg-gray-800 data-[disabled]:pointer-events-none data-[disabled]:opacity-50",n),...c,children:[e.jsx("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:e.jsx(PN,{children:e.jsx(sa,{className:"h-4 w-4"})})}),e.jsx(WN,{children:i})]}));le.displayName=Jp.displayName;const _0=u.forwardRef(({className:n,...i},c)=>e.jsx(Zp,{ref:c,className:$("-mx-1 my-1 h-px bg-muted",n),...i}));_0.displayName=Zp.displayName;const Ua=AN,Ba=MN,_a=u.forwardRef(({className:n,align:i="center",sideOffset:c=4,...d},h)=>e.jsx(zN,{children:e.jsx(Rp,{ref:h,align:i,sideOffset:c,className:$("z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]",n),...d})}));_a.displayName=Rp.displayName;const ql="/api/webui/config";async function np(){const i=await(await Te(`${ql}/bot`)).json();if(!i.success)throw new Error("获取配置数据失败");return i.config}async function ni(){const i=await(await Te(`${ql}/model`)).json();if(!i.success)throw new Error("获取模型配置数据失败");return i.config}async function ip(n){const c=await(await Te(`${ql}/bot`,{method:"POST",body:JSON.stringify(n)})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function S0(){const i=await(await Te(`${ql}/bot/raw`)).json();if(!i.success)throw new Error("获取配置源代码失败");return i.content}async function C0(n){const c=await(await Te(`${ql}/bot/raw`,{method:"POST",body:JSON.stringify({raw_content:n})})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function to(n){const c=await(await Te(`${ql}/model`,{method:"POST",body:JSON.stringify(n)})).json();if(!c.success)throw new Error(c.message||"保存配置失败")}async function k0(n,i){const d=await(await Te(`${ql}/bot/section/${n}`,{method:"POST",body:JSON.stringify(i)})).json();if(!d.success)throw new Error(d.message||`保存配置节 ${n} 失败`)}async function Uu(n,i){const d=await(await Te(`${ql}/model/section/${n}`,{method:"POST",body:JSON.stringify(i)})).json();if(!d.success)throw new Error(d.message||`保存配置节 ${n} 失败`)}async function T0(n,i="openai",c="/models"){const d=new URLSearchParams({provider_name:n,parser:i,endpoint:c}),h=await Te(`/api/webui/models/list?${d}`);if(!h.ok){const f=await h.json().catch(()=>({}));throw new Error(f.detail||`获取模型列表失败 (${h.status})`)}const x=await h.json();if(!x.success)throw new Error("获取模型列表失败");return x.models}async function E0(n){const i=new URLSearchParams({provider_name:n}),c=await Te(`/api/webui/models/test-connection-by-name?${i}`,{method:"POST"});if(!c.ok){const d=await c.json().catch(()=>({}));throw new Error(d.detail||`测试连接失败 (${c.status})`)}return await c.json()}const z0=ci("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"}}),cl=u.forwardRef(({className:n,variant:i,...c},d)=>e.jsx("div",{ref:d,role:"alert",className:$(z0({variant:i}),n),...c}));cl.displayName="Alert";const A0=u.forwardRef(({className:n,...i},c)=>e.jsx("h5",{ref:c,className:$("mb-1 font-medium leading-none tracking-tight",n),...i}));A0.displayName="AlertTitle";const ol=u.forwardRef(({className:n,...i},c)=>e.jsx("div",{ref:c,className:$("text-sm [&_p]:leading-relaxed",n),...i}));ol.displayName="AlertDescription";function Ju({onRestartComplete:n,onRestartFailed:i}){const[c,d]=u.useState(0),[h,x]=u.useState("restarting"),[f,j]=u.useState(0),[p,w]=u.useState(0);u.useEffect(()=>{const S=setInterval(()=>{d(F=>F>=90?F:F+1)},200),C=setInterval(()=>{j(F=>F+1)},1e3),M=setTimeout(()=>{x("checking"),v()},3e3);return()=>{clearInterval(S),clearInterval(C),clearTimeout(M)}},[]);const v=()=>{const C=async()=>{try{if(w(F=>F+1),(await fetch("/api/webui/system/status",{method:"GET",headers:{"Content-Type":"application/json"},signal:AbortSignal.timeout(3e3)})).ok)d(100),x("success"),setTimeout(()=>{n?.()},1500);else throw new Error("Status check failed")}catch{p<60?setTimeout(C,2e3):(x("failed"),i?.())}};C()},y=S=>{const C=Math.floor(S/60),M=S%60;return`${C}:${M.toString().padStart(2,"0")}`};return e.jsx("div",{className:"fixed inset-0 bg-background/95 backdrop-blur-sm z-50 flex items-center justify-center",children:e.jsxs("div",{className:"max-w-md w-full mx-4 space-y-8",children:[e.jsxs("div",{className:"flex flex-col items-center space-y-4",children:[h==="restarting"&&e.jsxs(e.Fragment,{children:[e.jsx(kt,{className:"h-16 w-16 text-primary animate-spin"}),e.jsx("h2",{className:"text-2xl font-bold",children:"正在重启麦麦"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"请稍候,麦麦正在重启中..."})]}),h==="checking"&&e.jsxs(e.Fragment,{children:[e.jsx(kt,{className:"h-16 w-16 text-primary animate-spin"}),e.jsx("h2",{className:"text-2xl font-bold",children:"检查服务状态"}),e.jsxs("p",{className:"text-muted-foreground text-center",children:["等待服务恢复... (尝试 ",p,"/60)"]})]}),h==="success"&&e.jsxs(e.Fragment,{children:[e.jsx(fa,{className:"h-16 w-16 text-green-500"}),e.jsx("h2",{className:"text-2xl font-bold",children:"重启成功"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"正在跳转到登录页面..."})]}),h==="failed"&&e.jsxs(e.Fragment,{children:[e.jsx(Oa,{className:"h-16 w-16 text-destructive"}),e.jsx("h2",{className:"text-2xl font-bold",children:"重启超时"}),e.jsx("p",{className:"text-muted-foreground text-center",children:"服务未能在预期时间内恢复,请手动检查或刷新页面"})]})]}),h!=="failed"&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(wr,{value:c,className:"h-2"}),e.jsxs("div",{className:"flex justify-between text-sm text-muted-foreground",children:[e.jsxs("span",{children:[c,"%"]}),e.jsxs("span",{children:["已用时: ",y(f)]})]})]}),e.jsx("div",{className:"bg-muted/50 rounded-lg p-4 space-y-2",children:e.jsxs("p",{className:"text-sm text-muted-foreground",children:[h==="restarting"&&"🔄 配置已保存,正在重启主程序...",h==="checking"&&"⏳ 正在等待服务恢复,请勿关闭页面...",h==="success"&&"✅ 配置已生效,服务运行正常",h==="failed"&&"⚠️ 如果长时间无响应,请尝试手动重启"]})}),h==="failed"&&e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{onClick:()=>window.location.reload(),className:"flex-1 px-4 py-2 bg-primary text-primary-foreground rounded-md hover:bg-primary/90",children:"刷新页面"}),e.jsx("button",{onClick:()=>{x("checking"),w(0),v()},className:"flex-1 px-4 py-2 bg-secondary text-secondary-foreground rounded-md hover:bg-secondary/90",children:"重试检测"})]})]})})}const M0={name:"toml",startState:function(){return{inString:!1,stringType:"",lhs:!0,inArray:0}},token:function(n,i){let c;if(!i.inString&&(c=n.match(/^('''|"""|'|")/))&&(i.stringType=c[0],i.inString=!0),n.sol()&&!i.inString&&i.inArray===0&&(i.lhs=!0),i.inString){for(;i.inString;)if(n.match(i.stringType))i.inString=!1;else if(n.peek()==="\\")n.next(),n.next();else{if(n.eol())break;n.match(/^.[^\\\"\']*/)}return i.lhs?"property":"string"}else{if(i.inArray&&n.peek()==="]")return n.next(),i.inArray--,"bracket";if(i.lhs&&n.peek()==="["&&n.skipTo("]"))return n.next(),n.peek()==="]"&&n.next(),"atom";if(n.peek()==="#")return n.skipToEnd(),"comment";if(n.eatSpace())return null;if(i.lhs&&n.eatWhile(function(d){return d!="="&&d!=" "}))return"property";if(i.lhs&&n.peek()==="=")return n.next(),i.lhs=!1,null;if(!i.lhs&&n.match(/^\d\d\d\d[\d\-\:\.T]*Z/))return"atom";if(!i.lhs&&(n.match("true")||n.match("false")))return"atom";if(!i.lhs&&n.peek()==="[")return i.inArray++,n.next(),"bracket";if(!i.lhs&&n.match(/^\-?\d+(?:\.\d+)?/))return"number";n.eatSpace()||n.next()}return null},languageData:{commentTokens:{line:"#"}}},D0={python:[Gb()],json:[Vb(),Fb()],toml:[qb.define(M0)],text:[]};function O0({value:n,onChange:i,language:c="text",readOnly:d=!1,height:h="400px",minHeight:x,maxHeight:f,placeholder:j,theme:p="dark",className:w=""}){const[v,y]=u.useState(!1);if(u.useEffect(()=>{y(!0)},[]),!v)return e.jsx("div",{className:`rounded-md border bg-muted animate-pulse ${w}`,style:{height:h,minHeight:x,maxHeight:f}});const S=[...D0[c]||[],Kf.lineWrapping];return d&&S.push(Kf.editable.of(!1)),e.jsx("div",{className:`rounded-md overflow-hidden border ${w}`,children:e.jsx($b,{value:n,height:h,minHeight:x,maxHeight:f,theme:p==="dark"?Qb:void 0,extensions:S,onChange:i,placeholder:j,basicSetup:{lineNumbers:!0,highlightActiveLineGutter:!0,highlightSpecialChars:!0,history:!0,foldGutter:!0,drawSelection:!0,dropCursor:!0,allowMultipleSelections:!0,indentOnInput:!0,syntaxHighlighting:!0,bracketMatching:!0,closeBrackets:!0,autocompletion:!0,rectangularSelection:!0,crosshairCursor:!0,highlightActiveLine:!0,highlightSelectionMatches:!0,closeBracketsKeymap:!0,defaultKeymap:!0,searchKeymap:!0,historyKeymap:!0,foldKeymap:!0,completionKeymap:!0,lintKeymap:!0}})})}function R0(){const[n,i]=u.useState(!0),[c,d]=u.useState(!1),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,w]=u.useState(!1),[v,y]=u.useState(!1),[S,C]=u.useState("visual"),[M,F]=u.useState(""),[U,O]=u.useState(!1),{toast:K}=Gs(),[H,A]=u.useState(null),[V,Q]=u.useState(null),[T,D]=u.useState(null),[ne,xe]=u.useState(null),[_e,Se]=u.useState(null),[ge,ye]=u.useState(null),[be,z]=u.useState(null),[X,k]=u.useState(null),[se,_]=u.useState(null),[ue,ie]=u.useState(null),[ae,fe]=u.useState(null),[Ne,me]=u.useState(null),[G,P]=u.useState(null),[B,W]=u.useState(null),[Ce,Me]=u.useState(null),[re,De]=u.useState(null),[Vs,Qs]=u.useState(null),[de,Ee]=u.useState(null),ts=u.useRef(null),Ke=u.useRef(!0),lt=u.useRef({}),Ot=u.useCallback(async()=>{try{const ke=await S0();F(ke),O(!1)}catch(ke){K({variant:"destructive",title:"加载失败",description:ke instanceof Error?ke.message:"加载源代码失败"})}},[K]),bt=u.useCallback(async()=>{try{i(!0);const ke=await np();lt.current=ke,A(ke.bot),Q(ke.personality);const ve=ke.chat;ve.talk_value_rules||(ve.talk_value_rules=[]),D(ve),xe(ke.expression),Se(ke.emoji),ye(ke.memory),z(ke.tool),k(ke.mood),_(ke.voice),ie(ke.lpmm_knowledge),fe(ke.keyword_reaction),me(ke.response_post_process),P(ke.chinese_typo),W(ke.response_splitter),Me(ke.log),De(ke.debug),Qs(ke.maim_message),Ee(ke.telemetry),j(!1),Ke.current=!1,await Ot()}catch(ke){console.error("加载配置失败:",ke),K({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}finally{i(!1)}},[K,Ot]);u.useEffect(()=>{bt()},[bt]);const Pe=u.useCallback(async(ke,ve)=>{if(!Ke.current)try{x(!0),await k0(ke,ve),j(!1)}catch(ns){console.error(`自动保存 ${ke} 失败:`,ns),j(!0)}finally{x(!1)}},[]),R=u.useCallback((ke,ve)=>{Ke.current||(j(!0),ts.current&&clearTimeout(ts.current),ts.current=setTimeout(()=>{Pe(ke,ve)},2e3))},[Pe]);u.useEffect(()=>{H&&!Ke.current&&R("bot",H)},[H,R]),u.useEffect(()=>{V&&!Ke.current&&R("personality",V)},[V,R]),u.useEffect(()=>{T&&!Ke.current&&R("chat",T)},[T,R]),u.useEffect(()=>{ne&&!Ke.current&&R("expression",ne)},[ne,R]),u.useEffect(()=>{_e&&!Ke.current&&R("emoji",_e)},[_e,R]),u.useEffect(()=>{ge&&!Ke.current&&R("memory",ge)},[ge,R]),u.useEffect(()=>{be&&!Ke.current&&R("tool",be)},[be,R]),u.useEffect(()=>{X&&!Ke.current&&R("mood",X)},[X,R]),u.useEffect(()=>{se&&!Ke.current&&R("voice",se)},[se,R]),u.useEffect(()=>{ue&&!Ke.current&&R("lpmm_knowledge",ue)},[ue,R]),u.useEffect(()=>{ae&&!Ke.current&&R("keyword_reaction",ae)},[ae,R]),u.useEffect(()=>{Ne&&!Ke.current&&R("response_post_process",Ne)},[Ne,R]),u.useEffect(()=>{G&&!Ke.current&&R("chinese_typo",G)},[G,R]),u.useEffect(()=>{B&&!Ke.current&&R("response_splitter",B)},[B,R]),u.useEffect(()=>{Ce&&!Ke.current&&R("log",Ce)},[Ce,R]),u.useEffect(()=>{re&&!Ke.current&&R("debug",re)},[re,R]),u.useEffect(()=>{Vs&&!Ke.current&&R("maim_message",Vs)},[Vs,R]),u.useEffect(()=>{de&&!Ke.current&&R("telemetry",de)},[de,R]);const Re=async()=>{try{d(!0),await C0(M),j(!1),O(!1),K({title:"保存成功",description:"配置已保存"}),await bt()}catch(ke){O(!0),K({variant:"destructive",title:"保存失败",description:ke instanceof Error?ke.message:"保存配置失败"})}finally{d(!1)}},ze=async ke=>{if(f){K({variant:"destructive",title:"切换失败",description:"请先保存当前更改"});return}if(C(ke),ke==="source")await Ot();else try{const ve=await np();lt.current=ve,A(ve.bot),Q(ve.personality);const ns=ve.chat;ns.talk_value_rules||(ns.talk_value_rules=[]),D(ns),xe(ve.expression),Se(ve.emoji),ye(ve.memory),z(ve.tool),k(ve.mood),_(ve.voice),ie(ve.lpmm_knowledge),fe(ve.keyword_reaction),me(ve.response_post_process),P(ve.chinese_typo),W(ve.response_splitter),Me(ve.log),De(ve.debug),Qs(ve.maim_message),Ee(ve.telemetry),j(!1)}catch(ve){console.error("加载配置失败:",ve),K({title:"加载失败",description:"无法加载配置文件",variant:"destructive"})}},$e=async()=>{try{d(!0),ts.current&&clearTimeout(ts.current);const ke={...lt.current,bot:H,personality:V,chat:T,expression:ne,emoji:_e,memory:ge,tool:be,mood:X,voice:se,lpmm_knowledge:ue,keyword_reaction:ae,response_post_process:Ne,chinese_typo:G,response_splitter:B,log:Ce,debug:re,maim_message:Vs,telemetry:de};await ip(ke),j(!1),K({title:"保存成功",description:"麦麦主程序配置已保存"})}catch(ke){console.error("保存配置失败:",ke),K({title:"保存失败",description:ke.message,variant:"destructive"})}finally{d(!1)}},Es=async()=>{try{w(!0),lo().catch(()=>{}),y(!0)}catch(ke){console.error("重启失败:",ke),y(!1),K({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),w(!1)}},We=async()=>{try{d(!0),ts.current&&clearTimeout(ts.current);const ke={...lt.current,bot:H,personality:V,chat:T,expression:ne,emoji:_e,memory:ge,tool:be,mood:X,voice:se,lpmm_knowledge:ue,keyword_reaction:ae,response_post_process:Ne,chinese_typo:G,response_splitter:B,log:Ce,debug:re,maim_message:Vs,telemetry:de};await ip(ke),j(!1),K({title:"保存成功",description:"配置已保存,即将重启麦麦..."}),await new Promise(ve=>setTimeout(ve,500)),await Es()}catch(ke){console.error("保存失败:",ke),K({title:"保存失败",description:ke.message,variant:"destructive"})}finally{d(!1)}},nt=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},vs=()=>{y(!1),w(!1),K({title:"重启失败",description:"服务器未能在预期时间内恢复,请手动检查",variant:"destructive"})};return n?e.jsx(ss,{className:"h-full",children:e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):e.jsx(ss,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:gap-4",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3",children:[e.jsxs("div",{className:"min-w-0",children:[e.jsx("h1",{className:"text-xl sm:text-2xl md:text-3xl font-bold",children:"麦麦主程序配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 text-xs sm:text-sm",children:"管理麦麦的核心功能和行为设置"})]}),e.jsxs("div",{className:"flex gap-2 flex-shrink-0",children:[e.jsxs(N,{onClick:S==="visual"?$e:Re,disabled:c||h||!f||p,size:"sm",variant:"outline",className:"w-20 sm:w-24",children:[e.jsx(yr,{className:"h-4 w-4 flex-shrink-0",strokeWidth:2,fill:"none"}),e.jsx("span",{className:"ml-1 truncate text-xs sm:text-sm",children:c?"保存中":h?"自动":f?"保存":"已保存"})]}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsxs(N,{disabled:c||h||p,size:"sm",className:"w-20 sm:w-28",children:[e.jsx(br,{className:"h-4 w-4 flex-shrink-0"}),e.jsx("span",{className:"ml-1 truncate text-xs sm:text-sm",children:p?"重启中":f?"保存重启":"重启"})]})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认重启麦麦?"}),e.jsx(ds,{asChild:!0,children:e.jsx("div",{children:e.jsx("p",{children:f?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"})})})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:f?We:Es,children:f?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsx("div",{className:"flex",children:e.jsx(La,{value:S,onValueChange:ke=>ze(ke),className:"w-full",children:e.jsxs(wa,{className:"h-8 sm:h-9 w-full grid grid-cols-2",children:[e.jsxs(fs,{value:"visual",className:"text-xs sm:text-sm",children:[e.jsx(vb,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"可视化编辑"]}),e.jsxs(fs,{value:"source",className:"text-xs sm:text-sm",children:[e.jsx(Nb,{className:"h-3 w-3 sm:h-4 sm:w-4 mr-1"}),"源代码编辑"]})]})})})]}),e.jsxs(cl,{children:[e.jsx(Ra,{className:"h-4 w-4"}),e.jsxs(ol,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),S==="source"&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs(cl,{children:[e.jsx(Ra,{className:"h-4 w-4"}),e.jsxs(ol,{children:[e.jsx("strong",{children:"源代码模式(高级功能):"}),"直接编辑 TOML 配置文件。此功能仅适用于熟悉 TOML 语法的高级用户。保存时会在后端验证格式,只有格式完全正确才能保存。",U&&e.jsx("span",{className:"text-destructive font-semibold ml-2",children:"⚠️ 上次保存失败,请检查 TOML 格式"})]})]}),e.jsx(O0,{value:M,onChange:ke=>{F(ke),j(!0),U&&O(!1)},language:"toml",theme:"dark",height:"calc(100vh - 280px)",minHeight:"500px",placeholder:"TOML 配置内容"})]}),S==="visual"&&e.jsx(e.Fragment,{children:e.jsxs(La,{defaultValue:"bot",className:"w-full",children:[e.jsxs(wa,{className:"flex flex-wrap h-auto gap-1 p-1 sm:grid sm:grid-cols-5 lg:grid-cols-10",children:[e.jsx(fs,{value:"bot",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"基本信息"}),e.jsx(fs,{value:"personality",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"人格"}),e.jsx(fs,{value:"chat",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"聊天"}),e.jsx(fs,{value:"expression",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"表达"}),e.jsx(fs,{value:"features",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"功能"}),e.jsx(fs,{value:"processing",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"处理"}),e.jsx(fs,{value:"mood",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"情绪"}),e.jsx(fs,{value:"voice",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"语音"}),e.jsx(fs,{value:"lpmm",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"知识库"}),e.jsx(fs,{value:"other",className:"text-xs px-2 py-1.5 sm:px-3 sm:py-2 data-[state=active]:shadow-sm",children:"其他"})]}),e.jsx(Ms,{value:"bot",className:"space-y-4",children:H&&e.jsx(L0,{config:H,onChange:A})}),e.jsx(Ms,{value:"personality",className:"space-y-4",children:V&&e.jsx(U0,{config:V,onChange:Q})}),e.jsx(Ms,{value:"chat",className:"space-y-4",children:T&&e.jsx(B0,{config:T,onChange:D})}),e.jsx(Ms,{value:"expression",className:"space-y-4",children:ne&&e.jsx(q0,{config:ne,onChange:xe})}),e.jsx(Ms,{value:"features",className:"space-y-4",children:_e&&ge&&be&&e.jsx(G0,{emojiConfig:_e,memoryConfig:ge,toolConfig:be,onEmojiChange:Se,onMemoryChange:ye,onToolChange:z})}),e.jsx(Ms,{value:"processing",className:"space-y-4",children:ae&&Ne&&G&&B&&e.jsx(V0,{keywordReactionConfig:ae,responsePostProcessConfig:Ne,chineseTypoConfig:G,responseSplitterConfig:B,onKeywordReactionChange:fe,onResponsePostProcessChange:me,onChineseTypoChange:P,onResponseSplitterChange:W})}),e.jsx(Ms,{value:"mood",className:"space-y-4",children:X&&e.jsx(F0,{config:X,onChange:k})}),e.jsx(Ms,{value:"voice",className:"space-y-4",children:se&&e.jsx($0,{config:se,onChange:_})}),e.jsx(Ms,{value:"lpmm",className:"space-y-4",children:ue&&e.jsx(Q0,{config:ue,onChange:ie})}),e.jsxs(Ms,{value:"other",className:"space-y-4",children:[Ce&&e.jsx(Y0,{config:Ce,onChange:Me}),re&&e.jsx(X0,{config:re,onChange:De}),Vs&&e.jsx(K0,{config:Vs,onChange:Qs}),de&&e.jsx(J0,{config:de,onChange:Ee})]})]})}),v&&e.jsx(Ju,{onRestartComplete:nt,onRestartFailed:vs})]})})}function L0({config:n,onChange:i}){const c=()=>{i({...n,platforms:[...n.platforms,""]})},d=p=>{i({...n,platforms:n.platforms.filter((w,v)=>v!==p)})},h=(p,w)=>{const v=[...n.platforms];v[p]=w,i({...n,platforms:v})},x=()=>{i({...n,alias_names:[...n.alias_names,""]})},f=p=>{i({...n,alias_names:n.alias_names.filter((w,v)=>v!==p)})},j=(p,w)=>{const v=[...n.alias_names];v[p]=w,i({...n,alias_names:v})};return e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"基本信息"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"platform",children:"平台"}),e.jsx(oe,{id:"platform",value:n.platform,onChange:p=>i({...n,platform:p.target.value}),placeholder:"qq"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"qq_account",children:"QQ账号"}),e.jsx(oe,{id:"qq_account",value:n.qq_account,onChange:p=>i({...n,qq_account:p.target.value}),placeholder:"123456789"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"nickname",children:"昵称"}),e.jsx(oe,{id:"nickname",value:n.nickname,onChange:p=>i({...n,nickname:p.target.value}),placeholder:"麦麦"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:"其他平台账号"}),e.jsxs(N,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(xt,{className:"h-4 w-4 mr-1"}),"添加"]})]}),e.jsxs("div",{className:"space-y-2",children:[n.platforms.map((p,w)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(oe,{value:p,onChange:v=>h(w,v.target.value),placeholder:"wx:114514"}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsx(N,{size:"icon",variant:"outline",children:e.jsx(ls,{className:"h-4 w-4"})})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认删除"}),e.jsxs(ds,{children:['确定要删除平台账号 "',p||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:()=>d(w),children:"删除"})]})]})]})]},w)),n.platforms.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无其他平台账号"})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:"别名"}),e.jsxs(N,{onClick:x,size:"sm",variant:"outline",children:[e.jsx(xt,{className:"h-4 w-4 mr-1"}),"添加"]})]}),e.jsxs("div",{className:"space-y-2",children:[n.alias_names.map((p,w)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(oe,{value:p,onChange:v=>j(w,v.target.value),placeholder:"小麦"}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsx(N,{size:"icon",variant:"outline",children:e.jsx(ls,{className:"h-4 w-4"})})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认删除"}),e.jsxs(ds,{children:['确定要删除别名 "',p||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:()=>f(w),children:"删除"})]})]})]})]},w)),n.alias_names.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无别名"})]})]})]})]})})}function U0({config:n,onChange:i}){const c=()=>{i({...n,states:[...n.states,""]})},d=x=>{i({...n,states:n.states.filter((f,j)=>j!==x)})},h=(x,f)=>{const j=[...n.states];j[x]=f,i({...n,states:j})};return e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"人格设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"personality",children:"人格特质"}),e.jsx(Fs,{id:"personality",value:n.personality,onChange:x=>i({...n,personality:x.target.value}),placeholder:"描述人格特质和身份特征(建议120字以内)",rows:3}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"建议120字以内,描述人格特质和身份特征"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"reply_style",children:"表达风格"}),e.jsx(Fs,{id:"reply_style",value:n.reply_style,onChange:x=>i({...n,reply_style:x.target.value}),placeholder:"描述说话的表达风格和习惯",rows:3})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"interest",children:"兴趣"}),e.jsx(Fs,{id:"interest",value:n.interest,onChange:x=>i({...n,interest:x.target.value}),placeholder:"会影响麦麦对什么话题进行回复",rows:2})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"plan_style",children:"说话规则与行为风格"}),e.jsx(Fs,{id:"plan_style",value:n.plan_style,onChange:x=>i({...n,plan_style:x.target.value}),placeholder:"麦麦的说话规则和行为风格",rows:5})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"visual_style",children:"识图规则"}),e.jsx(Fs,{id:"visual_style",value:n.visual_style,onChange:x=>i({...n,visual_style:x.target.value}),placeholder:"识图时的处理规则",rows:3})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"private_plan_style",children:"私聊规则"}),e.jsx(Fs,{id:"private_plan_style",value:n.private_plan_style,onChange:x=>i({...n,private_plan_style:x.target.value}),placeholder:"私聊的说话规则和行为风格",rows:4})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:"状态列表(人格多样性)"}),e.jsxs(N,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(xt,{className:"h-4 w-4 mr-1"}),"添加状态"]})]}),e.jsx("div",{className:"space-y-2",children:n.states.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(Fs,{value:x,onChange:j=>h(f,j.target.value),placeholder:"描述一个人格状态",rows:2}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsx(N,{size:"icon",variant:"outline",children:e.jsx(ls,{className:"h-4 w-4"})})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认删除"}),e.jsx(ds,{children:"确定要删除这个人格状态吗?此操作无法撤销。"})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:()=>d(f),children:"删除"})]})]})]})]},f))})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"state_probability",children:"状态替换概率"}),e.jsx(oe,{id:"state_probability",type:"number",step:"0.1",min:"0",max:"1",value:n.state_probability,onChange:x=>i({...n,state_probability:parseFloat(x.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"每次构建人格时替换 personality 的概率(0.0-1.0)"})]})]})]})})}function B0({config:n,onChange:i}){const c=()=>{i({...n,talk_value_rules:[...n.talk_value_rules,{target:"",time:"00:00-23:59",value:1}]})},d=j=>{i({...n,talk_value_rules:n.talk_value_rules.filter((p,w)=>w!==j)})},h=(j,p,w)=>{const v=[...n.talk_value_rules];v[j]={...v[j],[p]:w},i({...n,talk_value_rules:v})},x=({value:j,onChange:p})=>{const[w,v]=u.useState("00"),[y,S]=u.useState("00"),[C,M]=u.useState("23"),[F,U]=u.useState("59");u.useEffect(()=>{const K=j.split("-");if(K.length===2){const[H,A]=K,[V,Q]=H.split(":"),[T,D]=A.split(":");V&&v(V.padStart(2,"0")),Q&&S(Q.padStart(2,"0")),T&&M(T.padStart(2,"0")),D&&U(D.padStart(2,"0"))}},[j]);const O=(K,H,A,V)=>{const Q=`${K}:${H}-${A}:${V}`;p(Q)};return e.jsxs(Ua,{children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(N,{variant:"outline",className:"w-full justify-start font-mono text-sm",children:[e.jsx(li,{className:"h-4 w-4 mr-2"}),j||"选择时间段"]})}),e.jsx(_a,{className:"w-72 sm:w-80",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"font-medium text-sm mb-3",children:"开始时间"}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-xs",children:"小时"}),e.jsxs(He,{value:w,onValueChange:K=>{v(K),O(K,y,C,F)},children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsx(Ue,{children:Array.from({length:24},(K,H)=>H).map(K=>e.jsx(le,{value:K.toString().padStart(2,"0"),children:K.toString().padStart(2,"0")},K))})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-xs",children:"分钟"}),e.jsxs(He,{value:y,onValueChange:K=>{S(K),O(w,K,C,F)},children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsx(Ue,{children:Array.from({length:60},(K,H)=>H).map(K=>e.jsx(le,{value:K.toString().padStart(2,"0"),children:K.toString().padStart(2,"0")},K))})]})]})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-medium text-sm mb-3",children:"结束时间"}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 sm:gap-3",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-xs",children:"小时"}),e.jsxs(He,{value:C,onValueChange:K=>{M(K),O(w,y,K,F)},children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsx(Ue,{children:Array.from({length:24},(K,H)=>H).map(K=>e.jsx(le,{value:K.toString().padStart(2,"0"),children:K.toString().padStart(2,"0")},K))})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-xs",children:"分钟"}),e.jsxs(He,{value:F,onValueChange:K=>{U(K),O(w,y,C,K)},children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsx(Ue,{children:Array.from({length:60},(K,H)=>H).map(K=>e.jsx(le,{value:K.toString().padStart(2,"0"),children:K.toString().padStart(2,"0")},K))})]})]})]})]})]})})]})},f=({rule:j})=>{const p=`{ target = "${j.target}", time = "${j.time}", value = ${j.value.toFixed(1)} }`;return e.jsxs(Ua,{children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",children:[e.jsx(Dt,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(_a,{className:"w-80 sm:w-96",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:p}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"聊天设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"talk_value",children:"聊天频率(基础值)"}),e.jsx(oe,{id:"talk_value",type:"number",step:"0.1",min:"0",max:"1",value:n.talk_value,onChange:j=>i({...n,talk_value:parseFloat(j.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"越小越沉默,范围 0-1"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Xe,{id:"mentioned_bot_reply",checked:n.mentioned_bot_reply,onCheckedChange:j=>i({...n,mentioned_bot_reply:j})}),e.jsx(b,{htmlFor:"mentioned_bot_reply",className:"cursor-pointer",children:"启用提及必回复"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_context_size",children:"上下文长度"}),e.jsx(oe,{id:"max_context_size",type:"number",min:"1",value:n.max_context_size,onChange:j=>i({...n,max_context_size:parseInt(j.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"planner_smooth",children:"规划器平滑"}),e.jsx(oe,{id:"planner_smooth",type:"number",step:"1",min:"0",value:n.planner_smooth,onChange:j=>i({...n,planner_smooth:parseFloat(j.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"增大数值会减小 planner 负荷,推荐 1-5,0 为关闭"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Xe,{id:"enable_talk_value_rules",checked:n.enable_talk_value_rules,onCheckedChange:j=>i({...n,enable_talk_value_rules:j})}),e.jsx(b,{htmlFor:"enable_talk_value_rules",className:"cursor-pointer",children:"启用动态发言频率规则"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Xe,{id:"include_planner_reasoning",checked:n.include_planner_reasoning,onCheckedChange:j=>i({...n,include_planner_reasoning:j})}),e.jsx(b,{htmlFor:"include_planner_reasoning",className:"cursor-pointer",children:"将 planner 推理加入 replyer"})]})]})]}),n.enable_talk_value_rules&&e.jsxs("div",{className:"border-t pt-6",children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"动态发言频率规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"按时段或聊天流ID调整发言频率,优先匹配具体聊天,再匹配全局规则"})]}),e.jsxs(N,{onClick:c,size:"sm",children:[e.jsx(xt,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),n.talk_value_rules&&n.talk_value_rules.length>0?e.jsx("div",{className:"space-y-4",children:n.talk_value_rules.map((j,p)=>e.jsxs("div",{className:"rounded-lg border p-4 bg-muted/50 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium text-muted-foreground",children:["规则 #",p+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(f,{rule:j}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsx(N,{variant:"ghost",size:"sm",children:e.jsx(ls,{className:"h-4 w-4 text-destructive"})})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认删除"}),e.jsxs(ds,{children:["确定要删除规则 #",p+1," 吗?此操作无法撤销。"]})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:()=>d(p),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"配置类型"}),e.jsxs(He,{value:j.target===""?"global":"specific",onValueChange:w=>{w==="global"?h(p,"target",""):h(p,"target","qq::group")},children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"global",children:"全局配置"}),e.jsx(le,{value:"specific",children:"详细配置"})]})]})]}),j.target!==""&&(()=>{const w=j.target.split(":"),v=w[0]||"qq",y=w[1]||"",S=w[2]||"group";return e.jsxs("div",{className:"grid gap-4 p-3 sm:p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"平台"}),e.jsxs(He,{value:v,onValueChange:C=>{h(p,"target",`${C}:${y}:${S}`)},children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"qq",children:"QQ"}),e.jsx(le,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"群 ID"}),e.jsx(oe,{value:y,onChange:C=>{h(p,"target",`${v}:${C.target.value}:${S}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"类型"}),e.jsxs(He,{value:S,onValueChange:C=>{h(p,"target",`${v}:${y}:${C}`)},children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"group",children:"群组(group)"}),e.jsx(le,{value:"private",children:"私聊(private)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",j.target||"(未设置)"]})]})})(),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"时间段 (Time)"}),e.jsx(x,{value:j.time,onChange:w=>h(p,"time",w)}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"支持跨夜区间,例如 23:00-02:00"})]}),e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{htmlFor:`rule-value-${p}`,className:"text-xs font-medium",children:"发言频率值 (Value)"}),e.jsx(oe,{id:`rule-value-${p}`,type:"number",step:"0.01",min:"0.01",max:"1",value:j.value,onChange:w=>{const v=parseFloat(w.target.value);isNaN(v)||h(p,"value",Math.max(.01,Math.min(1,v)))},className:"w-20 h-8 text-xs"})]}),e.jsx(Ma,{value:[j.value],onValueChange:w=>h(p,"value",w[0]),min:.01,max:1,step:.01,className:"w-full"}),e.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[e.jsx("span",{children:"0.01 (极少发言)"}),e.jsx("span",{children:"0.5"}),e.jsx("span",{children:"1.0 (正常)"})]})]})]})]},p))}):e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:e.jsx("p",{className:"text-sm",children:'暂无规则,点击"添加规则"按钮创建'})}),e.jsxs("div",{className:"mt-4 p-4 bg-blue-50 dark:bg-blue-950/20 border border-blue-200 dark:border-blue-800 rounded-lg",children:[e.jsx("h5",{className:"text-sm font-semibold text-blue-900 dark:text-blue-100 mb-2",children:"📝 规则说明"}),e.jsxs("ul",{className:"text-xs text-blue-800 dark:text-blue-200 space-y-1",children:[e.jsxs("li",{children:["• ",e.jsx("strong",{children:"Target 为空"}),":全局规则,对所有聊天生效"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"Target 指定"}),":仅对特定聊天流生效(格式:platform:id:type)"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"优先级"}),":先匹配具体聊天流规则,再匹配全局规则"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"时间支持跨夜"}),":例如 23:00-02:00 表示晚上11点到次日凌晨2点"]}),e.jsxs("li",{children:["• ",e.jsx("strong",{children:"数值范围"}),":建议 0-1,0 表示完全沉默,1 表示正常发言"]})]})]})]})]})}function H0({member:n,groupIndex:i,memberIndex:c,availableChatIds:d,onUpdate:h,onRemove:x}){const f=d.includes(n)||n==="*",[j,p]=u.useState(!f);return e.jsxs("div",{className:"flex gap-2",children:[e.jsx("div",{className:"flex-1 flex gap-2",children:j?e.jsxs(e.Fragment,{children:[e.jsx(oe,{value:n,onChange:w=>h(i,c,w.target.value),placeholder:'输入 "*" 或 "qq:123456:group"',className:"flex-1"}),d.length>0&&e.jsx(N,{size:"sm",variant:"outline",onClick:()=>p(!1),title:"切换到下拉选择",children:"下拉"})]}):e.jsxs(e.Fragment,{children:[e.jsxs(He,{value:n,onValueChange:w=>h(i,c,w),children:[e.jsx(Le,{className:"flex-1",children:e.jsx(qe,{placeholder:"选择聊天流"})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"*",children:"* (全局共享)"}),d.map((w,v)=>e.jsx(le,{value:w,children:w},v))]})]}),e.jsx(N,{size:"sm",variant:"outline",onClick:()=>p(!0),title:"切换到手动输入",children:"输入"})]})}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsx(N,{size:"icon",variant:"outline",children:e.jsx(ls,{className:"h-4 w-4"})})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认删除"}),e.jsxs(ds,{children:['确定要删除组成员 "',n||"(空)",'" 吗?此操作无法撤销。']})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:()=>x(i,c),children:"删除"})]})]})]})]})}function q0({config:n,onChange:i}){const c=()=>{i({...n,learning_list:[...n.learning_list,["","enable","enable","1.0"]]})},d=y=>{i({...n,learning_list:n.learning_list.filter((S,C)=>C!==y)})},h=(y,S,C)=>{const M=[...n.learning_list];M[y][S]=C,i({...n,learning_list:M})},x=({rule:y})=>{const S=`["${y[0]}", "${y[1]}", "${y[2]}", "${y[3]}"]`;return e.jsxs(Ua,{children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",children:[e.jsx(Dt,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(_a,{className:"w-80 sm:w-96",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:S}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},f=()=>{i({...n,expression_groups:[...n.expression_groups,[]]})},j=y=>{i({...n,expression_groups:n.expression_groups.filter((S,C)=>C!==y)})},p=y=>{const S=[...n.expression_groups];S[y]=[...S[y],""],i({...n,expression_groups:S})},w=(y,S)=>{const C=[...n.expression_groups];C[y]=C[y].filter((M,F)=>F!==S),i({...n,expression_groups:C})},v=(y,S,C)=>{const M=[...n.expression_groups];M[y][S]=C,i({...n,expression_groups:M})};return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达学习配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置麦麦如何学习和使用表达方式"})]}),e.jsxs(N,{onClick:c,size:"sm",variant:"outline",children:[e.jsx(xt,{className:"h-4 w-4 mr-1"}),"添加规则"]})]}),e.jsxs("div",{className:"space-y-4",children:[n.learning_list.map((y,S)=>{const C=n.learning_list.some((H,A)=>A!==S&&H[0]===""),M=y[0]==="",F=y[0].split(":"),U=F[0]||"qq",O=F[1]||"",K=F[2]||"group";return e.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["规则 ",S+1," ",M&&"(全局配置)"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(x,{rule:y}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsx(N,{size:"sm",variant:"ghost",children:e.jsx(ls,{className:"h-4 w-4"})})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认删除"}),e.jsxs(ds,{children:["确定要删除学习规则 ",S+1," 吗?此操作无法撤销。"]})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:()=>d(S),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"配置类型"}),e.jsxs(He,{value:M?"global":"specific",onValueChange:H=>{H==="global"?h(S,0,""):h(S,0,"qq::group")},disabled:C&&!M,children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"global",children:"全局配置"}),e.jsx(le,{value:"specific",disabled:C&&!M,children:"详细配置"})]})]}),C&&!M&&e.jsx("p",{className:"text-xs text-amber-600",children:"已存在全局配置,无法创建新的全局配置"})]}),!M&&e.jsxs("div",{className:"grid gap-4 p-3 sm:p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"平台"}),e.jsxs(He,{value:U,onValueChange:H=>{h(S,0,`${H}:${O}:${K}`)},children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"qq",children:"QQ"}),e.jsx(le,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"群 ID"}),e.jsx(oe,{value:O,onChange:H=>{h(S,0,`${U}:${H.target.value}:${K}`)},placeholder:"输入群 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"类型"}),e.jsxs(He,{value:K,onValueChange:H=>{h(S,0,`${U}:${O}:${H}`)},children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"group",children:"群组(group)"}),e.jsx(le,{value:"private",children:"私聊(private)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前聊天流 ID:",y[0]||"(未设置)"]})]}),e.jsx("div",{className:"grid gap-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-xs font-medium",children:"使用学到的表达"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦使用从聊天中学到的表达方式"})]}),e.jsx(Xe,{checked:y[1]==="enable",onCheckedChange:H=>h(S,1,H?"enable":"disable")})]})}),e.jsx("div",{className:"grid gap-2",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-xs font-medium",children:"学习表达"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"允许麦麦从聊天中学习新的表达方式"})]}),e.jsx(Xe,{checked:y[2]==="enable",onCheckedChange:H=>h(S,2,H?"enable":"disable")})]})}),e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-xs font-medium",children:"学习强度"}),e.jsx(oe,{type:"number",step:"0.1",min:"0",max:"5",value:y[3],onChange:H=>{const A=parseFloat(H.target.value);isNaN(A)||h(S,3,Math.max(0,Math.min(5,A)).toFixed(1))},className:"w-20 h-8 text-xs"})]}),e.jsx(Ma,{value:[parseFloat(y[3])||1],onValueChange:H=>h(S,3,H[0].toFixed(1)),min:0,max:5,step:.1,className:"w-full"}),e.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[e.jsx("span",{children:"0 (不学习)"}),e.jsx("span",{children:"2.5"}),e.jsx("span",{children:"5.0 (快速学习)"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"影响学习频率,最短学习间隔 = 300/学习强度(秒)"})]})]})]},S)}),n.learning_list.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无学习规则,点击"添加规则"开始配置'})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达反思配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置麦麦主动向管理员询问表达方式是否合适的功能"})]}),e.jsx(Xe,{checked:n.reflect,onCheckedChange:y=>i({...n,reflect:y})})]}),n.reflect&&e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[e.jsx("div",{className:"flex items-center justify-between",children:e.jsx("span",{className:"text-sm font-medium",children:"反思操作员"})}),e.jsx("div",{className:"space-y-4",children:(()=>{const S=(n.reflect_operator_id||"").split(":"),C=S[0]||"qq",M=S[1]||"",F=S[2]||"private";return e.jsxs("div",{className:"grid gap-4 p-3 sm:p-4 rounded-lg bg-muted/50",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"平台"}),e.jsxs(He,{value:C,onValueChange:U=>{i({...n,reflect_operator_id:`${U}:${M}:${F}`})},children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"qq",children:"QQ"}),e.jsx(le,{value:"wx",children:"微信"})]})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"用户/群 ID"}),e.jsx(oe,{value:M,onChange:U=>{i({...n,reflect_operator_id:`${C}:${U.target.value}:${F}`})},placeholder:"输入 ID",className:"font-mono text-sm"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"类型"}),e.jsxs(He,{value:F,onValueChange:U=>{i({...n,reflect_operator_id:`${C}:${M}:${U}`})},children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"private",children:"私聊(private)"}),e.jsx(le,{value:"group",children:"群组(group)"})]})]})]})]}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:["当前操作员 ID:",n.reflect_operator_id||"(未设置)"]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦会向此操作员询问表达方式是否合适"})]})})()})]}),e.jsxs("div",{className:"rounded-lg border p-4 space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-sm font-medium",children:"允许反思的聊天流"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"只有在此列表中的聊天流才会提出问题并跟踪。如果列表为空,则所有聊天流都可以进行表达反思"})]}),e.jsxs(N,{onClick:()=>{i({...n,allow_reflect:[...n.allow_reflect||[],"qq::group"]})},size:"sm",variant:"outline",children:[e.jsx(xt,{className:"h-4 w-4 mr-1"}),"添加聊天流"]})]}),e.jsxs("div",{className:"space-y-2",children:[(n.allow_reflect||[]).map((y,S)=>{const C=y.split(":"),M=C[0]||"qq",F=C[1]||"",U=C[2]||"group";return e.jsxs("div",{className:"flex items-center gap-2 p-3 rounded-lg bg-muted/50",children:[e.jsxs(He,{value:M,onValueChange:O=>{const K=[...n.allow_reflect];K[S]=`${O}:${F}:${U}`,i({...n,allow_reflect:K})},children:[e.jsx(Le,{className:"w-24",children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"qq",children:"QQ"}),e.jsx(le,{value:"wx",children:"微信"})]})]}),e.jsx(oe,{value:F,onChange:O=>{const K=[...n.allow_reflect];K[S]=`${M}:${O.target.value}:${U}`,i({...n,allow_reflect:K})},placeholder:"ID",className:"flex-1 font-mono text-sm"}),e.jsxs(He,{value:U,onValueChange:O=>{const K=[...n.allow_reflect];K[S]=`${M}:${F}:${O}`,i({...n,allow_reflect:K})},children:[e.jsx(Le,{className:"w-32",children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"group",children:"群组"}),e.jsx(le,{value:"private",children:"私聊"})]})]}),e.jsx(N,{onClick:()=>{i({...n,allow_reflect:n.allow_reflect.filter((O,K)=>K!==S)})},size:"sm",variant:"ghost",children:e.jsx(ls,{className:"h-4 w-4"})})]},S)}),(!n.allow_reflect||n.allow_reflect.length===0)&&e.jsx("div",{className:"text-center py-4 text-muted-foreground text-sm",children:"列表为空,所有聊天流都可以进行表达反思"})]})]})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center justify-between mb-4",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold",children:"表达共享组配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"配置不同聊天流之间如何共享学到的表达方式"})]}),e.jsxs(N,{onClick:f,size:"sm",variant:"outline",children:[e.jsx(xt,{className:"h-4 w-4 mr-1"}),"添加共享组"]})]}),e.jsxs("div",{className:"space-y-4",children:[n.expression_groups.map((y,S)=>{const C=n.learning_list.map(M=>M[0]).filter(M=>M!=="");return e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["共享组 ",S+1,y.length===1&&y[0]==="*"&&"(全局共享)"]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(N,{onClick:()=>p(S),size:"sm",variant:"outline",children:e.jsx(xt,{className:"h-4 w-4"})}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsx(N,{size:"sm",variant:"ghost",children:e.jsx(ls,{className:"h-4 w-4"})})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认删除"}),e.jsxs(ds,{children:["确定要删除共享组 ",S+1," 吗?此操作无法撤销。"]})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:()=>j(S),children:"删除"})]})]})]})]})]}),e.jsx("div",{className:"space-y-2",children:y.map((M,F)=>e.jsx(H0,{member:M,groupIndex:S,memberIndex:F,availableChatIds:C,onUpdate:v,onRemove:w},`${S}-${F}`))}),e.jsx("p",{className:"text-xs text-muted-foreground",children:'提示:可以从下拉框选择已配置的聊天流,或手动输入。输入 "*" 启用全局共享'})]},S)}),n.expression_groups.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无共享组,点击"添加共享组"开始配置'})]})]})})]})}function G0({emojiConfig:n,memoryConfig:i,toolConfig:c,onEmojiChange:d,onMemoryChange:h,onToolChange:x}){return e.jsxs("div",{className:"space-y-6",children:[e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"工具设置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Xe,{id:"enable_tool",checked:c.enable_tool,onCheckedChange:f=>x({...c,enable_tool:f})}),e.jsx(b,{htmlFor:"enable_tool",className:"cursor-pointer",children:"启用工具系统"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"允许麦麦使用各种工具来增强功能"})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"记忆设置"}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_agent_iterations",children:"记忆思考深度"}),e.jsx(oe,{id:"max_agent_iterations",type:"number",min:"1",value:i.max_agent_iterations,onChange:f=>h({...i,max_agent_iterations:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"最低为 1(不深入思考)"})]})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"表情包设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"emoji_chance",children:"表情包激活概率"}),e.jsx(oe,{id:"emoji_chance",type:"number",step:"0.1",min:"0",max:"1",value:n.emoji_chance,onChange:f=>d({...n,emoji_chance:parseFloat(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"范围 0-1,越大越容易发送表情包"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_reg_num",children:"最大注册数量"}),e.jsx(oe,{id:"max_reg_num",type:"number",min:"1",value:n.max_reg_num,onChange:f=>d({...n,max_reg_num:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦最多可以注册的表情包数量"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"check_interval",children:"检查间隔(分钟)"}),e.jsx(oe,{id:"check_interval",type:"number",min:"1",value:n.check_interval,onChange:f=>d({...n,check_interval:parseInt(f.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"检查表情包(注册、破损、删除)的时间间隔"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Xe,{id:"do_replace",checked:n.do_replace,onCheckedChange:f=>d({...n,do_replace:f})}),e.jsx(b,{htmlFor:"do_replace",className:"cursor-pointer",children:"达到最大数量时替换表情包"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Xe,{id:"steal_emoji",checked:n.steal_emoji,onCheckedChange:f=>d({...n,steal_emoji:f})}),e.jsx(b,{htmlFor:"steal_emoji",className:"cursor-pointer",children:"偷取表情包"})]}),e.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"允许麦麦将看到的表情包据为己有"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Xe,{id:"content_filtration",checked:n.content_filtration,onCheckedChange:f=>d({...n,content_filtration:f})}),e.jsx(b,{htmlFor:"content_filtration",className:"cursor-pointer",children:"启用表情包过滤"})]}),n.content_filtration&&e.jsxs("div",{className:"grid gap-2 pl-6 border-l-2 border-primary/20",children:[e.jsx(b,{htmlFor:"filtration_prompt",children:"过滤要求"}),e.jsx(oe,{id:"filtration_prompt",value:n.filtration_prompt,onChange:f=>d({...n,filtration_prompt:f.target.value}),placeholder:"符合公序良俗"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"只有符合此要求的表情包才会被保存"})]})]})]})})]})}function V0({keywordReactionConfig:n,responsePostProcessConfig:i,chineseTypoConfig:c,responseSplitterConfig:d,onKeywordReactionChange:h,onResponsePostProcessChange:x,onChineseTypoChange:f,onResponseSplitterChange:j}){const p=()=>{h({...n,regex_rules:[...n.regex_rules,{regex:[""],reaction:""}]})},w=A=>{h({...n,regex_rules:n.regex_rules.filter((V,Q)=>Q!==A)})},v=(A,V,Q)=>{const T=[...n.regex_rules];V==="regex"&&typeof Q=="string"?T[A]={...T[A],regex:[Q]}:V==="reaction"&&typeof Q=="string"&&(T[A]={...T[A],reaction:Q}),h({...n,regex_rules:T})},y=({regex:A,reaction:V,onRegexChange:Q,onReactionChange:T})=>{const[D,ne]=u.useState(!1),[xe,_e]=u.useState(""),[Se,ge]=u.useState(null),[ye,be]=u.useState(""),[z,X]=u.useState({}),[k,se]=u.useState(""),_=u.useRef(null),[ue,ie]=u.useState("build"),ae=G=>G.replace(/\(\?P<([^>]+)>/g,"(?<$1>"),fe=(G,P=0)=>{const B=_.current;if(!B)return;const W=B.selectionStart||0,Ce=B.selectionEnd||0,Me=A.substring(0,W)+G+A.substring(Ce);Q(Me),setTimeout(()=>{const re=W+G.length+P;B.setSelectionRange(re,re),B.focus()},0)};u.useEffect(()=>{if(!A||!xe){ge(null),X({}),se(V),be("");return}try{const G=ae(A),P=new RegExp(G,"g"),B=xe.match(P);ge(B),be("");const Ce=new RegExp(G).exec(xe);if(Ce&&Ce.groups){X(Ce.groups);let Me=V;Object.entries(Ce.groups).forEach(([re,De])=>{Me=Me.replace(new RegExp(`\\[${re}\\]`,"g"),De||"")}),se(Me)}else X({}),se(V)}catch(G){be(G.message),ge(null),X({}),se(V)}},[A,xe,V]);const Ne=()=>{if(!xe||!Se||Se.length===0)return e.jsx("span",{className:"text-muted-foreground",children:xe||"请输入测试文本"});try{const G=ae(A),P=new RegExp(G,"g");let B=0;const W=[];let Ce;for(;(Ce=P.exec(xe))!==null;)Ce.index>B&&W.push(e.jsx("span",{children:xe.substring(B,Ce.index)},`text-${B}`)),W.push(e.jsx("span",{className:"bg-yellow-200 dark:bg-yellow-900 font-semibold",children:Ce[0]},`match-${Ce.index}`)),B=Ce.index+Ce[0].length;return B)",desc:"Python风格命名捕获组",moveCursor:-1},{label:"非捕获组",pattern:"(?:)",desc:"分组但不保存匹配结果",moveCursor:-1}]},{category:"字符类",items:[{label:"字符集",pattern:"[]",desc:"匹配括号内的任意字符",moveCursor:-1},{label:"排除字符",pattern:"[^]",desc:"匹配不在括号内的字符",moveCursor:-1},{label:"范围",pattern:"[a-z]",desc:"匹配a到z的字符"},{label:"中文字符",pattern:"[\\u4e00-\\u9fa5]",desc:"匹配中文汉字"}]},{category:"常用模板",items:[{label:"捕获词语",pattern:"(?P\\S+)",desc:"捕获一个词语"},{label:"捕获句子",pattern:"(?P.+)",desc:"捕获整个句子"},{label:"捕获数字",pattern:"(?P\\d+)",desc:"捕获一个或多个数字"},{label:"可选词语",pattern:"(?:词语1|词语2)",desc:"匹配多个可选项之一"}]}];return e.jsxs($s,{open:D,onOpenChange:ne,children:[e.jsx(Xu,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",children:[e.jsx(Vu,{className:"h-4 w-4 mr-1"}),"正则编辑器"]})}),e.jsxs(Bs,{className:"max-w-[95vw] sm:max-w-[900px] max-h-[90vh]",children:[e.jsxs(Hs,{children:[e.jsx(qs,{children:"正则表达式编辑器"}),e.jsx(Is,{className:"text-sm",children:"使用可视化工具构建正则表达式,并实时测试效果"})]}),e.jsx(ss,{className:"max-h-[calc(90vh-120px)]",children:e.jsxs(La,{value:ue,onValueChange:G=>ie(G),className:"w-full",children:[e.jsxs(wa,{className:"grid w-full grid-cols-2",children:[e.jsx(fs,{value:"build",children:"🔧 构建器"}),e.jsx(fs,{value:"test",children:"🧪 测试器"})]}),e.jsxs(Ms,{value:"build",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"正则表达式"}),e.jsx(oe,{ref:_,value:A,onChange:G=>Q(G.target.value),className:"font-mono text-sm",placeholder:"点击下方按钮构建正则表达式..."})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"Reaction 内容"}),e.jsx(Fs,{value:V,onChange:G=>T(G.target.value),placeholder:"使用 [捕获组名] 引用捕获的内容...",rows:3,className:"text-sm"})]}),e.jsxs("div",{className:"space-y-4 border-t pt-4",children:[me.map(G=>e.jsxs("div",{className:"space-y-2",children:[e.jsx("h5",{className:"text-xs font-semibold text-primary",children:G.category}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-2",children:G.items.map(P=>e.jsx(N,{variant:"outline",size:"sm",className:"justify-start h-auto py-2 px-3",onClick:()=>fe(P.pattern,P.moveCursor||0),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsxs("div",{className:"flex items-center gap-2 w-full",children:[e.jsx("span",{className:"text-xs font-medium",children:P.label}),e.jsx("code",{className:"ml-auto text-xs bg-muted px-1.5 py-0.5 rounded font-mono",children:P.pattern})]}),e.jsx("span",{className:"text-xs text-muted-foreground mt-0.5",children:P.desc})]})},P.label))})]},G.category)),e.jsxs("div",{className:"space-y-2 border-t pt-4",children:[e.jsx("h5",{className:"text-xs font-semibold text-primary",children:"完整示例模板"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(N,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>Q("^(?P\\S{1,20})是这样的$"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsxs("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:["^(?P\\S","{1,20}",")是这样的$"]}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「某事物是这样的」并捕获事物名称"})]})}),e.jsx(N,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>Q("(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?:[^,。.\\s]+,\\s*)?我(?:也)?[没沒]要求你\\s*(?P.+?)[.。,,]?$"}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"匹配「我没要求你做某事」并捕获具体行为"})]})}),e.jsx(N,{variant:"outline",size:"sm",className:"w-full justify-start h-auto py-2 px-3",onClick:()=>Q("(?P.+?)(?:是|为什么|怎么)"),children:e.jsxs("div",{className:"flex flex-col items-start w-full",children:[e.jsx("code",{className:"text-xs font-mono bg-muted px-2 py-1 rounded w-full overflow-x-auto",children:"(?P.+?)(?:是|为什么|怎么)"}),e.jsx("span",{className:"text-xs text-muted-foreground mt-1",children:"捕获问题主题词"})]})})]})]})]}),e.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 使用提示"}),e.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"点击输入框设置光标位置,然后点击按钮插入模式"}),e.jsxs("li",{children:["命名捕获组格式:",e.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"(?P<名称>模式)"})]}),e.jsxs("li",{children:["在 reaction 中使用 ",e.jsx("code",{className:"bg-blue-100 dark:bg-blue-900 px-1 rounded",children:"[名称]"})," 引用捕获的内容"]}),e.jsx("li",{children:"切换到测试器标签页验证正则表达式效果"})]})]})]}),e.jsxs(Ms,{value:"test",className:"space-y-4 mt-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"当前正则表达式"}),e.jsx("div",{className:"rounded-md bg-muted p-3 font-mono text-xs break-all",children:A||"(未设置)"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"test-text",className:"text-sm font-medium",children:"测试文本"}),e.jsx(Fs,{id:"test-text",value:xe,onChange:G=>_e(G.target.value),placeholder:`在此输入要测试的文本... +例如:打游戏是这样的`,className:"min-h-[100px] text-sm"})]}),ye&&e.jsxs("div",{className:"rounded-md bg-destructive/10 border border-destructive/20 p-3",children:[e.jsx("p",{className:"text-sm text-destructive font-medium",children:"正则表达式错误"}),e.jsx("p",{className:"text-xs text-destructive/80 mt-1",children:ye})]}),!ye&&xe&&e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"flex items-center gap-2",children:Se&&Se.length>0?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-green-500"}),e.jsxs("span",{className:"text-sm font-medium text-green-600 dark:text-green-400",children:["匹配成功 (",Se.length," 处)"]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-gray-400"}),e.jsx("span",{className:"text-sm font-medium text-muted-foreground",children:"无匹配"})]})}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"匹配高亮"}),e.jsx(ss,{className:"h-40 rounded-md bg-muted p-3",children:e.jsx("div",{className:"text-sm break-words",children:Ne()})})]}),Object.keys(z).length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"命名捕获组"}),e.jsx(ss,{className:"h-32 rounded-md border p-3",children:e.jsx("div",{className:"space-y-2",children:Object.entries(z).map(([G,P])=>e.jsxs("div",{className:"flex items-start gap-2 text-sm",children:[e.jsxs("span",{className:"font-mono font-semibold text-primary min-w-[80px]",children:["[",G,"]"]}),e.jsx("span",{className:"text-muted-foreground",children:"="}),e.jsx("span",{className:"font-mono bg-muted px-2 py-0.5 rounded",children:P})]},G))})})]}),Object.keys(z).length>0&&V&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{className:"text-sm font-medium",children:"Reaction 替换预览"}),e.jsx(ss,{className:"h-48 rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3",children:e.jsx("div",{className:"text-sm break-words",children:k})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"reaction 中的 [name] 已被替换为对应的捕获组值"})]})]}),e.jsxs("div",{className:"rounded-md bg-blue-50 dark:bg-blue-950/30 border border-blue-200 dark:border-blue-800 p-3 space-y-1",children:[e.jsx("p",{className:"text-xs font-medium text-blue-900 dark:text-blue-100",children:"💡 测试说明"}),e.jsxs("ul",{className:"text-xs text-blue-700 dark:text-blue-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"匹配的文本会以黄色背景高亮显示"}),e.jsx("li",{children:"命名捕获组的值会显示在下方列表中"}),e.jsx("li",{children:"Reaction 替换预览显示最终生成的反应内容"}),e.jsx("li",{children:"如需修改正则,切换回构建器标签页"})]})]})]})]})})]})]})},S=()=>{h({...n,keyword_rules:[...n.keyword_rules,{keywords:[],reaction:""}]})},C=A=>{h({...n,keyword_rules:n.keyword_rules.filter((V,Q)=>Q!==A)})},M=(A,V,Q)=>{const T=[...n.keyword_rules];typeof Q=="string"&&(T[A]={...T[A],reaction:Q}),h({...n,keyword_rules:T})},F=A=>{const V=[...n.keyword_rules];V[A]={...V[A],keywords:[...V[A].keywords||[],""]},h({...n,keyword_rules:V})},U=(A,V)=>{const Q=[...n.keyword_rules];Q[A]={...Q[A],keywords:(Q[A].keywords||[]).filter((T,D)=>D!==V)},h({...n,keyword_rules:Q})},O=(A,V,Q)=>{const T=[...n.keyword_rules],D=[...T[A].keywords||[]];D[V]=Q,T[A]={...T[A],keywords:D},h({...n,keyword_rules:T})},K=({rule:A})=>{const V=`{ regex = [${(A.regex||[]).map(Q=>`"${Q}"`).join(", ")}], reaction = "${A.reaction}" }`;return e.jsxs(Ua,{children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",children:[e.jsx(Dt,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(_a,{className:"w-[95vw] sm:w-[500px]",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx(ss,{className:"h-60 rounded-md bg-muted p-3",children:e.jsx("pre",{className:"font-mono text-xs break-all",children:V})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})},H=({rule:A})=>{const V=`[[keyword_reaction.keyword_rules]] +keywords = [${(A.keywords||[]).map(Q=>`"${Q}"`).join(", ")}] +reaction = "${A.reaction}"`;return e.jsxs(Ua,{children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",children:[e.jsx(Dt,{className:"h-4 w-4 mr-1"}),"预览"]})}),e.jsx(_a,{className:"w-[95vw] sm:w-[500px]",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"font-medium text-sm",children:"配置预览"}),e.jsx(ss,{className:"h-60 rounded-md bg-muted p-3",children:e.jsx("pre",{className:"font-mono text-xs whitespace-pre-wrap break-all",children:V})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"这是保存到 bot_config.toml 文件中的格式"})]})})]})};return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"关键词反应配置"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"配置触发特定反应的关键词和正则表达式规则"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"正则表达式规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用正则表达式匹配消息内容"})]}),e.jsxs(N,{onClick:p,size:"sm",variant:"outline",children:[e.jsx(xt,{className:"h-4 w-4 mr-1"}),"添加正则规则"]})]}),e.jsxs("div",{className:"space-y-3",children:[n.regex_rules.map((A,V)=>e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["正则规则 ",V+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(y,{regex:A.regex&&A.regex[0]||"",reaction:A.reaction,onRegexChange:Q=>v(V,"regex",Q),onReactionChange:Q=>v(V,"reaction",Q)}),e.jsx(K,{rule:A}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsx(N,{size:"sm",variant:"ghost",children:e.jsx(ls,{className:"h-4 w-4"})})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认删除"}),e.jsxs(ds,{children:["确定要删除正则规则 ",V+1," 吗?此操作无法撤销。"]})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:()=>w(V),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"正则表达式(Python 语法)"}),e.jsx(oe,{value:A.regex&&A.regex[0]||"",onChange:Q=>v(V,"regex",Q.target.value),placeholder:"例如:^(?P\\\\S{1,20})是这样的$ (点击正则编辑器按钮可视化构建)",className:"font-mono text-sm"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:'支持命名捕获组 (?Ppattern),可在 reaction 中使用 [name] 引用。点击"正则编辑器"可视化构建和测试!'})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"反应内容"}),e.jsx(Fs,{value:A.reaction,onChange:Q=>v(V,"reaction",Q.target.value),placeholder:`触发后麦麦的反应... +可以使用 [捕获组名] 来引用正则表达式中的内容`,rows:3,className:"text-sm"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"使用 [捕获组名] 引用正则表达式中的命名捕获组,例如 [n] 会被替换为捕获的内容"})]})]})]},V)),n.regex_rules.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无正则规则,点击"添加正则规则"开始配置'})]})]}),e.jsxs("div",{className:"space-y-4 border-t pt-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-base font-semibold",children:"关键词规则"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"使用关键词列表匹配消息内容"})]}),e.jsxs(N,{onClick:S,size:"sm",variant:"outline",children:[e.jsx(xt,{className:"h-4 w-4 mr-1"}),"添加关键词规则"]})]}),e.jsxs("div",{className:"space-y-3",children:[n.keyword_rules.map((A,V)=>e.jsxs("div",{className:"rounded-lg border p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("span",{className:"text-sm font-medium",children:["关键词规则 ",V+1]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(H,{rule:A}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsx(N,{size:"sm",variant:"ghost",children:e.jsx(ls,{className:"h-4 w-4"})})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认删除"}),e.jsxs(ds,{children:["确定要删除关键词规则 ",V+1," 吗?此操作无法撤销。"]})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:()=>C(V),children:"删除"})]})]})]})]})]}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-xs font-medium",children:"关键词列表"}),e.jsxs(N,{onClick:()=>F(V),size:"sm",variant:"ghost",children:[e.jsx(xt,{className:"h-3 w-3 mr-1"}),"添加关键词"]})]}),e.jsxs("div",{className:"space-y-2",children:[(A.keywords||[]).map((Q,T)=>e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(oe,{value:Q,onChange:D=>O(V,T,D.target.value),placeholder:"关键词",className:"flex-1"}),e.jsx(N,{onClick:()=>U(V,T),size:"sm",variant:"ghost",children:e.jsx(ls,{className:"h-4 w-4"})})]},T)),(!A.keywords||A.keywords.length===0)&&e.jsx("p",{className:"text-xs text-muted-foreground text-center py-2",children:'暂无关键词,点击"添加关键词"开始配置'})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-xs font-medium",children:"反应内容"}),e.jsx(Fs,{value:A.reaction,onChange:Q=>M(V,"reaction",Q.target.value),placeholder:"触发后麦麦的反应...",rows:3,className:"text-sm"})]})]})]},V)),n.keyword_rules.length===0&&e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:'暂无关键词规则,点击"添加关键词规则"开始配置'})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"回复后处理配置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Xe,{id:"enable_response_post_process",checked:i.enable_response_post_process,onCheckedChange:A=>x({...i,enable_response_post_process:A})}),e.jsx(b,{htmlFor:"enable_response_post_process",className:"cursor-pointer",children:"启用回复后处理"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2",children:"包括错别字生成器和回复分割器"})]}),i.enable_response_post_process&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"border-t pt-6 space-y-4",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[e.jsx(Xe,{id:"enable_chinese_typo",checked:c.enable,onCheckedChange:A=>f({...c,enable:A})}),e.jsx(b,{htmlFor:"enable_chinese_typo",className:"cursor-pointer font-semibold",children:"中文错别字生成器"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"为回复添加随机错别字,让麦麦的回复更自然"}),c.enable&&e.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"error_rate",className:"text-xs font-medium",children:"单字替换概率"}),e.jsx(oe,{id:"error_rate",type:"number",step:"0.001",min:"0",max:"1",value:c.error_rate,onChange:A=>f({...c,error_rate:parseFloat(A.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"min_freq",className:"text-xs font-medium",children:"最小字频阈值"}),e.jsx(oe,{id:"min_freq",type:"number",min:"0",value:c.min_freq,onChange:A=>f({...c,min_freq:parseInt(A.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"tone_error_rate",className:"text-xs font-medium",children:"声调错误概率"}),e.jsx(oe,{id:"tone_error_rate",type:"number",step:"0.01",min:"0",max:"1",value:c.tone_error_rate,onChange:A=>f({...c,tone_error_rate:parseFloat(A.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"word_replace_rate",className:"text-xs font-medium",children:"整词替换概率"}),e.jsx(oe,{id:"word_replace_rate",type:"number",step:"0.001",min:"0",max:"1",value:c.word_replace_rate,onChange:A=>f({...c,word_replace_rate:parseFloat(A.target.value)})})]})]})]})}),e.jsx("div",{className:"border-t pt-6 space-y-4",children:e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center space-x-2 mb-4",children:[e.jsx(Xe,{id:"enable_response_splitter",checked:d.enable,onCheckedChange:A=>j({...d,enable:A})}),e.jsx(b,{htmlFor:"enable_response_splitter",className:"cursor-pointer font-semibold",children:"回复分割器"})]}),e.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:"控制回复的长度和句子数量"}),d.enable&&e.jsxs("div",{className:"grid gap-4 pl-6 border-l-2 border-primary/20",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_length",className:"text-xs font-medium",children:"最大长度"}),e.jsx(oe,{id:"max_length",type:"number",min:"1",value:d.max_length,onChange:A=>j({...d,max_length:parseInt(A.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大字符数"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_sentence_num",className:"text-xs font-medium",children:"最大句子数"}),e.jsx(oe,{id:"max_sentence_num",type:"number",min:"1",value:d.max_sentence_num,onChange:A=>j({...d,max_sentence_num:parseInt(A.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"回复允许的最大句子数量"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Xe,{id:"enable_kaomoji_protection",checked:d.enable_kaomoji_protection,onCheckedChange:A=>j({...d,enable_kaomoji_protection:A})}),e.jsx(b,{htmlFor:"enable_kaomoji_protection",className:"cursor-pointer",children:"启用颜文字保护"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Xe,{id:"enable_overflow_return_all",checked:d.enable_overflow_return_all,onCheckedChange:A=>j({...d,enable_overflow_return_all:A})}),e.jsx(b,{htmlFor:"enable_overflow_return_all",className:"cursor-pointer",children:"超出时一次性返回全部"})]}),e.jsx("p",{className:"text-xs text-muted-foreground -mt-2",children:"当句子数量超出限制时,合并后一次性返回所有内容"})]})]})})]})]})]})}function F0({config:n,onChange:i}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"情绪设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Xe,{checked:n.enable_mood,onCheckedChange:c=>i({...n,enable_mood:c})}),e.jsx(b,{className:"cursor-pointer",children:"启用情绪系统"})]}),n.enable_mood&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"情绪更新阈值"}),e.jsx(oe,{type:"number",min:"1",value:n.mood_update_threshold,onChange:c=>i({...n,mood_update_threshold:parseInt(c.target.value)})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"越高,更新越慢"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"情感特征"}),e.jsx(Fs,{value:n.emotion_style,onChange:c=>i({...n,emotion_style:c.target.value}),placeholder:"影响情绪的变化情况",rows:2})]})]})]})]})}function $0({config:n,onChange:i}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"语音设置"}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Xe,{checked:n.enable_asr,onCheckedChange:c=>i({...n,enable_asr:c})}),e.jsx(b,{className:"cursor-pointer",children:"启用语音识别"})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"启用后麦麦可以识别语音消息,需要配置语音识别模型"})]})}function Q0({config:n,onChange:i}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库设置"}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Xe,{checked:n.enable,onCheckedChange:c=>i({...n,enable:c})}),e.jsx(b,{className:"cursor-pointer",children:"启用 LPMM 知识库"})]}),n.enable&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"LPMM 模式"}),e.jsxs(He,{value:n.lpmm_mode,onValueChange:c=>i({...n,lpmm_mode:c}),children:[e.jsx(Le,{children:e.jsx(qe,{placeholder:"选择 LPMM 模式"})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"classic",children:"经典模式"}),e.jsx(le,{value:"agent",children:"Agent 模式"})]})]})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"同义词搜索 TopK"}),e.jsx(oe,{type:"number",min:"1",value:n.rag_synonym_search_top_k,onChange:c=>i({...n,rag_synonym_search_top_k:parseInt(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"同义词阈值"}),e.jsx(oe,{type:"number",step:"0.1",min:"0",max:"1",value:n.rag_synonym_threshold,onChange:c=>i({...n,rag_synonym_threshold:parseFloat(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"实体提取线程数"}),e.jsx(oe,{type:"number",min:"1",value:n.info_extraction_workers,onChange:c=>i({...n,info_extraction_workers:parseInt(c.target.value)})})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"嵌入向量维度"}),e.jsx(oe,{type:"number",min:"1",value:n.embedding_dimension,onChange:c=>i({...n,embedding_dimension:parseInt(c.target.value)})})]})]})]})]})]})}function Y0({config:n,onChange:i}){const[c,d]=u.useState(""),[h,x]=u.useState("WARNING"),f=()=>{c&&!n.suppress_libraries.includes(c)&&(i({...n,suppress_libraries:[...n.suppress_libraries,c]}),d(""))},j=C=>{i({...n,suppress_libraries:n.suppress_libraries.filter(M=>M!==C)})},p=()=>{c&&!n.library_log_levels[c]&&(i({...n,library_log_levels:{...n.library_log_levels,[c]:h}}),d(""),x("WARNING"))},w=C=>{const M={...n.library_log_levels};delete M[C],i({...n,library_log_levels:M})},v=["DEBUG","INFO","WARNING","ERROR","CRITICAL"],y=["FULL","compact","lite"],S=["none","title","full"];return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"日志配置"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"日期格式"}),e.jsx(oe,{value:n.date_style,onChange:C=>i({...n,date_style:C.target.value}),placeholder:"例如: m-d H:i:s"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"m=月, d=日, H=时, i=分, s=秒"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"日志级别样式"}),e.jsxs(He,{value:n.log_level_style,onValueChange:C=>i({...n,log_level_style:C}),children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsx(Ue,{children:y.map(C=>e.jsx(le,{value:C,children:C},C))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"日志文本颜色"}),e.jsxs(He,{value:n.color_text,onValueChange:C=>i({...n,color_text:C}),children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsx(Ue,{children:S.map(C=>e.jsx(le,{value:C,children:C},C))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"全局日志级别"}),e.jsxs(He,{value:n.log_level,onValueChange:C=>i({...n,log_level:C}),children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsx(Ue,{children:v.map(C=>e.jsx(le,{value:C,children:C},C))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"控制台日志级别"}),e.jsxs(He,{value:n.console_log_level,onValueChange:C=>i({...n,console_log_level:C}),children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsx(Ue,{children:v.map(C=>e.jsx(le,{value:C,children:C},C))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"文件日志级别"}),e.jsxs(He,{value:n.file_log_level,onValueChange:C=>i({...n,file_log_level:C}),children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsx(Ue,{children:v.map(C=>e.jsx(le,{value:C,children:C},C))})]})]})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"mb-2 block",children:"完全屏蔽的库"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(oe,{value:c,onChange:C=>d(C.target.value),placeholder:"输入库名",className:"flex-1",onKeyDown:C=>{C.key==="Enter"&&(C.preventDefault(),f())}}),e.jsx(N,{onClick:f,size:"sm",className:"flex-shrink-0",children:e.jsx(xt,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"flex flex-wrap gap-2",children:n.suppress_libraries.map(C=>e.jsxs("div",{className:"flex items-center gap-1 bg-secondary px-3 py-1 rounded-md",children:[e.jsx("span",{className:"text-sm",children:C}),e.jsx(N,{variant:"ghost",size:"sm",className:"h-5 w-5 p-0",onClick:()=>j(C),children:e.jsx(ls,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},C))})]}),e.jsxs("div",{children:[e.jsx(b,{className:"mb-2 block",children:"特定库的日志级别"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(oe,{value:c,onChange:C=>d(C.target.value),placeholder:"输入库名",className:"flex-1"}),e.jsxs(He,{value:h,onValueChange:x,children:[e.jsx(Le,{className:"w-32",children:e.jsx(qe,{})}),e.jsx(Ue,{children:v.map(C=>e.jsx(le,{value:C,children:C},C))})]}),e.jsx(N,{onClick:p,size:"sm",children:e.jsx(xt,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"space-y-2",children:Object.entries(n.library_log_levels).map(([C,M])=>e.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[e.jsx("span",{className:"text-sm font-medium",children:C}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-sm text-muted-foreground",children:M}),e.jsx(N,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>w(C),children:e.jsx(ls,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]})]},C))})]})]})}function X0({config:n,onChange:i}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"调试配置"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否在日志中显示提示词"})]}),e.jsx(Xe,{checked:n.show_prompt,onCheckedChange:c=>i({...n,show_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示回复器 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的提示词"})]}),e.jsx(Xe,{checked:n.show_replyer_prompt,onCheckedChange:c=>i({...n,show_replyer_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示回复器推理"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示回复器的推理过程"})]}),e.jsx(Xe,{checked:n.show_replyer_reasoning,onCheckedChange:c=>i({...n,show_replyer_reasoning:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示 Jargon Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示术语相关的提示词"})]}),e.jsx(Xe,{checked:n.show_jargon_prompt,onCheckedChange:c=>i({...n,show_jargon_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示记忆检索 Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示记忆检索相关的提示词"})]}),e.jsx(Xe,{checked:n.show_memory_prompt,onCheckedChange:c=>i({...n,show_memory_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示 Planner Prompt"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 Planner 的提示词和原始返回结果"})]}),e.jsx(Xe,{checked:n.show_planner_prompt,onCheckedChange:c=>i({...n,show_planner_prompt:c})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"显示 LPMM 相关文段"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否显示 LPMM 知识库找到的相关文段日志"})]}),e.jsx(Xe,{checked:n.show_lpmm_paragraph,onCheckedChange:c=>i({...n,show_lpmm_paragraph:c})})]})]})]})}function K0({config:n,onChange:i}){const[c,d]=u.useState(""),h=()=>{c&&!n.auth_token.includes(c)&&(i({...n,auth_token:[...n.auth_token,c]}),d(""))},x=f=>{i({...n,auth_token:n.auth_token.filter((j,p)=>p!==f)})};return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-6",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-lg font-semibold mb-4",children:"MaimMessage 服务配置"}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"启用自定义服务器"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"是否使用自定义的 MaimMessage 服务器"})]}),e.jsx(Xe,{checked:n.use_custom,onCheckedChange:f=>i({...n,use_custom:f})})]}),n.use_custom&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"主机地址"}),e.jsx(oe,{value:n.host,onChange:f=>i({...n,host:f.target.value}),placeholder:"127.0.0.1"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"端口号"}),e.jsx(oe,{type:"number",value:n.port,onChange:f=>i({...n,port:parseInt(f.target.value)}),placeholder:"8090"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"连接模式"}),e.jsxs(He,{value:n.mode,onValueChange:f=>i({...n,mode:f}),children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"ws",children:"WebSocket (ws)"}),e.jsx(le,{value:"tcp",children:"TCP"})]})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Xe,{checked:n.use_wss,onCheckedChange:f=>i({...n,use_wss:f}),disabled:n.mode!=="ws"}),e.jsx(b,{children:"使用 WSS 安全连接"})]})]}),n.use_wss&&n.mode==="ws"&&e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"SSL 证书文件路径"}),e.jsx(oe,{value:n.cert_file,onChange:f=>i({...n,cert_file:f.target.value}),placeholder:"cert.pem"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"SSL 密钥文件路径"}),e.jsx(oe,{value:n.key_file,onChange:f=>i({...n,key_file:f.target.value}),placeholder:"key.pem"})]})]})]})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"mb-2 block",children:"认证令牌"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-2",children:"用于 API 验证,为空则不启用验证"}),e.jsxs("div",{className:"flex gap-2 mb-2",children:[e.jsx(oe,{value:c,onChange:f=>d(f.target.value),placeholder:"输入认证令牌",onKeyDown:f=>{f.key==="Enter"&&(f.preventDefault(),h())}}),e.jsx(N,{onClick:h,size:"sm",children:e.jsx(xt,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]}),e.jsx("div",{className:"space-y-2",children:n.auth_token.map((f,j)=>e.jsxs("div",{className:"flex items-center justify-between bg-secondary px-3 py-2 rounded-md",children:[e.jsx("span",{className:"text-sm font-mono",children:f}),e.jsx(N,{variant:"ghost",size:"sm",className:"h-6 w-6 p-0",onClick:()=>x(j),children:e.jsx(ls,{className:"h-3 w-3",strokeWidth:2,fill:"none"})})]},j))})]})]})}function J0({config:n,onChange:i}){return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"统计信息"}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:"启用统计信息发送"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"发送匿名统计信息,帮助我们了解全球有多少只麦麦在运行"})]}),e.jsx(Xe,{checked:n.enable,onCheckedChange:c=>i({...n,enable:c})})]})]})}const hn=u.forwardRef(({className:n,...i},c)=>e.jsx("div",{className:"relative w-full overflow-auto",children:e.jsx("table",{ref:c,className:$("w-full caption-bottom text-sm",n),...i})}));hn.displayName="Table";const xn=u.forwardRef(({className:n,...i},c)=>e.jsx("thead",{ref:c,className:$("[&_tr]:border-b",n),...i}));xn.displayName="TableHeader";const fn=u.forwardRef(({className:n,...i},c)=>e.jsx("tbody",{ref:c,className:$("[&_tr:last-child]:border-0",n),...i}));fn.displayName="TableBody";const Z0=u.forwardRef(({className:n,...i},c)=>e.jsx("tfoot",{ref:c,className:$("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",n),...i}));Z0.displayName="TableFooter";const ot=u.forwardRef(({className:n,...i},c)=>e.jsx("tr",{ref:c,className:$("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",n),...i}));ot.displayName="TableRow";const Ie=u.forwardRef(({className:n,...i},c)=>e.jsx("th",{ref:c,className:$("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",n),...i}));Ie.displayName="TableHead";const Fe=u.forwardRef(({className:n,...i},c)=>e.jsx("td",{ref:c,className:$("px-4 py-3 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",n),...i}));Fe.displayName="TableCell";const I0=u.forwardRef(({className:n,...i},c)=>e.jsx("caption",{ref:c,className:$("mt-4 text-sm text-muted-foreground",n),...i}));I0.displayName="TableCaption";const no=u.forwardRef(({className:n,...i},c)=>e.jsx($t,{ref:c,className:$("flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground",n),...i}));no.displayName=$t.displayName;const io=u.forwardRef(({className:n,...i},c)=>e.jsxs("div",{className:"flex items-center border-b px-3","cmdk-input-wrapper":"",children:[e.jsx(zt,{className:"mr-2 h-4 w-4 shrink-0 opacity-50"}),e.jsx($t.Input,{ref:c,className:$("flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50",n),...i})]}));io.displayName=$t.Input.displayName;const ro=u.forwardRef(({className:n,...i},c)=>e.jsx($t.List,{ref:c,className:$("max-h-[300px] overflow-y-auto overflow-x-hidden",n),...i}));ro.displayName=$t.List.displayName;const co=u.forwardRef((n,i)=>e.jsx($t.Empty,{ref:i,className:"py-6 text-center text-sm",...n}));co.displayName=$t.Empty.displayName;const vr=u.forwardRef(({className:n,...i},c)=>e.jsx($t.Group,{ref:c,className:$("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground",n),...i}));vr.displayName=$t.Group.displayName;const P0=u.forwardRef(({className:n,...i},c)=>e.jsx($t.Separator,{ref:c,className:$("-mx-1 h-px bg-border",n),...i}));P0.displayName=$t.Separator.displayName;const Nr=u.forwardRef(({className:n,...i},c)=>e.jsx($t.Item,{ref:c,className:$("relative flex cursor-default gap-2 select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",n),...i}));Nr.displayName=$t.Item.displayName;const jt=u.forwardRef(({className:n,...i},c)=>e.jsx(Ip,{ref:c,className:$("grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",n),...i,children:e.jsx(tb,{className:$("grid place-content-center text-current"),children:e.jsx(sa,{className:"h-4 w-4"})})}));jt.displayName=Ip.displayName;const zg=u.createContext(null),Ag="maibot-completed-tours";function W0(){try{const n=localStorage.getItem(Ag);return n?new Set(JSON.parse(n)):new Set}catch{return new Set}}function rp(n){localStorage.setItem(Ag,JSON.stringify([...n]))}function ew({children:n}){const[i,c]=u.useState({activeTourId:null,stepIndex:0,isRunning:!1}),d=u.useRef(new Map),[,h]=u.useState(0),[x,f]=u.useState(W0),j=u.useCallback((H,A)=>{d.current.set(H,A),h(V=>V+1)},[]),p=u.useCallback(H=>{d.current.delete(H),c(A=>A.activeTourId===H?{...A,activeTourId:null,isRunning:!1,stepIndex:0}:A)},[]),w=u.useCallback((H,A=0)=>{d.current.has(H)&&c({activeTourId:H,stepIndex:A,isRunning:!0})},[]),v=u.useCallback(()=>{c(H=>({...H,isRunning:!1}))},[]),y=u.useCallback(H=>{c(A=>({...A,stepIndex:H}))},[]),S=u.useCallback(()=>{c(H=>({...H,stepIndex:H.stepIndex+1}))},[]),C=u.useCallback(()=>{c(H=>({...H,stepIndex:Math.max(0,H.stepIndex-1)}))},[]),M=u.useCallback(()=>i.activeTourId?d.current.get(i.activeTourId)||[]:[],[i.activeTourId]),F=u.useCallback(H=>{f(A=>{const V=new Set(A);return V.add(H),rp(V),V})},[]),U=u.useCallback(H=>{const{action:A,index:V,status:Q,type:T}=H,D=["finished","skipped"];if(A==="close"){c(ne=>({...ne,isRunning:!1,stepIndex:0}));return}D.includes(Q)?c(ne=>(Q==="finished"&&ne.activeTourId&&setTimeout(()=>F(ne.activeTourId),0),{...ne,isRunning:!1,stepIndex:0})):T==="step:after"&&(A==="next"?c(ne=>({...ne,stepIndex:V+1})):A==="prev"&&c(ne=>({...ne,stepIndex:V-1})))},[F]),O=u.useCallback(H=>x.has(H),[x]),K=u.useCallback(H=>{f(A=>{const V=new Set(A);return V.delete(H),rp(V),V})},[]);return e.jsx(zg.Provider,{value:{state:i,tours:d.current,registerTour:j,unregisterTour:p,startTour:w,stopTour:v,goToStep:y,nextStep:S,prevStep:C,getCurrentSteps:M,handleJoyrideCallback:U,isTourCompleted:O,markTourCompleted:F,resetTourCompleted:K},children:n})}function Zu(){const n=u.useContext(zg);if(!n)throw new Error("useTour must be used within a TourProvider");return n}const sw={options:{zIndex:1e4,primaryColor:"hsl(var(--primary))",textColor:"hsl(var(--foreground))",backgroundColor:"hsl(var(--background))",arrowColor:"hsl(var(--background))",overlayColor:"rgba(0, 0, 0, 0.5)"},tooltip:{borderRadius:"var(--radius)",padding:"1rem"},tooltipContainer:{textAlign:"left"},tooltipTitle:{fontSize:"1rem",fontWeight:600,marginBottom:"0.5rem"},tooltipContent:{fontSize:"0.875rem",padding:"0.5rem 0"},buttonNext:{backgroundColor:"hsl(var(--primary))",color:"hsl(var(--primary-foreground))",borderRadius:"calc(var(--radius) - 2px)",fontSize:"0.875rem",padding:"0.5rem 1rem"},buttonBack:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem",marginRight:"0.5rem"},buttonSkip:{color:"hsl(var(--muted-foreground))",fontSize:"0.875rem"},buttonClose:{color:"hsl(var(--muted-foreground))"},spotlight:{borderRadius:"var(--radius)"}},tw={back:"上一步",close:"关闭",last:"完成",next:"下一步",nextLabelWithProgress:"下一步 ({step}/{steps})",open:"打开对话框",skip:"跳过"};function aw(){const{state:n,getCurrentSteps:i,handleJoyrideCallback:c}=Zu(),d=i(),[h,x]=u.useState(!1),f=u.useRef(n.stepIndex),j=u.useRef(null);u.useEffect(()=>{f.current!==n.stepIndex&&(x(!1),f.current=n.stepIndex)},[n.stepIndex]),u.useEffect(()=>{if(!n.isRunning||d.length===0){x(!1);return}const v=d[n.stepIndex];if(!v){x(!1);return}const y=v.target;if(y==="body"){x(!0);return}x(!1);const S=setTimeout(()=>{const C=()=>{const O=document.querySelector(y);if(O){const K=O.getBoundingClientRect();if(K.width>0&&K.height>0)return!0}return!1};if(C()){setTimeout(()=>x(!0),100);return}const M=setInterval(()=>{C()&&(clearInterval(M),setTimeout(()=>x(!0),100))},100),F=setTimeout(()=>{clearInterval(M),x(!0)},5e3),U=()=>{clearInterval(M),clearTimeout(F)};j.current=U},150);return()=>{clearTimeout(S),j.current&&(j.current(),j.current=null)}},[n.isRunning,n.stepIndex,d]);const p=u.useRef(null);if(u.useEffect(()=>{let v=document.getElementById("tour-portal-container");return v||(v=document.createElement("div"),v.id="tour-portal-container",v.style.cssText="position: fixed; top: 0; left: 0; z-index: 99999; pointer-events: none;",document.body.appendChild(v)),p.current=v,()=>{}},[]),!n.isRunning||d.length===0||!h)return null;const w=e.jsx(Yb,{steps:d,stepIndex:n.stepIndex,run:n.isRunning,continuous:!0,showSkipButton:!0,showProgress:!0,disableOverlayClose:!0,disableScrolling:!1,disableScrollParentFix:!1,callback:c,styles:sw,locale:tw,scrollOffset:80,scrollToFirstStep:!0,floaterProps:{styles:{floater:{zIndex:99999}},disableAnimation:!0}},`tour-step-${n.stepIndex}`);return p.current?lN.createPortal(w,p.current):w}const il="model-assignment-tour",Mg=[{target:"body",content:"本引导旨在帮助你配置模型提供商和对应的模型,并为麦麦的各个组件分配合适的模型。",placement:"center",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="sidebar-model-provider"]',content:'第一步,你需要配置模型提供商。模型提供商决定了你要使用谁家的模型,无论是单一厂商(如 DeepSeek),还是模型平台(如 Siliconflow),都可以在这里进行配置。点击"下一步"进入配置页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-provider-button"]',content:'点击"添加提供商"按钮,开始配置你的模型提供商。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="provider-dialog"]',content:"在这里,你可以选择你想要配置的模型提供商,填写相关信息后保存即可。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-name-input"]',content:"这里的名称是你为这个模型提供商起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-apikey-input"]',content:"这里需要填写你从模型提供商那里获取的 API 密钥,用于验证和调用模型服务。对于不同的提供商,获取 API 密钥的方式可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-url-input"]',content:"这里需要填写模型提供商的 API 访问地址,确保填写正确以便系统能够连接到模型服务。对于不同的提供商,API 地址可能有所不同,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-template-select"]',content:"当然,如果你不知道如何填写这些信息,很多模型提供商在这里都提供了预设的模板供你选择,选择对应的模板后,相关信息会自动填充。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-save-button"]',content:"填写完所有信息后,点击保存按钮,模型提供商就配置完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="provider-cancel-button"]',content:"因为这次咱们什么都没有填写,所以点击取消按钮退出吧。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="sidebar-model-management"]',content:'配置好模型提供商后,接下来我们需要为麦麦添加模型并分配功能。点击"下一步"进入模型管理页面。',placement:"right",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="add-model-button"]',content:'在为麦麦的组件分配模型之前,首先需要添加你想要分配的模型,点击"添加模型"按钮开始添加。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="model-dialog"]',content:"在这里,你可以选择你之前配置好的模型提供商,然后选择对应的模型来添加。",placement:"left",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-name-input"]',content:"这里的模型名称是你为这个模型起的一个名字,方便你在后续使用时识别它。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-provider-select"]',content:"在这里选择你之前配置好的模型提供商,这样系统才能知道你要添加哪个提供商的模型。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-identifier-input"]',content:"这里需要填写你想要添加的模型的标识符,不同的模型提供商可能有不同的标识符格式,请参考对应提供商的文档。",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-save-button"]',content:"填写完所有信息后,点击保存按钮,模型就添加完成了。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1},{target:'[data-tour="model-cancel-button"]',content:"当然,因为这次咱们什么都没有填写,所以直接点击取消按钮退出吧,等你准备好了再来添加模型。",placement:"top",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="tasks-tab-trigger"]',content:'最后一步,添加好模型后,切换到"为模型分配功能"标签页,为麦麦的各个组件分配合适的模型。',placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!0,hideFooter:!0},{target:'[data-tour="task-model-select"]',content:"在这里,你可以为每个组件选择一个或多个合适的模型,选择完成后配置会自动保存。恭喜你完成了模型配置的学习!",placement:"bottom",disableBeacon:!0,disableOverlayClose:!0,hideCloseButton:!1,spotlightClicks:!1}],Dg={0:"/config/model",1:"/config/model",2:"/config/modelProvider",3:"/config/modelProvider",4:"/config/modelProvider",5:"/config/modelProvider",6:"/config/modelProvider",7:"/config/modelProvider",8:"/config/modelProvider",9:"/config/modelProvider",10:"/config/modelProvider",11:"/config/model",12:"/config/model",13:"/config/model",14:"/config/model",15:"/config/model",16:"/config/model",17:"/config/model",18:"/config/model",19:"/config/model"},or=[{id:"siliconflow",name:"SiliconFlow",base_url:"https://api.siliconflow.cn/v1",client_type:"openai",display_name:"硅基流动 (SiliconFlow)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"deepseek",name:"DeepSeek",base_url:"https://api.deepseek.com",client_type:"openai",display_name:"DeepSeek",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"rinkoai",name:"RinkoAI",base_url:"https://rinkoai.com/v1",client_type:"openai",display_name:"RinkoAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"zhipu",name:"ZhipuAI",base_url:"https://open.bigmodel.cn/api/paas/v4",client_type:"openai",display_name:"智谱 AI (ZhipuAI / GLM)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"moonshot",name:"Moonshot",base_url:"https://api.moonshot.cn/v1",client_type:"openai",display_name:"月之暗面 (Moonshot / Kimi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"doubao",name:"Doubao",base_url:"https://ark.cn-beijing.volces.com/api/v3",client_type:"openai",display_name:"字节豆包 (Doubao)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"alibaba",name:"Alibaba",base_url:"https://dashscope.aliyuncs.com/compatible-mode/v1",client_type:"openai",display_name:"阿里云百炼 (Alibaba Qwen)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"baichuan",name:"Baichuan",base_url:"https://api.baichuan-ai.com/v1",client_type:"openai",display_name:"百川智能 (Baichuan)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"minimax",name:"MiniMax",base_url:"https://api.minimax.chat/v1",client_type:"openai",display_name:"MiniMax (海螺 AI)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"stepfun",name:"StepFun",base_url:"https://api.stepfun.com/v1",client_type:"openai",display_name:"阶跃星辰 (StepFun)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"lingyi",name:"Lingyi",base_url:"https://api.lingyiwanwu.com/v1",client_type:"openai",display_name:"零一万物 (Lingyi / Yi)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"openai",name:"OpenAI",base_url:"https://api.openai.com/v1",client_type:"openai",display_name:"OpenAI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"xai",name:"xAI",base_url:"https://api.x.ai/v1",client_type:"openai",display_name:"xAI (Grok)",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"anthropic",name:"Anthropic",base_url:"https://api.anthropic.com/v1",client_type:"openai",display_name:"Anthropic (Claude)"},{id:"gemini",name:"Gemini",base_url:"https://generativelanguage.googleapis.com/v1beta",client_type:"gemini",display_name:"Google Gemini",modelFetcher:{endpoint:"/models",parser:"gemini"}},{id:"cohere",name:"Cohere",base_url:"https://api.cohere.ai/v1",client_type:"openai",display_name:"Cohere"},{id:"groq",name:"Groq",base_url:"https://api.groq.com/openai/v1",client_type:"openai",display_name:"Groq",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"together",name:"Together AI",base_url:"https://api.together.xyz/v1",client_type:"openai",display_name:"Together AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"fireworks",name:"Fireworks",base_url:"https://api.fireworks.ai/inference/v1",client_type:"openai",display_name:"Fireworks AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"mistral",name:"Mistral",base_url:"https://api.mistral.ai/v1",client_type:"openai",display_name:"Mistral AI",modelFetcher:{endpoint:"/models",parser:"openai"}},{id:"perplexity",name:"Perplexity",base_url:"https://api.perplexity.ai",client_type:"openai",display_name:"Perplexity AI"},{id:"custom",name:"",base_url:"",client_type:"openai",display_name:"自定义"}];function cp(n){return n?n.replace(/\/+$/,"").toLowerCase():""}function lw(n){if(!n)return null;const i=cp(n);return or.find(c=>c.id!=="custom"&&cp(c.base_url)===i)||null}function nw(){const[n,i]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),[p,w]=u.useState(!1),[v,y]=u.useState(!1),[S,C]=u.useState(!1),[M,F]=u.useState(!1),[U,O]=u.useState(null),[K,H]=u.useState(null),[A,V]=u.useState("custom"),[Q,T]=u.useState(!1),[D,ne]=u.useState(!1),[xe,_e]=u.useState(null),[Se,ge]=u.useState(!1),[ye,be]=u.useState(""),[z,X]=u.useState(new Set),[k,se]=u.useState(!1),[_,ue]=u.useState(1),[ie,ae]=u.useState(20),[fe,Ne]=u.useState(""),[me,G]=u.useState({}),[P,B]=u.useState(new Set),[W,Ce]=u.useState(new Map),{toast:Me}=Gs(),re=ga(),{state:De,goToStep:Vs,registerTour:Qs}=Zu(),de=u.useRef(null),Ee=u.useRef(!0);u.useEffect(()=>{Qs(il,Mg)},[Qs]),u.useEffect(()=>{if(De.activeTourId===il&&De.isRunning){const ee=Dg[De.stepIndex];ee&&!window.location.pathname.endsWith(ee.replace("/config/",""))&&re({to:ee})}},[De.stepIndex,De.activeTourId,De.isRunning,re]);const ts=u.useRef(De.stepIndex);u.useEffect(()=>{if(De.activeTourId===il&&De.isRunning){const ee=ts.current,we=De.stepIndex;ee>=3&&ee<=9&&we<3&&F(!1),ee>=10&&we>=3&&we<=9&&(G({}),V("custom"),O({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10}),H(null),ge(!1),F(!0)),ts.current=we}},[De.stepIndex,De.activeTourId,De.isRunning]),u.useEffect(()=>{if(De.activeTourId!==il||!De.isRunning)return;const ee=we=>{const Ge=we.target,pt=De.stepIndex;pt===2&&Ge.closest('[data-tour="add-provider-button"]')?setTimeout(()=>Vs(3),300):pt===9&&Ge.closest('[data-tour="provider-cancel-button"]')&&setTimeout(()=>Vs(10),300)};return document.addEventListener("click",ee,!0),()=>document.removeEventListener("click",ee,!0)},[De,Vs]),u.useEffect(()=>{Ke()},[]);const Ke=async()=>{try{d(!0);const ee=await ni();i(ee.api_providers||[]),w(!1),Ee.current=!1}catch(ee){console.error("加载配置失败:",ee)}finally{d(!1)}},lt=async()=>{try{y(!0),lo().catch(()=>{}),C(!0)}catch(ee){console.error("重启失败:",ee),C(!1),Me({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),y(!1)}},Ot=async()=>{try{x(!0),de.current&&clearTimeout(de.current);const ee=await ni();ee.api_providers=n,await to(ee),w(!1),Me({title:"保存成功",description:"正在重启麦麦..."}),await lt()}catch(ee){console.error("保存配置失败:",ee),Me({title:"保存失败",description:ee.message,variant:"destructive"}),x(!1)}},bt=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},Pe=()=>{C(!1),y(!1),Me({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},R=u.useCallback(async ee=>{if(!Ee.current)try{j(!0),await Uu("api_providers",ee),w(!1)}catch(we){console.error("自动保存失败:",we),w(!0)}finally{j(!1)}},[]);u.useEffect(()=>{if(!Ee.current)return w(!0),de.current&&clearTimeout(de.current),de.current=setTimeout(()=>{R(n)},2e3),()=>{de.current&&clearTimeout(de.current)}},[n,R]);const Re=async()=>{try{x(!0),de.current&&clearTimeout(de.current);const ee=await ni();ee.api_providers=n,await to(ee),w(!1),Me({title:"保存成功",description:"模型提供商配置已保存"})}catch(ee){console.error("保存配置失败:",ee),Me({title:"保存失败",description:ee.message,variant:"destructive"})}finally{x(!1)}},ze=(ee,we)=>{if(G({}),ee){const Ge=or.find(pt=>pt.base_url===ee.base_url&&pt.client_type===ee.client_type);V(Ge?.id||"custom"),O(ee)}else V("custom"),O({name:"",base_url:"",api_key:"",client_type:"openai",max_retry:2,timeout:30,retry_interval:10});H(we),ge(!1),F(!0)},$e=ee=>{V(ee),T(!1);const we=or.find(Ge=>Ge.id===ee);we&&we.id!=="custom"?O(Ge=>({...Ge,name:we.name,base_url:we.base_url,client_type:we.client_type})):we?.id==="custom"&&O(Ge=>({...Ge,name:"",base_url:"",client_type:"openai"}))},Es=u.useMemo(()=>A!=="custom",[A]),We=async()=>{if(U?.api_key)try{await navigator.clipboard.writeText(U.api_key),Me({title:"复制成功",description:"API Key 已复制到剪贴板"})}catch{Me({title:"复制失败",description:"无法访问剪贴板",variant:"destructive"})}},nt=()=>{if(!U)return;const ee={};if(U.name?.trim()||(ee.name="请输入提供商名称"),U.base_url?.trim()||(ee.base_url="请输入基础 URL"),U.api_key?.trim()||(ee.api_key="请输入 API Key"),Object.keys(ee).length>0){G(ee);return}G({});const we={...U,max_retry:U.max_retry??2,timeout:U.timeout??30,retry_interval:U.retry_interval??10};if(K!==null){const Ge=[...n];Ge[K]=we,i(Ge)}else i([...n,we]);F(!1),O(null),H(null)},vs=ee=>{if(!ee&&U){const we={...U,max_retry:U.max_retry??2,timeout:U.timeout??30,retry_interval:U.retry_interval??10};O(we)}F(ee)},ke=ee=>{_e(ee),ne(!0)},ve=()=>{if(xe!==null){const ee=n.filter((we,Ge)=>Ge!==xe);i(ee),Me({title:"删除成功",description:"提供商已从列表中移除"})}ne(!1),_e(null)},ns=ee=>{const we=new Set(z);we.has(ee)?we.delete(ee):we.add(ee),X(we)},_s=()=>{if(z.size===Ys.length)X(new Set);else{const ee=Ys.map((we,Ge)=>n.findIndex(pt=>pt===Ys[Ge]));X(new Set(ee))}},At=()=>{if(z.size===0){Me({title:"提示",description:"请先选择要删除的提供商",variant:"default"});return}se(!0)},Ps=()=>{const ee=n.filter((we,Ge)=>!z.has(Ge));i(ee),X(new Set),se(!1),Me({title:"批量删除成功",description:`已删除 ${z.size} 个提供商`})},Ys=n.filter(ee=>{if(!ye)return!0;const we=ye.toLowerCase();return ee.name.toLowerCase().includes(we)||ee.base_url.toLowerCase().includes(we)||ee.client_type.toLowerCase().includes(we)}),Et=Math.ceil(Ys.length/ie),Rt=Ys.slice((_-1)*ie,_*ie),Ha=()=>{const ee=parseInt(fe);ee>=1&&ee<=Et&&(ue(ee),Ne(""))},Qt=async ee=>{B(we=>new Set(we).add(ee));try{const we=await E0(ee);Ce(Ge=>new Map(Ge).set(ee,we)),we.network_ok?we.api_key_valid===!0?Me({title:"连接正常",description:`${ee} 网络连接正常,API Key 有效 (${we.latency_ms}ms)`}):we.api_key_valid===!1?Me({title:"连接正常但 Key 无效",description:`${ee} 网络连接正常,但 API Key 无效或已过期`,variant:"destructive"}):Me({title:"网络连接正常",description:`${ee} 可以访问 (${we.latency_ms}ms)`}):Me({title:"连接失败",description:we.error||"无法连接到提供商",variant:"destructive"})}catch(we){Me({title:"测试失败",description:we.message,variant:"destructive"})}finally{B(we=>{const Ge=new Set(we);return Ge.delete(ee),Ge})}},qa=async()=>{for(const ee of n)await Qt(ee.name)},Sa=ee=>{const we=P.has(ee),Ge=W.get(ee);return we?e.jsxs(Ye,{variant:"secondary",className:"gap-1",children:[e.jsx(kt,{className:"h-3 w-3 animate-spin"}),"测试中"]}):Ge?Ge.network_ok?Ge.api_key_valid===!0?e.jsxs(Ye,{className:"gap-1 bg-green-600 hover:bg-green-700",children:[e.jsx(fa,{className:"h-3 w-3"}),"正常"]}):Ge.api_key_valid===!1?e.jsxs(Ye,{variant:"destructive",className:"gap-1",children:[e.jsx(Oa,{className:"h-3 w-3"}),"Key无效"]}):e.jsxs(Ye,{className:"gap-1 bg-blue-600 hover:bg-blue-700",children:[e.jsx(fa,{className:"h-3 w-3"}),"可访问"]}):e.jsxs(Ye,{variant:"destructive",className:"gap-1",children:[e.jsx(ng,{className:"h-3 w-3"}),"离线"]}):null};return c?e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})}):e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"AI模型厂商配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理 AI 模型厂商的 API 配置"})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[z.size>0&&e.jsxs(N,{onClick:At,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(ls,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",z.size,")"]}),e.jsxs(N,{onClick:qa,size:"sm",variant:"outline",className:"w-full sm:w-auto",disabled:n.length===0||P.size>0,children:[e.jsx(cn,{className:"mr-2 h-4 w-4"}),P.size>0?`测试中 (${P.size})`:"测试全部"]}),e.jsxs(N,{onClick:()=>ze(null,null),size:"sm",className:"w-full sm:w-auto","data-tour":"add-provider-button",children:[e.jsx(xt,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加提供商"]}),e.jsxs(N,{onClick:Re,disabled:h||f||!p||v,size:"sm",variant:"outline",className:"w-full sm:w-auto sm:min-w-[120px]",children:[e.jsx(yr,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),h?"保存中...":f?"自动保存中...":p?"保存配置":"已保存"]}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsxs(N,{disabled:h||f||v,size:"sm",className:"w-full sm:w-auto sm:min-w-[120px]",children:[e.jsx(br,{className:"mr-2 h-4 w-4"}),v?"重启中...":p?"保存并重启":"重启麦麦"]})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认重启麦麦?"}),e.jsx(ds,{asChild:!0,children:e.jsx("div",{children:e.jsx("p",{children:p?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"})})})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:p?Ot:lt,children:p?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsxs(cl,{children:[e.jsx(Ra,{className:"h-4 w-4"}),e.jsxs(ol,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),e.jsxs(ss,{className:"h-[calc(100vh-260px)]",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2 mb-4",children:[e.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[e.jsx(zt,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(oe,{placeholder:"搜索提供商名称、URL 或类型...",value:ye,onChange:ee=>be(ee.target.value),className:"pl-9"})]}),ye&&e.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",Ys.length," 个结果"]})]}),e.jsx("div",{className:"md:hidden space-y-3",children:Ys.length===0?e.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:ye?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'}):Rt.map((ee,we)=>{const Ge=n.findIndex(pt=>pt===ee);return e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("h3",{className:"font-semibold text-base truncate",children:ee.name}),Sa(ee.name)]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1 break-all",children:ee.base_url})]}),e.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>Qt(ee.name),disabled:P.has(ee.name),title:"测试连接",children:P.has(ee.name)?e.jsx(kt,{className:"h-4 w-4 animate-spin"}):e.jsx(cn,{className:"h-4 w-4"})}),e.jsx(N,{variant:"default",size:"sm",onClick:()=>ze(ee,Ge),children:e.jsx(on,{className:"h-4 w-4",strokeWidth:2,fill:"none"})}),e.jsx(N,{size:"sm",onClick:()=>ke(Ge),className:"bg-red-600 hover:bg-red-700 text-white",children:e.jsx(ls,{className:"h-4 w-4",strokeWidth:2,fill:"none"})})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"客户端类型"}),e.jsx("p",{className:"font-medium",children:ee.client_type})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"最大重试"}),e.jsx("p",{className:"font-medium",children:ee.max_retry})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"超时(秒)"}),e.jsx("p",{className:"font-medium",children:ee.timeout})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"重试间隔(秒)"}),e.jsx("p",{className:"font-medium",children:ee.retry_interval})]})]})]},we)})}),e.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(hn,{children:[e.jsx(xn,{children:e.jsxs(ot,{children:[e.jsx(Ie,{className:"w-12",children:e.jsx(jt,{checked:z.size===Ys.length&&Ys.length>0,onCheckedChange:_s})}),e.jsx(Ie,{children:"状态"}),e.jsx(Ie,{children:"名称"}),e.jsx(Ie,{children:"基础URL"}),e.jsx(Ie,{children:"客户端类型"}),e.jsx(Ie,{className:"text-right",children:"最大重试"}),e.jsx(Ie,{className:"text-right",children:"超时(秒)"}),e.jsx(Ie,{className:"text-right",children:"重试间隔(秒)"}),e.jsx(Ie,{className:"text-right",children:"操作"})]})}),e.jsx(fn,{children:Rt.length===0?e.jsx(ot,{children:e.jsx(Fe,{colSpan:9,className:"text-center text-muted-foreground py-8",children:ye?"未找到匹配的提供商":'暂无提供商配置,点击"添加提供商"开始配置'})}):Rt.map((ee,we)=>{const Ge=n.findIndex(pt=>pt===ee);return e.jsxs(ot,{children:[e.jsx(Fe,{children:e.jsx(jt,{checked:z.has(Ge),onCheckedChange:()=>ns(Ge)})}),e.jsx(Fe,{children:Sa(ee.name)||e.jsx(Ye,{variant:"outline",className:"text-muted-foreground",children:"未测试"})}),e.jsx(Fe,{className:"font-medium",children:ee.name}),e.jsx(Fe,{className:"max-w-xs truncate",title:ee.base_url,children:ee.base_url}),e.jsx(Fe,{children:ee.client_type}),e.jsx(Fe,{className:"text-right",children:ee.max_retry}),e.jsx(Fe,{className:"text-right",children:ee.timeout}),e.jsx(Fe,{className:"text-right",children:ee.retry_interval}),e.jsx(Fe,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>Qt(ee.name),disabled:P.has(ee.name),title:"测试连接",children:P.has(ee.name)?e.jsx(kt,{className:"h-4 w-4 animate-spin"}):e.jsx(cn,{className:"h-4 w-4"})}),e.jsxs(N,{variant:"default",size:"sm",onClick:()=>ze(ee,Ge),children:[e.jsx(on,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(N,{size:"sm",onClick:()=>ke(Ge),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(ls,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},we)})})]})})}),Ys.length>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"page-size-provider",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(He,{value:ie.toString(),onValueChange:ee=>{ae(parseInt(ee)),ue(1),X(new Set)},children:[e.jsx(Le,{id:"page-size-provider",className:"w-20",children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"10",children:"10"}),e.jsx(le,{value:"20",children:"20"}),e.jsx(le,{value:"50",children:"50"}),e.jsx(le,{value:"100",children:"100"})]})]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(_-1)*ie+1," 到"," ",Math.min(_*ie,Ys.length)," 条,共 ",Ys.length," 条"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>ue(1),disabled:_===1,className:"hidden sm:flex",children:e.jsx(di,{className:"h-4 w-4"})}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>ue(ee=>Math.max(1,ee-1)),disabled:_===1,children:[e.jsx(Hl,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(oe,{type:"number",value:fe,onChange:ee=>Ne(ee.target.value),onKeyDown:ee=>ee.key==="Enter"&&Ha(),placeholder:_.toString(),className:"w-16 h-8 text-center",min:1,max:Et}),e.jsx(N,{variant:"outline",size:"sm",onClick:Ha,disabled:!fe,className:"h-8",children:"跳转"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>ue(ee=>ee+1),disabled:_>=Et,children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(ul,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>ue(Et),disabled:_>=Et,className:"hidden sm:flex",children:e.jsx(ui,{className:"h-4 w-4"})})]})]})]}),e.jsx($s,{open:M,onOpenChange:vs,children:e.jsxs(Bs,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"provider-dialog",preventOutsideClose:De.isRunning,children:[e.jsxs(Hs,{children:[e.jsx(qs,{children:K!==null?"编辑提供商":"添加提供商"}),e.jsx(Is,{children:"配置 API 提供商的连接信息和参数"})]}),e.jsxs("form",{onSubmit:ee=>{ee.preventDefault(),nt()},autoComplete:"off",children:[e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":"provider-template-select",children:[e.jsx(b,{htmlFor:"template",children:"提供商模板"}),e.jsxs(Ua,{open:Q,onOpenChange:T,children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(N,{variant:"outline",role:"combobox","aria-expanded":Q,className:"w-full justify-between",children:[A?or.find(ee=>ee.id===A)?.display_name:"选择提供商模板...",e.jsx(Fu,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(_a,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:e.jsxs(no,{children:[e.jsx(io,{placeholder:"搜索提供商模板..."}),e.jsx(ss,{className:"h-[300px]",children:e.jsxs(ro,{className:"max-h-none overflow-visible",children:[e.jsx(co,{children:"未找到匹配的模板"}),e.jsx(vr,{children:or.map(ee=>e.jsxs(Nr,{value:ee.display_name,onSelect:()=>$e(ee.id),children:[e.jsx(sa,{className:`mr-2 h-4 w-4 ${A===ee.id?"opacity-100":"opacity-0"}`}),ee.display_name]},ee.id))})]})})]})})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"选择预设模板可自动填充 URL 和客户端类型,支持搜索"})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-name-input",children:[e.jsx(b,{htmlFor:"name",className:me.name?"text-destructive":"",children:"名称 *"}),e.jsx(oe,{id:"name",value:U?.name||"",onChange:ee=>{O(we=>we?{...we,name:ee.target.value}:null),me.name&&G(we=>({...we,name:void 0}))},placeholder:"例如: DeepSeek, SiliconFlow",className:me.name?"border-destructive focus-visible:ring-destructive":""}),me.name&&e.jsx("p",{className:"text-xs text-destructive",children:me.name})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-url-input",children:[e.jsx(b,{htmlFor:"base_url",className:me.base_url?"text-destructive":"",children:"基础 URL *"}),e.jsx(oe,{id:"base_url",value:U?.base_url||"",onChange:ee=>{O(we=>we?{...we,base_url:ee.target.value}:null),me.base_url&&G(we=>({...we,base_url:void 0}))},placeholder:"https://api.example.com/v1",disabled:Es,className:`${Es?"bg-muted cursor-not-allowed":""} ${me.base_url?"border-destructive focus-visible:ring-destructive":""}`}),me.base_url&&e.jsx("p",{className:"text-xs text-destructive",children:me.base_url}),Es&&!me.base_url&&e.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时 URL 不可编辑,切换到"自定义"以手动配置'})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"provider-apikey-input",children:[e.jsx(b,{htmlFor:"api_key",className:me.api_key?"text-destructive":"",children:"API Key *"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx(oe,{id:"api_key",type:Se?"text":"password",value:U?.api_key||"",onChange:ee=>{O(we=>we?{...we,api_key:ee.target.value}:null),me.api_key&&G(we=>({...we,api_key:void 0}))},placeholder:"sk-...",className:`flex-1 ${me.api_key?"border-destructive focus-visible:ring-destructive":""}`}),e.jsx(N,{type:"button",variant:"outline",size:"icon",onClick:()=>ge(!Se),title:Se?"隐藏密钥":"显示密钥",children:Se?e.jsx(xr,{className:"h-4 w-4"}):e.jsx(Dt,{className:"h-4 w-4"})}),e.jsx(N,{type:"button",variant:"outline",size:"icon",onClick:We,title:"复制密钥",children:e.jsx(Pc,{className:"h-4 w-4"})})]}),me.api_key&&e.jsx("p",{className:"text-xs text-destructive",children:me.api_key})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"client_type",children:"客户端类型"}),e.jsxs(He,{value:U?.client_type||"openai",onValueChange:ee=>O(we=>we?{...we,client_type:ee}:null),disabled:Es,children:[e.jsx(Le,{id:"client_type",className:Es?"bg-muted cursor-not-allowed":"",children:e.jsx(qe,{placeholder:"选择客户端类型"})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"openai",children:"OpenAI"}),e.jsx(le,{value:"gemini",children:"Gemini"})]})]}),Es&&e.jsx("p",{className:"text-xs text-muted-foreground",children:'使用模板时客户端类型不可编辑,切换到"自定义"以手动配置'})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"max_retry",children:"最大重试"}),e.jsx(oe,{id:"max_retry",type:"number",min:"0",value:U?.max_retry??"",onChange:ee=>{const we=ee.target.value===""?null:parseInt(ee.target.value);O(Ge=>Ge?{...Ge,max_retry:we}:null)},placeholder:"默认: 2"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"timeout",children:"超时(秒)"}),e.jsx(oe,{id:"timeout",type:"number",min:"1",value:U?.timeout??"",onChange:ee=>{const we=ee.target.value===""?null:parseInt(ee.target.value);O(Ge=>Ge?{...Ge,timeout:we}:null)},placeholder:"默认: 30"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"retry_interval",children:"重试间隔(秒)"}),e.jsx(oe,{id:"retry_interval",type:"number",min:"1",value:U?.retry_interval??"",onChange:ee=>{const we=ee.target.value===""?null:parseInt(ee.target.value);O(Ge=>Ge?{...Ge,retry_interval:we}:null)},placeholder:"默认: 10"})]})]})]}),e.jsxs(at,{children:[e.jsx(N,{type:"button",variant:"outline",onClick:()=>F(!1),"data-tour":"provider-cancel-button",children:"取消"}),e.jsx(N,{type:"submit","data-tour":"provider-save-button",children:"保存"})]})]})]})}),e.jsx(ps,{open:D,onOpenChange:ne,children:e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认删除"}),e.jsxs(ds,{children:['确定要删除提供商 "',xe!==null?n[xe]?.name:"",'" 吗? 此操作无法撤销。']})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:ve,children:"删除"})]})]})}),e.jsx(ps,{open:k,onOpenChange:se,children:e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认批量删除"}),e.jsxs(ds,{children:["确定要删除选中的 ",z.size," 个提供商吗? 此操作无法撤销。"]})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:Ps,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),S&&e.jsx(Ju,{onRestartComplete:bt,onRestartFailed:Pe})]})}function iw({value:n,label:i,onRemove:c}){const{attributes:d,listeners:h,setNodeRef:x,transform:f,transition:j,isDragging:p}=ay({id:n}),w={transform:ly.Transform.toString(f),transition:j,opacity:p?.5:1},v=S=>{S.preventDefault(),S.stopPropagation(),c(n)},y=S=>{S.stopPropagation()};return e.jsx("div",{ref:x,style:w,className:$("inline-flex items-center gap-1",p&&"shadow-lg"),children:e.jsxs(Ye,{variant:"secondary",className:"cursor-move hover:bg-secondary/80 flex items-center gap-1",children:[e.jsx("div",{...d,...h,className:"cursor-grab active:cursor-grabbing flex items-center",children:e.jsx(bb,{className:"h-3 w-3 text-muted-foreground"})}),e.jsx("span",{children:i}),e.jsx("button",{type:"button",className:"ml-1 rounded-sm hover:bg-destructive/20 focus:outline-none focus:ring-1 focus:ring-destructive",onClick:v,onPointerDown:y,onMouseDown:S=>S.stopPropagation(),children:e.jsx(dl,{className:"h-3 w-3 cursor-pointer hover:text-destructive",strokeWidth:2,fill:"none"})})]})})}function rw({options:n,selected:i,onChange:c,placeholder:d="选择选项...",emptyText:h="未找到选项",className:x}){const[f,j]=u.useState(!1),p=Kb(Jf(ty,{activationConstraint:{distance:8}}),Jf(sy,{coordinateGetter:ey})),w=S=>{i.includes(S)?c(i.filter(C=>C!==S)):c([...i,S])},v=S=>{c(i.filter(C=>C!==S))},y=S=>{const{active:C,over:M}=S;if(M&&C.id!==M.id){const F=i.indexOf(C.id),U=i.indexOf(M.id);c(Wb(i,F,U))}};return e.jsxs(Ua,{open:f,onOpenChange:j,children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(N,{variant:"outline",role:"combobox","aria-expanded":f,className:$("w-full justify-between min-h-10 h-auto",x),children:[e.jsx(Jb,{sensors:p,collisionDetection:Zb,onDragEnd:y,children:e.jsx(Ib,{items:i,strategy:Pb,children:e.jsx("div",{className:"flex gap-1 flex-wrap flex-1",children:i.length===0?e.jsx("span",{className:"text-muted-foreground",children:d}):i.map(S=>{const C=n.find(M=>M.value===S);return e.jsx(iw,{value:S,label:C?.label||S,onRemove:v},S)})})})}),e.jsx(Fu,{className:"ml-2 h-4 w-4 shrink-0 opacity-50",strokeWidth:2,fill:"none"})]})}),e.jsx(_a,{className:"w-full p-0",align:"start",children:e.jsxs(no,{children:[e.jsx(io,{placeholder:"搜索...",className:"h-9"}),e.jsxs(ro,{children:[e.jsx(co,{children:h}),e.jsx(vr,{children:n.map(S=>{const C=i.includes(S.value);return e.jsxs(Nr,{value:S.value,onSelect:()=>w(S.value),children:[e.jsx("div",{className:$("mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary",C?"bg-primary text-primary-foreground":"opacity-50 [&_svg]:invisible"),children:e.jsx(sa,{className:"h-3 w-3",strokeWidth:2,fill:"none"})}),e.jsx("span",{children:S.label})]},S.value)})})]})]})})]})}const op=new Map,cw=300*1e3;function ow(){const[n,i]=u.useState([]),[c,d]=u.useState([]),[h,x]=u.useState([]),[f,j]=u.useState([]),[p,w]=u.useState(null),[v,y]=u.useState(!0),[S,C]=u.useState(!1),[M,F]=u.useState(!1),[U,O]=u.useState(!1),[K,H]=u.useState(!1),[A,V]=u.useState(!1),[Q,T]=u.useState(!1),[D,ne]=u.useState(null),[xe,_e]=u.useState(null),[Se,ge]=u.useState(!1),[ye,be]=u.useState(null),[z,X]=u.useState(""),[k,se]=u.useState(new Set),[_,ue]=u.useState(!1),[ie,ae]=u.useState(1),[fe,Ne]=u.useState(20),[me,G]=u.useState(""),[P,B]=u.useState([]),[W,Ce]=u.useState(!1),[Me,re]=u.useState(null),[De,Vs]=u.useState(!1),[Qs,de]=u.useState(null),[Ee,ts]=u.useState({}),{toast:Ke}=Gs(),lt=ga(),{registerTour:Ot,startTour:bt,state:Pe,goToStep:R}=Zu(),Re=u.useRef(null),ze=u.useRef(null),$e=u.useRef(!0);u.useEffect(()=>{Ot(il,Mg)},[Ot]),u.useEffect(()=>{if(Pe.activeTourId===il&&Pe.isRunning){const Y=Dg[Pe.stepIndex];Y&&!window.location.pathname.endsWith(Y.replace("/config/",""))&<({to:Y})}},[Pe.stepIndex,Pe.activeTourId,Pe.isRunning,lt]);const Es=u.useRef(Pe.stepIndex);u.useEffect(()=>{if(Pe.activeTourId===il&&Pe.isRunning){const Y=Es.current,je=Pe.stepIndex;Y>=12&&Y<=17&&je<12&&T(!1),Es.current=je}},[Pe.stepIndex,Pe.activeTourId,Pe.isRunning]),u.useEffect(()=>{if(Pe.activeTourId!==il||!Pe.isRunning)return;const Y=je=>{const Ve=je.target,Je=Pe.stepIndex;Je===2&&Ve.closest('[data-tour="add-provider-button"]')?setTimeout(()=>R(3),300):Je===9&&Ve.closest('[data-tour="provider-cancel-button"]')?setTimeout(()=>R(10),300):Je===11&&Ve.closest('[data-tour="add-model-button"]')?setTimeout(()=>R(12),300):Je===17&&Ve.closest('[data-tour="model-cancel-button"]')?setTimeout(()=>R(18),300):Je===18&&Ve.closest('[data-tour="tasks-tab-trigger"]')&&setTimeout(()=>R(19),300)};return document.addEventListener("click",Y,!0),()=>document.removeEventListener("click",Y,!0)},[Pe,R]);const We=()=>{bt(il)};u.useEffect(()=>{nt()},[]);const nt=async()=>{try{y(!0);const Y=await ni(),je=Y.models||[];i(je),j(je.map(Je=>Je.name));const Ve=Y.api_providers||[];d(Ve.map(Je=>Je.name)),x(Ve),w(Y.model_task_config||null),O(!1),$e.current=!1}catch(Y){console.error("加载配置失败:",Y)}finally{y(!1)}},vs=u.useCallback(Y=>h.find(je=>je.name===Y),[h]),ke=u.useCallback(async(Y,je=!1)=>{const Ve=vs(Y);if(!Ve?.base_url){B([]),de(null),re('提供商配置不完整,请先在"模型提供商配置"中配置');return}if(!Ve.api_key){B([]),de(null),re('该提供商未配置 API Key,请先在"模型提供商配置"中填写');return}const Je=lw(Ve.base_url);if(de(Je),!Je?.modelFetcher){B([]),re(null);return}const Ns=`${Y}:${Ve.base_url}`,ta=op.get(Ns);if(!je&&ta&&Date.now()-ta.timestamp{Q&&D?.api_provider&&ke(D.api_provider)},[Q,D?.api_provider,ke]);const ve=async()=>{try{H(!0),lo().catch(()=>{}),V(!0)}catch(Y){console.error("重启失败:",Y),V(!1),Ke({title:"重启失败",description:"无法发送重启请求,请手动重启",variant:"destructive"}),H(!1)}},ns=async()=>{try{C(!0),Re.current&&clearTimeout(Re.current),ze.current&&clearTimeout(ze.current);const Y=await ni();Y.models=n,Y.model_task_config=p,await to(Y),O(!1),Ke({title:"保存成功",description:"正在重启麦麦..."}),await ve()}catch(Y){console.error("保存配置失败:",Y),Ke({title:"保存失败",description:Y.message,variant:"destructive"}),C(!1)}},_s=()=>{localStorage.removeItem("access-token"),window.location.href="/auth"},At=()=>{V(!1),H(!1),Ke({title:"重启超时",description:"服务未能在预期时间内恢复,请手动检查或刷新页面",variant:"destructive"})},Ps=u.useCallback(async Y=>{if(!$e.current)try{F(!0),await Uu("models",Y),O(!1)}catch(je){console.error("自动保存模型列表失败:",je),O(!0)}finally{F(!1)}},[]),Ys=u.useCallback(async Y=>{if(!$e.current)try{F(!0),await Uu("model_task_config",Y),O(!1)}catch(je){console.error("自动保存任务配置失败:",je),O(!0)}finally{F(!1)}},[]);u.useEffect(()=>{if(!$e.current)return O(!0),Re.current&&clearTimeout(Re.current),Re.current=setTimeout(()=>{Ps(n)},2e3),()=>{Re.current&&clearTimeout(Re.current)}},[n,Ps]),u.useEffect(()=>{if(!($e.current||!p))return O(!0),ze.current&&clearTimeout(ze.current),ze.current=setTimeout(()=>{Ys(p)},2e3),()=>{ze.current&&clearTimeout(ze.current)}},[p,Ys]);const Et=async()=>{try{C(!0),Re.current&&clearTimeout(Re.current),ze.current&&clearTimeout(ze.current);const Y=await ni();Y.models=n,Y.model_task_config=p,await to(Y),O(!1),Ke({title:"保存成功",description:"模型配置已保存"}),await nt()}catch(Y){console.error("保存配置失败:",Y),Ke({title:"保存失败",description:Y.message,variant:"destructive"})}finally{C(!1)}},Rt=(Y,je)=>{ts({}),ne(Y||{model_identifier:"",name:"",api_provider:c[0]||"",price_in:0,price_out:0,force_stream_mode:!1,extra_params:{}}),_e(je),T(!0)},Ha=()=>{if(!D)return;const Y={};if(D.name?.trim()||(Y.name="请输入模型名称"),D.api_provider?.trim()||(Y.api_provider="请选择 API 提供商"),D.model_identifier?.trim()||(Y.model_identifier="请输入模型标识符"),Object.keys(Y).length>0){ts(Y);return}ts({});const je={...D,price_in:D.price_in??0,price_out:D.price_out??0};let Ve,Je=null;if(xe!==null?(Je=n[xe].name,Ve=[...n],Ve[xe]=je):Ve=[...n,je],i(Ve),j(Ve.map(Ns=>Ns.name)),Je&&Je!==je.name&&p){const Ns=ta=>ta.map(aa=>aa===Je?je.name:aa);w({...p,utils:{...p.utils,model_list:Ns(p.utils?.model_list||[])},utils_small:{...p.utils_small,model_list:Ns(p.utils_small?.model_list||[])},tool_use:{...p.tool_use,model_list:Ns(p.tool_use?.model_list||[])},replyer:{...p.replyer,model_list:Ns(p.replyer?.model_list||[])},planner:{...p.planner,model_list:Ns(p.planner?.model_list||[])},vlm:{...p.vlm,model_list:Ns(p.vlm?.model_list||[])},voice:{...p.voice,model_list:Ns(p.voice?.model_list||[])},embedding:{...p.embedding,model_list:Ns(p.embedding?.model_list||[])},lpmm_entity_extract:{...p.lpmm_entity_extract,model_list:Ns(p.lpmm_entity_extract?.model_list||[])},lpmm_rdf_build:{...p.lpmm_rdf_build,model_list:Ns(p.lpmm_rdf_build?.model_list||[])},lpmm_qa:{...p.lpmm_qa,model_list:Ns(p.lpmm_qa?.model_list||[])}})}T(!1),ne(null),_e(null)},Qt=Y=>{if(!Y&&D){const je={...D,price_in:D.price_in??0,price_out:D.price_out??0};ne(je)}T(Y)},qa=Y=>{be(Y),ge(!0)},Sa=()=>{if(ye!==null){const Y=n.filter((je,Ve)=>Ve!==ye);i(Y),j(Y.map(je=>je.name)),Ke({title:"删除成功",description:"模型已从列表中移除"})}ge(!1),be(null)},ee=Y=>{const je=new Set(k);je.has(Y)?je.delete(Y):je.add(Y),se(je)},we=()=>{if(k.size===Lt.length)se(new Set);else{const Y=Lt.map((je,Ve)=>n.findIndex(Je=>Je===Lt[Ve]));se(new Set(Y))}},Ge=()=>{if(k.size===0){Ke({title:"提示",description:"请先选择要删除的模型",variant:"default"});return}ue(!0)},pt=()=>{const Y=n.filter((je,Ve)=>!k.has(Ve));i(Y),j(Y.map(je=>je.name)),se(new Set),ue(!1),Ke({title:"批量删除成功",description:`已删除 ${k.size} 个模型`})},Yt=(Y,je,Ve)=>{p&&w({...p,[Y]:{...p[Y],[je]:Ve}})},Lt=n.filter(Y=>{if(!z)return!0;const je=z.toLowerCase();return Y.name.toLowerCase().includes(je)||Y.model_identifier.toLowerCase().includes(je)||Y.api_provider.toLowerCase().includes(je)}),hl=Math.ceil(Lt.length/fe),Vl=Lt.slice((ie-1)*fe,ie*fe),pn=()=>{const Y=parseInt(me);Y>=1&&Y<=hl&&(ae(Y),G(""))},gn=Y=>p?[p.utils?.model_list||[],p.utils_small?.model_list||[],p.tool_use?.model_list||[],p.replyer?.model_list||[],p.planner?.model_list||[],p.vlm?.model_list||[],p.voice?.model_list||[],p.embedding?.model_list||[],p.lpmm_entity_extract?.model_list||[],p.lpmm_rdf_build?.model_list||[],p.lpmm_qa?.model_list||[]].some(Ve=>Ve.includes(Y)):!1;return v?e.jsx(ss,{className:"h-full",children:e.jsx("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx("p",{className:"text-muted-foreground",children:"加载中..."})})})}):e.jsx(ss,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"模型管理与分配"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"添加模型并为模型分配功能"})]}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[e.jsxs(N,{onClick:Et,disabled:S||M||!U||K,size:"sm",variant:"outline",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[e.jsx(yr,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),S?"保存中...":M?"自动保存中...":U?"保存配置":"已保存"]}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsxs(N,{disabled:S||M||K,size:"sm",className:"flex-1 sm:flex-none sm:min-w-[120px]",children:[e.jsx(br,{className:"mr-2 h-4 w-4"}),K?"重启中...":U?"保存并重启":"重启麦麦"]})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认重启麦麦?"}),e.jsx(ds,{asChild:!0,children:e.jsx("div",{children:e.jsx("p",{children:U?"当前有未保存的配置更改。点击确认将先保存配置,然后重启麦麦使新配置生效。重启过程中麦麦将暂时离线。":"即将重启麦麦主程序。重启过程中麦麦将暂时离线,配置将在重启后生效。"})})})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:U?ns:ve,children:U?"保存并重启":"确认重启"})]})]})]})]})]}),e.jsxs(cl,{children:[e.jsx(Ra,{className:"h-4 w-4"}),e.jsxs(ol,{children:["配置更新后需要",e.jsx("strong",{children:"重启麦麦"}),'才能生效。你可以点击右上角的"保存并重启"按钮一键完成保存和重启。']})]}),e.jsxs(cl,{className:"hidden lg:flex border-primary/30 bg-primary/5 cursor-pointer hover:bg-primary/10 transition-colors",onClick:We,children:[e.jsx(yb,{className:"h-4 w-4 text-primary"}),e.jsxs(ol,{className:"flex items-center justify-between",children:[e.jsxs("span",{children:[e.jsx("strong",{className:"text-primary",children:"新手引导:"}),"不知道如何配置模型?点击这里开始学习如何为麦麦的组件分配模型。"]}),e.jsx(N,{variant:"outline",size:"sm",className:"ml-4 shrink-0",children:"开始引导"})]})]}),e.jsxs(La,{defaultValue:"models",className:"w-full",children:[e.jsxs(wa,{className:"grid w-full max-w-full sm:max-w-md grid-cols-2",children:[e.jsx(fs,{value:"models",children:"添加模型"}),e.jsx(fs,{value:"tasks","data-tour":"tasks-tab-trigger",children:"为模型分配功能"})]}),e.jsxs(Ms,{value:"models",className:"space-y-4 mt-0",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-2",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"配置可用的模型列表"}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[k.size>0&&e.jsxs(N,{onClick:Ge,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(ls,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"批量删除 (",k.size,")"]}),e.jsxs(N,{onClick:()=>Rt(null,null),size:"sm",variant:"outline",className:"w-full sm:w-auto","data-tour":"add-model-button",children:[e.jsx(xt,{className:"mr-2 h-4 w-4",strokeWidth:2,fill:"none"}),"添加模型"]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center gap-2",children:[e.jsxs("div",{className:"relative w-full sm:flex-1 sm:max-w-sm",children:[e.jsx(zt,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(oe,{placeholder:"搜索模型名称、标识符或提供商...",value:z,onChange:Y=>X(Y.target.value),className:"pl-9"})]}),z&&e.jsxs("p",{className:"text-sm text-muted-foreground whitespace-nowrap",children:["找到 ",Lt.length," 个结果"]})]}),e.jsx("div",{className:"md:hidden space-y-3",children:Vl.length===0?e.jsx("div",{className:"text-center text-muted-foreground py-8 rounded-lg border bg-card",children:z?"未找到匹配的模型":"暂无模型配置"}):Vl.map((Y,je)=>{const Ve=n.findIndex(Ns=>Ns===Y),Je=gn(Y.name);return e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[e.jsx("h3",{className:"font-semibold text-base",children:Y.name}),e.jsx(Ye,{variant:Je?"default":"secondary",className:Je?"bg-green-600 hover:bg-green-700":"",children:Je?"已使用":"未使用"})]}),e.jsx("p",{className:"text-xs text-muted-foreground break-all",title:Y.model_identifier,children:Y.model_identifier})]}),e.jsxs("div",{className:"flex gap-1 flex-shrink-0",children:[e.jsxs(N,{variant:"default",size:"sm",onClick:()=>Rt(Y,Ve),children:[e.jsx(on,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(N,{size:"sm",onClick:()=>qa(Ve),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(ls,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"提供商"}),e.jsx("p",{className:"font-medium",children:Y.api_provider})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"强制流式"}),e.jsx("p",{className:"font-medium",children:Y.force_stream_mode?"是":"否"})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"输入价格"}),e.jsxs("p",{className:"font-medium",children:["¥",Y.price_in,"/M"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground text-xs",children:"输出价格"}),e.jsxs("p",{className:"font-medium",children:["¥",Y.price_out,"/M"]})]})]})]},je)})}),e.jsx("div",{className:"hidden md:block rounded-lg border bg-card overflow-hidden",children:e.jsx("div",{className:"overflow-x-auto",children:e.jsxs(hn,{children:[e.jsx(xn,{children:e.jsxs(ot,{children:[e.jsx(Ie,{className:"w-12",children:e.jsx(jt,{checked:k.size===Lt.length&&Lt.length>0,onCheckedChange:we})}),e.jsx(Ie,{className:"w-24",children:"使用状态"}),e.jsx(Ie,{children:"模型名称"}),e.jsx(Ie,{children:"模型标识符"}),e.jsx(Ie,{children:"提供商"}),e.jsx(Ie,{className:"text-right",children:"输入价格"}),e.jsx(Ie,{className:"text-right",children:"输出价格"}),e.jsx(Ie,{className:"text-center",children:"强制流式"}),e.jsx(Ie,{className:"text-right",children:"操作"})]})}),e.jsx(fn,{children:Vl.length===0?e.jsx(ot,{children:e.jsx(Fe,{colSpan:9,className:"text-center text-muted-foreground py-8",children:z?"未找到匹配的模型":"暂无模型配置"})}):Vl.map((Y,je)=>{const Ve=n.findIndex(Ns=>Ns===Y),Je=gn(Y.name);return e.jsxs(ot,{children:[e.jsx(Fe,{children:e.jsx(jt,{checked:k.has(Ve),onCheckedChange:()=>ee(Ve)})}),e.jsx(Fe,{children:e.jsx(Ye,{variant:Je?"default":"secondary",className:Je?"bg-green-600 hover:bg-green-700":"",children:Je?"已使用":"未使用"})}),e.jsx(Fe,{className:"font-medium",children:Y.name}),e.jsx(Fe,{className:"max-w-xs truncate",title:Y.model_identifier,children:Y.model_identifier}),e.jsx(Fe,{children:Y.api_provider}),e.jsxs(Fe,{className:"text-right",children:["¥",Y.price_in,"/M"]}),e.jsxs(Fe,{className:"text-right",children:["¥",Y.price_out,"/M"]}),e.jsx(Fe,{className:"text-center",children:Y.force_stream_mode?"是":"否"}),e.jsx(Fe,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(N,{variant:"default",size:"sm",onClick:()=>Rt(Y,Ve),children:[e.jsx(on,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"编辑"]}),e.jsxs(N,{size:"sm",onClick:()=>qa(Ve),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(ls,{className:"h-4 w-4 mr-1",strokeWidth:2,fill:"none"}),"删除"]})]})})]},je)})})]})})}),Lt.length>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"page-size-model",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(He,{value:fe.toString(),onValueChange:Y=>{Ne(parseInt(Y)),ae(1),se(new Set)},children:[e.jsx(Le,{id:"page-size-model",className:"w-20",children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"10",children:"10"}),e.jsx(le,{value:"20",children:"20"}),e.jsx(le,{value:"50",children:"50"}),e.jsx(le,{value:"100",children:"100"})]})]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["显示 ",(ie-1)*fe+1," 到"," ",Math.min(ie*fe,Lt.length)," 条,共 ",Lt.length," 条"]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>ae(1),disabled:ie===1,className:"hidden sm:flex",children:e.jsx(di,{className:"h-4 w-4"})}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>ae(Y=>Math.max(1,Y-1)),disabled:ie===1,children:[e.jsx(Hl,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(oe,{type:"number",value:me,onChange:Y=>G(Y.target.value),onKeyDown:Y=>Y.key==="Enter"&&pn(),placeholder:ie.toString(),className:"w-16 h-8 text-center",min:1,max:hl}),e.jsx(N,{variant:"outline",size:"sm",onClick:pn,disabled:!me,className:"h-8",children:"跳转"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>ae(Y=>Y+1),disabled:ie>=hl,children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(ul,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>ae(hl),disabled:ie>=hl,className:"hidden sm:flex",children:e.jsx(ui,{className:"h-4 w-4"})})]})]})]}),e.jsxs(Ms,{value:"tasks",className:"space-y-6 mt-0",children:[e.jsx("p",{className:"text-sm text-muted-foreground",children:"为不同的任务配置使用的模型和参数"}),p&&e.jsxs("div",{className:"grid gap-4 sm:gap-6",children:[e.jsx(ba,{title:"组件模型 (utils)",description:"用于表情包、取名、关系、情绪变化等组件",taskConfig:p.utils,modelNames:f,onChange:(Y,je)=>Yt("utils",Y,je),dataTour:"task-model-select"}),e.jsx(ba,{title:"组件小模型 (utils_small)",description:"消耗量较大的组件,建议使用速度较快的小模型",taskConfig:p.utils_small,modelNames:f,onChange:(Y,je)=>Yt("utils_small",Y,je)}),e.jsx(ba,{title:"工具调用模型 (tool_use)",description:"需要使用支持工具调用的模型",taskConfig:p.tool_use,modelNames:f,onChange:(Y,je)=>Yt("tool_use",Y,je)}),e.jsx(ba,{title:"首要回复模型 (replyer)",description:"用于表达器和表达方式学习",taskConfig:p.replyer,modelNames:f,onChange:(Y,je)=>Yt("replyer",Y,je)}),e.jsx(ba,{title:"决策模型 (planner)",description:"负责决定麦麦该什么时候回复",taskConfig:p.planner,modelNames:f,onChange:(Y,je)=>Yt("planner",Y,je)}),e.jsx(ba,{title:"图像识别模型 (vlm)",description:"视觉语言模型",taskConfig:p.vlm,modelNames:f,onChange:(Y,je)=>Yt("vlm",Y,je),hideTemperature:!0}),e.jsx(ba,{title:"语音识别模型 (voice)",description:"语音转文字",taskConfig:p.voice,modelNames:f,onChange:(Y,je)=>Yt("voice",Y,je),hideTemperature:!0,hideMaxTokens:!0}),e.jsx(ba,{title:"嵌入模型 (embedding)",description:"用于向量化",taskConfig:p.embedding,modelNames:f,onChange:(Y,je)=>Yt("embedding",Y,je),hideTemperature:!0,hideMaxTokens:!0}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("h3",{className:"text-lg font-semibold",children:"LPMM 知识库模型"}),e.jsx(ba,{title:"实体提取模型 (lpmm_entity_extract)",description:"从文本中提取实体",taskConfig:p.lpmm_entity_extract,modelNames:f,onChange:(Y,je)=>Yt("lpmm_entity_extract",Y,je)}),e.jsx(ba,{title:"RDF 构建模型 (lpmm_rdf_build)",description:"构建知识图谱",taskConfig:p.lpmm_rdf_build,modelNames:f,onChange:(Y,je)=>Yt("lpmm_rdf_build",Y,je)}),e.jsx(ba,{title:"问答模型 (lpmm_qa)",description:"知识库问答",taskConfig:p.lpmm_qa,modelNames:f,onChange:(Y,je)=>Yt("lpmm_qa",Y,je)})]})]})]})]}),e.jsx($s,{open:Q,onOpenChange:Qt,children:e.jsxs(Bs,{className:"max-w-[95vw] sm:max-w-2xl max-h-[90vh] overflow-y-auto","data-tour":"model-dialog",preventOutsideClose:Pe.isRunning,children:[e.jsxs(Hs,{children:[e.jsx(qs,{children:xe!==null?"编辑模型":"添加模型"}),e.jsx(Is,{children:"配置模型的基本信息和参数"})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":"model-name-input",children:[e.jsx(b,{htmlFor:"model_name",className:Ee.name?"text-destructive":"",children:"模型名称 *"}),e.jsx(oe,{id:"model_name",value:D?.name||"",onChange:Y=>{ne(je=>je?{...je,name:Y.target.value}:null),Ee.name&&ts(je=>({...je,name:void 0}))},placeholder:"例如: qwen3-30b",className:Ee.name?"border-destructive focus-visible:ring-destructive":""}),Ee.name?e.jsx("p",{className:"text-xs text-destructive",children:Ee.name}):e.jsx("p",{className:"text-xs text-muted-foreground",children:"用于在任务配置中引用此模型"})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"model-provider-select",children:[e.jsx(b,{htmlFor:"api_provider",className:Ee.api_provider?"text-destructive":"",children:"API 提供商 *"}),e.jsxs(He,{value:D?.api_provider||"",onValueChange:Y=>{ne(je=>je?{...je,api_provider:Y}:null),B([]),re(null),Ee.api_provider&&ts(je=>({...je,api_provider:void 0}))},children:[e.jsx(Le,{id:"api_provider",className:Ee.api_provider?"border-destructive focus-visible:ring-destructive":"",children:e.jsx(qe,{placeholder:"选择提供商"})}),e.jsx(Ue,{children:c.map(Y=>e.jsx(le,{value:Y,children:Y},Y))})]}),Ee.api_provider&&e.jsx("p",{className:"text-xs text-destructive",children:Ee.api_provider})]}),e.jsxs("div",{className:"grid gap-2","data-tour":"model-identifier-input",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{htmlFor:"model_identifier",className:Ee.model_identifier?"text-destructive":"",children:"模型标识符 *"}),Qs?.modelFetcher&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ye,{variant:"secondary",className:"text-xs",children:Qs.display_name}),e.jsx(N,{variant:"ghost",size:"sm",className:"h-6 px-2",onClick:()=>D?.api_provider&&ke(D.api_provider,!0),disabled:W,children:W?e.jsx(kt,{className:"h-3 w-3 animate-spin"}):e.jsx(Ct,{className:"h-3 w-3"})})]})]}),Qs?.modelFetcher?e.jsxs(Ua,{open:De,onOpenChange:Vs,children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(N,{variant:"outline",role:"combobox","aria-expanded":De,className:"w-full justify-between font-normal",disabled:W||!!Me,children:[W?e.jsxs("span",{className:"flex items-center gap-2 text-muted-foreground",children:[e.jsx(kt,{className:"h-4 w-4 animate-spin"}),"正在获取模型列表..."]}):Me?e.jsx("span",{className:"text-muted-foreground text-sm",children:"点击下方输入框手动填写"}):D?.model_identifier?e.jsx("span",{className:"truncate",children:D.model_identifier}):e.jsx("span",{className:"text-muted-foreground",children:"搜索或选择模型..."}),e.jsx(Fu,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),e.jsx(_a,{className:"p-0",align:"start",style:{width:"var(--radix-popover-trigger-width)"},children:e.jsxs(no,{children:[e.jsx(io,{placeholder:"搜索模型..."}),e.jsx(ss,{className:"h-[300px]",children:e.jsxs(ro,{className:"max-h-none overflow-visible",children:[e.jsx(co,{children:Me?e.jsxs("div",{className:"py-4 px-2 text-center space-y-2",children:[e.jsx("p",{className:"text-sm text-destructive",children:Me}),!Me.includes("API Key")&&e.jsx(N,{variant:"link",size:"sm",onClick:()=>D?.api_provider&&ke(D.api_provider,!0),children:"重试"})]}):"未找到匹配的模型"}),e.jsx(vr,{heading:"可用模型",children:P.map(Y=>e.jsxs(Nr,{value:Y.id,onSelect:()=>{ne(je=>je?{...je,model_identifier:Y.id}:null),Vs(!1)},children:[e.jsx(sa,{className:`mr-2 h-4 w-4 ${D?.model_identifier===Y.id?"opacity-100":"opacity-0"}`}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{children:Y.id}),Y.name!==Y.id&&e.jsx("span",{className:"text-xs text-muted-foreground",children:Y.name})]})]},Y.id))}),e.jsx(vr,{heading:"手动输入",children:e.jsxs(Nr,{value:"__manual_input__",onSelect:()=>{Vs(!1)},children:[e.jsx(on,{className:"mr-2 h-4 w-4"}),"手动输入模型标识符..."]})})]})})]})})]}):e.jsx(oe,{id:"model_identifier",value:D?.model_identifier||"",onChange:Y=>{ne(je=>je?{...je,model_identifier:Y.target.value}:null),Ee.model_identifier&&ts(je=>({...je,model_identifier:void 0}))},placeholder:"Qwen/Qwen3-30B-A3B-Instruct-2507",className:Ee.model_identifier?"border-destructive focus-visible:ring-destructive":""}),Ee.model_identifier&&e.jsx("p",{className:"text-xs text-destructive",children:Ee.model_identifier}),Me&&Qs?.modelFetcher&&!Ee.model_identifier&&e.jsxs(cl,{variant:"destructive",className:"mt-2 py-2",children:[e.jsx(Ra,{className:"h-4 w-4"}),e.jsx(ol,{className:"text-xs",children:Me})]}),Qs?.modelFetcher&&e.jsx(oe,{value:D?.model_identifier||"",onChange:Y=>{ne(je=>je?{...je,model_identifier:Y.target.value}:null),Ee.model_identifier&&ts(je=>({...je,model_identifier:void 0}))},placeholder:"或手动输入模型标识符",className:`mt-2 ${Ee.model_identifier?"border-destructive focus-visible:ring-destructive":""}`}),!Ee.model_identifier&&e.jsx("p",{className:"text-xs text-muted-foreground",children:Me?'请手动输入模型标识符,或前往"模型提供商配置"检查 API Key':Qs?.modelFetcher?`已识别为 ${Qs.display_name},支持自动获取模型列表`:"API 提供商提供的模型 ID"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"price_in",children:"输入价格 (¥/M token)"}),e.jsx(oe,{id:"price_in",type:"number",step:"0.1",min:"0",value:D?.price_in??"",onChange:Y=>{const je=Y.target.value===""?null:parseFloat(Y.target.value);ne(Ve=>Ve?{...Ve,price_in:je}:null)},placeholder:"默认: 0"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"price_out",children:"输出价格 (¥/M token)"}),e.jsx(oe,{id:"price_out",type:"number",step:"0.1",min:"0",value:D?.price_out??"",onChange:Y=>{const je=Y.target.value===""?null:parseFloat(Y.target.value);ne(Ve=>Ve?{...Ve,price_out:je}:null)},placeholder:"默认: 0"})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Xe,{id:"force_stream_mode",checked:D?.force_stream_mode||!1,onCheckedChange:Y=>ne(je=>je?{...je,force_stream_mode:Y}:null)}),e.jsx(b,{htmlFor:"force_stream_mode",className:"cursor-pointer",children:"强制流式输出模式"})]})]}),e.jsxs(at,{children:[e.jsx(N,{variant:"outline",onClick:()=>T(!1),"data-tour":"model-cancel-button",children:"取消"}),e.jsx(N,{onClick:Ha,"data-tour":"model-save-button",children:"保存"})]})]})}),e.jsx(ps,{open:Se,onOpenChange:ge,children:e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认删除"}),e.jsxs(ds,{children:['确定要删除模型 "',ye!==null?n[ye]?.name:"",'" 吗? 此操作无法撤销。']})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:Sa,children:"删除"})]})]})}),e.jsx(ps,{open:_,onOpenChange:ue,children:e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认批量删除"}),e.jsxs(ds,{children:["确定要删除选中的 ",k.size," 个模型吗? 此操作无法撤销。"]})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:pt,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})}),A&&e.jsx(Ju,{onRestartComplete:_s,onRestartFailed:At})]})})}function ba({title:n,description:i,taskConfig:c,modelNames:d,onChange:h,hideTemperature:x=!1,hideMaxTokens:f=!1,dataTour:j}){const p=w=>{h("model_list",w)};return e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6 space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"font-semibold text-base sm:text-lg",children:n}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:i})]}),e.jsxs("div",{className:"grid gap-4",children:[e.jsxs("div",{className:"grid gap-2","data-tour":j,children:[e.jsx(b,{children:"模型列表"}),e.jsx(rw,{options:d.map(w=>({label:w,value:w})),selected:c.model_list||[],onChange:p,placeholder:"选择模型...",emptyText:"暂无可用模型"})]}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4",children:[!x&&e.jsxs("div",{className:"grid gap-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:"温度"}),e.jsx(oe,{type:"number",step:"0.1",min:"0",max:"1",value:c.temperature??.3,onChange:w=>{const v=parseFloat(w.target.value);!isNaN(v)&&v>=0&&v<=1&&h("temperature",v)},className:"w-20 h-8 text-sm"})]}),e.jsx(Ma,{value:[c.temperature??.3],onValueChange:w=>h("temperature",w[0]),min:0,max:1,step:.1,className:"w-full"})]}),!f&&e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{children:"最大 Token"}),e.jsx(oe,{type:"number",step:"1",min:"1",value:c.max_tokens??1024,onChange:w=>h("max_tokens",parseInt(w.target.value))})]})]})]})]})}const oo="/api/webui/config";async function dw(){const i=await(await Te(`${oo}/adapter-config/path`)).json();return!i.success||!i.path?null:{path:i.path,lastModified:i.lastModified}}async function dp(n){const c=await(await Te(`${oo}/adapter-config/path`,{method:"POST",headers:Ls(),body:JSON.stringify({path:n})})).json();if(!c.success)throw new Error(c.message||"保存路径失败")}async function up(n){const c=await(await Te(`${oo}/adapter-config?path=${encodeURIComponent(n)}`)).json();if(!c.success)throw new Error("读取配置文件失败");return c.content}async function mp(n,i){const d=await(await Te(`${oo}/adapter-config`,{method:"POST",headers:Ls(),body:JSON.stringify({path:n,content:i})})).json();if(!d.success)throw new Error(d.message||"保存配置失败")}const ea={inner:{version:"0.1.2"},nickname:{nickname:""},napcat_server:{host:"localhost",port:8095,token:"",heartbeat_interval:30},maibot_server:{host:"localhost",port:8e3},chat:{group_list_type:"whitelist",group_list:[],private_list_type:"whitelist",private_list:[],ban_user_id:[],ban_qq_bot:!1,enable_poke:!0},voice:{use_tts:!1},debug:{level:"INFO"}},zu={oneclick:{name:"一键包",description:"使用一键包部署的适配器配置",path:"../MaiBot-Napcat-Adapter/config.toml",icon:dn},docker:{name:"Docker",description:"Docker Compose 部署的适配器配置",path:"/MaiMBot/adapters-config/config.toml",icon:wb}};function uw(){const[n,i]=u.useState("upload"),[c,d]=u.useState(null),[h,x]=u.useState(""),[f,j]=u.useState(""),[p,w]=u.useState("oneclick"),[v,y]=u.useState(""),[S,C]=u.useState(!1),[M,F]=u.useState(!1),[U,O]=u.useState(!1),[K,H]=u.useState(!1),[A,V]=u.useState(null),Q=u.useRef(null),{toast:T}=Gs(),D=u.useRef(null),ne=G=>{if(!G.trim())return{valid:!1,error:"路径不能为空"};if(!G.toLowerCase().endsWith(".toml"))return{valid:!1,error:"文件必须是 .toml 格式"};const P=/^([a-zA-Z]:\\|\\\\[^\\]+\\[^\\]+\\).+\.toml$/i,B=/^(\/|~\/).+\.toml$/i,W=/^(\.{1,2}[\\/]|[^:\\/]).+\.toml$/i,Ce=P.test(G),Me=B.test(G),re=W.test(G);return!Ce&&!Me&&!re?{valid:!1,error:"路径格式错误"}:/[<>"|?*\x00-\x1F]/.test(G)?{valid:!1,error:"路径包含非法字符"}:{valid:!0,error:""}},xe=G=>{if(j(G),G.trim()){const P=ne(G);y(P.error)}else y("")},_e=u.useCallback(async G=>{const P=zu[G];F(!0);try{const B=await up(P.path),W=ie(B);d(W),w(G),j(P.path),await dp(P.path),T({title:"加载成功",description:`已从${P.name}预设加载配置`})}catch(B){console.error("加载预设配置失败:",B),T({title:"加载失败",description:B instanceof Error?B.message:"无法读取预设配置文件",variant:"destructive"})}finally{F(!1)}},[T]),Se=u.useCallback(async G=>{const P=ne(G);if(!P.valid){y(P.error),T({title:"路径无效",description:P.error,variant:"destructive"});return}y(""),F(!0);try{const B=await up(G),W=ie(B);d(W),j(G),await dp(G),T({title:"加载成功",description:"已从配置文件加载"})}catch(B){console.error("加载配置失败:",B),T({title:"加载失败",description:B instanceof Error?B.message:"无法读取配置文件",variant:"destructive"})}finally{F(!1)}},[T]);u.useEffect(()=>{(async()=>{try{const P=await dw();if(P&&P.path){j(P.path);const B=Object.entries(zu).find(([,W])=>W.path===P.path);B?(i("preset"),w(B[0]),await _e(B[0])):(i("path"),await Se(P.path))}}catch(P){console.error("加载保存的路径失败:",P)}})()},[Se,_e]);const ge=u.useCallback(G=>{n!=="path"&&n!=="preset"||!f||(D.current&&clearTimeout(D.current),D.current=setTimeout(async()=>{C(!0);try{const P=ae(G);await mp(f,P),T({title:"自动保存成功",description:"配置已保存到文件"})}catch(P){console.error("自动保存失败:",P),T({title:"自动保存失败",description:P instanceof Error?P.message:"保存配置失败",variant:"destructive"})}finally{C(!1)}},1e3))},[n,f,T]),ye=async()=>{if(!c||!f)return;const G=ne(f);if(!G.valid){T({title:"保存失败",description:G.error,variant:"destructive"});return}C(!0);try{const P=ae(c);await mp(f,P),T({title:"保存成功",description:"配置已保存到文件"})}catch(P){console.error("保存失败:",P),T({title:"保存失败",description:P instanceof Error?P.message:"保存配置失败",variant:"destructive"})}finally{C(!1)}},be=async()=>{f&&await Se(f)},z=G=>{if(G!==n){if(c){V(G),O(!0);return}X(G)}},X=G=>{d(null),x(""),y(""),i(G),G==="preset"&&_e("oneclick"),T({title:"已切换模式",description:{upload:"现在可以上传配置文件",path:"现在可以指定配置文件路径",preset:"现在可以使用预设配置"}[G]})},k=()=>{A&&(X(A),V(null)),O(!1)},se=()=>{if(c){H(!0);return}_()},_=()=>{j(""),d(null),y(""),T({title:"已清空",description:"路径和配置已清空"})},ue=()=>{_(),H(!1)},ie=G=>{const P=JSON.parse(JSON.stringify(ea)),B=G.split(` +`);let W="";for(const Ce of B){const Me=Ce.trim();if(!Me||Me.startsWith("#"))continue;const re=Me.match(/^\[(\w+)\]/);if(re){W=re[1];continue}const De=Me.match(/^(\w+)\s*=\s*(.+)$/);if(De&&W){const[,Vs,Qs]=De;let de=Qs.trim();const Ee=de.match(/^("[^"]*")/);if(Ee)de=Ee[1];else{const Ke=de.indexOf("#");Ke!==-1&&(de=de.substring(0,Ke).trim())}let ts;if(de==="true")ts=!0;else if(de==="false")ts=!1;else if(de.startsWith("[")&&de.endsWith("]")){const Ke=de.slice(1,-1).trim();if(Ke){const lt=Ke.split(",").map(bt=>{const Pe=bt.trim();return isNaN(Number(Pe))?Pe.replace(/"/g,""):Number(Pe)}),Ot=typeof lt[0];ts=lt.every(bt=>typeof bt===Ot)?lt:lt.filter(bt=>typeof bt=="number")}else ts=[]}else de.startsWith('"')&&de.endsWith('"')?ts=de.slice(1,-1):isNaN(Number(de))?ts=de.replace(/"/g,""):ts=Number(de);if(W in P){const Ke=P[W];Ke[Vs]=ts}}}return P},ae=G=>{const P=[],B=(W,Ce)=>W===""||W===null||W===void 0?Ce:W;return P.push("[inner]"),P.push(`version = "${B(G.inner.version,ea.inner.version)}" # 版本号`),P.push("# 请勿修改版本号,除非你知道自己在做什么"),P.push(""),P.push("[nickname] # 现在没用"),P.push(`nickname = "${B(G.nickname.nickname,ea.nickname.nickname)}"`),P.push(""),P.push("[napcat_server] # Napcat连接的ws服务设置"),P.push(`host = "${B(G.napcat_server.host,ea.napcat_server.host)}" # Napcat设定的主机地址`),P.push(`port = ${B(G.napcat_server.port||0,ea.napcat_server.port)} # Napcat设定的端口`),P.push(`token = "${B(G.napcat_server.token,ea.napcat_server.token)}" # Napcat设定的访问令牌,若无则留空`),P.push(`heartbeat_interval = ${B(G.napcat_server.heartbeat_interval||0,ea.napcat_server.heartbeat_interval)} # 与Napcat设置的心跳相同(按秒计)`),P.push(""),P.push("[maibot_server] # 连接麦麦的ws服务设置"),P.push(`host = "${B(G.maibot_server.host,ea.maibot_server.host)}" # 麦麦在.env文件中设置的主机地址,即HOST字段`),P.push(`port = ${B(G.maibot_server.port||0,ea.maibot_server.port)} # 麦麦在.env文件中设置的端口,即PORT字段`),P.push(""),P.push("[chat] # 黑白名单功能"),P.push(`group_list_type = "${B(G.chat.group_list_type,ea.chat.group_list_type)}" # 群组名单类型,可选为:whitelist, blacklist`),P.push(`group_list = [${G.chat.group_list.join(", ")}] # 群组名单`),P.push("# 当group_list_type为whitelist时,只有群组名单中的群组可以聊天"),P.push("# 当group_list_type为blacklist时,群组名单中的任何群组无法聊天"),P.push(`private_list_type = "${B(G.chat.private_list_type,ea.chat.private_list_type)}" # 私聊名单类型,可选为:whitelist, blacklist`),P.push(`private_list = [${G.chat.private_list.join(", ")}] # 私聊名单`),P.push("# 当private_list_type为whitelist时,只有私聊名单中的用户可以聊天"),P.push("# 当private_list_type为blacklist时,私聊名单中的任何用户无法聊天"),P.push(`ban_user_id = [${G.chat.ban_user_id.join(", ")}] # 全局禁止名单(全局禁止名单中的用户无法进行任何聊天)`),P.push(`ban_qq_bot = ${G.chat.ban_qq_bot} # 是否屏蔽QQ官方机器人`),P.push(`enable_poke = ${G.chat.enable_poke} # 是否启用戳一戳功能`),P.push(""),P.push("[voice] # 发送语音设置"),P.push(`use_tts = ${G.voice.use_tts} # 是否使用tts语音(请确保你配置了tts并有对应的adapter)`),P.push(""),P.push("[debug]"),P.push(`level = "${B(G.debug.level,ea.debug.level)}" # 日志等级(DEBUG, INFO, WARNING, ERROR, CRITICAL)`),P.join(` +`)},fe=G=>{const P=G.target.files?.[0];if(!P)return;const B=new FileReader;B.onload=W=>{try{const Ce=W.target?.result,Me=ie(Ce);d(Me),x(P.name),T({title:"上传成功",description:`已加载配置文件:${P.name}`})}catch(Ce){console.error("解析配置文件失败:",Ce),T({title:"解析失败",description:"配置文件格式错误,请检查文件内容",variant:"destructive"})}},B.readAsText(P)},Ne=()=>{if(!c)return;const G=ae(c),P=new Blob([G],{type:"text/plain;charset=utf-8"}),B=URL.createObjectURL(P),W=document.createElement("a");W.href=B,W.download=h||"config.toml",document.body.appendChild(W),W.click(),document.body.removeChild(W),URL.revokeObjectURL(B),T({title:"下载成功",description:"配置文件已下载,请手动覆盖并重启适配器"})},me=()=>{d(JSON.parse(JSON.stringify(ea))),x("config.toml"),T({title:"已加载默认配置",description:"可以开始编辑配置"})};return e.jsx(ss,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦适配器配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理麦麦的 QQ 适配器的配置文件"})]})}),e.jsxs("div",{className:"flex items-start gap-2 p-3 rounded-lg border border-amber-500/50 bg-amber-500/10 text-amber-700 dark:text-amber-400",children:[e.jsx(Oa,{className:"h-4 w-4 mt-0.5 flex-shrink-0"}),e.jsx("p",{className:"text-sm",children:"适配器配置保存之后使用 WebUI 的重启功能适配器并不会重启,需要手动重启适配器。"})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{children:[e.jsx(ws,{children:"工作模式"}),e.jsx(ct,{children:"选择配置文件的管理方式"})]}),e.jsxs(Ts,{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-3 md:gap-4",children:[e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="preset"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>z("preset"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(dn,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"预设模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"使用预设的部署配置"})]})]})}),e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="upload"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>z("upload"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(fr,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"上传文件模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"上传配置文件,编辑后下载并手动覆盖"})]})]})}),e.jsx("div",{className:`border-2 rounded-lg p-3 md:p-4 cursor-pointer transition-all ${n==="path"?"border-primary bg-primary/5":"border-muted hover:border-primary/50 active:border-primary/70"}`,onClick:()=>z("path"),children:e.jsxs("div",{className:"flex items-start gap-2 md:gap-3",children:[e.jsx(_b,{className:"h-4 w-4 md:h-5 md:w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h3",{className:"font-semibold text-sm md:text-base",children:"指定路径模式"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-1 line-clamp-2",children:"指定配置文件路径,自动加载和保存"})]})]})})]}),n==="preset"&&e.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[e.jsx(b,{className:"text-sm md:text-base",children:"选择部署方式"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:Object.entries(zu).map(([G,P])=>{const B=P.icon,W=p===G;return e.jsx("div",{className:`border-2 rounded-lg p-3 cursor-pointer transition-all ${W?"border-primary bg-primary/5":"border-muted hover:border-primary/50"}`,onClick:()=>{w(G),_e(G)},children:e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(B,{className:"h-5 w-5 mt-0.5 flex-shrink-0"}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("h4",{className:"font-semibold text-sm",children:P.name}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:P.description}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1 font-mono break-all",children:P.path})]})]})},G)})})]}),n==="path"&&e.jsxs("div",{className:"space-y-3 pt-2 border-t",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"config-path",className:"text-sm md:text-base",children:"配置文件路径"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs("div",{className:"flex-1 space-y-1",children:[e.jsx(oe,{id:"config-path",value:f,onChange:G=>xe(G.target.value),placeholder:"例: C:\\Adapter\\config.toml",className:`text-sm ${v?"border-destructive":""}`}),v&&e.jsx("p",{className:"text-xs text-destructive",children:v})]}),e.jsx(N,{onClick:()=>Se(f),disabled:M||!f||!!v,className:"w-full sm:w-auto",children:M?e.jsxs(e.Fragment,{children:[e.jsx(Ct,{className:"h-4 w-4 animate-spin mr-2"}),e.jsx("span",{className:"sm:hidden",children:"加载中..."})]}):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"sm:hidden",children:"加载配置"}),e.jsx("span",{className:"hidden sm:inline",children:"加载"})]})})]})]}),e.jsxs("details",{className:"rounded-lg bg-muted/50 p-3 group",children:[e.jsxs("summary",{className:"text-xs font-medium cursor-pointer select-none list-none flex items-center justify-between",children:[e.jsx("span",{children:"路径格式说明"}),e.jsx("svg",{className:"h-4 w-4 transition-transform group-open:rotate-180",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),e.jsxs("div",{className:"mt-2 space-y-2 text-xs text-muted-foreground",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Windows"})}),e.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[e.jsx("div",{children:"C:\\Adapter\\config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"D:\\MaiBot\\adapter\\config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"\\\\server\\share\\config.toml"})]})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsx("span",{className:"font-mono bg-background px-1.5 py-0.5 rounded text-[10px] md:text-xs whitespace-nowrap",children:"Linux"})}),e.jsxs("div",{className:"pl-2 space-y-0.5 text-[10px] md:text-xs break-all",children:[e.jsx("div",{children:"/opt/adapter/config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"/home/user/adapter/config.toml"}),e.jsx("div",{className:"hidden sm:block",children:"~/adapter/config.toml"})]})]}),e.jsx("p",{className:"pt-1 border-t text-[10px] md:text-xs",children:"💡 配置会自动保存到指定文件,修改后 1 秒自动保存"})]})]})]})]})]}),e.jsxs(cl,{children:[e.jsx(Ra,{className:"h-4 w-4"}),e.jsx(ol,{children:n==="preset"?e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"预设模式:"}),"选择预设的部署方式,配置会自动加载,修改后 1 秒自动保存",S&&" (正在保存...)"]}):n==="upload"?e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"上传文件模式:"}),"上传配置文件 → 在线编辑 → 下载文件 → 手动覆盖并重启适配器"]}):e.jsxs(e.Fragment,{children:[e.jsx("strong",{children:"指定路径模式:"}),"指定配置文件路径后,配置会自动加载,修改后 1 秒自动保存",S&&" (正在保存...)"]})})]}),n==="upload"&&!c&&e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 w-full",children:[e.jsx("input",{ref:Q,type:"file",accept:".toml",className:"hidden",onChange:fe}),e.jsxs(N,{onClick:()=>Q.current?.click(),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(fr,{className:"mr-2 h-4 w-4"}),"上传配置"]}),e.jsxs(N,{onClick:me,size:"sm",className:"w-full sm:w-auto",children:[e.jsx(Da,{className:"mr-2 h-4 w-4"}),"使用默认配置"]})]}),n==="upload"&&c&&e.jsx("div",{className:"flex gap-2",children:e.jsxs(N,{onClick:Ne,size:"sm",className:"w-full sm:w-auto",children:[e.jsx(rl,{className:"mr-2 h-4 w-4"}),"下载配置"]})}),(n==="preset"||n==="path")&&c&&e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs(N,{onClick:ye,size:"sm",disabled:S||!!v,className:"w-full sm:w-auto",children:[e.jsx(yr,{className:"mr-2 h-4 w-4"}),S?"保存中...":"立即保存"]}),e.jsxs(N,{onClick:be,size:"sm",variant:"outline",disabled:M,className:"w-full sm:w-auto",children:[e.jsx(Ct,{className:`mr-2 h-4 w-4 ${M?"animate-spin":""}`}),"刷新"]}),n==="path"&&e.jsxs(N,{onClick:se,size:"sm",variant:"destructive",className:"w-full sm:w-auto",children:[e.jsx(ls,{className:"mr-2 h-4 w-4"}),"清空路径"]})]}),c?e.jsxs(La,{defaultValue:"napcat",className:"w-full",children:[e.jsx("div",{className:"overflow-x-auto -mx-4 px-4 sm:mx-0 sm:px-0",children:e.jsxs(wa,{className:"inline-flex w-auto min-w-full sm:grid sm:w-full sm:grid-cols-5",children:[e.jsxs(fs,{value:"napcat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"Napcat 连接"}),e.jsx("span",{className:"sm:hidden",children:"Napcat"})]}),e.jsxs(fs,{value:"maibot",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"麦麦连接"}),e.jsx("span",{className:"sm:hidden",children:"麦麦"})]}),e.jsxs(fs,{value:"chat",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"聊天控制"}),e.jsx("span",{className:"sm:hidden",children:"聊天"})]}),e.jsxs(fs,{value:"voice",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:[e.jsx("span",{className:"hidden sm:inline",children:"语音设置"}),e.jsx("span",{className:"sm:hidden",children:"语音"})]}),e.jsx(fs,{value:"debug",className:"flex-shrink-0 text-xs sm:text-sm whitespace-nowrap",children:"调试"})]})}),e.jsx(Ms,{value:"napcat",className:"space-y-4",children:e.jsx(mw,{config:c,onChange:G=>{d(G),ge(G)}})}),e.jsx(Ms,{value:"maibot",className:"space-y-4",children:e.jsx(hw,{config:c,onChange:G=>{d(G),ge(G)}})}),e.jsx(Ms,{value:"chat",className:"space-y-4",children:e.jsx(xw,{config:c,onChange:G=>{d(G),ge(G)}})}),e.jsx(Ms,{value:"voice",className:"space-y-4",children:e.jsx(fw,{config:c,onChange:G=>{d(G),ge(G)}})}),e.jsx(Ms,{value:"debug",className:"space-y-4",children:e.jsx(pw,{config:c,onChange:G=>{d(G),ge(G)}})})]}):e.jsx("div",{className:"rounded-lg border bg-card p-6 md:p-12",children:e.jsxs("div",{className:"text-center space-y-3 md:space-y-4",children:[e.jsx(Da,{className:"h-12 w-12 md:h-16 md:w-16 mx-auto text-muted-foreground"}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold",children:"尚未加载配置"}),e.jsx("p",{className:"text-xs md:text-sm text-muted-foreground mt-2 px-4",children:n==="preset"?"请选择预设的部署方式":n==="upload"?"请上传现有配置文件,或使用默认配置开始编辑":"请指定配置文件路径并点击加载按钮"})]})]})}),e.jsx(ps,{open:U,onOpenChange:O,children:e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认切换模式"}),e.jsxs(ds,{children:["切换模式将清空当前配置,确定要继续吗?",e.jsx("br",{}),e.jsx("span",{className:"text-destructive font-medium",children:"请确保已保存重要配置"})]})]}),e.jsxs(cs,{children:[e.jsx(ms,{onClick:()=>{O(!1),V(null)},children:"取消"}),e.jsx(us,{onClick:k,children:"确认切换"})]})]})}),e.jsx(ps,{open:K,onOpenChange:H,children:e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认清空路径"}),e.jsxs(ds,{children:["清空路径将清除当前配置,确定要继续吗?",e.jsx("br",{}),e.jsx("span",{className:"text-muted-foreground text-sm",children:"此操作不会删除配置文件,只是清除界面中的配置"})]})]}),e.jsxs(cs,{children:[e.jsx(ms,{onClick:()=>H(!1),children:"取消"}),e.jsx(us,{onClick:ue,className:"bg-destructive hover:bg-destructive/90",children:"确认清空"})]})]})})]})})}function mw({config:n,onChange:i}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"Napcat WebSocket 服务设置"}),e.jsxs("div",{className:"grid gap-3 md:gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"napcat-host",className:"text-sm md:text-base",children:"主机地址"}),e.jsx(oe,{id:"napcat-host",value:n.napcat_server.host,onChange:c=>i({...n,napcat_server:{...n.napcat_server,host:c.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的主机地址"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"napcat-port",className:"text-sm md:text-base",children:"端口"}),e.jsx(oe,{id:"napcat-port",type:"number",value:n.napcat_server.port||"",onChange:c=>i({...n,napcat_server:{...n.napcat_server,port:c.target.value?parseInt(c.target.value):0}}),placeholder:"8095",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的端口(留空使用默认值 8095)"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"napcat-token",className:"text-sm md:text-base",children:"访问令牌(Token)"}),e.jsx(oe,{id:"napcat-token",type:"password",value:n.napcat_server.token,onChange:c=>i({...n,napcat_server:{...n.napcat_server,token:c.target.value}}),placeholder:"留空表示无需令牌",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Napcat 设定的访问令牌,若无则留空"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"napcat-heartbeat",className:"text-sm md:text-base",children:"心跳间隔(秒)"}),e.jsx(oe,{id:"napcat-heartbeat",type:"number",value:n.napcat_server.heartbeat_interval||"",onChange:c=>i({...n,napcat_server:{...n.napcat_server,heartbeat_interval:c.target.value?parseInt(c.target.value):0}}),placeholder:"30",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"与 Napcat 设置的心跳间隔保持一致(留空使用默认值 30)"})]})]})]})})}function hw({config:n,onChange:i}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"麦麦 WebSocket 服务设置"}),e.jsxs("div",{className:"grid gap-3 md:gap-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"maibot-host",className:"text-sm md:text-base",children:"主机地址"}),e.jsx(oe,{id:"maibot-host",value:n.maibot_server.host,onChange:c=>i({...n,maibot_server:{...n.maibot_server,host:c.target.value}}),placeholder:"localhost",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 HOST 字段"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{htmlFor:"maibot-port",className:"text-sm md:text-base",children:"端口"}),e.jsx(oe,{id:"maibot-port",type:"number",value:n.maibot_server.port||"",onChange:c=>i({...n,maibot_server:{...n.maibot_server,port:c.target.value?parseInt(c.target.value):0}}),placeholder:"8000",className:"text-sm md:text-base"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦在 .env 文件中设置的 PORT 字段(留空使用默认值 8000)"})]})]})]})})}function xw({config:n,onChange:i}){const c=x=>{const f={...n};x==="group"?f.chat.group_list=[...f.chat.group_list,0]:x==="private"?f.chat.private_list=[...f.chat.private_list,0]:f.chat.ban_user_id=[...f.chat.ban_user_id,0],i(f)},d=(x,f)=>{const j={...n};x==="group"?j.chat.group_list=j.chat.group_list.filter((p,w)=>w!==f):x==="private"?j.chat.private_list=j.chat.private_list.filter((p,w)=>w!==f):j.chat.ban_user_id=j.chat.ban_user_id.filter((p,w)=>w!==f),i(j)},h=(x,f,j)=>{const p={...n};x==="group"?p.chat.group_list[f]=j:x==="private"?p.chat.private_list[f]=j:p.chat.ban_user_id[f]=j,i(p)};return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"聊天黑白名单功能"}),e.jsxs("div",{className:"grid gap-4 md:gap-6",children:[e.jsxs("div",{className:"space-y-3 md:space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-sm md:text-base",children:"群组名单类型"}),e.jsxs(He,{value:n.chat.group_list_type,onValueChange:x=>i({...n,chat:{...n.chat,group_list_type:x}}),children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),e.jsx(le,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsx(b,{className:"text-sm md:text-base",children:"群组列表"}),e.jsxs(N,{onClick:()=>c("group"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Da,{className:"mr-1 h-4 w-4"}),"添加群号"]})]}),n.chat.group_list.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(oe,{type:"number",value:x,onChange:j=>h("group",f,parseInt(j.target.value)||0),placeholder:"输入群号",className:"text-sm md:text-base"}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsx(N,{size:"icon",variant:"outline",children:e.jsx(ls,{className:"h-4 w-4"})})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认删除"}),e.jsxs(ds,{children:["确定要删除群号 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:()=>d("group",f),children:"删除"})]})]})]})]},f)),n.chat.group_list.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无群组"})]})]}),e.jsxs("div",{className:"space-y-3 md:space-y-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-sm md:text-base",children:"私聊名单类型"}),e.jsxs(He,{value:n.chat.private_list_type,onValueChange:x=>i({...n,chat:{...n.chat,private_list_type:x}}),children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"whitelist",children:"白名单(仅名单内可聊天)"}),e.jsx(le,{value:"blacklist",children:"黑名单(名单内禁止聊天)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsx(b,{className:"text-sm md:text-base",children:"私聊列表"}),e.jsxs(N,{onClick:()=>c("private"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Da,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),n.chat.private_list.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(oe,{type:"number",value:x,onChange:j=>h("private",f,parseInt(j.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsx(N,{size:"icon",variant:"outline",children:e.jsx(ls,{className:"h-4 w-4"})})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认删除"}),e.jsxs(ds,{children:["确定要删除用户 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:()=>d("private",f),children:"删除"})]})]})]})]},f)),n.chat.private_list.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无用户"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2 sm:gap-0",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-sm md:text-base",children:"全局禁止名单"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"名单中的用户无法进行任何聊天"})]}),e.jsxs(N,{onClick:()=>c("ban"),size:"sm",variant:"outline",className:"w-full sm:w-auto",children:[e.jsx(Da,{className:"mr-1 h-4 w-4"}),"添加用户"]})]}),n.chat.ban_user_id.map((x,f)=>e.jsxs("div",{className:"flex gap-2",children:[e.jsx(oe,{type:"number",value:x,onChange:j=>h("ban",f,parseInt(j.target.value)||0),placeholder:"输入QQ号",className:"text-sm md:text-base"}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsx(N,{size:"icon",variant:"outline",children:e.jsx(ls,{className:"h-4 w-4"})})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认删除"}),e.jsxs(ds,{children:["确定要从全局禁止名单中删除用户 ",x," 吗?此操作无法撤销。"]})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:()=>d("ban",f),children:"删除"})]})]})]})]},f)),n.chat.ban_user_id.length===0&&e.jsx("p",{className:"text-sm text-muted-foreground",children:"暂无禁止用户"})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-sm md:text-base",children:"屏蔽QQ官方机器人"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否屏蔽来自QQ官方机器人的消息"})]}),e.jsx(Xe,{checked:n.chat.ban_qq_bot,onCheckedChange:x=>i({...n,chat:{...n.chat,ban_qq_bot:x}})})]}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-sm md:text-base",children:"启用戳一戳功能"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"是否响应戳一戳消息"})]}),e.jsx(Xe,{checked:n.chat.enable_poke,onCheckedChange:x=>i({...n,chat:{...n.chat,enable_poke:x}})})]})]})]})})}function fw({config:n,onChange:i}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"发送语音设置"}),e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-sm md:text-base",children:"使用 TTS 语音"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"请确保已配置 TTS 并有对应的适配器"})]}),e.jsx(Xe,{checked:n.voice.use_tts,onCheckedChange:c=>i({...n,voice:{use_tts:c}})})]})]})})}function pw({config:n,onChange:i}){return e.jsx("div",{className:"rounded-lg border bg-card p-4 md:p-6 space-y-4 md:space-y-6",children:e.jsxs("div",{children:[e.jsx("h3",{className:"text-base md:text-lg font-semibold mb-3 md:mb-4",children:"调试设置"}),e.jsx("div",{className:"grid gap-3 md:gap-4",children:e.jsxs("div",{className:"grid gap-2",children:[e.jsx(b,{className:"text-sm md:text-base",children:"日志等级"}),e.jsxs(He,{value:n.debug.level,onValueChange:c=>i({...n,debug:{level:c}}),children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"DEBUG",children:"DEBUG(调试)"}),e.jsx(le,{value:"INFO",children:"INFO(信息)"}),e.jsx(le,{value:"WARNING",children:"WARNING(警告)"}),e.jsx(le,{value:"ERROR",children:"ERROR(错误)"}),e.jsx(le,{value:"CRITICAL",children:"CRITICAL(严重)"})]})]}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"设置适配器的日志输出等级"})]})})]})})}const gw=["defaultChecked","defaultValue","suppressContentEditableWarning","suppressHydrationWarning","dangerouslySetInnerHTML","accessKey","className","contentEditable","contextMenu","dir","draggable","hidden","id","lang","placeholder","slot","spellCheck","style","tabIndex","title","translate","radioGroup","role","about","datatype","inlist","prefix","property","resource","typeof","vocab","autoCapitalize","autoCorrect","autoSave","color","itemProp","itemScope","itemType","itemID","itemRef","results","security","unselectable","inputMode","is","onCopy","onCopyCapture","onCut","onCutCapture","onPaste","onPasteCapture","onCompositionEnd","onCompositionEndCapture","onCompositionStart","onCompositionStartCapture","onCompositionUpdate","onCompositionUpdateCapture","onFocus","onFocusCapture","onBlur","onBlurCapture","onChange","onChangeCapture","onBeforeInput","onBeforeInputCapture","onInput","onInputCapture","onReset","onResetCapture","onSubmit","onSubmitCapture","onInvalid","onInvalidCapture","onLoad","onLoadCapture","onError","onErrorCapture","onKeyDown","onKeyDownCapture","onKeyPress","onKeyPressCapture","onKeyUp","onKeyUpCapture","onAbort","onAbortCapture","onCanPlay","onCanPlayCapture","onCanPlayThrough","onCanPlayThroughCapture","onDurationChange","onDurationChangeCapture","onEmptied","onEmptiedCapture","onEncrypted","onEncryptedCapture","onEnded","onEndedCapture","onLoadedData","onLoadedDataCapture","onLoadedMetadata","onLoadedMetadataCapture","onLoadStart","onLoadStartCapture","onPause","onPauseCapture","onPlay","onPlayCapture","onPlaying","onPlayingCapture","onProgress","onProgressCapture","onRateChange","onRateChangeCapture","onSeeked","onSeekedCapture","onSeeking","onSeekingCapture","onStalled","onStalledCapture","onSuspend","onSuspendCapture","onTimeUpdate","onTimeUpdateCapture","onVolumeChange","onVolumeChangeCapture","onWaiting","onWaitingCapture","onAuxClick","onAuxClickCapture","onClick","onClickCapture","onContextMenu","onContextMenuCapture","onDoubleClick","onDoubleClickCapture","onDrag","onDragCapture","onDragEnd","onDragEndCapture","onDragEnter","onDragEnterCapture","onDragExit","onDragExitCapture","onDragLeave","onDragLeaveCapture","onDragOver","onDragOverCapture","onDragStart","onDragStartCapture","onDrop","onDropCapture","onMouseDown","onMouseDownCapture","onMouseEnter","onMouseLeave","onMouseMove","onMouseMoveCapture","onMouseOut","onMouseOutCapture","onMouseOver","onMouseOverCapture","onMouseUp","onMouseUpCapture","onSelect","onSelectCapture","onTouchCancel","onTouchCancelCapture","onTouchEnd","onTouchEndCapture","onTouchMove","onTouchMoveCapture","onTouchStart","onTouchStartCapture","onPointerDown","onPointerDownCapture","onPointerMove","onPointerMoveCapture","onPointerUp","onPointerUpCapture","onPointerCancel","onPointerCancelCapture","onPointerEnter","onPointerEnterCapture","onPointerLeave","onPointerLeaveCapture","onPointerOver","onPointerOverCapture","onPointerOut","onPointerOutCapture","onGotPointerCapture","onGotPointerCaptureCapture","onLostPointerCapture","onLostPointerCaptureCapture","onScroll","onScrollCapture","onWheel","onWheelCapture","onAnimationStart","onAnimationStartCapture","onAnimationEnd","onAnimationEndCapture","onAnimationIteration","onAnimationIterationCapture","onTransitionEnd","onTransitionEndCapture"],jw=/^(aria-|data-)/,Og=n=>Object.fromEntries(Object.entries(n).filter(([i])=>jw.test(i)||gw.includes(i)));function vw(n,i){const c=Og(n);return Object.keys(n).some(d=>!Object.hasOwn(c,d)&&n[d]!==i[d])}class Nw extends u.Component{container;plugin;componentDidMount(){this.installPlugin()}componentDidUpdate(i){if(i.uppy!==this.props.uppy)this.uninstallPlugin(i),this.installPlugin();else if(vw(this.props,i)){const{uppy:c,...d}={...this.props,target:this.container};this.plugin.setOptions(d)}}componentWillUnmount(){this.uninstallPlugin()}installPlugin(){const{uppy:i,...c}={id:"Dashboard",...this.props,inline:!0,target:this.container};i.use(ny,c),this.plugin=i.getPlugin(c.id)}uninstallPlugin(i=this.props){const{uppy:c}=i;c.removePlugin(this.plugin)}render(){return u.createElement("div",{className:"uppy-Container",ref:i=>{this.container=i},...Og(this.props)})}}function bw({src:n,alt:i="表情包",className:c,maxRetries:d=5,retryInterval:h=1500}){const[x,f]=u.useState("loading"),[j,p]=u.useState(0),[w,v]=u.useState(null),y=u.useCallback(async()=>{try{const S=await fetch(n,{credentials:"include"});if(S.status===202){f("generating"),j{p(F=>F+1)},h):f("error");return}if(!S.ok){f("error");return}const C=await S.blob(),M=URL.createObjectURL(C);v(M),f("loaded")}catch(S){console.error("加载缩略图失败:",S),f("error")}},[n,j,d,h]);return u.useEffect(()=>{f("loading"),p(0),v(null)},[n]),u.useEffect(()=>{y()},[y]),u.useEffect(()=>()=>{w&&URL.revokeObjectURL(w)},[w]),x==="loading"||x==="generating"?e.jsx(gg,{className:$("w-full h-full",c)}):x==="error"||!w?e.jsx("div",{className:$("w-full h-full flex items-center justify-center bg-muted",c),children:e.jsx(dg,{className:"h-8 w-8 text-muted-foreground"})}):e.jsx("img",{src:w,alt:i,className:$("w-full h-full object-contain",c)})}function yw({content:n,className:i=""}){return e.jsx("div",{className:`prose prose-sm dark:prose-invert max-w-none ${i}`,children:e.jsx(ry,{remarkPlugins:[oy,dy],rehypePlugins:[cy],components:{code({inline:c,className:d,children:h,...x}){return c?e.jsx("code",{className:"bg-muted px-1.5 py-0.5 rounded text-sm font-mono",...x,children:h}):e.jsx("code",{className:`${d} block bg-muted p-4 rounded-lg overflow-x-auto`,...x,children:h})},table({children:c,...d}){return e.jsx("div",{className:"overflow-x-auto",children:e.jsx("table",{className:"border-collapse border border-border",...d,children:c})})},th({children:c,...d}){return e.jsx("th",{className:"border border-border bg-muted px-4 py-2 text-left font-semibold",...d,children:c})},td({children:c,...d}){return e.jsx("td",{className:"border border-border px-4 py-2",...d,children:c})},a({children:c,...d}){return e.jsx("a",{className:"text-primary hover:underline",target:"_blank",rel:"noopener noreferrer",...d,children:c})},blockquote({children:c,...d}){return e.jsx("blockquote",{className:"border-l-4 border-primary pl-4 italic text-muted-foreground",...d,children:c})},h1({children:c,...d}){return e.jsx("h1",{className:"text-3xl font-bold mt-6 mb-4",...d,children:c})},h2({children:c,...d}){return e.jsx("h2",{className:"text-2xl font-bold mt-5 mb-3",...d,children:c})},h3({children:c,...d}){return e.jsx("h3",{className:"text-xl font-bold mt-4 mb-2",...d,children:c})},h4({children:c,...d}){return e.jsx("h4",{className:"text-lg font-semibold mt-3 mb-2",...d,children:c})},ul({children:c,...d}){return e.jsx("ul",{className:"list-disc list-inside space-y-1 my-2",...d,children:c})},ol({children:c,...d}){return e.jsx("ol",{className:"list-decimal list-inside space-y-1 my-2",...d,children:c})},p({children:c,...d}){return e.jsx("p",{className:"my-2 leading-relaxed",...d,children:c})},hr({...c}){return e.jsx("hr",{className:"my-4 border-border",...c})}},children:n})})}function ww({children:n,className:i}){return e.jsx(yw,{content:n,className:i})}const pa="/api/webui/emoji";async function _w(n){const i=new URLSearchParams;n.page&&i.append("page",n.page.toString()),n.page_size&&i.append("page_size",n.page_size.toString()),n.search&&i.append("search",n.search),n.is_registered!==void 0&&i.append("is_registered",n.is_registered.toString()),n.is_banned!==void 0&&i.append("is_banned",n.is_banned.toString()),n.format&&i.append("format",n.format),n.sort_by&&i.append("sort_by",n.sort_by),n.sort_order&&i.append("sort_order",n.sort_order);const c=await Te(`${pa}/list?${i}`,{});if(!c.ok)throw new Error(`获取表情包列表失败: ${c.statusText}`);return c.json()}async function Sw(n){const i=await Te(`${pa}/${n}`,{});if(!i.ok)throw new Error(`获取表情包详情失败: ${i.statusText}`);return i.json()}async function Cw(n,i){const c=await Te(`${pa}/${n}`,{method:"PATCH",body:JSON.stringify(i)});if(!c.ok)throw new Error(`更新表情包失败: ${c.statusText}`);return c.json()}async function kw(n){const i=await Te(`${pa}/${n}`,{method:"DELETE"});if(!i.ok)throw new Error(`删除表情包失败: ${i.statusText}`);return i.json()}async function Tw(){const n=await Te(`${pa}/stats/summary`,{});if(!n.ok)throw new Error(`获取统计数据失败: ${n.statusText}`);return n.json()}async function Ew(n){const i=await Te(`${pa}/${n}/register`,{method:"POST"});if(!i.ok)throw new Error(`注册表情包失败: ${i.statusText}`);return i.json()}async function zw(n){const i=await Te(`${pa}/${n}/ban`,{method:"POST"});if(!i.ok)throw new Error(`封禁表情包失败: ${i.statusText}`);return i.json()}function Aw(n,i=!1){return i?`${pa}/${n}/thumbnail?original=true`:`${pa}/${n}/thumbnail`}function Mw(n){return`${pa}/${n}/thumbnail?original=true`}async function Dw(n){const i=await Te(`${pa}/batch/delete`,{method:"POST",body:JSON.stringify({emoji_ids:n})});if(!i.ok){const c=await i.json();throw new Error(c.detail||"批量删除失败")}return i.json()}function Ow(){return`${pa}/upload`}function Rw(){const[n,i]=u.useState([]),[c,d]=u.useState(null),[h,x]=u.useState(!1),[f,j]=u.useState(1),[p,w]=u.useState(0),[v,y]=u.useState(20),[S,C]=u.useState("all"),[M,F]=u.useState("all"),[U,O]=u.useState("all"),[K,H]=u.useState("usage_count"),[A,V]=u.useState("desc"),[Q,T]=u.useState(null),[D,ne]=u.useState(!1),[xe,_e]=u.useState(!1),[Se,ge]=u.useState(!1),[ye,be]=u.useState(new Set),[z,X]=u.useState(!1),[k,se]=u.useState(""),[_,ue]=u.useState("medium"),[ie,ae]=u.useState(!1),{toast:fe}=Gs(),Ne=u.useCallback(async()=>{try{x(!0);const de=await _w({page:f,page_size:v,is_registered:S==="all"?void 0:S==="registered",is_banned:M==="all"?void 0:M==="banned",format:U==="all"?void 0:U,sort_by:K,sort_order:A});i(de.data),w(de.total)}catch(de){const Ee=de instanceof Error?de.message:"加载表情包列表失败";fe({title:"错误",description:Ee,variant:"destructive"})}finally{x(!1)}},[f,v,S,M,U,K,A,fe]),me=async()=>{try{const de=await Tw();d(de.data)}catch(de){console.error("加载统计数据失败:",de)}};u.useEffect(()=>{Ne()},[Ne]),u.useEffect(()=>{me()},[]);const G=async de=>{try{const Ee=await Sw(de.id);T(Ee.data),ne(!0)}catch(Ee){const ts=Ee instanceof Error?Ee.message:"加载详情失败";fe({title:"错误",description:ts,variant:"destructive"})}},P=de=>{T(de),_e(!0)},B=de=>{T(de),ge(!0)},W=async()=>{if(Q)try{await kw(Q.id),fe({title:"成功",description:"表情包已删除"}),ge(!1),T(null),Ne(),me()}catch(de){const Ee=de instanceof Error?de.message:"删除失败";fe({title:"错误",description:Ee,variant:"destructive"})}},Ce=async de=>{try{await Ew(de.id),fe({title:"成功",description:"表情包已注册"}),Ne(),me()}catch(Ee){const ts=Ee instanceof Error?Ee.message:"注册失败";fe({title:"错误",description:ts,variant:"destructive"})}},Me=async de=>{try{await zw(de.id),fe({title:"成功",description:"表情包已封禁"}),Ne(),me()}catch(Ee){const ts=Ee instanceof Error?Ee.message:"封禁失败";fe({title:"错误",description:ts,variant:"destructive"})}},re=de=>{const Ee=new Set(ye);Ee.has(de)?Ee.delete(de):Ee.add(de),be(Ee)},De=async()=>{try{const de=await Dw(Array.from(ye));fe({title:"批量删除完成",description:de.message}),be(new Set),X(!1),Ne(),me()}catch(de){fe({title:"批量删除失败",description:de instanceof Error?de.message:"批量删除失败",variant:"destructive"})}},Vs=()=>{const de=parseInt(k),Ee=Math.ceil(p/v);de>=1&&de<=Ee?(j(de),se("")):fe({title:"无效的页码",description:`请输入1-${Ee}之间的页码`,variant:"destructive"})},Qs=c?.formats?Object.keys(c.formats):[];return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsxs("div",{className:"mb-4 sm:mb-6 flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"表情包管理"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理麦麦的表情包资源"})]}),e.jsxs(N,{onClick:()=>ae(!0),className:"gap-2",children:[e.jsx(fr,{className:"h-4 w-4"}),"上传表情包"]})]}),e.jsx(ss,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[c&&e.jsxs("div",{className:"grid gap-4 grid-cols-2 lg:grid-cols-4",children:[e.jsx(Ze,{children:e.jsxs(ys,{className:"pb-2",children:[e.jsx(ct,{children:"总数"}),e.jsx(ws,{className:"text-2xl",children:c.total})]})}),e.jsx(Ze,{children:e.jsxs(ys,{className:"pb-2",children:[e.jsx(ct,{children:"已注册"}),e.jsx(ws,{className:"text-2xl text-green-600",children:c.registered})]})}),e.jsx(Ze,{children:e.jsxs(ys,{className:"pb-2",children:[e.jsx(ct,{children:"已封禁"}),e.jsx(ws,{className:"text-2xl text-red-600",children:c.banned})]})}),e.jsx(Ze,{children:e.jsxs(ys,{className:"pb-2",children:[e.jsx(ct,{children:"未注册"}),e.jsx(ws,{className:"text-2xl text-gray-600",children:c.unregistered})]})})]}),e.jsxs(Ze,{children:[e.jsx(ys,{children:e.jsxs(ws,{className:"flex items-center gap-2",children:[e.jsx(Mu,{className:"h-5 w-5"}),"筛选和排序"]})}),e.jsxs(Ts,{className:"space-y-4",children:[e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"排序方式"}),e.jsxs(He,{value:`${K}-${A}`,onValueChange:de=>{const[Ee,ts]=de.split("-");H(Ee),V(ts),j(1)},children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"usage_count-desc",children:"使用次数 (多→少)"}),e.jsx(le,{value:"usage_count-asc",children:"使用次数 (少→多)"}),e.jsx(le,{value:"register_time-desc",children:"注册时间 (新→旧)"}),e.jsx(le,{value:"register_time-asc",children:"注册时间 (旧→新)"}),e.jsx(le,{value:"record_time-desc",children:"记录时间 (新→旧)"}),e.jsx(le,{value:"record_time-asc",children:"记录时间 (旧→新)"}),e.jsx(le,{value:"last_used_time-desc",children:"最后使用 (新→旧)"}),e.jsx(le,{value:"last_used_time-asc",children:"最后使用 (旧→新)"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"注册状态"}),e.jsxs(He,{value:S,onValueChange:de=>{C(de),j(1)},children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"all",children:"全部"}),e.jsx(le,{value:"registered",children:"已注册"}),e.jsx(le,{value:"unregistered",children:"未注册"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"封禁状态"}),e.jsxs(He,{value:M,onValueChange:de=>{F(de),j(1)},children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"all",children:"全部"}),e.jsx(le,{value:"banned",children:"已封禁"}),e.jsx(le,{value:"unbanned",children:"未封禁"})]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"格式"}),e.jsxs(He,{value:U,onValueChange:de=>{O(de),j(1)},children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"all",children:"全部"}),Qs.map(de=>e.jsxs(le,{value:de,children:[de.toUpperCase()," (",c?.formats[de],")"]},de))]})]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 pt-4 border-t",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[ye.size>0&&e.jsxs("span",{className:"text-sm text-muted-foreground",children:["已选择 ",ye.size," 个表情包"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{className:"text-sm whitespace-nowrap",children:"卡片大小"}),e.jsxs(He,{value:_,onValueChange:de=>ue(de),children:[e.jsx(Le,{className:"w-24",children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"small",children:"小"}),e.jsx(le,{value:"medium",children:"中"}),e.jsx(le,{value:"large",children:"大"})]})]})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"emoji-page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(He,{value:v.toString(),onValueChange:de=>{y(parseInt(de)),j(1),be(new Set)},children:[e.jsx(Le,{id:"emoji-page-size",className:"w-20",children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"20",children:"20"}),e.jsx(le,{value:"40",children:"40"}),e.jsx(le,{value:"60",children:"60"}),e.jsx(le,{value:"100",children:"100"})]})]}),ye.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>be(new Set),children:"取消选择"}),e.jsxs(N,{variant:"destructive",size:"sm",onClick:()=>X(!0),children:[e.jsx(ls,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]}),e.jsx("div",{className:"flex justify-end pt-4 border-t",children:e.jsxs(N,{variant:"outline",size:"sm",onClick:Ne,disabled:h,children:[e.jsx(Ct,{className:`h-4 w-4 mr-2 ${h?"animate-spin":""}`}),"刷新"]})})]})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{children:[e.jsx(ws,{children:"表情包列表"}),e.jsxs(ct,{children:["共 ",p," 个表情包,当前第 ",f," 页"]})]}),e.jsxs(Ts,{children:[n.length===0?e.jsx("div",{className:"text-center py-12 text-muted-foreground",children:"暂无数据"}):e.jsx("div",{className:`grid gap-3 ${_==="small"?"grid-cols-3 sm:grid-cols-4 md:grid-cols-6 lg:grid-cols-8 xl:grid-cols-10":_==="medium"?"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 xl:grid-cols-8":"grid-cols-2 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5"}`,children:n.map(de=>e.jsxs("div",{className:`group relative rounded-lg border bg-card overflow-hidden hover:ring-2 hover:ring-primary transition-all cursor-pointer ${ye.has(de.id)?"ring-2 ring-primary bg-primary/5":""}`,onClick:()=>re(de.id),children:[e.jsx("div",{className:`absolute top-1 left-1 z-10 transition-opacity ${ye.has(de.id)?"opacity-100":"opacity-0 group-hover:opacity-100"}`,children:e.jsx("div",{className:`w-5 h-5 rounded-full border-2 flex items-center justify-center ${ye.has(de.id)?"bg-primary border-primary text-primary-foreground":"bg-background/80 border-muted-foreground/50"}`,children:ye.has(de.id)&&e.jsx(fa,{className:"h-3 w-3"})})}),e.jsxs("div",{className:"absolute top-1 right-1 z-10 flex flex-col gap-0.5",children:[de.is_registered&&e.jsx(Ye,{variant:"default",className:"bg-green-600 text-[10px] px-1 py-0",children:"已注册"}),de.is_banned&&e.jsx(Ye,{variant:"destructive",className:"text-[10px] px-1 py-0",children:"已封禁"})]}),e.jsx("div",{className:`aspect-square bg-muted flex items-center justify-center overflow-hidden ${_==="small"?"p-1":_==="medium"?"p-2":"p-3"}`,children:e.jsx(bw,{src:Aw(de.id),alt:"表情包"})}),e.jsxs("div",{className:`border-t bg-card ${_==="small"?"p-1":"p-2"}`,children:[e.jsxs("div",{className:"flex items-center justify-between gap-1 text-xs text-muted-foreground mb-1",children:[e.jsx(Ye,{variant:"outline",className:"text-[10px] px-1 py-0",children:de.format.toUpperCase()}),e.jsxs("span",{className:"font-mono",children:[de.usage_count,"次"]})]}),e.jsxs("div",{className:`flex gap-1 justify-center opacity-0 group-hover:opacity-100 transition-opacity ${_==="small"?"flex-wrap":""}`,children:[e.jsx(N,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:Ee=>{Ee.stopPropagation(),P(de)},title:"编辑",children:e.jsx(mn,{className:"h-3 w-3"})}),e.jsx(N,{variant:"ghost",size:"icon",className:"h-6 w-6",onClick:Ee=>{Ee.stopPropagation(),G(de)},title:"详情",children:e.jsx(Ra,{className:"h-3 w-3"})}),!de.is_registered&&e.jsx(N,{variant:"ghost",size:"icon",className:"h-6 w-6 text-green-600 hover:text-green-700",onClick:Ee=>{Ee.stopPropagation(),Ce(de)},title:"注册",children:e.jsx(fa,{className:"h-3 w-3"})}),!de.is_banned&&e.jsx(N,{variant:"ghost",size:"icon",className:"h-6 w-6 text-orange-600 hover:text-orange-700",onClick:Ee=>{Ee.stopPropagation(),Me(de)},title:"封禁",children:e.jsx(Sb,{className:"h-3 w-3"})}),e.jsx(N,{variant:"ghost",size:"icon",className:"h-6 w-6 text-red-600 hover:text-red-700",onClick:Ee=>{Ee.stopPropagation(),B(de)},title:"删除",children:e.jsx(ls,{className:"h-3 w-3"})})]})]})]},de.id))}),p>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 mt-4",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["显示 ",(f-1)*v+1," 到"," ",Math.min(f*v,p)," 条,共 ",p," 条"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(di,{className:"h-4 w-4"})}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>j(de=>Math.max(1,de-1)),disabled:f===1,children:[e.jsx(Hl,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(oe,{type:"number",value:k,onChange:de=>se(de.target.value),onKeyDown:de=>de.key==="Enter"&&Vs(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(p/v)}),e.jsx(N,{variant:"outline",size:"sm",onClick:Vs,disabled:!k,className:"h-8",children:"跳转"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>j(de=>de+1),disabled:f>=Math.ceil(p/v),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(ul,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(p/v)),disabled:f>=Math.ceil(p/v),className:"hidden sm:flex",children:e.jsx(ui,{className:"h-4 w-4"})})]})]})]})]}),e.jsx(Lw,{emoji:Q,open:D,onOpenChange:ne}),e.jsx(Uw,{emoji:Q,open:xe,onOpenChange:_e,onSuccess:()=>{Ne(),me()}}),e.jsx(Bw,{open:ie,onOpenChange:ae,onSuccess:()=>{Ne(),me()}})]})}),e.jsx(ps,{open:z,onOpenChange:X,children:e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认批量删除"}),e.jsxs(ds,{children:["你确定要删除选中的 ",ye.size," 个表情包吗?此操作不可撤销。"]})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:De,children:"确认删除"})]})]})}),e.jsx($s,{open:Se,onOpenChange:ge,children:e.jsxs(Bs,{children:[e.jsxs(Hs,{children:[e.jsx(qs,{children:"确认删除"}),e.jsx(Is,{children:"确定要删除这个表情包吗?此操作无法撤销。"})]}),e.jsxs(at,{children:[e.jsx(N,{variant:"outline",onClick:()=>ge(!1),children:"取消"}),e.jsx(N,{variant:"destructive",onClick:W,children:"删除"})]})]})})]})}function Lw({emoji:n,open:i,onOpenChange:c}){if(!n)return null;const d=h=>h?new Date(h*1e3).toLocaleString("zh-CN"):"-";return e.jsx($s,{open:i,onOpenChange:c,children:e.jsxs(Bs,{className:"max-w-2xl max-h-[90vh]",children:[e.jsx(Hs,{children:e.jsx(qs,{children:"表情包详情"})}),e.jsx(ss,{className:"max-h-[calc(90vh-8rem)] pr-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"flex justify-center",children:e.jsx("div",{className:"w-32 h-32 bg-muted rounded-lg flex items-center justify-center overflow-hidden",children:e.jsx("img",{src:Mw(n.id),alt:n.description||"表情包",className:"w-full h-full object-cover",onError:h=>{const x=h.target;x.style.display="none";const f=x.parentElement;f&&(f.innerHTML='')}})})}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"ID"}),e.jsx("div",{className:"mt-1 font-mono",children:n.id})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"格式"}),e.jsx("div",{className:"mt-1",children:e.jsx(Ye,{variant:"outline",children:n.format.toUpperCase()})})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"文件路径"}),e.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:n.full_path})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"哈希值"}),e.jsx("div",{className:"mt-1 font-mono text-sm break-all bg-muted p-2 rounded",children:n.emoji_hash})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"描述"}),n.description?e.jsx("div",{className:"mt-1 rounded-lg border bg-muted/50 p-3",children:e.jsx(ww,{className:"prose-sm",children:n.description})}):e.jsx("div",{className:"mt-1 text-sm text-muted-foreground",children:"-"})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"情绪"}),e.jsx("div",{className:"mt-1",children:n.emotion?e.jsx("span",{className:"text-sm",children:n.emotion}):e.jsx("span",{className:"text-sm text-muted-foreground",children:"-"})})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"状态"}),e.jsxs("div",{className:"mt-2 flex gap-2",children:[n.is_registered&&e.jsx(Ye,{variant:"default",className:"bg-green-600",children:"已注册"}),n.is_banned&&e.jsx(Ye,{variant:"destructive",children:"已封禁"}),!n.is_registered&&!n.is_banned&&e.jsx(Ye,{variant:"outline",children:"未注册"})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"使用次数"}),e.jsx("div",{className:"mt-1 font-mono text-lg",children:n.usage_count})]})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"记录时间"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.record_time)})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"注册时间"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.register_time)})]})]}),e.jsxs("div",{children:[e.jsx(b,{className:"text-muted-foreground",children:"最后使用"}),e.jsx("div",{className:"mt-1 text-sm",children:d(n.last_used_time)})]})]})})]})})}function Uw({emoji:n,open:i,onOpenChange:c,onSuccess:d}){const[h,x]=u.useState(""),[f,j]=u.useState(!1),[p,w]=u.useState(!1),[v,y]=u.useState(!1),{toast:S}=Gs();u.useEffect(()=>{n&&(x(n.emotion||""),j(n.is_registered),w(n.is_banned))},[n]);const C=async()=>{if(n)try{y(!0);const M=h.split(/[,,]/).map(F=>F.trim()).filter(Boolean).join(",");await Cw(n.id,{emotion:M||void 0,is_registered:f,is_banned:p}),S({title:"成功",description:"表情包信息已更新"}),c(!1),d()}catch(M){const F=M instanceof Error?M.message:"保存失败";S({title:"错误",description:F,variant:"destructive"})}finally{y(!1)}};return n?e.jsx($s,{open:i,onOpenChange:c,children:e.jsxs(Bs,{className:"max-w-2xl",children:[e.jsxs(Hs,{children:[e.jsx(qs,{children:"编辑表情包"}),e.jsx(Is,{children:"修改表情包的情绪和状态信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{children:[e.jsx(b,{children:"情绪"}),e.jsx(Fs,{value:h,onChange:M=>x(M.target.value),placeholder:"输入情绪描述...",rows:2,className:"mt-1"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"输入情绪相关的文本描述"})]}),e.jsxs("div",{className:"grid gap-4 sm:grid-cols-2",children:[e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(jt,{id:"is_registered",checked:f,onCheckedChange:M=>{M===!0?(j(!0),w(!1)):j(!1)}}),e.jsx(b,{htmlFor:"is_registered",className:"cursor-pointer",children:"已注册"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(jt,{id:"is_banned",checked:p,onCheckedChange:M=>{M===!0?(w(!0),j(!1)):w(!1)}}),e.jsx(b,{htmlFor:"is_banned",className:"cursor-pointer",children:"已封禁"})]})]})]}),e.jsxs(at,{children:[e.jsx(N,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(N,{onClick:C,disabled:v,children:v?"保存中...":"保存"})]})]})}):null}function Bw({open:n,onOpenChange:i,onSuccess:c}){const[d,h]=u.useState("select"),[x,f]=u.useState([]),[j,p]=u.useState(null),[w,v]=u.useState(!1),{toast:y}=Gs(),S=u.useMemo(()=>new iy({id:"emoji-uploader",autoProceed:!1,restrictions:{maxFileSize:10485760,allowedFileTypes:["image/jpeg","image/png","image/gif","image/webp"],maxNumberOfFiles:20},locale:{pluralize:()=>0,strings:{addMoreFiles:"添加更多文件",addingMoreFiles:"正在添加更多文件",allowedFileTypes:"允许的文件类型:%{types}",cancel:"取消",closeModal:"关闭",complete:"完成",connectedToInternet:"已连接到互联网",copyLink:"复制链接",copyLinkToClipboardFallback:"复制下方链接",copyLinkToClipboardSuccess:"链接已复制到剪贴板",dashboardTitle:"选择文件",dashboardWindowTitle:"文件选择窗口(按 ESC 关闭)",done:"完成",dropHereOr:"拖放文件到这里或 %{browse}",dropHint:"将文件拖放到此处",dropPasteFiles:"将文件拖放到这里或 %{browseFiles}",dropPasteFolders:"将文件拖放到这里或 %{browseFolders}",dropPasteBoth:"将文件拖放到这里,%{browseFiles} 或 %{browseFolders}",dropPasteImportFiles:"将文件拖放到这里,%{browseFiles} 或从以下位置导入:",dropPasteImportFolders:"将文件拖放到这里,%{browseFolders} 或从以下位置导入:",dropPasteImportBoth:"将文件拖放到这里,%{browseFiles},%{browseFolders} 或从以下位置导入:",editFile:"编辑文件",editing:"正在编辑 %{file}",emptyFolderAdded:"未从空文件夹添加文件",exceedsSize:"%{file} 超过了最大允许大小 %{size}",failedToUpload:"上传 %{file} 失败",fileSource:"文件来源:%{name}",filesUploadedOfTotal:{0:"已上传 %{complete} / %{smart_count} 个文件",1:"已上传 %{complete} / %{smart_count} 个文件"},filter:"筛选",finishEditingFile:"完成编辑文件",folderAdded:{0:"已从 %{folder} 添加 %{smart_count} 个文件",1:"已从 %{folder} 添加 %{smart_count} 个文件"},generatingThumbnails:"正在生成缩略图...",import:"导入",importFiles:"从以下位置导入文件:",importFrom:"从 %{name} 导入",loading:"加载中...",logOut:"登出",myDevice:"我的设备",noFilesFound:"这里没有文件或文件夹",noInternetConnection:"无网络连接",openFolderNamed:"打开文件夹 %{name}",pause:"暂停",pauseUpload:"暂停上传",paused:"已暂停",poweredBy:"技术支持:%{uppy}",processingXFiles:{0:"正在处理 %{smart_count} 个文件",1:"正在处理 %{smart_count} 个文件"},recording:"录制中",removeFile:"移除文件",resetFilter:"重置筛选",resume:"继续",resumeUpload:"继续上传",retry:"重试",retryUpload:"重试上传",save:"保存",saveChanges:"保存更改",selectFileNamed:"选择文件 %{name}",selectX:{0:"选择 %{smart_count}",1:"选择 %{smart_count}"},smile:"笑一个!",startRecording:"开始录制视频",stopRecording:"停止录制视频",takePicture:"拍照",timedOut:"上传已停滞 %{seconds} 秒,正在中止。",upload:"下一步",uploadComplete:"上传完成",uploadFailed:"上传失败",uploadPaused:"上传已暂停",uploadXFiles:{0:"下一步(%{smart_count} 个文件)",1:"下一步(%{smart_count} 个文件)"},uploadXNewFiles:{0:"下一步(+%{smart_count} 个文件)",1:"下一步(+%{smart_count} 个文件)"},uploading:"正在上传",uploadingXFiles:{0:"正在上传 %{smart_count} 个文件",1:"正在上传 %{smart_count} 个文件"},xFilesSelected:{0:"已选择 %{smart_count} 个文件",1:"已选择 %{smart_count} 个文件"},xMoreFilesAdded:{0:"又添加了 %{smart_count} 个文件",1:"又添加了 %{smart_count} 个文件"},xTimeLeft:"剩余 %{time}",youCanOnlyUploadFileTypes:"您只能上传:%{types}",youCanOnlyUploadX:{0:"您只能上传 %{smart_count} 个文件",1:"您只能上传 %{smart_count} 个文件"},youHaveToAtLeastSelectX:{0:"您至少需要选择 %{smart_count} 个文件",1:"您至少需要选择 %{smart_count} 个文件"},browseFiles:"浏览文件",browseFolders:"浏览文件夹",cancelUpload:"取消上传",addMore:"添加更多",back:"返回",editFileWithFilename:"编辑文件 %{file}"}}}),[]);u.useEffect(()=>{const Q=()=>{const T=S.getFiles();if(T.length===0)return;const D=T.map(ne=>({id:ne.id,name:ne.name,previewUrl:ne.preview||URL.createObjectURL(ne.data),emotion:"",description:"",isRegistered:!0,file:ne.data}));f(D),T.length===1?(p(D[0].id),h("edit-single")):h("edit-multiple")};return S.on("upload",Q),()=>{S.off("upload",Q)}},[S]),u.useEffect(()=>{n||(S.cancelAll(),h("select"),f([]),p(null),v(!1))},[n,S]);const C=u.useCallback((Q,T)=>{f(D=>D.map(ne=>ne.id===Q?{...ne,...T}:ne))},[]),M=u.useCallback(Q=>Q.emotion.trim().length>0,[]),F=u.useMemo(()=>x.length>0&&x.every(M),[x,M]),U=u.useMemo(()=>x.find(Q=>Q.id===j)||null,[x,j]),O=u.useCallback(()=>{(d==="edit-single"||d==="edit-multiple")&&(h("select"),f([]),p(null))},[d]),K=u.useCallback(async()=>{if(!F){y({title:"请填写必填项",description:"每个表情包的情感标签都是必填的",variant:"destructive"});return}v(!0);const Q=localStorage.getItem("access-token")||"";let T=0,D=0;try{for(const ne of x){const xe=new FormData;xe.append("file",ne.file),xe.append("emotion",ne.emotion),xe.append("description",ne.description),xe.append("is_registered",ne.isRegistered.toString());try{(await fetch(Ow(),{method:"POST",headers:{Authorization:`Bearer ${Q}`},body:xe})).ok?T++:D++}catch{D++}}D===0?(y({title:"上传成功",description:`成功上传 ${T} 个表情包`}),i(!1),c()):(y({title:"部分上传失败",description:`成功 ${T} 个,失败 ${D} 个`,variant:"destructive"}),c())}finally{v(!1)}},[F,x,y,i,c]),H=()=>e.jsx("div",{className:"space-y-4",children:e.jsx("div",{className:"border rounded-lg overflow-hidden w-full",children:e.jsx(Nw,{uppy:S,proudlyDisplayPoweredByUppy:!1,hideProgressDetails:!0,height:350,width:"100%",theme:"auto",note:"支持 JPG、PNG、GIF、WebP 格式,最多 20 个文件"})})}),A=()=>{const Q=x[0];return Q?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs(N,{variant:"ghost",size:"sm",onClick:O,children:[e.jsx(ii,{className:"h-4 w-4 mr-1"}),"返回"]}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"编辑表情包信息"})]}),e.jsxs("div",{className:"flex gap-6",children:[e.jsxs("div",{className:"flex-shrink-0",children:[e.jsx("div",{className:"w-32 h-32 rounded-lg border overflow-hidden bg-muted flex items-center justify-center",children:e.jsx("img",{src:Q.previewUrl,alt:Q.name,className:"max-w-full max-h-full object-contain"})}),e.jsx("p",{className:"text-xs text-muted-foreground mt-2 text-center truncate max-w-32",children:Q.name})]}),e.jsxs("div",{className:"flex-1 space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"single-emotion",children:["情感标签 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(oe,{id:"single-emotion",value:Q.emotion,onChange:T=>C(Q.id,{emotion:T.target.value}),placeholder:"多个标签用逗号分隔,如:开心,高兴",className:Q.emotion.trim()?"":"border-destructive"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"用于情感匹配,多个标签用逗号分隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"single-description",children:"描述"}),e.jsx(oe,{id:"single-description",value:Q.description,onChange:T=>C(Q.id,{description:T.target.value}),placeholder:"输入表情包描述..."})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(jt,{id:"single-is-registered",checked:Q.isRegistered,onCheckedChange:T=>C(Q.id,{isRegistered:T===!0})}),e.jsx(b,{htmlFor:"single-is-registered",className:"cursor-pointer",children:"上传后立即注册(可被麦麦使用)"})]})]})]}),e.jsx(at,{children:e.jsx(N,{onClick:K,disabled:!F||w,children:w?"上传中...":"上传"})})]}):null},V=()=>{const Q=x.filter(M).length,T=x.length;return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs(N,{variant:"ghost",size:"sm",onClick:O,children:[e.jsx(ii,{className:"h-4 w-4 mr-1"}),"返回"]}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["编辑表情包信息(",Q,"/",T," 已完成)"]})]}),e.jsx(Ye,{variant:F?"default":"secondary",children:F?e.jsxs(e.Fragment,{children:[e.jsx(sa,{className:"h-3 w-3 mr-1"}),"全部完成"]}):e.jsxs(e.Fragment,{children:[e.jsx(dl,{className:"h-3 w-3 mr-1"}),"未完成"]})})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(ss,{className:"h-[350px] pr-2",children:e.jsx("div",{className:"space-y-2",children:x.map(D=>{const ne=M(D),xe=j===D.id;return e.jsxs("div",{onClick:()=>p(D.id),className:` + flex items-center gap-3 p-3 rounded-lg border-2 cursor-pointer transition-all + ${xe?"ring-2 ring-primary":""} + ${ne?"border-green-500 bg-green-50 dark:bg-green-950/20":"border-border hover:border-muted-foreground/50"} + `,children:[e.jsx("div",{className:"w-12 h-12 rounded border overflow-hidden bg-muted flex-shrink-0 flex items-center justify-center",children:e.jsx("img",{src:D.previewUrl,alt:D.name,className:"max-w-full max-h-full object-contain"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm font-medium truncate",children:D.name}),e.jsx("p",{className:"text-xs text-muted-foreground truncate",children:D.emotion||"未填写情感标签"})]}),ne?e.jsx(fa,{className:"h-5 w-5 text-green-500 flex-shrink-0"}):e.jsx("div",{className:"h-5 w-5 rounded-full border-2 border-muted-foreground/30 flex-shrink-0"})]},D.id)})})}),e.jsx("div",{className:"border rounded-lg p-4",children:U?e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"w-16 h-16 rounded border overflow-hidden bg-muted flex items-center justify-center",children:e.jsx("img",{src:U.previewUrl,alt:U.name,className:"max-w-full max-h-full object-contain"})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium truncate",children:U.name}),M(U)&&e.jsxs(Ye,{variant:"outline",className:"text-green-600 border-green-600",children:[e.jsx(sa,{className:"h-3 w-3 mr-1"}),"已完成"]})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"multi-emotion",children:["情感标签 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(oe,{id:"multi-emotion",value:U.emotion,onChange:D=>C(U.id,{emotion:D.target.value}),placeholder:"多个标签用逗号分隔,如:开心,高兴",className:U.emotion.trim()?"":"border-destructive"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"multi-description",children:"描述"}),e.jsx(oe,{id:"multi-description",value:U.description,onChange:D=>C(U.id,{description:D.target.value}),placeholder:"输入表情包描述..."})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(jt,{id:"multi-is-registered",checked:U.isRegistered,onCheckedChange:D=>C(U.id,{isRegistered:D===!0})}),e.jsx(b,{htmlFor:"multi-is-registered",className:"cursor-pointer text-sm",children:"上传后立即注册"})]})]}):e.jsx("div",{className:"h-full flex items-center justify-center text-muted-foreground",children:e.jsxs("div",{className:"text-center",children:[e.jsx(dg,{className:"h-12 w-12 mx-auto mb-2 opacity-50"}),e.jsx("p",{children:"点击左侧卡片编辑"})]})})})]}),e.jsx(at,{children:e.jsx(N,{onClick:K,disabled:!F||w,children:w?"上传中...":`上传全部 (${T})`})})]})};return e.jsx($s,{open:n,onOpenChange:i,children:e.jsxs(Bs,{className:"max-w-3xl max-h-[90vh] overflow-hidden",children:[e.jsxs(Hs,{children:[e.jsxs(qs,{className:"flex items-center gap-2",children:[e.jsx(fr,{className:"h-5 w-5"}),d==="select"&&"上传表情包 - 选择文件",d==="edit-single"&&"上传表情包 - 填写信息",d==="edit-multiple"&&"上传表情包 - 批量编辑"]}),e.jsxs(Is,{children:[d==="select"&&"支持 JPG、PNG、GIF、WebP 格式,单个文件最大 10MB,可同时上传多个文件",d==="edit-single"&&"请填写表情包的情感标签(必填)和描述",d==="edit-multiple"&&"点击左侧卡片编辑每个表情包的信息,情感标签为必填项"]})]}),e.jsxs("div",{className:"overflow-y-auto pr-1",children:[d==="select"&&H(),d==="edit-single"&&A(),d==="edit-multiple"&&V()]})]})})}const Gl="/api/webui/expression";async function Hw(){const n=await Te(`${Gl}/chats`,{});if(!n.ok){const i=await n.json();throw new Error(i.detail||"获取聊天列表失败")}return n.json()}async function qw(n){const i=new URLSearchParams;n.page&&i.append("page",n.page.toString()),n.page_size&&i.append("page_size",n.page_size.toString()),n.search&&i.append("search",n.search),n.chat_id&&i.append("chat_id",n.chat_id);const c=await Te(`${Gl}/list?${i}`,{});if(!c.ok){const d=await c.json();throw new Error(d.detail||"获取表达方式列表失败")}return c.json()}async function Gw(n){const i=await Te(`${Gl}/${n}`,{});if(!i.ok){const c=await i.json();throw new Error(c.detail||"获取表达方式详情失败")}return i.json()}async function Vw(n){const i=await Te(`${Gl}/`,{method:"POST",body:JSON.stringify(n)});if(!i.ok){const c=await i.json();throw new Error(c.detail||"创建表达方式失败")}return i.json()}async function Fw(n,i){const c=await Te(`${Gl}/${n}`,{method:"PATCH",body:JSON.stringify(i)});if(!c.ok){const d=await c.json();throw new Error(d.detail||"更新表达方式失败")}return c.json()}async function $w(n){const i=await Te(`${Gl}/${n}`,{method:"DELETE"});if(!i.ok){const c=await i.json();throw new Error(c.detail||"删除表达方式失败")}return i.json()}async function Qw(n){const i=await Te(`${Gl}/batch/delete`,{method:"POST",body:JSON.stringify({ids:n})});if(!i.ok){const c=await i.json();throw new Error(c.detail||"批量删除表达方式失败")}return i.json()}async function Yw(){const n=await Te(`${Gl}/stats/summary`,{});if(!n.ok){const i=await n.json();throw new Error(i.detail||"获取统计数据失败")}return n.json()}function Xw(){const[n,i]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(0),[f,j]=u.useState(1),[p,w]=u.useState(20),[v,y]=u.useState(""),[S,C]=u.useState(null),[M,F]=u.useState(!1),[U,O]=u.useState(!1),[K,H]=u.useState(!1),[A,V]=u.useState(null),[Q,T]=u.useState(new Set),[D,ne]=u.useState(!1),[xe,_e]=u.useState(""),[Se,ge]=u.useState({total:0,recent_7days:0,chat_count:0,top_chats:{}}),[ye,be]=u.useState([]),[z,X]=u.useState(new Map),{toast:k}=Gs(),se=async()=>{try{d(!0);const W=await qw({page:f,page_size:p,search:v||void 0});i(W.data),x(W.total)}catch(W){k({title:"加载失败",description:W instanceof Error?W.message:"无法加载表达方式",variant:"destructive"})}finally{d(!1)}},_=async()=>{try{const W=await Yw();W?.data&&ge(W.data)}catch(W){console.error("加载统计数据失败:",W)}},ue=async()=>{try{const W=await Hw();if(W?.data){be(W.data);const Ce=new Map;W.data.forEach(Me=>{Ce.set(Me.chat_id,Me.chat_name)}),X(Ce)}}catch(W){console.error("加载聊天列表失败:",W)}},ie=W=>z.get(W)||W;u.useEffect(()=>{se(),_(),ue()},[f,p,v]);const ae=async W=>{try{const Ce=await Gw(W.id);C(Ce.data),F(!0)}catch(Ce){k({title:"加载详情失败",description:Ce instanceof Error?Ce.message:"无法加载表达方式详情",variant:"destructive"})}},fe=W=>{C(W),O(!0)},Ne=async W=>{try{await $w(W.id),k({title:"删除成功",description:`已删除表达方式: ${W.situation}`}),V(null),se(),_()}catch(Ce){k({title:"删除失败",description:Ce instanceof Error?Ce.message:"无法删除表达方式",variant:"destructive"})}},me=W=>{const Ce=new Set(Q);Ce.has(W)?Ce.delete(W):Ce.add(W),T(Ce)},G=()=>{Q.size===n.length&&n.length>0?T(new Set):T(new Set(n.map(W=>W.id)))},P=async()=>{try{await Qw(Array.from(Q)),k({title:"批量删除成功",description:`已删除 ${Q.size} 个表达方式`}),T(new Set),ne(!1),se(),_()}catch(W){k({title:"批量删除失败",description:W instanceof Error?W.message:"无法批量删除表达方式",variant:"destructive"})}},B=()=>{const W=parseInt(xe),Ce=Math.ceil(h/p);W>=1&&W<=Ce?(j(W),_e("")):k({title:"无效的页码",description:`请输入1-${Ce}之间的页码`,variant:"destructive"})};return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsx("div",{className:"mb-4 sm:mb-6",children:e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[e.jsx(un,{className:"h-8 w-8",strokeWidth:2}),"表达方式管理"]}),e.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦的表达方式和话术模板"})]}),e.jsxs(N,{onClick:()=>H(!0),className:"gap-2",children:[e.jsx(xt,{className:"h-4 w-4"}),"新增表达方式"]})]})}),e.jsx(ss,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"总数量"}),e.jsx("div",{className:"text-2xl font-bold mt-1",children:Se.total})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"近7天新增"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:Se.recent_7days})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"关联聊天数"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-blue-600",children:Se.chat_count})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx(b,{htmlFor:"search",children:"搜索"}),e.jsx("div",{className:"flex flex-col sm:flex-row gap-2 mt-1.5",children:e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(zt,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(oe,{id:"search",placeholder:"搜索情境、风格或上下文...",value:v,onChange:W=>y(W.target.value),className:"pl-9"})]})}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[e.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:Q.size>0&&e.jsxs("span",{children:["已选择 ",Q.size," 个表达方式"]})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(He,{value:p.toString(),onValueChange:W=>{w(parseInt(W)),j(1),T(new Set)},children:[e.jsx(Le,{id:"page-size",className:"w-20",children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"10",children:"10"}),e.jsx(le,{value:"20",children:"20"}),e.jsx(le,{value:"50",children:"50"}),e.jsx(le,{value:"100",children:"100"})]})]}),Q.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>T(new Set),children:"取消选择"}),e.jsxs(N,{variant:"destructive",size:"sm",onClick:()=>ne(!0),children:[e.jsx(ls,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card",children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(hn,{children:[e.jsx(xn,{children:e.jsxs(ot,{children:[e.jsx(Ie,{className:"w-12",children:e.jsx(jt,{checked:Q.size===n.length&&n.length>0,onCheckedChange:G})}),e.jsx(Ie,{children:"情境"}),e.jsx(Ie,{children:"风格"}),e.jsx(Ie,{children:"聊天"}),e.jsx(Ie,{className:"text-right",children:"操作"})]})}),e.jsx(fn,{children:c?e.jsx(ot,{children:e.jsx(Fe,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):n.length===0?e.jsx(ot,{children:e.jsx(Fe,{colSpan:5,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):n.map(W=>e.jsxs(ot,{children:[e.jsx(Fe,{children:e.jsx(jt,{checked:Q.has(W.id),onCheckedChange:()=>me(W.id)})}),e.jsx(Fe,{className:"font-medium max-w-xs truncate",children:W.situation}),e.jsx(Fe,{className:"max-w-xs truncate",children:W.style}),e.jsx(Fe,{className:"max-w-[200px] truncate",title:ie(W.chat_id),style:{wordBreak:"keep-all"},children:e.jsx("span",{className:"whitespace-nowrap overflow-hidden text-ellipsis block",children:ie(W.chat_id)})}),e.jsx(Fe,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(N,{variant:"default",size:"sm",onClick:()=>fe(W),children:[e.jsx(mn,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsx(N,{variant:"outline",size:"icon",className:"h-8 w-8",onClick:()=>ae(W),title:"查看详情",children:e.jsx(Dt,{className:"h-4 w-4"})}),e.jsxs(N,{size:"sm",onClick:()=>V(W),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(ls,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},W.id))})]})}),e.jsx("div",{className:"md:hidden space-y-3 p-4",children:c?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):n.length===0?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):n.map(W=>e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(jt,{checked:Q.has(W.id),onCheckedChange:()=>me(W.id),className:"mt-1"}),e.jsxs("div",{className:"min-w-0 flex-1 overflow-hidden space-y-2",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"情境"}),e.jsx("h3",{className:"font-semibold text-sm line-clamp-2 w-full break-all",title:W.situation,children:W.situation})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"风格"}),e.jsx("p",{className:"text-sm line-clamp-2 w-full break-all",title:W.style,children:W.style})]})]})]}),e.jsxs("div",{className:"text-sm",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"聊天"}),e.jsx("p",{className:"text-sm truncate",title:ie(W.chat_id),style:{wordBreak:"keep-all"},children:ie(W.chat_id)})]}),e.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>fe(W),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(mn,{className:"h-3 w-3 mr-1"}),"编辑"]}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>ae(W),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:e.jsx(Dt,{className:"h-3 w-3"})}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>V(W),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[e.jsx(ls,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},W.id))}),h>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",h," 条记录,第 ",f," / ",Math.ceil(h/p)," 页"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(di,{className:"h-4 w-4"})}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>j(f-1),disabled:f===1,children:[e.jsx(Hl,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(oe,{type:"number",value:xe,onChange:W=>_e(W.target.value),onKeyDown:W=>W.key==="Enter"&&B(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(h/p)}),e.jsx(N,{variant:"outline",size:"sm",onClick:B,disabled:!xe,className:"h-8",children:"跳转"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>j(f+1),disabled:f>=Math.ceil(h/p),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(ul,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(h/p)),disabled:f>=Math.ceil(h/p),className:"hidden sm:flex",children:e.jsx(ui,{className:"h-4 w-4"})})]})]})]})]})}),e.jsx(Kw,{expression:S,open:M,onOpenChange:F,chatNameMap:z}),e.jsx(Jw,{open:K,onOpenChange:H,chatList:ye,onSuccess:()=>{se(),_(),H(!1)}}),e.jsx(Zw,{expression:S,open:U,onOpenChange:O,chatList:ye,onSuccess:()=>{se(),_(),O(!1)}}),e.jsx(ps,{open:!!A,onOpenChange:()=>V(null),children:e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认删除"}),e.jsxs(ds,{children:['确定要删除表达方式 "',A?.situation,'" 吗? 此操作不可撤销。']})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:()=>A&&Ne(A),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),e.jsx(Iw,{open:D,onOpenChange:ne,onConfirm:P,count:Q.size})]})}function Kw({expression:n,open:i,onOpenChange:c,chatNameMap:d}){if(!n)return null;const h=f=>f?new Date(f*1e3).toLocaleString("zh-CN"):"-",x=f=>d.get(f)||f;return e.jsx($s,{open:i,onOpenChange:c,children:e.jsxs(Bs,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Hs,{children:[e.jsx(qs,{children:"表达方式详情"}),e.jsx(Is,{children:"查看表达方式的完整信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(rr,{label:"情境",value:n.situation}),e.jsx(rr,{label:"风格",value:n.style}),e.jsx(rr,{label:"聊天",value:x(n.chat_id)}),e.jsx(rr,{icon:ri,label:"记录ID",value:n.id.toString(),mono:!0})]}),e.jsx("div",{className:"grid grid-cols-2 gap-4",children:e.jsx(rr,{icon:li,label:"创建时间",value:h(n.create_date)})})]}),e.jsx(at,{children:e.jsx(N,{onClick:()=>c(!1),children:"关闭"})})]})})}function rr({icon:n,label:i,value:c,mono:d=!1}){return e.jsxs("div",{className:"space-y-1",children:[e.jsxs(b,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[n&&e.jsx(n,{className:"h-3 w-3"}),i]}),e.jsx("div",{className:$("text-sm",d&&"font-mono",!c&&"text-muted-foreground"),children:c||"-"})]})}function Jw({open:n,onOpenChange:i,chatList:c,onSuccess:d}){const[h,x]=u.useState({situation:"",style:"",chat_id:""}),[f,j]=u.useState(!1),{toast:p}=Gs(),w=async()=>{if(!h.situation||!h.style||!h.chat_id){p({title:"验证失败",description:"请填写必填字段:情境、风格和聊天",variant:"destructive"});return}try{j(!0),await Vw(h),p({title:"创建成功",description:"表达方式已创建"}),x({situation:"",style:"",chat_id:""}),d()}catch(v){p({title:"创建失败",description:v instanceof Error?v.message:"无法创建表达方式",variant:"destructive"})}finally{j(!1)}};return e.jsx($s,{open:n,onOpenChange:i,children:e.jsxs(Bs,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Hs,{children:[e.jsx(qs,{children:"新增表达方式"}),e.jsx(Is,{children:"创建新的表达方式记录"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"situation",children:["情境 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(oe,{id:"situation",value:h.situation,onChange:v=>x({...h,situation:v.target.value}),placeholder:"描述使用场景"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"style",children:["风格 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(oe,{id:"style",value:h.style,onChange:v=>x({...h,style:v.target.value}),placeholder:"描述表达风格"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"chat_id",children:["聊天 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsxs(He,{value:h.chat_id,onValueChange:v=>x({...h,chat_id:v}),children:[e.jsx(Le,{children:e.jsx(qe,{placeholder:"选择关联的聊天"})}),e.jsx(Ue,{children:c.map(v=>e.jsx(le,{value:v.chat_id,children:e.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[v.chat_name,v.is_group&&e.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},v.chat_id))})]})]})]}),e.jsxs(at,{children:[e.jsx(N,{variant:"outline",onClick:()=>i(!1),children:"取消"}),e.jsx(N,{onClick:w,disabled:f,children:f?"创建中...":"创建"})]})]})})}function Zw({expression:n,open:i,onOpenChange:c,chatList:d,onSuccess:h}){const[x,f]=u.useState({}),[j,p]=u.useState(!1),{toast:w}=Gs();u.useEffect(()=>{n&&f({situation:n.situation,style:n.style,chat_id:n.chat_id})},[n]);const v=async()=>{if(n)try{p(!0),await Fw(n.id,x),w({title:"保存成功",description:"表达方式已更新"}),h()}catch(y){w({title:"保存失败",description:y instanceof Error?y.message:"无法更新表达方式",variant:"destructive"})}finally{p(!1)}};return n?e.jsx($s,{open:i,onOpenChange:c,children:e.jsxs(Bs,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Hs,{children:[e.jsx(qs,{children:"编辑表达方式"}),e.jsx(Is,{children:"修改表达方式的信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit_situation",children:"情境"}),e.jsx(oe,{id:"edit_situation",value:x.situation||"",onChange:y=>f({...x,situation:y.target.value}),placeholder:"描述使用场景"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit_style",children:"风格"}),e.jsx(oe,{id:"edit_style",value:x.style||"",onChange:y=>f({...x,style:y.target.value}),placeholder:"描述表达风格"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit_chat_id",children:"聊天"}),e.jsxs(He,{value:x.chat_id||"",onValueChange:y=>f({...x,chat_id:y}),children:[e.jsx(Le,{children:e.jsx(qe,{placeholder:"选择关联的聊天"})}),e.jsx(Ue,{children:d.map(y=>e.jsx(le,{value:y.chat_id,children:e.jsxs("span",{className:"truncate",style:{wordBreak:"keep-all"},children:[y.chat_name,y.is_group&&e.jsx("span",{className:"text-muted-foreground ml-1",children:"(群聊)"})]})},y.chat_id))})]})]})]}),e.jsxs(at,{children:[e.jsx(N,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(N,{onClick:v,disabled:j,children:j?"保存中...":"保存"})]})]})}):null}function Iw({open:n,onOpenChange:i,onConfirm:c,count:d}){return e.jsx(ps,{open:n,onOpenChange:i,children:e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认批量删除"}),e.jsxs(ds,{children:["您即将删除 ",d," 个表达方式,此操作无法撤销。确定要继续吗?"]})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:c,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认删除"})]})]})})}const ml="/api/webui/jargon";async function Pw(){const n=await Te(`${ml}/chats`,{});if(!n.ok){const i=await n.json();throw new Error(i.detail||"获取聊天列表失败")}return n.json()}async function Ww(n){const i=new URLSearchParams;n.page&&i.append("page",n.page.toString()),n.page_size&&i.append("page_size",n.page_size.toString()),n.search&&i.append("search",n.search),n.chat_id&&i.append("chat_id",n.chat_id),n.is_jargon!==void 0&&n.is_jargon!==null&&i.append("is_jargon",n.is_jargon.toString()),n.is_global!==void 0&&i.append("is_global",n.is_global.toString());const c=await Te(`${ml}/list?${i}`,{});if(!c.ok){const d=await c.json();throw new Error(d.detail||"获取黑话列表失败")}return c.json()}async function e1(n){const i=await Te(`${ml}/${n}`,{});if(!i.ok){const c=await i.json();throw new Error(c.detail||"获取黑话详情失败")}return i.json()}async function s1(n){const i=await Te(`${ml}/`,{method:"POST",body:JSON.stringify(n)});if(!i.ok){const c=await i.json();throw new Error(c.detail||"创建黑话失败")}return i.json()}async function t1(n,i){const c=await Te(`${ml}/${n}`,{method:"PATCH",body:JSON.stringify(i)});if(!c.ok){const d=await c.json();throw new Error(d.detail||"更新黑话失败")}return c.json()}async function a1(n){const i=await Te(`${ml}/${n}`,{method:"DELETE"});if(!i.ok){const c=await i.json();throw new Error(c.detail||"删除黑话失败")}return i.json()}async function l1(n){const i=await Te(`${ml}/batch/delete`,{method:"POST",body:JSON.stringify({ids:n})});if(!i.ok){const c=await i.json();throw new Error(c.detail||"批量删除黑话失败")}return i.json()}async function n1(){const n=await Te(`${ml}/stats/summary`,{});if(!n.ok){const i=await n.json();throw new Error(i.detail||"获取黑话统计失败")}return n.json()}async function i1(n,i){const c=new URLSearchParams;n.forEach(h=>c.append("ids",h.toString())),c.append("is_jargon",i.toString());const d=await Te(`${ml}/batch/set-jargon?${c}`,{method:"POST"});if(!d.ok){const h=await d.json();throw new Error(h.detail||"批量设置黑话状态失败")}return d.json()}function r1(){const[n,i]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(0),[f,j]=u.useState(1),[p,w]=u.useState(20),[v,y]=u.useState(""),[S,C]=u.useState("all"),[M,F]=u.useState("all"),[U,O]=u.useState(null),[K,H]=u.useState(!1),[A,V]=u.useState(!1),[Q,T]=u.useState(!1),[D,ne]=u.useState(null),[xe,_e]=u.useState(new Set),[Se,ge]=u.useState(!1),[ye,be]=u.useState(""),[z,X]=u.useState({total:0,confirmed_jargon:0,confirmed_not_jargon:0,pending:0,global_count:0,complete_count:0,chat_count:0,top_chats:{}}),[k,se]=u.useState([]),{toast:_}=Gs(),ue=async()=>{try{d(!0);const re=await Ww({page:f,page_size:p,search:v||void 0,chat_id:S==="all"?void 0:S,is_jargon:M==="all"?void 0:M==="true"?!0:M==="false"?!1:void 0});i(re.data),x(re.total)}catch(re){_({title:"加载失败",description:re instanceof Error?re.message:"无法加载黑话列表",variant:"destructive"})}finally{d(!1)}},ie=async()=>{try{const re=await n1();re?.data&&X(re.data)}catch(re){console.error("加载统计数据失败:",re)}},ae=async()=>{try{const re=await Pw();re?.data&&se(re.data)}catch(re){console.error("加载聊天列表失败:",re)}};u.useEffect(()=>{ue(),ie(),ae()},[f,p,v,S,M]);const fe=async re=>{try{const De=await e1(re.id);O(De.data),H(!0)}catch(De){_({title:"加载详情失败",description:De instanceof Error?De.message:"无法加载黑话详情",variant:"destructive"})}},Ne=re=>{O(re),V(!0)},me=async re=>{try{await a1(re.id),_({title:"删除成功",description:`已删除黑话: ${re.content}`}),ne(null),ue(),ie()}catch(De){_({title:"删除失败",description:De instanceof Error?De.message:"无法删除黑话",variant:"destructive"})}},G=re=>{const De=new Set(xe);De.has(re)?De.delete(re):De.add(re),_e(De)},P=()=>{xe.size===n.length&&n.length>0?_e(new Set):_e(new Set(n.map(re=>re.id)))},B=async()=>{try{await l1(Array.from(xe)),_({title:"批量删除成功",description:`已删除 ${xe.size} 个黑话`}),_e(new Set),ge(!1),ue(),ie()}catch(re){_({title:"批量删除失败",description:re instanceof Error?re.message:"无法批量删除黑话",variant:"destructive"})}},W=async re=>{try{await i1(Array.from(xe),re),_({title:"操作成功",description:`已将 ${xe.size} 个词条设为${re?"黑话":"非黑话"}`}),_e(new Set),ue(),ie()}catch(De){_({title:"操作失败",description:De instanceof Error?De.message:"批量设置失败",variant:"destructive"})}},Ce=()=>{const re=parseInt(ye),De=Math.ceil(h/p);re>=1&&re<=De?(j(re),be("")):_({title:"无效的页码",description:`请输入1-${De}之间的页码`,variant:"destructive"})},Me=re=>re===!0?e.jsxs(Ye,{variant:"default",className:"bg-green-600 hover:bg-green-700",children:[e.jsx(sa,{className:"h-3 w-3 mr-1"}),"是黑话"]}):re===!1?e.jsxs(Ye,{variant:"secondary",children:[e.jsx(dl,{className:"h-3 w-3 mr-1"}),"非黑话"]}):e.jsxs(Ye,{variant:"outline",children:[e.jsx(og,{className:"h-3 w-3 mr-1"}),"未判定"]});return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsx("div",{className:"mb-4 sm:mb-6",children:e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[e.jsx(Cb,{className:"h-8 w-8",strokeWidth:2}),"黑话管理"]}),e.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦学习到的黑话和俚语"})]}),e.jsxs(N,{onClick:()=>T(!0),className:"gap-2",children:[e.jsx(xt,{className:"h-4 w-4"}),"新增黑话"]})]})}),e.jsx(ss,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 lg:grid-cols-7 gap-3",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:[e.jsx("div",{className:"text-xs sm:text-sm text-muted-foreground",children:"总数量"}),e.jsx("div",{className:"text-xl sm:text-2xl font-bold mt-1",children:z.total})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:[e.jsx("div",{className:"text-xs sm:text-sm text-muted-foreground",children:"已确认黑话"}),e.jsx("div",{className:"text-xl sm:text-2xl font-bold mt-1 text-green-600",children:z.confirmed_jargon})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:[e.jsx("div",{className:"text-xs sm:text-sm text-muted-foreground",children:"确认非黑话"}),e.jsx("div",{className:"text-xl sm:text-2xl font-bold mt-1 text-gray-500",children:z.confirmed_not_jargon})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:[e.jsx("div",{className:"text-xs sm:text-sm text-muted-foreground",children:"待判定"}),e.jsx("div",{className:"text-xl sm:text-2xl font-bold mt-1 text-yellow-600",children:z.pending})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:[e.jsx("div",{className:"text-xs sm:text-sm text-muted-foreground",children:"全局黑话"}),e.jsx("div",{className:"text-xl sm:text-2xl font-bold mt-1 text-blue-600",children:z.global_count})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:[e.jsx("div",{className:"text-xs sm:text-sm text-muted-foreground",children:"推断完成"}),e.jsx("div",{className:"text-xl sm:text-2xl font-bold mt-1 text-purple-600",children:z.complete_count})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:[e.jsx("div",{className:"text-xs sm:text-sm text-muted-foreground",children:"关联聊天数"}),e.jsx("div",{className:"text-xl sm:text-2xl font-bold mt-1",children:z.chat_count})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(b,{htmlFor:"search",children:"搜索"}),e.jsxs("div",{className:"relative",children:[e.jsx(zt,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(oe,{id:"search",placeholder:"搜索内容、含义...",value:v,onChange:re=>y(re.target.value),className:"pl-9"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(b,{children:"聊天筛选"}),e.jsxs(He,{value:S,onValueChange:C,children:[e.jsx(Le,{children:e.jsx(qe,{placeholder:"全部聊天"})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"all",children:"全部聊天"}),k.map(re=>e.jsx(le,{value:re.chat_id,children:re.chat_name},re.chat_id))]})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(b,{children:"状态筛选"}),e.jsxs(He,{value:M,onValueChange:F,children:[e.jsx(Le,{children:e.jsx(qe,{placeholder:"全部状态"})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"all",children:"全部状态"}),e.jsx(le,{value:"true",children:"是黑话"}),e.jsx(le,{value:"false",children:"非黑话"}),e.jsx(le,{value:"null",children:"未判定"})]})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(b,{htmlFor:"page-size",children:"每页显示"}),e.jsxs(He,{value:p.toString(),onValueChange:re=>{w(parseInt(re)),j(1),_e(new Set)},children:[e.jsx(Le,{id:"page-size",children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"10",children:"10"}),e.jsx(le,{value:"20",children:"20"}),e.jsx(le,{value:"50",children:"50"}),e.jsx(le,{value:"100",children:"100"})]})]})]})]}),xe.size>0&&e.jsxs("div",{className:"flex flex-wrap items-center gap-2 mt-4 pt-4 border-t",children:[e.jsxs("span",{className:"text-sm text-muted-foreground",children:["已选择 ",xe.size," 个"]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>W(!0),children:[e.jsx(sa,{className:"h-4 w-4 mr-1"}),"标记为黑话"]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>W(!1),children:[e.jsx(dl,{className:"h-4 w-4 mr-1"}),"标记为非黑话"]}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>_e(new Set),children:"取消选择"}),e.jsxs(N,{variant:"destructive",size:"sm",onClick:()=>ge(!0),children:[e.jsx(ls,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card",children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(hn,{children:[e.jsx(xn,{children:e.jsxs(ot,{children:[e.jsx(Ie,{className:"w-12",children:e.jsx(jt,{checked:xe.size===n.length&&n.length>0,onCheckedChange:P})}),e.jsx(Ie,{children:"内容"}),e.jsx(Ie,{children:"含义"}),e.jsx(Ie,{children:"聊天"}),e.jsx(Ie,{children:"状态"}),e.jsx(Ie,{className:"text-center",children:"次数"}),e.jsx(Ie,{className:"text-right",children:"操作"})]})}),e.jsx(fn,{children:c?e.jsx(ot,{children:e.jsx(Fe,{colSpan:7,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):n.length===0?e.jsx(ot,{children:e.jsx(Fe,{colSpan:7,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):n.map(re=>e.jsxs(ot,{children:[e.jsx(Fe,{children:e.jsx(jt,{checked:xe.has(re.id),onCheckedChange:()=>G(re.id)})}),e.jsx(Fe,{className:"font-medium max-w-[200px]",children:e.jsxs("div",{className:"flex items-center gap-2",children:[re.is_global&&e.jsx("span",{title:"全局黑话",children:e.jsx(Du,{className:"h-4 w-4 text-blue-500 flex-shrink-0"})}),e.jsx("span",{className:"truncate",title:re.content,children:re.content})]})}),e.jsx(Fe,{className:"max-w-[200px] truncate",title:re.meaning||"",children:re.meaning||e.jsx("span",{className:"text-muted-foreground",children:"-"})}),e.jsx(Fe,{className:"max-w-[150px] truncate",title:re.chat_name||re.chat_id,children:re.chat_name||re.chat_id}),e.jsx(Fe,{children:Me(re.is_jargon)}),e.jsx(Fe,{className:"text-center",children:re.count}),e.jsx(Fe,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(N,{variant:"default",size:"sm",onClick:()=>Ne(re),children:[e.jsx(mn,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsx(N,{variant:"outline",size:"icon",className:"h-8 w-8",onClick:()=>fe(re),title:"查看详情",children:e.jsx(Dt,{className:"h-4 w-4"})}),e.jsxs(N,{size:"sm",onClick:()=>ne(re),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(ls,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},re.id))})]})}),e.jsx("div",{className:"md:hidden space-y-3 p-4",children:c?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):n.length===0?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):n.map(re=>e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(jt,{checked:xe.has(re.id),onCheckedChange:()=>G(re.id),className:"mt-1"}),e.jsxs("div",{className:"min-w-0 flex-1 space-y-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[re.is_global&&e.jsx(Du,{className:"h-4 w-4 text-blue-500 flex-shrink-0"}),e.jsx("h3",{className:"font-semibold text-sm break-all",children:re.content})]}),re.meaning&&e.jsx("p",{className:"text-sm text-muted-foreground break-all",children:re.meaning}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-xs",children:[Me(re.is_jargon),e.jsxs("span",{className:"text-muted-foreground",children:["次数: ",re.count]})]}),e.jsxs("div",{className:"text-xs text-muted-foreground truncate",children:["聊天: ",re.chat_name||re.chat_id]})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t",children:[e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>Ne(re),className:"text-xs px-2 py-1 h-auto",children:[e.jsx(mn,{className:"h-3 w-3 mr-1"}),"编辑"]}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>fe(re),className:"text-xs px-2 py-1 h-auto",children:e.jsx(Dt,{className:"h-3 w-3"})}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>ne(re),className:"text-xs px-2 py-1 h-auto text-destructive hover:text-destructive",children:[e.jsx(ls,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},re.id))}),h>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",h," 条记录,第 ",f," / ",Math.ceil(h/p)," 页"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(di,{className:"h-4 w-4"})}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>j(f-1),disabled:f===1,children:[e.jsx(Hl,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(oe,{type:"number",value:ye,onChange:re=>be(re.target.value),onKeyDown:re=>re.key==="Enter"&&Ce(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(h/p)}),e.jsx(N,{variant:"outline",size:"sm",onClick:Ce,disabled:!ye,className:"h-8",children:"跳转"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>j(f+1),disabled:f>=Math.ceil(h/p),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(ul,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(h/p)),disabled:f>=Math.ceil(h/p),className:"hidden sm:flex",children:e.jsx(ui,{className:"h-4 w-4"})})]})]})]})]})}),e.jsx(c1,{jargon:U,open:K,onOpenChange:H}),e.jsx(o1,{open:Q,onOpenChange:T,chatList:k,onSuccess:()=>{ue(),ie(),T(!1)}}),e.jsx(d1,{jargon:U,open:A,onOpenChange:V,chatList:k,onSuccess:()=>{ue(),ie(),V(!1)}}),e.jsx(ps,{open:!!D,onOpenChange:()=>ne(null),children:e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认删除"}),e.jsxs(ds,{children:['确定要删除黑话 "',D?.content,'" 吗?此操作不可撤销。']})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:()=>D&&me(D),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),e.jsx(ps,{open:Se,onOpenChange:ge,children:e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认批量删除"}),e.jsxs(ds,{children:["您即将删除 ",xe.size," 个黑话,此操作无法撤销。确定要继续吗?"]})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:B,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认删除"})]})]})})]})}function c1({jargon:n,open:i,onOpenChange:c}){return n?e.jsx($s,{open:i,onOpenChange:c,children:e.jsxs(Bs,{className:"max-w-2xl max-h-[80vh] grid grid-rows-[auto_1fr_auto] overflow-hidden",children:[e.jsxs(Hs,{children:[e.jsx(qs,{children:"黑话详情"}),e.jsx(Is,{children:"查看黑话的完整信息"})]}),e.jsx(ss,{className:"h-full pr-4",children:e.jsxs("div",{className:"space-y-4 pb-2",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(Au,{icon:ri,label:"记录ID",value:n.id.toString(),mono:!0}),e.jsx(Au,{label:"使用次数",value:n.count.toString()})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{className:"text-xs text-muted-foreground",children:"内容"}),e.jsx("div",{className:"text-sm p-2 bg-muted rounded break-all whitespace-pre-wrap",children:n.content})]}),n.raw_content&&e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{className:"text-xs text-muted-foreground",children:"原始内容"}),e.jsx("div",{className:"text-sm p-2 bg-muted rounded break-all",children:(()=>{try{const d=JSON.parse(n.raw_content);return Array.isArray(d)?d.map((h,x)=>e.jsxs("div",{children:[x>0&&e.jsx("hr",{className:"my-3 border-border"}),e.jsx("div",{className:"whitespace-pre-wrap",children:h})]},x)):e.jsx("div",{className:"whitespace-pre-wrap",children:n.raw_content})}catch{return e.jsx("div",{className:"whitespace-pre-wrap",children:n.raw_content})}})()})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{className:"text-xs text-muted-foreground",children:"含义"}),e.jsx("div",{className:"text-sm p-2 bg-muted rounded break-all whitespace-pre-wrap",children:n.meaning||"-"})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(Au,{label:"聊天",value:n.chat_name||n.chat_id}),e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{className:"text-xs text-muted-foreground",children:"状态"}),e.jsxs("div",{className:"flex items-center gap-2",children:[n.is_jargon===!0&&e.jsx(Ye,{variant:"default",className:"bg-green-600",children:"是黑话"}),n.is_jargon===!1&&e.jsx(Ye,{variant:"secondary",children:"非黑话"}),n.is_jargon===null&&e.jsx(Ye,{variant:"outline",children:"未判定"}),n.is_global&&e.jsx(Ye,{variant:"outline",className:"border-blue-500 text-blue-500",children:"全局"}),n.is_complete&&e.jsx(Ye,{variant:"outline",className:"border-purple-500 text-purple-500",children:"推断完成"})]})]})]}),n.inference_with_context&&e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{className:"text-xs text-muted-foreground",children:"上下文推断结果"}),e.jsx("div",{className:"p-2 bg-muted rounded break-all whitespace-pre-wrap font-mono text-xs max-h-[200px] overflow-y-auto",children:n.inference_with_context})]}),n.inference_content_only&&e.jsxs("div",{className:"space-y-1",children:[e.jsx(b,{className:"text-xs text-muted-foreground",children:"纯词条推断结果"}),e.jsx("div",{className:"p-2 bg-muted rounded break-all whitespace-pre-wrap font-mono text-xs max-h-[200px] overflow-y-auto",children:n.inference_content_only})]})]})}),e.jsx(at,{className:"flex-shrink-0",children:e.jsx(N,{onClick:()=>c(!1),children:"关闭"})})]})}):null}function Au({icon:n,label:i,value:c,mono:d=!1}){return e.jsxs("div",{className:"space-y-1",children:[e.jsxs(b,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[n&&e.jsx(n,{className:"h-3 w-3"}),i]}),e.jsx("div",{className:$("text-sm",d&&"font-mono",!c&&"text-muted-foreground"),children:c||"-"})]})}function o1({open:n,onOpenChange:i,chatList:c,onSuccess:d}){const[h,x]=u.useState({content:"",meaning:"",chat_id:"",is_global:!1}),[f,j]=u.useState(!1),{toast:p}=Gs(),w=async()=>{if(!h.content||!h.chat_id){p({title:"验证失败",description:"请填写必填字段:内容和聊天",variant:"destructive"});return}try{j(!0),await s1(h),p({title:"创建成功",description:"黑话已创建"}),x({content:"",meaning:"",chat_id:"",is_global:!1}),d()}catch(v){p({title:"创建失败",description:v instanceof Error?v.message:"无法创建黑话",variant:"destructive"})}finally{j(!1)}};return e.jsx($s,{open:n,onOpenChange:i,children:e.jsxs(Bs,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Hs,{children:[e.jsx(qs,{children:"新增黑话"}),e.jsx(Is,{children:"创建新的黑话记录"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"content",children:["内容 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsx(oe,{id:"content",value:h.content,onChange:v=>x({...h,content:v.target.value}),placeholder:"输入黑话内容"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"meaning",children:"含义"}),e.jsx(Fs,{id:"meaning",value:h.meaning||"",onChange:v=>x({...h,meaning:v.target.value}),placeholder:"输入黑话含义(可选)",rows:3})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{htmlFor:"chat_id",children:["聊天 ",e.jsx("span",{className:"text-destructive",children:"*"})]}),e.jsxs(He,{value:h.chat_id,onValueChange:v=>x({...h,chat_id:v}),children:[e.jsx(Le,{children:e.jsx(qe,{placeholder:"选择关联的聊天"})}),e.jsx(Ue,{children:c.map(v=>e.jsx(le,{value:v.chat_id,children:v.chat_name},v.chat_id))})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Xe,{id:"is_global",checked:h.is_global,onCheckedChange:v=>x({...h,is_global:v})}),e.jsx(b,{htmlFor:"is_global",children:"设为全局黑话"})]})]}),e.jsxs(at,{children:[e.jsx(N,{variant:"outline",onClick:()=>i(!1),children:"取消"}),e.jsx(N,{onClick:w,disabled:f,children:f?"创建中...":"创建"})]})]})})}function d1({jargon:n,open:i,onOpenChange:c,chatList:d,onSuccess:h}){const[x,f]=u.useState({}),[j,p]=u.useState(!1),{toast:w}=Gs();u.useEffect(()=>{n&&f({content:n.content,meaning:n.meaning||"",chat_id:n.stream_id||n.chat_id,is_global:n.is_global,is_jargon:n.is_jargon})},[n]);const v=async()=>{if(n)try{p(!0),await t1(n.id,x),w({title:"保存成功",description:"黑话已更新"}),h()}catch(y){w({title:"保存失败",description:y instanceof Error?y.message:"无法更新黑话",variant:"destructive"})}finally{p(!1)}};return n?e.jsx($s,{open:i,onOpenChange:c,children:e.jsxs(Bs,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Hs,{children:[e.jsx(qs,{children:"编辑黑话"}),e.jsx(Is,{children:"修改黑话的信息"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit_content",children:"内容"}),e.jsx(oe,{id:"edit_content",value:x.content||"",onChange:y=>f({...x,content:y.target.value}),placeholder:"输入黑话内容"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit_meaning",children:"含义"}),e.jsx(Fs,{id:"edit_meaning",value:x.meaning||"",onChange:y=>f({...x,meaning:y.target.value}),placeholder:"输入黑话含义",rows:3})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit_chat_id",children:"聊天"}),e.jsxs(He,{value:x.chat_id||"",onValueChange:y=>f({...x,chat_id:y}),children:[e.jsx(Le,{children:e.jsx(qe,{placeholder:"选择关联的聊天"})}),e.jsx(Ue,{children:d.map(y=>e.jsx(le,{value:y.chat_id,children:y.chat_name},y.chat_id))})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"黑话状态"}),e.jsxs(He,{value:x.is_jargon===null?"null":x.is_jargon?.toString()||"null",onValueChange:y=>f({...x,is_jargon:y==="null"?null:y==="true"}),children:[e.jsx(Le,{children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"null",children:"未判定"}),e.jsx(le,{value:"true",children:"是黑话"}),e.jsx(le,{value:"false",children:"非黑话"})]})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Xe,{id:"edit_is_global",checked:x.is_global,onCheckedChange:y=>f({...x,is_global:y})}),e.jsx(b,{htmlFor:"edit_is_global",children:"全局黑话"})]})]}),e.jsxs(at,{children:[e.jsx(N,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(N,{onClick:v,disabled:j,children:j?"保存中...":"保存"})]})]})}):null}const mi="/api/webui/person";async function u1(n){const i=new URLSearchParams;n.page&&i.append("page",n.page.toString()),n.page_size&&i.append("page_size",n.page_size.toString()),n.search&&i.append("search",n.search),n.is_known!==void 0&&i.append("is_known",n.is_known.toString()),n.platform&&i.append("platform",n.platform);const c=await Te(`${mi}/list?${i}`,{headers:Ls()});if(!c.ok){const d=await c.json();throw new Error(d.detail||"获取人物列表失败")}return c.json()}async function m1(n){const i=await Te(`${mi}/${n}`,{headers:Ls()});if(!i.ok){const c=await i.json();throw new Error(c.detail||"获取人物详情失败")}return i.json()}async function h1(n,i){const c=await Te(`${mi}/${n}`,{method:"PATCH",headers:Ls(),body:JSON.stringify(i)});if(!c.ok){const d=await c.json();throw new Error(d.detail||"更新人物信息失败")}return c.json()}async function x1(n){const i=await Te(`${mi}/${n}`,{method:"DELETE",headers:Ls()});if(!i.ok){const c=await i.json();throw new Error(c.detail||"删除人物信息失败")}return i.json()}async function f1(){const n=await Te(`${mi}/stats/summary`,{headers:Ls()});if(!n.ok){const i=await n.json();throw new Error(i.detail||"获取统计数据失败")}return n.json()}async function p1(n){const i=await Te(`${mi}/batch/delete`,{method:"POST",headers:Ls(),body:JSON.stringify({person_ids:n})});if(!i.ok){const c=await i.json();throw new Error(c.detail||"批量删除失败")}return i.json()}function g1(){const[n,i]=u.useState([]),[c,d]=u.useState(!0),[h,x]=u.useState(0),[f,j]=u.useState(1),[p,w]=u.useState(20),[v,y]=u.useState(""),[S,C]=u.useState(void 0),[M,F]=u.useState(void 0),[U,O]=u.useState(null),[K,H]=u.useState(!1),[A,V]=u.useState(!1),[Q,T]=u.useState(null),[D,ne]=u.useState({total:0,known:0,unknown:0,platforms:{}}),[xe,_e]=u.useState(new Set),[Se,ge]=u.useState(!1),[ye,be]=u.useState(""),{toast:z}=Gs(),X=async()=>{try{d(!0);const B=await u1({page:f,page_size:p,search:v||void 0,is_known:S,platform:M});i(B.data),x(B.total)}catch(B){z({title:"加载失败",description:B instanceof Error?B.message:"无法加载人物信息",variant:"destructive"})}finally{d(!1)}},k=async()=>{try{const B=await f1();B?.data&&ne(B.data)}catch(B){console.error("加载统计数据失败:",B)}};u.useEffect(()=>{X(),k()},[f,p,v,S,M]);const se=async B=>{try{const W=await m1(B.person_id);O(W.data),H(!0)}catch(W){z({title:"加载详情失败",description:W instanceof Error?W.message:"无法加载人物详情",variant:"destructive"})}},_=B=>{O(B),V(!0)},ue=async B=>{try{await x1(B.person_id),z({title:"删除成功",description:`已删除人物信息: ${B.person_name||B.nickname||B.user_id}`}),T(null),X(),k()}catch(W){z({title:"删除失败",description:W instanceof Error?W.message:"无法删除人物信息",variant:"destructive"})}},ie=u.useMemo(()=>Object.keys(D.platforms),[D.platforms]),ae=B=>{const W=new Set(xe);W.has(B)?W.delete(B):W.add(B),_e(W)},fe=()=>{xe.size===n.length&&n.length>0?_e(new Set):_e(new Set(n.map(B=>B.person_id)))},Ne=()=>{if(xe.size===0){z({title:"未选择任何人物",description:"请先选择要删除的人物",variant:"destructive"});return}ge(!0)},me=async()=>{try{const B=await p1(Array.from(xe));z({title:"批量删除完成",description:B.message}),_e(new Set),ge(!1),X(),k()}catch(B){z({title:"批量删除失败",description:B instanceof Error?B.message:"批量删除失败",variant:"destructive"})}},G=()=>{const B=parseInt(ye),W=Math.ceil(h/p);B>=1&&B<=W?(j(B),be("")):z({title:"无效的页码",description:`请输入1-${W}之间的页码`,variant:"destructive"})},P=B=>B?new Date(B*1e3).toLocaleString("zh-CN"):"-";return e.jsxs("div",{className:"h-[calc(100vh-4rem)] flex flex-col p-4 sm:p-6",children:[e.jsx("div",{className:"mb-4 sm:mb-6",children:e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl sm:text-3xl font-bold flex items-center gap-2",children:[e.jsx(Ou,{className:"h-8 w-8",strokeWidth:2}),"人物信息管理"]}),e.jsx("p",{className:"text-muted-foreground mt-1 text-sm sm:text-base",children:"管理麦麦认识的所有人物信息"})]})})}),e.jsx(ss,{className:"flex-1",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 pr-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"总人数"}),e.jsx("div",{className:"text-2xl font-bold mt-1",children:D.total})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"已认识"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-green-600",children:D.known})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsx("div",{className:"text-sm text-muted-foreground",children:"未认识"}),e.jsx("div",{className:"text-2xl font-bold mt-1 text-muted-foreground",children:D.unknown})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4",children:[e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-4 gap-4",children:[e.jsxs("div",{className:"sm:col-span-2",children:[e.jsx(b,{htmlFor:"search",children:"搜索"}),e.jsxs("div",{className:"relative mt-1.5",children:[e.jsx(zt,{className:"absolute left-2.5 top-2.5 h-4 w-4 text-muted-foreground"}),e.jsx(oe,{id:"search",placeholder:"搜索名称、昵称或用户ID...",value:v,onChange:B=>y(B.target.value),className:"pl-9"})]})]}),e.jsxs("div",{children:[e.jsx(b,{htmlFor:"filter-known",children:"认识状态"}),e.jsxs(He,{value:S===void 0?"all":S.toString(),onValueChange:B=>{C(B==="all"?void 0:B==="true"),j(1)},children:[e.jsx(Le,{id:"filter-known",className:"mt-1.5",children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"all",children:"全部"}),e.jsx(le,{value:"true",children:"已认识"}),e.jsx(le,{value:"false",children:"未认识"})]})]})]}),e.jsxs("div",{children:[e.jsx(b,{htmlFor:"filter-platform",children:"平台"}),e.jsxs(He,{value:M||"all",onValueChange:B=>{F(B==="all"?void 0:B),j(1)},children:[e.jsx(Le,{id:"filter-platform",className:"mt-1.5",children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"all",children:"全部平台"}),ie.map(B=>e.jsxs(le,{value:B,children:[B," (",D.platforms[B],")"]},B))]})]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 mt-4 pt-4 border-t",children:[e.jsx("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:xe.size>0&&e.jsxs("span",{children:["已选择 ",xe.size," 个人物"]})}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(b,{htmlFor:"page-size",className:"text-sm whitespace-nowrap",children:"每页显示"}),e.jsxs(He,{value:p.toString(),onValueChange:B=>{w(parseInt(B)),j(1),_e(new Set)},children:[e.jsx(Le,{id:"page-size",className:"w-20",children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"10",children:"10"}),e.jsx(le,{value:"20",children:"20"}),e.jsx(le,{value:"50",children:"50"}),e.jsx(le,{value:"100",children:"100"})]})]}),xe.size>0&&e.jsxs(e.Fragment,{children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>_e(new Set),children:"取消选择"}),e.jsxs(N,{variant:"destructive",size:"sm",onClick:Ne,children:[e.jsx(ls,{className:"h-4 w-4 mr-1"}),"批量删除"]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card",children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(hn,{children:[e.jsx(xn,{children:e.jsxs(ot,{children:[e.jsx(Ie,{className:"w-12",children:e.jsx(jt,{checked:n.length>0&&xe.size===n.length,onCheckedChange:fe,"aria-label":"全选"})}),e.jsx(Ie,{children:"状态"}),e.jsx(Ie,{children:"名称"}),e.jsx(Ie,{children:"昵称"}),e.jsx(Ie,{children:"平台"}),e.jsx(Ie,{children:"用户ID"}),e.jsx(Ie,{children:"最后更新"}),e.jsx(Ie,{className:"text-right",children:"操作"})]})}),e.jsx(fn,{children:c?e.jsx(ot,{children:e.jsx(Fe,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"加载中..."})}):n.length===0?e.jsx(ot,{children:e.jsx(Fe,{colSpan:8,className:"text-center py-8 text-muted-foreground",children:"暂无数据"})}):n.map(B=>e.jsxs(ot,{children:[e.jsx(Fe,{children:e.jsx(jt,{checked:xe.has(B.person_id),onCheckedChange:()=>ae(B.person_id),"aria-label":`选择 ${B.person_name||B.nickname||B.user_id}`})}),e.jsx(Fe,{children:e.jsx("div",{className:$("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium",B.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:B.is_known?"已认识":"未认识"})}),e.jsx(Fe,{className:"font-medium",children:B.person_name||e.jsx("span",{className:"text-muted-foreground",children:"-"})}),e.jsx(Fe,{children:B.nickname||"-"}),e.jsx(Fe,{children:B.platform}),e.jsx(Fe,{className:"font-mono text-sm",children:B.user_id}),e.jsx(Fe,{className:"text-sm text-muted-foreground",children:P(B.last_know)}),e.jsx(Fe,{className:"text-right",children:e.jsxs("div",{className:"flex justify-end gap-2",children:[e.jsxs(N,{variant:"default",size:"sm",onClick:()=>se(B),children:[e.jsx(Dt,{className:"h-4 w-4 mr-1"}),"详情"]}),e.jsxs(N,{variant:"default",size:"sm",onClick:()=>_(B),children:[e.jsx(mn,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsxs(N,{size:"sm",onClick:()=>T(B),className:"bg-red-600 hover:bg-red-700 text-white",children:[e.jsx(ls,{className:"h-4 w-4 mr-1"}),"删除"]})]})})]},B.id))})]})}),e.jsx("div",{className:"md:hidden space-y-3 p-4",children:c?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"加载中..."}):n.length===0?e.jsx("div",{className:"text-center py-8 text-muted-foreground",children:"暂无数据"}):n.map(B=>e.jsxs("div",{className:"rounded-lg border bg-card p-4 space-y-3 overflow-hidden",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(jt,{checked:xe.has(B.person_id),onCheckedChange:()=>ae(B.person_id),className:"mt-1"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:$("inline-flex items-center gap-1 px-2 py-1 rounded-full text-xs font-medium mb-2",B.is_known?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-gray-100 text-gray-700 dark:bg-gray-800 dark:text-gray-400"),children:B.is_known?"已认识":"未认识"}),e.jsx("h3",{className:"font-semibold text-sm line-clamp-1 w-full break-all",children:B.person_name||e.jsx("span",{className:"text-muted-foreground",children:"未命名"})}),B.nickname&&e.jsxs("p",{className:"text-xs text-muted-foreground mt-1 line-clamp-1 w-full break-all",children:["昵称: ",B.nickname]})]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"平台"}),e.jsx("p",{className:"font-medium text-xs",children:B.platform})]}),e.jsxs("div",{children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"用户ID"}),e.jsx("p",{className:"font-mono text-xs truncate",title:B.user_id,children:B.user_id})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"最后更新"}),e.jsx("p",{className:"text-xs",children:P(B.last_know)})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-1 pt-2 border-t overflow-hidden",children:[e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>se(B),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(Dt,{className:"h-3 w-3 mr-1"}),"查看"]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>_(B),className:"text-xs px-2 py-1 h-auto flex-shrink-0",children:[e.jsx(mn,{className:"h-3 w-3 mr-1"}),"编辑"]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>T(B),className:"text-xs px-2 py-1 h-auto flex-shrink-0 text-destructive hover:text-destructive",children:[e.jsx(ls,{className:"h-3 w-3 mr-1"}),"删除"]})]})]},B.id))}),h>0&&e.jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-between gap-4 px-4 py-3 border-t",children:[e.jsxs("div",{className:"text-sm text-muted-foreground",children:["共 ",h," 条记录,第 ",f," / ",Math.ceil(h/p)," 页"]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>j(1),disabled:f===1,className:"hidden sm:flex",children:e.jsx(di,{className:"h-4 w-4"})}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>j(f-1),disabled:f===1,children:[e.jsx(Hl,{className:"h-4 w-4 sm:mr-1"}),e.jsx("span",{className:"hidden sm:inline",children:"上一页"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(oe,{type:"number",value:ye,onChange:B=>be(B.target.value),onKeyDown:B=>B.key==="Enter"&&G(),placeholder:f.toString(),className:"w-16 h-8 text-center",min:1,max:Math.ceil(h/p)}),e.jsx(N,{variant:"outline",size:"sm",onClick:G,disabled:!ye,className:"h-8",children:"跳转"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>j(f+1),disabled:f>=Math.ceil(h/p),children:[e.jsx("span",{className:"hidden sm:inline",children:"下一页"}),e.jsx(ul,{className:"h-4 w-4 sm:ml-1"})]}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>j(Math.ceil(h/p)),disabled:f>=Math.ceil(h/p),className:"hidden sm:flex",children:e.jsx(ui,{className:"h-4 w-4"})})]})]})]})]})}),e.jsx(j1,{person:U,open:K,onOpenChange:H}),e.jsx(v1,{person:U,open:A,onOpenChange:V,onSuccess:()=>{X(),k(),V(!1)}}),e.jsx(ps,{open:!!Q,onOpenChange:()=>T(null),children:e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认删除"}),e.jsxs(ds,{children:['确定要删除人物信息 "',Q?.person_name||Q?.nickname||Q?.user_id,'" 吗? 此操作不可撤销。']})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:()=>Q&&ue(Q),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"删除"})]})]})}),e.jsx(ps,{open:Se,onOpenChange:ge,children:e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认批量删除"}),e.jsxs(ds,{children:["确定要删除选中的 ",xe.size," 个人物信息吗? 此操作不可撤销。"]})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:me,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"批量删除"})]})]})})]})}function j1({person:n,open:i,onOpenChange:c}){if(!n)return null;const d=h=>h?new Date(h*1e3).toLocaleString("zh-CN"):"-";return e.jsx($s,{open:i,onOpenChange:c,children:e.jsxs(Bs,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Hs,{children:[e.jsx(qs,{children:"人物详情"}),e.jsxs(Is,{children:["查看 ",n.person_name||n.nickname||n.user_id," 的完整信息"]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(nl,{icon:Wc,label:"人物名称",value:n.person_name}),e.jsx(nl,{icon:un,label:"昵称",value:n.nickname}),e.jsx(nl,{icon:ri,label:"用户ID",value:n.user_id,mono:!0}),e.jsx(nl,{icon:ri,label:"人物ID",value:n.person_id,mono:!0}),e.jsx(nl,{label:"平台",value:n.platform}),e.jsx(nl,{label:"状态",value:n.is_known?"已认识":"未认识"})]}),n.name_reason&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(b,{className:"text-xs text-muted-foreground",children:"名称设定原因"}),e.jsx("p",{className:"mt-1 text-sm",children:n.name_reason})]}),n.memory_points&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(b,{className:"text-xs text-muted-foreground",children:"个人印象"}),e.jsx("p",{className:"mt-1 text-sm whitespace-pre-wrap",children:n.memory_points})]}),n.group_nick_name&&n.group_nick_name.length>0&&e.jsxs("div",{className:"rounded-lg border bg-muted/50 p-3",children:[e.jsx(b,{className:"text-xs text-muted-foreground",children:"群昵称"}),e.jsx("div",{className:"mt-2 space-y-1",children:n.group_nick_name.map((h,x)=>e.jsxs("div",{className:"text-sm flex items-center gap-2",children:[e.jsx("span",{className:"font-mono text-xs text-muted-foreground",children:h.group_id}),e.jsx("span",{children:"→"}),e.jsx("span",{children:h.group_nick_name})]},x))})]}),e.jsxs("div",{className:"grid grid-cols-3 gap-4",children:[e.jsx(nl,{icon:li,label:"认识时间",value:d(n.know_times)}),e.jsx(nl,{icon:li,label:"首次记录",value:d(n.know_since)}),e.jsx(nl,{icon:li,label:"最后更新",value:d(n.last_know)})]})]}),e.jsx(at,{children:e.jsx(N,{onClick:()=>c(!1),children:"关闭"})})]})})}function nl({icon:n,label:i,value:c,mono:d=!1}){return e.jsxs("div",{className:"space-y-1",children:[e.jsxs(b,{className:"text-xs text-muted-foreground flex items-center gap-1",children:[n&&e.jsx(n,{className:"h-3 w-3"}),i]}),e.jsx("div",{className:$("text-sm",d&&"font-mono",!c&&"text-muted-foreground"),children:c||"-"})]})}function v1({person:n,open:i,onOpenChange:c,onSuccess:d}){const[h,x]=u.useState({}),[f,j]=u.useState(!1),{toast:p}=Gs();u.useEffect(()=>{n&&x({person_name:n.person_name||"",name_reason:n.name_reason||"",nickname:n.nickname||"",memory_points:n.memory_points||"",is_known:n.is_known})},[n]);const w=async()=>{if(n)try{j(!0),await h1(n.person_id,h),p({title:"保存成功",description:"人物信息已更新"}),d()}catch(v){p({title:"保存失败",description:v instanceof Error?v.message:"无法更新人物信息",variant:"destructive"})}finally{j(!1)}};return n?e.jsx($s,{open:i,onOpenChange:c,children:e.jsxs(Bs,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsxs(Hs,{children:[e.jsx(qs,{children:"编辑人物信息"}),e.jsxs(Is,{children:["修改 ",n.person_name||n.nickname||n.user_id," 的信息"]})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"person_name",children:"人物名称"}),e.jsx(oe,{id:"person_name",value:h.person_name||"",onChange:v=>x({...h,person_name:v.target.value}),placeholder:"为这个人设置一个名称"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"nickname",children:"昵称"}),e.jsx(oe,{id:"nickname",value:h.nickname||"",onChange:v=>x({...h,nickname:v.target.value}),placeholder:"昵称"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"name_reason",children:"名称设定原因"}),e.jsx(Fs,{id:"name_reason",value:h.name_reason||"",onChange:v=>x({...h,name_reason:v.target.value}),placeholder:"为什么这样称呼这个人?",rows:2})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"memory_points",children:"个人印象"}),e.jsx(Fs,{id:"memory_points",value:h.memory_points||"",onChange:v=>x({...h,memory_points:v.target.value}),placeholder:"对这个人的印象和记忆点...",rows:4})]}),e.jsxs("div",{className:"flex items-center justify-between rounded-lg border p-3",children:[e.jsxs("div",{children:[e.jsx(b,{htmlFor:"is_known",className:"text-base font-medium",children:"已认识"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"标记是否已经认识这个人"})]}),e.jsx(Xe,{id:"is_known",checked:h.is_known,onCheckedChange:v=>x({...h,is_known:v})})]})]}),e.jsxs(at,{children:[e.jsx(N,{variant:"outline",onClick:()=>c(!1),children:"取消"}),e.jsx(N,{onClick:w,disabled:f,children:f?"保存中...":"保存"})]})]})}):null}var N1=uy();const hp=hN(N1),Iu="/api/webui";async function b1(n=100,i="all"){const c=`${Iu}/knowledge/graph?limit=${n}&node_type=${i}`,d=await fetch(c);if(!d.ok)throw new Error(`获取知识图谱失败: ${d.status}`);return d.json()}async function y1(){const n=await fetch(`${Iu}/knowledge/stats`);if(!n.ok)throw new Error("获取知识图谱统计信息失败");return n.json()}async function w1(n){const i=await fetch(`${Iu}/knowledge/search?query=${encodeURIComponent(n)}`);if(!i.ok)throw new Error("搜索知识节点失败");return i.json()}const Rg=u.memo(({data:n})=>e.jsxs("div",{className:"px-4 py-2 shadow-md rounded-lg bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700 min-w-[120px]",children:[e.jsx(eo,{type:"target",position:so.Top}),e.jsx("div",{className:"font-semibold text-white text-sm truncate max-w-[200px]",title:n.content,children:n.label}),e.jsx(eo,{type:"source",position:so.Bottom})]}));Rg.displayName="EntityNode";const Lg=u.memo(({data:n})=>e.jsxs("div",{className:"px-3 py-2 shadow-md rounded-md bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700 min-w-[100px]",children:[e.jsx(eo,{type:"target",position:so.Top}),e.jsx("div",{className:"font-medium text-white text-xs truncate max-w-[150px]",title:n.content,children:n.label}),e.jsx(eo,{type:"source",position:so.Bottom})]}));Lg.displayName="ParagraphNode";const _1={entity:Rg,paragraph:Lg};function S1(n,i){const c=new hp.graphlib.Graph;c.setDefaultEdgeLabel(()=>({})),c.setGraph({rankdir:"TB",ranksep:100,nodesep:80});const d=[],h=[];return n.forEach(x=>{c.setNode(x.id,{width:150,height:50})}),i.forEach(x=>{c.setEdge(x.source,x.target)}),hp.layout(c),n.forEach(x=>{const f=c.node(x.id);d.push({id:x.id,type:x.type,position:{x:f.x-75,y:f.y-25},data:{label:x.content.slice(0,20)+(x.content.length>20?"...":""),content:x.content}})}),i.forEach((x,f)=>{const j={id:`edge-${f}`,source:x.source,target:x.target,animated:n.length<=200&&x.weight>5,style:{strokeWidth:Math.min(x.weight/2,5),opacity:.6}};x.weight>10&&n.length<100&&(j.label=`${x.weight.toFixed(0)}`),h.push(j)}),{nodes:d,edges:h}}function C1(){const n=ga(),[i,c]=u.useState(!1),[d,h]=u.useState(null),[x,f]=u.useState(""),[j,p]=u.useState("all"),[w,v]=u.useState(50),[y,S]=u.useState("50"),[C,M]=u.useState(!1),[F,U]=u.useState(!0),[O,K]=u.useState(!1),[H,A]=u.useState(!1),[V,Q,T]=my([]),[D,ne,xe]=hy([]),[_e,Se]=u.useState(0),[ge,ye]=u.useState(null),[be,z]=u.useState(null),{toast:X}=Gs(),k=u.useCallback(me=>me.type==="entity"?"#6366f1":me.type==="paragraph"?"#10b981":"#6b7280",[]),se=u.useCallback(async(me=!1)=>{try{if(!me&&w>200){A(!0);return}c(!0);const[G,P]=await Promise.all([b1(w,j),y1()]);if(h(P),G.nodes.length===0){X({title:"提示",description:"知识库为空,请先导入知识数据"}),Q([]),ne([]);return}const{nodes:B,edges:W}=S1(G.nodes,G.edges);Q(B),ne(W),Se(B.length),P&&P.total_nodes>w&&X({title:"提示",description:`知识图谱包含 ${P.total_nodes} 个节点,当前显示 ${B.length} 个`}),X({title:"加载成功",description:`已加载 ${B.length} 个节点,${W.length} 条边`})}catch(G){console.error("加载知识图谱失败:",G),X({title:"加载失败",description:G instanceof Error?G.message:"未知错误",variant:"destructive"})}finally{c(!1)}},[w,j,X]),_=u.useCallback(async()=>{if(!x.trim()){X({title:"提示",description:"请输入搜索关键词"});return}try{const me=await w1(x);if(me.length===0){X({title:"未找到",description:"没有找到匹配的节点"});return}const G=new Set(me.map(P=>P.id));Q(P=>P.map(B=>({...B,style:{...B.style,opacity:G.has(B.id)?1:.3,filter:G.has(B.id)?"brightness(1.2)":"brightness(0.8)"}}))),X({title:"搜索完成",description:`找到 ${me.length} 个匹配节点`})}catch(me){console.error("搜索失败:",me),X({title:"搜索失败",description:me instanceof Error?me.message:"未知错误",variant:"destructive"})}},[x,X]),ue=u.useCallback(()=>{Q(me=>me.map(G=>({...G,style:{...G.style,opacity:1,filter:"brightness(1)"}})))},[]),ie=u.useCallback(()=>{U(!1),K(!0),se()},[se]),ae=u.useCallback(()=>{A(!1),setTimeout(()=>{se(!0)},0)},[se]),fe=u.useCallback((me,G)=>{V.find(B=>B.id===G.id)&&ye({id:G.id,type:G.type,content:G.data.content})},[V]);u.useEffect(()=>{F||O&&se()},[w,j,F,O]);const Ne=u.useCallback((me,G)=>{const P=V.find(Ce=>Ce.id===G.source),B=V.find(Ce=>Ce.id===G.target),W=D.find(Ce=>Ce.id===G.id);P&&B&&W&&z({source:{id:P.id,type:P.type,content:P.data.content},target:{id:B.id,type:B.type,content:B.data.content},edge:{source:G.source,target:G.target,weight:parseFloat(G.label||"0")}})},[V,D]);return e.jsxs("div",{className:"h-full flex flex-col",children:[e.jsxs("div",{className:"flex-shrink-0 p-4 border-b bg-background",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"麦麦知识库图谱"}),e.jsx("p",{className:"text-muted-foreground mt-1",children:"可视化知识实体与关系网络"})]}),d&&e.jsxs("div",{className:"flex gap-2 flex-wrap",children:[e.jsxs(Ye,{variant:"outline",className:"gap-1",children:[e.jsx(Ic,{className:"h-3 w-3"}),"节点: ",d.total_nodes]}),e.jsxs(Ye,{variant:"outline",className:"gap-1",children:[e.jsx(ug,{className:"h-3 w-3"}),"边: ",d.total_edges]}),e.jsxs(Ye,{variant:"outline",className:"gap-1",children:[e.jsx(Ra,{className:"h-3 w-3"}),"实体: ",d.entity_nodes]}),e.jsxs(Ye,{variant:"outline",className:"gap-1",children:[e.jsx(Da,{className:"h-3 w-3"}),"段落: ",d.paragraph_nodes]})]})]}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 mt-4",children:[e.jsxs("div",{className:"flex-1 flex gap-2",children:[e.jsx(oe,{placeholder:"搜索节点内容...",value:x,onChange:me=>f(me.target.value),onKeyDown:me=>me.key==="Enter"&&_(),className:"flex-1"}),e.jsx(N,{onClick:_,size:"sm",children:e.jsx(zt,{className:"h-4 w-4"})}),e.jsx(N,{onClick:ue,variant:"outline",size:"sm",children:"重置"})]}),e.jsxs("div",{className:"flex gap-2",children:[e.jsxs(He,{value:j,onValueChange:me=>p(me),children:[e.jsx(Le,{className:"w-[120px]",children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"all",children:"全部节点"}),e.jsx(le,{value:"entity",children:"仅实体"}),e.jsx(le,{value:"paragraph",children:"仅段落"})]})]}),e.jsxs(He,{value:w===1e4?"all":C?"custom":w.toString(),onValueChange:me=>{me==="custom"?(M(!0),S(w.toString())):me==="all"?(M(!1),v(1e4)):(M(!1),v(Number(me)))},children:[e.jsx(Le,{className:"w-[120px]",children:e.jsx(qe,{})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"50",children:"50 节点"}),e.jsx(le,{value:"100",children:"100 节点"}),e.jsx(le,{value:"200",children:"200 节点"}),e.jsx(le,{value:"500",children:"500 节点"}),e.jsx(le,{value:"1000",children:"1000 节点"}),e.jsx(le,{value:"all",children:"全部 (最多10000)"}),e.jsx(le,{value:"custom",children:"自定义..."})]})]}),C&&e.jsx(oe,{type:"number",min:"50",value:y,onChange:me=>S(me.target.value),onBlur:()=>{const me=parseInt(y);!isNaN(me)&&me>=50?v(me):(S("50"),v(50))},onKeyDown:me=>{if(me.key==="Enter"){const G=parseInt(y);!isNaN(G)&&G>=50?v(G):(S("50"),v(50))}},placeholder:"最少50个",className:"w-[120px]"}),e.jsx(N,{onClick:()=>se(),variant:"outline",size:"sm",disabled:i,children:e.jsx(Ct,{className:$("h-4 w-4",i&&"animate-spin")})})]})]})]}),e.jsx("div",{className:"flex-1 relative",children:i?e.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx(Ct,{className:"h-8 w-8 animate-spin mx-auto mb-2 text-muted-foreground"}),e.jsx("p",{className:"text-muted-foreground",children:"加载知识图谱中..."})]})}):V.length===0?e.jsx("div",{className:"absolute inset-0 flex items-center justify-center",children:e.jsxs("div",{className:"text-center",children:[e.jsx(Ic,{className:"h-12 w-12 mx-auto mb-4 text-muted-foreground"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"知识库为空"}),e.jsx("p",{className:"text-muted-foreground",children:"请先导入知识数据"})]})}):e.jsxs(xy,{nodes:V,edges:D,onNodesChange:T,onEdgesChange:xe,onNodeClick:fe,onEdgeClick:Ne,nodeTypes:_1,fitView:!0,minZoom:.05,maxZoom:1.5,defaultViewport:{x:0,y:0,zoom:.5},elevateNodesOnSelect:_e<=500,nodesDraggable:_e<=1e3,attributionPosition:"bottom-left",children:[e.jsx(fy,{variant:py.Dots,gap:12,size:1}),e.jsx(gy,{}),_e<=500&&e.jsx(jy,{nodeColor:k,nodeBorderRadius:8,pannable:!0,zoomable:!0}),e.jsxs(vy,{position:"top-right",className:"bg-background/95 backdrop-blur-sm rounded-lg border p-3 shadow-lg",children:[e.jsx("div",{className:"text-sm font-semibold mb-2",children:"图例"}),e.jsxs("div",{className:"space-y-2 text-xs",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-blue-500 to-blue-600 border-2 border-blue-700"}),e.jsx("span",{children:"实体节点"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:"w-4 h-4 rounded bg-gradient-to-br from-green-500 to-green-600 border-2 border-green-700"}),e.jsx("span",{children:"段落节点"})]}),_e>200&&e.jsxs("div",{className:"mt-2 pt-2 border-t text-yellow-600 dark:text-yellow-500",children:[e.jsx("div",{className:"font-semibold",children:"性能模式"}),e.jsx("div",{children:"已禁用动画"}),_e>500&&e.jsx("div",{children:"已禁用缩略图"})]})]})]})]})}),e.jsx($s,{open:!!ge,onOpenChange:me=>!me&&ye(null),children:e.jsxs(Bs,{className:"max-w-2xl max-h-[80vh] overflow-y-auto",children:[e.jsx(Hs,{children:e.jsx(qs,{children:"节点详情"})}),ge&&e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"grid grid-cols-2 gap-4",children:e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"类型"}),e.jsx("div",{className:"mt-1",children:e.jsx(Ye,{variant:ge.type==="entity"?"default":"secondary",children:ge.type==="entity"?"🏷️ 实体":"📄 段落"})})]})}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"ID"}),e.jsx("code",{className:"mt-1 block p-2 bg-muted rounded text-xs break-all",children:ge.id})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"内容"}),e.jsx(ss,{className:"mt-1 h-40 p-3 bg-muted rounded",children:e.jsx("p",{className:"text-sm whitespace-pre-wrap",children:ge.content})})]})]})]})}),e.jsx($s,{open:!!be,onOpenChange:me=>!me&&z(null),children:e.jsxs(Bs,{className:"max-w-2xl max-h-[80vh] overflow-hidden flex flex-col",children:[e.jsx(Hs,{children:e.jsx(qs,{children:"边详情"})}),be&&e.jsx(ss,{className:"flex-1 pr-4",children:e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-blue-50 dark:bg-blue-950 rounded border-2 border-blue-200 dark:border-blue-800",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"源节点"}),e.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:be.source.content}),e.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[be.source.id.slice(0,40),"..."]})]}),e.jsx("div",{className:"text-2xl text-muted-foreground flex-shrink-0",children:"→"}),e.jsxs("div",{className:"flex-1 min-w-0 p-3 bg-green-50 dark:bg-green-950 rounded border-2 border-green-200 dark:border-green-800",children:[e.jsx("div",{className:"text-xs text-muted-foreground mb-1",children:"目标节点"}),e.jsx("div",{className:"font-medium text-sm mb-2 truncate",children:be.target.content}),e.jsxs("code",{className:"text-xs text-muted-foreground truncate block",children:[be.target.id.slice(0,40),"..."]})]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium text-muted-foreground",children:"权重"}),e.jsx("div",{className:"mt-1",children:e.jsx(Ye,{variant:"outline",className:"text-base font-mono",children:be.edge.weight.toFixed(4)})})]})]})})]})}),e.jsx(ps,{open:F,onOpenChange:U,children:e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"加载知识图谱"}),e.jsxs(ds,{children:["知识图谱的动态展示会消耗较多系统资源。",e.jsx("br",{}),"确定要加载知识图谱吗?"]})]}),e.jsxs(cs,{children:[e.jsx(ms,{onClick:()=>n({to:"/"}),children:"取消 (返回首页)"}),e.jsx(us,{onClick:ie,children:"确认加载"})]})]})}),e.jsx(ps,{open:H,onOpenChange:A,children:e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"⚠️ 节点数量较多"}),e.jsx(ds,{asChild:!0,children:e.jsxs("div",{children:[e.jsxs("p",{children:["您正在尝试加载 ",e.jsx("strong",{className:"text-orange-600",children:w>=1e4?"全部 (最多10000个)":w})," 个节点。"]}),e.jsx("p",{className:"mt-4",children:"节点数量过多可能导致:"}),e.jsxs("ul",{className:"list-disc list-inside mt-2 space-y-1",children:[e.jsx("li",{children:"页面加载时间较长"}),e.jsx("li",{children:"浏览器卡顿或崩溃"}),e.jsx("li",{children:"系统资源占用过高"})]}),e.jsx("p",{className:"mt-4",children:"建议先选择较少的节点数量 (50-200 个)。"})]})})]}),e.jsxs(cs,{children:[e.jsx(ms,{onClick:()=>{A(!1),w>200&&(v(50),M(!1))},children:"取消"}),e.jsx(us,{onClick:ae,className:"bg-orange-600 hover:bg-orange-700",children:"我了解风险,继续加载"})]})]})})]})}function xp({className:n,classNames:i,showOutsideDays:c=!0,captionLayout:d="label",buttonVariant:h="ghost",formatters:x,components:f,...j}){const p=fg();return e.jsx(Xb,{showOutsideDays:c,className:$("bg-background group/calendar p-3 [--cell-size:2rem] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,n),captionLayout:d,formatters:{formatMonthDropdown:w=>w.toLocaleString("default",{month:"short"}),...x},classNames:{root:$("w-fit",p.root),months:$("relative flex flex-col gap-4 md:flex-row",p.months),month:$("flex w-full flex-col gap-4",p.month),nav:$("absolute inset-x-0 top-0 flex w-full items-center justify-between gap-1",p.nav),button_previous:$(gr({variant:h}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",p.button_previous),button_next:$(gr({variant:h}),"h-[--cell-size] w-[--cell-size] select-none p-0 aria-disabled:opacity-50",p.button_next),month_caption:$("flex h-[--cell-size] w-full items-center justify-center px-[--cell-size]",p.month_caption),dropdowns:$("flex h-[--cell-size] w-full items-center justify-center gap-1.5 text-sm font-medium",p.dropdowns),dropdown_root:$("has-focus:border-ring border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] relative rounded-md border",p.dropdown_root),dropdown:$("bg-popover absolute inset-0 opacity-0",p.dropdown),caption_label:$("select-none font-medium",d==="label"?"text-sm":"[&>svg]:text-muted-foreground flex h-8 items-center gap-1 rounded-md pl-2 pr-1 text-sm [&>svg]:size-3.5",p.caption_label),table:"w-full border-collapse",weekdays:$("flex",p.weekdays),weekday:$("text-muted-foreground flex-1 select-none rounded-md text-[0.8rem] font-normal",p.weekday),week:$("mt-2 flex w-full",p.week),week_number_header:$("w-[--cell-size] select-none",p.week_number_header),week_number:$("text-muted-foreground select-none text-[0.8rem]",p.week_number),day:$("group/day relative aspect-square h-full w-full select-none p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md",p.day),range_start:$("bg-accent rounded-l-md",p.range_start),range_middle:$("rounded-none",p.range_middle),range_end:$("bg-accent rounded-r-md",p.range_end),today:$("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none",p.today),outside:$("text-muted-foreground aria-selected:text-muted-foreground",p.outside),disabled:$("text-muted-foreground opacity-50",p.disabled),hidden:$("invisible",p.hidden),...i},components:{Root:({className:w,rootRef:v,...y})=>e.jsx("div",{"data-slot":"calendar",ref:v,className:$(w),...y}),Chevron:({className:w,orientation:v,...y})=>v==="left"?e.jsx(Hl,{className:$("size-4",w),...y}):v==="right"?e.jsx(ul,{className:$("size-4",w),...y}):e.jsx(Bl,{className:$("size-4",w),...y}),DayButton:k1,WeekNumber:({children:w,...v})=>e.jsx("td",{...v,children:e.jsx("div",{className:"flex size-[--cell-size] items-center justify-center text-center",children:w})}),...f},...j})}function k1({className:n,day:i,modifiers:c,...d}){const h=fg(),x=u.useRef(null);return u.useEffect(()=>{c.focused&&x.current?.focus()},[c.focused]),e.jsx(N,{ref:x,variant:"ghost",size:"icon","data-day":i.date.toLocaleDateString(),"data-selected-single":c.selected&&!c.range_start&&!c.range_end&&!c.range_middle,"data-range-start":c.range_start,"data-range-end":c.range_end,"data-range-middle":c.range_middle,className:$("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 flex aspect-square h-auto w-full min-w-[--cell-size] flex-col gap-1 font-normal leading-none data-[range-end=true]:rounded-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] [&>span]:text-xs [&>span]:opacity-70",h.day,n),...d})}const T1={lessThanXSeconds:{one:"不到 1 秒",other:"不到 {{count}} 秒"},xSeconds:{one:"1 秒",other:"{{count}} 秒"},halfAMinute:"半分钟",lessThanXMinutes:{one:"不到 1 分钟",other:"不到 {{count}} 分钟"},xMinutes:{one:"1 分钟",other:"{{count}} 分钟"},xHours:{one:"1 小时",other:"{{count}} 小时"},aboutXHours:{one:"大约 1 小时",other:"大约 {{count}} 小时"},xDays:{one:"1 天",other:"{{count}} 天"},aboutXWeeks:{one:"大约 1 个星期",other:"大约 {{count}} 个星期"},xWeeks:{one:"1 个星期",other:"{{count}} 个星期"},aboutXMonths:{one:"大约 1 个月",other:"大约 {{count}} 个月"},xMonths:{one:"1 个月",other:"{{count}} 个月"},aboutXYears:{one:"大约 1 年",other:"大约 {{count}} 年"},xYears:{one:"1 年",other:"{{count}} 年"},overXYears:{one:"超过 1 年",other:"超过 {{count}} 年"},almostXYears:{one:"将近 1 年",other:"将近 {{count}} 年"}},E1=(n,i,c)=>{let d;const h=T1[n];return typeof h=="string"?d=h:i===1?d=h.one:d=h.other.replace("{{count}}",String(i)),c?.addSuffix?c.comparison&&c.comparison>0?d+"内":d+"前":d},z1={full:"y'年'M'月'd'日' EEEE",long:"y'年'M'月'd'日'",medium:"yyyy-MM-dd",short:"yy-MM-dd"},A1={full:"zzzz a h:mm:ss",long:"z a h:mm:ss",medium:"a h:mm:ss",short:"a h:mm"},M1={full:"{{date}} {{time}}",long:"{{date}} {{time}}",medium:"{{date}} {{time}}",short:"{{date}} {{time}}"},D1={date:vu({formats:z1,defaultWidth:"full"}),time:vu({formats:A1,defaultWidth:"full"}),dateTime:vu({formats:M1,defaultWidth:"full"})};function fp(n,i,c){const d="eeee p";return pN(n,i,c)?d:n.getTime()>i.getTime()?"'下个'"+d:"'上个'"+d}const O1={lastWeek:fp,yesterday:"'昨天' p",today:"'今天' p",tomorrow:"'明天' p",nextWeek:fp,other:"PP p"},R1=(n,i,c,d)=>{const h=O1[n];return typeof h=="function"?h(i,c,d):h},L1={narrow:["前","公元"],abbreviated:["前","公元"],wide:["公元前","公元"]},U1={narrow:["1","2","3","4"],abbreviated:["第一季","第二季","第三季","第四季"],wide:["第一季度","第二季度","第三季度","第四季度"]},B1={narrow:["一","二","三","四","五","六","七","八","九","十","十一","十二"],abbreviated:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],wide:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},H1={narrow:["日","一","二","三","四","五","六"],short:["日","一","二","三","四","五","六"],abbreviated:["周日","周一","周二","周三","周四","周五","周六"],wide:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},q1={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},G1={narrow:{am:"上",pm:"下",midnight:"凌晨",noon:"午",morning:"早",afternoon:"下午",evening:"晚",night:"夜"},abbreviated:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"},wide:{am:"上午",pm:"下午",midnight:"凌晨",noon:"中午",morning:"早晨",afternoon:"中午",evening:"晚上",night:"夜间"}},V1=(n,i)=>{const c=Number(n);switch(i?.unit){case"date":return c.toString()+"日";case"hour":return c.toString()+"时";case"minute":return c.toString()+"分";case"second":return c.toString()+"秒";default:return"第 "+c.toString()}},F1={ordinalNumber:V1,era:tr({values:L1,defaultWidth:"wide"}),quarter:tr({values:U1,defaultWidth:"wide",argumentCallback:n=>n-1}),month:tr({values:B1,defaultWidth:"wide"}),day:tr({values:H1,defaultWidth:"wide"}),dayPeriod:tr({values:q1,defaultWidth:"wide",formattingValues:G1,defaultFormattingWidth:"wide"})},$1=/^(第\s*)?\d+(日|时|分|秒)?/i,Q1=/\d+/i,Y1={narrow:/^(前)/i,abbreviated:/^(前)/i,wide:/^(公元前|公元)/i},X1={any:[/^(前)/i,/^(公元)/i]},K1={narrow:/^[1234]/i,abbreviated:/^第[一二三四]刻/i,wide:/^第[一二三四]刻钟/i},J1={any:[/(1|一)/i,/(2|二)/i,/(3|三)/i,/(4|四)/i]},Z1={narrow:/^(一|二|三|四|五|六|七|八|九|十[二一])/i,abbreviated:/^(一|二|三|四|五|六|七|八|九|十[二一]|\d|1[12])月/i,wide:/^(一|二|三|四|五|六|七|八|九|十[二一])月/i},I1={narrow:[/^一/i,/^二/i,/^三/i,/^四/i,/^五/i,/^六/i,/^七/i,/^八/i,/^九/i,/^十(?!(一|二))/i,/^十一/i,/^十二/i],any:[/^一|1/i,/^二|2/i,/^三|3/i,/^四|4/i,/^五|5/i,/^六|6/i,/^七|7/i,/^八|8/i,/^九|9/i,/^十(?!(一|二))|10/i,/^十一|11/i,/^十二|12/i]},P1={narrow:/^[一二三四五六日]/i,short:/^[一二三四五六日]/i,abbreviated:/^周[一二三四五六日]/i,wide:/^星期[一二三四五六日]/i},W1={any:[/日/i,/一/i,/二/i,/三/i,/四/i,/五/i,/六/i]},e2={any:/^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i},s2={any:{am:/^上午?/i,pm:/^下午?/i,midnight:/^午夜/i,noon:/^[中正]午/i,morning:/^早上/i,afternoon:/^下午/i,evening:/^晚上?/i,night:/^凌晨/i}},t2={ordinalNumber:gN({matchPattern:$1,parsePattern:Q1,valueCallback:n=>parseInt(n,10)}),era:ar({matchPatterns:Y1,defaultMatchWidth:"wide",parsePatterns:X1,defaultParseWidth:"any"}),quarter:ar({matchPatterns:K1,defaultMatchWidth:"wide",parsePatterns:J1,defaultParseWidth:"any",valueCallback:n=>n+1}),month:ar({matchPatterns:Z1,defaultMatchWidth:"wide",parsePatterns:I1,defaultParseWidth:"any"}),day:ar({matchPatterns:P1,defaultMatchWidth:"wide",parsePatterns:W1,defaultParseWidth:"any"}),dayPeriod:ar({matchPatterns:e2,defaultMatchWidth:"any",parsePatterns:s2,defaultParseWidth:"any"})},Vc={code:"zh-CN",formatDistance:E1,formatLong:D1,formatRelative:R1,localize:F1,match:t2,options:{weekStartsOn:1,firstWeekContainsDate:4}},Fc={xs:{label:"小",rowHeight:28,class:"text-[10px] sm:text-xs"},sm:{label:"中",rowHeight:36,class:"text-xs sm:text-sm"},base:{label:"大",rowHeight:44,class:"text-sm sm:text-base"}};function a2(){const[n,i]=u.useState([]),[c,d]=u.useState(""),[h,x]=u.useState("all"),[f,j]=u.useState("all"),[p,w]=u.useState(void 0),[v,y]=u.useState(void 0),[S,C]=u.useState(!0),[M,F]=u.useState(!1),[U,O]=u.useState("xs"),[K,H]=u.useState(4),A=u.useRef(null);u.useEffect(()=>{const k=rn.getAllLogs();i(k);const se=rn.onLog(()=>{i(rn.getAllLogs())}),_=rn.onConnectionChange(ue=>{F(ue)});return()=>{se(),_()}},[]);const V=u.useMemo(()=>{const k=new Set(n.map(se=>se.module).filter(se=>se&&se.trim()!==""));return Array.from(k).sort()},[n]),Q=k=>{switch(k){case"DEBUG":return"text-muted-foreground";case"INFO":return"text-blue-500 dark:text-blue-400";case"WARNING":return"text-yellow-600 dark:text-yellow-500";case"ERROR":return"text-red-600 dark:text-red-500";case"CRITICAL":return"text-red-700 dark:text-red-400 font-bold";default:return"text-foreground"}},T=k=>{switch(k){case"DEBUG":return"bg-gray-800/30 dark:bg-gray-800/50";case"INFO":return"bg-blue-900/20 dark:bg-blue-500/20";case"WARNING":return"bg-yellow-900/20 dark:bg-yellow-500/20";case"ERROR":return"bg-red-900/20 dark:bg-red-500/20";case"CRITICAL":return"bg-red-900/30 dark:bg-red-600/30";default:return"bg-gray-800/20 dark:bg-gray-800/30"}},D=()=>{window.location.reload()},ne=()=>{rn.clearLogs(),i([])},xe=()=>{const k=ge.map(ie=>`${ie.timestamp} [${ie.level.padEnd(8)}] [${ie.module}] ${ie.message}`).join(` +`),se=new Blob([k],{type:"text/plain;charset=utf-8"}),_=URL.createObjectURL(se),ue=document.createElement("a");ue.href=_,ue.download=`logs-${Nu(new Date,"yyyy-MM-dd-HHmmss")}.txt`,ue.click(),URL.revokeObjectURL(_)},_e=()=>{C(!S)},Se=()=>{w(void 0),y(void 0)},ge=u.useMemo(()=>n.filter(k=>{const se=c===""||k.message.toLowerCase().includes(c.toLowerCase())||k.module.toLowerCase().includes(c.toLowerCase()),_=h==="all"||k.level===h,ue=f==="all"||k.module===f;let ie=!0;if(p||v){const ae=new Date(k.timestamp);if(p){const fe=new Date(p);fe.setHours(0,0,0,0),ie=ie&&ae>=fe}if(v){const fe=new Date(v);fe.setHours(23,59,59,999),ie=ie&&ae<=fe}}return se&&_&&ue&&ie}),[n,c,h,f,p,v]),ye=Fc[U].rowHeight+K,be=nN({count:ge.length,getScrollElement:()=>A.current,estimateSize:()=>ye,overscan:15}),z=u.useRef(!1),X=u.useRef(ge.length);return u.useEffect(()=>{const k=A.current;if(!k)return;const se=()=>{if(z.current)return;const{scrollTop:_,scrollHeight:ue,clientHeight:ie}=k,ae=ue-_-ie;ae>100&&S?C(!1):ae<50&&!S&&C(!0)};return k.addEventListener("scroll",se,{passive:!0}),()=>k.removeEventListener("scroll",se)},[S]),u.useEffect(()=>{const k=ge.length>X.current;X.current=ge.length,S&&ge.length>0&&k&&(z.current=!0,be.scrollToIndex(ge.length-1,{align:"end",behavior:"auto"}),requestAnimationFrame(()=>{requestAnimationFrame(()=>{z.current=!1})}))},[ge.length,S,be]),e.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[e.jsxs("div",{className:"flex-shrink-0 space-y-4 p-3 sm:p-4 lg:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-3",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-xl sm:text-2xl lg:text-3xl font-bold",children:"日志查看器"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mt-1",children:"实时查看和分析麦麦运行日志"})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("div",{className:$("h-2.5 w-2.5 sm:h-3 sm:w-3 rounded-full",M?"bg-green-500 animate-pulse":"bg-red-500")}),e.jsx("span",{className:"text-xs sm:text-sm text-muted-foreground",children:M?"已连接":"未连接"})]})]}),e.jsx(Ze,{className:"p-3 sm:p-4",children:e.jsxs("div",{className:"flex flex-col gap-3 sm:gap-4",children:[e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:gap-4",children:[e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(zt,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(oe,{placeholder:"搜索日志...",value:c,onChange:k=>d(k.target.value),className:"pl-9 h-9 text-sm"})]}),e.jsxs(He,{value:h,onValueChange:x,children:[e.jsxs(Le,{className:"w-full sm:w-[140px] lg:w-[180px] h-9 text-sm",children:[e.jsx(Mu,{className:"h-4 w-4 mr-2"}),e.jsx(qe,{placeholder:"级别"})]}),e.jsxs(Ue,{children:[e.jsx(le,{value:"all",children:"全部级别"}),e.jsx(le,{value:"DEBUG",children:"DEBUG"}),e.jsx(le,{value:"INFO",children:"INFO"}),e.jsx(le,{value:"WARNING",children:"WARNING"}),e.jsx(le,{value:"ERROR",children:"ERROR"}),e.jsx(le,{value:"CRITICAL",children:"CRITICAL"})]})]}),e.jsxs(He,{value:f,onValueChange:j,children:[e.jsxs(Le,{className:"w-full sm:w-[160px] lg:w-[200px] h-9 text-sm",children:[e.jsx(Mu,{className:"h-4 w-4 mr-2"}),e.jsx(qe,{placeholder:"模块"})]}),e.jsxs(Ue,{children:[e.jsx(le,{value:"all",children:"全部模块"}),V.map(k=>e.jsx(le,{value:k,children:k},k))]})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:gap-4",children:[e.jsxs(Ua,{children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",className:$("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!p&&"text-muted-foreground"),children:[e.jsx(Qf,{className:"mr-2 h-4 w-4"}),e.jsx("span",{className:"text-xs sm:text-sm",children:p?Nu(p,"PPP",{locale:Vc}):"开始日期"})]})}),e.jsx(_a,{className:"w-auto p-0",align:"start",children:e.jsx(xp,{mode:"single",selected:p,onSelect:w,initialFocus:!0,locale:Vc})})]}),e.jsxs(Ua,{children:[e.jsx(Ba,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",className:$("w-full sm:w-[200px] lg:w-[240px] justify-start text-left font-normal h-9",!v&&"text-muted-foreground"),children:[e.jsx(Qf,{className:"mr-2 h-4 w-4"}),e.jsx("span",{className:"text-xs sm:text-sm",children:v?Nu(v,"PPP",{locale:Vc}):"结束日期"})]})}),e.jsx(_a,{className:"w-auto p-0",align:"start",children:e.jsx(xp,{mode:"single",selected:v,onSelect:y,initialFocus:!0,locale:Vc})})]}),(p||v)&&e.jsxs(N,{variant:"outline",size:"sm",onClick:Se,className:"w-full sm:w-auto h-9",children:[e.jsx(dl,{className:"h-4 w-4 sm:mr-2"}),e.jsx("span",{className:"hidden sm:inline text-sm",children:"清除时间筛选"}),e.jsx("span",{className:"sm:hidden text-sm",children:"清除"})]})]}),e.jsxs("div",{className:"flex flex-col gap-2 sm:flex-row sm:flex-wrap sm:items-center",children:[e.jsxs("div",{className:"flex gap-2 flex-wrap",children:[e.jsxs(N,{variant:S?"default":"outline",size:"sm",onClick:_e,className:"flex-1 sm:flex-none h-9",children:[S?e.jsx(kb,{className:"h-4 w-4"}):e.jsx(Tb,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:S?"自动滚动":"已暂停"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:D,className:"flex-1 sm:flex-none h-9",children:[e.jsx(Ct,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"刷新"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:ne,className:"flex-1 sm:flex-none h-9",children:[e.jsx(ls,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"清空"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:xe,className:"flex-1 sm:flex-none h-9",children:[e.jsx(rl,{className:"h-4 w-4"}),e.jsx("span",{className:"ml-2 text-sm",children:"导出"})]})]}),e.jsx("div",{className:"flex-1 hidden sm:block"}),e.jsxs("div",{className:"text-xs sm:text-sm text-muted-foreground flex items-center justify-center sm:justify-end",children:[e.jsxs("span",{className:"font-mono",children:[ge.length," / ",n.length]}),e.jsx("span",{className:"ml-1",children:"条日志"})]})]}),e.jsxs("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-center sm:gap-6 pt-2 border-t border-border/50",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[e.jsx(Eb,{className:"h-4 w-4"}),e.jsx("span",{children:"字号"})]}),e.jsx("div",{className:"flex gap-1",children:Object.keys(Fc).map(k=>e.jsx(N,{variant:U===k?"default":"outline",size:"sm",onClick:()=>O(k),className:"h-7 px-3 text-xs",children:Fc[k].label},k))})]}),e.jsxs("div",{className:"flex items-center gap-3 flex-1 max-w-xs",children:[e.jsx("span",{className:"text-sm text-muted-foreground whitespace-nowrap",children:"行距"}),e.jsx(Ma,{value:[K],onValueChange:([k])=>H(k),min:0,max:12,step:2,className:"flex-1"}),e.jsxs("span",{className:"text-xs text-muted-foreground w-8",children:[K,"px"]})]})]})]})})]}),e.jsx("div",{className:"flex-1 min-h-0 px-3 sm:px-4 lg:px-6 pb-3 sm:pb-4 lg:pb-6",children:e.jsx(Ze,{className:"bg-black dark:bg-gray-950 border-gray-800 dark:border-gray-900 h-full",children:e.jsx(ss,{viewportRef:A,className:"h-full",children:e.jsx("div",{className:$("p-2 sm:p-3 font-mono relative",Fc[U].class),style:{height:`${be.getTotalSize()}px`},children:ge.length===0?e.jsx("div",{className:"text-gray-500 dark:text-gray-600 text-center py-8 text-sm",children:"暂无日志数据"}):be.getVirtualItems().map(k=>{const se=ge[k.index];return e.jsxs("div",{"data-index":k.index,ref:be.measureElement,className:$("absolute top-0 left-0 w-full px-2 sm:px-3 rounded hover:bg-white/5 transition-colors group",T(se.level)),style:{transform:`translateY(${k.start}px)`,paddingTop:`${K/2}px`,paddingBottom:`${K/2}px`},children:[e.jsxs("div",{className:"flex flex-col gap-0.5 sm:hidden",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-gray-500 dark:text-gray-600",children:se.timestamp}),e.jsxs("span",{className:$("font-semibold",Q(se.level)),children:["[",se.level,"]"]})]}),e.jsx("div",{className:"text-cyan-400 dark:text-cyan-500 truncate",children:se.module}),e.jsx("div",{className:"text-gray-300 dark:text-gray-400 whitespace-pre-wrap break-words",children:se.message})]}),e.jsxs("div",{className:"hidden sm:flex gap-2 items-start",children:[e.jsx("span",{className:"text-gray-500 dark:text-gray-600 flex-shrink-0 w-[130px] lg:w-[160px]",children:se.timestamp}),e.jsxs("span",{className:$("flex-shrink-0 w-[65px] lg:w-[75px] font-semibold",Q(se.level)),children:["[",se.level,"]"]}),e.jsx("span",{className:"text-cyan-400 dark:text-cyan-500 flex-shrink-0 w-[100px] lg:w-[130px] truncate",children:se.module}),e.jsx("span",{className:"text-gray-300 dark:text-gray-400 flex-1 whitespace-pre-wrap break-words",children:se.message})]})]},k.key)})})})})})]})}const l2="Mai-with-u",n2="plugin-repo",i2="main",r2="plugin_details.json";async function c2(){try{const n=await Te("/api/webui/plugins/fetch-raw",{method:"POST",body:JSON.stringify({owner:l2,repo:n2,branch:i2,file_path:r2})});if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);const i=await n.json();if(!i.success||!i.data)throw new Error(i.error||"获取插件列表失败");return JSON.parse(i.data).filter(h=>!h?.id||!h?.manifest?(console.warn("跳过无效插件数据:",h),!1):!h.manifest.name||!h.manifest.version?(console.warn("跳过缺少必需字段的插件:",h.id),!1):!0).map(h=>({id:h.id,manifest:{manifest_version:h.manifest.manifest_version||1,name:h.manifest.name,version:h.manifest.version,description:h.manifest.description||"",author:h.manifest.author||{name:"Unknown"},license:h.manifest.license||"Unknown",host_application:h.manifest.host_application||{min_version:"0.0.0"},homepage_url:h.manifest.homepage_url,repository_url:h.manifest.repository_url,keywords:h.manifest.keywords||[],categories:h.manifest.categories||[],default_locale:h.manifest.default_locale||"zh-CN",locales_path:h.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!1,published_at:new Date().toISOString(),updated_at:new Date().toISOString()}))}catch(n){throw console.error("Failed to fetch plugin list:",n),n}}async function o2(){try{const n=await Te("/api/webui/plugins/git-status");if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);return await n.json()}catch(n){return console.error("Failed to check Git status:",n),{installed:!1,error:"无法检测 Git 安装状态"}}}async function d2(){try{const n=await Te("/api/webui/plugins/version");if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);return await n.json()}catch(n){return console.error("Failed to get Maimai version:",n),{version:"0.0.0",version_major:0,version_minor:0,version_patch:0}}}function u2(n,i,c){const d=n.split(".").map(j=>parseInt(j)||0),h=d[0]||0,x=d[1]||0,f=d[2]||0;if(c.version_majorparseInt(y)||0),p=j[0]||0,w=j[1]||0,v=j[2]||0;if(c.version_major>p||c.version_major===p&&c.version_minor>w||c.version_major===p&&c.version_minor===w&&c.version_patch>v)return!1}return!0}function m2(n,i){const c=window.location.protocol==="https:"?"wss:":"ws:",d=window.location.host,h=new WebSocket(`${c}//${d}/api/webui/ws/plugin-progress`);return h.onopen=()=>{console.log("Plugin progress WebSocket connected");const x=setInterval(()=>{h.readyState===WebSocket.OPEN?h.send("ping"):clearInterval(x)},3e4)},h.onmessage=x=>{try{if(x.data==="pong")return;const f=JSON.parse(x.data);n(f)}catch(f){console.error("Failed to parse progress data:",f)}},h.onerror=x=>{console.error("Plugin progress WebSocket error:",x),i?.(x)},h.onclose=()=>{console.log("Plugin progress WebSocket disconnected")},h}async function dr(){try{const n=await Te("/api/webui/plugins/installed",{headers:Ls()});if(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);const i=await n.json();if(!i.success)throw new Error(i.message||"获取已安装插件列表失败");return i.plugins||[]}catch(n){return console.error("Failed to get installed plugins:",n),[]}}function $c(n,i){return i.some(c=>c.id===n)}function Qc(n,i){const c=i.find(d=>d.id===n);if(c)return c.manifest?.version||c.version}async function h2(n,i,c="main"){const d=await Te("/api/webui/plugins/install",{method:"POST",body:JSON.stringify({plugin_id:n,repository_url:i,branch:c})});if(!d.ok){const h=await d.json();throw new Error(h.detail||"安装失败")}return await d.json()}async function x2(n){const i=await Te("/api/webui/plugins/uninstall",{method:"POST",body:JSON.stringify({plugin_id:n})});if(!i.ok){const c=await i.json();throw new Error(c.detail||"卸载失败")}return await i.json()}async function f2(n,i,c="main"){const d=await Te("/api/webui/plugins/update",{method:"POST",body:JSON.stringify({plugin_id:n,repository_url:i,branch:c})});if(!d.ok){const h=await d.json();throw new Error(h.detail||"更新失败")}return await d.json()}async function p2(n){const i=await Te(`/api/webui/plugins/config/${n}/schema`,{headers:Ls()});if(!i.ok){const d=await i.json();throw new Error(d.detail||"获取配置 Schema 失败")}const c=await i.json();if(!c.success)throw new Error(c.message||"获取配置 Schema 失败");return c.schema}async function g2(n){const i=await Te(`/api/webui/plugins/config/${n}`,{headers:Ls()});if(!i.ok){const d=await i.json();throw new Error(d.detail||"获取配置失败")}const c=await i.json();if(!c.success)throw new Error(c.message||"获取配置失败");return c.config}async function j2(n,i){const c=await Te(`/api/webui/plugins/config/${n}`,{method:"PUT",body:JSON.stringify({config:i})});if(!c.ok){const d=await c.json();throw new Error(d.detail||"保存配置失败")}return await c.json()}async function v2(n){const i=await Te(`/api/webui/plugins/config/${n}/reset`,{method:"POST",headers:Ls()});if(!i.ok){const c=await i.json();throw new Error(c.detail||"重置配置失败")}return await i.json()}async function N2(n){const i=await Te(`/api/webui/plugins/config/${n}/toggle`,{method:"POST",headers:Ls()});if(!i.ok){const c=await i.json();throw new Error(c.detail||"切换状态失败")}return await i.json()}const _r="https://maibot-plugin-stats.maibot-webui.workers.dev";async function Ug(n){try{const i=await fetch(`${_r}/stats/${n}`);return i.ok?await i.json():(console.error("Failed to fetch plugin stats:",i.statusText),null)}catch(i){return console.error("Error fetching plugin stats:",i),null}}async function b2(n,i){try{const c=i||Pu(),d=await fetch(`${_r}/stats/like`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,user_id:c})}),h=await d.json();return d.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:d.ok?{success:!0,...h}:{success:!1,error:h.error||"点赞失败"}}catch(c){return console.error("Error liking plugin:",c),{success:!1,error:"网络错误"}}}async function y2(n,i){try{const c=i||Pu(),d=await fetch(`${_r}/stats/dislike`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,user_id:c})}),h=await d.json();return d.status===429?{success:!1,error:"操作过于频繁,请稍后再试"}:d.ok?{success:!0,...h}:{success:!1,error:h.error||"点踩失败"}}catch(c){return console.error("Error disliking plugin:",c),{success:!1,error:"网络错误"}}}async function w2(n,i,c,d){if(i<1||i>5)return{success:!1,error:"评分必须在 1-5 之间"};try{const h=d||Pu(),x=await fetch(`${_r}/stats/rate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n,rating:i,comment:c,user_id:h})}),f=await x.json();return x.status===429?{success:!1,error:"每天最多评分 3 次"}:x.ok?{success:!0,...f}:{success:!1,error:f.error||"评分失败"}}catch(h){return console.error("Error rating plugin:",h),{success:!1,error:"网络错误"}}}async function _2(n){try{const i=await fetch(`${_r}/stats/download`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({plugin_id:n})}),c=await i.json();return i.status===429?(console.warn("Download recording rate limited"),{success:!0}):i.ok?{success:!0,...c}:(console.error("Failed to record download:",c.error),{success:!1,error:c.error})}catch(i){return console.error("Error recording download:",i),{success:!1,error:"网络错误"}}}function S2(){const n=navigator,i=[navigator.userAgent,navigator.language,navigator.languages?.join(",")||"",navigator.platform,navigator.hardwareConcurrency||0,screen.width,screen.height,screen.colorDepth,screen.pixelDepth,new Date().getTimezoneOffset(),Intl.DateTimeFormat().resolvedOptions().timeZone,navigator.maxTouchPoints||0,n.deviceMemory||0].join("|");let c=0;for(let d=0;d{x(!0);const O=await Ug(n);O&&d(O),x(!1)};u.useEffect(()=>{C()},[n]);const M=async()=>{const O=await b2(n);O.success?(S({title:"已点赞",description:"感谢你的支持!"}),C()):S({title:"点赞失败",description:O.error||"未知错误",variant:"destructive"})},F=async()=>{const O=await y2(n);O.success?(S({title:"已反馈",description:"感谢你的反馈!"}),C()):S({title:"操作失败",description:O.error||"未知错误",variant:"destructive"})},U=async()=>{if(f===0){S({title:"请选择评分",description:"至少选择 1 颗星",variant:"destructive"});return}const O=await w2(n,f,p||void 0);O.success?(S({title:"评分成功",description:"感谢你的评价!"}),y(!1),j(0),w(""),C()):S({title:"评分失败",description:O.error||"未知错误",variant:"destructive"})};return h?e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(rl,{className:"h-4 w-4"}),e.jsx("span",{children:"-"})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ul,{className:"h-4 w-4"}),e.jsx("span",{children:"-"})]})]}):c?i?e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",title:`下载量: ${c.downloads.toLocaleString()}`,children:[e.jsx(rl,{className:"h-4 w-4"}),e.jsx("span",{children:c.downloads.toLocaleString()})]}),e.jsxs("div",{className:"flex items-center gap-1",title:`评分: ${c.rating.toFixed(1)} (${c.rating_count} 条评价)`,children:[e.jsx(Ul,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsx("span",{children:c.rating.toFixed(1)})]}),e.jsxs("div",{className:"flex items-center gap-1",title:`点赞数: ${c.likes}`,children:[e.jsx(yu,{className:"h-4 w-4"}),e.jsx("span",{children:c.likes})]})]}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-4",children:[e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(rl,{className:"h-5 w-5 text-muted-foreground mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.downloads.toLocaleString()}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"下载量"})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(Ul,{className:"h-5 w-5 text-yellow-400 mb-1 fill-yellow-400"}),e.jsx("span",{className:"text-2xl font-bold",children:c.rating.toFixed(1)}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:[c.rating_count," 条评价"]})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(yu,{className:"h-5 w-5 text-green-500 mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.likes}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"点赞"})]}),e.jsxs("div",{className:"flex flex-col items-center p-3 rounded-lg border bg-card",children:[e.jsx(Yf,{className:"h-5 w-5 text-red-500 mb-1"}),e.jsx("span",{className:"text-2xl font-bold",children:c.dislikes}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"点踩"})]})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs(N,{variant:"outline",size:"sm",onClick:M,children:[e.jsx(yu,{className:"h-4 w-4 mr-1"}),"点赞"]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:F,children:[e.jsx(Yf,{className:"h-4 w-4 mr-1"}),"点踩"]}),e.jsxs($s,{open:v,onOpenChange:y,children:[e.jsx(Xu,{asChild:!0,children:e.jsxs(N,{variant:"default",size:"sm",children:[e.jsx(Ul,{className:"h-4 w-4 mr-1"}),"评分"]})}),e.jsxs(Bs,{children:[e.jsxs(Hs,{children:[e.jsx(qs,{children:"为插件评分"}),e.jsx(Is,{children:"分享你的使用体验,帮助其他用户"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"flex flex-col items-center gap-2",children:[e.jsx("div",{className:"flex gap-2",children:[1,2,3,4,5].map(O=>e.jsx("button",{onClick:()=>j(O),className:"focus:outline-none",children:e.jsx(Ul,{className:`h-8 w-8 transition-colors ${O<=f?"fill-yellow-400 text-yellow-400":"text-muted-foreground hover:text-yellow-300"}`})},O))}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[f===0&&"点击星星进行评分",f===1&&"很差",f===2&&"一般",f===3&&"还行",f===4&&"不错",f===5&&"非常好"]})]}),e.jsxs("div",{children:[e.jsx("label",{className:"text-sm font-medium mb-2 block",children:"评论(可选)"}),e.jsx(Fs,{value:p,onChange:O=>w(O.target.value),placeholder:"分享你的使用体验...",rows:4,maxLength:500}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1 text-right",children:[p.length," / 500"]})]})]}),e.jsxs(at,{children:[e.jsx(N,{variant:"outline",onClick:()=>y(!1),children:"取消"}),e.jsx(N,{onClick:U,disabled:f===0,children:"提交评分"})]})]})]})]}),c.recent_ratings&&c.recent_ratings.length>0&&e.jsxs("div",{className:"space-y-2",children:[e.jsx("h4",{className:"text-sm font-semibold",children:"最近评价"}),e.jsx("div",{className:"space-y-3",children:c.recent_ratings.map((O,K)=>e.jsxs("div",{className:"p-3 rounded-lg border bg-muted/50",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("div",{className:"flex gap-1",children:[1,2,3,4,5].map(H=>e.jsx(Ul,{className:`h-3 w-3 ${H<=O.rating?"fill-yellow-400 text-yellow-400":"text-muted-foreground"}`},H))}),e.jsx("span",{className:"text-xs text-muted-foreground",children:new Date(O.created_at).toLocaleDateString()})]}),O.comment&&e.jsx("p",{className:"text-sm text-muted-foreground",children:O.comment})]},K))})]})]}):null}const pp={"Group Management":"群组管理","Entertainment & Interaction":"娱乐互动","Utility Tools":"实用工具","Content Generation":"内容生成",Multimedia:"多媒体","External Integration":"外部集成","Data Analysis & Insights":"数据分析与洞察",Other:"其他"};function k2(){const n=ga(),[i,c]=u.useState(null),[d,h]=u.useState(""),[x,f]=u.useState("all"),[j,p]=u.useState("all"),[w,v]=u.useState(!0),[y,S]=u.useState([]),[C,M]=u.useState(!0),[F,U]=u.useState(null),[O,K]=u.useState(null),[H,A]=u.useState(null),[V,Q]=u.useState(null),[,T]=u.useState([]),[D,ne]=u.useState({}),{toast:xe}=Gs(),_e=async _=>{const ue=_.map(async fe=>{try{const Ne=await Ug(fe.id);return{id:fe.id,stats:Ne}}catch(Ne){return console.warn(`Failed to load stats for ${fe.id}:`,Ne),{id:fe.id,stats:null}}}),ie=await Promise.all(ue),ae={};ie.forEach(({id:fe,stats:Ne})=>{Ne&&(ae[fe]=Ne)}),ne(ae)};u.useEffect(()=>{let _=null,ue=!1;return(async()=>{if(_=m2(ae=>{ue||(A(ae),ae.stage==="success"?setTimeout(()=>{ue||A(null)},2e3):ae.stage==="error"&&(M(!1),U(ae.error||"加载失败")))},ae=>{console.error("WebSocket error:",ae),ue||xe({title:"WebSocket 连接失败",description:"无法实时显示加载进度",variant:"destructive"})}),await new Promise(ae=>{if(!_){ae();return}const fe=()=>{_&&_.readyState===WebSocket.OPEN?(console.log("WebSocket connected, starting to load plugins"),ae()):_&&_.readyState===WebSocket.CLOSED?(console.warn("WebSocket closed before loading plugins"),ae()):setTimeout(fe,100)};fe()}),!ue){const ae=await o2();K(ae),ae.installed||xe({title:"Git 未安装",description:ae.error||"请先安装 Git 才能使用插件安装功能",variant:"destructive"})}if(!ue){const ae=await d2();Q(ae)}if(!ue)try{M(!0),U(null);const ae=await c2();if(!ue){const fe=await dr();T(fe);const Ne=ae.map(me=>{const G=$c(me.id,fe),P=Qc(me.id,fe);return{...me,installed:G,installed_version:P}});for(const me of fe)!Ne.some(P=>P.id===me.id)&&me.manifest&&Ne.push({id:me.id,manifest:{manifest_version:me.manifest.manifest_version||1,name:me.manifest.name,version:me.manifest.version,description:me.manifest.description||"",author:me.manifest.author,license:me.manifest.license||"Unknown",host_application:me.manifest.host_application,homepage_url:me.manifest.homepage_url,repository_url:me.manifest.repository_url,keywords:me.manifest.keywords||[],categories:me.manifest.categories||[],default_locale:me.manifest.default_locale||"zh-CN",locales_path:me.manifest.locales_path},downloads:0,rating:0,review_count:0,installed:!0,installed_version:me.manifest.version,published_at:new Date().toISOString(),updated_at:new Date().toISOString()});S(Ne),_e(Ne)}}catch(ae){if(!ue){const fe=ae instanceof Error?ae.message:"加载插件列表失败";U(fe),xe({title:"加载失败",description:fe,variant:"destructive"})}}finally{ue||M(!1)}})(),()=>{ue=!0,_&&_.close()}},[xe]);const Se=_=>{if(!_.installed&&V&&!ge(_))return e.jsxs(Ye,{variant:"destructive",className:"gap-1",children:[e.jsx(Oa,{className:"h-3 w-3"}),"不兼容"]});if(_.installed){const ue=_.installed_version?.trim(),ie=_.manifest.version?.trim();if(ue!==ie){const ae=ue?.split(".").map(Number)||[0,0,0],fe=ie?.split(".").map(Number)||[0,0,0];for(let Ne=0;Ne<3;Ne++){if((fe[Ne]||0)>(ae[Ne]||0))return e.jsxs(Ye,{variant:"outline",className:"gap-1 text-orange-600 border-orange-600",children:[e.jsx(Oa,{className:"h-3 w-3"}),"可更新"]});if((fe[Ne]||0)<(ae[Ne]||0))break}}return e.jsxs(Ye,{variant:"default",className:"gap-1",children:[e.jsx(fa,{className:"h-3 w-3"}),"已安装"]})}return null},ge=_=>!V||!_.manifest?.host_application?!0:u2(_.manifest.host_application.min_version,_.manifest.host_application.max_version,V),ye=_=>{if(!_.installed||!_.installed_version||!_.manifest?.version)return!1;const ue=_.installed_version.trim(),ie=_.manifest.version.trim();if(ue===ie)return!1;const ae=ue.split(".").map(Number),fe=ie.split(".").map(Number);for(let Ne=0;Ne<3;Ne++){if((fe[Ne]||0)>(ae[Ne]||0))return!0;if((fe[Ne]||0)<(ae[Ne]||0))return!1}return!1},be=y.filter(_=>{if(!_.manifest)return console.warn("[过滤] 跳过无 manifest 的插件:",_.id),!1;const ue=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(Ne=>Ne.toLowerCase().includes(d.toLowerCase())),ie=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x);let ae=!0;j==="installed"?ae=_.installed===!0:j==="updates"&&(ae=_.installed===!0&&ye(_));const fe=!w||!V||ge(_);return ue&&ie&&ae&&fe}),z=()=>{c(null)},X=async _=>{if(!O?.installed){xe({title:"无法安装",description:"Git 未安装",variant:"destructive"});return}if(V&&!ge(_)){xe({title:"无法安装",description:"插件与当前麦麦版本不兼容",variant:"destructive"});return}try{await h2(_.id,_.manifest.repository_url||"","main"),_2(_.id).catch(ie=>{console.warn("Failed to record download:",ie)}),xe({title:"安装成功",description:`${_.manifest.name} 已成功安装`});const ue=await dr();T(ue),S(ie=>ie.map(ae=>{if(ae.id===_.id){const fe=$c(ae.id,ue),Ne=Qc(ae.id,ue);return{...ae,installed:fe,installed_version:Ne}}return ae}))}catch(ue){xe({title:"安装失败",description:ue instanceof Error?ue.message:"未知错误",variant:"destructive"})}},k=async _=>{try{await x2(_.id),xe({title:"卸载成功",description:`${_.manifest.name} 已成功卸载`});const ue=await dr();T(ue),S(ie=>ie.map(ae=>{if(ae.id===_.id){const fe=$c(ae.id,ue),Ne=Qc(ae.id,ue);return{...ae,installed:fe,installed_version:Ne}}return ae}))}catch(ue){xe({title:"卸载失败",description:ue instanceof Error?ue.message:"未知错误",variant:"destructive"})}},se=async _=>{if(!O?.installed){xe({title:"无法更新",description:"Git 未安装",variant:"destructive"});return}try{const ue=await f2(_.id,_.manifest.repository_url||"","main");xe({title:"更新成功",description:`${_.manifest.name} 已从 ${ue.old_version} 更新到 ${ue.new_version}`});const ie=await dr();T(ie),S(ae=>ae.map(fe=>{if(fe.id===_.id){const Ne=$c(fe.id,ie),me=Qc(fe.id,ie);return{...fe,installed:Ne,installed_version:me}}return fe}))}catch(ue){xe({title:"更新失败",description:ue instanceof Error?ue.message:"未知错误",variant:"destructive"})}};return e.jsx(ss,{className:"h-full",children:e.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件市场"}),e.jsx("p",{className:"text-muted-foreground mt-2",children:"浏览和管理麦麦的插件"})]}),e.jsxs(N,{onClick:()=>n({to:"/plugin-mirrors"}),children:[e.jsx(zb,{className:"h-4 w-4 mr-2"}),"配置镜像源"]})]}),O&&!O.installed&&e.jsxs(Ze,{className:"border-orange-600 bg-orange-50 dark:bg-orange-950/20",children:[e.jsx(ys,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ya,{className:"h-5 w-5 text-orange-600"}),e.jsxs("div",{children:[e.jsx(ws,{className:"text-lg text-orange-900 dark:text-orange-100",children:"Git 未安装"}),e.jsx(ct,{className:"text-orange-800 dark:text-orange-200",children:O.error||"请先安装 Git 才能使用插件安装功能"})]})]})}),e.jsx(Ts,{children:e.jsxs("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:["您可以从 ",e.jsx("a",{href:"https://git-scm.com/downloads",target:"_blank",rel:"noopener noreferrer",className:"underline font-medium",children:"git-scm.com"})," 下载并安装 Git。 安装完成后,请重启麦麦应用。"]})})]}),e.jsx(Ze,{className:"p-4",children:e.jsxs("div",{className:"flex flex-col gap-4",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row gap-4",children:[e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(zt,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(oe,{placeholder:"搜索插件...",value:d,onChange:_=>h(_.target.value),className:"pl-9"})]}),e.jsxs(He,{value:x,onValueChange:f,children:[e.jsx(Le,{className:"w-full sm:w-[200px]",children:e.jsx(qe,{placeholder:"选择分类"})}),e.jsxs(Ue,{children:[e.jsx(le,{value:"all",children:"全部分类"}),e.jsx(le,{value:"Group Management",children:"群组管理"}),e.jsx(le,{value:"Entertainment & Interaction",children:"娱乐互动"}),e.jsx(le,{value:"Utility Tools",children:"实用工具"}),e.jsx(le,{value:"Content Generation",children:"内容生成"}),e.jsx(le,{value:"Multimedia",children:"多媒体"}),e.jsx(le,{value:"External Integration",children:"外部集成"}),e.jsx(le,{value:"Data Analysis & Insights",children:"数据分析与洞察"}),e.jsx(le,{value:"Other",children:"其他"})]})]})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(jt,{id:"compatible-only",checked:w,onCheckedChange:_=>v(_===!0)}),e.jsx("label",{htmlFor:"compatible-only",className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 cursor-pointer",children:"只显示兼容当前版本的插件"})]})]})}),e.jsx(La,{value:j,onValueChange:p,className:"w-full",children:e.jsxs(wa,{className:"grid w-full grid-cols-3",children:[e.jsxs(fs,{value:"all",children:["全部插件 (",y.filter(_=>{if(!_.manifest)return!1;const ue=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(fe=>fe.toLowerCase().includes(d.toLowerCase())),ie=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x),ae=!w||!V||ge(_);return ue&&ie&&ae}).length,")"]}),e.jsxs(fs,{value:"installed",children:["已安装 (",y.filter(_=>{if(!_.manifest)return!1;const ue=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(fe=>fe.toLowerCase().includes(d.toLowerCase())),ie=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x),ae=!w||!V||ge(_);return _.installed&&ue&&ie&&ae}).length,")"]}),e.jsxs(fs,{value:"updates",children:["可更新 (",y.filter(_=>{if(!_.manifest)return!1;const ue=d===""||_.manifest.name?.toLowerCase().includes(d.toLowerCase())||_.manifest.description?.toLowerCase().includes(d.toLowerCase())||_.manifest.keywords&&_.manifest.keywords.some(fe=>fe.toLowerCase().includes(d.toLowerCase())),ie=x==="all"||_.manifest.categories&&_.manifest.categories.includes(x),ae=!w||!V||ge(_);return _.installed&&ye(_)&&ue&&ie&&ae}).length,")"]})]})}),H&&H.stage==="loading"&&e.jsx(Ze,{className:"p-4",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(kt,{className:"h-4 w-4 animate-spin"}),e.jsxs("span",{className:"text-sm font-medium",children:[H.operation==="fetch"&&"加载插件列表",H.operation==="install"&&`安装插件${H.plugin_id?`: ${H.plugin_id}`:""}`,H.operation==="uninstall"&&`卸载插件${H.plugin_id?`: ${H.plugin_id}`:""}`,H.operation==="update"&&`更新插件${H.plugin_id?`: ${H.plugin_id}`:""}`]})]}),e.jsxs("span",{className:"text-sm font-medium",children:[H.progress,"%"]})]}),e.jsx(wr,{value:H.progress,className:"h-2"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:H.message}),H.operation==="fetch"&&H.total_plugins>0&&e.jsxs("div",{className:"text-xs text-muted-foreground text-center",children:["已加载 ",H.loaded_plugins," / ",H.total_plugins," 个插件"]})]})}),H&&H.stage==="error"&&H.error&&e.jsx(Ze,{className:"border-destructive bg-destructive/10",children:e.jsx(ys,{children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(ya,{className:"h-5 w-5 text-destructive"}),e.jsxs("div",{children:[e.jsx(ws,{className:"text-lg text-destructive",children:"加载失败"}),e.jsx(ct,{className:"text-destructive/80",children:H.error})]})]})})}),C?e.jsxs("div",{className:"flex items-center justify-center py-12",children:[e.jsx(kt,{className:"h-8 w-8 animate-spin text-muted-foreground"}),e.jsx("span",{className:"ml-3 text-muted-foreground",children:"加载插件列表中..."})]}):F?e.jsx(Ze,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(ya,{className:"h-12 w-12 text-destructive mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:F}),e.jsx(N,{onClick:()=>window.location.reload(),children:"重新加载"})]})}):be.length===0?e.jsx(Ze,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(zt,{className:"h-12 w-12 text-muted-foreground mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"未找到插件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:d||x!=="all"?"尝试调整搜索条件或筛选器":"暂无可用插件"})]})}):e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:be.map(_=>e.jsxs(Ze,{className:"flex flex-col hover:shadow-lg transition-shadow h-full",children:[e.jsxs(ys,{children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsx(ws,{className:"text-xl",children:_.manifest?.name||_.id}),e.jsxs("div",{className:"flex flex-col gap-1",children:[_.manifest?.categories&&_.manifest.categories[0]&&e.jsx(Ye,{variant:"secondary",className:"text-xs whitespace-nowrap",children:pp[_.manifest.categories[0]]||_.manifest.categories[0]}),Se(_)]})]}),e.jsx(ct,{className:"line-clamp-2",children:_.manifest?.description||"无描述"})]}),e.jsx(Ts,{className:"flex-1",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-4 text-sm text-muted-foreground",children:[e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(rl,{className:"h-4 w-4"}),e.jsx("span",{children:(D[_.id]?.downloads??_.downloads??0).toLocaleString()})]}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ul,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsx("span",{children:(D[_.id]?.rating??_.rating??0).toFixed(1)})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[_.manifest?.keywords&&_.manifest.keywords.slice(0,3).map(ue=>e.jsx(Ye,{variant:"outline",className:"text-xs",children:ue},ue)),_.manifest?.keywords&&_.manifest.keywords.length>3&&e.jsxs(Ye,{variant:"outline",className:"text-xs",children:["+",_.manifest.keywords.length-3]})]}),e.jsxs("div",{className:"text-xs text-muted-foreground pt-2 border-t space-y-1",children:[e.jsxs("div",{children:["v",_.manifest?.version||"unknown"," · ",_.manifest?.author?.name||"Unknown"]}),_.manifest?.host_application&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{children:"支持:"}),e.jsxs("span",{className:"font-medium",children:[_.manifest.host_application.min_version,_.manifest.host_application.max_version?` - ${_.manifest.host_application.max_version}`:" - 最新版本"]})]})]})]})}),e.jsx(pg,{className:"pt-4",children:e.jsxs("div",{className:"flex items-center justify-end gap-2 w-full",children:[e.jsx(N,{variant:"outline",size:"sm",onClick:()=>c(_),children:"查看详情"}),_.installed?ye(_)?e.jsxs(N,{size:"sm",disabled:!O?.installed,title:O?.installed?void 0:"Git 未安装",onClick:()=>se(_),children:[e.jsx(Ct,{className:"h-4 w-4 mr-1"}),"更新"]}):e.jsxs(N,{variant:"destructive",size:"sm",disabled:!O?.installed,title:O?.installed?void 0:"Git 未安装",onClick:()=>k(_),children:[e.jsx(ls,{className:"h-4 w-4 mr-1"}),"卸载"]}):e.jsxs(N,{size:"sm",disabled:!O?.installed||H?.operation==="install"||V!==null&&!ge(_),title:O?.installed?V!==null&&!ge(_)?`不兼容当前版本 (需要 ${_.manifest?.host_application?.min_version||"未知"}${_.manifest?.host_application?.max_version?` - ${_.manifest.host_application.max_version}`:"+"},当前 ${V?.version})`:void 0:"Git 未安装",onClick:()=>X(_),children:[e.jsx(rl,{className:"h-4 w-4 mr-1"}),H?.operation==="install"&&H?.plugin_id===_.id?"安装中...":"安装"]})]})})]},_.id))}),e.jsx($s,{open:i!==null,onOpenChange:z,children:i&&i.manifest&&e.jsx(Bs,{className:"max-w-2xl max-h-[80vh] p-0 flex flex-col",children:e.jsx(ss,{className:"flex-1 overflow-auto",children:e.jsxs("div",{className:"p-6",children:[e.jsx(Hs,{children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"space-y-2 flex-1",children:[e.jsx(qs,{className:"text-2xl",children:i.manifest.name}),e.jsxs(Is,{children:["作者: ",i.manifest.author?.name||"Unknown",i.manifest.author?.url&&e.jsx("a",{href:i.manifest.author.url,target:"_blank",rel:"noopener noreferrer",className:"ml-2 text-primary hover:underline",children:e.jsx(Xc,{className:"h-3 w-3 inline"})})]})]}),e.jsxs("div",{className:"flex flex-col gap-2",children:[i.manifest.categories&&i.manifest.categories[0]&&e.jsx(Ye,{variant:"secondary",children:pp[i.manifest.categories[0]]||i.manifest.categories[0]}),Se(i)]})]})}),e.jsxs("div",{className:"space-y-6",children:[e.jsx(C2,{pluginId:i.id}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"版本"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:["v",i.manifest?.version||"unknown"]}),i.installed&&i.installed_version&&e.jsxs("p",{className:"text-xs text-muted-foreground",children:["已安装: v",i.installed_version]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"下载量"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:(D[i.id]?.downloads??i.downloads??0).toLocaleString()})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"评分"}),e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(Ul,{className:"h-4 w-4 fill-yellow-400 text-yellow-400"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[(D[i.id]?.rating??i.rating??0).toFixed(1)," (",D[i.id]?.rating_count??i.review_count??0,")"]})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium",children:"许可证"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:i.manifest.license||"Unknown"})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("p",{className:"text-sm font-medium",children:"支持版本"}),e.jsxs("p",{className:"text-sm text-muted-foreground",children:[i.manifest.host_application?.min_version||"未知",i.manifest.host_application?.max_version?` - ${i.manifest.host_application.max_version}`:" - 最新版本"]})]})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"关键词"}),e.jsx("div",{className:"flex flex-wrap gap-2",children:i.manifest.keywords&&i.manifest.keywords.map(_=>e.jsx(Ye,{variant:"outline",children:_},_))})]}),i.detailed_description&&e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"详细说明"}),e.jsx("p",{className:"text-sm text-muted-foreground whitespace-pre-line",children:i.detailed_description})]}),!i.detailed_description&&e.jsxs("div",{children:[e.jsx("p",{className:"text-sm font-medium mb-2",children:"说明"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:i.manifest.description||"无描述"})]}),e.jsxs("div",{className:"space-y-2",children:[i.manifest.homepage_url&&e.jsxs("div",{className:"text-sm",children:[e.jsx("span",{className:"font-medium",children:"主页: "}),e.jsx("a",{href:i.manifest.homepage_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:i.manifest.homepage_url})]}),i.manifest.repository_url&&e.jsxs("div",{className:"text-sm",children:[e.jsx("span",{className:"font-medium",children:"仓库: "}),e.jsx("a",{href:i.manifest.repository_url,target:"_blank",rel:"noopener noreferrer",className:"text-primary hover:underline",children:i.manifest.repository_url})]})]})]}),e.jsxs(at,{children:[i.manifest.homepage_url&&e.jsxs(N,{onClick:()=>window.open(i.manifest.homepage_url,"_blank"),children:[e.jsx(Xc,{className:"h-4 w-4 mr-2"}),"访问主页"]}),i.manifest.repository_url&&e.jsxs(N,{variant:"outline",onClick:()=>window.open(i.manifest.repository_url,"_blank"),children:[e.jsx(Xc,{className:"h-4 w-4 mr-2"}),"查看仓库"]})]})]})})})})]})})}const Bu=DN,Hu=ON,qu=RN;function T2({field:n,value:i,onChange:c}){const[d,h]=u.useState(!1);switch(n.ui_type){case"switch":return e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5",children:[e.jsx(b,{children:n.label}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]}),e.jsx(Xe,{checked:!!i,onCheckedChange:c,disabled:n.disabled})]});case"number":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsx(oe,{type:"number",value:i??n.default,onChange:x=>c(parseFloat(x.target.value)||0),min:n.min,max:n.max,step:n.step??1,placeholder:n.placeholder,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"slider":return e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{children:n.label}),e.jsx("span",{className:"text-sm text-muted-foreground",children:i??n.default})]}),e.jsx(Ma,{value:[i??n.default],onValueChange:x=>c(x[0]),min:n.min??0,max:n.max??100,step:n.step??1,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"select":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsxs(He,{value:String(i??n.default),onValueChange:c,disabled:n.disabled,children:[e.jsx(Le,{children:e.jsx(qe,{placeholder:n.placeholder??"请选择"})}),e.jsx(Ue,{children:n.choices?.map(x=>e.jsx(le,{value:String(x),children:String(x)},String(x)))})]}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"textarea":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsx(Fs,{value:i??n.default,onChange:x=>c(x.target.value),placeholder:n.placeholder,rows:n.rows??3,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"password":return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsxs("div",{className:"relative",children:[e.jsx(oe,{type:d?"text":"password",value:i??"",onChange:x=>c(x.target.value),placeholder:n.placeholder,disabled:n.disabled,className:"pr-10"}),e.jsx(N,{type:"button",variant:"ghost",size:"icon",className:"absolute right-0 top-0 h-full px-3",onClick:()=>h(!d),children:d?e.jsx(xr,{className:"h-4 w-4"}):e.jsx(Dt,{className:"h-4 w-4"})})]}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]});case"text":default:return e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:n.label}),e.jsx(oe,{type:"text",value:i??n.default??"",onChange:x=>c(x.target.value),placeholder:n.placeholder,maxLength:n.max_length,disabled:n.disabled}),n.hint&&e.jsx("p",{className:"text-xs text-muted-foreground",children:n.hint})]})}}function gp({section:n,config:i,onChange:c}){const[d,h]=u.useState(!n.collapsed),x=Object.entries(n.fields).filter(([,f])=>!f.hidden).sort(([,f],[,j])=>f.order-j.order);return e.jsx(Bu,{open:d,onOpenChange:h,children:e.jsxs(Ze,{children:[e.jsx(Hu,{asChild:!0,children:e.jsxs(ys,{className:"cursor-pointer hover:bg-muted/50 transition-colors",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[d?e.jsx(Bl,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(ul,{className:"h-4 w-4 text-muted-foreground"}),e.jsx(ws,{className:"text-lg",children:n.title})]}),e.jsxs(Ye,{variant:"secondary",className:"text-xs",children:[x.length," 项"]})]}),n.description&&e.jsx(ct,{className:"ml-6",children:n.description})]})}),e.jsx(qu,{children:e.jsx(Ts,{className:"space-y-4 pt-0",children:x.map(([f,j])=>e.jsx(T2,{field:j,value:i[n.name]?.[f],onChange:p=>c(n.name,f,p),sectionName:n.name},f))})})]})})}function E2({plugin:n,onBack:i}){const{toast:c}=Gs(),[d,h]=u.useState(null),[x,f]=u.useState({}),[j,p]=u.useState({}),[w,v]=u.useState(!0),[y,S]=u.useState(!1),[C,M]=u.useState(!1),[F,U]=u.useState(!1),O=u.useCallback(async()=>{v(!0);try{const[D,ne]=await Promise.all([p2(n.id),g2(n.id)]);h(D),f(ne),p(JSON.parse(JSON.stringify(ne)))}catch(D){c({title:"加载配置失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}finally{v(!1)}},[n.id,c]);u.useEffect(()=>{O()},[O]),u.useEffect(()=>{M(JSON.stringify(x)!==JSON.stringify(j))},[x,j]);const K=(D,ne,xe)=>{f(_e=>({..._e,[D]:{..._e[D]||{},[ne]:xe}}))},H=async()=>{S(!0);try{await j2(n.id,x),p(JSON.parse(JSON.stringify(x))),c({title:"配置已保存",description:"更改将在插件重新加载后生效"})}catch(D){c({title:"保存失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}finally{S(!1)}},A=async()=>{try{await v2(n.id),c({title:"配置已重置",description:"下次加载插件时将使用默认配置"}),U(!1),O()}catch(D){c({title:"重置失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}},V=async()=>{try{const D=await N2(n.id);c({title:D.message,description:D.note}),O()}catch(D){c({title:"切换状态失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}};if(w)return e.jsx("div",{className:"flex items-center justify-center h-64",children:e.jsx(kt,{className:"h-8 w-8 animate-spin text-muted-foreground"})});if(!d)return e.jsxs("div",{className:"flex flex-col items-center justify-center h-64 space-y-4",children:[e.jsx(Oa,{className:"h-12 w-12 text-muted-foreground"}),e.jsx("p",{className:"text-muted-foreground",children:"无法加载配置"}),e.jsxs(N,{onClick:i,variant:"outline",children:[e.jsx(ii,{className:"h-4 w-4 mr-2"}),"返回"]})]});const Q=Object.values(d.sections).sort((D,ne)=>D.order-ne.order),T=x.plugin?.enabled!==!1;return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{className:"flex items-start gap-3",children:[e.jsx(N,{variant:"ghost",size:"icon",onClick:i,children:e.jsx(ii,{className:"h-5 w-5"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:d.plugin_info.name||n.manifest.name}),e.jsxs("div",{className:"flex items-center gap-2 mt-1",children:[e.jsx(Ye,{variant:T?"default":"secondary",children:T?"已启用":"已禁用"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:["v",d.plugin_info.version||n.manifest.version]})]})]})]}),e.jsxs("div",{className:"flex gap-2 ml-10 sm:ml-0",children:[e.jsxs(N,{variant:"outline",size:"sm",onClick:V,children:[e.jsx(br,{className:"h-4 w-4 mr-2"}),T?"禁用":"启用"]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:()=>U(!0),children:[e.jsx(Zc,{className:"h-4 w-4 mr-2"}),"重置"]}),e.jsxs(N,{size:"sm",onClick:H,disabled:!C||y,children:[y?e.jsx(kt,{className:"h-4 w-4 mr-2 animate-spin"}):e.jsx(yr,{className:"h-4 w-4 mr-2"}),"保存"]})]})]}),C&&e.jsx(Ze,{className:"border-orange-200 bg-orange-50 dark:bg-orange-950/20 dark:border-orange-900",children:e.jsx(Ts,{className:"py-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ra,{className:"h-4 w-4 text-orange-600"}),e.jsx("p",{className:"text-sm text-orange-800 dark:text-orange-200",children:"有未保存的更改"})]})})}),d.layout.type==="tabs"&&d.layout.tabs.length>0?e.jsxs(La,{defaultValue:d.layout.tabs[0]?.id,children:[e.jsx(wa,{children:d.layout.tabs.map(D=>e.jsxs(fs,{value:D.id,children:[D.title,D.badge&&e.jsx(Ye,{variant:"secondary",className:"ml-2 text-xs",children:D.badge})]},D.id))}),d.layout.tabs.map(D=>e.jsx(Ms,{value:D.id,className:"space-y-4 mt-4",children:D.sections.map(ne=>{const xe=d.sections[ne];return xe?e.jsx(gp,{section:xe,config:x,onChange:K},ne):null})},D.id))]}):e.jsx("div",{className:"space-y-4",children:Q.map(D=>e.jsx(gp,{section:D,config:x,onChange:K},D.name))}),e.jsx($s,{open:F,onOpenChange:U,children:e.jsxs(Bs,{children:[e.jsxs(Hs,{children:[e.jsx(qs,{children:"确认重置配置"}),e.jsx(Is,{children:"这将删除当前配置文件,下次加载插件时将使用默认配置。此操作不可撤销。"})]}),e.jsxs(at,{children:[e.jsx(N,{variant:"outline",onClick:()=>U(!1),children:"取消"}),e.jsx(N,{variant:"destructive",onClick:A,children:"确认重置"})]})]})})]})}function z2(){const{toast:n}=Gs(),[i,c]=u.useState([]),[d,h]=u.useState(!0),[x,f]=u.useState(""),[j,p]=u.useState(null),w=async()=>{h(!0);try{const C=await dr();c(C)}catch(C){n({title:"加载插件列表失败",description:C instanceof Error?C.message:"未知错误",variant:"destructive"})}finally{h(!1)}};u.useEffect(()=>{w()},[]);const v=i.filter(C=>{const M=x.toLowerCase();return C.id.toLowerCase().includes(M)||C.manifest.name.toLowerCase().includes(M)||C.manifest.description?.toLowerCase().includes(M)}),y=i.length,S=0;return j?e.jsx(ss,{className:"h-full",children:e.jsx("div",{className:"p-4 sm:p-6",children:e.jsx(E2,{plugin:j,onBack:()=>p(null)})})}):e.jsx(ss,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"插件配置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理和配置已安装的插件"})]}),e.jsxs(N,{variant:"outline",size:"sm",onClick:w,children:[e.jsx(Ct,{className:`h-4 w-4 mr-2 ${d?"animate-spin":""}`}),"刷新"]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-3",children:[e.jsxs(Ze,{children:[e.jsxs(ys,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(ws,{className:"text-sm font-medium",children:"已安装插件"}),e.jsx(dn,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(Ts,{children:[e.jsx("div",{className:"text-2xl font-bold",children:i.length}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:d?"正在加载...":"个插件"})]})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(ws,{className:"text-sm font-medium",children:"已启用"}),e.jsx(fa,{className:"h-4 w-4 text-green-600"})]}),e.jsxs(Ts,{children:[e.jsx("div",{className:"text-2xl font-bold",children:y}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"运行中的插件"})]})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(ws,{className:"text-sm font-medium",children:"已禁用"}),e.jsx(Oa,{className:"h-4 w-4 text-orange-600"})]}),e.jsxs(Ts,{children:[e.jsx("div",{className:"text-2xl font-bold",children:S}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"未激活的插件"})]})]})]}),e.jsxs("div",{className:"relative",children:[e.jsx(zt,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(oe,{placeholder:"搜索插件...",value:x,onChange:C=>f(C.target.value),className:"pl-9"})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{children:[e.jsx(ws,{children:"已安装的插件"}),e.jsx(ct,{children:"点击插件查看和编辑配置"})]}),e.jsx(Ts,{children:d?e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx(kt,{className:"h-8 w-8 animate-spin text-muted-foreground"})}):v.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 space-y-4",children:[e.jsx(dn,{className:"h-16 w-16 text-muted-foreground/50"}),e.jsxs("div",{className:"text-center space-y-2",children:[e.jsx("p",{className:"text-lg font-medium text-muted-foreground",children:x?"没有找到匹配的插件":"暂无已安装的插件"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:x?"尝试其他搜索关键词":"前往插件市场安装插件"})]})]}):e.jsx("div",{className:"space-y-2",children:v.map(C=>e.jsxs("div",{className:"flex items-center justify-between p-4 rounded-lg border hover:bg-muted/50 cursor-pointer transition-colors",onClick:()=>p(C),children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[e.jsx("div",{className:"h-10 w-10 rounded-lg bg-primary/10 flex items-center justify-center flex-shrink-0",children:e.jsx(dn,{className:"h-5 w-5 text-primary"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-medium truncate",children:C.manifest.name}),e.jsxs(Ye,{variant:"secondary",className:"text-xs flex-shrink-0",children:["v",C.manifest.version]})]}),e.jsx("p",{className:"text-sm text-muted-foreground truncate",children:C.manifest.description||"暂无描述"})]})]}),e.jsxs("div",{className:"flex items-center gap-2 flex-shrink-0",children:[e.jsx(N,{variant:"ghost",size:"sm",children:e.jsx(oi,{className:"h-4 w-4"})}),e.jsx(ul,{className:"h-4 w-4 text-muted-foreground"})]})]},C.id))})})]})]})})}function A2(){const n=ga(),{toast:i}=Gs(),[c,d]=u.useState([]),[h,x]=u.useState(!0),[f,j]=u.useState(null),[p,w]=u.useState(null),[v,y]=u.useState(!1),[S,C]=u.useState(!1),[M,F]=u.useState({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),U=u.useCallback(async()=>{try{x(!0),j(null);const T=localStorage.getItem("access-token"),D=await fetch("/api/webui/plugins/mirrors",{headers:{Authorization:`Bearer ${T}`}});if(!D.ok)throw new Error("获取镜像源列表失败");const ne=await D.json();d(ne.mirrors||[])}catch(T){const D=T instanceof Error?T.message:"加载镜像源失败";j(D),i({title:"加载失败",description:D,variant:"destructive"})}finally{x(!1)}},[i]);u.useEffect(()=>{U()},[U]);const O=async()=>{try{const T=localStorage.getItem("access-token"),D=await fetch("/api/webui/plugins/mirrors",{method:"POST",headers:{Authorization:`Bearer ${T}`,"Content-Type":"application/json"},body:JSON.stringify(M)});if(!D.ok){const ne=await D.json();throw new Error(ne.detail||"添加镜像源失败")}i({title:"添加成功",description:"镜像源已添加"}),y(!1),F({id:"",name:"",raw_prefix:"",clone_prefix:"",enabled:!0,priority:1}),U()}catch(T){i({title:"添加失败",description:T instanceof Error?T.message:"未知错误",variant:"destructive"})}},K=async()=>{if(p)try{const T=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${p.id}`,{method:"PUT",headers:{Authorization:`Bearer ${T}`,"Content-Type":"application/json"},body:JSON.stringify({name:M.name,raw_prefix:M.raw_prefix,clone_prefix:M.clone_prefix,enabled:M.enabled,priority:M.priority})})).ok)throw new Error("更新镜像源失败");i({title:"更新成功",description:"镜像源已更新"}),C(!1),w(null),U()}catch(T){i({title:"更新失败",description:T instanceof Error?T.message:"未知错误",variant:"destructive"})}},H=async T=>{if(confirm("确定要删除这个镜像源吗?"))try{const D=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${T}`,{method:"DELETE",headers:{Authorization:`Bearer ${D}`}})).ok)throw new Error("删除镜像源失败");i({title:"删除成功",description:"镜像源已删除"}),U()}catch(D){i({title:"删除失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}},A=async T=>{try{const D=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${T.id}`,{method:"PUT",headers:{Authorization:`Bearer ${D}`,"Content-Type":"application/json"},body:JSON.stringify({enabled:!T.enabled})})).ok)throw new Error("更新状态失败");U()}catch(D){i({title:"更新失败",description:D instanceof Error?D.message:"未知错误",variant:"destructive"})}},V=T=>{w(T),F({id:T.id,name:T.name,raw_prefix:T.raw_prefix,clone_prefix:T.clone_prefix,enabled:T.enabled,priority:T.priority}),C(!0)},Q=async(T,D)=>{const ne=D==="up"?T.priority-1:T.priority+1;if(!(ne<1))try{const xe=localStorage.getItem("access-token");if(!(await fetch(`/api/webui/plugins/mirrors/${T.id}`,{method:"PUT",headers:{Authorization:`Bearer ${xe}`,"Content-Type":"application/json"},body:JSON.stringify({priority:ne})})).ok)throw new Error("更新优先级失败");U()}catch(xe){i({title:"更新失败",description:xe instanceof Error?xe.message:"未知错误",variant:"destructive"})}};return e.jsx(ss,{className:"h-full",children:e.jsxs("div",{className:"space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx(N,{variant:"ghost",size:"icon",onClick:()=>n({to:"/plugins"}),children:e.jsx(ii,{className:"h-5 w-5"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"镜像源配置"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"管理 Git 克隆和文件下载的镜像源"})]})]}),e.jsxs(N,{onClick:()=>y(!0),children:[e.jsx(xt,{className:"h-4 w-4 mr-2"}),"添加镜像源"]})]}),h?e.jsx(Ze,{className:"p-6",children:e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(kt,{className:"h-8 w-8 animate-spin text-primary"})})}):f?e.jsx(Ze,{className:"p-6",children:e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-center",children:[e.jsx(ya,{className:"h-12 w-12 text-destructive mb-4"}),e.jsx("h3",{className:"text-lg font-semibold mb-2",children:"加载失败"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-4",children:f}),e.jsx(N,{onClick:U,children:"重新加载"})]})}):e.jsxs(Ze,{children:[e.jsx("div",{className:"hidden md:block",children:e.jsxs(hn,{children:[e.jsx(xn,{children:e.jsxs(ot,{children:[e.jsx(Ie,{children:"状态"}),e.jsx(Ie,{children:"名称"}),e.jsx(Ie,{children:"ID"}),e.jsx(Ie,{children:"优先级"}),e.jsx(Ie,{className:"text-right",children:"操作"})]})}),e.jsx(fn,{children:c.map(T=>e.jsxs(ot,{children:[e.jsx(Fe,{children:e.jsx(Xe,{checked:T.enabled,onCheckedChange:()=>A(T)})}),e.jsx(Fe,{children:e.jsxs("div",{children:[e.jsx("div",{className:"font-medium",children:T.name}),e.jsxs("div",{className:"text-xs text-muted-foreground mt-1",children:["Raw: ",T.raw_prefix]})]})}),e.jsx(Fe,{children:e.jsx(Ye,{variant:"outline",children:T.id})}),e.jsx(Fe,{children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"font-mono",children:T.priority}),e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx(N,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>Q(T,"up"),disabled:T.priority===1,children:e.jsx(pr,{className:"h-3 w-3"})}),e.jsx(N,{variant:"ghost",size:"icon",className:"h-5 w-5",onClick:()=>Q(T,"down"),children:e.jsx(Bl,{className:"h-3 w-3"})})]})]})}),e.jsx(Fe,{className:"text-right",children:e.jsxs("div",{className:"flex items-center justify-end gap-2",children:[e.jsx(N,{variant:"ghost",size:"icon",onClick:()=>V(T),children:e.jsx(on,{className:"h-4 w-4"})}),e.jsx(N,{variant:"ghost",size:"icon",onClick:()=>H(T.id),children:e.jsx(ls,{className:"h-4 w-4 text-destructive"})})]})})]},T.id))})]})}),e.jsx("div",{className:"md:hidden p-4 space-y-4",children:c.map(T=>e.jsx(Ze,{className:"p-4",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("h3",{className:"font-semibold",children:T.name}),T.enabled&&e.jsx(Ye,{variant:"default",className:"text-xs",children:"启用"})]}),e.jsx(Ye,{variant:"outline",className:"mt-1 text-xs",children:T.id})]}),e.jsx(Xe,{checked:T.enabled,onCheckedChange:()=>A(T)})]}),e.jsxs("div",{className:"text-sm space-y-1",children:[e.jsxs("div",{className:"text-muted-foreground",children:[e.jsx("span",{className:"font-medium",children:"Raw: "}),e.jsx("span",{className:"break-all",children:T.raw_prefix})]}),e.jsxs("div",{className:"text-muted-foreground",children:[e.jsx("span",{className:"font-medium",children:"优先级: "}),e.jsx("span",{className:"font-mono",children:T.priority})]})]}),e.jsxs("div",{className:"flex items-center gap-2 pt-2 border-t",children:[e.jsxs(N,{variant:"outline",size:"sm",className:"flex-1",onClick:()=>V(T),children:[e.jsx(on,{className:"h-4 w-4 mr-1"}),"编辑"]}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>Q(T,"up"),disabled:T.priority===1,children:e.jsx(pr,{className:"h-4 w-4"})}),e.jsx(N,{variant:"outline",size:"sm",onClick:()=>Q(T,"down"),children:e.jsx(Bl,{className:"h-4 w-4"})}),e.jsx(N,{variant:"destructive",size:"sm",onClick:()=>H(T.id),children:e.jsx(ls,{className:"h-4 w-4"})})]})]})},T.id))})]}),e.jsx($s,{open:v,onOpenChange:y,children:e.jsxs(Bs,{className:"max-w-lg",children:[e.jsxs(Hs,{children:[e.jsx(qs,{children:"添加镜像源"}),e.jsx(Is,{children:"添加新的 Git 镜像源配置"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-id",children:"镜像源 ID *"}),e.jsx(oe,{id:"add-id",placeholder:"例如: my-mirror",value:M.id,onChange:T=>F({...M,id:T.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-name",children:"名称 *"}),e.jsx(oe,{id:"add-name",placeholder:"例如: 我的镜像源",value:M.name,onChange:T=>F({...M,name:T.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-raw",children:"Raw 文件前缀 *"}),e.jsx(oe,{id:"add-raw",placeholder:"https://example.com/raw",value:M.raw_prefix,onChange:T=>F({...M,raw_prefix:T.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-clone",children:"克隆前缀 *"}),e.jsx(oe,{id:"add-clone",placeholder:"https://example.com/clone",value:M.clone_prefix,onChange:T=>F({...M,clone_prefix:T.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"add-priority",children:"优先级"}),e.jsx(oe,{id:"add-priority",type:"number",min:"1",value:M.priority,onChange:T=>F({...M,priority:parseInt(T.target.value)||1})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Xe,{id:"add-enabled",checked:M.enabled,onCheckedChange:T=>F({...M,enabled:T})}),e.jsx(b,{htmlFor:"add-enabled",children:"启用此镜像源"})]})]}),e.jsxs(at,{children:[e.jsx(N,{variant:"outline",onClick:()=>y(!1),children:"取消"}),e.jsx(N,{onClick:O,children:"添加"})]})]})}),e.jsx($s,{open:S,onOpenChange:C,children:e.jsxs(Bs,{className:"max-w-lg",children:[e.jsxs(Hs,{children:[e.jsx(qs,{children:"编辑镜像源"}),e.jsx(Is,{children:"修改镜像源配置"})]}),e.jsxs("div",{className:"space-y-4 py-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"镜像源 ID"}),e.jsx(oe,{value:M.id,disabled:!0})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit-name",children:"名称 *"}),e.jsx(oe,{id:"edit-name",value:M.name,onChange:T=>F({...M,name:T.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit-raw",children:"Raw 文件前缀 *"}),e.jsx(oe,{id:"edit-raw",value:M.raw_prefix,onChange:T=>F({...M,raw_prefix:T.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit-clone",children:"克隆前缀 *"}),e.jsx(oe,{id:"edit-clone",value:M.clone_prefix,onChange:T=>F({...M,clone_prefix:T.target.value})})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"edit-priority",children:"优先级"}),e.jsx(oe,{id:"edit-priority",type:"number",min:"1",value:M.priority,onChange:T=>F({...M,priority:parseInt(T.target.value)||1})}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"数字越小优先级越高"})]}),e.jsxs("div",{className:"flex items-center space-x-2",children:[e.jsx(Xe,{id:"edit-enabled",checked:M.enabled,onCheckedChange:T=>F({...M,enabled:T})}),e.jsx(b,{htmlFor:"edit-enabled",children:"启用此镜像源"})]})]}),e.jsxs(at,{children:[e.jsx(N,{variant:"outline",onClick:()=>C(!1),children:"取消"}),e.jsx(N,{onClick:K,children:"保存"})]})]})})]})})}const ur=u.forwardRef(({className:n,...i},c)=>e.jsx(Lp,{ref:c,className:$("relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full",n),...i}));ur.displayName=Lp.displayName;const M2=u.forwardRef(({className:n,...i},c)=>e.jsx(Up,{ref:c,className:$("aspect-square h-full w-full",n),...i}));M2.displayName=Up.displayName;const mr=u.forwardRef(({className:n,...i},c)=>e.jsx(Bp,{ref:c,className:$("flex h-full w-full items-center justify-center rounded-full bg-muted",n),...i}));mr.displayName=Bp.displayName;function D2(){return"webui_"+Math.random().toString(36).substr(2,9)+"_"+Date.now().toString(36)}function O2(){const n="maibot_webui_user_id";let i=localStorage.getItem(n);return i||(i=D2(),localStorage.setItem(n,i)),i}function R2(){return localStorage.getItem("maibot_webui_user_name")||"WebUI用户"}function L2(n){localStorage.setItem("maibot_webui_user_name",n)}const Bg="maibot_webui_virtual_tabs";function U2(){try{const n=localStorage.getItem(Bg);if(n)return JSON.parse(n)}catch(n){console.error("[Chat] 加载虚拟标签页失败:",n)}return[]}function jp(n){try{localStorage.setItem(Bg,JSON.stringify(n))}catch(i){console.error("[Chat] 保存虚拟标签页失败:",i)}}function B2(){const n={id:"webui-default",type:"webui",label:"WebUI",messages:[],isConnected:!1,isTyping:!1,sessionInfo:{}},i=()=>{const Re=U2().map(ze=>{const $e=ze.virtualConfig;return!$e.groupId&&$e.platform&&$e.userId&&($e.groupId=`webui_virtual_group_${$e.platform}_${$e.userId}`),{id:ze.id,type:"virtual",label:ze.label,virtualConfig:$e,messages:[],isConnected:!1,isTyping:!1,sessionInfo:{}}});return[n,...Re]},[c,d]=u.useState(i),[h,x]=u.useState("webui-default"),f=c.find(R=>R.id===h)||c[0],[j,p]=u.useState(""),[w,v]=u.useState(!1),[y,S]=u.useState(!0),[C,M]=u.useState(R2()),[F,U]=u.useState(!1),[O,K]=u.useState(""),[H,A]=u.useState(!1),[V,Q]=u.useState([]),[T,D]=u.useState([]),[ne,xe]=u.useState(!1),[_e,Se]=u.useState(!1),[ge,ye]=u.useState(""),[be,z]=u.useState({platform:"",personId:"",userId:"",userName:"",groupName:"",groupId:""}),X=u.useRef(O2()),k=u.useRef(new Map),se=u.useRef(null),_=u.useRef(new Map),ue=u.useRef(0),ie=u.useRef(new Map),{toast:ae}=Gs(),fe=R=>(ue.current+=1,`${R}-${Date.now()}-${ue.current}-${Math.random().toString(36).substr(2,9)}`),Ne=u.useCallback((R,Re)=>{d(ze=>ze.map($e=>$e.id===R?{...$e,...Re}:$e))},[]),me=u.useCallback((R,Re)=>{d(ze=>ze.map($e=>$e.id===R?{...$e,messages:[...$e.messages,Re]}:$e))},[]),G=u.useCallback(()=>{se.current?.scrollIntoView({behavior:"smooth"})},[]);u.useEffect(()=>{G()},[f?.messages,G]);const P=u.useCallback(async()=>{xe(!0);try{const R=await Te("/api/chat/platforms");if(console.log("[Chat] 平台列表响应:",R.status,R.headers.get("content-type")),R.ok){const Re=R.headers.get("content-type");if(Re&&Re.includes("application/json")){const ze=await R.json();console.log("[Chat] 平台列表数据:",ze),Q(ze.platforms||[])}else{const ze=await R.text();console.error("[Chat] 获取平台列表失败: 非 JSON 响应:",ze.substring(0,200)),ae({title:"连接失败",description:"无法连接到后端服务,请确保 MaiBot 已启动",variant:"destructive"})}}else console.error("[Chat] 获取平台列表失败: HTTP",R.status),ae({title:"获取平台失败",description:`服务器返回错误: ${R.status}`,variant:"destructive"})}catch(R){console.error("[Chat] 获取平台列表失败:",R),ae({title:"网络错误",description:"无法连接到后端服务",variant:"destructive"})}finally{xe(!1)}},[ae]),B=u.useCallback(async(R,Re)=>{Se(!0);try{const ze=new URLSearchParams;R&&ze.append("platform",R),Re&&ze.append("search",Re),ze.append("limit","50");const $e=await Te(`/api/chat/persons?${ze.toString()}`);if($e.ok){const Es=$e.headers.get("content-type");if(Es&&Es.includes("application/json")){const We=await $e.json();D(We.persons||[])}else console.error("[Chat] 获取用户列表失败: 后端返回非 JSON 响应")}}catch(ze){console.error("[Chat] 获取用户列表失败:",ze)}finally{Se(!1)}},[]);u.useEffect(()=>{be.platform&&B(be.platform,ge)},[be.platform,ge,B]);const W=u.useCallback(async(R,Re)=>{S(!0);try{const ze=new URLSearchParams;ze.append("user_id",X.current),ze.append("limit","50"),Re&&ze.append("group_id",Re);const $e=`/api/chat/history?${ze.toString()}`;console.log("[Chat] 正在加载历史消息:",$e);const Es=await Te($e);if(Es.ok){const We=await Es.text();try{const nt=JSON.parse(We);if(nt.messages&&nt.messages.length>0){const vs=nt.messages.map(ve=>({id:ve.id,type:ve.type,content:ve.content,timestamp:ve.timestamp,sender:{name:ve.sender_name||(ve.is_bot?"麦麦":"WebUI用户"),user_id:ve.user_id,is_bot:ve.is_bot}}));Ne(R,{messages:vs});const ke=ie.current.get(R)||new Set;vs.forEach(ve=>{if(ve.type==="bot"){const ns=`bot-${ve.content}-${Math.floor(ve.timestamp*1e3)}`;ke.add(ns)}}),ie.current.set(R,ke)}}catch(nt){console.error("[Chat] JSON 解析失败:",nt)}}}catch(ze){console.error("[Chat] 加载历史消息失败:",ze)}finally{S(!1)}},[Ne]),Ce=u.useCallback((R,Re,ze)=>{const $e=k.current.get(R);if($e?.readyState===WebSocket.OPEN||$e?.readyState===WebSocket.CONNECTING){console.log(`[Tab ${R}] WebSocket 已存在,跳过连接`);return}v(!0);const Es=window.location.protocol==="https:"?"wss:":"ws:",We=new URLSearchParams;Re==="virtual"&&ze?(We.append("user_id",ze.userId),We.append("user_name",ze.userName),We.append("platform",ze.platform),We.append("person_id",ze.personId),We.append("group_name",ze.groupName||"WebUI虚拟群聊"),ze.groupId&&We.append("group_id",ze.groupId)):(We.append("user_id",X.current),We.append("user_name",C));const nt=`${Es}//${window.location.host}/api/chat/ws?${We.toString()}`;console.log(`[Tab ${R}] 正在连接 WebSocket:`,nt);try{const vs=new WebSocket(nt);k.current.set(R,vs),vs.onopen=()=>{Ne(R,{isConnected:!0}),v(!1),console.log(`[Tab ${R}] WebSocket 已连接`)},vs.onmessage=ke=>{try{const ve=JSON.parse(ke.data);switch(ve.type){case"session_info":Ne(R,{sessionInfo:{session_id:ve.session_id,user_id:ve.user_id,user_name:ve.user_name,bot_name:ve.bot_name}});break;case"system":me(R,{id:fe("sys"),type:"system",content:ve.content||"",timestamp:ve.timestamp||Date.now()/1e3});break;case"user_message":{const ns=ve.sender?.user_id,_s=Re==="virtual"&&ze?ze.userId:X.current;if(ns===_s)break;me(R,{id:ve.message_id||fe("user"),type:"user",content:ve.content||"",timestamp:ve.timestamp||Date.now()/1e3,sender:ve.sender});break}case"bot_message":{Ne(R,{isTyping:!1});const ns=ie.current.get(R)||new Set,_s=`bot-${ve.content}-${Math.floor((ve.timestamp||0)*1e3)}`;if(ns.has(_s))break;if(ns.add(_s),ie.current.set(R,ns),ns.size>100){const At=ns.values().next().value;At&&ns.delete(At)}d(At=>At.map(Ps=>{if(Ps.id!==R)return Ps;const Ys=Ps.messages.filter(Et=>Et.type!=="thinking");return{...Ps,messages:[...Ys,{id:fe("bot"),type:"bot",content:ve.content||"",timestamp:ve.timestamp||Date.now()/1e3,sender:ve.sender}]}}));break}case"typing":Ne(R,{isTyping:ve.is_typing||!1});break;case"error":d(ns=>ns.map(_s=>{if(_s.id!==R)return _s;const At=_s.messages.filter(Ps=>Ps.type!=="thinking");return{..._s,messages:[...At,{id:fe("error"),type:"error",content:ve.content||"发生错误",timestamp:ve.timestamp||Date.now()/1e3}]}})),ae({title:"错误",description:ve.content,variant:"destructive"});break;case"pong":break;case"history":{const ns=ve.messages||[];if(ns.length>0){const _s=ie.current.get(R)||new Set,At=ns.map(Ps=>{const Ys=Ps.is_bot||!1,Et=Ps.id||fe(Ys?"bot":"user"),Rt=`${Ys?"bot":"user"}-${Ps.content}-${Math.floor(Ps.timestamp*1e3)}`;return _s.add(Rt),{id:Et,type:Ys?"bot":"user",content:Ps.content,timestamp:Ps.timestamp,sender:{name:Ps.sender_name||(Ys?"麦麦":"用户"),user_id:Ps.sender_id,is_bot:Ys}}});ie.current.set(R,_s),Ne(R,{messages:At}),console.log(`[Tab ${R}] 已加载 ${At.length} 条历史消息`)}break}default:console.log("未知消息类型:",ve.type)}}catch(ve){console.error("解析消息失败:",ve)}},vs.onclose=()=>{Ne(R,{isConnected:!1}),v(!1),k.current.delete(R),console.log(`[Tab ${R}] WebSocket 已断开`);const ke=_.current.get(R);ke&&clearTimeout(ke);const ve=window.setTimeout(()=>{if(!Me.current){const ns=c.find(_s=>_s.id===R);ns&&Ce(R,ns.type,ns.virtualConfig)}},5e3);_.current.set(R,ve)},vs.onerror=ke=>{console.error(`[Tab ${R}] WebSocket 错误:`,ke),v(!1)}}catch(vs){console.error(`[Tab ${R}] 创建 WebSocket 失败:`,vs),v(!1)}},[C,Ne,me,ae,c]),Me=u.useRef(!1);u.useEffect(()=>{Me.current=!1;const R=k.current,Re=_.current,ze=ie.current;W("webui-default");const $e=setTimeout(()=>{Me.current||(Ce("webui-default","webui"),c.forEach(We=>{We.type==="virtual"&&We.virtualConfig&&(ze.set(We.id,new Set),setTimeout(()=>{Me.current||Ce(We.id,"virtual",We.virtualConfig)},200))}))},100),Es=setInterval(()=>{R.forEach(We=>{We.readyState===WebSocket.OPEN&&We.send(JSON.stringify({type:"ping"}))})},3e4);return()=>{Me.current=!0,clearTimeout($e),clearInterval(Es),Re.forEach(We=>{clearTimeout(We)}),Re.clear(),R.forEach(We=>{We.close()}),R.clear()}},[]);const re=u.useCallback(()=>{const R=k.current.get(h);if(!j.trim()||!R||R.readyState!==WebSocket.OPEN)return;const Re=f?.type==="virtual"&&f.virtualConfig?.userName||C,ze=j.trim(),$e=Date.now()/1e3;R.send(JSON.stringify({type:"message",content:ze,user_name:Re}));const Es={id:fe("user"),type:"user",content:ze,timestamp:$e,sender:{name:Re,is_bot:!1}};me(h,Es);const We={id:fe("thinking"),type:"thinking",content:"",timestamp:$e+.001,sender:{name:f?.sessionInfo.bot_name||"麦麦",is_bot:!0}};me(h,We),p("")},[j,C,h,f,me]),De=R=>{R.key==="Enter"&&!R.shiftKey&&(R.preventDefault(),re())},Vs=()=>{K(C),U(!0)},Qs=()=>{const R=O.trim()||"WebUI用户";M(R),L2(R),U(!1);const Re=k.current.get(h);Re?.readyState===WebSocket.OPEN&&Re.send(JSON.stringify({type:"update_nickname",user_name:R}))},de=()=>{K(""),U(!1)},Ee=R=>new Date(R*1e3).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"}),ts=()=>{const R=k.current.get(h);R&&(R.close(),k.current.delete(h)),Ce(h,f?.type||"webui",f?.virtualConfig)},Ke=()=>{z({platform:"",personId:"",userId:"",userName:"",groupName:"",groupId:""}),ye(""),P(),A(!0)},lt=()=>{if(!be.platform||!be.personId){ae({title:"配置不完整",description:"请选择平台和用户",variant:"destructive"});return}const R=`webui_virtual_group_${be.platform}_${be.userId}`,Re=`virtual-${be.platform}-${be.userId}-${Date.now()}`,ze=be.userName||be.userId,$e={id:Re,type:"virtual",label:ze,virtualConfig:{...be,groupId:R},messages:[],isConnected:!1,isTyping:!1,sessionInfo:{}};d(Es=>{const We=[...Es,$e],nt=We.filter(vs=>vs.type==="virtual"&&vs.virtualConfig).map(vs=>({id:vs.id,label:vs.label,virtualConfig:vs.virtualConfig,createdAt:Date.now()}));return jp(nt),We}),x(Re),A(!1),ie.current.set(Re,new Set),setTimeout(()=>{Ce(Re,"virtual",be)},100),ae({title:"虚拟身份标签页",description:`已创建 ${ze} 的对话`})},Ot=(R,Re)=>{if(Re?.stopPropagation(),R==="webui-default")return;const ze=k.current.get(R);ze&&(ze.close(),k.current.delete(R));const $e=_.current.get(R);$e&&(clearTimeout($e),_.current.delete(R)),ie.current.delete(R),d(Es=>{const We=Es.filter(vs=>vs.id!==R),nt=We.filter(vs=>vs.type==="virtual"&&vs.virtualConfig).map(vs=>({id:vs.id,label:vs.label,virtualConfig:vs.virtualConfig,createdAt:Date.now()}));return jp(nt),We}),h===R&&x("webui-default")},bt=R=>{x(R)},Pe=R=>{z(Re=>({...Re,personId:R.person_id,userId:R.user_id,userName:R.nickname||R.person_name}))};return e.jsxs("div",{className:"h-full flex flex-col",children:[e.jsx($s,{open:H,onOpenChange:A,children:e.jsxs(Bs,{className:"sm:max-w-[500px] max-h-[85vh] overflow-hidden flex flex-col",children:[e.jsxs(Hs,{children:[e.jsxs(qs,{className:"flex items-center gap-2",children:[e.jsx(wu,{className:"h-5 w-5"}),"新建虚拟身份对话"]}),e.jsx(Is,{children:"选择一个麦麦已认识的用户,以该用户的身份与麦麦对话。麦麦将使用她对该用户的记忆和认知来回应。"})]}),e.jsxs("div",{className:"space-y-4 flex-1 overflow-hidden flex flex-col",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(b,{className:"flex items-center gap-2",children:[e.jsx(Du,{className:"h-4 w-4"}),"选择平台"]}),e.jsxs(He,{value:be.platform,onValueChange:R=>{z(Re=>({...Re,platform:R,personId:"",userId:"",userName:""})),D([])},children:[e.jsx(Le,{disabled:ne,children:e.jsx(qe,{placeholder:ne?"加载中...":"选择平台"})}),e.jsx(Ue,{children:V.map(R=>e.jsxs(le,{value:R.platform,children:[R.platform," (",R.count," 人)"]},R.platform))})]})]}),be.platform&&e.jsxs("div",{className:"space-y-2 flex-1 overflow-hidden flex flex-col",children:[e.jsxs(b,{className:"flex items-center gap-2",children:[e.jsx(Ou,{className:"h-4 w-4"}),"选择用户"]}),e.jsxs("div",{className:"relative",children:[e.jsx(zt,{className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),e.jsx(oe,{placeholder:"搜索用户名...",value:ge,onChange:R=>ye(R.target.value),className:"pl-9"})]}),e.jsx(ss,{className:"h-[250px] border rounded-md",children:e.jsx("div",{className:"p-2",children:_e?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(kt,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):T.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-8 text-muted-foreground",children:[e.jsx(Ou,{className:"h-8 w-8 mb-2 opacity-50"}),e.jsx("p",{className:"text-sm",children:"没有找到用户"})]}):e.jsx("div",{className:"space-y-1",children:T.map(R=>e.jsxs("button",{onClick:()=>Pe(R),className:$("w-full flex items-center gap-3 p-2 rounded-md text-left transition-colors",be.personId===R.person_id?"bg-primary text-primary-foreground":"hover:bg-muted"),children:[e.jsx(ur,{className:"h-8 w-8 shrink-0",children:e.jsx(mr,{className:$("text-xs",be.personId===R.person_id?"bg-primary-foreground/20":"bg-muted"),children:(R.nickname||R.person_name||"?").charAt(0)})}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsx("div",{className:"font-medium truncate",children:R.nickname||R.person_name}),e.jsxs("div",{className:$("text-xs truncate",be.personId===R.person_id?"text-primary-foreground/70":"text-muted-foreground"),children:["ID: ",R.user_id,R.is_known&&" · 已认识"]})]})]},R.person_id))})})})]}),be.personId&&e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{children:"虚拟群名(可选)"}),e.jsx(oe,{placeholder:"WebUI虚拟群聊",value:be.groupName,onChange:R=>z(Re=>({...Re,groupName:R.target.value}))}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"麦麦会认为这是一个名为此名称的群聊"})]})]}),e.jsxs(at,{className:"gap-2 sm:gap-0",children:[e.jsx(N,{variant:"outline",onClick:()=>A(!1),children:"取消"}),e.jsx(N,{onClick:lt,disabled:!be.platform||!be.personId,children:"创建对话"})]})]})}),e.jsx("div",{className:"shrink-0 border-b bg-muted/30",children:e.jsx("div",{className:"max-w-4xl mx-auto px-2 sm:px-4",children:e.jsxs("div",{className:"flex items-center gap-1 overflow-x-auto py-1.5 scrollbar-thin",children:[c.map(R=>e.jsxs("button",{onClick:()=>bt(R.id),className:$("flex items-center gap-1.5 px-3 py-1.5 rounded-md text-sm whitespace-nowrap transition-colors","hover:bg-muted",h===R.id?"bg-background shadow-sm border":"text-muted-foreground"),children:[R.type==="webui"?e.jsx(un,{className:"h-3.5 w-3.5"}):e.jsx(wu,{className:"h-3.5 w-3.5"}),e.jsx("span",{className:"max-w-[100px] truncate",children:R.label}),e.jsx("span",{className:$("w-1.5 h-1.5 rounded-full",R.isConnected?"bg-green-500":"bg-muted-foreground/50")}),R.id!=="webui-default"&&e.jsx("button",{onClick:Re=>Ot(R.id,Re),className:"ml-0.5 p-0.5 rounded hover:bg-muted-foreground/20",children:e.jsx(dl,{className:"h-3 w-3"})})]},R.id)),e.jsx("button",{onClick:Ke,className:"flex items-center gap-1 px-2 py-1.5 rounded-md text-sm text-muted-foreground hover:bg-muted hover:text-foreground transition-colors",title:"新建虚拟身份对话",children:e.jsx(xt,{className:"h-3.5 w-3.5"})})]})})}),e.jsx("div",{className:"shrink-0 border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:e.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:[e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsxs("div",{className:"flex items-center gap-2 sm:gap-3 min-w-0",children:[e.jsx(ur,{className:"h-8 w-8 sm:h-10 sm:w-10 shrink-0",children:e.jsx(mr,{className:"bg-primary/10 text-primary",children:e.jsx(cr,{className:"h-4 w-4 sm:h-5 sm:w-5"})})}),e.jsxs("div",{className:"min-w-0",children:[e.jsx("h1",{className:"text-base sm:text-lg font-semibold truncate",children:f?.sessionInfo.bot_name||"麦麦"}),e.jsx("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground",children:f?.isConnected?e.jsxs(e.Fragment,{children:[e.jsx(Ab,{className:"h-3 w-3 text-green-500"}),e.jsx("span",{className:"text-green-600 dark:text-green-400",children:"已连接"})]}):w?e.jsxs(e.Fragment,{children:[e.jsx(kt,{className:"h-3 w-3 animate-spin"}),e.jsx("span",{children:"连接中..."})]}):e.jsxs(e.Fragment,{children:[e.jsx(Mb,{className:"h-3 w-3 text-red-500"}),e.jsx("span",{className:"text-red-600 dark:text-red-400",children:"未连接"})]})})]})]}),e.jsxs("div",{className:"flex items-center gap-1 shrink-0",children:[y&&e.jsx(kt,{className:"h-4 w-4 animate-spin text-muted-foreground"}),e.jsx(N,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:ts,disabled:w,title:"重新连接",children:e.jsx(Ct,{className:$("h-4 w-4",w&&"animate-spin")})})]})]}),e.jsx("div",{className:"hidden sm:flex items-center gap-2 mt-2 text-sm text-muted-foreground",children:f?.type==="virtual"&&f.virtualConfig?e.jsxs(e.Fragment,{children:[e.jsx(wu,{className:"h-3 w-3 text-primary"}),e.jsx("span",{children:"虚拟身份:"}),e.jsx("span",{className:"font-medium text-primary",children:f.virtualConfig.userName}),e.jsxs("span",{className:"text-xs",children:["(",f.virtualConfig.platform,")"]}),f.virtualConfig.groupName&&e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"mx-1",children:"·"}),e.jsxs("span",{className:"text-xs",children:["群:",f.virtualConfig.groupName]})]})]}):e.jsxs(e.Fragment,{children:[e.jsx(Wc,{className:"h-3 w-3"}),e.jsx("span",{children:"当前身份:"}),F?e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(oe,{value:O,onChange:R=>K(R.target.value),onKeyDown:R=>{R.key==="Enter"&&Qs(),R.key==="Escape"&&de()},className:"h-7 w-32",placeholder:"输入昵称",autoFocus:!0}),e.jsx(N,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:Qs,children:"保存"}),e.jsx(N,{size:"sm",variant:"ghost",className:"h-7 px-2",onClick:de,children:"取消"})]}):e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("span",{className:"font-medium text-foreground",children:C}),e.jsx(N,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0",onClick:Vs,title:"修改昵称",children:e.jsx(Db,{className:"h-3 w-3"})})]})]})})]})}),e.jsx("div",{className:"flex-1 overflow-hidden",children:e.jsx(ss,{className:"h-full",children:e.jsxs("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto space-y-3 sm:space-y-4",children:[f?.messages.length===0&&!y&&e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-muted-foreground",children:[e.jsx(cr,{className:"h-12 w-12 mb-4 opacity-50"}),e.jsxs("p",{className:"text-sm",children:["开始与 ",f?.sessionInfo.bot_name||"麦麦"," 对话吧!"]})]}),f?.messages.map(R=>e.jsxs("div",{className:$("flex gap-2 sm:gap-3",R.type==="user"&&"flex-row-reverse",R.type==="system"&&"justify-center",R.type==="error"&&"justify-center"),children:[R.type==="system"&&e.jsx("div",{className:"text-xs text-muted-foreground bg-muted/50 px-3 py-1 rounded-full max-w-[90%]",children:R.content}),R.type==="error"&&e.jsx("div",{className:"text-xs text-red-600 dark:text-red-400 bg-red-100 dark:bg-red-900/30 px-3 py-1 rounded-full max-w-[90%]",children:R.content}),R.type==="thinking"&&e.jsxs(e.Fragment,{children:[e.jsx(ur,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:e.jsx(mr,{className:"bg-primary/10 text-primary",children:e.jsx(cr,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),e.jsxs("div",{className:"flex flex-col gap-1 max-w-[75%] sm:max-w-[70%]",children:[e.jsx("div",{className:"flex items-center gap-2 text-[10px] sm:text-xs text-muted-foreground",children:e.jsx("span",{className:"hidden sm:inline",children:R.sender?.name||f?.sessionInfo.bot_name})}),e.jsx("div",{className:"bg-muted rounded-2xl rounded-tl-sm px-4 py-3",children:e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("div",{className:"flex gap-1",children:[e.jsx("span",{className:"w-2 h-2 bg-primary/60 rounded-full animate-bounce",style:{animationDelay:"0ms"}}),e.jsx("span",{className:"w-2 h-2 bg-primary/60 rounded-full animate-bounce",style:{animationDelay:"150ms"}}),e.jsx("span",{className:"w-2 h-2 bg-primary/60 rounded-full animate-bounce",style:{animationDelay:"300ms"}})]}),e.jsx("span",{className:"text-xs text-muted-foreground ml-1",children:"思考中..."})]})})]})]}),(R.type==="user"||R.type==="bot")&&e.jsxs(e.Fragment,{children:[e.jsx(ur,{className:"h-7 w-7 sm:h-8 sm:w-8 shrink-0",children:e.jsx(mr,{className:$("text-xs",R.type==="bot"?"bg-primary/10 text-primary":"bg-secondary text-secondary-foreground"),children:R.type==="bot"?e.jsx(cr,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"}):e.jsx(Wc,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4"})})}),e.jsxs("div",{className:$("flex flex-col gap-1 max-w-[75%] sm:max-w-[70%]",R.type==="user"&&"items-end"),children:[e.jsxs("div",{className:"flex items-center gap-2 text-[10px] sm:text-xs text-muted-foreground",children:[e.jsx("span",{className:"hidden sm:inline",children:R.sender?.name||(R.type==="bot"?f?.sessionInfo.bot_name:C)}),e.jsx("span",{children:Ee(R.timestamp)})]}),e.jsx("div",{className:$("rounded-2xl px-3 py-2 text-sm whitespace-pre-wrap break-words",R.type==="bot"?"bg-muted rounded-tl-sm":"bg-primary text-primary-foreground rounded-tr-sm"),children:R.content})]})]})]},R.id)),e.jsx("div",{ref:se})]})})}),e.jsx("div",{className:"shrink-0 border-t bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:e.jsx("div",{className:"p-3 sm:p-4 max-w-4xl mx-auto",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(oe,{value:j,onChange:R=>p(R.target.value),onKeyDown:De,placeholder:f?.isConnected?"输入消息...":"等待连接...",disabled:!f?.isConnected,className:"flex-1 h-10 sm:h-10"}),e.jsx(N,{onClick:re,disabled:!f?.isConnected||!j.trim(),size:"icon",className:"h-10 w-10 shrink-0",children:e.jsx(Ob,{className:"h-4 w-4"})})]})})})]})}function H2(){const n=ga(),[i,c]=u.useState(!0);return u.useEffect(()=>{let d=!1;return(async()=>{try{const x=await Ku();!d&&!x&&n({to:"/auth"})}catch{d||n({to:"/auth"})}finally{d||c(!1)}})(),()=>{d=!0}},[n]),{checking:i}}async function q2(){return await Ku()}const G2=ci("pointer-events-none inline-flex select-none items-center gap-1 rounded border bg-muted px-1.5 font-mono font-medium opacity-100",{variants:{size:{sm:"h-5 text-[10px]",default:"h-6 text-xs",lg:"h-7 text-sm"}},defaultVariants:{size:"default"}}),Hg=u.forwardRef(({className:n,size:i,abbrTitle:c,children:d,...h},x)=>e.jsx("kbd",{className:$(G2({size:i,className:n})),ref:x,...h,children:c?e.jsx("abbr",{title:c,children:d}):d}));Hg.displayName="Kbd";const V2=[{icon:ao,title:"首页",description:"查看仪表板概览",path:"/",category:"概览"},{icon:Da,title:"麦麦主程序配置",description:"配置麦麦的核心设置",path:"/config/bot",category:"配置"},{icon:mg,title:"麦麦模型提供商配置",description:"配置模型提供商",path:"/config/modelProvider",category:"配置"},{icon:hg,title:"麦麦模型配置",description:"配置模型参数",path:"/config/model",category:"配置"},{icon:Gu,title:"表情包管理",description:"管理麦麦的表情包",path:"/resource/emoji",category:"资源"},{icon:un,title:"表达方式管理",description:"管理麦麦的表达方式",path:"/resource/expression",category:"资源"},{icon:xg,title:"人物信息管理",description:"管理人物信息",path:"/resource/person",category:"资源"},{icon:ri,title:"黑话管理",description:"管理麦麦学习到的黑话和俚语",path:"/resource/jargon",category:"资源"},{icon:Rb,title:"统计信息",description:"查看使用统计",path:"/statistics",category:"监控"},{icon:dn,title:"插件市场",description:"浏览和安装插件",path:"/plugins",category:"扩展"},{icon:Vu,title:"日志查看器",description:"查看系统日志",path:"/logs",category:"监控"},{icon:oi,title:"系统设置",description:"配置系统参数",path:"/settings",category:"系统"}];function F2({open:n,onOpenChange:i}){const[c,d]=u.useState(""),[h,x]=u.useState(0),f=ga(),j=V2.filter(v=>v.title.toLowerCase().includes(c.toLowerCase())||v.description.toLowerCase().includes(c.toLowerCase())||v.category.toLowerCase().includes(c.toLowerCase()));u.useEffect(()=>{n&&(d(""),x(0))},[n]);const p=u.useCallback(v=>{f({to:v}),i(!1)},[f,i]),w=u.useCallback(v=>{v.key==="ArrowDown"?(v.preventDefault(),x(y=>(y+1)%j.length)):v.key==="ArrowUp"?(v.preventDefault(),x(y=>(y-1+j.length)%j.length)):v.key==="Enter"&&j[h]&&(v.preventDefault(),p(j[h].path))},[j,h,p]);return e.jsx($s,{open:n,onOpenChange:i,children:e.jsxs(Bs,{className:"max-w-2xl p-0 gap-0",children:[e.jsxs(Hs,{className:"px-4 pt-4 pb-0",children:[e.jsx(qs,{className:"sr-only",children:"搜索"}),e.jsxs("div",{className:"relative",children:[e.jsx(zt,{className:"absolute left-3 top-1/2 h-5 w-5 -translate-y-1/2 text-muted-foreground"}),e.jsx(oe,{value:c,onChange:v=>{d(v.target.value),x(0)},onKeyDown:w,placeholder:"搜索页面...",className:"h-12 pl-11 text-base border-0 focus-visible:ring-0 shadow-none",autoFocus:!0})]})]}),e.jsx("div",{className:"border-t",children:e.jsx(ss,{className:"h-[400px]",children:j.length>0?e.jsx("div",{className:"p-2",children:j.map((v,y)=>{const S=v.icon;return e.jsxs("button",{onClick:()=>p(v.path),onMouseEnter:()=>x(y),className:$("w-full flex items-center gap-3 px-3 py-2.5 rounded-md text-left transition-colors",y===h?"bg-accent text-accent-foreground":"hover:bg-accent/50"),children:[e.jsx(S,{className:"h-5 w-5 flex-shrink-0"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-sm",children:v.title}),e.jsx("div",{className:"text-xs text-muted-foreground truncate",children:v.description})]}),e.jsx("div",{className:"text-xs text-muted-foreground px-2 py-1 bg-muted rounded",children:v.category})]},v.path)})}):e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 text-center",children:[e.jsx(zt,{className:"h-12 w-12 text-muted-foreground/50 mb-4"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:c?"未找到匹配的页面":"输入关键词开始搜索"})]})})}),e.jsx("div",{className:"border-t px-4 py-3 flex items-center justify-between text-xs text-muted-foreground",children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↑"}),e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"↓"}),"导航"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Enter"}),"选择"]}),e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx("kbd",{className:"px-1.5 py-0.5 bg-muted rounded border",children:"Esc"}),"关闭"]})]})})]})})}const $2=lb,Q2=nb,Y2=ib,qg=u.forwardRef(({className:n,sideOffset:i=4,...c},d)=>e.jsx(ab,{children:e.jsx(Pp,{ref:d,sideOffset:i,className:$("z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]",n),...c})}));qg.displayName=Pp.displayName;function X2({children:n}){const{checking:i}=H2(),[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),{theme:p,setTheme:w}=$u(),v=iN();if(u.useEffect(()=>{const F=U=>{(U.metaKey||U.ctrlKey)&&U.key==="k"&&(U.preventDefault(),j(!0))};return window.addEventListener("keydown",F),()=>window.removeEventListener("keydown",F)},[]),i)return e.jsx("div",{className:"flex h-screen items-center justify-center bg-background",children:e.jsx("div",{className:"text-muted-foreground",children:"正在验证登录状态..."})});const y=[{title:"概览",items:[{icon:ao,label:"首页",path:"/"}]},{title:"麦麦配置编辑",items:[{icon:Da,label:"麦麦主程序配置",path:"/config/bot"},{icon:mg,label:"AI模型厂商配置",path:"/config/modelProvider",tourId:"sidebar-model-provider"},{icon:hg,label:"模型管理与分配",path:"/config/model",tourId:"sidebar-model-management"},{icon:Xf,label:"麦麦适配器配置",path:"/config/adapter"}]},{title:"麦麦资源管理",items:[{icon:Gu,label:"表情包管理",path:"/resource/emoji"},{icon:un,label:"表达方式管理",path:"/resource/expression"},{icon:ri,label:"黑话管理",path:"/resource/jargon"},{icon:xg,label:"人物信息管理",path:"/resource/person"},{icon:ug,label:"知识库图谱可视化",path:"/resource/knowledge-graph"}]},{title:"扩展与监控",items:[{icon:dn,label:"插件市场",path:"/plugins"},{icon:Xf,label:"插件配置",path:"/plugin-config"},{icon:Vu,label:"日志查看器",path:"/logs"},{icon:un,label:"本地聊天室",path:"/chat"}]},{title:"系统",items:[{icon:oi,label:"系统设置",path:"/settings"}]}],C=p==="system"?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":p,M=async()=>{await l0()};return e.jsx($2,{delayDuration:300,children:e.jsxs("div",{className:"flex h-screen overflow-hidden",children:[e.jsxs("aside",{className:$("fixed inset-y-0 left-0 z-50 flex flex-col border-r bg-card transition-all duration-300 lg:relative lg:z-0","w-64 lg:w-auto",c?"lg:w-64":"lg:w-16",h?"translate-x-0":"-translate-x-full lg:translate-x-0"),children:[e.jsx("div",{className:"flex h-16 items-center border-b px-4",children:e.jsxs("div",{className:$("relative flex items-center justify-center flex-1 transition-all overflow-hidden","lg:flex-1",!c&&"lg:flex-none lg:w-8"),children:[e.jsxs("div",{className:$("flex items-baseline gap-2",!c&&"lg:hidden"),children:[e.jsx("span",{className:"font-bold text-xl text-primary-gradient whitespace-nowrap",children:"MaiBot WebUI"}),e.jsx("span",{className:"text-xs text-primary/60 whitespace-nowrap",children:Vy()})]}),!c&&e.jsx("span",{className:"hidden lg:block font-bold text-primary-gradient text-2xl",children:"M"})]})}),e.jsx(ss,{className:$("flex-1 overflow-x-hidden",!c&&"lg:w-16"),children:e.jsx("nav",{className:$("p-4",!c&&"lg:p-2 lg:w-16"),children:e.jsx("ul",{className:$("space-y-6",!c&&"lg:space-y-3 lg:w-full"),children:y.map((F,U)=>e.jsxs("li",{children:[e.jsx("div",{className:$("px-3 h-[1.25rem]","mb-2",!c&&"lg:mb-1 lg:invisible"),children:e.jsx("h3",{className:"text-xs font-semibold uppercase tracking-wider text-muted-foreground/60 whitespace-nowrap",children:F.title})}),!c&&U>0&&e.jsx("div",{className:"hidden lg:block mb-2 border-t border-border"}),e.jsx("ul",{className:"space-y-1",children:F.items.map(O=>{const K=v({to:O.path}),H=O.icon,A=e.jsxs(e.Fragment,{children:[K&&e.jsx("div",{className:"absolute left-0 top-1/2 h-8 w-1 -translate-y-1/2 rounded-r-full bg-primary transition-opacity duration-300"}),e.jsxs("div",{className:$("flex items-center transition-all duration-300",c?"gap-3":"gap-3 lg:gap-0"),children:[e.jsx(H,{className:$("h-5 w-5 flex-shrink-0",K&&"text-primary"),strokeWidth:2,fill:"none"}),e.jsx("span",{className:$("text-sm font-medium whitespace-nowrap transition-all duration-300",K&&"font-semibold",c?"opacity-100 max-w-[200px]":"opacity-100 max-w-[200px] lg:opacity-0 lg:max-w-0 lg:overflow-hidden"),children:O.label})]})]});return e.jsx("li",{className:"relative",children:e.jsxs(Q2,{children:[e.jsx(Y2,{asChild:!0,children:e.jsx(Yc,{to:O.path,"data-tour":O.tourId,className:$("relative flex items-center rounded-lg py-2 transition-all duration-300","hover:bg-accent hover:text-accent-foreground",K?"bg-accent text-foreground":"text-muted-foreground hover:text-foreground",c?"px-3":"px-3 lg:px-0 lg:justify-center lg:w-12 lg:mx-auto"),onClick:()=>x(!1),children:A})}),!c&&e.jsx(qg,{side:"right",className:"hidden lg:block",children:e.jsx("p",{children:O.label})})]})},O.path)})})]},F.title))})})})]}),h&&e.jsx("div",{className:"fixed inset-0 z-40 bg-black/50 lg:hidden",onClick:()=>x(!1)}),e.jsxs("div",{className:"flex flex-1 flex-col overflow-hidden",children:[e.jsxs("header",{className:"flex h-16 items-center justify-between border-b bg-card/80 backdrop-blur-md px-4 sticky top-0 z-10",children:[e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("button",{onClick:()=>x(!h),className:"rounded-lg p-2 hover:bg-accent lg:hidden",children:e.jsx(Lb,{className:"h-5 w-5"})}),e.jsx("button",{onClick:()=>d(!c),className:"hidden rounded-lg p-2 hover:bg-accent lg:block",title:c?"收起侧边栏":"展开侧边栏",children:e.jsx(Hl,{className:$("h-5 w-5 transition-transform",!c&&"rotate-180")})})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsxs("button",{onClick:()=>j(!0),className:"relative hidden md:flex items-center w-64 h-9 pl-9 pr-16 bg-background/50 border rounded-md hover:bg-accent/50 transition-colors text-left",children:[e.jsx(zt,{className:"absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground"}),e.jsx("span",{className:"text-sm text-muted-foreground",children:"搜索..."}),e.jsxs(Hg,{size:"sm",className:"absolute right-2 top-1/2 -translate-y-1/2",children:[e.jsx("span",{className:"text-xs",children:"⌘"}),"K"]})]}),e.jsx(F2,{open:f,onOpenChange:j}),e.jsxs(N,{variant:"ghost",size:"sm",onClick:()=>window.open("https://docs.mai-mai.org","_blank"),className:"gap-2",title:"查看麦麦文档",children:[e.jsx(Ub,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:"麦麦文档"})]}),e.jsx("button",{onClick:F=>{Uy(C==="dark"?"light":"dark",w,F)},className:"rounded-lg p-2 hover:bg-accent",title:C==="dark"?"切换到浅色模式":"切换到深色模式",children:C==="dark"?e.jsx(ig,{className:"h-5 w-5"}):e.jsx(rg,{className:"h-5 w-5"})}),e.jsx("div",{className:"h-6 w-px bg-border"}),e.jsxs(N,{variant:"ghost",size:"sm",onClick:M,className:"gap-2",title:"登出系统",children:[e.jsx(Bb,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:"登出"})]})]})]}),e.jsx("main",{className:"flex-1 overflow-hidden bg-background",children:n})]})]})})}function K2(n){const i=n.split(` +`).slice(1),c=[];for(const d of i){const h=d.trim();if(!h.startsWith("at "))continue;const x=h.match(/at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?$/);x?c.push({functionName:x[1]||"",fileName:x[2],lineNumber:x[3],columnNumber:x[4],raw:h}):c.push({functionName:"",fileName:"",lineNumber:"",columnNumber:"",raw:h})}return c}function J2({error:n,errorInfo:i}){const[c,d]=u.useState(!0),[h,x]=u.useState(!1),[f,j]=u.useState(!1),p=n.stack?K2(n.stack):[],w=async()=>{const v=` +Error: ${n.name} +Message: ${n.message} + +Stack Trace: +${n.stack||"No stack trace available"} + +Component Stack: +${i?.componentStack||"No component stack available"} + +URL: ${window.location.href} +User Agent: ${navigator.userAgent} +Time: ${new Date().toISOString()} + `.trim();try{await navigator.clipboard.writeText(v),j(!0),setTimeout(()=>j(!1),2e3)}catch(y){console.error("Failed to copy:",y)}};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs(cl,{variant:"destructive",className:"border-red-500/50 bg-red-500/10",children:[e.jsx(ya,{className:"h-4 w-4"}),e.jsxs(ol,{className:"font-mono text-sm",children:[e.jsxs("span",{className:"font-semibold",children:[n.name,":"]})," ",n.message]})]}),p.length>0&&e.jsxs(Bu,{open:c,onOpenChange:d,children:[e.jsx(Hu,{asChild:!0,children:e.jsxs(N,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[e.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[e.jsx(Hb,{className:"h-4 w-4"}),"Stack Trace (",p.length," frames)"]}),c?e.jsx(pr,{className:"h-4 w-4"}):e.jsx(Bl,{className:"h-4 w-4"})]})}),e.jsx(qu,{children:e.jsx(ss,{className:"h-[280px] rounded-md border bg-muted/30",children:e.jsx("div",{className:"p-3 space-y-1",children:p.map((v,y)=>e.jsx("div",{className:"font-mono text-xs p-2 rounded hover:bg-muted/50 transition-colors",children:e.jsxs("div",{className:"flex items-start gap-2",children:[e.jsxs("span",{className:"text-muted-foreground w-6 text-right flex-shrink-0",children:[y+1,"."]}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("span",{className:"text-primary font-medium",children:v.functionName}),v.fileName&&e.jsxs("div",{className:"text-muted-foreground mt-0.5 break-all",children:[v.fileName,v.lineNumber&&e.jsxs("span",{className:"text-yellow-600 dark:text-yellow-400",children:[":",v.lineNumber,":",v.columnNumber]})]})]})]})},y))})})})]}),i?.componentStack&&e.jsxs(Bu,{open:h,onOpenChange:x,children:[e.jsx(Hu,{asChild:!0,children:e.jsxs(N,{variant:"ghost",className:"w-full justify-between p-3 h-auto",children:[e.jsxs("span",{className:"font-semibold text-sm flex items-center gap-2",children:[e.jsx(ya,{className:"h-4 w-4"}),"Component Stack"]}),h?e.jsx(pr,{className:"h-4 w-4"}):e.jsx(Bl,{className:"h-4 w-4"})]})}),e.jsx(qu,{children:e.jsx(ss,{className:"h-[200px] rounded-md border bg-muted/30",children:e.jsx("pre",{className:"p-3 font-mono text-xs whitespace-pre-wrap text-muted-foreground",children:i.componentStack})})})]}),e.jsx(N,{variant:"outline",size:"sm",onClick:w,className:"w-full",children:f?e.jsxs(e.Fragment,{children:[e.jsx(sa,{className:"mr-2 h-4 w-4 text-green-500"}),"已复制到剪贴板"]}):e.jsxs(e.Fragment,{children:[e.jsx(Pc,{className:"mr-2 h-4 w-4"}),"复制错误信息"]})})]})}function Gg({error:n,errorInfo:i}){const c=()=>{window.location.href="/"},d=()=>{window.location.reload()};return e.jsx("div",{className:"min-h-screen flex items-center justify-center bg-background p-4",children:e.jsxs(Ze,{className:"w-full max-w-2xl shadow-lg",children:[e.jsxs(ys,{className:"text-center pb-2",children:[e.jsx("div",{className:"mx-auto flex h-16 w-16 items-center justify-center rounded-full bg-red-100 dark:bg-red-900/30 mb-4",children:e.jsx(ya,{className:"h-8 w-8 text-red-600 dark:text-red-400"})}),e.jsx(ws,{className:"text-2xl font-bold",children:"页面出现了问题"}),e.jsx(ct,{className:"text-base mt-2",children:"应用程序遇到了意外错误。您可以尝试刷新页面或返回首页。"})]}),e.jsxs(Ts,{className:"space-y-4",children:[e.jsx(J2,{error:n,errorInfo:i}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2 pt-2",children:[e.jsxs(N,{onClick:d,className:"flex-1",children:[e.jsx(Ct,{className:"mr-2 h-4 w-4"}),"刷新页面"]}),e.jsxs(N,{onClick:c,variant:"outline",className:"flex-1",children:[e.jsx(ao,{className:"mr-2 h-4 w-4"}),"返回首页"]})]}),e.jsx("p",{className:"text-xs text-center text-muted-foreground pt-2",children:"如果问题持续存在,请将错误信息复制并反馈给开发者"})]})]})})}class Z2 extends u.Component{constructor(i){super(i),this.state={hasError:!1,error:null,errorInfo:null}}static getDerivedStateFromError(i){return{hasError:!0,error:i}}componentDidCatch(i,c){console.error("ErrorBoundary caught an error:",i,c),this.setState({errorInfo:c})}handleReset=()=>{this.setState({hasError:!1,error:null,errorInfo:null})};render(){return this.state.hasError&&this.state.error?this.props.fallback?this.props.fallback:e.jsx(Gg,{error:this.state.error,errorInfo:this.state.errorInfo}):this.props.children}}function Vg({error:n}){return e.jsx(Gg,{error:n,errorInfo:null})}const Sr=rN({component:()=>e.jsxs(e.Fragment,{children:[e.jsx(vp,{}),!1]}),beforeLoad:()=>{if(window.location.pathname==="/"&&!q2())throw oN({to:"/auth"})}}),I2=ft({getParentRoute:()=>Sr,path:"/auth",component:n0}),P2=ft({getParentRoute:()=>Sr,path:"/setup",component:y0}),Tt=ft({getParentRoute:()=>Sr,id:"protected",component:()=>e.jsx(X2,{children:e.jsx(vp,{})}),errorComponent:({error:n})=>e.jsx(Vg,{error:n})}),W2=ft({getParentRoute:()=>Tt,path:"/",component:Ry}),e_=ft({getParentRoute:()=>Tt,path:"/config/bot",component:R0}),s_=ft({getParentRoute:()=>Tt,path:"/config/modelProvider",component:nw}),t_=ft({getParentRoute:()=>Tt,path:"/config/model",component:ow}),a_=ft({getParentRoute:()=>Tt,path:"/config/adapter",component:uw}),l_=ft({getParentRoute:()=>Tt,path:"/resource/emoji",component:Rw}),n_=ft({getParentRoute:()=>Tt,path:"/resource/expression",component:Xw}),i_=ft({getParentRoute:()=>Tt,path:"/resource/person",component:g1}),r_=ft({getParentRoute:()=>Tt,path:"/resource/jargon",component:r1}),c_=ft({getParentRoute:()=>Tt,path:"/resource/knowledge-graph",component:C1}),o_=ft({getParentRoute:()=>Tt,path:"/logs",component:a2}),d_=ft({getParentRoute:()=>Tt,path:"/chat",component:B2}),u_=ft({getParentRoute:()=>Tt,path:"/plugins",component:k2}),m_=ft({getParentRoute:()=>Tt,path:"/plugin-config",component:z2}),h_=ft({getParentRoute:()=>Tt,path:"/plugin-mirrors",component:A2}),x_=ft({getParentRoute:()=>Tt,path:"/settings",component:Py}),f_=ft({getParentRoute:()=>Sr,path:"*",component:kg}),p_=Sr.addChildren([I2,P2,Tt.addChildren([W2,e_,s_,t_,a_,l_,n_,r_,i_,c_,u_,m_,h_,o_,d_,x_]),f_]),g_=cN({routeTree:p_,defaultNotFoundComponent:kg,defaultErrorComponent:({error:n})=>e.jsx(Vg,{error:n})});function j_({children:n,defaultTheme:i="system",storageKey:c="ui-theme",...d}){const[h,x]=u.useState(()=>localStorage.getItem(c)||i);u.useEffect(()=>{const j=window.document.documentElement;if(j.classList.remove("light","dark"),h==="system"){const p=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";j.classList.add(p);return}j.classList.add(h)},[h]),u.useEffect(()=>{const j=localStorage.getItem("accent-color");if(j){const p=document.documentElement,v={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[j];v&&(p.style.setProperty("--primary",v.hsl),v.gradient?(p.style.setProperty("--primary-gradient",v.gradient),p.classList.add("has-gradient")):(p.style.removeProperty("--primary-gradient"),p.classList.remove("has-gradient")))}},[]);const f={theme:h,setTheme:j=>{localStorage.setItem(c,j),x(j)}};return e.jsx(bg.Provider,{...d,value:f,children:n})}function v_({children:n,defaultEnabled:i=!0,defaultWavesEnabled:c=!0,storageKey:d="enable-animations",wavesStorageKey:h="enable-waves-background"}){const[x,f]=u.useState(()=>{const v=localStorage.getItem(d);return v!==null?v==="true":i}),[j,p]=u.useState(()=>{const v=localStorage.getItem(h);return v!==null?v==="true":c});u.useEffect(()=>{const v=document.documentElement;x?v.classList.remove("no-animations"):v.classList.add("no-animations"),localStorage.setItem(d,String(x))},[x,d]),u.useEffect(()=>{localStorage.setItem(h,String(j))},[j,h]);const w={enableAnimations:x,setEnableAnimations:f,enableWavesBackground:j,setEnableWavesBackground:p};return e.jsx(yg.Provider,{value:w,children:n})}const N_=rb,Fg=u.forwardRef(({className:n,...i},c)=>e.jsx(Wp,{ref:c,className:$("fixed bottom-0 right-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:max-w-[420px] gap-2",n),...i}));Fg.displayName=Wp.displayName;const b_=ci("group pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-slide-in-from-right data-[state=open]:animate-fade-in data-[state=closed]:animate-slide-out-to-right data-[state=closed]:animate-fade-out data-[swipe=end]:animate-slide-out-to-right",{variants:{variant:{default:"border bg-primary/5 text-foreground backdrop-blur-sm",destructive:"destructive group border-destructive bg-destructive/10 text-destructive-foreground backdrop-blur-sm"}},defaultVariants:{variant:"default"}}),$g=u.forwardRef(({className:n,variant:i,...c},d)=>e.jsx(eg,{ref:d,className:$(b_({variant:i}),n),...c}));$g.displayName=eg.displayName;const y_=u.forwardRef(({className:n,...i},c)=>e.jsx(sg,{ref:c,className:$("inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive",n),...i}));y_.displayName=sg.displayName;const Qg=u.forwardRef(({className:n,...i},c)=>e.jsx(tg,{ref:c,className:$("absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",n),"toast-close":"",...i,children:e.jsx(dl,{className:"h-4 w-4"})}));Qg.displayName=tg.displayName;const Yg=u.forwardRef(({className:n,...i},c)=>e.jsx(ag,{ref:c,className:$("text-sm font-semibold [&+div]:text-xs",n),...i}));Yg.displayName=ag.displayName;const Xg=u.forwardRef(({className:n,...i},c)=>e.jsx(lg,{ref:c,className:$("text-sm opacity-90",n),...i}));Xg.displayName=lg.displayName;function w_(){const{toasts:n}=Gs();return e.jsxs(N_,{children:[n.map(function({id:i,title:c,description:d,action:h,...x}){return e.jsxs($g,{...x,children:[e.jsxs("div",{className:"grid gap-1",children:[c&&e.jsx(Yg,{children:c}),d&&e.jsx(Xg,{children:d})]}),h,e.jsx(Qg,{})]},i)}),e.jsx(Fg,{})]})}_y.createRoot(document.getElementById("root")).render(e.jsx(u.StrictMode,{children:e.jsx(Z2,{children:e.jsx(j_,{defaultTheme:"system",children:e.jsx(v_,{children:e.jsxs(ew,{children:[e.jsx(dN,{router:g_}),e.jsx(aw,{}),e.jsx(w_,{})]})})})})})); diff --git a/webui/dist/assets/index-QJDQd8Xo.css b/webui/dist/assets/index-QJDQd8Xo.css new file mode 100644 index 00000000..06b5dafa --- /dev/null +++ b/webui/dist/assets/index-QJDQd8Xo.css @@ -0,0 +1 @@ +@charset "UTF-8";*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 0 0% 100%;--foreground: 222.2 84% 4.9%;--card: 0 0% 100%;--card-foreground: 222.2 84% 4.9%;--popover: 0 0% 100%;--popover-foreground: 222.2 84% 4.9%;--primary: 221.2 83.2% 53.3%;--primary-foreground: 210 40% 98%;--primary-gradient: none;--secondary: 210 40% 96.1%;--secondary-foreground: 222.2 47.4% 11.2%;--muted: 210 40% 96.1%;--muted-foreground: 215.4 16.3% 46.9%;--accent: 210 40% 96.1%;--accent-foreground: 222.2 47.4% 11.2%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 210 40% 98%;--border: 214.3 31.8% 91.4%;--input: 214.3 31.8% 91.4%;--ring: 221.2 83.2% 53.3%;--radius: .5rem;--chart-1: 221.2 83.2% 53.3%;--chart-2: 160 60% 45%;--chart-3: 30 80% 55%;--chart-4: 280 65% 60%;--chart-5: 340 75% 55%}.dark{--background: 222.2 84% 4.9%;--foreground: 210 40% 98%;--card: 222.2 84% 4.9%;--card-foreground: 210 40% 98%;--popover: 222.2 84% 4.9%;--popover-foreground: 210 40% 98%;--primary: 217.2 91.2% 59.8%;--primary-foreground: 222.2 47.4% 11.2%;--primary-gradient: none;--secondary: 217.2 32.6% 17.5%;--secondary-foreground: 210 40% 98%;--muted: 217.2 32.6% 17.5%;--muted-foreground: 215 20.2% 65.1%;--accent: 217.2 32.6% 17.5%;--accent-foreground: 210 40% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 210 40% 98%;--border: 217.2 32.6% 17.5%;--input: 217.2 32.6% 17.5%;--ring: 224.3 76.3% 48%;--chart-1: 217.2 91.2% 59.8%;--chart-2: 160 60% 50%;--chart-3: 30 80% 60%;--chart-4: 280 65% 65%;--chart-5: 340 75% 60%}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.\!container{width:100%!important}.container{width:100%}@media(min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media(min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media(min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media(min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media(min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.bottom-1\/4{bottom:25%}.bottom-4{bottom:1rem}.left-0{left:0}.left-1{left:.25rem}.left-1\/2{left:50%}.left-1\/4{left:25%}.left-2{left:.5rem}.left-2\.5{left:.625rem}.left-3{left:.75rem}.left-\[50\%\]{left:50%}.right-0{right:0}.right-1{right:.25rem}.right-1\.5{right:.375rem}.right-1\/4{right:25%}.right-2{right:.5rem}.right-4{right:1rem}.top-0{top:0}.top-1{top:.25rem}.top-1\.5{top:.375rem}.top-1\/2{top:50%}.top-1\/4{top:25%}.top-2{top:.5rem}.top-2\.5{top:.625rem}.top-3{top:.75rem}.top-4{top:1rem}.top-\[50\%\]{top:50%}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.z-\[100\]{z-index:100}.order-1{order:1}.order-2{order:2}.col-span-2{grid-column:span 2 / span 2}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-4{margin-left:-1rem;margin-right:-1rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-0\.5{margin-top:.125rem;margin-bottom:.125rem}.my-1{margin-top:.25rem;margin-bottom:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.-mt-2{margin-top:-.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-10{margin-left:2.5rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-12{margin-top:3rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.line-clamp-1{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.aspect-auto{aspect-ratio:auto}.aspect-square{aspect-ratio:1 / 1}.aspect-video{aspect-ratio:16 / 9}.size-4{width:1rem;height:1rem}.size-\[--cell-size\]{width:var(--cell-size);height:var(--cell-size)}.h-0\.5{height:.125rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-60{height:15rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[--cell-size\]{height:var(--cell-size)}.h-\[1\.25rem\]{height:1.25rem}.h-\[1px\]{height:1px}.h-\[200px\]{height:200px}.h-\[250px\]{height:250px}.h-\[280px\]{height:280px}.h-\[300px\]{height:300px}.h-\[350px\]{height:350px}.h-\[400px\]{height:400px}.h-\[calc\(100vh-200px\)\]{height:calc(100vh - 200px)}.h-\[calc\(100vh-240px\)\]{height:calc(100vh - 240px)}.h-\[calc\(100vh-260px\)\]{height:calc(100vh - 260px)}.h-\[calc\(100vh-4rem\)\]{height:calc(100vh - 4rem)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.max-h-\[--radix-context-menu-content-available-height\]{max-height:var(--radix-context-menu-content-available-height)}.max-h-\[--radix-select-content-available-height\]{max-height:var(--radix-select-content-available-height)}.max-h-\[200px\]{max-height:200px}.max-h-\[300px\]{max-height:300px}.max-h-\[80vh\]{max-height:80vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[calc\(90vh-120px\)\]{max-height:calc(90vh - 120px)}.max-h-\[calc\(90vh-8rem\)\]{max-height:calc(90vh - 8rem)}.max-h-full{max-height:100%}.max-h-none{max-height:none}.max-h-screen{max-height:100vh}.min-h-0{min-height:0px}.min-h-10{min-height:2.5rem}.min-h-\[100px\]{min-height:100px}.min-h-\[300px\]{min-height:300px}.min-h-\[60px\]{min-height:60px}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-9{width:2.25rem}.w-\[--cell-size\]{width:var(--cell-size)}.w-\[100px\]{width:100px}.w-\[120px\]{width:120px}.w-\[130px\]{width:130px}.w-\[1px\]{width:1px}.w-\[65px\]{width:65px}.w-\[95vw\]{width:95vw}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0px}.min-w-\[--cell-size\]{min-width:var(--cell-size)}.min-w-\[100px\]{min-width:100px}.min-w-\[120px\]{min-width:120px}.min-w-\[80px\]{min-width:80px}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-32{max-width:8rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-\[100px\]{max-width:100px}.max-w-\[150px\]{max-width:150px}.max-w-\[200px\]{max-width:200px}.max-w-\[60px\]{max-width:60px}.max-w-\[75\%\]{max-width:75%}.max-w-\[90\%\]{max-width:90%}.max-w-\[95vw\]{max-width:95vw}.max-w-full{max-width:100%}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.grow{flex-grow:1}.caption-bottom{caption-side:bottom}.border-collapse{border-collapse:collapse}.origin-\[--radix-context-menu-content-transform-origin\]{transform-origin:var(--radix-context-menu-content-transform-origin)}.origin-\[--radix-popover-content-transform-origin\]{transform-origin:var(--radix-popover-content-transform-origin)}.origin-\[--radix-select-content-transform-origin\]{transform-origin:var(--radix-select-content-transform-origin)}.origin-\[--radix-tooltip-content-transform-origin\]{transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-\[-50\%\]{--tw-translate-x: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y: -50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-move{cursor:move}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize{resize:both}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-rows-\[auto_1fr_auto\]{grid-template-rows:auto 1fr auto}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-center{place-content:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-none{border-radius:0}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.rounded-l-md{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.rounded-r-full{border-top-right-radius:9999px;border-bottom-right-radius:9999px}.rounded-r-md{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.rounded-tl-sm{border-top-left-radius:calc(var(--radius) - 4px)}.rounded-tr-sm{border-top-right-radius:calc(var(--radius) - 4px)}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-\[1\.5px\]{border-width:1.5px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[--color-border\]{border-color:var(--color-border)}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-amber-500\/50{border-color:#f59e0b80}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity, 1))}.border-blue-700{--tw-border-opacity: 1;border-color:rgb(29 78 216 / var(--tw-border-opacity, 1))}.border-border{border-color:hsl(var(--border))}.border-border\/50{border-color:hsl(var(--border) / .5)}.border-current{border-color:currentColor}.border-gray-800{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity, 1))}.border-green-200{--tw-border-opacity: 1;border-color:rgb(187 247 208 / var(--tw-border-opacity, 1))}.border-green-300{--tw-border-opacity: 1;border-color:rgb(134 239 172 / var(--tw-border-opacity, 1))}.border-green-500{--tw-border-opacity: 1;border-color:rgb(34 197 94 / var(--tw-border-opacity, 1))}.border-green-600{--tw-border-opacity: 1;border-color:rgb(22 163 74 / var(--tw-border-opacity, 1))}.border-green-700{--tw-border-opacity: 1;border-color:rgb(21 128 61 / var(--tw-border-opacity, 1))}.border-input{border-color:hsl(var(--input))}.border-muted{border-color:hsl(var(--muted))}.border-muted-foreground\/30{border-color:hsl(var(--muted-foreground) / .3)}.border-muted-foreground\/50{border-color:hsl(var(--muted-foreground) / .5)}.border-orange-200{--tw-border-opacity: 1;border-color:rgb(254 215 170 / var(--tw-border-opacity, 1))}.border-orange-600{--tw-border-opacity: 1;border-color:rgb(234 88 12 / var(--tw-border-opacity, 1))}.border-primary{border-color:hsl(var(--primary))}.border-primary\/20{border-color:hsl(var(--primary) / .2)}.border-primary\/30{border-color:hsl(var(--primary) / .3)}.border-primary\/50{border-color:hsl(var(--primary) / .5)}.border-purple-500{--tw-border-opacity: 1;border-color:rgb(168 85 247 / var(--tw-border-opacity, 1))}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity, 1))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity, 1))}.border-red-500\/50{border-color:#ef444480}.border-transparent{border-color:transparent}.border-yellow-200{--tw-border-opacity: 1;border-color:rgb(254 240 138 / var(--tw-border-opacity, 1))}.border-yellow-500\/50{border-color:#eab30880}.border-l-transparent{border-left-color:transparent}.border-t-transparent{border-top-color:transparent}.bg-\[--color-bg\]{background-color:var(--color-bg)}.bg-accent{background-color:hsl(var(--accent))}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-amber-500\/10{background-color:#f59e0b1a}.bg-background{background-color:hsl(var(--background))}.bg-background\/50{background-color:hsl(var(--background) / .5)}.bg-background\/80{background-color:hsl(var(--background) / .8)}.bg-background\/95{background-color:hsl(var(--background) / .95)}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity, 1))}.bg-black\/50{background-color:#00000080}.bg-black\/80{background-color:#000c}.bg-blue-100{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity, 1))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity, 1))}.bg-blue-900\/20{background-color:#1e3a8a33}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-card\/80{background-color:hsl(var(--card) / .8)}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.bg-gray-400{--tw-bg-opacity: 1;background-color:rgb(156 163 175 / var(--tw-bg-opacity, 1))}.bg-gray-800\/20{background-color:#1f293733}.bg-gray-800\/30{background-color:#1f29374d}.bg-green-100{--tw-bg-opacity: 1;background-color:rgb(220 252 231 / var(--tw-bg-opacity, 1))}.bg-green-50{--tw-bg-opacity: 1;background-color:rgb(240 253 244 / var(--tw-bg-opacity, 1))}.bg-green-500{--tw-bg-opacity: 1;background-color:rgb(34 197 94 / var(--tw-bg-opacity, 1))}.bg-green-600{--tw-bg-opacity: 1;background-color:rgb(22 163 74 / var(--tw-bg-opacity, 1))}.bg-muted{background-color:hsl(var(--muted))}.bg-muted-foreground\/50{background-color:hsl(var(--muted-foreground) / .5)}.bg-muted\/20{background-color:hsl(var(--muted) / .2)}.bg-muted\/30{background-color:hsl(var(--muted) / .3)}.bg-muted\/50{background-color:hsl(var(--muted) / .5)}.bg-orange-50{--tw-bg-opacity: 1;background-color:rgb(255 247 237 / var(--tw-bg-opacity, 1))}.bg-orange-500{--tw-bg-opacity: 1;background-color:rgb(249 115 22 / var(--tw-bg-opacity, 1))}.bg-orange-600{--tw-bg-opacity: 1;background-color:rgb(234 88 12 / var(--tw-bg-opacity, 1))}.bg-pink-500{--tw-bg-opacity: 1;background-color:rgb(236 72 153 / var(--tw-bg-opacity, 1))}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-primary-foreground\/20{background-color:hsl(var(--primary-foreground) / .2)}.bg-primary\/10{background-color:hsl(var(--primary) / .1)}.bg-primary\/20{background-color:hsl(var(--primary) / .2)}.bg-primary\/5{background-color:hsl(var(--primary) / .05)}.bg-primary\/60{background-color:hsl(var(--primary) / .6)}.bg-purple-500{--tw-bg-opacity: 1;background-color:rgb(168 85 247 / var(--tw-bg-opacity, 1))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1))}.bg-red-50{--tw-bg-opacity: 1;background-color:rgb(254 242 242 / var(--tw-bg-opacity, 1))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity, 1))}.bg-red-500\/10{background-color:#ef44441a}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity, 1))}.bg-red-900\/20{background-color:#7f1d1d33}.bg-red-900\/30{background-color:#7f1d1d4d}.bg-secondary{background-color:hsl(var(--secondary))}.bg-secondary\/5{background-color:hsl(var(--secondary) / .05)}.bg-slate-200{--tw-bg-opacity: 1;background-color:rgb(226 232 240 / var(--tw-bg-opacity, 1))}.bg-slate-300{--tw-bg-opacity: 1;background-color:rgb(203 213 225 / var(--tw-bg-opacity, 1))}.bg-slate-400{--tw-bg-opacity: 1;background-color:rgb(148 163 184 / var(--tw-bg-opacity, 1))}.bg-slate-700{--tw-bg-opacity: 1;background-color:rgb(51 65 85 / var(--tw-bg-opacity, 1))}.bg-slate-800{--tw-bg-opacity: 1;background-color:rgb(30 41 59 / var(--tw-bg-opacity, 1))}.bg-slate-900{--tw-bg-opacity: 1;background-color:rgb(15 23 42 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-yellow-200{--tw-bg-opacity: 1;background-color:rgb(254 240 138 / var(--tw-bg-opacity, 1))}.bg-yellow-50{--tw-bg-opacity: 1;background-color:rgb(254 252 232 / var(--tw-bg-opacity, 1))}.bg-yellow-500\/5{background-color:#eab3080d}.bg-yellow-900\/20{background-color:#713f1233}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.from-blue-500{--tw-gradient-from: #3b82f6 var(--tw-gradient-from-position);--tw-gradient-to: rgb(59 130 246 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-green-500{--tw-gradient-from: #22c55e var(--tw-gradient-from-position);--tw-gradient-to: rgb(34 197 94 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-indigo-500{--tw-gradient-from: #6366f1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-orange-500{--tw-gradient-from: #f97316 var(--tw-gradient-from-position);--tw-gradient-to: rgb(249 115 22 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-primary\/5{--tw-gradient-from: hsl(var(--primary) / .05) var(--tw-gradient-from-position);--tw-gradient-to: hsl(var(--primary) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-purple-500{--tw-gradient-from: #a855f7 var(--tw-gradient-from-position);--tw-gradient-to: rgb(168 85 247 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-red-500{--tw-gradient-from: #ef4444 var(--tw-gradient-from-position);--tw-gradient-to: rgb(239 68 68 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-200{--tw-gradient-from: #e2e8f0 var(--tw-gradient-from-position);--tw-gradient-to: rgb(226 232 240 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-300{--tw-gradient-from: #cbd5e1 var(--tw-gradient-from-position);--tw-gradient-to: rgb(203 213 225 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.from-slate-400{--tw-gradient-from: #94a3b8 var(--tw-gradient-from-position);--tw-gradient-to: rgb(148 163 184 / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to)}.via-background{--tw-gradient-to: hsl(var(--background) / 0) var(--tw-gradient-to-position);--tw-gradient-stops: var(--tw-gradient-from), hsl(var(--background)) var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-blue-600{--tw-gradient-to: #2563eb var(--tw-gradient-to-position)}.to-cyan-500{--tw-gradient-to: #06b6d4 var(--tw-gradient-to-position)}.to-emerald-500{--tw-gradient-to: #10b981 var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to: #16a34a var(--tw-gradient-to-position)}.to-orange-500{--tw-gradient-to: #f97316 var(--tw-gradient-to-position)}.to-pink-500{--tw-gradient-to: #ec4899 var(--tw-gradient-to-position)}.to-primary\/10{--tw-gradient-to: hsl(var(--primary) / .1) var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to: #a855f7 var(--tw-gradient-to-position)}.to-secondary\/5{--tw-gradient-to: hsl(var(--secondary) / .05) var(--tw-gradient-to-position)}.to-slate-700{--tw-gradient-to: #334155 var(--tw-gradient-to-position)}.to-slate-800{--tw-gradient-to: #1e293b var(--tw-gradient-to-position)}.to-slate-900{--tw-gradient-to: #0f172a var(--tw-gradient-to-position)}.fill-current{fill:currentColor}.fill-yellow-400{fill:#facc15}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[1px\]{padding:1px}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.px-\[--cell-size\]{padding-left:var(--cell-size);padding-right:var(--cell-size)}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-0{padding-bottom:0}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pl-10{padding-left:2.5rem}.pl-11{padding-left:2.75rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.pl-6{padding-left:1.5rem}.pl-8{padding-left:2rem}.pl-9{padding-left:2.25rem}.pr-1{padding-right:.25rem}.pr-10{padding-right:2.5rem}.pr-16{padding-right:4rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-6{padding-right:1.5rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[0\.8rem\]{font-size:.8rem}.text-\[10px\]{font-size:10px}.text-\[150px\]{font-size:150px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-accent-foreground{color:hsl(var(--accent-foreground))}.text-amber-600{--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity, 1))}.text-amber-700{--tw-text-opacity: 1;color:rgb(180 83 9 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity, 1))}.text-blue-800{--tw-text-opacity: 1;color:rgb(30 64 175 / var(--tw-text-opacity, 1))}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-current{color:currentColor}.text-cyan-400{--tw-text-opacity: 1;color:rgb(34 211 238 / var(--tw-text-opacity, 1))}.text-foreground{color:hsl(var(--foreground))}.text-foreground\/50{color:hsl(var(--foreground) / .5)}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity, 1))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.text-green-500{--tw-text-opacity: 1;color:rgb(34 197 94 / var(--tw-text-opacity, 1))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity, 1))}.text-green-700{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-muted-foreground\/50{color:hsl(var(--muted-foreground) / .5)}.text-muted-foreground\/60{color:hsl(var(--muted-foreground) / .6)}.text-orange-600{--tw-text-opacity: 1;color:rgb(234 88 12 / var(--tw-text-opacity, 1))}.text-orange-800{--tw-text-opacity: 1;color:rgb(154 52 18 / var(--tw-text-opacity, 1))}.text-orange-900{--tw-text-opacity: 1;color:rgb(124 45 18 / var(--tw-text-opacity, 1))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-primary-foreground\/70{color:hsl(var(--primary-foreground) / .7)}.text-primary\/10{color:hsl(var(--primary) / .1)}.text-primary\/30{color:hsl(var(--primary) / .3)}.text-primary\/60{color:hsl(var(--primary) / .6)}.text-purple-500{--tw-text-opacity: 1;color:rgb(168 85 247 / var(--tw-text-opacity, 1))}.text-purple-600{--tw-text-opacity: 1;color:rgb(147 51 234 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity, 1))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.text-yellow-400{--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.text-yellow-500{--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.text-yellow-600{--tw-text-opacity: 1;color:rgb(202 138 4 / var(--tw-text-opacity, 1))}.text-yellow-800{--tw-text-opacity: 1;color:rgb(133 77 14 / var(--tw-text-opacity, 1))}.text-yellow-900{--tw-text-opacity: 1;color:rgb(113 63 18 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.underline-offset-4{text-underline-offset:4px}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-none{--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-primary{--tw-ring-color: hsl(var(--primary))}.ring-offset-background{--tw-ring-offset-color: hsl(var(--background))}.blur-3xl{--tw-blur: blur(64px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur: blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-md{--tw-backdrop-blur: blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur: blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur: blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.text-primary-gradient{color:hsl(var(--primary))}.has-gradient .text-primary-gradient{background:var(--primary-gradient);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.\[--cell-size\:2rem\]{--cell-size: 2rem}.no-animations *,.no-animations *:before,.no-animations *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.no-animations *:hover{transition-duration:.01ms!important}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-old(root){z-index:1}::view-transition-new(root){z-index:999}.__floater{z-index:99999!important;pointer-events:auto!important}.react-joyride__overlay,.react-joyride__spotlight{z-index:99998!important}.react-joyride__tooltip{pointer-events:auto!important}#tour-portal-container *{pointer-events:auto}.file\:border-0::file-selector-button{border-width:0px}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:border-muted-foreground\/50:hover{border-color:hsl(var(--muted-foreground) / .5)}.hover\:border-primary\/50:hover{border-color:hsl(var(--primary) / .5)}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-accent\/50:hover{background-color:hsl(var(--accent) / .5)}.hover\:bg-blue-700:hover{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity, 1))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.hover\:bg-green-700:hover{--tw-bg-opacity: 1;background-color:rgb(21 128 61 / var(--tw-bg-opacity, 1))}.hover\:bg-muted:hover{background-color:hsl(var(--muted))}.hover\:bg-muted-foreground\/20:hover{background-color:hsl(var(--muted-foreground) / .2)}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted) / .5)}.hover\:bg-orange-700:hover{--tw-bg-opacity: 1;background-color:rgb(194 65 12 / var(--tw-bg-opacity, 1))}.hover\:bg-primary\/10:hover{background-color:hsl(var(--primary) / .1)}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary) / .8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-red-700:hover{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity, 1))}.hover\:bg-secondary:hover{background-color:hsl(var(--secondary))}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-secondary\/90:hover{background-color:hsl(var(--secondary) / .9)}.hover\:bg-transparent:hover{background-color:transparent}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-foreground:hover{color:hsl(var(--foreground))}.hover\:text-green-700:hover{--tw-text-opacity: 1;color:rgb(21 128 61 / var(--tw-text-opacity, 1))}.hover\:text-orange-700:hover{--tw-text-opacity: 1;color:rgb(194 65 12 / var(--tw-text-opacity, 1))}.hover\:text-primary\/80:hover{color:hsl(var(--primary) / .8)}.hover\:text-red-700:hover{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity, 1))}.hover\:text-yellow-300:hover{--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:ring-2:hover{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.hover\:ring-primary:hover{--tw-ring-color: hsl(var(--primary))}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:bg-gray-100:focus{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:opacity-100:focus{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color: hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-0:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-red-500:focus-visible{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity, 1))}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.active\:cursor-grabbing:active{cursor:grabbing}.active\:border-primary\/70:active{border-color:hsl(var(--primary) / .7)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group[open] .group-open\:rotate-180{--tw-rotate: 180deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:opacity-100{opacity:1}.group.destructive .group-\[\.destructive\]\:border-muted\/40{border-color:hsl(var(--muted) / .4)}.group.destructive .group-\[\.destructive\]\:text-red-300{--tw-text-opacity: 1;color:rgb(252 165 165 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:hover\:text-red-50:hover{--tw-text-opacity: 1;color:rgb(254 242 242 / var(--tw-text-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-red-400:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(248 113 113 / var(--tw-ring-opacity, 1))}.group.destructive .group-\[\.destructive\]\:focus\:ring-offset-red-600:focus{--tw-ring-offset-color: #dc2626}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-70{opacity:.7}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-selected\:text-muted-foreground[aria-selected=true]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true],.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x: .25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y: -.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked],.data-\[swipe\=cancel\]\:translate-x-0[data-swipe=cancel]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe=end]{--tw-translate-x: var(--radix-toast-swipe-end-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe=move]{--tw-translate-x: var(--radix-toast-swipe-move-x);transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes fade-out{0%{opacity:1}to{opacity:0}}.data-\[state\=closed\]\:animate-fade-out[data-state=closed]{animation:fade-out .15s ease-in}.data-\[state\=closed\]\:animate-slide-out-to-right[data-state=closed]{animation:slide-out-to-right .2s ease-in}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.data-\[state\=open\]\:animate-fade-in[data-state=open]{animation:fade-in .2s ease-out}@keyframes slide-in-from-right{0%{transform:translate(100%)}to{transform:translate(0)}}.data-\[state\=open\]\:animate-slide-in-from-right[data-state=open]{animation:slide-in-from-right .3s ease-out}@keyframes slide-out-to-right{0%{transform:translate(0)}to{transform:translate(100%)}}.data-\[swipe\=end\]\:animate-slide-out-to-right[data-swipe=end]{animation:slide-out-to-right .2s ease-in}.data-\[range-end\=true\]\:rounded-md[data-range-end=true]{border-radius:calc(var(--radius) - 2px)}.data-\[range-middle\=true\]\:rounded-none[data-range-middle=true]{border-radius:0}.data-\[range-start\=true\]\:rounded-md[data-range-start=true]{border-radius:calc(var(--radius) - 2px)}.data-\[selected\=true\]\:rounded-none[data-selected=true]{border-radius:0}.data-\[range-end\=true\]\:bg-primary[data-range-end=true]{background-color:hsl(var(--primary))}.data-\[range-middle\=true\]\:bg-accent[data-range-middle=true]{background-color:hsl(var(--accent))}.data-\[range-start\=true\]\:bg-primary[data-range-start=true],.data-\[selected-single\=true\]\:bg-primary[data-selected-single=true]{background-color:hsl(var(--primary))}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:hsl(var(--accent))}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:hsl(var(--primary))}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:hsl(var(--accent))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:hsl(var(--muted-foreground))}.data-\[range-end\=true\]\:text-primary-foreground[data-range-end=true]{color:hsl(var(--primary-foreground))}.data-\[range-middle\=true\]\:text-accent-foreground[data-range-middle=true]{color:hsl(var(--accent-foreground))}.data-\[range-start\=true\]\:text-primary-foreground[data-range-start=true],.data-\[selected-single\=true\]\:text-primary-foreground[data-selected-single=true]{color:hsl(var(--primary-foreground))}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:hsl(var(--accent-foreground))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=checked\]\:text-primary-foreground[data-state=checked]{color:hsl(var(--primary-foreground))}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:hsl(var(--accent-foreground))}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:hsl(var(--muted-foreground))}.data-\[disabled\=true\]\:opacity-50[data-disabled=true],.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[swipe\=move\]\:transition-none[data-swipe=move]{transition-property:none}.data-\[state\=active\]\:duration-300[data-state=active]{transition-duration:.3s}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:relative{position:relative}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:z-10{z-index:10}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:border-ring{border-color:hsl(var(--ring))}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-\[3px\]{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.group\/day[data-focused=true] .group-data-\[focused\=true\]\/day\:ring-ring\/50{--tw-ring-color: hsl(var(--ring) / .5)}@supports (backdrop-filter: var(--tw)){.supports-\[backdrop-filter\]\:bg-background\/60{background-color:hsl(var(--background) / .6)}}.dark\:border-amber-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(146 64 14 / var(--tw-border-opacity, 1))}.dark\:border-blue-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(30 64 175 / var(--tw-border-opacity, 1))}.dark\:border-gray-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(17 24 39 / var(--tw-border-opacity, 1))}.dark\:border-green-800:is(.dark *){--tw-border-opacity: 1;border-color:rgb(22 101 52 / var(--tw-border-opacity, 1))}.dark\:border-orange-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(124 45 18 / var(--tw-border-opacity, 1))}.dark\:border-yellow-900:is(.dark *){--tw-border-opacity: 1;border-color:rgb(113 63 18 / var(--tw-border-opacity, 1))}.dark\:bg-amber-950\/30:is(.dark *){background-color:#451a034d}.dark\:bg-blue-500\/20:is(.dark *){background-color:#3b82f633}.dark\:bg-blue-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(30 58 138 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(23 37 84 / var(--tw-bg-opacity, 1))}.dark\:bg-blue-950\/20:is(.dark *){background-color:#17255433}.dark\:bg-blue-950\/30:is(.dark *){background-color:#1725544d}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-800\/30:is(.dark *){background-color:#1f29374d}.dark\:bg-gray-800\/50:is(.dark *){background-color:#1f293780}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity, 1))}.dark\:bg-gray-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(3 7 18 / var(--tw-bg-opacity, 1))}.dark\:bg-green-900\/30:is(.dark *){background-color:#14532d4d}.dark\:bg-green-950:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(5 46 22 / var(--tw-bg-opacity, 1))}.dark\:bg-green-950\/20:is(.dark *){background-color:#052e1633}.dark\:bg-orange-950\/20:is(.dark *){background-color:#43140733}.dark\:bg-red-500\/20:is(.dark *){background-color:#ef444433}.dark\:bg-red-600\/30:is(.dark *){background-color:#dc26264d}.dark\:bg-red-900\/30:is(.dark *){background-color:#7f1d1d4d}.dark\:bg-red-950\/50:is(.dark *){background-color:#450a0a80}.dark\:bg-yellow-500\/20:is(.dark *){background-color:#eab30833}.dark\:bg-yellow-900:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(113 63 18 / var(--tw-bg-opacity, 1))}.dark\:bg-yellow-950\/30:is(.dark *){background-color:#4220064d}.dark\:text-amber-100:is(.dark *){--tw-text-opacity: 1;color:rgb(254 243 199 / var(--tw-text-opacity, 1))}.dark\:text-amber-400:is(.dark *){--tw-text-opacity: 1;color:rgb(251 191 36 / var(--tw-text-opacity, 1))}.dark\:text-blue-100:is(.dark *){--tw-text-opacity: 1;color:rgb(219 234 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-200:is(.dark *){--tw-text-opacity: 1;color:rgb(191 219 254 / var(--tw-text-opacity, 1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity: 1;color:rgb(147 197 253 / var(--tw-text-opacity, 1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity: 1;color:rgb(96 165 250 / var(--tw-text-opacity, 1))}.dark\:text-cyan-500:is(.dark *){--tw-text-opacity: 1;color:rgb(6 182 212 / var(--tw-text-opacity, 1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity: 1;color:rgb(243 244 246 / var(--tw-text-opacity, 1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.dark\:text-orange-100:is(.dark *){--tw-text-opacity: 1;color:rgb(255 237 213 / var(--tw-text-opacity, 1))}.dark\:text-orange-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 215 170 / var(--tw-text-opacity, 1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.dark\:text-red-500:is(.dark *){--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.dark\:text-yellow-200:is(.dark *){--tw-text-opacity: 1;color:rgb(254 240 138 / var(--tw-text-opacity, 1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity: 1;color:rgb(253 224 71 / var(--tw-text-opacity, 1))}.dark\:text-yellow-400:is(.dark *){--tw-text-opacity: 1;color:rgb(250 204 21 / var(--tw-text-opacity, 1))}.dark\:text-yellow-500:is(.dark *){--tw-text-opacity: 1;color:rgb(234 179 8 / var(--tw-text-opacity, 1))}.dark\:hover\:bg-gray-800:hover:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}.dark\:focus\:bg-gray-800:focus:is(.dark *){--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity, 1))}@media(min-width:640px){.sm\:right-2{right:.5rem}.sm\:right-3{right:.75rem}.sm\:top-2{top:.5rem}.sm\:top-3{top:.75rem}.sm\:order-1{order:1}.sm\:order-2{order:2}.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:mb-3{margin-bottom:.75rem}.sm\:mb-4{margin-bottom:1rem}.sm\:mb-6{margin-bottom:1.5rem}.sm\:ml-0{margin-left:0}.sm\:ml-1{margin-left:.25rem}.sm\:mr-1{margin-right:.25rem}.sm\:mr-2{margin-right:.5rem}.sm\:mt-0{margin-top:0}.sm\:mt-2{margin-top:.5rem}.sm\:mt-3{margin-top:.75rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-12{height:3rem}.sm\:h-2{height:.5rem}.sm\:h-24{height:6rem}.sm\:h-3{height:.75rem}.sm\:h-4{height:1rem}.sm\:h-5{height:1.25rem}.sm\:h-8{height:2rem}.sm\:h-9{height:2.25rem}.sm\:h-\[300px\]{height:300px}.sm\:h-\[400px\]{height:400px}.sm\:h-\[500px\]{height:500px}.sm\:h-\[calc\(100vh-280px\)\]{height:calc(100vh - 280px)}.sm\:w-10{width:2.5rem}.sm\:w-2{width:.5rem}.sm\:w-24{width:6rem}.sm\:w-28{width:7rem}.sm\:w-3{width:.75rem}.sm\:w-4{width:1rem}.sm\:w-5{width:1.25rem}.sm\:w-8{width:2rem}.sm\:w-80{width:20rem}.sm\:w-96{width:24rem}.sm\:w-\[140px\]{width:140px}.sm\:w-\[160px\]{width:160px}.sm\:w-\[200px\]{width:200px}.sm\:w-\[500px\]{width:500px}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:min-w-\[120px\]{min-width:120px}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-\[420px\]{max-width:420px}.sm\:max-w-\[500px\]{max-width:500px}.sm\:max-w-\[70\%\]{max-width:70%}.sm\:max-w-\[900px\]{max-width:900px}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:flex-1{flex:1 1 0%}.sm\:flex-none{flex:none}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.sm\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-0{gap:0px}.sm\:gap-1{gap:.25rem}.sm\:gap-2{gap:.5rem}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:gap-6{gap:1.5rem}.sm\:space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.sm\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.sm\:space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.sm\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.sm\:space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.sm\:rounded-lg{border-radius:var(--radius)}.sm\:p-3{padding:.75rem}.sm\:p-4{padding:1rem}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-3{padding-left:.75rem;padding-right:.75rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:py-2{padding-top:.5rem;padding-bottom:.5rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-\[200px\]{font-size:200px}.sm\:text-base{font-size:1rem;line-height:1.5rem}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}.sm\:text-xl{font-size:1.25rem;line-height:1.75rem}.sm\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:768px){.md\:top-4{top:1rem}.md\:mb-4{margin-bottom:1rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-8{margin-bottom:2rem}.md\:mt-8{margin-top:2rem}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-16{height:4rem}.md\:h-4{height:1rem}.md\:h-5{height:1.25rem}.md\:h-8{height:2rem}.md\:h-96{height:24rem}.md\:h-\[500px\]{height:500px}.md\:min-h-\[400px\]{min-height:400px}.md\:w-16{width:4rem}.md\:w-4{width:1rem}.md\:w-5{width:1.25rem}.md\:w-8{width:2rem}.md\:w-96{width:24rem}.md\:max-w-none{max-width:none}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:gap-2{gap:.5rem}.md\:gap-3{gap:.75rem}.md\:gap-4{gap:1rem}.md\:gap-6{gap:1.5rem}.md\:space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.md\:space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.md\:whitespace-normal{white-space:normal}.md\:p-12{padding:3rem}.md\:p-4{padding:1rem}.md\:p-6{padding:1.5rem}.md\:p-8{padding:2rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xs{font-size:.75rem;line-height:1rem}}@media(min-width:1024px){.lg\:invisible{visibility:hidden}.lg\:relative{position:relative}.lg\:z-0{z-index:0}.lg\:col-span-1{grid-column:span 1 / span 1}.lg\:col-span-2{grid-column:span 2 / span 2}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:mb-1{margin-bottom:.25rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:w-12{width:3rem}.lg\:w-16{width:4rem}.lg\:w-64{width:16rem}.lg\:w-8{width:2rem}.lg\:w-\[130px\]{width:130px}.lg\:w-\[160px\]{width:160px}.lg\:w-\[180px\]{width:180px}.lg\:w-\[200px\]{width:200px}.lg\:w-\[240px\]{width:240px}.lg\:w-\[75px\]{width:75px}.lg\:w-auto{width:auto}.lg\:w-full{width:100%}.lg\:max-w-0{max-width:0px}.lg\:flex-1{flex:1 1 0%}.lg\:flex-none{flex:none}.lg\:translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.lg\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.lg\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.lg\:justify-center{justify-content:center}.lg\:gap-0{gap:0px}.lg\:space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.lg\:overflow-hidden{overflow:hidden}.lg\:p-2{padding:.5rem}.lg\:p-6{padding:1.5rem}.lg\:px-0{padding-left:0;padding-right:0}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:pb-6{padding-bottom:1.5rem}.lg\:text-3xl{font-size:1.875rem;line-height:2.25rem}.lg\:opacity-0{opacity:0}}@media(min-width:1280px){.xl\:grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}}.\[\&\+div\]\:text-xs+div{font-size:.75rem;line-height:1rem}.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected=true] button{border-top-left-radius:calc(var(--radius) - 2px);border-bottom-left-radius:calc(var(--radius) - 2px)}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected=true] button{border-top-right-radius:calc(var(--radius) - 2px);border-bottom-right-radius:calc(var(--radius) - 2px)}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y: 2px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>span\]\:text-xs>span{font-size:.75rem;line-height:1rem}.\[\&\>span\]\:opacity-70>span{opacity:.7}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y: -3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-4>svg{top:1rem}.\[\&\>svg\]\:size-3\.5>svg{width:.875rem;height:.875rem}.\[\&\>svg\]\:h-2\.5>svg{height:.625rem}.\[\&\>svg\]\:h-3>svg{height:.75rem}.\[\&\>svg\]\:w-2\.5>svg{width:.625rem}.\[\&\>svg\]\:w-3>svg{width:.75rem}.\[\&\>svg\]\:text-foreground>svg{color:hsl(var(--foreground))}.\[\&\>svg\]\:text-muted-foreground>svg{color:hsl(var(--muted-foreground))}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:1.75rem}.\[\&\>tr\]\:last\:border-b-0:last-child>tr{border-bottom-width:0px}.\[\&_\.recharts-cartesian-axis-tick_text\]\:fill-muted-foreground .recharts-cartesian-axis-tick text{fill:hsl(var(--muted-foreground))}.\[\&_\.recharts-cartesian-grid_line\[stroke\=\'\#ccc\'\]\]\:stroke-border\/50 .recharts-cartesian-grid line[stroke="#ccc"]{stroke:hsl(var(--border) / .5)}.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor{stroke:hsl(var(--border))}.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-layer\]\:outline-none .recharts-layer{outline:2px solid transparent;outline-offset:2px}.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector,.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor{fill:hsl(var(--muted))}.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke="#ccc"]{stroke:hsl(var(--border))}.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke="#fff"]{stroke:transparent}.\[\&_\.recharts-sector\]\:outline-none .recharts-sector,.\[\&_\.recharts-surface\]\:outline-none .recharts-surface{outline:2px solid transparent;outline-offset:2px}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-top:.375rem;padding-bottom:.375rem}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:.75rem;line-height:1rem}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{font-weight:500}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:hsl(var(--muted-foreground))}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:0}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:1.25rem}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:1.25rem}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:3rem}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-left:.5rem;padding-right:.5rem}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-top:.75rem;padding-bottom:.75rem}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:1.25rem}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:1.25rem}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:invisible svg{visibility:hidden}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0px}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}[data-slot=card-content] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent,[data-slot=popover-content] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent{background-color:transparent}.uppy-Root{box-sizing:border-box;color:#333;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;line-height:1;position:relative;text-align:left;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.uppy-Root[dir=rtl],[dir=rtl] .uppy-Root{text-align:right}.uppy-Root *,.uppy-Root :after,.uppy-Root :before{box-sizing:inherit}.uppy-Root [hidden]{display:none}.uppy-u-reset{all:initial;-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;line-height:1}[dir=rtl] .uppy-u-reset{text-align:right}.uppy-c-textInput{background-color:#fff;border:1px solid #ddd;border-radius:4px;font-family:inherit;font-size:14px;line-height:1.5;padding:6px 8px}.uppy-size--md .uppy-c-textInput{padding:8px 10px}.uppy-c-textInput:focus{border-color:#1269cf99;box-shadow:0 0 0 3px #1269cf26;outline:none}[data-uppy-theme=dark] .uppy-c-textInput{background-color:#333;border-color:#333;color:#eaeaea}[data-uppy-theme=dark] .uppy-c-textInput:focus{border-color:#525252;box-shadow:none}.uppy-c-icon{display:inline-block;max-height:100%;max-width:100%;overflow:hidden;fill:currentColor}.uppy-c-btn{align-items:center;color:inherit;display:inline-flex;font-family:inherit;font-size:inherit;font-weight:500;justify-content:center;line-height:1;transition-duration:.3s;transition-property:background-color,color;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.uppy-c-btn,[dir=rtl] .uppy-c-btn{text-align:center}.uppy-c-btn:not(:disabled):not(.disabled){cursor:pointer}.uppy-c-btn::-moz-focus-inner{border:0}.uppy-c-btn-primary{background-color:#1269cf;border-radius:4px;color:#fff;font-size:14px;padding:10px 18px}.uppy-c-btn-primary:not(:disabled):hover{background-color:#0e51a0}.uppy-c-btn-primary:focus{box-shadow:0 0 0 3px #1269cf66;outline:none}.uppy-size--md .uppy-c-btn-primary{padding:13px 22px}[data-uppy-theme=dark] .uppy-c-btn-primary{color:#eaeaea}[data-uppy-theme=dark] .uppy-c-btn-primary:focus{outline:none}[data-uppy-theme=dark] .uppy-c-btn-primary::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-c-btn-primary:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-c-btn-primary.uppy-c-btn--disabled{background-color:#8eb2db}.uppy-c-btn-link{background-color:initial;border-radius:4px;color:#525252;font-size:14px;line-height:1;padding:10px 15px}.uppy-c-btn-link:hover{color:#333}.uppy-c-btn-link:focus{box-shadow:0 0 0 3px #1269cf40;outline:none}.uppy-size--md .uppy-c-btn-link{padding:13px 18px}[data-uppy-theme=dark] .uppy-c-btn-link{color:#eaeaea}[data-uppy-theme=dark] .uppy-c-btn-link:focus{outline:none}[data-uppy-theme=dark] .uppy-c-btn-link::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-c-btn-link:focus{box-shadow:0 0 0 2px #aae1ffd9}[data-uppy-theme=dark] .uppy-c-btn-link:hover{color:#939393}.uppy-ProviderBrowser-viewType--grid ul.uppy-ProviderBrowser-list,.uppy-ProviderBrowser-viewType--unsplash ul.uppy-ProviderBrowser-list{align-items:flex-start;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;padding:6px}.uppy-ProviderBrowser-viewType--grid ul.uppy-ProviderBrowser-list:after,.uppy-ProviderBrowser-viewType--unsplash ul.uppy-ProviderBrowser-list:after{content:"";flex:auto}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem{margin:0;position:relative;width:50%}.uppy-size--md .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem,.uppy-size--md .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem{width:33.3333%}.uppy-size--lg .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem,.uppy-size--lg .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem{width:25%}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem:before,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem:before{content:"";display:block;padding-top:100%}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--selected img,.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--selected svg,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--selected img,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--selected svg{opacity:.85}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--disabled,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--disabled{opacity:.5}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner{background-color:#93939333}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner,[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview .uppy-ProviderBrowserItem-inner{background-color:#eaeaea33}.uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview svg,.uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview svg{height:30%;width:30%;fill:#000000b3}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--grid li.uppy-ProviderBrowserItem--noPreview svg,[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--unsplash li.uppy-ProviderBrowserItem--noPreview svg{fill:#fffc}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner{border-radius:4px;height:calc(100% - 14px);inset:7px;overflow:hidden;position:absolute;text-align:center;width:calc(100% - 14px)}@media(hover:none){.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner .uppy-ProviderBrowserItem-author{display:block}}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner,[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner{box-shadow:0 0 0 3px #aae1ffb3}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-inner img,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-inner img{border-radius:4px;height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-author{background:#0000004d;bottom:0;color:#fff;display:none;font-size:12px;font-weight:500;left:0;margin:0;padding:5px;position:absolute;text-decoration:none;width:100%}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-author:hover,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-author:hover{background:#0006;text-decoration:underline}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox{background-color:#1269cf;border-radius:50%;height:26px;opacity:0;position:absolute;right:16px;top:16px;width:26px;z-index:1002}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox:after,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox:after{height:7px;inset-inline-start:7px;top:8px;width:12px}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox{opacity:1}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:hover+label .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label .uppy-ProviderBrowserItem-author,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:hover+label .uppy-ProviderBrowserItem-author{display:block}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label{box-shadow:0 0 0 3px #1269cf80}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label:focus,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label:focus{outline:none}.uppy-ProviderBrowser-viewType--grid .uppy-ProviderBrowserItem-checkbox--grid:focus+label::-moz-focus-inner,.uppy-ProviderBrowser-viewType--unsplash .uppy-ProviderBrowserItem-checkbox--grid:focus+label::-moz-focus-inner{border:0}.uppy-ProviderBrowser-viewType--list{background-color:#fff}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--list{background-color:#1f1f1f}.uppy-ProviderBrowser-viewType--list li.uppy-ProviderBrowserItem{align-items:center;display:flex;margin:0;padding:7px 15px}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--list li.uppy-ProviderBrowserItem{color:#eaeaea}.uppy-ProviderBrowser-viewType--list li.uppy-ProviderBrowserItem--disabled{opacity:.6}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox{background-color:#fff;border:1px solid #cfcfcf;border-radius:3px;height:17px;margin-inline-end:15px;width:17px}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox:focus{border:1px solid #1269cf;box-shadow:0 0 0 3px #1269cf40;outline:none}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox:after{height:5px;inset-inline-start:3px;opacity:0;top:4px;width:9px}[data-uppy-theme=dark] .uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-checkbox:focus{border-color:#02baf2b3;box-shadow:0 0 0 3px #02baf233}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox,.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-partial .uppy-ProviderBrowserItem-checkbox{background-color:#1269cf;border-color:#1269cf}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox:after,.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--is-partial .uppy-ProviderBrowserItem-checkbox:after{opacity:1}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner{align-items:center;color:inherit;display:flex;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;overflow:hidden;padding:2px;text-overflow:ellipsis;white-space:nowrap}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner:focus{outline:none;text-decoration:underline}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner img,.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner svg{margin-inline-end:8px}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-inner span{line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem--disabled .uppy-ProviderBrowserItem-inner{cursor:default}.uppy-ProviderBrowser-viewType--list .uppy-ProviderBrowserItem-iconWrap{margin-inline-end:7px;width:20px}.uppy-ProviderBrowserItem-checkbox{cursor:pointer;flex-shrink:0;position:relative}.uppy-ProviderBrowserItem-checkbox:disabled,.uppy-ProviderBrowserItem-checkbox:disabled:after{cursor:default}[data-uppy-theme=dark] .uppy-ProviderBrowserItem-checkbox{background-color:#1f1f1f;border-color:#939393}[data-uppy-theme=dark] .uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox{background-color:#333}.uppy-ProviderBrowserItem--is-checked .uppy-ProviderBrowserItem-checkbox:after{border-bottom:2px solid #eaeaea;border-left:2px solid #eaeaea;content:"";cursor:pointer;position:absolute;transform:rotate(-45deg)}.uppy-ProviderBrowserItem--is-partial .uppy-ProviderBrowserItem-checkbox:after{background-color:#eaeaea!important;content:""!important;height:2px!important;left:20%!important;position:absolute!important;right:20%!important;top:50%!important;transform:translateY(-50%)!important}.uppy-SearchProvider{align-items:center;display:flex;flex:1;flex-direction:column;height:100%;justify-content:center;width:100%}[data-uppy-theme=dark] .uppy-SearchProvider{background-color:#1f1f1f}.uppy-SearchProvider-input{margin-bottom:15px;max-width:650px;width:90%}.uppy-size--md .uppy-SearchProvider-input{margin-bottom:20px}.uppy-SearchProvider-input::-webkit-search-cancel-button{display:none}.uppy-SearchProvider-searchButton{padding:13px 25px}.uppy-size--md .uppy-SearchProvider-searchButton{padding:13px 30px}.uppy-DashboardContent-panelBody{align-items:center;display:flex;flex:1;justify-content:center}[data-uppy-theme=dark] .uppy-DashboardContent-panelBody{background-color:#1f1f1f}.uppy-Provider-auth,.uppy-Provider-empty,.uppy-Provider-error,.uppy-Provider-loading{align-items:center;color:#939393;display:flex;flex:1;flex-flow:column wrap;justify-content:center}.uppy-Provider-empty{color:#939393}.uppy-Provider-authIcon svg{height:75px;width:100px}.uppy-Provider-authTitle{color:#757575;font-size:17px;font-weight:400;line-height:1.4;margin-bottom:30px;max-width:500px;padding:0 15px;text-align:center}.uppy-size--md .uppy-Provider-authTitle{font-size:20px}[data-uppy-theme=dark] .uppy-Provider-authTitle{color:#cfcfcf}.uppy-Provider-btn-google{align-items:center;background:#4285f4;display:flex;padding:8px 12px!important}.uppy-Provider-btn-google:hover{background-color:#1266f1}.uppy-Provider-btn-google:focus{box-shadow:0 0 0 3px #4285f466;outline:none}.uppy-Provider-btn-google svg{margin-right:8px}.uppy-Provider-breadcrumbs{color:#525252;flex:1;font-size:12px;margin-bottom:10px;text-align:start}.uppy-size--md .uppy-Provider-breadcrumbs{margin-bottom:0}[data-uppy-theme=dark] .uppy-Provider-breadcrumbs{color:#eaeaea}.uppy-Provider-breadcrumbsIcon{color:#525252;display:inline-block;line-height:1;margin-inline-end:4px;vertical-align:middle}.uppy-Provider-breadcrumbsIcon svg{height:13px;width:13px;fill:#525252}.uppy-Provider-breadcrumbs button{border-radius:3px;display:inline-block;line-height:inherit;padding:4px}.uppy-Provider-breadcrumbs button:focus{outline:none}.uppy-Provider-breadcrumbs button::-moz-focus-inner{border:0}.uppy-Provider-breadcrumbs button:hover{color:#0e51a0}.uppy-Provider-breadcrumbs button:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-Provider-breadcrumbs button:focus{background-color:#333}.uppy-Provider-breadcrumbs button:not(:last-of-type){text-decoration:underline}.uppy-Provider-breadcrumbs button:last-of-type{color:#333;cursor:normal;font-weight:500;pointer-events:none}.uppy-Provider-breadcrumbs button:hover{cursor:pointer}[data-uppy-theme=dark] .uppy-Provider-breadcrumbs button{color:#eaeaea}.uppy-ProviderBrowser{display:flex;flex:1;flex-direction:column;font-size:14px;font-weight:400;height:100%}.uppy-ProviderBrowser-user{color:#333;font-weight:500;margin:0 8px 0 0}[data-uppy-theme=dark] .uppy-ProviderBrowser-user{color:#eaeaea}.uppy-ProviderBrowser-user:after{color:#939393;content:"·";font-weight:400;inset-inline-start:4px;position:relative}.uppy-ProviderBrowser-header{border-bottom:1px solid #eaeaea;position:relative;z-index:1001}[data-uppy-theme=dark] .uppy-ProviderBrowser-header{border-bottom:1px solid #333}.uppy-ProviderBrowser-headerBar{background-color:#fafafa;color:#757575;font-size:12px;line-height:1.4;padding:7px 15px;z-index:1001}.uppy-size--md .uppy-ProviderBrowser-headerBar{align-items:center;display:flex}[data-uppy-theme=dark] .uppy-ProviderBrowser-headerBar{background-color:#1f1f1f}.uppy-ProviderBrowser-headerBar--simple{display:block;justify-content:center;text-align:center}.uppy-ProviderBrowser-headerBar--simple .uppy-Provider-breadcrumbsWrap{display:inline-block;flex:none;vertical-align:middle}.uppy-ProviderBrowser-searchFilter{align-items:center;display:flex;height:30px;margin-bottom:15px;margin-top:15px;padding-left:8px;padding-right:8px;position:relative;width:100%}.uppy-ProviderBrowser-searchFilterInput{background-color:#eaeaea;border:0;border-radius:4px;color:#333;font-family:-apple-system,system-ui,BlinkMacSystemFont,Segoe UI,Segoe UI Symbol,Segoe UI Emoji,Apple Color Emoji,Roboto,Helvetica,Arial,sans-serif;font-size:13px;height:30px;line-height:1.4;outline:0;padding-inline-end:30px;padding-inline-start:30px;width:100%;z-index:1001}.uppy-ProviderBrowser-searchFilterInput::-webkit-search-cancel-button{display:none}[data-uppy-theme=dark] .uppy-ProviderBrowser-searchFilterInput{background-color:#1f1f1f;color:#eaeaea}.uppy-ProviderBrowser-searchFilterInput:focus{background-color:#cfcfcf;border:0}[data-uppy-theme=dark] .uppy-ProviderBrowser-searchFilterInput:focus{background-color:#333}.uppy-ProviderBrowser-searchFilterIcon{color:#757575;height:12px;inset-inline-start:16px;position:absolute;width:12px;z-index:1002}.uppy-ProviderBrowser-searchFilterInput::-moz-placeholder{color:#939393;opacity:1}.uppy-ProviderBrowser-searchFilterInput::placeholder{color:#939393;opacity:1}.uppy-ProviderBrowser-searchFilterReset{border-radius:3px;color:#939393;cursor:pointer;height:22px;inset-inline-end:16px;padding:6px;position:absolute;width:22px;z-index:1002}.uppy-ProviderBrowser-searchFilterReset:focus{outline:none}.uppy-ProviderBrowser-searchFilterReset::-moz-focus-inner{border:0}.uppy-ProviderBrowser-searchFilterReset:focus{box-shadow:0 0 0 3px #1269cf80}.uppy-ProviderBrowser-searchFilterReset:hover{color:#757575}.uppy-ProviderBrowser-searchFilterReset svg{vertical-align:text-top}.uppy-ProviderBrowser-userLogout{border-radius:3px;color:#1269cf;cursor:pointer;line-height:inherit;padding:4px}.uppy-ProviderBrowser-userLogout:focus{outline:none}.uppy-ProviderBrowser-userLogout::-moz-focus-inner{border:0}.uppy-ProviderBrowser-userLogout:hover{color:#0e51a0}.uppy-ProviderBrowser-userLogout:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-ProviderBrowser-userLogout:focus{background-color:#333}.uppy-ProviderBrowser-userLogout:hover{text-decoration:underline}[data-uppy-theme=dark] .uppy-ProviderBrowser-userLogout{color:#eaeaea}.uppy-ProviderBrowser-body{flex:1;position:relative}.uppy-ProviderBrowser-list{background-color:#fff;border-spacing:0;display:block;flex:1;height:100%;inset:0;list-style:none;margin:0;overflow-x:hidden;overflow-y:auto;padding:0;position:absolute;width:100%;-webkit-overflow-scrolling:touch}[data-uppy-theme=dark] .uppy-ProviderBrowser-list{background-color:#1f1f1f}.uppy-ProviderBrowser-list:focus{outline:none}.uppy-ProviderBrowserItem-inner{cursor:pointer;font-size:13px;font-weight:500}.uppy-ProviderBrowser-footer{align-items:center;background-color:#fff;border-top:1px solid #eaeaea;display:flex;justify-content:space-between;padding:15px}.uppy-ProviderBrowser-footer button{margin-inline-end:8px}[data-uppy-theme=dark] .uppy-ProviderBrowser-footer{background-color:#1f1f1f;border-top:1px solid #333}.uppy-ProviderBrowser-footer-buttons{flex-shrink:0}.uppy-ProviderBrowser-footer-error{color:#e32437;line-height:18px}@media(max-width:426px){.uppy-ProviderBrowser-footer{align-items:stretch;flex-direction:column-reverse}.uppy-ProviderBrowser-footer-error{padding-bottom:10px}}.picker-dialog-bg{z-index:20000!important}.picker-dialog{z-index:20001!important}.uppy-Dashboard-Item-previewInnerWrap{align-items:center;border-radius:3px;box-shadow:0 0 2px #0006;display:flex;flex-direction:column;height:100%;justify-content:center;overflow:hidden;position:relative;width:100%}.uppy-size--md .uppy-Dashboard-Item-previewInnerWrap{box-shadow:0 1px 2px #00000026}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-previewInnerWrap{box-shadow:none}.uppy-Dashboard-Item-previewInnerWrap:after{background-color:#000000a6;content:"";display:none;inset:0;position:absolute;z-index:1001}.uppy-Dashboard-Item-previewLink{inset:0;position:absolute;z-index:1002}.uppy-Dashboard-Item-previewLink:focus{box-shadow:inset 0 0 0 3px #579df0}[data-uppy-theme=dark] .uppy-Dashboard-Item-previewLink:focus{box-shadow:inset 0 0 0 3px #016c8d}.uppy-Dashboard-Item-preview img.uppy-Dashboard-Item-previewImg{border-radius:3px;height:100%;-o-object-fit:cover;object-fit:cover;transform:translateZ(0);width:100%}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-preview img.uppy-Dashboard-Item-previewImg{height:auto;max-height:100%;max-width:100%;-o-object-fit:contain;object-fit:contain;padding:10px;width:auto}.uppy-Dashboard-Item-progress{color:#fff;left:50%;position:absolute;text-align:center;top:50%;transform:translate(-50%,-50%);transition:all .35 ease;width:120px;z-index:1002}.uppy-Dashboard-Item-progressIndicator{color:#fff;display:inline-block;height:38px;opacity:.9;width:38px}.uppy-size--md .uppy-Dashboard-Item-progressIndicator{height:55px;width:55px}button.uppy-Dashboard-Item-progressIndicator{cursor:pointer}button.uppy-Dashboard-Item-progressIndicator:focus{outline:none}button.uppy-Dashboard-Item-progressIndicator::-moz-focus-inner{border:0}button.uppy-Dashboard-Item-progressIndicator:focus .uppy-Dashboard-Item-progressIcon--bg,button.uppy-Dashboard-Item-progressIndicator:focus .uppy-Dashboard-Item-progressIcon--retry{fill:#579df0}.uppy-Dashboard-Item-progressIcon--circle{height:100%;width:100%}.uppy-Dashboard-Item-progressIcon--bg{stroke:#fff6}.uppy-Dashboard-Item-progressIcon--progress{transition:stroke-dashoffset .5s ease-out;stroke:#fff}.uppy-Dashboard-Item-progressIcon--play{transition:all .2s;fill:#fff;stroke:#fff}.uppy-Dashboard-Item-progressIcon--cancel{transition:all .2s;fill:#fff}.uppy-Dashboard-Item-progressIcon--pause{transition:all .2s;fill:#fff;stroke:#fff}.uppy-Dashboard-Item-progressIcon--check{transition:all .2s;fill:#fff}.uppy-Dashboard-Item-progressIcon--retry{fill:#fff}.uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progress{inset-inline-end:-8px;inset-inline-start:auto;top:-9px;transform:none;width:auto}.uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-progressIndicator{height:18px;width:18px}.uppy-size--md .uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-progressIndicator{height:28px;width:28px}.uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progressIndicator{height:18px;opacity:1;width:18px}.uppy-size--md .uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progressIndicator{height:22px;width:22px}.uppy-Dashboard-Item.is-processing .uppy-Dashboard-Item-progress{opacity:0}.uppy-Dashboard-Item-fileInfo{padding-inline-end:5px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfo{padding-inline-end:10px}.uppy-size--md.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfo{padding-inline-end:15px}.uppy-Dashboard-Item-name{font-size:12px;font-weight:500;line-height:1.3;margin-bottom:5px;word-wrap:anywhere;word-break:break-all}[data-uppy-theme=dark] .uppy-Dashboard-Item-name{color:#eaeaea}.uppy-size--md.uppy-Dashboard--singleFile .uppy-Dashboard-Item-name{font-size:14px;line-height:1.4}.uppy-Dashboard-Item-fileName{align-items:baseline;display:flex}.uppy-Dashboard-Item-fileName button{margin-left:5px}.uppy-Dashboard-Item-author{color:#757575;display:inline-block;font-size:11px;font-weight:400;line-height:1;margin-bottom:5px;vertical-align:bottom}.uppy-Dashboard-Item-author a{color:#757575}.uppy-Dashboard-Item-status{color:#757575;font-size:11px;font-weight:400;line-height:1}[data-uppy-theme=dark] .uppy-Dashboard-Item-status{color:#bbb}.uppy-Dashboard-Item-statusSize{display:inline-block;margin-bottom:5px;text-transform:uppercase;vertical-align:bottom}.uppy-Dashboard-Item-reSelect{color:#1269cf;font-family:inherit;font-size:inherit;font-weight:600}.uppy-Dashboard-Item-errorMessage{background-color:#fdeff1;color:#a51523;font-size:11px;font-weight:500;line-height:1.3;padding:5px 6px}.uppy-Dashboard-Item-errorMessageBtn{color:#a51523;cursor:pointer;font-size:11px;font-weight:500;text-decoration:underline}.uppy-Dashboard-Item-preview .uppy-Dashboard-Item-errorMessage{display:none}.uppy-size--md .uppy-Dashboard-Item-preview .uppy-Dashboard-Item-errorMessage{border-bottom-left-radius:3px;border-bottom-right-radius:3px;border-top:1px solid #f7c2c8;bottom:0;display:block;left:0;line-height:1.4;padding:6px 8px;position:absolute;right:0}.uppy-Dashboard-Item-fileInfo .uppy-Dashboard-Item-errorMessage{border:1px solid #f7c2c8;border-radius:3px;display:inline-block;position:static}.uppy-size--md .uppy-Dashboard-Item-fileInfo .uppy-Dashboard-Item-errorMessage{display:none}.uppy-Dashboard-Item-action{color:#939393;cursor:pointer}.uppy-Dashboard-Item-action:focus{outline:none}.uppy-Dashboard-Item-action::-moz-focus-inner{border:0}.uppy-Dashboard-Item-action:focus{box-shadow:0 0 0 3px #1269cf80}.uppy-Dashboard-Item-action:hover{color:#1f1f1f;opacity:1}[data-uppy-theme=dark] .uppy-Dashboard-Item-action{color:#cfcfcf}[data-uppy-theme=dark] .uppy-Dashboard-Item-action:focus{outline:none}[data-uppy-theme=dark] .uppy-Dashboard-Item-action::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-Dashboard-Item-action:focus{box-shadow:0 0 0 2px #aae1ffd9}[data-uppy-theme=dark] .uppy-Dashboard-Item-action:hover{color:#eaeaea}.uppy-Dashboard-Item-action--remove{color:#1f1f1f;opacity:.95}.uppy-Dashboard-Item-action--remove:hover{color:#000;opacity:1}.uppy-size--md .uppy-Dashboard-Item-action--remove{height:18px;inset-inline-end:-8px;padding:0;position:absolute;top:-8px;width:18px;z-index:1002}.uppy-size--md .uppy-Dashboard-Item-action--remove:focus{border-radius:50%}.uppy-Dashboard--singleFile.uppy-size--height-md .uppy-Dashboard-Item-action--remove{inset-inline-end:8px;position:absolute;top:8px}[data-uppy-theme=dark] .uppy-Dashboard-Item-action--remove{color:#525252}[data-uppy-theme=dark] .uppy-Dashboard-Item-action--remove:hover{color:#333}.uppy-Dashboard:not(.uppy-size--md):not(.uppy-Dashboard--singleFile.uppy-size--height-md) .uppy-Dashboard-Item-actionWrapper{align-items:center;display:flex}.uppy-Dashboard:not(.uppy-size--md):not(.uppy-Dashboard--singleFile.uppy-size--height-md) .uppy-Dashboard-Item-action{height:22px;margin-left:3px;padding:3px;width:22px}.uppy-Dashboard:not(.uppy-size--md):not(.uppy-Dashboard--singleFile.uppy-size--height-md) .uppy-Dashboard-Item-action:focus{border-radius:3px}.uppy-size--md .uppy-Dashboard-Item-action--copyLink,.uppy-size--md .uppy-Dashboard-Item-action--edit{height:16px;padding:0;width:16px}.uppy-size--md .uppy-Dashboard-Item-action--copyLink:focus,.uppy-size--md .uppy-Dashboard-Item-action--edit:focus{border-radius:3px}.uppy-Dashboard-Item{align-items:center;border-bottom:1px solid #eaeaea;display:flex;padding:10px}.uppy-Dashboard:not(.uppy-Dashboard--singleFile) .uppy-Dashboard-Item{padding-inline-end:0}[data-uppy-theme=dark] .uppy-Dashboard-Item{border-bottom:1px solid #333}.uppy-size--md .uppy-Dashboard-Item{border-bottom:0;display:block;float:inline-start;height:215px;margin:5px 15px;padding:0;position:relative;width:calc(33.333% - 30px)}.uppy-size--lg .uppy-Dashboard-Item{height:190px;margin:5px 15px;padding:0;width:calc(25% - 30px)}.uppy-size--xl .uppy-Dashboard-Item{height:210px;padding:0;width:calc(20% - 30px)}.uppy-Dashboard--singleFile .uppy-Dashboard-Item{border-bottom:0;display:flex;flex-direction:column;height:100%;max-width:400px;padding:15px;position:relative;width:100%}.uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-previewInnerWrap{opacity:.2}.uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-name{opacity:.7}.uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-preview:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='35' height='39' viewBox='0 0 35 39'%3E%3Cpath fill='%2523000' d='M1.708 38.66c1.709 0 3.417-3.417 6.834-3.417s5.125 3.417 8.61 3.417c3.348 0 5.056-3.417 8.473-3.417 4.305 0 5.125 3.417 6.833 3.417.889 0 1.709-.889 1.709-1.709v-19.68C34.167-5.757 0-5.757 0 17.271v19.68c0 .82.888 1.709 1.708 1.709m8.542-17.084a3.383 3.383 0 0 1-3.417-3.416 3.383 3.383 0 0 1 3.417-3.417 3.383 3.383 0 0 1 3.417 3.417 3.383 3.383 0 0 1-3.417 3.416m13.667 0A3.383 3.383 0 0 1 20.5 18.16a3.383 3.383 0 0 1 3.417-3.417 3.383 3.383 0 0 1 3.416 3.417 3.383 3.383 0 0 1-3.416 3.416'/%3E%3C/svg%3E");background-position:50% 10px;background-repeat:no-repeat;background-size:25px;content:"";inset:0;opacity:.5;position:absolute;z-index:1005}.uppy-size--md .uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-preview:before{background-position:50% 50%;background-size:40px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item.is-ghost .uppy-Dashboard-Item-preview:before{background-position:50% 50%;background-size:30%}.uppy-Dashboard-Item-preview{flex-grow:0;flex-shrink:0;height:50px;position:relative;width:50px}.uppy-size--md .uppy-Dashboard-Item-preview{height:140px;width:100%}.uppy-size--lg .uppy-Dashboard-Item-preview{height:120px}.uppy-size--xl .uppy-Dashboard-Item-preview{height:140px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-preview{flex-grow:1;max-height:75%;width:100%}.uppy-Dashboard--singleFile.uppy-size--md .uppy-Dashboard-Item-preview{max-height:100%}.uppy-Dashboard-Item-fileInfoAndButtons{align-items:center;display:flex;flex-grow:1;justify-content:space-between;padding-inline-end:8px;padding-inline-start:12px}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfoAndButtons,.uppy-size--md .uppy-Dashboard-Item-fileInfoAndButtons{align-items:flex-start;padding:9px 0 0}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-fileInfoAndButtons{flex-grow:0;width:100%}.uppy-Dashboard-Item-fileInfo{flex-grow:1;flex-shrink:1}.uppy-Dashboard-Item-actionWrapper{flex-grow:0;flex-shrink:0}.uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-previewInnerWrap:after,.uppy-Dashboard-Item.is-inprogress .uppy-Dashboard-Item-previewInnerWrap:after{display:block}.uppy-Dashboard-Item-errorDetails{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#939393;border:none;border-radius:50%;color:#fff;cursor:help;flex-shrink:0;font-size:10px;font-weight:600;height:13px;inset-inline-start:2px;line-height:12px;position:relative;text-align:center;top:0;width:13px}.uppy-Dashboard-Item-errorDetails:after{line-height:1.3;word-wrap:break-word}.uppy-Dashboard-FileCard{background-color:#fff;border-radius:5px;box-shadow:0 0 10px 4px #0000001a;display:flex;flex-direction:column;height:100%;inset:0;position:absolute;width:100%;z-index:1005}.uppy-Dashboard-FileCard .uppy-DashboardContent-bar{border-top-left-radius:5px;border-top-right-radius:5px}.uppy-Dashboard-FileCard .uppy-Dashboard-FileCard-actions{border-bottom-left-radius:5px;border-bottom-right-radius:5px}.uppy-Dashboard-FileCard-inner{display:flex;flex-direction:column;flex-grow:1;flex-shrink:1;height:100%;min-height:0}.uppy-Dashboard-FileCard-preview{align-items:center;border-bottom:1px solid #eaeaea;display:flex;flex-grow:0;flex-shrink:1;height:60%;justify-content:center;min-height:0;position:relative}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-preview{background-color:#333;border-bottom:0}.uppy-Dashboard-FileCard-preview img.uppy-Dashboard-Item-previewImg{border-radius:3px;box-shadow:0 3px 20px #00000026;flex:0 0 auto;max-height:90%;max-width:90%;-o-object-fit:cover;object-fit:cover}.uppy-Dashboard-FileCard-edit{background-color:#00000080;border-radius:50px;color:#fff;font-size:13px;inset-inline-end:10px;padding:7px 15px;position:absolute;top:10px}.uppy-Dashboard-FileCard-edit:focus{outline:none}.uppy-Dashboard-FileCard-edit::-moz-focus-inner{border:0}.uppy-Dashboard-FileCard-edit:focus{box-shadow:0 0 0 3px #1269cf80}.uppy-Dashboard-FileCard-edit:hover{background-color:#000c}.uppy-Dashboard-FileCard-info{flex-grow:0;flex-shrink:0;height:40%;overflow-y:auto;padding:30px 20px 20px;-webkit-overflow-scrolling:touch}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-info{background-color:#1f1f1f}.uppy-Dashboard-FileCard-fieldset{border:0;font-size:0;margin:auto auto 12px;max-width:640px;padding:0}.uppy-Dashboard-FileCard-label{color:#525252;display:inline-block;font-size:12px;vertical-align:middle;width:22%}.uppy-size--md .uppy-Dashboard-FileCard-label{font-size:14px}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-label{color:#eaeaea}.uppy-Dashboard-FileCard-input{display:inline-block;vertical-align:middle;width:78%}.uppy-Dashboard-FileCard-actions{align-items:center;background-color:#fafafa;border-top:1px solid #eaeaea;display:flex;flex-grow:0;flex-shrink:0;height:55px;padding:0 15px}.uppy-size--md .uppy-Dashboard-FileCard-actions{height:65px}[data-uppy-theme=dark] .uppy-Dashboard-FileCard-actions{background-color:#1f1f1f;border-top:1px solid #333}.uppy-Dashboard-FileCard-actionsBtn{margin-inline-end:10px}.uppy-Informer{bottom:60px;left:0;position:absolute;right:0;text-align:center;z-index:1005}.uppy-Informer span>div{margin-bottom:6px}.uppy-Informer-animated{opacity:0;transform:translateY(350%);transition:all .3s ease-in;z-index:-1000}.uppy-Informer p{background-color:#757575;border-radius:18px;color:#fff;display:inline-block;font-size:12px;font-weight:400;line-height:1.4;margin:0;max-width:90%;padding:6px 15px}.uppy-size--md .uppy-Informer p{font-size:14px;line-height:1.3;max-width:500px;padding:10px 20px}[data-uppy-theme=dark] .uppy-Informer p{background-color:#333}.uppy-Informer p span{background-color:#fff;border-radius:50%;color:#525252;display:inline-block;font-size:10px;height:13px;inset-inline-start:3px;line-height:12px;margin-inline-start:-1px;position:relative;top:-1px;vertical-align:middle;width:13px}.uppy-Informer p span:hover{cursor:help}.uppy-Informer p span:after{line-height:1.3;word-wrap:break-word}.uppy-Root [aria-label][role~=tooltip]{position:relative}.uppy-Root [aria-label][role~=tooltip]:after,.uppy-Root [aria-label][role~=tooltip]:before{backface-visibility:hidden;box-sizing:border-box;opacity:0;pointer-events:none;position:absolute;transform:translateZ(0);transform-origin:top;transition:all var(--microtip-transition-duration,.18s) var(--microtip-transition-easing,ease-in-out) var(--microtip-transition-delay,0s);will-change:transform;z-index:10}.uppy-Root [aria-label][role~=tooltip]:before{background-size:100% auto!important;content:""}.uppy-Root [aria-label][role~=tooltip]:after{background:#111111e6;border-radius:4px;box-sizing:initial;color:#fff;content:attr(aria-label);font-size:var(--microtip-font-size,13px);font-weight:var(--microtip-font-weight,normal);padding:.5em 1em;text-transform:var(--microtip-text-transform,none);white-space:nowrap}.uppy-Root [aria-label][role~=tooltip]:focus:after,.uppy-Root [aria-label][role~=tooltip]:focus:before,.uppy-Root [aria-label][role~=tooltip]:hover:after,.uppy-Root [aria-label][role~=tooltip]:hover:before{opacity:1;pointer-events:auto}.uppy-Root [role~=tooltip][data-microtip-position|=top]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M2.658 0h32.004c-6 0-11.627 12.002-16.002 12.002S8.594 0 2.658 0'/%3E%3C/svg%3E") no-repeat;bottom:100%;height:6px;left:50%;margin-bottom:5px;transform:translate3d(-50%,0,0);width:18px}.uppy-Root [role~=tooltip][data-microtip-position|=top]:after{bottom:100%;left:50%;margin-bottom:11px;transform:translate3d(-50%,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=top]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position|=top]:hover:before{transform:translate3d(-50%,-5px,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-left]:after{bottom:100%;transform:translate3d(calc(-100% + 16px),0,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-left]:hover:after{transform:translate3d(calc(-100% + 16px),-5px,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-right]:after{bottom:100%;transform:translate3d(-16px,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=top-right]:hover:after{transform:translate3d(-16px,-5px,0)}.uppy-Root [role~=tooltip][data-microtip-position|=bottom]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M33.342 12H1.338c6 0 11.627-12.002 16.002-12.002S27.406 12 33.342 12'/%3E%3C/svg%3E") no-repeat;bottom:auto;height:6px;left:50%;margin-bottom:0;margin-top:5px;top:100%;transform:translate3d(-50%,-10px,0);width:18px}.uppy-Root [role~=tooltip][data-microtip-position|=bottom]:after{left:50%;margin-top:11px;top:100%;transform:translate3d(-50%,-10px,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position|=bottom]:hover:before{transform:translate3d(-50%,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-left]:after{top:100%;transform:translate3d(calc(-100% + 16px),-10px,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-left]:hover:after{transform:translate3d(calc(-100% + 16px),0,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-right]:after{top:100%;transform:translate3d(-16px,-10px,0)}.uppy-Root [role~=tooltip][data-microtip-position=bottom-right]:hover:after{transform:translate3d(-16px,0,0)}.uppy-Root [role~=tooltip][data-microtip-position=left]:after,.uppy-Root [role~=tooltip][data-microtip-position=left]:before{inset:50% 100% auto auto;transform:translate3d(10px,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-position=left]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='36'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M0 33.342V1.338c0 6 12.002 11.627 12.002 16.002S0 27.406 0 33.342'/%3E%3C/svg%3E") no-repeat;height:18px;margin-bottom:0;margin-right:5px;width:6px}.uppy-Root [role~=tooltip][data-microtip-position=left]:after{margin-right:11px}.uppy-Root [role~=tooltip][data-microtip-position=left]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position=left]:hover:before{transform:translate3d(0,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-position=right]:after,.uppy-Root [role~=tooltip][data-microtip-position=right]:before{bottom:auto;left:100%;top:50%;transform:translate3d(-10px,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-position=right]:before{background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='36'%3E%3Cpath fill='rgba(17, 17, 17, 0.9)' d='M12 2.658v32.004c0-6-12.002-11.627-12.002-16.002S12 8.594 12 2.658'/%3E%3C/svg%3E") no-repeat;height:18px;margin-bottom:0;margin-left:5px;width:6px}.uppy-Root [role~=tooltip][data-microtip-position=right]:after{margin-left:11px}.uppy-Root [role~=tooltip][data-microtip-position=right]:hover:after,.uppy-Root [role~=tooltip][data-microtip-position=right]:hover:before{transform:translate3d(0,-50%,0)}.uppy-Root [role~=tooltip][data-microtip-size=small]:after{white-space:normal;width:80px}.uppy-Root [role~=tooltip][data-microtip-size=medium]:after{white-space:normal;width:150px}.uppy-Root [role~=tooltip][data-microtip-size=large]:after{white-space:normal;width:260px}.uppy-StatusBar{background-color:#fff;color:#fff;display:flex;font-size:12px;font-weight:400;height:46px;line-height:40px;position:relative;transition:height .2s;z-index:1001}[data-uppy-theme=dark] .uppy-StatusBar{background-color:#1f1f1f}.uppy-StatusBar:before{background-color:#eaeaea;content:"";height:2px;inset:0;position:absolute;width:100%}[data-uppy-theme=dark] .uppy-StatusBar:before{background-color:#757575}.uppy-StatusBar[aria-hidden=true]{height:0;overflow-y:hidden}.uppy-StatusBar.is-complete .uppy-StatusBar-progress{background-color:#1bb240}.uppy-StatusBar.is-error .uppy-StatusBar-progress{background-color:#e32437}.uppy-StatusBar.is-complete .uppy-StatusBar-statusIndicator{color:#1bb240}.uppy-StatusBar.is-error .uppy-StatusBar-statusIndicator{color:#e32437}.uppy-StatusBar:not([aria-hidden=true]).is-waiting{background-color:#fff;border-top:1px solid #eaeaea;height:65px}[data-uppy-theme=dark] .uppy-StatusBar:not([aria-hidden=true]).is-waiting{background-color:#1f1f1f;border-top:1px solid #333}.uppy-StatusBar-progress{background-color:#1269cf;height:2px;position:absolute;transition:background-color,width .3s ease-out;z-index:1001}.uppy-StatusBar-progress.is-indeterminate{animation:uppy-StatusBar-ProgressStripes 1s linear infinite;background-image:linear-gradient(45deg,#0000004d 25%,#0000 0 50%,#0000004d 0 75%,#0000 0,#0000);background-size:64px 64px}@keyframes uppy-StatusBar-ProgressStripes{0%{background-position:0 0}to{background-position:64px 0}}.uppy-StatusBar.is-postprocessing .uppy-StatusBar-progress,.uppy-StatusBar.is-preprocessing .uppy-StatusBar-progress{background-color:#f6a623}.uppy-StatusBar.is-waiting .uppy-StatusBar-progress{display:none}.uppy-StatusBar-content{align-items:center;color:#333;display:flex;height:100%;padding-inline-start:10px;position:relative;text-overflow:ellipsis;white-space:nowrap;z-index:1002}.uppy-size--md .uppy-StatusBar-content{padding-inline-start:15px}[data-uppy-theme=dark] .uppy-StatusBar-content{color:#eaeaea}.uppy-StatusBar-status{display:flex;flex-direction:column;font-weight:400;justify-content:center;line-height:1.4;padding-inline-end:.3em}.uppy-StatusBar-statusPrimary{display:flex;font-weight:500;line-height:1}.uppy-StatusBar-statusPrimary button.uppy-StatusBar-details{margin-left:5px}[data-uppy-theme=dark] .uppy-StatusBar-statusPrimary{color:#eaeaea}.uppy-StatusBar-statusSecondary{color:#757575;display:inline-block;font-size:11px;line-height:1.2;margin-top:1px;white-space:nowrap}[data-uppy-theme=dark] .uppy-StatusBar-statusSecondary{color:#bbb}.uppy-StatusBar-statusSecondaryHint{display:inline-block;line-height:1;margin-inline-end:5px;vertical-align:middle}.uppy-size--md .uppy-StatusBar-statusSecondaryHint{margin-inline-end:8px}.uppy-StatusBar-statusIndicator{color:#525252;margin-inline-end:7px;position:relative;top:1px}.uppy-StatusBar-statusIndicator svg{vertical-align:text-bottom}.uppy-StatusBar-actions{align-items:center;bottom:0;display:flex;inset-inline-end:10px;position:absolute;top:0;z-index:1004}.uppy-StatusBar.is-waiting .uppy-StatusBar-actions{background-color:#fafafa;height:100%;padding:0 15px;position:static;width:100%}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actions{background-color:#1f1f1f}.uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts{flex-direction:column;height:90px}.uppy-size--md .uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts{flex-direction:row;height:65px}.uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts .uppy-StatusBar-actions{flex-direction:column;justify-content:center}.uppy-size--md .uppy-StatusBar:not([aria-hidden=true]).is-waiting.has-ghosts .uppy-StatusBar-actions{flex-direction:row;justify-content:normal}.uppy-StatusBar-actionCircleBtn{cursor:pointer;line-height:1;margin:3px;opacity:.9}.uppy-StatusBar-actionCircleBtn:focus{outline:none}.uppy-StatusBar-actionCircleBtn::-moz-focus-inner{border:0}.uppy-StatusBar-actionCircleBtn:focus{box-shadow:0 0 0 3px #1269cf80}[data-uppy-theme=dark] .uppy-StatusBar-actionCircleBtn:focus{outline:none}[data-uppy-theme=dark] .uppy-StatusBar-actionCircleBtn::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-StatusBar-actionCircleBtn:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-StatusBar-actionCircleBtn:hover{opacity:1}.uppy-StatusBar-actionCircleBtn:focus{border-radius:50%}.uppy-StatusBar-actionCircleBtn svg{vertical-align:bottom}.uppy-StatusBar-actionBtn{color:#1269cf;display:inline-block;font-size:10px;line-height:inherit;vertical-align:middle}.uppy-size--md .uppy-StatusBar-actionBtn{font-size:11px}.uppy-StatusBar-actionBtn--disabled{opacity:.4}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--disabled{opacity:.7}.uppy-StatusBar-actionBtn--retry{background-color:#ff4b23;border-radius:8px;color:#fff;height:16px;line-height:1;margin-inline-end:6px;padding:1px 6px 3px 18px;position:relative}.uppy-StatusBar-actionBtn--retry:focus{outline:none}.uppy-StatusBar-actionBtn--retry::-moz-focus-inner{border:0}.uppy-StatusBar-actionBtn--retry:focus{box-shadow:0 0 0 3px #1269cf80}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--retry:focus{outline:none}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--retry::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--retry:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-StatusBar-actionBtn--retry:hover{background-color:#f92d00}.uppy-StatusBar-actionBtn--retry svg{inset-inline-start:6px;position:absolute;top:3px}.uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload{background-color:#1bb240;color:#fff;font-size:14px;line-height:1;padding:15px 10px;width:100%}.uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload:hover{background-color:#189c38}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload{background-color:#1c8b37}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload:hover{background-color:#18762f}.uppy-size--md .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload{padding:13px 22px;width:auto}.uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload.uppy-StatusBar-actionBtn--disabled:hover{background-color:#1bb240;cursor:not-allowed}[data-uppy-theme=dark] .uppy-StatusBar.is-waiting .uppy-StatusBar-actionBtn--upload.uppy-StatusBar-actionBtn--disabled:hover{background-color:#1c8b37}.uppy-StatusBar:not(.is-waiting) .uppy-StatusBar-actionBtn--upload{background-color:initial;color:#1269cf}.uppy-StatusBar-actionBtn--uploadNewlyAdded{border-radius:3px;padding-inline-end:3px;padding-bottom:1px;padding-inline-start:3px}.uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{outline:none}.uppy-StatusBar-actionBtn--uploadNewlyAdded::-moz-focus-inner{border:0}.uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{box-shadow:0 0 0 3px #1269cf80}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{outline:none}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--uploadNewlyAdded::-moz-focus-inner{border:0}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--uploadNewlyAdded:focus{box-shadow:0 0 0 2px #aae1ffd9}.uppy-StatusBar.is-postprocessing .uppy-StatusBar-actionBtn--uploadNewlyAdded,.uppy-StatusBar.is-preprocessing .uppy-StatusBar-actionBtn--uploadNewlyAdded{display:none}.uppy-StatusBar-actionBtn--done{border-radius:3px;line-height:1;padding:7px 8px}.uppy-StatusBar-actionBtn--done:focus{outline:none}.uppy-StatusBar-actionBtn--done::-moz-focus-inner{border:0}.uppy-StatusBar-actionBtn--done:hover{color:#0e51a0}.uppy-StatusBar-actionBtn--done:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--done:focus{background-color:#333}[data-uppy-theme=dark] .uppy-StatusBar-actionBtn--done{color:#02baf2}.uppy-size--md .uppy-StatusBar-actionBtn--done{font-size:14px}.uppy-StatusBar-serviceMsg{color:#000;font-size:11px;line-height:1.1;padding-left:10px}.uppy-size--md .uppy-StatusBar-serviceMsg{font-size:14px;padding-left:15px}[data-uppy-theme=dark] .uppy-StatusBar-serviceMsg{color:#eaeaea}.uppy-StatusBar-serviceMsg-ghostsIcon{left:6px;opacity:.5;position:relative;top:2px;vertical-align:text-bottom;width:10px}.uppy-size--md .uppy-StatusBar-serviceMsg-ghostsIcon{left:10px;top:1px;width:15px}.uppy-StatusBar-details{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#939393;border-radius:50%;color:#fff;cursor:help;display:inline-block;font-size:10px;font-weight:600;height:13px;inset-inline-start:2px;line-height:12px;position:relative;text-align:center;top:0;vertical-align:middle;width:13px}.uppy-StatusBar-details:after{line-height:1.3;word-wrap:break-word}.uppy-StatusBar-spinner{animation-duration:1s;animation-iteration-count:infinite;animation-name:uppy-StatusBar-spinnerAnimation;animation-timing-function:linear;fill:#1269cf;margin-inline-end:10px}.uppy-StatusBar.is-postprocessing .uppy-StatusBar-spinner,.uppy-StatusBar.is-preprocessing .uppy-StatusBar-spinner{fill:#f6a623}@keyframes uppy-StatusBar-spinnerAnimation{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.uppy-transition-slideDownUp-enter{opacity:.01;transform:translate3d(0,-105%,0);transition:transform .25s ease-in-out,opacity .25s ease-in-out}.uppy-transition-slideDownUp-enter.uppy-transition-slideDownUp-enter-active{opacity:1;transform:translateZ(0)}.uppy-transition-slideDownUp-leave{opacity:1;transform:translateZ(0);transition:transform .25s ease-in-out,opacity .25s ease-in-out}.uppy-transition-slideDownUp-leave.uppy-transition-slideDownUp-leave-active{opacity:.01;transform:translate3d(0,-105%,0)}@keyframes uppy-Dashboard-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes uppy-Dashboard-fadeOut{0%{opacity:1}to{opacity:0}}@keyframes uppy-Dashboard-slideDownAndFadeIn{0%{opacity:0;transform:translate3d(-50%,-70%,0)}to{opacity:1;transform:translate3d(-50%,-50%,0)}}@keyframes uppy-Dashboard-slideDownAndFadeIn--small{0%{opacity:0;transform:translate3d(0,-20%,0)}to{opacity:1;transform:translateZ(0)}}@keyframes uppy-Dashboard-slideUpFadeOut{0%{opacity:1;transform:translate3d(-50%,-50%,0)}to{opacity:0;transform:translate3d(-50%,-70%,0)}}@keyframes uppy-Dashboard-slideUpFadeOut--small{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20%,0)}}.uppy-Dashboard--modal{z-index:1001}.uppy-Dashboard--modal[aria-hidden=true]{display:none}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideDownAndFadeIn--small .3s cubic-bezier(0,0,.2,1)}@media only screen and (min-width:820px){.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideDownAndFadeIn .3s cubic-bezier(0,0,.2,1)}}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose>.uppy-Dashboard-overlay{animation:uppy-Dashboard-fadeIn .3s cubic-bezier(0,0,.2,1)}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose.uppy-Dashboard--isClosing>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideUpFadeOut--small .3s cubic-bezier(0,0,.2,1)}@media only screen and (min-width:820px){.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose.uppy-Dashboard--isClosing>.uppy-Dashboard-inner{animation:uppy-Dashboard-slideUpFadeOut .3s cubic-bezier(0,0,.2,1)}}.uppy-Dashboard--modal.uppy-Dashboard--animateOpenClose.uppy-Dashboard--isClosing>.uppy-Dashboard-overlay{animation:uppy-Dashboard-fadeOut .3s cubic-bezier(0,0,.2,1)}.uppy-Dashboard-isFixed{height:100vh;overflow:hidden}.uppy-Dashboard--modal .uppy-Dashboard-overlay{background-color:#00000080;inset:0;position:fixed;z-index:1001}.uppy-Dashboard-inner{background-color:#f4f4f4;border:1px solid #eaeaea;border-radius:5px;max-height:100%;max-width:100%;outline:none;position:relative}.uppy-size--md .uppy-Dashboard-inner{min-height:auto}@media only screen and (min-width:820px){.uppy-Dashboard-inner{height:500px;width:650px}}.uppy-Dashboard--modal .uppy-Dashboard-inner{z-index:1002}[data-uppy-theme=dark] .uppy-Dashboard-inner{background-color:#1f1f1f}.uppy-Dashboard--isDisabled .uppy-Dashboard-inner{cursor:not-allowed}.uppy-Dashboard-innerWrap{border-radius:5px;display:flex;flex-direction:column;height:100%;opacity:0;overflow:hidden;position:relative}.uppy-Dashboard--isInnerWrapVisible .uppy-Dashboard-innerWrap{opacity:1}.uppy-Dashboard--isDisabled .uppy-Dashboard-innerWrap{cursor:not-allowed;filter:grayscale(100%);opacity:.6;-webkit-user-select:none;-moz-user-select:none;user-select:none}.uppy-Dashboard--isDisabled .uppy-ProviderIconBg{fill:#9f9f9f}.uppy-Dashboard--isDisabled [aria-disabled],.uppy-Dashboard--isDisabled [disabled]{cursor:not-allowed;pointer-events:none}.uppy-Dashboard--modal .uppy-Dashboard-inner{border:none;inset:35px 15px 15px;position:fixed}@media only screen and (min-width:820px){.uppy-Dashboard--modal .uppy-Dashboard-inner{box-shadow:0 5px 15px 4px #00000026;left:50%;right:auto;top:50%;transform:translate(-50%,-50%)}}.uppy-Dashboard-close{color:#ffffffe6;cursor:pointer;display:block;font-size:27px;inset-inline-end:-2px;position:absolute;top:-33px;z-index:1005}.uppy-Dashboard-close:focus{outline:none}.uppy-Dashboard-close::-moz-focus-inner{border:0}.uppy-Dashboard-close:focus{color:#6eabf2}@media only screen and (min-width:820px){.uppy-Dashboard-close{font-size:35px;inset-inline-end:-35px;top:-10px}}.uppy-Dashboard-serviceMsg{background-color:#fffbf7;border-bottom:1px solid #edd4b9;border-top:1px solid #edd4b9;font-size:12px;font-weight:500;line-height:1.3;padding:12px 0;position:relative;top:-1px;z-index:1004}.uppy-size--md .uppy-Dashboard-serviceMsg{font-size:14px;line-height:1.4}[data-uppy-theme=dark] .uppy-Dashboard-serviceMsg{background-color:#1f1f1f;border-bottom:1px solid #333;border-top:1px solid #333;color:#eaeaea}.uppy-Dashboard-serviceMsg-title{display:block;line-height:1;margin-bottom:4px;padding-left:42px}.uppy-Dashboard-serviceMsg-text{padding:0 15px}.uppy-Dashboard-serviceMsg-actionBtn{color:#1269cf;font-size:inherit;font-weight:inherit;vertical-align:initial}[data-uppy-theme=dark] .uppy-Dashboard-serviceMsg-actionBtn{color:#02baf2e6}.uppy-Dashboard-serviceMsg-icon{left:15px;position:absolute;top:10px}.uppy-Dashboard-AddFiles{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;position:relative;text-align:center}[data-uppy-drag-drop-supported=true] .uppy-Dashboard-AddFiles{border:1px dashed #dfdfdf;border-radius:3px;height:calc(100% - 14px);margin:7px}.uppy-Dashboard-AddFilesPanel .uppy-Dashboard-AddFiles{border:none;height:calc(100% - 54px)}.uppy-Dashboard--modal .uppy-Dashboard-AddFiles{border-color:#cfcfcf}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles{border-color:#757575}.uppy-Dashboard-AddFiles-info{display:none;margin-top:auto;padding-bottom:15px;padding-top:15px}.uppy-size--height-md .uppy-Dashboard-AddFiles-info{display:block}.uppy-size--md .uppy-Dashboard-AddFiles-info{bottom:25px;left:0;padding-bottom:0;padding-top:30px;position:absolute;right:0}[data-uppy-num-acquirers="0"] .uppy-Dashboard-AddFiles-info{margin-top:0}.uppy-Dashboard-browse{color:#1269cf;cursor:pointer}.uppy-Dashboard-browse:focus{outline:none}.uppy-Dashboard-browse::-moz-focus-inner{border:0}.uppy-Dashboard-browse:focus,.uppy-Dashboard-browse:hover{border-bottom:1px solid #1269cf}[data-uppy-theme=dark] .uppy-Dashboard-browse{color:#02baf2e6}[data-uppy-theme=dark] .uppy-Dashboard-browse:focus,[data-uppy-theme=dark] .uppy-Dashboard-browse:hover{border-bottom:1px solid #02baf2}.uppy-Dashboard-browseBtn{display:block;font-size:14px;font-weight:500;margin-bottom:5px;margin-top:8px;width:100%}.uppy-size--md .uppy-Dashboard-browseBtn{font-size:15px;margin:15px auto;padding:13px 44px;width:auto}.uppy-Dashboard-AddFiles-list{display:flex;flex:1;flex-direction:column;margin-top:2px;overflow-y:auto;padding:2px 0;width:100%;-webkit-overflow-scrolling:touch}.uppy-size--md .uppy-Dashboard-AddFiles-list{flex:none;flex-direction:row;flex-wrap:wrap;justify-content:center;margin-top:15px;max-width:600px;overflow-y:visible;padding-top:0}.uppy-DashboardTab{border-bottom:1px solid #eaeaea;text-align:center;width:100%}[data-uppy-theme=dark] .uppy-DashboardTab{border-bottom:1px solid #333}.uppy-size--md .uppy-DashboardTab{border-bottom:none;display:inline-block;margin-bottom:10px;width:auto}.uppy-DashboardTab-btn{align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:initial;color:#525252;cursor:pointer;flex-direction:row;height:100%;justify-content:left;padding:12px 15px;width:100%}.uppy-DashboardTab-btn:focus{outline:none}.uppy-size--md .uppy-DashboardTab-btn{border-radius:5px;flex-direction:column;margin-inline-end:1px;padding:10px 3px;width:86px}[data-uppy-theme=dark] .uppy-DashboardTab-btn{color:#eaeaea}.uppy-DashboardTab-btn::-moz-focus-inner{border:0}.uppy-DashboardTab-btn:hover{background-color:#e9ecef}[data-uppy-theme=dark] .uppy-DashboardTab-btn:hover{background-color:#333}.uppy-DashboardTab-btn:active,.uppy-DashboardTab-btn:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-DashboardTab-btn:active,[data-uppy-theme=dark] .uppy-DashboardTab-btn:focus{background-color:#525252}.uppy-DashboardTab-btn svg{display:inline-block;max-height:100%;max-width:100%;overflow:hidden;transition:transform .15s ease-in-out;vertical-align:text-top}.uppy-DashboardTab-inner{align-items:center;background-color:#fff;border-radius:8px;box-shadow:0 1px 1px #0000001a,0 1px 2px #0000001a,0 2px 3px #00000005;display:flex;height:32px;justify-content:center;margin-inline-end:10px;width:32px}.uppy-size--md .uppy-DashboardTab-inner{margin-inline-end:0}[data-uppy-theme=dark] .uppy-DashboardTab-inner{background-color:#323232;box-shadow:0 1px 1px #0003,0 1px 2px #0003,0 2px 3px #00000014}.uppy-DashboardTab-name{font-size:14px;font-weight:400}.uppy-size--md .uppy-DashboardTab-name{font-size:12px;line-height:15px;margin-bottom:0;margin-top:8px}.uppy-DashboardTab-iconMyDevice{color:#1269cf}[data-uppy-theme=dark] .uppy-DashboardTab-iconMyDevice{color:#02baf2}.uppy-DashboardTab-iconBox{color:#0061d5}[data-uppy-theme=dark] .uppy-DashboardTab-iconBox{color:#eaeaea}.uppy-DashboardTab-iconDropbox{color:#0061fe}[data-uppy-theme=dark] .uppy-DashboardTab-iconDropbox{color:#eaeaea}.uppy-DashboardTab-iconUnsplash{color:#111}[data-uppy-theme=dark] .uppy-DashboardTab-iconUnsplash{color:#eaeaea}.uppy-DashboardTab-iconWebdav{color:#111}[data-uppy-theme=dark] .uppy-DashboardTab-iconWebdav{color:#eaeaea}.uppy-DashboardTab-iconScreenRec{color:#2c3e50}[data-uppy-theme=dark] .uppy-DashboardTab-iconScreenRec{color:#eaeaea}.uppy-DashboardTab-iconAudio{color:#8030a3}[data-uppy-theme=dark] .uppy-DashboardTab-iconAudio{color:#bf6ee3}.uppy-Dashboard-input{height:.1px;opacity:0;overflow:hidden;position:absolute;width:.1px;z-index:-1}.uppy-DashboardContent-bar{align-items:center;background-color:#fafafa;border-bottom:1px solid #eaeaea;display:flex;flex-shrink:0;height:40px;justify-content:space-between;padding:0 10px;position:relative;width:100%;z-index:1004}.uppy-size--md .uppy-DashboardContent-bar{height:50px;padding:0 15px}[data-uppy-theme=dark] .uppy-DashboardContent-bar{background-color:#1f1f1f;border-bottom:1px solid #333}.uppy-DashboardContent-title{font-size:12px;font-weight:500;left:0;line-height:40px;margin:auto;max-width:170px;overflow-x:hidden;position:absolute;right:0;text-align:center;text-overflow:ellipsis;top:0;white-space:nowrap;width:100%}.uppy-size--md .uppy-DashboardContent-title{font-size:14px;line-height:50px;max-width:300px}[data-uppy-theme=dark] .uppy-DashboardContent-title{color:#eaeaea}.uppy-DashboardContent-back,.uppy-DashboardContent-save{-webkit-appearance:none;background:none;border:0;border-radius:3px;color:inherit;color:#1269cf;cursor:pointer;font-family:inherit;font-size:inherit;font-size:12px;font-weight:400;line-height:1;margin:0;margin-inline-start:-6px;padding:7px 6px}.uppy-DashboardContent-back:focus,.uppy-DashboardContent-save:focus{outline:none}.uppy-DashboardContent-back::-moz-focus-inner,.uppy-DashboardContent-save::-moz-focus-inner{border:0}.uppy-DashboardContent-back:hover,.uppy-DashboardContent-save:hover{color:#0e51a0}.uppy-DashboardContent-back:focus,.uppy-DashboardContent-save:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-DashboardContent-back:focus,[data-uppy-theme=dark] .uppy-DashboardContent-save:focus{background-color:#333}.uppy-size--md .uppy-DashboardContent-back,.uppy-size--md .uppy-DashboardContent-save{font-size:14px}[data-uppy-theme=dark] .uppy-DashboardContent-back,[data-uppy-theme=dark] .uppy-DashboardContent-save{color:#02baf2}.uppy-DashboardContent-addMore{-webkit-appearance:none;background:none;border:0;border-radius:3px;color:inherit;color:#1269cf;cursor:pointer;font-family:inherit;font-size:inherit;font-weight:500;height:29px;line-height:1;margin:0;margin-inline-end:-5px;padding:7px 8px;width:29px}.uppy-DashboardContent-addMore:focus{outline:none}.uppy-DashboardContent-addMore::-moz-focus-inner{border:0}.uppy-DashboardContent-addMore:hover{color:#0e51a0}.uppy-DashboardContent-addMore:focus{background-color:#dfe6f1}[data-uppy-theme=dark] .uppy-DashboardContent-addMore:focus{background-color:#333}.uppy-size--md .uppy-DashboardContent-addMore{font-size:14px;height:auto;margin-inline-end:-8px;width:auto}[data-uppy-theme=dark] .uppy-DashboardContent-addMore{color:#02baf2}.uppy-DashboardContent-addMore svg{margin-inline-end:4px;vertical-align:initial}.uppy-size--md .uppy-DashboardContent-addMore svg{height:11px;width:11px}.uppy-DashboardContent-addMoreCaption{display:none}.uppy-size--md .uppy-DashboardContent-addMoreCaption{display:inline}.uppy-DashboardContent-panel{background-color:#f5f5f5;flex:1}.uppy-Dashboard-AddFilesPanel,.uppy-DashboardContent-panel{border-radius:5px;display:flex;flex-direction:column;inset:0;overflow:hidden;position:absolute;z-index:1005}.uppy-Dashboard-AddFilesPanel{background:#fafafa;background:linear-gradient(0deg,#fafafa 35%,#fafafad9);box-shadow:0 0 10px 5px #00000026}[data-uppy-theme=dark] .uppy-Dashboard-AddFilesPanel{background-color:#333;background-image:linear-gradient(0deg,#1f1f1f 35%,#1f1f1fd9)}.uppy-Dashboard--isAddFilesPanelVisible .uppy-Dashboard-files{filter:blur(2px)}.uppy-Dashboard-progress{bottom:0;height:12%;left:0;position:absolute;width:100%}.uppy-Dashboard-progressBarContainer.is-active{height:100%;left:0;position:absolute;top:0;width:100%;z-index:1004}.uppy-Dashboard-filesContainer{flex:1;margin:0;overflow-y:hidden;position:relative}.uppy-Dashboard-filesContainer:after{clear:both;content:"";display:table}.uppy-Dashboard-files{flex:1;margin:0;overflow-y:auto;padding:0 0 10px;-webkit-overflow-scrolling:touch}.uppy-size--md .uppy-Dashboard-files{padding-top:10px}.uppy-Dashboard--singleFile .uppy-Dashboard-filesInner{align-items:center;display:flex;height:100%;justify-content:center}.uppy-Dashboard-dropFilesHereHint{align-items:center;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48'%3E%3Cpath fill='%231269CF' d='M24 1v1C11.85 2 2 11.85 2 24s9.85 22 22 22 22-9.85 22-22S36.15 2 24 2zm0 0V0c13.254 0 24 10.746 24 24S37.254 48 24 48 0 37.254 0 24 10.746 0 24 0zm7.707 19.293a.999.999 0 1 1-1.414 1.414L25 16.414V34a1 1 0 1 1-2 0V16.414l-5.293 5.293a.999.999 0 1 1-1.414-1.414l7-7a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E");background-position:50% 50%;background-repeat:no-repeat;border:1px dashed #1269cf;border-radius:3px;color:#757575;display:flex;font-size:16px;justify-content:center;inset:7px;padding-top:90px;position:absolute;text-align:center;visibility:hidden;z-index:2000}[data-uppy-theme=dark] .uppy-Dashboard-dropFilesHereHint{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48'%3E%3Cpath fill='%2302BAF2' d='M24 1v1C11.85 2 2 11.85 2 24s9.85 22 22 22 22-9.85 22-22S36.15 2 24 2zm0 0V0c13.254 0 24 10.746 24 24S37.254 48 24 48 0 37.254 0 24 10.746 0 24 0zm7.707 19.293a.999.999 0 1 1-1.414 1.414L25 16.414V34a1 1 0 1 1-2 0V16.414l-5.293 5.293a.999.999 0 1 1-1.414-1.414l7-7a1 1 0 0 1 1.414 0z'/%3E%3C/svg%3E");border-color:#02baf2;color:#bbb}.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-dropFilesHereHint{pointer-events:none;visibility:visible}.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-files,.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-progressindicators,.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-serviceMsg,.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-DashboardContent-bar{opacity:.15}.uppy-Dashboard.uppy-Dashboard--isDraggingOver .uppy-Dashboard-AddFiles{opacity:.03}.uppy-Dashboard-AddFiles-title{color:#000;font-size:17px;font-weight:500;line-height:1.35;margin-bottom:5px;margin-top:15px;padding:0 15px;text-align:inline-start;width:100%}.uppy-size--md .uppy-Dashboard-AddFiles-title{font-size:21px;font-weight:400;margin-top:5px;max-width:480px;padding:0 35px;text-align:center}[data-uppy-num-acquirers="0"] .uppy-Dashboard-AddFiles-title{text-align:center}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles-title{color:#eaeaea}.uppy-Dashboard-AddFiles-title button{font-weight:500}.uppy-size--md .uppy-Dashboard-AddFiles-title button{font-weight:400}.uppy-Dashboard-note{color:#757575;font-size:14px;line-height:1.25;margin:auto;max-width:350px;padding:0 15px;text-align:center}.uppy-size--md .uppy-Dashboard-note{line-height:1.35;max-width:600px}[data-uppy-theme=dark] .uppy-Dashboard-note{color:#cfcfcf}a.uppy-Dashboard-poweredBy{color:#939393;display:inline-block;font-size:11px;margin-top:8px;text-align:center;text-decoration:none}.uppy-Dashboard-poweredByIcon{margin-left:1px;margin-right:1px;opacity:.9;position:relative;top:1px;vertical-align:text-top;fill:none;stroke:#939393}.uppy-Dashboard-Item-previewIcon{height:25px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:25px;z-index:100}.uppy-size--md .uppy-Dashboard-Item-previewIcon{height:38px;width:38px}.uppy-Dashboard-Item-previewIcon svg{height:100%;width:100%}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-previewIcon{height:100%;max-height:60%;max-width:60%;width:100%}.uppy-Dashboard-Item-previewIconWrap{height:76px;max-height:75%;position:relative}.uppy-Dashboard--singleFile .uppy-Dashboard-Item-previewIconWrap{height:100%;width:100%}.uppy-Dashboard-Item-previewIconBg{filter:drop-shadow(rgba(0,0,0,.1) 0 1px 1px);height:100%;width:100%}.uppy-Dashboard-upload{height:50px;position:relative;width:50px}.uppy-size--md .uppy-Dashboard-upload{height:60px;width:60px}.uppy-Dashboard-upload .uppy-c-icon{position:relative;top:1px;width:50%}.uppy-Dashboard-uploadCount{background-color:#1bb240;border-radius:50%;color:#fff;font-size:8px;height:16px;inset-inline-end:-12px;line-height:16px;position:absolute;top:-12px;width:16px}.uppy-size--md .uppy-Dashboard-uploadCount{font-size:9px;height:18px;line-height:18px;width:18px}.uppy-Dashboard-inner{border:none!important;background:transparent!important}.uppy-Dashboard-innerWrap{border-radius:.5rem;overflow:hidden}.uppy-Dashboard-AddFiles{border:2px dashed hsl(var(--border))!important;border-radius:.5rem!important;background:hsl(var(--muted) / .3)!important;transition:all .2s ease}.uppy-Dashboard-AddFiles:hover{border-color:hsl(var(--primary))!important;background:hsl(var(--muted) / .5)!important}.uppy-Dashboard-AddFiles-title{color:hsl(var(--foreground))!important;font-weight:500!important}.uppy-Dashboard-AddFiles-info{color:hsl(var(--muted-foreground))!important}.uppy-Dashboard-browse{color:hsl(var(--primary))!important;font-weight:500!important}.uppy-Dashboard-browse:hover{text-decoration:underline!important}.uppy-Dashboard-files{background:transparent!important}.uppy-Dashboard-Item{border-bottom-color:hsl(var(--border))!important}.uppy-Dashboard-Item-name{color:hsl(var(--foreground))!important}.uppy-Dashboard-Item-status{color:hsl(var(--muted-foreground))!important}.uppy-StatusBar{background:hsl(var(--muted))!important;border-top:1px solid hsl(var(--border))!important}.uppy-StatusBar-progress{background:hsl(var(--primary))!important}.uppy-StatusBar-content{color:hsl(var(--foreground))!important}.uppy-StatusBar-actionBtn--upload{background:hsl(var(--primary))!important;color:hsl(var(--primary-foreground))!important;border-radius:.375rem!important;font-weight:500!important;padding:.5rem 1rem!important}.uppy-StatusBar-actionBtn--upload:hover{background:hsl(var(--primary) / .9)!important}.uppy-Dashboard-note{color:hsl(var(--muted-foreground))!important;font-size:.75rem!important}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles,.dark .uppy-Dashboard-AddFiles{background:hsl(var(--muted) / .2)!important}[data-uppy-theme=dark] .uppy-Dashboard-AddFiles-title,.dark .uppy-Dashboard-AddFiles-title{color:hsl(var(--foreground))!important}[data-uppy-theme=dark] .uppy-StatusBar,.dark .uppy-StatusBar{background:hsl(var(--muted) / .5)!important}.uppy-Dashboard{font-family:inherit!important}.uppy-Dashboard-Item-preview{border-radius:.375rem!important;overflow:hidden}.uppy-Dashboard-Item-action--remove{color:hsl(var(--destructive))!important}.uppy-Dashboard-Item-action--remove:hover{opacity:.8}.uppy-Dashboard-Item.is-complete .uppy-Dashboard-Item-progress{color:hsl(var(--success, 142 76% 36%))!important}.uppy-Dashboard-Item.is-error .uppy-Dashboard-Item-progress{color:hsl(var(--destructive))!important}.uppy-Dashboard-files::-webkit-scrollbar{width:6px}.uppy-Dashboard-files::-webkit-scrollbar-track{background:transparent}.uppy-Dashboard-files::-webkit-scrollbar-thumb{background:hsl(var(--muted-foreground) / .3);border-radius:3px}.uppy-Dashboard-files::-webkit-scrollbar-thumb:hover{background:hsl(var(--muted-foreground) / .5)}@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-DMm9YOAa.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-DRggAlZN.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-CB_wures.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-Cx986IdX.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-Jm3AIy58.woff) format("woff"),url(/assets/KaTeX_Main-Bold-waoOVXN0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-BMLOBm91.woff) format("woff"),url(/assets/KaTeX_Main-Italic-3WenGoN9.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-B22Nviop.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-Dr94JaBh.woff) format("woff"),url(/assets/KaTeX_Main-Regular-ypZvNtVU.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-t53AETM-.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-DA0__PXp.woff) format("woff"),url(/assets/KaTeX_Math-Italic-flOr_0UB.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-D3wIWfF6.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-D5yQViql.woff) format("woff"),url(/assets/KaTeX_Script-Regular-C5JkGWo-.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-C195tn64.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-oD1tc_U0.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(/assets/KaTeX_Size3-Regular-CTq5MqoE.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-BF-4gkZK.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-DWFBv043.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.25"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}.react-flow{direction:ltr}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1;cursor:grab}.react-flow__pane.selection{cursor:pointer}.react-flow__pane.dragging{cursor:grabbing}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow .react-flow__edges{pointer-events:none;overflow:visible}.react-flow__edge-path,.react-flow__connection-path{stroke:#b1b1b7;stroke-width:1;fill:none}.react-flow__edge{pointer-events:visibleStroke;cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge:focus .react-flow__edge-path,.react-flow__edge:focus-visible .react-flow__edge-path{stroke:#555}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge-textbg{fill:#fff}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__connectionline{z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:grab}.react-flow__node.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background:#1a192b;border:1px solid white;border-radius:100%}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:-4px;transform:translate(-50%)}.react-flow__handle-top{left:50%;top:-4px;transform:translate(-50%)}.react-flow__handle-left{top:50%;left:-4px;transform:translateY(-50%)}.react-flow__handle-right{right:-4px;top:50%;transform:translateY(-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.center{left:50%;transform:translate(-50%)}.react-flow__attribution{font-size:10px;background:#ffffff80;padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-input,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:3px;width:150px;font-size:12px;color:#222;text-align:center;border-width:1px;border-style:solid;border-color:#1a192b;background-color:#fff}.react-flow__node-default.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:0 1px 4px 1px #00000014}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:0 0 0 .5px #1a192b}.react-flow__node-group{background-color:#f0f0f040}.react-flow__nodesselection-rect,.react-flow__selection{background:#0059dc14;border:1px dotted rgba(0,89,220,.8)}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls{box-shadow:0 0 2px 1px #00000014}.react-flow__controls-button{border:none;background:#fefefe;border-bottom:1px solid #eee;box-sizing:content-box;display:flex;justify-content:center;align-items:center;width:16px;height:16px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:5px}.react-flow__controls-button:hover{background:#f4f4f4}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__minimap{background-color:#fff}.react-flow__minimap svg{display:block}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:4px;height:4px;border:1px solid #fff;border-radius:1px;background-color:#3367d9;transform:translate(-50%,-50%)}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:#3367d9;border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%} diff --git a/webui/dist/index.html b/webui/dist/index.html index d6f6f9b6..6aa56064 100644 --- a/webui/dist/index.html +++ b/webui/dist/index.html @@ -7,21 +7,21 @@ MaiBot Dashboard - + - + - +
From 138afe41a40b448065dfb6cf3bccdd493961a3be Mon Sep 17 00:00:00 2001 From: SengokuCola <1026294844@qq.com> Date: Tue, 2 Dec 2025 15:08:20 +0800 Subject: [PATCH 46/61] =?UTF-8?q?better=EF=BC=9A=E5=8A=A0=E5=BC=BA?= =?UTF-8?q?=E8=AE=B0=E5=BF=86=E6=A3=80=E7=B4=A2=E8=83=BD=E5=8A=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/memory_system/memory_retrieval.py | 291 ++++++++++-------- src/memory_system/retrieval_tools/__init__.py | 2 + .../retrieval_tools/found_answer.py | 41 +++ .../retrieval_tools/query_chat_history.py | 6 +- 4 files changed, 213 insertions(+), 127 deletions(-) create mode 100644 src/memory_system/retrieval_tools/found_answer.py diff --git a/src/memory_system/memory_retrieval.py b/src/memory_system/memory_retrieval.py index dc7755ea..476f316e 100644 --- a/src/memory_system/memory_retrieval.py +++ b/src/memory_system/memory_retrieval.py @@ -104,6 +104,7 @@ def init_memory_retrieval_prompt(): **重要限制:** - 思考要简短,直接切入要点 +- 最大查询轮数:{max_iterations}轮(当前第{current_iteration}轮,剩余{remaining_iterations}轮) 当前需要解答的问题:{question} 已收集的信息: @@ -113,11 +114,13 @@ def init_memory_retrieval_prompt(): - 如果涉及过往事件,或者查询某个过去可能提到过的概念,或者某段时间发生的事件。可以使用聊天记录查询工具查询过往事件 - 如果涉及人物,可以使用人物信息查询工具查询人物信息 - 如果没有可靠信息,且查询时间充足,或者不确定查询类别,也可以使用lpmm知识库查询,作为辅助信息 -- 如果信息不足需要使用tool,说明需要查询什么,并输出为纯文本说明,然后调用相应工具查询(可并行调用多个工具) +- **如果信息不足需要使用tool,说明需要查询什么,并输出为纯文本说明,然后调用相应工具查询(可并行调用多个工具)** +- **如果当前已收集的信息足够回答问题,且能找到明确答案,调用found_answer工具标记已找到答案** **思考** - 你可以对查询思路给出简短的思考 -- 你必须给出使用什么工具进行查询 +- 如果信息不足,你必须给出使用什么工具进行查询 +- 如果信息足够,你必须调用found_answer工具 """, name="memory_retrieval_react_prompt_head", ) @@ -314,33 +317,38 @@ def _match_jargon_from_text(chat_text: str, chat_id: str) -> List[str]: return list(matched.keys()) -def _log_conversation_messages(conversation_messages: List[Message], head_prompt: Optional[str] = None) -> None: +def _log_conversation_messages( + conversation_messages: List[Message], + head_prompt: Optional[str] = None, + final_status: Optional[str] = None, +) -> None: """输出对话消息列表的日志 - + Args: conversation_messages: 对话消息列表 head_prompt: 第一条系统消息(head_prompt)的内容,可选 + final_status: 最终结果状态描述(例如:找到答案/未找到答案),可选 """ if not global_config.debug.show_memory_prompt: return - - log_lines = [] - + + log_lines: List[str] = [] + # 如果有head_prompt,先添加为第一条消息 if head_prompt: - msg_info = "\n[消息 1] 角色: System 内容类型: 文本\n========================================" + msg_info = "========================================\n[消息 1] 角色: System 内容类型: 文本\n-----------------------" msg_info += f"\n{head_prompt}" log_lines.append(msg_info) start_idx = 2 else: start_idx = 1 - + if not conversation_messages and not head_prompt: return - + for idx, msg in enumerate(conversation_messages, start_idx): role_name = msg.role.value if hasattr(msg.role, "value") else str(msg.role) - + # 处理内容 - 显示完整内容,不截断 if isinstance(msg.content, str): full_content = msg.content @@ -353,25 +361,28 @@ def _log_conversation_messages(conversation_messages: List[Message], head_prompt else: full_content = str(msg.content) content_type = "未知" - + # 构建单条消息的日志信息 msg_info = f"\n[消息 {idx}] 角色: {role_name} 内容类型: {content_type}\n========================================" - + if full_content: msg_info += f"\n{full_content}" - + if msg.tool_calls: msg_info += f"\n 工具调用: {len(msg.tool_calls)}个" for tool_call in msg.tool_calls: msg_info += f"\n - {tool_call}" - + if msg.tool_call_id: msg_info += f"\n 工具调用ID: {msg.tool_call_id}" - + log_lines.append(msg_info) - + total_count = len(conversation_messages) + (1 if head_prompt else 0) - logger.info(f"消息列表 (共{total_count}条):{''.join(log_lines)}") + log_text = f"消息列表 (共{total_count}条):{''.join(log_lines)}" + if final_status: + log_text += f"\n\n[最终结果] {final_status}" + logger.info(log_text) async def _react_agent_solve_question( @@ -407,7 +418,7 @@ async def _react_agent_solve_question( thinking_steps = [] is_timeout = False conversation_messages: List[Message] = [] - last_head_prompt: Optional[str] = None # 保存最后一次使用的head_prompt + first_head_prompt: Optional[str] = None # 保存第一次使用的head_prompt(用于日志显示) for iteration in range(max_iterations): # 检查超时 @@ -430,40 +441,6 @@ async def _react_agent_solve_question( remaining_iterations = max_iterations - current_iteration is_final_iteration = current_iteration >= max_iterations - # 每次迭代开始时,先评估当前信息是否足够回答问题 - evaluation_prompt = await global_prompt_manager.format_prompt( - "memory_retrieval_react_final_prompt", - bot_name=bot_name, - time_now=time_now, - question=question, - collected_info=collected_info if collected_info else "暂无信息", - current_iteration=current_iteration, - remaining_iterations=remaining_iterations, - max_iterations=max_iterations, - ) - - # if global_config.debug.show_memory_prompt: - # logger.info(f"ReAct Agent 第 {iteration + 1} 次迭代 评估Prompt: {evaluation_prompt}") - - eval_success, eval_response, eval_reasoning_content, eval_model_name, eval_tool_calls = await llm_api.generate_with_model_with_tools( - evaluation_prompt, - model_config=model_config.model_task_config.tool_use, - tool_options=[], # 评估阶段不提供工具 - request_type="memory.react.eval", - ) - - if not eval_success: - logger.error(f"ReAct Agent 第 {iteration + 1} 次迭代 评估阶段 LLM调用失败: {eval_response}") - # 评估失败,如果还有剩余迭代次数,尝试继续查询 - if not is_final_iteration: - continue - else: - break - - logger.info( - f"ReAct Agent 第 {iteration + 1} 次迭代 评估响应: {eval_response}" - ) - # 提取函数调用中参数的值,支持单引号和双引号 def extract_quoted_content(text, func_name, param_name): """从文本中提取函数调用中参数的值,支持单引号和双引号 @@ -522,88 +499,132 @@ async def _react_agent_solve_question( return None - # 从评估响应中提取found_answer或not_enough_info - found_answer_content = None - not_enough_info_reason = None + # 如果是最后一次迭代,使用final_prompt进行总结 + if is_final_iteration: + evaluation_prompt = await global_prompt_manager.format_prompt( + "memory_retrieval_react_final_prompt", + bot_name=bot_name, + time_now=time_now, + question=question, + collected_info=collected_info if collected_info else "暂无信息", + current_iteration=current_iteration, + remaining_iterations=remaining_iterations, + max_iterations=max_iterations, + ) - if eval_response: - found_answer_content = extract_quoted_content(eval_response, "found_answer", "answer") - if not found_answer_content: - not_enough_info_reason = extract_quoted_content(eval_response, "not_enough_info", "reason") + if global_config.debug.show_memory_prompt: + logger.info(f"ReAct Agent 第 {iteration + 1} 次迭代 最终评估Prompt: {evaluation_prompt}") - # 如果找到答案,直接返回 - if found_answer_content: - eval_step = { - "iteration": iteration + 1, - "thought": f"[评估] {eval_response}", - "actions": [{"action_type": "found_answer", "action_params": {"answer": found_answer_content}}], - "observations": ["评估阶段检测到found_answer"] - } - thinking_steps.append(eval_step) - logger.info(f"ReAct Agent 第 {iteration + 1} 次迭代 评估阶段找到关于问题{question}的答案: {found_answer_content}") - - # React完成时输出消息列表 - _log_conversation_messages(conversation_messages, last_head_prompt) - - return True, found_answer_content, thinking_steps, False + eval_success, eval_response, eval_reasoning_content, eval_model_name, eval_tool_calls = await llm_api.generate_with_model_with_tools( + evaluation_prompt, + model_config=model_config.model_task_config.tool_use, + tool_options=[], # 最终评估阶段不提供工具 + request_type="memory.react.final", + ) - # 如果评估为not_enough_info,且是最终迭代,返回not_enough_info - if not_enough_info_reason: - if is_final_iteration: + if not eval_success: + logger.error(f"ReAct Agent 第 {iteration + 1} 次迭代 最终评估阶段 LLM调用失败: {eval_response}") + _log_conversation_messages( + conversation_messages, + head_prompt=first_head_prompt, + final_status="未找到答案:最终评估阶段LLM调用失败", + ) + return False, "最终评估阶段LLM调用失败", thinking_steps, False + + logger.info( + f"ReAct Agent 第 {iteration + 1} 次迭代 最终评估响应: {eval_response}" + ) + + # 从最终评估响应中提取found_answer或not_enough_info + found_answer_content = None + not_enough_info_reason = None + + if eval_response: + found_answer_content = extract_quoted_content(eval_response, "found_answer", "answer") + if not found_answer_content: + not_enough_info_reason = extract_quoted_content(eval_response, "not_enough_info", "reason") + + # 如果找到答案,返回 + if found_answer_content: eval_step = { "iteration": iteration + 1, - "thought": f"[评估] {eval_response}", + "thought": f"[最终评估] {eval_response}", + "actions": [{"action_type": "found_answer", "action_params": {"answer": found_answer_content}}], + "observations": ["最终评估阶段检测到found_answer"] + } + thinking_steps.append(eval_step) + logger.info(f"ReAct Agent 第 {iteration + 1} 次迭代 最终评估阶段找到关于问题{question}的答案: {found_answer_content}") + + _log_conversation_messages( + conversation_messages, + head_prompt=first_head_prompt, + final_status=f"找到答案:{found_answer_content}", + ) + + return True, found_answer_content, thinking_steps, False + + # 如果评估为not_enough_info,返回空字符串(不返回任何信息) + if not_enough_info_reason: + eval_step = { + "iteration": iteration + 1, + "thought": f"[最终评估] {eval_response}", "actions": [{"action_type": "not_enough_info", "action_params": {"reason": not_enough_info_reason}}], - "observations": ["评估阶段检测到not_enough_info"] + "observations": ["最终评估阶段检测到not_enough_info"] } thinking_steps.append(eval_step) logger.info( - f"ReAct Agent 第 {iteration + 1} 次迭代 评估阶段判断信息不足: {not_enough_info_reason}" + f"ReAct Agent 第 {iteration + 1} 次迭代 最终评估阶段判断信息不足: {not_enough_info_reason}" ) - # React完成时输出消息列表 - _log_conversation_messages(conversation_messages, last_head_prompt) - - return False, not_enough_info_reason, thinking_steps, False - else: - # 非最终迭代,信息不足,继续搜集信息 - logger.info( - f"ReAct Agent 第 {iteration + 1} 次迭代 评估阶段判断信息不足: {not_enough_info_reason},继续查询" + _log_conversation_messages( + conversation_messages, + head_prompt=first_head_prompt, + final_status=f"未找到答案:{not_enough_info_reason}", ) + + return False, "", thinking_steps, False - # 如果是最终迭代但没有明确判断,视为not_enough_info - if is_final_iteration: + # 如果没有明确判断,视为not_enough_info,返回空字符串(不返回任何信息) eval_step = { "iteration": iteration + 1, - "thought": f"[评估] {eval_response}", + "thought": f"[最终评估] {eval_response}", "actions": [{"action_type": "not_enough_info", "action_params": {"reason": "已到达最后一次迭代,无法找到答案"}}], "observations": ["已到达最后一次迭代,无法找到答案"] } thinking_steps.append(eval_step) logger.info(f"ReAct Agent 第 {iteration + 1} 次迭代 已到达最后一次迭代,无法找到答案") - # React完成时输出消息列表 - _log_conversation_messages(conversation_messages, last_head_prompt) + _log_conversation_messages( + conversation_messages, + head_prompt=first_head_prompt, + final_status="未找到答案:已到达最后一次迭代,无法找到答案", + ) - return False, "已到达最后一次迭代,无法找到答案", thinking_steps, False + return False, "", thinking_steps, False - # 非最终迭代且信息不足,使用head_prompt决定调用哪些工具 + # 前n-1次迭代,使用head_prompt决定调用哪些工具(包含found_answer工具) tool_definitions = tool_registry.get_tool_definitions() logger.info( f"ReAct Agent 第 {iteration + 1} 次迭代,问题: {question}|可用工具数量: {len(tool_definitions)}" ) - head_prompt = await global_prompt_manager.format_prompt( - "memory_retrieval_react_prompt_head", - bot_name=bot_name, - time_now=time_now, - question=question, - collected_info=collected_info if collected_info else "", - current_iteration=current_iteration, - remaining_iterations=remaining_iterations, - max_iterations=max_iterations, - ) - last_head_prompt = head_prompt # 保存最后一次使用的head_prompt + # head_prompt应该只构建一次,使用初始的collected_info,后续迭代都复用同一个 + if first_head_prompt is None: + # 第一次构建,使用初始的collected_info(即initial_info) + initial_collected_info = initial_info if initial_info else "" + first_head_prompt = await global_prompt_manager.format_prompt( + "memory_retrieval_react_prompt_head", + bot_name=bot_name, + time_now=time_now, + question=question, + collected_info=initial_collected_info, + current_iteration=current_iteration, + remaining_iterations=remaining_iterations, + max_iterations=max_iterations, + ) + + # 后续迭代都复用第一次构建的head_prompt + head_prompt = first_head_prompt def message_factory( _client, @@ -643,8 +664,7 @@ async def _react_agent_solve_question( logger.error(f"ReAct Agent LLM调用失败: {response}") break - # 注意:这里不检查found_answer或not_enough_info,这些只在评估阶段(memory_retrieval_react_final_prompt)检查 - # memory_retrieval_react_prompt_head只用于决定调用哪些工具来搜集信息 + # 注意:这里会检查found_answer工具调用,如果检测到found_answer工具,会直接返回答案 assistant_message: Optional[Message] = None if tool_calls: @@ -687,6 +707,7 @@ async def _react_agent_solve_question( # 处理工具调用 tool_tasks = [] + found_answer_from_tool = None # 检测是否有found_answer工具调用 for i, tool_call in enumerate(tool_calls): tool_name = tool_call.func_name @@ -696,6 +717,24 @@ async def _react_agent_solve_question( f"ReAct Agent 第 {iteration + 1} 次迭代 工具调用 {i + 1}/{len(tool_calls)}: {tool_name}({tool_args})" ) + # 检查是否是found_answer工具调用 + if tool_name == "found_answer": + found_answer_from_tool = tool_args.get("answer", "") + if found_answer_from_tool: + step["actions"].append({"action_type": "found_answer", "action_params": {"answer": found_answer_from_tool}}) + step["observations"] = ["检测到found_answer工具调用"] + thinking_steps.append(step) + logger.info(f"ReAct Agent 第 {iteration + 1} 次迭代 通过found_answer工具找到关于问题{question}的答案: {found_answer_from_tool}") + + _log_conversation_messages( + conversation_messages, + head_prompt=first_head_prompt, + final_status=f"找到答案:{found_answer_from_tool}", + ) + + return True, found_answer_from_tool, thinking_steps, False + continue # found_answer工具不需要执行,直接跳过 + # 普通工具调用 tool = tool_registry.get_tool(tool_name) if tool: @@ -740,15 +779,10 @@ async def _react_agent_solve_question( step["observations"].append(observation_text) collected_info += f"\n{observation_text}\n" if stripped_observation: - tool_builder = MessageBuilder() - tool_builder.set_role(RoleType.Tool) - tool_builder.add_text_content(observation_text) - tool_builder.add_tool_call(tool_call_item.call_id) - conversation_messages.append(tool_builder.build()) + # 检查工具输出中是否有新的jargon,如果有则追加到工具结果中 if enable_jargon_detection: jargon_concepts = _match_jargon_from_text(stripped_observation, chat_id) if jargon_concepts: - jargon_info = "" new_concepts = [] for concept in jargon_concepts: normalized_concept = concept.strip() @@ -757,9 +791,17 @@ async def _react_agent_solve_question( seen_jargon_concepts.add(normalized_concept) if new_concepts: jargon_info = await _retrieve_concepts_with_jargon(new_concepts, chat_id) - if jargon_info: - collected_info += f"\n{jargon_info}\n" - logger.info(f"工具输出触发黑话解析: {new_concepts}") + if jargon_info: + # 将jargon查询结果追加到工具结果中 + observation_text += f"\n\n{jargon_info}" + collected_info += f"\n{jargon_info}\n" + logger.info(f"工具输出触发黑话解析: {new_concepts}") + + tool_builder = MessageBuilder() + tool_builder.set_role(RoleType.Tool) + tool_builder.add_text_content(observation_text) + tool_builder.add_tool_call(tool_call_item.call_id) + conversation_messages.append(tool_builder.build()) thinking_steps.append(step) @@ -776,9 +818,14 @@ async def _react_agent_solve_question( logger.warning("ReAct Agent达到最大迭代次数,直接视为not_enough_info") # React完成时输出消息列表 - _log_conversation_messages(conversation_messages, last_head_prompt) + timeout_reason = "超时" if is_timeout else "达到最大迭代次数" + _log_conversation_messages( + conversation_messages, + head_prompt=first_head_prompt, + final_status=f"未找到答案:{timeout_reason}", + ) - return False, "未找到相关信息", thinking_steps, is_timeout + return False, "", thinking_steps, is_timeout def _get_recent_query_history(chat_id: str, time_window_seconds: float = 300.0) -> str: @@ -1023,9 +1070,9 @@ async def build_memory_retrieval_prompt( concept_info = await _retrieve_concepts_with_jargon(concepts, chat_id) if concept_info: initial_info += concept_info - logger.info(f"概念检索完成,结果: {concept_info}") + logger.debug(f"概念检索完成,结果: {concept_info}") else: - logger.info("概念检索未找到任何结果") + logger.debug("概念检索未找到任何结果") if not questions: logger.debug("模型认为不需要检索记忆或解析失败,不返回任何查询结果") diff --git a/src/memory_system/retrieval_tools/__init__.py b/src/memory_system/retrieval_tools/__init__.py index 17c3effb..7832985f 100644 --- a/src/memory_system/retrieval_tools/__init__.py +++ b/src/memory_system/retrieval_tools/__init__.py @@ -14,6 +14,7 @@ from .tool_registry import ( from .query_chat_history import register_tool as register_query_chat_history from .query_lpmm_knowledge import register_tool as register_lpmm_knowledge from .query_person_info import register_tool as register_query_person_info +from .found_answer import register_tool as register_found_answer from src.config.config import global_config @@ -21,6 +22,7 @@ def init_all_tools(): """初始化并注册所有记忆检索工具""" register_query_chat_history() register_query_person_info() + register_found_answer() # 注册found_answer工具 if global_config.lpmm_knowledge.lpmm_mode == "agent": register_lpmm_knowledge() diff --git a/src/memory_system/retrieval_tools/found_answer.py b/src/memory_system/retrieval_tools/found_answer.py new file mode 100644 index 00000000..cef71940 --- /dev/null +++ b/src/memory_system/retrieval_tools/found_answer.py @@ -0,0 +1,41 @@ +""" +found_answer工具 - 用于在记忆检索过程中标记找到答案 +""" + +from typing import Dict, Any +from src.common.logger import get_logger +from .tool_registry import register_memory_retrieval_tool + +logger = get_logger("memory_retrieval_tools") + + +async def found_answer(answer: str) -> str: + """标记已找到问题的答案 + + Args: + answer: 找到的答案内容 + + Returns: + str: 确认信息 + """ + # 这个工具主要用于标记,实际答案会通过返回值传递 + logger.info(f"找到答案: {answer}") + return f"已确认找到答案: {answer}" + + +def register_tool(): + """注册found_answer工具""" + register_memory_retrieval_tool( + name="found_answer", + description="当你在已收集的信息中找到了问题的明确答案时,调用此工具标记已找到答案。只有在检索到明确、具体的答案时才使用此工具,不要编造信息。", + parameters=[ + { + "name": "answer", + "type": "string", + "description": "找到的答案内容,必须基于已收集的信息,不要编造", + "required": True, + }, + ], + execute_func=found_answer, + ) + diff --git a/src/memory_system/retrieval_tools/query_chat_history.py b/src/memory_system/retrieval_tools/query_chat_history.py index 478ccb97..097632c4 100644 --- a/src/memory_system/retrieval_tools/query_chat_history.py +++ b/src/memory_system/retrieval_tools/query_chat_history.py @@ -275,10 +275,6 @@ async def get_chat_history_detail(chat_id: str, memory_ids: str) -> str: except (json.JSONDecodeError, TypeError, ValueError): pass - # 添加原文内容 - if record.original_text: - result_parts.append(f"原文内容:\n{record.original_text}") - results.append("\n".join(result_parts)) if not results: @@ -318,7 +314,7 @@ def register_tool(): # 注册工具2:获取记忆详情 register_memory_retrieval_tool( name="get_chat_history_detail", - description="根据记忆ID,展示某条或某几条记忆的具体内容。包括主题、时间、参与人、关键词、概括、关键信息点和原文内容等详细信息。需要先使用search_chat_history工具获取记忆ID。", + description="根据记忆ID,展示某条或某几条记忆的具体内容。包括主题、时间、参与人、关键词、概括和关键信息点等详细信息。需要先使用search_chat_history工具获取记忆ID。", parameters=[ { "name": "memory_ids", From 138bd8ec70866b17e075e8318fa470089686d488 Mon Sep 17 00:00:00 2001 From: SengokuCola <1026294844@qq.com> Date: Tue, 2 Dec 2025 15:43:46 +0800 Subject: [PATCH 47/61] =?UTF-8?q?feat=EF=BC=9A=E4=BC=98=E5=8C=96=E9=BB=91?= =?UTF-8?q?=E8=AF=9D=E9=99=84=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/jargon/jargon_explainer.py | 109 ++++++++ src/memory_system/memory_retrieval.py | 365 ++++++++------------------ src/memory_system/memory_utils.py | 150 +++-------- 3 files changed, 262 insertions(+), 362 deletions(-) diff --git a/src/jargon/jargon_explainer.py b/src/jargon/jargon_explainer.py index 02595080..28122008 100644 --- a/src/jargon/jargon_explainer.py +++ b/src/jargon/jargon_explainer.py @@ -249,3 +249,112 @@ async def explain_jargon_in_context(chat_id: str, messages: List[Any], chat_cont """ explainer = JargonExplainer(chat_id) return await explainer.explain_jargon(messages, chat_context) + + +def match_jargon_from_text(chat_text: str, chat_id: str) -> List[str]: + """直接在聊天文本中匹配已知的jargon,返回出现过的黑话列表 + + Args: + chat_text: 要匹配的聊天文本 + chat_id: 聊天ID + + Returns: + List[str]: 匹配到的黑话列表 + """ + if not chat_text or not chat_text.strip(): + return [] + + query = Jargon.select().where((Jargon.meaning.is_null(False)) & (Jargon.meaning != "")) + if global_config.jargon.all_global: + query = query.where(Jargon.is_global) + + query = query.order_by(Jargon.count.desc()) + + matched: Dict[str, None] = {} + + for jargon in query: + content = (jargon.content or "").strip() + if not content: + continue + + if not global_config.jargon.all_global and not jargon.is_global: + chat_id_list = parse_chat_id_list(jargon.chat_id) + if not chat_id_list_contains(chat_id_list, chat_id): + continue + + pattern = re.escape(content) + if re.search(r"[\u4e00-\u9fff]", content): + search_pattern = pattern + else: + search_pattern = r"\b" + pattern + r"\b" + + if re.search(search_pattern, chat_text, re.IGNORECASE): + matched[content] = None + + logger.info(f"匹配到 {len(matched)} 个黑话") + + return list(matched.keys()) + + +async def retrieve_concepts_with_jargon(concepts: List[str], chat_id: str) -> str: + """对概念列表进行jargon检索 + + Args: + concepts: 概念列表 + chat_id: 聊天ID + + Returns: + str: 检索结果字符串 + """ + if not concepts: + return "" + + results = [] + exact_matches = [] # 收集所有精确匹配的概念 + for concept in concepts: + concept = concept.strip() + if not concept: + continue + + # 先尝试精确匹配 + jargon_results = search_jargon(keyword=concept, chat_id=chat_id, limit=10, case_sensitive=False, fuzzy=False) + + is_fuzzy_match = False + + # 如果精确匹配未找到,尝试模糊搜索 + if not jargon_results: + jargon_results = search_jargon(keyword=concept, chat_id=chat_id, limit=10, case_sensitive=False, fuzzy=True) + is_fuzzy_match = True + + if jargon_results: + # 找到结果 + if is_fuzzy_match: + # 模糊匹配 + output_parts = [f"未精确匹配到'{concept}'"] + for result in jargon_results: + found_content = result.get("content", "").strip() + meaning = result.get("meaning", "").strip() + if found_content and meaning: + output_parts.append(f"找到 '{found_content}' 的含义为:{meaning}") + results.append(",".join(output_parts)) + logger.info(f"在jargon库中找到匹配(模糊搜索): {concept},找到{len(jargon_results)}条结果") + else: + # 精确匹配 + output_parts = [] + for result in jargon_results: + meaning = result.get("meaning", "").strip() + if meaning: + output_parts.append(f"'{concept}' 为黑话或者网络简写,含义为:{meaning}") + results.append(";".join(output_parts) if len(output_parts) > 1 else output_parts[0]) + exact_matches.append(concept) # 收集精确匹配的概念,稍后统一打印 + else: + # 未找到,不返回占位信息,只记录日志 + logger.info(f"在jargon库中未找到匹配: {concept}") + + # 合并所有精确匹配的日志 + if exact_matches: + logger.info(f"找到黑话: {', '.join(exact_matches)},共找到{len(exact_matches)}条结果") + + if results: + return "【概念检索结果】\n" + "\n".join(results) + "\n" + return "" \ No newline at end of file diff --git a/src/memory_system/memory_retrieval.py b/src/memory_system/memory_retrieval.py index 476f316e..2471c8fa 100644 --- a/src/memory_system/memory_retrieval.py +++ b/src/memory_system/memory_retrieval.py @@ -1,17 +1,16 @@ import time import json -import re import asyncio from typing import List, Dict, Any, Optional, Tuple, Set from src.common.logger import get_logger from src.config.config import global_config, model_config from src.chat.utils.prompt_builder import Prompt, global_prompt_manager from src.plugin_system.apis import llm_api -from src.common.database.database_model import ThinkingBack, Jargon -from json_repair import repair_json +from src.common.database.database_model import ThinkingBack from src.memory_system.retrieval_tools import get_tool_registry, init_all_tools +from src.memory_system.memory_utils import parse_questions_json from src.llm_models.payload_content.message import MessageBuilder, RoleType, Message -from src.jargon.jargon_utils import parse_chat_id_list, chat_id_list_contains +from src.jargon.jargon_explainer import match_jargon_from_text, retrieve_concepts_with_jargon logger = get_logger("memory_retrieval") @@ -101,11 +100,6 @@ def init_memory_retrieval_prompt(): Prompt( """你的名字是{bot_name}。现在是{time_now}。 你正在参与聊天,你需要搜集信息来回答问题,帮助你参与聊天。 - -**重要限制:** -- 思考要简短,直接切入要点 -- 最大查询轮数:{max_iterations}轮(当前第{current_iteration}轮,剩余{remaining_iterations}轮) - 当前需要解答的问题:{question} 已收集的信息: {collected_info} @@ -118,7 +112,7 @@ def init_memory_retrieval_prompt(): - **如果当前已收集的信息足够回答问题,且能找到明确答案,调用found_answer工具标记已找到答案** **思考** -- 你可以对查询思路给出简短的思考 +- 你可以对查询思路给出简短的思考:思考要简短,直接切入要点 - 如果信息不足,你必须给出使用什么工具进行查询 - 如果信息足够,你必须调用found_answer工具 """, @@ -152,169 +146,6 @@ def init_memory_retrieval_prompt(): ) -def _parse_react_response(response: str) -> Optional[Dict[str, Any]]: - """解析ReAct Agent的响应 - - Args: - response: LLM返回的响应 - - Returns: - Dict[str, Any]: 解析后的动作信息,如果解析失败返回None - 格式: {"thought": str, "actions": List[Dict[str, Any]]} - 每个action格式: {"action_type": str, "action_params": dict} - """ - try: - # 尝试提取JSON(可能包含在```json代码块中) - json_pattern = r"```json\s*(.*?)\s*```" - matches = re.findall(json_pattern, response, re.DOTALL) - - if matches: - json_str = matches[0] - else: - # 尝试直接解析整个响应 - json_str = response.strip() - - # 修复可能的JSON错误 - repaired_json = repair_json(json_str) - - # 解析JSON - action_info = json.loads(repaired_json) - - if not isinstance(action_info, dict): - logger.warning(f"解析的JSON不是对象格式: {action_info}") - return None - - # 确保actions字段存在且为列表 - if "actions" not in action_info: - logger.warning(f"响应中缺少actions字段: {action_info}") - return None - - if not isinstance(action_info["actions"], list): - logger.warning(f"actions字段不是数组格式: {action_info['actions']}") - return None - - # 确保actions不为空 - if len(action_info["actions"]) == 0: - logger.warning("actions数组为空") - return None - - return action_info - - except Exception as e: - logger.error(f"解析ReAct响应失败: {e}, 响应内容: {response[:200]}...") - return None - - -async def _retrieve_concepts_with_jargon(concepts: List[str], chat_id: str) -> str: - """对概念列表进行jargon检索 - - Args: - concepts: 概念列表 - chat_id: 聊天ID - - Returns: - str: 检索结果字符串 - """ - if not concepts: - return "" - - from src.jargon.jargon_miner import search_jargon - - results = [] - exact_matches = [] # 收集所有精确匹配的概念 - for concept in concepts: - concept = concept.strip() - if not concept: - continue - - # 先尝试精确匹配 - jargon_results = search_jargon(keyword=concept, chat_id=chat_id, limit=10, case_sensitive=False, fuzzy=False) - - is_fuzzy_match = False - - # 如果精确匹配未找到,尝试模糊搜索 - if not jargon_results: - jargon_results = search_jargon(keyword=concept, chat_id=chat_id, limit=10, case_sensitive=False, fuzzy=True) - is_fuzzy_match = True - - if jargon_results: - # 找到结果 - if is_fuzzy_match: - # 模糊匹配 - output_parts = [f"未精确匹配到'{concept}'"] - for result in jargon_results: - found_content = result.get("content", "").strip() - meaning = result.get("meaning", "").strip() - if found_content and meaning: - output_parts.append(f"找到 '{found_content}' 的含义为:{meaning}") - results.append(",".join(output_parts)) - logger.info(f"在jargon库中找到匹配(模糊搜索): {concept},找到{len(jargon_results)}条结果") - else: - # 精确匹配 - output_parts = [] - for result in jargon_results: - meaning = result.get("meaning", "").strip() - if meaning: - output_parts.append(f"'{concept}' 为黑话或者网络简写,含义为:{meaning}") - results.append(";".join(output_parts) if len(output_parts) > 1 else output_parts[0]) - exact_matches.append(concept) # 收集精确匹配的概念,稍后统一打印 - else: - # 未找到,不返回占位信息,只记录日志 - logger.info(f"在jargon库中未找到匹配: {concept}") - - # 合并所有精确匹配的日志 - if exact_matches: - logger.info(f"找到黑话: {', '.join(exact_matches)},共找到{len(exact_matches)}条结果") - - if results: - return "【概念检索结果】\n" + "\n".join(results) + "\n" - return "" - - -def _match_jargon_from_text(chat_text: str, chat_id: str) -> List[str]: - """直接在聊天文本中匹配已知的jargon,返回出现过的黑话列表""" - # print(chat_text) - if not chat_text or not chat_text.strip(): - return [] - - start_time = time.time() - - query = Jargon.select().where((Jargon.meaning.is_null(False)) & (Jargon.meaning != "")) - if global_config.jargon.all_global: - query = query.where(Jargon.is_global) - - query = query.order_by(Jargon.count.desc()) - - query_time = time.time() - matched: Dict[str, None] = {} - - for jargon in query: - content = (jargon.content or "").strip() - if not content: - continue - - if not global_config.jargon.all_global and not jargon.is_global: - chat_id_list = parse_chat_id_list(jargon.chat_id) - if not chat_id_list_contains(chat_id_list, chat_id): - continue - - pattern = re.escape(content) - if re.search(r"[\u4e00-\u9fff]", content): - search_pattern = pattern - else: - search_pattern = r"\b" + pattern + r"\b" - - if re.search(search_pattern, chat_text, re.IGNORECASE): - matched[content] = None - - # end_time = time.time() - logger.info( - # f"记忆检索黑话匹配: 查询耗时 {(query_time - start_time):.3f}s, " - # f"匹配耗时 {(end_time - query_time):.3f}s, 总耗时 {(end_time - start_time):.3f}s, " - f"匹配到 {len(matched)} 个黑话" - ) - - return list(matched.keys()) def _log_conversation_messages( @@ -336,7 +167,7 @@ def _log_conversation_messages( # 如果有head_prompt,先添加为第一条消息 if head_prompt: - msg_info = "========================================\n[消息 1] 角色: System 内容类型: 文本\n-----------------------" + msg_info = "========================================\n[消息 1] 角色: System 内容类型: 文本\n-----------------------------" msg_info += f"\n{head_prompt}" log_lines.append(msg_info) start_idx = 2 @@ -363,7 +194,7 @@ def _log_conversation_messages( content_type = "未知" # 构建单条消息的日志信息 - msg_info = f"\n[消息 {idx}] 角色: {role_name} 内容类型: {content_type}\n========================================" + msg_info = f"\n========================================\n[消息 {idx}] 角色: {role_name} 内容类型: {content_type}\n-----------------------------" if full_content: msg_info += f"\n{full_content}" @@ -513,7 +344,7 @@ async def _react_agent_solve_question( ) if global_config.debug.show_memory_prompt: - logger.info(f"ReAct Agent 第 {iteration + 1} 次迭代 最终评估Prompt: {evaluation_prompt}") + logger.info(f"ReAct Agent 最终评估Prompt: {evaluation_prompt}") eval_success, eval_response, eval_reasoning_content, eval_model_name, eval_tool_calls = await llm_api.generate_with_model_with_tools( evaluation_prompt, @@ -656,7 +487,7 @@ async def _react_agent_solve_question( request_type="memory.react", ) - logger.info( + logger.debug( f"ReAct Agent 第 {iteration + 1} 次迭代 模型: {model_name} ,调用工具数量: {len(tool_calls) if tool_calls else 0} ,调用工具响应: {response}" ) @@ -706,25 +537,19 @@ async def _react_agent_solve_question( continue # 处理工具调用 - tool_tasks = [] - found_answer_from_tool = None # 检测是否有found_answer工具调用 - - for i, tool_call in enumerate(tool_calls): + # 首先检查是否有found_answer工具调用,如果有则立即返回,不再处理其他工具 + found_answer_from_tool = None + for tool_call in tool_calls: tool_name = tool_call.func_name tool_args = tool_call.args or {} - - logger.info( - f"ReAct Agent 第 {iteration + 1} 次迭代 工具调用 {i + 1}/{len(tool_calls)}: {tool_name}({tool_args})" - ) - - # 检查是否是found_answer工具调用 + if tool_name == "found_answer": found_answer_from_tool = tool_args.get("answer", "") if found_answer_from_tool: step["actions"].append({"action_type": "found_answer", "action_params": {"answer": found_answer_from_tool}}) step["observations"] = ["检测到found_answer工具调用"] thinking_steps.append(step) - logger.info(f"ReAct Agent 第 {iteration + 1} 次迭代 通过found_answer工具找到关于问题{question}的答案: {found_answer_from_tool}") + logger.debug(f"ReAct Agent 第 {iteration + 1} 次迭代 通过found_answer工具找到关于问题{question}的答案: {found_answer_from_tool}") _log_conversation_messages( conversation_messages, @@ -733,7 +558,20 @@ async def _react_agent_solve_question( ) return True, found_answer_from_tool, thinking_steps, False - continue # found_answer工具不需要执行,直接跳过 + + # 如果没有found_answer工具调用,或者found_answer工具调用没有答案,继续处理其他工具 + tool_tasks = [] + for i, tool_call in enumerate(tool_calls): + tool_name = tool_call.func_name + tool_args = tool_call.args or {} + + logger.debug( + f"ReAct Agent 第 {iteration + 1} 次迭代 工具调用 {i + 1}/{len(tool_calls)}: {tool_name}({tool_args})" + ) + + # 跳过found_answer工具调用(已经在上面处理过了) + if tool_name == "found_answer": + continue # 普通工具调用 tool = tool_registry.get_tool(tool_name) @@ -781,7 +619,7 @@ async def _react_agent_solve_question( if stripped_observation: # 检查工具输出中是否有新的jargon,如果有则追加到工具结果中 if enable_jargon_detection: - jargon_concepts = _match_jargon_from_text(stripped_observation, chat_id) + jargon_concepts = match_jargon_from_text(stripped_observation, chat_id) if jargon_concepts: new_concepts = [] for concept in jargon_concepts: @@ -790,7 +628,7 @@ async def _react_agent_solve_question( new_concepts.append(normalized_concept) seen_jargon_concepts.add(normalized_concept) if new_concepts: - jargon_info = await _retrieve_concepts_with_jargon(new_concepts, chat_id) + jargon_info = await retrieve_concepts_with_jargon(new_concepts, chat_id) if jargon_info: # 将jargon查询结果追加到工具结果中 observation_text += f"\n\n{jargon_info}" @@ -828,8 +666,8 @@ async def _react_agent_solve_question( return False, "", thinking_steps, is_timeout -def _get_recent_query_history(chat_id: str, time_window_seconds: float = 300.0) -> str: - """获取最近一段时间内的查询历史 +def _get_recent_query_history(chat_id: str, time_window_seconds: float = 600.0) -> str: + """获取最近一段时间内的查询历史(用于避免重复查询) Args: chat_id: 聊天ID @@ -879,6 +717,49 @@ def _get_recent_query_history(chat_id: str, time_window_seconds: float = 300.0) return "" +def _get_recent_found_answers(chat_id: str, time_window_seconds: float = 600.0) -> List[str]: + """获取最近一段时间内已找到答案的查询记录(用于返回给 replyer) + + Args: + chat_id: 聊天ID + time_window_seconds: 时间窗口(秒),默认10分钟 + + Returns: + List[str]: 格式化的答案列表,每个元素格式为 "问题:xxx\n答案:xxx" + """ + try: + current_time = time.time() + start_time = current_time - time_window_seconds + + # 查询最近时间窗口内已找到答案的记录,按更新时间倒序 + records = ( + ThinkingBack.select() + .where( + (ThinkingBack.chat_id == chat_id) + & (ThinkingBack.update_time >= start_time) + & (ThinkingBack.found_answer == 1) + & (ThinkingBack.answer.is_null(False)) + & (ThinkingBack.answer != "") + ) + .order_by(ThinkingBack.update_time.desc()) + .limit(3) # 最多返回5条最近的记录 + ) + + if not records.exists(): + return [] + + found_answers = [] + for record in records: + if record.answer: + found_answers.append(f"问题:{record.question}\n答案:{record.answer}") + + return found_answers + + except Exception as e: + logger.error(f"获取最近已找到答案的记录失败: {e}") + return [] + + def _store_thinking_back( chat_id: str, question: str, context: str, found_answer: bool, answer: str, thinking_steps: List[Dict[str, Any]] ) -> None: @@ -1016,8 +897,8 @@ async def build_memory_retrieval_prompt( bot_name = global_config.bot.nickname chat_id = chat_stream.stream_id - # 获取最近查询历史(最近1小时内的查询) - recent_query_history = _get_recent_query_history(chat_id, time_window_seconds=300.0) + # 获取最近查询历史(最近10分钟内的查询,用于避免重复查询) + recent_query_history = _get_recent_query_history(chat_id, time_window_seconds=600.0) if not recent_query_history: recent_query_history = "最近没有查询记录。" @@ -1047,7 +928,7 @@ async def build_memory_retrieval_prompt( return "" # 解析概念列表和问题列表 - _, questions = _parse_questions_json(response) + _, questions = parse_questions_json(response) if questions: logger.info(f"解析到 {len(questions)} 个问题: {questions}") @@ -1056,7 +937,7 @@ async def build_memory_retrieval_prompt( if enable_jargon_detection: # 使用匹配逻辑自动识别聊天中的黑话概念 - concepts = _match_jargon_from_text(message, chat_id) + concepts = match_jargon_from_text(message, chat_id) if concepts: logger.info(f"黑话匹配命中 {len(concepts)} 个概念: {concepts}") else: @@ -1067,7 +948,7 @@ async def build_memory_retrieval_prompt( # 对匹配到的概念进行jargon检索,作为初始信息 initial_info = "" if enable_jargon_detection and concepts: - concept_info = await _retrieve_concepts_with_jargon(concepts, chat_id) + concept_info = await retrieve_concepts_with_jargon(concepts, chat_id) if concept_info: initial_info += concept_info logger.debug(f"概念检索完成,结果: {concept_info}") @@ -1107,67 +988,47 @@ async def build_memory_retrieval_prompt( elif result is not None: question_results.append(result) + # 获取最近10分钟内已找到答案的缓存记录 + cached_answers = _get_recent_found_answers(chat_id, time_window_seconds=600.0) + + # 合并当前查询结果和缓存答案(去重:如果当前查询的问题在缓存中已存在,优先使用当前结果) + all_results = [] + + # 先添加当前查询的结果 + current_questions = set() + for result in question_results: + # 提取问题(格式为 "问题:xxx\n答案:xxx") + if result.startswith("问题:"): + question_end = result.find("\n答案:") + if question_end != -1: + current_questions.add(result[4:question_end]) + all_results.append(result) + + # 添加缓存答案(排除当前查询中已存在的问题) + for cached_answer in cached_answers: + if cached_answer.startswith("问题:"): + question_end = cached_answer.find("\n答案:") + if question_end != -1: + cached_question = cached_answer[4:question_end] + if cached_question not in current_questions: + all_results.append(cached_answer) + end_time = time.time() - if question_results: - retrieved_memory = "\n\n".join(question_results) - logger.info(f"记忆检索成功,耗时: {(end_time - start_time):.3f}秒,包含 {len(question_results)} 条记忆") + if all_results: + retrieved_memory = "\n\n".join(all_results) + current_count = len(question_results) + cached_count = len(all_results) - current_count + logger.info( + f"记忆检索成功,耗时: {(end_time - start_time):.3f}秒," + f"当前查询 {current_count} 条记忆,缓存 {cached_count} 条记忆,共 {len(all_results)} 条记忆" + ) return f"你回忆起了以下信息:\n{retrieved_memory}\n如果与回复内容相关,可以参考这些回忆的信息。\n" else: - logger.debug("所有问题均未找到答案") + logger.debug("所有问题均未找到答案,且无缓存答案") return "" except Exception as e: logger.error(f"记忆检索时发生异常: {str(e)}") return "" - -def _parse_questions_json(response: str) -> Tuple[List[str], List[str]]: - """解析问题JSON,返回概念列表和问题列表 - - Args: - response: LLM返回的响应 - - Returns: - Tuple[List[str], List[str]]: (概念列表, 问题列表) - """ - try: - # 尝试提取JSON(可能包含在```json代码块中) - json_pattern = r"```json\s*(.*?)\s*```" - matches = re.findall(json_pattern, response, re.DOTALL) - - if matches: - json_str = matches[0] - else: - # 尝试直接解析整个响应 - json_str = response.strip() - - # 修复可能的JSON错误 - repaired_json = repair_json(json_str) - - # 解析JSON - parsed = json.loads(repaired_json) - - # 只支持新格式:包含concepts和questions的对象 - if not isinstance(parsed, dict): - logger.warning(f"解析的JSON不是对象格式: {parsed}") - return [], [] - - concepts_raw = parsed.get("concepts", []) - questions_raw = parsed.get("questions", []) - - # 确保是列表 - if not isinstance(concepts_raw, list): - concepts_raw = [] - if not isinstance(questions_raw, list): - questions_raw = [] - - # 确保所有元素都是字符串 - concepts = [c for c in concepts_raw if isinstance(c, str) and c.strip()] - questions = [q for q in questions_raw if isinstance(q, str) and q.strip()] - - return concepts, questions - - except Exception as e: - logger.error(f"解析问题JSON失败: {e}, 响应内容: {response[:200]}...") - return [], [] diff --git a/src/memory_system/memory_utils.py b/src/memory_system/memory_utils.py index bff39f95..7aa33a52 100644 --- a/src/memory_system/memory_utils.py +++ b/src/memory_system/memory_utils.py @@ -8,7 +8,8 @@ import json import re from datetime import datetime from typing import Tuple -from difflib import SequenceMatcher +from typing import List +from json_repair import repair_json from src.common.logger import get_logger @@ -16,101 +17,56 @@ from src.common.logger import get_logger logger = get_logger("memory_utils") -def parse_md_json(json_text: str) -> list[str]: - """从Markdown格式的内容中提取JSON对象和推理内容""" - json_objects = [] - reasoning_content = "" - # 使用正则表达式查找```json包裹的JSON内容 - json_pattern = r"```json\s*(.*?)\s*```" - matches = re.findall(json_pattern, json_text, re.DOTALL) - - # 提取JSON之前的内容作为推理文本 - if matches: - # 找到第一个```json的位置 - first_json_pos = json_text.find("```json") - if first_json_pos > 0: - reasoning_content = json_text[:first_json_pos].strip() - # 清理推理内容中的注释标记 - reasoning_content = re.sub(r"^//\s*", "", reasoning_content, flags=re.MULTILINE) - reasoning_content = reasoning_content.strip() - - for match in matches: - try: - # 清理可能的注释和格式问题 - json_str = re.sub(r"//.*?\n", "\n", match) # 移除单行注释 - json_str = re.sub(r"/\*.*?\*/", "", json_str, flags=re.DOTALL) # 移除多行注释 - if json_str := json_str.strip(): - json_obj = json.loads(json_str) - if isinstance(json_obj, dict): - json_objects.append(json_obj) - elif isinstance(json_obj, list): - for item in json_obj: - if isinstance(item, dict): - json_objects.append(item) - except Exception as e: - logger.warning(f"解析JSON块失败: {e}, 块内容: {match[:100]}...") - continue - - return json_objects, reasoning_content - - -def calculate_similarity(text1: str, text2: str) -> float: - """ - 计算两个文本的相似度 +def parse_questions_json(response: str) -> Tuple[List[str], List[str]]: + """解析问题JSON,返回概念列表和问题列表 Args: - text1: 第一个文本 - text2: 第二个文本 + response: LLM返回的响应 Returns: - float: 相似度分数 (0-1) + Tuple[List[str], List[str]]: (概念列表, 问题列表) """ try: - # 预处理文本 - text1 = preprocess_text(text1) - text2 = preprocess_text(text2) + # 尝试提取JSON(可能包含在```json代码块中) + json_pattern = r"```json\s*(.*?)\s*```" + matches = re.findall(json_pattern, response, re.DOTALL) - # 使用SequenceMatcher计算相似度 - similarity = SequenceMatcher(None, text1, text2).ratio() + if matches: + json_str = matches[0] + else: + # 尝试直接解析整个响应 + json_str = response.strip() - # 如果其中一个文本包含另一个,提高相似度 - if text1 in text2 or text2 in text1: - similarity = max(similarity, 0.8) + # 修复可能的JSON错误 + repaired_json = repair_json(json_str) - return similarity + # 解析JSON + parsed = json.loads(repaired_json) + + # 只支持新格式:包含concepts和questions的对象 + if not isinstance(parsed, dict): + logger.warning(f"解析的JSON不是对象格式: {parsed}") + return [], [] + + concepts_raw = parsed.get("concepts", []) + questions_raw = parsed.get("questions", []) + + # 确保是列表 + if not isinstance(concepts_raw, list): + concepts_raw = [] + if not isinstance(questions_raw, list): + questions_raw = [] + + # 确保所有元素都是字符串 + concepts = [c for c in concepts_raw if isinstance(c, str) and c.strip()] + questions = [q for q in questions_raw if isinstance(q, str) and q.strip()] + + return concepts, questions except Exception as e: - logger.error(f"计算相似度时出错: {e}") - return 0.0 - - -def preprocess_text(text: str) -> str: - """ - 预处理文本,提高匹配准确性 - - Args: - text: 原始文本 - - Returns: - str: 预处理后的文本 - """ - try: - # 转换为小写 - text = text.lower() - - # 移除标点符号和特殊字符 - text = re.sub(r"[^\w\s]", "", text) - - # 移除多余空格 - text = re.sub(r"\s+", " ", text).strip() - - return text - - except Exception as e: - logger.error(f"预处理文本时出错: {e}") - return text - + logger.error(f"解析问题JSON失败: {e}, 响应内容: {response[:200]}...") + return [], [] def parse_datetime_to_timestamp(value: str) -> float: """ @@ -140,29 +96,3 @@ def parse_datetime_to_timestamp(value: str) -> float: except Exception as e: last_err = e raise ValueError(f"无法解析时间: {value} ({last_err})") - - -def parse_time_range(time_range: str) -> Tuple[float, float]: - """ - 解析时间范围字符串,返回开始和结束时间戳 - - Args: - time_range: 时间范围字符串,格式:"YYYY-MM-DD HH:MM:SS - YYYY-MM-DD HH:MM:SS" - - Returns: - Tuple[float, float]: (开始时间戳, 结束时间戳) - """ - if " - " not in time_range: - raise ValueError(f"时间范围格式错误,应为 '开始时间 - 结束时间': {time_range}") - - parts = time_range.split(" - ", 1) - if len(parts) != 2: - raise ValueError(f"时间范围格式错误: {time_range}") - - start_str = parts[0].strip() - end_str = parts[1].strip() - - start_timestamp = parse_datetime_to_timestamp(start_str) - end_timestamp = parse_datetime_to_timestamp(end_str) - - return start_timestamp, end_timestamp From ca160f6591df3091b0cf8101f4e7560496074ab9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Tue, 2 Dec 2025 15:48:52 +0800 Subject: [PATCH 48/61] WebUI 0.11.6 --- webui/dist/assets/{index-DuFwC87p.js => index-DJb_iiTR.js} | 2 +- webui/dist/index.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename webui/dist/assets/{index-DuFwC87p.js => index-DJb_iiTR.js} (92%) diff --git a/webui/dist/assets/index-DuFwC87p.js b/webui/dist/assets/index-DJb_iiTR.js similarity index 92% rename from webui/dist/assets/index-DuFwC87p.js rename to webui/dist/assets/index-DJb_iiTR.js index ee71a6a6..886bc66f 100644 --- a/webui/dist/assets/index-DuFwC87p.js +++ b/webui/dist/assets/index-DJb_iiTR.js @@ -12,7 +12,7 @@ ${c.map(([x,f])=>{const j=f.theme?.[d]||f.color;return j?` --color-${x}: ${j};` `)} } `).join(` -`)}}):null},ir=UN,ti=u.forwardRef(({active:n,payload:i,className:c,indicator:d="dot",hideLabel:h=!1,hideIndicator:x=!1,label:f,labelFormatter:j,labelClassName:p,formatter:w,color:v,nameKey:y,labelKey:S},C)=>{const{config:M}=vg(),F=u.useMemo(()=>{if(h||!i?.length)return null;const[O]=i,K=`${S||O?.dataKey||O?.name||"value"}`,H=Lu(M,O,K),A=!S&&typeof f=="string"?M[f]?.label||f:H?.label;return j?e.jsx("div",{className:$("font-medium",p),children:j(A,i)}):A?e.jsx("div",{className:$("font-medium",p),children:A}):null},[f,j,i,h,p,M,S]);if(!n||!i?.length)return null;const U=i.length===1&&d!=="dot";return e.jsxs("div",{ref:C,className:$("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",c),children:[U?null:F,e.jsx("div",{className:"grid gap-1.5",children:i.filter(O=>O.type!=="none").map((O,K)=>{const H=`${y||O.name||O.dataKey||"value"}`,A=Lu(M,O,H),V=v||O.payload.fill||O.color;return e.jsx("div",{className:$("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",d==="dot"&&"items-center"),children:w&&O?.value!==void 0&&O.name?w(O.value,O.name,O,K,O.payload):e.jsxs(e.Fragment,{children:[A?.icon?e.jsx(A.icon,{}):!x&&e.jsx("div",{className:$("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]",{"h-2.5 w-2.5":d==="dot","w-1":d==="line","w-0 border-[1.5px] border-dashed bg-transparent":d==="dashed","my-0.5":U&&d==="dashed"}),style:{"--color-bg":V,"--color-border":V}}),e.jsxs("div",{className:$("flex flex-1 justify-between leading-none",U?"items-end":"items-center"),children:[e.jsxs("div",{className:"grid gap-1.5",children:[U?F:null,e.jsx("span",{className:"text-muted-foreground",children:A?.label||O.name})]}),O.value&&e.jsx("span",{className:"font-mono font-medium tabular-nums text-foreground",children:O.value.toLocaleString()})]})]})},O.dataKey)})})]})});ti.displayName="ChartTooltip";const ky=BN,Ng=u.forwardRef(({className:n,hideIcon:i=!1,payload:c,verticalAlign:d="bottom",nameKey:h},x)=>{const{config:f}=vg();return c?.length?e.jsx("div",{ref:x,className:$("flex items-center justify-center gap-4",d==="top"?"pb-3":"pt-3",n),children:c.filter(j=>j.type!=="none").map(j=>{const p=`${h||j.dataKey||"value"}`,w=Lu(f,j,p);return e.jsxs("div",{className:$("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"),children:[w?.icon&&!i?e.jsx(w.icon,{}):e.jsx("div",{className:"h-2 w-2 shrink-0 rounded-[2px]",style:{backgroundColor:j.color}}),w?.label]},j.value)})}):null});Ng.displayName="ChartLegend";function Lu(n,i,c){if(typeof i!="object"||i===null)return;const d="payload"in i&&typeof i.payload=="object"&&i.payload!==null?i.payload:void 0;let h=c;return c in i&&typeof i[c]=="string"?h=i[c]:d&&c in d&&typeof d[c]=="string"&&(h=d[c]),h in n?n[h]:n[c]}const gr=ci("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),N=u.forwardRef(({className:n,variant:i,size:c,asChild:d=!1,...h},x)=>{const f=d?$N:"button";return e.jsx(f,{className:$(gr({variant:i,size:c,className:n})),ref:x,...h})});N.displayName="Button";const Ty=ci("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function Ye({className:n,variant:i,...c}){return e.jsx("div",{className:$(Ty({variant:i}),n),...c})}const Ey=5,zy=5e3;let ku=0;function Ay(){return ku=(ku+1)%Number.MAX_SAFE_INTEGER,ku.toString()}const Tu=new Map,ep=n=>{if(Tu.has(n))return;const i=setTimeout(()=>{Tu.delete(n),hr({type:"REMOVE_TOAST",toastId:n})},zy);Tu.set(n,i)},My=(n,i)=>{switch(i.type){case"ADD_TOAST":return{...n,toasts:[i.toast,...n.toasts].slice(0,Ey)};case"UPDATE_TOAST":return{...n,toasts:n.toasts.map(c=>c.id===i.toast.id?{...c,...i.toast}:c)};case"DISMISS_TOAST":{const{toastId:c}=i;return c?ep(c):n.toasts.forEach(d=>{ep(d.id)}),{...n,toasts:n.toasts.map(d=>d.id===c||c===void 0?{...d,open:!1}:d)}}case"REMOVE_TOAST":return i.toastId===void 0?{...n,toasts:[]}:{...n,toasts:n.toasts.filter(c=>c.id!==i.toastId)}}},Kc=[];let Jc={toasts:[]};function hr(n){Jc=My(Jc,n),Kc.forEach(i=>{i(Jc)})}function Dy({...n}){const i=Ay(),c=h=>hr({type:"UPDATE_TOAST",toast:{...h,id:i}}),d=()=>hr({type:"DISMISS_TOAST",toastId:i});return hr({type:"ADD_TOAST",toast:{...n,id:i,open:!0,onOpenChange:h=>{h||d()}}}),{id:i,dismiss:d,update:c}}function Gs(){const[n,i]=u.useState(Jc);return u.useEffect(()=>(Kc.push(i),()=>{const c=Kc.indexOf(i);c>-1&&Kc.splice(c,1)}),[n]),{...n,toast:Dy,dismiss:c=>hr({type:"DISMISS_TOAST",toastId:c})}}const Oy=n=>{const i=[];for(let c=0;c{try{C(!0);const k=await Bc.get("https://v1.hitokoto.cn/?c=a&c=b&c=c&c=d&c=h&c=i&c=k");y({hitokoto:k.data.hitokoto,from:k.data.from||k.data.from_who||"未知"})}catch(k){console.error("获取一言失败:",k),y({hitokoto:"人生就像一盒巧克力,你永远不知道下一颗是什么味道。",from:"阿甘正传"})}finally{C(!1)}},[]),A=u.useCallback(async()=>{try{const k=localStorage.getItem("access-token"),se=await Bc.get("/api/webui/system/status",{headers:{Authorization:`Bearer ${k}`}});F(se.data)}catch(k){console.error("获取机器人状态失败:",k),F(null)}},[]),V=async()=>{if(!U)try{O(!0);const k=localStorage.getItem("access-token");await Bc.post("/api/webui/system/restart",{},{headers:{Authorization:`Bearer ${k}`}}),K({title:"重启中",description:"麦麦正在重启,请稍候..."}),setTimeout(()=>{A(),O(!1)},3e3)}catch(k){console.error("重启失败:",k),K({title:"重启失败",description:"无法重启麦麦,请检查控制台",variant:"destructive"}),O(!1)}},Q=u.useCallback(async()=>{try{const k=localStorage.getItem("access-token"),se=await Bc.get(`/api/webui/statistics/dashboard?hours=${f}`,{headers:{Authorization:`Bearer ${k}`}});i(se.data),d(!1),x(100)}catch(k){console.error("Failed to fetch dashboard data:",k),d(!1),x(100)}},[f]);if(u.useEffect(()=>{if(!c)return;x(0);const k=setTimeout(()=>x(15),200),se=setTimeout(()=>x(30),800),_=setTimeout(()=>x(45),2e3),ue=setTimeout(()=>x(60),4e3),ie=setTimeout(()=>x(75),6500),ae=setTimeout(()=>x(85),9e3),fe=setTimeout(()=>x(92),11e3);return()=>{clearTimeout(k),clearTimeout(se),clearTimeout(_),clearTimeout(ue),clearTimeout(ie),clearTimeout(ae),clearTimeout(fe)}},[c]),u.useEffect(()=>{Q(),H(),A()},[Q,H,A]),u.useEffect(()=>{if(!p)return;const k=setInterval(()=>{Q(),A()},3e4);return()=>clearInterval(k)},[p,Q,A]),c||!n)return e.jsx("div",{className:"flex items-center justify-center h-[calc(100vh-200px)]",children:e.jsxs("div",{className:"text-center space-y-6 w-full max-w-md px-4",children:[e.jsx(Ct,{className:"h-12 w-12 animate-spin mx-auto text-primary"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-lg font-medium",children:"加载统计数据中..."}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"正在获取麦麦运行数据"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(wr,{value:h,className:"h-2"}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:[h,"%"]})]})]})});const{summary:T,model_stats:D=[],hourly_data:ne=[],daily_data:xe=[],recent_activity:_e=[]}=n,Se=T??{total_requests:0,total_cost:0,total_tokens:0,online_time:0,total_messages:0,total_replies:0,avg_response_time:0,cost_per_hour:0,tokens_per_hour:0},ge=k=>{const se=Math.floor(k/3600),_=Math.floor(k%3600/60);return`${se}小时${_}分钟`},ye=k=>new Date(k).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),be=Oy(D.length),z=D.map((k,se)=>({name:k.model_name,value:k.request_count,fill:be[se]})),X={requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"},tokens:{label:"Tokens",color:"hsl(var(--chart-3))"}};return e.jsx(ss,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"实时监控面板"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"麦麦运行状态和统计数据一览"})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(La,{value:f.toString(),onValueChange:k=>j(Number(k)),children:e.jsxs(wa,{className:"grid grid-cols-3 w-full sm:w-auto",children:[e.jsx(fs,{value:"24",children:"24小时"}),e.jsx(fs,{value:"168",children:"7天"}),e.jsx(fs,{value:"720",children:"30天"})]})}),e.jsxs(N,{variant:p?"default":"outline",size:"sm",onClick:()=>w(!p),className:"gap-2",children:[e.jsx(Ct,{className:`h-4 w-4 ${p?"animate-spin":""}`}),e.jsx("span",{className:"hidden sm:inline",children:"自动刷新"})]}),e.jsx(N,{variant:"outline",size:"sm",onClick:Q,children:e.jsx(Ct,{className:"h-4 w-4"})})]})]}),e.jsxs("div",{className:"flex items-center gap-3 px-4 py-2 rounded-lg border border-dashed border-muted-foreground/30 bg-muted/20",children:[S?e.jsx(gg,{className:"h-5 flex-1"}):v?e.jsxs("p",{className:"flex-1 text-sm text-muted-foreground italic truncate",children:['"',v.hitokoto,'" —— ',v.from]}):null,e.jsx(N,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0",onClick:H,disabled:S,children:e.jsx(Ct,{className:`h-3.5 w-3.5 ${S?"animate-spin":""}`})})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-3",children:[e.jsxs(Ze,{className:"lg:col-span-1",children:[e.jsx(ys,{className:"pb-3",children:e.jsxs(ws,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(br,{className:"h-4 w-4"}),"麦麦状态"]})}),e.jsx(Ts,{children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"flex items-center gap-2",children:M?.running?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-3 w-3 rounded-full bg-green-500 animate-pulse"}),e.jsxs(Ye,{variant:"outline",className:"text-green-600 border-green-300 bg-green-50",children:[e.jsx(fa,{className:"h-3 w-3 mr-1"}),"运行中"]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-3 w-3 rounded-full bg-red-500"}),e.jsxs(Ye,{variant:"outline",className:"text-red-600 border-red-300 bg-red-50",children:[e.jsx(Oa,{className:"h-3 w-3 mr-1"}),"已停止"]})]})}),M&&e.jsxs("div",{className:"text-xs text-muted-foreground",children:[e.jsxs("span",{children:["v",M.version]}),e.jsx("span",{className:"mx-2",children:"|"}),e.jsxs("span",{children:["运行 ",ge(M.uptime)]})]})]})})]}),e.jsxs(Ze,{className:"lg:col-span-2",children:[e.jsx(ys,{className:"pb-3",children:e.jsxs(ws,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(cn,{className:"h-4 w-4"}),"快速操作"]})}),e.jsx(Ts,{children:e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(N,{variant:"outline",size:"sm",onClick:V,disabled:U,className:"gap-2",children:[e.jsx(Zc,{className:`h-4 w-4 ${U?"animate-spin":""}`}),U?"重启中...":"重启麦麦"]}),e.jsx(N,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Yc,{to:"/logs",children:[e.jsx(Da,{className:"h-4 w-4"}),"查看日志"]})}),e.jsx(N,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Yc,{to:"/plugins",children:[e.jsx(cb,{className:"h-4 w-4"}),"插件管理"]})}),e.jsx(N,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Yc,{to:"/settings",children:[e.jsx(oi,{className:"h-4 w-4"}),"系统设置"]})})]})})]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-4",children:[e.jsxs(Ze,{children:[e.jsxs(ys,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(ws,{className:"text-sm font-medium",children:"总请求数"}),e.jsx(ob,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(Ts,{children:[e.jsx("div",{className:"text-2xl font-bold",children:Se.total_requests.toLocaleString()}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["最近",f<48?f+"小时":Math.floor(f/24)+"天"]})]})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(ws,{className:"text-sm font-medium",children:"总花费"}),e.jsx(db,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(Ts,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:["¥",Se.total_cost.toFixed(2)]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:Se.cost_per_hour>0?`¥${Se.cost_per_hour.toFixed(2)}/小时`:"暂无数据"})]})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(ws,{className:"text-sm font-medium",children:"Token消耗"}),e.jsx(Ic,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(Ts,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:[(Se.total_tokens/1e3).toFixed(1),"K"]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:Se.tokens_per_hour>0?`${(Se.tokens_per_hour/1e3).toFixed(1)}K/小时`:"暂无数据"})]})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(ws,{className:"text-sm font-medium",children:"平均响应"}),e.jsx(cn,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(Ts,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:[Se.avg_response_time.toFixed(2),"s"]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"API平均耗时"})]})]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 sm:grid-cols-3",children:[e.jsxs(Ze,{children:[e.jsxs(ys,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(ws,{className:"text-sm font-medium",children:"在线时长"}),e.jsx(li,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsx(Ts,{children:e.jsx("div",{className:"text-xl font-bold",children:ge(Se.online_time)})})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(ws,{className:"text-sm font-medium",children:"消息处理"}),e.jsx(un,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(Ts,{children:[e.jsx("div",{className:"text-xl font-bold",children:Se.total_messages.toLocaleString()}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["回复 ",Se.total_replies.toLocaleString()," 条"]})]})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(ws,{className:"text-sm font-medium",children:"成本效率"}),e.jsx(ub,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(Ts,{children:[e.jsx("div",{className:"text-xl font-bold",children:Se.total_messages>0?`¥${(Se.total_cost/Se.total_messages*100).toFixed(2)}`:"¥0.00"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"每100条消息"})]})]})]}),e.jsxs(La,{defaultValue:"trends",className:"space-y-4",children:[e.jsxs(wa,{className:"grid w-full grid-cols-2 sm:grid-cols-4",children:[e.jsx(fs,{value:"trends",children:"趋势"}),e.jsx(fs,{value:"models",children:"模型"}),e.jsx(fs,{value:"activity",children:"活动"}),e.jsx(fs,{value:"daily",children:"日统计"})]}),e.jsxs(Ms,{value:"trends",className:"space-y-4",children:[e.jsxs(Ze,{children:[e.jsxs(ys,{children:[e.jsx(ws,{children:"请求趋势"}),e.jsxs(ct,{children:["最近",f,"小时的请求量变化"]})]}),e.jsx(Ts,{children:e.jsx(si,{config:X,className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:e.jsxs(HN,{data:ne,children:[e.jsx(Hc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(qc,{dataKey:"timestamp",tickFormatter:k=>ye(k),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(ir,{content:e.jsx(ti,{labelFormatter:k=>ye(k)})}),e.jsx(qN,{type:"monotone",dataKey:"requests",stroke:"var(--color-requests)",strokeWidth:2})]})})})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[e.jsxs(Ze,{children:[e.jsxs(ys,{children:[e.jsx(ws,{children:"花费趋势"}),e.jsx(ct,{children:"API调用成本变化"})]}),e.jsx(Ts,{children:e.jsx(si,{config:X,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:e.jsxs(bu,{data:ne,children:[e.jsx(Hc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(qc,{dataKey:"timestamp",tickFormatter:k=>ye(k),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(ir,{content:e.jsx(ti,{labelFormatter:k=>ye(k)})}),e.jsx(Gc,{dataKey:"cost",fill:"var(--color-cost)"})]})})})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{children:[e.jsx(ws,{children:"Token消耗"}),e.jsx(ct,{children:"Token使用量变化"})]}),e.jsx(Ts,{children:e.jsx(si,{config:X,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:e.jsxs(bu,{data:ne,children:[e.jsx(Hc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(qc,{dataKey:"timestamp",tickFormatter:k=>ye(k),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(ir,{content:e.jsx(ti,{labelFormatter:k=>ye(k)})}),e.jsx(Gc,{dataKey:"tokens",fill:"var(--color-tokens)"})]})})})]})]})]}),e.jsx(Ms,{value:"models",className:"space-y-4",children:e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[e.jsxs(Ze,{children:[e.jsxs(ys,{children:[e.jsx(ws,{children:"模型请求分布"}),e.jsxs(ct,{children:["各模型使用占比 (共 ",D.length," 个模型)"]})]}),e.jsx(Ts,{children:e.jsx(si,{config:Object.fromEntries(D.map((k,se)=>[k.model_name,{label:k.model_name,color:be[se]}])),className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:e.jsxs(GN,{children:[e.jsx(ir,{content:e.jsx(ti,{})}),e.jsx(VN,{data:z,cx:"50%",cy:"50%",labelLine:!1,label:({name:k,percent:se})=>se&&se<.05?"":`${k} ${se?(se*100).toFixed(0):0}%`,outerRadius:100,dataKey:"value",children:z.map((k,se)=>e.jsx(FN,{fill:k.fill},`cell-${se}`))})]})})})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{children:[e.jsx(ws,{children:"模型详细统计"}),e.jsx(ct,{children:"请求数、花费和性能"})]}),e.jsx(Ts,{children:e.jsx(ss,{className:"h-[300px] sm:h-[400px]",children:e.jsx("div",{className:"space-y-3",children:D.map((k,se)=>e.jsxs("div",{className:"p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("h4",{className:"font-semibold text-sm truncate flex-1 min-w-0",children:k.model_name}),e.jsx("div",{className:"w-3 h-3 rounded-full ml-2 flex-shrink-0",style:{backgroundColor:`hsl(var(--chart-${se%5+1}))`}})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"请求数:"}),e.jsx("span",{className:"ml-1 font-medium",children:k.request_count.toLocaleString()})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"花费:"}),e.jsxs("span",{className:"ml-1 font-medium",children:["¥",k.total_cost.toFixed(2)]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),e.jsxs("span",{className:"ml-1 font-medium",children:[(k.total_tokens/1e3).toFixed(1),"K"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"平均耗时:"}),e.jsxs("span",{className:"ml-1 font-medium",children:[k.avg_response_time.toFixed(2),"s"]})]})]})]},se))})})})]})]})}),e.jsx(Ms,{value:"activity",children:e.jsxs(Ze,{children:[e.jsxs(ys,{children:[e.jsx(ws,{children:"最近活动"}),e.jsx(ct,{children:"最新的API调用记录"})]}),e.jsx(Ts,{children:e.jsx(ss,{className:"h-[400px] sm:h-[500px]",children:e.jsx("div",{className:"space-y-2",children:_e.map((k,se)=>e.jsxs("div",{className:"p-3 sm:p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-2 mb-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-sm truncate",children:k.model}),e.jsx("div",{className:"text-xs text-muted-foreground",children:k.request_type})]}),e.jsx("div",{className:"text-xs text-muted-foreground flex-shrink-0",children:ye(k.timestamp)})]}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-2 text-xs",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),e.jsx("span",{className:"ml-1",children:k.tokens})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"花费:"}),e.jsxs("span",{className:"ml-1",children:["¥",k.cost.toFixed(4)]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"耗时:"}),e.jsxs("span",{className:"ml-1",children:[k.time_cost.toFixed(2),"s"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"状态:"}),e.jsx("span",{className:`ml-1 ${k.status==="success"?"text-green-600":"text-red-600"}`,children:k.status})]})]})]},se))})})})]})}),e.jsx(Ms,{value:"daily",children:e.jsxs(Ze,{children:[e.jsxs(ys,{children:[e.jsx(ws,{children:"每日统计"}),e.jsx(ct,{children:"最近7天的数据汇总"})]}),e.jsx(Ts,{children:e.jsx(si,{config:{requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"}},className:"h-[400px] sm:h-[500px] w-full aspect-auto",children:e.jsxs(bu,{data:xe,children:[e.jsx(Hc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(qc,{dataKey:"timestamp",tickFormatter:k=>{const se=new Date(k);return`${se.getMonth()+1}/${se.getDate()}`},stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{yAxisId:"left",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{yAxisId:"right",orientation:"right",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(ir,{content:e.jsx(ti,{labelFormatter:k=>new Date(k).toLocaleDateString("zh-CN")})}),e.jsx(ky,{content:e.jsx(Ng,{})}),e.jsx(Gc,{yAxisId:"left",dataKey:"requests",fill:"var(--color-requests)"}),e.jsx(Gc,{yAxisId:"right",dataKey:"cost",fill:"var(--color-cost)"})]})})})]})})]})]})})}const Ly={theme:"system",setTheme:()=>null},bg=u.createContext(Ly),$u=()=>{const n=u.useContext(bg);if(n===void 0)throw new Error("useTheme must be used within a ThemeProvider");return n},Uy=(n,i,c)=>{const d=document.documentElement.classList.contains("no-animations");if(!document.startViewTransition||d){i(n);return}const h=c.clientX,x=c.clientY,f=Math.hypot(Math.max(h,innerWidth-h),Math.max(x,innerHeight-x));document.startViewTransition(()=>{i(n)}).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${h}px ${x}px)`,`circle(${f}px at ${h}px ${x}px)`]},{duration:500,easing:"ease-in-out",pseudoElement:"::view-transition-new(root)"})})},yg=u.createContext(void 0),wg=()=>{const n=u.useContext(yg);if(n===void 0)throw new Error("useAnimation must be used within an AnimationProvider");return n},Xe=u.forwardRef(({className:n,...i},c)=>e.jsx(Cp,{className:$("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",n),...i,ref:c,children:e.jsx(wN,{className:$("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));Xe.displayName=Cp.displayName;const By=ci("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),b=u.forwardRef(({className:n,...i},c)=>e.jsx(Hp,{ref:c,className:$(By(),n),...i}));b.displayName=Hp.displayName;const oe=u.forwardRef(({className:n,type:i,...c},d)=>e.jsx("input",{type:i,className:$("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",n),ref:d,...c}));oe.displayName="Input";const Hy=[{id:"minLength",label:"长度至少 10 位",description:"Token 长度必须大于等于 10 个字符",validate:n=>n.length>=10},{id:"hasUppercase",label:"包含大写字母",description:"至少包含一个大写字母 (A-Z)",validate:n=>/[A-Z]/.test(n)},{id:"hasLowercase",label:"包含小写字母",description:"至少包含一个小写字母 (a-z)",validate:n=>/[a-z]/.test(n)},{id:"hasSpecialChar",label:"包含特殊符号",description:"至少包含一个特殊符号 (!@#$%^&*()_+-=[]{}|;:,.<>?/)",validate:n=>/[!@#$%^&*()_+\-=[\]{}|;:,.<>?/]/.test(n)}];function qy(n){const i=Hy.map(d=>({id:d.id,label:d.label,description:d.description,passed:d.validate(n)}));return{isValid:i.every(d=>d.passed),rules:i}}const Qu="0.11.6 Beta",Yu="MaiBot Dashboard",Gy=`${Yu} v${Qu}`,Vy=(n="v")=>`${n}${Qu}`,Ft={THEME:"maibot-ui-theme",ACCENT_COLOR:"accent-color",ENABLE_ANIMATIONS:"maibot-animations",ENABLE_WAVES_BACKGROUND:"maibot-waves-background",LOG_CACHE_SIZE:"maibot-log-cache-size",LOG_AUTO_SCROLL:"maibot-log-auto-scroll",LOG_FONT_SIZE:"maibot-log-font-size",LOG_LINE_SPACING:"maibot-log-line-spacing",DATA_SYNC_INTERVAL:"maibot-data-sync-interval",WS_RECONNECT_INTERVAL:"maibot-ws-reconnect-interval",WS_MAX_RECONNECT_ATTEMPTS:"maibot-ws-max-reconnect-attempts",COMPLETED_TOURS:"maibot-completed-tours"},Aa={theme:"system",accentColor:"blue",enableAnimations:!0,enableWavesBackground:!0,logCacheSize:1e3,logAutoScroll:!0,logFontSize:"xs",logLineSpacing:4,dataSyncInterval:30,wsReconnectInterval:3e3,wsMaxReconnectAttempts:10};function st(n){const i=_g(n),c=localStorage.getItem(i);if(c===null)return Aa[n];const d=Aa[n];if(typeof d=="boolean")return c==="true";if(typeof d=="number"){const h=parseFloat(c);return isNaN(h)?d:h}return c}function ai(n,i){const c=_g(n);localStorage.setItem(c,String(i)),window.dispatchEvent(new CustomEvent("maibot-settings-change",{detail:{key:n,value:i}}))}function Fy(){return{theme:st("theme"),accentColor:st("accentColor"),enableAnimations:st("enableAnimations"),enableWavesBackground:st("enableWavesBackground"),logCacheSize:st("logCacheSize"),logAutoScroll:st("logAutoScroll"),logFontSize:st("logFontSize"),logLineSpacing:st("logLineSpacing"),dataSyncInterval:st("dataSyncInterval"),wsReconnectInterval:st("wsReconnectInterval"),wsMaxReconnectAttempts:st("wsMaxReconnectAttempts")}}function $y(){const n=Fy(),i=localStorage.getItem(Ft.COMPLETED_TOURS),c=i?JSON.parse(i):[];return{...n,completedTours:c}}function Qy(n){const i=[],c=[];for(const[d,h]of Object.entries(n)){if(d==="completedTours"){Array.isArray(h)?(localStorage.setItem(Ft.COMPLETED_TOURS,JSON.stringify(h)),i.push("completedTours")):c.push("completedTours");continue}if(d in Aa){const x=d,f=Aa[x];if(typeof h==typeof f){if(x==="theme"&&!["light","dark","system"].includes(h)){c.push(d);continue}if(x==="logFontSize"&&!["xs","sm","base"].includes(h)){c.push(d);continue}ai(x,h),i.push(d)}else c.push(d)}else c.push(d)}return{success:i.length>0,imported:i,skipped:c}}function Yy(){for(const n of Object.keys(Aa))ai(n,Aa[n]);localStorage.removeItem(Ft.COMPLETED_TOURS),window.dispatchEvent(new CustomEvent("maibot-settings-reset"))}function Xy(){const n=[],i=[],c=[];for(let d=0;dd.size-c.size),{used:n,items:localStorage.length,details:i}}function Ky(n){if(n===0)return"0 B";const i=1024,c=["B","KB","MB"],d=Math.floor(Math.log(n)/Math.log(i));return parseFloat((n/Math.pow(i,d)).toFixed(2))+" "+c[d]}function _g(n){return{theme:Ft.THEME,accentColor:Ft.ACCENT_COLOR,enableAnimations:Ft.ENABLE_ANIMATIONS,enableWavesBackground:Ft.ENABLE_WAVES_BACKGROUND,logCacheSize:Ft.LOG_CACHE_SIZE,logAutoScroll:Ft.LOG_AUTO_SCROLL,logFontSize:Ft.LOG_FONT_SIZE,logLineSpacing:Ft.LOG_LINE_SPACING,dataSyncInterval:Ft.DATA_SYNC_INTERVAL,wsReconnectInterval:Ft.WS_RECONNECT_INTERVAL,wsMaxReconnectAttempts:Ft.WS_MAX_RECONNECT_ATTEMPTS}[n]}const Ma=u.forwardRef(({className:n,...i},c)=>e.jsxs(kp,{ref:c,className:$("relative flex w-full touch-none select-none items-center",n),...i,children:[e.jsx(_N,{className:"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20",children:e.jsx(SN,{className:"absolute h-full bg-primary"})}),e.jsx(CN,{className:"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"})]}));Ma.displayName=kp.displayName;class Jy{ws=null;reconnectTimeout=null;reconnectAttempts=0;heartbeatInterval=null;logCallbacks=new Set;connectionCallbacks=new Set;isConnected=!1;logCache=[];getMaxCacheSize(){return st("logCacheSize")}getMaxReconnectAttempts(){return st("wsMaxReconnectAttempts")}getReconnectInterval(){return st("wsReconnectInterval")}getWebSocketUrl(){{const i=window.location.protocol==="https:"?"wss:":"ws:",c=window.location.host;return`${i}//${c}/ws/logs`}}connect(){if(this.ws?.readyState===WebSocket.OPEN||this.ws?.readyState===WebSocket.CONNECTING)return;const i=this.getWebSocketUrl();try{this.ws=new WebSocket(i),this.ws.onopen=()=>{this.isConnected=!0,this.reconnectAttempts=0,this.notifyConnection(!0),this.startHeartbeat()},this.ws.onmessage=c=>{try{if(c.data==="pong")return;const d=JSON.parse(c.data);this.notifyLog(d)}catch(d){console.error("解析日志消息失败:",d)}},this.ws.onerror=c=>{console.error("❌ WebSocket 错误:",c),this.isConnected=!1,this.notifyConnection(!1)},this.ws.onclose=()=>{this.isConnected=!1,this.notifyConnection(!1),this.stopHeartbeat(),this.attemptReconnect()}}catch(c){console.error("创建 WebSocket 连接失败:",c),this.attemptReconnect()}}attemptReconnect(){const i=this.getMaxReconnectAttempts();if(this.reconnectAttempts>=i)return;this.reconnectAttempts+=1;const c=this.getReconnectInterval(),d=Math.min(c*this.reconnectAttempts,3e4);this.reconnectTimeout=window.setTimeout(()=>{this.connect()},d)}startHeartbeat(){this.heartbeatInterval=window.setInterval(()=>{this.ws?.readyState===WebSocket.OPEN&&this.ws.send("ping")},3e4)}stopHeartbeat(){this.heartbeatInterval!==null&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}disconnect(){this.reconnectTimeout!==null&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.stopHeartbeat(),this.ws&&(this.ws.close(),this.ws=null),this.isConnected=!1,this.reconnectAttempts=0}onLog(i){return this.logCallbacks.add(i),()=>this.logCallbacks.delete(i)}onConnectionChange(i){return this.connectionCallbacks.add(i),i(this.isConnected),()=>this.connectionCallbacks.delete(i)}notifyLog(i){if(!this.logCache.some(d=>d.id===i.id)){this.logCache.push(i);const d=this.getMaxCacheSize();this.logCache.length>d&&(this.logCache=this.logCache.slice(-d)),this.logCallbacks.forEach(h=>{try{h(i)}catch(x){console.error("日志回调执行失败:",x)}})}}notifyConnection(i){this.connectionCallbacks.forEach(c=>{try{c(i)}catch(d){console.error("连接状态回调执行失败:",d)}})}getAllLogs(){return[...this.logCache]}clearLogs(){this.logCache=[]}getConnectionStatus(){return this.isConnected}}const rn=new Jy;typeof window<"u"&&rn.connect();const $s=XN,Xu=KN,Zy=QN,Sg=u.forwardRef(({className:n,...i},c)=>e.jsx(qp,{ref:c,className:$("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...i}));Sg.displayName=qp.displayName;const Bs=u.forwardRef(({className:n,children:i,preventOutsideClose:c=!1,...d},h)=>e.jsxs(Zy,{children:[e.jsx(Sg,{}),e.jsxs(Gp,{ref:h,className:$("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",n),onPointerDownOutside:c?x=>x.preventDefault():void 0,onInteractOutside:c?x=>x.preventDefault():void 0,...d,children:[i,e.jsxs(YN,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[e.jsx(dl,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Bs.displayName=Gp.displayName;const Hs=({className:n,...i})=>e.jsx("div",{className:$("flex flex-col space-y-1.5 text-center sm:text-left",n),...i});Hs.displayName="DialogHeader";const at=({className:n,...i})=>e.jsx("div",{className:$("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",n),...i});at.displayName="DialogFooter";const qs=u.forwardRef(({className:n,...i},c)=>e.jsx(Vp,{ref:c,className:$("text-lg font-semibold leading-none tracking-tight",n),...i}));qs.displayName=Vp.displayName;const Is=u.forwardRef(({className:n,...i},c)=>e.jsx(Fp,{ref:c,className:$("text-sm text-muted-foreground",n),...i}));Is.displayName=Fp.displayName;const ps=TN,tt=EN,Iy=kN,Cg=u.forwardRef(({className:n,...i},c)=>e.jsx(Tp,{className:$("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...i,ref:c}));Cg.displayName=Tp.displayName;const is=u.forwardRef(({className:n,...i},c)=>e.jsxs(Iy,{children:[e.jsx(Cg,{}),e.jsx(Ep,{ref:c,className:$("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",n),...i})]}));is.displayName=Ep.displayName;const rs=({className:n,...i})=>e.jsx("div",{className:$("flex flex-col space-y-2 text-center sm:text-left",n),...i});rs.displayName="AlertDialogHeader";const cs=({className:n,...i})=>e.jsx("div",{className:$("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",n),...i});cs.displayName="AlertDialogFooter";const os=u.forwardRef(({className:n,...i},c)=>e.jsx(zp,{ref:c,className:$("text-lg font-semibold",n),...i}));os.displayName=zp.displayName;const ds=u.forwardRef(({className:n,...i},c)=>e.jsx(Ap,{ref:c,className:$("text-sm text-muted-foreground",n),...i}));ds.displayName=Ap.displayName;const us=u.forwardRef(({className:n,...i},c)=>e.jsx(Mp,{ref:c,className:$(gr(),n),...i}));us.displayName=Mp.displayName;const ms=u.forwardRef(({className:n,...i},c)=>e.jsx(Dp,{ref:c,className:$(gr({variant:"outline"}),"mt-2 sm:mt-0",n),...i}));ms.displayName=Dp.displayName;function Py(){return e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"系统设置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理您的应用偏好设置"})]})}),e.jsxs(La,{defaultValue:"appearance",className:"w-full",children:[e.jsxs(wa,{className:"grid w-full grid-cols-2 sm:grid-cols-4 gap-0.5 sm:gap-1 h-auto p-1",children:[e.jsxs(fs,{value:"appearance",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(mb,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"外观"})]}),e.jsxs(fs,{value:"security",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(hb,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"安全"})]}),e.jsxs(fs,{value:"other",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(oi,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"其他"})]}),e.jsxs(fs,{value:"about",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(Ra,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"关于"})]})]}),e.jsxs(ss,{className:"h-[calc(100vh-240px)] sm:h-[calc(100vh-280px)] mt-4 sm:mt-6",children:[e.jsx(Ms,{value:"appearance",className:"mt-0",children:e.jsx(Wy,{})}),e.jsx(Ms,{value:"security",className:"mt-0",children:e.jsx(e0,{})}),e.jsx(Ms,{value:"other",className:"mt-0",children:e.jsx(s0,{})}),e.jsx(Ms,{value:"about",className:"mt-0",children:e.jsx(t0,{})})]})]})]})}function tp(n){const i=document.documentElement,d={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[n];if(d)i.style.setProperty("--primary",d.hsl),d.gradient?(i.style.setProperty("--primary-gradient",d.gradient),i.classList.add("has-gradient")):(i.style.removeProperty("--primary-gradient"),i.classList.remove("has-gradient"));else if(n.startsWith("#")){const h=x=>{x=x.replace("#","");const f=parseInt(x.substring(0,2),16)/255,j=parseInt(x.substring(2,4),16)/255,p=parseInt(x.substring(4,6),16)/255,w=Math.max(f,j,p),v=Math.min(f,j,p);let y=0,S=0;const C=(w+v)/2;if(w!==v){const M=w-v;switch(S=C>.5?M/(2-w-v):M/(w+v),w){case f:y=((j-p)/M+(jlocalStorage.getItem("accent-color")||"blue");u.useEffect(()=>{const w=localStorage.getItem("accent-color")||"blue";tp(w)},[]);const p=w=>{j(w),localStorage.setItem("accent-color",w),tp(w)};return e.jsxs("div",{className:"space-y-6 sm:space-y-8",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题模式"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 sm:gap-4",children:[e.jsx(Eu,{value:"light",current:n,onChange:i,label:"浅色",description:"始终使用浅色主题"}),e.jsx(Eu,{value:"dark",current:n,onChange:i,label:"深色",description:"始终使用深色主题"}),e.jsx(Eu,{value:"system",current:n,onChange:i,label:"跟随系统",description:"根据系统设置自动切换"})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题色"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"单色"}),e.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[e.jsx(xa,{value:"blue",current:f,onChange:p,label:"蓝色",colorClass:"bg-blue-500"}),e.jsx(xa,{value:"purple",current:f,onChange:p,label:"紫色",colorClass:"bg-purple-500"}),e.jsx(xa,{value:"green",current:f,onChange:p,label:"绿色",colorClass:"bg-green-500"}),e.jsx(xa,{value:"orange",current:f,onChange:p,label:"橙色",colorClass:"bg-orange-500"}),e.jsx(xa,{value:"pink",current:f,onChange:p,label:"粉色",colorClass:"bg-pink-500"}),e.jsx(xa,{value:"red",current:f,onChange:p,label:"红色",colorClass:"bg-red-500"})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"渐变色"}),e.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[e.jsx(xa,{value:"gradient-sunset",current:f,onChange:p,label:"日落",colorClass:"bg-gradient-to-r from-orange-500 to-pink-500"}),e.jsx(xa,{value:"gradient-ocean",current:f,onChange:p,label:"海洋",colorClass:"bg-gradient-to-r from-blue-500 to-cyan-500"}),e.jsx(xa,{value:"gradient-forest",current:f,onChange:p,label:"森林",colorClass:"bg-gradient-to-r from-green-500 to-emerald-500"}),e.jsx(xa,{value:"gradient-aurora",current:f,onChange:p,label:"极光",colorClass:"bg-gradient-to-r from-purple-500 to-pink-500"}),e.jsx(xa,{value:"gradient-fire",current:f,onChange:p,label:"烈焰",colorClass:"bg-gradient-to-r from-red-500 to-orange-500"}),e.jsx(xa,{value:"gradient-twilight",current:f,onChange:p,label:"暮光",colorClass:"bg-gradient-to-r from-indigo-500 to-purple-500"})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"自定义颜色"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 sm:gap-4",children:[e.jsx("div",{className:"flex-1",children:e.jsx("input",{type:"color",value:f.startsWith("#")?f:"#3b82f6",onChange:w=>p(w.target.value),className:"h-10 sm:h-12 w-full rounded-lg border-2 border-border cursor-pointer",title:"选择自定义颜色"})}),e.jsx("div",{className:"flex-1",children:e.jsx(oe,{type:"text",value:f,onChange:w=>p(w.target.value),placeholder:"#3b82f6",className:"font-mono text-sm"})})]}),e.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground mt-2",children:"点击色块选择颜色,或手动输入 HEX 颜色代码"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"动画效果"}),e.jsxs("div",{className:"space-y-2 sm:space-y-3",children:[e.jsx("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5 flex-1",children:[e.jsx(b,{htmlFor:"animations",className:"text-base font-medium cursor-pointer",children:"启用动画效果"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后将禁用所有过渡动画和特效,提升性能"})]}),e.jsx(Xe,{id:"animations",checked:c,onCheckedChange:d})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5 flex-1",children:[e.jsx(b,{htmlFor:"waves-background",className:"text-base font-medium cursor-pointer",children:"登录页波浪背景"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后登录页将使用纯色背景,适合低性能设备"})]}),e.jsx(Xe,{id:"waves-background",checked:h,onCheckedChange:x})]})})]})]})]})}function e0(){const n=ga(),[i,c]=u.useState(""),[d,h]=u.useState(""),[x,f]=u.useState(!1),[j,p]=u.useState(!1),[w,v]=u.useState(!1),[y,S]=u.useState(!1),[C,M]=u.useState(!1),[F,U]=u.useState(!1),[O,K]=u.useState(""),[H,A]=u.useState(!1),{toast:V}=Gs(),Q=u.useMemo(()=>qy(d),[d]),T=async ge=>{if(!i){V({title:"无法复制",description:"Token 存储在安全 Cookie 中,请重新生成以获取新 Token",variant:"destructive"});return}try{await navigator.clipboard.writeText(ge),M(!0),V({title:"复制成功",description:"Token 已复制到剪贴板"}),setTimeout(()=>M(!1),2e3)}catch{V({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},D=async()=>{if(!d.trim()){V({title:"输入错误",description:"请输入新的 Token",variant:"destructive"});return}if(!Q.isValid){const ge=Q.rules.filter(ye=>!ye.passed).map(ye=>ye.label).join(", ");V({title:"格式错误",description:`Token 不符合要求: ${ge}`,variant:"destructive"});return}v(!0);try{const ge=await fetch("/api/webui/auth/update",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({new_token:d.trim()})}),ye=await ge.json();ge.ok&&ye.success?(h(""),c(d.trim()),V({title:"更新成功",description:"Access Token 已更新,即将跳转到登录页"}),setTimeout(()=>{n({to:"/auth"})},1500)):V({title:"更新失败",description:ye.message||"无法更新 Token",variant:"destructive"})}catch(ge){console.error("更新 Token 错误:",ge),V({title:"更新失败",description:"连接服务器失败",variant:"destructive"})}finally{v(!1)}},ne=async()=>{S(!0);try{const ge=await fetch("/api/webui/auth/regenerate",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include"}),ye=await ge.json();ge.ok&&ye.success?(c(ye.token),K(ye.token),U(!0),A(!1),V({title:"生成成功",description:"新的 Access Token 已生成,请及时保存"})):V({title:"生成失败",description:ye.message||"无法生成新 Token",variant:"destructive"})}catch(ge){console.error("生成 Token 错误:",ge),V({title:"生成失败",description:"连接服务器失败",variant:"destructive"})}finally{S(!1)}},xe=async()=>{try{await navigator.clipboard.writeText(O),A(!0),V({title:"复制成功",description:"Token 已复制到剪贴板"})}catch{V({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},_e=()=>{U(!1),setTimeout(()=>{K(""),A(!1)},300),setTimeout(()=>{n({to:"/auth"})},500)},Se=ge=>{ge||_e()};return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsx($s,{open:F,onOpenChange:Se,children:e.jsxs(Bs,{className:"sm:max-w-md",children:[e.jsxs(Hs,{children:[e.jsxs(qs,{className:"flex items-center gap-2",children:[e.jsx(ya,{className:"h-5 w-5 text-yellow-500"}),"新的 Access Token"]}),e.jsx(Is,{children:"这是您的新 Token,请立即保存。关闭此窗口后将跳转到登录页面。"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"rounded-lg border-2 border-primary/20 bg-primary/5 p-4",children:[e.jsx(b,{className:"text-xs text-muted-foreground mb-2 block",children:"您的新 Token (64位安全令牌)"}),e.jsx("div",{className:"font-mono text-sm break-all select-all bg-background p-3 rounded border",children:O})]}),e.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ya,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5"}),e.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[e.jsx("p",{className:"font-semibold",children:"重要提示"}),e.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[e.jsx("li",{children:"此 Token 仅显示一次,关闭后无法再查看"}),e.jsx("li",{children:"请立即复制并保存到安全的位置"}),e.jsx("li",{children:"关闭窗口后将自动跳转到登录页面"}),e.jsx("li",{children:"请使用新 Token 重新登录系统"})]})]})]})})]}),e.jsxs(at,{className:"gap-2 sm:gap-0",children:[e.jsx(N,{variant:"outline",onClick:xe,className:"gap-2",children:H?e.jsxs(e.Fragment,{children:[e.jsx(sa,{className:"h-4 w-4 text-green-500"}),"已复制"]}):e.jsxs(e.Fragment,{children:[e.jsx(Pc,{className:"h-4 w-4"}),"复制 Token"]})}),e.jsx(N,{onClick:_e,children:"我已保存,关闭"})]})]})}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"当前 Access Token"}),e.jsx("div",{className:"space-y-3 sm:space-y-4",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"current-token",className:"text-sm",children:"您的访问令牌"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(oe,{id:"current-token",type:x?"text":"password",value:i||"••••••••••••••••••••••••••••••••",readOnly:!0,className:"pr-10 font-mono text-sm",placeholder:"Token 存储在安全 Cookie 中"}),e.jsx("button",{onClick:()=>{i?f(!x):V({title:"无法查看",description:'Token 存储在安全 Cookie 中,如需新 Token 请点击"重新生成"'})},className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:x?"隐藏":"显示",children:x?e.jsx(xr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Dt,{className:"h-4 w-4 text-muted-foreground"})})]}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[e.jsx(N,{variant:"outline",size:"icon",onClick:()=>T(i),title:"复制到剪贴板",className:"flex-shrink-0",disabled:!i,children:C?e.jsx(sa,{className:"h-4 w-4 text-green-500"}):e.jsx(Pc,{className:"h-4 w-4"})}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsxs(N,{variant:"outline",disabled:y,className:"gap-2 flex-1 sm:flex-none",children:[e.jsx(Ct,{className:$("h-4 w-4",y&&"animate-spin")}),e.jsx("span",{className:"hidden sm:inline",children:"重新生成"}),e.jsx("span",{className:"sm:hidden",children:"生成"})]})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认重新生成 Token"}),e.jsx(ds,{children:"这将生成一个新的 64 位安全令牌,并使当前 Token 立即失效。 您需要使用新 Token 重新登录系统。此操作不可撤销,确定要继续吗?"})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:ne,children:"确认生成"})]})]})]})]})]}),e.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground",children:"请妥善保管您的 Access Token,不要泄露给他人"})]})})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"自定义 Access Token"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"new-token",className:"text-sm",children:"新的访问令牌"}),e.jsxs("div",{className:"relative",children:[e.jsx(oe,{id:"new-token",type:j?"text":"password",value:d,onChange:ge=>h(ge.target.value),className:"pr-10 font-mono text-sm",placeholder:"输入自定义 Token"}),e.jsx("button",{onClick:()=>p(!j),className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:j?"隐藏":"显示",children:j?e.jsx(xr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Dt,{className:"h-4 w-4 text-muted-foreground"})})]}),d&&e.jsxs("div",{className:"mt-3 space-y-2 p-3 rounded-lg bg-muted/50",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"Token 安全要求:"}),e.jsx("div",{className:"space-y-1.5",children:Q.rules.map(ge=>e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[ge.passed?e.jsx(fa,{className:"h-4 w-4 text-green-500 flex-shrink-0"}):e.jsx(ng,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),e.jsx("span",{className:$(ge.passed?"text-green-600 dark:text-green-400":"text-muted-foreground"),children:ge.label})]},ge.id))}),Q.isValid&&e.jsx("div",{className:"mt-2 pt-2 border-t border-border",children:e.jsxs("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[e.jsx(sa,{className:"h-4 w-4"}),e.jsx("span",{className:"font-medium",children:"Token 格式正确,可以使用"})]})})]})]}),e.jsx(N,{onClick:D,disabled:w||!Q.isValid||!d,className:"w-full sm:w-auto",children:w?"更新中...":"更新自定义 Token"})]})]}),e.jsxs("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3 sm:p-4",children:[e.jsx("h4",{className:"text-sm sm:text-base font-semibold text-yellow-900 dark:text-yellow-200 mb-2",children:"安全提示"}),e.jsxs("ul",{className:"text-xs sm:text-sm text-yellow-800 dark:text-yellow-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"重新生成 Token 会创建系统随机生成的 64 位安全令牌"}),e.jsx("li",{children:"自定义 Token 必须满足所有安全要求才能使用"}),e.jsx("li",{children:"更新 Token 后,旧的 Token 将立即失效"}),e.jsx("li",{children:"请在安全的环境下查看和复制 Token"}),e.jsx("li",{children:"如果怀疑 Token 泄露,请立即重新生成或更新"}),e.jsx("li",{children:"建议使用系统生成的 Token 以获得最高安全性"})]})]})]})}function s0(){const n=ga(),{toast:i}=Gs(),[c,d]=u.useState(!1),[h,x]=u.useState(!1),[f,j]=u.useState(()=>st("logCacheSize")),[p,w]=u.useState(()=>st("wsReconnectInterval")),[v,y]=u.useState(()=>st("wsMaxReconnectAttempts")),[S,C]=u.useState(()=>st("dataSyncInterval")),[M,F]=u.useState(()=>sp()),[U,O]=u.useState(!1),[K,H]=u.useState(!1),A=u.useRef(null);if(h)throw new Error("这是一个手动触发的测试错误,用于验证错误边界组件是否正常工作。");const V=()=>{F(sp())},Q=z=>{const X=z[0];j(X),ai("logCacheSize",X)},T=z=>{const X=z[0];w(X),ai("wsReconnectInterval",X)},D=z=>{const X=z[0];y(X),ai("wsMaxReconnectAttempts",X)},ne=z=>{const X=z[0];C(X),ai("dataSyncInterval",X)},xe=()=>{rn.clearLogs(),i({title:"日志已清除",description:"日志缓存已清空"})},_e=()=>{const z=Xy();V(),i({title:"缓存已清除",description:`已清除 ${z.clearedKeys.length} 项缓存数据`})},Se=()=>{O(!0);try{const z=$y(),X=JSON.stringify(z,null,2),k=new Blob([X],{type:"application/json"}),se=URL.createObjectURL(k),_=document.createElement("a");_.href=se,_.download=`maibot-webui-settings-${new Date().toISOString().slice(0,10)}.json`,document.body.appendChild(_),_.click(),document.body.removeChild(_),URL.revokeObjectURL(se),i({title:"导出成功",description:"设置已导出为 JSON 文件"})}catch(z){console.error("导出设置失败:",z),i({title:"导出失败",description:"无法导出设置",variant:"destructive"})}finally{O(!1)}},ge=z=>{const X=z.target.files?.[0];if(!X)return;H(!0);const k=new FileReader;k.onload=se=>{try{const _=se.target?.result,ue=JSON.parse(_),ie=Qy(ue);ie.success?(j(st("logCacheSize")),w(st("wsReconnectInterval")),y(st("wsMaxReconnectAttempts")),C(st("dataSyncInterval")),V(),i({title:"导入成功",description:`成功导入 ${ie.imported.length} 项设置${ie.skipped.length>0?`,跳过 ${ie.skipped.length} 项`:""}`}),(ie.imported.includes("theme")||ie.imported.includes("accentColor"))&&i({title:"提示",description:"部分设置需要刷新页面才能完全生效"})):i({title:"导入失败",description:"没有有效的设置项可导入",variant:"destructive"})}catch(_){console.error("导入设置失败:",_),i({title:"导入失败",description:"文件格式无效",variant:"destructive"})}finally{H(!1),A.current&&(A.current.value="")}},k.readAsText(X)},ye=()=>{Yy(),j(Aa.logCacheSize),w(Aa.wsReconnectInterval),y(Aa.wsMaxReconnectAttempts),C(Aa.dataSyncInterval),V(),i({title:"已重置",description:"所有设置已恢复为默认值,刷新页面以应用更改"})},be=async()=>{d(!0);try{const z=localStorage.getItem("access-token"),X=await fetch("/api/webui/setup/reset",{method:"POST",headers:{Authorization:`Bearer ${z}`}}),k=await X.json();X.ok&&k.success?(i({title:"重置成功",description:"即将进入初次配置向导"}),setTimeout(()=>{n({to:"/setup"})},1e3)):i({title:"重置失败",description:k.message||"无法重置配置状态",variant:"destructive"})}catch(z){console.error("重置配置状态错误:",z),i({title:"重置失败",description:"连接服务器失败",variant:"destructive"})}finally{d(!1)}};return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(Ic,{className:"h-5 w-5"}),"性能与存储"]}),e.jsxs("div",{className:"space-y-4 sm:space-y-5",children:[e.jsxs("div",{className:"rounded-lg bg-muted/50 p-3 sm:p-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("span",{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(xb,{className:"h-4 w-4"}),"本地存储使用"]}),e.jsx(N,{variant:"ghost",size:"sm",onClick:V,className:"h-7 px-2",children:e.jsx(Ct,{className:"h-3 w-3"})})]}),e.jsx("div",{className:"text-2xl font-bold text-primary",children:Ky(M.used)}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:[M.items," 个存储项"]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"日志缓存大小"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[f," 条"]})]}),e.jsx(Ma,{value:[f],onValueChange:Q,min:100,max:5e3,step:100,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"控制日志查看器最多缓存的日志条数,较大的值会占用更多内存"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"首页数据刷新间隔"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[S," 秒"]})]}),e.jsx(Ma,{value:[S],onValueChange:ne,min:10,max:120,step:5,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"控制首页统计数据的自动刷新间隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"WebSocket 重连间隔"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[p/1e3," 秒"]})]}),e.jsx(Ma,{value:[p],onValueChange:T,min:1e3,max:1e4,step:500,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"日志 WebSocket 连接断开后的重连基础间隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"WebSocket 最大重连次数"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[v," 次"]})]}),e.jsx(Ma,{value:[v],onValueChange:D,min:3,max:30,step:1,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"连接失败后的最大重连尝试次数"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2 pt-2",children:[e.jsxs(N,{variant:"outline",size:"sm",onClick:xe,className:"gap-2",children:[e.jsx(ls,{className:"h-4 w-4"}),"清除日志缓存"]}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",className:"gap-2",children:[e.jsx(ls,{className:"h-4 w-4"}),"清除本地缓存"]})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认清除本地缓存"}),e.jsx(ds,{children:"这将清除所有本地缓存的设置和数据(不包括登录凭证)。 您可能需要重新配置部分偏好设置。确定要继续吗?"})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:_e,children:"确认清除"})]})]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(rl,{className:"h-5 w-5"}),"导入/导出设置"]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"导出当前的界面设置以便备份,或从之前导出的文件中恢复设置。"}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(N,{variant:"outline",onClick:Se,disabled:U,className:"gap-2",children:[e.jsx(rl,{className:"h-4 w-4"}),U?"导出中...":"导出设置"]}),e.jsx("input",{ref:A,type:"file",accept:".json",onChange:ge,className:"hidden"}),e.jsxs(N,{variant:"outline",onClick:()=>A.current?.click(),disabled:K,className:"gap-2",children:[e.jsx(fr,{className:"h-4 w-4"}),K?"导入中...":"导入设置"]})]}),e.jsx("div",{className:"pt-2 border-t",children:e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",className:"gap-2 text-destructive hover:text-destructive",children:[e.jsx(Zc,{className:"h-4 w-4"}),"重置所有设置为默认值"]})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认重置所有设置"}),e.jsx(ds,{children:"这将把所有界面设置恢复为默认值,包括主题、颜色、动画等偏好设置。 此操作不会影响您的登录状态。确定要继续吗?"})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:ye,children:"确认重置"})]})]})]})})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"配置向导"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsx("div",{className:"space-y-2",children:e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"重新进行初次配置向导,可以帮助您重新设置系统的基础配置。"})}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsxs(N,{variant:"outline",disabled:c,className:"gap-2",children:[e.jsx(Zc,{className:$("h-4 w-4",c&&"animate-spin")}),"重新进行初次配置"]})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认重新配置"}),e.jsx(ds,{children:"这将带您重新进入初次配置向导。您可以重新设置系统的基础配置项。确定要继续吗?"})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:be,children:"确认重置"})]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border border-dashed border-yellow-500/50 bg-yellow-500/5 p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(ya,{className:"h-5 w-5 text-yellow-500"}),"开发者工具"]}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsx("div",{className:"space-y-2",children:e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"以下功能仅供开发调试使用,可能会导致页面崩溃或异常。"})}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsxs(N,{variant:"destructive",className:"gap-2",children:[e.jsx(ya,{className:"h-4 w-4"}),"触发测试错误"]})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认触发错误"}),e.jsx(ds,{children:"这将手动触发一个 React 错误,用于测试错误边界组件的显示效果。 页面将显示错误界面,您可以通过刷新页面或点击返回首页来恢复。"})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:()=>x(!0),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认触发"})]})]})]})]})]})]})}function t0(){return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsx("div",{className:"rounded-lg border-2 border-primary/30 bg-gradient-to-r from-primary/5 to-primary/10 p-4 sm:p-6",children:e.jsxs("div",{className:"flex items-start gap-3 sm:gap-4",children:[e.jsx("div",{className:"flex-shrink-0 rounded-lg bg-primary/10 p-2 sm:p-3",children:e.jsx("svg",{className:"h-6 w-6 sm:h-8 sm:w-8 text-primary",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:"text-lg sm:text-xl font-bold text-foreground mb-2",children:"开源项目"}),e.jsx("p",{className:"text-sm sm:text-base text-muted-foreground mb-3",children:"本项目在 GitHub 开源,欢迎 Star ⭐ 支持!"}),e.jsxs("a",{href:"https://github.com/Mai-with-u/MaiBot-Dashboard",target:"_blank",rel:"noopener noreferrer",className:$("inline-flex items-center gap-2 px-4 py-2 rounded-lg","bg-primary text-primary-foreground font-medium text-sm","hover:bg-primary/90 transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"),children:[e.jsx("svg",{className:"h-4 w-4",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})}),"前往 GitHub",e.jsx("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})})]})]})]})}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:["关于 ",Yu]}),e.jsxs("div",{className:"space-y-2 text-xs sm:text-sm text-muted-foreground",children:[e.jsxs("p",{children:["版本: ",Qu]}),e.jsx("p",{children:"麦麦(MaiBot)的现代化 Web 管理界面"})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"作者"}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"MaiBot 核心"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"Mai-with-u"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"WebUI"}),e.jsxs("p",{className:"text-xs sm:text-sm text-muted-foreground",children:["Mai-with-u ",e.jsx("a",{href:"https://github.com/DrSmoothl",target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"@MotricSeven"})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"技术栈"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-xs sm:text-sm text-muted-foreground",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"前端框架"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"React 19.2.0"}),e.jsx("li",{children:"TypeScript 5.7.2"}),e.jsx("li",{children:"Vite 6.0.7"}),e.jsx("li",{children:"TanStack Router 1.94.2"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"UI 组件"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"shadcn/ui"}),e.jsx("li",{children:"Radix UI"}),e.jsx("li",{children:"Tailwind CSS 3.4.17"}),e.jsx("li",{children:"Lucide Icons"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"后端"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"Python 3.12+"}),e.jsx("li",{children:"FastAPI"}),e.jsx("li",{children:"Uvicorn"}),e.jsx("li",{children:"WebSocket"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"构建工具"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"Bun / npm"}),e.jsx("li",{children:"ESLint 9.17.0"}),e.jsx("li",{children:"PostCSS"})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源库感谢"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mb-3",children:"本项目使用了以下优秀的开源库,感谢他们的贡献:"}),e.jsx(ss,{className:"h-[300px] sm:h-[400px]",children:e.jsxs("div",{className:"space-y-4 pr-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"UI 框架与组件"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zs,{name:"React",description:"用户界面构建库",license:"MIT"}),e.jsx(Zs,{name:"shadcn/ui",description:"优雅的 React 组件库",license:"MIT"}),e.jsx(Zs,{name:"Radix UI",description:"无样式的可访问组件库",license:"MIT"}),e.jsx(Zs,{name:"Tailwind CSS",description:"实用优先的 CSS 框架",license:"MIT"}),e.jsx(Zs,{name:"Lucide React",description:"精美的图标库",license:"ISC"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"路由与状态管理"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zs,{name:"TanStack Router",description:"类型安全的路由库",license:"MIT"}),e.jsx(Zs,{name:"Zustand",description:"轻量级状态管理",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"表单处理"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zs,{name:"React Hook Form",description:"高性能表单库",license:"MIT"}),e.jsx(Zs,{name:"Zod",description:"TypeScript 优先的 schema 验证",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"工具库"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zs,{name:"clsx",description:"条件 className 构建工具",license:"MIT"}),e.jsx(Zs,{name:"tailwind-merge",description:"Tailwind 类名合并工具",license:"MIT"}),e.jsx(Zs,{name:"class-variance-authority",description:"组件变体管理",license:"Apache-2.0"}),e.jsx(Zs,{name:"date-fns",description:"现代化日期处理库",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"动画效果"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zs,{name:"Framer Motion",description:"React 动画库",license:"MIT"}),e.jsx(Zs,{name:"vaul",description:"抽屉组件动画",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"后端框架"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zs,{name:"FastAPI",description:"现代化 Python Web 框架",license:"MIT"}),e.jsx(Zs,{name:"Uvicorn",description:"ASGI 服务器",license:"BSD-3-Clause"}),e.jsx(Zs,{name:"Pydantic",description:"数据验证库",license:"MIT"}),e.jsx(Zs,{name:"python-multipart",description:"文件上传支持",license:"Apache-2.0"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"开发工具"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zs,{name:"TypeScript",description:"JavaScript 的超集",license:"Apache-2.0"}),e.jsx(Zs,{name:"Vite",description:"下一代前端构建工具",license:"MIT"}),e.jsx(Zs,{name:"ESLint",description:"JavaScript 代码检查工具",license:"MIT"}),e.jsx(Zs,{name:"PostCSS",description:"CSS 转换工具",license:"MIT"})]})]})]})})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源许可"}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"rounded-lg bg-primary/5 border border-primary/20 p-3 sm:p-4",children:e.jsxs("div",{className:"flex items-start gap-2 sm:gap-3",children:[e.jsx("div",{className:"flex-shrink-0 mt-0.5",children:e.jsx("div",{className:"rounded-md bg-primary/10 px-2 py-1",children:e.jsx("span",{className:"text-xs sm:text-sm font-bold text-primary",children:"GPLv3"})})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm sm:text-base font-semibold text-foreground mb-1",children:"MaiBot WebUI"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目采用 GNU General Public License v3.0 开源许可证。 您可以自由地使用、修改和分发本软件,但必须保持相同的开源许可。"})]})]})}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目依赖的所有开源库均遵循各自的开源许可证(MIT、Apache-2.0、BSD 等)。 感谢所有开源贡献者的无私奉献。"})]})]})]})}function Zs({name:n,description:i,license:c}){return e.jsxs("div",{className:"flex items-start justify-between gap-2 rounded-lg border bg-muted/30 p-2.5 sm:p-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium text-foreground truncate",children:n}),e.jsx("p",{className:"text-muted-foreground text-xs mt-0.5",children:i})]}),e.jsx("span",{className:"inline-flex items-center rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-medium text-primary flex-shrink-0",children:c})]})}function Eu({value:n,current:i,onChange:c,label:d,description:h}){const x=i===n;return e.jsxs("button",{onClick:()=>c(n),className:$("relative rounded-lg border-2 p-3 sm:p-4 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",x?"border-primary bg-accent":"border-border"),children:[x&&e.jsx("div",{className:"absolute top-2 right-2 sm:top-3 sm:right-3 h-2 w-2 rounded-full bg-primary"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-sm sm:text-base font-medium",children:d}),e.jsx("div",{className:"text-[10px] sm:text-xs text-muted-foreground",children:h})]}),e.jsxs("div",{className:"mt-2 sm:mt-3 flex gap-1",children:[n==="light"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-200"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-300"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-400"})]}),n==="dark"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-700"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-800"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-900"})]}),n==="system"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-200 to-slate-700"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-300 to-slate-800"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-400 to-slate-900"})]})]})]})}function xa({value:n,current:i,onChange:c,label:d,colorClass:h}){const x=i===n;return e.jsxs("button",{onClick:()=>c(n),className:$("relative rounded-lg border-2 p-2 sm:p-3 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",x?"border-primary bg-accent":"border-border"),children:[x&&e.jsx("div",{className:"absolute top-1.5 right-1.5 sm:top-2 sm:right-2 h-1.5 w-1.5 sm:h-2 sm:w-2 rounded-full bg-primary"}),e.jsxs("div",{className:"flex flex-col items-center gap-1.5 sm:gap-2",children:[e.jsx("div",{className:$("h-8 w-8 sm:h-10 sm:w-10 rounded-full",h)}),e.jsx("div",{className:"text-[10px] sm:text-xs font-medium text-center",children:d})]})]})}class a0{grad3;p;perm;constructor(i=0){this.grad3=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],this.p=[];for(let c=0;c<256;c++)this.p[c]=Math.floor(Math.random()*256);this.perm=[];for(let c=0;c<512;c++)this.perm[c]=this.p[c&255]}dot(i,c,d){return i[0]*c+i[1]*d}mix(i,c,d){return(1-d)*i+d*c}fade(i){return i*i*i*(i*(i*6-15)+10)}perlin2(i,c){const d=Math.floor(i)&255,h=Math.floor(c)&255;i-=Math.floor(i),c-=Math.floor(c);const x=this.fade(i),f=this.fade(c),j=this.perm[d]+h,p=this.perm[j],w=this.perm[j+1],v=this.perm[d+1]+h,y=this.perm[v],S=this.perm[v+1];return this.mix(this.mix(this.dot(this.grad3[p%12],i,c),this.dot(this.grad3[y%12],i-1,c),x),this.mix(this.dot(this.grad3[w%12],i,c-1),this.dot(this.grad3[S%12],i-1,c-1),x),f)}}function ap(){const n=u.useRef(null),i=u.useRef(null),c=u.useRef(void 0),d=u.useRef({mouse:{x:-10,y:0,lx:0,ly:0,sx:0,sy:0,v:0,vs:0,a:0,set:!1},lines:[],paths:[],noise:new a0(Math.random()),bounding:null});return u.useEffect(()=>{const h=i.current,x=n.current;if(!h||!x)return;const f=d.current,j=()=>{const F=h.getBoundingClientRect();f.bounding=F,x.style.width=`${F.width}px`,x.style.height=`${F.height}px`},p=()=>{if(!f.bounding)return;const{width:F,height:U}=f.bounding;f.lines=[],f.paths.forEach(ne=>ne.remove()),f.paths=[];const O=10,K=32,H=F+200,A=U+30,V=Math.ceil(H/O),Q=Math.ceil(A/K),T=(F-O*V)/2,D=(U-K*Q)/2;for(let ne=0;ne<=V;ne++){const xe=[];for(let Se=0;Se<=Q;Se++){const ge={x:T+O*ne,y:D+K*Se,wave:{x:0,y:0},cursor:{x:0,y:0,vx:0,vy:0}};xe.push(ge)}const _e=document.createElementNS("http://www.w3.org/2000/svg","path");x.appendChild(_e),f.paths.push(_e),f.lines.push(xe)}},w=F=>{const{lines:U,mouse:O,noise:K}=f;U.forEach(H=>{H.forEach(A=>{const V=K.perlin2((A.x+F*.0125)*.002,(A.y+F*.005)*.0015)*12;A.wave.x=Math.cos(V)*32,A.wave.y=Math.sin(V)*16;const Q=A.x-O.sx,T=A.y-O.sy,D=Math.hypot(Q,T),ne=Math.max(175,O.vs);if(D{const O={x:F.x+F.wave.x+(U?F.cursor.x:0),y:F.y+F.wave.y+(U?F.cursor.y:0)};return O.x=Math.round(O.x*10)/10,O.y=Math.round(O.y*10)/10,O},y=()=>{const{lines:F,paths:U}=f;F.forEach((O,K)=>{let H=v(O[0],!1),A=`M ${H.x} ${H.y}`;O.forEach((V,Q)=>{const T=Q===O.length-1;H=v(V,!T),A+=`L ${H.x} ${H.y}`}),U[K].setAttribute("d",A)})},S=F=>{const{mouse:U}=f;U.sx+=(U.x-U.sx)*.1,U.sy+=(U.y-U.sy)*.1;const O=U.x-U.lx,K=U.y-U.ly,H=Math.hypot(O,K);U.v=H,U.vs+=(H-U.vs)*.1,U.vs=Math.min(100,U.vs),U.lx=U.x,U.ly=U.y,U.a=Math.atan2(K,O),h&&(h.style.setProperty("--x",`${U.sx}px`),h.style.setProperty("--y",`${U.sy}px`)),w(F),y(),c.current=requestAnimationFrame(S)},C=F=>{if(!f.bounding)return;const{mouse:U}=f;U.x=F.pageX-f.bounding.left,U.y=F.pageY-f.bounding.top+window.scrollY,U.set||(U.sx=U.x,U.sy=U.y,U.lx=U.x,U.ly=U.y,U.set=!0)},M=()=>{j(),p()};return j(),p(),window.addEventListener("resize",M),window.addEventListener("mousemove",C),c.current=requestAnimationFrame(S),()=>{window.removeEventListener("resize",M),window.removeEventListener("mousemove",C),c.current&&cancelAnimationFrame(c.current)}},[]),e.jsxs("div",{ref:i,className:"waves-background",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflow:"hidden",pointerEvents:"none"},children:[e.jsx("div",{className:"waves-cursor",style:{position:"absolute",top:0,left:0,width:"0.5rem",height:"0.5rem",background:"hsl(var(--primary) / 0.3)",borderRadius:"50%",transform:"translate3d(calc(var(--x, -0.5rem) - 50%), calc(var(--y, 50%) - 50%), 0)",willChange:"transform",pointerEvents:"none"}}),e.jsx("svg",{ref:n,style:{display:"block",width:"100%",height:"100%"},children:e.jsx("style",{children:` +`)}}):null},ir=UN,ti=u.forwardRef(({active:n,payload:i,className:c,indicator:d="dot",hideLabel:h=!1,hideIndicator:x=!1,label:f,labelFormatter:j,labelClassName:p,formatter:w,color:v,nameKey:y,labelKey:S},C)=>{const{config:M}=vg(),F=u.useMemo(()=>{if(h||!i?.length)return null;const[O]=i,K=`${S||O?.dataKey||O?.name||"value"}`,H=Lu(M,O,K),A=!S&&typeof f=="string"?M[f]?.label||f:H?.label;return j?e.jsx("div",{className:$("font-medium",p),children:j(A,i)}):A?e.jsx("div",{className:$("font-medium",p),children:A}):null},[f,j,i,h,p,M,S]);if(!n||!i?.length)return null;const U=i.length===1&&d!=="dot";return e.jsxs("div",{ref:C,className:$("grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl",c),children:[U?null:F,e.jsx("div",{className:"grid gap-1.5",children:i.filter(O=>O.type!=="none").map((O,K)=>{const H=`${y||O.name||O.dataKey||"value"}`,A=Lu(M,O,H),V=v||O.payload.fill||O.color;return e.jsx("div",{className:$("flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground",d==="dot"&&"items-center"),children:w&&O?.value!==void 0&&O.name?w(O.value,O.name,O,K,O.payload):e.jsxs(e.Fragment,{children:[A?.icon?e.jsx(A.icon,{}):!x&&e.jsx("div",{className:$("shrink-0 rounded-[2px] border-[--color-border] bg-[--color-bg]",{"h-2.5 w-2.5":d==="dot","w-1":d==="line","w-0 border-[1.5px] border-dashed bg-transparent":d==="dashed","my-0.5":U&&d==="dashed"}),style:{"--color-bg":V,"--color-border":V}}),e.jsxs("div",{className:$("flex flex-1 justify-between leading-none",U?"items-end":"items-center"),children:[e.jsxs("div",{className:"grid gap-1.5",children:[U?F:null,e.jsx("span",{className:"text-muted-foreground",children:A?.label||O.name})]}),O.value&&e.jsx("span",{className:"font-mono font-medium tabular-nums text-foreground",children:O.value.toLocaleString()})]})]})},O.dataKey)})})]})});ti.displayName="ChartTooltip";const ky=BN,Ng=u.forwardRef(({className:n,hideIcon:i=!1,payload:c,verticalAlign:d="bottom",nameKey:h},x)=>{const{config:f}=vg();return c?.length?e.jsx("div",{ref:x,className:$("flex items-center justify-center gap-4",d==="top"?"pb-3":"pt-3",n),children:c.filter(j=>j.type!=="none").map(j=>{const p=`${h||j.dataKey||"value"}`,w=Lu(f,j,p);return e.jsxs("div",{className:$("flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground"),children:[w?.icon&&!i?e.jsx(w.icon,{}):e.jsx("div",{className:"h-2 w-2 shrink-0 rounded-[2px]",style:{backgroundColor:j.color}}),w?.label]},j.value)})}):null});Ng.displayName="ChartLegend";function Lu(n,i,c){if(typeof i!="object"||i===null)return;const d="payload"in i&&typeof i.payload=="object"&&i.payload!==null?i.payload:void 0;let h=c;return c in i&&typeof i[c]=="string"?h=i[c]:d&&c in d&&typeof d[c]=="string"&&(h=d[c]),h in n?n[h]:n[c]}const gr=ci("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),N=u.forwardRef(({className:n,variant:i,size:c,asChild:d=!1,...h},x)=>{const f=d?$N:"button";return e.jsx(f,{className:$(gr({variant:i,size:c,className:n})),ref:x,...h})});N.displayName="Button";const Ty=ci("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function Ye({className:n,variant:i,...c}){return e.jsx("div",{className:$(Ty({variant:i}),n),...c})}const Ey=5,zy=5e3;let ku=0;function Ay(){return ku=(ku+1)%Number.MAX_SAFE_INTEGER,ku.toString()}const Tu=new Map,ep=n=>{if(Tu.has(n))return;const i=setTimeout(()=>{Tu.delete(n),hr({type:"REMOVE_TOAST",toastId:n})},zy);Tu.set(n,i)},My=(n,i)=>{switch(i.type){case"ADD_TOAST":return{...n,toasts:[i.toast,...n.toasts].slice(0,Ey)};case"UPDATE_TOAST":return{...n,toasts:n.toasts.map(c=>c.id===i.toast.id?{...c,...i.toast}:c)};case"DISMISS_TOAST":{const{toastId:c}=i;return c?ep(c):n.toasts.forEach(d=>{ep(d.id)}),{...n,toasts:n.toasts.map(d=>d.id===c||c===void 0?{...d,open:!1}:d)}}case"REMOVE_TOAST":return i.toastId===void 0?{...n,toasts:[]}:{...n,toasts:n.toasts.filter(c=>c.id!==i.toastId)}}},Kc=[];let Jc={toasts:[]};function hr(n){Jc=My(Jc,n),Kc.forEach(i=>{i(Jc)})}function Dy({...n}){const i=Ay(),c=h=>hr({type:"UPDATE_TOAST",toast:{...h,id:i}}),d=()=>hr({type:"DISMISS_TOAST",toastId:i});return hr({type:"ADD_TOAST",toast:{...n,id:i,open:!0,onOpenChange:h=>{h||d()}}}),{id:i,dismiss:d,update:c}}function Gs(){const[n,i]=u.useState(Jc);return u.useEffect(()=>(Kc.push(i),()=>{const c=Kc.indexOf(i);c>-1&&Kc.splice(c,1)}),[n]),{...n,toast:Dy,dismiss:c=>hr({type:"DISMISS_TOAST",toastId:c})}}const Oy=n=>{const i=[];for(let c=0;c{try{C(!0);const k=await Bc.get("https://v1.hitokoto.cn/?c=a&c=b&c=c&c=d&c=h&c=i&c=k");y({hitokoto:k.data.hitokoto,from:k.data.from||k.data.from_who||"未知"})}catch(k){console.error("获取一言失败:",k),y({hitokoto:"人生就像一盒巧克力,你永远不知道下一颗是什么味道。",from:"阿甘正传"})}finally{C(!1)}},[]),A=u.useCallback(async()=>{try{const k=localStorage.getItem("access-token"),se=await Bc.get("/api/webui/system/status",{headers:{Authorization:`Bearer ${k}`}});F(se.data)}catch(k){console.error("获取机器人状态失败:",k),F(null)}},[]),V=async()=>{if(!U)try{O(!0);const k=localStorage.getItem("access-token");await Bc.post("/api/webui/system/restart",{},{headers:{Authorization:`Bearer ${k}`}}),K({title:"重启中",description:"麦麦正在重启,请稍候..."}),setTimeout(()=>{A(),O(!1)},3e3)}catch(k){console.error("重启失败:",k),K({title:"重启失败",description:"无法重启麦麦,请检查控制台",variant:"destructive"}),O(!1)}},Q=u.useCallback(async()=>{try{const k=localStorage.getItem("access-token"),se=await Bc.get(`/api/webui/statistics/dashboard?hours=${f}`,{headers:{Authorization:`Bearer ${k}`}});i(se.data),d(!1),x(100)}catch(k){console.error("Failed to fetch dashboard data:",k),d(!1),x(100)}},[f]);if(u.useEffect(()=>{if(!c)return;x(0);const k=setTimeout(()=>x(15),200),se=setTimeout(()=>x(30),800),_=setTimeout(()=>x(45),2e3),ue=setTimeout(()=>x(60),4e3),ie=setTimeout(()=>x(75),6500),ae=setTimeout(()=>x(85),9e3),fe=setTimeout(()=>x(92),11e3);return()=>{clearTimeout(k),clearTimeout(se),clearTimeout(_),clearTimeout(ue),clearTimeout(ie),clearTimeout(ae),clearTimeout(fe)}},[c]),u.useEffect(()=>{Q(),H(),A()},[Q,H,A]),u.useEffect(()=>{if(!p)return;const k=setInterval(()=>{Q(),A()},3e4);return()=>clearInterval(k)},[p,Q,A]),c||!n)return e.jsx("div",{className:"flex items-center justify-center h-[calc(100vh-200px)]",children:e.jsxs("div",{className:"text-center space-y-6 w-full max-w-md px-4",children:[e.jsx(Ct,{className:"h-12 w-12 animate-spin mx-auto text-primary"}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-lg font-medium",children:"加载统计数据中..."}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"正在获取麦麦运行数据"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(wr,{value:h,className:"h-2"}),e.jsxs("p",{className:"text-xs text-muted-foreground",children:[h,"%"]})]})]})});const{summary:T,model_stats:D=[],hourly_data:ne=[],daily_data:xe=[],recent_activity:_e=[]}=n,Se=T??{total_requests:0,total_cost:0,total_tokens:0,online_time:0,total_messages:0,total_replies:0,avg_response_time:0,cost_per_hour:0,tokens_per_hour:0},ge=k=>{const se=Math.floor(k/3600),_=Math.floor(k%3600/60);return`${se}小时${_}分钟`},ye=k=>new Date(k).toLocaleString("zh-CN",{month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"}),be=Oy(D.length),z=D.map((k,se)=>({name:k.model_name,value:k.request_count,fill:be[se]})),X={requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"},tokens:{label:"Tokens",color:"hsl(var(--chart-3))"}};return e.jsx(ss,{className:"h-full",children:e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"实时监控面板"}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"麦麦运行状态和统计数据一览"})]}),e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx(La,{value:f.toString(),onValueChange:k=>j(Number(k)),children:e.jsxs(wa,{className:"grid grid-cols-3 w-full sm:w-auto",children:[e.jsx(fs,{value:"24",children:"24小时"}),e.jsx(fs,{value:"168",children:"7天"}),e.jsx(fs,{value:"720",children:"30天"})]})}),e.jsxs(N,{variant:p?"default":"outline",size:"sm",onClick:()=>w(!p),className:"gap-2",children:[e.jsx(Ct,{className:`h-4 w-4 ${p?"animate-spin":""}`}),e.jsx("span",{className:"hidden sm:inline",children:"自动刷新"})]}),e.jsx(N,{variant:"outline",size:"sm",onClick:Q,children:e.jsx(Ct,{className:"h-4 w-4"})})]})]}),e.jsxs("div",{className:"flex items-center gap-3 px-4 py-2 rounded-lg border border-dashed border-muted-foreground/30 bg-muted/20",children:[S?e.jsx(gg,{className:"h-5 flex-1"}):v?e.jsxs("p",{className:"flex-1 text-sm text-muted-foreground italic truncate",children:['"',v.hitokoto,'" —— ',v.from]}):null,e.jsx(N,{variant:"ghost",size:"icon",className:"h-7 w-7 shrink-0",onClick:H,disabled:S,children:e.jsx(Ct,{className:`h-3.5 w-3.5 ${S?"animate-spin":""}`})})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-3",children:[e.jsxs(Ze,{className:"lg:col-span-1",children:[e.jsx(ys,{className:"pb-3",children:e.jsxs(ws,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(br,{className:"h-4 w-4"}),"麦麦状态"]})}),e.jsx(Ts,{children:e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsx("div",{className:"flex items-center gap-2",children:M?.running?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-3 w-3 rounded-full bg-green-500 animate-pulse"}),e.jsxs(Ye,{variant:"outline",className:"text-green-600 border-green-300 bg-green-50",children:[e.jsx(fa,{className:"h-3 w-3 mr-1"}),"运行中"]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-3 w-3 rounded-full bg-red-500"}),e.jsxs(Ye,{variant:"outline",className:"text-red-600 border-red-300 bg-red-50",children:[e.jsx(Oa,{className:"h-3 w-3 mr-1"}),"已停止"]})]})}),M&&e.jsxs("div",{className:"text-xs text-muted-foreground",children:[e.jsxs("span",{children:["v",M.version]}),e.jsx("span",{className:"mx-2",children:"|"}),e.jsxs("span",{children:["运行 ",ge(M.uptime)]})]})]})})]}),e.jsxs(Ze,{className:"lg:col-span-2",children:[e.jsx(ys,{className:"pb-3",children:e.jsxs(ws,{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(cn,{className:"h-4 w-4"}),"快速操作"]})}),e.jsx(Ts,{children:e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(N,{variant:"outline",size:"sm",onClick:V,disabled:U,className:"gap-2",children:[e.jsx(Zc,{className:`h-4 w-4 ${U?"animate-spin":""}`}),U?"重启中...":"重启麦麦"]}),e.jsx(N,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Yc,{to:"/logs",children:[e.jsx(Da,{className:"h-4 w-4"}),"查看日志"]})}),e.jsx(N,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Yc,{to:"/plugins",children:[e.jsx(cb,{className:"h-4 w-4"}),"插件管理"]})}),e.jsx(N,{variant:"outline",size:"sm",asChild:!0,className:"gap-2",children:e.jsxs(Yc,{to:"/settings",children:[e.jsx(oi,{className:"h-4 w-4"}),"系统设置"]})})]})})]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 xs:grid-cols-2 lg:grid-cols-4",children:[e.jsxs(Ze,{children:[e.jsxs(ys,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(ws,{className:"text-sm font-medium",children:"总请求数"}),e.jsx(ob,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(Ts,{children:[e.jsx("div",{className:"text-2xl font-bold",children:Se.total_requests.toLocaleString()}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["最近",f<48?f+"小时":Math.floor(f/24)+"天"]})]})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(ws,{className:"text-sm font-medium",children:"总花费"}),e.jsx(db,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(Ts,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:["¥",Se.total_cost.toFixed(2)]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:Se.cost_per_hour>0?`¥${Se.cost_per_hour.toFixed(2)}/小时`:"暂无数据"})]})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(ws,{className:"text-sm font-medium",children:"Token消耗"}),e.jsx(Ic,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(Ts,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:[(Se.total_tokens/1e3).toFixed(1),"K"]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:Se.tokens_per_hour>0?`${(Se.tokens_per_hour/1e3).toFixed(1)}K/小时`:"暂无数据"})]})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(ws,{className:"text-sm font-medium",children:"平均响应"}),e.jsx(cn,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(Ts,{children:[e.jsxs("div",{className:"text-2xl font-bold",children:[Se.avg_response_time.toFixed(2),"s"]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"API平均耗时"})]})]})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 sm:grid-cols-3",children:[e.jsxs(Ze,{children:[e.jsxs(ys,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(ws,{className:"text-sm font-medium",children:"在线时长"}),e.jsx(li,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsx(Ts,{children:e.jsx("div",{className:"text-xl font-bold",children:ge(Se.online_time)})})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(ws,{className:"text-sm font-medium",children:"消息处理"}),e.jsx(un,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(Ts,{children:[e.jsx("div",{className:"text-xl font-bold",children:Se.total_messages.toLocaleString()}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:["回复 ",Se.total_replies.toLocaleString()," 条"]})]})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{className:"flex flex-row items-center justify-between space-y-0 pb-2",children:[e.jsx(ws,{className:"text-sm font-medium",children:"成本效率"}),e.jsx(ub,{className:"h-4 w-4 text-muted-foreground"})]}),e.jsxs(Ts,{children:[e.jsx("div",{className:"text-xl font-bold",children:Se.total_messages>0?`¥${(Se.total_cost/Se.total_messages*100).toFixed(2)}`:"¥0.00"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"每100条消息"})]})]})]}),e.jsxs(La,{defaultValue:"trends",className:"space-y-4",children:[e.jsxs(wa,{className:"grid w-full grid-cols-2 sm:grid-cols-4",children:[e.jsx(fs,{value:"trends",children:"趋势"}),e.jsx(fs,{value:"models",children:"模型"}),e.jsx(fs,{value:"activity",children:"活动"}),e.jsx(fs,{value:"daily",children:"日统计"})]}),e.jsxs(Ms,{value:"trends",className:"space-y-4",children:[e.jsxs(Ze,{children:[e.jsxs(ys,{children:[e.jsx(ws,{children:"请求趋势"}),e.jsxs(ct,{children:["最近",f,"小时的请求量变化"]})]}),e.jsx(Ts,{children:e.jsx(si,{config:X,className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:e.jsxs(HN,{data:ne,children:[e.jsx(Hc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(qc,{dataKey:"timestamp",tickFormatter:k=>ye(k),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(ir,{content:e.jsx(ti,{labelFormatter:k=>ye(k)})}),e.jsx(qN,{type:"monotone",dataKey:"requests",stroke:"var(--color-requests)",strokeWidth:2})]})})})]}),e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[e.jsxs(Ze,{children:[e.jsxs(ys,{children:[e.jsx(ws,{children:"花费趋势"}),e.jsx(ct,{children:"API调用成本变化"})]}),e.jsx(Ts,{children:e.jsx(si,{config:X,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:e.jsxs(bu,{data:ne,children:[e.jsx(Hc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(qc,{dataKey:"timestamp",tickFormatter:k=>ye(k),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(ir,{content:e.jsx(ti,{labelFormatter:k=>ye(k)})}),e.jsx(Gc,{dataKey:"cost",fill:"var(--color-cost)"})]})})})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{children:[e.jsx(ws,{children:"Token消耗"}),e.jsx(ct,{children:"Token使用量变化"})]}),e.jsx(Ts,{children:e.jsx(si,{config:X,className:"h-[250px] sm:h-[300px] w-full aspect-auto",children:e.jsxs(bu,{data:ne,children:[e.jsx(Hc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(qc,{dataKey:"timestamp",tickFormatter:k=>ye(k),angle:-45,textAnchor:"end",height:60,stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(ir,{content:e.jsx(ti,{labelFormatter:k=>ye(k)})}),e.jsx(Gc,{dataKey:"tokens",fill:"var(--color-tokens)"})]})})})]})]})]}),e.jsx(Ms,{value:"models",className:"space-y-4",children:e.jsxs("div",{className:"grid gap-4 grid-cols-1 lg:grid-cols-2",children:[e.jsxs(Ze,{children:[e.jsxs(ys,{children:[e.jsx(ws,{children:"模型请求分布"}),e.jsxs(ct,{children:["各模型使用占比 (共 ",D.length," 个模型)"]})]}),e.jsx(Ts,{children:e.jsx(si,{config:Object.fromEntries(D.map((k,se)=>[k.model_name,{label:k.model_name,color:be[se]}])),className:"h-[300px] sm:h-[400px] w-full aspect-auto",children:e.jsxs(GN,{children:[e.jsx(ir,{content:e.jsx(ti,{})}),e.jsx(VN,{data:z,cx:"50%",cy:"50%",labelLine:!1,label:({name:k,percent:se})=>se&&se<.05?"":`${k} ${se?(se*100).toFixed(0):0}%`,outerRadius:100,dataKey:"value",children:z.map((k,se)=>e.jsx(FN,{fill:k.fill},`cell-${se}`))})]})})})]}),e.jsxs(Ze,{children:[e.jsxs(ys,{children:[e.jsx(ws,{children:"模型详细统计"}),e.jsx(ct,{children:"请求数、花费和性能"})]}),e.jsx(Ts,{children:e.jsx(ss,{className:"h-[300px] sm:h-[400px]",children:e.jsx("div",{className:"space-y-3",children:D.map((k,se)=>e.jsxs("div",{className:"p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsx("h4",{className:"font-semibold text-sm truncate flex-1 min-w-0",children:k.model_name}),e.jsx("div",{className:"w-3 h-3 rounded-full ml-2 flex-shrink-0",style:{backgroundColor:`hsl(var(--chart-${se%5+1}))`}})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"请求数:"}),e.jsx("span",{className:"ml-1 font-medium",children:k.request_count.toLocaleString()})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"花费:"}),e.jsxs("span",{className:"ml-1 font-medium",children:["¥",k.total_cost.toFixed(2)]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),e.jsxs("span",{className:"ml-1 font-medium",children:[(k.total_tokens/1e3).toFixed(1),"K"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"平均耗时:"}),e.jsxs("span",{className:"ml-1 font-medium",children:[k.avg_response_time.toFixed(2),"s"]})]})]})]},se))})})})]})]})}),e.jsx(Ms,{value:"activity",children:e.jsxs(Ze,{children:[e.jsxs(ys,{children:[e.jsx(ws,{children:"最近活动"}),e.jsx(ct,{children:"最新的API调用记录"})]}),e.jsx(Ts,{children:e.jsx(ss,{className:"h-[400px] sm:h-[500px]",children:e.jsx("div",{className:"space-y-2",children:_e.map((k,se)=>e.jsxs("div",{className:"p-3 sm:p-4 rounded-lg border bg-card hover:bg-accent/50 transition-colors",children:[e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-2 mb-2",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("div",{className:"font-medium text-sm truncate",children:k.model}),e.jsx("div",{className:"text-xs text-muted-foreground",children:k.request_type})]}),e.jsx("div",{className:"text-xs text-muted-foreground flex-shrink-0",children:ye(k.timestamp)})]}),e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-2 text-xs",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"Tokens:"}),e.jsx("span",{className:"ml-1",children:k.tokens})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"花费:"}),e.jsxs("span",{className:"ml-1",children:["¥",k.cost.toFixed(4)]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"耗时:"}),e.jsxs("span",{className:"ml-1",children:[k.time_cost.toFixed(2),"s"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:"状态:"}),e.jsx("span",{className:`ml-1 ${k.status==="success"?"text-green-600":"text-red-600"}`,children:k.status})]})]})]},se))})})})]})}),e.jsx(Ms,{value:"daily",children:e.jsxs(Ze,{children:[e.jsxs(ys,{children:[e.jsx(ws,{children:"每日统计"}),e.jsx(ct,{children:"最近7天的数据汇总"})]}),e.jsx(Ts,{children:e.jsx(si,{config:{requests:{label:"请求数",color:"hsl(var(--chart-1))"},cost:{label:"花费(¥)",color:"hsl(var(--chart-2))"}},className:"h-[400px] sm:h-[500px] w-full aspect-auto",children:e.jsxs(bu,{data:xe,children:[e.jsx(Hc,{strokeDasharray:"3 3",stroke:"hsl(var(--muted-foreground) / 0.2)"}),e.jsx(qc,{dataKey:"timestamp",tickFormatter:k=>{const se=new Date(k);return`${se.getMonth()+1}/${se.getDate()}`},stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{yAxisId:"left",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(lr,{yAxisId:"right",orientation:"right",stroke:"hsl(var(--muted-foreground))",tick:{fill:"hsl(var(--muted-foreground))"}}),e.jsx(ir,{content:e.jsx(ti,{labelFormatter:k=>new Date(k).toLocaleDateString("zh-CN")})}),e.jsx(ky,{content:e.jsx(Ng,{})}),e.jsx(Gc,{yAxisId:"left",dataKey:"requests",fill:"var(--color-requests)"}),e.jsx(Gc,{yAxisId:"right",dataKey:"cost",fill:"var(--color-cost)"})]})})})]})})]})]})})}const Ly={theme:"system",setTheme:()=>null},bg=u.createContext(Ly),$u=()=>{const n=u.useContext(bg);if(n===void 0)throw new Error("useTheme must be used within a ThemeProvider");return n},Uy=(n,i,c)=>{const d=document.documentElement.classList.contains("no-animations");if(!document.startViewTransition||d){i(n);return}const h=c.clientX,x=c.clientY,f=Math.hypot(Math.max(h,innerWidth-h),Math.max(x,innerHeight-x));document.startViewTransition(()=>{i(n)}).ready.then(()=>{document.documentElement.animate({clipPath:[`circle(0px at ${h}px ${x}px)`,`circle(${f}px at ${h}px ${x}px)`]},{duration:500,easing:"ease-in-out",pseudoElement:"::view-transition-new(root)"})})},yg=u.createContext(void 0),wg=()=>{const n=u.useContext(yg);if(n===void 0)throw new Error("useAnimation must be used within an AnimationProvider");return n},Xe=u.forwardRef(({className:n,...i},c)=>e.jsx(Cp,{className:$("peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input",n),...i,ref:c,children:e.jsx(wN,{className:$("pointer-events-none block h-4 w-4 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0")})}));Xe.displayName=Cp.displayName;const By=ci("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),b=u.forwardRef(({className:n,...i},c)=>e.jsx(Hp,{ref:c,className:$(By(),n),...i}));b.displayName=Hp.displayName;const oe=u.forwardRef(({className:n,type:i,...c},d)=>e.jsx("input",{type:i,className:$("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",n),ref:d,...c}));oe.displayName="Input";const Hy=[{id:"minLength",label:"长度至少 10 位",description:"Token 长度必须大于等于 10 个字符",validate:n=>n.length>=10},{id:"hasUppercase",label:"包含大写字母",description:"至少包含一个大写字母 (A-Z)",validate:n=>/[A-Z]/.test(n)},{id:"hasLowercase",label:"包含小写字母",description:"至少包含一个小写字母 (a-z)",validate:n=>/[a-z]/.test(n)},{id:"hasSpecialChar",label:"包含特殊符号",description:"至少包含一个特殊符号 (!@#$%^&*()_+-=[]{}|;:,.<>?/)",validate:n=>/[!@#$%^&*()_+\-=[\]{}|;:,.<>?/]/.test(n)}];function qy(n){const i=Hy.map(d=>({id:d.id,label:d.label,description:d.description,passed:d.validate(n)}));return{isValid:i.every(d=>d.passed),rules:i}}const Qu="0.11.6",Yu="MaiBot Dashboard",Gy=`${Yu} v${Qu}`,Vy=(n="v")=>`${n}${Qu}`,Ft={THEME:"maibot-ui-theme",ACCENT_COLOR:"accent-color",ENABLE_ANIMATIONS:"maibot-animations",ENABLE_WAVES_BACKGROUND:"maibot-waves-background",LOG_CACHE_SIZE:"maibot-log-cache-size",LOG_AUTO_SCROLL:"maibot-log-auto-scroll",LOG_FONT_SIZE:"maibot-log-font-size",LOG_LINE_SPACING:"maibot-log-line-spacing",DATA_SYNC_INTERVAL:"maibot-data-sync-interval",WS_RECONNECT_INTERVAL:"maibot-ws-reconnect-interval",WS_MAX_RECONNECT_ATTEMPTS:"maibot-ws-max-reconnect-attempts",COMPLETED_TOURS:"maibot-completed-tours"},Aa={theme:"system",accentColor:"blue",enableAnimations:!0,enableWavesBackground:!0,logCacheSize:1e3,logAutoScroll:!0,logFontSize:"xs",logLineSpacing:4,dataSyncInterval:30,wsReconnectInterval:3e3,wsMaxReconnectAttempts:10};function st(n){const i=_g(n),c=localStorage.getItem(i);if(c===null)return Aa[n];const d=Aa[n];if(typeof d=="boolean")return c==="true";if(typeof d=="number"){const h=parseFloat(c);return isNaN(h)?d:h}return c}function ai(n,i){const c=_g(n);localStorage.setItem(c,String(i)),window.dispatchEvent(new CustomEvent("maibot-settings-change",{detail:{key:n,value:i}}))}function Fy(){return{theme:st("theme"),accentColor:st("accentColor"),enableAnimations:st("enableAnimations"),enableWavesBackground:st("enableWavesBackground"),logCacheSize:st("logCacheSize"),logAutoScroll:st("logAutoScroll"),logFontSize:st("logFontSize"),logLineSpacing:st("logLineSpacing"),dataSyncInterval:st("dataSyncInterval"),wsReconnectInterval:st("wsReconnectInterval"),wsMaxReconnectAttempts:st("wsMaxReconnectAttempts")}}function $y(){const n=Fy(),i=localStorage.getItem(Ft.COMPLETED_TOURS),c=i?JSON.parse(i):[];return{...n,completedTours:c}}function Qy(n){const i=[],c=[];for(const[d,h]of Object.entries(n)){if(d==="completedTours"){Array.isArray(h)?(localStorage.setItem(Ft.COMPLETED_TOURS,JSON.stringify(h)),i.push("completedTours")):c.push("completedTours");continue}if(d in Aa){const x=d,f=Aa[x];if(typeof h==typeof f){if(x==="theme"&&!["light","dark","system"].includes(h)){c.push(d);continue}if(x==="logFontSize"&&!["xs","sm","base"].includes(h)){c.push(d);continue}ai(x,h),i.push(d)}else c.push(d)}else c.push(d)}return{success:i.length>0,imported:i,skipped:c}}function Yy(){for(const n of Object.keys(Aa))ai(n,Aa[n]);localStorage.removeItem(Ft.COMPLETED_TOURS),window.dispatchEvent(new CustomEvent("maibot-settings-reset"))}function Xy(){const n=[],i=[],c=[];for(let d=0;dd.size-c.size),{used:n,items:localStorage.length,details:i}}function Ky(n){if(n===0)return"0 B";const i=1024,c=["B","KB","MB"],d=Math.floor(Math.log(n)/Math.log(i));return parseFloat((n/Math.pow(i,d)).toFixed(2))+" "+c[d]}function _g(n){return{theme:Ft.THEME,accentColor:Ft.ACCENT_COLOR,enableAnimations:Ft.ENABLE_ANIMATIONS,enableWavesBackground:Ft.ENABLE_WAVES_BACKGROUND,logCacheSize:Ft.LOG_CACHE_SIZE,logAutoScroll:Ft.LOG_AUTO_SCROLL,logFontSize:Ft.LOG_FONT_SIZE,logLineSpacing:Ft.LOG_LINE_SPACING,dataSyncInterval:Ft.DATA_SYNC_INTERVAL,wsReconnectInterval:Ft.WS_RECONNECT_INTERVAL,wsMaxReconnectAttempts:Ft.WS_MAX_RECONNECT_ATTEMPTS}[n]}const Ma=u.forwardRef(({className:n,...i},c)=>e.jsxs(kp,{ref:c,className:$("relative flex w-full touch-none select-none items-center",n),...i,children:[e.jsx(_N,{className:"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20",children:e.jsx(SN,{className:"absolute h-full bg-primary"})}),e.jsx(CN,{className:"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50"})]}));Ma.displayName=kp.displayName;class Jy{ws=null;reconnectTimeout=null;reconnectAttempts=0;heartbeatInterval=null;logCallbacks=new Set;connectionCallbacks=new Set;isConnected=!1;logCache=[];getMaxCacheSize(){return st("logCacheSize")}getMaxReconnectAttempts(){return st("wsMaxReconnectAttempts")}getReconnectInterval(){return st("wsReconnectInterval")}getWebSocketUrl(){{const i=window.location.protocol==="https:"?"wss:":"ws:",c=window.location.host;return`${i}//${c}/ws/logs`}}connect(){if(this.ws?.readyState===WebSocket.OPEN||this.ws?.readyState===WebSocket.CONNECTING)return;const i=this.getWebSocketUrl();try{this.ws=new WebSocket(i),this.ws.onopen=()=>{this.isConnected=!0,this.reconnectAttempts=0,this.notifyConnection(!0),this.startHeartbeat()},this.ws.onmessage=c=>{try{if(c.data==="pong")return;const d=JSON.parse(c.data);this.notifyLog(d)}catch(d){console.error("解析日志消息失败:",d)}},this.ws.onerror=c=>{console.error("❌ WebSocket 错误:",c),this.isConnected=!1,this.notifyConnection(!1)},this.ws.onclose=()=>{this.isConnected=!1,this.notifyConnection(!1),this.stopHeartbeat(),this.attemptReconnect()}}catch(c){console.error("创建 WebSocket 连接失败:",c),this.attemptReconnect()}}attemptReconnect(){const i=this.getMaxReconnectAttempts();if(this.reconnectAttempts>=i)return;this.reconnectAttempts+=1;const c=this.getReconnectInterval(),d=Math.min(c*this.reconnectAttempts,3e4);this.reconnectTimeout=window.setTimeout(()=>{this.connect()},d)}startHeartbeat(){this.heartbeatInterval=window.setInterval(()=>{this.ws?.readyState===WebSocket.OPEN&&this.ws.send("ping")},3e4)}stopHeartbeat(){this.heartbeatInterval!==null&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}disconnect(){this.reconnectTimeout!==null&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.stopHeartbeat(),this.ws&&(this.ws.close(),this.ws=null),this.isConnected=!1,this.reconnectAttempts=0}onLog(i){return this.logCallbacks.add(i),()=>this.logCallbacks.delete(i)}onConnectionChange(i){return this.connectionCallbacks.add(i),i(this.isConnected),()=>this.connectionCallbacks.delete(i)}notifyLog(i){if(!this.logCache.some(d=>d.id===i.id)){this.logCache.push(i);const d=this.getMaxCacheSize();this.logCache.length>d&&(this.logCache=this.logCache.slice(-d)),this.logCallbacks.forEach(h=>{try{h(i)}catch(x){console.error("日志回调执行失败:",x)}})}}notifyConnection(i){this.connectionCallbacks.forEach(c=>{try{c(i)}catch(d){console.error("连接状态回调执行失败:",d)}})}getAllLogs(){return[...this.logCache]}clearLogs(){this.logCache=[]}getConnectionStatus(){return this.isConnected}}const rn=new Jy;typeof window<"u"&&rn.connect();const $s=XN,Xu=KN,Zy=QN,Sg=u.forwardRef(({className:n,...i},c)=>e.jsx(qp,{ref:c,className:$("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...i}));Sg.displayName=qp.displayName;const Bs=u.forwardRef(({className:n,children:i,preventOutsideClose:c=!1,...d},h)=>e.jsxs(Zy,{children:[e.jsx(Sg,{}),e.jsxs(Gp,{ref:h,className:$("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",n),onPointerDownOutside:c?x=>x.preventDefault():void 0,onInteractOutside:c?x=>x.preventDefault():void 0,...d,children:[i,e.jsxs(YN,{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground",children:[e.jsx(dl,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"Close"})]})]})]}));Bs.displayName=Gp.displayName;const Hs=({className:n,...i})=>e.jsx("div",{className:$("flex flex-col space-y-1.5 text-center sm:text-left",n),...i});Hs.displayName="DialogHeader";const at=({className:n,...i})=>e.jsx("div",{className:$("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",n),...i});at.displayName="DialogFooter";const qs=u.forwardRef(({className:n,...i},c)=>e.jsx(Vp,{ref:c,className:$("text-lg font-semibold leading-none tracking-tight",n),...i}));qs.displayName=Vp.displayName;const Is=u.forwardRef(({className:n,...i},c)=>e.jsx(Fp,{ref:c,className:$("text-sm text-muted-foreground",n),...i}));Is.displayName=Fp.displayName;const ps=TN,tt=EN,Iy=kN,Cg=u.forwardRef(({className:n,...i},c)=>e.jsx(Tp,{className:$("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",n),...i,ref:c}));Cg.displayName=Tp.displayName;const is=u.forwardRef(({className:n,...i},c)=>e.jsxs(Iy,{children:[e.jsx(Cg,{}),e.jsx(Ep,{ref:c,className:$("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",n),...i})]}));is.displayName=Ep.displayName;const rs=({className:n,...i})=>e.jsx("div",{className:$("flex flex-col space-y-2 text-center sm:text-left",n),...i});rs.displayName="AlertDialogHeader";const cs=({className:n,...i})=>e.jsx("div",{className:$("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",n),...i});cs.displayName="AlertDialogFooter";const os=u.forwardRef(({className:n,...i},c)=>e.jsx(zp,{ref:c,className:$("text-lg font-semibold",n),...i}));os.displayName=zp.displayName;const ds=u.forwardRef(({className:n,...i},c)=>e.jsx(Ap,{ref:c,className:$("text-sm text-muted-foreground",n),...i}));ds.displayName=Ap.displayName;const us=u.forwardRef(({className:n,...i},c)=>e.jsx(Mp,{ref:c,className:$(gr(),n),...i}));us.displayName=Mp.displayName;const ms=u.forwardRef(({className:n,...i},c)=>e.jsx(Dp,{ref:c,className:$(gr({variant:"outline"}),"mt-2 sm:mt-0",n),...i}));ms.displayName=Dp.displayName;function Py(){return e.jsxs("div",{className:"space-y-4 sm:space-y-6 p-4 sm:p-6",children:[e.jsx("div",{className:"flex flex-col sm:flex-row sm:items-center justify-between gap-4",children:e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl sm:text-3xl font-bold",children:"系统设置"}),e.jsx("p",{className:"text-muted-foreground mt-1 sm:mt-2 text-sm sm:text-base",children:"管理您的应用偏好设置"})]})}),e.jsxs(La,{defaultValue:"appearance",className:"w-full",children:[e.jsxs(wa,{className:"grid w-full grid-cols-2 sm:grid-cols-4 gap-0.5 sm:gap-1 h-auto p-1",children:[e.jsxs(fs,{value:"appearance",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(mb,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"外观"})]}),e.jsxs(fs,{value:"security",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(hb,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"安全"})]}),e.jsxs(fs,{value:"other",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(oi,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"其他"})]}),e.jsxs(fs,{value:"about",className:"gap-1 sm:gap-2 text-xs sm:text-sm px-2 sm:px-3 py-2",children:[e.jsx(Ra,{className:"h-3.5 w-3.5 sm:h-4 sm:w-4",strokeWidth:2,fill:"none"}),e.jsx("span",{children:"关于"})]})]}),e.jsxs(ss,{className:"h-[calc(100vh-240px)] sm:h-[calc(100vh-280px)] mt-4 sm:mt-6",children:[e.jsx(Ms,{value:"appearance",className:"mt-0",children:e.jsx(Wy,{})}),e.jsx(Ms,{value:"security",className:"mt-0",children:e.jsx(e0,{})}),e.jsx(Ms,{value:"other",className:"mt-0",children:e.jsx(s0,{})}),e.jsx(Ms,{value:"about",className:"mt-0",children:e.jsx(t0,{})})]})]})]})}function tp(n){const i=document.documentElement,d={blue:{hsl:"221.2 83.2% 53.3%",darkHsl:"217.2 91.2% 59.8%",gradient:null},purple:{hsl:"271 91% 65%",darkHsl:"270 95% 75%",gradient:null},green:{hsl:"142 71% 45%",darkHsl:"142 76% 36%",gradient:null},orange:{hsl:"25 95% 53%",darkHsl:"20 90% 48%",gradient:null},pink:{hsl:"330 81% 60%",darkHsl:"330 85% 70%",gradient:null},red:{hsl:"0 84% 60%",darkHsl:"0 90% 70%",gradient:null},"gradient-sunset":{hsl:"15 95% 60%",darkHsl:"15 95% 65%",gradient:"linear-gradient(135deg, hsl(25 95% 53%) 0%, hsl(330 81% 60%) 100%)"},"gradient-ocean":{hsl:"200 90% 55%",darkHsl:"200 90% 60%",gradient:"linear-gradient(135deg, hsl(221.2 83.2% 53.3%) 0%, hsl(189 94% 43%) 100%)"},"gradient-forest":{hsl:"150 70% 45%",darkHsl:"150 75% 40%",gradient:"linear-gradient(135deg, hsl(142 71% 45%) 0%, hsl(158 64% 52%) 100%)"},"gradient-aurora":{hsl:"310 85% 65%",darkHsl:"310 90% 70%",gradient:"linear-gradient(135deg, hsl(271 91% 65%) 0%, hsl(330 81% 60%) 100%)"},"gradient-fire":{hsl:"15 95% 55%",darkHsl:"15 95% 60%",gradient:"linear-gradient(135deg, hsl(0 84% 60%) 0%, hsl(25 95% 53%) 100%)"},"gradient-twilight":{hsl:"250 90% 60%",darkHsl:"250 95% 65%",gradient:"linear-gradient(135deg, hsl(239 84% 67%) 0%, hsl(271 91% 65%) 100%)"}}[n];if(d)i.style.setProperty("--primary",d.hsl),d.gradient?(i.style.setProperty("--primary-gradient",d.gradient),i.classList.add("has-gradient")):(i.style.removeProperty("--primary-gradient"),i.classList.remove("has-gradient"));else if(n.startsWith("#")){const h=x=>{x=x.replace("#","");const f=parseInt(x.substring(0,2),16)/255,j=parseInt(x.substring(2,4),16)/255,p=parseInt(x.substring(4,6),16)/255,w=Math.max(f,j,p),v=Math.min(f,j,p);let y=0,S=0;const C=(w+v)/2;if(w!==v){const M=w-v;switch(S=C>.5?M/(2-w-v):M/(w+v),w){case f:y=((j-p)/M+(jlocalStorage.getItem("accent-color")||"blue");u.useEffect(()=>{const w=localStorage.getItem("accent-color")||"blue";tp(w)},[]);const p=w=>{j(w),localStorage.setItem("accent-color",w),tp(w)};return e.jsxs("div",{className:"space-y-6 sm:space-y-8",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题模式"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 sm:gap-4",children:[e.jsx(Eu,{value:"light",current:n,onChange:i,label:"浅色",description:"始终使用浅色主题"}),e.jsx(Eu,{value:"dark",current:n,onChange:i,label:"深色",description:"始终使用深色主题"}),e.jsx(Eu,{value:"system",current:n,onChange:i,label:"跟随系统",description:"根据系统设置自动切换"})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"主题色"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"单色"}),e.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[e.jsx(xa,{value:"blue",current:f,onChange:p,label:"蓝色",colorClass:"bg-blue-500"}),e.jsx(xa,{value:"purple",current:f,onChange:p,label:"紫色",colorClass:"bg-purple-500"}),e.jsx(xa,{value:"green",current:f,onChange:p,label:"绿色",colorClass:"bg-green-500"}),e.jsx(xa,{value:"orange",current:f,onChange:p,label:"橙色",colorClass:"bg-orange-500"}),e.jsx(xa,{value:"pink",current:f,onChange:p,label:"粉色",colorClass:"bg-pink-500"}),e.jsx(xa,{value:"red",current:f,onChange:p,label:"红色",colorClass:"bg-red-500"})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"渐变色"}),e.jsxs("div",{className:"grid grid-cols-3 sm:grid-cols-6 gap-2 sm:gap-3",children:[e.jsx(xa,{value:"gradient-sunset",current:f,onChange:p,label:"日落",colorClass:"bg-gradient-to-r from-orange-500 to-pink-500"}),e.jsx(xa,{value:"gradient-ocean",current:f,onChange:p,label:"海洋",colorClass:"bg-gradient-to-r from-blue-500 to-cyan-500"}),e.jsx(xa,{value:"gradient-forest",current:f,onChange:p,label:"森林",colorClass:"bg-gradient-to-r from-green-500 to-emerald-500"}),e.jsx(xa,{value:"gradient-aurora",current:f,onChange:p,label:"极光",colorClass:"bg-gradient-to-r from-purple-500 to-pink-500"}),e.jsx(xa,{value:"gradient-fire",current:f,onChange:p,label:"烈焰",colorClass:"bg-gradient-to-r from-red-500 to-orange-500"}),e.jsx(xa,{value:"gradient-twilight",current:f,onChange:p,label:"暮光",colorClass:"bg-gradient-to-r from-indigo-500 to-purple-500"})]})]}),e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs sm:text-sm font-medium mb-2 sm:mb-3",children:"自定义颜色"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-3 sm:gap-4",children:[e.jsx("div",{className:"flex-1",children:e.jsx("input",{type:"color",value:f.startsWith("#")?f:"#3b82f6",onChange:w=>p(w.target.value),className:"h-10 sm:h-12 w-full rounded-lg border-2 border-border cursor-pointer",title:"选择自定义颜色"})}),e.jsx("div",{className:"flex-1",children:e.jsx(oe,{type:"text",value:f,onChange:w=>p(w.target.value),placeholder:"#3b82f6",className:"font-mono text-sm"})})]}),e.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground mt-2",children:"点击色块选择颜色,或手动输入 HEX 颜色代码"})]})]})]}),e.jsxs("div",{children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"动画效果"}),e.jsxs("div",{className:"space-y-2 sm:space-y-3",children:[e.jsx("div",{className:"rounded-lg border bg-card p-3 sm:p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5 flex-1",children:[e.jsx(b,{htmlFor:"animations",className:"text-base font-medium cursor-pointer",children:"启用动画效果"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后将禁用所有过渡动画和特效,提升性能"})]}),e.jsx(Xe,{id:"animations",checked:c,onCheckedChange:d})]})}),e.jsx("div",{className:"rounded-lg border bg-card p-4",children:e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"space-y-0.5 flex-1",children:[e.jsx(b,{htmlFor:"waves-background",className:"text-base font-medium cursor-pointer",children:"登录页波浪背景"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"关闭后登录页将使用纯色背景,适合低性能设备"})]}),e.jsx(Xe,{id:"waves-background",checked:h,onCheckedChange:x})]})})]})]})]})}function e0(){const n=ga(),[i,c]=u.useState(""),[d,h]=u.useState(""),[x,f]=u.useState(!1),[j,p]=u.useState(!1),[w,v]=u.useState(!1),[y,S]=u.useState(!1),[C,M]=u.useState(!1),[F,U]=u.useState(!1),[O,K]=u.useState(""),[H,A]=u.useState(!1),{toast:V}=Gs(),Q=u.useMemo(()=>qy(d),[d]),T=async ge=>{if(!i){V({title:"无法复制",description:"Token 存储在安全 Cookie 中,请重新生成以获取新 Token",variant:"destructive"});return}try{await navigator.clipboard.writeText(ge),M(!0),V({title:"复制成功",description:"Token 已复制到剪贴板"}),setTimeout(()=>M(!1),2e3)}catch{V({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},D=async()=>{if(!d.trim()){V({title:"输入错误",description:"请输入新的 Token",variant:"destructive"});return}if(!Q.isValid){const ge=Q.rules.filter(ye=>!ye.passed).map(ye=>ye.label).join(", ");V({title:"格式错误",description:`Token 不符合要求: ${ge}`,variant:"destructive"});return}v(!0);try{const ge=await fetch("/api/webui/auth/update",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include",body:JSON.stringify({new_token:d.trim()})}),ye=await ge.json();ge.ok&&ye.success?(h(""),c(d.trim()),V({title:"更新成功",description:"Access Token 已更新,即将跳转到登录页"}),setTimeout(()=>{n({to:"/auth"})},1500)):V({title:"更新失败",description:ye.message||"无法更新 Token",variant:"destructive"})}catch(ge){console.error("更新 Token 错误:",ge),V({title:"更新失败",description:"连接服务器失败",variant:"destructive"})}finally{v(!1)}},ne=async()=>{S(!0);try{const ge=await fetch("/api/webui/auth/regenerate",{method:"POST",headers:{"Content-Type":"application/json"},credentials:"include"}),ye=await ge.json();ge.ok&&ye.success?(c(ye.token),K(ye.token),U(!0),A(!1),V({title:"生成成功",description:"新的 Access Token 已生成,请及时保存"})):V({title:"生成失败",description:ye.message||"无法生成新 Token",variant:"destructive"})}catch(ge){console.error("生成 Token 错误:",ge),V({title:"生成失败",description:"连接服务器失败",variant:"destructive"})}finally{S(!1)}},xe=async()=>{try{await navigator.clipboard.writeText(O),A(!0),V({title:"复制成功",description:"Token 已复制到剪贴板"})}catch{V({title:"复制失败",description:"请手动复制 Token",variant:"destructive"})}},_e=()=>{U(!1),setTimeout(()=>{K(""),A(!1)},300),setTimeout(()=>{n({to:"/auth"})},500)},Se=ge=>{ge||_e()};return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsx($s,{open:F,onOpenChange:Se,children:e.jsxs(Bs,{className:"sm:max-w-md",children:[e.jsxs(Hs,{children:[e.jsxs(qs,{className:"flex items-center gap-2",children:[e.jsx(ya,{className:"h-5 w-5 text-yellow-500"}),"新的 Access Token"]}),e.jsx(Is,{children:"这是您的新 Token,请立即保存。关闭此窗口后将跳转到登录页面。"})]}),e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"rounded-lg border-2 border-primary/20 bg-primary/5 p-4",children:[e.jsx(b,{className:"text-xs text-muted-foreground mb-2 block",children:"您的新 Token (64位安全令牌)"}),e.jsx("div",{className:"font-mono text-sm break-all select-all bg-background p-3 rounded border",children:O})]}),e.jsx("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3",children:e.jsxs("div",{className:"flex gap-2",children:[e.jsx(ya,{className:"h-4 w-4 text-yellow-600 dark:text-yellow-500 flex-shrink-0 mt-0.5"}),e.jsxs("div",{className:"text-sm text-yellow-800 dark:text-yellow-300 space-y-1",children:[e.jsx("p",{className:"font-semibold",children:"重要提示"}),e.jsxs("ul",{className:"list-disc list-inside space-y-0.5 text-xs",children:[e.jsx("li",{children:"此 Token 仅显示一次,关闭后无法再查看"}),e.jsx("li",{children:"请立即复制并保存到安全的位置"}),e.jsx("li",{children:"关闭窗口后将自动跳转到登录页面"}),e.jsx("li",{children:"请使用新 Token 重新登录系统"})]})]})]})})]}),e.jsxs(at,{className:"gap-2 sm:gap-0",children:[e.jsx(N,{variant:"outline",onClick:xe,className:"gap-2",children:H?e.jsxs(e.Fragment,{children:[e.jsx(sa,{className:"h-4 w-4 text-green-500"}),"已复制"]}):e.jsxs(e.Fragment,{children:[e.jsx(Pc,{className:"h-4 w-4"}),"复制 Token"]})}),e.jsx(N,{onClick:_e,children:"我已保存,关闭"})]})]})}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"当前 Access Token"}),e.jsx("div",{className:"space-y-3 sm:space-y-4",children:e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"current-token",className:"text-sm",children:"您的访问令牌"}),e.jsxs("div",{className:"flex flex-col sm:flex-row gap-2",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(oe,{id:"current-token",type:x?"text":"password",value:i||"••••••••••••••••••••••••••••••••",readOnly:!0,className:"pr-10 font-mono text-sm",placeholder:"Token 存储在安全 Cookie 中"}),e.jsx("button",{onClick:()=>{i?f(!x):V({title:"无法查看",description:'Token 存储在安全 Cookie 中,如需新 Token 请点击"重新生成"'})},className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:x?"隐藏":"显示",children:x?e.jsx(xr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Dt,{className:"h-4 w-4 text-muted-foreground"})})]}),e.jsxs("div",{className:"flex gap-2 w-full sm:w-auto",children:[e.jsx(N,{variant:"outline",size:"icon",onClick:()=>T(i),title:"复制到剪贴板",className:"flex-shrink-0",disabled:!i,children:C?e.jsx(sa,{className:"h-4 w-4 text-green-500"}):e.jsx(Pc,{className:"h-4 w-4"})}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsxs(N,{variant:"outline",disabled:y,className:"gap-2 flex-1 sm:flex-none",children:[e.jsx(Ct,{className:$("h-4 w-4",y&&"animate-spin")}),e.jsx("span",{className:"hidden sm:inline",children:"重新生成"}),e.jsx("span",{className:"sm:hidden",children:"生成"})]})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认重新生成 Token"}),e.jsx(ds,{children:"这将生成一个新的 64 位安全令牌,并使当前 Token 立即失效。 您需要使用新 Token 重新登录系统。此操作不可撤销,确定要继续吗?"})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:ne,children:"确认生成"})]})]})]})]})]}),e.jsx("p",{className:"text-[10px] sm:text-xs text-muted-foreground",children:"请妥善保管您的 Access Token,不要泄露给他人"})]})})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"自定义 Access Token"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx(b,{htmlFor:"new-token",className:"text-sm",children:"新的访问令牌"}),e.jsxs("div",{className:"relative",children:[e.jsx(oe,{id:"new-token",type:j?"text":"password",value:d,onChange:ge=>h(ge.target.value),className:"pr-10 font-mono text-sm",placeholder:"输入自定义 Token"}),e.jsx("button",{onClick:()=>p(!j),className:"absolute right-2 top-1/2 -translate-y-1/2 p-1.5 hover:bg-accent rounded",title:j?"隐藏":"显示",children:j?e.jsx(xr,{className:"h-4 w-4 text-muted-foreground"}):e.jsx(Dt,{className:"h-4 w-4 text-muted-foreground"})})]}),d&&e.jsxs("div",{className:"mt-3 space-y-2 p-3 rounded-lg bg-muted/50",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"Token 安全要求:"}),e.jsx("div",{className:"space-y-1.5",children:Q.rules.map(ge=>e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[ge.passed?e.jsx(fa,{className:"h-4 w-4 text-green-500 flex-shrink-0"}):e.jsx(ng,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),e.jsx("span",{className:$(ge.passed?"text-green-600 dark:text-green-400":"text-muted-foreground"),children:ge.label})]},ge.id))}),Q.isValid&&e.jsx("div",{className:"mt-2 pt-2 border-t border-border",children:e.jsxs("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[e.jsx(sa,{className:"h-4 w-4"}),e.jsx("span",{className:"font-medium",children:"Token 格式正确,可以使用"})]})})]})]}),e.jsx(N,{onClick:D,disabled:w||!Q.isValid||!d,className:"w-full sm:w-auto",children:w?"更新中...":"更新自定义 Token"})]})]}),e.jsxs("div",{className:"rounded-lg border border-yellow-200 dark:border-yellow-900 bg-yellow-50 dark:bg-yellow-950/30 p-3 sm:p-4",children:[e.jsx("h4",{className:"text-sm sm:text-base font-semibold text-yellow-900 dark:text-yellow-200 mb-2",children:"安全提示"}),e.jsxs("ul",{className:"text-xs sm:text-sm text-yellow-800 dark:text-yellow-300 space-y-1 list-disc list-inside",children:[e.jsx("li",{children:"重新生成 Token 会创建系统随机生成的 64 位安全令牌"}),e.jsx("li",{children:"自定义 Token 必须满足所有安全要求才能使用"}),e.jsx("li",{children:"更新 Token 后,旧的 Token 将立即失效"}),e.jsx("li",{children:"请在安全的环境下查看和复制 Token"}),e.jsx("li",{children:"如果怀疑 Token 泄露,请立即重新生成或更新"}),e.jsx("li",{children:"建议使用系统生成的 Token 以获得最高安全性"})]})]})]})}function s0(){const n=ga(),{toast:i}=Gs(),[c,d]=u.useState(!1),[h,x]=u.useState(!1),[f,j]=u.useState(()=>st("logCacheSize")),[p,w]=u.useState(()=>st("wsReconnectInterval")),[v,y]=u.useState(()=>st("wsMaxReconnectAttempts")),[S,C]=u.useState(()=>st("dataSyncInterval")),[M,F]=u.useState(()=>sp()),[U,O]=u.useState(!1),[K,H]=u.useState(!1),A=u.useRef(null);if(h)throw new Error("这是一个手动触发的测试错误,用于验证错误边界组件是否正常工作。");const V=()=>{F(sp())},Q=z=>{const X=z[0];j(X),ai("logCacheSize",X)},T=z=>{const X=z[0];w(X),ai("wsReconnectInterval",X)},D=z=>{const X=z[0];y(X),ai("wsMaxReconnectAttempts",X)},ne=z=>{const X=z[0];C(X),ai("dataSyncInterval",X)},xe=()=>{rn.clearLogs(),i({title:"日志已清除",description:"日志缓存已清空"})},_e=()=>{const z=Xy();V(),i({title:"缓存已清除",description:`已清除 ${z.clearedKeys.length} 项缓存数据`})},Se=()=>{O(!0);try{const z=$y(),X=JSON.stringify(z,null,2),k=new Blob([X],{type:"application/json"}),se=URL.createObjectURL(k),_=document.createElement("a");_.href=se,_.download=`maibot-webui-settings-${new Date().toISOString().slice(0,10)}.json`,document.body.appendChild(_),_.click(),document.body.removeChild(_),URL.revokeObjectURL(se),i({title:"导出成功",description:"设置已导出为 JSON 文件"})}catch(z){console.error("导出设置失败:",z),i({title:"导出失败",description:"无法导出设置",variant:"destructive"})}finally{O(!1)}},ge=z=>{const X=z.target.files?.[0];if(!X)return;H(!0);const k=new FileReader;k.onload=se=>{try{const _=se.target?.result,ue=JSON.parse(_),ie=Qy(ue);ie.success?(j(st("logCacheSize")),w(st("wsReconnectInterval")),y(st("wsMaxReconnectAttempts")),C(st("dataSyncInterval")),V(),i({title:"导入成功",description:`成功导入 ${ie.imported.length} 项设置${ie.skipped.length>0?`,跳过 ${ie.skipped.length} 项`:""}`}),(ie.imported.includes("theme")||ie.imported.includes("accentColor"))&&i({title:"提示",description:"部分设置需要刷新页面才能完全生效"})):i({title:"导入失败",description:"没有有效的设置项可导入",variant:"destructive"})}catch(_){console.error("导入设置失败:",_),i({title:"导入失败",description:"文件格式无效",variant:"destructive"})}finally{H(!1),A.current&&(A.current.value="")}},k.readAsText(X)},ye=()=>{Yy(),j(Aa.logCacheSize),w(Aa.wsReconnectInterval),y(Aa.wsMaxReconnectAttempts),C(Aa.dataSyncInterval),V(),i({title:"已重置",description:"所有设置已恢复为默认值,刷新页面以应用更改"})},be=async()=>{d(!0);try{const z=localStorage.getItem("access-token"),X=await fetch("/api/webui/setup/reset",{method:"POST",headers:{Authorization:`Bearer ${z}`}}),k=await X.json();X.ok&&k.success?(i({title:"重置成功",description:"即将进入初次配置向导"}),setTimeout(()=>{n({to:"/setup"})},1e3)):i({title:"重置失败",description:k.message||"无法重置配置状态",variant:"destructive"})}catch(z){console.error("重置配置状态错误:",z),i({title:"重置失败",description:"连接服务器失败",variant:"destructive"})}finally{d(!1)}};return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(Ic,{className:"h-5 w-5"}),"性能与存储"]}),e.jsxs("div",{className:"space-y-4 sm:space-y-5",children:[e.jsxs("div",{className:"rounded-lg bg-muted/50 p-3 sm:p-4",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("span",{className:"text-sm font-medium flex items-center gap-2",children:[e.jsx(xb,{className:"h-4 w-4"}),"本地存储使用"]}),e.jsx(N,{variant:"ghost",size:"sm",onClick:V,className:"h-7 px-2",children:e.jsx(Ct,{className:"h-3 w-3"})})]}),e.jsx("div",{className:"text-2xl font-bold text-primary",children:Ky(M.used)}),e.jsxs("p",{className:"text-xs text-muted-foreground mt-1",children:[M.items," 个存储项"]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"日志缓存大小"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[f," 条"]})]}),e.jsx(Ma,{value:[f],onValueChange:Q,min:100,max:5e3,step:100,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"控制日志查看器最多缓存的日志条数,较大的值会占用更多内存"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"首页数据刷新间隔"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[S," 秒"]})]}),e.jsx(Ma,{value:[S],onValueChange:ne,min:10,max:120,step:5,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"控制首页统计数据的自动刷新间隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"WebSocket 重连间隔"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[p/1e3," 秒"]})]}),e.jsx(Ma,{value:[p],onValueChange:T,min:1e3,max:1e4,step:500,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"日志 WebSocket 连接断开后的重连基础间隔"})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsx(b,{className:"text-sm font-medium",children:"WebSocket 最大重连次数"}),e.jsxs("span",{className:"text-sm text-muted-foreground",children:[v," 次"]})]}),e.jsx(Ma,{value:[v],onValueChange:D,min:3,max:30,step:1,className:"w-full"}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"连接失败后的最大重连尝试次数"})]}),e.jsxs("div",{className:"flex flex-wrap gap-2 pt-2",children:[e.jsxs(N,{variant:"outline",size:"sm",onClick:xe,className:"gap-2",children:[e.jsx(ls,{className:"h-4 w-4"}),"清除日志缓存"]}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",className:"gap-2",children:[e.jsx(ls,{className:"h-4 w-4"}),"清除本地缓存"]})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认清除本地缓存"}),e.jsx(ds,{children:"这将清除所有本地缓存的设置和数据(不包括登录凭证)。 您可能需要重新配置部分偏好设置。确定要继续吗?"})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:_e,children:"确认清除"})]})]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(rl,{className:"h-5 w-5"}),"导入/导出设置"]}),e.jsxs("div",{className:"space-y-4",children:[e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"导出当前的界面设置以便备份,或从之前导出的文件中恢复设置。"}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsxs(N,{variant:"outline",onClick:Se,disabled:U,className:"gap-2",children:[e.jsx(rl,{className:"h-4 w-4"}),U?"导出中...":"导出设置"]}),e.jsx("input",{ref:A,type:"file",accept:".json",onChange:ge,className:"hidden"}),e.jsxs(N,{variant:"outline",onClick:()=>A.current?.click(),disabled:K,className:"gap-2",children:[e.jsx(fr,{className:"h-4 w-4"}),K?"导入中...":"导入设置"]})]}),e.jsx("div",{className:"pt-2 border-t",children:e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsxs(N,{variant:"outline",size:"sm",className:"gap-2 text-destructive hover:text-destructive",children:[e.jsx(Zc,{className:"h-4 w-4"}),"重置所有设置为默认值"]})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认重置所有设置"}),e.jsx(ds,{children:"这将把所有界面设置恢复为默认值,包括主题、颜色、动画等偏好设置。 此操作不会影响您的登录状态。确定要继续吗?"})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:ye,children:"确认重置"})]})]})]})})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"配置向导"}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsx("div",{className:"space-y-2",children:e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"重新进行初次配置向导,可以帮助您重新设置系统的基础配置。"})}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsxs(N,{variant:"outline",disabled:c,className:"gap-2",children:[e.jsx(Zc,{className:$("h-4 w-4",c&&"animate-spin")}),"重新进行初次配置"]})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认重新配置"}),e.jsx(ds,{children:"这将带您重新进入初次配置向导。您可以重新设置系统的基础配置项。确定要继续吗?"})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:be,children:"确认重置"})]})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border border-dashed border-yellow-500/50 bg-yellow-500/5 p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4 flex items-center gap-2",children:[e.jsx(ya,{className:"h-5 w-5 text-yellow-500"}),"开发者工具"]}),e.jsxs("div",{className:"space-y-3 sm:space-y-4",children:[e.jsx("div",{className:"space-y-2",children:e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"以下功能仅供开发调试使用,可能会导致页面崩溃或异常。"})}),e.jsxs(ps,{children:[e.jsx(tt,{asChild:!0,children:e.jsxs(N,{variant:"destructive",className:"gap-2",children:[e.jsx(ya,{className:"h-4 w-4"}),"触发测试错误"]})}),e.jsxs(is,{children:[e.jsxs(rs,{children:[e.jsx(os,{children:"确认触发错误"}),e.jsx(ds,{children:"这将手动触发一个 React 错误,用于测试错误边界组件的显示效果。 页面将显示错误界面,您可以通过刷新页面或点击返回首页来恢复。"})]}),e.jsxs(cs,{children:[e.jsx(ms,{children:"取消"}),e.jsx(us,{onClick:()=>x(!0),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"确认触发"})]})]})]})]})]})]})}function t0(){return e.jsxs("div",{className:"space-y-4 sm:space-y-6",children:[e.jsx("div",{className:"rounded-lg border-2 border-primary/30 bg-gradient-to-r from-primary/5 to-primary/10 p-4 sm:p-6",children:e.jsxs("div",{className:"flex items-start gap-3 sm:gap-4",children:[e.jsx("div",{className:"flex-shrink-0 rounded-lg bg-primary/10 p-2 sm:p-3",children:e.jsx("svg",{className:"h-6 w-6 sm:h-8 sm:w-8 text-primary",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("h3",{className:"text-lg sm:text-xl font-bold text-foreground mb-2",children:"开源项目"}),e.jsx("p",{className:"text-sm sm:text-base text-muted-foreground mb-3",children:"本项目在 GitHub 开源,欢迎 Star ⭐ 支持!"}),e.jsxs("a",{href:"https://github.com/Mai-with-u/MaiBot-Dashboard",target:"_blank",rel:"noopener noreferrer",className:$("inline-flex items-center gap-2 px-4 py-2 rounded-lg","bg-primary text-primary-foreground font-medium text-sm","hover:bg-primary/90 transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"),children:[e.jsx("svg",{className:"h-4 w-4",fill:"currentColor",viewBox:"0 0 24 24","aria-hidden":"true",children:e.jsx("path",{fillRule:"evenodd",d:"M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",clipRule:"evenodd"})}),"前往 GitHub",e.jsx("svg",{className:"h-4 w-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"})})]})]})]})}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsxs("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:["关于 ",Yu]}),e.jsxs("div",{className:"space-y-2 text-xs sm:text-sm text-muted-foreground",children:[e.jsxs("p",{children:["版本: ",Qu]}),e.jsx("p",{children:"麦麦(MaiBot)的现代化 Web 管理界面"})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"作者"}),e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"MaiBot 核心"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"Mai-with-u"})]}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("p",{className:"text-sm font-medium",children:"WebUI"}),e.jsxs("p",{className:"text-xs sm:text-sm text-muted-foreground",children:["Mai-with-u ",e.jsx("a",{href:"https://github.com/DrSmoothl",target:"_blank",rel:"noopener noreferrer",className:"text-primary underline",children:"@MotricSeven"})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"技术栈"}),e.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3 text-xs sm:text-sm text-muted-foreground",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"前端框架"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"React 19.2.0"}),e.jsx("li",{children:"TypeScript 5.7.2"}),e.jsx("li",{children:"Vite 6.0.7"}),e.jsx("li",{children:"TanStack Router 1.94.2"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"UI 组件"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"shadcn/ui"}),e.jsx("li",{children:"Radix UI"}),e.jsx("li",{children:"Tailwind CSS 3.4.17"}),e.jsx("li",{children:"Lucide Icons"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"后端"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"Python 3.12+"}),e.jsx("li",{children:"FastAPI"}),e.jsx("li",{children:"Uvicorn"}),e.jsx("li",{children:"WebSocket"})]})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx("p",{className:"font-medium text-foreground",children:"构建工具"}),e.jsxs("ul",{className:"space-y-0.5 list-disc list-inside",children:[e.jsx("li",{children:"Bun / npm"}),e.jsx("li",{children:"ESLint 9.17.0"}),e.jsx("li",{children:"PostCSS"})]})]})]})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源库感谢"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground mb-3",children:"本项目使用了以下优秀的开源库,感谢他们的贡献:"}),e.jsx(ss,{className:"h-[300px] sm:h-[400px]",children:e.jsxs("div",{className:"space-y-4 pr-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"UI 框架与组件"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zs,{name:"React",description:"用户界面构建库",license:"MIT"}),e.jsx(Zs,{name:"shadcn/ui",description:"优雅的 React 组件库",license:"MIT"}),e.jsx(Zs,{name:"Radix UI",description:"无样式的可访问组件库",license:"MIT"}),e.jsx(Zs,{name:"Tailwind CSS",description:"实用优先的 CSS 框架",license:"MIT"}),e.jsx(Zs,{name:"Lucide React",description:"精美的图标库",license:"ISC"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"路由与状态管理"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zs,{name:"TanStack Router",description:"类型安全的路由库",license:"MIT"}),e.jsx(Zs,{name:"Zustand",description:"轻量级状态管理",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"表单处理"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zs,{name:"React Hook Form",description:"高性能表单库",license:"MIT"}),e.jsx(Zs,{name:"Zod",description:"TypeScript 优先的 schema 验证",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"工具库"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zs,{name:"clsx",description:"条件 className 构建工具",license:"MIT"}),e.jsx(Zs,{name:"tailwind-merge",description:"Tailwind 类名合并工具",license:"MIT"}),e.jsx(Zs,{name:"class-variance-authority",description:"组件变体管理",license:"Apache-2.0"}),e.jsx(Zs,{name:"date-fns",description:"现代化日期处理库",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"动画效果"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zs,{name:"Framer Motion",description:"React 动画库",license:"MIT"}),e.jsx(Zs,{name:"vaul",description:"抽屉组件动画",license:"MIT"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"后端框架"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zs,{name:"FastAPI",description:"现代化 Python Web 框架",license:"MIT"}),e.jsx(Zs,{name:"Uvicorn",description:"ASGI 服务器",license:"BSD-3-Clause"}),e.jsx(Zs,{name:"Pydantic",description:"数据验证库",license:"MIT"}),e.jsx(Zs,{name:"python-multipart",description:"文件上传支持",license:"Apache-2.0"})]})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"开发工具"}),e.jsxs("div",{className:"grid gap-2 text-xs sm:text-sm",children:[e.jsx(Zs,{name:"TypeScript",description:"JavaScript 的超集",license:"Apache-2.0"}),e.jsx(Zs,{name:"Vite",description:"下一代前端构建工具",license:"MIT"}),e.jsx(Zs,{name:"ESLint",description:"JavaScript 代码检查工具",license:"MIT"}),e.jsx(Zs,{name:"PostCSS",description:"CSS 转换工具",license:"MIT"})]})]})]})})]}),e.jsxs("div",{className:"rounded-lg border bg-card p-4 sm:p-6",children:[e.jsx("h3",{className:"text-base sm:text-lg font-semibold mb-3 sm:mb-4",children:"开源许可"}),e.jsxs("div",{className:"space-y-3",children:[e.jsx("div",{className:"rounded-lg bg-primary/5 border border-primary/20 p-3 sm:p-4",children:e.jsxs("div",{className:"flex items-start gap-2 sm:gap-3",children:[e.jsx("div",{className:"flex-shrink-0 mt-0.5",children:e.jsx("div",{className:"rounded-md bg-primary/10 px-2 py-1",children:e.jsx("span",{className:"text-xs sm:text-sm font-bold text-primary",children:"GPLv3"})})}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"text-sm sm:text-base font-semibold text-foreground mb-1",children:"MaiBot WebUI"}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目采用 GNU General Public License v3.0 开源许可证。 您可以自由地使用、修改和分发本软件,但必须保持相同的开源许可。"})]})]})}),e.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground",children:"本项目依赖的所有开源库均遵循各自的开源许可证(MIT、Apache-2.0、BSD 等)。 感谢所有开源贡献者的无私奉献。"})]})]})]})}function Zs({name:n,description:i,license:c}){return e.jsxs("div",{className:"flex items-start justify-between gap-2 rounded-lg border bg-muted/30 p-2.5 sm:p-3",children:[e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsx("p",{className:"font-medium text-foreground truncate",children:n}),e.jsx("p",{className:"text-muted-foreground text-xs mt-0.5",children:i})]}),e.jsx("span",{className:"inline-flex items-center rounded-full bg-primary/10 px-2 py-0.5 text-[10px] font-medium text-primary flex-shrink-0",children:c})]})}function Eu({value:n,current:i,onChange:c,label:d,description:h}){const x=i===n;return e.jsxs("button",{onClick:()=>c(n),className:$("relative rounded-lg border-2 p-3 sm:p-4 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",x?"border-primary bg-accent":"border-border"),children:[x&&e.jsx("div",{className:"absolute top-2 right-2 sm:top-3 sm:right-3 h-2 w-2 rounded-full bg-primary"}),e.jsxs("div",{className:"space-y-1",children:[e.jsx("div",{className:"text-sm sm:text-base font-medium",children:d}),e.jsx("div",{className:"text-[10px] sm:text-xs text-muted-foreground",children:h})]}),e.jsxs("div",{className:"mt-2 sm:mt-3 flex gap-1",children:[n==="light"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-200"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-300"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-400"})]}),n==="dark"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-700"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-800"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-slate-900"})]}),n==="system"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-200 to-slate-700"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-300 to-slate-800"}),e.jsx("div",{className:"h-2 w-2 rounded-full bg-gradient-to-r from-slate-400 to-slate-900"})]})]})]})}function xa({value:n,current:i,onChange:c,label:d,colorClass:h}){const x=i===n;return e.jsxs("button",{onClick:()=>c(n),className:$("relative rounded-lg border-2 p-2 sm:p-3 text-left transition-all","hover:border-primary/50 hover:bg-accent/50",x?"border-primary bg-accent":"border-border"),children:[x&&e.jsx("div",{className:"absolute top-1.5 right-1.5 sm:top-2 sm:right-2 h-1.5 w-1.5 sm:h-2 sm:w-2 rounded-full bg-primary"}),e.jsxs("div",{className:"flex flex-col items-center gap-1.5 sm:gap-2",children:[e.jsx("div",{className:$("h-8 w-8 sm:h-10 sm:w-10 rounded-full",h)}),e.jsx("div",{className:"text-[10px] sm:text-xs font-medium text-center",children:d})]})]})}class a0{grad3;p;perm;constructor(i=0){this.grad3=[[1,1,0],[-1,1,0],[1,-1,0],[-1,-1,0],[1,0,1],[-1,0,1],[1,0,-1],[-1,0,-1],[0,1,1],[0,-1,1],[0,1,-1],[0,-1,-1]],this.p=[];for(let c=0;c<256;c++)this.p[c]=Math.floor(Math.random()*256);this.perm=[];for(let c=0;c<512;c++)this.perm[c]=this.p[c&255]}dot(i,c,d){return i[0]*c+i[1]*d}mix(i,c,d){return(1-d)*i+d*c}fade(i){return i*i*i*(i*(i*6-15)+10)}perlin2(i,c){const d=Math.floor(i)&255,h=Math.floor(c)&255;i-=Math.floor(i),c-=Math.floor(c);const x=this.fade(i),f=this.fade(c),j=this.perm[d]+h,p=this.perm[j],w=this.perm[j+1],v=this.perm[d+1]+h,y=this.perm[v],S=this.perm[v+1];return this.mix(this.mix(this.dot(this.grad3[p%12],i,c),this.dot(this.grad3[y%12],i-1,c),x),this.mix(this.dot(this.grad3[w%12],i,c-1),this.dot(this.grad3[S%12],i-1,c-1),x),f)}}function ap(){const n=u.useRef(null),i=u.useRef(null),c=u.useRef(void 0),d=u.useRef({mouse:{x:-10,y:0,lx:0,ly:0,sx:0,sy:0,v:0,vs:0,a:0,set:!1},lines:[],paths:[],noise:new a0(Math.random()),bounding:null});return u.useEffect(()=>{const h=i.current,x=n.current;if(!h||!x)return;const f=d.current,j=()=>{const F=h.getBoundingClientRect();f.bounding=F,x.style.width=`${F.width}px`,x.style.height=`${F.height}px`},p=()=>{if(!f.bounding)return;const{width:F,height:U}=f.bounding;f.lines=[],f.paths.forEach(ne=>ne.remove()),f.paths=[];const O=10,K=32,H=F+200,A=U+30,V=Math.ceil(H/O),Q=Math.ceil(A/K),T=(F-O*V)/2,D=(U-K*Q)/2;for(let ne=0;ne<=V;ne++){const xe=[];for(let Se=0;Se<=Q;Se++){const ge={x:T+O*ne,y:D+K*Se,wave:{x:0,y:0},cursor:{x:0,y:0,vx:0,vy:0}};xe.push(ge)}const _e=document.createElementNS("http://www.w3.org/2000/svg","path");x.appendChild(_e),f.paths.push(_e),f.lines.push(xe)}},w=F=>{const{lines:U,mouse:O,noise:K}=f;U.forEach(H=>{H.forEach(A=>{const V=K.perlin2((A.x+F*.0125)*.002,(A.y+F*.005)*.0015)*12;A.wave.x=Math.cos(V)*32,A.wave.y=Math.sin(V)*16;const Q=A.x-O.sx,T=A.y-O.sy,D=Math.hypot(Q,T),ne=Math.max(175,O.vs);if(D{const O={x:F.x+F.wave.x+(U?F.cursor.x:0),y:F.y+F.wave.y+(U?F.cursor.y:0)};return O.x=Math.round(O.x*10)/10,O.y=Math.round(O.y*10)/10,O},y=()=>{const{lines:F,paths:U}=f;F.forEach((O,K)=>{let H=v(O[0],!1),A=`M ${H.x} ${H.y}`;O.forEach((V,Q)=>{const T=Q===O.length-1;H=v(V,!T),A+=`L ${H.x} ${H.y}`}),U[K].setAttribute("d",A)})},S=F=>{const{mouse:U}=f;U.sx+=(U.x-U.sx)*.1,U.sy+=(U.y-U.sy)*.1;const O=U.x-U.lx,K=U.y-U.ly,H=Math.hypot(O,K);U.v=H,U.vs+=(H-U.vs)*.1,U.vs=Math.min(100,U.vs),U.lx=U.x,U.ly=U.y,U.a=Math.atan2(K,O),h&&(h.style.setProperty("--x",`${U.sx}px`),h.style.setProperty("--y",`${U.sy}px`)),w(F),y(),c.current=requestAnimationFrame(S)},C=F=>{if(!f.bounding)return;const{mouse:U}=f;U.x=F.pageX-f.bounding.left,U.y=F.pageY-f.bounding.top+window.scrollY,U.set||(U.sx=U.x,U.sy=U.y,U.lx=U.x,U.ly=U.y,U.set=!0)},M=()=>{j(),p()};return j(),p(),window.addEventListener("resize",M),window.addEventListener("mousemove",C),c.current=requestAnimationFrame(S),()=>{window.removeEventListener("resize",M),window.removeEventListener("mousemove",C),c.current&&cancelAnimationFrame(c.current)}},[]),e.jsxs("div",{ref:i,className:"waves-background",style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",overflow:"hidden",pointerEvents:"none"},children:[e.jsx("div",{className:"waves-cursor",style:{position:"absolute",top:0,left:0,width:"0.5rem",height:"0.5rem",background:"hsl(var(--primary) / 0.3)",borderRadius:"50%",transform:"translate3d(calc(var(--x, -0.5rem) - 50%), calc(var(--y, 50%) - 50%), 0)",willChange:"transform",pointerEvents:"none"}}),e.jsx("svg",{ref:n,style:{display:"block",width:"100%",height:"100%"},children:e.jsx("style",{children:` path { fill: none; stroke: hsl(var(--primary) / 0.20); diff --git a/webui/dist/index.html b/webui/dist/index.html index 6aa56064..66ce72c0 100644 --- a/webui/dist/index.html +++ b/webui/dist/index.html @@ -7,7 +7,7 @@ MaiBot Dashboard - + From 43fcd93dffee25b5e50bde392fb7e6dc9aceac1d Mon Sep 17 00:00:00 2001 From: SengokuCola <1026294844@qq.com> Date: Tue, 2 Dec 2025 15:51:05 +0800 Subject: [PATCH 49/61] =?UTF-8?q?feat:=E6=9B=B4=E6=96=B0readme=E5=92=8C?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 11 ++++++++--- changelogs/changelog.md | 43 +++++++++++++++++++++++++++++++++++++---- 2 files changed, 47 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index de5b2e28..e7d45287 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ ## 🔥 更新和安装 -**最新版本: v0.11.5** ([更新日志](changelogs/changelog.md)) +**最新版本: v0.11.6** ([更新日志](changelogs/changelog.md)) 可前往 [Release](https://github.com/MaiM-with-u/MaiBot/releases/) 页面下载最新版本 @@ -71,16 +71,21 @@ **技术交流群:** [麦麦脑电图](https://qm.qq.com/q/RzmCiRtHEW) | - [麦麦脑磁图](https://qm.qq.com/q/wlH5eT8OmQ) | [麦麦大脑磁共振](https://qm.qq.com/q/VQ3XZrWgMs) | - [麦麦要当VTB](https://qm.qq.com/q/wGePTl1UyY) + [麦麦要当VTB](https://qm.qq.com/q/wGePTl1UyY) | + + 为了维持技术交流和互帮互助的氛围,请不要在技术交流群讨论过多无关内容~ **聊天吹水群:** - [麦麦之闲聊群](https://qm.qq.com/q/JxvHZnxyec) + 麦麦相关闲聊群 + **插件开发/测试版讨论群:** - [插件开发群](https://qm.qq.com/q/1036092828) + 进阶内容,包括插件开发,测试版使用等等 + ## 📚 文档 **部分内容可能更新不够及时,请注意版本对应** diff --git a/changelogs/changelog.md b/changelogs/changelog.md index 5f2c733f..c12e726b 100644 --- a/changelogs/changelog.md +++ b/changelogs/changelog.md @@ -1,17 +1,52 @@ # Changelog -## [0.11.5] - 2025-11-26 -### 主要功能更改 - - +## [0.11.6] - 2025-12-2 +### 🌟 重大更新 +- 大幅提高记忆检索能力,略微提高token消耗 +- 重构历史消息概括器,更好的主题记忆 +- 日志查看器性能革命性优化 +- 支持可视化查看麦麦LPMM知识图谱 +- 支持根据不同的模型提供商/模板/URL自动获取模型,可以不用手动输入模型了 +- 新增Baka引导系统,使用React-JoyTour实现很棒的用户引导系统(让Baka也能看懂!) +- 本地聊天室功能!!你可以直接在WebUI网页和麦麦聊天!! +- 使用cookie模式替换原有的LocalStorage Token存储,可能需要重新手动输入一遍Token +- WebUI本地聊天室支持用户模拟和平台模拟的功能! +- WebUI新增黑话管理 & 编辑界面 ### 细节功能更改 +- 可选记忆识别中是否启用jargon - 解耦表情包识别和图片识别 - 修复部分破损json的解析问题 - 黑话更高的提取效率,增加提取准确性 - 升级jargon,更快更精准 - 新增Lpmm可视化 +### webui细节更新 +- 修复侧边栏收起、UI及表格横向滚动等问题,优化Toast动画 +- 修复适配器配置、插件克隆、表情包注册等相关BUG +- 新增适配器/模型预设模式及模板,自动填写URL和类型 +- 支持模型任务列表拖拽排序 +- 更新重启弹窗和首次引导内容 +- 多处界面命名及标题优化,如模型配置相关菜单重命名和描述更新 +- 修复聊天配置“提及回复”相关开关命名错误 +- 调试配置新增“显示记忆/Planner/LPMM Prompt”选项 +- 新增卡片尺寸、排序、字号、行间距等个性化功能 +- 聊天ID及群聊选择优化,显示可读名称 +- 聊天编辑界面精简字段,新增后端聊天列表API支持 +- 默认行间距减小,显示更紧凑 +- 修复页面滚动、表情包排序、发言频率为0等问题 +- 新增React异常Traceback界面及模型列表搜索 +- 更新WebUI Icon,修复适配器docker路径等问题 +- 插件配置可视化编辑,表单控件/元数据/布局类型扩展 +- 新增插件API与开发文档 +- 新增机器人状态卡片和快速操作按钮 +- 调整饼图显示、颜色算法,修复部分统计及解析错误 +- 新增缓存、WebSocket配置 +- 表情包支持上传和缩略图 +- 修复首页极端加载、重启后CtrlC失效、主程序配置移动端适配等问题 +- 新增表达反思设置和WebUI聊天室“思考中”占位组件 +- 细节如移除部分字段或UI控件、优化按钮/弹窗/编辑逻辑等 + ## [0.11.5] - 2025-11-21 ### 🌟 重大更新 - WebUI 现支持手动重启麦麦,曲线救国版“热重载” From 34129bafad478156b8c3e6d94e47d879db97cb25 Mon Sep 17 00:00:00 2001 From: SengokuCola <1026294844@qq.com> Date: Tue, 2 Dec 2025 16:04:18 +0800 Subject: [PATCH 50/61] fix:ruff --- src/memory_system/retrieval_tools/found_answer.py | 1 - src/webui/expression_routes.py | 1 - src/webui/jargon_routes.py | 14 +++++++------- src/webui/person_routes.py | 1 - src/webui/routers/system.py | 1 - 5 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/memory_system/retrieval_tools/found_answer.py b/src/memory_system/retrieval_tools/found_answer.py index cef71940..0efd02be 100644 --- a/src/memory_system/retrieval_tools/found_answer.py +++ b/src/memory_system/retrieval_tools/found_answer.py @@ -2,7 +2,6 @@ found_answer工具 - 用于在记忆检索过程中标记找到答案 """ -from typing import Dict, Any from src.common.logger import get_logger from .tool_registry import register_memory_retrieval_tool diff --git a/src/webui/expression_routes.py b/src/webui/expression_routes.py index f92219ab..bef93b30 100644 --- a/src/webui/expression_routes.py +++ b/src/webui/expression_routes.py @@ -5,7 +5,6 @@ from pydantic import BaseModel from typing import Optional, List, Dict from src.common.logger import get_logger from src.common.database.database_model import Expression, ChatStreams -from .token_manager import get_token_manager from .auth import verify_auth_token_from_cookie_or_header import time diff --git a/src/webui/jargon_routes.py b/src/webui/jargon_routes.py index 51012267..318912e8 100644 --- a/src/webui/jargon_routes.py +++ b/src/webui/jargon_routes.py @@ -1,7 +1,7 @@ """黑话(俚语)管理路由""" import json -from typing import Optional, List +from typing import Optional, List, Annotated from fastapi import APIRouter, HTTPException, Query from pydantic import BaseModel, Field from peewee import fn @@ -331,19 +331,19 @@ async def get_jargon_stats(): total = Jargon.select().count() # 已确认是黑话的数量 - confirmed_jargon = Jargon.select().where(Jargon.is_jargon == True).count() + confirmed_jargon = Jargon.select().where(Jargon.is_jargon).count() # 已确认不是黑话的数量 - confirmed_not_jargon = Jargon.select().where(Jargon.is_jargon == False).count() + confirmed_not_jargon = Jargon.select().where(~Jargon.is_jargon).count() # 未判定的数量 pending = Jargon.select().where(Jargon.is_jargon.is_null()).count() # 全局黑话数量 - global_count = Jargon.select().where(Jargon.is_global == True).count() + global_count = Jargon.select().where(Jargon.is_global).count() # 已完成推断的数量 - complete_count = Jargon.select().where(Jargon.is_complete == True).count() + complete_count = Jargon.select().where(Jargon.is_complete).count() # 关联的聊天数量 chat_count = ( @@ -519,8 +519,8 @@ async def batch_delete_jargons(request: BatchDeleteRequest): @router.post("/batch/set-jargon", response_model=JargonUpdateResponse) async def batch_set_jargon_status( - ids: List[int] = Query(..., description="黑话ID列表"), - is_jargon: bool = Query(..., description="是否是黑话"), + ids: Annotated[List[int], Query(description="黑话ID列表")], + is_jargon: Annotated[bool, Query(description="是否是黑话")], ): """批量设置黑话状态""" try: diff --git a/src/webui/person_routes.py b/src/webui/person_routes.py index 0b70a3a2..5c039371 100644 --- a/src/webui/person_routes.py +++ b/src/webui/person_routes.py @@ -5,7 +5,6 @@ from pydantic import BaseModel from typing import Optional, List, Dict from src.common.logger import get_logger from src.common.database.database_model import PersonInfo -from .token_manager import get_token_manager from .auth import verify_auth_token_from_cookie_or_header import json import time diff --git a/src/webui/routers/system.py b/src/webui/routers/system.py index 7499c06d..d6932896 100644 --- a/src/webui/routers/system.py +++ b/src/webui/routers/system.py @@ -5,7 +5,6 @@ """ import os -import sys import time from datetime import datetime from fastapi import APIRouter, HTTPException From 49e9c856993549580dbfef6b16e548a918539973 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Tue, 2 Dec 2025 17:42:28 +0800 Subject: [PATCH 51/61] Change EULA_AGREE value in docker-compose.yml Updated EULA_AGREE value in docker-compose.yml --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 1161e7d5..217ae187 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -27,7 +27,7 @@ services: # image: infinitycat/maibot:dev environment: - TZ=Asia/Shanghai -# - EULA_AGREE=99f08e0cab0190de853cb6af7d64d4de # 同意EULA +# - EULA_AGREE=1b662741904d7155d1ce1c00b3530d0d # 同意EULA # - PRIVACY_AGREE=9943b855e72199d0f5016ea39052f1b6 # 同意EULA ports: - "18001:8001" # webui端口 From f6ed90a2e4f7ebafe9a01f8bedee2bd084bba59f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Wed, 3 Dec 2025 23:02:33 +0800 Subject: [PATCH 52/61] Revise README for clarity and additional notes Updated README to clarify group purposes and added notes about the launcher. --- README.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e7d45287..3ee493c2 100644 --- a/README.md +++ b/README.md @@ -50,12 +50,16 @@ 可前往 [Release](https://github.com/MaiM-with-u/MaiBot/releases/) 页面下载最新版本 + 可前往 [启动器发布页面](https://github.com/MaiM-with-u/mailauncher/releases/)下载最新启动器 + +注意,启动器处于早期开发版本,仅支持MacOS + **GitHub 分支说明:** - `main`: 稳定发布版本(推荐) - - `dev`: 开发测试版本(不稳定) + - `classical`: 经典版本(停止维护) ### 最新版本部署教程 @@ -69,7 +73,7 @@ ## 💬 讨论 -**技术交流群:** +**技术交流群/答疑群:** [麦麦脑电图](https://qm.qq.com/q/RzmCiRtHEW) | [麦麦大脑磁共振](https://qm.qq.com/q/VQ3XZrWgMs) | [麦麦要当VTB](https://qm.qq.com/q/wGePTl1UyY) | @@ -79,7 +83,7 @@ **聊天吹水群:** - [麦麦之闲聊群](https://qm.qq.com/q/JxvHZnxyec) - 麦麦相关闲聊群 + 麦麦相关闲聊群,此群仅用于聊天,提问部署/技术问题可能不会快速得到答案 **插件开发/测试版讨论群:** - [插件开发群](https://qm.qq.com/q/1036092828) From 251955f43bad510e9039cc714529235e8459e875 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A2=A8=E6=A2=93=E6=9F=92?= <1787882683@qq.com> Date: Wed, 3 Dec 2025 23:06:57 +0800 Subject: [PATCH 53/61] Update version and dependencies in pyproject.toml --- pyproject.toml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index fb613e19..489dc197 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "MaiBot" -version = "0.11.0" +version = "0.11.6" description = "MaiCore 是一个基于大语言模型的可交互智能体" requires-python = ">=3.10" dependencies = [ @@ -14,6 +14,7 @@ dependencies = [ "json-repair>=0.47.6", "maim-message", "matplotlib>=3.10.3", + "msgpack>=1.1.2", "numpy>=2.2.6", "openai>=1.95.0", "pandas>=2.3.1", @@ -23,6 +24,7 @@ dependencies = [ "pydantic>=2.11.7", "pypinyin>=0.54.0", "python-dotenv>=1.1.1", + "python-multipart>=0.0.20", "quick-algo>=0.1.3", "rich>=14.0.0", "ruff>=0.12.2", @@ -32,6 +34,7 @@ dependencies = [ "tomlkit>=0.13.3", "urllib3>=2.5.0", "uvicorn>=0.35.0", + "zstandard>=0.25.0", ] From bd22bbfb007fccce7f6fe9b28c29b80d555302ac Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 8 Dec 2025 03:56:07 +0000 Subject: [PATCH 54/61] Initial plan From cf4794ec3cbd6ed7148b02ac155edf22edc9eb53 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 8 Dec 2025 03:58:52 +0000 Subject: [PATCH 55/61] Split docker-image workflow into main and dev workflows Co-authored-by: infinitycat233 <103594839+infinitycat233@users.noreply.github.com> --- .github/workflows/docker-image-dev.yml | 159 ++++++++++++++++++ ...docker-image.yml => docker-image-main.yml} | 8 +- actionlint | Bin 0 -> 5644472 bytes 3 files changed, 161 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/docker-image-dev.yml rename .github/workflows/{docker-image.yml => docker-image-main.yml} (95%) create mode 100755 actionlint diff --git a/.github/workflows/docker-image-dev.yml b/.github/workflows/docker-image-dev.yml new file mode 100644 index 00000000..7dde18a1 --- /dev/null +++ b/.github/workflows/docker-image-dev.yml @@ -0,0 +1,159 @@ +name: Docker Build and Push (Dev) + +on: + schedule: + - cron: '0 0 * * *' + push: + branches: + - dev + workflow_dispatch: # 允许手动触发工作流 + +# Workflow's jobs +jobs: + build-amd64: + name: Build AMD64 Image + runs-on: ubuntu-24.04 + outputs: + digest: ${{ steps.build.outputs.digest }} + steps: + - name: Check out git repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + # Clone required dependencies + - name: Clone maim_message + run: git clone https://github.com/MaiM-with-u/maim_message maim_message + + - name: Clone lpmm + run: git clone https://github.com/MaiM-with-u/MaiMBot-LPMM.git MaiMBot-LPMM + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + buildkitd-flags: --debug + + # Log in docker hub + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + # Generate metadata for Docker images + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ secrets.DOCKERHUB_USERNAME }}/maibot + + # Build and push AMD64 image by digest + - name: Build and push AMD64 + id: build + uses: docker/build-push-action@v5 + with: + context: . + platforms: linux/amd64 + labels: ${{ steps.meta.outputs.labels }} + file: ./Dockerfile + cache-from: type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/maibot:amd64-buildcache + cache-to: type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/maibot:amd64-buildcache,mode=max + outputs: type=image,name=${{ secrets.DOCKERHUB_USERNAME }}/maibot,push-by-digest=true,name-canonical=true,push=true + build-args: | + BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') + VCS_REF=${{ github.sha }} + + build-arm64: + name: Build ARM64 Image + runs-on: ubuntu-24.04-arm + outputs: + digest: ${{ steps.build.outputs.digest }} + steps: + - name: Check out git repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + # Clone required dependencies + - name: Clone maim_message + run: git clone https://github.com/MaiM-with-u/maim_message maim_message + + - name: Clone lpmm + run: git clone https://github.com/MaiM-with-u/MaiMBot-LPMM.git MaiMBot-LPMM + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + with: + buildkitd-flags: --debug + + # Log in docker hub + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + # Generate metadata for Docker images + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ secrets.DOCKERHUB_USERNAME }}/maibot + + # Build and push ARM64 image by digest + - name: Build and push ARM64 + id: build + uses: docker/build-push-action@v5 + with: + context: . + platforms: linux/arm64/v8 + labels: ${{ steps.meta.outputs.labels }} + file: ./Dockerfile + cache-from: type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/maibot:arm64-buildcache + cache-to: type=registry,ref=${{ secrets.DOCKERHUB_USERNAME }}/maibot:arm64-buildcache,mode=max + outputs: type=image,name=${{ secrets.DOCKERHUB_USERNAME }}/maibot,push-by-digest=true,name-canonical=true,push=true + build-args: | + BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ') + VCS_REF=${{ github.sha }} + + create-manifest: + name: Create Multi-Arch Manifest + runs-on: ubuntu-24.04 + needs: + - build-amd64 + - build-arm64 + steps: + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + # Log in docker hub + - name: Log in to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + # Generate metadata for Docker images + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ secrets.DOCKERHUB_USERNAME }}/maibot + tags: | + type=ref,event=branch + type=ref,event=tag + type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }} + type=semver,pattern={{version}} + type=semver,pattern={{major}}.{{minor}} + type=semver,pattern={{major}} + type=sha,prefix=${{ github.ref_name }}-,enable=${{ github.ref_type == 'branch' }} + + - name: Create and Push Manifest + run: | + # 为每个标签创建多架构镜像 + for tag in $(echo "${{ steps.meta.outputs.tags }}" | tr '\n' ' '); do + echo "Creating manifest for $tag" + docker buildx imagetools create -t $tag \ + ${{ secrets.DOCKERHUB_USERNAME }}/maibot@${{ needs.build-amd64.outputs.digest }} \ + ${{ secrets.DOCKERHUB_USERNAME }}/maibot@${{ needs.build-arm64.outputs.digest }} + done diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image-main.yml similarity index 95% rename from .github/workflows/docker-image.yml rename to .github/workflows/docker-image-main.yml index 989888b2..e20c928a 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image-main.yml @@ -1,8 +1,6 @@ -name: Docker Build and Push +name: Docker Build and Push (Main) on: - schedule: - - cron: '0 0 * * *' push: branches: - main @@ -25,7 +23,6 @@ jobs: - name: Check out git repository uses: actions/checkout@v4 with: - ref: ${{ github.event_name == 'schedule' && 'dev' || github.ref }} fetch-depth: 0 # Clone required dependencies @@ -79,7 +76,6 @@ jobs: - name: Check out git repository uses: actions/checkout@v4 with: - ref: ${{ github.event_name == 'schedule' && 'dev' || github.ref }} fetch-depth: 0 # Clone required dependencies @@ -164,4 +160,4 @@ jobs: docker buildx imagetools create -t $tag \ ${{ secrets.DOCKERHUB_USERNAME }}/maibot@${{ needs.build-amd64.outputs.digest }} \ ${{ secrets.DOCKERHUB_USERNAME }}/maibot@${{ needs.build-arm64.outputs.digest }} - done \ No newline at end of file + done diff --git a/actionlint b/actionlint new file mode 100755 index 0000000000000000000000000000000000000000..0c0646fa39baca99377d5321c67c0d69ab69c0f1 GIT binary patch literal 5644472 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

ar`DWS(DmhCOc75^SCj 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

wo#ACrch^nKn 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

&jhZCQLG$Bx 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

U5`9j1KCB&$)g{bcg(7yl6Xb{Q}KG5Pl5(*LA< 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

请求类型调用次数输入Token输出TokenToken总量累计花费平均耗时(秒)标准差(秒)
请求类型调用次数输入Token输出TokenToken总量累计花费平均耗时(秒)标准差(秒)每次回复平均调用次数每次回复平均Token数
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

7j!~6Ks z>>TGe#rWJLN+Nn60A;2g`Y10q8z>LGa%1tEd|Ko*#0v#!t6|zHiDM*6RNwCEi3lD( zcdB9lk*SKmpJ%F~^k2JLtBzHuDQ1jL`+cgiKpjS+*mL;8-MjbM{nsZA_$(u_lG$1u zYI}riSB77131#d((E2VjD|TP1_ojLxV~;+kW}*v!8oJ>Ho!gM@`)nS59=hS@_Hd*W zW3U+(jHtQ4$}`U$m>VcKX>WyRYn%Z#LWKIlHa zZE);z!St3WmaIpg&5r*7JB$)j#~h08GL(3aouOeD;IGZcpL?0<>)p=s#%nnN)_9q1 zbVf18i}VRTZmZQYL)N6OmVIwBtXBP6thL_s+l?2<53&rSTWm5z_`1sLZ6Mz)7*k^_ zuOGSb@d|_YDZe+5TC!Pjit6^}{C~{7d3;n=);3Cjf-uAiG6gUaFh~&8fTD?tR4_mV zDjEhg0@^r$(MCZ?kszprl?bsoc2w*}rC-su6=&L}5e;er2mw?kMFt0)Pgy9aEmM@- z=UIE7Q>Tgq^xpS=zb}8Js?OQtn)ljkul+aGfk!&j9Za@5z9@#EO_Ex zn*TiXcsC&-WE(6kY67o{;ks#62O!vk`0)$Bs}Bx3-|$%c&2o$tRVv;W8d78)Dj`?m zR%XV)4}tRon_M7dUdN)D(<{ZxyB&>qNYuJ2bDx|Ji=H**h+OiOX9YV`h2KO&UK9 z*XS&rzSL_hkax25@m3r&*NkEwMs3H)>K)<35@vuE_?e%_3#s-C03a=-Ol*S23Moj{ zZIG)6Inu+NIL>gxf&niop4$P^wg}8-$mMcsTY`S2idEQZVwEKIo2h85ym^D7@*V<`nFb3hm9n zA}9J52}4W6|HD>8seL|2#Cs^|EcqDJS3WfRqeeqW;J#LSH!2g@@A5E`vuO=%xB)Z` zSkNTA2}4pA!DntJEwYWr8fgPwd@hAhZ?BB?cr)$YN^Pb+z$O6m40Zr{l1L(i+4jON z;w!bo-D0+N#D{r!k8<4K*<7_PRa8J2hs>I`t=Qas-#u)}C{X9qp*39Y`<8GtFd^OL z&1K}eThItAn}5T)!<>FDI>vx1Wgu7@%csi723kj1C8HLIj53?u4Z6ofr^)zf`Ee{# z8AVyy-JSN!?5UiOg`a4GH)qN40M5*?Ts3h$J$e^83@2tZq?+I}8slT$c`*Wf@H&~V z5lhxmvRm;Yv;_*dp$d70^^grLC^CHKWAguZgpT3rzX!(Rl>RUl(OLi#z^skb(F<`` z4>oOu3S!rFZ z@6WI}5}0*_IQ3QBlI*Lv9^oNRixGnFX*TGBrEtJzVL&5#!$&Y_PdrPFX5T!^c0;Mz zTe`!Ut{cJDdUwEcb(Tux>mz-6_-EDo3N z%~rUqMRP*+_;ld%WskyT3ST#j%S5Sp94=XdxP&D|Tu$1>+et`&kDnWd(76ve5GvyU zLfNXhtRx(9R-R z_h=?MRst|)AxFmxiu@%oOPQ%8Z;Y6gBa3_7(Fafij!r2!6VJxWp(h2 zNBYOE5|LvC>KdCTC-`Ex7DvRfSl$K{mV9tOA~#l>84SiSTyxc{JNfFDUub2fp3?zq zVLr`d-y%1 zQ-?Q%jc{txs8*Wh_2MvAJy7J!2mm&Y!0O?Mxu-YzQ>{i$3{)En+&PE`F5zSWmv=Jd z)o*Z9KIUh?=Qc9n{%6)DvIyr+mf_r&;S&iqi<1Sc(*b~_w(|i1u!RBu@&nGkgX2?( z;N?u--n^8ru z3DX$3%6wIFrzLEBG$l4ZJ{ceP>5SXBFe>6>DDEN|`>OPb?6KlUwH`7CE;Mo1)GHm7 zPncy9%9j=#blN>0#fQ_A%^z}0MRf2knIG25rRJt0t%xLxKWz(6v64`?sZ{S4 zXc3?;t70U=S4b*=SY&k_RenX+;Go6Qa$0`q)jA%lg0~$29~E6 z;FAfypCFtNJjHwlM=Ywj?i*0etW)Eu=9@VJ4@l}{v+8C|H6!Ue0KQd|WL0(v`KQ{Z zN@Cx672Be-Qp2!j#}yM`SV~wbYn5z}$C%Ul4U%!9Vr(0b+s)EF4zYE>vF6=owu}H2 zHwHH_Bc1dmZLn+36lrupd=vI^1JH0i{Iw{8IWEZYmIo-u4}(2$zZxSha0hyOej2VR zs@Rn%Ci21DvtKkrhf_o|y!0qELs2;FjBIs;`CXnzP&KeY<%d_a!3`=Ef0>IZ>-ato zH@yl2D+9m>_}g9HO2EObXa-)$TZJcePN1qcOh&HP*PuL>g*P5f#Rr0l@-i*^faep( z2EkZ3L=BrB&17=#IRlReZHCQX+KVP)F4BHfLkC_z-?k5}_$l+Rx6v}hSutM^3^9=6tw2czcvqApdn>MnQ6Qmlqw(VE zG|}lslD`|4g~7F+Yu8Nny6>(w%ikr2)?mCu%HO^P?&PhSx%o}Z>y`Jw9j9Lt_I6AS z^>fwm<4_Ww2YIit!TmvIepUN}AM~*I2UlwTF!4#bdO&`wZ5Z;?UipoqUh=tEZR1eG z_6EMV)kUSDLli%n3*bBUxrWO=fUXNhQEef15i(A<1P;y;#4nc(AQ5?s(3N~yDt+!$ zdy(cW0>kL|&|?4+s<9N!(k1)^J4rJL351tpG+?t(8-NR?UH(?O$+iD{NXy|QB1lU% zVqa-eda06@wQNybY1oFaTxomWQ_@mis`wWiq;u^5V9(a!Ow%^pN;Gxtn%w!wJ_r`K zw(kh%06T&1EyZWx;@ds$g|H)_ZLzJ0{6!z4GddtvcGv4`*>>&OoKwZU0I1_$p>BC) z5AGFMs-k_ly7fGQ6GCV{KY^bVqNfrepNM}6C>Ij@RGYK>MqF?-<|1qxaIu!ghZtfe zT4(?vdH}4pQ>w!Y!s@#=3VwcC)G&V78bdY_K`|te0i0XdhoBhPQ+?V<8gX7@NZNi$ zJdzwL?SgmXk#t50kpyu)qSQQmeWNI&b?oQc``;kI0uo++ro^`ZET zq~d((M9K&Coco^8UwozP7r;k%SAi&VTvp280XAC?^-_?=pHZ&hPS}f`KuQuGX4Y(s z2l~tYDA0rGw=ur3413C%EE#VcNe$a6O9a@j+%_qvA;kzt(mJ!<{P#4B&_U|aNU!|6 zPDtr5b1@7^C$m#fVH&3T2Pl32dZF~hzcx(iY^`xhSAE))K9Lu#H7Jh4*`V~fYgb~7 zj86v&3fORn3dIpKM8Hk1gbA*TVp~c{mE)w1Q*ump&!ab*R~RFGoCjYfyUSk0>O6cZ z9jI}h(5UTTE&I@>4-jPjMd!b&v(HvjMPExZFU>IKAznMvl}hrI-mmw zyM=FM{ZPlDlW_R|4G(&)_rqhlP+<+%2Go4l)N6DY9sCB@Bp>t|=g&l@CVc&gK~~FE zshS^HWF}Q88-VnA1sD2aQv}MfMqH|G&6O$n#Q~SKl z@<2;ibSm@-GLw;V-Mqyj1fj3-`G@Mmm#|LoXo|b64Tp%FdJrj!OkGDy9U=t+GM0#F zS{L3x64gOXkS;sf26}FQgkD+;5;D8SkkIXZn}kdfpODav(`*uAb0DEp$14)z&)-Et zH+M#3M(WXIn}poB8Hccvfr%~i>(nS@w~mX2Y;V>VI|wP4|2s)Jc0HQ=3-ufcU5np3 zZZ09HloV32lBGf(3K?eR^?;Lw5vn}dQjiuQccjJaj%`4(h;Z5#xf#ZO3;Ym+;b-&V znamjE7bU8ySg2K1QDY#H<7`gs%w5_I`;mU$}!Y=BuHcaP5G1?#2M7ZpWDa#JT}pmxPR{8Xqcf z>$_r|#p&jw!$1LD(V5c(8Oy<2vC%p_A{g%Mx&kGuc3u|lRY=kUBkj_#^zd|CaK5VG0IkPdS_%h>`A?|X7 z_G&pv-S)!U@ie^XR*y}?w_O=S!^rPagWCFZ2~zLw6C0|Td*1WXC;?>d!q#0Fi(lAk z#R%4faRsN7GKMEt;wC0{*@SomxaVdSPxnuP{BxJdaj;;W%YW+JtjX6;nc;68C~ZE; zU3M-iF+YZLC7+Zu9hgB1RE-(>zsH{lH%&BdXnvglH!D^NZZ_ZFFm718aongrY~1wj z)fjG;ofD56%)fkMvJ*XR--<`ik)kMi-X9Z#9>6c$gVi;0Ydlp}0ux-g<2|+}65M6g zSeW1&Y~Kt3L~wFC=7jfLiQ8v6lU|+%@b*yPHG6P>pi!znOqhT|6Hf?P`1h&=w8a$- zgO=4B2d(PF2JO3NGzQu$&yELec_P;fwwq-6s(83Qc{AWzsb#l+bPQm_n{c?=P5Ybh zah!jeN?j0p{;5z&%L4)ref>(q%B!FX$}7}PDKD<#;c#DhqpiG}NDDl<(}F|OH(%l* zl-GYoDdojpewXrUjR`<`{k^5Fyk4z}hrkn)qm)&Q4xGwsV^R}jQJ<4OSQA5We@v4q zo>wheip4UlTr+Qv>XZgF%12idMu?%}oS|7v-A1iQ(ijIqzc&D*o0DT;wD1NSMydtE z=!;1hymdb)8w8a8QlOy3pT7r6l>g;>5sC>&&1hjmYW^GXkn*!LO)4YMi4#&w7|Mx& zu)*#X+ps|u!if+hDaIzr3fGElmUd_Mcc*suG52e{scxxjW6)$&L?&DCr&)C=?SGC@ zgq}IlgWvt|TjeJR97WQFgMe#r^_IZVR_^;4Ok#;&)Tj6zh|+O#^qnc<@Ui5mIS^K4 z9Ir#ORTEF(@hxbxA?X?C6`A&$uzE##!>rC$8fSIYm(A**(;98i{cvj^hu*g&9)w$4 z_q^9B=8RE@SwD(6qz^E9Zq2rI-@6w|NiYAz2rzJKm|1hp5A}}Nk5@a>k-w){4sp;v zjpT4GqAb>iq{v}F4udv@AVm%RWpNr@USPpOSP{@wRgM8|Jm!+frJ=F z;Wj}2p8ZO z{lZj83yV+a$MILHpb{2VQ9?^^@L1Ai5&7l}uVhL~F_-0&vQ_>+%$zTydk9#eAS9n7 ztGENMIHXiTkpKyVuDDTYq-Nn~1`4^$?`J@Tk($~J+dWyY#q(1y4ngzNQC}=S6|iO$ zKo$ti={QmzK2KiCI$j~NEIrT!Yw};Nj=|+Or^VxP_(^f;HAYtRPSD^HkGIP~pwrs} zwC@u=R}W%Pxcqd(D)SnW$qangH)D?L#hn!cOmsZEinxv)tdmM-uRz*q!w@- z8mYac*KW9$8CxC*ot({@$0HT=*=-2WIsvc2si(N-^#hsGL0F1$S}^X|xd<>uZU`|q z?`Jf*UY(D?rWVhv0K`Iy;A;;#OYwl(;4yb;4qyqhZClx{!|fpsL`JR^>cD$QjwE;a zJ@{7XzIwxC_c^sQPx;B6oOJD;R0!PtwUK7-jQlpkod3UL1B8a10k%i!LW^VEKvk7TUD~4yk1&XpNO<^>--e?XQS(-gj5S z%2`@dyI>70KiLQSS_aTS=H;d|rkvmF;ZV+8U&q?dm)}GqYdiA?aAsoPz`sd?ua@bk zFmgh*0oyQn83=!53uPN>|MsSdwr!|dpl!HryvLG=%P?|ShW=s7GUU(SV;Po9q^gm6 z?XTF)C+N4B)0f55@SoU?rs4C^fs=;sC#00anTiS?%F&t)=L;+w^5>bGDGLjZtC_-@ zY9#~w6ENn`&vgE4!nYvaO`Rl7Fr5VUM_!2^_R?`2wv``Y_R!dYZb<_+G#t7Y3(DLB$UC!ronIe_}Tl{?S1U{#hRul7J6)wLG|oI7@g>tpzT0Ec%zhZHZ6KnK?b z_2^YRg8sf(LP2WGF^uytTraAZkKm=UKf2+4C8Jv$aUpV=T+$OV170SxlVtIpZI5a6 zBA$*9;E@0prht$Pg-n2s(v&aZs!!}#l7<3&RD4ee*wFDku#R;8u5l7`1ADJ&@!9y_ z!avr00Oic*o`t=+(phQZ< zW%k1I9w9Nz0B^V!RSOK~?gb3nZnD5(KAEoP8a_$>uEQ!gW+G@;O=4|;oLPy%BE5jo zanTqLZpV(al9dUJp`RFHfMZ*X*Et^AoJj#3?Pg)|6i2GfKCbvX=n zB1c+C(kS(YO4Gc-`b4C(57r~0#E+N{Qd`Q5WI8B>fgjKy3hoOCW{$ljnECcoU}pLT z8#67>(3pY$b9OXVsd4%`4FsX-3tPZ|k@@t?iio@dGBy5XFA>OuAV|_ zq+}Oct&0_zr3f))bHFN7kQ=UfHz`g5a3s+g(-Dv9Lu*Px;}9^?d@N|i4+2D}8m(n- zqPgu-A_c!8zty^e8Py3*NjTzGgY#LvDi{;0E+#u<6#E?{3Y;cq+Lz$kLZN_PR|y4t z4ddOMCgBsVuzIwO_B`OP9)6%6zR7Z4K9cZ7ynlQMhJ`(_G5m!5Q{^5(IW7NCxRSF^ zG?%4mvI?(5#G9ffC7<@&ti3ObWurM4Gt6-^BQmsu037xy&I3QIDFG3MniB4pCvq4V z#88hM;ag(Q{#y1YJRa`*u0Uzrpmr&OElMtD=tWCL9gU9MQOR5FuEDWax&ph~6f@7O zD5m@5O47`4lpx!mCQvBuo~r^#gUtO3{mzY;;c416k*ApM+f5yg)-Q8)yRP!2Y&TFhw| z$eQ498z@ci`&)<&aOz4VgsESHFmR81#it3oDY`-Dcb)HEF(I+3F#`#*Jjlv=tkukq zjTukii>t(C%y=&HzA@u%>(_=zwQ8keOT$UBNuM(>jOtFXoMeN~0Lj#EeLY1mLt|DP zQB6)olJ@WrAV}#xA^X=;^$a7gIwq#SO8b4H?UzEQPD4~GY>xN3r8IdRVInvm7}w&> zR*Tp_eCzl&olktmP3b$8{v3!QOGk6}Es#E4F7r{YkHW zP4gAz4@F-Z$oP#md_nIpo)##9Xmoruh+_Jom-Q#MR`uVJ@E#<0V@a9DG>%RUm9iVx z5(H2b`ib484p-elwZhfFXPDP~d=lVD53fT9H=Df%1BY|hF2O5^NkQXJ-7G>~>QIRQ z8emYE0w^^|KuW%CLOUAAX<(L{^Db>-HeG*!`Gt{CY9yq=*cF|4y4hXMQB``^UzUhZ zfa)?*Sd(>^r8U8sXIvn%q1c7!Y9tNafbaKQjsh7{5cX`4mmQjYpH+$%XCz$r9L3!w zT@QzG0RP|l9;Hx_vnY~ePRinB@LlDcC!3=(s_a`K%>By_OMZ`M&;(+NjHCyjfTh## z4aAyP>ii%x{hMcu*#`)T z4Zt_@PzfW9DVbxE3ro{H^NZ7am>+i0#KCqz5O^zj6WuHDHvEx;V4Tc}@528@8g{@L z!{S3D64}0-KQpVY#W+ADV6CKAdURlp8UFxps2PvIbNm=e)8L>FMtYPiAChQ3cL8O2 zn>@*;fTkofH0~#Z9yW~>+yN7Ej6vbA40y7~0BQ#(3E-_vuN_Ld6ZTBUcFN2&{BKv> z4{V+bEF+?@_>{<{`0R)rp2(!?Z)^5;VNEODGU70$gf%+*5nwzrF_LKB(vB@?+Cs5MnQ4#3nOvoT`g0h6^L8y-%|Q-1=#8G7tq4tpYD2PzcnpV>Wye2~8@lc+kE z`6`ercc;>c&_5(q2t|pvb3th+%R^P@zmNw5h0g$c%sDXa|Bi2^-gxV}Gxnax+t)X1#SOlN5ZR{mH_u^eai z#`2mu%s0{r{;L6;8=hcH@(_*^%q_9FCC>RJB7TS`jf~U}5EvqNEUXeJc#VOpTeb%< zpx0cbmqFdkI3UpP0q8Hq8{7V+&UqSev*BNf65q%JT8g0jiR8)xJUw7?9uU<)H`2|t zN1}R657NQ-S<#b5UosFgNM`g?&R~(3ZFdz3p z{>yK33l74CN5;wvkq_4W5dhW*(9`;%=(!j<#M(_pd{8EP!Sod z1;?iqIVr(G4@o5qepH%yv(&-v6>l=RCM_@vNJXknUIt^1e4Tn^D28IohnctjVfo9W zKr+)1K1K4z3SBv6E<$$$$CyP8{d>gjOYIZ^Nvlc^$BW%?o)dxszZ)#v3z{{~v6#dH z+ZZ^G5Q94gaLR?p3vdKIZXw-6K|?>i!5)Erff6>)ar29yOIgO(q?uh-5@PK!vdDwB zT(`db|3`l{mw^fzqQ8oB{s{eb8)4I5LGtgTzv1lJqQAPc8==21#>UX!sZvSN-?vhy zVfx#&g3x@&?WDh6wtgh;a3EDukSPA?M)WDttz@P5Ey$}+u8*{TaeQ-22&@gvw{AB> zhCRW*<#n@8Hq>vm>>u23RmRm2gHD#weJhN~fXyzYUk_ zmb+y5IBhI%%h&$vC}9eR?gv z)eoaNrhT!kIZW%vwZx_R5pq=y04S^z>)9==iMAa_Oy>M^?Q-$2xJtCT zifjGUEc=z=x+^-^_$KZjhH?;VwSl`fQp|s}acU|iLrV!yt+UrPmXs3xWXrcQ z^pZOFB1AesR>6kzAV1|=oYiT_q>o>b42bDacpzRiHlUvz~2MOCJ2TdnNoE!TL`AfpXyTTuE&T_eFmOy}!?#(x=IUmSyV+ znU}A@Wah4A^ITzJbsHRSX*;KY0Ozc_G0$0VV6Sm z+|eno$2O1+3vd|=3A_SXHUR+tt7AZBHxI^{2>XPq?6P&J$+e>U-c_8A;aYdu=_0Wd zL}j_mC6nPYzQr=f{F)phd<$lpb+HFR^Ur)xBnujR0W;I>rIutVIBu6AZaX9Cz*IWe z;72r)nqmup*jvOd0pKO7>qs&gQK>cBPkWw2XW}>CiZ|vy>>HWi$}TASqr&1^f|h9b zPHI5FK?WUC{yW&W{kZ1c6&@)1vBuoghxW!{Z;wOVdBcjSGcMSuE$*FXl;VDk4gN2Q z@oB2Zw;vkR#Jq_73LA7IY?UdrMDYNAq&(ZgSjcwi-&h`#~~fyU?^`l^K!a7ZQGRpvCgz-xm7ijLGtcaEF1n z<{Ka`_Y~~VBArupac{3t0^C*m_Y!yD96Bn`K+|G>lYW4{QUn^I4yclQhv0KPescSB zXxwIWi{{}nRsaRJAC#*MksF%@$=u|2*>*o>pUD>jR(s9 zxcE(*>vcIWerqtkKm_ND5r-T=Y1Ni6Az69@8xWS3O-IA^^I*l&N?7{ThBaCGjW5Ag z9lvn0^fMQFES3f*@VYyjrE!uSE#sk+tGgn$PIGm?or|1X>P%h3p~{RVV#vvgSa$4$kKjSXHB_F2tCO0al&iye zPL3x3>ifn13Yypat7IO6xi~0rDMdH=cPT!}zr+8Keyki|G0Qotgjv`;nPqW$0N=zV zLm36mPy#?HM@3&%%nYveqx%7}qv*$fMD?S;4>^HD6V~i$^``4rIlHu&i`wZ1;*r&m zk{1BKGuhYYv%HF5^A3HSSM%%O{2pKWnst>#SUZt!3_5TurfsC; z?vK@99KSHhZ|7Jn`S?nq*ClxK`}7y+ix~R{nx_7$dP*T}TD<-ui%lYnvC}`qVx_Az zi-~?jM#mT~V{_&^D`G}Xd(+~wiNa;a>6eGIohGB^uOduj+$Z3#|Lk${*RcK`i@!jh zO263rg`Q>9FvjUz@io{;I?fDK15f8m^Ts6o2ut`N9(xe?5uE@Q)+z!dxMHvvCHa z$S<3}glC~&0&HYh&shC}^#s0q@_PNQa)G!nck2}>B$Btl3A35%u?L{8qQUb zmzx;{f$S#5d3i=*^Sta`(_I*6q(7XiIMwtv7r5}gevGU|X35(95}`G`47uBc^sx4V zV_1!G$ol3@d73tokA_^wHH1)kHuNwXI_IPf@dWOWb-7KOPb$6vr<-skcg>7ZdBMYJ z&P%wlqJwh+#E-oY1-;1GGHfP^5=$5z_C$wRpH{8e4=E18<{Wa)y4>XYp1fEaFSaAd z2;r(`|9=ZlQVUX&Sl)sLMfRk+lhacTMKoUUqG{x)A7HlA3Y^RE{1&KGdKWI z*5`gJ0cUrD_05s+*Zp=vwYaE(qH4hwcnKsYUzpBZTxN$PG{JDWhll-nP7ceclpEkdK^(G`*lzM zC}rf^lmUw&?VdFD|2rvT>_Sk+ex`QNltCX>1B5ZMOtaAvGWt|VIV)sR^I>~>N?lY$R` z41u%7E$KFga1VzI>I$0l@YE=xpURxg@FA430=%9wt|mfNQk;Zd`EE5$7gzA zX-=kJ)q>n z^Dw!zeR)^_vsi8&pqxk{w*n(dP9U?mykB77U1j38u$^K6q^w5Hh;QYdz1_$Oa5XNc zk6dDTCytowJHh-0$_}s@;FHy97!ITFoNddvhfCy@>eQE=^ibDJaju%@W3ezZ@B_EW zVE*0uG4GVSi~@#js-ZD(P2@l5J;jeyk5*^+nwJ>qMqSQcc?gK3Fc+RGD+0zHly8s= z%Movi%b4gGGX`!x4cKz$?x6G|mch;7a_T3u4h9MP|5^ryOf?t>5;a4xjY!V#Qxg?z z`8{fV&6)}>h7Cm=)Ib>@N zchA6423Rvb-0X?n2V>xK$UJ1`B1}U{LiXT7bFMv5f?<|mD11|{PhSF>vzF;c%vZ3C zqR1Eqk1o6;a##VT6b$u3*i+LH+@PvOhBlx-Ct~n(;5~t5HSzT{j6KrbD(|qc+H!Eu zA|k?;C^(46_Td$QlSj25wYL<(Z8bYC6#+xKguR7g^1{Yyqa;)*=S!bKHGBP%;%^0) zv=6~kNI58YHv? zKFX`8%R96uuci)uuid_8r`momv=e@j%W>R<%4=};^^RMPb0X#i&mKVvA&e5yPN19u zsKnjKC7pL@cOI_w_2IH`wfbs?2+MlM1TNxDSW8$BpGqo{Fgc+$ZfinJcg-?-V)!K` z;XlQ|`oo6)EIPd;PS5F+li~gC83*)*Mt8DLph1`cgyJ=~&j3!1q!%THkR^h3x<$G;)tX&H=JY>`5)wFi|fuEkIDwZB-h_$53xYZo>m9VvZu z{ADgKu|COyTlgnj*T}`@+Ll)FIW2)C5sg8fPmvu%**nBqlzm!3rQGx6QYVvUX@`=I zKI4iXa4b7vW^ev3ZWo@<$zexyW+(jb3^#u;yNSpB$a>@)3f6b^Pmz7nuGT(jHf_w! z@B^_3a(ot_XNl0QX6|}=$TmCTRGnu+zWD(DKc3g9TqEwP%OSsH%h=raPoR=-xN51t z4vOjMh8V?k&WpBjni*ZSJW>O#RPgZ0;r{NvlfpghjGtHVeGzau9=>A#Lzmnwx}+2X zJ_UF0P}rpq32AtcIu-Pg#Th_|;3=HD8&3DYB*0m93DlAR%&XyZrYO%~-Aq)Q{9jTR zjxs=h8WwGh!b5Y)L(ucXTPb&K8kBrwg$48@rW-;cJV%uK30LRqc^nWD_e9>FW@rX9 zM*Cd*PxGSscM0IZED%&tOr}p2#VHq2aPQSG7wMOk@+pDOmdzBuGmoq&D8#KKGH(Cs z*JtAc=j-dMd0>Ape()GB8-$?ALs(_@8utSWM57@K4jwalDfk4|0EA!`Ob^_0s0tdZ8a_ z+Av7pGfQFj`(1EAMe?BDAvJx-Wm>pZ-4=&F84&<+Q^ekdnP4!;{DJLhK5iBJ@Y>@G zVH7#Ax`Bi&E+yJ1-&Xi@3`jbfrOzMYrMs+FhFNwdhl_p2;`jkvz2hMCqD=b#?En(B zbM3~^Nw>WPm?VGh1{|x6`RcI&@t{63)26ENy7Zd zATXhJEjUi-lm(XQI<+F_fb(uaKAh5GR)*$3ts= z85vsGS|LX)2ewM&O(ScT(m3%z+7-oSGY#z>aHBA?^MBb2`9ah8rR9t^`JtZq6<-M9!X|W=O@udC5wtaav!I59M*}jH z8jJ?#b5kKlq``1|5llatd5QXXT{1-mgrW#SoH13MlYz-_GF-4Bw3*rITP3jInPv?U zotQWFP7Cg3dgeFca>dTvWwFD9#NnTKr0!)OK_Sa)?6pre78 z5O5IDSu&P|I#YDVp}G&R9-53CeH8Gwp)YN~@16KfT*2SEMqMGsJO#N>iB(h~Tz~xo z1_hKyfO8KX>FjrNsshWJCVW&jjluiF-EJ|wXsSs2 zc}OC5aQ;xlkM>)!0~sAAEA3dLgeh8!cKaWUoL2@jY$rrcVtdPqdS z^BK(_qE6-{M^;Rz!HJav9X*I@YE%lEqLigVWR-#!47y%o?>gb-=%C2#YU*@4hZBOiRO!{T^=yU0fpqeirFdQZY*KA z?m$k9N+sUhZ`OL(BN;G64^Cy~F=v9h?i5=YuuA(M^x?kN)4Gs89{-y2!?GD&_pc7C zP&}1Mjkd=!f&{M*b7VS>z{@y-qtV5W7jXoJ>!ByOT2bp~bJEA0h$D7@_09c{k`@*H z%f(CRfA$hSLr!fJ@P$A^i&Z?Kws$D}m&h1YH5$}IWg$3>N4-!{Xg0VSvXG}>XfaU; zW^cI*YJpEcI4t4|b>(7=io~5fB+-rg&}k3hyWEYwlzkvF>VbN#mpR}n>Na!N6IlG2 z&c~v}R^u@lOCVF9mqCq_d$1;<_*5l4F|?g%Lmi`-yVjyb-0{V(AmAqw?L1KAE_0(G zrK9^^7poYqce-&mSCf8deg>abY(a1&?8{~HL+fcYg8Y=^HnghVFV*jhg!u~bOTHBG zF)=EisP2~d>Z(a#XCrCh9Goi!&#^c=nW#%kW6&r?=0mFBpLIcL4h5&NAo2?Muz*bG z%pf({hyyD)p%t#;`bM-AeV%4J4;DBG$V6NP+hnv8e3J52`8=m#;g-gS zf(zyIJnvQI^HgAhcS#Lr!nY1ET@kRrG!%~&{>GPMK{WGM0!;O%9iQyaa(uEITv(DE zE)rQ13s`ekQ$SV8+}+`w1TFMm0j~##em7@Vq0i_(`zwF9{h|Q^$@Yu3|2I~k@0Vc( zYR>PBlOs`zKYl4j>Fe;4niqb`;UB*qJKjfn_My0FO^LtmtJkI}`Ju^a`Q=~vaf%M- z!6>c}Uvxew>dITugF0n$)+hVxBeg!LoDA+?WcN$=Z_TSnPmgSBV0%uVuiTBP>ORtF zv}LJeG1`0CezA0ufw(oxIu`c}6G z)F-+wC2|V%|53sgi*M2eV?C^sgy@xMF+ z0@Ls*iiW+Z^W`d(j&2u^a=Uc)8CNS4@*Igjr~P;qshy4&=Eo8HF*|BM*28|}EoZUz zV>{Z98=dy!yMhduAV`WgC*jg2ejc%-BheSSCK=ZUS`4#)~4tzb$I<`viJ z=nXes%2t=J0w_XeD@1wh0)8&O2WkShGiL9a(aze&ezpWo)*=7cU%xK5S$$83o}~G- z@gY=@x)bbz!w^ig##9!_?TNK3x}3iH*`Z0E)xMe_{zBm!C7<( ztcTZ}%Mrwpa8*GM?)3@OMmRq}+3$tNopg(@u;ivE^0um6`a!gw_L!$`Qx-KI7s^Tx zONr}dQR~9G63Q*p`@PHcK904KW_gXYtHNax2yiB^ls6y^_~Q;5W;u-_8XA2b~9VP^$K;%&{!Oa{--&YQs(r z*3Ml^4!L%XwRjoX!s7GrU%==3HSe$DK@ZwC^%#J%ZGMr7x|Xz~ZG!}AV%Y5DL#JUQ z4*=V}s`PK4I1C%UvkjZldPT?uO0^lTmKVaRxtAxnIdh)W4-PuDl?QqSiD-ozM88ZE zeS!yB_>#sqXhAk`CqJi*nOb%Y;@F~w@Rv^&9r3YwZwcC$4ct;ZHXoh?JLYBCERDtq zN*pe&fC8E?k$a;&Wu9@A&K5ZYvs;uD2yXLmjCV2Z0omp23HC3+`o5Hw~r!k9z!se4wP6FYk&+5s_#gBQd)Q3oD!E2e7W$>R%#Y zdY-8*nnf)uZj@R}qsXyiv~*&;ddmzs{_eLH8w9Pcx0w>xnc z-sRM1@urU2|L6f$)$p50(GmbW>5`f+pK|7H6De{1rLI` z71>(JTSRT(PFIH8V513;DIjDDmHoYElSSuzCNgJidL|t3Bbnlzh0Vg(S%f+$Gyukg zh^}*^+f6u~^&^+f=h#l%`f4=<)PYsXX0crEt7xLU`tE1gY^f}MVP95qz=AC@8%syZ zRe@_cp(?%)uAN9f%gNa$f14BZf=00~j%S;o!iw<6jT-h~MLYM6qFtQdHIMK*1iVOw z1UUO&AfVcpg@AgTp$X{f<{pcHl0iVNcw;Y60OyHi5hHOzboA!Zt13~bt`bG9jGvWwBF2y9Tm{|4dsYXE@zY80A0C2M@jJ%; z!G7bq$XO2iCl!U9*0DEqA@?Sa;S49ss!ev#Fl}?C7Q~!^b)#&W(2NXkJ)C{`n0ri& zp|<@Gs{W736hsZoA^m~6D{arJs1Wn8TyaAZfoSnk-ivldUzYbs`c$6Pz6j*@8Y&J1 z>kG4Lud+$N?T{eIqe62)>I+5VM+1#~b7r&=Gy6;BSB1ZYV+~D*?J;PrNR>Iz>R4;S zA}eOY#oX3_wQ0Guy@q7nR2ya58lVzG&!BWnR{~AAgN)00Yqc}^*5?$rO>}S@j6}vp z(PzOiXofo*^An!aBdZ?)ClM@&gR7O3NSOpHWzftjGIwn?zDG@htYe+@uJDd|ViKs= z!n#>^AT*GGAif|jrEy@bw+c%;)vN=Vi6 z_0X}wPWk#=_$2bx%aqJeDWDVh98N4>W8{AZhapl1*phuec=55|+nYEe6=u1t%hnI2 zV-S`(`1Qx!iuYlbNAR+n{XoKkv4CU2$(48wxY1@n(}|>U5J8O5C#jLB&?NUi5pec{)i6I!vZhBd2sJq_k`_>4EC7)(cL#v zpWTnzYL#k-_a?F*DOMS7=u`hx?>$ipp zPv{U%`~>7|Zme|zG>(45FUG-F*}uJ@O*MTMkWm1z2~@3?37b-UKDTKzIs6R1^NI?g z{@61H`UA=baS9!$j^Qd{KrT)}h36A0A*4whpNMR+6kY`wH45HA^_vNIN+fa`TD_9<9v<>pcP8QFQK9QYpaBi}&3d#v*G z&gy%aO0I|Nwpj`MkVl&GiZd=7k9l`uuC3n#Od8AdzS@_@5(b*9EPSg#$SG0}{kOtka zwdVPoBdztDQ0qt+)^B5VjR(hfJ^r`Yu3gXHAQ?p0+>1bY;HTSd`|Eig4VMYk>}{SO z8k>xK3|or(_7*4r@C)*Phx0%%d7<3oS&V6ibEYC;3IW;NQfXY z_&C74oH*D3Twg5>DiD~RCJ_!%zLQhXa~Kw}JUt)<<)pL{3(S&J7%|#P6sYE%CE5N~-2-I0NX=F-1}G z)cZfrf&jGq1I(33W~d+0ML&Q5S9>K9KbO73{eTx$z(4N${)8_Sj_}g0Xxlj_a3nC} zhM~r&C)D|poWRj8CCzh!HGB0YK{ic|;mQIx2Hy22>=dMgI6Sn#5P_wFN7bdZK`*|> z;i%XQTMesq1SFz>D2@v`&uQHE?}KfwT7B*`ug8`VM)Q^o>FBfFJQV&3;6a39nAU&r z@I57YMpHLe=A#Ca*!p@qO#2>ywsS;dUdhHtY>@%lKfC1u5N6MIc_RD)w zh_V-K9{8e>4GwYMi5+LY%XG;Y0?41H9-2ytIv~V)i{0N)`tNybX&>A-jrb1$OvJw+ z19)G8-=qVAum3h&fr8aHi~xdEh(Ycp0u5jXX+;Onz|l*JJK6ZZw74~%oarv7mnknB zhq2B@cZ}m1>g%)7XQa2!uXqnf6?pn8zsGx*8*R_^Wq&>cYfh|z7%5hSttW5AM=-7~ zzZSR%&sXGv7&-Bze$1&(BpIOKP5efxNZ9G)_SaT(oGhzYBDkgnZPuX`JF35Hj@u$D z4h6q)`wZ8%ah;nC!N8m1-}w->tga{mO-A}-pu^R<5~B9)7KDW{aLt5vqF=^iG;DRa z93WxR<)Q0yn;o6t&&=eBDO7AG;fY>cj0k7Ef+Z<{u+3q#D{L}RrwY6P)fezVf+~E* z=%$rE@>-?*8kgY9{?vUR51IhX6E1@K@-)c_)CJt-Q&|8d?<3LT<=D@F$vE z>Mp+m?*;M;@m_#_TG#xFcWt15o|kaMhaJ50h*Gc>(^4zI<0vfw|KWH5e%d?*_=y_u zdxQxX!KYzP6hs04xvY~k;Po7rtDuw>b2>E*eoNS2b&bIO5^;Yz!G1QcJQz+=wn1LN zK|~~WLI7qrmOdOCjYlT{?sfhFnFCN0FgHfP_|l{c(N5B}z#bk93FymyfBId%KJR;t z4yWUkj17y8mmAGH^Y|_Z5X&#J6)eH+ObuiVd~Y0vP$Wa(JC2U)Et>#IdjJLqSKxqE z*N^5dQ?Vq(8(ongFOcHeX%ZPK??2mLk04Rf>ihC_3!gTVuRHnmFv16PftT>KGAh~G zT}sq{uSCFxH%}@8TG&VZX`krxnY~-t{=K~bmJXK0x7_*4*r!BL%Z%lE* zu#(=sgHa-b(klq!oNFTYidC`}BF;G&?p<-|fPHZ!X24g1bvnohxP$hX1Cx9AqCTjyAL5f6Gu$F@HP;VG)5~K@31V|9@?38^WL|$8dki|nQ_T^N6-yC;teLu9~ z+nnH6kOv)yUD>$_MCp`{{NJHNCDJL(m`sQwSe6Qdhs-uuGI;RS;KtqestGD0h#d|^ zAu6F~cnUF?Vfa5MJy*>?eojLyxjk(DlxD|j@q1JWFDgHuS8 zM~kZfxF-=W(HLcXCL%3L847DWMKLW(8Pq>!-IsraIxIvqP8BvBKn=aJ#t1cZ=t(jd zPYM_oO96wf#6)%mPC^00q7={=?nQx+0z`vY$Zuu^`^X6qi#N!mkmInfTIW_o;8O`6 zZslGek&VH_ZB&pR6_?2R0;~(>;3llH^Z>9(W}e24_-gzR`|cfnndjjy2;xcmtS3eS zc;+=u>r8GTStID**QeTxd@6Z8YDkQUB(a38oYu6w>^+W?kvQcF91(FV*@$L0oMM6U zN*)Vfy>O2Lmh^$88CX)4MYK?qbkHuPZ#COUfXxa^>WG;P`;+Pmb}#H>d!TwYKI8g? z@N?JrA{Z+1sgxOD zzmpGD?r^mtWXsY5M!rN|F1JH`Y2;zqyB8l^_NurHf)9)P03Kr1SmS=+ZG3UxJAk9? zQ)9!`I1RyF@dV)OQOk!UfV_liLavkvLHTt2~N`(g2nC`u-hXprh5Ks6uRfxVL}`L7cHd=-0nWUE}h9;Ws51|k`JY610%e3b$>p+F`5Lsj2L zFsFD7>T}$%8-)fyE2M!aCSepN(pFAx$O02*x;bRI0#@TIF(@N=-NUmE+TNn*zKHcr z_6Nr6wYeStiTDCstTK023IoIL?g@C#LJIvWzQH~PE?YwaNwYcjc$s#8eNHk44r$_g zmCi{c^@WSDO*HH}1Ql~TrE-mV^i}MqERuLp2^M`?f<^zw_Fp}n?y>#PQ{nBCvCQ3< z1qxIqA|rx$NU%~q;iJJPxvEq?SE&eUV7^FxFIJ(~pwB}51_2Bc6Vc=-@h7Bl!1_X7 zGrP29dpdZ`NE(4LL>=8_%KZ!rQ8~UXQUSesZc)M z*;Z^CPEvf9%WZ{C`8@XohqXdIP3uxFfm5W71?qzA?pV)ma6fR9OAU#wQDczCp{sJ) z_cWAuuQ=_L`4e!|r{0sL^oCLz{tS>nF3Tx;6Lu!^2(dw&u(R-3`n^T5{1@0(HEj7N z=LZoRi_L|@E_WF>2=Fb@kEl(HhGUzfC$2QymE|xcuULTM2hn>1N|-2{n$a3c09nqE z_wu1aie`bb0V9gBb?}Bj_}~N^TJ#ysyZex^>MXJbpasPNpX$IxtaKhL>2jznMzs`D zU1|7Q8xzgDQb{UGI%58959?~VOuxgz^d$o7Eu5tS7TW^21!8GDbabNm^Hk6Yz(ew) z++y%RE`0X>5kBK`tiCtSKz6X5%CBHSq{@fMT~)eYo!*CeAsgk)c%a)56LjeOv0duJ z_hZ>9Oh44dAN*zG-ScJwc=*<@_)qwMk#q-JGN!wxoUk#_$L_u@X|%h^IqP$~9J?qj zd^-A)^*`D#>xuTmH=~Kh=kfDMH2i?wF!nw;6+H>~#*s3tOMO2awTT-STIRTxv-%Zw zbpgXh2^mmekm@#}TyAu5`?9yq$P~LuV2TAclSfQpJ1x4k|UATE1Pk9WuB~Bon0aFi$ z4AIlJ85i19x5#MAaF8S$+Go!N|&*DTR7{z@?0CAbJu2}j@sf- zU0M}He^_zEIw}NOjs1(#WApJHPp(AR420$%>e}=&LIYC_phfMz(m}^YbF4%br+Wn! zM`ZnWF$^J^%y5Q-oVCjrWX8%dh{aCi-6QGRD&U9;(1a!KA13K6WBG~$O5#5=99Yg_ zMh;z61M0=l#vc#M#wMn;}A|}3+h1}BXcpx+sT_3v9AxO zAIF<)7XCw3(`L|$>TvVJ+{d%z2Ujv^Ud%jA`8IfRL2}(-Gg8yxU}Y^^lY-VNj=}`` zfpC%Ko(&i9W6g}mNME%A7a6lL@PT0%Yafi2+DzVP_$Y}Io}}Oc#;032Dqq3{I2XiW zR!VD1%_)@`i&Aq6qGyTDi5i_tSOLS9ir`aQN!sX~XyM30=idmNYUxO$^P`~{_Vha% zLMO|GZ=i)jYd|u0id0-8^*@s{wa3CQ0OaPVFO;Qi@)aoIfP7kuHjBtLKWRQ<{_$M8 zI45978w;BZE^jmGn9bt!J=7mq6@n|PM= z^^3N-|A>9Pe|OZrej0bo#@g4Ty<%UFJQw!$H>0EW^<%gYvvK=c?Z12qP*^rTC!A5% zvNAa69_bIl7)P2*GR;xaCGJ(6fu#pG_W=}u0;RDHxbX87u%Fwzes~JnqC~kTW8LsX zoLJ>a4FrSA#o{ar=l~|D@0Rl=*_-Z0Yy%3wNKN$C4~K!;8IBEHnOnaV{6}f)e~T@6 z$-+)1pRk(9reU~FUEdkQel&RBO@BA)SfK$!CaHpCbCiq(OEyn3$BMODeLtQ`ufgK&m!X(d zWr3zDVTwe-pSkCs8h(+5u|2C_ioUARo*qLouItV~BD1IPC{UV+Zw5O98G&a2|JGG$ z_{~5e1d#-0B{o44=-{l3CjK!P#yKt!ciz3&Y+mn4WSA9Tu`8PK9xaT@;&BSZ7_2Ey zMXRGSf`e9m#5tnrQJJQJ+@^B(9B+2Z$y_Pdb_CZZU%O@{14#hmxUbOy9Acum56O;& zT*5sC=4yTqfC%;cCbHZ#L`gD@Nep`=K3r0wa=Te^n+h5)&ALNm-gwc?uxMnW3X%3pVKJh4G|}tnk$w_5$z8 zy|EB{U=L;)9Q03V5fqqc@_t(ed>TnzJ|*oXR_ruy?yE3TNET=I!4=H__pNd|76I`H zDl<}FzZ&OhB%vp`rBK3tv7L7I(9|Y5>X@FF-+xyub7Tfhc&t@ofw5c^?bjW$B=Rhf419 zAZVI(W<~3qYuCwdpiZWL0L$k|d8iBs2oLc4metRwJ@Nej{~T&L4OLb>#p){ATr1Vu zgOP_wwPZQoAqj6}_r(li3(*?w?IlwJb(8()v5k$}HJxbrG~4b!r{Vr@cb6{$s95&_ zsVm^gwX2Ogu3Dh3Sb_7pX!#Cy`4J72pY6|L`{!8Ylg+QNNlN{VJQ2GImSo8%(tm>- z>o=dl0!}7ZxyBf|IdCMgM9}xcHXD6UOMS9!Q>mZmKp(qW6D>MR7ZtgLb4IFs#ZD!^ zXG1KIC~aQfSdS3oujeqJ$Kv((unlrNujk}Ac)iC5otxxTold&XTNlIb*)kH)Lp#$g zBf+szO5fvnz1>uc*IP&xa42|v&nlsx26Td)Pt4e+ z#A#}!KL(?Z&8UWGVc=i~E$keS0$Ml=V3~~l^|dk7&{u{b)Q}*-5xleG=`O%iXd)-3R64jEWJ+#)M?Eum*-YE7h zP8hk%JAga_br<>1w}~(~=!^FOmC2P#nE%yov#o9u3WG$6HiLs+V^LM`HoIV7RS;O8 zbw(W4YwLjZFH4PRA8v*xn_>*0`0DrUY0p$m0DB*QpqK*=I1Qgb-Ch3i z;Mh`z87KJ93=Wzn6_MNk@tfwwcGa+|O2kLH2M1lxQX2l9>_YGA_CXak{4b0S=rq;i8E36scv0Z^4J~Ry))Th04 zZ4~-2^jcY?RrW)bUH=wU--7?=o1*alt6j*aJ4v)V0sXV2rhmI&UsaIwpB4xI+QX!O ze+>Qm8iN1eiyZL3vykv-dTVp|+cEIJQ2JN&Fa0+Le|M1u|K?If)Bk@OqkrW8-e^zl zAyo`CUa(C7O%30~e7t+y?7rg_?5>#EeLu3H*pUaol?y{ZuQpV-@;~Q)Mj>3j1S3+7Xw%)3tXcoe(;Zxg0diEedxEiOP`BW{3 zo*&T=2v5(lK#0(yOK&BCbVSeQnQz8GvXcx#Ai3|~97JP~{9%#>$uDa;ZUxDeQYX3` z(kof5Ph=Hjp8wYvFur3cMFqcWV&K=)--i}MK)Mj^cY*2ww6$-uKt;|Kp#!WhCipX0 zdUUjOqFwr6Y-ymz9sF8A9~{(!6}0@^fjwXc=>MXsRqTZP-GgO*4DiqT1;8IV-3k1& z^BMyFlNUIEfBU5bK5r&5pR0-i{-f&&Ndf*;8AfBkzvCtg_>-lI0{+En=nY6m3q~Bh zLc%Kxok$S-J3QOMgp;bH-?e=bgP$8p`UL9EEorapi=M?7;8$_~@LWs|=qTinwk)M(*e zcHwTZg-Hs-rJUBEb<1KqB9o`UPYtMHe_P5D4S8aJc z2C>!e*oghB45Bf_F1o=&tRYntVsB6bZve42LMfm2Jmkb_*cXRRg+GSYSn|mjxg~I< z)y($B$R{YDj<{wf8YADvXUW+FUTbRzT7Oo(Vxi^rcVp1P!k?_Q(f6<}r=^!q6^43y ztVo*+--@Bx+h`{r7ISt=^ z8!bA%C?yWQ6$b#{r*Cu8@q*lj;M-(?1HO+%Z1^U=76aeIt8F@d|0TkzG5BuzlLg;* zq>6&?V^Sxo9kfR?Mmuz>{9l9b2&-$${(I4)-&P7_mRKbHrb=Of?{-~I!*{_33%Z?hMZxzX zHSiP333J5*|7-C5t~!=}AAiAu@7&ts==V)2EbyJ7%W3%bQ-vWP?u11WBZoJ95BPp{ zs}sKO<}?If&$$lx?lx`sdY8w*H%kT~^5GO2L}TzxzSe@T%bFyX{JWn&xqP_FI5B*O zJLGSmE>o$qC2tdw0-UQ<9}ogBu8RSp_P&XQGc8*FOuKwpYOW9-j$gFw({I|iA7}TycWq4H+J2fu zb7`m|ncJe(&akV!9$U?P?t5|GV)VA5VE*U+7+6iVy?{!8b$8IGhLMomZ>#KK{u}$0 z3Pd@M{vgFkavw&^g>*ShZ@H>4=`#K2D-HhJ7 zGl3S`pXT^wF?2UlMk37KLq^gV-JNlbMRzGuMbX{&*v&kdF>p&o3@qPhknSux5d2&5 ztD6314hhsvDsHXut5N$_rVQz~tDj9+f&alOAJ_;K!Qi zq&0o{qviVQa+)>c%kNKx$DL?~A;Tw3L#Hj33V9cw{+<@T0*zu($>pE)xbAn5yk-}^oP zKhHzXoOAZsd+l}GYp=cb+6KRm$tMcGcgr^?mXAo?*TnDbihpyYUBU0$OAY@n{9`Np z9(u{;^XGIqjo&*|Vc_>A_`KoMd7z`rHi-wut2KxL&>YH@cUS- z+$dd6LHKlJh7ch<%@{I21QX>4{L)4 zzpLdFgwj0{chC)9{GOkm48K3=?ZI!^E5z@)M*lAPWgLFP&$;-$MSwXT|K2vz;I~{pQTV-B zb>M{j``ZVUzZVHG%KjB#j)&j&BMg2IEoVO!e&4`q=t=G02mX8T zTPy7f|6Z<|<@okuEBuzn%AKLhY5Zm_pZFe8@D;MT z(rgjhfc-GVtGV!lyi3Em4QwkuSoQ~VU^&4V>{Kl!I3rt-E_3QM2GUHu#j>XzLl$Q1 z;BE_t_||=xYT1Lcp!n?GSM}_jB0<6uuDr>){^$63_B!?&PBT0G@5{QUtdR&N&%;-K zgNG8fV;)M#W4}#KHk1ys;5ZEss0QrO$#AZo&ZJ2A)eu>7LidoIKdSNnTj&6p$SeHE zHWjJ-1ZuM}_pxA?)b-rqz_{nSnk!a=kSg206-!tAwISgWO_NQ zH!T|inc#MHyYsbOkWSr=4c9p-ZAn9?_Rg?PL`(LVw!@;KW8NP1zw+6#wut%jwFkGA! z$ZISOtqUA{muX-Eeb!ld>qpvy&u7ZQGpxD?%3(mI`0D4P7993nge~FNyD>C37{0O0 z3XdrdhI%2>=Qw``xaD%3m1Y`1ICnmxwhQ3@dRi14P7BX>y{a9l*X2o)2R2sIxKI%sZfW#O}j!X2|-Q=Wa3! zm1iOT<2PElPRVwr2n-N@Zg4>aC`1I!BVAIPns?P(8;fIG0Ctw370DqdQnxWC1V|iE z3|$2O(X-sO)T*;=4N#f@cV}FcR!XsLEaKmc^zA z1kG?BJICz%a7w3PGtm~=tgrM_Th4d7&-ll32z7n~_b4{W~mn zEdhJHy8-OO#Q+T35s(yYM>RIXVNVci%_Tp9@5-DffBQ*G0}f*7!b);gQSKayE;F&% z`S1_N+KVHY)Cc)-mQ3|_l~n=h+<)ZVUviOAO?97IF+PLpulw*^%2+NG|B-If&$8^P zpD`ek=ldM#R>kvusArk%^}ciQSI+ktl){w57b^PUA+%u7D_lN&sS?%G7VKK1Vh;J1_hf;6MW0N*ttd`+p6F9_bRE zk`?V_sAZ8U4qAQQwwgXp!-l;xu!4>KpN&-)SoZW(oQtdywSvJoMxBouNWY_9VZWfW z`B7l4?GjWNHOOZU-Ep|@!#QdEQs?{ zuq0DSLqAq<$C)HREN~t}1{+EcUa%ZGYB}qU{AY{8-z$e=_#X}8 zEO3m!a(M3Xhi?@hVD{Ic@1|Xy3`@7qGzV&g82nfT zOW>V56^+4we2cn@$fFi{wCu#^FL>sE^AWQyO2EuN^n9Z3XuBB$Y75S*z7(lk+PBmm zIj{PgoGWlRj7?H>VS6m*T$t|R+~#k{?&r`hB!4$1GQrJf#$0;~J|=y9b!ljp$uRPf z9PrQtU;PVs1KU7N4;t_cGtZyn8GhyX<~*u?)xt(-Ss#6#HbUO#k~t3PNk>Cc-?9$= z&1!17%Ibp$X$6*Dgn8eM$D9KVpSKM8cMA@(=wRUl!m5jCFy&kJ0A$*UWqpu7sXd@N zRYL&We8Lh$a(>V*M#fbum3^xxjFNYPY3O9eV2|ve)Q_DWPUoR~TbyC}q?srUrX*qN zj{l^S7_}8xh5G}ceU>k{pA0EA6z;47?e)YASjtV|?Q+@wgZ!Q|kuZK+WEDCks+B#f7-?sM z`2!iIS1+ZhUfq2up<((3fRYROvEh*UUBl|9{*%~NHkR-cXh$$)8`df(Z+@2K8aRrgWv^VIu}=6ytR zClSf)f3movk z8RhdBxZxjI*bdd%D^hZigcy99Uus(&n8>1R_OTQw17F?cRIMcUB;-Hc<|SeyMmJ)khu~LG@*nsDC`nZoO&-}FBd?%k zt8+F67F9W#vt0EfTAOHTMYlj`M`S*>5w#v3zuJ>P;l8QeU^2k}6tCGaL?GL~Q;0*m zVT6U6oaY%i5!&b6fhUrys0sQN&(zx=>bC(?UX3q!>RgUT=!tWQ`=N82Dvd^+^4QPP z*w3M{pI5|w_LZN^Ea>#XPu0HjV^si2yPQsZ%7F%Bi|bwb@)iy&dT4YKd6o>UDT$3lmZjHlzRZ`td9%TJzEx*4 zGPgSv7`}YpI=IJbI(k*zUVOPbdPD8eep7qa9xa@n{Qdc+R&%vlpb-zmRf3kPx~NvB zc0^V8?IC`-e{n|N+AA-qzQDKY##DeX^&Ga-Ln+c29PI!{)8lw-tatrfVs}LDK3l121zD$zgQB$MuH$3^kq4EUK(19qYhwC20|D!SNa=J4d+$a z7!-n`Ws(eyiH|v-VH#71g9S$E`d^Eltd~@0wD;vh6kw&yB)1y4VV>PXC`U^-S4Nq~ z{Tt;yP8>i(IG_F>pGjBP9A}KG7L3!6tBL^;DV@ULsY-X}XN#Pz0ebVnsj!yQORgYyOehTg8lTG&+dg+zPg35 zU6}DKmtarc{g|Ky-{E#t*q=>YH=LY%fFKAdU9|S|oC7Zt-U>ONAdIyLT_%-4&Fn`wx#MsmPJXctVl_R zh6b{9@?N5+)b87>)PA-S^r{>3!$ntNnRz-Zo94m}_S2tR1;JaHyoM=i(% z5$co|(LIvbeO-+UlCB2blxl%kg$@m>Js5}H{b>qW2mB?33N7zN&?syql7~E%T9o16 z-U(YdSa{esXF3#6u<(d)eudFQW#|SeTrSsHTRj!LFEKRG1u&+uI2q`JQwoozKGbhi zcw%<>sPOXaeds#%V`<^vt9xQLGBMl2-{slOcs{(~@6|ZWK3YWm#qsMSXdc62Y&2jG zXm8o~Ww?#Ul-zUF&tNQ3B;)~>C$8CJ!;b7RfsWUY)AXlw$M@C@f%6-Zam3ZX07n#` z_cb|U)bDl9ge?j@ZzFNvg}hzC+u5&4524z!1sP53 zjru^1L#95QTjaAJWf?Gulm%8;MKFvh6f(NAHXF;cTJgftbdP;})W{^7k#f+CBKLOs z+s`SG*#jrc+Yu>qBJRtYA0`_AM4hOS!N-HiG~tM#k5# z`nM7mXxp6v9x|`uDkcVrD?gqmS?zj1AN1SvatC=P3GTAtb^y^UkxX`_jyXH?#Y7Lq1r5 zPBv7ZPNmOYMUgf!%UO<#-X4yy#WK@3Wec0DA z{^~zN=?C(v(yk?Fsxa!CTg!~B=z|OxaL0xAI_tuph<#j-aEfn0nj*bWMw!?V2pSL( z3?YFn{NMNSZZqzjGW-mN4slBMXH%xhc?CaZkOz$dvo{dxQrIAY495T{AxEa*{2w@21;=8;!I!b$e9DUHe3gJQZItB9M@;cg`6{rsb<$TMJh^`ZN+Jm*D2s@J*tm)yT zhUzp7q)1J>fK5wW0Fu@A@cpQ%ep3~kRfhk*TDQr6wXlC#Pp$M2N$7dCJ6Ao_J>^eC zvh%0vZcCeG%x<9u}bU2jO

FO$DPnd2 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

FUGRY#%UCxT>WYRo|M12V=aqGRHZ;^y?{p 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 s5ckgmD=p|a2f|L7$e`XiPKuWco2O|K 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

+>;y3z>075<#s=dBK_C$G}0 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

iht>H_aXe=Go5y1>!FSf` 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
GRoU9r;HttY%^3jTVLOSs&+=T1KS!u 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

>VOmf+vAI65(#i^McBH-VDf+myOpH7%@P1bfrr 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
  • ojQDGX>s_W>&y&b;MT+daArB5I>Tuh;2Os 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

    rWL52tdyY?F7!BAuPY&X=tuv1XExmC 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%0A%$`RJ0f!&!h3`3VtqL{4$W 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

    _&UoAF-Z|^*>UFDW61cn-Ccg|uJ(Vr z>k~hb4Y%+w50=i_LUhONYs9c(Q2CdebGkErenYKRwb^ukZFuI|6PZi$yshd7>M>eY zn;rs9_1K^8A+c-m)vEi`Dy;1*)#A%l@6BrPM)e?X91xG%(~f1TE>6aKt{tvt>Tx+h(oqSVQwoTgnfX<(Vz45m(RZ)X?4Rgkx#ck1-)z^0QW z@t(>)p~IcBAE>da7EO>qa4o{8&$5H~>v~BXL3!V$ap(26DJ@SAE5nb`chB#+2{MB z=lV+daBuIdR&{H|PSc$pDWW_*cWT6*J`;=G;E?P-W?#>nS)RF9`iH&67khVjrPqDA zH&{C&nIL1-NPP?)IEBv`;KS1>d-)s-$IcuYiaqT)qjz%o`Qb6yk5rrI;jjI7(!%=Z zDWH!#;LtT8CY2iufoX+QZZy7>m48nvzoeX}bme&yJO{#u$Xedj%KyG0A$N{z&zj(Q zv+xHf^LB};C9GGSTAn6SN{w6&!Dof7M1&$7xY3vVJCezZr0d^QuOQA-t@o9cGM;1- zjkHcSeeVo~TSt@EkO_h!;bgNh1zk>%)8cKt!L7Yi^IXL!*jsvqhW5I5_WE~lNW49+#@91RG&e8`EDePd?p3v36{GR3%h3X3l zjOnVc&QMV*nN@y6o_N_Yi4DUnsT(Yq18L^-n8KfvX1=Mcl(n@)W)^k_A+>?Gd)&%m zJku9Dx9H;4756FvUf3^qC)g`1LToGU=1TCDilC4Zax3&QtJ`o2a=|BioG|2h%g=@WIoR2T28 zxOY(Z`G?fVa7AyCD=y2@r^c0ox2y56;z`taOk88xfa}Eg7d1*W!an|qT0c>%^~ZF1 zr+=yQKU8r`pLotsMkf32=H~j)`qFwNf^6AI6-l-N57%~Q(&DMQ-r9MOHhf$C5e1y7Y^FA0ljN)&G zuh}=`-S3CP-y^l!$o0K$U#>OVR&EUliR64su>4U-)|7iy?w5VppZ1ks?F(-1%Z*Xc zda6{fT1oFLd{w&H4j)k}l+Em%-AK5*g=9${r>#o)^gGON3Eh$w)!+f_@>$VDxExDYl}sx2j`Q=n&g`ZU#dk~y&f zbp>lDk}xKhkSo;*)V)x7wA^xT<$Mt~W3Z+uO-u1i-m1Q6WH(dKtEg6;X>yoJ%Cv~CP6Kq$tQ>& z$Zz;H>)(%uioVaE{@U#B!w5{bo)_F;!}uFlz5!TyIJ+X~{d^CpeC|;G z?MwjNO!)F9mHvD`nR4{r7YLYI7RY}ZmUOe4AYtgfM&w$3fLa8nI$kyU{G!dijJw|e z9I6K@A&-(yTqkVAouJNh{#v{$AUvieGZxP<)8sd{HF=HcYzbuQzS0+aIsXAVgxwAO z6;7?dma6hzP2eU8JK&AP{W%Npn!pnA?y}KbXD*Pi=bH`Dno)>(!|5T(AQ9V7=rR0J z;y%oU&8Vops*pU6iB1lOIyaf&xMHd_u%#jHNc$J%|5cTqH1;vqdsQ;{#GUpn)a`B_ z^o2``R$$x)w%aw}9Pw#jm(@`r$QN_b#lHJx6sLGR{PKU z&UA!|Ltysyhy7}1EkSb7cTd;z^(KXaeWEH;D`&WUoGu(r7XsBq@$F&_^4$_%ssh`| z`OPd)@HB4bn4shyE?&EsPR8yKD=>!4Zg7YXZA&;i$J3>S&Y13;3a912?%AK9P7$O! z6O6>?7c28K?f+c2{7ic&_;{`?bcs4jmPWh_4uPr3nGo=FU~-czql?*K%^o)>ljBj42R2#nznVC;X zz}kxA9K>`akdvMa148_|Zd|a{YUxo6-;Lo8!-A+KiQPqej7x3-MAf2SX3kK-SER2l z^(=UqdSCrk*>{!sy73<}Enhbt36kQz+5ntA^}cK0MoCCh-gn*iaCB0)5`I^?c#A%& z+`kz2uSs)0FoxJu(wtu?^MV4cOM`x%H0XLAU5Bi>eS>797<))OrZZ+YIbIXJn4@<^ zZf0yH1S+;n!YPEQ2H@cQpY41N-rt_pV7}Nu_nqgu=eqg^*S&(Zf?GLRelK$M7Ma($ z6WEsx1mP8vy2gzzaKqo3(p#o6SIdBn?pdLSgQuDbO&^`4#VtzKVCZ@iD*!KM5dXji zS=M4Jz*&ft59pI&Axi%2nA&YnchorB1H^U2>x!p=tjv^*;{oIfebeoFvt(W?k=)vg zlUt|m6A(Ju*j(Vkb>`rsBwGZ-`~XVjb+-vNQwDmr`ZO%5P@$osgnLrqm@tV<;C$U? z2e6Pm4EdE1%M#iLtBg5E*#r1iI(7N6$eW`bZv+eDEOOy^ZBY)S<2x3<&F(}r;rIgwEAV2u%3boH_tm4Zh8)=CPt%&62XVseGyf&`&}FSfmyZf?-y+2mt1?k+cwRg3hqs(CMDZL zozlI;O&*mBPJ_)3PB+V~AEi6OA>PBLzEAuf4>-@8Z~dNh8HfMkCwGxE@omQnnhWkW z4BS1*19D*Q-Lt_IO|%%FEhtkm`!igzEjr6QQS0_u3qj2? zcZt8o9=#7DUz`SWFzMWACQ$8 z+xy}M4&hjIvIDzBJCDUN5vL5@^lLAA*XxvoPXiF`u};`PpMWWzU)o^{RbdfAWBCZB|=(MbVc*b>=R30T!!8r&J(HPV}bu? zi4)=CZ2E+&pO%Pp);{X$hq>ZD=<56Bn|oY+mz1}IN5r7@e$oAHade_U@Da2mUOpa8 zwK7zqd6}CKm=oiEO~=PcYw5jyWat76>Iu$ynIc}9KPHBr_pJgWWh>t<6t))dU$KR6 z7qAsTgC-@}P)Ud@78JI#P0CJ+o%o;=8M2!cyk0lS!M1$)cCQ*(+a<4>qz-ki%M{-> z{=4#;+vC@C-&K3~09cclz~P$$$lh^2P3jab743acH{m@qyzJ1VA-l#;pRl%r=Q2gV zOc0Yy@gw7(Da?TNzT=r^@MIH*o;)crZ-)q{?F6ER#V@!JiYUhBL+pe&dWAfi&9)u3 zB(XFuU--$#pQ@biXNs3t|LWxNuL;1E6m;LT>RTwXYL8xBdz=;Ti@3f#l$+QV&_j0LM5CL};1gvYrvbw9QersKKKSiY~3L>B= zz1TnjMG-{=#Eyc!0D@u{75m!Y|4ec&qPzbOemTj_$w`^ayz`dleO^3+YrS@`(>=p= zZt0?<&?RkncWQme8Bvuah6a%ZlX{&J^8IX)?{)P@2zda&*+-)uX$8{rY*D3x5Q1w5pfLfnUZT|A_ThkOMOS@J%PFL@s8*%^X( zKM2jxYuUr`kg)osI^QarEH~8q4EKqaDr|*9kknavqK)E-<|w~^qGwA_Pi9hLW57(*0Xlb2(n<8Bkv0D9rOj^5F}|&cs`DGTcNYL zKTbD%oq*^UefH%Ln)8Y8R)04n9b)R{(mfjait6hW|4!L>7kM9osXV0wmT2T%YV9qU zOH%@yqhtzRhqZu3MGBRl1_Ad4aY334W!+VL8Ds;b7ttoCQt0ETF=WUC0R6S7X&hSe zZ=G9mZ=uYR=jTGc9qw(aWKMzVU_T-Gp7f6dU!jG2MAQ`)1ppte3kN8k9pX0SJxVjY z(u$#(29ymk{inctuu0GnS+KOlQUL=9+78m82cUYFjKhk^R$u~0mC0j zn4#`o+dd^SbODoJL)nvrju89m z$lu!&=8^=4n6S8MXeYO?P~HR0C;LHFenfVD3dw6a1B**4|-C)C9d z)c$GET7|p=6mKBPT3?2IDtsFRxy36~)LK6aUA;m0qh%9=1=se_N|PjkPCCSgN|C;4 z!Q=~Z=lMA3Vgbb&1h*Z6BrFfikt5d%5@MtWIM9Y=uEjdNcUX`3+AzGjy+n9Te7*^U zO(FDbTBYIu0Ep-#81hLtTCjHMEVPH|JmD!>q3yOy8+&wMs)MN7ydrM+F`25Pk?BpbU^Mv@VLIcm?|J zg>@|5s8sTF_AD6&84k`Ou{te{mQK?~2hiR4X&G^3CeF0S_3#zyvv3E>iyZZKN10)< zTP)Vft0GLz#$I-uR~(&Jfaz3YHME+RDW~Fmb$Ig8qxot7Is`?R(sH6~FwcvvObppb z-c~`*_2GX2y9Vle4UF@2zDc$^3j9xaFT&YW4u{TAyty}ZEV$W9>J*bsu8||Z3arh z*r0P1TM58Bo3v3@3hft`1994i!cf(Ku!*5q#jlTbA4Q+Y!@|jtO-w`}B zeC+cm8$#caWc;jx{Q;yvhV(JeW@sy9bW7ljm2f8yhLLsxSlur0jqVg8XD>)3 zPx{@CJJ|1b#J&Iu%}%0kl|xO^Z6XA04z$lWqL1DBpvNR$0REv7h)>M3YNH z>b)V28>(|pNP8`$y&SL==zgyS=raNKY=C|iV4nx*$^g4BKpzdTbpiTAK>0C1-wCjH z19V)FjStc#0d_n1(Bua~_PP*V9g@nWYeUF-M*5MzgO=H94PpEUXebR2R5&6*yY;%OP|Itb=vh3TD0u1*7keT30!8*ipJX>a={;$R5 ztj&!YWaD@8H8x)ljbFlh@UFv_2gG&O+o8wAS7Az)2E^$%*?(LjHWF*?z?=ZC6Ig3U z-?!|Ka2?oR?sXij)knoq)+@Hm;PCw21+1cbbQDB_^9P&qG)Wbt+G zkCi}fRRwAZ4b(*&?S_HPIJ^ZIVIkX_Cqwy#(g}6kfnlR7MJycU%)3-_!G|HXnTskx zUbCyN3zc10`ucXog4@C{wV{ZA6|}z%>h~$iCewV})Hj*R`(gcqFn>Sns`K#1GWL<^ zW3D=n{x z5xPID;&WUiI3BD$a8ic!u%#zeBV-7O=ZVO5EO>W&IDFj#{Um|~u%v`HQ*f36(2AtK zf4Y~y;GvR25IG;WF@}gL^>se`45+tIxfjNRH28~|7;jbG5lP<}VfR~!RaO-)8be_o zxQ9eLy)O(G=xXHK-HLctX-A*Z`Y#6`fD?czSBP}t{@|c>*Zy%`-uT}i@cX~Jez39Y ziqpkYh*NicGjI!X4(${~BzmC&m?;=SFjp9*bzf{-Xh7<|K(B9e^lv5?-F|*>pRaPw zXh7-l+p!=wP>#evM%En!a~VvX!`v&>y8B|-w^k5yGgyQJl`7xEcstta2wNYKAB(V! zk+@kKiRKxc+=}8Le+&o!%6|y4&qMl-Ab&e(tPHbd;nKFm4pTzli>C(Hb_e(;0c&2= zJTOoehUguFDS;`oLv&UM17l{0-XzvjL;QNNzBa_>MT7tO12#Lve)j`f`ayvyi=xtG z`1-}!ri2&>$q)K#YAAqUg|75bVxYv}qm5e#Uj%7oTn*=s(7i-nqTfyU!*kQ23d)=4 zGs&?47i52O_!Z%?@XzCi-v6voz;FJ*e{$q~4&Uvd9{A6W_718`nmRz7<|kq4nt)Pd z1%{VmGDpOcZ({lfk~TIVUlU;C15tEYuyp?7$YTP0zZ2W%Xj>dzSaP7fGhoXBs#%9o z&RH6kLWWlQ6ABXUy>GI0@^_B>t;7E9pgN6W>~{?0-(ndUd)nzrSQTnM2F`B6{tT96 zIE%nO2;mNGBL$ad7X055h-x=d+E*mA2H9VvHyId6uY%+k6-puBq$R??CDMGEW*~B= z+t~8=1>l*5thh;>2nE?6je@8J3&+CJW=ctdEj_7&(ph)cV!Mh;X*@(0*wwU-SQ^WX zWksAuuyvsQm8v6a*# zds#zi-73~FB&%w9jad&kXU%o8Z*#ipxfI`=GAQ{XMT&Xb+?3*^7Ot>3YiE6Ef5<3%eYQ})7j5Vcmb-QdToLxCe|iw zu6hYqv{SftuqNxX$Tva-s<3)H z1^-Pn2y(K}^%BphQILSN2K;m<7=D+=pKCF)YLV#T4p$yot1QW?7| zQ*k$*z5zzxH7RugB@1csg{r_)CdPmO_KC@I2_Y>2Z@OKq4`{;i)*3*gsR-_KahmP0 z?TfJe*AYd954lJKD&Rhu)VJxbUbZLc^|CSY1J-^qI;P6z6rA23AXnoNEtrd3xdKZg z^oG|3z*oe*s60fOfFY@beH*hGLQb5^=OyQGRW- z8rrOeevpLw6u5rWhF7kS@*ASy&6T*BniUOBi^gCBa%2v%gq$o(ILWi2n#u_%+8HN1 zjwr`%i}LMJd0SLq-OY!hbb0gu)}7tW3U@~Z;d~L)N1#Wc8X_e{s4M|=K+0>?l#PlG z;wE%loE0VB!dt;YE^ddVI(V{3;aN z(8`cPFdnszL22lyJBSz{wh7!2+(U@)Ad62b7~g`cCC~>;WzY#sC8h}grBLN*SF|sN2wFjkHHCX!>~*_3X0n zILb=P^SPR>xs-hloHL0yM*3m^e2r@$4pDh@EI9fyaQwG?nyddj*YsIV{yf*5$!*E; zt+{T2%+8#=E7xk2?4el_P#niYll-ovc6Vnd!*g>qt&ywPKY_fW_1ZwQV6@rgR*O>v zQ5k+%%U)EGzX<06N{UHi3F0Z&5)SVdI5cC%@piq1Vj0#jyu{%c{6I*F{M2*t5<)(^ z^TgDj=!t-p$zr0z-rzE)ii{c(oyPv8NOBG6g$j-hG{? zt|h0SNiR^`Pf^tpe#x823AM)$@!eMlf&o>Atq)GMy9yQsBkbY=B4R3c%m}=ULKdLr zfa`u7PNxIX;$o_6$q;u68N*)bs^M;m8t$m_o-M7l()!M>1Jb1(T?f9^^@Y0whQzgs zZ)+jrI9AL~8<@0hL#sq)&*7p10Nx@PHR_G31OqvUYDQ(_NJs~RWewXYVC0-C(xKYX z)?%t0D`AF&yCqBi;n_y*^bF9t6yZzm$sQvp!7U0Si3E=wvilq>lF6eKwy{Ha?^jk!ohc|%OHHiQ{1MF3XbfLr7wbf z6NqnBu`gp=ObAq*UwzAr0lW1-Jjj|X)LvQ!_kiI5(((Y6AEep?)Y(g5LqID4wb=ud z*Yo#?J%vhp3I75WZYh{Eu*bOgx}3b-%}_{25BThv85j4X=YGNA>E@ za(qwDv70a&B*gQ;y?(Q0&$OJIEcJSeU!mNYP&gl#*T?7Oae2Q8)w#C)2+B)IZKyk*@`UPl3`mjpnTz>4|C4vIr?Fal}j(> zGFIL%ugPjxl>(bvv-I&S+mxjrX4ywsx-=^<%hJ_Z_7JX>W#8Z`S++e(_h;Fd9G#a{ z=4UlT0?JqCoppJ-I*)TM%)942KZ%?pIkg!zV0%19;_Jy#N+mn=eUR#?Te*CT@+h)1 zuSpqWq3Fk#l&cHN;fa5hh_<8Z=eD(^Jg`}mR;j(c+*wk7((UD&368qE93Io9 zSa$N@Nt8cGd7TYVg#&`D2y^a;Chm^HV^0xZqFRFIxfw=a%7S8G)tU8~3aipm%D@x? zepI-)0S^oh1_cnxw92h!o_4UFTWo!+-4{wh9BCfN%msl||K9v$UXb7`%CU5RY-gl2 zhi9Hla15bpQgx!^D13D+`fyBBos}{EYz!zZeBme2Kk{<94EJ$P5#7?BmrE?nwQ_r9 zMa_K`NQ4d&Wa1SwwmH9|8?~RQD1R1vvrZ;FnnowG@P6r-FLPN;I}4FX;(%hnM3}*V zuMlj_RNX=hAa5YQbm&nUh3lRUK|rCul3znPcwp!eMM+IADd)GBgLxL|5y$q{PwBv~ z6L+)d9qbU?#jTk$RAGHW(Y4Y8QPj8Ys9Yb(@FAi(%h3Ii!yL5 zhBqe3&ZN9O*|IIEZcqNB2Hhhths1_xM<^H2Y&R>mI>oQH)URx(L5n(N0i3^?l0{kJ zcU+sYQN)LQoC@zrk)>i+cw>s}OquVd$o(mzhS#RZ%PI4<6nQ}WwJt?oP025$iqEIi z7gE(0c*Bx-A~{sWKFk_dQF$UwbXV@p(gj(zFiW4vvL~~2QkGqtr8BZ@W|qE~RbI-{ zHCcv{wGF0Sjg+PQ!kS)~+h|yY+DfuTDFgXD3b!=CGYw^pZ7wAJa&kRC0N}!?}4Z!^a z3hbG|1UkYNf|h%d@OBmY^k8`<(SN2iNAD3B!VVle7R;LxeM*8LK8Aiyz^5@0Lyss) zRKq?WWjuyz^Ck0oN{_X^C-6en0!_#oLbIf35ZmDFtPJfUNpHX05PDFm!$UP8pW(Yf zKHnigDZ&TK<&l8HJ7Cs?C%~}byhM;1nZ@ur09z+2zKaE%OmKC!2UT!&0>J@_P9%=} zA4@YTHPI*x%h&(`KPM?TBfwhWF7iR!UHg>8;TZbRJgJm>jTK=Sls!Qzr3x8KvR18$ z)<^2B+5pU^T9kM?sb(|5&Sos@NMoYm4c4qTt){INE%ENrZi()^+kK=h(WA3xO?$2v zp*6h^=~v!&73mE3KV|^9(FfkZ4&#H~CPSiwA0mf`hyIzTl36`jH=P{GkEk!Ig@J#B zgg&AO;tetaQJRtD81ray9JY=pC(3_nIZ^%7bb2ZXxeM2jli?vhrFdF+G&uv`pGnR( z&mw=t);Z)n^Kaw=Z2b?pNWQRmk$T|;ml&8Ra~IP~*zXqQH-GDw2mT>nj+Xf6>0<~# zNiCdz1);$!i&qn5>X}G*qUJclP>X&7F;Q7hK)tUg=2Uk}zKN7gC+baP5_t9b#VYDU zff$QgHOb>|Igb$Ndo;X=AarcPdc9Np1+UaHA}=MyWkg*{&b^n& z_mHbWUI@a?{`ZmKN`i*e??)$eHSW$c`$Jb7E~xYn835+;_9}SJ;XF#+6W8yJ#}xJc zxUvFK2Vkb)D>DVAZ8MKFGJRG6-J@ ztnr-{gr83km>BbPyNx4{negF$!h8x2;#^d{Z z&k_pzXCOUK#sL=s?l2Obf@2gUL8>pIiD6m}zi1e)daB}n_6CRz0T@;30lzUQVP{qc zZ>&(KS0IkVV_^9;sdi(9JiP*K3Z)XoRWPg-P~O3Z&G-+Re6`+KQF2$Hja*j+;KMy# zObh}}J#g_s&@=~l8a~@(FBfiz^=u(2Z5&ft=N|)|o&7K=Ru?j(aw9ho*p|=ZeIi<- zq7p0=+Xc8KWds(H;M9!U9V7ONN~WWVjj%&`VK#9MQC>LT_d<08Er2TbxF4#jf2;xy zU{-bRtBkcm@1#Z8F2;2A}s7Oc-B8FU^9TcCx^4?(Aa%S&*#fuCei zNWL>9-{F0CC%%KF3hAcympY+oO{kQnR;ouyqv(y5>a z{Krb=hf4LwN|eh*v5Y>mY8q$PG~HIiXV-KatXG9%p_QQ^(I(xv3lm_l-BW_2KCoF@5H4+#CMtkU!p|vE+BMT@#MqnZEPBx=L*%*QpeI>5OMkO1C z4>obSllEueN*NA4>U__nzRb0yHGINu9RW!g#k{~N3bpzET>~0Cn4kLoq&z+)W1?Q4 zlsiL;G>AQxRIY|)P6m?0bWuB5)K&UlPk;zI83Y7m_e{`w(bv(}fN2-(jm8cM%qkeI z#yUZSfs+k=_Z`VMy>29BH&$!Ys$oLjT&>ilXA*bEs=AE_mpVWdOa}vA+ReG88smb3n8+M!W+a@U0z1N>c zwh2Uc2#SP27-Ucp&Re%*eGxjr9Eu*$f{bhQ+QfIbW9pI}$s|AH)5Z*f%?oa(d_85au ze1(!4zZ3GCP7xLb&2$l3$g~spfrCJB0j5N3))LCXV_wELZC zJ?ZUtkf;%G&r~lr{GVqkof)A~@63(7&ae>`6<{xv*o%VOD@s40rHxCmj$@#L&>OrM zhoe*>?MnvJJH@tzbw4 zA1HoCRsH*&S;`>fya?XWaiPwVI8v;l=MLok1AYk|t zITO^V3L~pUOfq}PN>T#6*NJt+=ZHS1kFZ9j@dADCQV_;G3qfc-fk*+r4f?l|eg^z5 z4IW%tp&yl|lVS86>dhythtv)=MR+YUMDTZ}p^JEI(+bir zeYhMttM|VtvWHN_fC8Hzd4%d~sXPS;Ee7>lNR99-2pCAHUoCKd_**dlz`bCbJd%Jb z$QwfElRofO#^8oYL1Y$DYp9amLh#Bk@0J6W0oIpkqKXv`Z$%Flg{EGYuMnuL4>+vKIupG02|srthgFUpmn) z??k9C_!UlM10;!mI8~>5;AF27V!#pUo~%3C9nu~>$J4Yts=4s63ZK)2XBg_639Ouf zIHvY+KwcAYw6Ij+jlmJ!kNjn>%t%3gjbl<%!zMmpL z0D392yNbg0^nP83oG$mbe-JEh3K`@nBXL&^IsFuLvo*xGj-@9Fl3{|>H6*YBT18Ku zC>ZO74|D_?CJs(#v_=d3_^p^M@J$+G#skowjswO0GV(s{1?c_Zmx?Q5zO%#_KQV)FW@pN zhl;g}rB_PIDv8+orv&&Dl*JKn5`g=VY9inyu-s6=h#`-eqINc83kY2-)^`y08Bsqc zdLPz96ecKSl%3)PB`4Qy1eCO{lgs@9oLhGgdN<@3^l6IZ9fr(8_6||sg;o@nqiZDj z4XHP(lz>(#gxOg%;DZpzqV*o7AenldBd`WiebRRKFczOse^-f_x?&dFKz}Ub*TK)H9~8VsBe$olpAfPV+_VpZd%AKgPG`E zWDmi>BI+5qA&52W(U7{N-pqRceFSa!Hkj#0V_=i+%R$b3xk8qD(;zXo2g zZ>-YbREjiN-5&t!5CHdXjT)@&sM8Gc(1%F;d7_LZ(m#;L$BUc6olnTq1nG#dny#e^ zioS>xp`VHJHRevZK0YVPhcK~_+{24B*n!sBjNG>PP@r+!d85<7d+N&we*nG17{JG< ze2$DP1cx{qRep!T@0PTwRC|>;IA$qai>Xby;Nv;^Y|fgL<3sp3s5Q>}(t*R^hq)UF zfdjx53BZ*JBE694}!SJIP#zTU+f>j*|?0&0Ou0O7n~sQ zkND*b^pg)OrL=)!ouZG|Mhe_Q6S%QynB`vrwBS3r*n9v_ZUNiq_Jh5y_3TE{@6 z70rT~Enle=5abo)ZhXFiqnCp(0rlt?E6yUN{7wXG_}hxP4bN@mq`Zkmlj7&{34}X_ zDWA(Pl~2_+%lu{Jka9({wGfZW*Hheed9iL`7P)p)=Vz{^3dZ$WiQ-%6tJ>8vLD z!-UKb(gj!}7l%~B8r9ZmD+phXj8DRzrpiv0?@`I8sz~A$_vw<*?NW#6=8KBF6~2FY zv1}}oTXp#fMSB4}rC~mDtjw>HMeJsd;w-?!uXn>dsp;x)!cv`z67rG}$SLN*ca|6v` zm;+GV5E)f!g;bfP7yOkED-G!RvKY(LzyPTe!&pNl z+}uMsE{FW#GNdXCOa5mKwp;*;Xg90{FdWXG7)E9czKcrw4o7ClO$vO-!(i3@1ItQ* zx`cUGM>m?}aKPX(VIr&6O?_yfu-Y*6*D{JQ(gZ@z681f6Sx@A22ch#Q)bHLfD@MW` z`ijBMdtE~DCix=XLJ!qG1x$k&3#gqDT&NxFXvE;3AdxC0LhK@mW70|TI!Wv#8QgaR zlQuh$M;q zHgCY_2c3)tUO)JUns5e`77pQU!+3G=We}}^+{2$7Oa=pL5Ljh63{lB27LP**!?jIG z$+VZVvTUVU@j0o4>!7L$II(!GRCA6Q2D`vvMOOH;rZ+>BHq>?xlN7MAVw6<3#F|Z# zg;G@AknR&Ebscg)CRKH4_;sI7-ak43cIBYXA@*QC1QiJS^TYX2=TP+iLmc>sW-h(~TF zr;Qrj=L~jw+n=p7j~>NGN;sn7w1&~i6C68!)?{)*J+wOGs7J|P*W#<^@ z)}C|tk>wg6xRhQHI-g!(pZ@_Z=Vcr(2@77*J2Y;{PN3%R*8hBpXOS^g3f*L{`Hu00 ziJ<=&>nHzyvvrIG6XR8?HbPC7c?V|L)3Ekt^l=3FKoFwX(HB#C3JO6G1LkaOH(@{Y zz6kfLJ)tqw@N=P6R2k>EnnDDcLODbWv?uzCn9%=bBr%_lGP@a-<}5L9KSzuq=0JS& z8a2LW#yqjpS^__dN#$vYu=&&iw{ zKZng=@-0kRuJMO8vPL^tU?vf;tGQRxEIv=;_iD}zF3;peBw_%xrd(vKI_T+Zm*`}B8 zLZMmAXy$FmD+a;BF#ZYU-x6L%Z>9VRHy9~=8Pw|4BE)FcLA|H4cBdMWdMpeFYMjYW zLsCyqXevE{3P2Sol&8gO;ERB42)i;=hYT$jvU)ZE=b?~wGfG7xMR2`7SRE`G+azPF z6dKqKGX&;7CTK*Px@L&05Nl3?+atSA3j8`ltdQ7p_-p~}0*DHQMht&1eoj~G4aJt@ zwqq6OASQ#vLsH_2kQCZ4xpMkP$tqgobTMB%AH0Z0N9y+g1c`LI$=b1=JiQbE&@Pgg zwJK?%6ATES|lE=iJXhTS5^9)l#?z`MY3k59QaKg%PRz6+`ko* z7{H?n-O`n*Sp-GApCgq+Dh5`ws@G^`Lq$?|^6{GKL~p?Jd%l_nq%VY(GX@jMeqrYH zhbdd(k}X__VcZ`y@GvK^RgL9C>U#-HxtSMr^(8Q=2rfC;zMrZhT79yAHdA<%_eAYt zq&n?Z5ummg%6bOBrvW8)4JV&a{bXew=Kjzm5IES=fY>4v#BLmyFb-AYD7$^A3L^q6 zHm->Wj8~B&)y_q)ozJc(=;MQd2?a232eEJv?uEV~qjDDF4HXzFi04CkNa}?;L1Cf( zHk2Uv;Ubs=>_{~tM|J{_;HGv3uMVN!3()$(JIyV@9$SMcp93o(%>M{U^LNOpo~St6 zhV5PuOL?ph!{2p63aM?7WsJ8&M9Id908{tC+;qA5E?SYU7Sg8xE9pwCp%>8ID4T}c zg*fVgu3iBVgm{@rYmGc4R-1VWc9vsjvvHJp8}aS2Ys>S6a@rI|>dtzBP^(ss3Mzhm zh8do1l7A{n+X2nDnYI0y1(hYHrz9gFqUtQMz>Eq_IQDxb`SRc$rmG_ZjBr3lw*Q5) zzDvDdL=T)8D)Jmec}x~tsM6b1q4TdWoI1UpZY1gk65e6)w=KxCot6-UFx6envG9t; zUbc`jWviCITzYz3kyY|XFq|I6ybFXnFn13{cl zt9A&riYV>V#%JipvnqcQPXZjJ&gbdUd_5jT;j&iVz#q|#wPGGxL*r{v&`}Np|BrN; zbWppFw9)=F?kK9lP|Y0D=x|7*q@2@2TBxQ?fS6Yj^MX&}ldc2| z;3TP;JgH=k=7;g=?t>k|CqlJ{+c*HJIKw;Hog9Nb7usRPg$8R!p<&7|St!G)>avci z?M~TnPevimT5&)~3Ei(BNcV*9Czcxpg?qP>{`b002GS2?D1oa)5uNTn-xcfxundW~ z;0l9&N$7mkUxYgM3Z)w)Focbh=qR#}L~tb`w6-8Gaup^=Bmn&ZukUOSCP4{OtL-on zo0DB?kP*~Pk^`S4(+X-uG#sJfIvic4v>_S~T`ScNaU^F?%rHQRVa8J}$Mcux-X%o| z+2N~6B>;|938-6FBG$fO4j85G+PKL;k$-gB9(Q7Q zJ0+*v?2;St?`#$IyomReyoku3C7J|2D)=*z53i;ikh?;E*M7607<)joCB+C)d@5i} z0uh(Hz$lF43=#K*^O)+z5-zy(d@(rzf^a2T`z*Ay&?AAkUlmO6x0S2?(ra*@usSCnu z3t$iim(O=HIJdA%_`ADdK%C}wO1D+eI#Y>$rMtShM6EPzinyPF=z4w7V56}h&5J)s zd}BgsMSne@ydth=A}R4Fzq-#)19EjNidI7;45580ZE)BoC>)Amj)&vLdQ_$x<;VtE ze@-;*VN7sUjsQcYtZj1SmjmW&fgtneLstdm`N8%hO07Df)KNykFod)E5WG)8mV_p$ zgzGZ~Pg);^flWGwXnF*WW+eO|>jK4}5hpeM-SLp8cq8u|x2=xq-^1q&!mDR^62LYv z&0rhjWh(K#5lY_`RF(x%ELpGuK&@n7IPxBc-KDd;bqSyM;_QHW$Yhp5u3)Ql^bC2L zpy#RyJrI=d4R%O9y!L)l@U%j413%zEu`kU&hO<^U$;h3Hl#R2-T_VLGRprHiejudsicR12n(+l&eNHsn(>8rVtT)>9G0~iBZTZE3_EG>^ z?#8ZWdP7oKrY&Ilr*tpQDe0g^)YZ=j)q0lUDW&xPg53d z3zZ=v;sqG?$`8^n1R8&gVwKjH?3eo>&cJ-%gnK*|08Np+AyC{D&>jy+n*w(c+K>64 z0h!Qw>jJ=l2tU;si1?O61raI=uqGBFk41k&z&v zLB4%QkWGOS&4PbHzKK32?qjQLiFG%h^ELHNjx>Njf%ay8wbi@Up}1B-5PRZUM`8ej z4&@SYm5hu78rYN6H#=f{7LvXS{VJJVy`a*SEh1P*I{S#}{7&M#FA~2dER7Fi&_E)C zD)qXsJU!el7#oMPW-;f*8HA26j(e^7RZN}Yo@A8!+1vfR7*!*jPK*oC5CLi6ZVBN9 z%ycJQ6X>^FBk2WUWihN1NL08>wI6Kh6PvxSNZ%T4PY|)q)nWDFaCl8vSr4{h%sNy2 z(xxJNppuObNmEqm29>@TR$mF@US16=Z^7exwWX#mMKO1aU|HExFX_SQ=x~T+xK$^va3^E?#8Q2p-I8{ z4X}Yw5YT+RK&dCfkgke3*lmw;_fv5{+eMfBi1;Qa(mP_tE_gTLwh90d8CC)cNY8_y zGJ_ijK_%1R@%BRL`oQYCq28&)>#vCP;;L!D7f|Hb3Ha6}bP9xx&HzSqSx!!ROyDNA zvXe{e)5Mx?W!+1E4==5ImDVFmYqPYrO6y>0-LJGhqO|_~aYvW-uRK7eQrdC$?|!fZ zMNt~i1QJx4HjJe41RKrRSgHD+O*GsVx97%NZ;D8_M4U+?Qvne-=~{_ik8L0p$4m4Y z>|s|+NdLq)`>6I4Of%_68hQ)m=TMA~N^e?pyM^@*OL-0Zu=S2b-@_jIzC}M0-+XM* zJr;iTndQvGCHO){=i$d}E{lJSs|3CS_btpv?JMME=uoP(UxMmBSlMBQ0!UPz5t62c zT7e_+zenYzVA|Cckyq5@>TI|FEDOXodJ_ z2GDO8Mi1QGQ9v zKPKC8R`>dgh0wNzpn_Qt#Cm{tKmFLtl>XVXS*`&~a2iSh0Za+n2c{lLdQTWDr}$Q- zjd3YyVhTqHlZ5%!r{g!KxF}5F8N#j{I@WDVPda;aBPD~^cE7lwKj1ojF_8ff2T%Z< z`B-Yz#D6Gm2b;dXHHjUB_mC2wUXU^tr(n^^5cyo$9r0{l7;LW1`&H7BbVd0vBL7NC zjWO_DGQjoS3FCk!_feF72H%MwYl*5mqtLXrN9mhl{aTd1jJ3Qq%HB_?A0#yQIH9e5 z5~W{wzj-f8-x0^Y9i`jE`i&@kRjgl%vJVrUMgCCSLjJpMw@IPvQdN7BB}mfy0-WdC zW;Y@#gGOh+xHBmH$BHn51#@2>yrB8rHT?3dwCkw-7^T zr4TpJHwLr41gR)OGfT5HeVCGeqI?}S38rn*7s^spIF+RgAUY{@tq^!8!9XMOalPvH zUe)Z5COkffXEtZVe2>u!KTd~u31TMyi}zmY*rB4;+!<~+Da|ZhQ)^m}aPuW)_87R=qDU|mL>yy9S}PP;Ad}9gr+Yf=+i)t2W=*@T zdWH}JYl&}KHoYS$?Gia!%6mzDH%RhM*`6#7`SBd81(L+HCszj5IZas|Cf?3K91z zvoiABOozW@Ki^JZ#DLN73g}y|`7E$b;&D{GM{xnqSZ+Sfy+EJ-Z9b<~Oy|V+UN-$e zMp~O;kW0$fG3mP)Of9I&mDJpjk)OnafFDS7q`88910CryJO_5A*~Zc(3<$dZxP(Xf z+3d|2eS{J&E&-t0zHE9+MtaS=#PxA$YMj9rYHrKOyKwqaKZWh?_S3)M^ll$re$eR! zw;yqpr{#y!;4f1w z#c0GlR-=3z_xxUJ$?x^=j8?1Nkqs@&wsnNQ%!J>{pe&bY$QG!nuTjJ(Aj3W&fS9^P z_h>KF*~`La5n?MK2VlkLkdoLQ6do^CGW#i zeEQS0@_CwkmR9zr$(+ic1&qWj6FuHYVhi zXtY1U`mO?3|2gO-onB9AXMduX($O?6Osh0J&^Kcm0Q#R)!`K^$kRLC33nTKG@D_UY zOZFn^=?gFJHhMp>w9XUM_in!Ro{X|0LzZWh`!ZxfM)PNbd|?I-vj>oJeB!dqQ12!- zcum(zD}BDdvPz5*Kp$~pUn{!_9?MqIY^A2l!edzv8^gQme6pI(6IWe9s+NQ38ndpeS0|UB!24RwsDU&JvjcNpifRp)-MCTT&6HLwcbU!~`3X zJdJNFSxL9xCI|bR>m=W;g{GC6?5Yg8KLhXUx{UloPX00H-<^@)%8)lRpd^2{v@iTa zPWlFA=HMbxscwQwA*>+Zr%>{*fM*4IpchI!m0d+Z0y9vQrf6b* zdV(U#Vml0>velb3PaSy*TJD0;=ePMb71G->`r8?@BLnrWhdeW@&&W#Cv*f0%GBXS2 zn42+LPrM;p5?Sznh^}5Q#8yAnhybQ|U#{?y5y%u0($&|1TtPVpAplXwb~L1$+uh$F zUU$FbO1Q{Iz)wgQ zKztDz`d#+VG0O4ZZCnx5nWpZNF`7M z;+z0nU!H+r#qqZo%(@O)APLVv6MsT@Al&kN~s*~G*wnUKZJpD8!X zPiDhUWTkak@@Q5+2pjxWihiFG+MTi|ML!0Y8v7tccZ>C|6x|`#Z>885S#@t#Rs=*n zv;j|e(nDQO_?obVy(e@_lN=#v97Q63BxWI7s9)g{!u?uiJGr4`fHUg4T62!ziL--1hdD#+AP$Xe+=;18*~) zcMMqp#w`&}yBsS7mM)tDKeY1%!9*z1gf^m(9rE^l-;|}p{x^%tOGQwaAoT{GQSg=M z!eiQ9ilr)LaJI{!!vd}huR`0I5iZ-ul6-q4p_Flyf-{$uMW}+3aC?h@pceFM6LX+3 zUMAyYwk9Gyj6ywOBlJsAey!NnC)zC>D?K0v4`{S8!6H4|5~U$sJ7fkC{+mw4_zgkq@D3aHU%3DS9OwmpVY z`7yq=_$K1jh@;RS;=iu@T&^grQe!`JyIU>hcfNLHXnwF zR)(A>HsLEl<2Jz~fiME%XH|%(>KaZzt;*P4A$byC7b5rz1oVKn-^wn!ruhSB@aB8_!9@V+zl>xKRF2Ih?ln zk8m%%TLmNnP~&8J2neJzQ z_wzq3!;6JwIOrh5FbjRD7hI{repx4S@zWnx8lQkenMGZTFic)99Aps!==MRSYY{$E zsXm0mlsX{RBd$$2sY0GyL4&dZYUO53#dXS>g7T{#k4fR_O08b|p)$0uvS;t;hRX1L zqFB3lt}ld=48+3Sgq=;#5(S(=p5!V>2FaGZS^+5lH7JYdcQ1HUT^NKFv_saBFu1ym z!c(VsvGCFJP~^#(Kz*BQ(z`4CA5@U{DB82vUv@%-sVISUIJ+`vX@(xWe4k*@0zn^=9MO*?R*y1@H2LDxp0LRb#)=LWM@U z5JkOe@`?s%w|{r#fdISmQ5pTL%=0If(Vb<`Ft?Y{H^ut3GWxPuZ!Ke*Z1!S`7DAF; z>2_BLs78aQ-Yg(&08NPLZYUDa97qrtJO?efwCHV}$GW{^*swa`qws9k70~Kx)8AGr z|E?xqSmZ}bSyOh9bt+z7HHcDyKn$45bv5$Dnzk3K!|SU{C0cP8ZY|bMb~!3^2<;9~ zE&|4TVZIB%N*zAiV7}LRckqFy-CZ^evDGD#@5x43V~VXrQJ3mG%%(^^aQ`1DrnW|$ z|2Cn;L5Xap#|bFrUu6_j3*znXhZ{_Y9WM$R?vKz7N{=jSvS|TnJ1EhB`e=wO2p`?w zaT@4kRUp$aX(h^uV84wBBT{@txyAgjoEV3?_!J;3hEN0J6~5P+MAodfpaD1!08ucy zJs`?04W@)>MUcVPgnWYW?H5=Q68E0+GPj+*5m}FN5^h*lxM1Ky{JaT2P>`dsqh8uo zPp_#_C)VIyp{N2tg{+L(kq|Htz{Q<`f_z!Ak!FM7eE+-P`9tHvPR3c>*Lk9QnLfj^ zKBog|L2xp_TD#OYyIDvQI7tyzB2OjF$Ajt(4fL6${8CbY{UR!QksvV<18^b6jUXE7 z1LePxHVUHdG)rQV9wf@HnW$4BW+NB_U=dkCUn2m=f>Hx@EK3`MOY46kr9o8?%x%6_N8 ze6K-T*`%&$0<%8l_cv){Gv(WZ#~lL1ph!`FodTjemcr!6oOw1lR4>9+;`9`(V{{-* zhCE~;ohA!z2nHhq){rTqBCx4?g)222Xj!;J(T2M~AG1@)j=kikyt5iqUW04u9f8c0%TL!bzyt1(+X3_f~-bBGJf zCv&=7AkP!w3xRt>DfvX)bzh(JJoBw>NndX?PBrKxL!N9{P`r}nA?UYY-<#KLh=_?c zF``}*@sEu};e9>>0WXj(-BJ2#S_E(Yx`_XVhy{=^aU#(Diqh z&t@I8QFB!{i!OF!Hv%#)lWEARAbvod{L&Ip&)1Lc>Q~QnA7U!mg@8L+X+BX(>;9#6 zse z+ExR+7Y9D|EkpTZ4!Im6k4VaJ7bvtC zrJ{g+9m+@oGOPK4#l8aH%D^0|w%h#mr0@7i9QiQJe+xPE$`-IzzX z9^YY`y4zFpWj5Im<(s1N<53l#JI&yGroO|BybTg``+m!wYbkRqWv*q{`k_Dft}$*) zn9~#X2{}5Bh)DY+D>%(M@;WOq*^rQjn%N)5RKK*`cPeYBX5u!)do4P#kD5A zInq?q%32g;aw@HutGb=3EA>i`=SW=3Ywbt&Ote2m>H!e&x7qzj8|jOsBX@!~{~qnm zzg|ej`|R}}dps-WKaUxVBkAx3o;u`x{igTF-`sQDaqu@QygwQaI=gaUyWn#~5w{qY z5m=7Lax#`)kX2%VW}!fs0WZ#6_o#+Q=da*U0dK8Q{W!`1j#32GG3rYT5yt z`@zxRexLiV0eHrX?iJlSk}xc^|IZaWp(Y>#OZ`~OaCMx4I~e7Awp*}X|FW4q-K^Fs zRr)i{Y;&^&qyYY-x&r>&`i^F{>o@ztw)n+2?mpp+62}FbM49)&%D5Ibu|>jcA03Dt z%JVJi)|L?XBv6~HPG8cZ-r1tv*eJiv-)W$`=3H7Hw%Gn=r^{g(_6G(8Wgm{ z{2Jw^7I}M%Jeb{dP)pn*p4)ASX^rX>ai+X*UZZ!te=k)NpHPu7TvvlJYUU?PL&Y$^7aE&gv>K+7u?JaSP|}kC z{sY5<$uR-+w_TKjdI0T!iWA6ds{tA!kOp0BMlT|9+7&`V5Q#+=OC=I#%UC&F{pGs5 zsHJtTR;^*xNW-tzs#GjuO{?`PR?q5+5HDIY>LazvElQi*LuS;!R>LOt@33nZ6QK0Q}G5}3C%9UgJ ztHh-cb?=KyiIlUWefRZ9qv!%I^;jd{2>no$EW_mXNGn_4S_qVU``49x`z<*ANuF=t zfI;E&^~LE$g3i$%kmCO__8xFnROkQyJ!j7Ja?9Sb_ikUdz``zN*+P+~B3LnM#6m<9 zjhaMFGwqv*ii%i3C00~y*ac%(RMe=k6HCvB%lb_~avPC55Yy+}E68cX|~9_RhIoS124;f-ba3prp+dpdGip7#KN?cKTl-oZm3_# zkE=_VW7KK_OWxQ&;tO{Cm6)UiE~6{n_{k3g{&Tc`C`PV6fGM(DVSczDd3SOSpQz zNj}Toc&5pIO7EX+%0JdL@Mu$2A$YKA#XVK185(WUq28tY~Y{Xv<{k#{Q1u`g{yvAGO;@^+m_0)u-+9^L8G5Y+4?jW`9&# zau#jH_$rcLkg-jE9?4JH8yh3}k=}n872b;m-i@k7eDrHW^Oi{w-~ZMk4w*PKJx6j} z__~9dZ_i+|VHCsN85b!1*H%sY!(usCww(z z++SHO#1GZ%qzt;hbZBvCb2aJbLY7OE$AqEEIU;`Q7W%0t%G87X9p?-^_4K~zw4tY- z+9H?er=Hw0aISvp;G&l5tKV0B>LNi#$hdX1-RavNJHTTHhaP+KH@XXP@lW=5T+&zV zE-U(?CC!_=%ZbgBzjSw5)GUudJXH&u<&o@-1sP%XKd~+ z8@{zI{}LtW*HzUbPoyUI0bd8O_uSEMCpbyr!LmKSkG zUYM5W>u=6W%X9Sp?DW(>rY9{+PfbSlmqMfPQ>itAJd2#`Pz1SrOK<+)t}>N?fFwiw z{HGJUUH?7|xx*%FU(h*5>dpT8TQVJMGV+Fud1GeMZGC>yd)D?vw^!RST+`xU=#=iw zE%k^n(21b;R}Qu4Q&n5RR*H!3qlKO}v=jK9*f)e36~%iJdN;kw2GYjh z3vr30jduJG4fsDyF+e}i1F!023CD zZItKKw)(&J5!E$tV%wCYo&ef5>U#Q}+TP$)hkEIMx>c5eo)-Ar#ehf*^z$D~DrP`e z$zNq^(Ll$uakolP^U}DxS>8);q8Gs-f1B=2w>BF$>E3i>v%F64|I}Q(vpIctbMSPZ z`Fx-ET%Y}XU&C{K)@6l(D~3ke3Dp{cb8Jw~&=u67ehyUa+-gVD*32j#YOuwzcR|~w zMSynhQP&N~UPGO2s3j*IIu!&N(M|&$@5CK0G0scl-L!m*UZmbk%MBVBE!C@O<7M5i z)~DqQdjEV{KCAc7q>Hbm({HA|xBATY`@Hx1?DzXx-s`iLbxc~PJKyC3$@%`x&`wJ)Z2PgJ-oX~GA?vG0@wrBIn&0q-HiiOfL=Yw9IUNw!LsCfglY4m7u zr!LkT%pn6^7uB_|tjpe(6bq_&dAlxF1(n!YNs$@}>IOq=4ZBSj?XtQbUQ`!e{B_X? zevJ){d#J#IZZHMfFKN0(Rs*5<1EXB*k#VgSIg#MVnkBj$1tXLF}$>Xr| zMA8{pNf!-vI37r~2$Y?KgBI2*#b9`&-+Hs(c%$Ebvp>u6a!HeUUXy>qKydOv_M`#pv(kj6LyO$8)gAz6Vp{%c zXk@L7r)bhPh+aB$Gwbv;|;q;7Vd_~w~H znsPMM!1r%%o@)7HC!WH{qe&%2X{ z*&UYp4U|wiQF}>(oD3H;_d!xy{-s(Vdo~GY0Rb-=VZ0`sH^shh;Hd@${i-Gj(Ud+P zni_db7Nbx*hL|w0=64J87(rMK7-lvDcf?nsk)af@nL+LG(mP7F9x0up@RW3(CY%$6 zaiq+*L6HBVkWUFePT?3_t`xb+*5Oa*{+7>mC)42+(S4frYd#~tUIq^c=TQi&M)DV- z4iAX*qYSu=%%35$XOdieB2Eg|ta(BB*Nc3J#-$^4bZ+tnhFk`~x!x|<1YTQHcF@nQ zfd4r9n5>5KQ0D4m80}gupRJAu@h9X`Dc1@4xFqv~J&MGQr-`slyO$c&4Z^t2*V?8n z?iVoE7vXqRP&1L_5Ym}_Nf4+POXdF_rkyebcRLUv+RDC8giPNDzP4Fjux;G zX$d!&++J;`7MbR4R`_R2-fj_OaJuE>!fYnTl93MVi$!CDX*?x>4r3d}yUT*0oaco7 zyl4jKg5wnH8T?{z3G;2y1LuY{VEbV(3>Su8v+9Th1!>r|xxI9ofp=}*e4V0!LEI(ji4z{fjT?O|Q_uUmTqMJlAe^AJ>(jnn-J10{ zGsn?@4J-={*y?96mKk3Mt9O`}b!P3qvlQ(@InKu4O=n+kERZkhKK_9*VFU7fL^#R2 z{zzW3{W=-mICOUeeSP;%FnEL9y%|xfnI19&m5IClME3zMX;uHM-u;&3?(2-T@-cn) z^~Qvkj4`P%{ax;n;eFh7qb~E9R3#wZ*8cWk?u8@K(GeOMrx%+|PzEFjP%$Q^Ci#~RkedX77-@d_{Hc`x$8`nBsB@k_-6a^`g{@?9F6mx~$SaO0qETka{?vaqQC# z>j_XDNQ|4ilwQPkNP1)?E>-V7EXQ@kIc}SJK8P+d?3IS~oN`~~N4>gpb*XrlEP$@D zZDNf%HBqm3+K2wtW#Zg3r&*&}%yvz^8|1Dtq8knG9p$l%_>U@iFJd>Dv*JahVXboC zZV29LsNAX2x6;+A(5nQ-4)!_PFL^5>yo8R$ZlbgeK$-%#f^u4wP8z;h?tpTC8ASIO z_I-wRrwaZuRPOF?mOH4HdmYgfm=@?`!maN2ukKHbvG{z^66Z8+Y;9^;EXa27Ptn@a zvVCe{AqOnLy&&Io6`<5H(7lu{3e2+u%S(GXbWw4BzU{(%U9{f=Q3JUPHU`9BMjjC> zWZI}xszHf|@-2_%hmXt*r4m^tp{bn5`nN|SKJ}Bls2wWHL)7oZ7UVCbIs)Tx;C)xn z+ZxdZc1OtWL9qC}1A3WQ^@86@%Czm{25H_SmaRsO9+isj1-e;imU*ZmYhKIPuV;Lt zmcY6y@@a_%wt#$^qG|NxKmvWLHFj3hQmMV@P~VR`#~2+MCCU9WJhg~WbI;0tl(9Ev zI=N5m&DKI+Jjsv3_faRCHS3AiuBK|8j(N0to96zwSozWIspyE*nem;1qqFwHY!)a8 z@WoMd{q}@z-GfG9LMqk6kGD--R&?VjXSMO3SfwY0wZ^&XPC7|+ua$bTQh{QsWHqsX znB#I|kv#+gGK{vQIvD4SHbpotW0+oUz#M1Be}zrXN51p1Z$g<#T4t6^R#{dP`y*f7 z=!?b5e8{Mng`xGYk-^j%b~z^m&f>uI+|k@unjKiWh3VDW_6b3d{OVd`g!OaVFFEPR ztKouxZk2dJ2`vr9Ai4BOh`X8vK>K;k) zfBrS3e)0eJLS67Nao8>ut5|g&u1=J*Q1o@~%^c82^edtZSxK9F`il8Nz$@dRV-lb_$3lFdPbFXwx^)cZT8RPz<2=@r~nueOnIo3|?bD-%O6-54)DK+YfOmul>%jEad8B492 zBP6GPU$6GnFw016nf$z$pNs0xV-;u15ocN@rHWUW_T?rJydu*=MZf3hw1C5&?+amz z{$9j9REG2)%C+d62?S*piLJ~D{+dP&O-iL&)Q^%YH7^QRo~Kbd8i8IKH#ly`!DbCKzwVAOmu z%7kTZzsAhmW+Igg*Hs=W#zqk#S${*3HSU)OpVFB;c+AAO&aA1qX`7pXlyZo-eVd!$ zt1On9O<8kc&OAC7N1;k+?O^evEmaBGui6%#o~lG&Jfz3$7T$QemyVWL~<=uJvH z^SX&FP}me8DHj1^`~VPGJ<8@!*@tR8%sO=3VaN|!rq^6GK!>-aIq2~%3UU%XZl}kk zn?ALyOE)4e9c)}A({rOq;Xq1_NJ_UFz7$GzLqXn*>xsw#m(nfE_upO^NJ>Y9Kw6h> zU&M*AK-uGRB^FVaa`lUW>ak;>@93(ln>`Th>WRj*kOUm+0_BemfEjw3~CtO};!qPqDA^oxpVQfo-S_W@Y+Jn^1 zs-OtKO)TkYrilrHXg`suB%`=QqccsF)|8Fg%1l%Bdia)5D43dxQ1SDf9xh5 zJ+KMw**qrJYPi;2_2zx`=Dqbvmj@2G6Lm0O&))Q^9;ULanrjTER8KsWWtX94J8Ijr ztl0f)$^B7tgQR!w2!)%a1)`={yvEZF4bWUMnAG6%qz1R1Iwl!RzoXWshAawt5GBFs z+8k4<2B#Ogol6@Xdg{W4iB~r=zziM*SxP`;)cd8Ha{31-RgrGr23IQh9d(5rX9Z?vVnfRdGYIQ#Y3BPr%WE&#k4ym z+$wo!HHv*x{Lmzj-8!a;To1&uPdL75tK@-K>NjO@{GQIo%YXg6E)*o~CxzXTnQ7Y4 z$g0fA=^yHm6iK86J(7U*bIF|cYWEp2zdCvK(PV8}56Y5p5hj%HCAVs?4$_7>i0b-Q zeH5W3xo&KH$x^Ww!gh>ZJzwm)0*toOF|hjDAE9|u^m$;(f2^aKuN29{$5tQSt{>jd z6B#TNYRooqJz1=&o7absS<4M4ZXOFSVp+0ZYByhPcVB6zp!zYp)2|WrCzG^}d7`8a z99kqorXE*JOm05;n>QZ@7ro2W$l5>bijLgn9q#H5XH`da;@LjA;q+wUDXDpS&CVen zI(iM%ExI5XCDVuInW0J6rBO9Qro-m5x$z{Q%sG0ZUD?S*o8Ta??v$%B=or^_T32*( zP8v6K%9}YOZ|Rh4w5jLzPPtZJaaX5%U+1KIJDG#<;!V`^&ezkcwn6BrRlCc5HkV>f z(z6f6Y(6+%>31Am9uqH&K!9SoXA-5HrI()W^_}viPW5`H^;)NTzcY!AIeL=yW@nAr z_i|@-;rR{%@UB!zXDW4~P}B6{(+%`p3q%So{)sFbv-IMFbhbhaR>9ZE2)&7P*1N)X z&$pS^8t7uooih^YjCrA#(lP~x;MrU&rw;;T2{{ZB(2|7lz3$!ebl%)rp8s z`0}@I8jYv)Z9<~+HMh|>H^hjX;yaH~G8lJldfMJ8wKw{Tn1Nb`*r!e3tIah-3G8n$ zR^gZ$L1kg<(GKM@mOlvsz2d=x9&fw3CmF57TeeL7p!>o0&imWtqwVG+?d4e+4J;3y zsFTms6`rnxHd~4dbq)?^rRkqzIxEcG&L=EErZc%NRWJ+S?qdg&X@nz(_t!NswP@q< zyP6SrCf3Neg_tk3RLoHPuC@-}BcL$E9d@ z>6~O>7DnR6&b7i=W1O#*&ecX#-MiKONwRuy^U%R#qI%}ap)+>%#A!p{44rsx=!&0L zuNeB`l%Xr@fA9oLxyVCS5INn`vMb* zmbBvI>Myd~$BQFWi;cx5zd7VSdh@wg6W4CZR`=iEH0S^0%7vmi8$W(O3Qc&a)<7|H zrP=au*MIX|hI2&$3CL*f+bXQ)w)lrzS8wocoQH#gE*IJcxLBl46%&`YPd%$$u4wm; zX*WBZ^=%o`JgeOT2N#~*UW~tq^f#Gyvt&+jrXn#+akdx+)22GR&ONKn1L5cA{78O@ zUzssVevj;@5)7rmrxlSi%wI^#4=pzOmlxzpj_K}K7vyRL*x=fNyq>)u3$*z8t}KL` zDFOfUdgI%!Pj4s${c^NDCOjD;HjNzjPwKFjcCbICLoVhVM}H(~A7{L?ble$#pW7i< zbnvV*I>IDq5Y}-0JNZAqGpoOo|M9!$I)aH36k&E*-jbP<^4`)sV#kuab8H^Qg0IiK z1;?WprAAm?s?++8KSDLQv*h$}hMeS24%eWCE*<^II~0hy3235zhPiJL`LXAK&dNcL@33pA{N@$sFvlCLEeQOdez(92#!hIID6^ zn}2m%aDAJ3U7Pz%w|Q2#{6-*^b7r^mLigxzy~g@F*vfsOdl=>kSN+m=ckpj))9POO zwl=w@EhO<$o3%yT6tZ*;rhPen{QlVkRs7X9VWMY$ipllk#u`K^98GqG*2(d5i148J2L@j)T)c8x}CTzlG=3Gesr zaBH+R%-G**G$&z5|DL^frZc@l;2Y?1KCL3>pGHqkCISzOk^|jv9Z@-`7!F2A*oIAi zCJ9UwJP#Ta;*%DPwOI4~8kn|_#7AaISgeX{IkqfYfdrJbIKzrrBbQ^JWh-Qf)CAOO z7sA?7$*#@9ZC7B+kjpkc<~Q}=-?MCmvRTns`1n`_sbmxp; zZI!m#{VruBn0ndaw}+#ez|BLOCYrltPhET+NF~D=>-TfrSUE0a^T&pRv4cq8VZfiv zHv@7oWb+3WiYeJG

    |0{igX-gK6eecLr29dK%&4fNV9RxAkWS+nTf8?UVB{FSBsB zTP42h!%Ma~WRwDxS%FskN%EM#E52vWGrw1uw_J?TXt;h`E146_e$lVD zG;>TW3%!)cLJ6JRPh%;|k3TOGQ<<|n;#stb`FRpER})ScJ*#Su!$m^OOs$X|Ki$lQ z`3;Q0aV7ad5tkFLCe*M^MfLOGn~a%NB*GU(`RdnKeT3rb85y!>4P6Qod%jA&cuYyY zkNTS2(D^r)=8SMr=^}B`P$c_uok5h2x!6$41YWOvo)C%BM6LmlJGRTl}iRqpR`;duUTFB*QhFCtB%4NZ=#igDhcOC?d zHIA%Bx~^qK%$Q{GILF-nJo3w#f0U%8BGa6Ps~FCO`V=Ne9?SQKa zberu?G@V?0hm%d`1nz+2bTR1~^&N1(Y4PU~a#zMDkLOf|lR9M#IGJNL?p8}IXBrSs z{=*RWA)kotB+Pnu!_Sjc?mI%>Xv?z=vBV(!k{>i+x_lXb-0!s*tJ;jO1SmR3kr&NT z4QwClr|E-vVm}spD64sA4oH;c$nWcVkL&Xut6HBM%<92cLkG6#|5k~0g z$Xmib0`l1-lqMvd{8-mDJUV0nlj-Q$x-fx?N`IcF_)~ zX&9n4Z^ydh4Ixqv z@*G3VmcJC23OPcI(+R@vQ2-9)OHy8Bh!-SKIMEE3B+bxFoabEoUej4%iS<_E3YDK4 zFKOJ>2l66o1A_AKQ~lJ1WRGmd`-{l~R$l_BWcmzgo+sD_-<eB*W*1YE*!fCYyg3qF9dTE6bh#4*5tImN-;uu;xC)vOp?Klb2`#Y%$LS>AdR4-@2UJAv1FPc(5IY~8k@RI zq6BH(vyDrzZ4{8a>{QR#)MqAIaU7=j#88;xgVqvYNaNoYv+Qletom&>2r+{(km{*K z!_g6KGA0cJZpP^K+%(9X4$)pe87B|f)hDJW$sZuz&ZrATD2u~}qjpgvvcA=6>4*%k zmU#jT9|jr6CJ@Q#k9$sqh_Q?;+vGVhC(|2E>$mnaZF151+6k=GQ%8ZJ?Pk+$ zpPW?Z+mbaG9AuN6fvUFBKz$z}c9gGHfr~TbWSw~A3nAyo!(ml@NoYc_D}-Dk%qZj@ z6*W9Yq`XbKE6vLyHV8Gt;8n*5siQ=YB4<}>xyZ!J#$oS?L+Mxx#6YskAJLc^1;p)G zdbJiRux>hT=rJ}-ua0afjJ=$vQ5!T~$cjHqq9=AhuQlZ)jr>(?bDDvKT=# zPxbcK&eVX+!D9qGaEyiyD&)tcYZd7T(O zzVj;m*Y>{CnHfHSNvk5;9n$BSpDI6hrAWIQ!KL_&`u>c0oC#AIb>WNagensSR-;Jk z$rS(%(`F`3(Y>_uDa%O4H#NPSR^9=ncS^|lI{^Fe@iQh^wA9}c84XD3U~7WhOQy*z z*C&4`w*-!({c6yH+TuN5r8P=Q?4JC*!E=S}pYCMm>#@FCwuG zuM}v>RnaYSbXF>~x+dhFd`yR=tR=;x~1!6vIb!ULc0|q}J0St&VzCnPl*E z&%^olHZN3sMVYUvDE`z-OZW=mAJjwSG^`ZOd0sv&T_D=51{71>Ffa`?%Z>Wu3jJXv zYV09uoIK1pl)OGW$k5#)7$>*Y%wQRWThLOZxO-10P3}vbE_0CwW>7Olk-Y+Hl3c&p zjzDUGKyrh;H_B{>J*dUJPn!4h0usqAq+HQ`(!WQlzew+XDIb>ML*Tn)=`ksvlp(ag z&&cp;StEzN%aj+s$9Ok4$}GHGW&U|4!F9xh#_vZSOUG!Du#lqU+eTmzY^!8F*r5tb z89S%xLw`@`V)+-4x;M;{b`8I9&!(PEFtdd zz+?z{##$?tx=X8?BWY{yNY!dW9j#^SeJJ{I?!jeYyoYNL%1~X)hrL}L>5I%{sGngR zv14k~dtT~9mbNU5g#q>fmKhb0*2~S4QRygQ{xCPi+#MddYPp!23KB?S0Kud z^@EpCV3VfG8E^*XLDB|Rx6@;Gs(Si;t664ccW`)+at&j*wyR(cu!veyGTq_wSwunx zY%9t|;%y0i<~&nzes_fwKr%s@9b@#8`vQc9qB)ezwi;W?txV9)`btNppAcj#gsDLS z^g&v~V89laiz~uNJB{%FG6d^&Sq<_`(Rx(5u6UzC@Abb@vAx(_Gt!-AY)uL0nS0Yj z^NjgfSyzk34~3a-vP_Vnj_mk2dmKjdWUBL+IAWWe+*4j=%2N!JZ%RPtW?_6-4YGjB zpEG(V<~f*w<6VBA-qa{;@mHB8<`7JcwQ0=?N)Iv(BY;#BNLRZuIfJAZ7{KO;Hw6h+ zAsKJg-Scua=%f>dCN*mR)Qe^fmI_iP((I#?!9Rv6wWxs`HAqjK(`lsu2T?m~#k0np+IYQAEHSyTH^H@< znGh?2uWI)&(8~NhS+c!MgPA9LipxEGzhah=3BN0MGv>&hjQKXu$jI8C)G9nFXOXST zt>Zc-r49uXh_b>GqI_tF*=V~xlkRh)Lp}dkbZZgmO(8!Q1g>AEhTkwhvY931-Vu6Xh#Q+kVP4LVx&JI3FS2Xww~Bo4QB5E68F=pLjdrxU%G* zbowD&eLKkQ7`elcPDbPE-^!Q`4hqsMyw&Wdiv=yaw^byg+2H0Dxy@<2g~{K#QkDO??+? zY+3|6Nm-27o&i{6nEABzFv09kTdd>Bn^L33&28GfIJa^4fz(=?B1RrwAz)%n>r`=r zYW!G1xlpK1xxn`0`)^OjZKB>G?bWYkQXWkY)?dT!fdDspgvR8>m$!nNJ#2Y5v8qf8%GiI7w zXQwzNR<~|9ko?co8Q9>+eJ0|C6l*I~s_k@!Zbpj-%)-fy20YwMu1d$K^&_XO0p9O$6VSxMuct< z#zL)@(bg%Ntkec3V(m^B@rsB_8 zMyIeo-ePDUF$D>?-EI{EPtZUPLho>JLC`ltG3M)QVJgDKg%3G)K;CT zK#qc#Uh9~83*ne!jT{mC_bl|CJmaf@k+bj@k#St27rH+Ls&nP`4yhnw41Ql%^L^w#Yy8LiYX?RI2 z^L|H;Vfx_94|jQm7}m;orDnb@`~?FkV8E z8^#L=H#GaKlfHSwL?m7zu8nzvc23=4aLGM-M>yQSiA?f={&^*p~X+vK~2c9jH@ngmF{;ex96G*S-Z)&(8^f(y#fNe_9S z72;U@HzK`PN&#U0z{pwSu}E~uKhQ1(w>niXmB}ssJsT~Z(J>8 z)YFAf&x+Jyl@ugjeUWNGPTO3Na`i>3MbTOjYv^J7Bc4&QD)Q2H$kgI8~Wy-F9I zLrvHMw6 zc&Y|Db%{zZQt9K=^vByw(|oASJyn^fDDUC6@Rnw|wmBjw^DI?=w$7(u#-HKY$~a3A zp<*o4(C6(=M>A2Us7(C3dCOSD==FM{`8A{OeLW;bGp-M1nX{6iai}_geC+6g#u~7n zdVzN2ztN0Fv-o&4Nm@-u7$-v1V@jq1ROS5u;N?%M` zDiy3$;u1CKDrH}(x-KJp!IT~6D(5^EoU7!8D!f3Awbg}6T%dMdsj|05-m_Wjv(Dh$ zqIFXgtWx!>mA6XeRx4wbBG$&ZLW#@OoU2ssO66R|z0~R&V^s}8|MKSWoM!97X6J(D z+)b+GX64jReIJZz99Oh1u~QmMVMlF2RPfyUp3HANg~JOUxQ zp4ijIt4y^OW-c38jm}rg~T~w*{CejnO8;qoVqfXND@Pf#sgiyM&#$!Bp41n zfFeCCwGvMp_C}aytguxNI-R6Cry;qGAYXxY>Y+WGq1~QZV?`d44pLSpDx~GMC717l zCW3{r;jMm)(Iso#fnh;$ER2D9=^oXFV2_?%m zbpVp=utycmVe~*f3(830b1b?w9RWz*K1QIP60j@bM}fvdeIyx`dit7ku|Pjz+Qs^aE2DDm*NilHKrMy*UJm~vgQ$+z!RDaNmNKQR7 zG{r79^b|WarJgrZ*Vs9zeF-jOGEz^O_TMnpil_#U9r6LTr~x z?Sr+3Gz4r@5OV=@GgJrAkp;N`cdJg{H&vI)X~WB%GuURQ9=Ab=Rj7l4QNbf^SidX( zpY3W3fL073_K95I`c?VY(n#m6_G%s6rL{Bac8oelBrB=Lr%gjroxz%e?}0(TS}roH z!L-YVqH3=+@04J?P7uSJI!`kL9f8VlcE|AN5-atk-8CaU)tE+j(gaf&(=0j8u9`gJyuv|(X*W! zEayh6RhlxcpiCe7Q_=VP}^}KwHwuNrNe5@zv zZQ01TmzTe#Bfpf)7`hk4+V}xznO6&AYwK`%i2Q^25jKN;3HXrPi%mjq3A!4HRT_DQ z%v96Gi-v%=;9m%D*j1avWI`cuG8q|lEj9(3URX1*CzUWN>B;2#whP=uc(dKK=K?(m z+*+NKm+1$7TtkIp@=Z0wPAf-RgF!t_MdtdOZ*;WLobhfvtv^59cbjd#?m7U(S8lOg-#$S?P;x>tY*J z|LZm4l^Sr|fd>zm(dCaYI$#~*(~>RiuB=I$|Frytwm90Jx!5+3w^=4j_cquMH{>2_ zNS|capKN<4*}0Q#<0SidB2C2-dyi9X?-YB#Ww>afC3ej+a+ceB9A!&#+LoX-BWzS5 zK~Hj|28PAWbCYfjq5zuXwwcQxyR!j}Z_rfjzg0iLA8`<{#|d&j<8CSTH~F1zhE@ z{!^$48-ad5zJu}!J6 zsOZ(9s~lF~q7{v0QE$>>tfmU9$N>#K0CYt2?4}Y2xf4qhEP*kXfKpHiRsgg3X!ELN9c2YQE^hq+s*!Z@s!V~IeqS#jz;leB4EMIB%L&HdaTj$-+7eMA@So_&zY z(!$MN3aj%d@k0WM@fPLfk;2luGlbKP`Z6_`E4K}&3o1|x%|+adwelE0mM7--AQ*Vy z-tYG2CNjhzf>4b{^!dau+{oEe*%q)RV&;2f2S}zbc zNkNS8opH~$yteA-iQEw$6Ma0ALbr@?il4d$it#7CE=;c)Dy0n-ObnI4a+_L5mA9>b zKQ!J5t?uoowAq!H_DHjpXt-f!g-^_CH8PF0f-8MQ^A|2?w3D_j_>-yG)s_ZRNX_~_ibT_k2Rk(eKFM@W}UpQPGW zZedI^>^elhT&uy>cK|cd>;7pH*4493<1lr)z$Ue&$%S3WLz`^12sh<=R!^+pwowa! z;B3pOY#wh^FV=yf(HCaRwH#A!t3(xR5Bm!HEpfhHZC2Z_r>h6cRrTO{t9tO@(80!` zYi@E^*|SpWplYjHUX6PvUNGiD$NfmF7J*lYl`N8mvv*w|Ril;*V*0vR0fXm|^OEBn zKO!Z)oAt76uG`G-8~MG*cD9Nyj@%~&2d!*qqkMxaiY08J_O7m#Oy-i`PG{{*z#F3& zUeMX$NyQoJma5+$OTr=dC!E-i?RRv}=I`2HF96|4HhHHvRK<6=iV#Bnbcd@Lc> zHh!euAFVvHfl*R}4fF=((R&Oy-X!-v%lm~pEA^G%ttQ_Q8n=hmyPo}yXC39&Y+}{G zbSg6-i7;4!3UaF^8x1K4UiMIP-3v0_Yo7C@2TVX&w|l`_Pu%IP5_fnoL*DEC?k`xW zv+wEH?chuZW*mfS;|xzO;~1Ul9M3*aQ}mqg$qU&V7kU0lR2Ab=ulCCd3I)J9z_^8(VyteSK+TbO>X}zC$$uF$;jhFmu#6NuVWq+^deeXFxc-p#E)b6e&ci|NL&22C1Lv=S^>~o^ zYv4T|w9w-^v*x}~Yct>1uCL8KS1bQfn|&E?PLs-A?gUrhJdPS(i{Lvs!FAx)qsq)p zPPo8z>YY1koei$@f$RLS)?QlcEU9%m(>K@VZm5-OYO}Z1rq2!P&kHi=28Htib*>C0bbyFDlC`%9+c{=~aIHYCp5eFRb>BRsJPt+t>Ke zq1I8>2mD>H@i8(a$1cZL`@vPd{F5LWNxA2Ut?RbKXA<4w4?gb08a)Ux@OA$75BmJl zg&f$bJ-J*sq3oSnE}T-{<9W>W#p`kc$KF3lIt1Q?hV0QUMe{|^n%{afq7HluMNbV!EVa}v)FI@ zZjj5+Y2K|kcSX)x6iszkB=3uy+arh5S7@7XjwP98nVVi2Oj!ZtF5hJT6x3cDjJziB zE(!c=0&#UPn;WKUommiA*MPBVz9rCqc9Zd8{*|@LF$Rd)eY(B{u`Bd3^ zMt}2c*?eB_Unt`Zd9^(0jdu5Re^ku@RA25Sf2YNM?eTv1Qr|qz-|HyfInrl_$Q#*q8wb4YM zcwT26oX7zYYBln1Z7&_gU*Bi@v;HOK(R`AMVg?77nrKb4*{;*4zsok84LDGT77+>J zxk}1OT6W)6y(P`>%I{g*8HW?5t45jgz3tGr{loDJh$97N>RY7s2eT=;HB`{s5q zj~DLG#ATA$f%*9z?2CneFyZt@@=x;E1*iu6tP#m3|n?IuF2SqZ~{Kcp{ zPpF?T6N8{H$$KWJQU_I+NsAByRx1(>vpP9sKn{>IRtZ0feusc&qyu20zyPv#&SUR_ zmJYME`E-rUdu$<_Ly`nHKF*<;)j-Rf1tyxUck7xPjfTeN0wB>sQ$QGgrnS&ww1TEl z!_2n5hIt)9yXZKeeKLL;xRyJ!UG*a}U4;=w*AW;ITG>b)Fwz^9AL)#OoV{mScc#bf zt{nq*iFhM-TrgIQ>l#}cS00-g*E{zA`ia%(?Ha5Z5QEM@?ckIFXV4nR40;3qH!(Ls zPRvf2J~@~qr!;IaY}%-)=Cp8XW=8BDm~PK-rk7^qrpp=G>FJsETW4k#wl-#7BDRiZ z1>4ANp)}ZbFOa2Nyo1`YYlmRREE}O$(%qplXRe>wvNR{!$(fVe$^4GJb7j|X7r85< z{CDej%Y3)6oAF)zjK=Prb9ddnX|B7wGdI|Mt=MyL4~I?ez5QO!-tJx%5U3v89`p12 zi22SwnfVtBIeXvI59WV=+XI}I%$A*7d3ffdEuF2LExQhI_Rk$KcYl4{bU?JfbAY$M zd7%G8ao}!0-0xtg0YB3A)^>7x_6Iu$^&LFrpv=M9gK7^Rd64&G|3~7-vww8EI1HY- zpU6YppBQZBA{c<=tC=8#Fs{pr=>7d!pD_7~khHxJ+Im(JnVFEfXGzuf9)H9r+U z+x@4}ul-+%U(f!P`CI=t;`I?6SK48*qCW=5WPT%bC6QIz~iI9FaqgE8W704 zTHYaAzbXT1xhTguEh*^ZM5IWLcS=1PA>~4*CWixyP~t1VcvS&XO&vmYCpx3LCPYJj zJ`~S}*4x;w;t0=oZ25t$HrVEetnun2TW-{A{inA4(l)-}5Y)qcn&d#Ay}#Ccu$KKp zwQ^mp@mQ^VoWJA~wa(x4*{5se^R>pawKmC+vC7@zMz^|}z)X2Hy`XJA#XqEjf1@gdo5sN<#|6e2hR=sZO0k`tHdUyr zMY_+qXu?mrHn14tTPb$daG!8%?8bDIlh3#|+95{rRLWHMV+-rSP1`TW0wR*47#rW3 zM_@-4V-jkKhWI!=8sPGYGId`XOC^`)EgSlW9C)rk)@0LwPGgHBk%uv0_{VBzIG;FK zB0}W=k=XQBh?ir}PE$(l1%HvYt(!45ao9_CqV?(AF_F6{Lavy6l~UNx7f0d+f|W3! zo98Ka$bjCHRwqW{gh=b<^G}W}*tgkiRAsxUn{zUqU%SV$n!GLxIUgQM3Hg+T6})YnnZeDQvFsh3156|Hyl^%Mosc`)#+ik9 zffbmoh#GbZ)Th~GSk;E zVPFQ5s^s@LkEM-uX=AA{mWbd5-!ZMf`EH!xqtuBjkw({JdboDwqsEU1t2i3#xh6~Z zK1v50)8dn~^Jdz7L*LtcBQx{$v@^yzDPt_k7;}wn0-dD7S{wvN2j;Rs$ub^t=ZuWA zKI80+JyL>eit7J`DaW}qa#mocHYPe#Bg?xaGv~r6K5JYUnHNL`KX@tQU4~sF4>x$V zk{J4{F;z=R|1~%}b$_gg4Q_{0|m}N+O)2Y}9uUH>9tjmdq=pS(iR(=&w5@ zd?<#0{MUcGy=G5Qibt}EF)Slq%hbfLSNcar!{^PHGn4<3F<#DO<4@zw%orABl7_#P z3Es_!cQRdXW}vA1OgL}kvhfeceUNcCWcoS%MkYBk>BEes zVpfRblHT!w|2CL2{{`Q_#`o*|0jDm&@#NcXmY@V})Bd*@1?B^q-1esDw)lx zgUub~w${$_I+7uZ;8Rh=TB@M956U@)8q-E1@cjQ)~}3`HYASbv$T`dbZTm@lBs{>DmvoG2aDo^AvH04DHHy>Aq$ZGtf(Pj1pisA z_pZjL!)%A;k7&UYvU3(@L3>%=l5DgvYaX5TPRxRpDOBA;Pv~adDsd%GQj3NBAoe0_ zDDmw^?72#;J+?T2%By$4vr=(M^!i%yl)RJT62yF-ky=m#WD`7b7DOdp6sa!CrdMRW z^RrV{WJAZhH0!U(n&)S|i?jGFuFURnP1YJpCjTehnSR1ni%J2+xmW!HlcSt&L-SE$ zG5?%};5T?wJ=|m^40_s4=BhoQHqkD^X=f%$I)a_XrFw7^Uc)uR<<=A-ugG&TgeTF~ z=JCmkPE@}J14s>!pa8ruRKAHV@dGFoea_Q^O=Z$`E5FPKr@H-9*P$^u6}d zT3c+;&5THkG(X!u^|%qy$y4s=K%OVPAUn5Z#oWVnEOo*Sn7U+!b8z6dG z^?rD&=PO>(=#}lY;6?$F4R^b0z^H0DfXEgUp;YRpq{QV^S-nP!XyEqT(cEF0HIjC5XNw@x@)Laf)~uvR{4lXhNex70=mzL;BP)afW#mCgdXr2+z% z^7i4oV;5m!-%<_2Tp0gAH}6t0l!j{ybX-k=5LNf*X{A@6cq)d-aL{``H|c4P1$>Pv zNsOM_sQDwzlW9Cm?g}FX*ag-u98ZuqhLLm&j7w}C+HFiW7c(GS1X!GbIGPPJdG&;0 zJ!zz$#b6G2(5XYbLI`GFbyd@SERy^NBr`IJDn~4&s*?9YV3hPy5CG&PuOZq+=b#~j z8wUT{LMWmk+P01K8{O|t6!Io1Pm&}UrVetXAzXyFvYDZoAij09w5AUa#gFi#rNOuu zyoPSp=7Ct04*4vldJ3u)IQXliK(Jp{t*`K4VN- zJqlBR73?=(f6BwfuOsI!?uh+cRrN9 z@P%M9nVEW!H$pVWz>5mw)PhSQ1p=m9BF-b(o^a*jtWgPd7P+g-(IOE5lwP+uu(>tzfe(EaD3TV&Q6Fvi9uy@Lh6)Kr}fM$%PJ71Y>-WL9X?Q2OC|VjuyHyn>?k zA*GL|NyjkgwTsUY<5ULGAZ<>I3%f$}BWd7}5dVx3d>o9{Ck9hJcM3}0Ldi9j$?NUz z`gx4N&Bu3Ag$PG@2RXEuX*pA>cLBwK$bLn?1Ho1CJ0uV$?*i5Rrs;=ZQjS!ag-RT) zP4VP)P)=Qy9phB=NG8;>Mum3B+XW#~0CiL285Rx`j|uL$2{EFDBaIC5M7NP=0ToW# zo*KW$oJ%zLr90KbeE2Fj;WXpcJWXXzSK^P!)Ba{C(L2MOt`%s^+tUIU_8#5NtMrnJ z+owg&mxEBdPexlO-@}Sw`J1c0M2ZE7tNqT7hW&$fa(hWKv>oN%|j=S_^&T6ksHwOdhQ2*Zj1%$ zQlGjEl`M@1Ka`?8g}Om>XwE<=PDdva&n6&+On{y{wRwh|-aNydK8&q#hHsI7rmtmC z4m1zC1C4{sevy-nURK@js^}fnwFZhKyW@2^_BENkcu3)VR?l5y0p*|+x5&RpNE)`6 zuLv5cor1)5bOnZq9B)=b+TS?@1xbrAIA<6Di$<(`Ekukr;}vR556^XHqkLC(+hPY) zhuIROQhG4|J|4xp!ByBprk6(JKT$gNQH(kdJ6^>V=Q@nb{?%Fv(e1@* z9wS{lXs`JRNGS~pO(*!S=LczIfI6dr0ol(l^pjSIdAdu}wNDp1LaFBh5!YxMc=+|0 zh;U0`H;Ry*J4mEy8Dnm9lG;eGcB+;F%&fXL8YM{NdY08cP!Gd2x?JCim(sV=kDB)9 zM8GOd<#}_)#h(N5XP!?M%0)(M9dFraiAO};lcL3{w_uQ!WmWe1w3}r)Eb6Id7)E1a z*@k8v&3`+VC36i(RTTL3a`sDzUqqCCJ``H|FJproNllu}nG=a0>Z3+a&=aWsV`S

    Ws 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 z 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

    xvGvFN~EOBq<|qqFUd^q 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%0Drr`e{t>L<@9z0aOMAYh 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

  • 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 l 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

    7j!~6Ks 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

    FO$DPnd2 z!!Z$5-zvMfTfEC59y1!}kikOd@As!+ z(l7_10$c3%W7U1!K7;;w1i=>6`Xqt$<<~LI0+!J)GKXzU-3wC^6b44O$ELt@kZ0@; z7S?ue@6;eAYC-MOA_#?nlNhL07znE{6bAaV4-JLNxBAK7)W%!2TKI#_bABR>0`mWm zyvj{ON??SOId3ER0y#_Sv;X{A`@e+=i_~txlm^+Cni#o>GE!^@+`x+)?uCc1`b9eY zH0r{Z)S7Xz7duX1zclt@2{N7{ARbpzNbH5kXGnaMLCVn z5KgKzK{Qn?9k{iIR#u=~L_9u5bkz-Yny`P)8VZKeoZ(g6TeszdX;c6{a| z$_-OSXptOZsOJ&UpQF1kY!pVJVdCtE{V`Xl|@g;~qr znBkp&HU^Eq@p$iiIu!kl$COXz@6?a^P*z5Nln>AIF8??W#wT`Sh6TcTFQQgLzIXUf zs?A6#qe%?0Tq50$hAbdpjf8sCm@@)fLchhrhAmgEhf)hYi$DIx6UwIwf1%dON7-ss zTg%T!`yb@_zi+91nTw!O4}rvgm>|vcCKic@(JVTP-6j2bB-78Z|4rD4u&)pmtje_t zr|I*sIAIUG%L~#+gvOvgWYVhH_s}QSFGSV|UMD&Ef?)ezzF;ml7wZ3HHW6UoIlVJ> zxt!$|I;hgxd=kT1V9%L1Y6j$?0-dIz=c|f=z@U27Zg6tF~79!!Bzws>ZeC{0j8~b~!uf~^&i2uR-bT+=q{G>KSgHqn`w;uNsLWU}5 zw86&C2l$3eY$yPlD*X{0D|cD&ioeFm%DW3aSdea2%Cd4BCrolYU?%7hr+u zZ}=JX^<{7J&bcX(`o)CRp&J}~PTLgHp@lhIu~QWAH;&3m9ZTsv{~pA2a4LrxJq&w4 ztq=(|TW-q_QOV;-{4)q4-;URP@ z{`ecu_EuHmi@W~xH%{rgp_I(Nm7}uIknDRIAky{8h$S zE6sut9uYMs^)_Ie&q)nkLP|)1A}J5WJ0UY0mPMs@!jfe*0+8|p2QYe~OnBFLZ(U*zpWWE-^=TTpFSL$=cdgHGdIE}!%3^&7&X|!y}n7(H85zD=XR^Pk1XeQZC!}}R?^g}L zldB(mw2!NYqFdtH+zDv%#j#(g7vQdi?nPh&Y&3a>{k&V=yY};fFFCPVf6z|+=(O1* z@h@1Gye?(c6pS`1fnPJb(xhjCWduiuHLht_cAcws<%!E$vMZNJ6B2OUid`v2C3GIn zqcE~AVp_U(<&tW#E1i;=t(%mg7tv5Nc`#TwK!J76NIE8SPFuh~bV~R!A+3 z(pHug-GH1kU@0(bwya>yxMf9E@5r)ZOoy0dg`K(}DY2>*ZUF>(?-MbSpevc5UXso% zOt0i8gDTA$32~|Dfacl=Uu;=rmxtF?ad|ilQZRGLm(UWBOaXal69yQF1`#vCgtLwc zjPA(wUoUp32V&Ga76#sTs zIHtSuBXfP5L5!;!3aH2&sep$@s@{-fuO}B%|T!3qtyy3D7`PmXo`Zz>-hIUhT{I z%kmMwAUJ);O4u0;DuX^v`tW$v@D4-nGe&g^n844@8TaZ4Tf~A0Vn7s@&*#s%GZiwU zAzeg}65`8s&X;Xhn-LQyw7B_JlXvEw;ayC5%~WK zSOn-vmi+Z8l`$<1{tW_sf;WJg!IX)!sYxWu+SELz8}M<~eILG{p|&gvvI`@_iZaTU9qNVg{} z;^PRu!zsB4pJ^z796W8+3l63@rbj)B{GBbluk}28Z5HN&q$T_ac=D36aY(k;Q5=}? z6L_-m?0kjINTeL){l&gO((!nOt(;rYcKC%TsFANKU-ukBzML`t0%IVxS?p2<`HKvS zJe&vl$V5n9C&6k+XTfSCgJEfq?{hwxfiXzWb}vAuf)Z(ka*(z5<2ib59v^sZ9xq73 z1c!_sdKS}}(@Pg-EI=sr_^hM57bwW(>cB{Y5D~+G0hFaNh>xR~N{0NkQg53_mgz|) zl#!%!@1%@K3LQoP29u^#>I;O&CjGODx<;}#Nkki3bp~m@&Zb@oX;KQwS^7-3gw>~` zSxS!YW!U1V`m@s(nZ=t44)K&eM5IN;3gQ4#lBh<&s1QKzWM}oK(Q*?ih?ABW`8ayK z$VVDK0-mdmpnM$cZslVPo}JfmIc-EfM&K3X<1(~y2>F;^Xmn2of})3d7>MUN`5Dc@ z@DjW0OvfL8&V1Wc($5{y)K$_{J00MjFkYc^2qSbH9Q_MFsWK?|+x(}=09-o+^X!u^ z*?5tP--0Rrb%@q-ma^Jg5z&=zD!+@+zQHk#S_7^zNiFKem& zpB#x<&I8bw&W%5lANbD1zQ|{cuSnU_fE)GT z{zef0jaTCE8{||@dZLlLd}+WxEn4vtIfyz2KXJ`)w(pE)u|lM3;EbIS>Vvzp{uk@bWYBPkrpBS4qjA46jvqztg&u6Lh3-dD(>mCqaT2Sr4}%UAQ$a#Y z^0(lSWh4>s1=6E227~eq3Yw6y1|JJj&Fe~8OU4mKr~E51hNP$8xB;K$7f7}})+ zMdWLMkqtM0Z#n`n6YExUiwE~Sr{d~rkF&QLy;e#4E6(hN|H+^rP2`JH<_HRUEsE^! zSMD#R0gUc19h2hjFBMbiA<=z}d{)UpF)kh#;h8%)OXL&o5BbD-5h;iBEAqSvDeZGv zJOht7(R(P;?kyx1hX_58rc+?7%QYs4rfIzAM*AlSY?wy0ss%ls!n zp*Gq4^U_b8=ElG%suE1y8+q;5J~b zc8-8ZG)@dOOfB9tev9xdhi&9jsZ~Iqk~}MsefwUa0pqP&$G@vS^|NmMIfZRL%WwGV==>Ke?_ByW_SO;#+k8d3Xe|Q;2|9BD zh5v}8KnC(G!_%9JHd;>b`ftK9VM+xNXX~l*xm~Y4bH2^`x~UG+)|zy#*yPJ*d|3te zTEa`rQ5(7wU(umdd@t(;knO$x9r&J)15}}&_>H1c^)lXQsBKZ=`9U6OLQwL1ynJDS z$dgC}W#Q!+kcF{-p)BYxmbR9rkOj+i_JhJmtdsGXA8e0ZVoHIt0t=jI2&GaiUIeE6 zMnr&Yr4%tKWCz%%LuDsd-?GJ&MABg1(EC1G$J5f^qW zQJ!~dvWL%aMaO18t{szK&_SsI{s{Jgb+#j9Cx2oGSri?^xiKV;F!{YC{!@QqC$)1t zA#Qfdq1>?llVmz)lzHkW9awdG0cw>n_&%1dQgCLYQgqhFATP?ETnJu zK=-MOrGKIO*&d#~{t6P$Uyrti9hs}QwT?w*pZD^y;P*Em6zjIH@&gC+v8CjzZCikV zmVF;H{&C|pOthAds%glY1VDo)8uA4}?J*tXS;|wk81%xVz(%>X)TaKm^_9+)S#r6+ zF6Y~9_XWp;060i|M0*OWDIdpALgr-U&sldwEI*GT3+jGoiIq6_*_OEuPT*CSy098D zu^jle5qwo*B)@?+I&nk$)HBlx3j#SemdA@7PezIMC3*i zpM2|UbC7ZaU!x?k=zp*v*d21y{l3Ef$hh}&_o;skeFH`6#y{be*Z&sYPzW4qE-+7= zT*0Eung!Cl9d{He+|~k@!>0WHdsL`qL8uz@8yZ!pK7vqDq%NS6r3lbvMz&IA#E8_| zX?p&2+@Hx*Ekx-Oxq)1;aK1)vYKopZdaI6PK_9MFmK^=?Ngc!qAK^K41(Id1kMNvJ>3v~e8{YR0o^SV& z5&hpUz=h!#29FFB_D8rZbj6dQorwHUHSsFGVaz~HXhVmmDU6=5OtqX?7|Yaerhq_! zKaxONQaMOnEn^#fRv~Daqdw}1h1&hV0nu;H4yA+ELbUzr@pePb^Pmq~5dpaM(HV7U0@OaJ3S{fqF9`Dm#Y(PIGpqiEjVDv3oWC z2*x6vTG-oXfQ{L^J>dL%u(dSlUJ=n*fG@m6R4vVLs@4B2@PDiSAAvm{tN$zThWdXu z+9L0E@>BIco44xj|5X3qWc2^TWa$4w{|kcD|5(Vla_H*kctvqzI|@}Z{r^oXQWdBF zfwS`z?>cwki~c7}qyN8dNvw>OSRs6_6oM+Pqm)0)L^a(iTGRY3=!ZjUexo0t{{Ir1 z2XC~h|6B1*)&H;~EB-Ha|K1xxoZy2b&VQ}@#~+Ea;s=~BWKHr*`e9L<7WBhp$&30+ z=Kcuc`pNI(899m&m66P^+FU;vM(P1@gaztIiBj~Ii+xI3)AB9M--p!lqTv4)dJcX* zRqzY(O%?nwwDNzY-A}s#6nX1`2=@-5-K{}JO(C`&wflG=1J<1^%dLfK`?;e;N1;sN zV&4C|38#{|Gog%9BW$T8K#gY|ZSO^}_VSSOqOI3|A4iWa-g52YZN?Ku5S~LDFf)Mce@PHH~e|{zRM(*SzXm@uzS9y8ePQ0(qFG^Y?`?3G=F#iuBR) zw|E7Wy3FmNKg)P#x-#^V8-#6XS-8mUC;@WQu{|8CGj{##BDWH$R9i=mQxdKIxD^Lc z&Y%$t8ZVYl^|pkr_|`5R3i^z;Lg+tejf@t=@5@6k8DL*L8n5Zcu&^@v@OhfpiM!)9b#K-;u167ws6-2G=zdfp1U4&8g+lP0NOr7}oQKXV5#I$v})OW`l&ofi>u>4q>0h^_YwQca-t}rut^jNKSyw zI4cdqXa+piA2f0pU^-5A?!!i`T)u(v1bzkkw&}qAAYSuy#tldqv2~jGhwXVg=NN-m zV)zl)8{GVhw11XqAHI2d)q|HHk{qJ`tOMPn&Ea#jw z0T8PeDPH@atHUH-oMRG{RoBAQg1!~$MgocYAWLR6dsmweWg>s|g1 zTr{h=n}$?i`j0_GwFG7rRs6+kX5Mz*?{GC6!P12#2(jm z{25VEr~z+aZnAs^eOdmTFZV;@byJ?s=Wuste%(U<;&7}@U)7Mu?ENmgWUXk zN5FQK{Cnt*k6lG&^+X^qAd35f&x_x@wfe7#>4p4#=*v!)hw9xfpXP?#>aB9WvClhf z8;1ATy(H_f?-1>dY_<7;@4}tjlRjK|R-&qG)X1k~%<&AE2t^Pmg(ATHIc<(adZA!hoUf^yPeYflw6!pCHO#h&`XxGHLMRR=-OwEyY2B1 zQGv$8!5j(pTp-6G8PHdWU!2l^V`f0-DcEvx@zXLz<<|~JQvb`5U%fCnujy@;pghp} zP-o}6Ke)EQGuUH|*a8y2wxjGw#_hCgLf~8Hvix|@^~?#7#vb>m2q|2yN&E`aS3B4l zqcAmT61VQnh4|_HCdxL$S`S}R=rzhK)l>0x#t`nZ@zmihdKVx>o3=vg`wafM zoPLTK0hOg_rCd(zFzcmpPQp}%up*YhOuSN*p3KEFcyb~xcuVFmor`;-y_O<-!hUo@ z+PC+|%3PVtAS7;)WAU4c{7hdXOvJw~v-t$suf7@F@DfWG`zi3RGyN-)xtmzckYxfD zHf#&|n+t_BKd!gvC?_{qTb!@i`RIPD{Wp^*Hd>m%rSq(wA!dNnwK=*Xs1n6Mt(6(N zu-Wvk^b!90{9l1T48@6}54`2H=i3jcr0f1Is26#rjt zhJbYZ@c2LUn^yVXLdRO>zs+yaT)yv!<9Lhm{SXdDtl&U(2INRCoaR(kNgvo8Bh^LI zn={sM;Fsn9%U1i(GklPnC>ysG`M>4=r~Jcjs>JD{iGrG&vhgD!u{q-LBVo8Dn9%2N z0Ha>5O|xxWloxtk_#qq z&EyGR3VUecRW<`UVI)UQ7GJGu#w{h$B~~I_)g@mjAKtl@Kq(^QhrNFLn7G_NhbyR&7X6K z-20Wkia!^~YV9!A*Ps65aQQR+kmKVZHP5deAH#OXjF11EWf}6?CFt{rD_UWQ^Llfv z|No7Tmx;^RJAW1ZU;9MK`itY^>g9(+e6{ zZiUWhK`|H>3jGgjeKvKRyFNSN`Cqp_D>D2&eESa(xMSaE1THQ!6Ne+b{7&6hhqQAC z0V`4hB#iMnhGw+heX+m)>-p>GB8c9qnQZp3=dY7KQY?RQe7+***kZcV%KSC`w}!r{ zcKtiJ3g?#xqanZCd9hLl4FN!u%bbg%0CyW>_-eoxlN}fejxxap+ghz9hB0 zTkS<@*_Wi1A5oj1o_#@j>lylP<*_|iazo4qWC_Hyg4stfm!^Fa`>Fcr9P4-Xe+9Yf zJMe8fGdvj;srX3h9PX0vGWX;3EW{0OVH5>Z&YO!LB~l)JW01U5d1Jj7RcN9ddoeU> zFy-}H7E7sqFAE1KM(v^oPA#bQ+<|9ZfA@Yf$|L8w4)5Xrm@6NB@4|;1B*Af$@7|PV zU$1Vd*-PDKpT0<%{hc=ZTLAFqy!$De#Sx;E9(Z>C_J*{mH%fZiv8fFn=aVxN7~qL+ z2Ri>IVfB&d@1R%dzmb`pMj6fDq#y9X~_0ppl6;q6&7i1)Za`jFE}IMU~lW z`{;c4ymXE-;m>*E<2brqmjn8gZfZuiLcGT$;e%Up@6%s4g`SB^->&-c)QEk?V~K(H z_3(l38sq`ot!D$|ko0EflvM0iwPa+egJvGuh$uSp5KOJWw%|jtS}pRV`fVooVQ`oc zIag|TxYV;vulf@7o(U<2QxhPvR(#-C;g(V?fVeG*Z7@V`ZxR1JDCRDtOR(B={syM8 z`~<$Hh568nnC73Wfnvhj;&}hKvyu~4Fy+3H*p9`XZ?P}X!=H2PN7Pxc)o^R#er$%q z5v&SpgqSC}++>ygCB!M;dZeU`7Z*nOIPOJ@_{p`9KMqU+GTWTd(d4K=leK}5ux;u*MTH1^1rx=^pgzwCLg7sy zGqPB&$lbWkZQ2T6&WN7ikyZlsG&mMnnQ}iIJFPH)oM)ekW-qfyD0?F=R&ESoKOBWa z$H)OFGsB~qeD()qGUme(i3QAzKM-5SW_JoF z&tbuX**IPV;TUo~r#-!la|Q8@JMB9w4fkK~;GmT=NbFJ=w7WFJS-oBZF8Inle>4J? zhD=hIv_qhKyIYT3K}EBYe^h`(?}z}cK1Btn+mtu~5{|w<2i6wLVNeM; zgir7$yjPLJ(Nz#CKl7oBjefxJ!v-YxP;x;HU7`7~LJP`iYy81NjhY+l3Zc)qVc`1@ zx8SaY4GG6hV?CcJcA`X3x$G*And5kZAJy2cEZk~ZkHD!QWEpYaW!*!KklzBV4d|=QFvWk*7*dKrGRvZ>tR}3u&rh1&$cH_K!hdoFX6ZE{ChtVGFyYbRg z+&^3Z76m;|>#G;=%Gkg9eu2LKBa0^DRUK(8_j5m?Qk@vOC|Yi<0IU3-5vTuZL_m2{ zQrJ5xP;gA5T)@+WIqM@FF89t;CfchV_3qq6TwXumjxM;dU~~E9lmiF@1`bI+A-}dw zK723v^eqH)UV01{TJ%H{oc|gtzCwP0{zQ^hz!6LZge;>D_uf@>;gL&hX)n#C?!$ah z5WJ#I0b=;hrD#Ihn1+Etcsp#s;mH2jQGRT)3Pce{EuY6-uwWPT$)*@xG;DP zE~Wdd{is0uWBfVayaNsBt?CROkE$JZ3=Ud;aUaY}8qhJY$5}Ey#&Nt?~505PV4RXeK zkKHnQ>_MPm@DbOh+?GNc>Oi|Y5RDTa%CmlzQVM4^`u=W97gfv7CGUR<5*rBEvzIcM zT^y9fybg-Yz*Tu=9VH1{xDO7#9Z0O`=6mV9i!U5?<>;|FzU)(Z92z;De?U2J)qIEy zglxO+;Xg3UUS0LtORxh$6Nol8@(G>60D^ZgY4;njb5RlZ)3caz+~n#(de*y!vzx(E zB>Uduos%hje$Cf^t)zMuD=LzXcMk&(1Uz#3(hJ(p z*&3P8<%`ULz>k&4s8VOz2^?QZ1!qIZOvD4BE|CIEbO0YB@?(sV{1`YKg6k#arv(~? z0;<>ZIq2!xfJ7O6*0u@^zleZ7&j;dqt~suiPy3oGgThg<1}$O01ICE`pCB0p^JBJzmj5|cmv4t&Sv zhVvL~1m0hS{7VebCfDYkigywFTC_mY?U@ko+MJp4F{DC1Fs_PW+HA)9x;IbOKx-89 z#GQBU#{>oO%ViP_4hRIQC0(W-xf3U50ZiPTC z!>lAwo5E03N&OV+F$(qASg2`$nj!YR3m6J5OA-hHJ2ys)=970W?U_5 z$712<0=^IMSM%tJ&{yy$d``0nbZn4D&;gHk?rG8hZ3H3ER)If3;a{cjua1RZ1o*{( zKThD2G%jc{vv?6KI{|>+>MD_1+ChllLsX6P#7r2<7$>=m>BA=oi<=|xB@_fz-Zw>W54K*xde4bJxn9atfYa6Ej$2Q{G^ zocH+v`H*67@PP^xb#(q;jW)yz-Z1p}krdHnIMHaKkGCeM3cJ5K@9?b{0>gM9dViZcyJHr+^CbyR3;7zP+#ws&w~a1H~6v} zz4x35^cbJG%{%{Se5KJ^ZPIQ*9;KH$+T+C-D>t_CeRg}B%aZ%2JqtOdG2hLz0 za0WoL6Dgg={-e91=~W)Dw$~0P`>+%Udj5SnZMijuHy;tmeJ9giWA|wobLjZoALqQ*ADp* zA7nr-bx$$T06!2bk2ZIN-a^M|6YM8_AtBXo;!AUTLf&j-nZSPMFTa(^H7Bbjb3!j| z(eXP|3wAdJS4e%69XsBDf(<|%oa>Jk;0e2r5WKWaL`$=7&@-l=88yD3F+fz6{OruX zw{^;)$LIjuH1e16amdXAfb!)b!D_$rW?yOedf~fhR57Gs?K#isPX*?u84;^Sd+Xe% z1x}IzCKDb;XB|Pe(ovZ|4Sl}VzA7fJmD07FYo!34msNrO>^xc5YDa??wBfDU*?aDo zSWuh3sj&KkS(g-KZ<{s~IZb>GyV@7lp4_vrwxXwm{a;EIgJg^afr>;7mp3%ADH^j)71OPF zz)(^wGfucNrRQ=XSLBqjG1vyraA0Sc1#e*EpdC=>y84Zst0GQ5=RG+G*u010)eH5G z+N_F9Tkbc`UrTiUN{_6sbi~+Xq0gsR3Ms@#NmCz_#ZGyn`90yhNqYN?`0I6@ep|l- zUud?zEGrc{YtacT$y_1?lYXo>D<1b+UMIBWJ6;}Jg%*S+-nr$bKFkgoPuTXW&D8mk zR&Dw5m1m!bLpc1}yYlRF%6pKy6G+Jt-zouv{M6xcO#V=$Tq#uIr865)1;6SooSwkS zOaXx;;SJ&QqU~F`t$}TWS)=KXRioI2bO!OG9o9nt(d-gvfo-_cL(D?|&u#2A6*nS_ zMO&C`oO0CN!kATvNHMVnb@D)-F{#cR0LA=Eu!S-`;kXj2A_xKULJ=gb(@sb{F*95V{-n zMKi7-Xs9m^Y%bt-;?p^yr|RcSRsK>2s;-`8f}YFIg3dZczUu)FcV+c$EsaFYoe0Z@ zQmW4HqUP#Y-Yg~*#Fm_%Dh+xEYlAwnt!@SRofIwb%^)rCkkm6;G#>j&TK3$5ElgcO z&;6GI`_l~eY{*UMH>d^d>((9ubJ1Tjj}p{J8_eQSFLB0dfm06$^}lP`y9Ts~dP%RS zi7^KC>36q4_(Nb$n!nOR5P!rlIUex|&ZAo3c2nSxH2;s5ee;wS5g&LC5FgM2&AC1c zw17Hh5i35@3z5KhKF`)R$C@_dq%?ON%r0ig@de|gH2=SD(W@;wCu=X`T3j`@wHDv4 zIdmU=oeshoAajZBwvMT7Ulat}_k=4ex3K4{1^wRgb@~|-uP?h{`o~zXg*WJII|Jbl z`t4?XYjLWT?I!0!IqKKiOw{82O7yQzx91PisADtfrh%JI7O!T`$aKoSfL}y>L(mW- zzr>yiX4+ivw{ZdDJ9d<(P}^tnWtQV3S9FuJHo?rGX{sm^IUy$#c&hX0dVedxSsDu<tiQ2C`AM_0a<9E=QaN(<&S*dR zHg8o)qWsb^RL2~7EX?(DXpViVo`G+uRB}tXx4MptTU4An88b1ySI+2go45LQnIuz6 z`f@FVgIsLAHt8xp*7lt$Z_Syn+95Z}+nfq{t7khAcTtkUQ5!#Gw8YE$lHp(Z#s z)vV9ou$I$l{Uo~`n}`p_Ytxvesd0zb0@30Wq%)! z?z=S?k!zNKILbS(r4(V%p5`=e+SE z7C_9-qKEp!T@ZgJyQccw%y~9zLMokS6!**5LN;%`?mBPv2QXSDA6)PC1|C&B z*Ww$Nq1TIieBZNm`PkpeZ%0jqLvy5;7w66n06bK!4E#&L5Nf0)HFx{{Q#F1Nm6D zGG0EWnKY^NM>f*~)5k~22e{eETfLquuvNKN-F$QTRg))!&ED!sq6rc)QC+E;;AnI| zN)x2=QMtN^BV4B$-?m*`uvhX8$Gprv@=~T5&%p`UFDSo8xHOs%V#%5TD@A+7yL zE@id$Be;|_w6!0F1&fHa9lyVhh2X;3E8@BEwMmiMA{Ta#jphP|*`#Z4o^(A{%%J@s zF%lBXyw!5yQ*FvM+*OWf;qiQ|?R%5Fb;sF6d7E>qymgI)Qa&o5IHTlmXi#$i8J5*G z0X{{)q*uV`<{HxDmvpnW2;yvq7Ayj2@y08_{^?f<`v-P!o&Be_@|&>#^wxe9B_17O@DghL1%6!nU;tK)@Cs^24lT0D>0d-l1B*jFvo(6#>LMr%b-B#crD2 z==Xop(bs09Q~u&ty08Bf1q5pxtOM?m&3RehZp2&pvYkI0(6%w>p^mZynZi{0sKvs> zbF-9fVR5j~cyly;1P8%R77cm^a%*2#2@1wtwhXzQ%NAI`dJBd%d3-quoBl9#CI9%m z1^Btax8n7S$3C)X;EG{B$y(LNH)*T<3`bOdTr0WJxuFBFb+;eKUlv7m>Ea6D;{20^ zf=Pes+u}<4j}HLP-hy-7+C6w%i+HXehd^}al*gMdfSuym6pPq}WIE1w(#gvFGo={b zy2N=svc#bVV!&%AKdYO{JV>S)#&Ah_W$zjI0qG^MX5WY74A@TgEXTY2?A_%@GZHKj z-w-zzMqFdk1Ns9V3j&+M9T-j)*h}W68u0rCaSb8Si|8qeA_idfPW;M{O^2nb5w&s@ z5Ui_1FwtMeVg-}EK2H+Kwh(ah!paRHdkY`!(W;mf1*S4T3Nzt1GO1ZkTHcaHqb za9?Q#BCb-X&4=6J)FvGKHe|WcH+w_E>DR48;w^421ok+$g(2HOa*=`jkbG+HPVA3= zfM0_}ARk@v5N-JxK3*wq#uMTk`nL9)1oT9YPYa&_a%;+P^AUsPHp&HQF#q;A&JHw* zRe}%pIb-(bA5UVp(zJIuAcTa=t&|W1Lbr2~*Q|u55R-c)p9_3U3De0u!k1R)7xL3%Lid8II8yJa1|jvvw(KFL7&kOT-=}4i{oaWA-|VKU^}0 z0`{wTavFIOXmFRP$n+vZpmtUoJ=29f>kIn5;;Y8yB!kW5LMz+>igYdujlfuEugXU@U(YFwMIaZR}J zFCY7&lfPEz0u>|G3L_^E=R!h-!{1xImYq17{*5Q)!gSl)c=1>Hk&}-#yqgpQ)J{Vd zvbKbg2K9@3jSwFJKHScgz35C(qGND2bnC=J|w~*3`{-4#`4})CO4NYqf0n8c1 z-lGL6gae(elNEAGqJr#s5)9(>`05Z;9rG{#h?(af=Le>C7(U|DM-aUsR)7}3) z@ZjwZ)$Xcn;wj)N7rhoWd{48VU9VDd>t;VizbFC9KOgKcS@pQOwyAr;&39_ArDPW6p68nQ; ztlDL2@_!>a;G?~X9b0PRP21}0_pYycAMSz&f_Bs$MHev?u_OdgOC|Ka&|BWfZ~EF9 zEkYdG(t_rW{yF6x63HIFXjc0j^K)g(z|Yvq+P{8;pr4Q)Rg`Ajn$1_J8f^ITN>NuQ zIv4$jR$QJtb9O1pi-=RaCVXPce}@r*XsdsMUJLDGTB2sNkII24V>9zx8<+de;$)S> z>J)@yh(bgV5*c;1#St=f-v9Z();;&wy{bq$Ly;u^2A$~tu5U%4M*sQted`Mzc_tKz zNAEc};7(m44^6&)2gScrz1Lg)6p*ztfmkp``a&i!$Et}R?q?q52Ym-Z7LVMY1ll?8 z{Va5~k0*Y52)Y(-=8rgx5Z4iGn~PG6^krLgUrZinbOq`A5iwT%s5?Ks&g4g~4l!2^ zf@~bFv4mbMj5bj-Sgc}7+JgO)x1!06o8usc5h7Aidwe%;Jqud8B?7{#1^t46978|s zy-1=cjsFQBZ63L{1Wk#^%UpC&e?9WkS55NZ?Adt;!gVK_tG@k4|3Pu$T*oVC`(7HR z|JwVq-|^1*9#jdHF_Ai~NA%FdM9a23%;SwD01Ou;#PenWX5y-_DRu*o$qeayA-o6K zdw8!W^AElW!~9cRIfNy{>`!6;o#SisgRkM6qkS)1!`#;fx78Zxwn^yA&C;5Uq|!^Z zBZe8yUnXPi6zqG_$v83bPA@K}JQwP#RK8k^S9OuC9uAIF2}*JD%bG2RG~#AAuHtnA zPs|tHU+W5CF#Bsh0>N0Ld;=!-s2EYB5jfjLC=NI$h(2PROq9h3`#(*+{yaB_r&Mw^ zlfxy8)@ZI%`UXXb`vSF7Gvst#j83yMp6mL$|$6@B7Fwe z(KUPxjL!td1qk#);>!ui1%dYIJcNUoxY68u-V8e*^B#}41>VG|oMC}aoCnrJDfpS@ z);a%RE4^sxNN1h1qqOC&G1w=AA)D|YU>L~>t8>p$vS9bl%Fx z7}Nh;xBt|r>_5h61&Dwy4~*`zbaGE2*UfLDx9A~yi>^9v!267T=AxfhANa+7iv1`@ z@0znN(!Wr#=~a<-hN)rL8C@S;8sDRs?umaU5e9+!XTCqx-GVNK{VVO`l{0-f{_OFg z&p3aW0c8cvh%d6PqFZQs_0LFv^VXwq8A=|6S@&fnIFH^Fb*$KPBVI}Ev}U!lr1rgT zZ69l26H|MLt=+F#?SoZp`x3WySJpl*rgqc4rtPuuwK2a+_3pNM(hih$KCd;XbKrY6 z^3^2=apVpn&eNBehCIg}=N0-4y#TIbyk{O$W(ZbE z%d#kgJ$#nwvoKOdY#D;U%rt>Z4}dJ;XV9~fRo^~en^_#&Oy{U(P;|iaNeSlksPpN8 z5a=>=5qP3bTviSDrpYEikgHkvd$;K-@0mO|73Ve)<_)zs46{j7y<6J9zwI5k+ktOu zpI=7|t2!Y6!Jo--4D}Jo&N2anE3J7!+wveEGV%lUn#LDmJ*GBj1ZG${U|H; ziz)t)DQ;-L=nt{QM-%idrfi)li(ZmXOCE|Xo58Z@nX)ypXv~U39i$^RS<&T0wc*;4LWW8fpj{FXlaB3tJW!@1PTfD^+s3gtm9e3l?1Ti9Ha!+qE$DgS?~wsH z>3h=cl|P_scK?i(Rni0uCCy(QPq*%7NV3QZ{4eceSbFDIkXP)JA=^a4He?$ra9pyb zwn(-fK+l$TEQ)s%4BZf1Pk9>@J?8~IcRUlJ+o11Ax4R!U*e#H%N;LsOsucoFNmb&`R#uU* zh)|7+>{e2X*igu_2+>e0N$R`QN^X%_&eNdQc{eMy4nE{ki>1SLq}F=BQj2e_kd+xi zb?%GaA9r31p$0FAB~-E!>f=5rdhlE&RIwqHnIsl}7F8wa84aAQ#!uW!LS03~%>FFv zDy0MpDRnGRjHQ&7FBVyW|C`Gf(IUk<5VWD#4x~Sg()@`nQf&GEfMQ*4Qi^SS(4`nl zt9&hxEUM3^^G%ELwXHX3@lBqRO*1(qW&Ayg29TvhCEH>aUCW|)S7gY>4ne*qcffwA zvAZw<^aWy;Y+H~y!Jl)Y#SZfc>L}F&2&wipwlZU>X61`TglevQ5gSr#`|l&vdPeHI z@|DmcwQ8OMwRYX8)cON!>u6+Ym9L4iqxyV0-$ct7XTby|!sETvzFD2CbnqEE82hs^ zTH=D96f|k+@angu!!c~v>L*rKN(dNIVi(e?#!|w{4~w)cKSYfbS^q$UB990hmm>R# zW;3&J`rkm2EjK7dYFJw-!qO@~qXCA4nr~W^pZj}4DE@wq5+j$bz~C~tRdWn`y(<(J8~$?Udpl&!~K@JNEsR`0s`~yZece97x)?UB(Q34(@dsm#^}L; z4@QAN{;Db;GiN~*e^^=hBVfp%^N@D6CH_S0b{4IJ>%Z+Cce6fBKAUz0{xSUeWUqEsm)KuDo}(l4a7 za_5S8TTY6SKoMJx=#fC}2-*;6`yDX^a)@O!0zLO62=tp0CD1?ba|y)KYMI;%FeDJ) z7y`lnBDNfc^>(Gl>peh^FV0eWq_L%l7+)K;W`TI+p+!5U{}U!XM%iW;$dxBb4*^1Y zbdhdE)5GdE7FmJ+>ATUnlh}|9Ki(T5!y->Iv9^w6mR8+% zH^7h#d=stPIN07yLGMFDwfCuPAkzCQqn1D{`xwg7{xqeNO=&ZX6QYJFOP3Mye3p$2 z&HMJ-?d7g zrg;W6Y()??@lU*Vo6?7GqUl2+^L7IvPRv$9?B{rbuo;0I7mN^sWp{Pe`MWVIMkW*Q zjua!w1qw*MSV#^xlal-isg3vtXEp0XSS73i&Eb#-b?4pDrW59W^vmkbSHB?Lk74KR z{Ljj&Ed&g;#jY9gbl3SmGQY5B{QN>RN%(ca2;mk(d5F)@-;4Me^c>j*B5=YP$`dD61g6wR@iyq0y$C#^rHeU#$mitAyn9T) zHFJ@2M1YVZ7u_1qk$6oZMg99bd4qBo%k|a)H8N!&!JE<0UVynwsh8fxd+R>_GnjJb zRmzk-wJuXwI_$@!PyIVx*}`{rJX~j%LQP%}qu1#w;E5y#7S7R=82BVOgN{W)M>xZj zj_XiW*55mZC@psyS{lXspQzykvJU~KR=z`@k(TEYT`S+Ltke`Rq-Hzd9jjO3<(oz0 z<(pWNl%L%lA?3<)LUKvDqD4|J_!CI^?UhQ(Cs|wNo26C0rveP+n{VRfJLowr$PBFu z#r+H_{(z}Vawa>E7?>9e%&zp#_((#OWe1QVqc+Jq6aH_QXctNo`a^!8w

    DH$WmD$u!o^Xl$DDSU@o4{JCcW0K%$+o{#7AoTG`C3?@x` z9-Ss8&XWQu<<9~Mx265gLMlykIt!#z0VyE@>48{C)BgrY)RdTC6x3)7sBo67T`buIND{TM z_Hq&{Wz7&03tgNV1?dDAQr`%qWwDSt-33UTdz{-8(o_p6Lme{o7LI z_HSY=tlwg>@-oM-bBe+`-opCeu1Npxbs^mqfz&4!(&G7mB;nq>#!LS`IL-9$z9>i| zT}U|*NLzz3lzQ;|t_d$QNucwvLUQ}(6G*myjoA9s{_XL*{hJ#LYXp3N+P^}DHNs-` zBSc6<6#QH2Li%e2(pj;PDk=d9tKbBuokIHYRMWp@7LqT~xn3Y0fw6G8K=LKhBDi-7 zazKBTsp@VqV5t84nA)t2wW%@m$YA(r`wiFX@e*)nw15=j9y>5F?6FTj1ndzyJx>`sZA+rf( zR{mzXu%<*{b%=#^@hrd+sd;0JP-^`kL#YaZrIZ@vLOLM=Y0cd+l=^ZmAaROx{0gbU zLK++e=?f$x)&6~0>Gp4GETs8&0up`XPPRfCY#}+2*+~B$abevXfpvT=tXq)wQ~URI zvGnirOw+%G0!#aMkqc>L1kwkAnEw6cK0p#p^teJ=Xdzu31*xM8>8Cs0{@oV~>4<*< zl4#m73aOWclo->$)i+sMEsek$5eut_i&c`s>R@55fh1ZJtm8YkO#Iq<@6}^HS;G2Lnw1?u&vn(uI^0fwc9m z7)s6T1xP7`^sqv@&qDGEB-_8n8*Tsg+~M|bZY->xIE19KP^hp*SXe(o5^evMx{&@F zfpk_Zqy#1~r3c?>7uUaKQIM{8AzdDUw0CYy{}%oaAc>}0`8%Q1vQrGDN(7SaUvC#y zmk6vUV`05N2e3pd+@!E3T3CIeu-bBirPPKBmr~KY4aSpy)+_crBi5lFUwLtR*dBCyt1$I$9ML_sK4L4`Hf!a6Go zt38u!|Gt>%_OBuq(rYsSNi^|!3h68hX)h$v_V2GQq(4R=4UUC0k2+7L)dQDE|Ms3_ z`nOmh+5U}lVO5p&T3F+wuKK8vFc#8J$Z@P#U89i3 zTS#4_AZ;kIlzQ=Ymr@tULdy9VkVGf+R7hPdq>Yfn$ow$Vg*7Dtt3xcTkGN70t^UTv zLaX&B8d_BdEHnSPkWPp|TH}wQ)X&dZO8FI1g@rUY3ep$X+x~rco7=ysv5@LrNZAT$ zu!ZD64kP`0#D#Tl1lIAfuqMGv_%c`e&es=7|32?;`nOPEp?|OnFA_+!3P%bgBrFYj zDz1l7`0nw%U#yg6%ON*#76VqeyV!@lQOmyK0t&96MfepXiLpln@$eiakuKVjR@2y^ zGLZdUXPjd6qs6GRv;s?05Ao9I18)DC$X4`~tQ;8_RV-%f`xAlT5MaorA7azNqz(d& z9Y~rvgA_*2)u1Oi7LlTIAR=S!-6B#YX@=BF^ykcl{ED@!rx}Pt5$I!ZU>kPz3LKo3 zZ|kD8o^8v@GkKYj0yO%_Y^*$|YXcYB299F`X65<*brc4yJd-xxDyYIfHxM_w5GPLq zL@avg;>jn(bcNVAgNy{q+aQt_VvU8EGD{$eN!tyzNI`)aOnQ6D7GEUqg9f(|D;olt`k!ABzzb^{kJUoA40edeF)G9 z>SCrl1*`cgN>Bm#@7Dl@PC&t*^BAkDf9f8IdZPd7lHB2Z?lrFiEee-a?F zufe2?%9K|?aqiXVKoPBN7YLooES=^MI^+YFOCikK;5W+PR}zJvv+^w+ zb}K*+9d>U`0aT4|@;p*O{U^YaZaLNryWc0tg*lnKb4!i46iy|yAG3;&zK&n6I zWJU8hfrMeV1EWSDK{)CJ5?y6;BanK>LORQ$=6rg-ba=-xMlkM;f;7T~bXEk?mYFd) z31ek}`jA4p*FqX8kdi2{kiRS0JtDPdirc-pv7jD*0NoR-wopNhu%Lc~Oxo@(bs_yV z0_m(+NKbQ~5Pr5(NI&*7-CGs~>3SE^YllIK z$5xBS&S``!@;SlC=idc1ZdHhqPmZ7ER{)zHzx=7Q-Y#P?Vsix`TD2*%ezpv})SmKV3uLA(95k{Un(4teU z(0d9_fZmbN%OF2Rke}6;+u^bF7FT{o7(@kVFzGKAqLU<`Qa%?@7#?dNzE*yw2qa44 z^$|!v&d@F!NY}WK){YdeFSL-RMnO8kh153!X<00!RJyoj&2XDSy4XU>5J*;jc8q8L zC_h_n7DiA@b+{b-x~dQ5=OCoY$PaOZ{QM0ysDJrrbuw30+rOM|l-9)W? zzO9e^1U5mj@sVaqSEGHTRx3}xHAe8(a1@*QYpCM)!Eent{u1J9q~2%nTQN>&4PP97 z_2YnFZ-Za1(?#%m%GO7gHN`L2&Kh-q)AFqG&h!}kF1Q8wQOjWbKQdhCcb3KPdZw}2qJO2+;Iqqxd z_Y@@7&@ap2Hv@1v%i&fg>`6sd7L{Xx-;SP&UnV5<**>n;NT2L#jg{pw#QF3FG|qWJ z;C>w*vfmy3oTl!uJSPkxetF_wV@0eE?P^70_rbuJzj6yo6Kak$uLy<;?%iKhR z&v}9mb@eLor6{fL=SH0v4OOODY$gk>`039%#Wq`p%M&nfCPRKNWxIHWkt7?!I2RK1 zTo(njp2nY800RM3RwDkKT{lvok?AoR{#Ob!7SJj4OE@S=?Bk;9&vom6o9otpJW_v* zTmM40{=db6qMh>6J0#ZGvyuAOMC$i+>wDe$Pej$9`!4Fs?(8j*`p4S(iOze!BmSHL z-@2aolc>XS>z?v&T#6FEh{QJ%vk&@>)2`u$BJ3sK^n^qv$_i7|531UnN#l!=Ny z9S2FbXvJK-D(0jJES%e<6dNot4K7evl-e0a07hdP1*}rvhDxq84Y=b4Tumh*ZK!+* z9|q_n0<@-1e^`tUBgGHAMmRN#^at96rp6Sl!C4-lHsXUk0Db`pQL3qzC(lrE>L{mD z@QZTFbB;a{T^(nO6#%TE91?tffgSt5$8ItktHLY>YNPN``3Z zT^X9+Gfb8&Ld(w#pVyWF=~EKaz1L4U3}r@jcf$=f3W9zwYzt`_FrCclYal zT+efz>s;shabI`I=<1o)>!<96AZ7B`;&aLGp>r30UjW~+Ae=;A2ZIQ|{kzRV zYe@S~#hbwX<)Mdg?uE*D%`PZoG!(~~e!3P;j&{p9pTbE;XGadT5C|utg`|mR&bthr zX&SZ@3D4vf@*X%Nyg!9aqzE2CO=MPq+eD5K54iSfcmOuBk4M`F+-e?Re&60n#@`zk zJq3SnT=YzEQLtZabkIKMV{n!Jc>p>^@D^#GQFs&D=Q^AZBKw^5JQM}z<;Ox%pzgxL z?T^q#IC62geKVVC&>wEo;Im=a|8V&-%=r-I!;ieWhxhRu`1g#mS^a*=fcKAoaUR4p zr4U>!^gT|%P=T(7qLXc2K8*@wYR@>8`3v#iD^Lc)OWI&>ah{uJyAP;v z<)H?gVi>`fxD7e7-vIpkPmV}|UY91G zS#P2MhVMvtrW^k+HU3L(R|Jos6l2yUuG`%XUvx6#hhs_dNQ#d?{onC%B4%nBA2;9} z4GG#0$tqRA;t?dstcsg}yIm7)8BQiL_A>Qn{+5is!7T+GxK0k4 zfu(@|^f@HW|B$lp^WmAsuOYvJhq6ZwHcujlY&y$z$i@p@hrB-(WXw96Y&<|XKsQ+b z@VCI8ZeIZJN8#)aVawhFtm(L%5KF-&Gmv8bLjDKN&$T_k=6_HU>yjWS*`^a;0Ze6gIzeJEvc!<6SbU4W+xrz+D&cvr6e%Q{a;M zrUK+6k>%JMW=sPInut?Hq_-#hn8J70VN`X<2EFEQ$>?`3X1(+K^`WXO&!kw=$5(X+ zar%Uwd78;jvBkVM)Yja!=0T?BIywX431BK1ZS~D}Q_0uG?|+*HzsFc~oA>+S?(f?> zdo$dc-<9Xq{O2)H^K;vip)vbl8=isPfXOz`6^Ot^snM4TWik5vaqBy1HEphib$k3AmRX<~0CO(a zWSJ?Xj?NDgj8?d6XOQ4FZ~DmWupVb_EqVWXn0x7YGR(a^&>Wn5F(-^`eq(~Zg_dtBoB%Q>f# zQh%F01YTy_EOsB8#%nD$$CM;dDap3C!b`ILA6t^Y=XoW0&&(Q{%5pXi(MmE$mISs0 z(E4GjTADiegd@d|%23caV*^DR;uYyCQKa#ZEKvg=rWWZ-a74dxUQE}Fv&I;w6PE-d zSv*zBE;xyqBUyL4a&~)jg_0Ytxg~$2y)csXpu0ZrjCWxq;~x&9A7Uhnqq}cC(K!Oi?F8NF*NXvh5gT#9b( zotMUuc!+KyIUO||#CJI|SPg6G-7qLh4_3PJFY6h*|Kk;91H^5rhE<80XXKiqP-}!k zP2livY>j&|sWnc;Qo&Wx8lmfy?>oF>ZY_C#B(%nb{h>A92}fnpIZ4$17DB+__GkKl z2~f6L6Clj|XAQMRSk(%B0^e72PL3d@#_H{@ELgwn?Tg}gC!icJ(YwuQ56^j?sKRgG2$b-6G*a?5}1pR}VFycqONRN7%{^0}o z!|E$a@E7mWKYRgy_)!V;s4esl4*VgP?D}&B{^A?+59OgRt|3=23x~1ifGa>WY~wt2 z3c12@<|gn;^S5O5#Pe;7oI=@d%$ekr{t2e{;d@lL|Dd=nRaZvI=;O?9=f~0-dR$Qt z!(I;eIR{PG2)iJ74x>H%ll?xUm*4%4eS4w#Rew?9iBqA(*dhNikV4-6*L;I8Y*;Ub@i!n^!! zAaef^=Bk`D<@mYdR{V!R8;G2P&yka+T(V>=+1=O%%0nj&7K3FHPQfI!*c zOiAMg73W&}@=$;J8DwAoP=8=2u{q`7h#pl}3 zUWJ$X!0%kwUbz)7N!Q*|j+e~SUDqDn1}{n1zU}vbYu6ovcZIoj5B#m-+W*{SZkOu; z+(aJ4=P0h7k0oLJXG}nIp99zTe+IOC&x%OgX-@R~%rEzT|my+)C z$o>QN(y z*W;yWP=@O{4E_BnUUKcr?Y-~4=Bl(W$D_M3p;YYK>uCJN6Q+b4Z+!#)@GlDK7Z^Hd zy@j>r+=#z;mwxdD{Nbwlu>=0Y7WxOT`;2@UlZ(5*G5-Mjf3NhaD%nJNGq`hR#8XxI zyU$~%*s9|0voVFL%HMs42Dtfk>LIExndKFN3w(NQtg-kSqCzr_v9n!KLfjYQ2i_@os(bZ(qmX z%KGBc+=Qi}`hxwnS9m7dmgPo|A^pf?xDE!JI{?Glljx&nt1T; z$Un(i96@h3-@Wp>=B}8k6q-u=?sBgLpIihbXm2X5I*v-d38loIrahO^ zpXa=iW$c7Q<_k=co`FgFq|-;@konb-#%6F;B~` zo$~W+n9$|?dkoAYWgX%FZOb&1A-GdJ z0esuJjPDu=KfB-@c#S=WFBs=+Zz=%y*cj|f%J*fx$@Dh`a#h4$K zcioS7zzxG^;tg|P4+-2~HU~zsH^NAKFvR?Y^^ZwlFC1UN@wI#Vm?NBF zCr-~v3n%n(?i^tzaU#rFo0(oYr*ag8S2&FHNJo{&%v~ z0HDk|8;o}aUqItwYcG$iT{fn1U8k{O9z2VUJRiocP}T5f(!zF=7EbKrR1W8=o(NT)4@OCYs!r>Z zQPvwu`_6RFCjFp*wDfiN31kv~rgy5#fVtMaJu}So$v6lpt;487{i#kJgaP{Z{NFs| zoIM$ga~5Bao^=z9amcf_9k9l^ZM-#3uGz-Y$^5W9@<+VG7-t&Z@c%W=_0V2$lEoM& zP8!F|&lN-Yu_J*(Y_sXP?1YV4suu z0@{aHMc?EErabbe->rS7r(63Zn~?Ks3)<&Hyu;XM4BlX3Qm=S4+6C-GF!i6YaXkCb zc=n-lpzVQ~Ow$7&!arFH+fQ1U+s8Q{G@y-gz=!664^0Fg8sBHb_>pZh%Z7j-6;jWfn z>8?I-*9LpnY2ID;p9n_!nC~)i`Q3?N?pnTp<~H3A{QT!LU3a_*AB1hSCC!?9V}E$k z?dFH&kxK|wGP;u|$ppIfrv?Ju5WLj{`Ce7{unV9)t94Nao{i>#4`G}341XpqgsPd` z$N31JYyH*Kg=x>@p*@cPMa^e{qCLNmA*7;SR?!RltpoM(6n$p8?U&6D%Ol^zJ0NtQ zfu-n#D}NY~%^~Q0_QFZ!u=WSXw}Nv(n9f?5(Z@LtN`?QLWrkd75Pv6P(ZF3GG*4-7 zVz~(?CYIx0h|818&NP*ma*^jdMPtEtFb6m?7RnL`%d5bn*==z1C+x2-9zu5Z$K~`s zZu@HdnXEAYP@iOic|PO|vVC2W;a2#)E!I43&$Jc3#%!;+-~15LeY^uo-u0WY<_2hA zZcwIxnT85WMz?VbYvPVSD7S+`+e!=%$_W>G2KjgbHzsF)Pcn!oLat!=AgVJ@}C^n9Q%H?=4csX&GD>hNw=FHmPh8}9mX7=;tl_& zIerCi!=eVwaWL^P=7`Dn%uxshqZs^M56v9qF2lrN*q;dgkq^%ft`Ek;w;Cxv)$a3* z^3nwGkLURU8idz=uFrD~GV2#>kX>h3gDmX}2KkTqVR__Pcn26H@?E+C{Nr2`aL>dR z0Dsv(z5)Nz402W<=lemzAUWK~&+N0|%#m#~%DRCkhw?n5G?)oOoM``~yJnQ@U5+sd zuE0!y#|LfF3D!)V7k~21@x*vAN2R#{4Ut#$iqB$8bUpcJV+o9ApPz0laX}BWP7LjA z_(uHiIep;#KWHMLkvf$wZl~gGI7R4#h#ML{mG#izvYjgAC3+Z^d@p?43EyulhDQap zq#y6rZ{uE1&?o7p{hJFQh`ZJc#<_x~Hd{gM!UP={Z3G%Y19d^a4-6A@*#)j3oVp#} zjiCP4`xUepf9qWZ&k3rzE*5GgS_o-pgtTQL?4$oZ-xacWpA|A13+~m-AS>ij!#3}S zh1bo=;Zhzs-<5(+c2!qRO6P!-Z(&(7DCI@7R6OBFuTE0Ofs|x(!E>_X+;H5r?k87D z*SV*eI+)@*S=USHzoAYZf_5g&2!0N)95~aV01#y9{7yK|CbT8j6@oJuPj=CSoP`g= zVP=L2?6eltbqEbJvrv?OEhxi3%=~dM4m06XB(y$oEDSZ5{_3s=(W;R5zcl_F8XNMB zKhK8o=PKwfVSOn7VQ>6-%@c6l%uT`dG`&V8a%NjEZx*yg=RYD)foVVX^@~ zV0*n8rX|2rjIuGb(|cKGI#lc&@Oif4NRi*iCQvo{``5bDP4{8)|6+;dd9$MD6>QDp zE*975;~2XWJknw@I;|X_5p#g(L`fJ&q+ik%Sh|H_Rj-LAjfE0M{X?osYZ~q9tNcNj z)$IF%z+P0QAR8WY_2KTYG)5i*H}&h=bdsiT9uS>G3B#E+c$pt|6TsNWUxx)2X6|yf zcOre|62|?XN()(iwciVU91|}*LqWDY>gvOYHiMBd5{dP<2Ub8$!}oj4lG8xnWC>$^ zMN1S|sfD4w106}XrwPzB3WM%Oce&2 zM7BkuzV%V0Z-GRjzD$+4e-!Ae-YtyD@#P^HlLTN*%UpdJUve21DPiQFjd7a3QlOE( zREgyFHz(C1+nVo=W7wW+k=XurN0Po}BZWy(-%OR*+32hPR_NpQ7g}s#ULO&%Fl>KC z3>ze2q_6cvO<&bWS6{wF^7wkmPz71>h-*?D07fu!?TB!FWh!wf5S`{-LLWQJIWU9@ z)L*=Xp|dPKmW-JtVWclsrGDfaxPKU^tNu!u5?_-kk9_q-MP1W_t~z`bDwkoA62|ebwGz)!U$w0`$%w0|q!v;wh$G={h zzN(?FzI=&{AmnqWDEcZMa7}9Nav~VHHYr?RnMxcAM5p$J`?-okK9xAZ77 zW|o9;{0q{YyB1P_fw6w5afUe`gt=xh)}1LROhJ)w%SeU|puv3t!@fDyD&vLEmyRb} z`WHTLFoZ6Wz@wYdu&xO;2ZZfQ$aVv0NVBmW$+if1&sWw7M5az zqlE&XasDTf$5Z>6ig_p&>nVwux*0# zsL7ZZY;zeFDPbJ{dTRPgfyVJqBF%e~;4Ht;`@Nv4_H;Zp+rY4~uW3vA3MGv6rK+^1Q(S$O+l5IP zdD|ofN#|=@WEvw64Gh<}shg&69uS>G3FB1mlwk_20FTW!FihpPw;_Gy5=Q#+Ra(gE ztNl#qGn@RtWzIO+BE8(W1y83oNOPAngOM>3iS2JsS54oNfuL`)gz;q32zoop-`Gnn z3@4Kg{QE6_@pRS6!kDD5Sf#}Sjp9q=HldG0+AP=)A8?syi^Pyt!pIbfM137p;_8z@ z-)srv_%eEy0;|FUtc@`-m~~^==7fO0$}XBU(}70%TDJ;)oEQu~PeCSGq`Avk@ei3a zPa;uYf=b+)0Qwdwu+8TxusS@z+UP@AGQ;)_2*sS@`O0DaXB!kE0}?SH!zeNA|Pwb5tpa&j3KDPiQFjnSIEQlN4FCy_kl z$bnOW1O7SJB5}yE`!CYB>?C1Q)HhQlb~gIzKNb2o(To2`frTs#N8?2d8zf<*ueFn= zuj(XMU%o_g{!)*7IK%Rn3OwoBm=yDu2u7~$AFi)VB@P9m)4WCK3&X~+<`C&ClrYkl8l*YT-t3KUT4B-1S^5dt6~{L`iPg{txsc~yz_0{s zZ9Eu{Z$3GWl=;UuZ?=Qc$1p>H(MK1k4(NfJSDS~M(Z||;#yH6{I3&h#L3YLk>OV@YfAbadC<((&tmTo9A5viH7G~~p*8IWsFJWB& zDy<2>{%zK`DmM##od0yEHDiC5-M~i{amtm($U`TF>)RBm>6>Rh3Z5uo?B7p~QuMj! zD~+Lr|Lq4!U%7;lzI>GyvifR27W#NdHy;)m1NGO!M3&UV|-~j1c)mIpk^cAbLc%X6q^O4ZU`Ojk5$`{ZVZIP7! zFfv6VQC|m@xY~SGe71yf{xbv*%m~w0#it&*`47W3_X+5$JVvu-I?y=(`B3QN@zqmt zioPU^#PQXN-^rwT5{dc}RN_|i5%5J4#^b9;;QWDrG3)qnqA@h*k<74tCj|7>9P^C!+}MYWQS>$OiAUVn za~T#XVdS5U9W;HV_<3*>Us4rhUoF3z>qqY1Px_Yi7A8e~GgV?|qp$u0p^wK`ANN=E zg)9umS49jPBw?hlwY{dV3O?aY^_MS^Jihw+cm-K;i#w%)5Elqb?}jH(pM~z9AA#rh6FWycF`C*Y$cA7JC6_7 zxAG{>qB%fxq9lxyt+Vh@IEpWAA%*C3IyRE7)f-JCfi2^(Kg6Oj^?L4CQhP}Nov5O} zFrOJ;vO$=Z`}vL9(%OeNx%G%cpHzmm#D?p9ubrmzY6I)9zzQ_jMSfWQFQlwA06SNO z{bRla{$`y}#+~jXNs80_!p9bIr#qctJp!;FLYlJs4Q!HxaSblhc0iO^7}nWuKa;W- zV#3Y1K!x=K80KeBt>H4A+0B94hWdkD!$Tp6J$&HPW3tW@oXd^Qn}^HLes(mh<~dq-$GuQss$62?w@la`cT zWMSyE^*?d@55Uezwl8-W7gqf^>l{y2*7@5t0}wRz$Qr; z5B9n~qrgfm%-rStwwK#~w{SBqP+|Q5M(zJyp{_4>4Uvy&OP~jXtqoT8n^#-LLX0gyooRKho#&}7Ku|H zD}E${=1C;BzXX-I)qKT!k%V!6*gIL#S6AdVc5@f(Zzb5iE&+YD|H7a;uv@MGXrwPz zBDvkAmn+C@i^L9N{T@OtkVw>*sS@{_k8oGNBa8`KMoqGPBpsIJAM7?=>*_OiIk^mr zlrXBl#(y+@r9dNnsS?S(Z@+lQPi;Eg(<#wE?6K$@EgJi&eLs-u zr=!DF&kLfd{a;O!HfF7U@Hm*u`tU8Xft<@~7lj3ZTkd5Z&1GE<@7FLf$s_V?R$C_e zXS4S12eFqMhBuql=SlN;Gn@5OCsS_!Y}T89k~h)qU?seU3}OP zkKwbqARVwE9k5MbzL;LP*xsu7#jOUHDseo1cRDM$xfX}x_uWnG{~g0UVWtY}Y+&_k zg*G0HoqwDH3t1Qr#)=p=NW!Rnw;s}@Rl#vO)V}j2lFc~|4%7%t8C39rO>E8xMy@?B zTwj?=9129I`AwmZ$A3-v3M}5jX#Dpb88b`5NMEchjF;rcfHq3N3kL?=W3jjcbHHc9{pXCLe8)=rSdYOp!>`*Fhz&J{I)NmN0JYm%+hB0b^G2 z$wuz{C&M-$6VO+AK(l5#&`4kFYeFBlzoWV+$Rvxz_P632GHISfqP_%`xb+y&w@AWx zGv8N7DzG{}z-SDeHI~eV=IN47^Fu8Pe+!+IY{p2zB!kYSxhQ&SqI|) zW8nKMrr=;Je65R9)^4=)Xi{=7V z&JQEB`k(1`X67y@mtm0-#`WJ4sDF@G3N-TXREgv*`_)?iIoBd_%l_{Fk-lX|h3lKC z5<44x^{)th94ubef?>$QFjy2ZY>Y<;n-zUESGX>NGv^PDLPtkl9VKR@sV>01>cj7j>6 zRa!jIIR9BC^l?ggj+Wm=TO_8GC5%jwNXmay;_3*{H(SEEv%Wc9(N_g0Ows;f?5w*n zZ1WKTeUKBADIlpV$ z+A)~FHt}InoZsa#EKwsm{tnl-$N>;*RFroJ`4I_V8ACqp8kTNnSsGr^DOcHX3Gy$Y#bDb_csqkl5R6Ic`ygY z0STsgj^h%w{>Ad`IN(EkPWU+Bfs0`rVEQ`PXLn^Tkbq#u0T=!aX6bIq=#Bxnk3J-p z{q2E$0@{S{ak2HWkMNng2yar{$hA*-+UDWQ*-G|$uWtCp#*K3vkA!N?ei#QbB=x0=2s ze}KNp3aq7v^-r&}EcL?t8*s}F*{*%HS7`Dr_=&#S+x3tVHOvvgzF<^utJmAf=+mVV*(U#(AoKIp%=>S*f3 z^k27`XNmqRi60c+f2ABnMKS%?i3!ku^)vm~9Uqa!Q{58T{_ALbPI&*d?R>BQdhTo} zGWTE04}e+DH)VADFCK$^NykgzkchUOXhg6W7--T(g9&Y{tn7Q$7VJ!}k3W&{x~2=_>#l>5G*}*7v2iw6gfkdLdOqIC*7tmL|ENILH z8m#FYS0BQ185SvFQnSpJOfHJR}e5s>(IIjQTQ^MAN_&JAP|7k-eF#To$?BJzy zdnR$=BHY5+ezReRF+_O3xqJ%rn~d!vR9r3_os71O78j(79_C#(`@ShVFBY{{|TMr;qR!M&URrK>~k3wDPdgyUj*vktp5Ow z{5w@5x%XV2r-Y2T7Ky#*?*Ed$W&6VQ%~Xk2 zpKJQ6_PP4@w`&&70iqKnVf?biCnqZU z(k%>M=34VE=_`~l(wC~zn)bT-DjyUkW#p9_vSE^|50Pn%JoIC@zD=KL`sM-ANt7@S z_EE-!F{Gjs33P3alx^)rXBemtm0-M*i9O zsiv{rV@t&(P_Rfs4r=N0*kjW>i^b~ zF|#C$^u?;Qx+Yg&u|#tJ7pa!o?iKnN`H8lrE834NVPuL#qP`9)arL*L zZ?=T-{Ph`4N@rA+<{A^{ue&j9^R9rt%8xZ`rUQ-pzlA~{*WYSwsxQeRvHn)9A(Q4w zBnl@_iO~?}sg2O~%ZUFwz&R z((1l)^%YAb_wU=pD^+%Fy5uwEddB0fhFJfSuo;FO#^J8?7b# z?1e99!RKGb!1pIqN;*)u|0@+@c*_0ey)Np}(Nt*zXw%UmMx{#>29+)<=Br~t%ng#j zN!ihq!GoAoOTbL*6ejH6Da0V5rcN{0jfT)&64+c_|8h0#IL+07=KAm@GS_W}!0UfJ zKYF%`=xGqI-XYAyb^Z#au^^(zA~3hRf)Tv~BKEzniFo}OAY?0q5th)!PY5yLtsUWJ zTBs7vGlXACga&Rs6*RjC8fxH01Czh;8Nn;6$xL|xLV`-ze>4ylDTFI5VTzwHmI;4+ z5w2n5dd*7r8^S4)z!}s^3OAskImOjr{t5lRaTV#P2vDZ0l!B6ux%Vk)kgi-&}_#UbB(@KHH`Hw{M{C?9{N`5fcB5{6y z_Y0(N*>-DJ);Cinb~gIzZx#Buh17WKkDf6@7KZ&x5yJ*a80l+$H=xhCVldUBS>LIJ z?FCLQbFoKZuO76+4PZSO2DeA{f~#}@@Da>>^D`@u!`R)7^mibAc?avQ8tao?&-t+FI>#cW>gL$<4=cyi|y<)O|?^;Kek^Y^P zNR~1FecNZozf(<#!~A=kH|6V9$=qbup&6>xpf9CoBgRo#Od-->9SMr^a6X_v?$^(wwl5!8H~O9Or*`?o#|O+Tw7_MG50l5GT*a@1Vj~e+sbK z62^&IQHuhrN^-Sf&en}#o3~hBaKCR_S*uA)2O7n%)&)WzFFCxT&95d|BrZ9us3LRb zNhBts2`X{x7SOjy!gzc+8q-D_2o+> z=bIaF_eI$HV#Q$Bq&R;S!N|3n!}XP^#GycRny(Z3crt0}c%^@fw=kScTKW_jGfToa z{;RaQ&91&;iDZ}g{3FGrHHof1Y!Y#d-1%|1zLl>BEb4Ua57&5%KJy>=gyxZq#U6*l z+UwM2DW8tg3&~@SYEFGO>d}?@C)@G3H%A9Ter~*vl_Q6NsY9-eSSL1H1 z-AKjN)}G?lJFY7ao3ijn1z2&i&y*1iT>C+|x-u0w6o5|i+@QJ#H!84r3qy5FA0<;}Nf^gJl~(tG zjeio!{ny26{7Z24VgD7!$ekO*^{uSY44MN(CrZM&|N48sqA%UTu>V@Kob(k+80kw@ zX-ykleU<+aCgu3o&U>ZC+ke>rvniCWVkk^w6-^cCsD$<|Jtq{23%la z*ne%WBz@%)M*8wqTFC0Fog?&dgXmtTn6%|2S0B2}3`WLCB!>DuF9-BF=bZr8xc^#t z5c;oijFtV@!Osv2A+H_FA(Jc-xSy1e|`KC8RxM5*R!8_{a52$ zxBvR}5wgN__*nX?JfAOC#7~t|4d3=6lbar^TOBypr?W*(b7#BLd%4K-V3EU<3)vb5+6-y*fsr=*3PkL6Z>F4UhDU~=z?)-1KzLl#q zi{=2)iIOm`!c;APPq#4Cx8@BWFPXLu|*tC=w@+Yj-fA7ioEa-{Fw?8b-hnZsU1JcOzZl}454h$9 zGKp-zC&rLTO#97!4=TTtDQVbDVT`ui@9)rZM%07c6^i7s94i=wk`wvPj41>jiC8TfF zJHnWxuUMtU1C9H?D}_EbY5N08{~m3TXwni!rbr~}>!1=>zXSSaE3jv^mw~HJaE*zu zZVcP}c0ga{a{+5QM|G#BVWLI;&k!vRTtOl+TCiR3q9hG&d4pjCz$nlVS5}ZQr+F}* zcpc0vf2{bk83+$Z0x$9o>xyn-+NUMpBJTty{PUKT!-UPxk{UnZAwx)#1de#8>~SOB zZ@tN29Pyg&Ck@L3gsWA;d5=M&vgLBH5+o`d>K?wz4RyKr6n~-;$Im%zr2FS%FVc1Y z%8hgxT)2O0t$bb*segv#%Q%ibVQhOW>yrK;!m*nb61a?V6L6_!e!E7~e`5nIe(Y{#D}YwWj?` z7`MY;z4xEJWT-0EH6}L6ZVcP}WPt|GTi*nIixk+#UzA{4$A<&*VstXY_Pr6%SGyvh&p9cYnuLjO#Xmx9=*CwAEZEeRaoCVl6|w=R}|1NIOT-g?~{j5RD&3D-UX@$HxCpuvl8Zxp!ktq7muk8f%G zoWsVq-XD1JZR!p;zFm1Q8TbURa2(&7pCtJ*zU6hK$~5t9(d*zunWmUw@hzKDTmR(R ztv%dEf*$+pLc%_`#@NIc--?*)4>^4dt#O*5aeRAHdp|4M(lEZ2Ff9dXa+b1#3R}I# zw0{ZX{juve+xFqDzgBg3rQ!bAZVcP}nyqd(zEwU!CiP282O78kON2gd|HtpMNH63h zStPapd$|2eB(;B)xb-#D{w0j#TPJV-ga@nZ=IX=vmdvnyuLkthKCbC202=9wl}Of? zp}oJIZIP&NeHrOnAd#pqQzhadzJ@k9JDQ|0oY^-Xrj1LFyByFo+u~qKIhhmi$4>Zny@`XNb zKYwZO-$q*`x^xL6QzVk|AC)|WxwA_-$-)@m;s)^&3Ap)r#gw(q5Y zzS?D)z5<|e{8NzUYRGIqa{V2oZ-GQo{0kDD*VSy3L#&ObFiLi+qMsp=bdemYfxIPq$vlo`tMcSo}006KKOxr9VjRa-l9=$o%% zP6v#$;{qXtQ&;QHai zWRSxK*Q$5C;CfcJ8(e?Bo#a1*kHwh7!Sz~xs0gmku69(XCbD*|2JhW+zGy1!y*nra z^*5EHj`Ml%^^6_tVMp%mjvLV1IIRzn9Diu7TIKq0zJzjo?W@fXSHRYLF@F}p(6ukx zs&?nURpL+}I?cI4A;;IW_m%h>Z($f;m)=H(&5|(czhhNe-HWciVu@s2_t=}Dy``SS6}6M z!lWEuduy|<4X}-#kQiUn7s}GSg7#Smx7+?215YXqG7XjBGsWI_&Wg`Toag3Gm^)s55 zgj?FNJdUpiZzg%wE3GYUd@W|0Kfa~|gZuv+(kBPD#dPEVfF5O09A6hPC|!b3R2LQV z)lQIdgCuZ#ooAOaQ!N4G>nTjw{hW}3gqkH}HouVN_dtB@ZU|m{?TZgL@%2%Bia)+y z#m_lxd`*ATi?406-1vImO=RcsUg0>tcIAi4_DdnKO0XgJT)2TwOz*_>51uuq@r`enRs>uMpkoZQ^&A1^CG*$3?<08eC&`7<_vcsK zNLurdCiB+>6}I(RfGv_RK1}PoCv5xl^4GfdZezj2w2~RN?-^U`ZvI+(zb35!Xq^8@ zBzxC#ZGT|4MWUmvFD88pB$DzUmAL;I&{sW07?a=s-0-BLuL*YbQ?R4=KN%J&VLbj@ ztm!KS8tF@wNRB_ZYOgHLwMdLVyBCnYWmUqYsBdPF=zR8%W8+W4=g?^1Kbw?dSm2)W z_qR|fc-EcF;uEK?V^*Tavhk<&KGNrJwsqUx_>(U|+-0?i#zq04UKWJ?R1|~ip0=Vm zzk5K%TnrfJ&&fgx6JD|}R@Jtnn&OYAym$kdZAO5Qq!Nz56XMT9h5+%0x4-no^xMRr zUicJ${P}Sa8RW3>r|wlR{w%o&B7pf=taBU}Zo>*IpX1Mi{7@Nx+Wt*-YU0oEr@?!F z$r9en@n@H|75b!*7k{?F4HSRwzn)B!fplN|>Be|}lK1WkfEG(AhlEd;D@~>bUKF4v zgCQY~X*-{?S~QE5$2x$U!Zk}xWJ z*QHwi+7RLDLsw2??=94*nnz|lAk+<~tM8Ap57d&-!-kJ!FW@-&6Tf(zBjDN!EMrY1tSfqq;{J%%jR|+(a{}Rdl+gsZH!MPTR{oC&O zq;J{d!lo4eRbpqOuRc@gVITV*eJw$hD7!>nl@8z2V}PC~(HtjIw5<)#|4VI@zoHz=u!cv&bv}7_z_L!{L9ZX5{>ibhzqxe+ zNtPY?DX*bq2ncU8j63q`xumSXgK_^ljA8z6y!R~-lpZkz2ui#;@+=JQCMcbNPx1GD zKix%zK5Xx|ag`UQ;^FnQbvUEii3|6^a$^bTf4u$aOYy1U`_revCjD9yjo_OB!wz^M zYrvyWAG^m3SKy-0s`OmJzGf8zPoaJZ_jNA(51HspQ;M+t>Bq4+e>eE%a=^`(IQG2z zw0+et{O#h*UGRP{^BO7x^?zre{-H)E8d^I^<4x5kzO9HGZE3hay?PGUe*iX2g?&{C zut(B`C3%PQ?OvzrjWD+SV7NcMcAQYhA-~H5iYZ%KU3D1pXD~1(0Nitjrf$hHP&Zk^IR0M#paLtk zFpR$kW|O*Aj|fvz{4G{#@j#>gr7=zDRa&^Z5*NFIQ!qS5Elqbq~7wiY1a?%u23OkTnNfedaDFj*&Yb2-mmr7R{nLKy;!cjP;$qMuDYU80uRy zlk^oz80kw@X-yBf`YKNsCgnWhpcc{^es}d@9+Ae#LrcQ-ZMr$2&l$eY%j?SOU{a$W zV==AcPWPjws1%Zb@0m4#UZwy1N|Lw8W7+wce5UymyLezw`>P#I`Vhn+``>$A&`lPE zo!)E)#Y+%2y5DXhQGU!<^C5qnY6y@&vUBuZVIFSs$FD1lY5e))i~O9!=8t!+AX8_+ z{Anp{LS2VF)~8pH74F8z`trwId}?_9*ylGdfBbE)mp?ic;A$&Q3)cH7_baZp6SnJ% z{Ba_e;s{fUu>A3p8v`{Dm3f1~4U;&|AJ2YA!Ch@}ls`6JPO2;J5BIa_D(x6U+mI^6 zaXb39Mxp)P;)=s|G@D`Z0oZTFnzYC62iQ~zV^=;?%di$(80L>{8TQ8FaAkL?uu~1} zrxc-#^T+qK?ErBWhWXN>M>Z=_o^l?*oty)30 zz(#v&=hzfxFfv9WF%<5(UemW^5$KyNVVpn4(03mE$y}+0Vg7jFQqs4oTo{w|6|1y( zpiz8p93k{^{#dw0(HCuzm_L>~v$;=6eJB zDzDS5nGQ74*P1N!^`!i9

    FUGRY#%UCxT>WYRo|M12V=aqGRHZ;^y?{p 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 s5ckgmD=p|a2f|L7$e`XiPKuWco2O|K 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

    +>;y3z>075<#s=dBK_C$G}0 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

    iht>H_aXe=Go5y1>!FSf` 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
    GRoU9r;HttY%^3jTVLOSs&+=T1KS!u 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

    >VOmf+vAI65(#i^McBH-VDf+myOpH7%@P1bfrr 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
  • ojQDGX>s_W>&y&b;MT+daArB5I>Tuh;2Os zwvUoN-N4%+C_Q-4SmUz934kf5FG@&6I%l$tC0|5&S=F;#CQc%xuHCC4qLezoIZFKW zXs&M2&88h@naax4E$-{~Y3Yv?9ZzqHb_<6x zkY)T?@JGOudt96>os~&Jc9&!I5YRZaZt0=8v|Y|FTN~noWuCu`cp~nBV%8z+-Td%m zP`<&tG0EJJh~pD+QW6}W#3v+Gp{3165{6j`p$*9pSWbAx;57ud<&GcN)nn^i+hfyo z79M|1zUNfABNb$#h%Xd~gWtotu^HHro3q_yeiWBbg>MmsOdkJP62QRC4co=7thia;uMBKEKgvI)unh(NRFg zy4^M1+B~gBXZj5^RS$A|ezS-)%J1&2XFba3c#f!62XB_6N(~Wg{y| zqK{ErT(>r?g>KJX>Y8m-P3NanO^3^a<@gFw(@x-4P}&TZQk&!40BT>v;>e1wcDtO^ z?o9tcI=AHuphQQ?x$$cmY7a-JOWn|PJ0#t@ z>9#K2HmBQu-yL_RACO9Jf8RRya~r=W4)}Gk&$5!ZHW_+D;vQduY0DSKInF#ui~E|r^e1{K=_MJfoo8^E zPH%J`1Wki?2&bfH`^$nDh=W+NwYZZ$YVJxo#|FTs-z1&QrGixn%W&Tv+l=lf*g!jI%nM>W5 zB$@32Ze}{kr6(VsUcs3Tp8qO~D7*l>!9P(5i*&Rh9F$R6u9w|QH2hI^(%Xa;fsGFa zfblhXH{0;e^ls=M9nLdVIQOKwHDhkibgvA~JyL2{+tTcTlmc&NCv403W`5V1#WE({ z|7p5y8c=ZlEE^w^x%GA%td~2a+xQ{ru9x~DS-oBc>9#rj&PZn^NxLR(p&&b?U zGU}c0ljPC;Dwu;i0leV$Lf^Bvih^Ft7-(eD<2O<};Ft$RO+=)cC_yz5$6PX!BJ};7 zA7mKkUizpjf$*S++5F-1Ww_H;$%D5FmFhh>;D2$LI{XMAtTyKX{oR!vZWMagNj$5n zpBZRYN`i8-+4N7q>zQ0rOV|t@Df&egz_;32jWZ)^bu>dXmI{NrZux=KcLS(v7|eCe zqLxyIZp5bry}zwmL-gZdymdsT#4oTJItXfk0-{sqK4GD1@`zuHrB%+3kS}h^W_F$DLaSw}(UgdZ`E$11Tp_Ga^?}$Ju7K}%_&X{BK>VCf1h9|I?h!2TUkl?>#q*bQ%F`JuCvDCoc2c6cixA+)5)EQ zi6iDTJ5vkIbuFT~N1x1IVY6weZw^{|aEq8YW|e5pwKO}gtHSGE@UF;jHR4rI$Zp?i z@kgBjvhu2D{^A9?u+a;i_3E{0H{VM0lGHCs^^(156pLI-cknjkQ3qk~#LK_p=J1g~EUpI#>pcE>QL4R;6yjWDac7AP!oeEMBp*^_nk7 z^Gc{;p2;_M_5CZUK|WT`#ZSP&0tu7X3Ejs5=8rWl(#v2ihQYM-PLB9UEagtXUmVA+ zEXn#gYG4h4J;e-7Z)QK|704RQ_Xu=%1206EBr+%pp-b{6W1gJvV~Y= z@9Gv^ZSSf&<88YuyotC8mg@OpbmgvE)rR!0mN4p}vb20HW@vg}`&C-#=V=2CTUv6a z_DSz#1Y46E!}r>p6JXT~a#;;h$6oM3(i3sx<82RKrd+i!ub?!bGr;+fxahoFmHJF& z5*&4vDNSu?2HPNP^Qjedj!`!Crw=}hP>o2DL}Tc%w)9T6h>OHWcKR-pU&_v%-^*_i z22&54n3*t_+lq6=<_LvSwRB7W8qutG@>-*|q*b=rz?^EWX^UD#+jrD{yZ9@P<;@Go=pq_DSUz(GExFR(CU7n|6;r~IHb*88pe?Klzc-G zb~ooL^#L7WbpB--y(-0D?dbn+F6d8W{m6WEI38~bS!z`w30Fb!X=Ph|BVi7))`X9^ z-a!Un$O+6_!ZM#|^%>p6T8h`cK>Qk=7?w`0zJUzXpQuKgdP3nl!ju?o6S|vt0LKCP zcd{gu^9!|~TW1~=6#+b0wdh&u6r+bZ&Vk%9J{dI*xn!%9#9lFs(%IGxgiV}`Alt^v zN84CM46GtGu!@N9v5Nex1$0nru08A#cbDDjd#RoyI#ln4ot?j}&vj?tKdruH7Ej%+ z&1=P{pZ0J_4;RuN{;q(~?v2f(kx2a?5DGc5XS`feytxti<|ae=!hb0Bys{k^J*=X~ zlz3GAPx6*$g&CXK#q4FCQHa9A-&n+3Dsu2n((;2U_eCS0FvUw<^&2D3lJQw8y29XJ zbl)Iq<|XxQdS( zJ33zQ7#-hQ;Ci^qH{s?}|Y6C$td|4uj;g@vk6_<6gqpkkh8*F3stLU#;Q5T;7->kMUKOGjuJb^x%KqVKyZ3v~)C9|wI#tyGwvxt_ zGQHJcshe&N%_U*<8?St^Hy^0$sIIoV7cL;jxki#i(IV>gD34F9qyAaE+S5>Ktr~y{ zPg=b(d0rWsZa?NLi#tH|^jSBE-mm;@xe^~%_RdtK=0!63*q#8Zf)fDsv|(mWM4W&v=&c&B(xh{H zr0d(~RuAayOx>S__jZvrxscUhkh2C`zLC%1&iY1K&sT87p+B${rfx*jaq+7IB9nbbVs(OvuxGBaj~l!K_}6v%mha90xf# zy9Hej1kOiE<1mwtDQPSxzNXn~%;Ah^p!VLNN|aAsngo?1 z*{O^aQl}d)OzJL4Z2gN6CmW8mI)Wl=W$rwo&Lts^A7Dpd~n0nsY^(nZuR zFs%TJW{3Hp4DA8ffLx_*d*sJ}EwDAnx|e@iQ&-&vZ-0i`=(aRkQ$xN!9}W)2AVDUk zu+???)?lrLt!~h#WuDTBGquNPwZrvd*PgpPNh%c%qENOYZPwFmyN7!{3z*6OQ16r5 zyPh54_3|H-`*?c~bhc#Svex?iSX}^9jUUz&avj}ir}Tdq;~!%VULE(m2FG9qig?&t zOJ&0Iq$}W@@o}#Wluhax?0yQUmiu`>aAgC|SzFT@0;!>XotfaVteaJX{nH1F<%7fH z2bba?2u{{u)GTVy*O<@D`LKp^Y@`h0k*TTn3m9u{GU%Pi9em4(X?ANQ6SXF;Hs}TU z#{}NeaAoFnA?Ha@`is&#*3qL<{YjP>OMUEJncpfvS2gdb+YJ;f$Nafc6 zsZ5mVo%jz5aQ7|uDDQq!G7BEzzDoMSx@sFkSVa!0katM=YauU_wA%jOiNZhH8wgSr zq*I8}-%Y+D)jmN-*yQd3xW_W`w#b8Od)dfg4`j{tLibcplDWy04^2D5bUg)xWe8I> zd4C^jaOw4Am5M^O%oiV|>O^^dH?F}4z^JQuCuUjFlu#dHvzIUsaNa>WZB6Zyu>rBQN2S|1-Rkdc zrvZ$g+Q6`J_Zq*azn9zQw=$ggtA2F#4igwYXNb|+9kz3>DZ8?7{g|!ec13BfVS&mzQ>#(7lHB%eedB5;V3)M-;noht??vG|0GkPdBZx2%Lq)DYa(}kr zx$Hoh-2G?h5k2;d_u?EiYw#MRZ|7Cs zZmqn5RJ$Kr7S$iZ(bDZvcyp9z4X#-dPRnK0!ST)@55CAn?~3UCjC>Uf$0!o#@ItAR z;XW#dmXaXSNWoSEE(3j<} z^ErO{t5}}W`IBj~FEN%aS^xd4{4{H?M}f-pdN~wT&4ep2qvm-xo*+Hw$w7^q~sqBHHL3T_1}ZI*Fh{gNCVwZjbz05 zLBBYOqD&+ra_9Rc6LI6iWyrBwC>CVgBkEC#iw9NJlphl{HPz>dx|-Ts1)Neey%iT@ z?!$Wmbx`%BkWSx+z~-NY_oRsbEaE3ca)K~>H6kg;0v#@dq!GyG(EL++%an)r$oIa1 zF^&AQFKKgaek)i4P|Pq^e3lPU6T8{!ddBH-@(}Bm-N#O46a^B=X;+)hG`3S>J=P_$ zIy$4m7j+$IdkQz=M)|pNeo*b#;nGz-2?i+D3zn@Oc-nlGC;vtV)k%9Z5MSm$fR}%= zX@^)lTMTOm#iJfu$R1i2nnMwp#ecAOA>kL&eTaOL5>Q(xcKQ?(@tCrBuuVdrC5SvX zdwft0wDRZt`UWA!InGr`D{P@u$Sf0MjuY9@+#^Z3zl10r11Vjl3Sz3YMs^`PmLoO# z==AHP(pp<;Z@zyYen!zE_arSk{Xv~LiZns=)r{gu3%r!+FV=}PWImr?yd%Ks^pVrW z!IfY15X)KP9p}efgF}7v{gpo5EH1=m5n1~iiU^Y=DSuY^jVpVJ8`IycA$((hG+1xy z90+65aj;*y_0w(rq~4t2U&1*PpMIu0-gv*IUpyS#r!MX2?^FX@ZMob~p7ko>;LlHcG$_cakat`GMu);_SX2 zF6;9&Z$*AynBM7F4z`%oFdzVk7kg29nj_Z8ileacxL(}nm(uw&sFgB9sFnmEGSpd* z2^EG!>`=BS7{n8z+oGi?Rpyf-3Y>~A9kb=U+s3{~3)%TVQ*5P&g;tzhBYC<{Z( z(Cm=X&-|Yc8H)QL`uPCtzIdn^;tlO}vrxB)zC(r$t#Ou{!W-JWsk3kBIOG4x_>Y<) z&ue*P^pF|wjFyjc8|F{iJfu-FQGqHkfxl|?s`i0OxSM$5`iFNUBmMat$c$F^6wc+&uQXjJ-LK)Ns@sAB!eFQj$qQ07@M~Pfa+n%hp%U&%nze4X#pJ4ZhQaAG@FeKG z_8Iz=x?`<2tw_iD4{a;5af#jIu^51^z?g%}md{H^Klg>>M zBUvaF{Q@amq?v<8Boj44??XR>h2IUC6(PROu%BupCTdZ~NmyhlsO-%}g(sq8`e;7& zU?i}-TkvBsH?vfl$tL{Lb$`UTvTc!w-=(gO=Y)PcC2y(L;1X>J?ufRfJmNC3z`k*J zV7%6Q*zv>5T5jj>igpJUGt>iYjUiuHmW27Xrm3&ly+Q;Ri~J?%hAXWRdArQtO4e_M zVeRGc<_g2wE2?wnEwNUYoQWUmRT2?eTqSooN1h~Rw$8ZRp9#?zp`Nx?GCoHJt7Q8* zGBdMgMzTuQoWtB+CmQLi{<7L9dV%rCk{EcI(K`ECq&|t@6L0jJjQ?w!2p?8a-Z&iC z4GrjtNZmyD#us9~OBQ=LPh9I8!_VA~$Bd985x(~Bv3`}bLGy5o$L)zY_+ul z5Aou!$<zpNDMVkb)9FlHC*D?_dQAKjiqFJ<$(`eI zz|hR&Vu!4Myb7ojB40bXl~GD}?Zh9Sm73y?2#5owBZiAT7kQ9DGNfWgnm8{~*k34Ka!d4+O`N1g(2_qXFhVC7hYm*m@n^8iR_iMoX5a zJ!mUYt`c4yKTAv^lz3C^#5o!N*ttR;YiADo)|ToSj)3SBF2STaXXcPorTL}Y#(6nK zlA~L9i!!TVkHRzj4L!(g3#A;QTe&+FDi{g?23v7Ee}~F6_A765d82E3nO!rf$5!ub zNF%r}O`KNCpwA4oT;%ybV00fyWb*IWNO?bZb~^JBwsCN0tu%idc?F9-B0&cRKk&vm^pHBN0CwPpA8*1M@kT=6i+vpRlC zsn4aG%^p!M8v+c}MXskh;7hXbq6}ZQ;VT!%%Q0%MTpzg`B5FQ7Cks#E=F63W9o5wQ zj^;P2{5Fng*DZbR>We*bkq0#BVh=7uMs2h{`j2|9^TUTM3-+CncTY4PHDxFsIWpF- z_kx=|aU;J)k-Eu?u8rN>V*mFdd{Vf3)GQWVL#`Hj+`~55Q+zma2LrdsD+8T%-rvXT zd|EaBQ4K?G=E{C=I4(6UN|zC9=w`RL;c8d>)&}aef3q9x0Vcg-do7D3X4REa&lJZK z&0e8&BdW~7>JYhD3L1{y1*UOqsfq5?gd=pvtcFGcYRD=+!Ik>JJ_12=0P;SvYy(po;t(oUfiFffpagkR= zU}GpVua(XhP^*n6BD&Dz06i{Z3i~!nl#akAps3@N4o^3^rDm|zEHZF7IL?otfe}qM z5R%vDAewgNA{K(RGoFq866rK6-i@owwS4X)oS6qYR~49+uxh$6f4BiUs&yOsVxk0u zF^FGs1f5Y#{PvGC{CKQ0^I&In<;QhYP2|TmK2rU0z2kuNvJsQmCWqQHY+pG;mfyGLWGb@ zV#j#(Ns{YKwG_x$1q3X;qL;BDvl4^RZ$^vEQ}v-kbu#Cze*(~hEcp$wN)6RR6!bdY zXf?+6JD+ti0%&40Ane7Qio`!?%O`DJGF$cC{sEnnm`NT-FTJ3^?klhmq|YlT1JD9; z$%`@x_!JWFg&HjHGk zzcvQq!8l{kn%qIAM;>i{8V4CxKSnkYJct4z$+NU<2{qfVEXdoxi{idgd|*buWAIKj z{3F-f_e3bJWd{{d|56|vM-ofosc;NIgu07`Kh}tCFz=@z`kJs0zn2bEDAMF&jz)8W zDUZiW9G9IL%Ve`t&17&OI!d->P^J)z89B>Fm{;S?5Z772gMpph>tCLF?DAAXmq=9> zD5G!>)ZlN0jF3@aymHc{b5F5`vY4L-bFx!@vYBLOUL9?R-d=6PalugM1CigsYzO$q ztRtUIO_W=s4&G`LlzqUBrz0)RxZhEACGYhw!T9}Hg6jxUjFiLs3Nc;J2(zY`%?hnU zo8+O1k#T@nI;l|yIy-fc@uer)7y2&l2Ch~L&yU2_@Xf^H+F0KZXD)~=O2a0mXx}*E zKt~^FVRm+nCzz!&RXb?8_(j!}+uUcpv!--(^{vvx^D-P2zD%<$Bp z8*qDet06|UJI?=++4_BWve+HLDusrqimae_TFl+Rg&-6T*pmIO}Yz)@}1MSr>PJ*I_y>MW|SV$5#9^@8Y++EkjoQNd^4~F@3)Y zdb~GOxDmKiDjhb6jk(<4aw!kLKt=p~oQ&1^dN(h~zcHv=VoVF0n z>`3l%xwx`#Ks8<=I-Kdv+}y7ucQ@66Bg}_F`XucxroZ43HAPaHsg<6V^`}G{-1*l= zp8^mm4Dz{-z8ipG96{U-+@FvtM`_7~V%)AQi-=t!ueF()TzvA0ldO_FefTx9bhVtg zJ%dx$J8PgmgOc-8w{)tPlD)0~o%DNQN8)wfx9UEVB+jH94i%TRjI5kh`)gLS;Y5lj zFd+EYt7yeN1sdOXro)uzl~8(IiUw8JKWtK4)yT3c*n!YZeVP)dwp1UKy01MQ^ zp4L}d@Q(SjN~QHF+Ju=4v^X=Le?0D&S}VDlk+yg5uWE2s7B2{)FLT&mdHN3wlw8|lvKgZgEEJozXkKtHqkYeCK@}5jyp?MhqA}}9?nBp zfHoa0#2I80547&p(`CjIoYojX4cin+Qe%D zmmPobQ!mlU{D0A+sSN#mt`V=fn*HbfYCo5(*a;DU_8x6ozh#<*od&83D;5c#y83ZH z{Uk0G{aYUNxg}#(Lh1)H73~dl^+nt3^V79H>u%V1T*Rva9PAzPQ5gA6V;rLVj|vSH~1@ zAmKVP4Mbpm>FR~9U!S_uwGw)1Xg@}uuyO!g3aHjybKg_12jYr?zN!%3ol@()?Bara zCs03&_rmbD{(jqmd2z01Ljd#e`pW%bBLTDp8;AY4QIAv0xk1aum~a$V$0WigwGu|L z2(s-=21;&Cg%GN(QE{yS8Wvd-@KVVOkQ4mPO(k8kH=ox44~**>#0dE6Aa1cHN|{%- zopQUKNQI17vook5OKlt$;2y6*kE}U~c!Bi@)Ko;pQ0HG)CwJ<5N+54Ha8>EERf2Gi;>{UMXSs%4^A#P*=%?=b))W`3)ejNH#zNH`e8 zq#cSBnjy}SjWR?fejA$AVOURvk>7{vdAxS!cVY0yQ2fQObd7&gI)2m-o`A18^!h~h zx#>u!MuMCCP2acvl>$Hks$V>q%4|qYkkR$N?T9s@xIOIa2=jT$bW-tjYhJ@~S>{pf zr}m5WcM_L6__zTeVXlODKo1J|@Vkha!B{vk{&TDS(B@H$tb!Q_Y!Pjk>!!UqS{_rM zsoMzrSy-von3Y9l};ssl3cYO;dI_pQrO~*_Z8ZTZWhw zdcGH?J)j3+(Pd3*m*Tawc{45kk#fIEi7!*`zf$7kzb zKBy9UDJWn{>Q87Z>#bO~_&-bOOnq|FGgMVwStxcpky~6Y&eoOp-Il?NGrf*}O(p%P zC)Q1fCyr&ml^%{{7d^bvsxx8&D>e?{%=Tuxa&^@@-dSUpJUBYVZ`0mw=@5?QZz<=w z6V!-;Z&nI23tw}y69EJVXf z+fnhjGXILg>E@)ASwxnpS#HefMl3bxf~bgJL~;=*L8~Hu5xLMu`+{;)Pk1>pQBC?R z8mQXj4;yQm!p#WAaaX+yiYn7}JnE|}mn2?SMh?@hVtT-QkB>4;jin}c3l+!E+Y4Q# zOwA3@|B#M}J0Dga)0CkMcL1fJXtj7C*@}wUF>pYx3tADo5U;N;z}r^V;isy97ET=G zOfMwe;!i}Spjelo2g8Zo46>f>4Xg7xc0pFWX7H*^+S$&_nS4io7lBa7bOTKs6pkWm zB^I}2N@ep&#uQ-Xd?ph<58$o!q)07_att6G?;0j+N~cdStkN4ZHP#Xyk^jCPmezHH zbCD@f2WVMVEzhdkBee!fQ=F_pF$^D!{D-3W!AP&8?0VEM92aG4riztr{%N;ARQxYx z-66B&lT;6bbtQ=vkCf{n5Rqg@Vl7tMmU;qc10fb8V%g#;16wp=1jY)ZDR+(l`ecg| z46pUeajm9$OH~Rsm0I&HgDNvMAqf$)Dv5X5WZI^ZZRc*?DAaueo;hIT2>!|^@@`x9 zq@4)K@t-@dW+?#lbULtOEhD~;`z6qdEIG)7OfF+{qy8TADe0soadK1@cF$(BUXU;N z*<~4hE=i=3I8FBd`1ve|Chbp%y2a%tcelwG`aNqmCV}Fu$wS|nIP=85Krsn;`1ArC z7fhFm$oEEIQ{~c$$jWTXT5b89s-Kld)aU9dUiVkU3fH0n$hX~bGfeK&pA(Ftk;s4| zuQ(B5mFI=nvwt96Arg%~jc_m{iEyithrD`E-_KR8;q2D0Dt8taZl~`***h|JZj-LHe-;a1Yyq{Fe zW4&Tp6ZN}L&?zRI}cRGXm(sv(alo?StrvNi; z+CR0xjkDa60aQYDOu@RBE9b;Mx$i<*cX0j)?yS=1w-U;BoJC5n64l$q>vA1&Z1VZ~ z@7Jo$O{mRcatGVIGyMn7@)GIIl)=K%$GWwqAZ|%ps*i-mN`1ZzJ~>xavSjD}y5hK- zv_B5#`I>EuGkq#k*DzsI$xIcAhro)pZ^YN(&bksXdtG|GXg(>LkBjQ5VvrWk<&jZ# zR$NyS=afq4mjIUO+CLTb%SG`_{@ZeD1>E=JU9ZEn7~JvlXL64!2t=JmuS~Uf&H8Lt zLn20E29R5Z_#NTp%_cKbUx z3(Gd)u&7JVmCQ>eaYmskTwg6wat2sDR^#oZ@by4%OpCYD-H-eFwiPEO$jo8Rv-UBbE66_=#I-d{NcX04-c}Sr0_ZPGA)zRi zmv?K#J2ibm&#WxFH9)rV*H}bIi{1CL`t}3ti46zQ`Rk<$c>Db&l4E6 zQ*!R|%9uHNUJP=r8+*^+KfPn2zPZk;k1i2Dkcb8(#oW=Ci0D!=)ma^uh+T=3e6i5? zzYfw*s=^uy2$19{Grx1adoij~*Gh4$ce(P`T8lS*Vd!Q;knCyHTk)YM_D?_W%QA+o zmp33WDidT$l3YAivIKFgoBISGFG)qFP-%qL?WMfL2RWL>D_y|r#bjw6-(uZS*NNKX z4#g!RbE%+E=9GADC*>$t){HZardhTEDP1qU zN5FyNf8>EE6rC#z@ek|5N`K|C2>&KY6#Lw3K|ES|LhL@s1|jauvk2DY>`VbCoo9)} zCEV9GWaJ=WC+MT`-JVRi&gRD-$_d6Yq0*#DvJJQ=8(Ur{ABSv|`+rJ$_PxXdbPQ=4 z3S2M+arTgr^T4>!P(Vp?8!X%SLC0npW z&t1o0z*xhx_#U;_e1eCaYb9%6knzjVd_l|E;_xJo->52|h{!q?N$()#M71<&`XlAIobL-fKbL*U^ zvTS$7CAT6%>AW@nph+Cqjbs+h;om`B{r#xiXa)^T4r zuPRgTyG*@&|7Ci)Ogy*joSBPTO+)IHvIbJyd4Fyb2T8693@}Vme|nVA>Q>L-$D@Vg9aIQuaav|0#lhiM^bs1iV`! zv%wASc2hxP->C_Ti|^Yrx9jot%$A(%2*(+S%ufj#onf_3TrVu7XC!CaZ>{LQLmUE& zeOcFtx?=4f-IIGb7m+qA=_1%7Eq-{6o`GqTs-TCnas#(I70^$&BHb3zHh%^;H-OWf z;4HLsV1oSUWkyT z35jgAa=!!d5{^ps>WSqkdWS(eXbyj&Dnj^jG&*>crkd}nBgGMVz7J6lpfB2m<3nL% zHA_T@=S;s475);XsY9zSg8^N*+lEuAU<}CCB}l$PM5BUdgnU+zmPQ3@n}tj@-fkv| z>%&8WL$o%m(JMXg*Iv2NeS-#eHv|?Zaz=WbtT{WKIw$SF!n0Nd-5rT@W24ZAh);!P zSrc0uKFsUkxK>t5@*D|sE@!~rWZRHwMJh4AQ6|<8-2yl^R&300;RZ9wJ0702?o;AV z;t#fUUlr?QbtkC4pAQ(lOgm3nCJfk1M#__7Uo*$!m8W6lzR{dBl=Bh#H^Z43W)+~bwNQg<*{9?doMCPlO1<+hwM+Y z%zsZ1Ywv4=FRANF0LcGN3L`!nx@Q@)*o5+Moc{U!5JYpZ6u)crJbQY+oajQM5y+y) zXKPQ?!LS_bEP+_R<|FNWsEJDvH$tL!foVzvdu*A-Nab-ltR|7%%jCl*agJFv$<|A@ z>D@+hwwJ-jqE0oXbEy!VmTluW*7B1Vf+n|>RFKSh zu78(H71vSzNc5dtaGq<KO2oyTN&<9w=@7$ zABB-d^(%&s5xF~kb(in{lNGoRnd)8;d3sQ2KJrpq{Oo2Qhz#&rOqQ&lp=5M@0g9)l zOzJE@^|lB8qykx8>`BrM4w9#6Nu+oP&jLWTRW3%eJd~AmIG6g0EEJfmE&kLOqfIKE zO&vyPo2H=SSBT$2MNU(!5|1*AlbwcJgl+CTvPACNF~=|k3>|6r_x!|iwyu@QoBN4y zKNfYqcu)8ri_5ihRhVBBq;3u5J+|m;UsBTV1G73Xw+4hCyc+|#`rDtaCrg3)TWDzd zRMBvT&B_kUp5}_sEDu$-IMfWWo)}%UOn+j8kqtc!#{kc9%?@TL&hREwFDV9bd~n0O z{^J=4EC%qTFk|SW%yC%Fhnt5(^LpUE7PyauwcoYqhS!Y0g&LA6zs_yIc7mMbC+@DM zrCxf6s2@>yQZ{bQ2^S#Sc9z4EcPmU0FjU{IO9ePW8n{4X%K?3tP1S+$IkfLDeD%3# zVEn`Cko3i^AVU-0&$B%22@dD=HcVU?yXh(tOi+9}xPsNZ;at!iYPuDmX}Uie8&i8a z(@G$q98&@)XZIS=aA4kLE)&1QE_YM4xU;PxI5k0%;%S#{zkl}VDpZ{LS&N;;7?-h zwbS%TqzHp@p*Ws%lsHE>ayYwhIA^YNW)j9hF^0h7Za{+JM>5<@vN#4XuL8&?*QQHW zWaDBeaD=`-T)!Kfyg_#Q`L)7X5B-8i< z`Y(b1auA(RJI_BS^fzX(e!Qij1^wW1A_oA1hy&GO)LT;OETLe7kcW(_lVu$-aVb|% zWe=)TxWOAX>#QQSJ~lS(>>olBYHUPhhW3xoERFn;<{aTJ#w~@@Gc9HyGKT@?#0v4a zIji7p!5zQZ+LomE*>}6n07qOB*R$fcAupTp24=IZ5DbG}P*znNCkOgvoofkFg+9&f z^~8+YUjGC|*setN%(}NQ23Z|e1aGP<0xqyBxF@LYyeF$WwYLPlTyUxII(%w^{7T^M z-2s@=9nvFZ_gia-Ia~T?N%AeGt`&JE;!a*LJDhW5qDt7JPisYV2StVji%i2>(Q}9J z){3?K!COd;c$T7l%X8v=8|OS~&wP$b)}mhL^>~syqg}6!L6@MQs*JZLPTd}7mM9-; zQ|!(B`jr1{%6~ZaPsx~NX|n-uFx=a6+@2i}1BSNl=T>!Rh@G_mU>vNA&0CS$7`ZnB zTdS@^XGQ*nQFK9+)y;GV5=okiBZQvR>tppuOa&Hq0JVsN`{H0jY?G_~kxkoD4w)}T zIx|#uWI7Sh5#jbs>a>X8Mi)idOCxbf)Nox?BO9KHyyt-(G$XnPvr>(_J@VE>;Tw_5 zZ9F5&&x`mu(fDUEo#c*QdA69qnmO6^Gt(-U<9^lgm=ZLc+~v3K6D|C^i&&NH|(6z(#~2^&?8< znz**H{HQ(W_Vq1wvVIV+Y~7~x>@bFYAGM4td|yH?cQ zAUkWp0grzVWchqZ_{nZ=Xj?v$95t*eg*~E?Sg9}pMC0FS^1oYkB8a@#IG#^RjF|l;v*D~_a_q^ zh};NKNTawE&A{&u05OqKt0AAU{-hhkpM`U7?!ZJEjkeMCJ_&SZ60kU(f;h4cSDO9V z3dZ{t{LFUNyC}Q4dh||!FIQ(;ugh$0+q&ZDS}l@-HvBSg4_cCwRjB!UGhmNS){Dub zlXX19b{6NlRyeoiEPS&Y*Lg0$l~P$Qj+BHncg9HINUSfYEWUH+?2qi5Uz2S2O16h5 z+kov3wjaGVe|Ia#JTu$uZv0_Lw@L2_icZ$NC-f$vQIb*gPJa8=#>bdV5Z-A+$!Z>QeXST+^0Z&E}lml5?k|yeWO_ zIxfiegobQ?Ia#y`j^}~hBkxK7rK8#)fh?*vOGQC;2*G?YjF~qHjAacf(4G}6`|K7T zujiFY1jy9|K*oreYZz%0g-_rD>vef8|xR?bIze z&26i;_^CbcJYFtl67nO$L_x9TBA^bj(3gv@heYW?u~w0;N_g=-F?^F)ESHJYa(+y< z!u7CqrwEAC+}FWQA_~?)xiCu#nQR7?lsikfXXAj9XNclb?nDZ;K5tf0D<~UI(L>8` zY--fR`BF^VP)^78{EO;{fThCF=x`p)-I5j6^5@W;0mDH2l4=(^9-L6 z&SMC=7f?HuY4owsfcqwhzX)-^aQCkGC|Mcba%~^A2uSP@CNpt=QyU)W8R-VkdZWPkxzgP1tHu@K%+fM*iQ z1hn(td9{D^c58R1_5)PjP5>$g>ErNLb1<)GsF`}My(icz8ABa_`I$cS&fH^@0e=G9 z8ZJDk(k(|;-VSmuhFdmq=h2dBG)bEJd>rhSU<%hNIvG5$VdnnigBx-w+~sL4-uDV0 zc`l$!XCG#{Z0kdCE@qHSN*tR<;(>I%t;0e9%rz0+Uy&j%GGn-f^~%{mgw&^pL37)R z^1h0)#N5J|D1z^|Un1Jd8fNeM0WB&$qg56q9Z4Tl+Q1{;*{0vTf#M16ftZT_za49f@X{ z+Be!DDdalLSye;yNWh}5-XvAKh9%0RKm@z~!+G}!CYovS2JqLig4jFtULo~&6+N1( z-%#WC`j)P;T|zQ6!a4}@K(Z+%fqPMjal{%sXs#46G)iBmC?k+G*cr)S5l@Mkw&85w z!E1eCU0!BOWJlGcDeP7!QD8zcK9W7_!FLDIDHXfnog~b*2X+Ha(Mkvl^jk$P&U!^A zN_fC_5NH0uN)i5A%wH*@U&CSRJW-b?A`Z?By%#Ht28G7q#$32M*GakNW?8s97u}ni zhRlZgVqnT5B`Vikn5;d$fWPW+-V7ASRu-R(`X!6c4;Yv8p-Qrx2{zQU1I?Z1;&IZ{ zvz^8D@kwR()N)se@L~h5*j-SVd5djvTYP$Ac4a_Y30?`siutK|*76}=kIuSGI5*Y9 z%yn(qy}8^;l74L|C%u7gF;%Wwt`W8ZAa3Xz>J^8|n(0Tcxb~+ucXPS85TS%fT>*K+ zQZfBik$*)*uL}KF03N3)cpajAjo0Nuj&=~1{15du`N7z$Qd3*_SMcSa#=B=I_e?Ow z>5@KAh3Bi`AaznHhH!-HO2EdC_4TTFgJPRL+v0xCVI$5~L+o6`u_Z51HJ7T&FIZgE z&@vhtnM1VSaBQU0lw{aPa0$H0k?EE?os;GT3gVnQM$T0z?czfbeIg+F3IdJO zlK4e>BZYkw+8EfrAKf2&LWVw}6k zW$Nt|m&p9(*12+pq)*^+MDerPr0}v7V_cYK4VYUE4~HR<-L5eb^j;0*sW_S)=vxbE}!_DK&IB;BW9Fa zzO;sNWt!kSMLnM?&oJ^p8yeWBzaMANkMtoysd~>4pCEk!UbCT4JWT*a<^#GpATrsb zGA5tSb!6*AE&oFPrK&8;v#u4kd*|jM^S$riWrl+2E^VE<_#ABfdE4G$Ph z@3vqrUSNqvZMy^;HiZaaH?u^7U4f7}Ux%JoxpCN!2%C25859DVZXFjD%B-~7Ht8`N zVauduRdka*nBJmiD7SH%aPGpa@W3*HR3c*)v<@(0IATH`7Opg6zIG&mbH>q!FUHpv z@=WLV9Ls=e;S`6RB>Y7}og^}gM5pt*$uE=Pbp$NZH`32p&>UC|V1f6Mt8DW8C5oD3 z3$@$D(l|uUtt2vr>WoCO3PmeRJojrSEJ5nd`hfR&xkqq>ZrH{CwI~@@#{F!o> z1pl#{w26dMqEm!B9EyjLymmm^7Db7<8L_<^0g8?o0>(9_S#;(Yg5WM{<+ z`hm?E>XqZIG#!K{md4?p_Ha2H;F zkEBYzHp^M5>W}kIfI0g@=@B@W;&aKB#OK2MR0Kn6uae=FvUZ}lUX@m>^xtLt1z9aQ z+#r!mLr;39%DZwq&f%yxRdBXUcW#d@L$Cs$o0&%P*Gu=7Zh0;9w zI@P;J@P*`aZ((mjo6b0XTZ;@8?%wI=|zN?4tCis6%beS%tIITx>> zRq>`1vh~m`ExaXh&ym(shhH;Ib_ntdP6Jx#6ywI!WLbu{$s+u6f>d-x z0SLq+9kD_@YN|#PA&Oq-_-+v%pbpH=i;n6P_4AqlljtFW*Wh_-el)KL(qvFgwvZ`g zySTieZefV-XusaT*USB1Z>xO$sLFRc`F;b=p4}mYyg`OZrOs>^!NbB#s$VSYPiXpu zeBIYC`r;`+L8uh)2ZTfoqHS|S)t^28uOV4N#X_NQf(ctGySxH8Bec;FlO;U`vn%KO zwQN|#xyt``E__w8|4d(_OBTq~FDx)&%P$HiG@Q;eCoPX|1F3}LJS6p%@c0=Hm-R`K zaKbB65&`OFZL%Kk$aInx--KCVr=S*t(NCeyH%R`dhK!9uv8zC3-kM>MwyF}=ZMmVo zUY7g6-`4m2hMLYoM`1u`S7AVuiwiiP&|DUZxhFCkmWy~9L*n?_Y%xx z@5;J&WcaSkCj06gnR-`l^Nuv{%I|SCSa88P;?B;1e4_AqxI0F*Fpn7ZE7y#HjBOHB zTy5rj9e=2bMYF;+_e=9vm>yKUf4&>v;^MM?-lU#3b)+$A%YYP`XO;a%jcFxRBXhaT z1Ri4u;GILnE)`9`sJe(vT*q`dlwK>-4s~c4MrDEBDxA#Q;K}%2G67~SK-Nv*c_?o1 zw#YXYYw97J%#es|9TIK>zMzWE0bMG~_!wNQ8S=Y1Y+1&@p(G0DDD;CoCuw^}dhbe+ zG(j6wt4ZRvPOmoJtwy{lQ?FUu=$owV$u?`dgUq9pNem35ws)L1Cb;EjYfJ8Lxj1Z@ z6_6{$_p0wbSD;9ICi71V|Bs@uNqX-|cN3mEnc5`N@3AD3{(h?QPX^u_T`u%KYO`=3 za`l}=nT!-KnDn2Bhqn>N59GAzsXd|$cs*;pR~{3z9-2PdQDVOIJKX`j84waBFhqR5|Q>x_c5B**LvBcIUR3=mV|lIF<#9 zkSKa>&g)8>R0&Vo|V(A65-{+pzEPs&ZQ@Sbc<_Jd8* zeNWc)Jso|)GxD8!=XsGoTNsKY_T=Vbe0w0+%y2U-c*3~%W7ZbmG{I{|yly=HY7oam z-C5_BnU9q&IVZ88x7Sl-sn34CFi|0i(*f9&qLq*(JX%3rIsga?&de74LOG~+76@mF z5Y7VMS%?1`yDOi8I|;jMLA~?2)YH737>;--xDrt=Xk6K|>x)AafFF13fucJ+Pk2Xq zN5tS*yd&Ks;`2qo(WZfE{=^Tf#GhULs4JczoUE_V-qjMtbg_!xmqa@~Q2tW9E92EF zxX2Y3^BvOUE~Cn%80TIkJv_6H;8Kpon(&yYt)u`a>l)Nz^tMPhrP3tyayMz`b8t#b z7-O{xBDId3#dCafLp&=kYZRUTuINDP+TZPLf5)aClOrL_hxpv~>N;^j;^i3VEZA8O zAf|b*#`7b(A65e%QKJaQ0+O+P5rGD?v?s&#B-tY}_HY?w9~AP=&T@dL#6nky1y)A3 zI18HhHwUJ$^J>LR=Lr-oZ)-orWp=$7Mn7_#JaQefV1^je(weS zH;jgYoEV^cAigYEQBl@6aLc1dZ=m%crhS(B^1Jr}OY6(6l>9$4y*2j=eKGA{1+yK@8kI^xR&5;#oH zgF~%H)hRx(U142+RK3SDL!~ZMUI-eAK$PJB&6zP3A3|S4(lUEH_n1mU_P5K}O1res zF1E?5G%fiN4bFleInVQLh>lnuFh{>>%jxzvJK{e}+7h2QkGx9UnY86FXTjwC&D>_% zbH4M1VGyu>u!#Lln76?t)SYGqEHMM{W)f)24efinCzGe!lgAz)IuwV?dXQX5jbz7} zjGwe}HhY=nVo9F_&f9fi!B$+1sKdpsy;8~z&XAN>n#uX;{it8gN8*O0|F+YI@+e8~ z*&3i*acK5gjqwOf}a2E7(>oXw(v{=Qu-Z==Cc&DlTu;YW&nk;*Z+C#r&FjBq#HJ3|Hgd)L-zWBEXeG1RTAM7PzZb^o_^&o1TD_NFxRI3ZUvK)P- z>tE&SE8YB6ZuUwyb(K362cUIwRVB>})d48(#VJp`mV1u4L3MlekVix#uKCs2K?ackRbJ^=G6z9l(g?KAxL1T5? z#Pb2$9g)Y}Fo|_CaGtc*$&t+VLIyLTy+|2#D7m(BUgFWsYdU;gtJicE3rW4M-II0R z+6d-b_69bBtXLZs_T|d2+{~A5;VZZOEVS0frLKFr8~@7|iLX2agOG>#Oz24!Ozl(L zef8#;-Q1jy(qL0bP@4u?fon|!2-svMgZ0#&Z_BwFDx)_%@@nlK0 z$#%x^p3Wy8Fbb*PQ07e~|EALy$8()SpA4Xp%nW8p zy@ur1K}BMH<*cSnb5?_dVumL+LASGjd2+5_aI=s~QO~ZB3_!a=9A+(oU06~$QlN&Q z?T>Zvs@!Ks_EREb37QuSs&+`~$np`Yzf&qExSlO+-z1j`0 zaoHkozcLdTOw}MtB=9~k0QLpcpR!cR7IuFnC$FA`!FgD6-*X3`l(3f0cJ2uZaNoEd zs~|A&s?eWxk6(W;`;)fLxF_jXih=|_w4ndA& zqABUE_I5s_h@V&=rWeZK5kDil^5P^*6q9}=bSd?KNr+cIAAmF=ae+m=L+=bjzyQN; zBMM+3MkfyCy({j~+za}a98a?@w^H2)FVaVH{$&!7*W0r6H)-CcqQ+&ibh%vWI@>qN z+9WdzH!SsgOXub-zUz7!=im@Ce;0liv0ox+eof0{{~#)FyX8S~?*ZCm%~AMH-OHu9NO~8`@HOtZXTxR+pJ5;f0}~hU3U5d~m(NY^+~n`fMG_*k%6{%LiDGWQ72hr010I6UNz@C| z%Lu5rDK7=e?l{-l@{*PV6$+y^IbBV%!M7&3QMZLYais>F?>O_Zt31?KqfQp&V;ZPf z2IHRU#KiJIEvGR=9v9h`Ojq0x1?c&1SRY&kUX1zEW625S!_kF}AXfvl-LiEvsdP8a=)MKeF^`J43LmSf%$Z5u`QEfH@-LAsZkd7&z9)IJQ& z396w*8}P4k)bt*3*RK)vJ}R^H5-!cE*nMqEwN*=KYpVyZ;3G*MVNfY` zb|v2ARzrt;{udFxAlQ1B>(pgBcnEz2R0komheX$Up*D!%Pr|$)JR({*TM$>}oc9a) z0Qj^1zgbAuiP7Ku4QlXSBxUls_Q>$a24`x0x)w{ddm5w2ghK;!ruI+986K>}4-}*z z6^wxMJ}dp_po@rsu-g!4h%?acr4t`~|1ou;DA)f<1f*Wgsla|3#K$QLnL4Y5{;@pI zm0&E^i+~RY>;2{Pp*W082r#}_rX^`=;&N$)ZQjgIp)%n?fGq@e#0gv?8nF9V0k*MdNzFPNI6Qxmh@WhX0;~H5`W2 zaRZh+oC(ODiNac0+rlb(n4T${3_E!}T44a%Q=sQ3K75?}uGRN>zbH}s+4&T|&W@b> z9C@`=*T{bfVmv`ENb&HIFv1E?xIgUXJIn^bfCplP1Jl@EB<@C(zd zMuw#rmCB4VO~^k9rIdQcmkp6r0Jw=3LQMe*7?qlWJSB>)_qZcLc(faeY_}JKN&K=W zV`)H!60aT!u<3TCURMFN#`=J8Zjw7t8=4EzXWd7l?88x*ATo`VTS3}INl-O3)tmZM zra|>}?O4$aYsC}B`eVt%JX*dab+#b7@X1FPJ*|uDRcC*@mV-eSY87dUaKHYMu1kg13=AF!YjdQXzs}u z^K4+MAm`eMl+7FbiCu;jDkXys{cyV^(7KSR^R?~m<+#g#ex`H=XLTDOm|oqJOTi)6 zrQN1s)=QBU|3Z#_Pp@X1r8G_*P%K5}1fYPqx61uF!+bB<=AEC9AOb<=exl=(;L5%n z(%c22Yd(6;!9ZR=5v{}y+<%K5B-yRMlkNkdypQ5?^{?hEoai4^s%IT+qpuSg8xJ5$ zZe%c=JBq~PELW?gW!#UzsyYq`EPVVlN20)w1mK4s(rX4w;6@X9^qrI2T_ujW#Xj*m zKny=8&u@(Y5s@B{qFNx2>(z{~>r;dyz{2vamkT~+unzm#R6d@z^`~@}>>1V%%@97bZR+D| zaGX=Avt*;zcKlD}myROB3U4 zE4d?62F2JC6WZV~18i0+ik#2yw{|9@V4~1^m37z`18uag3v;v*+*>H#RVUhkAf`jX z!Y?4T#u>a?wk422oV|6FP~0TilI^j{w)Z_@Hi?nR{?^HUGo_2GzjHT<>F;r-!}Gd5 z&&&=f#lTpD1qgN+xmxMpC~>nQ1}yZoN?gYtvERFuxJQkoLadF;hTp(m3i?hZ?ovag z`MrXa?!T}Uk1Mi!wqB;qa^3u?f~V*M>q$2IxF4x#N@uzJC}TA-0)6p}wkUzAayjKE zLe-+Wo7OT|6-x_DP%Rm(3AYO;? zIv=G_jHfOQ?(jBeg{VJYWzSHBGc9xpzcF$9la*Lx-%I)e=s;BIT9vtu6)#G9vQG=~ zf33`2ivBK0@w5E#U~YZ^2K50!Wi(##p7cJI?q?{Doa-ce)_;dVB?y^5?3LFD>zq%u4zMTmh#Sw+1C6~$laYW=;=Oy z6VJEa&`yY?E6%@J2O~a6x1rd~7qU$EY>^}07i}L1LiEJ&;Rq+`{#jQ&1A3*XQ^%u` zpN#j`U1UR{{Yv>S6Q$fj?5j$-VN_z9B9ce^n^L|)-q1H}uVdJ5%SF!>2^heCU+nOK z06FlZ4@3$^%XxY}5CQqV=w$EU4}^JNO#49a-QEv``@T5h15tcm6h5%R$RwYdM9p@& z^UYFkk$}>9mX6KR-y%8RCE^3b``mUpP8LfYQZhzwSNC|+@j28W!R!jf=T#VNjE;z)u+2+sjE)2)w9AP`nT(!OrR%t4{3OkC`Zqzlubdh zgS;R%`qnl3T|GjsgCHd1b5liJCVHyM%+QAXShgj@`GmFpm1G?k4Q>Wy$ESq(a}E2|xq z+b5$^CtJ#HJMG6hJ6N?xJ)*;hab!@=4AnBWQP&bN7cbdiwZzazfo=U|1%zc&ZbeU& zY_n`@9F`xFuTdHQ`$cH0di-!_iO7GYf|I0PEX$+xJ6e9G^`~0?QR}C*Jkw|ZcZ-ZZ z$;b^_uh;Tr?fzBEyR^Pj%ZrV^$dI~4wL=5&IuoJ@X5>O`zJ~7={p(Efx+?w`PN z);#&|7XrL`T#Fru4z?r;$3oJ5Pvnu73(vke?Z+$<{z>8|@FP&vG({oePSvI;fEti4 z4TnqKv{8^F>u*v1W)$O+93N(-JA`$@$Ny__pGV6vR^c$}P5wNF-ua2sKA5<7ABC{I ziK}!&QCBz7oiK^_W{{GE?yTa7(wo03QkO(HA8@L2L}Rp^9l4i8ZapwbpWGSp?Wc1oGcOd@dKofiXrfsp#-dCS&{Pl zptw_{c^oKmZmuhIe@yxCY6!#^4`}POJOP}0o@G>V+~)GY`NFWZJx>%GG+`%5MpTCs zH(+~Wxu~t)?J0eC+s8t>s_($1mD|5hBzNACY;RP~xdy_dkW6lX_(fUD==!j}jhI%} zM*$dO^5VG4bEFp;7Nx@~&#{Hf&F_KswQilcqU7eNGj8NOS>CSyITnEzahzlILKYHM z{mO$(myh!hfJ&3QH|^D@;5O`2EEEluNwcXsd7{dnOL>Gwr~SvtEw@z~UOI1c<9H^x zaf-;0%o332#O?k;RPXnB(;{uGIcfNZOehbu;CaL!y@T;na`VF)`}9kS3IIqw3U-DJ znJJ3nc|BX+$v}`c)_Q35ep~xm9p4%E+tZMUy=8(oIe9Ni_Oy3cAE24+*7J^70ZzFs zQTCKu=RD@-0k&yskX@w0i?J(HSf&N* zmI<;Rk1eT>#O4&^d|~<>S>1We{W=vo?Y|L2%R`oi&Ih=dW3+D^0`n-UPg;jrp1PZ=X zFs$WlxgK6|xpj^>wBrE#E(@NZ;@Vk~xOT)UeU`939(E3>z7MOuuju<=LG?gTeV<|9 z|bhp#KMiNhl*|2}*Ls~?ke{^ir2)K*dn%Mt?gkr7ph~Gb z&D3yoA6`@4rBHsm$2$xCCcSe!Nw>SC4^R|#>J_R0Y2WpxvSb77fg9^pDNk1V6eS;) z`VlFgk@{IFmnl0V{w_7e6)#bi>G5u<4<(gC-e`Z^I7)vYro0w)k*}98hn<;2KQJecVy*-fpMsZ=D}Yt!Fr6lYh-|n{b!6XBSRXi=x=|~RZckJdwLb-ih( z7}Ee*OW}zFi!1Tt)EsGx9yI~Nxd?C08t|iNvH#ziSHCugfR9MGgSHqm|#k8X598`I;N-~&IxTpAVpmUFi@r@;}04m7f z2uPIZE)?g5Y6s^ri=H9g$HHl!&ZpI}1?$PJ;z+E=IM4R~{Pq5?CJrtV$`NfnCs*DU zB!5)Y>B_d`EK(bk^K%LY_$9Yfw?e=WkQG2_USik<*thMzB^zkaMY|tnre@Ni4bS0L zLu#w()lA9#}zVKxaOsGW#`C6sO*CXV=lp7 zV$)IBhmIo^Wg-LVMI{H2}H72=&PPQ#@ci${t^0*QS>bQub zbZEWPq?#BsG5`P>iYLchC8KIRcyjGJikPatS-RQx&r;Fsx=IOQYfIXDG8+M&A*WysZ zvd+s48Dpqw%|xUK#-tD`hMURXWXz4Ghp~-DPkMb`hGP?6mDcWu=r)Nkz07dI5#K?C;BzrZgZh7+v{#+(_e^r zj#Oji)@p1G1ddv?Q!)+W1X=@_Hi{OdhmiM3eBSZMP#nVIVADeHs%FXE)GQ(fss}TJ z&xJ%kx{WbwsPcIavtBgxek!56^%O}8ZG^3CSe7| zsblF!FA-_B$&n(^G4hwzCKa9Ta>dD-Os|bv9Ftxk-bj3Ct1!OYI^?8%%uvj*UNk^h z){BOp4JWIG=*BSSrb*=G@2HZTJ%5XsM@udg@rjn|F+VIOnI{}hd0kFo5pxlkC$Fwp zAJw%LQp3ftOh5kBb?f5#qH|`L|EuTiDa#i136pk-tEV${QmY_k|_2AVixB$X=TadTEKzj zlPCWHyV}EX6fpo&_$&cGR-m^zHyu|q(&t~Pc<35u&%z9MCvSXiTRFaN+kZ;u{2%3S z+|$Nx&OXRHW3Swqd&ytz1#K1JvI8=eRs?vLwwd&9L;o$pG(wjjN&%AVg`Qct z#cdSl1IW%jgD}n^X6p<`?)rYr3R@9%lb;ilY)#NThwh?x7Q48-f*Q=}xNZ#FIWd0^ z*je=NH|<>O+%_pM>mMGi9~&(m9qm40x54icV%nvXFi%J_759&~7B*Evo*gZo8I6-n zN9#t5+xw0_GFm*$Q9#ju9PPFc$*GLmS1J2p5r->;;#gi=Z_7}`8Mn`ipal8$41NS& zOh9=6k%VL)w^&oI);YgO!A3Hz_5}8AeCH(^%gQw#(~j+?WNhy;%GpAdrMl!emEx>& zVEz5eW!*CC?q4An1J{h4T^p{KF1BMTX7!5=&jm>})ue!DAUR-?g5}Q|eF6hPQ zseNo)bP+`J;J#7U`YxOxfg&ny@9g)(f?!bz2ohws=e2^%K|fbGG#bOj&Ky_iU~SuCYyQcm1(b zbz;2K!DfFTI8u!iN6mrJLGHlfL51L&P(5#o&qd~T9o?(kJ*s#gx*!vX(Qk$yYY@vj zRDw~i5F8l=w}(+MRt;Y4Wb=SvOe)y73v5VtFxGl_@?mv&_lIW%F90*1{579kP*CTi z1Y@9W0B$lj%L^HVroU5+mv=!EA!`;KHddfO)s3|UPnQUoM%czosBn^q6V&)_i)+Ey zdq&+zZd8v<9i22{MmzZEky>zG6$w84UrtZEtLz>uqk(_8tbbabpu?X4<&cEY?Pc?= za>wSfd8n*!-4?wUOIPM=CyGf?Fbnps7%jesH5=0uH5LDTco#mJ+hc9-V)RtA??P}< z6;0M3N(i*_FI4#XMFH~9KaMpObheMU5Sc%>C%Bnbs}PJ02TwBciL=?55xX!WD#6%6 z!R5tbn=88_@%|XNk@c{)GR$I@7jmrXr5VpFwr5WgbqKXRnaqg#Ck{A5Uq+`QXy8E= zp91GaB_hnAUBC`y#xPj7^xQ2;?dwRVRDe8^EiiZjH5I}@bL+~ac7?z7l$>3V)Xw*3 zg#Ojh=}GN0fA$YK`$t^+JMsv;=iw-$7vkEV{MiL^_EcQ^l|Q>u&VC%%9`R?l$k}~y z?K}SLUOBrpu6@Iw{YcKPifdo>XEQp2C%FKr3}#e=Kk`!s*BkZYsTi@!`FZu@<@Mvu z^)jIWqrld1eDb`Qlvo55csAeWwMEB_t4N8`zUPv`WaC*lb( zw-MZpP(Yd<69j-P8wBwL*1jNkA3T9R85ayO!e*f8`R<*eSQCgT-w-sw=}#zvko~e= zn%}&sRFBt7Rg+S^Y$_MU?o08|hHWLfB6e49E78@0vsy0^%70&?L`vjKL1?`qr8pDg zTxpLD_2X6bTZ!E2y>D#3?rJdx4!KG95c2QwB0>#*!#R67)Il>obj^~Aoxp*~QR033xG zUASc+29s@tUCRyD0%owXcvdI8%l75sxmLgsE~@Y$&G>+G$+Hf;TM`PN@dPoU>v@+s&*2R7=_ z6IOjo74L>wfvVi4B7U(CaF@rm@3V37FGNetOF(~dO>r#=JrNxLz+#5=>aJC_U<#=0 zl#@v9miXybcRGR*xG+!5w{jsTbZkGpAR}kE2V|V>m35BxDYe)4m0MFhOdskFYd_Q+ zW)3YJRy#E2Ja?EqbQ?#vM{XeoM2f_V>_R-o)jOemu%KtC?u98#l3AoUs)f;_kPsbm zbFAPq?Kw0(tV(9;(9%}+aOvdW4n#|I8geFJ)(l>%*DDysHF`hyN!O1ytdIwim6pHM z6fQJC<231kTrb?!zv2sDnVb9Oj(RWkJ~kD%?`S{2lO9roQC>vb5aYXzy7XXmAFdVo zR}W8LKV1LyaPyDD)!z?K*BzmbKO#Eui14Mu*+oFCe?u8U#PR>-j=@=nP!d{~^EoUf zB$+&6F(&{=-hw7b~@o9n+t}A>S_|3(X10^!E~_ zj)M7RQE5l3V&H#kz{QIG)q-+c=S6uFzV$UkEx7Swqo5-Rz^C)ws!xG2lFAKKmJAYP z)iBllxcwq5z|C$t!EUGbjHNTHvvaf5Y(a4Mj%9PR7(_>&sgDrO_9<1NuOoUAdrNv- z)7x16x-(Ug{+B2?bl@4PWhfg2>fa55U}tLN{R(rvwBewh0uFA! zd9C7JtrRyZbBWS%<&PEj+lu-f;L%M#DaW`HUaoSNDO6}ORbJoy|zy{s5k}LP5%YbQTzc2A4%j0FNYHl_do6%d)HpIyKdQ-gF zfPB!3vgZN+FwuN7+ z9{g=yQtlVZVPEv$$~}q@C-(#kB2^Hb^ua+e*Ul4#^i(`ICP)BmjA@iejz#m+tV)@b za0V-;yk}l;6tlg%il(tp^Er%)7Y~eZ4CYbft%7V*pJWq7StSI;$cbL<`W+^Ew~1lmmDatM->hY59)Be5Ie`itrYO5v%hn%GL zaC@dv7(YT4nkuE%8v48`Zn0bHh)e{IxBQ}O-L(aGT|qBFO?7Qkcyp6%F``zmCGe7W zW3t<;qzMd04qTn0^e*JVpT5E37(iC@{hn1_1_XWY6A!_utS- zuoE!DWJMAobFjIy$Y#16{IY)Z-L;S=SL3bzySBI|IOJS*S0n&|$^j{_Tf*jCdt4LO z@SW^}%&POV*|_Kv>+Y`LklDcvT{62cu*(+14%x#OnR;9)V#R!0{kDJMBwiHe35US}$6fLrXGRWK5!cyWsA&QU%hkaHi0xfk0T_l%v)auR!cycBt`zOk>?M7?WHcB)Ab1kfy6l0v6sLgS z3Q`=jM+512)6rMH^P~Eaqu9$q(Fq*t_6G^Odx5KCMLyHoJTTZ&eN<~YyRs1 zic~l459K$nK;3W^E&vF&5COP3ZdVXK_Dc73Y5ETHu43G+bA!noR*8LWH^#ygah4uY zQ+RMTzVun{oxzFFNom{6V}E=pRi90gR`0uXXmBRClfP^C4~%u2pu=H#R%2x0{wag8 zneOHqR2A~Nvxvc*!grD;_Y3nxGVAe~?H625X87a*^n?UNxmX|&Lzct(P<^j7Xz%oT>6(PVx?%G9 zqC{AFtrGr1V)N$ErY6(fXxUZ)S_ZMuwC8Sv;u8RDPFoDnkuV_Z5t@VaaGW%~{02)7 z+hVN;lo$bHFNgcnJMzQ`D=ZK6!ND3ex!0F!Fxb$n?#fXV6&B7*^+{>HD6bHt7(UG& zEHX_XihW*iA+pSWRv$st)~dndke8i|3t{O?8it6-DnLzrF6ud(K{5em!Np7TO07ErJY9hZZV{67bCThm}DEa{U{qIOPhmr%pGb&ADg}u2eg}u_S z8@~T6nr(Q#6drPiX~E?aGY%$Oe?&K+R-c_6d?&8{lAJULJG8QCSBIsCCWj>)dk&4K zx@l^vndba?pFi(#ZNz&?=HUBrT)xYc=C^3;RyqI7~58aI?V_$ zUGeoU_1Em?D_!yOt=qoWy;kL&`W#k~@{JCkS=ve!1)BG%+P z;n{?ZngPC+1c5;(533XDE`DJS1G5&fbS!NPuEQKV6A#M(TC+}5Ie=pQ_uvt=VCkF{ zIK>z>mzY=VS~~cI{BE5a&a3ii<8Eq>4Spvccn+%!{5NrVxx)Y|kvs-`JgmR{38tFK zW@Uc}OQl{^2?p*chfojwMupEHJx9360`Y|Zg)C{0a?ot4vE%MLb@d4&dF~=4dfysUJ%~0 z5|$CP(uI8oQA;%{PFrd;(tkbr$cJ?eYw(jI>DTb(Us)mLB?XX{eIO8 zAwH=;EyJ^7-%Gs`a}irU(R#kQnnV%9=egb9iKJQPJ%LfGT2pDG^NzUw19H;*@V{#7Uk=49aibnH_DL9h_g!OlsBA<4 zjrs2rj5sXxzWlEffM5CyTV@esBDQ69tSevdBr>k-5}pq+o*`hSyU#~iph+QUvf&f| z``v-@{fCNsqIah~$uYpeAB?;Go~5YC_!&IV!aQ!B4x5)FM!kWM<51jf1^}z+t_&Gs zXxJ*oN)s#1l_u7BS*L%mvvsavV7$0snsaaWO*+y-W47XW3DH{Nwf|!g7lSI(&>{IdfAL$;+Zqe?C z?V0SM_Uzu{1Ho%y|^;m1W1aaA$+d*fte}Qz+>RFP)WIZP` zu4<)eabu*tq{Kq&`-&|p*9ZpX`6sMJQIH+xxu))@&e%+nDy=?E*c-KaAOBrhl~PC) zXLh&N-Q%|ys}y!?**)3LNF^`7i{(AVe5HGjfneiU<<*(tKW5s;X0|>)6QjXz58DTa z)encm9}laChwJ7mXOF>1J~FfAr!xszd)Ex+k2hf%R*#?)rAC{FF|6)T5Bob8jFq1m zF8*#<{WiP#>~Pp!nZQ)arqyLEt%5E7X^=#gVfDlf7z31$t#FD^14toE2D2=Wkx&ar z3j6{nMNC=psATfZ<+ft0YU^$t@G~lNZwU685WKJgXdK3@-#)Q#jlr*yVeo=_#{5a- z?ZG~OGQsb5!$SZ8H%kM~3&1(DS~O$CBIl52JC2yPMemTd>v{RUa9B)I!r>x2(|DuW&c4NWZ?^+`3!?3bCNCYMY)|9zV5Q zKeRmeqvh)1<^Qa)DcktjB~qcprXe9JY;t!`=`N9Z|7Dl_8@q%MSQbIiyXx>u40Y=D zG+MEDSo{(mQ%uwOj>_%=KlrW?WtMP4z$cgpuL^WzcmpW{e`Ff1-ogs72Ml=c@5VyP zszoDWlf22bL#!ypw}qcfws@uOv|>VC`k||FHvnf6U^+*^8Tl z6IbydB`!R?P+gy&ee#NWtAAV?9bwZfo}EpYIeB*VetyThPrrY*5PWYH&gFq-pclM-Ld07Pv!?U!lS)6{cxjqJ+8|jRIRZocLvg;(YTL zK}f~BE@n#P2uvU~dp|fdb|-=U6YH-oF5W?|FHjbAo1T8HRp*IwQZ9(GrhP?;No_Xy z@IqnoEz_%X2Nss=GFGy9H-=-;37a(9B2f6 zT3s5dW1B96mD)}Vx1VU?I`mA9JEq@{8G2!y&J%a^xX6k;oop2JyA=^s@$<@^3!Nmh zvn8|7J8UZ9(>5^wd0g`8_xUg&r$Y?c_OmB#%_#J5g+liR7gISvx?ffA3!WqZ9nMv3 zG%au>E(K&7?>$iA3!TulX087cMQ5UKEP%%V!v#mUHF8Zs{l#<3w2dg6#@Fkcvxny;XVzz3igkJY>{j+?XNPk0#8r3EbE* zxS1Ow72K-K>dC~&qRiTwha_Ev=U8JMbQ^|Gi>c~z-{IgJWU7YADUF^$U=f04F4iavrV znvI2iF+wgvK)6yw{gS!xm-_v4@0u6PLtR0Oako9Q2c^?5R<}miGuqyDcy4umuiTt` zdu}wZ`0U!>KY&EpeW-uJaNgy)t8#PmM+N5=F#^zKwqS|w=@hofk*N26U~ zGfFuLZt|i01eH(nrPWQUGPit`Cpn{;s%G`#;oxkH6N3l5Plxymbaqs+rNkidGF81) z)k5`Ug}05)ApXQ7;1aJk+u6Q5(|~^+di*XFtId!LIDVRSlUiM8B(BZXf850GW-)L2 zAfdTmQ7It)ra1A~_>*%A`onFXT*NY-_s~+K#R7LGaA!Vua-W>L_0B>5PS3HGPwwdN z?6CFDN}e^vL7rJq$nne^LS^I&6+Y|qht1(DfGI7kRl(D6Q^huHZSO{qVz)p~Bowj{U8cioP7;9VoR?QovKzmDA28-gxGr;;2rC>hU(6i|5zgjIBa`H%3M zChrRbNJYIs3$8M(;Tt5AIhXTOUn1FDMC_F4e3L&n`c#jXnIWtirWq#ljPWYjV(*a z2G;s=bLZB*!6Rtmg5c+=-dzu1_S(so>nl2uZGzp9;sSDzTBBZM9?wLcO{_5k;|KdO zkwHgvW>~gDxCnxRPdj8|6eAFmpTNEOIl^L^xlG4AW+72-NgYF>yH>y?p-0EfX>G@< zZp#?}JZkx>BVy*tj(of6806^%?Kxb@=CsFLsqk5+`%LeOj`?nOG~dlPLn_14U#~v- zIk@B<8N|zpsQHQ-U~KIhT;N(OO}Rw35iAGeA!6_nzvA!K{DT-n&E2TOg;gm4JS^Z5 zOK~ypkO+)|H+ci|W;xQS0R*l4`gt?{QnnL1cvUNJnNch;q(}T<=es^Z_AkyZObgD# zv$^Xf2mGQRbR)lWx}OdndDao0obG+xxu3b{=fJPO<2gsKJnPgGuJ)(|djFY1e<1eS z67l_NY!wjqvaI9y29Jowj)gVP;En*%o~;yN&tOqt{rW1wz8%4(%^*q!f!Kb?M6Wwg z?aV@<*0g|v`D6WMF{+f+5&@t_DG9(;BCt{I6kG+LE(;0DHXNyMus287i(By~yD`4gwgoFcR|+;K-PY)d z*i*+9c0wSMRq=emA`>sOsw@2?vVV!xD^c^GqwvKj{&Q4#F-rd&t#~mi{5g79>6ThD zxiBTg&dW^bj6imjV`9z$C1tnp5ecQQ;5K`*1`PxlA7)`^PB% zhiIp?T4+g9*7La9hCF17IRg-XEbHq&oWE(3Dt}I6UUs4)X5s=jQTXU0vZsZaW~No*5>U6@Z$KT2n&yYsCOzW;C`|K75#>YjVfTOdG{sc5%kBC>JI&c zY~@~1N&Sd`+@BZ!L|d-h1w_lUba=LQXX)bEy5Iw=+OuF;_3&BxJ`TmR5WB6<1Aw5y zP0D;*_OzwSBPoc1;f<-gH7$N4E!>d0>r;DMs&10VMLliL=2|XN#pksCqt5>US2QF7 zERdpU6h;7nCv*@cT`Qhkm!-vvQaZZ>vVw#Xqp~nt>0|Q;CVn6M8mhB|96O176 zHId-A;0+=Z{2T>M$gGn34)h$wXEO0db_iCUqxOy7@hoO=1iFnr228cM9fAfDqzDL#-SaQJ7O0mAOK!@%XZN{FFhBlzfwlf z*-vJe##T<67;z53Iwe80p-RMOeOuk#YppuwINE-_YRL{24zq%l&#PclrSb=BUbG$9 zw4g=Bo7T!kvs`OnFr(}9)+O`x@%7l>Rr$3mvz7+J0#AB-t@>D&agoF1;7MIMOUJ&0 zhkOUSv-QUVVw7yI#6PU)pH|ob6M7bo%i8BE?tzNCr_xkuYU+(jqDuULot>@c^Kj&v zCod8qy37Z95z*{BgWdBWSLB1;7hzA6*?t5)jKXrT`$+HxSCB|GIMo5q81B9dnP`zb zJi{s0jIeS`P>+SMax2~$3?Z;YP**OBxk{apvuY1vsAYT|JRC7r}bB8<@b*4Vx;hG`ry*DbAkiYNxocKrdvx z>_X%fy zK}~bO6-_V9Fw@Iq%Bhn~>w2U5 zqV5E^;$}U&KV7HvsSZ@uzuIz_y2-Xa7-bM{2;x6)@?TZ?Ym|Nxj1ha2O-@qjE@o{A zSYG$FghR6sclQ%*o>bwlEE2H`togik=io$J&~2xg;+aN?Ht%0}C_ZG<%~tdMfCa~8 zYfcI5$E%Xl4OV~EI?PNoJNn|KMqTo+^Kn@TlKX9nEPfO87(wSf@c6cLzg0InR2Jo% z(TM3AiR`CK#CiN0Gq9*93uDRtKCdUTp%Gm}ep9sPQO#GI^cs_Hac*rmP3NvP<`JE) z4b2u{&T+zAhc>cM!$C=pR~?DY3Bzh!BN*+SxOny59u)|7gY`TsYlj{P7cRgTz9;OQ z)?>S2Y6($5hJioV^GC>*|x*Jf_npL-PdD63XjijFjRjDbh%+{cZe~X1WT^ zi@Gyvy)SY_ArzIG`hC>;$4I^2vj6W})bUZ})TneqTsk{mw#BAjbNb`fo2ZAxraD96 zZ=k!X&$;w@Bpqd~&X9!3be1s!AQp~SsZR?-Y>Su0#rwp-B7W*x@~u+`Y!8$2z{J6P{3z#0pZVkPN7(MM1q z3D%jLR4OzTYX~s~9=1HzQfyW&4cTRPJNmxtL#ojpQg!Ms2aE#BiN39=s^m~gp}jp# zYGP@E8it*jT$xsydbXN@>|x~n@D%Bon>p8-8R<+j=ABz-o~XDqw8Mlsx2bt{u0n}F zjbmwnop1Q0JH@IM zZo{$FvR@sT7EH`cSbB(jNg}an@CrAiQ!st31VSWN_X}?tyq=4p@uEV@{=?uE)_=Le zBiupF#&6<>RU{)w`_pN#v6`iY4ZzWY3}I@p#r7X|_>_#NxXvAX%kV??sTywp3E5v` z!^K_l7W6HNlFAWr9b9Q6B}dLl!7!J1$-lqnONM0 zQnMf%bZ=pP#OvV_^uED0z5BwFz^lQCq889?rF5r1uZYmIAteOusg;`MzPl*zR&av$&8LMh|*>E0l^oVddoc|Hj*`GLelELU=O9=Bp>5nCoLr{@+^jD zNcgW)!3!X~Y;D>4uR1xPi1N?w=uQ7@@9?4fzkNpk&Y&BxsHEh-@_+eHvxxd6>U*!u zh*5Sk1PnSe&lh@l?HzPk(RbAI*}Y4;@%PFsSzTs3O&YnfR=wBH3MTW}{#v`t=1<6+ z$gS6y_~KJ_PM$C3bEww=BBv3T?X6cRBp))b?6ERYa_cQ=zo&w8^L#P0L-x^G+INAS zRZklqE3+rJKJE<8lXO0V(y=ndbL&f;!3A3{_8lv8Jh#5DGuYrS4#^}xRwj9F{W!0} zx8|a}IN0O?S8lv&P4+5DyH*`5(>=#@?+h-Ml-gg`$NKrsbt-r1w(C?QtH)X@vT@sW ziky{sErq^(+jUBv6?-k^zH-}j3Z9jGEk(a-+jYvG6@D$Hzh>KYDQCT)Qqt?TyCX%- z`eCgU_J-|lNoniFmGXXVyIWG=dWogTH*a@K%3LqBl=_zKZb`B0<(7iqy4@`)dA;aT z_S?3*H!2`CxMTafz6y;xNF_FHf7jQdQ4Oib-E#MP7!!FC%2a(k z&!@nI7E*IO>rrVU1nBvKpMsXS5KM1~4F59eJrQ8qZ%-VA#(^&6(?EqJYoHRvqEqsa z=eQEQRu;Mi*~Dx_2N%PQNxs5eW&GJKxOxfrZ)^7+6+;-#sb|E*iAP9-Ny#peTL;2GkzMR3O*bbv6_21X| z@0%oX0F9{A2nj%a~lH-VjoL zL6a%TJcqcX6M5;j{|>fL{6pWREhQCpTR>4}d|xByw;XZ)qhwKEFVh}Br(X25^%qJ8 zVeo7(%^N)LzhC5A&R(w{*Y#!Rr`C^Wb9BLZ{`(^TeU<;d&wpRj@7d`;YlJ4gM!bmL z%gXcru3z-e@e!EeG7|Z)l>Pt5|1Y)!UCH z@MnFh#-^k}b20)W-x)Up5y3cu=d#JobjYrAq5jXT$?nT{ok3)t!HvnVly4z|*)*y@ z>r0zG&(kolnC1e9!BZUl8T?n{T;2#B^fhSwl4rBLw!hLSQR7bINHhJq5UdtrU^=#M zsH~CxbyHDa8VRaKgL$45TFqO1Bg#FY@<@?6D%KBSxqVgfbNBC&S|Dqb-zsaAECo{2 zMoJ9fB@rK~yyPfV&i=Dz@b`E}qcO4uYV7RMg;EBobmN#^k*01mMWf*x=i5?b9n$E| zMpI>yhQ>WPZoA`u$ri#>@a@yc`uXPn#(Nv7-h6lK;379C?S;us2WqXhFKs4Qw_V$Ac=|Taw#QiH*Pq_j z5>jvJ>3^AXn3YEENcGJCfE zjIU#(_S-!rYo$d7;4U^#hzMO)^6QOkxeY^1VAUJh{HtR_0Fxcx+GYRT$!|{ouX1c$ z%Ql9X4h0n$8oOrpXl11T01EdZV);&Fe+RknVNzD6MDPh@;J(;2FMQW} zb`K2}fNtTEoZ-L7l#vIvUAbdxN>e( zu1H>T_d2ZDw!i1up)X~M#2koDaS8e=Xk?NHgGt(229Hb!zvHc6^AyID3 zH+gtsHnv8Ci$$Qy|Mt&?!L9x&>9MR?AFOXXB&Gb<8~Z}AnpjV>$shTuN#W%#&4Er( zTsNSRS$a>B{5_F;5FJd|ZANQs{F7V?ek1Y>|JLnGJ3eEvrx^2sH>%M&8uhciHa;OTT`)F6K&{dZ3Iv9@pAAyK?q+)m7zc8 zKI&~?2y3lsdH~})tOs!#ZnewA_5)&I7Won3A5}a$JQ6&O)+G`Xm2!sZ(8Vu{`Al}z zkDr<}3?i84fj7LDf=>v>YQf4+RK9Gvn%On5RYW&C zAhlUa_L$8yw}7$VQfuxd+mkEhlPdc3O6{~tuVjNW;Les37sM?v%cO>xsRlhFo)}kRUtN8-tG82vRM4WmszS}`w+u~nK<`lFo%bXew zKA@^UkOa~}lj$HL8Z9o5W5$zZH6{UrXApO9P`ZWSZ=%-j_w5^wG>e$)y#Z*E_0%)4 zqz)#MnisdClqU7mrrr{%x~4TxoeA#Rqfmq5V-d<{$-kh+B=R_)wclA3y#>*zCU79T(sM^c;p152pPvY^z=6qS0}?&e=I zIw&nDkMZU*FeRwi5x7yz(c$b)i(r>vo-ukdCRG@9>swV|`A`P2p2QLizoR|%;w-9J z#g3VkxC!~*5i@!oID-fH_$GOZ`?J@;Uj_lNDwT?%mZnkl>I|o*FN$U<++0L z@TpheWM6@PeMshtnPLl><+U@JqZx_`uX15 zo~MSp=q6RSFJ9qGSFhQASuP73xx71jYU=iB7D<|ESv6$1FX3jt*xfamzN})$a)l~g zOO^Q4tAu$gZF~Us9lnh#VBCyK8`Bcw*NaWwV1RjgmfA-sLC$-%!i<&t^t^%T{5|{dZo&$G_$$NO|QoKUCPZQO}C~H1s$&@6R4v#B0>*Wvl2Ika8>^ z|I{f8!(5&^UY_cgr^ftKAIz$=SyLZo#7W?3@Tu45S3Yhc?hzRMHyQubNy-2akO8-i zf4crID3J`xA1E~OyyG5u2iGe0DF2TC$VxWmQ!l4JmT-ywi4*E|IT|AyUzK71z=6I? z#;4V@=K&U39?<%~vbujbtGbNG?W(?FYkIu#0?Wt01z#(GUut^C-J&X12E*+HR^Hv6>$9KH@t(ItQTSBAT9-` z3YJ)Ce;Vpvgy}EY6KxkP<`-f4_RxHjhwSE1e?N>5w;LUx(mr0yCRhYCDBB9~NLc() znEMq0X#CqxNA@Rn0b5^>y(fxEB4S|E7fr^Zm6$FlUfP53=m3yh4Bkv@+V-Y6UebhX zD0~#4PkIBWHvy1>I5OWf3k_@!C)YrtY@5}RD39z6lii0$yb-gW~rlO}!^b=u;E;9B@Yzd1EguHpa zDS}b#?pQhS4Fl{FM`H&eX3F-}Lo#F$&g8o}2>VcvzPYX3Th6Uo9$ai?5UBTM4b(B4 zFwp<9fe0P_?;0rH84<*OZhw4SB4Tl8W8e}+i5UZ*QG|x$TE!C|0j094=Pl*<=W+oc z24vl=ta5|YM~$xb-+6o~ump}!4}->9xmrcnA-=^959Ty&GliN!q);4}pV?b4$!YbH zblPKlL9&OX*;enfik#QX!i<+ZTPan-2mCI7Ou%?~+E$)W(Q9ZTEpAEnOG=+h95a~F zOB4VLaQs)uP~pzC3hQQ$H~F1mVrK~qgUrOU>Tf@UKnA`UggyweIv)D}^g3A*O9R=+ zSQfmDqXg!1g;NMPRc9BbWy1hNU)FHn^J{#w^p5mr%_1&OL@Xw6r#=|GVJoky=yjzC z-c1PabBGO-x5dvJeSwj9Gsh&a+x%a#U9Y+RAUFmjF%A`bX;wnx^9l#qmN50eQphK0 zpoLYM?cZ6GuE5qv30TOU!RfB}86BM}J~8PP*sR&#+5B%=g=(3ji`IK%JdAbV-t5q6 zh@yR;AIH1}s1Xc$;d~@-FQ6Z79Vu_idv3776~73E^47dl(<&kUWSWg}*#ud8B7sFC{D_Qv4C> zKNdXdDnHW^@N~ySM<y=ENPC431@-#BL*u|M5w9#NfjSvQnF_5s$6U z;4hFlzi537n;5!l7Jvki9*Z!}Y~$xRuy@jKHk)iAmCe+U90sy%HAso1{NHH)3iNZ>z9;$8CL@xo~MaX1Ov=g z`@5#FnV3<=44Dl?+{BqMYMQSn5v^@T{3R1#1nef8RAxpCg=d-eP@DsonD|nx;LK&F zbh+90LeqSaDPL#`7nv5^!M@9mPb68mM*vyCQ?@@I987y$H!z<)#W*)PXL955VllDA-lQ+ zRNv`(uKsXSxtV7>2pRWHLYtWNASs~JV_EYZ$=pfeNi3Xf`~T&Ky|@Q>!S+(5YUa#Q}~@xHj)wX)c%XhH1fc@M+Z+x0;T)eHFnStNd>6Xl~!7tFyD*Q|Ru-YH)m@ zssE-rPe00>(BtCgr^dzouq(i1T|i{yQv^@!o$;>c9H$Ew;E8zmp^`RdWJ| zC*y5jGJ!GQmFNIm@fir<2c?dpojp-l{h?K)SrhWj&X;c{;l41~D}!@l+_vH!&UbAW z0J;QVN|ZP317)tWmf_DM+npNNX2TW`6`ATqeJCLR!M<2S=gmr={U&vZx)aKPkNbHT zS@<7G{n%eW4%d%i{rGs}iCOgvhrA_0BZI~Rjbr2b3Fa*iG!ne^*m&UX#v9LhYZ;e4 z#NHRX<)dtYxy%lORZVH#4oOaIj+CC9_!Uz`z*rzuP#zc?ln4mJ=FC?Z~IB2e>cG z`?il2|Lg6}<=#Y}hvaG1@sePrf3c93L8KnLGLI~n8B!SHAn4o05XGuNz%M5S*U)## zS6%UI6gkNcH<$YicD}jLMI1vS{`}3jXN~@ej(@5Pzi{qp7ysJjUl7*e1!I5hk{2+W zdFhKUp&>y28mY-kQmWtsctjn{| zCu7#LlG`V>eoREXztlX(Eu!E(EXN0Rdz8D{h8NlNAsuhVhTrUqClPCWE{>m3@$;&D zNtk~PNg&9n)@~$3p5SX+OWZqQRxKWT_?uXXiT61Ao~^`2>-Va^jmj6lt!{5 zxE}Ub^d_O_W^3F#IzaCh&cFisa`jGN$9g^$ zf4YVp7>{NDJvoVGw@3Ubw^qdmx_0~NNjTluIpoeiKuaYJ!=r#m5FXnAbw?dn2 zi~}ZkP=>fk9BahD_21bw{I2kPXVZo>4TSy2u-51VUxr3V%FL1`rNp@=0`Nd`t zfFjH(HaJGuaw0k=$y|pa_LQC7vUqn#OzEbTX_G5ONtouyrB7i(jyyO=Y69D&RWQnX zl-tGaYIhmjHHVW3pJqVf7f$lzajiP;IB4Q}Mf8Z_pg2G%;mg@!E5PZlQ_)w*g~66f zvD&Znxpus}I0b%I=cd;(G~G~NNPH8a#Y+I$-3`hPYt#k*FAzhKA~WIqZcuBzWj7e# zQ^mrYBmTkd0XUrfbW=qZsmz(JebMxwZ>APkBz`}ZpvdhHj zzeD#!ZVKuszl9ebtiGWvHDP)e6nDchMjVrv75Fw*8iC&z@sO5iFp;@qh& zRu^KdUki#qRV?24dgGuTnsN7DVbbeMP71;8kj>l#y{{fqKNDM6nBU55%g=eCJ&mfujuef)W@z%fMC!@h>gJU%AUvy5$5uf1t1C6qd2{hO1qVI zd1%x9?K`YX*s6U)=Whf5z3DsJJ*#(s^Y!Jr9m^`|%a7TOpqz+vSeN|~?bXHdF$Cwl zhApN=Cu$82dhpQw&>WB@C^jKC=QJJ4Om59FZ}o>{q@F=<@F1nyi>0ZiZ>cC zWd8;%N;oCIqSy_~S7^)qz~!DY>ZdAvRpnm;l&;MV;@Y^QCE(Yj;tx#zL1Qj)(Zvq# zSI3vRWV8F^lGPbkd979h2w@b+6G3pGU98`QE!ctT6U?|}x}%9yQ)uHq+5mV6q*tJm zvXOj(P$NK1MoAY$;{l2;a*|qL)7L`#YDj}iS7OHv44WgAO5R^aHz1)@5YeP;kCKoZ z=~@%rYs@`iaxbSrBGTj(4pk5XNS7yFD(Ui#bg54#aU>8FNfIXK=+FoahWcRwiXMGr zAW+%DAI_%92V`4R7Tr+4WoMl-!rQagdVb&~%XCj9NTs|rfokYE@>-utUb=m%X_UX7 z3R_1Wr9uaebp?HH+hrZnkM^RVyz^46r?YiVSR6}&w^>A6mkIRVG@ox$~SN&-tuEU zmmbN*mp9ZCNvK)hb_Z{3u@lQ7CNrG6J;GxKvNX3R(I<tA+egY|NrQ=OB~qREN>!QRwwD~efF;@{U)fnqzNt;dQQhExG&mdWlXX5*>S&3-55%Z*#|&+1q4{zNI}y zN`Ra5wl?+Bov0z*A@p1LpsW6{(W3iiE&8@biypkK>>}cU=rme1_APp*iO-NQe~C;) z*?ahAjhzf1e~*TcSgs7W6j)v9gcn2eXX;F9lchHJsoK21jN(NghB%kL+GxyWVY0E& zK>jq9Q}UYPVEzBi2bDedguJYCiI;`9&$i!k`g_iP*XfPUUgq?Z4%k2aV`m?6`aEa9 z2w;P=*E@Z>3r}c1MtUOR!{|Cj&H;UEz|FBqK zDDv{o?TXMSO5?b-NUGGFsf}ARjd8ypE2C4O)TkEU5!iQRgLZbdho9<|YX~ft`*fw< zAdzVRhp~rA0$bdu_qa@8Amue92rrQMYZjylkoY7xR{< zKNjpycv8n4!3vAxB@auc>)8g> zS+Asi4C}|?`tg9bT;Ko82=2nOUGSkUWI^nLU?@`L5&-5$Y>wzDfKI~IH~2LO}{i(|xN$%S$ELZ0nNywyXfA3(k@$RF>tzgFTEx~rLm z!2`@qlYY*6K4Lxcu+Iq}aj{P7$IFNYG8Tk;=WCITOMIAYc!B2fNknYo{I0mH_vKzw z`Ga%22KTCQ>}AZ(ZQzC7yr$+N57xl ze#DIh_H$Yjx+{kmViU{D-f-Lv4$%TBgFp(4qa>G>@@fH)o_z(7p>{Ac6U+yEK;%D} zEy8`T*Gc^t){mq0<7e@(o%!Kk`a86rCw z!Wa{I4|JsLJR(w&+|;f7x}z~)?uw_ z3O);n;Ck8B7<9i9@~{@Xh+gq!KA!avyana;awyOC3_e-3E$m=usw&UO>>kS$7}FV> zXg;O}8@Pse4kV^Rk-b*I_*uDD{mLHa6>z7xV3VrkC0>bMX;RmY9H!Tm`zoNt;F;z+ z+)USNRz%B_KIEQ#Q7bR$usJXp5Ow6i+#-TPBV|D(9CkOevb<~IP(0JcbP7;GHu{N) zi<6=$sJ}qX!w#y|EVpA(9~kkI%!ouYFr|WuMjcXZT=qa=^lx6s#+dm{9C#qSZOKj0 zE#*9NmyYmSZ#Tlg|GlN)bjCjV5^qZ)AZ`-y#4=G}Cj*RZTF7P{uR|FiRZ2dCqQ_^_LMFc2O|U>+L8XXNemFR+ zxWul(9?XUl>O$Z4Y{97Ua;{*v!WWBDW+kznEl`~rdurVmRC?3^NS{v6AV0Jx=YapC zng{yrs7vW2H*|#kXrlXI6DbG`?}@A&h{X^hvQ-!h*DMAq5(}ZfYij98LaeV zS1AxCqK#2n_;7SMJO|o0;W?!HhNy?Q^Hn-Q_NhRv&r_Y%dbQnO#J)ks`wW%`xR1$5 z8hE@DBghIp;Cu9wTl;b{XnK7_UT5jhvuqncp5df0+n|PeG21s`ikUzoc2A-z!lZT) zI_3QW=poDEWongbY7bf-!oX8kiok3!gon`JIvlLP-Kv!e03Op8Wj^RMZ8(df$iSF{ zAnr&yivdcsV4x<2!SZH|K8Jo7x^9tT3*({-9!gslLz_)QQ@o1EG2U^ z#w5X=sqJZuOmtYRjHq*>KVejlBo9qSz6nt(c7bUr29luh6mT#_heg4!FEp%Tgf3ZTf2Q@G`V$cehS+`H2S+4F2DqMRPBYN24+kw6w1LMD z;G*gLPGi=&MLj{waPT8^8WI*1LLx(v8H)Hyy0>qArb`Wddu87_1SD)N@Lrq~6mtizA5SmaQ%sM|O8?0!g{21=C zKVV*Uvl`(@U=AS6bEaJByDlq4hVPggX$jhDyk7AcND6dUK!ivOW|Hy7C+62G`VS-@ zC4Hc*YzCdExj+?;)3z1DR7R(OK$+nYGtRwCepDL`#7z$twa)C)leedB_%p? zy*Yxitn~rjCI@X75mAIDa_Qdwn5G|101o4PMR1!zB1bbMVOfu{u!+^6Y?0ujexT7y zs2@sfg^BrMzMLyO0rVJAqILQd!2a{zochl?d0DHM1cIo^$$Ja>K z!Ltbt^$i8U6vMeJ;btVP%#B!+UBqyqWt`fZ4p&(2eN?u15T6yb0!Kd# zqE>N-{8Vd+G~QU`MP$U>oS3b%5{-8lVJWmw@kv2m$pu7=r9{6e`nGdL09c84wRQQlkI z5{v_kxzLCAuo4hzX|^W1Vg`-t2=x`rXL8N-xs1P`dC?qnH8rbrKskz8LQ$L+rv{gz z<`#J=lrJ82N2!mMJ`o?Cegf>9VmQbsm+b#XHuR_4`Gl6@S`%b!fK>{dHb>MatQtIN zI>HYQ!S2l>icsnrTNs@-s|0m5@tku;)ry8PH0Ni-q*hYYp2Vf_3`rqPcG0`KE0w)d znYP-^yjMM^>Z@|x9v5?+aoN{5)TgsI5VG)}j4LkHV6QRBCX4|52wa@OIz+$|nv>bt zXgeWWXS>=8wc_5qzLM_=&M}n=(u-$Q?KeP|z-=msB>oIVuTjfiy_F)5g;VQ`?is?3 z@!D}{dro9$7>qDeU<@!u>Bt~5ez)-<^dQ%AK>Ii_a$RW; zI9w=mDIuH<0mwF}O0Dw%RZaA=TJ9jXSw#i~e zE%&PkRU6-5SNU61?j{xPguTMe%6;6p}_xKOB7gwx4Bc{t)wA7wrO z=Hq|31MDn!Y;rri1YuUY!vWFKc->?ewpN=lsd-zSr(LS1L5E8EL;<8mwbO-WR!_^A z+thrUrE)ssYfptaCKNSKpuH{#P?6tle9$x@WEb==3B%-)J=ij_6o8zR6sW#uDI|t? zHRu@&h_~#Q(K^>}S@E$C^dITfD@RuuiH4BMJw5R_b3 z1ng8x3G$O05e6!b228Iaz%(mkpPgiO0GPf~?MT`o+vn@_8r?QCo=u_O3!+oe{Z&QJ zGi6#p@&-^kK2=9M)UdkqoE#jj=NVS&&k#pJHfVmQ0m*8w6N(DZ&Hba zY%Mu>q(T<^ukTRm+Z*(J5qJ@U(MnR#E77pl+1N!icilRrTfdEQ3l9s48(+1Uny;4i zG7fq^8a!$SgxA*nuFi8D=y?t#E`x9(zFE6@jj+uNgp{jqTHc;*S_YAB5Uwur8y8GMF%2aiGnuhfRWX54fa>bc zrt2pTpy7^8{P%nLo)zThQt^EetFkY9Hmc};ZC?s=uVCcMPDZy}YJlK%tfSPT4X{>% zP$E}4D@y*s(vw}yL0D-0ZX^lP5Mbteq076Wbl7uqwPI@qBQ3DTa&XWZcjp^=lJHbem{LB5TGv0tKr&|W?qTGS%h7E`jDk0vtuq2boj2X&9o~`|As6#u17m z0R`ag*kx zC@(WVbIlto-`h&*Z>)$}atKtd|ogMO8Guxb~3DljyIMXsE-04)|&o1{ON?(^2P3dNBua5~1 z7H>oVTxNv5=R%ESWwD#+F48eC<5q0=8M^CZayDGLD%O0TE)tl3oi4sAF8)Iq5L2LsSvep_quxWC%PASKcm>UN@p;iR>UCHERF`Q~eDuAsi z=I!F1kYko1eIlru$T*zY7vmEF>O&R`DM}H5HNn(bB2vlSAqLT@>~&n_64!mHBWljK zOg2q6q9uU%2-` zFk8_;D{ND$7@fe$6l=7pE5LR(A#Q6LsYKBTKGTObz_wWnqS^X#J;kA0=TaIToZoGX92F3aL^f0EWjUF!e9!^X%YA@+K z=(<1d|4%&(%wxTW6ElMzet+;hhW55}jirOXqq7da&Q1^K>12JFoCR|1bl#Qb-4|`~ zO51vcjV`k4LR;`%dyckekWM#$Q9Al$ZHW}NjwnD5A-2{pEBgoKUQ~JCwUz5kbgdz- zmvrqnZ0j|auD#m2jn zmahGVaZkG1g<*Y#xeWIc5$iA22NLCb0OzcJ;Hj@r`VgQbr|De^e$6SFZ~NXY)qD4F zI(M(FolBe2xk;}1e=_zSa8{Jp|NlJCl>5xBbL-yi6_#CKS=gnkR23Bz#DW#nSYiWB zGv63RRP2hqCSr}TL2OYI#n?+MNsJ{LHMUstwQDSi{@!P1E=_;G{~uoW&fS@3o?cG* zoO80paB%bS;Px}Po!>FI^z7Qf^&5w+9b9pOEL;66>I3^_8Qc%lmhh~udrq52v^mFi zud~e@bC&Jir_I;Ipi!@B`%Rs@*>-NR!3iz|XXKglwYguX@YHL!*qy$I)(12ar_+5p z^{_6F8&PMs!F8ON@Xt)LwT)-9O=egojy}l_PPI2rx~dry33i?aYF&Web#(B*PBIv{ zN>Jal=0ZET)*k!1SG*%JFt9}=Y5UYwGl8LlHf2-#p#ycaSp8i&Bf(j3uFnz)?b!+) z8N#+U`zpg#w?PvKDKf}#B{_=H$vSKTj4wbhlX3+vowYML!a`<(MxPUk-KiIe*)|0< z3z>PPptyf!pYo>F0A@a@A6qEqe~Qke@sMzQ_hS^9xJyxj9W8^X-i@!o>gHPM-^u<{ zfvi1Q47c!UrxsgJ5gVzUn=JAm@s2y`4LA3uYrg@sF8i{|zN%6mxc+0VK3-Q()h?n6 zC`9&6@x&*xGkRX6!w6^Lxt?%G|JBuBsjjb8;=d|+DlrdBjdP=o`vBFgCqwogr%*@k z6d{PV#7F*~^wjkz(NJA_0w5|NEBOea#6mD9GN}Ug#S~KMi>VdPRXYChl!|{0mn(DkQ0DGT=#j(Lo3}(XfEIHgshgRz0drP}*}WP4 z(G<+FBH@HGY5|Ab?tI`D)RtUN6Ok0L>S?j)&-g+rzjG;t-QQ>;KqbmUs{7PUZpb1B%QWs- z0ll0UQ|@g7+0SAeQtsfG-@8;Q77faiy55B7Z!>MCHG}oTdF)=g@xXAU9Tu&$CC{kE zOueOQ-{?|*^q`gQWe~8*9W%l(2dK`baC7tx}y^9;om`b2h=5lA%&;uu%3z;D|pj5_3Wul50zD8YKG9(N>i>;C^jnGaKNG5wDURWs%R1_AmH3@1*SAFi15dVBtjIyU zZo`g%d}g+@r52y|i|kHsm?WZ3njp5`9q^;|tWY27PYxxPo-Mp-#U$XDf!z}hMu8Sp zcnCib1onJuZsTpCZqdCs7UXjeHMR!FPk3Z&FY0OZ?NXdtdcNO!qs1C56K~Y!Y zENlmS4?*rEGb3uh#IMuazVjabkP>hB{+m9*yR`bkci+QXDPxHismLA*z#}m(zUJQd zK}o;o6C1cW-Z9U%qg`^AzFT3i)9i-3V~H?_haq2T^avkdMHNGe956e8-m`T51HvJk z`-89@KMlV#e2=x#d&aF0W_B8tUu0cNBgVwlMoOlfyL{(fsrDVdf2UuRYCkS_!YR03 zwG;PI-PFB)b28T)&%F~g1RT8DZGl)osf z>yj_^;&2hY5MMq1+}BEfAt<@M=rNHX2xClONrf?&`~hT)7944PzE@z?>Xo*CmH`Z-#yy>Z^BvXt8ZXa z{h&hYFY_~JMS}*EqbPbtM0-)L6E^q@QsPV&z}iej?5i`!8s{uuo$vb>`07l*be@cF z&-bFmdWlw(u}*`enjAqk7HZHW2kANb0;RtXW7nJ^Wx?rkS`!y3^A>W*pVR)W_|&7a zOz2%5KRkKCnKF~gOzIf~B$~}9o8C)18AWhR&X?>GW_6I)(kmGJl-DQ(;Fmk5vNgHABzT2k4!7fC{NEMX~~x`B`@~qUZ~h_biKL zH>${ajPBO4)838<*O)Sn__}xf4#yv%sGFcw?NrfjSlW*itnY>T&xOXnfLt5x$16us*xd z*IQczI8ED!Th=BH0^Un(Dl0E7+N9QmOK?tZ4@XD5Q}osrQ7fiVNZ5+QXiE6>CPIE# z%b-ECyQ0$)$p^r+=ps3`iHn^kx;s0URN<~DPJF^X6em7mA5M(k7-Jm?-o4fOG21w= z_U}dacUc+%yu&A~{6Vyp)1yxhBEh7avhYS*IjD*x{d^fNOCM!9M@6akkexv)IwA7* zQLrb9mldg&1YD_ws1I|VBkY1@O+i?Ln3+zIjtQUqfLthZGd-f_24x7YI)>sBCq@Ol zp<*;Zvt0E`_`LYWZM7danfT7(@%6{?_0a#1Ybt);eJO{Vb4$@W4v~7jNfXb{(OqCD zeo`>LM+Jkn3S=tSBz-s@_39zNm+!$eA`WKXPU_Jx97}>9x<`y& z5-dqCXz0{$q zEN$@FfE$N){ygG zTY{pE@1HbhVl~LL>bAlpZ=(44m1-q-&=aw?fC)4OZ7k;+@PS^#FLnQgSeK~tK)UogbqHyZ2wtp_D?6lj;q6HU$Zp8%lh~ksJ&%H=gjK zV`HH{N>5W0oyqzh%~J1nM#$08KyzO5#JH;;0sJE2hA`w+&Z9OG*}y)CNL$-P`-b>G zitLhyTK8gYFZMtw8|aT54gE|lbO+7M3hq>KI2M6T_x(o3W(CgM;~zJI4eGI+X-frFZ0ZCo;ucZmgDz1|8F<@xoiL1&3uW3$VEAL zoaP%%fllV$R+)Do42r4JKUC^fTG;TKN@22yUgH&TSwPJ`mcL(DdVIFr6ZP~B$i{Wq zvc@r(A8S2Sjb`sW2sj_l>kwSuhB#{)r_>;)?^GwAI?%#Q9nh12)xq!j9DoS0Q;3~X zl`wK=CWH1j=LU8T7_==)nkEOFtUrNo+Xr(67qb#6$ffi&J^LRbo+S!<=5_<9x}c!D zYx8LjcRwUp`}oLw(gHh?>HVne7@=(JCrBZ)qMZ^n$_s4iV8`J4_n`C2YUfb+aF1D) zTLTrTo-&P38W!5!I{l;6f6~^|iRP{Qx2!sS5O|FQGOlL=qn+N$Y;Sb;R_b?N7aJ-< z1LSgz_lQGU0!tYrGmOwtLd5JCGT}4yRBfJB&U31YzmR805j?AQ)H9j(qS%#bUxymv zh`UwlE>*l+ZJJ31<^dwV*nVa0GU#|h`G}ad($i!WJg!&d# zcVw-H{W=F;P$=`6aC9S!8X=MUQ?!YgpogCxZjWo$?j9(m@%(ZjW2OWSzx<>AAL4u<;D)2G1rQs4;o`n@-iM-`H*PtAeg?xF|vfzwe^?M9K0X3m- z<4m6nY266N)Cilq6N^;^#asoEWwy|n??A}nmby^40Kma3L`!ynxQzoKDR9cvEFUys;@Sc8{MXk##~FW*=^}+&b1X=T>!MXj#9hZ(bYO$k!7db z)zwKn!X&3G(`)X3gqw#3DhN&+TkB3>`L2twRypl%kM*}y;rV3p#iagkGTqUbHBTko zCyo0ITuM?8B98?80+pj)OR8mDfkVG&Qn^s;?BRoMnEr7@<;`+{u;s-KjL2Nhg5!`Y z<>^kMkh%#h!If@L^biZGfYc$a3u)%uPxVnyH$SiSJu>3ia6=j0Wd*xh!CWhdDB94j z7301k2pbZt3vtqu!v5zIn9jP#mAfc$sPp~g!Tt)BB7PX=O5q7KpK*qwn50`JW1h@_KC-G{Mfu&CQzxe4W+Q~csi%EJScvXHBh)7s;4%)COWQcwjqfE+O z^z)Ex>RFt!oCmOg)r~*O>*9|Gb>jQE0};8|JucLkv}Q}BOIxy)a^7$5?25?}_ZyKZ zOlH&HB+Tmrb!4pDyWWm}`0=&v8-NDR2!ebUvyGW96i?agKU8Ks=!|kOGB-M#&$Qqs zxS$(8RqdbQ8Y_RROs3VU>k625AkMd`?5&8F61pBmH771@CN7NEi>*5%w!B+#{VohH z1aSi(SY`gD$}g*tuW$;N8UGxM-%ej6U zzKHu3{@nzQLg^+5V? zUH_G;o+z;?y!tbA^%C7P8unRa&3B86=DirjayU)_F^p*jrQVk!fykEs2=yvgR7Sdo z_}X68osY@^7mrM)sXv}Vo#r-eH^y>)fH-Rx>q~nmE`l6rn(8qEGsQd#4`Spc!+;@D zsLPzk88$)!st$E3dRH|adv^AcNW?mI?=Z^_$r2^Po8*TTK4*(?w)mZ>;anS_>8$k*<{Ed3Kx1>_=L$wgX5tWLBJuh%#!g_f znR!dw|I~%((O6ah47sG*78MUaH)k>9(vz`#MJ^mgVYXi|HzUmWe2wgeyzvVlu0Tbf!8oex|X#NuG#gz4oNLJ2f=pXKO(1KZxZy zyW|TByn-0=6r9JIXbqT4xK6vBb`FQ3XkcmokI;c62n7scC2O!~1pc1DqVf8~*z0P3 zBO2jH#G)}=f_=3m_?|35&bopgr}trh5uhVBp_Tr+B!}LZarK)9Ly0(!H@>1%O59TH zf4@kjWZXK)ubodbSZqLYVcv{SLH`eab^0;zvSzK9y4< z)>ODjdPz`eE;!Vd>^7+(ex@Os?m@w;k2|JBXRK7@yBGO}J%Zlv5IxPte^EG(Rsx(9 z?gEOv9AEc|uOs7Yi(I=bXWO7qD7BwyTg#E$CT-%5;*CR%D1azJp=4EOJ^FHcjVS(~(#>+sTF&NSwZG9s zf@cXMp$#j%Obv)Tv9KNBJ^|~MfG5qMFBcRu5zF_a2Ew*KbC7P>WB*e0Eb8KOW{lHbbKv+17O_z+r~eCuQ!+e0o*%??+ik6`)Q)TgN36X z`39lmb>lKK7@2J=jXEHz!BQLXFx%x^yuRrftcUR~PkLqXh4I@{pERrjgR1UH^~Be= zvTHD*L<6&9c)>&1(3ppD?^g== ztkFHm5>_Fj)8;H9f`b=_b%Fnf22Z-6(!i_*##DamG~DUao!N_eN)oIKw_oYCaMpO^9ELP zBeeU9WB$%B94$TPn7{HXkJ~B7JTAyS#@xNfF?aF11T@vX(J>%_Pzqxnsr#IS8LQnD zjycUiL4uc}I%E?=oE-ofzD?P6EUzKjecd+y;IFQiZ1aNcdb6Lg&0p3%eZn@6$x|`C zdDu=q0L|Rs%)Zk$AcdTKl*3In9ZMQ~#%ZGe{@QjcDS#G!ODdOvx%I)E3Yd!c2nmx0 zbC0^-xBWwr82$@baa=0F>Mt#pxEFq*_v&nf=UVpcqhjpw7eNQMO*EnmNsW zso)dc6$%GgfuSX-Bq?rj!=LD|XdD3Vood$XN8#=wB1wviP1h

    rWL52tdyY?F7!BAuPY&X=tuv1XExmC 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%0A%$`RJ0f!&!h3`3VtqL{4$W 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

    _&UoAF-Z|^*>UFDW61cn-Ccg|uJ(Vr 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

    Ws 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 z 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

    xvGvFN~EOBq<|qqFUd^q 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%0Drr`e{t>L<@9z0aOMAYh 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

  • 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 l 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